Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/fourtyone11/origin-hugo-theme.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMan <rawww@DESKTOP-N753HBN.localdomain>2020-02-05 15:47:09 +0300
committerMan <rawww@DESKTOP-N753HBN.localdomain>2020-02-05 15:47:09 +0300
commit32abafa21fbd1f94fc34cdff0a292729a33c4b61 (patch)
tree795f49833677b1bb813c0e24256573a66b1cf313
parent5d526501aba7b338a6ff6ac64c21b3bf1d38db30 (diff)
Removed node_module folder
l---------assets/node_modules/.bin/autoprefixer1
l---------assets/node_modules/.bin/browserslist1
l---------assets/node_modules/.bin/cssesc1
l---------assets/node_modules/.bin/gonzales1
l---------assets/node_modules/.bin/jsesc1
l---------assets/node_modules/.bin/json51
l---------assets/node_modules/.bin/mkdirp1
l---------assets/node_modules/.bin/parser1
l---------assets/node_modules/.bin/rimraf1
l---------assets/node_modules/.bin/sass1
l---------assets/node_modules/.bin/semver1
l---------assets/node_modules/.bin/specificity1
l---------assets/node_modules/.bin/stylelint1
l---------assets/node_modules/.bin/which1
-rw-r--r--assets/node_modules/.yarn-integrity343
-rw-r--r--assets/node_modules/@babel/code-frame/LICENSE22
-rw-r--r--assets/node_modules/@babel/code-frame/README.md19
-rw-r--r--assets/node_modules/@babel/code-frame/lib/index.js167
-rw-r--r--assets/node_modules/@babel/code-frame/package.json21
-rw-r--r--assets/node_modules/@babel/core/LICENSE22
-rw-r--r--assets/node_modules/@babel/core/README.md19
-rw-r--r--assets/node_modules/@babel/core/lib/config/caching.js324
-rw-r--r--assets/node_modules/@babel/core/lib/config/config-chain.js439
-rw-r--r--assets/node_modules/@babel/core/lib/config/config-descriptors.js211
-rw-r--r--assets/node_modules/@babel/core/lib/config/files/configuration.js314
-rw-r--r--assets/node_modules/@babel/core/lib/config/files/import.js10
-rw-r--r--assets/node_modules/@babel/core/lib/config/files/index-browser.js63
-rw-r--r--assets/node_modules/@babel/core/lib/config/files/index.js73
-rw-r--r--assets/node_modules/@babel/core/lib/config/files/module-types.js86
-rw-r--r--assets/node_modules/@babel/core/lib/config/files/package.js76
-rw-r--r--assets/node_modules/@babel/core/lib/config/files/plugins.js169
-rw-r--r--assets/node_modules/@babel/core/lib/config/files/types.js0
-rw-r--r--assets/node_modules/@babel/core/lib/config/files/utils.js49
-rw-r--r--assets/node_modules/@babel/core/lib/config/full.js317
-rw-r--r--assets/node_modules/@babel/core/lib/config/helpers/config-api.js86
-rw-r--r--assets/node_modules/@babel/core/lib/config/helpers/environment.js10
-rw-r--r--assets/node_modules/@babel/core/lib/config/index.js55
-rw-r--r--assets/node_modules/@babel/core/lib/config/item.js66
-rw-r--r--assets/node_modules/@babel/core/lib/config/partial.js152
-rw-r--r--assets/node_modules/@babel/core/lib/config/pattern-to-regex.js52
-rw-r--r--assets/node_modules/@babel/core/lib/config/plugin.js22
-rw-r--r--assets/node_modules/@babel/core/lib/config/util.js35
-rw-r--r--assets/node_modules/@babel/core/lib/config/validation/option-assertions.js268
-rw-r--r--assets/node_modules/@babel/core/lib/config/validation/options.js196
-rw-r--r--assets/node_modules/@babel/core/lib/config/validation/plugins.js68
-rw-r--r--assets/node_modules/@babel/core/lib/config/validation/removed.js66
-rw-r--r--assets/node_modules/@babel/core/lib/gensync-utils/async.js89
-rw-r--r--assets/node_modules/@babel/core/lib/gensync-utils/fs.js48
-rw-r--r--assets/node_modules/@babel/core/lib/gensync-utils/resolve.js35
-rw-r--r--assets/node_modules/@babel/core/lib/index.js266
-rw-r--r--assets/node_modules/@babel/core/lib/parse.js50
-rw-r--r--assets/node_modules/@babel/core/lib/parser/index.js97
-rw-r--r--assets/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js239
-rw-r--r--assets/node_modules/@babel/core/lib/tools/build-external-helpers.js145
-rw-r--r--assets/node_modules/@babel/core/lib/transform-ast.js48
-rw-r--r--assets/node_modules/@babel/core/lib/transform-file-browser.js26
-rw-r--r--assets/node_modules/@babel/core/lib/transform-file.js54
-rw-r--r--assets/node_modules/@babel/core/lib/transform.js44
-rw-r--r--assets/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js68
-rw-r--r--assets/node_modules/@babel/core/lib/transformation/file/file.js272
-rw-r--r--assets/node_modules/@babel/core/lib/transformation/file/generate.js89
-rw-r--r--assets/node_modules/@babel/core/lib/transformation/file/merge-map.js247
-rw-r--r--assets/node_modules/@babel/core/lib/transformation/index.js126
-rw-r--r--assets/node_modules/@babel/core/lib/transformation/normalize-file.js173
-rw-r--r--assets/node_modules/@babel/core/lib/transformation/normalize-opts.js65
-rw-r--r--assets/node_modules/@babel/core/lib/transformation/plugin-pass.js48
l---------assets/node_modules/@babel/core/node_modules/.bin/json51
l---------assets/node_modules/@babel/core/node_modules/.bin/parser1
l---------assets/node_modules/@babel/core/node_modules/.bin/semver1
-rw-r--r--assets/node_modules/@babel/core/package.json62
-rw-r--r--assets/node_modules/@babel/generator/LICENSE22
-rw-r--r--assets/node_modules/@babel/generator/README.md19
-rw-r--r--assets/node_modules/@babel/generator/lib/buffer.js244
-rw-r--r--assets/node_modules/@babel/generator/lib/generators/base.js97
-rw-r--r--assets/node_modules/@babel/generator/lib/generators/classes.js151
-rw-r--r--assets/node_modules/@babel/generator/lib/generators/expressions.js292
-rw-r--r--assets/node_modules/@babel/generator/lib/generators/flow.js743
-rw-r--r--assets/node_modules/@babel/generator/lib/generators/index.js137
-rw-r--r--assets/node_modules/@babel/generator/lib/generators/jsx.js145
-rw-r--r--assets/node_modules/@babel/generator/lib/generators/methods.js161
-rw-r--r--assets/node_modules/@babel/generator/lib/generators/modules.js208
-rw-r--r--assets/node_modules/@babel/generator/lib/generators/statements.js313
-rw-r--r--assets/node_modules/@babel/generator/lib/generators/template-literals.js33
-rw-r--r--assets/node_modules/@babel/generator/lib/generators/types.js184
-rw-r--r--assets/node_modules/@babel/generator/lib/generators/typescript.js758
-rw-r--r--assets/node_modules/@babel/generator/lib/index.js92
-rw-r--r--assets/node_modules/@babel/generator/lib/node/index.js112
-rw-r--r--assets/node_modules/@babel/generator/lib/node/parentheses.js248
-rw-r--r--assets/node_modules/@babel/generator/lib/node/whitespace.js186
-rw-r--r--assets/node_modules/@babel/generator/lib/printer.js479
-rw-r--r--assets/node_modules/@babel/generator/lib/source-map.js73
l---------assets/node_modules/@babel/generator/node_modules/.bin/jsesc1
-rw-r--r--assets/node_modules/@babel/generator/package.json27
-rw-r--r--assets/node_modules/@babel/helper-function-name/LICENSE22
-rw-r--r--assets/node_modules/@babel/helper-function-name/README.md19
-rw-r--r--assets/node_modules/@babel/helper-function-name/lib/index.js176
-rw-r--r--assets/node_modules/@babel/helper-function-name/package.json17
-rw-r--r--assets/node_modules/@babel/helper-get-function-arity/LICENSE22
-rw-r--r--assets/node_modules/@babel/helper-get-function-arity/README.md19
-rw-r--r--assets/node_modules/@babel/helper-get-function-arity/lib/index.js26
-rw-r--r--assets/node_modules/@babel/helper-get-function-arity/package.json15
-rw-r--r--assets/node_modules/@babel/helper-split-export-declaration/LICENSE22
-rw-r--r--assets/node_modules/@babel/helper-split-export-declaration/README.md19
-rw-r--r--assets/node_modules/@babel/helper-split-export-declaration/lib/index.js62
-rw-r--r--assets/node_modules/@babel/helper-split-export-declaration/package.json15
-rw-r--r--assets/node_modules/@babel/helpers/LICENSE22
-rw-r--r--assets/node_modules/@babel/helpers/README.md19
-rw-r--r--assets/node_modules/@babel/helpers/lib/helpers.js1916
-rw-r--r--assets/node_modules/@babel/helpers/lib/index.js276
-rw-r--r--assets/node_modules/@babel/helpers/package.json22
-rw-r--r--assets/node_modules/@babel/highlight/LICENSE22
-rw-r--r--assets/node_modules/@babel/highlight/README.md19
-rw-r--r--assets/node_modules/@babel/highlight/lib/index.js107
-rw-r--r--assets/node_modules/@babel/highlight/package.json22
-rw-r--r--assets/node_modules/@babel/parser/CHANGELOG.md1073
-rw-r--r--assets/node_modules/@babel/parser/LICENSE19
-rw-r--r--assets/node_modules/@babel/parser/README.md19
-rwxr-xr-xassets/node_modules/@babel/parser/bin/babel-parser.js15
-rw-r--r--assets/node_modules/@babel/parser/lib/index.js12321
-rw-r--r--assets/node_modules/@babel/parser/lib/index.js.map1
-rwxr-xr-xassets/node_modules/@babel/parser/lib/options.js35
-rw-r--r--assets/node_modules/@babel/parser/lib/parser/base.js24
-rw-r--r--assets/node_modules/@babel/parser/lib/parser/comments.js198
-rw-r--r--assets/node_modules/@babel/parser/lib/parser/expression.js1693
-rw-r--r--assets/node_modules/@babel/parser/lib/parser/index.js68
-rw-r--r--assets/node_modules/@babel/parser/lib/parser/location.js49
-rw-r--r--assets/node_modules/@babel/parser/lib/parser/lval.js361
-rw-r--r--assets/node_modules/@babel/parser/lib/parser/node.js89
-rw-r--r--assets/node_modules/@babel/parser/lib/parser/statement.js1527
-rw-r--r--assets/node_modules/@babel/parser/lib/parser/util.js246
-rw-r--r--assets/node_modules/@babel/parser/lib/plugin-utils.js91
-rw-r--r--assets/node_modules/@babel/parser/lib/plugins/estree.js269
-rw-r--r--assets/node_modules/@babel/parser/lib/plugins/flow.js2689
-rw-r--r--assets/node_modules/@babel/parser/lib/plugins/jsx/index.js516
-rw-r--r--assets/node_modules/@babel/parser/lib/plugins/jsx/xhtml.js263
-rw-r--r--assets/node_modules/@babel/parser/lib/plugins/placeholders.js204
-rw-r--r--assets/node_modules/@babel/parser/lib/plugins/typescript/index.js2076
-rw-r--r--assets/node_modules/@babel/parser/lib/plugins/typescript/scope.js94
-rw-r--r--assets/node_modules/@babel/parser/lib/plugins/v8intrinsic.js43
-rw-r--r--assets/node_modules/@babel/parser/lib/tokenizer/context.js102
-rw-r--r--assets/node_modules/@babel/parser/lib/tokenizer/index.js1228
-rw-r--r--assets/node_modules/@babel/parser/lib/tokenizer/state.js98
-rw-r--r--assets/node_modules/@babel/parser/lib/tokenizer/types.js267
-rw-r--r--assets/node_modules/@babel/parser/lib/types.js0
-rw-r--r--assets/node_modules/@babel/parser/lib/util/class-scope.js101
-rw-r--r--assets/node_modules/@babel/parser/lib/util/identifier.js99
-rw-r--r--assets/node_modules/@babel/parser/lib/util/location.js43
-rw-r--r--assets/node_modules/@babel/parser/lib/util/scope.js183
-rw-r--r--assets/node_modules/@babel/parser/lib/util/scopeflags.js100
-rw-r--r--assets/node_modules/@babel/parser/lib/util/whitespace.js58
-rw-r--r--assets/node_modules/@babel/parser/package.json40
-rw-r--r--assets/node_modules/@babel/parser/typings/babel-parser.d.ts146
-rw-r--r--assets/node_modules/@babel/runtime/LICENSE22
-rw-r--r--assets/node_modules/@babel/runtime/README.md19
-rw-r--r--assets/node_modules/@babel/runtime/helpers/AsyncGenerator.js100
-rw-r--r--assets/node_modules/@babel/runtime/helpers/AwaitValue.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js30
-rw-r--r--assets/node_modules/@babel/runtime/helpers/arrayWithHoles.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js11
-rw-r--r--assets/node_modules/@babel/runtime/helpers/assertThisInitialized.js9
-rw-r--r--assets/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js58
-rw-r--r--assets/node_modules/@babel/runtime/helpers/asyncIterator.js19
-rw-r--r--assets/node_modules/@babel/runtime/helpers/asyncToGenerator.js37
-rw-r--r--assets/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js7
-rw-r--r--assets/node_modules/@babel/runtime/helpers/classCallCheck.js7
-rw-r--r--assets/node_modules/@babel/runtime/helpers/classNameTDZError.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js28
-rw-r--r--assets/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js15
-rw-r--r--assets/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js9
-rw-r--r--assets/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js7
-rw-r--r--assets/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js21
-rw-r--r--assets/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js9
-rw-r--r--assets/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js13
-rw-r--r--assets/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js19
-rw-r--r--assets/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js9
-rw-r--r--assets/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/construct.js33
-rw-r--r--assets/node_modules/@babel/runtime/helpers/createClass.js17
-rw-r--r--assets/node_modules/@babel/runtime/helpers/decorate.js400
-rw-r--r--assets/node_modules/@babel/runtime/helpers/defaults.js16
-rw-r--r--assets/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js24
-rw-r--r--assets/node_modules/@babel/runtime/helpers/defineProperty.js16
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js97
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/AwaitValue.js3
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js28
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js3
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js9
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js7
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js56
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/asyncIterator.js17
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js35
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js4
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/classCallCheck.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js3
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js26
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js13
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js7
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js4
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js19
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js7
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js3
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js11
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js17
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js7
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js3
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/construct.js31
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/createClass.js15
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/decorate.js396
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/defaults.js14
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js22
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/defineProperty.js14
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/extends.js17
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/get.js20
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js6
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/inherits.js15
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js9
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js3
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/instanceof.js7
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js53
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js3
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/iterableToArray.js3
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js29
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js15
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/jsx.js46
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js3
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js3
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js3
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/objectSpread.js19
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/objectSpread2.js35
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js19
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js14
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/package.json3
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js9
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/readOnlyError.js3
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/set.js51
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js8
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js7
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/slicedToArray.js6
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js6
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/superPropBase.js9
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js11
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js8
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/tdz.js3
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/temporalRef.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js1
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/toArray.js6
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js6
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/toPrimitive.js13
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js6
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/typeof.js15
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js6
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js37
-rw-r--r--assets/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js69
-rw-r--r--assets/node_modules/@babel/runtime/helpers/extends.js19
-rw-r--r--assets/node_modules/@babel/runtime/helpers/get.js23
-rw-r--r--assets/node_modules/@babel/runtime/helpers/getPrototypeOf.js8
-rw-r--r--assets/node_modules/@babel/runtime/helpers/inherits.js18
-rw-r--r--assets/node_modules/@babel/runtime/helpers/inheritsLoose.js7
-rw-r--r--assets/node_modules/@babel/runtime/helpers/initializerDefineProperty.js11
-rw-r--r--assets/node_modules/@babel/runtime/helpers/initializerWarningHelper.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/instanceof.js9
-rw-r--r--assets/node_modules/@babel/runtime/helpers/interopRequireDefault.js7
-rw-r--r--assets/node_modules/@babel/runtime/helpers/interopRequireWildcard.js55
-rw-r--r--assets/node_modules/@babel/runtime/helpers/isNativeFunction.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/iterableToArray.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js31
-rw-r--r--assets/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js17
-rw-r--r--assets/node_modules/@babel/runtime/helpers/jsx.js49
-rw-r--r--assets/node_modules/@babel/runtime/helpers/newArrowCheck.js7
-rw-r--r--assets/node_modules/@babel/runtime/helpers/nonIterableRest.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/nonIterableSpread.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/objectSpread.js22
-rw-r--r--assets/node_modules/@babel/runtime/helpers/objectSpread2.js37
-rw-r--r--assets/node_modules/@babel/runtime/helpers/objectWithoutProperties.js22
-rw-r--r--assets/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js16
-rw-r--r--assets/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js13
-rw-r--r--assets/node_modules/@babel/runtime/helpers/readOnlyError.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/set.js54
-rw-r--r--assets/node_modules/@babel/runtime/helpers/setPrototypeOf.js10
-rw-r--r--assets/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js9
-rw-r--r--assets/node_modules/@babel/runtime/helpers/slicedToArray.js11
-rw-r--r--assets/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js11
-rw-r--r--assets/node_modules/@babel/runtime/helpers/superPropBase.js12
-rw-r--r--assets/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js13
-rw-r--r--assets/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js10
-rw-r--r--assets/node_modules/@babel/runtime/helpers/tdz.js5
-rw-r--r--assets/node_modules/@babel/runtime/helpers/temporalRef.js9
-rw-r--r--assets/node_modules/@babel/runtime/helpers/temporalUndefined.js3
-rw-r--r--assets/node_modules/@babel/runtime/helpers/toArray.js11
-rw-r--r--assets/node_modules/@babel/runtime/helpers/toConsumableArray.js11
-rw-r--r--assets/node_modules/@babel/runtime/helpers/toPrimitive.js16
-rw-r--r--assets/node_modules/@babel/runtime/helpers/toPropertyKey.js10
-rw-r--r--assets/node_modules/@babel/runtime/helpers/typeof.js17
-rw-r--r--assets/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js9
-rw-r--r--assets/node_modules/@babel/runtime/helpers/wrapNativeSuper.js43
-rw-r--r--assets/node_modules/@babel/runtime/helpers/wrapRegExp.js76
-rw-r--r--assets/node_modules/@babel/runtime/package.json23
-rw-r--r--assets/node_modules/@babel/runtime/regenerator/index.js1
-rw-r--r--assets/node_modules/@babel/template/LICENSE22
-rw-r--r--assets/node_modules/@babel/template/README.md19
-rw-r--r--assets/node_modules/@babel/template/lib/builder.js83
-rw-r--r--assets/node_modules/@babel/template/lib/formatters.js63
-rw-r--r--assets/node_modules/@babel/template/lib/index.js38
-rw-r--r--assets/node_modules/@babel/template/lib/literal.js82
-rw-r--r--assets/node_modules/@babel/template/lib/options.js82
-rw-r--r--assets/node_modules/@babel/template/lib/parse.js171
-rw-r--r--assets/node_modules/@babel/template/lib/populate.js127
-rw-r--r--assets/node_modules/@babel/template/lib/string.js24
l---------assets/node_modules/@babel/template/node_modules/.bin/parser1
-rw-r--r--assets/node_modules/@babel/template/package.json19
-rw-r--r--assets/node_modules/@babel/traverse/LICENSE22
-rw-r--r--assets/node_modules/@babel/traverse/README.md19
-rw-r--r--assets/node_modules/@babel/traverse/lib/cache.js26
-rw-r--r--assets/node_modules/@babel/traverse/lib/context.js146
-rw-r--r--assets/node_modules/@babel/traverse/lib/hub.js23
-rw-r--r--assets/node_modules/@babel/traverse/lib/index.js120
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/ancestry.js182
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/comments.js41
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/context.js249
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/conversion.js428
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/evaluation.js404
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/family.js287
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/index.js256
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/inference/index.js126
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js175
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/inference/inferers.js221
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/introspection.js423
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/lib/hoister.js193
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/lib/removal-hooks.js38
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/lib/virtual-types.js210
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/modification.js216
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/removal.js66
-rw-r--r--assets/node_modules/@babel/traverse/lib/path/replacement.js244
-rw-r--r--assets/node_modules/@babel/traverse/lib/scope/binding.js71
-rw-r--r--assets/node_modules/@babel/traverse/lib/scope/index.js858
-rw-r--r--assets/node_modules/@babel/traverse/lib/scope/lib/renamer.js124
-rw-r--r--assets/node_modules/@babel/traverse/lib/visitors.js244
l---------assets/node_modules/@babel/traverse/node_modules/.bin/parser1
-rw-r--r--assets/node_modules/@babel/traverse/package.json28
-rw-r--r--assets/node_modules/@babel/types/LICENSE22
-rw-r--r--assets/node_modules/@babel/types/README.md19
-rw-r--r--assets/node_modules/@babel/types/lib/asserts/assertNode.js17
-rw-r--r--assets/node_modules/@babel/types/lib/asserts/generated/index.js1429
-rw-r--r--assets/node_modules/@babel/types/lib/builders/builder.js42
-rw-r--r--assets/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js28
-rw-r--r--assets/node_modules/@babel/types/lib/builders/flow/createUnionTypeAnnotation.js22
-rw-r--r--assets/node_modules/@babel/types/lib/builders/generated/index.js1203
-rw-r--r--assets/node_modules/@babel/types/lib/builders/react/buildChildren.js31
-rw-r--r--assets/node_modules/@babel/types/lib/clone/clone.js14
-rw-r--r--assets/node_modules/@babel/types/lib/clone/cloneDeep.js14
-rw-r--r--assets/node_modules/@babel/types/lib/clone/cloneNode.js78
-rw-r--r--assets/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js16
-rw-r--r--assets/node_modules/@babel/types/lib/comments/addComment.js17
-rw-r--r--assets/node_modules/@babel/types/lib/comments/addComments.js23
-rw-r--r--assets/node_modules/@babel/types/lib/comments/inheritInnerComments.js14
-rw-r--r--assets/node_modules/@babel/types/lib/comments/inheritLeadingComments.js14
-rw-r--r--assets/node_modules/@babel/types/lib/comments/inheritTrailingComments.js14
-rw-r--r--assets/node_modules/@babel/types/lib/comments/inheritsComments.js21
-rw-r--r--assets/node_modules/@babel/types/lib/comments/removeComments.js16
-rw-r--r--assets/node_modules/@babel/types/lib/constants/generated/index.js97
-rw-r--r--assets/node_modules/@babel/types/lib/constants/index.js49
-rw-r--r--assets/node_modules/@babel/types/lib/converters/ensureBlock.js14
-rw-r--r--assets/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js73
-rw-r--r--assets/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js16
-rw-r--r--assets/node_modules/@babel/types/lib/converters/toBlock.js34
-rw-r--r--assets/node_modules/@babel/types/lib/converters/toComputedKey.js15
-rw-r--r--assets/node_modules/@babel/types/lib/converters/toExpression.js30
-rw-r--r--assets/node_modules/@babel/types/lib/converters/toIdentifier.js25
-rw-r--r--assets/node_modules/@babel/types/lib/converters/toKeyAlias.js48
-rw-r--r--assets/node_modules/@babel/types/lib/converters/toSequenceExpression.js23
-rw-r--r--assets/node_modules/@babel/types/lib/converters/toStatement.js44
-rw-r--r--assets/node_modules/@babel/types/lib/converters/valueToNode.js88
-rw-r--r--assets/node_modules/@babel/types/lib/definitions/core.js856
-rw-r--r--assets/node_modules/@babel/types/lib/definitions/es2015.js467
-rw-r--r--assets/node_modules/@babel/types/lib/definitions/experimental.js222
-rw-r--r--assets/node_modules/@babel/types/lib/definitions/flow.js458
-rw-r--r--assets/node_modules/@babel/types/lib/definitions/index.js99
-rw-r--r--assets/node_modules/@babel/types/lib/definitions/jsx.js161
-rw-r--r--assets/node_modules/@babel/types/lib/definitions/misc.js33
-rw-r--r--assets/node_modules/@babel/types/lib/definitions/placeholders.js33
-rw-r--r--assets/node_modules/@babel/types/lib/definitions/typescript.js417
-rw-r--r--assets/node_modules/@babel/types/lib/definitions/utils.js282
-rw-r--r--assets/node_modules/@babel/types/lib/index.d.ts2531
-rw-r--r--assets/node_modules/@babel/types/lib/index.js579
-rw-r--r--assets/node_modules/@babel/types/lib/index.js.flow2117
-rw-r--r--assets/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js15
-rw-r--r--assets/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js74
-rw-r--r--assets/node_modules/@babel/types/lib/modifications/inherits.js33
-rw-r--r--assets/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js13
-rw-r--r--assets/node_modules/@babel/types/lib/modifications/removeProperties.js30
-rw-r--r--assets/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js17
-rw-r--r--assets/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js103
-rw-r--r--assets/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js14
-rw-r--r--assets/node_modules/@babel/types/lib/traverse/traverse.js55
-rw-r--r--assets/node_modules/@babel/types/lib/traverse/traverseFast.js28
-rw-r--r--assets/node_modules/@babel/types/lib/utils/inherit.js16
-rw-r--r--assets/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js47
-rw-r--r--assets/node_modules/@babel/types/lib/utils/shallowEqual.js18
-rw-r--r--assets/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js15
-rw-r--r--assets/node_modules/@babel/types/lib/validators/generated/index.js4525
-rw-r--r--assets/node_modules/@babel/types/lib/validators/is.js35
-rw-r--r--assets/node_modules/@babel/types/lib/validators/isBinding.js33
-rw-r--r--assets/node_modules/@babel/types/lib/validators/isBlockScoped.js16
-rw-r--r--assets/node_modules/@babel/types/lib/validators/isImmutable.js26
-rw-r--r--assets/node_modules/@babel/types/lib/validators/isLet.js14
-rw-r--r--assets/node_modules/@babel/types/lib/validators/isNode.js12
-rw-r--r--assets/node_modules/@babel/types/lib/validators/isNodesEquivalent.js67
-rw-r--r--assets/node_modules/@babel/types/lib/validators/isPlaceholderType.js21
-rw-r--r--assets/node_modules/@babel/types/lib/validators/isReferenced.js112
-rw-r--r--assets/node_modules/@babel/types/lib/validators/isScope.js28
-rw-r--r--assets/node_modules/@babel/types/lib/validators/isSpecifierDefault.js14
-rw-r--r--assets/node_modules/@babel/types/lib/validators/isType.js24
-rw-r--r--assets/node_modules/@babel/types/lib/validators/isValidES3Identifier.js16
-rw-r--r--assets/node_modules/@babel/types/lib/validators/isValidIdentifier.js24
-rw-r--r--assets/node_modules/@babel/types/lib/validators/isVar.js16
-rw-r--r--assets/node_modules/@babel/types/lib/validators/matchesPattern.js40
-rw-r--r--assets/node_modules/@babel/types/lib/validators/react/isCompatTag.js10
-rw-r--r--assets/node_modules/@babel/types/lib/validators/react/isReactComponent.js14
-rw-r--r--assets/node_modules/@babel/types/lib/validators/validate.js32
-rw-r--r--assets/node_modules/@babel/types/package.json24
-rw-r--r--assets/node_modules/@babel/types/scripts/generateTypeHelpers.js29
-rw-r--r--assets/node_modules/@babel/types/scripts/generators/docs.js121
-rw-r--r--assets/node_modules/@babel/types/scripts/generators/flow.js248
-rw-r--r--assets/node_modules/@babel/types/scripts/generators/generateAsserts.js44
-rw-r--r--assets/node_modules/@babel/types/scripts/generators/generateBuilders.js43
-rw-r--r--assets/node_modules/@babel/types/scripts/generators/generateConstants.js17
-rw-r--r--assets/node_modules/@babel/types/scripts/generators/generateValidators.js78
-rw-r--r--assets/node_modules/@babel/types/scripts/generators/typescript.js361
-rw-r--r--assets/node_modules/@babel/types/scripts/utils/formatBuilderName.js10
-rw-r--r--assets/node_modules/@babel/types/scripts/utils/lowerFirst.js4
-rw-r--r--assets/node_modules/@babel/types/scripts/utils/stringifyValidator.js66
-rw-r--r--assets/node_modules/@babel/types/scripts/utils/toFunctionName.js4
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/LICENSE21
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/README.md171
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts13
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/adapters/fs.js18
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/constants.d.ts5
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/constants.js13
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/index.d.ts13
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/index.js24
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts8
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/providers/async.js90
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts6
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/providers/sync.js52
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/settings.d.ts21
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/settings.js24
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/types/index.d.ts20
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/types/index.js2
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts3
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/utils/fs.js18
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts3
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/out/utils/index.js4
-rw-r--r--assets/node_modules/@nodelib/fs.scandir/package.json35
-rw-r--r--assets/node_modules/@nodelib/fs.stat/LICENSE21
-rw-r--r--assets/node_modules/@nodelib/fs.stat/README.md126
-rw-r--r--assets/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts11
-rw-r--r--assets/node_modules/@nodelib/fs.stat/out/adapters/fs.js16
-rw-r--r--assets/node_modules/@nodelib/fs.stat/out/index.d.ts13
-rw-r--r--assets/node_modules/@nodelib/fs.stat/out/index.js24
-rw-r--r--assets/node_modules/@nodelib/fs.stat/out/providers/async.d.ts5
-rw-r--r--assets/node_modules/@nodelib/fs.stat/out/providers/async.js31
-rw-r--r--assets/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts4
-rw-r--r--assets/node_modules/@nodelib/fs.stat/out/providers/sync.js22
-rw-r--r--assets/node_modules/@nodelib/fs.stat/out/settings.d.ts17
-rw-r--r--assets/node_modules/@nodelib/fs.stat/out/settings.js16
-rw-r--r--assets/node_modules/@nodelib/fs.stat/out/types/index.d.ts5
-rw-r--r--assets/node_modules/@nodelib/fs.stat/out/types/index.js2
-rw-r--r--assets/node_modules/@nodelib/fs.stat/package.json29
-rw-r--r--assets/node_modules/@nodelib/fs.walk/LICENSE21
-rw-r--r--assets/node_modules/@nodelib/fs.walk/README.md215
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/index.d.ts15
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/index.js32
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/providers/async.d.ts13
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/providers/async.js30
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/providers/index.d.ts5
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/providers/index.js8
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts13
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/providers/stream.js30
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts11
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/providers/sync.js14
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/readers/async.d.ts30
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/readers/async.js93
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/readers/common.d.ts7
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/readers/common.js24
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts7
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/readers/reader.js11
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts16
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/readers/sync.js59
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/settings.d.ts31
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/settings.js26
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/types/index.d.ts9
-rw-r--r--assets/node_modules/@nodelib/fs.walk/out/types/index.js2
-rw-r--r--assets/node_modules/@nodelib/fs.walk/package.json35
-rw-r--r--assets/node_modules/@types/color-name/LICENSE21
-rw-r--r--assets/node_modules/@types/color-name/README.md16
-rw-r--r--assets/node_modules/@types/color-name/index.d.ts161
-rw-r--r--assets/node_modules/@types/color-name/package.json23
-rw-r--r--assets/node_modules/@types/minimist/README.md17
-rw-r--r--assets/node_modules/@types/minimist/index.d.ts90
-rw-r--r--assets/node_modules/@types/minimist/package.json17
-rw-r--r--assets/node_modules/@types/minimist/types-metadata.json22
-rw-r--r--assets/node_modules/@types/node/LICENSE21
-rw-r--r--assets/node_modules/@types/node/README.md16
-rw-r--r--assets/node_modules/@types/node/assert.d.ts53
-rw-r--r--assets/node_modules/@types/node/async_hooks.d.ts132
-rw-r--r--assets/node_modules/@types/node/base.d.ts41
-rw-r--r--assets/node_modules/@types/node/buffer.d.ts22
-rw-r--r--assets/node_modules/@types/node/child_process.d.ts495
-rw-r--r--assets/node_modules/@types/node/cluster.d.ts266
-rw-r--r--assets/node_modules/@types/node/console.d.ts3
-rw-r--r--assets/node_modules/@types/node/constants.d.ts8
-rw-r--r--assets/node_modules/@types/node/crypto.d.ts615
-rw-r--r--assets/node_modules/@types/node/dgram.d.ts141
-rw-r--r--assets/node_modules/@types/node/dns.d.ts366
-rw-r--r--assets/node_modules/@types/node/domain.d.ts16
-rw-r--r--assets/node_modules/@types/node/events.d.ts50
-rw-r--r--assets/node_modules/@types/node/fs.d.ts2458
-rw-r--r--assets/node_modules/@types/node/globals.d.ts1105
-rw-r--r--assets/node_modules/@types/node/http.d.ts395
-rw-r--r--assets/node_modules/@types/node/http2.d.ts948
-rw-r--r--assets/node_modules/@types/node/https.d.ts37
-rw-r--r--assets/node_modules/@types/node/index.d.ts83
-rw-r--r--assets/node_modules/@types/node/inspector.d.ts3034
-rw-r--r--assets/node_modules/@types/node/module.d.ts58
-rw-r--r--assets/node_modules/@types/node/net.d.ts268
-rw-r--r--assets/node_modules/@types/node/os.d.ts231
-rw-r--r--assets/node_modules/@types/node/package.json231
-rw-r--r--assets/node_modules/@types/node/path.d.ts153
-rw-r--r--assets/node_modules/@types/node/perf_hooks.d.ts304
-rw-r--r--assets/node_modules/@types/node/process.d.ts15
-rw-r--r--assets/node_modules/@types/node/punycode.d.ts12
-rw-r--r--assets/node_modules/@types/node/querystring.d.ts29
-rw-r--r--assets/node_modules/@types/node/readline.d.ts170
-rw-r--r--assets/node_modules/@types/node/repl.d.ts387
-rw-r--r--assets/node_modules/@types/node/stream.d.ts332
-rw-r--r--assets/node_modules/@types/node/string_decoder.d.ts7
-rw-r--r--assets/node_modules/@types/node/timers.d.ts16
-rw-r--r--assets/node_modules/@types/node/tls.d.ts759
-rw-r--r--assets/node_modules/@types/node/trace_events.d.ts61
-rw-r--r--assets/node_modules/@types/node/ts3.5/fs.d.ts33
-rw-r--r--assets/node_modules/@types/node/ts3.5/globals.d.ts19
-rw-r--r--assets/node_modules/@types/node/ts3.5/index.d.ts17
-rw-r--r--assets/node_modules/@types/node/ts3.5/util.d.ts9
-rw-r--r--assets/node_modules/@types/node/ts3.5/wasi.d.ts45
-rw-r--r--assets/node_modules/@types/node/tty.d.ts66
-rw-r--r--assets/node_modules/@types/node/url.d.ts110
-rw-r--r--assets/node_modules/@types/node/util.d.ts190
-rw-r--r--assets/node_modules/@types/node/v8.d.ts187
-rw-r--r--assets/node_modules/@types/node/vm.d.ts110
-rw-r--r--assets/node_modules/@types/node/worker_threads.d.ts168
-rw-r--r--assets/node_modules/@types/node/zlib.d.ts352
-rwxr-xr-xassets/node_modules/@types/normalize-package-data/LICENSE21
-rwxr-xr-xassets/node_modules/@types/normalize-package-data/README.md16
-rwxr-xr-xassets/node_modules/@types/normalize-package-data/index.d.ts46
-rwxr-xr-xassets/node_modules/@types/normalize-package-data/package.json22
-rw-r--r--assets/node_modules/@types/parse-json/LICENSE21
-rw-r--r--assets/node_modules/@types/parse-json/README.md16
-rw-r--r--assets/node_modules/@types/parse-json/index.d.ts9
-rw-r--r--assets/node_modules/@types/parse-json/package.json22
-rw-r--r--assets/node_modules/@types/unist/LICENSE21
-rw-r--r--assets/node_modules/@types/unist/README.md16
-rw-r--r--assets/node_modules/@types/unist/index.d.ts98
-rw-r--r--assets/node_modules/@types/unist/package.json43
-rw-r--r--assets/node_modules/@types/vfile-message/LICENSE21
-rw-r--r--assets/node_modules/@types/vfile-message/README.md3
-rw-r--r--assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/index.js50
-rw-r--r--assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/license22
-rw-r--r--assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/package.json83
-rw-r--r--assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/readme.md140
-rw-r--r--assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/types/index.d.ts9
-rw-r--r--assets/node_modules/@types/vfile-message/node_modules/vfile-message/index.js94
-rw-r--r--assets/node_modules/@types/vfile-message/node_modules/vfile-message/license22
-rw-r--r--assets/node_modules/@types/vfile-message/node_modules/vfile-message/package.json78
-rw-r--r--assets/node_modules/@types/vfile-message/node_modules/vfile-message/readme.md214
-rw-r--r--assets/node_modules/@types/vfile-message/node_modules/vfile-message/types/index.d.ts73
-rw-r--r--assets/node_modules/@types/vfile-message/package.json14
-rw-r--r--assets/node_modules/@types/vfile/LICENSE21
-rw-r--r--assets/node_modules/@types/vfile/README.md16
-rw-r--r--assets/node_modules/@types/vfile/index.d.ts124
-rw-r--r--assets/node_modules/@types/vfile/package.json32
-rw-r--r--assets/node_modules/ajv/.tonic_example.js20
-rw-r--r--assets/node_modules/ajv/LICENSE22
-rw-r--r--assets/node_modules/ajv/README.md1380
-rw-r--r--assets/node_modules/ajv/dist/ajv.bundle.js7163
-rw-r--r--assets/node_modules/ajv/dist/ajv.min.js3
-rw-r--r--assets/node_modules/ajv/dist/ajv.min.js.map1
-rw-r--r--assets/node_modules/ajv/lib/ajv.d.ts391
-rw-r--r--assets/node_modules/ajv/lib/ajv.js497
-rw-r--r--assets/node_modules/ajv/lib/cache.js26
-rw-r--r--assets/node_modules/ajv/lib/compile/async.js90
-rw-r--r--assets/node_modules/ajv/lib/compile/equal.js5
-rw-r--r--assets/node_modules/ajv/lib/compile/error_classes.js34
-rw-r--r--assets/node_modules/ajv/lib/compile/formats.js149
-rw-r--r--assets/node_modules/ajv/lib/compile/index.js387
-rw-r--r--assets/node_modules/ajv/lib/compile/resolve.js270
-rw-r--r--assets/node_modules/ajv/lib/compile/rules.js66
-rw-r--r--assets/node_modules/ajv/lib/compile/schema_obj.js9
-rw-r--r--assets/node_modules/ajv/lib/compile/ucs2length.js20
-rw-r--r--assets/node_modules/ajv/lib/compile/util.js274
-rw-r--r--assets/node_modules/ajv/lib/data.js49
-rw-r--r--assets/node_modules/ajv/lib/definition_schema.js37
-rw-r--r--assets/node_modules/ajv/lib/dot/_limit.jst104
-rw-r--r--assets/node_modules/ajv/lib/dot/_limitItems.jst10
-rw-r--r--assets/node_modules/ajv/lib/dot/_limitLength.jst10
-rw-r--r--assets/node_modules/ajv/lib/dot/_limitProperties.jst10
-rw-r--r--assets/node_modules/ajv/lib/dot/allOf.jst34
-rw-r--r--assets/node_modules/ajv/lib/dot/anyOf.jst48
-rw-r--r--assets/node_modules/ajv/lib/dot/coerce.def61
-rw-r--r--assets/node_modules/ajv/lib/dot/comment.jst9
-rw-r--r--assets/node_modules/ajv/lib/dot/const.jst11
-rw-r--r--assets/node_modules/ajv/lib/dot/contains.jst57
-rw-r--r--assets/node_modules/ajv/lib/dot/custom.jst191
-rw-r--r--assets/node_modules/ajv/lib/dot/defaults.def47
-rw-r--r--assets/node_modules/ajv/lib/dot/definitions.def201
-rw-r--r--assets/node_modules/ajv/lib/dot/dependencies.jst80
-rw-r--r--assets/node_modules/ajv/lib/dot/enum.jst30
-rw-r--r--assets/node_modules/ajv/lib/dot/errors.def194
-rw-r--r--assets/node_modules/ajv/lib/dot/format.jst106
-rw-r--r--assets/node_modules/ajv/lib/dot/if.jst75
-rw-r--r--assets/node_modules/ajv/lib/dot/items.jst100
-rw-r--r--assets/node_modules/ajv/lib/dot/missing.def39
-rw-r--r--assets/node_modules/ajv/lib/dot/multipleOf.jst20
-rw-r--r--assets/node_modules/ajv/lib/dot/not.jst43
-rw-r--r--assets/node_modules/ajv/lib/dot/oneOf.jst54
-rw-r--r--assets/node_modules/ajv/lib/dot/pattern.jst14
-rw-r--r--assets/node_modules/ajv/lib/dot/properties.jst244
-rw-r--r--assets/node_modules/ajv/lib/dot/propertyNames.jst54
-rw-r--r--assets/node_modules/ajv/lib/dot/ref.jst85
-rw-r--r--assets/node_modules/ajv/lib/dot/required.jst108
-rw-r--r--assets/node_modules/ajv/lib/dot/uniqueItems.jst62
-rw-r--r--assets/node_modules/ajv/lib/dot/validate.jst282
-rw-r--r--assets/node_modules/ajv/lib/dotjs/README.md3
-rw-r--r--assets/node_modules/ajv/lib/dotjs/_limit.js157
-rw-r--r--assets/node_modules/ajv/lib/dotjs/_limitItems.js77
-rw-r--r--assets/node_modules/ajv/lib/dotjs/_limitLength.js82
-rw-r--r--assets/node_modules/ajv/lib/dotjs/_limitProperties.js77
-rw-r--r--assets/node_modules/ajv/lib/dotjs/allOf.js43
-rw-r--r--assets/node_modules/ajv/lib/dotjs/anyOf.js74
-rw-r--r--assets/node_modules/ajv/lib/dotjs/comment.js14
-rw-r--r--assets/node_modules/ajv/lib/dotjs/const.js56
-rw-r--r--assets/node_modules/ajv/lib/dotjs/contains.js82
-rw-r--r--assets/node_modules/ajv/lib/dotjs/custom.js228
-rw-r--r--assets/node_modules/ajv/lib/dotjs/dependencies.js168
-rw-r--r--assets/node_modules/ajv/lib/dotjs/enum.js66
-rw-r--r--assets/node_modules/ajv/lib/dotjs/format.js150
-rw-r--r--assets/node_modules/ajv/lib/dotjs/if.js104
-rw-r--r--assets/node_modules/ajv/lib/dotjs/index.js33
-rw-r--r--assets/node_modules/ajv/lib/dotjs/items.js141
-rw-r--r--assets/node_modules/ajv/lib/dotjs/multipleOf.js77
-rw-r--r--assets/node_modules/ajv/lib/dotjs/not.js84
-rw-r--r--assets/node_modules/ajv/lib/dotjs/oneOf.js73
-rw-r--r--assets/node_modules/ajv/lib/dotjs/pattern.js75
-rw-r--r--assets/node_modules/ajv/lib/dotjs/properties.js330
-rw-r--r--assets/node_modules/ajv/lib/dotjs/propertyNames.js82
-rw-r--r--assets/node_modules/ajv/lib/dotjs/ref.js124
-rw-r--r--assets/node_modules/ajv/lib/dotjs/required.js270
-rw-r--r--assets/node_modules/ajv/lib/dotjs/uniqueItems.js86
-rw-r--r--assets/node_modules/ajv/lib/dotjs/validate.js494
-rw-r--r--assets/node_modules/ajv/lib/keyword.js146
-rw-r--r--assets/node_modules/ajv/lib/refs/data.json17
-rw-r--r--assets/node_modules/ajv/lib/refs/json-schema-draft-04.json149
-rw-r--r--assets/node_modules/ajv/lib/refs/json-schema-draft-06.json154
-rw-r--r--assets/node_modules/ajv/lib/refs/json-schema-draft-07.json168
-rw-r--r--assets/node_modules/ajv/lib/refs/json-schema-secure.json94
-rw-r--r--assets/node_modules/ajv/package.json98
-rw-r--r--assets/node_modules/ajv/scripts/.eslintrc.yml3
-rw-r--r--assets/node_modules/ajv/scripts/bundle.js61
-rw-r--r--assets/node_modules/ajv/scripts/compile-dots.js73
-rwxr-xr-xassets/node_modules/ajv/scripts/info10
-rwxr-xr-xassets/node_modules/ajv/scripts/prepare-tests12
-rwxr-xr-xassets/node_modules/ajv/scripts/publish-built-version32
-rwxr-xr-xassets/node_modules/ajv/scripts/travis-gh-pages23
-rw-r--r--assets/node_modules/ansi-regex/index.d.ts37
-rw-r--r--assets/node_modules/ansi-regex/index.js10
-rw-r--r--assets/node_modules/ansi-regex/license9
-rw-r--r--assets/node_modules/ansi-regex/package.json55
-rw-r--r--assets/node_modules/ansi-regex/readme.md78
-rw-r--r--assets/node_modules/ansi-styles/index.js165
-rw-r--r--assets/node_modules/ansi-styles/license9
-rw-r--r--assets/node_modules/ansi-styles/package.json56
-rw-r--r--assets/node_modules/ansi-styles/readme.md147
-rw-r--r--assets/node_modules/anymatch/LICENSE15
-rw-r--r--assets/node_modules/anymatch/README.md87
-rw-r--r--assets/node_modules/anymatch/index.d.ts19
-rw-r--r--assets/node_modules/anymatch/index.js102
-rw-r--r--assets/node_modules/anymatch/package.json48
-rw-r--r--assets/node_modules/array-union/index.d.ts25
-rw-r--r--assets/node_modules/array-union/index.js5
-rw-r--r--assets/node_modules/array-union/license9
-rw-r--r--assets/node_modules/array-union/package.json38
-rw-r--r--assets/node_modules/array-union/readme.md34
-rw-r--r--assets/node_modules/arrify/index.js8
-rw-r--r--assets/node_modules/arrify/license21
-rw-r--r--assets/node_modules/arrify/package.json33
-rw-r--r--assets/node_modules/arrify/readme.md36
-rw-r--r--assets/node_modules/astral-regex/index.js4
-rw-r--r--assets/node_modules/astral-regex/license9
-rw-r--r--assets/node_modules/astral-regex/package.json32
-rw-r--r--assets/node_modules/astral-regex/readme.md43
-rw-r--r--assets/node_modules/autoprefixer/CHANGELOG.md956
-rw-r--r--assets/node_modules/autoprefixer/LICENSE20
-rw-r--r--assets/node_modules/autoprefixer/README.md1099
-rwxr-xr-xassets/node_modules/autoprefixer/bin/autoprefixer22
-rw-r--r--assets/node_modules/autoprefixer/data/prefixes.js722
-rw-r--r--assets/node_modules/autoprefixer/lib/at-rule.js69
-rw-r--r--assets/node_modules/autoprefixer/lib/autoprefixer.js153
-rw-r--r--assets/node_modules/autoprefixer/lib/brackets.js80
-rw-r--r--assets/node_modules/autoprefixer/lib/browsers.js99
-rw-r--r--assets/node_modules/autoprefixer/lib/declaration.js261
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/align-content.js81
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/align-items.js78
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/align-self.js86
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/animation.js37
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/appearance.js41
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/backdrop-filter.js37
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/background-clip.js43
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/background-size.js40
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/block-logical.js50
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/border-image.js35
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/border-radius.js64
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/break-props.js78
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/color-adjust.js42
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/cross-fade.js56
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/display-flex.js96
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/display-grid.js43
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/filter-value.js33
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/filter.js35
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/flex-basis.js74
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/flex-direction.js110
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/flex-flow.js83
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/flex-grow.js59
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/flex-shrink.js74
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/flex-spec.js22
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/flex-wrap.js42
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/flex.js87
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/fullscreen.js42
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/gradient.js581
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/grid-area.js54
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/grid-column-align.js50
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/grid-end.js64
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/grid-row-align.js50
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/grid-row-column.js54
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/grid-rows-columns.js151
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/grid-start.js57
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/grid-template-areas.js103
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/grid-template.js92
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/grid-utils.js1150
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/image-rendering.js73
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/image-set.js40
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/inline-logical.js42
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/intrinsic.js76
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/justify-content.js87
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/mask-border.js48
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/mask-composite.js106
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/order.js74
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/overscroll-behavior.js56
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/pixelated.js60
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/place-self.js57
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/placeholder.js58
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/text-decoration-skip-ink.js40
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/text-decoration.js38
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/text-emphasis-position.js35
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/transform-decl.js112
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/user-select.js38
-rw-r--r--assets/node_modules/autoprefixer/lib/hacks/writing-mode.js61
-rw-r--r--assets/node_modules/autoprefixer/lib/info.js176
-rw-r--r--assets/node_modules/autoprefixer/lib/old-selector.js95
-rw-r--r--assets/node_modules/autoprefixer/lib/old-value.js32
-rw-r--r--assets/node_modules/autoprefixer/lib/prefixer.js174
-rw-r--r--assets/node_modules/autoprefixer/lib/prefixes.js543
-rw-r--r--assets/node_modules/autoprefixer/lib/processor.js763
-rw-r--r--assets/node_modules/autoprefixer/lib/resolution.js156
-rw-r--r--assets/node_modules/autoprefixer/lib/selector.js218
-rw-r--r--assets/node_modules/autoprefixer/lib/supports.js386
-rw-r--r--assets/node_modules/autoprefixer/lib/transition.js509
-rw-r--r--assets/node_modules/autoprefixer/lib/utils.js108
-rw-r--r--assets/node_modules/autoprefixer/lib/value.js166
l---------assets/node_modules/autoprefixer/node_modules/.bin/browserslist1
-rw-r--r--assets/node_modules/autoprefixer/package.json31
-rw-r--r--assets/node_modules/bail/index.js9
-rw-r--r--assets/node_modules/bail/license22
-rw-r--r--assets/node_modules/bail/package.json72
-rw-r--r--assets/node_modules/bail/readme.md84
-rw-r--r--assets/node_modules/balanced-match/.npmignore5
-rw-r--r--assets/node_modules/balanced-match/LICENSE.md21
-rw-r--r--assets/node_modules/balanced-match/README.md91
-rw-r--r--assets/node_modules/balanced-match/index.js59
-rw-r--r--assets/node_modules/balanced-match/package.json49
-rw-r--r--assets/node_modules/binary-extensions/binary-extensions.json252
-rw-r--r--assets/node_modules/binary-extensions/binary-extensions.json.d.ts3
-rw-r--r--assets/node_modules/binary-extensions/index.d.ts14
-rw-r--r--assets/node_modules/binary-extensions/index.js1
-rw-r--r--assets/node_modules/binary-extensions/license9
-rw-r--r--assets/node_modules/binary-extensions/package.json38
-rw-r--r--assets/node_modules/binary-extensions/readme.md33
-rw-r--r--assets/node_modules/brace-expansion/LICENSE21
-rw-r--r--assets/node_modules/brace-expansion/README.md129
-rw-r--r--assets/node_modules/brace-expansion/index.js201
-rw-r--r--assets/node_modules/brace-expansion/package.json47
-rw-r--r--assets/node_modules/braces/CHANGELOG.md184
-rw-r--r--assets/node_modules/braces/LICENSE21
-rw-r--r--assets/node_modules/braces/README.md593
-rw-r--r--assets/node_modules/braces/index.js170
-rw-r--r--assets/node_modules/braces/lib/compile.js57
-rw-r--r--assets/node_modules/braces/lib/constants.js57
-rw-r--r--assets/node_modules/braces/lib/expand.js113
-rw-r--r--assets/node_modules/braces/lib/parse.js333
-rw-r--r--assets/node_modules/braces/lib/stringify.js32
-rw-r--r--assets/node_modules/braces/lib/utils.js112
-rw-r--r--assets/node_modules/braces/package.json77
-rw-r--r--assets/node_modules/browserslist/CHANGELOG.md437
-rw-r--r--assets/node_modules/browserslist/LICENSE20
-rw-r--r--assets/node_modules/browserslist/README.md598
-rw-r--r--assets/node_modules/browserslist/browser.js41
-rwxr-xr-xassets/node_modules/browserslist/cli.js135
-rw-r--r--assets/node_modules/browserslist/error.js12
-rw-r--r--assets/node_modules/browserslist/index.js1092
-rw-r--r--assets/node_modules/browserslist/node.js348
-rw-r--r--assets/node_modules/browserslist/package.json34
-rw-r--r--assets/node_modules/callsites/index.d.ts96
-rw-r--r--assets/node_modules/callsites/index.js13
-rw-r--r--assets/node_modules/callsites/license9
-rw-r--r--assets/node_modules/callsites/package.json39
-rw-r--r--assets/node_modules/callsites/readme.md48
-rw-r--r--assets/node_modules/camelcase-keys/index.d.ts102
-rw-r--r--assets/node_modules/camelcase-keys/index.js73
-rw-r--r--assets/node_modules/camelcase-keys/license9
-rw-r--r--assets/node_modules/camelcase-keys/node_modules/map-obj/index.d.ts106
-rw-r--r--assets/node_modules/camelcase-keys/node_modules/map-obj/index.js54
-rw-r--r--assets/node_modules/camelcase-keys/node_modules/map-obj/license9
-rw-r--r--assets/node_modules/camelcase-keys/node_modules/map-obj/package.json42
-rw-r--r--assets/node_modules/camelcase-keys/node_modules/map-obj/readme.md76
-rw-r--r--assets/node_modules/camelcase-keys/package.json71
-rw-r--r--assets/node_modules/camelcase-keys/readme.md125
-rw-r--r--assets/node_modules/camelcase/index.d.ts63
-rw-r--r--assets/node_modules/camelcase/index.js76
-rw-r--r--assets/node_modules/camelcase/license9
-rw-r--r--assets/node_modules/camelcase/package.json43
-rw-r--r--assets/node_modules/camelcase/readme.md99
-rw-r--r--assets/node_modules/caniuse-lite/CHANGELOG.md331
-rw-r--r--assets/node_modules/caniuse-lite/LICENSE395
-rw-r--r--assets/node_modules/caniuse-lite/README.md103
-rw-r--r--assets/node_modules/caniuse-lite/data/agents.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/browserVersions.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/browsers.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/aac.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/abortcontroller.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/ac3-ec3.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/accelerometer.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/addeventlistener.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/alternate-stylesheet.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/ambient-light.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/apng.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/array-find-index.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/array-find.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/array-flat.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/array-includes.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/arrow-functions.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/asmjs.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/async-clipboard.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/async-functions.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/async-iterations-and-generators.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/atob-btoa.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/audio-api.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/audio.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/audiotracks.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/autofocus.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/aux-click.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/auxclick.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/av1.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/background-attachment.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/background-clip-text.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/background-img-opts.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/background-position-x-y.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/background-repeat-round-space.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/background-sync.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/battery-status.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/beacon.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/beforeafterprint.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/bigint.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/blobbuilder.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/bloburls.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/border-image.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/border-radius.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/broadcastchannel.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/brotli.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/calc.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/canvas-blending.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/canvas-text.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/canvas.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/ch-unit.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/chacha20-poly1305.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/channel-messaging.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/childnode-remove.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/classlist.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/clear-site-data-header.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/clipboard.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/comparedocumentposition.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/console-basic.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/console-time.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/const.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/constraint-validation.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/contenteditable.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/cors.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/createimagebitmap.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/credential-management.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/cryptography.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-all.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-animation.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-any-link.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-appearance.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-apply-rule.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-at-counter-style.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-backdrop-filter.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-background-offsets.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-boxshadow.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-canvas.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-caret-color.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-case-insensitive.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-clip-path.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-color-adjust.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-conic-gradients.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-containment.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-counters.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-crisp-edges.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-cross-fade.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-default-pseudo.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-deviceadaptation.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-dir-pseudo.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-display-contents.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-element-function.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-env-function.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-exclusions.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-featurequeries.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-filter-function.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-filters.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-first-letter.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-first-line.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-fixed.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-focus-ring.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-focus-visible.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-focus-within.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-font-stretch.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-gencontent.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-gradients.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-grid.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-has.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-hyphenate.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-hyphens.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-image-orientation.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-image-set.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-in-out-of-range.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-initial-letter.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-initial-value.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-letter-spacing.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-line-clamp.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-logical-props.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-marker-pseudo.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-masks.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-matches-pseudo.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-math-functions.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-media-interaction.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-media-resolution.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-media-scripting.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-mediaqueries.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-mixblendmode.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-motion-paths.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-namespaces.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-not-sel-list.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-nth-child-of.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-opacity.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-optional-pseudo.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-overflow-anchor.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-overflow.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-page-break.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-paged-media.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-paint-api.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-placeholder-shown.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-placeholder.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-read-only-write.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-rebeccapurple.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-reflections.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-regions.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-repeating-gradients.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-resize.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-revert-value.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-rrggbbaa.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-scroll-behavior.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-scrollbar.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-sel2.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-sel3.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-selection.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-shapes.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-snappoints.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-sticky.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-subgrid.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-supports-api.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-table.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-text-align-last.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-text-indent.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-text-justify.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-text-orientation.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-text-spacing.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-textshadow.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-touch-action-2.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-touch-action.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-transitions.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-unicode-bidi.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-unset-value.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-variables.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-widows-orphans.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-writing-mode.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css-zoom.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css3-attr.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css3-boxsizing.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css3-colors.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css3-cursors-grab.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css3-cursors-newer.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css3-cursors.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/css3-tabsize.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/currentcolor.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/custom-elements.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/custom-elementsv1.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/customevent.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/datalist.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/dataset.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/datauri.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/details.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/deviceorientation.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/devicepixelratio.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/dialog.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/dispatchevent.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/do-not-track.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/document-currentscript.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/document-execcommand.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/document-scrollingelement.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/documenthead.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/dom-manip-convenience.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/dom-range.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/domcontentloaded.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/dommatrix.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/download.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/dragndrop.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/element-closest.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/element-from-point.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/element-scroll-methods.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/eme.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/eot.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/es5.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/es6-class.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/es6-generators.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/es6-module-nomodule.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/es6-module.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/es6-number.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/es6-string-includes.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/es6.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/eventsource.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/feature-policy.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/fetch.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/fieldset-disabled.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/fileapi.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/filereader.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/filereadersync.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/filesystem.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/flac.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/flexbox-gap.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/flexbox.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/flow-root.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/focusin-focusout-events.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/font-family-system-ui.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/font-feature.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/font-kerning.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/font-loading.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/font-size-adjust.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/font-smooth.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/font-unicode-range.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/font-variant-alternates.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/font-variant-east-asian.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/font-variant-numeric.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/fontface.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/form-attribute.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/form-submit-attributes.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/form-validation.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/forms.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/fullscreen.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/gamepad.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/geolocation.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/getboundingclientrect.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/getcomputedstyle.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/getelementsbyclassname.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/getrandomvalues.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/gyroscope.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/hardwareconcurrency.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/hashchange.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/heif.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/hevc.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/hidden.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/high-resolution-time.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/history.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/html-media-capture.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/html5semantic.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/http-live-streaming.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/http2.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/http3.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/iframe-sandbox.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/iframe-seamless.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/iframe-srcdoc.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/imagecapture.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/ime.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/imports.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/indexeddb.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/indexeddb2.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/inline-block.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/innertext.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-color.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-datetime.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-email-tel-url.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-event.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-file-accept.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-file-directory.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-file-multiple.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-inputmode.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-minlength.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-number.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-pattern.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-placeholder.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-range.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-search.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/input-selection.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/insert-adjacent.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/insertadjacenthtml.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/internationalization-plural-rul.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/internationalization.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/intersectionobserver.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/intl-pluralrules.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/intrinsic-width.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/jpeg2000.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/jpegxr.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/json.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/keyboardevent-code.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/keyboardevent-key.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/keyboardevent-location.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/keyboardevent-which.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/lazyload.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/let.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/link-icon-png.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/link-icon-svg.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/link-rel-preconnect.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/link-rel-prefetch.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/link-rel-preload.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/link-rel-prerender.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/loading-lazy-attr.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/localecompare.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/magnetometer.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/matchesselector.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/matchmedia.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/mathml.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/maxlength.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/media-attribute.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/media-fragments.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/media-session-api.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/mediarecorder.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/mediasource.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/menu.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/meta-theme-color.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/meter.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/midi.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/minmaxwh.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/mp3.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/mpeg-dash.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/mpeg4.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/multibackgrounds.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/multicolumn.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/mutation-events.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/mutationobserver.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/namevalue-storage.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/native-filesystem-api.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/nav-timing.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/navigator-language.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/netinfo.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/node-contains.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/node-parentelement.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/notifications.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/object-entries.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/object-fit.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/object-observe.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/object-values.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/objectrtc.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/offline-apps.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/offscreencanvas.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/ogg-vorbis.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/ogv.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/ol-reversed.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/once-event-listener.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/online-status.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/opus.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/orientation-sensor.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/outline.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/pad-start-end.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/page-transition-events.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/pagevisibility.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/passive-event-listener.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/passwordrules.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/path2d.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/payment-request.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/permissions-api.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/picture-in-picture.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/picture.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/ping.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/png-alpha.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/pointer-events.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/pointer.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/pointerlock.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/prefers-color-scheme.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/private-class-fields.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/progress.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/promise-finally.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/promises.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/proximity.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/proxy.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/public-class-fields.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/publickeypinning.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/push-api.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/queryselector.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/readonly-attr.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/referrer-policy.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/registerprotocolhandler.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/rel-noopener.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/rel-noreferrer.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/rellist.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/rem.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/replace-all.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/requestanimationframe.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/requestidlecallback.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/resizeobserver.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/resource-timing.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/rest-parameters.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/rtcpeerconnection.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/ruby.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/run-in.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/screen-orientation.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/script-async.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/script-defer.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/scrollintoview.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/sdch.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/selection-api.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/server-timing.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/serviceworkers.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/setimmediate.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/sha-2.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/shadowdom.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/shadowdomv1.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/sharedarraybuffer.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/sharedworkers.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/sni.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/spdy.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/speech-recognition.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/speech-synthesis.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/spellcheck-attribute.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/sql-storage.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/srcset.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/stopimmediatepropagation.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/stream.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/streams.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/stricttransportsecurity.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/style-scoped.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/subresource-integrity.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/svg-css.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/svg-filters.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/svg-fonts.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/svg-fragment.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/svg-html.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/svg-html5.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/svg-img.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/svg-smil.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/svg.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/sxg.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/symbols.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/tabindex-attr.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/template-literals.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/template.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/testfeat.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/text-decoration.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/text-emphasis.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/text-overflow.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/text-size-adjust.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/text-stroke.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/text-underline-offset.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/textcontent.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/textencoder.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/tls1-1.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/tls1-2.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/tls1-3.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/token-binding.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/touch.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/transforms2d.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/transforms3d.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/ttf.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/typedarrays.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/u2f.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/unhandledrejection.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/url.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/urlsearchparams.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/use-strict.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/user-select-none.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/user-timing.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/variable-fonts.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/vibration.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/video.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/videotracks.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/viewport-units.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/wai-aria.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/wasm.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/wav.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/wbr-element.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/web-animation.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/web-app-manifest.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/web-bluetooth.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/web-share.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/webauthn.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/webgl.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/webgl2.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/webhid.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/webm.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/webp.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/websockets.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/webusb.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/webvr.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/webvtt.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/webworkers.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/webxr.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/will-change.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/woff.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/woff2.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/word-break.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/wordwrap.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/x-doc-messaging.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/x-frame-options.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/xhr2.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/xhtml.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/xhtmlsmil.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/features/xml-serializer.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AD.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AE.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AF.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AG.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AI.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AL.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AM.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AN.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AO.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AR.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AS.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AT.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AU.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AW.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AX.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/AZ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BA.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BB.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BD.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BE.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BF.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BG.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BH.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BI.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BJ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BM.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BN.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BO.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BR.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BS.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BT.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BW.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BY.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/BZ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CA.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CD.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CF.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CG.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CH.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CI.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CK.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CL.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CM.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CN.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CO.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CR.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CU.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CV.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CX.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CY.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/CZ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/DE.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/DJ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/DK.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/DM.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/DO.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/DZ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/EC.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/EE.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/EG.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/ER.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/ES.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/ET.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/FI.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/FJ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/FK.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/FM.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/FO.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/FR.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GA.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GB.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GD.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GE.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GF.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GG.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GH.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GI.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GL.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GM.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GN.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GP.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GQ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GR.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GT.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GU.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GW.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/GY.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/HK.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/HN.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/HR.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/HT.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/HU.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/ID.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/IE.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/IL.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/IM.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/IN.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/IQ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/IR.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/IS.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/IT.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/JE.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/JM.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/JO.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/JP.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/KE.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/KG.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/KH.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/KI.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/KM.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/KN.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/KP.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/KR.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/KW.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/KY.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/KZ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/LA.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/LB.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/LC.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/LI.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/LK.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/LR.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/LS.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/LT.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/LU.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/LV.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/LY.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MA.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MC.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MD.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/ME.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MG.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MH.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MK.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/ML.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MM.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MN.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MO.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MP.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MQ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MR.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MS.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MT.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MU.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MV.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MW.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MX.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MY.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/MZ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/NA.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/NC.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/NE.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/NF.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/NG.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/NI.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/NL.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/NO.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/NP.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/NR.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/NU.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/NZ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/OM.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/PA.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/PE.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/PF.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/PG.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/PH.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/PK.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/PL.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/PM.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/PN.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/PR.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/PS.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/PT.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/PW.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/PY.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/QA.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/RE.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/RO.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/RS.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/RU.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/RW.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SA.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SB.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SC.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SD.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SE.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SG.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SH.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SI.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SK.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SL.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SM.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SN.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SO.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SR.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/ST.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SV.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SY.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/SZ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/TC.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/TD.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/TG.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/TH.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/TJ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/TK.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/TL.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/TM.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/TN.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/TO.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/TR.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/TT.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/TV.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/TW.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/TZ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/UA.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/UG.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/US.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/UY.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/UZ.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/VA.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/VC.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/VE.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/VG.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/VI.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/VN.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/VU.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/WF.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/WS.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/YE.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/YT.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/ZA.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/ZM.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/ZW.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/alt-af.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/alt-an.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/alt-as.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/alt-eu.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/alt-na.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/alt-oc.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/alt-sa.js1
-rw-r--r--assets/node_modules/caniuse-lite/data/regions/alt-ww.js1
-rw-r--r--assets/node_modules/caniuse-lite/dist/lib/statuses.js14
-rw-r--r--assets/node_modules/caniuse-lite/dist/lib/supported.js14
-rw-r--r--assets/node_modules/caniuse-lite/dist/unpacker/agents.js51
-rw-r--r--assets/node_modules/caniuse-lite/dist/unpacker/browserVersions.js6
-rw-r--r--assets/node_modules/caniuse-lite/dist/unpacker/browsers.js6
-rw-r--r--assets/node_modules/caniuse-lite/dist/unpacker/feature.js58
-rw-r--r--assets/node_modules/caniuse-lite/dist/unpacker/features.js11
-rw-r--r--assets/node_modules/caniuse-lite/dist/unpacker/index.js43
-rw-r--r--assets/node_modules/caniuse-lite/dist/unpacker/region.js26
-rw-r--r--assets/node_modules/caniuse-lite/package.json27
-rw-r--r--assets/node_modules/ccount/index.js22
-rw-r--r--assets/node_modules/ccount/license22
-rw-r--r--assets/node_modules/ccount/package.json70
-rw-r--r--assets/node_modules/ccount/readme.md68
-rw-r--r--assets/node_modules/chalk/index.js228
-rw-r--r--assets/node_modules/chalk/index.js.flow93
-rw-r--r--assets/node_modules/chalk/license9
-rw-r--r--assets/node_modules/chalk/package.json71
-rw-r--r--assets/node_modules/chalk/readme.md314
-rw-r--r--assets/node_modules/chalk/templates.js128
-rw-r--r--assets/node_modules/chalk/types/index.d.ts97
-rw-r--r--assets/node_modules/character-entities-html4/index.json254
-rw-r--r--assets/node_modules/character-entities-html4/license22
-rw-r--r--assets/node_modules/character-entities-html4/package.json71
-rw-r--r--assets/node_modules/character-entities-html4/readme.md73
-rw-r--r--assets/node_modules/character-entities-legacy/index.json108
-rw-r--r--assets/node_modules/character-entities-legacy/license22
-rw-r--r--assets/node_modules/character-entities-legacy/package.json70
-rw-r--r--assets/node_modules/character-entities-legacy/readme.md74
-rw-r--r--assets/node_modules/character-entities/index.json2224
-rw-r--r--assets/node_modules/character-entities/license22
-rw-r--r--assets/node_modules/character-entities/package.json71
-rw-r--r--assets/node_modules/character-entities/readme.md72
-rw-r--r--assets/node_modules/character-reference-invalid/index.json30
-rw-r--r--assets/node_modules/character-reference-invalid/license22
-rw-r--r--assets/node_modules/character-reference-invalid/package.json74
-rw-r--r--assets/node_modules/character-reference-invalid/readme.md74
-rw-r--r--assets/node_modules/chokidar/LICENSE21
-rw-r--r--assets/node_modules/chokidar/README.md300
-rw-r--r--assets/node_modules/chokidar/index.js936
-rw-r--r--assets/node_modules/chokidar/lib/constants.js60
-rw-r--r--assets/node_modules/chokidar/lib/fsevents-handler.js516
-rw-r--r--assets/node_modules/chokidar/lib/nodefs-handler.js637
-rw-r--r--assets/node_modules/chokidar/package.json128
-rw-r--r--assets/node_modules/chokidar/types/index.d.ts187
-rw-r--r--assets/node_modules/clone-regexp/index.d.ts77
-rw-r--r--assets/node_modules/clone-regexp/index.js29
-rw-r--r--assets/node_modules/clone-regexp/license9
-rw-r--r--assets/node_modules/clone-regexp/package.json41
-rw-r--r--assets/node_modules/clone-regexp/readme.md58
-rw-r--r--assets/node_modules/collapse-white-space/index.js8
-rw-r--r--assets/node_modules/collapse-white-space/license22
-rw-r--r--assets/node_modules/collapse-white-space/package.json70
-rw-r--r--assets/node_modules/collapse-white-space/readme.md58
-rw-r--r--assets/node_modules/color-convert/CHANGELOG.md54
-rw-r--r--assets/node_modules/color-convert/LICENSE21
-rw-r--r--assets/node_modules/color-convert/README.md68
-rw-r--r--assets/node_modules/color-convert/conversions.js868
-rw-r--r--assets/node_modules/color-convert/index.js78
-rw-r--r--assets/node_modules/color-convert/package.json46
-rw-r--r--assets/node_modules/color-convert/route.js97
-rw-r--r--assets/node_modules/color-name/.eslintrc.json43
-rw-r--r--assets/node_modules/color-name/.npmignore107
-rw-r--r--assets/node_modules/color-name/LICENSE8
-rw-r--r--assets/node_modules/color-name/README.md11
-rw-r--r--assets/node_modules/color-name/index.js152
-rw-r--r--assets/node_modules/color-name/package.json25
-rw-r--r--assets/node_modules/color-name/test.js7
-rw-r--r--assets/node_modules/concat-map/.travis.yml4
-rw-r--r--assets/node_modules/concat-map/LICENSE18
-rw-r--r--assets/node_modules/concat-map/README.markdown62
-rw-r--r--assets/node_modules/concat-map/example/map.js6
-rw-r--r--assets/node_modules/concat-map/index.js13
-rw-r--r--assets/node_modules/concat-map/package.json43
-rw-r--r--assets/node_modules/concat-map/test/map.js39
-rw-r--r--assets/node_modules/convert-source-map/LICENSE23
-rw-r--r--assets/node_modules/convert-source-map/README.md125
-rw-r--r--assets/node_modules/convert-source-map/index.js136
-rw-r--r--assets/node_modules/convert-source-map/package.json44
-rw-r--r--assets/node_modules/cosmiconfig/CHANGELOG.md196
-rw-r--r--assets/node_modules/cosmiconfig/LICENSE22
-rw-r--r--assets/node_modules/cosmiconfig/README.md576
-rw-r--r--assets/node_modules/cosmiconfig/dist/Explorer.d.ts14
-rw-r--r--assets/node_modules/cosmiconfig/dist/Explorer.d.ts.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/Explorer.js141
-rw-r--r--assets/node_modules/cosmiconfig/dist/Explorer.js.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/ExplorerBase.d.ts21
-rw-r--r--assets/node_modules/cosmiconfig/dist/ExplorerBase.d.ts.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/ExplorerBase.js142
-rw-r--r--assets/node_modules/cosmiconfig/dist/ExplorerBase.js.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/ExplorerSync.d.ts14
-rw-r--r--assets/node_modules/cosmiconfig/dist/ExplorerSync.d.ts.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/ExplorerSync.js118
-rw-r--r--assets/node_modules/cosmiconfig/dist/ExplorerSync.js.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/cacheWrapper.d.ts5
-rw-r--r--assets/node_modules/cosmiconfig/dist/cacheWrapper.d.ts.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/cacheWrapper.js32
-rw-r--r--assets/node_modules/cosmiconfig/dist/cacheWrapper.js.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/getDirectory.d.ts4
-rw-r--r--assets/node_modules/cosmiconfig/dist/getDirectory.d.ts.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/getDirectory.js38
-rw-r--r--assets/node_modules/cosmiconfig/dist/getDirectory.js.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/getPropertyByPath.d.ts5
-rw-r--r--assets/node_modules/cosmiconfig/dist/getPropertyByPath.d.ts.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/getPropertyByPath.js28
-rw-r--r--assets/node_modules/cosmiconfig/dist/getPropertyByPath.js.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/index.d.ts44
-rw-r--r--assets/node_modules/cosmiconfig/dist/index.d.ts.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/index.js80
-rw-r--r--assets/node_modules/cosmiconfig/dist/index.js.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/loaders.d.ts4
-rw-r--r--assets/node_modules/cosmiconfig/dist/loaders.d.ts.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/loaders.js60
-rw-r--r--assets/node_modules/cosmiconfig/dist/loaders.js.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/readFile.d.ts7
-rw-r--r--assets/node_modules/cosmiconfig/dist/readFile.d.ts.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/readFile.js56
-rw-r--r--assets/node_modules/cosmiconfig/dist/readFile.js.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/types.d.ts20
-rw-r--r--assets/node_modules/cosmiconfig/dist/types.d.ts.map1
-rw-r--r--assets/node_modules/cosmiconfig/dist/types.js2
-rw-r--r--assets/node_modules/cosmiconfig/dist/types.js.map1
-rw-r--r--assets/node_modules/cosmiconfig/package.json148
-rw-r--r--assets/node_modules/cssesc/LICENSE-MIT.txt20
-rw-r--r--assets/node_modules/cssesc/README.md201
-rwxr-xr-xassets/node_modules/cssesc/bin/cssesc116
-rw-r--r--assets/node_modules/cssesc/cssesc.js110
-rw-r--r--assets/node_modules/cssesc/man/cssesc.170
-rw-r--r--assets/node_modules/cssesc/package.json51
-rw-r--r--assets/node_modules/debug/CHANGELOG.md395
-rw-r--r--assets/node_modules/debug/LICENSE19
-rw-r--r--assets/node_modules/debug/README.md455
-rw-r--r--assets/node_modules/debug/dist/debug.js912
-rw-r--r--assets/node_modules/debug/package.json63
-rw-r--r--assets/node_modules/debug/src/browser.js264
-rw-r--r--assets/node_modules/debug/src/common.js266
-rw-r--r--assets/node_modules/debug/src/index.js10
-rw-r--r--assets/node_modules/debug/src/node.js257
-rw-r--r--assets/node_modules/decamelize-keys/index.js19
-rw-r--r--assets/node_modules/decamelize-keys/license21
-rw-r--r--assets/node_modules/decamelize-keys/package.json62
-rw-r--r--assets/node_modules/decamelize-keys/readme.md69
-rw-r--r--assets/node_modules/decamelize/index.js13
-rw-r--r--assets/node_modules/decamelize/license21
-rw-r--r--assets/node_modules/decamelize/package.json38
-rw-r--r--assets/node_modules/decamelize/readme.md48
-rw-r--r--assets/node_modules/dir-glob/index.js75
-rw-r--r--assets/node_modules/dir-glob/license9
-rw-r--r--assets/node_modules/dir-glob/package.json38
-rw-r--r--assets/node_modules/dir-glob/readme.md76
-rw-r--r--assets/node_modules/dom-serializer/LICENSE11
-rw-r--r--assets/node_modules/dom-serializer/README.md1
-rw-r--r--assets/node_modules/dom-serializer/foreignNames.json102
-rw-r--r--assets/node_modules/dom-serializer/index.d.ts17
-rw-r--r--assets/node_modules/dom-serializer/index.js183
-rw-r--r--assets/node_modules/dom-serializer/node_modules/domelementtype/LICENSE11
-rw-r--r--assets/node_modules/dom-serializer/node_modules/domelementtype/README.md1
-rw-r--r--assets/node_modules/dom-serializer/node_modules/domelementtype/lib/index.d.ts28
-rw-r--r--assets/node_modules/dom-serializer/node_modules/domelementtype/lib/index.d.ts.map1
-rw-r--r--assets/node_modules/dom-serializer/node_modules/domelementtype/lib/index.js22
-rw-r--r--assets/node_modules/dom-serializer/node_modules/domelementtype/package.json38
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/LICENSE11
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/README.md33
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/decode.d.ts7
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/decode.d.ts.map1
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/decode.js54
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.d.ts2
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.d.ts.map1
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js25
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/encode.d.ts4
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/encode.d.ts.map1
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/encode.js67
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/index.d.ts6
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/index.d.ts.map1
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/index.js33
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/maps/decode.json1
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/maps/entities.json1
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/maps/legacy.json1
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/maps/xml.json1
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode.d.ts7
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode.d.ts.map1
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode.js54
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode_codepoint.d.ts2
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode_codepoint.d.ts.map1
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode_codepoint.js25
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/src/encode.d.ts4
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/src/encode.d.ts.map1
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/src/encode.js67
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/src/index.d.ts6
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/src/index.d.ts.map1
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/lib/src/index.js36
-rw-r--r--assets/node_modules/dom-serializer/node_modules/entities/package.json66
-rw-r--r--assets/node_modules/dom-serializer/package.json40
-rw-r--r--assets/node_modules/domelementtype/LICENSE11
-rw-r--r--assets/node_modules/domelementtype/index.js15
-rw-r--r--assets/node_modules/domelementtype/package.json16
-rw-r--r--assets/node_modules/domelementtype/readme.md1
-rw-r--r--assets/node_modules/domhandler/.travis.yml6
-rw-r--r--assets/node_modules/domhandler/LICENSE11
-rw-r--r--assets/node_modules/domhandler/index.js217
-rw-r--r--assets/node_modules/domhandler/lib/element.js20
-rw-r--r--assets/node_modules/domhandler/lib/node.js44
-rw-r--r--assets/node_modules/domhandler/package.json41
-rw-r--r--assets/node_modules/domhandler/readme.md116
-rw-r--r--assets/node_modules/domhandler/test/cases/01-basic.json57
-rw-r--r--assets/node_modules/domhandler/test/cases/02-single_tag_1.json21
-rw-r--r--assets/node_modules/domhandler/test/cases/03-single_tag_2.json21
-rw-r--r--assets/node_modules/domhandler/test/cases/04-unescaped_in_script.json27
-rw-r--r--assets/node_modules/domhandler/test/cases/05-tags_in_comment.json18
-rw-r--r--assets/node_modules/domhandler/test/cases/06-comment_in_script.json18
-rw-r--r--assets/node_modules/domhandler/test/cases/07-unescaped_in_style.json20
-rw-r--r--assets/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json20
-rw-r--r--assets/node_modules/domhandler/test/cases/09-unquoted_attrib.json20
-rw-r--r--assets/node_modules/domhandler/test/cases/10-singular_attribute.json15
-rw-r--r--assets/node_modules/domhandler/test/cases/11-text_outside_tags.json40
-rw-r--r--assets/node_modules/domhandler/test/cases/12-text_only.json11
-rw-r--r--assets/node_modules/domhandler/test/cases/13-comment_in_text.json19
-rw-r--r--assets/node_modules/domhandler/test/cases/14-comment_in_text_in_script.json18
-rw-r--r--assets/node_modules/domhandler/test/cases/15-non-verbose.json22
-rw-r--r--assets/node_modules/domhandler/test/cases/16-normalize_whitespace.json47
-rw-r--r--assets/node_modules/domhandler/test/cases/17-xml_namespace.json18
-rw-r--r--assets/node_modules/domhandler/test/cases/18-enforce_empty_tags.json16
-rw-r--r--assets/node_modules/domhandler/test/cases/19-ignore_empty_tags.json20
-rw-r--r--assets/node_modules/domhandler/test/cases/20-template_script_tags.json20
-rw-r--r--assets/node_modules/domhandler/test/cases/21-conditional_comments.json15
-rw-r--r--assets/node_modules/domhandler/test/cases/22-lowercase_tags.json41
-rw-r--r--assets/node_modules/domhandler/test/cases/23-dom-lvl1.json131
-rw-r--r--assets/node_modules/domhandler/test/cases/24-with-start-indices.json85
-rw-r--r--assets/node_modules/domhandler/test/cases/25-with-end-indices.json86
-rw-r--r--assets/node_modules/domhandler/test/tests.js60
-rw-r--r--assets/node_modules/domutils/.travis.yml5
-rw-r--r--assets/node_modules/domutils/LICENSE11
-rw-r--r--assets/node_modules/domutils/index.js14
-rw-r--r--assets/node_modules/domutils/lib/helpers.js141
-rw-r--r--assets/node_modules/domutils/lib/legacy.js87
-rw-r--r--assets/node_modules/domutils/lib/manipulation.js77
-rw-r--r--assets/node_modules/domutils/lib/querying.js95
-rw-r--r--assets/node_modules/domutils/lib/stringify.js23
-rw-r--r--assets/node_modules/domutils/lib/traversal.js24
-rw-r--r--assets/node_modules/domutils/package.json47
-rw-r--r--assets/node_modules/domutils/readme.md3
-rw-r--r--assets/node_modules/domutils/test/fixture.js6
-rw-r--r--assets/node_modules/domutils/test/tests/helpers.js89
-rw-r--r--assets/node_modules/domutils/test/tests/legacy.js119
-rw-r--r--assets/node_modules/domutils/test/tests/traversal.js17
-rw-r--r--assets/node_modules/domutils/test/utils.js9
-rw-r--r--assets/node_modules/dot-prop/index.js123
-rw-r--r--assets/node_modules/dot-prop/license21
-rw-r--r--assets/node_modules/dot-prop/package.json48
-rw-r--r--assets/node_modules/dot-prop/readme.md103
-rw-r--r--assets/node_modules/electron-to-chromium/CHANGELOG.md14
-rw-r--r--assets/node_modules/electron-to-chromium/LICENSE5
-rw-r--r--assets/node_modules/electron-to-chromium/README.md180
-rw-r--r--assets/node_modules/electron-to-chromium/chromium-versions.js28
-rw-r--r--assets/node_modules/electron-to-chromium/full-chromium-versions.js724
-rw-r--r--assets/node_modules/electron-to-chromium/full-versions.js530
-rw-r--r--assets/node_modules/electron-to-chromium/index.js36
-rw-r--r--assets/node_modules/electron-to-chromium/package.json38
-rw-r--r--assets/node_modules/electron-to-chromium/versions.js42
-rw-r--r--assets/node_modules/emoji-regex/LICENSE-MIT.txt20
-rw-r--r--assets/node_modules/emoji-regex/README.md73
-rw-r--r--assets/node_modules/emoji-regex/es2015/index.js6
-rw-r--r--assets/node_modules/emoji-regex/es2015/text.js6
-rw-r--r--assets/node_modules/emoji-regex/index.d.ts23
-rw-r--r--assets/node_modules/emoji-regex/index.js6
-rw-r--r--assets/node_modules/emoji-regex/package.json50
-rw-r--r--assets/node_modules/emoji-regex/text.js6
-rw-r--r--assets/node_modules/entities/.travis.yml5
-rw-r--r--assets/node_modules/entities/LICENSE11
-rw-r--r--assets/node_modules/entities/index.js26
-rw-r--r--assets/node_modules/entities/lib/decode.js70
-rw-r--r--assets/node_modules/entities/lib/decode_codepoint.js25
-rw-r--r--assets/node_modules/entities/lib/encode.js82
-rw-r--r--assets/node_modules/entities/maps/decode.json1
-rw-r--r--assets/node_modules/entities/maps/entities.json1
-rw-r--r--assets/node_modules/entities/maps/legacy.json1
-rw-r--r--assets/node_modules/entities/maps/xml.json1
-rw-r--r--assets/node_modules/entities/package.json57
-rw-r--r--assets/node_modules/entities/readme.md27
-rw-r--r--assets/node_modules/entities/test/mocha.opts2
-rw-r--r--assets/node_modules/entities/test/test.js170
-rw-r--r--assets/node_modules/error-ex/LICENSE21
-rw-r--r--assets/node_modules/error-ex/README.md144
-rw-r--r--assets/node_modules/error-ex/index.js141
-rw-r--r--assets/node_modules/error-ex/package.json46
-rw-r--r--assets/node_modules/escape-string-regexp/index.js11
-rw-r--r--assets/node_modules/escape-string-regexp/license21
-rw-r--r--assets/node_modules/escape-string-regexp/package.json41
-rw-r--r--assets/node_modules/escape-string-regexp/readme.md27
-rw-r--r--assets/node_modules/esutils/LICENSE.BSD19
-rw-r--r--assets/node_modules/esutils/README.md174
-rw-r--r--assets/node_modules/esutils/lib/ast.js144
-rw-r--r--assets/node_modules/esutils/lib/code.js135
-rw-r--r--assets/node_modules/esutils/lib/keyword.js165
-rw-r--r--assets/node_modules/esutils/lib/utils.js33
-rw-r--r--assets/node_modules/esutils/package.json44
-rw-r--r--assets/node_modules/execall/index.d.ts36
-rw-r--r--assets/node_modules/execall/index.js24
-rw-r--r--assets/node_modules/execall/license9
-rw-r--r--assets/node_modules/execall/package.json48
-rw-r--r--assets/node_modules/execall/readme.md62
-rw-r--r--assets/node_modules/extend/.editorconfig20
-rw-r--r--assets/node_modules/extend/.eslintrc17
-rw-r--r--assets/node_modules/extend/.jscs.json175
-rw-r--r--assets/node_modules/extend/.travis.yml230
-rw-r--r--assets/node_modules/extend/CHANGELOG.md83
-rw-r--r--assets/node_modules/extend/LICENSE23
-rw-r--r--assets/node_modules/extend/README.md81
-rw-r--r--assets/node_modules/extend/component.json32
-rw-r--r--assets/node_modules/extend/index.js117
-rw-r--r--assets/node_modules/extend/package.json42
-rw-r--r--assets/node_modules/fast-deep-equal/LICENSE21
-rw-r--r--assets/node_modules/fast-deep-equal/README.md96
-rw-r--r--assets/node_modules/fast-deep-equal/es6/index.d.ts2
-rw-r--r--assets/node_modules/fast-deep-equal/es6/index.js72
-rw-r--r--assets/node_modules/fast-deep-equal/es6/react.d.ts2
-rw-r--r--assets/node_modules/fast-deep-equal/es6/react.js79
-rw-r--r--assets/node_modules/fast-deep-equal/index.d.ts4
-rw-r--r--assets/node_modules/fast-deep-equal/index.js46
-rw-r--r--assets/node_modules/fast-deep-equal/package.json61
-rw-r--r--assets/node_modules/fast-deep-equal/react.d.ts2
-rw-r--r--assets/node_modules/fast-deep-equal/react.js53
-rw-r--r--assets/node_modules/fast-glob/LICENSE21
-rw-r--r--assets/node_modules/fast-glob/README.md793
-rw-r--r--assets/node_modules/fast-glob/out/index.d.ts27
-rw-r--r--assets/node_modules/fast-glob/out/index.js73
-rw-r--r--assets/node_modules/fast-glob/out/managers/tasks.d.ts16
-rw-r--r--assets/node_modules/fast-glob/out/managers/tasks.js64
-rw-r--r--assets/node_modules/fast-glob/out/providers/async.d.ts11
-rw-r--r--assets/node_modules/fast-glob/out/providers/async.js28
-rw-r--r--assets/node_modules/fast-glob/out/providers/filters/deep.d.ts16
-rw-r--r--assets/node_modules/fast-glob/out/providers/filters/deep.js53
-rw-r--r--assets/node_modules/fast-glob/out/providers/filters/entry.d.ts16
-rw-r--r--assets/node_modules/fast-glob/out/providers/filters/entry.js54
-rw-r--r--assets/node_modules/fast-glob/out/providers/filters/error.d.ts8
-rw-r--r--assets/node_modules/fast-glob/out/providers/filters/error.js15
-rw-r--r--assets/node_modules/fast-glob/out/providers/provider.d.ts19
-rw-r--r--assets/node_modules/fast-glob/out/providers/provider.js48
-rw-r--r--assets/node_modules/fast-glob/out/providers/stream.d.ts11
-rw-r--r--assets/node_modules/fast-glob/out/providers/stream.js31
-rw-r--r--assets/node_modules/fast-glob/out/providers/sync.d.ts9
-rw-r--r--assets/node_modules/fast-glob/out/providers/sync.js23
-rw-r--r--assets/node_modules/fast-glob/out/providers/transformers/entry.d.ts8
-rw-r--r--assets/node_modules/fast-glob/out/providers/transformers/entry.js26
-rw-r--r--assets/node_modules/fast-glob/out/readers/reader.d.ts15
-rw-r--r--assets/node_modules/fast-glob/out/readers/reader.js33
-rw-r--r--assets/node_modules/fast-glob/out/readers/stream.d.ts14
-rw-r--r--assets/node_modules/fast-glob/out/readers/stream.js55
-rw-r--r--assets/node_modules/fast-glob/out/readers/sync.d.ts12
-rw-r--r--assets/node_modules/fast-glob/out/readers/sync.js43
-rw-r--r--assets/node_modules/fast-glob/out/settings.d.ts164
-rw-r--r--assets/node_modules/fast-glob/out/settings.js52
-rw-r--r--assets/node_modules/fast-glob/out/types/index.d.ts31
-rw-r--r--assets/node_modules/fast-glob/out/types/index.js2
-rw-r--r--assets/node_modules/fast-glob/out/utils/array.d.ts1
-rw-r--r--assets/node_modules/fast-glob/out/utils/array.js6
-rw-r--r--assets/node_modules/fast-glob/out/utils/errno.d.ts2
-rw-r--r--assets/node_modules/fast-glob/out/utils/errno.js6
-rw-r--r--assets/node_modules/fast-glob/out/utils/fs.d.ts4
-rw-r--r--assets/node_modules/fast-glob/out/utils/fs.js18
-rw-r--r--assets/node_modules/fast-glob/out/utils/index.d.ts7
-rw-r--r--assets/node_modules/fast-glob/out/utils/index.js14
-rw-r--r--assets/node_modules/fast-glob/out/utils/path.d.ts7
-rw-r--r--assets/node_modules/fast-glob/out/utils/path.js19
-rw-r--r--assets/node_modules/fast-glob/out/utils/pattern.d.ts24
-rw-r--r--assets/node_modules/fast-glob/out/utils/pattern.js112
-rw-r--r--assets/node_modules/fast-glob/out/utils/stream.d.ts3
-rw-r--r--assets/node_modules/fast-glob/out/utils/stream.js16
-rw-r--r--assets/node_modules/fast-glob/package.json78
-rw-r--r--assets/node_modules/fast-json-stable-stringify/.eslintrc.yml26
-rw-r--r--assets/node_modules/fast-json-stable-stringify/.github/FUNDING.yml1
-rw-r--r--assets/node_modules/fast-json-stable-stringify/.travis.yml8
-rw-r--r--assets/node_modules/fast-json-stable-stringify/LICENSE21
-rw-r--r--assets/node_modules/fast-json-stable-stringify/README.md131
-rw-r--r--assets/node_modules/fast-json-stable-stringify/benchmark/index.js31
-rw-r--r--assets/node_modules/fast-json-stable-stringify/benchmark/test.json137
-rw-r--r--assets/node_modules/fast-json-stable-stringify/example/key_cmp.js7
-rw-r--r--assets/node_modules/fast-json-stable-stringify/example/nested.js3
-rw-r--r--assets/node_modules/fast-json-stable-stringify/example/str.js3
-rw-r--r--assets/node_modules/fast-json-stable-stringify/example/value_cmp.js7
-rw-r--r--assets/node_modules/fast-json-stable-stringify/index.d.ts4
-rw-r--r--assets/node_modules/fast-json-stable-stringify/index.js59
-rw-r--r--assets/node_modules/fast-json-stable-stringify/package.json52
-rw-r--r--assets/node_modules/fast-json-stable-stringify/test/cmp.js13
-rw-r--r--assets/node_modules/fast-json-stable-stringify/test/nested.js44
-rw-r--r--assets/node_modules/fast-json-stable-stringify/test/str.js46
-rw-r--r--assets/node_modules/fast-json-stable-stringify/test/to-json.js22
-rw-r--r--assets/node_modules/fastq/.travis.yml10
-rw-r--r--assets/node_modules/fastq/LICENSE13
-rw-r--r--assets/node_modules/fastq/README.md183
-rw-r--r--assets/node_modules/fastq/bench.js58
-rw-r--r--assets/node_modules/fastq/example.js12
-rw-r--r--assets/node_modules/fastq/index.d.ts24
-rw-r--r--assets/node_modules/fastq/package.json43
-rw-r--r--assets/node_modules/fastq/queue.js173
-rw-r--r--assets/node_modules/fastq/test/example.ts37
-rw-r--r--assets/node_modules/fastq/test/test.js482
-rw-r--r--assets/node_modules/fastq/test/tsconfig.json11
-rw-r--r--assets/node_modules/file-entry-cache/LICENSE22
-rw-r--r--assets/node_modules/file-entry-cache/README.md112
-rw-r--r--assets/node_modules/file-entry-cache/cache.js286
-rw-r--r--assets/node_modules/file-entry-cache/changelog.md141
-rw-r--r--assets/node_modules/file-entry-cache/package.json84
-rw-r--r--assets/node_modules/fill-range/LICENSE21
-rw-r--r--assets/node_modules/fill-range/README.md237
-rw-r--r--assets/node_modules/fill-range/index.js249
-rw-r--r--assets/node_modules/fill-range/package.json69
-rw-r--r--assets/node_modules/find-up/index.d.ts137
-rw-r--r--assets/node_modules/find-up/index.js89
-rw-r--r--assets/node_modules/find-up/license9
-rw-r--r--assets/node_modules/find-up/package.json53
-rw-r--r--assets/node_modules/find-up/readme.md156
-rw-r--r--assets/node_modules/flat-cache/LICENSE22
-rw-r--r--assets/node_modules/flat-cache/README.md73
-rw-r--r--assets/node_modules/flat-cache/cache.js197
-rw-r--r--assets/node_modules/flat-cache/changelog.md300
-rw-r--r--assets/node_modules/flat-cache/del.js13
l---------assets/node_modules/flat-cache/node_modules/.bin/rimraf1
-rw-r--r--assets/node_modules/flat-cache/package.json87
-rw-r--r--assets/node_modules/flat-cache/utils.js39
-rw-r--r--assets/node_modules/flatted/.github/FUNDING.yml8
-rw-r--r--assets/node_modules/flatted/LICENSE15
-rw-r--r--assets/node_modules/flatted/README.md52
-rw-r--r--assets/node_modules/flatted/SPECS.md94
-rw-r--r--assets/node_modules/flatted/cjs/index.js116
-rw-r--r--assets/node_modules/flatted/esm/index.js118
-rw-r--r--assets/node_modules/flatted/index.js115
-rw-r--r--assets/node_modules/flatted/min.js2
-rw-r--r--assets/node_modules/flatted/package.json44
-rw-r--r--assets/node_modules/flatted/types.d.ts19
-rw-r--r--assets/node_modules/fs.realpath/LICENSE43
-rw-r--r--assets/node_modules/fs.realpath/README.md33
-rw-r--r--assets/node_modules/fs.realpath/index.js66
-rw-r--r--assets/node_modules/fs.realpath/old.js303
-rw-r--r--assets/node_modules/fs.realpath/package.json26
-rw-r--r--assets/node_modules/gensync/LICENSE7
-rw-r--r--assets/node_modules/gensync/README.md196
-rw-r--r--assets/node_modules/gensync/index.js366
-rw-r--r--assets/node_modules/gensync/index.js.flow32
-rw-r--r--assets/node_modules/gensync/package.json32
-rw-r--r--assets/node_modules/gensync/test/.babelrc5
-rw-r--r--assets/node_modules/gensync/test/index.test.js475
-rw-r--r--assets/node_modules/get-stdin/index.d.ts33
-rw-r--r--assets/node_modules/get-stdin/index.js52
-rw-r--r--assets/node_modules/get-stdin/license9
-rw-r--r--assets/node_modules/get-stdin/package.json39
-rw-r--r--assets/node_modules/get-stdin/readme.md55
-rw-r--r--assets/node_modules/glob-parent/LICENSE15
-rw-r--r--assets/node_modules/glob-parent/README.md137
-rw-r--r--assets/node_modules/glob-parent/index.js41
-rw-r--r--assets/node_modules/glob-parent/package.json48
-rw-r--r--assets/node_modules/glob/LICENSE21
-rw-r--r--assets/node_modules/glob/README.md375
-rw-r--r--assets/node_modules/glob/changelog.md67
-rw-r--r--assets/node_modules/glob/common.js240
-rw-r--r--assets/node_modules/glob/glob.js790
-rw-r--r--assets/node_modules/glob/package.json46
-rw-r--r--assets/node_modules/glob/sync.js486
-rw-r--r--assets/node_modules/global-modules/LICENSE21
-rw-r--r--assets/node_modules/global-modules/README.md87
-rw-r--r--assets/node_modules/global-modules/index.js29
-rw-r--r--assets/node_modules/global-modules/package.json66
-rw-r--r--assets/node_modules/global-prefix/LICENSE21
-rw-r--r--assets/node_modules/global-prefix/README.md92
-rw-r--r--assets/node_modules/global-prefix/index.js85
l---------assets/node_modules/global-prefix/node_modules/.bin/which1
-rw-r--r--assets/node_modules/global-prefix/package.json50
-rw-r--r--assets/node_modules/globals/globals.json1563
-rw-r--r--assets/node_modules/globals/index.js2
-rw-r--r--assets/node_modules/globals/license9
-rw-r--r--assets/node_modules/globals/package.json41
-rw-r--r--assets/node_modules/globals/readme.md41
-rw-r--r--assets/node_modules/globby/gitignore.js117
-rw-r--r--assets/node_modules/globby/index.d.ts176
-rw-r--r--assets/node_modules/globby/index.js177
-rw-r--r--assets/node_modules/globby/license9
-rw-r--r--assets/node_modules/globby/package.json82
-rw-r--r--assets/node_modules/globby/readme.md170
-rw-r--r--assets/node_modules/globby/stream-utils.js46
-rw-r--r--assets/node_modules/globjoin/CHANGELOG.md14
-rw-r--r--assets/node_modules/globjoin/LICENSE22
-rw-r--r--assets/node_modules/globjoin/README.md54
-rw-r--r--assets/node_modules/globjoin/index.js43
-rw-r--r--assets/node_modules/globjoin/package.json37
-rw-r--r--assets/node_modules/gonzales-pe/CHANGELOG.md453
-rw-r--r--assets/node_modules/gonzales-pe/MIT-LICENSE.txt19
-rw-r--r--assets/node_modules/gonzales-pe/README.md808
-rwxr-xr-xassets/node_modules/gonzales-pe/bin/gonzales.js116
-rw-r--r--assets/node_modules/gonzales-pe/lib/gonzales.js22435
-rw-r--r--assets/node_modules/gonzales-pe/package.json56
-rw-r--r--assets/node_modules/hard-rejection/index.d.ts15
-rw-r--r--assets/node_modules/hard-rejection/index.js25
-rw-r--r--assets/node_modules/hard-rejection/license9
-rw-r--r--assets/node_modules/hard-rejection/package.json47
-rw-r--r--assets/node_modules/hard-rejection/readme.md77
-rw-r--r--assets/node_modules/hard-rejection/register.js2
-rw-r--r--assets/node_modules/has-flag/index.js8
-rw-r--r--assets/node_modules/has-flag/license9
-rw-r--r--assets/node_modules/has-flag/package.json44
-rw-r--r--assets/node_modules/has-flag/readme.md70
-rw-r--r--assets/node_modules/hosted-git-info/CHANGELOG.md115
-rw-r--r--assets/node_modules/hosted-git-info/LICENSE13
-rw-r--r--assets/node_modules/hosted-git-info/README.md133
-rw-r--r--assets/node_modules/hosted-git-info/git-host-info.js79
-rw-r--r--assets/node_modules/hosted-git-info/git-host.js156
-rw-r--r--assets/node_modules/hosted-git-info/index.js125
-rw-r--r--assets/node_modules/hosted-git-info/package.json40
-rw-r--r--assets/node_modules/html-tags/html-tags-void.json17
-rw-r--r--assets/node_modules/html-tags/html-tags-void.json.d.ts3
-rw-r--r--assets/node_modules/html-tags/html-tags.json119
-rw-r--r--assets/node_modules/html-tags/html-tags.json.d.ts3
-rw-r--r--assets/node_modules/html-tags/index.d.ts14
-rw-r--r--assets/node_modules/html-tags/index.js2
-rw-r--r--assets/node_modules/html-tags/license9
-rw-r--r--assets/node_modules/html-tags/package.json44
-rw-r--r--assets/node_modules/html-tags/readme.md38
-rw-r--r--assets/node_modules/html-tags/void.d.ts14
-rw-r--r--assets/node_modules/html-tags/void.js2
-rw-r--r--assets/node_modules/htmlparser2/LICENSE18
-rw-r--r--assets/node_modules/htmlparser2/README.md91
-rw-r--r--assets/node_modules/htmlparser2/lib/CollectingHandler.js57
-rw-r--r--assets/node_modules/htmlparser2/lib/FeedHandler.js114
-rw-r--r--assets/node_modules/htmlparser2/lib/Parser.js382
-rw-r--r--assets/node_modules/htmlparser2/lib/ProxyHandler.js27
-rw-r--r--assets/node_modules/htmlparser2/lib/Stream.js35
-rw-r--r--assets/node_modules/htmlparser2/lib/Tokenizer.js970
-rw-r--r--assets/node_modules/htmlparser2/lib/WritableStream.js25
-rw-r--r--assets/node_modules/htmlparser2/lib/index.js72
-rw-r--r--assets/node_modules/htmlparser2/package.json59
-rw-r--r--assets/node_modules/ignore/CHANGELOG.md32
-rw-r--r--assets/node_modules/ignore/LICENSE-MIT21
-rw-r--r--assets/node_modules/ignore/README.md386
-rw-r--r--assets/node_modules/ignore/index.d.ts63
-rw-r--r--assets/node_modules/ignore/index.js568
-rw-r--r--assets/node_modules/ignore/legacy.js476
-rw-r--r--assets/node_modules/ignore/package.json70
-rw-r--r--assets/node_modules/import-fresh/index.d.ts28
-rw-r--r--assets/node_modules/import-fresh/index.js32
-rw-r--r--assets/node_modules/import-fresh/license9
-rw-r--r--assets/node_modules/import-fresh/node_modules/resolve-from/index.js47
-rw-r--r--assets/node_modules/import-fresh/node_modules/resolve-from/license9
-rw-r--r--assets/node_modules/import-fresh/node_modules/resolve-from/package.json34
-rw-r--r--assets/node_modules/import-fresh/node_modules/resolve-from/readme.md72
-rw-r--r--assets/node_modules/import-fresh/package.json42
-rw-r--r--assets/node_modules/import-fresh/readme.md52
-rw-r--r--assets/node_modules/import-lazy/index.d.ts26
-rw-r--r--assets/node_modules/import-lazy/index.js27
-rw-r--r--assets/node_modules/import-lazy/license9
-rw-r--r--assets/node_modules/import-lazy/package.json40
-rw-r--r--assets/node_modules/import-lazy/readme.md57
-rw-r--r--assets/node_modules/imurmurhash/README.md122
-rw-r--r--assets/node_modules/imurmurhash/imurmurhash.js138
-rw-r--r--assets/node_modules/imurmurhash/imurmurhash.min.js12
-rw-r--r--assets/node_modules/imurmurhash/package.json40
-rw-r--r--assets/node_modules/indent-string/index.d.ts42
-rw-r--r--assets/node_modules/indent-string/index.js35
-rw-r--r--assets/node_modules/indent-string/license9
-rw-r--r--assets/node_modules/indent-string/package.json37
-rw-r--r--assets/node_modules/indent-string/readme.md70
-rw-r--r--assets/node_modules/indexes-of/.npmignore1
-rw-r--r--assets/node_modules/indexes-of/LICENSE22
-rw-r--r--assets/node_modules/indexes-of/README.md24
-rw-r--r--assets/node_modules/indexes-of/index.js6
-rw-r--r--assets/node_modules/indexes-of/package.json18
-rw-r--r--assets/node_modules/indexes-of/test.js38
-rw-r--r--assets/node_modules/inflight/LICENSE15
-rw-r--r--assets/node_modules/inflight/README.md37
-rw-r--r--assets/node_modules/inflight/inflight.js54
-rw-r--r--assets/node_modules/inflight/package.json29
-rw-r--r--assets/node_modules/inherits/LICENSE16
-rw-r--r--assets/node_modules/inherits/README.md42
-rw-r--r--assets/node_modules/inherits/inherits.js9
-rw-r--r--assets/node_modules/inherits/inherits_browser.js27
-rw-r--r--assets/node_modules/inherits/package.json29
-rw-r--r--assets/node_modules/ini/LICENSE15
-rw-r--r--assets/node_modules/ini/README.md102
-rw-r--r--assets/node_modules/ini/ini.js194
-rw-r--r--assets/node_modules/ini/package.json30
-rw-r--r--assets/node_modules/is-alphabetical/index.js14
-rw-r--r--assets/node_modules/is-alphabetical/license22
-rw-r--r--assets/node_modules/is-alphabetical/package.json75
-rw-r--r--assets/node_modules/is-alphabetical/readme.md70
-rw-r--r--assets/node_modules/is-alphanumeric/index.js8
-rw-r--r--assets/node_modules/is-alphanumeric/license21
-rw-r--r--assets/node_modules/is-alphanumeric/package.json41
-rw-r--r--assets/node_modules/is-alphanumeric/readme.md40
-rw-r--r--assets/node_modules/is-alphanumerical/index.js12
-rw-r--r--assets/node_modules/is-alphanumerical/license22
-rw-r--r--assets/node_modules/is-alphanumerical/package.json77
-rw-r--r--assets/node_modules/is-alphanumerical/readme.md71
-rw-r--r--assets/node_modules/is-arrayish/.editorconfig18
-rw-r--r--assets/node_modules/is-arrayish/.istanbul.yml4
-rw-r--r--assets/node_modules/is-arrayish/.npmignore5
-rw-r--r--assets/node_modules/is-arrayish/.travis.yml17
-rw-r--r--assets/node_modules/is-arrayish/LICENSE21
-rw-r--r--assets/node_modules/is-arrayish/README.md16
-rw-r--r--assets/node_modules/is-arrayish/index.js10
-rw-r--r--assets/node_modules/is-arrayish/package.json34
-rw-r--r--assets/node_modules/is-binary-path/index.d.ts17
-rw-r--r--assets/node_modules/is-binary-path/index.js7
-rw-r--r--assets/node_modules/is-binary-path/license9
-rw-r--r--assets/node_modules/is-binary-path/package.json40
-rw-r--r--assets/node_modules/is-binary-path/readme.md34
-rw-r--r--assets/node_modules/is-buffer/LICENSE21
-rw-r--r--assets/node_modules/is-buffer/README.md56
-rw-r--r--assets/node_modules/is-buffer/index.d.ts2
-rw-r--r--assets/node_modules/is-buffer/index.js11
-rw-r--r--assets/node_modules/is-buffer/package.json51
-rw-r--r--assets/node_modules/is-decimal/index.js11
-rw-r--r--assets/node_modules/is-decimal/license22
-rw-r--r--assets/node_modules/is-decimal/package.json72
-rw-r--r--assets/node_modules/is-decimal/readme.md69
-rw-r--r--assets/node_modules/is-extglob/LICENSE21
-rw-r--r--assets/node_modules/is-extglob/README.md107
-rw-r--r--assets/node_modules/is-extglob/index.js20
-rw-r--r--assets/node_modules/is-extglob/package.json69
-rw-r--r--assets/node_modules/is-fullwidth-code-point/index.js46
-rw-r--r--assets/node_modules/is-fullwidth-code-point/license21
-rw-r--r--assets/node_modules/is-fullwidth-code-point/package.json45
-rw-r--r--assets/node_modules/is-fullwidth-code-point/readme.md39
-rw-r--r--assets/node_modules/is-glob/LICENSE21
-rw-r--r--assets/node_modules/is-glob/README.md206
-rw-r--r--assets/node_modules/is-glob/index.js48
-rw-r--r--assets/node_modules/is-glob/package.json81
-rw-r--r--assets/node_modules/is-hexadecimal/index.js15
-rw-r--r--assets/node_modules/is-hexadecimal/license22
-rw-r--r--assets/node_modules/is-hexadecimal/package.json72
-rw-r--r--assets/node_modules/is-hexadecimal/readme.md70
-rw-r--r--assets/node_modules/is-number/LICENSE21
-rw-r--r--assets/node_modules/is-number/README.md187
-rw-r--r--assets/node_modules/is-number/index.js18
-rw-r--r--assets/node_modules/is-number/package.json82
-rw-r--r--assets/node_modules/is-obj/index.js5
-rw-r--r--assets/node_modules/is-obj/license21
-rw-r--r--assets/node_modules/is-obj/package.json33
-rw-r--r--assets/node_modules/is-obj/readme.md34
-rw-r--r--assets/node_modules/is-plain-obj/index.js7
-rw-r--r--assets/node_modules/is-plain-obj/license21
-rw-r--r--assets/node_modules/is-plain-obj/package.json36
-rw-r--r--assets/node_modules/is-plain-obj/readme.md35
-rw-r--r--assets/node_modules/is-regexp/index.d.ts20
-rw-r--r--assets/node_modules/is-regexp/index.js3
-rw-r--r--assets/node_modules/is-regexp/license9
-rw-r--r--assets/node_modules/is-regexp/package.json38
-rw-r--r--assets/node_modules/is-regexp/readme.md36
-rw-r--r--assets/node_modules/is-typedarray/LICENSE.md18
-rw-r--r--assets/node_modules/is-typedarray/README.md16
-rw-r--r--assets/node_modules/is-typedarray/index.js41
-rw-r--r--assets/node_modules/is-typedarray/package.json30
-rw-r--r--assets/node_modules/is-typedarray/test.js34
-rw-r--r--assets/node_modules/is-whitespace-character/index.js14
-rw-r--r--assets/node_modules/is-whitespace-character/license22
-rw-r--r--assets/node_modules/is-whitespace-character/package.json74
-rw-r--r--assets/node_modules/is-whitespace-character/readme.md74
-rw-r--r--assets/node_modules/is-word-character/index.js14
-rw-r--r--assets/node_modules/is-word-character/license22
-rw-r--r--assets/node_modules/is-word-character/package.json72
-rw-r--r--assets/node_modules/is-word-character/readme.md72
-rw-r--r--assets/node_modules/isexe/.npmignore2
-rw-r--r--assets/node_modules/isexe/LICENSE15
-rw-r--r--assets/node_modules/isexe/README.md51
-rw-r--r--assets/node_modules/isexe/index.js57
-rw-r--r--assets/node_modules/isexe/mode.js41
-rw-r--r--assets/node_modules/isexe/package.json31
-rw-r--r--assets/node_modules/isexe/test/basic.js221
-rw-r--r--assets/node_modules/isexe/windows.js42
-rw-r--r--assets/node_modules/js-tokens/CHANGELOG.md151
-rw-r--r--assets/node_modules/js-tokens/LICENSE21
-rw-r--r--assets/node_modules/js-tokens/README.md240
-rw-r--r--assets/node_modules/js-tokens/index.js23
-rw-r--r--assets/node_modules/js-tokens/package.json30
-rw-r--r--assets/node_modules/jsesc/LICENSE-MIT.txt20
-rw-r--r--assets/node_modules/jsesc/README.md421
-rwxr-xr-xassets/node_modules/jsesc/bin/jsesc148
-rw-r--r--assets/node_modules/jsesc/jsesc.js329
-rw-r--r--assets/node_modules/jsesc/man/jsesc.194
-rw-r--r--assets/node_modules/jsesc/package.json54
-rw-r--r--assets/node_modules/json-parse-better-errors/CHANGELOG.md46
-rw-r--r--assets/node_modules/json-parse-better-errors/LICENSE.md7
-rw-r--r--assets/node_modules/json-parse-better-errors/README.md46
-rw-r--r--assets/node_modules/json-parse-better-errors/index.js38
-rw-r--r--assets/node_modules/json-parse-better-errors/package.json45
-rw-r--r--assets/node_modules/json-schema-traverse/.eslintrc.yml27
-rw-r--r--assets/node_modules/json-schema-traverse/.travis.yml8
-rw-r--r--assets/node_modules/json-schema-traverse/LICENSE21
-rw-r--r--assets/node_modules/json-schema-traverse/README.md83
-rw-r--r--assets/node_modules/json-schema-traverse/index.js89
-rw-r--r--assets/node_modules/json-schema-traverse/package.json43
-rw-r--r--assets/node_modules/json-schema-traverse/spec/.eslintrc.yml6
-rw-r--r--assets/node_modules/json-schema-traverse/spec/fixtures/schema.js125
-rw-r--r--assets/node_modules/json-schema-traverse/spec/index.spec.js171
-rw-r--r--assets/node_modules/json5/CHANGELOG.md329
-rw-r--r--assets/node_modules/json5/LICENSE.md23
-rw-r--r--assets/node_modules/json5/README.md234
-rw-r--r--assets/node_modules/json5/dist/index.js1710
-rw-r--r--assets/node_modules/json5/dist/index.min.js1
-rw-r--r--assets/node_modules/json5/dist/index.min.mjs1
-rw-r--r--assets/node_modules/json5/dist/index.mjs1399
-rwxr-xr-xassets/node_modules/json5/lib/cli.js112
-rw-r--r--assets/node_modules/json5/lib/index.js9
-rw-r--r--assets/node_modules/json5/lib/parse.js1087
-rw-r--r--assets/node_modules/json5/lib/register.js13
-rw-r--r--assets/node_modules/json5/lib/require.js4
-rw-r--r--assets/node_modules/json5/lib/stringify.js261
-rw-r--r--assets/node_modules/json5/lib/unicode.js4
-rw-r--r--assets/node_modules/json5/lib/util.js35
-rw-r--r--assets/node_modules/json5/node_modules/minimist/.travis.yml8
-rw-r--r--assets/node_modules/json5/node_modules/minimist/LICENSE18
-rw-r--r--assets/node_modules/json5/node_modules/minimist/example/parse.js2
-rw-r--r--assets/node_modules/json5/node_modules/minimist/index.js236
-rw-r--r--assets/node_modules/json5/node_modules/minimist/package.json45
-rw-r--r--assets/node_modules/json5/node_modules/minimist/readme.markdown91
-rw-r--r--assets/node_modules/json5/node_modules/minimist/test/all_bool.js32
-rw-r--r--assets/node_modules/json5/node_modules/minimist/test/bool.js166
-rw-r--r--assets/node_modules/json5/node_modules/minimist/test/dash.js31
-rw-r--r--assets/node_modules/json5/node_modules/minimist/test/default_bool.js35
-rw-r--r--assets/node_modules/json5/node_modules/minimist/test/dotted.js22
-rw-r--r--assets/node_modules/json5/node_modules/minimist/test/kv_short.js16
-rw-r--r--assets/node_modules/json5/node_modules/minimist/test/long.js31
-rw-r--r--assets/node_modules/json5/node_modules/minimist/test/num.js36
-rw-r--r--assets/node_modules/json5/node_modules/minimist/test/parse.js197
-rw-r--r--assets/node_modules/json5/node_modules/minimist/test/parse_modified.js9
-rw-r--r--assets/node_modules/json5/node_modules/minimist/test/short.js67
-rw-r--r--assets/node_modules/json5/node_modules/minimist/test/stop_early.js15
-rw-r--r--assets/node_modules/json5/node_modules/minimist/test/unknown.js102
-rw-r--r--assets/node_modules/json5/node_modules/minimist/test/whitespace.js8
-rw-r--r--assets/node_modules/json5/package.json71
-rw-r--r--assets/node_modules/kind-of/CHANGELOG.md160
-rw-r--r--assets/node_modules/kind-of/LICENSE21
-rw-r--r--assets/node_modules/kind-of/README.md367
-rw-r--r--assets/node_modules/kind-of/index.js129
-rw-r--r--assets/node_modules/kind-of/package.json88
-rw-r--r--assets/node_modules/known-css-properties/LICENSE21
-rw-r--r--assets/node_modules/known-css-properties/README.md48
-rw-r--r--assets/node_modules/known-css-properties/data/all.json1170
-rw-r--r--assets/node_modules/known-css-properties/index.js1
-rw-r--r--assets/node_modules/known-css-properties/package.json56
-rw-r--r--assets/node_modules/known-css-properties/renovate.json8
-rw-r--r--assets/node_modules/leven/index.d.ts21
-rw-r--r--assets/node_modules/leven/index.js77
-rw-r--r--assets/node_modules/leven/license9
-rw-r--r--assets/node_modules/leven/package.json57
-rw-r--r--assets/node_modules/leven/readme.md50
-rw-r--r--assets/node_modules/lines-and-columns/LICENSE21
-rw-r--r--assets/node_modules/lines-and-columns/README.md29
-rw-r--r--assets/node_modules/lines-and-columns/dist/index.d.ts12
-rw-r--r--assets/node_modules/lines-and-columns/dist/index.js58
-rw-r--r--assets/node_modules/lines-and-columns/dist/index.mjs56
-rw-r--r--assets/node_modules/lines-and-columns/package.json45
-rw-r--r--assets/node_modules/locate-path/index.d.ts83
-rw-r--r--assets/node_modules/locate-path/index.js65
-rw-r--r--assets/node_modules/locate-path/license9
-rw-r--r--assets/node_modules/locate-path/package.json45
-rw-r--r--assets/node_modules/locate-path/readme.md122
-rw-r--r--assets/node_modules/lodash/LICENSE47
-rw-r--r--assets/node_modules/lodash/README.md39
-rw-r--r--assets/node_modules/lodash/_DataView.js7
-rw-r--r--assets/node_modules/lodash/_Hash.js32
-rw-r--r--assets/node_modules/lodash/_LazyWrapper.js28
-rw-r--r--assets/node_modules/lodash/_ListCache.js32
-rw-r--r--assets/node_modules/lodash/_LodashWrapper.js22
-rw-r--r--assets/node_modules/lodash/_Map.js7
-rw-r--r--assets/node_modules/lodash/_MapCache.js32
-rw-r--r--assets/node_modules/lodash/_Promise.js7
-rw-r--r--assets/node_modules/lodash/_Set.js7
-rw-r--r--assets/node_modules/lodash/_SetCache.js27
-rw-r--r--assets/node_modules/lodash/_Stack.js27
-rw-r--r--assets/node_modules/lodash/_Symbol.js6
-rw-r--r--assets/node_modules/lodash/_Uint8Array.js6
-rw-r--r--assets/node_modules/lodash/_WeakMap.js7
-rw-r--r--assets/node_modules/lodash/_apply.js21
-rw-r--r--assets/node_modules/lodash/_arrayAggregator.js22
-rw-r--r--assets/node_modules/lodash/_arrayEach.js22
-rw-r--r--assets/node_modules/lodash/_arrayEachRight.js21
-rw-r--r--assets/node_modules/lodash/_arrayEvery.js23
-rw-r--r--assets/node_modules/lodash/_arrayFilter.js25
-rw-r--r--assets/node_modules/lodash/_arrayIncludes.js17
-rw-r--r--assets/node_modules/lodash/_arrayIncludesWith.js22
-rw-r--r--assets/node_modules/lodash/_arrayLikeKeys.js49
-rw-r--r--assets/node_modules/lodash/_arrayMap.js21
-rw-r--r--assets/node_modules/lodash/_arrayPush.js20
-rw-r--r--assets/node_modules/lodash/_arrayReduce.js26
-rw-r--r--assets/node_modules/lodash/_arrayReduceRight.js24
-rw-r--r--assets/node_modules/lodash/_arraySample.js15
-rw-r--r--assets/node_modules/lodash/_arraySampleSize.js17
-rw-r--r--assets/node_modules/lodash/_arrayShuffle.js15
-rw-r--r--assets/node_modules/lodash/_arraySome.js23
-rw-r--r--assets/node_modules/lodash/_asciiSize.js12
-rw-r--r--assets/node_modules/lodash/_asciiToArray.js12
-rw-r--r--assets/node_modules/lodash/_asciiWords.js15
-rw-r--r--assets/node_modules/lodash/_assignMergeValue.js20
-rw-r--r--assets/node_modules/lodash/_assignValue.js28
-rw-r--r--assets/node_modules/lodash/_assocIndexOf.js21
-rw-r--r--assets/node_modules/lodash/_baseAggregator.js21
-rw-r--r--assets/node_modules/lodash/_baseAssign.js17
-rw-r--r--assets/node_modules/lodash/_baseAssignIn.js17
-rw-r--r--assets/node_modules/lodash/_baseAssignValue.js25
-rw-r--r--assets/node_modules/lodash/_baseAt.js23
-rw-r--r--assets/node_modules/lodash/_baseClamp.js22
-rw-r--r--assets/node_modules/lodash/_baseClone.js165
-rw-r--r--assets/node_modules/lodash/_baseConforms.js18
-rw-r--r--assets/node_modules/lodash/_baseConformsTo.js27
-rw-r--r--assets/node_modules/lodash/_baseCreate.js30
-rw-r--r--assets/node_modules/lodash/_baseDelay.js21
-rw-r--r--assets/node_modules/lodash/_baseDifference.js67
-rw-r--r--assets/node_modules/lodash/_baseEach.js14
-rw-r--r--assets/node_modules/lodash/_baseEachRight.js14
-rw-r--r--assets/node_modules/lodash/_baseEvery.js21
-rw-r--r--assets/node_modules/lodash/_baseExtremum.js32
-rw-r--r--assets/node_modules/lodash/_baseFill.js32
-rw-r--r--assets/node_modules/lodash/_baseFilter.js21
-rw-r--r--assets/node_modules/lodash/_baseFindIndex.js24
-rw-r--r--assets/node_modules/lodash/_baseFindKey.js23
-rw-r--r--assets/node_modules/lodash/_baseFlatten.js38
-rw-r--r--assets/node_modules/lodash/_baseFor.js16
-rw-r--r--assets/node_modules/lodash/_baseForOwn.js16
-rw-r--r--assets/node_modules/lodash/_baseForOwnRight.js16
-rw-r--r--assets/node_modules/lodash/_baseForRight.js15
-rw-r--r--assets/node_modules/lodash/_baseFunctions.js19
-rw-r--r--assets/node_modules/lodash/_baseGet.js24
-rw-r--r--assets/node_modules/lodash/_baseGetAllKeys.js20
-rw-r--r--assets/node_modules/lodash/_baseGetTag.js28
-rw-r--r--assets/node_modules/lodash/_baseGt.js14
-rw-r--r--assets/node_modules/lodash/_baseHas.js19
-rw-r--r--assets/node_modules/lodash/_baseHasIn.js13
-rw-r--r--assets/node_modules/lodash/_baseInRange.js18
-rw-r--r--assets/node_modules/lodash/_baseIndexOf.js20
-rw-r--r--assets/node_modules/lodash/_baseIndexOfWith.js23
-rw-r--r--assets/node_modules/lodash/_baseIntersection.js74
-rw-r--r--assets/node_modules/lodash/_baseInverter.js21
-rw-r--r--assets/node_modules/lodash/_baseInvoke.js24
-rw-r--r--assets/node_modules/lodash/_baseIsArguments.js18
-rw-r--r--assets/node_modules/lodash/_baseIsArrayBuffer.js17
-rw-r--r--assets/node_modules/lodash/_baseIsDate.js18
-rw-r--r--assets/node_modules/lodash/_baseIsEqual.js28
-rw-r--r--assets/node_modules/lodash/_baseIsEqualDeep.js83
-rw-r--r--assets/node_modules/lodash/_baseIsMap.js18
-rw-r--r--assets/node_modules/lodash/_baseIsMatch.js62
-rw-r--r--assets/node_modules/lodash/_baseIsNaN.js12
-rw-r--r--assets/node_modules/lodash/_baseIsNative.js47
-rw-r--r--assets/node_modules/lodash/_baseIsRegExp.js18
-rw-r--r--assets/node_modules/lodash/_baseIsSet.js18
-rw-r--r--assets/node_modules/lodash/_baseIsTypedArray.js60
-rw-r--r--assets/node_modules/lodash/_baseIteratee.js31
-rw-r--r--assets/node_modules/lodash/_baseKeys.js30
-rw-r--r--assets/node_modules/lodash/_baseKeysIn.js33
-rw-r--r--assets/node_modules/lodash/_baseLodash.js10
-rw-r--r--assets/node_modules/lodash/_baseLt.js14
-rw-r--r--assets/node_modules/lodash/_baseMap.js22
-rw-r--r--assets/node_modules/lodash/_baseMatches.js22
-rw-r--r--assets/node_modules/lodash/_baseMatchesProperty.js33
-rw-r--r--assets/node_modules/lodash/_baseMean.js20
-rw-r--r--assets/node_modules/lodash/_baseMerge.js42
-rw-r--r--assets/node_modules/lodash/_baseMergeDeep.js94
-rw-r--r--assets/node_modules/lodash/_baseNth.js20
-rw-r--r--assets/node_modules/lodash/_baseOrderBy.js34
-rw-r--r--assets/node_modules/lodash/_basePick.js19
-rw-r--r--assets/node_modules/lodash/_basePickBy.js30
-rw-r--r--assets/node_modules/lodash/_baseProperty.js14
-rw-r--r--assets/node_modules/lodash/_basePropertyDeep.js16
-rw-r--r--assets/node_modules/lodash/_basePropertyOf.js14
-rw-r--r--assets/node_modules/lodash/_basePullAll.js51
-rw-r--r--assets/node_modules/lodash/_basePullAt.js37
-rw-r--r--assets/node_modules/lodash/_baseRandom.js18
-rw-r--r--assets/node_modules/lodash/_baseRange.js28
-rw-r--r--assets/node_modules/lodash/_baseReduce.js23
-rw-r--r--assets/node_modules/lodash/_baseRepeat.js35
-rw-r--r--assets/node_modules/lodash/_baseRest.js17
-rw-r--r--assets/node_modules/lodash/_baseSample.js15
-rw-r--r--assets/node_modules/lodash/_baseSampleSize.js18
-rw-r--r--assets/node_modules/lodash/_baseSet.js47
-rw-r--r--assets/node_modules/lodash/_baseSetData.js17
-rw-r--r--assets/node_modules/lodash/_baseSetToString.js22
-rw-r--r--assets/node_modules/lodash/_baseShuffle.js15
-rw-r--r--assets/node_modules/lodash/_baseSlice.js31
-rw-r--r--assets/node_modules/lodash/_baseSome.js22
-rw-r--r--assets/node_modules/lodash/_baseSortBy.js21
-rw-r--r--assets/node_modules/lodash/_baseSortedIndex.js42
-rw-r--r--assets/node_modules/lodash/_baseSortedIndexBy.js64
-rw-r--r--assets/node_modules/lodash/_baseSortedUniq.js30
-rw-r--r--assets/node_modules/lodash/_baseSum.js24
-rw-r--r--assets/node_modules/lodash/_baseTimes.js20
-rw-r--r--assets/node_modules/lodash/_baseToNumber.js24
-rw-r--r--assets/node_modules/lodash/_baseToPairs.js18
-rw-r--r--assets/node_modules/lodash/_baseToString.js37
-rw-r--r--assets/node_modules/lodash/_baseUnary.js14
-rw-r--r--assets/node_modules/lodash/_baseUniq.js72
-rw-r--r--assets/node_modules/lodash/_baseUnset.js20
-rw-r--r--assets/node_modules/lodash/_baseUpdate.js18
-rw-r--r--assets/node_modules/lodash/_baseValues.js19
-rw-r--r--assets/node_modules/lodash/_baseWhile.js26
-rw-r--r--assets/node_modules/lodash/_baseWrapperValue.js25
-rw-r--r--assets/node_modules/lodash/_baseXor.js36
-rw-r--r--assets/node_modules/lodash/_baseZipObject.js23
-rw-r--r--assets/node_modules/lodash/_cacheHas.js13
-rw-r--r--assets/node_modules/lodash/_castArrayLikeObject.js14
-rw-r--r--assets/node_modules/lodash/_castFunction.js14
-rw-r--r--assets/node_modules/lodash/_castPath.js21
-rw-r--r--assets/node_modules/lodash/_castRest.js14
-rw-r--r--assets/node_modules/lodash/_castSlice.js18
-rw-r--r--assets/node_modules/lodash/_charsEndIndex.js19
-rw-r--r--assets/node_modules/lodash/_charsStartIndex.js20
-rw-r--r--assets/node_modules/lodash/_cloneArrayBuffer.js16
-rw-r--r--assets/node_modules/lodash/_cloneBuffer.js35
-rw-r--r--assets/node_modules/lodash/_cloneDataView.js16
-rw-r--r--assets/node_modules/lodash/_cloneRegExp.js17
-rw-r--r--assets/node_modules/lodash/_cloneSymbol.js18
-rw-r--r--assets/node_modules/lodash/_cloneTypedArray.js16
-rw-r--r--assets/node_modules/lodash/_compareAscending.js41
-rw-r--r--assets/node_modules/lodash/_compareMultiple.js44
-rw-r--r--assets/node_modules/lodash/_composeArgs.js39
-rw-r--r--assets/node_modules/lodash/_composeArgsRight.js41
-rw-r--r--assets/node_modules/lodash/_copyArray.js20
-rw-r--r--assets/node_modules/lodash/_copyObject.js40
-rw-r--r--assets/node_modules/lodash/_copySymbols.js16
-rw-r--r--assets/node_modules/lodash/_copySymbolsIn.js16
-rw-r--r--assets/node_modules/lodash/_coreJsData.js6
-rw-r--r--assets/node_modules/lodash/_countHolders.js21
-rw-r--r--assets/node_modules/lodash/_createAggregator.js23
-rw-r--r--assets/node_modules/lodash/_createAssigner.js37
-rw-r--r--assets/node_modules/lodash/_createBaseEach.js32
-rw-r--r--assets/node_modules/lodash/_createBaseFor.js25
-rw-r--r--assets/node_modules/lodash/_createBind.js28
-rw-r--r--assets/node_modules/lodash/_createCaseFirst.js33
-rw-r--r--assets/node_modules/lodash/_createCompounder.js24
-rw-r--r--assets/node_modules/lodash/_createCtor.js37
-rw-r--r--assets/node_modules/lodash/_createCurry.js46
-rw-r--r--assets/node_modules/lodash/_createFind.js25
-rw-r--r--assets/node_modules/lodash/_createFlow.js78
-rw-r--r--assets/node_modules/lodash/_createHybrid.js92
-rw-r--r--assets/node_modules/lodash/_createInverter.js17
-rw-r--r--assets/node_modules/lodash/_createMathOperation.js38
-rw-r--r--assets/node_modules/lodash/_createOver.js27
-rw-r--r--assets/node_modules/lodash/_createPadding.js33
-rw-r--r--assets/node_modules/lodash/_createPartial.js43
-rw-r--r--assets/node_modules/lodash/_createRange.js30
-rw-r--r--assets/node_modules/lodash/_createRecurry.js56
-rw-r--r--assets/node_modules/lodash/_createRelationalOperation.js20
-rw-r--r--assets/node_modules/lodash/_createRound.js35
-rw-r--r--assets/node_modules/lodash/_createSet.js19
-rw-r--r--assets/node_modules/lodash/_createToPairs.js30
-rw-r--r--assets/node_modules/lodash/_createWrap.js106
-rw-r--r--assets/node_modules/lodash/_customDefaultsAssignIn.js29
-rw-r--r--assets/node_modules/lodash/_customDefaultsMerge.js28
-rw-r--r--assets/node_modules/lodash/_customOmitClone.js16
-rw-r--r--assets/node_modules/lodash/_deburrLetter.js71
-rw-r--r--assets/node_modules/lodash/_defineProperty.js11
-rw-r--r--assets/node_modules/lodash/_equalArrays.js83
-rw-r--r--assets/node_modules/lodash/_equalByTag.js112
-rw-r--r--assets/node_modules/lodash/_equalObjects.js89
-rw-r--r--assets/node_modules/lodash/_escapeHtmlChar.js21
-rw-r--r--assets/node_modules/lodash/_escapeStringChar.js22
-rw-r--r--assets/node_modules/lodash/_flatRest.js16
-rw-r--r--assets/node_modules/lodash/_freeGlobal.js4
-rw-r--r--assets/node_modules/lodash/_getAllKeys.js16
-rw-r--r--assets/node_modules/lodash/_getAllKeysIn.js17
-rw-r--r--assets/node_modules/lodash/_getData.js15
-rw-r--r--assets/node_modules/lodash/_getFuncName.js31
-rw-r--r--assets/node_modules/lodash/_getHolder.js13
-rw-r--r--assets/node_modules/lodash/_getMapData.js18
-rw-r--r--assets/node_modules/lodash/_getMatchData.js24
-rw-r--r--assets/node_modules/lodash/_getNative.js17
-rw-r--r--assets/node_modules/lodash/_getPrototype.js6
-rw-r--r--assets/node_modules/lodash/_getRawTag.js46
-rw-r--r--assets/node_modules/lodash/_getSymbols.js30
-rw-r--r--assets/node_modules/lodash/_getSymbolsIn.js25
-rw-r--r--assets/node_modules/lodash/_getTag.js58
-rw-r--r--assets/node_modules/lodash/_getValue.js13
-rw-r--r--assets/node_modules/lodash/_getView.js33
-rw-r--r--assets/node_modules/lodash/_getWrapDetails.js17
-rw-r--r--assets/node_modules/lodash/_hasPath.js39
-rw-r--r--assets/node_modules/lodash/_hasUnicode.js26
-rw-r--r--assets/node_modules/lodash/_hasUnicodeWord.js15
-rw-r--r--assets/node_modules/lodash/_hashClear.js15
-rw-r--r--assets/node_modules/lodash/_hashDelete.js17
-rw-r--r--assets/node_modules/lodash/_hashGet.js30
-rw-r--r--assets/node_modules/lodash/_hashHas.js23
-rw-r--r--assets/node_modules/lodash/_hashSet.js23
-rw-r--r--assets/node_modules/lodash/_initCloneArray.js26
-rw-r--r--assets/node_modules/lodash/_initCloneByTag.js77
-rw-r--r--assets/node_modules/lodash/_initCloneObject.js18
-rw-r--r--assets/node_modules/lodash/_insertWrapDetails.js23
-rw-r--r--assets/node_modules/lodash/_isFlattenable.js20
-rw-r--r--assets/node_modules/lodash/_isIndex.js25
-rw-r--r--assets/node_modules/lodash/_isIterateeCall.js30
-rw-r--r--assets/node_modules/lodash/_isKey.js29
-rw-r--r--assets/node_modules/lodash/_isKeyable.js15
-rw-r--r--assets/node_modules/lodash/_isLaziable.js28
-rw-r--r--assets/node_modules/lodash/_isMaskable.js14
-rw-r--r--assets/node_modules/lodash/_isMasked.js20
-rw-r--r--assets/node_modules/lodash/_isPrototype.js18
-rw-r--r--assets/node_modules/lodash/_isStrictComparable.js15
-rw-r--r--assets/node_modules/lodash/_iteratorToArray.js18
-rw-r--r--assets/node_modules/lodash/_lazyClone.js23
-rw-r--r--assets/node_modules/lodash/_lazyReverse.js23
-rw-r--r--assets/node_modules/lodash/_lazyValue.js69
-rw-r--r--assets/node_modules/lodash/_listCacheClear.js13
-rw-r--r--assets/node_modules/lodash/_listCacheDelete.js35
-rw-r--r--assets/node_modules/lodash/_listCacheGet.js19
-rw-r--r--assets/node_modules/lodash/_listCacheHas.js16
-rw-r--r--assets/node_modules/lodash/_listCacheSet.js26
-rw-r--r--assets/node_modules/lodash/_mapCacheClear.js21
-rw-r--r--assets/node_modules/lodash/_mapCacheDelete.js18
-rw-r--r--assets/node_modules/lodash/_mapCacheGet.js16
-rw-r--r--assets/node_modules/lodash/_mapCacheHas.js16
-rw-r--r--assets/node_modules/lodash/_mapCacheSet.js22
-rw-r--r--assets/node_modules/lodash/_mapToArray.js18
-rw-r--r--assets/node_modules/lodash/_matchesStrictComparable.js20
-rw-r--r--assets/node_modules/lodash/_memoizeCapped.js26
-rw-r--r--assets/node_modules/lodash/_mergeData.js90
-rw-r--r--assets/node_modules/lodash/_metaMap.js6
-rw-r--r--assets/node_modules/lodash/_nativeCreate.js6
-rw-r--r--assets/node_modules/lodash/_nativeKeys.js6
-rw-r--r--assets/node_modules/lodash/_nativeKeysIn.js20
-rw-r--r--assets/node_modules/lodash/_nodeUtil.js30
-rw-r--r--assets/node_modules/lodash/_objectToString.js22
-rw-r--r--assets/node_modules/lodash/_overArg.js15
-rw-r--r--assets/node_modules/lodash/_overRest.js36
-rw-r--r--assets/node_modules/lodash/_parent.js16
-rw-r--r--assets/node_modules/lodash/_reEscape.js4
-rw-r--r--assets/node_modules/lodash/_reEvaluate.js4
-rw-r--r--assets/node_modules/lodash/_reInterpolate.js4
-rw-r--r--assets/node_modules/lodash/_realNames.js4
-rw-r--r--assets/node_modules/lodash/_reorder.js29
-rw-r--r--assets/node_modules/lodash/_replaceHolders.js29
-rw-r--r--assets/node_modules/lodash/_root.js9
-rw-r--r--assets/node_modules/lodash/_safeGet.js21
-rw-r--r--assets/node_modules/lodash/_setCacheAdd.js19
-rw-r--r--assets/node_modules/lodash/_setCacheHas.js14
-rw-r--r--assets/node_modules/lodash/_setData.js20
-rw-r--r--assets/node_modules/lodash/_setToArray.js18
-rw-r--r--assets/node_modules/lodash/_setToPairs.js18
-rw-r--r--assets/node_modules/lodash/_setToString.js14
-rw-r--r--assets/node_modules/lodash/_setWrapToString.js21
-rw-r--r--assets/node_modules/lodash/_shortOut.js37
-rw-r--r--assets/node_modules/lodash/_shuffleSelf.js28
-rw-r--r--assets/node_modules/lodash/_stackClear.js15
-rw-r--r--assets/node_modules/lodash/_stackDelete.js18
-rw-r--r--assets/node_modules/lodash/_stackGet.js14
-rw-r--r--assets/node_modules/lodash/_stackHas.js14
-rw-r--r--assets/node_modules/lodash/_stackSet.js34
-rw-r--r--assets/node_modules/lodash/_strictIndexOf.js23
-rw-r--r--assets/node_modules/lodash/_strictLastIndexOf.js21
-rw-r--r--assets/node_modules/lodash/_stringSize.js18
-rw-r--r--assets/node_modules/lodash/_stringToArray.js18
-rw-r--r--assets/node_modules/lodash/_stringToPath.js27
-rw-r--r--assets/node_modules/lodash/_toKey.js21
-rw-r--r--assets/node_modules/lodash/_toSource.js26
-rw-r--r--assets/node_modules/lodash/_unescapeHtmlChar.js21
-rw-r--r--assets/node_modules/lodash/_unicodeSize.js44
-rw-r--r--assets/node_modules/lodash/_unicodeToArray.js40
-rw-r--r--assets/node_modules/lodash/_unicodeWords.js69
-rw-r--r--assets/node_modules/lodash/_updateWrapDetails.js46
-rw-r--r--assets/node_modules/lodash/_wrapperClone.js23
-rw-r--r--assets/node_modules/lodash/add.js22
-rw-r--r--assets/node_modules/lodash/after.js42
-rw-r--r--assets/node_modules/lodash/array.js67
-rw-r--r--assets/node_modules/lodash/ary.js29
-rw-r--r--assets/node_modules/lodash/assign.js58
-rw-r--r--assets/node_modules/lodash/assignIn.js40
-rw-r--r--assets/node_modules/lodash/assignInWith.js38
-rw-r--r--assets/node_modules/lodash/assignWith.js37
-rw-r--r--assets/node_modules/lodash/at.js23
-rw-r--r--assets/node_modules/lodash/attempt.js35
-rw-r--r--assets/node_modules/lodash/before.js40
-rw-r--r--assets/node_modules/lodash/bind.js57
-rw-r--r--assets/node_modules/lodash/bindAll.js41
-rw-r--r--assets/node_modules/lodash/bindKey.js68
-rw-r--r--assets/node_modules/lodash/camelCase.js29
-rw-r--r--assets/node_modules/lodash/capitalize.js23
-rw-r--r--assets/node_modules/lodash/castArray.js44
-rw-r--r--assets/node_modules/lodash/ceil.js26
-rw-r--r--assets/node_modules/lodash/chain.js38
-rw-r--r--assets/node_modules/lodash/chunk.js50
-rw-r--r--assets/node_modules/lodash/clamp.js39
-rw-r--r--assets/node_modules/lodash/clone.js36
-rw-r--r--assets/node_modules/lodash/cloneDeep.js29
-rw-r--r--assets/node_modules/lodash/cloneDeepWith.js40
-rw-r--r--assets/node_modules/lodash/cloneWith.js42
-rw-r--r--assets/node_modules/lodash/collection.js30
-rw-r--r--assets/node_modules/lodash/commit.js33
-rw-r--r--assets/node_modules/lodash/compact.js31
-rw-r--r--assets/node_modules/lodash/concat.js43
-rw-r--r--assets/node_modules/lodash/cond.js60
-rw-r--r--assets/node_modules/lodash/conforms.js35
-rw-r--r--assets/node_modules/lodash/conformsTo.js32
-rw-r--r--assets/node_modules/lodash/constant.js26
-rw-r--r--assets/node_modules/lodash/core.js3854
-rw-r--r--assets/node_modules/lodash/core.min.js29
-rw-r--r--assets/node_modules/lodash/countBy.js40
-rw-r--r--assets/node_modules/lodash/create.js43
-rw-r--r--assets/node_modules/lodash/curry.js57
-rw-r--r--assets/node_modules/lodash/curryRight.js54
-rw-r--r--assets/node_modules/lodash/date.js3
-rw-r--r--assets/node_modules/lodash/debounce.js191
-rw-r--r--assets/node_modules/lodash/deburr.js45
-rw-r--r--assets/node_modules/lodash/defaultTo.js25
-rw-r--r--assets/node_modules/lodash/defaults.js64
-rw-r--r--assets/node_modules/lodash/defaultsDeep.js30
-rw-r--r--assets/node_modules/lodash/defer.js26
-rw-r--r--assets/node_modules/lodash/delay.js28
-rw-r--r--assets/node_modules/lodash/difference.js33
-rw-r--r--assets/node_modules/lodash/differenceBy.js44
-rw-r--r--assets/node_modules/lodash/differenceWith.js40
-rw-r--r--assets/node_modules/lodash/divide.js22
-rw-r--r--assets/node_modules/lodash/drop.js38
-rw-r--r--assets/node_modules/lodash/dropRight.js39
-rw-r--r--assets/node_modules/lodash/dropRightWhile.js45
-rw-r--r--assets/node_modules/lodash/dropWhile.js45
-rw-r--r--assets/node_modules/lodash/each.js1
-rw-r--r--assets/node_modules/lodash/eachRight.js1
-rw-r--r--assets/node_modules/lodash/endsWith.js43
-rw-r--r--assets/node_modules/lodash/entries.js1
-rw-r--r--assets/node_modules/lodash/entriesIn.js1
-rw-r--r--assets/node_modules/lodash/eq.js37
-rw-r--r--assets/node_modules/lodash/escape.js43
-rw-r--r--assets/node_modules/lodash/escapeRegExp.js32
-rw-r--r--assets/node_modules/lodash/every.js56
-rw-r--r--assets/node_modules/lodash/extend.js1
-rw-r--r--assets/node_modules/lodash/extendWith.js1
-rw-r--r--assets/node_modules/lodash/fill.js45
-rw-r--r--assets/node_modules/lodash/filter.js48
-rw-r--r--assets/node_modules/lodash/find.js42
-rw-r--r--assets/node_modules/lodash/findIndex.js55
-rw-r--r--assets/node_modules/lodash/findKey.js44
-rw-r--r--assets/node_modules/lodash/findLast.js25
-rw-r--r--assets/node_modules/lodash/findLastIndex.js59
-rw-r--r--assets/node_modules/lodash/findLastKey.js44
-rw-r--r--assets/node_modules/lodash/first.js1
-rw-r--r--assets/node_modules/lodash/flatMap.js29
-rw-r--r--assets/node_modules/lodash/flatMapDeep.js31
-rw-r--r--assets/node_modules/lodash/flatMapDepth.js31
-rw-r--r--assets/node_modules/lodash/flatten.js22
-rw-r--r--assets/node_modules/lodash/flattenDeep.js25
-rw-r--r--assets/node_modules/lodash/flattenDepth.js33
-rw-r--r--assets/node_modules/lodash/flip.js28
-rw-r--r--assets/node_modules/lodash/floor.js26
-rw-r--r--assets/node_modules/lodash/flow.js27
-rw-r--r--assets/node_modules/lodash/flowRight.js26
-rw-r--r--assets/node_modules/lodash/forEach.js41
-rw-r--r--assets/node_modules/lodash/forEachRight.js31
-rw-r--r--assets/node_modules/lodash/forIn.js39
-rw-r--r--assets/node_modules/lodash/forInRight.js37
-rw-r--r--assets/node_modules/lodash/forOwn.js36
-rw-r--r--assets/node_modules/lodash/forOwnRight.js34
-rw-r--r--assets/node_modules/lodash/fp.js2
-rw-r--r--assets/node_modules/lodash/fp/F.js1
-rw-r--r--assets/node_modules/lodash/fp/T.js1
-rw-r--r--assets/node_modules/lodash/fp/__.js1
-rw-r--r--assets/node_modules/lodash/fp/_baseConvert.js569
-rw-r--r--assets/node_modules/lodash/fp/_convertBrowser.js18
-rw-r--r--assets/node_modules/lodash/fp/_falseOptions.js7
-rw-r--r--assets/node_modules/lodash/fp/_mapping.js358
-rw-r--r--assets/node_modules/lodash/fp/_util.js16
-rw-r--r--assets/node_modules/lodash/fp/add.js5
-rw-r--r--assets/node_modules/lodash/fp/after.js5
-rw-r--r--assets/node_modules/lodash/fp/all.js1
-rw-r--r--assets/node_modules/lodash/fp/allPass.js1
-rw-r--r--assets/node_modules/lodash/fp/always.js1
-rw-r--r--assets/node_modules/lodash/fp/any.js1
-rw-r--r--assets/node_modules/lodash/fp/anyPass.js1
-rw-r--r--assets/node_modules/lodash/fp/apply.js1
-rw-r--r--assets/node_modules/lodash/fp/array.js2
-rw-r--r--assets/node_modules/lodash/fp/ary.js5
-rw-r--r--assets/node_modules/lodash/fp/assign.js5
-rw-r--r--assets/node_modules/lodash/fp/assignAll.js5
-rw-r--r--assets/node_modules/lodash/fp/assignAllWith.js5
-rw-r--r--assets/node_modules/lodash/fp/assignIn.js5
-rw-r--r--assets/node_modules/lodash/fp/assignInAll.js5
-rw-r--r--assets/node_modules/lodash/fp/assignInAllWith.js5
-rw-r--r--assets/node_modules/lodash/fp/assignInWith.js5
-rw-r--r--assets/node_modules/lodash/fp/assignWith.js5
-rw-r--r--assets/node_modules/lodash/fp/assoc.js1
-rw-r--r--assets/node_modules/lodash/fp/assocPath.js1
-rw-r--r--assets/node_modules/lodash/fp/at.js5
-rw-r--r--assets/node_modules/lodash/fp/attempt.js5
-rw-r--r--assets/node_modules/lodash/fp/before.js5
-rw-r--r--assets/node_modules/lodash/fp/bind.js5
-rw-r--r--assets/node_modules/lodash/fp/bindAll.js5
-rw-r--r--assets/node_modules/lodash/fp/bindKey.js5
-rw-r--r--assets/node_modules/lodash/fp/camelCase.js5
-rw-r--r--assets/node_modules/lodash/fp/capitalize.js5
-rw-r--r--assets/node_modules/lodash/fp/castArray.js5
-rw-r--r--assets/node_modules/lodash/fp/ceil.js5
-rw-r--r--assets/node_modules/lodash/fp/chain.js5
-rw-r--r--assets/node_modules/lodash/fp/chunk.js5
-rw-r--r--assets/node_modules/lodash/fp/clamp.js5
-rw-r--r--assets/node_modules/lodash/fp/clone.js5
-rw-r--r--assets/node_modules/lodash/fp/cloneDeep.js5
-rw-r--r--assets/node_modules/lodash/fp/cloneDeepWith.js5
-rw-r--r--assets/node_modules/lodash/fp/cloneWith.js5
-rw-r--r--assets/node_modules/lodash/fp/collection.js2
-rw-r--r--assets/node_modules/lodash/fp/commit.js5
-rw-r--r--assets/node_modules/lodash/fp/compact.js5
-rw-r--r--assets/node_modules/lodash/fp/complement.js1
-rw-r--r--assets/node_modules/lodash/fp/compose.js1
-rw-r--r--assets/node_modules/lodash/fp/concat.js5
-rw-r--r--assets/node_modules/lodash/fp/cond.js5
-rw-r--r--assets/node_modules/lodash/fp/conforms.js1
-rw-r--r--assets/node_modules/lodash/fp/conformsTo.js5
-rw-r--r--assets/node_modules/lodash/fp/constant.js5
-rw-r--r--assets/node_modules/lodash/fp/contains.js1
-rw-r--r--assets/node_modules/lodash/fp/convert.js18
-rw-r--r--assets/node_modules/lodash/fp/countBy.js5
-rw-r--r--assets/node_modules/lodash/fp/create.js5
-rw-r--r--assets/node_modules/lodash/fp/curry.js5
-rw-r--r--assets/node_modules/lodash/fp/curryN.js5
-rw-r--r--assets/node_modules/lodash/fp/curryRight.js5
-rw-r--r--assets/node_modules/lodash/fp/curryRightN.js5
-rw-r--r--assets/node_modules/lodash/fp/date.js2
-rw-r--r--assets/node_modules/lodash/fp/debounce.js5
-rw-r--r--assets/node_modules/lodash/fp/deburr.js5
-rw-r--r--assets/node_modules/lodash/fp/defaultTo.js5
-rw-r--r--assets/node_modules/lodash/fp/defaults.js5
-rw-r--r--assets/node_modules/lodash/fp/defaultsAll.js5
-rw-r--r--assets/node_modules/lodash/fp/defaultsDeep.js5
-rw-r--r--assets/node_modules/lodash/fp/defaultsDeepAll.js5
-rw-r--r--assets/node_modules/lodash/fp/defer.js5
-rw-r--r--assets/node_modules/lodash/fp/delay.js5
-rw-r--r--assets/node_modules/lodash/fp/difference.js5
-rw-r--r--assets/node_modules/lodash/fp/differenceBy.js5
-rw-r--r--assets/node_modules/lodash/fp/differenceWith.js5
-rw-r--r--assets/node_modules/lodash/fp/dissoc.js1
-rw-r--r--assets/node_modules/lodash/fp/dissocPath.js1
-rw-r--r--assets/node_modules/lodash/fp/divide.js5
-rw-r--r--assets/node_modules/lodash/fp/drop.js5
-rw-r--r--assets/node_modules/lodash/fp/dropLast.js1
-rw-r--r--assets/node_modules/lodash/fp/dropLastWhile.js1
-rw-r--r--assets/node_modules/lodash/fp/dropRight.js5
-rw-r--r--assets/node_modules/lodash/fp/dropRightWhile.js5
-rw-r--r--assets/node_modules/lodash/fp/dropWhile.js5
-rw-r--r--assets/node_modules/lodash/fp/each.js1
-rw-r--r--assets/node_modules/lodash/fp/eachRight.js1
-rw-r--r--assets/node_modules/lodash/fp/endsWith.js5
-rw-r--r--assets/node_modules/lodash/fp/entries.js1
-rw-r--r--assets/node_modules/lodash/fp/entriesIn.js1
-rw-r--r--assets/node_modules/lodash/fp/eq.js5
-rw-r--r--assets/node_modules/lodash/fp/equals.js1
-rw-r--r--assets/node_modules/lodash/fp/escape.js5
-rw-r--r--assets/node_modules/lodash/fp/escapeRegExp.js5
-rw-r--r--assets/node_modules/lodash/fp/every.js5
-rw-r--r--assets/node_modules/lodash/fp/extend.js1
-rw-r--r--assets/node_modules/lodash/fp/extendAll.js1
-rw-r--r--assets/node_modules/lodash/fp/extendAllWith.js1
-rw-r--r--assets/node_modules/lodash/fp/extendWith.js1
-rw-r--r--assets/node_modules/lodash/fp/fill.js5
-rw-r--r--assets/node_modules/lodash/fp/filter.js5
-rw-r--r--assets/node_modules/lodash/fp/find.js5
-rw-r--r--assets/node_modules/lodash/fp/findFrom.js5
-rw-r--r--assets/node_modules/lodash/fp/findIndex.js5
-rw-r--r--assets/node_modules/lodash/fp/findIndexFrom.js5
-rw-r--r--assets/node_modules/lodash/fp/findKey.js5
-rw-r--r--assets/node_modules/lodash/fp/findLast.js5
-rw-r--r--assets/node_modules/lodash/fp/findLastFrom.js5
-rw-r--r--assets/node_modules/lodash/fp/findLastIndex.js5
-rw-r--r--assets/node_modules/lodash/fp/findLastIndexFrom.js5
-rw-r--r--assets/node_modules/lodash/fp/findLastKey.js5
-rw-r--r--assets/node_modules/lodash/fp/first.js1
-rw-r--r--assets/node_modules/lodash/fp/flatMap.js5
-rw-r--r--assets/node_modules/lodash/fp/flatMapDeep.js5
-rw-r--r--assets/node_modules/lodash/fp/flatMapDepth.js5
-rw-r--r--assets/node_modules/lodash/fp/flatten.js5
-rw-r--r--assets/node_modules/lodash/fp/flattenDeep.js5
-rw-r--r--assets/node_modules/lodash/fp/flattenDepth.js5
-rw-r--r--assets/node_modules/lodash/fp/flip.js5
-rw-r--r--assets/node_modules/lodash/fp/floor.js5
-rw-r--r--assets/node_modules/lodash/fp/flow.js5
-rw-r--r--assets/node_modules/lodash/fp/flowRight.js5
-rw-r--r--assets/node_modules/lodash/fp/forEach.js5
-rw-r--r--assets/node_modules/lodash/fp/forEachRight.js5
-rw-r--r--assets/node_modules/lodash/fp/forIn.js5
-rw-r--r--assets/node_modules/lodash/fp/forInRight.js5
-rw-r--r--assets/node_modules/lodash/fp/forOwn.js5
-rw-r--r--assets/node_modules/lodash/fp/forOwnRight.js5
-rw-r--r--assets/node_modules/lodash/fp/fromPairs.js5
-rw-r--r--assets/node_modules/lodash/fp/function.js2
-rw-r--r--assets/node_modules/lodash/fp/functions.js5
-rw-r--r--assets/node_modules/lodash/fp/functionsIn.js5
-rw-r--r--assets/node_modules/lodash/fp/get.js5
-rw-r--r--assets/node_modules/lodash/fp/getOr.js5
-rw-r--r--assets/node_modules/lodash/fp/groupBy.js5
-rw-r--r--assets/node_modules/lodash/fp/gt.js5
-rw-r--r--assets/node_modules/lodash/fp/gte.js5
-rw-r--r--assets/node_modules/lodash/fp/has.js5
-rw-r--r--assets/node_modules/lodash/fp/hasIn.js5
-rw-r--r--assets/node_modules/lodash/fp/head.js5
-rw-r--r--assets/node_modules/lodash/fp/identical.js1
-rw-r--r--assets/node_modules/lodash/fp/identity.js5
-rw-r--r--assets/node_modules/lodash/fp/inRange.js5
-rw-r--r--assets/node_modules/lodash/fp/includes.js5
-rw-r--r--assets/node_modules/lodash/fp/includesFrom.js5
-rw-r--r--assets/node_modules/lodash/fp/indexBy.js1
-rw-r--r--assets/node_modules/lodash/fp/indexOf.js5
-rw-r--r--assets/node_modules/lodash/fp/indexOfFrom.js5
-rw-r--r--assets/node_modules/lodash/fp/init.js1
-rw-r--r--assets/node_modules/lodash/fp/initial.js5
-rw-r--r--assets/node_modules/lodash/fp/intersection.js5
-rw-r--r--assets/node_modules/lodash/fp/intersectionBy.js5
-rw-r--r--assets/node_modules/lodash/fp/intersectionWith.js5
-rw-r--r--assets/node_modules/lodash/fp/invert.js5
-rw-r--r--assets/node_modules/lodash/fp/invertBy.js5
-rw-r--r--assets/node_modules/lodash/fp/invertObj.js1
-rw-r--r--assets/node_modules/lodash/fp/invoke.js5
-rw-r--r--assets/node_modules/lodash/fp/invokeArgs.js5
-rw-r--r--assets/node_modules/lodash/fp/invokeArgsMap.js5
-rw-r--r--assets/node_modules/lodash/fp/invokeMap.js5
-rw-r--r--assets/node_modules/lodash/fp/isArguments.js5
-rw-r--r--assets/node_modules/lodash/fp/isArray.js5
-rw-r--r--assets/node_modules/lodash/fp/isArrayBuffer.js5
-rw-r--r--assets/node_modules/lodash/fp/isArrayLike.js5
-rw-r--r--assets/node_modules/lodash/fp/isArrayLikeObject.js5
-rw-r--r--assets/node_modules/lodash/fp/isBoolean.js5
-rw-r--r--assets/node_modules/lodash/fp/isBuffer.js5
-rw-r--r--assets/node_modules/lodash/fp/isDate.js5
-rw-r--r--assets/node_modules/lodash/fp/isElement.js5
-rw-r--r--assets/node_modules/lodash/fp/isEmpty.js5
-rw-r--r--assets/node_modules/lodash/fp/isEqual.js5
-rw-r--r--assets/node_modules/lodash/fp/isEqualWith.js5
-rw-r--r--assets/node_modules/lodash/fp/isError.js5
-rw-r--r--assets/node_modules/lodash/fp/isFinite.js5
-rw-r--r--assets/node_modules/lodash/fp/isFunction.js5
-rw-r--r--assets/node_modules/lodash/fp/isInteger.js5
-rw-r--r--assets/node_modules/lodash/fp/isLength.js5
-rw-r--r--assets/node_modules/lodash/fp/isMap.js5
-rw-r--r--assets/node_modules/lodash/fp/isMatch.js5
-rw-r--r--assets/node_modules/lodash/fp/isMatchWith.js5
-rw-r--r--assets/node_modules/lodash/fp/isNaN.js5
-rw-r--r--assets/node_modules/lodash/fp/isNative.js5
-rw-r--r--assets/node_modules/lodash/fp/isNil.js5
-rw-r--r--assets/node_modules/lodash/fp/isNull.js5
-rw-r--r--assets/node_modules/lodash/fp/isNumber.js5
-rw-r--r--assets/node_modules/lodash/fp/isObject.js5
-rw-r--r--assets/node_modules/lodash/fp/isObjectLike.js5
-rw-r--r--assets/node_modules/lodash/fp/isPlainObject.js5
-rw-r--r--assets/node_modules/lodash/fp/isRegExp.js5
-rw-r--r--assets/node_modules/lodash/fp/isSafeInteger.js5
-rw-r--r--assets/node_modules/lodash/fp/isSet.js5
-rw-r--r--assets/node_modules/lodash/fp/isString.js5
-rw-r--r--assets/node_modules/lodash/fp/isSymbol.js5
-rw-r--r--assets/node_modules/lodash/fp/isTypedArray.js5
-rw-r--r--assets/node_modules/lodash/fp/isUndefined.js5
-rw-r--r--assets/node_modules/lodash/fp/isWeakMap.js5
-rw-r--r--assets/node_modules/lodash/fp/isWeakSet.js5
-rw-r--r--assets/node_modules/lodash/fp/iteratee.js5
-rw-r--r--assets/node_modules/lodash/fp/join.js5
-rw-r--r--assets/node_modules/lodash/fp/juxt.js1
-rw-r--r--assets/node_modules/lodash/fp/kebabCase.js5
-rw-r--r--assets/node_modules/lodash/fp/keyBy.js5
-rw-r--r--assets/node_modules/lodash/fp/keys.js5
-rw-r--r--assets/node_modules/lodash/fp/keysIn.js5
-rw-r--r--assets/node_modules/lodash/fp/lang.js2
-rw-r--r--assets/node_modules/lodash/fp/last.js5
-rw-r--r--assets/node_modules/lodash/fp/lastIndexOf.js5
-rw-r--r--assets/node_modules/lodash/fp/lastIndexOfFrom.js5
-rw-r--r--assets/node_modules/lodash/fp/lowerCase.js5
-rw-r--r--assets/node_modules/lodash/fp/lowerFirst.js5
-rw-r--r--assets/node_modules/lodash/fp/lt.js5
-rw-r--r--assets/node_modules/lodash/fp/lte.js5
-rw-r--r--assets/node_modules/lodash/fp/map.js5
-rw-r--r--assets/node_modules/lodash/fp/mapKeys.js5
-rw-r--r--assets/node_modules/lodash/fp/mapValues.js5
-rw-r--r--assets/node_modules/lodash/fp/matches.js1
-rw-r--r--assets/node_modules/lodash/fp/matchesProperty.js5
-rw-r--r--assets/node_modules/lodash/fp/math.js2
-rw-r--r--assets/node_modules/lodash/fp/max.js5
-rw-r--r--assets/node_modules/lodash/fp/maxBy.js5
-rw-r--r--assets/node_modules/lodash/fp/mean.js5
-rw-r--r--assets/node_modules/lodash/fp/meanBy.js5
-rw-r--r--assets/node_modules/lodash/fp/memoize.js5
-rw-r--r--assets/node_modules/lodash/fp/merge.js5
-rw-r--r--assets/node_modules/lodash/fp/mergeAll.js5
-rw-r--r--assets/node_modules/lodash/fp/mergeAllWith.js5
-rw-r--r--assets/node_modules/lodash/fp/mergeWith.js5
-rw-r--r--assets/node_modules/lodash/fp/method.js5
-rw-r--r--assets/node_modules/lodash/fp/methodOf.js5
-rw-r--r--assets/node_modules/lodash/fp/min.js5
-rw-r--r--assets/node_modules/lodash/fp/minBy.js5
-rw-r--r--assets/node_modules/lodash/fp/mixin.js5
-rw-r--r--assets/node_modules/lodash/fp/multiply.js5
-rw-r--r--assets/node_modules/lodash/fp/nAry.js1
-rw-r--r--assets/node_modules/lodash/fp/negate.js5
-rw-r--r--assets/node_modules/lodash/fp/next.js5
-rw-r--r--assets/node_modules/lodash/fp/noop.js5
-rw-r--r--assets/node_modules/lodash/fp/now.js5
-rw-r--r--assets/node_modules/lodash/fp/nth.js5
-rw-r--r--assets/node_modules/lodash/fp/nthArg.js5
-rw-r--r--assets/node_modules/lodash/fp/number.js2
-rw-r--r--assets/node_modules/lodash/fp/object.js2
-rw-r--r--assets/node_modules/lodash/fp/omit.js5
-rw-r--r--assets/node_modules/lodash/fp/omitAll.js1
-rw-r--r--assets/node_modules/lodash/fp/omitBy.js5
-rw-r--r--assets/node_modules/lodash/fp/once.js5
-rw-r--r--assets/node_modules/lodash/fp/orderBy.js5
-rw-r--r--assets/node_modules/lodash/fp/over.js5
-rw-r--r--assets/node_modules/lodash/fp/overArgs.js5
-rw-r--r--assets/node_modules/lodash/fp/overEvery.js5
-rw-r--r--assets/node_modules/lodash/fp/overSome.js5
-rw-r--r--assets/node_modules/lodash/fp/pad.js5
-rw-r--r--assets/node_modules/lodash/fp/padChars.js5
-rw-r--r--assets/node_modules/lodash/fp/padCharsEnd.js5
-rw-r--r--assets/node_modules/lodash/fp/padCharsStart.js5
-rw-r--r--assets/node_modules/lodash/fp/padEnd.js5
-rw-r--r--assets/node_modules/lodash/fp/padStart.js5
-rw-r--r--assets/node_modules/lodash/fp/parseInt.js5
-rw-r--r--assets/node_modules/lodash/fp/partial.js5
-rw-r--r--assets/node_modules/lodash/fp/partialRight.js5
-rw-r--r--assets/node_modules/lodash/fp/partition.js5
-rw-r--r--assets/node_modules/lodash/fp/path.js1
-rw-r--r--assets/node_modules/lodash/fp/pathEq.js1
-rw-r--r--assets/node_modules/lodash/fp/pathOr.js1
-rw-r--r--assets/node_modules/lodash/fp/paths.js1
-rw-r--r--assets/node_modules/lodash/fp/pick.js5
-rw-r--r--assets/node_modules/lodash/fp/pickAll.js1
-rw-r--r--assets/node_modules/lodash/fp/pickBy.js5
-rw-r--r--assets/node_modules/lodash/fp/pipe.js1
-rw-r--r--assets/node_modules/lodash/fp/placeholder.js6
-rw-r--r--assets/node_modules/lodash/fp/plant.js5
-rw-r--r--assets/node_modules/lodash/fp/pluck.js1
-rw-r--r--assets/node_modules/lodash/fp/prop.js1
-rw-r--r--assets/node_modules/lodash/fp/propEq.js1
-rw-r--r--assets/node_modules/lodash/fp/propOr.js1
-rw-r--r--assets/node_modules/lodash/fp/property.js1
-rw-r--r--assets/node_modules/lodash/fp/propertyOf.js5
-rw-r--r--assets/node_modules/lodash/fp/props.js1
-rw-r--r--assets/node_modules/lodash/fp/pull.js5
-rw-r--r--assets/node_modules/lodash/fp/pullAll.js5
-rw-r--r--assets/node_modules/lodash/fp/pullAllBy.js5
-rw-r--r--assets/node_modules/lodash/fp/pullAllWith.js5
-rw-r--r--assets/node_modules/lodash/fp/pullAt.js5
-rw-r--r--assets/node_modules/lodash/fp/random.js5
-rw-r--r--assets/node_modules/lodash/fp/range.js5
-rw-r--r--assets/node_modules/lodash/fp/rangeRight.js5
-rw-r--r--assets/node_modules/lodash/fp/rangeStep.js5
-rw-r--r--assets/node_modules/lodash/fp/rangeStepRight.js5
-rw-r--r--assets/node_modules/lodash/fp/rearg.js5
-rw-r--r--assets/node_modules/lodash/fp/reduce.js5
-rw-r--r--assets/node_modules/lodash/fp/reduceRight.js5
-rw-r--r--assets/node_modules/lodash/fp/reject.js5
-rw-r--r--assets/node_modules/lodash/fp/remove.js5
-rw-r--r--assets/node_modules/lodash/fp/repeat.js5
-rw-r--r--assets/node_modules/lodash/fp/replace.js5
-rw-r--r--assets/node_modules/lodash/fp/rest.js5
-rw-r--r--assets/node_modules/lodash/fp/restFrom.js5
-rw-r--r--assets/node_modules/lodash/fp/result.js5
-rw-r--r--assets/node_modules/lodash/fp/reverse.js5
-rw-r--r--assets/node_modules/lodash/fp/round.js5
-rw-r--r--assets/node_modules/lodash/fp/sample.js5
-rw-r--r--assets/node_modules/lodash/fp/sampleSize.js5
-rw-r--r--assets/node_modules/lodash/fp/seq.js2
-rw-r--r--assets/node_modules/lodash/fp/set.js5
-rw-r--r--assets/node_modules/lodash/fp/setWith.js5
-rw-r--r--assets/node_modules/lodash/fp/shuffle.js5
-rw-r--r--assets/node_modules/lodash/fp/size.js5
-rw-r--r--assets/node_modules/lodash/fp/slice.js5
-rw-r--r--assets/node_modules/lodash/fp/snakeCase.js5
-rw-r--r--assets/node_modules/lodash/fp/some.js5
-rw-r--r--assets/node_modules/lodash/fp/sortBy.js5
-rw-r--r--assets/node_modules/lodash/fp/sortedIndex.js5
-rw-r--r--assets/node_modules/lodash/fp/sortedIndexBy.js5
-rw-r--r--assets/node_modules/lodash/fp/sortedIndexOf.js5
-rw-r--r--assets/node_modules/lodash/fp/sortedLastIndex.js5
-rw-r--r--assets/node_modules/lodash/fp/sortedLastIndexBy.js5
-rw-r--r--assets/node_modules/lodash/fp/sortedLastIndexOf.js5
-rw-r--r--assets/node_modules/lodash/fp/sortedUniq.js5
-rw-r--r--assets/node_modules/lodash/fp/sortedUniqBy.js5
-rw-r--r--assets/node_modules/lodash/fp/split.js5
-rw-r--r--assets/node_modules/lodash/fp/spread.js5
-rw-r--r--assets/node_modules/lodash/fp/spreadFrom.js5
-rw-r--r--assets/node_modules/lodash/fp/startCase.js5
-rw-r--r--assets/node_modules/lodash/fp/startsWith.js5
-rw-r--r--assets/node_modules/lodash/fp/string.js2
-rw-r--r--assets/node_modules/lodash/fp/stubArray.js5
-rw-r--r--assets/node_modules/lodash/fp/stubFalse.js5
-rw-r--r--assets/node_modules/lodash/fp/stubObject.js5
-rw-r--r--assets/node_modules/lodash/fp/stubString.js5
-rw-r--r--assets/node_modules/lodash/fp/stubTrue.js5
-rw-r--r--assets/node_modules/lodash/fp/subtract.js5
-rw-r--r--assets/node_modules/lodash/fp/sum.js5
-rw-r--r--assets/node_modules/lodash/fp/sumBy.js5
-rw-r--r--assets/node_modules/lodash/fp/symmetricDifference.js1
-rw-r--r--assets/node_modules/lodash/fp/symmetricDifferenceBy.js1
-rw-r--r--assets/node_modules/lodash/fp/symmetricDifferenceWith.js1
-rw-r--r--assets/node_modules/lodash/fp/tail.js5
-rw-r--r--assets/node_modules/lodash/fp/take.js5
-rw-r--r--assets/node_modules/lodash/fp/takeLast.js1
-rw-r--r--assets/node_modules/lodash/fp/takeLastWhile.js1
-rw-r--r--assets/node_modules/lodash/fp/takeRight.js5
-rw-r--r--assets/node_modules/lodash/fp/takeRightWhile.js5
-rw-r--r--assets/node_modules/lodash/fp/takeWhile.js5
-rw-r--r--assets/node_modules/lodash/fp/tap.js5
-rw-r--r--assets/node_modules/lodash/fp/template.js5
-rw-r--r--assets/node_modules/lodash/fp/templateSettings.js5
-rw-r--r--assets/node_modules/lodash/fp/throttle.js5
-rw-r--r--assets/node_modules/lodash/fp/thru.js5
-rw-r--r--assets/node_modules/lodash/fp/times.js5
-rw-r--r--assets/node_modules/lodash/fp/toArray.js5
-rw-r--r--assets/node_modules/lodash/fp/toFinite.js5
-rw-r--r--assets/node_modules/lodash/fp/toInteger.js5
-rw-r--r--assets/node_modules/lodash/fp/toIterator.js5
-rw-r--r--assets/node_modules/lodash/fp/toJSON.js5
-rw-r--r--assets/node_modules/lodash/fp/toLength.js5
-rw-r--r--assets/node_modules/lodash/fp/toLower.js5
-rw-r--r--assets/node_modules/lodash/fp/toNumber.js5
-rw-r--r--assets/node_modules/lodash/fp/toPairs.js5
-rw-r--r--assets/node_modules/lodash/fp/toPairsIn.js5
-rw-r--r--assets/node_modules/lodash/fp/toPath.js5
-rw-r--r--assets/node_modules/lodash/fp/toPlainObject.js5
-rw-r--r--assets/node_modules/lodash/fp/toSafeInteger.js5
-rw-r--r--assets/node_modules/lodash/fp/toString.js5
-rw-r--r--assets/node_modules/lodash/fp/toUpper.js5
-rw-r--r--assets/node_modules/lodash/fp/transform.js5
-rw-r--r--assets/node_modules/lodash/fp/trim.js5
-rw-r--r--assets/node_modules/lodash/fp/trimChars.js5
-rw-r--r--assets/node_modules/lodash/fp/trimCharsEnd.js5
-rw-r--r--assets/node_modules/lodash/fp/trimCharsStart.js5
-rw-r--r--assets/node_modules/lodash/fp/trimEnd.js5
-rw-r--r--assets/node_modules/lodash/fp/trimStart.js5
-rw-r--r--assets/node_modules/lodash/fp/truncate.js5
-rw-r--r--assets/node_modules/lodash/fp/unapply.js1
-rw-r--r--assets/node_modules/lodash/fp/unary.js5
-rw-r--r--assets/node_modules/lodash/fp/unescape.js5
-rw-r--r--assets/node_modules/lodash/fp/union.js5
-rw-r--r--assets/node_modules/lodash/fp/unionBy.js5
-rw-r--r--assets/node_modules/lodash/fp/unionWith.js5
-rw-r--r--assets/node_modules/lodash/fp/uniq.js5
-rw-r--r--assets/node_modules/lodash/fp/uniqBy.js5
-rw-r--r--assets/node_modules/lodash/fp/uniqWith.js5
-rw-r--r--assets/node_modules/lodash/fp/uniqueId.js5
-rw-r--r--assets/node_modules/lodash/fp/unnest.js1
-rw-r--r--assets/node_modules/lodash/fp/unset.js5
-rw-r--r--assets/node_modules/lodash/fp/unzip.js5
-rw-r--r--assets/node_modules/lodash/fp/unzipWith.js5
-rw-r--r--assets/node_modules/lodash/fp/update.js5
-rw-r--r--assets/node_modules/lodash/fp/updateWith.js5
-rw-r--r--assets/node_modules/lodash/fp/upperCase.js5
-rw-r--r--assets/node_modules/lodash/fp/upperFirst.js5
-rw-r--r--assets/node_modules/lodash/fp/useWith.js1
-rw-r--r--assets/node_modules/lodash/fp/util.js2
-rw-r--r--assets/node_modules/lodash/fp/value.js5
-rw-r--r--assets/node_modules/lodash/fp/valueOf.js5
-rw-r--r--assets/node_modules/lodash/fp/values.js5
-rw-r--r--assets/node_modules/lodash/fp/valuesIn.js5
-rw-r--r--assets/node_modules/lodash/fp/where.js1
-rw-r--r--assets/node_modules/lodash/fp/whereEq.js1
-rw-r--r--assets/node_modules/lodash/fp/without.js5
-rw-r--r--assets/node_modules/lodash/fp/words.js5
-rw-r--r--assets/node_modules/lodash/fp/wrap.js5
-rw-r--r--assets/node_modules/lodash/fp/wrapperAt.js5
-rw-r--r--assets/node_modules/lodash/fp/wrapperChain.js5
-rw-r--r--assets/node_modules/lodash/fp/wrapperLodash.js5
-rw-r--r--assets/node_modules/lodash/fp/wrapperReverse.js5
-rw-r--r--assets/node_modules/lodash/fp/wrapperValue.js5
-rw-r--r--assets/node_modules/lodash/fp/xor.js5
-rw-r--r--assets/node_modules/lodash/fp/xorBy.js5
-rw-r--r--assets/node_modules/lodash/fp/xorWith.js5
-rw-r--r--assets/node_modules/lodash/fp/zip.js5
-rw-r--r--assets/node_modules/lodash/fp/zipAll.js5
-rw-r--r--assets/node_modules/lodash/fp/zipObj.js1
-rw-r--r--assets/node_modules/lodash/fp/zipObject.js5
-rw-r--r--assets/node_modules/lodash/fp/zipObjectDeep.js5
-rw-r--r--assets/node_modules/lodash/fp/zipWith.js5
-rw-r--r--assets/node_modules/lodash/fromPairs.js28
-rw-r--r--assets/node_modules/lodash/function.js25
-rw-r--r--assets/node_modules/lodash/functions.js31
-rw-r--r--assets/node_modules/lodash/functionsIn.js31
-rw-r--r--assets/node_modules/lodash/get.js33
-rw-r--r--assets/node_modules/lodash/groupBy.js41
-rw-r--r--assets/node_modules/lodash/gt.js29
-rw-r--r--assets/node_modules/lodash/gte.js30
-rw-r--r--assets/node_modules/lodash/has.js35
-rw-r--r--assets/node_modules/lodash/hasIn.js34
-rw-r--r--assets/node_modules/lodash/head.js23
-rw-r--r--assets/node_modules/lodash/identity.js21
-rw-r--r--assets/node_modules/lodash/inRange.js55
-rw-r--r--assets/node_modules/lodash/includes.js53
-rw-r--r--assets/node_modules/lodash/index.js1
-rw-r--r--assets/node_modules/lodash/indexOf.js42
-rw-r--r--assets/node_modules/lodash/initial.js22
-rw-r--r--assets/node_modules/lodash/intersection.js30
-rw-r--r--assets/node_modules/lodash/intersectionBy.js45
-rw-r--r--assets/node_modules/lodash/intersectionWith.js41
-rw-r--r--assets/node_modules/lodash/invert.js42
-rw-r--r--assets/node_modules/lodash/invertBy.js56
-rw-r--r--assets/node_modules/lodash/invoke.js24
-rw-r--r--assets/node_modules/lodash/invokeMap.js41
-rw-r--r--assets/node_modules/lodash/isArguments.js36
-rw-r--r--assets/node_modules/lodash/isArray.js26
-rw-r--r--assets/node_modules/lodash/isArrayBuffer.js27
-rw-r--r--assets/node_modules/lodash/isArrayLike.js33
-rw-r--r--assets/node_modules/lodash/isArrayLikeObject.js33
-rw-r--r--assets/node_modules/lodash/isBoolean.js29
-rw-r--r--assets/node_modules/lodash/isBuffer.js38
-rw-r--r--assets/node_modules/lodash/isDate.js27
-rw-r--r--assets/node_modules/lodash/isElement.js25
-rw-r--r--assets/node_modules/lodash/isEmpty.js77
-rw-r--r--assets/node_modules/lodash/isEqual.js35
-rw-r--r--assets/node_modules/lodash/isEqualWith.js41
-rw-r--r--assets/node_modules/lodash/isError.js36
-rw-r--r--assets/node_modules/lodash/isFinite.js36
-rw-r--r--assets/node_modules/lodash/isFunction.js37
-rw-r--r--assets/node_modules/lodash/isInteger.js33
-rw-r--r--assets/node_modules/lodash/isLength.js35
-rw-r--r--assets/node_modules/lodash/isMap.js27
-rw-r--r--assets/node_modules/lodash/isMatch.js36
-rw-r--r--assets/node_modules/lodash/isMatchWith.js41
-rw-r--r--assets/node_modules/lodash/isNaN.js38
-rw-r--r--assets/node_modules/lodash/isNative.js40
-rw-r--r--assets/node_modules/lodash/isNil.js25
-rw-r--r--assets/node_modules/lodash/isNull.js22
-rw-r--r--assets/node_modules/lodash/isNumber.js38
-rw-r--r--assets/node_modules/lodash/isObject.js31
-rw-r--r--assets/node_modules/lodash/isObjectLike.js29
-rw-r--r--assets/node_modules/lodash/isPlainObject.js62
-rw-r--r--assets/node_modules/lodash/isRegExp.js27
-rw-r--r--assets/node_modules/lodash/isSafeInteger.js37
-rw-r--r--assets/node_modules/lodash/isSet.js27
-rw-r--r--assets/node_modules/lodash/isString.js30
-rw-r--r--assets/node_modules/lodash/isSymbol.js29
-rw-r--r--assets/node_modules/lodash/isTypedArray.js27
-rw-r--r--assets/node_modules/lodash/isUndefined.js22
-rw-r--r--assets/node_modules/lodash/isWeakMap.js28
-rw-r--r--assets/node_modules/lodash/isWeakSet.js28
-rw-r--r--assets/node_modules/lodash/iteratee.js53
-rw-r--r--assets/node_modules/lodash/join.js26
-rw-r--r--assets/node_modules/lodash/kebabCase.js28
-rw-r--r--assets/node_modules/lodash/keyBy.js36
-rw-r--r--assets/node_modules/lodash/keys.js37
-rw-r--r--assets/node_modules/lodash/keysIn.js32
-rw-r--r--assets/node_modules/lodash/lang.js58
-rw-r--r--assets/node_modules/lodash/last.js20
-rw-r--r--assets/node_modules/lodash/lastIndexOf.js46
-rw-r--r--assets/node_modules/lodash/lodash.js17112
-rw-r--r--assets/node_modules/lodash/lodash.min.js137
-rw-r--r--assets/node_modules/lodash/lowerCase.js27
-rw-r--r--assets/node_modules/lodash/lowerFirst.js22
-rw-r--r--assets/node_modules/lodash/lt.js29
-rw-r--r--assets/node_modules/lodash/lte.js30
-rw-r--r--assets/node_modules/lodash/map.js53
-rw-r--r--assets/node_modules/lodash/mapKeys.js36
-rw-r--r--assets/node_modules/lodash/mapValues.js43
-rw-r--r--assets/node_modules/lodash/matches.js39
-rw-r--r--assets/node_modules/lodash/matchesProperty.js37
-rw-r--r--assets/node_modules/lodash/math.js17
-rw-r--r--assets/node_modules/lodash/max.js29
-rw-r--r--assets/node_modules/lodash/maxBy.js34
-rw-r--r--assets/node_modules/lodash/mean.js22
-rw-r--r--assets/node_modules/lodash/meanBy.js31
-rw-r--r--assets/node_modules/lodash/memoize.js73
-rw-r--r--assets/node_modules/lodash/merge.js39
-rw-r--r--assets/node_modules/lodash/mergeWith.js39
-rw-r--r--assets/node_modules/lodash/method.js34
-rw-r--r--assets/node_modules/lodash/methodOf.js33
-rw-r--r--assets/node_modules/lodash/min.js29
-rw-r--r--assets/node_modules/lodash/minBy.js34
-rw-r--r--assets/node_modules/lodash/mixin.js74
-rw-r--r--assets/node_modules/lodash/multiply.js22
-rw-r--r--assets/node_modules/lodash/negate.js40
-rw-r--r--assets/node_modules/lodash/next.js35
-rw-r--r--assets/node_modules/lodash/noop.js17
-rw-r--r--assets/node_modules/lodash/now.js23
-rw-r--r--assets/node_modules/lodash/nth.js29
-rw-r--r--assets/node_modules/lodash/nthArg.js32
-rw-r--r--assets/node_modules/lodash/number.js5
-rw-r--r--assets/node_modules/lodash/object.js49
-rw-r--r--assets/node_modules/lodash/omit.js57
-rw-r--r--assets/node_modules/lodash/omitBy.js29
-rw-r--r--assets/node_modules/lodash/once.js25
-rw-r--r--assets/node_modules/lodash/orderBy.js47
-rw-r--r--assets/node_modules/lodash/over.js24
-rw-r--r--assets/node_modules/lodash/overArgs.js61
-rw-r--r--assets/node_modules/lodash/overEvery.js30
-rw-r--r--assets/node_modules/lodash/overSome.js30
-rw-r--r--assets/node_modules/lodash/package.json17
-rw-r--r--assets/node_modules/lodash/pad.js49
-rw-r--r--assets/node_modules/lodash/padEnd.js39
-rw-r--r--assets/node_modules/lodash/padStart.js39
-rw-r--r--assets/node_modules/lodash/parseInt.js43
-rw-r--r--assets/node_modules/lodash/partial.js50
-rw-r--r--assets/node_modules/lodash/partialRight.js49
-rw-r--r--assets/node_modules/lodash/partition.js43
-rw-r--r--assets/node_modules/lodash/pick.js25
-rw-r--r--assets/node_modules/lodash/pickBy.js37
-rw-r--r--assets/node_modules/lodash/plant.js48
-rw-r--r--assets/node_modules/lodash/property.js32
-rw-r--r--assets/node_modules/lodash/propertyOf.js30
-rw-r--r--assets/node_modules/lodash/pull.js29
-rw-r--r--assets/node_modules/lodash/pullAll.js29
-rw-r--r--assets/node_modules/lodash/pullAllBy.js33
-rw-r--r--assets/node_modules/lodash/pullAllWith.js32
-rw-r--r--assets/node_modules/lodash/pullAt.js43
-rw-r--r--assets/node_modules/lodash/random.js82
-rw-r--r--assets/node_modules/lodash/range.js46
-rw-r--r--assets/node_modules/lodash/rangeRight.js41
-rw-r--r--assets/node_modules/lodash/rearg.js33
-rw-r--r--assets/node_modules/lodash/reduce.js51
-rw-r--r--assets/node_modules/lodash/reduceRight.js36
-rw-r--r--assets/node_modules/lodash/reject.js46
-rw-r--r--assets/node_modules/lodash/remove.js53
-rw-r--r--assets/node_modules/lodash/repeat.js37
-rw-r--r--assets/node_modules/lodash/replace.js29
-rw-r--r--assets/node_modules/lodash/rest.js40
-rw-r--r--assets/node_modules/lodash/result.js56
-rw-r--r--assets/node_modules/lodash/reverse.js34
-rw-r--r--assets/node_modules/lodash/round.js26
-rw-r--r--assets/node_modules/lodash/sample.js24
-rw-r--r--assets/node_modules/lodash/sampleSize.js37
-rw-r--r--assets/node_modules/lodash/seq.js16
-rw-r--r--assets/node_modules/lodash/set.js35
-rw-r--r--assets/node_modules/lodash/setWith.js32
-rw-r--r--assets/node_modules/lodash/shuffle.js25
-rw-r--r--assets/node_modules/lodash/size.js46
-rw-r--r--assets/node_modules/lodash/slice.js37
-rw-r--r--assets/node_modules/lodash/snakeCase.js28
-rw-r--r--assets/node_modules/lodash/some.js51
-rw-r--r--assets/node_modules/lodash/sortBy.js48
-rw-r--r--assets/node_modules/lodash/sortedIndex.js24
-rw-r--r--assets/node_modules/lodash/sortedIndexBy.js33
-rw-r--r--assets/node_modules/lodash/sortedIndexOf.js31
-rw-r--r--assets/node_modules/lodash/sortedLastIndex.js25
-rw-r--r--assets/node_modules/lodash/sortedLastIndexBy.js33
-rw-r--r--assets/node_modules/lodash/sortedLastIndexOf.js31
-rw-r--r--assets/node_modules/lodash/sortedUniq.js24
-rw-r--r--assets/node_modules/lodash/sortedUniqBy.js26
-rw-r--r--assets/node_modules/lodash/split.js52
-rw-r--r--assets/node_modules/lodash/spread.js63
-rw-r--r--assets/node_modules/lodash/startCase.js29
-rw-r--r--assets/node_modules/lodash/startsWith.js39
-rw-r--r--assets/node_modules/lodash/string.js33
-rw-r--r--assets/node_modules/lodash/stubArray.js23
-rw-r--r--assets/node_modules/lodash/stubFalse.js18
-rw-r--r--assets/node_modules/lodash/stubObject.js23
-rw-r--r--assets/node_modules/lodash/stubString.js18
-rw-r--r--assets/node_modules/lodash/stubTrue.js18
-rw-r--r--assets/node_modules/lodash/subtract.js22
-rw-r--r--assets/node_modules/lodash/sum.js24
-rw-r--r--assets/node_modules/lodash/sumBy.js33
-rw-r--r--assets/node_modules/lodash/tail.js22
-rw-r--r--assets/node_modules/lodash/take.js37
-rw-r--r--assets/node_modules/lodash/takeRight.js39
-rw-r--r--assets/node_modules/lodash/takeRightWhile.js45
-rw-r--r--assets/node_modules/lodash/takeWhile.js45
-rw-r--r--assets/node_modules/lodash/tap.js29
-rw-r--r--assets/node_modules/lodash/template.js253
-rw-r--r--assets/node_modules/lodash/templateSettings.js67
-rw-r--r--assets/node_modules/lodash/throttle.js69
-rw-r--r--assets/node_modules/lodash/thru.js28
-rw-r--r--assets/node_modules/lodash/times.js51
-rw-r--r--assets/node_modules/lodash/toArray.js58
-rw-r--r--assets/node_modules/lodash/toFinite.js42
-rw-r--r--assets/node_modules/lodash/toInteger.js36
-rw-r--r--assets/node_modules/lodash/toIterator.js23
-rw-r--r--assets/node_modules/lodash/toJSON.js1
-rw-r--r--assets/node_modules/lodash/toLength.js38
-rw-r--r--assets/node_modules/lodash/toLower.js28
-rw-r--r--assets/node_modules/lodash/toNumber.js66
-rw-r--r--assets/node_modules/lodash/toPairs.js30
-rw-r--r--assets/node_modules/lodash/toPairsIn.js30
-rw-r--r--assets/node_modules/lodash/toPath.js33
-rw-r--r--assets/node_modules/lodash/toPlainObject.js32
-rw-r--r--assets/node_modules/lodash/toSafeInteger.js37
-rw-r--r--assets/node_modules/lodash/toString.js28
-rw-r--r--assets/node_modules/lodash/toUpper.js28
-rw-r--r--assets/node_modules/lodash/transform.js65
-rw-r--r--assets/node_modules/lodash/trim.js49
-rw-r--r--assets/node_modules/lodash/trimEnd.js43
-rw-r--r--assets/node_modules/lodash/trimStart.js43
-rw-r--r--assets/node_modules/lodash/truncate.js111
-rw-r--r--assets/node_modules/lodash/unary.js22
-rw-r--r--assets/node_modules/lodash/unescape.js34
-rw-r--r--assets/node_modules/lodash/union.js26
-rw-r--r--assets/node_modules/lodash/unionBy.js39
-rw-r--r--assets/node_modules/lodash/unionWith.js34
-rw-r--r--assets/node_modules/lodash/uniq.js25
-rw-r--r--assets/node_modules/lodash/uniqBy.js31
-rw-r--r--assets/node_modules/lodash/uniqWith.js28
-rw-r--r--assets/node_modules/lodash/uniqueId.js28
-rw-r--r--assets/node_modules/lodash/unset.js34
-rw-r--r--assets/node_modules/lodash/unzip.js45
-rw-r--r--assets/node_modules/lodash/unzipWith.js39
-rw-r--r--assets/node_modules/lodash/update.js35
-rw-r--r--assets/node_modules/lodash/updateWith.js33
-rw-r--r--assets/node_modules/lodash/upperCase.js27
-rw-r--r--assets/node_modules/lodash/upperFirst.js22
-rw-r--r--assets/node_modules/lodash/util.js34
-rw-r--r--assets/node_modules/lodash/value.js1
-rw-r--r--assets/node_modules/lodash/valueOf.js1
-rw-r--r--assets/node_modules/lodash/values.js34
-rw-r--r--assets/node_modules/lodash/valuesIn.js32
-rw-r--r--assets/node_modules/lodash/without.js31
-rw-r--r--assets/node_modules/lodash/words.js35
-rw-r--r--assets/node_modules/lodash/wrap.js30
-rw-r--r--assets/node_modules/lodash/wrapperAt.js48
-rw-r--r--assets/node_modules/lodash/wrapperChain.js34
-rw-r--r--assets/node_modules/lodash/wrapperLodash.js147
-rw-r--r--assets/node_modules/lodash/wrapperReverse.js44
-rw-r--r--assets/node_modules/lodash/wrapperValue.js21
-rw-r--r--assets/node_modules/lodash/xor.js28
-rw-r--r--assets/node_modules/lodash/xorBy.js39
-rw-r--r--assets/node_modules/lodash/xorWith.js34
-rw-r--r--assets/node_modules/lodash/zip.js22
-rw-r--r--assets/node_modules/lodash/zipObject.js24
-rw-r--r--assets/node_modules/lodash/zipObjectDeep.js23
-rw-r--r--assets/node_modules/lodash/zipWith.js32
-rw-r--r--assets/node_modules/log-symbols/browser.js8
-rw-r--r--assets/node_modules/log-symbols/index.d.ts25
-rw-r--r--assets/node_modules/log-symbols/index.js20
-rw-r--r--assets/node_modules/log-symbols/license9
-rw-r--r--assets/node_modules/log-symbols/package.json50
-rw-r--r--assets/node_modules/log-symbols/readme.md46
-rw-r--r--assets/node_modules/longest-streak/index.js36
-rw-r--r--assets/node_modules/longest-streak/license22
-rw-r--r--assets/node_modules/longest-streak/package.json73
-rw-r--r--assets/node_modules/longest-streak/readme.md72
-rw-r--r--assets/node_modules/map-obj/index.js13
-rw-r--r--assets/node_modules/map-obj/license21
-rw-r--r--assets/node_modules/map-obj/package.json36
-rw-r--r--assets/node_modules/map-obj/readme.md29
-rw-r--r--assets/node_modules/markdown-escapes/index.js57
-rw-r--r--assets/node_modules/markdown-escapes/license22
-rw-r--r--assets/node_modules/markdown-escapes/package.json72
-rw-r--r--assets/node_modules/markdown-escapes/readme.md80
-rw-r--r--assets/node_modules/markdown-table/index.js250
-rw-r--r--assets/node_modules/markdown-table/license22
-rw-r--r--assets/node_modules/markdown-table/package.json76
-rw-r--r--assets/node_modules/markdown-table/readme.md180
-rw-r--r--assets/node_modules/mathml-tag-names/index.json204
-rw-r--r--assets/node_modules/mathml-tag-names/license22
-rw-r--r--assets/node_modules/mathml-tag-names/package.json74
-rw-r--r--assets/node_modules/mathml-tag-names/readme.md103
-rw-r--r--assets/node_modules/mdast-util-compact/index.js61
-rw-r--r--assets/node_modules/mdast-util-compact/license22
-rw-r--r--assets/node_modules/mdast-util-compact/package.json74
-rw-r--r--assets/node_modules/mdast-util-compact/readme.md127
-rw-r--r--assets/node_modules/meow/index.d.ts252
-rw-r--r--assets/node_modules/meow/index.js132
-rw-r--r--assets/node_modules/meow/license9
-rw-r--r--assets/node_modules/meow/package.json66
-rw-r--r--assets/node_modules/meow/readme.md290
-rw-r--r--assets/node_modules/merge2/LICENSE21
-rw-r--r--assets/node_modules/merge2/README.md142
-rw-r--r--assets/node_modules/merge2/index.js107
-rw-r--r--assets/node_modules/merge2/package.json43
-rw-r--r--assets/node_modules/micromatch/CHANGELOG.md108
-rwxr-xr-xassets/node_modules/micromatch/LICENSE21
-rw-r--r--assets/node_modules/micromatch/README.md1000
-rw-r--r--assets/node_modules/micromatch/index.js467
-rw-r--r--assets/node_modules/micromatch/package.json118
-rw-r--r--assets/node_modules/min-indent/index.js11
-rw-r--r--assets/node_modules/min-indent/license22
-rw-r--r--assets/node_modules/min-indent/package.json38
-rw-r--r--assets/node_modules/min-indent/readme.md41
-rw-r--r--assets/node_modules/minimatch/LICENSE15
-rw-r--r--assets/node_modules/minimatch/README.md209
-rw-r--r--assets/node_modules/minimatch/minimatch.js923
-rw-r--r--assets/node_modules/minimatch/package.json30
-rw-r--r--assets/node_modules/minimist-options/index.d.ts51
-rw-r--r--assets/node_modules/minimist-options/index.js86
-rw-r--r--assets/node_modules/minimist-options/license21
-rw-r--r--assets/node_modules/minimist-options/package.json33
-rw-r--r--assets/node_modules/minimist-options/readme.md81
-rw-r--r--assets/node_modules/minimist/.travis.yml8
-rw-r--r--assets/node_modules/minimist/LICENSE18
-rw-r--r--assets/node_modules/minimist/example/parse.js2
-rw-r--r--assets/node_modules/minimist/index.js230
-rw-r--r--assets/node_modules/minimist/package.json45
-rw-r--r--assets/node_modules/minimist/readme.markdown91
-rw-r--r--assets/node_modules/minimist/test/all_bool.js32
-rw-r--r--assets/node_modules/minimist/test/bool.js166
-rw-r--r--assets/node_modules/minimist/test/dash.js31
-rw-r--r--assets/node_modules/minimist/test/default_bool.js35
-rw-r--r--assets/node_modules/minimist/test/dotted.js22
-rw-r--r--assets/node_modules/minimist/test/long.js31
-rw-r--r--assets/node_modules/minimist/test/num.js36
-rw-r--r--assets/node_modules/minimist/test/parse.js197
-rw-r--r--assets/node_modules/minimist/test/parse_modified.js9
-rw-r--r--assets/node_modules/minimist/test/short.js67
-rw-r--r--assets/node_modules/minimist/test/stop_early.js15
-rw-r--r--assets/node_modules/minimist/test/unknown.js102
-rw-r--r--assets/node_modules/minimist/test/whitespace.js8
-rw-r--r--assets/node_modules/mkdirp/.travis.yml8
-rw-r--r--assets/node_modules/mkdirp/LICENSE21
-rwxr-xr-xassets/node_modules/mkdirp/bin/cmd.js33
-rw-r--r--assets/node_modules/mkdirp/bin/usage.txt12
-rw-r--r--assets/node_modules/mkdirp/examples/pow.js6
-rw-r--r--assets/node_modules/mkdirp/index.js98
-rw-r--r--assets/node_modules/mkdirp/node_modules/minimist/.travis.yml4
-rw-r--r--assets/node_modules/mkdirp/node_modules/minimist/LICENSE18
-rw-r--r--assets/node_modules/mkdirp/node_modules/minimist/example/parse.js2
-rw-r--r--assets/node_modules/mkdirp/node_modules/minimist/index.js187
-rw-r--r--assets/node_modules/mkdirp/node_modules/minimist/package.json40
-rw-r--r--assets/node_modules/mkdirp/node_modules/minimist/readme.markdown73
-rw-r--r--assets/node_modules/mkdirp/node_modules/minimist/test/dash.js24
-rw-r--r--assets/node_modules/mkdirp/node_modules/minimist/test/default_bool.js20
-rw-r--r--assets/node_modules/mkdirp/node_modules/minimist/test/dotted.js16
-rw-r--r--assets/node_modules/mkdirp/node_modules/minimist/test/long.js31
-rw-r--r--assets/node_modules/mkdirp/node_modules/minimist/test/parse.js318
-rw-r--r--assets/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js9
-rw-r--r--assets/node_modules/mkdirp/node_modules/minimist/test/short.js67
-rw-r--r--assets/node_modules/mkdirp/node_modules/minimist/test/whitespace.js8
-rw-r--r--assets/node_modules/mkdirp/package.json27
-rw-r--r--assets/node_modules/mkdirp/readme.markdown100
-rw-r--r--assets/node_modules/mkdirp/test/chmod.js41
-rw-r--r--assets/node_modules/mkdirp/test/clobber.js38
-rw-r--r--assets/node_modules/mkdirp/test/mkdirp.js28
-rw-r--r--assets/node_modules/mkdirp/test/opts_fs.js29
-rw-r--r--assets/node_modules/mkdirp/test/opts_fs_sync.js27
-rw-r--r--assets/node_modules/mkdirp/test/perm.js32
-rw-r--r--assets/node_modules/mkdirp/test/perm_sync.js36
-rw-r--r--assets/node_modules/mkdirp/test/race.js37
-rw-r--r--assets/node_modules/mkdirp/test/rel.js32
-rw-r--r--assets/node_modules/mkdirp/test/return.js25
-rw-r--r--assets/node_modules/mkdirp/test/return_sync.js24
-rw-r--r--assets/node_modules/mkdirp/test/root.js19
-rw-r--r--assets/node_modules/mkdirp/test/sync.js32
-rw-r--r--assets/node_modules/mkdirp/test/umask.js28
-rw-r--r--assets/node_modules/mkdirp/test/umask_sync.js32
-rw-r--r--assets/node_modules/ms/index.js162
-rw-r--r--assets/node_modules/ms/license.md21
-rw-r--r--assets/node_modules/ms/package.json37
-rw-r--r--assets/node_modules/ms/readme.md60
-rw-r--r--assets/node_modules/node-releases/.idea/encodings.xml4
-rw-r--r--assets/node_modules/node-releases/.idea/inspectionProfiles/Project_Default.xml8
-rw-r--r--assets/node_modules/node-releases/.idea/misc.xml9
-rw-r--r--assets/node_modules/node-releases/.idea/modules.xml8
-rw-r--r--assets/node_modules/node-releases/.idea/node-releases.iml12
-rw-r--r--assets/node_modules/node-releases/.idea/vcs.xml6
-rw-r--r--assets/node_modules/node-releases/.idea/workspace.xml121
-rw-r--r--assets/node_modules/node-releases/LICENSE21
-rw-r--r--assets/node_modules/node-releases/README.md31
-rw-r--r--assets/node_modules/node-releases/data/processed/envs.json1139
-rw-r--r--assets/node_modules/node-releases/data/raw/iojs.json43
-rw-r--r--assets/node_modules/node-releases/data/raw/nodejs.json491
-rw-r--r--assets/node_modules/node-releases/data/release-schedule/release-schedule.json77
l---------assets/node_modules/node-releases/node_modules/.bin/semver1
-rw-r--r--assets/node_modules/node-releases/node_modules/semver/CHANGELOG.md70
-rw-r--r--assets/node_modules/node-releases/node_modules/semver/LICENSE15
-rw-r--r--assets/node_modules/node-releases/node_modules/semver/README.md443
-rwxr-xr-xassets/node_modules/node-releases/node_modules/semver/bin/semver.js174
-rw-r--r--assets/node_modules/node-releases/node_modules/semver/package.json28
-rw-r--r--assets/node_modules/node-releases/node_modules/semver/range.bnf16
-rw-r--r--assets/node_modules/node-releases/node_modules/semver/semver.js1596
-rw-r--r--assets/node_modules/node-releases/package.json23
-rw-r--r--assets/node_modules/normalize-package-data/AUTHORS4
-rw-r--r--assets/node_modules/normalize-package-data/LICENSE30
-rw-r--r--assets/node_modules/normalize-package-data/README.md106
-rw-r--r--assets/node_modules/normalize-package-data/lib/extract_description.js14
-rw-r--r--assets/node_modules/normalize-package-data/lib/fixer.js418
-rw-r--r--assets/node_modules/normalize-package-data/lib/make_warning.js23
-rw-r--r--assets/node_modules/normalize-package-data/lib/normalize.js39
-rw-r--r--assets/node_modules/normalize-package-data/lib/safe_format.js9
-rw-r--r--assets/node_modules/normalize-package-data/lib/typos.json25
-rw-r--r--assets/node_modules/normalize-package-data/lib/warning_messages.json30
l---------assets/node_modules/normalize-package-data/node_modules/.bin/semver1
-rw-r--r--assets/node_modules/normalize-package-data/package.json31
-rw-r--r--assets/node_modules/normalize-path/LICENSE21
-rw-r--r--assets/node_modules/normalize-path/README.md127
-rw-r--r--assets/node_modules/normalize-path/index.js35
-rw-r--r--assets/node_modules/normalize-path/package.json77
-rw-r--r--assets/node_modules/normalize-range/index.js54
-rw-r--r--assets/node_modules/normalize-range/license21
-rw-r--r--assets/node_modules/normalize-range/package.json46
-rw-r--r--assets/node_modules/normalize-range/readme.md148
-rw-r--r--assets/node_modules/normalize-selector/.npmignore1
-rw-r--r--assets/node_modules/normalize-selector/README.md34
-rw-r--r--assets/node_modules/normalize-selector/lib/normalize-selector.js163
-rw-r--r--assets/node_modules/normalize-selector/package.json30
-rw-r--r--assets/node_modules/normalize-selector/test/mocha/browser-suite.html23
-rw-r--r--assets/node_modules/normalize-selector/test/mocha/node-suite.js18
-rw-r--r--assets/node_modules/normalize-selector/test/mocha/suite.js117
-rw-r--r--assets/node_modules/normalize-selector/tests.js49
-rw-r--r--assets/node_modules/num2fraction/.editorconfig14
-rw-r--r--assets/node_modules/num2fraction/.npmignore8
-rw-r--r--assets/node_modules/num2fraction/LICENSE22
-rw-r--r--assets/node_modules/num2fraction/README.md87
-rw-r--r--assets/node_modules/num2fraction/index.js48
-rw-r--r--assets/node_modules/num2fraction/package.json31
-rw-r--r--assets/node_modules/once/LICENSE15
-rw-r--r--assets/node_modules/once/README.md79
-rw-r--r--assets/node_modules/once/once.js42
-rw-r--r--assets/node_modules/once/package.json33
-rw-r--r--assets/node_modules/p-limit/index.d.ts29
-rw-r--r--assets/node_modules/p-limit/index.js52
-rw-r--r--assets/node_modules/p-limit/license9
-rw-r--r--assets/node_modules/p-limit/package.json52
-rw-r--r--assets/node_modules/p-limit/readme.md93
-rw-r--r--assets/node_modules/p-locate/index.d.ts64
-rw-r--r--assets/node_modules/p-locate/index.js52
-rw-r--r--assets/node_modules/p-locate/license9
-rw-r--r--assets/node_modules/p-locate/package.json53
-rw-r--r--assets/node_modules/p-locate/readme.md90
-rw-r--r--assets/node_modules/p-try/index.d.ts39
-rw-r--r--assets/node_modules/p-try/index.js9
-rw-r--r--assets/node_modules/p-try/license9
-rw-r--r--assets/node_modules/p-try/package.json42
-rw-r--r--assets/node_modules/p-try/readme.md58
-rw-r--r--assets/node_modules/parent-module/index.js37
-rw-r--r--assets/node_modules/parent-module/license9
-rw-r--r--assets/node_modules/parent-module/package.json46
-rw-r--r--assets/node_modules/parent-module/readme.md67
-rw-r--r--assets/node_modules/parse-entities/decode-entity.browser.js30
-rw-r--r--assets/node_modules/parse-entities/decode-entity.js13
-rw-r--r--assets/node_modules/parse-entities/index.js450
-rw-r--r--assets/node_modules/parse-entities/license22
-rw-r--r--assets/node_modules/parse-entities/package.json91
-rw-r--r--assets/node_modules/parse-entities/readme.md217
-rw-r--r--assets/node_modules/parse-json/index.js50
-rw-r--r--assets/node_modules/parse-json/license9
-rw-r--r--assets/node_modules/parse-json/package.json44
-rw-r--r--assets/node_modules/parse-json/readme.md101
-rw-r--r--assets/node_modules/path-exists/index.d.ts28
-rw-r--r--assets/node_modules/path-exists/index.js23
-rw-r--r--assets/node_modules/path-exists/license9
-rw-r--r--assets/node_modules/path-exists/package.json39
-rw-r--r--assets/node_modules/path-exists/readme.md52
-rw-r--r--assets/node_modules/path-is-absolute/index.js20
-rw-r--r--assets/node_modules/path-is-absolute/license21
-rw-r--r--assets/node_modules/path-is-absolute/package.json43
-rw-r--r--assets/node_modules/path-is-absolute/readme.md59
-rw-r--r--assets/node_modules/path-parse/.travis.yml9
-rw-r--r--assets/node_modules/path-parse/LICENSE21
-rw-r--r--assets/node_modules/path-parse/README.md42
-rw-r--r--assets/node_modules/path-parse/index.js93
-rw-r--r--assets/node_modules/path-parse/package.json33
-rw-r--r--assets/node_modules/path-parse/test.js77
-rw-r--r--assets/node_modules/path-type/index.d.ts51
-rw-r--r--assets/node_modules/path-type/index.js43
-rw-r--r--assets/node_modules/path-type/license9
-rw-r--r--assets/node_modules/path-type/package.json45
-rw-r--r--assets/node_modules/path-type/readme.md72
-rw-r--r--assets/node_modules/picomatch/CHANGELOG.md107
-rw-r--r--assets/node_modules/picomatch/LICENSE21
-rw-r--r--assets/node_modules/picomatch/README.md690
-rw-r--r--assets/node_modules/picomatch/index.js3
-rw-r--r--assets/node_modules/picomatch/lib/.DS_Storebin6148 -> 0 bytes
-rw-r--r--assets/node_modules/picomatch/lib/constants.js179
-rw-r--r--assets/node_modules/picomatch/lib/parse.js1080
-rw-r--r--assets/node_modules/picomatch/lib/picomatch.js338
-rw-r--r--assets/node_modules/picomatch/lib/scan.js382
-rw-r--r--assets/node_modules/picomatch/lib/utils.js64
-rw-r--r--assets/node_modules/picomatch/package.json81
-rw-r--r--assets/node_modules/postcss-html/LICENSE21
-rw-r--r--assets/node_modules/postcss-html/README.md78
-rw-r--r--assets/node_modules/postcss-html/extract.js122
-rw-r--r--assets/node_modules/postcss-html/index.js5
-rw-r--r--assets/node_modules/postcss-html/package.json63
-rw-r--r--assets/node_modules/postcss-html/template-parse.js14
-rw-r--r--assets/node_modules/postcss-html/template-parser.js9
-rw-r--r--assets/node_modules/postcss-html/template-safe-parse.js14
-rw-r--r--assets/node_modules/postcss-html/template-safe-parser.js9
-rw-r--r--assets/node_modules/postcss-html/template-tokenize.js49
-rw-r--r--assets/node_modules/postcss-jsx/LICENSE21
-rw-r--r--assets/node_modules/postcss-jsx/README.md91
-rw-r--r--assets/node_modules/postcss-jsx/camel-case.js18
-rw-r--r--assets/node_modules/postcss-jsx/extract.js386
-rw-r--r--assets/node_modules/postcss-jsx/get-template.js5
-rw-r--r--assets/node_modules/postcss-jsx/index.js5
-rw-r--r--assets/node_modules/postcss-jsx/literal.js23
-rw-r--r--assets/node_modules/postcss-jsx/object-parse.js12
-rw-r--r--assets/node_modules/postcss-jsx/object-parser.js327
-rw-r--r--assets/node_modules/postcss-jsx/object-stringifier.js124
-rw-r--r--assets/node_modules/postcss-jsx/object-stringify.js7
-rw-r--r--assets/node_modules/postcss-jsx/object-syntax.js10
-rw-r--r--assets/node_modules/postcss-jsx/object.js23
-rw-r--r--assets/node_modules/postcss-jsx/package.json64
-rw-r--r--assets/node_modules/postcss-jsx/template-parse.js14
-rw-r--r--assets/node_modules/postcss-jsx/template-parser-helper.js52
-rw-r--r--assets/node_modules/postcss-jsx/template-parser.js18
-rw-r--r--assets/node_modules/postcss-jsx/template-safe-parse.js14
-rw-r--r--assets/node_modules/postcss-jsx/template-safe-parser.js18
-rw-r--r--assets/node_modules/postcss-jsx/template-stringifier.js13
-rw-r--r--assets/node_modules/postcss-jsx/template-stringify.js7
-rw-r--r--assets/node_modules/postcss-jsx/template-tokenize.js57
-rw-r--r--assets/node_modules/postcss-jsx/un-camel-case.js16
-rw-r--r--assets/node_modules/postcss-less/LICENSE24
-rw-r--r--assets/node_modules/postcss-less/README.md150
-rw-r--r--assets/node_modules/postcss-less/lib/LessParser.js211
-rw-r--r--assets/node_modules/postcss-less/lib/LessStringifier.js42
-rw-r--r--assets/node_modules/postcss-less/lib/index.js30
-rw-r--r--assets/node_modules/postcss-less/lib/nodes/import.js29
-rw-r--r--assets/node_modules/postcss-less/lib/nodes/inline-comment.js58
-rw-r--r--assets/node_modules/postcss-less/lib/nodes/interpolation.js34
-rw-r--r--assets/node_modules/postcss-less/lib/nodes/mixin.js17
-rw-r--r--assets/node_modules/postcss-less/lib/nodes/variable.js34
-rw-r--r--assets/node_modules/postcss-less/package.json66
-rw-r--r--assets/node_modules/postcss-markdown/LICENSE21
-rw-r--r--assets/node_modules/postcss-markdown/README.md93
-rw-r--r--assets/node_modules/postcss-markdown/extract.js42
-rw-r--r--assets/node_modules/postcss-markdown/index.js5
-rw-r--r--assets/node_modules/postcss-markdown/package.json61
-rw-r--r--assets/node_modules/postcss-media-query-parser/CHANGELOG.md20
-rw-r--r--assets/node_modules/postcss-media-query-parser/README.md173
-rw-r--r--assets/node_modules/postcss-media-query-parser/dist/index.js43
-rw-r--r--assets/node_modules/postcss-media-query-parser/dist/nodes/Container.js94
-rw-r--r--assets/node_modules/postcss-media-query-parser/dist/nodes/Node.js18
-rw-r--r--assets/node_modules/postcss-media-query-parser/dist/parsers.js367
-rw-r--r--assets/node_modules/postcss-media-query-parser/package.json60
-rw-r--r--assets/node_modules/postcss-reporter/CHANGELOG.md74
-rw-r--r--assets/node_modules/postcss-reporter/LICENSE22
-rw-r--r--assets/node_modules/postcss-reporter/README.md149
-rw-r--r--assets/node_modules/postcss-reporter/index.js4
-rw-r--r--assets/node_modules/postcss-reporter/lib/formatter.js82
-rw-r--r--assets/node_modules/postcss-reporter/lib/reporter.js81
-rw-r--r--assets/node_modules/postcss-reporter/lib/util.js20
-rw-r--r--assets/node_modules/postcss-reporter/node_modules/log-symbols/browser.js7
-rw-r--r--assets/node_modules/postcss-reporter/node_modules/log-symbols/index.js20
-rw-r--r--assets/node_modules/postcss-reporter/node_modules/log-symbols/license9
-rw-r--r--assets/node_modules/postcss-reporter/node_modules/log-symbols/package.json50
-rw-r--r--assets/node_modules/postcss-reporter/node_modules/log-symbols/readme.md45
-rw-r--r--assets/node_modules/postcss-reporter/package.json26
-rw-r--r--assets/node_modules/postcss-resolve-nested-selector/LICENSE21
-rw-r--r--assets/node_modules/postcss-resolve-nested-selector/README.md65
-rw-r--r--assets/node_modules/postcss-resolve-nested-selector/index.js25
-rw-r--r--assets/node_modules/postcss-resolve-nested-selector/package.json20
-rw-r--r--assets/node_modules/postcss-safe-parser/CHANGELOG.md48
-rw-r--r--assets/node_modules/postcss-safe-parser/LICENSE20
-rw-r--r--assets/node_modules/postcss-safe-parser/README.md33
-rw-r--r--assets/node_modules/postcss-safe-parser/lib/safe-parse.js15
-rw-r--r--assets/node_modules/postcss-safe-parser/lib/safe-parser.js106
-rw-r--r--assets/node_modules/postcss-safe-parser/package.json107
-rw-r--r--assets/node_modules/postcss-sass/CHANGELOG.md43
-rw-r--r--assets/node_modules/postcss-sass/LICENSE20
-rw-r--r--assets/node_modules/postcss-sass/README.md21
-rw-r--r--assets/node_modules/postcss-sass/index.js11
l---------assets/node_modules/postcss-sass/node_modules/.bin/gonzales1
-rw-r--r--assets/node_modules/postcss-sass/package.json119
-rw-r--r--assets/node_modules/postcss-sass/parse.js13
-rw-r--r--assets/node_modules/postcss-sass/parser.js585
-rw-r--r--assets/node_modules/postcss-sass/stringifier.js43
-rw-r--r--assets/node_modules/postcss-sass/stringify.js9
-rw-r--r--assets/node_modules/postcss-scss/CHANGELOG.md81
-rw-r--r--assets/node_modules/postcss-scss/LICENSE20
-rw-r--r--assets/node_modules/postcss-scss/README.md89
-rw-r--r--assets/node_modules/postcss-scss/lib/nested-declaration.js29
-rw-r--r--assets/node_modules/postcss-scss/lib/scss-parse.js15
-rw-r--r--assets/node_modules/postcss-scss/lib/scss-parser.js199
-rw-r--r--assets/node_modules/postcss-scss/lib/scss-stringifier.js70
-rw-r--r--assets/node_modules/postcss-scss/lib/scss-stringify.js9
-rw-r--r--assets/node_modules/postcss-scss/lib/scss-syntax.js7
-rw-r--r--assets/node_modules/postcss-scss/lib/scss-tokenize.js410
-rw-r--r--assets/node_modules/postcss-scss/package.json16
-rw-r--r--assets/node_modules/postcss-selector-parser/API.md836
-rw-r--r--assets/node_modules/postcss-selector-parser/CHANGELOG.md209
-rw-r--r--assets/node_modules/postcss-selector-parser/LICENSE-MIT22
-rw-r--r--assets/node_modules/postcss-selector-parser/README.md49
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/index.js26
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/parser.js767
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/processor.js185
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/attribute.js196
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/className.js39
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/combinator.js35
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/comment.js35
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/constructors.js91
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/container.js344
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/guards.js54
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/id.js39
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/index.js39
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/namespace.js83
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/nesting.js36
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/node.js95
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/pseudo.js40
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/root.js60
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/selector.js35
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/string.js35
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/tag.js35
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/types.js15
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/selectors/universal.js36
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/sortAscending.js10
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/tokenTypes.js38
-rw-r--r--assets/node_modules/postcss-selector-parser/dist/tokenize.js217
-rw-r--r--assets/node_modules/postcss-selector-parser/package.json76
-rw-r--r--assets/node_modules/postcss-selector-parser/postcss-selector-parser.d.ts388
-rw-r--r--assets/node_modules/postcss-syntax/LICENSE21
-rw-r--r--assets/node_modules/postcss-syntax/README.md85
-rw-r--r--assets/node_modules/postcss-syntax/document.js41
-rw-r--r--assets/node_modules/postcss-syntax/get-lang.js111
-rw-r--r--assets/node_modules/postcss-syntax/get-syntax.js63
-rw-r--r--assets/node_modules/postcss-syntax/index.js26
-rw-r--r--assets/node_modules/postcss-syntax/load-syntax.js23
-rw-r--r--assets/node_modules/postcss-syntax/normal-opts.js11
-rw-r--r--assets/node_modules/postcss-syntax/package.json102
-rw-r--r--assets/node_modules/postcss-syntax/parse-style.js127
-rw-r--r--assets/node_modules/postcss-syntax/parse.js34
-rw-r--r--assets/node_modules/postcss-syntax/parser.js18
-rw-r--r--assets/node_modules/postcss-syntax/patch-postcss.js77
-rw-r--r--assets/node_modules/postcss-syntax/processor.js29
-rw-r--r--assets/node_modules/postcss-syntax/stringify.js20
-rw-r--r--assets/node_modules/postcss-syntax/syntax.js37
-rw-r--r--assets/node_modules/postcss-value-parser/LICENSE22
-rw-r--r--assets/node_modules/postcss-value-parser/README.md263
-rw-r--r--assets/node_modules/postcss-value-parser/lib/index.d.ts172
-rw-r--r--assets/node_modules/postcss-value-parser/lib/index.js28
-rw-r--r--assets/node_modules/postcss-value-parser/lib/parse.js304
-rw-r--r--assets/node_modules/postcss-value-parser/lib/stringify.js48
-rw-r--r--assets/node_modules/postcss-value-parser/lib/unit.js120
-rw-r--r--assets/node_modules/postcss-value-parser/lib/walk.js22
-rw-r--r--assets/node_modules/postcss-value-parser/package.json58
-rw-r--r--assets/node_modules/postcss/CHANGELOG.md641
-rw-r--r--assets/node_modules/postcss/LICENSE20
-rw-r--r--assets/node_modules/postcss/README.md466
-rw-r--r--assets/node_modules/postcss/docs/architecture.md156
-rw-r--r--assets/node_modules/postcss/docs/guidelines/plugin.md195
-rw-r--r--assets/node_modules/postcss/docs/guidelines/runner.md143
-rw-r--r--assets/node_modules/postcss/docs/source-maps.md74
-rw-r--r--assets/node_modules/postcss/docs/syntax.md233
-rw-r--r--assets/node_modules/postcss/lib/at-rule.js129
-rw-r--r--assets/node_modules/postcss/lib/comment.js57
-rw-r--r--assets/node_modules/postcss/lib/container.js869
-rw-r--r--assets/node_modules/postcss/lib/css-syntax-error.js300
-rw-r--r--assets/node_modules/postcss/lib/declaration.js98
-rw-r--r--assets/node_modules/postcss/lib/input.js216
-rw-r--r--assets/node_modules/postcss/lib/lazy-result.js444
-rw-r--r--assets/node_modules/postcss/lib/list.js93
-rw-r--r--assets/node_modules/postcss/lib/map-generator.js354
-rw-r--r--assets/node_modules/postcss/lib/node.js608
-rw-r--r--assets/node_modules/postcss/lib/parse.js40
-rw-r--r--assets/node_modules/postcss/lib/parser.js611
-rw-r--r--assets/node_modules/postcss/lib/postcss.d.ts1277
-rw-r--r--assets/node_modules/postcss/lib/postcss.js285
-rw-r--r--assets/node_modules/postcss/lib/previous-map.js161
-rw-r--r--assets/node_modules/postcss/lib/processor.js263
-rw-r--r--assets/node_modules/postcss/lib/result.js215
-rw-r--r--assets/node_modules/postcss/lib/root.js129
-rw-r--r--assets/node_modules/postcss/lib/rule.js118
-rw-r--r--assets/node_modules/postcss/lib/stringifier.js364
-rw-r--r--assets/node_modules/postcss/lib/stringify.js18
-rw-r--r--assets/node_modules/postcss/lib/terminal-highlight.js84
-rw-r--r--assets/node_modules/postcss/lib/tokenize.js295
-rw-r--r--assets/node_modules/postcss/lib/vendor.js53
-rw-r--r--assets/node_modules/postcss/lib/warn-once.js17
-rw-r--r--assets/node_modules/postcss/lib/warning.js133
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/CHANGELOG.md301
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/LICENSE28
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/README.md742
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/dist/source-map.debug.js3234
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/dist/source-map.js3233
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/dist/source-map.min.js2
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/dist/source-map.min.js.map1
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/lib/array-set.js121
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/lib/base64-vlq.js140
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/lib/base64.js67
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/lib/binary-search.js111
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/lib/mapping-list.js79
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/lib/quick-sort.js114
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/lib/source-map-consumer.js1145
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/lib/source-map-generator.js425
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/lib/source-node.js413
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/lib/util.js488
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/package.json73
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/source-map.d.ts98
-rw-r--r--assets/node_modules/postcss/node_modules/source-map/source-map.js8
-rw-r--r--assets/node_modules/postcss/node_modules/supports-color/browser.js5
-rw-r--r--assets/node_modules/postcss/node_modules/supports-color/index.js138
-rw-r--r--assets/node_modules/postcss/node_modules/supports-color/license9
-rw-r--r--assets/node_modules/postcss/node_modules/supports-color/package.json53
-rw-r--r--assets/node_modules/postcss/node_modules/supports-color/readme.md85
-rw-r--r--assets/node_modules/postcss/package.json36
-rw-r--r--assets/node_modules/punycode/LICENSE-MIT.txt20
-rw-r--r--assets/node_modules/punycode/README.md122
-rw-r--r--assets/node_modules/punycode/package.json58
-rw-r--r--assets/node_modules/punycode/punycode.es6.js441
-rw-r--r--assets/node_modules/punycode/punycode.js440
-rw-r--r--assets/node_modules/quick-lru/index.d.ts90
-rw-r--r--assets/node_modules/quick-lru/index.js115
-rw-r--r--assets/node_modules/quick-lru/license9
-rw-r--r--assets/node_modules/quick-lru/package.json42
-rw-r--r--assets/node_modules/quick-lru/readme.md93
-rw-r--r--assets/node_modules/read-pkg-up/index.d.ts87
-rw-r--r--assets/node_modules/read-pkg-up/index.js30
-rw-r--r--assets/node_modules/read-pkg-up/license9
-rw-r--r--assets/node_modules/read-pkg-up/package.json59
-rw-r--r--assets/node_modules/read-pkg-up/readme.md77
-rw-r--r--assets/node_modules/read-pkg/index.d.ts67
-rw-r--r--assets/node_modules/read-pkg/index.js41
-rw-r--r--assets/node_modules/read-pkg/license9
-rw-r--r--assets/node_modules/read-pkg/node_modules/type-fest/index.d.ts15
-rw-r--r--assets/node_modules/read-pkg/node_modules/type-fest/license9
-rw-r--r--assets/node_modules/read-pkg/node_modules/type-fest/package.json51
-rw-r--r--assets/node_modules/read-pkg/node_modules/type-fest/readme.md119
-rw-r--r--assets/node_modules/read-pkg/node_modules/type-fest/source/basic.d.ts67
-rw-r--r--assets/node_modules/read-pkg/node_modules/type-fest/source/except.d.ts22
-rw-r--r--assets/node_modules/read-pkg/node_modules/type-fest/source/literal-union.d.ts33
-rw-r--r--assets/node_modules/read-pkg/node_modules/type-fest/source/merge-exclusive.d.ts39
-rw-r--r--assets/node_modules/read-pkg/node_modules/type-fest/source/merge.d.ts22
-rw-r--r--assets/node_modules/read-pkg/node_modules/type-fest/source/mutable.d.ts22
-rw-r--r--assets/node_modules/read-pkg/node_modules/type-fest/source/package-json.d.ts501
-rw-r--r--assets/node_modules/read-pkg/node_modules/type-fest/source/promisable.d.ts23
-rw-r--r--assets/node_modules/read-pkg/node_modules/type-fest/source/readonly-deep.d.ts59
-rw-r--r--assets/node_modules/read-pkg/node_modules/type-fest/source/require-at-least-one.d.ts32
-rw-r--r--assets/node_modules/read-pkg/package.json49
-rw-r--r--assets/node_modules/read-pkg/readme.md81
-rw-r--r--assets/node_modules/readable-stream/CONTRIBUTING.md38
-rw-r--r--assets/node_modules/readable-stream/GOVERNANCE.md136
-rw-r--r--assets/node_modules/readable-stream/LICENSE47
-rw-r--r--assets/node_modules/readable-stream/README.md106
-rw-r--r--assets/node_modules/readable-stream/errors-browser.js127
-rw-r--r--assets/node_modules/readable-stream/errors.js116
-rw-r--r--assets/node_modules/readable-stream/experimentalWarning.js17
-rw-r--r--assets/node_modules/readable-stream/lib/_stream_duplex.js139
-rw-r--r--assets/node_modules/readable-stream/lib/_stream_passthrough.js39
-rw-r--r--assets/node_modules/readable-stream/lib/_stream_readable.js1124
-rw-r--r--assets/node_modules/readable-stream/lib/_stream_transform.js201
-rw-r--r--assets/node_modules/readable-stream/lib/_stream_writable.js697
-rw-r--r--assets/node_modules/readable-stream/lib/internal/streams/async_iterator.js207
-rw-r--r--assets/node_modules/readable-stream/lib/internal/streams/buffer_list.js191
-rw-r--r--assets/node_modules/readable-stream/lib/internal/streams/destroy.js105
-rw-r--r--assets/node_modules/readable-stream/lib/internal/streams/end-of-stream.js104
-rw-r--r--assets/node_modules/readable-stream/lib/internal/streams/from-browser.js3
-rw-r--r--assets/node_modules/readable-stream/lib/internal/streams/from.js64
-rw-r--r--assets/node_modules/readable-stream/lib/internal/streams/pipeline.js97
-rw-r--r--assets/node_modules/readable-stream/lib/internal/streams/state.js27
-rw-r--r--assets/node_modules/readable-stream/lib/internal/streams/stream-browser.js1
-rw-r--r--assets/node_modules/readable-stream/lib/internal/streams/stream.js1
-rw-r--r--assets/node_modules/readable-stream/package.json68
-rw-r--r--assets/node_modules/readable-stream/readable-browser.js9
-rw-r--r--assets/node_modules/readable-stream/readable.js16
-rw-r--r--assets/node_modules/readdirp/LICENSE21
-rw-r--r--assets/node_modules/readdirp/README.md120
-rw-r--r--assets/node_modules/readdirp/index.d.ts43
-rw-r--r--assets/node_modules/readdirp/index.js254
-rw-r--r--assets/node_modules/readdirp/package.json121
-rw-r--r--assets/node_modules/redent/index.d.ts27
-rw-r--r--assets/node_modules/redent/index.js5
-rw-r--r--assets/node_modules/redent/license9
-rw-r--r--assets/node_modules/redent/package.json44
-rw-r--r--assets/node_modules/redent/readme.md61
-rw-r--r--assets/node_modules/regenerator-runtime/LICENSE21
-rw-r--r--assets/node_modules/regenerator-runtime/README.md31
-rw-r--r--assets/node_modules/regenerator-runtime/package.json19
-rw-r--r--assets/node_modules/regenerator-runtime/path.js11
-rw-r--r--assets/node_modules/regenerator-runtime/runtime.js726
-rw-r--r--assets/node_modules/remark-parse/index.js17
-rw-r--r--assets/node_modules/remark-parse/lib/block-elements.js70
-rw-r--r--assets/node_modules/remark-parse/lib/decode.js58
-rw-r--r--assets/node_modules/remark-parse/lib/defaults.js10
-rw-r--r--assets/node_modules/remark-parse/lib/locate/break.js17
-rw-r--r--assets/node_modules/remark-parse/lib/locate/code-inline.js7
-rw-r--r--assets/node_modules/remark-parse/lib/locate/delete.js7
-rw-r--r--assets/node_modules/remark-parse/lib/locate/emphasis.js18
-rw-r--r--assets/node_modules/remark-parse/lib/locate/escape.js7
-rw-r--r--assets/node_modules/remark-parse/lib/locate/link.js16
-rw-r--r--assets/node_modules/remark-parse/lib/locate/strong.js18
-rw-r--r--assets/node_modules/remark-parse/lib/locate/tag.js7
-rw-r--r--assets/node_modules/remark-parse/lib/locate/url.js26
-rw-r--r--assets/node_modules/remark-parse/lib/parse.js42
-rw-r--r--assets/node_modules/remark-parse/lib/parser.js149
-rw-r--r--assets/node_modules/remark-parse/lib/set-options.js46
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/auto-link.js133
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/blockquote.js124
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/break.js42
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/code-fenced.js255
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/code-indented.js98
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/code-inline.js108
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/definition.js275
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/delete.js60
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/emphasis.js86
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/escape.js34
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/footnote-definition.js186
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/heading-atx.js135
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/heading-setext.js102
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/html-block.js111
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/html-inline.js59
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/link.js381
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/list.js452
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/newline.js48
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/paragraph.js117
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/reference.js215
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/strong.js85
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/table.js259
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/text.js57
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/thematic-break.js70
-rw-r--r--assets/node_modules/remark-parse/lib/tokenize/url.js153
-rw-r--r--assets/node_modules/remark-parse/lib/tokenizer.js314
-rw-r--r--assets/node_modules/remark-parse/lib/unescape.js36
-rw-r--r--assets/node_modules/remark-parse/lib/util/get-indentation.js33
-rw-r--r--assets/node_modules/remark-parse/lib/util/html.js34
-rw-r--r--assets/node_modules/remark-parse/lib/util/interrupt.js35
-rw-r--r--assets/node_modules/remark-parse/lib/util/normalize.js11
-rw-r--r--assets/node_modules/remark-parse/lib/util/remove-indentation.js77
-rw-r--r--assets/node_modules/remark-parse/package.json55
-rw-r--r--assets/node_modules/remark-parse/readme.md506
-rw-r--r--assets/node_modules/remark-stringify/index.js18
-rw-r--r--assets/node_modules/remark-stringify/lib/compiler.js63
-rw-r--r--assets/node_modules/remark-stringify/lib/defaults.js28
-rw-r--r--assets/node_modules/remark-stringify/lib/escape.js299
-rw-r--r--assets/node_modules/remark-stringify/lib/macro/all.js18
-rw-r--r--assets/node_modules/remark-stringify/lib/macro/block.js54
-rw-r--r--assets/node_modules/remark-stringify/lib/macro/compile.js10
-rw-r--r--assets/node_modules/remark-stringify/lib/macro/one.js20
-rw-r--r--assets/node_modules/remark-stringify/lib/macro/ordered-items.js43
-rw-r--r--assets/node_modules/remark-stringify/lib/macro/unordered-items.js24
-rw-r--r--assets/node_modules/remark-stringify/lib/set-options.js160
-rw-r--r--assets/node_modules/remark-stringify/lib/util/copy-identifier-encoding.js67
-rw-r--r--assets/node_modules/remark-stringify/lib/util/enclose-title.js17
-rw-r--r--assets/node_modules/remark-stringify/lib/util/enclose-uri.js33
-rw-r--r--assets/node_modules/remark-stringify/lib/util/enter-link-reference.js33
-rw-r--r--assets/node_modules/remark-stringify/lib/util/entity-prefix-length.js23
-rw-r--r--assets/node_modules/remark-stringify/lib/util/identity.js7
-rw-r--r--assets/node_modules/remark-stringify/lib/util/label.js27
-rw-r--r--assets/node_modules/remark-stringify/lib/util/pad.js26
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/blockquote.js22
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/break.js14
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/code.js79
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/definition.js36
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/delete.js11
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/emphasis.js38
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/footnote-definition.js30
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/footnote-reference.js16
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/footnote.js13
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/heading.js51
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/html.js7
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/image-reference.js19
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/image.js47
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/inline-code.js41
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/link-reference.js27
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/link.js65
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/list-item.js75
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/list.js8
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/paragraph.js7
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/root.js11
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/strong.js18
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/table-cell.js7
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/table.js68
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/text.js19
-rw-r--r--assets/node_modules/remark-stringify/lib/visitors/thematic-break.js31
-rw-r--r--assets/node_modules/remark-stringify/package.json53
-rw-r--r--assets/node_modules/remark-stringify/readme.md311
-rw-r--r--assets/node_modules/remark/index.js10
-rw-r--r--assets/node_modules/remark/package.json38
-rw-r--r--assets/node_modules/remark/readme.md190
-rw-r--r--assets/node_modules/repeat-string/LICENSE21
-rw-r--r--assets/node_modules/repeat-string/README.md136
-rw-r--r--assets/node_modules/repeat-string/index.js70
-rw-r--r--assets/node_modules/repeat-string/package.json77
-rwxr-xr-xassets/node_modules/replace-ext/LICENSE21
-rw-r--r--assets/node_modules/replace-ext/README.md50
-rw-r--r--assets/node_modules/replace-ext/index.js18
-rw-r--r--assets/node_modules/replace-ext/package.json44
-rw-r--r--assets/node_modules/resolve-from/index.d.ts31
-rw-r--r--assets/node_modules/resolve-from/index.js47
-rw-r--r--assets/node_modules/resolve-from/license9
-rw-r--r--assets/node_modules/resolve-from/package.json36
-rw-r--r--assets/node_modules/resolve-from/readme.md72
-rw-r--r--assets/node_modules/resolve/.eslintignore1
-rw-r--r--assets/node_modules/resolve/.eslintrc39
-rw-r--r--assets/node_modules/resolve/.travis.yml8
-rw-r--r--assets/node_modules/resolve/LICENSE21
-rw-r--r--assets/node_modules/resolve/appveyor.yml53
-rw-r--r--assets/node_modules/resolve/example/async.js5
-rw-r--r--assets/node_modules/resolve/example/sync.js3
-rw-r--r--assets/node_modules/resolve/index.js6
-rw-r--r--assets/node_modules/resolve/lib/async.js290
-rw-r--r--assets/node_modules/resolve/lib/caller.js8
-rw-r--r--assets/node_modules/resolve/lib/core.js53
-rw-r--r--assets/node_modules/resolve/lib/core.json75
-rw-r--r--assets/node_modules/resolve/lib/is-core.js5
-rw-r--r--assets/node_modules/resolve/lib/node-modules-paths.js42
-rw-r--r--assets/node_modules/resolve/lib/normalize-options.js10
-rw-r--r--assets/node_modules/resolve/lib/sync.js183
-rw-r--r--assets/node_modules/resolve/package.json47
-rw-r--r--assets/node_modules/resolve/readme.markdown220
-rw-r--r--assets/node_modules/resolve/test/.eslintrc5
-rw-r--r--assets/node_modules/resolve/test/core.js85
-rw-r--r--assets/node_modules/resolve/test/dotdot.js29
-rw-r--r--assets/node_modules/resolve/test/dotdot/abc/index.js2
-rw-r--r--assets/node_modules/resolve/test/dotdot/index.js1
-rw-r--r--assets/node_modules/resolve/test/faulty_basedir.js29
-rw-r--r--assets/node_modules/resolve/test/filter.js34
-rw-r--r--assets/node_modules/resolve/test/filter_sync.js33
-rw-r--r--assets/node_modules/resolve/test/mock.js169
-rw-r--r--assets/node_modules/resolve/test/mock_sync.js80
-rw-r--r--assets/node_modules/resolve/test/module_dir.js56
-rw-r--r--assets/node_modules/resolve/test/module_dir/xmodules/aaa/index.js1
-rw-r--r--assets/node_modules/resolve/test/module_dir/ymodules/aaa/index.js1
-rw-r--r--assets/node_modules/resolve/test/module_dir/zmodules/bbb/main.js1
-rw-r--r--assets/node_modules/resolve/test/module_dir/zmodules/bbb/package.json3
-rw-r--r--assets/node_modules/resolve/test/node-modules-paths.js143
-rw-r--r--assets/node_modules/resolve/test/node_path.js70
-rw-r--r--assets/node_modules/resolve/test/node_path/x/aaa/index.js1
-rw-r--r--assets/node_modules/resolve/test/node_path/x/ccc/index.js1
-rw-r--r--assets/node_modules/resolve/test/node_path/y/bbb/index.js1
-rw-r--r--assets/node_modules/resolve/test/node_path/y/ccc/index.js1
-rw-r--r--assets/node_modules/resolve/test/nonstring.js9
-rw-r--r--assets/node_modules/resolve/test/pathfilter.js75
-rw-r--r--assets/node_modules/resolve/test/pathfilter/deep_ref/main.js0
-rw-r--r--assets/node_modules/resolve/test/precedence.js23
-rw-r--r--assets/node_modules/resolve/test/precedence/aaa.js1
-rw-r--r--assets/node_modules/resolve/test/precedence/aaa/index.js1
-rw-r--r--assets/node_modules/resolve/test/precedence/aaa/main.js1
-rw-r--r--assets/node_modules/resolve/test/precedence/bbb.js1
-rw-r--r--assets/node_modules/resolve/test/precedence/bbb/main.js1
-rw-r--r--assets/node_modules/resolve/test/resolver.js434
-rw-r--r--assets/node_modules/resolve/test/resolver/baz/doom.js0
-rw-r--r--assets/node_modules/resolve/test/resolver/baz/package.json4
-rw-r--r--assets/node_modules/resolve/test/resolver/baz/quux.js1
-rw-r--r--assets/node_modules/resolve/test/resolver/browser_field/a.js0
-rw-r--r--assets/node_modules/resolve/test/resolver/browser_field/b.js0
-rw-r--r--assets/node_modules/resolve/test/resolver/browser_field/package.json5
-rw-r--r--assets/node_modules/resolve/test/resolver/cup.coffee1
-rw-r--r--assets/node_modules/resolve/test/resolver/dot_main/index.js1
-rw-r--r--assets/node_modules/resolve/test/resolver/dot_main/package.json3
-rw-r--r--assets/node_modules/resolve/test/resolver/dot_slash_main/index.js1
-rw-r--r--assets/node_modules/resolve/test/resolver/dot_slash_main/package.json3
-rw-r--r--assets/node_modules/resolve/test/resolver/foo.js1
-rw-r--r--assets/node_modules/resolve/test/resolver/incorrect_main/index.js2
-rw-r--r--assets/node_modules/resolve/test/resolver/incorrect_main/package.json3
-rw-r--r--assets/node_modules/resolve/test/resolver/invalid_main/package.json7
-rw-r--r--assets/node_modules/resolve/test/resolver/mug.coffee0
-rw-r--r--assets/node_modules/resolve/test/resolver/mug.js0
-rw-r--r--assets/node_modules/resolve/test/resolver/multirepo/lerna.json6
-rw-r--r--assets/node_modules/resolve/test/resolver/multirepo/package.json20
-rw-r--r--assets/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js35
-rw-r--r--assets/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json14
-rw-r--r--assets/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js0
-rw-r--r--assets/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json14
-rw-r--r--assets/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js26
-rw-r--r--assets/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json15
-rw-r--r--assets/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js12
-rw-r--r--assets/node_modules/resolve/test/resolver/other_path/lib/other-lib.js0
-rw-r--r--assets/node_modules/resolve/test/resolver/other_path/root.js0
-rw-r--r--assets/node_modules/resolve/test/resolver/quux/foo/index.js1
-rw-r--r--assets/node_modules/resolve/test/resolver/same_names/foo.js1
-rw-r--r--assets/node_modules/resolve/test/resolver/same_names/foo/index.js1
-rw-r--r--assets/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js0
-rw-r--r--assets/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep0
-rw-r--r--assets/node_modules/resolve/test/resolver/symlinked/package/bar.js1
-rw-r--r--assets/node_modules/resolve/test/resolver/symlinked/package/package.json3
-rw-r--r--assets/node_modules/resolve/test/resolver/without_basedir/main.js5
-rw-r--r--assets/node_modules/resolve/test/resolver_sync.js344
-rw-r--r--assets/node_modules/resolve/test/shadowed_core.js38
-rw-r--r--assets/node_modules/resolve/test/shadowed_core/node_modules/util/index.js0
-rw-r--r--assets/node_modules/resolve/test/subdirs.js13
-rw-r--r--assets/node_modules/resolve/test/symlinks.js173
-rw-r--r--assets/node_modules/reusify/.coveralls.yml1
-rw-r--r--assets/node_modules/reusify/.travis.yml28
-rw-r--r--assets/node_modules/reusify/LICENSE22
-rw-r--r--assets/node_modules/reusify/README.md145
-rw-r--r--assets/node_modules/reusify/benchmarks/createNoCodeFunction.js30
-rw-r--r--assets/node_modules/reusify/benchmarks/fib.js13
-rw-r--r--assets/node_modules/reusify/benchmarks/reuseNoCodeFunction.js38
-rw-r--r--assets/node_modules/reusify/package.json45
-rw-r--r--assets/node_modules/reusify/reusify.js33
-rw-r--r--assets/node_modules/reusify/test.js66
-rw-r--r--assets/node_modules/rimraf/LICENSE15
-rw-r--r--assets/node_modules/rimraf/README.md101
-rwxr-xr-xassets/node_modules/rimraf/bin.js50
-rw-r--r--assets/node_modules/rimraf/package.json29
-rw-r--r--assets/node_modules/rimraf/rimraf.js364
-rw-r--r--assets/node_modules/run-parallel/LICENSE20
-rw-r--r--assets/node_modules/run-parallel/README.md85
-rw-r--r--assets/node_modules/run-parallel/index.js48
-rw-r--r--assets/node_modules/run-parallel/package.json42
-rw-r--r--assets/node_modules/safe-buffer/LICENSE21
-rw-r--r--assets/node_modules/safe-buffer/README.md584
-rw-r--r--assets/node_modules/safe-buffer/index.d.ts187
-rw-r--r--assets/node_modules/safe-buffer/index.js62
-rw-r--r--assets/node_modules/safe-buffer/package.json37
-rw-r--r--assets/node_modules/sass/README.md206
-rw-r--r--assets/node_modules/sass/package.json1
-rw-r--r--assets/node_modules/sass/sass.dart.js56282
-rwxr-xr-xassets/node_modules/sass/sass.js8
-rw-r--r--assets/node_modules/semver/CHANGELOG.md39
-rw-r--r--assets/node_modules/semver/LICENSE15
-rw-r--r--assets/node_modules/semver/README.md412
-rwxr-xr-xassets/node_modules/semver/bin/semver160
-rw-r--r--assets/node_modules/semver/package.json28
-rw-r--r--assets/node_modules/semver/range.bnf16
-rw-r--r--assets/node_modules/semver/semver.js1483
-rw-r--r--assets/node_modules/signal-exit/CHANGELOG.md27
-rw-r--r--assets/node_modules/signal-exit/LICENSE.txt16
-rw-r--r--assets/node_modules/signal-exit/README.md40
-rw-r--r--assets/node_modules/signal-exit/index.js157
-rw-r--r--assets/node_modules/signal-exit/package.json38
-rw-r--r--assets/node_modules/signal-exit/signals.js53
-rw-r--r--assets/node_modules/slash/index.d.ts25
-rw-r--r--assets/node_modules/slash/index.js11
-rw-r--r--assets/node_modules/slash/license9
-rw-r--r--assets/node_modules/slash/package.json35
-rw-r--r--assets/node_modules/slash/readme.md44
-rwxr-xr-xassets/node_modules/slice-ansi/index.js59
-rw-r--r--assets/node_modules/slice-ansi/license9
-rw-r--r--assets/node_modules/slice-ansi/package.json51
-rw-r--r--assets/node_modules/slice-ansi/readme.md64
-rw-r--r--assets/node_modules/source-map/CHANGELOG.md301
-rw-r--r--assets/node_modules/source-map/LICENSE28
-rw-r--r--assets/node_modules/source-map/README.md729
-rw-r--r--assets/node_modules/source-map/dist/source-map.debug.js3091
-rw-r--r--assets/node_modules/source-map/dist/source-map.js3090
-rw-r--r--assets/node_modules/source-map/dist/source-map.min.js2
-rw-r--r--assets/node_modules/source-map/dist/source-map.min.js.map1
-rw-r--r--assets/node_modules/source-map/lib/array-set.js121
-rw-r--r--assets/node_modules/source-map/lib/base64-vlq.js140
-rw-r--r--assets/node_modules/source-map/lib/base64.js67
-rw-r--r--assets/node_modules/source-map/lib/binary-search.js111
-rw-r--r--assets/node_modules/source-map/lib/mapping-list.js79
-rw-r--r--assets/node_modules/source-map/lib/quick-sort.js114
-rw-r--r--assets/node_modules/source-map/lib/source-map-consumer.js1082
-rw-r--r--assets/node_modules/source-map/lib/source-map-generator.js416
-rw-r--r--assets/node_modules/source-map/lib/source-node.js413
-rw-r--r--assets/node_modules/source-map/lib/util.js417
-rw-r--r--assets/node_modules/source-map/package.json72
-rw-r--r--assets/node_modules/source-map/source-map.js8
-rw-r--r--assets/node_modules/spdx-correct/LICENSE202
-rw-r--r--assets/node_modules/spdx-correct/README.md14
-rw-r--r--assets/node_modules/spdx-correct/index.js343
-rw-r--r--assets/node_modules/spdx-correct/package.json39
-rw-r--r--assets/node_modules/spdx-exceptions/README.md36
-rw-r--r--assets/node_modules/spdx-exceptions/index.json34
-rw-r--r--assets/node_modules/spdx-exceptions/package.json11
-rw-r--r--assets/node_modules/spdx-exceptions/test.log8
-rw-r--r--assets/node_modules/spdx-expression-parse/AUTHORS4
-rw-r--r--assets/node_modules/spdx-expression-parse/LICENSE22
-rw-r--r--assets/node_modules/spdx-expression-parse/README.md91
-rw-r--r--assets/node_modules/spdx-expression-parse/index.js8
-rw-r--r--assets/node_modules/spdx-expression-parse/package.json40
-rw-r--r--assets/node_modules/spdx-expression-parse/parse.js138
-rw-r--r--assets/node_modules/spdx-expression-parse/scan.js131
-rw-r--r--assets/node_modules/spdx-license-ids/README.md52
-rw-r--r--assets/node_modules/spdx-license-ids/deprecated.json24
-rw-r--r--assets/node_modules/spdx-license-ids/index.json370
-rw-r--r--assets/node_modules/spdx-license-ids/package.json39
-rw-r--r--assets/node_modules/specificity/LICENSE8
-rwxr-xr-xassets/node_modules/specificity/bin/specificity15
-rw-r--r--assets/node_modules/specificity/dist/specificity.js229
-rw-r--r--assets/node_modules/specificity/dist/specificity.mjs218
-rw-r--r--assets/node_modules/specificity/package.json37
-rw-r--r--assets/node_modules/specificity/readme.md176
-rw-r--r--assets/node_modules/specificity/rollup.config.js18
-rw-r--r--assets/node_modules/specificity/specificity.d.ts53
-rw-r--r--assets/node_modules/specificity/specificity.js221
-rw-r--r--assets/node_modules/specificity/test/test.js115
-rw-r--r--assets/node_modules/state-toggle/index.js23
-rw-r--r--assets/node_modules/state-toggle/license22
-rw-r--r--assets/node_modules/state-toggle/package.json70
-rw-r--r--assets/node_modules/state-toggle/readme.md95
-rw-r--r--assets/node_modules/string-width/index.d.ts29
-rw-r--r--assets/node_modules/string-width/index.js43
-rw-r--r--assets/node_modules/string-width/license9
-rw-r--r--assets/node_modules/string-width/node_modules/is-fullwidth-code-point/index.d.ts17
-rw-r--r--assets/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js50
-rw-r--r--assets/node_modules/string-width/node_modules/is-fullwidth-code-point/license9
-rw-r--r--assets/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json42
-rw-r--r--assets/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md39
-rw-r--r--assets/node_modules/string-width/package.json56
-rw-r--r--assets/node_modules/string-width/readme.md50
-rw-r--r--assets/node_modules/string_decoder/LICENSE48
-rw-r--r--assets/node_modules/string_decoder/README.md47
-rw-r--r--assets/node_modules/string_decoder/lib/string_decoder.js296
-rw-r--r--assets/node_modules/string_decoder/node_modules/safe-buffer/LICENSE21
-rw-r--r--assets/node_modules/string_decoder/node_modules/safe-buffer/README.md586
-rw-r--r--assets/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts187
-rw-r--r--assets/node_modules/string_decoder/node_modules/safe-buffer/index.js64
-rw-r--r--assets/node_modules/string_decoder/node_modules/safe-buffer/package.json37
-rw-r--r--assets/node_modules/string_decoder/package.json34
-rw-r--r--assets/node_modules/stringify-entities/LICENSE22
-rw-r--r--assets/node_modules/stringify-entities/dangerous.json10
-rw-r--r--assets/node_modules/stringify-entities/index.js134
-rw-r--r--assets/node_modules/stringify-entities/package.json84
-rw-r--r--assets/node_modules/stringify-entities/readme.md131
-rw-r--r--assets/node_modules/strip-ansi/index.d.ts17
-rw-r--r--assets/node_modules/strip-ansi/index.js4
-rw-r--r--assets/node_modules/strip-ansi/license9
-rw-r--r--assets/node_modules/strip-ansi/package.json54
-rw-r--r--assets/node_modules/strip-ansi/readme.md46
-rw-r--r--assets/node_modules/strip-indent/index.d.ts21
-rw-r--r--assets/node_modules/strip-indent/index.js14
-rw-r--r--assets/node_modules/strip-indent/license9
-rw-r--r--assets/node_modules/strip-indent/package.json42
-rw-r--r--assets/node_modules/strip-indent/readme.md44
-rw-r--r--assets/node_modules/style-search/.npmignore1
-rw-r--r--assets/node_modules/style-search/CHANGELOG.md5
-rw-r--r--assets/node_modules/style-search/LICENSE13
-rw-r--r--assets/node_modules/style-search/README.md96
-rw-r--r--assets/node_modules/style-search/circle.yml5
-rw-r--r--assets/node_modules/style-search/index.js203
-rw-r--r--assets/node_modules/style-search/package.json27
-rw-r--r--assets/node_modules/style-search/test.js467
-rw-r--r--assets/node_modules/stylelint-config-recommended/CHANGELOG.md33
-rw-r--r--assets/node_modules/stylelint-config-recommended/LICENSE21
-rw-r--r--assets/node_modules/stylelint-config-recommended/README.md66
-rw-r--r--assets/node_modules/stylelint-config-recommended/index.js36
l---------assets/node_modules/stylelint-config-recommended/node_modules/.bin/stylelint1
-rw-r--r--assets/node_modules/stylelint-config-recommended/package.json58
-rw-r--r--assets/node_modules/stylelint-scss/CHANGELOG.md346
-rw-r--r--assets/node_modules/stylelint-scss/LICENSE21
-rw-r--r--assets/node_modules/stylelint-scss/README.md299
-rw-r--r--assets/node_modules/stylelint-scss/dist/index.js20
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-each-key-value-single-line/index.js109
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-else-closing-brace-newline-after/index.js55
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-else-closing-brace-space-after/index.js46
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-else-empty-line-before/index.js57
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-else-if-parentheses-space-before/index.js65
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-extend-no-missing-placeholder/index.js46
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-function-named-arguments/index.js115
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-function-parentheses-space-before/index.js61
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-function-pattern/index.js56
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-if-closing-brace-newline-after/index.js124
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-if-closing-brace-space-after/index.js105
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-if-no-null/index.js61
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-import-no-partial-leading-underscore/index.js60
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-import-partial-extension-blacklist/index.js80
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-import-partial-extension-whitelist/index.js82
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-import-partial-extension/index.js85
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-mixin-argumentless-call-parentheses/index.js69
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-mixin-named-arguments/index.js118
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-mixin-parentheses-space-before/index.js61
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-mixin-pattern/index.js56
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-rule-conditional-no-parentheses/index.js86
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/at-rule-no-unknown/index.js67
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/comment-no-loud/index.js50
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/declaration-nested-properties-no-divided-groups/index.js76
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/declaration-nested-properties/index.js154
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/dimension-no-non-numeric-values/index.js102
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/dollar-variable-colon-newline-after/index.js112
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/dollar-variable-colon-space-after/index.js129
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/dollar-variable-colon-space-before/index.js51
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/dollar-variable-default/index.js63
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/dollar-variable-empty-line-before/index.js126
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/dollar-variable-no-missing-interpolation/index.js146
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/dollar-variable-pattern/index.js66
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/double-slash-comment-empty-line-before/index.js107
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/double-slash-comment-inline/index.js83
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/double-slash-comment-whitespace-inside/index.js76
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/function-color-relative/index.js57
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/function-quote-no-quoted-strings-inside/index.js79
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/function-unquote-no-unquoted-strings-inside/index.js79
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/index.js168
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/map-keys-quotes/index.js99
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/media-feature-value-dollar-variable/index.js75
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/no-dollar-variables/index.js47
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/no-duplicate-dollar-variables/index.js66
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/no-duplicate-mixins/index.js56
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/operator-no-newline-after/index.js80
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/operator-no-newline-before/index.js80
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/operator-no-unspaced/index.js268
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/partial-no-import/index.js80
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/percent-placeholder-pattern/index.js99
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/selector-nest-combinators/index.js139
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js69
-rw-r--r--assets/node_modules/stylelint-scss/dist/rules/selector-no-union-class-name/index.js88
-rw-r--r--assets/node_modules/stylelint-scss/dist/testUtils/basicChecks.js16
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/addEmptyLineBefore.js23
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/atRuleBaseName.js16
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/atRuleParamIndex.js23
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/beforeBlockString.js47
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/blockString.js31
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/configurationError.js18
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/declarationValueIndex.js18
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/eachRoot.js23
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/findCommentsInRaws.js227
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/hasBlock.js16
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/hasEmptyLine.js16
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/hasInterpolatingAmpersand.js37
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/hasInterpolation.js31
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/hasLessInterpolation.js16
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/hasPsvInterpolation.js15
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/hasScssInterpolation.js15
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/hasTplInterpolation.js16
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/index.js231
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/isCustomPropertySet.js23
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/isInlineComment.js21
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/isNativeCssFunction.js17
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/isSingleLineString.js17
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/isStandardRule.js75
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/isStandardSelector.js30
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/isStandardSyntaxProperty.js40
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/isStandardSyntaxSelector.js45
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/isWhitespace.js16
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/namespace.js11
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/optionsHaveException.js19
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/optionsHaveIgnored.js19
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/parseFunctionArguments.js77
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/parseNestedPropRoot.js87
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/parseSelector.js20
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/rawNodeString.js23
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/removeEmptyLinesBefore.js18
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/sassValueParser/index.js933
-rw-r--r--assets/node_modules/stylelint-scss/dist/utils/whitespaceChecker.js371
-rw-r--r--assets/node_modules/stylelint-scss/docs/examples/README.md5
-rw-r--r--assets/node_modules/stylelint-scss/docs/examples/if-else.md148
l---------assets/node_modules/stylelint-scss/node_modules/.bin/stylelint1
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/API.md873
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/CHANGELOG.md479
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/LICENSE-MIT22
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/README.md49
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/attributes.js477
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/classes.js216
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/combinators.js148
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/comments.js38
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/container.js393
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/escapes.js19
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/exceptions.js24
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/guards.js118
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/id.js229
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/lossy.js88
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/namespaces.js66
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/nesting.js40
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/node.js139
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/nonstandard.js38
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/parser.js259
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/postcss.js46
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/pseudos.js98
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/sourceIndex.js229
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/stripComments.js17
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/tags.js35
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/universal.js32
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/util/helpers.js90
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/index.js22
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/parser.js1223
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/processor.js208
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/attribute.js516
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/className.js69
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/combinator.js31
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/comment.js31
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/constructors.js102
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/container.js398
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/guards.js64
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/id.js37
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/index.js24
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/namespace.js101
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/nesting.js32
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/node.js237
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/pseudo.js38
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/root.js60
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/selector.js31
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/string.js31
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/tag.js31
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/types.js28
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/universal.js32
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/sortAscending.js13
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/tokenTypes.js95
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/tokenize.js268
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/ensureObject.js22
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/getProp.js24
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/index.js22
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/stripComments.js27
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/unesc.js20
l---------assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/node_modules/.bin/cssesc1
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/package.json76
-rw-r--r--assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/postcss-selector-parser.d.ts499
-rw-r--r--assets/node_modules/stylelint-scss/package.json180
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-each-key-value-single-line/README.md67
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-else-closing-brace-newline-after/README.md74
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-else-closing-brace-space-after/README.md131
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-else-empty-line-before/README.md69
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-else-if-parentheses-space-before/README.md58
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-extend-no-missing-placeholder/README.md49
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-function-named-arguments/README.md131
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-function-parentheses-space-before/README.md50
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-function-pattern/README.md29
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-if-closing-brace-newline-after/README.md60
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-if-closing-brace-space-after/README.md100
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-if-no-null/README.md44
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-import-no-partial-leading-underscore/README.md59
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-import-partial-extension-blacklist/README.md70
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-import-partial-extension-whitelist/README.md78
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-import-partial-extension/README.md116
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-mixin-argumentless-call-parentheses/README.md47
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-mixin-named-arguments/README.md102
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-mixin-parentheses-space-before/README.md58
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-mixin-pattern/README.md29
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-rule-conditional-no-parentheses/README.md43
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/at-rule-no-unknown/README.md76
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/comment-no-loud/README.md33
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/declaration-nested-properties-no-divided-groups/README.md68
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/declaration-nested-properties/README.md153
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/dimension-no-non-numeric-values/README.md93
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/dollar-variable-colon-newline-after/README.md85
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/dollar-variable-colon-space-after/README.md139
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/dollar-variable-colon-space-before/README.md73
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/dollar-variable-default/README.md25
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/dollar-variable-empty-line-before/README.md205
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/dollar-variable-no-missing-interpolation/README.md111
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/dollar-variable-pattern/README.md69
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/double-slash-comment-empty-line-before/README.md151
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/double-slash-comment-inline/README.md110
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/double-slash-comment-whitespace-inside/README.md60
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/function-color-relative/README.md83
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/function-quote-no-quoted-strings-inside/README.md46
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/function-unquote-no-unquoted-strings-inside/README.md46
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/map-keys-quotes/README.md26
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/media-feature-value-dollar-variable/README.md86
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/no-dollar-variables/README.md38
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/no-duplicate-dollar-variables/README.md143
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/no-duplicate-mixins/README.md83
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/operator-no-newline-after/README.md54
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/operator-no-newline-before/README.md55
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/operator-no-unspaced/README.md100
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/partial-no-import/README.md69
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/percent-placeholder-pattern/README.md57
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/selector-nest-combinators/README.md221
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/selector-no-redundant-nesting-selector/README.md61
-rw-r--r--assets/node_modules/stylelint-scss/src/rules/selector-no-union-class-name/README.md46
-rw-r--r--assets/node_modules/stylelint/CHANGELOG.md1517
-rw-r--r--assets/node_modules/stylelint/CONTRIBUTING.md18
-rw-r--r--assets/node_modules/stylelint/LICENSE20
-rw-r--r--assets/node_modules/stylelint/README.md123
-rw-r--r--assets/node_modules/stylelint/SECURITY.md9
-rw-r--r--assets/node_modules/stylelint/VISION.md98
-rwxr-xr-xassets/node_modules/stylelint/bin/stylelint.js8
-rw-r--r--assets/node_modules/stylelint/docs/developer-guide.md18
-rw-r--r--assets/node_modules/stylelint/docs/developer-guide/formatters.md78
-rw-r--r--assets/node_modules/stylelint/docs/developer-guide/issues.md36
-rw-r--r--assets/node_modules/stylelint/docs/developer-guide/plugins.md220
-rw-r--r--assets/node_modules/stylelint/docs/developer-guide/prerequisites.md10
-rw-r--r--assets/node_modules/stylelint/docs/developer-guide/processors.md36
-rw-r--r--assets/node_modules/stylelint/docs/developer-guide/pull-requests.md24
-rw-r--r--assets/node_modules/stylelint/docs/developer-guide/releases.md54
-rw-r--r--assets/node_modules/stylelint/docs/developer-guide/rules.md313
-rw-r--r--assets/node_modules/stylelint/docs/user-guide.md27
-rw-r--r--assets/node_modules/stylelint/docs/user-guide/about-rules.md394
-rw-r--r--assets/node_modules/stylelint/docs/user-guide/articles.md13
-rw-r--r--assets/node_modules/stylelint/docs/user-guide/cli.md254
-rw-r--r--assets/node_modules/stylelint/docs/user-guide/complementary-tools.md39
-rw-r--r--assets/node_modules/stylelint/docs/user-guide/configuration.md310
-rw-r--r--assets/node_modules/stylelint/docs/user-guide/css-processors.md44
-rw-r--r--assets/node_modules/stylelint/docs/user-guide/example-config.md187
-rw-r--r--assets/node_modules/stylelint/docs/user-guide/faq.md176
-rw-r--r--assets/node_modules/stylelint/docs/user-guide/node-api.md240
-rw-r--r--assets/node_modules/stylelint/docs/user-guide/plugins.md38
-rw-r--r--assets/node_modules/stylelint/docs/user-guide/postcss-plugin.md131
-rw-r--r--assets/node_modules/stylelint/docs/user-guide/processors.md13
-rw-r--r--assets/node_modules/stylelint/docs/user-guide/rules.md361
-rw-r--r--assets/node_modules/stylelint/docs/user-guide/semantic-versioning-policy.md26
-rw-r--r--assets/node_modules/stylelint/lib/assignDisabledRanges.js307
-rw-r--r--assets/node_modules/stylelint/lib/augmentConfig.js393
-rw-r--r--assets/node_modules/stylelint/lib/cli.js545
-rw-r--r--assets/node_modules/stylelint/lib/createPlugin.js13
-rw-r--r--assets/node_modules/stylelint/lib/createStylelint.js70
-rw-r--r--assets/node_modules/stylelint/lib/createStylelintResult.js120
-rw-r--r--assets/node_modules/stylelint/lib/dynamicRequire.js10
-rw-r--r--assets/node_modules/stylelint/lib/formatters/compactFormatter.js21
-rw-r--r--assets/node_modules/stylelint/lib/formatters/disableOptionsReportStringFormatter.js49
-rw-r--r--assets/node_modules/stylelint/lib/formatters/index.js11
-rw-r--r--assets/node_modules/stylelint/lib/formatters/jsonFormatter.js21
-rw-r--r--assets/node_modules/stylelint/lib/formatters/stringFormatter.js234
-rw-r--r--assets/node_modules/stylelint/lib/formatters/unixFormatter.js27
-rw-r--r--assets/node_modules/stylelint/lib/formatters/verboseFormatter.js62
-rw-r--r--assets/node_modules/stylelint/lib/getConfigForFile.js61
-rw-r--r--assets/node_modules/stylelint/lib/getPostcssResult.js161
-rw-r--r--assets/node_modules/stylelint/lib/index.js48
-rw-r--r--assets/node_modules/stylelint/lib/invalidScopeDisables.js54
-rw-r--r--assets/node_modules/stylelint/lib/isPathIgnored.js48
-rw-r--r--assets/node_modules/stylelint/lib/lintSource.js211
-rw-r--r--assets/node_modules/stylelint/lib/needlessDisables.js105
-rw-r--r--assets/node_modules/stylelint/lib/normalizeRuleSettings.js70
-rw-r--r--assets/node_modules/stylelint/lib/postcssPlugin.js25
-rw-r--r--assets/node_modules/stylelint/lib/printConfig.js54
-rw-r--r--assets/node_modules/stylelint/lib/reference/keywordSets.js675
-rw-r--r--assets/node_modules/stylelint/lib/reference/mathFunctions.js3
-rw-r--r--assets/node_modules/stylelint/lib/reference/namedColorData.js152
-rw-r--r--assets/node_modules/stylelint/lib/reference/propertySets.js18
-rw-r--r--assets/node_modules/stylelint/lib/reference/punctuationSets.js9
-rw-r--r--assets/node_modules/stylelint/lib/reference/shorthandData.js143
-rw-r--r--assets/node_modules/stylelint/lib/reportUnknownRuleNames.js77
-rw-r--r--assets/node_modules/stylelint/lib/requireRule.js16
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-blacklist/README.md45
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-blacklist/index.js55
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-empty-line-before/README.md392
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-empty-line-before/index.js159
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-name-case/README.md93
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-name-case/index.js56
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-name-newline-after/README.md94
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-name-newline-after/index.js38
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-name-space-after/README.md100
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-name-space-after/index.js43
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-no-unknown/README.md65
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-no-unknown/index.js65
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-no-vendor-prefix/README.md33
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-no-vendor-prefix/index.js50
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-property-requirelist/README.md51
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-property-requirelist/index.js61
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-semicolon-newline-after/README.md56
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-semicolon-newline-after/index.js76
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-semicolon-space-before/README.md45
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-semicolon-space-before/index.js61
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-whitelist/README.md58
-rw-r--r--assets/node_modules/stylelint/lib/rules/at-rule-whitelist/index.js55
-rw-r--r--assets/node_modules/stylelint/lib/rules/atRuleNameSpaceChecker.js41
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-closing-brace-empty-line-before/README.md217
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-closing-brace-empty-line-before/index.js116
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-after/README.md176
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-after/index.js135
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-before/README.md83
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-before/index.js115
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-closing-brace-space-after/README.md158
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-closing-brace-space-after/index.js86
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-closing-brace-space-before/README.md153
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-closing-brace-space-before/index.js94
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-no-empty/README.md67
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-no-empty/index.js81
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-after/README.md111
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-after/index.js142
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-before/README.md155
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-before/index.js105
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-opening-brace-space-after/README.md153
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-opening-brace-space-after/index.js86
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-opening-brace-space-before/README.md174
-rw-r--r--assets/node_modules/stylelint/lib/rules/block-opening-brace-space-before/index.js116
-rw-r--r--assets/node_modules/stylelint/lib/rules/color-hex-case/README.md51
-rw-r--r--assets/node_modules/stylelint/lib/rules/color-hex-case/index.js93
-rw-r--r--assets/node_modules/stylelint/lib/rules/color-hex-length/README.md63
-rw-r--r--assets/node_modules/stylelint/lib/rules/color-hex-length/index.js128
-rw-r--r--assets/node_modules/stylelint/lib/rules/color-named/README.md159
-rw-r--r--assets/node_modules/stylelint/lib/rules/color-named/generateColorFuncs.js194
-rw-r--r--assets/node_modules/stylelint/lib/rules/color-named/index.js167
-rw-r--r--assets/node_modules/stylelint/lib/rules/color-no-hex/README.md51
-rw-r--r--assets/node_modules/stylelint/lib/rules/color-no-hex/index.js55
-rw-r--r--assets/node_modules/stylelint/lib/rules/color-no-invalid-hex/README.md47
-rw-r--r--assets/node_modules/stylelint/lib/rules/color-no-invalid-hex/index.js52
-rw-r--r--assets/node_modules/stylelint/lib/rules/comment-empty-line-before/README.md154
-rw-r--r--assets/node_modules/stylelint/lib/rules/comment-empty-line-before/index.js117
-rw-r--r--assets/node_modules/stylelint/lib/rules/comment-no-empty/README.md45
-rw-r--r--assets/node_modules/stylelint/lib/rules/comment-no-empty/index.js44
-rw-r--r--assets/node_modules/stylelint/lib/rules/comment-whitespace-inside/README.md86
-rwxr-xr-xassets/node_modules/stylelint/lib/rules/comment-whitespace-inside/index.js115
-rw-r--r--assets/node_modules/stylelint/lib/rules/comment-word-blacklist/README.md43
-rw-r--r--assets/node_modules/stylelint/lib/rules/comment-word-blacklist/index.js57
-rw-r--r--assets/node_modules/stylelint/lib/rules/custom-media-pattern/README.md33
-rw-r--r--assets/node_modules/stylelint/lib/rules/custom-media-pattern/index.js52
-rw-r--r--assets/node_modules/stylelint/lib/rules/custom-property-empty-line-before/README.md252
-rw-r--r--assets/node_modules/stylelint/lib/rules/custom-property-empty-line-before/index.js127
-rw-r--r--assets/node_modules/stylelint/lib/rules/custom-property-pattern/README.md33
-rw-r--r--assets/node_modules/stylelint/lib/rules/custom-property-pattern/index.js51
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-bang-space-after/README.md63
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-bang-space-after/index.js82
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-bang-space-before/README.md59
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-bang-space-before/index.js83
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-no-duplicate-properties/README.md129
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-no-duplicate-properties/index.js119
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-no-redundant-longhand-properties/README.md183
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-no-redundant-longhand-properties/index.js97
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-no-shorthand-property-overrides/README.md61
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-no-shorthand-property-overrides/index.js59
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-after/README.md127
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-after/index.js93
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-before/README.md107
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-before/index.js60
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-after/README.md130
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-after/index.js82
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-before/README.md113
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-before/index.js91
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-single-line-max-declarations/README.md44
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-single-line-max-declarations/index.js56
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-trailing-semicolon/README.md79
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-block-trailing-semicolon/index.js99
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-colon-newline-after/README.md71
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-colon-newline-after/index.js88
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-colon-space-after/README.md98
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-colon-space-after/index.js61
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-colon-space-before/README.md63
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-colon-space-before/index.js60
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-empty-line-before/README.md297
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-empty-line-before/index.js131
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-no-important/README.md35
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-no-important/index.js39
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-property-unit-blacklist/README.md66
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-property-unit-blacklist/index.js74
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-property-unit-whitelist/README.md75
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-property-unit-whitelist/index.js74
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-property-value-blacklist/README.md93
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-property-value-blacklist/index.js56
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-property-value-whitelist/README.md86
-rw-r--r--assets/node_modules/stylelint/lib/rules/declaration-property-value-whitelist/index.js56
-rw-r--r--assets/node_modules/stylelint/lib/rules/declarationBangSpaceChecker.js41
-rw-r--r--assets/node_modules/stylelint/lib/rules/declarationColonSpaceChecker.js46
-rw-r--r--assets/node_modules/stylelint/lib/rules/findMediaOperator.js22
-rw-r--r--assets/node_modules/stylelint/lib/rules/font-family-name-quotes/README.md140
-rw-r--r--assets/node_modules/stylelint/lib/rules/font-family-name-quotes/index.js145
-rw-r--r--assets/node_modules/stylelint/lib/rules/font-family-no-duplicate-names/README.md67
-rw-r--r--assets/node_modules/stylelint/lib/rules/font-family-no-duplicate-names/index.js101
-rw-r--r--assets/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/README.md48
-rw-r--r--assets/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/index.js64
-rw-r--r--assets/node_modules/stylelint/lib/rules/font-weight-notation/README.md84
-rw-r--r--assets/node_modules/stylelint/lib/rules/font-weight-notation/index.js152
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-blacklist/README.md47
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-blacklist/index.js62
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-calc-no-invalid/README.md87
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-calc-no-invalid/index.js251
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-calc-no-unspaced-operator/README.md49
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-calc-no-unspaced-operator/index.js130
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-comma-newline-after/README.md100
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-comma-newline-after/index.js53
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-comma-newline-before/README.md114
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-comma-newline-before/index.js53
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-comma-space-after/README.md125
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-comma-space-after/index.js54
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-comma-space-before/README.md125
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-comma-space-before/index.js54
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-linear-gradient-no-nonstandard-direction/README.md66
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-linear-gradient-no-nonstandard-direction/index.js108
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-max-empty-lines/README.md73
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-max-empty-lines/index.js101
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-name-case/README.md162
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-name-case/index.js113
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-parentheses-newline-inside/README.md129
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-parentheses-newline-inside/index.js248
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-parentheses-space-inside/README.md123
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-parentheses-space-inside/index.js166
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-url-no-scheme-relative/README.md45
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-url-no-scheme-relative/index.js46
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-url-quotes/README.md103
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-url-quotes/index.js111
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-url-scheme-blacklist/README.md62
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-url-scheme-blacklist/index.js64
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-url-scheme-whitelist/README.md66
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-url-scheme-whitelist/index.js64
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-whitelist/README.md65
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-whitelist/index.js64
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-whitespace-after/README.md85
-rw-r--r--assets/node_modules/stylelint/lib/rules/function-whitespace-after/index.js166
-rw-r--r--assets/node_modules/stylelint/lib/rules/functionCommaSpaceChecker.js110
-rw-r--r--assets/node_modules/stylelint/lib/rules/functionCommaSpaceFix.js32
-rw-r--r--assets/node_modules/stylelint/lib/rules/indentation/README.md315
-rw-r--r--assets/node_modules/stylelint/lib/rules/indentation/index.js585
-rw-r--r--assets/node_modules/stylelint/lib/rules/index.js179
-rw-r--r--assets/node_modules/stylelint/lib/rules/keyframe-declaration-no-important/README.md71
-rw-r--r--assets/node_modules/stylelint/lib/rules/keyframe-declaration-no-important/index.js41
-rw-r--r--assets/node_modules/stylelint/lib/rules/keyframes-name-pattern/README.md41
-rw-r--r--assets/node_modules/stylelint/lib/rules/keyframes-name-pattern/index.js48
-rw-r--r--assets/node_modules/stylelint/lib/rules/length-zero-no-unit/README.md61
-rw-r--r--assets/node_modules/stylelint/lib/rules/length-zero-no-unit/index.js198
-rw-r--r--assets/node_modules/stylelint/lib/rules/linebreaks/README.md21
-rw-r--r--assets/node_modules/stylelint/lib/rules/linebreaks/index.js107
-rw-r--r--assets/node_modules/stylelint/lib/rules/max-empty-lines/README.md107
-rw-r--r--assets/node_modules/stylelint/lib/rules/max-empty-lines/index.js213
-rw-r--r--assets/node_modules/stylelint/lib/rules/max-line-length/README.md138
-rw-r--r--assets/node_modules/stylelint/lib/rules/max-line-length/index.js187
-rw-r--r--assets/node_modules/stylelint/lib/rules/max-nesting-depth/README.md328
-rw-r--r--assets/node_modules/stylelint/lib/rules/max-nesting-depth/index.js112
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-colon-space-after/README.md63
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-colon-space-after/index.js80
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-colon-space-before/README.md63
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-colon-space-before/index.js80
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-name-blacklist/README.md41
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-name-blacklist/index.js65
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-name-case/README.md77
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-name-case/index.js85
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-name-no-unknown/README.md76
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-name-no-unknown/index.js80
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-name-no-vendor-prefix/README.md39
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-name-no-vendor-prefix/index.js50
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-name-value-whitelist/README.md68
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-name-value-whitelist/index.js68
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-name-whitelist/README.md41
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-name-whitelist/index.js65
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-parentheses-space-inside/README.md55
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-parentheses-space-inside/index.js104
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-after/README.md63
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-after/index.js90
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-before/README.md63
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-before/index.js90
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-after/README.md100
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-after/index.js88
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-before/README.md98
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-before/index.js40
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-after/README.md119
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-after/index.js82
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-before/README.md119
-rw-r--r--assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-before/index.js82
-rw-r--r--assets/node_modules/stylelint/lib/rules/mediaFeatureColonSpaceChecker.js37
-rw-r--r--assets/node_modules/stylelint/lib/rules/mediaQueryListCommaWhitespaceChecker.js52
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-descending-specificity/README.md150
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-descending-specificity/index.js138
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-duplicate-at-import-rules/README.md49
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-duplicate-at-import-rules/index.js66
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-duplicate-selectors/README.md123
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-duplicate-selectors/index.js136
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-empty-first-line/README.md31
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-empty-first-line/index.js47
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-empty-source/README.md39
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-empty-source/index.js38
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-eol-whitespace/README.md70
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-eol-whitespace/index.js257
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-extra-semicolons/README.md69
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-extra-semicolons/index.js241
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-invalid-double-slash-comments/README.md48
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-invalid-double-slash-comments/index.js48
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-missing-end-of-source-newline/README.md31
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-missing-end-of-source-newline/index.js50
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-unknown-animations/README.md66
-rw-r--r--assets/node_modules/stylelint/lib/rules/no-unknown-animations/index.js62
-rw-r--r--assets/node_modules/stylelint/lib/rules/number-leading-zero/README.md65
-rw-r--r--assets/node_modules/stylelint/lib/rules/number-leading-zero/index.js161
-rw-r--r--assets/node_modules/stylelint/lib/rules/number-max-precision/README.md93
-rw-r--r--assets/node_modules/stylelint/lib/rules/number-max-precision/index.js99
-rw-r--r--assets/node_modules/stylelint/lib/rules/number-no-trailing-zeros/README.md35
-rw-r--r--assets/node_modules/stylelint/lib/rules/number-no-trailing-zeros/index.js117
-rw-r--r--assets/node_modules/stylelint/lib/rules/property-blacklist/README.md56
-rw-r--r--assets/node_modules/stylelint/lib/rules/property-blacklist/index.js58
-rw-r--r--assets/node_modules/stylelint/lib/rules/property-case/README.md147
-rw-r--r--assets/node_modules/stylelint/lib/rules/property-case/index.js61
-rw-r--r--assets/node_modules/stylelint/lib/rules/property-no-unknown/README.md150
-rw-r--r--assets/node_modules/stylelint/lib/rules/property-no-unknown/index.js90
-rw-r--r--assets/node_modules/stylelint/lib/rules/property-no-vendor-prefix/README.md60
-rw-r--r--assets/node_modules/stylelint/lib/rules/property-no-vendor-prefix/index.js68
-rw-r--r--assets/node_modules/stylelint/lib/rules/property-whitelist/README.md66
-rw-r--r--assets/node_modules/stylelint/lib/rules/property-whitelist/index.js58
-rw-r--r--assets/node_modules/stylelint/lib/rules/rule-empty-line-before/README.md300
-rw-r--r--assets/node_modules/stylelint/lib/rules/rule-empty-line-before/index.js143
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-attribute-brackets-space-inside/README.md95
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-attribute-brackets-space-inside/index.js184
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-attribute-operator-blacklist/README.md39
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-attribute-operator-blacklist/index.js63
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-after/README.md135
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-after/index.js89
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-before/README.md135
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-before/index.js71
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-attribute-operator-whitelist/README.md47
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-attribute-operator-whitelist/index.js63
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-attribute-quotes/README.md85
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-attribute-quotes/index.js75
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-class-pattern/README.md99
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-class-pattern/index.js119
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-combinator-blacklist/README.md48
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-combinator-blacklist/index.js68
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-combinator-space-after/README.md69
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-combinator-space-after/index.js55
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-combinator-space-before/README.md69
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-combinator-space-before/index.js55
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-combinator-whitelist/README.md48
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-combinator-whitelist/index.js68
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-descendant-combinator-no-non-space/README.md34
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-descendant-combinator-no-non-space/index.js147
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-id-pattern/README.md55
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-id-pattern/index.js65
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-after/README.md106
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-after/index.js115
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-before/README.md99
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-before/index.js89
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-list-comma-space-after/README.md97
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-list-comma-space-after/index.js81
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-list-comma-space-before/README.md97
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-list-comma-space-before/index.js81
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-attribute/README.md99
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-attribute/index.js97
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-class/README.md51
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-class/index.js72
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-combinators/README.md63
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-combinators/index.js73
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-compound-selectors/README.md52
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-compound-selectors/index.js80
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-empty-lines/README.md93
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-empty-lines/index.js63
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-id/README.md66
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-id/index.js72
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-pseudo-class/README.md45
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-pseudo-class/index.js86
-rwxr-xr-xassets/node_modules/stylelint/lib/rules/selector-max-specificity/README.md119
-rwxr-xr-xassets/node_modules/stylelint/lib/rules/selector-max-specificity/index.js183
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-type/README.md160
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-type/index.js170
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-universal/README.md66
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-max-universal/index.js85
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-nested-pattern/README.md70
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-nested-pattern/index.js55
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-no-qualifying-type/README.md95
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-no-qualifying-type/index.js132
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-no-vendor-prefix/README.md59
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-no-vendor-prefix/index.js67
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-class-blacklist/README.md47
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-class-blacklist/index.js73
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-class-case/README.md91
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-class-case/index.js95
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-class-no-unknown/README.md73
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-class-no-unknown/index.js155
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-class-parentheses-space-inside/README.md55
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-class-parentheses-space-inside/index.js140
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-class-whitelist/README.md47
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-class-whitelist/index.js72
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-element-blacklist/README.md49
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-element-blacklist/index.js72
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-element-case/README.md107
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-element-case/index.js82
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-element-colon-notation/README.md115
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-element-colon-notation/index.js92
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-element-no-unknown/README.md73
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-element-no-unknown/index.js90
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-element-whitelist/README.md48
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-pseudo-element-whitelist/index.js72
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-type-case/README.md81
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-type-case/index.js105
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-type-no-unknown/README.md123
-rw-r--r--assets/node_modules/stylelint/lib/rules/selector-type-no-unknown/index.js113
-rw-r--r--assets/node_modules/stylelint/lib/rules/selectorAttributeOperatorSpaceChecker.js72
-rw-r--r--assets/node_modules/stylelint/lib/rules/selectorCombinatorSpaceChecker.js79
-rw-r--r--assets/node_modules/stylelint/lib/rules/selectorListCommaWhitespaceChecker.js46
-rw-r--r--assets/node_modules/stylelint/lib/rules/shorthand-property-no-redundant-values/README.md65
-rw-r--r--assets/node_modules/stylelint/lib/rules/shorthand-property-no-redundant-values/index.js135
-rw-r--r--assets/node_modules/stylelint/lib/rules/string-no-newline/README.md65
-rw-r--r--assets/node_modules/stylelint/lib/rules/string-no-newline/index.js113
-rw-r--r--assets/node_modules/stylelint/lib/rules/string-quotes/README.md114
-rw-r--r--assets/node_modules/stylelint/lib/rules/string-quotes/index.js181
-rw-r--r--assets/node_modules/stylelint/lib/rules/time-min-milliseconds/README.md53
-rw-r--r--assets/node_modules/stylelint/lib/rules/time-min-milliseconds/index.js81
-rw-r--r--assets/node_modules/stylelint/lib/rules/unicode-bom/README.md37
-rw-r--r--assets/node_modules/stylelint/lib/rules/unicode-bom/index.js57
-rw-r--r--assets/node_modules/stylelint/lib/rules/unit-blacklist/README.md139
-rw-r--r--assets/node_modules/stylelint/lib/rules/unit-blacklist/index.js123
-rw-r--r--assets/node_modules/stylelint/lib/rules/unit-case/README.md111
-rw-r--r--assets/node_modules/stylelint/lib/rules/unit-case/index.js112
-rw-r--r--assets/node_modules/stylelint/lib/rules/unit-no-unknown/README.md125
-rw-r--r--assets/node_modules/stylelint/lib/rules/unit-no-unknown/index.js153
-rw-r--r--assets/node_modules/stylelint/lib/rules/unit-whitelist/README.md100
-rw-r--r--assets/node_modules/stylelint/lib/rules/unit-whitelist/index.js83
-rw-r--r--assets/node_modules/stylelint/lib/rules/value-keyword-case/README.md230
-rw-r--r--assets/node_modules/stylelint/lib/rules/value-keyword-case/index.js202
-rw-r--r--assets/node_modules/stylelint/lib/rules/value-list-comma-newline-after/README.md90
-rw-r--r--assets/node_modules/stylelint/lib/rules/value-list-comma-newline-after/index.js100
-rw-r--r--assets/node_modules/stylelint/lib/rules/value-list-comma-newline-before/README.md88
-rw-r--r--assets/node_modules/stylelint/lib/rules/value-list-comma-newline-before/index.js40
-rw-r--r--assets/node_modules/stylelint/lib/rules/value-list-comma-space-after/README.md119
-rw-r--r--assets/node_modules/stylelint/lib/rules/value-list-comma-space-after/index.js86
-rw-r--r--assets/node_modules/stylelint/lib/rules/value-list-comma-space-before/README.md119
-rw-r--r--assets/node_modules/stylelint/lib/rules/value-list-comma-space-before/index.js86
-rw-r--r--assets/node_modules/stylelint/lib/rules/value-list-max-empty-lines/README.md110
-rw-r--r--assets/node_modules/stylelint/lib/rules/value-list-max-empty-lines/index.js60
-rw-r--r--assets/node_modules/stylelint/lib/rules/value-no-vendor-prefix/README.md63
-rw-r--r--assets/node_modules/stylelint/lib/rules/value-no-vendor-prefix/index.js82
-rw-r--r--assets/node_modules/stylelint/lib/rules/valueListCommaWhitespaceChecker.js55
-rw-r--r--assets/node_modules/stylelint/lib/standalone.js344
-rw-r--r--assets/node_modules/stylelint/lib/utils/FileCache.js65
-rw-r--r--assets/node_modules/stylelint/lib/utils/addEmptyLineAfter.js30
-rw-r--r--assets/node_modules/stylelint/lib/utils/addEmptyLineBefore.js26
-rw-r--r--assets/node_modules/stylelint/lib/utils/atRuleParamIndex.js16
-rw-r--r--assets/node_modules/stylelint/lib/utils/beforeBlockString.js54
-rw-r--r--assets/node_modules/stylelint/lib/utils/blockString.js25
-rw-r--r--assets/node_modules/stylelint/lib/utils/blurComments.js10
-rw-r--r--assets/node_modules/stylelint/lib/utils/blurFunctionArguments.js48
-rw-r--r--assets/node_modules/stylelint/lib/utils/blurInterpolation.js10
-rw-r--r--assets/node_modules/stylelint/lib/utils/checkAgainstRule.js46
-rw-r--r--assets/node_modules/stylelint/lib/utils/checkInvalidCLIOptions.js86
-rw-r--r--assets/node_modules/stylelint/lib/utils/configurationError.js15
-rw-r--r--assets/node_modules/stylelint/lib/utils/containsString.js56
-rw-r--r--assets/node_modules/stylelint/lib/utils/declarationValueIndex.js20
-rw-r--r--assets/node_modules/stylelint/lib/utils/eachDeclarationBlock.js59
-rw-r--r--assets/node_modules/stylelint/lib/utils/filterFilePaths.js19
-rw-r--r--assets/node_modules/stylelint/lib/utils/findAnimationName.js69
-rw-r--r--assets/node_modules/stylelint/lib/utils/findAtRuleContext.js23
-rw-r--r--assets/node_modules/stylelint/lib/utils/findFontFamily.js128
-rw-r--r--assets/node_modules/stylelint/lib/utils/findListStyleType.js60
-rw-r--r--assets/node_modules/stylelint/lib/utils/functionArgumentsSearch.js37
-rw-r--r--assets/node_modules/stylelint/lib/utils/getCacheFile.js52
-rw-r--r--assets/node_modules/stylelint/lib/utils/getFileIgnorer.js40
-rw-r--r--assets/node_modules/stylelint/lib/utils/getFormatterOptionsText.js19
-rw-r--r--assets/node_modules/stylelint/lib/utils/getModulePath.js31
-rw-r--r--assets/node_modules/stylelint/lib/utils/getNextNonSharedLineCommentNode.js38
-rw-r--r--assets/node_modules/stylelint/lib/utils/getOsEol.js11
-rw-r--r--assets/node_modules/stylelint/lib/utils/getPreviousNonSharedLineCommentNode.js40
-rw-r--r--assets/node_modules/stylelint/lib/utils/getSchemeFromUrl.js39
-rw-r--r--assets/node_modules/stylelint/lib/utils/getUnitFromValueNode.js49
-rw-r--r--assets/node_modules/stylelint/lib/utils/hasBlock.js11
-rw-r--r--assets/node_modules/stylelint/lib/utils/hasEmptyBlock.js13
-rw-r--r--assets/node_modules/stylelint/lib/utils/hasEmptyLine.js14
-rw-r--r--assets/node_modules/stylelint/lib/utils/hasInterpolation.js26
-rw-r--r--assets/node_modules/stylelint/lib/utils/hasLessInterpolation.js11
-rw-r--r--assets/node_modules/stylelint/lib/utils/hasPsvInterpolation.js10
-rw-r--r--assets/node_modules/stylelint/lib/utils/hasScssInterpolation.js10
-rw-r--r--assets/node_modules/stylelint/lib/utils/hasTplInterpolation.js11
-rw-r--r--assets/node_modules/stylelint/lib/utils/hash.js14
-rw-r--r--assets/node_modules/stylelint/lib/utils/isAfterComment.js16
-rw-r--r--assets/node_modules/stylelint/lib/utils/isAfterSingleLineComment.js22
-rw-r--r--assets/node_modules/stylelint/lib/utils/isAfterStandardPropertyDeclaration.js20
-rw-r--r--assets/node_modules/stylelint/lib/utils/isAutoprefixable.js77
-rw-r--r--assets/node_modules/stylelint/lib/utils/isBlocklessAtRuleAfterBlocklessAtRule.js22
-rw-r--r--assets/node_modules/stylelint/lib/utils/isBlocklessAtRuleAfterSameNameBlocklessAtRule.js19
-rw-r--r--assets/node_modules/stylelint/lib/utils/isCounterIncrementCustomIdentValue.js21
-rw-r--r--assets/node_modules/stylelint/lib/utils/isCounterResetCustomIdentValue.js21
-rw-r--r--assets/node_modules/stylelint/lib/utils/isCustomElement.js46
-rw-r--r--assets/node_modules/stylelint/lib/utils/isCustomMediaQuery.js10
-rw-r--r--assets/node_modules/stylelint/lib/utils/isCustomProperty.js10
-rw-r--r--assets/node_modules/stylelint/lib/utils/isCustomPropertySet.js18
-rw-r--r--assets/node_modules/stylelint/lib/utils/isCustomSelector.js11
-rw-r--r--assets/node_modules/stylelint/lib/utils/isFirstNested.js67
-rw-r--r--assets/node_modules/stylelint/lib/utils/isFirstNodeOfRoot.js15
-rw-r--r--assets/node_modules/stylelint/lib/utils/isKeyframeRule.js13
-rw-r--r--assets/node_modules/stylelint/lib/utils/isKeyframeSelector.js22
-rw-r--r--assets/node_modules/stylelint/lib/utils/isLessVariable.js12
-rw-r--r--assets/node_modules/stylelint/lib/utils/isLogicalCombination.js22
-rw-r--r--assets/node_modules/stylelint/lib/utils/isMap.js44
-rw-r--r--assets/node_modules/stylelint/lib/utils/isMathFunction.js13
-rw-r--r--assets/node_modules/stylelint/lib/utils/isNumbery.js13
-rw-r--r--assets/node_modules/stylelint/lib/utils/isOnlyWhitespace.js22
-rw-r--r--assets/node_modules/stylelint/lib/utils/isRangeContextMediaFeature.js11
-rw-r--r--assets/node_modules/stylelint/lib/utils/isSharedLineComment.js53
-rw-r--r--assets/node_modules/stylelint/lib/utils/isSingleLineString.js12
-rw-r--r--assets/node_modules/stylelint/lib/utils/isStandardSyntaxAtRule.js31
-rw-r--r--assets/node_modules/stylelint/lib/utils/isStandardSyntaxCombinator.js32
-rw-r--r--assets/node_modules/stylelint/lib/utils/isStandardSyntaxDeclaration.js61
-rw-r--r--assets/node_modules/stylelint/lib/utils/isStandardSyntaxFunction.js16
-rw-r--r--assets/node_modules/stylelint/lib/utils/isStandardSyntaxMediaFeature.js26
-rw-r--r--assets/node_modules/stylelint/lib/utils/isStandardSyntaxMediaFeatureName.js16
-rw-r--r--assets/node_modules/stylelint/lib/utils/isStandardSyntaxProperty.js33
-rw-r--r--assets/node_modules/stylelint/lib/utils/isStandardSyntaxRule.js66
-rw-r--r--assets/node_modules/stylelint/lib/utils/isStandardSyntaxSelector.js38
-rw-r--r--assets/node_modules/stylelint/lib/utils/isStandardSyntaxTypeSelector.js51
-rw-r--r--assets/node_modules/stylelint/lib/utils/isStandardSyntaxUrl.js48
-rw-r--r--assets/node_modules/stylelint/lib/utils/isStandardSyntaxValue.js40
-rw-r--r--assets/node_modules/stylelint/lib/utils/isValidFontSize.js38
-rw-r--r--assets/node_modules/stylelint/lib/utils/isValidHex.js11
-rw-r--r--assets/node_modules/stylelint/lib/utils/isVariable.js11
-rw-r--r--assets/node_modules/stylelint/lib/utils/isWhitespace.js11
-rw-r--r--assets/node_modules/stylelint/lib/utils/matchesStringOrRegExp.js85
-rw-r--r--assets/node_modules/stylelint/lib/utils/nextNonCommentNode.js20
-rw-r--r--assets/node_modules/stylelint/lib/utils/noFilesFoundError.js20
-rw-r--r--assets/node_modules/stylelint/lib/utils/nodeContextLookup.js43
-rw-r--r--assets/node_modules/stylelint/lib/utils/optionsMatches.js22
-rw-r--r--assets/node_modules/stylelint/lib/utils/parseCalcExpression/index.js11
-rw-r--r--assets/node_modules/stylelint/lib/utils/parseCalcExpression/parser.jison172
-rw-r--r--assets/node_modules/stylelint/lib/utils/parseCalcExpression/parser.js3927
-rw-r--r--assets/node_modules/stylelint/lib/utils/parseSelector.js18
-rw-r--r--assets/node_modules/stylelint/lib/utils/rawNodeString.js20
-rw-r--r--assets/node_modules/stylelint/lib/utils/removeEmptyLinesAfter.js15
-rw-r--r--assets/node_modules/stylelint/lib/utils/removeEmptyLinesBefore.js15
-rw-r--r--assets/node_modules/stylelint/lib/utils/report.js98
-rw-r--r--assets/node_modules/stylelint/lib/utils/ruleMessages.js35
-rw-r--r--assets/node_modules/stylelint/lib/utils/transformSelector.js17
-rw-r--r--assets/node_modules/stylelint/lib/utils/typeGuards.js44
-rw-r--r--assets/node_modules/stylelint/lib/utils/validateObjectWithArrayProps.js41
-rw-r--r--assets/node_modules/stylelint/lib/utils/validateOptions.js171
-rw-r--r--assets/node_modules/stylelint/lib/utils/whitespaceChecker.js345
-rw-r--r--assets/node_modules/stylelint/lib/writeOutputFile.js13
l---------assets/node_modules/stylelint/node_modules/.bin/autoprefixer1
l---------assets/node_modules/stylelint/node_modules/.bin/specificity1
-rw-r--r--assets/node_modules/stylelint/node_modules/ansi-styles/index.d.ts197
-rw-r--r--assets/node_modules/stylelint/node_modules/ansi-styles/index.js163
-rw-r--r--assets/node_modules/stylelint/node_modules/ansi-styles/license9
-rw-r--r--assets/node_modules/stylelint/node_modules/ansi-styles/package.json57
-rw-r--r--assets/node_modules/stylelint/node_modules/ansi-styles/readme.md158
-rw-r--r--assets/node_modules/stylelint/node_modules/chalk/index.d.ts411
-rw-r--r--assets/node_modules/stylelint/node_modules/chalk/license9
-rw-r--r--assets/node_modules/stylelint/node_modules/chalk/package.json63
-rw-r--r--assets/node_modules/stylelint/node_modules/chalk/readme.md304
-rw-r--r--assets/node_modules/stylelint/node_modules/chalk/source/index.js233
-rw-r--r--assets/node_modules/stylelint/node_modules/chalk/source/templates.js134
-rw-r--r--assets/node_modules/stylelint/node_modules/chalk/source/util.js39
-rw-r--r--assets/node_modules/stylelint/node_modules/color-convert/CHANGELOG.md54
-rw-r--r--assets/node_modules/stylelint/node_modules/color-convert/LICENSE21
-rw-r--r--assets/node_modules/stylelint/node_modules/color-convert/README.md68
-rw-r--r--assets/node_modules/stylelint/node_modules/color-convert/conversions.js839
-rw-r--r--assets/node_modules/stylelint/node_modules/color-convert/index.js81
-rw-r--r--assets/node_modules/stylelint/node_modules/color-convert/package.json48
-rw-r--r--assets/node_modules/stylelint/node_modules/color-convert/route.js97
-rw-r--r--assets/node_modules/stylelint/node_modules/color-name/LICENSE8
-rw-r--r--assets/node_modules/stylelint/node_modules/color-name/README.md11
-rw-r--r--assets/node_modules/stylelint/node_modules/color-name/index.js152
-rw-r--r--assets/node_modules/stylelint/node_modules/color-name/package.json28
-rw-r--r--assets/node_modules/stylelint/node_modules/has-flag/index.d.ts39
-rw-r--r--assets/node_modules/stylelint/node_modules/has-flag/index.js8
-rw-r--r--assets/node_modules/stylelint/node_modules/has-flag/license9
-rw-r--r--assets/node_modules/stylelint/node_modules/has-flag/package.json46
-rw-r--r--assets/node_modules/stylelint/node_modules/has-flag/readme.md89
-rw-r--r--assets/node_modules/stylelint/node_modules/supports-color/browser.js5
-rw-r--r--assets/node_modules/stylelint/node_modules/supports-color/index.js139
-rw-r--r--assets/node_modules/stylelint/node_modules/supports-color/license9
-rw-r--r--assets/node_modules/stylelint/node_modules/supports-color/package.json53
-rw-r--r--assets/node_modules/stylelint/node_modules/supports-color/readme.md76
-rw-r--r--assets/node_modules/stylelint/package.json261
-rw-r--r--assets/node_modules/sugarss/CHANGELOG.md44
-rw-r--r--assets/node_modules/sugarss/LICENSE20
-rw-r--r--assets/node_modules/sugarss/README.md234
-rw-r--r--assets/node_modules/sugarss/index.js17
-rw-r--r--assets/node_modules/sugarss/liner.js36
-rw-r--r--assets/node_modules/sugarss/package.json19
-rw-r--r--assets/node_modules/sugarss/parse.js39
-rw-r--r--assets/node_modules/sugarss/parser.js448
-rw-r--r--assets/node_modules/sugarss/preprocess.js121
-rw-r--r--assets/node_modules/sugarss/stringifier.js127
-rw-r--r--assets/node_modules/sugarss/stringify.js17
-rw-r--r--assets/node_modules/sugarss/tokenize.js287
-rw-r--r--assets/node_modules/supports-color/browser.js5
-rw-r--r--assets/node_modules/supports-color/index.js131
-rw-r--r--assets/node_modules/supports-color/license9
-rw-r--r--assets/node_modules/supports-color/package.json53
-rw-r--r--assets/node_modules/supports-color/readme.md66
-rw-r--r--assets/node_modules/svg-tags/LICENSE21
-rw-r--r--assets/node_modules/svg-tags/README.md99
-rw-r--r--assets/node_modules/svg-tags/lib/index.js1
-rw-r--r--assets/node_modules/svg-tags/lib/svg-tags.json82
-rw-r--r--assets/node_modules/svg-tags/package.json46
-rw-r--r--assets/node_modules/table/LICENSE24
-rw-r--r--assets/node_modules/table/README.md735
-rw-r--r--assets/node_modules/table/dist/alignString.js108
-rw-r--r--assets/node_modules/table/dist/alignString.js.flow96
-rw-r--r--assets/node_modules/table/dist/alignString.js.map1
-rw-r--r--assets/node_modules/table/dist/alignTableData.js35
-rw-r--r--assets/node_modules/table/dist/alignTableData.js.flow21
-rw-r--r--assets/node_modules/table/dist/alignTableData.js.map1
-rw-r--r--assets/node_modules/table/dist/calculateCellHeight.js38
-rw-r--r--assets/node_modules/table/dist/calculateCellHeight.js.flow24
-rw-r--r--assets/node_modules/table/dist/calculateCellHeight.js.map1
-rw-r--r--assets/node_modules/table/dist/calculateCellWidthIndex.js28
-rw-r--r--assets/node_modules/table/dist/calculateCellWidthIndex.js.flow17
-rw-r--r--assets/node_modules/table/dist/calculateCellWidthIndex.js.map1
-rw-r--r--assets/node_modules/table/dist/calculateMaximumColumnWidthIndex.js37
-rw-r--r--assets/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.flow27
-rw-r--r--assets/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.map1
-rw-r--r--assets/node_modules/table/dist/calculateRowHeightIndex.js48
-rw-r--r--assets/node_modules/table/dist/calculateRowHeightIndex.js.flow35
-rw-r--r--assets/node_modules/table/dist/calculateRowHeightIndex.js.map1
-rw-r--r--assets/node_modules/table/dist/createStream.js132
-rw-r--r--assets/node_modules/table/dist/createStream.js.flow127
-rw-r--r--assets/node_modules/table/dist/createStream.js.map1
-rw-r--r--assets/node_modules/table/dist/drawBorder.js110
-rw-r--r--assets/node_modules/table/dist/drawBorder.js.flow101
-rw-r--r--assets/node_modules/table/dist/drawBorder.js.map1
-rw-r--r--assets/node_modules/table/dist/drawRow.js26
-rw-r--r--assets/node_modules/table/dist/drawRow.js.flow15
-rw-r--r--assets/node_modules/table/dist/drawRow.js.map1
-rw-r--r--assets/node_modules/table/dist/drawTable.js59
-rw-r--r--assets/node_modules/table/dist/drawTable.js.flow53
-rw-r--r--assets/node_modules/table/dist/drawTable.js.map1
-rw-r--r--assets/node_modules/table/dist/getBorderCharacters.js119
-rw-r--r--assets/node_modules/table/dist/getBorderCharacters.js.flow120
-rw-r--r--assets/node_modules/table/dist/getBorderCharacters.js.map1
-rw-r--r--assets/node_modules/table/dist/index.js32
-rw-r--r--assets/node_modules/table/dist/index.js.flow9
-rw-r--r--assets/node_modules/table/dist/index.js.map1
-rw-r--r--assets/node_modules/table/dist/makeConfig.js94
-rw-r--r--assets/node_modules/table/dist/makeConfig.js.flow76
-rw-r--r--assets/node_modules/table/dist/makeConfig.js.map1
-rw-r--r--assets/node_modules/table/dist/makeStreamConfig.js101
-rw-r--r--assets/node_modules/table/dist/makeStreamConfig.js.flow83
-rw-r--r--assets/node_modules/table/dist/makeStreamConfig.js.map1
-rw-r--r--assets/node_modules/table/dist/mapDataUsingRowHeightIndex.js44
-rw-r--r--assets/node_modules/table/dist/mapDataUsingRowHeightIndex.js.flow34
-rw-r--r--assets/node_modules/table/dist/mapDataUsingRowHeightIndex.js.map1
-rw-r--r--assets/node_modules/table/dist/padTableData.js24
-rw-r--r--assets/node_modules/table/dist/padTableData.js.flow14
-rw-r--r--assets/node_modules/table/dist/padTableData.js.map1
-rw-r--r--assets/node_modules/table/dist/schemas/config.json114
-rw-r--r--assets/node_modules/table/dist/schemas/streamConfig.json114
-rw-r--r--assets/node_modules/table/dist/stringifyTableData.js22
-rw-r--r--assets/node_modules/table/dist/stringifyTableData.js.flow11
-rw-r--r--assets/node_modules/table/dist/stringifyTableData.js.map1
-rw-r--r--assets/node_modules/table/dist/table.js110
-rw-r--r--assets/node_modules/table/dist/table.js.flow96
-rw-r--r--assets/node_modules/table/dist/table.js.map1
-rw-r--r--assets/node_modules/table/dist/truncateTableData.js30
-rw-r--r--assets/node_modules/table/dist/truncateTableData.js.flow17
-rw-r--r--assets/node_modules/table/dist/truncateTableData.js.map1
-rw-r--r--assets/node_modules/table/dist/validateConfig.js752
-rw-r--r--assets/node_modules/table/dist/validateConfig.js.flow34
-rw-r--r--assets/node_modules/table/dist/validateConfig.js.map1
-rw-r--r--assets/node_modules/table/dist/validateStreamConfig.js739
-rw-r--r--assets/node_modules/table/dist/validateTableData.js96
-rw-r--r--assets/node_modules/table/dist/validateTableData.js.flow44
-rw-r--r--assets/node_modules/table/dist/validateTableData.js.map1
-rw-r--r--assets/node_modules/table/dist/wrapCell.js48
-rw-r--r--assets/node_modules/table/dist/wrapCell.js.flow35
-rw-r--r--assets/node_modules/table/dist/wrapCell.js.map1
-rw-r--r--assets/node_modules/table/dist/wrapString.js40
-rw-r--r--assets/node_modules/table/dist/wrapString.js.flow29
-rw-r--r--assets/node_modules/table/dist/wrapString.js.map1
-rw-r--r--assets/node_modules/table/dist/wrapWord.js47
-rw-r--r--assets/node_modules/table/dist/wrapWord.js.flow39
-rw-r--r--assets/node_modules/table/dist/wrapWord.js.map1
-rw-r--r--assets/node_modules/table/node_modules/ansi-regex/index.js14
-rw-r--r--assets/node_modules/table/node_modules/ansi-regex/license9
-rw-r--r--assets/node_modules/table/node_modules/ansi-regex/package.json53
-rw-r--r--assets/node_modules/table/node_modules/ansi-regex/readme.md87
-rw-r--r--assets/node_modules/table/node_modules/emoji-regex/LICENSE-MIT.txt20
-rw-r--r--assets/node_modules/table/node_modules/emoji-regex/README.md73
-rw-r--r--assets/node_modules/table/node_modules/emoji-regex/es2015/index.js6
-rw-r--r--assets/node_modules/table/node_modules/emoji-regex/es2015/text.js6
-rw-r--r--assets/node_modules/table/node_modules/emoji-regex/index.d.ts5
-rw-r--r--assets/node_modules/table/node_modules/emoji-regex/index.js6
-rw-r--r--assets/node_modules/table/node_modules/emoji-regex/package.json51
-rw-r--r--assets/node_modules/table/node_modules/emoji-regex/text.js6
-rw-r--r--assets/node_modules/table/node_modules/string-width/index.js39
-rw-r--r--assets/node_modules/table/node_modules/string-width/license9
-rw-r--r--assets/node_modules/table/node_modules/string-width/package.json56
-rw-r--r--assets/node_modules/table/node_modules/string-width/readme.md45
-rw-r--r--assets/node_modules/table/node_modules/strip-ansi/index.d.ts15
-rw-r--r--assets/node_modules/table/node_modules/strip-ansi/index.js7
-rw-r--r--assets/node_modules/table/node_modules/strip-ansi/license9
-rw-r--r--assets/node_modules/table/node_modules/strip-ansi/package.json54
-rw-r--r--assets/node_modules/table/node_modules/strip-ansi/readme.md61
-rw-r--r--assets/node_modules/table/package.json84
-rw-r--r--assets/node_modules/to-fast-properties/index.js27
-rw-r--r--assets/node_modules/to-fast-properties/license10
-rw-r--r--assets/node_modules/to-fast-properties/package.json35
-rw-r--r--assets/node_modules/to-fast-properties/readme.md37
-rw-r--r--assets/node_modules/to-regex-range/LICENSE21
-rw-r--r--assets/node_modules/to-regex-range/README.md305
-rw-r--r--assets/node_modules/to-regex-range/index.js288
-rw-r--r--assets/node_modules/to-regex-range/package.json88
-rw-r--r--assets/node_modules/trim-newlines/index.d.ts42
-rw-r--r--assets/node_modules/trim-newlines/index.js4
-rw-r--r--assets/node_modules/trim-newlines/license9
-rw-r--r--assets/node_modules/trim-newlines/package.json43
-rw-r--r--assets/node_modules/trim-newlines/readme.md52
-rw-r--r--assets/node_modules/trim-trailing-lines/index.js17
-rw-r--r--assets/node_modules/trim-trailing-lines/license22
-rw-r--r--assets/node_modules/trim-trailing-lines/package.json72
-rw-r--r--assets/node_modules/trim-trailing-lines/readme.md68
-rw-r--r--assets/node_modules/trim/.npmignore4
-rw-r--r--assets/node_modules/trim/History.md5
-rw-r--r--assets/node_modules/trim/Makefile7
-rw-r--r--assets/node_modules/trim/Readme.md69
-rw-r--r--assets/node_modules/trim/component.json7
-rw-r--r--assets/node_modules/trim/index.js14
-rw-r--r--assets/node_modules/trim/package.json18
-rw-r--r--assets/node_modules/trough/index.js74
-rw-r--r--assets/node_modules/trough/license21
-rw-r--r--assets/node_modules/trough/package.json75
-rw-r--r--assets/node_modules/trough/readme.md330
-rw-r--r--assets/node_modules/trough/wrap.js64
-rw-r--r--assets/node_modules/type-fest/index.d.ts20
-rw-r--r--assets/node_modules/type-fest/license9
-rw-r--r--assets/node_modules/type-fest/package.json51
-rw-r--r--assets/node_modules/type-fest/readme.md635
-rw-r--r--assets/node_modules/type-fest/source/basic.d.ts67
-rw-r--r--assets/node_modules/type-fest/source/except.d.ts22
-rw-r--r--assets/node_modules/type-fest/source/literal-union.d.ts33
-rw-r--r--assets/node_modules/type-fest/source/merge-exclusive.d.ts39
-rw-r--r--assets/node_modules/type-fest/source/merge.d.ts22
-rw-r--r--assets/node_modules/type-fest/source/mutable.d.ts22
-rw-r--r--assets/node_modules/type-fest/source/opaque.d.ts40
-rw-r--r--assets/node_modules/type-fest/source/package-json.d.ts501
-rw-r--r--assets/node_modules/type-fest/source/partial-deep.d.ts72
-rw-r--r--assets/node_modules/type-fest/source/promisable.d.ts23
-rw-r--r--assets/node_modules/type-fest/source/readonly-deep.d.ts59
-rw-r--r--assets/node_modules/type-fest/source/require-at-least-one.d.ts32
-rw-r--r--assets/node_modules/type-fest/source/require-exactly-one.d.ts36
-rw-r--r--assets/node_modules/type-fest/source/set-optional.d.ts32
-rw-r--r--assets/node_modules/type-fest/source/set-required.d.ts32
-rw-r--r--assets/node_modules/typedarray-to-buffer/.airtap.yml15
-rw-r--r--assets/node_modules/typedarray-to-buffer/.travis.yml11
-rw-r--r--assets/node_modules/typedarray-to-buffer/LICENSE21
-rw-r--r--assets/node_modules/typedarray-to-buffer/README.md85
-rw-r--r--assets/node_modules/typedarray-to-buffer/index.js25
-rw-r--r--assets/node_modules/typedarray-to-buffer/package.json50
-rw-r--r--assets/node_modules/typedarray-to-buffer/test/basic.js50
-rw-r--r--assets/node_modules/unherit/index.js45
-rw-r--r--assets/node_modules/unherit/license21
-rw-r--r--assets/node_modules/unherit/package.json72
-rw-r--r--assets/node_modules/unherit/readme.md79
-rw-r--r--assets/node_modules/unified/changelog.md5
-rw-r--r--assets/node_modules/unified/index.js455
-rw-r--r--assets/node_modules/unified/license21
-rw-r--r--assets/node_modules/unified/package.json98
-rw-r--r--assets/node_modules/unified/readme.md1205
-rw-r--r--assets/node_modules/unified/types/index.d.ts226
-rw-r--r--assets/node_modules/uniq/.npmignore15
-rw-r--r--assets/node_modules/uniq/LICENSE22
-rw-r--r--assets/node_modules/uniq/README.md46
-rw-r--r--assets/node_modules/uniq/package.json36
-rw-r--r--assets/node_modules/uniq/test/test.js11
-rw-r--r--assets/node_modules/uniq/uniq.js57
-rw-r--r--assets/node_modules/unist-util-find-all-after/.editorconfig9
-rw-r--r--assets/node_modules/unist-util-find-all-after/.prettierignore8
-rw-r--r--assets/node_modules/unist-util-find-all-after/.travis.yml15
-rw-r--r--assets/node_modules/unist-util-find-all-after/index.js38
-rw-r--r--assets/node_modules/unist-util-find-all-after/license22
-rw-r--r--assets/node_modules/unist-util-find-all-after/package.json76
-rw-r--r--assets/node_modules/unist-util-find-all-after/readme.md146
-rw-r--r--assets/node_modules/unist-util-find-all-after/test.js116
-rw-r--r--assets/node_modules/unist-util-is/convert.js87
-rw-r--r--assets/node_modules/unist-util-is/index.js37
-rw-r--r--assets/node_modules/unist-util-is/license22
-rw-r--r--assets/node_modules/unist-util-is/package.json75
-rw-r--r--assets/node_modules/unist-util-is/readme.md202
-rw-r--r--assets/node_modules/unist-util-remove-position/index.js18
-rw-r--r--assets/node_modules/unist-util-remove-position/license22
-rw-r--r--assets/node_modules/unist-util-remove-position/package.json76
-rw-r--r--assets/node_modules/unist-util-remove-position/readme.md131
-rw-r--r--assets/node_modules/unist-util-stringify-position/LICENSE22
-rw-r--r--assets/node_modules/unist-util-stringify-position/index.js50
-rw-r--r--assets/node_modules/unist-util-stringify-position/package.json77
-rw-r--r--assets/node_modules/unist-util-stringify-position/readme.md100
-rw-r--r--assets/node_modules/unist-util-visit-parents/index.js78
-rw-r--r--assets/node_modules/unist-util-visit-parents/license22
-rw-r--r--assets/node_modules/unist-util-visit-parents/package.json70
-rw-r--r--assets/node_modules/unist-util-visit-parents/readme.md218
-rw-r--r--assets/node_modules/unist-util-visit/index.js29
-rw-r--r--assets/node_modules/unist-util-visit/license22
-rw-r--r--assets/node_modules/unist-util-visit/package.json79
-rw-r--r--assets/node_modules/unist-util-visit/readme.md121
-rw-r--r--assets/node_modules/uri-js/README.md199
-rw-r--r--assets/node_modules/uri-js/bower.json47
-rw-r--r--assets/node_modules/uri-js/dist/es5/uri.all.d.ts59
-rw-r--r--assets/node_modules/uri-js/dist/es5/uri.all.js1389
-rw-r--r--assets/node_modules/uri-js/dist/es5/uri.all.js.map1
-rw-r--r--assets/node_modules/uri-js/dist/es5/uri.all.min.d.ts59
-rw-r--r--assets/node_modules/uri-js/dist/es5/uri.all.min.js3
-rw-r--r--assets/node_modules/uri-js/dist/es5/uri.all.min.js.map1
-rw-r--r--assets/node_modules/uri-js/dist/esnext/index.d.ts1
-rw-r--r--assets/node_modules/uri-js/dist/esnext/index.js13
-rw-r--r--assets/node_modules/uri-js/dist/esnext/index.js.map1
-rw-r--r--assets/node_modules/uri-js/dist/esnext/regexps-iri.d.ts3
-rw-r--r--assets/node_modules/uri-js/dist/esnext/regexps-iri.js3
-rw-r--r--assets/node_modules/uri-js/dist/esnext/regexps-iri.js.map1
-rw-r--r--assets/node_modules/uri-js/dist/esnext/regexps-uri.d.ts4
-rw-r--r--assets/node_modules/uri-js/dist/esnext/regexps-uri.js42
-rw-r--r--assets/node_modules/uri-js/dist/esnext/regexps-uri.js.map1
-rw-r--r--assets/node_modules/uri-js/dist/esnext/schemes/http.d.ts3
-rw-r--r--assets/node_modules/uri-js/dist/esnext/schemes/http.js27
-rw-r--r--assets/node_modules/uri-js/dist/esnext/schemes/http.js.map1
-rw-r--r--assets/node_modules/uri-js/dist/esnext/schemes/https.d.ts3
-rw-r--r--assets/node_modules/uri-js/dist/esnext/schemes/https.js9
-rw-r--r--assets/node_modules/uri-js/dist/esnext/schemes/https.js.map1
-rw-r--r--assets/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts12
-rw-r--r--assets/node_modules/uri-js/dist/esnext/schemes/mailto.js148
-rw-r--r--assets/node_modules/uri-js/dist/esnext/schemes/mailto.js.map1
-rw-r--r--assets/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts7
-rw-r--r--assets/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js23
-rw-r--r--assets/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map1
-rw-r--r--assets/node_modules/uri-js/dist/esnext/schemes/urn.d.ts10
-rw-r--r--assets/node_modules/uri-js/dist/esnext/schemes/urn.js49
-rw-r--r--assets/node_modules/uri-js/dist/esnext/schemes/urn.js.map1
-rw-r--r--assets/node_modules/uri-js/dist/esnext/uri.d.ts59
-rw-r--r--assets/node_modules/uri-js/dist/esnext/uri.js480
-rw-r--r--assets/node_modules/uri-js/dist/esnext/uri.js.map1
-rw-r--r--assets/node_modules/uri-js/dist/esnext/util.d.ts6
-rw-r--r--assets/node_modules/uri-js/dist/esnext/util.js36
-rw-r--r--assets/node_modules/uri-js/dist/esnext/util.js.map1
-rw-r--r--assets/node_modules/uri-js/package.json65
-rw-r--r--assets/node_modules/uri-js/rollup.config.js32
-rw-r--r--assets/node_modules/uri-js/src/index.ts18
-rw-r--r--assets/node_modules/uri-js/src/punycode.d.ts24
-rw-r--r--assets/node_modules/uri-js/src/regexps-iri.ts4
-rw-r--r--assets/node_modules/uri-js/src/regexps-uri.ts89
-rw-r--r--assets/node_modules/uri-js/src/schemes/http.ts36
-rw-r--r--assets/node_modules/uri-js/src/schemes/https.ts11
-rw-r--r--assets/node_modules/uri-js/src/schemes/mailto.ts182
-rw-r--r--assets/node_modules/uri-js/src/schemes/urn-uuid.ts36
-rw-r--r--assets/node_modules/uri-js/src/schemes/urn.ts69
-rw-r--r--assets/node_modules/uri-js/src/uri.ts556
-rw-r--r--assets/node_modules/uri-js/src/util.ts40
-rw-r--r--assets/node_modules/uri-js/tests/qunit.css118
-rw-r--r--assets/node_modules/uri-js/tests/qunit.js1042
-rw-r--r--assets/node_modules/uri-js/tests/test-es5-min.html17
-rw-r--r--assets/node_modules/uri-js/tests/test-es5.html17
-rw-r--r--assets/node_modules/uri-js/tests/tests.js774
-rw-r--r--assets/node_modules/uri-js/tsconfig.json20
-rw-r--r--assets/node_modules/uri-js/yarn.lock1902
-rw-r--r--assets/node_modules/util-deprecate/History.md16
-rw-r--r--assets/node_modules/util-deprecate/LICENSE24
-rw-r--r--assets/node_modules/util-deprecate/README.md53
-rw-r--r--assets/node_modules/util-deprecate/browser.js67
-rw-r--r--assets/node_modules/util-deprecate/node.js6
-rw-r--r--assets/node_modules/util-deprecate/package.json27
-rw-r--r--assets/node_modules/v8-compile-cache/CHANGELOG.md41
-rw-r--r--assets/node_modules/v8-compile-cache/LICENSE21
-rw-r--r--assets/node_modules/v8-compile-cache/README.md53
-rw-r--r--assets/node_modules/v8-compile-cache/package.json33
-rw-r--r--assets/node_modules/v8-compile-cache/v8-compile-cache.js367
-rw-r--r--assets/node_modules/validate-npm-package-license/LICENSE202
-rw-r--r--assets/node_modules/validate-npm-package-license/README.md113
-rw-r--r--assets/node_modules/validate-npm-package-license/index.js86
-rw-r--r--assets/node_modules/validate-npm-package-license/package.json28
-rw-r--r--assets/node_modules/vfile-location/index.js74
-rw-r--r--assets/node_modules/vfile-location/license22
-rw-r--r--assets/node_modules/vfile-location/package.json73
-rw-r--r--assets/node_modules/vfile-location/readme.md115
-rw-r--r--assets/node_modules/vfile-message/index.js94
-rw-r--r--assets/node_modules/vfile-message/license22
-rw-r--r--assets/node_modules/vfile-message/package.json73
-rw-r--r--assets/node_modules/vfile-message/readme.md194
-rw-r--r--assets/node_modules/vfile/changelog.md5
-rw-r--r--assets/node_modules/vfile/core.js165
-rw-r--r--assets/node_modules/vfile/index.js52
-rw-r--r--assets/node_modules/vfile/license21
-rw-r--r--assets/node_modules/vfile/package.json88
-rw-r--r--assets/node_modules/vfile/readme.md347
-rw-r--r--assets/node_modules/which/CHANGELOG.md152
-rw-r--r--assets/node_modules/which/LICENSE15
-rw-r--r--assets/node_modules/which/README.md51
-rwxr-xr-xassets/node_modules/which/bin/which52
-rw-r--r--assets/node_modules/which/package.json30
-rw-r--r--assets/node_modules/which/which.js135
-rw-r--r--assets/node_modules/wrappy/LICENSE15
-rw-r--r--assets/node_modules/wrappy/README.md36
-rw-r--r--assets/node_modules/wrappy/package.json29
-rw-r--r--assets/node_modules/wrappy/wrappy.js33
-rw-r--r--assets/node_modules/write-file-atomic/CHANGELOG.md32
-rw-r--r--assets/node_modules/write-file-atomic/LICENSE6
-rw-r--r--assets/node_modules/write-file-atomic/README.md72
-rw-r--r--assets/node_modules/write-file-atomic/index.js215
-rw-r--r--assets/node_modules/write-file-atomic/package.json47
-rw-r--r--assets/node_modules/write/LICENSE21
-rw-r--r--assets/node_modules/write/README.md178
-rw-r--r--assets/node_modules/write/index.js160
l---------assets/node_modules/write/node_modules/.bin/mkdirp1
-rw-r--r--assets/node_modules/write/package.json74
-rw-r--r--assets/node_modules/x-is-string/.npmignore16
-rw-r--r--assets/node_modules/x-is-string/.travis.yml8
-rw-r--r--assets/node_modules/x-is-string/LICENCE19
-rw-r--r--assets/node_modules/x-is-string/README.md46
-rw-r--r--assets/node_modules/x-is-string/index.js7
-rw-r--r--assets/node_modules/x-is-string/package.json55
-rw-r--r--assets/node_modules/x-is-string/test/index.js51
-rw-r--r--assets/node_modules/xtend/.jshintrc30
-rw-r--r--assets/node_modules/xtend/LICENSE20
-rw-r--r--assets/node_modules/xtend/README.md32
-rw-r--r--assets/node_modules/xtend/immutable.js19
-rw-r--r--assets/node_modules/xtend/mutable.js17
-rw-r--r--assets/node_modules/xtend/package.json55
-rw-r--r--assets/node_modules/xtend/test.js103
-rw-r--r--assets/node_modules/yaml/LICENSE13
-rw-r--r--assets/node_modules/yaml/README.md127
-rw-r--r--assets/node_modules/yaml/browser/dist/Anchors.js148
-rw-r--r--assets/node_modules/yaml/browser/dist/Document.js843
-rw-r--r--assets/node_modules/yaml/browser/dist/addComment.js17
-rw-r--r--assets/node_modules/yaml/browser/dist/constants.js34
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/Alias.js59
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/BlankLine.js69
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/BlockValue.js269
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/Collection.js297
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/CollectionItem.js158
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/Comment.js56
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/Directive.js108
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/Document.js306
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/FlowCollection.js239
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/Node.js408
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/ParseContext.js288
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/PlainValue.js183
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/QuoteDouble.js257
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/QuoteSingle.js132
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/Range.js77
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/parse.js59
-rw-r--r--assets/node_modules/yaml/browser/dist/cst/source-utils.js179
-rw-r--r--assets/node_modules/yaml/browser/dist/errors.js148
-rw-r--r--assets/node_modules/yaml/browser/dist/foldFlowLines.js149
-rw-r--r--assets/node_modules/yaml/browser/dist/index.js139
-rw-r--r--assets/node_modules/yaml/browser/dist/listTagNames.js42
-rw-r--r--assets/node_modules/yaml/browser/dist/schema/Alias.js156
-rw-r--r--assets/node_modules/yaml/browser/dist/schema/Collection.js278
-rw-r--r--assets/node_modules/yaml/browser/dist/schema/Map.js188
-rw-r--r--assets/node_modules/yaml/browser/dist/schema/Merge.js147
-rw-r--r--assets/node_modules/yaml/browser/dist/schema/Node.js16
-rw-r--r--assets/node_modules/yaml/browser/dist/schema/Pair.js189
-rw-r--r--assets/node_modules/yaml/browser/dist/schema/Scalar.js53
-rw-r--r--assets/node_modules/yaml/browser/dist/schema/Seq.js131
-rw-r--r--assets/node_modules/yaml/browser/dist/schema/index.js397
-rw-r--r--assets/node_modules/yaml/browser/dist/schema/parseMap.js332
-rw-r--r--assets/node_modules/yaml/browser/dist/schema/parseSeq.js183
-rw-r--r--assets/node_modules/yaml/browser/dist/schema/parseUtils.js123
-rw-r--r--assets/node_modules/yaml/browser/dist/stringify.js337
-rw-r--r--assets/node_modules/yaml/browser/dist/tags/core.js132
-rw-r--r--assets/node_modules/yaml/browser/dist/tags/failsafe/index.js17
-rw-r--r--assets/node_modules/yaml/browser/dist/tags/failsafe/map.js65
-rw-r--r--assets/node_modules/yaml/browser/dist/tags/failsafe/seq.js54
-rw-r--r--assets/node_modules/yaml/browser/dist/tags/failsafe/string.js40
-rw-r--r--assets/node_modules/yaml/browser/dist/tags/index.js50
-rw-r--r--assets/node_modules/yaml/browser/dist/tags/json.js103
-rw-r--r--assets/node_modules/yaml/browser/dist/tags/options.js35
-rw-r--r--assets/node_modules/yaml/browser/dist/tags/yaml-1.1/binary.js98
-rw-r--r--assets/node_modules/yaml/browser/dist/tags/yaml-1.1/index.js177
-rw-r--r--assets/node_modules/yaml/browser/dist/tags/yaml-1.1/omap.js161
-rw-r--r--assets/node_modules/yaml/browser/dist/tags/yaml-1.1/pairs.js100
-rw-r--r--assets/node_modules/yaml/browser/dist/tags/yaml-1.1/set.js140
-rw-r--r--assets/node_modules/yaml/browser/dist/tags/yaml-1.1/timestamp.js107
-rw-r--r--assets/node_modules/yaml/browser/dist/test-events.js175
-rw-r--r--assets/node_modules/yaml/browser/dist/toJSON.js27
-rw-r--r--assets/node_modules/yaml/browser/dist/warnings.js40
-rw-r--r--assets/node_modules/yaml/browser/index.js1
-rw-r--r--assets/node_modules/yaml/browser/map.js2
-rw-r--r--assets/node_modules/yaml/browser/pair.js2
-rw-r--r--assets/node_modules/yaml/browser/parse-cst.js1
-rw-r--r--assets/node_modules/yaml/browser/scalar.js2
-rw-r--r--assets/node_modules/yaml/browser/schema.js7
-rw-r--r--assets/node_modules/yaml/browser/seq.js2
-rw-r--r--assets/node_modules/yaml/browser/types.js11
-rw-r--r--assets/node_modules/yaml/browser/types/binary.js7
-rw-r--r--assets/node_modules/yaml/browser/types/omap.js2
-rw-r--r--assets/node_modules/yaml/browser/types/pairs.js2
-rw-r--r--assets/node_modules/yaml/browser/types/set.js2
-rw-r--r--assets/node_modules/yaml/browser/types/timestamp.js10
-rw-r--r--assets/node_modules/yaml/browser/util.js15
-rw-r--r--assets/node_modules/yaml/dist/Anchors.js125
-rw-r--r--assets/node_modules/yaml/dist/Document.js710
-rw-r--r--assets/node_modules/yaml/dist/addComment.js17
-rw-r--r--assets/node_modules/yaml/dist/constants.js34
-rw-r--r--assets/node_modules/yaml/dist/cst/Alias.js38
-rw-r--r--assets/node_modules/yaml/dist/cst/BlankLine.js52
-rw-r--r--assets/node_modules/yaml/dist/cst/BlockValue.js248
-rw-r--r--assets/node_modules/yaml/dist/cst/Collection.js271
-rw-r--r--assets/node_modules/yaml/dist/cst/CollectionItem.js140
-rw-r--r--assets/node_modules/yaml/dist/cst/Comment.js38
-rw-r--r--assets/node_modules/yaml/dist/cst/Directive.js80
-rw-r--r--assets/node_modules/yaml/dist/cst/Document.js281
-rw-r--r--assets/node_modules/yaml/dist/cst/FlowCollection.js218
-rw-r--r--assets/node_modules/yaml/dist/cst/Node.js370
-rw-r--r--assets/node_modules/yaml/dist/cst/ParseContext.js272
-rw-r--r--assets/node_modules/yaml/dist/cst/PlainValue.js161
-rw-r--r--assets/node_modules/yaml/dist/cst/QuoteDouble.js237
-rw-r--r--assets/node_modules/yaml/dist/cst/QuoteSingle.js113
-rw-r--r--assets/node_modules/yaml/dist/cst/Range.js63
-rw-r--r--assets/node_modules/yaml/dist/cst/parse.js55
-rw-r--r--assets/node_modules/yaml/dist/cst/source-utils.js178
-rw-r--r--assets/node_modules/yaml/dist/errors.js102
-rw-r--r--assets/node_modules/yaml/dist/foldFlowLines.js146
-rw-r--r--assets/node_modules/yaml/dist/index.js101
-rw-r--r--assets/node_modules/yaml/dist/listTagNames.js38
-rw-r--r--assets/node_modules/yaml/dist/schema/Alias.js109
-rw-r--r--assets/node_modules/yaml/dist/schema/Collection.js171
-rw-r--r--assets/node_modules/yaml/dist/schema/Map.js96
-rw-r--r--assets/node_modules/yaml/dist/schema/Merge.js80
-rw-r--r--assets/node_modules/yaml/dist/schema/Node.js10
-rw-r--r--assets/node_modules/yaml/dist/schema/Pair.js160
-rw-r--r--assets/node_modules/yaml/dist/schema/Scalar.js31
-rw-r--r--assets/node_modules/yaml/dist/schema/Seq.js78
-rw-r--r--assets/node_modules/yaml/dist/schema/index.js310
-rw-r--r--assets/node_modules/yaml/dist/schema/parseMap.js343
-rw-r--r--assets/node_modules/yaml/dist/schema/parseSeq.js180
-rw-r--r--assets/node_modules/yaml/dist/schema/parseUtils.js104
-rw-r--r--assets/node_modules/yaml/dist/stringify.js351
-rw-r--r--assets/node_modules/yaml/dist/tags/core.js96
-rw-r--r--assets/node_modules/yaml/dist/tags/failsafe/index.js17
-rw-r--r--assets/node_modules/yaml/dist/tags/failsafe/map.js33
-rw-r--r--assets/node_modules/yaml/dist/tags/failsafe/seq.js34
-rw-r--r--assets/node_modules/yaml/dist/tags/failsafe/string.js40
-rw-r--r--assets/node_modules/yaml/dist/tags/index.js50
-rw-r--r--assets/node_modules/yaml/dist/tags/json.js67
-rw-r--r--assets/node_modules/yaml/dist/tags/options.js35
-rw-r--r--assets/node_modules/yaml/dist/tags/yaml-1.1/binary.js94
-rw-r--r--assets/node_modules/yaml/dist/tags/yaml-1.1/index.js131
-rw-r--r--assets/node_modules/yaml/dist/tags/yaml-1.1/omap.js105
-rw-r--r--assets/node_modules/yaml/dist/tags/yaml-1.1/pairs.js80
-rw-r--r--assets/node_modules/yaml/dist/tags/yaml-1.1/set.js91
-rw-r--r--assets/node_modules/yaml/dist/tags/yaml-1.1/timestamp.js93
-rw-r--r--assets/node_modules/yaml/dist/test-events.js165
-rw-r--r--assets/node_modules/yaml/dist/toJSON.js23
-rw-r--r--assets/node_modules/yaml/dist/warnings.js39
-rw-r--r--assets/node_modules/yaml/index.js1
-rw-r--r--assets/node_modules/yaml/map.js2
-rw-r--r--assets/node_modules/yaml/package.json93
-rw-r--r--assets/node_modules/yaml/pair.js2
-rw-r--r--assets/node_modules/yaml/parse-cst.js1
-rw-r--r--assets/node_modules/yaml/scalar.js2
-rw-r--r--assets/node_modules/yaml/schema.js7
-rw-r--r--assets/node_modules/yaml/seq.js2
-rw-r--r--assets/node_modules/yaml/types.js11
-rw-r--r--assets/node_modules/yaml/types/binary.js7
-rw-r--r--assets/node_modules/yaml/types/omap.js2
-rw-r--r--assets/node_modules/yaml/types/pairs.js2
-rw-r--r--assets/node_modules/yaml/types/set.js2
-rw-r--r--assets/node_modules/yaml/types/timestamp.js10
-rw-r--r--assets/node_modules/yaml/util.js15
-rw-r--r--assets/node_modules/yargs-parser/CHANGELOG.md524
-rw-r--r--assets/node_modules/yargs-parser/LICENSE.txt14
-rw-r--r--assets/node_modules/yargs-parser/README.md422
-rw-r--r--assets/node_modules/yargs-parser/index.js971
-rw-r--r--assets/node_modules/yargs-parser/lib/tokenize-arg-string.js40
-rw-r--r--assets/node_modules/yargs-parser/package.json47
5568 files changed, 0 insertions, 525386 deletions
diff --git a/assets/node_modules/.bin/autoprefixer b/assets/node_modules/.bin/autoprefixer
deleted file mode 120000
index e876d81..0000000
--- a/assets/node_modules/.bin/autoprefixer
+++ /dev/null
@@ -1 +0,0 @@
-../autoprefixer/bin/autoprefixer \ No newline at end of file
diff --git a/assets/node_modules/.bin/browserslist b/assets/node_modules/.bin/browserslist
deleted file mode 120000
index 3cd991b..0000000
--- a/assets/node_modules/.bin/browserslist
+++ /dev/null
@@ -1 +0,0 @@
-../browserslist/cli.js \ No newline at end of file
diff --git a/assets/node_modules/.bin/cssesc b/assets/node_modules/.bin/cssesc
deleted file mode 120000
index 487b689..0000000
--- a/assets/node_modules/.bin/cssesc
+++ /dev/null
@@ -1 +0,0 @@
-../cssesc/bin/cssesc \ No newline at end of file
diff --git a/assets/node_modules/.bin/gonzales b/assets/node_modules/.bin/gonzales
deleted file mode 120000
index 02426f4..0000000
--- a/assets/node_modules/.bin/gonzales
+++ /dev/null
@@ -1 +0,0 @@
-../gonzales-pe/bin/gonzales.js \ No newline at end of file
diff --git a/assets/node_modules/.bin/jsesc b/assets/node_modules/.bin/jsesc
deleted file mode 120000
index 7237604..0000000
--- a/assets/node_modules/.bin/jsesc
+++ /dev/null
@@ -1 +0,0 @@
-../jsesc/bin/jsesc \ No newline at end of file
diff --git a/assets/node_modules/.bin/json5 b/assets/node_modules/.bin/json5
deleted file mode 120000
index 217f379..0000000
--- a/assets/node_modules/.bin/json5
+++ /dev/null
@@ -1 +0,0 @@
-../json5/lib/cli.js \ No newline at end of file
diff --git a/assets/node_modules/.bin/mkdirp b/assets/node_modules/.bin/mkdirp
deleted file mode 120000
index 017896c..0000000
--- a/assets/node_modules/.bin/mkdirp
+++ /dev/null
@@ -1 +0,0 @@
-../mkdirp/bin/cmd.js \ No newline at end of file
diff --git a/assets/node_modules/.bin/parser b/assets/node_modules/.bin/parser
deleted file mode 120000
index ce7bf97..0000000
--- a/assets/node_modules/.bin/parser
+++ /dev/null
@@ -1 +0,0 @@
-../@babel/parser/bin/babel-parser.js \ No newline at end of file
diff --git a/assets/node_modules/.bin/rimraf b/assets/node_modules/.bin/rimraf
deleted file mode 120000
index 4cd49a4..0000000
--- a/assets/node_modules/.bin/rimraf
+++ /dev/null
@@ -1 +0,0 @@
-../rimraf/bin.js \ No newline at end of file
diff --git a/assets/node_modules/.bin/sass b/assets/node_modules/.bin/sass
deleted file mode 120000
index 4bda500..0000000
--- a/assets/node_modules/.bin/sass
+++ /dev/null
@@ -1 +0,0 @@
-../sass/sass.js \ No newline at end of file
diff --git a/assets/node_modules/.bin/semver b/assets/node_modules/.bin/semver
deleted file mode 120000
index e80d96a..0000000
--- a/assets/node_modules/.bin/semver
+++ /dev/null
@@ -1 +0,0 @@
-../node-releases/node_modules/semver/bin/semver.js \ No newline at end of file
diff --git a/assets/node_modules/.bin/specificity b/assets/node_modules/.bin/specificity
deleted file mode 120000
index 5916de9..0000000
--- a/assets/node_modules/.bin/specificity
+++ /dev/null
@@ -1 +0,0 @@
-../specificity/bin/specificity \ No newline at end of file
diff --git a/assets/node_modules/.bin/stylelint b/assets/node_modules/.bin/stylelint
deleted file mode 120000
index 15f569e..0000000
--- a/assets/node_modules/.bin/stylelint
+++ /dev/null
@@ -1 +0,0 @@
-../stylelint/bin/stylelint.js \ No newline at end of file
diff --git a/assets/node_modules/.bin/which b/assets/node_modules/.bin/which
deleted file mode 120000
index f62471c..0000000
--- a/assets/node_modules/.bin/which
+++ /dev/null
@@ -1 +0,0 @@
-../which/bin/which \ No newline at end of file
diff --git a/assets/node_modules/.yarn-integrity b/assets/node_modules/.yarn-integrity
deleted file mode 100644
index c3aea7d..0000000
--- a/assets/node_modules/.yarn-integrity
+++ /dev/null
@@ -1,343 +0,0 @@
-{
- "systemParams": "linux-x64-79",
- "modulesFolders": [
- "node_modules"
- ],
- "flags": [],
- "linkedModules": [],
- "topLevelPatterns": [
- "sass@^1.25.0",
- "stylelint-config-recommended@^3.0.0",
- "stylelint-scss@^3.14.2",
- "stylelint@^13.0.0"
- ],
- "lockfileEntries": {
- "@babel/code-frame@^7.0.0": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e",
- "@babel/code-frame@^7.8.3": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e",
- "@babel/core@>=7.2.2": "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e",
- "@babel/generator@^7.8.4": "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e",
- "@babel/helper-function-name@^7.8.3": "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca",
- "@babel/helper-get-function-arity@^7.8.3": "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5",
- "@babel/helper-split-export-declaration@^7.8.3": "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9",
- "@babel/helpers@^7.8.4": "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73",
- "@babel/highlight@^7.8.3": "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797",
- "@babel/parser@^7.8.3": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8",
- "@babel/parser@^7.8.4": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8",
- "@babel/runtime@^7.6.3": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308",
- "@babel/template@^7.8.3": "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8",
- "@babel/traverse@^7.8.4": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c",
- "@babel/types@^7.8.3": "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c",
- "@nodelib/fs.scandir@2.1.3": "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b",
- "@nodelib/fs.stat@2.0.3": "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3",
- "@nodelib/fs.stat@^2.0.2": "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3",
- "@nodelib/fs.walk@^1.2.3": "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976",
- "@types/color-name@^1.1.1": "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0",
- "@types/minimist@^1.2.0": "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6",
- "@types/node@*": "https://registry.yarnpkg.com/@types/node/-/node-13.7.0.tgz#b417deda18cf8400f278733499ad5547ed1abec4",
- "@types/normalize-package-data@^2.4.0": "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e",
- "@types/parse-json@^4.0.0": "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0",
- "@types/unist@*": "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e",
- "@types/unist@^2.0.0": "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e",
- "@types/unist@^2.0.2": "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e",
- "@types/vfile-message@*": "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-2.0.0.tgz#690e46af0fdfc1f9faae00cd049cc888957927d5",
- "@types/vfile@^3.0.0": "https://registry.yarnpkg.com/@types/vfile/-/vfile-3.0.2.tgz#19c18cd232df11ce6fa6ad80259bc86c366b09b9",
- "ajv@^6.10.2": "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9",
- "ansi-regex@^4.1.0": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997",
- "ansi-regex@^5.0.0": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75",
- "ansi-styles@^3.2.0": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d",
- "ansi-styles@^3.2.1": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d",
- "ansi-styles@^4.1.0": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359",
- "anymatch@~3.1.1": "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142",
- "array-union@^2.1.0": "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d",
- "arrify@^1.0.1": "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d",
- "astral-regex@^1.0.0": "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9",
- "autoprefixer@^9.7.3": "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378",
- "bail@^1.0.0": "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776",
- "balanced-match@^1.0.0": "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767",
- "binary-extensions@^2.0.0": "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c",
- "brace-expansion@^1.1.7": "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd",
- "braces@^3.0.1": "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107",
- "braces@~3.0.2": "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107",
- "browserslist@^4.8.3": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.6.tgz#96406f3f5f0755d272e27a66f4163ca821590a7e",
- "callsites@^3.0.0": "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73",
- "camelcase-keys@^6.1.1": "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.1.2.tgz#531a289aeea93249b63ec1249db9265f305041f7",
- "camelcase@^5.0.0": "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320",
- "camelcase@^5.3.1": "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320",
- "caniuse-lite@^1.0.30001020": "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001025.tgz#30336a8aca7f98618eb3cf38e35184e13d4e5fe6",
- "caniuse-lite@^1.0.30001023": "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001025.tgz#30336a8aca7f98618eb3cf38e35184e13d4e5fe6",
- "ccount@^1.0.0": "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17",
- "chalk@^2.0.0": "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424",
- "chalk@^2.0.1": "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424",
- "chalk@^2.4.1": "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424",
- "chalk@^2.4.2": "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424",
- "chalk@^3.0.0": "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4",
- "character-entities-html4@^1.0.0": "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125",
- "character-entities-legacy@^1.0.0": "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1",
- "character-entities@^1.0.0": "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b",
- "character-reference-invalid@^1.0.0": "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560",
- "chokidar@>=2.0.0 <4.0.0": "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450",
- "clone-regexp@^2.1.0": "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f",
- "collapse-white-space@^1.0.2": "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287",
- "color-convert@^1.9.0": "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8",
- "color-convert@^2.0.1": "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3",
- "color-name@1.1.3": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25",
- "color-name@~1.1.4": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2",
- "concat-map@0.0.1": "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b",
- "convert-source-map@^1.7.0": "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442",
- "cosmiconfig@^6.0.0": "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982",
- "cssesc@^3.0.0": "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee",
- "debug@^4.1.0": "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791",
- "debug@^4.1.1": "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791",
- "decamelize-keys@^1.1.0": "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9",
- "decamelize@^1.1.0": "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290",
- "decamelize@^1.2.0": "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290",
- "dir-glob@^3.0.1": "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f",
- "dom-serializer@0": "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51",
- "domelementtype@1": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f",
- "domelementtype@^1.3.1": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f",
- "domelementtype@^2.0.1": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d",
- "domhandler@^2.3.0": "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803",
- "domutils@^1.5.1": "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a",
- "dot-prop@^4.1.1": "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57",
- "electron-to-chromium@^1.3.341": "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.345.tgz#2569d0d54a64ef0f32a4b7e8c80afa5fe57c5d98",
- "emoji-regex@^7.0.1": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156",
- "emoji-regex@^8.0.0": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37",
- "entities@^1.1.1": "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56",
- "entities@^2.0.0": "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4",
- "error-ex@^1.3.1": "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf",
- "escape-string-regexp@^1.0.5": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4",
- "esutils@^2.0.2": "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64",
- "execall@^2.0.0": "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45",
- "extend@^3.0.0": "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa",
- "fast-deep-equal@^3.1.1": "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4",
- "fast-glob@^3.1.1": "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.1.tgz#87ee30e9e9f3eb40d6f254a7997655da753d7c82",
- "fast-json-stable-stringify@^2.0.0": "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633",
- "fastq@^1.6.0": "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2",
- "file-entry-cache@^5.0.1": "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c",
- "fill-range@^7.0.1": "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40",
- "find-up@^4.1.0": "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19",
- "flat-cache@^2.0.1": "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0",
- "flatted@^2.0.0": "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08",
- "fs.realpath@^1.0.0": "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f",
- "fsevents@~2.1.2": "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805",
- "gensync@^1.0.0-beta.1": "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269",
- "get-stdin@^7.0.0": "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6",
- "glob-parent@^5.1.0": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2",
- "glob-parent@~5.1.0": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2",
- "glob@^7.1.3": "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6",
- "global-modules@^2.0.0": "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780",
- "global-prefix@^3.0.0": "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97",
- "globals@^11.1.0": "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e",
- "globby@^11.0.0": "https://registry.yarnpkg.com/globby/-/globby-11.0.0.tgz#56fd0e9f0d4f8fb0c456f1ab0dee96e1380bc154",
- "globjoin@^0.1.4": "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43",
- "gonzales-pe@^4.2.4": "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.2.4.tgz#356ae36a312c46fe0f1026dd6cb539039f8500d2",
- "hard-rejection@^2.0.0": "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883",
- "has-flag@^3.0.0": "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd",
- "has-flag@^4.0.0": "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b",
- "hosted-git-info@^2.1.4": "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c",
- "html-tags@^3.1.0": "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140",
- "htmlparser2@^3.10.0": "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f",
- "ignore@^5.1.4": "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf",
- "import-fresh@^3.1.0": "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66",
- "import-lazy@^4.0.0": "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153",
- "imurmurhash@^0.1.4": "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea",
- "indent-string@^4.0.0": "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251",
- "indexes-of@^1.0.1": "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607",
- "inflight@^1.0.4": "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9",
- "inherits@2": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c",
- "inherits@^2.0.0": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c",
- "inherits@^2.0.1": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c",
- "inherits@^2.0.3": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c",
- "ini@^1.3.5": "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927",
- "is-alphabetical@^1.0.0": "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d",
- "is-alphanumeric@^1.0.0": "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4",
- "is-alphanumerical@^1.0.0": "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf",
- "is-arrayish@^0.2.1": "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d",
- "is-binary-path@~2.1.0": "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09",
- "is-buffer@^2.0.0": "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623",
- "is-decimal@^1.0.0": "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5",
- "is-extglob@^2.1.1": "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2",
- "is-fullwidth-code-point@^2.0.0": "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f",
- "is-fullwidth-code-point@^3.0.0": "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d",
- "is-glob@^4.0.1": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc",
- "is-glob@~4.0.1": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc",
- "is-hexadecimal@^1.0.0": "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7",
- "is-number@^7.0.0": "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b",
- "is-obj@^1.0.0": "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f",
- "is-plain-obj@^1.1.0": "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e",
- "is-regexp@^2.0.0": "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d",
- "is-typedarray@^1.0.0": "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a",
- "is-whitespace-character@^1.0.0": "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7",
- "is-word-character@^1.0.0": "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230",
- "isexe@^2.0.0": "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10",
- "js-tokens@^4.0.0": "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499",
- "jsesc@^2.5.1": "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4",
- "json-parse-better-errors@^1.0.1": "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9",
- "json-schema-traverse@^0.4.1": "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660",
- "json5@^2.1.0": "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6",
- "kind-of@^6.0.2": "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd",
- "known-css-properties@^0.17.0": "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.17.0.tgz#1c535f530ee8e9e3e27bb6a718285780e1d07326",
- "leven@^3.1.0": "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2",
- "lines-and-columns@^1.1.6": "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00",
- "locate-path@^5.0.0": "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0",
- "lodash@^4.17.11": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548",
- "lodash@^4.17.13": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548",
- "lodash@^4.17.14": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548",
- "lodash@^4.17.15": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548",
- "log-symbols@^2.2.0": "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a",
- "log-symbols@^3.0.0": "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4",
- "longest-streak@^2.0.1": "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4",
- "map-obj@^1.0.0": "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d",
- "map-obj@^4.0.0": "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5",
- "markdown-escapes@^1.0.0": "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535",
- "markdown-table@^1.1.0": "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60",
- "mathml-tag-names@^2.1.1": "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3",
- "mdast-util-compact@^1.0.0": "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz#d531bb7667b5123abf20859be086c4d06c894593",
- "meow@^6.0.0": "https://registry.yarnpkg.com/meow/-/meow-6.0.0.tgz#949196fdf21d979379e3bdccb0411e60f8cffd93",
- "merge2@^1.3.0": "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81",
- "micromatch@^4.0.2": "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259",
- "min-indent@^1.0.0": "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.0.tgz#cfc45c37e9ec0d8f0a0ec3dd4ef7f7c3abe39256",
- "minimatch@^3.0.4": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083",
- "minimist-options@^4.0.1": "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.0.2.tgz#29c4021373ded40d546186725e57761e4b1984a7",
- "minimist@0.0.8": "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d",
- "minimist@1.1.x": "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8",
- "minimist@^1.2.0": "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284",
- "mkdirp@^0.5.1": "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903",
- "ms@^2.1.1": "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009",
- "node-releases@^1.1.47": "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.47.tgz#c59ef739a1fd7ecbd9f0b7cf5b7871e8a8b591e4",
- "normalize-package-data@^2.5.0": "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8",
- "normalize-path@^3.0.0": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65",
- "normalize-path@~3.0.0": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65",
- "normalize-range@^0.1.2": "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942",
- "normalize-selector@^0.2.0": "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03",
- "num2fraction@^1.2.2": "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede",
- "once@^1.3.0": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1",
- "p-limit@^2.2.0": "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e",
- "p-locate@^4.1.0": "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07",
- "p-try@^2.0.0": "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6",
- "parent-module@^1.0.0": "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2",
- "parse-entities@^1.0.2": "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50",
- "parse-entities@^1.1.0": "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50",
- "parse-json@^5.0.0": "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f",
- "path-exists@^4.0.0": "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3",
- "path-is-absolute@^1.0.0": "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f",
- "path-parse@^1.0.6": "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c",
- "path-type@^4.0.0": "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b",
- "picomatch@^2.0.4": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a",
- "picomatch@^2.0.5": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a",
- "picomatch@^2.0.7": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a",
- "postcss-html@^0.36.0": "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204",
- "postcss-jsx@^0.36.3": "https://registry.yarnpkg.com/postcss-jsx/-/postcss-jsx-0.36.4.tgz#37a68f300a39e5748d547f19a747b3257240bd50",
- "postcss-less@^3.1.4": "https://registry.yarnpkg.com/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad",
- "postcss-markdown@^0.36.0": "https://registry.yarnpkg.com/postcss-markdown/-/postcss-markdown-0.36.0.tgz#7f22849ae0e3db18820b7b0d5e7833f13a447560",
- "postcss-media-query-parser@^0.2.3": "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244",
- "postcss-reporter@^6.0.1": "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-6.0.1.tgz#7c055120060a97c8837b4e48215661aafb74245f",
- "postcss-resolve-nested-selector@^0.1.1": "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e",
- "postcss-safe-parser@^4.0.1": "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea",
- "postcss-sass@^0.4.2": "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.4.2.tgz#7d1f8ddf6960d329de28fb3ff43c9c42013646bc",
- "postcss-scss@^2.0.0": "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-2.0.0.tgz#248b0a28af77ea7b32b1011aba0f738bda27dea1",
- "postcss-selector-parser@^3.1.0": "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865",
- "postcss-selector-parser@^6.0.2": "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c",
- "postcss-syntax@^0.36.2": "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c",
- "postcss-value-parser@^4.0.2": "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9",
- "postcss@^7.0.0": "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587",
- "postcss@^7.0.14": "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587",
- "postcss@^7.0.2": "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587",
- "postcss@^7.0.21": "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587",
- "postcss@^7.0.26": "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587",
- "postcss@^7.0.7": "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587",
- "punycode@^2.1.0": "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec",
- "quick-lru@^4.0.1": "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f",
- "read-pkg-up@^7.0.0": "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507",
- "read-pkg@^5.2.0": "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc",
- "readable-stream@^3.1.1": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.5.0.tgz#465d70e6d1087f6162d079cd0b5db7fbebfd1606",
- "readdirp@~3.3.0": "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17",
- "redent@^3.0.0": "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f",
- "regenerator-runtime@^0.13.2": "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5",
- "remark-parse@^6.0.0": "https://registry.yarnpkg.com/remark-parse/-/remark-parse-6.0.3.tgz#c99131052809da482108413f87b0ee7f52180a3a",
- "remark-stringify@^6.0.0": "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-6.0.4.tgz#16ac229d4d1593249018663c7bddf28aafc4e088",
- "remark@^10.0.1": "https://registry.yarnpkg.com/remark/-/remark-10.0.1.tgz#3058076dc41781bf505d8978c291485fe47667df",
- "repeat-string@^1.5.4": "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637",
- "replace-ext@1.0.0": "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb",
- "resolve-from@^4.0.0": "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6",
- "resolve-from@^5.0.0": "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69",
- "resolve@^1.10.0": "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5",
- "resolve@^1.3.2": "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5",
- "reusify@^1.0.0": "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76",
- "rimraf@2.6.3": "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab",
- "run-parallel@^1.1.9": "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679",
- "safe-buffer@~5.1.1": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d",
- "safe-buffer@~5.2.0": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519",
- "sass@^1.25.0": "https://registry.yarnpkg.com/sass/-/sass-1.25.0.tgz#f8bd7dfbb39d6b0305e27704a8ebe637820693f3",
- "semver@2 || 3 || 4 || 5": "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7",
- "semver@^5.4.1": "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7",
- "semver@^6.3.0": "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d",
- "signal-exit@^3.0.2": "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d",
- "slash@^3.0.0": "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634",
- "slice-ansi@^2.1.0": "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636",
- "source-map@^0.5.0": "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc",
- "source-map@^0.6.1": "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263",
- "spdx-correct@^3.0.0": "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4",
- "spdx-exceptions@^2.1.0": "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977",
- "spdx-expression-parse@^3.0.0": "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0",
- "spdx-license-ids@^3.0.0": "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654",
- "specificity@^0.4.1": "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019",
- "state-toggle@^1.0.0": "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe",
- "string-width@^3.0.0": "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961",
- "string-width@^4.2.0": "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5",
- "string_decoder@^1.1.1": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e",
- "stringify-entities@^1.0.1": "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7",
- "strip-ansi@^5.1.0": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae",
- "strip-ansi@^6.0.0": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532",
- "strip-indent@^3.0.0": "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001",
- "style-search@^0.1.0": "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902",
- "stylelint-config-recommended@^3.0.0": "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz#e0e547434016c5539fe2650afd58049a2fd1d657",
- "stylelint-scss@^3.14.2": "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-3.14.2.tgz#e449a47e0ac410e6909f1a71b49550202c978bf9",
- "stylelint@^13.0.0": "https://registry.yarnpkg.com/stylelint/-/stylelint-13.0.0.tgz#532007f7154c1a5ed14245d857a5884316f5111f",
- "sugarss@^2.0.0": "https://registry.yarnpkg.com/sugarss/-/sugarss-2.0.0.tgz#ddd76e0124b297d40bf3cca31c8b22ecb43bc61d",
- "supports-color@^5.3.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f",
- "supports-color@^6.1.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3",
- "supports-color@^7.1.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1",
- "svg-tags@^1.0.0": "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764",
- "table@^5.4.6": "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e",
- "to-fast-properties@^2.0.0": "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e",
- "to-regex-range@^5.0.1": "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4",
- "trim-newlines@^3.0.0": "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30",
- "trim-trailing-lines@^1.0.0": "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94",
- "trim@0.0.1": "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd",
- "trough@^1.0.0": "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406",
- "type-fest@^0.6.0": "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b",
- "type-fest@^0.8.1": "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d",
- "typedarray-to-buffer@^3.1.5": "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080",
- "unherit@^1.0.4": "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22",
- "unified@^7.0.0": "https://registry.yarnpkg.com/unified/-/unified-7.1.0.tgz#5032f1c1ee3364bd09da12e27fdd4a7553c7be13",
- "uniq@^1.0.1": "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff",
- "unist-util-find-all-after@^1.0.2": "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-1.0.5.tgz#5751a8608834f41d117ad9c577770c5f2f1b2899",
- "unist-util-is@^3.0.0": "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd",
- "unist-util-remove-position@^1.0.0": "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020",
- "unist-util-stringify-position@^1.0.0": "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6",
- "unist-util-stringify-position@^1.1.1": "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6",
- "unist-util-stringify-position@^2.0.0": "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.2.tgz#5a3866e7138d55974b640ec69a94bc19e0f3fa12",
- "unist-util-visit-parents@^2.0.0": "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9",
- "unist-util-visit@^1.1.0": "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3",
- "uri-js@^4.2.2": "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0",
- "util-deprecate@^1.0.1": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf",
- "v8-compile-cache@^2.1.0": "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e",
- "validate-npm-package-license@^3.0.1": "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a",
- "vfile-location@^2.0.0": "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e",
- "vfile-message@*": "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.2.tgz#75ba05090ec758fa8420f2c11ce049bcddd8cf3e",
- "vfile-message@^1.0.0": "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1",
- "vfile@^3.0.0": "https://registry.yarnpkg.com/vfile/-/vfile-3.0.1.tgz#47331d2abe3282424f4a4bb6acd20a44c4121803",
- "which@^1.3.1": "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a",
- "wrappy@1": "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f",
- "write-file-atomic@^3.0.1": "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.1.tgz#558328352e673b5bb192cf86500d60b230667d4b",
- "write@1.0.3": "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3",
- "x-is-string@^0.1.0": "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82",
- "xtend@^4.0.0": "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54",
- "xtend@^4.0.1": "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54",
- "yaml@^1.7.2": "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2",
- "yargs-parser@^16.1.0": "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1"
- },
- "files": [],
- "artifacts": {}
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/code-frame/LICENSE b/assets/node_modules/@babel/code-frame/LICENSE
deleted file mode 100644
index f31575e..0000000
--- a/assets/node_modules/@babel/code-frame/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-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/assets/node_modules/@babel/code-frame/README.md b/assets/node_modules/@babel/code-frame/README.md
deleted file mode 100644
index 185f93d..0000000
--- a/assets/node_modules/@babel/code-frame/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# @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/next/babel-code-frame.html) 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/assets/node_modules/@babel/code-frame/lib/index.js b/assets/node_modules/@babel/code-frame/lib/index.js
deleted file mode 100644
index 62945f7..0000000
--- a/assets/node_modules/@babel/code-frame/lib/index.js
+++ /dev/null
@@ -1,167 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.codeFrameColumns = codeFrameColumns;
-exports.default = _default;
-
-var _highlight = _interopRequireWildcard(require("@babel/highlight"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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).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, markerLine].join("");
- } else {
- return ` ${maybeHighlight(defs.gutter, gutter)}${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/assets/node_modules/@babel/code-frame/package.json b/assets/node_modules/@babel/code-frame/package.json
deleted file mode 100644
index 88f18cb..0000000
--- a/assets/node_modules/@babel/code-frame/package.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "@babel/code-frame",
- "version": "7.8.3",
- "description": "Generate errors that contain a code frame that point to source locations.",
- "author": "Sebastian McKenzie <sebmck@gmail.com>",
- "homepage": "https://babeljs.io/",
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- },
- "repository": "https://github.com/babel/babel/tree/master/packages/babel-code-frame",
- "main": "lib/index.js",
- "dependencies": {
- "@babel/highlight": "^7.8.3"
- },
- "devDependencies": {
- "chalk": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "gitHead": "a7620bd266ae1345975767bbc7abf09034437017"
-}
diff --git a/assets/node_modules/@babel/core/LICENSE b/assets/node_modules/@babel/core/LICENSE
deleted file mode 100644
index f31575e..0000000
--- a/assets/node_modules/@babel/core/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-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/assets/node_modules/@babel/core/README.md b/assets/node_modules/@babel/core/README.md
deleted file mode 100644
index 9b4b63d..0000000
--- a/assets/node_modules/@babel/core/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# @babel/core
-
-> Babel compiler core.
-
-See our website [@babel/core](https://babeljs.io/docs/en/next/babel-core.html) 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/assets/node_modules/@babel/core/lib/config/caching.js b/assets/node_modules/@babel/core/lib/config/caching.js
deleted file mode 100644
index 454c57b..0000000
--- a/assets/node_modules/@babel/core/lib/config/caching.js
+++ /dev/null
@@ -1,324 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.makeWeakCache = makeWeakCache;
-exports.makeWeakCacheSync = makeWeakCacheSync;
-exports.makeStrongCache = makeStrongCache;
-exports.makeStrongCacheSync = makeStrongCacheSync;
-exports.assertSimpleType = assertSimpleType;
-
-function _gensync() {
- const data = _interopRequireDefault(require("gensync"));
-
- _gensync = function () {
- return data;
- };
-
- return data;
-}
-
-var _async = require("../gensync-utils/async");
-
-var _util = require("./util");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const synchronize = gen => {
- return (0, _gensync().default)(gen).sync;
-};
-
-function* genTrue(data) {
- 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 = 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 = new Promise(resolve => {
- this._resolve = resolve;
- });
- }
-
- release(value) {
- this.released = true;
-
- this._resolve(value);
- }
-
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/lib/config/config-chain.js b/assets/node_modules/@babel/core/lib/config/config-chain.js
deleted file mode 100644
index bcf7862..0000000
--- a/assets/node_modules/@babel/core/lib/config/config-chain.js
+++ /dev/null
@@ -1,439 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.buildPresetChain = buildPresetChain;
-exports.buildRootChain = buildRootChain;
-exports.buildPresetChainWalker = void 0;
-
-function _path() {
- const data = _interopRequireDefault(require("path"));
-
- _path = function () {
- return data;
- };
-
- return data;
-}
-
-function _debug() {
- const data = _interopRequireDefault(require("debug"));
-
- _debug = function () {
- return data;
- };
-
- return data;
-}
-
-var _options = require("./validation/options");
-
-var _patternToRegex = _interopRequireDefault(require("./pattern-to-regex"));
-
-var _files = require("./files");
-
-var _caching = require("./caching");
-
-var _configDescriptors = require("./config-descriptors");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const debug = (0, _debug().default)("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))
- };
-}
-
-const buildPresetChainWalker = makeChainWalker({
- init: arg => arg,
- root: preset => loadPresetDescriptors(preset),
- env: (preset, envName) => loadPresetEnvDescriptors(preset)(envName),
- overrides: (preset, index) => loadPresetOverridesDescriptors(preset)(index),
- overridesEnv: (preset, index, envName) => loadPresetOverridesEnvDescriptors(preset)(index)(envName)
-});
-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) {
- const programmaticChain = yield* loadProgrammaticChain({
- options: opts,
- dirname: context.cwd
- }, context);
- if (!programmaticChain) return null;
- 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();
-
- if (configFile) {
- const validatedFile = validateConfigFile(configFile);
- const result = yield* loadFileChain(validatedFile, context);
- if (!result) return null;
-
- if (babelrc === undefined) {
- babelrc = validatedFile.options.babelrc;
- }
-
- if (babelrcRoots === undefined) {
- babelrcRootsDirectory = validatedFile.dirname;
- babelrcRoots = validatedFile.options.babelrcRoots;
- }
-
- mergeChain(configFileChain, result);
- }
-
- const pkgData = typeof context.filename === "string" ? yield* (0, _files.findPackageData)(context.filename) : null;
- let ignoreFile, babelrcFile;
- const fileChain = emptyChain();
-
- if ((babelrc === true || babelrc === undefined) && pkgData && babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory)) {
- ({
- ignore: ignoreFile,
- config: babelrcFile
- } = yield* (0, _files.findRelativeConfig)(pkgData, context.envName, context.caller));
-
- if (ignoreFile && shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)) {
- return null;
- }
-
- if (babelrcFile) {
- const result = yield* loadFileChain(validateBabelrcFile(babelrcFile), context);
- if (!result) return null;
- mergeChain(fileChain, result);
- }
- }
-
- const chain = mergeChain(mergeChain(mergeChain(emptyChain(), configFileChain), fileChain), programmaticChain);
- return {
- plugins: dedupDescriptors(chain.plugins),
- presets: dedupDescriptors(chain.presets),
- options: chain.options.map(o => normalizeOptions(o)),
- ignore: ignoreFile || undefined,
- babelrc: babelrcFile || undefined,
- config: configFile || undefined
- };
-}
-
-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().default.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)
-});
-const loadFileChain = 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)
-});
-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 buildRootDescriptors({
- dirname,
- options
-}, alias, descriptors) {
- return descriptors(dirname, options, alias);
-}
-
-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
-}) {
- return function* (input, context, files = new Set()) {
- const {
- dirname
- } = input;
- const flattenedConfigs = [];
- const rootOpts = root(input);
-
- if (configIsApplicable(rootOpts, dirname, context)) {
- flattenedConfigs.push(rootOpts);
- const envOpts = env(input, context.envName);
-
- if (envOpts && configIsApplicable(envOpts, dirname, context)) {
- flattenedConfigs.push(envOpts);
- }
-
- (rootOpts.options.overrides || []).forEach((_, index) => {
- const overrideOps = overrides(input, index);
-
- if (configIsApplicable(overrideOps, dirname, context)) {
- flattenedConfigs.push(overrideOps);
- const overrideEnvOpts = overridesEnv(input, index, context.envName);
-
- if (overrideEnvOpts && configIsApplicable(overrideEnvOpts, dirname, context)) {
- flattenedConfigs.push(overrideEnvOpts);
- }
- }
- });
- }
-
- if (flattenedConfigs.some(({
- options: {
- ignore,
- only
- }
- }) => shouldIgnore(context, ignore, only, dirname))) {
- return null;
- }
-
- const chain = emptyChain();
-
- for (const op of flattenedConfigs) {
- if (!(yield* mergeExtendsChain(chain, op.options, dirname, context, files))) {
- return null;
- }
-
- mergeChainOpts(chain, op);
- }
-
- return chain;
- };
-}
-
-function* mergeExtendsChain(chain, opts, dirname, context, files) {
- 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);
- 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);
- return target;
-}
-
-function mergeChainOpts(target, {
- options,
- plugins,
- presets
-}) {
- target.options.push(options);
- target.plugins.push(...plugins());
- target.presets.push(...presets());
- return target;
-}
-
-function emptyChain() {
- return {
- options: [],
- presets: [],
- plugins: []
- };
-}
-
-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 shouldIgnore(context, ignore, only, dirname) {
- if (ignore && matchesPatterns(context, ignore, dirname)) {
- debug("Ignored %o because it matched one of %O from %o", context.filename, ignore, dirname);
- return true;
- }
-
- if (only && !matchesPatterns(context, only, dirname)) {
- debug("Ignored %o because it failed to match one of %O from %o", context.filename, only, dirname);
- 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/assets/node_modules/@babel/core/lib/config/config-descriptors.js b/assets/node_modules/@babel/core/lib/config/config-descriptors.js
deleted file mode 100644
index 62efa71..0000000
--- a/assets/node_modules/@babel/core/lib/config/config-descriptors.js
+++ /dev/null
@@ -1,211 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.createCachedDescriptors = createCachedDescriptors;
-exports.createUncachedDescriptors = createUncachedDescriptors;
-exports.createDescriptor = createDescriptor;
-
-var _files = require("./files");
-
-var _item = require("./item");
-
-var _caching = require("./caching");
-
-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 createCachedDescriptors(dirname, options, alias) {
- const {
- plugins,
- presets,
- passPerPreset
- } = options;
- return {
- options,
- plugins: plugins ? () => createCachedPluginDescriptors(plugins, dirname)(alias) : () => [],
- presets: presets ? () => createCachedPresetDescriptors(presets, dirname)(alias)(!!passPerPreset) : () => []
- };
-}
-
-function createUncachedDescriptors(dirname, options, alias) {
- let plugins;
- let presets;
- return {
- options,
- plugins: () => {
- if (!plugins) {
- plugins = createPluginDescriptors(options.plugins || [], dirname, alias);
- }
-
- return plugins;
- },
- presets: () => {
- if (!presets) {
- presets = 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.makeStrongCacheSync)(passPerPreset => createPresetDescriptors(items, dirname, alias, passPerPreset).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.makeStrongCacheSync)(alias => createPluginDescriptors(items, dirname, alias).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 createDescriptors("preset", items, dirname, alias, passPerPreset);
-}
-
-function createPluginDescriptors(items, dirname, alias) {
- return createDescriptors("plugin", items, dirname, alias);
-}
-
-function createDescriptors(type, items, dirname, alias, ownPass) {
- const descriptors = 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
- } = 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/assets/node_modules/@babel/core/lib/config/files/configuration.js b/assets/node_modules/@babel/core/lib/config/files/configuration.js
deleted file mode 100644
index 49e7131..0000000
--- a/assets/node_modules/@babel/core/lib/config/files/configuration.js
+++ /dev/null
@@ -1,314 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.findConfigUpwards = findConfigUpwards;
-exports.findRelativeConfig = findRelativeConfig;
-exports.findRootConfig = findRootConfig;
-exports.loadConfig = loadConfig;
-exports.ROOT_CONFIG_FILENAMES = void 0;
-
-function _debug() {
- const data = _interopRequireDefault(require("debug"));
-
- _debug = function () {
- return data;
- };
-
- return data;
-}
-
-function _path() {
- const data = _interopRequireDefault(require("path"));
-
- _path = function () {
- return data;
- };
-
- return data;
-}
-
-function _json() {
- const data = _interopRequireDefault(require("json5"));
-
- _json = function () {
- return data;
- };
-
- return data;
-}
-
-function _gensync() {
- const data = _interopRequireDefault(require("gensync"));
-
- _gensync = function () {
- return data;
- };
-
- return data;
-}
-
-var _caching = require("../caching");
-
-var _configApi = _interopRequireDefault(require("../helpers/config-api"));
-
-var _utils = require("./utils");
-
-var _moduleTypes = _interopRequireDefault(require("./module-types"));
-
-var _patternToRegex = _interopRequireDefault(require("../pattern-to-regex"));
-
-var fs = _interopRequireWildcard(require("../../gensync-utils/fs"));
-
-var _resolve = _interopRequireDefault(require("../../gensync-utils/resolve"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const debug = (0, _debug().default)("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;
-
- while (true) {
- for (const filename of ROOT_CONFIG_FILENAMES) {
- if (yield* fs.exists(_path().default.join(dirname, filename))) {
- return dirname;
- }
- }
-
- const nextDir = _path().default.dirname(dirname);
-
- if (dirname === nextDir) break;
- dirname = nextDir;
- }
-
- return null;
-}
-
-function* findRelativeConfig(packageData, envName, caller) {
- let config = null;
- let ignore = null;
-
- const dirname = _path().default.dirname(packageData.filepath);
-
- for (const loc of packageData.directories) {
- if (!config) {
- config = yield* loadOneConfig(RELATIVE_CONFIG_FILENAMES, loc, envName, caller, packageData.pkg && packageData.pkg.dirname === loc ? packageToBabelConfig(packageData.pkg) : null);
- }
-
- if (!ignore) {
- const ignoreLoc = _path().default.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().default.all(names.map(filename => readConfig(_path().default.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().default.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 = yield* (0, _resolve.default)(name, {
- basedir: 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().default.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.exists.sync(filepath)) {
- cache.forever();
- return null;
- }
-
- if (LOADING_CONFIGS.has(filepath)) {
- cache.never();
- debug("Auto-ignoring usage of config %o.", filepath);
- return {
- filepath,
- dirname: _path().default.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.default)(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().default.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().default.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().default.dirname(filepath),
- options
- };
-});
-const readIgnoreConfig = (0, _utils.makeStaticFileCache)((filepath, content) => {
- const ignoreDir = _path().default.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().default.dirname(filepath),
- ignore: ignorePatterns.map(pattern => (0, _patternToRegex.default)(pattern, ignoreDir))
- };
-});
-
-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/assets/node_modules/@babel/core/lib/config/files/import.js b/assets/node_modules/@babel/core/lib/config/files/import.js
deleted file mode 100644
index c0acc2b..0000000
--- a/assets/node_modules/@babel/core/lib/config/files/import.js
+++ /dev/null
@@ -1,10 +0,0 @@
-"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/assets/node_modules/@babel/core/lib/config/files/index-browser.js b/assets/node_modules/@babel/core/lib/config/files/index-browser.js
deleted file mode 100644
index 32ab76a..0000000
--- a/assets/node_modules/@babel/core/lib/config/files/index-browser.js
+++ /dev/null
@@ -1,63 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.findConfigUpwards = findConfigUpwards;
-exports.findPackageData = findPackageData;
-exports.findRelativeConfig = findRelativeConfig;
-exports.findRootConfig = findRootConfig;
-exports.loadConfig = loadConfig;
-exports.resolvePlugin = resolvePlugin;
-exports.resolvePreset = resolvePreset;
-exports.loadPlugin = loadPlugin;
-exports.loadPreset = loadPreset;
-exports.ROOT_CONFIG_FILENAMES = void 0;
-
-function* findConfigUpwards(rootDir) {
- return null;
-}
-
-function* findPackageData(filepath) {
- return {
- filepath,
- directories: [],
- pkg: null,
- isPackage: false
- };
-}
-
-function* findRelativeConfig(pkgData, envName, caller) {
- return {
- pkg: null,
- 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`);
-}
-
-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/assets/node_modules/@babel/core/lib/config/files/index.js b/assets/node_modules/@babel/core/lib/config/files/index.js
deleted file mode 100644
index e132716..0000000
--- a/assets/node_modules/@babel/core/lib/config/files/index.js
+++ /dev/null
@@ -1,73 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-Object.defineProperty(exports, "findPackageData", {
- enumerable: true,
- get: function () {
- return _package.findPackageData;
- }
-});
-Object.defineProperty(exports, "findConfigUpwards", {
- enumerable: true,
- get: function () {
- return _configuration.findConfigUpwards;
- }
-});
-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, "ROOT_CONFIG_FILENAMES", {
- enumerable: true,
- get: function () {
- return _configuration.ROOT_CONFIG_FILENAMES;
- }
-});
-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, "loadPlugin", {
- enumerable: true,
- get: function () {
- return _plugins.loadPlugin;
- }
-});
-Object.defineProperty(exports, "loadPreset", {
- enumerable: true,
- get: function () {
- return _plugins.loadPreset;
- }
-});
-
-var _package = require("./package");
-
-var _configuration = require("./configuration");
-
-var _plugins = require("./plugins");
-
-({}); \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/lib/config/files/module-types.js b/assets/node_modules/@babel/core/lib/config/files/module-types.js
deleted file mode 100644
index 742600f..0000000
--- a/assets/node_modules/@babel/core/lib/config/files/module-types.js
+++ /dev/null
@@ -1,86 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = loadCjsOrMjsDefault;
-
-var _async = require("../../gensync-utils/async");
-
-function _path() {
- const data = _interopRequireDefault(require("path"));
-
- _path = function () {
- return data;
- };
-
- return data;
-}
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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) {
- switch (guessJSModuleType(filepath)) {
- case "cjs":
- return loadCjsDefault(filepath);
-
- case "unknown":
- try {
- return loadCjsDefault(filepath);
- } 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().default.extname(filename)) {
- case ".cjs":
- return "cjs";
-
- case ".mjs":
- return "mjs";
-
- default:
- return "unknown";
- }
-}
-
-function loadCjsDefault(filepath) {
- const module = require(filepath);
-
- return (module == null ? void 0 : module.__esModule) ? module.default || 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_(filepath);
- return module.default;
- });
- return _loadMjsDefault.apply(this, arguments);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/lib/config/files/package.js b/assets/node_modules/@babel/core/lib/config/files/package.js
deleted file mode 100644
index 15b92f6..0000000
--- a/assets/node_modules/@babel/core/lib/config/files/package.js
+++ /dev/null
@@ -1,76 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.findPackageData = findPackageData;
-
-function _path() {
- const data = _interopRequireDefault(require("path"));
-
- _path = function () {
- return data;
- };
-
- return data;
-}
-
-var _utils = require("./utils");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const PACKAGE_FILENAME = "package.json";
-
-function* findPackageData(filepath) {
- let pkg = null;
- const directories = [];
- let isPackage = true;
-
- let dirname = _path().default.dirname(filepath);
-
- while (!pkg && _path().default.basename(dirname) !== "node_modules") {
- directories.push(dirname);
- pkg = yield* readConfigPackage(_path().default.join(dirname, PACKAGE_FILENAME));
-
- const nextLoc = _path().default.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 (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().default.dirname(filepath),
- options
- };
-}); \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/lib/config/files/plugins.js b/assets/node_modules/@babel/core/lib/config/files/plugins.js
deleted file mode 100644
index 264682c..0000000
--- a/assets/node_modules/@babel/core/lib/config/files/plugins.js
+++ /dev/null
@@ -1,169 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.resolvePlugin = resolvePlugin;
-exports.resolvePreset = resolvePreset;
-exports.loadPlugin = loadPlugin;
-exports.loadPreset = loadPreset;
-
-function _debug() {
- const data = _interopRequireDefault(require("debug"));
-
- _debug = function () {
- return data;
- };
-
- return data;
-}
-
-function _resolve() {
- const data = _interopRequireDefault(require("resolve"));
-
- _resolve = function () {
- return data;
- };
-
- return data;
-}
-
-function _path() {
- const data = _interopRequireDefault(require("path"));
-
- _path = function () {
- return data;
- };
-
- return data;
-}
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const debug = (0, _debug().default)("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 = 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 = requireModule("preset", filepath);
- debug("Loaded preset %o from %o.", name, dirname);
- return {
- filepath,
- value
- };
-}
-
-function standardizeName(type, name) {
- if (_path().default.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 _resolve().default.sync(standardizedName, {
- basedir: dirname
- });
- } catch (e) {
- if (e.code !== "MODULE_NOT_FOUND") throw e;
-
- if (standardizedName !== name) {
- let resolvedOriginal = false;
-
- try {
- _resolve().default.sync(name, {
- basedir: dirname
- });
-
- resolvedOriginal = true;
- } catch (e2) {}
-
- if (resolvedOriginal) {
- e.message += `\n- If you want to resolve "${name}", use "module:${name}"`;
- }
- }
-
- let resolvedBabel = false;
-
- try {
- _resolve().default.sync(standardizeName(type, "@babel/" + name), {
- basedir: dirname
- });
-
- resolvedBabel = true;
- } catch (e2) {}
-
- if (resolvedBabel) {
- e.message += `\n- Did you mean "@babel/${name}"?`;
- }
-
- let resolvedOppositeType = false;
- const oppositeType = type === "preset" ? "plugin" : "preset";
-
- try {
- _resolve().default.sync(standardizeName(oppositeType, name), {
- basedir: dirname
- });
-
- resolvedOppositeType = true;
- } catch (e2) {}
-
- 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 require(name);
- } finally {
- LOADING_MODULES.delete(name);
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/lib/config/files/types.js b/assets/node_modules/@babel/core/lib/config/files/types.js
deleted file mode 100644
index e69de29..0000000
--- a/assets/node_modules/@babel/core/lib/config/files/types.js
+++ /dev/null
diff --git a/assets/node_modules/@babel/core/lib/config/files/utils.js b/assets/node_modules/@babel/core/lib/config/files/utils.js
deleted file mode 100644
index 723da91..0000000
--- a/assets/node_modules/@babel/core/lib/config/files/utils.js
+++ /dev/null
@@ -1,49 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.makeStaticFileCache = makeStaticFileCache;
-
-var _caching = require("../caching");
-
-var fs = _interopRequireWildcard(require("../../gensync-utils/fs"));
-
-function _fs2() {
- const data = _interopRequireDefault(require("fs"));
-
- _fs2 = function () {
- return data;
- };
-
- return data;
-}
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function makeStaticFileCache(fn) {
- return (0, _caching.makeStrongCache)(function* (filepath, cache) {
- const cached = cache.invalidate(() => fileMtime(filepath));
-
- if (cached === null) {
- cache.forever();
- return null;
- }
-
- return fn(filepath, (yield* fs.readFile(filepath, "utf8")));
- });
-}
-
-function fileMtime(filepath) {
- try {
- return +_fs2().default.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/assets/node_modules/@babel/core/lib/config/full.js b/assets/node_modules/@babel/core/lib/config/full.js
deleted file mode 100644
index 9a49ed2..0000000
--- a/assets/node_modules/@babel/core/lib/config/full.js
+++ /dev/null
@@ -1,317 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-function _gensync() {
- const data = _interopRequireDefault(require("gensync"));
-
- _gensync = function () {
- return data;
- };
-
- return data;
-}
-
-var _async = require("../gensync-utils/async");
-
-var _util = require("./util");
-
-var context = _interopRequireWildcard(require("../index"));
-
-var _plugin = _interopRequireDefault(require("./plugin"));
-
-var _item = require("./item");
-
-var _configChain = require("./config-chain");
-
-function _traverse() {
- const data = _interopRequireDefault(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 = _interopRequireDefault(require("./helpers/config-api"));
-
-var _partial = _interopRequireDefault(require("./partial"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var _default = (0, _gensync().default)(function* loadFullConfig(inputOpts) {
- const result = yield* (0, _partial.default)(inputOpts);
-
- if (!result) {
- return null;
- }
-
- const {
- options,
- context
- } = result;
- const optionDefaults = {};
- const passes = [[]];
-
- try {
- const {
- plugins,
- presets
- } = options;
-
- if (!plugins || !presets) {
- throw new Error("Assertion failure - plugins and presets exist");
- }
-
- const ignored = yield* function* recurseDescriptors(config, pass) {
- const plugins = [];
-
- for (let i = 0; i < config.plugins.length; i++) {
- const descriptor = config.plugins[i];
-
- if (descriptor.options !== false) {
- try {
- plugins.push((yield* loadPluginDescriptor(descriptor, context)));
- } catch (e) {
- if (i > 0 && e.code === "BABEL_UNKNOWN_PLUGIN_PROPERTY") {
- (0, _options.checkNoUnwrappedItemOptionPairs)(config.plugins[i - 1], descriptor, "plugin", i, e);
- }
-
- throw e;
- }
- }
- }
-
- const presets = [];
-
- for (let i = 0; i < config.presets.length; i++) {
- const descriptor = config.presets[i];
-
- if (descriptor.options !== false) {
- try {
- presets.push({
- preset: yield* loadPresetDescriptor(descriptor, context),
- pass: descriptor.ownPass ? [] : pass
- });
- } catch (e) {
- if (i > 0 && e.code === "BABEL_UNKNOWN_OPTION") {
- (0, _options.checkNoUnwrappedItemOptionPairs)(config.presets[i - 1], descriptor, "preset", i, e);
- }
-
- throw e;
- }
- }
- }
-
- if (presets.length > 0) {
- passes.splice(1, 0, ...presets.map(o => o.pass).filter(p => p !== pass));
-
- for (const {
- preset,
- pass
- } of presets) {
- if (!preset) return true;
- const ignored = yield* recurseDescriptors({
- plugins: preset.plugins,
- presets: preset.presets
- }, pass);
- if (ignored) return true;
- preset.options.forEach(opts => {
- (0, _util.mergeOptions)(optionDefaults, opts);
- });
- }
- }
-
- if (plugins.length > 0) {
- pass.unshift(...plugins);
- }
- }({
- plugins: plugins.map(item => {
- const desc = (0, _item.getItemDescriptor)(item);
-
- if (!desc) {
- throw new Error("Assertion failure - must be config item");
- }
-
- return desc;
- }),
- presets: presets.map(item => {
- const desc = (0, _item.getItemDescriptor)(item);
-
- if (!desc) {
- throw new Error("Assertion failure - must be config item");
- }
-
- return desc;
- })
- }, passes[0]);
- if (ignored) return null;
- } catch (e) {
- if (!/^\[BABEL\]/.test(e.message)) {
- e.message = `[BABEL] ${context.filename || "unknown"}: ${e.message}`;
- }
-
- throw e;
- }
-
- const opts = optionDefaults;
- (0, _util.mergeOptions)(opts, options);
- 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;
-const loadDescriptor = (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 api = Object.assign({}, context, {}, (0, _configApi.default)(cache));
-
- try {
- item = value(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 (typeof item.then === "function") {
- yield* [];
- throw new Error(`You appear to be using an async 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 {
- value: item,
- options,
- dirname,
- alias
- };
-});
-
-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* loadDescriptor(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* loadDescriptor(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/assets/node_modules/@babel/core/lib/config/helpers/config-api.js b/assets/node_modules/@babel/core/lib/config/helpers/config-api.js
deleted file mode 100644
index b988c05..0000000
--- a/assets/node_modules/@babel/core/lib/config/helpers/config-api.js
+++ /dev/null
@@ -1,86 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = makeAPI;
-
-function _semver() {
- const data = _interopRequireDefault(require("semver"));
-
- _semver = function () {
- return data;
- };
-
- return data;
-}
-
-var _ = require("../../");
-
-var _caching = require("../caching");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function makeAPI(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,
- tokTypes: undefined
- };
-}
-
-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().default.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/assets/node_modules/@babel/core/lib/config/helpers/environment.js b/assets/node_modules/@babel/core/lib/config/helpers/environment.js
deleted file mode 100644
index e4bfdbc..0000000
--- a/assets/node_modules/@babel/core/lib/config/helpers/environment.js
+++ /dev/null
@@ -1,10 +0,0 @@
-"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/assets/node_modules/@babel/core/lib/config/index.js b/assets/node_modules/@babel/core/lib/config/index.js
deleted file mode 100644
index e91cd60..0000000
--- a/assets/node_modules/@babel/core/lib/config/index.js
+++ /dev/null
@@ -1,55 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-Object.defineProperty(exports, "default", {
- enumerable: true,
- get: function () {
- return _full.default;
- }
-});
-exports.loadOptionsAsync = exports.loadOptionsSync = exports.loadOptions = exports.loadPartialConfigAsync = exports.loadPartialConfigSync = exports.loadPartialConfig = void 0;
-
-function _gensync() {
- const data = _interopRequireDefault(require("gensync"));
-
- _gensync = function () {
- return data;
- };
-
- return data;
-}
-
-var _full = _interopRequireDefault(require("./full"));
-
-var _partial = require("./partial");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const loadOptionsRunner = (0, _gensync().default)(function* (opts) {
- const config = yield* (0, _full.default)(opts);
- return config ? config.options : null;
-});
-
-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; \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/lib/config/item.js b/assets/node_modules/@babel/core/lib/config/item.js
deleted file mode 100644
index 11f25ac..0000000
--- a/assets/node_modules/@babel/core/lib/config/item.js
+++ /dev/null
@@ -1,66 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.createItemFromDescriptor = createItemFromDescriptor;
-exports.createConfigItem = createConfigItem;
-exports.getItemDescriptor = getItemDescriptor;
-
-function _path() {
- const data = _interopRequireDefault(require("path"));
-
- _path = function () {
- return data;
- };
-
- return data;
-}
-
-var _configDescriptors = require("./config-descriptors");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function createItemFromDescriptor(desc) {
- return new ConfigItem(desc);
-}
-
-function createConfigItem(value, {
- dirname = ".",
- type
-} = {}) {
- const descriptor = (0, _configDescriptors.createDescriptor)(value, _path().default.resolve(dirname), {
- type,
- alias: "programmatic item"
- });
- return createItemFromDescriptor(descriptor);
-}
-
-function getItemDescriptor(item) {
- if (item instanceof ConfigItem) {
- return item._descriptor;
- }
-
- return undefined;
-}
-
-class ConfigItem {
- constructor(descriptor) {
- this._descriptor = descriptor;
- Object.defineProperty(this, "_descriptor", {
- 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/assets/node_modules/@babel/core/lib/config/partial.js b/assets/node_modules/@babel/core/lib/config/partial.js
deleted file mode 100644
index 30ce3f1..0000000
--- a/assets/node_modules/@babel/core/lib/config/partial.js
+++ /dev/null
@@ -1,152 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = loadPrivatePartialConfig;
-exports.loadPartialConfig = void 0;
-
-function _path() {
- const data = _interopRequireDefault(require("path"));
-
- _path = function () {
- return data;
- };
-
- return data;
-}
-
-function _gensync() {
- const data = _interopRequireDefault(require("gensync"));
-
- _gensync = function () {
- return data;
- };
-
- return data;
-}
-
-var _plugin = _interopRequireDefault(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");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function* resolveRootMode(rootDir, rootMode) {
- switch (rootMode) {
- case "root":
- return rootDir;
-
- case "upward-optional":
- {
- const upwardRootDir = yield* (0, _files.findConfigUpwards)(rootDir);
- return upwardRootDir === null ? rootDir : upwardRootDir;
- }
-
- case "upward":
- {
- const upwardRootDir = yield* (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
- } = args;
-
- const absoluteCwd = _path().default.resolve(cwd);
-
- const absoluteRootDir = yield* resolveRootMode(_path().default.resolve(absoluteCwd, rootDir), rootMode);
- const context = {
- filename: typeof args.filename === "string" ? _path().default.resolve(cwd, args.filename) : undefined,
- cwd: absoluteCwd,
- root: absoluteRootDir,
- envName,
- caller
- };
- const configChain = yield* (0, _configChain.buildRootChain)(args, context);
- if (!configChain) return null;
- const options = {};
- configChain.options.forEach(opts => {
- (0, _util.mergeOptions)(options, opts);
- });
- options.babelrc = false;
- options.configFile = false;
- options.passPerPreset = false;
- options.envName = context.envName;
- options.cwd = context.cwd;
- options.root = context.root;
- options.filename = typeof context.filename === "string" ? context.filename : undefined;
- options.plugins = configChain.plugins.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor));
- options.presets = configChain.presets.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor));
- return {
- options,
- context,
- ignore: configChain.ignore,
- babelrc: configChain.babelrc,
- config: configChain.config
- };
-}
-
-const loadPartialConfig = (0, _gensync().default)(function* (inputOpts) {
- const result = yield* loadPrivatePartialConfig(inputOpts);
- if (!result) return null;
- const {
- options,
- babelrc,
- ignore,
- config
- } = result;
- (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);
-});
-exports.loadPartialConfig = loadPartialConfig;
-
-class PartialConfig {
- constructor(options, babelrc, ignore, config) {
- this.options = options;
- this.babelignore = ignore;
- this.babelrc = babelrc;
- this.config = config;
- Object.freeze(this);
- }
-
- hasFilesystemConfig() {
- return this.babelrc !== undefined || this.config !== undefined;
- }
-
-}
-
-Object.freeze(PartialConfig.prototype); \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/lib/config/pattern-to-regex.js b/assets/node_modules/@babel/core/lib/config/pattern-to-regex.js
deleted file mode 100644
index b80f4b6..0000000
--- a/assets/node_modules/@babel/core/lib/config/pattern-to-regex.js
+++ /dev/null
@@ -1,52 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = pathToPattern;
-
-function _path() {
- const data = _interopRequireDefault(require("path"));
-
- _path = function () {
- return data;
- };
-
- return data;
-}
-
-function _escapeRegExp() {
- const data = _interopRequireDefault(require("lodash/escapeRegExp"));
-
- _escapeRegExp = function () {
- return data;
- };
-
- return data;
-}
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const sep = `\\${_path().default.sep}`;
-const endSep = `(?:${sep}|$)`;
-const substitution = `[^${sep}]+`;
-const starPat = `(?:${substitution}${sep})`;
-const starPatLast = `(?:${substitution}${endSep})`;
-const starStarPat = `${starPat}*?`;
-const starStarPatLast = `${starPat}*?${starPatLast}?`;
-
-function pathToPattern(pattern, dirname) {
- const parts = _path().default.resolve(dirname, pattern).split(_path().default.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 + (0, _escapeRegExp().default)(part.slice(1)) + (last ? endSep : sep);
- }
-
- return (0, _escapeRegExp().default)(part) + (last ? endSep : sep);
- })].join(""));
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/lib/config/plugin.js b/assets/node_modules/@babel/core/lib/config/plugin.js
deleted file mode 100644
index 3c78070..0000000
--- a/assets/node_modules/@babel/core/lib/config/plugin.js
+++ /dev/null
@@ -1,22 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-class Plugin {
- constructor(plugin, options, key) {
- 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/assets/node_modules/@babel/core/lib/config/util.js b/assets/node_modules/@babel/core/lib/config/util.js
deleted file mode 100644
index 5608fb9..0000000
--- a/assets/node_modules/@babel/core/lib/config/util.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.mergeOptions = mergeOptions;
-exports.isIterableIterator = isIterableIterator;
-
-function mergeOptions(target, source) {
- for (const k of Object.keys(source)) {
- if (k === "parserOpts" && source.parserOpts) {
- const parserOpts = source.parserOpts;
- const targetObj = target.parserOpts = target.parserOpts || {};
- mergeDefaultFields(targetObj, parserOpts);
- } else if (k === "generatorOpts" && source.generatorOpts) {
- const generatorOpts = source.generatorOpts;
- const targetObj = target.generatorOpts = target.generatorOpts || {};
- mergeDefaultFields(targetObj, generatorOpts);
- } 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/assets/node_modules/@babel/core/lib/config/validation/option-assertions.js b/assets/node_modules/@babel/core/lib/config/validation/option-assertions.js
deleted file mode 100644
index d339aad..0000000
--- a/assets/node_modules/@babel/core/lib/config/validation/option-assertions.js
+++ /dev/null
@@ -1,268 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.msg = msg;
-exports.access = access;
-exports.assertRootMode = assertRootMode;
-exports.assertSourceMaps = assertSourceMaps;
-exports.assertCompact = assertCompact;
-exports.assertSourceType = assertSourceType;
-exports.assertCallerMetadata = assertCallerMetadata;
-exports.assertInputSourceMap = assertInputSourceMap;
-exports.assertString = assertString;
-exports.assertFunction = assertFunction;
-exports.assertBoolean = assertBoolean;
-exports.assertObject = assertObject;
-exports.assertArray = assertArray;
-exports.assertIgnoreList = assertIgnoreList;
-exports.assertConfigApplicableTest = assertConfigApplicableTest;
-exports.assertConfigFileSearch = assertConfigFileSearch;
-exports.assertBabelrcSearch = assertBabelrcSearch;
-exports.assertPluginList = assertPluginList;
-
-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;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/lib/config/validation/options.js b/assets/node_modules/@babel/core/lib/config/validation/options.js
deleted file mode 100644
index 23cadac..0000000
--- a/assets/node_modules/@babel/core/lib/config/validation/options.js
+++ /dev/null
@@ -1,196 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.validate = validate;
-exports.checkNoUnwrappedItemOptionPairs = checkNoUnwrappedItemOptionPairs;
-
-var _plugin = _interopRequireDefault(require("../plugin"));
-
-var _removed = _interopRequireDefault(require("./removed"));
-
-var _optionAssertions = require("./option-assertions");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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,
- envName: _optionAssertions.assertString
-};
-const BABELRC_VALIDATORS = {
- babelrc: _optionAssertions.assertBoolean,
- babelrcRoots: _optionAssertions.assertBabelrcSearch
-};
-const NONPRESET_VALIDATORS = {
- extends: _optionAssertions.assertString,
- ignore: _optionAssertions.assertIgnoreList,
- only: _optionAssertions.assertIgnoreList
-};
-const COMMON_VALIDATORS = {
- inputSourceMap: _optionAssertions.assertInputSourceMap,
- presets: _optionAssertions.assertPluginList,
- plugins: _optionAssertions.assertPluginList,
- passPerPreset: _optionAssertions.assertBoolean,
- 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,
- getModuleId: _optionAssertions.assertFunction,
- moduleRoot: _optionAssertions.assertString,
- moduleIds: _optionAssertions.assertBoolean,
- moduleId: _optionAssertions.assertString,
- parserOpts: _optionAssertions.assertObject,
- generatorOpts: _optionAssertions.assertObject
-};
-
-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(lastItem, thisItem, type, index, e) {
- if (lastItem.file && lastItem.options === undefined && typeof thisItem.value === "object") {
- e.message += `\n- Maybe you meant to use\n` + `"${type}": [\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/assets/node_modules/@babel/core/lib/config/validation/plugins.js b/assets/node_modules/@babel/core/lib/config/validation/plugins.js
deleted file mode 100644
index dc67289..0000000
--- a/assets/node_modules/@babel/core/lib/config/validation/plugins.js
+++ /dev/null
@@ -1,68 +0,0 @@
-"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(key, value) {
- const obj = (0, _optionAssertions.assertObject)(key, value);
-
- if (obj) {
- Object.keys(obj).forEach(prop => assertVisitorHandler(prop, obj[prop]));
-
- if (obj.enter || obj.exit) {
- throw new Error(`.${key} 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];
- const optLoc = {
- type: "option",
- name: key,
- parent: rootPath
- };
- if (validator) 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/assets/node_modules/@babel/core/lib/config/validation/removed.js b/assets/node_modules/@babel/core/lib/config/validation/removed.js
deleted file mode 100644
index f0fcd7d..0000000
--- a/assets/node_modules/@babel/core/lib/config/validation/removed.js
+++ /dev/null
@@ -1,66 +0,0 @@
-"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/assets/node_modules/@babel/core/lib/gensync-utils/async.js b/assets/node_modules/@babel/core/lib/gensync-utils/async.js
deleted file mode 100644
index 36b777d..0000000
--- a/assets/node_modules/@babel/core/lib/gensync-utils/async.js
+++ /dev/null
@@ -1,89 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.maybeAsync = maybeAsync;
-exports.forwardAsync = forwardAsync;
-exports.isThenable = isThenable;
-exports.waitFor = exports.onFirstPause = exports.isAsync = void 0;
-
-function _gensync() {
- const data = _interopRequireDefault(require("gensync"));
-
- _gensync = function () {
- return data;
- };
-
- return data;
-}
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const id = x => x;
-
-const runGenerator = (0, _gensync().default)(function* (item) {
- return yield* item;
-});
-const isAsync = (0, _gensync().default)({
- sync: () => false,
- errback: cb => cb(null, true)
-});
-exports.isAsync = isAsync;
-
-function maybeAsync(fn, message) {
- return (0, _gensync().default)({
- 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 = (0, _gensync().default)({
- sync: cb => cb("sync"),
- async: cb => cb("async")
-});
-
-function forwardAsync(action, cb) {
- const g = (0, _gensync().default)(action);
- return withKind(kind => {
- const adapted = g[kind];
- return cb(adapted);
- });
-}
-
-const onFirstPause = (0, _gensync().default)({
- 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 = (0, _gensync().default)({
- 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/assets/node_modules/@babel/core/lib/gensync-utils/fs.js b/assets/node_modules/@babel/core/lib/gensync-utils/fs.js
deleted file mode 100644
index cb19645..0000000
--- a/assets/node_modules/@babel/core/lib/gensync-utils/fs.js
+++ /dev/null
@@ -1,48 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.exists = exports.readFile = void 0;
-
-function _fs() {
- const data = _interopRequireDefault(require("fs"));
-
- _fs = function () {
- return data;
- };
-
- return data;
-}
-
-function _gensync() {
- const data = _interopRequireDefault(require("gensync"));
-
- _gensync = function () {
- return data;
- };
-
- return data;
-}
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const readFile = (0, _gensync().default)({
- sync: _fs().default.readFileSync,
- errback: _fs().default.readFile
-});
-exports.readFile = readFile;
-const exists = (0, _gensync().default)({
- sync(path) {
- try {
- _fs().default.accessSync(path);
-
- return true;
- } catch (_unused) {
- return false;
- }
- },
-
- errback: (path, cb) => _fs().default.access(path, undefined, err => cb(null, !err))
-});
-exports.exists = exists; \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/lib/gensync-utils/resolve.js b/assets/node_modules/@babel/core/lib/gensync-utils/resolve.js
deleted file mode 100644
index 2ca39d7..0000000
--- a/assets/node_modules/@babel/core/lib/gensync-utils/resolve.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-function _resolve() {
- const data = _interopRequireDefault(require("resolve"));
-
- _resolve = function () {
- return data;
- };
-
- return data;
-}
-
-function _gensync() {
- const data = _interopRequireDefault(require("gensync"));
-
- _gensync = function () {
- return data;
- };
-
- return data;
-}
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var _default = (0, _gensync().default)({
- sync: _resolve().default.sync,
- errback: _resolve().default
-});
-
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/lib/index.js b/assets/node_modules/@babel/core/lib/index.js
deleted file mode 100644
index ecd444e..0000000
--- a/assets/node_modules/@babel/core/lib/index.js
+++ /dev/null
@@ -1,266 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.Plugin = Plugin;
-Object.defineProperty(exports, "File", {
- enumerable: true,
- get: function () {
- return _file.default;
- }
-});
-Object.defineProperty(exports, "buildExternalHelpers", {
- enumerable: true,
- get: function () {
- return _buildExternalHelpers.default;
- }
-});
-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, "version", {
- enumerable: true,
- get: function () {
- return _package.version;
- }
-});
-Object.defineProperty(exports, "getEnv", {
- enumerable: true,
- get: function () {
- return _environment.getEnv;
- }
-});
-Object.defineProperty(exports, "tokTypes", {
- enumerable: true,
- get: function () {
- return _parser().tokTypes;
- }
-});
-Object.defineProperty(exports, "traverse", {
- enumerable: true,
- get: function () {
- return _traverse().default;
- }
-});
-Object.defineProperty(exports, "template", {
- enumerable: true,
- get: function () {
- return _template().default;
- }
-});
-Object.defineProperty(exports, "createConfigItem", {
- enumerable: true,
- get: function () {
- return _item.createConfigItem;
- }
-});
-Object.defineProperty(exports, "loadPartialConfig", {
- enumerable: true,
- get: function () {
- return _config.loadPartialConfig;
- }
-});
-Object.defineProperty(exports, "loadPartialConfigSync", {
- enumerable: true,
- get: function () {
- return _config.loadPartialConfigSync;
- }
-});
-Object.defineProperty(exports, "loadPartialConfigAsync", {
- enumerable: true,
- get: function () {
- return _config.loadPartialConfigAsync;
- }
-});
-Object.defineProperty(exports, "loadOptions", {
- enumerable: true,
- get: function () {
- return _config.loadOptions;
- }
-});
-Object.defineProperty(exports, "loadOptionsSync", {
- enumerable: true,
- get: function () {
- return _config.loadOptionsSync;
- }
-});
-Object.defineProperty(exports, "loadOptionsAsync", {
- enumerable: true,
- get: function () {
- return _config.loadOptionsAsync;
- }
-});
-Object.defineProperty(exports, "transform", {
- enumerable: true,
- get: function () {
- return _transform.transform;
- }
-});
-Object.defineProperty(exports, "transformSync", {
- enumerable: true,
- get: function () {
- return _transform.transformSync;
- }
-});
-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, "transformFileSync", {
- enumerable: true,
- get: function () {
- return _transformFile.transformFileSync;
- }
-});
-Object.defineProperty(exports, "transformFileAsync", {
- enumerable: true,
- get: function () {
- return _transformFile.transformFileAsync;
- }
-});
-Object.defineProperty(exports, "transformFromAst", {
- enumerable: true,
- get: function () {
- return _transformAst.transformFromAst;
- }
-});
-Object.defineProperty(exports, "transformFromAstSync", {
- enumerable: true,
- get: function () {
- return _transformAst.transformFromAstSync;
- }
-});
-Object.defineProperty(exports, "transformFromAstAsync", {
- enumerable: true,
- get: function () {
- return _transformAst.transformFromAstAsync;
- }
-});
-Object.defineProperty(exports, "parse", {
- enumerable: true,
- get: function () {
- return _parse.parse;
- }
-});
-Object.defineProperty(exports, "parseSync", {
- enumerable: true,
- get: function () {
- return _parse.parseSync;
- }
-});
-Object.defineProperty(exports, "parseAsync", {
- enumerable: true,
- get: function () {
- return _parse.parseAsync;
- }
-});
-exports.types = exports.OptionManager = exports.DEFAULT_EXTENSIONS = void 0;
-
-var _file = _interopRequireDefault(require("./transformation/file/file"));
-
-var _buildExternalHelpers = _interopRequireDefault(require("./tools/build-external-helpers"));
-
-var _files = require("./config/files");
-
-var _package = require("../package.json");
-
-var _environment = require("./config/helpers/environment");
-
-function _types() {
- const data = _interopRequireWildcard(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 = _interopRequireDefault(require("@babel/traverse"));
-
- _traverse = function () {
- return data;
- };
-
- return data;
-}
-
-function _template() {
- const data = _interopRequireDefault(require("@babel/template"));
-
- _template = function () {
- return data;
- };
-
- return data;
-}
-
-var _item = require("./config/item");
-
-var _config = require("./config");
-
-var _transform = require("./transform");
-
-var _transformFile = require("./transform-file");
-
-var _transformAst = require("./transform-ast");
-
-var _parse = require("./parse");
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const DEFAULT_EXTENSIONS = Object.freeze([".js", ".jsx", ".es6", ".es", ".mjs"]);
-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/assets/node_modules/@babel/core/lib/parse.js b/assets/node_modules/@babel/core/lib/parse.js
deleted file mode 100644
index e6c2d26..0000000
--- a/assets/node_modules/@babel/core/lib/parse.js
+++ /dev/null
@@ -1,50 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.parseAsync = exports.parseSync = exports.parse = void 0;
-
-function _gensync() {
- const data = _interopRequireDefault(require("gensync"));
-
- _gensync = function () {
- return data;
- };
-
- return data;
-}
-
-var _config = _interopRequireDefault(require("./config"));
-
-var _parser = _interopRequireDefault(require("./parser"));
-
-var _normalizeOpts = _interopRequireDefault(require("./transformation/normalize-opts"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const parseRunner = (0, _gensync().default)(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/assets/node_modules/@babel/core/lib/parser/index.js b/assets/node_modules/@babel/core/lib/parser/index.js
deleted file mode 100644
index e8fcc7f..0000000
--- a/assets/node_modules/@babel/core/lib/parser/index.js
+++ /dev/null
@@ -1,97 +0,0 @@
-"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 = _interopRequireDefault(require("./util/missing-plugin-helper"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js b/assets/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js
deleted file mode 100644
index f5eef1b..0000000
--- a/assets/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js
+++ /dev/null
@@ -1,239 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = generateMissingPluginMessage;
-const pluginNameMap = {
- 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"
- }
- },
- 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/plugin-transform-flow-strip-types",
- url: "https://git.io/vb49g"
- }
- },
- 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/plugin-transform-react-jsx",
- url: "https://git.io/vb4yd"
- }
- },
- 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"
- }
- },
- 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"
- }
- },
- 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/plugin-transform-typescript",
- url: "https://git.io/vb4Sm"
- }
- },
- 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"
- }
- },
- 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"
- }
- }
-};
-
-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) {
- if (transformPlugin) {
- const transformPluginInfo = getNameURLCombination(transformPlugin);
- helpMessage += `\n\nAdd ${transformPluginInfo} to the 'plugins' section of your Babel config ` + `to enable transformation.`;
- } else {
- const syntaxPluginInfo = getNameURLCombination(syntaxPlugin);
- 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/assets/node_modules/@babel/core/lib/tools/build-external-helpers.js b/assets/node_modules/@babel/core/lib/tools/build-external-helpers.js
deleted file mode 100644
index 08311eb..0000000
--- a/assets/node_modules/@babel/core/lib/tools/build-external-helpers.js
+++ /dev/null
@@ -1,145 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = _default;
-
-function helpers() {
- const data = _interopRequireWildcard(require("@babel/helpers"));
-
- helpers = function () {
- return data;
- };
-
- return data;
-}
-
-function _generator() {
- const data = _interopRequireDefault(require("@babel/generator"));
-
- _generator = function () {
- return data;
- };
-
- return data;
-}
-
-function _template() {
- const data = _interopRequireDefault(require("@babel/template"));
-
- _template = function () {
- return data;
- };
-
- return data;
-}
-
-function t() {
- const data = _interopRequireWildcard(require("@babel/types"));
-
- t = function () {
- return data;
- };
-
- return data;
-}
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-const buildUmdWrapper = replacements => _template().default`
- (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(whitelist) {
- const namespace = t().identifier("babelHelpers");
- const body = [];
- const container = t().functionExpression(null, [t().identifier("global")], t().blockStatement(body));
- const tree = t().program([t().expressionStatement(t().callExpression(container, [t().conditionalExpression(t().binaryExpression("===", t().unaryExpression("typeof", t().identifier("global")), t().stringLiteral("undefined")), t().identifier("self"), t().identifier("global"))]))]);
- body.push(t().variableDeclaration("var", [t().variableDeclarator(namespace, t().assignmentExpression("=", t().memberExpression(t().identifier("global"), namespace), t().objectExpression([])))]));
- buildHelpers(body, namespace, whitelist);
- return tree;
-}
-
-function buildModule(whitelist) {
- const body = [];
- const refs = buildHelpers(body, null, whitelist);
- body.unshift(t().exportNamedDeclaration(null, Object.keys(refs).map(name => {
- return t().exportSpecifier(t().cloneNode(refs[name]), t().identifier(name));
- })));
- return t().program(body, [], "module");
-}
-
-function buildUmd(whitelist) {
- const namespace = t().identifier("babelHelpers");
- const body = [];
- body.push(t().variableDeclaration("var", [t().variableDeclarator(namespace, t().identifier("global"))]));
- buildHelpers(body, namespace, whitelist);
- return t().program([buildUmdWrapper({
- FACTORY_PARAMETERS: t().identifier("global"),
- BROWSER_ARGUMENTS: t().assignmentExpression("=", t().memberExpression(t().identifier("root"), namespace), t().objectExpression([])),
- COMMON_ARGUMENTS: t().identifier("exports"),
- AMD_ARGUMENTS: t().arrayExpression([t().stringLiteral("exports")]),
- FACTORY_BODY: body,
- UMD_ROOT: t().identifier("this")
- })]);
-}
-
-function buildVar(whitelist) {
- const namespace = t().identifier("babelHelpers");
- const body = [];
- body.push(t().variableDeclaration("var", [t().variableDeclarator(namespace, t().objectExpression([]))]));
- const tree = t().program(body);
- buildHelpers(body, namespace, whitelist);
- body.push(t().expressionStatement(namespace));
- return tree;
-}
-
-function buildHelpers(body, namespace, whitelist) {
- const getHelperReference = name => {
- return namespace ? t().memberExpression(namespace, t().identifier(name)) : t().identifier(`_${name}`);
- };
-
- const refs = {};
- helpers().list.forEach(function (name) {
- if (whitelist && whitelist.indexOf(name) < 0) return;
- const ref = refs[name] = getHelperReference(name);
- const {
- nodes
- } = helpers().get(name, getHelperReference, ref);
- body.push(...nodes);
- });
- return refs;
-}
-
-function _default(whitelist, outputType = "global") {
- let tree;
- const build = {
- global: buildGlobal,
- module: buildModule,
- umd: buildUmd,
- var: buildVar
- }[outputType];
-
- if (build) {
- tree = build(whitelist);
- } else {
- throw new Error(`Unsupported output type ${outputType}`);
- }
-
- return (0, _generator().default)(tree).code;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/lib/transform-ast.js b/assets/node_modules/@babel/core/lib/transform-ast.js
deleted file mode 100644
index e43bf02..0000000
--- a/assets/node_modules/@babel/core/lib/transform-ast.js
+++ /dev/null
@@ -1,48 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.transformFromAstAsync = exports.transformFromAstSync = exports.transformFromAst = void 0;
-
-function _gensync() {
- const data = _interopRequireDefault(require("gensync"));
-
- _gensync = function () {
- return data;
- };
-
- return data;
-}
-
-var _config = _interopRequireDefault(require("./config"));
-
-var _transformation = require("./transformation");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const transformFromAstRunner = (0, _gensync().default)(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/assets/node_modules/@babel/core/lib/transform-file-browser.js b/assets/node_modules/@babel/core/lib/transform-file-browser.js
deleted file mode 100644
index 6442c98..0000000
--- a/assets/node_modules/@babel/core/lib/transform-file-browser.js
+++ /dev/null
@@ -1,26 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.transformFileSync = transformFileSync;
-exports.transformFileAsync = transformFileAsync;
-exports.transformFile = void 0;
-
-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/assets/node_modules/@babel/core/lib/transform-file.js b/assets/node_modules/@babel/core/lib/transform-file.js
deleted file mode 100644
index 8c0362c..0000000
--- a/assets/node_modules/@babel/core/lib/transform-file.js
+++ /dev/null
@@ -1,54 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.transformFileAsync = exports.transformFileSync = exports.transformFile = void 0;
-
-function _gensync() {
- const data = _interopRequireDefault(require("gensync"));
-
- _gensync = function () {
- return data;
- };
-
- return data;
-}
-
-var _config = _interopRequireDefault(require("./config"));
-
-var _transformation = require("./transformation");
-
-var fs = _interopRequireWildcard(require("./gensync-utils/fs"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-({});
-const transformFileRunner = (0, _gensync().default)(function* (filename, opts) {
- let options;
-
- if (opts == null) {
- options = {
- filename
- };
- } else if (opts && typeof opts === "object") {
- 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/assets/node_modules/@babel/core/lib/transform.js b/assets/node_modules/@babel/core/lib/transform.js
deleted file mode 100644
index 32d4de7..0000000
--- a/assets/node_modules/@babel/core/lib/transform.js
+++ /dev/null
@@ -1,44 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.transformAsync = exports.transformSync = exports.transform = void 0;
-
-function _gensync() {
- const data = _interopRequireDefault(require("gensync"));
-
- _gensync = function () {
- return data;
- };
-
- return data;
-}
-
-var _config = _interopRequireDefault(require("./config"));
-
-var _transformation = require("./transformation");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const transformRunner = (0, _gensync().default)(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/assets/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js b/assets/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js
deleted file mode 100644
index 585d1c0..0000000
--- a/assets/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js
+++ /dev/null
@@ -1,68 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = loadBlockHoistPlugin;
-
-function _sortBy() {
- const data = _interopRequireDefault(require("lodash/sortBy"));
-
- _sortBy = function () {
- return data;
- };
-
- return data;
-}
-
-var _config = _interopRequireDefault(require("../config"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-let LOADED_PLUGIN;
-
-function loadBlockHoistPlugin() {
- if (!LOADED_PLUGIN) {
- const config = _config.default.sync({
- babelrc: false,
- configFile: false,
- plugins: [blockHoistPlugin]
- });
-
- LOADED_PLUGIN = config ? config.passes[0][0] : undefined;
- if (!LOADED_PLUGIN) throw new Error("Assertion failure");
- }
-
- return LOADED_PLUGIN;
-}
-
-const blockHoistPlugin = {
- name: "internal.blockHoist",
- visitor: {
- Block: {
- exit({
- node
- }) {
- let hasChange = false;
-
- for (let i = 0; i < node.body.length; i++) {
- const bodyNode = node.body[i];
-
- if (bodyNode && bodyNode._blockHoist != null) {
- hasChange = true;
- break;
- }
- }
-
- if (!hasChange) return;
- node.body = (0, _sortBy().default)(node.body, function (bodyNode) {
- let priority = bodyNode && bodyNode._blockHoist;
- if (priority == null) priority = 1;
- if (priority === true) priority = 2;
- return -1 * priority;
- });
- }
-
- }
- }
-}; \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/lib/transformation/file/file.js b/assets/node_modules/@babel/core/lib/transformation/file/file.js
deleted file mode 100644
index 728c119..0000000
--- a/assets/node_modules/@babel/core/lib/transformation/file/file.js
+++ /dev/null
@@ -1,272 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-function helpers() {
- const data = _interopRequireWildcard(require("@babel/helpers"));
-
- helpers = function () {
- return data;
- };
-
- return data;
-}
-
-function _traverse() {
- const data = _interopRequireWildcard(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 = _interopRequireWildcard(require("@babel/types"));
-
- t = function () {
- return data;
- };
-
- return data;
-}
-
-function _semver() {
- const data = _interopRequireDefault(require("semver"));
-
- _semver = function () {
- return data;
- };
-
- return data;
-}
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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.declarations = {};
- this.path = null;
- this.ast = {};
- 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(t().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() {
- const {
- filename,
- filenameRelative = filename,
- moduleId,
- moduleIds = !!moduleId,
- getModuleId,
- sourceRoot: sourceRootTmp,
- moduleRoot = sourceRootTmp,
- sourceRoot = moduleRoot
- } = this.opts;
- 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;
- }
- }
-
- 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().default.valid(versionRange)) versionRange = `^${versionRange}`;
- return !_semver().default.intersects(`<${minVersion}`, versionRange) && !_semver().default.intersects(`>=8.0.0`, versionRange);
- }
-
- addHelper(name) {
- const declar = this.declarations[name];
- if (declar) return t().cloneNode(declar);
- const generator = this.get("helperGenerator");
-
- if (generator) {
- const res = generator(name);
- if (res) return res;
- }
-
- helpers().ensure(name);
- 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/assets/node_modules/@babel/core/lib/transformation/file/generate.js b/assets/node_modules/@babel/core/lib/transformation/file/generate.js
deleted file mode 100644
index 3301b56..0000000
--- a/assets/node_modules/@babel/core/lib/transformation/file/generate.js
+++ /dev/null
@@ -1,89 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = generateCode;
-
-function _convertSourceMap() {
- const data = _interopRequireDefault(require("convert-source-map"));
-
- _convertSourceMap = function () {
- return data;
- };
-
- return data;
-}
-
-function _generator() {
- const data = _interopRequireDefault(require("@babel/generator"));
-
- _generator = function () {
- return data;
- };
-
- return data;
-}
-
-var _mergeMap = _interopRequireDefault(require("./merge-map"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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().default.fromObject(outputMap).toComment();
- }
-
- if (opts.sourceMaps === "inline") {
- outputMap = null;
- }
-
- return {
- outputCode,
- outputMap
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/lib/transformation/file/merge-map.js b/assets/node_modules/@babel/core/lib/transformation/file/merge-map.js
deleted file mode 100644
index d49c994..0000000
--- a/assets/node_modules/@babel/core/lib/transformation/file/merge-map.js
+++ /dev/null
@@ -1,247 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = mergeSourceMap;
-
-function _sourceMap() {
- const data = _interopRequireDefault(require("source-map"));
-
- _sourceMap = function () {
- return data;
- };
-
- return data;
-}
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function mergeSourceMap(inputMap, map) {
- const input = buildMappingData(inputMap);
- const output = buildMappingData(map);
- const mergedGenerator = new (_sourceMap().default.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().default.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().default.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/assets/node_modules/@babel/core/lib/transformation/index.js b/assets/node_modules/@babel/core/lib/transformation/index.js
deleted file mode 100644
index bb35bbe..0000000
--- a/assets/node_modules/@babel/core/lib/transformation/index.js
+++ /dev/null
@@ -1,126 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.run = run;
-
-function _traverse() {
- const data = _interopRequireDefault(require("@babel/traverse"));
-
- _traverse = function () {
- return data;
- };
-
- return data;
-}
-
-var _pluginPass = _interopRequireDefault(require("./plugin-pass"));
-
-var _blockHoistPlugin = _interopRequireDefault(require("./block-hoist-plugin"));
-
-var _normalizeOpts = _interopRequireDefault(require("./normalize-opts"));
-
-var _normalizeFile = _interopRequireDefault(require("./normalize-file"));
-
-var _generate = _interopRequireDefault(require("./file/generate"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/core/lib/transformation/normalize-file.js b/assets/node_modules/@babel/core/lib/transformation/normalize-file.js
deleted file mode 100644
index 752bdde..0000000
--- a/assets/node_modules/@babel/core/lib/transformation/normalize-file.js
+++ /dev/null
@@ -1,173 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = normalizeFile;
-
-function _fs() {
- const data = _interopRequireDefault(require("fs"));
-
- _fs = function () {
- return data;
- };
-
- return data;
-}
-
-function _path() {
- const data = _interopRequireDefault(require("path"));
-
- _path = function () {
- return data;
- };
-
- return data;
-}
-
-function _debug() {
- const data = _interopRequireDefault(require("debug"));
-
- _debug = function () {
- return data;
- };
-
- return data;
-}
-
-function _cloneDeep() {
- const data = _interopRequireDefault(require("lodash/cloneDeep"));
-
- _cloneDeep = function () {
- return data;
- };
-
- return data;
-}
-
-function t() {
- const data = _interopRequireWildcard(require("@babel/types"));
-
- t = function () {
- return data;
- };
-
- return data;
-}
-
-function _convertSourceMap() {
- const data = _interopRequireDefault(require("convert-source-map"));
-
- _convertSourceMap = function () {
- return data;
- };
-
- return data;
-}
-
-var _file = _interopRequireDefault(require("./file/file"));
-
-var _parser = _interopRequireDefault(require("../parser"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const debug = (0, _debug().default)("babel:transform:file");
-const LARGE_INPUT_SOURCEMAP_THRESHOLD = 1000000;
-
-function* normalizeFile(pluginPasses, options, code, ast) {
- code = `${code || ""}`;
-
- if (ast) {
- if (ast.type === "Program") {
- ast = t().file(ast, [], []);
- } else if (ast.type !== "File") {
- throw new Error("AST root must be a Program or File node");
- }
-
- 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().default.fromObject(options.inputSourceMap);
- }
-
- if (!inputMap) {
- const lastComment = extractComments(INLINE_SOURCEMAP_REGEX, ast);
-
- if (lastComment) {
- try {
- inputMap = _convertSourceMap().default.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().default.readFileSync(_path().default.resolve(_path().default.dirname(options.filename), match[1]));
-
- if (inputMapContent.length > LARGE_INPUT_SOURCEMAP_THRESHOLD) {
- debug("skip merging input map > 1 MB");
- } else {
- inputMap = _convertSourceMap().default.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;
- t().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/assets/node_modules/@babel/core/lib/transformation/normalize-opts.js b/assets/node_modules/@babel/core/lib/transformation/normalize-opts.js
deleted file mode 100644
index 1465ad6..0000000
--- a/assets/node_modules/@babel/core/lib/transformation/normalize-opts.js
+++ /dev/null
@@ -1,65 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = normalizeOptions;
-
-function _path() {
- const data = _interopRequireDefault(require("path"));
-
- _path = function () {
- return data;
- };
-
- return data;
-}
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function normalizeOptions(config) {
- const {
- filename,
- cwd,
- filenameRelative = typeof filename === "string" ? _path().default.relative(cwd, filename) : "unknown",
- sourceType = "module",
- inputSourceMap,
- sourceMaps = !!inputSourceMap,
- moduleRoot,
- sourceRoot = moduleRoot,
- sourceFileName = _path().default.basename(filenameRelative),
- comments = true,
- compact = "auto"
- } = config.options;
- const opts = config.options;
- const options = Object.assign({}, opts, {
- parserOpts: Object.assign({
- sourceType: _path().default.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/assets/node_modules/@babel/core/lib/transformation/plugin-pass.js b/assets/node_modules/@babel/core/lib/transformation/plugin-pass.js
deleted file mode 100644
index 2c746d1..0000000
--- a/assets/node_modules/@babel/core/lib/transformation/plugin-pass.js
+++ /dev/null
@@ -1,48 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-class PluginPass {
- constructor(file, key, options) {
- this._map = new Map();
- 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();
- }
-
- getModuleName() {
- return this.file.getModuleName();
- }
-
- buildCodeFrameError(node, msg, Error) {
- return this.file.buildCodeFrameError(node, msg, Error);
- }
-
-}
-
-exports.default = PluginPass; \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/node_modules/.bin/json5 b/assets/node_modules/@babel/core/node_modules/.bin/json5
deleted file mode 120000
index ea74765..0000000
--- a/assets/node_modules/@babel/core/node_modules/.bin/json5
+++ /dev/null
@@ -1 +0,0 @@
-../../../../json5/lib/cli.js \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/node_modules/.bin/parser b/assets/node_modules/@babel/core/node_modules/.bin/parser
deleted file mode 120000
index 97a06c3..0000000
--- a/assets/node_modules/@babel/core/node_modules/.bin/parser
+++ /dev/null
@@ -1 +0,0 @@
-../../../parser/bin/babel-parser.js \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/node_modules/.bin/semver b/assets/node_modules/@babel/core/node_modules/.bin/semver
deleted file mode 120000
index 7a17f06..0000000
--- a/assets/node_modules/@babel/core/node_modules/.bin/semver
+++ /dev/null
@@ -1 +0,0 @@
-../../../../semver/bin/semver \ No newline at end of file
diff --git a/assets/node_modules/@babel/core/package.json b/assets/node_modules/@babel/core/package.json
deleted file mode 100644
index f2c6c20..0000000
--- a/assets/node_modules/@babel/core/package.json
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- "name": "@babel/core",
- "version": "7.8.4",
- "description": "Babel compiler core.",
- "main": "lib/index.js",
- "author": "Sebastian McKenzie <sebmck@gmail.com>",
- "homepage": "https://babeljs.io/",
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- },
- "repository": "https://github.com/babel/babel/tree/master/packages/babel-core",
- "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/transform-file.js": "./lib/transform-file-browser.js",
- "./src/config/files/index.js": "./src/config/files/index-browser.js",
- "./src/transform-file.js": "./src/transform-file-browser.js"
- },
- "dependencies": {
- "@babel/code-frame": "^7.8.3",
- "@babel/generator": "^7.8.4",
- "@babel/helpers": "^7.8.4",
- "@babel/parser": "^7.8.4",
- "@babel/template": "^7.8.3",
- "@babel/traverse": "^7.8.4",
- "@babel/types": "^7.8.3",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.1",
- "json5": "^2.1.0",
- "lodash": "^4.17.13",
- "resolve": "^1.3.2",
- "semver": "^5.4.1",
- "source-map": "^0.5.0"
- },
- "devDependencies": {
- "@babel/helper-transform-fixture-test-runner": "^7.8.3"
- },
- "gitHead": "5c2e6bc07fed3d28801d93168622c99ae622653a"
-}
diff --git a/assets/node_modules/@babel/generator/LICENSE b/assets/node_modules/@babel/generator/LICENSE
deleted file mode 100644
index f31575e..0000000
--- a/assets/node_modules/@babel/generator/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-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/assets/node_modules/@babel/generator/README.md b/assets/node_modules/@babel/generator/README.md
deleted file mode 100644
index fc980b1..0000000
--- a/assets/node_modules/@babel/generator/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# @babel/generator
-
-> Turns an AST into code.
-
-See our website [@babel/generator](https://babeljs.io/docs/en/next/babel-generator.html) 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/assets/node_modules/@babel/generator/lib/buffer.js b/assets/node_modules/@babel/generator/lib/buffer.js
deleted file mode 100644
index 72e1662..0000000
--- a/assets/node_modules/@babel/generator/lib/buffer.js
+++ /dev/null
@@ -1,244 +0,0 @@
-"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 = "";
- 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.join("").trimRight(),
- map: null,
- rawMappings: map && 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) {
- if (this._map && str[0] !== "\n") {
- this._map.mark(this._position.line, this._position.column, line, column, identifierName, filename, force);
- }
-
- this._buf.push(str);
-
- this._last = str[str.length - 1];
-
- for (let i = 0; i < str.length; i++) {
- if (str[i] === "\n") {
- this._position.line++;
- this._position.column = 0;
- } else {
- this._position.column++;
- }
- }
- }
-
- 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();
- }
- }
-
- endsWith(suffix) {
- if (suffix.length === 1) {
- let last;
-
- if (this._queue.length > 0) {
- const str = this._queue[0][0];
- last = str[str.length - 1];
- } else {
- last = this._last;
- }
-
- return last === suffix;
- }
-
- const end = this._last + this._queue.reduce((acc, item) => item[0] + acc, "");
-
- if (suffix.length <= end.length) {
- return end.slice(-suffix.length) === suffix;
- }
-
- return false;
- }
-
- 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 && loc.identifierName || null;
- targetObj.line = pos ? pos.line : null;
- targetObj.column = pos ? pos.column : null;
- targetObj.filename = loc && loc.filename || null;
-
- 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/assets/node_modules/@babel/generator/lib/generators/base.js b/assets/node_modules/@babel/generator/lib/generators/base.js
deleted file mode 100644
index f8e2130..0000000
--- a/assets/node_modules/@babel/generator/lib/generators/base.js
+++ /dev/null
@@ -1,97 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.File = File;
-exports.Program = Program;
-exports.BlockStatement = BlockStatement;
-exports.Noop = Noop;
-exports.Directive = Directive;
-exports.DirectiveLiteral = DirectiveLiteral;
-exports.InterpreterDirective = InterpreterDirective;
-exports.Placeholder = Placeholder;
-
-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) {
- this.token("{");
- this.printInnerComments(node);
- const hasDirectives = node.directives && 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("\n")) this.newline();
- this.rightBrace();
- } else {
- this.source("end", node.loc);
- this.token("}");
- }
-}
-
-function Noop() {}
-
-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/assets/node_modules/@babel/generator/lib/generators/classes.js b/assets/node_modules/@babel/generator/lib/generators/classes.js
deleted file mode 100644
index 0ba2cf4..0000000
--- a/assets/node_modules/@babel/generator/lib/generators/classes.js
+++ /dev/null
@@ -1,151 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.ClassExpression = exports.ClassDeclaration = ClassDeclaration;
-exports.ClassBody = ClassBody;
-exports.ClassProperty = ClassProperty;
-exports.ClassPrivateProperty = ClassPrivateProperty;
-exports.ClassMethod = ClassMethod;
-exports.ClassPrivateMethod = ClassPrivateMethod;
-exports._classMethodHead = _classMethodHead;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function ClassDeclaration(node, parent) {
- if (!this.format.decoratorsBeforeExport || !t.isExportDefaultDeclaration(parent) && !t.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");
-
- 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("\n")) this.newline();
- this.rightBrace();
- }
-}
-
-function ClassProperty(node) {
- this.printJoin(node.decorators, node);
- 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) {
- 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.tsPrintClassMemberModifiers(node, false);
-
- this._methodHead(node);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/generator/lib/generators/expressions.js b/assets/node_modules/@babel/generator/lib/generators/expressions.js
deleted file mode 100644
index 4e63a69..0000000
--- a/assets/node_modules/@babel/generator/lib/generators/expressions.js
+++ /dev/null
@@ -1,292 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.UnaryExpression = UnaryExpression;
-exports.DoExpression = DoExpression;
-exports.ParenthesizedExpression = ParenthesizedExpression;
-exports.UpdateExpression = UpdateExpression;
-exports.ConditionalExpression = ConditionalExpression;
-exports.NewExpression = NewExpression;
-exports.SequenceExpression = SequenceExpression;
-exports.ThisExpression = ThisExpression;
-exports.Super = Super;
-exports.Decorator = Decorator;
-exports.OptionalMemberExpression = OptionalMemberExpression;
-exports.OptionalCallExpression = OptionalCallExpression;
-exports.CallExpression = CallExpression;
-exports.Import = Import;
-exports.EmptyStatement = EmptyStatement;
-exports.ExpressionStatement = ExpressionStatement;
-exports.AssignmentPattern = AssignmentPattern;
-exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression;
-exports.BindExpression = BindExpression;
-exports.MemberExpression = MemberExpression;
-exports.MetaProperty = MetaProperty;
-exports.PrivateName = PrivateName;
-exports.V8IntrinsicIdentifier = V8IntrinsicIdentifier;
-exports.AwaitExpression = exports.YieldExpression = void 0;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-var n = _interopRequireWildcard(require("../node"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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) {
- 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 && !t.isCallExpression(parent, {
- callee: node
- }) && !t.isMemberExpression(parent) && !t.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 && t.isMemberExpression(node.property)) {
- throw new TypeError("Got a MemberExpression for MemberExpression property");
- }
-
- let computed = node.computed;
-
- if (t.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 && t.isMemberExpression(node.property)) {
- throw new TypeError("Got a MemberExpression for MemberExpression property");
- }
-
- let computed = node.computed;
-
- if (t.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);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/generator/lib/generators/flow.js b/assets/node_modules/@babel/generator/lib/generators/flow.js
deleted file mode 100644
index 728c3cd..0000000
--- a/assets/node_modules/@babel/generator/lib/generators/flow.js
+++ /dev/null
@@ -1,743 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.AnyTypeAnnotation = AnyTypeAnnotation;
-exports.ArrayTypeAnnotation = ArrayTypeAnnotation;
-exports.BooleanTypeAnnotation = BooleanTypeAnnotation;
-exports.BooleanLiteralTypeAnnotation = BooleanLiteralTypeAnnotation;
-exports.NullLiteralTypeAnnotation = NullLiteralTypeAnnotation;
-exports.DeclareClass = DeclareClass;
-exports.DeclareFunction = DeclareFunction;
-exports.InferredPredicate = InferredPredicate;
-exports.DeclaredPredicate = DeclaredPredicate;
-exports.DeclareInterface = DeclareInterface;
-exports.DeclareModule = DeclareModule;
-exports.DeclareModuleExports = DeclareModuleExports;
-exports.DeclareTypeAlias = DeclareTypeAlias;
-exports.DeclareOpaqueType = DeclareOpaqueType;
-exports.DeclareVariable = DeclareVariable;
-exports.DeclareExportDeclaration = DeclareExportDeclaration;
-exports.DeclareExportAllDeclaration = DeclareExportAllDeclaration;
-exports.EnumDeclaration = EnumDeclaration;
-exports.EnumBooleanBody = EnumBooleanBody;
-exports.EnumNumberBody = EnumNumberBody;
-exports.EnumStringBody = EnumStringBody;
-exports.EnumSymbolBody = EnumSymbolBody;
-exports.EnumDefaultedMember = EnumDefaultedMember;
-exports.EnumBooleanMember = EnumBooleanMember;
-exports.EnumNumberMember = EnumNumberMember;
-exports.EnumStringMember = EnumStringMember;
-exports.ExistsTypeAnnotation = ExistsTypeAnnotation;
-exports.FunctionTypeAnnotation = FunctionTypeAnnotation;
-exports.FunctionTypeParam = FunctionTypeParam;
-exports.GenericTypeAnnotation = exports.ClassImplements = exports.InterfaceExtends = InterfaceExtends;
-exports._interfaceish = _interfaceish;
-exports._variance = _variance;
-exports.InterfaceDeclaration = InterfaceDeclaration;
-exports.InterfaceTypeAnnotation = InterfaceTypeAnnotation;
-exports.IntersectionTypeAnnotation = IntersectionTypeAnnotation;
-exports.MixedTypeAnnotation = MixedTypeAnnotation;
-exports.EmptyTypeAnnotation = EmptyTypeAnnotation;
-exports.NullableTypeAnnotation = NullableTypeAnnotation;
-exports.NumberTypeAnnotation = NumberTypeAnnotation;
-exports.StringTypeAnnotation = StringTypeAnnotation;
-exports.ThisTypeAnnotation = ThisTypeAnnotation;
-exports.TupleTypeAnnotation = TupleTypeAnnotation;
-exports.TypeofTypeAnnotation = TypeofTypeAnnotation;
-exports.TypeAlias = TypeAlias;
-exports.TypeAnnotation = TypeAnnotation;
-exports.TypeParameterDeclaration = exports.TypeParameterInstantiation = TypeParameterInstantiation;
-exports.TypeParameter = TypeParameter;
-exports.OpaqueType = OpaqueType;
-exports.ObjectTypeAnnotation = ObjectTypeAnnotation;
-exports.ObjectTypeInternalSlot = ObjectTypeInternalSlot;
-exports.ObjectTypeCallProperty = ObjectTypeCallProperty;
-exports.ObjectTypeIndexer = ObjectTypeIndexer;
-exports.ObjectTypeProperty = ObjectTypeProperty;
-exports.ObjectTypeSpreadProperty = ObjectTypeSpreadProperty;
-exports.QualifiedTypeIdentifier = QualifiedTypeIdentifier;
-exports.UnionTypeAnnotation = UnionTypeAnnotation;
-exports.TypeCastExpression = TypeCastExpression;
-exports.Variance = Variance;
-exports.VoidTypeAnnotation = VoidTypeAnnotation;
-Object.defineProperty(exports, "NumberLiteralTypeAnnotation", {
- enumerable: true,
- get: function () {
- return _types2.NumericLiteral;
- }
-});
-Object.defineProperty(exports, "StringLiteralTypeAnnotation", {
- enumerable: true,
- get: function () {
- return _types2.StringLiteral;
- }
-});
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-var _modules = require("./modules");
-
-var _types2 = require("./types");
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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 (!t.isDeclareExportDeclaration(parent)) {
- this.word("declare");
- this.space();
- }
-
- this.word("class");
- this.space();
-
- this._interfaceish(node);
-}
-
-function DeclareFunction(node, parent) {
- if (!t.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 (!t.isDeclareExportDeclaration(parent)) {
- this.word("declare");
- this.space();
- }
-
- this.OpaqueType(node);
-}
-
-function DeclareVariable(node, parent) {
- if (!t.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();
- }
-
- 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 (!t.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("(");
- 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) {
- this.print(node.id, node);
- this.print(node.typeParameters, node);
-
- if (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.concat(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();
- }
-
- 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 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");
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/generator/lib/generators/index.js b/assets/node_modules/@babel/generator/lib/generators/index.js
deleted file mode 100644
index f2b4cec..0000000
--- a/assets/node_modules/@babel/generator/lib/generators/index.js
+++ /dev/null
@@ -1,137 +0,0 @@
-"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;
- 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;
- 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;
- 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;
- 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;
- 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;
- 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;
- 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;
- 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;
- 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;
- 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;
- Object.defineProperty(exports, key, {
- enumerable: true,
- get: function () {
- return _typescript[key];
- }
- });
-}); \ No newline at end of file
diff --git a/assets/node_modules/@babel/generator/lib/generators/jsx.js b/assets/node_modules/@babel/generator/lib/generators/jsx.js
deleted file mode 100644
index 4850913..0000000
--- a/assets/node_modules/@babel/generator/lib/generators/jsx.js
+++ /dev/null
@@ -1,145 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.JSXAttribute = JSXAttribute;
-exports.JSXIdentifier = JSXIdentifier;
-exports.JSXNamespacedName = JSXNamespacedName;
-exports.JSXMemberExpression = JSXMemberExpression;
-exports.JSXSpreadAttribute = JSXSpreadAttribute;
-exports.JSXExpressionContainer = JSXExpressionContainer;
-exports.JSXSpreadChild = JSXSpreadChild;
-exports.JSXText = JSXText;
-exports.JSXElement = JSXElement;
-exports.JSXOpeningElement = JSXOpeningElement;
-exports.JSXClosingElement = JSXClosingElement;
-exports.JSXEmptyExpression = JSXEmptyExpression;
-exports.JSXFragment = JSXFragment;
-exports.JSXOpeningFragment = JSXOpeningFragment;
-exports.JSXClosingFragment = JSXClosingFragment;
-
-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/assets/node_modules/@babel/generator/lib/generators/methods.js b/assets/node_modules/@babel/generator/lib/generators/methods.js
deleted file mode 100644
index aeb140a..0000000
--- a/assets/node_modules/@babel/generator/lib/generators/methods.js
+++ /dev/null
@@ -1,161 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports._params = _params;
-exports._parameters = _parameters;
-exports._param = _param;
-exports._methodHead = _methodHead;
-exports._predicate = _predicate;
-exports._functionHead = _functionHead;
-exports.FunctionDeclaration = exports.FunctionExpression = FunctionExpression;
-exports.ArrowFunctionExpression = ArrowFunctionExpression;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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.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.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 (node.params.length === 1 && t.isIdentifier(firstParam) && !hasTypes(node, firstParam)) {
- if (this.format.retainLines && node.loc && node.body.loc && node.loc.start.line < node.body.loc.start.line) {
- this.token("(");
-
- if (firstParam.loc && firstParam.loc.start.line > node.loc.start.line) {
- this.indent();
- this.print(firstParam, node);
- this.dedent();
-
- this._catchUp("start", node.body.loc);
- } else {
- this.print(firstParam, node);
- }
-
- this.token(")");
- } else {
- this.print(firstParam, node);
- }
- } else {
- this._params(node);
- }
-
- this._predicate(node);
-
- this.space();
- this.token("=>");
- this.space();
- this.print(node.body, node);
-}
-
-function hasTypes(node, param) {
- return node.typeParameters || node.returnType || param.typeAnnotation || param.optional || param.trailingComments;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/generator/lib/generators/modules.js b/assets/node_modules/@babel/generator/lib/generators/modules.js
deleted file mode 100644
index 213e337..0000000
--- a/assets/node_modules/@babel/generator/lib/generators/modules.js
+++ /dev/null
@@ -1,208 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.ImportSpecifier = ImportSpecifier;
-exports.ImportDefaultSpecifier = ImportDefaultSpecifier;
-exports.ExportDefaultSpecifier = ExportDefaultSpecifier;
-exports.ExportSpecifier = ExportSpecifier;
-exports.ExportNamespaceSpecifier = ExportNamespaceSpecifier;
-exports.ExportAllDeclaration = ExportAllDeclaration;
-exports.ExportNamedDeclaration = ExportNamedDeclaration;
-exports.ExportDefaultDeclaration = ExportDefaultDeclaration;
-exports.ImportDeclaration = ImportDeclaration;
-exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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) {
- 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.semicolon();
-}
-
-function ExportNamedDeclaration(node) {
- if (this.format.decoratorsBeforeExport && t.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 && t.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 (!t.isStatement(declar)) this.semicolon();
- } else {
- if (node.exportKind === "type") {
- this.word("type");
- this.space();
- }
-
- const specifiers = node.specifiers.slice(0);
- let hasSpecial = false;
-
- while (true) {
- const first = specifiers[0];
-
- if (t.isExportDefaultSpecifier(first) || t.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.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 && specifiers.length) {
- while (true) {
- const first = specifiers[0];
-
- if (t.isImportDefaultSpecifier(first) || t.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.semicolon();
-}
-
-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/assets/node_modules/@babel/generator/lib/generators/statements.js b/assets/node_modules/@babel/generator/lib/generators/statements.js
deleted file mode 100644
index 4e61207..0000000
--- a/assets/node_modules/@babel/generator/lib/generators/statements.js
+++ /dev/null
@@ -1,313 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.WithStatement = WithStatement;
-exports.IfStatement = IfStatement;
-exports.ForStatement = ForStatement;
-exports.WhileStatement = WhileStatement;
-exports.DoWhileStatement = DoWhileStatement;
-exports.LabeledStatement = LabeledStatement;
-exports.TryStatement = TryStatement;
-exports.CatchClause = CatchClause;
-exports.SwitchStatement = SwitchStatement;
-exports.SwitchCase = SwitchCase;
-exports.DebuggerStatement = DebuggerStatement;
-exports.VariableDeclaration = VariableDeclaration;
-exports.VariableDeclarator = VariableDeclarator;
-exports.ThrowStatement = exports.BreakStatement = exports.ReturnStatement = exports.ContinueStatement = exports.ForOfStatement = exports.ForInStatement = void 0;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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 && t.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("}")) this.space();
- this.word("else");
- this.space();
- this.printAndIndentOnComments(node.alternate, node);
- }
-}
-
-function getLastStatement(statement) {
- if (!t.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.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("\n")) for (let i = 0; i < 4; i++) this.space(true);
-}
-
-function constDeclarationIndent() {
- this.token(",");
- this.newline();
- if (this.endsWith("\n")) 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 (!t.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 (t.isFor(parent)) {
- if (parent.left === node || parent.init === 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/assets/node_modules/@babel/generator/lib/generators/template-literals.js b/assets/node_modules/@babel/generator/lib/generators/template-literals.js
deleted file mode 100644
index 0543303..0000000
--- a/assets/node_modules/@babel/generator/lib/generators/template-literals.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"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/assets/node_modules/@babel/generator/lib/generators/types.js b/assets/node_modules/@babel/generator/lib/generators/types.js
deleted file mode 100644
index 9a62cfb..0000000
--- a/assets/node_modules/@babel/generator/lib/generators/types.js
+++ /dev/null
@@ -1,184 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.Identifier = Identifier;
-exports.ArgumentPlaceholder = ArgumentPlaceholder;
-exports.SpreadElement = exports.RestElement = RestElement;
-exports.ObjectPattern = exports.ObjectExpression = ObjectExpression;
-exports.ObjectMethod = ObjectMethod;
-exports.ObjectProperty = ObjectProperty;
-exports.ArrayPattern = exports.ArrayExpression = ArrayExpression;
-exports.RegExpLiteral = RegExpLiteral;
-exports.BooleanLiteral = BooleanLiteral;
-exports.NullLiteral = NullLiteral;
-exports.NumericLiteral = NumericLiteral;
-exports.StringLiteral = StringLiteral;
-exports.BigIntLiteral = BigIntLiteral;
-exports.PipelineTopicExpression = PipelineTopicExpression;
-exports.PipelineBareFunction = PipelineBareFunction;
-exports.PipelinePrimaryTopicReference = PipelinePrimaryTopicReference;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-var _jsesc = _interopRequireDefault(require("jsesc"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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 (t.isAssignmentPattern(node.value) && t.isIdentifier(node.key) && node.key.name === node.value.left.name) {
- this.print(node.value, node);
- return;
- }
-
- this.print(node.key, node);
-
- if (node.shorthand && t.isIdentifier(node.key) && t.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 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 value = node.value + "";
-
- 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 opts = this.format.jsescOption;
-
- if (this.format.jsonCompatibleStrings) {
- opts.json = true;
- }
-
- const val = (0, _jsesc.default)(node.value, opts);
- return this.token(val);
-}
-
-function BigIntLiteral(node) {
- const raw = this.getPossibleRaw(node);
-
- if (!this.format.minified && raw != null) {
- this.token(raw);
- return;
- }
-
- this.token(node.value);
-}
-
-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/assets/node_modules/@babel/generator/lib/generators/typescript.js b/assets/node_modules/@babel/generator/lib/generators/typescript.js
deleted file mode 100644
index 3b31d2d..0000000
--- a/assets/node_modules/@babel/generator/lib/generators/typescript.js
+++ /dev/null
@@ -1,758 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.TSTypeAnnotation = TSTypeAnnotation;
-exports.TSTypeParameterDeclaration = exports.TSTypeParameterInstantiation = TSTypeParameterInstantiation;
-exports.TSTypeParameter = TSTypeParameter;
-exports.TSParameterProperty = TSParameterProperty;
-exports.TSDeclareFunction = TSDeclareFunction;
-exports.TSDeclareMethod = TSDeclareMethod;
-exports.TSQualifiedName = TSQualifiedName;
-exports.TSCallSignatureDeclaration = TSCallSignatureDeclaration;
-exports.TSConstructSignatureDeclaration = TSConstructSignatureDeclaration;
-exports.TSPropertySignature = TSPropertySignature;
-exports.tsPrintPropertyOrMethodName = tsPrintPropertyOrMethodName;
-exports.TSMethodSignature = TSMethodSignature;
-exports.TSIndexSignature = TSIndexSignature;
-exports.TSAnyKeyword = TSAnyKeyword;
-exports.TSBigIntKeyword = TSBigIntKeyword;
-exports.TSUnknownKeyword = TSUnknownKeyword;
-exports.TSNumberKeyword = TSNumberKeyword;
-exports.TSObjectKeyword = TSObjectKeyword;
-exports.TSBooleanKeyword = TSBooleanKeyword;
-exports.TSStringKeyword = TSStringKeyword;
-exports.TSSymbolKeyword = TSSymbolKeyword;
-exports.TSVoidKeyword = TSVoidKeyword;
-exports.TSUndefinedKeyword = TSUndefinedKeyword;
-exports.TSNullKeyword = TSNullKeyword;
-exports.TSNeverKeyword = TSNeverKeyword;
-exports.TSThisType = TSThisType;
-exports.TSFunctionType = TSFunctionType;
-exports.TSConstructorType = TSConstructorType;
-exports.tsPrintFunctionOrConstructorType = tsPrintFunctionOrConstructorType;
-exports.TSTypeReference = TSTypeReference;
-exports.TSTypePredicate = TSTypePredicate;
-exports.TSTypeQuery = TSTypeQuery;
-exports.TSTypeLiteral = TSTypeLiteral;
-exports.tsPrintTypeLiteralOrInterfaceBody = tsPrintTypeLiteralOrInterfaceBody;
-exports.tsPrintBraced = tsPrintBraced;
-exports.TSArrayType = TSArrayType;
-exports.TSTupleType = TSTupleType;
-exports.TSOptionalType = TSOptionalType;
-exports.TSRestType = TSRestType;
-exports.TSUnionType = TSUnionType;
-exports.TSIntersectionType = TSIntersectionType;
-exports.tsPrintUnionOrIntersectionType = tsPrintUnionOrIntersectionType;
-exports.TSConditionalType = TSConditionalType;
-exports.TSInferType = TSInferType;
-exports.TSParenthesizedType = TSParenthesizedType;
-exports.TSTypeOperator = TSTypeOperator;
-exports.TSIndexedAccessType = TSIndexedAccessType;
-exports.TSMappedType = TSMappedType;
-exports.TSLiteralType = TSLiteralType;
-exports.TSExpressionWithTypeArguments = TSExpressionWithTypeArguments;
-exports.TSInterfaceDeclaration = TSInterfaceDeclaration;
-exports.TSInterfaceBody = TSInterfaceBody;
-exports.TSTypeAliasDeclaration = TSTypeAliasDeclaration;
-exports.TSAsExpression = TSAsExpression;
-exports.TSTypeAssertion = TSTypeAssertion;
-exports.TSEnumDeclaration = TSEnumDeclaration;
-exports.TSEnumMember = TSEnumMember;
-exports.TSModuleDeclaration = TSModuleDeclaration;
-exports.TSModuleBlock = TSModuleBlock;
-exports.TSImportType = TSImportType;
-exports.TSImportEqualsDeclaration = TSImportEqualsDeclaration;
-exports.TSExternalModuleReference = TSExternalModuleReference;
-exports.TSNonNullExpression = TSNonNullExpression;
-exports.TSExportAssignment = TSExportAssignment;
-exports.TSNamespaceExportDeclaration = TSNamespaceExportDeclaration;
-exports.tsPrintSignatureDeclarationBase = tsPrintSignatureDeclarationBase;
-exports.tsPrintClassMemberModifiers = tsPrintClassMemberModifiers;
-
-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) {
- this.tsPrintPropertyOrMethodName(node);
- this.tsPrintSignatureDeclarationBase(node);
- this.token(";");
-}
-
-function TSIndexSignature(node) {
- const {
- readonly
- } = node;
-
- 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 TSThisType() {
- this.word("this");
-}
-
-function TSFunctionType(node) {
- this.tsPrintFunctionOrConstructorType(node);
-}
-
-function TSConstructorType(node) {
- 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 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.token(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 {
- readonly,
- typeParameter,
- optional
- } = 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);
- 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) {
- 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.abstract) {
- this.word("abstract");
- this.space();
- }
-
- if (isField && node.readonly) {
- this.word("readonly");
- this.space();
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/generator/lib/index.js b/assets/node_modules/@babel/generator/lib/index.js
deleted file mode 100644
index fcdb288..0000000
--- a/assets/node_modules/@babel/generator/lib/index.js
+++ /dev/null
@@ -1,92 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = _default;
-exports.CodeGenerator = void 0;
-
-var _sourceMap = _interopRequireDefault(require("./source-map"));
-
-var _printer = _interopRequireDefault(require("./printer"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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 = 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,
- jsonCompatibleStrings: opts.jsonCompatibleStrings,
- indent: {
- adjustMultilineComment: true,
- style: " ",
- base: 0
- },
- decoratorsBeforeExport: !!opts.decoratorsBeforeExport,
- jsescOption: Object.assign({
- quotes: "double",
- wrap: true
- }, opts.jsescOption)
- };
-
- 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 = new Generator(ast, opts, code);
- }
-
- generate() {
- return this._generator.generate();
- }
-
-}
-
-exports.CodeGenerator = CodeGenerator;
-
-function _default(ast, opts, code) {
- const gen = new Generator(ast, opts, code);
- return gen.generate();
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/generator/lib/node/index.js b/assets/node_modules/@babel/generator/lib/node/index.js
deleted file mode 100644
index ae78e38..0000000
--- a/assets/node_modules/@babel/generator/lib/node/index.js
+++ /dev/null
@@ -1,112 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.needsWhitespace = needsWhitespace;
-exports.needsWhitespaceBefore = needsWhitespaceBefore;
-exports.needsWhitespaceAfter = needsWhitespaceAfter;
-exports.needsParens = needsParens;
-
-var whitespace = _interopRequireWildcard(require("./whitespace"));
-
-var parens = _interopRequireWildcard(require("./parentheses"));
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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 = t.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 (t.isCallExpression(node)) {
- return true;
- }
-
- if (t.isMemberExpression(node)) {
- return isOrHasCallExpression(node.object) || !node.computed && isOrHasCallExpression(node.property);
- } else {
- return false;
- }
-}
-
-function needsWhitespace(node, parent, type) {
- if (!node) return 0;
-
- if (t.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 (t.isNewExpression(parent) && parent.callee === node) {
- if (isOrHasCallExpression(node)) return true;
- }
-
- if (t.isLogicalExpression(node) && parent.operator === "??") return true;
- return find(expandedParens, node, parent, printStack);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/generator/lib/node/parentheses.js b/assets/node_modules/@babel/generator/lib/node/parentheses.js
deleted file mode 100644
index a69f69d..0000000
--- a/assets/node_modules/@babel/generator/lib/node/parentheses.js
+++ /dev/null
@@ -1,248 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.NullableTypeAnnotation = NullableTypeAnnotation;
-exports.FunctionTypeAnnotation = FunctionTypeAnnotation;
-exports.UpdateExpression = UpdateExpression;
-exports.ObjectExpression = ObjectExpression;
-exports.DoExpression = DoExpression;
-exports.Binary = Binary;
-exports.IntersectionTypeAnnotation = exports.UnionTypeAnnotation = UnionTypeAnnotation;
-exports.TSAsExpression = TSAsExpression;
-exports.TSTypeAssertion = TSTypeAssertion;
-exports.TSIntersectionType = exports.TSUnionType = TSUnionType;
-exports.BinaryExpression = BinaryExpression;
-exports.SequenceExpression = SequenceExpression;
-exports.AwaitExpression = exports.YieldExpression = YieldExpression;
-exports.ClassExpression = ClassExpression;
-exports.UnaryLike = UnaryLike;
-exports.FunctionExpression = FunctionExpression;
-exports.ArrowFunctionExpression = ArrowFunctionExpression;
-exports.ConditionalExpression = ConditionalExpression;
-exports.OptionalMemberExpression = OptionalMemberExpression;
-exports.AssignmentExpression = AssignmentExpression;
-exports.NewExpression = NewExpression;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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) => (t.isClassDeclaration(parent) || t.isClassExpression(parent)) && parent.superClass === node;
-
-function NullableTypeAnnotation(node, parent) {
- return t.isArrayTypeAnnotation(parent);
-}
-
-function FunctionTypeAnnotation(node, parent, printStack) {
- return t.isUnionTypeAnnotation(parent) || t.isIntersectionTypeAnnotation(parent) || t.isArrayTypeAnnotation(parent) || t.isTypeAnnotation(parent) && t.isArrowFunctionExpression(printStack[printStack.length - 3]);
-}
-
-function UpdateExpression(node, parent) {
- return t.isMemberExpression(parent, {
- object: node
- }) || t.isCallExpression(parent, {
- callee: node
- }) || t.isNewExpression(parent, {
- callee: node
- }) || isClassExtendsClause(node, parent);
-}
-
-function ObjectExpression(node, parent, printStack) {
- return isFirstInStatement(printStack, {
- considerArrow: true
- });
-}
-
-function DoExpression(node, parent, printStack) {
- return isFirstInStatement(printStack);
-}
-
-function Binary(node, parent) {
- if (node.operator === "**" && t.isBinaryExpression(parent, {
- operator: "**"
- })) {
- return parent.left === node;
- }
-
- if (isClassExtendsClause(node, parent)) {
- return true;
- }
-
- if ((t.isCallExpression(parent) || t.isNewExpression(parent)) && parent.callee === node || t.isUnaryLike(parent) || t.isMemberExpression(parent) && parent.object === node || t.isAwaitExpression(parent)) {
- return true;
- }
-
- if (t.isBinary(parent)) {
- const parentOp = parent.operator;
- const parentPos = PRECEDENCE[parentOp];
- const nodeOp = node.operator;
- const nodePos = PRECEDENCE[nodeOp];
-
- if (parentPos === nodePos && parent.right === node && !t.isLogicalExpression(parent) || parentPos > nodePos) {
- return true;
- }
- }
-
- return false;
-}
-
-function UnionTypeAnnotation(node, parent) {
- return t.isArrayTypeAnnotation(parent) || t.isNullableTypeAnnotation(parent) || t.isIntersectionTypeAnnotation(parent) || t.isUnionTypeAnnotation(parent);
-}
-
-function TSAsExpression() {
- return true;
-}
-
-function TSTypeAssertion() {
- return true;
-}
-
-function TSUnionType(node, parent) {
- return t.isTSArrayType(parent) || t.isTSOptionalType(parent) || t.isTSIntersectionType(parent) || t.isTSUnionType(parent) || t.isTSRestType(parent);
-}
-
-function BinaryExpression(node, parent) {
- return node.operator === "in" && (t.isVariableDeclarator(parent) || t.isFor(parent));
-}
-
-function SequenceExpression(node, parent) {
- if (t.isForStatement(parent) || t.isThrowStatement(parent) || t.isReturnStatement(parent) || t.isIfStatement(parent) && parent.test === node || t.isWhileStatement(parent) && parent.test === node || t.isForInStatement(parent) && parent.right === node || t.isSwitchStatement(parent) && parent.discriminant === node || t.isExpressionStatement(parent) && parent.expression === node) {
- return false;
- }
-
- return true;
-}
-
-function YieldExpression(node, parent) {
- return t.isBinary(parent) || t.isUnaryLike(parent) || t.isCallExpression(parent) || t.isMemberExpression(parent) || t.isNewExpression(parent) || t.isAwaitExpression(parent) && t.isYieldExpression(node) || t.isConditionalExpression(parent) && node === parent.test || isClassExtendsClause(node, parent);
-}
-
-function ClassExpression(node, parent, printStack) {
- return isFirstInStatement(printStack, {
- considerDefaultExports: true
- });
-}
-
-function UnaryLike(node, parent) {
- return t.isMemberExpression(parent, {
- object: node
- }) || t.isCallExpression(parent, {
- callee: node
- }) || t.isNewExpression(parent, {
- callee: node
- }) || t.isBinaryExpression(parent, {
- operator: "**",
- left: node
- }) || isClassExtendsClause(node, parent);
-}
-
-function FunctionExpression(node, parent, printStack) {
- return isFirstInStatement(printStack, {
- considerDefaultExports: true
- });
-}
-
-function ArrowFunctionExpression(node, parent) {
- return t.isExportDeclaration(parent) || ConditionalExpression(node, parent);
-}
-
-function ConditionalExpression(node, parent) {
- if (t.isUnaryLike(parent) || t.isBinary(parent) || t.isConditionalExpression(parent, {
- test: node
- }) || t.isAwaitExpression(parent) || t.isOptionalMemberExpression(parent) || t.isTaggedTemplateExpression(parent) || t.isTSTypeAssertion(parent) || t.isTSAsExpression(parent)) {
- return true;
- }
-
- return UnaryLike(node, parent);
-}
-
-function OptionalMemberExpression(node, parent) {
- return t.isCallExpression(parent) || t.isMemberExpression(parent);
-}
-
-function AssignmentExpression(node) {
- if (t.isObjectPattern(node.left)) {
- return true;
- } else {
- return ConditionalExpression(...arguments);
- }
-}
-
-function NewExpression(node, parent) {
- return isClassExtendsClause(node, parent);
-}
-
-function isFirstInStatement(printStack, {
- considerArrow = false,
- considerDefaultExports = false
-} = {}) {
- let i = printStack.length - 1;
- let node = printStack[i];
- i--;
- let parent = printStack[i];
-
- while (i > 0) {
- if (t.isExpressionStatement(parent, {
- expression: node
- }) || t.isTaggedTemplateExpression(parent) || considerDefaultExports && t.isExportDefaultDeclaration(parent, {
- declaration: node
- }) || considerArrow && t.isArrowFunctionExpression(parent, {
- body: node
- })) {
- return true;
- }
-
- if (t.isCallExpression(parent, {
- callee: node
- }) || t.isSequenceExpression(parent) && parent.expressions[0] === node || t.isMemberExpression(parent, {
- object: node
- }) || t.isConditional(parent, {
- test: node
- }) || t.isBinary(parent, {
- left: node
- }) || t.isAssignmentExpression(parent, {
- left: node
- })) {
- node = parent;
- i--;
- parent = printStack[i];
- } else {
- return false;
- }
- }
-
- return false;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/generator/lib/node/whitespace.js b/assets/node_modules/@babel/generator/lib/node/whitespace.js
deleted file mode 100644
index bc60f1d..0000000
--- a/assets/node_modules/@babel/generator/lib/node/whitespace.js
+++ /dev/null
@@ -1,186 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.list = exports.nodes = void 0;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function crawl(node, state = {}) {
- if (t.isMemberExpression(node)) {
- crawl(node.object, state);
- if (node.computed) crawl(node.property, state);
- } else if (t.isBinary(node) || t.isAssignmentExpression(node)) {
- crawl(node.left, state);
- crawl(node.right, state);
- } else if (t.isCallExpression(node)) {
- state.hasCall = true;
- crawl(node.callee, state);
- } else if (t.isFunction(node)) {
- state.hasFunction = true;
- } else if (t.isIdentifier(node)) {
- state.hasHelper = state.hasHelper || isHelper(node.callee);
- }
-
- return state;
-}
-
-function isHelper(node) {
- if (t.isMemberExpression(node)) {
- return isHelper(node.object) || isHelper(node.property);
- } else if (t.isIdentifier(node)) {
- return node.name === "require" || node.name[0] === "_";
- } else if (t.isCallExpression(node)) {
- return isHelper(node.callee);
- } else if (t.isBinary(node) || t.isAssignmentExpression(node)) {
- return t.isIdentifier(node.left) && isHelper(node.left) || isHelper(node.right);
- } else {
- return false;
- }
-}
-
-function isType(node) {
- return t.isLiteral(node) || t.isObjectExpression(node) || t.isArrayExpression(node) || t.isIdentifier(node) || t.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 (t.isFunction(node.left) || t.isFunction(node.right)) {
- return {
- after: true
- };
- }
- },
-
- Literal(node) {
- if (node.value === "use strict") {
- return {
- after: true
- };
- }
- },
-
- CallExpression(node) {
- if (t.isFunction(node.callee) || isHelper(node)) {
- 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 (t.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) {
- if (parent.callProperties[0] === node && (!parent.properties || !parent.properties.length)) {
- return {
- before: true
- };
- }
-};
-
-nodes.ObjectTypeIndexer = function (node, parent) {
- if (parent.indexers[0] === node && (!parent.properties || !parent.properties.length) && (!parent.callProperties || !parent.callProperties.length)) {
- return {
- before: true
- };
- }
-};
-
-nodes.ObjectTypeInternalSlot = function (node, parent) {
- if (parent.internalSlots[0] === node && (!parent.properties || !parent.properties.length) && (!parent.callProperties || !parent.callProperties.length) && (!parent.indexers || !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(t.FLIPPED_ALIAS_KEYS[type] || []).forEach(function (type) {
- nodes[type] = function () {
- return amounts;
- };
- });
-}); \ No newline at end of file
diff --git a/assets/node_modules/@babel/generator/lib/printer.js b/assets/node_modules/@babel/generator/lib/printer.js
deleted file mode 100644
index 44e3cff..0000000
--- a/assets/node_modules/@babel/generator/lib/printer.js
+++ /dev/null
@@ -1,479 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _isInteger = _interopRequireDefault(require("lodash/isInteger"));
-
-var _repeat = _interopRequireDefault(require("lodash/repeat"));
-
-var _buffer = _interopRequireDefault(require("./buffer"));
-
-var n = _interopRequireWildcard(require("./node"));
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-var generatorFunctions = _interopRequireWildcard(require("./generators"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const SCIENTIFIC_NOTATION = /e/i;
-const ZERO_DECIMAL_INTEGER = /\.0+$/;
-const NON_DECIMAL_LITERAL = /^0[box]/;
-
-class Printer {
- constructor(format, map) {
- this.inForStatementInitCounter = 0;
- this._printStack = [];
- this._indent = 0;
- this._insideAux = false;
- this._printedCommentStarts = {};
- 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 (this._buf.hasContent() && !this.endsWith(" ") && !this.endsWith("\n") || force) {
- this._space();
- }
- }
-
- word(str) {
- if (this._endsWithWord || this.endsWith("/") && str.indexOf("/") === 0) {
- this._space();
- }
-
- this._maybeAddAuxComment();
-
- this._append(str);
-
- this._endsWithWord = true;
- }
-
- number(str) {
- this.word(str);
- this._endsWithInteger = (0, _isInteger.default)(+str) && !NON_DECIMAL_LITERAL.test(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str[str.length - 1] !== ".";
- }
-
- token(str) {
- if (str === "--" && this.endsWith("!") || str[0] === "+" && this.endsWith("+") || str[0] === "-" && this.endsWith("-") || str[0] === "." && this._endsWithInteger) {
- this._space();
- }
-
- this._maybeAddAuxComment();
-
- this._append(str);
- }
-
- newline(i) {
- if (this.format.retainLines || this.format.compact) return;
-
- if (this.format.concise) {
- this.space();
- return;
- }
-
- if (this.endsWith("\n\n")) return;
- if (typeof i !== "number") i = 1;
- i = Math.min(2, i);
- if (this.endsWith("{\n") || this.endsWith(":\n")) i--;
- if (i <= 0) return;
-
- for (let j = 0; j < i; j++) {
- this._newline();
- }
- }
-
- endsWith(str) {
- return this._buf.endsWith(str);
- }
-
- 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("\n") && str[0] !== "\n") {
- this._buf.queue(this._getIndent());
- }
- }
-
- _maybeAddParen(str) {
- const parenPushNewlineState = this._parenPushNewlineState;
- if (!parenPushNewlineState) return;
- this._parenPushNewlineState = null;
- 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 !== "/") return;
- if (i + 1 === str.length) return;
- const chaPost = str[i + 1];
- if (chaPost !== "/" && chaPost !== "*") return;
- }
-
- this.token("(");
- this.indent();
- parenPushNewlineState.printed = true;
- }
-
- _catchUp(prop, loc) {
- if (!this.format.retainLines) return;
- const pos = loc ? loc[prop] : null;
-
- if (pos && pos.line !== null) {
- const count = pos.line - this._buf.getCurrentLine();
-
- for (let i = 0; i < count; i++) {
- this._newline();
- }
- }
- }
-
- _getIndent() {
- return (0, _repeat.default)(this.format.indent.style, 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 && 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 && node.constructor.name)}`);
- }
-
- this._printStack.push(node);
-
- const oldInAux = this._insideAux;
- this._insideAux = !node.loc;
-
- this._maybeAddAuxComment(this._insideAux && !oldInAux);
-
- let needsParens = n.needsParens(node, parent, this._printStack);
-
- if (this.format.retainFunctionParens && node.type === "FunctionExpression" && node.extra && node.extra.parenthesized) {
- needsParens = true;
- }
-
- if (needsParens) this.token("(");
-
- this._printLeadingComments(node);
-
- const loc = t.isProgram(node) || t.isFile(node) ? null : node.loc;
- this.withSource("start", loc, () => {
- printMethod.call(this, node, parent);
- });
-
- this._printTrailingComments(node);
-
- if (needsParens) 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 || !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 (!t.isEmptyStatement(node)) {
- this.space();
- }
-
- this.print(node, parent);
- }
-
- _printTrailingComments(node) {
- this._printComments(this._getComments(false, node));
- }
-
- _printLeadingComments(node) {
- this._printComments(this._getComments(true, node));
- }
-
- printInnerComments(node, indent = true) {
- if (!node.innerComments || !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 ? n.needsWhitespaceBefore : n.needsWhitespaceAfter;
- if (needs(node, parent)) lines++;
- }
-
- this.newline(lines);
- }
-
- _getComments(leading, node) {
- return node && (leading ? node.leadingComments : node.trailingComments) || [];
- }
-
- _printComment(comment) {
- if (!this.format.shouldPrintComment(comment.value)) return;
- if (comment.ignore) return;
- if (this._printedComments.has(comment)) return;
-
- this._printedComments.add(comment);
-
- if (comment.start != null) {
- if (this._printedCommentStarts[comment.start]) return;
- this._printedCommentStarts[comment.start] = true;
- }
-
- const isBlockComment = comment.type === "CommentBlock";
- this.newline(this._buf.hasContent() && !this._noLineTerminator && isBlockComment ? 1 : 0);
- if (!this.endsWith("[") && !this.endsWith("{")) this.space();
- let val = !isBlockComment && !this._noLineTerminator ? `//${comment.value}\n` : `/*${comment.value}*/`;
-
- if (isBlockComment && this.format.indent.adjustMultilineComment) {
- const offset = comment.loc && 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._buf.getCurrentColumn());
- val = val.replace(/\n(?!$)/g, `\n${(0, _repeat.default)(" ", indentSize)}`);
- }
-
- if (this.endsWith("/")) this._space();
- this.withSource("start", comment.loc, () => {
- this._append(val);
- });
- this.newline(isBlockComment && !this._noLineTerminator ? 1 : 0);
- }
-
- _printComments(comments) {
- if (!comments || !comments.length) return;
-
- for (const comment of comments) {
- this._printComment(comment);
- }
- }
-
-}
-
-exports.default = Printer;
-Object.assign(Printer.prototype, generatorFunctions);
-
-function commaSeparator() {
- this.token(",");
- this.space();
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/generator/lib/source-map.js b/assets/node_modules/@babel/generator/lib/source-map.js
deleted file mode 100644
index 7a0a240..0000000
--- a/assets/node_modules/@babel/generator/lib/source-map.js
+++ /dev/null
@@ -1,73 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _sourceMap = _interopRequireDefault(require("source-map"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class SourceMap {
- constructor(opts, code) {
- this._cachedMap = null;
- this._code = code;
- this._opts = opts;
- this._rawMappings = [];
- }
-
- get() {
- if (!this._cachedMap) {
- const map = this._cachedMap = new _sourceMap.default.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/assets/node_modules/@babel/generator/node_modules/.bin/jsesc b/assets/node_modules/@babel/generator/node_modules/.bin/jsesc
deleted file mode 120000
index dac89cf..0000000
--- a/assets/node_modules/@babel/generator/node_modules/.bin/jsesc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../jsesc/bin/jsesc \ No newline at end of file
diff --git a/assets/node_modules/@babel/generator/package.json b/assets/node_modules/@babel/generator/package.json
deleted file mode 100644
index c3666c5..0000000
--- a/assets/node_modules/@babel/generator/package.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "@babel/generator",
- "version": "7.8.4",
- "description": "Turns an AST into code.",
- "author": "Sebastian McKenzie <sebmck@gmail.com>",
- "homepage": "https://babeljs.io/",
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- },
- "repository": "https://github.com/babel/babel/tree/master/packages/babel-generator",
- "main": "lib/index.js",
- "files": [
- "lib"
- ],
- "dependencies": {
- "@babel/types": "^7.8.3",
- "jsesc": "^2.5.1",
- "lodash": "^4.17.13",
- "source-map": "^0.5.0"
- },
- "devDependencies": {
- "@babel/helper-fixtures": "^7.8.3",
- "@babel/parser": "^7.8.4"
- },
- "gitHead": "5c2e6bc07fed3d28801d93168622c99ae622653a"
-}
diff --git a/assets/node_modules/@babel/helper-function-name/LICENSE b/assets/node_modules/@babel/helper-function-name/LICENSE
deleted file mode 100644
index f31575e..0000000
--- a/assets/node_modules/@babel/helper-function-name/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-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/assets/node_modules/@babel/helper-function-name/README.md b/assets/node_modules/@babel/helper-function-name/README.md
deleted file mode 100644
index a8a6809..0000000
--- a/assets/node_modules/@babel/helper-function-name/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# @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/next/babel-helper-function-name.html) 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/assets/node_modules/@babel/helper-function-name/lib/index.js b/assets/node_modules/@babel/helper-function-name/lib/index.js
deleted file mode 100644
index 1b7c272..0000000
--- a/assets/node_modules/@babel/helper-function-name/lib/index.js
+++ /dev/null
@@ -1,176 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = _default;
-
-var _helperGetFunctionArity = _interopRequireDefault(require("@babel/helper-get-function-arity"));
-
-var _template = _interopRequireDefault(require("@babel/template"));
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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 (t.isNullLiteral(id)) {
- return "null";
- }
-
- if (t.isRegExpLiteral(id)) {
- return `_${id.pattern}_${id.flags}`;
- }
-
- if (t.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 (!t.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 ((t.isObjectProperty(parent) || t.isObjectMethod(parent, {
- kind: "method"
- })) && (!parent.computed || t.isLiteral(parent.key))) {
- id = parent.key;
- } else if (t.isVariableDeclarator(parent)) {
- id = parent.id;
-
- if (t.isIdentifier(id) && !localBinding) {
- const binding = scope.parent.getBinding(id.name);
-
- if (binding && binding.constant && scope.getBinding(id.name) === binding) {
- node.id = t.cloneNode(id);
- node.id[t.NOT_LOCAL_BINDING] = true;
- return;
- }
- }
- } else if (t.isAssignmentExpression(parent)) {
- id = parent.left;
- } else if (!id) {
- return;
- }
-
- let name;
-
- if (id && t.isLiteral(id)) {
- name = getNameFromLiteralId(id);
- } else if (id && t.isIdentifier(id)) {
- name = id.name;
- }
-
- if (name === undefined) {
- return;
- }
-
- name = t.toBindingIdentifierName(name);
- id = t.identifier(name);
- id[t.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/assets/node_modules/@babel/helper-function-name/package.json b/assets/node_modules/@babel/helper-function-name/package.json
deleted file mode 100644
index bee9699..0000000
--- a/assets/node_modules/@babel/helper-function-name/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "@babel/helper-function-name",
- "version": "7.8.3",
- "description": "Helper function to change the property 'name' of every function",
- "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-function-name",
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- },
- "main": "lib/index.js",
- "dependencies": {
- "@babel/helper-get-function-arity": "^7.8.3",
- "@babel/template": "^7.8.3",
- "@babel/types": "^7.8.3"
- },
- "gitHead": "a7620bd266ae1345975767bbc7abf09034437017"
-}
diff --git a/assets/node_modules/@babel/helper-get-function-arity/LICENSE b/assets/node_modules/@babel/helper-get-function-arity/LICENSE
deleted file mode 100644
index f31575e..0000000
--- a/assets/node_modules/@babel/helper-get-function-arity/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-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/assets/node_modules/@babel/helper-get-function-arity/README.md b/assets/node_modules/@babel/helper-get-function-arity/README.md
deleted file mode 100644
index 1de8084..0000000
--- a/assets/node_modules/@babel/helper-get-function-arity/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# @babel/helper-get-function-arity
-
-> Helper function to get function arity
-
-See our website [@babel/helper-get-function-arity](https://babeljs.io/docs/en/next/babel-helper-get-function-arity.html) 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/assets/node_modules/@babel/helper-get-function-arity/lib/index.js b/assets/node_modules/@babel/helper-get-function-arity/lib/index.js
deleted file mode 100644
index 46e71dc..0000000
--- a/assets/node_modules/@babel/helper-get-function-arity/lib/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = _default;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _default(node) {
- const params = node.params;
-
- for (let i = 0; i < params.length; i++) {
- const param = params[i];
-
- if (t.isAssignmentPattern(param) || t.isRestElement(param)) {
- return i;
- }
- }
-
- return params.length;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/helper-get-function-arity/package.json b/assets/node_modules/@babel/helper-get-function-arity/package.json
deleted file mode 100644
index 3b0629f..0000000
--- a/assets/node_modules/@babel/helper-get-function-arity/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "@babel/helper-get-function-arity",
- "version": "7.8.3",
- "description": "Helper function to get function arity",
- "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-get-function-arity",
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- },
- "main": "lib/index.js",
- "dependencies": {
- "@babel/types": "^7.8.3"
- },
- "gitHead": "a7620bd266ae1345975767bbc7abf09034437017"
-}
diff --git a/assets/node_modules/@babel/helper-split-export-declaration/LICENSE b/assets/node_modules/@babel/helper-split-export-declaration/LICENSE
deleted file mode 100644
index f31575e..0000000
--- a/assets/node_modules/@babel/helper-split-export-declaration/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-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/assets/node_modules/@babel/helper-split-export-declaration/README.md b/assets/node_modules/@babel/helper-split-export-declaration/README.md
deleted file mode 100644
index d241fee..0000000
--- a/assets/node_modules/@babel/helper-split-export-declaration/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# @babel/helper-split-export-declaration
-
->
-
-See our website [@babel/helper-split-export-declaration](https://babeljs.io/docs/en/next/babel-helper-split-export-declaration.html) 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/assets/node_modules/@babel/helper-split-export-declaration/lib/index.js b/assets/node_modules/@babel/helper-split-export-declaration/lib/index.js
deleted file mode 100644
index 12cbdca..0000000
--- a/assets/node_modules/@babel/helper-split-export-declaration/lib/index.js
+++ /dev/null
@@ -1,62 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = splitExportDeclaration;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function splitExportDeclaration(exportDeclaration) {
- if (!exportDeclaration.isExportDeclaration()) {
- throw new Error("Only export declarations can be splitted.");
- }
-
- 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 = t.cloneNode(id);
- }
- }
-
- const updatedDeclaration = standaloneDeclaration ? declaration : t.variableDeclaration("var", [t.variableDeclarator(t.cloneNode(id), declaration.node)]);
- const updatedExportDeclaration = t.exportNamedDeclaration(null, [t.exportSpecifier(t.cloneNode(id), t.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 t.exportSpecifier(t.identifier(name), t.identifier(name));
- });
- const aliasDeclar = t.exportNamedDeclaration(null, specifiers);
- exportDeclaration.insertAfter(aliasDeclar);
- exportDeclaration.replaceWith(declaration.node);
- return exportDeclaration;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/helper-split-export-declaration/package.json b/assets/node_modules/@babel/helper-split-export-declaration/package.json
deleted file mode 100644
index d190517..0000000
--- a/assets/node_modules/@babel/helper-split-export-declaration/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "@babel/helper-split-export-declaration",
- "version": "7.8.3",
- "description": "",
- "repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-split-export-declaration",
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- },
- "main": "lib/index.js",
- "dependencies": {
- "@babel/types": "^7.8.3"
- },
- "gitHead": "a7620bd266ae1345975767bbc7abf09034437017"
-}
diff --git a/assets/node_modules/@babel/helpers/LICENSE b/assets/node_modules/@babel/helpers/LICENSE
deleted file mode 100644
index f31575e..0000000
--- a/assets/node_modules/@babel/helpers/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-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/assets/node_modules/@babel/helpers/README.md b/assets/node_modules/@babel/helpers/README.md
deleted file mode 100644
index 537d8e4..0000000
--- a/assets/node_modules/@babel/helpers/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# @babel/helpers
-
-> Collection of helper functions used by Babel transforms.
-
-See our website [@babel/helpers](https://babeljs.io/docs/en/next/babel-helpers.html) 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/assets/node_modules/@babel/helpers/lib/helpers.js b/assets/node_modules/@babel/helpers/lib/helpers.js
deleted file mode 100644
index 37cbab7..0000000
--- a/assets/node_modules/@babel/helpers/lib/helpers.js
+++ /dev/null
@@ -1,1916 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _template = _interopRequireDefault(require("@babel/template"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const helpers = Object.create(null);
-var _default = helpers;
-exports.default = _default;
-
-const helper = minVersion => tpl => ({
- minVersion,
- ast: () => _template.default.program.ast(tpl)
-});
-
-helpers.typeof = helper("7.0.0-beta.0")`
- export default function _typeof(obj) {
- "@babel/helpers - typeof";
-
- if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
- _typeof = function (obj) { return typeof obj; };
- } else {
- _typeof = function (obj) {
- return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype
- ? "symbol"
- : typeof obj;
- };
- }
-
- return _typeof(obj);
- }
-`;
-helpers.jsx = helper("7.0.0-beta.0")`
- var REACT_ELEMENT_TYPE;
-
- export default 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) {
- // If we're going to assign props.children, we create a new object now
- // to avoid mutating defaultProps.
- 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,
- };
- }
-`;
-helpers.asyncIterator = helper("7.0.0-beta.0")`
- export default function _asyncIterator(iterable) {
- var method
- if (typeof Symbol !== "undefined") {
- if (Symbol.asyncIterator) {
- method = iterable[Symbol.asyncIterator]
- if (method != null) return method.call(iterable);
- }
- if (Symbol.iterator) {
- method = iterable[Symbol.iterator]
- if (method != null) return method.call(iterable);
- }
- }
- throw new TypeError("Object is not async iterable");
- }
-`;
-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;
- }
- }
-
- if (typeof Symbol === "function" && Symbol.asyncIterator) {
- AsyncGenerator.prototype[Symbol.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) };
- };
-
- if (typeof Symbol === "function" && Symbol.iterator) {
- iter[Symbol.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 = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
- }));
- }
- ownKeys.forEach(function(key) {
- defineProperty(target, key, source[key]);
- });
- }
- return target;
- }
-`;
-helpers.objectSpread2 = helper("7.5.0")`
- import defineProperty from "defineProperty";
-
- // This function is different to "Reflect.ownKeys". The enumerableOnly
- // filters on symbol properties only. Returned string properties are always
- // enumerable. It is good to use in objectSpread.
-
- 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;
- }
-
- export default 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;
- }
-`;
-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")`
- export default function _inheritsLoose(subClass, superClass) {
- subClass.prototype = Object.create(superClass.prototype);
- subClass.prototype.constructor = subClass;
- subClass.__proto__ = 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.construct = helper("7.0.0-beta.0")`
- import setPrototypeOf from "setPrototypeOf";
-
- 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 Date object.
- Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));
- return true;
- } catch (e) {
- return false;
- }
- }
-
- 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.0.0-beta.0")`
- function _getRequireWildcardCache() {
- if (typeof WeakMap !== "function") return null;
-
- var cache = new WeakMap();
- _getRequireWildcardCache = function () { return cache; };
- return cache;
- }
-
- export default function _interopRequireWildcard(obj) {
- if (obj && obj.__esModule) {
- return obj;
- }
-
- if (obj === null || (typeof obj !== "object" && typeof obj !== "function")) {
- return { default: obj }
- }
-
- var cache = _getRequireWildcardCache();
- if (cache && cache.has(obj)) {
- return cache.get(obj);
- }
-
- var newObj = {};
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
- for (var key in obj) {
- if (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;
- }
- return assertThisInitialized(self);
- }
-`;
-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(target, property, receiver) {
- 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) {
- return desc.get.call(receiver);
- }
-
- return desc.value;
- };
- }
- return _get(target, property, receiver || target);
- }
-`;
-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 Error("\\"" + name + "\\" is read-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 nonIterableRest from "nonIterableRest";
-
- export default function _slicedToArray(arr, i) {
- return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();
- }
-`;
-helpers.slicedToArrayLoose = helper("7.0.0-beta.0")`
- import arrayWithHoles from "arrayWithHoles";
- import iterableToArrayLimitLoose from "iterableToArrayLimitLoose";
- import nonIterableRest from "nonIterableRest";
-
- export default function _slicedToArrayLoose(arr, i) {
- return arrayWithHoles(arr) || iterableToArrayLimitLoose(arr, i) || nonIterableRest();
- }
-`;
-helpers.toArray = helper("7.0.0-beta.0")`
- import arrayWithHoles from "arrayWithHoles";
- import iterableToArray from "iterableToArray";
- import nonIterableRest from "nonIterableRest";
-
- export default function _toArray(arr) {
- return arrayWithHoles(arr) || iterableToArray(arr) || nonIterableRest();
- }
-`;
-helpers.toConsumableArray = helper("7.0.0-beta.0")`
- import arrayWithoutHoles from "arrayWithoutHoles";
- import iterableToArray from "iterableToArray";
- import nonIterableSpread from "nonIterableSpread";
-
- export default function _toConsumableArray(arr) {
- return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();
- }
-`;
-helpers.arrayWithoutHoles = helper("7.0.0-beta.0")`
- export default function _arrayWithoutHoles(arr) {
- if (Array.isArray(arr)) {
- for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
- return arr2;
- }
- }
-`;
-helpers.arrayWithHoles = helper("7.0.0-beta.0")`
- export default function _arrayWithHoles(arr) {
- if (Array.isArray(arr)) return arr;
- }
-`;
-helpers.iterableToArray = helper("7.0.0-beta.0")`
- export default function _iterableToArray(iter) {
- if (
- Symbol.iterator in Object(iter) ||
- Object.prototype.toString.call(iter) === "[object Arguments]"
- ) 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
- if (!(
- Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]"
- )) { return }
- var _arr = [];
- var _n = true;
- var _d = false;
- var _e = undefined;
- try {
- for (var _i = arr[Symbol.iterator](), _s; !(_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) {
- if (!(
- Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]"
- )) { return }
- var _arr = [];
- for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {
- _arr.push(_step.value);
- if (i && _arr.length === i) break;
- }
- return _arr;
- }
-`;
-helpers.nonIterableSpread = helper("7.0.0-beta.0")`
- export default function _nonIterableSpread() {
- throw new TypeError("Invalid attempt to spread non-iterable instance");
- }
-`;
-helpers.nonIterableRest = helper("7.0.0-beta.0")`
- export default function _nonIterableRest() {
- throw new TypeError("Invalid attempt to destructure non-iterable instance");
- }
-`;
-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){
- // This is a hack to avoid this being processed by 'transform-runtime'.
- // See issue #9.
- 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")`
- export default function _classPrivateFieldGet(receiver, privateMap) {
- var descriptor = privateMap.get(receiver);
- if (!descriptor) {
- throw new TypeError("attempted to get private field on non-instance");
- }
- if (descriptor.get) {
- return descriptor.get.call(receiver);
- }
- return descriptor.value;
- }
-`;
-helpers.classPrivateFieldSet = helper("7.0.0-beta.0")`
- export default function _classPrivateFieldSet(receiver, privateMap, value) {
- var descriptor = privateMap.get(receiver);
- if (!descriptor) {
- throw new TypeError("attempted to set private field on non-instance");
- }
- 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;
- }
-
- return value;
- }
-`;
-helpers.classPrivateFieldDestructureSet = helper("7.4.4")`
- export default function _classPrivateFieldDestructureSet(receiver, privateMap) {
- if (!privateMap.has(receiver)) {
- throw new TypeError("attempted to set private field on non-instance");
- }
- var descriptor = privateMap.get(receiver);
- 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.classStaticPrivateFieldSpecGet = helper("7.0.2")`
- export default function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {
- if (receiver !== classConstructor) {
- throw new TypeError("Private static access of wrong provenance");
- }
- if (descriptor.get) {
- return descriptor.get.call(receiver);
- }
- return descriptor.value;
- }
-`;
-helpers.classStaticPrivateFieldSpecSet = helper("7.0.2")`
- export default function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {
- if (receiver !== classConstructor) {
- throw new TypeError("Private static access of wrong provenance");
- }
- 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;
- }
-
- return value;
- }
-`;
-helpers.classStaticPrivateMethodGet = helper("7.3.2")`
- export default function _classStaticPrivateMethodGet(receiver, classConstructor, method) {
- if (receiver !== classConstructor) {
- throw new TypeError("Private static access of wrong provenance");
- }
- return method;
- }
-`;
-helpers.classStaticPrivateMethodSet = helper("7.3.2")`
- export default function _classStaticPrivateMethodSet() {
- throw new TypeError("attempted to set read only static private field");
- }
-`;
-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.classPrivateMethodSet = helper("7.1.6")`
- export default function _classPrivateMethodSet() {
- throw new TypeError("attempted to reassign private method");
- }
-`;
-helpers.wrapRegExp = helper("7.2.6")`
- import wrapNativeSuper from "wrapNativeSuper";
- import getPrototypeOf from "getPrototypeOf";
- import possibleConstructorReturn from "possibleConstructorReturn";
- import inherits from "inherits";
-
- export default function _wrapRegExp(re, groups) {
- _wrapRegExp = function(re, groups) {
- return new BabelRegExp(re, undefined, groups);
- };
-
- var _RegExp = wrapNativeSuper(RegExp);
- var _super = RegExp.prototype;
- var _groups = new WeakMap();
-
- function BabelRegExp(re, flags, groups) {
- var _this = _RegExp.call(this, re, flags);
- // if the regex is recreated with 'g' flag
- _groups.set(_this, groups || _groups.get(re));
- return _this;
- }
- 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 = [];
- args.push.apply(args, arguments);
- if (typeof args[args.length - 1] !== "object") {
- // Modern engines already pass result.groups as the last arg.
- args.push(buildGroups(args, _this));
- }
- return substitution.apply(this, args);
- }
- );
- } else {
- return _super[Symbol.replace].call(this, str, substitution);
- }
- }
-
- function buildGroups(result, re) {
- // NOTE: This function should return undefined if there are no groups,
- // but in that case Babel doesn't add the wrapper anyway.
-
- 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/assets/node_modules/@babel/helpers/lib/index.js b/assets/node_modules/@babel/helpers/lib/index.js
deleted file mode 100644
index 7710a50..0000000
--- a/assets/node_modules/@babel/helpers/lib/index.js
+++ /dev/null
@@ -1,276 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.get = get;
-exports.minVersion = minVersion;
-exports.getDependencies = getDependencies;
-exports.ensure = ensure;
-exports.default = exports.list = void 0;
-
-var _traverse = _interopRequireDefault(require("@babel/traverse"));
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-var _helpers = _interopRequireDefault(require("./helpers"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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(".");
-}
-
-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 = [];
- (0, _traverse.default)(file, {
- 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();
- }
-
- });
- (0, _traverse.default)(file, {
- 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, true);
-
- 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 && binding.scope.path.isProgram()) {
- exportBindingAssignments.push(makePath(child));
- }
- }
-
- });
- 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;
- }
-
- (0, _traverse.default)(file, {
- 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(t.variableDeclaration("var", [t.variableDeclarator(id, decl.node)]));
- }
- } else if (id.type === "MemberExpression") {
- if (decl.isFunctionDeclaration()) {
- exportBindingAssignments.forEach(assignPath => {
- const assign = path.get(assignPath);
- assign.replaceWith(t.assignmentExpression("=", id, assign.node));
- });
- exp.replaceWith(decl);
- path.pushContainer("body", t.expressionStatement(t.assignmentExpression("=", id, t.identifier(exportName))));
- } else {
- exp.replaceWith(t.expressionStatement(t.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 = t.cloneNode(dependenciesRefs[path.node.name]);
- path.replaceWith(node);
- }
-
- path.stop();
- }
-
- });
-}
-
-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 = () => {
- return t.file(helper.ast());
- };
-
- const metadata = getHelperMetadata(fn());
- helperData[name] = {
- build(getDependency, id, localBindings) {
- const file = fn();
- permuteHelperAST(file, metadata, id, localBindings, getDependency);
- return {
- nodes: file.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) {
- loadHelper(name);
-}
-
-const list = Object.keys(_helpers.default).map(name => name.replace(/^_/, "")).filter(name => name !== "__esModule");
-exports.list = list;
-var _default = get;
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/@babel/helpers/package.json b/assets/node_modules/@babel/helpers/package.json
deleted file mode 100644
index d401e34..0000000
--- a/assets/node_modules/@babel/helpers/package.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "@babel/helpers",
- "version": "7.8.4",
- "description": "Collection of helper functions used by Babel transforms.",
- "author": "Sebastian McKenzie <sebmck@gmail.com>",
- "homepage": "https://babeljs.io/",
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- },
- "repository": "https://github.com/babel/babel/tree/master/packages/babel-helpers",
- "main": "lib/index.js",
- "dependencies": {
- "@babel/template": "^7.8.3",
- "@babel/traverse": "^7.8.4",
- "@babel/types": "^7.8.3"
- },
- "devDependencies": {
- "@babel/helper-plugin-test-runner": "^7.8.3"
- },
- "gitHead": "5c2e6bc07fed3d28801d93168622c99ae622653a"
-}
diff --git a/assets/node_modules/@babel/highlight/LICENSE b/assets/node_modules/@babel/highlight/LICENSE
deleted file mode 100644
index f31575e..0000000
--- a/assets/node_modules/@babel/highlight/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-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/assets/node_modules/@babel/highlight/README.md b/assets/node_modules/@babel/highlight/README.md
deleted file mode 100644
index 72dae60..0000000
--- a/assets/node_modules/@babel/highlight/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# @babel/highlight
-
-> Syntax highlight JavaScript strings for output in terminals.
-
-See our website [@babel/highlight](https://babeljs.io/docs/en/next/babel-highlight.html) 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/assets/node_modules/@babel/highlight/lib/index.js b/assets/node_modules/@babel/highlight/lib/index.js
deleted file mode 100644
index bf27574..0000000
--- a/assets/node_modules/@babel/highlight/lib/index.js
+++ /dev/null
@@ -1,107 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.shouldHighlight = shouldHighlight;
-exports.getChalk = getChalk;
-exports.default = highlight;
-
-var _jsTokens = _interopRequireWildcard(require("js-tokens"));
-
-var _esutils = _interopRequireDefault(require("esutils"));
-
-var _chalk = _interopRequireDefault(require("chalk"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function getDefs(chalk) {
- return {
- keyword: chalk.cyan,
- capitalized: chalk.yellow,
- jsx_tag: 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 JSX_TAG = /^[a-z][\w-]*$/i;
-const BRACKET = /^[()[\]{}]$/;
-
-function getTokenType(match) {
- const [offset, text] = match.slice(-2);
- const token = (0, _jsTokens.matchToToken)(match);
-
- if (token.type === "name") {
- if (_esutils.default.keyword.isReservedWordES6(token.value)) {
- return "keyword";
- }
-
- if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == "</")) {
- return "jsx_tag";
- }
-
- 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;
-}
-
-function highlightTokens(defs, text) {
- return text.replace(_jsTokens.default, function (...args) {
- const type = getTokenType(args);
- const colorize = defs[type];
-
- if (colorize) {
- return args[0].split(NEWLINE).map(str => colorize(str)).join("\n");
- } else {
- return args[0];
- }
- });
-}
-
-function shouldHighlight(options) {
- return _chalk.default.supportsColor || options.forceColor;
-}
-
-function getChalk(options) {
- let chalk = _chalk.default;
-
- if (options.forceColor) {
- chalk = new _chalk.default.constructor({
- enabled: true,
- level: 1
- });
- }
-
- return 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/assets/node_modules/@babel/highlight/package.json b/assets/node_modules/@babel/highlight/package.json
deleted file mode 100644
index dacda3b..0000000
--- a/assets/node_modules/@babel/highlight/package.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "@babel/highlight",
- "version": "7.8.3",
- "description": "Syntax highlight JavaScript strings for output in terminals.",
- "author": "suchipi <me@suchipi.com>",
- "homepage": "https://babeljs.io/",
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- },
- "repository": "https://github.com/babel/babel/tree/master/packages/babel-highlight",
- "main": "lib/index.js",
- "dependencies": {
- "chalk": "^2.0.0",
- "esutils": "^2.0.2",
- "js-tokens": "^4.0.0"
- },
- "devDependencies": {
- "strip-ansi": "^4.0.0"
- },
- "gitHead": "a7620bd266ae1345975767bbc7abf09034437017"
-}
diff --git a/assets/node_modules/@babel/parser/CHANGELOG.md b/assets/node_modules/@babel/parser/CHANGELOG.md
deleted file mode 100644
index 8a43406..0000000
--- a/assets/node_modules/@babel/parser/CHANGELOG.md
+++ /dev/null
@@ -1,1073 +0,0 @@
-# Changelog
-
-> **Tags:**
-> - :boom: [Breaking Change]
-> - :eyeglasses: [Spec Compliance]
-> - :rocket: [New Feature]
-> - :bug: [Bug Fix]
-> - :memo: [Documentation]
-> - :house: [Internal]
-> - :nail_care: [Polish]
-
-> Semver Policy: https://github.com/babel/babel/tree/master/packages/babel-parser#semver
-
-_Note: Gaps between patch versions are faulty, broken or test releases._
-
-See the [Babel Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md) for the pre-6.8.0 version Changelog.
-
-## 6.17.1 (2017-05-10)
-
-### :bug: Bug Fix
- * Fix typo in flow spread operator error (Brian Ng)
- * Fixed invalid number literal parsing ([#473](https://github.com/babel/babylon/pull/473)) (Alex Kuzmenko)
- * Fix number parser ([#433](https://github.com/babel/babylon/pull/433)) (Alex Kuzmenko)
- * Ensure non pattern shorthand props are checked for reserved words ([#479](https://github.com/babel/babylon/pull/479)) (Brian Ng)
- * Remove jsx context when parsing arrow functions ([#475](https://github.com/babel/babylon/pull/475)) (Brian Ng)
- * Allow super in class properties ([#499](https://github.com/babel/babylon/pull/499)) (Brian Ng)
- * Allow flow class field to be named constructor ([#510](https://github.com/babel/babylon/pull/510)) (Brian Ng)
-
-## 6.17.0 (2017-04-20)
-
-### :bug: Bug Fix
- * Cherry-pick #418 to 6.x ([#476](https://github.com/babel/babylon/pull/476)) (Sebastian McKenzie)
- * Add support for invalid escapes in tagged templates ([#274](https://github.com/babel/babylon/pull/274)) (Kevin Gibbons)
- * Throw error if new.target is used outside of a function ([#402](https://github.com/babel/babylon/pull/402)) (Brian Ng)
- * Fix parsing of class properties ([#351](https://github.com/babel/babylon/pull/351)) (Kevin Gibbons)
- * Fix parsing yield with dynamicImport ([#383](https://github.com/babel/babylon/pull/383)) (Brian Ng)
- * Ensure consistent start args for parseParenItem ([#386](https://github.com/babel/babylon/pull/386)) (Brian Ng)
-
-## 7.0.0-beta.8 (2017-04-04)
-
-### New Feature
-* Add support for flow type spread (#418) (Conrad Buck)
-* Allow statics in flow interfaces (#427) (Brian Ng)
-
-### Bug Fix
-* Fix predicate attachment to match flow parser (#428) (Brian Ng)
-* Add extra.raw back to JSXText and JSXAttribute (#344) (Alex Rattray)
-* Fix rest parameters with array and objects (#424) (Brian Ng)
-* Fix number parser (#433) (Alex Kuzmenko)
-
-### Docs
-* Fix CONTRIBUTING.md [skip ci] (#432) (Alex Kuzmenko)
-
-### Internal
-* Use babel-register script when running babel smoke tests (#442) (Brian Ng)
-
-## 7.0.0-beta.7 (2017-03-22)
-
-### Spec Compliance
-* Remove babylon plugin for template revision since it's stage-4 (#426) (Henry Zhu)
-
-### Bug Fix
-
-* Fix push-pop logic in flow (#405) (Daniel Tschinder)
-
-## 7.0.0-beta.6 (2017-03-21)
-
-### New Feature
-* Add support for invalid escapes in tagged templates (#274) (Kevin Gibbons)
-
-### Polish
-* Improves error message when super is called outside of constructor (#408) (Arshabh Kumar Agarwal)
-
-### Docs
-
-* [7.0] Moved value field in spec from ObjectMember to ObjectProperty as ObjectMethod's don't have it (#415) [skip ci] (James Browning)
-
-## 7.0.0-beta.5 (2017-03-21)
-
-### Bug Fix
-* Throw error if new.target is used outside of a function (#402) (Brian Ng)
-* Fix parsing of class properties (#351) (Kevin Gibbons)
-
-### Other
- * Test runner: Detect extra property in 'actual' but not in 'expected'. (#407) (Andy)
- * Optimize travis builds (#419) (Daniel Tschinder)
- * Update codecov to 2.0 (#412) (Daniel Tschinder)
- * Fix spec for ClassMethod: It doesn't have a function, it *is* a function. (#406) [skip ci] (Andy)
- * Changed Non-existent RestPattern to RestElement which is what is actually parsed (#409) [skip ci] (James Browning)
- * Upgrade flow to 0.41 (Daniel Tschinder)
- * Fix watch command (#403) (Brian Ng)
- * Update yarn lock (Daniel Tschinder)
- * Fix watch command (#403) (Brian Ng)
- * chore(package): update flow-bin to version 0.41.0 (#395) (greenkeeper[bot])
- * Add estree test for correct order of directives (Daniel Tschinder)
- * Add DoExpression to spec (#364) (Alex Kuzmenko)
- * Mention cloning of repository in CONTRIBUTING.md (#391) [skip ci] (Sumedh Nimkarde)
- * Explain how to run only one test (#389) [skip ci] (Aaron Ang)
-
- ## 7.0.0-beta.4 (2017-03-01)
-
-* Don't consume async when checking for async func decl (#377) (Brian Ng)
-* add `ranges` option [skip ci] (Henry Zhu)
-* Don't parse class properties without initializers when classProperties is disabled and Flow is enabled (#300) (Andrew Levine)
-
-## 7.0.0-beta.3 (2017-02-28)
-
-- [7.0] Change RestProperty/SpreadProperty to RestElement/SpreadElement (#384)
-- Merge changes from 6.x
-
-## 7.0.0-beta.2 (2017-02-20)
-
-- estree: correctly change literals in all cases (#368) (Daniel Tschinder)
-
-## 7.0.0-beta.1 (2017-02-20)
-
-- Fix negative number literal typeannotations (#366) (Daniel Tschinder)
-- Update contributing with more test info [skip ci] (#355) (Brian Ng)
-
-## 7.0.0-beta.0 (2017-02-15)
-
-- Reintroduce Variance node (#333) (Daniel Tschinder)
-- Rename NumericLiteralTypeAnnotation to NumberLiteralTypeAnnotation (#332) (Charles Pick)
-- [7.0] Remove ForAwaitStatement, add await flag to ForOfStatement (#349) (Brandon Dail)
-- chore(package): update ava to version 0.18.0 (#345) (greenkeeper[bot])
-- chore(package): update babel-plugin-istanbul to version 4.0.0 (#350) (greenkeeper[bot])
-- Change location of ObjectTypeIndexer to match flow (#228) (Daniel Tschinder)
-- Rename flow AST Type ExistentialTypeParam to ExistsTypeAnnotation (#322) (Toru Kobayashi)
-- Revert "Temporary rollback for erroring on trailing comma with spread (#154)" (#290) (Daniel Tschinder)
-- Remove classConstructorCall plugin (#291) (Brian Ng)
-- Update yarn.lock (Daniel Tschinder)
-- Update cross-env to 3.x (Daniel Tschinder)
-- [7.0] Remove node 0.10, 0.12 and 5 from Travis (#284) (Sergey Rubanov)
-- Remove `String.fromCodePoint` shim (#279) (Mathias Bynens)
-
-## 6.16.1 (2017-02-23)
-
-### :bug: Regression
-
-- Revert "Fix export default async function to be FunctionDeclaration" ([#375](https://github.com/babel/babylon/pull/375))
-
-Need to modify Babel for this AST node change, so moving to 7.0.
-
-- Revert "Don't parse class properties without initializers when classProperties plugin is disabled, and Flow is enabled" ([#376](https://github.com/babel/babylon/pull/376))
-
-[react-native](https://github.com/facebook/react-native/issues/12542) broke with this so we reverted.
-
-## 6.16.0 (2017-02-23)
-
-### :rocket: New Feature
-
-***ESTree*** compatibility as plugin ([#277](https://github.com/babel/babylon/pull/277)) (Daniel Tschinder)
-
-We finally introduce a new compatibility layer for ESTree. To put babylon into ESTree-compatible mode the new plugin `estree` can be enabled. In this mode the parser will output an AST that is compliant to the specs of [ESTree](https://github.com/estree/estree/)
-
-We highly recommend everyone who uses babylon outside of babel to use this plugin. This will make it much easier for users to switch between different ESTree-compatible parsers. We so far tested several projects with different parsers and exchanged their parser to babylon and in nearly all cases it worked out of the box. Some other estree-compatible parsers include `acorn`, `esprima`, `espree`, `flow-parser`, etc.
-
-To enable `estree` mode simply add the plugin in the config:
-```json
-{
- "plugins": [ "estree" ]
-}
-```
-
-If you want to migrate your project from non-ESTree mode to ESTree, have a look at our [Readme](https://github.com/babel/babylon/#output), where all deviations are mentioned.
-
-Add a parseExpression public method ([#213](https://github.com/babel/babylon/pull/213)) (jeromew)
-
-Babylon exports a new function to parse a single expression
-
-```js
-import { parseExpression } from 'babylon';
-
-const ast = parseExpression('x || y && z', options);
-```
-
-The returned AST will only consist of the expression. The options are the same as for `parse()`
-
-Add startLine option ([#346](https://github.com/babel/babylon/pull/346)) (Raphael Mu)
-
-A new option was added to babylon allowing to change the initial linenumber for the first line which is usually `1`.
-Changing this for example to `100` will make line `1` of the input source to be marked as line `100`, line `2` as `101`, line `3` as `102`, ...
-
-Function predicate declaration ([#103](https://github.com/babel/babylon/pull/103)) (Panagiotis Vekris)
-
-Added support for function predicates which flow introduced in version 0.33.0
-
-```js
-declare function is_number(x: mixed): boolean %checks(typeof x === "number");
-```
-
-Allow imports in declare module ([#315](https://github.com/babel/babylon/pull/315)) (Daniel Tschinder)
-
-Added support for imports within module declarations which flow introduced in version 0.37.0
-
-```js
-declare module "C" {
- import type { DT } from "D";
- declare export type CT = { D: DT };
-}
-```
-
-### :eyeglasses: Spec Compliance
-
-Forbid semicolons after decorators in classes ([#352](https://github.com/babel/babylon/pull/352)) (Kevin Gibbons)
-
-This example now correctly throws an error when there is a semicolon after the decorator:
-
-```js
-class A {
-@a;
-foo(){}
-}
-```
-
-Keywords are not allowed as local specifier ([#307](https://github.com/babel/babylon/pull/307)) (Daniel Tschinder)
-
-Using keywords in imports is not allowed anymore:
-
-```js
-import { default } from "foo";
-import { a as debugger } from "foo";
-```
-
-Do not allow overwritting of primitive types ([#314](https://github.com/babel/babylon/pull/314)) (Daniel Tschinder)
-
-In flow it is now forbidden to overwrite the primitive types `"any"`, `"mixed"`, `"empty"`, `"bool"`, `"boolean"`, `"number"`, `"string"`, `"void"` and `"null"` with your own type declaration.
-
-Disallow import type { type a } from … ([#305](https://github.com/babel/babylon/pull/305)) (Daniel Tschinder)
-
-The following code now correctly throws an error
-
-```js
-import type { type a } from "foo";
-```
-
-Don't parse class properties without initializers when classProperties is disabled and Flow is enabled ([#300](https://github.com/babel/babylon/pull/300)) (Andrew Levine)
-
-Ensure that you enable the `classProperties` plugin in order to enable correct parsing of class properties. Prior to this version it was possible to parse them by enabling the `flow` plugin but this was not intended the behaviour.
-
-If you enable the flow plugin you can only define the type of the class properties, but not initialize them.
-
-Fix export default async function to be FunctionDeclaration ([#324](https://github.com/babel/babylon/pull/324)) (Daniel Tschinder)
-
-Parsing the following code now returns a `FunctionDeclaration` AST node instead of `FunctionExpression`.
-
-```js
-export default async function bar() {};
-```
-
-### :nail_care: Polish
-
-Improve error message on attempt to destructure named import ([#288](https://github.com/babel/babylon/pull/288)) (Brian Ng)
-
-### :bug: Bug Fix
-
-Fix negative number literal typeannotations ([#366](https://github.com/babel/babylon/pull/366)) (Daniel Tschinder)
-
-Ensure takeDecorators is called on exported class ([#358](https://github.com/babel/babylon/pull/358)) (Brian Ng)
-
-ESTree: correctly change literals in all cases ([#368](https://github.com/babel/babylon/pull/368)) (Daniel Tschinder)
-
-Correctly convert RestProperty to Assignable ([#339](https://github.com/babel/babylon/pull/339)) (Daniel Tschinder)
-
-Fix #321 by allowing question marks in type params ([#338](https://github.com/babel/babylon/pull/338)) (Daniel Tschinder)
-
-Fix #336 by correctly setting arrow-param ([#337](https://github.com/babel/babylon/pull/337)) (Daniel Tschinder)
-
-Fix parse error when destructuring `set` with default value ([#317](https://github.com/babel/babylon/pull/317)) (Brian Ng)
-
-Fix ObjectTypeCallProperty static ([#298](https://github.com/babel/babylon/pull/298)) (Dan Harper)
-
-
-### :house: Internal
-
-Fix generator-method-with-computed-name spec ([#360](https://github.com/babel/babylon/pull/360)) (Alex Rattray)
-
-Fix flow type-parameter-declaration test with unintended semantic ([#361](https://github.com/babel/babylon/pull/361)) (Alex Rattray)
-
-Cleanup and splitup parser functions ([#295](https://github.com/babel/babylon/pull/295)) (Daniel Tschinder)
-
-chore(package): update flow-bin to version 0.38.0 ([#313](https://github.com/babel/babylon/pull/313)) (greenkeeper[bot])
-
-Call inner function instead of 1:1 copy to plugin ([#294](https://github.com/babel/babylon/pull/294)) (Daniel Tschinder)
-
-Update eslint-config-babel to the latest version 🚀 ([#299](https://github.com/babel/babylon/pull/299)) (greenkeeper[bot])
-
-Update eslint-config-babel to the latest version 🚀 ([#293](https://github.com/babel/babylon/pull/293)) (greenkeeper[bot])
-
-devDeps: remove eslint-plugin-babel ([#292](https://github.com/babel/babylon/pull/292)) (Kai Cataldo)
-
-Correct indent eslint rule config ([#276](https://github.com/babel/babylon/pull/276)) (Daniel Tschinder)
-
-Fail tests that have expected.json and throws-option ([#285](https://github.com/babel/babylon/pull/285)) (Daniel Tschinder)
-
-### :memo: Documentation
-
-Update contributing with more test info [skip ci] ([#355](https://github.com/babel/babylon/pull/355)) (Brian Ng)
-
-Update API documentation ([#330](https://github.com/babel/babylon/pull/330)) (Timothy Gu)
-
-Added keywords to package.json ([#323](https://github.com/babel/babylon/pull/323)) (Dmytro)
-
-AST spec: fix casing of `RegExpLiteral` ([#318](https://github.com/babel/babylon/pull/318)) (Mathias Bynens)
-
-## 6.15.0 (2017-01-10)
-
-### :eyeglasses: Spec Compliance
-
-Add support for Flow shorthand import type ([#267](https://github.com/babel/babylon/pull/267)) (Jeff Morrison)
-
-This change implements flows new shorthand import syntax
-and where previously you had to write this code:
-
-```js
-import {someValue} from "blah";
-import type {someType} from "blah";
-import typeof {someOtherValue} from "blah";
-```
-
-you can now write it like this:
-
-```js
-import {
- someValue,
- type someType,
- typeof someOtherValue,
-} from "blah";
-```
-
-For more information look at [this](https://github.com/facebook/flow/pull/2890) pull request.
-
-flow: allow leading pipes in all positions ([#256](https://github.com/babel/babylon/pull/256)) (Vladimir Kurchatkin)
-
-This change now allows a leading pipe everywhere types can be used:
-```js
-var f = (x): | 1 | 2 => 1;
-```
-
-Throw error when exporting non-declaration ([#241](https://github.com/babel/babylon/pull/241)) (Kai Cataldo)
-
-Previously babylon parsed the following exports, although they are not valid:
-```js
-export typeof foo;
-export new Foo();
-export function() {};
-export for (;;);
-export while(foo);
-```
-
-### :bug: Bug Fix
-
-Don't set inType flag when parsing property names ([#266](https://github.com/babel/babylon/pull/266)) (Vladimir Kurchatkin)
-
-This fixes parsing of this case:
-
-```js
-const map = {
- [age <= 17] : 'Too young'
-};
-```
-
-Fix source location for JSXEmptyExpression nodes (fixes #248) ([#249](https://github.com/babel/babylon/pull/249)) (James Long)
-
-The following case produced an invalid AST
-```js
-<div>{/* foo */}</div>
-```
-
-Use fromCodePoint to convert high value unicode entities ([#243](https://github.com/babel/babylon/pull/243)) (Ryan Duffy)
-
-When high value unicode entities (e.g. 💩) were used in the input source code they are now correctly encoded in the resulting AST.
-
-Rename folder to avoid Windows-illegal characters ([#281](https://github.com/babel/babylon/pull/281)) (Ryan Plant)
-
-Allow this.state.clone() when parsing decorators ([#262](https://github.com/babel/babylon/pull/262)) (Alex Rattray)
-
-### :house: Internal
-
-User external-helpers ([#254](https://github.com/babel/babylon/pull/254)) (Daniel Tschinder)
-
-Add watch script for dev ([#234](https://github.com/babel/babylon/pull/234)) (Kai Cataldo)
-
-Freeze current plugins list for "*" option, and remove from README.md ([#245](https://github.com/babel/babylon/pull/245)) (Andrew Levine)
-
-Prepare tests for multiple fixture runners. ([#240](https://github.com/babel/babylon/pull/240)) (Daniel Tschinder)
-
-Add some test coverage for decorators stage-0 plugin ([#250](https://github.com/babel/babylon/pull/250)) (Andrew Levine)
-
-Refactor tokenizer types file ([#263](https://github.com/babel/babylon/pull/263)) (Sven SAULEAU)
-
-Update eslint-config-babel to the latest version 🚀 ([#273](https://github.com/babel/babylon/pull/273)) (greenkeeper[bot])
-
-chore(package): update rollup to version 0.41.0 ([#272](https://github.com/babel/babylon/pull/272)) (greenkeeper[bot])
-
-chore(package): update flow-bin to version 0.37.0 ([#255](https://github.com/babel/babylon/pull/255)) (greenkeeper[bot])
-
-## 6.14.1 (2016-11-17)
-
-### :bug: Bug Fix
-
-Allow `"plugins": ["*"]` ([#229](https://github.com/babel/babylon/pull/229)) (Daniel Tschinder)
-
-```js
-{
- "plugins": ["*"]
-}
-```
-
-Will include all parser plugins instead of specifying each one individually. Useful for tools like babel-eslint, jscodeshift, and ast-explorer.
-
-## 6.14.0 (2016-11-16)
-
-### :eyeglasses: Spec Compliance
-
-Throw error for reserved words `enum` and `await` ([#195](https://github.com/babel/babylon/pull/195)) (Kai Cataldo)
-
-[11.6.2.2 Future Reserved Words](http://www.ecma-international.org/ecma-262/6.0/#sec-future-reserved-words)
-
-Babylon will throw for more reserved words such as `enum` or `await` (in strict mode).
-
-```
-class enum {} // throws
-class await {} // throws in strict mode (module)
-```
-
-Optional names for function types and object type indexers ([#197](https://github.com/babel/babylon/pull/197)) (Gabe Levi)
-
-So where you used to have to write
-
-```js
-type A = (x: string, y: boolean) => number;
-type B = (z: string) => number;
-type C = { [key: string]: number };
-```
-
-you can now write (with flow 0.34.0)
-
-```js
-type A = (string, boolean) => number;
-type B = string => number;
-type C = { [string]: number };
-```
-
-Parse flow nested array type annotations like `number[][]` ([#219](https://github.com/babel/babylon/pull/219)) (Bernhard Häussner)
-
-Supports these form now of specifying array types:
-
-```js
-var a: number[][][][];
-var b: string[][];
-```
-
-### :bug: Bug Fix
-
-Correctly eat semicolon at the end of `DelcareModuleExports` ([#223](https://github.com/babel/babylon/pull/223)) (Daniel Tschinder)
-
-```
-declare module "foo" { declare module.exports: number }
-declare module "foo" { declare module.exports: number; } // also allowed now
-```
-
-### :house: Internal
-
- * Count Babel tests towards Babylon code coverage ([#182](https://github.com/babel/babylon/pull/182)) (Moti Zilberman)
- * Fix strange line endings ([#214](https://github.com/babel/babylon/pull/214)) (Thomas Grainger)
- * Add node 7 (Daniel Tschinder)
- * chore(package): update flow-bin to version 0.34.0 ([#204](https://github.com/babel/babylon/pull/204)) (Greenkeeper)
-
-## v6.13.1 (2016-10-26)
-
-### :nail_care: Polish
-
-- Use rollup for bundling to speed up startup time ([#190](https://github.com/babel/babylon/pull/190)) ([@drewml](https://github.com/DrewML))
-
-```js
-const babylon = require('babylon');
-const ast = babylon.parse('var foo = "lol";');
-```
-
-With that test case, there was a ~95ms savings by removing the need for node to build/traverse the dependency graph.
-
-**Without bundling**
-![image](https://cloud.githubusercontent.com/assets/5233399/19420264/3133497e-93ad-11e6-9a6a-2da59c4f5c13.png)
-
-**With bundling**
-![image](https://cloud.githubusercontent.com/assets/5233399/19420267/388f556e-93ad-11e6-813e-7c5c396be322.png)
-
-- add clean command [skip ci] ([#201](https://github.com/babel/babylon/pull/201)) (Henry Zhu)
-- add ForAwaitStatement (async generator already added) [skip ci] ([#196](https://github.com/babel/babylon/pull/196)) (Henry Zhu)
-
-## v6.13.0 (2016-10-21)
-
-### :eyeglasses: Spec Compliance
-
-Property variance type annotations for Flow plugin ([#161](https://github.com/babel/babylon/pull/161)) (Sam Goldman)
-
-> See https://flowtype.org/docs/variance.html for more information
-
-```js
-type T = { +p: T };
-interface T { -p: T };
-declare class T { +[k:K]: V };
-class T { -[k:K]: V };
-class C2 { +p: T = e };
-```
-
-Raise error on duplicate definition of __proto__ ([#183](https://github.com/babel/babylon/pull/183)) (Moti Zilberman)
-
-```js
-({ __proto__: 1, __proto__: 2 }) // Throws an error now
-```
-
-### :bug: Bug Fix
-
-Flow: Allow class properties to be named `static` ([#184](https://github.com/babel/babylon/pull/184)) (Moti Zilberman)
-
-```js
-declare class A {
- static: T;
-}
-```
-
-Allow "async" as identifier for object literal property shorthand ([#187](https://github.com/babel/babylon/pull/187)) (Andrew Levine)
-
-```js
-var foo = { async, bar };
-```
-
-### :nail_care: Polish
-
-Fix flowtype and add inType to state ([#189](https://github.com/babel/babylon/pull/189)) (Daniel Tschinder)
-
-> This improves the performance slightly (because of hidden classes)
-
-### :house: Internal
-
-Fix .gitattributes line ending setting ([#191](https://github.com/babel/babylon/pull/191)) (Moti Zilberman)
-
-Increase test coverage ([#175](https://github.com/babel/babylon/pull/175) (Moti Zilberman)
-
-Readd missin .eslinignore for IDEs (Daniel Tschinder)
-
-Error on missing expected.json fixture in CI ([#188](https://github.com/babel/babylon/pull/188)) (Moti Zilberman)
-
-Add .gitattributes and .editorconfig for LF line endings ([#179](https://github.com/babel/babylon/pull/179)) (Moti Zilberman)
-
-Fixes two tests that are failing after the merge of #172 ([#177](https://github.com/babel/babylon/pull/177)) (Moti Zilberman)
-
-## v6.12.0 (2016-10-14)
-
-### :eyeglasses: Spec Compliance
-
-Implement import() syntax ([#163](https://github.com/babel/babylon/pull/163)) (Jordan Gensler)
-
-#### Dynamic Import
-
-- Proposal Repo: https://github.com/domenic/proposal-dynamic-import
-- Championed by [@domenic](https://github.com/domenic)
-- stage-2
-- [sept-28 tc39 notes](https://github.com/rwaldron/tc39-notes/blob/master/es7/2016-09/sept-28.md#113a-import)
-
-> This repository contains a proposal for adding a "function-like" import() module loading syntactic form to JavaScript
-
-```js
-import(`./section-modules/${link.dataset.entryModule}.js`)
-.then(module => {
- module.loadPageInto(main);
-})
-```
-
-Add EmptyTypeAnnotation ([#171](https://github.com/babel/babylon/pull/171)) (Sam Goldman)
-
-#### EmptyTypeAnnotation
-
-Just wasn't covered before.
-
-```js
-type T = empty;
-```
-
-### :bug: Bug Fix
-
-Fix crash when exporting with destructuring and sparse array ([#170](https://github.com/babel/babylon/pull/170)) (Jeroen Engels)
-
-```js
-// was failing due to sparse array
-export const { foo: [ ,, qux7 ] } = bar;
-```
-
-Allow keyword in Flow object declaration property names with type parameters ([#146](https://github.com/babel/babylon/pull/146)) (Dan Harper)
-
-```js
-declare class X {
- foobar<T>(): void;
- static foobar<T>(): void;
-}
-```
-
-Allow keyword in object/class property names with Flow type parameters ([#145](https://github.com/babel/babylon/pull/145)) (Dan Harper)
-
-```js
-class Foo {
- delete<T>(item: T): T {
- return item;
- }
-}
-```
-
-Allow typeAnnotations for yield expressions ([#174](https://github.com/babel/babylon/pull/174))) (Daniel Tschinder)
-
-```js
-function *foo() {
- const x = (yield 5: any);
-}
-```
-
-### :nail_care: Polish
-
-Annotate more errors with expected token ([#172](https://github.com/babel/babylon/pull/172))) (Moti Zilberman)
-
-```js
-// Unexpected token, expected ; (1:6)
-{ set 1 }
-```
-
-### :house: Internal
-
-Remove kcheck ([#173](https://github.com/babel/babylon/pull/173))) (Daniel Tschinder)
-
-Also run flow, linting, babel tests on separate instances (add back node 0.10)
-
-## v6.11.6 (2016-10-12)
-
-### :bug: Bug Fix/Regression
-
-Fix crash when exporting with destructuring and sparse array ([#170](https://github.com/babel/babylon/pull/170)) (Jeroen Engels)
-
-```js
-// was failing with `Cannot read property 'type' of null` because of null identifiers
-export const { foo: [ ,, qux7 ] } = bar;
-```
-
-## v6.11.5 (2016-10-12)
-
-### :eyeglasses: Spec Compliance
-
-Fix: Check for duplicate named exports in exported destructuring assignments ([#144](https://github.com/babel/babylon/pull/144)) (Kai Cataldo)
-
-```js
-// `foo` has already been exported. Exported identifiers must be unique. (2:20)
-export function foo() {};
-export const { a: [{foo}] } = bar;
-```
-
-Fix: Check for duplicate named exports in exported rest elements/properties ([#164](https://github.com/babel/babylon/pull/164)) (Kai Cataldo)
-
-```js
-// `foo` has already been exported. Exported identifiers must be unique. (2:22)
-export const foo = 1;
-export const [bar, ...foo] = baz;
-```
-
-### :bug: Bug Fix
-
-Fix: Allow identifier `async` for default param in arrow expression ([#165](https://github.com/babel/babylon/pull/165)) (Kai Cataldo)
-
-```js
-// this is ok now
-const test = ({async = true}) => {};
-```
-
-### :nail_care: Polish
-
-Babylon will now print out the token it's expecting if there's a `SyntaxError` ([#150](https://github.com/babel/babylon/pull/150)) (Daniel Tschinder)
-
-```bash
-# So in the case of a missing ending curly (`}`)
-Module build failed: SyntaxError: Unexpected token, expected } (30:0)
- 28 | }
- 29 |
-> 30 |
- | ^
-```
-
-## v6.11.4 (2016-10-03)
-
-Temporary rollback for erroring on trailing comma with spread (#154) (Henry Zhu)
-
-## v6.11.3 (2016-10-01)
-
-### :eyeglasses: Spec Compliance
-
-Add static errors for object rest (#149) ([@danez](https://github.com/danez))
-
-> https://github.com/sebmarkbage/ecmascript-rest-spread
-
-Object rest copies the *rest* of properties from the right hand side `obj` starting from the left to right.
-
-```js
-let { x, y, ...z } = { x: 1, y: 2, z: 3 };
-// x = 1
-// y = 2
-// z = { z: 3 }
-```
-
-#### New Syntax Errors:
-
-**SyntaxError**: The rest element has to be the last element when destructuring (1:10)
-```bash
-> 1 | let { ...x, y, z } = { x: 1, y: 2, z: 3};
- | ^
-# Previous behavior:
-# x = { x: 1, y: 2, z: 3 }
-# y = 2
-# z = 3
-```
-
-Before, this was just a more verbose way of shallow copying `obj` since it doesn't actually do what you think.
-
-**SyntaxError**: Cannot have multiple rest elements when destructuring (1:13)
-
-```bash
-> 1 | let { x, ...y, ...z } = { x: 1, y: 2, z: 3};
- | ^
-# Previous behavior:
-# x = 1
-# y = { y: 2, z: 3 }
-# z = { y: 2, z: 3 }
-```
-
-Before y and z would just be the same value anyway so there is no reason to need to have both.
-
-**SyntaxError**: A trailing comma is not permitted after the rest element (1:16)
-
-```js
-let { x, y, ...z, } = obj;
-```
-
-The rationale for this is that the use case for trailing comma is that you can add something at the end without affecting the line above. Since a RestProperty always has to be the last property it doesn't make sense.
-
----
-
-get / set are valid property names in default assignment (#142) ([@jezell](https://github.com/jezell))
-
-```js
-// valid
-function something({ set = null, get = null }) {}
-```
-
-## v6.11.2 (2016-09-23)
-
-### Bug Fix
-
-- [#139](https://github.com/babel/babylon/issues/139) Don't do the duplicate check if not an identifier (#140) @hzoo
-
-```js
-// regression with duplicate export check
-SyntaxError: ./typography.js: `undefined` has already been exported. Exported identifiers must be unique. (22:13)
- 20 |
- 21 | export const { rhythm } = typography;
-> 22 | export const { TypographyStyle } = typography
-```
-
-Bail out for now, and make a change to account for destructuring in the next release.
-
-## 6.11.1 (2016-09-22)
-
-### Bug Fix
-- [#137](https://github.com/babel/babylon/pull/137) - Fix a regression with duplicate exports - it was erroring on all keys in `Object.prototype`. @danez
-
-```javascript
-export toString from './toString';
-```
-
-```bash
-`toString` has already been exported. Exported identifiers must be unique. (1:7)
-> 1 | export toString from './toString';
- | ^
- 2 |
-```
-
-## 6.11.0 (2016-09-22)
-
-### Spec Compliance (will break CI)
-
-- Disallow duplicate named exports ([#107](https://github.com/babel/babylon/pull/107)) @kaicataldo
-
-```js
-// Only one default export allowed per module. (2:9)
-export default function() {};
-export { foo as default };
-
-// Only one default export allowed per module. (2:0)
-export default {};
-export default function() {};
-
-// `Foo` has already been exported. Exported identifiers must be unique. (2:0)
-export { Foo };
-export class Foo {};
-```
-
-### New Feature (Syntax)
-
-- Add support for computed class property names ([#121](https://github.com/babel/babylon/pull/121)) @motiz88
-
-```js
-// AST
-interface ClassProperty <: Node {
- type: "ClassProperty";
- key: Identifier;
- value: Expression;
- computed: boolean; // added
-}
-```
-
-```js
-// with "plugins": ["classProperties"]
-class Foo {
- [x]
- ['y']
-}
-
-class Bar {
- [p]
- [m] () {}
-}
- ```
-
-### Bug Fix
-
-- Fix `static` property falling through in the declare class Flow AST ([#135](https://github.com/babel/babylon/pull/135)) @danharper
-
-```js
-declare class X {
- a: number;
- static b: number; // static
- c: number; // this was being marked as static in the AST as well
-}
-```
-
-### Polish
-
-- Rephrase "assigning/binding to rvalue" errors to include context ([#119](https://github.com/babel/babylon/pull/119)) @motiz88
-
-```js
-// Used to error with:
-// SyntaxError: Assigning to rvalue (1:0)
-
-// Now:
-// Invalid left-hand side in assignment expression (1:0)
-3 = 4
-
-// Invalid left-hand side in for-in statement (1:5)
-for (+i in {});
-```
-
-### Internal
-
-- Fix call to `this.parseMaybeAssign` with correct arguments ([#133](https://github.com/babel/babylon/pull/133)) @danez
-- Add semver note to changelog ([#131](https://github.com/babel/babylon/pull/131)) @hzoo
-
-## 6.10.0 (2016-09-19)
-
-> We plan to include some spec compliance bugs in patch versions. An example was the multiple default exports issue.
-
-### Spec Compliance
-
-* Implement ES2016 check for simple parameter list in strict mode ([#106](https://github.com/babel/babylon/pull/106)) (Timothy Gu)
-
-> It is a Syntax Error if ContainsUseStrict of FunctionBody is true and IsSimpleParameterList of FormalParameters is false. https://tc39.github.io/ecma262/2016/#sec-function-definitions-static-semantics-early-errors
-
-More Context: [tc39-notes](https://github.com/rwaldron/tc39-notes/blob/master/es7/2015-07/july-29.md#611-the-scope-of-use-strict-with-respect-to-destructuring-in-parameter-lists)
-
-For example:
-
-```js
-// this errors because it uses destructuring and default parameters
-// in a function with a "use strict" directive
-function a([ option1, option2 ] = []) {
- "use strict";
-}
- ```
-
-The solution would be to use a top level "use strict" or to remove the destructuring or default parameters when using a function + "use strict" or to.
-
-### New Feature
-
-* Exact object type annotations for Flow plugin ([#104](https://github.com/babel/babylon/pull/104)) (Basil Hosmer)
-
-Added to flow in https://github.com/facebook/flow/commit/c710c40aa2a115435098d6c0dfeaadb023cd39b8
-
-Looks like:
-
-```js
-var a : {| x: number, y: string |} = { x: 0, y: 'foo' };
-```
-
-### Bug Fixes
-
-* Include `typeParameter` location in `ArrowFunctionExpression` ([#126](https://github.com/babel/babylon/pull/126)) (Daniel Tschinder)
-* Error on invalid flow type annotation with default assignment ([#122](https://github.com/babel/babylon/pull/122)) (Dan Harper)
-* Fix Flow return types on arrow functions ([#124](https://github.com/babel/babylon/pull/124)) (Dan Harper)
-
-### Misc
-
-* Add tests for export extensions ([#127](https://github.com/babel/babylon/pull/127)) (Daniel Tschinder)
-* Fix Contributing guidelines [skip ci] (Daniel Tschinder)
-
-## 6.9.2 (2016-09-09)
-
-The only change is to remove the `babel-runtime` dependency by compiling with Babel's ES2015 loose mode. So using babylon standalone should be smaller.
-
-## 6.9.1 (2016-08-23)
-
-This release contains mainly small bugfixes but also updates babylons default mode to es2017. The features for `exponentiationOperator`, `asyncFunctions` and `trailingFunctionCommas` which previously needed to be activated via plugin are now enabled by default and the plugins are now no-ops.
-
-### Bug Fixes
-
-- Fix issues with default object params in async functions ([#96](https://github.com/babel/babylon/pull/96)) @danez
-- Fix issues with flow-types and async function ([#95](https://github.com/babel/babylon/pull/95)) @danez
-- Fix arrow functions with destructuring, types & default value ([#94](https://github.com/babel/babylon/pull/94)) @danharper
-- Fix declare class with qualified type identifier ([#97](https://github.com/babel/babylon/pull/97)) @danez
-- Remove exponentiationOperator, asyncFunctions, trailingFunctionCommas plugins and enable them by default ([#98](https://github.com/babel/babylon/pull/98)) @danez
-
-## 6.9.0 (2016-08-16)
-
-### New syntax support
-
-- Add JSX spread children ([#42](https://github.com/babel/babylon/pull/42)) @calebmer
-
-(Be aware that React is not going to support this syntax)
-
-```js
-<div>
- {...todos.map(todo => <Todo key={todo.id} todo={todo}/>)}
-</div>
-```
-
-- Add support for declare module.exports ([#72](https://github.com/babel/babylon/pull/72)) @danez
-
-```js
-declare module "foo" {
- declare module.exports: {}
-}
-```
-
-### New Features
-
-- If supplied, attach filename property to comment node loc. ([#80](https://github.com/babel/babylon/pull/80)) @divmain
-- Add identifier name to node loc field ([#90](https://github.com/babel/babylon/pull/90)) @kittens
-
-### Bug Fixes
-
-- Fix exponential operator to behave according to spec ([#75](https://github.com/babel/babylon/pull/75)) @danez
-- Fix lookahead to not add comments to arrays which are not cloned ([#76](https://github.com/babel/babylon/pull/76)) @danez
-- Fix accidental fall-through in Flow type parsing. ([#82](https://github.com/babel/babylon/pull/82)) @xiemaisi
-- Only allow declares inside declare module ([#73](https://github.com/babel/babylon/pull/73)) @danez
-- Small fix for parsing type parameter declarations ([#83](https://github.com/babel/babylon/pull/83)) @gabelevi
-- Fix arrow param locations with flow types ([#57](https://github.com/babel/babylon/pull/57)) @danez
-- Fixes SyntaxError position with flow optional type ([#65](https://github.com/babel/babylon/pull/65)) @danez
-
-### Internal
-
-- Add codecoverage to tests @danez
-- Fix tests to not save expected output if we expect the test to fail @danez
-- Make a shallow clone of babel for testing @danez
-- chore(package): update cross-env to version 2.0.0 ([#77](https://github.com/babel/babylon/pull/77)) @greenkeeperio-bot
-- chore(package): update ava to version 0.16.0 ([#86](https://github.com/babel/babylon/pull/86)) @greenkeeperio-bot
-- chore(package): update babel-plugin-istanbul to version 2.0.0 ([#89](https://github.com/babel/babylon/pull/89)) @greenkeeperio-bot
-- chore(package): update nyc to version 8.0.0 ([#88](https://github.com/babel/babylon/pull/88)) @greenkeeperio-bot
-
-## 6.8.4 (2016-07-06)
-
-### Bug Fixes
-
-- Fix the location of params, when flow and default value used ([#68](https://github.com/babel/babylon/pull/68)) @danez
-
-## 6.8.3 (2016-07-02)
-
-### Bug Fixes
-
-- Fix performance regression introduced in 6.8.2 with conditionals ([#63](https://github.com/babel/babylon/pull/63)) @danez
-
-## 6.8.2 (2016-06-24)
-
-### Bug Fixes
-
-- Fix parse error with yielding jsx elements in generators `function* it() { yield <a></a>; }` ([#31](https://github.com/babel/babylon/pull/31)) @eldereal
-- When cloning nodes do not clone its comments ([#24](https://github.com/babel/babylon/pull/24)) @danez
-- Fix parse errors when using arrow functions with an spread element and return type `(...props): void => {}` ([#10](https://github.com/babel/babylon/pull/10)) @danez
-- Fix leading comments added from previous node ([#23](https://github.com/babel/babylon/pull/23)) @danez
-- Fix parse errors with flow's optional arguments `(arg?) => {}` ([#19](https://github.com/babel/babylon/pull/19)) @danez
-- Support negative numeric type literals @kittens
-- Remove line terminator restriction after await keyword @kittens
-- Remove grouped type arrow restriction as it seems flow no longer has it @kittens
-- Fix parse error with generic methods that have the name `get` or `set` `class foo { get() {} }` ([#55](https://github.com/babel/babylon/pull/55)) @vkurchatkin
-- Fix parse error with arrow functions that have flow type parameter declarations `<T>(x: T): T => x;` ([#54](https://github.com/babel/babylon/pull/54)) @gabelevi
-
-### Documentation
-
-- Document AST differences from ESTree ([#41](https://github.com/babel/babylon/pull/41)) @nene
-- Move ast spec from babel/babel ([#46](https://github.com/babel/babylon/pull/46)) @hzoo
-
-### Internal
-
-- Enable skipped tests ([#16](https://github.com/babel/babylon/pull/16)) @danez
-- Add script to test latest version of babylon with babel ([#21](https://github.com/babel/babylon/pull/21)) @danez
-- Upgrade test runner ava @kittens
-- Add missing generate-identifier-regex script @kittens
-- Rename parser context types @kittens
-- Add node v6 to travis testing @hzoo
-- Update to Unicode v9 ([#45](https://github.com/babel/babylon/pull/45)) @mathiasbynens
-
-## 6.8.1 (2016-06-06)
-
-### New Feature
-
-- Parse type parameter declarations with defaults like `type Foo<T = string> = T`
-
-### Bug Fixes
-- Type parameter declarations need 1 or more type parameters.
-- The existential type `*` is not a valid type parameter.
-- The existential type `*` is a primary type
-
-### Spec Compliance
-- The param list for type parameter declarations now consists of `TypeParameter` nodes
-- New `TypeParameter` AST Node (replaces using the `Identifier` node before)
-
-```
-interface TypeParameter <: Node {
- bound: TypeAnnotation;
- default: TypeAnnotation;
- name: string;
- variance: "plus" | "minus";
-}
-```
-
-## 6.8.0 (2016-05-02)
-
-#### New Feature
-
-##### Parse Method Parameter Decorators ([#12](https://github.com/babel/babylon/pull/12))
-
-> [Method Parameter Decorators](https://goo.gl/8MmCMG) is now a TC39 [stage 0 proposal](https://github.com/tc39/ecma262/blob/master/stage0.md).
-
-Examples:
-
-```js
-class Foo {
- constructor(@foo() x, @bar({ a: 123 }) @baz() y) {}
-}
-
-export default function func(@foo() x, @bar({ a: 123 }) @baz() y) {}
-
-var obj = {
- method(@foo() x, @bar({ a: 123 }) @baz() y) {}
-};
-```
-
-##### Parse for-await statements (w/ `asyncGenerators` plugin) ([#17](https://github.com/babel/babylon/pull/17))
-
-There is also a new node type, `ForAwaitStatement`.
-
-> [Async generators and for-await](https://github.com/tc39/proposal-async-iteration) are now a [stage 2 proposal](https://github.com/tc39/ecma262#current-proposals).
-
-Example:
-
-```js
-async function f() {
- for await (let x of y);
-}
-```
diff --git a/assets/node_modules/@babel/parser/LICENSE b/assets/node_modules/@babel/parser/LICENSE
deleted file mode 100644
index d4c7fc5..0000000
--- a/assets/node_modules/@babel/parser/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-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/assets/node_modules/@babel/parser/README.md b/assets/node_modules/@babel/parser/README.md
deleted file mode 100644
index 65092a0..0000000
--- a/assets/node_modules/@babel/parser/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# @babel/parser
-
-> A JavaScript parser
-
-See our website [@babel/parser](https://babeljs.io/docs/en/next/babel-parser.html) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A+parser+%28babylon%29%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/assets/node_modules/@babel/parser/bin/babel-parser.js b/assets/node_modules/@babel/parser/bin/babel-parser.js
deleted file mode 100755
index 3aca314..0000000
--- a/assets/node_modules/@babel/parser/bin/babel-parser.js
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/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/assets/node_modules/@babel/parser/lib/index.js b/assets/node_modules/@babel/parser/lib/index.js
deleted file mode 100644
index 3bd3ec1..0000000
--- a/assets/node_modules/@babel/parser/lib/index.js
+++ /dev/null
@@ -1,12321 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-const beforeExpr = true;
-const startsExpr = true;
-const isLoop = true;
-const isAssign = true;
-const prefix = true;
-const postfix = true;
-class TokenType {
- constructor(label, conf = {}) {
- 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 = new Map();
-
-function createKeyword(name, options = {}) {
- options.keyword = name;
- const token = new TokenType(name, options);
- keywords.set(name, token);
- return token;
-}
-
-function createBinop(name, binop) {
- return new TokenType(name, {
- beforeExpr,
- binop
- });
-}
-
-const types = {
- num: new TokenType("num", {
- startsExpr
- }),
- bigint: new TokenType("bigint", {
- startsExpr
- }),
- regexp: new TokenType("regexp", {
- startsExpr
- }),
- string: new TokenType("string", {
- startsExpr
- }),
- name: new TokenType("name", {
- startsExpr
- }),
- eof: new TokenType("eof"),
- bracketL: new TokenType("[", {
- beforeExpr,
- startsExpr
- }),
- bracketR: new TokenType("]"),
- braceL: new TokenType("{", {
- beforeExpr,
- startsExpr
- }),
- braceBarL: new TokenType("{|", {
- beforeExpr,
- startsExpr
- }),
- braceR: new TokenType("}"),
- braceBarR: new TokenType("|}"),
- parenL: new TokenType("(", {
- beforeExpr,
- startsExpr
- }),
- parenR: new TokenType(")"),
- comma: new TokenType(",", {
- beforeExpr
- }),
- semi: new TokenType(";", {
- beforeExpr
- }),
- colon: new TokenType(":", {
- beforeExpr
- }),
- doubleColon: new TokenType("::", {
- beforeExpr
- }),
- dot: new TokenType("."),
- question: new TokenType("?", {
- beforeExpr
- }),
- questionDot: new TokenType("?."),
- arrow: new TokenType("=>", {
- beforeExpr
- }),
- template: new TokenType("template"),
- ellipsis: new TokenType("...", {
- beforeExpr
- }),
- backQuote: new TokenType("`", {
- startsExpr
- }),
- dollarBraceL: new TokenType("${", {
- beforeExpr,
- startsExpr
- }),
- at: new TokenType("@"),
- hash: new TokenType("#", {
- startsExpr
- }),
- interpreterDirective: new TokenType("#!..."),
- eq: new TokenType("=", {
- beforeExpr,
- isAssign
- }),
- assign: new TokenType("_=", {
- beforeExpr,
- isAssign
- }),
- incDec: new TokenType("++/--", {
- prefix,
- postfix,
- startsExpr
- }),
- bang: new TokenType("!", {
- beforeExpr,
- prefix,
- startsExpr
- }),
- tilde: new TokenType("~", {
- 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),
- relational: createBinop("</>/<=/>=", 7),
- bitShift: createBinop("<</>>/>>>", 8),
- plusMin: new TokenType("+/-", {
- beforeExpr,
- binop: 9,
- prefix,
- startsExpr
- }),
- modulo: new TokenType("%", {
- beforeExpr,
- binop: 10,
- startsExpr
- }),
- star: createBinop("*", 10),
- slash: createBinop("/", 10),
- exponent: new TokenType("**", {
- beforeExpr,
- binop: 11,
- rightAssociative: true
- }),
- _break: createKeyword("break"),
- _case: createKeyword("case", {
- beforeExpr
- }),
- _catch: createKeyword("catch"),
- _continue: createKeyword("continue"),
- _debugger: createKeyword("debugger"),
- _default: createKeyword("default", {
- beforeExpr
- }),
- _do: createKeyword("do", {
- isLoop,
- beforeExpr
- }),
- _else: createKeyword("else", {
- beforeExpr
- }),
- _finally: createKeyword("finally"),
- _for: createKeyword("for", {
- isLoop
- }),
- _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"),
- _while: createKeyword("while", {
- isLoop
- }),
- _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
- }),
- _in: createKeyword("in", {
- beforeExpr,
- binop: 7
- }),
- _instanceof: createKeyword("instanceof", {
- beforeExpr,
- binop: 7
- }),
- _typeof: createKeyword("typeof", {
- beforeExpr,
- prefix,
- startsExpr
- }),
- _void: createKeyword("void", {
- beforeExpr,
- prefix,
- startsExpr
- }),
- _delete: createKeyword("delete", {
- beforeExpr,
- prefix,
- startsExpr
- })
-};
-
-const SCOPE_OTHER = 0b0000000000,
- SCOPE_PROGRAM = 0b0000000001,
- SCOPE_FUNCTION = 0b0000000010,
- SCOPE_ASYNC = 0b0000000100,
- SCOPE_GENERATOR = 0b0000001000,
- SCOPE_ARROW = 0b0000010000,
- SCOPE_SIMPLE_CATCH = 0b0000100000,
- SCOPE_SUPER = 0b0001000000,
- SCOPE_DIRECT_SUPER = 0b0010000000,
- SCOPE_CLASS = 0b0100000000,
- SCOPE_TS_MODULE = 0b1000000000,
- SCOPE_VAR = SCOPE_PROGRAM | SCOPE_FUNCTION | SCOPE_TS_MODULE;
-function functionFlags(isAsync, isGenerator) {
- return SCOPE_FUNCTION | (isAsync ? SCOPE_ASYNC : 0) | (isGenerator ? SCOPE_GENERATOR : 0);
-}
-const BIND_KIND_VALUE = 0b00000000001,
- BIND_KIND_TYPE = 0b00000000010,
- BIND_SCOPE_VAR = 0b00000000100,
- BIND_SCOPE_LEXICAL = 0b00000001000,
- BIND_SCOPE_FUNCTION = 0b00000010000,
- BIND_FLAGS_NONE = 0b00001000000,
- BIND_FLAGS_CLASS = 0b00010000000,
- BIND_FLAGS_TS_ENUM = 0b00100000000,
- BIND_FLAGS_TS_CONST_ENUM = 0b01000000000,
- BIND_FLAGS_TS_EXPORT_ONLY = 0b10000000000;
-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;
-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;
-
-function isSimpleProperty(node) {
- return node != null && node.type === "Property" && node.kind === "init" && node.method === false;
-}
-
-var estree = (superClass => class extends superClass {
- estreeParseRegExpLiteral({
- pattern,
- flags
- }) {
- let regex = null;
-
- try {
- regex = new RegExp(pattern, flags);
- } catch (e) {}
-
- const node = this.estreeParseLiteral(regex);
- node.regex = {
- pattern,
- flags
- };
- return node;
- }
-
- estreeParseBigIntLiteral(value) {
- const bigInt = typeof BigInt !== "undefined" ? BigInt(value) : null;
- const node = this.estreeParseLiteral(bigInt);
- node.bigint = String(node.value || value);
- return node;
- }
-
- estreeParseLiteral(value) {
- return this.parseLiteral(value, "Literal");
- }
-
- 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.value;
- 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 (isSimpleProperty(node)) {
- this.checkDeclaration(node.value);
- } else {
- super.checkDeclaration(node);
- }
- }
-
- checkGetterSetterParams(method) {
- const prop = method;
- const paramCount = prop.kind === "get" ? 0 : 1;
- const start = prop.start;
-
- if (prop.value.params.length !== paramCount) {
- if (prop.kind === "get") {
- this.raise(start, "getter must not have any formal parameters");
- } else {
- this.raise(start, "setter must have exactly one formal parameter");
- }
- } else if (prop.kind === "set" && prop.value.params[0].type === "RestElement") {
- this.raise(start, "setter function argument must not be a rest parameter");
- }
- }
-
- checkLVal(expr, bindingType = BIND_NONE, checkClashes, contextDescription, disallowLetBinding) {
- switch (expr.type) {
- case "ObjectPattern":
- expr.properties.forEach(prop => {
- this.checkLVal(prop.type === "Property" ? prop.value : prop, bindingType, checkClashes, "object destructuring pattern", disallowLetBinding);
- });
- break;
-
- default:
- super.checkLVal(expr, bindingType, checkClashes, contextDescription, disallowLetBinding);
- }
- }
-
- checkDuplicatedProto(prop, protoRef, refExpressionErrors) {
- if (prop.type === "SpreadElement" || prop.computed || prop.method || prop.shorthand) {
- return;
- }
-
- const key = prop.key;
- const name = key.type === "Identifier" ? key.name : String(key.value);
-
- if (name === "__proto__" && prop.kind === "init") {
- if (protoRef.used) {
- if (refExpressionErrors && refExpressionErrors.doubleProto === -1) {
- refExpressionErrors.doubleProto = key.start;
- } else {
- this.raise(key.start, "Redefinition of __proto__ property");
- }
- }
-
- protoRef.used = true;
- }
- }
-
- isValidDirective(stmt) {
- return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && (!stmt.expression.extra || !stmt.expression.extra.parenthesized);
- }
-
- stmtToDirective(stmt) {
- const directive = super.stmtToDirective(stmt);
- const value = stmt.expression.value;
- directive.value.value = value;
- return directive;
- }
-
- parseBlockBody(node, allowDirectives, topLevel, end) {
- super.parseBlockBody(node, allowDirectives, topLevel, end);
- 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);
- }
-
- parseExprAtom(refExpressionErrors) {
- switch (this.state.type) {
- case types.num:
- case types.string:
- return this.estreeParseLiteral(this.state.value);
-
- case types.regexp:
- return this.estreeParseRegExpLiteral(this.state.value);
-
- case types.bigint:
- return this.estreeParseBigIntLiteral(this.state.value);
-
- case types._null:
- return this.estreeParseLiteral(null);
-
- case types._true:
- return this.estreeParseLiteral(true);
-
- case types._false:
- return this.estreeParseLiteral(false);
-
- default:
- return super.parseExprAtom(refExpressionErrors);
- }
- }
-
- parseLiteral(value, type, startPos, startLoc) {
- const node = super.parseLiteral(value, type, startPos, startLoc);
- 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;
- type = type === "ClassMethod" ? "MethodDefinition" : type;
- return this.finishNode(node, type);
- }
-
- parseObjectMethod(prop, isGenerator, isAsync, isPattern, containsEsc) {
- const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, containsEsc);
-
- 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;
- }
-
- toAssignable(node) {
- if (isSimpleProperty(node)) {
- this.toAssignable(node.value);
- return node;
- }
-
- return super.toAssignable(node);
- }
-
- toAssignableObjectExpressionProp(prop, isLast) {
- if (prop.kind === "get" || prop.kind === "set") {
- throw this.raise(prop.key.start, "Object pattern can't contain getter or setter");
- } else if (prop.method) {
- throw this.raise(prop.key.start, "Object pattern can't contain methods");
- } else {
- super.toAssignableObjectExpressionProp(prop, isLast);
- }
- }
-
- finishCallExpression(node, optional) {
- super.finishCallExpression(node, optional);
-
- if (node.callee.type === "Import") {
- node.type = "ImportExpression";
- node.source = node.arguments[0];
- delete node.arguments;
- delete node.callee;
- }
-
- return node;
- }
-
- toReferencedListDeep(exprList, isParenthesizedExpr) {
- if (!exprList) {
- return;
- }
-
- super.toReferencedListDeep(exprList, isParenthesizedExpr);
- }
-
-});
-
-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;
-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 TokContext {
- constructor(token, isExpr, preserveSpace, override) {
- this.token = token;
- this.isExpr = !!isExpr;
- this.preserveSpace = !!preserveSpace;
- this.override = override;
- }
-
-}
-const types$1 = {
- braceStatement: new TokContext("{", false),
- braceExpression: new TokContext("{", true),
- templateQuasi: new TokContext("${", false),
- parenStatement: new TokContext("(", false),
- parenExpression: new TokContext("(", true),
- template: new TokContext("`", true, true, p => p.readTmplToken()),
- functionExpression: new TokContext("function", true),
- functionStatement: new TokContext("function", false)
-};
-
-types.parenR.updateContext = types.braceR.updateContext = function () {
- if (this.state.context.length === 1) {
- this.state.exprAllowed = true;
- return;
- }
-
- let out = this.state.context.pop();
-
- if (out === types$1.braceStatement && this.curContext().token === "function") {
- out = this.state.context.pop();
- }
-
- this.state.exprAllowed = !out.isExpr;
-};
-
-types.name.updateContext = function (prevType) {
- let allowed = false;
-
- if (prevType !== types.dot) {
- if (this.state.value === "of" && !this.state.exprAllowed || this.state.value === "yield" && this.scope.inGenerator) {
- allowed = true;
- }
- }
-
- this.state.exprAllowed = allowed;
-
- if (this.state.isIterator) {
- this.state.isIterator = false;
- }
-};
-
-types.braceL.updateContext = function (prevType) {
- this.state.context.push(this.braceIsBlock(prevType) ? types$1.braceStatement : types$1.braceExpression);
- this.state.exprAllowed = true;
-};
-
-types.dollarBraceL.updateContext = function () {
- this.state.context.push(types$1.templateQuasi);
- this.state.exprAllowed = true;
-};
-
-types.parenL.updateContext = function (prevType) {
- const statementParens = prevType === types._if || prevType === types._for || prevType === types._with || prevType === types._while;
- this.state.context.push(statementParens ? types$1.parenStatement : types$1.parenExpression);
- this.state.exprAllowed = true;
-};
-
-types.incDec.updateContext = function () {};
-
-types._function.updateContext = types._class.updateContext = function (prevType) {
- if (prevType.beforeExpr && prevType !== types.semi && prevType !== types._else && !(prevType === types._return && lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start))) && !((prevType === types.colon || prevType === types.braceL) && this.curContext() === types$1.b_stat)) {
- this.state.context.push(types$1.functionExpression);
- } else {
- this.state.context.push(types$1.functionStatement);
- }
-
- this.state.exprAllowed = false;
-};
-
-types.backQuote.updateContext = function () {
- if (this.curContext() === types$1.template) {
- this.state.context.pop();
- } else {
- this.state.context.push(types$1.template);
- }
-
- this.state.exprAllowed = false;
-};
-
-const reservedWords = {
- strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
- strictBind: ["eval", "arguments"]
-};
-const reservedWordsStrictSet = new Set(reservedWords.strict);
-const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
-const 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);
-}
-const keywordRelationalOperator = /^in(stanceof)?$/;
-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\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\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-\u170c\u170e-\u1711\u1720-\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-\u1b4b\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-\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\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7c6\ua7f7-\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-\uab67\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\u08d3-\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\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\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\u0d82\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-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\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-\u1df9\u1dfb-\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\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, 157, 310, 10, 21, 11, 7, 153, 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, 477, 28, 11, 0, 9, 21, 155, 22, 13, 52, 76, 44, 33, 24, 27, 35, 30, 0, 12, 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, 0, 33, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 230, 43, 117, 63, 32, 0, 161, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 35, 56, 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, 270, 921, 103, 110, 18, 195, 2749, 1070, 4050, 582, 8634, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 754, 9486, 286, 50, 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, 2357, 44, 11, 6, 17, 0, 370, 43, 1301, 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, 42710, 42, 4148, 12, 221, 3, 5761, 15, 7472, 3104, 541];
-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, 525, 10, 176, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 4, 9, 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, 232, 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, 135, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 19723, 1, 5319, 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, 419, 13, 1495, 6, 110, 6, 6, 9, 792487, 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 isIteratorStart(current, next) {
- return current === 64 && next === 64;
-}
-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 reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]);
-
-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(state) {
- return (state.type === types.name || !!state.type.keyword) && state.value !== "from";
-}
-
-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(options, input) {
- super(options, input);
- this.flowPragma = undefined;
- }
-
- shouldParseTypes() {
- return this.getPluginOption("flow", "all") || this.flowPragma === "flow";
- }
-
- shouldParseEnums() {
- return !!this.getPluginOption("flow", "enums");
- }
-
- finishToken(type, val) {
- if (type !== types.string && type !== types.semi && type !== types.interpreterDirective) {
- 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 || types.colon);
- const type = this.flowParseType();
- this.state.inType = oldInType;
- return type;
- }
-
- flowParsePredicate() {
- const node = this.startNode();
- const moduloLoc = this.state.startLoc;
- const moduloPos = this.state.start;
- this.expect(types.modulo);
- const checksLoc = this.state.startLoc;
- this.expectContextual("checks");
-
- if (moduloLoc.line !== checksLoc.line || moduloLoc.column !== checksLoc.column - 1) {
- this.raise(moduloPos, "Spaces between ´%´ and ´checks´ are not allowed here.");
- }
-
- if (this.eat(types.parenL)) {
- node.value = this.parseExpression();
- this.expect(types.parenR);
- return this.finishNode(node, "DeclaredPredicate");
- } else {
- return this.finishNode(node, "InferredPredicate");
- }
- }
-
- flowParseTypeAndPredicateInitialiser() {
- const oldInType = this.state.inType;
- this.state.inType = true;
- this.expect(types.colon);
- let type = null;
- let predicate = null;
-
- if (this.match(types.modulo)) {
- this.state.inType = oldInType;
- predicate = this.flowParsePredicate();
- } else {
- type = this.flowParseType();
- this.state.inType = oldInType;
-
- if (this.match(types.modulo)) {
- 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.isRelational("<")) {
- typeNode.typeParameters = this.flowParseTypeParameterDeclaration();
- } else {
- typeNode.typeParameters = null;
- }
-
- this.expect(types.parenL);
- const tmp = this.flowParseFunctionTypeParams();
- typeNode.params = tmp.params;
- typeNode.rest = tmp.rest;
- this.expect(types.parenR);
- [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser();
- typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation");
- id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation");
- this.resetEndLocation(id);
- this.semicolon();
- return this.finishNode(node, "DeclareFunction");
- }
-
- flowParseDeclare(node, insideModule) {
- if (this.match(types._class)) {
- return this.flowParseDeclareClass(node);
- } else if (this.match(types._function)) {
- return this.flowParseDeclareFunction(node);
- } else if (this.match(types._var)) {
- return this.flowParseDeclareVariable(node);
- } else if (this.eatContextual("module")) {
- if (this.match(types.dot)) {
- return this.flowParseDeclareModuleExports(node);
- } else {
- if (insideModule) {
- this.raise(this.state.lastTokStart, "`declare module` cannot be used inside another `declare module`");
- }
-
- return this.flowParseDeclareModule(node);
- }
- } else if (this.isContextual("type")) {
- return this.flowParseDeclareTypeAlias(node);
- } else if (this.isContextual("opaque")) {
- return this.flowParseDeclareOpaqueType(node);
- } else if (this.isContextual("interface")) {
- return this.flowParseDeclareInterface(node);
- } else if (this.match(types._export)) {
- 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(types.string)) {
- node.id = this.parseExprAtom();
- } else {
- node.id = this.parseIdentifier();
- }
-
- const bodyNode = node.body = this.startNode();
- const body = bodyNode.body = [];
- this.expect(types.braceL);
-
- while (!this.match(types.braceR)) {
- let bodyNode = this.startNode();
-
- if (this.match(types._import)) {
- this.next();
-
- if (!this.isContextual("type") && !this.match(types._typeof)) {
- this.raise(this.state.lastTokStart, "Imports within a `declare module` body must always be `import type` or `import typeof`");
- }
-
- this.parseImport(bodyNode);
- } else {
- this.expectContextual("declare", "Only declares and type imports are allowed inside declare module");
- bodyNode = this.flowParseDeclare(bodyNode, true);
- }
-
- body.push(bodyNode);
- }
-
- this.scope.exit();
- this.expect(types.braceR);
- this.finishNode(bodyNode, "BlockStatement");
- let kind = null;
- let hasModuleExport = false;
- const errorMessage = "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";
- body.forEach(bodyElement => {
- if (isEsModuleType(bodyElement)) {
- if (kind === "CommonJS") {
- this.raise(bodyElement.start, errorMessage);
- }
-
- kind = "ES";
- } else if (bodyElement.type === "DeclareModuleExports") {
- if (hasModuleExport) {
- this.raise(bodyElement.start, "Duplicate `declare module.exports` statement");
- }
-
- if (kind === "ES") this.raise(bodyElement.start, errorMessage);
- kind = "CommonJS";
- hasModuleExport = true;
- }
- });
- node.kind = kind || "CommonJS";
- return this.finishNode(node, "DeclareModule");
- }
-
- flowParseDeclareExportDeclaration(node, insideModule) {
- this.expect(types._export);
-
- if (this.eat(types._default)) {
- if (this.match(types._function) || this.match(types._class)) {
- 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(types._const) || this.isLet() || (this.isContextual("type") || this.isContextual("interface")) && !insideModule) {
- const label = this.state.value;
- const suggestion = exportSuggestions[label];
- this.unexpected(this.state.start, `\`declare export ${label}\` is not supported. Use \`${suggestion}\` instead`);
- }
-
- if (this.match(types._var) || this.match(types._function) || this.match(types._class) || this.isContextual("opaque")) {
- node.declaration = this.flowParseDeclare(this.startNode());
- node.default = false;
- return this.finishNode(node, "DeclareExportDeclaration");
- } else if (this.match(types.star) || this.match(types.braceL) || this.isContextual("interface") || this.isContextual("type") || this.isContextual("opaque")) {
- 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("exports");
- 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.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterDeclaration();
- } else {
- node.typeParameters = null;
- }
-
- node.extends = [];
- node.implements = [];
- node.mixins = [];
-
- if (this.eat(types._extends)) {
- do {
- node.extends.push(this.flowParseInterfaceExtends());
- } while (!isClass && this.eat(types.comma));
- }
-
- if (this.isContextual("mixins")) {
- this.next();
-
- do {
- node.mixins.push(this.flowParseInterfaceExtends());
- } while (this.eat(types.comma));
- }
-
- if (this.isContextual("implements")) {
- this.next();
-
- do {
- node.implements.push(this.flowParseInterfaceExtends());
- } while (this.eat(types.comma));
- }
-
- 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.isRelational("<")) {
- 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, "`_` is only allowed as a type argument to call or new");
- }
- }
-
- checkReservedType(word, startLoc, declaration) {
- if (!reservedTypes.has(word)) return;
-
- if (declaration) {
- this.raise(startLoc, `Cannot overwrite reserved type ${word}`);
- return;
- }
-
- this.raise(startLoc, `Unexpected reserved type ${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.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterDeclaration();
- } else {
- node.typeParameters = null;
- }
-
- node.right = this.flowParseTypeInitialiser(types.eq);
- this.semicolon();
- return this.finishNode(node, "TypeAlias");
- }
-
- flowParseOpaqueType(node, declare) {
- this.expectContextual("type");
- node.id = this.flowParseRestrictedIdentifier(true, true);
- this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.start);
-
- if (this.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterDeclaration();
- } else {
- node.typeParameters = null;
- }
-
- node.supertype = null;
-
- if (this.match(types.colon)) {
- node.supertype = this.flowParseTypeInitialiser(types.colon);
- }
-
- node.impltype = null;
-
- if (!declare) {
- node.impltype = this.flowParseTypeInitialiser(types.eq);
- }
-
- 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(types.eq)) {
- this.eat(types.eq);
- node.default = this.flowParseType();
- } else {
- if (requireDefault) {
- this.raise(nodeStart, "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.");
- }
- }
-
- return this.finishNode(node, "TypeParameter");
- }
-
- flowParseTypeParameterDeclaration() {
- const oldInType = this.state.inType;
- const node = this.startNode();
- node.params = [];
- this.state.inType = true;
-
- if (this.isRelational("<") || this.match(types.jsxTagStart)) {
- 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.isRelational(">")) {
- this.expect(types.comma);
- }
- } while (!this.isRelational(">"));
-
- this.expectRelational(">");
- 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.expectRelational("<");
- const oldNoAnonFunctionType = this.state.noAnonFunctionType;
- this.state.noAnonFunctionType = false;
-
- while (!this.isRelational(">")) {
- node.params.push(this.flowParseType());
-
- if (!this.isRelational(">")) {
- this.expect(types.comma);
- }
- }
-
- this.state.noAnonFunctionType = oldNoAnonFunctionType;
- this.expectRelational(">");
- 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.expectRelational("<");
-
- while (!this.isRelational(">")) {
- node.params.push(this.flowParseTypeOrImplicitInstantiation());
-
- if (!this.isRelational(">")) {
- this.expect(types.comma);
- }
- }
-
- this.expectRelational(">");
- this.state.inType = oldInType;
- return this.finishNode(node, "TypeParameterInstantiation");
- }
-
- flowParseInterfaceType() {
- const node = this.startNode();
- this.expectContextual("interface");
- node.extends = [];
-
- if (this.eat(types._extends)) {
- do {
- node.extends.push(this.flowParseInterfaceExtends());
- } while (this.eat(types.comma));
- }
-
- node.body = this.flowParseObjectType({
- allowStatic: false,
- allowExact: false,
- allowSpread: false,
- allowProto: false,
- allowInexact: false
- });
- return this.finishNode(node, "InterfaceTypeAnnotation");
- }
-
- flowParseObjectPropertyKey() {
- return this.match(types.num) || this.match(types.string) ? this.parseExprAtom() : this.parseIdentifier(true);
- }
-
- flowParseObjectTypeIndexer(node, isStatic, variance) {
- node.static = isStatic;
-
- if (this.lookahead().type === types.colon) {
- node.id = this.flowParseObjectPropertyKey();
- node.key = this.flowParseTypeInitialiser();
- } else {
- node.id = null;
- node.key = this.flowParseType();
- }
-
- this.expect(types.bracketR);
- node.value = this.flowParseTypeInitialiser();
- node.variance = variance;
- return this.finishNode(node, "ObjectTypeIndexer");
- }
-
- flowParseObjectTypeInternalSlot(node, isStatic) {
- node.static = isStatic;
- node.id = this.flowParseObjectPropertyKey();
- this.expect(types.bracketR);
- this.expect(types.bracketR);
-
- if (this.isRelational("<") || this.match(types.parenL)) {
- node.method = true;
- node.optional = false;
- node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start));
- } else {
- node.method = false;
-
- if (this.eat(types.question)) {
- node.optional = true;
- }
-
- node.value = this.flowParseTypeInitialiser();
- }
-
- return this.finishNode(node, "ObjectTypeInternalSlot");
- }
-
- flowParseObjectTypeMethodish(node) {
- node.params = [];
- node.rest = null;
- node.typeParameters = null;
-
- if (this.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterDeclaration();
- }
-
- this.expect(types.parenL);
-
- while (!this.match(types.parenR) && !this.match(types.ellipsis)) {
- node.params.push(this.flowParseFunctionTypeParam());
-
- if (!this.match(types.parenR)) {
- this.expect(types.comma);
- }
- }
-
- if (this.eat(types.ellipsis)) {
- node.rest = this.flowParseFunctionTypeParam();
- }
-
- this.expect(types.parenR);
- 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(types.braceBarL)) {
- this.expect(types.braceBarL);
- endDelim = types.braceBarR;
- exact = true;
- } else {
- this.expect(types.braceL);
- endDelim = types.braceR;
- 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("proto")) {
- const lookahead = this.lookahead();
-
- if (lookahead.type !== types.colon && lookahead.type !== types.question) {
- this.next();
- protoStart = this.state.start;
- allowStatic = false;
- }
- }
-
- if (allowStatic && this.isContextual("static")) {
- const lookahead = this.lookahead();
-
- if (lookahead.type !== types.colon && lookahead.type !== types.question) {
- this.next();
- isStatic = true;
- }
- }
-
- const variance = this.flowParseVariance();
-
- if (this.eat(types.bracketL)) {
- if (protoStart != null) {
- this.unexpected(protoStart);
- }
-
- if (this.eat(types.bracketL)) {
- 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(types.parenL) || this.isRelational("<")) {
- 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("get") || this.isContextual("set")) {
- const lookahead = this.lookahead();
-
- if (lookahead.type === types.name || lookahead.type === types.string || lookahead.type === types.num) {
- 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(types.braceR) && !this.match(types.braceBarR)) {
- this.raise(inexactStart, "Explicit inexact syntax must appear at the end of an inexact object");
- }
- }
-
- 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(types.ellipsis)) {
- const isInexactToken = this.match(types.comma) || this.match(types.semi) || this.match(types.braceR) || this.match(types.braceBarR);
-
- if (isInexactToken) {
- if (!allowSpread) {
- this.raise(this.state.lastTokStart, "Explicit inexact syntax cannot appear in class or interface definitions");
- } else if (!allowInexact) {
- this.raise(this.state.lastTokStart, "Explicit inexact syntax cannot appear inside an explicit exact object type");
- }
-
- if (variance) {
- this.raise(variance.start, "Explicit inexact syntax cannot have variance");
- }
-
- return null;
- }
-
- if (!allowSpread) {
- this.raise(this.state.lastTokStart, "Spread operator cannot appear in class or interface definitions");
- }
-
- if (protoStart != null) {
- this.unexpected(protoStart);
- }
-
- if (variance) {
- this.raise(variance.start, "Spread properties cannot have variance");
- }
-
- 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.isRelational("<") || this.match(types.parenL)) {
- 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);
- }
- } else {
- if (kind !== "init") this.unexpected();
- node.method = false;
-
- if (this.eat(types.question)) {
- 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 (length !== paramCount) {
- if (property.kind === "get") {
- this.raise(start, "getter must not have any formal parameters");
- } else {
- this.raise(start, "setter must have exactly one formal parameter");
- }
- }
-
- if (property.kind === "set" && property.value.rest) {
- this.raise(start, "setter function argument must not be a rest parameter");
- }
- }
-
- flowObjectTypeSemicolon() {
- if (!this.eat(types.semi) && !this.eat(types.comma) && !this.match(types.braceR) && !this.match(types.braceBarR)) {
- 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(types.dot)) {
- 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.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterInstantiation();
- }
-
- return this.finishNode(node, "GenericTypeAnnotation");
- }
-
- flowParseTypeofType() {
- const node = this.startNode();
- this.expect(types._typeof);
- node.argument = this.flowParsePrimaryType();
- return this.finishNode(node, "TypeofTypeAnnotation");
- }
-
- flowParseTupleType() {
- const node = this.startNode();
- node.types = [];
- this.expect(types.bracketL);
-
- while (this.state.pos < this.length && !this.match(types.bracketR)) {
- node.types.push(this.flowParseType());
- if (this.match(types.bracketR)) break;
- this.expect(types.comma);
- }
-
- this.expect(types.bracketR);
- return this.finishNode(node, "TupleTypeAnnotation");
- }
-
- flowParseFunctionTypeParam() {
- let name = null;
- let optional = false;
- let typeAnnotation = null;
- const node = this.startNode();
- const lh = this.lookahead();
-
- if (lh.type === types.colon || lh.type === types.question) {
- name = this.parseIdentifier();
-
- if (this.eat(types.question)) {
- optional = true;
- }
-
- 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;
-
- while (!this.match(types.parenR) && !this.match(types.ellipsis)) {
- params.push(this.flowParseFunctionTypeParam());
-
- if (!this.match(types.parenR)) {
- this.expect(types.comma);
- }
- }
-
- if (this.eat(types.ellipsis)) {
- rest = this.flowParseFunctionTypeParam();
- }
-
- return {
- params,
- rest
- };
- }
-
- 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");
-
- 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 types.name:
- if (this.isContextual("interface")) {
- return this.flowParseInterfaceType();
- }
-
- return this.flowIdentToTypeAnnotation(startPos, startLoc, node, this.parseIdentifier());
-
- case types.braceL:
- return this.flowParseObjectType({
- allowStatic: false,
- allowExact: false,
- allowSpread: true,
- allowProto: false,
- allowInexact: true
- });
-
- case types.braceBarL:
- return this.flowParseObjectType({
- allowStatic: false,
- allowExact: true,
- allowSpread: true,
- allowProto: false,
- allowInexact: false
- });
-
- case types.bracketL:
- this.state.noAnonFunctionType = false;
- type = this.flowParseTupleType();
- this.state.noAnonFunctionType = oldNoAnonFunctionType;
- return type;
-
- case types.relational:
- if (this.state.value === "<") {
- node.typeParameters = this.flowParseTypeParameterDeclaration();
- this.expect(types.parenL);
- tmp = this.flowParseFunctionTypeParams();
- node.params = tmp.params;
- node.rest = tmp.rest;
- this.expect(types.parenR);
- this.expect(types.arrow);
- node.returnType = this.flowParseType();
- return this.finishNode(node, "FunctionTypeAnnotation");
- }
-
- break;
-
- case types.parenL:
- this.next();
-
- if (!this.match(types.parenR) && !this.match(types.ellipsis)) {
- if (this.match(types.name)) {
- const token = this.lookahead().type;
- isGroupedType = token !== types.question && token !== types.colon;
- } else {
- isGroupedType = true;
- }
- }
-
- if (isGroupedType) {
- this.state.noAnonFunctionType = false;
- type = this.flowParseType();
- this.state.noAnonFunctionType = oldNoAnonFunctionType;
-
- if (this.state.noAnonFunctionType || !(this.match(types.comma) || this.match(types.parenR) && this.lookahead().type === types.arrow)) {
- this.expect(types.parenR);
- return type;
- } else {
- this.eat(types.comma);
- }
- }
-
- if (type) {
- tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]);
- } else {
- tmp = this.flowParseFunctionTypeParams();
- }
-
- node.params = tmp.params;
- node.rest = tmp.rest;
- this.expect(types.parenR);
- this.expect(types.arrow);
- node.returnType = this.flowParseType();
- node.typeParameters = null;
- return this.finishNode(node, "FunctionTypeAnnotation");
-
- case types.string:
- return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation");
-
- case types._true:
- case types._false:
- node.value = this.match(types._true);
- this.next();
- return this.finishNode(node, "BooleanLiteralTypeAnnotation");
-
- case types.plusMin:
- if (this.state.value === "-") {
- this.next();
-
- if (this.match(types.num)) {
- return this.parseLiteral(-this.state.value, "NumberLiteralTypeAnnotation", node.start, node.loc.start);
- }
-
- if (this.match(types.bigint)) {
- return this.parseLiteral(-this.state.value, "BigIntLiteralTypeAnnotation", node.start, node.loc.start);
- }
-
- throw this.raise(this.state.start, `Unexpected token, expected "number" or "bigint"`);
- }
-
- this.unexpected();
-
- case types.num:
- return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation");
-
- case types.bigint:
- return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation");
-
- case types._void:
- this.next();
- return this.finishNode(node, "VoidTypeAnnotation");
-
- case types._null:
- this.next();
- return this.finishNode(node, "NullLiteralTypeAnnotation");
-
- case types._this:
- this.next();
- return this.finishNode(node, "ThisTypeAnnotation");
-
- case types.star:
- this.next();
- return this.finishNode(node, "ExistsTypeAnnotation");
-
- default:
- if (this.state.type.keyword === "typeof") {
- return this.flowParseTypeofType();
- } else if (this.state.type.keyword) {
- const label = this.state.type.label;
- this.next();
- return super.createIdentifier(node, label);
- }
-
- }
-
- throw this.unexpected();
- }
-
- flowParsePostfixType() {
- const startPos = this.state.start,
- startLoc = this.state.startLoc;
- let type = this.flowParsePrimaryType();
-
- while (this.match(types.bracketL) && !this.canInsertSemicolon()) {
- const node = this.startNodeAt(startPos, startLoc);
- node.elementType = type;
- this.expect(types.bracketL);
- this.expect(types.bracketR);
- type = this.finishNode(node, "ArrayTypeAnnotation");
- }
-
- return type;
- }
-
- flowParsePrefixType() {
- const node = this.startNode();
-
- if (this.eat(types.question)) {
- node.typeAnnotation = this.flowParsePrefixType();
- return this.finishNode(node, "NullableTypeAnnotation");
- } else {
- return this.flowParsePostfixType();
- }
- }
-
- flowParseAnonFunctionWithoutParens() {
- const param = this.flowParsePrefixType();
-
- if (!this.state.noAnonFunctionType && this.eat(types.arrow)) {
- const node = this.startNodeAt(param.start, param.loc.start);
- node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];
- node.rest = null;
- node.returnType = this.flowParseType();
- node.typeParameters = null;
- return this.finishNode(node, "FunctionTypeAnnotation");
- }
-
- return param;
- }
-
- flowParseIntersectionType() {
- const node = this.startNode();
- this.eat(types.bitwiseAND);
- const type = this.flowParseAnonFunctionWithoutParens();
- node.types = [type];
-
- while (this.eat(types.bitwiseAND)) {
- node.types.push(this.flowParseAnonFunctionWithoutParens());
- }
-
- return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation");
- }
-
- flowParseUnionType() {
- const node = this.startNode();
- this.eat(types.bitwiseOR);
- const type = this.flowParseIntersectionType();
- node.types = [type];
-
- while (this.eat(types.bitwiseOR)) {
- 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;
- this.state.exprAllowed = this.state.exprAllowed || this.state.noAnonFunctionType;
- return type;
- }
-
- flowParseTypeOrImplicitInstantiation() {
- if (this.state.type === types.name && 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(types.colon)) {
- 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(types.plusMin)) {
- 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(types.colon)) {
- 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.match(types.name) && this.state.value === "interface") {
- const node = this.startNode();
- this.next();
- return this.flowParseInterface(node);
- } else if (this.shouldParseEnums() && this.isContextual("enum")) {
- const node = this.startNode();
- this.next();
- return this.flowParseEnumDeclaration(node);
- } else {
- 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(types._class) || this.match(types.name) || this.match(types._function) || this.match(types._var) || this.match(types._export)) {
- return this.flowParseDeclare(node);
- }
- } else if (this.match(types.name)) {
- 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() {
- return this.isContextual("type") || this.isContextual("interface") || this.isContextual("opaque") || this.shouldParseEnums() && this.isContextual("enum") || super.shouldParseExportDeclaration();
- }
-
- isExportDefaultSpecifier() {
- if (this.match(types.name) && (this.state.value === "type" || this.state.value === "interface" || this.state.value === "opaque" || this.shouldParseEnums() && this.state.value === "enum")) {
- return false;
- }
-
- return super.isExportDefaultSpecifier();
- }
-
- parseExportDefaultExpression() {
- if (this.shouldParseEnums() && this.isContextual("enum")) {
- const node = this.startNode();
- this.next();
- return this.flowParseEnumDeclaration(node);
- }
-
- return super.parseExportDefaultExpression();
- }
-
- parseConditional(expr, noIn, startPos, startLoc, refNeedsArrowPos) {
- if (!this.match(types.question)) return expr;
-
- if (refNeedsArrowPos) {
- const result = this.tryParse(() => super.parseConditional(expr, noIn, startPos, startLoc));
-
- if (!result.node) {
- refNeedsArrowPos.start = result.error.pos || this.state.start;
- return expr;
- }
-
- if (result.error) this.state = result.failState;
- return result.node;
- }
-
- this.expect(types.question);
- 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, "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.");
- }
-
- if (failed && valid.length === 1) {
- this.state = state;
- this.state.noArrowAt = noArrowAt.concat(valid[0].start);
- ({
- consequent,
- failed
- } = this.tryParseConditionalConsequent());
- }
- }
-
- this.getArrowLikeExpressions(consequent, true);
- this.state.noArrowAt = originalNoArrowAt;
- this.expect(types.colon);
- node.test = expr;
- node.consequent = consequent;
- node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(noIn, undefined, undefined, undefined));
- return this.finishNode(node, "ConditionalExpression");
- }
-
- tryParseConditionalConsequent() {
- this.state.noArrowParamsConversionAt.push(this.state.start);
- const consequent = this.parseMaybeAssign();
- const failed = !this.match(types.colon);
- 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);
- this.scope.enter(functionFlags(false, false) | 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(types.question)) {
- node.optional = true;
- this.resetEndLocation(node);
- }
-
- if (this.match(types.colon)) {
- 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("type")) {
- node.exportKind = "type";
- const declarationNode = this.startNode();
- this.next();
-
- if (this.match(types.braceL)) {
- node.specifiers = this.parseExportSpecifiers();
- this.parseExportFrom(node);
- return null;
- } else {
- return this.flowParseTypeAlias(declarationNode);
- }
- } else if (this.isContextual("opaque")) {
- node.exportKind = "type";
- const declarationNode = this.startNode();
- this.next();
- return this.flowParseOpaqueType(declarationNode, false);
- } else if (this.isContextual("interface")) {
- node.exportKind = "type";
- const declarationNode = this.startNode();
- this.next();
- return this.flowParseInterface(declarationNode);
- } else if (this.shouldParseEnums() && this.isContextual("enum")) {
- 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("type") && this.lookahead().type === types.star) {
- 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.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterDeclaration();
- }
- }
-
- getTokenFromCode(code) {
- const next = this.input.charCodeAt(this.state.pos + 1);
-
- if (code === 123 && next === 124) {
- return this.finishOp(types.braceBarL, 2);
- } else if (this.state.inType && (code === 62 || code === 60)) {
- return this.finishOp(types.relational, 1);
- } else if (isIteratorStart(code, next)) {
- this.state.isIterator = true;
- return super.readWord();
- } else {
- return super.getTokenFromCode(code);
- }
- }
-
- isAssignable(node, isBinding) {
- switch (node.type) {
- case "Identifier":
- case "ObjectPattern":
- case "ArrayPattern":
- case "AssignmentPattern":
- 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 => this.isAssignable(element));
-
- case "AssignmentExpression":
- return node.operator === "=";
-
- case "ParenthesizedExpression":
- case "TypeCastExpression":
- return this.isAssignable(node.expression);
-
- case "MemberExpression":
- case "OptionalMemberExpression":
- return !isBinding;
-
- default:
- return false;
- }
- }
-
- toAssignable(node) {
- if (node.type === "TypeCastExpression") {
- return super.toAssignable(this.typeCastToParameter(node));
- } else {
- return super.toAssignable(node);
- }
- }
-
- toAssignableList(exprList, trailingCommaPos) {
- for (let i = 0; i < exprList.length; i++) {
- const expr = exprList[i];
-
- if (expr && expr.type === "TypeCastExpression") {
- exprList[i] = this.typeCastToParameter(expr);
- }
- }
-
- return super.toAssignableList(exprList, trailingCommaPos);
- }
-
- toReferencedList(exprList, isParenthesizedExpr) {
- for (let i = 0; i < exprList.length; i++) {
- const expr = exprList[i];
-
- if (expr && expr.type === "TypeCastExpression" && (!expr.extra || !expr.extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) {
- this.raise(expr.typeAnnotation.start, "The type cast expression is expected to be wrapped with parenthesis");
- }
- }
-
- return exprList;
- }
-
- checkLVal(expr, bindingType = BIND_NONE, checkClashes, contextDescription) {
- if (expr.type !== "TypeCastExpression") {
- return super.checkLVal(expr, bindingType, checkClashes, contextDescription);
- }
- }
-
- parseClassProperty(node) {
- if (this.match(types.colon)) {
- node.typeAnnotation = this.flowParseTypeAnnotation();
- }
-
- return super.parseClassProperty(node);
- }
-
- parseClassPrivateProperty(node) {
- if (this.match(types.colon)) {
- node.typeAnnotation = this.flowParseTypeAnnotation();
- }
-
- return super.parseClassPrivateProperty(node);
- }
-
- isClassMethod() {
- return this.isRelational("<") || super.isClassMethod();
- }
-
- isClassProperty() {
- return this.match(types.colon) || super.isClassProperty();
- }
-
- isNonstaticConstructor(method) {
- return !this.match(types.colon) && super.isNonstaticConstructor(method);
- }
-
- pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
- if (method.variance) {
- this.unexpected(method.variance.start);
- }
-
- delete method.variance;
-
- if (this.isRelational("<")) {
- method.typeParameters = this.flowParseTypeParameterDeclaration();
- }
-
- super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);
- }
-
- pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
- if (method.variance) {
- this.unexpected(method.variance.start);
- }
-
- delete method.variance;
-
- if (this.isRelational("<")) {
- method.typeParameters = this.flowParseTypeParameterDeclaration();
- }
-
- super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);
- }
-
- parseClassSuper(node) {
- super.parseClassSuper(node);
-
- if (node.superClass && this.isRelational("<")) {
- node.superTypeParameters = this.flowParseTypeParameterInstantiation();
- }
-
- if (this.isContextual("implements")) {
- this.next();
- const implemented = node.implements = [];
-
- do {
- const node = this.startNode();
- node.id = this.flowParseRestrictedIdentifier(true);
-
- if (this.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterInstantiation();
- } else {
- node.typeParameters = null;
- }
-
- implemented.push(this.finishNode(node, "ClassImplements"));
- } while (this.eat(types.comma));
- }
- }
-
- parsePropertyName(node, isPrivateNameAllowed) {
- const variance = this.flowParseVariance();
- const key = super.parsePropertyName(node, isPrivateNameAllowed);
- node.variance = variance;
- return key;
- }
-
- parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refExpressionErrors, containsEsc) {
- if (prop.variance) {
- this.unexpected(prop.variance.start);
- }
-
- delete prop.variance;
- let typeParameters;
-
- if (this.isRelational("<")) {
- typeParameters = this.flowParseTypeParameterDeclaration();
- if (!this.match(types.parenL)) this.unexpected();
- }
-
- super.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refExpressionErrors, containsEsc);
-
- if (typeParameters) {
- (prop.value || prop).typeParameters = typeParameters;
- }
- }
-
- parseAssignableListItemTypes(param) {
- if (this.eat(types.question)) {
- if (param.type !== "Identifier") {
- this.raise(param.start, "A binding pattern parameter cannot be optional in an implementation signature.");
- }
-
- param.optional = true;
- }
-
- if (this.match(types.colon)) {
- param.typeAnnotation = this.flowParseTypeAnnotation();
- }
-
- 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, "Type annotations must come before default assignments, " + "e.g. instead of `age = 25: number` use `age: number = 25`");
- }
-
- return node;
- }
-
- shouldParseDefaultImport(node) {
- if (!hasTypeImportKind(node)) {
- return super.shouldParseDefaultImport(node);
- }
-
- return isMaybeDefaultImport(this.state);
- }
-
- parseImportSpecifierLocal(node, specifier, type, contextDescription) {
- specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier();
- this.checkLVal(specifier.local, BIND_LEXICAL, undefined, contextDescription);
- node.specifiers.push(this.finishNode(specifier, type));
- }
-
- maybeParseDefaultImportSpecifier(node) {
- node.importKind = "value";
- let kind = null;
-
- if (this.match(types._typeof)) {
- kind = "typeof";
- } else if (this.isContextual("type")) {
- kind = "type";
- }
-
- if (kind) {
- const lh = this.lookahead();
-
- if (kind === "type" && lh.type === types.star) {
- this.unexpected(lh.start);
- }
-
- if (isMaybeDefaultImport(lh) || lh.type === types.braceL || lh.type === types.star) {
- this.next();
- node.importKind = kind;
- }
- }
-
- return super.maybeParseDefaultImportSpecifier(node);
- }
-
- parseImportSpecifier(node) {
- const specifier = this.startNode();
- const firstIdentLoc = this.state.start;
- const firstIdent = this.parseIdentifier(true);
- let specifierTypeKind = null;
-
- if (firstIdent.name === "type") {
- specifierTypeKind = "type";
- } else if (firstIdent.name === "typeof") {
- specifierTypeKind = "typeof";
- }
-
- let isBinding = false;
-
- if (this.isContextual("as") && !this.isLookaheadContextual("as")) {
- const as_ident = this.parseIdentifier(true);
-
- if (specifierTypeKind !== null && !this.match(types.name) && !this.state.type.keyword) {
- specifier.imported = as_ident;
- specifier.importKind = specifierTypeKind;
- specifier.local = as_ident.__clone();
- } else {
- specifier.imported = firstIdent;
- specifier.importKind = null;
- specifier.local = this.parseIdentifier();
- }
- } else if (specifierTypeKind !== null && (this.match(types.name) || this.state.type.keyword)) {
- specifier.imported = this.parseIdentifier(true);
- specifier.importKind = specifierTypeKind;
-
- if (this.eatContextual("as")) {
- specifier.local = this.parseIdentifier();
- } else {
- isBinding = true;
- specifier.local = specifier.imported.__clone();
- }
- } else {
- isBinding = true;
- specifier.imported = firstIdent;
- specifier.importKind = null;
- specifier.local = specifier.imported.__clone();
- }
-
- const nodeIsTypeImport = hasTypeImportKind(node);
- const specifierIsTypeImport = hasTypeImportKind(specifier);
-
- if (nodeIsTypeImport && specifierIsTypeImport) {
- this.raise(firstIdentLoc, "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");
- }
-
- if (nodeIsTypeImport || specifierIsTypeImport) {
- this.checkReservedType(specifier.local.name, specifier.local.start, true);
- }
-
- if (isBinding && !nodeIsTypeImport && !specifierIsTypeImport) {
- this.checkReservedWord(specifier.local.name, specifier.start, true, true);
- }
-
- this.checkLVal(specifier.local, BIND_LEXICAL, undefined, "import specifier");
- node.specifiers.push(this.finishNode(specifier, "ImportSpecifier"));
- }
-
- parseFunctionParams(node, allowModifiers) {
- const kind = node.kind;
-
- if (kind !== "get" && kind !== "set" && this.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterDeclaration();
- }
-
- super.parseFunctionParams(node, allowModifiers);
- }
-
- parseVarId(decl, kind) {
- super.parseVarId(decl, kind);
-
- if (this.match(types.colon)) {
- decl.id.typeAnnotation = this.flowParseTypeAnnotation();
- this.resetEndLocation(decl.id);
- }
- }
-
- parseAsyncArrowFromCallExpression(node, call) {
- if (this.match(types.colon)) {
- 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(types.colon) || super.shouldParseAsyncArrow();
- }
-
- parseMaybeAssign(noIn, refExpressionErrors, afterLeftParse, refNeedsArrowPos) {
- let state = null;
- let jsx;
-
- if (this.hasPlugin("jsx") && (this.match(types.jsxTagStart) || this.isRelational("<"))) {
- state = this.state.clone();
- jsx = this.tryParse(() => super.parseMaybeAssign(noIn, refExpressionErrors, afterLeftParse, refNeedsArrowPos), state);
- if (!jsx.error) return jsx.node;
- const {
- context
- } = this.state;
-
- if (context[context.length - 1] === types$1.j_oTag) {
- context.length -= 2;
- } else if (context[context.length - 1] === types$1.j_expr) {
- context.length -= 1;
- }
- }
-
- if (jsx && jsx.error || this.isRelational("<")) {
- state = state || this.state.clone();
- let typeParameters;
- const arrow = this.tryParse(() => {
- typeParameters = this.flowParseTypeParameterDeclaration();
- const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => super.parseMaybeAssign(noIn, refExpressionErrors, afterLeftParse, refNeedsArrowPos));
- arrowExpression.typeParameters = typeParameters;
- this.resetStartLocationFromNode(arrowExpression, typeParameters);
- return arrowExpression;
- }, state);
- const arrowExpression = arrow.node && arrow.node.type === "ArrowFunctionExpression" ? arrow.node : null;
- if (!arrow.error && arrowExpression) return arrowExpression;
-
- if (jsx && jsx.node) {
- this.state = jsx.failState;
- return jsx.node;
- }
-
- if (arrowExpression) {
- this.state = arrow.failState;
- return arrowExpression;
- }
-
- if (jsx && jsx.thrown) throw jsx.error;
- if (arrow.thrown) throw arrow.error;
- throw this.raise(typeParameters.start, "Expected an arrow function after this type parameter declaration");
- }
-
- return super.parseMaybeAssign(noIn, refExpressionErrors, afterLeftParse, refNeedsArrowPos);
- }
-
- parseArrow(node) {
- if (this.match(types.colon)) {
- 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(types.arrow)) 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() {
- return this.match(types.colon) || super.shouldParseArrow();
- }
-
- 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;
- }
-
- 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(types.parenR, false);
- base = this.finishNode(node, "CallExpression");
- } else if (base.type === "Identifier" && base.name === "async" && this.isRelational("<")) {
- 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(types.questionDot) && this.isLookaheadRelational("<")) {
- 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(types.parenL);
- node.arguments = this.parseCallExpressionArguments(types.parenR, false);
- node.optional = true;
- return this.finishCallExpression(node, true);
- } else if (!noCalls && this.shouldParseTypes() && this.isRelational("<")) {
- const node = this.startNodeAt(startPos, startLoc);
- node.callee = base;
- const result = this.tryParse(() => {
- node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew();
- this.expect(types.parenL);
- node.arguments = this.parseCallExpressionArguments(types.parenR, 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.isRelational("<")) {
- 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(types.braceBarR, 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, "Unterminated flow-comment");
- }
-
- return fileNode;
- }
-
- skipBlockComment() {
- if (this.hasPlugin("flowComments") && this.skipFlowComment()) {
- if (this.state.hasFlowComment) {
- this.unexpected(null, "Cannot have a flow comment inside another flow comment");
- }
-
- 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, "Unterminated comment");
- }
-
- this.state.pos = end + 3;
- 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, "Unterminated comment");
- }
- }
-
- flowEnumErrorBooleanMemberNotInitialized(pos, {
- enumName,
- memberName
- }) {
- this.raise(pos, `Boolean enum members need to be initialized. Use either \`${memberName} = true,\` ` + `or \`${memberName} = false,\` in enum \`${enumName}\`.`);
- }
-
- flowEnumErrorInvalidMemberName(pos, {
- enumName,
- memberName
- }) {
- const suggestion = memberName[0].toUpperCase() + memberName.slice(1);
- this.raise(pos, `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using ` + `\`${memberName}\`, consider using \`${suggestion}\`, in enum \`${enumName}\`.`);
- }
-
- flowEnumErrorDuplicateMemberName(pos, {
- enumName,
- memberName
- }) {
- this.raise(pos, `Enum member names need to be unique, but the name \`${memberName}\` has already been used ` + `before in enum \`${enumName}\`.`);
- }
-
- flowEnumErrorInconsistentMemberValues(pos, {
- enumName
- }) {
- this.raise(pos, `Enum \`${enumName}\` has inconsistent member initializers. Either use no initializers, or ` + `consistently use literals (either booleans, numbers, or strings) for all member initializers.`);
- }
-
- flowEnumErrorInvalidExplicitType(pos, {
- enumName,
- suppliedType
- }) {
- const suggestion = `Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in ` + `enum \`${enumName}\`.`;
- const message = suppliedType === null ? `Supplied enum type is not valid. ${suggestion}` : `Enum type \`${suppliedType}\` is not valid. ${suggestion}`;
- return this.raise(pos, message);
- }
-
- flowEnumErrorInvalidMemberInitializer(pos, {
- enumName,
- explicitType,
- memberName
- }) {
- let message = null;
-
- switch (explicitType) {
- case "boolean":
- case "number":
- case "string":
- message = `Enum \`${enumName}\` has type \`${explicitType}\`, so the initializer of ` + `\`${memberName}\` needs to be a ${explicitType} literal.`;
- break;
-
- case "symbol":
- message = `Symbol enum members cannot be initialized. Use \`${memberName},\` in ` + `enum \`${enumName}\`.`;
- break;
-
- default:
- message = `The enum member initializer for \`${memberName}\` needs to be a literal (either ` + `a boolean, number, or string) in enum \`${enumName}\`.`;
- }
-
- return this.raise(pos, message);
- }
-
- flowEnumErrorNumberMemberNotInitialized(pos, {
- enumName,
- memberName
- }) {
- this.raise(pos, `Number enum members need to be initialized, e.g. \`${memberName} = 1\` in enum \`${enumName}\`.`);
- }
-
- flowEnumErrorStringMemberInconsistentlyInitailized(pos, {
- enumName
- }) {
- this.raise(pos, `String enum members need to consistently either all use initializers, or use no initializers, ` + `in enum \`${enumName}\`.`);
- }
-
- flowEnumMemberInit() {
- const startPos = this.state.start;
-
- const endOfInit = () => this.match(types.comma) || this.match(types.braceR);
-
- switch (this.state.type) {
- case types.num:
- {
- const literal = this.parseLiteral(this.state.value, "NumericLiteral");
-
- if (endOfInit()) {
- return {
- type: "number",
- pos: literal.start,
- value: literal
- };
- }
-
- return {
- type: "invalid",
- pos: startPos
- };
- }
-
- case types.string:
- {
- const literal = this.parseLiteral(this.state.value, "StringLiteral");
-
- if (endOfInit()) {
- return {
- type: "string",
- pos: literal.start,
- value: literal
- };
- }
-
- return {
- type: "invalid",
- pos: startPos
- };
- }
-
- case types._true:
- case types._false:
- {
- const literal = this.parseBooleanLiteral();
-
- 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(types.eq) ? 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: []
- };
-
- while (!this.match(types.braceR)) {
- 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(types.braceR)) {
- this.expect(types.comma);
- }
- }
-
- return members;
- }
-
- flowEnumStringMembers(initializedMembers, defaultedMembers, {
- enumName
- }) {
- if (initializedMembers.length === 0) {
- return defaultedMembers;
- } else if (defaultedMembers.length === 0) {
- return initializedMembers;
- } else if (defaultedMembers.length > initializedMembers.length) {
- for (let _i = 0; _i < initializedMembers.length; _i++) {
- const member = initializedMembers[_i];
- this.flowEnumErrorStringMemberInconsistentlyInitailized(member.start, {
- enumName
- });
- }
-
- return defaultedMembers;
- } else {
- for (let _i2 = 0; _i2 < defaultedMembers.length; _i2++) {
- const member = defaultedMembers[_i2];
- this.flowEnumErrorStringMemberInconsistentlyInitailized(member.start, {
- enumName
- });
- }
-
- return initializedMembers;
- }
- }
-
- flowEnumParseExplicitType({
- enumName
- }) {
- if (this.eatContextual("of")) {
- if (!this.match(types.name)) {
- 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(types.braceL);
- const members = this.flowEnumMembers({
- enumName,
- explicitType
- });
-
- switch (explicitType) {
- case "boolean":
- node.explicitType = true;
- node.members = members.booleanMembers;
- this.expect(types.braceR);
- return this.finishNode(node, "EnumBooleanBody");
-
- case "number":
- node.explicitType = true;
- node.members = members.numberMembers;
- this.expect(types.braceR);
- return this.finishNode(node, "EnumNumberBody");
-
- case "string":
- node.explicitType = true;
- node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {
- enumName
- });
- this.expect(types.braceR);
- return this.finishNode(node, "EnumStringBody");
-
- case "symbol":
- node.members = members.defaultedMembers;
- this.expect(types.braceR);
- return this.finishNode(node, "EnumSymbolBody");
-
- default:
- {
- const empty = () => {
- node.members = [];
- this.expect(types.braceR);
- 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(types.braceR);
- return this.finishNode(node, "EnumStringBody");
- } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {
- for (let _i3 = 0, _members$defaultedMem = members.defaultedMembers; _i3 < _members$defaultedMem.length; _i3++) {
- const member = _members$defaultedMem[_i3];
- this.flowEnumErrorBooleanMemberNotInitialized(member.start, {
- enumName,
- memberName: member.id.name
- });
- }
-
- node.members = members.booleanMembers;
- this.expect(types.braceR);
- return this.finishNode(node, "EnumBooleanBody");
- } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {
- for (let _i4 = 0, _members$defaultedMem2 = members.defaultedMembers; _i4 < _members$defaultedMem2.length; _i4++) {
- const member = _members$defaultedMem2[_i4];
- this.flowEnumErrorNumberMemberNotInitialized(member.start, {
- enumName,
- memberName: member.id.name
- });
- }
-
- node.members = members.numberMembers;
- this.expect(types.braceR);
- 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");
- }
-
-});
-
-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+$/;
-types$1.j_oTag = new TokContext("<tag", false);
-types$1.j_cTag = new TokContext("</tag", false);
-types$1.j_expr = new TokContext("<tag>...</tag>", true, true);
-types.jsxName = new TokenType("jsxName");
-types.jsxText = new TokenType("jsxText", {
- beforeExpr: true
-});
-types.jsxTagStart = new TokenType("jsxTagStart", {
- startsExpr: true
-});
-types.jsxTagEnd = new TokenType("jsxTagEnd");
-
-types.jsxTagStart.updateContext = function () {
- this.state.context.push(types$1.j_expr);
- this.state.context.push(types$1.j_oTag);
- this.state.exprAllowed = false;
-};
-
-types.jsxTagEnd.updateContext = function (prevType) {
- const out = this.state.context.pop();
-
- if (out === types$1.j_oTag && prevType === types.slash || out === types$1.j_cTag) {
- this.state.context.pop();
- this.state.exprAllowed = this.curContext() === types$1.j_expr;
- } else {
- this.state.exprAllowed = 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, "Unterminated JSX contents");
- }
-
- 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.exprAllowed) {
- ++this.state.pos;
- return this.finishToken(types.jsxTagStart);
- }
-
- return super.getTokenFromCode(ch);
- }
-
- out += this.input.slice(chunkStart, this.state.pos);
- return this.finishToken(types.jsxText, out);
-
- case 38:
- out += this.input.slice(chunkStart, this.state.pos);
- out += this.jsxReadEntity();
- chunkStart = this.state.pos;
- break;
-
- 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, "Unterminated string constant");
- }
-
- 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(types.string, 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(types.jsxName, this.input.slice(start, this.state.pos));
- }
-
- jsxParseIdentifier() {
- const node = this.startNode();
-
- if (this.match(types.jsxName)) {
- node.name = this.state.value;
- } else if (this.state.type.keyword) {
- node.name = this.state.type.keyword;
- } 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(types.colon)) 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(types.dot)) {
- 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 types.braceL:
- node = this.startNode();
- this.next();
- node = this.jsxParseExpressionContainer(node);
-
- if (node.expression.type === "JSXEmptyExpression") {
- this.raise(node.start, "JSX attributes must only be assigned a non-empty expression");
- }
-
- return node;
-
- case types.jsxTagStart:
- case types.string:
- return this.parseExprAtom();
-
- default:
- throw this.raise(this.state.start, "JSX value should be either an expression or a quoted JSX text");
- }
- }
-
- 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(types.braceR);
- return this.finishNode(node, "JSXSpreadChild");
- }
-
- jsxParseExpressionContainer(node) {
- if (this.match(types.braceR)) {
- node.expression = this.jsxParseEmptyExpression();
- } else {
- node.expression = this.parseExpression();
- }
-
- this.expect(types.braceR);
- return this.finishNode(node, "JSXExpressionContainer");
- }
-
- jsxParseAttribute() {
- const node = this.startNode();
-
- if (this.eat(types.braceL)) {
- this.expect(types.ellipsis);
- node.argument = this.parseMaybeAssign();
- this.expect(types.braceR);
- return this.finishNode(node, "JSXSpreadAttribute");
- }
-
- node.name = this.jsxParseNamespacedName();
- node.value = this.eat(types.eq) ? this.jsxParseAttributeValue() : null;
- return this.finishNode(node, "JSXAttribute");
- }
-
- jsxParseOpeningElementAt(startPos, startLoc) {
- const node = this.startNodeAt(startPos, startLoc);
-
- if (this.match(types.jsxTagEnd)) {
- this.expect(types.jsxTagEnd);
- return this.finishNode(node, "JSXOpeningFragment");
- }
-
- node.name = this.jsxParseElementName();
- return this.jsxParseOpeningElementAfterName(node);
- }
-
- jsxParseOpeningElementAfterName(node) {
- const attributes = [];
-
- while (!this.match(types.slash) && !this.match(types.jsxTagEnd)) {
- attributes.push(this.jsxParseAttribute());
- }
-
- node.attributes = attributes;
- node.selfClosing = this.eat(types.slash);
- this.expect(types.jsxTagEnd);
- return this.finishNode(node, "JSXOpeningElement");
- }
-
- jsxParseClosingElementAt(startPos, startLoc) {
- const node = this.startNodeAt(startPos, startLoc);
-
- if (this.match(types.jsxTagEnd)) {
- this.expect(types.jsxTagEnd);
- return this.finishNode(node, "JSXClosingFragment");
- }
-
- node.name = this.jsxParseElementName();
- this.expect(types.jsxTagEnd);
- 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 types.jsxTagStart:
- startPos = this.state.start;
- startLoc = this.state.startLoc;
- this.next();
-
- if (this.eat(types.slash)) {
- closingElement = this.jsxParseClosingElementAt(startPos, startLoc);
- break contents;
- }
-
- children.push(this.jsxParseElementAt(startPos, startLoc));
- break;
-
- case types.jsxText:
- children.push(this.parseExprAtom());
- break;
-
- case types.braceL:
- {
- const node = this.startNode();
- this.next();
-
- if (this.match(types.ellipsis)) {
- 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, "Expected corresponding JSX closing tag for <>");
- } else if (!isFragment(openingElement) && isFragment(closingElement)) {
- this.raise(closingElement.start, "Expected corresponding JSX closing tag for <" + getQualifiedJSXName(openingElement.name) + ">");
- } else if (!isFragment(openingElement) && !isFragment(closingElement)) {
- if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {
- this.raise(closingElement.start, "Expected corresponding JSX closing tag for <" + getQualifiedJSXName(openingElement.name) + ">");
- }
- }
- }
-
- if (isFragment(openingElement)) {
- node.openingFragment = openingElement;
- node.closingFragment = closingElement;
- } else {
- node.openingElement = openingElement;
- node.closingElement = closingElement;
- }
-
- node.children = children;
-
- if (this.isRelational("<")) {
- throw this.raise(this.state.start, "Adjacent JSX elements must be wrapped in an enclosing tag. " + "Did you want a JSX fragment <>...</>?");
- }
-
- 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(types.jsxText)) {
- return this.parseLiteral(this.state.value, "JSXText");
- } else if (this.match(types.jsxTagStart)) {
- return this.jsxParseElement();
- } else if (this.isRelational("<") && this.input.charCodeAt(this.state.pos) !== 33) {
- this.finishToken(types.jsxTagStart);
- return this.jsxParseElement();
- } else {
- return super.parseExprAtom(refExpressionErrors);
- }
- }
-
- getTokenFromCode(code) {
- if (this.state.inPropertyName) return super.getTokenFromCode(code);
- const context = this.curContext();
-
- if (context === types$1.j_expr) {
- return this.jsxReadToken();
- }
-
- if (context === types$1.j_oTag || context === types$1.j_cTag) {
- if (isIdentifierStart(code)) {
- return this.jsxReadWord();
- }
-
- if (code === 62) {
- ++this.state.pos;
- return this.finishToken(types.jsxTagEnd);
- }
-
- if ((code === 34 || code === 39) && context === types$1.j_oTag) {
- return this.jsxReadString(code);
- }
- }
-
- if (code === 60 && this.state.exprAllowed && this.input.charCodeAt(this.state.pos + 1) !== 33) {
- ++this.state.pos;
- return this.finishToken(types.jsxTagStart);
- }
-
- return super.getTokenFromCode(code);
- }
-
- updateContext(prevType) {
- if (this.match(types.braceL)) {
- const curContext = this.curContext();
-
- if (curContext === types$1.j_oTag) {
- this.state.context.push(types$1.braceExpression);
- } else if (curContext === types$1.j_expr) {
- this.state.context.push(types$1.templateQuasi);
- } else {
- super.updateContext(prevType);
- }
-
- this.state.exprAllowed = true;
- } else if (this.match(types.slash) && prevType === types.jsxTagStart) {
- this.state.context.length -= 2;
- this.state.context.push(types$1.j_cTag);
- this.state.exprAllowed = false;
- } else {
- return super.updateContext(prevType);
- }
- }
-
-});
-
-class Scope {
- constructor(flags) {
- this.var = [];
- this.lexical = [];
- this.functions = [];
- 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.currentVarScope().flags & SCOPE_FUNCTION) > 0;
- }
-
- get inGenerator() {
- return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0;
- }
-
- get inAsync() {
- for (let i = this.scopeStack.length - 1;; i--) {
- const scope = this.scopeStack[i];
- const isVarScope = scope.flags & SCOPE_VAR;
- const isClassScope = scope.flags & SCOPE_CLASS;
-
- if (isClassScope && !isVarScope) {
- return false;
- } else if (isVarScope) {
- return (scope.flags & SCOPE_ASYNC) > 0;
- }
- }
- }
-
- get allowSuper() {
- return (this.currentThisScope().flags & SCOPE_SUPER) > 0;
- }
-
- get allowDirectSuper() {
- return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0;
- }
-
- get inClass() {
- return (this.currentThisScope().flags & SCOPE_CLASS) > 0;
- }
-
- get inNonArrowFunction() {
- return (this.currentThisScope().flags & 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.push(name);
- } else {
- scope.lexical.push(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.push(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, `Identifier '${name}' has already been declared`);
- }
- }
-
- isRedeclaredInScope(scope, name, bindingType) {
- if (!(bindingType & BIND_KIND_VALUE)) return false;
-
- if (bindingType & BIND_SCOPE_LEXICAL) {
- return scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;
- }
-
- if (bindingType & BIND_SCOPE_FUNCTION) {
- return scope.lexical.indexOf(name) > -1 || !this.treatFunctionsAsVarInScope(scope) && scope.var.indexOf(name) > -1;
- }
-
- return scope.lexical.indexOf(name) > -1 && !(scope.flags & SCOPE_SIMPLE_CATCH && scope.lexical[0] === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.indexOf(name) > -1;
- }
-
- checkLocalExport(id) {
- if (this.scopeStack[0].lexical.indexOf(id.name) === -1 && this.scopeStack[0].var.indexOf(id.name) === -1 && this.scopeStack[0].functions.indexOf(id.name) === -1) {
- this.undefinedExports.set(id.name, id.start);
- }
- }
-
- currentScope() {
- return this.scopeStack[this.scopeStack.length - 1];
- }
-
- currentVarScope() {
- for (let i = this.scopeStack.length - 1;; i--) {
- const scope = this.scopeStack[i];
-
- if (scope.flags & SCOPE_VAR) {
- return scope;
- }
- }
- }
-
- currentThisScope() {
- for (let i = this.scopeStack.length - 1;; i--) {
- const scope = this.scopeStack[i];
-
- if ((scope.flags & SCOPE_VAR || scope.flags & SCOPE_CLASS) && !(scope.flags & SCOPE_ARROW)) {
- return scope;
- }
- }
- }
-
-}
-
-class TypeScriptScope extends Scope {
- constructor(...args) {
- super(...args);
- this.types = [];
- this.enums = [];
- this.constEnums = [];
- this.classes = [];
- this.exportOnlyBindings = [];
- }
-
-}
-
-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.push(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.push(name);
- }
-
- if (bindingType & BIND_FLAGS_TS_ENUM) scope.enums.push(name);
- if (bindingType & BIND_FLAGS_TS_CONST_ENUM) scope.constEnums.push(name);
- if (bindingType & BIND_FLAGS_CLASS) scope.classes.push(name);
- }
-
- isRedeclaredInScope(scope, name, bindingType) {
- if (scope.enums.indexOf(name) > -1) {
- if (bindingType & BIND_FLAGS_TS_ENUM) {
- const isConst = !!(bindingType & BIND_FLAGS_TS_CONST_ENUM);
- const wasConst = scope.constEnums.indexOf(name) > -1;
- return isConst !== wasConst;
- }
-
- return true;
- }
-
- if (bindingType & BIND_FLAGS_CLASS && scope.classes.indexOf(name) > -1) {
- if (scope.lexical.indexOf(name) > -1) {
- return !!(bindingType & BIND_KIND_VALUE);
- } else {
- return false;
- }
- }
-
- if (bindingType & BIND_KIND_TYPE && scope.types.indexOf(name) > -1) {
- return true;
- }
-
- return super.isRedeclaredInScope(...arguments);
- }
-
- checkLocalExport(id) {
- if (this.scopeStack[0].types.indexOf(id.name) === -1 && this.scopeStack[0].exportOnlyBindings.indexOf(id.name) === -1) {
- 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");
- }
-}
-
-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;
- }
-}
-
-var typescript = (superClass => class extends superClass {
- getScopeHandler() {
- return TypeScriptScopeHandler;
- }
-
- tsIsIdentifier() {
- return this.match(types.name);
- }
-
- tsNextTokenCanFollowModifier() {
- this.next();
- return !this.hasPrecedingLineBreak() && !this.match(types.parenL) && !this.match(types.parenR) && !this.match(types.colon) && !this.match(types.eq) && !this.match(types.question) && !this.match(types.bang);
- }
-
- tsParseModifier(allowedModifiers) {
- if (!this.match(types.name)) {
- return undefined;
- }
-
- const modifier = this.state.value;
-
- if (allowedModifiers.indexOf(modifier) !== -1 && this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {
- return modifier;
- }
-
- return undefined;
- }
-
- tsParseModifiers(allowedModifiers) {
- const modifiers = Object.create(null);
-
- while (true) {
- const startPos = this.state.start;
- const modifier = this.tsParseModifier(allowedModifiers);
- if (!modifier) break;
-
- if (Object.hasOwnProperty.call(modifiers, modifier)) {
- this.raise(startPos, `Duplicate modifier: '${modifier}'`);
- }
-
- modifiers[modifier] = true;
- }
-
- return modifiers;
- }
-
- tsIsListTerminator(kind) {
- switch (kind) {
- case "EnumMembers":
- case "TypeMembers":
- return this.match(types.braceR);
-
- case "HeritageClauseElement":
- return this.match(types.braceL);
-
- case "TupleElementTypes":
- return this.match(types.bracketR);
-
- case "TypeParametersOrArguments":
- return this.isRelational(">");
- }
-
- throw new Error("Unreachable");
- }
-
- tsParseList(kind, parseElement) {
- const result = [];
-
- while (!this.tsIsListTerminator(kind)) {
- result.push(parseElement());
- }
-
- return result;
- }
-
- tsParseDelimitedList(kind, parseElement) {
- return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true));
- }
-
- tsParseDelimitedListWorker(kind, parseElement, expectSuccess) {
- const result = [];
-
- while (true) {
- if (this.tsIsListTerminator(kind)) {
- break;
- }
-
- const element = parseElement();
-
- if (element == null) {
- return undefined;
- }
-
- result.push(element);
-
- if (this.eat(types.comma)) {
- continue;
- }
-
- if (this.tsIsListTerminator(kind)) {
- break;
- }
-
- if (expectSuccess) {
- this.expect(types.comma);
- }
-
- return undefined;
- }
-
- return result;
- }
-
- tsParseBracketedList(kind, parseElement, bracket, skipFirstToken) {
- if (!skipFirstToken) {
- if (bracket) {
- this.expect(types.bracketL);
- } else {
- this.expectRelational("<");
- }
- }
-
- const result = this.tsParseDelimitedList(kind, parseElement);
-
- if (bracket) {
- this.expect(types.bracketR);
- } else {
- this.expectRelational(">");
- }
-
- return result;
- }
-
- tsParseImportType() {
- const node = this.startNode();
- this.expect(types._import);
- this.expect(types.parenL);
-
- if (!this.match(types.string)) {
- this.raise(this.state.start, "Argument in a type import must be a string literal");
- }
-
- node.argument = this.parseExprAtom();
- this.expect(types.parenR);
-
- if (this.eat(types.dot)) {
- node.qualifier = this.tsParseEntityName(true);
- }
-
- if (this.isRelational("<")) {
- node.typeParameters = this.tsParseTypeArguments();
- }
-
- return this.finishNode(node, "TSImportType");
- }
-
- tsParseEntityName(allowReservedWords) {
- let entity = this.parseIdentifier();
-
- while (this.eat(types.dot)) {
- 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.isRelational("<")) {
- 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);
- return this.finishNode(node, "TSTypePredicate");
- }
-
- tsParseThisTypeNode() {
- const node = this.startNode();
- this.next();
- return this.finishNode(node, "TSThisType");
- }
-
- tsParseTypeQuery() {
- const node = this.startNode();
- this.expect(types._typeof);
-
- if (this.match(types._import)) {
- node.exprName = this.tsParseImportType();
- } else {
- node.exprName = this.tsParseEntityName(true);
- }
-
- return this.finishNode(node, "TSTypeQuery");
- }
-
- tsParseTypeParameter() {
- const node = this.startNode();
- node.name = this.parseIdentifierName(node.start);
- node.constraint = this.tsEatThenParseType(types._extends);
- node.default = this.tsEatThenParseType(types.eq);
- return this.finishNode(node, "TSTypeParameter");
- }
-
- tsTryParseTypeParameters() {
- if (this.isRelational("<")) {
- return this.tsParseTypeParameters();
- }
- }
-
- tsParseTypeParameters() {
- const node = this.startNode();
-
- if (this.isRelational("<") || this.match(types.jsxTagStart)) {
- this.next();
- } else {
- this.unexpected();
- }
-
- node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this), false, true);
- return this.finishNode(node, "TSTypeParameterDeclaration");
- }
-
- tsTryNextParseConstantContext() {
- if (this.lookahead().type === types._const) {
- this.next();
- return this.tsParseTypeReference();
- }
-
- return null;
- }
-
- tsFillSignature(returnToken, signature) {
- const returnTokenRequired = returnToken === types.arrow;
- signature.typeParameters = this.tsTryParseTypeParameters();
- this.expect(types.parenL);
- 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(types.parenR, 41).map(pattern => {
- if (pattern.type !== "Identifier" && pattern.type !== "RestElement" && pattern.type !== "ObjectPattern" && pattern.type !== "ArrayPattern") {
- this.raise(pattern.start, "Name in a signature must be an Identifier, ObjectPattern or ArrayPattern," + `instead got ${pattern.type}`);
- }
-
- return pattern;
- });
- }
-
- tsParseTypeMemberSemicolon() {
- if (!this.eat(types.comma)) {
- this.semicolon();
- }
- }
-
- tsParseSignatureMember(kind, node) {
- this.tsFillSignature(types.colon, node);
- this.tsParseTypeMemberSemicolon();
- return this.finishNode(node, kind);
- }
-
- tsIsUnambiguouslyIndexSignature() {
- this.next();
- return this.eat(types.name) && this.match(types.colon);
- }
-
- tsTryParseIndexSignature(node) {
- if (!(this.match(types.bracketL) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) {
- return undefined;
- }
-
- this.expect(types.bracketL);
- const id = this.parseIdentifier();
- id.typeAnnotation = this.tsParseTypeAnnotation();
- this.resetEndLocation(id);
- this.expect(types.bracketR);
- 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(types.question)) node.optional = true;
- const nodeAny = node;
-
- if (!readonly && (this.match(types.parenL) || this.isRelational("<"))) {
- const method = nodeAny;
- this.tsFillSignature(types.colon, method);
- this.tsParseTypeMemberSemicolon();
- 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(types.parenL) || this.isRelational("<")) {
- return this.tsParseSignatureMember("TSCallSignatureDeclaration", node);
- }
-
- if (this.match(types._new)) {
- const id = this.startNode();
- this.next();
-
- if (this.match(types.parenL) || this.isRelational("<")) {
- return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node);
- } else {
- node.key = this.createIdentifier(id, "new");
- return this.tsParsePropertyOrMethodSignature(node, false);
- }
- }
-
- const readonly = !!this.tsParseModifier(["readonly"]);
- const idx = this.tsTryParseIndexSignature(node);
-
- if (idx) {
- if (readonly) node.readonly = true;
- return idx;
- }
-
- this.parsePropertyName(node, false);
- return this.tsParsePropertyOrMethodSignature(node, readonly);
- }
-
- tsParseTypeLiteral() {
- const node = this.startNode();
- node.members = this.tsParseObjectTypeMembers();
- return this.finishNode(node, "TSTypeLiteral");
- }
-
- tsParseObjectTypeMembers() {
- this.expect(types.braceL);
- const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this));
- this.expect(types.braceR);
- return members;
- }
-
- tsIsStartOfMappedType() {
- this.next();
-
- if (this.eat(types.plusMin)) {
- return this.isContextual("readonly");
- }
-
- if (this.isContextual("readonly")) {
- this.next();
- }
-
- if (!this.match(types.bracketL)) {
- return false;
- }
-
- this.next();
-
- if (!this.tsIsIdentifier()) {
- return false;
- }
-
- this.next();
- return this.match(types._in);
- }
-
- tsParseMappedTypeParameter() {
- const node = this.startNode();
- node.name = this.parseIdentifierName(node.start);
- node.constraint = this.tsExpectThenParseType(types._in);
- return this.finishNode(node, "TSTypeParameter");
- }
-
- tsParseMappedType() {
- const node = this.startNode();
- this.expect(types.braceL);
-
- if (this.match(types.plusMin)) {
- node.readonly = this.state.value;
- this.next();
- this.expectContextual("readonly");
- } else if (this.eatContextual("readonly")) {
- node.readonly = true;
- }
-
- this.expect(types.bracketL);
- node.typeParameter = this.tsParseMappedTypeParameter();
- this.expect(types.bracketR);
-
- if (this.match(types.plusMin)) {
- node.optional = this.state.value;
- this.next();
- this.expect(types.question);
- } else if (this.eat(types.question)) {
- node.optional = true;
- }
-
- node.typeAnnotation = this.tsTryParseType();
- this.semicolon();
- this.expect(types.braceR);
- return this.finishNode(node, "TSMappedType");
- }
-
- tsParseTupleType() {
- const node = this.startNode();
- node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false);
- let seenOptionalElement = false;
- node.elementTypes.forEach(elementNode => {
- if (elementNode.type === "TSOptionalType") {
- seenOptionalElement = true;
- } else if (seenOptionalElement && elementNode.type !== "TSRestType") {
- this.raise(elementNode.start, "A required element cannot follow an optional element.");
- }
- });
- return this.finishNode(node, "TSTupleType");
- }
-
- tsParseTupleElementType() {
- if (this.match(types.ellipsis)) {
- const restNode = this.startNode();
- this.next();
- restNode.typeAnnotation = this.tsParseType();
-
- if (this.match(types.comma) && this.lookaheadCharCode() !== 93) {
- this.raiseRestNotLast(this.state.start);
- }
-
- return this.finishNode(restNode, "TSRestType");
- }
-
- const type = this.tsParseType();
-
- if (this.eat(types.question)) {
- const optionalTypeNode = this.startNodeAtNode(type);
- optionalTypeNode.typeAnnotation = type;
- return this.finishNode(optionalTypeNode, "TSOptionalType");
- }
-
- return type;
- }
-
- tsParseParenthesizedType() {
- const node = this.startNode();
- this.expect(types.parenL);
- node.typeAnnotation = this.tsParseType();
- this.expect(types.parenR);
- return this.finishNode(node, "TSParenthesizedType");
- }
-
- tsParseFunctionOrConstructorType(type) {
- const node = this.startNode();
-
- if (type === "TSConstructorType") {
- this.expect(types._new);
- }
-
- this.tsFillSignature(types.arrow, node);
- return this.finishNode(node, type);
- }
-
- tsParseLiteralTypeNode() {
- const node = this.startNode();
-
- node.literal = (() => {
- switch (this.state.type) {
- case types.num:
- case types.string:
- case types._true:
- case types._false:
- return this.parseExprAtom();
-
- default:
- throw this.unexpected();
- }
- })();
-
- return this.finishNode(node, "TSLiteralType");
- }
-
- tsParseTemplateLiteralType() {
- const node = this.startNode();
- const templateNode = this.parseTemplate(false);
-
- if (templateNode.expressions.length > 0) {
- this.raise(templateNode.expressions[0].start, "Template literal types cannot have any substitution");
- }
-
- node.literal = templateNode;
- return this.finishNode(node, "TSLiteralType");
- }
-
- tsParseThisTypeOrThisTypePredicate() {
- const thisKeyword = this.tsParseThisTypeNode();
-
- if (this.isContextual("is") && !this.hasPrecedingLineBreak()) {
- return this.tsParseThisTypePredicate(thisKeyword);
- } else {
- return thisKeyword;
- }
- }
-
- tsParseNonArrayType() {
- switch (this.state.type) {
- case types.name:
- case types._void:
- case types._null:
- {
- const type = this.match(types._void) ? "TSVoidKeyword" : this.match(types._null) ? "TSNullKeyword" : keywordTypeFromName(this.state.value);
-
- if (type !== undefined && this.lookaheadCharCode() !== 46) {
- const node = this.startNode();
- this.next();
- return this.finishNode(node, type);
- }
-
- return this.tsParseTypeReference();
- }
-
- case types.string:
- case types.num:
- case types._true:
- case types._false:
- return this.tsParseLiteralTypeNode();
-
- case types.plusMin:
- if (this.state.value === "-") {
- const node = this.startNode();
-
- if (this.lookahead().type !== types.num) {
- throw this.unexpected();
- }
-
- node.literal = this.parseMaybeUnary();
- return this.finishNode(node, "TSLiteralType");
- }
-
- break;
-
- case types._this:
- return this.tsParseThisTypeOrThisTypePredicate();
-
- case types._typeof:
- return this.tsParseTypeQuery();
-
- case types._import:
- return this.tsParseImportType();
-
- case types.braceL:
- return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral();
-
- case types.bracketL:
- return this.tsParseTupleType();
-
- case types.parenL:
- return this.tsParseParenthesizedType();
-
- case types.backQuote:
- return this.tsParseTemplateLiteralType();
- }
-
- throw this.unexpected();
- }
-
- tsParseArrayTypeOrHigher() {
- let type = this.tsParseNonArrayType();
-
- while (!this.hasPrecedingLineBreak() && this.eat(types.bracketL)) {
- if (this.match(types.bracketR)) {
- const node = this.startNodeAtNode(type);
- node.elementType = type;
- this.expect(types.bracketR);
- type = this.finishNode(node, "TSArrayType");
- } else {
- const node = this.startNodeAtNode(type);
- node.objectType = type;
- node.indexType = this.tsParseType();
- this.expect(types.bracketR);
- type = this.finishNode(node, "TSIndexedAccessType");
- }
- }
-
- return type;
- }
-
- tsParseTypeOperator(operator) {
- const node = this.startNode();
- this.expectContextual(operator);
- 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, "'readonly' type modifier is only permitted on array and tuple literal types.");
- }
- }
-
- tsParseInferType() {
- const node = this.startNode();
- this.expectContextual("infer");
- const typeParameter = this.startNode();
- typeParameter.name = this.parseIdentifierName(typeParameter.start);
- node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter");
- return this.finishNode(node, "TSInferType");
- }
-
- tsParseTypeOperatorOrHigher() {
- const operator = ["keyof", "unique", "readonly"].find(kw => this.isContextual(kw));
- return operator ? this.tsParseTypeOperator(operator) : this.isContextual("infer") ? this.tsParseInferType() : this.tsParseArrayTypeOrHigher();
- }
-
- tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) {
- this.eat(operator);
- let type = parseConstituentType();
-
- if (this.match(operator)) {
- const types = [type];
-
- while (this.eat(operator)) {
- types.push(parseConstituentType());
- }
-
- const node = this.startNodeAtNode(type);
- node.types = types;
- type = this.finishNode(node, kind);
- }
-
- return type;
- }
-
- tsParseIntersectionTypeOrHigher() {
- return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), types.bitwiseAND);
- }
-
- tsParseUnionTypeOrHigher() {
- return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), types.bitwiseOR);
- }
-
- tsIsStartOfFunctionType() {
- if (this.isRelational("<")) {
- return true;
- }
-
- return this.match(types.parenL) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this));
- }
-
- tsSkipParameterStart() {
- if (this.match(types.name) || this.match(types._this)) {
- this.next();
- return true;
- }
-
- if (this.match(types.braceL)) {
- let braceStackCounter = 1;
- this.next();
-
- while (braceStackCounter > 0) {
- if (this.match(types.braceL)) {
- ++braceStackCounter;
- } else if (this.match(types.braceR)) {
- --braceStackCounter;
- }
-
- this.next();
- }
-
- return true;
- }
-
- if (this.match(types.bracketL)) {
- let braceStackCounter = 1;
- this.next();
-
- while (braceStackCounter > 0) {
- if (this.match(types.bracketL)) {
- ++braceStackCounter;
- } else if (this.match(types.bracketR)) {
- --braceStackCounter;
- }
-
- this.next();
- }
-
- return true;
- }
-
- return false;
- }
-
- tsIsUnambiguouslyStartOfFunctionType() {
- this.next();
-
- if (this.match(types.parenR) || this.match(types.ellipsis)) {
- return true;
- }
-
- if (this.tsSkipParameterStart()) {
- if (this.match(types.colon) || this.match(types.comma) || this.match(types.question) || this.match(types.eq)) {
- return true;
- }
-
- if (this.match(types.parenR)) {
- this.next();
-
- if (this.match(types.arrow)) {
- return true;
- }
- }
- }
-
- return false;
- }
-
- tsParseTypeOrTypePredicateAnnotation(returnToken) {
- return this.tsInType(() => {
- const t = this.startNode();
- this.expect(returnToken);
- const asserts = this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this));
-
- if (asserts && this.match(types._this)) {
- let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();
-
- if (thisTypePredicate.type === "TSThisType") {
- const node = this.startNodeAtNode(t);
- node.parameterName = thisTypePredicate;
- node.asserts = true;
- thisTypePredicate = this.finishNode(node, "TSTypePredicate");
- } else {
- 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);
- }
-
- const node = this.startNodeAtNode(t);
- node.parameterName = this.parseIdentifier();
- node.asserts = asserts;
- t.typeAnnotation = this.finishNode(node, "TSTypePredicate");
- return this.finishNode(t, "TSTypeAnnotation");
- }
-
- const type = this.tsParseTypeAnnotation(false);
- const node = this.startNodeAtNode(t);
- node.parameterName = typePredicateVariable;
- node.typeAnnotation = type;
- node.asserts = asserts;
- t.typeAnnotation = this.finishNode(node, "TSTypePredicate");
- return this.finishNode(t, "TSTypeAnnotation");
- });
- }
-
- tsTryParseTypeOrTypePredicateAnnotation() {
- return this.match(types.colon) ? this.tsParseTypeOrTypePredicateAnnotation(types.colon) : undefined;
- }
-
- tsTryParseTypeAnnotation() {
- return this.match(types.colon) ? this.tsParseTypeAnnotation() : undefined;
- }
-
- tsTryParseType() {
- return this.tsEatThenParseType(types.colon);
- }
-
- tsParseTypePredicatePrefix() {
- const id = this.parseIdentifier();
-
- if (this.isContextual("is") && !this.hasPrecedingLineBreak()) {
- this.next();
- return id;
- }
- }
-
- tsParseTypePredicateAsserts() {
- if (!this.match(types.name) || this.state.value !== "asserts" || this.hasPrecedingLineBreak()) {
- return false;
- }
-
- const containsEsc = this.state.containsEsc;
- this.next();
-
- if (!this.match(types.name) && !this.match(types._this)) {
- return false;
- }
-
- if (containsEsc) {
- this.raise(this.state.lastTokStart, "Escape sequence in keyword asserts");
- }
-
- return true;
- }
-
- tsParseTypeAnnotation(eatColon = true, t = this.startNode()) {
- this.tsInType(() => {
- if (eatColon) this.expect(types.colon);
- t.typeAnnotation = this.tsParseType();
- });
- return this.finishNode(t, "TSTypeAnnotation");
- }
-
- tsParseType() {
- assert(this.state.inType);
- const type = this.tsParseNonConditionalType();
-
- if (this.hasPrecedingLineBreak() || !this.eat(types._extends)) {
- return type;
- }
-
- const node = this.startNodeAtNode(type);
- node.checkType = type;
- node.extendsType = this.tsParseNonConditionalType();
- this.expect(types.question);
- node.trueType = this.tsParseType();
- this.expect(types.colon);
- node.falseType = this.tsParseType();
- return this.finishNode(node, "TSConditionalType");
- }
-
- tsParseNonConditionalType() {
- if (this.tsIsStartOfFunctionType()) {
- return this.tsParseFunctionOrConstructorType("TSFunctionType");
- }
-
- if (this.match(types._new)) {
- return this.tsParseFunctionOrConstructorType("TSConstructorType");
- }
-
- return this.tsParseUnionTypeOrHigher();
- }
-
- tsParseTypeAssertion() {
- const node = this.startNode();
-
- const _const = this.tsTryNextParseConstantContext();
-
- node.typeAnnotation = _const || this.tsNextThenParseType();
- this.expectRelational(">");
- 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, `'${descriptor}' list cannot be empty.`);
- }
-
- return delimitedList;
- }
-
- tsParseExpressionWithTypeArguments() {
- const node = this.startNode();
- node.expression = this.tsParseEntityName(false);
-
- if (this.isRelational("<")) {
- node.typeParameters = this.tsParseTypeArguments();
- }
-
- return this.finishNode(node, "TSExpressionWithTypeArguments");
- }
-
- tsParseInterfaceDeclaration(node) {
- node.id = this.parseIdentifier();
- this.checkLVal(node.id, BIND_TS_INTERFACE, undefined, "typescript interface declaration");
- node.typeParameters = this.tsTryParseTypeParameters();
-
- if (this.eat(types._extends)) {
- 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, BIND_TS_TYPE, undefined, "typescript type alias");
- node.typeParameters = this.tsTryParseTypeParameters();
- node.typeAnnotation = this.tsExpectThenParseType(types.eq);
- 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(types.string) ? this.parseExprAtom() : this.parseIdentifier(true);
-
- if (this.eat(types.eq)) {
- node.initializer = this.parseMaybeAssign();
- }
-
- return this.finishNode(node, "TSEnumMember");
- }
-
- tsParseEnumDeclaration(node, isConst) {
- if (isConst) node.const = true;
- node.id = this.parseIdentifier();
- this.checkLVal(node.id, isConst ? BIND_TS_CONST_ENUM : BIND_TS_ENUM, undefined, "typescript enum declaration");
- this.expect(types.braceL);
- node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this));
- this.expect(types.braceR);
- return this.finishNode(node, "TSEnumDeclaration");
- }
-
- tsParseModuleBlock() {
- const node = this.startNode();
- this.scope.enter(SCOPE_OTHER);
- this.expect(types.braceL);
- this.parseBlockOrModuleBlockBody(node.body = [], undefined, true, types.braceR);
- this.scope.exit();
- return this.finishNode(node, "TSModuleBlock");
- }
-
- tsParseModuleOrNamespaceDeclaration(node, nested = false) {
- node.id = this.parseIdentifier();
-
- if (!nested) {
- this.checkLVal(node.id, BIND_TS_NAMESPACE, null, "module or namespace declaration");
- }
-
- if (this.eat(types.dot)) {
- const inner = this.startNode();
- this.tsParseModuleOrNamespaceDeclaration(inner, true);
- node.body = inner;
- } else {
- this.scope.enter(SCOPE_TS_MODULE);
- node.body = this.tsParseModuleBlock();
- this.scope.exit();
- }
-
- return this.finishNode(node, "TSModuleDeclaration");
- }
-
- tsParseAmbientExternalModuleDeclaration(node) {
- if (this.isContextual("global")) {
- node.global = true;
- node.id = this.parseIdentifier();
- } else if (this.match(types.string)) {
- node.id = this.parseExprAtom();
- } else {
- this.unexpected();
- }
-
- if (this.match(types.braceL)) {
- this.scope.enter(SCOPE_TS_MODULE);
- node.body = this.tsParseModuleBlock();
- 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, BIND_LEXICAL, undefined, "import equals declaration");
- this.expect(types.eq);
- node.moduleReference = this.tsParseModuleReference();
- this.semicolon();
- return this.finishNode(node, "TSImportEqualsDeclaration");
- }
-
- tsIsExternalModuleReference() {
- return this.isContextual("require") && this.lookaheadCharCode() === 40;
- }
-
- tsParseModuleReference() {
- return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false);
- }
-
- tsParseExternalModuleReference() {
- const node = this.startNode();
- this.expectContextual("require");
- this.expect(types.parenL);
-
- if (!this.match(types.string)) {
- throw this.unexpected();
- }
-
- node.expression = this.parseExprAtom();
- this.expect(types.parenR);
- 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("let")) {
- starttype = types._var;
- kind = "let";
- }
-
- switch (starttype) {
- case types._function:
- return this.parseFunctionStatement(nany, false, true);
-
- case types._class:
- nany.declare = true;
- return this.parseClass(nany, true, false);
-
- case types._const:
- if (this.match(types._const) && this.isLookaheadContextual("enum")) {
- this.expect(types._const);
- this.expectContextual("enum");
- return this.tsParseEnumDeclaration(nany, true);
- }
-
- case types._var:
- kind = kind || this.state.value;
- return this.parseVarStatement(nany, kind);
-
- case types.name:
- {
- const value = this.state.value;
-
- if (value === "global") {
- return this.tsParseAmbientExternalModuleDeclaration(nany);
- } else {
- return this.tsParseDeclaration(nany, 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(types.braceL)) {
- this.scope.enter(SCOPE_TS_MODULE);
- const mod = node;
- mod.global = true;
- mod.id = expr;
- mod.body = this.tsParseModuleBlock();
- this.scope.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.tsCheckLineTerminatorAndMatch(types._class, next)) {
- const cls = node;
- cls.abstract = true;
-
- if (next) {
- this.next();
-
- if (!this.match(types._class)) {
- this.unexpected(null, types._class);
- }
- }
-
- return this.parseClass(cls, true, false);
- }
-
- break;
-
- case "enum":
- if (next || this.match(types.name)) {
- if (next) this.next();
- return this.tsParseEnumDeclaration(node, false);
- }
-
- break;
-
- case "interface":
- if (this.tsCheckLineTerminatorAndMatch(types.name, next)) {
- if (next) this.next();
- return this.tsParseInterfaceDeclaration(node);
- }
-
- break;
-
- case "module":
- if (next) this.next();
-
- if (this.match(types.string)) {
- return this.tsParseAmbientExternalModuleDeclaration(node);
- } else if (this.tsCheckLineTerminatorAndMatch(types.name, next)) {
- return this.tsParseModuleOrNamespaceDeclaration(node);
- }
-
- break;
-
- case "namespace":
- if (this.tsCheckLineTerminatorAndMatch(types.name, next)) {
- if (next) this.next();
- return this.tsParseModuleOrNamespaceDeclaration(node);
- }
-
- break;
-
- case "type":
- if (this.tsCheckLineTerminatorAndMatch(types.name, next)) {
- if (next) this.next();
- return this.tsParseTypeAliasDeclaration(node);
- }
-
- break;
- }
- }
-
- tsCheckLineTerminatorAndMatch(tokenType, next) {
- return (next || this.match(tokenType)) && !this.isLineTerminator();
- }
-
- tsTryParseGenericAsyncArrowFunction(startPos, startLoc) {
- if (!this.isRelational("<")) {
- return undefined;
- }
-
- const res = this.tsTryParseAndCatch(() => {
- const node = this.startNodeAt(startPos, startLoc);
- node.typeParameters = this.tsParseTypeParameters();
- super.parseFunctionParams(node);
- node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();
- this.expect(types.arrow);
- return node;
- });
-
- if (!res) {
- return undefined;
- }
-
- return this.parseArrowExpression(res, null, true);
- }
-
- tsParseTypeArguments() {
- const node = this.startNode();
- node.params = this.tsInType(() => this.tsInNoContext(() => {
- this.expectRelational("<");
- return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this));
- }));
- this.state.exprAllowed = false;
- this.expectRelational(">");
- return this.finishNode(node, "TSTypeParameterInstantiation");
- }
-
- tsIsDeclarationStart() {
- if (this.match(types.name)) {
- switch (this.state.value) {
- case "abstract":
- case "declare":
- case "enum":
- case "interface":
- case "module":
- case "namespace":
- case "type":
- return true;
- }
- }
-
- return false;
- }
-
- 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;
-
- if (allowModifiers) {
- accessibility = this.parseAccessModifier();
- readonly = !!this.tsParseModifier(["readonly"]);
- }
-
- const left = this.parseMaybeDefault();
- this.parseAssignableListItemTypes(left);
- const elt = this.parseMaybeDefault(left.start, left.loc.start, left);
-
- if (accessibility || readonly) {
- const pp = this.startNodeAt(startPos, startLoc);
-
- if (decorators.length) {
- pp.decorators = decorators;
- }
-
- if (accessibility) pp.accessibility = accessibility;
- if (readonly) pp.readonly = readonly;
-
- if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") {
- this.raise(pp.start, "A parameter property may not be declared using a binding pattern.");
- }
-
- pp.parameter = elt;
- return this.finishNode(pp, "TSParameterProperty");
- }
-
- if (decorators.length) {
- left.decorators = decorators;
- }
-
- return elt;
- }
-
- parseFunctionBodyAndFinish(node, type, isMethod = false) {
- if (this.match(types.colon)) {
- node.returnType = this.tsParseTypeOrTypePredicateAnnotation(types.colon);
- }
-
- const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" ? "TSDeclareMethod" : undefined;
-
- if (bodilessType && !this.match(types.braceL) && this.isLineTerminator()) {
- this.finishNode(node, bodilessType);
- return;
- }
-
- super.parseFunctionBodyAndFinish(node, type, isMethod);
- }
-
- registerFunctionStatementId(node) {
- if (!node.body && node.id) {
- this.checkLVal(node.id, BIND_TS_AMBIENT, null, "function name");
- } else {
- super.registerFunctionStatementId(...arguments);
- }
- }
-
- parseSubscript(base, startPos, startLoc, noCalls, state) {
- if (!this.hasPrecedingLineBreak() && this.match(types.bang)) {
- this.state.exprAllowed = false;
- this.next();
- const nonNullExpression = this.startNodeAt(startPos, startLoc);
- nonNullExpression.expression = base;
- return this.finishNode(nonNullExpression, "TSNonNullExpression");
- }
-
- if (this.isRelational("<")) {
- const result = this.tsTryParseAndCatch(() => {
- if (!noCalls && this.atPossibleAsync(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 (!noCalls && this.eat(types.parenL)) {
- node.arguments = this.parseCallExpressionArguments(types.parenR, false);
- node.typeParameters = typeArguments;
- return this.finishCallExpression(node, state.optionalChainMember);
- } else if (this.match(types.backQuote)) {
- return this.parseTaggedTemplateExpression(startPos, startLoc, base, state, typeArguments);
- }
- }
-
- this.unexpected();
- });
- if (result) return result;
- }
-
- return super.parseSubscript(base, startPos, startLoc, noCalls, state);
- }
-
- parseNewArguments(node) {
- if (this.isRelational("<")) {
- const typeParameters = this.tsTryParseAndCatch(() => {
- const args = this.tsParseTypeArguments();
- if (!this.match(types.parenL)) this.unexpected();
- return args;
- });
-
- if (typeParameters) {
- node.typeParameters = typeParameters;
- }
- }
-
- super.parseNewArguments(node);
- }
-
- parseExprOp(left, leftStartPos, leftStartLoc, minPrec, noIn) {
- if (nonNull(types._in.binop) > minPrec && !this.hasPrecedingLineBreak() && this.isContextual("as")) {
- 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");
- return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn);
- }
-
- return super.parseExprOp(left, leftStartPos, leftStartLoc, minPrec, noIn);
- }
-
- checkReservedWord(word, startLoc, checkKeywords, isBinding) {}
-
- checkDuplicateExports() {}
-
- parseImport(node) {
- if (this.match(types.name) && this.lookahead().type === types.eq) {
- return this.tsParseImportEqualsDeclaration(node);
- }
-
- return super.parseImport(node);
- }
-
- parseExport(node) {
- if (this.match(types._import)) {
- this.expect(types._import);
- return this.tsParseImportEqualsDeclaration(node, true);
- } else if (this.eat(types.eq)) {
- const assign = node;
- assign.expression = this.parseExpression();
- this.semicolon();
- return this.finishNode(assign, "TSExportAssignment");
- } else if (this.eatContextual("as")) {
- const decl = node;
- this.expectContextual("namespace");
- decl.id = this.parseIdentifier();
- this.semicolon();
- return this.finishNode(decl, "TSNamespaceExportDeclaration");
- } else {
- return super.parseExport(node);
- }
- }
-
- isAbstractClass() {
- return this.isContextual("abstract") && this.lookahead().type === types._class;
- }
-
- parseExportDefaultExpression() {
- if (this.isAbstractClass()) {
- const cls = this.startNode();
- this.next();
- this.parseClass(cls, true, true);
- cls.abstract = true;
- return cls;
- }
-
- if (this.state.value === "interface") {
- const result = this.tsParseDeclaration(this.startNode(), this.state.value, true);
- if (result) return result;
- }
-
- return super.parseExportDefaultExpression();
- }
-
- parseStatementContent(context, topLevel) {
- if (this.state.type === types._const) {
- const ahead = this.lookahead();
-
- if (ahead.type === types.name && ahead.value === "enum") {
- const node = this.startNode();
- this.expect(types._const);
- this.expectContextual("enum");
- return this.tsParseEnumDeclaration(node, true);
- }
- }
-
- return super.parseStatementContent(context, topLevel);
- }
-
- parseAccessModifier() {
- return this.tsParseModifier(["public", "protected", "private"]);
- }
-
- parseClassMember(classBody, member, state, constructorAllowsSuper) {
- const accessibility = this.parseAccessModifier();
- if (accessibility) member.accessibility = accessibility;
- super.parseClassMember(classBody, member, state, constructorAllowsSuper);
- }
-
- parseClassMemberWithIsStatic(classBody, member, state, isStatic, constructorAllowsSuper) {
- const modifiers = this.tsParseModifiers(["abstract", "readonly", "declare"]);
- Object.assign(member, modifiers);
- const idx = this.tsTryParseIndexSignature(member);
-
- if (idx) {
- classBody.body.push(idx);
-
- if (modifiers.abstract) {
- this.raise(member.start, "Index signatures cannot have the 'abstract' modifier");
- }
-
- if (isStatic) {
- this.raise(member.start, "Index signatures cannot have the 'static' modifier");
- }
-
- if (member.accessibility) {
- this.raise(member.start, `Index signatures cannot have an accessibility modifier ('${member.accessibility}')`);
- }
-
- return;
- }
-
- super.parseClassMemberWithIsStatic(classBody, member, state, isStatic, constructorAllowsSuper);
- }
-
- parsePostMemberNameModifiers(methodOrProp) {
- const optional = this.eat(types.question);
- if (optional) methodOrProp.optional = true;
-
- if (methodOrProp.readonly && this.match(types.parenL)) {
- this.raise(methodOrProp.start, "Class methods cannot have the 'readonly' modifier");
- }
-
- if (methodOrProp.declare && this.match(types.parenL)) {
- this.raise(methodOrProp.start, "Class methods cannot have the 'declare' modifier");
- }
- }
-
- 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, noIn, startPos, startLoc, refNeedsArrowPos) {
- if (!refNeedsArrowPos || !this.match(types.question)) {
- return super.parseConditional(expr, noIn, startPos, startLoc, refNeedsArrowPos);
- }
-
- const result = this.tryParse(() => super.parseConditional(expr, noIn, startPos, startLoc));
-
- if (!result.node) {
- refNeedsArrowPos.start = result.error.pos || this.state.start;
- 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(types.question)) {
- node.optional = true;
- this.resetEndLocation(node);
- }
-
- if (this.match(types.colon)) {
- 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("declare");
- let declaration;
-
- if (this.match(types.name)) {
- declaration = this.tsTryParseExportDeclaration();
- }
-
- if (!declaration) {
- declaration = super.parseExportDeclaration(node);
- }
-
- if (declaration && isDeclare) {
- this.resetStartLocation(declaration, startPos, startLoc);
- declaration.declare = true;
- }
-
- return declaration;
- }
-
- parseClassId(node, isStatement, optionalId) {
- if ((!isStatement || optionalId) && this.isContextual("implements")) {
- 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(types.bang)) {
- node.definite = true;
- }
-
- const type = this.tsTryParseTypeAnnotation();
- if (type) node.typeAnnotation = type;
- }
-
- parseClassProperty(node) {
- this.parseClassPropertyAnnotation(node);
-
- if (node.declare && this.match(types.equal)) {
- this.raise(this.state.start, "'declare' class fields cannot have an initializer");
- }
-
- return super.parseClassProperty(node);
- }
-
- parseClassPrivateProperty(node) {
- if (node.abstract) {
- this.raise(node.start, "Private elements cannot have the 'abstract' modifier.");
- }
-
- if (node.accessibility) {
- this.raise(node.start, `Private elements cannot have an accessibility modifier ('${node.accessibility}')`);
- }
-
- this.parseClassPropertyAnnotation(node);
- return super.parseClassPrivateProperty(node);
- }
-
- pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
- const typeParameters = this.tsTryParseTypeParameters();
- 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);
- }
-
- parseClassSuper(node) {
- super.parseClassSuper(node);
-
- if (node.superClass && this.isRelational("<")) {
- node.superTypeParameters = this.tsParseTypeArguments();
- }
-
- if (this.eatContextual("implements")) {
- 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(types.bang)) {
- decl.definite = true;
- }
-
- const type = this.tsTryParseTypeAnnotation();
-
- if (type) {
- decl.id.typeAnnotation = type;
- this.resetEndLocation(decl.id);
- }
- }
-
- parseAsyncArrowFromCallExpression(node, call) {
- if (this.match(types.colon)) {
- node.returnType = this.tsParseTypeAnnotation();
- }
-
- return super.parseAsyncArrowFromCallExpression(node, call);
- }
-
- parseMaybeAssign(...args) {
- let state;
- let jsx;
- let typeCast;
-
- if (this.match(types.jsxTagStart)) {
- 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$1.j_oTag) {
- context.length -= 2;
- } else if (context[context.length - 1] === types$1.j_expr) {
- context.length -= 1;
- }
- }
-
- if (!(jsx && jsx.error) && !this.isRelational("<")) {
- return super.parseMaybeAssign(...args);
- }
-
- let typeParameters;
- state = state || this.state.clone();
- const arrow = this.tryParse(abort => {
- typeParameters = this.tsParseTypeParameters();
- const expr = super.parseMaybeAssign(...args);
-
- if (expr.type !== "ArrowFunctionExpression" || expr.extra && expr.extra.parenthesized) {
- abort();
- }
-
- if (typeParameters && typeParameters.params.length !== 0) {
- this.resetStartLocationFromNode(expr, typeParameters);
- }
-
- expr.typeParameters = typeParameters;
- return expr;
- }, state);
- if (!arrow.error && !arrow.aborted) return arrow.node;
-
- if (!jsx) {
- assert(!this.hasPlugin("jsx"));
- typeCast = this.tryParse(() => super.parseMaybeAssign(...args), state);
- if (!typeCast.error) return typeCast.node;
- }
-
- if (jsx && jsx.node) {
- this.state = jsx.failState;
- return jsx.node;
- }
-
- if (arrow.node) {
- this.state = arrow.failState;
- return arrow.node;
- }
-
- if (typeCast && typeCast.node) {
- this.state = typeCast.failState;
- return typeCast.node;
- }
-
- if (jsx && jsx.thrown) throw jsx.error;
- if (arrow.thrown) throw arrow.error;
- if (typeCast && typeCast.thrown) throw typeCast.error;
- throw jsx && jsx.error || arrow.error || typeCast && typeCast.error;
- }
-
- parseMaybeUnary(refExpressionErrors) {
- if (!this.hasPlugin("jsx") && this.isRelational("<")) {
- return this.tsParseTypeAssertion();
- } else {
- return super.parseMaybeUnary(refExpressionErrors);
- }
- }
-
- parseArrow(node) {
- if (this.match(types.colon)) {
- const result = this.tryParse(abort => {
- const returnType = this.tsParseTypeOrTypePredicateAnnotation(types.colon);
- if (this.canInsertSemicolon() || !this.match(types.arrow)) 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(types.question)) {
- if (param.type !== "Identifier") {
- this.raise(param.start, "A binding pattern parameter cannot be optional in an implementation signature.");
- }
-
- param.optional = true;
- }
-
- const type = this.tsTryParseTypeAnnotation();
- if (type) param.typeAnnotation = type;
- this.resetEndLocation(param);
- return param;
- }
-
- toAssignable(node) {
- switch (node.type) {
- case "TSTypeCastExpression":
- return super.toAssignable(this.typeCastToParameter(node));
-
- case "TSParameterProperty":
- return super.toAssignable(node);
-
- case "TSAsExpression":
- case "TSNonNullExpression":
- case "TSTypeAssertion":
- node.expression = this.toAssignable(node.expression);
- return node;
-
- default:
- return super.toAssignable(node);
- }
- }
-
- checkLVal(expr, bindingType = BIND_NONE, checkClashes, contextDescription) {
- switch (expr.type) {
- case "TSTypeCastExpression":
- return;
-
- case "TSParameterProperty":
- this.checkLVal(expr.parameter, bindingType, checkClashes, "parameter property");
- return;
-
- case "TSAsExpression":
- case "TSNonNullExpression":
- case "TSTypeAssertion":
- this.checkLVal(expr.expression, bindingType, checkClashes, contextDescription);
- return;
-
- default:
- super.checkLVal(expr, bindingType, checkClashes, contextDescription);
- return;
- }
- }
-
- parseBindingAtom() {
- switch (this.state.type) {
- case types._this:
- return this.parseIdentifier(true);
-
- default:
- return super.parseBindingAtom();
- }
- }
-
- parseMaybeDecoratorArguments(expr) {
- if (this.isRelational("<")) {
- const typeArguments = this.tsParseTypeArguments();
-
- if (this.match(types.parenL)) {
- const call = super.parseMaybeDecoratorArguments(expr);
- call.typeParameters = typeArguments;
- return call;
- }
-
- this.unexpected(this.state.start, types.parenL);
- }
-
- return super.parseMaybeDecoratorArguments(expr);
- }
-
- isClassMethod() {
- return this.isRelational("<") || super.isClassMethod();
- }
-
- isClassProperty() {
- return this.match(types.bang) || this.match(types.colon) || 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, "Type annotations must come before default assignments, " + "e.g. instead of `age = 25: number` use `age: number = 25`");
- }
-
- return node;
- }
-
- getTokenFromCode(code) {
- if (this.state.inType && (code === 62 || code === 60)) {
- return this.finishOp(types.relational, 1);
- } else {
- return super.getTokenFromCode(code);
- }
- }
-
- 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, "Unexpected type cast in parameter position.");
- }
-
- 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;
- }
-
- toReferencedList(exprList, isInParens) {
- for (let i = 0; i < exprList.length; i++) {
- const expr = exprList[i];
-
- if (expr && expr.type === "TSTypeCastExpression") {
- this.raise(expr.start, "Did not expect a type annotation here.");
- }
- }
-
- return exprList;
- }
-
- shouldParseArrow() {
- return this.match(types.colon) || super.shouldParseArrow();
- }
-
- shouldParseAsyncArrow() {
- return this.match(types.colon) || super.shouldParseAsyncArrow();
- }
-
- canHaveLeadingDecorator() {
- return super.canHaveLeadingDecorator() || this.isAbstractClass();
- }
-
- jsxParseOpeningElementAfterName(node) {
- if (this.isRelational("<")) {
- const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArguments());
- if (typeArguments) node.typeParameters = typeArguments;
- }
-
- return super.jsxParseOpeningElementAfterName(node);
- }
-
- getGetterSetterExpectedParamCount(method) {
- const baseCount = super.getGetterSetterExpectedParamCount(method);
- const firstParam = method.params[0];
- const hasContextParam = firstParam && firstParam.type === "Identifier" && firstParam.name === "this";
- return hasContextParam ? baseCount + 1 : baseCount;
- }
-
-});
-
-types.placeholder = new TokenType("%%", {
- startsExpr: true
-});
-var placeholders = (superClass => class extends superClass {
- parsePlaceholder(expectedNode) {
- if (this.match(types.placeholder)) {
- 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(types.placeholder);
- 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(types.placeholder, 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);
- }
-
- 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(types.colon)) {
- 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 placeholder = this.parsePlaceholder("Identifier");
-
- if (placeholder) {
- if (this.match(types._extends) || this.match(types.placeholder) || this.match(types.braceL)) {
- 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, "A class name is required");
- }
- } else {
- this.parseClassId(node, isStatement, optionalId);
- }
-
- this.parseClassSuper(node);
- node.body = this.parsePlaceholder("ClassBody") || this.parseClassBody(!!node.superClass);
- return this.finishNode(node, type);
- }
-
- parseExport(node) {
- const placeholder = this.parsePlaceholder("Identifier");
- if (!placeholder) return super.parseExport(...arguments);
-
- if (!this.isContextual("from") && !this.match(types.comma)) {
- 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);
- }
-
- maybeParseExportDefaultSpecifier(node) {
- if (node.specifiers && node.specifiers.length > 0) {
- return true;
- }
-
- return super.maybeParseExportDefaultSpecifier(...arguments);
- }
-
- checkExport(node) {
- const {
- specifiers
- } = node;
-
- if (specifiers && 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("from") && !this.match(types.comma)) {
- 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(types.comma)) {
- const hasStarImport = this.maybeParseStarImportSpecifier(node);
- if (!hasStarImport) this.parseNamedImportSpecifiers(node);
- }
-
- this.expectContextual("from");
- 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(types.modulo)) {
- const v8IntrinsicStart = this.state.start;
- const node = this.startNode();
- this.eat(types.modulo);
-
- if (this.match(types.name)) {
- const name = this.parseIdentifierName(this.state.start);
- const identifier = this.createIdentifier(node, name);
- identifier.type = "V8IntrinsicIdentifier";
-
- if (this.match(types.parenL)) {
- 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", "smart", "fsharp"];
-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") && !PIPELINE_PROPOSALS.includes(getPluginOption(plugins, "pipelineOperator", "proposal"))) {
- throw new Error("'pipelineOperator' requires 'proposal' option whose value should be one of: " + PIPELINE_PROPOSALS.map(p => `'${p}'`).join(", "));
- }
-}
-const mixinPlugins = {
- estree,
- jsx,
- flow,
- typescript,
- v8intrinsic,
- placeholders
-};
-const mixinPluginNames = Object.keys(mixinPlugins);
-
-const defaultOptions = {
- sourceType: "script",
- sourceFilename: undefined,
- startLine: 1,
- allowAwaitOutsideFunction: false,
- allowReturnOutsideFunction: false,
- allowImportExportEverywhere: false,
- allowSuperOutsideMethod: false,
- allowUndeclaredExports: false,
- plugins: [],
- strictMode: null,
- ranges: false,
- tokens: false,
- createParenthesizedExpressions: false,
- errorRecovery: false
-};
-function getOptions(opts) {
- const options = {};
-
- for (let _i = 0, _Object$keys = Object.keys(defaultOptions); _i < _Object$keys.length; _i++) {
- const key = _Object$keys[_i];
- options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key];
- }
-
- return options;
-}
-
-class Position {
- constructor(line, col) {
- this.line = line;
- this.column = col;
- }
-
-}
-class SourceLocation {
- constructor(start, end) {
- 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 last(stack) {
- return stack[stack.length - 1];
-}
-
-class CommentsParser extends BaseParser {
- addComment(comment) {
- if (this.filename) comment.loc.filename = this.filename;
- this.state.trailingComments.push(comment);
- this.state.leadingComments.push(comment);
- }
-
- adjustCommentsAfterTrailingComma(node, elements, takeAllComments) {
- if (this.state.leadingComments.length === 0) {
- return;
- }
-
- let lastElement = null;
- let i = elements.length;
-
- while (lastElement === null && i > 0) {
- lastElement = elements[--i];
- }
-
- if (lastElement === null) {
- return;
- }
-
- for (let j = 0; j < this.state.leadingComments.length; j++) {
- if (this.state.leadingComments[j].end < this.state.commentPreviousNode.end) {
- this.state.leadingComments.splice(j, 1);
- j--;
- }
- }
-
- const newTrailingComments = [];
-
- for (let i = 0; i < this.state.leadingComments.length; i++) {
- const leadingComment = this.state.leadingComments[i];
-
- if (leadingComment.end < node.end) {
- newTrailingComments.push(leadingComment);
-
- if (!takeAllComments) {
- this.state.leadingComments.splice(i, 1);
- i--;
- }
- } else {
- if (node.trailingComments === undefined) {
- node.trailingComments = [];
- }
-
- node.trailingComments.push(leadingComment);
- }
- }
-
- if (takeAllComments) this.state.leadingComments = [];
-
- if (newTrailingComments.length > 0) {
- lastElement.trailingComments = newTrailingComments;
- } else if (lastElement.trailingComments !== undefined) {
- lastElement.trailingComments = [];
- }
- }
-
- processComment(node) {
- if (node.type === "Program" && node.body.length > 0) return;
- const stack = this.state.commentStack;
- let firstChild, lastChild, trailingComments, i, j;
-
- if (this.state.trailingComments.length > 0) {
- if (this.state.trailingComments[0].start >= node.end) {
- trailingComments = this.state.trailingComments;
- this.state.trailingComments = [];
- } else {
- this.state.trailingComments.length = 0;
- }
- } else if (stack.length > 0) {
- const lastInStack = last(stack);
-
- if (lastInStack.trailingComments && lastInStack.trailingComments[0].start >= node.end) {
- trailingComments = lastInStack.trailingComments;
- delete lastInStack.trailingComments;
- }
- }
-
- if (stack.length > 0 && last(stack).start >= node.start) {
- firstChild = stack.pop();
- }
-
- while (stack.length > 0 && last(stack).start >= node.start) {
- lastChild = stack.pop();
- }
-
- if (!lastChild && firstChild) lastChild = firstChild;
-
- if (firstChild) {
- switch (node.type) {
- case "ObjectExpression":
- this.adjustCommentsAfterTrailingComma(node, node.properties);
- break;
-
- case "ObjectPattern":
- this.adjustCommentsAfterTrailingComma(node, node.properties, true);
- break;
-
- case "CallExpression":
- this.adjustCommentsAfterTrailingComma(node, node.arguments);
- break;
-
- case "ArrayExpression":
- this.adjustCommentsAfterTrailingComma(node, node.elements);
- break;
-
- case "ArrayPattern":
- this.adjustCommentsAfterTrailingComma(node, node.elements, true);
- break;
- }
- } else if (this.state.commentPreviousNode && (this.state.commentPreviousNode.type === "ImportSpecifier" && node.type !== "ImportSpecifier" || this.state.commentPreviousNode.type === "ExportSpecifier" && node.type !== "ExportSpecifier")) {
- this.adjustCommentsAfterTrailingComma(node, [this.state.commentPreviousNode]);
- }
-
- if (lastChild) {
- if (lastChild.leadingComments) {
- if (lastChild !== node && lastChild.leadingComments.length > 0 && last(lastChild.leadingComments).end <= node.start) {
- node.leadingComments = lastChild.leadingComments;
- delete lastChild.leadingComments;
- } else {
- for (i = lastChild.leadingComments.length - 2; i >= 0; --i) {
- if (lastChild.leadingComments[i].end <= node.start) {
- node.leadingComments = lastChild.leadingComments.splice(0, i + 1);
- break;
- }
- }
- }
- }
- } else if (this.state.leadingComments.length > 0) {
- if (last(this.state.leadingComments).end <= node.start) {
- if (this.state.commentPreviousNode) {
- for (j = 0; j < this.state.leadingComments.length; j++) {
- if (this.state.leadingComments[j].end < this.state.commentPreviousNode.end) {
- this.state.leadingComments.splice(j, 1);
- j--;
- }
- }
- }
-
- if (this.state.leadingComments.length > 0) {
- node.leadingComments = this.state.leadingComments;
- this.state.leadingComments = [];
- }
- } else {
- for (i = 0; i < this.state.leadingComments.length; i++) {
- if (this.state.leadingComments[i].end > node.start) {
- break;
- }
- }
-
- const leadingComments = this.state.leadingComments.slice(0, i);
-
- if (leadingComments.length) {
- node.leadingComments = leadingComments;
- }
-
- trailingComments = this.state.leadingComments.slice(i);
-
- if (trailingComments.length === 0) {
- trailingComments = null;
- }
- }
- }
-
- this.state.commentPreviousNode = node;
-
- if (trailingComments) {
- if (trailingComments.length && trailingComments[0].start >= node.start && last(trailingComments).end <= node.end) {
- node.innerComments = trailingComments;
- } else {
- node.trailingComments = trailingComments;
- }
- }
-
- stack.push(node);
- }
-
-}
-
-class LocationParser 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, message, {
- missingPluginNames,
- code
- } = {}) {
- const loc = this.getLocationForPosition(pos);
- message += ` (${loc.line}:${loc.column})`;
- const err = new SyntaxError(message);
- err.pos = pos;
- err.loc = loc;
-
- if (missingPluginNames) {
- err.missingPlugin = missingPluginNames;
- }
-
- if (code !== undefined) {
- err.code = code;
- }
-
- if (this.options.errorRecovery) {
- if (!this.isLookahead) this.state.errors.push(err);
- return err;
- } else {
- throw err;
- }
- }
-
-}
-
-class State {
- constructor() {
- this.errors = [];
- this.potentialArrowAt = -1;
- this.noArrowAt = [];
- this.noArrowParamsConversionAt = [];
- this.inParameters = false;
- this.maybeInArrowParameters = false;
- this.inPipeline = false;
- this.inType = false;
- this.noAnonFunctionType = false;
- this.inPropertyName = false;
- this.hasFlowComment = false;
- this.isIterator = false;
- this.topicContext = {
- maxNumOfResolvableTopics: 0,
- maxTopicIndex: null
- };
- this.soloAwait = false;
- this.inFSharpPipelineDirectBody = false;
- this.labels = [];
- this.decoratorStack = [[]];
- this.yieldPos = -1;
- this.awaitPos = -1;
- this.comments = [];
- this.trailingComments = [];
- this.leadingComments = [];
- this.commentStack = [];
- this.commentPreviousNode = null;
- this.pos = 0;
- this.lineStart = 0;
- this.type = types.eof;
- this.value = null;
- this.start = 0;
- this.end = 0;
- this.lastTokEndLoc = null;
- this.lastTokStartLoc = null;
- this.lastTokStart = 0;
- this.lastTokEnd = 0;
- this.context = [types$1.braceStatement];
- this.exprAllowed = true;
- this.containsEsc = false;
- this.containsOctal = false;
- this.octalPosition = null;
- this.exportedIdentifiers = [];
- this.tokensLength = 0;
- }
-
- init(options) {
- this.strict = options.strictMode === false ? false : options.sourceType === "module";
- this.curLine = options.startLine;
- this.startLoc = this.endLoc = this.curPosition();
- }
-
- 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(["g", "m", "s", "i", "y", "u"]);
-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 LocationParser {
- constructor(options, input) {
- super();
- 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() {
- if (!this.isLookahead) {
- 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;
- }
-
- lookahead() {
- const old = this.state;
- this.state = old.clone(true);
- this.isLookahead = true;
- this.next();
- this.isLookahead = false;
- const curr = this.state;
- this.state = old;
- return curr;
- }
-
- nextTokenStart() {
- const thisTokEnd = this.state.pos;
- skipWhiteSpace.lastIndex = thisTokEnd;
- const skip = skipWhiteSpace.exec(this.input);
- return thisTokEnd + skip[0].length;
- }
-
- lookaheadCharCode() {
- return this.input.charCodeAt(this.nextTokenStart());
- }
-
- setStrict(strict) {
- this.state.strict = strict;
- if (!this.match(types.num) && !this.match(types.string)) return;
- this.state.pos = this.state.start;
-
- while (this.state.pos < this.state.lineStart) {
- this.state.lineStart = this.input.lastIndexOf("\n", this.state.lineStart - 2) + 1;
- --this.state.curLine;
- }
-
- this.nextToken();
- }
-
- curContext() {
- return this.state.context[this.state.context.length - 1];
- }
-
- nextToken() {
- const curContext = this.curContext();
- if (!curContext || !curContext.preserveSpace) this.skipSpace();
- this.state.containsOctal = false;
- this.state.octalPosition = null;
- this.state.start = this.state.pos;
- this.state.startLoc = this.state.curPosition();
-
- if (this.state.pos >= this.length) {
- this.finishToken(types.eof);
- return;
- }
-
- if (curContext.override) {
- curContext.override(this);
- } else {
- this.getTokenFromCode(this.input.codePointAt(this.state.pos));
- }
- }
-
- pushComment(block, text, start, end, startLoc, endLoc) {
- const comment = {
- type: block ? "CommentBlock" : "CommentLine",
- value: text,
- start: start,
- end: end,
- loc: new SourceLocation(startLoc, endLoc)
- };
- if (this.options.tokens) this.pushToken(comment);
- this.state.comments.push(comment);
- this.addComment(comment);
- }
-
- skipBlockComment() {
- const startLoc = this.state.curPosition();
- const start = this.state.pos;
- const end = this.input.indexOf("*/", this.state.pos + 2);
- if (end === -1) throw this.raise(start, "Unterminated comment");
- this.state.pos = end + 2;
- lineBreakG.lastIndex = start;
- let match;
-
- while ((match = lineBreakG.exec(this.input)) && match.index < this.state.pos) {
- ++this.state.curLine;
- this.state.lineStart = match.index + match[0].length;
- }
-
- if (this.isLookahead) return;
- this.pushComment(true, this.input.slice(start + 2, end), start, this.state.pos, startLoc, this.state.curPosition());
- }
-
- skipLineComment(startSkip) {
- const start = this.state.pos;
- const 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;
- this.pushComment(false, this.input.slice(start + startSkip, this.state.pos), start, this.state.pos, startLoc, this.state.curPosition());
- }
-
- skipSpace() {
- 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:
- this.skipBlockComment();
- break;
-
- case 47:
- this.skipLineComment(2);
- break;
-
- default:
- break loop;
- }
-
- break;
-
- default:
- if (isWhitespace(ch)) {
- ++this.state.pos;
- } else {
- break loop;
- }
-
- }
- }
- }
-
- finishToken(type, val) {
- this.state.end = this.state.pos;
- this.state.endLoc = this.state.curPosition();
- const prevType = this.state.type;
- this.state.type = type;
- this.state.value = val;
- if (!this.isLookahead) this.updateContext(prevType);
- }
-
- readToken_numberSign() {
- if (this.state.pos === 0 && this.readToken_interpreter()) {
- return;
- }
-
- const nextPos = this.state.pos + 1;
- const next = this.input.charCodeAt(nextPos);
-
- if (next >= 48 && next <= 57) {
- throw this.raise(this.state.pos, "Unexpected digit after hash token");
- }
-
- if (this.hasPlugin("classPrivateProperties") || this.hasPlugin("classPrivateMethods") || this.getPluginOption("pipelineOperator", "proposal") === "smart") {
- this.finishOp(types.hash, 1);
- } else {
- throw this.raise(this.state.pos, "Unexpected character '#'");
- }
- }
-
- 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(types.ellipsis);
- } else {
- ++this.state.pos;
- this.finishToken(types.dot);
- }
- }
-
- readToken_slash() {
- if (this.state.exprAllowed && !this.state.inType) {
- ++this.state.pos;
- this.readRegexp();
- return;
- }
-
- const next = this.input.charCodeAt(this.state.pos + 1);
-
- if (next === 61) {
- this.finishOp(types.assign, 2);
- } else {
- this.finishOp(types.slash, 1);
- }
- }
-
- readToken_interpreter() {
- if (this.state.pos !== 0 || this.length < 2) return false;
- const start = this.state.pos;
- this.state.pos += 1;
- let ch = this.input.charCodeAt(this.state.pos);
- if (ch !== 33) return false;
-
- 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(types.interpreterDirective, value);
- return true;
- }
-
- readToken_mult_modulo(code) {
- let type = code === 42 ? types.star : types.modulo;
- let width = 1;
- let next = this.input.charCodeAt(this.state.pos + 1);
- const exprAllowed = this.state.exprAllowed;
-
- if (code === 42 && next === 42) {
- width++;
- next = this.input.charCodeAt(this.state.pos + 2);
- type = types.exponent;
- }
-
- if (next === 61 && !exprAllowed) {
- width++;
- type = types.assign;
- }
-
- 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(types.assign, 3);
- } else {
- this.finishOp(code === 124 ? types.logicalOR : types.logicalAND, 2);
- }
-
- return;
- }
-
- if (code === 124) {
- if (next === 62) {
- this.finishOp(types.pipeline, 2);
- return;
- }
- }
-
- if (next === 61) {
- this.finishOp(types.assign, 2);
- return;
- }
-
- this.finishOp(code === 124 ? types.bitwiseOR : types.bitwiseAND, 1);
- }
-
- readToken_caret() {
- const next = this.input.charCodeAt(this.state.pos + 1);
-
- if (next === 61) {
- this.finishOp(types.assign, 2);
- } else {
- this.finishOp(types.bitwiseXOR, 1);
- }
- }
-
- readToken_plus_min(code) {
- const next = this.input.charCodeAt(this.state.pos + 1);
-
- if (next === code) {
- if (next === 45 && !this.inModule && this.input.charCodeAt(this.state.pos + 2) === 62 && (this.state.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.pos)))) {
- this.skipLineComment(3);
- this.skipSpace();
- this.nextToken();
- return;
- }
-
- this.finishOp(types.incDec, 2);
- return;
- }
-
- if (next === 61) {
- this.finishOp(types.assign, 2);
- } else {
- this.finishOp(types.plusMin, 1);
- }
- }
-
- readToken_lt_gt(code) {
- const next = this.input.charCodeAt(this.state.pos + 1);
- let size = 1;
-
- if (next === code) {
- size = code === 62 && this.input.charCodeAt(this.state.pos + 2) === 62 ? 3 : 2;
-
- if (this.input.charCodeAt(this.state.pos + size) === 61) {
- this.finishOp(types.assign, size + 1);
- return;
- }
-
- this.finishOp(types.bitShift, size);
- return;
- }
-
- if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.state.pos + 2) === 45 && this.input.charCodeAt(this.state.pos + 3) === 45) {
- this.skipLineComment(4);
- this.skipSpace();
- this.nextToken();
- return;
- }
-
- if (next === 61) {
- size = 2;
- }
-
- this.finishOp(types.relational, size);
- }
-
- readToken_eq_excl(code) {
- const next = this.input.charCodeAt(this.state.pos + 1);
-
- if (next === 61) {
- this.finishOp(types.equality, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2);
- return;
- }
-
- if (code === 61 && next === 62) {
- this.state.pos += 2;
- this.finishToken(types.arrow);
- return;
- }
-
- this.finishOp(code === 61 ? types.eq : types.bang, 1);
- }
-
- readToken_question() {
- const next = this.input.charCodeAt(this.state.pos + 1);
- const next2 = this.input.charCodeAt(this.state.pos + 2);
-
- if (next === 63 && !this.state.inType) {
- if (next2 === 61) {
- this.finishOp(types.assign, 3);
- } else {
- this.finishOp(types.nullishCoalescing, 2);
- }
- } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) {
- this.state.pos += 2;
- this.finishToken(types.questionDot);
- } else {
- ++this.state.pos;
- this.finishToken(types.question);
- }
- }
-
- getTokenFromCode(code) {
- switch (code) {
- case 46:
- this.readToken_dot();
- return;
-
- case 40:
- ++this.state.pos;
- this.finishToken(types.parenL);
- return;
-
- case 41:
- ++this.state.pos;
- this.finishToken(types.parenR);
- return;
-
- case 59:
- ++this.state.pos;
- this.finishToken(types.semi);
- return;
-
- case 44:
- ++this.state.pos;
- this.finishToken(types.comma);
- return;
-
- case 91:
- ++this.state.pos;
- this.finishToken(types.bracketL);
- return;
-
- case 93:
- ++this.state.pos;
- this.finishToken(types.bracketR);
- return;
-
- case 123:
- ++this.state.pos;
- this.finishToken(types.braceL);
- return;
-
- case 125:
- ++this.state.pos;
- this.finishToken(types.braceR);
- return;
-
- case 58:
- if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) {
- this.finishOp(types.doubleColon, 2);
- } else {
- ++this.state.pos;
- this.finishToken(types.colon);
- }
-
- return;
-
- case 63:
- this.readToken_question();
- return;
-
- case 96:
- ++this.state.pos;
- this.finishToken(types.backQuote);
- 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:
- case 62:
- this.readToken_lt_gt(code);
- return;
-
- case 61:
- case 33:
- this.readToken_eq_excl(code);
- return;
-
- case 126:
- this.finishOp(types.tilde, 1);
- return;
-
- case 64:
- ++this.state.pos;
- this.finishToken(types.at);
- return;
-
- case 35:
- this.readToken_numberSign();
- return;
-
- case 92:
- this.readWord();
- return;
-
- default:
- if (isIdentifierStart(code)) {
- this.readWord();
- return;
- }
-
- }
-
- throw this.raise(this.state.pos, `Unexpected character '${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.pos;
- let escaped, inClass;
-
- for (;;) {
- if (this.state.pos >= this.length) {
- throw this.raise(start, "Unterminated regular expression");
- }
-
- const ch = this.input.charAt(this.state.pos);
-
- if (lineBreak.test(ch)) {
- throw this.raise(start, "Unterminated regular expression");
- }
-
- if (escaped) {
- escaped = false;
- } else {
- if (ch === "[") {
- inClass = true;
- } else if (ch === "]" && inClass) {
- inClass = false;
- } else if (ch === "/" && !inClass) {
- break;
- }
-
- escaped = ch === "\\";
- }
-
- ++this.state.pos;
- }
-
- const content = this.input.slice(start, this.state.pos);
- ++this.state.pos;
- let mods = "";
-
- while (this.state.pos < this.length) {
- const char = this.input[this.state.pos];
- const charCode = this.input.codePointAt(this.state.pos);
-
- if (VALID_REGEX_FLAGS.has(char)) {
- if (mods.indexOf(char) > -1) {
- this.raise(this.state.pos + 1, "Duplicate regular expression flag");
- }
- } else if (isIdentifierChar(charCode) || charCode === 92) {
- this.raise(this.state.pos + 1, "Invalid regular expression flag");
- } else {
- break;
- }
-
- ++this.state.pos;
- mods += char;
- }
-
- this.finishToken(types.regexp, {
- 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 (this.hasPlugin("numericSeparator")) {
- 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, "A numeric separator is only allowed between two digits");
- } else if (forbiddenSiblings.indexOf(prev) > -1 || forbiddenSiblings.indexOf(next) > -1 || Number.isNaN(next)) {
- this.raise(this.state.pos, "A numeric separator is only allowed between two digits");
- }
-
- if (!allowNumSeparator) {
- this.raise(this.state.pos, "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences");
- }
-
- ++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, "Expected number in radix " + 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, "Expected number in radix " + radix);
- }
-
- if (this.hasPlugin("bigInt")) {
- if (this.input.charCodeAt(this.state.pos) === 110) {
- ++this.state.pos;
- isBigInt = true;
- }
- }
-
- if (isIdentifierStart(this.input.codePointAt(this.state.pos))) {
- throw this.raise(this.state.pos, "Identifier directly after number");
- }
-
- if (isBigInt) {
- const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, "");
- this.finishToken(types.bigint, str);
- return;
- }
-
- this.finishToken(types.num, val);
- }
-
- readNumber(startsWithDot) {
- const start = this.state.pos;
- let isFloat = false;
- let isBigInt = false;
- let isNonOctalDecimalInt = false;
-
- if (!startsWithDot && this.readInt(10) === null) {
- this.raise(start, "Invalid number");
- }
-
- let octal = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48;
-
- if (octal) {
- if (this.state.strict) {
- this.raise(start, "Legacy octal literals are not allowed in strict mode");
- }
-
- if (/[89]/.test(this.input.slice(start, this.state.pos))) {
- octal = false;
- isNonOctalDecimalInt = true;
- }
- }
-
- let next = this.input.charCodeAt(this.state.pos);
-
- if (next === 46 && !octal) {
- ++this.state.pos;
- this.readInt(10);
- isFloat = true;
- next = this.input.charCodeAt(this.state.pos);
- }
-
- if ((next === 69 || next === 101) && !octal) {
- next = this.input.charCodeAt(++this.state.pos);
-
- if (next === 43 || next === 45) {
- ++this.state.pos;
- }
-
- if (this.readInt(10) === null) this.raise(start, "Invalid number");
- isFloat = true;
- next = this.input.charCodeAt(this.state.pos);
- }
-
- if (this.hasPlugin("numericSeparator") && (octal || isNonOctalDecimalInt)) {
- const underscorePos = this.input.slice(start, this.state.pos).indexOf("_");
-
- if (underscorePos > 0) {
- this.raise(underscorePos + start, "Numeric separator can not be used after leading 0");
- }
- }
-
- if (this.hasPlugin("bigInt")) {
- if (next === 110) {
- if (isFloat || octal || isNonOctalDecimalInt) {
- this.raise(start, "Invalid BigIntLiteral");
- }
-
- ++this.state.pos;
- isBigInt = true;
- }
- }
-
- if (isIdentifierStart(this.input.codePointAt(this.state.pos))) {
- throw this.raise(this.state.pos, "Identifier directly after number");
- }
-
- const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, "");
-
- if (isBigInt) {
- this.finishToken(types.bigint, str);
- return;
- }
-
- const val = octal ? parseInt(str, 8) : parseFloat(str);
- this.finishToken(types.num, 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, "Code point out of bounds");
- } 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, "Unterminated string constant");
- }
-
- 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, "Unterminated string constant");
- } else {
- ++this.state.pos;
- }
- }
-
- out += this.input.slice(chunkStart, this.state.pos++);
- this.finishToken(types.string, out);
- }
-
- readTmplToken() {
- let out = "",
- chunkStart = this.state.pos,
- containsInvalid = false;
-
- for (;;) {
- if (this.state.pos >= this.length) {
- throw this.raise(this.state.start, "Unterminated template");
- }
-
- 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(types.template)) {
- if (ch === 36) {
- this.state.pos += 2;
- this.finishToken(types.dollarBraceL);
- return;
- } else {
- ++this.state.pos;
- this.finishToken(types.backQuote);
- return;
- }
- }
-
- out += this.input.slice(chunkStart, this.state.pos);
- this.finishToken(types.template, 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;
- }
- }
- }
-
- 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;
- }
-
- default:
- if (ch >= 48 && ch <= 55) {
- const codePos = this.state.pos - 1;
- let octalStr = this.input.substr(this.state.pos - 1, 3).match(/^[0-7]+/)[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 if (this.state.strict) {
- this.raise(codePos, "Octal literal in strict mode");
- } else if (!this.state.containsOctal) {
- this.state.containsOctal = true;
- this.state.octalPosition = codePos;
- }
- }
-
- 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, "Bad character escape sequence");
- } else {
- this.state.pos = codePos - 1;
- }
- }
-
- return n;
- }
-
- readWord1() {
- let word = "";
- this.state.containsEsc = false;
- const start = this.state.pos;
- let chunkStart = this.state.pos;
-
- while (this.state.pos < this.length) {
- const ch = this.input.codePointAt(this.state.pos);
-
- if (isIdentifierChar(ch)) {
- this.state.pos += ch <= 0xffff ? 1 : 2;
- } else if (this.state.isIterator && ch === 64) {
- ++this.state.pos;
- } 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, "Expecting Unicode escape sequence \\uXXXX");
- continue;
- }
-
- ++this.state.pos;
- const esc = this.readCodePoint(true);
-
- if (esc !== null) {
- if (!identifierCheck(esc)) {
- this.raise(escStart, "Invalid Unicode escape");
- }
-
- word += String.fromCodePoint(esc);
- }
-
- chunkStart = this.state.pos;
- } else {
- break;
- }
- }
-
- return word + this.input.slice(chunkStart, this.state.pos);
- }
-
- isIterator(word) {
- return word === "@@iterator" || word === "@@asyncIterator";
- }
-
- readWord() {
- const word = this.readWord1();
- const type = keywords.get(word) || types.name;
-
- if (this.state.isIterator && (!this.isIterator(word) || !this.state.inType)) {
- this.raise(this.state.pos, `Invalid identifier ${word}`);
- }
-
- this.finishToken(type, word);
- }
-
- checkKeywordEscapes() {
- const kw = this.state.type.keyword;
-
- if (kw && this.state.containsEsc) {
- this.raise(this.state.start, `Escape sequence in keyword ${kw}`);
- }
- }
-
- braceIsBlock(prevType) {
- const parent = this.curContext();
-
- if (parent === types$1.functionExpression || parent === types$1.functionStatement) {
- return true;
- }
-
- if (prevType === types.colon && (parent === types$1.braceStatement || parent === types$1.braceExpression)) {
- return !parent.isExpr;
- }
-
- if (prevType === types._return || prevType === types.name && this.state.exprAllowed) {
- return lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start));
- }
-
- if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType === types.arrow) {
- return true;
- }
-
- if (prevType === types.braceL) {
- return parent === types$1.braceStatement;
- }
-
- if (prevType === types._var || prevType === types._const || prevType === types.name) {
- return false;
- }
-
- if (prevType === types.relational) {
- return true;
- }
-
- return !this.state.exprAllowed;
- }
-
- updateContext(prevType) {
- const type = this.state.type;
- let update;
-
- if (type.keyword && (prevType === types.dot || prevType === types.questionDot)) {
- this.state.exprAllowed = false;
- } else if (update = type.updateContext) {
- update.call(this, prevType);
- } else {
- this.state.exprAllowed = type.beforeExpr;
- }
- }
-
-}
-
-const literal = /^('|")((?:\\?.)*?)\1/;
-class UtilParser extends Tokenizer {
- addExtra(node, key, val) {
- if (!node) return;
- const extra = node.extra = node.extra || {};
- extra[key] = val;
- }
-
- isRelational(op) {
- return this.match(types.relational) && this.state.value === op;
- }
-
- isLookaheadRelational(op) {
- const next = this.nextTokenStart();
-
- if (this.input.charAt(next) === op) {
- if (next + 1 === this.input.length) {
- return true;
- }
-
- const afterNext = this.input.charCodeAt(next + 1);
- return afterNext !== op.charCodeAt(0) && afterNext !== 61;
- }
-
- return false;
- }
-
- expectRelational(op) {
- if (this.isRelational(op)) {
- this.next();
- } else {
- this.unexpected(null, types.relational);
- }
- }
-
- isContextual(name) {
- return this.match(types.name) && this.state.value === name && !this.state.containsEsc;
- }
-
- isUnparsedContextual(nameStart, name) {
- const nameEnd = nameStart + name.length;
- return this.input.slice(nameStart, nameEnd) === name && (nameEnd === this.input.length || !isIdentifierChar(this.input.charCodeAt(nameEnd)));
- }
-
- isLookaheadContextual(name) {
- const next = this.nextTokenStart();
- return this.isUnparsedContextual(next, name);
- }
-
- eatContextual(name) {
- return this.isContextual(name) && this.eat(types.name);
- }
-
- expectContextual(name, message) {
- if (!this.eatContextual(name)) this.unexpected(null, message);
- }
-
- canInsertSemicolon() {
- return this.match(types.eof) || this.match(types.braceR) || this.hasPrecedingLineBreak();
- }
-
- hasPrecedingLineBreak() {
- return lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start));
- }
-
- isLineTerminator() {
- return this.eat(types.semi) || this.canInsertSemicolon();
- }
-
- semicolon() {
- if (!this.isLineTerminator()) this.unexpected(null, types.semi);
- }
-
- 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, message);
- }
- }
-
- unexpected(pos, messageOrType = "Unexpected token") {
- if (typeof messageOrType !== "string") {
- messageOrType = `Unexpected token, expected "${messageOrType.label}"`;
- }
-
- throw this.raise(pos != null ? pos : this.state.start, messageOrType);
- }
-
- expectPlugin(name, pos) {
- if (!this.hasPlugin(name)) {
- throw this.raise(pos != null ? pos : this.state.start, `This experimental syntax requires enabling the parser plugin: '${name}'`, {
- missingPluginNames: [name]
- });
- }
-
- return true;
- }
-
- expectOnePlugin(names, pos) {
- if (!names.some(n => this.hasPlugin(n))) {
- throw this.raise(pos != null ? pos : this.state.start, `This experimental syntax requires enabling one of the following parser plugin(s): '${names.join(", ")}'`, {
- missingPluginNames: names
- });
- }
- }
-
- checkYieldAwaitInDefaultParams() {
- if (this.state.yieldPos !== -1 && (this.state.awaitPos === -1 || this.state.yieldPos < this.state.awaitPos)) {
- this.raise(this.state.yieldPos, "Yield cannot be used as name inside a generator function");
- }
-
- if (this.state.awaitPos !== -1) {
- this.raise(this.state.awaitPos, "Await cannot be used as name inside an async function");
- }
- }
-
- strictDirective(start) {
- for (;;) {
- skipWhiteSpace.lastIndex = start;
- start += skipWhiteSpace.exec(this.input)[0].length;
- const match = literal.exec(this.input.slice(start));
- if (!match) break;
- if (match[2] === "use strict") return true;
- start += match[0].length;
- skipWhiteSpace.lastIndex = start;
- start += skipWhiteSpace.exec(this.input)[0].length;
-
- if (this.input[start] === ";") {
- start++;
- }
- }
-
- return false;
- }
-
- 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;
- 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
- } = refExpressionErrors;
- if (!andThrow) return shorthandAssign >= 0 || doubleProto >= 0;
-
- if (shorthandAssign >= 0) {
- this.unexpected(shorthandAssign);
- }
-
- if (doubleProto >= 0) {
- this.raise(doubleProto, "Redefinition of __proto__ property");
- }
- }
-
-}
-class ExpressionErrors {
- constructor() {
- this.shorthandAssign = -1;
- this.doubleProto = -1;
- }
-
-}
-
-class Node {
- constructor(parser, pos, loc) {
- this.type = "";
- this.start = pos;
- this.end = 0;
- this.loc = new SourceLocation(loc);
- if (parser && parser.options.ranges) this.range = [pos, 0];
- if (parser && parser.filename) this.loc.filename = parser.filename;
- }
-
- __clone() {
- 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;
- }
-
-}
-
-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;
- 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 unwrapParenthesizedExpression = node => {
- return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node;
-};
-
-class LValParser extends NodeUtils {
- toAssignable(node) {
- var _node$extra, _node$extra3;
-
- let parenthesized = undefined;
-
- if (node.type === "ParenthesizedExpression" || ((_node$extra = node.extra) == null ? void 0 : _node$extra.parenthesized)) {
- parenthesized = unwrapParenthesizedExpression(node);
-
- if (parenthesized.type !== "Identifier" && parenthesized.type !== "MemberExpression") {
- this.raise(node.start, "Invalid parenthesized assignment pattern");
- }
- }
-
- switch (node.type) {
- case "Identifier":
- case "ObjectPattern":
- case "ArrayPattern":
- case "AssignmentPattern":
- 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);
-
- if (isLast && prop.type === "RestElement" && ((_node$extra2 = node.extra) == null ? void 0 : _node$extra2.trailingComma)) {
- this.raiseRestNotLast(node.extra.trailingComma);
- }
- }
-
- break;
-
- case "ObjectProperty":
- this.toAssignable(node.value);
- break;
-
- case "SpreadElement":
- {
- this.checkToRestConversion(node);
- node.type = "RestElement";
- const arg = node.argument;
- this.toAssignable(arg);
- break;
- }
-
- case "ArrayExpression":
- node.type = "ArrayPattern";
- this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingComma);
- break;
-
- case "AssignmentExpression":
- if (node.operator !== "=") {
- this.raise(node.left.end, "Only '=' operator can be used for specifying default value.");
- }
-
- node.type = "AssignmentPattern";
- delete node.operator;
- this.toAssignable(node.left);
- break;
-
- case "ParenthesizedExpression":
- this.toAssignable(parenthesized);
- break;
- }
-
- return node;
- }
-
- toAssignableObjectExpressionProp(prop, isLast) {
- if (prop.type === "ObjectMethod") {
- const error = prop.kind === "get" || prop.kind === "set" ? "Object pattern can't contain getter or setter" : "Object pattern can't contain methods";
- this.raise(prop.key.start, error);
- } else if (prop.type === "SpreadElement" && !isLast) {
- this.raiseRestNotLast(prop.start);
- } else {
- this.toAssignable(prop);
- }
- }
-
- toAssignableList(exprList, trailingCommaPos) {
- let end = exprList.length;
-
- if (end) {
- const last = exprList[end - 1];
-
- if (last && last.type === "RestElement") {
- --end;
- } else if (last && last.type === "SpreadElement") {
- last.type = "RestElement";
- const arg = last.argument;
- this.toAssignable(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);
-
- if (elt.type === "RestElement") {
- this.raiseRestNotLast(elt.start);
- }
- }
- }
-
- return exprList;
- }
-
- toReferencedList(exprList, isParenthesizedExpr) {
- return exprList;
- }
-
- toReferencedListDeep(exprList, isParenthesizedExpr) {
- this.toReferencedList(exprList, isParenthesizedExpr);
-
- for (let _i = 0; _i < exprList.length; _i++) {
- const expr = exprList[_i];
-
- if (expr && expr.type === "ArrayExpression") {
- this.toReferencedListDeep(expr.elements);
- }
- }
- }
-
- parseSpread(refExpressionErrors, refNeedsArrowPos) {
- const node = this.startNode();
- this.next();
- node.argument = this.parseMaybeAssign(false, 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 types.bracketL:
- {
- const node = this.startNode();
- this.next();
- node.elements = this.parseBindingList(types.bracketR, 93, true);
- return this.finishNode(node, "ArrayPattern");
- }
-
- case types.braceL:
- return this.parseObj(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(types.comma);
- }
-
- if (allowEmpty && this.match(types.comma)) {
- elts.push(null);
- } else if (this.eat(close)) {
- break;
- } else if (this.match(types.ellipsis)) {
- elts.push(this.parseAssignableListItemTypes(this.parseRestBinding()));
- this.checkCommaAfterRest(closeCharCode);
- this.expect(close);
- break;
- } else {
- const decorators = [];
-
- if (this.match(types.at) && this.hasPlugin("decorators")) {
- this.raise(this.state.start, "Stage 2 decorators cannot be used to decorate parameters");
- }
-
- while (this.match(types.at)) {
- decorators.push(this.parseDecorator());
- }
-
- elts.push(this.parseAssignableListItem(allowModifiers, decorators));
- }
- }
-
- return elts;
- }
-
- 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) {
- startLoc = startLoc || this.state.startLoc;
- startPos = startPos || this.state.start;
- left = left || this.parseBindingAtom();
- if (!this.eat(types.eq)) return left;
- const node = this.startNodeAt(startPos, startLoc);
- node.left = left;
- node.right = this.parseMaybeAssign();
- return this.finishNode(node, "AssignmentPattern");
- }
-
- checkLVal(expr, bindingType = BIND_NONE, checkClashes, contextDescription, disallowLetBinding, strictModeChanged = false) {
- switch (expr.type) {
- case "Identifier":
- if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(expr.name, this.inModule) : isStrictBindOnlyReservedWord(expr.name))) {
- this.raise(expr.start, `${bindingType === BIND_NONE ? "Assigning to" : "Binding"} '${expr.name}' in strict mode`);
- }
-
- if (checkClashes) {
- const key = `_${expr.name}`;
-
- if (checkClashes[key]) {
- this.raise(expr.start, "Argument name clash");
- } else {
- checkClashes[key] = true;
- }
- }
-
- if (disallowLetBinding && expr.name === "let") {
- this.raise(expr.start, "'let' is not allowed to be used as a name in 'let' or 'const' declarations.");
- }
-
- if (!(bindingType & BIND_NONE)) {
- this.scope.declareName(expr.name, bindingType, expr.start);
- }
-
- break;
-
- case "MemberExpression":
- if (bindingType !== BIND_NONE) {
- this.raise(expr.start, "Binding member expression");
- }
-
- break;
-
- case "ObjectPattern":
- for (let _i2 = 0, _expr$properties = expr.properties; _i2 < _expr$properties.length; _i2++) {
- let prop = _expr$properties[_i2];
- if (prop.type === "ObjectProperty") prop = prop.value;else if (prop.type === "ObjectMethod") continue;
- this.checkLVal(prop, bindingType, checkClashes, "object destructuring pattern", disallowLetBinding);
- }
-
- break;
-
- case "ArrayPattern":
- for (let _i3 = 0, _expr$elements = expr.elements; _i3 < _expr$elements.length; _i3++) {
- const elem = _expr$elements[_i3];
-
- if (elem) {
- this.checkLVal(elem, bindingType, checkClashes, "array destructuring pattern", disallowLetBinding);
- }
- }
-
- break;
-
- case "AssignmentPattern":
- this.checkLVal(expr.left, bindingType, checkClashes, "assignment pattern");
- break;
-
- case "RestElement":
- this.checkLVal(expr.argument, bindingType, checkClashes, "rest element");
- break;
-
- case "ParenthesizedExpression":
- this.checkLVal(expr.expression, bindingType, checkClashes, "parenthesized expression");
- break;
-
- default:
- {
- const message = (bindingType === BIND_NONE ? "Invalid" : "Binding invalid") + " left-hand side" + (contextDescription ? " in " + contextDescription : "expression");
- this.raise(expr.start, message);
- }
- }
- }
-
- checkToRestConversion(node) {
- if (node.argument.type !== "Identifier" && node.argument.type !== "MemberExpression") {
- this.raise(node.argument.start, "Invalid rest operator's argument");
- }
- }
-
- checkCommaAfterRest(close) {
- if (this.match(types.comma)) {
- if (this.lookaheadCharCode() === close) {
- this.raiseTrailingCommaAfterRest(this.state.start);
- } else {
- this.raiseRestNotLast(this.state.start);
- }
- }
- }
-
- raiseRestNotLast(pos) {
- throw this.raise(pos, `Rest element must be last element`);
- }
-
- raiseTrailingCommaAfterRest(pos) {
- this.raise(pos, `Unexpected trailing comma after rest element`);
- }
-
-}
-
-class ExpressionParser extends LValParser {
- checkDuplicatedProto(prop, protoRef, refExpressionErrors) {
- if (prop.type === "SpreadElement" || prop.computed || prop.kind || prop.shorthand) {
- return;
- }
-
- const key = prop.key;
- const name = key.type === "Identifier" ? key.name : String(key.value);
-
- if (name === "__proto__") {
- if (protoRef.used) {
- if (refExpressionErrors) {
- if (refExpressionErrors.doubleProto === -1) {
- refExpressionErrors.doubleProto = key.start;
- }
- } else {
- this.raise(key.start, "Redefinition of __proto__ property");
- }
- }
-
- protoRef.used = true;
- }
- }
-
- getExpression() {
- let scopeFlags = SCOPE_PROGRAM;
-
- if (this.hasPlugin("topLevelAwait") && this.inModule) {
- scopeFlags |= SCOPE_ASYNC;
- }
-
- this.scope.enter(scopeFlags);
- this.nextToken();
- const expr = this.parseExpression();
-
- if (!this.match(types.eof)) {
- this.unexpected();
- }
-
- expr.comments = this.state.comments;
- expr.errors = this.state.errors;
- return expr;
- }
-
- parseExpression(noIn, refExpressionErrors) {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
- const expr = this.parseMaybeAssign(noIn, refExpressionErrors);
-
- if (this.match(types.comma)) {
- const node = this.startNodeAt(startPos, startLoc);
- node.expressions = [expr];
-
- while (this.eat(types.comma)) {
- node.expressions.push(this.parseMaybeAssign(noIn, refExpressionErrors));
- }
-
- this.toReferencedList(node.expressions);
- return this.finishNode(node, "SequenceExpression");
- }
-
- return expr;
- }
-
- parseMaybeAssign(noIn, refExpressionErrors, afterLeftParse, refNeedsArrowPos) {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
-
- if (this.isContextual("yield")) {
- if (this.scope.inGenerator) {
- let left = this.parseYield(noIn);
-
- if (afterLeftParse) {
- left = afterLeftParse.call(this, left, startPos, startLoc);
- }
-
- return left;
- } else {
- this.state.exprAllowed = false;
- }
- }
-
- let ownExpressionErrors;
-
- if (refExpressionErrors) {
- ownExpressionErrors = false;
- } else {
- refExpressionErrors = new ExpressionErrors();
- ownExpressionErrors = true;
- }
-
- if (this.match(types.parenL) || this.match(types.name)) {
- this.state.potentialArrowAt = this.state.start;
- }
-
- let left = this.parseMaybeConditional(noIn, refExpressionErrors, refNeedsArrowPos);
-
- if (afterLeftParse) {
- left = afterLeftParse.call(this, left, startPos, startLoc);
- }
-
- if (this.state.type.isAssign) {
- const node = this.startNodeAt(startPos, startLoc);
- const operator = this.state.value;
- node.operator = operator;
-
- if (operator === "??=") {
- this.expectPlugin("logicalAssignment");
- }
-
- if (operator === "||=" || operator === "&&=") {
- this.expectPlugin("logicalAssignment");
- }
-
- if (this.match(types.eq)) {
- node.left = this.toAssignable(left);
- refExpressionErrors.doubleProto = -1;
- } else {
- node.left = left;
- }
-
- if (refExpressionErrors.shorthandAssign >= node.left.start) {
- refExpressionErrors.shorthandAssign = -1;
- }
-
- this.checkLVal(left, undefined, undefined, "assignment expression");
- this.next();
- node.right = this.parseMaybeAssign(noIn);
- return this.finishNode(node, "AssignmentExpression");
- } else if (ownExpressionErrors) {
- this.checkExpressionErrors(refExpressionErrors, true);
- }
-
- return left;
- }
-
- parseMaybeConditional(noIn, refExpressionErrors, refNeedsArrowPos) {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
- const potentialArrowAt = this.state.potentialArrowAt;
- const expr = this.parseExprOps(noIn, refExpressionErrors);
-
- if (expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt) {
- return expr;
- }
-
- if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;
- return this.parseConditional(expr, noIn, startPos, startLoc, refNeedsArrowPos);
- }
-
- parseConditional(expr, noIn, startPos, startLoc, refNeedsArrowPos) {
- if (this.eat(types.question)) {
- const node = this.startNodeAt(startPos, startLoc);
- node.test = expr;
- node.consequent = this.parseMaybeAssign();
- this.expect(types.colon);
- node.alternate = this.parseMaybeAssign(noIn);
- return this.finishNode(node, "ConditionalExpression");
- }
-
- return expr;
- }
-
- parseExprOps(noIn, refExpressionErrors) {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
- const potentialArrowAt = this.state.potentialArrowAt;
- const expr = this.parseMaybeUnary(refExpressionErrors);
-
- if (expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt) {
- return expr;
- }
-
- if (this.checkExpressionErrors(refExpressionErrors, false)) {
- return expr;
- }
-
- return this.parseExprOp(expr, startPos, startLoc, -1, noIn);
- }
-
- parseExprOp(left, leftStartPos, leftStartLoc, minPrec, noIn) {
- let prec = this.state.type.binop;
-
- if (prec != null && (!noIn || !this.match(types._in))) {
- if (prec > minPrec) {
- const operator = this.state.value;
-
- if (operator === "|>" && this.state.inFSharpPipelineDirectBody) {
- return left;
- }
-
- const node = this.startNodeAt(leftStartPos, leftStartLoc);
- node.left = left;
- node.operator = operator;
-
- if (operator === "**" && left.type === "UnaryExpression" && (this.options.createParenthesizedExpressions || !(left.extra && left.extra.parenthesized))) {
- this.raise(left.argument.start, "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.");
- }
-
- const op = this.state.type;
- const logical = op === types.logicalOR || op === types.logicalAND;
- const coalesce = op === types.nullishCoalescing;
-
- if (op === types.pipeline) {
- this.expectPlugin("pipelineOperator");
- this.state.inPipeline = true;
- this.checkPipelineAtInfixOperator(left, leftStartPos);
- } else if (coalesce) {
- prec = types.logicalAND.binop;
- }
-
- this.next();
-
- if (op === types.pipeline && this.getPluginOption("pipelineOperator", "proposal") === "minimal") {
- if (this.match(types.name) && this.state.value === "await" && this.scope.inAsync) {
- throw this.raise(this.state.start, `Unexpected "await" after pipeline body; await must have parentheses in minimal proposal`);
- }
- }
-
- node.right = this.parseExprOpRightExpr(op, prec, noIn);
- this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression");
- const nextOp = this.state.type;
-
- if (coalesce && (nextOp === types.logicalOR || nextOp === types.logicalAND) || logical && nextOp === types.nullishCoalescing) {
- throw this.raise(this.state.start, `Nullish coalescing operator(??) requires parens when mixing with logical operators`);
- }
-
- return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn);
- }
- }
-
- return left;
- }
-
- parseExprOpRightExpr(op, prec, noIn) {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
-
- switch (op) {
- case types.pipeline:
- switch (this.getPluginOption("pipelineOperator", "proposal")) {
- case "smart":
- return this.withTopicPermittingContext(() => {
- return this.parseSmartPipelineBody(this.parseExprOpBaseRightExpr(op, prec, noIn), startPos, startLoc);
- });
-
- case "fsharp":
- return this.withSoloAwaitPermittingContext(() => {
- return this.parseFSharpPipelineBody(prec, noIn);
- });
- }
-
- default:
- return this.parseExprOpBaseRightExpr(op, prec, noIn);
- }
- }
-
- parseExprOpBaseRightExpr(op, prec, noIn) {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
- return this.parseExprOp(this.parseMaybeUnary(), startPos, startLoc, op.rightAssociative ? prec - 1 : prec, noIn);
- }
-
- parseMaybeUnary(refExpressionErrors) {
- if (this.isContextual("await") && this.isAwaitAllowed()) {
- return this.parseAwait();
- } else if (this.state.type.prefix) {
- const node = this.startNode();
- const update = this.match(types.incDec);
- node.operator = this.state.value;
- node.prefix = true;
-
- if (node.operator === "throw") {
- this.expectPlugin("throwExpressions");
- }
-
- this.next();
- node.argument = this.parseMaybeUnary();
- this.checkExpressionErrors(refExpressionErrors, true);
-
- if (update) {
- this.checkLVal(node.argument, undefined, undefined, "prefix operation");
- } else if (this.state.strict && node.operator === "delete") {
- const arg = node.argument;
-
- if (arg.type === "Identifier") {
- this.raise(node.start, "Deleting local variable in strict mode");
- } else if (arg.type === "MemberExpression" && arg.property.type === "PrivateName") {
- this.raise(node.start, "Deleting a private field is not allowed");
- }
- }
-
- return this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression");
- }
-
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
- let expr = this.parseExprSubscripts(refExpressionErrors);
- if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;
-
- while (this.state.type.postfix && !this.canInsertSemicolon()) {
- const node = this.startNodeAt(startPos, startLoc);
- node.operator = this.state.value;
- node.prefix = false;
- node.argument = expr;
- this.checkLVal(expr, undefined, undefined, "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 (expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt) {
- return expr;
- }
-
- return this.parseSubscripts(expr, startPos, startLoc);
- }
-
- parseSubscripts(base, startPos, startLoc, noCalls) {
- const state = {
- optionalChainMember: false,
- maybeAsyncArrow: this.atPossibleAsync(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(types.doubleColon)) {
- 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);
- }
-
- let optional = false;
-
- if (this.match(types.questionDot)) {
- state.optionalChainMember = optional = true;
-
- if (noCalls && this.lookaheadCharCode() === 40) {
- state.stop = true;
- return base;
- }
-
- this.next();
- }
-
- const computed = this.eat(types.bracketL);
-
- if (optional && !this.match(types.parenL) && !this.match(types.backQuote) || computed || this.eat(types.dot)) {
- const node = this.startNodeAt(startPos, startLoc);
- node.object = base;
- node.property = computed ? this.parseExpression() : optional ? this.parseIdentifier(true) : this.parseMaybePrivateName(true);
- node.computed = computed;
-
- if (node.property.type === "PrivateName") {
- if (node.object.type === "Super") {
- this.raise(startPos, "Private fields can't be accessed on super");
- }
-
- this.classScope.usePrivateName(node.property.id.name, node.property.start);
- }
-
- if (computed) {
- this.expect(types.bracketR);
- }
-
- if (state.optionalChainMember) {
- node.optional = optional;
- return this.finishNode(node, "OptionalMemberExpression");
- } else {
- return this.finishNode(node, "MemberExpression");
- }
- } else if (!noCalls && this.match(types.parenL)) {
- const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
- const oldYieldPos = this.state.yieldPos;
- const oldAwaitPos = this.state.awaitPos;
- this.state.maybeInArrowParameters = true;
- this.state.yieldPos = -1;
- this.state.awaitPos = -1;
- this.next();
- let node = this.startNodeAt(startPos, startLoc);
- node.callee = base;
-
- if (optional) {
- node.optional = true;
- node.arguments = this.parseCallExpressionArguments(types.parenR, false);
- } else {
- node.arguments = this.parseCallExpressionArguments(types.parenR, state.maybeAsyncArrow, base.type === "Import", base.type !== "Super", node);
- }
-
- this.finishCallExpression(node, state.optionalChainMember);
-
- if (state.maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {
- state.stop = true;
- node = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startPos, startLoc), node);
- this.checkYieldAwaitInDefaultParams();
- this.state.yieldPos = oldYieldPos;
- this.state.awaitPos = oldAwaitPos;
- } else {
- this.toReferencedListDeep(node.arguments);
- if (oldYieldPos !== -1) this.state.yieldPos = oldYieldPos;
-
- if (!this.isAwaitAllowed() && !oldMaybeInArrowParameters || oldAwaitPos !== -1) {
- this.state.awaitPos = oldAwaitPos;
- }
- }
-
- this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
- return node;
- } else if (this.match(types.backQuote)) {
- return this.parseTaggedTemplateExpression(startPos, startLoc, base, state);
- } else {
- state.stop = true;
- return base;
- }
- }
-
- parseTaggedTemplateExpression(startPos, startLoc, base, state, typeArguments) {
- const node = this.startNodeAt(startPos, startLoc);
- node.tag = base;
- node.quasi = this.parseTemplate(true);
- if (typeArguments) node.typeParameters = typeArguments;
-
- if (state.optionalChainMember) {
- this.raise(startPos, "Tagged Template Literals are not allowed in optionalChain");
- }
-
- return this.finishNode(node, "TaggedTemplateExpression");
- }
-
- atPossibleAsync(base) {
- return base.type === "Identifier" && base.name === "async" && this.state.lastTokEnd === base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === "async";
- }
-
- finishCallExpression(node, optional) {
- if (node.callee.type === "Import") {
- if (node.arguments.length !== 1) {
- this.raise(node.start, "import() requires exactly one argument");
- } else {
- const importArg = node.arguments[0];
-
- if (importArg && importArg.type === "SpreadElement") {
- this.raise(importArg.start, "... is not allowed in import()");
- }
- }
- }
-
- return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression");
- }
-
- parseCallExpressionArguments(close, possibleAsyncArrow, dynamicImport, allowPlaceholder, nodeForExtra) {
- const elts = [];
- let innerParenStart;
- let first = true;
- const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
- this.state.inFSharpPipelineDirectBody = false;
-
- while (!this.eat(close)) {
- if (first) {
- first = false;
- } else {
- this.expect(types.comma);
-
- if (this.match(close)) {
- if (dynamicImport) {
- this.raise(this.state.lastTokStart, "Trailing comma is disallowed inside import(...) arguments");
- }
-
- if (nodeForExtra) {
- this.addExtra(nodeForExtra, "trailingComma", this.state.lastTokStart);
- }
-
- this.next();
- break;
- }
- }
-
- if (this.match(types.parenL) && !innerParenStart) {
- innerParenStart = this.state.start;
- }
-
- elts.push(this.parseExprListItem(false, possibleAsyncArrow ? new ExpressionErrors() : undefined, possibleAsyncArrow ? {
- start: 0
- } : undefined, allowPlaceholder));
- }
-
- if (possibleAsyncArrow && innerParenStart && this.shouldParseAsyncArrow()) {
- this.unexpected();
- }
-
- this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
- return elts;
- }
-
- shouldParseAsyncArrow() {
- return this.match(types.arrow) && !this.canInsertSemicolon();
- }
-
- parseAsyncArrowFromCallExpression(node, call) {
- var _call$extra;
-
- this.expect(types.arrow);
- this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingComma);
- return node;
- }
-
- parseNoCallExpr() {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
- return this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);
- }
-
- parseExprAtom(refExpressionErrors) {
- if (this.state.type === types.slash) this.readRegexp();
- const canBeArrow = this.state.potentialArrowAt === this.state.start;
- let node;
-
- switch (this.state.type) {
- case types._super:
- node = this.startNode();
- this.next();
-
- if (this.match(types.parenL) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) {
- this.raise(node.start, "super() is only valid inside a class constructor of a subclass. " + "Maybe a typo in the method name ('constructor') or not extending another class?");
- } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) {
- this.raise(node.start, "super is only allowed in object methods and classes");
- }
-
- if (!this.match(types.parenL) && !this.match(types.bracketL) && !this.match(types.dot)) {
- this.raise(node.start, "super can only be used with function calls (i.e. super()) or " + "in property accesses (i.e. super.prop or super[prop])");
- }
-
- return this.finishNode(node, "Super");
-
- case types._import:
- node = this.startNode();
- this.next();
-
- if (this.match(types.dot)) {
- return this.parseImportMetaProperty(node);
- }
-
- if (!this.match(types.parenL)) {
- this.raise(this.state.lastTokStart, "import can only be used in import() or import.meta");
- }
-
- return this.finishNode(node, "Import");
-
- case types._this:
- node = this.startNode();
- this.next();
- return this.finishNode(node, "ThisExpression");
-
- case types.name:
- {
- node = this.startNode();
- const containsEsc = this.state.containsEsc;
- const id = this.parseIdentifier();
-
- if (!containsEsc && id.name === "async" && this.match(types._function) && !this.canInsertSemicolon()) {
- const last = this.state.context.length - 1;
-
- if (this.state.context[last] !== types$1.functionStatement) {
- throw new Error("Internal error");
- }
-
- this.state.context[last] = types$1.functionExpression;
- this.next();
- return this.parseFunction(node, undefined, true);
- } else if (canBeArrow && !containsEsc && id.name === "async" && this.match(types.name) && !this.canInsertSemicolon()) {
- const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
- const oldYieldPos = this.state.yieldPos;
- const oldAwaitPos = this.state.awaitPos;
- this.state.maybeInArrowParameters = true;
- this.state.yieldPos = -1;
- this.state.awaitPos = -1;
- const params = [this.parseIdentifier()];
- this.expect(types.arrow);
- this.checkYieldAwaitInDefaultParams();
- this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
- this.state.yieldPos = oldYieldPos;
- this.state.awaitPos = oldAwaitPos;
- this.parseArrowExpression(node, params, true);
- return node;
- }
-
- if (canBeArrow && this.match(types.arrow) && !this.canInsertSemicolon()) {
- this.next();
- this.parseArrowExpression(node, [id], false);
- return node;
- }
-
- return id;
- }
-
- case types._do:
- {
- this.expectPlugin("doExpressions");
- const node = this.startNode();
- this.next();
- const oldLabels = this.state.labels;
- this.state.labels = [];
- node.body = this.parseBlock();
- this.state.labels = oldLabels;
- return this.finishNode(node, "DoExpression");
- }
-
- case types.regexp:
- {
- const value = this.state.value;
- node = this.parseLiteral(value.value, "RegExpLiteral");
- node.pattern = value.pattern;
- node.flags = value.flags;
- return node;
- }
-
- case types.num:
- return this.parseLiteral(this.state.value, "NumericLiteral");
-
- case types.bigint:
- return this.parseLiteral(this.state.value, "BigIntLiteral");
-
- case types.string:
- return this.parseLiteral(this.state.value, "StringLiteral");
-
- case types._null:
- node = this.startNode();
- this.next();
- return this.finishNode(node, "NullLiteral");
-
- case types._true:
- case types._false:
- return this.parseBooleanLiteral();
-
- case types.parenL:
- return this.parseParenAndDistinguishExpression(canBeArrow);
-
- case types.bracketL:
- {
- const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
- this.state.inFSharpPipelineDirectBody = false;
- node = this.startNode();
- this.next();
- node.elements = this.parseExprList(types.bracketR, true, refExpressionErrors, node);
-
- if (!this.state.maybeInArrowParameters) {
- this.toReferencedList(node.elements);
- }
-
- this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
- return this.finishNode(node, "ArrayExpression");
- }
-
- case types.braceL:
- {
- const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
- this.state.inFSharpPipelineDirectBody = false;
- const ret = this.parseObj(false, refExpressionErrors);
- this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
- return ret;
- }
-
- case types._function:
- return this.parseFunctionExpression();
-
- case types.at:
- this.parseDecorators();
-
- case types._class:
- node = this.startNode();
- this.takeDecorators(node);
- return this.parseClass(node, false);
-
- case types._new:
- return this.parseNew();
-
- case types.backQuote:
- return this.parseTemplate(false);
-
- case types.doubleColon:
- {
- 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, "Binding should be performed on object property.");
- }
- }
-
- case types.hash:
- {
- if (this.state.inPipeline) {
- node = this.startNode();
-
- if (this.getPluginOption("pipelineOperator", "proposal") !== "smart") {
- this.raise(node.start, "Primary Topic Reference found but pipelineOperator not passed 'smart' for 'proposal' option.");
- }
-
- this.next();
-
- if (!this.primaryTopicReferenceIsAllowedInCurrentTopicContext()) {
- this.raise(node.start, `Topic reference was used in a lexical context without topic binding`);
- }
-
- this.registerTopicReference();
- return this.finishNode(node, "PipelinePrimaryTopicReference");
- }
- }
-
- default:
- throw this.unexpected();
- }
- }
-
- parseBooleanLiteral() {
- const node = this.startNode();
- node.value = this.match(types._true);
- this.next();
- return this.finishNode(node, "BooleanLiteral");
- }
-
- parseMaybePrivateName(isPrivateNameAllowed) {
- const isPrivate = this.match(types.hash);
-
- if (isPrivate) {
- this.expectOnePlugin(["classPrivateProperties", "classPrivateMethods"]);
-
- if (!isPrivateNameAllowed) {
- this.raise(this.state.pos, "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).");
- }
-
- const node = this.startNode();
- this.next();
- this.assertNoSpace("Unexpected space between # and identifier");
- node.id = this.parseIdentifier(true);
- return this.finishNode(node, "PrivateName");
- } else {
- return this.parseIdentifier(true);
- }
- }
-
- parseFunctionExpression() {
- const node = this.startNode();
- let meta = this.startNode();
- this.next();
- meta = this.createIdentifier(meta, "function");
-
- if (this.scope.inGenerator && this.eat(types.dot)) {
- return this.parseMetaProperty(node, meta, "sent");
- }
-
- return this.parseFunction(node);
- }
-
- parseMetaProperty(node, meta, propertyName) {
- node.meta = meta;
-
- if (meta.name === "function" && propertyName === "sent") {
- if (this.isContextual(propertyName)) {
- this.expectPlugin("functionSent");
- } else if (!this.hasPlugin("functionSent")) {
- this.unexpected();
- }
- }
-
- const containsEsc = this.state.containsEsc;
- node.property = this.parseIdentifier(true);
-
- if (node.property.name !== propertyName || containsEsc) {
- this.raise(node.property.start, `The only valid meta property for ${meta.name} is ${meta.name}.${propertyName}`);
- }
-
- return this.finishNode(node, "MetaProperty");
- }
-
- parseImportMetaProperty(node) {
- const id = this.createIdentifier(this.startNodeAtNode(node), "import");
- this.expect(types.dot);
-
- if (this.isContextual("meta")) {
- this.expectPlugin("importMeta");
-
- if (!this.inModule) {
- this.raise(id.start, `import.meta may appear only with 'sourceType: "module"'`, {
- code: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"
- });
- }
-
- this.sawUnambiguousESM = true;
- } else if (!this.hasPlugin("importMeta")) {
- this.raise(id.start, `Dynamic imports require a parameter: import('a.js')`);
- }
-
- return this.parseMetaProperty(node, id, "meta");
- }
-
- parseLiteral(value, type, startPos, startLoc) {
- startPos = startPos || this.state.start;
- startLoc = startLoc || this.state.startLoc;
- const node = this.startNodeAt(startPos, startLoc);
- this.addExtra(node, "rawValue", value);
- this.addExtra(node, "raw", this.input.slice(startPos, this.state.end));
- node.value = value;
- this.next();
- return this.finishNode(node, type);
- }
-
- parseParenAndDistinguishExpression(canBeArrow) {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
- let val;
- this.expect(types.parenL);
- const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
- const oldYieldPos = this.state.yieldPos;
- const oldAwaitPos = this.state.awaitPos;
- const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
- this.state.maybeInArrowParameters = true;
- this.state.yieldPos = -1;
- this.state.awaitPos = -1;
- this.state.inFSharpPipelineDirectBody = false;
- const innerStartPos = this.state.start;
- const innerStartLoc = this.state.startLoc;
- const exprList = [];
- const refExpressionErrors = new ExpressionErrors();
- const refNeedsArrowPos = {
- start: 0
- };
- let first = true;
- let spreadStart;
- let optionalCommaStart;
-
- while (!this.match(types.parenR)) {
- if (first) {
- first = false;
- } else {
- this.expect(types.comma, refNeedsArrowPos.start || null);
-
- if (this.match(types.parenR)) {
- optionalCommaStart = this.state.start;
- break;
- }
- }
-
- if (this.match(types.ellipsis)) {
- 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.parseMaybeAssign(false, refExpressionErrors, this.parseParenItem, refNeedsArrowPos));
- }
- }
-
- const innerEndPos = this.state.start;
- const innerEndLoc = this.state.startLoc;
- this.expect(types.parenR);
- this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
- this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
- let arrowNode = this.startNodeAt(startPos, startLoc);
-
- if (canBeArrow && this.shouldParseArrow() && (arrowNode = this.parseArrow(arrowNode))) {
- this.checkYieldAwaitInDefaultParams();
- this.state.yieldPos = oldYieldPos;
- this.state.awaitPos = oldAwaitPos;
-
- for (let _i = 0; _i < exprList.length; _i++) {
- const param = exprList[_i];
-
- if (param.extra && param.extra.parenthesized) {
- this.unexpected(param.extra.parenStart);
- }
- }
-
- this.parseArrowExpression(arrowNode, exprList, false);
- return arrowNode;
- }
-
- if (oldYieldPos !== -1) this.state.yieldPos = oldYieldPos;
- if (oldAwaitPos !== -1) this.state.awaitPos = oldAwaitPos;
-
- if (!exprList.length) {
- this.unexpected(this.state.lastTokStart);
- }
-
- if (optionalCommaStart) this.unexpected(optionalCommaStart);
- if (spreadStart) this.unexpected(spreadStart);
- this.checkExpressionErrors(refExpressionErrors, true);
- if (refNeedsArrowPos.start) this.unexpected(refNeedsArrowPos.start);
- this.toReferencedListDeep(exprList, true);
-
- if (exprList.length > 1) {
- val = this.startNodeAt(innerStartPos, innerStartLoc);
- val.expressions = exprList;
- this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc);
- } else {
- val = exprList[0];
- }
-
- if (!this.options.createParenthesizedExpressions) {
- this.addExtra(val, "parenthesized", true);
- this.addExtra(val, "parenStart", startPos);
- return val;
- }
-
- const parenExpression = this.startNodeAt(startPos, startLoc);
- parenExpression.expression = val;
- this.finishNode(parenExpression, "ParenthesizedExpression");
- return parenExpression;
- }
-
- shouldParseArrow() {
- return !this.canInsertSemicolon();
- }
-
- parseArrow(node) {
- if (this.eat(types.arrow)) {
- return node;
- }
- }
-
- parseParenItem(node, startPos, startLoc) {
- return node;
- }
-
- parseNew() {
- const node = this.startNode();
- let meta = this.startNode();
- this.next();
- meta = this.createIdentifier(meta, "new");
-
- if (this.eat(types.dot)) {
- const metaProp = this.parseMetaProperty(node, meta, "target");
-
- if (!this.scope.inNonArrowFunction && !this.scope.inClass) {
- let error = "new.target can only be used in functions";
-
- if (this.hasPlugin("classProperties")) {
- error += " or class properties";
- }
-
- this.raise(metaProp.start, error);
- }
-
- return metaProp;
- }
-
- node.callee = this.parseNoCallExpr();
-
- if (node.callee.type === "Import") {
- this.raise(node.callee.start, "Cannot use new with import(...)");
- } else if (node.callee.type === "OptionalMemberExpression" || node.callee.type === "OptionalCallExpression") {
- this.raise(this.state.lastTokEnd, "constructors in/after an Optional Chain are not allowed");
- } else if (this.eat(types.questionDot)) {
- this.raise(this.state.start, "constructors in/after an Optional Chain are not allowed");
- }
-
- this.parseNewArguments(node);
- return this.finishNode(node, "NewExpression");
- }
-
- parseNewArguments(node) {
- if (this.eat(types.parenL)) {
- const args = this.parseExprList(types.parenR);
- 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, "Invalid escape sequence in template");
- }
- }
-
- 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(types.backQuote);
- 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(types.dollarBraceL);
- node.expressions.push(this.parseExpression());
- this.expect(types.braceR);
- node.quasis.push(curElt = this.parseTemplateElement(isTagged));
- }
-
- this.next();
- return this.finishNode(node, "TemplateLiteral");
- }
-
- parseObj(isPattern, refExpressionErrors) {
- const propHash = Object.create(null);
- let first = true;
- const node = this.startNode();
- node.properties = [];
- this.next();
-
- while (!this.eat(types.braceR)) {
- if (first) {
- first = false;
- } else {
- this.expect(types.comma);
-
- if (this.match(types.braceR)) {
- this.addExtra(node, "trailingComma", this.state.lastTokStart);
- this.next();
- break;
- }
- }
-
- const prop = this.parseObjectMember(isPattern, refExpressionErrors);
-
- if (!isPattern) {
- this.checkDuplicatedProto(prop, propHash, refExpressionErrors);
- }
-
- if (prop.shorthand) {
- this.addExtra(prop, "shorthand", true);
- }
-
- node.properties.push(prop);
- }
-
- return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression");
- }
-
- isAsyncProp(prop) {
- return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && (this.match(types.name) || this.match(types.num) || this.match(types.string) || this.match(types.bracketL) || this.state.type.keyword || this.match(types.star)) && !this.hasPrecedingLineBreak();
- }
-
- parseObjectMember(isPattern, refExpressionErrors) {
- let decorators = [];
-
- if (this.match(types.at)) {
- if (this.hasPlugin("decorators")) {
- this.raise(this.state.start, "Stage 2 decorators disallow object literal property decorators");
- }
-
- while (this.match(types.at)) {
- decorators.push(this.parseDecorator());
- }
- }
-
- const prop = this.startNode();
- let isGenerator = false;
- let isAsync = false;
- let startPos;
- let startLoc;
-
- if (this.match(types.ellipsis)) {
- if (decorators.length) this.unexpected();
-
- if (isPattern) {
- this.next();
- prop.argument = this.parseIdentifier();
- this.checkCommaAfterRest(125);
- return this.finishNode(prop, "RestElement");
- }
-
- return this.parseSpread();
- }
-
- if (decorators.length) {
- prop.decorators = decorators;
- decorators = [];
- }
-
- prop.method = false;
-
- if (isPattern || refExpressionErrors) {
- startPos = this.state.start;
- startLoc = this.state.startLoc;
- }
-
- if (!isPattern) {
- isGenerator = this.eat(types.star);
- }
-
- const containsEsc = this.state.containsEsc;
- this.parsePropertyName(prop, false);
-
- if (!isPattern && !containsEsc && !isGenerator && this.isAsyncProp(prop)) {
- isAsync = true;
- isGenerator = this.eat(types.star);
- this.parsePropertyName(prop, false);
- } else {
- isAsync = false;
- }
-
- this.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refExpressionErrors, containsEsc);
- return prop;
- }
-
- isGetterOrSetterMethod(prop, isPattern) {
- return !isPattern && !prop.computed && prop.key.type === "Identifier" && (prop.key.name === "get" || prop.key.name === "set") && (this.match(types.string) || this.match(types.num) || this.match(types.bracketL) || this.match(types.name) || !!this.state.type.keyword);
- }
-
- getGetterSetterExpectedParamCount(method) {
- return method.kind === "get" ? 0 : 1;
- }
-
- checkGetterSetterParams(method) {
- const paramCount = this.getGetterSetterExpectedParamCount(method);
- const start = method.start;
-
- if (method.params.length !== paramCount) {
- if (method.kind === "get") {
- this.raise(start, "getter must not have any formal parameters");
- } else {
- this.raise(start, "setter must have exactly one formal parameter");
- }
- }
-
- if (method.kind === "set" && method.params[method.params.length - 1].type === "RestElement") {
- this.raise(start, "setter function argument must not be a rest parameter");
- }
- }
-
- parseObjectMethod(prop, isGenerator, isAsync, isPattern, containsEsc) {
- if (isAsync || isGenerator || this.match(types.parenL)) {
- if (isPattern) this.unexpected();
- prop.kind = "method";
- prop.method = true;
- return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod");
- }
-
- if (!containsEsc && this.isGetterOrSetterMethod(prop, isPattern)) {
- if (isGenerator || isAsync) this.unexpected();
- prop.kind = prop.key.name;
- this.parsePropertyName(prop, false);
- this.parseMethod(prop, false, false, false, false, "ObjectMethod");
- this.checkGetterSetterParams(prop);
- return prop;
- }
- }
-
- parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) {
- prop.shorthand = false;
-
- if (this.eat(types.colon)) {
- prop.value = isPattern ? this.parseMaybeDefault(this.state.start, this.state.startLoc) : this.parseMaybeAssign(false, refExpressionErrors);
- return this.finishNode(prop, "ObjectProperty");
- }
-
- if (!prop.computed && prop.key.type === "Identifier") {
- this.checkReservedWord(prop.key.name, prop.key.start, true, true);
-
- if (isPattern) {
- prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key.__clone());
- } else if (this.match(types.eq) && refExpressionErrors) {
- if (refExpressionErrors.shorthandAssign === -1) {
- refExpressionErrors.shorthandAssign = this.state.start;
- }
-
- prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key.__clone());
- } else {
- prop.value = prop.key.__clone();
- }
-
- prop.shorthand = true;
- return this.finishNode(prop, "ObjectProperty");
- }
- }
-
- parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refExpressionErrors, containsEsc) {
- const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, containsEsc) || this.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors);
- if (!node) this.unexpected();
- return node;
- }
-
- parsePropertyName(prop, isPrivateNameAllowed) {
- if (this.eat(types.bracketL)) {
- prop.computed = true;
- prop.key = this.parseMaybeAssign();
- this.expect(types.bracketR);
- } else {
- const oldInPropertyName = this.state.inPropertyName;
- this.state.inPropertyName = true;
- prop.key = this.match(types.num) || this.match(types.string) || this.match(types.bigint) ? this.parseExprAtom() : this.parseMaybePrivateName(isPrivateNameAllowed);
-
- if (prop.key.type !== "PrivateName") {
- prop.computed = false;
- }
-
- this.state.inPropertyName = oldInPropertyName;
- }
-
- return prop.key;
- }
-
- initFunction(node, isAsync) {
- node.id = null;
- node.generator = false;
- node.async = !!isAsync;
- }
-
- parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {
- const oldYieldPos = this.state.yieldPos;
- const oldAwaitPos = this.state.awaitPos;
- this.state.yieldPos = -1;
- this.state.awaitPos = -1;
- this.initFunction(node, isAsync);
- node.generator = !!isGenerator;
- const allowModifiers = isConstructor;
- this.scope.enter(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (inClassScope ? SCOPE_CLASS : 0) | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));
- this.parseFunctionParams(node, allowModifiers);
- this.parseFunctionBodyAndFinish(node, type, true);
- this.scope.exit();
- this.state.yieldPos = oldYieldPos;
- this.state.awaitPos = oldAwaitPos;
- return node;
- }
-
- parseArrowExpression(node, params, isAsync, trailingCommaPos) {
- this.scope.enter(functionFlags(isAsync, false) | SCOPE_ARROW);
- this.initFunction(node, isAsync);
- const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
- const oldYieldPos = this.state.yieldPos;
- const oldAwaitPos = this.state.awaitPos;
-
- if (params) {
- this.state.maybeInArrowParameters = true;
- this.setArrowFunctionParameters(node, params, trailingCommaPos);
- }
-
- this.state.maybeInArrowParameters = false;
- this.state.yieldPos = -1;
- this.state.awaitPos = -1;
- this.parseFunctionBody(node, true);
- this.scope.exit();
- this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
- this.state.yieldPos = oldYieldPos;
- this.state.awaitPos = oldAwaitPos;
- return this.finishNode(node, "ArrowFunctionExpression");
- }
-
- setArrowFunctionParameters(node, params, trailingCommaPos) {
- node.params = this.toAssignableList(params, trailingCommaPos);
- }
-
- parseFunctionBodyAndFinish(node, type, isMethod = false) {
- this.parseFunctionBody(node, false, isMethod);
- this.finishNode(node, type);
- }
-
- parseFunctionBody(node, allowExpression, isMethod = false) {
- const isExpression = allowExpression && !this.match(types.braceL);
- const oldStrict = this.state.strict;
- let useStrict = false;
- const oldInParameters = this.state.inParameters;
- this.state.inParameters = false;
-
- if (isExpression) {
- node.body = this.parseMaybeAssign();
- this.checkParams(node, false, allowExpression, false);
- } else {
- const nonSimple = !this.isSimpleParamList(node.params);
-
- if (!oldStrict || nonSimple) {
- useStrict = this.strictDirective(this.state.end);
-
- if (useStrict && nonSimple) {
- const errorPos = (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.end : node.start;
- this.raise(errorPos, "Illegal 'use strict' directive in function with non-simple parameter list");
- }
- }
-
- const oldLabels = this.state.labels;
- this.state.labels = [];
- if (useStrict) this.state.strict = true;
- this.checkParams(node, !oldStrict && !useStrict && !allowExpression && !isMethod && !nonSimple, allowExpression, !oldStrict && useStrict);
- node.body = this.parseBlock(true, false);
- this.state.labels = oldLabels;
- }
-
- this.state.inParameters = oldInParameters;
-
- if (this.state.strict && node.id) {
- this.checkLVal(node.id, BIND_OUTSIDE, undefined, "function name", undefined, !oldStrict && useStrict);
- }
-
- this.state.strict = oldStrict;
- }
-
- 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 nameHash = Object.create(null);
-
- for (let i = 0; i < node.params.length; i++) {
- this.checkLVal(node.params[i], BIND_VAR, allowDuplicates ? null : nameHash, "function parameter list", undefined, strictModeChanged);
- }
- }
-
- parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) {
- const elts = [];
- let first = true;
-
- while (!this.eat(close)) {
- if (first) {
- first = false;
- } else {
- this.expect(types.comma);
-
- 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, refNeedsArrowPos, allowPlaceholder) {
- let elt;
-
- if (allowEmpty && this.match(types.comma)) {
- elt = null;
- } else if (this.match(types.ellipsis)) {
- const spreadNodeStartPos = this.state.start;
- const spreadNodeStartLoc = this.state.startLoc;
- elt = this.parseParenItem(this.parseSpread(refExpressionErrors, refNeedsArrowPos), spreadNodeStartPos, spreadNodeStartLoc);
- } else if (this.match(types.question)) {
- this.expectPlugin("partialApplication");
-
- if (!allowPlaceholder) {
- this.raise(this.state.start, "Unexpected argument placeholder");
- }
-
- const node = this.startNode();
- this.next();
- elt = this.finishNode(node, "ArgumentPlaceholder");
- } else {
- elt = this.parseMaybeAssign(false, refExpressionErrors, this.parseParenItem, refNeedsArrowPos);
- }
-
- 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;
-
- if (this.match(types.name)) {
- name = this.state.value;
- } else if (this.state.type.keyword) {
- name = this.state.type.keyword;
-
- if ((name === "class" || name === "function") && (this.state.lastTokEnd !== this.state.lastTokStart + 1 || this.input.charCodeAt(this.state.lastTokStart) !== 46)) {
- this.state.context.pop();
- }
- } else {
- throw this.unexpected();
- }
-
- if (liberal) {
- this.state.type = types.name;
- } else {
- this.checkReservedWord(name, this.state.start, !!this.state.type.keyword, false);
- }
-
- this.next();
- return name;
- }
-
- checkReservedWord(word, startLoc, checkKeywords, isBinding) {
- if (this.scope.inGenerator && word === "yield") {
- this.raise(startLoc, "Can not use 'yield' as identifier inside a generator");
- return;
- }
-
- if (word === "await") {
- if (this.scope.inAsync) {
- this.raise(startLoc, "Can not use 'await' as identifier inside an async function");
- return;
- }
-
- if (this.state.awaitPos === -1 && (this.state.maybeInArrowParameters || this.isAwaitAllowed())) {
- this.state.awaitPos = this.state.start;
- }
- }
-
- if (this.scope.inClass && !this.scope.inNonArrowFunction && word === "arguments") {
- this.raise(startLoc, "'arguments' is not allowed in class field initializer");
- return;
- }
-
- if (checkKeywords && isKeyword(word)) {
- this.raise(startLoc, `Unexpected keyword '${word}'`);
- return;
- }
-
- const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord;
-
- if (reservedTest(word, this.inModule)) {
- if (!this.scope.inAsync && word === "await") {
- this.raise(startLoc, "Can not use keyword 'await' outside an async function");
- } else {
- this.raise(startLoc, `Unexpected reserved word '${word}'`);
- }
- }
- }
-
- isAwaitAllowed() {
- if (this.scope.inFunction) return this.scope.inAsync;
- if (this.options.allowAwaitOutsideFunction) return true;
-
- if (this.hasPlugin("topLevelAwait")) {
- return this.inModule && this.scope.inAsync;
- }
-
- return false;
- }
-
- parseAwait() {
- const node = this.startNode();
- this.next();
-
- if (this.state.inParameters) {
- this.raise(node.start, "await is not allowed in async function parameters");
- } else if (this.state.awaitPos === -1) {
- this.state.awaitPos = node.start;
- }
-
- if (this.eat(types.star)) {
- this.raise(node.start, "await* has been removed from the async functions proposal. Use Promise.all() instead.");
- }
-
- if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) {
- if (this.hasPrecedingLineBreak() || this.match(types.plusMin) || this.match(types.parenL) || this.match(types.bracketL) || this.match(types.backQuote) || this.match(types.regexp) || this.match(types.slash) || this.hasPlugin("v8intrinsic") && this.match(types.modulo)) {
- this.ambiguousScriptDifferentAst = true;
- } else {
- this.sawUnambiguousESM = true;
- }
- }
-
- if (!this.state.soloAwait) {
- node.argument = this.parseMaybeUnary();
- }
-
- return this.finishNode(node, "AwaitExpression");
- }
-
- parseYield(noIn) {
- const node = this.startNode();
-
- if (this.state.inParameters) {
- this.raise(node.start, "yield is not allowed in generator parameters");
- } else if (this.state.yieldPos === -1) {
- this.state.yieldPos = node.start;
- }
-
- this.next();
-
- if (this.match(types.semi) || !this.match(types.star) && !this.state.type.startsExpr || this.hasPrecedingLineBreak()) {
- node.delegate = false;
- node.argument = null;
- } else {
- node.delegate = this.eat(types.star);
- node.argument = this.parseMaybeAssign(noIn);
- }
-
- return this.finishNode(node, "YieldExpression");
- }
-
- checkPipelineAtInfixOperator(left, leftStartPos) {
- if (this.getPluginOption("pipelineOperator", "proposal") === "smart") {
- if (left.type === "SequenceExpression") {
- this.raise(leftStartPos, `Pipeline head should not be a comma-separated sequence expression`);
- }
- }
- }
-
- parseSmartPipelineBody(childExpression, startPos, startLoc) {
- const pipelineStyle = this.checkSmartPipelineBodyStyle(childExpression);
- this.checkSmartPipelineBodyEarlyErrors(childExpression, pipelineStyle, startPos);
- return this.parseSmartPipelineBodyInStyle(childExpression, pipelineStyle, startPos, startLoc);
- }
-
- checkSmartPipelineBodyEarlyErrors(childExpression, pipelineStyle, startPos) {
- if (this.match(types.arrow)) {
- throw this.raise(this.state.start, `Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized`);
- } else if (pipelineStyle === "PipelineTopicExpression" && childExpression.type === "SequenceExpression") {
- this.raise(startPos, `Pipeline body may not be a comma-separated sequence expression`);
- }
- }
-
- parseSmartPipelineBodyInStyle(childExpression, pipelineStyle, startPos, startLoc) {
- const bodyNode = this.startNodeAt(startPos, startLoc);
-
- switch (pipelineStyle) {
- case "PipelineBareFunction":
- bodyNode.callee = childExpression;
- break;
-
- case "PipelineBareConstructor":
- bodyNode.callee = childExpression.callee;
- break;
-
- case "PipelineBareAwaitedFunction":
- bodyNode.callee = childExpression.argument;
- break;
-
- case "PipelineTopicExpression":
- if (!this.topicReferenceWasUsedInCurrentTopicContext()) {
- this.raise(startPos, `Pipeline is in topic style but does not use topic reference`);
- }
-
- bodyNode.expression = childExpression;
- break;
-
- default:
- throw new Error(`Internal @babel/parser error: Unknown pipeline style (${pipelineStyle})`);
- }
-
- return this.finishNode(bodyNode, pipelineStyle);
- }
-
- checkSmartPipelineBodyStyle(expression) {
- switch (expression.type) {
- default:
- return this.isSimpleReference(expression) ? "PipelineBareFunction" : "PipelineTopicExpression";
- }
- }
-
- isSimpleReference(expression) {
- switch (expression.type) {
- case "MemberExpression":
- return !expression.computed && this.isSimpleReference(expression.object);
-
- case "Identifier":
- return true;
-
- default:
- return false;
- }
- }
-
- withTopicPermittingContext(callback) {
- const outerContextTopicState = this.state.topicContext;
- this.state.topicContext = {
- maxNumOfResolvableTopics: 1,
- maxTopicIndex: null
- };
-
- try {
- return callback();
- } finally {
- this.state.topicContext = outerContextTopicState;
- }
- }
-
- withTopicForbiddingContext(callback) {
- const outerContextTopicState = this.state.topicContext;
- this.state.topicContext = {
- maxNumOfResolvableTopics: 0,
- maxTopicIndex: null
- };
-
- try {
- return callback();
- } finally {
- this.state.topicContext = outerContextTopicState;
- }
- }
-
- withSoloAwaitPermittingContext(callback) {
- const outerContextSoloAwaitState = this.state.soloAwait;
- this.state.soloAwait = true;
-
- try {
- return callback();
- } finally {
- this.state.soloAwait = outerContextSoloAwaitState;
- }
- }
-
- registerTopicReference() {
- this.state.topicContext.maxTopicIndex = 0;
- }
-
- primaryTopicReferenceIsAllowedInCurrentTopicContext() {
- return this.state.topicContext.maxNumOfResolvableTopics >= 1;
- }
-
- topicReferenceWasUsedInCurrentTopicContext() {
- return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0;
- }
-
- parseFSharpPipelineBody(prec, noIn) {
- 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.parseMaybeUnary(), startPos, startLoc, prec, noIn);
- this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
- return ret;
- }
-
-}
-
-const loopLabel = {
- kind: "loop"
-},
- switchLabel = {
- kind: "switch"
-};
-const FUNC_NO_FLAGS = 0b000,
- FUNC_STATEMENT = 0b001,
- FUNC_HANGING_STATEMENT = 0b010,
- FUNC_NULLABLE_ID = 0b100;
-class StatementParser extends ExpressionParser {
- parseTopLevel(file, program) {
- program.sourceType = this.options.sourceType;
- program.interpreter = this.parseInterpreterDirective();
- this.parseBlockBody(program, true, true, types.eof);
-
- if (this.inModule && !this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) {
- for (let _i = 0, _Array$from = Array.from(this.scope.undefinedExports); _i < _Array$from.length; _i++) {
- const [name] = _Array$from[_i];
- const pos = this.scope.undefinedExports.get(name);
- this.raise(pos, `Export '${name}' is not defined`);
- }
- }
-
- file.program = this.finishNode(program, "Program");
- file.comments = this.state.comments;
- if (this.options.tokens) file.tokens = this.tokens;
- return this.finishNode(file, "File");
- }
-
- stmtToDirective(stmt) {
- const expr = stmt.expression;
- const directiveLiteral = this.startNodeAt(expr.start, expr.loc.start);
- const directive = this.startNodeAt(stmt.start, stmt.loc.start);
- const raw = this.input.slice(expr.start, expr.end);
- const val = directiveLiteral.value = raw.slice(1, -1);
- this.addExtra(directiveLiteral, "raw", raw);
- this.addExtra(directiveLiteral, "rawValue", val);
- directive.value = this.finishNodeAt(directiveLiteral, "DirectiveLiteral", expr.end, expr.loc.end);
- return this.finishNodeAt(directive, "Directive", stmt.end, stmt.loc.end);
- }
-
- parseInterpreterDirective() {
- if (!this.match(types.interpreterDirective)) {
- return null;
- }
-
- const node = this.startNode();
- node.value = this.state.value;
- this.next();
- return this.finishNode(node, "InterpreterDirective");
- }
-
- isLet(context) {
- if (!this.isContextual("let")) {
- return false;
- }
-
- const next = this.nextTokenStart();
- const nextCh = this.input.charCodeAt(next);
- if (nextCh === 91) return true;
- if (context) return false;
- if (nextCh === 123) return true;
-
- if (isIdentifierStart(nextCh)) {
- let pos = next + 1;
-
- while (isIdentifierChar(this.input.charCodeAt(pos))) {
- ++pos;
- }
-
- const ident = this.input.slice(next, pos);
- if (!keywordRelationalOperator.test(ident)) return true;
- }
-
- return false;
- }
-
- parseStatement(context, topLevel) {
- if (this.match(types.at)) {
- 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 = types._var;
- kind = "let";
- }
-
- switch (starttype) {
- case types._break:
- case types._continue:
- return this.parseBreakContinueStatement(node, starttype.keyword);
-
- case types._debugger:
- return this.parseDebuggerStatement(node);
-
- case types._do:
- return this.parseDoStatement(node);
-
- case types._for:
- return this.parseForStatement(node);
-
- case types._function:
- if (this.lookaheadCharCode() === 46) break;
-
- if (context) {
- if (this.state.strict) {
- this.raise(this.state.start, "In strict mode code, functions can only be declared at top level or inside a block");
- } else if (context !== "if" && context !== "label") {
- this.raise(this.state.start, "In non-strict mode code, functions can only be declared at top level, " + "inside a block, or as the body of an if statement");
- }
- }
-
- return this.parseFunctionStatement(node, false, !context);
-
- case types._class:
- if (context) this.unexpected();
- return this.parseClass(node, true);
-
- case types._if:
- return this.parseIfStatement(node);
-
- case types._return:
- return this.parseReturnStatement(node);
-
- case types._switch:
- return this.parseSwitchStatement(node);
-
- case types._throw:
- return this.parseThrowStatement(node);
-
- case types._try:
- return this.parseTryStatement(node);
-
- case types._const:
- case types._var:
- kind = kind || this.state.value;
-
- if (context && kind !== "var") {
- this.raise(this.state.start, "Lexical declaration cannot appear in a single-statement context");
- }
-
- return this.parseVarStatement(node, kind);
-
- case types._while:
- return this.parseWhileStatement(node);
-
- case types._with:
- return this.parseWithStatement(node);
-
- case types.braceL:
- return this.parseBlock();
-
- case types.semi:
- return this.parseEmptyStatement(node);
-
- case types._export:
- case types._import:
- {
- const nextTokenCharCode = this.lookaheadCharCode();
-
- if (nextTokenCharCode === 40 || nextTokenCharCode === 46) {
- break;
- }
-
- if (!this.options.allowImportExportEverywhere && !topLevel) {
- this.raise(this.state.start, "'import' and 'export' may only appear at the top level");
- }
-
- this.next();
- let result;
-
- if (starttype === types._import) {
- 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, "Async functions can only be declared at the top level or inside a block");
- }
-
- this.next();
- return this.parseFunctionStatement(node, true, !context);
- }
- }
- }
-
- const maybeName = this.state.value;
- const expr = this.parseExpression();
-
- if (starttype === types.name && expr.type === "Identifier" && this.eat(types.colon)) {
- 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, `'import' and 'export' may appear only with 'sourceType: "module"'`, {
- code: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"
- });
- }
- }
-
- 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(types._class);
- }
-
- parseDecorators(allowExport) {
- const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];
-
- while (this.match(types.at)) {
- const decorator = this.parseDecorator();
- currentContextDecorators.push(decorator);
- }
-
- if (this.match(types._export)) {
- if (!allowExport) {
- this.unexpected();
- }
-
- if (this.hasPlugin("decorators") && !this.getPluginOption("decorators", "decoratorsBeforeExport")) {
- this.raise(this.state.start, "Using the export keyword between a decorator and a class is not allowed. " + "Please use `export @dec class` instead.");
- }
- } else if (!this.canHaveLeadingDecorator()) {
- throw this.raise(this.state.start, "Leading decorators must be attached to a class declaration");
- }
- }
-
- 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(types.parenL)) {
- expr = this.parseExpression();
- this.expect(types.parenR);
- } else {
- expr = this.parseIdentifier(false);
-
- while (this.eat(types.dot)) {
- 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(types.parenL)) {
- const node = this.startNodeAtNode(expr);
- node.callee = expr;
- node.arguments = this.parseCallExpressionArguments(types.parenR, false);
- this.toReferencedList(node.arguments);
- return this.finishNode(node, "CallExpression");
- }
-
- return expr;
- }
-
- parseBreakContinueStatement(node, keyword) {
- const isBreak = keyword === "break";
- this.next();
-
- if (this.isLineTerminator()) {
- node.label = null;
- } else {
- node.label = this.parseIdentifier();
- this.semicolon();
- }
-
- this.verifyBreakContinue(node, keyword);
- return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement");
- }
-
- verifyBreakContinue(node, keyword) {
- const isBreak = keyword === "break";
- 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, "Unsyntactic " + keyword);
- }
- }
-
- parseDebuggerStatement(node) {
- this.next();
- this.semicolon();
- return this.finishNode(node, "DebuggerStatement");
- }
-
- parseHeaderExpression() {
- this.expect(types.parenL);
- const val = this.parseExpression();
- this.expect(types.parenR);
- return val;
- }
-
- parseDoStatement(node) {
- this.next();
- this.state.labels.push(loopLabel);
- node.body = this.withTopicForbiddingContext(() => this.parseStatement("do"));
- this.state.labels.pop();
- this.expect(types._while);
- node.test = this.parseHeaderExpression();
- this.eat(types.semi);
- return this.finishNode(node, "DoWhileStatement");
- }
-
- parseForStatement(node) {
- this.next();
- this.state.labels.push(loopLabel);
- let awaitAt = -1;
-
- if (this.isAwaitAllowed() && this.eatContextual("await")) {
- awaitAt = this.state.lastTokStart;
- }
-
- this.scope.enter(SCOPE_OTHER);
- this.expect(types.parenL);
-
- if (this.match(types.semi)) {
- if (awaitAt > -1) {
- this.unexpected(awaitAt);
- }
-
- return this.parseFor(node, null);
- }
-
- const isLet = this.isLet();
-
- if (this.match(types._var) || this.match(types._const) || 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(types._in) || this.isContextual("of")) && init.declarations.length === 1) {
- return this.parseForIn(node, init, awaitAt);
- }
-
- if (awaitAt > -1) {
- this.unexpected(awaitAt);
- }
-
- return this.parseFor(node, init);
- }
-
- const refExpressionErrors = new ExpressionErrors();
- const init = this.parseExpression(true, refExpressionErrors);
-
- if (this.match(types._in) || this.isContextual("of")) {
- this.toAssignable(init);
- const description = this.isContextual("of") ? "for-of statement" : "for-in statement";
- this.checkLVal(init, undefined, undefined, 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(types._else) ? this.parseStatement("if") : null;
- return this.finishNode(node, "IfStatement");
- }
-
- parseReturnStatement(node) {
- if (!this.scope.inFunction && !this.options.allowReturnOutsideFunction) {
- this.raise(this.state.start, "'return' outside of function");
- }
-
- 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(types.braceL);
- this.state.labels.push(switchLabel);
- this.scope.enter(SCOPE_OTHER);
- let cur;
-
- for (let sawDefault; !this.match(types.braceR);) {
- if (this.match(types._case) || this.match(types._default)) {
- const isCase = this.match(types._case);
- 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, "Multiple default clauses");
- }
-
- sawDefault = true;
- cur.test = null;
- }
-
- this.expect(types.colon);
- } 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 (lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start))) {
- this.raise(this.state.lastTokEnd, "Illegal newline after throw");
- }
-
- node.argument = this.parseExpression();
- this.semicolon();
- return this.finishNode(node, "ThrowStatement");
- }
-
- parseTryStatement(node) {
- this.next();
- node.block = this.parseBlock();
- node.handler = null;
-
- if (this.match(types._catch)) {
- const clause = this.startNode();
- this.next();
-
- if (this.match(types.parenL)) {
- this.expect(types.parenL);
- clause.param = this.parseBindingAtom();
- const simple = clause.param.type === "Identifier";
- this.scope.enter(simple ? SCOPE_SIMPLE_CATCH : 0);
- this.checkLVal(clause.param, BIND_LEXICAL, null, "catch clause");
- this.expect(types.parenR);
- } else {
- clause.param = null;
- this.scope.enter(SCOPE_OTHER);
- }
-
- clause.body = this.withTopicForbiddingContext(() => this.parseBlock(false, false));
- this.scope.exit();
- node.handler = this.finishNode(clause, "CatchClause");
- }
-
- node.finalizer = this.eat(types._finally) ? this.parseBlock() : null;
-
- if (!node.handler && !node.finalizer) {
- this.raise(node.start, "Missing catch or finally clause");
- }
-
- 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.withTopicForbiddingContext(() => this.parseStatement("while"));
- this.state.labels.pop();
- return this.finishNode(node, "WhileStatement");
- }
-
- parseWithStatement(node) {
- if (this.state.strict) {
- this.raise(this.state.start, "'with' in strict mode");
- }
-
- this.next();
- node.object = this.parseHeaderExpression();
- node.body = this.withTopicForbiddingContext(() => this.parseStatement("with"));
- return this.finishNode(node, "WithStatement");
- }
-
- parseEmptyStatement(node) {
- this.next();
- return this.finishNode(node, "EmptyStatement");
- }
-
- parseLabeledStatement(node, maybeName, expr, context) {
- for (let _i2 = 0, _this$state$labels = this.state.labels; _i2 < _this$state$labels.length; _i2++) {
- const label = _this$state$labels[_i2];
-
- if (label.name === maybeName) {
- this.raise(expr.start, `Label '${maybeName}' is already declared`);
- }
- }
-
- const kind = this.state.type.isLoop ? "loop" : this.match(types._switch) ? "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) {
- const node = this.startNode();
- this.expect(types.braceL);
-
- if (createNewLexicalScope) {
- this.scope.enter(SCOPE_OTHER);
- }
-
- this.parseBlockBody(node, allowDirectives, false, types.braceR);
-
- 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) {
- const body = node.body = [];
- const directives = node.directives = [];
- this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end);
- }
-
- parseBlockOrModuleBlockBody(body, directives, topLevel, end) {
- let parsedNonDirective = false;
- let oldStrict;
- let octalPosition;
-
- while (!this.eat(end)) {
- if (!parsedNonDirective && this.state.containsOctal && !octalPosition) {
- octalPosition = this.state.octalPosition;
- }
-
- const stmt = this.parseStatement(null, topLevel);
-
- if (directives && !parsedNonDirective && this.isValidDirective(stmt)) {
- const directive = this.stmtToDirective(stmt);
- directives.push(directive);
-
- if (oldStrict === undefined && directive.value.value === "use strict") {
- oldStrict = this.state.strict;
- this.setStrict(true);
-
- if (octalPosition) {
- this.raise(octalPosition, "Octal literal in strict mode");
- }
- }
-
- continue;
- }
-
- parsedNonDirective = true;
- body.push(stmt);
- }
-
- if (oldStrict === false) {
- this.setStrict(false);
- }
- }
-
- parseFor(node, init) {
- node.init = init;
- this.expect(types.semi);
- node.test = this.match(types.semi) ? null : this.parseExpression();
- this.expect(types.semi);
- node.update = this.match(types.parenR) ? null : this.parseExpression();
- this.expect(types.parenR);
- node.body = this.withTopicForbiddingContext(() => this.parseStatement("for"));
- this.scope.exit();
- this.state.labels.pop();
- return this.finishNode(node, "ForStatement");
- }
-
- parseForIn(node, init, awaitAt) {
- const isForIn = this.match(types._in);
- 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, `${isForIn ? "for-in" : "for-of"} loop variable declaration may not have an initializer`);
- } else if (init.type === "AssignmentPattern") {
- this.raise(init.start, "Invalid left-hand side in for-loop");
- }
-
- node.left = init;
- node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();
- this.expect(types.parenR);
- node.body = this.withTopicForbiddingContext(() => 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(types.eq)) {
- decl.init = this.parseMaybeAssign(isFor);
- } else {
- if (kind === "const" && !(this.match(types._in) || this.isContextual("of"))) {
- if (!isTypescript) {
- this.unexpected();
- }
- } else if (decl.id.type !== "Identifier" && !(isFor && (this.match(types._in) || this.isContextual("of")))) {
- this.raise(this.state.lastTokEnd, "Complex binding patterns require an initialization value");
- }
-
- decl.init = null;
- }
-
- declarations.push(this.finishNode(decl, "VariableDeclarator"));
- if (!this.eat(types.comma)) break;
- }
-
- return node;
- }
-
- parseVarId(decl, kind) {
- decl.id = this.parseBindingAtom();
- this.checkLVal(decl.id, kind === "var" ? BIND_VAR : BIND_LEXICAL, undefined, "variable declaration", 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(types.star) && isHangingStatement) {
- this.raise(this.state.start, "Generators can only be declared at the top level or inside a block");
- }
-
- node.generator = this.eat(types.star);
-
- if (isStatement) {
- node.id = this.parseFunctionId(requireId);
- }
-
- const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
- const oldYieldPos = this.state.yieldPos;
- const oldAwaitPos = this.state.awaitPos;
- this.state.maybeInArrowParameters = false;
- this.state.yieldPos = -1;
- this.state.awaitPos = -1;
- this.scope.enter(functionFlags(node.async, node.generator));
-
- if (!isStatement) {
- node.id = this.parseFunctionId();
- }
-
- this.parseFunctionParams(node);
- this.withTopicForbiddingContext(() => {
- this.parseFunctionBodyAndFinish(node, isStatement ? "FunctionDeclaration" : "FunctionExpression");
- });
- this.scope.exit();
-
- if (isStatement && !isHangingStatement) {
- this.registerFunctionStatementId(node);
- }
-
- this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
- this.state.yieldPos = oldYieldPos;
- this.state.awaitPos = oldAwaitPos;
- return node;
- }
-
- parseFunctionId(requireId) {
- return requireId || this.match(types.name) ? this.parseIdentifier() : null;
- }
-
- parseFunctionParams(node, allowModifiers) {
- const oldInParameters = this.state.inParameters;
- this.state.inParameters = true;
- this.expect(types.parenL);
- node.params = this.parseBindingList(types.parenR, 41, false, allowModifiers);
- this.state.inParameters = oldInParameters;
- this.checkYieldAwaitInDefaultParams();
- }
-
- 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);
- this.state.strict = oldStrict;
- return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression");
- }
-
- isClassProperty() {
- return this.match(types.eq) || this.match(types.semi) || this.match(types.braceR);
- }
-
- isClassMethod() {
- return this.match(types.parenL);
- }
-
- isNonstaticConstructor(method) {
- return !method.computed && !method.static && (method.key.name === "constructor" || method.key.value === "constructor");
- }
-
- parseClassBody(constructorAllowsSuper) {
- this.classScope.enter();
- const state = {
- hadConstructor: false
- };
- let decorators = [];
- const classBody = this.startNode();
- classBody.body = [];
- this.expect(types.braceL);
- this.withTopicForbiddingContext(() => {
- while (!this.eat(types.braceR)) {
- if (this.eat(types.semi)) {
- if (decorators.length > 0) {
- throw this.raise(this.state.lastTokEnd, "Decorators must not be followed by a semicolon");
- }
-
- continue;
- }
-
- if (this.match(types.at)) {
- 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, constructorAllowsSuper);
-
- if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) {
- this.raise(member.start, "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?");
- }
- }
- });
-
- if (decorators.length) {
- throw this.raise(this.state.start, "You have trailing decorators with no method");
- }
-
- this.classScope.exit();
- return this.finishNode(classBody, "ClassBody");
- }
-
- parseClassMember(classBody, member, state, constructorAllowsSuper) {
- let isStatic = false;
- const containsEsc = this.state.containsEsc;
-
- if (this.match(types.name) && this.state.value === "static") {
- 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;
- } else if (this.isClassProperty()) {
- const prop = member;
- prop.computed = false;
- prop.key = key;
- prop.static = false;
- classBody.body.push(this.parseClassProperty(prop));
- return;
- } else if (containsEsc) {
- throw this.unexpected();
- }
-
- isStatic = true;
- }
-
- this.parseClassMemberWithIsStatic(classBody, member, state, isStatic, constructorAllowsSuper);
- }
-
- parseClassMemberWithIsStatic(classBody, member, state, isStatic, constructorAllowsSuper) {
- const publicMethod = member;
- const privateMethod = member;
- const publicProp = member;
- const privateProp = member;
- const method = publicMethod;
- const publicMember = publicMethod;
- member.static = isStatic;
-
- if (this.eat(types.star)) {
- method.kind = "method";
- this.parseClassPropertyName(method);
-
- if (method.key.type === "PrivateName") {
- this.pushClassPrivateMethod(classBody, privateMethod, true, false);
- return;
- }
-
- if (this.isNonstaticConstructor(publicMethod)) {
- this.raise(publicMethod.key.start, "Constructor can't be a generator");
- }
-
- this.pushClassMethod(classBody, publicMethod, true, false, false, false);
- return;
- }
-
- const containsEsc = this.state.containsEsc;
- const key = this.parseClassPropertyName(member);
- const isPrivate = key.type === "PrivateName";
- const isSimple = key.type === "Identifier";
- 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, "Duplicate constructor in the same class");
- }
-
- state.hadConstructor = true;
- allowsDirectSuper = constructorAllowsSuper;
- }
-
- 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 (isSimple && key.name === "async" && !containsEsc && !this.isLineTerminator()) {
- const isGenerator = this.eat(types.star);
-
- if (publicMember.optional) {
- this.unexpected(maybeQuestionTokenStart);
- }
-
- method.kind = "method";
- this.parseClassPropertyName(method);
- this.parsePostMemberNameModifiers(publicMember);
-
- if (method.key.type === "PrivateName") {
- this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true);
- } else {
- if (this.isNonstaticConstructor(publicMethod)) {
- this.raise(publicMethod.key.start, "Constructor can't be an async function");
- }
-
- this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false);
- }
- } else if (isSimple && (key.name === "get" || key.name === "set") && !containsEsc && !(this.match(types.star) && this.isLineTerminator())) {
- method.kind = key.name;
- this.parseClassPropertyName(publicMethod);
-
- if (method.key.type === "PrivateName") {
- this.pushClassPrivateMethod(classBody, privateMethod, false, false);
- } else {
- if (this.isNonstaticConstructor(publicMethod)) {
- this.raise(publicMethod.key.start, "Constructor can't have get/set modifier");
- }
-
- 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();
- }
- }
-
- parseClassPropertyName(member) {
- const key = this.parsePropertyName(member, true);
-
- if (!member.computed && member.static && (key.name === "prototype" || key.value === "prototype")) {
- this.raise(key.start, "Classes may not have static property named prototype");
- }
-
- if (key.type === "PrivateName" && key.id.name === "constructor") {
- this.raise(key.start, "Classes may not have a private field named '#constructor'");
- }
-
- return key;
- }
-
- pushClassProperty(classBody, prop) {
- if (!prop.computed && (prop.key.name === "constructor" || prop.key.value === "constructor")) {
- this.raise(prop.key.start, "Classes may not have a field named 'constructor'");
- }
-
- classBody.body.push(this.parseClassProperty(prop));
- }
-
- pushClassPrivateProperty(classBody, prop) {
- this.expectPlugin("classPrivateProperties", prop.key.start);
- const node = this.parseClassPrivateProperty(prop);
- classBody.body.push(node);
- this.classScope.declarePrivateName(node.key.id.name, 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) {
- this.expectPlugin("classPrivateMethods", method.key.start);
- 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.classScope.declarePrivateName(node.key.id.name, kind, node.key.start);
- }
-
- parsePostMemberNameModifiers(methodOrProp) {}
-
- parseAccessModifier() {
- return undefined;
- }
-
- parseClassPrivateProperty(node) {
- this.scope.enter(SCOPE_CLASS | SCOPE_SUPER);
- node.value = this.eat(types.eq) ? this.parseMaybeAssign() : null;
- this.semicolon();
- this.scope.exit();
- return this.finishNode(node, "ClassPrivateProperty");
- }
-
- parseClassProperty(node) {
- if (!node.typeAnnotation) {
- this.expectPlugin("classProperties");
- }
-
- this.scope.enter(SCOPE_CLASS | SCOPE_SUPER);
-
- if (this.match(types.eq)) {
- this.expectPlugin("classProperties");
- this.next();
- node.value = this.parseMaybeAssign();
- } else {
- node.value = null;
- }
-
- this.semicolon();
- this.scope.exit();
- return this.finishNode(node, "ClassProperty");
- }
-
- parseClassId(node, isStatement, optionalId, bindingType = BIND_CLASS) {
- if (this.match(types.name)) {
- node.id = this.parseIdentifier();
-
- if (isStatement) {
- this.checkLVal(node.id, bindingType, undefined, "class name");
- }
- } else {
- if (optionalId || !isStatement) {
- node.id = null;
- } else {
- this.unexpected(null, "A class name is required");
- }
- }
- }
-
- parseClassSuper(node) {
- node.superClass = this.eat(types._extends) ? this.parseExprSubscripts() : null;
- }
-
- parseExport(node) {
- const hasDefault = this.maybeParseExportDefaultSpecifier(node);
- const parseAfterDefault = !hasDefault || this.eat(types.comma);
- const hasStar = parseAfterDefault && this.eatExportStar(node);
- const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node);
- const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(types.comma));
- 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, types.braceL);
- }
-
- 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(types._default)) {
- node.declaration = this.parseExportDefaultExpression();
- this.checkExport(node, true, true);
- return this.finishNode(node, "ExportDefaultDeclaration");
- }
-
- throw this.unexpected(null, types.braceL);
- }
-
- eatExportStar(node) {
- return this.eat(types.star);
- }
-
- 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("as")) {
- if (!node.specifiers) node.specifiers = [];
- const specifier = this.startNodeAt(this.state.lastTokStart, this.state.lastTokStartLoc);
- this.next();
- specifier.exported = this.parseIdentifier(true);
- node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier"));
- return true;
- }
-
- return false;
- }
-
- maybeParseExportNamedSpecifiers(node) {
- if (this.match(types.braceL)) {
- if (!node.specifiers) node.specifiers = [];
- node.specifiers.push(...this.parseExportSpecifiers());
- node.source = null;
- node.declaration = null;
- return true;
- }
-
- return false;
- }
-
- maybeParseExportDeclaration(node) {
- if (this.shouldParseExportDeclaration()) {
- if (this.isContextual("async")) {
- const next = this.nextTokenStart();
-
- if (!this.isUnparsedContextual(next, "function")) {
- this.unexpected(next, `Unexpected token, expected "function"`);
- }
- }
-
- node.specifiers = [];
- node.source = null;
- node.declaration = this.parseExportDeclaration(node);
- return true;
- }
-
- return false;
- }
-
- isAsyncFunction() {
- if (!this.isContextual("async")) 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(types._function) || isAsync) {
- this.next();
-
- if (isAsync) {
- this.next();
- }
-
- return this.parseFunction(expr, FUNC_STATEMENT | FUNC_NULLABLE_ID, isAsync);
- } else if (this.match(types._class)) {
- return this.parseClass(expr, true, true);
- } else if (this.match(types.at)) {
- if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport")) {
- this.raise(this.state.start, "Decorators must be placed *before* the 'export' keyword." + " You can set the 'decoratorsBeforeExport' option to false to use" + " the 'export @decorator class {}' syntax");
- }
-
- this.parseDecorators(false);
- return this.parseClass(expr, true, true);
- } else if (this.match(types._const) || this.match(types._var) || this.isLet()) {
- throw this.raise(this.state.start, "Only expressions, functions or classes are allowed as the `default` export.");
- } else {
- const res = this.parseMaybeAssign();
- this.semicolon();
- return res;
- }
- }
-
- parseExportDeclaration(node) {
- return this.parseStatement(null);
- }
-
- isExportDefaultSpecifier() {
- if (this.match(types.name)) {
- return this.state.value !== "async" && this.state.value !== "let";
- }
-
- if (!this.match(types._default)) {
- return false;
- }
-
- const next = this.nextTokenStart();
- return this.input.charCodeAt(next) === 44 || this.isUnparsedContextual(next, "from");
- }
-
- parseExportFrom(node, expect) {
- if (this.eatContextual("from")) {
- node.source = this.parseImportSource();
- this.checkExport(node);
- } else {
- if (expect) {
- this.unexpected();
- } else {
- node.source = null;
- }
- }
-
- this.semicolon();
- }
-
- shouldParseExportDeclaration() {
- if (this.match(types.at)) {
- this.expectOnePlugin(["decorators", "decorators-legacy"]);
-
- if (this.hasPlugin("decorators")) {
- if (this.getPluginOption("decorators", "decoratorsBeforeExport")) {
- this.unexpected(this.state.start, "Decorators must be placed *before* the 'export' keyword." + " You can set the 'decoratorsBeforeExport' option to false to use" + " the 'export @decorator class {}' syntax");
- } else {
- return true;
- }
- }
- }
-
- return this.state.type.keyword === "var" || this.state.type.keyword === "const" || this.state.type.keyword === "function" || this.state.type.keyword === "class" || this.isLet() || this.isAsyncFunction();
- }
-
- checkExport(node, checkNames, isDefault, isFrom) {
- if (checkNames) {
- if (isDefault) {
- this.checkDuplicateExports(node, "default");
- } else if (node.specifiers && node.specifiers.length) {
- for (let _i3 = 0, _node$specifiers = node.specifiers; _i3 < _node$specifiers.length; _i3++) {
- const specifier = _node$specifiers[_i3];
- this.checkDuplicateExports(specifier, specifier.exported.name);
-
- if (!isFrom && specifier.local) {
- this.checkReservedWord(specifier.local.name, specifier.local.start, true, false);
- this.scope.checkLocalExport(specifier.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 (let _i4 = 0, _node$declaration$dec = node.declaration.declarations; _i4 < _node$declaration$dec.length; _i4++) {
- const declaration = _node$declaration$dec[_i4];
- this.checkDeclaration(declaration.id);
- }
- }
- }
- }
-
- const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];
-
- if (currentContextDecorators.length) {
- const isClass = node.declaration && (node.declaration.type === "ClassDeclaration" || node.declaration.type === "ClassExpression");
-
- if (!node.declaration || !isClass) {
- throw this.raise(node.start, "You can only use decorators on an export when exporting a class");
- }
-
- this.takeDecorators(node.declaration);
- }
- }
-
- checkDeclaration(node) {
- if (node.type === "Identifier") {
- this.checkDuplicateExports(node, node.name);
- } else if (node.type === "ObjectPattern") {
- for (let _i5 = 0, _node$properties = node.properties; _i5 < _node$properties.length; _i5++) {
- const prop = _node$properties[_i5];
- this.checkDeclaration(prop);
- }
- } else if (node.type === "ArrayPattern") {
- for (let _i6 = 0, _node$elements = node.elements; _i6 < _node$elements.length; _i6++) {
- const elem = _node$elements[_i6];
-
- 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.state.exportedIdentifiers.indexOf(name) > -1) {
- this.raise(node.start, name === "default" ? "Only one default export allowed per module." : `\`${name}\` has already been exported. Exported identifiers must be unique.`);
- }
-
- this.state.exportedIdentifiers.push(name);
- }
-
- parseExportSpecifiers() {
- const nodes = [];
- let first = true;
- this.expect(types.braceL);
-
- while (!this.eat(types.braceR)) {
- if (first) {
- first = false;
- } else {
- this.expect(types.comma);
- if (this.eat(types.braceR)) break;
- }
-
- const node = this.startNode();
- node.local = this.parseIdentifier(true);
- node.exported = this.eatContextual("as") ? this.parseIdentifier(true) : node.local.__clone();
- nodes.push(this.finishNode(node, "ExportSpecifier"));
- }
-
- return nodes;
- }
-
- parseImport(node) {
- node.specifiers = [];
-
- if (!this.match(types.string)) {
- const hasDefault = this.maybeParseDefaultImportSpecifier(node);
- const parseNext = !hasDefault || this.eat(types.comma);
- const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);
- if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);
- this.expectContextual("from");
- }
-
- node.source = this.parseImportSource();
- this.semicolon();
- return this.finishNode(node, "ImportDeclaration");
- }
-
- parseImportSource() {
- if (!this.match(types.string)) this.unexpected();
- return this.parseExprAtom();
- }
-
- shouldParseDefaultImport(node) {
- return this.match(types.name);
- }
-
- parseImportSpecifierLocal(node, specifier, type, contextDescription) {
- specifier.local = this.parseIdentifier();
- this.checkLVal(specifier.local, BIND_LEXICAL, undefined, contextDescription);
- node.specifiers.push(this.finishNode(specifier, type));
- }
-
- maybeParseDefaultImportSpecifier(node) {
- if (this.shouldParseDefaultImport(node)) {
- this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier", "default import specifier");
- return true;
- }
-
- return false;
- }
-
- maybeParseStarImportSpecifier(node) {
- if (this.match(types.star)) {
- const specifier = this.startNode();
- this.next();
- this.expectContextual("as");
- this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier", "import namespace specifier");
- return true;
- }
-
- return false;
- }
-
- parseNamedImportSpecifiers(node) {
- let first = true;
- this.expect(types.braceL);
-
- while (!this.eat(types.braceR)) {
- if (first) {
- first = false;
- } else {
- if (this.eat(types.colon)) {
- throw this.raise(this.state.start, "ES2015 named imports do not destructure. " + "Use another statement for destructuring after the import.");
- }
-
- this.expect(types.comma);
- if (this.eat(types.braceR)) break;
- }
-
- this.parseImportSpecifier(node);
- }
- }
-
- parseImportSpecifier(node) {
- const specifier = this.startNode();
- specifier.imported = this.parseIdentifier(true);
-
- if (this.eatContextual("as")) {
- specifier.local = this.parseIdentifier();
- } else {
- this.checkReservedWord(specifier.imported.name, specifier.start, true, true);
- specifier.local = specifier.imported.__clone();
- }
-
- this.checkLVal(specifier.local, BIND_LEXICAL, undefined, "import specifier");
- node.specifiers.push(this.finishNode(specifier, "ImportSpecifier"));
- }
-
-}
-
-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 (let _i = 0, _Array$from = Array.from(oldClassScope.undefinedPrivateNames); _i < _Array$from.length; _i++) {
- const [name, pos] = _Array$from[_i];
-
- if (current) {
- if (!current.undefinedPrivateNames.has(name)) {
- current.undefinedPrivateNames.set(name, pos);
- }
- } else {
- this.raiseUndeclaredPrivateName(name, pos);
- }
- }
- }
-
- 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, `Duplicate private name #${name}`);
- }
-
- classScope.privateNames.add(name);
- classScope.undefinedPrivateNames.delete(name);
- }
-
- usePrivateName(name, pos) {
- let classScope;
-
- for (let _i2 = 0, _this$stack = this.stack; _i2 < _this$stack.length; _i2++) {
- classScope = _this$stack[_i2];
- if (classScope.privateNames.has(name)) return;
- }
-
- if (classScope) {
- classScope.undefinedPrivateNames.set(name, pos);
- } else {
- this.raiseUndeclaredPrivateName(name, pos);
- }
- }
-
- raiseUndeclaredPrivateName(name, pos) {
- this.raise(pos, `Private name #${name} is not defined`);
- }
-
-}
-
-class Parser extends StatementParser {
- constructor(options, input) {
- options = getOptions(options);
- super(options, input);
- const ScopeHandler = this.getScopeHandler();
- this.options = options;
- this.inModule = this.options.sourceType === "module";
- this.scope = new ScopeHandler(this.raise.bind(this), this.inModule);
- this.classScope = new ClassScopeHandler(this.raise.bind(this));
- this.plugins = pluginsMap(this.options.plugins);
- this.filename = options.sourceFilename;
- }
-
- getScopeHandler() {
- return ScopeHandler;
- }
-
- parse() {
- let scopeFlags = SCOPE_PROGRAM;
-
- if (this.hasPlugin("topLevelAwait") && this.inModule) {
- scopeFlags |= SCOPE_ASYNC;
- }
-
- this.scope.enter(scopeFlags);
- 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 (let _i = 0; _i < plugins.length; _i++) {
- const plugin = plugins[_i];
- const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}];
- if (!pluginMap.has(name)) pluginMap.set(name, options || {});
- }
-
- return pluginMap;
-}
-
-function parse(input, options) {
- if (options && 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 getParser(options, input) {
- let cls = Parser;
-
- if (options && 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 (let _i = 0; _i < pluginList.length; _i++) {
- const plugin = pluginList[_i];
- cls = mixinPlugins[plugin](cls);
- }
-
- parserClassCache[key] = cls;
- }
-
- return cls;
-}
-
-exports.parse = parse;
-exports.parseExpression = parseExpression;
-exports.tokTypes = types;
-//# sourceMappingURL=index.js.map
diff --git a/assets/node_modules/@babel/parser/lib/index.js.map b/assets/node_modules/@babel/parser/lib/index.js.map
deleted file mode 100644
index a454c5c..0000000
--- a/assets/node_modules/@babel/parser/lib/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sources":["../src/tokenizer/types.js","../src/util/scopeflags.js","../src/plugins/estree.js","../src/util/whitespace.js","../src/tokenizer/context.js","../src/util/identifier.js","../src/plugins/flow.js","../src/plugins/jsx/xhtml.js","../src/plugins/jsx/index.js","../src/util/scope.js","../src/plugins/typescript/scope.js","../src/plugins/typescript/index.js","../src/plugins/placeholders.js","../src/plugins/v8intrinsic.js","../src/plugin-utils.js","../src/options.js","../src/util/location.js","../src/parser/base.js","../src/parser/comments.js","../src/parser/location.js","../src/tokenizer/state.js","../src/tokenizer/index.js","../src/parser/util.js","../src/parser/node.js","../src/parser/lval.js","../src/parser/expression.js","../src/parser/statement.js","../src/util/class-scope.js","../src/parser/index.js","../src/index.js"],"sourcesContent":["// @flow\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n\n// The `startsExpr` property is used to determine whether an expression\n// may be the “argument” subexpression of a `yield` expression or\n// `yield` statement. It is set on all token types that may be at the\n// start of a subexpression.\n\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\n\ntype TokenOptions = {\n keyword?: string,\n beforeExpr?: boolean,\n startsExpr?: boolean,\n rightAssociative?: boolean,\n isLoop?: boolean,\n isAssign?: boolean,\n prefix?: boolean,\n postfix?: boolean,\n binop?: ?number,\n};\n\nexport class TokenType {\n label: string;\n keyword: ?string;\n beforeExpr: boolean;\n startsExpr: boolean;\n rightAssociative: boolean;\n isLoop: boolean;\n isAssign: boolean;\n prefix: boolean;\n postfix: boolean;\n binop: ?number;\n updateContext: ?(prevType: TokenType) => void;\n\n constructor(label: string, conf: TokenOptions = {}) {\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.rightAssociative = !!conf.rightAssociative;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop != null ? conf.binop : null;\n this.updateContext = null;\n }\n}\n\nexport const keywords = new Map<string, TokenType>();\n\nfunction createKeyword(name: string, options: TokenOptions = {}): TokenType {\n options.keyword = name;\n const token = new TokenType(name, options);\n keywords.set(name, token);\n return token;\n}\n\nfunction createBinop(name: string, binop: number) {\n return new TokenType(name, { beforeExpr, binop });\n}\n\nexport const types: { [name: string]: TokenType } = {\n num: new TokenType(\"num\", { startsExpr }),\n bigint: new TokenType(\"bigint\", { startsExpr }),\n regexp: new TokenType(\"regexp\", { startsExpr }),\n string: new TokenType(\"string\", { startsExpr }),\n name: new TokenType(\"name\", { startsExpr }),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", { beforeExpr, startsExpr }),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", { beforeExpr, startsExpr }),\n braceBarL: new TokenType(\"{|\", { beforeExpr, startsExpr }),\n braceR: new TokenType(\"}\"),\n braceBarR: new TokenType(\"|}\"),\n parenL: new TokenType(\"(\", { beforeExpr, startsExpr }),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", { beforeExpr }),\n semi: new TokenType(\";\", { beforeExpr }),\n colon: new TokenType(\":\", { beforeExpr }),\n doubleColon: new TokenType(\"::\", { beforeExpr }),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", { beforeExpr }),\n questionDot: new TokenType(\"?.\"),\n arrow: new TokenType(\"=>\", { beforeExpr }),\n template: new TokenType(\"template\"),\n ellipsis: new TokenType(\"...\", { beforeExpr }),\n backQuote: new TokenType(\"`\", { startsExpr }),\n dollarBraceL: new TokenType(\"${\", { beforeExpr, startsExpr }),\n at: new TokenType(\"@\"),\n hash: new TokenType(\"#\", { startsExpr }),\n\n // Special hashbang token.\n interpreterDirective: new TokenType(\"#!...\"),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", { beforeExpr, isAssign }),\n assign: new TokenType(\"_=\", { beforeExpr, isAssign }),\n incDec: new TokenType(\"++/--\", { prefix, postfix, startsExpr }),\n bang: new TokenType(\"!\", { beforeExpr, prefix, startsExpr }),\n tilde: new TokenType(\"~\", { beforeExpr, prefix, startsExpr }),\n pipeline: createBinop(\"|>\", 0),\n nullishCoalescing: createBinop(\"??\", 1),\n logicalOR: createBinop(\"||\", 1),\n logicalAND: createBinop(\"&&\", 2),\n bitwiseOR: createBinop(\"|\", 3),\n bitwiseXOR: createBinop(\"^\", 4),\n bitwiseAND: createBinop(\"&\", 5),\n equality: createBinop(\"==/!=/===/!==\", 6),\n relational: createBinop(\"</>/<=/>=\", 7),\n bitShift: createBinop(\"<</>>/>>>\", 8),\n plusMin: new TokenType(\"+/-\", { beforeExpr, binop: 9, prefix, startsExpr }),\n // startsExpr: required by v8intrinsic plugin\n modulo: new TokenType(\"%\", { beforeExpr, binop: 10, startsExpr }),\n star: createBinop(\"*\", 10),\n slash: createBinop(\"/\", 10),\n exponent: new TokenType(\"**\", {\n beforeExpr,\n binop: 11,\n rightAssociative: true,\n }),\n\n // Keywords\n _break: createKeyword(\"break\"),\n _case: createKeyword(\"case\", { beforeExpr }),\n _catch: createKeyword(\"catch\"),\n _continue: createKeyword(\"continue\"),\n _debugger: createKeyword(\"debugger\"),\n _default: createKeyword(\"default\", { beforeExpr }),\n _do: createKeyword(\"do\", { isLoop, beforeExpr }),\n _else: createKeyword(\"else\", { beforeExpr }),\n _finally: createKeyword(\"finally\"),\n _for: createKeyword(\"for\", { isLoop }),\n _function: createKeyword(\"function\", { startsExpr }),\n _if: createKeyword(\"if\"),\n _return: createKeyword(\"return\", { beforeExpr }),\n _switch: createKeyword(\"switch\"),\n _throw: createKeyword(\"throw\", { beforeExpr, prefix, startsExpr }),\n _try: createKeyword(\"try\"),\n _var: createKeyword(\"var\"),\n _const: createKeyword(\"const\"),\n _while: createKeyword(\"while\", { isLoop }),\n _with: createKeyword(\"with\"),\n _new: createKeyword(\"new\", { beforeExpr, startsExpr }),\n _this: createKeyword(\"this\", { startsExpr }),\n _super: createKeyword(\"super\", { startsExpr }),\n _class: createKeyword(\"class\", { startsExpr }),\n _extends: createKeyword(\"extends\", { beforeExpr }),\n _export: createKeyword(\"export\"),\n _import: createKeyword(\"import\", { startsExpr }),\n _null: createKeyword(\"null\", { startsExpr }),\n _true: createKeyword(\"true\", { startsExpr }),\n _false: createKeyword(\"false\", { startsExpr }),\n _in: createKeyword(\"in\", { beforeExpr, binop: 7 }),\n _instanceof: createKeyword(\"instanceof\", { beforeExpr, binop: 7 }),\n _typeof: createKeyword(\"typeof\", { beforeExpr, prefix, startsExpr }),\n _void: createKeyword(\"void\", { beforeExpr, prefix, startsExpr }),\n _delete: createKeyword(\"delete\", { beforeExpr, prefix, startsExpr }),\n};\n","// @flow\n\n// Each scope gets a bitset that may contain these flags\n// prettier-ignore\nexport const SCOPE_OTHER = 0b0000000000,\n SCOPE_PROGRAM = 0b0000000001,\n SCOPE_FUNCTION = 0b0000000010,\n SCOPE_ASYNC = 0b0000000100,\n SCOPE_GENERATOR = 0b0000001000,\n SCOPE_ARROW = 0b0000010000,\n SCOPE_SIMPLE_CATCH = 0b0000100000,\n SCOPE_SUPER = 0b0001000000,\n SCOPE_DIRECT_SUPER = 0b0010000000,\n SCOPE_CLASS = 0b0100000000,\n SCOPE_TS_MODULE = 0b1000000000,\n SCOPE_VAR = SCOPE_PROGRAM | SCOPE_FUNCTION | SCOPE_TS_MODULE;\n\nexport type ScopeFlags =\n | typeof SCOPE_OTHER\n | typeof SCOPE_PROGRAM\n | typeof SCOPE_FUNCTION\n | typeof SCOPE_VAR\n | typeof SCOPE_ASYNC\n | typeof SCOPE_GENERATOR\n | typeof SCOPE_ARROW\n | typeof SCOPE_SIMPLE_CATCH\n | typeof SCOPE_SUPER\n | typeof SCOPE_DIRECT_SUPER\n | typeof SCOPE_CLASS;\n\nexport function functionFlags(isAsync: boolean, isGenerator: boolean) {\n return (\n SCOPE_FUNCTION |\n (isAsync ? SCOPE_ASYNC : 0) |\n (isGenerator ? SCOPE_GENERATOR : 0)\n );\n}\n\n// These flags are meant to be _only_ used inside the Scope class (or subclasses).\n// prettier-ignore\nexport const BIND_KIND_VALUE = 0b00000_0000_01,\n BIND_KIND_TYPE = 0b00000_0000_10,\n // Used in checkLVal and declareName to determine the type of a binding\n BIND_SCOPE_VAR = 0b00000_0001_00, // Var-style binding\n BIND_SCOPE_LEXICAL = 0b00000_0010_00, // Let- or const-style binding\n BIND_SCOPE_FUNCTION = 0b00000_0100_00, // Function declaration\n BIND_SCOPE_OUTSIDE = 0b00000_1000_00, // Special case for function names as\n // bound inside the function\n // Misc flags\n BIND_FLAGS_NONE = 0b00001_0000_00,\n BIND_FLAGS_CLASS = 0b00010_0000_00,\n BIND_FLAGS_TS_ENUM = 0b00100_0000_00,\n BIND_FLAGS_TS_CONST_ENUM = 0b01000_0000_00,\n BIND_FLAGS_TS_EXPORT_ONLY = 0b10000_0000_00;\n\n// These flags are meant to be _only_ used by Scope consumers\n// prettier-ignore\n/* = is value? | is type? | scope | misc flags */\nexport const BIND_CLASS = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_CLASS ,\n BIND_LEXICAL = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | 0 ,\n BIND_VAR = BIND_KIND_VALUE | 0 | BIND_SCOPE_VAR | 0 ,\n BIND_FUNCTION = BIND_KIND_VALUE | 0 | BIND_SCOPE_FUNCTION | 0 ,\n BIND_TS_INTERFACE = 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_CLASS ,\n BIND_TS_TYPE = 0 | BIND_KIND_TYPE | 0 | 0 ,\n BIND_TS_ENUM = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_TS_ENUM,\n BIND_TS_AMBIENT = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,\n // These bindings don't introduce anything in the scope. They are used for assignments and\n // function expressions IDs.\n BIND_NONE = 0 | 0 | 0 | BIND_FLAGS_NONE ,\n BIND_OUTSIDE = BIND_KIND_VALUE | 0 | 0 | BIND_FLAGS_NONE ,\n\n BIND_TS_CONST_ENUM = BIND_TS_ENUM | BIND_FLAGS_TS_CONST_ENUM,\n BIND_TS_NAMESPACE = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY;\n\nexport type BindingTypes =\n | typeof BIND_NONE\n | typeof BIND_OUTSIDE\n | typeof BIND_VAR\n | typeof BIND_LEXICAL\n | typeof BIND_CLASS\n | typeof BIND_FUNCTION\n | typeof BIND_TS_INTERFACE\n | typeof BIND_TS_TYPE\n | typeof BIND_TS_ENUM\n | typeof BIND_TS_AMBIENT\n | typeof BIND_TS_NAMESPACE;\n\n// prettier-ignore\nexport const CLASS_ELEMENT_FLAG_STATIC = 0b1_00,\n CLASS_ELEMENT_KIND_GETTER = 0b0_10,\n CLASS_ELEMENT_KIND_SETTER = 0b0_01,\n CLASS_ELEMENT_KIND_ACCESSOR = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_KIND_SETTER;\n\n// prettier-ignore\nexport const CLASS_ELEMENT_STATIC_GETTER = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_FLAG_STATIC,\n CLASS_ELEMENT_STATIC_SETTER = CLASS_ELEMENT_KIND_SETTER | CLASS_ELEMENT_FLAG_STATIC,\n CLASS_ELEMENT_INSTANCE_GETTER = CLASS_ELEMENT_KIND_GETTER,\n CLASS_ELEMENT_INSTANCE_SETTER = CLASS_ELEMENT_KIND_SETTER,\n CLASS_ELEMENT_OTHER = 0;\n\nexport type ClassElementTypes =\n | typeof CLASS_ELEMENT_STATIC_GETTER\n | typeof CLASS_ELEMENT_STATIC_SETTER\n | typeof CLASS_ELEMENT_INSTANCE_GETTER\n | typeof CLASS_ELEMENT_INSTANCE_SETTER\n | typeof CLASS_ELEMENT_OTHER;\n","// @flow\n\nimport { types as tt, TokenType } from \"../tokenizer/types\";\nimport type Parser from \"../parser\";\nimport type { ExpressionErrors } from \"../parser/util\";\nimport * as N from \"../types\";\nimport type { Position } from \"../util/location\";\nimport { type BindingTypes, BIND_NONE } from \"../util/scopeflags\";\n\nfunction isSimpleProperty(node: N.Node): boolean {\n return (\n node != null &&\n node.type === \"Property\" &&\n node.kind === \"init\" &&\n node.method === false\n );\n}\n\nexport default (superClass: Class<Parser>): Class<Parser> =>\n class extends superClass {\n estreeParseRegExpLiteral({ pattern, flags }: N.RegExpLiteral): N.Node {\n let regex = null;\n try {\n regex = new RegExp(pattern, flags);\n } catch (e) {\n // In environments that don't support these flags value will\n // be null as the regex can't be represented natively.\n }\n const node = this.estreeParseLiteral(regex);\n node.regex = { pattern, flags };\n\n return node;\n }\n\n estreeParseBigIntLiteral(value: any): N.Node {\n // https://github.com/estree/estree/blob/master/es2020.md#bigintliteral\n // $FlowIgnore\n const bigInt = typeof BigInt !== \"undefined\" ? BigInt(value) : null;\n const node = this.estreeParseLiteral(bigInt);\n node.bigint = String(node.value || value);\n\n return node;\n }\n\n estreeParseLiteral(value: any): N.Node {\n return this.parseLiteral(value, \"Literal\");\n }\n\n directiveToStmt(directive: N.Directive): N.ExpressionStatement {\n const directiveLiteral = directive.value;\n\n const stmt = this.startNodeAt(directive.start, directive.loc.start);\n const expression = this.startNodeAt(\n directiveLiteral.start,\n directiveLiteral.loc.start,\n );\n\n expression.value = directiveLiteral.value;\n expression.raw = directiveLiteral.extra.raw;\n\n stmt.expression = this.finishNodeAt(\n expression,\n \"Literal\",\n directiveLiteral.end,\n directiveLiteral.loc.end,\n );\n stmt.directive = directiveLiteral.extra.raw.slice(1, -1);\n\n return this.finishNodeAt(\n stmt,\n \"ExpressionStatement\",\n directive.end,\n directive.loc.end,\n );\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n initFunction(\n node: N.BodilessFunctionOrMethodBase,\n isAsync: ?boolean,\n ): void {\n super.initFunction(node, isAsync);\n node.expression = false;\n }\n\n checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n if (isSimpleProperty(node)) {\n this.checkDeclaration(((node: any): N.EstreeProperty).value);\n } else {\n super.checkDeclaration(node);\n }\n }\n\n checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n const prop = ((method: any): N.EstreeProperty | N.EstreeMethodDefinition);\n const paramCount = prop.kind === \"get\" ? 0 : 1;\n const start = prop.start;\n if (prop.value.params.length !== paramCount) {\n if (prop.kind === \"get\") {\n this.raise(start, \"getter must not have any formal parameters\");\n } else {\n this.raise(start, \"setter must have exactly one formal parameter\");\n }\n } else if (\n prop.kind === \"set\" &&\n prop.value.params[0].type === \"RestElement\"\n ) {\n this.raise(\n start,\n \"setter function argument must not be a rest parameter\",\n );\n }\n }\n\n checkLVal(\n expr: N.Expression,\n bindingType: BindingTypes = BIND_NONE,\n checkClashes: ?{ [key: string]: boolean },\n contextDescription: string,\n disallowLetBinding?: boolean,\n ): void {\n switch (expr.type) {\n case \"ObjectPattern\":\n expr.properties.forEach(prop => {\n this.checkLVal(\n prop.type === \"Property\" ? prop.value : prop,\n bindingType,\n checkClashes,\n \"object destructuring pattern\",\n disallowLetBinding,\n );\n });\n break;\n default:\n super.checkLVal(\n expr,\n bindingType,\n checkClashes,\n contextDescription,\n disallowLetBinding,\n );\n }\n }\n\n checkDuplicatedProto(\n prop: N.ObjectMember | N.SpreadElement,\n protoRef: { used: boolean },\n refExpressionErrors: ?ExpressionErrors,\n ): void {\n if (\n prop.type === \"SpreadElement\" ||\n prop.computed ||\n prop.method ||\n // $FlowIgnore\n prop.shorthand\n ) {\n return;\n }\n\n const key = prop.key;\n // It is either an Identifier or a String/NumericLiteral\n const name = key.type === \"Identifier\" ? key.name : String(key.value);\n\n if (name === \"__proto__\" && prop.kind === \"init\") {\n // Store the first redefinition's position\n if (protoRef.used) {\n if (refExpressionErrors && refExpressionErrors.doubleProto === -1) {\n refExpressionErrors.doubleProto = key.start;\n } else {\n this.raise(key.start, \"Redefinition of __proto__ property\");\n }\n }\n\n protoRef.used = true;\n }\n }\n\n isValidDirective(stmt: N.Statement): boolean {\n return (\n stmt.type === \"ExpressionStatement\" &&\n stmt.expression.type === \"Literal\" &&\n typeof stmt.expression.value === \"string\" &&\n (!stmt.expression.extra || !stmt.expression.extra.parenthesized)\n );\n }\n\n stmtToDirective(stmt: N.Statement): N.Directive {\n const directive = super.stmtToDirective(stmt);\n const value = stmt.expression.value;\n\n // Reset value to the actual value as in estree mode we want\n // the stmt to have the real value and not the raw value\n directive.value.value = value;\n\n return directive;\n }\n\n parseBlockBody(\n node: N.BlockStatementLike,\n allowDirectives: ?boolean,\n topLevel: boolean,\n end: TokenType,\n ): void {\n super.parseBlockBody(node, allowDirectives, topLevel, end);\n\n const directiveStatements = node.directives.map(d =>\n this.directiveToStmt(d),\n );\n node.body = directiveStatements.concat(node.body);\n delete node.directives;\n }\n\n pushClassMethod(\n classBody: N.ClassBody,\n method: N.ClassMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowsDirectSuper: boolean,\n ): void {\n this.parseMethod(\n method,\n isGenerator,\n isAsync,\n isConstructor,\n allowsDirectSuper,\n \"ClassMethod\",\n true,\n );\n if (method.typeParameters) {\n // $FlowIgnore\n method.value.typeParameters = method.typeParameters;\n delete method.typeParameters;\n }\n classBody.body.push(method);\n }\n\n parseExprAtom(refExpressionErrors?: ?ExpressionErrors): N.Expression {\n switch (this.state.type) {\n case tt.num:\n case tt.string:\n return this.estreeParseLiteral(this.state.value);\n\n case tt.regexp:\n return this.estreeParseRegExpLiteral(this.state.value);\n\n case tt.bigint:\n return this.estreeParseBigIntLiteral(this.state.value);\n\n case tt._null:\n return this.estreeParseLiteral(null);\n\n case tt._true:\n return this.estreeParseLiteral(true);\n\n case tt._false:\n return this.estreeParseLiteral(false);\n\n default:\n return super.parseExprAtom(refExpressionErrors);\n }\n }\n\n parseLiteral<T: N.Literal>(\n value: any,\n type: /*T[\"kind\"]*/ string,\n startPos?: number,\n startLoc?: Position,\n ): T {\n const node = super.parseLiteral(value, type, startPos, startLoc);\n node.raw = node.extra.raw;\n delete node.extra;\n\n return node;\n }\n\n parseFunctionBody(\n node: N.Function,\n allowExpression: ?boolean,\n isMethod?: boolean = false,\n ): void {\n super.parseFunctionBody(node, allowExpression, isMethod);\n node.expression = node.body.type !== \"BlockStatement\";\n }\n\n parseMethod<T: N.MethodLike>(\n node: T,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowDirectSuper: boolean,\n type: string,\n inClassScope: boolean = false,\n ): T {\n let funcNode = this.startNode();\n funcNode.kind = node.kind; // provide kind, so super method correctly sets state\n funcNode = super.parseMethod(\n funcNode,\n isGenerator,\n isAsync,\n isConstructor,\n allowDirectSuper,\n type,\n inClassScope,\n );\n funcNode.type = \"FunctionExpression\";\n delete funcNode.kind;\n // $FlowIgnore\n node.value = funcNode;\n\n type = type === \"ClassMethod\" ? \"MethodDefinition\" : type;\n return this.finishNode(node, type);\n }\n\n parseObjectMethod(\n prop: N.ObjectMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n containsEsc: boolean,\n ): ?N.ObjectMethod {\n const node: N.EstreeProperty = (super.parseObjectMethod(\n prop,\n isGenerator,\n isAsync,\n isPattern,\n containsEsc,\n ): any);\n\n if (node) {\n node.type = \"Property\";\n if (((node: any): N.ClassMethod).kind === \"method\") node.kind = \"init\";\n node.shorthand = false;\n }\n\n return (node: any);\n }\n\n parseObjectProperty(\n prop: N.ObjectProperty,\n startPos: ?number,\n startLoc: ?Position,\n isPattern: boolean,\n refExpressionErrors: ?ExpressionErrors,\n ): ?N.ObjectProperty {\n const node: N.EstreeProperty = (super.parseObjectProperty(\n prop,\n startPos,\n startLoc,\n isPattern,\n refExpressionErrors,\n ): any);\n\n if (node) {\n node.kind = \"init\";\n node.type = \"Property\";\n }\n\n return (node: any);\n }\n\n toAssignable(node: N.Node): N.Node {\n if (isSimpleProperty(node)) {\n this.toAssignable(node.value);\n\n return node;\n }\n\n return super.toAssignable(node);\n }\n\n toAssignableObjectExpressionProp(prop: N.Node, isLast: boolean) {\n if (prop.kind === \"get\" || prop.kind === \"set\") {\n throw this.raise(\n prop.key.start,\n \"Object pattern can't contain getter or setter\",\n );\n } else if (prop.method) {\n throw this.raise(\n prop.key.start,\n \"Object pattern can't contain methods\",\n );\n } else {\n super.toAssignableObjectExpressionProp(prop, isLast);\n }\n }\n\n finishCallExpression<T: N.CallExpression | N.OptionalCallExpression>(\n node: T,\n optional: boolean,\n ): N.Expression {\n super.finishCallExpression(node, optional);\n\n if (node.callee.type === \"Import\") {\n ((node: N.Node): N.EstreeImportExpression).type = \"ImportExpression\";\n ((node: N.Node): N.EstreeImportExpression).source = node.arguments[0];\n delete node.arguments;\n delete node.callee;\n }\n\n return node;\n }\n\n toReferencedListDeep(\n exprList: $ReadOnlyArray<?N.Expression>,\n isParenthesizedExpr?: boolean,\n ): void {\n // ImportExpressions do not have an arguments array.\n if (!exprList) {\n return;\n }\n\n super.toReferencedListDeep(exprList, isParenthesizedExpr);\n }\n };\n","// @flow\n\nimport * as charCodes from \"charcodes\";\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\nexport const lineBreak = /\\r\\n?|[\\n\\u2028\\u2029]/;\nexport const lineBreakG = new RegExp(lineBreak.source, \"g\");\n\n// https://tc39.github.io/ecma262/#sec-line-terminators\nexport function isNewLine(code: number): boolean {\n switch (code) {\n case charCodes.lineFeed:\n case charCodes.carriageReturn:\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return true;\n\n default:\n return false;\n }\n}\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\n// https://tc39.github.io/ecma262/#sec-white-space\nexport function isWhitespace(code: number): boolean {\n switch (code) {\n case 0x0009: // CHARACTER TABULATION\n case 0x000b: // LINE TABULATION\n case 0x000c: // FORM FEED\n case charCodes.space:\n case charCodes.nonBreakingSpace:\n case charCodes.oghamSpaceMark:\n case 0x2000: // EN QUAD\n case 0x2001: // EM QUAD\n case 0x2002: // EN SPACE\n case 0x2003: // EM SPACE\n case 0x2004: // THREE-PER-EM SPACE\n case 0x2005: // FOUR-PER-EM SPACE\n case 0x2006: // SIX-PER-EM SPACE\n case 0x2007: // FIGURE SPACE\n case 0x2008: // PUNCTUATION SPACE\n case 0x2009: // THIN SPACE\n case 0x200a: // HAIR SPACE\n case 0x202f: // NARROW NO-BREAK SPACE\n case 0x205f: // MEDIUM MATHEMATICAL SPACE\n case 0x3000: // IDEOGRAPHIC SPACE\n case 0xfeff: // ZERO WIDTH NO-BREAK SPACE\n return true;\n\n default:\n return false;\n }\n}\n","// @flow\n\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\nimport { types as tt } from \"./types\";\nimport { lineBreak } from \"../util/whitespace\";\n\nexport class TokContext {\n constructor(\n token: string,\n isExpr?: boolean,\n preserveSpace?: boolean,\n override?: ?Function, // Takes a Tokenizer as a this-parameter, and returns void.\n ) {\n this.token = token;\n this.isExpr = !!isExpr;\n this.preserveSpace = !!preserveSpace;\n this.override = override;\n }\n\n token: string;\n isExpr: boolean;\n preserveSpace: boolean;\n override: ?Function;\n}\n\nexport const types: {\n [key: string]: TokContext,\n} = {\n braceStatement: new TokContext(\"{\", false),\n braceExpression: new TokContext(\"{\", true),\n templateQuasi: new TokContext(\"${\", false),\n parenStatement: new TokContext(\"(\", false),\n parenExpression: new TokContext(\"(\", true),\n template: new TokContext(\"`\", true, true, p => p.readTmplToken()),\n functionExpression: new TokContext(\"function\", true),\n functionStatement: new TokContext(\"function\", false),\n};\n\n// Token-specific context update code\n\ntt.parenR.updateContext = tt.braceR.updateContext = function() {\n if (this.state.context.length === 1) {\n this.state.exprAllowed = true;\n return;\n }\n\n let out = this.state.context.pop();\n if (out === types.braceStatement && this.curContext().token === \"function\") {\n out = this.state.context.pop();\n }\n\n this.state.exprAllowed = !out.isExpr;\n};\n\ntt.name.updateContext = function(prevType) {\n let allowed = false;\n if (prevType !== tt.dot) {\n if (\n (this.state.value === \"of\" && !this.state.exprAllowed) ||\n (this.state.value === \"yield\" && this.scope.inGenerator)\n ) {\n allowed = true;\n }\n }\n this.state.exprAllowed = allowed;\n\n if (this.state.isIterator) {\n this.state.isIterator = false;\n }\n};\n\ntt.braceL.updateContext = function(prevType) {\n this.state.context.push(\n this.braceIsBlock(prevType) ? types.braceStatement : types.braceExpression,\n );\n this.state.exprAllowed = true;\n};\n\ntt.dollarBraceL.updateContext = function() {\n this.state.context.push(types.templateQuasi);\n this.state.exprAllowed = true;\n};\n\ntt.parenL.updateContext = function(prevType) {\n const statementParens =\n prevType === tt._if ||\n prevType === tt._for ||\n prevType === tt._with ||\n prevType === tt._while;\n this.state.context.push(\n statementParens ? types.parenStatement : types.parenExpression,\n );\n this.state.exprAllowed = true;\n};\n\ntt.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n};\n\ntt._function.updateContext = tt._class.updateContext = function(prevType) {\n if (\n prevType.beforeExpr &&\n prevType !== tt.semi &&\n prevType !== tt._else &&\n !(\n prevType === tt._return &&\n lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start))\n ) &&\n !(\n (prevType === tt.colon || prevType === tt.braceL) &&\n this.curContext() === types.b_stat\n )\n ) {\n this.state.context.push(types.functionExpression);\n } else {\n this.state.context.push(types.functionStatement);\n }\n\n this.state.exprAllowed = false;\n};\n\ntt.backQuote.updateContext = function() {\n if (this.curContext() === types.template) {\n this.state.context.pop();\n } else {\n this.state.context.push(types.template);\n }\n this.state.exprAllowed = false;\n};\n","/* eslint max-len: 0 */\n\n// @flow\n\nimport * as charCodes from \"charcodes\";\nimport { keywords } from \"../tokenizer/types\";\n\nconst reservedWords = {\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\n\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport const isReservedWord = (word: string, inModule: boolean): boolean => {\n return (inModule && word === \"await\") || word === \"enum\";\n};\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n\nexport const keywordRelationalOperator = /^in(stanceof)?$/;\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 0x80.\n// Generated by `scripts/generate-identifier-regex.js`.\n\n/* prettier-ignore */\nlet 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\\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\\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-\\u170c\\u170e-\\u1711\\u1720-\\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-\\u1b4b\\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-\\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\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fef\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7bf\\ua7c2-\\ua7c6\\ua7f7-\\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-\\uab67\\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\";\n/* prettier-ignore */\nlet 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\\u08d3-\\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\\u0b56\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\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\\u0d82\\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-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\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-\\u1df9\\u1dfb-\\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\\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\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.js`.\n/* prettier-ignore */\nconst 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,157,310,10,21,11,7,153,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,477,28,11,0,9,21,155,22,13,52,76,44,33,24,27,35,30,0,12,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,0,33,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,230,43,117,63,32,0,161,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,35,56,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,270,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,754,9486,286,50,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,2357,44,11,6,17,0,370,43,1301,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,42710,42,4148,12,221,3,5761,15,7472,3104,541];\n/* prettier-ignore */\nconst 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,525,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,4,9,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,232,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,135,4,60,6,26,9,1014,0,2,54,8,3,19723,1,5319,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,419,13,1495,6,110,6,6,9,792487,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: $ReadOnlyArray<number>): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a current state character code and next character code is @\n\nexport function isIteratorStart(current: number, next: number): boolean {\n return current === charCodes.atSign && next === charCodes.atSign;\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n","// @flow\n\n/*:: declare var invariant; */\n\nimport type Parser from \"../parser\";\nimport { types as tt, type TokenType } from \"../tokenizer/types\";\nimport * as N from \"../types\";\nimport type { Options } from \"../options\";\nimport type { Pos, Position } from \"../util/location\";\nimport type State from \"../tokenizer/state\";\nimport { types as tc } from \"../tokenizer/context\";\nimport * as charCodes from \"charcodes\";\nimport { isIteratorStart } from \"../util/identifier\";\nimport {\n functionFlags,\n type BindingTypes,\n BIND_NONE,\n BIND_LEXICAL,\n BIND_VAR,\n BIND_FUNCTION,\n SCOPE_ARROW,\n SCOPE_OTHER,\n} from \"../util/scopeflags\";\nimport type { ExpressionErrors } from \"../parser/util\";\n\nconst reservedTypes = new Set([\n \"_\",\n \"any\",\n \"bool\",\n \"boolean\",\n \"empty\",\n \"extends\",\n \"false\",\n \"interface\",\n \"mixed\",\n \"null\",\n \"number\",\n \"static\",\n \"string\",\n \"true\",\n \"typeof\",\n \"void\",\n]);\n\nfunction isEsModuleType(bodyElement: N.Node): boolean {\n return (\n bodyElement.type === \"DeclareExportAllDeclaration\" ||\n (bodyElement.type === \"DeclareExportDeclaration\" &&\n (!bodyElement.declaration ||\n (bodyElement.declaration.type !== \"TypeAlias\" &&\n bodyElement.declaration.type !== \"InterfaceDeclaration\")))\n );\n}\n\nfunction hasTypeImportKind(node: N.Node): boolean {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n}\n\nfunction isMaybeDefaultImport(state: State): boolean {\n return (\n (state.type === tt.name || !!state.type.keyword) && state.value !== \"from\"\n );\n}\n\nconst exportSuggestions = {\n const: \"declare export var\",\n let: \"declare export var\",\n type: \"export type\",\n interface: \"export interface\",\n};\n\n// Like Array#filter, but returns a tuple [ acceptedElements, discardedElements ]\nfunction partition<T>(\n list: T[],\n test: (T, number, T[]) => ?boolean,\n): [T[], T[]] {\n const list1 = [];\n const list2 = [];\n for (let i = 0; i < list.length; i++) {\n (test(list[i], i, list) ? list1 : list2).push(list[i]);\n }\n return [list1, list2];\n}\n\nconst FLOW_PRAGMA_REGEX = /\\*?\\s*@((?:no)?flow)\\b/;\n\n// Flow enums types\ntype EnumExplicitType = null | \"boolean\" | \"number\" | \"string\" | \"symbol\";\ntype EnumContext = {|\n enumName: string,\n explicitType: EnumExplicitType,\n memberName: string,\n|};\ntype EnumMemberInit =\n | {| type: \"number\", pos: number, value: N.Node |}\n | {| type: \"string\", pos: number, value: N.Node |}\n | {| type: \"boolean\", pos: number, value: N.Node |}\n | {| type: \"invalid\", pos: number |}\n | {| type: \"none\", pos: number |};\n\nexport default (superClass: Class<Parser>): Class<Parser> =>\n class extends superClass {\n // The value of the @flow/@noflow pragma. Initially undefined, transitions\n // to \"@flow\" or \"@noflow\" if we see a pragma. Transitions to null if we are\n // past the initial comment.\n flowPragma: void | null | \"flow\" | \"noflow\";\n\n constructor(options: ?Options, input: string) {\n super(options, input);\n this.flowPragma = undefined;\n }\n\n shouldParseTypes(): boolean {\n return this.getPluginOption(\"flow\", \"all\") || this.flowPragma === \"flow\";\n }\n\n shouldParseEnums(): boolean {\n return !!this.getPluginOption(\"flow\", \"enums\");\n }\n\n finishToken(type: TokenType, val: any): void {\n if (\n type !== tt.string &&\n type !== tt.semi &&\n type !== tt.interpreterDirective\n ) {\n if (this.flowPragma === undefined) {\n this.flowPragma = null;\n }\n }\n return super.finishToken(type, val);\n }\n\n addComment(comment: N.Comment): void {\n if (this.flowPragma === undefined) {\n // Try to parse a flow pragma.\n const matches = FLOW_PRAGMA_REGEX.exec(comment.value);\n if (!matches) {\n // do nothing\n } else if (matches[1] === \"flow\") {\n this.flowPragma = \"flow\";\n } else if (matches[1] === \"noflow\") {\n this.flowPragma = \"noflow\";\n } else {\n throw new Error(\"Unexpected flow pragma\");\n }\n }\n return super.addComment(comment);\n }\n\n flowParseTypeInitialiser(tok?: TokenType): N.FlowType {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(tok || tt.colon);\n\n const type = this.flowParseType();\n this.state.inType = oldInType;\n return type;\n }\n\n flowParsePredicate(): N.FlowType {\n const node = this.startNode();\n const moduloLoc = this.state.startLoc;\n const moduloPos = this.state.start;\n this.expect(tt.modulo);\n const checksLoc = this.state.startLoc;\n this.expectContextual(\"checks\");\n // Force '%' and 'checks' to be adjacent\n if (\n moduloLoc.line !== checksLoc.line ||\n moduloLoc.column !== checksLoc.column - 1\n ) {\n this.raise(\n moduloPos,\n \"Spaces between ´%´ and ´checks´ are not allowed here.\",\n );\n }\n if (this.eat(tt.parenL)) {\n node.value = this.parseExpression();\n this.expect(tt.parenR);\n return this.finishNode(node, \"DeclaredPredicate\");\n } else {\n return this.finishNode(node, \"InferredPredicate\");\n }\n }\n\n flowParseTypeAndPredicateInitialiser(): [?N.FlowType, ?N.FlowPredicate] {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(tt.colon);\n let type = null;\n let predicate = null;\n if (this.match(tt.modulo)) {\n this.state.inType = oldInType;\n predicate = this.flowParsePredicate();\n } else {\n type = this.flowParseType();\n this.state.inType = oldInType;\n if (this.match(tt.modulo)) {\n predicate = this.flowParsePredicate();\n }\n }\n return [type, predicate];\n }\n\n flowParseDeclareClass(node: N.FlowDeclareClass): N.FlowDeclareClass {\n this.next();\n this.flowParseInterfaceish(node, /*isClass*/ true);\n return this.finishNode(node, \"DeclareClass\");\n }\n\n flowParseDeclareFunction(\n node: N.FlowDeclareFunction,\n ): N.FlowDeclareFunction {\n this.next();\n\n const id = (node.id = this.parseIdentifier());\n\n const typeNode = this.startNode();\n const typeContainer = this.startNode();\n\n if (this.isRelational(\"<\")) {\n typeNode.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n typeNode.typeParameters = null;\n }\n\n this.expect(tt.parenL);\n const tmp = this.flowParseFunctionTypeParams();\n typeNode.params = tmp.params;\n typeNode.rest = tmp.rest;\n this.expect(tt.parenR);\n\n [\n // $FlowFixMe (destructuring not supported yet)\n typeNode.returnType,\n // $FlowFixMe (destructuring not supported yet)\n node.predicate,\n ] = this.flowParseTypeAndPredicateInitialiser();\n\n typeContainer.typeAnnotation = this.finishNode(\n typeNode,\n \"FunctionTypeAnnotation\",\n );\n\n id.typeAnnotation = this.finishNode(typeContainer, \"TypeAnnotation\");\n\n this.resetEndLocation(id);\n this.semicolon();\n\n return this.finishNode(node, \"DeclareFunction\");\n }\n\n flowParseDeclare(\n node: N.FlowDeclare,\n insideModule?: boolean,\n ): N.FlowDeclare {\n if (this.match(tt._class)) {\n return this.flowParseDeclareClass(node);\n } else if (this.match(tt._function)) {\n return this.flowParseDeclareFunction(node);\n } else if (this.match(tt._var)) {\n return this.flowParseDeclareVariable(node);\n } else if (this.eatContextual(\"module\")) {\n if (this.match(tt.dot)) {\n return this.flowParseDeclareModuleExports(node);\n } else {\n if (insideModule) {\n this.raise(\n this.state.lastTokStart,\n \"`declare module` cannot be used inside another `declare module`\",\n );\n }\n return this.flowParseDeclareModule(node);\n }\n } else if (this.isContextual(\"type\")) {\n return this.flowParseDeclareTypeAlias(node);\n } else if (this.isContextual(\"opaque\")) {\n return this.flowParseDeclareOpaqueType(node);\n } else if (this.isContextual(\"interface\")) {\n return this.flowParseDeclareInterface(node);\n } else if (this.match(tt._export)) {\n return this.flowParseDeclareExportDeclaration(node, insideModule);\n } else {\n throw this.unexpected();\n }\n }\n\n flowParseDeclareVariable(\n node: N.FlowDeclareVariable,\n ): N.FlowDeclareVariable {\n this.next();\n node.id = this.flowParseTypeAnnotatableIdentifier(\n /*allowPrimitiveOverride*/ true,\n );\n this.scope.declareName(node.id.name, BIND_VAR, node.id.start);\n this.semicolon();\n return this.finishNode(node, \"DeclareVariable\");\n }\n\n flowParseDeclareModule(node: N.FlowDeclareModule): N.FlowDeclareModule {\n this.scope.enter(SCOPE_OTHER);\n\n if (this.match(tt.string)) {\n node.id = this.parseExprAtom();\n } else {\n node.id = this.parseIdentifier();\n }\n\n const bodyNode = (node.body = this.startNode());\n const body = (bodyNode.body = []);\n this.expect(tt.braceL);\n while (!this.match(tt.braceR)) {\n let bodyNode = this.startNode();\n\n if (this.match(tt._import)) {\n this.next();\n if (!this.isContextual(\"type\") && !this.match(tt._typeof)) {\n this.raise(\n this.state.lastTokStart,\n \"Imports within a `declare module` body must always be `import type` or `import typeof`\",\n );\n }\n this.parseImport(bodyNode);\n } else {\n this.expectContextual(\n \"declare\",\n \"Only declares and type imports are allowed inside declare module\",\n );\n\n bodyNode = this.flowParseDeclare(bodyNode, true);\n }\n\n body.push(bodyNode);\n }\n\n this.scope.exit();\n\n this.expect(tt.braceR);\n\n this.finishNode(bodyNode, \"BlockStatement\");\n\n let kind = null;\n let hasModuleExport = false;\n const errorMessage =\n \"Found both `declare module.exports` and `declare export` in the same module. \" +\n \"Modules can only have 1 since they are either an ES module or they are a CommonJS module\";\n body.forEach(bodyElement => {\n if (isEsModuleType(bodyElement)) {\n if (kind === \"CommonJS\") {\n this.raise(bodyElement.start, errorMessage);\n }\n kind = \"ES\";\n } else if (bodyElement.type === \"DeclareModuleExports\") {\n if (hasModuleExport) {\n this.raise(\n bodyElement.start,\n \"Duplicate `declare module.exports` statement\",\n );\n }\n if (kind === \"ES\") this.raise(bodyElement.start, errorMessage);\n kind = \"CommonJS\";\n hasModuleExport = true;\n }\n });\n\n node.kind = kind || \"CommonJS\";\n return this.finishNode(node, \"DeclareModule\");\n }\n\n flowParseDeclareExportDeclaration(\n node: N.FlowDeclareExportDeclaration,\n insideModule: ?boolean,\n ): N.FlowDeclareExportDeclaration {\n this.expect(tt._export);\n\n if (this.eat(tt._default)) {\n if (this.match(tt._function) || this.match(tt._class)) {\n // declare export default class ...\n // declare export default function ...\n node.declaration = this.flowParseDeclare(this.startNode());\n } else {\n // declare export default [type];\n node.declaration = this.flowParseType();\n this.semicolon();\n }\n node.default = true;\n\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else {\n if (\n this.match(tt._const) ||\n this.isLet() ||\n ((this.isContextual(\"type\") || this.isContextual(\"interface\")) &&\n !insideModule)\n ) {\n const label = this.state.value;\n const suggestion = exportSuggestions[label];\n this.unexpected(\n this.state.start,\n `\\`declare export ${label}\\` is not supported. Use \\`${suggestion}\\` instead`,\n );\n }\n\n if (\n this.match(tt._var) || // declare export var ...\n this.match(tt._function) || // declare export function ...\n this.match(tt._class) || // declare export class ...\n this.isContextual(\"opaque\") // declare export opaque ..\n ) {\n node.declaration = this.flowParseDeclare(this.startNode());\n node.default = false;\n\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else if (\n this.match(tt.star) || // declare export * from ''\n this.match(tt.braceL) || // declare export {} ...\n this.isContextual(\"interface\") || // declare export interface ...\n this.isContextual(\"type\") || // declare export type ...\n this.isContextual(\"opaque\") // declare export opaque type ...\n ) {\n node = this.parseExport(node);\n if (node.type === \"ExportNamedDeclaration\") {\n // flow does not support the ExportNamedDeclaration\n // $FlowIgnore\n node.type = \"ExportDeclaration\";\n // $FlowFixMe\n node.default = false;\n delete node.exportKind;\n }\n\n // $FlowIgnore\n node.type = \"Declare\" + node.type;\n\n return node;\n }\n }\n\n throw this.unexpected();\n }\n\n flowParseDeclareModuleExports(\n node: N.FlowDeclareModuleExports,\n ): N.FlowDeclareModuleExports {\n this.next();\n this.expectContextual(\"exports\");\n node.typeAnnotation = this.flowParseTypeAnnotation();\n this.semicolon();\n\n return this.finishNode(node, \"DeclareModuleExports\");\n }\n\n flowParseDeclareTypeAlias(\n node: N.FlowDeclareTypeAlias,\n ): N.FlowDeclareTypeAlias {\n this.next();\n this.flowParseTypeAlias(node);\n // Don't do finishNode as we don't want to process comments twice\n node.type = \"DeclareTypeAlias\";\n return node;\n }\n\n flowParseDeclareOpaqueType(\n node: N.FlowDeclareOpaqueType,\n ): N.FlowDeclareOpaqueType {\n this.next();\n this.flowParseOpaqueType(node, true);\n // Don't do finishNode as we don't want to process comments twice\n node.type = \"DeclareOpaqueType\";\n return node;\n }\n\n flowParseDeclareInterface(\n node: N.FlowDeclareInterface,\n ): N.FlowDeclareInterface {\n this.next();\n this.flowParseInterfaceish(node);\n return this.finishNode(node, \"DeclareInterface\");\n }\n\n // Interfaces\n\n flowParseInterfaceish(\n node: N.FlowDeclare,\n isClass?: boolean = false,\n ): void {\n node.id = this.flowParseRestrictedIdentifier(\n /* liberal */ !isClass,\n /* declaration */ true,\n );\n\n this.scope.declareName(\n node.id.name,\n isClass ? BIND_FUNCTION : BIND_LEXICAL,\n node.id.start,\n );\n\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.extends = [];\n node.implements = [];\n node.mixins = [];\n\n if (this.eat(tt._extends)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (!isClass && this.eat(tt.comma));\n }\n\n if (this.isContextual(\"mixins\")) {\n this.next();\n do {\n node.mixins.push(this.flowParseInterfaceExtends());\n } while (this.eat(tt.comma));\n }\n\n if (this.isContextual(\"implements\")) {\n this.next();\n do {\n node.implements.push(this.flowParseInterfaceExtends());\n } while (this.eat(tt.comma));\n }\n\n node.body = this.flowParseObjectType({\n allowStatic: isClass,\n allowExact: false,\n allowSpread: false,\n allowProto: isClass,\n allowInexact: false,\n });\n }\n\n flowParseInterfaceExtends(): N.FlowInterfaceExtends {\n const node = this.startNode();\n\n node.id = this.flowParseQualifiedTypeIdentifier();\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n\n return this.finishNode(node, \"InterfaceExtends\");\n }\n\n flowParseInterface(node: N.FlowInterface): N.FlowInterface {\n this.flowParseInterfaceish(node);\n return this.finishNode(node, \"InterfaceDeclaration\");\n }\n\n checkNotUnderscore(word: string) {\n if (word === \"_\") {\n this.raise(\n this.state.start,\n \"`_` is only allowed as a type argument to call or new\",\n );\n }\n }\n\n checkReservedType(word: string, startLoc: number, declaration?: boolean) {\n if (!reservedTypes.has(word)) return;\n\n if (declaration) {\n this.raise(startLoc, `Cannot overwrite reserved type ${word}`);\n return;\n }\n\n this.raise(startLoc, `Unexpected reserved type ${word}`);\n }\n\n flowParseRestrictedIdentifier(\n liberal?: boolean,\n declaration?: boolean,\n ): N.Identifier {\n this.checkReservedType(this.state.value, this.state.start, declaration);\n return this.parseIdentifier(liberal);\n }\n\n // Type aliases\n\n flowParseTypeAlias(node: N.FlowTypeAlias): N.FlowTypeAlias {\n node.id = this.flowParseRestrictedIdentifier(\n /* liberal */ false,\n /* declaration */ true,\n );\n this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.start);\n\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.right = this.flowParseTypeInitialiser(tt.eq);\n this.semicolon();\n\n return this.finishNode(node, \"TypeAlias\");\n }\n\n flowParseOpaqueType(\n node: N.FlowOpaqueType,\n declare: boolean,\n ): N.FlowOpaqueType {\n this.expectContextual(\"type\");\n node.id = this.flowParseRestrictedIdentifier(\n /* liberal */ true,\n /* declaration */ true,\n );\n this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.start);\n\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n // Parse the supertype\n node.supertype = null;\n if (this.match(tt.colon)) {\n node.supertype = this.flowParseTypeInitialiser(tt.colon);\n }\n\n node.impltype = null;\n if (!declare) {\n node.impltype = this.flowParseTypeInitialiser(tt.eq);\n }\n this.semicolon();\n\n return this.finishNode(node, \"OpaqueType\");\n }\n\n // Type annotations\n\n flowParseTypeParameter(requireDefault?: boolean = false): N.TypeParameter {\n const nodeStart = this.state.start;\n\n const node = this.startNode();\n\n const variance = this.flowParseVariance();\n\n const ident = this.flowParseTypeAnnotatableIdentifier();\n node.name = ident.name;\n node.variance = variance;\n node.bound = ident.typeAnnotation;\n\n if (this.match(tt.eq)) {\n this.eat(tt.eq);\n node.default = this.flowParseType();\n } else {\n if (requireDefault) {\n this.raise(\n nodeStart,\n // eslint-disable-next-line max-len\n \"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.\",\n );\n }\n }\n\n return this.finishNode(node, \"TypeParameter\");\n }\n\n flowParseTypeParameterDeclaration(): N.TypeParameterDeclaration {\n const oldInType = this.state.inType;\n const node = this.startNode();\n node.params = [];\n\n this.state.inType = true;\n\n // istanbul ignore else: this condition is already checked at all call sites\n if (this.isRelational(\"<\") || this.match(tt.jsxTagStart)) {\n this.next();\n } else {\n this.unexpected();\n }\n\n let defaultRequired = false;\n\n do {\n const typeParameter = this.flowParseTypeParameter(defaultRequired);\n\n node.params.push(typeParameter);\n\n if (typeParameter.default) {\n defaultRequired = true;\n }\n\n if (!this.isRelational(\">\")) {\n this.expect(tt.comma);\n }\n } while (!this.isRelational(\">\"));\n this.expectRelational(\">\");\n\n this.state.inType = oldInType;\n\n return this.finishNode(node, \"TypeParameterDeclaration\");\n }\n\n flowParseTypeParameterInstantiation(): N.TypeParameterInstantiation {\n const node = this.startNode();\n const oldInType = this.state.inType;\n node.params = [];\n\n this.state.inType = true;\n\n this.expectRelational(\"<\");\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = false;\n while (!this.isRelational(\">\")) {\n node.params.push(this.flowParseType());\n if (!this.isRelational(\">\")) {\n this.expect(tt.comma);\n }\n }\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n this.expectRelational(\">\");\n\n this.state.inType = oldInType;\n\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n\n flowParseTypeParameterInstantiationCallOrNew(): N.TypeParameterInstantiation {\n const node = this.startNode();\n const oldInType = this.state.inType;\n node.params = [];\n\n this.state.inType = true;\n\n this.expectRelational(\"<\");\n while (!this.isRelational(\">\")) {\n node.params.push(this.flowParseTypeOrImplicitInstantiation());\n if (!this.isRelational(\">\")) {\n this.expect(tt.comma);\n }\n }\n this.expectRelational(\">\");\n\n this.state.inType = oldInType;\n\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n\n flowParseInterfaceType(): N.FlowInterfaceType {\n const node = this.startNode();\n this.expectContextual(\"interface\");\n\n node.extends = [];\n if (this.eat(tt._extends)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (this.eat(tt.comma));\n }\n\n node.body = this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: false,\n allowProto: false,\n allowInexact: false,\n });\n\n return this.finishNode(node, \"InterfaceTypeAnnotation\");\n }\n\n flowParseObjectPropertyKey(): N.Expression {\n return this.match(tt.num) || this.match(tt.string)\n ? this.parseExprAtom()\n : this.parseIdentifier(true);\n }\n\n flowParseObjectTypeIndexer(\n node: N.FlowObjectTypeIndexer,\n isStatic: boolean,\n variance: ?N.FlowVariance,\n ): N.FlowObjectTypeIndexer {\n node.static = isStatic;\n\n // Note: bracketL has already been consumed\n if (this.lookahead().type === tt.colon) {\n node.id = this.flowParseObjectPropertyKey();\n node.key = this.flowParseTypeInitialiser();\n } else {\n node.id = null;\n node.key = this.flowParseType();\n }\n this.expect(tt.bracketR);\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n\n return this.finishNode(node, \"ObjectTypeIndexer\");\n }\n\n flowParseObjectTypeInternalSlot(\n node: N.FlowObjectTypeInternalSlot,\n isStatic: boolean,\n ): N.FlowObjectTypeInternalSlot {\n node.static = isStatic;\n // Note: both bracketL have already been consumed\n node.id = this.flowParseObjectPropertyKey();\n this.expect(tt.bracketR);\n this.expect(tt.bracketR);\n if (this.isRelational(\"<\") || this.match(tt.parenL)) {\n node.method = true;\n node.optional = false;\n node.value = this.flowParseObjectTypeMethodish(\n this.startNodeAt(node.start, node.loc.start),\n );\n } else {\n node.method = false;\n if (this.eat(tt.question)) {\n node.optional = true;\n }\n node.value = this.flowParseTypeInitialiser();\n }\n return this.finishNode(node, \"ObjectTypeInternalSlot\");\n }\n\n flowParseObjectTypeMethodish(\n node: N.FlowFunctionTypeAnnotation,\n ): N.FlowFunctionTypeAnnotation {\n node.params = [];\n node.rest = null;\n node.typeParameters = null;\n\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n this.expect(tt.parenL);\n while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n node.params.push(this.flowParseFunctionTypeParam());\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n\n if (this.eat(tt.ellipsis)) {\n node.rest = this.flowParseFunctionTypeParam();\n }\n this.expect(tt.parenR);\n node.returnType = this.flowParseTypeInitialiser();\n\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n\n flowParseObjectTypeCallProperty(\n node: N.FlowObjectTypeCallProperty,\n isStatic: boolean,\n ): N.FlowObjectTypeCallProperty {\n const valueNode = this.startNode();\n node.static = isStatic;\n node.value = this.flowParseObjectTypeMethodish(valueNode);\n return this.finishNode(node, \"ObjectTypeCallProperty\");\n }\n\n flowParseObjectType({\n allowStatic,\n allowExact,\n allowSpread,\n allowProto,\n allowInexact,\n }: {\n allowStatic: boolean,\n allowExact: boolean,\n allowSpread: boolean,\n allowProto: boolean,\n allowInexact: boolean,\n }): N.FlowObjectTypeAnnotation {\n const oldInType = this.state.inType;\n this.state.inType = true;\n\n const nodeStart = this.startNode();\n\n nodeStart.callProperties = [];\n nodeStart.properties = [];\n nodeStart.indexers = [];\n nodeStart.internalSlots = [];\n\n let endDelim;\n let exact;\n let inexact = false;\n if (allowExact && this.match(tt.braceBarL)) {\n this.expect(tt.braceBarL);\n endDelim = tt.braceBarR;\n exact = true;\n } else {\n this.expect(tt.braceL);\n endDelim = tt.braceR;\n exact = false;\n }\n\n nodeStart.exact = exact;\n\n while (!this.match(endDelim)) {\n let isStatic = false;\n let protoStart: ?number = null;\n let inexactStart: ?number = null;\n const node = this.startNode();\n\n if (allowProto && this.isContextual(\"proto\")) {\n const lookahead = this.lookahead();\n\n if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n this.next();\n protoStart = this.state.start;\n allowStatic = false;\n }\n }\n\n if (allowStatic && this.isContextual(\"static\")) {\n const lookahead = this.lookahead();\n\n // static is a valid identifier name\n if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n this.next();\n isStatic = true;\n }\n }\n\n const variance = this.flowParseVariance();\n\n if (this.eat(tt.bracketL)) {\n if (protoStart != null) {\n this.unexpected(protoStart);\n }\n if (this.eat(tt.bracketL)) {\n if (variance) {\n this.unexpected(variance.start);\n }\n nodeStart.internalSlots.push(\n this.flowParseObjectTypeInternalSlot(node, isStatic),\n );\n } else {\n nodeStart.indexers.push(\n this.flowParseObjectTypeIndexer(node, isStatic, variance),\n );\n }\n } else if (this.match(tt.parenL) || this.isRelational(\"<\")) {\n if (protoStart != null) {\n this.unexpected(protoStart);\n }\n if (variance) {\n this.unexpected(variance.start);\n }\n nodeStart.callProperties.push(\n this.flowParseObjectTypeCallProperty(node, isStatic),\n );\n } else {\n let kind = \"init\";\n\n if (this.isContextual(\"get\") || this.isContextual(\"set\")) {\n const lookahead = this.lookahead();\n if (\n lookahead.type === tt.name ||\n lookahead.type === tt.string ||\n lookahead.type === tt.num\n ) {\n kind = this.state.value;\n this.next();\n }\n }\n\n const propOrInexact = this.flowParseObjectTypeProperty(\n node,\n isStatic,\n protoStart,\n variance,\n kind,\n allowSpread,\n allowInexact ?? !exact,\n );\n\n if (propOrInexact === null) {\n inexact = true;\n inexactStart = this.state.lastTokStart;\n } else {\n nodeStart.properties.push(propOrInexact);\n }\n }\n\n this.flowObjectTypeSemicolon();\n\n if (\n inexactStart &&\n !this.match(tt.braceR) &&\n !this.match(tt.braceBarR)\n ) {\n this.raise(\n inexactStart,\n \"Explicit inexact syntax must appear at the end of an inexact object\",\n );\n }\n }\n\n this.expect(endDelim);\n\n /* The inexact flag should only be added on ObjectTypeAnnotations that\n * are not the body of an interface, declare interface, or declare class.\n * Since spreads are only allowed in objec types, checking that is\n * sufficient here.\n */\n if (allowSpread) {\n nodeStart.inexact = inexact;\n }\n\n const out = this.finishNode(nodeStart, \"ObjectTypeAnnotation\");\n\n this.state.inType = oldInType;\n\n return out;\n }\n\n flowParseObjectTypeProperty(\n node: N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty,\n isStatic: boolean,\n protoStart: ?number,\n variance: ?N.FlowVariance,\n kind: string,\n allowSpread: boolean,\n allowInexact: boolean,\n ): (N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty) | null {\n if (this.eat(tt.ellipsis)) {\n const isInexactToken =\n this.match(tt.comma) ||\n this.match(tt.semi) ||\n this.match(tt.braceR) ||\n this.match(tt.braceBarR);\n\n if (isInexactToken) {\n if (!allowSpread) {\n this.raise(\n this.state.lastTokStart,\n \"Explicit inexact syntax cannot appear in class or interface definitions\",\n );\n } else if (!allowInexact) {\n this.raise(\n this.state.lastTokStart,\n \"Explicit inexact syntax cannot appear inside an explicit exact object type\",\n );\n }\n if (variance) {\n this.raise(\n variance.start,\n \"Explicit inexact syntax cannot have variance\",\n );\n }\n\n return null;\n }\n\n if (!allowSpread) {\n this.raise(\n this.state.lastTokStart,\n \"Spread operator cannot appear in class or interface definitions\",\n );\n }\n if (protoStart != null) {\n this.unexpected(protoStart);\n }\n if (variance) {\n this.raise(variance.start, \"Spread properties cannot have variance\");\n }\n\n node.argument = this.flowParseType();\n return this.finishNode(node, \"ObjectTypeSpreadProperty\");\n } else {\n node.key = this.flowParseObjectPropertyKey();\n node.static = isStatic;\n node.proto = protoStart != null;\n node.kind = kind;\n\n let optional = false;\n if (this.isRelational(\"<\") || this.match(tt.parenL)) {\n // This is a method property\n node.method = true;\n\n if (protoStart != null) {\n this.unexpected(protoStart);\n }\n if (variance) {\n this.unexpected(variance.start);\n }\n\n node.value = this.flowParseObjectTypeMethodish(\n this.startNodeAt(node.start, node.loc.start),\n );\n if (kind === \"get\" || kind === \"set\") {\n this.flowCheckGetterSetterParams(node);\n }\n } else {\n if (kind !== \"init\") this.unexpected();\n\n node.method = false;\n\n if (this.eat(tt.question)) {\n optional = true;\n }\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n }\n\n node.optional = optional;\n\n return this.finishNode(node, \"ObjectTypeProperty\");\n }\n }\n\n // This is similar to checkGetterSetterParams, but as\n // @babel/parser uses non estree properties we cannot reuse it here\n flowCheckGetterSetterParams(\n property: N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty,\n ): void {\n const paramCount = property.kind === \"get\" ? 0 : 1;\n const start = property.start;\n const length =\n property.value.params.length + (property.value.rest ? 1 : 0);\n if (length !== paramCount) {\n if (property.kind === \"get\") {\n this.raise(start, \"getter must not have any formal parameters\");\n } else {\n this.raise(start, \"setter must have exactly one formal parameter\");\n }\n }\n\n if (property.kind === \"set\" && property.value.rest) {\n this.raise(\n start,\n \"setter function argument must not be a rest parameter\",\n );\n }\n }\n\n flowObjectTypeSemicolon(): void {\n if (\n !this.eat(tt.semi) &&\n !this.eat(tt.comma) &&\n !this.match(tt.braceR) &&\n !this.match(tt.braceBarR)\n ) {\n this.unexpected();\n }\n }\n\n flowParseQualifiedTypeIdentifier(\n startPos?: number,\n startLoc?: Position,\n id?: N.Identifier,\n ): N.FlowQualifiedTypeIdentifier {\n startPos = startPos || this.state.start;\n startLoc = startLoc || this.state.startLoc;\n let node = id || this.flowParseRestrictedIdentifier(true);\n\n while (this.eat(tt.dot)) {\n const node2 = this.startNodeAt(startPos, startLoc);\n node2.qualification = node;\n node2.id = this.flowParseRestrictedIdentifier(true);\n node = this.finishNode(node2, \"QualifiedTypeIdentifier\");\n }\n\n return node;\n }\n\n flowParseGenericType(\n startPos: number,\n startLoc: Position,\n id: N.Identifier,\n ): N.FlowGenericTypeAnnotation {\n const node = this.startNodeAt(startPos, startLoc);\n\n node.typeParameters = null;\n node.id = this.flowParseQualifiedTypeIdentifier(startPos, startLoc, id);\n\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n }\n\n return this.finishNode(node, \"GenericTypeAnnotation\");\n }\n\n flowParseTypeofType(): N.FlowTypeofTypeAnnotation {\n const node = this.startNode();\n this.expect(tt._typeof);\n node.argument = this.flowParsePrimaryType();\n return this.finishNode(node, \"TypeofTypeAnnotation\");\n }\n\n flowParseTupleType(): N.FlowTupleTypeAnnotation {\n const node = this.startNode();\n node.types = [];\n this.expect(tt.bracketL);\n // We allow trailing commas\n while (this.state.pos < this.length && !this.match(tt.bracketR)) {\n node.types.push(this.flowParseType());\n if (this.match(tt.bracketR)) break;\n this.expect(tt.comma);\n }\n this.expect(tt.bracketR);\n return this.finishNode(node, \"TupleTypeAnnotation\");\n }\n\n flowParseFunctionTypeParam(): N.FlowFunctionTypeParam {\n let name = null;\n let optional = false;\n let typeAnnotation = null;\n const node = this.startNode();\n const lh = this.lookahead();\n if (lh.type === tt.colon || lh.type === tt.question) {\n name = this.parseIdentifier();\n if (this.eat(tt.question)) {\n optional = true;\n }\n typeAnnotation = this.flowParseTypeInitialiser();\n } else {\n typeAnnotation = this.flowParseType();\n }\n node.name = name;\n node.optional = optional;\n node.typeAnnotation = typeAnnotation;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n\n reinterpretTypeAsFunctionTypeParam(\n type: N.FlowType,\n ): N.FlowFunctionTypeParam {\n const node = this.startNodeAt(type.start, type.loc.start);\n node.name = null;\n node.optional = false;\n node.typeAnnotation = type;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n\n flowParseFunctionTypeParams(\n params: N.FlowFunctionTypeParam[] = [],\n ): { params: N.FlowFunctionTypeParam[], rest: ?N.FlowFunctionTypeParam } {\n let rest: ?N.FlowFunctionTypeParam = null;\n while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n params.push(this.flowParseFunctionTypeParam());\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n if (this.eat(tt.ellipsis)) {\n rest = this.flowParseFunctionTypeParam();\n }\n return { params, rest };\n }\n\n flowIdentToTypeAnnotation(\n startPos: number,\n startLoc: Position,\n node: N.FlowTypeAnnotation,\n id: N.Identifier,\n ): N.FlowTypeAnnotation {\n switch (id.name) {\n case \"any\":\n return this.finishNode(node, \"AnyTypeAnnotation\");\n\n case \"bool\":\n case \"boolean\":\n return this.finishNode(node, \"BooleanTypeAnnotation\");\n\n case \"mixed\":\n return this.finishNode(node, \"MixedTypeAnnotation\");\n\n case \"empty\":\n return this.finishNode(node, \"EmptyTypeAnnotation\");\n\n case \"number\":\n return this.finishNode(node, \"NumberTypeAnnotation\");\n\n case \"string\":\n return this.finishNode(node, \"StringTypeAnnotation\");\n\n default:\n this.checkNotUnderscore(id.name);\n return this.flowParseGenericType(startPos, startLoc, id);\n }\n }\n\n // The parsing of types roughly parallels the parsing of expressions, and\n // primary types are kind of like primary expressions...they're the\n // primitives with which other types are constructed.\n flowParsePrimaryType(): N.FlowTypeAnnotation {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const node = this.startNode();\n let tmp;\n let type;\n let isGroupedType = false;\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n\n switch (this.state.type) {\n case tt.name:\n if (this.isContextual(\"interface\")) {\n return this.flowParseInterfaceType();\n }\n\n return this.flowIdentToTypeAnnotation(\n startPos,\n startLoc,\n node,\n this.parseIdentifier(),\n );\n\n case tt.braceL:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: true,\n allowProto: false,\n allowInexact: true,\n });\n\n case tt.braceBarL:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: true,\n allowSpread: true,\n allowProto: false,\n allowInexact: false,\n });\n\n case tt.bracketL:\n this.state.noAnonFunctionType = false;\n type = this.flowParseTupleType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n return type;\n\n case tt.relational:\n if (this.state.value === \"<\") {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n this.expect(tt.parenL);\n tmp = this.flowParseFunctionTypeParams();\n node.params = tmp.params;\n node.rest = tmp.rest;\n this.expect(tt.parenR);\n\n this.expect(tt.arrow);\n\n node.returnType = this.flowParseType();\n\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n break;\n\n case tt.parenL:\n this.next();\n\n // Check to see if this is actually a grouped type\n if (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n if (this.match(tt.name)) {\n const token = this.lookahead().type;\n isGroupedType = token !== tt.question && token !== tt.colon;\n } else {\n isGroupedType = true;\n }\n }\n\n if (isGroupedType) {\n this.state.noAnonFunctionType = false;\n type = this.flowParseType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n // A `,` or a `) =>` means this is an anonymous function type\n if (\n this.state.noAnonFunctionType ||\n !(\n this.match(tt.comma) ||\n (this.match(tt.parenR) && this.lookahead().type === tt.arrow)\n )\n ) {\n this.expect(tt.parenR);\n return type;\n } else {\n // Eat a comma if there is one\n this.eat(tt.comma);\n }\n }\n\n if (type) {\n tmp = this.flowParseFunctionTypeParams([\n this.reinterpretTypeAsFunctionTypeParam(type),\n ]);\n } else {\n tmp = this.flowParseFunctionTypeParams();\n }\n\n node.params = tmp.params;\n node.rest = tmp.rest;\n\n this.expect(tt.parenR);\n\n this.expect(tt.arrow);\n\n node.returnType = this.flowParseType();\n\n node.typeParameters = null;\n\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n\n case tt.string:\n return this.parseLiteral(\n this.state.value,\n \"StringLiteralTypeAnnotation\",\n );\n\n case tt._true:\n case tt._false:\n node.value = this.match(tt._true);\n this.next();\n return this.finishNode(node, \"BooleanLiteralTypeAnnotation\");\n\n case tt.plusMin:\n if (this.state.value === \"-\") {\n this.next();\n if (this.match(tt.num)) {\n return this.parseLiteral(\n -this.state.value,\n \"NumberLiteralTypeAnnotation\",\n node.start,\n node.loc.start,\n );\n }\n\n if (this.match(tt.bigint)) {\n return this.parseLiteral(\n -this.state.value,\n \"BigIntLiteralTypeAnnotation\",\n node.start,\n node.loc.start,\n );\n }\n\n throw this.raise(\n this.state.start,\n `Unexpected token, expected \"number\" or \"bigint\"`,\n );\n }\n\n this.unexpected();\n case tt.num:\n return this.parseLiteral(\n this.state.value,\n \"NumberLiteralTypeAnnotation\",\n );\n\n case tt.bigint:\n return this.parseLiteral(\n this.state.value,\n \"BigIntLiteralTypeAnnotation\",\n );\n\n case tt._void:\n this.next();\n return this.finishNode(node, \"VoidTypeAnnotation\");\n\n case tt._null:\n this.next();\n return this.finishNode(node, \"NullLiteralTypeAnnotation\");\n\n case tt._this:\n this.next();\n return this.finishNode(node, \"ThisTypeAnnotation\");\n\n case tt.star:\n this.next();\n return this.finishNode(node, \"ExistsTypeAnnotation\");\n\n default:\n if (this.state.type.keyword === \"typeof\") {\n return this.flowParseTypeofType();\n } else if (this.state.type.keyword) {\n const label = this.state.type.label;\n this.next();\n return super.createIdentifier(node, label);\n }\n }\n\n throw this.unexpected();\n }\n\n flowParsePostfixType(): N.FlowTypeAnnotation {\n const startPos = this.state.start,\n startLoc = this.state.startLoc;\n let type = this.flowParsePrimaryType();\n while (this.match(tt.bracketL) && !this.canInsertSemicolon()) {\n const node = this.startNodeAt(startPos, startLoc);\n node.elementType = type;\n this.expect(tt.bracketL);\n this.expect(tt.bracketR);\n type = this.finishNode(node, \"ArrayTypeAnnotation\");\n }\n return type;\n }\n\n flowParsePrefixType(): N.FlowTypeAnnotation {\n const node = this.startNode();\n if (this.eat(tt.question)) {\n node.typeAnnotation = this.flowParsePrefixType();\n return this.finishNode(node, \"NullableTypeAnnotation\");\n } else {\n return this.flowParsePostfixType();\n }\n }\n\n flowParseAnonFunctionWithoutParens(): N.FlowTypeAnnotation {\n const param = this.flowParsePrefixType();\n if (!this.state.noAnonFunctionType && this.eat(tt.arrow)) {\n // TODO: This should be a type error. Passing in a SourceLocation, and it expects a Position.\n const node = this.startNodeAt(param.start, param.loc.start);\n node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];\n node.rest = null;\n node.returnType = this.flowParseType();\n node.typeParameters = null;\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n return param;\n }\n\n flowParseIntersectionType(): N.FlowTypeAnnotation {\n const node = this.startNode();\n this.eat(tt.bitwiseAND);\n const type = this.flowParseAnonFunctionWithoutParens();\n node.types = [type];\n while (this.eat(tt.bitwiseAND)) {\n node.types.push(this.flowParseAnonFunctionWithoutParens());\n }\n return node.types.length === 1\n ? type\n : this.finishNode(node, \"IntersectionTypeAnnotation\");\n }\n\n flowParseUnionType(): N.FlowTypeAnnotation {\n const node = this.startNode();\n this.eat(tt.bitwiseOR);\n const type = this.flowParseIntersectionType();\n node.types = [type];\n while (this.eat(tt.bitwiseOR)) {\n node.types.push(this.flowParseIntersectionType());\n }\n return node.types.length === 1\n ? type\n : this.finishNode(node, \"UnionTypeAnnotation\");\n }\n\n flowParseType(): N.FlowTypeAnnotation {\n const oldInType = this.state.inType;\n this.state.inType = true;\n const type = this.flowParseUnionType();\n this.state.inType = oldInType;\n // Ensure that a brace after a function generic type annotation is a\n // statement, except in arrow functions (noAnonFunctionType)\n this.state.exprAllowed =\n this.state.exprAllowed || this.state.noAnonFunctionType;\n return type;\n }\n\n flowParseTypeOrImplicitInstantiation(): N.FlowTypeAnnotation {\n if (this.state.type === tt.name && this.state.value === \"_\") {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const node = this.parseIdentifier();\n return this.flowParseGenericType(startPos, startLoc, node);\n } else {\n return this.flowParseType();\n }\n }\n\n flowParseTypeAnnotation(): N.FlowTypeAnnotation {\n const node = this.startNode();\n node.typeAnnotation = this.flowParseTypeInitialiser();\n return this.finishNode(node, \"TypeAnnotation\");\n }\n\n flowParseTypeAnnotatableIdentifier(\n allowPrimitiveOverride?: boolean,\n ): N.Identifier {\n const ident = allowPrimitiveOverride\n ? this.parseIdentifier()\n : this.flowParseRestrictedIdentifier();\n if (this.match(tt.colon)) {\n ident.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(ident);\n }\n return ident;\n }\n\n typeCastToParameter(node: N.Node): N.Node {\n node.expression.typeAnnotation = node.typeAnnotation;\n\n this.resetEndLocation(\n node.expression,\n node.typeAnnotation.end,\n node.typeAnnotation.loc.end,\n );\n\n return node.expression;\n }\n\n flowParseVariance(): ?N.FlowVariance {\n let variance = null;\n if (this.match(tt.plusMin)) {\n variance = this.startNode();\n if (this.state.value === \"+\") {\n variance.kind = \"plus\";\n } else {\n variance.kind = \"minus\";\n }\n this.next();\n this.finishNode(variance, \"Variance\");\n }\n return variance;\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n parseFunctionBody(\n node: N.Function,\n allowExpressionBody: ?boolean,\n isMethod?: boolean = false,\n ): void {\n if (allowExpressionBody) {\n return this.forwardNoArrowParamsConversionAt(node, () =>\n super.parseFunctionBody(node, true, isMethod),\n );\n }\n\n return super.parseFunctionBody(node, false, isMethod);\n }\n\n parseFunctionBodyAndFinish(\n node: N.BodilessFunctionOrMethodBase,\n type: string,\n isMethod?: boolean = false,\n ): void {\n if (this.match(tt.colon)) {\n const typeNode = this.startNode();\n\n [\n // $FlowFixMe (destructuring not supported yet)\n typeNode.typeAnnotation,\n // $FlowFixMe (destructuring not supported yet)\n node.predicate,\n ] = this.flowParseTypeAndPredicateInitialiser();\n\n node.returnType = typeNode.typeAnnotation\n ? this.finishNode(typeNode, \"TypeAnnotation\")\n : null;\n }\n\n super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n\n // interfaces and enums\n parseStatement(context: ?string, topLevel?: boolean): N.Statement {\n // strict mode handling of `interface` since it's a reserved word\n if (\n this.state.strict &&\n this.match(tt.name) &&\n this.state.value === \"interface\"\n ) {\n const node = this.startNode();\n this.next();\n return this.flowParseInterface(node);\n } else if (this.shouldParseEnums() && this.isContextual(\"enum\")) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n } else {\n const stmt = super.parseStatement(context, topLevel);\n // We will parse a flow pragma in any comment before the first statement.\n if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {\n this.flowPragma = null;\n }\n return stmt;\n }\n }\n\n // declares, interfaces and type aliases\n parseExpressionStatement(\n node: N.ExpressionStatement,\n expr: N.Expression,\n ): N.ExpressionStatement {\n if (expr.type === \"Identifier\") {\n if (expr.name === \"declare\") {\n if (\n this.match(tt._class) ||\n this.match(tt.name) ||\n this.match(tt._function) ||\n this.match(tt._var) ||\n this.match(tt._export)\n ) {\n return this.flowParseDeclare(node);\n }\n } else if (this.match(tt.name)) {\n if (expr.name === \"interface\") {\n return this.flowParseInterface(node);\n } else if (expr.name === \"type\") {\n return this.flowParseTypeAlias(node);\n } else if (expr.name === \"opaque\") {\n return this.flowParseOpaqueType(node, false);\n }\n }\n }\n\n return super.parseExpressionStatement(node, expr);\n }\n\n // export type\n shouldParseExportDeclaration(): boolean {\n return (\n this.isContextual(\"type\") ||\n this.isContextual(\"interface\") ||\n this.isContextual(\"opaque\") ||\n (this.shouldParseEnums() && this.isContextual(\"enum\")) ||\n super.shouldParseExportDeclaration()\n );\n }\n\n isExportDefaultSpecifier(): boolean {\n if (\n this.match(tt.name) &&\n (this.state.value === \"type\" ||\n this.state.value === \"interface\" ||\n this.state.value === \"opaque\" ||\n (this.shouldParseEnums() && this.state.value === \"enum\"))\n ) {\n return false;\n }\n\n return super.isExportDefaultSpecifier();\n }\n\n parseExportDefaultExpression(): N.Expression | N.Declaration {\n if (this.shouldParseEnums() && this.isContextual(\"enum\")) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n return super.parseExportDefaultExpression();\n }\n\n parseConditional(\n expr: N.Expression,\n noIn: ?boolean,\n startPos: number,\n startLoc: Position,\n refNeedsArrowPos?: ?Pos,\n ): N.Expression {\n if (!this.match(tt.question)) return expr;\n\n // only use the expensive \"tryParse\" method if there is a question mark\n // and if we come from inside parens\n if (refNeedsArrowPos) {\n const result = this.tryParse(() =>\n super.parseConditional(expr, noIn, startPos, startLoc),\n );\n\n if (!result.node) {\n // $FlowIgnore\n refNeedsArrowPos.start = result.error.pos || this.state.start;\n return expr;\n }\n\n if (result.error) this.state = result.failState;\n return result.node;\n }\n\n this.expect(tt.question);\n const state = this.state.clone();\n const originalNoArrowAt = this.state.noArrowAt;\n const node = this.startNodeAt(startPos, startLoc);\n let { consequent, failed } = this.tryParseConditionalConsequent();\n let [valid, invalid] = this.getArrowLikeExpressions(consequent);\n\n if (failed || invalid.length > 0) {\n const noArrowAt = [...originalNoArrowAt];\n\n if (invalid.length > 0) {\n this.state = state;\n this.state.noArrowAt = noArrowAt;\n\n for (let i = 0; i < invalid.length; i++) {\n noArrowAt.push(invalid[i].start);\n }\n\n ({ consequent, failed } = this.tryParseConditionalConsequent());\n [valid, invalid] = this.getArrowLikeExpressions(consequent);\n }\n\n if (failed && valid.length > 1) {\n // if there are two or more possible correct ways of parsing, throw an\n // error.\n // e.g. Source: a ? (b): c => (d): e => f\n // Result 1: a ? b : (c => ((d): e => f))\n // Result 2: a ? ((b): c => d) : (e => f)\n this.raise(\n state.start,\n \"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.\",\n );\n }\n\n if (failed && valid.length === 1) {\n this.state = state;\n this.state.noArrowAt = noArrowAt.concat(valid[0].start);\n ({ consequent, failed } = this.tryParseConditionalConsequent());\n }\n }\n\n this.getArrowLikeExpressions(consequent, true);\n\n this.state.noArrowAt = originalNoArrowAt;\n this.expect(tt.colon);\n\n node.test = expr;\n node.consequent = consequent;\n node.alternate = this.forwardNoArrowParamsConversionAt(node, () =>\n this.parseMaybeAssign(noIn, undefined, undefined, undefined),\n );\n\n return this.finishNode(node, \"ConditionalExpression\");\n }\n\n tryParseConditionalConsequent(): {\n consequent: N.Expression,\n failed: boolean,\n } {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n\n const consequent = this.parseMaybeAssign();\n const failed = !this.match(tt.colon);\n\n this.state.noArrowParamsConversionAt.pop();\n\n return { consequent, failed };\n }\n\n // Given an expression, walks through out its arrow functions whose body is\n // an expression and through out conditional expressions. It returns every\n // function which has been parsed with a return type but could have been\n // parenthesized expressions.\n // These functions are separated into two arrays: one containing the ones\n // whose parameters can be converted to assignable lists, one containing the\n // others.\n getArrowLikeExpressions(\n node: N.Expression,\n disallowInvalid?: boolean,\n ): [N.ArrowFunctionExpression[], N.ArrowFunctionExpression[]] {\n const stack = [node];\n const arrows: N.ArrowFunctionExpression[] = [];\n\n while (stack.length !== 0) {\n const node = stack.pop();\n if (node.type === \"ArrowFunctionExpression\") {\n if (node.typeParameters || !node.returnType) {\n // This is an arrow expression without ambiguity, so check its parameters\n this.finishArrowValidation(node);\n } else {\n arrows.push(node);\n }\n stack.push(node.body);\n } else if (node.type === \"ConditionalExpression\") {\n stack.push(node.consequent);\n stack.push(node.alternate);\n }\n }\n\n if (disallowInvalid) {\n arrows.forEach(node => this.finishArrowValidation(node));\n return [arrows, []];\n }\n\n return partition(arrows, node =>\n node.params.every(param => this.isAssignable(param, true)),\n );\n }\n\n finishArrowValidation(node: N.ArrowFunctionExpression) {\n this.toAssignableList(\n // node.params is Expression[] instead of $ReadOnlyArray<Pattern> because it\n // has not been converted yet.\n ((node.params: any): N.Expression[]),\n node.extra?.trailingComma,\n );\n // Enter scope, as checkParams defines bindings\n this.scope.enter(functionFlags(false, false) | SCOPE_ARROW);\n // Use super's method to force the parameters to be checked\n super.checkParams(node, false, true);\n this.scope.exit();\n }\n\n forwardNoArrowParamsConversionAt<T>(node: N.Node, parse: () => T): T {\n let result: T;\n if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n result = parse();\n this.state.noArrowParamsConversionAt.pop();\n } else {\n result = parse();\n }\n\n return result;\n }\n\n parseParenItem(\n node: N.Expression,\n startPos: number,\n startLoc: Position,\n ): N.Expression {\n node = super.parseParenItem(node, startPos, startLoc);\n if (this.eat(tt.question)) {\n node.optional = true;\n // Include questionmark in location of node\n // Don't use this.finishNode() as otherwise we might process comments twice and\n // include already consumed parens\n this.resetEndLocation(node);\n }\n\n if (this.match(tt.colon)) {\n const typeCastNode = this.startNodeAt(startPos, startLoc);\n typeCastNode.expression = node;\n typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();\n\n return this.finishNode(typeCastNode, \"TypeCastExpression\");\n }\n\n return node;\n }\n\n assertModuleNodeAllowed(node: N.Node) {\n if (\n (node.type === \"ImportDeclaration\" &&\n (node.importKind === \"type\" || node.importKind === \"typeof\")) ||\n (node.type === \"ExportNamedDeclaration\" &&\n node.exportKind === \"type\") ||\n (node.type === \"ExportAllDeclaration\" && node.exportKind === \"type\")\n ) {\n // Allow Flowtype imports and exports in all conditions because\n // Flow itself does not care about 'sourceType'.\n return;\n }\n\n super.assertModuleNodeAllowed(node);\n }\n\n parseExport(node: N.Node): N.AnyExport {\n const decl = super.parseExport(node);\n if (\n decl.type === \"ExportNamedDeclaration\" ||\n decl.type === \"ExportAllDeclaration\"\n ) {\n decl.exportKind = decl.exportKind || \"value\";\n }\n return decl;\n }\n\n parseExportDeclaration(node: N.ExportNamedDeclaration): ?N.Declaration {\n if (this.isContextual(\"type\")) {\n node.exportKind = \"type\";\n\n const declarationNode = this.startNode();\n this.next();\n\n if (this.match(tt.braceL)) {\n // export type { foo, bar };\n node.specifiers = this.parseExportSpecifiers();\n this.parseExportFrom(node);\n return null;\n } else {\n // export type Foo = Bar;\n return this.flowParseTypeAlias(declarationNode);\n }\n } else if (this.isContextual(\"opaque\")) {\n node.exportKind = \"type\";\n\n const declarationNode = this.startNode();\n this.next();\n // export opaque type Foo = Bar;\n return this.flowParseOpaqueType(declarationNode, false);\n } else if (this.isContextual(\"interface\")) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseInterface(declarationNode);\n } else if (this.shouldParseEnums() && this.isContextual(\"enum\")) {\n node.exportKind = \"value\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(declarationNode);\n } else {\n return super.parseExportDeclaration(node);\n }\n }\n\n eatExportStar(node: N.Node): boolean {\n if (super.eatExportStar(...arguments)) return true;\n\n if (this.isContextual(\"type\") && this.lookahead().type === tt.star) {\n node.exportKind = \"type\";\n this.next();\n this.next();\n return true;\n }\n\n return false;\n }\n\n maybeParseExportNamespaceSpecifier(node: N.Node): boolean {\n const pos = this.state.start;\n const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);\n if (hasNamespace && node.exportKind === \"type\") {\n this.unexpected(pos);\n }\n return hasNamespace;\n }\n\n parseClassId(node: N.Class, isStatement: boolean, optionalId: ?boolean) {\n super.parseClassId(node, isStatement, optionalId);\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n }\n\n // ensure that inside flow types, we bypass the jsx parser plugin\n getTokenFromCode(code: number): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (code === charCodes.leftCurlyBrace && next === charCodes.verticalBar) {\n return this.finishOp(tt.braceBarL, 2);\n } else if (\n this.state.inType &&\n (code === charCodes.greaterThan || code === charCodes.lessThan)\n ) {\n return this.finishOp(tt.relational, 1);\n } else if (isIteratorStart(code, next)) {\n this.state.isIterator = true;\n return super.readWord();\n } else {\n return super.getTokenFromCode(code);\n }\n }\n\n isAssignable(node: N.Node, isBinding?: boolean): boolean {\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n return true;\n\n case \"ObjectExpression\": {\n const last = node.properties.length - 1;\n return node.properties.every((prop, i) => {\n return (\n prop.type !== \"ObjectMethod\" &&\n (i === last || prop.type === \"SpreadElement\") &&\n this.isAssignable(prop)\n );\n });\n }\n\n case \"ObjectProperty\":\n return this.isAssignable(node.value);\n\n case \"SpreadElement\":\n return this.isAssignable(node.argument);\n\n case \"ArrayExpression\":\n return node.elements.every(element => this.isAssignable(element));\n\n case \"AssignmentExpression\":\n return node.operator === \"=\";\n\n case \"ParenthesizedExpression\":\n case \"TypeCastExpression\":\n return this.isAssignable(node.expression);\n\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n return !isBinding;\n\n default:\n return false;\n }\n }\n\n toAssignable(node: N.Node): N.Node {\n if (node.type === \"TypeCastExpression\") {\n return super.toAssignable(this.typeCastToParameter(node));\n } else {\n return super.toAssignable(node);\n }\n }\n\n // turn type casts that we found in function parameter head into type annotated params\n toAssignableList(\n exprList: N.Expression[],\n trailingCommaPos?: ?number,\n ): $ReadOnlyArray<N.Pattern> {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (expr && expr.type === \"TypeCastExpression\") {\n exprList[i] = this.typeCastToParameter(expr);\n }\n }\n return super.toAssignableList(exprList, trailingCommaPos);\n }\n\n // this is a list of nodes, from something like a call expression, we need to filter the\n // type casts that we've found that are illegal in this context\n toReferencedList(\n exprList: $ReadOnlyArray<?N.Expression>,\n isParenthesizedExpr?: boolean,\n ): $ReadOnlyArray<?N.Expression> {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (\n expr &&\n expr.type === \"TypeCastExpression\" &&\n (!expr.extra || !expr.extra.parenthesized) &&\n (exprList.length > 1 || !isParenthesizedExpr)\n ) {\n this.raise(\n expr.typeAnnotation.start,\n \"The type cast expression is expected to be wrapped with parenthesis\",\n );\n }\n }\n\n return exprList;\n }\n\n checkLVal(\n expr: N.Expression,\n bindingType: BindingTypes = BIND_NONE,\n checkClashes: ?{ [key: string]: boolean },\n contextDescription: string,\n ): void {\n if (expr.type !== \"TypeCastExpression\") {\n return super.checkLVal(\n expr,\n bindingType,\n checkClashes,\n contextDescription,\n );\n }\n }\n\n // parse class property type annotations\n parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n if (this.match(tt.colon)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n return super.parseClassProperty(node);\n }\n\n parseClassPrivateProperty(\n node: N.ClassPrivateProperty,\n ): N.ClassPrivateProperty {\n if (this.match(tt.colon)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n return super.parseClassPrivateProperty(node);\n }\n\n // determine whether or not we're currently in the position where a class method would appear\n isClassMethod(): boolean {\n return this.isRelational(\"<\") || super.isClassMethod();\n }\n\n // determine whether or not we're currently in the position where a class property would appear\n isClassProperty(): boolean {\n return this.match(tt.colon) || super.isClassProperty();\n }\n\n isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n return !this.match(tt.colon) && super.isNonstaticConstructor(method);\n }\n\n // parse type parameters for class methods\n pushClassMethod(\n classBody: N.ClassBody,\n method: N.ClassMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowsDirectSuper: boolean,\n ): void {\n if ((method: $FlowFixMe).variance) {\n this.unexpected((method: $FlowFixMe).variance.start);\n }\n delete (method: $FlowFixMe).variance;\n if (this.isRelational(\"<\")) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.pushClassMethod(\n classBody,\n method,\n isGenerator,\n isAsync,\n isConstructor,\n allowsDirectSuper,\n );\n }\n\n pushClassPrivateMethod(\n classBody: N.ClassBody,\n method: N.ClassPrivateMethod,\n isGenerator: boolean,\n isAsync: boolean,\n ): void {\n if ((method: $FlowFixMe).variance) {\n this.unexpected((method: $FlowFixMe).variance.start);\n }\n delete (method: $FlowFixMe).variance;\n if (this.isRelational(\"<\")) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n\n // parse a the super class type parameters and implements\n parseClassSuper(node: N.Class): void {\n super.parseClassSuper(node);\n if (node.superClass && this.isRelational(\"<\")) {\n node.superTypeParameters = this.flowParseTypeParameterInstantiation();\n }\n if (this.isContextual(\"implements\")) {\n this.next();\n const implemented: N.FlowClassImplements[] = (node.implements = []);\n do {\n const node = this.startNode();\n node.id = this.flowParseRestrictedIdentifier(/*liberal*/ true);\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n implemented.push(this.finishNode(node, \"ClassImplements\"));\n } while (this.eat(tt.comma));\n }\n }\n\n parsePropertyName(\n node: N.ObjectOrClassMember | N.ClassMember | N.TsNamedTypeElementBase,\n isPrivateNameAllowed: boolean,\n ): N.Identifier {\n const variance = this.flowParseVariance();\n const key = super.parsePropertyName(node, isPrivateNameAllowed);\n // $FlowIgnore (\"variance\" not defined on TsNamedTypeElementBase)\n node.variance = variance;\n return key;\n }\n\n // parse type parameters for object method shorthand\n parseObjPropValue(\n prop: N.ObjectMember,\n startPos: ?number,\n startLoc: ?Position,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n refExpressionErrors: ?ExpressionErrors,\n containsEsc: boolean,\n ): void {\n if ((prop: $FlowFixMe).variance) {\n this.unexpected((prop: $FlowFixMe).variance.start);\n }\n delete (prop: $FlowFixMe).variance;\n\n let typeParameters;\n\n // method shorthand\n if (this.isRelational(\"<\")) {\n typeParameters = this.flowParseTypeParameterDeclaration();\n if (!this.match(tt.parenL)) this.unexpected();\n }\n\n super.parseObjPropValue(\n prop,\n startPos,\n startLoc,\n isGenerator,\n isAsync,\n isPattern,\n refExpressionErrors,\n containsEsc,\n );\n\n // add typeParameters if we found them\n if (typeParameters) {\n (prop.value || prop).typeParameters = typeParameters;\n }\n }\n\n parseAssignableListItemTypes(param: N.Pattern): N.Pattern {\n if (this.eat(tt.question)) {\n if (param.type !== \"Identifier\") {\n this.raise(\n param.start,\n \"A binding pattern parameter cannot be optional in an implementation signature.\",\n );\n }\n\n ((param: any): N.Identifier).optional = true;\n }\n if (this.match(tt.colon)) {\n param.typeAnnotation = this.flowParseTypeAnnotation();\n }\n this.resetEndLocation(param);\n return param;\n }\n\n parseMaybeDefault(\n startPos?: ?number,\n startLoc?: ?Position,\n left?: ?N.Pattern,\n ): N.Pattern {\n const node = super.parseMaybeDefault(startPos, startLoc, left);\n\n if (\n node.type === \"AssignmentPattern\" &&\n node.typeAnnotation &&\n node.right.start < node.typeAnnotation.start\n ) {\n this.raise(\n node.typeAnnotation.start,\n \"Type annotations must come before default assignments, \" +\n \"e.g. instead of `age = 25: number` use `age: number = 25`\",\n );\n }\n\n return node;\n }\n\n shouldParseDefaultImport(node: N.ImportDeclaration): boolean {\n if (!hasTypeImportKind(node)) {\n return super.shouldParseDefaultImport(node);\n }\n\n return isMaybeDefaultImport(this.state);\n }\n\n parseImportSpecifierLocal(\n node: N.ImportDeclaration,\n specifier: N.Node,\n type: string,\n contextDescription: string,\n ): void {\n specifier.local = hasTypeImportKind(node)\n ? this.flowParseRestrictedIdentifier(\n /* liberal */ true,\n /* declaration */ true,\n )\n : this.parseIdentifier();\n\n this.checkLVal(\n specifier.local,\n BIND_LEXICAL,\n undefined,\n contextDescription,\n );\n node.specifiers.push(this.finishNode(specifier, type));\n }\n\n // parse typeof and type imports\n maybeParseDefaultImportSpecifier(node: N.ImportDeclaration): boolean {\n node.importKind = \"value\";\n\n let kind = null;\n if (this.match(tt._typeof)) {\n kind = \"typeof\";\n } else if (this.isContextual(\"type\")) {\n kind = \"type\";\n }\n if (kind) {\n const lh = this.lookahead();\n\n // import type * is not allowed\n if (kind === \"type\" && lh.type === tt.star) {\n this.unexpected(lh.start);\n }\n\n if (\n isMaybeDefaultImport(lh) ||\n lh.type === tt.braceL ||\n lh.type === tt.star\n ) {\n this.next();\n node.importKind = kind;\n }\n }\n\n return super.maybeParseDefaultImportSpecifier(node);\n }\n\n // parse import-type/typeof shorthand\n parseImportSpecifier(node: N.ImportDeclaration): void {\n const specifier = this.startNode();\n const firstIdentLoc = this.state.start;\n const firstIdent = this.parseIdentifier(true);\n\n let specifierTypeKind = null;\n if (firstIdent.name === \"type\") {\n specifierTypeKind = \"type\";\n } else if (firstIdent.name === \"typeof\") {\n specifierTypeKind = \"typeof\";\n }\n\n let isBinding = false;\n if (this.isContextual(\"as\") && !this.isLookaheadContextual(\"as\")) {\n const as_ident = this.parseIdentifier(true);\n if (\n specifierTypeKind !== null &&\n !this.match(tt.name) &&\n !this.state.type.keyword\n ) {\n // `import {type as ,` or `import {type as }`\n specifier.imported = as_ident;\n specifier.importKind = specifierTypeKind;\n specifier.local = as_ident.__clone();\n } else {\n // `import {type as foo`\n specifier.imported = firstIdent;\n specifier.importKind = null;\n specifier.local = this.parseIdentifier();\n }\n } else if (\n specifierTypeKind !== null &&\n (this.match(tt.name) || this.state.type.keyword)\n ) {\n // `import {type foo`\n specifier.imported = this.parseIdentifier(true);\n specifier.importKind = specifierTypeKind;\n if (this.eatContextual(\"as\")) {\n specifier.local = this.parseIdentifier();\n } else {\n isBinding = true;\n specifier.local = specifier.imported.__clone();\n }\n } else {\n isBinding = true;\n specifier.imported = firstIdent;\n specifier.importKind = null;\n specifier.local = specifier.imported.__clone();\n }\n\n const nodeIsTypeImport = hasTypeImportKind(node);\n const specifierIsTypeImport = hasTypeImportKind(specifier);\n\n if (nodeIsTypeImport && specifierIsTypeImport) {\n this.raise(\n firstIdentLoc,\n \"The `type` and `typeof` keywords on named imports can only be used on regular \" +\n \"`import` statements. It cannot be used with `import type` or `import typeof` statements\",\n );\n }\n\n if (nodeIsTypeImport || specifierIsTypeImport) {\n this.checkReservedType(\n specifier.local.name,\n specifier.local.start,\n /* declaration */ true,\n );\n }\n\n if (isBinding && !nodeIsTypeImport && !specifierIsTypeImport) {\n this.checkReservedWord(\n specifier.local.name,\n specifier.start,\n true,\n true,\n );\n }\n\n this.checkLVal(\n specifier.local,\n BIND_LEXICAL,\n undefined,\n \"import specifier\",\n );\n node.specifiers.push(this.finishNode(specifier, \"ImportSpecifier\"));\n }\n\n // parse function type parameters - function foo<T>() {}\n parseFunctionParams(node: N.Function, allowModifiers?: boolean): void {\n // $FlowFixMe\n const kind = node.kind;\n if (kind !== \"get\" && kind !== \"set\" && this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n super.parseFunctionParams(node, allowModifiers);\n }\n\n // parse flow type annotations on variable declarator heads - let foo: string = bar\n parseVarId(\n decl: N.VariableDeclarator,\n kind: \"var\" | \"let\" | \"const\",\n ): void {\n super.parseVarId(decl, kind);\n if (this.match(tt.colon)) {\n decl.id.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(decl.id); // set end position to end of type\n }\n }\n\n // parse the return type of an async arrow function - let foo = (async (): number => {});\n parseAsyncArrowFromCallExpression(\n node: N.ArrowFunctionExpression,\n call: N.CallExpression,\n ): N.ArrowFunctionExpression {\n if (this.match(tt.colon)) {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n node.returnType = this.flowParseTypeAnnotation();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n }\n\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n\n // todo description\n shouldParseAsyncArrow(): boolean {\n return this.match(tt.colon) || super.shouldParseAsyncArrow();\n }\n\n // We need to support type parameter declarations for arrow functions. This\n // is tricky. There are three situations we need to handle\n //\n // 1. This is either JSX or an arrow function. We'll try JSX first. If that\n // fails, we'll try an arrow function. If that fails, we'll throw the JSX\n // error.\n // 2. This is an arrow function. We'll parse the type parameter declaration,\n // parse the rest, make sure the rest is an arrow function, and go from\n // there\n // 3. This is neither. Just call the super method\n parseMaybeAssign(\n noIn?: ?boolean,\n refExpressionErrors?: ?ExpressionErrors,\n afterLeftParse?: Function,\n refNeedsArrowPos?: ?Pos,\n ): N.Expression {\n let state = null;\n\n let jsx;\n\n if (\n this.hasPlugin(\"jsx\") &&\n (this.match(tt.jsxTagStart) || this.isRelational(\"<\"))\n ) {\n state = this.state.clone();\n\n jsx = this.tryParse(\n () =>\n super.parseMaybeAssign(\n noIn,\n refExpressionErrors,\n afterLeftParse,\n refNeedsArrowPos,\n ),\n state,\n );\n /*:: invariant(!jsx.aborted) */\n\n if (!jsx.error) return jsx.node;\n\n // Remove `tc.j_expr` and `tc.j_oTag` from context added\n // by parsing `jsxTagStart` to stop the JSX plugin from\n // messing with the tokens\n const { context } = this.state;\n if (context[context.length - 1] === tc.j_oTag) {\n context.length -= 2;\n } else if (context[context.length - 1] === tc.j_expr) {\n context.length -= 1;\n }\n }\n\n if ((jsx && jsx.error) || this.isRelational(\"<\")) {\n state = state || this.state.clone();\n\n let typeParameters;\n\n const arrow = this.tryParse(() => {\n typeParameters = this.flowParseTypeParameterDeclaration();\n\n const arrowExpression = this.forwardNoArrowParamsConversionAt(\n typeParameters,\n () =>\n super.parseMaybeAssign(\n noIn,\n refExpressionErrors,\n afterLeftParse,\n refNeedsArrowPos,\n ),\n );\n arrowExpression.typeParameters = typeParameters;\n this.resetStartLocationFromNode(arrowExpression, typeParameters);\n\n return arrowExpression;\n }, state);\n\n const arrowExpression: ?N.ArrowFunctionExpression =\n arrow.node && arrow.node.type === \"ArrowFunctionExpression\"\n ? arrow.node\n : null;\n\n if (!arrow.error && arrowExpression) return arrowExpression;\n\n // If we are here, both JSX and Flow parsing attemps failed.\n // Give the precedence to the JSX error, except if JSX had an\n // unrecoverable error while Flow didn't.\n // If the error is recoverable, we can only re-report it if there is\n // a node we can return.\n\n if (jsx && jsx.node) {\n /*:: invariant(jsx.failState) */\n this.state = jsx.failState;\n return jsx.node;\n }\n\n if (arrowExpression) {\n /*:: invariant(arrow.failState) */\n this.state = arrow.failState;\n return arrowExpression;\n }\n\n if (jsx && jsx.thrown) throw jsx.error;\n if (arrow.thrown) throw arrow.error;\n\n /*:: invariant(typeParameters) */\n throw this.raise(\n typeParameters.start,\n \"Expected an arrow function after this type parameter declaration\",\n );\n }\n\n return super.parseMaybeAssign(\n noIn,\n refExpressionErrors,\n afterLeftParse,\n refNeedsArrowPos,\n );\n }\n\n // handle return types for arrow functions\n parseArrow(node: N.ArrowFunctionExpression): ?N.ArrowFunctionExpression {\n if (this.match(tt.colon)) {\n const result = this.tryParse(() => {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n\n const typeNode = this.startNode();\n\n [\n // $FlowFixMe (destructuring not supported yet)\n typeNode.typeAnnotation,\n // $FlowFixMe (destructuring not supported yet)\n node.predicate,\n ] = this.flowParseTypeAndPredicateInitialiser();\n\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n if (this.canInsertSemicolon()) this.unexpected();\n if (!this.match(tt.arrow)) this.unexpected();\n\n return typeNode;\n });\n\n if (result.thrown) return null;\n /*:: invariant(result.node) */\n\n if (result.error) this.state = result.failState;\n\n // assign after it is clear it is an arrow\n node.returnType = result.node.typeAnnotation\n ? this.finishNode(result.node, \"TypeAnnotation\")\n : null;\n }\n\n return super.parseArrow(node);\n }\n\n shouldParseArrow(): boolean {\n return this.match(tt.colon) || super.shouldParseArrow();\n }\n\n setArrowFunctionParameters(\n node: N.ArrowFunctionExpression,\n params: N.Expression[],\n ): void {\n if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {\n node.params = params;\n } else {\n super.setArrowFunctionParameters(node, params);\n }\n }\n\n checkParams(\n node: N.Function,\n allowDuplicates: boolean,\n isArrowFunction: ?boolean,\n ): void {\n if (\n isArrowFunction &&\n this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1\n ) {\n return;\n }\n\n return super.checkParams(...arguments);\n }\n\n parseParenAndDistinguishExpression(canBeArrow: boolean): N.Expression {\n return super.parseParenAndDistinguishExpression(\n canBeArrow && this.state.noArrowAt.indexOf(this.state.start) === -1,\n );\n }\n\n parseSubscripts(\n base: N.Expression,\n startPos: number,\n startLoc: Position,\n noCalls?: ?boolean,\n ): N.Expression {\n if (\n base.type === \"Identifier\" &&\n base.name === \"async\" &&\n this.state.noArrowAt.indexOf(startPos) !== -1\n ) {\n this.next();\n\n const node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n node.arguments = this.parseCallExpressionArguments(tt.parenR, false);\n base = this.finishNode(node, \"CallExpression\");\n } else if (\n base.type === \"Identifier\" &&\n base.name === \"async\" &&\n this.isRelational(\"<\")\n ) {\n const state = this.state.clone();\n const arrow = this.tryParse(\n abort =>\n this.parseAsyncArrowWithTypeParameters(startPos, startLoc) ||\n abort(),\n state,\n );\n\n if (!arrow.error && !arrow.aborted) return arrow.node;\n\n const result = this.tryParse(\n () => super.parseSubscripts(base, startPos, startLoc, noCalls),\n state,\n );\n\n if (result.node && !result.error) return result.node;\n\n if (arrow.node) {\n this.state = arrow.failState;\n return arrow.node;\n }\n\n if (result.node) {\n this.state = result.failState;\n return result.node;\n }\n\n throw arrow.error || result.error;\n }\n\n return super.parseSubscripts(base, startPos, startLoc, noCalls);\n }\n\n parseSubscript(\n base: N.Expression,\n startPos: number,\n startLoc: Position,\n noCalls: ?boolean,\n subscriptState: N.ParseSubscriptState,\n ): N.Expression {\n if (this.match(tt.questionDot) && this.isLookaheadRelational(\"<\")) {\n subscriptState.optionalChainMember = true;\n if (noCalls) {\n subscriptState.stop = true;\n return base;\n }\n this.next();\n const node: N.OptionalCallExpression = this.startNodeAt(\n startPos,\n startLoc,\n );\n node.callee = base;\n node.typeArguments = this.flowParseTypeParameterInstantiation();\n this.expect(tt.parenL);\n // $FlowFixMe\n node.arguments = this.parseCallExpressionArguments(tt.parenR, false);\n node.optional = true;\n return this.finishCallExpression(node, /* optional */ true);\n } else if (\n !noCalls &&\n this.shouldParseTypes() &&\n this.isRelational(\"<\")\n ) {\n const node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n\n const result = this.tryParse(() => {\n node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew();\n this.expect(tt.parenL);\n node.arguments = this.parseCallExpressionArguments(tt.parenR, false);\n if (subscriptState.optionalChainMember) node.optional = false;\n return this.finishCallExpression(\n node,\n subscriptState.optionalChainMember,\n );\n });\n\n if (result.node) {\n if (result.error) this.state = result.failState;\n return result.node;\n }\n }\n\n return super.parseSubscript(\n base,\n startPos,\n startLoc,\n noCalls,\n subscriptState,\n );\n }\n\n parseNewArguments(node: N.NewExpression): void {\n let targs = null;\n if (this.shouldParseTypes() && this.isRelational(\"<\")) {\n targs = this.tryParse(() =>\n this.flowParseTypeParameterInstantiationCallOrNew(),\n ).node;\n }\n node.typeArguments = targs;\n\n super.parseNewArguments(node);\n }\n\n parseAsyncArrowWithTypeParameters(\n startPos: number,\n startLoc: Position,\n ): ?N.ArrowFunctionExpression {\n const node = this.startNodeAt(startPos, startLoc);\n this.parseFunctionParams(node);\n if (!this.parseArrow(node)) return;\n return this.parseArrowExpression(\n node,\n /* params */ undefined,\n /* isAsync */ true,\n );\n }\n\n readToken_mult_modulo(code: number): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (\n code === charCodes.asterisk &&\n next === charCodes.slash &&\n this.state.hasFlowComment\n ) {\n this.state.hasFlowComment = false;\n this.state.pos += 2;\n this.nextToken();\n return;\n }\n\n super.readToken_mult_modulo(code);\n }\n\n readToken_pipe_amp(code: number): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (\n code === charCodes.verticalBar &&\n next === charCodes.rightCurlyBrace\n ) {\n // '|}'\n this.finishOp(tt.braceBarR, 2);\n return;\n }\n\n super.readToken_pipe_amp(code);\n }\n\n parseTopLevel(file: N.File, program: N.Program): N.File {\n const fileNode = super.parseTopLevel(file, program);\n if (this.state.hasFlowComment) {\n this.raise(this.state.pos, \"Unterminated flow-comment\");\n }\n return fileNode;\n }\n\n skipBlockComment(): void {\n if (this.hasPlugin(\"flowComments\") && this.skipFlowComment()) {\n if (this.state.hasFlowComment) {\n this.unexpected(\n null,\n \"Cannot have a flow comment inside another flow comment\",\n );\n }\n this.hasFlowCommentCompletion();\n this.state.pos += this.skipFlowComment();\n this.state.hasFlowComment = true;\n return;\n }\n\n if (this.state.hasFlowComment) {\n const end = this.input.indexOf(\"*-/\", (this.state.pos += 2));\n if (end === -1) {\n throw this.raise(this.state.pos - 2, \"Unterminated comment\");\n }\n this.state.pos = end + 3;\n return;\n }\n\n super.skipBlockComment();\n }\n\n skipFlowComment(): number | boolean {\n const { pos } = this.state;\n let shiftToFirstNonWhiteSpace = 2;\n while (\n [charCodes.space, charCodes.tab].includes(\n this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace),\n )\n ) {\n shiftToFirstNonWhiteSpace++;\n }\n\n const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);\n const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);\n\n if (ch2 === charCodes.colon && ch3 === charCodes.colon) {\n return shiftToFirstNonWhiteSpace + 2; // check for /*::\n }\n if (\n this.input.slice(\n shiftToFirstNonWhiteSpace + pos,\n shiftToFirstNonWhiteSpace + pos + 12,\n ) === \"flow-include\"\n ) {\n return shiftToFirstNonWhiteSpace + 12; // check for /*flow-include\n }\n if (ch2 === charCodes.colon && ch3 !== charCodes.colon) {\n return shiftToFirstNonWhiteSpace; // check for /*:, advance up to :\n }\n return false;\n }\n\n hasFlowCommentCompletion(): void {\n const end = this.input.indexOf(\"*/\", this.state.pos);\n if (end === -1) {\n throw this.raise(this.state.pos, \"Unterminated comment\");\n }\n }\n\n // Flow enum parsing\n\n flowEnumErrorBooleanMemberNotInitialized(\n pos: number,\n { enumName, memberName }: { enumName: string, memberName: string },\n ): void {\n this.raise(\n pos,\n `Boolean enum members need to be initialized. Use either \\`${memberName} = true,\\` ` +\n `or \\`${memberName} = false,\\` in enum \\`${enumName}\\`.`,\n );\n }\n\n flowEnumErrorInvalidMemberName(\n pos: number,\n { enumName, memberName }: { enumName: string, memberName: string },\n ): void {\n const suggestion = memberName[0].toUpperCase() + memberName.slice(1);\n this.raise(\n pos,\n `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using ` +\n `\\`${memberName}\\`, consider using \\`${suggestion}\\`, in enum \\`${enumName}\\`.`,\n );\n }\n\n flowEnumErrorDuplicateMemberName(\n pos: number,\n { enumName, memberName }: { enumName: string, memberName: string },\n ): void {\n this.raise(\n pos,\n `Enum member names need to be unique, but the name \\`${memberName}\\` has already been used ` +\n `before in enum \\`${enumName}\\`.`,\n );\n }\n\n flowEnumErrorInconsistentMemberValues(\n pos: number,\n { enumName }: { enumName: string },\n ): void {\n this.raise(\n pos,\n `Enum \\`${enumName}\\` has inconsistent member initializers. Either use no initializers, or ` +\n `consistently use literals (either booleans, numbers, or strings) for all member initializers.`,\n );\n }\n\n flowEnumErrorInvalidExplicitType(\n pos: number,\n {\n enumName,\n suppliedType,\n }: { enumName: string, suppliedType: null | string },\n ) {\n const suggestion =\n `Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in ` +\n `enum \\`${enumName}\\`.`;\n const message =\n suppliedType === null\n ? `Supplied enum type is not valid. ${suggestion}`\n : `Enum type \\`${suppliedType}\\` is not valid. ${suggestion}`;\n return this.raise(pos, message);\n }\n\n flowEnumErrorInvalidMemberInitializer(\n pos: number,\n { enumName, explicitType, memberName }: EnumContext,\n ) {\n let message = null;\n switch (explicitType) {\n case \"boolean\":\n case \"number\":\n case \"string\":\n message =\n `Enum \\`${enumName}\\` has type \\`${explicitType}\\`, so the initializer of ` +\n `\\`${memberName}\\` needs to be a ${explicitType} literal.`;\n break;\n case \"symbol\":\n message =\n `Symbol enum members cannot be initialized. Use \\`${memberName},\\` in ` +\n `enum \\`${enumName}\\`.`;\n break;\n default:\n // null\n message =\n `The enum member initializer for \\`${memberName}\\` needs to be a literal (either ` +\n `a boolean, number, or string) in enum \\`${enumName}\\`.`;\n }\n return this.raise(pos, message);\n }\n\n flowEnumErrorNumberMemberNotInitialized(\n pos: number,\n { enumName, memberName }: { enumName: string, memberName: string },\n ): void {\n this.raise(\n pos,\n `Number enum members need to be initialized, e.g. \\`${memberName} = 1\\` in enum \\`${enumName}\\`.`,\n );\n }\n\n flowEnumErrorStringMemberInconsistentlyInitailized(\n pos: number,\n { enumName }: { enumName: string },\n ): void {\n this.raise(\n pos,\n `String enum members need to consistently either all use initializers, or use no initializers, ` +\n `in enum \\`${enumName}\\`.`,\n );\n }\n\n flowEnumMemberInit(): EnumMemberInit {\n const startPos = this.state.start;\n const endOfInit = () => this.match(tt.comma) || this.match(tt.braceR);\n switch (this.state.type) {\n case tt.num: {\n const literal = this.parseLiteral(this.state.value, \"NumericLiteral\");\n if (endOfInit()) {\n return { type: \"number\", pos: literal.start, value: literal };\n }\n return { type: \"invalid\", pos: startPos };\n }\n case tt.string: {\n const literal = this.parseLiteral(this.state.value, \"StringLiteral\");\n if (endOfInit()) {\n return { type: \"string\", pos: literal.start, value: literal };\n }\n return { type: \"invalid\", pos: startPos };\n }\n case tt._true:\n case tt._false: {\n const literal = this.parseBooleanLiteral();\n if (endOfInit()) {\n return {\n type: \"boolean\",\n pos: literal.start,\n value: literal,\n };\n }\n return { type: \"invalid\", pos: startPos };\n }\n default:\n return { type: \"invalid\", pos: startPos };\n }\n }\n\n flowEnumMemberRaw(): { id: N.Node, init: EnumMemberInit } {\n const pos = this.state.start;\n const id = this.parseIdentifier(true);\n const init = this.eat(tt.eq)\n ? this.flowEnumMemberInit()\n : { type: \"none\", pos };\n return { id, init };\n }\n\n flowEnumCheckExplicitTypeMismatch(\n pos: number,\n context: EnumContext,\n expectedType: EnumExplicitType,\n ): void {\n const { explicitType } = context;\n if (explicitType === null) {\n return;\n }\n if (explicitType !== expectedType) {\n this.flowEnumErrorInvalidMemberInitializer(pos, context);\n }\n }\n\n flowEnumMembers({\n enumName,\n explicitType,\n }: {\n enumName: string,\n explicitType: EnumExplicitType,\n }): {|\n booleanMembers: Array<N.Node>,\n numberMembers: Array<N.Node>,\n stringMembers: Array<N.Node>,\n defaultedMembers: Array<N.Node>,\n |} {\n const seenNames = new Set();\n const members = {\n booleanMembers: [],\n numberMembers: [],\n stringMembers: [],\n defaultedMembers: [],\n };\n while (!this.match(tt.braceR)) {\n const memberNode = this.startNode();\n const { id, init } = this.flowEnumMemberRaw();\n const memberName = id.name;\n if (memberName === \"\") {\n continue;\n }\n if (/^[a-z]/.test(memberName)) {\n this.flowEnumErrorInvalidMemberName(id.start, {\n enumName,\n memberName,\n });\n }\n if (seenNames.has(memberName)) {\n this.flowEnumErrorDuplicateMemberName(id.start, {\n enumName,\n memberName,\n });\n }\n seenNames.add(memberName);\n const context = { enumName, explicitType, memberName };\n memberNode.id = id;\n switch (init.type) {\n case \"boolean\": {\n this.flowEnumCheckExplicitTypeMismatch(\n init.pos,\n context,\n \"boolean\",\n );\n memberNode.init = init.value;\n members.booleanMembers.push(\n this.finishNode(memberNode, \"EnumBooleanMember\"),\n );\n break;\n }\n case \"number\": {\n this.flowEnumCheckExplicitTypeMismatch(init.pos, context, \"number\");\n memberNode.init = init.value;\n members.numberMembers.push(\n this.finishNode(memberNode, \"EnumNumberMember\"),\n );\n break;\n }\n case \"string\": {\n this.flowEnumCheckExplicitTypeMismatch(init.pos, context, \"string\");\n memberNode.init = init.value;\n members.stringMembers.push(\n this.finishNode(memberNode, \"EnumStringMember\"),\n );\n break;\n }\n case \"invalid\": {\n throw this.flowEnumErrorInvalidMemberInitializer(init.pos, context);\n }\n case \"none\": {\n switch (explicitType) {\n case \"boolean\":\n this.flowEnumErrorBooleanMemberNotInitialized(\n init.pos,\n context,\n );\n break;\n case \"number\":\n this.flowEnumErrorNumberMemberNotInitialized(init.pos, context);\n break;\n default:\n members.defaultedMembers.push(\n this.finishNode(memberNode, \"EnumDefaultedMember\"),\n );\n }\n }\n }\n\n if (!this.match(tt.braceR)) {\n this.expect(tt.comma);\n }\n }\n return members;\n }\n\n flowEnumStringMembers(\n initializedMembers: Array<N.Node>,\n defaultedMembers: Array<N.Node>,\n { enumName }: { enumName: string },\n ): Array<N.Node> {\n if (initializedMembers.length === 0) {\n return defaultedMembers;\n } else if (defaultedMembers.length === 0) {\n return initializedMembers;\n } else if (defaultedMembers.length > initializedMembers.length) {\n for (const member of initializedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitailized(\n member.start,\n { enumName },\n );\n }\n return defaultedMembers;\n } else {\n for (const member of defaultedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitailized(\n member.start,\n { enumName },\n );\n }\n return initializedMembers;\n }\n }\n\n flowEnumParseExplicitType({\n enumName,\n }: {\n enumName: string,\n }): EnumExplicitType {\n if (this.eatContextual(\"of\")) {\n if (!this.match(tt.name)) {\n throw this.flowEnumErrorInvalidExplicitType(this.state.start, {\n enumName,\n suppliedType: null,\n });\n }\n\n const { value } = this.state;\n this.next();\n\n if (\n value !== \"boolean\" &&\n value !== \"number\" &&\n value !== \"string\" &&\n value !== \"symbol\"\n ) {\n this.flowEnumErrorInvalidExplicitType(this.state.start, {\n enumName,\n suppliedType: value,\n });\n }\n\n return value;\n }\n return null;\n }\n\n flowEnumBody(node: N.Node, { enumName, nameLoc }): N.Node {\n const explicitType = this.flowEnumParseExplicitType({ enumName });\n this.expect(tt.braceL);\n const members = this.flowEnumMembers({ enumName, explicitType });\n\n switch (explicitType) {\n case \"boolean\":\n node.explicitType = true;\n node.members = members.booleanMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumBooleanBody\");\n case \"number\":\n node.explicitType = true;\n node.members = members.numberMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumNumberBody\");\n case \"string\":\n node.explicitType = true;\n node.members = this.flowEnumStringMembers(\n members.stringMembers,\n members.defaultedMembers,\n { enumName },\n );\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumStringBody\");\n case \"symbol\":\n node.members = members.defaultedMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumSymbolBody\");\n default: {\n // `explicitType` is `null`\n const empty = () => {\n node.members = [];\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumStringBody\");\n };\n node.explicitType = false;\n\n const boolsLen = members.booleanMembers.length;\n const numsLen = members.numberMembers.length;\n const strsLen = members.stringMembers.length;\n const defaultedLen = members.defaultedMembers.length;\n\n if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {\n return empty();\n } else if (!boolsLen && !numsLen) {\n node.members = this.flowEnumStringMembers(\n members.stringMembers,\n members.defaultedMembers,\n { enumName },\n );\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumStringBody\");\n } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorBooleanMemberNotInitialized(member.start, {\n enumName,\n memberName: member.id.name,\n });\n }\n node.members = members.booleanMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumBooleanBody\");\n } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorNumberMemberNotInitialized(member.start, {\n enumName,\n memberName: member.id.name,\n });\n }\n node.members = members.numberMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumNumberBody\");\n } else {\n this.flowEnumErrorInconsistentMemberValues(nameLoc, { enumName });\n return empty();\n }\n }\n }\n }\n\n flowParseEnumDeclaration(node: N.Node): N.Node {\n const id = this.parseIdentifier();\n node.id = id;\n node.body = this.flowEnumBody(this.startNode(), {\n enumName: id.name,\n nameLoc: id.start,\n });\n return this.finishNode(node, \"EnumDeclaration\");\n }\n };\n","// @flow\n\nconst entities: { [name: string]: string } = {\n quot: \"\\u0022\",\n amp: \"&\",\n apos: \"\\u0027\",\n lt: \"<\",\n gt: \">\",\n nbsp: \"\\u00A0\",\n iexcl: \"\\u00A1\",\n cent: \"\\u00A2\",\n pound: \"\\u00A3\",\n curren: \"\\u00A4\",\n yen: \"\\u00A5\",\n brvbar: \"\\u00A6\",\n sect: \"\\u00A7\",\n uml: \"\\u00A8\",\n copy: \"\\u00A9\",\n ordf: \"\\u00AA\",\n laquo: \"\\u00AB\",\n not: \"\\u00AC\",\n shy: \"\\u00AD\",\n reg: \"\\u00AE\",\n macr: \"\\u00AF\",\n deg: \"\\u00B0\",\n plusmn: \"\\u00B1\",\n sup2: \"\\u00B2\",\n sup3: \"\\u00B3\",\n acute: \"\\u00B4\",\n micro: \"\\u00B5\",\n para: \"\\u00B6\",\n middot: \"\\u00B7\",\n cedil: \"\\u00B8\",\n sup1: \"\\u00B9\",\n ordm: \"\\u00BA\",\n raquo: \"\\u00BB\",\n frac14: \"\\u00BC\",\n frac12: \"\\u00BD\",\n frac34: \"\\u00BE\",\n iquest: \"\\u00BF\",\n Agrave: \"\\u00C0\",\n Aacute: \"\\u00C1\",\n Acirc: \"\\u00C2\",\n Atilde: \"\\u00C3\",\n Auml: \"\\u00C4\",\n Aring: \"\\u00C5\",\n AElig: \"\\u00C6\",\n Ccedil: \"\\u00C7\",\n Egrave: \"\\u00C8\",\n Eacute: \"\\u00C9\",\n Ecirc: \"\\u00CA\",\n Euml: \"\\u00CB\",\n Igrave: \"\\u00CC\",\n Iacute: \"\\u00CD\",\n Icirc: \"\\u00CE\",\n Iuml: \"\\u00CF\",\n ETH: \"\\u00D0\",\n Ntilde: \"\\u00D1\",\n Ograve: \"\\u00D2\",\n Oacute: \"\\u00D3\",\n Ocirc: \"\\u00D4\",\n Otilde: \"\\u00D5\",\n Ouml: \"\\u00D6\",\n times: \"\\u00D7\",\n Oslash: \"\\u00D8\",\n Ugrave: \"\\u00D9\",\n Uacute: \"\\u00DA\",\n Ucirc: \"\\u00DB\",\n Uuml: \"\\u00DC\",\n Yacute: \"\\u00DD\",\n THORN: \"\\u00DE\",\n szlig: \"\\u00DF\",\n agrave: \"\\u00E0\",\n aacute: \"\\u00E1\",\n acirc: \"\\u00E2\",\n atilde: \"\\u00E3\",\n auml: \"\\u00E4\",\n aring: \"\\u00E5\",\n aelig: \"\\u00E6\",\n ccedil: \"\\u00E7\",\n egrave: \"\\u00E8\",\n eacute: \"\\u00E9\",\n ecirc: \"\\u00EA\",\n euml: \"\\u00EB\",\n igrave: \"\\u00EC\",\n iacute: \"\\u00ED\",\n icirc: \"\\u00EE\",\n iuml: \"\\u00EF\",\n eth: \"\\u00F0\",\n ntilde: \"\\u00F1\",\n ograve: \"\\u00F2\",\n oacute: \"\\u00F3\",\n ocirc: \"\\u00F4\",\n otilde: \"\\u00F5\",\n ouml: \"\\u00F6\",\n divide: \"\\u00F7\",\n oslash: \"\\u00F8\",\n ugrave: \"\\u00F9\",\n uacute: \"\\u00FA\",\n ucirc: \"\\u00FB\",\n uuml: \"\\u00FC\",\n yacute: \"\\u00FD\",\n thorn: \"\\u00FE\",\n yuml: \"\\u00FF\",\n OElig: \"\\u0152\",\n oelig: \"\\u0153\",\n Scaron: \"\\u0160\",\n scaron: \"\\u0161\",\n Yuml: \"\\u0178\",\n fnof: \"\\u0192\",\n circ: \"\\u02C6\",\n tilde: \"\\u02DC\",\n Alpha: \"\\u0391\",\n Beta: \"\\u0392\",\n Gamma: \"\\u0393\",\n Delta: \"\\u0394\",\n Epsilon: \"\\u0395\",\n Zeta: \"\\u0396\",\n Eta: \"\\u0397\",\n Theta: \"\\u0398\",\n Iota: \"\\u0399\",\n Kappa: \"\\u039A\",\n Lambda: \"\\u039B\",\n Mu: \"\\u039C\",\n Nu: \"\\u039D\",\n Xi: \"\\u039E\",\n Omicron: \"\\u039F\",\n Pi: \"\\u03A0\",\n Rho: \"\\u03A1\",\n Sigma: \"\\u03A3\",\n Tau: \"\\u03A4\",\n Upsilon: \"\\u03A5\",\n Phi: \"\\u03A6\",\n Chi: \"\\u03A7\",\n Psi: \"\\u03A8\",\n Omega: \"\\u03A9\",\n alpha: \"\\u03B1\",\n beta: \"\\u03B2\",\n gamma: \"\\u03B3\",\n delta: \"\\u03B4\",\n epsilon: \"\\u03B5\",\n zeta: \"\\u03B6\",\n eta: \"\\u03B7\",\n theta: \"\\u03B8\",\n iota: \"\\u03B9\",\n kappa: \"\\u03BA\",\n lambda: \"\\u03BB\",\n mu: \"\\u03BC\",\n nu: \"\\u03BD\",\n xi: \"\\u03BE\",\n omicron: \"\\u03BF\",\n pi: \"\\u03C0\",\n rho: \"\\u03C1\",\n sigmaf: \"\\u03C2\",\n sigma: \"\\u03C3\",\n tau: \"\\u03C4\",\n upsilon: \"\\u03C5\",\n phi: \"\\u03C6\",\n chi: \"\\u03C7\",\n psi: \"\\u03C8\",\n omega: \"\\u03C9\",\n thetasym: \"\\u03D1\",\n upsih: \"\\u03D2\",\n piv: \"\\u03D6\",\n ensp: \"\\u2002\",\n emsp: \"\\u2003\",\n thinsp: \"\\u2009\",\n zwnj: \"\\u200C\",\n zwj: \"\\u200D\",\n lrm: \"\\u200E\",\n rlm: \"\\u200F\",\n ndash: \"\\u2013\",\n mdash: \"\\u2014\",\n lsquo: \"\\u2018\",\n rsquo: \"\\u2019\",\n sbquo: \"\\u201A\",\n ldquo: \"\\u201C\",\n rdquo: \"\\u201D\",\n bdquo: \"\\u201E\",\n dagger: \"\\u2020\",\n Dagger: \"\\u2021\",\n bull: \"\\u2022\",\n hellip: \"\\u2026\",\n permil: \"\\u2030\",\n prime: \"\\u2032\",\n Prime: \"\\u2033\",\n lsaquo: \"\\u2039\",\n rsaquo: \"\\u203A\",\n oline: \"\\u203E\",\n frasl: \"\\u2044\",\n euro: \"\\u20AC\",\n image: \"\\u2111\",\n weierp: \"\\u2118\",\n real: \"\\u211C\",\n trade: \"\\u2122\",\n alefsym: \"\\u2135\",\n larr: \"\\u2190\",\n uarr: \"\\u2191\",\n rarr: \"\\u2192\",\n darr: \"\\u2193\",\n harr: \"\\u2194\",\n crarr: \"\\u21B5\",\n lArr: \"\\u21D0\",\n uArr: \"\\u21D1\",\n rArr: \"\\u21D2\",\n dArr: \"\\u21D3\",\n hArr: \"\\u21D4\",\n forall: \"\\u2200\",\n part: \"\\u2202\",\n exist: \"\\u2203\",\n empty: \"\\u2205\",\n nabla: \"\\u2207\",\n isin: \"\\u2208\",\n notin: \"\\u2209\",\n ni: \"\\u220B\",\n prod: \"\\u220F\",\n sum: \"\\u2211\",\n minus: \"\\u2212\",\n lowast: \"\\u2217\",\n radic: \"\\u221A\",\n prop: \"\\u221D\",\n infin: \"\\u221E\",\n ang: \"\\u2220\",\n and: \"\\u2227\",\n or: \"\\u2228\",\n cap: \"\\u2229\",\n cup: \"\\u222A\",\n int: \"\\u222B\",\n there4: \"\\u2234\",\n sim: \"\\u223C\",\n cong: \"\\u2245\",\n asymp: \"\\u2248\",\n ne: \"\\u2260\",\n equiv: \"\\u2261\",\n le: \"\\u2264\",\n ge: \"\\u2265\",\n sub: \"\\u2282\",\n sup: \"\\u2283\",\n nsub: \"\\u2284\",\n sube: \"\\u2286\",\n supe: \"\\u2287\",\n oplus: \"\\u2295\",\n otimes: \"\\u2297\",\n perp: \"\\u22A5\",\n sdot: \"\\u22C5\",\n lceil: \"\\u2308\",\n rceil: \"\\u2309\",\n lfloor: \"\\u230A\",\n rfloor: \"\\u230B\",\n lang: \"\\u2329\",\n rang: \"\\u232A\",\n loz: \"\\u25CA\",\n spades: \"\\u2660\",\n clubs: \"\\u2663\",\n hearts: \"\\u2665\",\n diams: \"\\u2666\",\n};\nexport default entities;\n","// @flow\n\nimport * as charCodes from \"charcodes\";\n\nimport XHTMLEntities from \"./xhtml\";\nimport type Parser from \"../../parser\";\nimport type { ExpressionErrors } from \"../../parser/util\";\nimport { TokenType, types as tt } from \"../../tokenizer/types\";\nimport { TokContext, types as tc } from \"../../tokenizer/context\";\nimport * as N from \"../../types\";\nimport { isIdentifierChar, isIdentifierStart } from \"../../util/identifier\";\nimport type { Position } from \"../../util/location\";\nimport { isNewLine } from \"../../util/whitespace\";\n\nconst HEX_NUMBER = /^[\\da-fA-F]+$/;\nconst DECIMAL_NUMBER = /^\\d+$/;\n\n// Be aware that this file is always executed and not only when the plugin is enabled.\n// Therefore this contexts and tokens do always exist.\ntc.j_oTag = new TokContext(\"<tag\", false);\ntc.j_cTag = new TokContext(\"</tag\", false);\ntc.j_expr = new TokContext(\"<tag>...</tag>\", true, true);\n\ntt.jsxName = new TokenType(\"jsxName\");\ntt.jsxText = new TokenType(\"jsxText\", { beforeExpr: true });\ntt.jsxTagStart = new TokenType(\"jsxTagStart\", { startsExpr: true });\ntt.jsxTagEnd = new TokenType(\"jsxTagEnd\");\n\ntt.jsxTagStart.updateContext = function() {\n this.state.context.push(tc.j_expr); // treat as beginning of JSX expression\n this.state.context.push(tc.j_oTag); // start opening tag context\n this.state.exprAllowed = false;\n};\n\ntt.jsxTagEnd.updateContext = function(prevType) {\n const out = this.state.context.pop();\n if ((out === tc.j_oTag && prevType === tt.slash) || out === tc.j_cTag) {\n this.state.context.pop();\n this.state.exprAllowed = this.curContext() === tc.j_expr;\n } else {\n this.state.exprAllowed = true;\n }\n};\n\nfunction isFragment(object: ?N.JSXElement): boolean {\n return object\n ? object.type === \"JSXOpeningFragment\" ||\n object.type === \"JSXClosingFragment\"\n : false;\n}\n\n// Transforms JSX element name to string.\n\nfunction getQualifiedJSXName(\n object: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression,\n): string {\n if (object.type === \"JSXIdentifier\") {\n return object.name;\n }\n\n if (object.type === \"JSXNamespacedName\") {\n return object.namespace.name + \":\" + object.name.name;\n }\n\n if (object.type === \"JSXMemberExpression\") {\n return (\n getQualifiedJSXName(object.object) +\n \".\" +\n getQualifiedJSXName(object.property)\n );\n }\n\n // istanbul ignore next\n throw new Error(\"Node had unexpected type: \" + object.type);\n}\n\nexport default (superClass: Class<Parser>): Class<Parser> =>\n class extends superClass {\n // Reads inline JSX contents token.\n\n jsxReadToken(): void {\n let out = \"\";\n let chunkStart = this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(this.state.start, \"Unterminated JSX contents\");\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n\n switch (ch) {\n case charCodes.lessThan:\n case charCodes.leftCurlyBrace:\n if (this.state.pos === this.state.start) {\n if (ch === charCodes.lessThan && this.state.exprAllowed) {\n ++this.state.pos;\n return this.finishToken(tt.jsxTagStart);\n }\n return super.getTokenFromCode(ch);\n }\n out += this.input.slice(chunkStart, this.state.pos);\n return this.finishToken(tt.jsxText, out);\n\n case charCodes.ampersand:\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n break;\n\n default:\n if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(true);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n }\n }\n\n jsxReadNewLine(normalizeCRLF: boolean): string {\n const ch = this.input.charCodeAt(this.state.pos);\n let out;\n ++this.state.pos;\n if (\n ch === charCodes.carriageReturn &&\n this.input.charCodeAt(this.state.pos) === charCodes.lineFeed\n ) {\n ++this.state.pos;\n out = normalizeCRLF ? \"\\n\" : \"\\r\\n\";\n } else {\n out = String.fromCharCode(ch);\n }\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n\n return out;\n }\n\n jsxReadString(quote: number): void {\n let out = \"\";\n let chunkStart = ++this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(this.state.start, \"Unterminated string constant\");\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n if (ch === quote) break;\n if (ch === charCodes.ampersand) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(false);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n out += this.input.slice(chunkStart, this.state.pos++);\n return this.finishToken(tt.string, out);\n }\n\n jsxReadEntity(): string {\n let str = \"\";\n let count = 0;\n let entity;\n let ch = this.input[this.state.pos];\n\n const startPos = ++this.state.pos;\n while (this.state.pos < this.length && count++ < 10) {\n ch = this.input[this.state.pos++];\n if (ch === \";\") {\n if (str[0] === \"#\") {\n if (str[1] === \"x\") {\n str = str.substr(2);\n if (HEX_NUMBER.test(str)) {\n entity = String.fromCodePoint(parseInt(str, 16));\n }\n } else {\n str = str.substr(1);\n if (DECIMAL_NUMBER.test(str)) {\n entity = String.fromCodePoint(parseInt(str, 10));\n }\n }\n } else {\n entity = XHTMLEntities[str];\n }\n break;\n }\n str += ch;\n }\n if (!entity) {\n this.state.pos = startPos;\n return \"&\";\n }\n return entity;\n }\n\n // Read a JSX identifier (valid tag or attribute name).\n //\n // Optimized version since JSX identifiers can\"t contain\n // escape characters and so can be read as single slice.\n // Also assumes that first character was already checked\n // by isIdentifierStart in readToken.\n\n jsxReadWord(): void {\n let ch;\n const start = this.state.pos;\n do {\n ch = this.input.charCodeAt(++this.state.pos);\n } while (isIdentifierChar(ch) || ch === charCodes.dash);\n return this.finishToken(\n tt.jsxName,\n this.input.slice(start, this.state.pos),\n );\n }\n\n // Parse next token as JSX identifier\n\n jsxParseIdentifier(): N.JSXIdentifier {\n const node = this.startNode();\n if (this.match(tt.jsxName)) {\n node.name = this.state.value;\n } else if (this.state.type.keyword) {\n node.name = this.state.type.keyword;\n } else {\n this.unexpected();\n }\n this.next();\n return this.finishNode(node, \"JSXIdentifier\");\n }\n\n // Parse namespaced identifier.\n\n jsxParseNamespacedName(): N.JSXNamespacedName {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const name = this.jsxParseIdentifier();\n if (!this.eat(tt.colon)) return name;\n\n const node = this.startNodeAt(startPos, startLoc);\n node.namespace = name;\n node.name = this.jsxParseIdentifier();\n return this.finishNode(node, \"JSXNamespacedName\");\n }\n\n // Parses element name in any form - namespaced, member\n // or single identifier.\n\n jsxParseElementName():\n | N.JSXIdentifier\n | N.JSXNamespacedName\n | N.JSXMemberExpression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let node = this.jsxParseNamespacedName();\n if (node.type === \"JSXNamespacedName\") {\n return node;\n }\n while (this.eat(tt.dot)) {\n const newNode = this.startNodeAt(startPos, startLoc);\n newNode.object = node;\n newNode.property = this.jsxParseIdentifier();\n node = this.finishNode(newNode, \"JSXMemberExpression\");\n }\n return node;\n }\n\n // Parses any type of JSX attribute value.\n\n jsxParseAttributeValue(): N.Expression {\n let node;\n switch (this.state.type) {\n case tt.braceL:\n node = this.startNode();\n this.next();\n node = this.jsxParseExpressionContainer(node);\n if (node.expression.type === \"JSXEmptyExpression\") {\n this.raise(\n node.start,\n \"JSX attributes must only be assigned a non-empty expression\",\n );\n }\n return node;\n\n case tt.jsxTagStart:\n case tt.string:\n return this.parseExprAtom();\n\n default:\n throw this.raise(\n this.state.start,\n \"JSX value should be either an expression or a quoted JSX text\",\n );\n }\n }\n\n // JSXEmptyExpression is unique type since it doesn't actually parse anything,\n // and so it should start at the end of last read token (left brace) and finish\n // at the beginning of the next one (right brace).\n\n jsxParseEmptyExpression(): N.JSXEmptyExpression {\n const node = this.startNodeAt(\n this.state.lastTokEnd,\n this.state.lastTokEndLoc,\n );\n return this.finishNodeAt(\n node,\n \"JSXEmptyExpression\",\n this.state.start,\n this.state.startLoc,\n );\n }\n\n // Parse JSX spread child\n\n jsxParseSpreadChild(node: N.JSXSpreadChild): N.JSXSpreadChild {\n this.next(); // ellipsis\n node.expression = this.parseExpression();\n this.expect(tt.braceR);\n\n return this.finishNode(node, \"JSXSpreadChild\");\n }\n\n // Parses JSX expression enclosed into curly brackets.\n\n jsxParseExpressionContainer(\n node: N.JSXExpressionContainer,\n ): N.JSXExpressionContainer {\n if (this.match(tt.braceR)) {\n node.expression = this.jsxParseEmptyExpression();\n } else {\n node.expression = this.parseExpression();\n }\n this.expect(tt.braceR);\n return this.finishNode(node, \"JSXExpressionContainer\");\n }\n\n // Parses following JSX attribute name-value pair.\n\n jsxParseAttribute(): N.JSXAttribute {\n const node = this.startNode();\n if (this.eat(tt.braceL)) {\n this.expect(tt.ellipsis);\n node.argument = this.parseMaybeAssign();\n this.expect(tt.braceR);\n return this.finishNode(node, \"JSXSpreadAttribute\");\n }\n node.name = this.jsxParseNamespacedName();\n node.value = this.eat(tt.eq) ? this.jsxParseAttributeValue() : null;\n return this.finishNode(node, \"JSXAttribute\");\n }\n\n // Parses JSX opening tag starting after \"<\".\n\n jsxParseOpeningElementAt(\n startPos: number,\n startLoc: Position,\n ): N.JSXOpeningElement {\n const node = this.startNodeAt(startPos, startLoc);\n if (this.match(tt.jsxTagEnd)) {\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, \"JSXOpeningFragment\");\n }\n node.name = this.jsxParseElementName();\n return this.jsxParseOpeningElementAfterName(node);\n }\n\n jsxParseOpeningElementAfterName(\n node: N.JSXOpeningElement,\n ): N.JSXOpeningElement {\n const attributes: N.JSXAttribute[] = [];\n while (!this.match(tt.slash) && !this.match(tt.jsxTagEnd)) {\n attributes.push(this.jsxParseAttribute());\n }\n node.attributes = attributes;\n node.selfClosing = this.eat(tt.slash);\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, \"JSXOpeningElement\");\n }\n\n // Parses JSX closing tag starting after \"</\".\n\n jsxParseClosingElementAt(\n startPos: number,\n startLoc: Position,\n ): N.JSXClosingElement {\n const node = this.startNodeAt(startPos, startLoc);\n if (this.match(tt.jsxTagEnd)) {\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, \"JSXClosingFragment\");\n }\n node.name = this.jsxParseElementName();\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, \"JSXClosingElement\");\n }\n\n // Parses entire JSX element, including it\"s opening tag\n // (starting after \"<\"), attributes, contents and closing tag.\n\n jsxParseElementAt(startPos: number, startLoc: Position): N.JSXElement {\n const node = this.startNodeAt(startPos, startLoc);\n const children = [];\n const openingElement = this.jsxParseOpeningElementAt(startPos, startLoc);\n let closingElement = null;\n\n if (!openingElement.selfClosing) {\n contents: for (;;) {\n switch (this.state.type) {\n case tt.jsxTagStart:\n startPos = this.state.start;\n startLoc = this.state.startLoc;\n this.next();\n if (this.eat(tt.slash)) {\n closingElement = this.jsxParseClosingElementAt(\n startPos,\n startLoc,\n );\n break contents;\n }\n children.push(this.jsxParseElementAt(startPos, startLoc));\n break;\n\n case tt.jsxText:\n children.push(this.parseExprAtom());\n break;\n\n case tt.braceL: {\n const node = this.startNode();\n this.next();\n if (this.match(tt.ellipsis)) {\n children.push(this.jsxParseSpreadChild(node));\n } else {\n children.push(this.jsxParseExpressionContainer(node));\n }\n\n break;\n }\n // istanbul ignore next - should never happen\n default:\n throw this.unexpected();\n }\n }\n\n if (isFragment(openingElement) && !isFragment(closingElement)) {\n this.raise(\n // $FlowIgnore\n closingElement.start,\n \"Expected corresponding JSX closing tag for <>\",\n );\n } else if (!isFragment(openingElement) && isFragment(closingElement)) {\n this.raise(\n // $FlowIgnore\n closingElement.start,\n \"Expected corresponding JSX closing tag for <\" +\n getQualifiedJSXName(openingElement.name) +\n \">\",\n );\n } else if (!isFragment(openingElement) && !isFragment(closingElement)) {\n if (\n // $FlowIgnore\n getQualifiedJSXName(closingElement.name) !==\n getQualifiedJSXName(openingElement.name)\n ) {\n this.raise(\n // $FlowIgnore\n closingElement.start,\n \"Expected corresponding JSX closing tag for <\" +\n getQualifiedJSXName(openingElement.name) +\n \">\",\n );\n }\n }\n }\n\n if (isFragment(openingElement)) {\n node.openingFragment = openingElement;\n node.closingFragment = closingElement;\n } else {\n node.openingElement = openingElement;\n node.closingElement = closingElement;\n }\n node.children = children;\n if (this.isRelational(\"<\")) {\n throw this.raise(\n this.state.start,\n \"Adjacent JSX elements must be wrapped in an enclosing tag. \" +\n \"Did you want a JSX fragment <>...</>?\",\n );\n }\n\n return isFragment(openingElement)\n ? this.finishNode(node, \"JSXFragment\")\n : this.finishNode(node, \"JSXElement\");\n }\n\n // Parses entire JSX element from current position.\n\n jsxParseElement(): N.JSXElement {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n this.next();\n return this.jsxParseElementAt(startPos, startLoc);\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n parseExprAtom(refExpressionErrors: ?ExpressionErrors): N.Expression {\n if (this.match(tt.jsxText)) {\n return this.parseLiteral(this.state.value, \"JSXText\");\n } else if (this.match(tt.jsxTagStart)) {\n return this.jsxParseElement();\n } else if (\n this.isRelational(\"<\") &&\n this.input.charCodeAt(this.state.pos) !== charCodes.exclamationMark\n ) {\n // In case we encounter an lt token here it will always be the start of\n // jsx as the lt sign is not allowed in places that expect an expression\n this.finishToken(tt.jsxTagStart);\n return this.jsxParseElement();\n } else {\n return super.parseExprAtom(refExpressionErrors);\n }\n }\n\n getTokenFromCode(code: number): void {\n if (this.state.inPropertyName) return super.getTokenFromCode(code);\n\n const context = this.curContext();\n\n if (context === tc.j_expr) {\n return this.jsxReadToken();\n }\n\n if (context === tc.j_oTag || context === tc.j_cTag) {\n if (isIdentifierStart(code)) {\n return this.jsxReadWord();\n }\n\n if (code === charCodes.greaterThan) {\n ++this.state.pos;\n return this.finishToken(tt.jsxTagEnd);\n }\n\n if (\n (code === charCodes.quotationMark || code === charCodes.apostrophe) &&\n context === tc.j_oTag\n ) {\n return this.jsxReadString(code);\n }\n }\n\n if (\n code === charCodes.lessThan &&\n this.state.exprAllowed &&\n this.input.charCodeAt(this.state.pos + 1) !== charCodes.exclamationMark\n ) {\n ++this.state.pos;\n return this.finishToken(tt.jsxTagStart);\n }\n\n return super.getTokenFromCode(code);\n }\n\n updateContext(prevType: TokenType): void {\n if (this.match(tt.braceL)) {\n const curContext = this.curContext();\n if (curContext === tc.j_oTag) {\n this.state.context.push(tc.braceExpression);\n } else if (curContext === tc.j_expr) {\n this.state.context.push(tc.templateQuasi);\n } else {\n super.updateContext(prevType);\n }\n this.state.exprAllowed = true;\n } else if (this.match(tt.slash) && prevType === tt.jsxTagStart) {\n this.state.context.length -= 2; // do not consider JSX expr -> JSX open tag -> ... anymore\n this.state.context.push(tc.j_cTag); // reconsider as closing tag context\n this.state.exprAllowed = false;\n } else {\n return super.updateContext(prevType);\n }\n }\n };\n","// @flow\nimport {\n SCOPE_ARROW,\n SCOPE_ASYNC,\n SCOPE_DIRECT_SUPER,\n SCOPE_FUNCTION,\n SCOPE_GENERATOR,\n SCOPE_SIMPLE_CATCH,\n SCOPE_SUPER,\n SCOPE_PROGRAM,\n SCOPE_VAR,\n SCOPE_CLASS,\n BIND_SCOPE_FUNCTION,\n BIND_SCOPE_VAR,\n BIND_SCOPE_LEXICAL,\n BIND_KIND_VALUE,\n type ScopeFlags,\n type BindingTypes,\n} from \"./scopeflags\";\nimport * as N from \"../types\";\n\n// Start an AST node, attaching a start offset.\nexport class Scope {\n flags: ScopeFlags;\n // A list of var-declared names in the current lexical scope\n var: string[] = [];\n // A list of lexically-declared names in the current lexical scope\n lexical: string[] = [];\n // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n functions: string[] = [];\n\n constructor(flags: ScopeFlags) {\n this.flags = flags;\n }\n}\n\ntype raiseFunction = (number, string) => void;\n\n// The functions in this module keep track of declared variables in the\n// current scope in order to detect duplicate variable names.\nexport default class ScopeHandler<IScope: Scope = Scope> {\n scopeStack: Array<IScope> = [];\n raise: raiseFunction;\n inModule: boolean;\n undefinedExports: Map<string, number> = new Map();\n undefinedPrivateNames: Map<string, number> = new Map();\n\n constructor(raise: raiseFunction, inModule: boolean) {\n this.raise = raise;\n this.inModule = inModule;\n }\n\n get inFunction() {\n return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0;\n }\n get inGenerator() {\n return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0;\n }\n // the following loop always exit because SCOPE_PROGRAM is SCOPE_VAR\n // $FlowIgnore\n get inAsync() {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const scope = this.scopeStack[i];\n const isVarScope = scope.flags & SCOPE_VAR;\n const isClassScope = scope.flags & SCOPE_CLASS;\n if (isClassScope && !isVarScope) {\n // If it meets a class scope before a var scope, it means it is a class property initializer\n // which does not have an [Await] parameter in its grammar\n return false;\n } else if (isVarScope) {\n return (scope.flags & SCOPE_ASYNC) > 0;\n }\n }\n }\n get allowSuper() {\n return (this.currentThisScope().flags & SCOPE_SUPER) > 0;\n }\n get allowDirectSuper() {\n return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0;\n }\n get inClass() {\n return (this.currentThisScope().flags & SCOPE_CLASS) > 0;\n }\n get inNonArrowFunction() {\n return (this.currentThisScope().flags & SCOPE_FUNCTION) > 0;\n }\n get treatFunctionsAsVar() {\n return this.treatFunctionsAsVarInScope(this.currentScope());\n }\n\n createScope(flags: ScopeFlags): Scope {\n return new Scope(flags);\n }\n // This method will be overwritten by subclasses\n +createScope: (flags: ScopeFlags) => IScope;\n\n enter(flags: ScopeFlags) {\n this.scopeStack.push(this.createScope(flags));\n }\n\n exit() {\n this.scopeStack.pop();\n }\n\n // The spec says:\n // > At the top level of a function, or script, function declarations are\n // > treated like var declarations rather than like lexical declarations.\n treatFunctionsAsVarInScope(scope: IScope): boolean {\n return !!(\n scope.flags & SCOPE_FUNCTION ||\n (!this.inModule && scope.flags & SCOPE_PROGRAM)\n );\n }\n\n declareName(name: string, bindingType: BindingTypes, pos: number) {\n let scope = this.currentScope();\n if (bindingType & BIND_SCOPE_LEXICAL || bindingType & BIND_SCOPE_FUNCTION) {\n this.checkRedeclarationInScope(scope, name, bindingType, pos);\n\n if (bindingType & BIND_SCOPE_FUNCTION) {\n scope.functions.push(name);\n } else {\n scope.lexical.push(name);\n }\n\n if (bindingType & BIND_SCOPE_LEXICAL) {\n this.maybeExportDefined(scope, name);\n }\n } else if (bindingType & BIND_SCOPE_VAR) {\n for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n scope = this.scopeStack[i];\n this.checkRedeclarationInScope(scope, name, bindingType, pos);\n scope.var.push(name);\n this.maybeExportDefined(scope, name);\n\n if (scope.flags & SCOPE_VAR) break;\n }\n }\n if (this.inModule && scope.flags & SCOPE_PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n maybeExportDefined(scope: IScope, name: string) {\n if (this.inModule && scope.flags & SCOPE_PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n checkRedeclarationInScope(\n scope: IScope,\n name: string,\n bindingType: BindingTypes,\n pos: number,\n ) {\n if (this.isRedeclaredInScope(scope, name, bindingType)) {\n this.raise(pos, `Identifier '${name}' has already been declared`);\n }\n }\n\n isRedeclaredInScope(\n scope: IScope,\n name: string,\n bindingType: BindingTypes,\n ): boolean {\n if (!(bindingType & BIND_KIND_VALUE)) return false;\n\n if (bindingType & BIND_SCOPE_LEXICAL) {\n return (\n scope.lexical.indexOf(name) > -1 ||\n scope.functions.indexOf(name) > -1 ||\n scope.var.indexOf(name) > -1\n );\n }\n\n if (bindingType & BIND_SCOPE_FUNCTION) {\n return (\n scope.lexical.indexOf(name) > -1 ||\n (!this.treatFunctionsAsVarInScope(scope) &&\n scope.var.indexOf(name) > -1)\n );\n }\n\n return (\n (scope.lexical.indexOf(name) > -1 &&\n !(scope.flags & SCOPE_SIMPLE_CATCH && scope.lexical[0] === name)) ||\n (!this.treatFunctionsAsVarInScope(scope) &&\n scope.functions.indexOf(name) > -1)\n );\n }\n\n checkLocalExport(id: N.Identifier) {\n if (\n this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n this.scopeStack[0].var.indexOf(id.name) === -1 &&\n // In strict mode, scope.functions will always be empty.\n // Modules are strict by default, but the `scriptMode` option\n // can overwrite this behavior.\n this.scopeStack[0].functions.indexOf(id.name) === -1\n ) {\n this.undefinedExports.set(id.name, id.start);\n }\n }\n\n currentScope(): IScope {\n return this.scopeStack[this.scopeStack.length - 1];\n }\n\n // $FlowIgnore\n currentVarScope(): IScope {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const scope = this.scopeStack[i];\n if (scope.flags & SCOPE_VAR) {\n return scope;\n }\n }\n }\n\n // Could be useful for `arguments`, `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\n // $FlowIgnore\n currentThisScope(): IScope {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const scope = this.scopeStack[i];\n if (\n (scope.flags & SCOPE_VAR || scope.flags & SCOPE_CLASS) &&\n !(scope.flags & SCOPE_ARROW)\n ) {\n return scope;\n }\n }\n }\n}\n","// @flow\n\nimport ScopeHandler, { Scope } from \"../../util/scope\";\nimport {\n BIND_KIND_TYPE,\n BIND_FLAGS_TS_ENUM,\n BIND_FLAGS_TS_CONST_ENUM,\n BIND_FLAGS_TS_EXPORT_ONLY,\n BIND_KIND_VALUE,\n BIND_FLAGS_CLASS,\n type ScopeFlags,\n type BindingTypes,\n} from \"../../util/scopeflags\";\nimport * as N from \"../../types\";\n\nclass TypeScriptScope extends Scope {\n types: string[] = [];\n\n // enums (which are also in .types)\n enums: string[] = [];\n\n // const enums (which are also in .enums and .types)\n constEnums: string[] = [];\n\n // classes (which are also in .lexical) and interface (which are also in .types)\n classes: string[] = [];\n\n // namespaces and ambient functions (or classes) are too difficult to track,\n // especially without type analysis.\n // We need to track them anyway, to avoid \"X is not defined\" errors\n // when exporting them.\n exportOnlyBindings: string[] = [];\n}\n\n// See https://github.com/babel/babel/pull/9766#discussion_r268920730 for an\n// explanation of how typescript handles scope.\n\nexport default class TypeScriptScopeHandler extends ScopeHandler<TypeScriptScope> {\n createScope(flags: ScopeFlags): TypeScriptScope {\n return new TypeScriptScope(flags);\n }\n\n declareName(name: string, bindingType: BindingTypes, pos: number) {\n const scope = this.currentScope();\n if (bindingType & BIND_FLAGS_TS_EXPORT_ONLY) {\n this.maybeExportDefined(scope, name);\n scope.exportOnlyBindings.push(name);\n return;\n }\n\n super.declareName(...arguments);\n\n if (bindingType & BIND_KIND_TYPE) {\n if (!(bindingType & BIND_KIND_VALUE)) {\n // \"Value\" bindings have already been registered by the superclass.\n this.checkRedeclarationInScope(scope, name, bindingType, pos);\n this.maybeExportDefined(scope, name);\n }\n scope.types.push(name);\n }\n if (bindingType & BIND_FLAGS_TS_ENUM) scope.enums.push(name);\n if (bindingType & BIND_FLAGS_TS_CONST_ENUM) scope.constEnums.push(name);\n if (bindingType & BIND_FLAGS_CLASS) scope.classes.push(name);\n }\n\n isRedeclaredInScope(\n scope: TypeScriptScope,\n name: string,\n bindingType: BindingTypes,\n ): boolean {\n if (scope.enums.indexOf(name) > -1) {\n if (bindingType & BIND_FLAGS_TS_ENUM) {\n // Enums can be merged with other enums if they are both\n // const or both non-const.\n const isConst = !!(bindingType & BIND_FLAGS_TS_CONST_ENUM);\n const wasConst = scope.constEnums.indexOf(name) > -1;\n return isConst !== wasConst;\n }\n return true;\n }\n if (bindingType & BIND_FLAGS_CLASS && scope.classes.indexOf(name) > -1) {\n if (scope.lexical.indexOf(name) > -1) {\n // Classes can be merged with interfaces\n return !!(bindingType & BIND_KIND_VALUE);\n } else {\n // Interface can be merged with other classes or interfaces\n return false;\n }\n }\n if (bindingType & BIND_KIND_TYPE && scope.types.indexOf(name) > -1) {\n return true;\n }\n\n return super.isRedeclaredInScope(...arguments);\n }\n\n checkLocalExport(id: N.Identifier) {\n if (\n this.scopeStack[0].types.indexOf(id.name) === -1 &&\n this.scopeStack[0].exportOnlyBindings.indexOf(id.name) === -1\n ) {\n super.checkLocalExport(id);\n }\n }\n}\n","// @flow\n\n/*:: declare var invariant; */\n\nimport type { TokenType } from \"../../tokenizer/types\";\nimport type State from \"../../tokenizer/state\";\nimport { types as tt } from \"../../tokenizer/types\";\nimport { types as ct } from \"../../tokenizer/context\";\nimport * as N from \"../../types\";\nimport type { Pos, Position } from \"../../util/location\";\nimport type Parser from \"../../parser\";\nimport {\n type BindingTypes,\n BIND_NONE,\n SCOPE_TS_MODULE,\n SCOPE_OTHER,\n BIND_TS_ENUM,\n BIND_TS_CONST_ENUM,\n BIND_TS_TYPE,\n BIND_TS_INTERFACE,\n BIND_TS_AMBIENT,\n BIND_TS_NAMESPACE,\n BIND_CLASS,\n BIND_LEXICAL,\n} from \"../../util/scopeflags\";\nimport TypeScriptScopeHandler from \"./scope\";\nimport * as charCodes from \"charcodes\";\nimport type { ExpressionErrors } from \"../../parser/util\";\n\ntype TsModifier =\n | \"readonly\"\n | \"abstract\"\n | \"declare\"\n | \"static\"\n | \"public\"\n | \"private\"\n | \"protected\";\n\nfunction nonNull<T>(x: ?T): T {\n if (x == null) {\n // $FlowIgnore\n throw new Error(`Unexpected ${x} value.`);\n }\n return x;\n}\n\nfunction assert(x: boolean): void {\n if (!x) {\n throw new Error(\"Assert fail\");\n }\n}\n\ntype ParsingContext =\n | \"EnumMembers\"\n | \"HeritageClauseElement\"\n | \"TupleElementTypes\"\n | \"TypeMembers\"\n | \"TypeParametersOrArguments\";\n\n// Doesn't handle \"void\" or \"null\" because those are keywords, not identifiers.\nfunction keywordTypeFromName(\n value: string,\n): N.TsKeywordTypeType | typeof undefined {\n switch (value) {\n case \"any\":\n return \"TSAnyKeyword\";\n case \"boolean\":\n return \"TSBooleanKeyword\";\n case \"bigint\":\n return \"TSBigIntKeyword\";\n case \"never\":\n return \"TSNeverKeyword\";\n case \"number\":\n return \"TSNumberKeyword\";\n case \"object\":\n return \"TSObjectKeyword\";\n case \"string\":\n return \"TSStringKeyword\";\n case \"symbol\":\n return \"TSSymbolKeyword\";\n case \"undefined\":\n return \"TSUndefinedKeyword\";\n case \"unknown\":\n return \"TSUnknownKeyword\";\n default:\n return undefined;\n }\n}\n\nexport default (superClass: Class<Parser>): Class<Parser> =>\n class extends superClass {\n getScopeHandler(): Class<TypeScriptScopeHandler> {\n return TypeScriptScopeHandler;\n }\n\n tsIsIdentifier(): boolean {\n // TODO: actually a bit more complex in TypeScript, but shouldn't matter.\n // See https://github.com/Microsoft/TypeScript/issues/15008\n return this.match(tt.name);\n }\n\n tsNextTokenCanFollowModifier() {\n // Note: TypeScript's implementation is much more complicated because\n // more things are considered modifiers there.\n // This implementation only handles modifiers not handled by @babel/parser itself. And \"static\".\n // TODO: Would be nice to avoid lookahead. Want a hasLineBreakUpNext() method...\n this.next();\n return (\n !this.hasPrecedingLineBreak() &&\n !this.match(tt.parenL) &&\n !this.match(tt.parenR) &&\n !this.match(tt.colon) &&\n !this.match(tt.eq) &&\n !this.match(tt.question) &&\n !this.match(tt.bang)\n );\n }\n\n /** Parses a modifier matching one the given modifier names. */\n tsParseModifier<T: TsModifier>(allowedModifiers: T[]): ?T {\n if (!this.match(tt.name)) {\n return undefined;\n }\n\n const modifier = this.state.value;\n if (\n allowedModifiers.indexOf(modifier) !== -1 &&\n this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))\n ) {\n return modifier;\n }\n return undefined;\n }\n\n /** Parses a list of modifiers, in any order.\n * If you need a specific order, you must call this function multiple times:\n * this.tsParseModifiers([\"public\"]);\n * this.tsParseModifiers([\"abstract\", \"readonly\"]);\n */\n tsParseModifiers<T: TsModifier>(\n allowedModifiers: T[],\n ): { [key: TsModifier]: ?true, __proto__: null } {\n const modifiers = Object.create(null);\n\n while (true) {\n const startPos = this.state.start;\n const modifier: ?T = this.tsParseModifier(allowedModifiers);\n\n if (!modifier) break;\n\n if (Object.hasOwnProperty.call(modifiers, modifier)) {\n this.raise(startPos, `Duplicate modifier: '${modifier}'`);\n }\n modifiers[modifier] = true;\n }\n\n return modifiers;\n }\n\n tsIsListTerminator(kind: ParsingContext): boolean {\n switch (kind) {\n case \"EnumMembers\":\n case \"TypeMembers\":\n return this.match(tt.braceR);\n case \"HeritageClauseElement\":\n return this.match(tt.braceL);\n case \"TupleElementTypes\":\n return this.match(tt.bracketR);\n case \"TypeParametersOrArguments\":\n return this.isRelational(\">\");\n }\n\n throw new Error(\"Unreachable\");\n }\n\n tsParseList<T: N.Node>(kind: ParsingContext, parseElement: () => T): T[] {\n const result: T[] = [];\n while (!this.tsIsListTerminator(kind)) {\n // Skipping \"parseListElement\" from the TS source since that's just for error handling.\n result.push(parseElement());\n }\n return result;\n }\n\n tsParseDelimitedList<T: N.Node>(\n kind: ParsingContext,\n parseElement: () => T,\n ): T[] {\n return nonNull(\n this.tsParseDelimitedListWorker(\n kind,\n parseElement,\n /* expectSuccess */ true,\n ),\n );\n }\n\n /**\n * If !expectSuccess, returns undefined instead of failing to parse.\n * If expectSuccess, parseElement should always return a defined value.\n */\n tsParseDelimitedListWorker<T: N.Node>(\n kind: ParsingContext,\n parseElement: () => ?T,\n expectSuccess: boolean,\n ): ?(T[]) {\n const result = [];\n\n while (true) {\n if (this.tsIsListTerminator(kind)) {\n break;\n }\n\n const element = parseElement();\n if (element == null) {\n return undefined;\n }\n result.push(element);\n\n if (this.eat(tt.comma)) {\n continue;\n }\n\n if (this.tsIsListTerminator(kind)) {\n break;\n }\n\n if (expectSuccess) {\n // This will fail with an error about a missing comma\n this.expect(tt.comma);\n }\n return undefined;\n }\n\n return result;\n }\n\n tsParseBracketedList<T: N.Node>(\n kind: ParsingContext,\n parseElement: () => T,\n bracket: boolean,\n skipFirstToken: boolean,\n ): T[] {\n if (!skipFirstToken) {\n if (bracket) {\n this.expect(tt.bracketL);\n } else {\n this.expectRelational(\"<\");\n }\n }\n\n const result = this.tsParseDelimitedList(kind, parseElement);\n\n if (bracket) {\n this.expect(tt.bracketR);\n } else {\n this.expectRelational(\">\");\n }\n\n return result;\n }\n\n tsParseImportType(): N.TsImportType {\n const node: N.TsImportType = this.startNode();\n this.expect(tt._import);\n this.expect(tt.parenL);\n if (!this.match(tt.string)) {\n this.raise(\n this.state.start,\n \"Argument in a type import must be a string literal\",\n );\n }\n\n // For compatibility to estree we cannot call parseLiteral directly here\n node.argument = this.parseExprAtom();\n this.expect(tt.parenR);\n\n if (this.eat(tt.dot)) {\n node.qualifier = this.tsParseEntityName(/* allowReservedWords */ true);\n }\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n return this.finishNode(node, \"TSImportType\");\n }\n\n tsParseEntityName(allowReservedWords: boolean): N.TsEntityName {\n let entity: N.TsEntityName = this.parseIdentifier();\n while (this.eat(tt.dot)) {\n const node: N.TsQualifiedName = this.startNodeAtNode(entity);\n node.left = entity;\n node.right = this.parseIdentifier(allowReservedWords);\n entity = this.finishNode(node, \"TSQualifiedName\");\n }\n return entity;\n }\n\n tsParseTypeReference(): N.TsTypeReference {\n const node: N.TsTypeReference = this.startNode();\n node.typeName = this.tsParseEntityName(/* allowReservedWords */ false);\n if (!this.hasPrecedingLineBreak() && this.isRelational(\"<\")) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n return this.finishNode(node, \"TSTypeReference\");\n }\n\n tsParseThisTypePredicate(lhs: N.TsThisType): N.TsTypePredicate {\n this.next();\n const node: N.TsTypePredicate = this.startNodeAtNode(lhs);\n node.parameterName = lhs;\n node.typeAnnotation = this.tsParseTypeAnnotation(/* eatColon */ false);\n return this.finishNode(node, \"TSTypePredicate\");\n }\n\n tsParseThisTypeNode(): N.TsThisType {\n const node: N.TsThisType = this.startNode();\n this.next();\n return this.finishNode(node, \"TSThisType\");\n }\n\n tsParseTypeQuery(): N.TsTypeQuery {\n const node: N.TsTypeQuery = this.startNode();\n this.expect(tt._typeof);\n if (this.match(tt._import)) {\n node.exprName = this.tsParseImportType();\n } else {\n node.exprName = this.tsParseEntityName(/* allowReservedWords */ true);\n }\n return this.finishNode(node, \"TSTypeQuery\");\n }\n\n tsParseTypeParameter(): N.TsTypeParameter {\n const node: N.TsTypeParameter = this.startNode();\n node.name = this.parseIdentifierName(node.start);\n node.constraint = this.tsEatThenParseType(tt._extends);\n node.default = this.tsEatThenParseType(tt.eq);\n return this.finishNode(node, \"TSTypeParameter\");\n }\n\n tsTryParseTypeParameters(): ?N.TsTypeParameterDeclaration {\n if (this.isRelational(\"<\")) {\n return this.tsParseTypeParameters();\n }\n }\n\n tsParseTypeParameters() {\n const node: N.TsTypeParameterDeclaration = this.startNode();\n\n if (this.isRelational(\"<\") || this.match(tt.jsxTagStart)) {\n this.next();\n } else {\n this.unexpected();\n }\n\n node.params = this.tsParseBracketedList(\n \"TypeParametersOrArguments\",\n this.tsParseTypeParameter.bind(this),\n /* bracket */ false,\n /* skipFirstToken */ true,\n );\n return this.finishNode(node, \"TSTypeParameterDeclaration\");\n }\n\n tsTryNextParseConstantContext(): ?N.TsTypeReference {\n if (this.lookahead().type === tt._const) {\n this.next();\n return this.tsParseTypeReference();\n }\n return null;\n }\n\n // Note: In TypeScript implementation we must provide `yieldContext` and `awaitContext`,\n // but here it's always false, because this is only used for types.\n tsFillSignature(\n returnToken: TokenType,\n signature: N.TsSignatureDeclaration,\n ): void {\n // Arrow fns *must* have return token (`=>`). Normal functions can omit it.\n const returnTokenRequired = returnToken === tt.arrow;\n signature.typeParameters = this.tsTryParseTypeParameters();\n this.expect(tt.parenL);\n signature.parameters = this.tsParseBindingListForSignature();\n if (returnTokenRequired) {\n signature.typeAnnotation = this.tsParseTypeOrTypePredicateAnnotation(\n returnToken,\n );\n } else if (this.match(returnToken)) {\n signature.typeAnnotation = this.tsParseTypeOrTypePredicateAnnotation(\n returnToken,\n );\n }\n }\n\n tsParseBindingListForSignature(): $ReadOnlyArray<\n N.Identifier | N.RestElement | N.ObjectPattern | N.ArrayPattern,\n > {\n return this.parseBindingList(tt.parenR, charCodes.rightParenthesis).map(\n pattern => {\n if (\n pattern.type !== \"Identifier\" &&\n pattern.type !== \"RestElement\" &&\n pattern.type !== \"ObjectPattern\" &&\n pattern.type !== \"ArrayPattern\"\n ) {\n this.raise(\n pattern.start,\n \"Name in a signature must be an Identifier, ObjectPattern or ArrayPattern,\" +\n `instead got ${pattern.type}`,\n );\n }\n return (pattern: any);\n },\n );\n }\n\n tsParseTypeMemberSemicolon(): void {\n if (!this.eat(tt.comma)) {\n this.semicolon();\n }\n }\n\n tsParseSignatureMember(\n kind: \"TSCallSignatureDeclaration\" | \"TSConstructSignatureDeclaration\",\n node: N.TsCallSignatureDeclaration | N.TsConstructSignatureDeclaration,\n ): N.TsCallSignatureDeclaration | N.TsConstructSignatureDeclaration {\n this.tsFillSignature(tt.colon, node);\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(node, kind);\n }\n\n tsIsUnambiguouslyIndexSignature() {\n this.next(); // Skip '{'\n return this.eat(tt.name) && this.match(tt.colon);\n }\n\n tsTryParseIndexSignature(node: N.Node): ?N.TsIndexSignature {\n if (\n !(\n this.match(tt.bracketL) &&\n this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this))\n )\n ) {\n return undefined;\n }\n\n this.expect(tt.bracketL);\n const id = this.parseIdentifier();\n id.typeAnnotation = this.tsParseTypeAnnotation();\n this.resetEndLocation(id); // set end position to end of type\n\n this.expect(tt.bracketR);\n node.parameters = [id];\n\n const type = this.tsTryParseTypeAnnotation();\n if (type) node.typeAnnotation = type;\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(node, \"TSIndexSignature\");\n }\n\n tsParsePropertyOrMethodSignature(\n node: N.TsPropertySignature | N.TsMethodSignature,\n readonly: boolean,\n ): N.TsPropertySignature | N.TsMethodSignature {\n if (this.eat(tt.question)) node.optional = true;\n const nodeAny: any = node;\n\n if (!readonly && (this.match(tt.parenL) || this.isRelational(\"<\"))) {\n const method: N.TsMethodSignature = nodeAny;\n this.tsFillSignature(tt.colon, method);\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(method, \"TSMethodSignature\");\n } else {\n const property: N.TsPropertySignature = nodeAny;\n if (readonly) property.readonly = true;\n const type = this.tsTryParseTypeAnnotation();\n if (type) property.typeAnnotation = type;\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(property, \"TSPropertySignature\");\n }\n }\n\n tsParseTypeMember(): N.TsTypeElement {\n const node: any = this.startNode();\n\n if (this.match(tt.parenL) || this.isRelational(\"<\")) {\n return this.tsParseSignatureMember(\"TSCallSignatureDeclaration\", node);\n }\n\n if (this.match(tt._new)) {\n const id: N.Identifier = this.startNode();\n this.next();\n if (this.match(tt.parenL) || this.isRelational(\"<\")) {\n return this.tsParseSignatureMember(\n \"TSConstructSignatureDeclaration\",\n node,\n );\n } else {\n node.key = this.createIdentifier(id, \"new\");\n return this.tsParsePropertyOrMethodSignature(node, false);\n }\n }\n\n const readonly = !!this.tsParseModifier([\"readonly\"]);\n\n const idx = this.tsTryParseIndexSignature(node);\n if (idx) {\n if (readonly) node.readonly = true;\n return idx;\n }\n\n this.parsePropertyName(node, /* isPrivateNameAllowed */ false);\n return this.tsParsePropertyOrMethodSignature(node, readonly);\n }\n\n tsParseTypeLiteral(): N.TsTypeLiteral {\n const node: N.TsTypeLiteral = this.startNode();\n node.members = this.tsParseObjectTypeMembers();\n return this.finishNode(node, \"TSTypeLiteral\");\n }\n\n tsParseObjectTypeMembers(): $ReadOnlyArray<N.TsTypeElement> {\n this.expect(tt.braceL);\n const members = this.tsParseList(\n \"TypeMembers\",\n this.tsParseTypeMember.bind(this),\n );\n this.expect(tt.braceR);\n return members;\n }\n\n tsIsStartOfMappedType(): boolean {\n this.next();\n if (this.eat(tt.plusMin)) {\n return this.isContextual(\"readonly\");\n }\n if (this.isContextual(\"readonly\")) {\n this.next();\n }\n if (!this.match(tt.bracketL)) {\n return false;\n }\n this.next();\n if (!this.tsIsIdentifier()) {\n return false;\n }\n this.next();\n return this.match(tt._in);\n }\n\n tsParseMappedTypeParameter(): N.TsTypeParameter {\n const node: N.TsTypeParameter = this.startNode();\n node.name = this.parseIdentifierName(node.start);\n node.constraint = this.tsExpectThenParseType(tt._in);\n return this.finishNode(node, \"TSTypeParameter\");\n }\n\n tsParseMappedType(): N.TsMappedType {\n const node: N.TsMappedType = this.startNode();\n\n this.expect(tt.braceL);\n\n if (this.match(tt.plusMin)) {\n node.readonly = this.state.value;\n this.next();\n this.expectContextual(\"readonly\");\n } else if (this.eatContextual(\"readonly\")) {\n node.readonly = true;\n }\n\n this.expect(tt.bracketL);\n node.typeParameter = this.tsParseMappedTypeParameter();\n this.expect(tt.bracketR);\n\n if (this.match(tt.plusMin)) {\n node.optional = this.state.value;\n this.next();\n this.expect(tt.question);\n } else if (this.eat(tt.question)) {\n node.optional = true;\n }\n\n node.typeAnnotation = this.tsTryParseType();\n this.semicolon();\n this.expect(tt.braceR);\n\n return this.finishNode(node, \"TSMappedType\");\n }\n\n tsParseTupleType(): N.TsTupleType {\n const node: N.TsTupleType = this.startNode();\n node.elementTypes = this.tsParseBracketedList(\n \"TupleElementTypes\",\n this.tsParseTupleElementType.bind(this),\n /* bracket */ true,\n /* skipFirstToken */ false,\n );\n\n // Validate the elementTypes to ensure:\n // No mandatory elements may follow optional elements\n // If there's a rest element, it must be at the end of the tuple\n let seenOptionalElement = false;\n node.elementTypes.forEach(elementNode => {\n if (elementNode.type === \"TSOptionalType\") {\n seenOptionalElement = true;\n } else if (seenOptionalElement && elementNode.type !== \"TSRestType\") {\n this.raise(\n elementNode.start,\n \"A required element cannot follow an optional element.\",\n );\n }\n });\n\n return this.finishNode(node, \"TSTupleType\");\n }\n\n tsParseTupleElementType(): N.TsType {\n // parses `...TsType[]`\n if (this.match(tt.ellipsis)) {\n const restNode: N.TsRestType = this.startNode();\n this.next(); // skips ellipsis\n restNode.typeAnnotation = this.tsParseType();\n if (\n this.match(tt.comma) &&\n this.lookaheadCharCode() !== charCodes.rightSquareBracket\n ) {\n this.raiseRestNotLast(this.state.start);\n }\n return this.finishNode(restNode, \"TSRestType\");\n }\n\n const type = this.tsParseType();\n // parses `TsType?`\n if (this.eat(tt.question)) {\n const optionalTypeNode: N.TsOptionalType = this.startNodeAtNode(type);\n optionalTypeNode.typeAnnotation = type;\n return this.finishNode(optionalTypeNode, \"TSOptionalType\");\n }\n return type;\n }\n\n tsParseParenthesizedType(): N.TsParenthesizedType {\n const node = this.startNode();\n this.expect(tt.parenL);\n node.typeAnnotation = this.tsParseType();\n this.expect(tt.parenR);\n return this.finishNode(node, \"TSParenthesizedType\");\n }\n\n tsParseFunctionOrConstructorType(\n type: \"TSFunctionType\" | \"TSConstructorType\",\n ): N.TsFunctionOrConstructorType {\n const node: N.TsFunctionOrConstructorType = this.startNode();\n if (type === \"TSConstructorType\") {\n this.expect(tt._new);\n }\n this.tsFillSignature(tt.arrow, node);\n return this.finishNode(node, type);\n }\n\n tsParseLiteralTypeNode(): N.TsLiteralType {\n const node: N.TsLiteralType = this.startNode();\n node.literal = (() => {\n switch (this.state.type) {\n case tt.num:\n case tt.string:\n case tt._true:\n case tt._false:\n // For compatibility to estree we cannot call parseLiteral directly here\n return this.parseExprAtom();\n default:\n throw this.unexpected();\n }\n })();\n return this.finishNode(node, \"TSLiteralType\");\n }\n\n tsParseTemplateLiteralType(): N.TsType {\n const node: N.TsLiteralType = this.startNode();\n const templateNode = this.parseTemplate(false);\n if (templateNode.expressions.length > 0) {\n this.raise(\n templateNode.expressions[0].start,\n \"Template literal types cannot have any substitution\",\n );\n }\n node.literal = templateNode;\n return this.finishNode(node, \"TSLiteralType\");\n }\n\n tsParseThisTypeOrThisTypePredicate(): N.TsThisType | N.TsTypePredicate {\n const thisKeyword = this.tsParseThisTypeNode();\n if (this.isContextual(\"is\") && !this.hasPrecedingLineBreak()) {\n return this.tsParseThisTypePredicate(thisKeyword);\n } else {\n return thisKeyword;\n }\n }\n\n tsParseNonArrayType(): N.TsType {\n switch (this.state.type) {\n case tt.name:\n case tt._void:\n case tt._null: {\n const type = this.match(tt._void)\n ? \"TSVoidKeyword\"\n : this.match(tt._null)\n ? \"TSNullKeyword\"\n : keywordTypeFromName(this.state.value);\n if (\n type !== undefined &&\n this.lookaheadCharCode() !== charCodes.dot\n ) {\n const node: N.TsKeywordType = this.startNode();\n this.next();\n return this.finishNode(node, type);\n }\n return this.tsParseTypeReference();\n }\n case tt.string:\n case tt.num:\n case tt._true:\n case tt._false:\n return this.tsParseLiteralTypeNode();\n case tt.plusMin:\n if (this.state.value === \"-\") {\n const node: N.TsLiteralType = this.startNode();\n if (this.lookahead().type !== tt.num) {\n throw this.unexpected();\n }\n node.literal = this.parseMaybeUnary();\n return this.finishNode(node, \"TSLiteralType\");\n }\n break;\n case tt._this:\n return this.tsParseThisTypeOrThisTypePredicate();\n case tt._typeof:\n return this.tsParseTypeQuery();\n case tt._import:\n return this.tsParseImportType();\n case tt.braceL:\n return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this))\n ? this.tsParseMappedType()\n : this.tsParseTypeLiteral();\n case tt.bracketL:\n return this.tsParseTupleType();\n case tt.parenL:\n return this.tsParseParenthesizedType();\n case tt.backQuote:\n return this.tsParseTemplateLiteralType();\n }\n\n throw this.unexpected();\n }\n\n tsParseArrayTypeOrHigher(): N.TsType {\n let type = this.tsParseNonArrayType();\n while (!this.hasPrecedingLineBreak() && this.eat(tt.bracketL)) {\n if (this.match(tt.bracketR)) {\n const node: N.TsArrayType = this.startNodeAtNode(type);\n node.elementType = type;\n this.expect(tt.bracketR);\n type = this.finishNode(node, \"TSArrayType\");\n } else {\n const node: N.TsIndexedAccessType = this.startNodeAtNode(type);\n node.objectType = type;\n node.indexType = this.tsParseType();\n this.expect(tt.bracketR);\n type = this.finishNode(node, \"TSIndexedAccessType\");\n }\n }\n return type;\n }\n\n tsParseTypeOperator(\n operator: \"keyof\" | \"unique\" | \"readonly\",\n ): N.TsTypeOperator {\n const node: N.TsTypeOperator = this.startNode();\n this.expectContextual(operator);\n node.operator = operator;\n node.typeAnnotation = this.tsParseTypeOperatorOrHigher();\n\n if (operator === \"readonly\") {\n this.tsCheckTypeAnnotationForReadOnly(node);\n }\n\n return this.finishNode(node, \"TSTypeOperator\");\n }\n\n tsCheckTypeAnnotationForReadOnly(node: N.Node) {\n switch (node.typeAnnotation.type) {\n case \"TSTupleType\":\n case \"TSArrayType\":\n return;\n default:\n this.raise(\n node.start,\n \"'readonly' type modifier is only permitted on array and tuple literal types.\",\n );\n }\n }\n\n tsParseInferType(): N.TsInferType {\n const node = this.startNode();\n this.expectContextual(\"infer\");\n const typeParameter = this.startNode();\n typeParameter.name = this.parseIdentifierName(typeParameter.start);\n node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n return this.finishNode(node, \"TSInferType\");\n }\n\n tsParseTypeOperatorOrHigher(): N.TsType {\n const operator = [\"keyof\", \"unique\", \"readonly\"].find(kw =>\n this.isContextual(kw),\n );\n return operator\n ? this.tsParseTypeOperator(operator)\n : this.isContextual(\"infer\")\n ? this.tsParseInferType()\n : this.tsParseArrayTypeOrHigher();\n }\n\n tsParseUnionOrIntersectionType(\n kind: \"TSUnionType\" | \"TSIntersectionType\",\n parseConstituentType: () => N.TsType,\n operator: TokenType,\n ): N.TsType {\n this.eat(operator);\n let type = parseConstituentType();\n if (this.match(operator)) {\n const types = [type];\n while (this.eat(operator)) {\n types.push(parseConstituentType());\n }\n const node: N.TsUnionType | N.TsIntersectionType = this.startNodeAtNode(\n type,\n );\n node.types = types;\n type = this.finishNode(node, kind);\n }\n return type;\n }\n\n tsParseIntersectionTypeOrHigher(): N.TsType {\n return this.tsParseUnionOrIntersectionType(\n \"TSIntersectionType\",\n this.tsParseTypeOperatorOrHigher.bind(this),\n tt.bitwiseAND,\n );\n }\n\n tsParseUnionTypeOrHigher() {\n return this.tsParseUnionOrIntersectionType(\n \"TSUnionType\",\n this.tsParseIntersectionTypeOrHigher.bind(this),\n tt.bitwiseOR,\n );\n }\n\n tsIsStartOfFunctionType() {\n if (this.isRelational(\"<\")) {\n return true;\n }\n return (\n this.match(tt.parenL) &&\n this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this))\n );\n }\n\n tsSkipParameterStart(): boolean {\n if (this.match(tt.name) || this.match(tt._this)) {\n this.next();\n return true;\n }\n\n if (this.match(tt.braceL)) {\n let braceStackCounter = 1;\n this.next();\n\n while (braceStackCounter > 0) {\n if (this.match(tt.braceL)) {\n ++braceStackCounter;\n } else if (this.match(tt.braceR)) {\n --braceStackCounter;\n }\n this.next();\n }\n return true;\n }\n\n if (this.match(tt.bracketL)) {\n let braceStackCounter = 1;\n this.next();\n\n while (braceStackCounter > 0) {\n if (this.match(tt.bracketL)) {\n ++braceStackCounter;\n } else if (this.match(tt.bracketR)) {\n --braceStackCounter;\n }\n this.next();\n }\n return true;\n }\n\n return false;\n }\n\n tsIsUnambiguouslyStartOfFunctionType(): boolean {\n this.next();\n if (this.match(tt.parenR) || this.match(tt.ellipsis)) {\n // ( )\n // ( ...\n return true;\n }\n if (this.tsSkipParameterStart()) {\n if (\n this.match(tt.colon) ||\n this.match(tt.comma) ||\n this.match(tt.question) ||\n this.match(tt.eq)\n ) {\n // ( xxx :\n // ( xxx ,\n // ( xxx ?\n // ( xxx =\n return true;\n }\n if (this.match(tt.parenR)) {\n this.next();\n if (this.match(tt.arrow)) {\n // ( xxx ) =>\n return true;\n }\n }\n }\n return false;\n }\n\n tsParseTypeOrTypePredicateAnnotation(\n returnToken: TokenType,\n ): N.TsTypeAnnotation {\n return this.tsInType(() => {\n const t: N.TsTypeAnnotation = this.startNode();\n this.expect(returnToken);\n\n const asserts = this.tsTryParse(\n this.tsParseTypePredicateAsserts.bind(this),\n );\n\n if (asserts && this.match(tt._this)) {\n // When asserts is false, thisKeyword is handled by tsParseNonArrayType\n // : asserts this is type\n let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();\n // if it turns out to be a `TSThisType`, wrap it with `TSTypePredicate`\n // : asserts this\n if (thisTypePredicate.type === \"TSThisType\") {\n const node: N.TsTypePredicate = this.startNodeAtNode(t);\n node.parameterName = (thisTypePredicate: N.TsThisType);\n node.asserts = true;\n thisTypePredicate = this.finishNode(node, \"TSTypePredicate\");\n } else {\n (thisTypePredicate: N.TsTypePredicate).asserts = true;\n }\n t.typeAnnotation = thisTypePredicate;\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n\n const typePredicateVariable =\n this.tsIsIdentifier() &&\n this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));\n\n if (!typePredicateVariable) {\n if (!asserts) {\n // : type\n return this.tsParseTypeAnnotation(/* eatColon */ false, t);\n }\n\n const node: N.TsTypePredicate = this.startNodeAtNode(t);\n // : asserts foo\n node.parameterName = this.parseIdentifier();\n node.asserts = asserts;\n t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n\n // : asserts foo is type\n const type = this.tsParseTypeAnnotation(/* eatColon */ false);\n const node = this.startNodeAtNode(t);\n node.parameterName = typePredicateVariable;\n node.typeAnnotation = type;\n node.asserts = asserts;\n t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n return this.finishNode(t, \"TSTypeAnnotation\");\n });\n }\n\n tsTryParseTypeOrTypePredicateAnnotation(): ?N.TsTypeAnnotation {\n return this.match(tt.colon)\n ? this.tsParseTypeOrTypePredicateAnnotation(tt.colon)\n : undefined;\n }\n\n tsTryParseTypeAnnotation(): ?N.TsTypeAnnotation {\n return this.match(tt.colon) ? this.tsParseTypeAnnotation() : undefined;\n }\n\n tsTryParseType(): ?N.TsType {\n return this.tsEatThenParseType(tt.colon);\n }\n\n tsParseTypePredicatePrefix(): ?N.Identifier {\n const id = this.parseIdentifier();\n if (this.isContextual(\"is\") && !this.hasPrecedingLineBreak()) {\n this.next();\n return id;\n }\n }\n\n tsParseTypePredicateAsserts(): boolean {\n if (\n !this.match(tt.name) ||\n this.state.value !== \"asserts\" ||\n this.hasPrecedingLineBreak()\n ) {\n return false;\n }\n const containsEsc = this.state.containsEsc;\n this.next();\n if (!this.match(tt.name) && !this.match(tt._this)) {\n return false;\n }\n\n if (containsEsc) {\n this.raise(\n this.state.lastTokStart,\n \"Escape sequence in keyword asserts\",\n );\n }\n\n return true;\n }\n\n tsParseTypeAnnotation(\n eatColon = true,\n t: N.TsTypeAnnotation = this.startNode(),\n ): N.TsTypeAnnotation {\n this.tsInType(() => {\n if (eatColon) this.expect(tt.colon);\n t.typeAnnotation = this.tsParseType();\n });\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n\n /** Be sure to be in a type context before calling this, using `tsInType`. */\n tsParseType(): N.TsType {\n // Need to set `state.inType` so that we don't parse JSX in a type context.\n assert(this.state.inType);\n const type = this.tsParseNonConditionalType();\n if (this.hasPrecedingLineBreak() || !this.eat(tt._extends)) {\n return type;\n }\n const node: N.TsConditionalType = this.startNodeAtNode(type);\n node.checkType = type;\n node.extendsType = this.tsParseNonConditionalType();\n this.expect(tt.question);\n node.trueType = this.tsParseType();\n this.expect(tt.colon);\n node.falseType = this.tsParseType();\n return this.finishNode(node, \"TSConditionalType\");\n }\n\n tsParseNonConditionalType(): N.TsType {\n if (this.tsIsStartOfFunctionType()) {\n return this.tsParseFunctionOrConstructorType(\"TSFunctionType\");\n }\n if (this.match(tt._new)) {\n // As in `new () => Date`\n return this.tsParseFunctionOrConstructorType(\"TSConstructorType\");\n }\n return this.tsParseUnionTypeOrHigher();\n }\n\n tsParseTypeAssertion(): N.TsTypeAssertion {\n const node: N.TsTypeAssertion = this.startNode();\n const _const = this.tsTryNextParseConstantContext();\n node.typeAnnotation = _const || this.tsNextThenParseType();\n this.expectRelational(\">\");\n node.expression = this.parseMaybeUnary();\n return this.finishNode(node, \"TSTypeAssertion\");\n }\n\n tsParseHeritageClause(\n descriptor: string,\n ): $ReadOnlyArray<N.TsExpressionWithTypeArguments> {\n const originalStart = this.state.start;\n\n const delimitedList = this.tsParseDelimitedList(\n \"HeritageClauseElement\",\n this.tsParseExpressionWithTypeArguments.bind(this),\n );\n\n if (!delimitedList.length) {\n this.raise(originalStart, `'${descriptor}' list cannot be empty.`);\n }\n\n return delimitedList;\n }\n\n tsParseExpressionWithTypeArguments(): N.TsExpressionWithTypeArguments {\n const node: N.TsExpressionWithTypeArguments = this.startNode();\n // Note: TS uses parseLeftHandSideExpressionOrHigher,\n // then has grammar errors later if it's not an EntityName.\n node.expression = this.tsParseEntityName(/* allowReservedWords */ false);\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n\n return this.finishNode(node, \"TSExpressionWithTypeArguments\");\n }\n\n tsParseInterfaceDeclaration(\n node: N.TsInterfaceDeclaration,\n ): N.TsInterfaceDeclaration {\n node.id = this.parseIdentifier();\n this.checkLVal(\n node.id,\n BIND_TS_INTERFACE,\n undefined,\n \"typescript interface declaration\",\n );\n node.typeParameters = this.tsTryParseTypeParameters();\n if (this.eat(tt._extends)) {\n node.extends = this.tsParseHeritageClause(\"extends\");\n }\n const body: N.TSInterfaceBody = this.startNode();\n body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));\n node.body = this.finishNode(body, \"TSInterfaceBody\");\n return this.finishNode(node, \"TSInterfaceDeclaration\");\n }\n\n tsParseTypeAliasDeclaration(\n node: N.TsTypeAliasDeclaration,\n ): N.TsTypeAliasDeclaration {\n node.id = this.parseIdentifier();\n this.checkLVal(node.id, BIND_TS_TYPE, undefined, \"typescript type alias\");\n\n node.typeParameters = this.tsTryParseTypeParameters();\n node.typeAnnotation = this.tsExpectThenParseType(tt.eq);\n this.semicolon();\n return this.finishNode(node, \"TSTypeAliasDeclaration\");\n }\n\n tsInNoContext<T>(cb: () => T): T {\n const oldContext = this.state.context;\n this.state.context = [oldContext[0]];\n try {\n return cb();\n } finally {\n this.state.context = oldContext;\n }\n }\n\n /**\n * Runs `cb` in a type context.\n * This should be called one token *before* the first type token,\n * so that the call to `next()` is run in type context.\n */\n tsInType<T>(cb: () => T): T {\n const oldInType = this.state.inType;\n this.state.inType = true;\n try {\n return cb();\n } finally {\n this.state.inType = oldInType;\n }\n }\n\n tsEatThenParseType(token: TokenType): N.TsType | typeof undefined {\n return !this.match(token) ? undefined : this.tsNextThenParseType();\n }\n\n tsExpectThenParseType(token: TokenType): N.TsType {\n return this.tsDoThenParseType(() => this.expect(token));\n }\n\n tsNextThenParseType(): N.TsType {\n return this.tsDoThenParseType(() => this.next());\n }\n\n tsDoThenParseType(cb: () => void): N.TsType {\n return this.tsInType(() => {\n cb();\n return this.tsParseType();\n });\n }\n\n tsParseEnumMember(): N.TsEnumMember {\n const node: N.TsEnumMember = this.startNode();\n // Computed property names are grammar errors in an enum, so accept just string literal or identifier.\n node.id = this.match(tt.string)\n ? this.parseExprAtom()\n : this.parseIdentifier(/* liberal */ true);\n if (this.eat(tt.eq)) {\n node.initializer = this.parseMaybeAssign();\n }\n return this.finishNode(node, \"TSEnumMember\");\n }\n\n tsParseEnumDeclaration(\n node: N.TsEnumDeclaration,\n isConst: boolean,\n ): N.TsEnumDeclaration {\n if (isConst) node.const = true;\n node.id = this.parseIdentifier();\n this.checkLVal(\n node.id,\n isConst ? BIND_TS_CONST_ENUM : BIND_TS_ENUM,\n undefined,\n \"typescript enum declaration\",\n );\n\n this.expect(tt.braceL);\n node.members = this.tsParseDelimitedList(\n \"EnumMembers\",\n this.tsParseEnumMember.bind(this),\n );\n this.expect(tt.braceR);\n return this.finishNode(node, \"TSEnumDeclaration\");\n }\n\n tsParseModuleBlock(): N.TsModuleBlock {\n const node: N.TsModuleBlock = this.startNode();\n this.scope.enter(SCOPE_OTHER);\n\n this.expect(tt.braceL);\n // Inside of a module block is considered \"top-level\", meaning it can have imports and exports.\n this.parseBlockOrModuleBlockBody(\n (node.body = []),\n /* directives */ undefined,\n /* topLevel */ true,\n /* end */ tt.braceR,\n );\n this.scope.exit();\n return this.finishNode(node, \"TSModuleBlock\");\n }\n\n tsParseModuleOrNamespaceDeclaration(\n node: N.TsModuleDeclaration,\n nested?: boolean = false,\n ): N.TsModuleDeclaration {\n node.id = this.parseIdentifier();\n\n if (!nested) {\n this.checkLVal(\n node.id,\n BIND_TS_NAMESPACE,\n null,\n \"module or namespace declaration\",\n );\n }\n\n if (this.eat(tt.dot)) {\n const inner = this.startNode();\n this.tsParseModuleOrNamespaceDeclaration(inner, true);\n node.body = inner;\n } else {\n this.scope.enter(SCOPE_TS_MODULE);\n node.body = this.tsParseModuleBlock();\n this.scope.exit();\n }\n return this.finishNode(node, \"TSModuleDeclaration\");\n }\n\n tsParseAmbientExternalModuleDeclaration(\n node: N.TsModuleDeclaration,\n ): N.TsModuleDeclaration {\n if (this.isContextual(\"global\")) {\n node.global = true;\n node.id = this.parseIdentifier();\n } else if (this.match(tt.string)) {\n node.id = this.parseExprAtom();\n } else {\n this.unexpected();\n }\n if (this.match(tt.braceL)) {\n this.scope.enter(SCOPE_TS_MODULE);\n node.body = this.tsParseModuleBlock();\n this.scope.exit();\n } else {\n this.semicolon();\n }\n\n return this.finishNode(node, \"TSModuleDeclaration\");\n }\n\n tsParseImportEqualsDeclaration(\n node: N.TsImportEqualsDeclaration,\n isExport?: boolean,\n ): N.TsImportEqualsDeclaration {\n node.isExport = isExport || false;\n node.id = this.parseIdentifier();\n this.checkLVal(\n node.id,\n BIND_LEXICAL,\n undefined,\n \"import equals declaration\",\n );\n this.expect(tt.eq);\n node.moduleReference = this.tsParseModuleReference();\n this.semicolon();\n return this.finishNode(node, \"TSImportEqualsDeclaration\");\n }\n\n tsIsExternalModuleReference(): boolean {\n return (\n this.isContextual(\"require\") &&\n this.lookaheadCharCode() === charCodes.leftParenthesis\n );\n }\n\n tsParseModuleReference(): N.TsModuleReference {\n return this.tsIsExternalModuleReference()\n ? this.tsParseExternalModuleReference()\n : this.tsParseEntityName(/* allowReservedWords */ false);\n }\n\n tsParseExternalModuleReference(): N.TsExternalModuleReference {\n const node: N.TsExternalModuleReference = this.startNode();\n this.expectContextual(\"require\");\n this.expect(tt.parenL);\n if (!this.match(tt.string)) {\n throw this.unexpected();\n }\n // For compatibility to estree we cannot call parseLiteral directly here\n node.expression = this.parseExprAtom();\n this.expect(tt.parenR);\n return this.finishNode(node, \"TSExternalModuleReference\");\n }\n\n // Utilities\n\n tsLookAhead<T>(f: () => T): T {\n const state = this.state.clone();\n const res = f();\n this.state = state;\n return res;\n }\n\n tsTryParseAndCatch<T: ?N.NodeBase>(f: () => T): ?T {\n const result = this.tryParse(abort => f() || abort());\n\n if (result.aborted || !result.node) return undefined;\n if (result.error) this.state = result.failState;\n return result.node;\n }\n\n tsTryParse<T>(f: () => ?T): ?T {\n const state = this.state.clone();\n const result = f();\n if (result !== undefined && result !== false) {\n return result;\n } else {\n this.state = state;\n return undefined;\n }\n }\n\n tsTryParseDeclare(nany: any): ?N.Declaration {\n if (this.isLineTerminator()) {\n return;\n }\n let starttype = this.state.type;\n let kind;\n\n if (this.isContextual(\"let\")) {\n starttype = tt._var;\n kind = \"let\";\n }\n\n switch (starttype) {\n case tt._function:\n return this.parseFunctionStatement(\n nany,\n /* async */ false,\n /* declarationPosition */ true,\n );\n case tt._class:\n // While this is also set by tsParseExpressionStatement, we need to set it\n // before parsing the class declaration to now how to register it in the scope.\n nany.declare = true;\n return this.parseClass(\n nany,\n /* isStatement */ true,\n /* optionalId */ false,\n );\n case tt._const:\n if (this.match(tt._const) && this.isLookaheadContextual(\"enum\")) {\n // `const enum = 0;` not allowed because \"enum\" is a strict mode reserved word.\n this.expect(tt._const);\n this.expectContextual(\"enum\");\n return this.tsParseEnumDeclaration(nany, /* isConst */ true);\n }\n // falls through\n case tt._var:\n kind = kind || this.state.value;\n return this.parseVarStatement(nany, kind);\n case tt.name: {\n const value = this.state.value;\n if (value === \"global\") {\n return this.tsParseAmbientExternalModuleDeclaration(nany);\n } else {\n return this.tsParseDeclaration(nany, value, /* next */ true);\n }\n }\n }\n }\n\n // Note: this won't be called unless the keyword is allowed in `shouldParseExportDeclaration`.\n tsTryParseExportDeclaration(): ?N.Declaration {\n return this.tsParseDeclaration(\n this.startNode(),\n this.state.value,\n /* next */ true,\n );\n }\n\n tsParseExpressionStatement(node: any, expr: N.Identifier): ?N.Declaration {\n switch (expr.name) {\n case \"declare\": {\n const declaration = this.tsTryParseDeclare(node);\n if (declaration) {\n declaration.declare = true;\n return declaration;\n }\n break;\n }\n case \"global\":\n // `global { }` (with no `declare`) may appear inside an ambient module declaration.\n // Would like to use tsParseAmbientExternalModuleDeclaration here, but already ran past \"global\".\n if (this.match(tt.braceL)) {\n this.scope.enter(SCOPE_TS_MODULE);\n const mod: N.TsModuleDeclaration = node;\n mod.global = true;\n mod.id = expr;\n mod.body = this.tsParseModuleBlock();\n this.scope.exit();\n return this.finishNode(mod, \"TSModuleDeclaration\");\n }\n break;\n\n default:\n return this.tsParseDeclaration(node, expr.name, /* next */ false);\n }\n }\n\n // Common to tsTryParseDeclare, tsTryParseExportDeclaration, and tsParseExpressionStatement.\n tsParseDeclaration(\n node: any,\n value: string,\n next: boolean,\n ): ?N.Declaration {\n switch (value) {\n case \"abstract\":\n if (this.tsCheckLineTerminatorAndMatch(tt._class, next)) {\n const cls: N.ClassDeclaration = node;\n cls.abstract = true;\n if (next) {\n this.next();\n if (!this.match(tt._class)) {\n this.unexpected(null, tt._class);\n }\n }\n return this.parseClass(\n cls,\n /* isStatement */ true,\n /* optionalId */ false,\n );\n }\n break;\n\n case \"enum\":\n if (next || this.match(tt.name)) {\n if (next) this.next();\n return this.tsParseEnumDeclaration(node, /* isConst */ false);\n }\n break;\n\n case \"interface\":\n if (this.tsCheckLineTerminatorAndMatch(tt.name, next)) {\n if (next) this.next();\n return this.tsParseInterfaceDeclaration(node);\n }\n break;\n\n case \"module\":\n if (next) this.next();\n if (this.match(tt.string)) {\n return this.tsParseAmbientExternalModuleDeclaration(node);\n } else if (this.tsCheckLineTerminatorAndMatch(tt.name, next)) {\n return this.tsParseModuleOrNamespaceDeclaration(node);\n }\n break;\n\n case \"namespace\":\n if (this.tsCheckLineTerminatorAndMatch(tt.name, next)) {\n if (next) this.next();\n return this.tsParseModuleOrNamespaceDeclaration(node);\n }\n break;\n\n case \"type\":\n if (this.tsCheckLineTerminatorAndMatch(tt.name, next)) {\n if (next) this.next();\n return this.tsParseTypeAliasDeclaration(node);\n }\n break;\n }\n }\n\n tsCheckLineTerminatorAndMatch(tokenType: TokenType, next: boolean) {\n return (next || this.match(tokenType)) && !this.isLineTerminator();\n }\n\n tsTryParseGenericAsyncArrowFunction(\n startPos: number,\n startLoc: Position,\n ): ?N.ArrowFunctionExpression {\n if (!this.isRelational(\"<\")) {\n return undefined;\n }\n const res: ?N.ArrowFunctionExpression = this.tsTryParseAndCatch(() => {\n const node: N.ArrowFunctionExpression = this.startNodeAt(\n startPos,\n startLoc,\n );\n node.typeParameters = this.tsParseTypeParameters();\n // Don't use overloaded parseFunctionParams which would look for \"<\" again.\n super.parseFunctionParams(node);\n node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();\n this.expect(tt.arrow);\n return node;\n });\n\n if (!res) {\n return undefined;\n }\n\n return this.parseArrowExpression(\n res,\n /* params are already set */ null,\n /* async */ true,\n );\n }\n\n tsParseTypeArguments(): N.TsTypeParameterInstantiation {\n const node = this.startNode();\n node.params = this.tsInType(() =>\n // Temporarily remove a JSX parsing context, which makes us scan different tokens.\n this.tsInNoContext(() => {\n this.expectRelational(\"<\");\n return this.tsParseDelimitedList(\n \"TypeParametersOrArguments\",\n this.tsParseType.bind(this),\n );\n }),\n );\n // This reads the next token after the `>` too, so do this in the enclosing context.\n // But be sure not to parse a regex in the jsx expression `<C<number> />`, so set exprAllowed = false\n this.state.exprAllowed = false;\n this.expectRelational(\">\");\n return this.finishNode(node, \"TSTypeParameterInstantiation\");\n }\n\n tsIsDeclarationStart(): boolean {\n if (this.match(tt.name)) {\n switch (this.state.value) {\n case \"abstract\":\n case \"declare\":\n case \"enum\":\n case \"interface\":\n case \"module\":\n case \"namespace\":\n case \"type\":\n return true;\n }\n }\n\n return false;\n }\n\n // ======================================================\n // OVERRIDES\n // ======================================================\n\n isExportDefaultSpecifier(): boolean {\n if (this.tsIsDeclarationStart()) return false;\n return super.isExportDefaultSpecifier();\n }\n\n parseAssignableListItem(\n allowModifiers: ?boolean,\n decorators: N.Decorator[],\n ): N.Pattern | N.TSParameterProperty {\n // Store original location/position to include modifiers in range\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n\n let accessibility: ?N.Accessibility;\n let readonly = false;\n if (allowModifiers) {\n accessibility = this.parseAccessModifier();\n readonly = !!this.tsParseModifier([\"readonly\"]);\n }\n\n const left = this.parseMaybeDefault();\n this.parseAssignableListItemTypes(left);\n const elt = this.parseMaybeDefault(left.start, left.loc.start, left);\n if (accessibility || readonly) {\n const pp: N.TSParameterProperty = this.startNodeAt(startPos, startLoc);\n if (decorators.length) {\n pp.decorators = decorators;\n }\n if (accessibility) pp.accessibility = accessibility;\n if (readonly) pp.readonly = readonly;\n if (elt.type !== \"Identifier\" && elt.type !== \"AssignmentPattern\") {\n this.raise(\n pp.start,\n \"A parameter property may not be declared using a binding pattern.\",\n );\n }\n pp.parameter = ((elt: any): N.Identifier | N.AssignmentPattern);\n return this.finishNode(pp, \"TSParameterProperty\");\n }\n\n if (decorators.length) {\n left.decorators = decorators;\n }\n\n return elt;\n }\n\n parseFunctionBodyAndFinish(\n node: N.BodilessFunctionOrMethodBase,\n type: string,\n isMethod?: boolean = false,\n ): void {\n if (this.match(tt.colon)) {\n node.returnType = this.tsParseTypeOrTypePredicateAnnotation(tt.colon);\n }\n\n const bodilessType =\n type === \"FunctionDeclaration\"\n ? \"TSDeclareFunction\"\n : type === \"ClassMethod\"\n ? \"TSDeclareMethod\"\n : undefined;\n if (bodilessType && !this.match(tt.braceL) && this.isLineTerminator()) {\n this.finishNode(node, bodilessType);\n return;\n }\n\n super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n\n registerFunctionStatementId(node: N.Function): void {\n if (!node.body && node.id) {\n // Function ids are validated after parsing their body.\n // For bodyless function, we need to do it here.\n this.checkLVal(node.id, BIND_TS_AMBIENT, null, \"function name\");\n } else {\n super.registerFunctionStatementId(...arguments);\n }\n }\n\n parseSubscript(\n base: N.Expression,\n startPos: number,\n startLoc: Position,\n noCalls: ?boolean,\n state: N.ParseSubscriptState,\n ): N.Expression {\n if (!this.hasPrecedingLineBreak() && this.match(tt.bang)) {\n this.state.exprAllowed = false;\n this.next();\n\n const nonNullExpression: N.TsNonNullExpression = this.startNodeAt(\n startPos,\n startLoc,\n );\n nonNullExpression.expression = base;\n return this.finishNode(nonNullExpression, \"TSNonNullExpression\");\n }\n\n if (this.isRelational(\"<\")) {\n // tsTryParseAndCatch is expensive, so avoid if not necessary.\n // There are number of things we are going to \"maybe\" parse, like type arguments on\n // tagged template expressions. If any of them fail, walk it back and continue.\n const result = this.tsTryParseAndCatch(() => {\n if (!noCalls && this.atPossibleAsync(base)) {\n // Almost certainly this is a generic async function `async <T>() => ...\n // But it might be a call with a type argument `async<T>();`\n const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(\n startPos,\n startLoc,\n );\n if (asyncArrowFn) {\n return asyncArrowFn;\n }\n }\n\n const node: N.CallExpression = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n\n const typeArguments = this.tsParseTypeArguments();\n\n if (typeArguments) {\n if (!noCalls && this.eat(tt.parenL)) {\n // possibleAsync always false here, because we would have handled it above.\n // $FlowIgnore (won't be any undefined arguments)\n node.arguments = this.parseCallExpressionArguments(\n tt.parenR,\n /* possibleAsync */ false,\n );\n node.typeParameters = typeArguments;\n return this.finishCallExpression(node, state.optionalChainMember);\n } else if (this.match(tt.backQuote)) {\n return this.parseTaggedTemplateExpression(\n startPos,\n startLoc,\n base,\n state,\n typeArguments,\n );\n }\n }\n\n this.unexpected();\n });\n\n if (result) return result;\n }\n\n return super.parseSubscript(base, startPos, startLoc, noCalls, state);\n }\n\n parseNewArguments(node: N.NewExpression): void {\n if (this.isRelational(\"<\")) {\n // tsTryParseAndCatch is expensive, so avoid if not necessary.\n // 99% certain this is `new C<T>();`. But may be `new C < T;`, which is also legal.\n const typeParameters = this.tsTryParseAndCatch(() => {\n const args = this.tsParseTypeArguments();\n if (!this.match(tt.parenL)) this.unexpected();\n return args;\n });\n if (typeParameters) {\n node.typeParameters = typeParameters;\n }\n }\n\n super.parseNewArguments(node);\n }\n\n parseExprOp(\n left: N.Expression,\n leftStartPos: number,\n leftStartLoc: Position,\n minPrec: number,\n noIn: ?boolean,\n ) {\n if (\n nonNull(tt._in.binop) > minPrec &&\n !this.hasPrecedingLineBreak() &&\n this.isContextual(\"as\")\n ) {\n const node: N.TsAsExpression = this.startNodeAt(\n leftStartPos,\n leftStartLoc,\n );\n node.expression = left;\n const _const = this.tsTryNextParseConstantContext();\n if (_const) {\n node.typeAnnotation = _const;\n } else {\n node.typeAnnotation = this.tsNextThenParseType();\n }\n this.finishNode(node, \"TSAsExpression\");\n return this.parseExprOp(\n node,\n leftStartPos,\n leftStartLoc,\n minPrec,\n noIn,\n );\n }\n\n return super.parseExprOp(left, leftStartPos, leftStartLoc, minPrec, noIn);\n }\n\n checkReservedWord(\n word: string, // eslint-disable-line no-unused-vars\n startLoc: number, // eslint-disable-line no-unused-vars\n checkKeywords: boolean, // eslint-disable-line no-unused-vars\n // eslint-disable-next-line no-unused-vars\n isBinding: boolean,\n ): void {\n // Don't bother checking for TypeScript code.\n // Strict mode words may be allowed as in `declare namespace N { const static: number; }`.\n // And we have a type checker anyway, so don't bother having the parser do it.\n }\n\n /*\n Don't bother doing this check in TypeScript code because:\n 1. We may have a nested export statement with the same name:\n export const x = 0;\n export namespace N {\n export const x = 1;\n }\n 2. We have a type checker to warn us about this sort of thing.\n */\n checkDuplicateExports() {}\n\n parseImport(node: N.Node): N.AnyImport {\n if (this.match(tt.name) && this.lookahead().type === tt.eq) {\n return this.tsParseImportEqualsDeclaration(node);\n }\n return super.parseImport(node);\n }\n\n parseExport(node: N.Node): N.AnyExport {\n if (this.match(tt._import)) {\n // `export import A = B;`\n this.expect(tt._import);\n return this.tsParseImportEqualsDeclaration(node, /* isExport */ true);\n } else if (this.eat(tt.eq)) {\n // `export = x;`\n const assign: N.TsExportAssignment = node;\n assign.expression = this.parseExpression();\n this.semicolon();\n return this.finishNode(assign, \"TSExportAssignment\");\n } else if (this.eatContextual(\"as\")) {\n // `export as namespace A;`\n const decl: N.TsNamespaceExportDeclaration = node;\n // See `parseNamespaceExportDeclaration` in TypeScript's own parser\n this.expectContextual(\"namespace\");\n decl.id = this.parseIdentifier();\n this.semicolon();\n return this.finishNode(decl, \"TSNamespaceExportDeclaration\");\n } else {\n return super.parseExport(node);\n }\n }\n\n isAbstractClass(): boolean {\n return (\n this.isContextual(\"abstract\") && this.lookahead().type === tt._class\n );\n }\n\n parseExportDefaultExpression(): N.Expression | N.Declaration {\n if (this.isAbstractClass()) {\n const cls = this.startNode();\n this.next(); // Skip \"abstract\"\n this.parseClass(cls, true, true);\n cls.abstract = true;\n return cls;\n }\n\n // export default interface allowed in:\n // https://github.com/Microsoft/TypeScript/pull/16040\n if (this.state.value === \"interface\") {\n const result = this.tsParseDeclaration(\n this.startNode(),\n this.state.value,\n true,\n );\n\n if (result) return result;\n }\n\n return super.parseExportDefaultExpression();\n }\n\n parseStatementContent(context: ?string, topLevel: ?boolean): N.Statement {\n if (this.state.type === tt._const) {\n const ahead = this.lookahead();\n if (ahead.type === tt.name && ahead.value === \"enum\") {\n const node: N.TsEnumDeclaration = this.startNode();\n this.expect(tt._const);\n this.expectContextual(\"enum\");\n return this.tsParseEnumDeclaration(node, /* isConst */ true);\n }\n }\n return super.parseStatementContent(context, topLevel);\n }\n\n parseAccessModifier(): ?N.Accessibility {\n return this.tsParseModifier([\"public\", \"protected\", \"private\"]);\n }\n\n parseClassMember(\n classBody: N.ClassBody,\n member: any,\n state: { hadConstructor: boolean },\n constructorAllowsSuper: boolean,\n ): void {\n const accessibility = this.parseAccessModifier();\n if (accessibility) member.accessibility = accessibility;\n\n super.parseClassMember(classBody, member, state, constructorAllowsSuper);\n }\n\n parseClassMemberWithIsStatic(\n classBody: N.ClassBody,\n member: N.ClassMember | N.TsIndexSignature,\n state: { hadConstructor: boolean },\n isStatic: boolean,\n constructorAllowsSuper: boolean,\n ): void {\n const modifiers = this.tsParseModifiers([\n \"abstract\",\n \"readonly\",\n \"declare\",\n ]);\n\n Object.assign(member, modifiers);\n\n const idx = this.tsTryParseIndexSignature(member);\n if (idx) {\n classBody.body.push(idx);\n\n if (modifiers.abstract) {\n this.raise(\n member.start,\n \"Index signatures cannot have the 'abstract' modifier\",\n );\n }\n if (isStatic) {\n this.raise(\n member.start,\n \"Index signatures cannot have the 'static' modifier\",\n );\n }\n if ((member: any).accessibility) {\n this.raise(\n member.start,\n `Index signatures cannot have an accessibility modifier ('${\n (member: any).accessibility\n }')`,\n );\n }\n\n return;\n }\n\n /*:: invariant(member.type !== \"TSIndexSignature\") */\n\n super.parseClassMemberWithIsStatic(\n classBody,\n member,\n state,\n isStatic,\n constructorAllowsSuper,\n );\n }\n\n parsePostMemberNameModifiers(\n methodOrProp: N.ClassMethod | N.ClassProperty | N.ClassPrivateProperty,\n ): void {\n const optional = this.eat(tt.question);\n if (optional) methodOrProp.optional = true;\n\n if ((methodOrProp: any).readonly && this.match(tt.parenL)) {\n this.raise(\n methodOrProp.start,\n \"Class methods cannot have the 'readonly' modifier\",\n );\n }\n\n if ((methodOrProp: any).declare && this.match(tt.parenL)) {\n this.raise(\n methodOrProp.start,\n \"Class methods cannot have the 'declare' modifier\",\n );\n }\n }\n\n // Note: The reason we do this in `parseExpressionStatement` and not `parseStatement`\n // is that e.g. `type()` is valid JS, so we must try parsing that first.\n // If it's really a type, we will parse `type` as the statement, and can correct it here\n // by parsing the rest.\n parseExpressionStatement(\n node: N.ExpressionStatement,\n expr: N.Expression,\n ): N.Statement {\n const decl =\n expr.type === \"Identifier\"\n ? this.tsParseExpressionStatement(node, expr)\n : undefined;\n return decl || super.parseExpressionStatement(node, expr);\n }\n\n // export type\n // Should be true for anything parsed by `tsTryParseExportDeclaration`.\n shouldParseExportDeclaration(): boolean {\n if (this.tsIsDeclarationStart()) return true;\n return super.shouldParseExportDeclaration();\n }\n\n // An apparent conditional expression could actually be an optional parameter in an arrow function.\n parseConditional(\n expr: N.Expression,\n noIn: ?boolean,\n startPos: number,\n startLoc: Position,\n refNeedsArrowPos?: ?Pos,\n ): N.Expression {\n // only do the expensive clone if there is a question mark\n // and if we come from inside parens\n if (!refNeedsArrowPos || !this.match(tt.question)) {\n return super.parseConditional(\n expr,\n noIn,\n startPos,\n startLoc,\n refNeedsArrowPos,\n );\n }\n\n const result = this.tryParse(() =>\n super.parseConditional(expr, noIn, startPos, startLoc),\n );\n\n if (!result.node) {\n // $FlowIgnore\n refNeedsArrowPos.start = result.error.pos || this.state.start;\n return expr;\n }\n if (result.error) this.state = result.failState;\n return result.node;\n }\n\n // Note: These \"type casts\" are *not* valid TS expressions.\n // But we parse them here and change them when completing the arrow function.\n parseParenItem(\n node: N.Expression,\n startPos: number,\n startLoc: Position,\n ): N.Expression {\n node = super.parseParenItem(node, startPos, startLoc);\n if (this.eat(tt.question)) {\n node.optional = true;\n // Include questionmark in location of node\n // Don't use this.finishNode() as otherwise we might process comments twice and\n // include already consumed parens\n this.resetEndLocation(node);\n }\n\n if (this.match(tt.colon)) {\n const typeCastNode: N.TsTypeCastExpression = this.startNodeAt(\n startPos,\n startLoc,\n );\n typeCastNode.expression = node;\n typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();\n\n return this.finishNode(typeCastNode, \"TSTypeCastExpression\");\n }\n\n return node;\n }\n\n parseExportDeclaration(node: N.ExportNamedDeclaration): ?N.Declaration {\n // Store original location/position\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n\n // \"export declare\" is equivalent to just \"export\".\n const isDeclare = this.eatContextual(\"declare\");\n\n let declaration: ?N.Declaration;\n\n if (this.match(tt.name)) {\n declaration = this.tsTryParseExportDeclaration();\n }\n if (!declaration) {\n declaration = super.parseExportDeclaration(node);\n }\n\n if (declaration && isDeclare) {\n // Reset location to include `declare` in range\n this.resetStartLocation(declaration, startPos, startLoc);\n\n declaration.declare = true;\n }\n\n return declaration;\n }\n\n parseClassId(\n node: N.Class,\n isStatement: boolean,\n optionalId: ?boolean,\n ): void {\n if ((!isStatement || optionalId) && this.isContextual(\"implements\")) {\n return;\n }\n\n super.parseClassId(\n node,\n isStatement,\n optionalId,\n (node: any).declare ? BIND_TS_AMBIENT : BIND_CLASS,\n );\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) node.typeParameters = typeParameters;\n }\n\n parseClassPropertyAnnotation(\n node: N.ClassProperty | N.ClassPrivateProperty,\n ): void {\n if (!node.optional && this.eat(tt.bang)) {\n node.definite = true;\n }\n\n const type = this.tsTryParseTypeAnnotation();\n if (type) node.typeAnnotation = type;\n }\n\n parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n this.parseClassPropertyAnnotation(node);\n\n if (node.declare && this.match(tt.equal)) {\n this.raise(\n this.state.start,\n \"'declare' class fields cannot have an initializer\",\n );\n }\n\n return super.parseClassProperty(node);\n }\n\n parseClassPrivateProperty(\n node: N.ClassPrivateProperty,\n ): N.ClassPrivateProperty {\n // $FlowIgnore\n if (node.abstract) {\n this.raise(\n node.start,\n \"Private elements cannot have the 'abstract' modifier.\",\n );\n }\n\n // $FlowIgnore\n if (node.accessibility) {\n this.raise(\n node.start,\n `Private elements cannot have an accessibility modifier ('${node.accessibility}')`,\n );\n }\n\n this.parseClassPropertyAnnotation(node);\n return super.parseClassPrivateProperty(node);\n }\n\n pushClassMethod(\n classBody: N.ClassBody,\n method: N.ClassMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowsDirectSuper: boolean,\n ): void {\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) method.typeParameters = typeParameters;\n super.pushClassMethod(\n classBody,\n method,\n isGenerator,\n isAsync,\n isConstructor,\n allowsDirectSuper,\n );\n }\n\n pushClassPrivateMethod(\n classBody: N.ClassBody,\n method: N.ClassPrivateMethod,\n isGenerator: boolean,\n isAsync: boolean,\n ): void {\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) method.typeParameters = typeParameters;\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n\n parseClassSuper(node: N.Class): void {\n super.parseClassSuper(node);\n if (node.superClass && this.isRelational(\"<\")) {\n node.superTypeParameters = this.tsParseTypeArguments();\n }\n if (this.eatContextual(\"implements\")) {\n node.implements = this.tsParseHeritageClause(\"implements\");\n }\n }\n\n parseObjPropValue(prop: N.ObjectMember, ...args): void {\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) prop.typeParameters = typeParameters;\n\n super.parseObjPropValue(prop, ...args);\n }\n\n parseFunctionParams(node: N.Function, allowModifiers?: boolean): void {\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) node.typeParameters = typeParameters;\n super.parseFunctionParams(node, allowModifiers);\n }\n\n // `let x: number;`\n parseVarId(\n decl: N.VariableDeclarator,\n kind: \"var\" | \"let\" | \"const\",\n ): void {\n super.parseVarId(decl, kind);\n if (decl.id.type === \"Identifier\" && this.eat(tt.bang)) {\n decl.definite = true;\n }\n\n const type = this.tsTryParseTypeAnnotation();\n if (type) {\n decl.id.typeAnnotation = type;\n this.resetEndLocation(decl.id); // set end position to end of type\n }\n }\n\n // parse the return type of an async arrow function - let foo = (async (): number => {});\n parseAsyncArrowFromCallExpression(\n node: N.ArrowFunctionExpression,\n call: N.CallExpression,\n ): N.ArrowFunctionExpression {\n if (this.match(tt.colon)) {\n node.returnType = this.tsParseTypeAnnotation();\n }\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n\n parseMaybeAssign(...args): N.Expression {\n // Note: When the JSX plugin is on, type assertions (`<T> x`) aren't valid syntax.\n\n let state: ?State;\n let jsx;\n let typeCast;\n\n if (this.match(tt.jsxTagStart)) {\n // Prefer to parse JSX if possible. But may be an arrow fn.\n state = this.state.clone();\n\n jsx = this.tryParse(() => super.parseMaybeAssign(...args), state);\n /*:: invariant(!jsx.aborted) */\n\n if (!jsx.error) return jsx.node;\n\n // Remove `tc.j_expr` and `tc.j_oTag` from context added\n // by parsing `jsxTagStart` to stop the JSX plugin from\n // messing with the tokens\n const { context } = this.state;\n if (context[context.length - 1] === ct.j_oTag) {\n context.length -= 2;\n } else if (context[context.length - 1] === ct.j_expr) {\n context.length -= 1;\n }\n }\n\n if (!(jsx && jsx.error) && !this.isRelational(\"<\")) {\n return super.parseMaybeAssign(...args);\n }\n\n // Either way, we're looking at a '<': tt.jsxTagStart or relational.\n\n let typeParameters: N.TsTypeParameterDeclaration;\n state = state || this.state.clone();\n\n const arrow = this.tryParse(abort => {\n // This is similar to TypeScript's `tryParseParenthesizedArrowFunctionExpression`.\n typeParameters = this.tsParseTypeParameters();\n const expr = super.parseMaybeAssign(...args);\n\n if (\n expr.type !== \"ArrowFunctionExpression\" ||\n (expr.extra && expr.extra.parenthesized)\n ) {\n abort();\n }\n\n // Correct TypeScript code should have at least 1 type parameter, but don't crash on bad code.\n if (typeParameters && typeParameters.params.length !== 0) {\n this.resetStartLocationFromNode(expr, typeParameters);\n }\n expr.typeParameters = typeParameters;\n return expr;\n }, state);\n\n if (!arrow.error && !arrow.aborted) return arrow.node;\n\n if (!jsx) {\n // Try parsing a type cast instead of an arrow function.\n // This will never happen outside of JSX.\n // (Because in JSX the '<' should be a jsxTagStart and not a relational.\n assert(!this.hasPlugin(\"jsx\"));\n\n // This will start with a type assertion (via parseMaybeUnary).\n // But don't directly call `this.tsParseTypeAssertion` because we want to handle any binary after it.\n typeCast = this.tryParse(() => super.parseMaybeAssign(...args), state);\n /*:: invariant(!typeCast.aborted) */\n if (!typeCast.error) return typeCast.node;\n }\n\n if (jsx && jsx.node) {\n /*:: invariant(jsx.failState) */\n this.state = jsx.failState;\n return jsx.node;\n }\n\n if (arrow.node) {\n /*:: invariant(arrow.failState) */\n this.state = arrow.failState;\n return arrow.node;\n }\n\n if (typeCast && typeCast.node) {\n /*:: invariant(typeCast.failState) */\n this.state = typeCast.failState;\n return typeCast.node;\n }\n\n if (jsx && jsx.thrown) throw jsx.error;\n if (arrow.thrown) throw arrow.error;\n if (typeCast && typeCast.thrown) throw typeCast.error;\n\n throw (jsx && jsx.error) || arrow.error || (typeCast && typeCast.error);\n }\n\n // Handle type assertions\n parseMaybeUnary(refExpressionErrors?: ?ExpressionErrors): N.Expression {\n if (!this.hasPlugin(\"jsx\") && this.isRelational(\"<\")) {\n return this.tsParseTypeAssertion();\n } else {\n return super.parseMaybeUnary(refExpressionErrors);\n }\n }\n\n parseArrow(node: N.ArrowFunctionExpression): ?N.ArrowFunctionExpression {\n if (this.match(tt.colon)) {\n // This is different from how the TS parser does it.\n // TS uses lookahead. The Babel Parser parses it as a parenthesized expression and converts.\n\n const result = this.tryParse(abort => {\n const returnType = this.tsParseTypeOrTypePredicateAnnotation(\n tt.colon,\n );\n if (this.canInsertSemicolon() || !this.match(tt.arrow)) abort();\n return returnType;\n });\n\n if (result.aborted) return;\n\n if (!result.thrown) {\n if (result.error) this.state = result.failState;\n node.returnType = result.node;\n }\n }\n\n return super.parseArrow(node);\n }\n\n // Allow type annotations inside of a parameter list.\n parseAssignableListItemTypes(param: N.Pattern) {\n if (this.eat(tt.question)) {\n if (param.type !== \"Identifier\") {\n this.raise(\n param.start,\n \"A binding pattern parameter cannot be optional in an implementation signature.\",\n );\n }\n\n ((param: any): N.Identifier).optional = true;\n }\n const type = this.tsTryParseTypeAnnotation();\n if (type) param.typeAnnotation = type;\n this.resetEndLocation(param);\n\n return param;\n }\n\n toAssignable(node: N.Node): N.Node {\n switch (node.type) {\n case \"TSTypeCastExpression\":\n return super.toAssignable(this.typeCastToParameter(node));\n case \"TSParameterProperty\":\n return super.toAssignable(node);\n case \"TSAsExpression\":\n case \"TSNonNullExpression\":\n case \"TSTypeAssertion\":\n node.expression = this.toAssignable(node.expression);\n return node;\n default:\n return super.toAssignable(node);\n }\n }\n\n checkLVal(\n expr: N.Expression,\n bindingType: BindingTypes = BIND_NONE,\n checkClashes: ?{ [key: string]: boolean },\n contextDescription: string,\n ): void {\n switch (expr.type) {\n case \"TSTypeCastExpression\":\n // Allow \"typecasts\" to appear on the left of assignment expressions,\n // because it may be in an arrow function.\n // e.g. `const f = (foo: number = 0) => foo;`\n return;\n case \"TSParameterProperty\":\n this.checkLVal(\n expr.parameter,\n bindingType,\n checkClashes,\n \"parameter property\",\n );\n return;\n case \"TSAsExpression\":\n case \"TSNonNullExpression\":\n case \"TSTypeAssertion\":\n this.checkLVal(\n expr.expression,\n bindingType,\n checkClashes,\n contextDescription,\n );\n return;\n default:\n super.checkLVal(expr, bindingType, checkClashes, contextDescription);\n return;\n }\n }\n\n parseBindingAtom(): N.Pattern {\n switch (this.state.type) {\n case tt._this:\n // \"this\" may be the name of a parameter, so allow it.\n return this.parseIdentifier(/* liberal */ true);\n default:\n return super.parseBindingAtom();\n }\n }\n\n parseMaybeDecoratorArguments(expr: N.Expression): N.Expression {\n if (this.isRelational(\"<\")) {\n const typeArguments = this.tsParseTypeArguments();\n\n if (this.match(tt.parenL)) {\n const call = super.parseMaybeDecoratorArguments(expr);\n call.typeParameters = typeArguments;\n return call;\n }\n\n this.unexpected(this.state.start, tt.parenL);\n }\n\n return super.parseMaybeDecoratorArguments(expr);\n }\n\n // === === === === === === === === === === === === === === === ===\n // Note: All below methods are duplicates of something in flow.js.\n // Not sure what the best way to combine these is.\n // === === === === === === === === === === === === === === === ===\n\n isClassMethod(): boolean {\n return this.isRelational(\"<\") || super.isClassMethod();\n }\n\n isClassProperty(): boolean {\n return (\n this.match(tt.bang) || this.match(tt.colon) || super.isClassProperty()\n );\n }\n\n parseMaybeDefault(...args): N.Pattern {\n const node = super.parseMaybeDefault(...args);\n\n if (\n node.type === \"AssignmentPattern\" &&\n node.typeAnnotation &&\n node.right.start < node.typeAnnotation.start\n ) {\n this.raise(\n node.typeAnnotation.start,\n \"Type annotations must come before default assignments, \" +\n \"e.g. instead of `age = 25: number` use `age: number = 25`\",\n );\n }\n\n return node;\n }\n\n // ensure that inside types, we bypass the jsx parser plugin\n getTokenFromCode(code: number): void {\n if (this.state.inType && (code === 62 || code === 60)) {\n return this.finishOp(tt.relational, 1);\n } else {\n return super.getTokenFromCode(code);\n }\n }\n\n toAssignableList(exprList: N.Expression[]): $ReadOnlyArray<N.Pattern> {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (!expr) continue;\n switch (expr.type) {\n case \"TSTypeCastExpression\":\n exprList[i] = this.typeCastToParameter(expr);\n break;\n case \"TSAsExpression\":\n case \"TSTypeAssertion\":\n if (!this.state.maybeInArrowParameters) {\n exprList[i] = this.typeCastToParameter(expr);\n } else {\n this.raise(\n expr.start,\n \"Unexpected type cast in parameter position.\",\n );\n }\n break;\n }\n }\n return super.toAssignableList(...arguments);\n }\n\n typeCastToParameter(node: N.TsTypeCastExpression): N.Node {\n node.expression.typeAnnotation = node.typeAnnotation;\n\n this.resetEndLocation(\n node.expression,\n node.typeAnnotation.end,\n node.typeAnnotation.loc.end,\n );\n\n return node.expression;\n }\n\n toReferencedList(\n exprList: $ReadOnlyArray<?N.Expression>,\n isInParens?: boolean, // eslint-disable-line no-unused-vars\n ): $ReadOnlyArray<?N.Expression> {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (expr && expr.type === \"TSTypeCastExpression\") {\n this.raise(expr.start, \"Did not expect a type annotation here.\");\n }\n }\n\n return exprList;\n }\n\n shouldParseArrow() {\n return this.match(tt.colon) || super.shouldParseArrow();\n }\n\n shouldParseAsyncArrow(): boolean {\n return this.match(tt.colon) || super.shouldParseAsyncArrow();\n }\n\n canHaveLeadingDecorator() {\n // Avoid unnecessary lookahead in checking for abstract class unless needed!\n return super.canHaveLeadingDecorator() || this.isAbstractClass();\n }\n\n jsxParseOpeningElementAfterName(\n node: N.JSXOpeningElement,\n ): N.JSXOpeningElement {\n if (this.isRelational(\"<\")) {\n const typeArguments = this.tsTryParseAndCatch(() =>\n this.tsParseTypeArguments(),\n );\n if (typeArguments) node.typeParameters = typeArguments;\n }\n return super.jsxParseOpeningElementAfterName(node);\n }\n\n getGetterSetterExpectedParamCount(\n method: N.ObjectMethod | N.ClassMethod,\n ): number {\n const baseCount = super.getGetterSetterExpectedParamCount(method);\n const firstParam = method.params[0];\n const hasContextParam =\n firstParam &&\n firstParam.type === \"Identifier\" &&\n firstParam.name === \"this\";\n\n return hasContextParam ? baseCount + 1 : baseCount;\n }\n };\n","// @flow\n\nimport * as charCodes from \"charcodes\";\n\nimport { types as tt, TokenType } from \"../tokenizer/types\";\nimport type Parser from \"../parser\";\nimport * as N from \"../types\";\n\ntt.placeholder = new TokenType(\"%%\", { startsExpr: true });\n\nexport type PlaceholderTypes =\n | \"Identifier\"\n | \"StringLiteral\"\n | \"Expression\"\n | \"Statement\"\n | \"Declaration\"\n | \"BlockStatement\"\n | \"ClassBody\"\n | \"Pattern\";\n\n// $PropertyType doesn't support enums. Use a fake \"switch\" (GetPlaceholderNode)\n//type MaybePlaceholder<T: PlaceholderTypes> = $PropertyType<N, T> | N.Placeholder<T>;\n\ntype _Switch<Value, Cases, Index> = $Call<\n (\n $ElementType<$ElementType<Cases, Index>, 0>,\n ) => $ElementType<$ElementType<Cases, Index>, 1>,\n Value,\n>;\ntype $Switch<Value, Cases> = _Switch<Value, Cases, *>;\n\ntype NodeOf<T: PlaceholderTypes> = $Switch<\n T,\n [\n [\"Identifier\", N.Identifier],\n [\"StringLiteral\", N.StringLiteral],\n [\"Expression\", N.Expression],\n [\"Statement\", N.Statement],\n [\"Declaration\", N.Declaration],\n [\"BlockStatement\", N.BlockStatement],\n [\"ClassBody\", N.ClassBody],\n [\"Pattern\", N.Pattern],\n ],\n>;\n\n// Placeholder<T> breaks everything, because its type is incompatible with\n// the substituted nodes.\ntype MaybePlaceholder<T: PlaceholderTypes> = NodeOf<T>; // | Placeholder<T>\n\nexport default (superClass: Class<Parser>): Class<Parser> =>\n class extends superClass {\n parsePlaceholder<T: PlaceholderTypes>(\n expectedNode: T,\n ): /*?N.Placeholder<T>*/ ?MaybePlaceholder<T> {\n if (this.match(tt.placeholder)) {\n const node = this.startNode();\n this.next();\n this.assertNoSpace(\"Unexpected space in placeholder.\");\n\n // We can't use this.parseIdentifier because\n // we don't want nested placeholders.\n node.name = super.parseIdentifier(/* liberal */ true);\n\n this.assertNoSpace(\"Unexpected space in placeholder.\");\n this.expect(tt.placeholder);\n return this.finishPlaceholder(node, expectedNode);\n }\n }\n\n finishPlaceholder<T: PlaceholderTypes>(\n node: N.Node,\n expectedNode: T,\n ): /*N.Placeholder<T>*/ MaybePlaceholder<T> {\n const isFinished = !!(node.expectedNode && node.type === \"Placeholder\");\n node.expectedNode = expectedNode;\n\n return isFinished ? node : this.finishNode(node, \"Placeholder\");\n }\n\n /* ============================================================ *\n * tokenizer/index.js *\n * ============================================================ */\n\n getTokenFromCode(code: number) {\n if (\n code === charCodes.percentSign &&\n this.input.charCodeAt(this.state.pos + 1) === charCodes.percentSign\n ) {\n return this.finishOp(tt.placeholder, 2);\n }\n\n return super.getTokenFromCode(...arguments);\n }\n\n /* ============================================================ *\n * parser/expression.js *\n * ============================================================ */\n\n parseExprAtom(): MaybePlaceholder<\"Expression\"> {\n return (\n this.parsePlaceholder(\"Expression\") || super.parseExprAtom(...arguments)\n );\n }\n\n parseIdentifier(): MaybePlaceholder<\"Identifier\"> {\n // NOTE: This function only handles identifiers outside of\n // expressions and binding patterns, since they are already\n // handled by the parseExprAtom and parseBindingAtom functions.\n // This is needed, for example, to parse \"class %%NAME%% {}\".\n return (\n this.parsePlaceholder(\"Identifier\") ||\n super.parseIdentifier(...arguments)\n );\n }\n\n checkReservedWord(word: string): void {\n // Sometimes we call #checkReservedWord(node.name), expecting\n // that node is an Identifier. If it is a Placeholder, name\n // will be undefined.\n if (word !== undefined) super.checkReservedWord(...arguments);\n }\n\n /* ============================================================ *\n * parser/lval.js *\n * ============================================================ */\n\n parseBindingAtom(): MaybePlaceholder<\"Pattern\"> {\n return (\n this.parsePlaceholder(\"Pattern\") || super.parseBindingAtom(...arguments)\n );\n }\n\n checkLVal(expr: N.Expression): void {\n if (expr.type !== \"Placeholder\") super.checkLVal(...arguments);\n }\n\n toAssignable(node: N.Node): N.Node {\n if (\n node &&\n node.type === \"Placeholder\" &&\n node.expectedNode === \"Expression\"\n ) {\n node.expectedNode = \"Pattern\";\n return node;\n }\n return super.toAssignable(...arguments);\n }\n\n /* ============================================================ *\n * parser/statement.js *\n * ============================================================ */\n\n verifyBreakContinue(node: N.BreakStatement | N.ContinueStatement) {\n if (node.label && node.label.type === \"Placeholder\") return;\n super.verifyBreakContinue(...arguments);\n }\n\n parseExpressionStatement(\n node: MaybePlaceholder<\"Statement\">,\n expr: N.Expression,\n ): MaybePlaceholder<\"Statement\"> {\n if (\n expr.type !== \"Placeholder\" ||\n (expr.extra && expr.extra.parenthesized)\n ) {\n return super.parseExpressionStatement(...arguments);\n }\n\n if (this.match(tt.colon)) {\n const stmt: N.LabeledStatement = node;\n stmt.label = this.finishPlaceholder(expr, \"Identifier\");\n this.next();\n stmt.body = this.parseStatement(\"label\");\n return this.finishNode(stmt, \"LabeledStatement\");\n }\n\n this.semicolon();\n\n node.name = expr.name;\n return this.finishPlaceholder(node, \"Statement\");\n }\n\n parseBlock(): MaybePlaceholder<\"BlockStatement\"> {\n return (\n this.parsePlaceholder(\"BlockStatement\") ||\n super.parseBlock(...arguments)\n );\n }\n\n parseFunctionId(): ?MaybePlaceholder<\"Identifier\"> {\n return (\n this.parsePlaceholder(\"Identifier\") ||\n super.parseFunctionId(...arguments)\n );\n }\n\n parseClass<T: N.Class>(\n node: T,\n isStatement: /* T === ClassDeclaration */ boolean,\n optionalId?: boolean,\n ): T {\n const type = isStatement ? \"ClassDeclaration\" : \"ClassExpression\";\n\n this.next();\n this.takeDecorators(node);\n\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (placeholder) {\n if (\n this.match(tt._extends) ||\n this.match(tt.placeholder) ||\n this.match(tt.braceL)\n ) {\n node.id = placeholder;\n } else if (optionalId || !isStatement) {\n node.id = null;\n node.body = this.finishPlaceholder(placeholder, \"ClassBody\");\n return this.finishNode(node, type);\n } else {\n this.unexpected(null, \"A class name is required\");\n }\n } else {\n this.parseClassId(node, isStatement, optionalId);\n }\n\n this.parseClassSuper(node);\n node.body =\n this.parsePlaceholder(\"ClassBody\") ||\n this.parseClassBody(!!node.superClass);\n return this.finishNode(node, type);\n }\n\n parseExport(node: N.Node): N.Node {\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (!placeholder) return super.parseExport(...arguments);\n\n if (!this.isContextual(\"from\") && !this.match(tt.comma)) {\n // export %%DECL%%;\n node.specifiers = [];\n node.source = null;\n node.declaration = this.finishPlaceholder(placeholder, \"Declaration\");\n return this.finishNode(node, \"ExportNamedDeclaration\");\n }\n\n // export %%NAME%% from \"foo\";\n this.expectPlugin(\"exportDefaultFrom\");\n const specifier = this.startNode();\n specifier.exported = placeholder;\n node.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n\n return super.parseExport(node);\n }\n\n maybeParseExportDefaultSpecifier(node: N.Node): boolean {\n if (node.specifiers && node.specifiers.length > 0) {\n // \"export %%NAME%%\" has already been parsed by #parseExport.\n return true;\n }\n return super.maybeParseExportDefaultSpecifier(...arguments);\n }\n\n checkExport(node: N.ExportNamedDeclaration): void {\n const { specifiers } = node;\n if (specifiers && specifiers.length) {\n node.specifiers = specifiers.filter(\n node => node.exported.type === \"Placeholder\",\n );\n }\n super.checkExport(node);\n node.specifiers = specifiers;\n }\n\n parseImport(\n node: N.Node,\n ): N.ImportDeclaration | N.TsImportEqualsDeclaration {\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (!placeholder) return super.parseImport(...arguments);\n\n node.specifiers = [];\n\n if (!this.isContextual(\"from\") && !this.match(tt.comma)) {\n // import %%STRING%%;\n node.source = this.finishPlaceholder(placeholder, \"StringLiteral\");\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n\n // import %%DEFAULT%% ...\n const specifier = this.startNodeAtNode(placeholder);\n specifier.local = placeholder;\n this.finishNode(specifier, \"ImportDefaultSpecifier\");\n node.specifiers.push(specifier);\n\n if (this.eat(tt.comma)) {\n // import %%DEFAULT%%, * as ...\n const hasStarImport = this.maybeParseStarImportSpecifier(node);\n\n // import %%DEFAULT%%, { ...\n if (!hasStarImport) this.parseNamedImportSpecifiers(node);\n }\n\n this.expectContextual(\"from\");\n node.source = this.parseImportSource();\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n\n parseImportSource(): MaybePlaceholder<\"StringLiteral\"> {\n // import ... from %%STRING%%;\n\n return (\n this.parsePlaceholder(\"StringLiteral\") ||\n super.parseImportSource(...arguments)\n );\n }\n };\n","import type Parser from \"../parser\";\nimport { types as tt } from \"../tokenizer/types\";\nimport * as N from \"../types\";\n\nexport default (superClass: Class<Parser>): Class<Parser> =>\n class extends superClass {\n parseV8Intrinsic(): N.Expression {\n if (this.match(tt.modulo)) {\n const v8IntrinsicStart = this.state.start;\n // let the `loc` of Identifier starts from `%`\n const node = this.startNode();\n this.eat(tt.modulo);\n if (this.match(tt.name)) {\n const name = this.parseIdentifierName(this.state.start);\n const identifier = this.createIdentifier(node, name);\n identifier.type = \"V8IntrinsicIdentifier\";\n if (this.match(tt.parenL)) {\n return identifier;\n }\n }\n this.unexpected(v8IntrinsicStart);\n }\n }\n\n /* ============================================================ *\n * parser/expression.js *\n * ============================================================ */\n\n parseExprAtom(): N.Expression {\n return this.parseV8Intrinsic() || super.parseExprAtom(...arguments);\n }\n };\n","// @flow\n\nimport type Parser from \"./parser\";\n\nexport type Plugin = string | [string, Object];\n\nexport type PluginList = $ReadOnlyArray<Plugin>;\n\nexport type MixinPlugin = (superClass: Class<Parser>) => Class<Parser>;\n\nexport function hasPlugin(plugins: PluginList, name: string): boolean {\n return plugins.some(plugin => {\n if (Array.isArray(plugin)) {\n return plugin[0] === name;\n } else {\n return plugin === name;\n }\n });\n}\n\nexport function getPluginOption(\n plugins: PluginList,\n name: string,\n option: string,\n) {\n const plugin = plugins.find(plugin => {\n if (Array.isArray(plugin)) {\n return plugin[0] === name;\n } else {\n return plugin === name;\n }\n });\n\n if (plugin && Array.isArray(plugin)) {\n return plugin[1][option];\n }\n\n return null;\n}\n\nconst PIPELINE_PROPOSALS = [\"minimal\", \"smart\", \"fsharp\"];\n\nexport function validatePlugins(plugins: PluginList) {\n if (hasPlugin(plugins, \"decorators\")) {\n if (hasPlugin(plugins, \"decorators-legacy\")) {\n throw new Error(\n \"Cannot use the decorators and decorators-legacy plugin together\",\n );\n }\n\n const decoratorsBeforeExport = getPluginOption(\n plugins,\n \"decorators\",\n \"decoratorsBeforeExport\",\n );\n if (decoratorsBeforeExport == null) {\n throw new Error(\n \"The 'decorators' plugin requires a 'decoratorsBeforeExport' option,\" +\n \" whose value must be a boolean. If you are migrating from\" +\n \" Babylon/Babel 6 or want to use the old decorators proposal, you\" +\n \" should use the 'decorators-legacy' plugin instead of 'decorators'.\",\n );\n } else if (typeof decoratorsBeforeExport !== \"boolean\") {\n throw new Error(\"'decoratorsBeforeExport' must be a boolean.\");\n }\n }\n\n if (hasPlugin(plugins, \"flow\") && hasPlugin(plugins, \"typescript\")) {\n throw new Error(\"Cannot combine flow and typescript plugins.\");\n }\n\n if (hasPlugin(plugins, \"placeholders\") && hasPlugin(plugins, \"v8intrinsic\")) {\n throw new Error(\"Cannot combine placeholders and v8intrinsic plugins.\");\n }\n\n if (\n hasPlugin(plugins, \"pipelineOperator\") &&\n !PIPELINE_PROPOSALS.includes(\n getPluginOption(plugins, \"pipelineOperator\", \"proposal\"),\n )\n ) {\n throw new Error(\n \"'pipelineOperator' requires 'proposal' option whose value should be one of: \" +\n PIPELINE_PROPOSALS.map(p => `'${p}'`).join(\", \"),\n );\n }\n}\n\n// These plugins are defined using a mixin which extends the parser class.\n\nimport estree from \"./plugins/estree\";\nimport flow from \"./plugins/flow\";\nimport jsx from \"./plugins/jsx\";\nimport typescript from \"./plugins/typescript\";\nimport placeholders from \"./plugins/placeholders\";\nimport v8intrinsic from \"./plugins/v8intrinsic\";\n\n// NOTE: order is important. estree must come first; placeholders must come last.\nexport const mixinPlugins: { [name: string]: MixinPlugin } = {\n estree,\n jsx,\n flow,\n typescript,\n v8intrinsic,\n placeholders,\n};\n\nexport const mixinPluginNames: $ReadOnlyArray<string> = Object.keys(\n mixinPlugins,\n);\n","// @flow\n\nimport type { PluginList } from \"./plugin-utils\";\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nexport type SourceType = \"script\" | \"module\" | \"unambiguous\";\n\nexport type Options = {\n sourceType: SourceType,\n sourceFilename?: string,\n startLine: number,\n allowAwaitOutsideFunction: boolean,\n allowReturnOutsideFunction: boolean,\n allowImportExportEverywhere: boolean,\n allowSuperOutsideMethod: boolean,\n allowUndeclaredExports: boolean,\n plugins: PluginList,\n strictMode: ?boolean,\n ranges: boolean,\n tokens: boolean,\n createParenthesizedExpressions: boolean,\n errorRecovery: boolean,\n};\n\nexport const defaultOptions: Options = {\n // Source type (\"script\" or \"module\") for different semantics\n sourceType: \"script\",\n // Source filename.\n sourceFilename: undefined,\n // Line from which to start counting source. Useful for\n // integration with other tools.\n startLine: 1,\n // When enabled, await at the top level is not considered an\n // error.\n allowAwaitOutsideFunction: false,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program.\n allowImportExportEverywhere: false,\n // TODO\n allowSuperOutsideMethod: false,\n // When enabled, export statements can reference undeclared variables.\n allowUndeclaredExports: false,\n // An array of plugins to enable\n plugins: [],\n // TODO\n strictMode: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // Adds all parsed tokens to a `tokens` property on the `File` node\n tokens: false,\n // Whether to create ParenthesizedExpression AST nodes (if false\n // the parser sets extra.parenthesized on the expression nodes instead).\n createParenthesizedExpressions: false,\n // When enabled, errors are attached to the AST instead of being directly thrown.\n // Some errors will still throw, because @babel/parser can't always recover.\n errorRecovery: false,\n};\n\n// Interpret and default an options object\n\nexport function getOptions(opts: ?Options): Options {\n const options: any = {};\n for (const key of Object.keys(defaultOptions)) {\n options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key];\n }\n return options;\n}\n","// @flow\n\nimport { lineBreakG } from \"./whitespace\";\n\nexport type Pos = {\n start: number,\n};\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nexport class Position {\n line: number;\n column: number;\n\n constructor(line: number, col: number) {\n this.line = line;\n this.column = col;\n }\n}\n\nexport class SourceLocation {\n start: Position;\n end: Position;\n filename: string;\n identifierName: ?string;\n\n constructor(start: Position, end?: Position) {\n this.start = start;\n // $FlowIgnore (may start as null, but initialized later)\n this.end = end;\n }\n}\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nexport function getLineInfo(input: string, offset: number): Position {\n let line = 1;\n let lineStart = 0;\n let match;\n lineBreakG.lastIndex = 0;\n while ((match = lineBreakG.exec(input)) && match.index < offset) {\n line++;\n lineStart = lineBreakG.lastIndex;\n }\n\n return new Position(line, offset - lineStart);\n}\n","// @flow\n\nimport type { Options } from \"../options\";\nimport type State from \"../tokenizer/state\";\nimport type { PluginsMap } from \"./index\";\nimport type ScopeHandler from \"../util/scope\";\nimport type ClassScopeHandler from \"../util/class-scope\";\n\nexport default class BaseParser {\n // Properties set by constructor in index.js\n options: Options;\n inModule: boolean;\n scope: ScopeHandler<*>;\n classScope: ClassScopeHandler;\n plugins: PluginsMap;\n filename: ?string;\n sawUnambiguousESM: boolean = false;\n ambiguousScriptDifferentAst: boolean = false;\n\n // Initialized by Tokenizer\n state: State;\n // input and length are not in state as they are constant and we do\n // not want to ever copy them, which happens if state gets cloned\n input: string;\n length: number;\n\n hasPlugin(name: string): boolean {\n return this.plugins.has(name);\n }\n\n getPluginOption(plugin: string, name: string) {\n // $FlowIssue\n if (this.hasPlugin(plugin)) return this.plugins.get(plugin)[name];\n }\n}\n","// @flow\n\n/**\n * Based on the comment attachment algorithm used in espree and estraverse.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport BaseParser from \"./base\";\nimport type { Comment, Node } from \"../types\";\n\nfunction last<T>(stack: $ReadOnlyArray<T>): T {\n return stack[stack.length - 1];\n}\n\nexport default class CommentsParser extends BaseParser {\n addComment(comment: Comment): void {\n if (this.filename) comment.loc.filename = this.filename;\n this.state.trailingComments.push(comment);\n this.state.leadingComments.push(comment);\n }\n\n adjustCommentsAfterTrailingComma(\n node: Node,\n elements: (Node | null)[],\n // When the current node is followed by a token which hasn't a respective AST node, we\n // need to take all the trailing comments to prevent them from being attached to an\n // unrelated node. e.g. in\n // var { x } /* cmt */ = { y }\n // we don't want /* cmt */ to be attached to { y }.\n // On the other hand, in\n // fn(x) [new line] /* cmt */ [new line] y\n // /* cmt */ is both a trailing comment of fn(x) and a leading comment of y\n takeAllComments?: boolean,\n ) {\n if (this.state.leadingComments.length === 0) {\n return;\n }\n\n let lastElement = null;\n let i = elements.length;\n while (lastElement === null && i > 0) {\n lastElement = elements[--i];\n }\n if (lastElement === null) {\n return;\n }\n\n for (let j = 0; j < this.state.leadingComments.length; j++) {\n if (\n this.state.leadingComments[j].end < this.state.commentPreviousNode.end\n ) {\n this.state.leadingComments.splice(j, 1);\n j--;\n }\n }\n\n const newTrailingComments = [];\n for (let i = 0; i < this.state.leadingComments.length; i++) {\n const leadingComment = this.state.leadingComments[i];\n if (leadingComment.end < node.end) {\n newTrailingComments.push(leadingComment);\n\n // Perf: we don't need to splice if we are going to reset the array anyway\n if (!takeAllComments) {\n this.state.leadingComments.splice(i, 1);\n i--;\n }\n } else {\n if (node.trailingComments === undefined) {\n node.trailingComments = [];\n }\n node.trailingComments.push(leadingComment);\n }\n }\n if (takeAllComments) this.state.leadingComments = [];\n\n if (newTrailingComments.length > 0) {\n lastElement.trailingComments = newTrailingComments;\n } else if (lastElement.trailingComments !== undefined) {\n lastElement.trailingComments = [];\n }\n }\n\n processComment(node: Node): void {\n if (node.type === \"Program\" && node.body.length > 0) return;\n\n const stack = this.state.commentStack;\n\n let firstChild, lastChild, trailingComments, i, j;\n\n if (this.state.trailingComments.length > 0) {\n // If the first comment in trailingComments comes after the\n // current node, then we're good - all comments in the array will\n // come after the node and so it's safe to add them as official\n // trailingComments.\n if (this.state.trailingComments[0].start >= node.end) {\n trailingComments = this.state.trailingComments;\n this.state.trailingComments = [];\n } else {\n // Otherwise, if the first comment doesn't come after the\n // current node, that means we have a mix of leading and trailing\n // comments in the array and that leadingComments contains the\n // same items as trailingComments. Reset trailingComments to\n // zero items and we'll handle this by evaluating leadingComments\n // later.\n this.state.trailingComments.length = 0;\n }\n } else if (stack.length > 0) {\n const lastInStack = last(stack);\n if (\n lastInStack.trailingComments &&\n lastInStack.trailingComments[0].start >= node.end\n ) {\n trailingComments = lastInStack.trailingComments;\n delete lastInStack.trailingComments;\n }\n }\n\n // Eating the stack.\n if (stack.length > 0 && last(stack).start >= node.start) {\n firstChild = stack.pop();\n }\n\n while (stack.length > 0 && last(stack).start >= node.start) {\n lastChild = stack.pop();\n }\n\n if (!lastChild && firstChild) lastChild = firstChild;\n\n // Adjust comments that follow a trailing comma on the last element in a\n // comma separated list of nodes to be the trailing comments on the last\n // element\n if (firstChild) {\n switch (node.type) {\n case \"ObjectExpression\":\n this.adjustCommentsAfterTrailingComma(node, node.properties);\n break;\n case \"ObjectPattern\":\n this.adjustCommentsAfterTrailingComma(node, node.properties, true);\n break;\n case \"CallExpression\":\n this.adjustCommentsAfterTrailingComma(node, node.arguments);\n break;\n case \"ArrayExpression\":\n this.adjustCommentsAfterTrailingComma(node, node.elements);\n break;\n case \"ArrayPattern\":\n this.adjustCommentsAfterTrailingComma(node, node.elements, true);\n break;\n }\n } else if (\n this.state.commentPreviousNode &&\n ((this.state.commentPreviousNode.type === \"ImportSpecifier\" &&\n node.type !== \"ImportSpecifier\") ||\n (this.state.commentPreviousNode.type === \"ExportSpecifier\" &&\n node.type !== \"ExportSpecifier\"))\n ) {\n this.adjustCommentsAfterTrailingComma(node, [\n this.state.commentPreviousNode,\n ]);\n }\n\n if (lastChild) {\n if (lastChild.leadingComments) {\n if (\n lastChild !== node &&\n lastChild.leadingComments.length > 0 &&\n last(lastChild.leadingComments).end <= node.start\n ) {\n node.leadingComments = lastChild.leadingComments;\n delete lastChild.leadingComments;\n } else {\n // A leading comment for an anonymous class had been stolen by its first ClassMethod,\n // so this takes back the leading comment.\n // See also: https://github.com/eslint/espree/issues/158\n for (i = lastChild.leadingComments.length - 2; i >= 0; --i) {\n if (lastChild.leadingComments[i].end <= node.start) {\n node.leadingComments = lastChild.leadingComments.splice(0, i + 1);\n break;\n }\n }\n }\n }\n } else if (this.state.leadingComments.length > 0) {\n if (last(this.state.leadingComments).end <= node.start) {\n if (this.state.commentPreviousNode) {\n for (j = 0; j < this.state.leadingComments.length; j++) {\n if (\n this.state.leadingComments[j].end <\n this.state.commentPreviousNode.end\n ) {\n this.state.leadingComments.splice(j, 1);\n j--;\n }\n }\n }\n if (this.state.leadingComments.length > 0) {\n node.leadingComments = this.state.leadingComments;\n this.state.leadingComments = [];\n }\n } else {\n // https://github.com/eslint/espree/issues/2\n //\n // In special cases, such as return (without a value) and\n // debugger, all comments will end up as leadingComments and\n // will otherwise be eliminated. This step runs when the\n // commentStack is empty and there are comments left\n // in leadingComments.\n //\n // This loop figures out the stopping point between the actual\n // leading and trailing comments by finding the location of the\n // first comment that comes after the given node.\n for (i = 0; i < this.state.leadingComments.length; i++) {\n if (this.state.leadingComments[i].end > node.start) {\n break;\n }\n }\n\n // Split the array based on the location of the first comment\n // that comes after the node. Keep in mind that this could\n // result in an empty array, and if so, the array must be\n // deleted.\n const leadingComments = this.state.leadingComments.slice(0, i);\n\n if (leadingComments.length) {\n node.leadingComments = leadingComments;\n }\n\n // Similarly, trailing comments are attached later. The variable\n // must be reset to null if there are no trailing comments.\n trailingComments = this.state.leadingComments.slice(i);\n if (trailingComments.length === 0) {\n trailingComments = null;\n }\n }\n }\n\n this.state.commentPreviousNode = node;\n\n if (trailingComments) {\n if (\n trailingComments.length &&\n trailingComments[0].start >= node.start &&\n last(trailingComments).end <= node.end\n ) {\n node.innerComments = trailingComments;\n } else {\n node.trailingComments = trailingComments;\n }\n }\n\n stack.push(node);\n }\n}\n","// @flow\n\nimport { getLineInfo, type Position } from \"../util/location\";\nimport CommentsParser from \"./comments\";\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\nexport default class LocationParser extends CommentsParser {\n +isLookahead: boolean;\n\n getLocationForPosition(pos: number): Position {\n let loc;\n if (pos === this.state.start) loc = this.state.startLoc;\n else if (pos === this.state.lastTokStart) loc = this.state.lastTokStartLoc;\n else if (pos === this.state.end) loc = this.state.endLoc;\n else if (pos === this.state.lastTokEnd) loc = this.state.lastTokEndLoc;\n else loc = getLineInfo(this.input, pos);\n\n return loc;\n }\n\n raise(\n pos: number,\n message: string,\n {\n missingPluginNames,\n code,\n }: {\n missingPluginNames?: Array<string>,\n code?: string,\n } = {},\n ): Error | empty {\n const loc = this.getLocationForPosition(pos);\n\n message += ` (${loc.line}:${loc.column})`;\n // $FlowIgnore\n const err: SyntaxError & { pos: number, loc: Position } = new SyntaxError(\n message,\n );\n err.pos = pos;\n err.loc = loc;\n if (missingPluginNames) {\n err.missingPlugin = missingPluginNames;\n }\n if (code !== undefined) {\n err.code = code;\n }\n\n if (this.options.errorRecovery) {\n if (!this.isLookahead) this.state.errors.push(err);\n return err;\n } else {\n throw err;\n }\n }\n}\n","// @flow\n\nimport type { Options } from \"../options\";\nimport * as N from \"../types\";\nimport { Position } from \"../util/location\";\n\nimport { types as ct, type TokContext } from \"./context\";\nimport { types as tt, type TokenType } from \"./types\";\n\ntype TopicContextState = {\n // When a topic binding has been currently established,\n // then this is 1. Otherwise, it is 0. This is forwards compatible\n // with a future plugin for multiple lexical topics.\n maxNumOfResolvableTopics: number,\n\n // When a topic binding has been currently established, and if that binding\n // has been used as a topic reference `#`, then this is 0. Otherwise, it is\n // `null`. This is forwards compatible with a future plugin for multiple\n // lexical topics.\n maxTopicIndex: null | 0,\n};\n\nexport default class State {\n strict: boolean;\n curLine: number;\n\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n startLoc: Position;\n endLoc: Position;\n\n init(options: Options): void {\n this.strict =\n options.strictMode === false ? false : options.sourceType === \"module\";\n\n this.curLine = options.startLine;\n this.startLoc = this.endLoc = this.curPosition();\n }\n\n errors: SyntaxError[] = [];\n\n // Used to signify the start of a potential arrow function\n potentialArrowAt: number = -1;\n\n // Used to signify the start of an expression which looks like a\n // typed arrow function, but it isn't\n // e.g. a ? (b) : c => d\n // ^\n noArrowAt: number[] = [];\n\n // Used to signify the start of an expression whose params, if it looks like\n // an arrow function, shouldn't be converted to assignable nodes.\n // This is used to defer the validation of typed arrow functions inside\n // conditional expressions.\n // e.g. a ? (b) : c => d\n // ^\n noArrowParamsConversionAt: number[] = [];\n\n // Flags to track\n inParameters: boolean = false;\n maybeInArrowParameters: boolean = false;\n inPipeline: boolean = false;\n inType: boolean = false;\n noAnonFunctionType: boolean = false;\n inPropertyName: boolean = false;\n hasFlowComment: boolean = false;\n isIterator: boolean = false;\n\n // For the smartPipelines plugin:\n topicContext: TopicContextState = {\n maxNumOfResolvableTopics: 0,\n maxTopicIndex: null,\n };\n\n // For the F# plugin\n soloAwait: boolean = false;\n inFSharpPipelineDirectBody: boolean = false;\n\n // Labels in scope.\n labels: Array<{\n kind: ?(\"loop\" | \"switch\"),\n name?: ?string,\n statementStart?: number,\n }> = [];\n\n // Leading decorators. Last element of the stack represents the decorators in current context.\n // Supports nesting of decorators, e.g. @foo(@bar class inner {}) class outer {}\n // where @foo belongs to the outer class and @bar to the inner\n decoratorStack: Array<Array<N.Decorator>> = [[]];\n\n // Positions to delayed-check that yield/await does not exist in default parameters.\n yieldPos: number = -1;\n awaitPos: number = -1;\n\n // Comment store.\n comments: Array<N.Comment> = [];\n\n // Comment attachment store\n trailingComments: Array<N.Comment> = [];\n leadingComments: Array<N.Comment> = [];\n commentStack: Array<{\n start: number,\n leadingComments: ?Array<N.Comment>,\n trailingComments: ?Array<N.Comment>,\n type: string,\n }> = [];\n // $FlowIgnore this is initialized when the parser starts.\n commentPreviousNode: N.Node = null;\n\n // The current position of the tokenizer in the input.\n pos: number = 0;\n lineStart: number = 0;\n\n // Properties of the current token:\n // Its type\n type: TokenType = tt.eof;\n\n // For tokens that include more information than their type, the value\n value: any = null;\n\n // Its start and end offset\n start: number = 0;\n end: number = 0;\n\n // Position information for the previous token\n // $FlowIgnore this is initialized when generating the second token.\n lastTokEndLoc: Position = null;\n // $FlowIgnore this is initialized when generating the second token.\n lastTokStartLoc: Position = null;\n lastTokStart: number = 0;\n lastTokEnd: number = 0;\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n context: Array<TokContext> = [ct.braceStatement];\n exprAllowed: boolean = true;\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n containsEsc: boolean = false;\n\n // TODO\n containsOctal: boolean = false;\n octalPosition: ?number = null;\n\n // Names of exports store. `default` is stored as a name for both\n // `export default foo;` and `export { foo as default };`.\n exportedIdentifiers: Array<string> = [];\n\n // Tokens length in token store\n tokensLength: number = 0;\n\n curPosition(): Position {\n return new Position(this.curLine, this.pos - this.lineStart);\n }\n\n clone(skipArrays?: boolean): State {\n const state = new State();\n const keys = Object.keys(this);\n for (let i = 0, length = keys.length; i < length; i++) {\n const key = keys[i];\n // $FlowIgnore\n let val = this[key];\n\n if (!skipArrays && Array.isArray(val)) {\n val = val.slice();\n }\n\n // $FlowIgnore\n state[key] = val;\n }\n\n return state;\n }\n}\n","// @flow\n\nimport type { Options } from \"../options\";\nimport * as N from \"../types\";\nimport type { Position } from \"../util/location\";\nimport * as charCodes from \"charcodes\";\nimport { isIdentifierStart, isIdentifierChar } from \"../util/identifier\";\nimport { types as tt, keywords as keywordTypes, type TokenType } from \"./types\";\nimport { type TokContext, types as ct } from \"./context\";\nimport LocationParser from \"../parser/location\";\nimport { SourceLocation } from \"../util/location\";\nimport {\n lineBreak,\n lineBreakG,\n isNewLine,\n isWhitespace,\n skipWhiteSpace,\n} from \"../util/whitespace\";\nimport State from \"./state\";\n\nconst VALID_REGEX_FLAGS = new Set([\"g\", \"m\", \"s\", \"i\", \"y\", \"u\"]);\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\n\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: [\n charCodes.dot,\n charCodes.uppercaseB,\n charCodes.uppercaseE,\n charCodes.uppercaseO,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseB,\n charCodes.lowercaseE,\n charCodes.lowercaseO,\n ],\n hex: [\n charCodes.dot,\n charCodes.uppercaseX,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseX,\n ],\n};\n\nconst allowedNumericSeparatorSiblings = {};\nallowedNumericSeparatorSiblings.bin = [\n // 0 - 1\n charCodes.digit0,\n charCodes.digit1,\n];\nallowedNumericSeparatorSiblings.oct = [\n // 0 - 7\n ...allowedNumericSeparatorSiblings.bin,\n\n charCodes.digit2,\n charCodes.digit3,\n charCodes.digit4,\n charCodes.digit5,\n charCodes.digit6,\n charCodes.digit7,\n];\nallowedNumericSeparatorSiblings.dec = [\n // 0 - 9\n ...allowedNumericSeparatorSiblings.oct,\n\n charCodes.digit8,\n charCodes.digit9,\n];\n\nallowedNumericSeparatorSiblings.hex = [\n // 0 - 9, A - F, a - f,\n ...allowedNumericSeparatorSiblings.dec,\n\n charCodes.uppercaseA,\n charCodes.uppercaseB,\n charCodes.uppercaseC,\n charCodes.uppercaseD,\n charCodes.uppercaseE,\n charCodes.uppercaseF,\n\n charCodes.lowercaseA,\n charCodes.lowercaseB,\n charCodes.lowercaseC,\n charCodes.lowercaseD,\n charCodes.lowercaseE,\n charCodes.lowercaseF,\n];\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nexport class Token {\n constructor(state: State) {\n this.type = state.type;\n this.value = state.value;\n this.start = state.start;\n this.end = state.end;\n this.loc = new SourceLocation(state.startLoc, state.endLoc);\n }\n\n type: TokenType;\n value: any;\n start: number;\n end: number;\n loc: SourceLocation;\n}\n\n// ## Tokenizer\n\nexport default class Tokenizer extends LocationParser {\n // Forward-declarations\n // parser/util.js\n +unexpected: (pos?: ?number, messageOrType?: string | TokenType) => empty;\n\n isLookahead: boolean;\n\n // Token store.\n tokens: Array<Token | N.Comment> = [];\n\n constructor(options: Options, input: string) {\n super();\n this.state = new State();\n this.state.init(options);\n this.input = input;\n this.length = input.length;\n this.isLookahead = false;\n }\n\n pushToken(token: Token | N.Comment) {\n // Pop out invalid tokens trapped by try-catch parsing.\n // Those parsing branches are mainly created by typescript and flow plugins.\n this.tokens.length = this.state.tokensLength;\n this.tokens.push(token);\n ++this.state.tokensLength;\n }\n\n // Move to the next token\n\n next(): void {\n if (!this.isLookahead) {\n this.checkKeywordEscapes();\n if (this.options.tokens) {\n this.pushToken(new Token(this.state));\n }\n }\n\n this.state.lastTokEnd = this.state.end;\n this.state.lastTokStart = this.state.start;\n this.state.lastTokEndLoc = this.state.endLoc;\n this.state.lastTokStartLoc = this.state.startLoc;\n this.nextToken();\n }\n\n // TODO\n\n eat(type: TokenType): boolean {\n if (this.match(type)) {\n this.next();\n return true;\n } else {\n return false;\n }\n }\n\n // TODO\n\n match(type: TokenType): boolean {\n return this.state.type === type;\n }\n\n // TODO\n\n lookahead(): State {\n const old = this.state;\n this.state = old.clone(true);\n\n this.isLookahead = true;\n this.next();\n this.isLookahead = false;\n\n const curr = this.state;\n this.state = old;\n return curr;\n }\n\n nextTokenStart(): number {\n const thisTokEnd = this.state.pos;\n skipWhiteSpace.lastIndex = thisTokEnd;\n const skip = skipWhiteSpace.exec(this.input);\n // $FlowIgnore: The skipWhiteSpace ensures to match any string\n return thisTokEnd + skip[0].length;\n }\n\n lookaheadCharCode(): number {\n return this.input.charCodeAt(this.nextTokenStart());\n }\n\n // Toggle strict mode. Re-reads the next number or string to please\n // pedantic tests (`\"use strict\"; 010;` should fail).\n\n setStrict(strict: boolean): void {\n this.state.strict = strict;\n if (!this.match(tt.num) && !this.match(tt.string)) return;\n this.state.pos = this.state.start;\n while (this.state.pos < this.state.lineStart) {\n this.state.lineStart =\n this.input.lastIndexOf(\"\\n\", this.state.lineStart - 2) + 1;\n --this.state.curLine;\n }\n this.nextToken();\n }\n\n curContext(): TokContext {\n return this.state.context[this.state.context.length - 1];\n }\n\n // Read a single token, updating the parser object's token-related\n // properties.\n\n nextToken(): void {\n const curContext = this.curContext();\n if (!curContext || !curContext.preserveSpace) this.skipSpace();\n\n this.state.containsOctal = false;\n this.state.octalPosition = null;\n this.state.start = this.state.pos;\n this.state.startLoc = this.state.curPosition();\n if (this.state.pos >= this.length) {\n this.finishToken(tt.eof);\n return;\n }\n\n if (curContext.override) {\n curContext.override(this);\n } else {\n this.getTokenFromCode(this.input.codePointAt(this.state.pos));\n }\n }\n\n pushComment(\n block: boolean,\n text: string,\n start: number,\n end: number,\n startLoc: Position,\n endLoc: Position,\n ): void {\n const comment = {\n type: block ? \"CommentBlock\" : \"CommentLine\",\n value: text,\n start: start,\n end: end,\n loc: new SourceLocation(startLoc, endLoc),\n };\n\n if (this.options.tokens) this.pushToken(comment);\n this.state.comments.push(comment);\n this.addComment(comment);\n }\n\n skipBlockComment(): void {\n const startLoc = this.state.curPosition();\n const start = this.state.pos;\n const end = this.input.indexOf(\"*/\", this.state.pos + 2);\n if (end === -1) throw this.raise(start, \"Unterminated comment\");\n\n this.state.pos = end + 2;\n lineBreakG.lastIndex = start;\n let match;\n while (\n (match = lineBreakG.exec(this.input)) &&\n match.index < this.state.pos\n ) {\n ++this.state.curLine;\n this.state.lineStart = match.index + match[0].length;\n }\n\n // If we are doing a lookahead right now we need to advance the position (above code)\n // but we do not want to push the comment to the state.\n if (this.isLookahead) return;\n\n this.pushComment(\n true,\n this.input.slice(start + 2, end),\n start,\n this.state.pos,\n startLoc,\n this.state.curPosition(),\n );\n }\n\n skipLineComment(startSkip: number): void {\n const start = this.state.pos;\n const startLoc = this.state.curPosition();\n let ch = this.input.charCodeAt((this.state.pos += startSkip));\n if (this.state.pos < this.length) {\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n }\n\n // If we are doing a lookahead right now we need to advance the position (above code)\n // but we do not want to push the comment to the state.\n if (this.isLookahead) return;\n\n this.pushComment(\n false,\n this.input.slice(start + startSkip, this.state.pos),\n start,\n this.state.pos,\n startLoc,\n this.state.curPosition(),\n );\n }\n\n // Called at the start of the parse and after every token. Skips\n // whitespace and comments, and.\n\n skipSpace(): void {\n loop: while (this.state.pos < this.length) {\n const ch = this.input.charCodeAt(this.state.pos);\n switch (ch) {\n case charCodes.space:\n case charCodes.nonBreakingSpace:\n case charCodes.tab:\n ++this.state.pos;\n break;\n case charCodes.carriageReturn:\n if (\n this.input.charCodeAt(this.state.pos + 1) === charCodes.lineFeed\n ) {\n ++this.state.pos;\n }\n\n case charCodes.lineFeed:\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n ++this.state.pos;\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n break;\n\n case charCodes.slash:\n switch (this.input.charCodeAt(this.state.pos + 1)) {\n case charCodes.asterisk:\n this.skipBlockComment();\n break;\n\n case charCodes.slash:\n this.skipLineComment(2);\n break;\n\n default:\n break loop;\n }\n break;\n\n default:\n if (isWhitespace(ch)) {\n ++this.state.pos;\n } else {\n break loop;\n }\n }\n }\n }\n\n // Called at the end of every token. Sets `end`, `val`, and\n // maintains `context` and `exprAllowed`, and skips the space after\n // the token, so that the next one's `start` will point at the\n // right position.\n\n finishToken(type: TokenType, val: any): void {\n this.state.end = this.state.pos;\n this.state.endLoc = this.state.curPosition();\n const prevType = this.state.type;\n this.state.type = type;\n this.state.value = val;\n\n if (!this.isLookahead) this.updateContext(prevType);\n }\n\n // ### Token reading\n\n // This is the function that is called to fetch the next token. It\n // is somewhat obscure, because it works in character codes rather\n // than characters, and because operator parsing has been inlined\n // into it.\n //\n // All in the name of speed.\n\n // number sign is \"#\"\n readToken_numberSign(): void {\n if (this.state.pos === 0 && this.readToken_interpreter()) {\n return;\n }\n\n const nextPos = this.state.pos + 1;\n const next = this.input.charCodeAt(nextPos);\n if (next >= charCodes.digit0 && next <= charCodes.digit9) {\n throw this.raise(this.state.pos, \"Unexpected digit after hash token\");\n }\n\n if (\n this.hasPlugin(\"classPrivateProperties\") ||\n this.hasPlugin(\"classPrivateMethods\") ||\n this.getPluginOption(\"pipelineOperator\", \"proposal\") === \"smart\"\n ) {\n this.finishOp(tt.hash, 1);\n } else {\n throw this.raise(this.state.pos, \"Unexpected character '#'\");\n }\n }\n\n readToken_dot(): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next >= charCodes.digit0 && next <= charCodes.digit9) {\n this.readNumber(true);\n return;\n }\n\n if (\n next === charCodes.dot &&\n this.input.charCodeAt(this.state.pos + 2) === charCodes.dot\n ) {\n this.state.pos += 3;\n this.finishToken(tt.ellipsis);\n } else {\n ++this.state.pos;\n this.finishToken(tt.dot);\n }\n }\n\n readToken_slash(): void {\n // '/'\n if (this.state.exprAllowed && !this.state.inType) {\n ++this.state.pos;\n this.readRegexp();\n return;\n }\n\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === charCodes.equalsTo) {\n this.finishOp(tt.assign, 2);\n } else {\n this.finishOp(tt.slash, 1);\n }\n }\n\n readToken_interpreter(): boolean {\n if (this.state.pos !== 0 || this.length < 2) return false;\n\n const start = this.state.pos;\n this.state.pos += 1;\n\n let ch = this.input.charCodeAt(this.state.pos);\n if (ch !== charCodes.exclamationMark) return false;\n\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n\n const value = this.input.slice(start + 2, this.state.pos);\n\n this.finishToken(tt.interpreterDirective, value);\n\n return true;\n }\n\n readToken_mult_modulo(code: number): void {\n // '%*'\n let type = code === charCodes.asterisk ? tt.star : tt.modulo;\n let width = 1;\n let next = this.input.charCodeAt(this.state.pos + 1);\n const exprAllowed = this.state.exprAllowed;\n\n // Exponentiation operator **\n if (code === charCodes.asterisk && next === charCodes.asterisk) {\n width++;\n next = this.input.charCodeAt(this.state.pos + 2);\n type = tt.exponent;\n }\n\n if (next === charCodes.equalsTo && !exprAllowed) {\n width++;\n type = tt.assign;\n }\n\n this.finishOp(type, width);\n }\n\n readToken_pipe_amp(code: number): void {\n // '||' '&&' '||=' '&&='\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === code) {\n if (this.input.charCodeAt(this.state.pos + 2) === charCodes.equalsTo) {\n this.finishOp(tt.assign, 3);\n } else {\n this.finishOp(\n code === charCodes.verticalBar ? tt.logicalOR : tt.logicalAND,\n 2,\n );\n }\n return;\n }\n\n if (code === charCodes.verticalBar) {\n // '|>'\n if (next === charCodes.greaterThan) {\n this.finishOp(tt.pipeline, 2);\n return;\n }\n }\n\n if (next === charCodes.equalsTo) {\n this.finishOp(tt.assign, 2);\n return;\n }\n\n this.finishOp(\n code === charCodes.verticalBar ? tt.bitwiseOR : tt.bitwiseAND,\n 1,\n );\n }\n\n readToken_caret(): void {\n // '^'\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === charCodes.equalsTo) {\n this.finishOp(tt.assign, 2);\n } else {\n this.finishOp(tt.bitwiseXOR, 1);\n }\n }\n\n readToken_plus_min(code: number): void {\n // '+-'\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === code) {\n if (\n next === charCodes.dash &&\n !this.inModule &&\n this.input.charCodeAt(this.state.pos + 2) === charCodes.greaterThan &&\n (this.state.lastTokEnd === 0 ||\n lineBreak.test(\n this.input.slice(this.state.lastTokEnd, this.state.pos),\n ))\n ) {\n // A `-->` line comment\n this.skipLineComment(3);\n this.skipSpace();\n this.nextToken();\n return;\n }\n this.finishOp(tt.incDec, 2);\n return;\n }\n\n if (next === charCodes.equalsTo) {\n this.finishOp(tt.assign, 2);\n } else {\n this.finishOp(tt.plusMin, 1);\n }\n }\n\n readToken_lt_gt(code: number): void {\n // '<>'\n const next = this.input.charCodeAt(this.state.pos + 1);\n let size = 1;\n\n if (next === code) {\n size =\n code === charCodes.greaterThan &&\n this.input.charCodeAt(this.state.pos + 2) === charCodes.greaterThan\n ? 3\n : 2;\n if (this.input.charCodeAt(this.state.pos + size) === charCodes.equalsTo) {\n this.finishOp(tt.assign, size + 1);\n return;\n }\n this.finishOp(tt.bitShift, size);\n return;\n }\n\n if (\n next === charCodes.exclamationMark &&\n code === charCodes.lessThan &&\n !this.inModule &&\n this.input.charCodeAt(this.state.pos + 2) === charCodes.dash &&\n this.input.charCodeAt(this.state.pos + 3) === charCodes.dash\n ) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4);\n this.skipSpace();\n this.nextToken();\n return;\n }\n\n if (next === charCodes.equalsTo) {\n // <= | >=\n size = 2;\n }\n\n this.finishOp(tt.relational, size);\n }\n\n readToken_eq_excl(code: number): void {\n // '=!'\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === charCodes.equalsTo) {\n this.finishOp(\n tt.equality,\n this.input.charCodeAt(this.state.pos + 2) === charCodes.equalsTo\n ? 3\n : 2,\n );\n return;\n }\n if (code === charCodes.equalsTo && next === charCodes.greaterThan) {\n // '=>'\n this.state.pos += 2;\n this.finishToken(tt.arrow);\n return;\n }\n this.finishOp(code === charCodes.equalsTo ? tt.eq : tt.bang, 1);\n }\n\n readToken_question(): void {\n // '?'\n const next = this.input.charCodeAt(this.state.pos + 1);\n const next2 = this.input.charCodeAt(this.state.pos + 2);\n if (next === charCodes.questionMark && !this.state.inType) {\n if (next2 === charCodes.equalsTo) {\n // '??='\n this.finishOp(tt.assign, 3);\n } else {\n // '??'\n this.finishOp(tt.nullishCoalescing, 2);\n }\n } else if (\n next === charCodes.dot &&\n !(next2 >= charCodes.digit0 && next2 <= charCodes.digit9)\n ) {\n // '.' not followed by a number\n this.state.pos += 2;\n this.finishToken(tt.questionDot);\n } else {\n ++this.state.pos;\n this.finishToken(tt.question);\n }\n }\n\n getTokenFromCode(code: number): void {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n\n case charCodes.dot:\n this.readToken_dot();\n return;\n\n // Punctuation tokens.\n case charCodes.leftParenthesis:\n ++this.state.pos;\n this.finishToken(tt.parenL);\n return;\n case charCodes.rightParenthesis:\n ++this.state.pos;\n this.finishToken(tt.parenR);\n return;\n case charCodes.semicolon:\n ++this.state.pos;\n this.finishToken(tt.semi);\n return;\n case charCodes.comma:\n ++this.state.pos;\n this.finishToken(tt.comma);\n return;\n case charCodes.leftSquareBracket:\n ++this.state.pos;\n this.finishToken(tt.bracketL);\n return;\n case charCodes.rightSquareBracket:\n ++this.state.pos;\n this.finishToken(tt.bracketR);\n return;\n case charCodes.leftCurlyBrace:\n ++this.state.pos;\n this.finishToken(tt.braceL);\n return;\n case charCodes.rightCurlyBrace:\n ++this.state.pos;\n this.finishToken(tt.braceR);\n return;\n\n case charCodes.colon:\n if (\n this.hasPlugin(\"functionBind\") &&\n this.input.charCodeAt(this.state.pos + 1) === charCodes.colon\n ) {\n this.finishOp(tt.doubleColon, 2);\n } else {\n ++this.state.pos;\n this.finishToken(tt.colon);\n }\n return;\n\n case charCodes.questionMark:\n this.readToken_question();\n return;\n\n case charCodes.graveAccent:\n ++this.state.pos;\n this.finishToken(tt.backQuote);\n return;\n\n case charCodes.digit0: {\n const next = this.input.charCodeAt(this.state.pos + 1);\n // '0x', '0X' - hex number\n if (next === charCodes.lowercaseX || next === charCodes.uppercaseX) {\n this.readRadixNumber(16);\n return;\n }\n // '0o', '0O' - octal number\n if (next === charCodes.lowercaseO || next === charCodes.uppercaseO) {\n this.readRadixNumber(8);\n return;\n }\n // '0b', '0B' - binary number\n if (next === charCodes.lowercaseB || next === charCodes.uppercaseB) {\n this.readRadixNumber(2);\n return;\n }\n }\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case charCodes.digit1:\n case charCodes.digit2:\n case charCodes.digit3:\n case charCodes.digit4:\n case charCodes.digit5:\n case charCodes.digit6:\n case charCodes.digit7:\n case charCodes.digit8:\n case charCodes.digit9:\n this.readNumber(false);\n return;\n\n // Quotes produce strings.\n case charCodes.quotationMark:\n case charCodes.apostrophe:\n this.readString(code);\n return;\n\n // Operators are parsed inline in tiny state machines. '=' (charCodes.equalsTo) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case charCodes.slash:\n this.readToken_slash();\n return;\n\n case charCodes.percentSign:\n case charCodes.asterisk:\n this.readToken_mult_modulo(code);\n return;\n\n case charCodes.verticalBar:\n case charCodes.ampersand:\n this.readToken_pipe_amp(code);\n return;\n\n case charCodes.caret:\n this.readToken_caret();\n return;\n\n case charCodes.plusSign:\n case charCodes.dash:\n this.readToken_plus_min(code);\n return;\n\n case charCodes.lessThan:\n case charCodes.greaterThan:\n this.readToken_lt_gt(code);\n return;\n\n case charCodes.equalsTo:\n case charCodes.exclamationMark:\n this.readToken_eq_excl(code);\n return;\n\n case charCodes.tilde:\n this.finishOp(tt.tilde, 1);\n return;\n\n case charCodes.atSign:\n ++this.state.pos;\n this.finishToken(tt.at);\n return;\n\n case charCodes.numberSign:\n this.readToken_numberSign();\n return;\n\n case charCodes.backslash:\n this.readWord();\n return;\n\n default:\n if (isIdentifierStart(code)) {\n this.readWord();\n return;\n }\n }\n\n throw this.raise(\n this.state.pos,\n `Unexpected character '${String.fromCodePoint(code)}'`,\n );\n }\n\n finishOp(type: TokenType, size: number): void {\n const str = this.input.slice(this.state.pos, this.state.pos + size);\n this.state.pos += size;\n this.finishToken(type, str);\n }\n\n readRegexp(): void {\n const start = this.state.pos;\n let escaped, inClass;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(start, \"Unterminated regular expression\");\n }\n const ch = this.input.charAt(this.state.pos);\n if (lineBreak.test(ch)) {\n throw this.raise(start, \"Unterminated regular expression\");\n }\n if (escaped) {\n escaped = false;\n } else {\n if (ch === \"[\") {\n inClass = true;\n } else if (ch === \"]\" && inClass) {\n inClass = false;\n } else if (ch === \"/\" && !inClass) {\n break;\n }\n escaped = ch === \"\\\\\";\n }\n ++this.state.pos;\n }\n const content = this.input.slice(start, this.state.pos);\n ++this.state.pos;\n\n let mods = \"\";\n\n while (this.state.pos < this.length) {\n const char = this.input[this.state.pos];\n const charCode = this.input.codePointAt(this.state.pos);\n\n if (VALID_REGEX_FLAGS.has(char)) {\n if (mods.indexOf(char) > -1) {\n this.raise(this.state.pos + 1, \"Duplicate regular expression flag\");\n }\n } else if (\n isIdentifierChar(charCode) ||\n charCode === charCodes.backslash\n ) {\n this.raise(this.state.pos + 1, \"Invalid regular expression flag\");\n } else {\n break;\n }\n\n ++this.state.pos;\n mods += char;\n }\n\n this.finishToken(tt.regexp, {\n pattern: content,\n flags: mods,\n });\n }\n\n // Read an integer in the given radix. Return null if zero digits\n // were read, the integer value otherwise. When `len` is given, this\n // will return `null` unless the integer has exactly `len` digits.\n // When `forceLen` is `true`, it means that we already know that in case\n // of a malformed number we have to skip `len` characters anyway, instead\n // of bailing out early. For example, in \"\\u{123Z}\" we want to read up to }\n // anyway, while in \"\\u00Z\" we will stop at Z instead of consuming four\n // characters (and thus the closing quote).\n\n readInt(\n radix: number,\n len?: number,\n forceLen?: boolean,\n allowNumSeparator: boolean = true,\n ): number | null {\n const start = this.state.pos;\n const forbiddenSiblings =\n radix === 16\n ? forbiddenNumericSeparatorSiblings.hex\n : forbiddenNumericSeparatorSiblings.decBinOct;\n const allowedSiblings =\n radix === 16\n ? allowedNumericSeparatorSiblings.hex\n : radix === 10\n ? allowedNumericSeparatorSiblings.dec\n : radix === 8\n ? allowedNumericSeparatorSiblings.oct\n : allowedNumericSeparatorSiblings.bin;\n\n let invalid = false;\n let total = 0;\n\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = this.input.charCodeAt(this.state.pos);\n let val;\n\n if (this.hasPlugin(\"numericSeparator\")) {\n if (code === charCodes.underscore) {\n const prev = this.input.charCodeAt(this.state.pos - 1);\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (allowedSiblings.indexOf(next) === -1) {\n this.raise(\n this.state.pos,\n \"A numeric separator is only allowed between two digits\",\n );\n } else if (\n forbiddenSiblings.indexOf(prev) > -1 ||\n forbiddenSiblings.indexOf(next) > -1 ||\n Number.isNaN(next)\n ) {\n this.raise(\n this.state.pos,\n \"A numeric separator is only allowed between two digits\",\n );\n }\n\n if (!allowNumSeparator) {\n this.raise(\n this.state.pos,\n \"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences\",\n );\n }\n\n // Ignore this _ character\n ++this.state.pos;\n continue;\n }\n }\n\n if (code >= charCodes.lowercaseA) {\n val = code - charCodes.lowercaseA + charCodes.lineFeed;\n } else if (code >= charCodes.uppercaseA) {\n val = code - charCodes.uppercaseA + charCodes.lineFeed;\n } else if (charCodes.isDigit(code)) {\n val = code - charCodes.digit0; // 0-9\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n // If we are in \"errorRecovery\" mode and we found a digit which is too big,\n // don't break the loop.\n\n if (this.options.errorRecovery && val <= 9) {\n val = 0;\n this.raise(\n this.state.start + i + 2,\n \"Expected number in radix \" + radix,\n );\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++this.state.pos;\n total = total * radix + val;\n }\n if (\n this.state.pos === start ||\n (len != null && this.state.pos - start !== len) ||\n invalid\n ) {\n return null;\n }\n\n return total;\n }\n\n readRadixNumber(radix: number): void {\n const start = this.state.pos;\n let isBigInt = false;\n\n this.state.pos += 2; // 0x\n const val = this.readInt(radix);\n if (val == null) {\n this.raise(this.state.start + 2, \"Expected number in radix \" + radix);\n }\n\n if (this.hasPlugin(\"bigInt\")) {\n if (this.input.charCodeAt(this.state.pos) === charCodes.lowercaseN) {\n ++this.state.pos;\n isBigInt = true;\n }\n }\n\n if (isIdentifierStart(this.input.codePointAt(this.state.pos))) {\n throw this.raise(this.state.pos, \"Identifier directly after number\");\n }\n\n if (isBigInt) {\n const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, \"\");\n this.finishToken(tt.bigint, str);\n return;\n }\n\n this.finishToken(tt.num, val);\n }\n\n // Read an integer, octal integer, or floating-point number.\n\n readNumber(startsWithDot: boolean): void {\n const start = this.state.pos;\n let isFloat = false;\n let isBigInt = false;\n let isNonOctalDecimalInt = false;\n\n if (!startsWithDot && this.readInt(10) === null) {\n this.raise(start, \"Invalid number\");\n }\n let octal =\n this.state.pos - start >= 2 &&\n this.input.charCodeAt(start) === charCodes.digit0;\n if (octal) {\n if (this.state.strict) {\n this.raise(\n start,\n \"Legacy octal literals are not allowed in strict mode\",\n );\n }\n if (/[89]/.test(this.input.slice(start, this.state.pos))) {\n octal = false;\n isNonOctalDecimalInt = true;\n }\n }\n\n let next = this.input.charCodeAt(this.state.pos);\n if (next === charCodes.dot && !octal) {\n ++this.state.pos;\n this.readInt(10);\n isFloat = true;\n next = this.input.charCodeAt(this.state.pos);\n }\n\n if (\n (next === charCodes.uppercaseE || next === charCodes.lowercaseE) &&\n !octal\n ) {\n next = this.input.charCodeAt(++this.state.pos);\n if (next === charCodes.plusSign || next === charCodes.dash) {\n ++this.state.pos;\n }\n if (this.readInt(10) === null) this.raise(start, \"Invalid number\");\n isFloat = true;\n next = this.input.charCodeAt(this.state.pos);\n }\n\n // disallow numeric separators in non octal decimals and legacy octal likes\n if (this.hasPlugin(\"numericSeparator\") && (octal || isNonOctalDecimalInt)) {\n const underscorePos = this.input\n .slice(start, this.state.pos)\n .indexOf(\"_\");\n if (underscorePos > 0) {\n this.raise(\n underscorePos + start,\n \"Numeric separator can not be used after leading 0\",\n );\n }\n }\n\n if (this.hasPlugin(\"bigInt\")) {\n if (next === charCodes.lowercaseN) {\n // disallow floats, legacy octal syntax and non octal decimals\n // new style octal (\"0o\") is handled in this.readRadixNumber\n if (isFloat || octal || isNonOctalDecimalInt) {\n this.raise(start, \"Invalid BigIntLiteral\");\n }\n ++this.state.pos;\n isBigInt = true;\n }\n }\n\n if (isIdentifierStart(this.input.codePointAt(this.state.pos))) {\n throw this.raise(this.state.pos, \"Identifier directly after number\");\n }\n\n // remove \"_\" for numeric literal separator, and \"n\" for BigInts\n const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, \"\");\n\n if (isBigInt) {\n this.finishToken(tt.bigint, str);\n return;\n }\n\n const val = octal ? parseInt(str, 8) : parseFloat(str);\n this.finishToken(tt.num, val);\n }\n\n // Read a string value, interpreting backslash-escapes.\n\n readCodePoint(throwOnInvalid: boolean): number | null {\n const ch = this.input.charCodeAt(this.state.pos);\n let code;\n\n if (ch === charCodes.leftCurlyBrace) {\n const codePos = ++this.state.pos;\n code = this.readHexChar(\n this.input.indexOf(\"}\", this.state.pos) - this.state.pos,\n true,\n throwOnInvalid,\n );\n ++this.state.pos;\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n this.raise(codePos, \"Code point out of bounds\");\n } else {\n return null;\n }\n }\n } else {\n code = this.readHexChar(4, false, throwOnInvalid);\n }\n return code;\n }\n\n readString(quote: number): void {\n let out = \"\",\n chunkStart = ++this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(this.state.start, \"Unterminated string constant\");\n }\n const ch = this.input.charCodeAt(this.state.pos);\n if (ch === quote) break;\n if (ch === charCodes.backslash) {\n out += this.input.slice(chunkStart, this.state.pos);\n // $FlowFixMe\n out += this.readEscapedChar(false);\n chunkStart = this.state.pos;\n } else if (\n ch === charCodes.lineSeparator ||\n ch === charCodes.paragraphSeparator\n ) {\n ++this.state.pos;\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n } else if (isNewLine(ch)) {\n throw this.raise(this.state.start, \"Unterminated string constant\");\n } else {\n ++this.state.pos;\n }\n }\n out += this.input.slice(chunkStart, this.state.pos++);\n this.finishToken(tt.string, out);\n }\n\n // Reads template string tokens.\n\n readTmplToken(): void {\n let out = \"\",\n chunkStart = this.state.pos,\n containsInvalid = false;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(this.state.start, \"Unterminated template\");\n }\n const ch = this.input.charCodeAt(this.state.pos);\n if (\n ch === charCodes.graveAccent ||\n (ch === charCodes.dollarSign &&\n this.input.charCodeAt(this.state.pos + 1) ===\n charCodes.leftCurlyBrace)\n ) {\n if (this.state.pos === this.state.start && this.match(tt.template)) {\n if (ch === charCodes.dollarSign) {\n this.state.pos += 2;\n this.finishToken(tt.dollarBraceL);\n return;\n } else {\n ++this.state.pos;\n this.finishToken(tt.backQuote);\n return;\n }\n }\n out += this.input.slice(chunkStart, this.state.pos);\n this.finishToken(tt.template, containsInvalid ? null : out);\n return;\n }\n if (ch === charCodes.backslash) {\n out += this.input.slice(chunkStart, this.state.pos);\n const escaped = this.readEscapedChar(true);\n if (escaped === null) {\n containsInvalid = true;\n } else {\n out += escaped;\n }\n chunkStart = this.state.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n ++this.state.pos;\n switch (ch) {\n case charCodes.carriageReturn:\n if (this.input.charCodeAt(this.state.pos) === charCodes.lineFeed) {\n ++this.state.pos;\n }\n case charCodes.lineFeed:\n out += \"\\n\";\n break;\n default:\n out += String.fromCharCode(ch);\n break;\n }\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n }\n\n // Used to read escaped characters\n\n readEscapedChar(inTemplate: boolean): string | null {\n const throwOnInvalid = !inTemplate;\n const ch = this.input.charCodeAt(++this.state.pos);\n ++this.state.pos;\n switch (ch) {\n case charCodes.lowercaseN:\n return \"\\n\";\n case charCodes.lowercaseR:\n return \"\\r\";\n case charCodes.lowercaseX: {\n const code = this.readHexChar(2, false, throwOnInvalid);\n return code === null ? null : String.fromCharCode(code);\n }\n case charCodes.lowercaseU: {\n const code = this.readCodePoint(throwOnInvalid);\n return code === null ? null : String.fromCodePoint(code);\n }\n case charCodes.lowercaseT:\n return \"\\t\";\n case charCodes.lowercaseB:\n return \"\\b\";\n case charCodes.lowercaseV:\n return \"\\u000b\";\n case charCodes.lowercaseF:\n return \"\\f\";\n case charCodes.carriageReturn:\n if (this.input.charCodeAt(this.state.pos) === charCodes.lineFeed) {\n ++this.state.pos;\n }\n case charCodes.lineFeed:\n this.state.lineStart = this.state.pos;\n ++this.state.curLine;\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return \"\";\n case charCodes.digit8:\n case charCodes.digit9:\n if (inTemplate) {\n return null;\n }\n default:\n if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n const codePos = this.state.pos - 1;\n // $FlowFixMe\n let octalStr = this.input\n .substr(this.state.pos - 1, 3)\n .match(/^[0-7]+/)[0];\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n this.state.pos += octalStr.length - 1;\n const next = this.input.charCodeAt(this.state.pos);\n if (\n octalStr !== \"0\" ||\n next === charCodes.digit8 ||\n next === charCodes.digit9\n ) {\n if (inTemplate) {\n return null;\n } else if (this.state.strict) {\n this.raise(codePos, \"Octal literal in strict mode\");\n } else if (!this.state.containsOctal) {\n // These properties are only used to throw an error for an octal which occurs\n // in a directive which occurs prior to a \"use strict\" directive.\n this.state.containsOctal = true;\n this.state.octalPosition = codePos;\n }\n }\n\n return String.fromCharCode(octal);\n }\n\n return String.fromCharCode(ch);\n }\n }\n\n // Used to read character escape sequences ('\\x', '\\u').\n\n readHexChar(\n len: number,\n forceLen: boolean,\n throwOnInvalid: boolean,\n ): number | null {\n const codePos = this.state.pos;\n const n = this.readInt(16, len, forceLen, false);\n if (n === null) {\n if (throwOnInvalid) {\n this.raise(codePos, \"Bad character escape sequence\");\n } else {\n this.state.pos = codePos - 1;\n }\n }\n return n;\n }\n\n // Read an identifier, and return it as a string. Sets `this.state.containsEsc`\n // to whether the word contained a '\\u' escape.\n //\n // Incrementally adds only escaped chars, adding other chunks as-is\n // as a micro-optimization.\n\n readWord1(): string {\n let word = \"\";\n this.state.containsEsc = false;\n const start = this.state.pos;\n let chunkStart = this.state.pos;\n\n while (this.state.pos < this.length) {\n const ch = this.input.codePointAt(this.state.pos);\n if (isIdentifierChar(ch)) {\n this.state.pos += ch <= 0xffff ? 1 : 2;\n } else if (this.state.isIterator && ch === charCodes.atSign) {\n ++this.state.pos;\n } else if (ch === charCodes.backslash) {\n this.state.containsEsc = true;\n\n word += this.input.slice(chunkStart, this.state.pos);\n const escStart = this.state.pos;\n const identifierCheck =\n this.state.pos === start ? isIdentifierStart : isIdentifierChar;\n\n if (this.input.charCodeAt(++this.state.pos) !== charCodes.lowercaseU) {\n this.raise(\n this.state.pos,\n \"Expecting Unicode escape sequence \\\\uXXXX\",\n );\n continue;\n }\n\n ++this.state.pos;\n const esc = this.readCodePoint(true);\n if (esc !== null) {\n if (!identifierCheck(esc)) {\n this.raise(escStart, \"Invalid Unicode escape\");\n }\n\n word += String.fromCodePoint(esc);\n }\n chunkStart = this.state.pos;\n } else {\n break;\n }\n }\n return word + this.input.slice(chunkStart, this.state.pos);\n }\n\n isIterator(word: string): boolean {\n return word === \"@@iterator\" || word === \"@@asyncIterator\";\n }\n\n // Read an identifier or keyword token. Will check for reserved\n // words when necessary.\n\n readWord(): void {\n const word = this.readWord1();\n const type = keywordTypes.get(word) || tt.name;\n\n // Allow @@iterator and @@asyncIterator as a identifier only inside type\n if (\n this.state.isIterator &&\n (!this.isIterator(word) || !this.state.inType)\n ) {\n this.raise(this.state.pos, `Invalid identifier ${word}`);\n }\n\n this.finishToken(type, word);\n }\n\n checkKeywordEscapes(): void {\n const kw = this.state.type.keyword;\n if (kw && this.state.containsEsc) {\n this.raise(this.state.start, `Escape sequence in keyword ${kw}`);\n }\n }\n\n braceIsBlock(prevType: TokenType): boolean {\n const parent = this.curContext();\n if (parent === ct.functionExpression || parent === ct.functionStatement) {\n return true;\n }\n if (\n prevType === tt.colon &&\n (parent === ct.braceStatement || parent === ct.braceExpression)\n ) {\n return !parent.isExpr;\n }\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (\n prevType === tt._return ||\n (prevType === tt.name && this.state.exprAllowed)\n ) {\n return lineBreak.test(\n this.input.slice(this.state.lastTokEnd, this.state.start),\n );\n }\n\n if (\n prevType === tt._else ||\n prevType === tt.semi ||\n prevType === tt.eof ||\n prevType === tt.parenR ||\n prevType === tt.arrow\n ) {\n return true;\n }\n\n if (prevType === tt.braceL) {\n return parent === ct.braceStatement;\n }\n\n if (\n prevType === tt._var ||\n prevType === tt._const ||\n prevType === tt.name\n ) {\n return false;\n }\n\n if (prevType === tt.relational) {\n // `class C<T> { ... }`\n return true;\n }\n\n return !this.state.exprAllowed;\n }\n\n updateContext(prevType: TokenType): void {\n const type = this.state.type;\n let update;\n\n if (type.keyword && (prevType === tt.dot || prevType === tt.questionDot)) {\n this.state.exprAllowed = false;\n } else if ((update = type.updateContext)) {\n update.call(this, prevType);\n } else {\n this.state.exprAllowed = type.beforeExpr;\n }\n }\n}\n","// @flow\n\nimport { types as tt, type TokenType } from \"../tokenizer/types\";\nimport Tokenizer from \"../tokenizer\";\nimport State from \"../tokenizer/state\";\nimport type { Node } from \"../types\";\nimport { lineBreak, skipWhiteSpace } from \"../util/whitespace\";\nimport { isIdentifierChar } from \"../util/identifier\";\nimport * as charCodes from \"charcodes\";\n\nconst literal = /^('|\")((?:\\\\?.)*?)\\1/;\n\ntype TryParse<Node, Error, Thrown, Aborted, FailState> = {\n node: Node,\n error: Error,\n thrown: Thrown,\n aborted: Aborted,\n failState: FailState,\n};\n\n// ## Parser utilities\n\nexport default class UtilParser extends Tokenizer {\n // TODO\n\n addExtra(node: Node, key: string, val: any): void {\n if (!node) return;\n\n const extra = (node.extra = node.extra || {});\n extra[key] = val;\n }\n\n // TODO\n\n isRelational(op: \"<\" | \">\"): boolean {\n return this.match(tt.relational) && this.state.value === op;\n }\n\n isLookaheadRelational(op: \"<\" | \">\"): boolean {\n const next = this.nextTokenStart();\n if (this.input.charAt(next) === op) {\n if (next + 1 === this.input.length) {\n return true;\n }\n const afterNext = this.input.charCodeAt(next + 1);\n return afterNext !== op.charCodeAt(0) && afterNext !== charCodes.equalsTo;\n }\n return false;\n }\n\n // TODO\n\n expectRelational(op: \"<\" | \">\"): void {\n if (this.isRelational(op)) {\n this.next();\n } else {\n this.unexpected(null, tt.relational);\n }\n }\n\n // Tests whether parsed token is a contextual keyword.\n\n isContextual(name: string): boolean {\n return (\n this.match(tt.name) &&\n this.state.value === name &&\n !this.state.containsEsc\n );\n }\n\n isUnparsedContextual(nameStart: number, name: string): boolean {\n const nameEnd = nameStart + name.length;\n return (\n this.input.slice(nameStart, nameEnd) === name &&\n (nameEnd === this.input.length ||\n !isIdentifierChar(this.input.charCodeAt(nameEnd)))\n );\n }\n\n isLookaheadContextual(name: string): boolean {\n const next = this.nextTokenStart();\n return this.isUnparsedContextual(next, name);\n }\n\n // Consumes contextual keyword if possible.\n\n eatContextual(name: string): boolean {\n return this.isContextual(name) && this.eat(tt.name);\n }\n\n // Asserts that following token is given contextual keyword.\n\n expectContextual(name: string, message?: string): void {\n if (!this.eatContextual(name)) this.unexpected(null, message);\n }\n\n // Test whether a semicolon can be inserted at the current position.\n\n canInsertSemicolon(): boolean {\n return (\n this.match(tt.eof) ||\n this.match(tt.braceR) ||\n this.hasPrecedingLineBreak()\n );\n }\n\n hasPrecedingLineBreak(): boolean {\n return lineBreak.test(\n this.input.slice(this.state.lastTokEnd, this.state.start),\n );\n }\n\n // TODO\n\n isLineTerminator(): boolean {\n return this.eat(tt.semi) || this.canInsertSemicolon();\n }\n\n // Consume a semicolon, or, failing that, see if we are allowed to\n // pretend that there is a semicolon at this position.\n\n semicolon(): void {\n if (!this.isLineTerminator()) this.unexpected(null, tt.semi);\n }\n\n // Expect a token of a given type. If found, consume it, otherwise,\n // raise an unexpected token error at given pos.\n\n expect(type: TokenType, pos?: ?number): void {\n this.eat(type) || this.unexpected(pos, type);\n }\n\n // Throws if the current token and the prev one are separated by a space.\n assertNoSpace(message: string = \"Unexpected space.\"): void {\n if (this.state.start > this.state.lastTokEnd) {\n this.raise(this.state.lastTokEnd, message);\n }\n }\n\n // Raise an unexpected token error. Can take the expected token type\n // instead of a message string.\n\n unexpected(\n pos: ?number,\n messageOrType: string | TokenType = \"Unexpected token\",\n ): empty {\n if (typeof messageOrType !== \"string\") {\n messageOrType = `Unexpected token, expected \"${messageOrType.label}\"`;\n }\n throw this.raise(pos != null ? pos : this.state.start, messageOrType);\n }\n\n expectPlugin(name: string, pos?: ?number): true {\n if (!this.hasPlugin(name)) {\n throw this.raise(\n pos != null ? pos : this.state.start,\n `This experimental syntax requires enabling the parser plugin: '${name}'`,\n { missingPluginNames: [name] },\n );\n }\n\n return true;\n }\n\n expectOnePlugin(names: Array<string>, pos?: ?number): void {\n if (!names.some(n => this.hasPlugin(n))) {\n throw this.raise(\n pos != null ? pos : this.state.start,\n `This experimental syntax requires enabling one of the following parser plugin(s): '${names.join(\n \", \",\n )}'`,\n { missingPluginNames: names },\n );\n }\n }\n\n checkYieldAwaitInDefaultParams() {\n if (\n this.state.yieldPos !== -1 &&\n (this.state.awaitPos === -1 || this.state.yieldPos < this.state.awaitPos)\n ) {\n this.raise(\n this.state.yieldPos,\n \"Yield cannot be used as name inside a generator function\",\n );\n }\n if (this.state.awaitPos !== -1) {\n this.raise(\n this.state.awaitPos,\n \"Await cannot be used as name inside an async function\",\n );\n }\n }\n\n strictDirective(start: number): boolean {\n for (;;) {\n // Try to find string literal.\n skipWhiteSpace.lastIndex = start;\n // $FlowIgnore\n start += skipWhiteSpace.exec(this.input)[0].length;\n const match = literal.exec(this.input.slice(start));\n if (!match) break;\n if (match[2] === \"use strict\") return true;\n start += match[0].length;\n\n // Skip semicolon, if any.\n skipWhiteSpace.lastIndex = start;\n // $FlowIgnore\n start += skipWhiteSpace.exec(this.input)[0].length;\n if (this.input[start] === \";\") {\n start++;\n }\n }\n\n return false;\n }\n\n // tryParse will clone parser state.\n // It is expensive and should be used with cautions\n tryParse<T: Node | $ReadOnlyArray<Node>>(\n fn: (abort: (node?: T) => empty) => T,\n oldState: State = this.state.clone(),\n ):\n | TryParse<T, null, false, false, null>\n | TryParse<T | null, SyntaxError, boolean, false, State>\n | TryParse<T | null, null, false, true, State> {\n const abortSignal: { node: T | null } = { node: null };\n try {\n const node = fn((node = null) => {\n abortSignal.node = node;\n throw abortSignal;\n });\n if (this.state.errors.length > oldState.errors.length) {\n const failState = this.state;\n this.state = oldState;\n return {\n node,\n error: (failState.errors[oldState.errors.length]: SyntaxError),\n thrown: false,\n aborted: false,\n failState,\n };\n }\n\n return {\n node,\n error: null,\n thrown: false,\n aborted: false,\n failState: null,\n };\n } catch (error) {\n const failState = this.state;\n this.state = oldState;\n if (error instanceof SyntaxError) {\n return { node: null, error, thrown: true, aborted: false, failState };\n }\n if (error === abortSignal) {\n return {\n node: abortSignal.node,\n error: null,\n thrown: false,\n aborted: true,\n failState,\n };\n }\n\n throw error;\n }\n }\n\n checkExpressionErrors(\n refExpressionErrors: ?ExpressionErrors,\n andThrow: boolean,\n ) {\n if (!refExpressionErrors) return false;\n const { shorthandAssign, doubleProto } = refExpressionErrors;\n if (!andThrow) return shorthandAssign >= 0 || doubleProto >= 0;\n if (shorthandAssign >= 0) {\n this.unexpected(shorthandAssign);\n }\n if (doubleProto >= 0) {\n this.raise(doubleProto, \"Redefinition of __proto__ property\");\n }\n }\n}\n\n/**\n * The ExpressionErrors is a context struct used to track\n * - **shorthandAssign**: track initializer `=` position when parsing ambiguous\n * patterns. When we are sure the parsed pattern is a RHS, which means it is\n * not a pattern, we will throw on this position on invalid assign syntax,\n * otherwise it will be reset to -1\n * - **doubleProto**: track the duplicate `__proto__` key position when parsing\n * ambiguous object patterns. When we are sure the parsed pattern is a RHS,\n * which means it is an object literal, we will throw on this position for\n * __proto__ redefinition, otherwise it will be reset to -1\n */\nexport class ExpressionErrors {\n shorthandAssign = -1;\n doubleProto = -1;\n}\n","// @flow\n\nimport type Parser from \"./index\";\nimport UtilParser from \"./util\";\nimport { SourceLocation, type Position } from \"../util/location\";\nimport type { Comment, Node as NodeType, NodeBase } from \"../types\";\n\n// Start an AST node, attaching a start offset.\n\nclass Node implements NodeBase {\n constructor(parser: Parser, pos: number, loc: Position) {\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n this.loc = new SourceLocation(loc);\n if (parser && parser.options.ranges) this.range = [pos, 0];\n if (parser && parser.filename) this.loc.filename = parser.filename;\n }\n\n type: string;\n start: number;\n end: number;\n loc: SourceLocation;\n range: [number, number];\n leadingComments: Array<Comment>;\n trailingComments: Array<Comment>;\n innerComments: Array<Comment>;\n extra: { [key: string]: any };\n\n __clone(): this {\n // $FlowIgnore\n const newNode: any = new Node();\n const keys = Object.keys(this);\n for (let i = 0, length = keys.length; i < length; i++) {\n const key = keys[i];\n // Do not clone comments that are already attached to the node\n if (\n key !== \"leadingComments\" &&\n key !== \"trailingComments\" &&\n key !== \"innerComments\"\n ) {\n // $FlowIgnore\n newNode[key] = this[key];\n }\n }\n\n return newNode;\n }\n}\n\nexport class NodeUtils extends UtilParser {\n startNode<T: NodeType>(): T {\n // $FlowIgnore\n return new Node(this, this.state.start, this.state.startLoc);\n }\n\n startNodeAt<T: NodeType>(pos: number, loc: Position): T {\n // $FlowIgnore\n return new Node(this, pos, loc);\n }\n\n /** Start a new node with a previous node's location. */\n startNodeAtNode<T: NodeType>(type: NodeType): T {\n return this.startNodeAt(type.start, type.loc.start);\n }\n\n // Finish an AST node, adding `type` and `end` properties.\n\n finishNode<T: NodeType>(node: T, type: string): T {\n return this.finishNodeAt(\n node,\n type,\n this.state.lastTokEnd,\n this.state.lastTokEndLoc,\n );\n }\n\n // Finish node at given position\n\n finishNodeAt<T: NodeType>(\n node: T,\n type: string,\n pos: number,\n loc: Position,\n ): T {\n if (process.env.NODE_ENV !== \"production\" && node.end > 0) {\n throw new Error(\n \"Do not call finishNode*() twice on the same node.\" +\n \" Instead use resetEndLocation() or change type directly.\",\n );\n }\n node.type = type;\n node.end = pos;\n node.loc.end = loc;\n if (this.options.ranges) node.range[1] = pos;\n this.processComment(node);\n return node;\n }\n\n resetStartLocation(node: NodeBase, start: number, startLoc: Position): void {\n node.start = start;\n node.loc.start = startLoc;\n if (this.options.ranges) node.range[0] = start;\n }\n\n resetEndLocation(\n node: NodeBase,\n end?: number = this.state.lastTokEnd,\n endLoc?: Position = this.state.lastTokEndLoc,\n ): void {\n node.end = end;\n node.loc.end = endLoc;\n if (this.options.ranges) node.range[1] = end;\n }\n\n /**\n * Reset the start location of node to the start location of locationNode\n */\n resetStartLocationFromNode(node: NodeBase, locationNode: NodeBase): void {\n this.resetStartLocation(node, locationNode.start, locationNode.loc.start);\n }\n}\n","// @flow\n\nimport * as charCodes from \"charcodes\";\nimport { types as tt, type TokenType } from \"../tokenizer/types\";\nimport type {\n TSParameterProperty,\n Decorator,\n Expression,\n Identifier,\n Node,\n ObjectExpression,\n ObjectPattern,\n Pattern,\n RestElement,\n SpreadElement,\n} from \"../types\";\nimport type { Pos, Position } from \"../util/location\";\nimport {\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n} from \"../util/identifier\";\nimport { NodeUtils } from \"./node\";\nimport { type BindingTypes, BIND_NONE } from \"../util/scopeflags\";\nimport { ExpressionErrors } from \"./util\";\n\nconst unwrapParenthesizedExpression = (node: Node) => {\n return node.type === \"ParenthesizedExpression\"\n ? unwrapParenthesizedExpression(node.expression)\n : node;\n};\n\nexport default class LValParser extends NodeUtils {\n // Forward-declaration: defined in expression.js\n +parseIdentifier: (liberal?: boolean) => Identifier;\n +parseMaybeAssign: (\n noIn?: ?boolean,\n refExpressionErrors?: ?ExpressionErrors,\n afterLeftParse?: Function,\n refNeedsArrowPos?: ?Pos,\n ) => Expression;\n +parseObj: <T: ObjectPattern | ObjectExpression>(\n isPattern: boolean,\n refExpressionErrors?: ?ExpressionErrors,\n ) => T;\n // Forward-declaration: defined in statement.js\n +parseDecorator: () => Decorator;\n\n // Convert existing expression atom to assignable pattern\n // if possible.\n // NOTE: There is a corresponding \"isAssignable\" method in flow.js.\n // When this one is updated, please check if also that one needs to be updated.\n\n toAssignable(node: Node): Node {\n let parenthesized = undefined;\n if (node.type === \"ParenthesizedExpression\" || node.extra?.parenthesized) {\n parenthesized = unwrapParenthesizedExpression(node);\n if (\n parenthesized.type !== \"Identifier\" &&\n parenthesized.type !== \"MemberExpression\"\n ) {\n this.raise(node.start, \"Invalid parenthesized assignment pattern\");\n }\n }\n\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n break;\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n for (\n let i = 0, length = node.properties.length, last = length - 1;\n i < length;\n i++\n ) {\n const prop = node.properties[i];\n const isLast = i === last;\n this.toAssignableObjectExpressionProp(prop, isLast);\n\n if (\n isLast &&\n prop.type === \"RestElement\" &&\n node.extra?.trailingComma\n ) {\n this.raiseRestNotLast(node.extra.trailingComma);\n }\n }\n break;\n\n case \"ObjectProperty\":\n this.toAssignable(node.value);\n break;\n\n case \"SpreadElement\": {\n this.checkToRestConversion(node);\n\n node.type = \"RestElement\";\n const arg = node.argument;\n this.toAssignable(arg);\n break;\n }\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n this.toAssignableList(node.elements, node.extra?.trailingComma);\n break;\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") {\n this.raise(\n node.left.end,\n \"Only '=' operator can be used for specifying default value.\",\n );\n }\n\n node.type = \"AssignmentPattern\";\n delete node.operator;\n this.toAssignable(node.left);\n break;\n\n case \"ParenthesizedExpression\":\n this.toAssignable(((parenthesized: any): Expression));\n break;\n\n default:\n // We don't know how to deal with this node. It will\n // be reported by a later call to checkLVal\n }\n return node;\n }\n\n toAssignableObjectExpressionProp(prop: Node, isLast: boolean) {\n if (prop.type === \"ObjectMethod\") {\n const error =\n prop.kind === \"get\" || prop.kind === \"set\"\n ? \"Object pattern can't contain getter or setter\"\n : \"Object pattern can't contain methods\";\n\n this.raise(prop.key.start, error);\n } else if (prop.type === \"SpreadElement\" && !isLast) {\n this.raiseRestNotLast(prop.start);\n } else {\n this.toAssignable(prop);\n }\n }\n\n // Convert list of expression atoms to binding list.\n\n toAssignableList(\n exprList: Expression[],\n trailingCommaPos?: ?number,\n ): $ReadOnlyArray<Pattern> {\n let end = exprList.length;\n if (end) {\n const last = exprList[end - 1];\n if (last && last.type === \"RestElement\") {\n --end;\n } else if (last && last.type === \"SpreadElement\") {\n last.type = \"RestElement\";\n const arg = last.argument;\n this.toAssignable(arg);\n if (\n arg.type !== \"Identifier\" &&\n arg.type !== \"MemberExpression\" &&\n arg.type !== \"ArrayPattern\" &&\n arg.type !== \"ObjectPattern\"\n ) {\n this.unexpected(arg.start);\n }\n\n if (trailingCommaPos) {\n this.raiseTrailingCommaAfterRest(trailingCommaPos);\n }\n\n --end;\n }\n }\n for (let i = 0; i < end; i++) {\n const elt = exprList[i];\n if (elt) {\n this.toAssignable(elt);\n if (elt.type === \"RestElement\") {\n this.raiseRestNotLast(elt.start);\n }\n }\n }\n return exprList;\n }\n\n // Convert list of expression atoms to a list of\n\n toReferencedList(\n exprList: $ReadOnlyArray<?Expression>,\n isParenthesizedExpr?: boolean, // eslint-disable-line no-unused-vars\n ): $ReadOnlyArray<?Expression> {\n return exprList;\n }\n\n toReferencedListDeep(\n exprList: $ReadOnlyArray<?Expression>,\n isParenthesizedExpr?: boolean,\n ): void {\n this.toReferencedList(exprList, isParenthesizedExpr);\n\n for (const expr of exprList) {\n if (expr && expr.type === \"ArrayExpression\") {\n this.toReferencedListDeep(expr.elements);\n }\n }\n }\n\n // Parses spread element.\n\n parseSpread(\n refExpressionErrors: ?ExpressionErrors,\n refNeedsArrowPos?: ?Pos,\n ): SpreadElement {\n const node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssign(\n false,\n refExpressionErrors,\n undefined,\n refNeedsArrowPos,\n );\n return this.finishNode(node, \"SpreadElement\");\n }\n\n parseRestBinding(): RestElement {\n const node = this.startNode();\n this.next();\n node.argument = this.parseBindingAtom();\n return this.finishNode(node, \"RestElement\");\n }\n\n // Parses lvalue (assignable) atom.\n parseBindingAtom(): Pattern {\n switch (this.state.type) {\n case tt.bracketL: {\n const node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(\n tt.bracketR,\n charCodes.rightSquareBracket,\n true,\n );\n return this.finishNode(node, \"ArrayPattern\");\n }\n\n case tt.braceL:\n return this.parseObj(true);\n }\n\n return this.parseIdentifier();\n }\n\n parseBindingList(\n close: TokenType,\n closeCharCode: $Values<typeof charCodes>,\n allowEmpty?: boolean,\n allowModifiers?: boolean,\n ): $ReadOnlyArray<Pattern | TSParameterProperty> {\n const elts: Array<Pattern | TSParameterProperty> = [];\n let first = true;\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n }\n if (allowEmpty && this.match(tt.comma)) {\n // $FlowFixMe This method returns `$ReadOnlyArray<?Pattern>` if `allowEmpty` is set.\n elts.push(null);\n } else if (this.eat(close)) {\n break;\n } else if (this.match(tt.ellipsis)) {\n elts.push(this.parseAssignableListItemTypes(this.parseRestBinding()));\n this.checkCommaAfterRest(closeCharCode);\n this.expect(close);\n break;\n } else {\n const decorators = [];\n if (this.match(tt.at) && this.hasPlugin(\"decorators\")) {\n this.raise(\n this.state.start,\n \"Stage 2 decorators cannot be used to decorate parameters\",\n );\n }\n while (this.match(tt.at)) {\n decorators.push(this.parseDecorator());\n }\n elts.push(this.parseAssignableListItem(allowModifiers, decorators));\n }\n }\n return elts;\n }\n\n parseAssignableListItem(\n allowModifiers: ?boolean,\n decorators: Decorator[],\n ): Pattern | TSParameterProperty {\n const left = this.parseMaybeDefault();\n this.parseAssignableListItemTypes(left);\n const elt = this.parseMaybeDefault(left.start, left.loc.start, left);\n if (decorators.length) {\n left.decorators = decorators;\n }\n return elt;\n }\n\n parseAssignableListItemTypes(param: Pattern): Pattern {\n return param;\n }\n\n // Parses assignment pattern around given atom if possible.\n\n parseMaybeDefault(\n startPos?: ?number,\n startLoc?: ?Position,\n left?: ?Pattern,\n ): Pattern {\n startLoc = startLoc || this.state.startLoc;\n startPos = startPos || this.state.start;\n left = left || this.parseBindingAtom();\n if (!this.eat(tt.eq)) return left;\n\n const node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.right = this.parseMaybeAssign();\n return this.finishNode(node, \"AssignmentPattern\");\n }\n\n // Verify that a node is an lval — something that can be assigned\n // to.\n\n checkLVal(\n expr: Expression,\n bindingType: BindingTypes = BIND_NONE,\n checkClashes: ?{ [key: string]: boolean },\n contextDescription: string,\n disallowLetBinding?: boolean,\n strictModeChanged?: boolean = false,\n ): void {\n switch (expr.type) {\n case \"Identifier\":\n if (\n this.state.strict &&\n // \"Global\" reserved words have already been checked by parseIdentifier,\n // unless they have been found in the id or parameters of a strict-mode\n // function in a sloppy context.\n (strictModeChanged\n ? isStrictBindReservedWord(expr.name, this.inModule)\n : isStrictBindOnlyReservedWord(expr.name))\n ) {\n this.raise(\n expr.start,\n `${bindingType === BIND_NONE ? \"Assigning to\" : \"Binding\"} '${\n expr.name\n }' in strict mode`,\n );\n }\n\n if (checkClashes) {\n // we need to prefix this with an underscore for the cases where we have a key of\n // `__proto__`. there's a bug in old V8 where the following wouldn't work:\n //\n // > var obj = Object.create(null);\n // undefined\n // > obj.__proto__\n // null\n // > obj.__proto__ = true;\n // true\n // > obj.__proto__\n // null\n const key = `_${expr.name}`;\n\n if (checkClashes[key]) {\n this.raise(expr.start, \"Argument name clash\");\n } else {\n checkClashes[key] = true;\n }\n }\n if (disallowLetBinding && expr.name === \"let\") {\n this.raise(\n expr.start,\n \"'let' is not allowed to be used as a name in 'let' or 'const' declarations.\",\n );\n }\n if (!(bindingType & BIND_NONE)) {\n this.scope.declareName(expr.name, bindingType, expr.start);\n }\n break;\n\n case \"MemberExpression\":\n if (bindingType !== BIND_NONE) {\n this.raise(expr.start, \"Binding member expression\");\n }\n break;\n\n case \"ObjectPattern\":\n for (let prop of expr.properties) {\n if (prop.type === \"ObjectProperty\") prop = prop.value;\n // If we find here an ObjectMethod, it's because this was originally\n // an ObjectExpression which has then been converted.\n // toAssignable already reported this error with a nicer message.\n else if (prop.type === \"ObjectMethod\") continue;\n\n this.checkLVal(\n prop,\n bindingType,\n checkClashes,\n \"object destructuring pattern\",\n disallowLetBinding,\n );\n }\n break;\n\n case \"ArrayPattern\":\n for (const elem of expr.elements) {\n if (elem) {\n this.checkLVal(\n elem,\n bindingType,\n checkClashes,\n \"array destructuring pattern\",\n disallowLetBinding,\n );\n }\n }\n break;\n\n case \"AssignmentPattern\":\n this.checkLVal(\n expr.left,\n bindingType,\n checkClashes,\n \"assignment pattern\",\n );\n break;\n\n case \"RestElement\":\n this.checkLVal(\n expr.argument,\n bindingType,\n checkClashes,\n \"rest element\",\n );\n break;\n\n case \"ParenthesizedExpression\":\n this.checkLVal(\n expr.expression,\n bindingType,\n checkClashes,\n \"parenthesized expression\",\n );\n break;\n\n default: {\n const message =\n (bindingType === BIND_NONE\n ? \"Invalid\"\n : /* istanbul ignore next */ \"Binding invalid\") +\n \" left-hand side\" +\n (contextDescription\n ? \" in \" + contextDescription\n : /* istanbul ignore next */ \"expression\");\n this.raise(expr.start, message);\n }\n }\n }\n\n checkToRestConversion(node: SpreadElement): void {\n if (\n node.argument.type !== \"Identifier\" &&\n node.argument.type !== \"MemberExpression\"\n ) {\n this.raise(node.argument.start, \"Invalid rest operator's argument\");\n }\n }\n\n checkCommaAfterRest(close: $Values<typeof charCodes>): void {\n if (this.match(tt.comma)) {\n if (this.lookaheadCharCode() === close) {\n this.raiseTrailingCommaAfterRest(this.state.start);\n } else {\n this.raiseRestNotLast(this.state.start);\n }\n }\n }\n\n raiseRestNotLast(pos: number) {\n throw this.raise(pos, `Rest element must be last element`);\n }\n\n raiseTrailingCommaAfterRest(pos: number) {\n this.raise(pos, `Unexpected trailing comma after rest element`);\n }\n}\n","// @flow\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\nimport { types as tt, type TokenType } from \"../tokenizer/types\";\nimport { types as ct } from \"../tokenizer/context\";\nimport * as N from \"../types\";\nimport LValParser from \"./lval\";\nimport {\n isKeyword,\n isReservedWord,\n isStrictReservedWord,\n isStrictBindReservedWord,\n} from \"../util/identifier\";\nimport type { Pos, Position } from \"../util/location\";\nimport * as charCodes from \"charcodes\";\nimport {\n BIND_OUTSIDE,\n BIND_VAR,\n functionFlags,\n SCOPE_ARROW,\n SCOPE_CLASS,\n SCOPE_DIRECT_SUPER,\n SCOPE_SUPER,\n SCOPE_PROGRAM,\n SCOPE_ASYNC,\n} from \"../util/scopeflags\";\nimport { ExpressionErrors } from \"./util\";\n\nexport default class ExpressionParser extends LValParser {\n // Forward-declaration: defined in statement.js\n +parseBlock: (\n allowDirectives?: boolean,\n createNewLexicalScope?: boolean,\n ) => N.BlockStatement;\n +parseClass: (\n node: N.Class,\n isStatement: boolean,\n optionalId?: boolean,\n ) => N.Class;\n +parseDecorators: (allowExport?: boolean) => void;\n +parseFunction: <T: N.NormalFunction>(\n node: T,\n statement?: number,\n allowExpressionBody?: boolean,\n isAsync?: boolean,\n ) => T;\n +parseFunctionParams: (node: N.Function, allowModifiers?: boolean) => void;\n +takeDecorators: (node: N.HasDecorators) => void;\n\n // Check if property __proto__ has been used more than once.\n // If the expression is a destructuring assignment, then __proto__ may appear\n // multiple times. Otherwise, __proto__ is a duplicated key.\n\n checkDuplicatedProto(\n prop: N.ObjectMember | N.SpreadElement,\n protoRef: { used: boolean },\n refExpressionErrors: ?ExpressionErrors,\n ): void {\n if (\n prop.type === \"SpreadElement\" ||\n prop.computed ||\n prop.kind ||\n // $FlowIgnore\n prop.shorthand\n ) {\n return;\n }\n\n const key = prop.key;\n // It is either an Identifier or a String/NumericLiteral\n const name = key.type === \"Identifier\" ? key.name : String(key.value);\n\n if (name === \"__proto__\") {\n if (protoRef.used) {\n if (refExpressionErrors) {\n // Store the first redefinition's position, otherwise ignore because\n // we are parsing ambiguous pattern\n if (refExpressionErrors.doubleProto === -1) {\n refExpressionErrors.doubleProto = key.start;\n }\n } else {\n this.raise(key.start, \"Redefinition of __proto__ property\");\n }\n }\n\n protoRef.used = true;\n }\n }\n\n // Convenience method to parse an Expression only\n getExpression(): N.Expression {\n let scopeFlags = SCOPE_PROGRAM;\n if (this.hasPlugin(\"topLevelAwait\") && this.inModule) {\n scopeFlags |= SCOPE_ASYNC;\n }\n this.scope.enter(scopeFlags);\n this.nextToken();\n const expr = this.parseExpression();\n if (!this.match(tt.eof)) {\n this.unexpected();\n }\n expr.comments = this.state.comments;\n expr.errors = this.state.errors;\n return expr;\n }\n\n // ### Expression parsing\n\n // These nest, from the most general expression type at the top to\n // 'atomic', nondivisible expression types at the bottom. Most of\n // the functions will simply let the function (s) below them parse,\n // and, *if* the syntactic construct they handle is present, wrap\n // the AST node that the inner parser gave them in another node.\n\n // Parse a full expression. The optional arguments are used to\n // forbid the `in` operator (in for loops initialization expressions)\n // and provide reference for storing '=' operator inside shorthand\n // property assignment in contexts where both object expression\n // and object pattern might appear (so it's possible to raise\n // delayed syntax error at correct position).\n\n parseExpression(\n noIn?: boolean,\n refExpressionErrors?: ExpressionErrors,\n ): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const expr = this.parseMaybeAssign(noIn, refExpressionErrors);\n if (this.match(tt.comma)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n while (this.eat(tt.comma)) {\n node.expressions.push(this.parseMaybeAssign(noIn, refExpressionErrors));\n }\n this.toReferencedList(node.expressions);\n return this.finishNode(node, \"SequenceExpression\");\n }\n return expr;\n }\n\n // Parse an assignment expression. This includes applications of\n // operators like `+=`.\n\n parseMaybeAssign(\n noIn?: ?boolean,\n refExpressionErrors?: ?ExpressionErrors,\n afterLeftParse?: Function,\n refNeedsArrowPos?: ?Pos,\n ): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n if (this.isContextual(\"yield\")) {\n if (this.scope.inGenerator) {\n let left = this.parseYield(noIn);\n if (afterLeftParse) {\n left = afterLeftParse.call(this, left, startPos, startLoc);\n }\n return left;\n } else {\n // The tokenizer will assume an expression is allowed after\n // `yield`, but this isn't that kind of yield\n this.state.exprAllowed = false;\n }\n }\n\n let ownExpressionErrors;\n if (refExpressionErrors) {\n ownExpressionErrors = false;\n } else {\n refExpressionErrors = new ExpressionErrors();\n ownExpressionErrors = true;\n }\n\n if (this.match(tt.parenL) || this.match(tt.name)) {\n this.state.potentialArrowAt = this.state.start;\n }\n\n let left = this.parseMaybeConditional(\n noIn,\n refExpressionErrors,\n refNeedsArrowPos,\n );\n if (afterLeftParse) {\n left = afterLeftParse.call(this, left, startPos, startLoc);\n }\n if (this.state.type.isAssign) {\n const node = this.startNodeAt(startPos, startLoc);\n const operator = this.state.value;\n node.operator = operator;\n\n if (operator === \"??=\") {\n this.expectPlugin(\"logicalAssignment\");\n }\n if (operator === \"||=\" || operator === \"&&=\") {\n this.expectPlugin(\"logicalAssignment\");\n }\n if (this.match(tt.eq)) {\n node.left = this.toAssignable(left);\n refExpressionErrors.doubleProto = -1; // reset because double __proto__ is valid in assignment expression\n } else {\n node.left = left;\n }\n\n if (refExpressionErrors.shorthandAssign >= node.left.start) {\n refExpressionErrors.shorthandAssign = -1; // reset because shorthand default was used correctly\n }\n\n this.checkLVal(left, undefined, undefined, \"assignment expression\");\n\n this.next();\n node.right = this.parseMaybeAssign(noIn);\n return this.finishNode(node, \"AssignmentExpression\");\n } else if (ownExpressionErrors) {\n this.checkExpressionErrors(refExpressionErrors, true);\n }\n\n return left;\n }\n\n // Parse a ternary conditional (`?:`) operator.\n\n parseMaybeConditional(\n noIn: ?boolean,\n refExpressionErrors: ExpressionErrors,\n refNeedsArrowPos?: ?Pos,\n ): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseExprOps(noIn, refExpressionErrors);\n\n if (\n expr.type === \"ArrowFunctionExpression\" &&\n expr.start === potentialArrowAt\n ) {\n return expr;\n }\n if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;\n\n return this.parseConditional(\n expr,\n noIn,\n startPos,\n startLoc,\n refNeedsArrowPos,\n );\n }\n\n parseConditional(\n expr: N.Expression,\n noIn: ?boolean,\n startPos: number,\n startLoc: Position,\n // FIXME: Disabling this for now since can't seem to get it to play nicely\n // eslint-disable-next-line no-unused-vars\n refNeedsArrowPos?: ?Pos,\n ): N.Expression {\n if (this.eat(tt.question)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssign();\n this.expect(tt.colon);\n node.alternate = this.parseMaybeAssign(noIn);\n return this.finishNode(node, \"ConditionalExpression\");\n }\n return expr;\n }\n\n // Start the precedence parser.\n\n parseExprOps(\n noIn: ?boolean,\n refExpressionErrors: ExpressionErrors,\n ): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseMaybeUnary(refExpressionErrors);\n\n if (\n expr.type === \"ArrowFunctionExpression\" &&\n expr.start === potentialArrowAt\n ) {\n return expr;\n }\n if (this.checkExpressionErrors(refExpressionErrors, false)) {\n return expr;\n }\n\n return this.parseExprOp(expr, startPos, startLoc, -1, noIn);\n }\n\n // Parse binary operators with the operator precedence parsing\n // algorithm. `left` is the left-hand side of the operator.\n // `minPrec` provides context that allows the function to stop and\n // defer further parser to one of its callers when it encounters an\n // operator that has a lower precedence than the set it is parsing.\n\n parseExprOp(\n left: N.Expression,\n leftStartPos: number,\n leftStartLoc: Position,\n minPrec: number,\n noIn: ?boolean,\n ): N.Expression {\n let prec = this.state.type.binop;\n if (prec != null && (!noIn || !this.match(tt._in))) {\n if (prec > minPrec) {\n const operator = this.state.value;\n if (operator === \"|>\" && this.state.inFSharpPipelineDirectBody) {\n return left;\n }\n const node = this.startNodeAt(leftStartPos, leftStartLoc);\n node.left = left;\n node.operator = operator;\n if (\n operator === \"**\" &&\n left.type === \"UnaryExpression\" &&\n (this.options.createParenthesizedExpressions ||\n !(left.extra && left.extra.parenthesized))\n ) {\n this.raise(\n left.argument.start,\n \"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.\",\n );\n }\n\n const op = this.state.type;\n const logical = op === tt.logicalOR || op === tt.logicalAND;\n const coalesce = op === tt.nullishCoalescing;\n\n if (op === tt.pipeline) {\n this.expectPlugin(\"pipelineOperator\");\n this.state.inPipeline = true;\n this.checkPipelineAtInfixOperator(left, leftStartPos);\n } else if (coalesce) {\n // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n prec = ((tt.logicalAND: any): { binop: number }).binop;\n }\n\n this.next();\n\n if (\n op === tt.pipeline &&\n this.getPluginOption(\"pipelineOperator\", \"proposal\") === \"minimal\"\n ) {\n if (\n this.match(tt.name) &&\n this.state.value === \"await\" &&\n this.scope.inAsync\n ) {\n throw this.raise(\n this.state.start,\n `Unexpected \"await\" after pipeline body; await must have parentheses in minimal proposal`,\n );\n }\n }\n\n node.right = this.parseExprOpRightExpr(op, prec, noIn);\n this.finishNode(\n node,\n logical || coalesce ? \"LogicalExpression\" : \"BinaryExpression\",\n );\n /* this check is for all ?? operators\n * a ?? b && c for this example\n * when op is coalesce and nextOp is logical (&&), throw at the pos of nextOp that it can not be mixed.\n * Symmetrically it also throws when op is logical and nextOp is coalesce\n */\n const nextOp = this.state.type;\n if (\n (coalesce && (nextOp === tt.logicalOR || nextOp === tt.logicalAND)) ||\n (logical && nextOp === tt.nullishCoalescing)\n ) {\n throw this.raise(\n this.state.start,\n `Nullish coalescing operator(??) requires parens when mixing with logical operators`,\n );\n }\n\n return this.parseExprOp(\n node,\n leftStartPos,\n leftStartLoc,\n minPrec,\n noIn,\n );\n }\n }\n return left;\n }\n\n // Helper function for `parseExprOp`. Parse the right-hand side of binary-\n // operator expressions, then apply any operator-specific functions.\n\n parseExprOpRightExpr(\n op: TokenType,\n prec: number,\n noIn: ?boolean,\n ): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n switch (op) {\n case tt.pipeline:\n switch (this.getPluginOption(\"pipelineOperator\", \"proposal\")) {\n case \"smart\":\n return this.withTopicPermittingContext(() => {\n return this.parseSmartPipelineBody(\n this.parseExprOpBaseRightExpr(op, prec, noIn),\n startPos,\n startLoc,\n );\n });\n case \"fsharp\":\n return this.withSoloAwaitPermittingContext(() => {\n return this.parseFSharpPipelineBody(prec, noIn);\n });\n }\n // falls through\n\n default:\n return this.parseExprOpBaseRightExpr(op, prec, noIn);\n }\n }\n\n // Helper function for `parseExprOpRightExpr`. Parse the right-hand side of\n // binary-operator expressions without applying any operator-specific functions.\n\n parseExprOpBaseRightExpr(\n op: TokenType,\n prec: number,\n noIn: ?boolean,\n ): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n\n return this.parseExprOp(\n this.parseMaybeUnary(),\n startPos,\n startLoc,\n op.rightAssociative ? prec - 1 : prec,\n noIn,\n );\n }\n\n // Parse unary operators, both prefix and postfix.\n\n parseMaybeUnary(refExpressionErrors: ?ExpressionErrors): N.Expression {\n if (this.isContextual(\"await\") && this.isAwaitAllowed()) {\n return this.parseAwait();\n } else if (this.state.type.prefix) {\n const node = this.startNode();\n const update = this.match(tt.incDec);\n node.operator = this.state.value;\n node.prefix = true;\n\n if (node.operator === \"throw\") {\n this.expectPlugin(\"throwExpressions\");\n }\n this.next();\n\n node.argument = this.parseMaybeUnary();\n\n this.checkExpressionErrors(refExpressionErrors, true);\n\n if (update) {\n this.checkLVal(node.argument, undefined, undefined, \"prefix operation\");\n } else if (this.state.strict && node.operator === \"delete\") {\n const arg = node.argument;\n\n if (arg.type === \"Identifier\") {\n this.raise(node.start, \"Deleting local variable in strict mode\");\n } else if (\n arg.type === \"MemberExpression\" &&\n arg.property.type === \"PrivateName\"\n ) {\n this.raise(node.start, \"Deleting a private field is not allowed\");\n }\n }\n\n return this.finishNode(\n node,\n update ? \"UpdateExpression\" : \"UnaryExpression\",\n );\n }\n\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let expr = this.parseExprSubscripts(refExpressionErrors);\n if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;\n while (this.state.type.postfix && !this.canInsertSemicolon()) {\n const node = this.startNodeAt(startPos, startLoc);\n node.operator = this.state.value;\n node.prefix = false;\n node.argument = expr;\n this.checkLVal(expr, undefined, undefined, \"postfix operation\");\n this.next();\n expr = this.finishNode(node, \"UpdateExpression\");\n }\n return expr;\n }\n\n // Parse call, dot, and `[]`-subscript expressions.\n\n parseExprSubscripts(refExpressionErrors: ?ExpressionErrors): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseExprAtom(refExpressionErrors);\n\n if (\n expr.type === \"ArrowFunctionExpression\" &&\n expr.start === potentialArrowAt\n ) {\n return expr;\n }\n\n return this.parseSubscripts(expr, startPos, startLoc);\n }\n\n parseSubscripts(\n base: N.Expression,\n startPos: number,\n startLoc: Position,\n noCalls?: ?boolean,\n ): N.Expression {\n const state = {\n optionalChainMember: false,\n maybeAsyncArrow: this.atPossibleAsync(base),\n stop: false,\n };\n do {\n base = this.parseSubscript(base, startPos, startLoc, noCalls, state);\n\n // After parsing a subscript, this isn't \"async\" for sure.\n state.maybeAsyncArrow = false;\n } while (!state.stop);\n return base;\n }\n\n /**\n * @param state Set 'state.stop = true' to indicate that we should stop parsing subscripts.\n * state.optionalChainMember to indicate that the member is currently in OptionalChain\n */\n parseSubscript(\n base: N.Expression,\n startPos: number,\n startLoc: Position,\n noCalls: ?boolean,\n state: N.ParseSubscriptState,\n ): N.Expression {\n if (!noCalls && this.eat(tt.doubleColon)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n node.callee = this.parseNoCallExpr();\n state.stop = true;\n return this.parseSubscripts(\n this.finishNode(node, \"BindExpression\"),\n startPos,\n startLoc,\n noCalls,\n );\n }\n let optional = false;\n if (this.match(tt.questionDot)) {\n state.optionalChainMember = optional = true;\n if (noCalls && this.lookaheadCharCode() === charCodes.leftParenthesis) {\n state.stop = true;\n return base;\n }\n this.next();\n }\n const computed = this.eat(tt.bracketL);\n if (\n (optional && !this.match(tt.parenL) && !this.match(tt.backQuote)) ||\n computed ||\n this.eat(tt.dot)\n ) {\n const node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n node.property = computed\n ? this.parseExpression()\n : optional\n ? this.parseIdentifier(true)\n : this.parseMaybePrivateName(true);\n node.computed = computed;\n\n if (node.property.type === \"PrivateName\") {\n if (node.object.type === \"Super\") {\n this.raise(startPos, \"Private fields can't be accessed on super\");\n }\n this.classScope.usePrivateName(\n node.property.id.name,\n node.property.start,\n );\n }\n\n if (computed) {\n this.expect(tt.bracketR);\n }\n\n if (state.optionalChainMember) {\n node.optional = optional;\n return this.finishNode(node, \"OptionalMemberExpression\");\n } else {\n return this.finishNode(node, \"MemberExpression\");\n }\n } else if (!noCalls && this.match(tt.parenL)) {\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n const oldYieldPos = this.state.yieldPos;\n const oldAwaitPos = this.state.awaitPos;\n this.state.maybeInArrowParameters = true;\n this.state.yieldPos = -1;\n this.state.awaitPos = -1;\n\n this.next();\n\n let node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n\n if (optional) {\n node.optional = true;\n node.arguments = this.parseCallExpressionArguments(tt.parenR, false);\n } else {\n node.arguments = this.parseCallExpressionArguments(\n tt.parenR,\n state.maybeAsyncArrow,\n base.type === \"Import\",\n base.type !== \"Super\",\n node,\n );\n }\n this.finishCallExpression(node, state.optionalChainMember);\n\n if (state.maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {\n state.stop = true;\n\n node = this.parseAsyncArrowFromCallExpression(\n this.startNodeAt(startPos, startLoc),\n node,\n );\n this.checkYieldAwaitInDefaultParams();\n this.state.yieldPos = oldYieldPos;\n this.state.awaitPos = oldAwaitPos;\n } else {\n this.toReferencedListDeep(node.arguments);\n\n // We keep the old value if it isn't null, for cases like\n // (x = async(yield)) => {}\n //\n // Hi developer of the future :) If you are implementing generator\n // arrow functions, please read the note below about \"await\" and\n // verify if the same logic is needed for yield.\n if (oldYieldPos !== -1) this.state.yieldPos = oldYieldPos;\n\n // Await is trickier than yield. When parsing a possible arrow function\n // (e.g. something starting with `async(`) we don't know if its possible\n // parameters will actually be inside an async arrow function or if it is\n // a normal call expression.\n // If it ended up being a call expression, if we are in a context where\n // await expression are disallowed (and thus \"await\" is an identifier)\n // we must be careful not to leak this.state.awaitPos to an even outer\n // context, where \"await\" could not be an identifier.\n // For example, this code is valid because \"await\" isn't directly inside\n // an async function:\n //\n // async function a() {\n // function b(param = async (await)) {\n // }\n // }\n //\n if (\n (!this.isAwaitAllowed() && !oldMaybeInArrowParameters) ||\n oldAwaitPos !== -1\n ) {\n this.state.awaitPos = oldAwaitPos;\n }\n }\n\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n return node;\n } else if (this.match(tt.backQuote)) {\n return this.parseTaggedTemplateExpression(\n startPos,\n startLoc,\n base,\n state,\n );\n } else {\n state.stop = true;\n return base;\n }\n }\n\n parseTaggedTemplateExpression(\n startPos: number,\n startLoc: Position,\n base: N.Expression,\n state: N.ParseSubscriptState,\n typeArguments?: ?N.TsTypeParameterInstantiation,\n ): N.TaggedTemplateExpression {\n const node: N.TaggedTemplateExpression = this.startNodeAt(\n startPos,\n startLoc,\n );\n node.tag = base;\n node.quasi = this.parseTemplate(true);\n if (typeArguments) node.typeParameters = typeArguments;\n if (state.optionalChainMember) {\n this.raise(\n startPos,\n \"Tagged Template Literals are not allowed in optionalChain\",\n );\n }\n return this.finishNode(node, \"TaggedTemplateExpression\");\n }\n\n atPossibleAsync(base: N.Expression): boolean {\n return (\n base.type === \"Identifier\" &&\n base.name === \"async\" &&\n this.state.lastTokEnd === base.end &&\n !this.canInsertSemicolon() &&\n this.input.slice(base.start, base.end) === \"async\"\n );\n }\n\n finishCallExpression<T: N.CallExpression | N.OptionalCallExpression>(\n node: T,\n optional: boolean,\n ): N.Expression {\n if (node.callee.type === \"Import\") {\n if (node.arguments.length !== 1) {\n this.raise(node.start, \"import() requires exactly one argument\");\n } else {\n const importArg = node.arguments[0];\n if (importArg && importArg.type === \"SpreadElement\") {\n this.raise(importArg.start, \"... is not allowed in import()\");\n }\n }\n }\n return this.finishNode(\n node,\n optional ? \"OptionalCallExpression\" : \"CallExpression\",\n );\n }\n\n parseCallExpressionArguments(\n close: TokenType,\n possibleAsyncArrow: boolean,\n dynamicImport?: boolean,\n allowPlaceholder?: boolean,\n nodeForExtra?: ?N.Node,\n ): $ReadOnlyArray<?N.Expression> {\n const elts = [];\n let innerParenStart;\n let first = true;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n if (this.match(close)) {\n if (dynamicImport) {\n this.raise(\n this.state.lastTokStart,\n \"Trailing comma is disallowed inside import(...) arguments\",\n );\n }\n if (nodeForExtra) {\n this.addExtra(\n nodeForExtra,\n \"trailingComma\",\n this.state.lastTokStart,\n );\n }\n this.next();\n break;\n }\n }\n\n // we need to make sure that if this is an async arrow functions,\n // that we don't allow inner parens inside the params\n if (this.match(tt.parenL) && !innerParenStart) {\n innerParenStart = this.state.start;\n }\n\n elts.push(\n this.parseExprListItem(\n false,\n possibleAsyncArrow ? new ExpressionErrors() : undefined,\n possibleAsyncArrow ? { start: 0 } : undefined,\n allowPlaceholder,\n ),\n );\n }\n\n // we found an async arrow function so let's not allow any inner parens\n if (possibleAsyncArrow && innerParenStart && this.shouldParseAsyncArrow()) {\n this.unexpected();\n }\n\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n return elts;\n }\n\n shouldParseAsyncArrow(): boolean {\n return this.match(tt.arrow) && !this.canInsertSemicolon();\n }\n\n parseAsyncArrowFromCallExpression(\n node: N.ArrowFunctionExpression,\n call: N.CallExpression,\n ): N.ArrowFunctionExpression {\n this.expect(tt.arrow);\n this.parseArrowExpression(\n node,\n call.arguments,\n true,\n call.extra?.trailingComma,\n );\n return node;\n }\n\n // Parse a no-call expression (like argument of `new` or `::` operators).\n\n parseNoCallExpr(): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n return this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);\n }\n\n // Parse an atomic expression — either a single token that is an\n // expression, an expression started by a keyword like `function` or\n // `new`, or an expression wrapped in punctuation like `()`, `[]`,\n // or `{}`.\n\n parseExprAtom(refExpressionErrors?: ?ExpressionErrors): N.Expression {\n // If a division operator appears in an expression position, the\n // tokenizer got confused, and we force it to read a regexp instead.\n if (this.state.type === tt.slash) this.readRegexp();\n\n const canBeArrow = this.state.potentialArrowAt === this.state.start;\n let node;\n\n switch (this.state.type) {\n case tt._super:\n node = this.startNode();\n this.next();\n if (\n this.match(tt.parenL) &&\n !this.scope.allowDirectSuper &&\n !this.options.allowSuperOutsideMethod\n ) {\n this.raise(\n node.start,\n \"super() is only valid inside a class constructor of a subclass. \" +\n \"Maybe a typo in the method name ('constructor') or not extending another class?\",\n );\n } else if (\n !this.scope.allowSuper &&\n !this.options.allowSuperOutsideMethod\n ) {\n this.raise(\n node.start,\n \"super is only allowed in object methods and classes\",\n );\n }\n\n if (\n !this.match(tt.parenL) &&\n !this.match(tt.bracketL) &&\n !this.match(tt.dot)\n ) {\n this.raise(\n node.start,\n \"super can only be used with function calls (i.e. super()) or \" +\n \"in property accesses (i.e. super.prop or super[prop])\",\n );\n }\n\n return this.finishNode(node, \"Super\");\n\n case tt._import:\n node = this.startNode();\n this.next();\n\n if (this.match(tt.dot)) {\n return this.parseImportMetaProperty(node);\n }\n\n if (!this.match(tt.parenL)) {\n this.raise(\n this.state.lastTokStart,\n \"import can only be used in import() or import.meta\",\n );\n }\n return this.finishNode(node, \"Import\");\n case tt._this:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\");\n\n case tt.name: {\n node = this.startNode();\n const containsEsc = this.state.containsEsc;\n const id = this.parseIdentifier();\n\n if (\n !containsEsc &&\n id.name === \"async\" &&\n this.match(tt._function) &&\n !this.canInsertSemicolon()\n ) {\n const last = this.state.context.length - 1;\n if (this.state.context[last] !== ct.functionStatement) {\n // Since \"async\" is an identifier and normally identifiers\n // can't be followed by expression, the tokenizer assumes\n // that \"function\" starts a statement.\n // Fixing it in the tokenizer would mean tracking not only the\n // previous token (\"async\"), but also the one before to know\n // its beforeExpr value.\n // It's easier and more efficient to adjust the context here.\n throw new Error(\"Internal error\");\n }\n this.state.context[last] = ct.functionExpression;\n\n this.next();\n return this.parseFunction(node, undefined, true);\n } else if (\n canBeArrow &&\n !containsEsc &&\n id.name === \"async\" &&\n this.match(tt.name) &&\n !this.canInsertSemicolon()\n ) {\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n const oldYieldPos = this.state.yieldPos;\n const oldAwaitPos = this.state.awaitPos;\n this.state.maybeInArrowParameters = true;\n this.state.yieldPos = -1;\n this.state.awaitPos = -1;\n const params = [this.parseIdentifier()];\n this.expect(tt.arrow);\n this.checkYieldAwaitInDefaultParams();\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n this.state.yieldPos = oldYieldPos;\n this.state.awaitPos = oldAwaitPos;\n // let foo = async bar => {};\n this.parseArrowExpression(node, params, true);\n return node;\n }\n\n if (canBeArrow && this.match(tt.arrow) && !this.canInsertSemicolon()) {\n this.next();\n this.parseArrowExpression(node, [id], false);\n return node;\n }\n\n return id;\n }\n\n case tt._do: {\n this.expectPlugin(\"doExpressions\");\n const node = this.startNode();\n this.next();\n const oldLabels = this.state.labels;\n this.state.labels = [];\n node.body = this.parseBlock();\n this.state.labels = oldLabels;\n return this.finishNode(node, \"DoExpression\");\n }\n\n case tt.regexp: {\n const value = this.state.value;\n node = this.parseLiteral(value.value, \"RegExpLiteral\");\n node.pattern = value.pattern;\n node.flags = value.flags;\n return node;\n }\n\n case tt.num:\n return this.parseLiteral(this.state.value, \"NumericLiteral\");\n\n case tt.bigint:\n return this.parseLiteral(this.state.value, \"BigIntLiteral\");\n\n case tt.string:\n return this.parseLiteral(this.state.value, \"StringLiteral\");\n\n case tt._null:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"NullLiteral\");\n\n case tt._true:\n case tt._false:\n return this.parseBooleanLiteral();\n\n case tt.parenL:\n return this.parseParenAndDistinguishExpression(canBeArrow);\n\n case tt.bracketL: {\n const oldInFSharpPipelineDirectBody = this.state\n .inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n node = this.startNode();\n this.next();\n node.elements = this.parseExprList(\n tt.bracketR,\n true,\n refExpressionErrors,\n node,\n );\n if (!this.state.maybeInArrowParameters) {\n // This could be an array pattern:\n // ([a: string, b: string]) => {}\n // In this case, we don't have to call toReferencedList. We will\n // call it, if needed, when we are sure that it is a parenthesized\n // expression by calling toReferencedListDeep.\n this.toReferencedList(node.elements);\n }\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n return this.finishNode(node, \"ArrayExpression\");\n }\n case tt.braceL: {\n const oldInFSharpPipelineDirectBody = this.state\n .inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n const ret = this.parseObj(false, refExpressionErrors);\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n return ret;\n }\n case tt._function:\n return this.parseFunctionExpression();\n\n case tt.at:\n this.parseDecorators();\n\n case tt._class:\n node = this.startNode();\n this.takeDecorators(node);\n return this.parseClass(node, false);\n\n case tt._new:\n return this.parseNew();\n\n case tt.backQuote:\n return this.parseTemplate(false);\n\n case tt.doubleColon: {\n node = this.startNode();\n this.next();\n node.object = null;\n const callee = (node.callee = this.parseNoCallExpr());\n if (callee.type === \"MemberExpression\") {\n return this.finishNode(node, \"BindExpression\");\n } else {\n throw this.raise(\n callee.start,\n \"Binding should be performed on object property.\",\n );\n }\n }\n\n case tt.hash: {\n if (this.state.inPipeline) {\n node = this.startNode();\n\n if (\n this.getPluginOption(\"pipelineOperator\", \"proposal\") !== \"smart\"\n ) {\n this.raise(\n node.start,\n \"Primary Topic Reference found but pipelineOperator not passed 'smart' for 'proposal' option.\",\n );\n }\n\n this.next();\n\n if (!this.primaryTopicReferenceIsAllowedInCurrentTopicContext()) {\n this.raise(\n node.start,\n `Topic reference was used in a lexical context without topic binding`,\n );\n }\n\n this.registerTopicReference();\n return this.finishNode(node, \"PipelinePrimaryTopicReference\");\n }\n }\n\n default:\n throw this.unexpected();\n }\n }\n\n parseBooleanLiteral(): N.BooleanLiteral {\n const node = this.startNode();\n node.value = this.match(tt._true);\n this.next();\n return this.finishNode(node, \"BooleanLiteral\");\n }\n\n parseMaybePrivateName(\n isPrivateNameAllowed: boolean,\n ): N.PrivateName | N.Identifier {\n const isPrivate = this.match(tt.hash);\n\n if (isPrivate) {\n this.expectOnePlugin([\"classPrivateProperties\", \"classPrivateMethods\"]);\n if (!isPrivateNameAllowed) {\n this.raise(\n this.state.pos,\n \"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).\",\n );\n }\n const node = this.startNode();\n this.next();\n this.assertNoSpace(\"Unexpected space between # and identifier\");\n node.id = this.parseIdentifier(true);\n return this.finishNode(node, \"PrivateName\");\n } else {\n return this.parseIdentifier(true);\n }\n }\n\n parseFunctionExpression(): N.FunctionExpression | N.MetaProperty {\n const node = this.startNode();\n\n // We do not do parseIdentifier here because when parseFunctionExpression\n // is called we already know that the current token is a \"name\" with the value \"function\"\n // This will improve perf a tiny little bit as we do not do validation but more importantly\n // here is that parseIdentifier will remove an item from the expression stack\n // if \"function\" or \"class\" is parsed as identifier (in objects e.g.), which should not happen here.\n let meta = this.startNode();\n this.next();\n meta = this.createIdentifier(meta, \"function\");\n\n if (this.scope.inGenerator && this.eat(tt.dot)) {\n return this.parseMetaProperty(node, meta, \"sent\");\n }\n return this.parseFunction(node);\n }\n\n parseMetaProperty(\n node: N.MetaProperty,\n meta: N.Identifier,\n propertyName: string,\n ): N.MetaProperty {\n node.meta = meta;\n\n if (meta.name === \"function\" && propertyName === \"sent\") {\n if (this.isContextual(propertyName)) {\n this.expectPlugin(\"functionSent\");\n } else if (!this.hasPlugin(\"functionSent\")) {\n // The code wasn't `function.sent` but just `function.`, so a simple error is less confusing.\n this.unexpected();\n }\n }\n\n const containsEsc = this.state.containsEsc;\n\n node.property = this.parseIdentifier(true);\n\n if (node.property.name !== propertyName || containsEsc) {\n this.raise(\n node.property.start,\n `The only valid meta property for ${meta.name} is ${meta.name}.${propertyName}`,\n );\n }\n\n return this.finishNode(node, \"MetaProperty\");\n }\n\n parseImportMetaProperty(node: N.MetaProperty): N.MetaProperty {\n const id = this.createIdentifier(this.startNodeAtNode(node), \"import\");\n this.expect(tt.dot);\n\n if (this.isContextual(\"meta\")) {\n this.expectPlugin(\"importMeta\");\n\n if (!this.inModule) {\n this.raise(\n id.start,\n `import.meta may appear only with 'sourceType: \"module\"'`,\n { code: \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\" },\n );\n }\n this.sawUnambiguousESM = true;\n } else if (!this.hasPlugin(\"importMeta\")) {\n this.raise(\n id.start,\n `Dynamic imports require a parameter: import('a.js')`,\n );\n }\n\n return this.parseMetaProperty(node, id, \"meta\");\n }\n\n parseLiteral<T: N.Literal>(\n value: any,\n type: /*T[\"kind\"]*/ string,\n startPos?: number,\n startLoc?: Position,\n ): T {\n startPos = startPos || this.state.start;\n startLoc = startLoc || this.state.startLoc;\n\n const node = this.startNodeAt(startPos, startLoc);\n this.addExtra(node, \"rawValue\", value);\n this.addExtra(node, \"raw\", this.input.slice(startPos, this.state.end));\n node.value = value;\n this.next();\n return this.finishNode(node, type);\n }\n\n parseParenAndDistinguishExpression(canBeArrow: boolean): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n\n let val;\n this.expect(tt.parenL);\n\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n const oldYieldPos = this.state.yieldPos;\n const oldAwaitPos = this.state.awaitPos;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.maybeInArrowParameters = true;\n this.state.yieldPos = -1;\n this.state.awaitPos = -1;\n this.state.inFSharpPipelineDirectBody = false;\n\n const innerStartPos = this.state.start;\n const innerStartLoc = this.state.startLoc;\n const exprList = [];\n const refExpressionErrors = new ExpressionErrors();\n const refNeedsArrowPos = { start: 0 };\n let first = true;\n let spreadStart;\n let optionalCommaStart;\n\n while (!this.match(tt.parenR)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma, refNeedsArrowPos.start || null);\n if (this.match(tt.parenR)) {\n optionalCommaStart = this.state.start;\n break;\n }\n }\n\n if (this.match(tt.ellipsis)) {\n const spreadNodeStartPos = this.state.start;\n const spreadNodeStartLoc = this.state.startLoc;\n spreadStart = this.state.start;\n exprList.push(\n this.parseParenItem(\n this.parseRestBinding(),\n spreadNodeStartPos,\n spreadNodeStartLoc,\n ),\n );\n\n this.checkCommaAfterRest(charCodes.rightParenthesis);\n\n break;\n } else {\n exprList.push(\n this.parseMaybeAssign(\n false,\n refExpressionErrors,\n this.parseParenItem,\n refNeedsArrowPos,\n ),\n );\n }\n }\n\n const innerEndPos = this.state.start;\n const innerEndLoc = this.state.startLoc;\n this.expect(tt.parenR);\n\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n let arrowNode = this.startNodeAt(startPos, startLoc);\n if (\n canBeArrow &&\n this.shouldParseArrow() &&\n (arrowNode = this.parseArrow(arrowNode))\n ) {\n this.checkYieldAwaitInDefaultParams();\n this.state.yieldPos = oldYieldPos;\n this.state.awaitPos = oldAwaitPos;\n for (const param of exprList) {\n if (param.extra && param.extra.parenthesized) {\n this.unexpected(param.extra.parenStart);\n }\n }\n\n this.parseArrowExpression(arrowNode, exprList, false);\n return arrowNode;\n }\n\n // We keep the old value if it isn't null, for cases like\n // (x = (yield)) => {}\n if (oldYieldPos !== -1) this.state.yieldPos = oldYieldPos;\n if (oldAwaitPos !== -1) this.state.awaitPos = oldAwaitPos;\n\n if (!exprList.length) {\n this.unexpected(this.state.lastTokStart);\n }\n if (optionalCommaStart) this.unexpected(optionalCommaStart);\n if (spreadStart) this.unexpected(spreadStart);\n this.checkExpressionErrors(refExpressionErrors, true);\n if (refNeedsArrowPos.start) this.unexpected(refNeedsArrowPos.start);\n\n this.toReferencedListDeep(exprList, /* isParenthesizedExpr */ true);\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n } else {\n val = exprList[0];\n }\n\n if (!this.options.createParenthesizedExpressions) {\n this.addExtra(val, \"parenthesized\", true);\n this.addExtra(val, \"parenStart\", startPos);\n return val;\n }\n\n const parenExpression = this.startNodeAt(startPos, startLoc);\n parenExpression.expression = val;\n this.finishNode(parenExpression, \"ParenthesizedExpression\");\n return parenExpression;\n }\n\n shouldParseArrow(): boolean {\n return !this.canInsertSemicolon();\n }\n\n parseArrow(node: N.ArrowFunctionExpression): ?N.ArrowFunctionExpression {\n if (this.eat(tt.arrow)) {\n return node;\n }\n }\n\n parseParenItem(\n node: N.Expression,\n startPos: number, // eslint-disable-line no-unused-vars\n startLoc: Position, // eslint-disable-line no-unused-vars\n ): N.Expression {\n return node;\n }\n\n // New's precedence is slightly tricky. It must allow its argument to\n // be a `[]` or dot subscript expression, but not a call — at least,\n // not without wrapping it in parentheses. Thus, it uses the noCalls\n // argument to parseSubscripts to prevent it from consuming the\n // argument list.\n\n parseNew(): N.NewExpression | N.MetaProperty {\n const node = this.startNode();\n\n let meta = this.startNode();\n this.next();\n meta = this.createIdentifier(meta, \"new\");\n\n if (this.eat(tt.dot)) {\n const metaProp = this.parseMetaProperty(node, meta, \"target\");\n\n if (!this.scope.inNonArrowFunction && !this.scope.inClass) {\n let error = \"new.target can only be used in functions\";\n\n if (this.hasPlugin(\"classProperties\")) {\n error += \" or class properties\";\n }\n\n this.raise(metaProp.start, error);\n }\n\n return metaProp;\n }\n\n node.callee = this.parseNoCallExpr();\n\n if (node.callee.type === \"Import\") {\n this.raise(node.callee.start, \"Cannot use new with import(...)\");\n } else if (\n node.callee.type === \"OptionalMemberExpression\" ||\n node.callee.type === \"OptionalCallExpression\"\n ) {\n this.raise(\n this.state.lastTokEnd,\n \"constructors in/after an Optional Chain are not allowed\",\n );\n } else if (this.eat(tt.questionDot)) {\n this.raise(\n this.state.start,\n \"constructors in/after an Optional Chain are not allowed\",\n );\n }\n\n this.parseNewArguments(node);\n return this.finishNode(node, \"NewExpression\");\n }\n\n parseNewArguments(node: N.NewExpression): void {\n if (this.eat(tt.parenL)) {\n const args = this.parseExprList(tt.parenR);\n this.toReferencedList(args);\n // $FlowFixMe (parseExprList should be all non-null in this case)\n node.arguments = args;\n } else {\n node.arguments = [];\n }\n }\n\n // Parse template expression.\n\n parseTemplateElement(isTagged: boolean): N.TemplateElement {\n const elem = this.startNode();\n if (this.state.value === null) {\n if (!isTagged) {\n this.raise(this.state.start + 1, \"Invalid escape sequence in template\");\n }\n }\n elem.value = {\n raw: this.input\n .slice(this.state.start, this.state.end)\n .replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.state.value,\n };\n this.next();\n elem.tail = this.match(tt.backQuote);\n return this.finishNode(elem, \"TemplateElement\");\n }\n\n parseTemplate(isTagged: boolean): N.TemplateLiteral {\n const node = this.startNode();\n this.next();\n node.expressions = [];\n let curElt = this.parseTemplateElement(isTagged);\n node.quasis = [curElt];\n while (!curElt.tail) {\n this.expect(tt.dollarBraceL);\n node.expressions.push(this.parseExpression());\n this.expect(tt.braceR);\n node.quasis.push((curElt = this.parseTemplateElement(isTagged)));\n }\n this.next();\n return this.finishNode(node, \"TemplateLiteral\");\n }\n\n // Parse an object literal or binding pattern.\n\n parseObj<T: N.ObjectPattern | N.ObjectExpression>(\n isPattern: boolean,\n refExpressionErrors?: ?ExpressionErrors,\n ): T {\n const propHash: any = Object.create(null);\n let first = true;\n const node = this.startNode();\n\n node.properties = [];\n this.next();\n\n while (!this.eat(tt.braceR)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n if (this.match(tt.braceR)) {\n this.addExtra(node, \"trailingComma\", this.state.lastTokStart);\n this.next();\n break;\n }\n }\n\n const prop = this.parseObjectMember(isPattern, refExpressionErrors);\n if (!isPattern) {\n // $FlowIgnore RestElement will never be returned if !isPattern\n this.checkDuplicatedProto(prop, propHash, refExpressionErrors);\n }\n\n // $FlowIgnore\n if (prop.shorthand) {\n this.addExtra(prop, \"shorthand\", true);\n }\n\n node.properties.push(prop);\n }\n\n return this.finishNode(\n node,\n isPattern ? \"ObjectPattern\" : \"ObjectExpression\",\n );\n }\n\n isAsyncProp(prop: N.ObjectProperty): boolean {\n return (\n !prop.computed &&\n prop.key.type === \"Identifier\" &&\n prop.key.name === \"async\" &&\n (this.match(tt.name) ||\n this.match(tt.num) ||\n this.match(tt.string) ||\n this.match(tt.bracketL) ||\n this.state.type.keyword ||\n this.match(tt.star)) &&\n !this.hasPrecedingLineBreak()\n );\n }\n\n parseObjectMember(\n isPattern: boolean,\n refExpressionErrors?: ?ExpressionErrors,\n ): N.ObjectMember | N.SpreadElement | N.RestElement {\n let decorators = [];\n if (this.match(tt.at)) {\n if (this.hasPlugin(\"decorators\")) {\n this.raise(\n this.state.start,\n \"Stage 2 decorators disallow object literal property decorators\",\n );\n }\n\n // we needn't check if decorators (stage 0) plugin is enabled since it's checked by\n // the call to this.parseDecorator\n while (this.match(tt.at)) {\n decorators.push(this.parseDecorator());\n }\n }\n\n const prop = this.startNode();\n let isGenerator = false;\n let isAsync = false;\n let startPos;\n let startLoc;\n\n if (this.match(tt.ellipsis)) {\n if (decorators.length) this.unexpected();\n if (isPattern) {\n this.next();\n // Don't use parseRestBinding() as we only allow Identifier here.\n prop.argument = this.parseIdentifier();\n this.checkCommaAfterRest(charCodes.rightCurlyBrace);\n return this.finishNode(prop, \"RestElement\");\n }\n\n return this.parseSpread();\n }\n\n if (decorators.length) {\n prop.decorators = decorators;\n decorators = [];\n }\n\n prop.method = false;\n\n if (isPattern || refExpressionErrors) {\n startPos = this.state.start;\n startLoc = this.state.startLoc;\n }\n\n if (!isPattern) {\n isGenerator = this.eat(tt.star);\n }\n\n const containsEsc = this.state.containsEsc;\n this.parsePropertyName(prop, /* isPrivateNameAllowed */ false);\n\n if (!isPattern && !containsEsc && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true;\n isGenerator = this.eat(tt.star);\n this.parsePropertyName(prop, /* isPrivateNameAllowed */ false);\n } else {\n isAsync = false;\n }\n\n this.parseObjPropValue(\n prop,\n startPos,\n startLoc,\n isGenerator,\n isAsync,\n isPattern,\n refExpressionErrors,\n containsEsc,\n );\n\n return prop;\n }\n\n isGetterOrSetterMethod(prop: N.ObjectMethod, isPattern: boolean): boolean {\n return (\n !isPattern &&\n !prop.computed &&\n prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.match(tt.string) || // get \"string\"() {}\n this.match(tt.num) || // get 1() {}\n this.match(tt.bracketL) || // get [\"string\"]() {}\n this.match(tt.name) || // get foo() {}\n !!this.state.type.keyword) // get debugger() {}\n );\n }\n\n getGetterSetterExpectedParamCount(\n method: N.ObjectMethod | N.ClassMethod,\n ): number {\n return method.kind === \"get\" ? 0 : 1;\n }\n\n // get methods aren't allowed to have any parameters\n // set methods must have exactly 1 parameter which is not a rest parameter\n checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n const paramCount = this.getGetterSetterExpectedParamCount(method);\n const start = method.start;\n if (method.params.length !== paramCount) {\n if (method.kind === \"get\") {\n this.raise(start, \"getter must not have any formal parameters\");\n } else {\n this.raise(start, \"setter must have exactly one formal parameter\");\n }\n }\n\n if (\n method.kind === \"set\" &&\n method.params[method.params.length - 1].type === \"RestElement\"\n ) {\n this.raise(\n start,\n \"setter function argument must not be a rest parameter\",\n );\n }\n }\n\n parseObjectMethod(\n prop: N.ObjectMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n containsEsc: boolean,\n ): ?N.ObjectMethod {\n if (isAsync || isGenerator || this.match(tt.parenL)) {\n if (isPattern) this.unexpected();\n prop.kind = \"method\";\n prop.method = true;\n return this.parseMethod(\n prop,\n isGenerator,\n isAsync,\n /* isConstructor */ false,\n false,\n \"ObjectMethod\",\n );\n }\n\n if (!containsEsc && this.isGetterOrSetterMethod(prop, isPattern)) {\n if (isGenerator || isAsync) this.unexpected();\n prop.kind = prop.key.name;\n this.parsePropertyName(prop, /* isPrivateNameAllowed */ false);\n this.parseMethod(\n prop,\n /* isGenerator */ false,\n /* isAsync */ false,\n /* isConstructor */ false,\n false,\n \"ObjectMethod\",\n );\n this.checkGetterSetterParams(prop);\n return prop;\n }\n }\n\n parseObjectProperty(\n prop: N.ObjectProperty,\n startPos: ?number,\n startLoc: ?Position,\n isPattern: boolean,\n refExpressionErrors: ?ExpressionErrors,\n ): ?N.ObjectProperty {\n prop.shorthand = false;\n\n if (this.eat(tt.colon)) {\n prop.value = isPattern\n ? this.parseMaybeDefault(this.state.start, this.state.startLoc)\n : this.parseMaybeAssign(false, refExpressionErrors);\n\n return this.finishNode(prop, \"ObjectProperty\");\n }\n\n if (!prop.computed && prop.key.type === \"Identifier\") {\n this.checkReservedWord(prop.key.name, prop.key.start, true, true);\n\n if (isPattern) {\n prop.value = this.parseMaybeDefault(\n startPos,\n startLoc,\n prop.key.__clone(),\n );\n } else if (this.match(tt.eq) && refExpressionErrors) {\n if (refExpressionErrors.shorthandAssign === -1) {\n refExpressionErrors.shorthandAssign = this.state.start;\n }\n prop.value = this.parseMaybeDefault(\n startPos,\n startLoc,\n prop.key.__clone(),\n );\n } else {\n prop.value = prop.key.__clone();\n }\n prop.shorthand = true;\n\n return this.finishNode(prop, \"ObjectProperty\");\n }\n }\n\n parseObjPropValue(\n prop: any,\n startPos: ?number,\n startLoc: ?Position,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n refExpressionErrors?: ?ExpressionErrors,\n containsEsc: boolean,\n ): void {\n const node =\n this.parseObjectMethod(\n prop,\n isGenerator,\n isAsync,\n isPattern,\n containsEsc,\n ) ||\n this.parseObjectProperty(\n prop,\n startPos,\n startLoc,\n isPattern,\n refExpressionErrors,\n );\n\n if (!node) this.unexpected();\n\n // $FlowFixMe\n return node;\n }\n\n parsePropertyName(\n prop: N.ObjectOrClassMember | N.ClassMember | N.TsNamedTypeElementBase,\n isPrivateNameAllowed: boolean,\n ): N.Expression | N.Identifier {\n if (this.eat(tt.bracketL)) {\n (prop: $FlowSubtype<N.ObjectOrClassMember>).computed = true;\n prop.key = this.parseMaybeAssign();\n this.expect(tt.bracketR);\n } else {\n const oldInPropertyName = this.state.inPropertyName;\n this.state.inPropertyName = true;\n // We check if it's valid for it to be a private name when we push it.\n (prop: $FlowFixMe).key =\n this.match(tt.num) || this.match(tt.string) || this.match(tt.bigint)\n ? this.parseExprAtom()\n : this.parseMaybePrivateName(isPrivateNameAllowed);\n\n if (prop.key.type !== \"PrivateName\") {\n // ClassPrivateProperty is never computed, so we don't assign in that case.\n prop.computed = false;\n }\n\n this.state.inPropertyName = oldInPropertyName;\n }\n\n return prop.key;\n }\n\n // Initialize empty function node.\n\n initFunction(node: N.BodilessFunctionOrMethodBase, isAsync: ?boolean): void {\n node.id = null;\n node.generator = false;\n node.async = !!isAsync;\n }\n\n // Parse object or class method.\n\n parseMethod<T: N.MethodLike>(\n node: T,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowDirectSuper: boolean,\n type: string,\n inClassScope: boolean = false,\n ): T {\n const oldYieldPos = this.state.yieldPos;\n const oldAwaitPos = this.state.awaitPos;\n this.state.yieldPos = -1;\n this.state.awaitPos = -1;\n\n this.initFunction(node, isAsync);\n node.generator = !!isGenerator;\n const allowModifiers = isConstructor; // For TypeScript parameter properties\n this.scope.enter(\n functionFlags(isAsync, node.generator) |\n SCOPE_SUPER |\n (inClassScope ? SCOPE_CLASS : 0) |\n (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0),\n );\n this.parseFunctionParams((node: any), allowModifiers);\n this.parseFunctionBodyAndFinish(node, type, true);\n this.scope.exit();\n\n this.state.yieldPos = oldYieldPos;\n this.state.awaitPos = oldAwaitPos;\n\n return node;\n }\n\n // Parse arrow function expression.\n // If the parameters are provided, they will be converted to an\n // assignable list.\n parseArrowExpression(\n node: N.ArrowFunctionExpression,\n params: ?(N.Expression[]),\n isAsync: boolean,\n trailingCommaPos: ?number,\n ): N.ArrowFunctionExpression {\n this.scope.enter(functionFlags(isAsync, false) | SCOPE_ARROW);\n this.initFunction(node, isAsync);\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n const oldYieldPos = this.state.yieldPos;\n const oldAwaitPos = this.state.awaitPos;\n\n if (params) {\n this.state.maybeInArrowParameters = true;\n this.setArrowFunctionParameters(node, params, trailingCommaPos);\n }\n this.state.maybeInArrowParameters = false;\n this.state.yieldPos = -1;\n this.state.awaitPos = -1;\n this.parseFunctionBody(node, true);\n\n this.scope.exit();\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n this.state.yieldPos = oldYieldPos;\n this.state.awaitPos = oldAwaitPos;\n\n return this.finishNode(node, \"ArrowFunctionExpression\");\n }\n\n setArrowFunctionParameters(\n node: N.ArrowFunctionExpression,\n params: N.Expression[],\n trailingCommaPos: ?number,\n ): void {\n node.params = this.toAssignableList(params, trailingCommaPos);\n }\n\n parseFunctionBodyAndFinish(\n node: N.BodilessFunctionOrMethodBase,\n type: string,\n isMethod?: boolean = false,\n ): void {\n // $FlowIgnore (node is not bodiless if we get here)\n this.parseFunctionBody(node, false, isMethod);\n this.finishNode(node, type);\n }\n\n // Parse function body and check parameters.\n parseFunctionBody(\n node: N.Function,\n allowExpression: ?boolean,\n isMethod?: boolean = false,\n ): void {\n const isExpression = allowExpression && !this.match(tt.braceL);\n const oldStrict = this.state.strict;\n let useStrict = false;\n\n const oldInParameters = this.state.inParameters;\n this.state.inParameters = false;\n\n if (isExpression) {\n node.body = this.parseMaybeAssign();\n this.checkParams(node, false, allowExpression, false);\n } else {\n const nonSimple = !this.isSimpleParamList(node.params);\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.state.end);\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple) {\n // This logic is here to align the error location with the estree plugin\n const errorPos =\n // $FlowIgnore\n (node.kind === \"method\" || node.kind === \"constructor\") &&\n // $FlowIgnore\n !!node.key\n ? node.key.end\n : node.start;\n this.raise(\n errorPos,\n \"Illegal 'use strict' directive in function with non-simple parameter list\",\n );\n }\n }\n // Start a new scope with regard to labels\n // flag (restore them to their old value afterwards).\n const oldLabels = this.state.labels;\n this.state.labels = [];\n if (useStrict) this.state.strict = true;\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(\n node,\n !oldStrict && !useStrict && !allowExpression && !isMethod && !nonSimple,\n allowExpression,\n !oldStrict && useStrict,\n );\n node.body = this.parseBlock(true, false);\n this.state.labels = oldLabels;\n }\n\n this.state.inParameters = oldInParameters;\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.state.strict && node.id) {\n this.checkLVal(\n node.id,\n BIND_OUTSIDE,\n undefined,\n \"function name\",\n undefined,\n !oldStrict && useStrict,\n );\n }\n this.state.strict = oldStrict;\n }\n\n isSimpleParamList(\n params: $ReadOnlyArray<N.Pattern | N.TSParameterProperty>,\n ): boolean {\n for (let i = 0, len = params.length; i < len; i++) {\n if (params[i].type !== \"Identifier\") return false;\n }\n return true;\n }\n\n checkParams(\n node: N.Function,\n allowDuplicates: boolean,\n // eslint-disable-next-line no-unused-vars\n isArrowFunction: ?boolean,\n strictModeChanged?: boolean = true,\n ): void {\n // $FlowIssue\n const nameHash: {} = Object.create(null);\n for (let i = 0; i < node.params.length; i++) {\n this.checkLVal(\n node.params[i],\n BIND_VAR,\n allowDuplicates ? null : nameHash,\n \"function parameter list\",\n undefined,\n strictModeChanged,\n );\n }\n }\n\n // Parses a comma-separated list of expressions, and returns them as\n // an array. `close` is the token type that ends the list, and\n // `allowEmpty` can be turned on to allow subsequent commas with\n // nothing in between them to be parsed as `null` (which is needed\n // for array literals).\n\n parseExprList(\n close: TokenType,\n allowEmpty?: boolean,\n refExpressionErrors?: ?ExpressionErrors,\n nodeForExtra?: ?N.Node,\n ): $ReadOnlyArray<?N.Expression> {\n const elts = [];\n let first = true;\n\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n if (this.match(close)) {\n if (nodeForExtra) {\n this.addExtra(\n nodeForExtra,\n \"trailingComma\",\n this.state.lastTokStart,\n );\n }\n this.next();\n break;\n }\n }\n\n elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors));\n }\n return elts;\n }\n\n parseExprListItem(\n allowEmpty: ?boolean,\n refExpressionErrors?: ?ExpressionErrors,\n refNeedsArrowPos: ?Pos,\n allowPlaceholder: ?boolean,\n ): ?N.Expression {\n let elt;\n if (allowEmpty && this.match(tt.comma)) {\n elt = null;\n } else if (this.match(tt.ellipsis)) {\n const spreadNodeStartPos = this.state.start;\n const spreadNodeStartLoc = this.state.startLoc;\n elt = this.parseParenItem(\n this.parseSpread(refExpressionErrors, refNeedsArrowPos),\n spreadNodeStartPos,\n spreadNodeStartLoc,\n );\n } else if (this.match(tt.question)) {\n this.expectPlugin(\"partialApplication\");\n if (!allowPlaceholder) {\n this.raise(this.state.start, \"Unexpected argument placeholder\");\n }\n const node = this.startNode();\n this.next();\n elt = this.finishNode(node, \"ArgumentPlaceholder\");\n } else {\n elt = this.parseMaybeAssign(\n false,\n refExpressionErrors,\n this.parseParenItem,\n refNeedsArrowPos,\n );\n }\n return elt;\n }\n\n // Parse the next token as an identifier. If `liberal` is true (used\n // when parsing properties), it will also convert keywords into\n // identifiers.\n // This shouldn't be used to parse the keywords of meta properties, since they\n // are not identifiers and cannot contain escape sequences.\n\n parseIdentifier(liberal?: boolean): N.Identifier {\n const node = this.startNode();\n const name = this.parseIdentifierName(node.start, liberal);\n\n return this.createIdentifier(node, name);\n }\n\n createIdentifier(node: N.Identifier, name: string): N.Identifier {\n node.name = name;\n node.loc.identifierName = name;\n\n return this.finishNode(node, \"Identifier\");\n }\n\n parseIdentifierName(pos: number, liberal?: boolean): string {\n let name: string;\n\n if (this.match(tt.name)) {\n name = this.state.value;\n } else if (this.state.type.keyword) {\n name = this.state.type.keyword;\n\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed\n // as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the\n // context-managing code already ignored the keyword\n if (\n (name === \"class\" || name === \"function\") &&\n (this.state.lastTokEnd !== this.state.lastTokStart + 1 ||\n this.input.charCodeAt(this.state.lastTokStart) !== charCodes.dot)\n ) {\n this.state.context.pop();\n }\n } else {\n throw this.unexpected();\n }\n\n if (liberal) {\n // If the current token is not used as a keyword, set its type to \"tt.name\".\n // This will prevent this.next() from throwing about unexpected escapes.\n this.state.type = tt.name;\n } else {\n this.checkReservedWord(\n name,\n this.state.start,\n !!this.state.type.keyword,\n false,\n );\n }\n\n this.next();\n\n return name;\n }\n\n checkReservedWord(\n word: string,\n startLoc: number,\n checkKeywords: boolean,\n isBinding: boolean,\n ): void {\n if (this.scope.inGenerator && word === \"yield\") {\n this.raise(\n startLoc,\n \"Can not use 'yield' as identifier inside a generator\",\n );\n return;\n }\n\n if (word === \"await\") {\n if (this.scope.inAsync) {\n this.raise(\n startLoc,\n \"Can not use 'await' as identifier inside an async function\",\n );\n return;\n }\n if (\n this.state.awaitPos === -1 &&\n (this.state.maybeInArrowParameters || this.isAwaitAllowed())\n ) {\n this.state.awaitPos = this.state.start;\n }\n }\n\n if (\n this.scope.inClass &&\n !this.scope.inNonArrowFunction &&\n word === \"arguments\"\n ) {\n this.raise(\n startLoc,\n \"'arguments' is not allowed in class field initializer\",\n );\n return;\n }\n if (checkKeywords && isKeyword(word)) {\n this.raise(startLoc, `Unexpected keyword '${word}'`);\n return;\n }\n\n const reservedTest = !this.state.strict\n ? isReservedWord\n : isBinding\n ? isStrictBindReservedWord\n : isStrictReservedWord;\n\n if (reservedTest(word, this.inModule)) {\n if (!this.scope.inAsync && word === \"await\") {\n this.raise(\n startLoc,\n \"Can not use keyword 'await' outside an async function\",\n );\n } else {\n this.raise(startLoc, `Unexpected reserved word '${word}'`);\n }\n }\n }\n\n isAwaitAllowed(): boolean {\n if (this.scope.inFunction) return this.scope.inAsync;\n if (this.options.allowAwaitOutsideFunction) return true;\n if (this.hasPlugin(\"topLevelAwait\")) {\n return this.inModule && this.scope.inAsync;\n }\n return false;\n }\n\n // Parses await expression inside async function.\n\n parseAwait(): N.AwaitExpression {\n const node = this.startNode();\n\n this.next();\n\n if (this.state.inParameters) {\n this.raise(\n node.start,\n \"await is not allowed in async function parameters\",\n );\n } else if (this.state.awaitPos === -1) {\n this.state.awaitPos = node.start;\n }\n if (this.eat(tt.star)) {\n this.raise(\n node.start,\n \"await* has been removed from the async functions proposal. Use Promise.all() instead.\",\n );\n }\n\n if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) {\n if (\n this.hasPrecedingLineBreak() ||\n // All the following expressions are ambiguous:\n // await + 0, await - 0, await ( 0 ), await [ 0 ], await / 0 /u, await ``\n this.match(tt.plusMin) ||\n this.match(tt.parenL) ||\n this.match(tt.bracketL) ||\n this.match(tt.backQuote) ||\n // Sometimes the tokenizer generates tt.slash for regexps, and this is\n // handler by parseExprAtom\n this.match(tt.regexp) ||\n this.match(tt.slash) ||\n // This code could be parsed both as a modulo operator or as an intrinsic:\n // await %x(0)\n (this.hasPlugin(\"v8intrinsic\") && this.match(tt.modulo))\n ) {\n this.ambiguousScriptDifferentAst = true;\n } else {\n this.sawUnambiguousESM = true;\n }\n }\n\n if (!this.state.soloAwait) {\n node.argument = this.parseMaybeUnary();\n }\n\n return this.finishNode(node, \"AwaitExpression\");\n }\n\n // Parses yield expression inside generator.\n\n parseYield(noIn?: ?boolean): N.YieldExpression {\n const node = this.startNode();\n\n if (this.state.inParameters) {\n this.raise(node.start, \"yield is not allowed in generator parameters\");\n } else if (this.state.yieldPos === -1) {\n this.state.yieldPos = node.start;\n }\n\n this.next();\n if (\n this.match(tt.semi) ||\n (!this.match(tt.star) && !this.state.type.startsExpr) ||\n this.hasPrecedingLineBreak()\n ) {\n node.delegate = false;\n node.argument = null;\n } else {\n node.delegate = this.eat(tt.star);\n node.argument = this.parseMaybeAssign(noIn);\n }\n return this.finishNode(node, \"YieldExpression\");\n }\n\n // Validates a pipeline (for any of the pipeline Babylon plugins) at the point\n // of the infix operator `|>`.\n\n checkPipelineAtInfixOperator(left: N.Expression, leftStartPos: number) {\n if (this.getPluginOption(\"pipelineOperator\", \"proposal\") === \"smart\") {\n if (left.type === \"SequenceExpression\") {\n // Ensure that the pipeline head is not a comma-delimited\n // sequence expression.\n this.raise(\n leftStartPos,\n `Pipeline head should not be a comma-separated sequence expression`,\n );\n }\n }\n }\n\n parseSmartPipelineBody(\n childExpression: N.Expression,\n startPos: number,\n startLoc: Position,\n ): N.PipelineBody {\n const pipelineStyle = this.checkSmartPipelineBodyStyle(childExpression);\n\n this.checkSmartPipelineBodyEarlyErrors(\n childExpression,\n pipelineStyle,\n startPos,\n );\n\n return this.parseSmartPipelineBodyInStyle(\n childExpression,\n pipelineStyle,\n startPos,\n startLoc,\n );\n }\n\n checkSmartPipelineBodyEarlyErrors(\n childExpression: N.Expression,\n pipelineStyle: N.PipelineStyle,\n startPos: number,\n ): void {\n if (this.match(tt.arrow)) {\n // If the following token is invalidly `=>`, then throw a human-friendly error\n // instead of something like 'Unexpected token, expected \";\"'.\n throw this.raise(\n this.state.start,\n `Unexpected arrow \"=>\" after pipeline body; arrow function in pipeline body must be parenthesized`,\n );\n } else if (\n pipelineStyle === \"PipelineTopicExpression\" &&\n childExpression.type === \"SequenceExpression\"\n ) {\n this.raise(\n startPos,\n `Pipeline body may not be a comma-separated sequence expression`,\n );\n }\n }\n\n parseSmartPipelineBodyInStyle(\n childExpression: N.Expression,\n pipelineStyle: N.PipelineStyle,\n startPos: number,\n startLoc: Position,\n ): N.PipelineBody {\n const bodyNode = this.startNodeAt(startPos, startLoc);\n switch (pipelineStyle) {\n case \"PipelineBareFunction\":\n bodyNode.callee = childExpression;\n break;\n case \"PipelineBareConstructor\":\n bodyNode.callee = childExpression.callee;\n break;\n case \"PipelineBareAwaitedFunction\":\n bodyNode.callee = childExpression.argument;\n break;\n case \"PipelineTopicExpression\":\n if (!this.topicReferenceWasUsedInCurrentTopicContext()) {\n this.raise(\n startPos,\n `Pipeline is in topic style but does not use topic reference`,\n );\n }\n bodyNode.expression = childExpression;\n break;\n default:\n throw new Error(\n `Internal @babel/parser error: Unknown pipeline style (${pipelineStyle})`,\n );\n }\n return this.finishNode(bodyNode, pipelineStyle);\n }\n\n checkSmartPipelineBodyStyle(expression: N.Expression): N.PipelineStyle {\n switch (expression.type) {\n default:\n return this.isSimpleReference(expression)\n ? \"PipelineBareFunction\"\n : \"PipelineTopicExpression\";\n }\n }\n\n isSimpleReference(expression: N.Expression): boolean {\n switch (expression.type) {\n case \"MemberExpression\":\n return (\n !expression.computed && this.isSimpleReference(expression.object)\n );\n case \"Identifier\":\n return true;\n default:\n return false;\n }\n }\n\n // Enable topic references from outer contexts within smart pipeline bodies.\n // The function modifies the parser's topic-context state to enable or disable\n // the use of topic references with the smartPipelines plugin. They then run a\n // callback, then they reset the parser to the old topic-context state that it\n // had before the function was called.\n\n withTopicPermittingContext<T>(callback: () => T): T {\n const outerContextTopicState = this.state.topicContext;\n this.state.topicContext = {\n // Enable the use of the primary topic reference.\n maxNumOfResolvableTopics: 1,\n // Hide the use of any topic references from outer contexts.\n maxTopicIndex: null,\n };\n\n try {\n return callback();\n } finally {\n this.state.topicContext = outerContextTopicState;\n }\n }\n\n // Disable topic references from outer contexts within syntax constructs\n // such as the bodies of iteration statements.\n // The function modifies the parser's topic-context state to enable or disable\n // the use of topic references with the smartPipelines plugin. They then run a\n // callback, then they reset the parser to the old topic-context state that it\n // had before the function was called.\n\n withTopicForbiddingContext<T>(callback: () => T): T {\n const outerContextTopicState = this.state.topicContext;\n this.state.topicContext = {\n // Disable the use of the primary topic reference.\n maxNumOfResolvableTopics: 0,\n // Hide the use of any topic references from outer contexts.\n maxTopicIndex: null,\n };\n\n try {\n return callback();\n } finally {\n this.state.topicContext = outerContextTopicState;\n }\n }\n\n withSoloAwaitPermittingContext<T>(callback: () => T): T {\n const outerContextSoloAwaitState = this.state.soloAwait;\n this.state.soloAwait = true;\n\n try {\n return callback();\n } finally {\n this.state.soloAwait = outerContextSoloAwaitState;\n }\n }\n\n // Register the use of a primary topic reference (`#`) within the current\n // topic context.\n registerTopicReference(): void {\n this.state.topicContext.maxTopicIndex = 0;\n }\n\n primaryTopicReferenceIsAllowedInCurrentTopicContext(): boolean {\n return this.state.topicContext.maxNumOfResolvableTopics >= 1;\n }\n\n topicReferenceWasUsedInCurrentTopicContext(): boolean {\n return (\n this.state.topicContext.maxTopicIndex != null &&\n this.state.topicContext.maxTopicIndex >= 0\n );\n }\n\n parseFSharpPipelineBody(prec: number, noIn: ?boolean): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n\n this.state.potentialArrowAt = this.state.start;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = true;\n\n const ret = this.parseExprOp(\n this.parseMaybeUnary(),\n startPos,\n startLoc,\n prec,\n noIn,\n );\n\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n return ret;\n }\n}\n","// @flow\n\nimport * as N from \"../types\";\nimport { types as tt, type TokenType } from \"../tokenizer/types\";\nimport ExpressionParser from \"./expression\";\nimport {\n isIdentifierChar,\n isIdentifierStart,\n keywordRelationalOperator,\n} from \"../util/identifier\";\nimport { lineBreak } from \"../util/whitespace\";\nimport * as charCodes from \"charcodes\";\nimport {\n BIND_CLASS,\n BIND_LEXICAL,\n BIND_VAR,\n BIND_FUNCTION,\n functionFlags,\n SCOPE_CLASS,\n SCOPE_OTHER,\n SCOPE_SIMPLE_CATCH,\n SCOPE_SUPER,\n CLASS_ELEMENT_OTHER,\n CLASS_ELEMENT_INSTANCE_GETTER,\n CLASS_ELEMENT_INSTANCE_SETTER,\n CLASS_ELEMENT_STATIC_GETTER,\n CLASS_ELEMENT_STATIC_SETTER,\n type BindingTypes,\n} from \"../util/scopeflags\";\nimport { ExpressionErrors } from \"./util\";\n\nconst loopLabel = { kind: \"loop\" },\n switchLabel = { kind: \"switch\" };\n\nconst FUNC_NO_FLAGS = 0b000,\n FUNC_STATEMENT = 0b001,\n FUNC_HANGING_STATEMENT = 0b010,\n FUNC_NULLABLE_ID = 0b100;\n\nexport default class StatementParser extends ExpressionParser {\n // ### Statement parsing\n\n // Parse a program. Initializes the parser, reads any number of\n // statements, and wraps them in a Program node. Optionally takes a\n // `program` argument. If present, the statements will be appended\n // to its body instead of creating a new node.\n\n parseTopLevel(file: N.File, program: N.Program): N.File {\n program.sourceType = this.options.sourceType;\n\n program.interpreter = this.parseInterpreterDirective();\n\n this.parseBlockBody(program, true, true, tt.eof);\n\n if (\n this.inModule &&\n !this.options.allowUndeclaredExports &&\n this.scope.undefinedExports.size > 0\n ) {\n for (const [name] of Array.from(this.scope.undefinedExports)) {\n const pos = this.scope.undefinedExports.get(name);\n // $FlowIssue\n this.raise(pos, `Export '${name}' is not defined`);\n }\n }\n\n file.program = this.finishNode(program, \"Program\");\n file.comments = this.state.comments;\n\n if (this.options.tokens) file.tokens = this.tokens;\n\n return this.finishNode(file, \"File\");\n }\n\n // TODO\n\n stmtToDirective(stmt: N.Statement): N.Directive {\n const expr = stmt.expression;\n\n const directiveLiteral = this.startNodeAt(expr.start, expr.loc.start);\n const directive = this.startNodeAt(stmt.start, stmt.loc.start);\n\n const raw = this.input.slice(expr.start, expr.end);\n const val = (directiveLiteral.value = raw.slice(1, -1)); // remove quotes\n\n this.addExtra(directiveLiteral, \"raw\", raw);\n this.addExtra(directiveLiteral, \"rawValue\", val);\n\n directive.value = this.finishNodeAt(\n directiveLiteral,\n \"DirectiveLiteral\",\n expr.end,\n expr.loc.end,\n );\n\n return this.finishNodeAt(directive, \"Directive\", stmt.end, stmt.loc.end);\n }\n\n parseInterpreterDirective(): N.InterpreterDirective | null {\n if (!this.match(tt.interpreterDirective)) {\n return null;\n }\n\n const node = this.startNode();\n node.value = this.state.value;\n this.next();\n return this.finishNode(node, \"InterpreterDirective\");\n }\n\n isLet(context: ?string): boolean {\n if (!this.isContextual(\"let\")) {\n return false;\n }\n const next = this.nextTokenStart();\n const nextCh = this.input.charCodeAt(next);\n // For ambiguous cases, determine if a LexicalDeclaration (or only a\n // Statement) is allowed here. If context is not empty then only a Statement\n // is allowed. However, `let [` is an explicit negative lookahead for\n // ExpressionStatement, so special-case it first.\n if (nextCh === charCodes.leftSquareBracket) return true;\n if (context) return false;\n\n if (nextCh === charCodes.leftCurlyBrace) return true;\n\n if (isIdentifierStart(nextCh)) {\n let pos = next + 1;\n while (isIdentifierChar(this.input.charCodeAt(pos))) {\n ++pos;\n }\n const ident = this.input.slice(next, pos);\n if (!keywordRelationalOperator.test(ident)) return true;\n }\n return false;\n }\n\n // Parse a single statement.\n //\n // If expecting a statement and finding a slash operator, parse a\n // regular expression literal. This is to handle cases like\n // `if (foo) /blah/.exec(foo)`, where looking at the previous token\n // does not help.\n\n parseStatement(context: ?string, topLevel?: boolean): N.Statement {\n if (this.match(tt.at)) {\n this.parseDecorators(true);\n }\n return this.parseStatementContent(context, topLevel);\n }\n\n parseStatementContent(context: ?string, topLevel: ?boolean): N.Statement {\n let starttype = this.state.type;\n const node = this.startNode();\n let kind;\n\n if (this.isLet(context)) {\n starttype = tt._var;\n kind = \"let\";\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case tt._break:\n case tt._continue:\n // $FlowFixMe\n return this.parseBreakContinueStatement(node, starttype.keyword);\n case tt._debugger:\n return this.parseDebuggerStatement(node);\n case tt._do:\n return this.parseDoStatement(node);\n case tt._for:\n return this.parseForStatement(node);\n case tt._function:\n if (this.lookaheadCharCode() === charCodes.dot) break;\n if (context) {\n if (this.state.strict) {\n this.raise(\n this.state.start,\n \"In strict mode code, functions can only be declared at top level or inside a block\",\n );\n } else if (context !== \"if\" && context !== \"label\") {\n this.raise(\n this.state.start,\n \"In non-strict mode code, functions can only be declared at top level, \" +\n \"inside a block, or as the body of an if statement\",\n );\n }\n }\n return this.parseFunctionStatement(node, false, !context);\n\n case tt._class:\n if (context) this.unexpected();\n return this.parseClass(node, true);\n\n case tt._if:\n return this.parseIfStatement(node);\n case tt._return:\n return this.parseReturnStatement(node);\n case tt._switch:\n return this.parseSwitchStatement(node);\n case tt._throw:\n return this.parseThrowStatement(node);\n case tt._try:\n return this.parseTryStatement(node);\n\n case tt._const:\n case tt._var:\n kind = kind || this.state.value;\n if (context && kind !== \"var\") {\n this.raise(\n this.state.start,\n \"Lexical declaration cannot appear in a single-statement context\",\n );\n }\n return this.parseVarStatement(node, kind);\n\n case tt._while:\n return this.parseWhileStatement(node);\n case tt._with:\n return this.parseWithStatement(node);\n case tt.braceL:\n return this.parseBlock();\n case tt.semi:\n return this.parseEmptyStatement(node);\n case tt._export:\n case tt._import: {\n const nextTokenCharCode = this.lookaheadCharCode();\n if (\n nextTokenCharCode === charCodes.leftParenthesis ||\n nextTokenCharCode === charCodes.dot\n ) {\n break;\n }\n\n if (!this.options.allowImportExportEverywhere && !topLevel) {\n this.raise(\n this.state.start,\n \"'import' and 'export' may only appear at the top level\",\n );\n }\n\n this.next();\n\n let result;\n if (starttype === tt._import) {\n result = this.parseImport(node);\n\n if (\n result.type === \"ImportDeclaration\" &&\n (!result.importKind || result.importKind === \"value\")\n ) {\n this.sawUnambiguousESM = true;\n }\n } else {\n result = this.parseExport(node);\n\n if (\n (result.type === \"ExportNamedDeclaration\" &&\n (!result.exportKind || result.exportKind === \"value\")) ||\n (result.type === \"ExportAllDeclaration\" &&\n (!result.exportKind || result.exportKind === \"value\")) ||\n result.type === \"ExportDefaultDeclaration\"\n ) {\n this.sawUnambiguousESM = true;\n }\n }\n\n this.assertModuleNodeAllowed(node);\n\n return result;\n }\n\n default: {\n if (this.isAsyncFunction()) {\n if (context) {\n this.raise(\n this.state.start,\n \"Async functions can only be declared at the top level or inside a block\",\n );\n }\n this.next();\n return this.parseFunctionStatement(node, true, !context);\n }\n }\n }\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n const maybeName = this.state.value;\n const expr = this.parseExpression();\n\n if (\n starttype === tt.name &&\n expr.type === \"Identifier\" &&\n this.eat(tt.colon)\n ) {\n return this.parseLabeledStatement(node, maybeName, expr, context);\n } else {\n return this.parseExpressionStatement(node, expr);\n }\n }\n\n assertModuleNodeAllowed(node: N.Node): void {\n if (!this.options.allowImportExportEverywhere && !this.inModule) {\n this.raise(\n node.start,\n `'import' and 'export' may appear only with 'sourceType: \"module\"'`,\n {\n code: \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\",\n },\n );\n }\n }\n\n takeDecorators(node: N.HasDecorators): void {\n const decorators = this.state.decoratorStack[\n this.state.decoratorStack.length - 1\n ];\n if (decorators.length) {\n node.decorators = decorators;\n this.resetStartLocationFromNode(node, decorators[0]);\n this.state.decoratorStack[this.state.decoratorStack.length - 1] = [];\n }\n }\n\n canHaveLeadingDecorator(): boolean {\n return this.match(tt._class);\n }\n\n parseDecorators(allowExport?: boolean): void {\n const currentContextDecorators = this.state.decoratorStack[\n this.state.decoratorStack.length - 1\n ];\n while (this.match(tt.at)) {\n const decorator = this.parseDecorator();\n currentContextDecorators.push(decorator);\n }\n\n if (this.match(tt._export)) {\n if (!allowExport) {\n this.unexpected();\n }\n\n if (\n this.hasPlugin(\"decorators\") &&\n !this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\")\n ) {\n this.raise(\n this.state.start,\n \"Using the export keyword between a decorator and a class is not allowed. \" +\n \"Please use `export @dec class` instead.\",\n );\n }\n } else if (!this.canHaveLeadingDecorator()) {\n throw this.raise(\n this.state.start,\n \"Leading decorators must be attached to a class declaration\",\n );\n }\n }\n\n parseDecorator(): N.Decorator {\n this.expectOnePlugin([\"decorators-legacy\", \"decorators\"]);\n\n const node = this.startNode();\n this.next();\n\n if (this.hasPlugin(\"decorators\")) {\n // Every time a decorator class expression is evaluated, a new empty array is pushed onto the stack\n // So that the decorators of any nested class expressions will be dealt with separately\n this.state.decoratorStack.push([]);\n\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let expr: N.Expression;\n\n if (this.eat(tt.parenL)) {\n expr = this.parseExpression();\n this.expect(tt.parenR);\n } else {\n expr = this.parseIdentifier(false);\n\n while (this.eat(tt.dot)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.object = expr;\n node.property = this.parseIdentifier(true);\n node.computed = false;\n expr = this.finishNode(node, \"MemberExpression\");\n }\n }\n\n node.expression = this.parseMaybeDecoratorArguments(expr);\n this.state.decoratorStack.pop();\n } else {\n node.expression = this.parseExprSubscripts();\n }\n return this.finishNode(node, \"Decorator\");\n }\n\n parseMaybeDecoratorArguments(expr: N.Expression): N.Expression {\n if (this.eat(tt.parenL)) {\n const node = this.startNodeAtNode(expr);\n node.callee = expr;\n node.arguments = this.parseCallExpressionArguments(tt.parenR, false);\n this.toReferencedList(node.arguments);\n return this.finishNode(node, \"CallExpression\");\n }\n\n return expr;\n }\n\n parseBreakContinueStatement(\n node: N.BreakStatement | N.ContinueStatement,\n keyword: string,\n ): N.BreakStatement | N.ContinueStatement {\n const isBreak = keyword === \"break\";\n this.next();\n\n if (this.isLineTerminator()) {\n node.label = null;\n } else {\n node.label = this.parseIdentifier();\n this.semicolon();\n }\n\n this.verifyBreakContinue(node, keyword);\n\n return this.finishNode(\n node,\n isBreak ? \"BreakStatement\" : \"ContinueStatement\",\n );\n }\n\n verifyBreakContinue(\n node: N.BreakStatement | N.ContinueStatement,\n keyword: string,\n ) {\n const isBreak = keyword === \"break\";\n let i;\n for (i = 0; i < this.state.labels.length; ++i) {\n const lab = this.state.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) break;\n if (node.label && isBreak) break;\n }\n }\n if (i === this.state.labels.length) {\n this.raise(node.start, \"Unsyntactic \" + keyword);\n }\n }\n\n parseDebuggerStatement(node: N.DebuggerStatement): N.DebuggerStatement {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\");\n }\n\n parseHeaderExpression(): N.Expression {\n this.expect(tt.parenL);\n const val = this.parseExpression();\n this.expect(tt.parenR);\n return val;\n }\n\n parseDoStatement(node: N.DoWhileStatement): N.DoWhileStatement {\n this.next();\n this.state.labels.push(loopLabel);\n\n node.body =\n // For the smartPipelines plugin: Disable topic references from outer\n // contexts within the loop body. They are permitted in test expressions,\n // outside of the loop body.\n this.withTopicForbiddingContext(() =>\n // Parse the loop body's body.\n this.parseStatement(\"do\"),\n );\n\n this.state.labels.pop();\n\n this.expect(tt._while);\n node.test = this.parseHeaderExpression();\n this.eat(tt.semi);\n return this.finishNode(node, \"DoWhileStatement\");\n }\n\n // Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n // loop is non-trivial. Basically, we have to parse the init `var`\n // statement or expression, disallowing the `in` operator (see\n // the second parameter to `parseExpression`), and then check\n // whether the next token is `in` or `of`. When there is no init\n // part (semicolon immediately after the opening parenthesis), it\n // is a regular `for` loop.\n\n parseForStatement(node: N.Node): N.ForLike {\n this.next();\n this.state.labels.push(loopLabel);\n\n let awaitAt = -1;\n if (this.isAwaitAllowed() && this.eatContextual(\"await\")) {\n awaitAt = this.state.lastTokStart;\n }\n this.scope.enter(SCOPE_OTHER);\n this.expect(tt.parenL);\n\n if (this.match(tt.semi)) {\n if (awaitAt > -1) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node, null);\n }\n\n const isLet = this.isLet();\n if (this.match(tt._var) || this.match(tt._const) || isLet) {\n const init = this.startNode();\n const kind = isLet ? \"let\" : this.state.value;\n this.next();\n this.parseVar(init, true, kind);\n this.finishNode(init, \"VariableDeclaration\");\n\n if (\n (this.match(tt._in) || this.isContextual(\"of\")) &&\n init.declarations.length === 1\n ) {\n return this.parseForIn(node, init, awaitAt);\n }\n if (awaitAt > -1) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node, init);\n }\n\n const refExpressionErrors = new ExpressionErrors();\n const init = this.parseExpression(true, refExpressionErrors);\n if (this.match(tt._in) || this.isContextual(\"of\")) {\n this.toAssignable(init);\n const description = this.isContextual(\"of\")\n ? \"for-of statement\"\n : \"for-in statement\";\n this.checkLVal(init, undefined, undefined, description);\n return this.parseForIn(node, init, awaitAt);\n } else {\n this.checkExpressionErrors(refExpressionErrors, true);\n }\n if (awaitAt > -1) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node, init);\n }\n\n parseFunctionStatement(\n node: N.FunctionDeclaration,\n isAsync?: boolean,\n declarationPosition?: boolean,\n ): N.FunctionDeclaration {\n this.next();\n return this.parseFunction(\n node,\n FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT),\n isAsync,\n );\n }\n\n parseIfStatement(node: N.IfStatement): N.IfStatement {\n this.next();\n node.test = this.parseHeaderExpression();\n node.consequent = this.parseStatement(\"if\");\n node.alternate = this.eat(tt._else) ? this.parseStatement(\"if\") : null;\n return this.finishNode(node, \"IfStatement\");\n }\n\n parseReturnStatement(node: N.ReturnStatement): N.ReturnStatement {\n if (!this.scope.inFunction && !this.options.allowReturnOutsideFunction) {\n this.raise(this.state.start, \"'return' outside of function\");\n }\n\n this.next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.isLineTerminator()) {\n node.argument = null;\n } else {\n node.argument = this.parseExpression();\n this.semicolon();\n }\n\n return this.finishNode(node, \"ReturnStatement\");\n }\n\n parseSwitchStatement(node: N.SwitchStatement): N.SwitchStatement {\n this.next();\n node.discriminant = this.parseHeaderExpression();\n const cases = (node.cases = []);\n this.expect(tt.braceL);\n this.state.labels.push(switchLabel);\n this.scope.enter(SCOPE_OTHER);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n let cur;\n for (let sawDefault; !this.match(tt.braceR); ) {\n if (this.match(tt._case) || this.match(tt._default)) {\n const isCase = this.match(tt._case);\n if (cur) this.finishNode(cur, \"SwitchCase\");\n cases.push((cur = this.startNode()));\n cur.consequent = [];\n this.next();\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) {\n this.raise(this.state.lastTokStart, \"Multiple default clauses\");\n }\n sawDefault = true;\n cur.test = null;\n }\n this.expect(tt.colon);\n } else {\n if (cur) {\n cur.consequent.push(this.parseStatement(null));\n } else {\n this.unexpected();\n }\n }\n }\n this.scope.exit();\n if (cur) this.finishNode(cur, \"SwitchCase\");\n this.next(); // Closing brace\n this.state.labels.pop();\n return this.finishNode(node, \"SwitchStatement\");\n }\n\n parseThrowStatement(node: N.ThrowStatement): N.ThrowStatement {\n this.next();\n if (\n lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start))\n ) {\n this.raise(this.state.lastTokEnd, \"Illegal newline after throw\");\n }\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\");\n }\n\n parseTryStatement(node: N.TryStatement): N.TryStatement {\n this.next();\n\n node.block = this.parseBlock();\n node.handler = null;\n\n if (this.match(tt._catch)) {\n const clause = this.startNode();\n this.next();\n if (this.match(tt.parenL)) {\n this.expect(tt.parenL);\n clause.param = this.parseBindingAtom();\n const simple = clause.param.type === \"Identifier\";\n this.scope.enter(simple ? SCOPE_SIMPLE_CATCH : 0);\n this.checkLVal(clause.param, BIND_LEXICAL, null, \"catch clause\");\n this.expect(tt.parenR);\n } else {\n clause.param = null;\n this.scope.enter(SCOPE_OTHER);\n }\n\n clause.body =\n // For the smartPipelines plugin: Disable topic references from outer\n // contexts within the function body. They are permitted in function\n // default-parameter expressions, which are part of the outer context,\n // outside of the function body.\n this.withTopicForbiddingContext(() =>\n // Parse the catch clause's body.\n this.parseBlock(false, false),\n );\n this.scope.exit();\n\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n\n node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null;\n\n if (!node.handler && !node.finalizer) {\n this.raise(node.start, \"Missing catch or finally clause\");\n }\n\n return this.finishNode(node, \"TryStatement\");\n }\n\n parseVarStatement(\n node: N.VariableDeclaration,\n kind: \"var\" | \"let\" | \"const\",\n ): N.VariableDeclaration {\n this.next();\n this.parseVar(node, false, kind);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\");\n }\n\n parseWhileStatement(node: N.WhileStatement): N.WhileStatement {\n this.next();\n node.test = this.parseHeaderExpression();\n this.state.labels.push(loopLabel);\n\n node.body =\n // For the smartPipelines plugin:\n // Disable topic references from outer contexts within the loop body.\n // They are permitted in test expressions, outside of the loop body.\n this.withTopicForbiddingContext(() =>\n // Parse loop body.\n this.parseStatement(\"while\"),\n );\n\n this.state.labels.pop();\n\n return this.finishNode(node, \"WhileStatement\");\n }\n\n parseWithStatement(node: N.WithStatement): N.WithStatement {\n if (this.state.strict) {\n this.raise(this.state.start, \"'with' in strict mode\");\n }\n this.next();\n node.object = this.parseHeaderExpression();\n\n node.body =\n // For the smartPipelines plugin:\n // Disable topic references from outer contexts within the function body.\n // They are permitted in function default-parameter expressions, which are\n // part of the outer context, outside of the function body.\n this.withTopicForbiddingContext(() =>\n // Parse the statement body.\n this.parseStatement(\"with\"),\n );\n\n return this.finishNode(node, \"WithStatement\");\n }\n\n parseEmptyStatement(node: N.EmptyStatement): N.EmptyStatement {\n this.next();\n return this.finishNode(node, \"EmptyStatement\");\n }\n\n parseLabeledStatement(\n node: N.LabeledStatement,\n maybeName: string,\n expr: N.Identifier,\n context: ?string,\n ): N.LabeledStatement {\n for (const label of this.state.labels) {\n if (label.name === maybeName) {\n this.raise(expr.start, `Label '${maybeName}' is already declared`);\n }\n }\n\n const kind = this.state.type.isLoop\n ? \"loop\"\n : this.match(tt._switch)\n ? \"switch\"\n : null;\n for (let i = this.state.labels.length - 1; i >= 0; i--) {\n const label = this.state.labels[i];\n if (label.statementStart === node.start) {\n label.statementStart = this.state.start;\n label.kind = kind;\n } else {\n break;\n }\n }\n\n this.state.labels.push({\n name: maybeName,\n kind: kind,\n statementStart: this.state.start,\n });\n node.body = this.parseStatement(\n context\n ? context.indexOf(\"label\") === -1\n ? context + \"label\"\n : context\n : \"label\",\n );\n\n this.state.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\");\n }\n\n parseExpressionStatement(\n node: N.ExpressionStatement,\n expr: N.Expression,\n ): N.Statement {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\");\n }\n\n // Parse a semicolon-enclosed block of statements, handling `\"use\n // strict\"` declarations when `allowStrict` is true (used for\n // function bodies).\n\n parseBlock(\n allowDirectives?: boolean = false,\n createNewLexicalScope?: boolean = true,\n ): N.BlockStatement {\n const node = this.startNode();\n this.expect(tt.braceL);\n if (createNewLexicalScope) {\n this.scope.enter(SCOPE_OTHER);\n }\n this.parseBlockBody(node, allowDirectives, false, tt.braceR);\n if (createNewLexicalScope) {\n this.scope.exit();\n }\n return this.finishNode(node, \"BlockStatement\");\n }\n\n isValidDirective(stmt: N.Statement): boolean {\n return (\n stmt.type === \"ExpressionStatement\" &&\n stmt.expression.type === \"StringLiteral\" &&\n !stmt.expression.extra.parenthesized\n );\n }\n\n parseBlockBody(\n node: N.BlockStatementLike,\n allowDirectives: ?boolean,\n topLevel: boolean,\n end: TokenType,\n ): void {\n const body = (node.body = []);\n const directives = (node.directives = []);\n this.parseBlockOrModuleBlockBody(\n body,\n allowDirectives ? directives : undefined,\n topLevel,\n end,\n );\n }\n\n // Undefined directives means that directives are not allowed.\n parseBlockOrModuleBlockBody(\n body: N.Statement[],\n directives: ?(N.Directive[]),\n topLevel: boolean,\n end: TokenType,\n ): void {\n let parsedNonDirective = false;\n let oldStrict;\n let octalPosition;\n\n while (!this.eat(end)) {\n if (!parsedNonDirective && this.state.containsOctal && !octalPosition) {\n octalPosition = this.state.octalPosition;\n }\n\n const stmt = this.parseStatement(null, topLevel);\n\n if (directives && !parsedNonDirective && this.isValidDirective(stmt)) {\n const directive = this.stmtToDirective(stmt);\n directives.push(directive);\n\n if (oldStrict === undefined && directive.value.value === \"use strict\") {\n oldStrict = this.state.strict;\n this.setStrict(true);\n\n if (octalPosition) {\n this.raise(octalPosition, \"Octal literal in strict mode\");\n }\n }\n\n continue;\n }\n\n parsedNonDirective = true;\n body.push(stmt);\n }\n\n if (oldStrict === false) {\n this.setStrict(false);\n }\n }\n\n // Parse a regular `for` loop. The disambiguation code in\n // `parseStatement` will already have parsed the init statement or\n // expression.\n\n parseFor(\n node: N.ForStatement,\n init: ?(N.VariableDeclaration | N.Expression),\n ): N.ForStatement {\n node.init = init;\n this.expect(tt.semi);\n node.test = this.match(tt.semi) ? null : this.parseExpression();\n this.expect(tt.semi);\n node.update = this.match(tt.parenR) ? null : this.parseExpression();\n this.expect(tt.parenR);\n\n node.body =\n // For the smartPipelines plugin: Disable topic references from outer\n // contexts within the loop body. They are permitted in test expressions,\n // outside of the loop body.\n this.withTopicForbiddingContext(() =>\n // Parse the loop body.\n this.parseStatement(\"for\"),\n );\n\n this.scope.exit();\n this.state.labels.pop();\n\n return this.finishNode(node, \"ForStatement\");\n }\n\n // Parse a `for`/`in` and `for`/`of` loop, which are almost\n // same from parser's perspective.\n\n parseForIn(\n node: N.ForInOf,\n init: N.VariableDeclaration | N.AssignmentPattern,\n awaitAt: number,\n ): N.ForInOf {\n const isForIn = this.match(tt._in);\n this.next();\n\n if (isForIn) {\n if (awaitAt > -1) this.unexpected(awaitAt);\n } else {\n node.await = awaitAt > -1;\n }\n\n if (\n init.type === \"VariableDeclaration\" &&\n init.declarations[0].init != null &&\n (!isForIn ||\n this.state.strict ||\n init.kind !== \"var\" ||\n init.declarations[0].id.type !== \"Identifier\")\n ) {\n this.raise(\n init.start,\n `${\n isForIn ? \"for-in\" : \"for-of\"\n } loop variable declaration may not have an initializer`,\n );\n } else if (init.type === \"AssignmentPattern\") {\n this.raise(init.start, \"Invalid left-hand side in for-loop\");\n }\n\n node.left = init;\n node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();\n this.expect(tt.parenR);\n\n node.body =\n // For the smartPipelines plugin:\n // Disable topic references from outer contexts within the loop body.\n // They are permitted in test expressions, outside of the loop body.\n this.withTopicForbiddingContext(() =>\n // Parse loop body.\n this.parseStatement(\"for\"),\n );\n\n this.scope.exit();\n this.state.labels.pop();\n\n return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\");\n }\n\n // Parse a list of variable declarations.\n\n parseVar(\n node: N.VariableDeclaration,\n isFor: boolean,\n kind: \"var\" | \"let\" | \"const\",\n ): N.VariableDeclaration {\n const declarations = (node.declarations = []);\n const isTypescript = this.hasPlugin(\"typescript\");\n node.kind = kind;\n for (;;) {\n const decl = this.startNode();\n this.parseVarId(decl, kind);\n if (this.eat(tt.eq)) {\n decl.init = this.parseMaybeAssign(isFor);\n } else {\n if (\n kind === \"const\" &&\n !(this.match(tt._in) || this.isContextual(\"of\"))\n ) {\n // `const` with no initializer is allowed in TypeScript.\n // It could be a declaration like `const x: number;`.\n if (!isTypescript) {\n this.unexpected();\n }\n } else if (\n decl.id.type !== \"Identifier\" &&\n !(isFor && (this.match(tt._in) || this.isContextual(\"of\")))\n ) {\n this.raise(\n this.state.lastTokEnd,\n \"Complex binding patterns require an initialization value\",\n );\n }\n decl.init = null;\n }\n declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(tt.comma)) break;\n }\n return node;\n }\n\n parseVarId(decl: N.VariableDeclarator, kind: \"var\" | \"let\" | \"const\"): void {\n decl.id = this.parseBindingAtom();\n this.checkLVal(\n decl.id,\n kind === \"var\" ? BIND_VAR : BIND_LEXICAL,\n undefined,\n \"variable declaration\",\n kind !== \"var\",\n );\n }\n\n // Parse a function declaration or literal (depending on the\n // `isStatement` parameter).\n\n parseFunction<T: N.NormalFunction>(\n node: T,\n statement?: number = FUNC_NO_FLAGS,\n isAsync?: boolean = false,\n ): T {\n const isStatement = statement & FUNC_STATEMENT;\n const isHangingStatement = statement & FUNC_HANGING_STATEMENT;\n const requireId = !!isStatement && !(statement & FUNC_NULLABLE_ID);\n\n this.initFunction(node, isAsync);\n\n if (this.match(tt.star) && isHangingStatement) {\n this.raise(\n this.state.start,\n \"Generators can only be declared at the top level or inside a block\",\n );\n }\n node.generator = this.eat(tt.star);\n\n if (isStatement) {\n node.id = this.parseFunctionId(requireId);\n }\n\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n const oldYieldPos = this.state.yieldPos;\n const oldAwaitPos = this.state.awaitPos;\n this.state.maybeInArrowParameters = false;\n this.state.yieldPos = -1;\n this.state.awaitPos = -1;\n this.scope.enter(functionFlags(node.async, node.generator));\n\n if (!isStatement) {\n node.id = this.parseFunctionId();\n }\n\n this.parseFunctionParams(node);\n\n // For the smartPipelines plugin: Disable topic references from outer\n // contexts within the function body. They are permitted in test\n // expressions, outside of the function body.\n this.withTopicForbiddingContext(() => {\n // Parse the function body.\n this.parseFunctionBodyAndFinish(\n node,\n isStatement ? \"FunctionDeclaration\" : \"FunctionExpression\",\n );\n });\n\n this.scope.exit();\n\n if (isStatement && !isHangingStatement) {\n // We need to register this _after_ parsing the function body\n // because of TypeScript body-less function declarations,\n // which shouldn't be added to the scope.\n this.registerFunctionStatementId(node);\n }\n\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n this.state.yieldPos = oldYieldPos;\n this.state.awaitPos = oldAwaitPos;\n\n return node;\n }\n\n parseFunctionId(requireId?: boolean): ?N.Identifier {\n return requireId || this.match(tt.name) ? this.parseIdentifier() : null;\n }\n\n parseFunctionParams(node: N.Function, allowModifiers?: boolean): void {\n const oldInParameters = this.state.inParameters;\n this.state.inParameters = true;\n\n this.expect(tt.parenL);\n node.params = this.parseBindingList(\n tt.parenR,\n charCodes.rightParenthesis,\n /* allowEmpty */ false,\n allowModifiers,\n );\n\n this.state.inParameters = oldInParameters;\n this.checkYieldAwaitInDefaultParams();\n }\n\n registerFunctionStatementId(node: N.Function): void {\n if (!node.id) return;\n\n // If it is a regular function declaration in sloppy mode, then it is\n // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n // mode depends on properties of the current scope (see\n // treatFunctionsAsVar).\n this.scope.declareName(\n node.id.name,\n this.state.strict || node.generator || node.async\n ? this.scope.treatFunctionsAsVar\n ? BIND_VAR\n : BIND_LEXICAL\n : BIND_FUNCTION,\n node.id.start,\n );\n }\n\n // Parse a class declaration or literal (depending on the\n // `isStatement` parameter).\n\n parseClass<T: N.Class>(\n node: T,\n isStatement: /* T === ClassDeclaration */ boolean,\n optionalId?: boolean,\n ): T {\n this.next();\n this.takeDecorators(node);\n\n // A class definition is always strict mode code.\n const oldStrict = this.state.strict;\n this.state.strict = true;\n\n this.parseClassId(node, isStatement, optionalId);\n this.parseClassSuper(node);\n node.body = this.parseClassBody(!!node.superClass);\n\n this.state.strict = oldStrict;\n\n return this.finishNode(\n node,\n isStatement ? \"ClassDeclaration\" : \"ClassExpression\",\n );\n }\n\n isClassProperty(): boolean {\n return this.match(tt.eq) || this.match(tt.semi) || this.match(tt.braceR);\n }\n\n isClassMethod(): boolean {\n return this.match(tt.parenL);\n }\n\n isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n return (\n !method.computed &&\n !method.static &&\n (method.key.name === \"constructor\" || // Identifier\n method.key.value === \"constructor\") // String literal\n );\n }\n\n parseClassBody(constructorAllowsSuper: boolean): N.ClassBody {\n this.classScope.enter();\n\n const state = { hadConstructor: false };\n let decorators: N.Decorator[] = [];\n const classBody: N.ClassBody = this.startNode();\n classBody.body = [];\n\n this.expect(tt.braceL);\n\n // For the smartPipelines plugin: Disable topic references from outer\n // contexts within the class body. They are permitted in test expressions,\n // outside of the class body.\n this.withTopicForbiddingContext(() => {\n while (!this.eat(tt.braceR)) {\n if (this.eat(tt.semi)) {\n if (decorators.length > 0) {\n throw this.raise(\n this.state.lastTokEnd,\n \"Decorators must not be followed by a semicolon\",\n );\n }\n continue;\n }\n\n if (this.match(tt.at)) {\n decorators.push(this.parseDecorator());\n continue;\n }\n\n const member = this.startNode();\n\n // steal the decorators if there are any\n if (decorators.length) {\n member.decorators = decorators;\n this.resetStartLocationFromNode(member, decorators[0]);\n decorators = [];\n }\n\n this.parseClassMember(classBody, member, state, constructorAllowsSuper);\n\n if (\n member.kind === \"constructor\" &&\n member.decorators &&\n member.decorators.length > 0\n ) {\n this.raise(\n member.start,\n \"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?\",\n );\n }\n }\n });\n\n if (decorators.length) {\n throw this.raise(\n this.state.start,\n \"You have trailing decorators with no method\",\n );\n }\n\n this.classScope.exit();\n\n return this.finishNode(classBody, \"ClassBody\");\n }\n\n parseClassMember(\n classBody: N.ClassBody,\n member: N.ClassMember,\n state: { hadConstructor: boolean },\n constructorAllowsSuper: boolean,\n ): void {\n let isStatic = false;\n const containsEsc = this.state.containsEsc;\n\n if (this.match(tt.name) && this.state.value === \"static\") {\n const key = this.parseIdentifier(true); // eats 'static'\n\n if (this.isClassMethod()) {\n const method: N.ClassMethod = (member: any);\n\n // a method named 'static'\n method.kind = \"method\";\n method.computed = false;\n method.key = key;\n method.static = false;\n this.pushClassMethod(\n classBody,\n method,\n false,\n false,\n /* isConstructor */ false,\n false,\n );\n return;\n } else if (this.isClassProperty()) {\n const prop: N.ClassProperty = (member: any);\n\n // a property named 'static'\n prop.computed = false;\n prop.key = key;\n prop.static = false;\n classBody.body.push(this.parseClassProperty(prop));\n return;\n } else if (containsEsc) {\n throw this.unexpected();\n }\n\n // otherwise something static\n isStatic = true;\n }\n\n this.parseClassMemberWithIsStatic(\n classBody,\n member,\n state,\n isStatic,\n constructorAllowsSuper,\n );\n }\n\n parseClassMemberWithIsStatic(\n classBody: N.ClassBody,\n member: N.ClassMember,\n state: { hadConstructor: boolean },\n isStatic: boolean,\n constructorAllowsSuper: boolean,\n ) {\n const publicMethod: $FlowSubtype<N.ClassMethod> = member;\n const privateMethod: $FlowSubtype<N.ClassPrivateMethod> = member;\n const publicProp: $FlowSubtype<N.ClassMethod> = member;\n const privateProp: $FlowSubtype<N.ClassPrivateMethod> = member;\n\n const method: typeof publicMethod | typeof privateMethod = publicMethod;\n const publicMember: typeof publicMethod | typeof publicProp = publicMethod;\n\n member.static = isStatic;\n\n if (this.eat(tt.star)) {\n // a generator\n method.kind = \"method\";\n this.parseClassPropertyName(method);\n\n if (method.key.type === \"PrivateName\") {\n // Private generator method\n this.pushClassPrivateMethod(classBody, privateMethod, true, false);\n return;\n }\n\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(publicMethod.key.start, \"Constructor can't be a generator\");\n }\n\n this.pushClassMethod(\n classBody,\n publicMethod,\n true,\n false,\n /* isConstructor */ false,\n false,\n );\n\n return;\n }\n\n const containsEsc = this.state.containsEsc;\n const key = this.parseClassPropertyName(member);\n const isPrivate = key.type === \"PrivateName\";\n // Check the key is not a computed expression or string literal.\n const isSimple = key.type === \"Identifier\";\n const maybeQuestionTokenStart = this.state.start;\n\n this.parsePostMemberNameModifiers(publicMember);\n\n if (this.isClassMethod()) {\n method.kind = \"method\";\n\n if (isPrivate) {\n this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n return;\n }\n\n // a normal method\n const isConstructor = this.isNonstaticConstructor(publicMethod);\n let allowsDirectSuper = false;\n if (isConstructor) {\n publicMethod.kind = \"constructor\";\n\n // TypeScript allows multiple overloaded constructor declarations.\n if (state.hadConstructor && !this.hasPlugin(\"typescript\")) {\n this.raise(key.start, \"Duplicate constructor in the same class\");\n }\n state.hadConstructor = true;\n allowsDirectSuper = constructorAllowsSuper;\n }\n\n this.pushClassMethod(\n classBody,\n publicMethod,\n false,\n false,\n isConstructor,\n allowsDirectSuper,\n );\n } else if (this.isClassProperty()) {\n if (isPrivate) {\n this.pushClassPrivateProperty(classBody, privateProp);\n } else {\n this.pushClassProperty(classBody, publicProp);\n }\n } else if (\n isSimple &&\n key.name === \"async\" &&\n !containsEsc &&\n !this.isLineTerminator()\n ) {\n // an async method\n const isGenerator = this.eat(tt.star);\n\n if (publicMember.optional) {\n this.unexpected(maybeQuestionTokenStart);\n }\n\n method.kind = \"method\";\n // The so-called parsed name would have been \"async\": get the real name.\n this.parseClassPropertyName(method);\n this.parsePostMemberNameModifiers(publicMember);\n\n if (method.key.type === \"PrivateName\") {\n // private async method\n this.pushClassPrivateMethod(\n classBody,\n privateMethod,\n isGenerator,\n true,\n );\n } else {\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(\n publicMethod.key.start,\n \"Constructor can't be an async function\",\n );\n }\n\n this.pushClassMethod(\n classBody,\n publicMethod,\n isGenerator,\n true,\n /* isConstructor */ false,\n false,\n );\n }\n } else if (\n isSimple &&\n (key.name === \"get\" || key.name === \"set\") &&\n !containsEsc &&\n !(this.match(tt.star) && this.isLineTerminator())\n ) {\n // `get\\n*` is an uninitialized property named 'get' followed by a generator.\n // a getter or setter\n method.kind = key.name;\n // The so-called parsed name would have been \"get/set\": get the real name.\n this.parseClassPropertyName(publicMethod);\n\n if (method.key.type === \"PrivateName\") {\n // private getter/setter\n this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n } else {\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(\n publicMethod.key.start,\n \"Constructor can't have get/set modifier\",\n );\n }\n this.pushClassMethod(\n classBody,\n publicMethod,\n false,\n false,\n /* isConstructor */ false,\n false,\n );\n }\n\n this.checkGetterSetterParams(publicMethod);\n } else if (this.isLineTerminator()) {\n // an uninitialized class property (due to ASI, since we don't otherwise recognize the next token)\n if (isPrivate) {\n this.pushClassPrivateProperty(classBody, privateProp);\n } else {\n this.pushClassProperty(classBody, publicProp);\n }\n } else {\n this.unexpected();\n }\n }\n\n parseClassPropertyName(member: N.ClassMember): N.Expression | N.Identifier {\n const key = this.parsePropertyName(member, /* isPrivateNameAllowed */ true);\n\n if (\n !member.computed &&\n member.static &&\n ((key: $FlowSubtype<N.Identifier>).name === \"prototype\" ||\n (key: $FlowSubtype<N.StringLiteral>).value === \"prototype\")\n ) {\n this.raise(\n key.start,\n \"Classes may not have static property named prototype\",\n );\n }\n\n if (key.type === \"PrivateName\" && key.id.name === \"constructor\") {\n this.raise(\n key.start,\n \"Classes may not have a private field named '#constructor'\",\n );\n }\n\n return key;\n }\n\n pushClassProperty(classBody: N.ClassBody, prop: N.ClassProperty) {\n if (\n !prop.computed &&\n (prop.key.name === \"constructor\" || prop.key.value === \"constructor\")\n ) {\n // Non-computed field, which is either an identifier named \"constructor\"\n // or a string literal named \"constructor\"\n this.raise(\n prop.key.start,\n \"Classes may not have a field named 'constructor'\",\n );\n }\n\n classBody.body.push(this.parseClassProperty(prop));\n }\n\n pushClassPrivateProperty(\n classBody: N.ClassBody,\n prop: N.ClassPrivateProperty,\n ) {\n this.expectPlugin(\"classPrivateProperties\", prop.key.start);\n\n const node = this.parseClassPrivateProperty(prop);\n classBody.body.push(node);\n\n this.classScope.declarePrivateName(\n node.key.id.name,\n CLASS_ELEMENT_OTHER,\n node.key.start,\n );\n }\n\n pushClassMethod(\n classBody: N.ClassBody,\n method: N.ClassMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowsDirectSuper: boolean,\n ): void {\n classBody.body.push(\n this.parseMethod(\n method,\n isGenerator,\n isAsync,\n isConstructor,\n allowsDirectSuper,\n \"ClassMethod\",\n true,\n ),\n );\n }\n\n pushClassPrivateMethod(\n classBody: N.ClassBody,\n method: N.ClassPrivateMethod,\n isGenerator: boolean,\n isAsync: boolean,\n ): void {\n this.expectPlugin(\"classPrivateMethods\", method.key.start);\n\n const node = this.parseMethod(\n method,\n isGenerator,\n isAsync,\n /* isConstructor */ false,\n false,\n \"ClassPrivateMethod\",\n true,\n );\n classBody.body.push(node);\n\n const kind =\n node.kind === \"get\"\n ? node.static\n ? CLASS_ELEMENT_STATIC_GETTER\n : CLASS_ELEMENT_INSTANCE_GETTER\n : node.kind === \"set\"\n ? node.static\n ? CLASS_ELEMENT_STATIC_SETTER\n : CLASS_ELEMENT_INSTANCE_SETTER\n : CLASS_ELEMENT_OTHER;\n this.classScope.declarePrivateName(node.key.id.name, kind, node.key.start);\n }\n\n // Overridden in typescript.js\n parsePostMemberNameModifiers(\n // eslint-disable-next-line no-unused-vars\n methodOrProp: N.ClassMethod | N.ClassProperty,\n ): void {}\n\n // Overridden in typescript.js\n parseAccessModifier(): ?N.Accessibility {\n return undefined;\n }\n\n parseClassPrivateProperty(\n node: N.ClassPrivateProperty,\n ): N.ClassPrivateProperty {\n this.scope.enter(SCOPE_CLASS | SCOPE_SUPER);\n\n node.value = this.eat(tt.eq) ? this.parseMaybeAssign() : null;\n this.semicolon();\n\n this.scope.exit();\n\n return this.finishNode(node, \"ClassPrivateProperty\");\n }\n\n parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n if (!node.typeAnnotation) {\n this.expectPlugin(\"classProperties\");\n }\n\n this.scope.enter(SCOPE_CLASS | SCOPE_SUPER);\n\n if (this.match(tt.eq)) {\n this.expectPlugin(\"classProperties\");\n this.next();\n node.value = this.parseMaybeAssign();\n } else {\n node.value = null;\n }\n this.semicolon();\n\n this.scope.exit();\n\n return this.finishNode(node, \"ClassProperty\");\n }\n\n parseClassId(\n node: N.Class,\n isStatement: boolean,\n optionalId: ?boolean,\n bindingType: BindingTypes = BIND_CLASS,\n ): void {\n if (this.match(tt.name)) {\n node.id = this.parseIdentifier();\n if (isStatement) {\n this.checkLVal(node.id, bindingType, undefined, \"class name\");\n }\n } else {\n if (optionalId || !isStatement) {\n node.id = null;\n } else {\n this.unexpected(null, \"A class name is required\");\n }\n }\n }\n\n parseClassSuper(node: N.Class): void {\n node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null;\n }\n\n // Parses module export declaration.\n\n parseExport(node: N.Node): N.AnyExport {\n const hasDefault = this.maybeParseExportDefaultSpecifier(node);\n const parseAfterDefault = !hasDefault || this.eat(tt.comma);\n const hasStar = parseAfterDefault && this.eatExportStar(node);\n const hasNamespace =\n hasStar && this.maybeParseExportNamespaceSpecifier(node);\n const parseAfterNamespace =\n parseAfterDefault && (!hasNamespace || this.eat(tt.comma));\n const isFromRequired = hasDefault || hasStar;\n\n if (hasStar && !hasNamespace) {\n if (hasDefault) this.unexpected();\n this.parseExportFrom(node, true);\n\n return this.finishNode(node, \"ExportAllDeclaration\");\n }\n\n const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);\n\n if (\n (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) ||\n (hasNamespace && parseAfterNamespace && !hasSpecifiers)\n ) {\n throw this.unexpected(null, tt.braceL);\n }\n\n let hasDeclaration;\n if (isFromRequired || hasSpecifiers) {\n hasDeclaration = false;\n this.parseExportFrom(node, isFromRequired);\n } else {\n hasDeclaration = this.maybeParseExportDeclaration(node);\n }\n\n if (isFromRequired || hasSpecifiers || hasDeclaration) {\n this.checkExport(node, true, false, !!node.source);\n return this.finishNode(node, \"ExportNamedDeclaration\");\n }\n\n if (this.eat(tt._default)) {\n // export default ...\n node.declaration = this.parseExportDefaultExpression();\n this.checkExport(node, true, true);\n\n return this.finishNode(node, \"ExportDefaultDeclaration\");\n }\n\n throw this.unexpected(null, tt.braceL);\n }\n\n // eslint-disable-next-line no-unused-vars\n eatExportStar(node: N.Node): boolean {\n return this.eat(tt.star);\n }\n\n maybeParseExportDefaultSpecifier(node: N.Node): boolean {\n if (this.isExportDefaultSpecifier()) {\n // export defaultObj ...\n this.expectPlugin(\"exportDefaultFrom\");\n const specifier = this.startNode();\n specifier.exported = this.parseIdentifier(true);\n node.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n return true;\n }\n return false;\n }\n\n maybeParseExportNamespaceSpecifier(node: N.Node): boolean {\n if (this.isContextual(\"as\")) {\n if (!node.specifiers) node.specifiers = [];\n\n const specifier = this.startNodeAt(\n this.state.lastTokStart,\n this.state.lastTokStartLoc,\n );\n\n this.next();\n\n specifier.exported = this.parseIdentifier(true);\n node.specifiers.push(\n this.finishNode(specifier, \"ExportNamespaceSpecifier\"),\n );\n return true;\n }\n return false;\n }\n\n maybeParseExportNamedSpecifiers(node: N.Node): boolean {\n if (this.match(tt.braceL)) {\n if (!node.specifiers) node.specifiers = [];\n node.specifiers.push(...this.parseExportSpecifiers());\n\n node.source = null;\n node.declaration = null;\n\n return true;\n }\n return false;\n }\n\n maybeParseExportDeclaration(node: N.Node): boolean {\n if (this.shouldParseExportDeclaration()) {\n if (this.isContextual(\"async\")) {\n const next = this.nextTokenStart();\n\n // export async;\n if (!this.isUnparsedContextual(next, \"function\")) {\n this.unexpected(next, `Unexpected token, expected \"function\"`);\n }\n }\n\n node.specifiers = [];\n node.source = null;\n node.declaration = this.parseExportDeclaration(node);\n\n return true;\n }\n return false;\n }\n\n isAsyncFunction(): boolean {\n if (!this.isContextual(\"async\")) return false;\n const next = this.nextTokenStart();\n return (\n !lineBreak.test(this.input.slice(this.state.pos, next)) &&\n this.isUnparsedContextual(next, \"function\")\n );\n }\n\n parseExportDefaultExpression(): N.Expression | N.Declaration {\n const expr = this.startNode();\n\n const isAsync = this.isAsyncFunction();\n\n if (this.match(tt._function) || isAsync) {\n this.next();\n if (isAsync) {\n this.next();\n }\n\n return this.parseFunction(\n expr,\n FUNC_STATEMENT | FUNC_NULLABLE_ID,\n isAsync,\n );\n } else if (this.match(tt._class)) {\n return this.parseClass(expr, true, true);\n } else if (this.match(tt.at)) {\n if (\n this.hasPlugin(\"decorators\") &&\n this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\")\n ) {\n this.raise(\n this.state.start,\n \"Decorators must be placed *before* the 'export' keyword.\" +\n \" You can set the 'decoratorsBeforeExport' option to false to use\" +\n \" the 'export @decorator class {}' syntax\",\n );\n }\n this.parseDecorators(false);\n return this.parseClass(expr, true, true);\n } else if (this.match(tt._const) || this.match(tt._var) || this.isLet()) {\n throw this.raise(\n this.state.start,\n \"Only expressions, functions or classes are allowed as the `default` export.\",\n );\n } else {\n const res = this.parseMaybeAssign();\n this.semicolon();\n return res;\n }\n }\n\n // eslint-disable-next-line no-unused-vars\n parseExportDeclaration(node: N.ExportNamedDeclaration): ?N.Declaration {\n return this.parseStatement(null);\n }\n\n isExportDefaultSpecifier(): boolean {\n if (this.match(tt.name)) {\n return this.state.value !== \"async\" && this.state.value !== \"let\";\n }\n\n if (!this.match(tt._default)) {\n return false;\n }\n\n const next = this.nextTokenStart();\n return (\n this.input.charCodeAt(next) === charCodes.comma ||\n this.isUnparsedContextual(next, \"from\")\n );\n }\n\n parseExportFrom(node: N.ExportNamedDeclaration, expect?: boolean): void {\n if (this.eatContextual(\"from\")) {\n node.source = this.parseImportSource();\n this.checkExport(node);\n } else {\n if (expect) {\n this.unexpected();\n } else {\n node.source = null;\n }\n }\n\n this.semicolon();\n }\n\n shouldParseExportDeclaration(): boolean {\n if (this.match(tt.at)) {\n this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n if (this.hasPlugin(\"decorators\")) {\n if (this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\")) {\n this.unexpected(\n this.state.start,\n \"Decorators must be placed *before* the 'export' keyword.\" +\n \" You can set the 'decoratorsBeforeExport' option to false to use\" +\n \" the 'export @decorator class {}' syntax\",\n );\n } else {\n return true;\n }\n }\n }\n\n return (\n this.state.type.keyword === \"var\" ||\n this.state.type.keyword === \"const\" ||\n this.state.type.keyword === \"function\" ||\n this.state.type.keyword === \"class\" ||\n this.isLet() ||\n this.isAsyncFunction()\n );\n }\n\n checkExport(\n node: N.ExportNamedDeclaration,\n checkNames?: boolean,\n isDefault?: boolean,\n isFrom?: boolean,\n ): void {\n if (checkNames) {\n // Check for duplicate exports\n if (isDefault) {\n // Default exports\n this.checkDuplicateExports(node, \"default\");\n } else if (node.specifiers && node.specifiers.length) {\n // Named exports\n for (const specifier of node.specifiers) {\n this.checkDuplicateExports(specifier, specifier.exported.name);\n // $FlowIgnore\n if (!isFrom && specifier.local) {\n // check for keywords used as local names\n this.checkReservedWord(\n specifier.local.name,\n specifier.local.start,\n true,\n false,\n );\n // check if export is defined\n // $FlowIgnore\n this.scope.checkLocalExport(specifier.local);\n }\n }\n } else if (node.declaration) {\n // Exported declarations\n if (\n node.declaration.type === \"FunctionDeclaration\" ||\n node.declaration.type === \"ClassDeclaration\"\n ) {\n const id = node.declaration.id;\n if (!id) throw new Error(\"Assertion failure\");\n\n this.checkDuplicateExports(node, id.name);\n } else if (node.declaration.type === \"VariableDeclaration\") {\n for (const declaration of node.declaration.declarations) {\n this.checkDeclaration(declaration.id);\n }\n }\n }\n }\n\n const currentContextDecorators = this.state.decoratorStack[\n this.state.decoratorStack.length - 1\n ];\n if (currentContextDecorators.length) {\n const isClass =\n node.declaration &&\n (node.declaration.type === \"ClassDeclaration\" ||\n node.declaration.type === \"ClassExpression\");\n if (!node.declaration || !isClass) {\n throw this.raise(\n node.start,\n \"You can only use decorators on an export when exporting a class\",\n );\n }\n this.takeDecorators(node.declaration);\n }\n }\n\n checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n if (node.type === \"Identifier\") {\n this.checkDuplicateExports(node, node.name);\n } else if (node.type === \"ObjectPattern\") {\n for (const prop of node.properties) {\n this.checkDeclaration(prop);\n }\n } else if (node.type === \"ArrayPattern\") {\n for (const elem of node.elements) {\n if (elem) {\n this.checkDeclaration(elem);\n }\n }\n } else if (node.type === \"ObjectProperty\") {\n this.checkDeclaration(node.value);\n } else if (node.type === \"RestElement\") {\n this.checkDeclaration(node.argument);\n } else if (node.type === \"AssignmentPattern\") {\n this.checkDeclaration(node.left);\n }\n }\n\n checkDuplicateExports(\n node:\n | N.Identifier\n | N.ExportNamedDeclaration\n | N.ExportSpecifier\n | N.ExportDefaultSpecifier,\n name: string,\n ): void {\n if (this.state.exportedIdentifiers.indexOf(name) > -1) {\n this.raise(\n node.start,\n name === \"default\"\n ? \"Only one default export allowed per module.\"\n : `\\`${name}\\` has already been exported. Exported identifiers must be unique.`,\n );\n }\n this.state.exportedIdentifiers.push(name);\n }\n\n // Parses a comma-separated list of module exports.\n\n parseExportSpecifiers(): Array<N.ExportSpecifier> {\n const nodes = [];\n let first = true;\n\n // export { x, y as z } [from '...']\n this.expect(tt.braceL);\n\n while (!this.eat(tt.braceR)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n if (this.eat(tt.braceR)) break;\n }\n\n const node = this.startNode();\n node.local = this.parseIdentifier(true);\n node.exported = this.eatContextual(\"as\")\n ? this.parseIdentifier(true)\n : node.local.__clone();\n nodes.push(this.finishNode(node, \"ExportSpecifier\"));\n }\n\n return nodes;\n }\n\n // Parses import declaration.\n\n parseImport(node: N.Node): N.AnyImport {\n // import '...'\n node.specifiers = [];\n if (!this.match(tt.string)) {\n const hasDefault = this.maybeParseDefaultImportSpecifier(node);\n const parseNext = !hasDefault || this.eat(tt.comma);\n const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);\n if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);\n this.expectContextual(\"from\");\n }\n node.source = this.parseImportSource();\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n\n parseImportSource(): N.StringLiteral {\n if (!this.match(tt.string)) this.unexpected();\n return this.parseExprAtom();\n }\n\n // eslint-disable-next-line no-unused-vars\n shouldParseDefaultImport(node: N.ImportDeclaration): boolean {\n return this.match(tt.name);\n }\n\n parseImportSpecifierLocal(\n node: N.ImportDeclaration,\n specifier: N.Node,\n type: string,\n contextDescription: string,\n ): void {\n specifier.local = this.parseIdentifier();\n this.checkLVal(\n specifier.local,\n BIND_LEXICAL,\n undefined,\n contextDescription,\n );\n node.specifiers.push(this.finishNode(specifier, type));\n }\n\n maybeParseDefaultImportSpecifier(node: N.ImportDeclaration): boolean {\n if (this.shouldParseDefaultImport(node)) {\n // import defaultObj, { x, y as z } from '...'\n this.parseImportSpecifierLocal(\n node,\n this.startNode(),\n \"ImportDefaultSpecifier\",\n \"default import specifier\",\n );\n return true;\n }\n return false;\n }\n\n maybeParseStarImportSpecifier(node: N.ImportDeclaration): boolean {\n if (this.match(tt.star)) {\n const specifier = this.startNode();\n this.next();\n this.expectContextual(\"as\");\n\n this.parseImportSpecifierLocal(\n node,\n specifier,\n \"ImportNamespaceSpecifier\",\n \"import namespace specifier\",\n );\n return true;\n }\n return false;\n }\n\n parseNamedImportSpecifiers(node: N.ImportDeclaration) {\n let first = true;\n this.expect(tt.braceL);\n while (!this.eat(tt.braceR)) {\n if (first) {\n first = false;\n } else {\n // Detect an attempt to deep destructure\n if (this.eat(tt.colon)) {\n throw this.raise(\n this.state.start,\n \"ES2015 named imports do not destructure. \" +\n \"Use another statement for destructuring after the import.\",\n );\n }\n\n this.expect(tt.comma);\n if (this.eat(tt.braceR)) break;\n }\n\n this.parseImportSpecifier(node);\n }\n }\n\n parseImportSpecifier(node: N.ImportDeclaration): void {\n const specifier = this.startNode();\n specifier.imported = this.parseIdentifier(true);\n if (this.eatContextual(\"as\")) {\n specifier.local = this.parseIdentifier();\n } else {\n this.checkReservedWord(\n specifier.imported.name,\n specifier.start,\n true,\n true,\n );\n specifier.local = specifier.imported.__clone();\n }\n this.checkLVal(\n specifier.local,\n BIND_LEXICAL,\n undefined,\n \"import specifier\",\n );\n node.specifiers.push(this.finishNode(specifier, \"ImportSpecifier\"));\n }\n}\n","// @flow\n\nimport {\n CLASS_ELEMENT_KIND_ACCESSOR,\n CLASS_ELEMENT_FLAG_STATIC,\n type ClassElementTypes,\n} from \"./scopeflags\";\n\nexport class ClassScope {\n // A list of private named declared in the current class\n privateNames: Set<string> = new Set();\n\n // A list of private getters of setters without their counterpart\n loneAccessors: Map<string, ClassElementTypes> = new Map();\n\n // A list of private names used before being defined, mapping to\n // their position.\n undefinedPrivateNames: Map<string, number> = new Map();\n}\n\ntype raiseFunction = (number, string) => void;\n\nexport default class ClassScopeHandler {\n stack: Array<ClassScope> = [];\n raise: raiseFunction;\n undefinedPrivateNames: Map<string, number> = new Map();\n\n constructor(raise: raiseFunction) {\n this.raise = raise;\n }\n\n current(): ClassScope {\n return this.stack[this.stack.length - 1];\n }\n\n enter() {\n this.stack.push(new ClassScope());\n }\n\n exit() {\n const oldClassScope = this.stack.pop();\n\n // Migrate the usage of not yet defined private names to the outer\n // class scope, or raise an error if we reached the top-level scope.\n\n const current = this.current();\n\n // Array.from is needed because this is compiled to an array-like for loop\n for (const [name, pos] of Array.from(oldClassScope.undefinedPrivateNames)) {\n if (current) {\n if (!current.undefinedPrivateNames.has(name)) {\n current.undefinedPrivateNames.set(name, pos);\n }\n } else {\n this.raiseUndeclaredPrivateName(name, pos);\n }\n }\n }\n\n declarePrivateName(\n name: string,\n elementType: ClassElementTypes,\n pos: number,\n ) {\n const classScope = this.current();\n let redefined = classScope.privateNames.has(name);\n\n if (elementType & CLASS_ELEMENT_KIND_ACCESSOR) {\n const accessor = redefined && classScope.loneAccessors.get(name);\n if (accessor) {\n const oldStatic = accessor & CLASS_ELEMENT_FLAG_STATIC;\n const newStatic = elementType & CLASS_ELEMENT_FLAG_STATIC;\n\n const oldKind = accessor & CLASS_ELEMENT_KIND_ACCESSOR;\n const newKind = elementType & CLASS_ELEMENT_KIND_ACCESSOR;\n\n // The private name can be duplicated only if it is used by\n // two accessors with different kind (get and set), and if\n // they have the same placement (static or not).\n redefined = oldKind === newKind || oldStatic !== newStatic;\n\n if (!redefined) classScope.loneAccessors.delete(name);\n } else if (!redefined) {\n classScope.loneAccessors.set(name, elementType);\n }\n }\n\n if (redefined) {\n this.raise(pos, `Duplicate private name #${name}`);\n }\n\n classScope.privateNames.add(name);\n classScope.undefinedPrivateNames.delete(name);\n }\n\n usePrivateName(name: string, pos: number) {\n let classScope;\n for (classScope of this.stack) {\n if (classScope.privateNames.has(name)) return;\n }\n\n if (classScope) {\n classScope.undefinedPrivateNames.set(name, pos);\n } else {\n // top-level\n this.raiseUndeclaredPrivateName(name, pos);\n }\n }\n\n raiseUndeclaredPrivateName(name: string, pos: number) {\n this.raise(pos, `Private name #${name} is not defined`);\n }\n}\n","// @flow\n\nimport type { Options } from \"../options\";\nimport type { File, JSXOpeningElement } from \"../types\";\nimport type { PluginList } from \"../plugin-utils\";\nimport { getOptions } from \"../options\";\nimport StatementParser from \"./statement\";\nimport { SCOPE_ASYNC, SCOPE_PROGRAM } from \"../util/scopeflags\";\nimport ScopeHandler from \"../util/scope\";\nimport ClassScopeHandler from \"../util/class-scope\";\n\nexport type PluginsMap = Map<string, { [string]: any }>;\n\nexport default class Parser extends StatementParser {\n // Forward-declaration so typescript plugin can override jsx plugin\n +jsxParseOpeningElementAfterName: (\n node: JSXOpeningElement,\n ) => JSXOpeningElement;\n\n constructor(options: ?Options, input: string) {\n options = getOptions(options);\n super(options, input);\n\n const ScopeHandler = this.getScopeHandler();\n\n this.options = options;\n this.inModule = this.options.sourceType === \"module\";\n this.scope = new ScopeHandler(this.raise.bind(this), this.inModule);\n this.classScope = new ClassScopeHandler(this.raise.bind(this));\n this.plugins = pluginsMap(this.options.plugins);\n this.filename = options.sourceFilename;\n }\n\n // This can be overwritten, for example, by the TypeScript plugin.\n getScopeHandler(): Class<ScopeHandler<*>> {\n return ScopeHandler;\n }\n\n parse(): File {\n let scopeFlags = SCOPE_PROGRAM;\n if (this.hasPlugin(\"topLevelAwait\") && this.inModule) {\n scopeFlags |= SCOPE_ASYNC;\n }\n this.scope.enter(scopeFlags);\n const file = this.startNode();\n const program = this.startNode();\n this.nextToken();\n file.errors = null;\n this.parseTopLevel(file, program);\n file.errors = this.state.errors;\n return file;\n }\n}\n\nfunction pluginsMap(plugins: PluginList): PluginsMap {\n const pluginMap: PluginsMap = new Map();\n for (const plugin of plugins) {\n const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}];\n if (!pluginMap.has(name)) pluginMap.set(name, options || {});\n }\n return pluginMap;\n}\n","// @flow\n\nimport { type Options } from \"./options\";\nimport {\n hasPlugin,\n validatePlugins,\n mixinPluginNames,\n mixinPlugins,\n type PluginList,\n} from \"./plugin-utils\";\nimport Parser from \"./parser\";\n\nimport { types as tokTypes } from \"./tokenizer/types\";\nimport \"./tokenizer/context\";\n\nimport type { Expression, File } from \"./types\";\n\nexport function parse(input: string, options?: Options): File {\n if (options && options.sourceType === \"unambiguous\") {\n options = {\n ...options,\n };\n try {\n options.sourceType = \"module\";\n const parser = getParser(options, input);\n const ast = parser.parse();\n\n if (parser.sawUnambiguousESM) {\n return ast;\n }\n\n if (parser.ambiguousScriptDifferentAst) {\n // Top level await introduces code which can be both a valid script and\n // a valid module, but which produces different ASTs:\n // await\n // 0\n // can be parsed either as an AwaitExpression, or as two ExpressionStatements.\n try {\n options.sourceType = \"script\";\n return getParser(options, input).parse();\n } catch {}\n } else {\n // This is both a valid module and a valid script, but\n // we parse it as a script by default\n ast.program.sourceType = \"script\";\n }\n\n return ast;\n } catch (moduleError) {\n try {\n options.sourceType = \"script\";\n return getParser(options, input).parse();\n } catch {}\n\n throw moduleError;\n }\n } else {\n return getParser(options, input).parse();\n }\n}\n\nexport function parseExpression(input: string, options?: Options): Expression {\n const parser = getParser(options, input);\n if (parser.options.strictMode) {\n parser.state.strict = true;\n }\n return parser.getExpression();\n}\n\nexport { tokTypes };\n\nfunction getParser(options: ?Options, input: string): Parser {\n let cls = Parser;\n if (options && options.plugins) {\n validatePlugins(options.plugins);\n cls = getParserClass(options.plugins);\n }\n\n return new cls(options, input);\n}\n\nconst parserClassCache: { [key: string]: Class<Parser> } = {};\n\n/** Get a Parser class with plugins applied. */\nfunction getParserClass(pluginsFromOptions: PluginList): Class<Parser> {\n const pluginList = mixinPluginNames.filter(name =>\n hasPlugin(pluginsFromOptions, name),\n );\n\n const key = pluginList.join(\"/\");\n let cls = parserClassCache[key];\n if (!cls) {\n cls = Parser;\n for (const plugin of pluginList) {\n cls = mixinPlugins[plugin](cls);\n }\n parserClassCache[key] = cls;\n }\n return cls;\n}\n"],"names":["beforeExpr","startsExpr","isLoop","isAssign","prefix","postfix","TokenType","constructor","label","conf","keyword","rightAssociative","binop","updateContext","keywords","Map","createKeyword","name","options","token","set","createBinop","types","num","bigint","regexp","string","eof","bracketL","bracketR","braceL","braceBarL","braceR","braceBarR","parenL","parenR","comma","semi","colon","doubleColon","dot","question","questionDot","arrow","template","ellipsis","backQuote","dollarBraceL","at","hash","interpreterDirective","eq","assign","incDec","bang","tilde","pipeline","nullishCoalescing","logicalOR","logicalAND","bitwiseOR","bitwiseXOR","bitwiseAND","equality","relational","bitShift","plusMin","modulo","star","slash","exponent","_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","SCOPE_OTHER","SCOPE_PROGRAM","SCOPE_FUNCTION","SCOPE_ASYNC","SCOPE_GENERATOR","SCOPE_ARROW","SCOPE_SIMPLE_CATCH","SCOPE_SUPER","SCOPE_DIRECT_SUPER","SCOPE_CLASS","SCOPE_TS_MODULE","SCOPE_VAR","functionFlags","isAsync","isGenerator","BIND_KIND_VALUE","BIND_KIND_TYPE","BIND_SCOPE_VAR","BIND_SCOPE_LEXICAL","BIND_SCOPE_FUNCTION","BIND_SCOPE_OUTSIDE","BIND_FLAGS_NONE","BIND_FLAGS_CLASS","BIND_FLAGS_TS_ENUM","BIND_FLAGS_TS_CONST_ENUM","BIND_FLAGS_TS_EXPORT_ONLY","BIND_CLASS","BIND_LEXICAL","BIND_VAR","BIND_FUNCTION","BIND_TS_INTERFACE","BIND_TS_TYPE","BIND_TS_ENUM","BIND_TS_AMBIENT","BIND_NONE","BIND_OUTSIDE","BIND_TS_CONST_ENUM","BIND_TS_NAMESPACE","CLASS_ELEMENT_FLAG_STATIC","CLASS_ELEMENT_KIND_GETTER","CLASS_ELEMENT_KIND_SETTER","CLASS_ELEMENT_KIND_ACCESSOR","CLASS_ELEMENT_STATIC_GETTER","CLASS_ELEMENT_STATIC_SETTER","CLASS_ELEMENT_INSTANCE_GETTER","CLASS_ELEMENT_INSTANCE_SETTER","CLASS_ELEMENT_OTHER","isSimpleProperty","node","type","kind","method","superClass","estreeParseRegExpLiteral","pattern","flags","regex","RegExp","e","estreeParseLiteral","estreeParseBigIntLiteral","value","bigInt","BigInt","String","parseLiteral","directiveToStmt","directive","directiveLiteral","stmt","startNodeAt","start","loc","expression","raw","extra","finishNodeAt","end","slice","initFunction","checkDeclaration","checkGetterSetterParams","prop","paramCount","params","length","raise","checkLVal","expr","bindingType","checkClashes","contextDescription","disallowLetBinding","properties","forEach","checkDuplicatedProto","protoRef","refExpressionErrors","computed","shorthand","key","used","doubleProto","isValidDirective","parenthesized","stmtToDirective","parseBlockBody","allowDirectives","topLevel","directiveStatements","directives","map","d","body","concat","pushClassMethod","classBody","isConstructor","allowsDirectSuper","parseMethod","typeParameters","push","parseExprAtom","state","tt","startPos","startLoc","parseFunctionBody","allowExpression","isMethod","allowDirectSuper","inClassScope","funcNode","startNode","finishNode","parseObjectMethod","isPattern","containsEsc","parseObjectProperty","toAssignable","toAssignableObjectExpressionProp","isLast","finishCallExpression","optional","callee","source","arguments","toReferencedListDeep","exprList","isParenthesizedExpr","lineBreak","lineBreakG","isNewLine","code","skipWhiteSpace","isWhitespace","TokContext","isExpr","preserveSpace","override","braceStatement","braceExpression","templateQuasi","parenStatement","parenExpression","p","readTmplToken","functionExpression","functionStatement","context","exprAllowed","out","pop","curContext","prevType","allowed","scope","inGenerator","isIterator","braceIsBlock","statementParens","test","input","lastTokEnd","b_stat","reservedWords","strict","strictBind","reservedWordsStrictSet","Set","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword","keywordRelationalOperator","nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","pos","i","isIdentifierStart","fromCharCode","isIteratorStart","current","next","isIdentifierChar","reservedTypes","isEsModuleType","bodyElement","declaration","hasTypeImportKind","importKind","isMaybeDefaultImport","exportSuggestions","const","let","interface","partition","list","list1","list2","FLOW_PRAGMA_REGEX","flowPragma","undefined","shouldParseTypes","getPluginOption","shouldParseEnums","finishToken","val","addComment","comment","matches","exec","Error","flowParseTypeInitialiser","tok","oldInType","inType","expect","flowParseType","flowParsePredicate","moduloLoc","moduloPos","checksLoc","expectContextual","line","column","eat","parseExpression","flowParseTypeAndPredicateInitialiser","predicate","match","flowParseDeclareClass","flowParseInterfaceish","flowParseDeclareFunction","id","parseIdentifier","typeNode","typeContainer","isRelational","flowParseTypeParameterDeclaration","tmp","flowParseFunctionTypeParams","rest","returnType","typeAnnotation","resetEndLocation","semicolon","flowParseDeclare","insideModule","flowParseDeclareVariable","eatContextual","flowParseDeclareModuleExports","lastTokStart","flowParseDeclareModule","isContextual","flowParseDeclareTypeAlias","flowParseDeclareOpaqueType","flowParseDeclareInterface","flowParseDeclareExportDeclaration","unexpected","flowParseTypeAnnotatableIdentifier","declareName","enter","bodyNode","parseImport","exit","hasModuleExport","errorMessage","default","isLet","suggestion","parseExport","exportKind","flowParseTypeAnnotation","flowParseTypeAlias","flowParseOpaqueType","isClass","flowParseRestrictedIdentifier","extends","implements","mixins","flowParseInterfaceExtends","flowParseObjectType","allowStatic","allowExact","allowSpread","allowProto","allowInexact","flowParseQualifiedTypeIdentifier","flowParseTypeParameterInstantiation","flowParseInterface","checkNotUnderscore","checkReservedType","liberal","right","declare","supertype","impltype","flowParseTypeParameter","requireDefault","nodeStart","variance","flowParseVariance","ident","bound","jsxTagStart","defaultRequired","typeParameter","expectRelational","oldNoAnonFunctionType","noAnonFunctionType","flowParseTypeParameterInstantiationCallOrNew","flowParseTypeOrImplicitInstantiation","flowParseInterfaceType","flowParseObjectPropertyKey","flowParseObjectTypeIndexer","isStatic","static","lookahead","flowParseObjectTypeInternalSlot","flowParseObjectTypeMethodish","flowParseFunctionTypeParam","flowParseObjectTypeCallProperty","valueNode","callProperties","indexers","internalSlots","endDelim","exact","inexact","protoStart","inexactStart","propOrInexact","flowParseObjectTypeProperty","flowObjectTypeSemicolon","isInexactToken","argument","proto","flowCheckGetterSetterParams","property","node2","qualification","flowParseGenericType","flowParseTypeofType","flowParsePrimaryType","flowParseTupleType","lh","reinterpretTypeAsFunctionTypeParam","flowIdentToTypeAnnotation","isGroupedType","createIdentifier","flowParsePostfixType","canInsertSemicolon","elementType","flowParsePrefixType","flowParseAnonFunctionWithoutParens","param","flowParseIntersectionType","flowParseUnionType","allowPrimitiveOverride","typeCastToParameter","allowExpressionBody","forwardNoArrowParamsConversionAt","parseFunctionBodyAndFinish","parseStatement","flowParseEnumDeclaration","parseExpressionStatement","shouldParseExportDeclaration","isExportDefaultSpecifier","parseExportDefaultExpression","parseConditional","noIn","refNeedsArrowPos","result","tryParse","error","failState","clone","originalNoArrowAt","noArrowAt","consequent","failed","tryParseConditionalConsequent","valid","invalid","getArrowLikeExpressions","alternate","parseMaybeAssign","noArrowParamsConversionAt","disallowInvalid","stack","arrows","finishArrowValidation","every","isAssignable","toAssignableList","trailingComma","checkParams","parse","indexOf","parseParenItem","typeCastNode","assertModuleNodeAllowed","decl","parseExportDeclaration","declarationNode","specifiers","parseExportSpecifiers","parseExportFrom","eatExportStar","maybeParseExportNamespaceSpecifier","hasNamespace","parseClassId","isStatement","optionalId","getTokenFromCode","charCodeAt","finishOp","readWord","isBinding","last","elements","element","operator","trailingCommaPos","toReferencedList","parseClassProperty","parseClassPrivateProperty","isClassMethod","isClassProperty","isNonstaticConstructor","pushClassPrivateMethod","parseClassSuper","superTypeParameters","implemented","parsePropertyName","isPrivateNameAllowed","parseObjPropValue","parseAssignableListItemTypes","parseMaybeDefault","left","shouldParseDefaultImport","parseImportSpecifierLocal","specifier","local","maybeParseDefaultImportSpecifier","parseImportSpecifier","firstIdentLoc","firstIdent","specifierTypeKind","isLookaheadContextual","as_ident","imported","__clone","nodeIsTypeImport","specifierIsTypeImport","checkReservedWord","parseFunctionParams","allowModifiers","parseVarId","parseAsyncArrowFromCallExpression","call","shouldParseAsyncArrow","afterLeftParse","jsx","hasPlugin","tc","j_oTag","j_expr","arrowExpression","resetStartLocationFromNode","thrown","parseArrow","shouldParseArrow","setArrowFunctionParameters","allowDuplicates","isArrowFunction","parseParenAndDistinguishExpression","canBeArrow","parseSubscripts","base","noCalls","parseCallExpressionArguments","abort","parseAsyncArrowWithTypeParameters","aborted","parseSubscript","subscriptState","isLookaheadRelational","optionalChainMember","stop","typeArguments","parseNewArguments","targs","parseArrowExpression","readToken_mult_modulo","hasFlowComment","nextToken","readToken_pipe_amp","parseTopLevel","file","program","fileNode","skipBlockComment","skipFlowComment","hasFlowCommentCompletion","shiftToFirstNonWhiteSpace","includes","ch2","ch3","flowEnumErrorBooleanMemberNotInitialized","enumName","memberName","flowEnumErrorInvalidMemberName","toUpperCase","flowEnumErrorDuplicateMemberName","flowEnumErrorInconsistentMemberValues","flowEnumErrorInvalidExplicitType","suppliedType","message","flowEnumErrorInvalidMemberInitializer","explicitType","flowEnumErrorNumberMemberNotInitialized","flowEnumErrorStringMemberInconsistentlyInitailized","flowEnumMemberInit","endOfInit","literal","parseBooleanLiteral","flowEnumMemberRaw","init","flowEnumCheckExplicitTypeMismatch","expectedType","flowEnumMembers","seenNames","members","booleanMembers","numberMembers","stringMembers","defaultedMembers","memberNode","add","flowEnumStringMembers","initializedMembers","member","flowEnumParseExplicitType","flowEnumBody","nameLoc","empty","boolsLen","numsLen","strsLen","defaultedLen","entities","quot","amp","apos","lt","gt","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","copy","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","times","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","bull","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","frasl","euro","image","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","part","exist","nabla","isin","notin","ni","prod","sum","minus","lowast","radic","infin","ang","and","or","cap","cup","int","there4","sim","cong","asymp","ne","equiv","le","ge","sub","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","lang","rang","loz","spades","clubs","hearts","diams","HEX_NUMBER","DECIMAL_NUMBER","j_cTag","jsxName","jsxText","jsxTagEnd","isFragment","object","getQualifiedJSXName","namespace","jsxReadToken","chunkStart","ch","jsxReadEntity","jsxReadNewLine","normalizeCRLF","curLine","lineStart","jsxReadString","quote","str","count","entity","substr","fromCodePoint","parseInt","XHTMLEntities","jsxReadWord","jsxParseIdentifier","jsxParseNamespacedName","jsxParseElementName","newNode","jsxParseAttributeValue","jsxParseExpressionContainer","jsxParseEmptyExpression","lastTokEndLoc","jsxParseSpreadChild","jsxParseAttribute","jsxParseOpeningElementAt","jsxParseOpeningElementAfterName","attributes","selfClosing","jsxParseClosingElementAt","jsxParseElementAt","children","openingElement","closingElement","contents","openingFragment","closingFragment","jsxParseElement","inPropertyName","Scope","var","lexical","functions","ScopeHandler","scopeStack","undefinedExports","undefinedPrivateNames","inFunction","currentVarScope","inAsync","isVarScope","isClassScope","allowSuper","currentThisScope","inClass","inNonArrowFunction","treatFunctionsAsVar","treatFunctionsAsVarInScope","currentScope","createScope","checkRedeclarationInScope","maybeExportDefined","delete","isRedeclaredInScope","checkLocalExport","TypeScriptScope","enums","constEnums","classes","exportOnlyBindings","TypeScriptScopeHandler","isConst","wasConst","nonNull","x","assert","keywordTypeFromName","getScopeHandler","tsIsIdentifier","tsNextTokenCanFollowModifier","hasPrecedingLineBreak","tsParseModifier","allowedModifiers","modifier","tsTryParse","bind","tsParseModifiers","modifiers","Object","create","hasOwnProperty","tsIsListTerminator","tsParseList","parseElement","tsParseDelimitedList","tsParseDelimitedListWorker","expectSuccess","tsParseBracketedList","bracket","skipFirstToken","tsParseImportType","qualifier","tsParseEntityName","tsParseTypeArguments","allowReservedWords","startNodeAtNode","tsParseTypeReference","typeName","tsParseThisTypePredicate","lhs","parameterName","tsParseTypeAnnotation","tsParseThisTypeNode","tsParseTypeQuery","exprName","tsParseTypeParameter","parseIdentifierName","constraint","tsEatThenParseType","tsTryParseTypeParameters","tsParseTypeParameters","tsTryNextParseConstantContext","tsFillSignature","returnToken","signature","returnTokenRequired","parameters","tsParseBindingListForSignature","tsParseTypeOrTypePredicateAnnotation","parseBindingList","tsParseTypeMemberSemicolon","tsParseSignatureMember","tsIsUnambiguouslyIndexSignature","tsTryParseIndexSignature","tsLookAhead","tsTryParseTypeAnnotation","tsParsePropertyOrMethodSignature","readonly","nodeAny","tsParseTypeMember","idx","tsParseTypeLiteral","tsParseObjectTypeMembers","tsIsStartOfMappedType","tsParseMappedTypeParameter","tsExpectThenParseType","tsParseMappedType","tsTryParseType","tsParseTupleType","elementTypes","tsParseTupleElementType","seenOptionalElement","elementNode","restNode","tsParseType","lookaheadCharCode","raiseRestNotLast","optionalTypeNode","tsParseParenthesizedType","tsParseFunctionOrConstructorType","tsParseLiteralTypeNode","tsParseTemplateLiteralType","templateNode","parseTemplate","expressions","tsParseThisTypeOrThisTypePredicate","thisKeyword","tsParseNonArrayType","parseMaybeUnary","tsParseArrayTypeOrHigher","objectType","indexType","tsParseTypeOperator","tsParseTypeOperatorOrHigher","tsCheckTypeAnnotationForReadOnly","tsParseInferType","find","kw","tsParseUnionOrIntersectionType","parseConstituentType","tsParseIntersectionTypeOrHigher","tsParseUnionTypeOrHigher","tsIsStartOfFunctionType","tsIsUnambiguouslyStartOfFunctionType","tsSkipParameterStart","braceStackCounter","tsInType","t","asserts","tsParseTypePredicateAsserts","thisTypePredicate","typePredicateVariable","tsParseTypePredicatePrefix","tsTryParseTypeOrTypePredicateAnnotation","eatColon","tsParseNonConditionalType","checkType","extendsType","trueType","falseType","tsParseTypeAssertion","tsNextThenParseType","tsParseHeritageClause","descriptor","originalStart","delimitedList","tsParseExpressionWithTypeArguments","tsParseInterfaceDeclaration","tsParseTypeAliasDeclaration","tsInNoContext","cb","oldContext","tsDoThenParseType","tsParseEnumMember","initializer","tsParseEnumDeclaration","tsParseModuleBlock","parseBlockOrModuleBlockBody","tsParseModuleOrNamespaceDeclaration","nested","inner","tsParseAmbientExternalModuleDeclaration","global","tsParseImportEqualsDeclaration","isExport","moduleReference","tsParseModuleReference","tsIsExternalModuleReference","tsParseExternalModuleReference","f","res","tsTryParseAndCatch","tsTryParseDeclare","nany","isLineTerminator","starttype","parseFunctionStatement","parseClass","parseVarStatement","tsParseDeclaration","tsTryParseExportDeclaration","tsParseExpressionStatement","mod","tsCheckLineTerminatorAndMatch","cls","abstract","tokenType","tsTryParseGenericAsyncArrowFunction","tsIsDeclarationStart","parseAssignableListItem","decorators","accessibility","parseAccessModifier","elt","pp","parameter","bodilessType","registerFunctionStatementId","nonNullExpression","atPossibleAsync","asyncArrowFn","parseTaggedTemplateExpression","args","parseExprOp","leftStartPos","leftStartLoc","minPrec","checkKeywords","checkDuplicateExports","isAbstractClass","parseStatementContent","ahead","parseClassMember","constructorAllowsSuper","parseClassMemberWithIsStatic","parsePostMemberNameModifiers","methodOrProp","isDeclare","resetStartLocation","parseClassPropertyAnnotation","definite","equal","typeCast","ct","parseBindingAtom","parseMaybeDecoratorArguments","maybeInArrowParameters","isInParens","canHaveLeadingDecorator","getGetterSetterExpectedParamCount","baseCount","firstParam","hasContextParam","placeholder","parsePlaceholder","expectedNode","assertNoSpace","finishPlaceholder","isFinished","verifyBreakContinue","parseBlock","parseFunctionId","takeDecorators","parseClassBody","expectPlugin","exported","maybeParseExportDefaultSpecifier","checkExport","filter","hasStarImport","maybeParseStarImportSpecifier","parseNamedImportSpecifiers","parseImportSource","parseV8Intrinsic","v8IntrinsicStart","identifier","plugins","some","plugin","Array","isArray","option","PIPELINE_PROPOSALS","validatePlugins","decoratorsBeforeExport","join","mixinPlugins","estree","flow","typescript","v8intrinsic","placeholders","mixinPluginNames","keys","defaultOptions","sourceType","sourceFilename","startLine","allowAwaitOutsideFunction","allowReturnOutsideFunction","allowImportExportEverywhere","allowSuperOutsideMethod","allowUndeclaredExports","strictMode","ranges","tokens","createParenthesizedExpressions","errorRecovery","getOptions","opts","Position","col","SourceLocation","getLineInfo","offset","lastIndex","index","BaseParser","sawUnambiguousESM","ambiguousScriptDifferentAst","get","CommentsParser","filename","trailingComments","leadingComments","adjustCommentsAfterTrailingComma","takeAllComments","lastElement","j","commentPreviousNode","splice","newTrailingComments","leadingComment","processComment","commentStack","firstChild","lastChild","lastInStack","innerComments","LocationParser","getLocationForPosition","lastTokStartLoc","endLoc","missingPluginNames","err","SyntaxError","missingPlugin","isLookahead","errors","State","potentialArrowAt","inParameters","inPipeline","topicContext","maxNumOfResolvableTopics","maxTopicIndex","soloAwait","inFSharpPipelineDirectBody","labels","decoratorStack","yieldPos","awaitPos","comments","containsOctal","octalPosition","exportedIdentifiers","tokensLength","curPosition","skipArrays","isDigit","VALID_REGEX_FLAGS","forbiddenNumericSeparatorSiblings","decBinOct","hex","allowedNumericSeparatorSiblings","bin","oct","dec","Token","Tokenizer","pushToken","checkKeywordEscapes","old","curr","nextTokenStart","thisTokEnd","skip","setStrict","lastIndexOf","skipSpace","codePointAt","pushComment","block","text","skipLineComment","startSkip","loop","readToken_numberSign","readToken_interpreter","nextPos","readToken_dot","readNumber","readToken_slash","readRegexp","width","readToken_caret","readToken_plus_min","readToken_lt_gt","size","readToken_eq_excl","readToken_question","next2","readRadixNumber","readString","escaped","charAt","content","mods","char","charCode","readInt","radix","len","forceLen","allowNumSeparator","forbiddenSiblings","allowedSiblings","total","Infinity","prev","Number","isNaN","isBigInt","replace","startsWithDot","isFloat","isNonOctalDecimalInt","octal","underscorePos","parseFloat","readCodePoint","throwOnInvalid","codePos","readHexChar","readEscapedChar","containsInvalid","inTemplate","octalStr","n","readWord1","escStart","identifierCheck","esc","keywordTypes","parent","update","UtilParser","addExtra","op","afterNext","isUnparsedContextual","nameStart","nameEnd","messageOrType","expectOnePlugin","names","checkYieldAwaitInDefaultParams","strictDirective","fn","oldState","abortSignal","checkExpressionErrors","andThrow","shorthandAssign","ExpressionErrors","Node","parser","range","NodeUtils","locationNode","unwrapParenthesizedExpression","LValParser","checkToRestConversion","arg","raiseTrailingCommaAfterRest","parseSpread","parseRestBinding","parseObj","close","closeCharCode","allowEmpty","elts","first","checkCommaAfterRest","parseDecorator","strictModeChanged","elem","ExpressionParser","getExpression","scopeFlags","parseYield","ownExpressionErrors","parseMaybeConditional","parseExprOps","prec","logical","coalesce","checkPipelineAtInfixOperator","parseExprOpRightExpr","nextOp","withTopicPermittingContext","parseSmartPipelineBody","parseExprOpBaseRightExpr","withSoloAwaitPermittingContext","parseFSharpPipelineBody","isAwaitAllowed","parseAwait","parseExprSubscripts","maybeAsyncArrow","parseNoCallExpr","parseMaybePrivateName","classScope","usePrivateName","oldMaybeInArrowParameters","oldYieldPos","oldAwaitPos","tag","quasi","importArg","possibleAsyncArrow","dynamicImport","allowPlaceholder","nodeForExtra","innerParenStart","oldInFSharpPipelineDirectBody","parseExprListItem","parseImportMetaProperty","parseFunction","oldLabels","parseExprList","ret","parseFunctionExpression","parseDecorators","parseNew","primaryTopicReferenceIsAllowedInCurrentTopicContext","registerTopicReference","isPrivate","meta","parseMetaProperty","propertyName","innerStartPos","innerStartLoc","spreadStart","optionalCommaStart","spreadNodeStartPos","spreadNodeStartLoc","innerEndPos","innerEndLoc","arrowNode","parenStart","metaProp","parseTemplateElement","isTagged","cooked","tail","curElt","quasis","propHash","parseObjectMember","isAsyncProp","isGetterOrSetterMethod","oldInPropertyName","generator","async","isExpression","oldStrict","useStrict","oldInParameters","nonSimple","isSimpleParamList","errorPos","nameHash","identifierName","reservedTest","delegate","childExpression","pipelineStyle","checkSmartPipelineBodyStyle","checkSmartPipelineBodyEarlyErrors","parseSmartPipelineBodyInStyle","topicReferenceWasUsedInCurrentTopicContext","isSimpleReference","callback","outerContextTopicState","withTopicForbiddingContext","outerContextSoloAwaitState","loopLabel","switchLabel","FUNC_NO_FLAGS","FUNC_STATEMENT","FUNC_HANGING_STATEMENT","FUNC_NULLABLE_ID","StatementParser","interpreter","parseInterpreterDirective","from","nextCh","parseBreakContinueStatement","parseDebuggerStatement","parseDoStatement","parseForStatement","parseIfStatement","parseReturnStatement","parseSwitchStatement","parseThrowStatement","parseTryStatement","parseWhileStatement","parseWithStatement","parseEmptyStatement","nextTokenCharCode","isAsyncFunction","maybeName","parseLabeledStatement","allowExport","currentContextDecorators","decorator","isBreak","lab","parseHeaderExpression","awaitAt","parseFor","parseVar","declarations","parseForIn","description","declarationPosition","discriminant","cases","cur","sawDefault","isCase","handler","clause","simple","finalizer","statementStart","createNewLexicalScope","parsedNonDirective","isForIn","await","isFor","isTypescript","statement","isHangingStatement","requireId","hadConstructor","publicMethod","privateMethod","publicProp","privateProp","publicMember","parseClassPropertyName","isSimple","maybeQuestionTokenStart","pushClassPrivateProperty","pushClassProperty","declarePrivateName","hasDefault","parseAfterDefault","hasStar","parseAfterNamespace","isFromRequired","hasSpecifiers","maybeParseExportNamedSpecifiers","hasDeclaration","maybeParseExportDeclaration","checkNames","isDefault","isFrom","nodes","parseNext","ClassScope","privateNames","loneAccessors","ClassScopeHandler","oldClassScope","raiseUndeclaredPrivateName","redefined","accessor","oldStatic","newStatic","oldKind","newKind","Parser","pluginsMap","pluginMap","getParser","ast","moduleError","getParserClass","parserClassCache","pluginsFromOptions","pluginList"],"mappings":";;;;AAyBA,MAAMA,UAAU,GAAG,IAAnB;AACA,MAAMC,UAAU,GAAG,IAAnB;AACA,MAAMC,MAAM,GAAG,IAAf;AACA,MAAMC,QAAQ,GAAG,IAAjB;AACA,MAAMC,MAAM,GAAG,IAAf;AACA,MAAMC,OAAO,GAAG,IAAhB;AAcA,AAAO,MAAMC,SAAN,CAAgB;EAarBC,WAAW,CAACC,KAAD,EAAgBC,IAAkB,GAAG,EAArC,EAAyC;SAC7CD,KAAL,GAAaA,KAAb;SACKE,OAAL,GAAeD,IAAI,CAACC,OAApB;SACKV,UAAL,GAAkB,CAAC,CAACS,IAAI,CAACT,UAAzB;SACKC,UAAL,GAAkB,CAAC,CAACQ,IAAI,CAACR,UAAzB;SACKU,gBAAL,GAAwB,CAAC,CAACF,IAAI,CAACE,gBAA/B;SACKT,MAAL,GAAc,CAAC,CAACO,IAAI,CAACP,MAArB;SACKC,QAAL,GAAgB,CAAC,CAACM,IAAI,CAACN,QAAvB;SACKC,MAAL,GAAc,CAAC,CAACK,IAAI,CAACL,MAArB;SACKC,OAAL,GAAe,CAAC,CAACI,IAAI,CAACJ,OAAtB;SACKO,KAAL,GAAaH,IAAI,CAACG,KAAL,IAAc,IAAd,GAAqBH,IAAI,CAACG,KAA1B,GAAkC,IAA/C;SACKC,aAAL,GAAqB,IAArB;;;;AAIJ,AAAO,MAAMC,QAAQ,GAAG,IAAIC,GAAJ,EAAjB;;AAEP,SAASC,aAAT,CAAuBC,IAAvB,EAAqCC,OAAqB,GAAG,EAA7D,EAA4E;EAC1EA,OAAO,CAACR,OAAR,GAAkBO,IAAlB;QACME,KAAK,GAAG,IAAIb,SAAJ,CAAcW,IAAd,EAAoBC,OAApB,CAAd;EACAJ,QAAQ,CAACM,GAAT,CAAaH,IAAb,EAAmBE,KAAnB;SACOA,KAAP;;;AAGF,SAASE,WAAT,CAAqBJ,IAArB,EAAmCL,KAAnC,EAAkD;SACzC,IAAIN,SAAJ,CAAcW,IAAd,EAAoB;IAAEjB,UAAF;IAAcY;GAAlC,CAAP;;;AAGF,MAAaU,KAAoC,GAAG;EAClDC,GAAG,EAAE,IAAIjB,SAAJ,CAAc,KAAd,EAAqB;IAAEL;GAAvB,CAD6C;EAElDuB,MAAM,EAAE,IAAIlB,SAAJ,CAAc,QAAd,EAAwB;IAAEL;GAA1B,CAF0C;EAGlDwB,MAAM,EAAE,IAAInB,SAAJ,CAAc,QAAd,EAAwB;IAAEL;GAA1B,CAH0C;EAIlDyB,MAAM,EAAE,IAAIpB,SAAJ,CAAc,QAAd,EAAwB;IAAEL;GAA1B,CAJ0C;EAKlDgB,IAAI,EAAE,IAAIX,SAAJ,CAAc,MAAd,EAAsB;IAAEL;GAAxB,CAL4C;EAMlD0B,GAAG,EAAE,IAAIrB,SAAJ,CAAc,KAAd,CAN6C;EASlDsB,QAAQ,EAAE,IAAItB,SAAJ,CAAc,GAAd,EAAmB;IAAEN,UAAF;IAAcC;GAAjC,CATwC;EAUlD4B,QAAQ,EAAE,IAAIvB,SAAJ,CAAc,GAAd,CAVwC;EAWlDwB,MAAM,EAAE,IAAIxB,SAAJ,CAAc,GAAd,EAAmB;IAAEN,UAAF;IAAcC;GAAjC,CAX0C;EAYlD8B,SAAS,EAAE,IAAIzB,SAAJ,CAAc,IAAd,EAAoB;IAAEN,UAAF;IAAcC;GAAlC,CAZuC;EAalD+B,MAAM,EAAE,IAAI1B,SAAJ,CAAc,GAAd,CAb0C;EAclD2B,SAAS,EAAE,IAAI3B,SAAJ,CAAc,IAAd,CAduC;EAelD4B,MAAM,EAAE,IAAI5B,SAAJ,CAAc,GAAd,EAAmB;IAAEN,UAAF;IAAcC;GAAjC,CAf0C;EAgBlDkC,MAAM,EAAE,IAAI7B,SAAJ,CAAc,GAAd,CAhB0C;EAiBlD8B,KAAK,EAAE,IAAI9B,SAAJ,CAAc,GAAd,EAAmB;IAAEN;GAArB,CAjB2C;EAkBlDqC,IAAI,EAAE,IAAI/B,SAAJ,CAAc,GAAd,EAAmB;IAAEN;GAArB,CAlB4C;EAmBlDsC,KAAK,EAAE,IAAIhC,SAAJ,CAAc,GAAd,EAAmB;IAAEN;GAArB,CAnB2C;EAoBlDuC,WAAW,EAAE,IAAIjC,SAAJ,CAAc,IAAd,EAAoB;IAAEN;GAAtB,CApBqC;EAqBlDwC,GAAG,EAAE,IAAIlC,SAAJ,CAAc,GAAd,CArB6C;EAsBlDmC,QAAQ,EAAE,IAAInC,SAAJ,CAAc,GAAd,EAAmB;IAAEN;GAArB,CAtBwC;EAuBlD0C,WAAW,EAAE,IAAIpC,SAAJ,CAAc,IAAd,CAvBqC;EAwBlDqC,KAAK,EAAE,IAAIrC,SAAJ,CAAc,IAAd,EAAoB;IAAEN;GAAtB,CAxB2C;EAyBlD4C,QAAQ,EAAE,IAAItC,SAAJ,CAAc,UAAd,CAzBwC;EA0BlDuC,QAAQ,EAAE,IAAIvC,SAAJ,CAAc,KAAd,EAAqB;IAAEN;GAAvB,CA1BwC;EA2BlD8C,SAAS,EAAE,IAAIxC,SAAJ,CAAc,GAAd,EAAmB;IAAEL;GAArB,CA3BuC;EA4BlD8C,YAAY,EAAE,IAAIzC,SAAJ,CAAc,IAAd,EAAoB;IAAEN,UAAF;IAAcC;GAAlC,CA5BoC;EA6BlD+C,EAAE,EAAE,IAAI1C,SAAJ,CAAc,GAAd,CA7B8C;EA8BlD2C,IAAI,EAAE,IAAI3C,SAAJ,CAAc,GAAd,EAAmB;IAAEL;GAArB,CA9B4C;EAiClDiD,oBAAoB,EAAE,IAAI5C,SAAJ,CAAc,OAAd,CAjC4B;EAiDlD6C,EAAE,EAAE,IAAI7C,SAAJ,CAAc,GAAd,EAAmB;IAAEN,UAAF;IAAcG;GAAjC,CAjD8C;EAkDlDiD,MAAM,EAAE,IAAI9C,SAAJ,CAAc,IAAd,EAAoB;IAAEN,UAAF;IAAcG;GAAlC,CAlD0C;EAmDlDkD,MAAM,EAAE,IAAI/C,SAAJ,CAAc,OAAd,EAAuB;IAAEF,MAAF;IAAUC,OAAV;IAAmBJ;GAA1C,CAnD0C;EAoDlDqD,IAAI,EAAE,IAAIhD,SAAJ,CAAc,GAAd,EAAmB;IAAEN,UAAF;IAAcI,MAAd;IAAsBH;GAAzC,CApD4C;EAqDlDsD,KAAK,EAAE,IAAIjD,SAAJ,CAAc,GAAd,EAAmB;IAAEN,UAAF;IAAcI,MAAd;IAAsBH;GAAzC,CArD2C;EAsDlDuD,QAAQ,EAAEnC,WAAW,CAAC,IAAD,EAAO,CAAP,CAtD6B;EAuDlDoC,iBAAiB,EAAEpC,WAAW,CAAC,IAAD,EAAO,CAAP,CAvDoB;EAwDlDqC,SAAS,EAAErC,WAAW,CAAC,IAAD,EAAO,CAAP,CAxD4B;EAyDlDsC,UAAU,EAAEtC,WAAW,CAAC,IAAD,EAAO,CAAP,CAzD2B;EA0DlDuC,SAAS,EAAEvC,WAAW,CAAC,GAAD,EAAM,CAAN,CA1D4B;EA2DlDwC,UAAU,EAAExC,WAAW,CAAC,GAAD,EAAM,CAAN,CA3D2B;EA4DlDyC,UAAU,EAAEzC,WAAW,CAAC,GAAD,EAAM,CAAN,CA5D2B;EA6DlD0C,QAAQ,EAAE1C,WAAW,CAAC,eAAD,EAAkB,CAAlB,CA7D6B;EA8DlD2C,UAAU,EAAE3C,WAAW,CAAC,WAAD,EAAc,CAAd,CA9D2B;EA+DlD4C,QAAQ,EAAE5C,WAAW,CAAC,WAAD,EAAc,CAAd,CA/D6B;EAgElD6C,OAAO,EAAE,IAAI5D,SAAJ,CAAc,KAAd,EAAqB;IAAEN,UAAF;IAAcY,KAAK,EAAE,CAArB;IAAwBR,MAAxB;IAAgCH;GAArD,CAhEyC;EAkElDkE,MAAM,EAAE,IAAI7D,SAAJ,CAAc,GAAd,EAAmB;IAAEN,UAAF;IAAcY,KAAK,EAAE,EAArB;IAAyBX;GAA5C,CAlE0C;EAmElDmE,IAAI,EAAE/C,WAAW,CAAC,GAAD,EAAM,EAAN,CAnEiC;EAoElDgD,KAAK,EAAEhD,WAAW,CAAC,GAAD,EAAM,EAAN,CApEgC;EAqElDiD,QAAQ,EAAE,IAAIhE,SAAJ,CAAc,IAAd,EAAoB;IAC5BN,UAD4B;IAE5BY,KAAK,EAAE,EAFqB;IAG5BD,gBAAgB,EAAE;GAHV,CArEwC;EA4ElD4D,MAAM,EAAEvD,aAAa,CAAC,OAAD,CA5E6B;EA6ElDwD,KAAK,EAAExD,aAAa,CAAC,MAAD,EAAS;IAAEhB;GAAX,CA7E8B;EA8ElDyE,MAAM,EAAEzD,aAAa,CAAC,OAAD,CA9E6B;EA+ElD0D,SAAS,EAAE1D,aAAa,CAAC,UAAD,CA/E0B;EAgFlD2D,SAAS,EAAE3D,aAAa,CAAC,UAAD,CAhF0B;EAiFlD4D,QAAQ,EAAE5D,aAAa,CAAC,SAAD,EAAY;IAAEhB;GAAd,CAjF2B;EAkFlD6E,GAAG,EAAE7D,aAAa,CAAC,IAAD,EAAO;IAAEd,MAAF;IAAUF;GAAjB,CAlFgC;EAmFlD8E,KAAK,EAAE9D,aAAa,CAAC,MAAD,EAAS;IAAEhB;GAAX,CAnF8B;EAoFlD+E,QAAQ,EAAE/D,aAAa,CAAC,SAAD,CApF2B;EAqFlDgE,IAAI,EAAEhE,aAAa,CAAC,KAAD,EAAQ;IAAEd;GAAV,CArF+B;EAsFlD+E,SAAS,EAAEjE,aAAa,CAAC,UAAD,EAAa;IAAEf;GAAf,CAtF0B;EAuFlDiF,GAAG,EAAElE,aAAa,CAAC,IAAD,CAvFgC;EAwFlDmE,OAAO,EAAEnE,aAAa,CAAC,QAAD,EAAW;IAAEhB;GAAb,CAxF4B;EAyFlDoF,OAAO,EAAEpE,aAAa,CAAC,QAAD,CAzF4B;EA0FlDqE,MAAM,EAAErE,aAAa,CAAC,OAAD,EAAU;IAAEhB,UAAF;IAAcI,MAAd;IAAsBH;GAAhC,CA1F6B;EA2FlDqF,IAAI,EAAEtE,aAAa,CAAC,KAAD,CA3F+B;EA4FlDuE,IAAI,EAAEvE,aAAa,CAAC,KAAD,CA5F+B;EA6FlDwE,MAAM,EAAExE,aAAa,CAAC,OAAD,CA7F6B;EA8FlDyE,MAAM,EAAEzE,aAAa,CAAC,OAAD,EAAU;IAAEd;GAAZ,CA9F6B;EA+FlDwF,KAAK,EAAE1E,aAAa,CAAC,MAAD,CA/F8B;EAgGlD2E,IAAI,EAAE3E,aAAa,CAAC,KAAD,EAAQ;IAAEhB,UAAF;IAAcC;GAAtB,CAhG+B;EAiGlD2F,KAAK,EAAE5E,aAAa,CAAC,MAAD,EAAS;IAAEf;GAAX,CAjG8B;EAkGlD4F,MAAM,EAAE7E,aAAa,CAAC,OAAD,EAAU;IAAEf;GAAZ,CAlG6B;EAmGlD6F,MAAM,EAAE9E,aAAa,CAAC,OAAD,EAAU;IAAEf;GAAZ,CAnG6B;EAoGlD8F,QAAQ,EAAE/E,aAAa,CAAC,SAAD,EAAY;IAAEhB;GAAd,CApG2B;EAqGlDgG,OAAO,EAAEhF,aAAa,CAAC,QAAD,CArG4B;EAsGlDiF,OAAO,EAAEjF,aAAa,CAAC,QAAD,EAAW;IAAEf;GAAb,CAtG4B;EAuGlDiG,KAAK,EAAElF,aAAa,CAAC,MAAD,EAAS;IAAEf;GAAX,CAvG8B;EAwGlDkG,KAAK,EAAEnF,aAAa,CAAC,MAAD,EAAS;IAAEf;GAAX,CAxG8B;EAyGlDmG,MAAM,EAAEpF,aAAa,CAAC,OAAD,EAAU;IAAEf;GAAZ,CAzG6B;EA0GlDoG,GAAG,EAAErF,aAAa,CAAC,IAAD,EAAO;IAAEhB,UAAF;IAAcY,KAAK,EAAE;GAA5B,CA1GgC;EA2GlD0F,WAAW,EAAEtF,aAAa,CAAC,YAAD,EAAe;IAAEhB,UAAF;IAAcY,KAAK,EAAE;GAApC,CA3GwB;EA4GlD2F,OAAO,EAAEvF,aAAa,CAAC,QAAD,EAAW;IAAEhB,UAAF;IAAcI,MAAd;IAAsBH;GAAjC,CA5G4B;EA6GlDuG,KAAK,EAAExF,aAAa,CAAC,MAAD,EAAS;IAAEhB,UAAF;IAAcI,MAAd;IAAsBH;GAA/B,CA7G8B;EA8GlDwG,OAAO,EAAEzF,aAAa,CAAC,QAAD,EAAW;IAAEhB,UAAF;IAAcI,MAAd;IAAsBH;GAAjC;CA9GjB;;ACjFA,MAAMyG,WAAW,GAAU,YAA3B;MACMC,aAAa,GAAQ,YAD3B;MAEMC,cAAc,GAAO,YAF3B;MAGMC,WAAW,GAAU,YAH3B;MAIMC,eAAe,GAAM,YAJ3B;MAKMC,WAAW,GAAU,YAL3B;MAMMC,kBAAkB,GAAG,YAN3B;MAOMC,WAAW,GAAU,YAP3B;MAQMC,kBAAkB,GAAG,YAR3B;MASMC,WAAW,GAAU,YAT3B;MAUMC,eAAe,GAAM,YAV3B;MAWMC,SAAS,GAAGV,aAAa,GAAGC,cAAhB,GAAiCQ,eAXnD;AA0BP,AAAO,SAASE,aAAT,CAAuBC,OAAvB,EAAyCC,WAAzC,EAA+D;SAElEZ,cAAc,IACbW,OAAO,GAAGV,WAAH,GAAiB,CADX,CAAd,IAECW,WAAW,GAAGV,eAAH,GAAqB,CAFjC,CADF;;AASF,MAAaW,eAAe,GAAa,aAAlC;MACMC,cAAc,GAAc,aADlC;MAGMC,cAAc,GAAc,aAHlC;MAIMC,kBAAkB,GAAU,aAJlC;MAKMC,mBAAmB,GAAS,aALlC;MAMMC,AAGAC,eAAe,GAAa,aATlC;MAUMC,gBAAgB,GAAY,aAVlC;MAWMC,kBAAkB,GAAU,aAXlC;MAYMC,wBAAwB,GAAI,aAZlC;MAaMC,yBAAyB,GAAG,aAblC;AAkBP,AAAO,MAAMC,UAAU,GAAWX,eAAe,GAAGC,cAAlB,GAAmCE,kBAAnC,GAAyDI,gBAApF;MACMK,YAAY,GAASZ,eAAe,GAAG,CAAlB,GAAmCG,kBAAnC,GAAyD,CADpF;MAEMU,QAAQ,GAAab,eAAe,GAAG,CAAlB,GAAmCE,cAAnC,GAAyD,CAFpF;MAGMY,aAAa,GAAQd,eAAe,GAAG,CAAlB,GAAmCI,mBAAnC,GAAyD,CAHpF;MAIMW,iBAAiB,GAAI,IAAkBd,cAAlB,GAAmC,CAAnC,GAAyDM,gBAJpF;MAKMS,YAAY,GAAS,IAAkBf,cAAlB,GAAmC,CAAnC,GAAyD,CALpF;MAMMgB,YAAY,GAASjB,eAAe,GAAGC,cAAlB,GAAmCE,kBAAnC,GAAyDK,kBANpF;MAOMU,eAAe,GAAM,IAAkB,CAAlB,GAAmC,CAAnC,GAAkDR,yBAP7E;MAUMS,SAAS,GAAY,IAAkB,CAAlB,GAAmC,CAAnC,GAAyDb,eAVpF;MAWMc,YAAY,GAASpB,eAAe,GAAG,CAAlB,GAAmC,CAAnC,GAAyDM,eAXpF;MAaMe,kBAAkB,GAAGJ,YAAY,GAAGR,wBAb1C;MAcMa,iBAAiB,GAAI,IAAkB,CAAlB,GAAmC,CAAnC,GAAkDZ,yBAd7E;AA8BP,AAAO,MAAMa,yBAAyB,GAAG,KAAlC;MACMC,yBAAyB,GAAG,KADlC;MAEMC,yBAAyB,GAAG,KAFlC;MAGMC,2BAA2B,GAAGF,yBAAyB,GAAGC,yBAHhE;AAMP,AAAO,MAAME,2BAA2B,GAAKH,yBAAyB,GAAGD,yBAAlE;MACMK,2BAA2B,GAAKH,yBAAyB,GAAGF,yBADlE;MAEMM,6BAA6B,GAAGL,yBAFtC;MAGMM,6BAA6B,GAAGL,yBAHtC;MAIMM,mBAAmB,GAAa,CAJtC;;ACrFP,SAASC,gBAAT,CAA0BC,IAA1B,EAAiD;SAE7CA,IAAI,IAAI,IAAR,IACAA,IAAI,CAACC,IAAL,KAAc,UADd,IAEAD,IAAI,CAACE,IAAL,KAAc,MAFd,IAGAF,IAAI,CAACG,MAAL,KAAgB,KAJlB;;;AAQF,cAAgBC,UAAD,IACb,cAAcA,UAAd,CAAyB;EACvBC,wBAAwB,CAAC;IAAEC,OAAF;IAAWC;GAAZ,EAA8C;QAChEC,KAAK,GAAG,IAAZ;;QACI;MACFA,KAAK,GAAG,IAAIC,MAAJ,CAAWH,OAAX,EAAoBC,KAApB,CAAR;KADF,CAEE,OAAOG,CAAP,EAAU;;UAINV,IAAI,GAAG,KAAKW,kBAAL,CAAwBH,KAAxB,CAAb;IACAR,IAAI,CAACQ,KAAL,GAAa;MAAEF,OAAF;MAAWC;KAAxB;WAEOP,IAAP;;;EAGFY,wBAAwB,CAACC,KAAD,EAAqB;UAGrCC,MAAM,GAAG,OAAOC,MAAP,KAAkB,WAAlB,GAAgCA,MAAM,CAACF,KAAD,CAAtC,GAAgD,IAA/D;UACMb,IAAI,GAAG,KAAKW,kBAAL,CAAwBG,MAAxB,CAAb;IACAd,IAAI,CAAClI,MAAL,GAAckJ,MAAM,CAAChB,IAAI,CAACa,KAAL,IAAcA,KAAf,CAApB;WAEOb,IAAP;;;EAGFW,kBAAkB,CAACE,KAAD,EAAqB;WAC9B,KAAKI,YAAL,CAAkBJ,KAAlB,EAAyB,SAAzB,CAAP;;;EAGFK,eAAe,CAACC,SAAD,EAAgD;UACvDC,gBAAgB,GAAGD,SAAS,CAACN,KAAnC;UAEMQ,IAAI,GAAG,KAAKC,WAAL,CAAiBH,SAAS,CAACI,KAA3B,EAAkCJ,SAAS,CAACK,GAAV,CAAcD,KAAhD,CAAb;UACME,UAAU,GAAG,KAAKH,WAAL,CACjBF,gBAAgB,CAACG,KADA,EAEjBH,gBAAgB,CAACI,GAAjB,CAAqBD,KAFJ,CAAnB;IAKAE,UAAU,CAACZ,KAAX,GAAmBO,gBAAgB,CAACP,KAApC;IACAY,UAAU,CAACC,GAAX,GAAiBN,gBAAgB,CAACO,KAAjB,CAAuBD,GAAxC;IAEAL,IAAI,CAACI,UAAL,GAAkB,KAAKG,YAAL,CAChBH,UADgB,EAEhB,SAFgB,EAGhBL,gBAAgB,CAACS,GAHD,EAIhBT,gBAAgB,CAACI,GAAjB,CAAqBK,GAJL,CAAlB;IAMAR,IAAI,CAACF,SAAL,GAAiBC,gBAAgB,CAACO,KAAjB,CAAuBD,GAAvB,CAA2BI,KAA3B,CAAiC,CAAjC,EAAoC,CAAC,CAArC,CAAjB;WAEO,KAAKF,YAAL,CACLP,IADK,EAEL,qBAFK,EAGLF,SAAS,CAACU,GAHL,EAILV,SAAS,CAACK,GAAV,CAAcK,GAJT,CAAP;;;EAYFE,YAAY,CACV/B,IADU,EAEVnC,OAFU,EAGJ;UACAkE,YAAN,CAAmB/B,IAAnB,EAAyBnC,OAAzB;IACAmC,IAAI,CAACyB,UAAL,GAAkB,KAAlB;;;EAGFO,gBAAgB,CAAChC,IAAD,EAA2C;QACrDD,gBAAgB,CAACC,IAAD,CAApB,EAA4B;WACrBgC,gBAAL,CAAwBhC,IAAF,CAAgCa,KAAtD;KADF,MAEO;YACCmB,gBAAN,CAAuBhC,IAAvB;;;;EAIJiC,uBAAuB,CAAC9B,MAAD,EAA+C;UAC9D+B,IAAI,GAAK/B,MAAf;UACMgC,UAAU,GAAGD,IAAI,CAAChC,IAAL,KAAc,KAAd,GAAsB,CAAtB,GAA0B,CAA7C;UACMqB,KAAK,GAAGW,IAAI,CAACX,KAAnB;;QACIW,IAAI,CAACrB,KAAL,CAAWuB,MAAX,CAAkBC,MAAlB,KAA6BF,UAAjC,EAA6C;UACvCD,IAAI,CAAChC,IAAL,KAAc,KAAlB,EAAyB;aAClBoC,KAAL,CAAWf,KAAX,EAAkB,4CAAlB;OADF,MAEO;aACAe,KAAL,CAAWf,KAAX,EAAkB,+CAAlB;;KAJJ,MAMO,IACLW,IAAI,CAAChC,IAAL,KAAc,KAAd,IACAgC,IAAI,CAACrB,KAAL,CAAWuB,MAAX,CAAkB,CAAlB,EAAqBnC,IAArB,KAA8B,aAFzB,EAGL;WACKqC,KAAL,CACEf,KADF,EAEE,uDAFF;;;;EAOJgB,SAAS,CACPC,IADO,EAEPC,WAAyB,GAAGvD,SAFrB,EAGPwD,YAHO,EAIPC,kBAJO,EAKPC,kBALO,EAMD;YACEJ,IAAI,CAACvC,IAAb;WACO,eAAL;QACEuC,IAAI,CAACK,UAAL,CAAgBC,OAAhB,CAAwBZ,IAAI,IAAI;eACzBK,SAAL,CACEL,IAAI,CAACjC,IAAL,KAAc,UAAd,GAA2BiC,IAAI,CAACrB,KAAhC,GAAwCqB,IAD1C,EAEEO,WAFF,EAGEC,YAHF,EAIE,8BAJF,EAKEE,kBALF;SADF;;;;cAWML,SAAN,CACEC,IADF,EAEEC,WAFF,EAGEC,YAHF,EAIEC,kBAJF,EAKEC,kBALF;;;;EAUNG,oBAAoB,CAClBb,IADkB,EAElBc,QAFkB,EAGlBC,mBAHkB,EAIZ;QAEJf,IAAI,CAACjC,IAAL,KAAc,eAAd,IACAiC,IAAI,CAACgB,QADL,IAEAhB,IAAI,CAAC/B,MAFL,IAIA+B,IAAI,CAACiB,SALP,EAME;;;;UAIIC,GAAG,GAAGlB,IAAI,CAACkB,GAAjB;UAEM7L,IAAI,GAAG6L,GAAG,CAACnD,IAAJ,KAAa,YAAb,GAA4BmD,GAAG,CAAC7L,IAAhC,GAAuCyJ,MAAM,CAACoC,GAAG,CAACvC,KAAL,CAA1D;;QAEItJ,IAAI,KAAK,WAAT,IAAwB2K,IAAI,CAAChC,IAAL,KAAc,MAA1C,EAAkD;UAE5C8C,QAAQ,CAACK,IAAb,EAAmB;YACbJ,mBAAmB,IAAIA,mBAAmB,CAACK,WAApB,KAAoC,CAAC,CAAhE,EAAmE;UACjEL,mBAAmB,CAACK,WAApB,GAAkCF,GAAG,CAAC7B,KAAtC;SADF,MAEO;eACAe,KAAL,CAAWc,GAAG,CAAC7B,KAAf,EAAsB,oCAAtB;;;;MAIJyB,QAAQ,CAACK,IAAT,GAAgB,IAAhB;;;;EAIJE,gBAAgB,CAAClC,IAAD,EAA6B;WAEzCA,IAAI,CAACpB,IAAL,KAAc,qBAAd,IACAoB,IAAI,CAACI,UAAL,CAAgBxB,IAAhB,KAAyB,SADzB,IAEA,OAAOoB,IAAI,CAACI,UAAL,CAAgBZ,KAAvB,KAAiC,QAFjC,KAGC,CAACQ,IAAI,CAACI,UAAL,CAAgBE,KAAjB,IAA0B,CAACN,IAAI,CAACI,UAAL,CAAgBE,KAAhB,CAAsB6B,aAHlD,CADF;;;EAQFC,eAAe,CAACpC,IAAD,EAAiC;UACxCF,SAAS,GAAG,MAAMsC,eAAN,CAAsBpC,IAAtB,CAAlB;UACMR,KAAK,GAAGQ,IAAI,CAACI,UAAL,CAAgBZ,KAA9B;IAIAM,SAAS,CAACN,KAAV,CAAgBA,KAAhB,GAAwBA,KAAxB;WAEOM,SAAP;;;EAGFuC,cAAc,CACZ1D,IADY,EAEZ2D,eAFY,EAGZC,QAHY,EAIZ/B,GAJY,EAKN;UACA6B,cAAN,CAAqB1D,IAArB,EAA2B2D,eAA3B,EAA4CC,QAA5C,EAAsD/B,GAAtD;UAEMgC,mBAAmB,GAAG7D,IAAI,CAAC8D,UAAL,CAAgBC,GAAhB,CAAoBC,CAAC,IAC/C,KAAK9C,eAAL,CAAqB8C,CAArB,CAD0B,CAA5B;IAGAhE,IAAI,CAACiE,IAAL,GAAYJ,mBAAmB,CAACK,MAApB,CAA2BlE,IAAI,CAACiE,IAAhC,CAAZ;WACOjE,IAAI,CAAC8D,UAAZ;;;EAGFK,eAAe,CACbC,SADa,EAEbjE,MAFa,EAGbrC,WAHa,EAIbD,OAJa,EAKbwG,aALa,EAMbC,iBANa,EAOP;SACDC,WAAL,CACEpE,MADF,EAEErC,WAFF,EAGED,OAHF,EAIEwG,aAJF,EAKEC,iBALF,EAME,aANF,EAOE,IAPF;;QASInE,MAAM,CAACqE,cAAX,EAA2B;MAEzBrE,MAAM,CAACU,KAAP,CAAa2D,cAAb,GAA8BrE,MAAM,CAACqE,cAArC;aACOrE,MAAM,CAACqE,cAAd;;;IAEFJ,SAAS,CAACH,IAAV,CAAeQ,IAAf,CAAoBtE,MAApB;;;EAGFuE,aAAa,CAACzB,mBAAD,EAAwD;YAC3D,KAAK0B,KAAL,CAAW1E,IAAnB;WACO2E,KAAE,CAAC/M,GAAR;WACK+M,KAAE,CAAC5M,MAAR;eACS,KAAK2I,kBAAL,CAAwB,KAAKgE,KAAL,CAAW9D,KAAnC,CAAP;;WAEG+D,KAAE,CAAC7M,MAAR;eACS,KAAKsI,wBAAL,CAA8B,KAAKsE,KAAL,CAAW9D,KAAzC,CAAP;;WAEG+D,KAAE,CAAC9M,MAAR;eACS,KAAK8I,wBAAL,CAA8B,KAAK+D,KAAL,CAAW9D,KAAzC,CAAP;;WAEG+D,KAAE,CAACpI,KAAR;eACS,KAAKmE,kBAAL,CAAwB,IAAxB,CAAP;;WAEGiE,KAAE,CAACnI,KAAR;eACS,KAAKkE,kBAAL,CAAwB,IAAxB,CAAP;;WAEGiE,KAAE,CAAClI,MAAR;eACS,KAAKiE,kBAAL,CAAwB,KAAxB,CAAP;;;eAGO,MAAM+D,aAAN,CAAoBzB,mBAApB,CAAP;;;;EAINhC,YAAY,CACVJ,KADU,EAEVZ,IAFU,EAGV4E,QAHU,EAIVC,QAJU,EAKP;UACG9E,IAAI,GAAG,MAAMiB,YAAN,CAAmBJ,KAAnB,EAA0BZ,IAA1B,EAAgC4E,QAAhC,EAA0CC,QAA1C,CAAb;IACA9E,IAAI,CAAC0B,GAAL,GAAW1B,IAAI,CAAC2B,KAAL,CAAWD,GAAtB;WACO1B,IAAI,CAAC2B,KAAZ;WAEO3B,IAAP;;;EAGF+E,iBAAiB,CACf/E,IADe,EAEfgF,eAFe,EAGfC,QAAkB,GAAG,KAHN,EAIT;UACAF,iBAAN,CAAwB/E,IAAxB,EAA8BgF,eAA9B,EAA+CC,QAA/C;IACAjF,IAAI,CAACyB,UAAL,GAAkBzB,IAAI,CAACiE,IAAL,CAAUhE,IAAV,KAAmB,gBAArC;;;EAGFsE,WAAW,CACTvE,IADS,EAETlC,WAFS,EAGTD,OAHS,EAITwG,aAJS,EAKTa,gBALS,EAMTjF,IANS,EAOTkF,YAAqB,GAAG,KAPf,EAQN;QACCC,QAAQ,GAAG,KAAKC,SAAL,EAAf;IACAD,QAAQ,CAAClF,IAAT,GAAgBF,IAAI,CAACE,IAArB;IACAkF,QAAQ,GAAG,MAAMb,WAAN,CACTa,QADS,EAETtH,WAFS,EAGTD,OAHS,EAITwG,aAJS,EAKTa,gBALS,EAMTjF,IANS,EAOTkF,YAPS,CAAX;IASAC,QAAQ,CAACnF,IAAT,GAAgB,oBAAhB;WACOmF,QAAQ,CAAClF,IAAhB;IAEAF,IAAI,CAACa,KAAL,GAAauE,QAAb;IAEAnF,IAAI,GAAGA,IAAI,KAAK,aAAT,GAAyB,kBAAzB,GAA8CA,IAArD;WACO,KAAKqF,UAAL,CAAgBtF,IAAhB,EAAsBC,IAAtB,CAAP;;;EAGFsF,iBAAiB,CACfrD,IADe,EAEfpE,WAFe,EAGfD,OAHe,EAIf2H,SAJe,EAKfC,WALe,EAME;UACXzF,IAAsB,GAAI,MAAMuF,iBAAN,CAC9BrD,IAD8B,EAE9BpE,WAF8B,EAG9BD,OAH8B,EAI9B2H,SAJ8B,EAK9BC,WAL8B,CAAhC;;QAQIzF,IAAJ,EAAU;MACRA,IAAI,CAACC,IAAL,GAAY,UAAZ;UACMD,IAAF,CAA6BE,IAA7B,KAAsC,QAA1C,EAAoDF,IAAI,CAACE,IAAL,GAAY,MAAZ;MACpDF,IAAI,CAACmD,SAAL,GAAiB,KAAjB;;;WAGMnD,IAAR;;;EAGF0F,mBAAmB,CACjBxD,IADiB,EAEjB2C,QAFiB,EAGjBC,QAHiB,EAIjBU,SAJiB,EAKjBvC,mBALiB,EAME;UACbjD,IAAsB,GAAI,MAAM0F,mBAAN,CAC9BxD,IAD8B,EAE9B2C,QAF8B,EAG9BC,QAH8B,EAI9BU,SAJ8B,EAK9BvC,mBAL8B,CAAhC;;QAQIjD,IAAJ,EAAU;MACRA,IAAI,CAACE,IAAL,GAAY,MAAZ;MACAF,IAAI,CAACC,IAAL,GAAY,UAAZ;;;WAGMD,IAAR;;;EAGF2F,YAAY,CAAC3F,IAAD,EAAuB;QAC7BD,gBAAgB,CAACC,IAAD,CAApB,EAA4B;WACrB2F,YAAL,CAAkB3F,IAAI,CAACa,KAAvB;aAEOb,IAAP;;;WAGK,MAAM2F,YAAN,CAAmB3F,IAAnB,CAAP;;;EAGF4F,gCAAgC,CAAC1D,IAAD,EAAe2D,MAAf,EAAgC;QAC1D3D,IAAI,CAAChC,IAAL,KAAc,KAAd,IAAuBgC,IAAI,CAAChC,IAAL,KAAc,KAAzC,EAAgD;YACxC,KAAKoC,KAAL,CACJJ,IAAI,CAACkB,GAAL,CAAS7B,KADL,EAEJ,+CAFI,CAAN;KADF,MAKO,IAAIW,IAAI,CAAC/B,MAAT,EAAiB;YAChB,KAAKmC,KAAL,CACJJ,IAAI,CAACkB,GAAL,CAAS7B,KADL,EAEJ,sCAFI,CAAN;KADK,MAKA;YACCqE,gCAAN,CAAuC1D,IAAvC,EAA6C2D,MAA7C;;;;EAIJC,oBAAoB,CAClB9F,IADkB,EAElB+F,QAFkB,EAGJ;UACRD,oBAAN,CAA2B9F,IAA3B,EAAiC+F,QAAjC;;QAEI/F,IAAI,CAACgG,MAAL,CAAY/F,IAAZ,KAAqB,QAAzB,EAAmC;MAC/BD,IAAF,CAA2CC,IAA3C,GAAkD,kBAAlD;MACED,IAAF,CAA2CiG,MAA3C,GAAoDjG,IAAI,CAACkG,SAAL,CAAe,CAAf,CAApD;aACOlG,IAAI,CAACkG,SAAZ;aACOlG,IAAI,CAACgG,MAAZ;;;WAGKhG,IAAP;;;EAGFmG,oBAAoB,CAClBC,QADkB,EAElBC,mBAFkB,EAGZ;QAEF,CAACD,QAAL,EAAe;;;;UAITD,oBAAN,CAA2BC,QAA3B,EAAqCC,mBAArC;;;CA7YN;;ACZO,MAAMC,SAAS,GAAG,wBAAlB;AACP,AAAO,MAAMC,UAAU,GAAG,IAAI9F,MAAJ,CAAW6F,SAAS,CAACL,MAArB,EAA6B,GAA7B,CAAnB;AAGP,AAAO,SAASO,SAAT,CAAmBC,IAAnB,EAA0C;UACvCA,IAAR;;;;;aAKW,IAAP;;;aAGO,KAAP;;;AAIN,AAAO,MAAMC,cAAc,GAAG,+BAAvB;AAGP,AAAO,SAASC,YAAT,CAAsBF,IAAtB,EAA6C;UAC1CA,IAAR;SACO,MAAL;SACK,MAAL;SACK,MAAL;;;;SAIK,MAAL;SACK,MAAL;SACK,MAAL;SACK,MAAL;SACK,MAAL;SACK,MAAL;SACK,MAAL;SACK,MAAL;SACK,MAAL;SACK,MAAL;SACK,MAAL;SACK,MAAL;SACK,MAAL;SACK,MAAL;SACK,MAAL;aACS,IAAP;;;aAGO,KAAP;;;;AC3CC,MAAMG,UAAN,CAAiB;EACtB/P,WAAW,CACTY,KADS,EAEToP,MAFS,EAGTC,aAHS,EAITC,QAJS,EAKT;SACKtP,KAAL,GAAaA,KAAb;SACKoP,MAAL,GAAc,CAAC,CAACA,MAAhB;SACKC,aAAL,GAAqB,CAAC,CAACA,aAAvB;SACKC,QAAL,GAAgBA,QAAhB;;;;AASJ,AAAO,MAAMnP,OAEZ,GAAG;EACFoP,cAAc,EAAE,IAAIJ,UAAJ,CAAe,GAAf,EAAoB,KAApB,CADd;EAEFK,eAAe,EAAE,IAAIL,UAAJ,CAAe,GAAf,EAAoB,IAApB,CAFf;EAGFM,aAAa,EAAE,IAAIN,UAAJ,CAAe,IAAf,EAAqB,KAArB,CAHb;EAIFO,cAAc,EAAE,IAAIP,UAAJ,CAAe,GAAf,EAAoB,KAApB,CAJd;EAKFQ,eAAe,EAAE,IAAIR,UAAJ,CAAe,GAAf,EAAoB,IAApB,CALf;EAMF1N,QAAQ,EAAE,IAAI0N,UAAJ,CAAe,GAAf,EAAoB,IAApB,EAA0B,IAA1B,EAAgCS,CAAC,IAAIA,CAAC,CAACC,aAAF,EAArC,CANR;EAOFC,kBAAkB,EAAE,IAAIX,UAAJ,CAAe,UAAf,EAA2B,IAA3B,CAPlB;EAQFY,iBAAiB,EAAE,IAAIZ,UAAJ,CAAe,UAAf,EAA2B,KAA3B;CAVd;;AAePhC,KAAE,CAACnM,MAAH,CAAUtB,aAAV,GAA0ByN,KAAE,CAACtM,MAAH,CAAUnB,aAAV,GAA0B,YAAW;MACzD,KAAKwN,KAAL,CAAW8C,OAAX,CAAmBpF,MAAnB,KAA8B,CAAlC,EAAqC;SAC9BsC,KAAL,CAAW+C,WAAX,GAAyB,IAAzB;;;;MAIEC,GAAG,GAAG,KAAKhD,KAAL,CAAW8C,OAAX,CAAmBG,GAAnB,EAAV;;MACID,GAAG,KAAK/P,OAAK,CAACoP,cAAd,IAAgC,KAAKa,UAAL,GAAkBpQ,KAAlB,KAA4B,UAAhE,EAA4E;IAC1EkQ,GAAG,GAAG,KAAKhD,KAAL,CAAW8C,OAAX,CAAmBG,GAAnB,EAAN;;;OAGGjD,KAAL,CAAW+C,WAAX,GAAyB,CAACC,GAAG,CAACd,MAA9B;CAXF;;AAcAjC,KAAE,CAACrN,IAAH,CAAQJ,aAAR,GAAwB,UAAS2Q,QAAT,EAAmB;MACrCC,OAAO,GAAG,KAAd;;MACID,QAAQ,KAAKlD,KAAE,CAAC9L,GAApB,EAAyB;QAEpB,KAAK6L,KAAL,CAAW9D,KAAX,KAAqB,IAArB,IAA6B,CAAC,KAAK8D,KAAL,CAAW+C,WAA1C,IACC,KAAK/C,KAAL,CAAW9D,KAAX,KAAqB,OAArB,IAAgC,KAAKmH,KAAL,CAAWC,WAF9C,EAGE;MACAF,OAAO,GAAG,IAAV;;;;OAGCpD,KAAL,CAAW+C,WAAX,GAAyBK,OAAzB;;MAEI,KAAKpD,KAAL,CAAWuD,UAAf,EAA2B;SACpBvD,KAAL,CAAWuD,UAAX,GAAwB,KAAxB;;CAbJ;;AAiBAtD,KAAE,CAACxM,MAAH,CAAUjB,aAAV,GAA0B,UAAS2Q,QAAT,EAAmB;OACtCnD,KAAL,CAAW8C,OAAX,CAAmBhD,IAAnB,CACE,KAAK0D,YAAL,CAAkBL,QAAlB,IAA8BlQ,OAAK,CAACoP,cAApC,GAAqDpP,OAAK,CAACqP,eAD7D;OAGKtC,KAAL,CAAW+C,WAAX,GAAyB,IAAzB;CAJF;;AAOA9C,KAAE,CAACvL,YAAH,CAAgBlC,aAAhB,GAAgC,YAAW;OACpCwN,KAAL,CAAW8C,OAAX,CAAmBhD,IAAnB,CAAwB7M,OAAK,CAACsP,aAA9B;OACKvC,KAAL,CAAW+C,WAAX,GAAyB,IAAzB;CAFF;;AAKA9C,KAAE,CAACpM,MAAH,CAAUrB,aAAV,GAA0B,UAAS2Q,QAAT,EAAmB;QACrCM,eAAe,GACnBN,QAAQ,KAAKlD,KAAE,CAACpJ,GAAhB,IACAsM,QAAQ,KAAKlD,KAAE,CAACtJ,IADhB,IAEAwM,QAAQ,KAAKlD,KAAE,CAAC5I,KAFhB,IAGA8L,QAAQ,KAAKlD,KAAE,CAAC7I,MAJlB;OAKK4I,KAAL,CAAW8C,OAAX,CAAmBhD,IAAnB,CACE2D,eAAe,GAAGxQ,OAAK,CAACuP,cAAT,GAA0BvP,OAAK,CAACwP,eADjD;OAGKzC,KAAL,CAAW+C,WAAX,GAAyB,IAAzB;CATF;;AAYA9C,KAAE,CAACjL,MAAH,CAAUxC,aAAV,GAA0B,YAAW,EAArC;;AAIAyN,KAAE,CAACrJ,SAAH,CAAapE,aAAb,GAA6ByN,KAAE,CAACxI,MAAH,CAAUjF,aAAV,GAA0B,UAAS2Q,QAAT,EAAmB;MAEtEA,QAAQ,CAACxR,UAAT,IACAwR,QAAQ,KAAKlD,KAAE,CAACjM,IADhB,IAEAmP,QAAQ,KAAKlD,KAAE,CAACxJ,KAFhB,IAGA,EACE0M,QAAQ,KAAKlD,KAAE,CAACnJ,OAAhB,IACA6K,SAAS,CAAC+B,IAAV,CAAe,KAAKC,KAAL,CAAWxG,KAAX,CAAiB,KAAK6C,KAAL,CAAW4D,UAA5B,EAAwC,KAAK5D,KAAL,CAAWpD,KAAnD,CAAf,CAFF,CAHA,IAOA,EACE,CAACuG,QAAQ,KAAKlD,KAAE,CAAChM,KAAhB,IAAyBkP,QAAQ,KAAKlD,KAAE,CAACxM,MAA1C,KACA,KAAKyP,UAAL,OAAsBjQ,OAAK,CAAC4Q,MAF9B,CARF,EAYE;SACK7D,KAAL,CAAW8C,OAAX,CAAmBhD,IAAnB,CAAwB7M,OAAK,CAAC2P,kBAA9B;GAbF,MAcO;SACA5C,KAAL,CAAW8C,OAAX,CAAmBhD,IAAnB,CAAwB7M,OAAK,CAAC4P,iBAA9B;;;OAGG7C,KAAL,CAAW+C,WAAX,GAAyB,KAAzB;CAnBF;;AAsBA9C,KAAE,CAACxL,SAAH,CAAajC,aAAb,GAA6B,YAAW;MAClC,KAAK0Q,UAAL,OAAsBjQ,OAAK,CAACsB,QAAhC,EAA0C;SACnCyL,KAAL,CAAW8C,OAAX,CAAmBG,GAAnB;GADF,MAEO;SACAjD,KAAL,CAAW8C,OAAX,CAAmBhD,IAAnB,CAAwB7M,OAAK,CAACsB,QAA9B;;;OAEGyL,KAAL,CAAW+C,WAAX,GAAyB,KAAzB;CANF;;ACrHA,MAAMe,aAAa,GAAG;EACpBC,MAAM,EAAE,CACN,YADM,EAEN,WAFM,EAGN,KAHM,EAIN,SAJM,EAKN,SALM,EAMN,WANM,EAON,QAPM,EAQN,QARM,EASN,OATM,CADY;EAYpBC,UAAU,EAAE,CAAC,MAAD,EAAS,WAAT;CAZd;AAeA,MAAMC,sBAAsB,GAAG,IAAIC,GAAJ,CAAQJ,aAAa,CAACC,MAAtB,CAA/B;AACA,MAAMI,0BAA0B,GAAG,IAAID,GAAJ,CAAQJ,aAAa,CAACE,UAAtB,CAAnC;AAKA,AAAO,MAAMI,cAAc,GAAG,CAACC,IAAD,EAAeC,QAAf,KAA8C;SAClEA,QAAQ,IAAID,IAAI,KAAK,OAAtB,IAAkCA,IAAI,KAAK,MAAlD;CADK;AASP,AAAO,SAASE,oBAAT,CAA8BF,IAA9B,EAA4CC,QAA5C,EAAwE;SACtEF,cAAc,CAACC,IAAD,EAAOC,QAAP,CAAd,IAAkCL,sBAAsB,CAACO,GAAvB,CAA2BH,IAA3B,CAAzC;;AAOF,AAAO,SAASI,4BAAT,CAAsCJ,IAAtC,EAA6D;SAC3DF,0BAA0B,CAACK,GAA3B,CAA+BH,IAA/B,CAAP;;AAQF,AAAO,SAASK,wBAAT,CACLL,IADK,EAELC,QAFK,EAGI;SAEPC,oBAAoB,CAACF,IAAD,EAAOC,QAAP,CAApB,IAAwCG,4BAA4B,CAACJ,IAAD,CADtE;;AAKF,AAAO,SAASM,SAAT,CAAmBN,IAAnB,EAA0C;SACxC5R,QAAQ,CAAC+R,GAAT,CAAaH,IAAb,CAAP;;AAGF,AAAO,MAAMO,yBAAyB,GAAG,iBAAlC;AAWP,IAAIC,4BAA4B,GAAG,urIAAnC;AAEA,IAAIC,uBAAuB,GAAG,kiFAA9B;AAEA,MAAMC,uBAAuB,GAAG,IAAIjJ,MAAJ,CAC9B,MAAM+I,4BAAN,GAAqC,GADP,CAAhC;AAGA,MAAMG,kBAAkB,GAAG,IAAIlJ,MAAJ,CACzB,MAAM+I,4BAAN,GAAqCC,uBAArC,GAA+D,GADtC,CAA3B;AAIAD,4BAA4B,GAAGC,uBAAuB,GAAG,IAAzD;AAQA,MAAMG,0BAA0B,GAAG,CAAC,CAAD,EAAG,EAAH,EAAM,CAAN,EAAQ,EAAR,EAAW,CAAX,EAAa,EAAb,EAAgB,CAAhB,EAAkB,CAAlB,EAAoB,CAApB,EAAsB,EAAtB,EAAyB,CAAzB,EAA2B,EAA3B,EAA8B,EAA9B,EAAiC,GAAjC,EAAqC,EAArC,EAAwC,EAAxC,EAA2C,GAA3C,EAA+C,EAA/C,EAAkD,CAAlD,EAAoD,EAApD,EAAuD,EAAvD,EAA0D,EAA1D,EAA6D,EAA7D,EAAgE,EAAhE,EAAmE,CAAnE,EAAqE,EAArE,EAAwE,EAAxE,EAA2E,EAA3E,EAA8E,CAA9E,EAAgF,EAAhF,EAAmF,CAAnF,EAAqF,CAArF,EAAuF,CAAvF,EAAyF,CAAzF,EAA2F,EAA3F,EAA8F,GAA9F,EAAkG,EAAlG,EAAqG,EAArG,EAAwG,CAAxG,EAA0G,EAA1G,EAA6G,CAA7G,EAA+G,EAA/G,EAAkH,CAAlH,EAAoH,EAApH,EAAuH,GAAvH,EAA2H,GAA3H,EAA+H,EAA/H,EAAkI,EAAlI,EAAqI,EAArI,EAAwI,CAAxI,EAA0I,GAA1I,EAA8I,CAA9I,EAAgJ,CAAhJ,EAAkJ,CAAlJ,EAAoJ,CAApJ,EAAsJ,EAAtJ,EAAyJ,CAAzJ,EAA2J,CAA3J,EAA6J,CAA7J,EAA+J,CAA/J,EAAiK,CAAjK,EAAmK,EAAnK,EAAsK,EAAtK,EAAyK,EAAzK,EAA4K,EAA5K,EAA+K,EAA/K,EAAkL,EAAlL,EAAqL,EAArL,EAAwL,CAAxL,EAA0L,CAA1L,EAA4L,EAA5L,EAA+L,EAA/L,EAAkM,EAAlM,EAAqM,EAArM,EAAwM,EAAxM,EAA2M,EAA3M,EAA8M,CAA9M,EAAgN,CAAhN,EAAkN,EAAlN,EAAqN,CAArN,EAAuN,EAAvN,EAA0N,CAA1N,EAA4N,CAA5N,EAA8N,CAA9N,EAAgO,CAAhO,EAAkO,EAAlO,EAAqO,EAArO,EAAwO,EAAxO,EAA2O,CAA3O,EAA6O,EAA7O,EAAgP,EAAhP,EAAmP,CAAnP,EAAqP,CAArP,EAAuP,EAAvP,EAA0P,EAA1P,EAA6P,EAA7P,EAAgQ,EAAhQ,EAAmQ,EAAnQ,EAAsQ,EAAtQ,EAAyQ,EAAzQ,EAA4Q,EAA5Q,EAA+Q,EAA/Q,EAAkR,GAAlR,EAAsR,EAAtR,EAAyR,EAAzR,EAA4R,EAA5R,EAA+R,EAA/R,EAAkS,EAAlS,EAAqS,EAArS,EAAwS,EAAxS,EAA2S,GAA3S,EAA+S,EAA/S,EAAkT,EAAlT,EAAqT,CAArT,EAAuT,CAAvT,EAAyT,EAAzT,EAA4T,GAA5T,EAAgU,EAAhU,EAAmU,EAAnU,EAAsU,EAAtU,EAAyU,EAAzU,EAA4U,EAA5U,EAA+U,EAA/U,EAAkV,EAAlV,EAAqV,EAArV,EAAwV,EAAxV,EAA2V,EAA3V,EAA8V,CAA9V,EAAgW,EAAhW,EAAmW,EAAnW,EAAsW,CAAtW,EAAwW,CAAxW,EAA0W,EAA1W,EAA6W,EAA7W,EAAgX,EAAhX,EAAmX,CAAnX,EAAqX,EAArX,EAAwX,CAAxX,EAA0X,CAA1X,EAA4X,CAA5X,EAA8X,EAA9X,EAAiY,EAAjY,EAAoY,CAApY,EAAsY,EAAtY,EAAyY,EAAzY,EAA4Y,CAA5Y,EAA8Y,CAA9Y,EAAgZ,CAAhZ,EAAkZ,CAAlZ,EAAoZ,CAApZ,EAAsZ,CAAtZ,EAAwZ,EAAxZ,EAA2Z,CAA3Z,EAA6Z,CAA7Z,EAA+Z,CAA/Z,EAAia,EAAja,EAAoa,EAApa,EAAua,CAAva,EAAya,CAAza,EAA2a,CAA3a,EAA6a,CAA7a,EAA+a,EAA/a,EAAkb,CAAlb,EAAob,CAApb,EAAsb,CAAtb,EAAwb,CAAxb,EAA0b,CAA1b,EAA4b,CAA5b,EAA8b,CAA9b,EAAgc,CAAhc,EAAkc,EAAlc,EAAqc,CAArc,EAAuc,EAAvc,EAA0c,CAA1c,EAA4c,GAA5c,EAAgd,EAAhd,EAAmd,EAAnd,EAAsd,CAAtd,EAAwd,EAAxd,EAA2d,CAA3d,EAA6d,EAA7d,EAAge,EAAhe,EAAme,EAAne,EAAse,CAAte,EAAwe,CAAxe,EAA0e,CAA1e,EAA4e,GAA5e,EAAgf,EAAhf,EAAmf,EAAnf,EAAsf,CAAtf,EAAwf,EAAxf,EAA2f,EAA3f,EAA8f,EAA9f,EAAigB,CAAjgB,EAAmgB,EAAngB,EAAsgB,EAAtgB,EAAygB,EAAzgB,EAA4gB,CAA5gB,EAA8gB,EAA9gB,EAAihB,EAAjhB,EAAohB,GAAphB,EAAwhB,EAAxhB,EAA2hB,GAA3hB,EAA+hB,EAA/hB,EAAkiB,EAAliB,EAAqiB,CAAriB,EAAuiB,GAAviB,EAA2iB,CAA3iB,EAA6iB,CAA7iB,EAA+iB,EAA/iB,EAAkjB,EAAljB,EAAqjB,CAArjB,EAAujB,CAAvjB,EAAyjB,CAAzjB,EAA2jB,EAA3jB,EAA8jB,CAA9jB,EAAgkB,EAAhkB,EAAmkB,EAAnkB,EAAskB,CAAtkB,EAAwkB,CAAxkB,EAA0kB,EAA1kB,EAA6kB,CAA7kB,EAA+kB,EAA/kB,EAAklB,EAAllB,EAAqlB,EAArlB,EAAwlB,CAAxlB,EAA0lB,EAA1lB,EAA6lB,EAA7lB,EAAgmB,GAAhmB,EAAomB,CAApmB,EAAsmB,CAAtmB,EAAwmB,EAAxmB,EAA2mB,EAA3mB,EAA8mB,CAA9mB,EAAgnB,EAAhnB,EAAmnB,EAAnnB,EAAsnB,GAAtnB,EAA0nB,CAA1nB,EAA4nB,CAA5nB,EAA8nB,CAA9nB,EAAgoB,CAAhoB,EAAkoB,EAAloB,EAAqoB,EAAroB,EAAwoB,CAAxoB,EAA0oB,EAA1oB,EAA6oB,CAA7oB,EAA+oB,CAA/oB,EAAipB,CAAjpB,EAAmpB,CAAnpB,EAAqpB,EAArpB,EAAwpB,EAAxpB,EAA2pB,CAA3pB,EAA6pB,GAA7pB,EAAiqB,EAAjqB,EAAoqB,GAApqB,EAAwqB,GAAxqB,EAA4qB,GAA5qB,EAAgrB,GAAhrB,EAAorB,EAAprB,EAAurB,GAAvrB,EAA2rB,IAA3rB,EAAgsB,IAAhsB,EAAqsB,IAArsB,EAA0sB,GAA1sB,EAA8sB,IAA9sB,EAAmtB,GAAntB,EAAutB,CAAvtB,EAAytB,EAAztB,EAA4tB,GAA5tB,EAAguB,EAAhuB,EAAmuB,EAAnuB,EAAsuB,EAAtuB,EAAyuB,EAAzuB,EAA4uB,CAA5uB,EAA8uB,EAA9uB,EAAivB,EAAjvB,EAAovB,CAApvB,EAAsvB,EAAtvB,EAAyvB,GAAzvB,EAA6vB,EAA7vB,EAAgwB,GAAhwB,EAAowB,EAApwB,EAAuwB,CAAvwB,EAAywB,CAAzwB,EAA2wB,EAA3wB,EAA8wB,EAA9wB,EAAixB,EAAjxB,EAAoxB,CAApxB,EAAsxB,CAAtxB,EAAwxB,CAAxxB,EAA0xB,EAA1xB,EAA6xB,IAA7xB,EAAkyB,CAAlyB,EAAoyB,GAApyB,EAAwyB,IAAxyB,EAA6yB,GAA7yB,EAAizB,EAAjzB,EAAozB,CAApzB,EAAszB,EAAtzB,EAAyzB,CAAzzB,EAA2zB,CAA3zB,EAA6zB,GAA7zB,EAAi0B,IAAj0B,EAAs0B,GAAt0B,EAA00B,CAA10B,EAA40B,EAA50B,EAA+0B,CAA/0B,EAAi1B,CAAj1B,EAAm1B,CAAn1B,EAAq1B,CAAr1B,EAAu1B,IAAv1B,EAA41B,EAA51B,EAA+1B,CAA/1B,EAAi2B,EAAj2B,EAAo2B,CAAp2B,EAAs2B,CAAt2B,EAAw2B,CAAx2B,EAA02B,CAA12B,EAA42B,CAA52B,EAA82B,CAA92B,EAAg3B,CAAh3B,EAAk3B,CAAl3B,EAAo3B,CAAp3B,EAAs3B,EAAt3B,EAAy3B,CAAz3B,EAA23B,CAA33B,EAA63B,CAA73B,EAA+3B,CAA/3B,EAAi4B,CAAj4B,EAAm4B,EAAn4B,EAAs4B,CAAt4B,EAAw4B,CAAx4B,EAA04B,CAA14B,EAA44B,CAA54B,EAA84B,CAA94B,EAAg5B,CAAh5B,EAAk5B,CAAl5B,EAAo5B,EAAp5B,EAAu5B,CAAv5B,EAAy5B,CAAz5B,EAA25B,CAA35B,EAA65B,CAA75B,EAA+5B,CAA/5B,EAAi6B,CAAj6B,EAAm6B,CAAn6B,EAAq6B,CAAr6B,EAAu6B,CAAv6B,EAAy6B,GAAz6B,EAA66B,CAA76B,EAA+6B,EAA/6B,EAAk7B,CAAl7B,EAAo7B,EAAp7B,EAAu7B,CAAv7B,EAAy7B,EAAz7B,EAA47B,CAA57B,EAA87B,EAA97B,EAAi8B,CAAj8B,EAAm8B,EAAn8B,EAAs8B,CAAt8B,EAAw8B,EAAx8B,EAA28B,CAA38B,EAA68B,EAA78B,EAAg9B,CAAh9B,EAAk9B,EAAl9B,EAAq9B,CAAr9B,EAAu9B,EAAv9B,EAA09B,CAA19B,EAA49B,EAA59B,EAA+9B,CAA/9B,EAAi+B,CAAj+B,EAAm+B,IAAn+B,EAAw+B,EAAx+B,EAA2+B,EAA3+B,EAA8+B,CAA9+B,EAAg/B,EAAh/B,EAAm/B,CAAn/B,EAAq/B,GAAr/B,EAAy/B,EAAz/B,EAA4/B,IAA5/B,EAAigC,GAAjgC,EAAqgC,EAArgC,EAAwgC,EAAxgC,EAA2gC,CAA3gC,EAA6gC,CAA7gC,EAA+gC,IAA/gC,EAAohC,CAAphC,EAAshC,CAAthC,EAAwhC,EAAxhC,EAA2hC,CAA3hC,EAA6hC,CAA7hC,EAA+hC,CAA/hC,EAAiiC,CAAjiC,EAAmiC,CAAniC,EAAqiC,CAAriC,EAAuiC,CAAviC,EAAyiC,CAAziC,EAA2iC,CAA3iC,EAA6iC,CAA7iC,EAA+iC,CAA/iC,EAAijC,CAAjjC,EAAmjC,CAAnjC,EAAqjC,CAArjC,EAAujC,CAAvjC,EAAyjC,CAAzjC,EAA2jC,CAA3jC,EAA6jC,CAA7jC,EAA+jC,CAA/jC,EAAikC,CAAjkC,EAAmkC,CAAnkC,EAAqkC,CAArkC,EAAukC,CAAvkC,EAAykC,CAAzkC,EAA2kC,CAA3kC,EAA6kC,CAA7kC,EAA+kC,CAA/kC,EAAilC,CAAjlC,EAAmlC,CAAnlC,EAAqlC,CAArlC,EAAulC,CAAvlC,EAAylC,CAAzlC,EAA2lC,CAA3lC,EAA6lC,CAA7lC,EAA+lC,CAA/lC,EAAimC,CAAjmC,EAAmmC,CAAnmC,EAAqmC,CAArmC,EAAumC,CAAvmC,EAAymC,CAAzmC,EAA2mC,CAA3mC,EAA6mC,CAA7mC,EAA+mC,CAA/mC,EAAinC,CAAjnC,EAAmnC,CAAnnC,EAAqnC,CAArnC,EAAunC,CAAvnC,EAAynC,CAAznC,EAA2nC,CAA3nC,EAA6nC,CAA7nC,EAA+nC,CAA/nC,EAAioC,CAAjoC,EAAmoC,CAAnoC,EAAqoC,CAAroC,EAAuoC,CAAvoC,EAAyoC,EAAzoC,EAA4oC,CAA5oC,EAA8oC,CAA9oC,EAAgpC,CAAhpC,EAAkpC,CAAlpC,EAAopC,CAAppC,EAAspC,EAAtpC,EAAypC,IAAzpC,EAA8pC,KAA9pC,EAAoqC,EAApqC,EAAuqC,IAAvqC,EAA4qC,EAA5qC,EAA+qC,GAA/qC,EAAmrC,CAAnrC,EAAqrC,IAArrC,EAA0rC,EAA1rC,EAA6rC,IAA7rC,EAAksC,IAAlsC,EAAusC,GAAvsC,CAAnC;AAEA,MAAMC,qBAAqB,GAAG,CAAC,GAAD,EAAK,CAAL,EAAO,GAAP,EAAW,CAAX,EAAa,GAAb,EAAiB,CAAjB,EAAmB,GAAnB,EAAuB,CAAvB,EAAyB,IAAzB,EAA8B,CAA9B,EAAgC,CAAhC,EAAkC,CAAlC,EAAoC,CAApC,EAAsC,CAAtC,EAAwC,EAAxC,EAA2C,CAA3C,EAA6C,CAA7C,EAA+C,CAA/C,EAAiD,GAAjD,EAAqD,CAArD,EAAuD,GAAvD,EAA2D,CAA3D,EAA6D,CAA7D,EAA+D,CAA/D,EAAiE,GAAjE,EAAqE,EAArE,EAAwE,GAAxE,EAA4E,CAA5E,EAA8E,EAA9E,EAAiF,EAAjF,EAAoF,EAApF,EAAuF,CAAvF,EAAyF,EAAzF,EAA4F,CAA5F,EAA8F,EAA9F,EAAiG,EAAjG,EAAoG,EAApG,EAAuG,CAAvG,EAAyG,CAAzG,EAA2G,CAA3G,EAA6G,EAA7G,EAAgH,EAAhH,EAAmH,CAAnH,EAAqH,CAArH,EAAuH,CAAvH,EAAyH,CAAzH,EAA2H,EAA3H,EAA8H,CAA9H,EAAgI,EAAhI,EAAmI,CAAnI,EAAqI,EAArI,EAAwI,EAAxI,EAA2I,CAA3I,EAA6I,CAA7I,EAA+I,CAA/I,EAAiJ,CAAjJ,EAAmJ,EAAnJ,EAAsJ,EAAtJ,EAAyJ,CAAzJ,EAA2J,CAA3J,EAA6J,GAA7J,EAAiK,EAAjK,EAAoK,CAApK,EAAsK,CAAtK,EAAwK,CAAxK,EAA0K,CAA1K,EAA4K,EAA5K,EAA+K,CAA/K,EAAiL,CAAjL,EAAmL,CAAnL,EAAqL,CAArL,EAAuL,CAAvL,EAAyL,CAAzL,EAA2L,CAA3L,EAA6L,EAA7L,EAAgM,CAAhM,EAAkM,EAAlM,EAAqM,CAArM,EAAuM,CAAvM,EAAyM,CAAzM,EAA2M,CAA3M,EAA6M,CAA7M,EAA+M,GAA/M,EAAmN,EAAnN,EAAsN,EAAtN,EAAyN,CAAzN,EAA2N,CAA3N,EAA6N,CAA7N,EAA+N,EAA/N,EAAkO,EAAlO,EAAqO,EAArO,EAAwO,CAAxO,EAA0O,GAA1O,EAA8O,CAA9O,EAAgP,CAAhP,EAAkP,CAAlP,EAAoP,EAApP,EAAuP,CAAvP,EAAyP,EAAzP,EAA4P,EAA5P,EAA+P,EAA/P,EAAkQ,CAAlQ,EAAoQ,EAApQ,EAAuQ,EAAvQ,EAA0Q,CAA1Q,EAA4Q,CAA5Q,EAA8Q,EAA9Q,EAAiR,EAAjR,EAAoR,CAApR,EAAsR,CAAtR,EAAwR,GAAxR,EAA4R,EAA5R,EAA+R,GAA/R,EAAmS,CAAnS,EAAqS,GAArS,EAAyS,CAAzS,EAA2S,CAA3S,EAA6S,CAA7S,EAA+S,CAA/S,EAAiT,CAAjT,EAAmT,EAAnT,EAAsT,CAAtT,EAAwT,EAAxT,EAA2T,CAA3T,EAA6T,CAA7T,EAA+T,CAA/T,EAAiU,CAAjU,EAAmU,CAAnU,EAAqU,EAArU,EAAwU,EAAxU,EAA2U,EAA3U,EAA8U,EAA9U,EAAiV,GAAjV,EAAqV,CAArV,EAAuV,CAAvV,EAAyV,CAAzV,EAA2V,EAA3V,EAA8V,CAA9V,EAAgW,EAAhW,EAAmW,EAAnW,EAAsW,CAAtW,EAAwW,EAAxW,EAA2W,GAA3W,EAA+W,CAA/W,EAAiX,CAAjX,EAAmX,CAAnX,EAAqX,CAArX,EAAuX,CAAvX,EAAyX,CAAzX,EAA2X,CAA3X,EAA6X,CAA7X,EAA+X,CAA/X,EAAiY,CAAjY,EAAmY,CAAnY,EAAqY,EAArY,EAAwY,CAAxY,EAA0Y,CAA1Y,EAA4Y,CAA5Y,EAA8Y,CAA9Y,EAAgZ,CAAhZ,EAAkZ,CAAlZ,EAAoZ,CAApZ,EAAsZ,GAAtZ,EAA0Z,CAA1Z,EAA4Z,KAA5Z,EAAka,CAAla,EAAoa,GAApa,EAAwa,CAAxa,EAA0a,EAA1a,EAA6a,CAA7a,EAA+a,EAA/a,EAAkb,CAAlb,EAAob,IAApb,EAAyb,CAAzb,EAA2b,CAA3b,EAA6b,EAA7b,EAAgc,CAAhc,EAAkc,CAAlc,EAAoc,KAApc,EAA0c,CAA1c,EAA4c,IAA5c,EAAid,CAAjd,EAAmd,CAAnd,EAAqd,CAArd,EAAud,CAAvd,EAAyd,CAAzd,EAA2d,CAA3d,EAA6d,CAA7d,EAA+d,EAA/d,EAAke,CAAle,EAAoe,GAApe,EAAwe,CAAxe,EAA0e,IAA1e,EAA+e,EAA/e,EAAkf,GAAlf,EAAsf,EAAtf,EAAyf,CAAzf,EAA2f,EAA3f,EAA8f,CAA9f,EAAggB,CAAhgB,EAAkgB,EAAlgB,EAAqgB,CAArgB,EAAugB,EAAvgB,EAA0gB,CAA1gB,EAA4gB,CAA5gB,EAA8gB,EAA9gB,EAAihB,IAAjhB,EAAshB,CAAthB,EAAwhB,CAAxhB,EAA0hB,EAA1hB,EAA6hB,CAA7hB,EAA+hB,CAA/hB,EAAiiB,CAAjiB,EAAmiB,CAAniB,EAAqiB,CAAriB,EAAuiB,CAAviB,EAAyiB,GAAziB,EAA6iB,CAA7iB,EAA+iB,EAA/iB,EAAkjB,CAAljB,EAAojB,GAApjB,EAAwjB,EAAxjB,EAA2jB,IAA3jB,EAAgkB,CAAhkB,EAAkkB,GAAlkB,EAAskB,CAAtkB,EAAwkB,CAAxkB,EAA0kB,CAA1kB,EAA4kB,MAA5kB,EAAmlB,GAAnlB,CAA9B;;AAKA,SAASC,aAAT,CAAuBrD,IAAvB,EAAqC/O,GAArC,EAA2E;MACrEqS,GAAG,GAAG,OAAV;;OACK,IAAIC,CAAC,GAAG,CAAR,EAAW3H,MAAM,GAAG3K,GAAG,CAAC2K,MAA7B,EAAqC2H,CAAC,GAAG3H,MAAzC,EAAiD2H,CAAC,IAAI,CAAtD,EAAyD;IACvDD,GAAG,IAAIrS,GAAG,CAACsS,CAAD,CAAV;QACID,GAAG,GAAGtD,IAAV,EAAgB,OAAO,KAAP;IAEhBsD,GAAG,IAAIrS,GAAG,CAACsS,CAAC,GAAG,CAAL,CAAV;QACID,GAAG,IAAItD,IAAX,EAAiB,OAAO,IAAP;;;SAEZ,KAAP;;;AAKF,AAAO,SAASwD,iBAAT,CAA2BxD,IAA3B,EAAkD;MACnDA,IAAI,KAAR,EAAiC,OAAOA,IAAI,OAAX;MAC7BA,IAAI,MAAR,EAAkC,OAAO,IAAP;MAC9BA,IAAI,KAAR,EAAiC,OAAOA,IAAI,OAAX;MAC7BA,IAAI,OAAR,EAAkC,OAAO,IAAP;;MAC9BA,IAAI,IAAI,MAAZ,EAAoB;WAEhBA,IAAI,IAAI,IAAR,IAAgBiD,uBAAuB,CAACrB,IAAxB,CAA6BrH,MAAM,CAACkJ,YAAP,CAAoBzD,IAApB,CAA7B,CADlB;;;SAIKqD,aAAa,CAACrD,IAAD,EAAOmD,0BAAP,CAApB;;AAKF,AAAO,SAASO,eAAT,CAAyBC,OAAzB,EAA0CC,IAA1C,EAAiE;SAC/DD,OAAO,OAAP,IAAgCC,IAAI,OAA3C;;AAKF,AAAO,SAASC,gBAAT,CAA0B7D,IAA1B,EAAiD;MAClDA,IAAI,KAAR,EAA6B,OAAOA,IAAI,OAAX;MACzBA,IAAI,KAAR,EAA4B,OAAO,IAAP;MACxBA,IAAI,KAAR,EAAiC,OAAO,KAAP;MAC7BA,IAAI,MAAR,EAAkC,OAAO,IAAP;MAC9BA,IAAI,KAAR,EAAiC,OAAOA,IAAI,OAAX;MAC7BA,IAAI,OAAR,EAAkC,OAAO,IAAP;;MAC9BA,IAAI,IAAI,MAAZ,EAAoB;WACXA,IAAI,IAAI,IAAR,IAAgBkD,kBAAkB,CAACtB,IAAnB,CAAwBrH,MAAM,CAACkJ,YAAP,CAAoBzD,IAApB,CAAxB,CAAvB;;;SAGAqD,aAAa,CAACrD,IAAD,EAAOmD,0BAAP,CAAb,IACAE,aAAa,CAACrD,IAAD,EAAOoD,qBAAP,CAFf;;;AC5HF,MAAMU,aAAa,GAAG,IAAI1B,GAAJ,CAAQ,CAC5B,GAD4B,EAE5B,KAF4B,EAG5B,MAH4B,EAI5B,SAJ4B,EAK5B,OAL4B,EAM5B,SAN4B,EAO5B,OAP4B,EAQ5B,WAR4B,EAS5B,OAT4B,EAU5B,MAV4B,EAW5B,QAX4B,EAY5B,QAZ4B,EAa5B,QAb4B,EAc5B,MAd4B,EAe5B,QAf4B,EAgB5B,MAhB4B,CAAR,CAAtB;;AAmBA,SAAS2B,cAAT,CAAwBC,WAAxB,EAAsD;SAElDA,WAAW,CAACxK,IAAZ,KAAqB,6BAArB,IACCwK,WAAW,CAACxK,IAAZ,KAAqB,0BAArB,KACE,CAACwK,WAAW,CAACC,WAAb,IACED,WAAW,CAACC,WAAZ,CAAwBzK,IAAxB,KAAiC,WAAjC,IACCwK,WAAW,CAACC,WAAZ,CAAwBzK,IAAxB,KAAiC,sBAHtC,CAFH;;;AASF,SAAS0K,iBAAT,CAA2B3K,IAA3B,EAAkD;SACzCA,IAAI,CAAC4K,UAAL,KAAoB,MAApB,IAA8B5K,IAAI,CAAC4K,UAAL,KAAoB,QAAzD;;;AAGF,SAASC,oBAAT,CAA8BlG,KAA9B,EAAqD;SAEjD,CAACA,KAAK,CAAC1E,IAAN,KAAe2E,KAAE,CAACrN,IAAlB,IAA0B,CAAC,CAACoN,KAAK,CAAC1E,IAAN,CAAWjJ,OAAxC,KAAoD2N,KAAK,CAAC9D,KAAN,KAAgB,MADtE;;;AAKF,MAAMiK,iBAAiB,GAAG;EACxBC,KAAK,EAAE,oBADiB;EAExBC,GAAG,EAAE,oBAFmB;EAGxB/K,IAAI,EAAE,aAHkB;EAIxBgL,SAAS,EAAE;CAJb;;AAQA,SAASC,SAAT,CACEC,IADF,EAEE9C,IAFF,EAGc;QACN+C,KAAK,GAAG,EAAd;QACMC,KAAK,GAAG,EAAd;;OACK,IAAIrB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmB,IAAI,CAAC9I,MAAzB,EAAiC2H,CAAC,EAAlC,EAAsC;KACnC3B,IAAI,CAAC8C,IAAI,CAACnB,CAAD,CAAL,EAAUA,CAAV,EAAamB,IAAb,CAAJ,GAAyBC,KAAzB,GAAiCC,KAAlC,EAAyC5G,IAAzC,CAA8C0G,IAAI,CAACnB,CAAD,CAAlD;;;SAEK,CAACoB,KAAD,EAAQC,KAAR,CAAP;;;AAGF,MAAMC,iBAAiB,GAAG,wBAA1B;AAgBA,YAAgBlL,UAAD,IACb,cAAcA,UAAd,CAAyB;EAMvBvJ,WAAW,CAACW,OAAD,EAAoB8Q,KAApB,EAAmC;UACtC9Q,OAAN,EAAe8Q,KAAf;SACKiD,UAAL,GAAkBC,SAAlB;;;EAGFC,gBAAgB,GAAY;WACnB,KAAKC,eAAL,CAAqB,MAArB,EAA6B,KAA7B,KAAuC,KAAKH,UAAL,KAAoB,MAAlE;;;EAGFI,gBAAgB,GAAY;WACnB,CAAC,CAAC,KAAKD,eAAL,CAAqB,MAArB,EAA6B,OAA7B,CAAT;;;EAGFE,WAAW,CAAC3L,IAAD,EAAkB4L,GAAlB,EAAkC;QAEzC5L,IAAI,KAAK2E,KAAE,CAAC5M,MAAZ,IACAiI,IAAI,KAAK2E,KAAE,CAACjM,IADZ,IAEAsH,IAAI,KAAK2E,KAAE,CAACpL,oBAHd,EAIE;UACI,KAAK+R,UAAL,KAAoBC,SAAxB,EAAmC;aAC5BD,UAAL,GAAkB,IAAlB;;;;WAGG,MAAMK,WAAN,CAAkB3L,IAAlB,EAAwB4L,GAAxB,CAAP;;;EAGFC,UAAU,CAACC,OAAD,EAA2B;QAC/B,KAAKR,UAAL,KAAoBC,SAAxB,EAAmC;YAE3BQ,OAAO,GAAGV,iBAAiB,CAACW,IAAlB,CAAuBF,OAAO,CAAClL,KAA/B,CAAhB;;UACI,CAACmL,OAAL,EAAc,CAAd,MAEO,IAAIA,OAAO,CAAC,CAAD,CAAP,KAAe,MAAnB,EAA2B;aAC3BT,UAAL,GAAkB,MAAlB;OADK,MAEA,IAAIS,OAAO,CAAC,CAAD,CAAP,KAAe,QAAnB,EAA6B;aAC7BT,UAAL,GAAkB,QAAlB;OADK,MAEA;cACC,IAAIW,KAAJ,CAAU,wBAAV,CAAN;;;;WAGG,MAAMJ,UAAN,CAAiBC,OAAjB,CAAP;;;EAGFI,wBAAwB,CAACC,GAAD,EAA8B;UAC9CC,SAAS,GAAG,KAAK1H,KAAL,CAAW2H,MAA7B;SACK3H,KAAL,CAAW2H,MAAX,GAAoB,IAApB;SACKC,MAAL,CAAYH,GAAG,IAAIxH,KAAE,CAAChM,KAAtB;UAEMqH,IAAI,GAAG,KAAKuM,aAAL,EAAb;SACK7H,KAAL,CAAW2H,MAAX,GAAoBD,SAApB;WACOpM,IAAP;;;EAGFwM,kBAAkB,GAAe;UACzBzM,IAAI,GAAG,KAAKqF,SAAL,EAAb;UACMqH,SAAS,GAAG,KAAK/H,KAAL,CAAWG,QAA7B;UACM6H,SAAS,GAAG,KAAKhI,KAAL,CAAWpD,KAA7B;SACKgL,MAAL,CAAY3H,KAAE,CAACnK,MAAf;UACMmS,SAAS,GAAG,KAAKjI,KAAL,CAAWG,QAA7B;SACK+H,gBAAL,CAAsB,QAAtB;;QAGEH,SAAS,CAACI,IAAV,KAAmBF,SAAS,CAACE,IAA7B,IACAJ,SAAS,CAACK,MAAV,KAAqBH,SAAS,CAACG,MAAV,GAAmB,CAF1C,EAGE;WACKzK,KAAL,CACEqK,SADF,EAEE,uDAFF;;;QAKE,KAAKK,GAAL,CAASpI,KAAE,CAACpM,MAAZ,CAAJ,EAAyB;MACvBwH,IAAI,CAACa,KAAL,GAAa,KAAKoM,eAAL,EAAb;WACKV,MAAL,CAAY3H,KAAE,CAACnM,MAAf;aACO,KAAK6M,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;KAHF,MAIO;aACE,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;;;;EAIJkN,oCAAoC,GAAoC;UAChEb,SAAS,GAAG,KAAK1H,KAAL,CAAW2H,MAA7B;SACK3H,KAAL,CAAW2H,MAAX,GAAoB,IAApB;SACKC,MAAL,CAAY3H,KAAE,CAAChM,KAAf;QACIqH,IAAI,GAAG,IAAX;QACIkN,SAAS,GAAG,IAAhB;;QACI,KAAKC,KAAL,CAAWxI,KAAE,CAACnK,MAAd,CAAJ,EAA2B;WACpBkK,KAAL,CAAW2H,MAAX,GAAoBD,SAApB;MACAc,SAAS,GAAG,KAAKV,kBAAL,EAAZ;KAFF,MAGO;MACLxM,IAAI,GAAG,KAAKuM,aAAL,EAAP;WACK7H,KAAL,CAAW2H,MAAX,GAAoBD,SAApB;;UACI,KAAKe,KAAL,CAAWxI,KAAE,CAACnK,MAAd,CAAJ,EAA2B;QACzB0S,SAAS,GAAG,KAAKV,kBAAL,EAAZ;;;;WAGG,CAACxM,IAAD,EAAOkN,SAAP,CAAP;;;EAGFE,qBAAqB,CAACrN,IAAD,EAA+C;SAC7DqK,IAAL;SACKiD,qBAAL,CAA2BtN,IAA3B,EAA6C,IAA7C;WACO,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,cAAtB,CAAP;;;EAGFuN,wBAAwB,CACtBvN,IADsB,EAEC;SAClBqK,IAAL;UAEMmD,EAAE,GAAIxN,IAAI,CAACwN,EAAL,GAAU,KAAKC,eAAL,EAAtB;UAEMC,QAAQ,GAAG,KAAKrI,SAAL,EAAjB;UACMsI,aAAa,GAAG,KAAKtI,SAAL,EAAtB;;QAEI,KAAKuI,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;MAC1BF,QAAQ,CAAClJ,cAAT,GAA0B,KAAKqJ,iCAAL,EAA1B;KADF,MAEO;MACLH,QAAQ,CAAClJ,cAAT,GAA0B,IAA1B;;;SAGG+H,MAAL,CAAY3H,KAAE,CAACpM,MAAf;UACMsV,GAAG,GAAG,KAAKC,2BAAL,EAAZ;IACAL,QAAQ,CAACtL,MAAT,GAAkB0L,GAAG,CAAC1L,MAAtB;IACAsL,QAAQ,CAACM,IAAT,GAAgBF,GAAG,CAACE,IAApB;SACKzB,MAAL,CAAY3H,KAAE,CAACnM,MAAf;KAIEiV,QAAQ,CAACO,UAFX,EAIEjO,IAAI,CAACmN,SAJP,IAKI,KAAKD,oCAAL,EALJ;IAOAS,aAAa,CAACO,cAAd,GAA+B,KAAK5I,UAAL,CAC7BoI,QAD6B,EAE7B,wBAF6B,CAA/B;IAKAF,EAAE,CAACU,cAAH,GAAoB,KAAK5I,UAAL,CAAgBqI,aAAhB,EAA+B,gBAA/B,CAApB;SAEKQ,gBAAL,CAAsBX,EAAtB;SACKY,SAAL;WAEO,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;;;EAGFqO,gBAAgB,CACdrO,IADc,EAEdsO,YAFc,EAGC;QACX,KAAKlB,KAAL,CAAWxI,KAAE,CAACxI,MAAd,CAAJ,EAA2B;aAClB,KAAKiR,qBAAL,CAA2BrN,IAA3B,CAAP;KADF,MAEO,IAAI,KAAKoN,KAAL,CAAWxI,KAAE,CAACrJ,SAAd,CAAJ,EAA8B;aAC5B,KAAKgS,wBAAL,CAA8BvN,IAA9B,CAAP;KADK,MAEA,IAAI,KAAKoN,KAAL,CAAWxI,KAAE,CAAC/I,IAAd,CAAJ,EAAyB;aACvB,KAAK0S,wBAAL,CAA8BvO,IAA9B,CAAP;KADK,MAEA,IAAI,KAAKwO,aAAL,CAAmB,QAAnB,CAAJ,EAAkC;UACnC,KAAKpB,KAAL,CAAWxI,KAAE,CAAC9L,GAAd,CAAJ,EAAwB;eACf,KAAK2V,6BAAL,CAAmCzO,IAAnC,CAAP;OADF,MAEO;YACDsO,YAAJ,EAAkB;eACXhM,KAAL,CACE,KAAKqC,KAAL,CAAW+J,YADb,EAEE,iEAFF;;;eAKK,KAAKC,sBAAL,CAA4B3O,IAA5B,CAAP;;KAVG,MAYA,IAAI,KAAK4O,YAAL,CAAkB,MAAlB,CAAJ,EAA+B;aAC7B,KAAKC,yBAAL,CAA+B7O,IAA/B,CAAP;KADK,MAEA,IAAI,KAAK4O,YAAL,CAAkB,QAAlB,CAAJ,EAAiC;aAC/B,KAAKE,0BAAL,CAAgC9O,IAAhC,CAAP;KADK,MAEA,IAAI,KAAK4O,YAAL,CAAkB,WAAlB,CAAJ,EAAoC;aAClC,KAAKG,yBAAL,CAA+B/O,IAA/B,CAAP;KADK,MAEA,IAAI,KAAKoN,KAAL,CAAWxI,KAAE,CAACtI,OAAd,CAAJ,EAA4B;aAC1B,KAAK0S,iCAAL,CAAuChP,IAAvC,EAA6CsO,YAA7C,CAAP;KADK,MAEA;YACC,KAAKW,UAAL,EAAN;;;;EAIJV,wBAAwB,CACtBvO,IADsB,EAEC;SAClBqK,IAAL;IACArK,IAAI,CAACwN,EAAL,GAAU,KAAK0B,kCAAL,CACmB,IADnB,CAAV;SAGKlH,KAAL,CAAWmH,WAAX,CAAuBnP,IAAI,CAACwN,EAAL,CAAQjW,IAA/B,EAAqCqH,QAArC,EAA+CoB,IAAI,CAACwN,EAAL,CAAQjM,KAAvD;SACK6M,SAAL;WACO,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;;;EAGF2O,sBAAsB,CAAC3O,IAAD,EAAiD;SAChEgI,KAAL,CAAWoH,KAAX,CAAiBpS,WAAjB;;QAEI,KAAKoQ,KAAL,CAAWxI,KAAE,CAAC5M,MAAd,CAAJ,EAA2B;MACzBgI,IAAI,CAACwN,EAAL,GAAU,KAAK9I,aAAL,EAAV;KADF,MAEO;MACL1E,IAAI,CAACwN,EAAL,GAAU,KAAKC,eAAL,EAAV;;;UAGI4B,QAAQ,GAAIrP,IAAI,CAACiE,IAAL,GAAY,KAAKoB,SAAL,EAA9B;UACMpB,IAAI,GAAIoL,QAAQ,CAACpL,IAAT,GAAgB,EAA9B;SACKsI,MAAL,CAAY3H,KAAE,CAACxM,MAAf;;WACO,CAAC,KAAKgV,KAAL,CAAWxI,KAAE,CAACtM,MAAd,CAAR,EAA+B;UACzB+W,QAAQ,GAAG,KAAKhK,SAAL,EAAf;;UAEI,KAAK+H,KAAL,CAAWxI,KAAE,CAACrI,OAAd,CAAJ,EAA4B;aACrB8N,IAAL;;YACI,CAAC,KAAKuE,YAAL,CAAkB,MAAlB,CAAD,IAA8B,CAAC,KAAKxB,KAAL,CAAWxI,KAAE,CAAC/H,OAAd,CAAnC,EAA2D;eACpDyF,KAAL,CACE,KAAKqC,KAAL,CAAW+J,YADb,EAEE,wFAFF;;;aAKGY,WAAL,CAAiBD,QAAjB;OARF,MASO;aACAxC,gBAAL,CACE,SADF,EAEE,kEAFF;QAKAwC,QAAQ,GAAG,KAAKhB,gBAAL,CAAsBgB,QAAtB,EAAgC,IAAhC,CAAX;;;MAGFpL,IAAI,CAACQ,IAAL,CAAU4K,QAAV;;;SAGGrH,KAAL,CAAWuH,IAAX;SAEKhD,MAAL,CAAY3H,KAAE,CAACtM,MAAf;SAEKgN,UAAL,CAAgB+J,QAAhB,EAA0B,gBAA1B;QAEInP,IAAI,GAAG,IAAX;QACIsP,eAAe,GAAG,KAAtB;UACMC,YAAY,GAChB,kFACA,0FAFF;IAGAxL,IAAI,CAACnB,OAAL,CAAa2H,WAAW,IAAI;UACtBD,cAAc,CAACC,WAAD,CAAlB,EAAiC;YAC3BvK,IAAI,KAAK,UAAb,EAAyB;eAClBoC,KAAL,CAAWmI,WAAW,CAAClJ,KAAvB,EAA8BkO,YAA9B;;;QAEFvP,IAAI,GAAG,IAAP;OAJF,MAKO,IAAIuK,WAAW,CAACxK,IAAZ,KAAqB,sBAAzB,EAAiD;YAClDuP,eAAJ,EAAqB;eACdlN,KAAL,CACEmI,WAAW,CAAClJ,KADd,EAEE,8CAFF;;;YAKErB,IAAI,KAAK,IAAb,EAAmB,KAAKoC,KAAL,CAAWmI,WAAW,CAAClJ,KAAvB,EAA8BkO,YAA9B;QACnBvP,IAAI,GAAG,UAAP;QACAsP,eAAe,GAAG,IAAlB;;KAfJ;IAmBAxP,IAAI,CAACE,IAAL,GAAYA,IAAI,IAAI,UAApB;WACO,KAAKoF,UAAL,CAAgBtF,IAAhB,EAAsB,eAAtB,CAAP;;;EAGFgP,iCAAiC,CAC/BhP,IAD+B,EAE/BsO,YAF+B,EAGC;SAC3B/B,MAAL,CAAY3H,KAAE,CAACtI,OAAf;;QAEI,KAAK0Q,GAAL,CAASpI,KAAE,CAAC1J,QAAZ,CAAJ,EAA2B;UACrB,KAAKkS,KAAL,CAAWxI,KAAE,CAACrJ,SAAd,KAA4B,KAAK6R,KAAL,CAAWxI,KAAE,CAACxI,MAAd,CAAhC,EAAuD;QAGrD4D,IAAI,CAAC0K,WAAL,GAAmB,KAAK2D,gBAAL,CAAsB,KAAKhJ,SAAL,EAAtB,CAAnB;OAHF,MAIO;QAELrF,IAAI,CAAC0K,WAAL,GAAmB,KAAK8B,aAAL,EAAnB;aACK4B,SAAL;;;MAEFpO,IAAI,CAAC0P,OAAL,GAAe,IAAf;aAEO,KAAKpK,UAAL,CAAgBtF,IAAhB,EAAsB,0BAAtB,CAAP;KAZF,MAaO;UAEH,KAAKoN,KAAL,CAAWxI,KAAE,CAAC9I,MAAd,KACA,KAAK6T,KAAL,EADA,IAEC,CAAC,KAAKf,YAAL,CAAkB,MAAlB,KAA6B,KAAKA,YAAL,CAAkB,WAAlB,CAA9B,KACC,CAACN,YAJL,EAKE;cACMxX,KAAK,GAAG,KAAK6N,KAAL,CAAW9D,KAAzB;cACM+O,UAAU,GAAG9E,iBAAiB,CAAChU,KAAD,CAApC;aACKmY,UAAL,CACE,KAAKtK,KAAL,CAAWpD,KADb,EAEG,oBAAmBzK,KAAM,8BAA6B8Y,UAAW,YAFpE;;;UAOA,KAAKxC,KAAL,CAAWxI,KAAE,CAAC/I,IAAd,KACA,KAAKuR,KAAL,CAAWxI,KAAE,CAACrJ,SAAd,CADA,IAEA,KAAK6R,KAAL,CAAWxI,KAAE,CAACxI,MAAd,CAFA,IAGA,KAAKwS,YAAL,CAAkB,QAAlB,CAJF,EAKE;UACA5O,IAAI,CAAC0K,WAAL,GAAmB,KAAK2D,gBAAL,CAAsB,KAAKhJ,SAAL,EAAtB,CAAnB;UACArF,IAAI,CAAC0P,OAAL,GAAe,KAAf;iBAEO,KAAKpK,UAAL,CAAgBtF,IAAhB,EAAsB,0BAAtB,CAAP;SATF,MAUO,IACL,KAAKoN,KAAL,CAAWxI,KAAE,CAAClK,IAAd,KACA,KAAK0S,KAAL,CAAWxI,KAAE,CAACxM,MAAd,CADA,IAEA,KAAKwW,YAAL,CAAkB,WAAlB,CAFA,IAGA,KAAKA,YAAL,CAAkB,MAAlB,CAHA,IAIA,KAAKA,YAAL,CAAkB,QAAlB,CALK,EAML;UACA5O,IAAI,GAAG,KAAK6P,WAAL,CAAiB7P,IAAjB,CAAP;;cACIA,IAAI,CAACC,IAAL,KAAc,wBAAlB,EAA4C;YAG1CD,IAAI,CAACC,IAAL,GAAY,mBAAZ;YAEAD,IAAI,CAAC0P,OAAL,GAAe,KAAf;mBACO1P,IAAI,CAAC8P,UAAZ;;;UAIF9P,IAAI,CAACC,IAAL,GAAY,YAAYD,IAAI,CAACC,IAA7B;iBAEOD,IAAP;;;;UAIE,KAAKiP,UAAL,EAAN;;;EAGFR,6BAA6B,CAC3BzO,IAD2B,EAEC;SACvBqK,IAAL;SACKwC,gBAAL,CAAsB,SAAtB;IACA7M,IAAI,CAACkO,cAAL,GAAsB,KAAK6B,uBAAL,EAAtB;SACK3B,SAAL;WAEO,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,sBAAtB,CAAP;;;EAGF6O,yBAAyB,CACvB7O,IADuB,EAEC;SACnBqK,IAAL;SACK2F,kBAAL,CAAwBhQ,IAAxB;IAEAA,IAAI,CAACC,IAAL,GAAY,kBAAZ;WACOD,IAAP;;;EAGF8O,0BAA0B,CACxB9O,IADwB,EAEC;SACpBqK,IAAL;SACK4F,mBAAL,CAAyBjQ,IAAzB,EAA+B,IAA/B;IAEAA,IAAI,CAACC,IAAL,GAAY,mBAAZ;WACOD,IAAP;;;EAGF+O,yBAAyB,CACvB/O,IADuB,EAEC;SACnBqK,IAAL;SACKiD,qBAAL,CAA2BtN,IAA3B;WACO,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,kBAAtB,CAAP;;;EAKFsN,qBAAqB,CACnBtN,IADmB,EAEnBkQ,OAAiB,GAAG,KAFD,EAGb;IACNlQ,IAAI,CAACwN,EAAL,GAAU,KAAK2C,6BAAL,CACM,CAACD,OADP,EAEU,IAFV,CAAV;SAKKlI,KAAL,CAAWmH,WAAX,CACEnP,IAAI,CAACwN,EAAL,CAAQjW,IADV,EAEE2Y,OAAO,GAAGrR,aAAH,GAAmBF,YAF5B,EAGEqB,IAAI,CAACwN,EAAL,CAAQjM,KAHV;;QAMI,KAAKqM,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;MAC1B5N,IAAI,CAACwE,cAAL,GAAsB,KAAKqJ,iCAAL,EAAtB;KADF,MAEO;MACL7N,IAAI,CAACwE,cAAL,GAAsB,IAAtB;;;IAGFxE,IAAI,CAACoQ,OAAL,GAAe,EAAf;IACApQ,IAAI,CAACqQ,UAAL,GAAkB,EAAlB;IACArQ,IAAI,CAACsQ,MAAL,GAAc,EAAd;;QAEI,KAAKtD,GAAL,CAASpI,KAAE,CAACvI,QAAZ,CAAJ,EAA2B;SACtB;QACD2D,IAAI,CAACoQ,OAAL,CAAa3L,IAAb,CAAkB,KAAK8L,yBAAL,EAAlB;OADF,QAES,CAACL,OAAD,IAAY,KAAKlD,GAAL,CAASpI,KAAE,CAAClM,KAAZ,CAFrB;;;QAKE,KAAKkW,YAAL,CAAkB,QAAlB,CAAJ,EAAiC;WAC1BvE,IAAL;;SACG;QACDrK,IAAI,CAACsQ,MAAL,CAAY7L,IAAZ,CAAiB,KAAK8L,yBAAL,EAAjB;OADF,QAES,KAAKvD,GAAL,CAASpI,KAAE,CAAClM,KAAZ,CAFT;;;QAKE,KAAKkW,YAAL,CAAkB,YAAlB,CAAJ,EAAqC;WAC9BvE,IAAL;;SACG;QACDrK,IAAI,CAACqQ,UAAL,CAAgB5L,IAAhB,CAAqB,KAAK8L,yBAAL,EAArB;OADF,QAES,KAAKvD,GAAL,CAASpI,KAAE,CAAClM,KAAZ,CAFT;;;IAKFsH,IAAI,CAACiE,IAAL,GAAY,KAAKuM,mBAAL,CAAyB;MACnCC,WAAW,EAAEP,OADsB;MAEnCQ,UAAU,EAAE,KAFuB;MAGnCC,WAAW,EAAE,KAHsB;MAInCC,UAAU,EAAEV,OAJuB;MAKnCW,YAAY,EAAE;KALJ,CAAZ;;;EASFN,yBAAyB,GAA2B;UAC5CvQ,IAAI,GAAG,KAAKqF,SAAL,EAAb;IAEArF,IAAI,CAACwN,EAAL,GAAU,KAAKsD,gCAAL,EAAV;;QACI,KAAKlD,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;MAC1B5N,IAAI,CAACwE,cAAL,GAAsB,KAAKuM,mCAAL,EAAtB;KADF,MAEO;MACL/Q,IAAI,CAACwE,cAAL,GAAsB,IAAtB;;;WAGK,KAAKc,UAAL,CAAgBtF,IAAhB,EAAsB,kBAAtB,CAAP;;;EAGFgR,kBAAkB,CAAChR,IAAD,EAAyC;SACpDsN,qBAAL,CAA2BtN,IAA3B;WACO,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,sBAAtB,CAAP;;;EAGFiR,kBAAkB,CAACjI,IAAD,EAAe;QAC3BA,IAAI,KAAK,GAAb,EAAkB;WACX1G,KAAL,CACE,KAAKqC,KAAL,CAAWpD,KADb,EAEE,uDAFF;;;;EAOJ2P,iBAAiB,CAAClI,IAAD,EAAelE,QAAf,EAAiC4F,WAAjC,EAAwD;QACnE,CAACH,aAAa,CAACpB,GAAd,CAAkBH,IAAlB,CAAL,EAA8B;;QAE1B0B,WAAJ,EAAiB;WACVpI,KAAL,CAAWwC,QAAX,EAAsB,kCAAiCkE,IAAK,EAA5D;;;;SAIG1G,KAAL,CAAWwC,QAAX,EAAsB,4BAA2BkE,IAAK,EAAtD;;;EAGFmH,6BAA6B,CAC3BgB,OAD2B,EAE3BzG,WAF2B,EAGb;SACTwG,iBAAL,CAAuB,KAAKvM,KAAL,CAAW9D,KAAlC,EAAyC,KAAK8D,KAAL,CAAWpD,KAApD,EAA2DmJ,WAA3D;WACO,KAAK+C,eAAL,CAAqB0D,OAArB,CAAP;;;EAKFnB,kBAAkB,CAAChQ,IAAD,EAAyC;IACzDA,IAAI,CAACwN,EAAL,GAAU,KAAK2C,6BAAL,CACM,KADN,EAEU,IAFV,CAAV;SAIKnI,KAAL,CAAWmH,WAAX,CAAuBnP,IAAI,CAACwN,EAAL,CAAQjW,IAA/B,EAAqCoH,YAArC,EAAmDqB,IAAI,CAACwN,EAAL,CAAQjM,KAA3D;;QAEI,KAAKqM,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;MAC1B5N,IAAI,CAACwE,cAAL,GAAsB,KAAKqJ,iCAAL,EAAtB;KADF,MAEO;MACL7N,IAAI,CAACwE,cAAL,GAAsB,IAAtB;;;IAGFxE,IAAI,CAACoR,KAAL,GAAa,KAAKjF,wBAAL,CAA8BvH,KAAE,CAACnL,EAAjC,CAAb;SACK2U,SAAL;WAEO,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,WAAtB,CAAP;;;EAGFiQ,mBAAmB,CACjBjQ,IADiB,EAEjBqR,OAFiB,EAGC;SACbxE,gBAAL,CAAsB,MAAtB;IACA7M,IAAI,CAACwN,EAAL,GAAU,KAAK2C,6BAAL,CACM,IADN,EAEU,IAFV,CAAV;SAIKnI,KAAL,CAAWmH,WAAX,CAAuBnP,IAAI,CAACwN,EAAL,CAAQjW,IAA/B,EAAqCoH,YAArC,EAAmDqB,IAAI,CAACwN,EAAL,CAAQjM,KAA3D;;QAEI,KAAKqM,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;MAC1B5N,IAAI,CAACwE,cAAL,GAAsB,KAAKqJ,iCAAL,EAAtB;KADF,MAEO;MACL7N,IAAI,CAACwE,cAAL,GAAsB,IAAtB;;;IAIFxE,IAAI,CAACsR,SAAL,GAAiB,IAAjB;;QACI,KAAKlE,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAJ,EAA0B;MACxBoH,IAAI,CAACsR,SAAL,GAAiB,KAAKnF,wBAAL,CAA8BvH,KAAE,CAAChM,KAAjC,CAAjB;;;IAGFoH,IAAI,CAACuR,QAAL,GAAgB,IAAhB;;QACI,CAACF,OAAL,EAAc;MACZrR,IAAI,CAACuR,QAAL,GAAgB,KAAKpF,wBAAL,CAA8BvH,KAAE,CAACnL,EAAjC,CAAhB;;;SAEG2U,SAAL;WAEO,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,YAAtB,CAAP;;;EAKFwR,sBAAsB,CAACC,cAAwB,GAAG,KAA5B,EAAoD;UAClEC,SAAS,GAAG,KAAK/M,KAAL,CAAWpD,KAA7B;UAEMvB,IAAI,GAAG,KAAKqF,SAAL,EAAb;UAEMsM,QAAQ,GAAG,KAAKC,iBAAL,EAAjB;UAEMC,KAAK,GAAG,KAAK3C,kCAAL,EAAd;IACAlP,IAAI,CAACzI,IAAL,GAAYsa,KAAK,CAACta,IAAlB;IACAyI,IAAI,CAAC2R,QAAL,GAAgBA,QAAhB;IACA3R,IAAI,CAAC8R,KAAL,GAAaD,KAAK,CAAC3D,cAAnB;;QAEI,KAAKd,KAAL,CAAWxI,KAAE,CAACnL,EAAd,CAAJ,EAAuB;WAChBuT,GAAL,CAASpI,KAAE,CAACnL,EAAZ;MACAuG,IAAI,CAAC0P,OAAL,GAAe,KAAKlD,aAAL,EAAf;KAFF,MAGO;UACDiF,cAAJ,EAAoB;aACbnP,KAAL,CACEoP,SADF,EAGE,yGAHF;;;;WAQG,KAAKpM,UAAL,CAAgBtF,IAAhB,EAAsB,eAAtB,CAAP;;;EAGF6N,iCAAiC,GAA+B;UACxDxB,SAAS,GAAG,KAAK1H,KAAL,CAAW2H,MAA7B;UACMtM,IAAI,GAAG,KAAKqF,SAAL,EAAb;IACArF,IAAI,CAACoC,MAAL,GAAc,EAAd;SAEKuC,KAAL,CAAW2H,MAAX,GAAoB,IAApB;;QAGI,KAAKsB,YAAL,CAAkB,GAAlB,KAA0B,KAAKR,KAAL,CAAWxI,KAAE,CAACmN,WAAd,CAA9B,EAA0D;WACnD1H,IAAL;KADF,MAEO;WACA4E,UAAL;;;QAGE+C,eAAe,GAAG,KAAtB;;OAEG;YACKC,aAAa,GAAG,KAAKT,sBAAL,CAA4BQ,eAA5B,CAAtB;MAEAhS,IAAI,CAACoC,MAAL,CAAYqC,IAAZ,CAAiBwN,aAAjB;;UAEIA,aAAa,CAACvC,OAAlB,EAA2B;QACzBsC,eAAe,GAAG,IAAlB;;;UAGE,CAAC,KAAKpE,YAAL,CAAkB,GAAlB,CAAL,EAA6B;aACtBrB,MAAL,CAAY3H,KAAE,CAAClM,KAAf;;KAVJ,QAYS,CAAC,KAAKkV,YAAL,CAAkB,GAAlB,CAZV;;SAaKsE,gBAAL,CAAsB,GAAtB;SAEKvN,KAAL,CAAW2H,MAAX,GAAoBD,SAApB;WAEO,KAAK/G,UAAL,CAAgBtF,IAAhB,EAAsB,0BAAtB,CAAP;;;EAGF+Q,mCAAmC,GAAiC;UAC5D/Q,IAAI,GAAG,KAAKqF,SAAL,EAAb;UACMgH,SAAS,GAAG,KAAK1H,KAAL,CAAW2H,MAA7B;IACAtM,IAAI,CAACoC,MAAL,GAAc,EAAd;SAEKuC,KAAL,CAAW2H,MAAX,GAAoB,IAApB;SAEK4F,gBAAL,CAAsB,GAAtB;UACMC,qBAAqB,GAAG,KAAKxN,KAAL,CAAWyN,kBAAzC;SACKzN,KAAL,CAAWyN,kBAAX,GAAgC,KAAhC;;WACO,CAAC,KAAKxE,YAAL,CAAkB,GAAlB,CAAR,EAAgC;MAC9B5N,IAAI,CAACoC,MAAL,CAAYqC,IAAZ,CAAiB,KAAK+H,aAAL,EAAjB;;UACI,CAAC,KAAKoB,YAAL,CAAkB,GAAlB,CAAL,EAA6B;aACtBrB,MAAL,CAAY3H,KAAE,CAAClM,KAAf;;;;SAGCiM,KAAL,CAAWyN,kBAAX,GAAgCD,qBAAhC;SACKD,gBAAL,CAAsB,GAAtB;SAEKvN,KAAL,CAAW2H,MAAX,GAAoBD,SAApB;WAEO,KAAK/G,UAAL,CAAgBtF,IAAhB,EAAsB,4BAAtB,CAAP;;;EAGFqS,4CAA4C,GAAiC;UACrErS,IAAI,GAAG,KAAKqF,SAAL,EAAb;UACMgH,SAAS,GAAG,KAAK1H,KAAL,CAAW2H,MAA7B;IACAtM,IAAI,CAACoC,MAAL,GAAc,EAAd;SAEKuC,KAAL,CAAW2H,MAAX,GAAoB,IAApB;SAEK4F,gBAAL,CAAsB,GAAtB;;WACO,CAAC,KAAKtE,YAAL,CAAkB,GAAlB,CAAR,EAAgC;MAC9B5N,IAAI,CAACoC,MAAL,CAAYqC,IAAZ,CAAiB,KAAK6N,oCAAL,EAAjB;;UACI,CAAC,KAAK1E,YAAL,CAAkB,GAAlB,CAAL,EAA6B;aACtBrB,MAAL,CAAY3H,KAAE,CAAClM,KAAf;;;;SAGCwZ,gBAAL,CAAsB,GAAtB;SAEKvN,KAAL,CAAW2H,MAAX,GAAoBD,SAApB;WAEO,KAAK/G,UAAL,CAAgBtF,IAAhB,EAAsB,4BAAtB,CAAP;;;EAGFuS,sBAAsB,GAAwB;UACtCvS,IAAI,GAAG,KAAKqF,SAAL,EAAb;SACKwH,gBAAL,CAAsB,WAAtB;IAEA7M,IAAI,CAACoQ,OAAL,GAAe,EAAf;;QACI,KAAKpD,GAAL,CAASpI,KAAE,CAACvI,QAAZ,CAAJ,EAA2B;SACtB;QACD2D,IAAI,CAACoQ,OAAL,CAAa3L,IAAb,CAAkB,KAAK8L,yBAAL,EAAlB;OADF,QAES,KAAKvD,GAAL,CAASpI,KAAE,CAAClM,KAAZ,CAFT;;;IAKFsH,IAAI,CAACiE,IAAL,GAAY,KAAKuM,mBAAL,CAAyB;MACnCC,WAAW,EAAE,KADsB;MAEnCC,UAAU,EAAE,KAFuB;MAGnCC,WAAW,EAAE,KAHsB;MAInCC,UAAU,EAAE,KAJuB;MAKnCC,YAAY,EAAE;KALJ,CAAZ;WAQO,KAAKvL,UAAL,CAAgBtF,IAAhB,EAAsB,yBAAtB,CAAP;;;EAGFwS,0BAA0B,GAAiB;WAClC,KAAKpF,KAAL,CAAWxI,KAAE,CAAC/M,GAAd,KAAsB,KAAKuV,KAAL,CAAWxI,KAAE,CAAC5M,MAAd,CAAtB,GACH,KAAK0M,aAAL,EADG,GAEH,KAAK+I,eAAL,CAAqB,IAArB,CAFJ;;;EAKFgF,0BAA0B,CACxBzS,IADwB,EAExB0S,QAFwB,EAGxBf,QAHwB,EAIC;IACzB3R,IAAI,CAAC2S,MAAL,GAAcD,QAAd;;QAGI,KAAKE,SAAL,GAAiB3S,IAAjB,KAA0B2E,KAAE,CAAChM,KAAjC,EAAwC;MACtCoH,IAAI,CAACwN,EAAL,GAAU,KAAKgF,0BAAL,EAAV;MACAxS,IAAI,CAACoD,GAAL,GAAW,KAAK+I,wBAAL,EAAX;KAFF,MAGO;MACLnM,IAAI,CAACwN,EAAL,GAAU,IAAV;MACAxN,IAAI,CAACoD,GAAL,GAAW,KAAKoJ,aAAL,EAAX;;;SAEGD,MAAL,CAAY3H,KAAE,CAACzM,QAAf;IACA6H,IAAI,CAACa,KAAL,GAAa,KAAKsL,wBAAL,EAAb;IACAnM,IAAI,CAAC2R,QAAL,GAAgBA,QAAhB;WAEO,KAAKrM,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;;;EAGF6S,+BAA+B,CAC7B7S,IAD6B,EAE7B0S,QAF6B,EAGC;IAC9B1S,IAAI,CAAC2S,MAAL,GAAcD,QAAd;IAEA1S,IAAI,CAACwN,EAAL,GAAU,KAAKgF,0BAAL,EAAV;SACKjG,MAAL,CAAY3H,KAAE,CAACzM,QAAf;SACKoU,MAAL,CAAY3H,KAAE,CAACzM,QAAf;;QACI,KAAKyV,YAAL,CAAkB,GAAlB,KAA0B,KAAKR,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAA9B,EAAqD;MACnDwH,IAAI,CAACG,MAAL,GAAc,IAAd;MACAH,IAAI,CAAC+F,QAAL,GAAgB,KAAhB;MACA/F,IAAI,CAACa,KAAL,GAAa,KAAKiS,4BAAL,CACX,KAAKxR,WAAL,CAAiBtB,IAAI,CAACuB,KAAtB,EAA6BvB,IAAI,CAACwB,GAAL,CAASD,KAAtC,CADW,CAAb;KAHF,MAMO;MACLvB,IAAI,CAACG,MAAL,GAAc,KAAd;;UACI,KAAK6M,GAAL,CAASpI,KAAE,CAAC7L,QAAZ,CAAJ,EAA2B;QACzBiH,IAAI,CAAC+F,QAAL,GAAgB,IAAhB;;;MAEF/F,IAAI,CAACa,KAAL,GAAa,KAAKsL,wBAAL,EAAb;;;WAEK,KAAK7G,UAAL,CAAgBtF,IAAhB,EAAsB,wBAAtB,CAAP;;;EAGF8S,4BAA4B,CAC1B9S,IAD0B,EAEI;IAC9BA,IAAI,CAACoC,MAAL,GAAc,EAAd;IACApC,IAAI,CAACgO,IAAL,GAAY,IAAZ;IACAhO,IAAI,CAACwE,cAAL,GAAsB,IAAtB;;QAEI,KAAKoJ,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;MAC1B5N,IAAI,CAACwE,cAAL,GAAsB,KAAKqJ,iCAAL,EAAtB;;;SAGGtB,MAAL,CAAY3H,KAAE,CAACpM,MAAf;;WACO,CAAC,KAAK4U,KAAL,CAAWxI,KAAE,CAACnM,MAAd,CAAD,IAA0B,CAAC,KAAK2U,KAAL,CAAWxI,KAAE,CAACzL,QAAd,CAAlC,EAA2D;MACzD6G,IAAI,CAACoC,MAAL,CAAYqC,IAAZ,CAAiB,KAAKsO,0BAAL,EAAjB;;UACI,CAAC,KAAK3F,KAAL,CAAWxI,KAAE,CAACnM,MAAd,CAAL,EAA4B;aACrB8T,MAAL,CAAY3H,KAAE,CAAClM,KAAf;;;;QAIA,KAAKsU,GAAL,CAASpI,KAAE,CAACzL,QAAZ,CAAJ,EAA2B;MACzB6G,IAAI,CAACgO,IAAL,GAAY,KAAK+E,0BAAL,EAAZ;;;SAEGxG,MAAL,CAAY3H,KAAE,CAACnM,MAAf;IACAuH,IAAI,CAACiO,UAAL,GAAkB,KAAK9B,wBAAL,EAAlB;WAEO,KAAK7G,UAAL,CAAgBtF,IAAhB,EAAsB,wBAAtB,CAAP;;;EAGFgT,+BAA+B,CAC7BhT,IAD6B,EAE7B0S,QAF6B,EAGC;UACxBO,SAAS,GAAG,KAAK5N,SAAL,EAAlB;IACArF,IAAI,CAAC2S,MAAL,GAAcD,QAAd;IACA1S,IAAI,CAACa,KAAL,GAAa,KAAKiS,4BAAL,CAAkCG,SAAlC,CAAb;WACO,KAAK3N,UAAL,CAAgBtF,IAAhB,EAAsB,wBAAtB,CAAP;;;EAGFwQ,mBAAmB,CAAC;IAClBC,WADkB;IAElBC,UAFkB;IAGlBC,WAHkB;IAIlBC,UAJkB;IAKlBC;GALiB,EAYY;UACvBxE,SAAS,GAAG,KAAK1H,KAAL,CAAW2H,MAA7B;SACK3H,KAAL,CAAW2H,MAAX,GAAoB,IAApB;UAEMoF,SAAS,GAAG,KAAKrM,SAAL,EAAlB;IAEAqM,SAAS,CAACwB,cAAV,GAA2B,EAA3B;IACAxB,SAAS,CAAC7O,UAAV,GAAuB,EAAvB;IACA6O,SAAS,CAACyB,QAAV,GAAqB,EAArB;IACAzB,SAAS,CAAC0B,aAAV,GAA0B,EAA1B;QAEIC,QAAJ;QACIC,KAAJ;QACIC,OAAO,GAAG,KAAd;;QACI7C,UAAU,IAAI,KAAKtD,KAAL,CAAWxI,KAAE,CAACvM,SAAd,CAAlB,EAA4C;WACrCkU,MAAL,CAAY3H,KAAE,CAACvM,SAAf;MACAgb,QAAQ,GAAGzO,KAAE,CAACrM,SAAd;MACA+a,KAAK,GAAG,IAAR;KAHF,MAIO;WACA/G,MAAL,CAAY3H,KAAE,CAACxM,MAAf;MACAib,QAAQ,GAAGzO,KAAE,CAACtM,MAAd;MACAgb,KAAK,GAAG,KAAR;;;IAGF5B,SAAS,CAAC4B,KAAV,GAAkBA,KAAlB;;WAEO,CAAC,KAAKlG,KAAL,CAAWiG,QAAX,CAAR,EAA8B;UACxBX,QAAQ,GAAG,KAAf;UACIc,UAAmB,GAAG,IAA1B;UACIC,YAAqB,GAAG,IAA5B;YACMzT,IAAI,GAAG,KAAKqF,SAAL,EAAb;;UAEIuL,UAAU,IAAI,KAAKhC,YAAL,CAAkB,OAAlB,CAAlB,EAA8C;cACtCgE,SAAS,GAAG,KAAKA,SAAL,EAAlB;;YAEIA,SAAS,CAAC3S,IAAV,KAAmB2E,KAAE,CAAChM,KAAtB,IAA+Bga,SAAS,CAAC3S,IAAV,KAAmB2E,KAAE,CAAC7L,QAAzD,EAAmE;eAC5DsR,IAAL;UACAmJ,UAAU,GAAG,KAAK7O,KAAL,CAAWpD,KAAxB;UACAkP,WAAW,GAAG,KAAd;;;;UAIAA,WAAW,IAAI,KAAK7B,YAAL,CAAkB,QAAlB,CAAnB,EAAgD;cACxCgE,SAAS,GAAG,KAAKA,SAAL,EAAlB;;YAGIA,SAAS,CAAC3S,IAAV,KAAmB2E,KAAE,CAAChM,KAAtB,IAA+Bga,SAAS,CAAC3S,IAAV,KAAmB2E,KAAE,CAAC7L,QAAzD,EAAmE;eAC5DsR,IAAL;UACAqI,QAAQ,GAAG,IAAX;;;;YAIEf,QAAQ,GAAG,KAAKC,iBAAL,EAAjB;;UAEI,KAAK5E,GAAL,CAASpI,KAAE,CAAC1M,QAAZ,CAAJ,EAA2B;YACrBsb,UAAU,IAAI,IAAlB,EAAwB;eACjBvE,UAAL,CAAgBuE,UAAhB;;;YAEE,KAAKxG,GAAL,CAASpI,KAAE,CAAC1M,QAAZ,CAAJ,EAA2B;cACrByZ,QAAJ,EAAc;iBACP1C,UAAL,CAAgB0C,QAAQ,CAACpQ,KAAzB;;;UAEFmQ,SAAS,CAAC0B,aAAV,CAAwB3O,IAAxB,CACE,KAAKoO,+BAAL,CAAqC7S,IAArC,EAA2C0S,QAA3C,CADF;SAJF,MAOO;UACLhB,SAAS,CAACyB,QAAV,CAAmB1O,IAAnB,CACE,KAAKgO,0BAAL,CAAgCzS,IAAhC,EAAsC0S,QAAtC,EAAgDf,QAAhD,CADF;;OAZJ,MAgBO,IAAI,KAAKvE,KAAL,CAAWxI,KAAE,CAACpM,MAAd,KAAyB,KAAKoV,YAAL,CAAkB,GAAlB,CAA7B,EAAqD;YACtD4F,UAAU,IAAI,IAAlB,EAAwB;eACjBvE,UAAL,CAAgBuE,UAAhB;;;YAEE7B,QAAJ,EAAc;eACP1C,UAAL,CAAgB0C,QAAQ,CAACpQ,KAAzB;;;QAEFmQ,SAAS,CAACwB,cAAV,CAAyBzO,IAAzB,CACE,KAAKuO,+BAAL,CAAqChT,IAArC,EAA2C0S,QAA3C,CADF;OAPK,MAUA;YACDxS,IAAI,GAAG,MAAX;;YAEI,KAAK0O,YAAL,CAAkB,KAAlB,KAA4B,KAAKA,YAAL,CAAkB,KAAlB,CAAhC,EAA0D;gBAClDgE,SAAS,GAAG,KAAKA,SAAL,EAAlB;;cAEEA,SAAS,CAAC3S,IAAV,KAAmB2E,KAAE,CAACrN,IAAtB,IACAqb,SAAS,CAAC3S,IAAV,KAAmB2E,KAAE,CAAC5M,MADtB,IAEA4a,SAAS,CAAC3S,IAAV,KAAmB2E,KAAE,CAAC/M,GAHxB,EAIE;YACAqI,IAAI,GAAG,KAAKyE,KAAL,CAAW9D,KAAlB;iBACKwJ,IAAL;;;;cAIEqJ,aAAa,GAAG,KAAKC,2BAAL,CACpB3T,IADoB,EAEpB0S,QAFoB,EAGpBc,UAHoB,EAIpB7B,QAJoB,EAKpBzR,IALoB,EAMpByQ,WANoB,EAOpBE,YAPoB,WAOpBA,YAPoB,GAOJ,CAACyC,KAPG,CAAtB;;YAUII,aAAa,KAAK,IAAtB,EAA4B;UAC1BH,OAAO,GAAG,IAAV;UACAE,YAAY,GAAG,KAAK9O,KAAL,CAAW+J,YAA1B;SAFF,MAGO;UACLgD,SAAS,CAAC7O,UAAV,CAAqB4B,IAArB,CAA0BiP,aAA1B;;;;WAICE,uBAAL;;UAGEH,YAAY,IACZ,CAAC,KAAKrG,KAAL,CAAWxI,KAAE,CAACtM,MAAd,CADD,IAEA,CAAC,KAAK8U,KAAL,CAAWxI,KAAE,CAACrM,SAAd,CAHH,EAIE;aACK+J,KAAL,CACEmR,YADF,EAEE,qEAFF;;;;SAOClH,MAAL,CAAY8G,QAAZ;;QAOI1C,WAAJ,EAAiB;MACfe,SAAS,CAAC6B,OAAV,GAAoBA,OAApB;;;UAGI5L,GAAG,GAAG,KAAKrC,UAAL,CAAgBoM,SAAhB,EAA2B,sBAA3B,CAAZ;SAEK/M,KAAL,CAAW2H,MAAX,GAAoBD,SAApB;WAEO1E,GAAP;;;EAGFgM,2BAA2B,CACzB3T,IADyB,EAEzB0S,QAFyB,EAGzBc,UAHyB,EAIzB7B,QAJyB,EAKzBzR,IALyB,EAMzByQ,WANyB,EAOzBE,YAPyB,EAQ2C;QAChE,KAAK7D,GAAL,CAASpI,KAAE,CAACzL,QAAZ,CAAJ,EAA2B;YACnB0a,cAAc,GAClB,KAAKzG,KAAL,CAAWxI,KAAE,CAAClM,KAAd,KACA,KAAK0U,KAAL,CAAWxI,KAAE,CAACjM,IAAd,CADA,IAEA,KAAKyU,KAAL,CAAWxI,KAAE,CAACtM,MAAd,CAFA,IAGA,KAAK8U,KAAL,CAAWxI,KAAE,CAACrM,SAAd,CAJF;;UAMIsb,cAAJ,EAAoB;YACd,CAAClD,WAAL,EAAkB;eACXrO,KAAL,CACE,KAAKqC,KAAL,CAAW+J,YADb,EAEE,yEAFF;SADF,MAKO,IAAI,CAACmC,YAAL,EAAmB;eACnBvO,KAAL,CACE,KAAKqC,KAAL,CAAW+J,YADb,EAEE,4EAFF;;;YAKEiD,QAAJ,EAAc;eACPrP,KAAL,CACEqP,QAAQ,CAACpQ,KADX,EAEE,8CAFF;;;eAMK,IAAP;;;UAGE,CAACoP,WAAL,EAAkB;aACXrO,KAAL,CACE,KAAKqC,KAAL,CAAW+J,YADb,EAEE,iEAFF;;;UAKE8E,UAAU,IAAI,IAAlB,EAAwB;aACjBvE,UAAL,CAAgBuE,UAAhB;;;UAEE7B,QAAJ,EAAc;aACPrP,KAAL,CAAWqP,QAAQ,CAACpQ,KAApB,EAA2B,wCAA3B;;;MAGFvB,IAAI,CAAC8T,QAAL,GAAgB,KAAKtH,aAAL,EAAhB;aACO,KAAKlH,UAAL,CAAgBtF,IAAhB,EAAsB,0BAAtB,CAAP;KA3CF,MA4CO;MACLA,IAAI,CAACoD,GAAL,GAAW,KAAKoP,0BAAL,EAAX;MACAxS,IAAI,CAAC2S,MAAL,GAAcD,QAAd;MACA1S,IAAI,CAAC+T,KAAL,GAAaP,UAAU,IAAI,IAA3B;MACAxT,IAAI,CAACE,IAAL,GAAYA,IAAZ;UAEI6F,QAAQ,GAAG,KAAf;;UACI,KAAK6H,YAAL,CAAkB,GAAlB,KAA0B,KAAKR,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAA9B,EAAqD;QAEnDwH,IAAI,CAACG,MAAL,GAAc,IAAd;;YAEIqT,UAAU,IAAI,IAAlB,EAAwB;eACjBvE,UAAL,CAAgBuE,UAAhB;;;YAEE7B,QAAJ,EAAc;eACP1C,UAAL,CAAgB0C,QAAQ,CAACpQ,KAAzB;;;QAGFvB,IAAI,CAACa,KAAL,GAAa,KAAKiS,4BAAL,CACX,KAAKxR,WAAL,CAAiBtB,IAAI,CAACuB,KAAtB,EAA6BvB,IAAI,CAACwB,GAAL,CAASD,KAAtC,CADW,CAAb;;YAGIrB,IAAI,KAAK,KAAT,IAAkBA,IAAI,KAAK,KAA/B,EAAsC;eAC/B8T,2BAAL,CAAiChU,IAAjC;;OAfJ,MAiBO;YACDE,IAAI,KAAK,MAAb,EAAqB,KAAK+O,UAAL;QAErBjP,IAAI,CAACG,MAAL,GAAc,KAAd;;YAEI,KAAK6M,GAAL,CAASpI,KAAE,CAAC7L,QAAZ,CAAJ,EAA2B;UACzBgN,QAAQ,GAAG,IAAX;;;QAEF/F,IAAI,CAACa,KAAL,GAAa,KAAKsL,wBAAL,EAAb;QACAnM,IAAI,CAAC2R,QAAL,GAAgBA,QAAhB;;;MAGF3R,IAAI,CAAC+F,QAAL,GAAgBA,QAAhB;aAEO,KAAKT,UAAL,CAAgBtF,IAAhB,EAAsB,oBAAtB,CAAP;;;;EAMJgU,2BAA2B,CACzBC,QADyB,EAEnB;UACA9R,UAAU,GAAG8R,QAAQ,CAAC/T,IAAT,KAAkB,KAAlB,GAA0B,CAA1B,GAA8B,CAAjD;UACMqB,KAAK,GAAG0S,QAAQ,CAAC1S,KAAvB;UACMc,MAAM,GACV4R,QAAQ,CAACpT,KAAT,CAAeuB,MAAf,CAAsBC,MAAtB,IAAgC4R,QAAQ,CAACpT,KAAT,CAAemN,IAAf,GAAsB,CAAtB,GAA0B,CAA1D,CADF;;QAEI3L,MAAM,KAAKF,UAAf,EAA2B;UACrB8R,QAAQ,CAAC/T,IAAT,KAAkB,KAAtB,EAA6B;aACtBoC,KAAL,CAAWf,KAAX,EAAkB,4CAAlB;OADF,MAEO;aACAe,KAAL,CAAWf,KAAX,EAAkB,+CAAlB;;;;QAIA0S,QAAQ,CAAC/T,IAAT,KAAkB,KAAlB,IAA2B+T,QAAQ,CAACpT,KAAT,CAAemN,IAA9C,EAAoD;WAC7C1L,KAAL,CACEf,KADF,EAEE,uDAFF;;;;EAOJqS,uBAAuB,GAAS;QAE5B,CAAC,KAAK5G,GAAL,CAASpI,KAAE,CAACjM,IAAZ,CAAD,IACA,CAAC,KAAKqU,GAAL,CAASpI,KAAE,CAAClM,KAAZ,CADD,IAEA,CAAC,KAAK0U,KAAL,CAAWxI,KAAE,CAACtM,MAAd,CAFD,IAGA,CAAC,KAAK8U,KAAL,CAAWxI,KAAE,CAACrM,SAAd,CAJH,EAKE;WACK0W,UAAL;;;;EAIJ6B,gCAAgC,CAC9BjM,QAD8B,EAE9BC,QAF8B,EAG9B0I,EAH8B,EAIC;IAC/B3I,QAAQ,GAAGA,QAAQ,IAAI,KAAKF,KAAL,CAAWpD,KAAlC;IACAuD,QAAQ,GAAGA,QAAQ,IAAI,KAAKH,KAAL,CAAWG,QAAlC;QACI9E,IAAI,GAAGwN,EAAE,IAAI,KAAK2C,6BAAL,CAAmC,IAAnC,CAAjB;;WAEO,KAAKnD,GAAL,CAASpI,KAAE,CAAC9L,GAAZ,CAAP,EAAyB;YACjBob,KAAK,GAAG,KAAK5S,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAd;MACAoP,KAAK,CAACC,aAAN,GAAsBnU,IAAtB;MACAkU,KAAK,CAAC1G,EAAN,GAAW,KAAK2C,6BAAL,CAAmC,IAAnC,CAAX;MACAnQ,IAAI,GAAG,KAAKsF,UAAL,CAAgB4O,KAAhB,EAAuB,yBAAvB,CAAP;;;WAGKlU,IAAP;;;EAGFoU,oBAAoB,CAClBvP,QADkB,EAElBC,QAFkB,EAGlB0I,EAHkB,EAIW;UACvBxN,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;IAEA9E,IAAI,CAACwE,cAAL,GAAsB,IAAtB;IACAxE,IAAI,CAACwN,EAAL,GAAU,KAAKsD,gCAAL,CAAsCjM,QAAtC,EAAgDC,QAAhD,EAA0D0I,EAA1D,CAAV;;QAEI,KAAKI,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;MAC1B5N,IAAI,CAACwE,cAAL,GAAsB,KAAKuM,mCAAL,EAAtB;;;WAGK,KAAKzL,UAAL,CAAgBtF,IAAhB,EAAsB,uBAAtB,CAAP;;;EAGFqU,mBAAmB,GAA+B;UAC1CrU,IAAI,GAAG,KAAKqF,SAAL,EAAb;SACKkH,MAAL,CAAY3H,KAAE,CAAC/H,OAAf;IACAmD,IAAI,CAAC8T,QAAL,GAAgB,KAAKQ,oBAAL,EAAhB;WACO,KAAKhP,UAAL,CAAgBtF,IAAhB,EAAsB,sBAAtB,CAAP;;;EAGFuU,kBAAkB,GAA8B;UACxCvU,IAAI,GAAG,KAAKqF,SAAL,EAAb;IACArF,IAAI,CAACpI,KAAL,GAAa,EAAb;SACK2U,MAAL,CAAY3H,KAAE,CAAC1M,QAAf;;WAEO,KAAKyM,KAAL,CAAWoF,GAAX,GAAiB,KAAK1H,MAAtB,IAAgC,CAAC,KAAK+K,KAAL,CAAWxI,KAAE,CAACzM,QAAd,CAAxC,EAAiE;MAC/D6H,IAAI,CAACpI,KAAL,CAAW6M,IAAX,CAAgB,KAAK+H,aAAL,EAAhB;UACI,KAAKY,KAAL,CAAWxI,KAAE,CAACzM,QAAd,CAAJ,EAA6B;WACxBoU,MAAL,CAAY3H,KAAE,CAAClM,KAAf;;;SAEG6T,MAAL,CAAY3H,KAAE,CAACzM,QAAf;WACO,KAAKmN,UAAL,CAAgBtF,IAAhB,EAAsB,qBAAtB,CAAP;;;EAGF+S,0BAA0B,GAA4B;QAChDxb,IAAI,GAAG,IAAX;QACIwO,QAAQ,GAAG,KAAf;QACImI,cAAc,GAAG,IAArB;UACMlO,IAAI,GAAG,KAAKqF,SAAL,EAAb;UACMmP,EAAE,GAAG,KAAK5B,SAAL,EAAX;;QACI4B,EAAE,CAACvU,IAAH,KAAY2E,KAAE,CAAChM,KAAf,IAAwB4b,EAAE,CAACvU,IAAH,KAAY2E,KAAE,CAAC7L,QAA3C,EAAqD;MACnDxB,IAAI,GAAG,KAAKkW,eAAL,EAAP;;UACI,KAAKT,GAAL,CAASpI,KAAE,CAAC7L,QAAZ,CAAJ,EAA2B;QACzBgN,QAAQ,GAAG,IAAX;;;MAEFmI,cAAc,GAAG,KAAK/B,wBAAL,EAAjB;KALF,MAMO;MACL+B,cAAc,GAAG,KAAK1B,aAAL,EAAjB;;;IAEFxM,IAAI,CAACzI,IAAL,GAAYA,IAAZ;IACAyI,IAAI,CAAC+F,QAAL,GAAgBA,QAAhB;IACA/F,IAAI,CAACkO,cAAL,GAAsBA,cAAtB;WACO,KAAK5I,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;;;EAGFyU,kCAAkC,CAChCxU,IADgC,EAEP;UACnBD,IAAI,GAAG,KAAKsB,WAAL,CAAiBrB,IAAI,CAACsB,KAAtB,EAA6BtB,IAAI,CAACuB,GAAL,CAASD,KAAtC,CAAb;IACAvB,IAAI,CAACzI,IAAL,GAAY,IAAZ;IACAyI,IAAI,CAAC+F,QAAL,GAAgB,KAAhB;IACA/F,IAAI,CAACkO,cAAL,GAAsBjO,IAAtB;WACO,KAAKqF,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;;;EAGF+N,2BAA2B,CACzB3L,MAAiC,GAAG,EADX,EAE8C;QACnE4L,IAA8B,GAAG,IAArC;;WACO,CAAC,KAAKZ,KAAL,CAAWxI,KAAE,CAACnM,MAAd,CAAD,IAA0B,CAAC,KAAK2U,KAAL,CAAWxI,KAAE,CAACzL,QAAd,CAAlC,EAA2D;MACzDiJ,MAAM,CAACqC,IAAP,CAAY,KAAKsO,0BAAL,EAAZ;;UACI,CAAC,KAAK3F,KAAL,CAAWxI,KAAE,CAACnM,MAAd,CAAL,EAA4B;aACrB8T,MAAL,CAAY3H,KAAE,CAAClM,KAAf;;;;QAGA,KAAKsU,GAAL,CAASpI,KAAE,CAACzL,QAAZ,CAAJ,EAA2B;MACzB6U,IAAI,GAAG,KAAK+E,0BAAL,EAAP;;;WAEK;MAAE3Q,MAAF;MAAU4L;KAAjB;;;EAGF0G,yBAAyB,CACvB7P,QADuB,EAEvBC,QAFuB,EAGvB9E,IAHuB,EAIvBwN,EAJuB,EAKD;YACdA,EAAE,CAACjW,IAAX;WACO,KAAL;eACS,KAAK+N,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;;WAEG,MAAL;WACK,SAAL;eACS,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,uBAAtB,CAAP;;WAEG,OAAL;eACS,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,qBAAtB,CAAP;;WAEG,OAAL;eACS,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,qBAAtB,CAAP;;WAEG,QAAL;eACS,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,sBAAtB,CAAP;;WAEG,QAAL;eACS,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,sBAAtB,CAAP;;;aAGKiR,kBAAL,CAAwBzD,EAAE,CAACjW,IAA3B;eACO,KAAK6c,oBAAL,CAA0BvP,QAA1B,EAAoCC,QAApC,EAA8C0I,EAA9C,CAAP;;;;EAON8G,oBAAoB,GAAyB;UACrCzP,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;UACM9E,IAAI,GAAG,KAAKqF,SAAL,EAAb;QACIyI,GAAJ;QACI7N,IAAJ;QACI0U,aAAa,GAAG,KAApB;UACMxC,qBAAqB,GAAG,KAAKxN,KAAL,CAAWyN,kBAAzC;;YAEQ,KAAKzN,KAAL,CAAW1E,IAAnB;WACO2E,KAAE,CAACrN,IAAR;YACM,KAAKqX,YAAL,CAAkB,WAAlB,CAAJ,EAAoC;iBAC3B,KAAK2D,sBAAL,EAAP;;;eAGK,KAAKmC,yBAAL,CACL7P,QADK,EAELC,QAFK,EAGL9E,IAHK,EAIL,KAAKyN,eAAL,EAJK,CAAP;;WAOG7I,KAAE,CAACxM,MAAR;eACS,KAAKoY,mBAAL,CAAyB;UAC9BC,WAAW,EAAE,KADiB;UAE9BC,UAAU,EAAE,KAFkB;UAG9BC,WAAW,EAAE,IAHiB;UAI9BC,UAAU,EAAE,KAJkB;UAK9BC,YAAY,EAAE;SALT,CAAP;;WAQGjM,KAAE,CAACvM,SAAR;eACS,KAAKmY,mBAAL,CAAyB;UAC9BC,WAAW,EAAE,KADiB;UAE9BC,UAAU,EAAE,IAFkB;UAG9BC,WAAW,EAAE,IAHiB;UAI9BC,UAAU,EAAE,KAJkB;UAK9BC,YAAY,EAAE;SALT,CAAP;;WAQGjM,KAAE,CAAC1M,QAAR;aACOyM,KAAL,CAAWyN,kBAAX,GAAgC,KAAhC;QACAnS,IAAI,GAAG,KAAKsU,kBAAL,EAAP;aACK5P,KAAL,CAAWyN,kBAAX,GAAgCD,qBAAhC;eACOlS,IAAP;;WAEG2E,KAAE,CAACtK,UAAR;YACM,KAAKqK,KAAL,CAAW9D,KAAX,KAAqB,GAAzB,EAA8B;UAC5Bb,IAAI,CAACwE,cAAL,GAAsB,KAAKqJ,iCAAL,EAAtB;eACKtB,MAAL,CAAY3H,KAAE,CAACpM,MAAf;UACAsV,GAAG,GAAG,KAAKC,2BAAL,EAAN;UACA/N,IAAI,CAACoC,MAAL,GAAc0L,GAAG,CAAC1L,MAAlB;UACApC,IAAI,CAACgO,IAAL,GAAYF,GAAG,CAACE,IAAhB;eACKzB,MAAL,CAAY3H,KAAE,CAACnM,MAAf;eAEK8T,MAAL,CAAY3H,KAAE,CAAC3L,KAAf;UAEA+G,IAAI,CAACiO,UAAL,GAAkB,KAAKzB,aAAL,EAAlB;iBAEO,KAAKlH,UAAL,CAAgBtF,IAAhB,EAAsB,wBAAtB,CAAP;;;;;WAIC4E,KAAE,CAACpM,MAAR;aACO6R,IAAL;;YAGI,CAAC,KAAK+C,KAAL,CAAWxI,KAAE,CAACnM,MAAd,CAAD,IAA0B,CAAC,KAAK2U,KAAL,CAAWxI,KAAE,CAACzL,QAAd,CAA/B,EAAwD;cAClD,KAAKiU,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAJ,EAAyB;kBACjBE,KAAK,GAAG,KAAKmb,SAAL,GAAiB3S,IAA/B;YACA0U,aAAa,GAAGld,KAAK,KAAKmN,KAAE,CAAC7L,QAAb,IAAyBtB,KAAK,KAAKmN,KAAE,CAAChM,KAAtD;WAFF,MAGO;YACL+b,aAAa,GAAG,IAAhB;;;;YAIAA,aAAJ,EAAmB;eACZhQ,KAAL,CAAWyN,kBAAX,GAAgC,KAAhC;UACAnS,IAAI,GAAG,KAAKuM,aAAL,EAAP;eACK7H,KAAL,CAAWyN,kBAAX,GAAgCD,qBAAhC;;cAIE,KAAKxN,KAAL,CAAWyN,kBAAX,IACA,EACE,KAAKhF,KAAL,CAAWxI,KAAE,CAAClM,KAAd,KACC,KAAK0U,KAAL,CAAWxI,KAAE,CAACnM,MAAd,KAAyB,KAAKma,SAAL,GAAiB3S,IAAjB,KAA0B2E,KAAE,CAAC3L,KAFzD,CAFF,EAME;iBACKsT,MAAL,CAAY3H,KAAE,CAACnM,MAAf;mBACOwH,IAAP;WARF,MASO;iBAEA+M,GAAL,CAASpI,KAAE,CAAClM,KAAZ;;;;YAIAuH,IAAJ,EAAU;UACR6N,GAAG,GAAG,KAAKC,2BAAL,CAAiC,CACrC,KAAK0G,kCAAL,CAAwCxU,IAAxC,CADqC,CAAjC,CAAN;SADF,MAIO;UACL6N,GAAG,GAAG,KAAKC,2BAAL,EAAN;;;QAGF/N,IAAI,CAACoC,MAAL,GAAc0L,GAAG,CAAC1L,MAAlB;QACApC,IAAI,CAACgO,IAAL,GAAYF,GAAG,CAACE,IAAhB;aAEKzB,MAAL,CAAY3H,KAAE,CAACnM,MAAf;aAEK8T,MAAL,CAAY3H,KAAE,CAAC3L,KAAf;QAEA+G,IAAI,CAACiO,UAAL,GAAkB,KAAKzB,aAAL,EAAlB;QAEAxM,IAAI,CAACwE,cAAL,GAAsB,IAAtB;eAEO,KAAKc,UAAL,CAAgBtF,IAAhB,EAAsB,wBAAtB,CAAP;;WAEG4E,KAAE,CAAC5M,MAAR;eACS,KAAKiJ,YAAL,CACL,KAAK0D,KAAL,CAAW9D,KADN,EAEL,6BAFK,CAAP;;WAKG+D,KAAE,CAACnI,KAAR;WACKmI,KAAE,CAAClI,MAAR;QACEsD,IAAI,CAACa,KAAL,GAAa,KAAKuM,KAAL,CAAWxI,KAAE,CAACnI,KAAd,CAAb;aACK4N,IAAL;eACO,KAAK/E,UAAL,CAAgBtF,IAAhB,EAAsB,8BAAtB,CAAP;;WAEG4E,KAAE,CAACpK,OAAR;YACM,KAAKmK,KAAL,CAAW9D,KAAX,KAAqB,GAAzB,EAA8B;eACvBwJ,IAAL;;cACI,KAAK+C,KAAL,CAAWxI,KAAE,CAAC/M,GAAd,CAAJ,EAAwB;mBACf,KAAKoJ,YAAL,CACL,CAAC,KAAK0D,KAAL,CAAW9D,KADP,EAEL,6BAFK,EAGLb,IAAI,CAACuB,KAHA,EAILvB,IAAI,CAACwB,GAAL,CAASD,KAJJ,CAAP;;;cAQE,KAAK6L,KAAL,CAAWxI,KAAE,CAAC9M,MAAd,CAAJ,EAA2B;mBAClB,KAAKmJ,YAAL,CACL,CAAC,KAAK0D,KAAL,CAAW9D,KADP,EAEL,6BAFK,EAGLb,IAAI,CAACuB,KAHA,EAILvB,IAAI,CAACwB,GAAL,CAASD,KAJJ,CAAP;;;gBAQI,KAAKe,KAAL,CACJ,KAAKqC,KAAL,CAAWpD,KADP,EAEH,iDAFG,CAAN;;;aAMG0N,UAAL;;WACGrK,KAAE,CAAC/M,GAAR;eACS,KAAKoJ,YAAL,CACL,KAAK0D,KAAL,CAAW9D,KADN,EAEL,6BAFK,CAAP;;WAKG+D,KAAE,CAAC9M,MAAR;eACS,KAAKmJ,YAAL,CACL,KAAK0D,KAAL,CAAW9D,KADN,EAEL,6BAFK,CAAP;;WAKG+D,KAAE,CAAC9H,KAAR;aACOuN,IAAL;eACO,KAAK/E,UAAL,CAAgBtF,IAAhB,EAAsB,oBAAtB,CAAP;;WAEG4E,KAAE,CAACpI,KAAR;aACO6N,IAAL;eACO,KAAK/E,UAAL,CAAgBtF,IAAhB,EAAsB,2BAAtB,CAAP;;WAEG4E,KAAE,CAAC1I,KAAR;aACOmO,IAAL;eACO,KAAK/E,UAAL,CAAgBtF,IAAhB,EAAsB,oBAAtB,CAAP;;WAEG4E,KAAE,CAAClK,IAAR;aACO2P,IAAL;eACO,KAAK/E,UAAL,CAAgBtF,IAAhB,EAAsB,sBAAtB,CAAP;;;YAGI,KAAK2E,KAAL,CAAW1E,IAAX,CAAgBjJ,OAAhB,KAA4B,QAAhC,EAA0C;iBACjC,KAAKqd,mBAAL,EAAP;SADF,MAEO,IAAI,KAAK1P,KAAL,CAAW1E,IAAX,CAAgBjJ,OAApB,EAA6B;gBAC5BF,KAAK,GAAG,KAAK6N,KAAL,CAAW1E,IAAX,CAAgBnJ,KAA9B;eACKuT,IAAL;iBACO,MAAMuK,gBAAN,CAAuB5U,IAAvB,EAA6BlJ,KAA7B,CAAP;;;;;UAIA,KAAKmY,UAAL,EAAN;;;EAGF4F,oBAAoB,GAAyB;UACrChQ,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACEuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QADxB;QAEI7E,IAAI,GAAG,KAAKqU,oBAAL,EAAX;;WACO,KAAKlH,KAAL,CAAWxI,KAAE,CAAC1M,QAAd,KAA2B,CAAC,KAAK4c,kBAAL,EAAnC,EAA8D;YACtD9U,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;MACA9E,IAAI,CAAC+U,WAAL,GAAmB9U,IAAnB;WACKsM,MAAL,CAAY3H,KAAE,CAAC1M,QAAf;WACKqU,MAAL,CAAY3H,KAAE,CAACzM,QAAf;MACA8H,IAAI,GAAG,KAAKqF,UAAL,CAAgBtF,IAAhB,EAAsB,qBAAtB,CAAP;;;WAEKC,IAAP;;;EAGF+U,mBAAmB,GAAyB;UACpChV,IAAI,GAAG,KAAKqF,SAAL,EAAb;;QACI,KAAK2H,GAAL,CAASpI,KAAE,CAAC7L,QAAZ,CAAJ,EAA2B;MACzBiH,IAAI,CAACkO,cAAL,GAAsB,KAAK8G,mBAAL,EAAtB;aACO,KAAK1P,UAAL,CAAgBtF,IAAhB,EAAsB,wBAAtB,CAAP;KAFF,MAGO;aACE,KAAK6U,oBAAL,EAAP;;;;EAIJI,kCAAkC,GAAyB;UACnDC,KAAK,GAAG,KAAKF,mBAAL,EAAd;;QACI,CAAC,KAAKrQ,KAAL,CAAWyN,kBAAZ,IAAkC,KAAKpF,GAAL,CAASpI,KAAE,CAAC3L,KAAZ,CAAtC,EAA0D;YAElD+G,IAAI,GAAG,KAAKsB,WAAL,CAAiB4T,KAAK,CAAC3T,KAAvB,EAA8B2T,KAAK,CAAC1T,GAAN,CAAUD,KAAxC,CAAb;MACAvB,IAAI,CAACoC,MAAL,GAAc,CAAC,KAAKqS,kCAAL,CAAwCS,KAAxC,CAAD,CAAd;MACAlV,IAAI,CAACgO,IAAL,GAAY,IAAZ;MACAhO,IAAI,CAACiO,UAAL,GAAkB,KAAKzB,aAAL,EAAlB;MACAxM,IAAI,CAACwE,cAAL,GAAsB,IAAtB;aACO,KAAKc,UAAL,CAAgBtF,IAAhB,EAAsB,wBAAtB,CAAP;;;WAEKkV,KAAP;;;EAGFC,yBAAyB,GAAyB;UAC1CnV,IAAI,GAAG,KAAKqF,SAAL,EAAb;SACK2H,GAAL,CAASpI,KAAE,CAACxK,UAAZ;UACM6F,IAAI,GAAG,KAAKgV,kCAAL,EAAb;IACAjV,IAAI,CAACpI,KAAL,GAAa,CAACqI,IAAD,CAAb;;WACO,KAAK+M,GAAL,CAASpI,KAAE,CAACxK,UAAZ,CAAP,EAAgC;MAC9B4F,IAAI,CAACpI,KAAL,CAAW6M,IAAX,CAAgB,KAAKwQ,kCAAL,EAAhB;;;WAEKjV,IAAI,CAACpI,KAAL,CAAWyK,MAAX,KAAsB,CAAtB,GACHpC,IADG,GAEH,KAAKqF,UAAL,CAAgBtF,IAAhB,EAAsB,4BAAtB,CAFJ;;;EAKFoV,kBAAkB,GAAyB;UACnCpV,IAAI,GAAG,KAAKqF,SAAL,EAAb;SACK2H,GAAL,CAASpI,KAAE,CAAC1K,SAAZ;UACM+F,IAAI,GAAG,KAAKkV,yBAAL,EAAb;IACAnV,IAAI,CAACpI,KAAL,GAAa,CAACqI,IAAD,CAAb;;WACO,KAAK+M,GAAL,CAASpI,KAAE,CAAC1K,SAAZ,CAAP,EAA+B;MAC7B8F,IAAI,CAACpI,KAAL,CAAW6M,IAAX,CAAgB,KAAK0Q,yBAAL,EAAhB;;;WAEKnV,IAAI,CAACpI,KAAL,CAAWyK,MAAX,KAAsB,CAAtB,GACHpC,IADG,GAEH,KAAKqF,UAAL,CAAgBtF,IAAhB,EAAsB,qBAAtB,CAFJ;;;EAKFwM,aAAa,GAAyB;UAC9BH,SAAS,GAAG,KAAK1H,KAAL,CAAW2H,MAA7B;SACK3H,KAAL,CAAW2H,MAAX,GAAoB,IAApB;UACMrM,IAAI,GAAG,KAAKmV,kBAAL,EAAb;SACKzQ,KAAL,CAAW2H,MAAX,GAAoBD,SAApB;SAGK1H,KAAL,CAAW+C,WAAX,GACE,KAAK/C,KAAL,CAAW+C,WAAX,IAA0B,KAAK/C,KAAL,CAAWyN,kBADvC;WAEOnS,IAAP;;;EAGFqS,oCAAoC,GAAyB;QACvD,KAAK3N,KAAL,CAAW1E,IAAX,KAAoB2E,KAAE,CAACrN,IAAvB,IAA+B,KAAKoN,KAAL,CAAW9D,KAAX,KAAqB,GAAxD,EAA6D;YACrDgE,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;YACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;YACM9E,IAAI,GAAG,KAAKyN,eAAL,EAAb;aACO,KAAK2G,oBAAL,CAA0BvP,QAA1B,EAAoCC,QAApC,EAA8C9E,IAA9C,CAAP;KAJF,MAKO;aACE,KAAKwM,aAAL,EAAP;;;;EAIJuD,uBAAuB,GAAyB;UACxC/P,IAAI,GAAG,KAAKqF,SAAL,EAAb;IACArF,IAAI,CAACkO,cAAL,GAAsB,KAAK/B,wBAAL,EAAtB;WACO,KAAK7G,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;;;EAGFkP,kCAAkC,CAChCmG,sBADgC,EAElB;UACRxD,KAAK,GAAGwD,sBAAsB,GAChC,KAAK5H,eAAL,EADgC,GAEhC,KAAK0C,6BAAL,EAFJ;;QAGI,KAAK/C,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAJ,EAA0B;MACxBiZ,KAAK,CAAC3D,cAAN,GAAuB,KAAK6B,uBAAL,EAAvB;WACK5B,gBAAL,CAAsB0D,KAAtB;;;WAEKA,KAAP;;;EAGFyD,mBAAmB,CAACtV,IAAD,EAAuB;IACxCA,IAAI,CAACyB,UAAL,CAAgByM,cAAhB,GAAiClO,IAAI,CAACkO,cAAtC;SAEKC,gBAAL,CACEnO,IAAI,CAACyB,UADP,EAEEzB,IAAI,CAACkO,cAAL,CAAoBrM,GAFtB,EAGE7B,IAAI,CAACkO,cAAL,CAAoB1M,GAApB,CAAwBK,GAH1B;WAMO7B,IAAI,CAACyB,UAAZ;;;EAGFmQ,iBAAiB,GAAoB;QAC/BD,QAAQ,GAAG,IAAf;;QACI,KAAKvE,KAAL,CAAWxI,KAAE,CAACpK,OAAd,CAAJ,EAA4B;MAC1BmX,QAAQ,GAAG,KAAKtM,SAAL,EAAX;;UACI,KAAKV,KAAL,CAAW9D,KAAX,KAAqB,GAAzB,EAA8B;QAC5B8Q,QAAQ,CAACzR,IAAT,GAAgB,MAAhB;OADF,MAEO;QACLyR,QAAQ,CAACzR,IAAT,GAAgB,OAAhB;;;WAEGmK,IAAL;WACK/E,UAAL,CAAgBqM,QAAhB,EAA0B,UAA1B;;;WAEKA,QAAP;;;EAOF5M,iBAAiB,CACf/E,IADe,EAEfuV,mBAFe,EAGftQ,QAAkB,GAAG,KAHN,EAIT;QACFsQ,mBAAJ,EAAyB;aAChB,KAAKC,gCAAL,CAAsCxV,IAAtC,EAA4C,MACjD,MAAM+E,iBAAN,CAAwB/E,IAAxB,EAA8B,IAA9B,EAAoCiF,QAApC,CADK,CAAP;;;WAKK,MAAMF,iBAAN,CAAwB/E,IAAxB,EAA8B,KAA9B,EAAqCiF,QAArC,CAAP;;;EAGFwQ,0BAA0B,CACxBzV,IADwB,EAExBC,IAFwB,EAGxBgF,QAAkB,GAAG,KAHG,EAIlB;QACF,KAAKmI,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAJ,EAA0B;YAClB8U,QAAQ,GAAG,KAAKrI,SAAL,EAAjB;OAIEqI,QAAQ,CAACQ,cAFX,EAIElO,IAAI,CAACmN,SAJP,IAKI,KAAKD,oCAAL,EALJ;MAOAlN,IAAI,CAACiO,UAAL,GAAkBP,QAAQ,CAACQ,cAAT,GACd,KAAK5I,UAAL,CAAgBoI,QAAhB,EAA0B,gBAA1B,CADc,GAEd,IAFJ;;;UAKI+H,0BAAN,CAAiCzV,IAAjC,EAAuCC,IAAvC,EAA6CgF,QAA7C;;;EAIFyQ,cAAc,CAACjO,OAAD,EAAmB7D,QAAnB,EAAoD;QAG9D,KAAKe,KAAL,CAAW+D,MAAX,IACA,KAAK0E,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CADA,IAEA,KAAKoN,KAAL,CAAW9D,KAAX,KAAqB,WAHvB,EAIE;YACMb,IAAI,GAAG,KAAKqF,SAAL,EAAb;WACKgF,IAAL;aACO,KAAK2G,kBAAL,CAAwBhR,IAAxB,CAAP;KAPF,MAQO,IAAI,KAAK2L,gBAAL,MAA2B,KAAKiD,YAAL,CAAkB,MAAlB,CAA/B,EAA0D;YACzD5O,IAAI,GAAG,KAAKqF,SAAL,EAAb;WACKgF,IAAL;aACO,KAAKsL,wBAAL,CAA8B3V,IAA9B,CAAP;KAHK,MAIA;YACCqB,IAAI,GAAG,MAAMqU,cAAN,CAAqBjO,OAArB,EAA8B7D,QAA9B,CAAb;;UAEI,KAAK2H,UAAL,KAAoBC,SAApB,IAAiC,CAAC,KAAKjI,gBAAL,CAAsBlC,IAAtB,CAAtC,EAAmE;aAC5DkK,UAAL,GAAkB,IAAlB;;;aAEKlK,IAAP;;;;EAKJuU,wBAAwB,CACtB5V,IADsB,EAEtBwC,IAFsB,EAGC;QACnBA,IAAI,CAACvC,IAAL,KAAc,YAAlB,EAAgC;UAC1BuC,IAAI,CAACjL,IAAL,KAAc,SAAlB,EAA6B;YAEzB,KAAK6V,KAAL,CAAWxI,KAAE,CAACxI,MAAd,KACA,KAAKgR,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CADA,IAEA,KAAK6V,KAAL,CAAWxI,KAAE,CAACrJ,SAAd,CAFA,IAGA,KAAK6R,KAAL,CAAWxI,KAAE,CAAC/I,IAAd,CAHA,IAIA,KAAKuR,KAAL,CAAWxI,KAAE,CAACtI,OAAd,CALF,EAME;iBACO,KAAK+R,gBAAL,CAAsBrO,IAAtB,CAAP;;OARJ,MAUO,IAAI,KAAKoN,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAJ,EAAyB;YAC1BiL,IAAI,CAACjL,IAAL,KAAc,WAAlB,EAA+B;iBACtB,KAAKyZ,kBAAL,CAAwBhR,IAAxB,CAAP;SADF,MAEO,IAAIwC,IAAI,CAACjL,IAAL,KAAc,MAAlB,EAA0B;iBACxB,KAAKyY,kBAAL,CAAwBhQ,IAAxB,CAAP;SADK,MAEA,IAAIwC,IAAI,CAACjL,IAAL,KAAc,QAAlB,EAA4B;iBAC1B,KAAK0Y,mBAAL,CAAyBjQ,IAAzB,EAA+B,KAA/B,CAAP;;;;;WAKC,MAAM4V,wBAAN,CAA+B5V,IAA/B,EAAqCwC,IAArC,CAAP;;;EAIFqT,4BAA4B,GAAY;WAEpC,KAAKjH,YAAL,CAAkB,MAAlB,KACA,KAAKA,YAAL,CAAkB,WAAlB,CADA,IAEA,KAAKA,YAAL,CAAkB,QAAlB,CAFA,IAGC,KAAKjD,gBAAL,MAA2B,KAAKiD,YAAL,CAAkB,MAAlB,CAH5B,IAIA,MAAMiH,4BAAN,EALF;;;EASFC,wBAAwB,GAAY;QAEhC,KAAK1I,KAAL,CAAWxI,KAAE,CAACrN,IAAd,MACC,KAAKoN,KAAL,CAAW9D,KAAX,KAAqB,MAArB,IACC,KAAK8D,KAAL,CAAW9D,KAAX,KAAqB,WADtB,IAEC,KAAK8D,KAAL,CAAW9D,KAAX,KAAqB,QAFtB,IAGE,KAAK8K,gBAAL,MAA2B,KAAKhH,KAAL,CAAW9D,KAAX,KAAqB,MAJnD,CADF,EAME;aACO,KAAP;;;WAGK,MAAMiV,wBAAN,EAAP;;;EAGFC,4BAA4B,GAAiC;QACvD,KAAKpK,gBAAL,MAA2B,KAAKiD,YAAL,CAAkB,MAAlB,CAA/B,EAA0D;YAClD5O,IAAI,GAAG,KAAKqF,SAAL,EAAb;WACKgF,IAAL;aACO,KAAKsL,wBAAL,CAA8B3V,IAA9B,CAAP;;;WAEK,MAAM+V,4BAAN,EAAP;;;EAGFC,gBAAgB,CACdxT,IADc,EAEdyT,IAFc,EAGdpR,QAHc,EAIdC,QAJc,EAKdoR,gBALc,EAMA;QACV,CAAC,KAAK9I,KAAL,CAAWxI,KAAE,CAAC7L,QAAd,CAAL,EAA8B,OAAOyJ,IAAP;;QAI1B0T,gBAAJ,EAAsB;YACdC,MAAM,GAAG,KAAKC,QAAL,CAAc,MAC3B,MAAMJ,gBAAN,CAAuBxT,IAAvB,EAA6ByT,IAA7B,EAAmCpR,QAAnC,EAA6CC,QAA7C,CADa,CAAf;;UAII,CAACqR,MAAM,CAACnW,IAAZ,EAAkB;QAEhBkW,gBAAgB,CAAC3U,KAAjB,GAAyB4U,MAAM,CAACE,KAAP,CAAatM,GAAb,IAAoB,KAAKpF,KAAL,CAAWpD,KAAxD;eACOiB,IAAP;;;UAGE2T,MAAM,CAACE,KAAX,EAAkB,KAAK1R,KAAL,GAAawR,MAAM,CAACG,SAApB;aACXH,MAAM,CAACnW,IAAd;;;SAGGuM,MAAL,CAAY3H,KAAE,CAAC7L,QAAf;UACM4L,KAAK,GAAG,KAAKA,KAAL,CAAW4R,KAAX,EAAd;UACMC,iBAAiB,GAAG,KAAK7R,KAAL,CAAW8R,SAArC;UACMzW,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;QACI;MAAE4R,UAAF;MAAcC;QAAW,KAAKC,6BAAL,EAA7B;QACI,CAACC,KAAD,EAAQC,OAAR,IAAmB,KAAKC,uBAAL,CAA6BL,UAA7B,CAAvB;;QAEIC,MAAM,IAAIG,OAAO,CAACzU,MAAR,GAAiB,CAA/B,EAAkC;YAC1BoU,SAAS,GAAG,CAAC,GAAGD,iBAAJ,CAAlB;;UAEIM,OAAO,CAACzU,MAAR,GAAiB,CAArB,EAAwB;aACjBsC,KAAL,GAAaA,KAAb;aACKA,KAAL,CAAW8R,SAAX,GAAuBA,SAAvB;;aAEK,IAAIzM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8M,OAAO,CAACzU,MAA5B,EAAoC2H,CAAC,EAArC,EAAyC;UACvCyM,SAAS,CAAChS,IAAV,CAAeqS,OAAO,CAAC9M,CAAD,CAAP,CAAWzI,KAA1B;;;SAGD;UAAEmV,UAAF;UAAcC;YAAW,KAAKC,6BAAL,EAA1B;SACCC,KAAD,EAAQC,OAAR,IAAmB,KAAKC,uBAAL,CAA6BL,UAA7B,CAAnB;;;UAGEC,MAAM,IAAIE,KAAK,CAACxU,MAAN,GAAe,CAA7B,EAAgC;aAMzBC,KAAL,CACEqC,KAAK,CAACpD,KADR,EAEE,gFAFF;;;UAMEoV,MAAM,IAAIE,KAAK,CAACxU,MAAN,KAAiB,CAA/B,EAAkC;aAC3BsC,KAAL,GAAaA,KAAb;aACKA,KAAL,CAAW8R,SAAX,GAAuBA,SAAS,CAACvS,MAAV,CAAiB2S,KAAK,CAAC,CAAD,CAAL,CAAStV,KAA1B,CAAvB;SACC;UAAEmV,UAAF;UAAcC;YAAW,KAAKC,6BAAL,EAA1B;;;;SAICG,uBAAL,CAA6BL,UAA7B,EAAyC,IAAzC;SAEK/R,KAAL,CAAW8R,SAAX,GAAuBD,iBAAvB;SACKjK,MAAL,CAAY3H,KAAE,CAAChM,KAAf;IAEAoH,IAAI,CAACqI,IAAL,GAAY7F,IAAZ;IACAxC,IAAI,CAAC0W,UAAL,GAAkBA,UAAlB;IACA1W,IAAI,CAACgX,SAAL,GAAiB,KAAKxB,gCAAL,CAAsCxV,IAAtC,EAA4C,MAC3D,KAAKiX,gBAAL,CAAsBhB,IAAtB,EAA4BzK,SAA5B,EAAuCA,SAAvC,EAAkDA,SAAlD,CADe,CAAjB;WAIO,KAAKlG,UAAL,CAAgBtF,IAAhB,EAAsB,uBAAtB,CAAP;;;EAGF4W,6BAA6B,GAG3B;SACKjS,KAAL,CAAWuS,yBAAX,CAAqCzS,IAArC,CAA0C,KAAKE,KAAL,CAAWpD,KAArD;UAEMmV,UAAU,GAAG,KAAKO,gBAAL,EAAnB;UACMN,MAAM,GAAG,CAAC,KAAKvJ,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAhB;SAEK+L,KAAL,CAAWuS,yBAAX,CAAqCtP,GAArC;WAEO;MAAE8O,UAAF;MAAcC;KAArB;;;EAUFI,uBAAuB,CACrB/W,IADqB,EAErBmX,eAFqB,EAGuC;UACtDC,KAAK,GAAG,CAACpX,IAAD,CAAd;UACMqX,MAAmC,GAAG,EAA5C;;WAEOD,KAAK,CAAC/U,MAAN,KAAiB,CAAxB,EAA2B;YACnBrC,IAAI,GAAGoX,KAAK,CAACxP,GAAN,EAAb;;UACI5H,IAAI,CAACC,IAAL,KAAc,yBAAlB,EAA6C;YACvCD,IAAI,CAACwE,cAAL,IAAuB,CAACxE,IAAI,CAACiO,UAAjC,EAA6C;eAEtCqJ,qBAAL,CAA2BtX,IAA3B;SAFF,MAGO;UACLqX,MAAM,CAAC5S,IAAP,CAAYzE,IAAZ;;;QAEFoX,KAAK,CAAC3S,IAAN,CAAWzE,IAAI,CAACiE,IAAhB;OAPF,MAQO,IAAIjE,IAAI,CAACC,IAAL,KAAc,uBAAlB,EAA2C;QAChDmX,KAAK,CAAC3S,IAAN,CAAWzE,IAAI,CAAC0W,UAAhB;QACAU,KAAK,CAAC3S,IAAN,CAAWzE,IAAI,CAACgX,SAAhB;;;;QAIAG,eAAJ,EAAqB;MACnBE,MAAM,CAACvU,OAAP,CAAe9C,IAAI,IAAI,KAAKsX,qBAAL,CAA2BtX,IAA3B,CAAvB;aACO,CAACqX,MAAD,EAAS,EAAT,CAAP;;;WAGKnM,SAAS,CAACmM,MAAD,EAASrX,IAAI,IAC3BA,IAAI,CAACoC,MAAL,CAAYmV,KAAZ,CAAkBrC,KAAK,IAAI,KAAKsC,YAAL,CAAkBtC,KAAlB,EAAyB,IAAzB,CAA3B,CADc,CAAhB;;;EAKFoC,qBAAqB,CAACtX,IAAD,EAAkC;;;SAChDyX,gBAAL,CAGIzX,IAAI,CAACoC,MAHT,iBAIEpC,IAAI,CAAC2B,KAJP,qBAIE,YAAY+V,aAJd;SAOK1P,KAAL,CAAWoH,KAAX,CAAiBxR,aAAa,CAAC,KAAD,EAAQ,KAAR,CAAb,GAA8BP,WAA/C;UAEMsa,WAAN,CAAkB3X,IAAlB,EAAwB,KAAxB,EAA+B,IAA/B;SACKgI,KAAL,CAAWuH,IAAX;;;EAGFiG,gCAAgC,CAAIxV,IAAJ,EAAkB4X,KAAlB,EAAqC;QAC/DzB,MAAJ;;QACI,KAAKxR,KAAL,CAAWuS,yBAAX,CAAqCW,OAArC,CAA6C7X,IAAI,CAACuB,KAAlD,MAA6D,CAAC,CAAlE,EAAqE;WAC9DoD,KAAL,CAAWuS,yBAAX,CAAqCzS,IAArC,CAA0C,KAAKE,KAAL,CAAWpD,KAArD;MACA4U,MAAM,GAAGyB,KAAK,EAAd;WACKjT,KAAL,CAAWuS,yBAAX,CAAqCtP,GAArC;KAHF,MAIO;MACLuO,MAAM,GAAGyB,KAAK,EAAd;;;WAGKzB,MAAP;;;EAGF2B,cAAc,CACZ9X,IADY,EAEZ6E,QAFY,EAGZC,QAHY,EAIE;IACd9E,IAAI,GAAG,MAAM8X,cAAN,CAAqB9X,IAArB,EAA2B6E,QAA3B,EAAqCC,QAArC,CAAP;;QACI,KAAKkI,GAAL,CAASpI,KAAE,CAAC7L,QAAZ,CAAJ,EAA2B;MACzBiH,IAAI,CAAC+F,QAAL,GAAgB,IAAhB;WAIKoI,gBAAL,CAAsBnO,IAAtB;;;QAGE,KAAKoN,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAJ,EAA0B;YAClBmf,YAAY,GAAG,KAAKzW,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAArB;MACAiT,YAAY,CAACtW,UAAb,GAA0BzB,IAA1B;MACA+X,YAAY,CAAC7J,cAAb,GAA8B,KAAK6B,uBAAL,EAA9B;aAEO,KAAKzK,UAAL,CAAgByS,YAAhB,EAA8B,oBAA9B,CAAP;;;WAGK/X,IAAP;;;EAGFgY,uBAAuB,CAAChY,IAAD,EAAe;QAEjCA,IAAI,CAACC,IAAL,KAAc,mBAAd,KACED,IAAI,CAAC4K,UAAL,KAAoB,MAApB,IAA8B5K,IAAI,CAAC4K,UAAL,KAAoB,QADpD,CAAD,IAEC5K,IAAI,CAACC,IAAL,KAAc,wBAAd,IACCD,IAAI,CAAC8P,UAAL,KAAoB,MAHtB,IAIC9P,IAAI,CAACC,IAAL,KAAc,sBAAd,IAAwCD,IAAI,CAAC8P,UAAL,KAAoB,MAL/D,EAME;;;;UAMIkI,uBAAN,CAA8BhY,IAA9B;;;EAGF6P,WAAW,CAAC7P,IAAD,EAA4B;UAC/BiY,IAAI,GAAG,MAAMpI,WAAN,CAAkB7P,IAAlB,CAAb;;QAEEiY,IAAI,CAAChY,IAAL,KAAc,wBAAd,IACAgY,IAAI,CAAChY,IAAL,KAAc,sBAFhB,EAGE;MACAgY,IAAI,CAACnI,UAAL,GAAkBmI,IAAI,CAACnI,UAAL,IAAmB,OAArC;;;WAEKmI,IAAP;;;EAGFC,sBAAsB,CAAClY,IAAD,EAAiD;QACjE,KAAK4O,YAAL,CAAkB,MAAlB,CAAJ,EAA+B;MAC7B5O,IAAI,CAAC8P,UAAL,GAAkB,MAAlB;YAEMqI,eAAe,GAAG,KAAK9S,SAAL,EAAxB;WACKgF,IAAL;;UAEI,KAAK+C,KAAL,CAAWxI,KAAE,CAACxM,MAAd,CAAJ,EAA2B;QAEzB4H,IAAI,CAACoY,UAAL,GAAkB,KAAKC,qBAAL,EAAlB;aACKC,eAAL,CAAqBtY,IAArB;eACO,IAAP;OAJF,MAKO;eAEE,KAAKgQ,kBAAL,CAAwBmI,eAAxB,CAAP;;KAbJ,MAeO,IAAI,KAAKvJ,YAAL,CAAkB,QAAlB,CAAJ,EAAiC;MACtC5O,IAAI,CAAC8P,UAAL,GAAkB,MAAlB;YAEMqI,eAAe,GAAG,KAAK9S,SAAL,EAAxB;WACKgF,IAAL;aAEO,KAAK4F,mBAAL,CAAyBkI,eAAzB,EAA0C,KAA1C,CAAP;KANK,MAOA,IAAI,KAAKvJ,YAAL,CAAkB,WAAlB,CAAJ,EAAoC;MACzC5O,IAAI,CAAC8P,UAAL,GAAkB,MAAlB;YACMqI,eAAe,GAAG,KAAK9S,SAAL,EAAxB;WACKgF,IAAL;aACO,KAAK2G,kBAAL,CAAwBmH,eAAxB,CAAP;KAJK,MAKA,IAAI,KAAKxM,gBAAL,MAA2B,KAAKiD,YAAL,CAAkB,MAAlB,CAA/B,EAA0D;MAC/D5O,IAAI,CAAC8P,UAAL,GAAkB,OAAlB;YACMqI,eAAe,GAAG,KAAK9S,SAAL,EAAxB;WACKgF,IAAL;aACO,KAAKsL,wBAAL,CAA8BwC,eAA9B,CAAP;KAJK,MAKA;aACE,MAAMD,sBAAN,CAA6BlY,IAA7B,CAAP;;;;EAIJuY,aAAa,CAACvY,IAAD,EAAwB;QAC/B,MAAMuY,aAAN,CAAoB,GAAGrS,SAAvB,CAAJ,EAAuC,OAAO,IAAP;;QAEnC,KAAK0I,YAAL,CAAkB,MAAlB,KAA6B,KAAKgE,SAAL,GAAiB3S,IAAjB,KAA0B2E,KAAE,CAAClK,IAA9D,EAAoE;MAClEsF,IAAI,CAAC8P,UAAL,GAAkB,MAAlB;WACKzF,IAAL;WACKA,IAAL;aACO,IAAP;;;WAGK,KAAP;;;EAGFmO,kCAAkC,CAACxY,IAAD,EAAwB;UAClD+J,GAAG,GAAG,KAAKpF,KAAL,CAAWpD,KAAvB;UACMkX,YAAY,GAAG,MAAMD,kCAAN,CAAyCxY,IAAzC,CAArB;;QACIyY,YAAY,IAAIzY,IAAI,CAAC8P,UAAL,KAAoB,MAAxC,EAAgD;WACzCb,UAAL,CAAgBlF,GAAhB;;;WAEK0O,YAAP;;;EAGFC,YAAY,CAAC1Y,IAAD,EAAgB2Y,WAAhB,EAAsCC,UAAtC,EAA4D;UAChEF,YAAN,CAAmB1Y,IAAnB,EAAyB2Y,WAAzB,EAAsCC,UAAtC;;QACI,KAAKhL,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;MAC1B5N,IAAI,CAACwE,cAAL,GAAsB,KAAKqJ,iCAAL,EAAtB;;;;EAKJgL,gBAAgB,CAACpS,IAAD,EAAqB;UAC7B4D,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAb;;QACItD,IAAI,QAAJ,IAAqC4D,IAAI,QAA7C,EAAyE;aAChE,KAAK0O,QAAL,CAAcnU,KAAE,CAACvM,SAAjB,EAA4B,CAA5B,CAAP;KADF,MAEO,IACL,KAAKsM,KAAL,CAAW2H,MAAX,KACC7F,IAAI,OAAJ,IAAkCA,IAAI,OADvC,CADK,EAGL;aACO,KAAKsS,QAAL,CAAcnU,KAAE,CAACtK,UAAjB,EAA6B,CAA7B,CAAP;KAJK,MAKA,IAAI6P,eAAe,CAAC1D,IAAD,EAAO4D,IAAP,CAAnB,EAAiC;WACjC1F,KAAL,CAAWuD,UAAX,GAAwB,IAAxB;aACO,MAAM8Q,QAAN,EAAP;KAFK,MAGA;aACE,MAAMH,gBAAN,CAAuBpS,IAAvB,CAAP;;;;EAIJ+Q,YAAY,CAACxX,IAAD,EAAeiZ,SAAf,EAA6C;YAC/CjZ,IAAI,CAACC,IAAb;WACO,YAAL;WACK,eAAL;WACK,cAAL;WACK,mBAAL;eACS,IAAP;;WAEG,kBAAL;;gBACQiZ,IAAI,GAAGlZ,IAAI,CAAC6C,UAAL,CAAgBR,MAAhB,GAAyB,CAAtC;iBACOrC,IAAI,CAAC6C,UAAL,CAAgB0U,KAAhB,CAAsB,CAACrV,IAAD,EAAO8H,CAAP,KAAa;mBAEtC9H,IAAI,CAACjC,IAAL,KAAc,cAAd,KACC+J,CAAC,KAAKkP,IAAN,IAAchX,IAAI,CAACjC,IAAL,KAAc,eAD7B,KAEA,KAAKuX,YAAL,CAAkBtV,IAAlB,CAHF;WADK,CAAP;;;WASG,gBAAL;eACS,KAAKsV,YAAL,CAAkBxX,IAAI,CAACa,KAAvB,CAAP;;WAEG,eAAL;eACS,KAAK2W,YAAL,CAAkBxX,IAAI,CAAC8T,QAAvB,CAAP;;WAEG,iBAAL;eACS9T,IAAI,CAACmZ,QAAL,CAAc5B,KAAd,CAAoB6B,OAAO,IAAI,KAAK5B,YAAL,CAAkB4B,OAAlB,CAA/B,CAAP;;WAEG,sBAAL;eACSpZ,IAAI,CAACqZ,QAAL,KAAkB,GAAzB;;WAEG,yBAAL;WACK,oBAAL;eACS,KAAK7B,YAAL,CAAkBxX,IAAI,CAACyB,UAAvB,CAAP;;WAEG,kBAAL;WACK,0BAAL;eACS,CAACwX,SAAR;;;eAGO,KAAP;;;;EAINtT,YAAY,CAAC3F,IAAD,EAAuB;QAC7BA,IAAI,CAACC,IAAL,KAAc,oBAAlB,EAAwC;aAC/B,MAAM0F,YAAN,CAAmB,KAAK2P,mBAAL,CAAyBtV,IAAzB,CAAnB,CAAP;KADF,MAEO;aACE,MAAM2F,YAAN,CAAmB3F,IAAnB,CAAP;;;;EAKJyX,gBAAgB,CACdrR,QADc,EAEdkT,gBAFc,EAGa;SACtB,IAAItP,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG5D,QAAQ,CAAC/D,MAA7B,EAAqC2H,CAAC,EAAtC,EAA0C;YAClCxH,IAAI,GAAG4D,QAAQ,CAAC4D,CAAD,CAArB;;UACIxH,IAAI,IAAIA,IAAI,CAACvC,IAAL,KAAc,oBAA1B,EAAgD;QAC9CmG,QAAQ,CAAC4D,CAAD,CAAR,GAAc,KAAKsL,mBAAL,CAAyB9S,IAAzB,CAAd;;;;WAGG,MAAMiV,gBAAN,CAAuBrR,QAAvB,EAAiCkT,gBAAjC,CAAP;;;EAKFC,gBAAgB,CACdnT,QADc,EAEdC,mBAFc,EAGiB;SAC1B,IAAI2D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG5D,QAAQ,CAAC/D,MAA7B,EAAqC2H,CAAC,EAAtC,EAA0C;YAClCxH,IAAI,GAAG4D,QAAQ,CAAC4D,CAAD,CAArB;;UAEExH,IAAI,IACJA,IAAI,CAACvC,IAAL,KAAc,oBADd,KAEC,CAACuC,IAAI,CAACb,KAAN,IAAe,CAACa,IAAI,CAACb,KAAL,CAAW6B,aAF5B,MAGC4C,QAAQ,CAAC/D,MAAT,GAAkB,CAAlB,IAAuB,CAACgE,mBAHzB,CADF,EAKE;aACK/D,KAAL,CACEE,IAAI,CAAC0L,cAAL,CAAoB3M,KADtB,EAEE,qEAFF;;;;WAOG6E,QAAP;;;EAGF7D,SAAS,CACPC,IADO,EAEPC,WAAyB,GAAGvD,SAFrB,EAGPwD,YAHO,EAIPC,kBAJO,EAKD;QACFH,IAAI,CAACvC,IAAL,KAAc,oBAAlB,EAAwC;aAC/B,MAAMsC,SAAN,CACLC,IADK,EAELC,WAFK,EAGLC,YAHK,EAILC,kBAJK,CAAP;;;;EAUJ6W,kBAAkB,CAACxZ,IAAD,EAAyC;QACrD,KAAKoN,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAJ,EAA0B;MACxBoH,IAAI,CAACkO,cAAL,GAAsB,KAAK6B,uBAAL,EAAtB;;;WAEK,MAAMyJ,kBAAN,CAAyBxZ,IAAzB,CAAP;;;EAGFyZ,yBAAyB,CACvBzZ,IADuB,EAEC;QACpB,KAAKoN,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAJ,EAA0B;MACxBoH,IAAI,CAACkO,cAAL,GAAsB,KAAK6B,uBAAL,EAAtB;;;WAEK,MAAM0J,yBAAN,CAAgCzZ,IAAhC,CAAP;;;EAIF0Z,aAAa,GAAY;WAChB,KAAK9L,YAAL,CAAkB,GAAlB,KAA0B,MAAM8L,aAAN,EAAjC;;;EAIFC,eAAe,GAAY;WAClB,KAAKvM,KAAL,CAAWxI,KAAE,CAAChM,KAAd,KAAwB,MAAM+gB,eAAN,EAA/B;;;EAGFC,sBAAsB,CAACzZ,MAAD,EAAmD;WAChE,CAAC,KAAKiN,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAD,IAAyB,MAAMghB,sBAAN,CAA6BzZ,MAA7B,CAAhC;;;EAIFgE,eAAe,CACbC,SADa,EAEbjE,MAFa,EAGbrC,WAHa,EAIbD,OAJa,EAKbwG,aALa,EAMbC,iBANa,EAOP;QACDnE,MAAD,CAAqBwR,QAAzB,EAAmC;WAC5B1C,UAAL,CAAiB9O,MAAD,CAAqBwR,QAArB,CAA8BpQ,KAA9C;;;WAEMpB,MAAD,CAAqBwR,QAA5B;;QACI,KAAK/D,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;MAC1BzN,MAAM,CAACqE,cAAP,GAAwB,KAAKqJ,iCAAL,EAAxB;;;UAGI1J,eAAN,CACEC,SADF,EAEEjE,MAFF,EAGErC,WAHF,EAIED,OAJF,EAKEwG,aALF,EAMEC,iBANF;;;EAUFuV,sBAAsB,CACpBzV,SADoB,EAEpBjE,MAFoB,EAGpBrC,WAHoB,EAIpBD,OAJoB,EAKd;QACDsC,MAAD,CAAqBwR,QAAzB,EAAmC;WAC5B1C,UAAL,CAAiB9O,MAAD,CAAqBwR,QAArB,CAA8BpQ,KAA9C;;;WAEMpB,MAAD,CAAqBwR,QAA5B;;QACI,KAAK/D,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;MAC1BzN,MAAM,CAACqE,cAAP,GAAwB,KAAKqJ,iCAAL,EAAxB;;;UAGIgM,sBAAN,CAA6BzV,SAA7B,EAAwCjE,MAAxC,EAAgDrC,WAAhD,EAA6DD,OAA7D;;;EAIFic,eAAe,CAAC9Z,IAAD,EAAsB;UAC7B8Z,eAAN,CAAsB9Z,IAAtB;;QACIA,IAAI,CAACI,UAAL,IAAmB,KAAKwN,YAAL,CAAkB,GAAlB,CAAvB,EAA+C;MAC7C5N,IAAI,CAAC+Z,mBAAL,GAA2B,KAAKhJ,mCAAL,EAA3B;;;QAEE,KAAKnC,YAAL,CAAkB,YAAlB,CAAJ,EAAqC;WAC9BvE,IAAL;YACM2P,WAAoC,GAAIha,IAAI,CAACqQ,UAAL,GAAkB,EAAhE;;SACG;cACKrQ,IAAI,GAAG,KAAKqF,SAAL,EAAb;QACArF,IAAI,CAACwN,EAAL,GAAU,KAAK2C,6BAAL,CAA+C,IAA/C,CAAV;;YACI,KAAKvC,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;UAC1B5N,IAAI,CAACwE,cAAL,GAAsB,KAAKuM,mCAAL,EAAtB;SADF,MAEO;UACL/Q,IAAI,CAACwE,cAAL,GAAsB,IAAtB;;;QAEFwV,WAAW,CAACvV,IAAZ,CAAiB,KAAKa,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAjB;OARF,QASS,KAAKgN,GAAL,CAASpI,KAAE,CAAClM,KAAZ,CATT;;;;EAaJuhB,iBAAiB,CACfja,IADe,EAEfka,oBAFe,EAGD;UACRvI,QAAQ,GAAG,KAAKC,iBAAL,EAAjB;UACMxO,GAAG,GAAG,MAAM6W,iBAAN,CAAwBja,IAAxB,EAA8Bka,oBAA9B,CAAZ;IAEAla,IAAI,CAAC2R,QAAL,GAAgBA,QAAhB;WACOvO,GAAP;;;EAIF+W,iBAAiB,CACfjY,IADe,EAEf2C,QAFe,EAGfC,QAHe,EAIfhH,WAJe,EAKfD,OALe,EAMf2H,SANe,EAOfvC,mBAPe,EAQfwC,WARe,EAST;QACDvD,IAAD,CAAmByP,QAAvB,EAAiC;WAC1B1C,UAAL,CAAiB/M,IAAD,CAAmByP,QAAnB,CAA4BpQ,KAA5C;;;WAEMW,IAAD,CAAmByP,QAA1B;QAEInN,cAAJ;;QAGI,KAAKoJ,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;MAC1BpJ,cAAc,GAAG,KAAKqJ,iCAAL,EAAjB;UACI,CAAC,KAAKT,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAAL,EAA4B,KAAKyW,UAAL;;;UAGxBkL,iBAAN,CACEjY,IADF,EAEE2C,QAFF,EAGEC,QAHF,EAIEhH,WAJF,EAKED,OALF,EAME2H,SANF,EAOEvC,mBAPF,EAQEwC,WARF;;QAYIjB,cAAJ,EAAoB;OACjBtC,IAAI,CAACrB,KAAL,IAAcqB,IAAf,EAAqBsC,cAArB,GAAsCA,cAAtC;;;;EAIJ4V,4BAA4B,CAAClF,KAAD,EAA8B;QACpD,KAAKlI,GAAL,CAASpI,KAAE,CAAC7L,QAAZ,CAAJ,EAA2B;UACrBmc,KAAK,CAACjV,IAAN,KAAe,YAAnB,EAAiC;aAC1BqC,KAAL,CACE4S,KAAK,CAAC3T,KADR,EAEE,gFAFF;;;MAMA2T,KAAF,CAA6BnP,QAA7B,GAAwC,IAAxC;;;QAEE,KAAKqH,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAJ,EAA0B;MACxBsc,KAAK,CAAChH,cAAN,GAAuB,KAAK6B,uBAAL,EAAvB;;;SAEG5B,gBAAL,CAAsB+G,KAAtB;WACOA,KAAP;;;EAGFmF,iBAAiB,CACfxV,QADe,EAEfC,QAFe,EAGfwV,IAHe,EAIJ;UACLta,IAAI,GAAG,MAAMqa,iBAAN,CAAwBxV,QAAxB,EAAkCC,QAAlC,EAA4CwV,IAA5C,CAAb;;QAGEta,IAAI,CAACC,IAAL,KAAc,mBAAd,IACAD,IAAI,CAACkO,cADL,IAEAlO,IAAI,CAACoR,KAAL,CAAW7P,KAAX,GAAmBvB,IAAI,CAACkO,cAAL,CAAoB3M,KAHzC,EAIE;WACKe,KAAL,CACEtC,IAAI,CAACkO,cAAL,CAAoB3M,KADtB,EAEE,4DACE,2DAHJ;;;WAOKvB,IAAP;;;EAGFua,wBAAwB,CAACva,IAAD,EAAqC;QACvD,CAAC2K,iBAAiB,CAAC3K,IAAD,CAAtB,EAA8B;aACrB,MAAMua,wBAAN,CAA+Bva,IAA/B,CAAP;;;WAGK6K,oBAAoB,CAAC,KAAKlG,KAAN,CAA3B;;;EAGF6V,yBAAyB,CACvBxa,IADuB,EAEvBya,SAFuB,EAGvBxa,IAHuB,EAIvB0C,kBAJuB,EAKjB;IACN8X,SAAS,CAACC,KAAV,GAAkB/P,iBAAiB,CAAC3K,IAAD,CAAjB,GACd,KAAKmQ,6BAAL,CACgB,IADhB,EAEoB,IAFpB,CADc,GAKd,KAAK1C,eAAL,EALJ;SAOKlL,SAAL,CACEkY,SAAS,CAACC,KADZ,EAEE/b,YAFF,EAGE6M,SAHF,EAIE7I,kBAJF;IAMA3C,IAAI,CAACoY,UAAL,CAAgB3T,IAAhB,CAAqB,KAAKa,UAAL,CAAgBmV,SAAhB,EAA2Bxa,IAA3B,CAArB;;;EAIF0a,gCAAgC,CAAC3a,IAAD,EAAqC;IACnEA,IAAI,CAAC4K,UAAL,GAAkB,OAAlB;QAEI1K,IAAI,GAAG,IAAX;;QACI,KAAKkN,KAAL,CAAWxI,KAAE,CAAC/H,OAAd,CAAJ,EAA4B;MAC1BqD,IAAI,GAAG,QAAP;KADF,MAEO,IAAI,KAAK0O,YAAL,CAAkB,MAAlB,CAAJ,EAA+B;MACpC1O,IAAI,GAAG,MAAP;;;QAEEA,IAAJ,EAAU;YACFsU,EAAE,GAAG,KAAK5B,SAAL,EAAX;;UAGI1S,IAAI,KAAK,MAAT,IAAmBsU,EAAE,CAACvU,IAAH,KAAY2E,KAAE,CAAClK,IAAtC,EAA4C;aACrCuU,UAAL,CAAgBuF,EAAE,CAACjT,KAAnB;;;UAIAsJ,oBAAoB,CAAC2J,EAAD,CAApB,IACAA,EAAE,CAACvU,IAAH,KAAY2E,KAAE,CAACxM,MADf,IAEAoc,EAAE,CAACvU,IAAH,KAAY2E,KAAE,CAAClK,IAHjB,EAIE;aACK2P,IAAL;QACArK,IAAI,CAAC4K,UAAL,GAAkB1K,IAAlB;;;;WAIG,MAAMya,gCAAN,CAAuC3a,IAAvC,CAAP;;;EAIF4a,oBAAoB,CAAC5a,IAAD,EAAkC;UAC9Cya,SAAS,GAAG,KAAKpV,SAAL,EAAlB;UACMwV,aAAa,GAAG,KAAKlW,KAAL,CAAWpD,KAAjC;UACMuZ,UAAU,GAAG,KAAKrN,eAAL,CAAqB,IAArB,CAAnB;QAEIsN,iBAAiB,GAAG,IAAxB;;QACID,UAAU,CAACvjB,IAAX,KAAoB,MAAxB,EAAgC;MAC9BwjB,iBAAiB,GAAG,MAApB;KADF,MAEO,IAAID,UAAU,CAACvjB,IAAX,KAAoB,QAAxB,EAAkC;MACvCwjB,iBAAiB,GAAG,QAApB;;;QAGE9B,SAAS,GAAG,KAAhB;;QACI,KAAKrK,YAAL,CAAkB,IAAlB,KAA2B,CAAC,KAAKoM,qBAAL,CAA2B,IAA3B,CAAhC,EAAkE;YAC1DC,QAAQ,GAAG,KAAKxN,eAAL,CAAqB,IAArB,CAAjB;;UAEEsN,iBAAiB,KAAK,IAAtB,IACA,CAAC,KAAK3N,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CADD,IAEA,CAAC,KAAKoN,KAAL,CAAW1E,IAAX,CAAgBjJ,OAHnB,EAIE;QAEAyjB,SAAS,CAACS,QAAV,GAAqBD,QAArB;QACAR,SAAS,CAAC7P,UAAV,GAAuBmQ,iBAAvB;QACAN,SAAS,CAACC,KAAV,GAAkBO,QAAQ,CAACE,OAAT,EAAlB;OARF,MASO;QAELV,SAAS,CAACS,QAAV,GAAqBJ,UAArB;QACAL,SAAS,CAAC7P,UAAV,GAAuB,IAAvB;QACA6P,SAAS,CAACC,KAAV,GAAkB,KAAKjN,eAAL,EAAlB;;KAfJ,MAiBO,IACLsN,iBAAiB,KAAK,IAAtB,KACC,KAAK3N,KAAL,CAAWxI,KAAE,CAACrN,IAAd,KAAuB,KAAKoN,KAAL,CAAW1E,IAAX,CAAgBjJ,OADxC,CADK,EAGL;MAEAyjB,SAAS,CAACS,QAAV,GAAqB,KAAKzN,eAAL,CAAqB,IAArB,CAArB;MACAgN,SAAS,CAAC7P,UAAV,GAAuBmQ,iBAAvB;;UACI,KAAKvM,aAAL,CAAmB,IAAnB,CAAJ,EAA8B;QAC5BiM,SAAS,CAACC,KAAV,GAAkB,KAAKjN,eAAL,EAAlB;OADF,MAEO;QACLwL,SAAS,GAAG,IAAZ;QACAwB,SAAS,CAACC,KAAV,GAAkBD,SAAS,CAACS,QAAV,CAAmBC,OAAnB,EAAlB;;KAXG,MAaA;MACLlC,SAAS,GAAG,IAAZ;MACAwB,SAAS,CAACS,QAAV,GAAqBJ,UAArB;MACAL,SAAS,CAAC7P,UAAV,GAAuB,IAAvB;MACA6P,SAAS,CAACC,KAAV,GAAkBD,SAAS,CAACS,QAAV,CAAmBC,OAAnB,EAAlB;;;UAGIC,gBAAgB,GAAGzQ,iBAAiB,CAAC3K,IAAD,CAA1C;UACMqb,qBAAqB,GAAG1Q,iBAAiB,CAAC8P,SAAD,CAA/C;;QAEIW,gBAAgB,IAAIC,qBAAxB,EAA+C;WACxC/Y,KAAL,CACEuY,aADF,EAEE,mFACE,yFAHJ;;;QAOEO,gBAAgB,IAAIC,qBAAxB,EAA+C;WACxCnK,iBAAL,CACEuJ,SAAS,CAACC,KAAV,CAAgBnjB,IADlB,EAEEkjB,SAAS,CAACC,KAAV,CAAgBnZ,KAFlB,EAGoB,IAHpB;;;QAOE0X,SAAS,IAAI,CAACmC,gBAAd,IAAkC,CAACC,qBAAvC,EAA8D;WACvDC,iBAAL,CACEb,SAAS,CAACC,KAAV,CAAgBnjB,IADlB,EAEEkjB,SAAS,CAAClZ,KAFZ,EAGE,IAHF,EAIE,IAJF;;;SAQGgB,SAAL,CACEkY,SAAS,CAACC,KADZ,EAEE/b,YAFF,EAGE6M,SAHF,EAIE,kBAJF;IAMAxL,IAAI,CAACoY,UAAL,CAAgB3T,IAAhB,CAAqB,KAAKa,UAAL,CAAgBmV,SAAhB,EAA2B,iBAA3B,CAArB;;;EAIFc,mBAAmB,CAACvb,IAAD,EAAmBwb,cAAnB,EAAmD;UAE9Dtb,IAAI,GAAGF,IAAI,CAACE,IAAlB;;QACIA,IAAI,KAAK,KAAT,IAAkBA,IAAI,KAAK,KAA3B,IAAoC,KAAK0N,YAAL,CAAkB,GAAlB,CAAxC,EAAgE;MAC9D5N,IAAI,CAACwE,cAAL,GAAsB,KAAKqJ,iCAAL,EAAtB;;;UAEI0N,mBAAN,CAA0Bvb,IAA1B,EAAgCwb,cAAhC;;;EAIFC,UAAU,CACRxD,IADQ,EAER/X,IAFQ,EAGF;UACAub,UAAN,CAAiBxD,IAAjB,EAAuB/X,IAAvB;;QACI,KAAKkN,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAJ,EAA0B;MACxBqf,IAAI,CAACzK,EAAL,CAAQU,cAAR,GAAyB,KAAK6B,uBAAL,EAAzB;WACK5B,gBAAL,CAAsB8J,IAAI,CAACzK,EAA3B;;;;EAKJkO,iCAAiC,CAC/B1b,IAD+B,EAE/B2b,IAF+B,EAGJ;QACvB,KAAKvO,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAJ,EAA0B;YAClBuZ,qBAAqB,GAAG,KAAKxN,KAAL,CAAWyN,kBAAzC;WACKzN,KAAL,CAAWyN,kBAAX,GAAgC,IAAhC;MACApS,IAAI,CAACiO,UAAL,GAAkB,KAAK8B,uBAAL,EAAlB;WACKpL,KAAL,CAAWyN,kBAAX,GAAgCD,qBAAhC;;;WAGK,MAAMuJ,iCAAN,CAAwC1b,IAAxC,EAA8C2b,IAA9C,CAAP;;;EAIFC,qBAAqB,GAAY;WACxB,KAAKxO,KAAL,CAAWxI,KAAE,CAAChM,KAAd,KAAwB,MAAMgjB,qBAAN,EAA/B;;;EAaF3E,gBAAgB,CACdhB,IADc,EAEdhT,mBAFc,EAGd4Y,cAHc,EAId3F,gBAJc,EAKA;QACVvR,KAAK,GAAG,IAAZ;QAEImX,GAAJ;;QAGE,KAAKC,SAAL,CAAe,KAAf,MACC,KAAK3O,KAAL,CAAWxI,KAAE,CAACmN,WAAd,KAA8B,KAAKnE,YAAL,CAAkB,GAAlB,CAD/B,CADF,EAGE;MACAjJ,KAAK,GAAG,KAAKA,KAAL,CAAW4R,KAAX,EAAR;MAEAuF,GAAG,GAAG,KAAK1F,QAAL,CACJ,MACE,MAAMa,gBAAN,CACEhB,IADF,EAEEhT,mBAFF,EAGE4Y,cAHF,EAIE3F,gBAJF,CAFE,EAQJvR,KARI,CAAN;UAYI,CAACmX,GAAG,CAACzF,KAAT,EAAgB,OAAOyF,GAAG,CAAC9b,IAAX;YAKV;QAAEyH;UAAY,KAAK9C,KAAzB;;UACI8C,OAAO,CAACA,OAAO,CAACpF,MAAR,GAAiB,CAAlB,CAAP,KAAgC2Z,OAAE,CAACC,MAAvC,EAA+C;QAC7CxU,OAAO,CAACpF,MAAR,IAAkB,CAAlB;OADF,MAEO,IAAIoF,OAAO,CAACA,OAAO,CAACpF,MAAR,GAAiB,CAAlB,CAAP,KAAgC2Z,OAAE,CAACE,MAAvC,EAA+C;QACpDzU,OAAO,CAACpF,MAAR,IAAkB,CAAlB;;;;QAICyZ,GAAG,IAAIA,GAAG,CAACzF,KAAZ,IAAsB,KAAKzI,YAAL,CAAkB,GAAlB,CAA1B,EAAkD;MAChDjJ,KAAK,GAAGA,KAAK,IAAI,KAAKA,KAAL,CAAW4R,KAAX,EAAjB;UAEI/R,cAAJ;YAEMvL,KAAK,GAAG,KAAKmd,QAAL,CAAc,MAAM;QAChC5R,cAAc,GAAG,KAAKqJ,iCAAL,EAAjB;cAEMsO,eAAe,GAAG,KAAK3G,gCAAL,CACtBhR,cADsB,EAEtB,MACE,MAAMyS,gBAAN,CACEhB,IADF,EAEEhT,mBAFF,EAGE4Y,cAHF,EAIE3F,gBAJF,CAHoB,CAAxB;QAUAiG,eAAe,CAAC3X,cAAhB,GAAiCA,cAAjC;aACK4X,0BAAL,CAAgCD,eAAhC,EAAiD3X,cAAjD;eAEO2X,eAAP;OAhBY,EAiBXxX,KAjBW,CAAd;YAmBMwX,eAA2C,GAC/CljB,KAAK,CAAC+G,IAAN,IAAc/G,KAAK,CAAC+G,IAAN,CAAWC,IAAX,KAAoB,yBAAlC,GACIhH,KAAK,CAAC+G,IADV,GAEI,IAHN;UAKI,CAAC/G,KAAK,CAACod,KAAP,IAAgB8F,eAApB,EAAqC,OAAOA,eAAP;;UAQjCL,GAAG,IAAIA,GAAG,CAAC9b,IAAf,EAAqB;aAEd2E,KAAL,GAAamX,GAAG,CAACxF,SAAjB;eACOwF,GAAG,CAAC9b,IAAX;;;UAGEmc,eAAJ,EAAqB;aAEdxX,KAAL,GAAa1L,KAAK,CAACqd,SAAnB;eACO6F,eAAP;;;UAGEL,GAAG,IAAIA,GAAG,CAACO,MAAf,EAAuB,MAAMP,GAAG,CAACzF,KAAV;UACnBpd,KAAK,CAACojB,MAAV,EAAkB,MAAMpjB,KAAK,CAACod,KAAZ;YAGZ,KAAK/T,KAAL,CACJkC,cAAc,CAACjD,KADX,EAEJ,kEAFI,CAAN;;;WAMK,MAAM0V,gBAAN,CACLhB,IADK,EAELhT,mBAFK,EAGL4Y,cAHK,EAIL3F,gBAJK,CAAP;;;EASFoG,UAAU,CAACtc,IAAD,EAA8D;QAClE,KAAKoN,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAJ,EAA0B;YAClBud,MAAM,GAAG,KAAKC,QAAL,CAAc,MAAM;cAC3BjE,qBAAqB,GAAG,KAAKxN,KAAL,CAAWyN,kBAAzC;aACKzN,KAAL,CAAWyN,kBAAX,GAAgC,IAAhC;cAEM1E,QAAQ,GAAG,KAAKrI,SAAL,EAAjB;SAIEqI,QAAQ,CAACQ,cAFX,EAIElO,IAAI,CAACmN,SAJP,IAKI,KAAKD,oCAAL,EALJ;aAOKvI,KAAL,CAAWyN,kBAAX,GAAgCD,qBAAhC;YAEI,KAAK2C,kBAAL,EAAJ,EAA+B,KAAK7F,UAAL;YAC3B,CAAC,KAAK7B,KAAL,CAAWxI,KAAE,CAAC3L,KAAd,CAAL,EAA2B,KAAKgW,UAAL;eAEpBvB,QAAP;OAlBa,CAAf;UAqBIyI,MAAM,CAACkG,MAAX,EAAmB,OAAO,IAAP;UAGflG,MAAM,CAACE,KAAX,EAAkB,KAAK1R,KAAL,GAAawR,MAAM,CAACG,SAApB;MAGlBtW,IAAI,CAACiO,UAAL,GAAkBkI,MAAM,CAACnW,IAAP,CAAYkO,cAAZ,GACd,KAAK5I,UAAL,CAAgB6Q,MAAM,CAACnW,IAAvB,EAA6B,gBAA7B,CADc,GAEd,IAFJ;;;WAKK,MAAMsc,UAAN,CAAiBtc,IAAjB,CAAP;;;EAGFuc,gBAAgB,GAAY;WACnB,KAAKnP,KAAL,CAAWxI,KAAE,CAAChM,KAAd,KAAwB,MAAM2jB,gBAAN,EAA/B;;;EAGFC,0BAA0B,CACxBxc,IADwB,EAExBoC,MAFwB,EAGlB;QACF,KAAKuC,KAAL,CAAWuS,yBAAX,CAAqCW,OAArC,CAA6C7X,IAAI,CAACuB,KAAlD,MAA6D,CAAC,CAAlE,EAAqE;MACnEvB,IAAI,CAACoC,MAAL,GAAcA,MAAd;KADF,MAEO;YACCoa,0BAAN,CAAiCxc,IAAjC,EAAuCoC,MAAvC;;;;EAIJuV,WAAW,CACT3X,IADS,EAETyc,eAFS,EAGTC,eAHS,EAIH;QAEJA,eAAe,IACf,KAAK/X,KAAL,CAAWuS,yBAAX,CAAqCW,OAArC,CAA6C7X,IAAI,CAACuB,KAAlD,MAA6D,CAAC,CAFhE,EAGE;;;;WAIK,MAAMoW,WAAN,CAAkB,GAAGzR,SAArB,CAAP;;;EAGFyW,kCAAkC,CAACC,UAAD,EAAoC;WAC7D,MAAMD,kCAAN,CACLC,UAAU,IAAI,KAAKjY,KAAL,CAAW8R,SAAX,CAAqBoB,OAArB,CAA6B,KAAKlT,KAAL,CAAWpD,KAAxC,MAAmD,CAAC,CAD7D,CAAP;;;EAKFsb,eAAe,CACbC,IADa,EAEbjY,QAFa,EAGbC,QAHa,EAIbiY,OAJa,EAKC;QAEZD,IAAI,CAAC7c,IAAL,KAAc,YAAd,IACA6c,IAAI,CAACvlB,IAAL,KAAc,OADd,IAEA,KAAKoN,KAAL,CAAW8R,SAAX,CAAqBoB,OAArB,CAA6BhT,QAA7B,MAA2C,CAAC,CAH9C,EAIE;WACKwF,IAAL;YAEMrK,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;MACA9E,IAAI,CAACgG,MAAL,GAAc8W,IAAd;MACA9c,IAAI,CAACkG,SAAL,GAAiB,KAAK8W,4BAAL,CAAkCpY,KAAE,CAACnM,MAArC,EAA6C,KAA7C,CAAjB;MACAqkB,IAAI,GAAG,KAAKxX,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;KAVF,MAWO,IACL8c,IAAI,CAAC7c,IAAL,KAAc,YAAd,IACA6c,IAAI,CAACvlB,IAAL,KAAc,OADd,IAEA,KAAKqW,YAAL,CAAkB,GAAlB,CAHK,EAIL;YACMjJ,KAAK,GAAG,KAAKA,KAAL,CAAW4R,KAAX,EAAd;YACMtd,KAAK,GAAG,KAAKmd,QAAL,CACZ6G,KAAK,IACH,KAAKC,iCAAL,CAAuCrY,QAAvC,EAAiDC,QAAjD,KACAmY,KAAK,EAHK,EAIZtY,KAJY,CAAd;UAOI,CAAC1L,KAAK,CAACod,KAAP,IAAgB,CAACpd,KAAK,CAACkkB,OAA3B,EAAoC,OAAOlkB,KAAK,CAAC+G,IAAb;YAE9BmW,MAAM,GAAG,KAAKC,QAAL,CACb,MAAM,MAAMyG,eAAN,CAAsBC,IAAtB,EAA4BjY,QAA5B,EAAsCC,QAAtC,EAAgDiY,OAAhD,CADO,EAEbpY,KAFa,CAAf;UAKIwR,MAAM,CAACnW,IAAP,IAAe,CAACmW,MAAM,CAACE,KAA3B,EAAkC,OAAOF,MAAM,CAACnW,IAAd;;UAE9B/G,KAAK,CAAC+G,IAAV,EAAgB;aACT2E,KAAL,GAAa1L,KAAK,CAACqd,SAAnB;eACOrd,KAAK,CAAC+G,IAAb;;;UAGEmW,MAAM,CAACnW,IAAX,EAAiB;aACV2E,KAAL,GAAawR,MAAM,CAACG,SAApB;eACOH,MAAM,CAACnW,IAAd;;;YAGI/G,KAAK,CAACod,KAAN,IAAeF,MAAM,CAACE,KAA5B;;;WAGK,MAAMwG,eAAN,CAAsBC,IAAtB,EAA4BjY,QAA5B,EAAsCC,QAAtC,EAAgDiY,OAAhD,CAAP;;;EAGFK,cAAc,CACZN,IADY,EAEZjY,QAFY,EAGZC,QAHY,EAIZiY,OAJY,EAKZM,cALY,EAME;QACV,KAAKjQ,KAAL,CAAWxI,KAAE,CAAC5L,WAAd,KAA8B,KAAKskB,qBAAL,CAA2B,GAA3B,CAAlC,EAAmE;MACjED,cAAc,CAACE,mBAAf,GAAqC,IAArC;;UACIR,OAAJ,EAAa;QACXM,cAAc,CAACG,IAAf,GAAsB,IAAtB;eACOV,IAAP;;;WAEGzS,IAAL;YACMrK,IAA8B,GAAG,KAAKsB,WAAL,CACrCuD,QADqC,EAErCC,QAFqC,CAAvC;MAIA9E,IAAI,CAACgG,MAAL,GAAc8W,IAAd;MACA9c,IAAI,CAACyd,aAAL,GAAqB,KAAK1M,mCAAL,EAArB;WACKxE,MAAL,CAAY3H,KAAE,CAACpM,MAAf;MAEAwH,IAAI,CAACkG,SAAL,GAAiB,KAAK8W,4BAAL,CAAkCpY,KAAE,CAACnM,MAArC,EAA6C,KAA7C,CAAjB;MACAuH,IAAI,CAAC+F,QAAL,GAAgB,IAAhB;aACO,KAAKD,oBAAL,CAA0B9F,IAA1B,EAA+C,IAA/C,CAAP;KAjBF,MAkBO,IACL,CAAC+c,OAAD,IACA,KAAKtR,gBAAL,EADA,IAEA,KAAKmC,YAAL,CAAkB,GAAlB,CAHK,EAIL;YACM5N,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;MACA9E,IAAI,CAACgG,MAAL,GAAc8W,IAAd;YAEM3G,MAAM,GAAG,KAAKC,QAAL,CAAc,MAAM;QACjCpW,IAAI,CAACyd,aAAL,GAAqB,KAAKpL,4CAAL,EAArB;aACK9F,MAAL,CAAY3H,KAAE,CAACpM,MAAf;QACAwH,IAAI,CAACkG,SAAL,GAAiB,KAAK8W,4BAAL,CAAkCpY,KAAE,CAACnM,MAArC,EAA6C,KAA7C,CAAjB;YACI4kB,cAAc,CAACE,mBAAnB,EAAwCvd,IAAI,CAAC+F,QAAL,GAAgB,KAAhB;eACjC,KAAKD,oBAAL,CACL9F,IADK,EAELqd,cAAc,CAACE,mBAFV,CAAP;OALa,CAAf;;UAWIpH,MAAM,CAACnW,IAAX,EAAiB;YACXmW,MAAM,CAACE,KAAX,EAAkB,KAAK1R,KAAL,GAAawR,MAAM,CAACG,SAApB;eACXH,MAAM,CAACnW,IAAd;;;;WAIG,MAAMod,cAAN,CACLN,IADK,EAELjY,QAFK,EAGLC,QAHK,EAILiY,OAJK,EAKLM,cALK,CAAP;;;EASFK,iBAAiB,CAAC1d,IAAD,EAA8B;QACzC2d,KAAK,GAAG,IAAZ;;QACI,KAAKlS,gBAAL,MAA2B,KAAKmC,YAAL,CAAkB,GAAlB,CAA/B,EAAuD;MACrD+P,KAAK,GAAG,KAAKvH,QAAL,CAAc,MACpB,KAAK/D,4CAAL,EADM,EAENrS,IAFF;;;IAIFA,IAAI,CAACyd,aAAL,GAAqBE,KAArB;UAEMD,iBAAN,CAAwB1d,IAAxB;;;EAGFkd,iCAAiC,CAC/BrY,QAD+B,EAE/BC,QAF+B,EAGH;UACtB9E,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;SACKyW,mBAAL,CAAyBvb,IAAzB;QACI,CAAC,KAAKsc,UAAL,CAAgBtc,IAAhB,CAAL,EAA4B;WACrB,KAAK4d,oBAAL,CACL5d,IADK,EAEQwL,SAFR,EAGS,IAHT,CAAP;;;EAOFqS,qBAAqB,CAACpX,IAAD,EAAqB;UAClC4D,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAb;;QAEEtD,IAAI,OAAJ,IACA4D,IAAI,OADJ,IAEA,KAAK1F,KAAL,CAAWmZ,cAHb,EAIE;WACKnZ,KAAL,CAAWmZ,cAAX,GAA4B,KAA5B;WACKnZ,KAAL,CAAWoF,GAAX,IAAkB,CAAlB;WACKgU,SAAL;;;;UAIIF,qBAAN,CAA4BpX,IAA5B;;;EAGFuX,kBAAkB,CAACvX,IAAD,EAAqB;UAC/B4D,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAb;;QAEEtD,IAAI,QAAJ,IACA4D,IAAI,QAFN,EAGE;WAEK0O,QAAL,CAAcnU,KAAE,CAACrM,SAAjB,EAA4B,CAA5B;;;;UAIIylB,kBAAN,CAAyBvX,IAAzB;;;EAGFwX,aAAa,CAACC,IAAD,EAAeC,OAAf,EAA2C;UAChDC,QAAQ,GAAG,MAAMH,aAAN,CAAoBC,IAApB,EAA0BC,OAA1B,CAAjB;;QACI,KAAKxZ,KAAL,CAAWmZ,cAAf,EAA+B;WACxBxb,KAAL,CAAW,KAAKqC,KAAL,CAAWoF,GAAtB,EAA2B,2BAA3B;;;WAEKqU,QAAP;;;EAGFC,gBAAgB,GAAS;QACnB,KAAKtC,SAAL,CAAe,cAAf,KAAkC,KAAKuC,eAAL,EAAtC,EAA8D;UACxD,KAAK3Z,KAAL,CAAWmZ,cAAf,EAA+B;aACxB7O,UAAL,CACE,IADF,EAEE,wDAFF;;;WAKGsP,wBAAL;WACK5Z,KAAL,CAAWoF,GAAX,IAAkB,KAAKuU,eAAL,EAAlB;WACK3Z,KAAL,CAAWmZ,cAAX,GAA4B,IAA5B;;;;QAIE,KAAKnZ,KAAL,CAAWmZ,cAAf,EAA+B;YACvBjc,GAAG,GAAG,KAAKyG,KAAL,CAAWuP,OAAX,CAAmB,KAAnB,EAA2B,KAAKlT,KAAL,CAAWoF,GAAX,IAAkB,CAA7C,CAAZ;;UACIlI,GAAG,KAAK,CAAC,CAAb,EAAgB;cACR,KAAKS,KAAL,CAAW,KAAKqC,KAAL,CAAWoF,GAAX,GAAiB,CAA5B,EAA+B,sBAA/B,CAAN;;;WAEGpF,KAAL,CAAWoF,GAAX,GAAiBlI,GAAG,GAAG,CAAvB;;;;UAIIwc,gBAAN;;;EAGFC,eAAe,GAAqB;UAC5B;MAAEvU;QAAQ,KAAKpF,KAArB;QACI6Z,yBAAyB,GAAG,CAAhC;;WAEE,QAAiCC,QAAjC,CACE,KAAKnW,KAAL,CAAWwQ,UAAX,CAAsB/O,GAAG,GAAGyU,yBAA5B,CADF,CADF,EAIE;MACAA,yBAAyB;;;UAGrBE,GAAG,GAAG,KAAKpW,KAAL,CAAWwQ,UAAX,CAAsB0F,yBAAyB,GAAGzU,GAAlD,CAAZ;UACM4U,GAAG,GAAG,KAAKrW,KAAL,CAAWwQ,UAAX,CAAsB0F,yBAAyB,GAAGzU,GAA5B,GAAkC,CAAxD,CAAZ;;QAEI2U,GAAG,OAAH,IAA2BC,GAAG,OAAlC,EAAwD;aAC/CH,yBAAyB,GAAG,CAAnC;;;QAGA,KAAKlW,KAAL,CAAWxG,KAAX,CACE0c,yBAAyB,GAAGzU,GAD9B,EAEEyU,yBAAyB,GAAGzU,GAA5B,GAAkC,EAFpC,MAGM,cAJR,EAKE;aACOyU,yBAAyB,GAAG,EAAnC;;;QAEEE,GAAG,OAAH,IAA2BC,GAAG,OAAlC,EAAwD;aAC/CH,yBAAP;;;WAEK,KAAP;;;EAGFD,wBAAwB,GAAS;UACzB1c,GAAG,GAAG,KAAKyG,KAAL,CAAWuP,OAAX,CAAmB,IAAnB,EAAyB,KAAKlT,KAAL,CAAWoF,GAApC,CAAZ;;QACIlI,GAAG,KAAK,CAAC,CAAb,EAAgB;YACR,KAAKS,KAAL,CAAW,KAAKqC,KAAL,CAAWoF,GAAtB,EAA2B,sBAA3B,CAAN;;;;EAMJ6U,wCAAwC,CACtC7U,GADsC,EAEtC;IAAE8U,QAAF;IAAYC;GAF0B,EAGhC;SACDxc,KAAL,CACEyH,GADF,EAEG,6DAA4D+U,UAAW,aAAxE,GACG,QAAOA,UAAW,yBAAwBD,QAAS,KAHxD;;;EAOFE,8BAA8B,CAC5BhV,GAD4B,EAE5B;IAAE8U,QAAF;IAAYC;GAFgB,EAGtB;UACAlP,UAAU,GAAGkP,UAAU,CAAC,CAAD,CAAV,CAAcE,WAAd,KAA8BF,UAAU,CAAChd,KAAX,CAAiB,CAAjB,CAAjD;SACKQ,KAAL,CACEyH,GADF,EAEG,kFAAD,GACG,KAAI+U,UAAW,wBAAuBlP,UAAW,iBAAgBiP,QAAS,KAH/E;;;EAOFI,gCAAgC,CAC9BlV,GAD8B,EAE9B;IAAE8U,QAAF;IAAYC;GAFkB,EAGxB;SACDxc,KAAL,CACEyH,GADF,EAEG,uDAAsD+U,UAAW,2BAAlE,GACG,oBAAmBD,QAAS,KAHjC;;;EAOFK,qCAAqC,CACnCnV,GADmC,EAEnC;IAAE8U;GAFiC,EAG7B;SACDvc,KAAL,CACEyH,GADF,EAEG,UAAS8U,QAAS,0EAAnB,GACG,+FAHL;;;EAOFM,gCAAgC,CAC9BpV,GAD8B,EAE9B;IACE8U,QADF;IAEEO;GAJ4B,EAM9B;UACMxP,UAAU,GACb,mEAAD,GACC,UAASiP,QAAS,KAFrB;UAGMQ,OAAO,GACXD,YAAY,KAAK,IAAjB,GACK,oCAAmCxP,UAAW,EADnD,GAEK,eAAcwP,YAAa,oBAAmBxP,UAAW,EAHhE;WAIO,KAAKtN,KAAL,CAAWyH,GAAX,EAAgBsV,OAAhB,CAAP;;;EAGFC,qCAAqC,CACnCvV,GADmC,EAEnC;IAAE8U,QAAF;IAAYU,YAAZ;IAA0BT;GAFS,EAGnC;QACIO,OAAO,GAAG,IAAd;;YACQE,YAAR;WACO,SAAL;WACK,QAAL;WACK,QAAL;QACEF,OAAO,GACJ,UAASR,QAAS,iBAAgBU,YAAa,4BAAhD,GACC,KAAIT,UAAW,oBAAmBS,YAAa,WAFlD;;;WAIG,QAAL;QACEF,OAAO,GACJ,oDAAmDP,UAAW,SAA/D,GACC,UAASD,QAAS,KAFrB;;;;QAMAQ,OAAO,GACJ,qCAAoCP,UAAW,mCAAhD,GACC,2CAA0CD,QAAS,KAFtD;;;WAIG,KAAKvc,KAAL,CAAWyH,GAAX,EAAgBsV,OAAhB,CAAP;;;EAGFG,uCAAuC,CACrCzV,GADqC,EAErC;IAAE8U,QAAF;IAAYC;GAFyB,EAG/B;SACDxc,KAAL,CACEyH,GADF,EAEG,sDAAqD+U,UAAW,oBAAmBD,QAAS,KAF/F;;;EAMFY,kDAAkD,CAChD1V,GADgD,EAEhD;IAAE8U;GAF8C,EAG1C;SACDvc,KAAL,CACEyH,GADF,EAEG,gGAAD,GACG,aAAY8U,QAAS,KAH1B;;;EAOFa,kBAAkB,GAAmB;UAC7B7a,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;;UACMoe,SAAS,GAAG,MAAM,KAAKvS,KAAL,CAAWxI,KAAE,CAAClM,KAAd,KAAwB,KAAK0U,KAAL,CAAWxI,KAAE,CAACtM,MAAd,CAAhD;;YACQ,KAAKqM,KAAL,CAAW1E,IAAnB;WACO2E,KAAE,CAAC/M,GAAR;;gBACQ+nB,OAAO,GAAG,KAAK3e,YAAL,CAAkB,KAAK0D,KAAL,CAAW9D,KAA7B,EAAoC,gBAApC,CAAhB;;cACI8e,SAAS,EAAb,EAAiB;mBACR;cAAE1f,IAAI,EAAE,QAAR;cAAkB8J,GAAG,EAAE6V,OAAO,CAACre,KAA/B;cAAsCV,KAAK,EAAE+e;aAApD;;;iBAEK;YAAE3f,IAAI,EAAE,SAAR;YAAmB8J,GAAG,EAAElF;WAA/B;;;WAEGD,KAAE,CAAC5M,MAAR;;gBACQ4nB,OAAO,GAAG,KAAK3e,YAAL,CAAkB,KAAK0D,KAAL,CAAW9D,KAA7B,EAAoC,eAApC,CAAhB;;cACI8e,SAAS,EAAb,EAAiB;mBACR;cAAE1f,IAAI,EAAE,QAAR;cAAkB8J,GAAG,EAAE6V,OAAO,CAACre,KAA/B;cAAsCV,KAAK,EAAE+e;aAApD;;;iBAEK;YAAE3f,IAAI,EAAE,SAAR;YAAmB8J,GAAG,EAAElF;WAA/B;;;WAEGD,KAAE,CAACnI,KAAR;WACKmI,KAAE,CAAClI,MAAR;;gBACQkjB,OAAO,GAAG,KAAKC,mBAAL,EAAhB;;cACIF,SAAS,EAAb,EAAiB;mBACR;cACL1f,IAAI,EAAE,SADD;cAEL8J,GAAG,EAAE6V,OAAO,CAACre,KAFR;cAGLV,KAAK,EAAE+e;aAHT;;;iBAMK;YAAE3f,IAAI,EAAE,SAAR;YAAmB8J,GAAG,EAAElF;WAA/B;;;;eAGO;UAAE5E,IAAI,EAAE,SAAR;UAAmB8J,GAAG,EAAElF;SAA/B;;;;EAINib,iBAAiB,GAAyC;UAClD/V,GAAG,GAAG,KAAKpF,KAAL,CAAWpD,KAAvB;UACMiM,EAAE,GAAG,KAAKC,eAAL,CAAqB,IAArB,CAAX;UACMsS,IAAI,GAAG,KAAK/S,GAAL,CAASpI,KAAE,CAACnL,EAAZ,IACT,KAAKimB,kBAAL,EADS,GAET;MAAEzf,IAAI,EAAE,MAAR;MAAgB8J;KAFpB;WAGO;MAAEyD,EAAF;MAAMuS;KAAb;;;EAGFC,iCAAiC,CAC/BjW,GAD+B,EAE/BtC,OAF+B,EAG/BwY,YAH+B,EAIzB;UACA;MAAEV;QAAiB9X,OAAzB;;QACI8X,YAAY,KAAK,IAArB,EAA2B;;;;QAGvBA,YAAY,KAAKU,YAArB,EAAmC;WAC5BX,qCAAL,CAA2CvV,GAA3C,EAAgDtC,OAAhD;;;;EAIJyY,eAAe,CAAC;IACdrB,QADc;IAEdU;GAFa,EAWZ;UACKY,SAAS,GAAG,IAAItX,GAAJ,EAAlB;UACMuX,OAAO,GAAG;MACdC,cAAc,EAAE,EADF;MAEdC,aAAa,EAAE,EAFD;MAGdC,aAAa,EAAE,EAHD;MAIdC,gBAAgB,EAAE;KAJpB;;WAMO,CAAC,KAAKpT,KAAL,CAAWxI,KAAE,CAACtM,MAAd,CAAR,EAA+B;YACvBmoB,UAAU,GAAG,KAAKpb,SAAL,EAAnB;YACM;QAAEmI,EAAF;QAAMuS;UAAS,KAAKD,iBAAL,EAArB;YACMhB,UAAU,GAAGtR,EAAE,CAACjW,IAAtB;;UACIunB,UAAU,KAAK,EAAnB,EAAuB;;;;UAGnB,SAASzW,IAAT,CAAcyW,UAAd,CAAJ,EAA+B;aACxBC,8BAAL,CAAoCvR,EAAE,CAACjM,KAAvC,EAA8C;UAC5Csd,QAD4C;UAE5CC;SAFF;;;UAKEqB,SAAS,CAAChX,GAAV,CAAc2V,UAAd,CAAJ,EAA+B;aACxBG,gCAAL,CAAsCzR,EAAE,CAACjM,KAAzC,EAAgD;UAC9Csd,QAD8C;UAE9CC;SAFF;;;MAKFqB,SAAS,CAACO,GAAV,CAAc5B,UAAd;YACMrX,OAAO,GAAG;QAAEoX,QAAF;QAAYU,YAAZ;QAA0BT;OAA1C;MACA2B,UAAU,CAACjT,EAAX,GAAgBA,EAAhB;;cACQuS,IAAI,CAAC9f,IAAb;aACO,SAAL;;iBACO+f,iCAAL,CACED,IAAI,CAAChW,GADP,EAEEtC,OAFF,EAGE,SAHF;YAKAgZ,UAAU,CAACV,IAAX,GAAkBA,IAAI,CAAClf,KAAvB;YACAuf,OAAO,CAACC,cAAR,CAAuB5b,IAAvB,CACE,KAAKa,UAAL,CAAgBmb,UAAhB,EAA4B,mBAA5B,CADF;;;;aAKG,QAAL;;iBACOT,iCAAL,CAAuCD,IAAI,CAAChW,GAA5C,EAAiDtC,OAAjD,EAA0D,QAA1D;YACAgZ,UAAU,CAACV,IAAX,GAAkBA,IAAI,CAAClf,KAAvB;YACAuf,OAAO,CAACE,aAAR,CAAsB7b,IAAtB,CACE,KAAKa,UAAL,CAAgBmb,UAAhB,EAA4B,kBAA5B,CADF;;;;aAKG,QAAL;;iBACOT,iCAAL,CAAuCD,IAAI,CAAChW,GAA5C,EAAiDtC,OAAjD,EAA0D,QAA1D;YACAgZ,UAAU,CAACV,IAAX,GAAkBA,IAAI,CAAClf,KAAvB;YACAuf,OAAO,CAACG,aAAR,CAAsB9b,IAAtB,CACE,KAAKa,UAAL,CAAgBmb,UAAhB,EAA4B,kBAA5B,CADF;;;;aAKG,SAAL;;kBACQ,KAAKnB,qCAAL,CAA2CS,IAAI,CAAChW,GAAhD,EAAqDtC,OAArD,CAAN;;;aAEG,MAAL;;oBACU8X,YAAR;mBACO,SAAL;qBACOX,wCAAL,CACEmB,IAAI,CAAChW,GADP,EAEEtC,OAFF;;;mBAKG,QAAL;qBACO+X,uCAAL,CAA6CO,IAAI,CAAChW,GAAlD,EAAuDtC,OAAvD;;;;gBAGA2Y,OAAO,CAACI,gBAAR,CAAyB/b,IAAzB,CACE,KAAKa,UAAL,CAAgBmb,UAAhB,EAA4B,qBAA5B,CADF;;;;;UAOJ,CAAC,KAAKrT,KAAL,CAAWxI,KAAE,CAACtM,MAAd,CAAL,EAA4B;aACrBiU,MAAL,CAAY3H,KAAE,CAAClM,KAAf;;;;WAGG0nB,OAAP;;;EAGFO,qBAAqB,CACnBC,kBADmB,EAEnBJ,gBAFmB,EAGnB;IAAE3B;GAHiB,EAIJ;QACX+B,kBAAkB,CAACve,MAAnB,KAA8B,CAAlC,EAAqC;aAC5Bme,gBAAP;KADF,MAEO,IAAIA,gBAAgB,CAACne,MAAjB,KAA4B,CAAhC,EAAmC;aACjCue,kBAAP;KADK,MAEA,IAAIJ,gBAAgB,CAACne,MAAjB,GAA0Bue,kBAAkB,CAACve,MAAjD,EAAyD;4BACzCue,kBADyC,eACrB;cAA9BC,MAAM,GAAID,kBAAJ,IAAZ;aACEnB,kDAAL,CACEoB,MAAM,CAACtf,KADT,EAEE;UAAEsd;SAFJ;;;aAKK2B,gBAAP;KAPK,MAQA;8BACgBA,gBADhB,gBACkC;cAA5BK,MAAM,GAAIL,gBAAJ,KAAZ;aACEf,kDAAL,CACEoB,MAAM,CAACtf,KADT,EAEE;UAAEsd;SAFJ;;;aAKK+B,kBAAP;;;;EAIJE,yBAAyB,CAAC;IACxBjC;GADuB,EAIJ;QACf,KAAKrQ,aAAL,CAAmB,IAAnB,CAAJ,EAA8B;UACxB,CAAC,KAAKpB,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAL,EAA0B;cAClB,KAAK4nB,gCAAL,CAAsC,KAAKxa,KAAL,CAAWpD,KAAjD,EAAwD;UAC5Dsd,QAD4D;UAE5DO,YAAY,EAAE;SAFV,CAAN;;;YAMI;QAAEve;UAAU,KAAK8D,KAAvB;WACK0F,IAAL;;UAGExJ,KAAK,KAAK,SAAV,IACAA,KAAK,KAAK,QADV,IAEAA,KAAK,KAAK,QAFV,IAGAA,KAAK,KAAK,QAJZ,EAKE;aACKse,gCAAL,CAAsC,KAAKxa,KAAL,CAAWpD,KAAjD,EAAwD;UACtDsd,QADsD;UAEtDO,YAAY,EAAEve;SAFhB;;;aAMKA,KAAP;;;WAEK,IAAP;;;EAGFkgB,YAAY,CAAC/gB,IAAD,EAAe;IAAE6e,QAAF;IAAYmC;GAA3B,EAA8C;UAClDzB,YAAY,GAAG,KAAKuB,yBAAL,CAA+B;MAAEjC;KAAjC,CAArB;SACKtS,MAAL,CAAY3H,KAAE,CAACxM,MAAf;UACMgoB,OAAO,GAAG,KAAKF,eAAL,CAAqB;MAAErB,QAAF;MAAYU;KAAjC,CAAhB;;YAEQA,YAAR;WACO,SAAL;QACEvf,IAAI,CAACuf,YAAL,GAAoB,IAApB;QACAvf,IAAI,CAACogB,OAAL,GAAeA,OAAO,CAACC,cAAvB;aACK9T,MAAL,CAAY3H,KAAE,CAACtM,MAAf;eACO,KAAKgN,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;;WACG,QAAL;QACEA,IAAI,CAACuf,YAAL,GAAoB,IAApB;QACAvf,IAAI,CAACogB,OAAL,GAAeA,OAAO,CAACE,aAAvB;aACK/T,MAAL,CAAY3H,KAAE,CAACtM,MAAf;eACO,KAAKgN,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;;WACG,QAAL;QACEA,IAAI,CAACuf,YAAL,GAAoB,IAApB;QACAvf,IAAI,CAACogB,OAAL,GAAe,KAAKO,qBAAL,CACbP,OAAO,CAACG,aADK,EAEbH,OAAO,CAACI,gBAFK,EAGb;UAAE3B;SAHW,CAAf;aAKKtS,MAAL,CAAY3H,KAAE,CAACtM,MAAf;eACO,KAAKgN,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;;WACG,QAAL;QACEA,IAAI,CAACogB,OAAL,GAAeA,OAAO,CAACI,gBAAvB;aACKjU,MAAL,CAAY3H,KAAE,CAACtM,MAAf;eACO,KAAKgN,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;;;;gBAGMihB,KAAK,GAAG,MAAM;YAClBjhB,IAAI,CAACogB,OAAL,GAAe,EAAf;iBACK7T,MAAL,CAAY3H,KAAE,CAACtM,MAAf;mBACO,KAAKgN,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;WAHF;;UAKAA,IAAI,CAACuf,YAAL,GAAoB,KAApB;gBAEM2B,QAAQ,GAAGd,OAAO,CAACC,cAAR,CAAuBhe,MAAxC;gBACM8e,OAAO,GAAGf,OAAO,CAACE,aAAR,CAAsBje,MAAtC;gBACM+e,OAAO,GAAGhB,OAAO,CAACG,aAAR,CAAsBle,MAAtC;gBACMgf,YAAY,GAAGjB,OAAO,CAACI,gBAAR,CAAyBne,MAA9C;;cAEI,CAAC6e,QAAD,IAAa,CAACC,OAAd,IAAyB,CAACC,OAA1B,IAAqC,CAACC,YAA1C,EAAwD;mBAC/CJ,KAAK,EAAZ;WADF,MAEO,IAAI,CAACC,QAAD,IAAa,CAACC,OAAlB,EAA2B;YAChCnhB,IAAI,CAACogB,OAAL,GAAe,KAAKO,qBAAL,CACbP,OAAO,CAACG,aADK,EAEbH,OAAO,CAACI,gBAFK,EAGb;cAAE3B;aAHW,CAAf;iBAKKtS,MAAL,CAAY3H,KAAE,CAACtM,MAAf;mBACO,KAAKgN,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;WAPK,MAQA,IAAI,CAACmhB,OAAD,IAAY,CAACC,OAAb,IAAwBF,QAAQ,IAAIG,YAAxC,EAAsD;sDACtCjB,OAAO,CAACI,gBAD8B,6CACZ;oBAApCK,MAAM,6BAAZ;mBACEjC,wCAAL,CAA8CiC,MAAM,CAACtf,KAArD,EAA4D;gBAC1Dsd,QAD0D;gBAE1DC,UAAU,EAAE+B,MAAM,CAACrT,EAAP,CAAUjW;eAFxB;;;YAKFyI,IAAI,CAACogB,OAAL,GAAeA,OAAO,CAACC,cAAvB;iBACK9T,MAAL,CAAY3H,KAAE,CAACtM,MAAf;mBACO,KAAKgN,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;WATK,MAUA,IAAI,CAACkhB,QAAD,IAAa,CAACE,OAAd,IAAyBD,OAAO,IAAIE,YAAxC,EAAsD;uDACtCjB,OAAO,CAACI,gBAD8B,8CACZ;oBAApCK,MAAM,8BAAZ;mBACErB,uCAAL,CAA6CqB,MAAM,CAACtf,KAApD,EAA2D;gBACzDsd,QADyD;gBAEzDC,UAAU,EAAE+B,MAAM,CAACrT,EAAP,CAAUjW;eAFxB;;;YAKFyI,IAAI,CAACogB,OAAL,GAAeA,OAAO,CAACE,aAAvB;iBACK/T,MAAL,CAAY3H,KAAE,CAACtM,MAAf;mBACO,KAAKgN,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;WATK,MAUA;iBACAkf,qCAAL,CAA2C8B,OAA3C,EAAoD;cAAEnC;aAAtD;mBACOoC,KAAK,EAAZ;;;;;;EAMRtL,wBAAwB,CAAC3V,IAAD,EAAuB;UACvCwN,EAAE,GAAG,KAAKC,eAAL,EAAX;IACAzN,IAAI,CAACwN,EAAL,GAAUA,EAAV;IACAxN,IAAI,CAACiE,IAAL,GAAY,KAAK8c,YAAL,CAAkB,KAAK1b,SAAL,EAAlB,EAAoC;MAC9CwZ,QAAQ,EAAErR,EAAE,CAACjW,IADiC;MAE9CypB,OAAO,EAAExT,EAAE,CAACjM;KAFF,CAAZ;WAIO,KAAK+D,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;;;CArtGN;;AClGA,MAAMshB,QAAoC,GAAG;EAC3CC,IAAI,EAAE,QADqC;EAE3CC,GAAG,EAAE,GAFsC;EAG3CC,IAAI,EAAE,QAHqC;EAI3CC,EAAE,EAAE,GAJuC;EAK3CC,EAAE,EAAE,GALuC;EAM3CC,IAAI,EAAE,QANqC;EAO3CC,KAAK,EAAE,QAPoC;EAQ3CC,IAAI,EAAE,QARqC;EAS3CC,KAAK,EAAE,QAToC;EAU3CC,MAAM,EAAE,QAVmC;EAW3CC,GAAG,EAAE,QAXsC;EAY3CC,MAAM,EAAE,QAZmC;EAa3CC,IAAI,EAAE,QAbqC;EAc3CC,GAAG,EAAE,QAdsC;EAe3CC,IAAI,EAAE,QAfqC;EAgB3CC,IAAI,EAAE,QAhBqC;EAiB3CC,KAAK,EAAE,QAjBoC;EAkB3CC,GAAG,EAAE,QAlBsC;EAmB3CC,GAAG,EAAE,QAnBsC;EAoB3CC,GAAG,EAAE,QApBsC;EAqB3CC,IAAI,EAAE,QArBqC;EAsB3CC,GAAG,EAAE,QAtBsC;EAuB3CC,MAAM,EAAE,QAvBmC;EAwB3CC,IAAI,EAAE,QAxBqC;EAyB3CC,IAAI,EAAE,QAzBqC;EA0B3CC,KAAK,EAAE,QA1BoC;EA2B3CC,KAAK,EAAE,QA3BoC;EA4B3CC,IAAI,EAAE,QA5BqC;EA6B3CC,MAAM,EAAE,QA7BmC;EA8B3CC,KAAK,EAAE,QA9BoC;EA+B3CC,IAAI,EAAE,QA/BqC;EAgC3CC,IAAI,EAAE,QAhCqC;EAiC3CC,KAAK,EAAE,QAjCoC;EAkC3CC,MAAM,EAAE,QAlCmC;EAmC3CC,MAAM,EAAE,QAnCmC;EAoC3CC,MAAM,EAAE,QApCmC;EAqC3CC,MAAM,EAAE,QArCmC;EAsC3CC,MAAM,EAAE,QAtCmC;EAuC3CC,MAAM,EAAE,QAvCmC;EAwC3CC,KAAK,EAAE,QAxCoC;EAyC3CC,MAAM,EAAE,QAzCmC;EA0C3CC,IAAI,EAAE,QA1CqC;EA2C3CC,KAAK,EAAE,QA3CoC;EA4C3CC,KAAK,EAAE,QA5CoC;EA6C3CC,MAAM,EAAE,QA7CmC;EA8C3CC,MAAM,EAAE,QA9CmC;EA+C3CC,MAAM,EAAE,QA/CmC;EAgD3CC,KAAK,EAAE,QAhDoC;EAiD3CC,IAAI,EAAE,QAjDqC;EAkD3CC,MAAM,EAAE,QAlDmC;EAmD3CC,MAAM,EAAE,QAnDmC;EAoD3CC,KAAK,EAAE,QApDoC;EAqD3CC,IAAI,EAAE,QArDqC;EAsD3CC,GAAG,EAAE,QAtDsC;EAuD3CC,MAAM,EAAE,QAvDmC;EAwD3CC,MAAM,EAAE,QAxDmC;EAyD3CC,MAAM,EAAE,QAzDmC;EA0D3CC,KAAK,EAAE,QA1DoC;EA2D3CC,MAAM,EAAE,QA3DmC;EA4D3CC,IAAI,EAAE,QA5DqC;EA6D3CC,KAAK,EAAE,QA7DoC;EA8D3CC,MAAM,EAAE,QA9DmC;EA+D3CC,MAAM,EAAE,QA/DmC;EAgE3CC,MAAM,EAAE,QAhEmC;EAiE3CC,KAAK,EAAE,QAjEoC;EAkE3CC,IAAI,EAAE,QAlEqC;EAmE3CC,MAAM,EAAE,QAnEmC;EAoE3CC,KAAK,EAAE,QApEoC;EAqE3CC,KAAK,EAAE,QArEoC;EAsE3CC,MAAM,EAAE,QAtEmC;EAuE3CC,MAAM,EAAE,QAvEmC;EAwE3CC,KAAK,EAAE,QAxEoC;EAyE3CC,MAAM,EAAE,QAzEmC;EA0E3CC,IAAI,EAAE,QA1EqC;EA2E3CC,KAAK,EAAE,QA3EoC;EA4E3CC,KAAK,EAAE,QA5EoC;EA6E3CC,MAAM,EAAE,QA7EmC;EA8E3CC,MAAM,EAAE,QA9EmC;EA+E3CC,MAAM,EAAE,QA/EmC;EAgF3CC,KAAK,EAAE,QAhFoC;EAiF3CC,IAAI,EAAE,QAjFqC;EAkF3CC,MAAM,EAAE,QAlFmC;EAmF3CC,MAAM,EAAE,QAnFmC;EAoF3CC,KAAK,EAAE,QApFoC;EAqF3CC,IAAI,EAAE,QArFqC;EAsF3CC,GAAG,EAAE,QAtFsC;EAuF3CC,MAAM,EAAE,QAvFmC;EAwF3CC,MAAM,EAAE,QAxFmC;EAyF3CC,MAAM,EAAE,QAzFmC;EA0F3CC,KAAK,EAAE,QA1FoC;EA2F3CC,MAAM,EAAE,QA3FmC;EA4F3CC,IAAI,EAAE,QA5FqC;EA6F3CC,MAAM,EAAE,QA7FmC;EA8F3CC,MAAM,EAAE,QA9FmC;EA+F3CC,MAAM,EAAE,QA/FmC;EAgG3CC,MAAM,EAAE,QAhGmC;EAiG3CC,KAAK,EAAE,QAjGoC;EAkG3CC,IAAI,EAAE,QAlGqC;EAmG3CC,MAAM,EAAE,QAnGmC;EAoG3CC,KAAK,EAAE,QApGoC;EAqG3CC,IAAI,EAAE,QArGqC;EAsG3CC,KAAK,EAAE,QAtGoC;EAuG3CC,KAAK,EAAE,QAvGoC;EAwG3CC,MAAM,EAAE,QAxGmC;EAyG3CC,MAAM,EAAE,QAzGmC;EA0G3CC,IAAI,EAAE,QA1GqC;EA2G3CC,IAAI,EAAE,QA3GqC;EA4G3CC,IAAI,EAAE,QA5GqC;EA6G3CruB,KAAK,EAAE,QA7GoC;EA8G3CsuB,KAAK,EAAE,QA9GoC;EA+G3CC,IAAI,EAAE,QA/GqC;EAgH3CC,KAAK,EAAE,QAhHoC;EAiH3CC,KAAK,EAAE,QAjHoC;EAkH3CC,OAAO,EAAE,QAlHkC;EAmH3CC,IAAI,EAAE,QAnHqC;EAoH3CC,GAAG,EAAE,QApHsC;EAqH3CC,KAAK,EAAE,QArHoC;EAsH3CC,IAAI,EAAE,QAtHqC;EAuH3CC,KAAK,EAAE,QAvHoC;EAwH3CC,MAAM,EAAE,QAxHmC;EAyH3CC,EAAE,EAAE,QAzHuC;EA0H3CC,EAAE,EAAE,QA1HuC;EA2H3CC,EAAE,EAAE,QA3HuC;EA4H3CC,OAAO,EAAE,QA5HkC;EA6H3CC,EAAE,EAAE,QA7HuC;EA8H3CC,GAAG,EAAE,QA9HsC;EA+H3CC,KAAK,EAAE,QA/HoC;EAgI3CC,GAAG,EAAE,QAhIsC;EAiI3CC,OAAO,EAAE,QAjIkC;EAkI3CC,GAAG,EAAE,QAlIsC;EAmI3CC,GAAG,EAAE,QAnIsC;EAoI3CC,GAAG,EAAE,QApIsC;EAqI3CC,KAAK,EAAE,QArIoC;EAsI3CC,KAAK,EAAE,QAtIoC;EAuI3CC,IAAI,EAAE,QAvIqC;EAwI3CC,KAAK,EAAE,QAxIoC;EAyI3CC,KAAK,EAAE,QAzIoC;EA0I3CC,OAAO,EAAE,QA1IkC;EA2I3CC,IAAI,EAAE,QA3IqC;EA4I3CC,GAAG,EAAE,QA5IsC;EA6I3CC,KAAK,EAAE,QA7IoC;EA8I3CC,IAAI,EAAE,QA9IqC;EA+I3CC,KAAK,EAAE,QA/IoC;EAgJ3CC,MAAM,EAAE,QAhJmC;EAiJ3CC,EAAE,EAAE,QAjJuC;EAkJ3CC,EAAE,EAAE,QAlJuC;EAmJ3CC,EAAE,EAAE,QAnJuC;EAoJ3CC,OAAO,EAAE,QApJkC;EAqJ3CC,EAAE,EAAE,QArJuC;EAsJ3CC,GAAG,EAAE,QAtJsC;EAuJ3CC,MAAM,EAAE,QAvJmC;EAwJ3CC,KAAK,EAAE,QAxJoC;EAyJ3CC,GAAG,EAAE,QAzJsC;EA0J3CC,OAAO,EAAE,QA1JkC;EA2J3CC,GAAG,EAAE,QA3JsC;EA4J3CC,GAAG,EAAE,QA5JsC;EA6J3CC,GAAG,EAAE,QA7JsC;EA8J3CC,KAAK,EAAE,QA9JoC;EA+J3CC,QAAQ,EAAE,QA/JiC;EAgK3CC,KAAK,EAAE,QAhKoC;EAiK3CC,GAAG,EAAE,QAjKsC;EAkK3CC,IAAI,EAAE,QAlKqC;EAmK3CC,IAAI,EAAE,QAnKqC;EAoK3CC,MAAM,EAAE,QApKmC;EAqK3CC,IAAI,EAAE,QArKqC;EAsK3CC,GAAG,EAAE,QAtKsC;EAuK3CC,GAAG,EAAE,QAvKsC;EAwK3CC,GAAG,EAAE,QAxKsC;EAyK3CC,KAAK,EAAE,QAzKoC;EA0K3CC,KAAK,EAAE,QA1KoC;EA2K3CC,KAAK,EAAE,QA3KoC;EA4K3CC,KAAK,EAAE,QA5KoC;EA6K3CC,KAAK,EAAE,QA7KoC;EA8K3CC,KAAK,EAAE,QA9KoC;EA+K3CC,KAAK,EAAE,QA/KoC;EAgL3CC,KAAK,EAAE,QAhLoC;EAiL3CC,MAAM,EAAE,QAjLmC;EAkL3CC,MAAM,EAAE,QAlLmC;EAmL3CC,IAAI,EAAE,QAnLqC;EAoL3CC,MAAM,EAAE,QApLmC;EAqL3CC,MAAM,EAAE,QArLmC;EAsL3CC,KAAK,EAAE,QAtLoC;EAuL3CC,KAAK,EAAE,QAvLoC;EAwL3CC,MAAM,EAAE,QAxLmC;EAyL3CC,MAAM,EAAE,QAzLmC;EA0L3CC,KAAK,EAAE,QA1LoC;EA2L3CC,KAAK,EAAE,QA3LoC;EA4L3CC,IAAI,EAAE,QA5LqC;EA6L3CC,KAAK,EAAE,QA7LoC;EA8L3CC,MAAM,EAAE,QA9LmC;EA+L3CC,IAAI,EAAE,QA/LqC;EAgM3CC,KAAK,EAAE,QAhMoC;EAiM3CC,OAAO,EAAE,QAjMkC;EAkM3CC,IAAI,EAAE,QAlMqC;EAmM3CC,IAAI,EAAE,QAnMqC;EAoM3CC,IAAI,EAAE,QApMqC;EAqM3CC,IAAI,EAAE,QArMqC;EAsM3CC,IAAI,EAAE,QAtMqC;EAuM3CC,KAAK,EAAE,QAvMoC;EAwM3CC,IAAI,EAAE,QAxMqC;EAyM3CC,IAAI,EAAE,QAzMqC;EA0M3CC,IAAI,EAAE,QA1MqC;EA2M3CC,IAAI,EAAE,QA3MqC;EA4M3CC,IAAI,EAAE,QA5MqC;EA6M3CC,MAAM,EAAE,QA7MmC;EA8M3CC,IAAI,EAAE,QA9MqC;EA+M3CC,KAAK,EAAE,QA/MoC;EAgN3CnN,KAAK,EAAE,QAhNoC;EAiN3CoN,KAAK,EAAE,QAjNoC;EAkN3CC,IAAI,EAAE,QAlNqC;EAmN3CC,KAAK,EAAE,QAnNoC;EAoN3CC,EAAE,EAAE,QApNuC;EAqN3CC,IAAI,EAAE,QArNqC;EAsN3CC,GAAG,EAAE,QAtNsC;EAuN3CC,KAAK,EAAE,QAvNoC;EAwN3CC,MAAM,EAAE,QAxNmC;EAyN3CC,KAAK,EAAE,QAzNoC;EA0N3C3sB,IAAI,EAAE,QA1NqC;EA2N3C4sB,KAAK,EAAE,QA3NoC;EA4N3CC,GAAG,EAAE,QA5NsC;EA6N3CC,GAAG,EAAE,QA7NsC;EA8N3CC,EAAE,EAAE,QA9NuC;EA+N3CC,GAAG,EAAE,QA/NsC;EAgO3CC,GAAG,EAAE,QAhOsC;EAiO3CC,GAAG,EAAE,QAjOsC;EAkO3CC,MAAM,EAAE,QAlOmC;EAmO3CC,GAAG,EAAE,QAnOsC;EAoO3CC,IAAI,EAAE,QApOqC;EAqO3CC,KAAK,EAAE,QArOoC;EAsO3CC,EAAE,EAAE,QAtOuC;EAuO3CC,KAAK,EAAE,QAvOoC;EAwO3CC,EAAE,EAAE,QAxOuC;EAyO3CC,EAAE,EAAE,QAzOuC;EA0O3CC,GAAG,EAAE,QA1OsC;EA2O3CC,GAAG,EAAE,QA3OsC;EA4O3CC,IAAI,EAAE,QA5OqC;EA6O3CC,IAAI,EAAE,QA7OqC;EA8O3CC,IAAI,EAAE,QA9OqC;EA+O3CC,KAAK,EAAE,QA/OoC;EAgP3CC,MAAM,EAAE,QAhPmC;EAiP3CC,IAAI,EAAE,QAjPqC;EAkP3CC,IAAI,EAAE,QAlPqC;EAmP3CC,KAAK,EAAE,QAnPoC;EAoP3CC,KAAK,EAAE,QApPoC;EAqP3CC,MAAM,EAAE,QArPmC;EAsP3CC,MAAM,EAAE,QAtPmC;EAuP3CC,IAAI,EAAE,QAvPqC;EAwP3CC,IAAI,EAAE,QAxPqC;EAyP3CC,GAAG,EAAE,QAzPsC;EA0P3CC,MAAM,EAAE,QA1PmC;EA2P3CC,KAAK,EAAE,QA3PoC;EA4P3CC,MAAM,EAAE,QA5PmC;EA6P3CC,KAAK,EAAE;CA7PT;;ACYA,MAAMC,UAAU,GAAG,eAAnB;AACA,MAAMC,cAAc,GAAG,OAAvB;AAIAlV,OAAE,CAACC,MAAH,GAAY,IAAIrV,UAAJ,CAAe,MAAf,EAAuB,KAAvB,CAAZ;AACAoV,OAAE,CAACmV,MAAH,GAAY,IAAIvqB,UAAJ,CAAe,OAAf,EAAwB,KAAxB,CAAZ;AACAoV,OAAE,CAACE,MAAH,GAAY,IAAItV,UAAJ,CAAe,gBAAf,EAAiC,IAAjC,EAAuC,IAAvC,CAAZ;AAEAhC,KAAE,CAACwsB,OAAH,GAAa,IAAIx6B,SAAJ,CAAc,SAAd,CAAb;AACAgO,KAAE,CAACysB,OAAH,GAAa,IAAIz6B,SAAJ,CAAc,SAAd,EAAyB;EAAEN,UAAU,EAAE;CAAvC,CAAb;AACAsO,KAAE,CAACmN,WAAH,GAAiB,IAAInb,SAAJ,CAAc,aAAd,EAA6B;EAAEL,UAAU,EAAE;CAA3C,CAAjB;AACAqO,KAAE,CAAC0sB,SAAH,GAAe,IAAI16B,SAAJ,CAAc,WAAd,CAAf;;AAEAgO,KAAE,CAACmN,WAAH,CAAe5a,aAAf,GAA+B,YAAW;OACnCwN,KAAL,CAAW8C,OAAX,CAAmBhD,IAAnB,CAAwBuX,OAAE,CAACE,MAA3B;OACKvX,KAAL,CAAW8C,OAAX,CAAmBhD,IAAnB,CAAwBuX,OAAE,CAACC,MAA3B;OACKtX,KAAL,CAAW+C,WAAX,GAAyB,KAAzB;CAHF;;AAMA9C,KAAE,CAAC0sB,SAAH,CAAan6B,aAAb,GAA6B,UAAS2Q,QAAT,EAAmB;QACxCH,GAAG,GAAG,KAAKhD,KAAL,CAAW8C,OAAX,CAAmBG,GAAnB,EAAZ;;MACKD,GAAG,KAAKqU,OAAE,CAACC,MAAX,IAAqBnU,QAAQ,KAAKlD,KAAE,CAACjK,KAAtC,IAAgDgN,GAAG,KAAKqU,OAAE,CAACmV,MAA/D,EAAuE;SAChExsB,KAAL,CAAW8C,OAAX,CAAmBG,GAAnB;SACKjD,KAAL,CAAW+C,WAAX,GAAyB,KAAKG,UAAL,OAAsBmU,OAAE,CAACE,MAAlD;GAFF,MAGO;SACAvX,KAAL,CAAW+C,WAAX,GAAyB,IAAzB;;CANJ;;AAUA,SAAS6pB,UAAT,CAAoBC,MAApB,EAAoD;SAC3CA,MAAM,GACTA,MAAM,CAACvxB,IAAP,KAAgB,oBAAhB,IACEuxB,MAAM,CAACvxB,IAAP,KAAgB,oBAFT,GAGT,KAHJ;;;AAQF,SAASwxB,mBAAT,CACED,MADF,EAEU;MACJA,MAAM,CAACvxB,IAAP,KAAgB,eAApB,EAAqC;WAC5BuxB,MAAM,CAACj6B,IAAd;;;MAGEi6B,MAAM,CAACvxB,IAAP,KAAgB,mBAApB,EAAyC;WAChCuxB,MAAM,CAACE,SAAP,CAAiBn6B,IAAjB,GAAwB,GAAxB,GAA8Bi6B,MAAM,CAACj6B,IAAP,CAAYA,IAAjD;;;MAGEi6B,MAAM,CAACvxB,IAAP,KAAgB,qBAApB,EAA2C;WAEvCwxB,mBAAmB,CAACD,MAAM,CAACA,MAAR,CAAnB,GACA,GADA,GAEAC,mBAAmB,CAACD,MAAM,CAACvd,QAAR,CAHrB;;;QAQI,IAAI/H,KAAJ,CAAU,+BAA+BslB,MAAM,CAACvxB,IAAhD,CAAN;;;AAGF,WAAgBG,UAAD,IACb,cAAcA,UAAd,CAAyB;EAGvBuxB,YAAY,GAAS;QACfhqB,GAAG,GAAG,EAAV;QACIiqB,UAAU,GAAG,KAAKjtB,KAAL,CAAWoF,GAA5B;;aACS;UACH,KAAKpF,KAAL,CAAWoF,GAAX,IAAkB,KAAK1H,MAA3B,EAAmC;cAC3B,KAAKC,KAAL,CAAW,KAAKqC,KAAL,CAAWpD,KAAtB,EAA6B,2BAA7B,CAAN;;;YAGIswB,EAAE,GAAG,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,CAAX;;cAEQ8nB,EAAR;;;cAGQ,KAAKltB,KAAL,CAAWoF,GAAX,KAAmB,KAAKpF,KAAL,CAAWpD,KAAlC,EAAyC;gBACnCswB,EAAE,OAAF,IAA6B,KAAKltB,KAAL,CAAW+C,WAA5C,EAAyD;gBACrD,KAAK/C,KAAL,CAAWoF,GAAb;qBACO,KAAK6B,WAAL,CAAiBhH,KAAE,CAACmN,WAApB,CAAP;;;mBAEK,MAAM8G,gBAAN,CAAuBgZ,EAAvB,CAAP;;;UAEFlqB,GAAG,IAAI,KAAKW,KAAL,CAAWxG,KAAX,CAAiB8vB,UAAjB,EAA6B,KAAKjtB,KAAL,CAAWoF,GAAxC,CAAP;iBACO,KAAK6B,WAAL,CAAiBhH,KAAE,CAACysB,OAApB,EAA6B1pB,GAA7B,CAAP;;;UAGAA,GAAG,IAAI,KAAKW,KAAL,CAAWxG,KAAX,CAAiB8vB,UAAjB,EAA6B,KAAKjtB,KAAL,CAAWoF,GAAxC,CAAP;UACApC,GAAG,IAAI,KAAKmqB,aAAL,EAAP;UACAF,UAAU,GAAG,KAAKjtB,KAAL,CAAWoF,GAAxB;;;;cAIIvD,SAAS,CAACqrB,EAAD,CAAb,EAAmB;YACjBlqB,GAAG,IAAI,KAAKW,KAAL,CAAWxG,KAAX,CAAiB8vB,UAAjB,EAA6B,KAAKjtB,KAAL,CAAWoF,GAAxC,CAAP;YACApC,GAAG,IAAI,KAAKoqB,cAAL,CAAoB,IAApB,CAAP;YACAH,UAAU,GAAG,KAAKjtB,KAAL,CAAWoF,GAAxB;WAHF,MAIO;cACH,KAAKpF,KAAL,CAAWoF,GAAb;;;;;;;EAMVgoB,cAAc,CAACC,aAAD,EAAiC;UACvCH,EAAE,GAAG,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,CAAX;QACIpC,GAAJ;MACE,KAAKhD,KAAL,CAAWoF,GAAb;;QAEE8nB,EAAE,OAAF,IACA,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,QAFF,EAGE;QACE,KAAKpF,KAAL,CAAWoF,GAAb;MACApC,GAAG,GAAGqqB,aAAa,GAAG,IAAH,GAAU,MAA7B;KALF,MAMO;MACLrqB,GAAG,GAAG3G,MAAM,CAACkJ,YAAP,CAAoB2nB,EAApB,CAAN;;;MAEA,KAAKltB,KAAL,CAAWstB,OAAb;SACKttB,KAAL,CAAWutB,SAAX,GAAuB,KAAKvtB,KAAL,CAAWoF,GAAlC;WAEOpC,GAAP;;;EAGFwqB,aAAa,CAACC,KAAD,EAAsB;QAC7BzqB,GAAG,GAAG,EAAV;QACIiqB,UAAU,GAAG,EAAE,KAAKjtB,KAAL,CAAWoF,GAA9B;;aACS;UACH,KAAKpF,KAAL,CAAWoF,GAAX,IAAkB,KAAK1H,MAA3B,EAAmC;cAC3B,KAAKC,KAAL,CAAW,KAAKqC,KAAL,CAAWpD,KAAtB,EAA6B,8BAA7B,CAAN;;;YAGIswB,EAAE,GAAG,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,CAAX;UACI8nB,EAAE,KAAKO,KAAX,EAAkB;;UACdP,EAAE,OAAN,EAAgC;QAC9BlqB,GAAG,IAAI,KAAKW,KAAL,CAAWxG,KAAX,CAAiB8vB,UAAjB,EAA6B,KAAKjtB,KAAL,CAAWoF,GAAxC,CAAP;QACApC,GAAG,IAAI,KAAKmqB,aAAL,EAAP;QACAF,UAAU,GAAG,KAAKjtB,KAAL,CAAWoF,GAAxB;OAHF,MAIO,IAAIvD,SAAS,CAACqrB,EAAD,CAAb,EAAmB;QACxBlqB,GAAG,IAAI,KAAKW,KAAL,CAAWxG,KAAX,CAAiB8vB,UAAjB,EAA6B,KAAKjtB,KAAL,CAAWoF,GAAxC,CAAP;QACApC,GAAG,IAAI,KAAKoqB,cAAL,CAAoB,KAApB,CAAP;QACAH,UAAU,GAAG,KAAKjtB,KAAL,CAAWoF,GAAxB;OAHK,MAIA;UACH,KAAKpF,KAAL,CAAWoF,GAAb;;;;IAGJpC,GAAG,IAAI,KAAKW,KAAL,CAAWxG,KAAX,CAAiB8vB,UAAjB,EAA6B,KAAKjtB,KAAL,CAAWoF,GAAX,EAA7B,CAAP;WACO,KAAK6B,WAAL,CAAiBhH,KAAE,CAAC5M,MAApB,EAA4B2P,GAA5B,CAAP;;;EAGFmqB,aAAa,GAAW;QAClBO,GAAG,GAAG,EAAV;QACIC,KAAK,GAAG,CAAZ;QACIC,MAAJ;QACIV,EAAE,GAAG,KAAKvpB,KAAL,CAAW,KAAK3D,KAAL,CAAWoF,GAAtB,CAAT;UAEMlF,QAAQ,GAAG,EAAE,KAAKF,KAAL,CAAWoF,GAA9B;;WACO,KAAKpF,KAAL,CAAWoF,GAAX,GAAiB,KAAK1H,MAAtB,IAAgCiwB,KAAK,KAAK,EAAjD,EAAqD;MACnDT,EAAE,GAAG,KAAKvpB,KAAL,CAAW,KAAK3D,KAAL,CAAWoF,GAAX,EAAX,CAAL;;UACI8nB,EAAE,KAAK,GAAX,EAAgB;YACVQ,GAAG,CAAC,CAAD,CAAH,KAAW,GAAf,EAAoB;cACdA,GAAG,CAAC,CAAD,CAAH,KAAW,GAAf,EAAoB;YAClBA,GAAG,GAAGA,GAAG,CAACG,MAAJ,CAAW,CAAX,CAAN;;gBACIvB,UAAU,CAAC5oB,IAAX,CAAgBgqB,GAAhB,CAAJ,EAA0B;cACxBE,MAAM,GAAGvxB,MAAM,CAACyxB,aAAP,CAAqBC,QAAQ,CAACL,GAAD,EAAM,EAAN,CAA7B,CAAT;;WAHJ,MAKO;YACLA,GAAG,GAAGA,GAAG,CAACG,MAAJ,CAAW,CAAX,CAAN;;gBACItB,cAAc,CAAC7oB,IAAf,CAAoBgqB,GAApB,CAAJ,EAA8B;cAC5BE,MAAM,GAAGvxB,MAAM,CAACyxB,aAAP,CAAqBC,QAAQ,CAACL,GAAD,EAAM,EAAN,CAA7B,CAAT;;;SATN,MAYO;UACLE,MAAM,GAAGI,QAAa,CAACN,GAAD,CAAtB;;;;;;MAIJA,GAAG,IAAIR,EAAP;;;QAEE,CAACU,MAAL,EAAa;WACN5tB,KAAL,CAAWoF,GAAX,GAAiBlF,QAAjB;aACO,GAAP;;;WAEK0tB,MAAP;;;EAUFK,WAAW,GAAS;QACdf,EAAJ;UACMtwB,KAAK,GAAG,KAAKoD,KAAL,CAAWoF,GAAzB;;OACG;MACD8nB,EAAE,GAAG,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAsB,EAAE,KAAKnU,KAAL,CAAWoF,GAAnC,CAAL;KADF,QAESO,gBAAgB,CAACunB,EAAD,CAAhB,IAAwBA,EAAE,OAFnC;;WAGO,KAAKjmB,WAAL,CACLhH,KAAE,CAACwsB,OADE,EAEL,KAAK9oB,KAAL,CAAWxG,KAAX,CAAiBP,KAAjB,EAAwB,KAAKoD,KAAL,CAAWoF,GAAnC,CAFK,CAAP;;;EAQF8oB,kBAAkB,GAAoB;UAC9B7yB,IAAI,GAAG,KAAKqF,SAAL,EAAb;;QACI,KAAK+H,KAAL,CAAWxI,KAAE,CAACwsB,OAAd,CAAJ,EAA4B;MAC1BpxB,IAAI,CAACzI,IAAL,GAAY,KAAKoN,KAAL,CAAW9D,KAAvB;KADF,MAEO,IAAI,KAAK8D,KAAL,CAAW1E,IAAX,CAAgBjJ,OAApB,EAA6B;MAClCgJ,IAAI,CAACzI,IAAL,GAAY,KAAKoN,KAAL,CAAW1E,IAAX,CAAgBjJ,OAA5B;KADK,MAEA;WACAiY,UAAL;;;SAEG5E,IAAL;WACO,KAAK/E,UAAL,CAAgBtF,IAAhB,EAAsB,eAAtB,CAAP;;;EAKF8yB,sBAAsB,GAAwB;UACtCjuB,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;UACMvN,IAAI,GAAG,KAAKs7B,kBAAL,EAAb;QACI,CAAC,KAAK7lB,GAAL,CAASpI,KAAE,CAAChM,KAAZ,CAAL,EAAyB,OAAOrB,IAAP;UAEnByI,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;IACA9E,IAAI,CAAC0xB,SAAL,GAAiBn6B,IAAjB;IACAyI,IAAI,CAACzI,IAAL,GAAY,KAAKs7B,kBAAL,EAAZ;WACO,KAAKvtB,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;;;EAMF+yB,mBAAmB,GAGO;UAClBluB,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;QACI9E,IAAI,GAAG,KAAK8yB,sBAAL,EAAX;;QACI9yB,IAAI,CAACC,IAAL,KAAc,mBAAlB,EAAuC;aAC9BD,IAAP;;;WAEK,KAAKgN,GAAL,CAASpI,KAAE,CAAC9L,GAAZ,CAAP,EAAyB;YACjBk6B,OAAO,GAAG,KAAK1xB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAhB;MACAkuB,OAAO,CAACxB,MAAR,GAAiBxxB,IAAjB;MACAgzB,OAAO,CAAC/e,QAAR,GAAmB,KAAK4e,kBAAL,EAAnB;MACA7yB,IAAI,GAAG,KAAKsF,UAAL,CAAgB0tB,OAAhB,EAAyB,qBAAzB,CAAP;;;WAEKhzB,IAAP;;;EAKFizB,sBAAsB,GAAiB;QACjCjzB,IAAJ;;YACQ,KAAK2E,KAAL,CAAW1E,IAAnB;WACO2E,KAAE,CAACxM,MAAR;QACE4H,IAAI,GAAG,KAAKqF,SAAL,EAAP;aACKgF,IAAL;QACArK,IAAI,GAAG,KAAKkzB,2BAAL,CAAiClzB,IAAjC,CAAP;;YACIA,IAAI,CAACyB,UAAL,CAAgBxB,IAAhB,KAAyB,oBAA7B,EAAmD;eAC5CqC,KAAL,CACEtC,IAAI,CAACuB,KADP,EAEE,6DAFF;;;eAKKvB,IAAP;;WAEG4E,KAAE,CAACmN,WAAR;WACKnN,KAAE,CAAC5M,MAAR;eACS,KAAK0M,aAAL,EAAP;;;cAGM,KAAKpC,KAAL,CACJ,KAAKqC,KAAL,CAAWpD,KADP,EAEJ,+DAFI,CAAN;;;;EAWN4xB,uBAAuB,GAAyB;UACxCnzB,IAAI,GAAG,KAAKsB,WAAL,CACX,KAAKqD,KAAL,CAAW4D,UADA,EAEX,KAAK5D,KAAL,CAAWyuB,aAFA,CAAb;WAIO,KAAKxxB,YAAL,CACL5B,IADK,EAEL,oBAFK,EAGL,KAAK2E,KAAL,CAAWpD,KAHN,EAIL,KAAKoD,KAAL,CAAWG,QAJN,CAAP;;;EAUFuuB,mBAAmB,CAACrzB,IAAD,EAA2C;SACvDqK,IAAL;IACArK,IAAI,CAACyB,UAAL,GAAkB,KAAKwL,eAAL,EAAlB;SACKV,MAAL,CAAY3H,KAAE,CAACtM,MAAf;WAEO,KAAKgN,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;;;EAKFkzB,2BAA2B,CACzBlzB,IADyB,EAEC;QACtB,KAAKoN,KAAL,CAAWxI,KAAE,CAACtM,MAAd,CAAJ,EAA2B;MACzB0H,IAAI,CAACyB,UAAL,GAAkB,KAAK0xB,uBAAL,EAAlB;KADF,MAEO;MACLnzB,IAAI,CAACyB,UAAL,GAAkB,KAAKwL,eAAL,EAAlB;;;SAEGV,MAAL,CAAY3H,KAAE,CAACtM,MAAf;WACO,KAAKgN,UAAL,CAAgBtF,IAAhB,EAAsB,wBAAtB,CAAP;;;EAKFszB,iBAAiB,GAAmB;UAC5BtzB,IAAI,GAAG,KAAKqF,SAAL,EAAb;;QACI,KAAK2H,GAAL,CAASpI,KAAE,CAACxM,MAAZ,CAAJ,EAAyB;WAClBmU,MAAL,CAAY3H,KAAE,CAACzL,QAAf;MACA6G,IAAI,CAAC8T,QAAL,GAAgB,KAAKmD,gBAAL,EAAhB;WACK1K,MAAL,CAAY3H,KAAE,CAACtM,MAAf;aACO,KAAKgN,UAAL,CAAgBtF,IAAhB,EAAsB,oBAAtB,CAAP;;;IAEFA,IAAI,CAACzI,IAAL,GAAY,KAAKu7B,sBAAL,EAAZ;IACA9yB,IAAI,CAACa,KAAL,GAAa,KAAKmM,GAAL,CAASpI,KAAE,CAACnL,EAAZ,IAAkB,KAAKw5B,sBAAL,EAAlB,GAAkD,IAA/D;WACO,KAAK3tB,UAAL,CAAgBtF,IAAhB,EAAsB,cAAtB,CAAP;;;EAKFuzB,wBAAwB,CACtB1uB,QADsB,EAEtBC,QAFsB,EAGD;UACf9E,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;;QACI,KAAKsI,KAAL,CAAWxI,KAAE,CAAC0sB,SAAd,CAAJ,EAA8B;WACvB/kB,MAAL,CAAY3H,KAAE,CAAC0sB,SAAf;aACO,KAAKhsB,UAAL,CAAgBtF,IAAhB,EAAsB,oBAAtB,CAAP;;;IAEFA,IAAI,CAACzI,IAAL,GAAY,KAAKw7B,mBAAL,EAAZ;WACO,KAAKS,+BAAL,CAAqCxzB,IAArC,CAAP;;;EAGFwzB,+BAA+B,CAC7BxzB,IAD6B,EAER;UACfyzB,UAA4B,GAAG,EAArC;;WACO,CAAC,KAAKrmB,KAAL,CAAWxI,KAAE,CAACjK,KAAd,CAAD,IAAyB,CAAC,KAAKyS,KAAL,CAAWxI,KAAE,CAAC0sB,SAAd,CAAjC,EAA2D;MACzDmC,UAAU,CAAChvB,IAAX,CAAgB,KAAK6uB,iBAAL,EAAhB;;;IAEFtzB,IAAI,CAACyzB,UAAL,GAAkBA,UAAlB;IACAzzB,IAAI,CAAC0zB,WAAL,GAAmB,KAAK1mB,GAAL,CAASpI,KAAE,CAACjK,KAAZ,CAAnB;SACK4R,MAAL,CAAY3H,KAAE,CAAC0sB,SAAf;WACO,KAAKhsB,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;;;EAKF2zB,wBAAwB,CACtB9uB,QADsB,EAEtBC,QAFsB,EAGD;UACf9E,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;;QACI,KAAKsI,KAAL,CAAWxI,KAAE,CAAC0sB,SAAd,CAAJ,EAA8B;WACvB/kB,MAAL,CAAY3H,KAAE,CAAC0sB,SAAf;aACO,KAAKhsB,UAAL,CAAgBtF,IAAhB,EAAsB,oBAAtB,CAAP;;;IAEFA,IAAI,CAACzI,IAAL,GAAY,KAAKw7B,mBAAL,EAAZ;SACKxmB,MAAL,CAAY3H,KAAE,CAAC0sB,SAAf;WACO,KAAKhsB,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;;;EAMF4zB,iBAAiB,CAAC/uB,QAAD,EAAmBC,QAAnB,EAAqD;UAC9D9E,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;UACM+uB,QAAQ,GAAG,EAAjB;UACMC,cAAc,GAAG,KAAKP,wBAAL,CAA8B1uB,QAA9B,EAAwCC,QAAxC,CAAvB;QACIivB,cAAc,GAAG,IAArB;;QAEI,CAACD,cAAc,CAACJ,WAApB,EAAiC;MAC/BM,QAAQ,EAAE,SAAS;gBACT,KAAKrvB,KAAL,CAAW1E,IAAnB;eACO2E,KAAE,CAACmN,WAAR;YACElN,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAAtB;YACAuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAAtB;iBACKuF,IAAL;;gBACI,KAAK2C,GAAL,CAASpI,KAAE,CAACjK,KAAZ,CAAJ,EAAwB;cACtBo5B,cAAc,GAAG,KAAKJ,wBAAL,CACf9uB,QADe,EAEfC,QAFe,CAAjB;oBAIMkvB,QAAN;;;YAEFH,QAAQ,CAACpvB,IAAT,CAAc,KAAKmvB,iBAAL,CAAuB/uB,QAAvB,EAAiCC,QAAjC,CAAd;;;eAGGF,KAAE,CAACysB,OAAR;YACEwC,QAAQ,CAACpvB,IAAT,CAAc,KAAKC,aAAL,EAAd;;;eAGGE,KAAE,CAACxM,MAAR;;oBACQ4H,IAAI,GAAG,KAAKqF,SAAL,EAAb;mBACKgF,IAAL;;kBACI,KAAK+C,KAAL,CAAWxI,KAAE,CAACzL,QAAd,CAAJ,EAA6B;gBAC3B06B,QAAQ,CAACpvB,IAAT,CAAc,KAAK4uB,mBAAL,CAAyBrzB,IAAzB,CAAd;eADF,MAEO;gBACL6zB,QAAQ,CAACpvB,IAAT,CAAc,KAAKyuB,2BAAL,CAAiClzB,IAAjC,CAAd;;;;;;;kBAOI,KAAKiP,UAAL,EAAN;;;;UAIFsiB,UAAU,CAACuC,cAAD,CAAV,IAA8B,CAACvC,UAAU,CAACwC,cAAD,CAA7C,EAA+D;aACxDzxB,KAAL,CAEEyxB,cAAc,CAACxyB,KAFjB,EAGE,+CAHF;OADF,MAMO,IAAI,CAACgwB,UAAU,CAACuC,cAAD,CAAX,IAA+BvC,UAAU,CAACwC,cAAD,CAA7C,EAA+D;aAC/DzxB,KAAL,CAEEyxB,cAAc,CAACxyB,KAFjB,EAGE,iDACEkwB,mBAAmB,CAACqC,cAAc,CAACv8B,IAAhB,CADrB,GAEE,GALJ;OADK,MAQA,IAAI,CAACg6B,UAAU,CAACuC,cAAD,CAAX,IAA+B,CAACvC,UAAU,CAACwC,cAAD,CAA9C,EAAgE;YAGnEtC,mBAAmB,CAACsC,cAAc,CAACx8B,IAAhB,CAAnB,KACAk6B,mBAAmB,CAACqC,cAAc,CAACv8B,IAAhB,CAHrB,EAIE;eACK+K,KAAL,CAEEyxB,cAAc,CAACxyB,KAFjB,EAGE,iDACEkwB,mBAAmB,CAACqC,cAAc,CAACv8B,IAAhB,CADrB,GAEE,GALJ;;;;;QAWFg6B,UAAU,CAACuC,cAAD,CAAd,EAAgC;MAC9B9zB,IAAI,CAACi0B,eAAL,GAAuBH,cAAvB;MACA9zB,IAAI,CAACk0B,eAAL,GAAuBH,cAAvB;KAFF,MAGO;MACL/zB,IAAI,CAAC8zB,cAAL,GAAsBA,cAAtB;MACA9zB,IAAI,CAAC+zB,cAAL,GAAsBA,cAAtB;;;IAEF/zB,IAAI,CAAC6zB,QAAL,GAAgBA,QAAhB;;QACI,KAAKjmB,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;YACpB,KAAKtL,KAAL,CACJ,KAAKqC,KAAL,CAAWpD,KADP,EAEJ,gEACE,uCAHE,CAAN;;;WAOKgwB,UAAU,CAACuC,cAAD,CAAV,GACH,KAAKxuB,UAAL,CAAgBtF,IAAhB,EAAsB,aAAtB,CADG,GAEH,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,YAAtB,CAFJ;;;EAOFm0B,eAAe,GAAiB;UACxBtvB,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;SACKuF,IAAL;WACO,KAAKupB,iBAAL,CAAuB/uB,QAAvB,EAAiCC,QAAjC,CAAP;;;EAOFJ,aAAa,CAACzB,mBAAD,EAAuD;QAC9D,KAAKmK,KAAL,CAAWxI,KAAE,CAACysB,OAAd,CAAJ,EAA4B;aACnB,KAAKpwB,YAAL,CAAkB,KAAK0D,KAAL,CAAW9D,KAA7B,EAAoC,SAApC,CAAP;KADF,MAEO,IAAI,KAAKuM,KAAL,CAAWxI,KAAE,CAACmN,WAAd,CAAJ,EAAgC;aAC9B,KAAKoiB,eAAL,EAAP;KADK,MAEA,IACL,KAAKvmB,YAAL,CAAkB,GAAlB,KACA,KAAKtF,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,QAFK,EAGL;WAGK6B,WAAL,CAAiBhH,KAAE,CAACmN,WAApB;aACO,KAAKoiB,eAAL,EAAP;KAPK,MAQA;aACE,MAAMzvB,aAAN,CAAoBzB,mBAApB,CAAP;;;;EAIJ4V,gBAAgB,CAACpS,IAAD,EAAqB;QAC/B,KAAK9B,KAAL,CAAWyvB,cAAf,EAA+B,OAAO,MAAMvb,gBAAN,CAAuBpS,IAAvB,CAAP;UAEzBgB,OAAO,GAAG,KAAKI,UAAL,EAAhB;;QAEIJ,OAAO,KAAKuU,OAAE,CAACE,MAAnB,EAA2B;aAClB,KAAKyV,YAAL,EAAP;;;QAGElqB,OAAO,KAAKuU,OAAE,CAACC,MAAf,IAAyBxU,OAAO,KAAKuU,OAAE,CAACmV,MAA5C,EAAoD;UAC9ClnB,iBAAiB,CAACxD,IAAD,CAArB,EAA6B;eACpB,KAAKmsB,WAAL,EAAP;;;UAGEnsB,IAAI,OAAR,EAAoC;UAChC,KAAK9B,KAAL,CAAWoF,GAAb;eACO,KAAK6B,WAAL,CAAiBhH,KAAE,CAAC0sB,SAApB,CAAP;;;UAIA,CAAC7qB,IAAI,OAAJ,IAAoCA,IAAI,OAAzC,KACAgB,OAAO,KAAKuU,OAAE,CAACC,MAFjB,EAGE;eACO,KAAKkW,aAAL,CAAmB1rB,IAAnB,CAAP;;;;QAKFA,IAAI,OAAJ,IACA,KAAK9B,KAAL,CAAW+C,WADX,IAEA,KAAKY,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,QAHF,EAIE;QACE,KAAKpF,KAAL,CAAWoF,GAAb;aACO,KAAK6B,WAAL,CAAiBhH,KAAE,CAACmN,WAApB,CAAP;;;WAGK,MAAM8G,gBAAN,CAAuBpS,IAAvB,CAAP;;;EAGFtP,aAAa,CAAC2Q,QAAD,EAA4B;QACnC,KAAKsF,KAAL,CAAWxI,KAAE,CAACxM,MAAd,CAAJ,EAA2B;YACnByP,UAAU,GAAG,KAAKA,UAAL,EAAnB;;UACIA,UAAU,KAAKmU,OAAE,CAACC,MAAtB,EAA8B;aACvBtX,KAAL,CAAW8C,OAAX,CAAmBhD,IAAnB,CAAwBuX,OAAE,CAAC/U,eAA3B;OADF,MAEO,IAAIY,UAAU,KAAKmU,OAAE,CAACE,MAAtB,EAA8B;aAC9BvX,KAAL,CAAW8C,OAAX,CAAmBhD,IAAnB,CAAwBuX,OAAE,CAAC9U,aAA3B;OADK,MAEA;cACC/P,aAAN,CAAoB2Q,QAApB;;;WAEGnD,KAAL,CAAW+C,WAAX,GAAyB,IAAzB;KATF,MAUO,IAAI,KAAK0F,KAAL,CAAWxI,KAAE,CAACjK,KAAd,KAAwBmN,QAAQ,KAAKlD,KAAE,CAACmN,WAA5C,EAAyD;WACzDpN,KAAL,CAAW8C,OAAX,CAAmBpF,MAAnB,IAA6B,CAA7B;WACKsC,KAAL,CAAW8C,OAAX,CAAmBhD,IAAnB,CAAwBuX,OAAE,CAACmV,MAA3B;WACKxsB,KAAL,CAAW+C,WAAX,GAAyB,KAAzB;KAHK,MAIA;aACE,MAAMvQ,aAAN,CAAoB2Q,QAApB,CAAP;;;;CA9fR;;ACtDO,MAAMusB,KAAN,CAAY;EASjBx9B,WAAW,CAAC0J,KAAD,EAAoB;SAN/B+zB,GAM+B,GANf,EAMe;SAJ/BC,OAI+B,GAJX,EAIW;SAF/BC,SAE+B,GAFT,EAES;SACxBj0B,KAAL,GAAaA,KAAb;;;;AAQJ,AAAe,MAAMk0B,YAAN,CAA0C;EAOvD59B,WAAW,CAACyL,KAAD,EAAuB2G,QAAvB,EAA0C;SANrDyrB,UAMqD,GANzB,EAMyB;SAHrDC,gBAGqD,GAHb,IAAIt9B,GAAJ,EAGa;SAFrDu9B,qBAEqD,GAFR,IAAIv9B,GAAJ,EAEQ;SAC9CiL,KAAL,GAAaA,KAAb;SACK2G,QAAL,GAAgBA,QAAhB;;;MAGE4rB,UAAJ,GAAiB;WACR,CAAC,KAAKC,eAAL,GAAuBv0B,KAAvB,GAA+BrD,cAAhC,IAAkD,CAAzD;;;MAEE+K,WAAJ,GAAkB;WACT,CAAC,KAAK6sB,eAAL,GAAuBv0B,KAAvB,GAA+BnD,eAAhC,IAAmD,CAA1D;;;MAIE23B,OAAJ,GAAc;SACP,IAAI/qB,CAAC,GAAG,KAAK0qB,UAAL,CAAgBryB,MAAhB,GAAyB,CAAtC,GAA2C2H,CAAC,EAA5C,EAAgD;YACxChC,KAAK,GAAG,KAAK0sB,UAAL,CAAgB1qB,CAAhB,CAAd;YACMgrB,UAAU,GAAGhtB,KAAK,CAACzH,KAAN,GAAc5C,SAAjC;YACMs3B,YAAY,GAAGjtB,KAAK,CAACzH,KAAN,GAAc9C,WAAnC;;UACIw3B,YAAY,IAAI,CAACD,UAArB,EAAiC;eAGxB,KAAP;OAHF,MAIO,IAAIA,UAAJ,EAAgB;eACd,CAAChtB,KAAK,CAACzH,KAAN,GAAcpD,WAAf,IAA8B,CAArC;;;;;MAIF+3B,UAAJ,GAAiB;WACR,CAAC,KAAKC,gBAAL,GAAwB50B,KAAxB,GAAgChD,WAAjC,IAAgD,CAAvD;;;MAEE2H,gBAAJ,GAAuB;WACd,CAAC,KAAKiwB,gBAAL,GAAwB50B,KAAxB,GAAgC/C,kBAAjC,IAAuD,CAA9D;;;MAEE43B,OAAJ,GAAc;WACL,CAAC,KAAKD,gBAAL,GAAwB50B,KAAxB,GAAgC9C,WAAjC,IAAgD,CAAvD;;;MAEE43B,kBAAJ,GAAyB;WAChB,CAAC,KAAKF,gBAAL,GAAwB50B,KAAxB,GAAgCrD,cAAjC,IAAmD,CAA1D;;;MAEEo4B,mBAAJ,GAA0B;WACjB,KAAKC,0BAAL,CAAgC,KAAKC,YAAL,EAAhC,CAAP;;;EAGFC,WAAW,CAACl1B,KAAD,EAA2B;WAC7B,IAAI8zB,KAAJ,CAAU9zB,KAAV,CAAP;;;EAKF6O,KAAK,CAAC7O,KAAD,EAAoB;SAClBm0B,UAAL,CAAgBjwB,IAAhB,CAAqB,KAAKgxB,WAAL,CAAiBl1B,KAAjB,CAArB;;;EAGFgP,IAAI,GAAG;SACAmlB,UAAL,CAAgB9sB,GAAhB;;;EAMF2tB,0BAA0B,CAACvtB,KAAD,EAAyB;WAC1C,CAAC,EACNA,KAAK,CAACzH,KAAN,GAAcrD,cAAd,IACC,CAAC,KAAK+L,QAAN,IAAkBjB,KAAK,CAACzH,KAAN,GAActD,aAF3B,CAAR;;;EAMFkS,WAAW,CAAC5X,IAAD,EAAekL,WAAf,EAA0CsH,GAA1C,EAAuD;QAC5D/B,KAAK,GAAG,KAAKwtB,YAAL,EAAZ;;QACI/yB,WAAW,GAAGvE,kBAAd,IAAoCuE,WAAW,GAAGtE,mBAAtD,EAA2E;WACpEu3B,yBAAL,CAA+B1tB,KAA/B,EAAsCzQ,IAAtC,EAA4CkL,WAA5C,EAAyDsH,GAAzD;;UAEItH,WAAW,GAAGtE,mBAAlB,EAAuC;QACrC6J,KAAK,CAACwsB,SAAN,CAAgB/vB,IAAhB,CAAqBlN,IAArB;OADF,MAEO;QACLyQ,KAAK,CAACusB,OAAN,CAAc9vB,IAAd,CAAmBlN,IAAnB;;;UAGEkL,WAAW,GAAGvE,kBAAlB,EAAsC;aAC/By3B,kBAAL,CAAwB3tB,KAAxB,EAA+BzQ,IAA/B;;KAVJ,MAYO,IAAIkL,WAAW,GAAGxE,cAAlB,EAAkC;WAClC,IAAI+L,CAAC,GAAG,KAAK0qB,UAAL,CAAgBryB,MAAhB,GAAyB,CAAtC,EAAyC2H,CAAC,IAAI,CAA9C,EAAiD,EAAEA,CAAnD,EAAsD;QACpDhC,KAAK,GAAG,KAAK0sB,UAAL,CAAgB1qB,CAAhB,CAAR;aACK0rB,yBAAL,CAA+B1tB,KAA/B,EAAsCzQ,IAAtC,EAA4CkL,WAA5C,EAAyDsH,GAAzD;QACA/B,KAAK,CAACssB,GAAN,CAAU7vB,IAAV,CAAelN,IAAf;aACKo+B,kBAAL,CAAwB3tB,KAAxB,EAA+BzQ,IAA/B;YAEIyQ,KAAK,CAACzH,KAAN,GAAc5C,SAAlB,EAA6B;;;;QAG7B,KAAKsL,QAAL,IAAiBjB,KAAK,CAACzH,KAAN,GAActD,aAAnC,EAAkD;WAC3C03B,gBAAL,CAAsBiB,MAAtB,CAA6Br+B,IAA7B;;;;EAIJo+B,kBAAkB,CAAC3tB,KAAD,EAAgBzQ,IAAhB,EAA8B;QAC1C,KAAK0R,QAAL,IAAiBjB,KAAK,CAACzH,KAAN,GAActD,aAAnC,EAAkD;WAC3C03B,gBAAL,CAAsBiB,MAAtB,CAA6Br+B,IAA7B;;;;EAIJm+B,yBAAyB,CACvB1tB,KADuB,EAEvBzQ,IAFuB,EAGvBkL,WAHuB,EAIvBsH,GAJuB,EAKvB;QACI,KAAK8rB,mBAAL,CAAyB7tB,KAAzB,EAAgCzQ,IAAhC,EAAsCkL,WAAtC,CAAJ,EAAwD;WACjDH,KAAL,CAAWyH,GAAX,EAAiB,eAAcxS,IAAK,6BAApC;;;;EAIJs+B,mBAAmB,CACjB7tB,KADiB,EAEjBzQ,IAFiB,EAGjBkL,WAHiB,EAIR;QACL,EAAEA,WAAW,GAAG1E,eAAhB,CAAJ,EAAsC,OAAO,KAAP;;QAElC0E,WAAW,GAAGvE,kBAAlB,EAAsC;aAElC8J,KAAK,CAACusB,OAAN,CAAc1c,OAAd,CAAsBtgB,IAAtB,IAA8B,CAAC,CAA/B,IACAyQ,KAAK,CAACwsB,SAAN,CAAgB3c,OAAhB,CAAwBtgB,IAAxB,IAAgC,CAAC,CADjC,IAEAyQ,KAAK,CAACssB,GAAN,CAAUzc,OAAV,CAAkBtgB,IAAlB,IAA0B,CAAC,CAH7B;;;QAOEkL,WAAW,GAAGtE,mBAAlB,EAAuC;aAEnC6J,KAAK,CAACusB,OAAN,CAAc1c,OAAd,CAAsBtgB,IAAtB,IAA8B,CAAC,CAA/B,IACC,CAAC,KAAKg+B,0BAAL,CAAgCvtB,KAAhC,CAAD,IACCA,KAAK,CAACssB,GAAN,CAAUzc,OAAV,CAAkBtgB,IAAlB,IAA0B,CAAC,CAH/B;;;WAQCyQ,KAAK,CAACusB,OAAN,CAAc1c,OAAd,CAAsBtgB,IAAtB,IAA8B,CAAC,CAA/B,IACC,EAAEyQ,KAAK,CAACzH,KAAN,GAAcjD,kBAAd,IAAoC0K,KAAK,CAACusB,OAAN,CAAc,CAAd,MAAqBh9B,IAA3D,CADF,IAEC,CAAC,KAAKg+B,0BAAL,CAAgCvtB,KAAhC,CAAD,IACCA,KAAK,CAACwsB,SAAN,CAAgB3c,OAAhB,CAAwBtgB,IAAxB,IAAgC,CAAC,CAJrC;;;EAQFu+B,gBAAgB,CAACtoB,EAAD,EAAmB;QAE/B,KAAKknB,UAAL,CAAgB,CAAhB,EAAmBH,OAAnB,CAA2B1c,OAA3B,CAAmCrK,EAAE,CAACjW,IAAtC,MAAgD,CAAC,CAAjD,IACA,KAAKm9B,UAAL,CAAgB,CAAhB,EAAmBJ,GAAnB,CAAuBzc,OAAvB,CAA+BrK,EAAE,CAACjW,IAAlC,MAA4C,CAAC,CAD7C,IAKA,KAAKm9B,UAAL,CAAgB,CAAhB,EAAmBF,SAAnB,CAA6B3c,OAA7B,CAAqCrK,EAAE,CAACjW,IAAxC,MAAkD,CAAC,CANrD,EAOE;WACKo9B,gBAAL,CAAsBj9B,GAAtB,CAA0B8V,EAAE,CAACjW,IAA7B,EAAmCiW,EAAE,CAACjM,KAAtC;;;;EAIJi0B,YAAY,GAAW;WACd,KAAKd,UAAL,CAAgB,KAAKA,UAAL,CAAgBryB,MAAhB,GAAyB,CAAzC,CAAP;;;EAIFyyB,eAAe,GAAW;SACnB,IAAI9qB,CAAC,GAAG,KAAK0qB,UAAL,CAAgBryB,MAAhB,GAAyB,CAAtC,GAA2C2H,CAAC,EAA5C,EAAgD;YACxChC,KAAK,GAAG,KAAK0sB,UAAL,CAAgB1qB,CAAhB,CAAd;;UACIhC,KAAK,CAACzH,KAAN,GAAc5C,SAAlB,EAA6B;eACpBqK,KAAP;;;;;EAONmtB,gBAAgB,GAAW;SACpB,IAAInrB,CAAC,GAAG,KAAK0qB,UAAL,CAAgBryB,MAAhB,GAAyB,CAAtC,GAA2C2H,CAAC,EAA5C,EAAgD;YACxChC,KAAK,GAAG,KAAK0sB,UAAL,CAAgB1qB,CAAhB,CAAd;;UAEE,CAAChC,KAAK,CAACzH,KAAN,GAAc5C,SAAd,IAA2BqK,KAAK,CAACzH,KAAN,GAAc9C,WAA1C,KACA,EAAEuK,KAAK,CAACzH,KAAN,GAAclD,WAAhB,CAFF,EAGE;eACO2K,KAAP;;;;;;;ACpNR,MAAM+tB,eAAN,SAA8B1B,KAA9B,CAAoC;;;SAClCz8B,KADkC,GAChB,EADgB;SAIlCo+B,KAJkC,GAIhB,EAJgB;SAOlCC,UAPkC,GAOX,EAPW;SAUlCC,OAVkC,GAUd,EAVc;SAgBlCC,kBAhBkC,GAgBH,EAhBG;;;;;AAsBpC,AAAe,MAAMC,sBAAN,SAAqC3B,YAArC,CAAmE;EAChFgB,WAAW,CAACl1B,KAAD,EAAqC;WACvC,IAAIw1B,eAAJ,CAAoBx1B,KAApB,CAAP;;;EAGF4O,WAAW,CAAC5X,IAAD,EAAekL,WAAf,EAA0CsH,GAA1C,EAAuD;UAC1D/B,KAAK,GAAG,KAAKwtB,YAAL,EAAd;;QACI/yB,WAAW,GAAGhE,yBAAlB,EAA6C;WACtCk3B,kBAAL,CAAwB3tB,KAAxB,EAA+BzQ,IAA/B;MACAyQ,KAAK,CAACmuB,kBAAN,CAAyB1xB,IAAzB,CAA8BlN,IAA9B;;;;UAII4X,WAAN,CAAkB,GAAGjJ,SAArB;;QAEIzD,WAAW,GAAGzE,cAAlB,EAAkC;UAC5B,EAAEyE,WAAW,GAAG1E,eAAhB,CAAJ,EAAsC;aAE/B23B,yBAAL,CAA+B1tB,KAA/B,EAAsCzQ,IAAtC,EAA4CkL,WAA5C,EAAyDsH,GAAzD;aACK4rB,kBAAL,CAAwB3tB,KAAxB,EAA+BzQ,IAA/B;;;MAEFyQ,KAAK,CAACpQ,KAAN,CAAY6M,IAAZ,CAAiBlN,IAAjB;;;QAEEkL,WAAW,GAAGlE,kBAAlB,EAAsCyJ,KAAK,CAACguB,KAAN,CAAYvxB,IAAZ,CAAiBlN,IAAjB;QAClCkL,WAAW,GAAGjE,wBAAlB,EAA4CwJ,KAAK,CAACiuB,UAAN,CAAiBxxB,IAAjB,CAAsBlN,IAAtB;QACxCkL,WAAW,GAAGnE,gBAAlB,EAAoC0J,KAAK,CAACkuB,OAAN,CAAczxB,IAAd,CAAmBlN,IAAnB;;;EAGtCs+B,mBAAmB,CACjB7tB,KADiB,EAEjBzQ,IAFiB,EAGjBkL,WAHiB,EAIR;QACLuF,KAAK,CAACguB,KAAN,CAAYne,OAAZ,CAAoBtgB,IAApB,IAA4B,CAAC,CAAjC,EAAoC;UAC9BkL,WAAW,GAAGlE,kBAAlB,EAAsC;cAG9B83B,OAAO,GAAG,CAAC,EAAE5zB,WAAW,GAAGjE,wBAAhB,CAAjB;cACM83B,QAAQ,GAAGtuB,KAAK,CAACiuB,UAAN,CAAiBpe,OAAjB,CAAyBtgB,IAAzB,IAAiC,CAAC,CAAnD;eACO8+B,OAAO,KAAKC,QAAnB;;;aAEK,IAAP;;;QAEE7zB,WAAW,GAAGnE,gBAAd,IAAkC0J,KAAK,CAACkuB,OAAN,CAAcre,OAAd,CAAsBtgB,IAAtB,IAA8B,CAAC,CAArE,EAAwE;UAClEyQ,KAAK,CAACusB,OAAN,CAAc1c,OAAd,CAAsBtgB,IAAtB,IAA8B,CAAC,CAAnC,EAAsC;eAE7B,CAAC,EAAEkL,WAAW,GAAG1E,eAAhB,CAAR;OAFF,MAGO;eAEE,KAAP;;;;QAGA0E,WAAW,GAAGzE,cAAd,IAAgCgK,KAAK,CAACpQ,KAAN,CAAYigB,OAAZ,CAAoBtgB,IAApB,IAA4B,CAAC,CAAjE,EAAoE;aAC3D,IAAP;;;WAGK,MAAMs+B,mBAAN,CAA0B,GAAG3vB,SAA7B,CAAP;;;EAGF4vB,gBAAgB,CAACtoB,EAAD,EAAmB;QAE/B,KAAKknB,UAAL,CAAgB,CAAhB,EAAmB98B,KAAnB,CAAyBigB,OAAzB,CAAiCrK,EAAE,CAACjW,IAApC,MAA8C,CAAC,CAA/C,IACA,KAAKm9B,UAAL,CAAgB,CAAhB,EAAmByB,kBAAnB,CAAsCte,OAAtC,CAA8CrK,EAAE,CAACjW,IAAjD,MAA2D,CAAC,CAF9D,EAGE;YACMu+B,gBAAN,CAAuBtoB,EAAvB;;;;;;AC/DN,SAAS+oB,OAAT,CAAoBC,CAApB,EAA8B;MACxBA,CAAC,IAAI,IAAT,EAAe;UAEP,IAAItqB,KAAJ,CAAW,cAAasqB,CAAE,SAA1B,CAAN;;;SAEKA,CAAP;;;AAGF,SAASC,MAAT,CAAgBD,CAAhB,EAAkC;MAC5B,CAACA,CAAL,EAAQ;UACA,IAAItqB,KAAJ,CAAU,aAAV,CAAN;;;;AAYJ,SAASwqB,mBAAT,CACE71B,KADF,EAE0C;UAChCA,KAAR;SACO,KAAL;aACS,cAAP;;SACG,SAAL;aACS,kBAAP;;SACG,QAAL;aACS,iBAAP;;SACG,OAAL;aACS,gBAAP;;SACG,QAAL;aACS,iBAAP;;SACG,QAAL;aACS,iBAAP;;SACG,QAAL;aACS,iBAAP;;SACG,QAAL;aACS,iBAAP;;SACG,WAAL;aACS,oBAAP;;SACG,SAAL;aACS,kBAAP;;;aAEO2K,SAAP;;;;AAIN,kBAAgBpL,UAAD,IACb,cAAcA,UAAd,CAAyB;EACvBu2B,eAAe,GAAkC;WACxCP,sBAAP;;;EAGFQ,cAAc,GAAY;WAGjB,KAAKxpB,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAP;;;EAGFs/B,4BAA4B,GAAG;SAKxBxsB,IAAL;WAEE,CAAC,KAAKysB,qBAAL,EAAD,IACA,CAAC,KAAK1pB,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CADD,IAEA,CAAC,KAAK4U,KAAL,CAAWxI,KAAE,CAACnM,MAAd,CAFD,IAGA,CAAC,KAAK2U,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAHD,IAIA,CAAC,KAAKwU,KAAL,CAAWxI,KAAE,CAACnL,EAAd,CAJD,IAKA,CAAC,KAAK2T,KAAL,CAAWxI,KAAE,CAAC7L,QAAd,CALD,IAMA,CAAC,KAAKqU,KAAL,CAAWxI,KAAE,CAAChL,IAAd,CAPH;;;EAYFm9B,eAAe,CAAgBC,gBAAhB,EAA2C;QACpD,CAAC,KAAK5pB,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAL,EAA0B;aACjBiU,SAAP;;;UAGIyrB,QAAQ,GAAG,KAAKtyB,KAAL,CAAW9D,KAA5B;;QAEEm2B,gBAAgB,CAACnf,OAAjB,CAAyBof,QAAzB,MAAuC,CAAC,CAAxC,IACA,KAAKC,UAAL,CAAgB,KAAKL,4BAAL,CAAkCM,IAAlC,CAAuC,IAAvC,CAAhB,CAFF,EAGE;aACOF,QAAP;;;WAEKzrB,SAAP;;;EAQF4rB,gBAAgB,CACdJ,gBADc,EAEiC;UACzCK,SAAS,GAAGC,MAAM,CAACC,MAAP,CAAc,IAAd,CAAlB;;WAEO,IAAP,EAAa;YACL1yB,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;YACM01B,QAAY,GAAG,KAAKF,eAAL,CAAqBC,gBAArB,CAArB;UAEI,CAACC,QAAL,EAAe;;UAEXK,MAAM,CAACE,cAAP,CAAsB7b,IAAtB,CAA2B0b,SAA3B,EAAsCJ,QAAtC,CAAJ,EAAqD;aAC9C30B,KAAL,CAAWuC,QAAX,EAAsB,wBAAuBoyB,QAAS,GAAtD;;;MAEFI,SAAS,CAACJ,QAAD,CAAT,GAAsB,IAAtB;;;WAGKI,SAAP;;;EAGFI,kBAAkB,CAACv3B,IAAD,EAAgC;YACxCA,IAAR;WACO,aAAL;WACK,aAAL;eACS,KAAKkN,KAAL,CAAWxI,KAAE,CAACtM,MAAd,CAAP;;WACG,uBAAL;eACS,KAAK8U,KAAL,CAAWxI,KAAE,CAACxM,MAAd,CAAP;;WACG,mBAAL;eACS,KAAKgV,KAAL,CAAWxI,KAAE,CAACzM,QAAd,CAAP;;WACG,2BAAL;eACS,KAAKyV,YAAL,CAAkB,GAAlB,CAAP;;;UAGE,IAAI1B,KAAJ,CAAU,aAAV,CAAN;;;EAGFwrB,WAAW,CAAYx3B,IAAZ,EAAkCy3B,YAAlC,EAA8D;UACjExhB,MAAW,GAAG,EAApB;;WACO,CAAC,KAAKshB,kBAAL,CAAwBv3B,IAAxB,CAAR,EAAuC;MAErCiW,MAAM,CAAC1R,IAAP,CAAYkzB,YAAY,EAAxB;;;WAEKxhB,MAAP;;;EAGFyhB,oBAAoB,CAClB13B,IADkB,EAElBy3B,YAFkB,EAGb;WACEpB,OAAO,CACZ,KAAKsB,0BAAL,CACE33B,IADF,EAEEy3B,YAFF,EAGsB,IAHtB,CADY,CAAd;;;EAaFE,0BAA0B,CACxB33B,IADwB,EAExBy3B,YAFwB,EAGxBG,aAHwB,EAIhB;UACF3hB,MAAM,GAAG,EAAf;;WAEO,IAAP,EAAa;UACP,KAAKshB,kBAAL,CAAwBv3B,IAAxB,CAAJ,EAAmC;;;;YAI7BkZ,OAAO,GAAGue,YAAY,EAA5B;;UACIve,OAAO,IAAI,IAAf,EAAqB;eACZ5N,SAAP;;;MAEF2K,MAAM,CAAC1R,IAAP,CAAY2U,OAAZ;;UAEI,KAAKpM,GAAL,CAASpI,KAAE,CAAClM,KAAZ,CAAJ,EAAwB;;;;UAIpB,KAAK++B,kBAAL,CAAwBv3B,IAAxB,CAAJ,EAAmC;;;;UAI/B43B,aAAJ,EAAmB;aAEZvrB,MAAL,CAAY3H,KAAE,CAAClM,KAAf;;;aAEK8S,SAAP;;;WAGK2K,MAAP;;;EAGF4hB,oBAAoB,CAClB73B,IADkB,EAElBy3B,YAFkB,EAGlBK,OAHkB,EAIlBC,cAJkB,EAKb;QACD,CAACA,cAAL,EAAqB;UACfD,OAAJ,EAAa;aACNzrB,MAAL,CAAY3H,KAAE,CAAC1M,QAAf;OADF,MAEO;aACAga,gBAAL,CAAsB,GAAtB;;;;UAIEiE,MAAM,GAAG,KAAKyhB,oBAAL,CAA0B13B,IAA1B,EAAgCy3B,YAAhC,CAAf;;QAEIK,OAAJ,EAAa;WACNzrB,MAAL,CAAY3H,KAAE,CAACzM,QAAf;KADF,MAEO;WACA+Z,gBAAL,CAAsB,GAAtB;;;WAGKiE,MAAP;;;EAGF+hB,iBAAiB,GAAmB;UAC5Bl4B,IAAoB,GAAG,KAAKqF,SAAL,EAA7B;SACKkH,MAAL,CAAY3H,KAAE,CAACrI,OAAf;SACKgQ,MAAL,CAAY3H,KAAE,CAACpM,MAAf;;QACI,CAAC,KAAK4U,KAAL,CAAWxI,KAAE,CAAC5M,MAAd,CAAL,EAA4B;WACrBsK,KAAL,CACE,KAAKqC,KAAL,CAAWpD,KADb,EAEE,oDAFF;;;IAOFvB,IAAI,CAAC8T,QAAL,GAAgB,KAAKpP,aAAL,EAAhB;SACK6H,MAAL,CAAY3H,KAAE,CAACnM,MAAf;;QAEI,KAAKuU,GAAL,CAASpI,KAAE,CAAC9L,GAAZ,CAAJ,EAAsB;MACpBkH,IAAI,CAACm4B,SAAL,GAAiB,KAAKC,iBAAL,CAAgD,IAAhD,CAAjB;;;QAEE,KAAKxqB,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;MAC1B5N,IAAI,CAACwE,cAAL,GAAsB,KAAK6zB,oBAAL,EAAtB;;;WAEK,KAAK/yB,UAAL,CAAgBtF,IAAhB,EAAsB,cAAtB,CAAP;;;EAGFo4B,iBAAiB,CAACE,kBAAD,EAA8C;QACzD/F,MAAsB,GAAG,KAAK9kB,eAAL,EAA7B;;WACO,KAAKT,GAAL,CAASpI,KAAE,CAAC9L,GAAZ,CAAP,EAAyB;YACjBkH,IAAuB,GAAG,KAAKu4B,eAAL,CAAqBhG,MAArB,CAAhC;MACAvyB,IAAI,CAACsa,IAAL,GAAYiY,MAAZ;MACAvyB,IAAI,CAACoR,KAAL,GAAa,KAAK3D,eAAL,CAAqB6qB,kBAArB,CAAb;MACA/F,MAAM,GAAG,KAAKjtB,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAT;;;WAEKuyB,MAAP;;;EAGFiG,oBAAoB,GAAsB;UAClCx4B,IAAuB,GAAG,KAAKqF,SAAL,EAAhC;IACArF,IAAI,CAACy4B,QAAL,GAAgB,KAAKL,iBAAL,CAAgD,KAAhD,CAAhB;;QACI,CAAC,KAAKtB,qBAAL,EAAD,IAAiC,KAAKlpB,YAAL,CAAkB,GAAlB,CAArC,EAA6D;MAC3D5N,IAAI,CAACwE,cAAL,GAAsB,KAAK6zB,oBAAL,EAAtB;;;WAEK,KAAK/yB,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;;;EAGF04B,wBAAwB,CAACC,GAAD,EAAuC;SACxDtuB,IAAL;UACMrK,IAAuB,GAAG,KAAKu4B,eAAL,CAAqBI,GAArB,CAAhC;IACA34B,IAAI,CAAC44B,aAAL,GAAqBD,GAArB;IACA34B,IAAI,CAACkO,cAAL,GAAsB,KAAK2qB,qBAAL,CAA0C,KAA1C,CAAtB;WACO,KAAKvzB,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;;;EAGF84B,mBAAmB,GAAiB;UAC5B94B,IAAkB,GAAG,KAAKqF,SAAL,EAA3B;SACKgF,IAAL;WACO,KAAK/E,UAAL,CAAgBtF,IAAhB,EAAsB,YAAtB,CAAP;;;EAGF+4B,gBAAgB,GAAkB;UAC1B/4B,IAAmB,GAAG,KAAKqF,SAAL,EAA5B;SACKkH,MAAL,CAAY3H,KAAE,CAAC/H,OAAf;;QACI,KAAKuQ,KAAL,CAAWxI,KAAE,CAACrI,OAAd,CAAJ,EAA4B;MAC1ByD,IAAI,CAACg5B,QAAL,GAAgB,KAAKd,iBAAL,EAAhB;KADF,MAEO;MACLl4B,IAAI,CAACg5B,QAAL,GAAgB,KAAKZ,iBAAL,CAAgD,IAAhD,CAAhB;;;WAEK,KAAK9yB,UAAL,CAAgBtF,IAAhB,EAAsB,aAAtB,CAAP;;;EAGFi5B,oBAAoB,GAAsB;UAClCj5B,IAAuB,GAAG,KAAKqF,SAAL,EAAhC;IACArF,IAAI,CAACzI,IAAL,GAAY,KAAK2hC,mBAAL,CAAyBl5B,IAAI,CAACuB,KAA9B,CAAZ;IACAvB,IAAI,CAACm5B,UAAL,GAAkB,KAAKC,kBAAL,CAAwBx0B,KAAE,CAACvI,QAA3B,CAAlB;IACA2D,IAAI,CAAC0P,OAAL,GAAe,KAAK0pB,kBAAL,CAAwBx0B,KAAE,CAACnL,EAA3B,CAAf;WACO,KAAK6L,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;;;EAGFq5B,wBAAwB,GAAkC;QACpD,KAAKzrB,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;aACnB,KAAK0rB,qBAAL,EAAP;;;;EAIJA,qBAAqB,GAAG;UAChBt5B,IAAkC,GAAG,KAAKqF,SAAL,EAA3C;;QAEI,KAAKuI,YAAL,CAAkB,GAAlB,KAA0B,KAAKR,KAAL,CAAWxI,KAAE,CAACmN,WAAd,CAA9B,EAA0D;WACnD1H,IAAL;KADF,MAEO;WACA4E,UAAL;;;IAGFjP,IAAI,CAACoC,MAAL,GAAc,KAAK21B,oBAAL,CACZ,2BADY,EAEZ,KAAKkB,oBAAL,CAA0B9B,IAA1B,CAA+B,IAA/B,CAFY,EAGE,KAHF,EAIS,IAJT,CAAd;WAMO,KAAK7xB,UAAL,CAAgBtF,IAAhB,EAAsB,4BAAtB,CAAP;;;EAGFu5B,6BAA6B,GAAuB;QAC9C,KAAK3mB,SAAL,GAAiB3S,IAAjB,KAA0B2E,KAAE,CAAC9I,MAAjC,EAAyC;WAClCuO,IAAL;aACO,KAAKmuB,oBAAL,EAAP;;;WAEK,IAAP;;;EAKFgB,eAAe,CACbC,WADa,EAEbC,SAFa,EAGP;UAEAC,mBAAmB,GAAGF,WAAW,KAAK70B,KAAE,CAAC3L,KAA/C;IACAygC,SAAS,CAACl1B,cAAV,GAA2B,KAAK60B,wBAAL,EAA3B;SACK9sB,MAAL,CAAY3H,KAAE,CAACpM,MAAf;IACAkhC,SAAS,CAACE,UAAV,GAAuB,KAAKC,8BAAL,EAAvB;;QACIF,mBAAJ,EAAyB;MACvBD,SAAS,CAACxrB,cAAV,GAA2B,KAAK4rB,oCAAL,CACzBL,WADyB,CAA3B;KADF,MAIO,IAAI,KAAKrsB,KAAL,CAAWqsB,WAAX,CAAJ,EAA6B;MAClCC,SAAS,CAACxrB,cAAV,GAA2B,KAAK4rB,oCAAL,CACzBL,WADyB,CAA3B;;;;EAMJI,8BAA8B,GAE5B;WACO,KAAKE,gBAAL,CAAsBn1B,KAAE,CAACnM,MAAzB,MAA6DsL,GAA7D,CACLzD,OAAO,IAAI;UAEPA,OAAO,CAACL,IAAR,KAAiB,YAAjB,IACAK,OAAO,CAACL,IAAR,KAAiB,aADjB,IAEAK,OAAO,CAACL,IAAR,KAAiB,eAFjB,IAGAK,OAAO,CAACL,IAAR,KAAiB,cAJnB,EAKE;aACKqC,KAAL,CACEhC,OAAO,CAACiB,KADV,EAEE,8EACG,eAAcjB,OAAO,CAACL,IAAK,EAHhC;;;aAMMK,OAAR;KAdG,CAAP;;;EAmBF05B,0BAA0B,GAAS;QAC7B,CAAC,KAAKhtB,GAAL,CAASpI,KAAE,CAAClM,KAAZ,CAAL,EAAyB;WAClB0V,SAAL;;;;EAIJ6rB,sBAAsB,CACpB/5B,IADoB,EAEpBF,IAFoB,EAG8C;SAC7Dw5B,eAAL,CAAqB50B,KAAE,CAAChM,KAAxB,EAA+BoH,IAA/B;SACKg6B,0BAAL;WACO,KAAK10B,UAAL,CAAgBtF,IAAhB,EAAsBE,IAAtB,CAAP;;;EAGFg6B,+BAA+B,GAAG;SAC3B7vB,IAAL;WACO,KAAK2C,GAAL,CAASpI,KAAE,CAACrN,IAAZ,KAAqB,KAAK6V,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAA5B;;;EAGFuhC,wBAAwB,CAACn6B,IAAD,EAAoC;QAExD,EACE,KAAKoN,KAAL,CAAWxI,KAAE,CAAC1M,QAAd,KACA,KAAKkiC,WAAL,CAAiB,KAAKF,+BAAL,CAAqC/C,IAArC,CAA0C,IAA1C,CAAjB,CAFF,CADF,EAKE;aACO3rB,SAAP;;;SAGGe,MAAL,CAAY3H,KAAE,CAAC1M,QAAf;UACMsV,EAAE,GAAG,KAAKC,eAAL,EAAX;IACAD,EAAE,CAACU,cAAH,GAAoB,KAAK2qB,qBAAL,EAApB;SACK1qB,gBAAL,CAAsBX,EAAtB;SAEKjB,MAAL,CAAY3H,KAAE,CAACzM,QAAf;IACA6H,IAAI,CAAC45B,UAAL,GAAkB,CAACpsB,EAAD,CAAlB;UAEMvN,IAAI,GAAG,KAAKo6B,wBAAL,EAAb;QACIp6B,IAAJ,EAAUD,IAAI,CAACkO,cAAL,GAAsBjO,IAAtB;SACL+5B,0BAAL;WACO,KAAK10B,UAAL,CAAgBtF,IAAhB,EAAsB,kBAAtB,CAAP;;;EAGFs6B,gCAAgC,CAC9Bt6B,IAD8B,EAE9Bu6B,QAF8B,EAGe;QACzC,KAAKvtB,GAAL,CAASpI,KAAE,CAAC7L,QAAZ,CAAJ,EAA2BiH,IAAI,CAAC+F,QAAL,GAAgB,IAAhB;UACrBy0B,OAAY,GAAGx6B,IAArB;;QAEI,CAACu6B,QAAD,KAAc,KAAKntB,KAAL,CAAWxI,KAAE,CAACpM,MAAd,KAAyB,KAAKoV,YAAL,CAAkB,GAAlB,CAAvC,CAAJ,EAAoE;YAC5DzN,MAA2B,GAAGq6B,OAApC;WACKhB,eAAL,CAAqB50B,KAAE,CAAChM,KAAxB,EAA+BuH,MAA/B;WACK65B,0BAAL;aACO,KAAK10B,UAAL,CAAgBnF,MAAhB,EAAwB,mBAAxB,CAAP;KAJF,MAKO;YACC8T,QAA+B,GAAGumB,OAAxC;UACID,QAAJ,EAActmB,QAAQ,CAACsmB,QAAT,GAAoB,IAApB;YACRt6B,IAAI,GAAG,KAAKo6B,wBAAL,EAAb;UACIp6B,IAAJ,EAAUgU,QAAQ,CAAC/F,cAAT,GAA0BjO,IAA1B;WACL+5B,0BAAL;aACO,KAAK10B,UAAL,CAAgB2O,QAAhB,EAA0B,qBAA1B,CAAP;;;;EAIJwmB,iBAAiB,GAAoB;UAC7Bz6B,IAAS,GAAG,KAAKqF,SAAL,EAAlB;;QAEI,KAAK+H,KAAL,CAAWxI,KAAE,CAACpM,MAAd,KAAyB,KAAKoV,YAAL,CAAkB,GAAlB,CAA7B,EAAqD;aAC5C,KAAKqsB,sBAAL,CAA4B,4BAA5B,EAA0Dj6B,IAA1D,CAAP;;;QAGE,KAAKoN,KAAL,CAAWxI,KAAE,CAAC3I,IAAd,CAAJ,EAAyB;YACjBuR,EAAgB,GAAG,KAAKnI,SAAL,EAAzB;WACKgF,IAAL;;UACI,KAAK+C,KAAL,CAAWxI,KAAE,CAACpM,MAAd,KAAyB,KAAKoV,YAAL,CAAkB,GAAlB,CAA7B,EAAqD;eAC5C,KAAKqsB,sBAAL,CACL,iCADK,EAELj6B,IAFK,CAAP;OADF,MAKO;QACLA,IAAI,CAACoD,GAAL,GAAW,KAAKwR,gBAAL,CAAsBpH,EAAtB,EAA0B,KAA1B,CAAX;eACO,KAAK8sB,gCAAL,CAAsCt6B,IAAtC,EAA4C,KAA5C,CAAP;;;;UAIEu6B,QAAQ,GAAG,CAAC,CAAC,KAAKxD,eAAL,CAAqB,CAAC,UAAD,CAArB,CAAnB;UAEM2D,GAAG,GAAG,KAAKP,wBAAL,CAA8Bn6B,IAA9B,CAAZ;;QACI06B,GAAJ,EAAS;UACHH,QAAJ,EAAcv6B,IAAI,CAACu6B,QAAL,GAAgB,IAAhB;aACPG,GAAP;;;SAGGzgB,iBAAL,CAAuBja,IAAvB,EAAwD,KAAxD;WACO,KAAKs6B,gCAAL,CAAsCt6B,IAAtC,EAA4Cu6B,QAA5C,CAAP;;;EAGFI,kBAAkB,GAAoB;UAC9B36B,IAAqB,GAAG,KAAKqF,SAAL,EAA9B;IACArF,IAAI,CAACogB,OAAL,GAAe,KAAKwa,wBAAL,EAAf;WACO,KAAKt1B,UAAL,CAAgBtF,IAAhB,EAAsB,eAAtB,CAAP;;;EAGF46B,wBAAwB,GAAoC;SACrDruB,MAAL,CAAY3H,KAAE,CAACxM,MAAf;UACMgoB,OAAO,GAAG,KAAKsX,WAAL,CACd,aADc,EAEd,KAAK+C,iBAAL,CAAuBtD,IAAvB,CAA4B,IAA5B,CAFc,CAAhB;SAIK5qB,MAAL,CAAY3H,KAAE,CAACtM,MAAf;WACO8nB,OAAP;;;EAGFya,qBAAqB,GAAY;SAC1BxwB,IAAL;;QACI,KAAK2C,GAAL,CAASpI,KAAE,CAACpK,OAAZ,CAAJ,EAA0B;aACjB,KAAKoU,YAAL,CAAkB,UAAlB,CAAP;;;QAEE,KAAKA,YAAL,CAAkB,UAAlB,CAAJ,EAAmC;WAC5BvE,IAAL;;;QAEE,CAAC,KAAK+C,KAAL,CAAWxI,KAAE,CAAC1M,QAAd,CAAL,EAA8B;aACrB,KAAP;;;SAEGmS,IAAL;;QACI,CAAC,KAAKusB,cAAL,EAAL,EAA4B;aACnB,KAAP;;;SAEGvsB,IAAL;WACO,KAAK+C,KAAL,CAAWxI,KAAE,CAACjI,GAAd,CAAP;;;EAGFm+B,0BAA0B,GAAsB;UACxC96B,IAAuB,GAAG,KAAKqF,SAAL,EAAhC;IACArF,IAAI,CAACzI,IAAL,GAAY,KAAK2hC,mBAAL,CAAyBl5B,IAAI,CAACuB,KAA9B,CAAZ;IACAvB,IAAI,CAACm5B,UAAL,GAAkB,KAAK4B,qBAAL,CAA2Bn2B,KAAE,CAACjI,GAA9B,CAAlB;WACO,KAAK2I,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;;;EAGFg7B,iBAAiB,GAAmB;UAC5Bh7B,IAAoB,GAAG,KAAKqF,SAAL,EAA7B;SAEKkH,MAAL,CAAY3H,KAAE,CAACxM,MAAf;;QAEI,KAAKgV,KAAL,CAAWxI,KAAE,CAACpK,OAAd,CAAJ,EAA4B;MAC1BwF,IAAI,CAACu6B,QAAL,GAAgB,KAAK51B,KAAL,CAAW9D,KAA3B;WACKwJ,IAAL;WACKwC,gBAAL,CAAsB,UAAtB;KAHF,MAIO,IAAI,KAAK2B,aAAL,CAAmB,UAAnB,CAAJ,EAAoC;MACzCxO,IAAI,CAACu6B,QAAL,GAAgB,IAAhB;;;SAGGhuB,MAAL,CAAY3H,KAAE,CAAC1M,QAAf;IACA8H,IAAI,CAACiS,aAAL,GAAqB,KAAK6oB,0BAAL,EAArB;SACKvuB,MAAL,CAAY3H,KAAE,CAACzM,QAAf;;QAEI,KAAKiV,KAAL,CAAWxI,KAAE,CAACpK,OAAd,CAAJ,EAA4B;MAC1BwF,IAAI,CAAC+F,QAAL,GAAgB,KAAKpB,KAAL,CAAW9D,KAA3B;WACKwJ,IAAL;WACKkC,MAAL,CAAY3H,KAAE,CAAC7L,QAAf;KAHF,MAIO,IAAI,KAAKiU,GAAL,CAASpI,KAAE,CAAC7L,QAAZ,CAAJ,EAA2B;MAChCiH,IAAI,CAAC+F,QAAL,GAAgB,IAAhB;;;IAGF/F,IAAI,CAACkO,cAAL,GAAsB,KAAK+sB,cAAL,EAAtB;SACK7sB,SAAL;SACK7B,MAAL,CAAY3H,KAAE,CAACtM,MAAf;WAEO,KAAKgN,UAAL,CAAgBtF,IAAhB,EAAsB,cAAtB,CAAP;;;EAGFk7B,gBAAgB,GAAkB;UAC1Bl7B,IAAmB,GAAG,KAAKqF,SAAL,EAA5B;IACArF,IAAI,CAACm7B,YAAL,GAAoB,KAAKpD,oBAAL,CAClB,mBADkB,EAElB,KAAKqD,uBAAL,CAA6BjE,IAA7B,CAAkC,IAAlC,CAFkB,EAGJ,IAHI,EAIG,KAJH,CAApB;QAUIkE,mBAAmB,GAAG,KAA1B;IACAr7B,IAAI,CAACm7B,YAAL,CAAkBr4B,OAAlB,CAA0Bw4B,WAAW,IAAI;UACnCA,WAAW,CAACr7B,IAAZ,KAAqB,gBAAzB,EAA2C;QACzCo7B,mBAAmB,GAAG,IAAtB;OADF,MAEO,IAAIA,mBAAmB,IAAIC,WAAW,CAACr7B,IAAZ,KAAqB,YAAhD,EAA8D;aAC9DqC,KAAL,CACEg5B,WAAW,CAAC/5B,KADd,EAEE,uDAFF;;KAJJ;WAWO,KAAK+D,UAAL,CAAgBtF,IAAhB,EAAsB,aAAtB,CAAP;;;EAGFo7B,uBAAuB,GAAa;QAE9B,KAAKhuB,KAAL,CAAWxI,KAAE,CAACzL,QAAd,CAAJ,EAA6B;YACrBoiC,QAAsB,GAAG,KAAKl2B,SAAL,EAA/B;WACKgF,IAAL;MACAkxB,QAAQ,CAACrtB,cAAT,GAA0B,KAAKstB,WAAL,EAA1B;;UAEE,KAAKpuB,KAAL,CAAWxI,KAAE,CAAClM,KAAd,KACA,KAAK+iC,iBAAL,SAFF,EAGE;aACKC,gBAAL,CAAsB,KAAK/2B,KAAL,CAAWpD,KAAjC;;;aAEK,KAAK+D,UAAL,CAAgBi2B,QAAhB,EAA0B,YAA1B,CAAP;;;UAGIt7B,IAAI,GAAG,KAAKu7B,WAAL,EAAb;;QAEI,KAAKxuB,GAAL,CAASpI,KAAE,CAAC7L,QAAZ,CAAJ,EAA2B;YACnB4iC,gBAAkC,GAAG,KAAKpD,eAAL,CAAqBt4B,IAArB,CAA3C;MACA07B,gBAAgB,CAACztB,cAAjB,GAAkCjO,IAAlC;aACO,KAAKqF,UAAL,CAAgBq2B,gBAAhB,EAAkC,gBAAlC,CAAP;;;WAEK17B,IAAP;;;EAGF27B,wBAAwB,GAA0B;UAC1C57B,IAAI,GAAG,KAAKqF,SAAL,EAAb;SACKkH,MAAL,CAAY3H,KAAE,CAACpM,MAAf;IACAwH,IAAI,CAACkO,cAAL,GAAsB,KAAKstB,WAAL,EAAtB;SACKjvB,MAAL,CAAY3H,KAAE,CAACnM,MAAf;WACO,KAAK6M,UAAL,CAAgBtF,IAAhB,EAAsB,qBAAtB,CAAP;;;EAGF67B,gCAAgC,CAC9B57B,IAD8B,EAEC;UACzBD,IAAmC,GAAG,KAAKqF,SAAL,EAA5C;;QACIpF,IAAI,KAAK,mBAAb,EAAkC;WAC3BsM,MAAL,CAAY3H,KAAE,CAAC3I,IAAf;;;SAEGu9B,eAAL,CAAqB50B,KAAE,CAAC3L,KAAxB,EAA+B+G,IAA/B;WACO,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsBC,IAAtB,CAAP;;;EAGF67B,sBAAsB,GAAoB;UAClC97B,IAAqB,GAAG,KAAKqF,SAAL,EAA9B;;IACArF,IAAI,CAAC4f,OAAL,GAAe,CAAC,MAAM;cACZ,KAAKjb,KAAL,CAAW1E,IAAnB;aACO2E,KAAE,CAAC/M,GAAR;aACK+M,KAAE,CAAC5M,MAAR;aACK4M,KAAE,CAACnI,KAAR;aACKmI,KAAE,CAAClI,MAAR;iBAES,KAAKgI,aAAL,EAAP;;;gBAEM,KAAKuK,UAAL,EAAN;;KATS,GAAf;;WAYO,KAAK3J,UAAL,CAAgBtF,IAAhB,EAAsB,eAAtB,CAAP;;;EAGF+7B,0BAA0B,GAAa;UAC/B/7B,IAAqB,GAAG,KAAKqF,SAAL,EAA9B;UACM22B,YAAY,GAAG,KAAKC,aAAL,CAAmB,KAAnB,CAArB;;QACID,YAAY,CAACE,WAAb,CAAyB75B,MAAzB,GAAkC,CAAtC,EAAyC;WAClCC,KAAL,CACE05B,YAAY,CAACE,WAAb,CAAyB,CAAzB,EAA4B36B,KAD9B,EAEE,qDAFF;;;IAKFvB,IAAI,CAAC4f,OAAL,GAAeoc,YAAf;WACO,KAAK12B,UAAL,CAAgBtF,IAAhB,EAAsB,eAAtB,CAAP;;;EAGFm8B,kCAAkC,GAAqC;UAC/DC,WAAW,GAAG,KAAKtD,mBAAL,EAApB;;QACI,KAAKlqB,YAAL,CAAkB,IAAlB,KAA2B,CAAC,KAAKkoB,qBAAL,EAAhC,EAA8D;aACrD,KAAK4B,wBAAL,CAA8B0D,WAA9B,CAAP;KADF,MAEO;aACEA,WAAP;;;;EAIJC,mBAAmB,GAAa;YACtB,KAAK13B,KAAL,CAAW1E,IAAnB;WACO2E,KAAE,CAACrN,IAAR;WACKqN,KAAE,CAAC9H,KAAR;WACK8H,KAAE,CAACpI,KAAR;;gBACQyD,IAAI,GAAG,KAAKmN,KAAL,CAAWxI,KAAE,CAAC9H,KAAd,IACT,eADS,GAET,KAAKsQ,KAAL,CAAWxI,KAAE,CAACpI,KAAd,IACA,eADA,GAEAk6B,mBAAmB,CAAC,KAAK/xB,KAAL,CAAW9D,KAAZ,CAJvB;;cAMEZ,IAAI,KAAKuL,SAAT,IACA,KAAKiwB,iBAAL,SAFF,EAGE;kBACMz7B,IAAqB,GAAG,KAAKqF,SAAL,EAA9B;iBACKgF,IAAL;mBACO,KAAK/E,UAAL,CAAgBtF,IAAhB,EAAsBC,IAAtB,CAAP;;;iBAEK,KAAKu4B,oBAAL,EAAP;;;WAEG5zB,KAAE,CAAC5M,MAAR;WACK4M,KAAE,CAAC/M,GAAR;WACK+M,KAAE,CAACnI,KAAR;WACKmI,KAAE,CAAClI,MAAR;eACS,KAAKo/B,sBAAL,EAAP;;WACGl3B,KAAE,CAACpK,OAAR;YACM,KAAKmK,KAAL,CAAW9D,KAAX,KAAqB,GAAzB,EAA8B;gBACtBb,IAAqB,GAAG,KAAKqF,SAAL,EAA9B;;cACI,KAAKuN,SAAL,GAAiB3S,IAAjB,KAA0B2E,KAAE,CAAC/M,GAAjC,EAAsC;kBAC9B,KAAKoX,UAAL,EAAN;;;UAEFjP,IAAI,CAAC4f,OAAL,GAAe,KAAK0c,eAAL,EAAf;iBACO,KAAKh3B,UAAL,CAAgBtF,IAAhB,EAAsB,eAAtB,CAAP;;;;;WAGC4E,KAAE,CAAC1I,KAAR;eACS,KAAKigC,kCAAL,EAAP;;WACGv3B,KAAE,CAAC/H,OAAR;eACS,KAAKk8B,gBAAL,EAAP;;WACGn0B,KAAE,CAACrI,OAAR;eACS,KAAK27B,iBAAL,EAAP;;WACGtzB,KAAE,CAACxM,MAAR;eACS,KAAKgiC,WAAL,CAAiB,KAAKS,qBAAL,CAA2B1D,IAA3B,CAAgC,IAAhC,CAAjB,IACH,KAAK6D,iBAAL,EADG,GAEH,KAAKL,kBAAL,EAFJ;;WAGG/1B,KAAE,CAAC1M,QAAR;eACS,KAAKgjC,gBAAL,EAAP;;WACGt2B,KAAE,CAACpM,MAAR;eACS,KAAKojC,wBAAL,EAAP;;WACGh3B,KAAE,CAACxL,SAAR;eACS,KAAK2iC,0BAAL,EAAP;;;UAGE,KAAK9sB,UAAL,EAAN;;;EAGFstB,wBAAwB,GAAa;QAC/Bt8B,IAAI,GAAG,KAAKo8B,mBAAL,EAAX;;WACO,CAAC,KAAKvF,qBAAL,EAAD,IAAiC,KAAK9pB,GAAL,CAASpI,KAAE,CAAC1M,QAAZ,CAAxC,EAA+D;UACzD,KAAKkV,KAAL,CAAWxI,KAAE,CAACzM,QAAd,CAAJ,EAA6B;cACrB6H,IAAmB,GAAG,KAAKu4B,eAAL,CAAqBt4B,IAArB,CAA5B;QACAD,IAAI,CAAC+U,WAAL,GAAmB9U,IAAnB;aACKsM,MAAL,CAAY3H,KAAE,CAACzM,QAAf;QACA8H,IAAI,GAAG,KAAKqF,UAAL,CAAgBtF,IAAhB,EAAsB,aAAtB,CAAP;OAJF,MAKO;cACCA,IAA2B,GAAG,KAAKu4B,eAAL,CAAqBt4B,IAArB,CAApC;QACAD,IAAI,CAACw8B,UAAL,GAAkBv8B,IAAlB;QACAD,IAAI,CAACy8B,SAAL,GAAiB,KAAKjB,WAAL,EAAjB;aACKjvB,MAAL,CAAY3H,KAAE,CAACzM,QAAf;QACA8H,IAAI,GAAG,KAAKqF,UAAL,CAAgBtF,IAAhB,EAAsB,qBAAtB,CAAP;;;;WAGGC,IAAP;;;EAGFy8B,mBAAmB,CACjBrjB,QADiB,EAEC;UACZrZ,IAAsB,GAAG,KAAKqF,SAAL,EAA/B;SACKwH,gBAAL,CAAsBwM,QAAtB;IACArZ,IAAI,CAACqZ,QAAL,GAAgBA,QAAhB;IACArZ,IAAI,CAACkO,cAAL,GAAsB,KAAKyuB,2BAAL,EAAtB;;QAEItjB,QAAQ,KAAK,UAAjB,EAA6B;WACtBujB,gCAAL,CAAsC58B,IAAtC;;;WAGK,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;;;EAGF48B,gCAAgC,CAAC58B,IAAD,EAAe;YACrCA,IAAI,CAACkO,cAAL,CAAoBjO,IAA5B;WACO,aAAL;WACK,aAAL;;;;aAGOqC,KAAL,CACEtC,IAAI,CAACuB,KADP,EAEE,8EAFF;;;;EAONs7B,gBAAgB,GAAkB;UAC1B78B,IAAI,GAAG,KAAKqF,SAAL,EAAb;SACKwH,gBAAL,CAAsB,OAAtB;UACMoF,aAAa,GAAG,KAAK5M,SAAL,EAAtB;IACA4M,aAAa,CAAC1a,IAAd,GAAqB,KAAK2hC,mBAAL,CAAyBjnB,aAAa,CAAC1Q,KAAvC,CAArB;IACAvB,IAAI,CAACiS,aAAL,GAAqB,KAAK3M,UAAL,CAAgB2M,aAAhB,EAA+B,iBAA/B,CAArB;WACO,KAAK3M,UAAL,CAAgBtF,IAAhB,EAAsB,aAAtB,CAAP;;;EAGF28B,2BAA2B,GAAa;UAChCtjB,QAAQ,GAAG,CAAC,OAAD,EAAU,QAAV,EAAoB,UAApB,EAAgCyjB,IAAhC,CAAqCC,EAAE,IACtD,KAAKnuB,YAAL,CAAkBmuB,EAAlB,CADe,CAAjB;WAGO1jB,QAAQ,GACX,KAAKqjB,mBAAL,CAAyBrjB,QAAzB,CADW,GAEX,KAAKzK,YAAL,CAAkB,OAAlB,IACA,KAAKiuB,gBAAL,EADA,GAEA,KAAKN,wBAAL,EAJJ;;;EAOFS,8BAA8B,CAC5B98B,IAD4B,EAE5B+8B,oBAF4B,EAG5B5jB,QAH4B,EAIlB;SACLrM,GAAL,CAASqM,QAAT;QACIpZ,IAAI,GAAGg9B,oBAAoB,EAA/B;;QACI,KAAK7vB,KAAL,CAAWiM,QAAX,CAAJ,EAA0B;YAClBzhB,KAAK,GAAG,CAACqI,IAAD,CAAd;;aACO,KAAK+M,GAAL,CAASqM,QAAT,CAAP,EAA2B;QACzBzhB,KAAK,CAAC6M,IAAN,CAAWw4B,oBAAoB,EAA/B;;;YAEIj9B,IAA0C,GAAG,KAAKu4B,eAAL,CACjDt4B,IADiD,CAAnD;MAGAD,IAAI,CAACpI,KAAL,GAAaA,KAAb;MACAqI,IAAI,GAAG,KAAKqF,UAAL,CAAgBtF,IAAhB,EAAsBE,IAAtB,CAAP;;;WAEKD,IAAP;;;EAGFi9B,+BAA+B,GAAa;WACnC,KAAKF,8BAAL,CACL,oBADK,EAEL,KAAKL,2BAAL,CAAiCxF,IAAjC,CAAsC,IAAtC,CAFK,EAGLvyB,KAAE,CAACxK,UAHE,CAAP;;;EAOF+iC,wBAAwB,GAAG;WAClB,KAAKH,8BAAL,CACL,aADK,EAEL,KAAKE,+BAAL,CAAqC/F,IAArC,CAA0C,IAA1C,CAFK,EAGLvyB,KAAE,CAAC1K,SAHE,CAAP;;;EAOFkjC,uBAAuB,GAAG;QACpB,KAAKxvB,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;aACnB,IAAP;;;WAGA,KAAKR,KAAL,CAAWxI,KAAE,CAACpM,MAAd,KACA,KAAK4hC,WAAL,CAAiB,KAAKiD,oCAAL,CAA0ClG,IAA1C,CAA+C,IAA/C,CAAjB,CAFF;;;EAMFmG,oBAAoB,GAAY;QAC1B,KAAKlwB,KAAL,CAAWxI,KAAE,CAACrN,IAAd,KAAuB,KAAK6V,KAAL,CAAWxI,KAAE,CAAC1I,KAAd,CAA3B,EAAiD;WAC1CmO,IAAL;aACO,IAAP;;;QAGE,KAAK+C,KAAL,CAAWxI,KAAE,CAACxM,MAAd,CAAJ,EAA2B;UACrBmlC,iBAAiB,GAAG,CAAxB;WACKlzB,IAAL;;aAEOkzB,iBAAiB,GAAG,CAA3B,EAA8B;YACxB,KAAKnwB,KAAL,CAAWxI,KAAE,CAACxM,MAAd,CAAJ,EAA2B;YACvBmlC,iBAAF;SADF,MAEO,IAAI,KAAKnwB,KAAL,CAAWxI,KAAE,CAACtM,MAAd,CAAJ,EAA2B;YAC9BilC,iBAAF;;;aAEGlzB,IAAL;;;aAEK,IAAP;;;QAGE,KAAK+C,KAAL,CAAWxI,KAAE,CAAC1M,QAAd,CAAJ,EAA6B;UACvBqlC,iBAAiB,GAAG,CAAxB;WACKlzB,IAAL;;aAEOkzB,iBAAiB,GAAG,CAA3B,EAA8B;YACxB,KAAKnwB,KAAL,CAAWxI,KAAE,CAAC1M,QAAd,CAAJ,EAA6B;YACzBqlC,iBAAF;SADF,MAEO,IAAI,KAAKnwB,KAAL,CAAWxI,KAAE,CAACzM,QAAd,CAAJ,EAA6B;YAChColC,iBAAF;;;aAEGlzB,IAAL;;;aAEK,IAAP;;;WAGK,KAAP;;;EAGFgzB,oCAAoC,GAAY;SACzChzB,IAAL;;QACI,KAAK+C,KAAL,CAAWxI,KAAE,CAACnM,MAAd,KAAyB,KAAK2U,KAAL,CAAWxI,KAAE,CAACzL,QAAd,CAA7B,EAAsD;aAG7C,IAAP;;;QAEE,KAAKmkC,oBAAL,EAAJ,EAAiC;UAE7B,KAAKlwB,KAAL,CAAWxI,KAAE,CAAChM,KAAd,KACA,KAAKwU,KAAL,CAAWxI,KAAE,CAAClM,KAAd,CADA,IAEA,KAAK0U,KAAL,CAAWxI,KAAE,CAAC7L,QAAd,CAFA,IAGA,KAAKqU,KAAL,CAAWxI,KAAE,CAACnL,EAAd,CAJF,EAKE;eAKO,IAAP;;;UAEE,KAAK2T,KAAL,CAAWxI,KAAE,CAACnM,MAAd,CAAJ,EAA2B;aACpB4R,IAAL;;YACI,KAAK+C,KAAL,CAAWxI,KAAE,CAAC3L,KAAd,CAAJ,EAA0B;iBAEjB,IAAP;;;;;WAIC,KAAP;;;EAGF6gC,oCAAoC,CAClCL,WADkC,EAEd;WACb,KAAK+D,QAAL,CAAc,MAAM;YACnBC,CAAqB,GAAG,KAAKp4B,SAAL,EAA9B;WACKkH,MAAL,CAAYktB,WAAZ;YAEMiE,OAAO,GAAG,KAAKxG,UAAL,CACd,KAAKyG,2BAAL,CAAiCxG,IAAjC,CAAsC,IAAtC,CADc,CAAhB;;UAIIuG,OAAO,IAAI,KAAKtwB,KAAL,CAAWxI,KAAE,CAAC1I,KAAd,CAAf,EAAqC;YAG/B0hC,iBAAiB,GAAG,KAAKzB,kCAAL,EAAxB;;YAGIyB,iBAAiB,CAAC39B,IAAlB,KAA2B,YAA/B,EAA6C;gBACrCD,IAAuB,GAAG,KAAKu4B,eAAL,CAAqBkF,CAArB,CAAhC;UACAz9B,IAAI,CAAC44B,aAAL,GAAsBgF,iBAAtB;UACA59B,IAAI,CAAC09B,OAAL,GAAe,IAAf;UACAE,iBAAiB,GAAG,KAAKt4B,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAApB;SAJF,MAKO;UACJ49B,iBAAD,CAAuCF,OAAvC,GAAiD,IAAjD;;;QAEFD,CAAC,CAACvvB,cAAF,GAAmB0vB,iBAAnB;eACO,KAAKt4B,UAAL,CAAgBm4B,CAAhB,EAAmB,kBAAnB,CAAP;;;YAGII,qBAAqB,GACzB,KAAKjH,cAAL,MACA,KAAKM,UAAL,CAAgB,KAAK4G,0BAAL,CAAgC3G,IAAhC,CAAqC,IAArC,CAAhB,CAFF;;UAII,CAAC0G,qBAAL,EAA4B;YACtB,CAACH,OAAL,EAAc;iBAEL,KAAK7E,qBAAL,CAA0C,KAA1C,EAAiD4E,CAAjD,CAAP;;;cAGIz9B,IAAuB,GAAG,KAAKu4B,eAAL,CAAqBkF,CAArB,CAAhC;QAEAz9B,IAAI,CAAC44B,aAAL,GAAqB,KAAKnrB,eAAL,EAArB;QACAzN,IAAI,CAAC09B,OAAL,GAAeA,OAAf;QACAD,CAAC,CAACvvB,cAAF,GAAmB,KAAK5I,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAnB;eACO,KAAKsF,UAAL,CAAgBm4B,CAAhB,EAAmB,kBAAnB,CAAP;;;YAIIx9B,IAAI,GAAG,KAAK44B,qBAAL,CAA0C,KAA1C,CAAb;YACM74B,IAAI,GAAG,KAAKu4B,eAAL,CAAqBkF,CAArB,CAAb;MACAz9B,IAAI,CAAC44B,aAAL,GAAqBiF,qBAArB;MACA79B,IAAI,CAACkO,cAAL,GAAsBjO,IAAtB;MACAD,IAAI,CAAC09B,OAAL,GAAeA,OAAf;MACAD,CAAC,CAACvvB,cAAF,GAAmB,KAAK5I,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAnB;aACO,KAAKsF,UAAL,CAAgBm4B,CAAhB,EAAmB,kBAAnB,CAAP;KAnDK,CAAP;;;EAuDFM,uCAAuC,GAAwB;WACtD,KAAK3wB,KAAL,CAAWxI,KAAE,CAAChM,KAAd,IACH,KAAKkhC,oCAAL,CAA0Cl1B,KAAE,CAAChM,KAA7C,CADG,GAEH4S,SAFJ;;;EAKF6uB,wBAAwB,GAAwB;WACvC,KAAKjtB,KAAL,CAAWxI,KAAE,CAAChM,KAAd,IAAuB,KAAKigC,qBAAL,EAAvB,GAAsDrtB,SAA7D;;;EAGFyvB,cAAc,GAAc;WACnB,KAAK7B,kBAAL,CAAwBx0B,KAAE,CAAChM,KAA3B,CAAP;;;EAGFklC,0BAA0B,GAAkB;UACpCtwB,EAAE,GAAG,KAAKC,eAAL,EAAX;;QACI,KAAKmB,YAAL,CAAkB,IAAlB,KAA2B,CAAC,KAAKkoB,qBAAL,EAAhC,EAA8D;WACvDzsB,IAAL;aACOmD,EAAP;;;;EAIJmwB,2BAA2B,GAAY;QAEnC,CAAC,KAAKvwB,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAD,IACA,KAAKoN,KAAL,CAAW9D,KAAX,KAAqB,SADrB,IAEA,KAAKi2B,qBAAL,EAHF,EAIE;aACO,KAAP;;;UAEIrxB,WAAW,GAAG,KAAKd,KAAL,CAAWc,WAA/B;SACK4E,IAAL;;QACI,CAAC,KAAK+C,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAD,IAAwB,CAAC,KAAK6V,KAAL,CAAWxI,KAAE,CAAC1I,KAAd,CAA7B,EAAmD;aAC1C,KAAP;;;QAGEuJ,WAAJ,EAAiB;WACVnD,KAAL,CACE,KAAKqC,KAAL,CAAW+J,YADb,EAEE,oCAFF;;;WAMK,IAAP;;;EAGFmqB,qBAAqB,CACnBmF,QAAQ,GAAG,IADQ,EAEnBP,CAAqB,GAAG,KAAKp4B,SAAL,EAFL,EAGC;SACfm4B,QAAL,CAAc,MAAM;UACdQ,QAAJ,EAAc,KAAKzxB,MAAL,CAAY3H,KAAE,CAAChM,KAAf;MACd6kC,CAAC,CAACvvB,cAAF,GAAmB,KAAKstB,WAAL,EAAnB;KAFF;WAIO,KAAKl2B,UAAL,CAAgBm4B,CAAhB,EAAmB,kBAAnB,CAAP;;;EAIFjC,WAAW,GAAa;IAEtB/E,MAAM,CAAC,KAAK9xB,KAAL,CAAW2H,MAAZ,CAAN;UACMrM,IAAI,GAAG,KAAKg+B,yBAAL,EAAb;;QACI,KAAKnH,qBAAL,MAAgC,CAAC,KAAK9pB,GAAL,CAASpI,KAAE,CAACvI,QAAZ,CAArC,EAA4D;aACnD4D,IAAP;;;UAEID,IAAyB,GAAG,KAAKu4B,eAAL,CAAqBt4B,IAArB,CAAlC;IACAD,IAAI,CAACk+B,SAAL,GAAiBj+B,IAAjB;IACAD,IAAI,CAACm+B,WAAL,GAAmB,KAAKF,yBAAL,EAAnB;SACK1xB,MAAL,CAAY3H,KAAE,CAAC7L,QAAf;IACAiH,IAAI,CAACo+B,QAAL,GAAgB,KAAK5C,WAAL,EAAhB;SACKjvB,MAAL,CAAY3H,KAAE,CAAChM,KAAf;IACAoH,IAAI,CAACq+B,SAAL,GAAiB,KAAK7C,WAAL,EAAjB;WACO,KAAKl2B,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;;;EAGFi+B,yBAAyB,GAAa;QAChC,KAAKb,uBAAL,EAAJ,EAAoC;aAC3B,KAAKvB,gCAAL,CAAsC,gBAAtC,CAAP;;;QAEE,KAAKzuB,KAAL,CAAWxI,KAAE,CAAC3I,IAAd,CAAJ,EAAyB;aAEhB,KAAK4/B,gCAAL,CAAsC,mBAAtC,CAAP;;;WAEK,KAAKsB,wBAAL,EAAP;;;EAGFmB,oBAAoB,GAAsB;UAClCt+B,IAAuB,GAAG,KAAKqF,SAAL,EAAhC;;UACMvJ,MAAM,GAAG,KAAKy9B,6BAAL,EAAf;;IACAv5B,IAAI,CAACkO,cAAL,GAAsBpS,MAAM,IAAI,KAAKyiC,mBAAL,EAAhC;SACKrsB,gBAAL,CAAsB,GAAtB;IACAlS,IAAI,CAACyB,UAAL,GAAkB,KAAK66B,eAAL,EAAlB;WACO,KAAKh3B,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;;;EAGFw+B,qBAAqB,CACnBC,UADmB,EAE8B;UAC3CC,aAAa,GAAG,KAAK/5B,KAAL,CAAWpD,KAAjC;UAEMo9B,aAAa,GAAG,KAAK/G,oBAAL,CACpB,uBADoB,EAEpB,KAAKgH,kCAAL,CAAwCzH,IAAxC,CAA6C,IAA7C,CAFoB,CAAtB;;QAKI,CAACwH,aAAa,CAACt8B,MAAnB,EAA2B;WACpBC,KAAL,CAAWo8B,aAAX,EAA2B,IAAGD,UAAW,yBAAzC;;;WAGKE,aAAP;;;EAGFC,kCAAkC,GAAoC;UAC9D5+B,IAAqC,GAAG,KAAKqF,SAAL,EAA9C;IAGArF,IAAI,CAACyB,UAAL,GAAkB,KAAK22B,iBAAL,CAAgD,KAAhD,CAAlB;;QACI,KAAKxqB,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;MAC1B5N,IAAI,CAACwE,cAAL,GAAsB,KAAK6zB,oBAAL,EAAtB;;;WAGK,KAAK/yB,UAAL,CAAgBtF,IAAhB,EAAsB,+BAAtB,CAAP;;;EAGF6+B,2BAA2B,CACzB7+B,IADyB,EAEC;IAC1BA,IAAI,CAACwN,EAAL,GAAU,KAAKC,eAAL,EAAV;SACKlL,SAAL,CACEvC,IAAI,CAACwN,EADP,EAEE1O,iBAFF,EAGE0M,SAHF,EAIE,kCAJF;IAMAxL,IAAI,CAACwE,cAAL,GAAsB,KAAK60B,wBAAL,EAAtB;;QACI,KAAKrsB,GAAL,CAASpI,KAAE,CAACvI,QAAZ,CAAJ,EAA2B;MACzB2D,IAAI,CAACoQ,OAAL,GAAe,KAAKouB,qBAAL,CAA2B,SAA3B,CAAf;;;UAEIv6B,IAAuB,GAAG,KAAKoB,SAAL,EAAhC;IACApB,IAAI,CAACA,IAAL,GAAY,KAAKu5B,QAAL,CAAc,KAAK5C,wBAAL,CAA8BzD,IAA9B,CAAmC,IAAnC,CAAd,CAAZ;IACAn3B,IAAI,CAACiE,IAAL,GAAY,KAAKqB,UAAL,CAAgBrB,IAAhB,EAAsB,iBAAtB,CAAZ;WACO,KAAKqB,UAAL,CAAgBtF,IAAhB,EAAsB,wBAAtB,CAAP;;;EAGF8+B,2BAA2B,CACzB9+B,IADyB,EAEC;IAC1BA,IAAI,CAACwN,EAAL,GAAU,KAAKC,eAAL,EAAV;SACKlL,SAAL,CAAevC,IAAI,CAACwN,EAApB,EAAwBzO,YAAxB,EAAsCyM,SAAtC,EAAiD,uBAAjD;IAEAxL,IAAI,CAACwE,cAAL,GAAsB,KAAK60B,wBAAL,EAAtB;IACAr5B,IAAI,CAACkO,cAAL,GAAsB,KAAK6sB,qBAAL,CAA2Bn2B,KAAE,CAACnL,EAA9B,CAAtB;SACK2U,SAAL;WACO,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,wBAAtB,CAAP;;;EAGF++B,aAAa,CAAIC,EAAJ,EAAoB;UACzBC,UAAU,GAAG,KAAKt6B,KAAL,CAAW8C,OAA9B;SACK9C,KAAL,CAAW8C,OAAX,GAAqB,CAACw3B,UAAU,CAAC,CAAD,CAAX,CAArB;;QACI;aACKD,EAAE,EAAT;KADF,SAEU;WACHr6B,KAAL,CAAW8C,OAAX,GAAqBw3B,UAArB;;;;EASJzB,QAAQ,CAAIwB,EAAJ,EAAoB;UACpB3yB,SAAS,GAAG,KAAK1H,KAAL,CAAW2H,MAA7B;SACK3H,KAAL,CAAW2H,MAAX,GAAoB,IAApB;;QACI;aACK0yB,EAAE,EAAT;KADF,SAEU;WACHr6B,KAAL,CAAW2H,MAAX,GAAoBD,SAApB;;;;EAIJ+sB,kBAAkB,CAAC3hC,KAAD,EAAgD;WACzD,CAAC,KAAK2V,KAAL,CAAW3V,KAAX,CAAD,GAAqB+T,SAArB,GAAiC,KAAK+yB,mBAAL,EAAxC;;;EAGFxD,qBAAqB,CAACtjC,KAAD,EAA6B;WACzC,KAAKynC,iBAAL,CAAuB,MAAM,KAAK3yB,MAAL,CAAY9U,KAAZ,CAA7B,CAAP;;;EAGF8mC,mBAAmB,GAAa;WACvB,KAAKW,iBAAL,CAAuB,MAAM,KAAK70B,IAAL,EAA7B,CAAP;;;EAGF60B,iBAAiB,CAACF,EAAD,EAA2B;WACnC,KAAKxB,QAAL,CAAc,MAAM;MACzBwB,EAAE;aACK,KAAKxD,WAAL,EAAP;KAFK,CAAP;;;EAMF2D,iBAAiB,GAAmB;UAC5Bn/B,IAAoB,GAAG,KAAKqF,SAAL,EAA7B;IAEArF,IAAI,CAACwN,EAAL,GAAU,KAAKJ,KAAL,CAAWxI,KAAE,CAAC5M,MAAd,IACN,KAAK0M,aAAL,EADM,GAEN,KAAK+I,eAAL,CAAmC,IAAnC,CAFJ;;QAGI,KAAKT,GAAL,CAASpI,KAAE,CAACnL,EAAZ,CAAJ,EAAqB;MACnBuG,IAAI,CAACo/B,WAAL,GAAmB,KAAKnoB,gBAAL,EAAnB;;;WAEK,KAAK3R,UAAL,CAAgBtF,IAAhB,EAAsB,cAAtB,CAAP;;;EAGFq/B,sBAAsB,CACpBr/B,IADoB,EAEpBq2B,OAFoB,EAGC;QACjBA,OAAJ,EAAar2B,IAAI,CAAC+K,KAAL,GAAa,IAAb;IACb/K,IAAI,CAACwN,EAAL,GAAU,KAAKC,eAAL,EAAV;SACKlL,SAAL,CACEvC,IAAI,CAACwN,EADP,EAEE6oB,OAAO,GAAGj3B,kBAAH,GAAwBJ,YAFjC,EAGEwM,SAHF,EAIE,6BAJF;SAOKe,MAAL,CAAY3H,KAAE,CAACxM,MAAf;IACA4H,IAAI,CAACogB,OAAL,GAAe,KAAKwX,oBAAL,CACb,aADa,EAEb,KAAKuH,iBAAL,CAAuBhI,IAAvB,CAA4B,IAA5B,CAFa,CAAf;SAIK5qB,MAAL,CAAY3H,KAAE,CAACtM,MAAf;WACO,KAAKgN,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;;;EAGFs/B,kBAAkB,GAAoB;UAC9Bt/B,IAAqB,GAAG,KAAKqF,SAAL,EAA9B;SACK2C,KAAL,CAAWoH,KAAX,CAAiBpS,WAAjB;SAEKuP,MAAL,CAAY3H,KAAE,CAACxM,MAAf;SAEKmnC,2BAAL,CACGv/B,IAAI,CAACiE,IAAL,GAAY,EADf,EAEmBuH,SAFnB,EAGiB,IAHjB,EAIY5G,KAAE,CAACtM,MAJf;SAMK0P,KAAL,CAAWuH,IAAX;WACO,KAAKjK,UAAL,CAAgBtF,IAAhB,EAAsB,eAAtB,CAAP;;;EAGFw/B,mCAAmC,CACjCx/B,IADiC,EAEjCy/B,MAAgB,GAAG,KAFc,EAGV;IACvBz/B,IAAI,CAACwN,EAAL,GAAU,KAAKC,eAAL,EAAV;;QAEI,CAACgyB,MAAL,EAAa;WACNl9B,SAAL,CACEvC,IAAI,CAACwN,EADP,EAEEnO,iBAFF,EAGE,IAHF,EAIE,iCAJF;;;QAQE,KAAK2N,GAAL,CAASpI,KAAE,CAAC9L,GAAZ,CAAJ,EAAsB;YACd4mC,KAAK,GAAG,KAAKr6B,SAAL,EAAd;WACKm6B,mCAAL,CAAyCE,KAAzC,EAAgD,IAAhD;MACA1/B,IAAI,CAACiE,IAAL,GAAYy7B,KAAZ;KAHF,MAIO;WACA13B,KAAL,CAAWoH,KAAX,CAAiB1R,eAAjB;MACAsC,IAAI,CAACiE,IAAL,GAAY,KAAKq7B,kBAAL,EAAZ;WACKt3B,KAAL,CAAWuH,IAAX;;;WAEK,KAAKjK,UAAL,CAAgBtF,IAAhB,EAAsB,qBAAtB,CAAP;;;EAGF2/B,uCAAuC,CACrC3/B,IADqC,EAEd;QACnB,KAAK4O,YAAL,CAAkB,QAAlB,CAAJ,EAAiC;MAC/B5O,IAAI,CAAC4/B,MAAL,GAAc,IAAd;MACA5/B,IAAI,CAACwN,EAAL,GAAU,KAAKC,eAAL,EAAV;KAFF,MAGO,IAAI,KAAKL,KAAL,CAAWxI,KAAE,CAAC5M,MAAd,CAAJ,EAA2B;MAChCgI,IAAI,CAACwN,EAAL,GAAU,KAAK9I,aAAL,EAAV;KADK,MAEA;WACAuK,UAAL;;;QAEE,KAAK7B,KAAL,CAAWxI,KAAE,CAACxM,MAAd,CAAJ,EAA2B;WACpB4P,KAAL,CAAWoH,KAAX,CAAiB1R,eAAjB;MACAsC,IAAI,CAACiE,IAAL,GAAY,KAAKq7B,kBAAL,EAAZ;WACKt3B,KAAL,CAAWuH,IAAX;KAHF,MAIO;WACAnB,SAAL;;;WAGK,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,qBAAtB,CAAP;;;EAGF6/B,8BAA8B,CAC5B7/B,IAD4B,EAE5B8/B,QAF4B,EAGC;IAC7B9/B,IAAI,CAAC8/B,QAAL,GAAgBA,QAAQ,IAAI,KAA5B;IACA9/B,IAAI,CAACwN,EAAL,GAAU,KAAKC,eAAL,EAAV;SACKlL,SAAL,CACEvC,IAAI,CAACwN,EADP,EAEE7O,YAFF,EAGE6M,SAHF,EAIE,2BAJF;SAMKe,MAAL,CAAY3H,KAAE,CAACnL,EAAf;IACAuG,IAAI,CAAC+/B,eAAL,GAAuB,KAAKC,sBAAL,EAAvB;SACK5xB,SAAL;WACO,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,2BAAtB,CAAP;;;EAGFigC,2BAA2B,GAAY;WAEnC,KAAKrxB,YAAL,CAAkB,SAAlB,KACA,KAAK6sB,iBAAL,SAFF;;;EAMFuE,sBAAsB,GAAwB;WACrC,KAAKC,2BAAL,KACH,KAAKC,8BAAL,EADG,GAEH,KAAK9H,iBAAL,CAAgD,KAAhD,CAFJ;;;EAKF8H,8BAA8B,GAAgC;UACtDlgC,IAAiC,GAAG,KAAKqF,SAAL,EAA1C;SACKwH,gBAAL,CAAsB,SAAtB;SACKN,MAAL,CAAY3H,KAAE,CAACpM,MAAf;;QACI,CAAC,KAAK4U,KAAL,CAAWxI,KAAE,CAAC5M,MAAd,CAAL,EAA4B;YACpB,KAAKiX,UAAL,EAAN;;;IAGFjP,IAAI,CAACyB,UAAL,GAAkB,KAAKiD,aAAL,EAAlB;SACK6H,MAAL,CAAY3H,KAAE,CAACnM,MAAf;WACO,KAAK6M,UAAL,CAAgBtF,IAAhB,EAAsB,2BAAtB,CAAP;;;EAKFo6B,WAAW,CAAI+F,CAAJ,EAAmB;UACtBx7B,KAAK,GAAG,KAAKA,KAAL,CAAW4R,KAAX,EAAd;UACM6pB,GAAG,GAAGD,CAAC,EAAb;SACKx7B,KAAL,GAAaA,KAAb;WACOy7B,GAAP;;;EAGFC,kBAAkB,CAAiBF,CAAjB,EAAiC;UAC3ChqB,MAAM,GAAG,KAAKC,QAAL,CAAc6G,KAAK,IAAIkjB,CAAC,MAAMljB,KAAK,EAAnC,CAAf;QAEI9G,MAAM,CAACgH,OAAP,IAAkB,CAAChH,MAAM,CAACnW,IAA9B,EAAoC,OAAOwL,SAAP;QAChC2K,MAAM,CAACE,KAAX,EAAkB,KAAK1R,KAAL,GAAawR,MAAM,CAACG,SAApB;WACXH,MAAM,CAACnW,IAAd;;;EAGFk3B,UAAU,CAAIiJ,CAAJ,EAAqB;UACvBx7B,KAAK,GAAG,KAAKA,KAAL,CAAW4R,KAAX,EAAd;UACMJ,MAAM,GAAGgqB,CAAC,EAAhB;;QACIhqB,MAAM,KAAK3K,SAAX,IAAwB2K,MAAM,KAAK,KAAvC,EAA8C;aACrCA,MAAP;KADF,MAEO;WACAxR,KAAL,GAAaA,KAAb;aACO6G,SAAP;;;;EAIJ80B,iBAAiB,CAACC,IAAD,EAA4B;QACvC,KAAKC,gBAAL,EAAJ,EAA6B;;;;QAGzBC,SAAS,GAAG,KAAK97B,KAAL,CAAW1E,IAA3B;QACIC,IAAJ;;QAEI,KAAK0O,YAAL,CAAkB,KAAlB,CAAJ,EAA8B;MAC5B6xB,SAAS,GAAG77B,KAAE,CAAC/I,IAAf;MACAqE,IAAI,GAAG,KAAP;;;YAGMugC,SAAR;WACO77B,KAAE,CAACrJ,SAAR;eACS,KAAKmlC,sBAAL,CACLH,IADK,EAEO,KAFP,EAGqB,IAHrB,CAAP;;WAKG37B,KAAE,CAACxI,MAAR;QAGEmkC,IAAI,CAAClvB,OAAL,GAAe,IAAf;eACO,KAAKsvB,UAAL,CACLJ,IADK,EAEa,IAFb,EAGY,KAHZ,CAAP;;WAKG37B,KAAE,CAAC9I,MAAR;YACM,KAAKsR,KAAL,CAAWxI,KAAE,CAAC9I,MAAd,KAAyB,KAAKkf,qBAAL,CAA2B,MAA3B,CAA7B,EAAiE;eAE1DzO,MAAL,CAAY3H,KAAE,CAAC9I,MAAf;eACK+Q,gBAAL,CAAsB,MAAtB;iBACO,KAAKwyB,sBAAL,CAA4BkB,IAA5B,EAAgD,IAAhD,CAAP;;;WAGC37B,KAAE,CAAC/I,IAAR;QACEqE,IAAI,GAAGA,IAAI,IAAI,KAAKyE,KAAL,CAAW9D,KAA1B;eACO,KAAK+/B,iBAAL,CAAuBL,IAAvB,EAA6BrgC,IAA7B,CAAP;;WACG0E,KAAE,CAACrN,IAAR;;gBACQsJ,KAAK,GAAG,KAAK8D,KAAL,CAAW9D,KAAzB;;cACIA,KAAK,KAAK,QAAd,EAAwB;mBACf,KAAK8+B,uCAAL,CAA6CY,IAA7C,CAAP;WADF,MAEO;mBACE,KAAKM,kBAAL,CAAwBN,IAAxB,EAA8B1/B,KAA9B,EAAgD,IAAhD,CAAP;;;;;;EAORigC,2BAA2B,GAAmB;WACrC,KAAKD,kBAAL,CACL,KAAKx7B,SAAL,EADK,EAEL,KAAKV,KAAL,CAAW9D,KAFN,EAGM,IAHN,CAAP;;;EAOFkgC,0BAA0B,CAAC/gC,IAAD,EAAYwC,IAAZ,EAAgD;YAChEA,IAAI,CAACjL,IAAb;WACO,SAAL;;gBACQmT,WAAW,GAAG,KAAK41B,iBAAL,CAAuBtgC,IAAvB,CAApB;;cACI0K,WAAJ,EAAiB;YACfA,WAAW,CAAC2G,OAAZ,GAAsB,IAAtB;mBACO3G,WAAP;;;;;;WAIC,QAAL;YAGM,KAAK0C,KAAL,CAAWxI,KAAE,CAACxM,MAAd,CAAJ,EAA2B;eACpB4P,KAAL,CAAWoH,KAAX,CAAiB1R,eAAjB;gBACMsjC,GAA0B,GAAGhhC,IAAnC;UACAghC,GAAG,CAACpB,MAAJ,GAAa,IAAb;UACAoB,GAAG,CAACxzB,EAAJ,GAAShL,IAAT;UACAw+B,GAAG,CAAC/8B,IAAJ,GAAW,KAAKq7B,kBAAL,EAAX;eACKt3B,KAAL,CAAWuH,IAAX;iBACO,KAAKjK,UAAL,CAAgB07B,GAAhB,EAAqB,qBAArB,CAAP;;;;;;eAKK,KAAKH,kBAAL,CAAwB7gC,IAAxB,EAA8BwC,IAAI,CAACjL,IAAnC,EAAoD,KAApD,CAAP;;;;EAKNspC,kBAAkB,CAChB7gC,IADgB,EAEhBa,KAFgB,EAGhBwJ,IAHgB,EAIA;YACRxJ,KAAR;WACO,UAAL;YACM,KAAKogC,6BAAL,CAAmCr8B,KAAE,CAACxI,MAAtC,EAA8CiO,IAA9C,CAAJ,EAAyD;gBACjD62B,GAAuB,GAAGlhC,IAAhC;UACAkhC,GAAG,CAACC,QAAJ,GAAe,IAAf;;cACI92B,IAAJ,EAAU;iBACHA,IAAL;;gBACI,CAAC,KAAK+C,KAAL,CAAWxI,KAAE,CAACxI,MAAd,CAAL,EAA4B;mBACrB6S,UAAL,CAAgB,IAAhB,EAAsBrK,KAAE,CAACxI,MAAzB;;;;iBAGG,KAAKukC,UAAL,CACLO,GADK,EAEa,IAFb,EAGY,KAHZ,CAAP;;;;;WAQC,MAAL;YACM72B,IAAI,IAAI,KAAK+C,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAZ,EAAiC;cAC3B8S,IAAJ,EAAU,KAAKA,IAAL;iBACH,KAAKg1B,sBAAL,CAA4Br/B,IAA5B,EAAgD,KAAhD,CAAP;;;;;WAIC,WAAL;YACM,KAAKihC,6BAAL,CAAmCr8B,KAAE,CAACrN,IAAtC,EAA4C8S,IAA5C,CAAJ,EAAuD;cACjDA,IAAJ,EAAU,KAAKA,IAAL;iBACH,KAAKw0B,2BAAL,CAAiC7+B,IAAjC,CAAP;;;;;WAIC,QAAL;YACMqK,IAAJ,EAAU,KAAKA,IAAL;;YACN,KAAK+C,KAAL,CAAWxI,KAAE,CAAC5M,MAAd,CAAJ,EAA2B;iBAClB,KAAK2nC,uCAAL,CAA6C3/B,IAA7C,CAAP;SADF,MAEO,IAAI,KAAKihC,6BAAL,CAAmCr8B,KAAE,CAACrN,IAAtC,EAA4C8S,IAA5C,CAAJ,EAAuD;iBACrD,KAAKm1B,mCAAL,CAAyCx/B,IAAzC,CAAP;;;;;WAIC,WAAL;YACM,KAAKihC,6BAAL,CAAmCr8B,KAAE,CAACrN,IAAtC,EAA4C8S,IAA5C,CAAJ,EAAuD;cACjDA,IAAJ,EAAU,KAAKA,IAAL;iBACH,KAAKm1B,mCAAL,CAAyCx/B,IAAzC,CAAP;;;;;WAIC,MAAL;YACM,KAAKihC,6BAAL,CAAmCr8B,KAAE,CAACrN,IAAtC,EAA4C8S,IAA5C,CAAJ,EAAuD;cACjDA,IAAJ,EAAU,KAAKA,IAAL;iBACH,KAAKy0B,2BAAL,CAAiC9+B,IAAjC,CAAP;;;;;;;EAMRihC,6BAA6B,CAACG,SAAD,EAAuB/2B,IAAvB,EAAsC;WAC1D,CAACA,IAAI,IAAI,KAAK+C,KAAL,CAAWg0B,SAAX,CAAT,KAAmC,CAAC,KAAKZ,gBAAL,EAA3C;;;EAGFa,mCAAmC,CACjCx8B,QADiC,EAEjCC,QAFiC,EAGL;QACxB,CAAC,KAAK8I,YAAL,CAAkB,GAAlB,CAAL,EAA6B;aACpBpC,SAAP;;;UAEI40B,GAA+B,GAAG,KAAKC,kBAAL,CAAwB,MAAM;YAC9DrgC,IAA+B,GAAG,KAAKsB,WAAL,CACtCuD,QADsC,EAEtCC,QAFsC,CAAxC;MAIA9E,IAAI,CAACwE,cAAL,GAAsB,KAAK80B,qBAAL,EAAtB;YAEM/d,mBAAN,CAA0Bvb,IAA1B;MACAA,IAAI,CAACiO,UAAL,GAAkB,KAAK8vB,uCAAL,EAAlB;WACKxxB,MAAL,CAAY3H,KAAE,CAAC3L,KAAf;aACO+G,IAAP;KAVsC,CAAxC;;QAaI,CAACogC,GAAL,EAAU;aACD50B,SAAP;;;WAGK,KAAKoS,oBAAL,CACLwiB,GADK,EAEwB,IAFxB,EAGO,IAHP,CAAP;;;EAOF/H,oBAAoB,GAAmC;UAC/Cr4B,IAAI,GAAG,KAAKqF,SAAL,EAAb;IACArF,IAAI,CAACoC,MAAL,GAAc,KAAKo7B,QAAL,CAAc,MAE1B,KAAKuB,aAAL,CAAmB,MAAM;WAClB7sB,gBAAL,CAAsB,GAAtB;aACO,KAAK0lB,oBAAL,CACL,2BADK,EAEL,KAAK4D,WAAL,CAAiBrE,IAAjB,CAAsB,IAAtB,CAFK,CAAP;KAFF,CAFY,CAAd;SAYKxyB,KAAL,CAAW+C,WAAX,GAAyB,KAAzB;SACKwK,gBAAL,CAAsB,GAAtB;WACO,KAAK5M,UAAL,CAAgBtF,IAAhB,EAAsB,8BAAtB,CAAP;;;EAGFshC,oBAAoB,GAAY;QAC1B,KAAKl0B,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAJ,EAAyB;cACf,KAAKoN,KAAL,CAAW9D,KAAnB;aACO,UAAL;aACK,SAAL;aACK,MAAL;aACK,WAAL;aACK,QAAL;aACK,WAAL;aACK,MAAL;iBACS,IAAP;;;;WAIC,KAAP;;;EAOFiV,wBAAwB,GAAY;QAC9B,KAAKwrB,oBAAL,EAAJ,EAAiC,OAAO,KAAP;WAC1B,MAAMxrB,wBAAN,EAAP;;;EAGFyrB,uBAAuB,CACrB/lB,cADqB,EAErBgmB,UAFqB,EAGc;UAE7B38B,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;QAEI28B,aAAJ;QACIlH,QAAQ,GAAG,KAAf;;QACI/e,cAAJ,EAAoB;MAClBimB,aAAa,GAAG,KAAKC,mBAAL,EAAhB;MACAnH,QAAQ,GAAG,CAAC,CAAC,KAAKxD,eAAL,CAAqB,CAAC,UAAD,CAArB,CAAb;;;UAGIzc,IAAI,GAAG,KAAKD,iBAAL,EAAb;SACKD,4BAAL,CAAkCE,IAAlC;UACMqnB,GAAG,GAAG,KAAKtnB,iBAAL,CAAuBC,IAAI,CAAC/Y,KAA5B,EAAmC+Y,IAAI,CAAC9Y,GAAL,CAASD,KAA5C,EAAmD+Y,IAAnD,CAAZ;;QACImnB,aAAa,IAAIlH,QAArB,EAA+B;YACvBqH,EAAyB,GAAG,KAAKtgC,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAlC;;UACI08B,UAAU,CAACn/B,MAAf,EAAuB;QACrBu/B,EAAE,CAACJ,UAAH,GAAgBA,UAAhB;;;UAEEC,aAAJ,EAAmBG,EAAE,CAACH,aAAH,GAAmBA,aAAnB;UACflH,QAAJ,EAAcqH,EAAE,CAACrH,QAAH,GAAcA,QAAd;;UACVoH,GAAG,CAAC1hC,IAAJ,KAAa,YAAb,IAA6B0hC,GAAG,CAAC1hC,IAAJ,KAAa,mBAA9C,EAAmE;aAC5DqC,KAAL,CACEs/B,EAAE,CAACrgC,KADL,EAEE,mEAFF;;;MAKFqgC,EAAE,CAACC,SAAH,GAAiBF,GAAjB;aACO,KAAKr8B,UAAL,CAAgBs8B,EAAhB,EAAoB,qBAApB,CAAP;;;QAGEJ,UAAU,CAACn/B,MAAf,EAAuB;MACrBiY,IAAI,CAACknB,UAAL,GAAkBA,UAAlB;;;WAGKG,GAAP;;;EAGFlsB,0BAA0B,CACxBzV,IADwB,EAExBC,IAFwB,EAGxBgF,QAAkB,GAAG,KAHG,EAIlB;QACF,KAAKmI,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAJ,EAA0B;MACxBoH,IAAI,CAACiO,UAAL,GAAkB,KAAK6rB,oCAAL,CAA0Cl1B,KAAE,CAAChM,KAA7C,CAAlB;;;UAGIkpC,YAAY,GAChB7hC,IAAI,KAAK,qBAAT,GACI,mBADJ,GAEIA,IAAI,KAAK,aAAT,GACA,iBADA,GAEAuL,SALN;;QAMIs2B,YAAY,IAAI,CAAC,KAAK10B,KAAL,CAAWxI,KAAE,CAACxM,MAAd,CAAjB,IAA0C,KAAKooC,gBAAL,EAA9C,EAAuE;WAChEl7B,UAAL,CAAgBtF,IAAhB,EAAsB8hC,YAAtB;;;;UAIIrsB,0BAAN,CAAiCzV,IAAjC,EAAuCC,IAAvC,EAA6CgF,QAA7C;;;EAGF88B,2BAA2B,CAAC/hC,IAAD,EAAyB;QAC9C,CAACA,IAAI,CAACiE,IAAN,IAAcjE,IAAI,CAACwN,EAAvB,EAA2B;WAGpBjL,SAAL,CAAevC,IAAI,CAACwN,EAApB,EAAwBvO,eAAxB,EAAyC,IAAzC,EAA+C,eAA/C;KAHF,MAIO;YACC8iC,2BAAN,CAAkC,GAAG77B,SAArC;;;;EAIJkX,cAAc,CACZN,IADY,EAEZjY,QAFY,EAGZC,QAHY,EAIZiY,OAJY,EAKZpY,KALY,EAME;QACV,CAAC,KAAKmyB,qBAAL,EAAD,IAAiC,KAAK1pB,KAAL,CAAWxI,KAAE,CAAChL,IAAd,CAArC,EAA0D;WACnD+K,KAAL,CAAW+C,WAAX,GAAyB,KAAzB;WACK2C,IAAL;YAEM23B,iBAAwC,GAAG,KAAK1gC,WAAL,CAC/CuD,QAD+C,EAE/CC,QAF+C,CAAjD;MAIAk9B,iBAAiB,CAACvgC,UAAlB,GAA+Bqb,IAA/B;aACO,KAAKxX,UAAL,CAAgB08B,iBAAhB,EAAmC,qBAAnC,CAAP;;;QAGE,KAAKp0B,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;YAIpBuI,MAAM,GAAG,KAAKkqB,kBAAL,CAAwB,MAAM;YACvC,CAACtjB,OAAD,IAAY,KAAKklB,eAAL,CAAqBnlB,IAArB,CAAhB,EAA4C;gBAGpColB,YAAY,GAAG,KAAKb,mCAAL,CACnBx8B,QADmB,EAEnBC,QAFmB,CAArB;;cAIIo9B,YAAJ,EAAkB;mBACTA,YAAP;;;;cAIEliC,IAAsB,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAA/B;QACA9E,IAAI,CAACgG,MAAL,GAAc8W,IAAd;cAEMW,aAAa,GAAG,KAAK4a,oBAAL,EAAtB;;YAEI5a,aAAJ,EAAmB;cACb,CAACV,OAAD,IAAY,KAAK/P,GAAL,CAASpI,KAAE,CAACpM,MAAZ,CAAhB,EAAqC;YAGnCwH,IAAI,CAACkG,SAAL,GAAiB,KAAK8W,4BAAL,CACfpY,KAAE,CAACnM,MADY,EAEK,KAFL,CAAjB;YAIAuH,IAAI,CAACwE,cAAL,GAAsBiZ,aAAtB;mBACO,KAAK3X,oBAAL,CAA0B9F,IAA1B,EAAgC2E,KAAK,CAAC4Y,mBAAtC,CAAP;WARF,MASO,IAAI,KAAKnQ,KAAL,CAAWxI,KAAE,CAACxL,SAAd,CAAJ,EAA8B;mBAC5B,KAAK+oC,6BAAL,CACLt9B,QADK,EAELC,QAFK,EAGLgY,IAHK,EAILnY,KAJK,EAKL8Y,aALK,CAAP;;;;aAUCxO,UAAL;OAvCa,CAAf;UA0CIkH,MAAJ,EAAY,OAAOA,MAAP;;;WAGP,MAAMiH,cAAN,CAAqBN,IAArB,EAA2BjY,QAA3B,EAAqCC,QAArC,EAA+CiY,OAA/C,EAAwDpY,KAAxD,CAAP;;;EAGF+Y,iBAAiB,CAAC1d,IAAD,EAA8B;QACzC,KAAK4N,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;YAGpBpJ,cAAc,GAAG,KAAK67B,kBAAL,CAAwB,MAAM;cAC7C+B,IAAI,GAAG,KAAK/J,oBAAL,EAAb;YACI,CAAC,KAAKjrB,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAAL,EAA4B,KAAKyW,UAAL;eACrBmzB,IAAP;OAHqB,CAAvB;;UAKI59B,cAAJ,EAAoB;QAClBxE,IAAI,CAACwE,cAAL,GAAsBA,cAAtB;;;;UAIEkZ,iBAAN,CAAwB1d,IAAxB;;;EAGFqiC,WAAW,CACT/nB,IADS,EAETgoB,YAFS,EAGTC,YAHS,EAITC,OAJS,EAKTvsB,IALS,EAMT;QAEEsgB,OAAO,CAAC3xB,KAAE,CAACjI,GAAH,CAAOzF,KAAR,CAAP,GAAwBsrC,OAAxB,IACA,CAAC,KAAK1L,qBAAL,EADD,IAEA,KAAKloB,YAAL,CAAkB,IAAlB,CAHF,EAIE;YACM5O,IAAsB,GAAG,KAAKsB,WAAL,CAC7BghC,YAD6B,EAE7BC,YAF6B,CAA/B;MAIAviC,IAAI,CAACyB,UAAL,GAAkB6Y,IAAlB;;YACMxe,MAAM,GAAG,KAAKy9B,6BAAL,EAAf;;UACIz9B,MAAJ,EAAY;QACVkE,IAAI,CAACkO,cAAL,GAAsBpS,MAAtB;OADF,MAEO;QACLkE,IAAI,CAACkO,cAAL,GAAsB,KAAKqwB,mBAAL,EAAtB;;;WAEGj5B,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB;aACO,KAAKqiC,WAAL,CACLriC,IADK,EAELsiC,YAFK,EAGLC,YAHK,EAILC,OAJK,EAKLvsB,IALK,CAAP;;;WASK,MAAMosB,WAAN,CAAkB/nB,IAAlB,EAAwBgoB,YAAxB,EAAsCC,YAAtC,EAAoDC,OAApD,EAA6DvsB,IAA7D,CAAP;;;EAGFqF,iBAAiB,CACftS,IADe,EAEflE,QAFe,EAGf29B,aAHe,EAKfxpB,SALe,EAMT;;EAeRypB,qBAAqB,GAAG;;EAExBpzB,WAAW,CAACtP,IAAD,EAA4B;QACjC,KAAKoN,KAAL,CAAWxI,KAAE,CAACrN,IAAd,KAAuB,KAAKqb,SAAL,GAAiB3S,IAAjB,KAA0B2E,KAAE,CAACnL,EAAxD,EAA4D;aACnD,KAAKomC,8BAAL,CAAoC7/B,IAApC,CAAP;;;WAEK,MAAMsP,WAAN,CAAkBtP,IAAlB,CAAP;;;EAGF6P,WAAW,CAAC7P,IAAD,EAA4B;QACjC,KAAKoN,KAAL,CAAWxI,KAAE,CAACrI,OAAd,CAAJ,EAA4B;WAErBgQ,MAAL,CAAY3H,KAAE,CAACrI,OAAf;aACO,KAAKsjC,8BAAL,CAAoC7/B,IAApC,EAAyD,IAAzD,CAAP;KAHF,MAIO,IAAI,KAAKgN,GAAL,CAASpI,KAAE,CAACnL,EAAZ,CAAJ,EAAqB;YAEpBC,MAA4B,GAAGsG,IAArC;MACAtG,MAAM,CAAC+H,UAAP,GAAoB,KAAKwL,eAAL,EAApB;WACKmB,SAAL;aACO,KAAK9I,UAAL,CAAgB5L,MAAhB,EAAwB,oBAAxB,CAAP;KALK,MAMA,IAAI,KAAK8U,aAAL,CAAmB,IAAnB,CAAJ,EAA8B;YAE7ByJ,IAAoC,GAAGjY,IAA7C;WAEK6M,gBAAL,CAAsB,WAAtB;MACAoL,IAAI,CAACzK,EAAL,GAAU,KAAKC,eAAL,EAAV;WACKW,SAAL;aACO,KAAK9I,UAAL,CAAgB2S,IAAhB,EAAsB,8BAAtB,CAAP;KAPK,MAQA;aACE,MAAMpI,WAAN,CAAkB7P,IAAlB,CAAP;;;;EAIJ2iC,eAAe,GAAY;WAEvB,KAAK/zB,YAAL,CAAkB,UAAlB,KAAiC,KAAKgE,SAAL,GAAiB3S,IAAjB,KAA0B2E,KAAE,CAACxI,MADhE;;;EAKF2Z,4BAA4B,GAAiC;QACvD,KAAK4sB,eAAL,EAAJ,EAA4B;YACpBzB,GAAG,GAAG,KAAK77B,SAAL,EAAZ;WACKgF,IAAL;WACKs2B,UAAL,CAAgBO,GAAhB,EAAqB,IAArB,EAA2B,IAA3B;MACAA,GAAG,CAACC,QAAJ,GAAe,IAAf;aACOD,GAAP;;;QAKE,KAAKv8B,KAAL,CAAW9D,KAAX,KAAqB,WAAzB,EAAsC;YAC9BsV,MAAM,GAAG,KAAK0qB,kBAAL,CACb,KAAKx7B,SAAL,EADa,EAEb,KAAKV,KAAL,CAAW9D,KAFE,EAGb,IAHa,CAAf;UAMIsV,MAAJ,EAAY,OAAOA,MAAP;;;WAGP,MAAMJ,4BAAN,EAAP;;;EAGF6sB,qBAAqB,CAACn7B,OAAD,EAAmB7D,QAAnB,EAAoD;QACnE,KAAKe,KAAL,CAAW1E,IAAX,KAAoB2E,KAAE,CAAC9I,MAA3B,EAAmC;YAC3B+mC,KAAK,GAAG,KAAKjwB,SAAL,EAAd;;UACIiwB,KAAK,CAAC5iC,IAAN,KAAe2E,KAAE,CAACrN,IAAlB,IAA0BsrC,KAAK,CAAChiC,KAAN,KAAgB,MAA9C,EAAsD;cAC9Cb,IAAyB,GAAG,KAAKqF,SAAL,EAAlC;aACKkH,MAAL,CAAY3H,KAAE,CAAC9I,MAAf;aACK+Q,gBAAL,CAAsB,MAAtB;eACO,KAAKwyB,sBAAL,CAA4Br/B,IAA5B,EAAgD,IAAhD,CAAP;;;;WAGG,MAAM4iC,qBAAN,CAA4Bn7B,OAA5B,EAAqC7D,QAArC,CAAP;;;EAGF89B,mBAAmB,GAAqB;WAC/B,KAAK3K,eAAL,CAAqB,CAAC,QAAD,EAAW,WAAX,EAAwB,SAAxB,CAArB,CAAP;;;EAGF+L,gBAAgB,CACd1+B,SADc,EAEdyc,MAFc,EAGdlc,KAHc,EAIdo+B,sBAJc,EAKR;UACAtB,aAAa,GAAG,KAAKC,mBAAL,EAAtB;QACID,aAAJ,EAAmB5gB,MAAM,CAAC4gB,aAAP,GAAuBA,aAAvB;UAEbqB,gBAAN,CAAuB1+B,SAAvB,EAAkCyc,MAAlC,EAA0Clc,KAA1C,EAAiDo+B,sBAAjD;;;EAGFC,4BAA4B,CAC1B5+B,SAD0B,EAE1Byc,MAF0B,EAG1Blc,KAH0B,EAI1B+N,QAJ0B,EAK1BqwB,sBAL0B,EAMpB;UACA1L,SAAS,GAAG,KAAKD,gBAAL,CAAsB,CACtC,UADsC,EAEtC,UAFsC,EAGtC,SAHsC,CAAtB,CAAlB;IAMAE,MAAM,CAAC59B,MAAP,CAAcmnB,MAAd,EAAsBwW,SAAtB;UAEMqD,GAAG,GAAG,KAAKP,wBAAL,CAA8BtZ,MAA9B,CAAZ;;QACI6Z,GAAJ,EAAS;MACPt2B,SAAS,CAACH,IAAV,CAAeQ,IAAf,CAAoBi2B,GAApB;;UAEIrD,SAAS,CAAC8J,QAAd,EAAwB;aACjB7+B,KAAL,CACEue,MAAM,CAACtf,KADT,EAEE,sDAFF;;;UAKEmR,QAAJ,EAAc;aACPpQ,KAAL,CACEue,MAAM,CAACtf,KADT,EAEE,oDAFF;;;UAKGsf,MAAD,CAAc4gB,aAAlB,EAAiC;aAC1Bn/B,KAAL,CACEue,MAAM,CAACtf,KADT,EAEG,4DACEsf,MAAD,CAAc4gB,aACf,IAJH;;;;;;UAaEuB,4BAAN,CACE5+B,SADF,EAEEyc,MAFF,EAGElc,KAHF,EAIE+N,QAJF,EAKEqwB,sBALF;;;EASFE,4BAA4B,CAC1BC,YAD0B,EAEpB;UACAn9B,QAAQ,GAAG,KAAKiH,GAAL,CAASpI,KAAE,CAAC7L,QAAZ,CAAjB;QACIgN,QAAJ,EAAcm9B,YAAY,CAACn9B,QAAb,GAAwB,IAAxB;;QAETm9B,YAAD,CAAoB3I,QAApB,IAAgC,KAAKntB,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAApC,EAA2D;WACpD8J,KAAL,CACE4gC,YAAY,CAAC3hC,KADf,EAEE,mDAFF;;;QAMG2hC,YAAD,CAAoB7xB,OAApB,IAA+B,KAAKjE,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAAnC,EAA0D;WACnD8J,KAAL,CACE4gC,YAAY,CAAC3hC,KADf,EAEE,kDAFF;;;;EAWJqU,wBAAwB,CACtB5V,IADsB,EAEtBwC,IAFsB,EAGT;UACPyV,IAAI,GACRzV,IAAI,CAACvC,IAAL,KAAc,YAAd,GACI,KAAK8gC,0BAAL,CAAgC/gC,IAAhC,EAAsCwC,IAAtC,CADJ,GAEIgJ,SAHN;WAIOyM,IAAI,IAAI,MAAMrC,wBAAN,CAA+B5V,IAA/B,EAAqCwC,IAArC,CAAf;;;EAKFqT,4BAA4B,GAAY;QAClC,KAAKyrB,oBAAL,EAAJ,EAAiC,OAAO,IAAP;WAC1B,MAAMzrB,4BAAN,EAAP;;;EAIFG,gBAAgB,CACdxT,IADc,EAEdyT,IAFc,EAGdpR,QAHc,EAIdC,QAJc,EAKdoR,gBALc,EAMA;QAGV,CAACA,gBAAD,IAAqB,CAAC,KAAK9I,KAAL,CAAWxI,KAAE,CAAC7L,QAAd,CAA1B,EAAmD;aAC1C,MAAMid,gBAAN,CACLxT,IADK,EAELyT,IAFK,EAGLpR,QAHK,EAILC,QAJK,EAKLoR,gBALK,CAAP;;;UASIC,MAAM,GAAG,KAAKC,QAAL,CAAc,MAC3B,MAAMJ,gBAAN,CAAuBxT,IAAvB,EAA6ByT,IAA7B,EAAmCpR,QAAnC,EAA6CC,QAA7C,CADa,CAAf;;QAII,CAACqR,MAAM,CAACnW,IAAZ,EAAkB;MAEhBkW,gBAAgB,CAAC3U,KAAjB,GAAyB4U,MAAM,CAACE,KAAP,CAAatM,GAAb,IAAoB,KAAKpF,KAAL,CAAWpD,KAAxD;aACOiB,IAAP;;;QAEE2T,MAAM,CAACE,KAAX,EAAkB,KAAK1R,KAAL,GAAawR,MAAM,CAACG,SAApB;WACXH,MAAM,CAACnW,IAAd;;;EAKF8X,cAAc,CACZ9X,IADY,EAEZ6E,QAFY,EAGZC,QAHY,EAIE;IACd9E,IAAI,GAAG,MAAM8X,cAAN,CAAqB9X,IAArB,EAA2B6E,QAA3B,EAAqCC,QAArC,CAAP;;QACI,KAAKkI,GAAL,CAASpI,KAAE,CAAC7L,QAAZ,CAAJ,EAA2B;MACzBiH,IAAI,CAAC+F,QAAL,GAAgB,IAAhB;WAIKoI,gBAAL,CAAsBnO,IAAtB;;;QAGE,KAAKoN,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAJ,EAA0B;YAClBmf,YAAoC,GAAG,KAAKzW,WAAL,CAC3CuD,QAD2C,EAE3CC,QAF2C,CAA7C;MAIAiT,YAAY,CAACtW,UAAb,GAA0BzB,IAA1B;MACA+X,YAAY,CAAC7J,cAAb,GAA8B,KAAK2qB,qBAAL,EAA9B;aAEO,KAAKvzB,UAAL,CAAgByS,YAAhB,EAA8B,sBAA9B,CAAP;;;WAGK/X,IAAP;;;EAGFkY,sBAAsB,CAAClY,IAAD,EAAiD;UAE/D6E,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;UAGMq+B,SAAS,GAAG,KAAK30B,aAAL,CAAmB,SAAnB,CAAlB;QAEI9D,WAAJ;;QAEI,KAAK0C,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAJ,EAAyB;MACvBmT,WAAW,GAAG,KAAKo2B,2BAAL,EAAd;;;QAEE,CAACp2B,WAAL,EAAkB;MAChBA,WAAW,GAAG,MAAMwN,sBAAN,CAA6BlY,IAA7B,CAAd;;;QAGE0K,WAAW,IAAIy4B,SAAnB,EAA8B;WAEvBC,kBAAL,CAAwB14B,WAAxB,EAAqC7F,QAArC,EAA+CC,QAA/C;MAEA4F,WAAW,CAAC2G,OAAZ,GAAsB,IAAtB;;;WAGK3G,WAAP;;;EAGFgO,YAAY,CACV1Y,IADU,EAEV2Y,WAFU,EAGVC,UAHU,EAIJ;QACF,CAAC,CAACD,WAAD,IAAgBC,UAAjB,KAAgC,KAAKhK,YAAL,CAAkB,YAAlB,CAApC,EAAqE;;;;UAI/D8J,YAAN,CACE1Y,IADF,EAEE2Y,WAFF,EAGEC,UAHF,EAIG5Y,IAAD,CAAYqR,OAAZ,GAAsBpS,eAAtB,GAAwCP,UAJ1C;UAMM8F,cAAc,GAAG,KAAK60B,wBAAL,EAAvB;QACI70B,cAAJ,EAAoBxE,IAAI,CAACwE,cAAL,GAAsBA,cAAtB;;;EAGtB6+B,4BAA4B,CAC1BrjC,IAD0B,EAEpB;QACF,CAACA,IAAI,CAAC+F,QAAN,IAAkB,KAAKiH,GAAL,CAASpI,KAAE,CAAChL,IAAZ,CAAtB,EAAyC;MACvCoG,IAAI,CAACsjC,QAAL,GAAgB,IAAhB;;;UAGIrjC,IAAI,GAAG,KAAKo6B,wBAAL,EAAb;QACIp6B,IAAJ,EAAUD,IAAI,CAACkO,cAAL,GAAsBjO,IAAtB;;;EAGZuZ,kBAAkB,CAACxZ,IAAD,EAAyC;SACpDqjC,4BAAL,CAAkCrjC,IAAlC;;QAEIA,IAAI,CAACqR,OAAL,IAAgB,KAAKjE,KAAL,CAAWxI,KAAE,CAAC2+B,KAAd,CAApB,EAA0C;WACnCjhC,KAAL,CACE,KAAKqC,KAAL,CAAWpD,KADb,EAEE,mDAFF;;;WAMK,MAAMiY,kBAAN,CAAyBxZ,IAAzB,CAAP;;;EAGFyZ,yBAAyB,CACvBzZ,IADuB,EAEC;QAEpBA,IAAI,CAACmhC,QAAT,EAAmB;WACZ7+B,KAAL,CACEtC,IAAI,CAACuB,KADP,EAEE,uDAFF;;;QAOEvB,IAAI,CAACyhC,aAAT,EAAwB;WACjBn/B,KAAL,CACEtC,IAAI,CAACuB,KADP,EAEG,4DAA2DvB,IAAI,CAACyhC,aAAc,IAFjF;;;SAMG4B,4BAAL,CAAkCrjC,IAAlC;WACO,MAAMyZ,yBAAN,CAAgCzZ,IAAhC,CAAP;;;EAGFmE,eAAe,CACbC,SADa,EAEbjE,MAFa,EAGbrC,WAHa,EAIbD,OAJa,EAKbwG,aALa,EAMbC,iBANa,EAOP;UACAE,cAAc,GAAG,KAAK60B,wBAAL,EAAvB;QACI70B,cAAJ,EAAoBrE,MAAM,CAACqE,cAAP,GAAwBA,cAAxB;UACdL,eAAN,CACEC,SADF,EAEEjE,MAFF,EAGErC,WAHF,EAIED,OAJF,EAKEwG,aALF,EAMEC,iBANF;;;EAUFuV,sBAAsB,CACpBzV,SADoB,EAEpBjE,MAFoB,EAGpBrC,WAHoB,EAIpBD,OAJoB,EAKd;UACA2G,cAAc,GAAG,KAAK60B,wBAAL,EAAvB;QACI70B,cAAJ,EAAoBrE,MAAM,CAACqE,cAAP,GAAwBA,cAAxB;UACdqV,sBAAN,CAA6BzV,SAA7B,EAAwCjE,MAAxC,EAAgDrC,WAAhD,EAA6DD,OAA7D;;;EAGFic,eAAe,CAAC9Z,IAAD,EAAsB;UAC7B8Z,eAAN,CAAsB9Z,IAAtB;;QACIA,IAAI,CAACI,UAAL,IAAmB,KAAKwN,YAAL,CAAkB,GAAlB,CAAvB,EAA+C;MAC7C5N,IAAI,CAAC+Z,mBAAL,GAA2B,KAAKse,oBAAL,EAA3B;;;QAEE,KAAK7pB,aAAL,CAAmB,YAAnB,CAAJ,EAAsC;MACpCxO,IAAI,CAACqQ,UAAL,GAAkB,KAAKmuB,qBAAL,CAA2B,YAA3B,CAAlB;;;;EAIJrkB,iBAAiB,CAACjY,IAAD,EAAuB,GAAGkgC,IAA1B,EAAsC;UAC/C59B,cAAc,GAAG,KAAK60B,wBAAL,EAAvB;QACI70B,cAAJ,EAAoBtC,IAAI,CAACsC,cAAL,GAAsBA,cAAtB;UAEd2V,iBAAN,CAAwBjY,IAAxB,EAA8B,GAAGkgC,IAAjC;;;EAGF7mB,mBAAmB,CAACvb,IAAD,EAAmBwb,cAAnB,EAAmD;UAC9DhX,cAAc,GAAG,KAAK60B,wBAAL,EAAvB;QACI70B,cAAJ,EAAoBxE,IAAI,CAACwE,cAAL,GAAsBA,cAAtB;UACd+W,mBAAN,CAA0Bvb,IAA1B,EAAgCwb,cAAhC;;;EAIFC,UAAU,CACRxD,IADQ,EAER/X,IAFQ,EAGF;UACAub,UAAN,CAAiBxD,IAAjB,EAAuB/X,IAAvB;;QACI+X,IAAI,CAACzK,EAAL,CAAQvN,IAAR,KAAiB,YAAjB,IAAiC,KAAK+M,GAAL,CAASpI,KAAE,CAAChL,IAAZ,CAArC,EAAwD;MACtDqe,IAAI,CAACqrB,QAAL,GAAgB,IAAhB;;;UAGIrjC,IAAI,GAAG,KAAKo6B,wBAAL,EAAb;;QACIp6B,IAAJ,EAAU;MACRgY,IAAI,CAACzK,EAAL,CAAQU,cAAR,GAAyBjO,IAAzB;WACKkO,gBAAL,CAAsB8J,IAAI,CAACzK,EAA3B;;;;EAKJkO,iCAAiC,CAC/B1b,IAD+B,EAE/B2b,IAF+B,EAGJ;QACvB,KAAKvO,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAJ,EAA0B;MACxBoH,IAAI,CAACiO,UAAL,GAAkB,KAAK4qB,qBAAL,EAAlB;;;WAEK,MAAMnd,iCAAN,CAAwC1b,IAAxC,EAA8C2b,IAA9C,CAAP;;;EAGF1E,gBAAgB,CAAC,GAAGmrB,IAAJ,EAAwB;QAGlCz9B,KAAJ;QACImX,GAAJ;QACI0nB,QAAJ;;QAEI,KAAKp2B,KAAL,CAAWxI,KAAE,CAACmN,WAAd,CAAJ,EAAgC;MAE9BpN,KAAK,GAAG,KAAKA,KAAL,CAAW4R,KAAX,EAAR;MAEAuF,GAAG,GAAG,KAAK1F,QAAL,CAAc,MAAM,MAAMa,gBAAN,CAAuB,GAAGmrB,IAA1B,CAApB,EAAqDz9B,KAArD,CAAN;UAGI,CAACmX,GAAG,CAACzF,KAAT,EAAgB,OAAOyF,GAAG,CAAC9b,IAAX;YAKV;QAAEyH;UAAY,KAAK9C,KAAzB;;UACI8C,OAAO,CAACA,OAAO,CAACpF,MAAR,GAAiB,CAAlB,CAAP,KAAgCohC,OAAE,CAACxnB,MAAvC,EAA+C;QAC7CxU,OAAO,CAACpF,MAAR,IAAkB,CAAlB;OADF,MAEO,IAAIoF,OAAO,CAACA,OAAO,CAACpF,MAAR,GAAiB,CAAlB,CAAP,KAAgCohC,OAAE,CAACvnB,MAAvC,EAA+C;QACpDzU,OAAO,CAACpF,MAAR,IAAkB,CAAlB;;;;QAIA,EAAEyZ,GAAG,IAAIA,GAAG,CAACzF,KAAb,KAAuB,CAAC,KAAKzI,YAAL,CAAkB,GAAlB,CAA5B,EAAoD;aAC3C,MAAMqJ,gBAAN,CAAuB,GAAGmrB,IAA1B,CAAP;;;QAKE59B,cAAJ;IACAG,KAAK,GAAGA,KAAK,IAAI,KAAKA,KAAL,CAAW4R,KAAX,EAAjB;UAEMtd,KAAK,GAAG,KAAKmd,QAAL,CAAc6G,KAAK,IAAI;MAEnCzY,cAAc,GAAG,KAAK80B,qBAAL,EAAjB;YACM92B,IAAI,GAAG,MAAMyU,gBAAN,CAAuB,GAAGmrB,IAA1B,CAAb;;UAGE5/B,IAAI,CAACvC,IAAL,KAAc,yBAAd,IACCuC,IAAI,CAACb,KAAL,IAAca,IAAI,CAACb,KAAL,CAAW6B,aAF5B,EAGE;QACAyZ,KAAK;;;UAIHzY,cAAc,IAAIA,cAAc,CAACpC,MAAf,CAAsBC,MAAtB,KAAiC,CAAvD,EAA0D;aACnD+Z,0BAAL,CAAgC5Z,IAAhC,EAAsCgC,cAAtC;;;MAEFhC,IAAI,CAACgC,cAAL,GAAsBA,cAAtB;aACOhC,IAAP;KAjBY,EAkBXmC,KAlBW,CAAd;QAoBI,CAAC1L,KAAK,CAACod,KAAP,IAAgB,CAACpd,KAAK,CAACkkB,OAA3B,EAAoC,OAAOlkB,KAAK,CAAC+G,IAAb;;QAEhC,CAAC8b,GAAL,EAAU;MAIR2a,MAAM,CAAC,CAAC,KAAK1a,SAAL,CAAe,KAAf,CAAF,CAAN;MAIAynB,QAAQ,GAAG,KAAKptB,QAAL,CAAc,MAAM,MAAMa,gBAAN,CAAuB,GAAGmrB,IAA1B,CAApB,EAAqDz9B,KAArD,CAAX;UAEI,CAAC6+B,QAAQ,CAACntB,KAAd,EAAqB,OAAOmtB,QAAQ,CAACxjC,IAAhB;;;QAGnB8b,GAAG,IAAIA,GAAG,CAAC9b,IAAf,EAAqB;WAEd2E,KAAL,GAAamX,GAAG,CAACxF,SAAjB;aACOwF,GAAG,CAAC9b,IAAX;;;QAGE/G,KAAK,CAAC+G,IAAV,EAAgB;WAET2E,KAAL,GAAa1L,KAAK,CAACqd,SAAnB;aACOrd,KAAK,CAAC+G,IAAb;;;QAGEwjC,QAAQ,IAAIA,QAAQ,CAACxjC,IAAzB,EAA+B;WAExB2E,KAAL,GAAa6+B,QAAQ,CAACltB,SAAtB;aACOktB,QAAQ,CAACxjC,IAAhB;;;QAGE8b,GAAG,IAAIA,GAAG,CAACO,MAAf,EAAuB,MAAMP,GAAG,CAACzF,KAAV;QACnBpd,KAAK,CAACojB,MAAV,EAAkB,MAAMpjB,KAAK,CAACod,KAAZ;QACdmtB,QAAQ,IAAIA,QAAQ,CAACnnB,MAAzB,EAAiC,MAAMmnB,QAAQ,CAACntB,KAAf;UAE1ByF,GAAG,IAAIA,GAAG,CAACzF,KAAZ,IAAsBpd,KAAK,CAACod,KAA5B,IAAsCmtB,QAAQ,IAAIA,QAAQ,CAACntB,KAAjE;;;EAIFimB,eAAe,CAACr5B,mBAAD,EAAwD;QACjE,CAAC,KAAK8Y,SAAL,CAAe,KAAf,CAAD,IAA0B,KAAKnO,YAAL,CAAkB,GAAlB,CAA9B,EAAsD;aAC7C,KAAK0wB,oBAAL,EAAP;KADF,MAEO;aACE,MAAMhC,eAAN,CAAsBr5B,mBAAtB,CAAP;;;;EAIJqZ,UAAU,CAACtc,IAAD,EAA8D;QAClE,KAAKoN,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAJ,EAA0B;YAIlBud,MAAM,GAAG,KAAKC,QAAL,CAAc6G,KAAK,IAAI;cAC9BhP,UAAU,GAAG,KAAK6rB,oCAAL,CACjBl1B,KAAE,CAAChM,KADc,CAAnB;YAGI,KAAKkc,kBAAL,MAA6B,CAAC,KAAK1H,KAAL,CAAWxI,KAAE,CAAC3L,KAAd,CAAlC,EAAwDgkB,KAAK;eACtDhP,UAAP;OALa,CAAf;UAQIkI,MAAM,CAACgH,OAAX,EAAoB;;UAEhB,CAAChH,MAAM,CAACkG,MAAZ,EAAoB;YACdlG,MAAM,CAACE,KAAX,EAAkB,KAAK1R,KAAL,GAAawR,MAAM,CAACG,SAApB;QAClBtW,IAAI,CAACiO,UAAL,GAAkBkI,MAAM,CAACnW,IAAzB;;;;WAIG,MAAMsc,UAAN,CAAiBtc,IAAjB,CAAP;;;EAIFoa,4BAA4B,CAAClF,KAAD,EAAmB;QACzC,KAAKlI,GAAL,CAASpI,KAAE,CAAC7L,QAAZ,CAAJ,EAA2B;UACrBmc,KAAK,CAACjV,IAAN,KAAe,YAAnB,EAAiC;aAC1BqC,KAAL,CACE4S,KAAK,CAAC3T,KADR,EAEE,gFAFF;;;MAMA2T,KAAF,CAA6BnP,QAA7B,GAAwC,IAAxC;;;UAEI9F,IAAI,GAAG,KAAKo6B,wBAAL,EAAb;QACIp6B,IAAJ,EAAUiV,KAAK,CAAChH,cAAN,GAAuBjO,IAAvB;SACLkO,gBAAL,CAAsB+G,KAAtB;WAEOA,KAAP;;;EAGFvP,YAAY,CAAC3F,IAAD,EAAuB;YACzBA,IAAI,CAACC,IAAb;WACO,sBAAL;eACS,MAAM0F,YAAN,CAAmB,KAAK2P,mBAAL,CAAyBtV,IAAzB,CAAnB,CAAP;;WACG,qBAAL;eACS,MAAM2F,YAAN,CAAmB3F,IAAnB,CAAP;;WACG,gBAAL;WACK,qBAAL;WACK,iBAAL;QACEA,IAAI,CAACyB,UAAL,GAAkB,KAAKkE,YAAL,CAAkB3F,IAAI,CAACyB,UAAvB,CAAlB;eACOzB,IAAP;;;eAEO,MAAM2F,YAAN,CAAmB3F,IAAnB,CAAP;;;;EAINuC,SAAS,CACPC,IADO,EAEPC,WAAyB,GAAGvD,SAFrB,EAGPwD,YAHO,EAIPC,kBAJO,EAKD;YACEH,IAAI,CAACvC,IAAb;WACO,sBAAL;;;WAKK,qBAAL;aACOsC,SAAL,CACEC,IAAI,CAACq/B,SADP,EAEEp/B,WAFF,EAGEC,YAHF,EAIE,oBAJF;;;WAOG,gBAAL;WACK,qBAAL;WACK,iBAAL;aACOH,SAAL,CACEC,IAAI,CAACf,UADP,EAEEgB,WAFF,EAGEC,YAHF,EAIEC,kBAJF;;;;cAQMJ,SAAN,CAAgBC,IAAhB,EAAsBC,WAAtB,EAAmCC,YAAnC,EAAiDC,kBAAjD;;;;;EAKN+gC,gBAAgB,GAAc;YACpB,KAAK/+B,KAAL,CAAW1E,IAAnB;WACO2E,KAAE,CAAC1I,KAAR;eAES,KAAKuR,eAAL,CAAmC,IAAnC,CAAP;;;eAEO,MAAMi2B,gBAAN,EAAP;;;;EAINC,4BAA4B,CAACnhC,IAAD,EAAmC;QACzD,KAAKoL,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;YACpB6P,aAAa,GAAG,KAAK4a,oBAAL,EAAtB;;UAEI,KAAKjrB,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAAJ,EAA2B;cACnBmjB,IAAI,GAAG,MAAMgoB,4BAAN,CAAmCnhC,IAAnC,CAAb;QACAmZ,IAAI,CAACnX,cAAL,GAAsBiZ,aAAtB;eACO9B,IAAP;;;WAGG1M,UAAL,CAAgB,KAAKtK,KAAL,CAAWpD,KAA3B,EAAkCqD,KAAE,CAACpM,MAArC;;;WAGK,MAAMmrC,4BAAN,CAAmCnhC,IAAnC,CAAP;;;EAQFkX,aAAa,GAAY;WAChB,KAAK9L,YAAL,CAAkB,GAAlB,KAA0B,MAAM8L,aAAN,EAAjC;;;EAGFC,eAAe,GAAY;WAEvB,KAAKvM,KAAL,CAAWxI,KAAE,CAAChL,IAAd,KAAuB,KAAKwT,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAvB,IAA+C,MAAM+gB,eAAN,EADjD;;;EAKFU,iBAAiB,CAAC,GAAG+nB,IAAJ,EAAqB;UAC9BpiC,IAAI,GAAG,MAAMqa,iBAAN,CAAwB,GAAG+nB,IAA3B,CAAb;;QAGEpiC,IAAI,CAACC,IAAL,KAAc,mBAAd,IACAD,IAAI,CAACkO,cADL,IAEAlO,IAAI,CAACoR,KAAL,CAAW7P,KAAX,GAAmBvB,IAAI,CAACkO,cAAL,CAAoB3M,KAHzC,EAIE;WACKe,KAAL,CACEtC,IAAI,CAACkO,cAAL,CAAoB3M,KADtB,EAEE,4DACE,2DAHJ;;;WAOKvB,IAAP;;;EAIF6Y,gBAAgB,CAACpS,IAAD,EAAqB;QAC/B,KAAK9B,KAAL,CAAW2H,MAAX,KAAsB7F,IAAI,KAAK,EAAT,IAAeA,IAAI,KAAK,EAA9C,CAAJ,EAAuD;aAC9C,KAAKsS,QAAL,CAAcnU,KAAE,CAACtK,UAAjB,EAA6B,CAA7B,CAAP;KADF,MAEO;aACE,MAAMue,gBAAN,CAAuBpS,IAAvB,CAAP;;;;EAIJgR,gBAAgB,CAACrR,QAAD,EAAsD;SAC/D,IAAI4D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG5D,QAAQ,CAAC/D,MAA7B,EAAqC2H,CAAC,EAAtC,EAA0C;YAClCxH,IAAI,GAAG4D,QAAQ,CAAC4D,CAAD,CAArB;UACI,CAACxH,IAAL,EAAW;;cACHA,IAAI,CAACvC,IAAb;aACO,sBAAL;UACEmG,QAAQ,CAAC4D,CAAD,CAAR,GAAc,KAAKsL,mBAAL,CAAyB9S,IAAzB,CAAd;;;aAEG,gBAAL;aACK,iBAAL;cACM,CAAC,KAAKmC,KAAL,CAAWi/B,sBAAhB,EAAwC;YACtCx9B,QAAQ,CAAC4D,CAAD,CAAR,GAAc,KAAKsL,mBAAL,CAAyB9S,IAAzB,CAAd;WADF,MAEO;iBACAF,KAAL,CACEE,IAAI,CAACjB,KADP,EAEE,6CAFF;;;;;;;WAQD,MAAMkW,gBAAN,CAAuB,GAAGvR,SAA1B,CAAP;;;EAGFoP,mBAAmB,CAACtV,IAAD,EAAuC;IACxDA,IAAI,CAACyB,UAAL,CAAgByM,cAAhB,GAAiClO,IAAI,CAACkO,cAAtC;SAEKC,gBAAL,CACEnO,IAAI,CAACyB,UADP,EAEEzB,IAAI,CAACkO,cAAL,CAAoBrM,GAFtB,EAGE7B,IAAI,CAACkO,cAAL,CAAoB1M,GAApB,CAAwBK,GAH1B;WAMO7B,IAAI,CAACyB,UAAZ;;;EAGF8X,gBAAgB,CACdnT,QADc,EAEdy9B,UAFc,EAGiB;SAC1B,IAAI75B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG5D,QAAQ,CAAC/D,MAA7B,EAAqC2H,CAAC,EAAtC,EAA0C;YAClCxH,IAAI,GAAG4D,QAAQ,CAAC4D,CAAD,CAArB;;UACIxH,IAAI,IAAIA,IAAI,CAACvC,IAAL,KAAc,sBAA1B,EAAkD;aAC3CqC,KAAL,CAAWE,IAAI,CAACjB,KAAhB,EAAuB,wCAAvB;;;;WAIG6E,QAAP;;;EAGFmW,gBAAgB,GAAG;WACV,KAAKnP,KAAL,CAAWxI,KAAE,CAAChM,KAAd,KAAwB,MAAM2jB,gBAAN,EAA/B;;;EAGFX,qBAAqB,GAAY;WACxB,KAAKxO,KAAL,CAAWxI,KAAE,CAAChM,KAAd,KAAwB,MAAMgjB,qBAAN,EAA/B;;;EAGFkoB,uBAAuB,GAAG;WAEjB,MAAMA,uBAAN,MAAmC,KAAKnB,eAAL,EAA1C;;;EAGFnP,+BAA+B,CAC7BxzB,IAD6B,EAER;QACjB,KAAK4N,YAAL,CAAkB,GAAlB,CAAJ,EAA4B;YACpB6P,aAAa,GAAG,KAAK4iB,kBAAL,CAAwB,MAC5C,KAAKhI,oBAAL,EADoB,CAAtB;UAGI5a,aAAJ,EAAmBzd,IAAI,CAACwE,cAAL,GAAsBiZ,aAAtB;;;WAEd,MAAM+V,+BAAN,CAAsCxzB,IAAtC,CAAP;;;EAGF+jC,iCAAiC,CAC/B5jC,MAD+B,EAEvB;UACF6jC,SAAS,GAAG,MAAMD,iCAAN,CAAwC5jC,MAAxC,CAAlB;UACM8jC,UAAU,GAAG9jC,MAAM,CAACiC,MAAP,CAAc,CAAd,CAAnB;UACM8hC,eAAe,GACnBD,UAAU,IACVA,UAAU,CAAChkC,IAAX,KAAoB,YADpB,IAEAgkC,UAAU,CAAC1sC,IAAX,KAAoB,MAHtB;WAKO2sC,eAAe,GAAGF,SAAS,GAAG,CAAf,GAAmBA,SAAzC;;;CA98EN;;ACjFAp/B,KAAE,CAACu/B,WAAH,GAAiB,IAAIvtC,SAAJ,CAAc,IAAd,EAAoB;EAAEL,UAAU,EAAE;CAAlC,CAAjB;AAyCA,oBAAgB6J,UAAD,IACb,cAAcA,UAAd,CAAyB;EACvBgkC,gBAAgB,CACdC,YADc,EAE8B;QACxC,KAAKj3B,KAAL,CAAWxI,KAAE,CAACu/B,WAAd,CAAJ,EAAgC;YACxBnkC,IAAI,GAAG,KAAKqF,SAAL,EAAb;WACKgF,IAAL;WACKi6B,aAAL,CAAmB,kCAAnB;MAIAtkC,IAAI,CAACzI,IAAL,GAAY,MAAMkW,eAAN,CAAoC,IAApC,CAAZ;WAEK62B,aAAL,CAAmB,kCAAnB;WACK/3B,MAAL,CAAY3H,KAAE,CAACu/B,WAAf;aACO,KAAKI,iBAAL,CAAuBvkC,IAAvB,EAA6BqkC,YAA7B,CAAP;;;;EAIJE,iBAAiB,CACfvkC,IADe,EAEfqkC,YAFe,EAG2B;UACpCG,UAAU,GAAG,CAAC,EAAExkC,IAAI,CAACqkC,YAAL,IAAqBrkC,IAAI,CAACC,IAAL,KAAc,aAArC,CAApB;IACAD,IAAI,CAACqkC,YAAL,GAAoBA,YAApB;WAEOG,UAAU,GAAGxkC,IAAH,GAAU,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,aAAtB,CAA3B;;;EAOF6Y,gBAAgB,CAACpS,IAAD,EAAe;QAE3BA,IAAI,OAAJ,IACA,KAAK6B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,QAFF,EAGE;aACO,KAAKgP,QAAL,CAAcnU,KAAE,CAACu/B,WAAjB,EAA8B,CAA9B,CAAP;;;WAGK,MAAMtrB,gBAAN,CAAuB,GAAG3S,SAA1B,CAAP;;;EAOFxB,aAAa,GAAmC;WAE5C,KAAK0/B,gBAAL,CAAsB,YAAtB,KAAuC,MAAM1/B,aAAN,CAAoB,GAAGwB,SAAvB,CADzC;;;EAKFuH,eAAe,GAAmC;WAM9C,KAAK22B,gBAAL,CAAsB,YAAtB,KACA,MAAM32B,eAAN,CAAsB,GAAGvH,SAAzB,CAFF;;;EAMFoV,iBAAiB,CAACtS,IAAD,EAAqB;QAIhCA,IAAI,KAAKwC,SAAb,EAAwB,MAAM8P,iBAAN,CAAwB,GAAGpV,SAA3B;;;EAO1Bw9B,gBAAgB,GAAgC;WAE5C,KAAKU,gBAAL,CAAsB,SAAtB,KAAoC,MAAMV,gBAAN,CAAuB,GAAGx9B,SAA1B,CADtC;;;EAKF3D,SAAS,CAACC,IAAD,EAA2B;QAC9BA,IAAI,CAACvC,IAAL,KAAc,aAAlB,EAAiC,MAAMsC,SAAN,CAAgB,GAAG2D,SAAnB;;;EAGnCP,YAAY,CAAC3F,IAAD,EAAuB;QAE/BA,IAAI,IACJA,IAAI,CAACC,IAAL,KAAc,aADd,IAEAD,IAAI,CAACqkC,YAAL,KAAsB,YAHxB,EAIE;MACArkC,IAAI,CAACqkC,YAAL,GAAoB,SAApB;aACOrkC,IAAP;;;WAEK,MAAM2F,YAAN,CAAmB,GAAGO,SAAtB,CAAP;;;EAOFu+B,mBAAmB,CAACzkC,IAAD,EAA+C;QAC5DA,IAAI,CAAClJ,KAAL,IAAckJ,IAAI,CAAClJ,KAAL,CAAWmJ,IAAX,KAAoB,aAAtC,EAAqD;UAC/CwkC,mBAAN,CAA0B,GAAGv+B,SAA7B;;;EAGF0P,wBAAwB,CACtB5V,IADsB,EAEtBwC,IAFsB,EAGS;QAE7BA,IAAI,CAACvC,IAAL,KAAc,aAAd,IACCuC,IAAI,CAACb,KAAL,IAAca,IAAI,CAACb,KAAL,CAAW6B,aAF5B,EAGE;aACO,MAAMoS,wBAAN,CAA+B,GAAG1P,SAAlC,CAAP;;;QAGE,KAAKkH,KAAL,CAAWxI,KAAE,CAAChM,KAAd,CAAJ,EAA0B;YAClByI,IAAwB,GAAGrB,IAAjC;MACAqB,IAAI,CAACvK,KAAL,GAAa,KAAKytC,iBAAL,CAAuB/hC,IAAvB,EAA6B,YAA7B,CAAb;WACK6H,IAAL;MACAhJ,IAAI,CAAC4C,IAAL,GAAY,KAAKyR,cAAL,CAAoB,OAApB,CAAZ;aACO,KAAKpQ,UAAL,CAAgBjE,IAAhB,EAAsB,kBAAtB,CAAP;;;SAGG+M,SAAL;IAEApO,IAAI,CAACzI,IAAL,GAAYiL,IAAI,CAACjL,IAAjB;WACO,KAAKgtC,iBAAL,CAAuBvkC,IAAvB,EAA6B,WAA7B,CAAP;;;EAGF0kC,UAAU,GAAuC;WAE7C,KAAKN,gBAAL,CAAsB,gBAAtB,KACA,MAAMM,UAAN,CAAiB,GAAGx+B,SAApB,CAFF;;;EAMFy+B,eAAe,GAAoC;WAE/C,KAAKP,gBAAL,CAAsB,YAAtB,KACA,MAAMO,eAAN,CAAsB,GAAGz+B,SAAzB,CAFF;;;EAMFy6B,UAAU,CACR3gC,IADQ,EAER2Y,WAFQ,EAGRC,UAHQ,EAIL;UACG3Y,IAAI,GAAG0Y,WAAW,GAAG,kBAAH,GAAwB,iBAAhD;SAEKtO,IAAL;SACKu6B,cAAL,CAAoB5kC,IAApB;UAEMmkC,WAAW,GAAG,KAAKC,gBAAL,CAAsB,YAAtB,CAApB;;QACID,WAAJ,EAAiB;UAEb,KAAK/2B,KAAL,CAAWxI,KAAE,CAACvI,QAAd,KACA,KAAK+Q,KAAL,CAAWxI,KAAE,CAACu/B,WAAd,CADA,IAEA,KAAK/2B,KAAL,CAAWxI,KAAE,CAACxM,MAAd,CAHF,EAIE;QACA4H,IAAI,CAACwN,EAAL,GAAU22B,WAAV;OALF,MAMO,IAAIvrB,UAAU,IAAI,CAACD,WAAnB,EAAgC;QACrC3Y,IAAI,CAACwN,EAAL,GAAU,IAAV;QACAxN,IAAI,CAACiE,IAAL,GAAY,KAAKsgC,iBAAL,CAAuBJ,WAAvB,EAAoC,WAApC,CAAZ;eACO,KAAK7+B,UAAL,CAAgBtF,IAAhB,EAAsBC,IAAtB,CAAP;OAHK,MAIA;aACAgP,UAAL,CAAgB,IAAhB,EAAsB,0BAAtB;;KAZJ,MAcO;WACAyJ,YAAL,CAAkB1Y,IAAlB,EAAwB2Y,WAAxB,EAAqCC,UAArC;;;SAGGkB,eAAL,CAAqB9Z,IAArB;IACAA,IAAI,CAACiE,IAAL,GACE,KAAKmgC,gBAAL,CAAsB,WAAtB,KACA,KAAKS,cAAL,CAAoB,CAAC,CAAC7kC,IAAI,CAACI,UAA3B,CAFF;WAGO,KAAKkF,UAAL,CAAgBtF,IAAhB,EAAsBC,IAAtB,CAAP;;;EAGF4P,WAAW,CAAC7P,IAAD,EAAuB;UAC1BmkC,WAAW,GAAG,KAAKC,gBAAL,CAAsB,YAAtB,CAApB;QACI,CAACD,WAAL,EAAkB,OAAO,MAAMt0B,WAAN,CAAkB,GAAG3J,SAArB,CAAP;;QAEd,CAAC,KAAK0I,YAAL,CAAkB,MAAlB,CAAD,IAA8B,CAAC,KAAKxB,KAAL,CAAWxI,KAAE,CAAClM,KAAd,CAAnC,EAAyD;MAEvDsH,IAAI,CAACoY,UAAL,GAAkB,EAAlB;MACApY,IAAI,CAACiG,MAAL,GAAc,IAAd;MACAjG,IAAI,CAAC0K,WAAL,GAAmB,KAAK65B,iBAAL,CAAuBJ,WAAvB,EAAoC,aAApC,CAAnB;aACO,KAAK7+B,UAAL,CAAgBtF,IAAhB,EAAsB,wBAAtB,CAAP;;;SAIG8kC,YAAL,CAAkB,mBAAlB;UACMrqB,SAAS,GAAG,KAAKpV,SAAL,EAAlB;IACAoV,SAAS,CAACsqB,QAAV,GAAqBZ,WAArB;IACAnkC,IAAI,CAACoY,UAAL,GAAkB,CAAC,KAAK9S,UAAL,CAAgBmV,SAAhB,EAA2B,wBAA3B,CAAD,CAAlB;WAEO,MAAM5K,WAAN,CAAkB7P,IAAlB,CAAP;;;EAGFglC,gCAAgC,CAAChlC,IAAD,EAAwB;QAClDA,IAAI,CAACoY,UAAL,IAAmBpY,IAAI,CAACoY,UAAL,CAAgB/V,MAAhB,GAAyB,CAAhD,EAAmD;aAE1C,IAAP;;;WAEK,MAAM2iC,gCAAN,CAAuC,GAAG9+B,SAA1C,CAAP;;;EAGF++B,WAAW,CAACjlC,IAAD,EAAuC;UAC1C;MAAEoY;QAAepY,IAAvB;;QACIoY,UAAU,IAAIA,UAAU,CAAC/V,MAA7B,EAAqC;MACnCrC,IAAI,CAACoY,UAAL,GAAkBA,UAAU,CAAC8sB,MAAX,CAChBllC,IAAI,IAAIA,IAAI,CAAC+kC,QAAL,CAAc9kC,IAAd,KAAuB,aADf,CAAlB;;;UAIIglC,WAAN,CAAkBjlC,IAAlB;IACAA,IAAI,CAACoY,UAAL,GAAkBA,UAAlB;;;EAGF9I,WAAW,CACTtP,IADS,EAE0C;UAC7CmkC,WAAW,GAAG,KAAKC,gBAAL,CAAsB,YAAtB,CAApB;QACI,CAACD,WAAL,EAAkB,OAAO,MAAM70B,WAAN,CAAkB,GAAGpJ,SAArB,CAAP;IAElBlG,IAAI,CAACoY,UAAL,GAAkB,EAAlB;;QAEI,CAAC,KAAKxJ,YAAL,CAAkB,MAAlB,CAAD,IAA8B,CAAC,KAAKxB,KAAL,CAAWxI,KAAE,CAAClM,KAAd,CAAnC,EAAyD;MAEvDsH,IAAI,CAACiG,MAAL,GAAc,KAAKs+B,iBAAL,CAAuBJ,WAAvB,EAAoC,eAApC,CAAd;WACK/1B,SAAL;aACO,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;;;UAIIya,SAAS,GAAG,KAAK8d,eAAL,CAAqB4L,WAArB,CAAlB;IACA1pB,SAAS,CAACC,KAAV,GAAkBypB,WAAlB;SACK7+B,UAAL,CAAgBmV,SAAhB,EAA2B,wBAA3B;IACAza,IAAI,CAACoY,UAAL,CAAgB3T,IAAhB,CAAqBgW,SAArB;;QAEI,KAAKzN,GAAL,CAASpI,KAAE,CAAClM,KAAZ,CAAJ,EAAwB;YAEhBysC,aAAa,GAAG,KAAKC,6BAAL,CAAmCplC,IAAnC,CAAtB;UAGI,CAACmlC,aAAL,EAAoB,KAAKE,0BAAL,CAAgCrlC,IAAhC;;;SAGjB6M,gBAAL,CAAsB,MAAtB;IACA7M,IAAI,CAACiG,MAAL,GAAc,KAAKq/B,iBAAL,EAAd;SACKl3B,SAAL;WACO,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;;;EAGFslC,iBAAiB,GAAsC;WAInD,KAAKlB,gBAAL,CAAsB,eAAtB,KACA,MAAMkB,iBAAN,CAAwB,GAAGp/B,SAA3B,CAFF;;;CArQN;;AC7CA,mBAAgB9F,UAAD,IACb,cAAcA,UAAd,CAAyB;EACvBmlC,gBAAgB,GAAiB;QAC3B,KAAKn4B,KAAL,CAAWxI,KAAE,CAACnK,MAAd,CAAJ,EAA2B;YACnB+qC,gBAAgB,GAAG,KAAK7gC,KAAL,CAAWpD,KAApC;YAEMvB,IAAI,GAAG,KAAKqF,SAAL,EAAb;WACK2H,GAAL,CAASpI,KAAE,CAACnK,MAAZ;;UACI,KAAK2S,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAJ,EAAyB;cACjBA,IAAI,GAAG,KAAK2hC,mBAAL,CAAyB,KAAKv0B,KAAL,CAAWpD,KAApC,CAAb;cACMkkC,UAAU,GAAG,KAAK7wB,gBAAL,CAAsB5U,IAAtB,EAA4BzI,IAA5B,CAAnB;QACAkuC,UAAU,CAACxlC,IAAX,GAAkB,uBAAlB;;YACI,KAAKmN,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAAJ,EAA2B;iBAClBitC,UAAP;;;;WAGCx2B,UAAL,CAAgBu2B,gBAAhB;;;;EAQJ9gC,aAAa,GAAiB;WACrB,KAAK6gC,gBAAL,MAA2B,MAAM7gC,aAAN,CAAoB,GAAGwB,SAAvB,CAAlC;;;CAzBN;;ACMO,SAAS6V,SAAT,CAAmB2pB,OAAnB,EAAwCnuC,IAAxC,EAA+D;SAC7DmuC,OAAO,CAACC,IAAR,CAAaC,MAAM,IAAI;QACxBC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAJ,EAA2B;aAClBA,MAAM,CAAC,CAAD,CAAN,KAAcruC,IAArB;KADF,MAEO;aACEquC,MAAM,KAAKruC,IAAlB;;GAJG,CAAP;;AASF,AAAO,SAASmU,eAAT,CACLg6B,OADK,EAELnuC,IAFK,EAGLwuC,MAHK,EAIL;QACMH,MAAM,GAAGF,OAAO,CAAC5I,IAAR,CAAa8I,MAAM,IAAI;QAChCC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAJ,EAA2B;aAClBA,MAAM,CAAC,CAAD,CAAN,KAAcruC,IAArB;KADF,MAEO;aACEquC,MAAM,KAAKruC,IAAlB;;GAJW,CAAf;;MAQIquC,MAAM,IAAIC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAd,EAAqC;WAC5BA,MAAM,CAAC,CAAD,CAAN,CAAUG,MAAV,CAAP;;;SAGK,IAAP;;AAGF,MAAMC,kBAAkB,GAAG,CAAC,SAAD,EAAY,OAAZ,EAAqB,QAArB,CAA3B;AAEA,AAAO,SAASC,eAAT,CAAyBP,OAAzB,EAA8C;MAC/C3pB,SAAS,CAAC2pB,OAAD,EAAU,YAAV,CAAb,EAAsC;QAChC3pB,SAAS,CAAC2pB,OAAD,EAAU,mBAAV,CAAb,EAA6C;YACrC,IAAIx5B,KAAJ,CACJ,iEADI,CAAN;;;UAKIg6B,sBAAsB,GAAGx6B,eAAe,CAC5Cg6B,OAD4C,EAE5C,YAF4C,EAG5C,wBAH4C,CAA9C;;QAKIQ,sBAAsB,IAAI,IAA9B,EAAoC;YAC5B,IAAIh6B,KAAJ,CACJ,wEACE,2DADF,GAEE,kEAFF,GAGE,qEAJE,CAAN;KADF,MAOO,IAAI,OAAOg6B,sBAAP,KAAkC,SAAtC,EAAiD;YAChD,IAAIh6B,KAAJ,CAAU,6CAAV,CAAN;;;;MAIA6P,SAAS,CAAC2pB,OAAD,EAAU,MAAV,CAAT,IAA8B3pB,SAAS,CAAC2pB,OAAD,EAAU,YAAV,CAA3C,EAAoE;UAC5D,IAAIx5B,KAAJ,CAAU,6CAAV,CAAN;;;MAGE6P,SAAS,CAAC2pB,OAAD,EAAU,cAAV,CAAT,IAAsC3pB,SAAS,CAAC2pB,OAAD,EAAU,aAAV,CAAnD,EAA6E;UACrE,IAAIx5B,KAAJ,CAAU,sDAAV,CAAN;;;MAIA6P,SAAS,CAAC2pB,OAAD,EAAU,kBAAV,CAAT,IACA,CAACM,kBAAkB,CAACvnB,QAAnB,CACC/S,eAAe,CAACg6B,OAAD,EAAU,kBAAV,EAA8B,UAA9B,CADhB,CAFH,EAKE;UACM,IAAIx5B,KAAJ,CACJ,iFACE85B,kBAAkB,CAACjiC,GAAnB,CAAuBsD,CAAC,IAAK,IAAGA,CAAE,GAAlC,EAAsC8+B,IAAtC,CAA2C,IAA3C,CAFE,CAAN;;;AASJ,AAQO,MAAMC,YAA6C,GAAG;EAC3DC,MAD2D;EAE3DvqB,GAF2D;EAG3DwqB,IAH2D;EAI3DC,UAJ2D;EAK3DC,WAL2D;EAM3DC;CANK;AASP,AAAO,MAAMC,gBAAwC,GAAGpP,MAAM,CAACqP,IAAP,CACtDP,YADsD,CAAjD;;ACjFA,MAAMQ,cAAuB,GAAG;EAErCC,UAAU,EAAE,QAFyB;EAIrCC,cAAc,EAAEt7B,SAJqB;EAOrCu7B,SAAS,EAAE,CAP0B;EAUrCC,yBAAyB,EAAE,KAVU;EAarCC,0BAA0B,EAAE,KAbS;EAgBrCC,2BAA2B,EAAE,KAhBQ;EAkBrCC,uBAAuB,EAAE,KAlBY;EAoBrCC,sBAAsB,EAAE,KApBa;EAsBrC1B,OAAO,EAAE,EAtB4B;EAwBrC2B,UAAU,EAAE,IAxByB;EAiCrCC,MAAM,EAAE,KAjC6B;EAmCrCC,MAAM,EAAE,KAnC6B;EAsCrCC,8BAA8B,EAAE,KAtCK;EAyCrCC,aAAa,EAAE;CAzCV;AA8CP,AAAO,SAASC,UAAT,CAAoBC,IAApB,EAA6C;QAC5CnwC,OAAY,GAAG,EAArB;;kCACkB8/B,MAAM,CAACqP,IAAP,CAAYC,cAAZ,CAFgC,kCAEH;UAApCxjC,GAAG,mBAAT;IACH5L,OAAO,CAAC4L,GAAD,CAAP,GAAeukC,IAAI,IAAIA,IAAI,CAACvkC,GAAD,CAAJ,IAAa,IAArB,GAA4BukC,IAAI,CAACvkC,GAAD,CAAhC,GAAwCwjC,cAAc,CAACxjC,GAAD,CAArE;;;SAEK5L,OAAP;;;AClEK,MAAMowC,QAAN,CAAe;EAIpB/wC,WAAW,CAACiW,IAAD,EAAe+6B,GAAf,EAA4B;SAChC/6B,IAAL,GAAYA,IAAZ;SACKC,MAAL,GAAc86B,GAAd;;;;AAIJ,AAAO,MAAMC,cAAN,CAAqB;EAM1BjxC,WAAW,CAAC0K,KAAD,EAAkBM,GAAlB,EAAkC;SACtCN,KAAL,GAAaA,KAAb;SAEKM,GAAL,GAAWA,GAAX;;;;AAUJ,AAAO,SAASkmC,WAAT,CAAqBz/B,KAArB,EAAoC0/B,MAApC,EAA8D;MAC/Dl7B,IAAI,GAAG,CAAX;MACIolB,SAAS,GAAG,CAAhB;MACI9kB,KAAJ;EACA7G,UAAU,CAAC0hC,SAAX,GAAuB,CAAvB;;SACO,CAAC76B,KAAK,GAAG7G,UAAU,CAAC0F,IAAX,CAAgB3D,KAAhB,CAAT,KAAoC8E,KAAK,CAAC86B,KAAN,GAAcF,MAAzD,EAAiE;IAC/Dl7B,IAAI;IACJolB,SAAS,GAAG3rB,UAAU,CAAC0hC,SAAvB;;;SAGK,IAAIL,QAAJ,CAAa96B,IAAb,EAAmBk7B,MAAM,GAAG9V,SAA5B,CAAP;;;AC1Ca,MAAMiW,UAAN,CAAiB;;SAQ9BC,iBAR8B,GAQD,KARC;SAS9BC,2BAT8B,GASS,KATT;;;EAkB9BtsB,SAAS,CAACxkB,IAAD,EAAwB;WACxB,KAAKmuC,OAAL,CAAav8B,GAAb,CAAiB5R,IAAjB,CAAP;;;EAGFmU,eAAe,CAACk6B,MAAD,EAAiBruC,IAAjB,EAA+B;QAExC,KAAKwkB,SAAL,CAAe6pB,MAAf,CAAJ,EAA4B,OAAO,KAAKF,OAAL,CAAa4C,GAAb,CAAiB1C,MAAjB,EAAyBruC,IAAzB,CAAP;;;;;ACHhC,SAAS2hB,IAAT,CAAiB9B,KAAjB,EAA8C;SACrCA,KAAK,CAACA,KAAK,CAAC/U,MAAN,GAAe,CAAhB,CAAZ;;;AAGF,AAAe,MAAMkmC,cAAN,SAA6BJ,UAA7B,CAAwC;EACrDr8B,UAAU,CAACC,OAAD,EAAyB;QAC7B,KAAKy8B,QAAT,EAAmBz8B,OAAO,CAACvK,GAAR,CAAYgnC,QAAZ,GAAuB,KAAKA,QAA5B;SACd7jC,KAAL,CAAW8jC,gBAAX,CAA4BhkC,IAA5B,CAAiCsH,OAAjC;SACKpH,KAAL,CAAW+jC,eAAX,CAA2BjkC,IAA3B,CAAgCsH,OAAhC;;;EAGF48B,gCAAgC,CAC9B3oC,IAD8B,EAE9BmZ,QAF8B,EAW9ByvB,eAX8B,EAY9B;QACI,KAAKjkC,KAAL,CAAW+jC,eAAX,CAA2BrmC,MAA3B,KAAsC,CAA1C,EAA6C;;;;QAIzCwmC,WAAW,GAAG,IAAlB;QACI7+B,CAAC,GAAGmP,QAAQ,CAAC9W,MAAjB;;WACOwmC,WAAW,KAAK,IAAhB,IAAwB7+B,CAAC,GAAG,CAAnC,EAAsC;MACpC6+B,WAAW,GAAG1vB,QAAQ,CAAC,EAAEnP,CAAH,CAAtB;;;QAEE6+B,WAAW,KAAK,IAApB,EAA0B;;;;SAIrB,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKnkC,KAAL,CAAW+jC,eAAX,CAA2BrmC,MAA/C,EAAuDymC,CAAC,EAAxD,EAA4D;UAExD,KAAKnkC,KAAL,CAAW+jC,eAAX,CAA2BI,CAA3B,EAA8BjnC,GAA9B,GAAoC,KAAK8C,KAAL,CAAWokC,mBAAX,CAA+BlnC,GADrE,EAEE;aACK8C,KAAL,CAAW+jC,eAAX,CAA2BM,MAA3B,CAAkCF,CAAlC,EAAqC,CAArC;QACAA,CAAC;;;;UAICG,mBAAmB,GAAG,EAA5B;;SACK,IAAIj/B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKrF,KAAL,CAAW+jC,eAAX,CAA2BrmC,MAA/C,EAAuD2H,CAAC,EAAxD,EAA4D;YACpDk/B,cAAc,GAAG,KAAKvkC,KAAL,CAAW+jC,eAAX,CAA2B1+B,CAA3B,CAAvB;;UACIk/B,cAAc,CAACrnC,GAAf,GAAqB7B,IAAI,CAAC6B,GAA9B,EAAmC;QACjConC,mBAAmB,CAACxkC,IAApB,CAAyBykC,cAAzB;;YAGI,CAACN,eAAL,EAAsB;eACfjkC,KAAL,CAAW+jC,eAAX,CAA2BM,MAA3B,CAAkCh/B,CAAlC,EAAqC,CAArC;UACAA,CAAC;;OANL,MAQO;YACDhK,IAAI,CAACyoC,gBAAL,KAA0Bj9B,SAA9B,EAAyC;UACvCxL,IAAI,CAACyoC,gBAAL,GAAwB,EAAxB;;;QAEFzoC,IAAI,CAACyoC,gBAAL,CAAsBhkC,IAAtB,CAA2BykC,cAA3B;;;;QAGAN,eAAJ,EAAqB,KAAKjkC,KAAL,CAAW+jC,eAAX,GAA6B,EAA7B;;QAEjBO,mBAAmB,CAAC5mC,MAApB,GAA6B,CAAjC,EAAoC;MAClCwmC,WAAW,CAACJ,gBAAZ,GAA+BQ,mBAA/B;KADF,MAEO,IAAIJ,WAAW,CAACJ,gBAAZ,KAAiCj9B,SAArC,EAAgD;MACrDq9B,WAAW,CAACJ,gBAAZ,GAA+B,EAA/B;;;;EAIJU,cAAc,CAACnpC,IAAD,EAAmB;QAC3BA,IAAI,CAACC,IAAL,KAAc,SAAd,IAA2BD,IAAI,CAACiE,IAAL,CAAU5B,MAAV,GAAmB,CAAlD,EAAqD;UAE/C+U,KAAK,GAAG,KAAKzS,KAAL,CAAWykC,YAAzB;QAEIC,UAAJ,EAAgBC,SAAhB,EAA2Bb,gBAA3B,EAA6Cz+B,CAA7C,EAAgD8+B,CAAhD;;QAEI,KAAKnkC,KAAL,CAAW8jC,gBAAX,CAA4BpmC,MAA5B,GAAqC,CAAzC,EAA4C;UAKtC,KAAKsC,KAAL,CAAW8jC,gBAAX,CAA4B,CAA5B,EAA+BlnC,KAA/B,IAAwCvB,IAAI,CAAC6B,GAAjD,EAAsD;QACpD4mC,gBAAgB,GAAG,KAAK9jC,KAAL,CAAW8jC,gBAA9B;aACK9jC,KAAL,CAAW8jC,gBAAX,GAA8B,EAA9B;OAFF,MAGO;aAOA9jC,KAAL,CAAW8jC,gBAAX,CAA4BpmC,MAA5B,GAAqC,CAArC;;KAfJ,MAiBO,IAAI+U,KAAK,CAAC/U,MAAN,GAAe,CAAnB,EAAsB;YACrBknC,WAAW,GAAGrwB,IAAI,CAAC9B,KAAD,CAAxB;;UAEEmyB,WAAW,CAACd,gBAAZ,IACAc,WAAW,CAACd,gBAAZ,CAA6B,CAA7B,EAAgClnC,KAAhC,IAAyCvB,IAAI,CAAC6B,GAFhD,EAGE;QACA4mC,gBAAgB,GAAGc,WAAW,CAACd,gBAA/B;eACOc,WAAW,CAACd,gBAAnB;;;;QAKArxB,KAAK,CAAC/U,MAAN,GAAe,CAAf,IAAoB6W,IAAI,CAAC9B,KAAD,CAAJ,CAAY7V,KAAZ,IAAqBvB,IAAI,CAACuB,KAAlD,EAAyD;MACvD8nC,UAAU,GAAGjyB,KAAK,CAACxP,GAAN,EAAb;;;WAGKwP,KAAK,CAAC/U,MAAN,GAAe,CAAf,IAAoB6W,IAAI,CAAC9B,KAAD,CAAJ,CAAY7V,KAAZ,IAAqBvB,IAAI,CAACuB,KAArD,EAA4D;MAC1D+nC,SAAS,GAAGlyB,KAAK,CAACxP,GAAN,EAAZ;;;QAGE,CAAC0hC,SAAD,IAAcD,UAAlB,EAA8BC,SAAS,GAAGD,UAAZ;;QAK1BA,UAAJ,EAAgB;cACNrpC,IAAI,CAACC,IAAb;aACO,kBAAL;eACO0oC,gCAAL,CAAsC3oC,IAAtC,EAA4CA,IAAI,CAAC6C,UAAjD;;;aAEG,eAAL;eACO8lC,gCAAL,CAAsC3oC,IAAtC,EAA4CA,IAAI,CAAC6C,UAAjD,EAA6D,IAA7D;;;aAEG,gBAAL;eACO8lC,gCAAL,CAAsC3oC,IAAtC,EAA4CA,IAAI,CAACkG,SAAjD;;;aAEG,iBAAL;eACOyiC,gCAAL,CAAsC3oC,IAAtC,EAA4CA,IAAI,CAACmZ,QAAjD;;;aAEG,cAAL;eACOwvB,gCAAL,CAAsC3oC,IAAtC,EAA4CA,IAAI,CAACmZ,QAAjD,EAA2D,IAA3D;;;KAfN,MAkBO,IACL,KAAKxU,KAAL,CAAWokC,mBAAX,KACE,KAAKpkC,KAAL,CAAWokC,mBAAX,CAA+B9oC,IAA/B,KAAwC,iBAAxC,IACAD,IAAI,CAACC,IAAL,KAAc,iBADf,IAEE,KAAK0E,KAAL,CAAWokC,mBAAX,CAA+B9oC,IAA/B,KAAwC,iBAAxC,IACCD,IAAI,CAACC,IAAL,KAAc,iBAJlB,CADK,EAML;WACK0oC,gCAAL,CAAsC3oC,IAAtC,EAA4C,CAC1C,KAAK2E,KAAL,CAAWokC,mBAD+B,CAA5C;;;QAKEO,SAAJ,EAAe;UACTA,SAAS,CAACZ,eAAd,EAA+B;YAE3BY,SAAS,KAAKtpC,IAAd,IACAspC,SAAS,CAACZ,eAAV,CAA0BrmC,MAA1B,GAAmC,CADnC,IAEA6W,IAAI,CAACowB,SAAS,CAACZ,eAAX,CAAJ,CAAgC7mC,GAAhC,IAAuC7B,IAAI,CAACuB,KAH9C,EAIE;UACAvB,IAAI,CAAC0oC,eAAL,GAAuBY,SAAS,CAACZ,eAAjC;iBACOY,SAAS,CAACZ,eAAjB;SANF,MAOO;eAIA1+B,CAAC,GAAGs/B,SAAS,CAACZ,eAAV,CAA0BrmC,MAA1B,GAAmC,CAA5C,EAA+C2H,CAAC,IAAI,CAApD,EAAuD,EAAEA,CAAzD,EAA4D;gBACtDs/B,SAAS,CAACZ,eAAV,CAA0B1+B,CAA1B,EAA6BnI,GAA7B,IAAoC7B,IAAI,CAACuB,KAA7C,EAAoD;cAClDvB,IAAI,CAAC0oC,eAAL,GAAuBY,SAAS,CAACZ,eAAV,CAA0BM,MAA1B,CAAiC,CAAjC,EAAoCh/B,CAAC,GAAG,CAAxC,CAAvB;;;;;;KAfV,MAqBO,IAAI,KAAKrF,KAAL,CAAW+jC,eAAX,CAA2BrmC,MAA3B,GAAoC,CAAxC,EAA2C;UAC5C6W,IAAI,CAAC,KAAKvU,KAAL,CAAW+jC,eAAZ,CAAJ,CAAiC7mC,GAAjC,IAAwC7B,IAAI,CAACuB,KAAjD,EAAwD;YAClD,KAAKoD,KAAL,CAAWokC,mBAAf,EAAoC;eAC7BD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAKnkC,KAAL,CAAW+jC,eAAX,CAA2BrmC,MAA3C,EAAmDymC,CAAC,EAApD,EAAwD;gBAEpD,KAAKnkC,KAAL,CAAW+jC,eAAX,CAA2BI,CAA3B,EAA8BjnC,GAA9B,GACA,KAAK8C,KAAL,CAAWokC,mBAAX,CAA+BlnC,GAFjC,EAGE;mBACK8C,KAAL,CAAW+jC,eAAX,CAA2BM,MAA3B,CAAkCF,CAAlC,EAAqC,CAArC;cACAA,CAAC;;;;;YAIH,KAAKnkC,KAAL,CAAW+jC,eAAX,CAA2BrmC,MAA3B,GAAoC,CAAxC,EAA2C;UACzCrC,IAAI,CAAC0oC,eAAL,GAAuB,KAAK/jC,KAAL,CAAW+jC,eAAlC;eACK/jC,KAAL,CAAW+jC,eAAX,GAA6B,EAA7B;;OAdJ,MAgBO;aAYA1+B,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAKrF,KAAL,CAAW+jC,eAAX,CAA2BrmC,MAA3C,EAAmD2H,CAAC,EAApD,EAAwD;cAClD,KAAKrF,KAAL,CAAW+jC,eAAX,CAA2B1+B,CAA3B,EAA8BnI,GAA9B,GAAoC7B,IAAI,CAACuB,KAA7C,EAAoD;;;;;cAShDmnC,eAAe,GAAG,KAAK/jC,KAAL,CAAW+jC,eAAX,CAA2B5mC,KAA3B,CAAiC,CAAjC,EAAoCkI,CAApC,CAAxB;;YAEI0+B,eAAe,CAACrmC,MAApB,EAA4B;UAC1BrC,IAAI,CAAC0oC,eAAL,GAAuBA,eAAvB;;;QAKFD,gBAAgB,GAAG,KAAK9jC,KAAL,CAAW+jC,eAAX,CAA2B5mC,KAA3B,CAAiCkI,CAAjC,CAAnB;;YACIy+B,gBAAgB,CAACpmC,MAAjB,KAA4B,CAAhC,EAAmC;UACjComC,gBAAgB,GAAG,IAAnB;;;;;SAKD9jC,KAAL,CAAWokC,mBAAX,GAAiC/oC,IAAjC;;QAEIyoC,gBAAJ,EAAsB;UAElBA,gBAAgB,CAACpmC,MAAjB,IACAomC,gBAAgB,CAAC,CAAD,CAAhB,CAAoBlnC,KAApB,IAA6BvB,IAAI,CAACuB,KADlC,IAEA2X,IAAI,CAACuvB,gBAAD,CAAJ,CAAuB5mC,GAAvB,IAA8B7B,IAAI,CAAC6B,GAHrC,EAIE;QACA7B,IAAI,CAACwpC,aAAL,GAAqBf,gBAArB;OALF,MAMO;QACLzoC,IAAI,CAACyoC,gBAAL,GAAwBA,gBAAxB;;;;IAIJrxB,KAAK,CAAC3S,IAAN,CAAWzE,IAAX;;;;;ACnQW,MAAMypC,cAAN,SAA6BlB,cAA7B,CAA4C;EAGzDmB,sBAAsB,CAAC3/B,GAAD,EAAwB;QACxCvI,GAAJ;QACIuI,GAAG,KAAK,KAAKpF,KAAL,CAAWpD,KAAvB,EAA8BC,GAAG,GAAG,KAAKmD,KAAL,CAAWG,QAAjB,CAA9B,KACK,IAAIiF,GAAG,KAAK,KAAKpF,KAAL,CAAW+J,YAAvB,EAAqClN,GAAG,GAAG,KAAKmD,KAAL,CAAWglC,eAAjB,CAArC,KACA,IAAI5/B,GAAG,KAAK,KAAKpF,KAAL,CAAW9C,GAAvB,EAA4BL,GAAG,GAAG,KAAKmD,KAAL,CAAWilC,MAAjB,CAA5B,KACA,IAAI7/B,GAAG,KAAK,KAAKpF,KAAL,CAAW4D,UAAvB,EAAmC/G,GAAG,GAAG,KAAKmD,KAAL,CAAWyuB,aAAjB,CAAnC,KACA5xB,GAAG,GAAGumC,WAAW,CAAC,KAAKz/B,KAAN,EAAayB,GAAb,CAAjB;WAEEvI,GAAP;;;EAGFc,KAAK,CACHyH,GADG,EAEHsV,OAFG,EAGH;IACEwqB,kBADF;IAEEpjC;MAIE,EATD,EAUY;UACTjF,GAAG,GAAG,KAAKkoC,sBAAL,CAA4B3/B,GAA5B,CAAZ;IAEAsV,OAAO,IAAK,KAAI7d,GAAG,CAACsL,IAAK,IAAGtL,GAAG,CAACuL,MAAO,GAAvC;UAEM+8B,GAAiD,GAAG,IAAIC,WAAJ,CACxD1qB,OADwD,CAA1D;IAGAyqB,GAAG,CAAC//B,GAAJ,GAAUA,GAAV;IACA+/B,GAAG,CAACtoC,GAAJ,GAAUA,GAAV;;QACIqoC,kBAAJ,EAAwB;MACtBC,GAAG,CAACE,aAAJ,GAAoBH,kBAApB;;;QAEEpjC,IAAI,KAAK+E,SAAb,EAAwB;MACtBs+B,GAAG,CAACrjC,IAAJ,GAAWA,IAAX;;;QAGE,KAAKjP,OAAL,CAAaiwC,aAAjB,EAAgC;UAC1B,CAAC,KAAKwC,WAAV,EAAuB,KAAKtlC,KAAL,CAAWulC,MAAX,CAAkBzlC,IAAlB,CAAuBqlC,GAAvB;aAChBA,GAAP;KAFF,MAGO;YACCA,GAAN;;;;;;AClCS,MAAMK,KAAN,CAAY;;SAiBzBD,MAjByB,GAiBD,EAjBC;SAoBzBE,gBApByB,GAoBE,CAAC,CApBH;SA0BzB3zB,SA1ByB,GA0BH,EA1BG;SAkCzBS,yBAlCyB,GAkCa,EAlCb;SAqCzBmzB,YArCyB,GAqCD,KArCC;SAsCzBzG,sBAtCyB,GAsCS,KAtCT;SAuCzB0G,UAvCyB,GAuCH,KAvCG;SAwCzBh+B,MAxCyB,GAwCP,KAxCO;SAyCzB8F,kBAzCyB,GAyCK,KAzCL;SA0CzBgiB,cA1CyB,GA0CC,KA1CD;SA2CzBtW,cA3CyB,GA2CC,KA3CD;SA4CzB5V,UA5CyB,GA4CH,KA5CG;SA+CzBqiC,YA/CyB,GA+CS;MAChCC,wBAAwB,EAAE,CADM;MAEhCC,aAAa,EAAE;KAjDQ;SAqDzBC,SArDyB,GAqDJ,KArDI;SAsDzBC,0BAtDyB,GAsDa,KAtDb;SAyDzBC,MAzDyB,GA6DpB,EA7DoB;SAkEzBC,cAlEyB,GAkEmB,CAAC,EAAD,CAlEnB;SAqEzBC,QArEyB,GAqEN,CAAC,CArEK;SAsEzBC,QAtEyB,GAsEN,CAAC,CAtEK;SAyEzBC,QAzEyB,GAyEI,EAzEJ;SA4EzBvC,gBA5EyB,GA4EY,EA5EZ;SA6EzBC,eA7EyB,GA6EW,EA7EX;SA8EzBU,YA9EyB,GAmFpB,EAnFoB;SAqFzBL,mBArFyB,GAqFK,IArFL;SAwFzBh/B,GAxFyB,GAwFX,CAxFW;SAyFzBmoB,SAzFyB,GAyFL,CAzFK;SA6FzBjyB,IA7FyB,GA6FP2E,KAAE,CAAC3M,GA7FI;SAgGzB4I,KAhGyB,GAgGZ,IAhGY;SAmGzBU,KAnGyB,GAmGT,CAnGS;SAoGzBM,GApGyB,GAoGX,CApGW;SAwGzBuxB,aAxGyB,GAwGC,IAxGD;SA0GzBuW,eA1GyB,GA0GG,IA1GH;SA2GzBj7B,YA3GyB,GA2GF,CA3GE;SA4GzBnG,UA5GyB,GA4GJ,CA5GI;SAiHzBd,OAjHyB,GAiHI,CAACg8B,OAAE,CAACz8B,cAAJ,CAjHJ;SAkHzBU,WAlHyB,GAkHF,IAlHE;SAuHzBjC,WAvHyB,GAuHF,KAvHE;SA0HzBwlC,aA1HyB,GA0HA,KA1HA;SA2HzBC,aA3HyB,GA2HA,IA3HA;SA+HzBC,mBA/HyB,GA+HY,EA/HZ;SAkIzBC,YAlIyB,GAkIF,CAlIE;;;EASzBrrB,IAAI,CAACvoB,OAAD,EAAyB;SACtBkR,MAAL,GACElR,OAAO,CAAC6vC,UAAR,KAAuB,KAAvB,GAA+B,KAA/B,GAAuC7vC,OAAO,CAACqvC,UAAR,KAAuB,QADhE;SAGK5U,OAAL,GAAez6B,OAAO,CAACuvC,SAAvB;SACKjiC,QAAL,GAAgB,KAAK8kC,MAAL,GAAc,KAAKyB,WAAL,EAA9B;;;EAsHFA,WAAW,GAAa;WACf,IAAIzD,QAAJ,CAAa,KAAK3V,OAAlB,EAA2B,KAAKloB,GAAL,GAAW,KAAKmoB,SAA3C,CAAP;;;EAGF3b,KAAK,CAAC+0B,UAAD,EAA8B;UAC3B3mC,KAAK,GAAG,IAAIwlC,KAAJ,EAAd;UACMxD,IAAI,GAAGrP,MAAM,CAACqP,IAAP,CAAY,IAAZ,CAAb;;SACK,IAAI38B,CAAC,GAAG,CAAR,EAAW3H,MAAM,GAAGskC,IAAI,CAACtkC,MAA9B,EAAsC2H,CAAC,GAAG3H,MAA1C,EAAkD2H,CAAC,EAAnD,EAAuD;YAC/C5G,GAAG,GAAGujC,IAAI,CAAC38B,CAAD,CAAhB;UAEI6B,GAAG,GAAG,KAAKzI,GAAL,CAAV;;UAEI,CAACkoC,UAAD,IAAezF,KAAK,CAACC,OAAN,CAAcj6B,GAAd,CAAnB,EAAuC;QACrCA,GAAG,GAAGA,GAAG,CAAC/J,KAAJ,EAAN;;;MAIF6C,KAAK,CAACvB,GAAD,CAAL,GAAayI,GAAb;;;WAGKlH,KAAP;;;;;eC9KJ,SAAS4mC,OAAT,CAAiB9kC,IAAjB,EAAuB;SACdA,IAAI,MAAJ,IAAkBA,IAAI,MAA7B;;AAmBF,MAAM+kC,iBAAiB,GAAG,IAAI3iC,GAAJ,CAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,CAAR,CAA1B;AAKA,MAAM4iC,iCAAiC,GAAG;EACxCC,SAAS,EAAE,kCAD6B;EAWxCC,GAAG,EAAE;CAXP;AAmBA,MAAMC,+BAA+B,GAAG,EAAxC;AACAA,+BAA+B,CAACC,GAAhC,GAAsC,QAAtC;AAKAD,+BAA+B,CAACE,GAAhC,GAAsC,CAEpC,GAAGF,+BAA+B,CAACC,GAFC,yBAAtC;AAWAD,+BAA+B,CAACG,GAAhC,GAAsC,CAEpC,GAAGH,+BAA+B,CAACE,GAFC,SAAtC;AAQAF,+BAA+B,CAACD,GAAhC,GAAsC,CAEpC,GAAGC,+BAA+B,CAACG,GAFC,oDAAtC;AAuBA,AAAO,MAAMC,KAAN,CAAY;EACjBn1C,WAAW,CAAC8N,KAAD,EAAe;SACnB1E,IAAL,GAAY0E,KAAK,CAAC1E,IAAlB;SACKY,KAAL,GAAa8D,KAAK,CAAC9D,KAAnB;SACKU,KAAL,GAAaoD,KAAK,CAACpD,KAAnB;SACKM,GAAL,GAAW8C,KAAK,CAAC9C,GAAjB;SACKL,GAAL,GAAW,IAAIsmC,cAAJ,CAAmBnjC,KAAK,CAACG,QAAzB,EAAmCH,KAAK,CAACilC,MAAzC,CAAX;;;;AAYJ,AAAe,MAAMqC,SAAN,SAAwBxC,cAAxB,CAAuC;EAUpD5yC,WAAW,CAACW,OAAD,EAAmB8Q,KAAnB,EAAkC;;SAF7Ci/B,MAE6C,GAFV,EAEU;SAEtC5iC,KAAL,GAAa,IAAIwlC,KAAJ,EAAb;SACKxlC,KAAL,CAAWob,IAAX,CAAgBvoB,OAAhB;SACK8Q,KAAL,GAAaA,KAAb;SACKjG,MAAL,GAAciG,KAAK,CAACjG,MAApB;SACK4nC,WAAL,GAAmB,KAAnB;;;EAGFiC,SAAS,CAACz0C,KAAD,EAA2B;SAG7B8vC,MAAL,CAAYllC,MAAZ,GAAqB,KAAKsC,KAAL,CAAWymC,YAAhC;SACK7D,MAAL,CAAY9iC,IAAZ,CAAiBhN,KAAjB;MACE,KAAKkN,KAAL,CAAWymC,YAAb;;;EAKF/gC,IAAI,GAAS;QACP,CAAC,KAAK4/B,WAAV,EAAuB;WAChBkC,mBAAL;;UACI,KAAK30C,OAAL,CAAa+vC,MAAjB,EAAyB;aAClB2E,SAAL,CAAe,IAAIF,KAAJ,CAAU,KAAKrnC,KAAf,CAAf;;;;SAICA,KAAL,CAAW4D,UAAX,GAAwB,KAAK5D,KAAL,CAAW9C,GAAnC;SACK8C,KAAL,CAAW+J,YAAX,GAA0B,KAAK/J,KAAL,CAAWpD,KAArC;SACKoD,KAAL,CAAWyuB,aAAX,GAA2B,KAAKzuB,KAAL,CAAWilC,MAAtC;SACKjlC,KAAL,CAAWglC,eAAX,GAA6B,KAAKhlC,KAAL,CAAWG,QAAxC;SACKiZ,SAAL;;;EAKF/Q,GAAG,CAAC/M,IAAD,EAA2B;QACxB,KAAKmN,KAAL,CAAWnN,IAAX,CAAJ,EAAsB;WACfoK,IAAL;aACO,IAAP;KAFF,MAGO;aACE,KAAP;;;;EAMJ+C,KAAK,CAACnN,IAAD,EAA2B;WACvB,KAAK0E,KAAL,CAAW1E,IAAX,KAAoBA,IAA3B;;;EAKF2S,SAAS,GAAU;UACXw5B,GAAG,GAAG,KAAKznC,KAAjB;SACKA,KAAL,GAAaynC,GAAG,CAAC71B,KAAJ,CAAU,IAAV,CAAb;SAEK0zB,WAAL,GAAmB,IAAnB;SACK5/B,IAAL;SACK4/B,WAAL,GAAmB,KAAnB;UAEMoC,IAAI,GAAG,KAAK1nC,KAAlB;SACKA,KAAL,GAAaynC,GAAb;WACOC,IAAP;;;EAGFC,cAAc,GAAW;UACjBC,UAAU,GAAG,KAAK5nC,KAAL,CAAWoF,GAA9B;IACArD,cAAc,CAACuhC,SAAf,GAA2BsE,UAA3B;UACMC,IAAI,GAAG9lC,cAAc,CAACuF,IAAf,CAAoB,KAAK3D,KAAzB,CAAb;WAEOikC,UAAU,GAAGC,IAAI,CAAC,CAAD,CAAJ,CAAQnqC,MAA5B;;;EAGFo5B,iBAAiB,GAAW;WACnB,KAAKnzB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKwzB,cAAL,EAAtB,CAAP;;;EAMFG,SAAS,CAAC/jC,MAAD,EAAwB;SAC1B/D,KAAL,CAAW+D,MAAX,GAAoBA,MAApB;QACI,CAAC,KAAK0E,KAAL,CAAWxI,KAAE,CAAC/M,GAAd,CAAD,IAAuB,CAAC,KAAKuV,KAAL,CAAWxI,KAAE,CAAC5M,MAAd,CAA5B,EAAmD;SAC9C2M,KAAL,CAAWoF,GAAX,GAAiB,KAAKpF,KAAL,CAAWpD,KAA5B;;WACO,KAAKoD,KAAL,CAAWoF,GAAX,GAAiB,KAAKpF,KAAL,CAAWutB,SAAnC,EAA8C;WACvCvtB,KAAL,CAAWutB,SAAX,GACE,KAAK5pB,KAAL,CAAWokC,WAAX,CAAuB,IAAvB,EAA6B,KAAK/nC,KAAL,CAAWutB,SAAX,GAAuB,CAApD,IAAyD,CAD3D;QAEE,KAAKvtB,KAAL,CAAWstB,OAAb;;;SAEGlU,SAAL;;;EAGFlW,UAAU,GAAe;WAChB,KAAKlD,KAAL,CAAW8C,OAAX,CAAmB,KAAK9C,KAAL,CAAW8C,OAAX,CAAmBpF,MAAnB,GAA4B,CAA/C,CAAP;;;EAMF0b,SAAS,GAAS;UACVlW,UAAU,GAAG,KAAKA,UAAL,EAAnB;QACI,CAACA,UAAD,IAAe,CAACA,UAAU,CAACf,aAA/B,EAA8C,KAAK6lC,SAAL;SAEzChoC,KAAL,CAAWsmC,aAAX,GAA2B,KAA3B;SACKtmC,KAAL,CAAWumC,aAAX,GAA2B,IAA3B;SACKvmC,KAAL,CAAWpD,KAAX,GAAmB,KAAKoD,KAAL,CAAWoF,GAA9B;SACKpF,KAAL,CAAWG,QAAX,GAAsB,KAAKH,KAAL,CAAW0mC,WAAX,EAAtB;;QACI,KAAK1mC,KAAL,CAAWoF,GAAX,IAAkB,KAAK1H,MAA3B,EAAmC;WAC5BuJ,WAAL,CAAiBhH,KAAE,CAAC3M,GAApB;;;;QAIE4P,UAAU,CAACd,QAAf,EAAyB;MACvBc,UAAU,CAACd,QAAX,CAAoB,IAApB;KADF,MAEO;WACA8R,gBAAL,CAAsB,KAAKvQ,KAAL,CAAWskC,WAAX,CAAuB,KAAKjoC,KAAL,CAAWoF,GAAlC,CAAtB;;;;EAIJ8iC,WAAW,CACTC,KADS,EAETC,IAFS,EAGTxrC,KAHS,EAITM,GAJS,EAKTiD,QALS,EAMT8kC,MANS,EAOH;UACA79B,OAAO,GAAG;MACd9L,IAAI,EAAE6sC,KAAK,GAAG,cAAH,GAAoB,aADjB;MAEdjsC,KAAK,EAAEksC,IAFO;MAGdxrC,KAAK,EAAEA,KAHO;MAIdM,GAAG,EAAEA,GAJS;MAKdL,GAAG,EAAE,IAAIsmC,cAAJ,CAAmBhjC,QAAnB,EAA6B8kC,MAA7B;KALP;QAQI,KAAKpyC,OAAL,CAAa+vC,MAAjB,EAAyB,KAAK2E,SAAL,CAAengC,OAAf;SACpBpH,KAAL,CAAWqmC,QAAX,CAAoBvmC,IAApB,CAAyBsH,OAAzB;SACKD,UAAL,CAAgBC,OAAhB;;;EAGFsS,gBAAgB,GAAS;UACjBvZ,QAAQ,GAAG,KAAKH,KAAL,CAAW0mC,WAAX,EAAjB;UACM9pC,KAAK,GAAG,KAAKoD,KAAL,CAAWoF,GAAzB;UACMlI,GAAG,GAAG,KAAKyG,KAAL,CAAWuP,OAAX,CAAmB,IAAnB,EAAyB,KAAKlT,KAAL,CAAWoF,GAAX,GAAiB,CAA1C,CAAZ;QACIlI,GAAG,KAAK,CAAC,CAAb,EAAgB,MAAM,KAAKS,KAAL,CAAWf,KAAX,EAAkB,sBAAlB,CAAN;SAEXoD,KAAL,CAAWoF,GAAX,GAAiBlI,GAAG,GAAG,CAAvB;IACA0E,UAAU,CAAC0hC,SAAX,GAAuB1mC,KAAvB;QACI6L,KAAJ;;WAEE,CAACA,KAAK,GAAG7G,UAAU,CAAC0F,IAAX,CAAgB,KAAK3D,KAArB,CAAT,KACA8E,KAAK,CAAC86B,KAAN,GAAc,KAAKvjC,KAAL,CAAWoF,GAF3B,EAGE;QACE,KAAKpF,KAAL,CAAWstB,OAAb;WACKttB,KAAL,CAAWutB,SAAX,GAAuB9kB,KAAK,CAAC86B,KAAN,GAAc96B,KAAK,CAAC,CAAD,CAAL,CAAS/K,MAA9C;;;QAKE,KAAK4nC,WAAT,EAAsB;SAEjB4C,WAAL,CACE,IADF,EAEE,KAAKvkC,KAAL,CAAWxG,KAAX,CAAiBP,KAAK,GAAG,CAAzB,EAA4BM,GAA5B,CAFF,EAGEN,KAHF,EAIE,KAAKoD,KAAL,CAAWoF,GAJb,EAKEjF,QALF,EAME,KAAKH,KAAL,CAAW0mC,WAAX,EANF;;;EAUF2B,eAAe,CAACC,SAAD,EAA0B;UACjC1rC,KAAK,GAAG,KAAKoD,KAAL,CAAWoF,GAAzB;UACMjF,QAAQ,GAAG,KAAKH,KAAL,CAAW0mC,WAAX,EAAjB;QACIxZ,EAAE,GAAG,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAuB,KAAKnU,KAAL,CAAWoF,GAAX,IAAkBkjC,SAAzC,CAAT;;QACI,KAAKtoC,KAAL,CAAWoF,GAAX,GAAiB,KAAK1H,MAA1B,EAAkC;aACzB,CAACmE,SAAS,CAACqrB,EAAD,CAAV,IAAkB,EAAE,KAAKltB,KAAL,CAAWoF,GAAb,GAAmB,KAAK1H,MAAjD,EAAyD;QACvDwvB,EAAE,GAAG,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,CAAL;;;;QAMA,KAAKkgC,WAAT,EAAsB;SAEjB4C,WAAL,CACE,KADF,EAEE,KAAKvkC,KAAL,CAAWxG,KAAX,CAAiBP,KAAK,GAAG0rC,SAAzB,EAAoC,KAAKtoC,KAAL,CAAWoF,GAA/C,CAFF,EAGExI,KAHF,EAIE,KAAKoD,KAAL,CAAWoF,GAJb,EAKEjF,QALF,EAME,KAAKH,KAAL,CAAW0mC,WAAX,EANF;;;EAaFsB,SAAS,GAAS;IAChBO,IAAI,EAAE,OAAO,KAAKvoC,KAAL,CAAWoF,GAAX,GAAiB,KAAK1H,MAA7B,EAAqC;YACnCwvB,EAAE,GAAG,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,CAAX;;cACQ8nB,EAAR;;;;YAIM,KAAKltB,KAAL,CAAWoF,GAAb;;;;cAIE,KAAKzB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,QADF,EAEE;cACE,KAAKpF,KAAL,CAAWoF,GAAb;;;;;;YAMA,KAAKpF,KAAL,CAAWoF,GAAb;YACE,KAAKpF,KAAL,CAAWstB,OAAb;eACKttB,KAAL,CAAWutB,SAAX,GAAuB,KAAKvtB,KAAL,CAAWoF,GAAlC;;;;kBAIQ,KAAKzB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAR;;mBAESsU,gBAAL;;;;mBAIK2uB,eAAL,CAAqB,CAArB;;;;oBAIME,IAAN;;;;;;cAKAvmC,YAAY,CAACkrB,EAAD,CAAhB,EAAsB;cAClB,KAAKltB,KAAL,CAAWoF,GAAb;WADF,MAEO;kBACCmjC,IAAN;;;;;;;EAWVthC,WAAW,CAAC3L,IAAD,EAAkB4L,GAAlB,EAAkC;SACtClH,KAAL,CAAW9C,GAAX,GAAiB,KAAK8C,KAAL,CAAWoF,GAA5B;SACKpF,KAAL,CAAWilC,MAAX,GAAoB,KAAKjlC,KAAL,CAAW0mC,WAAX,EAApB;UACMvjC,QAAQ,GAAG,KAAKnD,KAAL,CAAW1E,IAA5B;SACK0E,KAAL,CAAW1E,IAAX,GAAkBA,IAAlB;SACK0E,KAAL,CAAW9D,KAAX,GAAmBgL,GAAnB;QAEI,CAAC,KAAKo+B,WAAV,EAAuB,KAAK9yC,aAAL,CAAmB2Q,QAAnB;;;EAazBqlC,oBAAoB,GAAS;QACvB,KAAKxoC,KAAL,CAAWoF,GAAX,KAAmB,CAAnB,IAAwB,KAAKqjC,qBAAL,EAA5B,EAA0D;;;;UAIpDC,OAAO,GAAG,KAAK1oC,KAAL,CAAWoF,GAAX,GAAiB,CAAjC;UACMM,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsBu0B,OAAtB,CAAb;;QACIhjC,IAAI,MAAJ,IAA4BA,IAAI,MAApC,EAA0D;YAClD,KAAK/H,KAAL,CAAW,KAAKqC,KAAL,CAAWoF,GAAtB,EAA2B,mCAA3B,CAAN;;;QAIA,KAAKgS,SAAL,CAAe,wBAAf,KACA,KAAKA,SAAL,CAAe,qBAAf,CADA,IAEA,KAAKrQ,eAAL,CAAqB,kBAArB,EAAyC,UAAzC,MAAyD,OAH3D,EAIE;WACKqN,QAAL,CAAcnU,KAAE,CAACrL,IAAjB,EAAuB,CAAvB;KALF,MAMO;YACC,KAAK+I,KAAL,CAAW,KAAKqC,KAAL,CAAWoF,GAAtB,EAA2B,0BAA3B,CAAN;;;;EAIJujC,aAAa,GAAS;UACdjjC,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAb;;QACIM,IAAI,MAAJ,IAA4BA,IAAI,MAApC,EAA0D;WACnDkjC,UAAL,CAAgB,IAAhB;;;;QAKAljC,IAAI,OAAJ,IACA,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,QAFF,EAGE;WACKpF,KAAL,CAAWoF,GAAX,IAAkB,CAAlB;WACK6B,WAAL,CAAiBhH,KAAE,CAACzL,QAApB;KALF,MAMO;QACH,KAAKwL,KAAL,CAAWoF,GAAb;WACK6B,WAAL,CAAiBhH,KAAE,CAAC9L,GAApB;;;;EAIJ00C,eAAe,GAAS;QAElB,KAAK7oC,KAAL,CAAW+C,WAAX,IAA0B,CAAC,KAAK/C,KAAL,CAAW2H,MAA1C,EAAkD;QAC9C,KAAK3H,KAAL,CAAWoF,GAAb;WACK0jC,UAAL;;;;UAIIpjC,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAb;;QACIM,IAAI,OAAR,EAAiC;WAC1B0O,QAAL,CAAcnU,KAAE,CAAClL,MAAjB,EAAyB,CAAzB;KADF,MAEO;WACAqf,QAAL,CAAcnU,KAAE,CAACjK,KAAjB,EAAwB,CAAxB;;;;EAIJyyC,qBAAqB,GAAY;QAC3B,KAAKzoC,KAAL,CAAWoF,GAAX,KAAmB,CAAnB,IAAwB,KAAK1H,MAAL,GAAc,CAA1C,EAA6C,OAAO,KAAP;UAEvCd,KAAK,GAAG,KAAKoD,KAAL,CAAWoF,GAAzB;SACKpF,KAAL,CAAWoF,GAAX,IAAkB,CAAlB;QAEI8nB,EAAE,GAAG,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,CAAT;QACI8nB,EAAE,OAAN,EAAsC,OAAO,KAAP;;WAE/B,CAACrrB,SAAS,CAACqrB,EAAD,CAAV,IAAkB,EAAE,KAAKltB,KAAL,CAAWoF,GAAb,GAAmB,KAAK1H,MAAjD,EAAyD;MACvDwvB,EAAE,GAAG,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,CAAL;;;UAGIlJ,KAAK,GAAG,KAAKyH,KAAL,CAAWxG,KAAX,CAAiBP,KAAK,GAAG,CAAzB,EAA4B,KAAKoD,KAAL,CAAWoF,GAAvC,CAAd;SAEK6B,WAAL,CAAiBhH,KAAE,CAACpL,oBAApB,EAA0CqH,KAA1C;WAEO,IAAP;;;EAGFgd,qBAAqB,CAACpX,IAAD,EAAqB;QAEpCxG,IAAI,GAAGwG,IAAI,OAAJ,GAA8B7B,KAAE,CAAClK,IAAjC,GAAwCkK,KAAE,CAACnK,MAAtD;QACIizC,KAAK,GAAG,CAAZ;QACIrjC,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAX;UACMrC,WAAW,GAAG,KAAK/C,KAAL,CAAW+C,WAA/B;;QAGIjB,IAAI,OAAJ,IAA+B4D,IAAI,OAAvC,EAAgE;MAC9DqjC,KAAK;MACLrjC,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAP;MACA9J,IAAI,GAAG2E,KAAE,CAAChK,QAAV;;;QAGEyP,IAAI,OAAJ,IAA+B,CAAC3C,WAApC,EAAiD;MAC/CgmC,KAAK;MACLztC,IAAI,GAAG2E,KAAE,CAAClL,MAAV;;;SAGGqf,QAAL,CAAc9Y,IAAd,EAAoBytC,KAApB;;;EAGF1vB,kBAAkB,CAACvX,IAAD,EAAqB;UAE/B4D,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAb;;QAEIM,IAAI,KAAK5D,IAAb,EAAmB;UACb,KAAK6B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,QAAJ,EAAsE;aAC/DgP,QAAL,CAAcnU,KAAE,CAAClL,MAAjB,EAAyB,CAAzB;OADF,MAEO;aACAqf,QAAL,CACEtS,IAAI,QAAJ,GAAiC7B,KAAE,CAAC5K,SAApC,GAAgD4K,KAAE,CAAC3K,UADrD,EAEE,CAFF;;;;;;QAQAwM,IAAI,QAAR,EAAoC;UAE9B4D,IAAI,OAAR,EAAoC;aAC7B0O,QAAL,CAAcnU,KAAE,CAAC9K,QAAjB,EAA2B,CAA3B;;;;;QAKAuQ,IAAI,OAAR,EAAiC;WAC1B0O,QAAL,CAAcnU,KAAE,CAAClL,MAAjB,EAAyB,CAAzB;;;;SAIGqf,QAAL,CACEtS,IAAI,QAAJ,GAAiC7B,KAAE,CAAC1K,SAApC,GAAgD0K,KAAE,CAACxK,UADrD,EAEE,CAFF;;;EAMFuzC,eAAe,GAAS;UAEhBtjC,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAb;;QACIM,IAAI,OAAR,EAAiC;WAC1B0O,QAAL,CAAcnU,KAAE,CAAClL,MAAjB,EAAyB,CAAzB;KADF,MAEO;WACAqf,QAAL,CAAcnU,KAAE,CAACzK,UAAjB,EAA6B,CAA7B;;;;EAIJyzC,kBAAkB,CAACnnC,IAAD,EAAqB;UAE/B4D,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAb;;QAEIM,IAAI,KAAK5D,IAAb,EAAmB;UAEf4D,IAAI,OAAJ,IACA,CAAC,KAAKpB,QADN,IAEA,KAAKX,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,QAFA,KAGC,KAAKpF,KAAL,CAAW4D,UAAX,KAA0B,CAA1B,IACCjC,SAAS,CAAC+B,IAAV,CACE,KAAKC,KAAL,CAAWxG,KAAX,CAAiB,KAAK6C,KAAL,CAAW4D,UAA5B,EAAwC,KAAK5D,KAAL,CAAWoF,GAAnD,CADF,CAJF,CADF,EAQE;aAEKijC,eAAL,CAAqB,CAArB;aACKL,SAAL;aACK5uB,SAAL;;;;WAGGhF,QAAL,CAAcnU,KAAE,CAACjL,MAAjB,EAAyB,CAAzB;;;;QAIE0Q,IAAI,OAAR,EAAiC;WAC1B0O,QAAL,CAAcnU,KAAE,CAAClL,MAAjB,EAAyB,CAAzB;KADF,MAEO;WACAqf,QAAL,CAAcnU,KAAE,CAACpK,OAAjB,EAA0B,CAA1B;;;;EAIJqzC,eAAe,CAACpnC,IAAD,EAAqB;UAE5B4D,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAb;QACI+jC,IAAI,GAAG,CAAX;;QAEIzjC,IAAI,KAAK5D,IAAb,EAAmB;MACjBqnC,IAAI,GACFrnC,IAAI,OAAJ,IACA,KAAK6B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,QADA,GAEI,CAFJ,GAGI,CAJN;;UAKI,KAAKzB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB+jC,IAAvC,QAAJ,EAAyE;aAClE/0B,QAAL,CAAcnU,KAAE,CAAClL,MAAjB,EAAyBo0C,IAAI,GAAG,CAAhC;;;;WAGG/0B,QAAL,CAAcnU,KAAE,CAACrK,QAAjB,EAA2BuzC,IAA3B;;;;QAKAzjC,IAAI,OAAJ,IACA5D,IAAI,OADJ,IAEA,CAAC,KAAKwC,QAFN,IAGA,KAAKX,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,QAHA,IAIA,KAAKzB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,QALF,EAME;WAEKijC,eAAL,CAAqB,CAArB;WACKL,SAAL;WACK5uB,SAAL;;;;QAIE1T,IAAI,OAAR,EAAiC;MAE/ByjC,IAAI,GAAG,CAAP;;;SAGG/0B,QAAL,CAAcnU,KAAE,CAACtK,UAAjB,EAA6BwzC,IAA7B;;;EAGFC,iBAAiB,CAACtnC,IAAD,EAAqB;UAE9B4D,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAb;;QACIM,IAAI,OAAR,EAAiC;WAC1B0O,QAAL,CACEnU,KAAE,CAACvK,QADL,EAEE,KAAKiO,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,WACI,CADJ,GAEI,CAJN;;;;QAQEtD,IAAI,OAAJ,IAA+B4D,IAAI,OAAvC,EAAmE;WAE5D1F,KAAL,CAAWoF,GAAX,IAAkB,CAAlB;WACK6B,WAAL,CAAiBhH,KAAE,CAAC3L,KAApB;;;;SAGG8f,QAAL,CAActS,IAAI,OAAJ,GAA8B7B,KAAE,CAACnL,EAAjC,GAAsCmL,KAAE,CAAChL,IAAvD,EAA6D,CAA7D;;;EAGFo0C,kBAAkB,GAAS;UAEnB3jC,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAb;UACMkkC,KAAK,GAAG,KAAK3lC,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAd;;QACIM,IAAI,OAAJ,IAAmC,CAAC,KAAK1F,KAAL,CAAW2H,MAAnD,EAA2D;UACrD2hC,KAAK,OAAT,EAAkC;aAE3Bl1B,QAAL,CAAcnU,KAAE,CAAClL,MAAjB,EAAyB,CAAzB;OAFF,MAGO;aAEAqf,QAAL,CAAcnU,KAAE,CAAC7K,iBAAjB,EAAoC,CAApC;;KANJ,MAQO,IACLsQ,IAAI,OAAJ,IACA,EAAE4jC,KAAK,MAAL,IAA6BA,KAAK,MAApC,CAFK,EAGL;WAEKtpC,KAAL,CAAWoF,GAAX,IAAkB,CAAlB;WACK6B,WAAL,CAAiBhH,KAAE,CAAC5L,WAApB;KANK,MAOA;QACH,KAAK2L,KAAL,CAAWoF,GAAb;WACK6B,WAAL,CAAiBhH,KAAE,CAAC7L,QAApB;;;;EAIJ8f,gBAAgB,CAACpS,IAAD,EAAqB;YAC3BA,IAAR;;aAKS6mC,aAAL;;;;UAKE,KAAK3oC,KAAL,CAAWoF,GAAb;aACK6B,WAAL,CAAiBhH,KAAE,CAACpM,MAApB;;;;UAGE,KAAKmM,KAAL,CAAWoF,GAAb;aACK6B,WAAL,CAAiBhH,KAAE,CAACnM,MAApB;;;;UAGE,KAAKkM,KAAL,CAAWoF,GAAb;aACK6B,WAAL,CAAiBhH,KAAE,CAACjM,IAApB;;;;UAGE,KAAKgM,KAAL,CAAWoF,GAAb;aACK6B,WAAL,CAAiBhH,KAAE,CAAClM,KAApB;;;;UAGE,KAAKiM,KAAL,CAAWoF,GAAb;aACK6B,WAAL,CAAiBhH,KAAE,CAAC1M,QAApB;;;;UAGE,KAAKyM,KAAL,CAAWoF,GAAb;aACK6B,WAAL,CAAiBhH,KAAE,CAACzM,QAApB;;;;UAGE,KAAKwM,KAAL,CAAWoF,GAAb;aACK6B,WAAL,CAAiBhH,KAAE,CAACxM,MAApB;;;;UAGE,KAAKuM,KAAL,CAAWoF,GAAb;aACK6B,WAAL,CAAiBhH,KAAE,CAACtM,MAApB;;;;YAKE,KAAKyjB,SAAL,CAAe,cAAf,KACA,KAAKzT,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,QAFF,EAGE;eACKgP,QAAL,CAAcnU,KAAE,CAAC/L,WAAjB,EAA8B,CAA9B;SAJF,MAKO;YACH,KAAK8L,KAAL,CAAWoF,GAAb;eACK6B,WAAL,CAAiBhH,KAAE,CAAChM,KAApB;;;;;;aAKGo1C,kBAAL;;;;UAIE,KAAKrpC,KAAL,CAAWoF,GAAb;aACK6B,WAAL,CAAiBhH,KAAE,CAACxL,SAApB;;;;;gBAIMiR,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAb;;cAEIM,IAAI,QAAJ,IAAiCA,IAAI,OAAzC,EAAoE;iBAC7D6jC,eAAL,CAAqB,EAArB;;;;cAIE7jC,IAAI,QAAJ,IAAiCA,IAAI,OAAzC,EAAoE;iBAC7D6jC,eAAL,CAAqB,CAArB;;;;cAIE7jC,IAAI,OAAJ,IAAiCA,IAAI,OAAzC,EAAoE;iBAC7D6jC,eAAL,CAAqB,CAArB;;;;;;;;;;;;;;aAeGX,UAAL,CAAgB,KAAhB;;;;;aAMKY,UAAL,CAAgB1nC,IAAhB;;;;aASK+mC,eAAL;;;;;aAKK3vB,qBAAL,CAA2BpX,IAA3B;;;;;aAKKuX,kBAAL,CAAwBvX,IAAxB;;;;aAIKknC,eAAL;;;;;aAKKC,kBAAL,CAAwBnnC,IAAxB;;;;;aAKKonC,eAAL,CAAqBpnC,IAArB;;;;;aAKKsnC,iBAAL,CAAuBtnC,IAAvB;;;;aAIKsS,QAAL,CAAcnU,KAAE,CAAC/K,KAAjB,EAAwB,CAAxB;;;;UAIE,KAAK8K,KAAL,CAAWoF,GAAb;aACK6B,WAAL,CAAiBhH,KAAE,CAACtL,EAApB;;;;aAIK6zC,oBAAL;;;;aAIKn0B,QAAL;;;;YAII/O,iBAAiB,CAACxD,IAAD,CAArB,EAA6B;eACtBuS,QAAL;;;;;;UAKA,KAAK1W,KAAL,CACJ,KAAKqC,KAAL,CAAWoF,GADP,EAEH,yBAAwB/I,MAAM,CAACyxB,aAAP,CAAqBhsB,IAArB,CAA2B,GAFhD,CAAN;;;EAMFsS,QAAQ,CAAC9Y,IAAD,EAAkB6tC,IAAlB,EAAsC;UACtCzb,GAAG,GAAG,KAAK/pB,KAAL,CAAWxG,KAAX,CAAiB,KAAK6C,KAAL,CAAWoF,GAA5B,EAAiC,KAAKpF,KAAL,CAAWoF,GAAX,GAAiB+jC,IAAlD,CAAZ;SACKnpC,KAAL,CAAWoF,GAAX,IAAkB+jC,IAAlB;SACKliC,WAAL,CAAiB3L,IAAjB,EAAuBoyB,GAAvB;;;EAGFob,UAAU,GAAS;UACXlsC,KAAK,GAAG,KAAKoD,KAAL,CAAWoF,GAAzB;QACIqkC,OAAJ,EAAahZ,OAAb;;aACS;UACH,KAAKzwB,KAAL,CAAWoF,GAAX,IAAkB,KAAK1H,MAA3B,EAAmC;cAC3B,KAAKC,KAAL,CAAWf,KAAX,EAAkB,iCAAlB,CAAN;;;YAEIswB,EAAE,GAAG,KAAKvpB,KAAL,CAAW+lC,MAAX,CAAkB,KAAK1pC,KAAL,CAAWoF,GAA7B,CAAX;;UACIzD,SAAS,CAAC+B,IAAV,CAAewpB,EAAf,CAAJ,EAAwB;cAChB,KAAKvvB,KAAL,CAAWf,KAAX,EAAkB,iCAAlB,CAAN;;;UAEE6sC,OAAJ,EAAa;QACXA,OAAO,GAAG,KAAV;OADF,MAEO;YACDvc,EAAE,KAAK,GAAX,EAAgB;UACduD,OAAO,GAAG,IAAV;SADF,MAEO,IAAIvD,EAAE,KAAK,GAAP,IAAcuD,OAAlB,EAA2B;UAChCA,OAAO,GAAG,KAAV;SADK,MAEA,IAAIvD,EAAE,KAAK,GAAP,IAAc,CAACuD,OAAnB,EAA4B;;;;QAGnCgZ,OAAO,GAAGvc,EAAE,KAAK,IAAjB;;;QAEA,KAAKltB,KAAL,CAAWoF,GAAb;;;UAEIukC,OAAO,GAAG,KAAKhmC,KAAL,CAAWxG,KAAX,CAAiBP,KAAjB,EAAwB,KAAKoD,KAAL,CAAWoF,GAAnC,CAAhB;MACE,KAAKpF,KAAL,CAAWoF,GAAb;QAEIwkC,IAAI,GAAG,EAAX;;WAEO,KAAK5pC,KAAL,CAAWoF,GAAX,GAAiB,KAAK1H,MAA7B,EAAqC;YAC7BmsC,IAAI,GAAG,KAAKlmC,KAAL,CAAW,KAAK3D,KAAL,CAAWoF,GAAtB,CAAb;YACM0kC,QAAQ,GAAG,KAAKnmC,KAAL,CAAWskC,WAAX,CAAuB,KAAKjoC,KAAL,CAAWoF,GAAlC,CAAjB;;UAEIyhC,iBAAiB,CAACriC,GAAlB,CAAsBqlC,IAAtB,CAAJ,EAAiC;YAC3BD,IAAI,CAAC12B,OAAL,CAAa22B,IAAb,IAAqB,CAAC,CAA1B,EAA6B;eACtBlsC,KAAL,CAAW,KAAKqC,KAAL,CAAWoF,GAAX,GAAiB,CAA5B,EAA+B,mCAA/B;;OAFJ,MAIO,IACLO,gBAAgB,CAACmkC,QAAD,CAAhB,IACAA,QAAQ,OAFH,EAGL;aACKnsC,KAAL,CAAW,KAAKqC,KAAL,CAAWoF,GAAX,GAAiB,CAA5B,EAA+B,iCAA/B;OAJK,MAKA;;;;QAIL,KAAKpF,KAAL,CAAWoF,GAAb;MACAwkC,IAAI,IAAIC,IAAR;;;SAGG5iC,WAAL,CAAiBhH,KAAE,CAAC7M,MAApB,EAA4B;MAC1BuI,OAAO,EAAEguC,OADiB;MAE1B/tC,KAAK,EAAEguC;KAFT;;;EAeFG,OAAO,CACLC,KADK,EAELC,GAFK,EAGLC,QAHK,EAILC,iBAA0B,GAAG,IAJxB,EAKU;UACTvtC,KAAK,GAAG,KAAKoD,KAAL,CAAWoF,GAAzB;UACMglC,iBAAiB,GACrBJ,KAAK,KAAK,EAAV,GACIlD,iCAAiC,CAACE,GADtC,GAEIF,iCAAiC,CAACC,SAHxC;UAIMsD,eAAe,GACnBL,KAAK,KAAK,EAAV,GACI/C,+BAA+B,CAACD,GADpC,GAEIgD,KAAK,KAAK,EAAV,GACA/C,+BAA+B,CAACG,GADhC,GAEA4C,KAAK,KAAK,CAAV,GACA/C,+BAA+B,CAACE,GADhC,GAEAF,+BAA+B,CAACC,GAPtC;QASI/0B,OAAO,GAAG,KAAd;QACIm4B,KAAK,GAAG,CAAZ;;SAEK,IAAIjlC,CAAC,GAAG,CAAR,EAAWtJ,CAAC,GAAGkuC,GAAG,IAAI,IAAP,GAAcM,QAAd,GAAyBN,GAA7C,EAAkD5kC,CAAC,GAAGtJ,CAAtD,EAAyD,EAAEsJ,CAA3D,EAA8D;YACtDvD,IAAI,GAAG,KAAK6B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,CAAb;UACI8B,GAAJ;;UAEI,KAAKkQ,SAAL,CAAe,kBAAf,CAAJ,EAAwC;YAClCtV,IAAI,OAAR,EAAmC;gBAC3B0oC,IAAI,GAAG,KAAK7mC,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAb;gBACMM,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,CAAb;;cACIilC,eAAe,CAACn3B,OAAhB,CAAwBxN,IAAxB,MAAkC,CAAC,CAAvC,EAA0C;iBACnC/H,KAAL,CACE,KAAKqC,KAAL,CAAWoF,GADb,EAEE,wDAFF;WADF,MAKO,IACLglC,iBAAiB,CAACl3B,OAAlB,CAA0Bs3B,IAA1B,IAAkC,CAAC,CAAnC,IACAJ,iBAAiB,CAACl3B,OAAlB,CAA0BxN,IAA1B,IAAkC,CAAC,CADnC,IAEA+kC,MAAM,CAACC,KAAP,CAAahlC,IAAb,CAHK,EAIL;iBACK/H,KAAL,CACE,KAAKqC,KAAL,CAAWoF,GADb,EAEE,wDAFF;;;cAME,CAAC+kC,iBAAL,EAAwB;iBACjBxsC,KAAL,CACE,KAAKqC,KAAL,CAAWoF,GADb,EAEE,4FAFF;;;YAOA,KAAKpF,KAAL,CAAWoF,GAAb;;;;;UAKAtD,IAAI,MAAR,EAAkC;QAChCoF,GAAG,GAAGpF,IAAI,KAAJ,KAAN;OADF,MAEO,IAAIA,IAAI,MAAR,EAAkC;QACvCoF,GAAG,GAAGpF,IAAI,KAAJ,KAAN;OADK,MAEA,IAAI,SAAkBA,IAAlB,CAAJ,EAA6B;QAClCoF,GAAG,GAAGpF,IAAI,KAAV;OADK,MAEA;QACLoF,GAAG,GAAGqjC,QAAN;;;UAEErjC,GAAG,IAAI8iC,KAAX,EAAkB;YAIZ,KAAKn3C,OAAL,CAAaiwC,aAAb,IAA8B57B,GAAG,IAAI,CAAzC,EAA4C;UAC1CA,GAAG,GAAG,CAAN;eACKvJ,KAAL,CACE,KAAKqC,KAAL,CAAWpD,KAAX,GAAmByI,CAAnB,GAAuB,CADzB,EAEE,8BAA8B2kC,KAFhC;SAFF,MAMO,IAAIE,QAAJ,EAAc;UACnBhjC,GAAG,GAAG,CAAN;UACAiL,OAAO,GAAG,IAAV;SAFK,MAGA;;;;;QAIP,KAAKnS,KAAL,CAAWoF,GAAb;MACAklC,KAAK,GAAGA,KAAK,GAAGN,KAAR,GAAgB9iC,GAAxB;;;QAGA,KAAKlH,KAAL,CAAWoF,GAAX,KAAmBxI,KAAnB,IACCqtC,GAAG,IAAI,IAAP,IAAe,KAAKjqC,KAAL,CAAWoF,GAAX,GAAiBxI,KAAjB,KAA2BqtC,GAD3C,IAEA93B,OAHF,EAIE;aACO,IAAP;;;WAGKm4B,KAAP;;;EAGFf,eAAe,CAACS,KAAD,EAAsB;UAC7BptC,KAAK,GAAG,KAAKoD,KAAL,CAAWoF,GAAzB;QACIulC,QAAQ,GAAG,KAAf;SAEK3qC,KAAL,CAAWoF,GAAX,IAAkB,CAAlB;UACM8B,GAAG,GAAG,KAAK6iC,OAAL,CAAaC,KAAb,CAAZ;;QACI9iC,GAAG,IAAI,IAAX,EAAiB;WACVvJ,KAAL,CAAW,KAAKqC,KAAL,CAAWpD,KAAX,GAAmB,CAA9B,EAAiC,8BAA8BotC,KAA/D;;;QAGE,KAAK5yB,SAAL,CAAe,QAAf,CAAJ,EAA8B;UACxB,KAAKzT,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,SAAJ,EAAoE;UAChE,KAAKpF,KAAL,CAAWoF,GAAb;QACAulC,QAAQ,GAAG,IAAX;;;;QAIArlC,iBAAiB,CAAC,KAAK3B,KAAL,CAAWskC,WAAX,CAAuB,KAAKjoC,KAAL,CAAWoF,GAAlC,CAAD,CAArB,EAA+D;YACvD,KAAKzH,KAAL,CAAW,KAAKqC,KAAL,CAAWoF,GAAtB,EAA2B,kCAA3B,CAAN;;;QAGEulC,QAAJ,EAAc;YACNjd,GAAG,GAAG,KAAK/pB,KAAL,CAAWxG,KAAX,CAAiBP,KAAjB,EAAwB,KAAKoD,KAAL,CAAWoF,GAAnC,EAAwCwlC,OAAxC,CAAgD,OAAhD,EAAyD,EAAzD,CAAZ;WACK3jC,WAAL,CAAiBhH,KAAE,CAAC9M,MAApB,EAA4Bu6B,GAA5B;;;;SAIGzmB,WAAL,CAAiBhH,KAAE,CAAC/M,GAApB,EAAyBgU,GAAzB;;;EAKF0hC,UAAU,CAACiC,aAAD,EAA+B;UACjCjuC,KAAK,GAAG,KAAKoD,KAAL,CAAWoF,GAAzB;QACI0lC,OAAO,GAAG,KAAd;QACIH,QAAQ,GAAG,KAAf;QACII,oBAAoB,GAAG,KAA3B;;QAEI,CAACF,aAAD,IAAkB,KAAKd,OAAL,CAAa,EAAb,MAAqB,IAA3C,EAAiD;WAC1CpsC,KAAL,CAAWf,KAAX,EAAkB,gBAAlB;;;QAEEouC,KAAK,GACP,KAAKhrC,KAAL,CAAWoF,GAAX,GAAiBxI,KAAjB,IAA0B,CAA1B,IACA,KAAK+G,KAAL,CAAWwQ,UAAX,CAAsBvX,KAAtB,QAFF;;QAGIouC,KAAJ,EAAW;UACL,KAAKhrC,KAAL,CAAW+D,MAAf,EAAuB;aAChBpG,KAAL,CACEf,KADF,EAEE,sDAFF;;;UAKE,OAAO8G,IAAP,CAAY,KAAKC,KAAL,CAAWxG,KAAX,CAAiBP,KAAjB,EAAwB,KAAKoD,KAAL,CAAWoF,GAAnC,CAAZ,CAAJ,EAA0D;QACxD4lC,KAAK,GAAG,KAAR;QACAD,oBAAoB,GAAG,IAAvB;;;;QAIArlC,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,CAAX;;QACIM,IAAI,OAAJ,IAA0B,CAACslC,KAA/B,EAAsC;QAClC,KAAKhrC,KAAL,CAAWoF,GAAb;WACK2kC,OAAL,CAAa,EAAb;MACAe,OAAO,GAAG,IAAV;MACAplC,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,CAAP;;;QAIA,CAACM,IAAI,OAAJ,IAAiCA,IAAI,QAAtC,KACA,CAACslC,KAFH,EAGE;MACAtlC,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,EAAE,KAAKnU,KAAL,CAAWoF,GAAnC,CAAP;;UACIM,IAAI,OAAJ,IAA+BA,IAAI,OAAvC,EAA4D;UACxD,KAAK1F,KAAL,CAAWoF,GAAb;;;UAEE,KAAK2kC,OAAL,CAAa,EAAb,MAAqB,IAAzB,EAA+B,KAAKpsC,KAAL,CAAWf,KAAX,EAAkB,gBAAlB;MAC/BkuC,OAAO,GAAG,IAAV;MACAplC,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,CAAP;;;QAIE,KAAKgS,SAAL,CAAe,kBAAf,MAAuC4zB,KAAK,IAAID,oBAAhD,CAAJ,EAA2E;YACnEE,aAAa,GAAG,KAAKtnC,KAAL,CACnBxG,KADmB,CACbP,KADa,EACN,KAAKoD,KAAL,CAAWoF,GADL,EAEnB8N,OAFmB,CAEX,GAFW,CAAtB;;UAGI+3B,aAAa,GAAG,CAApB,EAAuB;aAChBttC,KAAL,CACEstC,aAAa,GAAGruC,KADlB,EAEE,mDAFF;;;;QAOA,KAAKwa,SAAL,CAAe,QAAf,CAAJ,EAA8B;UACxB1R,IAAI,QAAR,EAAmC;YAG7BolC,OAAO,IAAIE,KAAX,IAAoBD,oBAAxB,EAA8C;eACvCptC,KAAL,CAAWf,KAAX,EAAkB,uBAAlB;;;UAEA,KAAKoD,KAAL,CAAWoF,GAAb;QACAulC,QAAQ,GAAG,IAAX;;;;QAIArlC,iBAAiB,CAAC,KAAK3B,KAAL,CAAWskC,WAAX,CAAuB,KAAKjoC,KAAL,CAAWoF,GAAlC,CAAD,CAArB,EAA+D;YACvD,KAAKzH,KAAL,CAAW,KAAKqC,KAAL,CAAWoF,GAAtB,EAA2B,kCAA3B,CAAN;;;UAIIsoB,GAAG,GAAG,KAAK/pB,KAAL,CAAWxG,KAAX,CAAiBP,KAAjB,EAAwB,KAAKoD,KAAL,CAAWoF,GAAnC,EAAwCwlC,OAAxC,CAAgD,OAAhD,EAAyD,EAAzD,CAAZ;;QAEID,QAAJ,EAAc;WACP1jC,WAAL,CAAiBhH,KAAE,CAAC9M,MAApB,EAA4Bu6B,GAA5B;;;;UAIIxmB,GAAG,GAAG8jC,KAAK,GAAGjd,QAAQ,CAACL,GAAD,EAAM,CAAN,CAAX,GAAsBwd,UAAU,CAACxd,GAAD,CAAjD;SACKzmB,WAAL,CAAiBhH,KAAE,CAAC/M,GAApB,EAAyBgU,GAAzB;;;EAKFikC,aAAa,CAACC,cAAD,EAAyC;UAC9Cle,EAAE,GAAG,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,CAAX;QACItD,IAAJ;;QAEIorB,EAAE,QAAN,EAAqC;YAC7Bme,OAAO,GAAG,EAAE,KAAKrrC,KAAL,CAAWoF,GAA7B;MACAtD,IAAI,GAAG,KAAKwpC,WAAL,CACL,KAAK3nC,KAAL,CAAWuP,OAAX,CAAmB,GAAnB,EAAwB,KAAKlT,KAAL,CAAWoF,GAAnC,IAA0C,KAAKpF,KAAL,CAAWoF,GADhD,EAEL,IAFK,EAGLgmC,cAHK,CAAP;QAKE,KAAKprC,KAAL,CAAWoF,GAAb;;UACItD,IAAI,KAAK,IAAT,IAAiBA,IAAI,GAAG,QAA5B,EAAsC;YAChCspC,cAAJ,EAAoB;eACbztC,KAAL,CAAW0tC,OAAX,EAAoB,0BAApB;SADF,MAEO;iBACE,IAAP;;;KAZN,MAeO;MACLvpC,IAAI,GAAG,KAAKwpC,WAAL,CAAiB,CAAjB,EAAoB,KAApB,EAA2BF,cAA3B,CAAP;;;WAEKtpC,IAAP;;;EAGF0nC,UAAU,CAAC/b,KAAD,EAAsB;QAC1BzqB,GAAG,GAAG,EAAV;QACEiqB,UAAU,GAAG,EAAE,KAAKjtB,KAAL,CAAWoF,GAD5B;;aAES;UACH,KAAKpF,KAAL,CAAWoF,GAAX,IAAkB,KAAK1H,MAA3B,EAAmC;cAC3B,KAAKC,KAAL,CAAW,KAAKqC,KAAL,CAAWpD,KAAtB,EAA6B,8BAA7B,CAAN;;;YAEIswB,EAAE,GAAG,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,CAAX;UACI8nB,EAAE,KAAKO,KAAX,EAAkB;;UACdP,EAAE,OAAN,EAAgC;QAC9BlqB,GAAG,IAAI,KAAKW,KAAL,CAAWxG,KAAX,CAAiB8vB,UAAjB,EAA6B,KAAKjtB,KAAL,CAAWoF,GAAxC,CAAP;QAEApC,GAAG,IAAI,KAAKuoC,eAAL,CAAqB,KAArB,CAAP;QACAte,UAAU,GAAG,KAAKjtB,KAAL,CAAWoF,GAAxB;OAJF,MAKO,IACL8nB,EAAE,SAAF,IACAA,EAAE,SAFG,EAGL;UACE,KAAKltB,KAAL,CAAWoF,GAAb;UACE,KAAKpF,KAAL,CAAWstB,OAAb;aACKttB,KAAL,CAAWutB,SAAX,GAAuB,KAAKvtB,KAAL,CAAWoF,GAAlC;OANK,MAOA,IAAIvD,SAAS,CAACqrB,EAAD,CAAb,EAAmB;cAClB,KAAKvvB,KAAL,CAAW,KAAKqC,KAAL,CAAWpD,KAAtB,EAA6B,8BAA7B,CAAN;OADK,MAEA;UACH,KAAKoD,KAAL,CAAWoF,GAAb;;;;IAGJpC,GAAG,IAAI,KAAKW,KAAL,CAAWxG,KAAX,CAAiB8vB,UAAjB,EAA6B,KAAKjtB,KAAL,CAAWoF,GAAX,EAA7B,CAAP;SACK6B,WAAL,CAAiBhH,KAAE,CAAC5M,MAApB,EAA4B2P,GAA5B;;;EAKFL,aAAa,GAAS;QAChBK,GAAG,GAAG,EAAV;QACEiqB,UAAU,GAAG,KAAKjtB,KAAL,CAAWoF,GAD1B;QAEEomC,eAAe,GAAG,KAFpB;;aAGS;UACH,KAAKxrC,KAAL,CAAWoF,GAAX,IAAkB,KAAK1H,MAA3B,EAAmC;cAC3B,KAAKC,KAAL,CAAW,KAAKqC,KAAL,CAAWpD,KAAtB,EAA6B,uBAA7B,CAAN;;;YAEIswB,EAAE,GAAG,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,CAAX;;UAEE8nB,EAAE,OAAF,IACCA,EAAE,OAAF,IACC,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAX,GAAiB,CAAvC,SAHJ,EAKE;YACI,KAAKpF,KAAL,CAAWoF,GAAX,KAAmB,KAAKpF,KAAL,CAAWpD,KAA9B,IAAuC,KAAK6L,KAAL,CAAWxI,KAAE,CAAC1L,QAAd,CAA3C,EAAoE;cAC9D24B,EAAE,OAAN,EAAiC;iBAC1BltB,KAAL,CAAWoF,GAAX,IAAkB,CAAlB;iBACK6B,WAAL,CAAiBhH,KAAE,CAACvL,YAApB;;WAFF,MAIO;cACH,KAAKsL,KAAL,CAAWoF,GAAb;iBACK6B,WAAL,CAAiBhH,KAAE,CAACxL,SAApB;;;;;QAIJuO,GAAG,IAAI,KAAKW,KAAL,CAAWxG,KAAX,CAAiB8vB,UAAjB,EAA6B,KAAKjtB,KAAL,CAAWoF,GAAxC,CAAP;aACK6B,WAAL,CAAiBhH,KAAE,CAAC1L,QAApB,EAA8Bi3C,eAAe,GAAG,IAAH,GAAUxoC,GAAvD;;;;UAGEkqB,EAAE,OAAN,EAAgC;QAC9BlqB,GAAG,IAAI,KAAKW,KAAL,CAAWxG,KAAX,CAAiB8vB,UAAjB,EAA6B,KAAKjtB,KAAL,CAAWoF,GAAxC,CAAP;cACMqkC,OAAO,GAAG,KAAK8B,eAAL,CAAqB,IAArB,CAAhB;;YACI9B,OAAO,KAAK,IAAhB,EAAsB;UACpB+B,eAAe,GAAG,IAAlB;SADF,MAEO;UACLxoC,GAAG,IAAIymC,OAAP;;;QAEFxc,UAAU,GAAG,KAAKjtB,KAAL,CAAWoF,GAAxB;OARF,MASO,IAAIvD,SAAS,CAACqrB,EAAD,CAAb,EAAmB;QACxBlqB,GAAG,IAAI,KAAKW,KAAL,CAAWxG,KAAX,CAAiB8vB,UAAjB,EAA6B,KAAKjtB,KAAL,CAAWoF,GAAxC,CAAP;UACE,KAAKpF,KAAL,CAAWoF,GAAb;;gBACQ8nB,EAAR;;gBAEQ,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,QAAJ,EAAkE;gBAC9D,KAAKpF,KAAL,CAAWoF,GAAb;;;;YAGFpC,GAAG,IAAI,IAAP;;;;YAGAA,GAAG,IAAI3G,MAAM,CAACkJ,YAAP,CAAoB2nB,EAApB,CAAP;;;;UAGF,KAAKltB,KAAL,CAAWstB,OAAb;aACKttB,KAAL,CAAWutB,SAAX,GAAuB,KAAKvtB,KAAL,CAAWoF,GAAlC;QACA6nB,UAAU,GAAG,KAAKjtB,KAAL,CAAWoF,GAAxB;OAjBK,MAkBA;UACH,KAAKpF,KAAL,CAAWoF,GAAb;;;;;EAONmmC,eAAe,CAACE,UAAD,EAAqC;UAC5CL,cAAc,GAAG,CAACK,UAAxB;UACMve,EAAE,GAAG,KAAKvpB,KAAL,CAAWwQ,UAAX,CAAsB,EAAE,KAAKnU,KAAL,CAAWoF,GAAnC,CAAX;MACE,KAAKpF,KAAL,CAAWoF,GAAb;;YACQ8nB,EAAR;;eAEW,IAAP;;;eAEO,IAAP;;;;gBAEMprB,IAAI,GAAG,KAAKwpC,WAAL,CAAiB,CAAjB,EAAoB,KAApB,EAA2BF,cAA3B,CAAb;iBACOtpC,IAAI,KAAK,IAAT,GAAgB,IAAhB,GAAuBzF,MAAM,CAACkJ,YAAP,CAAoBzD,IAApB,CAA9B;;;;;gBAGMA,IAAI,GAAG,KAAKqpC,aAAL,CAAmBC,cAAnB,CAAb;iBACOtpC,IAAI,KAAK,IAAT,GAAgB,IAAhB,GAAuBzF,MAAM,CAACyxB,aAAP,CAAqBhsB,IAArB,CAA9B;;;;eAGO,IAAP;;;eAEO,IAAP;;;eAEO,QAAP;;;eAEO,IAAP;;;YAEI,KAAK6B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,QAAJ,EAAkE;YAC9D,KAAKpF,KAAL,CAAWoF,GAAb;;;;aAGGpF,KAAL,CAAWutB,SAAX,GAAuB,KAAKvtB,KAAL,CAAWoF,GAAlC;UACE,KAAKpF,KAAL,CAAWstB,OAAb;;;;eAGO,EAAP;;;;YAGIme,UAAJ,EAAgB;iBACP,IAAP;;;;YAGEve,EAAE,MAAF,IAA0BA,EAAE,MAAhC,EAAsD;gBAC9Cme,OAAO,GAAG,KAAKrrC,KAAL,CAAWoF,GAAX,GAAiB,CAAjC;cAEIsmC,QAAQ,GAAG,KAAK/nC,KAAL,CACZkqB,MADY,CACL,KAAK7tB,KAAL,CAAWoF,GAAX,GAAiB,CADZ,EACe,CADf,EAEZqD,KAFY,CAEN,SAFM,EAEK,CAFL,CAAf;cAGIuiC,KAAK,GAAGjd,QAAQ,CAAC2d,QAAD,EAAW,CAAX,CAApB;;cACIV,KAAK,GAAG,GAAZ,EAAiB;YACfU,QAAQ,GAAGA,QAAQ,CAACvuC,KAAT,CAAe,CAAf,EAAkB,CAAC,CAAnB,CAAX;YACA6tC,KAAK,GAAGjd,QAAQ,CAAC2d,QAAD,EAAW,CAAX,CAAhB;;;eAEG1rC,KAAL,CAAWoF,GAAX,IAAkBsmC,QAAQ,CAAChuC,MAAT,GAAkB,CAApC;gBACMgI,IAAI,GAAG,KAAK/B,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAWoF,GAAjC,CAAb;;cAEEsmC,QAAQ,KAAK,GAAb,IACAhmC,IAAI,OADJ,IAEAA,IAAI,OAHN,EAIE;gBACI+lC,UAAJ,EAAgB;qBACP,IAAP;aADF,MAEO,IAAI,KAAKzrC,KAAL,CAAW+D,MAAf,EAAuB;mBACvBpG,KAAL,CAAW0tC,OAAX,EAAoB,8BAApB;aADK,MAEA,IAAI,CAAC,KAAKrrC,KAAL,CAAWsmC,aAAhB,EAA+B;mBAG/BtmC,KAAL,CAAWsmC,aAAX,GAA2B,IAA3B;mBACKtmC,KAAL,CAAWumC,aAAX,GAA2B8E,OAA3B;;;;iBAIGhvC,MAAM,CAACkJ,YAAP,CAAoBylC,KAApB,CAAP;;;eAGK3uC,MAAM,CAACkJ,YAAP,CAAoB2nB,EAApB,CAAP;;;;EAMNoe,WAAW,CACTrB,GADS,EAETC,QAFS,EAGTkB,cAHS,EAIM;UACTC,OAAO,GAAG,KAAKrrC,KAAL,CAAWoF,GAA3B;UACMumC,CAAC,GAAG,KAAK5B,OAAL,CAAa,EAAb,EAAiBE,GAAjB,EAAsBC,QAAtB,EAAgC,KAAhC,CAAV;;QACIyB,CAAC,KAAK,IAAV,EAAgB;UACVP,cAAJ,EAAoB;aACbztC,KAAL,CAAW0tC,OAAX,EAAoB,+BAApB;OADF,MAEO;aACArrC,KAAL,CAAWoF,GAAX,GAAiBimC,OAAO,GAAG,CAA3B;;;;WAGGM,CAAP;;;EASFC,SAAS,GAAW;QACdvnC,IAAI,GAAG,EAAX;SACKrE,KAAL,CAAWc,WAAX,GAAyB,KAAzB;UACMlE,KAAK,GAAG,KAAKoD,KAAL,CAAWoF,GAAzB;QACI6nB,UAAU,GAAG,KAAKjtB,KAAL,CAAWoF,GAA5B;;WAEO,KAAKpF,KAAL,CAAWoF,GAAX,GAAiB,KAAK1H,MAA7B,EAAqC;YAC7BwvB,EAAE,GAAG,KAAKvpB,KAAL,CAAWskC,WAAX,CAAuB,KAAKjoC,KAAL,CAAWoF,GAAlC,CAAX;;UACIO,gBAAgB,CAACunB,EAAD,CAApB,EAA0B;aACnBltB,KAAL,CAAWoF,GAAX,IAAkB8nB,EAAE,IAAI,MAAN,GAAe,CAAf,GAAmB,CAArC;OADF,MAEO,IAAI,KAAKltB,KAAL,CAAWuD,UAAX,IAAyB2pB,EAAE,OAA/B,EAAsD;UACzD,KAAKltB,KAAL,CAAWoF,GAAb;OADK,MAEA,IAAI8nB,EAAE,OAAN,EAAgC;aAChCltB,KAAL,CAAWc,WAAX,GAAyB,IAAzB;QAEAuD,IAAI,IAAI,KAAKV,KAAL,CAAWxG,KAAX,CAAiB8vB,UAAjB,EAA6B,KAAKjtB,KAAL,CAAWoF,GAAxC,CAAR;cACMymC,QAAQ,GAAG,KAAK7rC,KAAL,CAAWoF,GAA5B;cACM0mC,eAAe,GACnB,KAAK9rC,KAAL,CAAWoF,GAAX,KAAmBxI,KAAnB,GAA2B0I,iBAA3B,GAA+CK,gBADjD;;YAGI,KAAKhC,KAAL,CAAWwQ,UAAX,CAAsB,EAAE,KAAKnU,KAAL,CAAWoF,GAAnC,SAAJ,EAAsE;eAC/DzH,KAAL,CACE,KAAKqC,KAAL,CAAWoF,GADb,EAEE,2CAFF;;;;UAOA,KAAKpF,KAAL,CAAWoF,GAAb;cACM2mC,GAAG,GAAG,KAAKZ,aAAL,CAAmB,IAAnB,CAAZ;;YACIY,GAAG,KAAK,IAAZ,EAAkB;cACZ,CAACD,eAAe,CAACC,GAAD,CAApB,EAA2B;iBACpBpuC,KAAL,CAAWkuC,QAAX,EAAqB,wBAArB;;;UAGFxnC,IAAI,IAAIhI,MAAM,CAACyxB,aAAP,CAAqBie,GAArB,CAAR;;;QAEF9e,UAAU,GAAG,KAAKjtB,KAAL,CAAWoF,GAAxB;OAzBK,MA0BA;;;;;WAIFf,IAAI,GAAG,KAAKV,KAAL,CAAWxG,KAAX,CAAiB8vB,UAAjB,EAA6B,KAAKjtB,KAAL,CAAWoF,GAAxC,CAAd;;;EAGF7B,UAAU,CAACc,IAAD,EAAwB;WACzBA,IAAI,KAAK,YAAT,IAAyBA,IAAI,KAAK,iBAAzC;;;EAMFgQ,QAAQ,GAAS;UACThQ,IAAI,GAAG,KAAKunC,SAAL,EAAb;UACMtwC,IAAI,GAAG0wC,QAAY,CAACrI,GAAb,CAAiBt/B,IAAjB,KAA0BpE,KAAE,CAACrN,IAA1C;;QAIE,KAAKoN,KAAL,CAAWuD,UAAX,KACC,CAAC,KAAKA,UAAL,CAAgBc,IAAhB,CAAD,IAA0B,CAAC,KAAKrE,KAAL,CAAW2H,MADvC,CADF,EAGE;WACKhK,KAAL,CAAW,KAAKqC,KAAL,CAAWoF,GAAtB,EAA4B,sBAAqBf,IAAK,EAAtD;;;SAGG4C,WAAL,CAAiB3L,IAAjB,EAAuB+I,IAAvB;;;EAGFmjC,mBAAmB,GAAS;UACpBpP,EAAE,GAAG,KAAKp4B,KAAL,CAAW1E,IAAX,CAAgBjJ,OAA3B;;QACI+lC,EAAE,IAAI,KAAKp4B,KAAL,CAAWc,WAArB,EAAkC;WAC3BnD,KAAL,CAAW,KAAKqC,KAAL,CAAWpD,KAAtB,EAA8B,8BAA6Bw7B,EAAG,EAA9D;;;;EAIJ50B,YAAY,CAACL,QAAD,EAA+B;UACnC8oC,MAAM,GAAG,KAAK/oC,UAAL,EAAf;;QACI+oC,MAAM,KAAKnN,OAAE,CAACl8B,kBAAd,IAAoCqpC,MAAM,KAAKnN,OAAE,CAACj8B,iBAAtD,EAAyE;aAChE,IAAP;;;QAGAM,QAAQ,KAAKlD,KAAE,CAAChM,KAAhB,KACCg4C,MAAM,KAAKnN,OAAE,CAACz8B,cAAd,IAAgC4pC,MAAM,KAAKnN,OAAE,CAACx8B,eAD/C,CADF,EAGE;aACO,CAAC2pC,MAAM,CAAC/pC,MAAf;;;QAOAiB,QAAQ,KAAKlD,KAAE,CAACnJ,OAAhB,IACCqM,QAAQ,KAAKlD,KAAE,CAACrN,IAAhB,IAAwB,KAAKoN,KAAL,CAAW+C,WAFtC,EAGE;aACOpB,SAAS,CAAC+B,IAAV,CACL,KAAKC,KAAL,CAAWxG,KAAX,CAAiB,KAAK6C,KAAL,CAAW4D,UAA5B,EAAwC,KAAK5D,KAAL,CAAWpD,KAAnD,CADK,CAAP;;;QAMAuG,QAAQ,KAAKlD,KAAE,CAACxJ,KAAhB,IACA0M,QAAQ,KAAKlD,KAAE,CAACjM,IADhB,IAEAmP,QAAQ,KAAKlD,KAAE,CAAC3M,GAFhB,IAGA6P,QAAQ,KAAKlD,KAAE,CAACnM,MAHhB,IAIAqP,QAAQ,KAAKlD,KAAE,CAAC3L,KALlB,EAME;aACO,IAAP;;;QAGE6O,QAAQ,KAAKlD,KAAE,CAACxM,MAApB,EAA4B;aACnBw4C,MAAM,KAAKnN,OAAE,CAACz8B,cAArB;;;QAIAc,QAAQ,KAAKlD,KAAE,CAAC/I,IAAhB,IACAiM,QAAQ,KAAKlD,KAAE,CAAC9I,MADhB,IAEAgM,QAAQ,KAAKlD,KAAE,CAACrN,IAHlB,EAIE;aACO,KAAP;;;QAGEuQ,QAAQ,KAAKlD,KAAE,CAACtK,UAApB,EAAgC;aAEvB,IAAP;;;WAGK,CAAC,KAAKqK,KAAL,CAAW+C,WAAnB;;;EAGFvQ,aAAa,CAAC2Q,QAAD,EAA4B;UACjC7H,IAAI,GAAG,KAAK0E,KAAL,CAAW1E,IAAxB;QACI4wC,MAAJ;;QAEI5wC,IAAI,CAACjJ,OAAL,KAAiB8Q,QAAQ,KAAKlD,KAAE,CAAC9L,GAAhB,IAAuBgP,QAAQ,KAAKlD,KAAE,CAAC5L,WAAxD,CAAJ,EAA0E;WACnE2L,KAAL,CAAW+C,WAAX,GAAyB,KAAzB;KADF,MAEO,IAAKmpC,MAAM,GAAG5wC,IAAI,CAAC9I,aAAnB,EAAmC;MACxC05C,MAAM,CAACl1B,IAAP,CAAY,IAAZ,EAAkB7T,QAAlB;KADK,MAEA;WACAnD,KAAL,CAAW+C,WAAX,GAAyBzH,IAAI,CAAC3J,UAA9B;;;;;;AC/7CN,MAAMspB,OAAO,GAAG,sBAAhB;AAYA,AAAe,MAAMkxB,UAAN,SAAyB7E,SAAzB,CAAmC;EAGhD8E,QAAQ,CAAC/wC,IAAD,EAAaoD,GAAb,EAA0ByI,GAA1B,EAA0C;QAC5C,CAAC7L,IAAL,EAAW;UAEL2B,KAAK,GAAI3B,IAAI,CAAC2B,KAAL,GAAa3B,IAAI,CAAC2B,KAAL,IAAc,EAA1C;IACAA,KAAK,CAACyB,GAAD,CAAL,GAAayI,GAAb;;;EAKF+B,YAAY,CAACojC,EAAD,EAAyB;WAC5B,KAAK5jC,KAAL,CAAWxI,KAAE,CAACtK,UAAd,KAA6B,KAAKqK,KAAL,CAAW9D,KAAX,KAAqBmwC,EAAzD;;;EAGF1zB,qBAAqB,CAAC0zB,EAAD,EAAyB;UACtC3mC,IAAI,GAAG,KAAKiiC,cAAL,EAAb;;QACI,KAAKhkC,KAAL,CAAW+lC,MAAX,CAAkBhkC,IAAlB,MAA4B2mC,EAAhC,EAAoC;UAC9B3mC,IAAI,GAAG,CAAP,KAAa,KAAK/B,KAAL,CAAWjG,MAA5B,EAAoC;eAC3B,IAAP;;;YAEI4uC,SAAS,GAAG,KAAK3oC,KAAL,CAAWwQ,UAAX,CAAsBzO,IAAI,GAAG,CAA7B,CAAlB;aACO4mC,SAAS,KAAKD,EAAE,CAACl4B,UAAH,CAAc,CAAd,CAAd,IAAkCm4B,SAAS,OAAlD;;;WAEK,KAAP;;;EAKF/+B,gBAAgB,CAAC8+B,EAAD,EAAsB;QAChC,KAAKpjC,YAAL,CAAkBojC,EAAlB,CAAJ,EAA2B;WACpB3mC,IAAL;KADF,MAEO;WACA4E,UAAL,CAAgB,IAAhB,EAAsBrK,KAAE,CAACtK,UAAzB;;;;EAMJsU,YAAY,CAACrX,IAAD,EAAwB;WAEhC,KAAK6V,KAAL,CAAWxI,KAAE,CAACrN,IAAd,KACA,KAAKoN,KAAL,CAAW9D,KAAX,KAAqBtJ,IADrB,IAEA,CAAC,KAAKoN,KAAL,CAAWc,WAHd;;;EAOFyrC,oBAAoB,CAACC,SAAD,EAAoB55C,IAApB,EAA2C;UACvD65C,OAAO,GAAGD,SAAS,GAAG55C,IAAI,CAAC8K,MAAjC;WAEE,KAAKiG,KAAL,CAAWxG,KAAX,CAAiBqvC,SAAjB,EAA4BC,OAA5B,MAAyC75C,IAAzC,KACC65C,OAAO,KAAK,KAAK9oC,KAAL,CAAWjG,MAAvB,IACC,CAACiI,gBAAgB,CAAC,KAAKhC,KAAL,CAAWwQ,UAAX,CAAsBs4B,OAAtB,CAAD,CAFnB,CADF;;;EAOFp2B,qBAAqB,CAACzjB,IAAD,EAAwB;UACrC8S,IAAI,GAAG,KAAKiiC,cAAL,EAAb;WACO,KAAK4E,oBAAL,CAA0B7mC,IAA1B,EAAgC9S,IAAhC,CAAP;;;EAKFiX,aAAa,CAACjX,IAAD,EAAwB;WAC5B,KAAKqX,YAAL,CAAkBrX,IAAlB,KAA2B,KAAKyV,GAAL,CAASpI,KAAE,CAACrN,IAAZ,CAAlC;;;EAKFsV,gBAAgB,CAACtV,IAAD,EAAe8nB,OAAf,EAAuC;QACjD,CAAC,KAAK7Q,aAAL,CAAmBjX,IAAnB,CAAL,EAA+B,KAAK0X,UAAL,CAAgB,IAAhB,EAAsBoQ,OAAtB;;;EAKjCvK,kBAAkB,GAAY;WAE1B,KAAK1H,KAAL,CAAWxI,KAAE,CAAC3M,GAAd,KACA,KAAKmV,KAAL,CAAWxI,KAAE,CAACtM,MAAd,CADA,IAEA,KAAKw+B,qBAAL,EAHF;;;EAOFA,qBAAqB,GAAY;WACxBxwB,SAAS,CAAC+B,IAAV,CACL,KAAKC,KAAL,CAAWxG,KAAX,CAAiB,KAAK6C,KAAL,CAAW4D,UAA5B,EAAwC,KAAK5D,KAAL,CAAWpD,KAAnD,CADK,CAAP;;;EAOFi/B,gBAAgB,GAAY;WACnB,KAAKxzB,GAAL,CAASpI,KAAE,CAACjM,IAAZ,KAAqB,KAAKmc,kBAAL,EAA5B;;;EAMF1G,SAAS,GAAS;QACZ,CAAC,KAAKoyB,gBAAL,EAAL,EAA8B,KAAKvxB,UAAL,CAAgB,IAAhB,EAAsBrK,KAAE,CAACjM,IAAzB;;;EAMhC4T,MAAM,CAACtM,IAAD,EAAkB8J,GAAlB,EAAuC;SACtCiD,GAAL,CAAS/M,IAAT,KAAkB,KAAKgP,UAAL,CAAgBlF,GAAhB,EAAqB9J,IAArB,CAAlB;;;EAIFqkC,aAAa,CAACjlB,OAAe,GAAG,mBAAnB,EAA8C;QACrD,KAAK1a,KAAL,CAAWpD,KAAX,GAAmB,KAAKoD,KAAL,CAAW4D,UAAlC,EAA8C;WACvCjG,KAAL,CAAW,KAAKqC,KAAL,CAAW4D,UAAtB,EAAkC8W,OAAlC;;;;EAOJpQ,UAAU,CACRlF,GADQ,EAERsnC,aAAiC,GAAG,kBAF5B,EAGD;QACH,OAAOA,aAAP,KAAyB,QAA7B,EAAuC;MACrCA,aAAa,GAAI,+BAA8BA,aAAa,CAACv6C,KAAM,GAAnE;;;UAEI,KAAKwL,KAAL,CAAWyH,GAAG,IAAI,IAAP,GAAcA,GAAd,GAAoB,KAAKpF,KAAL,CAAWpD,KAA1C,EAAiD8vC,aAAjD,CAAN;;;EAGFvM,YAAY,CAACvtC,IAAD,EAAewS,GAAf,EAAoC;QAC1C,CAAC,KAAKgS,SAAL,CAAexkB,IAAf,CAAL,EAA2B;YACnB,KAAK+K,KAAL,CACJyH,GAAG,IAAI,IAAP,GAAcA,GAAd,GAAoB,KAAKpF,KAAL,CAAWpD,KAD3B,EAEH,kEAAiEhK,IAAK,GAFnE,EAGJ;QAAEsyC,kBAAkB,EAAE,CAACtyC,IAAD;OAHlB,CAAN;;;WAOK,IAAP;;;EAGF+5C,eAAe,CAACC,KAAD,EAAuBxnC,GAAvB,EAA4C;QACrD,CAACwnC,KAAK,CAAC5L,IAAN,CAAW2K,CAAC,IAAI,KAAKv0B,SAAL,CAAeu0B,CAAf,CAAhB,CAAL,EAAyC;YACjC,KAAKhuC,KAAL,CACJyH,GAAG,IAAI,IAAP,GAAcA,GAAd,GAAoB,KAAKpF,KAAL,CAAWpD,KAD3B,EAEH,sFAAqFgwC,KAAK,CAACpL,IAAN,CACpF,IADoF,CAEpF,GAJE,EAKJ;QAAE0D,kBAAkB,EAAE0H;OALlB,CAAN;;;;EAUJC,8BAA8B,GAAG;QAE7B,KAAK7sC,KAAL,CAAWmmC,QAAX,KAAwB,CAAC,CAAzB,KACC,KAAKnmC,KAAL,CAAWomC,QAAX,KAAwB,CAAC,CAAzB,IAA8B,KAAKpmC,KAAL,CAAWmmC,QAAX,GAAsB,KAAKnmC,KAAL,CAAWomC,QADhE,CADF,EAGE;WACKzoC,KAAL,CACE,KAAKqC,KAAL,CAAWmmC,QADb,EAEE,0DAFF;;;QAKE,KAAKnmC,KAAL,CAAWomC,QAAX,KAAwB,CAAC,CAA7B,EAAgC;WACzBzoC,KAAL,CACE,KAAKqC,KAAL,CAAWomC,QADb,EAEE,uDAFF;;;;EAOJ0G,eAAe,CAAClwC,KAAD,EAAyB;aAC7B;MAEPmF,cAAc,CAACuhC,SAAf,GAA2B1mC,KAA3B;MAEAA,KAAK,IAAImF,cAAc,CAACuF,IAAf,CAAoB,KAAK3D,KAAzB,EAAgC,CAAhC,EAAmCjG,MAA5C;YACM+K,KAAK,GAAGwS,OAAO,CAAC3T,IAAR,CAAa,KAAK3D,KAAL,CAAWxG,KAAX,CAAiBP,KAAjB,CAAb,CAAd;UACI,CAAC6L,KAAL,EAAY;UACRA,KAAK,CAAC,CAAD,CAAL,KAAa,YAAjB,EAA+B,OAAO,IAAP;MAC/B7L,KAAK,IAAI6L,KAAK,CAAC,CAAD,CAAL,CAAS/K,MAAlB;MAGAqE,cAAc,CAACuhC,SAAf,GAA2B1mC,KAA3B;MAEAA,KAAK,IAAImF,cAAc,CAACuF,IAAf,CAAoB,KAAK3D,KAAzB,EAAgC,CAAhC,EAAmCjG,MAA5C;;UACI,KAAKiG,KAAL,CAAW/G,KAAX,MAAsB,GAA1B,EAA+B;QAC7BA,KAAK;;;;WAIF,KAAP;;;EAKF6U,QAAQ,CACNs7B,EADM,EAENC,QAAe,GAAG,KAAKhtC,KAAL,CAAW4R,KAAX,EAFZ,EAMyC;UACzCq7B,WAA+B,GAAG;MAAE5xC,IAAI,EAAE;KAAhD;;QACI;YACIA,IAAI,GAAG0xC,EAAE,CAAC,CAAC1xC,IAAI,GAAG,IAAR,KAAiB;QAC/B4xC,WAAW,CAAC5xC,IAAZ,GAAmBA,IAAnB;cACM4xC,WAAN;OAFa,CAAf;;UAII,KAAKjtC,KAAL,CAAWulC,MAAX,CAAkB7nC,MAAlB,GAA2BsvC,QAAQ,CAACzH,MAAT,CAAgB7nC,MAA/C,EAAuD;cAC/CiU,SAAS,GAAG,KAAK3R,KAAvB;aACKA,KAAL,GAAagtC,QAAb;eACO;UACL3xC,IADK;UAELqW,KAAK,EAAGC,SAAS,CAAC4zB,MAAV,CAAiByH,QAAQ,CAACzH,MAAT,CAAgB7nC,MAAjC,CAFH;UAGLga,MAAM,EAAE,KAHH;UAILc,OAAO,EAAE,KAJJ;UAKL7G;SALF;;;aASK;QACLtW,IADK;QAELqW,KAAK,EAAE,IAFF;QAGLgG,MAAM,EAAE,KAHH;QAILc,OAAO,EAAE,KAJJ;QAKL7G,SAAS,EAAE;OALb;KAjBF,CAwBE,OAAOD,KAAP,EAAc;YACRC,SAAS,GAAG,KAAK3R,KAAvB;WACKA,KAAL,GAAagtC,QAAb;;UACIt7B,KAAK,YAAY0zB,WAArB,EAAkC;eACzB;UAAE/pC,IAAI,EAAE,IAAR;UAAcqW,KAAd;UAAqBgG,MAAM,EAAE,IAA7B;UAAmCc,OAAO,EAAE,KAA5C;UAAmD7G;SAA1D;;;UAEED,KAAK,KAAKu7B,WAAd,EAA2B;eAClB;UACL5xC,IAAI,EAAE4xC,WAAW,CAAC5xC,IADb;UAELqW,KAAK,EAAE,IAFF;UAGLgG,MAAM,EAAE,KAHH;UAILc,OAAO,EAAE,IAJJ;UAKL7G;SALF;;;YASID,KAAN;;;;EAIJw7B,qBAAqB,CACnB5uC,mBADmB,EAEnB6uC,QAFmB,EAGnB;QACI,CAAC7uC,mBAAL,EAA0B,OAAO,KAAP;UACpB;MAAE8uC,eAAF;MAAmBzuC;QAAgBL,mBAAzC;QACI,CAAC6uC,QAAL,EAAe,OAAOC,eAAe,IAAI,CAAnB,IAAwBzuC,WAAW,IAAI,CAA9C;;QACXyuC,eAAe,IAAI,CAAvB,EAA0B;WACnB9iC,UAAL,CAAgB8iC,eAAhB;;;QAEEzuC,WAAW,IAAI,CAAnB,EAAsB;WACfhB,KAAL,CAAWgB,WAAX,EAAwB,oCAAxB;;;;;AAgBN,AAAO,MAAM0uC,gBAAN,CAAuB;;SAC5BD,eAD4B,GACV,CAAC,CADS;SAE5BzuC,WAF4B,GAEd,CAAC,CAFa;;;;;ACjS9B,MAAM2uC,IAAN,CAA+B;EAC7Bp7C,WAAW,CAACq7C,MAAD,EAAiBnoC,GAAjB,EAA8BvI,GAA9B,EAA6C;SACjDvB,IAAL,GAAY,EAAZ;SACKsB,KAAL,GAAawI,GAAb;SACKlI,GAAL,GAAW,CAAX;SACKL,GAAL,GAAW,IAAIsmC,cAAJ,CAAmBtmC,GAAnB,CAAX;QACI0wC,MAAM,IAAIA,MAAM,CAAC16C,OAAP,CAAe8vC,MAA7B,EAAqC,KAAK6K,KAAL,GAAa,CAACpoC,GAAD,EAAM,CAAN,CAAb;QACjCmoC,MAAM,IAAIA,MAAM,CAAC1J,QAArB,EAA+B,KAAKhnC,GAAL,CAASgnC,QAAT,GAAoB0J,MAAM,CAAC1J,QAA3B;;;EAajCrtB,OAAO,GAAS;UAER6X,OAAY,GAAG,IAAIif,IAAJ,EAArB;UACMtL,IAAI,GAAGrP,MAAM,CAACqP,IAAP,CAAY,IAAZ,CAAb;;SACK,IAAI38B,CAAC,GAAG,CAAR,EAAW3H,MAAM,GAAGskC,IAAI,CAACtkC,MAA9B,EAAsC2H,CAAC,GAAG3H,MAA1C,EAAkD2H,CAAC,EAAnD,EAAuD;YAC/C5G,GAAG,GAAGujC,IAAI,CAAC38B,CAAD,CAAhB;;UAGE5G,GAAG,KAAK,iBAAR,IACAA,GAAG,KAAK,kBADR,IAEAA,GAAG,KAAK,eAHV,EAIE;QAEA4vB,OAAO,CAAC5vB,GAAD,CAAP,GAAe,KAAKA,GAAL,CAAf;;;;WAIG4vB,OAAP;;;;;AAIJ,AAAO,MAAMof,SAAN,SAAwBtB,UAAxB,CAAmC;EACxCzrC,SAAS,GAAmB;WAEnB,IAAI4sC,IAAJ,CAAS,IAAT,EAAe,KAAKttC,KAAL,CAAWpD,KAA1B,EAAiC,KAAKoD,KAAL,CAAWG,QAA5C,CAAP;;;EAGFxD,WAAW,CAAcyI,GAAd,EAA2BvI,GAA3B,EAA6C;WAE/C,IAAIywC,IAAJ,CAAS,IAAT,EAAeloC,GAAf,EAAoBvI,GAApB,CAAP;;;EAIF+2B,eAAe,CAAct4B,IAAd,EAAiC;WACvC,KAAKqB,WAAL,CAAiBrB,IAAI,CAACsB,KAAtB,EAA6BtB,IAAI,CAACuB,GAAL,CAASD,KAAtC,CAAP;;;EAKF+D,UAAU,CAActF,IAAd,EAAuBC,IAAvB,EAAwC;WACzC,KAAK2B,YAAL,CACL5B,IADK,EAELC,IAFK,EAGL,KAAK0E,KAAL,CAAW4D,UAHN,EAIL,KAAK5D,KAAL,CAAWyuB,aAJN,CAAP;;;EAUFxxB,YAAY,CACV5B,IADU,EAEVC,IAFU,EAGV8J,GAHU,EAIVvI,GAJU,EAKP;AACH;IAMAxB,IAAI,CAACC,IAAL,GAAYA,IAAZ;IACAD,IAAI,CAAC6B,GAAL,GAAWkI,GAAX;IACA/J,IAAI,CAACwB,GAAL,CAASK,GAAT,GAAeL,GAAf;QACI,KAAKhK,OAAL,CAAa8vC,MAAjB,EAAyBtnC,IAAI,CAACmyC,KAAL,CAAW,CAAX,IAAgBpoC,GAAhB;SACpBo/B,cAAL,CAAoBnpC,IAApB;WACOA,IAAP;;;EAGFojC,kBAAkB,CAACpjC,IAAD,EAAiBuB,KAAjB,EAAgCuD,QAAhC,EAA0D;IAC1E9E,IAAI,CAACuB,KAAL,GAAaA,KAAb;IACAvB,IAAI,CAACwB,GAAL,CAASD,KAAT,GAAiBuD,QAAjB;QACI,KAAKtN,OAAL,CAAa8vC,MAAjB,EAAyBtnC,IAAI,CAACmyC,KAAL,CAAW,CAAX,IAAgB5wC,KAAhB;;;EAG3B4M,gBAAgB,CACdnO,IADc,EAEd6B,GAAY,GAAG,KAAK8C,KAAL,CAAW4D,UAFZ,EAGdqhC,MAAiB,GAAG,KAAKjlC,KAAL,CAAWyuB,aAHjB,EAIR;IACNpzB,IAAI,CAAC6B,GAAL,GAAWA,GAAX;IACA7B,IAAI,CAACwB,GAAL,CAASK,GAAT,GAAe+nC,MAAf;QACI,KAAKpyC,OAAL,CAAa8vC,MAAjB,EAAyBtnC,IAAI,CAACmyC,KAAL,CAAW,CAAX,IAAgBtwC,GAAhB;;;EAM3Bua,0BAA0B,CAACpc,IAAD,EAAiBqyC,YAAjB,EAA+C;SAClEjP,kBAAL,CAAwBpjC,IAAxB,EAA8BqyC,YAAY,CAAC9wC,KAA3C,EAAkD8wC,YAAY,CAAC7wC,GAAb,CAAiBD,KAAnE;;;;;AC9FJ,MAAM+wC,6BAA6B,GAAItyC,IAAD,IAAgB;SAC7CA,IAAI,CAACC,IAAL,KAAc,yBAAd,GACHqyC,6BAA6B,CAACtyC,IAAI,CAACyB,UAAN,CAD1B,GAEHzB,IAFJ;CADF;;AAMA,AAAe,MAAMuyC,UAAN,SAAyBH,SAAzB,CAAmC;EAqBhDzsC,YAAY,CAAC3F,IAAD,EAAmB;;;QACzBwD,aAAa,GAAGgI,SAApB;;QACIxL,IAAI,CAACC,IAAL,KAAc,yBAAd,oBAA2CD,IAAI,CAAC2B,KAAhD,qBAA2C,YAAY6B,aAAvD,CAAJ,EAA0E;MACxEA,aAAa,GAAG8uC,6BAA6B,CAACtyC,IAAD,CAA7C;;UAEEwD,aAAa,CAACvD,IAAd,KAAuB,YAAvB,IACAuD,aAAa,CAACvD,IAAd,KAAuB,kBAFzB,EAGE;aACKqC,KAAL,CAAWtC,IAAI,CAACuB,KAAhB,EAAuB,0CAAvB;;;;YAIIvB,IAAI,CAACC,IAAb;WACO,YAAL;WACK,eAAL;WACK,cAAL;WACK,mBAAL;;;WAGK,kBAAL;QACED,IAAI,CAACC,IAAL,GAAY,eAAZ;;aAEE,IAAI+J,CAAC,GAAG,CAAR,EAAW3H,MAAM,GAAGrC,IAAI,CAAC6C,UAAL,CAAgBR,MAApC,EAA4C6W,IAAI,GAAG7W,MAAM,GAAG,CAD9D,EAEE2H,CAAC,GAAG3H,MAFN,EAGE2H,CAAC,EAHH,EAIE;;;gBACM9H,IAAI,GAAGlC,IAAI,CAAC6C,UAAL,CAAgBmH,CAAhB,CAAb;gBACMnE,MAAM,GAAGmE,CAAC,KAAKkP,IAArB;eACKtT,gCAAL,CAAsC1D,IAAtC,EAA4C2D,MAA5C;;cAGEA,MAAM,IACN3D,IAAI,CAACjC,IAAL,KAAc,aADd,qBAEAD,IAAI,CAAC2B,KAFL,qBAEA,aAAY+V,aAFZ,CADF,EAIE;iBACKgkB,gBAAL,CAAsB17B,IAAI,CAAC2B,KAAL,CAAW+V,aAAjC;;;;;;WAKD,gBAAL;aACO/R,YAAL,CAAkB3F,IAAI,CAACa,KAAvB;;;WAGG,eAAL;;eACO2xC,qBAAL,CAA2BxyC,IAA3B;UAEAA,IAAI,CAACC,IAAL,GAAY,aAAZ;gBACMwyC,GAAG,GAAGzyC,IAAI,CAAC8T,QAAjB;eACKnO,YAAL,CAAkB8sC,GAAlB;;;;WAIG,iBAAL;QACEzyC,IAAI,CAACC,IAAL,GAAY,cAAZ;aACKwX,gBAAL,CAAsBzX,IAAI,CAACmZ,QAA3B,kBAAqCnZ,IAAI,CAAC2B,KAA1C,qBAAqC,aAAY+V,aAAjD;;;WAGG,sBAAL;YACM1X,IAAI,CAACqZ,QAAL,KAAkB,GAAtB,EAA2B;eACpB/W,KAAL,CACEtC,IAAI,CAACsa,IAAL,CAAUzY,GADZ,EAEE,6DAFF;;;QAMF7B,IAAI,CAACC,IAAL,GAAY,mBAAZ;eACOD,IAAI,CAACqZ,QAAZ;aACK1T,YAAL,CAAkB3F,IAAI,CAACsa,IAAvB;;;WAGG,yBAAL;aACO3U,YAAL,CAAoBnC,aAApB;;AA5DJ;;WAmEOxD,IAAP;;;EAGF4F,gCAAgC,CAAC1D,IAAD,EAAa2D,MAAb,EAA8B;QACxD3D,IAAI,CAACjC,IAAL,KAAc,cAAlB,EAAkC;YAC1BoW,KAAK,GACTnU,IAAI,CAAChC,IAAL,KAAc,KAAd,IAAuBgC,IAAI,CAAChC,IAAL,KAAc,KAArC,GACI,+CADJ,GAEI,sCAHN;WAKKoC,KAAL,CAAWJ,IAAI,CAACkB,GAAL,CAAS7B,KAApB,EAA2B8U,KAA3B;KANF,MAOO,IAAInU,IAAI,CAACjC,IAAL,KAAc,eAAd,IAAiC,CAAC4F,MAAtC,EAA8C;WAC9C61B,gBAAL,CAAsBx5B,IAAI,CAACX,KAA3B;KADK,MAEA;WACAoE,YAAL,CAAkBzD,IAAlB;;;;EAMJuV,gBAAgB,CACdrR,QADc,EAEdkT,gBAFc,EAGW;QACrBzX,GAAG,GAAGuE,QAAQ,CAAC/D,MAAnB;;QACIR,GAAJ,EAAS;YACDqX,IAAI,GAAG9S,QAAQ,CAACvE,GAAG,GAAG,CAAP,CAArB;;UACIqX,IAAI,IAAIA,IAAI,CAACjZ,IAAL,KAAc,aAA1B,EAAyC;UACrC4B,GAAF;OADF,MAEO,IAAIqX,IAAI,IAAIA,IAAI,CAACjZ,IAAL,KAAc,eAA1B,EAA2C;QAChDiZ,IAAI,CAACjZ,IAAL,GAAY,aAAZ;cACMwyC,GAAG,GAAGv5B,IAAI,CAACpF,QAAjB;aACKnO,YAAL,CAAkB8sC,GAAlB;;YAEEA,GAAG,CAACxyC,IAAJ,KAAa,YAAb,IACAwyC,GAAG,CAACxyC,IAAJ,KAAa,kBADb,IAEAwyC,GAAG,CAACxyC,IAAJ,KAAa,cAFb,IAGAwyC,GAAG,CAACxyC,IAAJ,KAAa,eAJf,EAKE;eACKgP,UAAL,CAAgBwjC,GAAG,CAAClxC,KAApB;;;YAGE+X,gBAAJ,EAAsB;eACfo5B,2BAAL,CAAiCp5B,gBAAjC;;;UAGAzX,GAAF;;;;SAGC,IAAImI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGnI,GAApB,EAAyBmI,CAAC,EAA1B,EAA8B;YACtB23B,GAAG,GAAGv7B,QAAQ,CAAC4D,CAAD,CAApB;;UACI23B,GAAJ,EAAS;aACFh8B,YAAL,CAAkBg8B,GAAlB;;YACIA,GAAG,CAAC1hC,IAAJ,KAAa,aAAjB,EAAgC;eACzBy7B,gBAAL,CAAsBiG,GAAG,CAACpgC,KAA1B;;;;;WAIC6E,QAAP;;;EAKFmT,gBAAgB,CACdnT,QADc,EAEdC,mBAFc,EAGe;WACtBD,QAAP;;;EAGFD,oBAAoB,CAClBC,QADkB,EAElBC,mBAFkB,EAGZ;SACDkT,gBAAL,CAAsBnT,QAAtB,EAAgCC,mBAAhC;;0BAEmBD,QAHb,eAGuB;YAAlB5D,IAAI,GAAI4D,QAAJ,IAAV;;UACC5D,IAAI,IAAIA,IAAI,CAACvC,IAAL,KAAc,iBAA1B,EAA6C;aACtCkG,oBAAL,CAA0B3D,IAAI,CAAC2W,QAA/B;;;;;EAONw5B,WAAW,CACT1vC,mBADS,EAETiT,gBAFS,EAGM;UACTlW,IAAI,GAAG,KAAKqF,SAAL,EAAb;SACKgF,IAAL;IACArK,IAAI,CAAC8T,QAAL,GAAgB,KAAKmD,gBAAL,CACd,KADc,EAEdhU,mBAFc,EAGduI,SAHc,EAId0K,gBAJc,CAAhB;WAMO,KAAK5Q,UAAL,CAAgBtF,IAAhB,EAAsB,eAAtB,CAAP;;;EAGF4yC,gBAAgB,GAAgB;UACxB5yC,IAAI,GAAG,KAAKqF,SAAL,EAAb;SACKgF,IAAL;IACArK,IAAI,CAAC8T,QAAL,GAAgB,KAAK4vB,gBAAL,EAAhB;WACO,KAAKp+B,UAAL,CAAgBtF,IAAhB,EAAsB,aAAtB,CAAP;;;EAIF0jC,gBAAgB,GAAY;YAClB,KAAK/+B,KAAL,CAAW1E,IAAnB;WACO2E,KAAE,CAAC1M,QAAR;;gBACQ8H,IAAI,GAAG,KAAKqF,SAAL,EAAb;eACKgF,IAAL;UACArK,IAAI,CAACmZ,QAAL,GAAgB,KAAK4gB,gBAAL,CACdn1B,KAAE,CAACzM,QADW,MAGd,IAHc,CAAhB;iBAKO,KAAKmN,UAAL,CAAgBtF,IAAhB,EAAsB,cAAtB,CAAP;;;WAGG4E,KAAE,CAACxM,MAAR;eACS,KAAKy6C,QAAL,CAAc,IAAd,CAAP;;;WAGG,KAAKplC,eAAL,EAAP;;;EAGFssB,gBAAgB,CACd+Y,KADc,EAEdC,aAFc,EAGdC,UAHc,EAIdx3B,cAJc,EAKiC;UACzCy3B,IAA0C,GAAG,EAAnD;QACIC,KAAK,GAAG,IAAZ;;WACO,CAAC,KAAKlmC,GAAL,CAAS8lC,KAAT,CAAR,EAAyB;UACnBI,KAAJ,EAAW;QACTA,KAAK,GAAG,KAAR;OADF,MAEO;aACA3mC,MAAL,CAAY3H,KAAE,CAAClM,KAAf;;;UAEEs6C,UAAU,IAAI,KAAK5lC,KAAL,CAAWxI,KAAE,CAAClM,KAAd,CAAlB,EAAwC;QAEtCu6C,IAAI,CAACxuC,IAAL,CAAU,IAAV;OAFF,MAGO,IAAI,KAAKuI,GAAL,CAAS8lC,KAAT,CAAJ,EAAqB;;OAArB,MAEA,IAAI,KAAK1lC,KAAL,CAAWxI,KAAE,CAACzL,QAAd,CAAJ,EAA6B;QAClC85C,IAAI,CAACxuC,IAAL,CAAU,KAAK2V,4BAAL,CAAkC,KAAKw4B,gBAAL,EAAlC,CAAV;aACKO,mBAAL,CAAyBJ,aAAzB;aACKxmC,MAAL,CAAYumC,KAAZ;;OAHK,MAKA;cACCtR,UAAU,GAAG,EAAnB;;YACI,KAAKp0B,KAAL,CAAWxI,KAAE,CAACtL,EAAd,KAAqB,KAAKyiB,SAAL,CAAe,YAAf,CAAzB,EAAuD;eAChDzZ,KAAL,CACE,KAAKqC,KAAL,CAAWpD,KADb,EAEE,0DAFF;;;eAKK,KAAK6L,KAAL,CAAWxI,KAAE,CAACtL,EAAd,CAAP,EAA0B;UACxBkoC,UAAU,CAAC/8B,IAAX,CAAgB,KAAK2uC,cAAL,EAAhB;;;QAEFH,IAAI,CAACxuC,IAAL,CAAU,KAAK88B,uBAAL,CAA6B/lB,cAA7B,EAA6CgmB,UAA7C,CAAV;;;;WAGGyR,IAAP;;;EAGF1R,uBAAuB,CACrB/lB,cADqB,EAErBgmB,UAFqB,EAGU;UACzBlnB,IAAI,GAAG,KAAKD,iBAAL,EAAb;SACKD,4BAAL,CAAkCE,IAAlC;UACMqnB,GAAG,GAAG,KAAKtnB,iBAAL,CAAuBC,IAAI,CAAC/Y,KAA5B,EAAmC+Y,IAAI,CAAC9Y,GAAL,CAASD,KAA5C,EAAmD+Y,IAAnD,CAAZ;;QACIknB,UAAU,CAACn/B,MAAf,EAAuB;MACrBiY,IAAI,CAACknB,UAAL,GAAkBA,UAAlB;;;WAEKG,GAAP;;;EAGFvnB,4BAA4B,CAAClF,KAAD,EAA0B;WAC7CA,KAAP;;;EAKFmF,iBAAiB,CACfxV,QADe,EAEfC,QAFe,EAGfwV,IAHe,EAIN;IACTxV,QAAQ,GAAGA,QAAQ,IAAI,KAAKH,KAAL,CAAWG,QAAlC;IACAD,QAAQ,GAAGA,QAAQ,IAAI,KAAKF,KAAL,CAAWpD,KAAlC;IACA+Y,IAAI,GAAGA,IAAI,IAAI,KAAKopB,gBAAL,EAAf;QACI,CAAC,KAAK12B,GAAL,CAASpI,KAAE,CAACnL,EAAZ,CAAL,EAAsB,OAAO6gB,IAAP;UAEhBta,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;IACA9E,IAAI,CAACsa,IAAL,GAAYA,IAAZ;IACAta,IAAI,CAACoR,KAAL,GAAa,KAAK6F,gBAAL,EAAb;WACO,KAAK3R,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;;;EAMFuC,SAAS,CACPC,IADO,EAEPC,WAAyB,GAAGvD,SAFrB,EAGPwD,YAHO,EAIPC,kBAJO,EAKPC,kBALO,EAMPywC,iBAA2B,GAAG,KANvB,EAOD;YACE7wC,IAAI,CAACvC,IAAb;WACO,YAAL;YAEI,KAAK0E,KAAL,CAAW+D,MAAX,KAIC2qC,iBAAiB,GACdhqC,wBAAwB,CAAC7G,IAAI,CAACjL,IAAN,EAAY,KAAK0R,QAAjB,CADV,GAEdG,4BAA4B,CAAC5G,IAAI,CAACjL,IAAN,CANhC,CADF,EAQE;eACK+K,KAAL,CACEE,IAAI,CAACjB,KADP,EAEG,GAAEkB,WAAW,KAAKvD,SAAhB,GAA4B,cAA5B,GAA6C,SAAU,KACxDsD,IAAI,CAACjL,IACN,kBAJH;;;YAQEmL,YAAJ,EAAkB;gBAYVU,GAAG,GAAI,IAAGZ,IAAI,CAACjL,IAAK,EAA1B;;cAEImL,YAAY,CAACU,GAAD,CAAhB,EAAuB;iBAChBd,KAAL,CAAWE,IAAI,CAACjB,KAAhB,EAAuB,qBAAvB;WADF,MAEO;YACLmB,YAAY,CAACU,GAAD,CAAZ,GAAoB,IAApB;;;;YAGAR,kBAAkB,IAAIJ,IAAI,CAACjL,IAAL,KAAc,KAAxC,EAA+C;eACxC+K,KAAL,CACEE,IAAI,CAACjB,KADP,EAEE,6EAFF;;;YAKE,EAAEkB,WAAW,GAAGvD,SAAhB,CAAJ,EAAgC;eACzB8I,KAAL,CAAWmH,WAAX,CAAuB3M,IAAI,CAACjL,IAA5B,EAAkCkL,WAAlC,EAA+CD,IAAI,CAACjB,KAApD;;;;;WAIC,kBAAL;YACMkB,WAAW,KAAKvD,SAApB,EAA+B;eACxBoD,KAAL,CAAWE,IAAI,CAACjB,KAAhB,EAAuB,2BAAvB;;;;;WAIC,eAAL;6CACmBiB,IAAI,CAACK,UADxB,wCACoC;cAAzBX,IAAI,wBAAR;cACCA,IAAI,CAACjC,IAAL,KAAc,gBAAlB,EAAoCiC,IAAI,GAAGA,IAAI,CAACrB,KAAZ,CAApC,KAIK,IAAIqB,IAAI,CAACjC,IAAL,KAAc,cAAlB,EAAkC;eAElCsC,SAAL,CACEL,IADF,EAEEO,WAFF,EAGEC,YAHF,EAIE,8BAJF,EAKEE,kBALF;;;;;WAUC,cAAL;2CACqBJ,IAAI,CAAC2W,QAD1B,sCACoC;gBAAvBm6B,IAAI,sBAAV;;cACCA,IAAJ,EAAU;iBACH/wC,SAAL,CACE+wC,IADF,EAEE7wC,WAFF,EAGEC,YAHF,EAIE,6BAJF,EAKEE,kBALF;;;;;;WAWD,mBAAL;aACOL,SAAL,CACEC,IAAI,CAAC8X,IADP,EAEE7X,WAFF,EAGEC,YAHF,EAIE,oBAJF;;;WAQG,aAAL;aACOH,SAAL,CACEC,IAAI,CAACsR,QADP,EAEErR,WAFF,EAGEC,YAHF,EAIE,cAJF;;;WAQG,yBAAL;aACOH,SAAL,CACEC,IAAI,CAACf,UADP,EAEEgB,WAFF,EAGEC,YAHF,EAIE,0BAJF;;;;;gBASM2c,OAAO,GACX,CAAC5c,WAAW,KAAKvD,SAAhB,GACG,SADH,GAE8B,iBAF/B,IAGA,iBAHA,IAICyD,kBAAkB,GACf,SAASA,kBADM,GAEY,YAN/B,CADF;eAQKL,KAAL,CAAWE,IAAI,CAACjB,KAAhB,EAAuB8d,OAAvB;;;;;EAKNmzB,qBAAqB,CAACxyC,IAAD,EAA4B;QAE7CA,IAAI,CAAC8T,QAAL,CAAc7T,IAAd,KAAuB,YAAvB,IACAD,IAAI,CAAC8T,QAAL,CAAc7T,IAAd,KAAuB,kBAFzB,EAGE;WACKqC,KAAL,CAAWtC,IAAI,CAAC8T,QAAL,CAAcvS,KAAzB,EAAgC,kCAAhC;;;;EAIJ4xC,mBAAmB,CAACL,KAAD,EAAyC;QACtD,KAAK1lC,KAAL,CAAWxI,KAAE,CAAClM,KAAd,CAAJ,EAA0B;UACpB,KAAK+iC,iBAAL,OAA6BqX,KAAjC,EAAwC;aACjCJ,2BAAL,CAAiC,KAAK/tC,KAAL,CAAWpD,KAA5C;OADF,MAEO;aACAm6B,gBAAL,CAAsB,KAAK/2B,KAAL,CAAWpD,KAAjC;;;;;EAKNm6B,gBAAgB,CAAC3xB,GAAD,EAAc;UACtB,KAAKzH,KAAL,CAAWyH,GAAX,EAAiB,mCAAjB,CAAN;;;EAGF2oC,2BAA2B,CAAC3oC,GAAD,EAAc;SAClCzH,KAAL,CAAWyH,GAAX,EAAiB,8CAAjB;;;;;ACtcW,MAAMwpC,gBAAN,SAA+BhB,UAA/B,CAA0C;EAyBvDxvC,oBAAoB,CAClBb,IADkB,EAElBc,QAFkB,EAGlBC,mBAHkB,EAIZ;QAEJf,IAAI,CAACjC,IAAL,KAAc,eAAd,IACAiC,IAAI,CAACgB,QADL,IAEAhB,IAAI,CAAChC,IAFL,IAIAgC,IAAI,CAACiB,SALP,EAME;;;;UAIIC,GAAG,GAAGlB,IAAI,CAACkB,GAAjB;UAEM7L,IAAI,GAAG6L,GAAG,CAACnD,IAAJ,KAAa,YAAb,GAA4BmD,GAAG,CAAC7L,IAAhC,GAAuCyJ,MAAM,CAACoC,GAAG,CAACvC,KAAL,CAA1D;;QAEItJ,IAAI,KAAK,WAAb,EAA0B;UACpByL,QAAQ,CAACK,IAAb,EAAmB;YACbJ,mBAAJ,EAAyB;cAGnBA,mBAAmB,CAACK,WAApB,KAAoC,CAAC,CAAzC,EAA4C;YAC1CL,mBAAmB,CAACK,WAApB,GAAkCF,GAAG,CAAC7B,KAAtC;;SAJJ,MAMO;eACAe,KAAL,CAAWc,GAAG,CAAC7B,KAAf,EAAsB,oCAAtB;;;;MAIJyB,QAAQ,CAACK,IAAT,GAAgB,IAAhB;;;;EAKJmwC,aAAa,GAAiB;QACxBC,UAAU,GAAGx2C,aAAjB;;QACI,KAAK8e,SAAL,CAAe,eAAf,KAAmC,KAAK9S,QAA5C,EAAsD;MACpDwqC,UAAU,IAAIt2C,WAAd;;;SAEG6K,KAAL,CAAWoH,KAAX,CAAiBqkC,UAAjB;SACK11B,SAAL;UACMvb,IAAI,GAAG,KAAKyK,eAAL,EAAb;;QACI,CAAC,KAAKG,KAAL,CAAWxI,KAAE,CAAC3M,GAAd,CAAL,EAAyB;WAClBgX,UAAL;;;IAEFzM,IAAI,CAACwoC,QAAL,GAAgB,KAAKrmC,KAAL,CAAWqmC,QAA3B;IACAxoC,IAAI,CAAC0nC,MAAL,GAAc,KAAKvlC,KAAL,CAAWulC,MAAzB;WACO1nC,IAAP;;;EAkBFyK,eAAe,CACbgJ,IADa,EAEbhT,mBAFa,EAGC;UACR4B,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;UACMtC,IAAI,GAAG,KAAKyU,gBAAL,CAAsBhB,IAAtB,EAA4BhT,mBAA5B,CAAb;;QACI,KAAKmK,KAAL,CAAWxI,KAAE,CAAClM,KAAd,CAAJ,EAA0B;YAClBsH,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;MACA9E,IAAI,CAACk8B,WAAL,GAAmB,CAAC15B,IAAD,CAAnB;;aACO,KAAKwK,GAAL,CAASpI,KAAE,CAAClM,KAAZ,CAAP,EAA2B;QACzBsH,IAAI,CAACk8B,WAAL,CAAiBz3B,IAAjB,CAAsB,KAAKwS,gBAAL,CAAsBhB,IAAtB,EAA4BhT,mBAA5B,CAAtB;;;WAEGsW,gBAAL,CAAsBvZ,IAAI,CAACk8B,WAA3B;aACO,KAAK52B,UAAL,CAAgBtF,IAAhB,EAAsB,oBAAtB,CAAP;;;WAEKwC,IAAP;;;EAMFyU,gBAAgB,CACdhB,IADc,EAEdhT,mBAFc,EAGd4Y,cAHc,EAId3F,gBAJc,EAKA;UACRrR,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;;QACI,KAAK8J,YAAL,CAAkB,OAAlB,CAAJ,EAAgC;UAC1B,KAAK5G,KAAL,CAAWC,WAAf,EAA4B;YACtBqS,IAAI,GAAG,KAAKo5B,UAAL,CAAgBz9B,IAAhB,CAAX;;YACI4F,cAAJ,EAAoB;UAClBvB,IAAI,GAAGuB,cAAc,CAACF,IAAf,CAAoB,IAApB,EAA0BrB,IAA1B,EAAgCzV,QAAhC,EAA0CC,QAA1C,CAAP;;;eAEKwV,IAAP;OALF,MAMO;aAGA3V,KAAL,CAAW+C,WAAX,GAAyB,KAAzB;;;;QAIAisC,mBAAJ;;QACI1wC,mBAAJ,EAAyB;MACvB0wC,mBAAmB,GAAG,KAAtB;KADF,MAEO;MACL1wC,mBAAmB,GAAG,IAAI+uC,gBAAJ,EAAtB;MACA2B,mBAAmB,GAAG,IAAtB;;;QAGE,KAAKvmC,KAAL,CAAWxI,KAAE,CAACpM,MAAd,KAAyB,KAAK4U,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAA7B,EAAkD;WAC3CoN,KAAL,CAAWylC,gBAAX,GAA8B,KAAKzlC,KAAL,CAAWpD,KAAzC;;;QAGE+Y,IAAI,GAAG,KAAKs5B,qBAAL,CACT39B,IADS,EAEThT,mBAFS,EAGTiT,gBAHS,CAAX;;QAKI2F,cAAJ,EAAoB;MAClBvB,IAAI,GAAGuB,cAAc,CAACF,IAAf,CAAoB,IAApB,EAA0BrB,IAA1B,EAAgCzV,QAAhC,EAA0CC,QAA1C,CAAP;;;QAEE,KAAKH,KAAL,CAAW1E,IAAX,CAAgBxJ,QAApB,EAA8B;YACtBuJ,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;YACMuU,QAAQ,GAAG,KAAK1U,KAAL,CAAW9D,KAA5B;MACAb,IAAI,CAACqZ,QAAL,GAAgBA,QAAhB;;UAEIA,QAAQ,KAAK,KAAjB,EAAwB;aACjByrB,YAAL,CAAkB,mBAAlB;;;UAEEzrB,QAAQ,KAAK,KAAb,IAAsBA,QAAQ,KAAK,KAAvC,EAA8C;aACvCyrB,YAAL,CAAkB,mBAAlB;;;UAEE,KAAK13B,KAAL,CAAWxI,KAAE,CAACnL,EAAd,CAAJ,EAAuB;QACrBuG,IAAI,CAACsa,IAAL,GAAY,KAAK3U,YAAL,CAAkB2U,IAAlB,CAAZ;QACArX,mBAAmB,CAACK,WAApB,GAAkC,CAAC,CAAnC;OAFF,MAGO;QACLtD,IAAI,CAACsa,IAAL,GAAYA,IAAZ;;;UAGErX,mBAAmB,CAAC8uC,eAApB,IAAuC/xC,IAAI,CAACsa,IAAL,CAAU/Y,KAArD,EAA4D;QAC1D0B,mBAAmB,CAAC8uC,eAApB,GAAsC,CAAC,CAAvC;;;WAGGxvC,SAAL,CAAe+X,IAAf,EAAqB9O,SAArB,EAAgCA,SAAhC,EAA2C,uBAA3C;WAEKnB,IAAL;MACArK,IAAI,CAACoR,KAAL,GAAa,KAAK6F,gBAAL,CAAsBhB,IAAtB,CAAb;aACO,KAAK3Q,UAAL,CAAgBtF,IAAhB,EAAsB,sBAAtB,CAAP;KA1BF,MA2BO,IAAI2zC,mBAAJ,EAAyB;WACzB9B,qBAAL,CAA2B5uC,mBAA3B,EAAgD,IAAhD;;;WAGKqX,IAAP;;;EAKFs5B,qBAAqB,CACnB39B,IADmB,EAEnBhT,mBAFmB,EAGnBiT,gBAHmB,EAIL;UACRrR,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;UACMslC,gBAAgB,GAAG,KAAKzlC,KAAL,CAAWylC,gBAApC;UACM5nC,IAAI,GAAG,KAAKqxC,YAAL,CAAkB59B,IAAlB,EAAwBhT,mBAAxB,CAAb;;QAGET,IAAI,CAACvC,IAAL,KAAc,yBAAd,IACAuC,IAAI,CAACjB,KAAL,KAAe6oC,gBAFjB,EAGE;aACO5nC,IAAP;;;QAEE,KAAKqvC,qBAAL,CAA2B5uC,mBAA3B,EAAgD,KAAhD,CAAJ,EAA4D,OAAOT,IAAP;WAErD,KAAKwT,gBAAL,CACLxT,IADK,EAELyT,IAFK,EAGLpR,QAHK,EAILC,QAJK,EAKLoR,gBALK,CAAP;;;EASFF,gBAAgB,CACdxT,IADc,EAEdyT,IAFc,EAGdpR,QAHc,EAIdC,QAJc,EAOdoR,gBAPc,EAQA;QACV,KAAKlJ,GAAL,CAASpI,KAAE,CAAC7L,QAAZ,CAAJ,EAA2B;YACnBiH,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;MACA9E,IAAI,CAACqI,IAAL,GAAY7F,IAAZ;MACAxC,IAAI,CAAC0W,UAAL,GAAkB,KAAKO,gBAAL,EAAlB;WACK1K,MAAL,CAAY3H,KAAE,CAAChM,KAAf;MACAoH,IAAI,CAACgX,SAAL,GAAiB,KAAKC,gBAAL,CAAsBhB,IAAtB,CAAjB;aACO,KAAK3Q,UAAL,CAAgBtF,IAAhB,EAAsB,uBAAtB,CAAP;;;WAEKwC,IAAP;;;EAKFqxC,YAAY,CACV59B,IADU,EAEVhT,mBAFU,EAGI;UACR4B,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;UACMslC,gBAAgB,GAAG,KAAKzlC,KAAL,CAAWylC,gBAApC;UACM5nC,IAAI,GAAG,KAAK85B,eAAL,CAAqBr5B,mBAArB,CAAb;;QAGET,IAAI,CAACvC,IAAL,KAAc,yBAAd,IACAuC,IAAI,CAACjB,KAAL,KAAe6oC,gBAFjB,EAGE;aACO5nC,IAAP;;;QAEE,KAAKqvC,qBAAL,CAA2B5uC,mBAA3B,EAAgD,KAAhD,CAAJ,EAA4D;aACnDT,IAAP;;;WAGK,KAAK6/B,WAAL,CAAiB7/B,IAAjB,EAAuBqC,QAAvB,EAAiCC,QAAjC,EAA2C,CAAC,CAA5C,EAA+CmR,IAA/C,CAAP;;;EASFosB,WAAW,CACT/nB,IADS,EAETgoB,YAFS,EAGTC,YAHS,EAITC,OAJS,EAKTvsB,IALS,EAMK;QACV69B,IAAI,GAAG,KAAKnvC,KAAL,CAAW1E,IAAX,CAAgB/I,KAA3B;;QACI48C,IAAI,IAAI,IAAR,KAAiB,CAAC79B,IAAD,IAAS,CAAC,KAAK7I,KAAL,CAAWxI,KAAE,CAACjI,GAAd,CAA3B,CAAJ,EAAoD;UAC9Cm3C,IAAI,GAAGtR,OAAX,EAAoB;cACZnpB,QAAQ,GAAG,KAAK1U,KAAL,CAAW9D,KAA5B;;YACIwY,QAAQ,KAAK,IAAb,IAAqB,KAAK1U,KAAL,CAAWgmC,0BAApC,EAAgE;iBACvDrwB,IAAP;;;cAEIta,IAAI,GAAG,KAAKsB,WAAL,CAAiBghC,YAAjB,EAA+BC,YAA/B,CAAb;QACAviC,IAAI,CAACsa,IAAL,GAAYA,IAAZ;QACAta,IAAI,CAACqZ,QAAL,GAAgBA,QAAhB;;YAEEA,QAAQ,KAAK,IAAb,IACAiB,IAAI,CAACra,IAAL,KAAc,iBADd,KAEC,KAAKzI,OAAL,CAAagwC,8BAAb,IACC,EAAEltB,IAAI,CAAC3Y,KAAL,IAAc2Y,IAAI,CAAC3Y,KAAL,CAAW6B,aAA3B,CAHF,CADF,EAKE;eACKlB,KAAL,CACEgY,IAAI,CAACxG,QAAL,CAAcvS,KADhB,EAEE,kFAFF;;;cAMIyvC,EAAE,GAAG,KAAKrsC,KAAL,CAAW1E,IAAtB;cACM8zC,OAAO,GAAG/C,EAAE,KAAKpsC,KAAE,CAAC5K,SAAV,IAAuBg3C,EAAE,KAAKpsC,KAAE,CAAC3K,UAAjD;cACM+5C,QAAQ,GAAGhD,EAAE,KAAKpsC,KAAE,CAAC7K,iBAA3B;;YAEIi3C,EAAE,KAAKpsC,KAAE,CAAC9K,QAAd,EAAwB;eACjBgrC,YAAL,CAAkB,kBAAlB;eACKngC,KAAL,CAAW2lC,UAAX,GAAwB,IAAxB;eACK2J,4BAAL,CAAkC35B,IAAlC,EAAwCgoB,YAAxC;SAHF,MAIO,IAAI0R,QAAJ,EAAc;UAGnBF,IAAI,GAAKlvC,KAAE,CAAC3K,UAAL,CAA0C/C,KAAjD;;;aAGGmT,IAAL;;YAGE2mC,EAAE,KAAKpsC,KAAE,CAAC9K,QAAV,IACA,KAAK4R,eAAL,CAAqB,kBAArB,EAAyC,UAAzC,MAAyD,SAF3D,EAGE;cAEE,KAAK0B,KAAL,CAAWxI,KAAE,CAACrN,IAAd,KACA,KAAKoN,KAAL,CAAW9D,KAAX,KAAqB,OADrB,IAEA,KAAKmH,KAAL,CAAW+sB,OAHb,EAIE;kBACM,KAAKzyB,KAAL,CACJ,KAAKqC,KAAL,CAAWpD,KADP,EAEH,yFAFG,CAAN;;;;QAOJvB,IAAI,CAACoR,KAAL,GAAa,KAAK8iC,oBAAL,CAA0BlD,EAA1B,EAA8B8C,IAA9B,EAAoC79B,IAApC,CAAb;aACK3Q,UAAL,CACEtF,IADF,EAEE+zC,OAAO,IAAIC,QAAX,GAAsB,mBAAtB,GAA4C,kBAF9C;cASMG,MAAM,GAAG,KAAKxvC,KAAL,CAAW1E,IAA1B;;YAEG+zC,QAAQ,KAAKG,MAAM,KAAKvvC,KAAE,CAAC5K,SAAd,IAA2Bm6C,MAAM,KAAKvvC,KAAE,CAAC3K,UAA9C,CAAT,IACC85C,OAAO,IAAII,MAAM,KAAKvvC,KAAE,CAAC7K,iBAF5B,EAGE;gBACM,KAAKuI,KAAL,CACJ,KAAKqC,KAAL,CAAWpD,KADP,EAEH,oFAFG,CAAN;;;eAMK,KAAK8gC,WAAL,CACLriC,IADK,EAELsiC,YAFK,EAGLC,YAHK,EAILC,OAJK,EAKLvsB,IALK,CAAP;;;;WASGqE,IAAP;;;EAMF45B,oBAAoB,CAClBlD,EADkB,EAElB8C,IAFkB,EAGlB79B,IAHkB,EAIJ;UACRpR,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;;YACQksC,EAAR;WACOpsC,KAAE,CAAC9K,QAAR;gBACU,KAAK4R,eAAL,CAAqB,kBAArB,EAAyC,UAAzC,CAAR;eACO,OAAL;mBACS,KAAK0oC,0BAAL,CAAgC,MAAM;qBACpC,KAAKC,sBAAL,CACL,KAAKC,wBAAL,CAA8BtD,EAA9B,EAAkC8C,IAAlC,EAAwC79B,IAAxC,CADK,EAELpR,QAFK,EAGLC,QAHK,CAAP;aADK,CAAP;;eAOG,QAAL;mBACS,KAAKyvC,8BAAL,CAAoC,MAAM;qBACxC,KAAKC,uBAAL,CAA6BV,IAA7B,EAAmC79B,IAAnC,CAAP;aADK,CAAP;;;;eAOG,KAAKq+B,wBAAL,CAA8BtD,EAA9B,EAAkC8C,IAAlC,EAAwC79B,IAAxC,CAAP;;;;EAONq+B,wBAAwB,CACtBtD,EADsB,EAEtB8C,IAFsB,EAGtB79B,IAHsB,EAIR;UACRpR,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;WAEO,KAAKu9B,WAAL,CACL,KAAK/F,eAAL,EADK,EAELz3B,QAFK,EAGLC,QAHK,EAILksC,EAAE,CAAC/5C,gBAAH,GAAsB68C,IAAI,GAAG,CAA7B,GAAiCA,IAJ5B,EAKL79B,IALK,CAAP;;;EAWFqmB,eAAe,CAACr5B,mBAAD,EAAuD;QAChE,KAAK2L,YAAL,CAAkB,OAAlB,KAA8B,KAAK6lC,cAAL,EAAlC,EAAyD;aAChD,KAAKC,UAAL,EAAP;KADF,MAEO,IAAI,KAAK/vC,KAAL,CAAW1E,IAAX,CAAgBvJ,MAApB,EAA4B;YAC3BsJ,IAAI,GAAG,KAAKqF,SAAL,EAAb;YACMwrC,MAAM,GAAG,KAAKzjC,KAAL,CAAWxI,KAAE,CAACjL,MAAd,CAAf;MACAqG,IAAI,CAACqZ,QAAL,GAAgB,KAAK1U,KAAL,CAAW9D,KAA3B;MACAb,IAAI,CAACtJ,MAAL,GAAc,IAAd;;UAEIsJ,IAAI,CAACqZ,QAAL,KAAkB,OAAtB,EAA+B;aACxByrB,YAAL,CAAkB,kBAAlB;;;WAEGz6B,IAAL;MAEArK,IAAI,CAAC8T,QAAL,GAAgB,KAAKwoB,eAAL,EAAhB;WAEKuV,qBAAL,CAA2B5uC,mBAA3B,EAAgD,IAAhD;;UAEI4tC,MAAJ,EAAY;aACLtuC,SAAL,CAAevC,IAAI,CAAC8T,QAApB,EAA8BtI,SAA9B,EAAyCA,SAAzC,EAAoD,kBAApD;OADF,MAEO,IAAI,KAAK7G,KAAL,CAAW+D,MAAX,IAAqB1I,IAAI,CAACqZ,QAAL,KAAkB,QAA3C,EAAqD;cACpDo5B,GAAG,GAAGzyC,IAAI,CAAC8T,QAAjB;;YAEI2+B,GAAG,CAACxyC,IAAJ,KAAa,YAAjB,EAA+B;eACxBqC,KAAL,CAAWtC,IAAI,CAACuB,KAAhB,EAAuB,wCAAvB;SADF,MAEO,IACLkxC,GAAG,CAACxyC,IAAJ,KAAa,kBAAb,IACAwyC,GAAG,CAACx+B,QAAJ,CAAahU,IAAb,KAAsB,aAFjB,EAGL;eACKqC,KAAL,CAAWtC,IAAI,CAACuB,KAAhB,EAAuB,yCAAvB;;;;aAIG,KAAK+D,UAAL,CACLtF,IADK,EAEL6wC,MAAM,GAAG,kBAAH,GAAwB,iBAFzB,CAAP;;;UAMIhsC,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;QACItC,IAAI,GAAG,KAAKmyC,mBAAL,CAAyB1xC,mBAAzB,CAAX;QACI,KAAK4uC,qBAAL,CAA2B5uC,mBAA3B,EAAgD,KAAhD,CAAJ,EAA4D,OAAOT,IAAP;;WACrD,KAAKmC,KAAL,CAAW1E,IAAX,CAAgBtJ,OAAhB,IAA2B,CAAC,KAAKme,kBAAL,EAAnC,EAA8D;YACtD9U,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;MACA9E,IAAI,CAACqZ,QAAL,GAAgB,KAAK1U,KAAL,CAAW9D,KAA3B;MACAb,IAAI,CAACtJ,MAAL,GAAc,KAAd;MACAsJ,IAAI,CAAC8T,QAAL,GAAgBtR,IAAhB;WACKD,SAAL,CAAeC,IAAf,EAAqBgJ,SAArB,EAAgCA,SAAhC,EAA2C,mBAA3C;WACKnB,IAAL;MACA7H,IAAI,GAAG,KAAK8C,UAAL,CAAgBtF,IAAhB,EAAsB,kBAAtB,CAAP;;;WAEKwC,IAAP;;;EAKFmyC,mBAAmB,CAAC1xC,mBAAD,EAAuD;UAClE4B,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;UACMslC,gBAAgB,GAAG,KAAKzlC,KAAL,CAAWylC,gBAApC;UACM5nC,IAAI,GAAG,KAAKkC,aAAL,CAAmBzB,mBAAnB,CAAb;;QAGET,IAAI,CAACvC,IAAL,KAAc,yBAAd,IACAuC,IAAI,CAACjB,KAAL,KAAe6oC,gBAFjB,EAGE;aACO5nC,IAAP;;;WAGK,KAAKqa,eAAL,CAAqBra,IAArB,EAA2BqC,QAA3B,EAAqCC,QAArC,CAAP;;;EAGF+X,eAAe,CACbC,IADa,EAEbjY,QAFa,EAGbC,QAHa,EAIbiY,OAJa,EAKC;UACRpY,KAAK,GAAG;MACZ4Y,mBAAmB,EAAE,KADT;MAEZq3B,eAAe,EAAE,KAAK3S,eAAL,CAAqBnlB,IAArB,CAFL;MAGZU,IAAI,EAAE;KAHR;;OAKG;MACDV,IAAI,GAAG,KAAKM,cAAL,CAAoBN,IAApB,EAA0BjY,QAA1B,EAAoCC,QAApC,EAA8CiY,OAA9C,EAAuDpY,KAAvD,CAAP;MAGAA,KAAK,CAACiwC,eAAN,GAAwB,KAAxB;KAJF,QAKS,CAACjwC,KAAK,CAAC6Y,IALhB;;WAMOV,IAAP;;;EAOFM,cAAc,CACZN,IADY,EAEZjY,QAFY,EAGZC,QAHY,EAIZiY,OAJY,EAKZpY,KALY,EAME;QACV,CAACoY,OAAD,IAAY,KAAK/P,GAAL,CAASpI,KAAE,CAAC/L,WAAZ,CAAhB,EAA0C;YAClCmH,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;MACA9E,IAAI,CAACwxB,MAAL,GAAc1U,IAAd;MACA9c,IAAI,CAACgG,MAAL,GAAc,KAAK6uC,eAAL,EAAd;MACAlwC,KAAK,CAAC6Y,IAAN,GAAa,IAAb;aACO,KAAKX,eAAL,CACL,KAAKvX,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CADK,EAEL6E,QAFK,EAGLC,QAHK,EAILiY,OAJK,CAAP;;;QAOEhX,QAAQ,GAAG,KAAf;;QACI,KAAKqH,KAAL,CAAWxI,KAAE,CAAC5L,WAAd,CAAJ,EAAgC;MAC9B2L,KAAK,CAAC4Y,mBAAN,GAA4BxX,QAAQ,GAAG,IAAvC;;UACIgX,OAAO,IAAI,KAAK0e,iBAAL,SAAf,EAAuE;QACrE92B,KAAK,CAAC6Y,IAAN,GAAa,IAAb;eACOV,IAAP;;;WAEGzS,IAAL;;;UAEInH,QAAQ,GAAG,KAAK8J,GAAL,CAASpI,KAAE,CAAC1M,QAAZ,CAAjB;;QAEG6N,QAAQ,IAAI,CAAC,KAAKqH,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAAb,IAAsC,CAAC,KAAK4U,KAAL,CAAWxI,KAAE,CAACxL,SAAd,CAAxC,IACA8J,QADA,IAEA,KAAK8J,GAAL,CAASpI,KAAE,CAAC9L,GAAZ,CAHF,EAIE;YACMkH,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;MACA9E,IAAI,CAACwxB,MAAL,GAAc1U,IAAd;MACA9c,IAAI,CAACiU,QAAL,GAAgB/Q,QAAQ,GACpB,KAAK+J,eAAL,EADoB,GAEpBlH,QAAQ,GACR,KAAK0H,eAAL,CAAqB,IAArB,CADQ,GAER,KAAKqnC,qBAAL,CAA2B,IAA3B,CAJJ;MAKA90C,IAAI,CAACkD,QAAL,GAAgBA,QAAhB;;UAEIlD,IAAI,CAACiU,QAAL,CAAchU,IAAd,KAAuB,aAA3B,EAA0C;YACpCD,IAAI,CAACwxB,MAAL,CAAYvxB,IAAZ,KAAqB,OAAzB,EAAkC;eAC3BqC,KAAL,CAAWuC,QAAX,EAAqB,2CAArB;;;aAEGkwC,UAAL,CAAgBC,cAAhB,CACEh1C,IAAI,CAACiU,QAAL,CAAczG,EAAd,CAAiBjW,IADnB,EAEEyI,IAAI,CAACiU,QAAL,CAAc1S,KAFhB;;;UAME2B,QAAJ,EAAc;aACPqJ,MAAL,CAAY3H,KAAE,CAACzM,QAAf;;;UAGEwM,KAAK,CAAC4Y,mBAAV,EAA+B;QAC7Bvd,IAAI,CAAC+F,QAAL,GAAgBA,QAAhB;eACO,KAAKT,UAAL,CAAgBtF,IAAhB,EAAsB,0BAAtB,CAAP;OAFF,MAGO;eACE,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,kBAAtB,CAAP;;KAhCJ,MAkCO,IAAI,CAAC+c,OAAD,IAAY,KAAK3P,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAAhB,EAAuC;YACtCy8C,yBAAyB,GAAG,KAAKtwC,KAAL,CAAWi/B,sBAA7C;YACMsR,WAAW,GAAG,KAAKvwC,KAAL,CAAWmmC,QAA/B;YACMqK,WAAW,GAAG,KAAKxwC,KAAL,CAAWomC,QAA/B;WACKpmC,KAAL,CAAWi/B,sBAAX,GAAoC,IAApC;WACKj/B,KAAL,CAAWmmC,QAAX,GAAsB,CAAC,CAAvB;WACKnmC,KAAL,CAAWomC,QAAX,GAAsB,CAAC,CAAvB;WAEK1gC,IAAL;UAEIrK,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAX;MACA9E,IAAI,CAACgG,MAAL,GAAc8W,IAAd;;UAEI/W,QAAJ,EAAc;QACZ/F,IAAI,CAAC+F,QAAL,GAAgB,IAAhB;QACA/F,IAAI,CAACkG,SAAL,GAAiB,KAAK8W,4BAAL,CAAkCpY,KAAE,CAACnM,MAArC,EAA6C,KAA7C,CAAjB;OAFF,MAGO;QACLuH,IAAI,CAACkG,SAAL,GAAiB,KAAK8W,4BAAL,CACfpY,KAAE,CAACnM,MADY,EAEfkM,KAAK,CAACiwC,eAFS,EAGf93B,IAAI,CAAC7c,IAAL,KAAc,QAHC,EAIf6c,IAAI,CAAC7c,IAAL,KAAc,OAJC,EAKfD,IALe,CAAjB;;;WAQG8F,oBAAL,CAA0B9F,IAA1B,EAAgC2E,KAAK,CAAC4Y,mBAAtC;;UAEI5Y,KAAK,CAACiwC,eAAN,IAAyB,KAAKh5B,qBAAL,EAAzB,IAAyD,CAAC7V,QAA9D,EAAwE;QACtEpB,KAAK,CAAC6Y,IAAN,GAAa,IAAb;QAEAxd,IAAI,GAAG,KAAK0b,iCAAL,CACL,KAAKpa,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CADK,EAEL9E,IAFK,CAAP;aAIKwxC,8BAAL;aACK7sC,KAAL,CAAWmmC,QAAX,GAAsBoK,WAAtB;aACKvwC,KAAL,CAAWomC,QAAX,GAAsBoK,WAAtB;OATF,MAUO;aACAhvC,oBAAL,CAA0BnG,IAAI,CAACkG,SAA/B;YAQIgvC,WAAW,KAAK,CAAC,CAArB,EAAwB,KAAKvwC,KAAL,CAAWmmC,QAAX,GAAsBoK,WAAtB;;YAmBrB,CAAC,KAAKT,cAAL,EAAD,IAA0B,CAACQ,yBAA5B,IACAE,WAAW,KAAK,CAAC,CAFnB,EAGE;eACKxwC,KAAL,CAAWomC,QAAX,GAAsBoK,WAAtB;;;;WAICxwC,KAAL,CAAWi/B,sBAAX,GAAoCqR,yBAApC;aAEOj1C,IAAP;KA1EK,MA2EA,IAAI,KAAKoN,KAAL,CAAWxI,KAAE,CAACxL,SAAd,CAAJ,EAA8B;aAC5B,KAAK+oC,6BAAL,CACLt9B,QADK,EAELC,QAFK,EAGLgY,IAHK,EAILnY,KAJK,CAAP;KADK,MAOA;MACLA,KAAK,CAAC6Y,IAAN,GAAa,IAAb;aACOV,IAAP;;;;EAIJqlB,6BAA6B,CAC3Bt9B,QAD2B,EAE3BC,QAF2B,EAG3BgY,IAH2B,EAI3BnY,KAJ2B,EAK3B8Y,aAL2B,EAMC;UACtBzd,IAAgC,GAAG,KAAKsB,WAAL,CACvCuD,QADuC,EAEvCC,QAFuC,CAAzC;IAIA9E,IAAI,CAACo1C,GAAL,GAAWt4B,IAAX;IACA9c,IAAI,CAACq1C,KAAL,GAAa,KAAKpZ,aAAL,CAAmB,IAAnB,CAAb;QACIxe,aAAJ,EAAmBzd,IAAI,CAACwE,cAAL,GAAsBiZ,aAAtB;;QACf9Y,KAAK,CAAC4Y,mBAAV,EAA+B;WACxBjb,KAAL,CACEuC,QADF,EAEE,2DAFF;;;WAKK,KAAKS,UAAL,CAAgBtF,IAAhB,EAAsB,0BAAtB,CAAP;;;EAGFiiC,eAAe,CAACnlB,IAAD,EAA8B;WAEzCA,IAAI,CAAC7c,IAAL,KAAc,YAAd,IACA6c,IAAI,CAACvlB,IAAL,KAAc,OADd,IAEA,KAAKoN,KAAL,CAAW4D,UAAX,KAA0BuU,IAAI,CAACjb,GAF/B,IAGA,CAAC,KAAKiT,kBAAL,EAHD,IAIA,KAAKxM,KAAL,CAAWxG,KAAX,CAAiBgb,IAAI,CAACvb,KAAtB,EAA6Bub,IAAI,CAACjb,GAAlC,MAA2C,OAL7C;;;EASFiE,oBAAoB,CAClB9F,IADkB,EAElB+F,QAFkB,EAGJ;QACV/F,IAAI,CAACgG,MAAL,CAAY/F,IAAZ,KAAqB,QAAzB,EAAmC;UAC7BD,IAAI,CAACkG,SAAL,CAAe7D,MAAf,KAA0B,CAA9B,EAAiC;aAC1BC,KAAL,CAAWtC,IAAI,CAACuB,KAAhB,EAAuB,wCAAvB;OADF,MAEO;cACC+zC,SAAS,GAAGt1C,IAAI,CAACkG,SAAL,CAAe,CAAf,CAAlB;;YACIovC,SAAS,IAAIA,SAAS,CAACr1C,IAAV,KAAmB,eAApC,EAAqD;eAC9CqC,KAAL,CAAWgzC,SAAS,CAAC/zC,KAArB,EAA4B,gCAA5B;;;;;WAIC,KAAK+D,UAAL,CACLtF,IADK,EAEL+F,QAAQ,GAAG,wBAAH,GAA8B,gBAFjC,CAAP;;;EAMFiX,4BAA4B,CAC1B81B,KAD0B,EAE1ByC,kBAF0B,EAG1BC,aAH0B,EAI1BC,gBAJ0B,EAK1BC,YAL0B,EAMK;UACzBzC,IAAI,GAAG,EAAb;QACI0C,eAAJ;QACIzC,KAAK,GAAG,IAAZ;UACM0C,6BAA6B,GAAG,KAAKjxC,KAAL,CAAWgmC,0BAAjD;SACKhmC,KAAL,CAAWgmC,0BAAX,GAAwC,KAAxC;;WAEO,CAAC,KAAK39B,GAAL,CAAS8lC,KAAT,CAAR,EAAyB;UACnBI,KAAJ,EAAW;QACTA,KAAK,GAAG,KAAR;OADF,MAEO;aACA3mC,MAAL,CAAY3H,KAAE,CAAClM,KAAf;;YACI,KAAK0U,KAAL,CAAW0lC,KAAX,CAAJ,EAAuB;cACjB0C,aAAJ,EAAmB;iBACZlzC,KAAL,CACE,KAAKqC,KAAL,CAAW+J,YADb,EAEE,2DAFF;;;cAKEgnC,YAAJ,EAAkB;iBACX3E,QAAL,CACE2E,YADF,EAEE,eAFF,EAGE,KAAK/wC,KAAL,CAAW+J,YAHb;;;eAMGrE,IAAL;;;;;UAOA,KAAK+C,KAAL,CAAWxI,KAAE,CAACpM,MAAd,KAAyB,CAACm9C,eAA9B,EAA+C;QAC7CA,eAAe,GAAG,KAAKhxC,KAAL,CAAWpD,KAA7B;;;MAGF0xC,IAAI,CAACxuC,IAAL,CACE,KAAKoxC,iBAAL,CACE,KADF,EAEEN,kBAAkB,GAAG,IAAIvD,gBAAJ,EAAH,GAA4BxmC,SAFhD,EAGE+pC,kBAAkB,GAAG;QAAEh0C,KAAK,EAAE;OAAZ,GAAkBiK,SAHtC,EAIEiqC,gBAJF,CADF;;;QAWEF,kBAAkB,IAAII,eAAtB,IAAyC,KAAK/5B,qBAAL,EAA7C,EAA2E;WACpE3M,UAAL;;;SAGGtK,KAAL,CAAWgmC,0BAAX,GAAwCiL,6BAAxC;WAEO3C,IAAP;;;EAGFr3B,qBAAqB,GAAY;WACxB,KAAKxO,KAAL,CAAWxI,KAAE,CAAC3L,KAAd,KAAwB,CAAC,KAAK6b,kBAAL,EAAhC;;;EAGF4G,iCAAiC,CAC/B1b,IAD+B,EAE/B2b,IAF+B,EAGJ;;;SACtBpP,MAAL,CAAY3H,KAAE,CAAC3L,KAAf;SACK2kB,oBAAL,CACE5d,IADF,EAEE2b,IAAI,CAACzV,SAFP,EAGE,IAHF,iBAIEyV,IAAI,CAACha,KAJP,qBAIE,YAAY+V,aAJd;WAMO1X,IAAP;;;EAKF60C,eAAe,GAAiB;UACxBhwC,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;WACO,KAAK+X,eAAL,CAAqB,KAAKnY,aAAL,EAArB,EAA2CG,QAA3C,EAAqDC,QAArD,EAA+D,IAA/D,CAAP;;;EAQFJ,aAAa,CAACzB,mBAAD,EAAwD;QAG/D,KAAK0B,KAAL,CAAW1E,IAAX,KAAoB2E,KAAE,CAACjK,KAA3B,EAAkC,KAAK8yC,UAAL;UAE5B7wB,UAAU,GAAG,KAAKjY,KAAL,CAAWylC,gBAAX,KAAgC,KAAKzlC,KAAL,CAAWpD,KAA9D;QACIvB,IAAJ;;YAEQ,KAAK2E,KAAL,CAAW1E,IAAnB;WACO2E,KAAE,CAACzI,MAAR;QACE6D,IAAI,GAAG,KAAKqF,SAAL,EAAP;aACKgF,IAAL;;YAEE,KAAK+C,KAAL,CAAWxI,KAAE,CAACpM,MAAd,KACA,CAAC,KAAKwP,KAAL,CAAW9C,gBADZ,IAEA,CAAC,KAAK1N,OAAL,CAAa2vC,uBAHhB,EAIE;eACK7kC,KAAL,CACEtC,IAAI,CAACuB,KADP,EAEE,qEACE,iFAHJ;SALF,MAUO,IACL,CAAC,KAAKyG,KAAL,CAAWktB,UAAZ,IACA,CAAC,KAAK19B,OAAL,CAAa2vC,uBAFT,EAGL;eACK7kC,KAAL,CACEtC,IAAI,CAACuB,KADP,EAEE,qDAFF;;;YAOA,CAAC,KAAK6L,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAAD,IACA,CAAC,KAAK4U,KAAL,CAAWxI,KAAE,CAAC1M,QAAd,CADD,IAEA,CAAC,KAAKkV,KAAL,CAAWxI,KAAE,CAAC9L,GAAd,CAHH,EAIE;eACKwJ,KAAL,CACEtC,IAAI,CAACuB,KADP,EAEE,kEACE,uDAHJ;;;eAOK,KAAK+D,UAAL,CAAgBtF,IAAhB,EAAsB,OAAtB,CAAP;;WAEG4E,KAAE,CAACrI,OAAR;QACEyD,IAAI,GAAG,KAAKqF,SAAL,EAAP;aACKgF,IAAL;;YAEI,KAAK+C,KAAL,CAAWxI,KAAE,CAAC9L,GAAd,CAAJ,EAAwB;iBACf,KAAKg9C,uBAAL,CAA6B91C,IAA7B,CAAP;;;YAGE,CAAC,KAAKoN,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAAL,EAA4B;eACrB8J,KAAL,CACE,KAAKqC,KAAL,CAAW+J,YADb,EAEE,oDAFF;;;eAKK,KAAKpJ,UAAL,CAAgBtF,IAAhB,EAAsB,QAAtB,CAAP;;WACG4E,KAAE,CAAC1I,KAAR;QACE8D,IAAI,GAAG,KAAKqF,SAAL,EAAP;aACKgF,IAAL;eACO,KAAK/E,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;;WAEG4E,KAAE,CAACrN,IAAR;;UACEyI,IAAI,GAAG,KAAKqF,SAAL,EAAP;gBACMI,WAAW,GAAG,KAAKd,KAAL,CAAWc,WAA/B;gBACM+H,EAAE,GAAG,KAAKC,eAAL,EAAX;;cAGE,CAAChI,WAAD,IACA+H,EAAE,CAACjW,IAAH,KAAY,OADZ,IAEA,KAAK6V,KAAL,CAAWxI,KAAE,CAACrJ,SAAd,CAFA,IAGA,CAAC,KAAKuZ,kBAAL,EAJH,EAKE;kBACMoE,IAAI,GAAG,KAAKvU,KAAL,CAAW8C,OAAX,CAAmBpF,MAAnB,GAA4B,CAAzC;;gBACI,KAAKsC,KAAL,CAAW8C,OAAX,CAAmByR,IAAnB,MAA6BuqB,OAAE,CAACj8B,iBAApC,EAAuD;oBAQ/C,IAAI0E,KAAJ,CAAU,gBAAV,CAAN;;;iBAEGvH,KAAL,CAAW8C,OAAX,CAAmByR,IAAnB,IAA2BuqB,OAAE,CAACl8B,kBAA9B;iBAEK8C,IAAL;mBACO,KAAK0rC,aAAL,CAAmB/1C,IAAnB,EAAyBwL,SAAzB,EAAoC,IAApC,CAAP;WApBF,MAqBO,IACLoR,UAAU,IACV,CAACnX,WADD,IAEA+H,EAAE,CAACjW,IAAH,KAAY,OAFZ,IAGA,KAAK6V,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAHA,IAIA,CAAC,KAAKud,kBAAL,EALI,EAML;kBACMmgC,yBAAyB,GAAG,KAAKtwC,KAAL,CAAWi/B,sBAA7C;kBACMsR,WAAW,GAAG,KAAKvwC,KAAL,CAAWmmC,QAA/B;kBACMqK,WAAW,GAAG,KAAKxwC,KAAL,CAAWomC,QAA/B;iBACKpmC,KAAL,CAAWi/B,sBAAX,GAAoC,IAApC;iBACKj/B,KAAL,CAAWmmC,QAAX,GAAsB,CAAC,CAAvB;iBACKnmC,KAAL,CAAWomC,QAAX,GAAsB,CAAC,CAAvB;kBACM3oC,MAAM,GAAG,CAAC,KAAKqL,eAAL,EAAD,CAAf;iBACKlB,MAAL,CAAY3H,KAAE,CAAC3L,KAAf;iBACKu4C,8BAAL;iBACK7sC,KAAL,CAAWi/B,sBAAX,GAAoCqR,yBAApC;iBACKtwC,KAAL,CAAWmmC,QAAX,GAAsBoK,WAAtB;iBACKvwC,KAAL,CAAWomC,QAAX,GAAsBoK,WAAtB;iBAEKv3B,oBAAL,CAA0B5d,IAA1B,EAAgCoC,MAAhC,EAAwC,IAAxC;mBACOpC,IAAP;;;cAGE4c,UAAU,IAAI,KAAKxP,KAAL,CAAWxI,KAAE,CAAC3L,KAAd,CAAd,IAAsC,CAAC,KAAK6b,kBAAL,EAA3C,EAAsE;iBAC/DzK,IAAL;iBACKuT,oBAAL,CAA0B5d,IAA1B,EAAgC,CAACwN,EAAD,CAAhC,EAAsC,KAAtC;mBACOxN,IAAP;;;iBAGKwN,EAAP;;;WAGG5I,KAAE,CAACzJ,GAAR;;eACO2pC,YAAL,CAAkB,eAAlB;gBACM9kC,IAAI,GAAG,KAAKqF,SAAL,EAAb;eACKgF,IAAL;gBACM2rC,SAAS,GAAG,KAAKrxC,KAAL,CAAWimC,MAA7B;eACKjmC,KAAL,CAAWimC,MAAX,GAAoB,EAApB;UACA5qC,IAAI,CAACiE,IAAL,GAAY,KAAKygC,UAAL,EAAZ;eACK//B,KAAL,CAAWimC,MAAX,GAAoBoL,SAApB;iBACO,KAAK1wC,UAAL,CAAgBtF,IAAhB,EAAsB,cAAtB,CAAP;;;WAGG4E,KAAE,CAAC7M,MAAR;;gBACQ8I,KAAK,GAAG,KAAK8D,KAAL,CAAW9D,KAAzB;UACAb,IAAI,GAAG,KAAKiB,YAAL,CAAkBJ,KAAK,CAACA,KAAxB,EAA+B,eAA/B,CAAP;UACAb,IAAI,CAACM,OAAL,GAAeO,KAAK,CAACP,OAArB;UACAN,IAAI,CAACO,KAAL,GAAaM,KAAK,CAACN,KAAnB;iBACOP,IAAP;;;WAGG4E,KAAE,CAAC/M,GAAR;eACS,KAAKoJ,YAAL,CAAkB,KAAK0D,KAAL,CAAW9D,KAA7B,EAAoC,gBAApC,CAAP;;WAEG+D,KAAE,CAAC9M,MAAR;eACS,KAAKmJ,YAAL,CAAkB,KAAK0D,KAAL,CAAW9D,KAA7B,EAAoC,eAApC,CAAP;;WAEG+D,KAAE,CAAC5M,MAAR;eACS,KAAKiJ,YAAL,CAAkB,KAAK0D,KAAL,CAAW9D,KAA7B,EAAoC,eAApC,CAAP;;WAEG+D,KAAE,CAACpI,KAAR;QACEwD,IAAI,GAAG,KAAKqF,SAAL,EAAP;aACKgF,IAAL;eACO,KAAK/E,UAAL,CAAgBtF,IAAhB,EAAsB,aAAtB,CAAP;;WAEG4E,KAAE,CAACnI,KAAR;WACKmI,KAAE,CAAClI,MAAR;eACS,KAAKmjB,mBAAL,EAAP;;WAEGjb,KAAE,CAACpM,MAAR;eACS,KAAKmkB,kCAAL,CAAwCC,UAAxC,CAAP;;WAEGhY,KAAE,CAAC1M,QAAR;;gBACQ09C,6BAA6B,GAAG,KAAKjxC,KAAL,CACnCgmC,0BADH;eAEKhmC,KAAL,CAAWgmC,0BAAX,GAAwC,KAAxC;UACA3qC,IAAI,GAAG,KAAKqF,SAAL,EAAP;eACKgF,IAAL;UACArK,IAAI,CAACmZ,QAAL,GAAgB,KAAK88B,aAAL,CACdrxC,KAAE,CAACzM,QADW,EAEd,IAFc,EAGd8K,mBAHc,EAIdjD,IAJc,CAAhB;;cAMI,CAAC,KAAK2E,KAAL,CAAWi/B,sBAAhB,EAAwC;iBAMjCrqB,gBAAL,CAAsBvZ,IAAI,CAACmZ,QAA3B;;;eAEGxU,KAAL,CAAWgmC,0BAAX,GAAwCiL,6BAAxC;iBACO,KAAKtwC,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;;;WAEG4E,KAAE,CAACxM,MAAR;;gBACQw9C,6BAA6B,GAAG,KAAKjxC,KAAL,CACnCgmC,0BADH;eAEKhmC,KAAL,CAAWgmC,0BAAX,GAAwC,KAAxC;gBACMuL,GAAG,GAAG,KAAKrD,QAAL,CAAc,KAAd,EAAqB5vC,mBAArB,CAAZ;eACK0B,KAAL,CAAWgmC,0BAAX,GAAwCiL,6BAAxC;iBACOM,GAAP;;;WAEGtxC,KAAE,CAACrJ,SAAR;eACS,KAAK46C,uBAAL,EAAP;;WAEGvxC,KAAE,CAACtL,EAAR;aACO88C,eAAL;;WAEGxxC,KAAE,CAACxI,MAAR;QACE4D,IAAI,GAAG,KAAKqF,SAAL,EAAP;aACKu/B,cAAL,CAAoB5kC,IAApB;eACO,KAAK2gC,UAAL,CAAgB3gC,IAAhB,EAAsB,KAAtB,CAAP;;WAEG4E,KAAE,CAAC3I,IAAR;eACS,KAAKo6C,QAAL,EAAP;;WAEGzxC,KAAE,CAACxL,SAAR;eACS,KAAK6iC,aAAL,CAAmB,KAAnB,CAAP;;WAEGr3B,KAAE,CAAC/L,WAAR;;UACEmH,IAAI,GAAG,KAAKqF,SAAL,EAAP;eACKgF,IAAL;UACArK,IAAI,CAACwxB,MAAL,GAAc,IAAd;gBACMxrB,MAAM,GAAIhG,IAAI,CAACgG,MAAL,GAAc,KAAK6uC,eAAL,EAA9B;;cACI7uC,MAAM,CAAC/F,IAAP,KAAgB,kBAApB,EAAwC;mBAC/B,KAAKqF,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;WADF,MAEO;kBACC,KAAKsC,KAAL,CACJ0D,MAAM,CAACzE,KADH,EAEJ,iDAFI,CAAN;;;;WAOCqD,KAAE,CAACrL,IAAR;;cACM,KAAKoL,KAAL,CAAW2lC,UAAf,EAA2B;YACzBtqC,IAAI,GAAG,KAAKqF,SAAL,EAAP;;gBAGE,KAAKqG,eAAL,CAAqB,kBAArB,EAAyC,UAAzC,MAAyD,OAD3D,EAEE;mBACKpJ,KAAL,CACEtC,IAAI,CAACuB,KADP,EAEE,8FAFF;;;iBAMG8I,IAAL;;gBAEI,CAAC,KAAKisC,mDAAL,EAAL,EAAiE;mBAC1Dh0C,KAAL,CACEtC,IAAI,CAACuB,KADP,EAEG,qEAFH;;;iBAMGg1C,sBAAL;mBACO,KAAKjxC,UAAL,CAAgBtF,IAAhB,EAAsB,+BAAtB,CAAP;;;;;cAKI,KAAKiP,UAAL,EAAN;;;;EAIN4Q,mBAAmB,GAAqB;UAChC7f,IAAI,GAAG,KAAKqF,SAAL,EAAb;IACArF,IAAI,CAACa,KAAL,GAAa,KAAKuM,KAAL,CAAWxI,KAAE,CAACnI,KAAd,CAAb;SACK4N,IAAL;WACO,KAAK/E,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;;;EAGF80C,qBAAqB,CACnB56B,oBADmB,EAEW;UACxBs8B,SAAS,GAAG,KAAKppC,KAAL,CAAWxI,KAAE,CAACrL,IAAd,CAAlB;;QAEIi9C,SAAJ,EAAe;WACRlF,eAAL,CAAqB,CAAC,wBAAD,EAA2B,qBAA3B,CAArB;;UACI,CAACp3B,oBAAL,EAA2B;aACpB5X,KAAL,CACE,KAAKqC,KAAL,CAAWoF,GADb,EAEE,yJAFF;;;YAKI/J,IAAI,GAAG,KAAKqF,SAAL,EAAb;WACKgF,IAAL;WACKi6B,aAAL,CAAmB,2CAAnB;MACAtkC,IAAI,CAACwN,EAAL,GAAU,KAAKC,eAAL,CAAqB,IAArB,CAAV;aACO,KAAKnI,UAAL,CAAgBtF,IAAhB,EAAsB,aAAtB,CAAP;KAZF,MAaO;aACE,KAAKyN,eAAL,CAAqB,IAArB,CAAP;;;;EAIJ0oC,uBAAuB,GAA0C;UACzDn2C,IAAI,GAAG,KAAKqF,SAAL,EAAb;QAOIoxC,IAAI,GAAG,KAAKpxC,SAAL,EAAX;SACKgF,IAAL;IACAosC,IAAI,GAAG,KAAK7hC,gBAAL,CAAsB6hC,IAAtB,EAA4B,UAA5B,CAAP;;QAEI,KAAKzuC,KAAL,CAAWC,WAAX,IAA0B,KAAK+E,GAAL,CAASpI,KAAE,CAAC9L,GAAZ,CAA9B,EAAgD;aACvC,KAAK49C,iBAAL,CAAuB12C,IAAvB,EAA6By2C,IAA7B,EAAmC,MAAnC,CAAP;;;WAEK,KAAKV,aAAL,CAAmB/1C,IAAnB,CAAP;;;EAGF02C,iBAAiB,CACf12C,IADe,EAEfy2C,IAFe,EAGfE,YAHe,EAIC;IAChB32C,IAAI,CAACy2C,IAAL,GAAYA,IAAZ;;QAEIA,IAAI,CAACl/C,IAAL,KAAc,UAAd,IAA4Bo/C,YAAY,KAAK,MAAjD,EAAyD;UACnD,KAAK/nC,YAAL,CAAkB+nC,YAAlB,CAAJ,EAAqC;aAC9B7R,YAAL,CAAkB,cAAlB;OADF,MAEO,IAAI,CAAC,KAAK/oB,SAAL,CAAe,cAAf,CAAL,EAAqC;aAErC9M,UAAL;;;;UAIExJ,WAAW,GAAG,KAAKd,KAAL,CAAWc,WAA/B;IAEAzF,IAAI,CAACiU,QAAL,GAAgB,KAAKxG,eAAL,CAAqB,IAArB,CAAhB;;QAEIzN,IAAI,CAACiU,QAAL,CAAc1c,IAAd,KAAuBo/C,YAAvB,IAAuClxC,WAA3C,EAAwD;WACjDnD,KAAL,CACEtC,IAAI,CAACiU,QAAL,CAAc1S,KADhB,EAEG,oCAAmCk1C,IAAI,CAACl/C,IAAK,OAAMk/C,IAAI,CAACl/C,IAAK,IAAGo/C,YAAa,EAFhF;;;WAMK,KAAKrxC,UAAL,CAAgBtF,IAAhB,EAAsB,cAAtB,CAAP;;;EAGF81C,uBAAuB,CAAC91C,IAAD,EAAuC;UACtDwN,EAAE,GAAG,KAAKoH,gBAAL,CAAsB,KAAK2jB,eAAL,CAAqBv4B,IAArB,CAAtB,EAAkD,QAAlD,CAAX;SACKuM,MAAL,CAAY3H,KAAE,CAAC9L,GAAf;;QAEI,KAAK8V,YAAL,CAAkB,MAAlB,CAAJ,EAA+B;WACxBk2B,YAAL,CAAkB,YAAlB;;UAEI,CAAC,KAAK77B,QAAV,EAAoB;aACb3G,KAAL,CACEkL,EAAE,CAACjM,KADL,EAEG,yDAFH,EAGE;UAAEkF,IAAI,EAAE;SAHV;;;WAMG2hC,iBAAL,GAAyB,IAAzB;KAVF,MAWO,IAAI,CAAC,KAAKrsB,SAAL,CAAe,YAAf,CAAL,EAAmC;WACnCzZ,KAAL,CACEkL,EAAE,CAACjM,KADL,EAEG,qDAFH;;;WAMK,KAAKm1C,iBAAL,CAAuB12C,IAAvB,EAA6BwN,EAA7B,EAAiC,MAAjC,CAAP;;;EAGFvM,YAAY,CACVJ,KADU,EAEVZ,IAFU,EAGV4E,QAHU,EAIVC,QAJU,EAKP;IACHD,QAAQ,GAAGA,QAAQ,IAAI,KAAKF,KAAL,CAAWpD,KAAlC;IACAuD,QAAQ,GAAGA,QAAQ,IAAI,KAAKH,KAAL,CAAWG,QAAlC;UAEM9E,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;SACKisC,QAAL,CAAc/wC,IAAd,EAAoB,UAApB,EAAgCa,KAAhC;SACKkwC,QAAL,CAAc/wC,IAAd,EAAoB,KAApB,EAA2B,KAAKsI,KAAL,CAAWxG,KAAX,CAAiB+C,QAAjB,EAA2B,KAAKF,KAAL,CAAW9C,GAAtC,CAA3B;IACA7B,IAAI,CAACa,KAAL,GAAaA,KAAb;SACKwJ,IAAL;WACO,KAAK/E,UAAL,CAAgBtF,IAAhB,EAAsBC,IAAtB,CAAP;;;EAGF0c,kCAAkC,CAACC,UAAD,EAAoC;UAC9D/X,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;QAEI+G,GAAJ;SACKU,MAAL,CAAY3H,KAAE,CAACpM,MAAf;UAEMy8C,yBAAyB,GAAG,KAAKtwC,KAAL,CAAWi/B,sBAA7C;UACMsR,WAAW,GAAG,KAAKvwC,KAAL,CAAWmmC,QAA/B;UACMqK,WAAW,GAAG,KAAKxwC,KAAL,CAAWomC,QAA/B;UACM6K,6BAA6B,GAAG,KAAKjxC,KAAL,CAAWgmC,0BAAjD;SACKhmC,KAAL,CAAWi/B,sBAAX,GAAoC,IAApC;SACKj/B,KAAL,CAAWmmC,QAAX,GAAsB,CAAC,CAAvB;SACKnmC,KAAL,CAAWomC,QAAX,GAAsB,CAAC,CAAvB;SACKpmC,KAAL,CAAWgmC,0BAAX,GAAwC,KAAxC;UAEMiM,aAAa,GAAG,KAAKjyC,KAAL,CAAWpD,KAAjC;UACMs1C,aAAa,GAAG,KAAKlyC,KAAL,CAAWG,QAAjC;UACMsB,QAAQ,GAAG,EAAjB;UACMnD,mBAAmB,GAAG,IAAI+uC,gBAAJ,EAA5B;UACM97B,gBAAgB,GAAG;MAAE3U,KAAK,EAAE;KAAlC;QACI2xC,KAAK,GAAG,IAAZ;QACI4D,WAAJ;QACIC,kBAAJ;;WAEO,CAAC,KAAK3pC,KAAL,CAAWxI,KAAE,CAACnM,MAAd,CAAR,EAA+B;UACzBy6C,KAAJ,EAAW;QACTA,KAAK,GAAG,KAAR;OADF,MAEO;aACA3mC,MAAL,CAAY3H,KAAE,CAAClM,KAAf,EAAsBwd,gBAAgB,CAAC3U,KAAjB,IAA0B,IAAhD;;YACI,KAAK6L,KAAL,CAAWxI,KAAE,CAACnM,MAAd,CAAJ,EAA2B;UACzBs+C,kBAAkB,GAAG,KAAKpyC,KAAL,CAAWpD,KAAhC;;;;;UAKA,KAAK6L,KAAL,CAAWxI,KAAE,CAACzL,QAAd,CAAJ,EAA6B;cACrB69C,kBAAkB,GAAG,KAAKryC,KAAL,CAAWpD,KAAtC;cACM01C,kBAAkB,GAAG,KAAKtyC,KAAL,CAAWG,QAAtC;QACAgyC,WAAW,GAAG,KAAKnyC,KAAL,CAAWpD,KAAzB;QACA6E,QAAQ,CAAC3B,IAAT,CACE,KAAKqT,cAAL,CACE,KAAK86B,gBAAL,EADF,EAEEoE,kBAFF,EAGEC,kBAHF,CADF;aAQK9D,mBAAL;;OAZF,MAeO;QACL/sC,QAAQ,CAAC3B,IAAT,CACE,KAAKwS,gBAAL,CACE,KADF,EAEEhU,mBAFF,EAGE,KAAK6U,cAHP,EAIE5B,gBAJF,CADF;;;;UAWEghC,WAAW,GAAG,KAAKvyC,KAAL,CAAWpD,KAA/B;UACM41C,WAAW,GAAG,KAAKxyC,KAAL,CAAWG,QAA/B;SACKyH,MAAL,CAAY3H,KAAE,CAACnM,MAAf;SAEKkM,KAAL,CAAWi/B,sBAAX,GAAoCqR,yBAApC;SACKtwC,KAAL,CAAWgmC,0BAAX,GAAwCiL,6BAAxC;QAEIwB,SAAS,GAAG,KAAK91C,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAhB;;QAEE8X,UAAU,IACV,KAAKL,gBAAL,EADA,KAEC66B,SAAS,GAAG,KAAK96B,UAAL,CAAgB86B,SAAhB,CAFb,CADF,EAIE;WACK5F,8BAAL;WACK7sC,KAAL,CAAWmmC,QAAX,GAAsBoK,WAAtB;WACKvwC,KAAL,CAAWomC,QAAX,GAAsBoK,WAAtB;;4BACoB/uC,QAJpB,eAI8B;cAAnB8O,KAAK,GAAI9O,QAAJ,IAAX;;YACC8O,KAAK,CAACvT,KAAN,IAAeuT,KAAK,CAACvT,KAAN,CAAY6B,aAA/B,EAA8C;eACvCyL,UAAL,CAAgBiG,KAAK,CAACvT,KAAN,CAAY01C,UAA5B;;;;WAICz5B,oBAAL,CAA0Bw5B,SAA1B,EAAqChxC,QAArC,EAA+C,KAA/C;aACOgxC,SAAP;;;QAKElC,WAAW,KAAK,CAAC,CAArB,EAAwB,KAAKvwC,KAAL,CAAWmmC,QAAX,GAAsBoK,WAAtB;QACpBC,WAAW,KAAK,CAAC,CAArB,EAAwB,KAAKxwC,KAAL,CAAWomC,QAAX,GAAsBoK,WAAtB;;QAEpB,CAAC/uC,QAAQ,CAAC/D,MAAd,EAAsB;WACf4M,UAAL,CAAgB,KAAKtK,KAAL,CAAW+J,YAA3B;;;QAEEqoC,kBAAJ,EAAwB,KAAK9nC,UAAL,CAAgB8nC,kBAAhB;QACpBD,WAAJ,EAAiB,KAAK7nC,UAAL,CAAgB6nC,WAAhB;SACZjF,qBAAL,CAA2B5uC,mBAA3B,EAAgD,IAAhD;QACIiT,gBAAgB,CAAC3U,KAArB,EAA4B,KAAK0N,UAAL,CAAgBiH,gBAAgB,CAAC3U,KAAjC;SAEvB4E,oBAAL,CAA0BC,QAA1B,EAA8D,IAA9D;;QACIA,QAAQ,CAAC/D,MAAT,GAAkB,CAAtB,EAAyB;MACvBwJ,GAAG,GAAG,KAAKvK,WAAL,CAAiBs1C,aAAjB,EAAgCC,aAAhC,CAAN;MACAhrC,GAAG,CAACqwB,WAAJ,GAAkB91B,QAAlB;WACKxE,YAAL,CAAkBiK,GAAlB,EAAuB,oBAAvB,EAA6CqrC,WAA7C,EAA0DC,WAA1D;KAHF,MAIO;MACLtrC,GAAG,GAAGzF,QAAQ,CAAC,CAAD,CAAd;;;QAGE,CAAC,KAAK5O,OAAL,CAAagwC,8BAAlB,EAAkD;WAC3CuJ,QAAL,CAAcllC,GAAd,EAAmB,eAAnB,EAAoC,IAApC;WACKklC,QAAL,CAAcllC,GAAd,EAAmB,YAAnB,EAAiChH,QAAjC;aACOgH,GAAP;;;UAGIzE,eAAe,GAAG,KAAK9F,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAxB;IACAsC,eAAe,CAAC3F,UAAhB,GAA6BoK,GAA7B;SACKvG,UAAL,CAAgB8B,eAAhB,EAAiC,yBAAjC;WACOA,eAAP;;;EAGFmV,gBAAgB,GAAY;WACnB,CAAC,KAAKzH,kBAAL,EAAR;;;EAGFwH,UAAU,CAACtc,IAAD,EAA8D;QAClE,KAAKgN,GAAL,CAASpI,KAAE,CAAC3L,KAAZ,CAAJ,EAAwB;aACf+G,IAAP;;;;EAIJ8X,cAAc,CACZ9X,IADY,EAEZ6E,QAFY,EAGZC,QAHY,EAIE;WACP9E,IAAP;;;EASFq2C,QAAQ,GAAqC;UACrCr2C,IAAI,GAAG,KAAKqF,SAAL,EAAb;QAEIoxC,IAAI,GAAG,KAAKpxC,SAAL,EAAX;SACKgF,IAAL;IACAosC,IAAI,GAAG,KAAK7hC,gBAAL,CAAsB6hC,IAAtB,EAA4B,KAA5B,CAAP;;QAEI,KAAKzpC,GAAL,CAASpI,KAAE,CAAC9L,GAAZ,CAAJ,EAAsB;YACdw+C,QAAQ,GAAG,KAAKZ,iBAAL,CAAuB12C,IAAvB,EAA6By2C,IAA7B,EAAmC,QAAnC,CAAjB;;UAEI,CAAC,KAAKzuC,KAAL,CAAWqtB,kBAAZ,IAAkC,CAAC,KAAKrtB,KAAL,CAAWotB,OAAlD,EAA2D;YACrD/e,KAAK,GAAG,0CAAZ;;YAEI,KAAK0F,SAAL,CAAe,iBAAf,CAAJ,EAAuC;UACrC1F,KAAK,IAAI,sBAAT;;;aAGG/T,KAAL,CAAWg1C,QAAQ,CAAC/1C,KAApB,EAA2B8U,KAA3B;;;aAGKihC,QAAP;;;IAGFt3C,IAAI,CAACgG,MAAL,GAAc,KAAK6uC,eAAL,EAAd;;QAEI70C,IAAI,CAACgG,MAAL,CAAY/F,IAAZ,KAAqB,QAAzB,EAAmC;WAC5BqC,KAAL,CAAWtC,IAAI,CAACgG,MAAL,CAAYzE,KAAvB,EAA8B,iCAA9B;KADF,MAEO,IACLvB,IAAI,CAACgG,MAAL,CAAY/F,IAAZ,KAAqB,0BAArB,IACAD,IAAI,CAACgG,MAAL,CAAY/F,IAAZ,KAAqB,wBAFhB,EAGL;WACKqC,KAAL,CACE,KAAKqC,KAAL,CAAW4D,UADb,EAEE,yDAFF;KAJK,MAQA,IAAI,KAAKyE,GAAL,CAASpI,KAAE,CAAC5L,WAAZ,CAAJ,EAA8B;WAC9BsJ,KAAL,CACE,KAAKqC,KAAL,CAAWpD,KADb,EAEE,yDAFF;;;SAMGmc,iBAAL,CAAuB1d,IAAvB;WACO,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,eAAtB,CAAP;;;EAGF0d,iBAAiB,CAAC1d,IAAD,EAA8B;QACzC,KAAKgN,GAAL,CAASpI,KAAE,CAACpM,MAAZ,CAAJ,EAAyB;YACjB4pC,IAAI,GAAG,KAAK6T,aAAL,CAAmBrxC,KAAE,CAACnM,MAAtB,CAAb;WACK8gB,gBAAL,CAAsB6oB,IAAtB;MAEApiC,IAAI,CAACkG,SAAL,GAAiBk8B,IAAjB;KAJF,MAKO;MACLpiC,IAAI,CAACkG,SAAL,GAAiB,EAAjB;;;;EAMJqxC,oBAAoB,CAACC,QAAD,EAAuC;UACnDlE,IAAI,GAAG,KAAKjuC,SAAL,EAAb;;QACI,KAAKV,KAAL,CAAW9D,KAAX,KAAqB,IAAzB,EAA+B;UACzB,CAAC22C,QAAL,EAAe;aACRl1C,KAAL,CAAW,KAAKqC,KAAL,CAAWpD,KAAX,GAAmB,CAA9B,EAAiC,qCAAjC;;;;IAGJ+xC,IAAI,CAACzyC,KAAL,GAAa;MACXa,GAAG,EAAE,KAAK4G,KAAL,CACFxG,KADE,CACI,KAAK6C,KAAL,CAAWpD,KADf,EACsB,KAAKoD,KAAL,CAAW9C,GADjC,EAEF0tC,OAFE,CAEM,QAFN,EAEgB,IAFhB,CADM;MAIXkI,MAAM,EAAE,KAAK9yC,KAAL,CAAW9D;KAJrB;SAMKwJ,IAAL;IACAipC,IAAI,CAACoE,IAAL,GAAY,KAAKtqC,KAAL,CAAWxI,KAAE,CAACxL,SAAd,CAAZ;WACO,KAAKkM,UAAL,CAAgBguC,IAAhB,EAAsB,iBAAtB,CAAP;;;EAGFrX,aAAa,CAACub,QAAD,EAAuC;UAC5Cx3C,IAAI,GAAG,KAAKqF,SAAL,EAAb;SACKgF,IAAL;IACArK,IAAI,CAACk8B,WAAL,GAAmB,EAAnB;QACIyb,MAAM,GAAG,KAAKJ,oBAAL,CAA0BC,QAA1B,CAAb;IACAx3C,IAAI,CAAC43C,MAAL,GAAc,CAACD,MAAD,CAAd;;WACO,CAACA,MAAM,CAACD,IAAf,EAAqB;WACdnrC,MAAL,CAAY3H,KAAE,CAACvL,YAAf;MACA2G,IAAI,CAACk8B,WAAL,CAAiBz3B,IAAjB,CAAsB,KAAKwI,eAAL,EAAtB;WACKV,MAAL,CAAY3H,KAAE,CAACtM,MAAf;MACA0H,IAAI,CAAC43C,MAAL,CAAYnzC,IAAZ,CAAkBkzC,MAAM,GAAG,KAAKJ,oBAAL,CAA0BC,QAA1B,CAA3B;;;SAEGntC,IAAL;WACO,KAAK/E,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;;;EAKF6yC,QAAQ,CACNrtC,SADM,EAENvC,mBAFM,EAGH;UACG40C,QAAa,GAAGvgB,MAAM,CAACC,MAAP,CAAc,IAAd,CAAtB;QACI2b,KAAK,GAAG,IAAZ;UACMlzC,IAAI,GAAG,KAAKqF,SAAL,EAAb;IAEArF,IAAI,CAAC6C,UAAL,GAAkB,EAAlB;SACKwH,IAAL;;WAEO,CAAC,KAAK2C,GAAL,CAASpI,KAAE,CAACtM,MAAZ,CAAR,EAA6B;UACvB46C,KAAJ,EAAW;QACTA,KAAK,GAAG,KAAR;OADF,MAEO;aACA3mC,MAAL,CAAY3H,KAAE,CAAClM,KAAf;;YACI,KAAK0U,KAAL,CAAWxI,KAAE,CAACtM,MAAd,CAAJ,EAA2B;eACpBy4C,QAAL,CAAc/wC,IAAd,EAAoB,eAApB,EAAqC,KAAK2E,KAAL,CAAW+J,YAAhD;eACKrE,IAAL;;;;;YAKEnI,IAAI,GAAG,KAAK41C,iBAAL,CAAuBtyC,SAAvB,EAAkCvC,mBAAlC,CAAb;;UACI,CAACuC,SAAL,EAAgB;aAETzC,oBAAL,CAA0Bb,IAA1B,EAAgC21C,QAAhC,EAA0C50C,mBAA1C;;;UAIEf,IAAI,CAACiB,SAAT,EAAoB;aACb4tC,QAAL,CAAc7uC,IAAd,EAAoB,WAApB,EAAiC,IAAjC;;;MAGFlC,IAAI,CAAC6C,UAAL,CAAgB4B,IAAhB,CAAqBvC,IAArB;;;WAGK,KAAKoD,UAAL,CACLtF,IADK,EAELwF,SAAS,GAAG,eAAH,GAAqB,kBAFzB,CAAP;;;EAMFuyC,WAAW,CAAC71C,IAAD,EAAkC;WAEzC,CAACA,IAAI,CAACgB,QAAN,IACAhB,IAAI,CAACkB,GAAL,CAASnD,IAAT,KAAkB,YADlB,IAEAiC,IAAI,CAACkB,GAAL,CAAS7L,IAAT,KAAkB,OAFlB,KAGC,KAAK6V,KAAL,CAAWxI,KAAE,CAACrN,IAAd,KACC,KAAK6V,KAAL,CAAWxI,KAAE,CAAC/M,GAAd,CADD,IAEC,KAAKuV,KAAL,CAAWxI,KAAE,CAAC5M,MAAd,CAFD,IAGC,KAAKoV,KAAL,CAAWxI,KAAE,CAAC1M,QAAd,CAHD,IAIC,KAAKyM,KAAL,CAAW1E,IAAX,CAAgBjJ,OAJjB,IAKC,KAAKoW,KAAL,CAAWxI,KAAE,CAAClK,IAAd,CARF,KASA,CAAC,KAAKo8B,qBAAL,EAVH;;;EAcFghB,iBAAiB,CACftyC,SADe,EAEfvC,mBAFe,EAGmC;QAC9Cu+B,UAAU,GAAG,EAAjB;;QACI,KAAKp0B,KAAL,CAAWxI,KAAE,CAACtL,EAAd,CAAJ,EAAuB;UACjB,KAAKyiB,SAAL,CAAe,YAAf,CAAJ,EAAkC;aAC3BzZ,KAAL,CACE,KAAKqC,KAAL,CAAWpD,KADb,EAEE,gEAFF;;;aAQK,KAAK6L,KAAL,CAAWxI,KAAE,CAACtL,EAAd,CAAP,EAA0B;QACxBkoC,UAAU,CAAC/8B,IAAX,CAAgB,KAAK2uC,cAAL,EAAhB;;;;UAIElxC,IAAI,GAAG,KAAKmD,SAAL,EAAb;QACIvH,WAAW,GAAG,KAAlB;QACID,OAAO,GAAG,KAAd;QACIgH,QAAJ;QACIC,QAAJ;;QAEI,KAAKsI,KAAL,CAAWxI,KAAE,CAACzL,QAAd,CAAJ,EAA6B;UACvBqoC,UAAU,CAACn/B,MAAf,EAAuB,KAAK4M,UAAL;;UACnBzJ,SAAJ,EAAe;aACR6E,IAAL;QAEAnI,IAAI,CAAC4R,QAAL,GAAgB,KAAKrG,eAAL,EAAhB;aACK0lC,mBAAL;eACO,KAAK7tC,UAAL,CAAgBpD,IAAhB,EAAsB,aAAtB,CAAP;;;aAGK,KAAKywC,WAAL,EAAP;;;QAGEnR,UAAU,CAACn/B,MAAf,EAAuB;MACrBH,IAAI,CAACs/B,UAAL,GAAkBA,UAAlB;MACAA,UAAU,GAAG,EAAb;;;IAGFt/B,IAAI,CAAC/B,MAAL,GAAc,KAAd;;QAEIqF,SAAS,IAAIvC,mBAAjB,EAAsC;MACpC4B,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAAtB;MACAuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAAtB;;;QAGE,CAACU,SAAL,EAAgB;MACd1H,WAAW,GAAG,KAAKkP,GAAL,CAASpI,KAAE,CAAClK,IAAZ,CAAd;;;UAGI+K,WAAW,GAAG,KAAKd,KAAL,CAAWc,WAA/B;SACKwU,iBAAL,CAAuB/X,IAAvB,EAAwD,KAAxD;;QAEI,CAACsD,SAAD,IAAc,CAACC,WAAf,IAA8B,CAAC3H,WAA/B,IAA8C,KAAKi6C,WAAL,CAAiB71C,IAAjB,CAAlD,EAA0E;MACxErE,OAAO,GAAG,IAAV;MACAC,WAAW,GAAG,KAAKkP,GAAL,CAASpI,KAAE,CAAClK,IAAZ,CAAd;WACKuf,iBAAL,CAAuB/X,IAAvB,EAAwD,KAAxD;KAHF,MAIO;MACLrE,OAAO,GAAG,KAAV;;;SAGGsc,iBAAL,CACEjY,IADF,EAEE2C,QAFF,EAGEC,QAHF,EAIEhH,WAJF,EAKED,OALF,EAME2H,SANF,EAOEvC,mBAPF,EAQEwC,WARF;WAWOvD,IAAP;;;EAGF81C,sBAAsB,CAAC91C,IAAD,EAAuBsD,SAAvB,EAAoD;WAEtE,CAACA,SAAD,IACA,CAACtD,IAAI,CAACgB,QADN,IAEAhB,IAAI,CAACkB,GAAL,CAASnD,IAAT,KAAkB,YAFlB,KAGCiC,IAAI,CAACkB,GAAL,CAAS7L,IAAT,KAAkB,KAAlB,IAA2B2K,IAAI,CAACkB,GAAL,CAAS7L,IAAT,KAAkB,KAH9C,MAIC,KAAK6V,KAAL,CAAWxI,KAAE,CAAC5M,MAAd,KACD,KAAKoV,KAAL,CAAWxI,KAAE,CAAC/M,GAAd,CADC,IAED,KAAKuV,KAAL,CAAWxI,KAAE,CAAC1M,QAAd,CAFC,IAGD,KAAKkV,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAHC,IAIC,CAAC,CAAC,KAAKoN,KAAL,CAAW1E,IAAX,CAAgBjJ,OARpB,CADF;;;EAaF+sC,iCAAiC,CAC/B5jC,MAD+B,EAEvB;WACDA,MAAM,CAACD,IAAP,KAAgB,KAAhB,GAAwB,CAAxB,GAA4B,CAAnC;;;EAKF+B,uBAAuB,CAAC9B,MAAD,EAA+C;UAC9DgC,UAAU,GAAG,KAAK4hC,iCAAL,CAAuC5jC,MAAvC,CAAnB;UACMoB,KAAK,GAAGpB,MAAM,CAACoB,KAArB;;QACIpB,MAAM,CAACiC,MAAP,CAAcC,MAAd,KAAyBF,UAA7B,EAAyC;UACnChC,MAAM,CAACD,IAAP,KAAgB,KAApB,EAA2B;aACpBoC,KAAL,CAAWf,KAAX,EAAkB,4CAAlB;OADF,MAEO;aACAe,KAAL,CAAWf,KAAX,EAAkB,+CAAlB;;;;QAKFpB,MAAM,CAACD,IAAP,KAAgB,KAAhB,IACAC,MAAM,CAACiC,MAAP,CAAcjC,MAAM,CAACiC,MAAP,CAAcC,MAAd,GAAuB,CAArC,EAAwCpC,IAAxC,KAAiD,aAFnD,EAGE;WACKqC,KAAL,CACEf,KADF,EAEE,uDAFF;;;;EAOJgE,iBAAiB,CACfrD,IADe,EAEfpE,WAFe,EAGfD,OAHe,EAIf2H,SAJe,EAKfC,WALe,EAME;QACb5H,OAAO,IAAIC,WAAX,IAA0B,KAAKsP,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAA9B,EAAqD;UAC/CgN,SAAJ,EAAe,KAAKyJ,UAAL;MACf/M,IAAI,CAAChC,IAAL,GAAY,QAAZ;MACAgC,IAAI,CAAC/B,MAAL,GAAc,IAAd;aACO,KAAKoE,WAAL,CACLrC,IADK,EAELpE,WAFK,EAGLD,OAHK,EAIe,KAJf,EAKL,KALK,EAML,cANK,CAAP;;;QAUE,CAAC4H,WAAD,IAAgB,KAAKuyC,sBAAL,CAA4B91C,IAA5B,EAAkCsD,SAAlC,CAApB,EAAkE;UAC5D1H,WAAW,IAAID,OAAnB,EAA4B,KAAKoR,UAAL;MAC5B/M,IAAI,CAAChC,IAAL,GAAYgC,IAAI,CAACkB,GAAL,CAAS7L,IAArB;WACK0iB,iBAAL,CAAuB/X,IAAvB,EAAwD,KAAxD;WACKqC,WAAL,CACErC,IADF,EAEoB,KAFpB,EAGgB,KAHhB,EAIsB,KAJtB,EAKE,KALF,EAME,cANF;WAQKD,uBAAL,CAA6BC,IAA7B;aACOA,IAAP;;;;EAIJwD,mBAAmB,CACjBxD,IADiB,EAEjB2C,QAFiB,EAGjBC,QAHiB,EAIjBU,SAJiB,EAKjBvC,mBALiB,EAME;IACnBf,IAAI,CAACiB,SAAL,GAAiB,KAAjB;;QAEI,KAAK6J,GAAL,CAASpI,KAAE,CAAChM,KAAZ,CAAJ,EAAwB;MACtBsJ,IAAI,CAACrB,KAAL,GAAa2E,SAAS,GAClB,KAAK6U,iBAAL,CAAuB,KAAK1V,KAAL,CAAWpD,KAAlC,EAAyC,KAAKoD,KAAL,CAAWG,QAApD,CADkB,GAElB,KAAKmS,gBAAL,CAAsB,KAAtB,EAA6BhU,mBAA7B,CAFJ;aAIO,KAAKqC,UAAL,CAAgBpD,IAAhB,EAAsB,gBAAtB,CAAP;;;QAGE,CAACA,IAAI,CAACgB,QAAN,IAAkBhB,IAAI,CAACkB,GAAL,CAASnD,IAAT,KAAkB,YAAxC,EAAsD;WAC/Cqb,iBAAL,CAAuBpZ,IAAI,CAACkB,GAAL,CAAS7L,IAAhC,EAAsC2K,IAAI,CAACkB,GAAL,CAAS7B,KAA/C,EAAsD,IAAtD,EAA4D,IAA5D;;UAEIiE,SAAJ,EAAe;QACbtD,IAAI,CAACrB,KAAL,GAAa,KAAKwZ,iBAAL,CACXxV,QADW,EAEXC,QAFW,EAGX5C,IAAI,CAACkB,GAAL,CAAS+X,OAAT,EAHW,CAAb;OADF,MAMO,IAAI,KAAK/N,KAAL,CAAWxI,KAAE,CAACnL,EAAd,KAAqBwJ,mBAAzB,EAA8C;YAC/CA,mBAAmB,CAAC8uC,eAApB,KAAwC,CAAC,CAA7C,EAAgD;UAC9C9uC,mBAAmB,CAAC8uC,eAApB,GAAsC,KAAKptC,KAAL,CAAWpD,KAAjD;;;QAEFW,IAAI,CAACrB,KAAL,GAAa,KAAKwZ,iBAAL,CACXxV,QADW,EAEXC,QAFW,EAGX5C,IAAI,CAACkB,GAAL,CAAS+X,OAAT,EAHW,CAAb;OAJK,MASA;QACLjZ,IAAI,CAACrB,KAAL,GAAaqB,IAAI,CAACkB,GAAL,CAAS+X,OAAT,EAAb;;;MAEFjZ,IAAI,CAACiB,SAAL,GAAiB,IAAjB;aAEO,KAAKmC,UAAL,CAAgBpD,IAAhB,EAAsB,gBAAtB,CAAP;;;;EAIJiY,iBAAiB,CACfjY,IADe,EAEf2C,QAFe,EAGfC,QAHe,EAIfhH,WAJe,EAKfD,OALe,EAMf2H,SANe,EAOfvC,mBAPe,EAQfwC,WARe,EAST;UACAzF,IAAI,GACR,KAAKuF,iBAAL,CACErD,IADF,EAEEpE,WAFF,EAGED,OAHF,EAIE2H,SAJF,EAKEC,WALF,KAOA,KAAKC,mBAAL,CACExD,IADF,EAEE2C,QAFF,EAGEC,QAHF,EAIEU,SAJF,EAKEvC,mBALF,CARF;QAgBI,CAACjD,IAAL,EAAW,KAAKiP,UAAL;WAGJjP,IAAP;;;EAGFia,iBAAiB,CACf/X,IADe,EAEfgY,oBAFe,EAGc;QACzB,KAAKlN,GAAL,CAASpI,KAAE,CAAC1M,QAAZ,CAAJ,EAA2B;MACxBgK,IAAD,CAA4CgB,QAA5C,GAAuD,IAAvD;MACAhB,IAAI,CAACkB,GAAL,GAAW,KAAK6T,gBAAL,EAAX;WACK1K,MAAL,CAAY3H,KAAE,CAACzM,QAAf;KAHF,MAIO;YACC8/C,iBAAiB,GAAG,KAAKtzC,KAAL,CAAWyvB,cAArC;WACKzvB,KAAL,CAAWyvB,cAAX,GAA4B,IAA5B;MAEClyB,IAAD,CAAmBkB,GAAnB,GACE,KAAKgK,KAAL,CAAWxI,KAAE,CAAC/M,GAAd,KAAsB,KAAKuV,KAAL,CAAWxI,KAAE,CAAC5M,MAAd,CAAtB,IAA+C,KAAKoV,KAAL,CAAWxI,KAAE,CAAC9M,MAAd,CAA/C,GACI,KAAK4M,aAAL,EADJ,GAEI,KAAKowC,qBAAL,CAA2B56B,oBAA3B,CAHN;;UAKIhY,IAAI,CAACkB,GAAL,CAASnD,IAAT,KAAkB,aAAtB,EAAqC;QAEnCiC,IAAI,CAACgB,QAAL,GAAgB,KAAhB;;;WAGGyB,KAAL,CAAWyvB,cAAX,GAA4B6jB,iBAA5B;;;WAGK/1C,IAAI,CAACkB,GAAZ;;;EAKFrB,YAAY,CAAC/B,IAAD,EAAuCnC,OAAvC,EAAgE;IAC1EmC,IAAI,CAACwN,EAAL,GAAU,IAAV;IACAxN,IAAI,CAACk4C,SAAL,GAAiB,KAAjB;IACAl4C,IAAI,CAACm4C,KAAL,GAAa,CAAC,CAACt6C,OAAf;;;EAKF0G,WAAW,CACTvE,IADS,EAETlC,WAFS,EAGTD,OAHS,EAITwG,aAJS,EAKTa,gBALS,EAMTjF,IANS,EAOTkF,YAAqB,GAAG,KAPf,EAQN;UACG+vC,WAAW,GAAG,KAAKvwC,KAAL,CAAWmmC,QAA/B;UACMqK,WAAW,GAAG,KAAKxwC,KAAL,CAAWomC,QAA/B;SACKpmC,KAAL,CAAWmmC,QAAX,GAAsB,CAAC,CAAvB;SACKnmC,KAAL,CAAWomC,QAAX,GAAsB,CAAC,CAAvB;SAEKhpC,YAAL,CAAkB/B,IAAlB,EAAwBnC,OAAxB;IACAmC,IAAI,CAACk4C,SAAL,GAAiB,CAAC,CAACp6C,WAAnB;UACM0d,cAAc,GAAGnX,aAAvB;SACK2D,KAAL,CAAWoH,KAAX,CACExR,aAAa,CAACC,OAAD,EAAUmC,IAAI,CAACk4C,SAAf,CAAb,GACE36C,WADF,IAEG4H,YAAY,GAAG1H,WAAH,GAAiB,CAFhC,KAGGyH,gBAAgB,GAAG1H,kBAAH,GAAwB,CAH3C,CADF;SAMK+d,mBAAL,CAA0Bvb,IAA1B,EAAsCwb,cAAtC;SACK/F,0BAAL,CAAgCzV,IAAhC,EAAsCC,IAAtC,EAA4C,IAA5C;SACK+H,KAAL,CAAWuH,IAAX;SAEK5K,KAAL,CAAWmmC,QAAX,GAAsBoK,WAAtB;SACKvwC,KAAL,CAAWomC,QAAX,GAAsBoK,WAAtB;WAEOn1C,IAAP;;;EAMF4d,oBAAoB,CAClB5d,IADkB,EAElBoC,MAFkB,EAGlBvE,OAHkB,EAIlByb,gBAJkB,EAKS;SACtBtR,KAAL,CAAWoH,KAAX,CAAiBxR,aAAa,CAACC,OAAD,EAAU,KAAV,CAAb,GAAgCR,WAAjD;SACK0E,YAAL,CAAkB/B,IAAlB,EAAwBnC,OAAxB;UACMo3C,yBAAyB,GAAG,KAAKtwC,KAAL,CAAWi/B,sBAA7C;UACMsR,WAAW,GAAG,KAAKvwC,KAAL,CAAWmmC,QAA/B;UACMqK,WAAW,GAAG,KAAKxwC,KAAL,CAAWomC,QAA/B;;QAEI3oC,MAAJ,EAAY;WACLuC,KAAL,CAAWi/B,sBAAX,GAAoC,IAApC;WACKpnB,0BAAL,CAAgCxc,IAAhC,EAAsCoC,MAAtC,EAA8CkX,gBAA9C;;;SAEG3U,KAAL,CAAWi/B,sBAAX,GAAoC,KAApC;SACKj/B,KAAL,CAAWmmC,QAAX,GAAsB,CAAC,CAAvB;SACKnmC,KAAL,CAAWomC,QAAX,GAAsB,CAAC,CAAvB;SACKhmC,iBAAL,CAAuB/E,IAAvB,EAA6B,IAA7B;SAEKgI,KAAL,CAAWuH,IAAX;SACK5K,KAAL,CAAWi/B,sBAAX,GAAoCqR,yBAApC;SACKtwC,KAAL,CAAWmmC,QAAX,GAAsBoK,WAAtB;SACKvwC,KAAL,CAAWomC,QAAX,GAAsBoK,WAAtB;WAEO,KAAK7vC,UAAL,CAAgBtF,IAAhB,EAAsB,yBAAtB,CAAP;;;EAGFwc,0BAA0B,CACxBxc,IADwB,EAExBoC,MAFwB,EAGxBkX,gBAHwB,EAIlB;IACNtZ,IAAI,CAACoC,MAAL,GAAc,KAAKqV,gBAAL,CAAsBrV,MAAtB,EAA8BkX,gBAA9B,CAAd;;;EAGF7D,0BAA0B,CACxBzV,IADwB,EAExBC,IAFwB,EAGxBgF,QAAkB,GAAG,KAHG,EAIlB;SAEDF,iBAAL,CAAuB/E,IAAvB,EAA6B,KAA7B,EAAoCiF,QAApC;SACKK,UAAL,CAAgBtF,IAAhB,EAAsBC,IAAtB;;;EAIF8E,iBAAiB,CACf/E,IADe,EAEfgF,eAFe,EAGfC,QAAkB,GAAG,KAHN,EAIT;UACAmzC,YAAY,GAAGpzC,eAAe,IAAI,CAAC,KAAKoI,KAAL,CAAWxI,KAAE,CAACxM,MAAd,CAAzC;UACMigD,SAAS,GAAG,KAAK1zC,KAAL,CAAW+D,MAA7B;QACI4vC,SAAS,GAAG,KAAhB;UAEMC,eAAe,GAAG,KAAK5zC,KAAL,CAAW0lC,YAAnC;SACK1lC,KAAL,CAAW0lC,YAAX,GAA0B,KAA1B;;QAEI+N,YAAJ,EAAkB;MAChBp4C,IAAI,CAACiE,IAAL,GAAY,KAAKgT,gBAAL,EAAZ;WACKU,WAAL,CAAiB3X,IAAjB,EAAuB,KAAvB,EAA8BgF,eAA9B,EAA+C,KAA/C;KAFF,MAGO;YACCwzC,SAAS,GAAG,CAAC,KAAKC,iBAAL,CAAuBz4C,IAAI,CAACoC,MAA5B,CAAnB;;UACI,CAACi2C,SAAD,IAAcG,SAAlB,EAA6B;QAC3BF,SAAS,GAAG,KAAK7G,eAAL,CAAqB,KAAK9sC,KAAL,CAAW9C,GAAhC,CAAZ;;YAIIy2C,SAAS,IAAIE,SAAjB,EAA4B;gBAEpBE,QAAQ,GAEZ,CAAC14C,IAAI,CAACE,IAAL,KAAc,QAAd,IAA0BF,IAAI,CAACE,IAAL,KAAc,aAAzC,KAEA,CAAC,CAACF,IAAI,CAACoD,GAFP,GAGIpD,IAAI,CAACoD,GAAL,CAASvB,GAHb,GAII7B,IAAI,CAACuB,KANX;eAOKe,KAAL,CACEo2C,QADF,EAEE,2EAFF;;;;YAQE1C,SAAS,GAAG,KAAKrxC,KAAL,CAAWimC,MAA7B;WACKjmC,KAAL,CAAWimC,MAAX,GAAoB,EAApB;UACI0N,SAAJ,EAAe,KAAK3zC,KAAL,CAAW+D,MAAX,GAAoB,IAApB;WAGViP,WAAL,CACE3X,IADF,EAEE,CAACq4C,SAAD,IAAc,CAACC,SAAf,IAA4B,CAACtzC,eAA7B,IAAgD,CAACC,QAAjD,IAA6D,CAACuzC,SAFhE,EAGExzC,eAHF,EAIE,CAACqzC,SAAD,IAAcC,SAJhB;MAMAt4C,IAAI,CAACiE,IAAL,GAAY,KAAKygC,UAAL,CAAgB,IAAhB,EAAsB,KAAtB,CAAZ;WACK//B,KAAL,CAAWimC,MAAX,GAAoBoL,SAApB;;;SAGGrxC,KAAL,CAAW0lC,YAAX,GAA0BkO,eAA1B;;QAEI,KAAK5zC,KAAL,CAAW+D,MAAX,IAAqB1I,IAAI,CAACwN,EAA9B,EAAkC;WAC3BjL,SAAL,CACEvC,IAAI,CAACwN,EADP,EAEErO,YAFF,EAGEqM,SAHF,EAIE,eAJF,EAKEA,SALF,EAME,CAAC6sC,SAAD,IAAcC,SANhB;;;SASG3zC,KAAL,CAAW+D,MAAX,GAAoB2vC,SAApB;;;EAGFI,iBAAiB,CACfr2C,MADe,EAEN;SACJ,IAAI4H,CAAC,GAAG,CAAR,EAAW4kC,GAAG,GAAGxsC,MAAM,CAACC,MAA7B,EAAqC2H,CAAC,GAAG4kC,GAAzC,EAA8C5kC,CAAC,EAA/C,EAAmD;UAC7C5H,MAAM,CAAC4H,CAAD,CAAN,CAAU/J,IAAV,KAAmB,YAAvB,EAAqC,OAAO,KAAP;;;WAEhC,IAAP;;;EAGF0X,WAAW,CACT3X,IADS,EAETyc,eAFS,EAITC,eAJS,EAKT22B,iBAA2B,GAAG,IALrB,EAMH;UAEAsF,QAAY,GAAGrhB,MAAM,CAACC,MAAP,CAAc,IAAd,CAArB;;SACK,IAAIvtB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGhK,IAAI,CAACoC,MAAL,CAAYC,MAAhC,EAAwC2H,CAAC,EAAzC,EAA6C;WACtCzH,SAAL,CACEvC,IAAI,CAACoC,MAAL,CAAY4H,CAAZ,CADF,EAEEpL,QAFF,EAGE6d,eAAe,GAAG,IAAH,GAAUk8B,QAH3B,EAIE,yBAJF,EAKEntC,SALF,EAME6nC,iBANF;;;;EAiBJ4C,aAAa,CACXnD,KADW,EAEXE,UAFW,EAGX/vC,mBAHW,EAIXyyC,YAJW,EAKoB;UACzBzC,IAAI,GAAG,EAAb;QACIC,KAAK,GAAG,IAAZ;;WAEO,CAAC,KAAKlmC,GAAL,CAAS8lC,KAAT,CAAR,EAAyB;UACnBI,KAAJ,EAAW;QACTA,KAAK,GAAG,KAAR;OADF,MAEO;aACA3mC,MAAL,CAAY3H,KAAE,CAAClM,KAAf;;YACI,KAAK0U,KAAL,CAAW0lC,KAAX,CAAJ,EAAuB;cACjB4C,YAAJ,EAAkB;iBACX3E,QAAL,CACE2E,YADF,EAEE,eAFF,EAGE,KAAK/wC,KAAL,CAAW+J,YAHb;;;eAMGrE,IAAL;;;;;MAKJ4oC,IAAI,CAACxuC,IAAL,CAAU,KAAKoxC,iBAAL,CAAuB7C,UAAvB,EAAmC/vC,mBAAnC,CAAV;;;WAEKgwC,IAAP;;;EAGF4C,iBAAiB,CACf7C,UADe,EAEf/vC,mBAFe,EAGfiT,gBAHe,EAIfu/B,gBAJe,EAKA;QACX9T,GAAJ;;QACIqR,UAAU,IAAI,KAAK5lC,KAAL,CAAWxI,KAAE,CAAClM,KAAd,CAAlB,EAAwC;MACtCipC,GAAG,GAAG,IAAN;KADF,MAEO,IAAI,KAAKv0B,KAAL,CAAWxI,KAAE,CAACzL,QAAd,CAAJ,EAA6B;YAC5B69C,kBAAkB,GAAG,KAAKryC,KAAL,CAAWpD,KAAtC;YACM01C,kBAAkB,GAAG,KAAKtyC,KAAL,CAAWG,QAAtC;MACA68B,GAAG,GAAG,KAAK7pB,cAAL,CACJ,KAAK66B,WAAL,CAAiB1vC,mBAAjB,EAAsCiT,gBAAtC,CADI,EAEJ8gC,kBAFI,EAGJC,kBAHI,CAAN;KAHK,MAQA,IAAI,KAAK7pC,KAAL,CAAWxI,KAAE,CAAC7L,QAAd,CAAJ,EAA6B;WAC7B+rC,YAAL,CAAkB,oBAAlB;;UACI,CAAC2Q,gBAAL,EAAuB;aAChBnzC,KAAL,CAAW,KAAKqC,KAAL,CAAWpD,KAAtB,EAA6B,iCAA7B;;;YAEIvB,IAAI,GAAG,KAAKqF,SAAL,EAAb;WACKgF,IAAL;MACAs3B,GAAG,GAAG,KAAKr8B,UAAL,CAAgBtF,IAAhB,EAAsB,qBAAtB,CAAN;KAPK,MAQA;MACL2hC,GAAG,GAAG,KAAK1qB,gBAAL,CACJ,KADI,EAEJhU,mBAFI,EAGJ,KAAK6U,cAHD,EAIJ5B,gBAJI,CAAN;;;WAOKyrB,GAAP;;;EASFl0B,eAAe,CAAC0D,OAAD,EAAkC;UACzCnR,IAAI,GAAG,KAAKqF,SAAL,EAAb;UACM9N,IAAI,GAAG,KAAK2hC,mBAAL,CAAyBl5B,IAAI,CAACuB,KAA9B,EAAqC4P,OAArC,CAAb;WAEO,KAAKyD,gBAAL,CAAsB5U,IAAtB,EAA4BzI,IAA5B,CAAP;;;EAGFqd,gBAAgB,CAAC5U,IAAD,EAAqBzI,IAArB,EAAiD;IAC/DyI,IAAI,CAACzI,IAAL,GAAYA,IAAZ;IACAyI,IAAI,CAACwB,GAAL,CAASo3C,cAAT,GAA0BrhD,IAA1B;WAEO,KAAK+N,UAAL,CAAgBtF,IAAhB,EAAsB,YAAtB,CAAP;;;EAGFk5B,mBAAmB,CAACnvB,GAAD,EAAcoH,OAAd,EAAyC;QACtD5Z,IAAJ;;QAEI,KAAK6V,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAJ,EAAyB;MACvBA,IAAI,GAAG,KAAKoN,KAAL,CAAW9D,KAAlB;KADF,MAEO,IAAI,KAAK8D,KAAL,CAAW1E,IAAX,CAAgBjJ,OAApB,EAA6B;MAClCO,IAAI,GAAG,KAAKoN,KAAL,CAAW1E,IAAX,CAAgBjJ,OAAvB;;UAQE,CAACO,IAAI,KAAK,OAAT,IAAoBA,IAAI,KAAK,UAA9B,MACC,KAAKoN,KAAL,CAAW4D,UAAX,KAA0B,KAAK5D,KAAL,CAAW+J,YAAX,GAA0B,CAApD,IACC,KAAKpG,KAAL,CAAWwQ,UAAX,CAAsB,KAAKnU,KAAL,CAAW+J,YAAjC,QAFF,CADF,EAIE;aACK/J,KAAL,CAAW8C,OAAX,CAAmBG,GAAnB;;KAbG,MAeA;YACC,KAAKqH,UAAL,EAAN;;;QAGEkC,OAAJ,EAAa;WAGNxM,KAAL,CAAW1E,IAAX,GAAkB2E,KAAE,CAACrN,IAArB;KAHF,MAIO;WACA+jB,iBAAL,CACE/jB,IADF,EAEE,KAAKoN,KAAL,CAAWpD,KAFb,EAGE,CAAC,CAAC,KAAKoD,KAAL,CAAW1E,IAAX,CAAgBjJ,OAHpB,EAIE,KAJF;;;SAQGqT,IAAL;WAEO9S,IAAP;;;EAGF+jB,iBAAiB,CACftS,IADe,EAEflE,QAFe,EAGf29B,aAHe,EAIfxpB,SAJe,EAKT;QACF,KAAKjR,KAAL,CAAWC,WAAX,IAA0Be,IAAI,KAAK,OAAvC,EAAgD;WACzC1G,KAAL,CACEwC,QADF,EAEE,sDAFF;;;;QAOEkE,IAAI,KAAK,OAAb,EAAsB;UAChB,KAAKhB,KAAL,CAAW+sB,OAAf,EAAwB;aACjBzyB,KAAL,CACEwC,QADF,EAEE,4DAFF;;;;UAOA,KAAKH,KAAL,CAAWomC,QAAX,KAAwB,CAAC,CAAzB,KACC,KAAKpmC,KAAL,CAAWi/B,sBAAX,IAAqC,KAAK6Q,cAAL,EADtC,CADF,EAGE;aACK9vC,KAAL,CAAWomC,QAAX,GAAsB,KAAKpmC,KAAL,CAAWpD,KAAjC;;;;QAKF,KAAKyG,KAAL,CAAWotB,OAAX,IACA,CAAC,KAAKptB,KAAL,CAAWqtB,kBADZ,IAEArsB,IAAI,KAAK,WAHX,EAIE;WACK1G,KAAL,CACEwC,QADF,EAEE,uDAFF;;;;QAME29B,aAAa,IAAIn5B,SAAS,CAACN,IAAD,CAA9B,EAAsC;WAC/B1G,KAAL,CAAWwC,QAAX,EAAsB,uBAAsBkE,IAAK,GAAjD;;;;UAII6vC,YAAY,GAAG,CAAC,KAAKl0C,KAAL,CAAW+D,MAAZ,GACjBK,cADiB,GAEjBkQ,SAAS,GACT5P,wBADS,GAETH,oBAJJ;;QAMI2vC,YAAY,CAAC7vC,IAAD,EAAO,KAAKC,QAAZ,CAAhB,EAAuC;UACjC,CAAC,KAAKjB,KAAL,CAAW+sB,OAAZ,IAAuB/rB,IAAI,KAAK,OAApC,EAA6C;aACtC1G,KAAL,CACEwC,QADF,EAEE,uDAFF;OADF,MAKO;aACAxC,KAAL,CAAWwC,QAAX,EAAsB,6BAA4BkE,IAAK,GAAvD;;;;;EAKNyrC,cAAc,GAAY;QACpB,KAAKzsC,KAAL,CAAW6sB,UAAf,EAA2B,OAAO,KAAK7sB,KAAL,CAAW+sB,OAAlB;QACvB,KAAKv9B,OAAL,CAAawvC,yBAAjB,EAA4C,OAAO,IAAP;;QACxC,KAAKjrB,SAAL,CAAe,eAAf,CAAJ,EAAqC;aAC5B,KAAK9S,QAAL,IAAiB,KAAKjB,KAAL,CAAW+sB,OAAnC;;;WAEK,KAAP;;;EAKF2f,UAAU,GAAsB;UACxB10C,IAAI,GAAG,KAAKqF,SAAL,EAAb;SAEKgF,IAAL;;QAEI,KAAK1F,KAAL,CAAW0lC,YAAf,EAA6B;WACtB/nC,KAAL,CACEtC,IAAI,CAACuB,KADP,EAEE,mDAFF;KADF,MAKO,IAAI,KAAKoD,KAAL,CAAWomC,QAAX,KAAwB,CAAC,CAA7B,EAAgC;WAChCpmC,KAAL,CAAWomC,QAAX,GAAsB/qC,IAAI,CAACuB,KAA3B;;;QAEE,KAAKyL,GAAL,CAASpI,KAAE,CAAClK,IAAZ,CAAJ,EAAuB;WAChB4H,KAAL,CACEtC,IAAI,CAACuB,KADP,EAEE,uFAFF;;;QAME,CAAC,KAAKyG,KAAL,CAAW6sB,UAAZ,IAA0B,CAAC,KAAKr9B,OAAL,CAAawvC,yBAA5C,EAAuE;UAEnE,KAAKlQ,qBAAL,MAGA,KAAK1pB,KAAL,CAAWxI,KAAE,CAACpK,OAAd,CAHA,IAIA,KAAK4S,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAJA,IAKA,KAAK4U,KAAL,CAAWxI,KAAE,CAAC1M,QAAd,CALA,IAMA,KAAKkV,KAAL,CAAWxI,KAAE,CAACxL,SAAd,CANA,IASA,KAAKgU,KAAL,CAAWxI,KAAE,CAAC7M,MAAd,CATA,IAUA,KAAKqV,KAAL,CAAWxI,KAAE,CAACjK,KAAd,CAVA,IAaC,KAAKohB,SAAL,CAAe,aAAf,KAAiC,KAAK3O,KAAL,CAAWxI,KAAE,CAACnK,MAAd,CAdpC,EAeE;aACK4tC,2BAAL,GAAmC,IAAnC;OAhBF,MAiBO;aACAD,iBAAL,GAAyB,IAAzB;;;;QAIA,CAAC,KAAKzjC,KAAL,CAAW+lC,SAAhB,EAA2B;MACzB1qC,IAAI,CAAC8T,QAAL,GAAgB,KAAKwoB,eAAL,EAAhB;;;WAGK,KAAKh3B,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;;;EAKF0zC,UAAU,CAACz9B,IAAD,EAAqC;UACvCjW,IAAI,GAAG,KAAKqF,SAAL,EAAb;;QAEI,KAAKV,KAAL,CAAW0lC,YAAf,EAA6B;WACtB/nC,KAAL,CAAWtC,IAAI,CAACuB,KAAhB,EAAuB,8CAAvB;KADF,MAEO,IAAI,KAAKoD,KAAL,CAAWmmC,QAAX,KAAwB,CAAC,CAA7B,EAAgC;WAChCnmC,KAAL,CAAWmmC,QAAX,GAAsB9qC,IAAI,CAACuB,KAA3B;;;SAGG8I,IAAL;;QAEE,KAAK+C,KAAL,CAAWxI,KAAE,CAACjM,IAAd,KACC,CAAC,KAAKyU,KAAL,CAAWxI,KAAE,CAAClK,IAAd,CAAD,IAAwB,CAAC,KAAKiK,KAAL,CAAW1E,IAAX,CAAgB1J,UAD1C,IAEA,KAAKugC,qBAAL,EAHF,EAIE;MACA92B,IAAI,CAAC84C,QAAL,GAAgB,KAAhB;MACA94C,IAAI,CAAC8T,QAAL,GAAgB,IAAhB;KANF,MAOO;MACL9T,IAAI,CAAC84C,QAAL,GAAgB,KAAK9rC,GAAL,CAASpI,KAAE,CAAClK,IAAZ,CAAhB;MACAsF,IAAI,CAAC8T,QAAL,GAAgB,KAAKmD,gBAAL,CAAsBhB,IAAtB,CAAhB;;;WAEK,KAAK3Q,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;;;EAMFi0C,4BAA4B,CAAC35B,IAAD,EAAqBgoB,YAArB,EAA2C;QACjE,KAAK52B,eAAL,CAAqB,kBAArB,EAAyC,UAAzC,MAAyD,OAA7D,EAAsE;UAChE4O,IAAI,CAACra,IAAL,KAAc,oBAAlB,EAAwC;aAGjCqC,KAAL,CACEggC,YADF,EAEG,mEAFH;;;;;EAQN+R,sBAAsB,CACpB0E,eADoB,EAEpBl0C,QAFoB,EAGpBC,QAHoB,EAIJ;UACVk0C,aAAa,GAAG,KAAKC,2BAAL,CAAiCF,eAAjC,CAAtB;SAEKG,iCAAL,CACEH,eADF,EAEEC,aAFF,EAGEn0C,QAHF;WAMO,KAAKs0C,6BAAL,CACLJ,eADK,EAELC,aAFK,EAGLn0C,QAHK,EAILC,QAJK,CAAP;;;EAQFo0C,iCAAiC,CAC/BH,eAD+B,EAE/BC,aAF+B,EAG/Bn0C,QAH+B,EAIzB;QACF,KAAKuI,KAAL,CAAWxI,KAAE,CAAC3L,KAAd,CAAJ,EAA0B;YAGlB,KAAKqJ,KAAL,CACJ,KAAKqC,KAAL,CAAWpD,KADP,EAEH,kGAFG,CAAN;KAHF,MAOO,IACLy3C,aAAa,KAAK,yBAAlB,IACAD,eAAe,CAAC94C,IAAhB,KAAyB,oBAFpB,EAGL;WACKqC,KAAL,CACEuC,QADF,EAEG,gEAFH;;;;EAOJs0C,6BAA6B,CAC3BJ,eAD2B,EAE3BC,aAF2B,EAG3Bn0C,QAH2B,EAI3BC,QAJ2B,EAKX;UACVuK,QAAQ,GAAG,KAAK/N,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAjB;;YACQk0C,aAAR;WACO,sBAAL;QACE3pC,QAAQ,CAACrJ,MAAT,GAAkB+yC,eAAlB;;;WAEG,yBAAL;QACE1pC,QAAQ,CAACrJ,MAAT,GAAkB+yC,eAAe,CAAC/yC,MAAlC;;;WAEG,6BAAL;QACEqJ,QAAQ,CAACrJ,MAAT,GAAkB+yC,eAAe,CAACjlC,QAAlC;;;WAEG,yBAAL;YACM,CAAC,KAAKslC,0CAAL,EAAL,EAAwD;eACjD92C,KAAL,CACEuC,QADF,EAEG,6DAFH;;;QAKFwK,QAAQ,CAAC5N,UAAT,GAAsBs3C,eAAtB;;;;cAGM,IAAI7sC,KAAJ,CACH,yDAAwD8sC,aAAc,GADnE,CAAN;;;WAIG,KAAK1zC,UAAL,CAAgB+J,QAAhB,EAA0B2pC,aAA1B,CAAP;;;EAGFC,2BAA2B,CAACx3C,UAAD,EAA4C;YAC7DA,UAAU,CAACxB,IAAnB;;eAEW,KAAKo5C,iBAAL,CAAuB53C,UAAvB,IACH,sBADG,GAEH,yBAFJ;;;;EAMN43C,iBAAiB,CAAC53C,UAAD,EAAoC;YAC3CA,UAAU,CAACxB,IAAnB;WACO,kBAAL;eAEI,CAACwB,UAAU,CAACyB,QAAZ,IAAwB,KAAKm2C,iBAAL,CAAuB53C,UAAU,CAAC+vB,MAAlC,CAD1B;;WAGG,YAAL;eACS,IAAP;;;eAEO,KAAP;;;;EAUN4iB,0BAA0B,CAAIkF,QAAJ,EAA0B;UAC5CC,sBAAsB,GAAG,KAAK50C,KAAL,CAAW4lC,YAA1C;SACK5lC,KAAL,CAAW4lC,YAAX,GAA0B;MAExBC,wBAAwB,EAAE,CAFF;MAIxBC,aAAa,EAAE;KAJjB;;QAOI;aACK6O,QAAQ,EAAf;KADF,SAEU;WACH30C,KAAL,CAAW4lC,YAAX,GAA0BgP,sBAA1B;;;;EAWJC,0BAA0B,CAAIF,QAAJ,EAA0B;UAC5CC,sBAAsB,GAAG,KAAK50C,KAAL,CAAW4lC,YAA1C;SACK5lC,KAAL,CAAW4lC,YAAX,GAA0B;MAExBC,wBAAwB,EAAE,CAFF;MAIxBC,aAAa,EAAE;KAJjB;;QAOI;aACK6O,QAAQ,EAAf;KADF,SAEU;WACH30C,KAAL,CAAW4lC,YAAX,GAA0BgP,sBAA1B;;;;EAIJhF,8BAA8B,CAAI+E,QAAJ,EAA0B;UAChDG,0BAA0B,GAAG,KAAK90C,KAAL,CAAW+lC,SAA9C;SACK/lC,KAAL,CAAW+lC,SAAX,GAAuB,IAAvB;;QAEI;aACK4O,QAAQ,EAAf;KADF,SAEU;WACH30C,KAAL,CAAW+lC,SAAX,GAAuB+O,0BAAvB;;;;EAMJlD,sBAAsB,GAAS;SACxB5xC,KAAL,CAAW4lC,YAAX,CAAwBE,aAAxB,GAAwC,CAAxC;;;EAGF6L,mDAAmD,GAAY;WACtD,KAAK3xC,KAAL,CAAW4lC,YAAX,CAAwBC,wBAAxB,IAAoD,CAA3D;;;EAGF4O,0CAA0C,GAAY;WAElD,KAAKz0C,KAAL,CAAW4lC,YAAX,CAAwBE,aAAxB,IAAyC,IAAzC,IACA,KAAK9lC,KAAL,CAAW4lC,YAAX,CAAwBE,aAAxB,IAAyC,CAF3C;;;EAMF+J,uBAAuB,CAACV,IAAD,EAAe79B,IAAf,EAA6C;UAC5DpR,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;UACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;SAEKH,KAAL,CAAWylC,gBAAX,GAA8B,KAAKzlC,KAAL,CAAWpD,KAAzC;UACMq0C,6BAA6B,GAAG,KAAKjxC,KAAL,CAAWgmC,0BAAjD;SACKhmC,KAAL,CAAWgmC,0BAAX,GAAwC,IAAxC;UAEMuL,GAAG,GAAG,KAAK7T,WAAL,CACV,KAAK/F,eAAL,EADU,EAEVz3B,QAFU,EAGVC,QAHU,EAIVgvC,IAJU,EAKV79B,IALU,CAAZ;SAQKtR,KAAL,CAAWgmC,0BAAX,GAAwCiL,6BAAxC;WAEOM,GAAP;;;;;AC75EJ,MAAMwD,SAAS,GAAG;EAAEx5C,IAAI,EAAE;CAA1B;MACEy5C,WAAW,GAAG;EAAEz5C,IAAI,EAAE;CADxB;AAGA,MAAM05C,aAAa,GAAG,KAAtB;MACEC,cAAc,GAAG,KADnB;MAEEC,sBAAsB,GAAG,KAF3B;MAGEC,gBAAgB,GAAG,KAHrB;AAKA,AAAe,MAAMC,eAAN,SAA8BzG,gBAA9B,CAA+C;EAQ5Dt1B,aAAa,CAACC,IAAD,EAAeC,OAAf,EAA2C;IACtDA,OAAO,CAAC0oB,UAAR,GAAqB,KAAKrvC,OAAL,CAAaqvC,UAAlC;IAEA1oB,OAAO,CAAC87B,WAAR,GAAsB,KAAKC,yBAAL,EAAtB;SAEKx2C,cAAL,CAAoBya,OAApB,EAA6B,IAA7B,EAAmC,IAAnC,EAAyCvZ,KAAE,CAAC3M,GAA5C;;QAGE,KAAKgR,QAAL,IACA,CAAC,KAAKzR,OAAL,CAAa4vC,sBADd,IAEA,KAAKp/B,KAAL,CAAW2sB,gBAAX,CAA4BmZ,IAA5B,GAAmC,CAHrC,EAIE;qCACqBjI,KAAK,CAACsU,IAAN,CAAW,KAAKnyC,KAAL,CAAW2sB,gBAAtB,CADrB,iCAC8D;cAAnD,CAACp9B,IAAD,mBAAN;cACGwS,GAAG,GAAG,KAAK/B,KAAL,CAAW2sB,gBAAX,CAA4B2T,GAA5B,CAAgC/wC,IAAhC,CAAZ;aAEK+K,KAAL,CAAWyH,GAAX,EAAiB,WAAUxS,IAAK,kBAAhC;;;;IAIJ2mB,IAAI,CAACC,OAAL,GAAe,KAAK7Y,UAAL,CAAgB6Y,OAAhB,EAAyB,SAAzB,CAAf;IACAD,IAAI,CAAC8sB,QAAL,GAAgB,KAAKrmC,KAAL,CAAWqmC,QAA3B;QAEI,KAAKxzC,OAAL,CAAa+vC,MAAjB,EAAyBrpB,IAAI,CAACqpB,MAAL,GAAc,KAAKA,MAAnB;WAElB,KAAKjiC,UAAL,CAAgB4Y,IAAhB,EAAsB,MAAtB,CAAP;;;EAKFza,eAAe,CAACpC,IAAD,EAAiC;UACxCmB,IAAI,GAAGnB,IAAI,CAACI,UAAlB;UAEML,gBAAgB,GAAG,KAAKE,WAAL,CAAiBkB,IAAI,CAACjB,KAAtB,EAA6BiB,IAAI,CAAChB,GAAL,CAASD,KAAtC,CAAzB;UACMJ,SAAS,GAAG,KAAKG,WAAL,CAAiBD,IAAI,CAACE,KAAtB,EAA6BF,IAAI,CAACG,GAAL,CAASD,KAAtC,CAAlB;UAEMG,GAAG,GAAG,KAAK4G,KAAL,CAAWxG,KAAX,CAAiBU,IAAI,CAACjB,KAAtB,EAA6BiB,IAAI,CAACX,GAAlC,CAAZ;UACMgK,GAAG,GAAIzK,gBAAgB,CAACP,KAAjB,GAAyBa,GAAG,CAACI,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,CAAtC;SAEKivC,QAAL,CAAc3vC,gBAAd,EAAgC,KAAhC,EAAuCM,GAAvC;SACKqvC,QAAL,CAAc3vC,gBAAd,EAAgC,UAAhC,EAA4CyK,GAA5C;IAEA1K,SAAS,CAACN,KAAV,GAAkB,KAAKe,YAAL,CAChBR,gBADgB,EAEhB,kBAFgB,EAGhBoB,IAAI,CAACX,GAHW,EAIhBW,IAAI,CAAChB,GAAL,CAASK,GAJO,CAAlB;WAOO,KAAKD,YAAL,CAAkBT,SAAlB,EAA6B,WAA7B,EAA0CE,IAAI,CAACQ,GAA/C,EAAoDR,IAAI,CAACG,GAAL,CAASK,GAA7D,CAAP;;;EAGFq4C,yBAAyB,GAAkC;QACrD,CAAC,KAAK9sC,KAAL,CAAWxI,KAAE,CAACpL,oBAAd,CAAL,EAA0C;aACjC,IAAP;;;UAGIwG,IAAI,GAAG,KAAKqF,SAAL,EAAb;IACArF,IAAI,CAACa,KAAL,GAAa,KAAK8D,KAAL,CAAW9D,KAAxB;SACKwJ,IAAL;WACO,KAAK/E,UAAL,CAAgBtF,IAAhB,EAAsB,sBAAtB,CAAP;;;EAGF2P,KAAK,CAAClI,OAAD,EAA4B;QAC3B,CAAC,KAAKmH,YAAL,CAAkB,KAAlB,CAAL,EAA+B;aACtB,KAAP;;;UAEIvE,IAAI,GAAG,KAAKiiC,cAAL,EAAb;UACM8N,MAAM,GAAG,KAAK9xC,KAAL,CAAWwQ,UAAX,CAAsBzO,IAAtB,CAAf;QAKI+vC,MAAM,OAAV,EAA4C,OAAO,IAAP;QACxC3yC,OAAJ,EAAa,OAAO,KAAP;QAET2yC,MAAM,QAAV,EAAyC,OAAO,IAAP;;QAErCnwC,iBAAiB,CAACmwC,MAAD,CAArB,EAA+B;UACzBrwC,GAAG,GAAGM,IAAI,GAAG,CAAjB;;aACOC,gBAAgB,CAAC,KAAKhC,KAAL,CAAWwQ,UAAX,CAAsB/O,GAAtB,CAAD,CAAvB,EAAqD;UACjDA,GAAF;;;YAEI8H,KAAK,GAAG,KAAKvJ,KAAL,CAAWxG,KAAX,CAAiBuI,IAAjB,EAAuBN,GAAvB,CAAd;UACI,CAACR,yBAAyB,CAAClB,IAA1B,CAA+BwJ,KAA/B,CAAL,EAA4C,OAAO,IAAP;;;WAEvC,KAAP;;;EAUF6D,cAAc,CAACjO,OAAD,EAAmB7D,QAAnB,EAAoD;QAC5D,KAAKwJ,KAAL,CAAWxI,KAAE,CAACtL,EAAd,CAAJ,EAAuB;WAChB88C,eAAL,CAAqB,IAArB;;;WAEK,KAAKxT,qBAAL,CAA2Bn7B,OAA3B,EAAoC7D,QAApC,CAAP;;;EAGFg/B,qBAAqB,CAACn7B,OAAD,EAAmB7D,QAAnB,EAAoD;QACnE68B,SAAS,GAAG,KAAK97B,KAAL,CAAW1E,IAA3B;UACMD,IAAI,GAAG,KAAKqF,SAAL,EAAb;QACInF,IAAJ;;QAEI,KAAKyP,KAAL,CAAWlI,OAAX,CAAJ,EAAyB;MACvBg5B,SAAS,GAAG77B,KAAE,CAAC/I,IAAf;MACAqE,IAAI,GAAG,KAAP;;;YAOMugC,SAAR;WACO77B,KAAE,CAAC/J,MAAR;WACK+J,KAAE,CAAC5J,SAAR;eAES,KAAKq/C,2BAAL,CAAiCr6C,IAAjC,EAAuCygC,SAAS,CAACzpC,OAAjD,CAAP;;WACG4N,KAAE,CAAC3J,SAAR;eACS,KAAKq/C,sBAAL,CAA4Bt6C,IAA5B,CAAP;;WACG4E,KAAE,CAACzJ,GAAR;eACS,KAAKo/C,gBAAL,CAAsBv6C,IAAtB,CAAP;;WACG4E,KAAE,CAACtJ,IAAR;eACS,KAAKk/C,iBAAL,CAAuBx6C,IAAvB,CAAP;;WACG4E,KAAE,CAACrJ,SAAR;YACM,KAAKkgC,iBAAL,SAAJ,EAAgD;;YAC5Ch0B,OAAJ,EAAa;cACP,KAAK9C,KAAL,CAAW+D,MAAf,EAAuB;iBAChBpG,KAAL,CACE,KAAKqC,KAAL,CAAWpD,KADb,EAEE,oFAFF;WADF,MAKO,IAAIkG,OAAO,KAAK,IAAZ,IAAoBA,OAAO,KAAK,OAApC,EAA6C;iBAC7CnF,KAAL,CACE,KAAKqC,KAAL,CAAWpD,KADb,EAEE,2EACE,mDAHJ;;;;eAOG,KAAKm/B,sBAAL,CAA4B1gC,IAA5B,EAAkC,KAAlC,EAAyC,CAACyH,OAA1C,CAAP;;WAEG7C,KAAE,CAACxI,MAAR;YACMqL,OAAJ,EAAa,KAAKwH,UAAL;eACN,KAAK0xB,UAAL,CAAgB3gC,IAAhB,EAAsB,IAAtB,CAAP;;WAEG4E,KAAE,CAACpJ,GAAR;eACS,KAAKi/C,gBAAL,CAAsBz6C,IAAtB,CAAP;;WACG4E,KAAE,CAACnJ,OAAR;eACS,KAAKi/C,oBAAL,CAA0B16C,IAA1B,CAAP;;WACG4E,KAAE,CAAClJ,OAAR;eACS,KAAKi/C,oBAAL,CAA0B36C,IAA1B,CAAP;;WACG4E,KAAE,CAACjJ,MAAR;eACS,KAAKi/C,mBAAL,CAAyB56C,IAAzB,CAAP;;WACG4E,KAAE,CAAChJ,IAAR;eACS,KAAKi/C,iBAAL,CAAuB76C,IAAvB,CAAP;;WAEG4E,KAAE,CAAC9I,MAAR;WACK8I,KAAE,CAAC/I,IAAR;QACEqE,IAAI,GAAGA,IAAI,IAAI,KAAKyE,KAAL,CAAW9D,KAA1B;;YACI4G,OAAO,IAAIvH,IAAI,KAAK,KAAxB,EAA+B;eACxBoC,KAAL,CACE,KAAKqC,KAAL,CAAWpD,KADb,EAEE,iEAFF;;;eAKK,KAAKq/B,iBAAL,CAAuB5gC,IAAvB,EAA6BE,IAA7B,CAAP;;WAEG0E,KAAE,CAAC7I,MAAR;eACS,KAAK++C,mBAAL,CAAyB96C,IAAzB,CAAP;;WACG4E,KAAE,CAAC5I,KAAR;eACS,KAAK++C,kBAAL,CAAwB/6C,IAAxB,CAAP;;WACG4E,KAAE,CAACxM,MAAR;eACS,KAAKssC,UAAL,EAAP;;WACG9/B,KAAE,CAACjM,IAAR;eACS,KAAKqiD,mBAAL,CAAyBh7C,IAAzB,CAAP;;WACG4E,KAAE,CAACtI,OAAR;WACKsI,KAAE,CAACrI,OAAR;;gBACQ0+C,iBAAiB,GAAG,KAAKxf,iBAAL,EAA1B;;cAEEwf,iBAAiB,OAAjB,IACAA,iBAAiB,OAFnB,EAGE;;;;cAIE,CAAC,KAAKzjD,OAAL,CAAa0vC,2BAAd,IAA6C,CAACtjC,QAAlD,EAA4D;iBACrDtB,KAAL,CACE,KAAKqC,KAAL,CAAWpD,KADb,EAEE,wDAFF;;;eAMG8I,IAAL;cAEI8L,MAAJ;;cACIsqB,SAAS,KAAK77B,KAAE,CAACrI,OAArB,EAA8B;YAC5B4Z,MAAM,GAAG,KAAK7G,WAAL,CAAiBtP,IAAjB,CAAT;;gBAGEmW,MAAM,CAAClW,IAAP,KAAgB,mBAAhB,KACC,CAACkW,MAAM,CAACvL,UAAR,IAAsBuL,MAAM,CAACvL,UAAP,KAAsB,OAD7C,CADF,EAGE;mBACKw9B,iBAAL,GAAyB,IAAzB;;WAPJ,MASO;YACLjyB,MAAM,GAAG,KAAKtG,WAAL,CAAiB7P,IAAjB,CAAT;;gBAGGmW,MAAM,CAAClW,IAAP,KAAgB,wBAAhB,KACE,CAACkW,MAAM,CAACrG,UAAR,IAAsBqG,MAAM,CAACrG,UAAP,KAAsB,OAD9C,CAAD,IAECqG,MAAM,CAAClW,IAAP,KAAgB,sBAAhB,KACE,CAACkW,MAAM,CAACrG,UAAR,IAAsBqG,MAAM,CAACrG,UAAP,KAAsB,OAD9C,CAFD,IAIAqG,MAAM,CAAClW,IAAP,KAAgB,0BALlB,EAME;mBACKmoC,iBAAL,GAAyB,IAAzB;;;;eAICpwB,uBAAL,CAA6BhY,IAA7B;iBAEOmW,MAAP;;;;;cAII,KAAK+kC,eAAL,EAAJ,EAA4B;gBACtBzzC,OAAJ,EAAa;mBACNnF,KAAL,CACE,KAAKqC,KAAL,CAAWpD,KADb,EAEE,yEAFF;;;iBAKG8I,IAAL;mBACO,KAAKq2B,sBAAL,CAA4B1gC,IAA5B,EAAkC,IAAlC,EAAwC,CAACyH,OAAzC,CAAP;;;;;UAUA0zC,SAAS,GAAG,KAAKx2C,KAAL,CAAW9D,KAA7B;UACM2B,IAAI,GAAG,KAAKyK,eAAL,EAAb;;QAGEwzB,SAAS,KAAK77B,KAAE,CAACrN,IAAjB,IACAiL,IAAI,CAACvC,IAAL,KAAc,YADd,IAEA,KAAK+M,GAAL,CAASpI,KAAE,CAAChM,KAAZ,CAHF,EAIE;aACO,KAAKwiD,qBAAL,CAA2Bp7C,IAA3B,EAAiCm7C,SAAjC,EAA4C34C,IAA5C,EAAkDiF,OAAlD,CAAP;KALF,MAMO;aACE,KAAKmO,wBAAL,CAA8B5V,IAA9B,EAAoCwC,IAApC,CAAP;;;;EAIJwV,uBAAuB,CAAChY,IAAD,EAAqB;QACtC,CAAC,KAAKxI,OAAL,CAAa0vC,2BAAd,IAA6C,CAAC,KAAKj+B,QAAvD,EAAiE;WAC1D3G,KAAL,CACEtC,IAAI,CAACuB,KADP,EAEG,mEAFH,EAGE;QACEkF,IAAI,EAAE;OAJV;;;;EAUJm+B,cAAc,CAAC5kC,IAAD,EAA8B;UACpCwhC,UAAU,GAAG,KAAK78B,KAAL,CAAWkmC,cAAX,CACjB,KAAKlmC,KAAL,CAAWkmC,cAAX,CAA0BxoC,MAA1B,GAAmC,CADlB,CAAnB;;QAGIm/B,UAAU,CAACn/B,MAAf,EAAuB;MACrBrC,IAAI,CAACwhC,UAAL,GAAkBA,UAAlB;WACKplB,0BAAL,CAAgCpc,IAAhC,EAAsCwhC,UAAU,CAAC,CAAD,CAAhD;WACK78B,KAAL,CAAWkmC,cAAX,CAA0B,KAAKlmC,KAAL,CAAWkmC,cAAX,CAA0BxoC,MAA1B,GAAmC,CAA7D,IAAkE,EAAlE;;;;EAIJyhC,uBAAuB,GAAY;WAC1B,KAAK12B,KAAL,CAAWxI,KAAE,CAACxI,MAAd,CAAP;;;EAGFg6C,eAAe,CAACiF,WAAD,EAA8B;UACrCC,wBAAwB,GAAG,KAAK32C,KAAL,CAAWkmC,cAAX,CAC/B,KAAKlmC,KAAL,CAAWkmC,cAAX,CAA0BxoC,MAA1B,GAAmC,CADJ,CAAjC;;WAGO,KAAK+K,KAAL,CAAWxI,KAAE,CAACtL,EAAd,CAAP,EAA0B;YAClBiiD,SAAS,GAAG,KAAKnI,cAAL,EAAlB;MACAkI,wBAAwB,CAAC72C,IAAzB,CAA8B82C,SAA9B;;;QAGE,KAAKnuC,KAAL,CAAWxI,KAAE,CAACtI,OAAd,CAAJ,EAA4B;UACtB,CAAC++C,WAAL,EAAkB;aACXpsC,UAAL;;;UAIA,KAAK8M,SAAL,CAAe,YAAf,KACA,CAAC,KAAKrQ,eAAL,CAAqB,YAArB,EAAmC,wBAAnC,CAFH,EAGE;aACKpJ,KAAL,CACE,KAAKqC,KAAL,CAAWpD,KADb,EAEE,8EACE,yCAHJ;;KATJ,MAeO,IAAI,CAAC,KAAKuiC,uBAAL,EAAL,EAAqC;YACpC,KAAKxhC,KAAL,CACJ,KAAKqC,KAAL,CAAWpD,KADP,EAEJ,4DAFI,CAAN;;;;EAOJ6xC,cAAc,GAAgB;SACvB9B,eAAL,CAAqB,CAAC,mBAAD,EAAsB,YAAtB,CAArB;UAEMtxC,IAAI,GAAG,KAAKqF,SAAL,EAAb;SACKgF,IAAL;;QAEI,KAAK0R,SAAL,CAAe,YAAf,CAAJ,EAAkC;WAG3BpX,KAAL,CAAWkmC,cAAX,CAA0BpmC,IAA1B,CAA+B,EAA/B;YAEMI,QAAQ,GAAG,KAAKF,KAAL,CAAWpD,KAA5B;YACMuD,QAAQ,GAAG,KAAKH,KAAL,CAAWG,QAA5B;UACItC,IAAJ;;UAEI,KAAKwK,GAAL,CAASpI,KAAE,CAACpM,MAAZ,CAAJ,EAAyB;QACvBgK,IAAI,GAAG,KAAKyK,eAAL,EAAP;aACKV,MAAL,CAAY3H,KAAE,CAACnM,MAAf;OAFF,MAGO;QACL+J,IAAI,GAAG,KAAKiL,eAAL,CAAqB,KAArB,CAAP;;eAEO,KAAKT,GAAL,CAASpI,KAAE,CAAC9L,GAAZ,CAAP,EAAyB;gBACjBkH,IAAI,GAAG,KAAKsB,WAAL,CAAiBuD,QAAjB,EAA2BC,QAA3B,CAAb;UACA9E,IAAI,CAACwxB,MAAL,GAAchvB,IAAd;UACAxC,IAAI,CAACiU,QAAL,GAAgB,KAAKxG,eAAL,CAAqB,IAArB,CAAhB;UACAzN,IAAI,CAACkD,QAAL,GAAgB,KAAhB;UACAV,IAAI,GAAG,KAAK8C,UAAL,CAAgBtF,IAAhB,EAAsB,kBAAtB,CAAP;;;;MAIJA,IAAI,CAACyB,UAAL,GAAkB,KAAKkiC,4BAAL,CAAkCnhC,IAAlC,CAAlB;WACKmC,KAAL,CAAWkmC,cAAX,CAA0BjjC,GAA1B;KAzBF,MA0BO;MACL5H,IAAI,CAACyB,UAAL,GAAkB,KAAKkzC,mBAAL,EAAlB;;;WAEK,KAAKrvC,UAAL,CAAgBtF,IAAhB,EAAsB,WAAtB,CAAP;;;EAGF2jC,4BAA4B,CAACnhC,IAAD,EAAmC;QACzD,KAAKwK,GAAL,CAASpI,KAAE,CAACpM,MAAZ,CAAJ,EAAyB;YACjBwH,IAAI,GAAG,KAAKu4B,eAAL,CAAqB/1B,IAArB,CAAb;MACAxC,IAAI,CAACgG,MAAL,GAAcxD,IAAd;MACAxC,IAAI,CAACkG,SAAL,GAAiB,KAAK8W,4BAAL,CAAkCpY,KAAE,CAACnM,MAArC,EAA6C,KAA7C,CAAjB;WACK8gB,gBAAL,CAAsBvZ,IAAI,CAACkG,SAA3B;aACO,KAAKZ,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;;;WAGKwC,IAAP;;;EAGF63C,2BAA2B,CACzBr6C,IADyB,EAEzBhJ,OAFyB,EAGe;UAClCwkD,OAAO,GAAGxkD,OAAO,KAAK,OAA5B;SACKqT,IAAL;;QAEI,KAAKm2B,gBAAL,EAAJ,EAA6B;MAC3BxgC,IAAI,CAAClJ,KAAL,GAAa,IAAb;KADF,MAEO;MACLkJ,IAAI,CAAClJ,KAAL,GAAa,KAAK2W,eAAL,EAAb;WACKW,SAAL;;;SAGGq2B,mBAAL,CAAyBzkC,IAAzB,EAA+BhJ,OAA/B;WAEO,KAAKsO,UAAL,CACLtF,IADK,EAELw7C,OAAO,GAAG,gBAAH,GAAsB,mBAFxB,CAAP;;;EAMF/W,mBAAmB,CACjBzkC,IADiB,EAEjBhJ,OAFiB,EAGjB;UACMwkD,OAAO,GAAGxkD,OAAO,KAAK,OAA5B;QACIgT,CAAJ;;SACKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAKrF,KAAL,CAAWimC,MAAX,CAAkBvoC,MAAlC,EAA0C,EAAE2H,CAA5C,EAA+C;YACvCyxC,GAAG,GAAG,KAAK92C,KAAL,CAAWimC,MAAX,CAAkB5gC,CAAlB,CAAZ;;UACIhK,IAAI,CAAClJ,KAAL,IAAc,IAAd,IAAsB2kD,GAAG,CAAClkD,IAAJ,KAAayI,IAAI,CAAClJ,KAAL,CAAWS,IAAlD,EAAwD;YAClDkkD,GAAG,CAACv7C,IAAJ,IAAY,IAAZ,KAAqBs7C,OAAO,IAAIC,GAAG,CAACv7C,IAAJ,KAAa,MAA7C,CAAJ,EAA0D;YACtDF,IAAI,CAAClJ,KAAL,IAAc0kD,OAAlB,EAA2B;;;;QAG3BxxC,CAAC,KAAK,KAAKrF,KAAL,CAAWimC,MAAX,CAAkBvoC,MAA5B,EAAoC;WAC7BC,KAAL,CAAWtC,IAAI,CAACuB,KAAhB,EAAuB,iBAAiBvK,OAAxC;;;;EAIJsjD,sBAAsB,CAACt6C,IAAD,EAAiD;SAChEqK,IAAL;SACK+D,SAAL;WACO,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;;;EAGF07C,qBAAqB,GAAiB;SAC/BnvC,MAAL,CAAY3H,KAAE,CAACpM,MAAf;UACMqT,GAAG,GAAG,KAAKoB,eAAL,EAAZ;SACKV,MAAL,CAAY3H,KAAE,CAACnM,MAAf;WACOoT,GAAP;;;EAGF0uC,gBAAgB,CAACv6C,IAAD,EAA+C;SACxDqK,IAAL;SACK1F,KAAL,CAAWimC,MAAX,CAAkBnmC,IAAlB,CAAuBi1C,SAAvB;IAEA15C,IAAI,CAACiE,IAAL,GAIE,KAAKu1C,0BAAL,CAAgC,MAE9B,KAAK9jC,cAAL,CAAoB,IAApB,CAFF,CAJF;SASK/Q,KAAL,CAAWimC,MAAX,CAAkBhjC,GAAlB;SAEK2E,MAAL,CAAY3H,KAAE,CAAC7I,MAAf;IACAiE,IAAI,CAACqI,IAAL,GAAY,KAAKqzC,qBAAL,EAAZ;SACK1uC,GAAL,CAASpI,KAAE,CAACjM,IAAZ;WACO,KAAK2M,UAAL,CAAgBtF,IAAhB,EAAsB,kBAAtB,CAAP;;;EAWFw6C,iBAAiB,CAACx6C,IAAD,EAA0B;SACpCqK,IAAL;SACK1F,KAAL,CAAWimC,MAAX,CAAkBnmC,IAAlB,CAAuBi1C,SAAvB;QAEIiC,OAAO,GAAG,CAAC,CAAf;;QACI,KAAKlH,cAAL,MAAyB,KAAKjmC,aAAL,CAAmB,OAAnB,CAA7B,EAA0D;MACxDmtC,OAAO,GAAG,KAAKh3C,KAAL,CAAW+J,YAArB;;;SAEG1G,KAAL,CAAWoH,KAAX,CAAiBpS,WAAjB;SACKuP,MAAL,CAAY3H,KAAE,CAACpM,MAAf;;QAEI,KAAK4U,KAAL,CAAWxI,KAAE,CAACjM,IAAd,CAAJ,EAAyB;UACnBgjD,OAAO,GAAG,CAAC,CAAf,EAAkB;aACX1sC,UAAL,CAAgB0sC,OAAhB;;;aAEK,KAAKC,QAAL,CAAc57C,IAAd,EAAoB,IAApB,CAAP;;;UAGI2P,KAAK,GAAG,KAAKA,KAAL,EAAd;;QACI,KAAKvC,KAAL,CAAWxI,KAAE,CAAC/I,IAAd,KAAuB,KAAKuR,KAAL,CAAWxI,KAAE,CAAC9I,MAAd,CAAvB,IAAgD6T,KAApD,EAA2D;YACnDoQ,IAAI,GAAG,KAAK1a,SAAL,EAAb;YACMnF,IAAI,GAAGyP,KAAK,GAAG,KAAH,GAAW,KAAKhL,KAAL,CAAW9D,KAAxC;WACKwJ,IAAL;WACKwxC,QAAL,CAAc97B,IAAd,EAAoB,IAApB,EAA0B7f,IAA1B;WACKoF,UAAL,CAAgBya,IAAhB,EAAsB,qBAAtB;;UAGE,CAAC,KAAK3S,KAAL,CAAWxI,KAAE,CAACjI,GAAd,KAAsB,KAAKiS,YAAL,CAAkB,IAAlB,CAAvB,KACAmR,IAAI,CAAC+7B,YAAL,CAAkBz5C,MAAlB,KAA6B,CAF/B,EAGE;eACO,KAAK05C,UAAL,CAAgB/7C,IAAhB,EAAsB+f,IAAtB,EAA4B47B,OAA5B,CAAP;;;UAEEA,OAAO,GAAG,CAAC,CAAf,EAAkB;aACX1sC,UAAL,CAAgB0sC,OAAhB;;;aAEK,KAAKC,QAAL,CAAc57C,IAAd,EAAoB+f,IAApB,CAAP;;;UAGI9c,mBAAmB,GAAG,IAAI+uC,gBAAJ,EAA5B;UACMjyB,IAAI,GAAG,KAAK9S,eAAL,CAAqB,IAArB,EAA2BhK,mBAA3B,CAAb;;QACI,KAAKmK,KAAL,CAAWxI,KAAE,CAACjI,GAAd,KAAsB,KAAKiS,YAAL,CAAkB,IAAlB,CAA1B,EAAmD;WAC5CjJ,YAAL,CAAkBoa,IAAlB;YACMi8B,WAAW,GAAG,KAAKptC,YAAL,CAAkB,IAAlB,IAChB,kBADgB,GAEhB,kBAFJ;WAGKrM,SAAL,CAAewd,IAAf,EAAqBvU,SAArB,EAAgCA,SAAhC,EAA2CwwC,WAA3C;aACO,KAAKD,UAAL,CAAgB/7C,IAAhB,EAAsB+f,IAAtB,EAA4B47B,OAA5B,CAAP;KANF,MAOO;WACA9J,qBAAL,CAA2B5uC,mBAA3B,EAAgD,IAAhD;;;QAEE04C,OAAO,GAAG,CAAC,CAAf,EAAkB;WACX1sC,UAAL,CAAgB0sC,OAAhB;;;WAEK,KAAKC,QAAL,CAAc57C,IAAd,EAAoB+f,IAApB,CAAP;;;EAGF2gB,sBAAsB,CACpB1gC,IADoB,EAEpBnC,OAFoB,EAGpBo+C,mBAHoB,EAIG;SAClB5xC,IAAL;WACO,KAAK0rC,aAAL,CACL/1C,IADK,EAEL65C,cAAc,IAAIoC,mBAAmB,GAAG,CAAH,GAAOnC,sBAA9B,CAFT,EAGLj8C,OAHK,CAAP;;;EAOF48C,gBAAgB,CAACz6C,IAAD,EAAqC;SAC9CqK,IAAL;IACArK,IAAI,CAACqI,IAAL,GAAY,KAAKqzC,qBAAL,EAAZ;IACA17C,IAAI,CAAC0W,UAAL,GAAkB,KAAKhB,cAAL,CAAoB,IAApB,CAAlB;IACA1V,IAAI,CAACgX,SAAL,GAAiB,KAAKhK,GAAL,CAASpI,KAAE,CAACxJ,KAAZ,IAAqB,KAAKsa,cAAL,CAAoB,IAApB,CAArB,GAAiD,IAAlE;WACO,KAAKpQ,UAAL,CAAgBtF,IAAhB,EAAsB,aAAtB,CAAP;;;EAGF06C,oBAAoB,CAAC16C,IAAD,EAA6C;QAC3D,CAAC,KAAKgI,KAAL,CAAW6sB,UAAZ,IAA0B,CAAC,KAAKr9B,OAAL,CAAayvC,0BAA5C,EAAwE;WACjE3kC,KAAL,CAAW,KAAKqC,KAAL,CAAWpD,KAAtB,EAA6B,8BAA7B;;;SAGG8I,IAAL;;QAMI,KAAKm2B,gBAAL,EAAJ,EAA6B;MAC3BxgC,IAAI,CAAC8T,QAAL,GAAgB,IAAhB;KADF,MAEO;MACL9T,IAAI,CAAC8T,QAAL,GAAgB,KAAK7G,eAAL,EAAhB;WACKmB,SAAL;;;WAGK,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;;;EAGF26C,oBAAoB,CAAC36C,IAAD,EAA6C;SAC1DqK,IAAL;IACArK,IAAI,CAACk8C,YAAL,GAAoB,KAAKR,qBAAL,EAApB;UACMS,KAAK,GAAIn8C,IAAI,CAACm8C,KAAL,GAAa,EAA5B;SACK5vC,MAAL,CAAY3H,KAAE,CAACxM,MAAf;SACKuM,KAAL,CAAWimC,MAAX,CAAkBnmC,IAAlB,CAAuBk1C,WAAvB;SACK3xC,KAAL,CAAWoH,KAAX,CAAiBpS,WAAjB;QAMIo/C,GAAJ;;SACK,IAAIC,UAAT,EAAqB,CAAC,KAAKjvC,KAAL,CAAWxI,KAAE,CAACtM,MAAd,CAAtB,GAA+C;UACzC,KAAK8U,KAAL,CAAWxI,KAAE,CAAC9J,KAAd,KAAwB,KAAKsS,KAAL,CAAWxI,KAAE,CAAC1J,QAAd,CAA5B,EAAqD;cAC7CohD,MAAM,GAAG,KAAKlvC,KAAL,CAAWxI,KAAE,CAAC9J,KAAd,CAAf;YACIshD,GAAJ,EAAS,KAAK92C,UAAL,CAAgB82C,GAAhB,EAAqB,YAArB;QACTD,KAAK,CAAC13C,IAAN,CAAY23C,GAAG,GAAG,KAAK/2C,SAAL,EAAlB;QACA+2C,GAAG,CAAC1lC,UAAJ,GAAiB,EAAjB;aACKrM,IAAL;;YACIiyC,MAAJ,EAAY;UACVF,GAAG,CAAC/zC,IAAJ,GAAW,KAAK4E,eAAL,EAAX;SADF,MAEO;cACDovC,UAAJ,EAAgB;iBACT/5C,KAAL,CAAW,KAAKqC,KAAL,CAAW+J,YAAtB,EAAoC,0BAApC;;;UAEF2tC,UAAU,GAAG,IAAb;UACAD,GAAG,CAAC/zC,IAAJ,GAAW,IAAX;;;aAEGkE,MAAL,CAAY3H,KAAE,CAAChM,KAAf;OAfF,MAgBO;YACDwjD,GAAJ,EAAS;UACPA,GAAG,CAAC1lC,UAAJ,CAAejS,IAAf,CAAoB,KAAKiR,cAAL,CAAoB,IAApB,CAApB;SADF,MAEO;eACAzG,UAAL;;;;;SAIDjH,KAAL,CAAWuH,IAAX;QACI6sC,GAAJ,EAAS,KAAK92C,UAAL,CAAgB82C,GAAhB,EAAqB,YAArB;SACJ/xC,IAAL;SACK1F,KAAL,CAAWimC,MAAX,CAAkBhjC,GAAlB;WACO,KAAKtC,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAP;;;EAGF46C,mBAAmB,CAAC56C,IAAD,EAA2C;SACvDqK,IAAL;;QAEE/D,SAAS,CAAC+B,IAAV,CAAe,KAAKC,KAAL,CAAWxG,KAAX,CAAiB,KAAK6C,KAAL,CAAW4D,UAA5B,EAAwC,KAAK5D,KAAL,CAAWpD,KAAnD,CAAf,CADF,EAEE;WACKe,KAAL,CAAW,KAAKqC,KAAL,CAAW4D,UAAtB,EAAkC,6BAAlC;;;IAEFvI,IAAI,CAAC8T,QAAL,GAAgB,KAAK7G,eAAL,EAAhB;SACKmB,SAAL;WACO,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;;;EAGF66C,iBAAiB,CAAC76C,IAAD,EAAuC;SACjDqK,IAAL;IAEArK,IAAI,CAAC8sC,KAAL,GAAa,KAAKpI,UAAL,EAAb;IACA1kC,IAAI,CAACu8C,OAAL,GAAe,IAAf;;QAEI,KAAKnvC,KAAL,CAAWxI,KAAE,CAAC7J,MAAd,CAAJ,EAA2B;YACnByhD,MAAM,GAAG,KAAKn3C,SAAL,EAAf;WACKgF,IAAL;;UACI,KAAK+C,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAAJ,EAA2B;aACpB+T,MAAL,CAAY3H,KAAE,CAACpM,MAAf;QACAgkD,MAAM,CAACtnC,KAAP,GAAe,KAAKwuB,gBAAL,EAAf;cACM+Y,MAAM,GAAGD,MAAM,CAACtnC,KAAP,CAAajV,IAAb,KAAsB,YAArC;aACK+H,KAAL,CAAWoH,KAAX,CAAiBqtC,MAAM,GAAGn/C,kBAAH,GAAwB,CAA/C;aACKiF,SAAL,CAAei6C,MAAM,CAACtnC,KAAtB,EAA6BvW,YAA7B,EAA2C,IAA3C,EAAiD,cAAjD;aACK4N,MAAL,CAAY3H,KAAE,CAACnM,MAAf;OANF,MAOO;QACL+jD,MAAM,CAACtnC,KAAP,GAAe,IAAf;aACKlN,KAAL,CAAWoH,KAAX,CAAiBpS,WAAjB;;;MAGFw/C,MAAM,CAACv4C,IAAP,GAKE,KAAKu1C,0BAAL,CAAgC,MAE9B,KAAK9U,UAAL,CAAgB,KAAhB,EAAuB,KAAvB,CAFF,CALF;WASK18B,KAAL,CAAWuH,IAAX;MAEAvP,IAAI,CAACu8C,OAAL,GAAe,KAAKj3C,UAAL,CAAgBk3C,MAAhB,EAAwB,aAAxB,CAAf;;;IAGFx8C,IAAI,CAAC08C,SAAL,GAAiB,KAAK1vC,GAAL,CAASpI,KAAE,CAACvJ,QAAZ,IAAwB,KAAKqpC,UAAL,EAAxB,GAA4C,IAA7D;;QAEI,CAAC1kC,IAAI,CAACu8C,OAAN,IAAiB,CAACv8C,IAAI,CAAC08C,SAA3B,EAAsC;WAC/Bp6C,KAAL,CAAWtC,IAAI,CAACuB,KAAhB,EAAuB,iCAAvB;;;WAGK,KAAK+D,UAAL,CAAgBtF,IAAhB,EAAsB,cAAtB,CAAP;;;EAGF4gC,iBAAiB,CACf5gC,IADe,EAEfE,IAFe,EAGQ;SAClBmK,IAAL;SACKwxC,QAAL,CAAc77C,IAAd,EAAoB,KAApB,EAA2BE,IAA3B;SACKkO,SAAL;WACO,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,qBAAtB,CAAP;;;EAGF86C,mBAAmB,CAAC96C,IAAD,EAA2C;SACvDqK,IAAL;IACArK,IAAI,CAACqI,IAAL,GAAY,KAAKqzC,qBAAL,EAAZ;SACK/2C,KAAL,CAAWimC,MAAX,CAAkBnmC,IAAlB,CAAuBi1C,SAAvB;IAEA15C,IAAI,CAACiE,IAAL,GAIE,KAAKu1C,0BAAL,CAAgC,MAE9B,KAAK9jC,cAAL,CAAoB,OAApB,CAFF,CAJF;SASK/Q,KAAL,CAAWimC,MAAX,CAAkBhjC,GAAlB;WAEO,KAAKtC,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;;;EAGF+6C,kBAAkB,CAAC/6C,IAAD,EAAyC;QACrD,KAAK2E,KAAL,CAAW+D,MAAf,EAAuB;WAChBpG,KAAL,CAAW,KAAKqC,KAAL,CAAWpD,KAAtB,EAA6B,uBAA7B;;;SAEG8I,IAAL;IACArK,IAAI,CAACwxB,MAAL,GAAc,KAAKkqB,qBAAL,EAAd;IAEA17C,IAAI,CAACiE,IAAL,GAKE,KAAKu1C,0BAAL,CAAgC,MAE9B,KAAK9jC,cAAL,CAAoB,MAApB,CAFF,CALF;WAUO,KAAKpQ,UAAL,CAAgBtF,IAAhB,EAAsB,eAAtB,CAAP;;;EAGFg7C,mBAAmB,CAACh7C,IAAD,EAA2C;SACvDqK,IAAL;WACO,KAAK/E,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;;;EAGFo7C,qBAAqB,CACnBp7C,IADmB,EAEnBm7C,SAFmB,EAGnB34C,IAHmB,EAInBiF,OAJmB,EAKC;2CACA,KAAK9C,KAAL,CAAWimC,MADX,0CACmB;YAA5B9zC,KAAK,0BAAX;;UACCA,KAAK,CAACS,IAAN,KAAe4jD,SAAnB,EAA8B;aACvB74C,KAAL,CAAWE,IAAI,CAACjB,KAAhB,EAAwB,UAAS45C,SAAU,uBAA3C;;;;UAIEj7C,IAAI,GAAG,KAAKyE,KAAL,CAAW1E,IAAX,CAAgBzJ,MAAhB,GACT,MADS,GAET,KAAK4W,KAAL,CAAWxI,KAAE,CAAClJ,OAAd,IACA,QADA,GAEA,IAJJ;;SAKK,IAAIsO,CAAC,GAAG,KAAKrF,KAAL,CAAWimC,MAAX,CAAkBvoC,MAAlB,GAA2B,CAAxC,EAA2C2H,CAAC,IAAI,CAAhD,EAAmDA,CAAC,EAApD,EAAwD;YAChDlT,KAAK,GAAG,KAAK6N,KAAL,CAAWimC,MAAX,CAAkB5gC,CAAlB,CAAd;;UACIlT,KAAK,CAAC6lD,cAAN,KAAyB38C,IAAI,CAACuB,KAAlC,EAAyC;QACvCzK,KAAK,CAAC6lD,cAAN,GAAuB,KAAKh4C,KAAL,CAAWpD,KAAlC;QACAzK,KAAK,CAACoJ,IAAN,GAAaA,IAAb;OAFF,MAGO;;;;;SAKJyE,KAAL,CAAWimC,MAAX,CAAkBnmC,IAAlB,CAAuB;MACrBlN,IAAI,EAAE4jD,SADe;MAErBj7C,IAAI,EAAEA,IAFe;MAGrBy8C,cAAc,EAAE,KAAKh4C,KAAL,CAAWpD;KAH7B;IAKAvB,IAAI,CAACiE,IAAL,GAAY,KAAKyR,cAAL,CACVjO,OAAO,GACHA,OAAO,CAACoQ,OAAR,CAAgB,OAAhB,MAA6B,CAAC,CAA9B,GACEpQ,OAAO,GAAG,OADZ,GAEEA,OAHC,GAIH,OALM,CAAZ;SAQK9C,KAAL,CAAWimC,MAAX,CAAkBhjC,GAAlB;IACA5H,IAAI,CAAClJ,KAAL,GAAa0L,IAAb;WACO,KAAK8C,UAAL,CAAgBtF,IAAhB,EAAsB,kBAAtB,CAAP;;;EAGF4V,wBAAwB,CACtB5V,IADsB,EAEtBwC,IAFsB,EAGT;IACbxC,IAAI,CAACyB,UAAL,GAAkBe,IAAlB;SACK4L,SAAL;WACO,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,qBAAtB,CAAP;;;EAOF0kC,UAAU,CACR/gC,eAAyB,GAAG,KADpB,EAERi5C,qBAA+B,GAAG,IAF1B,EAGU;UACZ58C,IAAI,GAAG,KAAKqF,SAAL,EAAb;SACKkH,MAAL,CAAY3H,KAAE,CAACxM,MAAf;;QACIwkD,qBAAJ,EAA2B;WACpB50C,KAAL,CAAWoH,KAAX,CAAiBpS,WAAjB;;;SAEG0G,cAAL,CAAoB1D,IAApB,EAA0B2D,eAA1B,EAA2C,KAA3C,EAAkDiB,KAAE,CAACtM,MAArD;;QACIskD,qBAAJ,EAA2B;WACpB50C,KAAL,CAAWuH,IAAX;;;WAEK,KAAKjK,UAAL,CAAgBtF,IAAhB,EAAsB,gBAAtB,CAAP;;;EAGFuD,gBAAgB,CAAClC,IAAD,EAA6B;WAEzCA,IAAI,CAACpB,IAAL,KAAc,qBAAd,IACAoB,IAAI,CAACI,UAAL,CAAgBxB,IAAhB,KAAyB,eADzB,IAEA,CAACoB,IAAI,CAACI,UAAL,CAAgBE,KAAhB,CAAsB6B,aAHzB;;;EAOFE,cAAc,CACZ1D,IADY,EAEZ2D,eAFY,EAGZC,QAHY,EAIZ/B,GAJY,EAKN;UACAoC,IAAI,GAAIjE,IAAI,CAACiE,IAAL,GAAY,EAA1B;UACMH,UAAU,GAAI9D,IAAI,CAAC8D,UAAL,GAAkB,EAAtC;SACKy7B,2BAAL,CACEt7B,IADF,EAEEN,eAAe,GAAGG,UAAH,GAAgB0H,SAFjC,EAGE5H,QAHF,EAIE/B,GAJF;;;EASF09B,2BAA2B,CACzBt7B,IADyB,EAEzBH,UAFyB,EAGzBF,QAHyB,EAIzB/B,GAJyB,EAKnB;QACFg7C,kBAAkB,GAAG,KAAzB;QACIxE,SAAJ;QACInN,aAAJ;;WAEO,CAAC,KAAKl+B,GAAL,CAASnL,GAAT,CAAR,EAAuB;UACjB,CAACg7C,kBAAD,IAAuB,KAAKl4C,KAAL,CAAWsmC,aAAlC,IAAmD,CAACC,aAAxD,EAAuE;QACrEA,aAAa,GAAG,KAAKvmC,KAAL,CAAWumC,aAA3B;;;YAGI7pC,IAAI,GAAG,KAAKqU,cAAL,CAAoB,IAApB,EAA0B9R,QAA1B,CAAb;;UAEIE,UAAU,IAAI,CAAC+4C,kBAAf,IAAqC,KAAKt5C,gBAAL,CAAsBlC,IAAtB,CAAzC,EAAsE;cAC9DF,SAAS,GAAG,KAAKsC,eAAL,CAAqBpC,IAArB,CAAlB;QACAyC,UAAU,CAACW,IAAX,CAAgBtD,SAAhB;;YAEIk3C,SAAS,KAAK7sC,SAAd,IAA2BrK,SAAS,CAACN,KAAV,CAAgBA,KAAhB,KAA0B,YAAzD,EAAuE;UACrEw3C,SAAS,GAAG,KAAK1zC,KAAL,CAAW+D,MAAvB;eACK+jC,SAAL,CAAe,IAAf;;cAEIvB,aAAJ,EAAmB;iBACZ5oC,KAAL,CAAW4oC,aAAX,EAA0B,8BAA1B;;;;;;;MAON2R,kBAAkB,GAAG,IAArB;MACA54C,IAAI,CAACQ,IAAL,CAAUpD,IAAV;;;QAGEg3C,SAAS,KAAK,KAAlB,EAAyB;WAClB5L,SAAL,CAAe,KAAf;;;;EAQJmP,QAAQ,CACN57C,IADM,EAEN+f,IAFM,EAGU;IAChB/f,IAAI,CAAC+f,IAAL,GAAYA,IAAZ;SACKxT,MAAL,CAAY3H,KAAE,CAACjM,IAAf;IACAqH,IAAI,CAACqI,IAAL,GAAY,KAAK+E,KAAL,CAAWxI,KAAE,CAACjM,IAAd,IAAsB,IAAtB,GAA6B,KAAKsU,eAAL,EAAzC;SACKV,MAAL,CAAY3H,KAAE,CAACjM,IAAf;IACAqH,IAAI,CAAC6wC,MAAL,GAAc,KAAKzjC,KAAL,CAAWxI,KAAE,CAACnM,MAAd,IAAwB,IAAxB,GAA+B,KAAKwU,eAAL,EAA7C;SACKV,MAAL,CAAY3H,KAAE,CAACnM,MAAf;IAEAuH,IAAI,CAACiE,IAAL,GAIE,KAAKu1C,0BAAL,CAAgC,MAE9B,KAAK9jC,cAAL,CAAoB,KAApB,CAFF,CAJF;SASK1N,KAAL,CAAWuH,IAAX;SACK5K,KAAL,CAAWimC,MAAX,CAAkBhjC,GAAlB;WAEO,KAAKtC,UAAL,CAAgBtF,IAAhB,EAAsB,cAAtB,CAAP;;;EAMF+7C,UAAU,CACR/7C,IADQ,EAER+f,IAFQ,EAGR47B,OAHQ,EAIG;UACLmB,OAAO,GAAG,KAAK1vC,KAAL,CAAWxI,KAAE,CAACjI,GAAd,CAAhB;SACK0N,IAAL;;QAEIyyC,OAAJ,EAAa;UACPnB,OAAO,GAAG,CAAC,CAAf,EAAkB,KAAK1sC,UAAL,CAAgB0sC,OAAhB;KADpB,MAEO;MACL37C,IAAI,CAAC+8C,KAAL,GAAapB,OAAO,GAAG,CAAC,CAAxB;;;QAIA57B,IAAI,CAAC9f,IAAL,KAAc,qBAAd,IACA8f,IAAI,CAAC+7B,YAAL,CAAkB,CAAlB,EAAqB/7B,IAArB,IAA6B,IAD7B,KAEC,CAAC+8B,OAAD,IACC,KAAKn4C,KAAL,CAAW+D,MADZ,IAECqX,IAAI,CAAC7f,IAAL,KAAc,KAFf,IAGC6f,IAAI,CAAC+7B,YAAL,CAAkB,CAAlB,EAAqBtuC,EAArB,CAAwBvN,IAAxB,KAAiC,YALnC,CADF,EAOE;WACKqC,KAAL,CACEyd,IAAI,CAACxe,KADP,EAEG,GACCu7C,OAAO,GAAG,QAAH,GAAc,QACtB,wDAJH;KARF,MAcO,IAAI/8B,IAAI,CAAC9f,IAAL,KAAc,mBAAlB,EAAuC;WACvCqC,KAAL,CAAWyd,IAAI,CAACxe,KAAhB,EAAuB,oCAAvB;;;IAGFvB,IAAI,CAACsa,IAAL,GAAYyF,IAAZ;IACA/f,IAAI,CAACoR,KAAL,GAAa0rC,OAAO,GAAG,KAAK7vC,eAAL,EAAH,GAA4B,KAAKgK,gBAAL,EAAhD;SACK1K,MAAL,CAAY3H,KAAE,CAACnM,MAAf;IAEAuH,IAAI,CAACiE,IAAL,GAIE,KAAKu1C,0BAAL,CAAgC,MAE9B,KAAK9jC,cAAL,CAAoB,KAApB,CAFF,CAJF;SASK1N,KAAL,CAAWuH,IAAX;SACK5K,KAAL,CAAWimC,MAAX,CAAkBhjC,GAAlB;WAEO,KAAKtC,UAAL,CAAgBtF,IAAhB,EAAsB88C,OAAO,GAAG,gBAAH,GAAsB,gBAAnD,CAAP;;;EAKFjB,QAAQ,CACN77C,IADM,EAENg9C,KAFM,EAGN98C,IAHM,EAIiB;UACjB47C,YAAY,GAAI97C,IAAI,CAAC87C,YAAL,GAAoB,EAA1C;UACMmB,YAAY,GAAG,KAAKlhC,SAAL,CAAe,YAAf,CAArB;IACA/b,IAAI,CAACE,IAAL,GAAYA,IAAZ;;aACS;YACD+X,IAAI,GAAG,KAAK5S,SAAL,EAAb;WACKoW,UAAL,CAAgBxD,IAAhB,EAAsB/X,IAAtB;;UACI,KAAK8M,GAAL,CAASpI,KAAE,CAACnL,EAAZ,CAAJ,EAAqB;QACnBwe,IAAI,CAAC8H,IAAL,GAAY,KAAK9I,gBAAL,CAAsB+lC,KAAtB,CAAZ;OADF,MAEO;YAEH98C,IAAI,KAAK,OAAT,IACA,EAAE,KAAKkN,KAAL,CAAWxI,KAAE,CAACjI,GAAd,KAAsB,KAAKiS,YAAL,CAAkB,IAAlB,CAAxB,CAFF,EAGE;cAGI,CAACquC,YAAL,EAAmB;iBACZhuC,UAAL;;SAPJ,MASO,IACLgJ,IAAI,CAACzK,EAAL,CAAQvN,IAAR,KAAiB,YAAjB,IACA,EAAE+8C,KAAK,KAAK,KAAK5vC,KAAL,CAAWxI,KAAE,CAACjI,GAAd,KAAsB,KAAKiS,YAAL,CAAkB,IAAlB,CAA3B,CAAP,CAFK,EAGL;eACKtM,KAAL,CACE,KAAKqC,KAAL,CAAW4D,UADb,EAEE,0DAFF;;;QAKF0P,IAAI,CAAC8H,IAAL,GAAY,IAAZ;;;MAEF+7B,YAAY,CAACr3C,IAAb,CAAkB,KAAKa,UAAL,CAAgB2S,IAAhB,EAAsB,oBAAtB,CAAlB;UACI,CAAC,KAAKjL,GAAL,CAASpI,KAAE,CAAClM,KAAZ,CAAL,EAAyB;;;WAEpBsH,IAAP;;;EAGFyb,UAAU,CAACxD,IAAD,EAA6B/X,IAA7B,EAAkE;IAC1E+X,IAAI,CAACzK,EAAL,GAAU,KAAKk2B,gBAAL,EAAV;SACKnhC,SAAL,CACE0V,IAAI,CAACzK,EADP,EAEEtN,IAAI,KAAK,KAAT,GAAiBtB,QAAjB,GAA4BD,YAF9B,EAGE6M,SAHF,EAIE,sBAJF,EAKEtL,IAAI,KAAK,KALX;;;EAYF61C,aAAa,CACX/1C,IADW,EAEXk9C,SAAkB,GAAGtD,aAFV,EAGX/7C,OAAiB,GAAG,KAHT,EAIR;UACG8a,WAAW,GAAGukC,SAAS,GAAGrD,cAAhC;UACMsD,kBAAkB,GAAGD,SAAS,GAAGpD,sBAAvC;UACMsD,SAAS,GAAG,CAAC,CAACzkC,WAAF,IAAiB,EAAEukC,SAAS,GAAGnD,gBAAd,CAAnC;SAEKh4C,YAAL,CAAkB/B,IAAlB,EAAwBnC,OAAxB;;QAEI,KAAKuP,KAAL,CAAWxI,KAAE,CAAClK,IAAd,KAAuByiD,kBAA3B,EAA+C;WACxC76C,KAAL,CACE,KAAKqC,KAAL,CAAWpD,KADb,EAEE,oEAFF;;;IAKFvB,IAAI,CAACk4C,SAAL,GAAiB,KAAKlrC,GAAL,CAASpI,KAAE,CAAClK,IAAZ,CAAjB;;QAEIie,WAAJ,EAAiB;MACf3Y,IAAI,CAACwN,EAAL,GAAU,KAAKm3B,eAAL,CAAqByY,SAArB,CAAV;;;UAGInI,yBAAyB,GAAG,KAAKtwC,KAAL,CAAWi/B,sBAA7C;UACMsR,WAAW,GAAG,KAAKvwC,KAAL,CAAWmmC,QAA/B;UACMqK,WAAW,GAAG,KAAKxwC,KAAL,CAAWomC,QAA/B;SACKpmC,KAAL,CAAWi/B,sBAAX,GAAoC,KAApC;SACKj/B,KAAL,CAAWmmC,QAAX,GAAsB,CAAC,CAAvB;SACKnmC,KAAL,CAAWomC,QAAX,GAAsB,CAAC,CAAvB;SACK/iC,KAAL,CAAWoH,KAAX,CAAiBxR,aAAa,CAACoC,IAAI,CAACm4C,KAAN,EAAan4C,IAAI,CAACk4C,SAAlB,CAA9B;;QAEI,CAACv/B,WAAL,EAAkB;MAChB3Y,IAAI,CAACwN,EAAL,GAAU,KAAKm3B,eAAL,EAAV;;;SAGGppB,mBAAL,CAAyBvb,IAAzB;SAKKw5C,0BAAL,CAAgC,MAAM;WAE/B/jC,0BAAL,CACEzV,IADF,EAEE2Y,WAAW,GAAG,qBAAH,GAA2B,oBAFxC;KAFF;SAQK3Q,KAAL,CAAWuH,IAAX;;QAEIoJ,WAAW,IAAI,CAACwkC,kBAApB,EAAwC;WAIjCpb,2BAAL,CAAiC/hC,IAAjC;;;SAGG2E,KAAL,CAAWi/B,sBAAX,GAAoCqR,yBAApC;SACKtwC,KAAL,CAAWmmC,QAAX,GAAsBoK,WAAtB;SACKvwC,KAAL,CAAWomC,QAAX,GAAsBoK,WAAtB;WAEOn1C,IAAP;;;EAGF2kC,eAAe,CAACyY,SAAD,EAAqC;WAC3CA,SAAS,IAAI,KAAKhwC,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAb,GAAmC,KAAKkW,eAAL,EAAnC,GAA4D,IAAnE;;;EAGF8N,mBAAmB,CAACvb,IAAD,EAAmBwb,cAAnB,EAAmD;UAC9D+8B,eAAe,GAAG,KAAK5zC,KAAL,CAAW0lC,YAAnC;SACK1lC,KAAL,CAAW0lC,YAAX,GAA0B,IAA1B;SAEK99B,MAAL,CAAY3H,KAAE,CAACpM,MAAf;IACAwH,IAAI,CAACoC,MAAL,GAAc,KAAK23B,gBAAL,CACZn1B,KAAE,CAACnM,MADS,MAGK,KAHL,EAIZ+iB,cAJY,CAAd;SAOK7W,KAAL,CAAW0lC,YAAX,GAA0BkO,eAA1B;SACK/G,8BAAL;;;EAGFzP,2BAA2B,CAAC/hC,IAAD,EAAyB;QAC9C,CAACA,IAAI,CAACwN,EAAV,EAAc;SAMTxF,KAAL,CAAWmH,WAAX,CACEnP,IAAI,CAACwN,EAAL,CAAQjW,IADV,EAEE,KAAKoN,KAAL,CAAW+D,MAAX,IAAqB1I,IAAI,CAACk4C,SAA1B,IAAuCl4C,IAAI,CAACm4C,KAA5C,GACI,KAAKnwC,KAAL,CAAWstB,mBAAX,GACE12B,QADF,GAEED,YAHN,GAIIE,aANN,EAOEmB,IAAI,CAACwN,EAAL,CAAQjM,KAPV;;;EAcFo/B,UAAU,CACR3gC,IADQ,EAER2Y,WAFQ,EAGRC,UAHQ,EAIL;SACEvO,IAAL;SACKu6B,cAAL,CAAoB5kC,IAApB;UAGMq4C,SAAS,GAAG,KAAK1zC,KAAL,CAAW+D,MAA7B;SACK/D,KAAL,CAAW+D,MAAX,GAAoB,IAApB;SAEKgQ,YAAL,CAAkB1Y,IAAlB,EAAwB2Y,WAAxB,EAAqCC,UAArC;SACKkB,eAAL,CAAqB9Z,IAArB;IACAA,IAAI,CAACiE,IAAL,GAAY,KAAK4gC,cAAL,CAAoB,CAAC,CAAC7kC,IAAI,CAACI,UAA3B,CAAZ;SAEKuE,KAAL,CAAW+D,MAAX,GAAoB2vC,SAApB;WAEO,KAAK/yC,UAAL,CACLtF,IADK,EAEL2Y,WAAW,GAAG,kBAAH,GAAwB,iBAF9B,CAAP;;;EAMFgB,eAAe,GAAY;WAClB,KAAKvM,KAAL,CAAWxI,KAAE,CAACnL,EAAd,KAAqB,KAAK2T,KAAL,CAAWxI,KAAE,CAACjM,IAAd,CAArB,IAA4C,KAAKyU,KAAL,CAAWxI,KAAE,CAACtM,MAAd,CAAnD;;;EAGFohB,aAAa,GAAY;WAChB,KAAKtM,KAAL,CAAWxI,KAAE,CAACpM,MAAd,CAAP;;;EAGFohB,sBAAsB,CAACzZ,MAAD,EAAmD;WAErE,CAACA,MAAM,CAAC+C,QAAR,IACA,CAAC/C,MAAM,CAACwS,MADR,KAECxS,MAAM,CAACiD,GAAP,CAAW7L,IAAX,KAAoB,aAApB,IACC4I,MAAM,CAACiD,GAAP,CAAWvC,KAAX,KAAqB,aAHvB,CADF;;;EAQFgkC,cAAc,CAAC9B,sBAAD,EAA+C;SACtDgS,UAAL,CAAgB3lC,KAAhB;UAEMzK,KAAK,GAAG;MAAE04C,cAAc,EAAE;KAAhC;QACI7b,UAAyB,GAAG,EAAhC;UACMp9B,SAAsB,GAAG,KAAKiB,SAAL,EAA/B;IACAjB,SAAS,CAACH,IAAV,GAAiB,EAAjB;SAEKsI,MAAL,CAAY3H,KAAE,CAACxM,MAAf;SAKKohD,0BAAL,CAAgC,MAAM;aAC7B,CAAC,KAAKxsC,GAAL,CAASpI,KAAE,CAACtM,MAAZ,CAAR,EAA6B;YACvB,KAAK0U,GAAL,CAASpI,KAAE,CAACjM,IAAZ,CAAJ,EAAuB;cACjB6oC,UAAU,CAACn/B,MAAX,GAAoB,CAAxB,EAA2B;kBACnB,KAAKC,KAAL,CACJ,KAAKqC,KAAL,CAAW4D,UADP,EAEJ,gDAFI,CAAN;;;;;;YAQA,KAAK6E,KAAL,CAAWxI,KAAE,CAACtL,EAAd,CAAJ,EAAuB;UACrBkoC,UAAU,CAAC/8B,IAAX,CAAgB,KAAK2uC,cAAL,EAAhB;;;;cAIIvyB,MAAM,GAAG,KAAKxb,SAAL,EAAf;;YAGIm8B,UAAU,CAACn/B,MAAf,EAAuB;UACrBwe,MAAM,CAAC2gB,UAAP,GAAoBA,UAApB;eACKplB,0BAAL,CAAgCyE,MAAhC,EAAwC2gB,UAAU,CAAC,CAAD,CAAlD;UACAA,UAAU,GAAG,EAAb;;;aAGGsB,gBAAL,CAAsB1+B,SAAtB,EAAiCyc,MAAjC,EAAyClc,KAAzC,EAAgDo+B,sBAAhD;;YAGEliB,MAAM,CAAC3gB,IAAP,KAAgB,aAAhB,IACA2gB,MAAM,CAAC2gB,UADP,IAEA3gB,MAAM,CAAC2gB,UAAP,CAAkBn/B,MAAlB,GAA2B,CAH7B,EAIE;eACKC,KAAL,CACEue,MAAM,CAACtf,KADT,EAEE,iFAFF;;;KAjCN;;QAyCIigC,UAAU,CAACn/B,MAAf,EAAuB;YACf,KAAKC,KAAL,CACJ,KAAKqC,KAAL,CAAWpD,KADP,EAEJ,6CAFI,CAAN;;;SAMGwzC,UAAL,CAAgBxlC,IAAhB;WAEO,KAAKjK,UAAL,CAAgBlB,SAAhB,EAA2B,WAA3B,CAAP;;;EAGF0+B,gBAAgB,CACd1+B,SADc,EAEdyc,MAFc,EAGdlc,KAHc,EAIdo+B,sBAJc,EAKR;QACFrwB,QAAQ,GAAG,KAAf;UACMjN,WAAW,GAAG,KAAKd,KAAL,CAAWc,WAA/B;;QAEI,KAAK2H,KAAL,CAAWxI,KAAE,CAACrN,IAAd,KAAuB,KAAKoN,KAAL,CAAW9D,KAAX,KAAqB,QAAhD,EAA0D;YAClDuC,GAAG,GAAG,KAAKqK,eAAL,CAAqB,IAArB,CAAZ;;UAEI,KAAKiM,aAAL,EAAJ,EAA0B;cAClBvZ,MAAqB,GAAI0gB,MAA/B;QAGA1gB,MAAM,CAACD,IAAP,GAAc,QAAd;QACAC,MAAM,CAAC+C,QAAP,GAAkB,KAAlB;QACA/C,MAAM,CAACiD,GAAP,GAAaA,GAAb;QACAjD,MAAM,CAACwS,MAAP,GAAgB,KAAhB;aACKxO,eAAL,CACEC,SADF,EAEEjE,MAFF,EAGE,KAHF,EAIE,KAJF,EAKsB,KALtB,EAME,KANF;;OARF,MAiBO,IAAI,KAAKwZ,eAAL,EAAJ,EAA4B;cAC3BzX,IAAqB,GAAI2e,MAA/B;QAGA3e,IAAI,CAACgB,QAAL,GAAgB,KAAhB;QACAhB,IAAI,CAACkB,GAAL,GAAWA,GAAX;QACAlB,IAAI,CAACyQ,MAAL,GAAc,KAAd;QACAvO,SAAS,CAACH,IAAV,CAAeQ,IAAf,CAAoB,KAAK+U,kBAAL,CAAwBtX,IAAxB,CAApB;;OAPK,MASA,IAAIuD,WAAJ,EAAiB;cAChB,KAAKwJ,UAAL,EAAN;;;MAIFyD,QAAQ,GAAG,IAAX;;;SAGGswB,4BAAL,CACE5+B,SADF,EAEEyc,MAFF,EAGElc,KAHF,EAIE+N,QAJF,EAKEqwB,sBALF;;;EASFC,4BAA4B,CAC1B5+B,SAD0B,EAE1Byc,MAF0B,EAG1Blc,KAH0B,EAI1B+N,QAJ0B,EAK1BqwB,sBAL0B,EAM1B;UACMua,YAAyC,GAAGz8B,MAAlD;UACM08B,aAAiD,GAAG18B,MAA1D;UACM28B,UAAuC,GAAG38B,MAAhD;UACM48B,WAA+C,GAAG58B,MAAxD;UAEM1gB,MAAkD,GAAGm9C,YAA3D;UACMI,YAAqD,GAAGJ,YAA9D;IAEAz8B,MAAM,CAAClO,MAAP,GAAgBD,QAAhB;;QAEI,KAAK1F,GAAL,CAASpI,KAAE,CAAClK,IAAZ,CAAJ,EAAuB;MAErByF,MAAM,CAACD,IAAP,GAAc,QAAd;WACKy9C,sBAAL,CAA4Bx9C,MAA5B;;UAEIA,MAAM,CAACiD,GAAP,CAAWnD,IAAX,KAAoB,aAAxB,EAAuC;aAEhC4Z,sBAAL,CAA4BzV,SAA5B,EAAuCm5C,aAAvC,EAAsD,IAAtD,EAA4D,KAA5D;;;;UAIE,KAAK3jC,sBAAL,CAA4B0jC,YAA5B,CAAJ,EAA+C;aACxCh7C,KAAL,CAAWg7C,YAAY,CAACl6C,GAAb,CAAiB7B,KAA5B,EAAmC,kCAAnC;;;WAGG4C,eAAL,CACEC,SADF,EAEEk5C,YAFF,EAGE,IAHF,EAIE,KAJF,EAKsB,KALtB,EAME,KANF;;;;UAYI73C,WAAW,GAAG,KAAKd,KAAL,CAAWc,WAA/B;UACMrC,GAAG,GAAG,KAAKu6C,sBAAL,CAA4B98B,MAA5B,CAAZ;UACM21B,SAAS,GAAGpzC,GAAG,CAACnD,IAAJ,KAAa,aAA/B;UAEM29C,QAAQ,GAAGx6C,GAAG,CAACnD,IAAJ,KAAa,YAA9B;UACM49C,uBAAuB,GAAG,KAAKl5C,KAAL,CAAWpD,KAA3C;SAEK0hC,4BAAL,CAAkCya,YAAlC;;QAEI,KAAKhkC,aAAL,EAAJ,EAA0B;MACxBvZ,MAAM,CAACD,IAAP,GAAc,QAAd;;UAEIs2C,SAAJ,EAAe;aACR38B,sBAAL,CAA4BzV,SAA5B,EAAuCm5C,aAAvC,EAAsD,KAAtD,EAA6D,KAA7D;;;;YAKIl5C,aAAa,GAAG,KAAKuV,sBAAL,CAA4B0jC,YAA5B,CAAtB;UACIh5C,iBAAiB,GAAG,KAAxB;;UACID,aAAJ,EAAmB;QACjBi5C,YAAY,CAACp9C,IAAb,GAAoB,aAApB;;YAGIyE,KAAK,CAAC04C,cAAN,IAAwB,CAAC,KAAKthC,SAAL,CAAe,YAAf,CAA7B,EAA2D;eACpDzZ,KAAL,CAAWc,GAAG,CAAC7B,KAAf,EAAsB,yCAAtB;;;QAEFoD,KAAK,CAAC04C,cAAN,GAAuB,IAAvB;QACA/4C,iBAAiB,GAAGy+B,sBAApB;;;WAGG5+B,eAAL,CACEC,SADF,EAEEk5C,YAFF,EAGE,KAHF,EAIE,KAJF,EAKEj5C,aALF,EAMEC,iBANF;KAtBF,MA8BO,IAAI,KAAKqV,eAAL,EAAJ,EAA4B;UAC7B68B,SAAJ,EAAe;aACRsH,wBAAL,CAA8B15C,SAA9B,EAAyCq5C,WAAzC;OADF,MAEO;aACAM,iBAAL,CAAuB35C,SAAvB,EAAkCo5C,UAAlC;;KAJG,MAMA,IACLI,QAAQ,IACRx6C,GAAG,CAAC7L,IAAJ,KAAa,OADb,IAEA,CAACkO,WAFD,IAGA,CAAC,KAAK+6B,gBAAL,EAJI,EAKL;YAEM1iC,WAAW,GAAG,KAAKkP,GAAL,CAASpI,KAAE,CAAClK,IAAZ,CAApB;;UAEIgjD,YAAY,CAAC33C,QAAjB,EAA2B;aACpBkJ,UAAL,CAAgB4uC,uBAAhB;;;MAGF19C,MAAM,CAACD,IAAP,GAAc,QAAd;WAEKy9C,sBAAL,CAA4Bx9C,MAA5B;WACK8iC,4BAAL,CAAkCya,YAAlC;;UAEIv9C,MAAM,CAACiD,GAAP,CAAWnD,IAAX,KAAoB,aAAxB,EAAuC;aAEhC4Z,sBAAL,CACEzV,SADF,EAEEm5C,aAFF,EAGEz/C,WAHF,EAIE,IAJF;OAFF,MAQO;YACD,KAAK8b,sBAAL,CAA4B0jC,YAA5B,CAAJ,EAA+C;eACxCh7C,KAAL,CACEg7C,YAAY,CAACl6C,GAAb,CAAiB7B,KADnB,EAEE,wCAFF;;;aAMG4C,eAAL,CACEC,SADF,EAEEk5C,YAFF,EAGEx/C,WAHF,EAIE,IAJF,EAKsB,KALtB,EAME,KANF;;KAlCG,MA2CA,IACL8/C,QAAQ,KACPx6C,GAAG,CAAC7L,IAAJ,KAAa,KAAb,IAAsB6L,GAAG,CAAC7L,IAAJ,KAAa,KAD5B,CAAR,IAEA,CAACkO,WAFD,IAGA,EAAE,KAAK2H,KAAL,CAAWxI,KAAE,CAAClK,IAAd,KAAuB,KAAK8lC,gBAAL,EAAzB,CAJK,EAKL;MAGArgC,MAAM,CAACD,IAAP,GAAckD,GAAG,CAAC7L,IAAlB;WAEKomD,sBAAL,CAA4BL,YAA5B;;UAEIn9C,MAAM,CAACiD,GAAP,CAAWnD,IAAX,KAAoB,aAAxB,EAAuC;aAEhC4Z,sBAAL,CAA4BzV,SAA5B,EAAuCm5C,aAAvC,EAAsD,KAAtD,EAA6D,KAA7D;OAFF,MAGO;YACD,KAAK3jC,sBAAL,CAA4B0jC,YAA5B,CAAJ,EAA+C;eACxCh7C,KAAL,CACEg7C,YAAY,CAACl6C,GAAb,CAAiB7B,KADnB,EAEE,yCAFF;;;aAKG4C,eAAL,CACEC,SADF,EAEEk5C,YAFF,EAGE,KAHF,EAIE,KAJF,EAKsB,KALtB,EAME,KANF;;;WAUGr7C,uBAAL,CAA6Bq7C,YAA7B;KAhCK,MAiCA,IAAI,KAAK9c,gBAAL,EAAJ,EAA6B;UAE9BgW,SAAJ,EAAe;aACRsH,wBAAL,CAA8B15C,SAA9B,EAAyCq5C,WAAzC;OADF,MAEO;aACAM,iBAAL,CAAuB35C,SAAvB,EAAkCo5C,UAAlC;;KALG,MAOA;WACAvuC,UAAL;;;;EAIJ0uC,sBAAsB,CAAC98B,MAAD,EAAqD;UACnEzd,GAAG,GAAG,KAAK6W,iBAAL,CAAuB4G,MAAvB,EAA0D,IAA1D,CAAZ;;QAGE,CAACA,MAAM,CAAC3d,QAAR,IACA2d,MAAM,CAAClO,MADP,KAEEvP,GAAD,CAAkC7L,IAAlC,KAA2C,WAA3C,IACE6L,GAAD,CAAqCvC,KAArC,KAA+C,WAHjD,CADF,EAKE;WACKyB,KAAL,CACEc,GAAG,CAAC7B,KADN,EAEE,sDAFF;;;QAME6B,GAAG,CAACnD,IAAJ,KAAa,aAAb,IAA8BmD,GAAG,CAACoK,EAAJ,CAAOjW,IAAP,KAAgB,aAAlD,EAAiE;WAC1D+K,KAAL,CACEc,GAAG,CAAC7B,KADN,EAEE,2DAFF;;;WAMK6B,GAAP;;;EAGF26C,iBAAiB,CAAC35C,SAAD,EAAyBlC,IAAzB,EAAgD;QAE7D,CAACA,IAAI,CAACgB,QAAN,KACChB,IAAI,CAACkB,GAAL,CAAS7L,IAAT,KAAkB,aAAlB,IAAmC2K,IAAI,CAACkB,GAAL,CAASvC,KAAT,KAAmB,aADvD,CADF,EAGE;WAGKyB,KAAL,CACEJ,IAAI,CAACkB,GAAL,CAAS7B,KADX,EAEE,kDAFF;;;IAMF6C,SAAS,CAACH,IAAV,CAAeQ,IAAf,CAAoB,KAAK+U,kBAAL,CAAwBtX,IAAxB,CAApB;;;EAGF47C,wBAAwB,CACtB15C,SADsB,EAEtBlC,IAFsB,EAGtB;SACK4iC,YAAL,CAAkB,wBAAlB,EAA4C5iC,IAAI,CAACkB,GAAL,CAAS7B,KAArD;UAEMvB,IAAI,GAAG,KAAKyZ,yBAAL,CAA+BvX,IAA/B,CAAb;IACAkC,SAAS,CAACH,IAAV,CAAeQ,IAAf,CAAoBzE,IAApB;SAEK+0C,UAAL,CAAgBiJ,kBAAhB,CACEh+C,IAAI,CAACoD,GAAL,CAASoK,EAAT,CAAYjW,IADd,EAEEuI,mBAFF,EAGEE,IAAI,CAACoD,GAAL,CAAS7B,KAHX;;;EAOF4C,eAAe,CACbC,SADa,EAEbjE,MAFa,EAGbrC,WAHa,EAIbD,OAJa,EAKbwG,aALa,EAMbC,iBANa,EAOP;IACNF,SAAS,CAACH,IAAV,CAAeQ,IAAf,CACE,KAAKF,WAAL,CACEpE,MADF,EAEErC,WAFF,EAGED,OAHF,EAIEwG,aAJF,EAKEC,iBALF,EAME,aANF,EAOE,IAPF,CADF;;;EAaFuV,sBAAsB,CACpBzV,SADoB,EAEpBjE,MAFoB,EAGpBrC,WAHoB,EAIpBD,OAJoB,EAKd;SACDinC,YAAL,CAAkB,qBAAlB,EAAyC3kC,MAAM,CAACiD,GAAP,CAAW7B,KAApD;UAEMvB,IAAI,GAAG,KAAKuE,WAAL,CACXpE,MADW,EAEXrC,WAFW,EAGXD,OAHW,EAIS,KAJT,EAKX,KALW,EAMX,oBANW,EAOX,IAPW,CAAb;IASAuG,SAAS,CAACH,IAAV,CAAeQ,IAAf,CAAoBzE,IAApB;UAEME,IAAI,GACRF,IAAI,CAACE,IAAL,KAAc,KAAd,GACIF,IAAI,CAAC2S,MAAL,GACEjT,2BADF,GAEEE,6BAHN,GAIII,IAAI,CAACE,IAAL,KAAc,KAAd,GACAF,IAAI,CAAC2S,MAAL,GACEhT,2BADF,GAEEE,6BAHF,GAIAC,mBATN;SAUKi1C,UAAL,CAAgBiJ,kBAAhB,CAAmCh+C,IAAI,CAACoD,GAAL,CAASoK,EAAT,CAAYjW,IAA/C,EAAqD2I,IAArD,EAA2DF,IAAI,CAACoD,GAAL,CAAS7B,KAApE;;;EAIF0hC,4BAA4B,CAE1BC,YAF0B,EAGpB;;EAGRxB,mBAAmB,GAAqB;WAC/Bl2B,SAAP;;;EAGFiO,yBAAyB,CACvBzZ,IADuB,EAEC;SACnBgI,KAAL,CAAWoH,KAAX,CAAiB3R,WAAW,GAAGF,WAA/B;IAEAyC,IAAI,CAACa,KAAL,GAAa,KAAKmM,GAAL,CAASpI,KAAE,CAACnL,EAAZ,IAAkB,KAAKwd,gBAAL,EAAlB,GAA4C,IAAzD;SACK7I,SAAL;SAEKpG,KAAL,CAAWuH,IAAX;WAEO,KAAKjK,UAAL,CAAgBtF,IAAhB,EAAsB,sBAAtB,CAAP;;;EAGFwZ,kBAAkB,CAACxZ,IAAD,EAAyC;QACrD,CAACA,IAAI,CAACkO,cAAV,EAA0B;WACnB42B,YAAL,CAAkB,iBAAlB;;;SAGG98B,KAAL,CAAWoH,KAAX,CAAiB3R,WAAW,GAAGF,WAA/B;;QAEI,KAAK6P,KAAL,CAAWxI,KAAE,CAACnL,EAAd,CAAJ,EAAuB;WAChBqrC,YAAL,CAAkB,iBAAlB;WACKz6B,IAAL;MACArK,IAAI,CAACa,KAAL,GAAa,KAAKoW,gBAAL,EAAb;KAHF,MAIO;MACLjX,IAAI,CAACa,KAAL,GAAa,IAAb;;;SAEGuN,SAAL;SAEKpG,KAAL,CAAWuH,IAAX;WAEO,KAAKjK,UAAL,CAAgBtF,IAAhB,EAAsB,eAAtB,CAAP;;;EAGF0Y,YAAY,CACV1Y,IADU,EAEV2Y,WAFU,EAGVC,UAHU,EAIVnW,WAAyB,GAAG/D,UAJlB,EAKJ;QACF,KAAK0O,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAJ,EAAyB;MACvByI,IAAI,CAACwN,EAAL,GAAU,KAAKC,eAAL,EAAV;;UACIkL,WAAJ,EAAiB;aACVpW,SAAL,CAAevC,IAAI,CAACwN,EAApB,EAAwB/K,WAAxB,EAAqC+I,SAArC,EAAgD,YAAhD;;KAHJ,MAKO;UACDoN,UAAU,IAAI,CAACD,WAAnB,EAAgC;QAC9B3Y,IAAI,CAACwN,EAAL,GAAU,IAAV;OADF,MAEO;aACAyB,UAAL,CAAgB,IAAhB,EAAsB,0BAAtB;;;;;EAKN6K,eAAe,CAAC9Z,IAAD,EAAsB;IACnCA,IAAI,CAACI,UAAL,GAAkB,KAAK4M,GAAL,CAASpI,KAAE,CAACvI,QAAZ,IAAwB,KAAKs4C,mBAAL,EAAxB,GAAqD,IAAvE;;;EAKF9kC,WAAW,CAAC7P,IAAD,EAA4B;UAC/Bi+C,UAAU,GAAG,KAAKjZ,gCAAL,CAAsChlC,IAAtC,CAAnB;UACMk+C,iBAAiB,GAAG,CAACD,UAAD,IAAe,KAAKjxC,GAAL,CAASpI,KAAE,CAAClM,KAAZ,CAAzC;UACMylD,OAAO,GAAGD,iBAAiB,IAAI,KAAK3lC,aAAL,CAAmBvY,IAAnB,CAArC;UACMyY,YAAY,GAChB0lC,OAAO,IAAI,KAAK3lC,kCAAL,CAAwCxY,IAAxC,CADb;UAEMo+C,mBAAmB,GACvBF,iBAAiB,KAAK,CAACzlC,YAAD,IAAiB,KAAKzL,GAAL,CAASpI,KAAE,CAAClM,KAAZ,CAAtB,CADnB;UAEM2lD,cAAc,GAAGJ,UAAU,IAAIE,OAArC;;QAEIA,OAAO,IAAI,CAAC1lC,YAAhB,EAA8B;UACxBwlC,UAAJ,EAAgB,KAAKhvC,UAAL;WACXqJ,eAAL,CAAqBtY,IAArB,EAA2B,IAA3B;aAEO,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,sBAAtB,CAAP;;;UAGIs+C,aAAa,GAAG,KAAKC,+BAAL,CAAqCv+C,IAArC,CAAtB;;QAGGi+C,UAAU,IAAIC,iBAAd,IAAmC,CAACC,OAApC,IAA+C,CAACG,aAAjD,IACC7lC,YAAY,IAAI2lC,mBAAhB,IAAuC,CAACE,aAF3C,EAGE;YACM,KAAKrvC,UAAL,CAAgB,IAAhB,EAAsBrK,KAAE,CAACxM,MAAzB,CAAN;;;QAGEomD,cAAJ;;QACIH,cAAc,IAAIC,aAAtB,EAAqC;MACnCE,cAAc,GAAG,KAAjB;WACKlmC,eAAL,CAAqBtY,IAArB,EAA2Bq+C,cAA3B;KAFF,MAGO;MACLG,cAAc,GAAG,KAAKC,2BAAL,CAAiCz+C,IAAjC,CAAjB;;;QAGEq+C,cAAc,IAAIC,aAAlB,IAAmCE,cAAvC,EAAuD;WAChDvZ,WAAL,CAAiBjlC,IAAjB,EAAuB,IAAvB,EAA6B,KAA7B,EAAoC,CAAC,CAACA,IAAI,CAACiG,MAA3C;aACO,KAAKX,UAAL,CAAgBtF,IAAhB,EAAsB,wBAAtB,CAAP;;;QAGE,KAAKgN,GAAL,CAASpI,KAAE,CAAC1J,QAAZ,CAAJ,EAA2B;MAEzB8E,IAAI,CAAC0K,WAAL,GAAmB,KAAKqL,4BAAL,EAAnB;WACKkvB,WAAL,CAAiBjlC,IAAjB,EAAuB,IAAvB,EAA6B,IAA7B;aAEO,KAAKsF,UAAL,CAAgBtF,IAAhB,EAAsB,0BAAtB,CAAP;;;UAGI,KAAKiP,UAAL,CAAgB,IAAhB,EAAsBrK,KAAE,CAACxM,MAAzB,CAAN;;;EAIFmgB,aAAa,CAACvY,IAAD,EAAwB;WAC5B,KAAKgN,GAAL,CAASpI,KAAE,CAAClK,IAAZ,CAAP;;;EAGFsqC,gCAAgC,CAAChlC,IAAD,EAAwB;QAClD,KAAK8V,wBAAL,EAAJ,EAAqC;WAE9BgvB,YAAL,CAAkB,mBAAlB;YACMrqB,SAAS,GAAG,KAAKpV,SAAL,EAAlB;MACAoV,SAAS,CAACsqB,QAAV,GAAqB,KAAKt3B,eAAL,CAAqB,IAArB,CAArB;MACAzN,IAAI,CAACoY,UAAL,GAAkB,CAAC,KAAK9S,UAAL,CAAgBmV,SAAhB,EAA2B,wBAA3B,CAAD,CAAlB;aACO,IAAP;;;WAEK,KAAP;;;EAGFjC,kCAAkC,CAACxY,IAAD,EAAwB;QACpD,KAAK4O,YAAL,CAAkB,IAAlB,CAAJ,EAA6B;UACvB,CAAC5O,IAAI,CAACoY,UAAV,EAAsBpY,IAAI,CAACoY,UAAL,GAAkB,EAAlB;YAEhBqC,SAAS,GAAG,KAAKnZ,WAAL,CAChB,KAAKqD,KAAL,CAAW+J,YADK,EAEhB,KAAK/J,KAAL,CAAWglC,eAFK,CAAlB;WAKKt/B,IAAL;MAEAoQ,SAAS,CAACsqB,QAAV,GAAqB,KAAKt3B,eAAL,CAAqB,IAArB,CAArB;MACAzN,IAAI,CAACoY,UAAL,CAAgB3T,IAAhB,CACE,KAAKa,UAAL,CAAgBmV,SAAhB,EAA2B,0BAA3B,CADF;aAGO,IAAP;;;WAEK,KAAP;;;EAGF8jC,+BAA+B,CAACv+C,IAAD,EAAwB;QACjD,KAAKoN,KAAL,CAAWxI,KAAE,CAACxM,MAAd,CAAJ,EAA2B;UACrB,CAAC4H,IAAI,CAACoY,UAAV,EAAsBpY,IAAI,CAACoY,UAAL,GAAkB,EAAlB;MACtBpY,IAAI,CAACoY,UAAL,CAAgB3T,IAAhB,CAAqB,GAAG,KAAK4T,qBAAL,EAAxB;MAEArY,IAAI,CAACiG,MAAL,GAAc,IAAd;MACAjG,IAAI,CAAC0K,WAAL,GAAmB,IAAnB;aAEO,IAAP;;;WAEK,KAAP;;;EAGF+zC,2BAA2B,CAACz+C,IAAD,EAAwB;QAC7C,KAAK6V,4BAAL,EAAJ,EAAyC;UACnC,KAAKjH,YAAL,CAAkB,OAAlB,CAAJ,EAAgC;cACxBvE,IAAI,GAAG,KAAKiiC,cAAL,EAAb;;YAGI,CAAC,KAAK4E,oBAAL,CAA0B7mC,IAA1B,EAAgC,UAAhC,CAAL,EAAkD;eAC3C4E,UAAL,CAAgB5E,IAAhB,EAAuB,uCAAvB;;;;MAIJrK,IAAI,CAACoY,UAAL,GAAkB,EAAlB;MACApY,IAAI,CAACiG,MAAL,GAAc,IAAd;MACAjG,IAAI,CAAC0K,WAAL,GAAmB,KAAKwN,sBAAL,CAA4BlY,IAA5B,CAAnB;aAEO,IAAP;;;WAEK,KAAP;;;EAGFk7C,eAAe,GAAY;QACrB,CAAC,KAAKtsC,YAAL,CAAkB,OAAlB,CAAL,EAAiC,OAAO,KAAP;UAC3BvE,IAAI,GAAG,KAAKiiC,cAAL,EAAb;WAEE,CAAChmC,SAAS,CAAC+B,IAAV,CAAe,KAAKC,KAAL,CAAWxG,KAAX,CAAiB,KAAK6C,KAAL,CAAWoF,GAA5B,EAAiCM,IAAjC,CAAf,CAAD,IACA,KAAK6mC,oBAAL,CAA0B7mC,IAA1B,EAAgC,UAAhC,CAFF;;;EAMF0L,4BAA4B,GAAiC;UACrDvT,IAAI,GAAG,KAAK6C,SAAL,EAAb;UAEMxH,OAAO,GAAG,KAAKq9C,eAAL,EAAhB;;QAEI,KAAK9tC,KAAL,CAAWxI,KAAE,CAACrJ,SAAd,KAA4BsC,OAAhC,EAAyC;WAClCwM,IAAL;;UACIxM,OAAJ,EAAa;aACNwM,IAAL;;;aAGK,KAAK0rC,aAAL,CACLvzC,IADK,EAELq3C,cAAc,GAAGE,gBAFZ,EAGLl8C,OAHK,CAAP;KANF,MAWO,IAAI,KAAKuP,KAAL,CAAWxI,KAAE,CAACxI,MAAd,CAAJ,EAA2B;aACzB,KAAKukC,UAAL,CAAgBn+B,IAAhB,EAAsB,IAAtB,EAA4B,IAA5B,CAAP;KADK,MAEA,IAAI,KAAK4K,KAAL,CAAWxI,KAAE,CAACtL,EAAd,CAAJ,EAAuB;UAE1B,KAAKyiB,SAAL,CAAe,YAAf,KACA,KAAKrQ,eAAL,CAAqB,YAArB,EAAmC,wBAAnC,CAFF,EAGE;aACKpJ,KAAL,CACE,KAAKqC,KAAL,CAAWpD,KADb,EAEE,6DACE,kEADF,GAEE,0CAJJ;;;WAOG60C,eAAL,CAAqB,KAArB;aACO,KAAKzV,UAAL,CAAgBn+B,IAAhB,EAAsB,IAAtB,EAA4B,IAA5B,CAAP;KAbK,MAcA,IAAI,KAAK4K,KAAL,CAAWxI,KAAE,CAAC9I,MAAd,KAAyB,KAAKsR,KAAL,CAAWxI,KAAE,CAAC/I,IAAd,CAAzB,IAAgD,KAAK8T,KAAL,EAApD,EAAkE;YACjE,KAAKrN,KAAL,CACJ,KAAKqC,KAAL,CAAWpD,KADP,EAEJ,6EAFI,CAAN;KADK,MAKA;YACC6+B,GAAG,GAAG,KAAKnpB,gBAAL,EAAZ;WACK7I,SAAL;aACOgyB,GAAP;;;;EAKJloB,sBAAsB,CAAClY,IAAD,EAAiD;WAC9D,KAAK0V,cAAL,CAAoB,IAApB,CAAP;;;EAGFI,wBAAwB,GAAY;QAC9B,KAAK1I,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAJ,EAAyB;aAChB,KAAKoN,KAAL,CAAW9D,KAAX,KAAqB,OAArB,IAAgC,KAAK8D,KAAL,CAAW9D,KAAX,KAAqB,KAA5D;;;QAGE,CAAC,KAAKuM,KAAL,CAAWxI,KAAE,CAAC1J,QAAd,CAAL,EAA8B;aACrB,KAAP;;;UAGImP,IAAI,GAAG,KAAKiiC,cAAL,EAAb;WAEE,KAAKhkC,KAAL,CAAWwQ,UAAX,CAAsBzO,IAAtB,YACA,KAAK6mC,oBAAL,CAA0B7mC,IAA1B,EAAgC,MAAhC,CAFF;;;EAMFiO,eAAe,CAACtY,IAAD,EAAiCuM,MAAjC,EAAyD;QAClE,KAAKiC,aAAL,CAAmB,MAAnB,CAAJ,EAAgC;MAC9BxO,IAAI,CAACiG,MAAL,GAAc,KAAKq/B,iBAAL,EAAd;WACKL,WAAL,CAAiBjlC,IAAjB;KAFF,MAGO;UACDuM,MAAJ,EAAY;aACL0C,UAAL;OADF,MAEO;QACLjP,IAAI,CAACiG,MAAL,GAAc,IAAd;;;;SAICmI,SAAL;;;EAGFyH,4BAA4B,GAAY;QAClC,KAAKzI,KAAL,CAAWxI,KAAE,CAACtL,EAAd,CAAJ,EAAuB;WAChBg4C,eAAL,CAAqB,CAAC,YAAD,EAAe,mBAAf,CAArB;;UACI,KAAKv1B,SAAL,CAAe,YAAf,CAAJ,EAAkC;YAC5B,KAAKrQ,eAAL,CAAqB,YAArB,EAAmC,wBAAnC,CAAJ,EAAkE;eAC3DuD,UAAL,CACE,KAAKtK,KAAL,CAAWpD,KADb,EAEE,6DACE,kEADF,GAEE,0CAJJ;SADF,MAOO;iBACE,IAAP;;;;;WAMJ,KAAKoD,KAAL,CAAW1E,IAAX,CAAgBjJ,OAAhB,KAA4B,KAA5B,IACA,KAAK2N,KAAL,CAAW1E,IAAX,CAAgBjJ,OAAhB,KAA4B,OAD5B,IAEA,KAAK2N,KAAL,CAAW1E,IAAX,CAAgBjJ,OAAhB,KAA4B,UAF5B,IAGA,KAAK2N,KAAL,CAAW1E,IAAX,CAAgBjJ,OAAhB,KAA4B,OAH5B,IAIA,KAAK2Y,KAAL,EAJA,IAKA,KAAKurC,eAAL,EANF;;;EAUFjW,WAAW,CACTjlC,IADS,EAET0+C,UAFS,EAGTC,SAHS,EAITC,MAJS,EAKH;QACFF,UAAJ,EAAgB;UAEVC,SAAJ,EAAe;aAERjc,qBAAL,CAA2B1iC,IAA3B,EAAiC,SAAjC;OAFF,MAGO,IAAIA,IAAI,CAACoY,UAAL,IAAmBpY,IAAI,CAACoY,UAAL,CAAgB/V,MAAvC,EAA+C;6CAE5BrC,IAAI,CAACoY,UAFuB,wCAEX;gBAA9BqC,SAAS,wBAAf;eACEioB,qBAAL,CAA2BjoB,SAA3B,EAAsCA,SAAS,CAACsqB,QAAV,CAAmBxtC,IAAzD;;cAEI,CAACqnD,MAAD,IAAWnkC,SAAS,CAACC,KAAzB,EAAgC;iBAEzBY,iBAAL,CACEb,SAAS,CAACC,KAAV,CAAgBnjB,IADlB,EAEEkjB,SAAS,CAACC,KAAV,CAAgBnZ,KAFlB,EAGE,IAHF,EAIE,KAJF;iBAQKyG,KAAL,CAAW8tB,gBAAX,CAA4Brb,SAAS,CAACC,KAAtC;;;OAfC,MAkBA,IAAI1a,IAAI,CAAC0K,WAAT,EAAsB;YAGzB1K,IAAI,CAAC0K,WAAL,CAAiBzK,IAAjB,KAA0B,qBAA1B,IACAD,IAAI,CAAC0K,WAAL,CAAiBzK,IAAjB,KAA0B,kBAF5B,EAGE;gBACMuN,EAAE,GAAGxN,IAAI,CAAC0K,WAAL,CAAiB8C,EAA5B;cACI,CAACA,EAAL,EAAS,MAAM,IAAItB,KAAJ,CAAU,mBAAV,CAAN;eAEJw2B,qBAAL,CAA2B1iC,IAA3B,EAAiCwN,EAAE,CAACjW,IAApC;SAPF,MAQO,IAAIyI,IAAI,CAAC0K,WAAL,CAAiBzK,IAAjB,KAA0B,qBAA9B,EAAqD;oDAChCD,IAAI,CAAC0K,WAAL,CAAiBoxC,YADe,6CACD;kBAA9CpxC,WAAW,6BAAjB;iBACE1I,gBAAL,CAAsB0I,WAAW,CAAC8C,EAAlC;;;;;;UAMF8tC,wBAAwB,GAAG,KAAK32C,KAAL,CAAWkmC,cAAX,CAC/B,KAAKlmC,KAAL,CAAWkmC,cAAX,CAA0BxoC,MAA1B,GAAmC,CADJ,CAAjC;;QAGIi5C,wBAAwB,CAACj5C,MAA7B,EAAqC;YAC7B6N,OAAO,GACXlQ,IAAI,CAAC0K,WAAL,KACC1K,IAAI,CAAC0K,WAAL,CAAiBzK,IAAjB,KAA0B,kBAA1B,IACCD,IAAI,CAAC0K,WAAL,CAAiBzK,IAAjB,KAA0B,iBAF5B,CADF;;UAII,CAACD,IAAI,CAAC0K,WAAN,IAAqB,CAACwF,OAA1B,EAAmC;cAC3B,KAAK5N,KAAL,CACJtC,IAAI,CAACuB,KADD,EAEJ,iEAFI,CAAN;;;WAKGqjC,cAAL,CAAoB5kC,IAAI,CAAC0K,WAAzB;;;;EAIJ1I,gBAAgB,CAAChC,IAAD,EAA2C;QACrDA,IAAI,CAACC,IAAL,KAAc,YAAlB,EAAgC;WACzByiC,qBAAL,CAA2B1iC,IAA3B,EAAiCA,IAAI,CAACzI,IAAtC;KADF,MAEO,IAAIyI,IAAI,CAACC,IAAL,KAAc,eAAlB,EAAmC;2CACrBD,IAAI,CAAC6C,UADgB,wCACJ;cAAzBX,IAAI,wBAAV;aACEF,gBAAL,CAAsBE,IAAtB;;KAFG,MAIA,IAAIlC,IAAI,CAACC,IAAL,KAAc,cAAlB,EAAkC;yCACpBD,IAAI,CAACmZ,QADe,sCACL;cAAvBm6B,IAAI,sBAAV;;YACCA,IAAJ,EAAU;eACHtxC,gBAAL,CAAsBsxC,IAAtB;;;KAHC,MAMA,IAAItzC,IAAI,CAACC,IAAL,KAAc,gBAAlB,EAAoC;WACpC+B,gBAAL,CAAsBhC,IAAI,CAACa,KAA3B;KADK,MAEA,IAAIb,IAAI,CAACC,IAAL,KAAc,aAAlB,EAAiC;WACjC+B,gBAAL,CAAsBhC,IAAI,CAAC8T,QAA3B;KADK,MAEA,IAAI9T,IAAI,CAACC,IAAL,KAAc,mBAAlB,EAAuC;WACvC+B,gBAAL,CAAsBhC,IAAI,CAACsa,IAA3B;;;;EAIJooB,qBAAqB,CACnB1iC,IADmB,EAMnBzI,IANmB,EAOb;QACF,KAAKoN,KAAL,CAAWwmC,mBAAX,CAA+BtzB,OAA/B,CAAuCtgB,IAAvC,IAA+C,CAAC,CAApD,EAAuD;WAChD+K,KAAL,CACEtC,IAAI,CAACuB,KADP,EAEEhK,IAAI,KAAK,SAAT,GACI,6CADJ,GAEK,KAAIA,IAAK,oEAJhB;;;SAOGoN,KAAL,CAAWwmC,mBAAX,CAA+B1mC,IAA/B,CAAoClN,IAApC;;;EAKF8gB,qBAAqB,GAA6B;UAC1CwmC,KAAK,GAAG,EAAd;QACI3L,KAAK,GAAG,IAAZ;SAGK3mC,MAAL,CAAY3H,KAAE,CAACxM,MAAf;;WAEO,CAAC,KAAK4U,GAAL,CAASpI,KAAE,CAACtM,MAAZ,CAAR,EAA6B;UACvB46C,KAAJ,EAAW;QACTA,KAAK,GAAG,KAAR;OADF,MAEO;aACA3mC,MAAL,CAAY3H,KAAE,CAAClM,KAAf;YACI,KAAKsU,GAAL,CAASpI,KAAE,CAACtM,MAAZ,CAAJ,EAAyB;;;YAGrB0H,IAAI,GAAG,KAAKqF,SAAL,EAAb;MACArF,IAAI,CAAC0a,KAAL,GAAa,KAAKjN,eAAL,CAAqB,IAArB,CAAb;MACAzN,IAAI,CAAC+kC,QAAL,GAAgB,KAAKv2B,aAAL,CAAmB,IAAnB,IACZ,KAAKf,eAAL,CAAqB,IAArB,CADY,GAEZzN,IAAI,CAAC0a,KAAL,CAAWS,OAAX,EAFJ;MAGA0jC,KAAK,CAACp6C,IAAN,CAAW,KAAKa,UAAL,CAAgBtF,IAAhB,EAAsB,iBAAtB,CAAX;;;WAGK6+C,KAAP;;;EAKFvvC,WAAW,CAACtP,IAAD,EAA4B;IAErCA,IAAI,CAACoY,UAAL,GAAkB,EAAlB;;QACI,CAAC,KAAKhL,KAAL,CAAWxI,KAAE,CAAC5M,MAAd,CAAL,EAA4B;YACpBimD,UAAU,GAAG,KAAKtjC,gCAAL,CAAsC3a,IAAtC,CAAnB;YACM8+C,SAAS,GAAG,CAACb,UAAD,IAAe,KAAKjxC,GAAL,CAASpI,KAAE,CAAClM,KAAZ,CAAjC;YACMylD,OAAO,GAAGW,SAAS,IAAI,KAAK1Z,6BAAL,CAAmCplC,IAAnC,CAA7B;UACI8+C,SAAS,IAAI,CAACX,OAAlB,EAA2B,KAAK9Y,0BAAL,CAAgCrlC,IAAhC;WACtB6M,gBAAL,CAAsB,MAAtB;;;IAEF7M,IAAI,CAACiG,MAAL,GAAc,KAAKq/B,iBAAL,EAAd;SACKl3B,SAAL;WACO,KAAK9I,UAAL,CAAgBtF,IAAhB,EAAsB,mBAAtB,CAAP;;;EAGFslC,iBAAiB,GAAoB;QAC/B,CAAC,KAAKl4B,KAAL,CAAWxI,KAAE,CAAC5M,MAAd,CAAL,EAA4B,KAAKiX,UAAL;WACrB,KAAKvK,aAAL,EAAP;;;EAIF6V,wBAAwB,CAACva,IAAD,EAAqC;WACpD,KAAKoN,KAAL,CAAWxI,KAAE,CAACrN,IAAd,CAAP;;;EAGFijB,yBAAyB,CACvBxa,IADuB,EAEvBya,SAFuB,EAGvBxa,IAHuB,EAIvB0C,kBAJuB,EAKjB;IACN8X,SAAS,CAACC,KAAV,GAAkB,KAAKjN,eAAL,EAAlB;SACKlL,SAAL,CACEkY,SAAS,CAACC,KADZ,EAEE/b,YAFF,EAGE6M,SAHF,EAIE7I,kBAJF;IAMA3C,IAAI,CAACoY,UAAL,CAAgB3T,IAAhB,CAAqB,KAAKa,UAAL,CAAgBmV,SAAhB,EAA2Bxa,IAA3B,CAArB;;;EAGF0a,gCAAgC,CAAC3a,IAAD,EAAqC;QAC/D,KAAKua,wBAAL,CAA8Bva,IAA9B,CAAJ,EAAyC;WAElCwa,yBAAL,CACExa,IADF,EAEE,KAAKqF,SAAL,EAFF,EAGE,wBAHF,EAIE,0BAJF;aAMO,IAAP;;;WAEK,KAAP;;;EAGF+/B,6BAA6B,CAACplC,IAAD,EAAqC;QAC5D,KAAKoN,KAAL,CAAWxI,KAAE,CAAClK,IAAd,CAAJ,EAAyB;YACjB+f,SAAS,GAAG,KAAKpV,SAAL,EAAlB;WACKgF,IAAL;WACKwC,gBAAL,CAAsB,IAAtB;WAEK2N,yBAAL,CACExa,IADF,EAEEya,SAFF,EAGE,0BAHF,EAIE,4BAJF;aAMO,IAAP;;;WAEK,KAAP;;;EAGF4qB,0BAA0B,CAACrlC,IAAD,EAA4B;QAChDkzC,KAAK,GAAG,IAAZ;SACK3mC,MAAL,CAAY3H,KAAE,CAACxM,MAAf;;WACO,CAAC,KAAK4U,GAAL,CAASpI,KAAE,CAACtM,MAAZ,CAAR,EAA6B;UACvB46C,KAAJ,EAAW;QACTA,KAAK,GAAG,KAAR;OADF,MAEO;YAED,KAAKlmC,GAAL,CAASpI,KAAE,CAAChM,KAAZ,CAAJ,EAAwB;gBAChB,KAAK0J,KAAL,CACJ,KAAKqC,KAAL,CAAWpD,KADP,EAEJ,8CACE,2DAHE,CAAN;;;aAOGgL,MAAL,CAAY3H,KAAE,CAAClM,KAAf;YACI,KAAKsU,GAAL,CAASpI,KAAE,CAACtM,MAAZ,CAAJ,EAAyB;;;WAGtBsiB,oBAAL,CAA0B5a,IAA1B;;;;EAIJ4a,oBAAoB,CAAC5a,IAAD,EAAkC;UAC9Cya,SAAS,GAAG,KAAKpV,SAAL,EAAlB;IACAoV,SAAS,CAACS,QAAV,GAAqB,KAAKzN,eAAL,CAAqB,IAArB,CAArB;;QACI,KAAKe,aAAL,CAAmB,IAAnB,CAAJ,EAA8B;MAC5BiM,SAAS,CAACC,KAAV,GAAkB,KAAKjN,eAAL,EAAlB;KADF,MAEO;WACA6N,iBAAL,CACEb,SAAS,CAACS,QAAV,CAAmB3jB,IADrB,EAEEkjB,SAAS,CAAClZ,KAFZ,EAGE,IAHF,EAIE,IAJF;MAMAkZ,SAAS,CAACC,KAAV,GAAkBD,SAAS,CAACS,QAAV,CAAmBC,OAAnB,EAAlB;;;SAEG5Y,SAAL,CACEkY,SAAS,CAACC,KADZ,EAEE/b,YAFF,EAGE6M,SAHF,EAIE,kBAJF;IAMAxL,IAAI,CAACoY,UAAL,CAAgB3T,IAAhB,CAAqB,KAAKa,UAAL,CAAgBmV,SAAhB,EAA2B,iBAA3B,CAArB;;;;;ACzlEG,MAAMskC,UAAN,CAAiB;;SAEtBC,YAFsB,GAEM,IAAIn2C,GAAJ,EAFN;SAKtBo2C,aALsB,GAK0B,IAAI5nD,GAAJ,EAL1B;SAStBu9B,qBATsB,GASuB,IAAIv9B,GAAJ,EATvB;;;;AAcxB,AAAe,MAAM6nD,iBAAN,CAAwB;EAKrCroD,WAAW,CAACyL,KAAD,EAAuB;SAJlC8U,KAIkC,GAJP,EAIO;SAFlCwd,qBAEkC,GAFW,IAAIv9B,GAAJ,EAEX;SAC3BiL,KAAL,GAAaA,KAAb;;;EAGF8H,OAAO,GAAe;WACb,KAAKgN,KAAL,CAAW,KAAKA,KAAL,CAAW/U,MAAX,GAAoB,CAA/B,CAAP;;;EAGF+M,KAAK,GAAG;SACDgI,KAAL,CAAW3S,IAAX,CAAgB,IAAIs6C,UAAJ,EAAhB;;;EAGFxvC,IAAI,GAAG;UACC4vC,aAAa,GAAG,KAAK/nC,KAAL,CAAWxP,GAAX,EAAtB;UAKMwC,OAAO,GAAG,KAAKA,OAAL,EAAhB;;mCAG0By7B,KAAK,CAACsU,IAAN,CAAWgF,aAAa,CAACvqB,qBAAzB,CATrB,iCASsE;YAAhE,CAACr9B,IAAD,EAAOwS,GAAP,mBAAN;;UACCK,OAAJ,EAAa;YACP,CAACA,OAAO,CAACwqB,qBAAR,CAA8BzrB,GAA9B,CAAkC5R,IAAlC,CAAL,EAA8C;UAC5C6S,OAAO,CAACwqB,qBAAR,CAA8Bl9B,GAA9B,CAAkCH,IAAlC,EAAwCwS,GAAxC;;OAFJ,MAIO;aACAq1C,0BAAL,CAAgC7nD,IAAhC,EAAsCwS,GAAtC;;;;;EAKNi0C,kBAAkB,CAChBzmD,IADgB,EAEhBwd,WAFgB,EAGhBhL,GAHgB,EAIhB;UACMgrC,UAAU,GAAG,KAAK3qC,OAAL,EAAnB;QACIi1C,SAAS,GAAGtK,UAAU,CAACiK,YAAX,CAAwB71C,GAAxB,CAA4B5R,IAA5B,CAAhB;;QAEIwd,WAAW,GAAGtV,2BAAlB,EAA+C;YACvC6/C,QAAQ,GAAGD,SAAS,IAAItK,UAAU,CAACkK,aAAX,CAAyB3W,GAAzB,CAA6B/wC,IAA7B,CAA9B;;UACI+nD,QAAJ,EAAc;cACNC,SAAS,GAAGD,QAAQ,GAAGhgD,yBAA7B;cACMkgD,SAAS,GAAGzqC,WAAW,GAAGzV,yBAAhC;cAEMmgD,OAAO,GAAGH,QAAQ,GAAG7/C,2BAA3B;cACMigD,OAAO,GAAG3qC,WAAW,GAAGtV,2BAA9B;QAKA4/C,SAAS,GAAGI,OAAO,KAAKC,OAAZ,IAAuBH,SAAS,KAAKC,SAAjD;YAEI,CAACH,SAAL,EAAgBtK,UAAU,CAACkK,aAAX,CAAyBrpB,MAAzB,CAAgCr+B,IAAhC;OAZlB,MAaO,IAAI,CAAC8nD,SAAL,EAAgB;QACrBtK,UAAU,CAACkK,aAAX,CAAyBvnD,GAAzB,CAA6BH,IAA7B,EAAmCwd,WAAnC;;;;QAIAsqC,SAAJ,EAAe;WACR/8C,KAAL,CAAWyH,GAAX,EAAiB,2BAA0BxS,IAAK,EAAhD;;;IAGFw9C,UAAU,CAACiK,YAAX,CAAwBt+B,GAAxB,CAA4BnpB,IAA5B;IACAw9C,UAAU,CAACngB,qBAAX,CAAiCgB,MAAjC,CAAwCr+B,IAAxC;;;EAGFy9C,cAAc,CAACz9C,IAAD,EAAewS,GAAf,EAA4B;QACpCgrC,UAAJ;;oCACmB,KAAK39B,KAFgB,mCAET;MAA1B29B,UAA0B;UACzBA,UAAU,CAACiK,YAAX,CAAwB71C,GAAxB,CAA4B5R,IAA5B,CAAJ,EAAuC;;;QAGrCw9C,UAAJ,EAAgB;MACdA,UAAU,CAACngB,qBAAX,CAAiCl9B,GAAjC,CAAqCH,IAArC,EAA2CwS,GAA3C;KADF,MAEO;WAEAq1C,0BAAL,CAAgC7nD,IAAhC,EAAsCwS,GAAtC;;;;EAIJq1C,0BAA0B,CAAC7nD,IAAD,EAAewS,GAAf,EAA4B;SAC/CzH,KAAL,CAAWyH,GAAX,EAAiB,iBAAgBxS,IAAK,iBAAtC;;;;;ACjGW,MAAMooD,MAAN,SAAqB3F,eAArB,CAAqC;EAMlDnjD,WAAW,CAACW,OAAD,EAAoB8Q,KAApB,EAAmC;IAC5C9Q,OAAO,GAAGkwC,UAAU,CAAClwC,OAAD,CAApB;UACMA,OAAN,EAAe8Q,KAAf;UAEMmsB,YAAY,GAAG,KAAKkC,eAAL,EAArB;SAEKn/B,OAAL,GAAeA,OAAf;SACKyR,QAAL,GAAgB,KAAKzR,OAAL,CAAaqvC,UAAb,KAA4B,QAA5C;SACK7+B,KAAL,GAAa,IAAIysB,YAAJ,CAAiB,KAAKnyB,KAAL,CAAW60B,IAAX,CAAgB,IAAhB,CAAjB,EAAwC,KAAKluB,QAA7C,CAAb;SACK8rC,UAAL,GAAkB,IAAImK,iBAAJ,CAAsB,KAAK58C,KAAL,CAAW60B,IAAX,CAAgB,IAAhB,CAAtB,CAAlB;SACKuO,OAAL,GAAeka,UAAU,CAAC,KAAKpoD,OAAL,CAAakuC,OAAd,CAAzB;SACK8C,QAAL,GAAgBhxC,OAAO,CAACsvC,cAAxB;;;EAIFnQ,eAAe,GAA2B;WACjClC,YAAP;;;EAGF7c,KAAK,GAAS;QACR67B,UAAU,GAAGx2C,aAAjB;;QACI,KAAK8e,SAAL,CAAe,eAAf,KAAmC,KAAK9S,QAA5C,EAAsD;MACpDwqC,UAAU,IAAIt2C,WAAd;;;SAEG6K,KAAL,CAAWoH,KAAX,CAAiBqkC,UAAjB;UACMv1B,IAAI,GAAG,KAAK7Y,SAAL,EAAb;UACM8Y,OAAO,GAAG,KAAK9Y,SAAL,EAAhB;SACK0Y,SAAL;IACAG,IAAI,CAACgsB,MAAL,GAAc,IAAd;SACKjsB,aAAL,CAAmBC,IAAnB,EAAyBC,OAAzB;IACAD,IAAI,CAACgsB,MAAL,GAAc,KAAKvlC,KAAL,CAAWulC,MAAzB;WACOhsB,IAAP;;;;;AAIJ,SAAS0hC,UAAT,CAAoBla,OAApB,EAAqD;QAC7Cma,SAAqB,GAAG,IAAIxoD,GAAJ,EAA9B;;wBACqBquC,OAF8B,eAErB;UAAnBE,MAAM,GAAIF,OAAJ,IAAZ;UACG,CAACnuC,IAAD,EAAOC,OAAP,IAAkBquC,KAAK,CAACC,OAAN,CAAcF,MAAd,IAAwBA,MAAxB,GAAiC,CAACA,MAAD,EAAS,EAAT,CAAzD;QACI,CAACia,SAAS,CAAC12C,GAAV,CAAc5R,IAAd,CAAL,EAA0BsoD,SAAS,CAACnoD,GAAV,CAAcH,IAAd,EAAoBC,OAAO,IAAI,EAA/B;;;SAErBqoD,SAAP;;;AC3CK,SAASjoC,KAAT,CAAetP,KAAf,EAA8B9Q,OAA9B,EAAuD;MACxDA,OAAO,IAAIA,OAAO,CAACqvC,UAAR,KAAuB,aAAtC,EAAqD;IACnDrvC,OAAO,qBACFA,OADE,CAAP;;QAGI;MACFA,OAAO,CAACqvC,UAAR,GAAqB,QAArB;YACMqL,MAAM,GAAG4N,SAAS,CAACtoD,OAAD,EAAU8Q,KAAV,CAAxB;YACMy3C,GAAG,GAAG7N,MAAM,CAACt6B,KAAP,EAAZ;;UAEIs6B,MAAM,CAAC9J,iBAAX,EAA8B;eACrB2X,GAAP;;;UAGE7N,MAAM,CAAC7J,2BAAX,EAAwC;YAMlC;UACF7wC,OAAO,CAACqvC,UAAR,GAAqB,QAArB;iBACOiZ,SAAS,CAACtoD,OAAD,EAAU8Q,KAAV,CAAT,CAA0BsP,KAA1B,EAAP;SAFF,CAGE,gBAAM;OATV,MAUO;QAGLmoC,GAAG,CAAC5hC,OAAJ,CAAY0oB,UAAZ,GAAyB,QAAzB;;;aAGKkZ,GAAP;KAzBF,CA0BE,OAAOC,WAAP,EAAoB;UAChB;QACFxoD,OAAO,CAACqvC,UAAR,GAAqB,QAArB;eACOiZ,SAAS,CAACtoD,OAAD,EAAU8Q,KAAV,CAAT,CAA0BsP,KAA1B,EAAP;OAFF,CAGE,iBAAM;;YAEFooC,WAAN;;GApCJ,MAsCO;WACEF,SAAS,CAACtoD,OAAD,EAAU8Q,KAAV,CAAT,CAA0BsP,KAA1B,EAAP;;;AAIJ,AAAO,SAAS3K,eAAT,CAAyB3E,KAAzB,EAAwC9Q,OAAxC,EAAuE;QACtE06C,MAAM,GAAG4N,SAAS,CAACtoD,OAAD,EAAU8Q,KAAV,CAAxB;;MACI4pC,MAAM,CAAC16C,OAAP,CAAe6vC,UAAnB,EAA+B;IAC7B6K,MAAM,CAACvtC,KAAP,CAAa+D,MAAb,GAAsB,IAAtB;;;SAEKwpC,MAAM,CAACsB,aAAP,EAAP;;AAGF;AAEA,SAASsM,SAAT,CAAmBtoD,OAAnB,EAAsC8Q,KAAtC,EAA6D;MACvD44B,GAAG,GAAGye,MAAV;;MACInoD,OAAO,IAAIA,OAAO,CAACkuC,OAAvB,EAAgC;IAC9BO,eAAe,CAACzuC,OAAO,CAACkuC,OAAT,CAAf;IACAxE,GAAG,GAAG+e,cAAc,CAACzoD,OAAO,CAACkuC,OAAT,CAApB;;;SAGK,IAAIxE,GAAJ,CAAQ1pC,OAAR,EAAiB8Q,KAAjB,CAAP;;;AAGF,MAAM43C,gBAAkD,GAAG,EAA3D;;AAGA,SAASD,cAAT,CAAwBE,kBAAxB,EAAuE;QAC/DC,UAAU,GAAG1Z,gBAAgB,CAACxB,MAAjB,CAAwB3tC,IAAI,IAC7CwkB,SAAS,CAACokC,kBAAD,EAAqB5oD,IAArB,CADQ,CAAnB;QAIM6L,GAAG,GAAGg9C,UAAU,CAACja,IAAX,CAAgB,GAAhB,CAAZ;MACIjF,GAAG,GAAGgf,gBAAgB,CAAC98C,GAAD,CAA1B;;MACI,CAAC89B,GAAL,EAAU;IACRA,GAAG,GAAGye,MAAN;;0BACqBS,UAFb,eAEyB;YAAtBxa,MAAM,GAAIwa,UAAJ,IAAZ;MACHlf,GAAG,GAAGkF,YAAY,CAACR,MAAD,CAAZ,CAAqB1E,GAArB,CAAN;;;IAEFgf,gBAAgB,CAAC98C,GAAD,CAAhB,GAAwB89B,GAAxB;;;SAEKA,GAAP;;;;;;;"} \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/options.js b/assets/node_modules/@babel/parser/lib/options.js
deleted file mode 100755
index 7d9931d..0000000
--- a/assets/node_modules/@babel/parser/lib/options.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.getOptions = getOptions;
-exports.defaultOptions = void 0;
-const defaultOptions = {
- sourceType: "script",
- sourceFilename: undefined,
- startLine: 1,
- allowAwaitOutsideFunction: false,
- allowReturnOutsideFunction: false,
- allowImportExportEverywhere: false,
- allowSuperOutsideMethod: false,
- allowUndeclaredExports: false,
- plugins: [],
- strictMode: null,
- ranges: false,
- tokens: false,
- createParenthesizedExpressions: false,
- errorRecovery: false
-};
-exports.defaultOptions = defaultOptions;
-
-function getOptions(opts) {
- const options = {};
-
- for (let _i = 0, _Object$keys = Object.keys(defaultOptions); _i < _Object$keys.length; _i++) {
- const key = _Object$keys[_i];
- options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key];
- }
-
- return options;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/parser/base.js b/assets/node_modules/@babel/parser/lib/parser/base.js
deleted file mode 100644
index 23d7ff2..0000000
--- a/assets/node_modules/@babel/parser/lib/parser/base.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-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];
- }
-
-}
-
-exports.default = BaseParser; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/parser/comments.js b/assets/node_modules/@babel/parser/lib/parser/comments.js
deleted file mode 100644
index 0eeac8d..0000000
--- a/assets/node_modules/@babel/parser/lib/parser/comments.js
+++ /dev/null
@@ -1,198 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _base = _interopRequireDefault(require("./base"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function last(stack) {
- return stack[stack.length - 1];
-}
-
-class CommentsParser extends _base.default {
- addComment(comment) {
- if (this.filename) comment.loc.filename = this.filename;
- this.state.trailingComments.push(comment);
- this.state.leadingComments.push(comment);
- }
-
- adjustCommentsAfterTrailingComma(node, elements, takeAllComments) {
- if (this.state.leadingComments.length === 0) {
- return;
- }
-
- let lastElement = null;
- let i = elements.length;
-
- while (lastElement === null && i > 0) {
- lastElement = elements[--i];
- }
-
- if (lastElement === null) {
- return;
- }
-
- for (let j = 0; j < this.state.leadingComments.length; j++) {
- if (this.state.leadingComments[j].end < this.state.commentPreviousNode.end) {
- this.state.leadingComments.splice(j, 1);
- j--;
- }
- }
-
- const newTrailingComments = [];
-
- for (let i = 0; i < this.state.leadingComments.length; i++) {
- const leadingComment = this.state.leadingComments[i];
-
- if (leadingComment.end < node.end) {
- newTrailingComments.push(leadingComment);
-
- if (!takeAllComments) {
- this.state.leadingComments.splice(i, 1);
- i--;
- }
- } else {
- if (node.trailingComments === undefined) {
- node.trailingComments = [];
- }
-
- node.trailingComments.push(leadingComment);
- }
- }
-
- if (takeAllComments) this.state.leadingComments = [];
-
- if (newTrailingComments.length > 0) {
- lastElement.trailingComments = newTrailingComments;
- } else if (lastElement.trailingComments !== undefined) {
- lastElement.trailingComments = [];
- }
- }
-
- processComment(node) {
- if (node.type === "Program" && node.body.length > 0) return;
- const stack = this.state.commentStack;
- let firstChild, lastChild, trailingComments, i, j;
-
- if (this.state.trailingComments.length > 0) {
- if (this.state.trailingComments[0].start >= node.end) {
- trailingComments = this.state.trailingComments;
- this.state.trailingComments = [];
- } else {
- this.state.trailingComments.length = 0;
- }
- } else if (stack.length > 0) {
- const lastInStack = last(stack);
-
- if (lastInStack.trailingComments && lastInStack.trailingComments[0].start >= node.end) {
- trailingComments = lastInStack.trailingComments;
- delete lastInStack.trailingComments;
- }
- }
-
- if (stack.length > 0 && last(stack).start >= node.start) {
- firstChild = stack.pop();
- }
-
- while (stack.length > 0 && last(stack).start >= node.start) {
- lastChild = stack.pop();
- }
-
- if (!lastChild && firstChild) lastChild = firstChild;
-
- if (firstChild) {
- switch (node.type) {
- case "ObjectExpression":
- this.adjustCommentsAfterTrailingComma(node, node.properties);
- break;
-
- case "ObjectPattern":
- this.adjustCommentsAfterTrailingComma(node, node.properties, true);
- break;
-
- case "CallExpression":
- this.adjustCommentsAfterTrailingComma(node, node.arguments);
- break;
-
- case "ArrayExpression":
- this.adjustCommentsAfterTrailingComma(node, node.elements);
- break;
-
- case "ArrayPattern":
- this.adjustCommentsAfterTrailingComma(node, node.elements, true);
- break;
- }
- } else if (this.state.commentPreviousNode && (this.state.commentPreviousNode.type === "ImportSpecifier" && node.type !== "ImportSpecifier" || this.state.commentPreviousNode.type === "ExportSpecifier" && node.type !== "ExportSpecifier")) {
- this.adjustCommentsAfterTrailingComma(node, [this.state.commentPreviousNode]);
- }
-
- if (lastChild) {
- if (lastChild.leadingComments) {
- if (lastChild !== node && lastChild.leadingComments.length > 0 && last(lastChild.leadingComments).end <= node.start) {
- node.leadingComments = lastChild.leadingComments;
- delete lastChild.leadingComments;
- } else {
- for (i = lastChild.leadingComments.length - 2; i >= 0; --i) {
- if (lastChild.leadingComments[i].end <= node.start) {
- node.leadingComments = lastChild.leadingComments.splice(0, i + 1);
- break;
- }
- }
- }
- }
- } else if (this.state.leadingComments.length > 0) {
- if (last(this.state.leadingComments).end <= node.start) {
- if (this.state.commentPreviousNode) {
- for (j = 0; j < this.state.leadingComments.length; j++) {
- if (this.state.leadingComments[j].end < this.state.commentPreviousNode.end) {
- this.state.leadingComments.splice(j, 1);
- j--;
- }
- }
- }
-
- if (this.state.leadingComments.length > 0) {
- node.leadingComments = this.state.leadingComments;
- this.state.leadingComments = [];
- }
- } else {
- for (i = 0; i < this.state.leadingComments.length; i++) {
- if (this.state.leadingComments[i].end > node.start) {
- break;
- }
- }
-
- const leadingComments = this.state.leadingComments.slice(0, i);
-
- if (leadingComments.length) {
- node.leadingComments = leadingComments;
- }
-
- trailingComments = this.state.leadingComments.slice(i);
-
- if (trailingComments.length === 0) {
- trailingComments = null;
- }
- }
- }
-
- this.state.commentPreviousNode = node;
-
- if (trailingComments) {
- if (trailingComments.length && trailingComments[0].start >= node.start && last(trailingComments).end <= node.end) {
- node.innerComments = trailingComments;
- } else {
- node.trailingComments = trailingComments;
- }
- }
-
- stack.push(node);
- }
-
-}
-
-exports.default = CommentsParser; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/parser/expression.js b/assets/node_modules/@babel/parser/lib/parser/expression.js
deleted file mode 100644
index 9e1d2b3..0000000
--- a/assets/node_modules/@babel/parser/lib/parser/expression.js
+++ /dev/null
@@ -1,1693 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _types = require("../tokenizer/types");
-
-var _context = require("../tokenizer/context");
-
-var N = _interopRequireWildcard(require("../types"));
-
-var _lval = _interopRequireDefault(require("./lval"));
-
-var _identifier = require("../util/identifier");
-
-var _scopeflags = require("../util/scopeflags");
-
-var _util = require("./util");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-class ExpressionParser extends _lval.default {
- checkDuplicatedProto(prop, protoRef, refExpressionErrors) {
- if (prop.type === "SpreadElement" || prop.computed || prop.kind || prop.shorthand) {
- return;
- }
-
- const key = prop.key;
- const name = key.type === "Identifier" ? key.name : String(key.value);
-
- if (name === "__proto__") {
- if (protoRef.used) {
- if (refExpressionErrors) {
- if (refExpressionErrors.doubleProto === -1) {
- refExpressionErrors.doubleProto = key.start;
- }
- } else {
- this.raise(key.start, "Redefinition of __proto__ property");
- }
- }
-
- protoRef.used = true;
- }
- }
-
- getExpression() {
- let scopeFlags = _scopeflags.SCOPE_PROGRAM;
-
- if (this.hasPlugin("topLevelAwait") && this.inModule) {
- scopeFlags |= _scopeflags.SCOPE_ASYNC;
- }
-
- this.scope.enter(scopeFlags);
- this.nextToken();
- const expr = this.parseExpression();
-
- if (!this.match(_types.types.eof)) {
- this.unexpected();
- }
-
- expr.comments = this.state.comments;
- expr.errors = this.state.errors;
- return expr;
- }
-
- parseExpression(noIn, refExpressionErrors) {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
- const expr = this.parseMaybeAssign(noIn, refExpressionErrors);
-
- if (this.match(_types.types.comma)) {
- const node = this.startNodeAt(startPos, startLoc);
- node.expressions = [expr];
-
- while (this.eat(_types.types.comma)) {
- node.expressions.push(this.parseMaybeAssign(noIn, refExpressionErrors));
- }
-
- this.toReferencedList(node.expressions);
- return this.finishNode(node, "SequenceExpression");
- }
-
- return expr;
- }
-
- parseMaybeAssign(noIn, refExpressionErrors, afterLeftParse, refNeedsArrowPos) {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
-
- if (this.isContextual("yield")) {
- if (this.scope.inGenerator) {
- let left = this.parseYield(noIn);
-
- if (afterLeftParse) {
- left = afterLeftParse.call(this, left, startPos, startLoc);
- }
-
- return left;
- } else {
- this.state.exprAllowed = false;
- }
- }
-
- let ownExpressionErrors;
-
- if (refExpressionErrors) {
- ownExpressionErrors = false;
- } else {
- refExpressionErrors = new _util.ExpressionErrors();
- ownExpressionErrors = true;
- }
-
- if (this.match(_types.types.parenL) || this.match(_types.types.name)) {
- this.state.potentialArrowAt = this.state.start;
- }
-
- let left = this.parseMaybeConditional(noIn, refExpressionErrors, refNeedsArrowPos);
-
- if (afterLeftParse) {
- left = afterLeftParse.call(this, left, startPos, startLoc);
- }
-
- if (this.state.type.isAssign) {
- const node = this.startNodeAt(startPos, startLoc);
- const operator = this.state.value;
- node.operator = operator;
-
- if (operator === "??=") {
- this.expectPlugin("logicalAssignment");
- }
-
- if (operator === "||=" || operator === "&&=") {
- this.expectPlugin("logicalAssignment");
- }
-
- if (this.match(_types.types.eq)) {
- node.left = this.toAssignable(left);
- refExpressionErrors.doubleProto = -1;
- } else {
- node.left = left;
- }
-
- if (refExpressionErrors.shorthandAssign >= node.left.start) {
- refExpressionErrors.shorthandAssign = -1;
- }
-
- this.checkLVal(left, undefined, undefined, "assignment expression");
- this.next();
- node.right = this.parseMaybeAssign(noIn);
- return this.finishNode(node, "AssignmentExpression");
- } else if (ownExpressionErrors) {
- this.checkExpressionErrors(refExpressionErrors, true);
- }
-
- return left;
- }
-
- parseMaybeConditional(noIn, refExpressionErrors, refNeedsArrowPos) {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
- const potentialArrowAt = this.state.potentialArrowAt;
- const expr = this.parseExprOps(noIn, refExpressionErrors);
-
- if (expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt) {
- return expr;
- }
-
- if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;
- return this.parseConditional(expr, noIn, startPos, startLoc, refNeedsArrowPos);
- }
-
- parseConditional(expr, noIn, startPos, startLoc, refNeedsArrowPos) {
- if (this.eat(_types.types.question)) {
- const node = this.startNodeAt(startPos, startLoc);
- node.test = expr;
- node.consequent = this.parseMaybeAssign();
- this.expect(_types.types.colon);
- node.alternate = this.parseMaybeAssign(noIn);
- return this.finishNode(node, "ConditionalExpression");
- }
-
- return expr;
- }
-
- parseExprOps(noIn, refExpressionErrors) {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
- const potentialArrowAt = this.state.potentialArrowAt;
- const expr = this.parseMaybeUnary(refExpressionErrors);
-
- if (expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt) {
- return expr;
- }
-
- if (this.checkExpressionErrors(refExpressionErrors, false)) {
- return expr;
- }
-
- return this.parseExprOp(expr, startPos, startLoc, -1, noIn);
- }
-
- parseExprOp(left, leftStartPos, leftStartLoc, minPrec, noIn) {
- let prec = this.state.type.binop;
-
- if (prec != null && (!noIn || !this.match(_types.types._in))) {
- if (prec > minPrec) {
- const operator = this.state.value;
-
- if (operator === "|>" && this.state.inFSharpPipelineDirectBody) {
- return left;
- }
-
- const node = this.startNodeAt(leftStartPos, leftStartLoc);
- node.left = left;
- node.operator = operator;
-
- if (operator === "**" && left.type === "UnaryExpression" && (this.options.createParenthesizedExpressions || !(left.extra && left.extra.parenthesized))) {
- this.raise(left.argument.start, "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.");
- }
-
- const op = this.state.type;
- const logical = op === _types.types.logicalOR || op === _types.types.logicalAND;
- const coalesce = op === _types.types.nullishCoalescing;
-
- if (op === _types.types.pipeline) {
- this.expectPlugin("pipelineOperator");
- this.state.inPipeline = true;
- this.checkPipelineAtInfixOperator(left, leftStartPos);
- } else if (coalesce) {
- prec = _types.types.logicalAND.binop;
- }
-
- this.next();
-
- if (op === _types.types.pipeline && this.getPluginOption("pipelineOperator", "proposal") === "minimal") {
- if (this.match(_types.types.name) && this.state.value === "await" && this.scope.inAsync) {
- throw this.raise(this.state.start, `Unexpected "await" after pipeline body; await must have parentheses in minimal proposal`);
- }
- }
-
- node.right = this.parseExprOpRightExpr(op, prec, noIn);
- this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression");
- const nextOp = this.state.type;
-
- if (coalesce && (nextOp === _types.types.logicalOR || nextOp === _types.types.logicalAND) || logical && nextOp === _types.types.nullishCoalescing) {
- throw this.raise(this.state.start, `Nullish coalescing operator(??) requires parens when mixing with logical operators`);
- }
-
- return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn);
- }
- }
-
- return left;
- }
-
- parseExprOpRightExpr(op, prec, noIn) {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
-
- switch (op) {
- case _types.types.pipeline:
- switch (this.getPluginOption("pipelineOperator", "proposal")) {
- case "smart":
- return this.withTopicPermittingContext(() => {
- return this.parseSmartPipelineBody(this.parseExprOpBaseRightExpr(op, prec, noIn), startPos, startLoc);
- });
-
- case "fsharp":
- return this.withSoloAwaitPermittingContext(() => {
- return this.parseFSharpPipelineBody(prec, noIn);
- });
- }
-
- default:
- return this.parseExprOpBaseRightExpr(op, prec, noIn);
- }
- }
-
- parseExprOpBaseRightExpr(op, prec, noIn) {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
- return this.parseExprOp(this.parseMaybeUnary(), startPos, startLoc, op.rightAssociative ? prec - 1 : prec, noIn);
- }
-
- parseMaybeUnary(refExpressionErrors) {
- if (this.isContextual("await") && this.isAwaitAllowed()) {
- return this.parseAwait();
- } else if (this.state.type.prefix) {
- const node = this.startNode();
- const update = this.match(_types.types.incDec);
- node.operator = this.state.value;
- node.prefix = true;
-
- if (node.operator === "throw") {
- this.expectPlugin("throwExpressions");
- }
-
- this.next();
- node.argument = this.parseMaybeUnary();
- this.checkExpressionErrors(refExpressionErrors, true);
-
- if (update) {
- this.checkLVal(node.argument, undefined, undefined, "prefix operation");
- } else if (this.state.strict && node.operator === "delete") {
- const arg = node.argument;
-
- if (arg.type === "Identifier") {
- this.raise(node.start, "Deleting local variable in strict mode");
- } else if (arg.type === "MemberExpression" && arg.property.type === "PrivateName") {
- this.raise(node.start, "Deleting a private field is not allowed");
- }
- }
-
- return this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression");
- }
-
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
- let expr = this.parseExprSubscripts(refExpressionErrors);
- if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;
-
- while (this.state.type.postfix && !this.canInsertSemicolon()) {
- const node = this.startNodeAt(startPos, startLoc);
- node.operator = this.state.value;
- node.prefix = false;
- node.argument = expr;
- this.checkLVal(expr, undefined, undefined, "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 (expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt) {
- return expr;
- }
-
- return this.parseSubscripts(expr, startPos, startLoc);
- }
-
- parseSubscripts(base, startPos, startLoc, noCalls) {
- const state = {
- optionalChainMember: false,
- maybeAsyncArrow: this.atPossibleAsync(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(_types.types.doubleColon)) {
- 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);
- }
-
- let optional = false;
-
- if (this.match(_types.types.questionDot)) {
- state.optionalChainMember = optional = true;
-
- if (noCalls && this.lookaheadCharCode() === 40) {
- state.stop = true;
- return base;
- }
-
- this.next();
- }
-
- const computed = this.eat(_types.types.bracketL);
-
- if (optional && !this.match(_types.types.parenL) && !this.match(_types.types.backQuote) || computed || this.eat(_types.types.dot)) {
- const node = this.startNodeAt(startPos, startLoc);
- node.object = base;
- node.property = computed ? this.parseExpression() : optional ? this.parseIdentifier(true) : this.parseMaybePrivateName(true);
- node.computed = computed;
-
- if (node.property.type === "PrivateName") {
- if (node.object.type === "Super") {
- this.raise(startPos, "Private fields can't be accessed on super");
- }
-
- this.classScope.usePrivateName(node.property.id.name, node.property.start);
- }
-
- if (computed) {
- this.expect(_types.types.bracketR);
- }
-
- if (state.optionalChainMember) {
- node.optional = optional;
- return this.finishNode(node, "OptionalMemberExpression");
- } else {
- return this.finishNode(node, "MemberExpression");
- }
- } else if (!noCalls && this.match(_types.types.parenL)) {
- const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
- const oldYieldPos = this.state.yieldPos;
- const oldAwaitPos = this.state.awaitPos;
- this.state.maybeInArrowParameters = true;
- this.state.yieldPos = -1;
- this.state.awaitPos = -1;
- this.next();
- let node = this.startNodeAt(startPos, startLoc);
- node.callee = base;
-
- if (optional) {
- node.optional = true;
- node.arguments = this.parseCallExpressionArguments(_types.types.parenR, false);
- } else {
- node.arguments = this.parseCallExpressionArguments(_types.types.parenR, state.maybeAsyncArrow, base.type === "Import", base.type !== "Super", node);
- }
-
- this.finishCallExpression(node, state.optionalChainMember);
-
- if (state.maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {
- state.stop = true;
- node = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startPos, startLoc), node);
- this.checkYieldAwaitInDefaultParams();
- this.state.yieldPos = oldYieldPos;
- this.state.awaitPos = oldAwaitPos;
- } else {
- this.toReferencedListDeep(node.arguments);
- if (oldYieldPos !== -1) this.state.yieldPos = oldYieldPos;
-
- if (!this.isAwaitAllowed() && !oldMaybeInArrowParameters || oldAwaitPos !== -1) {
- this.state.awaitPos = oldAwaitPos;
- }
- }
-
- this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
- return node;
- } else if (this.match(_types.types.backQuote)) {
- return this.parseTaggedTemplateExpression(startPos, startLoc, base, state);
- } else {
- state.stop = true;
- return base;
- }
- }
-
- parseTaggedTemplateExpression(startPos, startLoc, base, state, typeArguments) {
- const node = this.startNodeAt(startPos, startLoc);
- node.tag = base;
- node.quasi = this.parseTemplate(true);
- if (typeArguments) node.typeParameters = typeArguments;
-
- if (state.optionalChainMember) {
- this.raise(startPos, "Tagged Template Literals are not allowed in optionalChain");
- }
-
- return this.finishNode(node, "TaggedTemplateExpression");
- }
-
- atPossibleAsync(base) {
- return base.type === "Identifier" && base.name === "async" && this.state.lastTokEnd === base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === "async";
- }
-
- finishCallExpression(node, optional) {
- if (node.callee.type === "Import") {
- if (node.arguments.length !== 1) {
- this.raise(node.start, "import() requires exactly one argument");
- } else {
- const importArg = node.arguments[0];
-
- if (importArg && importArg.type === "SpreadElement") {
- this.raise(importArg.start, "... is not allowed in import()");
- }
- }
- }
-
- return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression");
- }
-
- parseCallExpressionArguments(close, possibleAsyncArrow, dynamicImport, allowPlaceholder, nodeForExtra) {
- const elts = [];
- let innerParenStart;
- let first = true;
- const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
- this.state.inFSharpPipelineDirectBody = false;
-
- while (!this.eat(close)) {
- if (first) {
- first = false;
- } else {
- this.expect(_types.types.comma);
-
- if (this.match(close)) {
- if (dynamicImport) {
- this.raise(this.state.lastTokStart, "Trailing comma is disallowed inside import(...) arguments");
- }
-
- if (nodeForExtra) {
- this.addExtra(nodeForExtra, "trailingComma", this.state.lastTokStart);
- }
-
- this.next();
- break;
- }
- }
-
- if (this.match(_types.types.parenL) && !innerParenStart) {
- innerParenStart = this.state.start;
- }
-
- elts.push(this.parseExprListItem(false, possibleAsyncArrow ? new _util.ExpressionErrors() : undefined, possibleAsyncArrow ? {
- start: 0
- } : undefined, allowPlaceholder));
- }
-
- if (possibleAsyncArrow && innerParenStart && this.shouldParseAsyncArrow()) {
- this.unexpected();
- }
-
- this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
- return elts;
- }
-
- shouldParseAsyncArrow() {
- return this.match(_types.types.arrow) && !this.canInsertSemicolon();
- }
-
- parseAsyncArrowFromCallExpression(node, call) {
- var _call$extra;
-
- this.expect(_types.types.arrow);
- this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingComma);
- return node;
- }
-
- parseNoCallExpr() {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
- return this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);
- }
-
- parseExprAtom(refExpressionErrors) {
- if (this.state.type === _types.types.slash) this.readRegexp();
- const canBeArrow = this.state.potentialArrowAt === this.state.start;
- let node;
-
- switch (this.state.type) {
- case _types.types._super:
- node = this.startNode();
- this.next();
-
- if (this.match(_types.types.parenL) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) {
- this.raise(node.start, "super() is only valid inside a class constructor of a subclass. " + "Maybe a typo in the method name ('constructor') or not extending another class?");
- } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) {
- this.raise(node.start, "super is only allowed in object methods and classes");
- }
-
- if (!this.match(_types.types.parenL) && !this.match(_types.types.bracketL) && !this.match(_types.types.dot)) {
- this.raise(node.start, "super can only be used with function calls (i.e. super()) or " + "in property accesses (i.e. super.prop or super[prop])");
- }
-
- return this.finishNode(node, "Super");
-
- case _types.types._import:
- node = this.startNode();
- this.next();
-
- if (this.match(_types.types.dot)) {
- return this.parseImportMetaProperty(node);
- }
-
- if (!this.match(_types.types.parenL)) {
- this.raise(this.state.lastTokStart, "import can only be used in import() or import.meta");
- }
-
- return this.finishNode(node, "Import");
-
- case _types.types._this:
- node = this.startNode();
- this.next();
- return this.finishNode(node, "ThisExpression");
-
- case _types.types.name:
- {
- node = this.startNode();
- const containsEsc = this.state.containsEsc;
- const id = this.parseIdentifier();
-
- if (!containsEsc && id.name === "async" && this.match(_types.types._function) && !this.canInsertSemicolon()) {
- const last = this.state.context.length - 1;
-
- if (this.state.context[last] !== _context.types.functionStatement) {
- throw new Error("Internal error");
- }
-
- this.state.context[last] = _context.types.functionExpression;
- this.next();
- return this.parseFunction(node, undefined, true);
- } else if (canBeArrow && !containsEsc && id.name === "async" && this.match(_types.types.name) && !this.canInsertSemicolon()) {
- const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
- const oldYieldPos = this.state.yieldPos;
- const oldAwaitPos = this.state.awaitPos;
- this.state.maybeInArrowParameters = true;
- this.state.yieldPos = -1;
- this.state.awaitPos = -1;
- const params = [this.parseIdentifier()];
- this.expect(_types.types.arrow);
- this.checkYieldAwaitInDefaultParams();
- this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
- this.state.yieldPos = oldYieldPos;
- this.state.awaitPos = oldAwaitPos;
- this.parseArrowExpression(node, params, true);
- return node;
- }
-
- if (canBeArrow && this.match(_types.types.arrow) && !this.canInsertSemicolon()) {
- this.next();
- this.parseArrowExpression(node, [id], false);
- return node;
- }
-
- return id;
- }
-
- case _types.types._do:
- {
- this.expectPlugin("doExpressions");
- const node = this.startNode();
- this.next();
- const oldLabels = this.state.labels;
- this.state.labels = [];
- node.body = this.parseBlock();
- this.state.labels = oldLabels;
- return this.finishNode(node, "DoExpression");
- }
-
- case _types.types.regexp:
- {
- const value = this.state.value;
- node = this.parseLiteral(value.value, "RegExpLiteral");
- node.pattern = value.pattern;
- node.flags = value.flags;
- return node;
- }
-
- case _types.types.num:
- return this.parseLiteral(this.state.value, "NumericLiteral");
-
- case _types.types.bigint:
- return this.parseLiteral(this.state.value, "BigIntLiteral");
-
- case _types.types.string:
- return this.parseLiteral(this.state.value, "StringLiteral");
-
- case _types.types._null:
- node = this.startNode();
- this.next();
- return this.finishNode(node, "NullLiteral");
-
- case _types.types._true:
- case _types.types._false:
- return this.parseBooleanLiteral();
-
- case _types.types.parenL:
- return this.parseParenAndDistinguishExpression(canBeArrow);
-
- case _types.types.bracketL:
- {
- const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
- this.state.inFSharpPipelineDirectBody = false;
- node = this.startNode();
- this.next();
- node.elements = this.parseExprList(_types.types.bracketR, true, refExpressionErrors, node);
-
- if (!this.state.maybeInArrowParameters) {
- this.toReferencedList(node.elements);
- }
-
- this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
- return this.finishNode(node, "ArrayExpression");
- }
-
- case _types.types.braceL:
- {
- const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
- this.state.inFSharpPipelineDirectBody = false;
- const ret = this.parseObj(false, refExpressionErrors);
- this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
- return ret;
- }
-
- case _types.types._function:
- return this.parseFunctionExpression();
-
- case _types.types.at:
- this.parseDecorators();
-
- case _types.types._class:
- node = this.startNode();
- this.takeDecorators(node);
- return this.parseClass(node, false);
-
- case _types.types._new:
- return this.parseNew();
-
- case _types.types.backQuote:
- return this.parseTemplate(false);
-
- case _types.types.doubleColon:
- {
- 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, "Binding should be performed on object property.");
- }
- }
-
- case _types.types.hash:
- {
- if (this.state.inPipeline) {
- node = this.startNode();
-
- if (this.getPluginOption("pipelineOperator", "proposal") !== "smart") {
- this.raise(node.start, "Primary Topic Reference found but pipelineOperator not passed 'smart' for 'proposal' option.");
- }
-
- this.next();
-
- if (!this.primaryTopicReferenceIsAllowedInCurrentTopicContext()) {
- this.raise(node.start, `Topic reference was used in a lexical context without topic binding`);
- }
-
- this.registerTopicReference();
- return this.finishNode(node, "PipelinePrimaryTopicReference");
- }
- }
-
- default:
- throw this.unexpected();
- }
- }
-
- parseBooleanLiteral() {
- const node = this.startNode();
- node.value = this.match(_types.types._true);
- this.next();
- return this.finishNode(node, "BooleanLiteral");
- }
-
- parseMaybePrivateName(isPrivateNameAllowed) {
- const isPrivate = this.match(_types.types.hash);
-
- if (isPrivate) {
- this.expectOnePlugin(["classPrivateProperties", "classPrivateMethods"]);
-
- if (!isPrivateNameAllowed) {
- this.raise(this.state.pos, "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).");
- }
-
- const node = this.startNode();
- this.next();
- this.assertNoSpace("Unexpected space between # and identifier");
- node.id = this.parseIdentifier(true);
- return this.finishNode(node, "PrivateName");
- } else {
- return this.parseIdentifier(true);
- }
- }
-
- parseFunctionExpression() {
- const node = this.startNode();
- let meta = this.startNode();
- this.next();
- meta = this.createIdentifier(meta, "function");
-
- if (this.scope.inGenerator && this.eat(_types.types.dot)) {
- return this.parseMetaProperty(node, meta, "sent");
- }
-
- return this.parseFunction(node);
- }
-
- parseMetaProperty(node, meta, propertyName) {
- node.meta = meta;
-
- if (meta.name === "function" && propertyName === "sent") {
- if (this.isContextual(propertyName)) {
- this.expectPlugin("functionSent");
- } else if (!this.hasPlugin("functionSent")) {
- this.unexpected();
- }
- }
-
- const containsEsc = this.state.containsEsc;
- node.property = this.parseIdentifier(true);
-
- if (node.property.name !== propertyName || containsEsc) {
- this.raise(node.property.start, `The only valid meta property for ${meta.name} is ${meta.name}.${propertyName}`);
- }
-
- return this.finishNode(node, "MetaProperty");
- }
-
- parseImportMetaProperty(node) {
- const id = this.createIdentifier(this.startNodeAtNode(node), "import");
- this.expect(_types.types.dot);
-
- if (this.isContextual("meta")) {
- this.expectPlugin("importMeta");
-
- if (!this.inModule) {
- this.raise(id.start, `import.meta may appear only with 'sourceType: "module"'`, {
- code: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"
- });
- }
-
- this.sawUnambiguousESM = true;
- } else if (!this.hasPlugin("importMeta")) {
- this.raise(id.start, `Dynamic imports require a parameter: import('a.js')`);
- }
-
- return this.parseMetaProperty(node, id, "meta");
- }
-
- parseLiteral(value, type, startPos, startLoc) {
- startPos = startPos || this.state.start;
- startLoc = startLoc || this.state.startLoc;
- const node = this.startNodeAt(startPos, startLoc);
- this.addExtra(node, "rawValue", value);
- this.addExtra(node, "raw", this.input.slice(startPos, this.state.end));
- node.value = value;
- this.next();
- return this.finishNode(node, type);
- }
-
- parseParenAndDistinguishExpression(canBeArrow) {
- const startPos = this.state.start;
- const startLoc = this.state.startLoc;
- let val;
- this.expect(_types.types.parenL);
- const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
- const oldYieldPos = this.state.yieldPos;
- const oldAwaitPos = this.state.awaitPos;
- const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
- this.state.maybeInArrowParameters = true;
- this.state.yieldPos = -1;
- this.state.awaitPos = -1;
- this.state.inFSharpPipelineDirectBody = false;
- const innerStartPos = this.state.start;
- const innerStartLoc = this.state.startLoc;
- const exprList = [];
- const refExpressionErrors = new _util.ExpressionErrors();
- const refNeedsArrowPos = {
- start: 0
- };
- let first = true;
- let spreadStart;
- let optionalCommaStart;
-
- while (!this.match(_types.types.parenR)) {
- if (first) {
- first = false;
- } else {
- this.expect(_types.types.comma, refNeedsArrowPos.start || null);
-
- if (this.match(_types.types.parenR)) {
- optionalCommaStart = this.state.start;
- break;
- }
- }
-
- if (this.match(_types.types.ellipsis)) {
- 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.parseMaybeAssign(false, refExpressionErrors, this.parseParenItem, refNeedsArrowPos));
- }
- }
-
- const innerEndPos = this.state.start;
- const innerEndLoc = this.state.startLoc;
- this.expect(_types.types.parenR);
- this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
- this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
- let arrowNode = this.startNodeAt(startPos, startLoc);
-
- if (canBeArrow && this.shouldParseArrow() && (arrowNode = this.parseArrow(arrowNode))) {
- this.checkYieldAwaitInDefaultParams();
- this.state.yieldPos = oldYieldPos;
- this.state.awaitPos = oldAwaitPos;
-
- for (let _i = 0; _i < exprList.length; _i++) {
- const param = exprList[_i];
-
- if (param.extra && param.extra.parenthesized) {
- this.unexpected(param.extra.parenStart);
- }
- }
-
- this.parseArrowExpression(arrowNode, exprList, false);
- return arrowNode;
- }
-
- if (oldYieldPos !== -1) this.state.yieldPos = oldYieldPos;
- if (oldAwaitPos !== -1) this.state.awaitPos = oldAwaitPos;
-
- if (!exprList.length) {
- this.unexpected(this.state.lastTokStart);
- }
-
- if (optionalCommaStart) this.unexpected(optionalCommaStart);
- if (spreadStart) this.unexpected(spreadStart);
- this.checkExpressionErrors(refExpressionErrors, true);
- if (refNeedsArrowPos.start) this.unexpected(refNeedsArrowPos.start);
- this.toReferencedListDeep(exprList, true);
-
- if (exprList.length > 1) {
- val = this.startNodeAt(innerStartPos, innerStartLoc);
- val.expressions = exprList;
- this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc);
- } else {
- val = exprList[0];
- }
-
- if (!this.options.createParenthesizedExpressions) {
- this.addExtra(val, "parenthesized", true);
- this.addExtra(val, "parenStart", startPos);
- return val;
- }
-
- const parenExpression = this.startNodeAt(startPos, startLoc);
- parenExpression.expression = val;
- this.finishNode(parenExpression, "ParenthesizedExpression");
- return parenExpression;
- }
-
- shouldParseArrow() {
- return !this.canInsertSemicolon();
- }
-
- parseArrow(node) {
- if (this.eat(_types.types.arrow)) {
- return node;
- }
- }
-
- parseParenItem(node, startPos, startLoc) {
- return node;
- }
-
- parseNew() {
- const node = this.startNode();
- let meta = this.startNode();
- this.next();
- meta = this.createIdentifier(meta, "new");
-
- if (this.eat(_types.types.dot)) {
- const metaProp = this.parseMetaProperty(node, meta, "target");
-
- if (!this.scope.inNonArrowFunction && !this.scope.inClass) {
- let error = "new.target can only be used in functions";
-
- if (this.hasPlugin("classProperties")) {
- error += " or class properties";
- }
-
- this.raise(metaProp.start, error);
- }
-
- return metaProp;
- }
-
- node.callee = this.parseNoCallExpr();
-
- if (node.callee.type === "Import") {
- this.raise(node.callee.start, "Cannot use new with import(...)");
- } else if (node.callee.type === "OptionalMemberExpression" || node.callee.type === "OptionalCallExpression") {
- this.raise(this.state.lastTokEnd, "constructors in/after an Optional Chain are not allowed");
- } else if (this.eat(_types.types.questionDot)) {
- this.raise(this.state.start, "constructors in/after an Optional Chain are not allowed");
- }
-
- this.parseNewArguments(node);
- return this.finishNode(node, "NewExpression");
- }
-
- parseNewArguments(node) {
- if (this.eat(_types.types.parenL)) {
- const args = this.parseExprList(_types.types.parenR);
- 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, "Invalid escape sequence in template");
- }
- }
-
- 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(_types.types.backQuote);
- 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(_types.types.dollarBraceL);
- node.expressions.push(this.parseExpression());
- this.expect(_types.types.braceR);
- node.quasis.push(curElt = this.parseTemplateElement(isTagged));
- }
-
- this.next();
- return this.finishNode(node, "TemplateLiteral");
- }
-
- parseObj(isPattern, refExpressionErrors) {
- const propHash = Object.create(null);
- let first = true;
- const node = this.startNode();
- node.properties = [];
- this.next();
-
- while (!this.eat(_types.types.braceR)) {
- if (first) {
- first = false;
- } else {
- this.expect(_types.types.comma);
-
- if (this.match(_types.types.braceR)) {
- this.addExtra(node, "trailingComma", this.state.lastTokStart);
- this.next();
- break;
- }
- }
-
- const prop = this.parseObjectMember(isPattern, refExpressionErrors);
-
- if (!isPattern) {
- this.checkDuplicatedProto(prop, propHash, refExpressionErrors);
- }
-
- if (prop.shorthand) {
- this.addExtra(prop, "shorthand", true);
- }
-
- node.properties.push(prop);
- }
-
- return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression");
- }
-
- isAsyncProp(prop) {
- return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && (this.match(_types.types.name) || this.match(_types.types.num) || this.match(_types.types.string) || this.match(_types.types.bracketL) || this.state.type.keyword || this.match(_types.types.star)) && !this.hasPrecedingLineBreak();
- }
-
- parseObjectMember(isPattern, refExpressionErrors) {
- let decorators = [];
-
- if (this.match(_types.types.at)) {
- if (this.hasPlugin("decorators")) {
- this.raise(this.state.start, "Stage 2 decorators disallow object literal property decorators");
- }
-
- while (this.match(_types.types.at)) {
- decorators.push(this.parseDecorator());
- }
- }
-
- const prop = this.startNode();
- let isGenerator = false;
- let isAsync = false;
- let startPos;
- let startLoc;
-
- if (this.match(_types.types.ellipsis)) {
- if (decorators.length) this.unexpected();
-
- if (isPattern) {
- this.next();
- prop.argument = this.parseIdentifier();
- this.checkCommaAfterRest(125);
- return this.finishNode(prop, "RestElement");
- }
-
- return this.parseSpread();
- }
-
- if (decorators.length) {
- prop.decorators = decorators;
- decorators = [];
- }
-
- prop.method = false;
-
- if (isPattern || refExpressionErrors) {
- startPos = this.state.start;
- startLoc = this.state.startLoc;
- }
-
- if (!isPattern) {
- isGenerator = this.eat(_types.types.star);
- }
-
- const containsEsc = this.state.containsEsc;
- this.parsePropertyName(prop, false);
-
- if (!isPattern && !containsEsc && !isGenerator && this.isAsyncProp(prop)) {
- isAsync = true;
- isGenerator = this.eat(_types.types.star);
- this.parsePropertyName(prop, false);
- } else {
- isAsync = false;
- }
-
- this.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refExpressionErrors, containsEsc);
- return prop;
- }
-
- isGetterOrSetterMethod(prop, isPattern) {
- return !isPattern && !prop.computed && prop.key.type === "Identifier" && (prop.key.name === "get" || prop.key.name === "set") && (this.match(_types.types.string) || this.match(_types.types.num) || this.match(_types.types.bracketL) || this.match(_types.types.name) || !!this.state.type.keyword);
- }
-
- getGetterSetterExpectedParamCount(method) {
- return method.kind === "get" ? 0 : 1;
- }
-
- checkGetterSetterParams(method) {
- const paramCount = this.getGetterSetterExpectedParamCount(method);
- const start = method.start;
-
- if (method.params.length !== paramCount) {
- if (method.kind === "get") {
- this.raise(start, "getter must not have any formal parameters");
- } else {
- this.raise(start, "setter must have exactly one formal parameter");
- }
- }
-
- if (method.kind === "set" && method.params[method.params.length - 1].type === "RestElement") {
- this.raise(start, "setter function argument must not be a rest parameter");
- }
- }
-
- parseObjectMethod(prop, isGenerator, isAsync, isPattern, containsEsc) {
- if (isAsync || isGenerator || this.match(_types.types.parenL)) {
- if (isPattern) this.unexpected();
- prop.kind = "method";
- prop.method = true;
- return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod");
- }
-
- if (!containsEsc && this.isGetterOrSetterMethod(prop, isPattern)) {
- if (isGenerator || isAsync) this.unexpected();
- prop.kind = prop.key.name;
- this.parsePropertyName(prop, false);
- this.parseMethod(prop, false, false, false, false, "ObjectMethod");
- this.checkGetterSetterParams(prop);
- return prop;
- }
- }
-
- parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) {
- prop.shorthand = false;
-
- if (this.eat(_types.types.colon)) {
- prop.value = isPattern ? this.parseMaybeDefault(this.state.start, this.state.startLoc) : this.parseMaybeAssign(false, refExpressionErrors);
- return this.finishNode(prop, "ObjectProperty");
- }
-
- if (!prop.computed && prop.key.type === "Identifier") {
- this.checkReservedWord(prop.key.name, prop.key.start, true, true);
-
- if (isPattern) {
- prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key.__clone());
- } else if (this.match(_types.types.eq) && refExpressionErrors) {
- if (refExpressionErrors.shorthandAssign === -1) {
- refExpressionErrors.shorthandAssign = this.state.start;
- }
-
- prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key.__clone());
- } else {
- prop.value = prop.key.__clone();
- }
-
- prop.shorthand = true;
- return this.finishNode(prop, "ObjectProperty");
- }
- }
-
- parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refExpressionErrors, containsEsc) {
- const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, containsEsc) || this.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors);
- if (!node) this.unexpected();
- return node;
- }
-
- parsePropertyName(prop, isPrivateNameAllowed) {
- if (this.eat(_types.types.bracketL)) {
- prop.computed = true;
- prop.key = this.parseMaybeAssign();
- this.expect(_types.types.bracketR);
- } else {
- const oldInPropertyName = this.state.inPropertyName;
- this.state.inPropertyName = true;
- prop.key = this.match(_types.types.num) || this.match(_types.types.string) || this.match(_types.types.bigint) ? this.parseExprAtom() : this.parseMaybePrivateName(isPrivateNameAllowed);
-
- if (prop.key.type !== "PrivateName") {
- prop.computed = false;
- }
-
- this.state.inPropertyName = oldInPropertyName;
- }
-
- return prop.key;
- }
-
- initFunction(node, isAsync) {
- node.id = null;
- node.generator = false;
- node.async = !!isAsync;
- }
-
- parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {
- const oldYieldPos = this.state.yieldPos;
- const oldAwaitPos = this.state.awaitPos;
- this.state.yieldPos = -1;
- this.state.awaitPos = -1;
- this.initFunction(node, isAsync);
- node.generator = !!isGenerator;
- const allowModifiers = isConstructor;
- this.scope.enter((0, _scopeflags.functionFlags)(isAsync, node.generator) | _scopeflags.SCOPE_SUPER | (inClassScope ? _scopeflags.SCOPE_CLASS : 0) | (allowDirectSuper ? _scopeflags.SCOPE_DIRECT_SUPER : 0));
- this.parseFunctionParams(node, allowModifiers);
- this.parseFunctionBodyAndFinish(node, type, true);
- this.scope.exit();
- this.state.yieldPos = oldYieldPos;
- this.state.awaitPos = oldAwaitPos;
- return node;
- }
-
- parseArrowExpression(node, params, isAsync, trailingCommaPos) {
- this.scope.enter((0, _scopeflags.functionFlags)(isAsync, false) | _scopeflags.SCOPE_ARROW);
- this.initFunction(node, isAsync);
- const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
- const oldYieldPos = this.state.yieldPos;
- const oldAwaitPos = this.state.awaitPos;
-
- if (params) {
- this.state.maybeInArrowParameters = true;
- this.setArrowFunctionParameters(node, params, trailingCommaPos);
- }
-
- this.state.maybeInArrowParameters = false;
- this.state.yieldPos = -1;
- this.state.awaitPos = -1;
- this.parseFunctionBody(node, true);
- this.scope.exit();
- this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
- this.state.yieldPos = oldYieldPos;
- this.state.awaitPos = oldAwaitPos;
- return this.finishNode(node, "ArrowFunctionExpression");
- }
-
- setArrowFunctionParameters(node, params, trailingCommaPos) {
- node.params = this.toAssignableList(params, trailingCommaPos);
- }
-
- parseFunctionBodyAndFinish(node, type, isMethod = false) {
- this.parseFunctionBody(node, false, isMethod);
- this.finishNode(node, type);
- }
-
- parseFunctionBody(node, allowExpression, isMethod = false) {
- const isExpression = allowExpression && !this.match(_types.types.braceL);
- const oldStrict = this.state.strict;
- let useStrict = false;
- const oldInParameters = this.state.inParameters;
- this.state.inParameters = false;
-
- if (isExpression) {
- node.body = this.parseMaybeAssign();
- this.checkParams(node, false, allowExpression, false);
- } else {
- const nonSimple = !this.isSimpleParamList(node.params);
-
- if (!oldStrict || nonSimple) {
- useStrict = this.strictDirective(this.state.end);
-
- if (useStrict && nonSimple) {
- const errorPos = (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.end : node.start;
- this.raise(errorPos, "Illegal 'use strict' directive in function with non-simple parameter list");
- }
- }
-
- const oldLabels = this.state.labels;
- this.state.labels = [];
- if (useStrict) this.state.strict = true;
- this.checkParams(node, !oldStrict && !useStrict && !allowExpression && !isMethod && !nonSimple, allowExpression, !oldStrict && useStrict);
- node.body = this.parseBlock(true, false);
- this.state.labels = oldLabels;
- }
-
- this.state.inParameters = oldInParameters;
-
- if (this.state.strict && node.id) {
- this.checkLVal(node.id, _scopeflags.BIND_OUTSIDE, undefined, "function name", undefined, !oldStrict && useStrict);
- }
-
- this.state.strict = oldStrict;
- }
-
- 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 nameHash = Object.create(null);
-
- for (let i = 0; i < node.params.length; i++) {
- this.checkLVal(node.params[i], _scopeflags.BIND_VAR, allowDuplicates ? null : nameHash, "function parameter list", undefined, strictModeChanged);
- }
- }
-
- parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) {
- const elts = [];
- let first = true;
-
- while (!this.eat(close)) {
- if (first) {
- first = false;
- } else {
- this.expect(_types.types.comma);
-
- 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, refNeedsArrowPos, allowPlaceholder) {
- let elt;
-
- if (allowEmpty && this.match(_types.types.comma)) {
- elt = null;
- } else if (this.match(_types.types.ellipsis)) {
- const spreadNodeStartPos = this.state.start;
- const spreadNodeStartLoc = this.state.startLoc;
- elt = this.parseParenItem(this.parseSpread(refExpressionErrors, refNeedsArrowPos), spreadNodeStartPos, spreadNodeStartLoc);
- } else if (this.match(_types.types.question)) {
- this.expectPlugin("partialApplication");
-
- if (!allowPlaceholder) {
- this.raise(this.state.start, "Unexpected argument placeholder");
- }
-
- const node = this.startNode();
- this.next();
- elt = this.finishNode(node, "ArgumentPlaceholder");
- } else {
- elt = this.parseMaybeAssign(false, refExpressionErrors, this.parseParenItem, refNeedsArrowPos);
- }
-
- 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;
-
- if (this.match(_types.types.name)) {
- name = this.state.value;
- } else if (this.state.type.keyword) {
- name = this.state.type.keyword;
-
- if ((name === "class" || name === "function") && (this.state.lastTokEnd !== this.state.lastTokStart + 1 || this.input.charCodeAt(this.state.lastTokStart) !== 46)) {
- this.state.context.pop();
- }
- } else {
- throw this.unexpected();
- }
-
- if (liberal) {
- this.state.type = _types.types.name;
- } else {
- this.checkReservedWord(name, this.state.start, !!this.state.type.keyword, false);
- }
-
- this.next();
- return name;
- }
-
- checkReservedWord(word, startLoc, checkKeywords, isBinding) {
- if (this.scope.inGenerator && word === "yield") {
- this.raise(startLoc, "Can not use 'yield' as identifier inside a generator");
- return;
- }
-
- if (word === "await") {
- if (this.scope.inAsync) {
- this.raise(startLoc, "Can not use 'await' as identifier inside an async function");
- return;
- }
-
- if (this.state.awaitPos === -1 && (this.state.maybeInArrowParameters || this.isAwaitAllowed())) {
- this.state.awaitPos = this.state.start;
- }
- }
-
- if (this.scope.inClass && !this.scope.inNonArrowFunction && word === "arguments") {
- this.raise(startLoc, "'arguments' is not allowed in class field initializer");
- return;
- }
-
- if (checkKeywords && (0, _identifier.isKeyword)(word)) {
- this.raise(startLoc, `Unexpected keyword '${word}'`);
- return;
- }
-
- const reservedTest = !this.state.strict ? _identifier.isReservedWord : isBinding ? _identifier.isStrictBindReservedWord : _identifier.isStrictReservedWord;
-
- if (reservedTest(word, this.inModule)) {
- if (!this.scope.inAsync && word === "await") {
- this.raise(startLoc, "Can not use keyword 'await' outside an async function");
- } else {
- this.raise(startLoc, `Unexpected reserved word '${word}'`);
- }
- }
- }
-
- isAwaitAllowed() {
- if (this.scope.inFunction) return this.scope.inAsync;
- if (this.options.allowAwaitOutsideFunction) return true;
-
- if (this.hasPlugin("topLevelAwait")) {
- return this.inModule && this.scope.inAsync;
- }
-
- return false;
- }
-
- parseAwait() {
- const node = this.startNode();
- this.next();
-
- if (this.state.inParameters) {
- this.raise(node.start, "await is not allowed in async function parameters");
- } else if (this.state.awaitPos === -1) {
- this.state.awaitPos = node.start;
- }
-
- if (this.eat(_types.types.star)) {
- this.raise(node.start, "await* has been removed from the async functions proposal. Use Promise.all() instead.");
- }
-
- if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) {
- if (this.hasPrecedingLineBreak() || this.match(_types.types.plusMin) || this.match(_types.types.parenL) || this.match(_types.types.bracketL) || this.match(_types.types.backQuote) || this.match(_types.types.regexp) || this.match(_types.types.slash) || this.hasPlugin("v8intrinsic") && this.match(_types.types.modulo)) {
- this.ambiguousScriptDifferentAst = true;
- } else {
- this.sawUnambiguousESM = true;
- }
- }
-
- if (!this.state.soloAwait) {
- node.argument = this.parseMaybeUnary();
- }
-
- return this.finishNode(node, "AwaitExpression");
- }
-
- parseYield(noIn) {
- const node = this.startNode();
-
- if (this.state.inParameters) {
- this.raise(node.start, "yield is not allowed in generator parameters");
- } else if (this.state.yieldPos === -1) {
- this.state.yieldPos = node.start;
- }
-
- this.next();
-
- if (this.match(_types.types.semi) || !this.match(_types.types.star) && !this.state.type.startsExpr || this.hasPrecedingLineBreak()) {
- node.delegate = false;
- node.argument = null;
- } else {
- node.delegate = this.eat(_types.types.star);
- node.argument = this.parseMaybeAssign(noIn);
- }
-
- return this.finishNode(node, "YieldExpression");
- }
-
- checkPipelineAtInfixOperator(left, leftStartPos) {
- if (this.getPluginOption("pipelineOperator", "proposal") === "smart") {
- if (left.type === "SequenceExpression") {
- this.raise(leftStartPos, `Pipeline head should not be a comma-separated sequence expression`);
- }
- }
- }
-
- parseSmartPipelineBody(childExpression, startPos, startLoc) {
- const pipelineStyle = this.checkSmartPipelineBodyStyle(childExpression);
- this.checkSmartPipelineBodyEarlyErrors(childExpression, pipelineStyle, startPos);
- return this.parseSmartPipelineBodyInStyle(childExpression, pipelineStyle, startPos, startLoc);
- }
-
- checkSmartPipelineBodyEarlyErrors(childExpression, pipelineStyle, startPos) {
- if (this.match(_types.types.arrow)) {
- throw this.raise(this.state.start, `Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized`);
- } else if (pipelineStyle === "PipelineTopicExpression" && childExpression.type === "SequenceExpression") {
- this.raise(startPos, `Pipeline body may not be a comma-separated sequence expression`);
- }
- }
-
- parseSmartPipelineBodyInStyle(childExpression, pipelineStyle, startPos, startLoc) {
- const bodyNode = this.startNodeAt(startPos, startLoc);
-
- switch (pipelineStyle) {
- case "PipelineBareFunction":
- bodyNode.callee = childExpression;
- break;
-
- case "PipelineBareConstructor":
- bodyNode.callee = childExpression.callee;
- break;
-
- case "PipelineBareAwaitedFunction":
- bodyNode.callee = childExpression.argument;
- break;
-
- case "PipelineTopicExpression":
- if (!this.topicReferenceWasUsedInCurrentTopicContext()) {
- this.raise(startPos, `Pipeline is in topic style but does not use topic reference`);
- }
-
- bodyNode.expression = childExpression;
- break;
-
- default:
- throw new Error(`Internal @babel/parser error: Unknown pipeline style (${pipelineStyle})`);
- }
-
- return this.finishNode(bodyNode, pipelineStyle);
- }
-
- checkSmartPipelineBodyStyle(expression) {
- switch (expression.type) {
- default:
- return this.isSimpleReference(expression) ? "PipelineBareFunction" : "PipelineTopicExpression";
- }
- }
-
- isSimpleReference(expression) {
- switch (expression.type) {
- case "MemberExpression":
- return !expression.computed && this.isSimpleReference(expression.object);
-
- case "Identifier":
- return true;
-
- default:
- return false;
- }
- }
-
- withTopicPermittingContext(callback) {
- const outerContextTopicState = this.state.topicContext;
- this.state.topicContext = {
- maxNumOfResolvableTopics: 1,
- maxTopicIndex: null
- };
-
- try {
- return callback();
- } finally {
- this.state.topicContext = outerContextTopicState;
- }
- }
-
- withTopicForbiddingContext(callback) {
- const outerContextTopicState = this.state.topicContext;
- this.state.topicContext = {
- maxNumOfResolvableTopics: 0,
- maxTopicIndex: null
- };
-
- try {
- return callback();
- } finally {
- this.state.topicContext = outerContextTopicState;
- }
- }
-
- withSoloAwaitPermittingContext(callback) {
- const outerContextSoloAwaitState = this.state.soloAwait;
- this.state.soloAwait = true;
-
- try {
- return callback();
- } finally {
- this.state.soloAwait = outerContextSoloAwaitState;
- }
- }
-
- registerTopicReference() {
- this.state.topicContext.maxTopicIndex = 0;
- }
-
- primaryTopicReferenceIsAllowedInCurrentTopicContext() {
- return this.state.topicContext.maxNumOfResolvableTopics >= 1;
- }
-
- topicReferenceWasUsedInCurrentTopicContext() {
- return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0;
- }
-
- parseFSharpPipelineBody(prec, noIn) {
- 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.parseMaybeUnary(), startPos, startLoc, prec, noIn);
- this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
- return ret;
- }
-
-}
-
-exports.default = ExpressionParser; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/parser/index.js b/assets/node_modules/@babel/parser/lib/parser/index.js
deleted file mode 100644
index e79c0bf..0000000
--- a/assets/node_modules/@babel/parser/lib/parser/index.js
+++ /dev/null
@@ -1,68 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _options = require("../options");
-
-var _statement = _interopRequireDefault(require("./statement"));
-
-var _scopeflags = require("../util/scopeflags");
-
-var _scope = _interopRequireDefault(require("../util/scope"));
-
-var _classScope = _interopRequireDefault(require("../util/class-scope"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class Parser extends _statement.default {
- constructor(options, input) {
- options = (0, _options.getOptions)(options);
- super(options, input);
- const ScopeHandler = this.getScopeHandler();
- this.options = options;
- this.inModule = this.options.sourceType === "module";
- this.scope = new ScopeHandler(this.raise.bind(this), this.inModule);
- this.classScope = new _classScope.default(this.raise.bind(this));
- this.plugins = pluginsMap(this.options.plugins);
- this.filename = options.sourceFilename;
- }
-
- getScopeHandler() {
- return _scope.default;
- }
-
- parse() {
- let scopeFlags = _scopeflags.SCOPE_PROGRAM;
-
- if (this.hasPlugin("topLevelAwait") && this.inModule) {
- scopeFlags |= _scopeflags.SCOPE_ASYNC;
- }
-
- this.scope.enter(scopeFlags);
- const file = this.startNode();
- const program = this.startNode();
- this.nextToken();
- file.errors = null;
- this.parseTopLevel(file, program);
- file.errors = this.state.errors;
- return file;
- }
-
-}
-
-exports.default = Parser;
-
-function pluginsMap(plugins) {
- const pluginMap = new Map();
-
- for (let _i = 0; _i < plugins.length; _i++) {
- const plugin = plugins[_i];
- const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}];
- if (!pluginMap.has(name)) pluginMap.set(name, options || {});
- }
-
- return pluginMap;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/parser/location.js b/assets/node_modules/@babel/parser/lib/parser/location.js
deleted file mode 100644
index c835859..0000000
--- a/assets/node_modules/@babel/parser/lib/parser/location.js
+++ /dev/null
@@ -1,49 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _location = require("../util/location");
-
-var _comments = _interopRequireDefault(require("./comments"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class LocationParser extends _comments.default {
- 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 = (0, _location.getLineInfo)(this.input, pos);
- return loc;
- }
-
- raise(pos, message, {
- missingPluginNames,
- code
- } = {}) {
- const loc = this.getLocationForPosition(pos);
- message += ` (${loc.line}:${loc.column})`;
- const err = new SyntaxError(message);
- err.pos = pos;
- err.loc = loc;
-
- if (missingPluginNames) {
- err.missingPlugin = missingPluginNames;
- }
-
- if (code !== undefined) {
- err.code = code;
- }
-
- if (this.options.errorRecovery) {
- if (!this.isLookahead) this.state.errors.push(err);
- return err;
- } else {
- throw err;
- }
- }
-
-}
-
-exports.default = LocationParser; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/parser/lval.js b/assets/node_modules/@babel/parser/lib/parser/lval.js
deleted file mode 100644
index 238ea83..0000000
--- a/assets/node_modules/@babel/parser/lib/parser/lval.js
+++ /dev/null
@@ -1,361 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _types = require("../tokenizer/types");
-
-var _identifier = require("../util/identifier");
-
-var _node = require("./node");
-
-var _scopeflags = require("../util/scopeflags");
-
-var _util = require("./util");
-
-const unwrapParenthesizedExpression = node => {
- return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node;
-};
-
-class LValParser extends _node.NodeUtils {
- toAssignable(node) {
- var _node$extra, _node$extra3;
-
- let parenthesized = undefined;
-
- if (node.type === "ParenthesizedExpression" || ((_node$extra = node.extra) == null ? void 0 : _node$extra.parenthesized)) {
- parenthesized = unwrapParenthesizedExpression(node);
-
- if (parenthesized.type !== "Identifier" && parenthesized.type !== "MemberExpression") {
- this.raise(node.start, "Invalid parenthesized assignment pattern");
- }
- }
-
- switch (node.type) {
- case "Identifier":
- case "ObjectPattern":
- case "ArrayPattern":
- case "AssignmentPattern":
- 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);
-
- if (isLast && prop.type === "RestElement" && ((_node$extra2 = node.extra) == null ? void 0 : _node$extra2.trailingComma)) {
- this.raiseRestNotLast(node.extra.trailingComma);
- }
- }
-
- break;
-
- case "ObjectProperty":
- this.toAssignable(node.value);
- break;
-
- case "SpreadElement":
- {
- this.checkToRestConversion(node);
- node.type = "RestElement";
- const arg = node.argument;
- this.toAssignable(arg);
- break;
- }
-
- case "ArrayExpression":
- node.type = "ArrayPattern";
- this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingComma);
- break;
-
- case "AssignmentExpression":
- if (node.operator !== "=") {
- this.raise(node.left.end, "Only '=' operator can be used for specifying default value.");
- }
-
- node.type = "AssignmentPattern";
- delete node.operator;
- this.toAssignable(node.left);
- break;
-
- case "ParenthesizedExpression":
- this.toAssignable(parenthesized);
- break;
-
- default:
- }
-
- return node;
- }
-
- toAssignableObjectExpressionProp(prop, isLast) {
- if (prop.type === "ObjectMethod") {
- const error = prop.kind === "get" || prop.kind === "set" ? "Object pattern can't contain getter or setter" : "Object pattern can't contain methods";
- this.raise(prop.key.start, error);
- } else if (prop.type === "SpreadElement" && !isLast) {
- this.raiseRestNotLast(prop.start);
- } else {
- this.toAssignable(prop);
- }
- }
-
- toAssignableList(exprList, trailingCommaPos) {
- let end = exprList.length;
-
- if (end) {
- const last = exprList[end - 1];
-
- if (last && last.type === "RestElement") {
- --end;
- } else if (last && last.type === "SpreadElement") {
- last.type = "RestElement";
- const arg = last.argument;
- this.toAssignable(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);
-
- if (elt.type === "RestElement") {
- this.raiseRestNotLast(elt.start);
- }
- }
- }
-
- return exprList;
- }
-
- toReferencedList(exprList, isParenthesizedExpr) {
- return exprList;
- }
-
- toReferencedListDeep(exprList, isParenthesizedExpr) {
- this.toReferencedList(exprList, isParenthesizedExpr);
-
- for (let _i = 0; _i < exprList.length; _i++) {
- const expr = exprList[_i];
-
- if (expr && expr.type === "ArrayExpression") {
- this.toReferencedListDeep(expr.elements);
- }
- }
- }
-
- parseSpread(refExpressionErrors, refNeedsArrowPos) {
- const node = this.startNode();
- this.next();
- node.argument = this.parseMaybeAssign(false, 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 _types.types.bracketL:
- {
- const node = this.startNode();
- this.next();
- node.elements = this.parseBindingList(_types.types.bracketR, 93, true);
- return this.finishNode(node, "ArrayPattern");
- }
-
- case _types.types.braceL:
- return this.parseObj(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(_types.types.comma);
- }
-
- if (allowEmpty && this.match(_types.types.comma)) {
- elts.push(null);
- } else if (this.eat(close)) {
- break;
- } else if (this.match(_types.types.ellipsis)) {
- elts.push(this.parseAssignableListItemTypes(this.parseRestBinding()));
- this.checkCommaAfterRest(closeCharCode);
- this.expect(close);
- break;
- } else {
- const decorators = [];
-
- if (this.match(_types.types.at) && this.hasPlugin("decorators")) {
- this.raise(this.state.start, "Stage 2 decorators cannot be used to decorate parameters");
- }
-
- while (this.match(_types.types.at)) {
- decorators.push(this.parseDecorator());
- }
-
- elts.push(this.parseAssignableListItem(allowModifiers, decorators));
- }
- }
-
- return elts;
- }
-
- 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) {
- startLoc = startLoc || this.state.startLoc;
- startPos = startPos || this.state.start;
- left = left || this.parseBindingAtom();
- if (!this.eat(_types.types.eq)) return left;
- const node = this.startNodeAt(startPos, startLoc);
- node.left = left;
- node.right = this.parseMaybeAssign();
- return this.finishNode(node, "AssignmentPattern");
- }
-
- checkLVal(expr, bindingType = _scopeflags.BIND_NONE, checkClashes, contextDescription, disallowLetBinding, strictModeChanged = false) {
- switch (expr.type) {
- case "Identifier":
- if (this.state.strict && (strictModeChanged ? (0, _identifier.isStrictBindReservedWord)(expr.name, this.inModule) : (0, _identifier.isStrictBindOnlyReservedWord)(expr.name))) {
- this.raise(expr.start, `${bindingType === _scopeflags.BIND_NONE ? "Assigning to" : "Binding"} '${expr.name}' in strict mode`);
- }
-
- if (checkClashes) {
- const key = `_${expr.name}`;
-
- if (checkClashes[key]) {
- this.raise(expr.start, "Argument name clash");
- } else {
- checkClashes[key] = true;
- }
- }
-
- if (disallowLetBinding && expr.name === "let") {
- this.raise(expr.start, "'let' is not allowed to be used as a name in 'let' or 'const' declarations.");
- }
-
- if (!(bindingType & _scopeflags.BIND_NONE)) {
- this.scope.declareName(expr.name, bindingType, expr.start);
- }
-
- break;
-
- case "MemberExpression":
- if (bindingType !== _scopeflags.BIND_NONE) {
- this.raise(expr.start, "Binding member expression");
- }
-
- break;
-
- case "ObjectPattern":
- for (let _i2 = 0, _expr$properties = expr.properties; _i2 < _expr$properties.length; _i2++) {
- let prop = _expr$properties[_i2];
- if (prop.type === "ObjectProperty") prop = prop.value;else if (prop.type === "ObjectMethod") continue;
- this.checkLVal(prop, bindingType, checkClashes, "object destructuring pattern", disallowLetBinding);
- }
-
- break;
-
- case "ArrayPattern":
- for (let _i3 = 0, _expr$elements = expr.elements; _i3 < _expr$elements.length; _i3++) {
- const elem = _expr$elements[_i3];
-
- if (elem) {
- this.checkLVal(elem, bindingType, checkClashes, "array destructuring pattern", disallowLetBinding);
- }
- }
-
- break;
-
- case "AssignmentPattern":
- this.checkLVal(expr.left, bindingType, checkClashes, "assignment pattern");
- break;
-
- case "RestElement":
- this.checkLVal(expr.argument, bindingType, checkClashes, "rest element");
- break;
-
- case "ParenthesizedExpression":
- this.checkLVal(expr.expression, bindingType, checkClashes, "parenthesized expression");
- break;
-
- default:
- {
- const message = (bindingType === _scopeflags.BIND_NONE ? "Invalid" : "Binding invalid") + " left-hand side" + (contextDescription ? " in " + contextDescription : "expression");
- this.raise(expr.start, message);
- }
- }
- }
-
- checkToRestConversion(node) {
- if (node.argument.type !== "Identifier" && node.argument.type !== "MemberExpression") {
- this.raise(node.argument.start, "Invalid rest operator's argument");
- }
- }
-
- checkCommaAfterRest(close) {
- if (this.match(_types.types.comma)) {
- if (this.lookaheadCharCode() === close) {
- this.raiseTrailingCommaAfterRest(this.state.start);
- } else {
- this.raiseRestNotLast(this.state.start);
- }
- }
- }
-
- raiseRestNotLast(pos) {
- throw this.raise(pos, `Rest element must be last element`);
- }
-
- raiseTrailingCommaAfterRest(pos) {
- this.raise(pos, `Unexpected trailing comma after rest element`);
- }
-
-}
-
-exports.default = LValParser; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/parser/node.js b/assets/node_modules/@babel/parser/lib/parser/node.js
deleted file mode 100644
index bd7b1da..0000000
--- a/assets/node_modules/@babel/parser/lib/parser/node.js
+++ /dev/null
@@ -1,89 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.NodeUtils = void 0;
-
-var _util = _interopRequireDefault(require("./util"));
-
-var _location = require("../util/location");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class Node {
- constructor(parser, pos, loc) {
- this.type = "";
- this.start = pos;
- this.end = 0;
- this.loc = new _location.SourceLocation(loc);
- if (parser && parser.options.ranges) this.range = [pos, 0];
- if (parser && parser.filename) this.loc.filename = parser.filename;
- }
-
- __clone() {
- 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;
- }
-
-}
-
-class NodeUtils extends _util.default {
- 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) {
- if (process.env.NODE_ENV !== "production" && node.end > 0) {
- throw new Error("Do not call finishNode*() twice on the same node." + " Instead use resetEndLocation() or change type directly.");
- }
-
- node.type = type;
- node.end = pos;
- node.loc.end = loc;
- if (this.options.ranges) node.range[1] = pos;
- 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);
- }
-
-}
-
-exports.NodeUtils = NodeUtils; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/parser/statement.js b/assets/node_modules/@babel/parser/lib/parser/statement.js
deleted file mode 100644
index 5949fd3..0000000
--- a/assets/node_modules/@babel/parser/lib/parser/statement.js
+++ /dev/null
@@ -1,1527 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var N = _interopRequireWildcard(require("../types"));
-
-var _types2 = require("../tokenizer/types");
-
-var _expression = _interopRequireDefault(require("./expression"));
-
-var _identifier = require("../util/identifier");
-
-var _whitespace = require("../util/whitespace");
-
-var _scopeflags = require("../util/scopeflags");
-
-var _util = require("./util");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-const loopLabel = {
- kind: "loop"
-},
- switchLabel = {
- kind: "switch"
-};
-const FUNC_NO_FLAGS = 0b000,
- FUNC_STATEMENT = 0b001,
- FUNC_HANGING_STATEMENT = 0b010,
- FUNC_NULLABLE_ID = 0b100;
-
-class StatementParser extends _expression.default {
- parseTopLevel(file, program) {
- program.sourceType = this.options.sourceType;
- program.interpreter = this.parseInterpreterDirective();
- this.parseBlockBody(program, true, true, _types2.types.eof);
-
- if (this.inModule && !this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) {
- for (let _i = 0, _Array$from = Array.from(this.scope.undefinedExports); _i < _Array$from.length; _i++) {
- const [name] = _Array$from[_i];
- const pos = this.scope.undefinedExports.get(name);
- this.raise(pos, `Export '${name}' is not defined`);
- }
- }
-
- file.program = this.finishNode(program, "Program");
- file.comments = this.state.comments;
- if (this.options.tokens) file.tokens = this.tokens;
- return this.finishNode(file, "File");
- }
-
- stmtToDirective(stmt) {
- const expr = stmt.expression;
- const directiveLiteral = this.startNodeAt(expr.start, expr.loc.start);
- const directive = this.startNodeAt(stmt.start, stmt.loc.start);
- const raw = this.input.slice(expr.start, expr.end);
- const val = directiveLiteral.value = raw.slice(1, -1);
- this.addExtra(directiveLiteral, "raw", raw);
- this.addExtra(directiveLiteral, "rawValue", val);
- directive.value = this.finishNodeAt(directiveLiteral, "DirectiveLiteral", expr.end, expr.loc.end);
- return this.finishNodeAt(directive, "Directive", stmt.end, stmt.loc.end);
- }
-
- parseInterpreterDirective() {
- if (!this.match(_types2.types.interpreterDirective)) {
- return null;
- }
-
- const node = this.startNode();
- node.value = this.state.value;
- this.next();
- return this.finishNode(node, "InterpreterDirective");
- }
-
- isLet(context) {
- if (!this.isContextual("let")) {
- return false;
- }
-
- const next = this.nextTokenStart();
- const nextCh = this.input.charCodeAt(next);
- if (nextCh === 91) return true;
- if (context) return false;
- if (nextCh === 123) return true;
-
- if ((0, _identifier.isIdentifierStart)(nextCh)) {
- let pos = next + 1;
-
- while ((0, _identifier.isIdentifierChar)(this.input.charCodeAt(pos))) {
- ++pos;
- }
-
- const ident = this.input.slice(next, pos);
- if (!_identifier.keywordRelationalOperator.test(ident)) return true;
- }
-
- return false;
- }
-
- parseStatement(context, topLevel) {
- if (this.match(_types2.types.at)) {
- 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 = _types2.types._var;
- kind = "let";
- }
-
- switch (starttype) {
- case _types2.types._break:
- case _types2.types._continue:
- return this.parseBreakContinueStatement(node, starttype.keyword);
-
- case _types2.types._debugger:
- return this.parseDebuggerStatement(node);
-
- case _types2.types._do:
- return this.parseDoStatement(node);
-
- case _types2.types._for:
- return this.parseForStatement(node);
-
- case _types2.types._function:
- if (this.lookaheadCharCode() === 46) break;
-
- if (context) {
- if (this.state.strict) {
- this.raise(this.state.start, "In strict mode code, functions can only be declared at top level or inside a block");
- } else if (context !== "if" && context !== "label") {
- this.raise(this.state.start, "In non-strict mode code, functions can only be declared at top level, " + "inside a block, or as the body of an if statement");
- }
- }
-
- return this.parseFunctionStatement(node, false, !context);
-
- case _types2.types._class:
- if (context) this.unexpected();
- return this.parseClass(node, true);
-
- case _types2.types._if:
- return this.parseIfStatement(node);
-
- case _types2.types._return:
- return this.parseReturnStatement(node);
-
- case _types2.types._switch:
- return this.parseSwitchStatement(node);
-
- case _types2.types._throw:
- return this.parseThrowStatement(node);
-
- case _types2.types._try:
- return this.parseTryStatement(node);
-
- case _types2.types._const:
- case _types2.types._var:
- kind = kind || this.state.value;
-
- if (context && kind !== "var") {
- this.raise(this.state.start, "Lexical declaration cannot appear in a single-statement context");
- }
-
- return this.parseVarStatement(node, kind);
-
- case _types2.types._while:
- return this.parseWhileStatement(node);
-
- case _types2.types._with:
- return this.parseWithStatement(node);
-
- case _types2.types.braceL:
- return this.parseBlock();
-
- case _types2.types.semi:
- return this.parseEmptyStatement(node);
-
- case _types2.types._export:
- case _types2.types._import:
- {
- const nextTokenCharCode = this.lookaheadCharCode();
-
- if (nextTokenCharCode === 40 || nextTokenCharCode === 46) {
- break;
- }
-
- if (!this.options.allowImportExportEverywhere && !topLevel) {
- this.raise(this.state.start, "'import' and 'export' may only appear at the top level");
- }
-
- this.next();
- let result;
-
- if (starttype === _types2.types._import) {
- 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, "Async functions can only be declared at the top level or inside a block");
- }
-
- this.next();
- return this.parseFunctionStatement(node, true, !context);
- }
- }
- }
-
- const maybeName = this.state.value;
- const expr = this.parseExpression();
-
- if (starttype === _types2.types.name && expr.type === "Identifier" && this.eat(_types2.types.colon)) {
- 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, `'import' and 'export' may appear only with 'sourceType: "module"'`, {
- code: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"
- });
- }
- }
-
- 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(_types2.types._class);
- }
-
- parseDecorators(allowExport) {
- const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];
-
- while (this.match(_types2.types.at)) {
- const decorator = this.parseDecorator();
- currentContextDecorators.push(decorator);
- }
-
- if (this.match(_types2.types._export)) {
- if (!allowExport) {
- this.unexpected();
- }
-
- if (this.hasPlugin("decorators") && !this.getPluginOption("decorators", "decoratorsBeforeExport")) {
- this.raise(this.state.start, "Using the export keyword between a decorator and a class is not allowed. " + "Please use `export @dec class` instead.");
- }
- } else if (!this.canHaveLeadingDecorator()) {
- throw this.raise(this.state.start, "Leading decorators must be attached to a class declaration");
- }
- }
-
- 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(_types2.types.parenL)) {
- expr = this.parseExpression();
- this.expect(_types2.types.parenR);
- } else {
- expr = this.parseIdentifier(false);
-
- while (this.eat(_types2.types.dot)) {
- 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(_types2.types.parenL)) {
- const node = this.startNodeAtNode(expr);
- node.callee = expr;
- node.arguments = this.parseCallExpressionArguments(_types2.types.parenR, false);
- this.toReferencedList(node.arguments);
- return this.finishNode(node, "CallExpression");
- }
-
- return expr;
- }
-
- parseBreakContinueStatement(node, keyword) {
- const isBreak = keyword === "break";
- this.next();
-
- if (this.isLineTerminator()) {
- node.label = null;
- } else {
- node.label = this.parseIdentifier();
- this.semicolon();
- }
-
- this.verifyBreakContinue(node, keyword);
- return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement");
- }
-
- verifyBreakContinue(node, keyword) {
- const isBreak = keyword === "break";
- 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, "Unsyntactic " + keyword);
- }
- }
-
- parseDebuggerStatement(node) {
- this.next();
- this.semicolon();
- return this.finishNode(node, "DebuggerStatement");
- }
-
- parseHeaderExpression() {
- this.expect(_types2.types.parenL);
- const val = this.parseExpression();
- this.expect(_types2.types.parenR);
- return val;
- }
-
- parseDoStatement(node) {
- this.next();
- this.state.labels.push(loopLabel);
- node.body = this.withTopicForbiddingContext(() => this.parseStatement("do"));
- this.state.labels.pop();
- this.expect(_types2.types._while);
- node.test = this.parseHeaderExpression();
- this.eat(_types2.types.semi);
- return this.finishNode(node, "DoWhileStatement");
- }
-
- parseForStatement(node) {
- this.next();
- this.state.labels.push(loopLabel);
- let awaitAt = -1;
-
- if (this.isAwaitAllowed() && this.eatContextual("await")) {
- awaitAt = this.state.lastTokStart;
- }
-
- this.scope.enter(_scopeflags.SCOPE_OTHER);
- this.expect(_types2.types.parenL);
-
- if (this.match(_types2.types.semi)) {
- if (awaitAt > -1) {
- this.unexpected(awaitAt);
- }
-
- return this.parseFor(node, null);
- }
-
- const isLet = this.isLet();
-
- if (this.match(_types2.types._var) || this.match(_types2.types._const) || 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(_types2.types._in) || this.isContextual("of")) && init.declarations.length === 1) {
- return this.parseForIn(node, init, awaitAt);
- }
-
- if (awaitAt > -1) {
- this.unexpected(awaitAt);
- }
-
- return this.parseFor(node, init);
- }
-
- const refExpressionErrors = new _util.ExpressionErrors();
- const init = this.parseExpression(true, refExpressionErrors);
-
- if (this.match(_types2.types._in) || this.isContextual("of")) {
- this.toAssignable(init);
- const description = this.isContextual("of") ? "for-of statement" : "for-in statement";
- this.checkLVal(init, undefined, undefined, 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(_types2.types._else) ? this.parseStatement("if") : null;
- return this.finishNode(node, "IfStatement");
- }
-
- parseReturnStatement(node) {
- if (!this.scope.inFunction && !this.options.allowReturnOutsideFunction) {
- this.raise(this.state.start, "'return' outside of function");
- }
-
- 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(_types2.types.braceL);
- this.state.labels.push(switchLabel);
- this.scope.enter(_scopeflags.SCOPE_OTHER);
- let cur;
-
- for (let sawDefault; !this.match(_types2.types.braceR);) {
- if (this.match(_types2.types._case) || this.match(_types2.types._default)) {
- const isCase = this.match(_types2.types._case);
- 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, "Multiple default clauses");
- }
-
- sawDefault = true;
- cur.test = null;
- }
-
- this.expect(_types2.types.colon);
- } 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 (_whitespace.lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start))) {
- this.raise(this.state.lastTokEnd, "Illegal newline after throw");
- }
-
- node.argument = this.parseExpression();
- this.semicolon();
- return this.finishNode(node, "ThrowStatement");
- }
-
- parseTryStatement(node) {
- this.next();
- node.block = this.parseBlock();
- node.handler = null;
-
- if (this.match(_types2.types._catch)) {
- const clause = this.startNode();
- this.next();
-
- if (this.match(_types2.types.parenL)) {
- this.expect(_types2.types.parenL);
- clause.param = this.parseBindingAtom();
- const simple = clause.param.type === "Identifier";
- this.scope.enter(simple ? _scopeflags.SCOPE_SIMPLE_CATCH : 0);
- this.checkLVal(clause.param, _scopeflags.BIND_LEXICAL, null, "catch clause");
- this.expect(_types2.types.parenR);
- } else {
- clause.param = null;
- this.scope.enter(_scopeflags.SCOPE_OTHER);
- }
-
- clause.body = this.withTopicForbiddingContext(() => this.parseBlock(false, false));
- this.scope.exit();
- node.handler = this.finishNode(clause, "CatchClause");
- }
-
- node.finalizer = this.eat(_types2.types._finally) ? this.parseBlock() : null;
-
- if (!node.handler && !node.finalizer) {
- this.raise(node.start, "Missing catch or finally clause");
- }
-
- 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.withTopicForbiddingContext(() => this.parseStatement("while"));
- this.state.labels.pop();
- return this.finishNode(node, "WhileStatement");
- }
-
- parseWithStatement(node) {
- if (this.state.strict) {
- this.raise(this.state.start, "'with' in strict mode");
- }
-
- this.next();
- node.object = this.parseHeaderExpression();
- node.body = this.withTopicForbiddingContext(() => this.parseStatement("with"));
- return this.finishNode(node, "WithStatement");
- }
-
- parseEmptyStatement(node) {
- this.next();
- return this.finishNode(node, "EmptyStatement");
- }
-
- parseLabeledStatement(node, maybeName, expr, context) {
- for (let _i2 = 0, _this$state$labels = this.state.labels; _i2 < _this$state$labels.length; _i2++) {
- const label = _this$state$labels[_i2];
-
- if (label.name === maybeName) {
- this.raise(expr.start, `Label '${maybeName}' is already declared`);
- }
- }
-
- const kind = this.state.type.isLoop ? "loop" : this.match(_types2.types._switch) ? "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) {
- const node = this.startNode();
- this.expect(_types2.types.braceL);
-
- if (createNewLexicalScope) {
- this.scope.enter(_scopeflags.SCOPE_OTHER);
- }
-
- this.parseBlockBody(node, allowDirectives, false, _types2.types.braceR);
-
- 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) {
- const body = node.body = [];
- const directives = node.directives = [];
- this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end);
- }
-
- parseBlockOrModuleBlockBody(body, directives, topLevel, end) {
- let parsedNonDirective = false;
- let oldStrict;
- let octalPosition;
-
- while (!this.eat(end)) {
- if (!parsedNonDirective && this.state.containsOctal && !octalPosition) {
- octalPosition = this.state.octalPosition;
- }
-
- const stmt = this.parseStatement(null, topLevel);
-
- if (directives && !parsedNonDirective && this.isValidDirective(stmt)) {
- const directive = this.stmtToDirective(stmt);
- directives.push(directive);
-
- if (oldStrict === undefined && directive.value.value === "use strict") {
- oldStrict = this.state.strict;
- this.setStrict(true);
-
- if (octalPosition) {
- this.raise(octalPosition, "Octal literal in strict mode");
- }
- }
-
- continue;
- }
-
- parsedNonDirective = true;
- body.push(stmt);
- }
-
- if (oldStrict === false) {
- this.setStrict(false);
- }
- }
-
- parseFor(node, init) {
- node.init = init;
- this.expect(_types2.types.semi);
- node.test = this.match(_types2.types.semi) ? null : this.parseExpression();
- this.expect(_types2.types.semi);
- node.update = this.match(_types2.types.parenR) ? null : this.parseExpression();
- this.expect(_types2.types.parenR);
- node.body = this.withTopicForbiddingContext(() => this.parseStatement("for"));
- this.scope.exit();
- this.state.labels.pop();
- return this.finishNode(node, "ForStatement");
- }
-
- parseForIn(node, init, awaitAt) {
- const isForIn = this.match(_types2.types._in);
- 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, `${isForIn ? "for-in" : "for-of"} loop variable declaration may not have an initializer`);
- } else if (init.type === "AssignmentPattern") {
- this.raise(init.start, "Invalid left-hand side in for-loop");
- }
-
- node.left = init;
- node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();
- this.expect(_types2.types.parenR);
- node.body = this.withTopicForbiddingContext(() => 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(_types2.types.eq)) {
- decl.init = this.parseMaybeAssign(isFor);
- } else {
- if (kind === "const" && !(this.match(_types2.types._in) || this.isContextual("of"))) {
- if (!isTypescript) {
- this.unexpected();
- }
- } else if (decl.id.type !== "Identifier" && !(isFor && (this.match(_types2.types._in) || this.isContextual("of")))) {
- this.raise(this.state.lastTokEnd, "Complex binding patterns require an initialization value");
- }
-
- decl.init = null;
- }
-
- declarations.push(this.finishNode(decl, "VariableDeclarator"));
- if (!this.eat(_types2.types.comma)) break;
- }
-
- return node;
- }
-
- parseVarId(decl, kind) {
- decl.id = this.parseBindingAtom();
- this.checkLVal(decl.id, kind === "var" ? _scopeflags.BIND_VAR : _scopeflags.BIND_LEXICAL, undefined, "variable declaration", 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(_types2.types.star) && isHangingStatement) {
- this.raise(this.state.start, "Generators can only be declared at the top level or inside a block");
- }
-
- node.generator = this.eat(_types2.types.star);
-
- if (isStatement) {
- node.id = this.parseFunctionId(requireId);
- }
-
- const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
- const oldYieldPos = this.state.yieldPos;
- const oldAwaitPos = this.state.awaitPos;
- this.state.maybeInArrowParameters = false;
- this.state.yieldPos = -1;
- this.state.awaitPos = -1;
- this.scope.enter((0, _scopeflags.functionFlags)(node.async, node.generator));
-
- if (!isStatement) {
- node.id = this.parseFunctionId();
- }
-
- this.parseFunctionParams(node);
- this.withTopicForbiddingContext(() => {
- this.parseFunctionBodyAndFinish(node, isStatement ? "FunctionDeclaration" : "FunctionExpression");
- });
- this.scope.exit();
-
- if (isStatement && !isHangingStatement) {
- this.registerFunctionStatementId(node);
- }
-
- this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
- this.state.yieldPos = oldYieldPos;
- this.state.awaitPos = oldAwaitPos;
- return node;
- }
-
- parseFunctionId(requireId) {
- return requireId || this.match(_types2.types.name) ? this.parseIdentifier() : null;
- }
-
- parseFunctionParams(node, allowModifiers) {
- const oldInParameters = this.state.inParameters;
- this.state.inParameters = true;
- this.expect(_types2.types.parenL);
- node.params = this.parseBindingList(_types2.types.parenR, 41, false, allowModifiers);
- this.state.inParameters = oldInParameters;
- this.checkYieldAwaitInDefaultParams();
- }
-
- registerFunctionStatementId(node) {
- if (!node.id) return;
- this.scope.declareName(node.id.name, this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? _scopeflags.BIND_VAR : _scopeflags.BIND_LEXICAL : _scopeflags.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);
- this.state.strict = oldStrict;
- return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression");
- }
-
- isClassProperty() {
- return this.match(_types2.types.eq) || this.match(_types2.types.semi) || this.match(_types2.types.braceR);
- }
-
- isClassMethod() {
- return this.match(_types2.types.parenL);
- }
-
- isNonstaticConstructor(method) {
- return !method.computed && !method.static && (method.key.name === "constructor" || method.key.value === "constructor");
- }
-
- parseClassBody(constructorAllowsSuper) {
- this.classScope.enter();
- const state = {
- hadConstructor: false
- };
- let decorators = [];
- const classBody = this.startNode();
- classBody.body = [];
- this.expect(_types2.types.braceL);
- this.withTopicForbiddingContext(() => {
- while (!this.eat(_types2.types.braceR)) {
- if (this.eat(_types2.types.semi)) {
- if (decorators.length > 0) {
- throw this.raise(this.state.lastTokEnd, "Decorators must not be followed by a semicolon");
- }
-
- continue;
- }
-
- if (this.match(_types2.types.at)) {
- 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, constructorAllowsSuper);
-
- if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) {
- this.raise(member.start, "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?");
- }
- }
- });
-
- if (decorators.length) {
- throw this.raise(this.state.start, "You have trailing decorators with no method");
- }
-
- this.classScope.exit();
- return this.finishNode(classBody, "ClassBody");
- }
-
- parseClassMember(classBody, member, state, constructorAllowsSuper) {
- let isStatic = false;
- const containsEsc = this.state.containsEsc;
-
- if (this.match(_types2.types.name) && this.state.value === "static") {
- 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;
- } else if (this.isClassProperty()) {
- const prop = member;
- prop.computed = false;
- prop.key = key;
- prop.static = false;
- classBody.body.push(this.parseClassProperty(prop));
- return;
- } else if (containsEsc) {
- throw this.unexpected();
- }
-
- isStatic = true;
- }
-
- this.parseClassMemberWithIsStatic(classBody, member, state, isStatic, constructorAllowsSuper);
- }
-
- parseClassMemberWithIsStatic(classBody, member, state, isStatic, constructorAllowsSuper) {
- const publicMethod = member;
- const privateMethod = member;
- const publicProp = member;
- const privateProp = member;
- const method = publicMethod;
- const publicMember = publicMethod;
- member.static = isStatic;
-
- if (this.eat(_types2.types.star)) {
- method.kind = "method";
- this.parseClassPropertyName(method);
-
- if (method.key.type === "PrivateName") {
- this.pushClassPrivateMethod(classBody, privateMethod, true, false);
- return;
- }
-
- if (this.isNonstaticConstructor(publicMethod)) {
- this.raise(publicMethod.key.start, "Constructor can't be a generator");
- }
-
- this.pushClassMethod(classBody, publicMethod, true, false, false, false);
- return;
- }
-
- const containsEsc = this.state.containsEsc;
- const key = this.parseClassPropertyName(member);
- const isPrivate = key.type === "PrivateName";
- const isSimple = key.type === "Identifier";
- 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, "Duplicate constructor in the same class");
- }
-
- state.hadConstructor = true;
- allowsDirectSuper = constructorAllowsSuper;
- }
-
- 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 (isSimple && key.name === "async" && !containsEsc && !this.isLineTerminator()) {
- const isGenerator = this.eat(_types2.types.star);
-
- if (publicMember.optional) {
- this.unexpected(maybeQuestionTokenStart);
- }
-
- method.kind = "method";
- this.parseClassPropertyName(method);
- this.parsePostMemberNameModifiers(publicMember);
-
- if (method.key.type === "PrivateName") {
- this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true);
- } else {
- if (this.isNonstaticConstructor(publicMethod)) {
- this.raise(publicMethod.key.start, "Constructor can't be an async function");
- }
-
- this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false);
- }
- } else if (isSimple && (key.name === "get" || key.name === "set") && !containsEsc && !(this.match(_types2.types.star) && this.isLineTerminator())) {
- method.kind = key.name;
- this.parseClassPropertyName(publicMethod);
-
- if (method.key.type === "PrivateName") {
- this.pushClassPrivateMethod(classBody, privateMethod, false, false);
- } else {
- if (this.isNonstaticConstructor(publicMethod)) {
- this.raise(publicMethod.key.start, "Constructor can't have get/set modifier");
- }
-
- 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();
- }
- }
-
- parseClassPropertyName(member) {
- const key = this.parsePropertyName(member, true);
-
- if (!member.computed && member.static && (key.name === "prototype" || key.value === "prototype")) {
- this.raise(key.start, "Classes may not have static property named prototype");
- }
-
- if (key.type === "PrivateName" && key.id.name === "constructor") {
- this.raise(key.start, "Classes may not have a private field named '#constructor'");
- }
-
- return key;
- }
-
- pushClassProperty(classBody, prop) {
- if (!prop.computed && (prop.key.name === "constructor" || prop.key.value === "constructor")) {
- this.raise(prop.key.start, "Classes may not have a field named 'constructor'");
- }
-
- classBody.body.push(this.parseClassProperty(prop));
- }
-
- pushClassPrivateProperty(classBody, prop) {
- this.expectPlugin("classPrivateProperties", prop.key.start);
- const node = this.parseClassPrivateProperty(prop);
- classBody.body.push(node);
- this.classScope.declarePrivateName(node.key.id.name, _scopeflags.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) {
- this.expectPlugin("classPrivateMethods", method.key.start);
- const node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true);
- classBody.body.push(node);
- const kind = node.kind === "get" ? node.static ? _scopeflags.CLASS_ELEMENT_STATIC_GETTER : _scopeflags.CLASS_ELEMENT_INSTANCE_GETTER : node.kind === "set" ? node.static ? _scopeflags.CLASS_ELEMENT_STATIC_SETTER : _scopeflags.CLASS_ELEMENT_INSTANCE_SETTER : _scopeflags.CLASS_ELEMENT_OTHER;
- this.classScope.declarePrivateName(node.key.id.name, kind, node.key.start);
- }
-
- parsePostMemberNameModifiers(methodOrProp) {}
-
- parseAccessModifier() {
- return undefined;
- }
-
- parseClassPrivateProperty(node) {
- this.scope.enter(_scopeflags.SCOPE_CLASS | _scopeflags.SCOPE_SUPER);
- node.value = this.eat(_types2.types.eq) ? this.parseMaybeAssign() : null;
- this.semicolon();
- this.scope.exit();
- return this.finishNode(node, "ClassPrivateProperty");
- }
-
- parseClassProperty(node) {
- if (!node.typeAnnotation) {
- this.expectPlugin("classProperties");
- }
-
- this.scope.enter(_scopeflags.SCOPE_CLASS | _scopeflags.SCOPE_SUPER);
-
- if (this.match(_types2.types.eq)) {
- this.expectPlugin("classProperties");
- this.next();
- node.value = this.parseMaybeAssign();
- } else {
- node.value = null;
- }
-
- this.semicolon();
- this.scope.exit();
- return this.finishNode(node, "ClassProperty");
- }
-
- parseClassId(node, isStatement, optionalId, bindingType = _scopeflags.BIND_CLASS) {
- if (this.match(_types2.types.name)) {
- node.id = this.parseIdentifier();
-
- if (isStatement) {
- this.checkLVal(node.id, bindingType, undefined, "class name");
- }
- } else {
- if (optionalId || !isStatement) {
- node.id = null;
- } else {
- this.unexpected(null, "A class name is required");
- }
- }
- }
-
- parseClassSuper(node) {
- node.superClass = this.eat(_types2.types._extends) ? this.parseExprSubscripts() : null;
- }
-
- parseExport(node) {
- const hasDefault = this.maybeParseExportDefaultSpecifier(node);
- const parseAfterDefault = !hasDefault || this.eat(_types2.types.comma);
- const hasStar = parseAfterDefault && this.eatExportStar(node);
- const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node);
- const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(_types2.types.comma));
- 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, _types2.types.braceL);
- }
-
- 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(_types2.types._default)) {
- node.declaration = this.parseExportDefaultExpression();
- this.checkExport(node, true, true);
- return this.finishNode(node, "ExportDefaultDeclaration");
- }
-
- throw this.unexpected(null, _types2.types.braceL);
- }
-
- eatExportStar(node) {
- return this.eat(_types2.types.star);
- }
-
- 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("as")) {
- if (!node.specifiers) node.specifiers = [];
- const specifier = this.startNodeAt(this.state.lastTokStart, this.state.lastTokStartLoc);
- this.next();
- specifier.exported = this.parseIdentifier(true);
- node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier"));
- return true;
- }
-
- return false;
- }
-
- maybeParseExportNamedSpecifiers(node) {
- if (this.match(_types2.types.braceL)) {
- if (!node.specifiers) node.specifiers = [];
- node.specifiers.push(...this.parseExportSpecifiers());
- node.source = null;
- node.declaration = null;
- return true;
- }
-
- return false;
- }
-
- maybeParseExportDeclaration(node) {
- if (this.shouldParseExportDeclaration()) {
- if (this.isContextual("async")) {
- const next = this.nextTokenStart();
-
- if (!this.isUnparsedContextual(next, "function")) {
- this.unexpected(next, `Unexpected token, expected "function"`);
- }
- }
-
- node.specifiers = [];
- node.source = null;
- node.declaration = this.parseExportDeclaration(node);
- return true;
- }
-
- return false;
- }
-
- isAsyncFunction() {
- if (!this.isContextual("async")) return false;
- const next = this.nextTokenStart();
- return !_whitespace.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(_types2.types._function) || isAsync) {
- this.next();
-
- if (isAsync) {
- this.next();
- }
-
- return this.parseFunction(expr, FUNC_STATEMENT | FUNC_NULLABLE_ID, isAsync);
- } else if (this.match(_types2.types._class)) {
- return this.parseClass(expr, true, true);
- } else if (this.match(_types2.types.at)) {
- if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport")) {
- this.raise(this.state.start, "Decorators must be placed *before* the 'export' keyword." + " You can set the 'decoratorsBeforeExport' option to false to use" + " the 'export @decorator class {}' syntax");
- }
-
- this.parseDecorators(false);
- return this.parseClass(expr, true, true);
- } else if (this.match(_types2.types._const) || this.match(_types2.types._var) || this.isLet()) {
- throw this.raise(this.state.start, "Only expressions, functions or classes are allowed as the `default` export.");
- } else {
- const res = this.parseMaybeAssign();
- this.semicolon();
- return res;
- }
- }
-
- parseExportDeclaration(node) {
- return this.parseStatement(null);
- }
-
- isExportDefaultSpecifier() {
- if (this.match(_types2.types.name)) {
- return this.state.value !== "async" && this.state.value !== "let";
- }
-
- if (!this.match(_types2.types._default)) {
- return false;
- }
-
- const next = this.nextTokenStart();
- return this.input.charCodeAt(next) === 44 || this.isUnparsedContextual(next, "from");
- }
-
- parseExportFrom(node, expect) {
- if (this.eatContextual("from")) {
- node.source = this.parseImportSource();
- this.checkExport(node);
- } else {
- if (expect) {
- this.unexpected();
- } else {
- node.source = null;
- }
- }
-
- this.semicolon();
- }
-
- shouldParseExportDeclaration() {
- if (this.match(_types2.types.at)) {
- this.expectOnePlugin(["decorators", "decorators-legacy"]);
-
- if (this.hasPlugin("decorators")) {
- if (this.getPluginOption("decorators", "decoratorsBeforeExport")) {
- this.unexpected(this.state.start, "Decorators must be placed *before* the 'export' keyword." + " You can set the 'decoratorsBeforeExport' option to false to use" + " the 'export @decorator class {}' syntax");
- } else {
- return true;
- }
- }
- }
-
- return this.state.type.keyword === "var" || this.state.type.keyword === "const" || this.state.type.keyword === "function" || this.state.type.keyword === "class" || this.isLet() || this.isAsyncFunction();
- }
-
- checkExport(node, checkNames, isDefault, isFrom) {
- if (checkNames) {
- if (isDefault) {
- this.checkDuplicateExports(node, "default");
- } else if (node.specifiers && node.specifiers.length) {
- for (let _i3 = 0, _node$specifiers = node.specifiers; _i3 < _node$specifiers.length; _i3++) {
- const specifier = _node$specifiers[_i3];
- this.checkDuplicateExports(specifier, specifier.exported.name);
-
- if (!isFrom && specifier.local) {
- this.checkReservedWord(specifier.local.name, specifier.local.start, true, false);
- this.scope.checkLocalExport(specifier.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 (let _i4 = 0, _node$declaration$dec = node.declaration.declarations; _i4 < _node$declaration$dec.length; _i4++) {
- const declaration = _node$declaration$dec[_i4];
- this.checkDeclaration(declaration.id);
- }
- }
- }
- }
-
- const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];
-
- if (currentContextDecorators.length) {
- const isClass = node.declaration && (node.declaration.type === "ClassDeclaration" || node.declaration.type === "ClassExpression");
-
- if (!node.declaration || !isClass) {
- throw this.raise(node.start, "You can only use decorators on an export when exporting a class");
- }
-
- this.takeDecorators(node.declaration);
- }
- }
-
- checkDeclaration(node) {
- if (node.type === "Identifier") {
- this.checkDuplicateExports(node, node.name);
- } else if (node.type === "ObjectPattern") {
- for (let _i5 = 0, _node$properties = node.properties; _i5 < _node$properties.length; _i5++) {
- const prop = _node$properties[_i5];
- this.checkDeclaration(prop);
- }
- } else if (node.type === "ArrayPattern") {
- for (let _i6 = 0, _node$elements = node.elements; _i6 < _node$elements.length; _i6++) {
- const elem = _node$elements[_i6];
-
- 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.state.exportedIdentifiers.indexOf(name) > -1) {
- this.raise(node.start, name === "default" ? "Only one default export allowed per module." : `\`${name}\` has already been exported. Exported identifiers must be unique.`);
- }
-
- this.state.exportedIdentifiers.push(name);
- }
-
- parseExportSpecifiers() {
- const nodes = [];
- let first = true;
- this.expect(_types2.types.braceL);
-
- while (!this.eat(_types2.types.braceR)) {
- if (first) {
- first = false;
- } else {
- this.expect(_types2.types.comma);
- if (this.eat(_types2.types.braceR)) break;
- }
-
- const node = this.startNode();
- node.local = this.parseIdentifier(true);
- node.exported = this.eatContextual("as") ? this.parseIdentifier(true) : node.local.__clone();
- nodes.push(this.finishNode(node, "ExportSpecifier"));
- }
-
- return nodes;
- }
-
- parseImport(node) {
- node.specifiers = [];
-
- if (!this.match(_types2.types.string)) {
- const hasDefault = this.maybeParseDefaultImportSpecifier(node);
- const parseNext = !hasDefault || this.eat(_types2.types.comma);
- const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);
- if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);
- this.expectContextual("from");
- }
-
- node.source = this.parseImportSource();
- this.semicolon();
- return this.finishNode(node, "ImportDeclaration");
- }
-
- parseImportSource() {
- if (!this.match(_types2.types.string)) this.unexpected();
- return this.parseExprAtom();
- }
-
- shouldParseDefaultImport(node) {
- return this.match(_types2.types.name);
- }
-
- parseImportSpecifierLocal(node, specifier, type, contextDescription) {
- specifier.local = this.parseIdentifier();
- this.checkLVal(specifier.local, _scopeflags.BIND_LEXICAL, undefined, contextDescription);
- node.specifiers.push(this.finishNode(specifier, type));
- }
-
- maybeParseDefaultImportSpecifier(node) {
- if (this.shouldParseDefaultImport(node)) {
- this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier", "default import specifier");
- return true;
- }
-
- return false;
- }
-
- maybeParseStarImportSpecifier(node) {
- if (this.match(_types2.types.star)) {
- const specifier = this.startNode();
- this.next();
- this.expectContextual("as");
- this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier", "import namespace specifier");
- return true;
- }
-
- return false;
- }
-
- parseNamedImportSpecifiers(node) {
- let first = true;
- this.expect(_types2.types.braceL);
-
- while (!this.eat(_types2.types.braceR)) {
- if (first) {
- first = false;
- } else {
- if (this.eat(_types2.types.colon)) {
- throw this.raise(this.state.start, "ES2015 named imports do not destructure. " + "Use another statement for destructuring after the import.");
- }
-
- this.expect(_types2.types.comma);
- if (this.eat(_types2.types.braceR)) break;
- }
-
- this.parseImportSpecifier(node);
- }
- }
-
- parseImportSpecifier(node) {
- const specifier = this.startNode();
- specifier.imported = this.parseIdentifier(true);
-
- if (this.eatContextual("as")) {
- specifier.local = this.parseIdentifier();
- } else {
- this.checkReservedWord(specifier.imported.name, specifier.start, true, true);
- specifier.local = specifier.imported.__clone();
- }
-
- this.checkLVal(specifier.local, _scopeflags.BIND_LEXICAL, undefined, "import specifier");
- node.specifiers.push(this.finishNode(specifier, "ImportSpecifier"));
- }
-
-}
-
-exports.default = StatementParser; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/parser/util.js b/assets/node_modules/@babel/parser/lib/parser/util.js
deleted file mode 100644
index 7c296c5..0000000
--- a/assets/node_modules/@babel/parser/lib/parser/util.js
+++ /dev/null
@@ -1,246 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.ExpressionErrors = exports.default = void 0;
-
-var _types = require("../tokenizer/types");
-
-var _tokenizer = _interopRequireDefault(require("../tokenizer"));
-
-var _state = _interopRequireDefault(require("../tokenizer/state"));
-
-var _whitespace = require("../util/whitespace");
-
-var _identifier = require("../util/identifier");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const literal = /^('|")((?:\\?.)*?)\1/;
-
-class UtilParser extends _tokenizer.default {
- addExtra(node, key, val) {
- if (!node) return;
- const extra = node.extra = node.extra || {};
- extra[key] = val;
- }
-
- isRelational(op) {
- return this.match(_types.types.relational) && this.state.value === op;
- }
-
- isLookaheadRelational(op) {
- const next = this.nextTokenStart();
-
- if (this.input.charAt(next) === op) {
- if (next + 1 === this.input.length) {
- return true;
- }
-
- const afterNext = this.input.charCodeAt(next + 1);
- return afterNext !== op.charCodeAt(0) && afterNext !== 61;
- }
-
- return false;
- }
-
- expectRelational(op) {
- if (this.isRelational(op)) {
- this.next();
- } else {
- this.unexpected(null, _types.types.relational);
- }
- }
-
- isContextual(name) {
- return this.match(_types.types.name) && this.state.value === name && !this.state.containsEsc;
- }
-
- isUnparsedContextual(nameStart, name) {
- const nameEnd = nameStart + name.length;
- return this.input.slice(nameStart, nameEnd) === name && (nameEnd === this.input.length || !(0, _identifier.isIdentifierChar)(this.input.charCodeAt(nameEnd)));
- }
-
- isLookaheadContextual(name) {
- const next = this.nextTokenStart();
- return this.isUnparsedContextual(next, name);
- }
-
- eatContextual(name) {
- return this.isContextual(name) && this.eat(_types.types.name);
- }
-
- expectContextual(name, message) {
- if (!this.eatContextual(name)) this.unexpected(null, message);
- }
-
- canInsertSemicolon() {
- return this.match(_types.types.eof) || this.match(_types.types.braceR) || this.hasPrecedingLineBreak();
- }
-
- hasPrecedingLineBreak() {
- return _whitespace.lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start));
- }
-
- isLineTerminator() {
- return this.eat(_types.types.semi) || this.canInsertSemicolon();
- }
-
- semicolon() {
- if (!this.isLineTerminator()) this.unexpected(null, _types.types.semi);
- }
-
- 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, message);
- }
- }
-
- unexpected(pos, messageOrType = "Unexpected token") {
- if (typeof messageOrType !== "string") {
- messageOrType = `Unexpected token, expected "${messageOrType.label}"`;
- }
-
- throw this.raise(pos != null ? pos : this.state.start, messageOrType);
- }
-
- expectPlugin(name, pos) {
- if (!this.hasPlugin(name)) {
- throw this.raise(pos != null ? pos : this.state.start, `This experimental syntax requires enabling the parser plugin: '${name}'`, {
- missingPluginNames: [name]
- });
- }
-
- return true;
- }
-
- expectOnePlugin(names, pos) {
- if (!names.some(n => this.hasPlugin(n))) {
- throw this.raise(pos != null ? pos : this.state.start, `This experimental syntax requires enabling one of the following parser plugin(s): '${names.join(", ")}'`, {
- missingPluginNames: names
- });
- }
- }
-
- checkYieldAwaitInDefaultParams() {
- if (this.state.yieldPos !== -1 && (this.state.awaitPos === -1 || this.state.yieldPos < this.state.awaitPos)) {
- this.raise(this.state.yieldPos, "Yield cannot be used as name inside a generator function");
- }
-
- if (this.state.awaitPos !== -1) {
- this.raise(this.state.awaitPos, "Await cannot be used as name inside an async function");
- }
- }
-
- strictDirective(start) {
- for (;;) {
- _whitespace.skipWhiteSpace.lastIndex = start;
- start += _whitespace.skipWhiteSpace.exec(this.input)[0].length;
- const match = literal.exec(this.input.slice(start));
- if (!match) break;
- if (match[2] === "use strict") return true;
- start += match[0].length;
- _whitespace.skipWhiteSpace.lastIndex = start;
- start += _whitespace.skipWhiteSpace.exec(this.input)[0].length;
-
- if (this.input[start] === ";") {
- start++;
- }
- }
-
- return false;
- }
-
- 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;
- 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
- } = refExpressionErrors;
- if (!andThrow) return shorthandAssign >= 0 || doubleProto >= 0;
-
- if (shorthandAssign >= 0) {
- this.unexpected(shorthandAssign);
- }
-
- if (doubleProto >= 0) {
- this.raise(doubleProto, "Redefinition of __proto__ property");
- }
- }
-
-}
-
-exports.default = UtilParser;
-
-class ExpressionErrors {
- constructor() {
- this.shorthandAssign = -1;
- this.doubleProto = -1;
- }
-
-}
-
-exports.ExpressionErrors = ExpressionErrors; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/plugin-utils.js b/assets/node_modules/@babel/parser/lib/plugin-utils.js
deleted file mode 100644
index 4d1c62f..0000000
--- a/assets/node_modules/@babel/parser/lib/plugin-utils.js
+++ /dev/null
@@ -1,91 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.hasPlugin = hasPlugin;
-exports.getPluginOption = getPluginOption;
-exports.validatePlugins = validatePlugins;
-exports.mixinPluginNames = exports.mixinPlugins = void 0;
-
-var _estree = _interopRequireDefault(require("./plugins/estree"));
-
-var _flow = _interopRequireDefault(require("./plugins/flow"));
-
-var _jsx = _interopRequireDefault(require("./plugins/jsx"));
-
-var _typescript = _interopRequireDefault(require("./plugins/typescript"));
-
-var _placeholders = _interopRequireDefault(require("./plugins/placeholders"));
-
-var _v8intrinsic = _interopRequireDefault(require("./plugins/v8intrinsic"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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", "smart", "fsharp"];
-
-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") && !PIPELINE_PROPOSALS.includes(getPluginOption(plugins, "pipelineOperator", "proposal"))) {
- throw new Error("'pipelineOperator' requires 'proposal' option whose value should be one of: " + PIPELINE_PROPOSALS.map(p => `'${p}'`).join(", "));
- }
-}
-
-const mixinPlugins = {
- estree: _estree.default,
- jsx: _jsx.default,
- flow: _flow.default,
- typescript: _typescript.default,
- v8intrinsic: _v8intrinsic.default,
- placeholders: _placeholders.default
-};
-exports.mixinPlugins = mixinPlugins;
-const mixinPluginNames = Object.keys(mixinPlugins);
-exports.mixinPluginNames = mixinPluginNames; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/plugins/estree.js b/assets/node_modules/@babel/parser/lib/plugins/estree.js
deleted file mode 100644
index 1fbc102..0000000
--- a/assets/node_modules/@babel/parser/lib/plugins/estree.js
+++ /dev/null
@@ -1,269 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _types = require("../tokenizer/types");
-
-var N = _interopRequireWildcard(require("../types"));
-
-var _scopeflags = require("../util/scopeflags");
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function isSimpleProperty(node) {
- return node != null && node.type === "Property" && node.kind === "init" && node.method === false;
-}
-
-var _default = superClass => class extends superClass {
- estreeParseRegExpLiteral({
- pattern,
- flags
- }) {
- let regex = null;
-
- try {
- regex = new RegExp(pattern, flags);
- } catch (e) {}
-
- const node = this.estreeParseLiteral(regex);
- node.regex = {
- pattern,
- flags
- };
- return node;
- }
-
- estreeParseBigIntLiteral(value) {
- const bigInt = typeof BigInt !== "undefined" ? BigInt(value) : null;
- const node = this.estreeParseLiteral(bigInt);
- node.bigint = String(node.value || value);
- return node;
- }
-
- estreeParseLiteral(value) {
- return this.parseLiteral(value, "Literal");
- }
-
- 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.value;
- 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 (isSimpleProperty(node)) {
- this.checkDeclaration(node.value);
- } else {
- super.checkDeclaration(node);
- }
- }
-
- checkGetterSetterParams(method) {
- const prop = method;
- const paramCount = prop.kind === "get" ? 0 : 1;
- const start = prop.start;
-
- if (prop.value.params.length !== paramCount) {
- if (prop.kind === "get") {
- this.raise(start, "getter must not have any formal parameters");
- } else {
- this.raise(start, "setter must have exactly one formal parameter");
- }
- } else if (prop.kind === "set" && prop.value.params[0].type === "RestElement") {
- this.raise(start, "setter function argument must not be a rest parameter");
- }
- }
-
- checkLVal(expr, bindingType = _scopeflags.BIND_NONE, checkClashes, contextDescription, disallowLetBinding) {
- switch (expr.type) {
- case "ObjectPattern":
- expr.properties.forEach(prop => {
- this.checkLVal(prop.type === "Property" ? prop.value : prop, bindingType, checkClashes, "object destructuring pattern", disallowLetBinding);
- });
- break;
-
- default:
- super.checkLVal(expr, bindingType, checkClashes, contextDescription, disallowLetBinding);
- }
- }
-
- checkDuplicatedProto(prop, protoRef, refExpressionErrors) {
- if (prop.type === "SpreadElement" || prop.computed || prop.method || prop.shorthand) {
- return;
- }
-
- const key = prop.key;
- const name = key.type === "Identifier" ? key.name : String(key.value);
-
- if (name === "__proto__" && prop.kind === "init") {
- if (protoRef.used) {
- if (refExpressionErrors && refExpressionErrors.doubleProto === -1) {
- refExpressionErrors.doubleProto = key.start;
- } else {
- this.raise(key.start, "Redefinition of __proto__ property");
- }
- }
-
- protoRef.used = true;
- }
- }
-
- isValidDirective(stmt) {
- return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && (!stmt.expression.extra || !stmt.expression.extra.parenthesized);
- }
-
- stmtToDirective(stmt) {
- const directive = super.stmtToDirective(stmt);
- const value = stmt.expression.value;
- directive.value.value = value;
- return directive;
- }
-
- parseBlockBody(node, allowDirectives, topLevel, end) {
- super.parseBlockBody(node, allowDirectives, topLevel, end);
- 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);
- }
-
- parseExprAtom(refExpressionErrors) {
- switch (this.state.type) {
- case _types.types.num:
- case _types.types.string:
- return this.estreeParseLiteral(this.state.value);
-
- case _types.types.regexp:
- return this.estreeParseRegExpLiteral(this.state.value);
-
- case _types.types.bigint:
- return this.estreeParseBigIntLiteral(this.state.value);
-
- case _types.types._null:
- return this.estreeParseLiteral(null);
-
- case _types.types._true:
- return this.estreeParseLiteral(true);
-
- case _types.types._false:
- return this.estreeParseLiteral(false);
-
- default:
- return super.parseExprAtom(refExpressionErrors);
- }
- }
-
- parseLiteral(value, type, startPos, startLoc) {
- const node = super.parseLiteral(value, type, startPos, startLoc);
- 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;
- type = type === "ClassMethod" ? "MethodDefinition" : type;
- return this.finishNode(node, type);
- }
-
- parseObjectMethod(prop, isGenerator, isAsync, isPattern, containsEsc) {
- const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, containsEsc);
-
- 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;
- }
-
- toAssignable(node) {
- if (isSimpleProperty(node)) {
- this.toAssignable(node.value);
- return node;
- }
-
- return super.toAssignable(node);
- }
-
- toAssignableObjectExpressionProp(prop, isLast) {
- if (prop.kind === "get" || prop.kind === "set") {
- throw this.raise(prop.key.start, "Object pattern can't contain getter or setter");
- } else if (prop.method) {
- throw this.raise(prop.key.start, "Object pattern can't contain methods");
- } else {
- super.toAssignableObjectExpressionProp(prop, isLast);
- }
- }
-
- finishCallExpression(node, optional) {
- super.finishCallExpression(node, optional);
-
- if (node.callee.type === "Import") {
- node.type = "ImportExpression";
- node.source = node.arguments[0];
- delete node.arguments;
- delete node.callee;
- }
-
- return node;
- }
-
- toReferencedListDeep(exprList, isParenthesizedExpr) {
- if (!exprList) {
- return;
- }
-
- super.toReferencedListDeep(exprList, isParenthesizedExpr);
- }
-
-};
-
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/plugins/flow.js b/assets/node_modules/@babel/parser/lib/plugins/flow.js
deleted file mode 100644
index 056a6db..0000000
--- a/assets/node_modules/@babel/parser/lib/plugins/flow.js
+++ /dev/null
@@ -1,2689 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _types = require("../tokenizer/types");
-
-var N = _interopRequireWildcard(require("../types"));
-
-var _context = require("../tokenizer/context");
-
-var _identifier = require("../util/identifier");
-
-var _scopeflags = require("../util/scopeflags");
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]);
-
-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(state) {
- return (state.type === _types.types.name || !!state.type.keyword) && state.value !== "from";
-}
-
-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 _default = superClass => class extends superClass {
- constructor(options, input) {
- super(options, input);
- this.flowPragma = undefined;
- }
-
- shouldParseTypes() {
- return this.getPluginOption("flow", "all") || this.flowPragma === "flow";
- }
-
- shouldParseEnums() {
- return !!this.getPluginOption("flow", "enums");
- }
-
- finishToken(type, val) {
- if (type !== _types.types.string && type !== _types.types.semi && type !== _types.types.interpreterDirective) {
- 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 || _types.types.colon);
- const type = this.flowParseType();
- this.state.inType = oldInType;
- return type;
- }
-
- flowParsePredicate() {
- const node = this.startNode();
- const moduloLoc = this.state.startLoc;
- const moduloPos = this.state.start;
- this.expect(_types.types.modulo);
- const checksLoc = this.state.startLoc;
- this.expectContextual("checks");
-
- if (moduloLoc.line !== checksLoc.line || moduloLoc.column !== checksLoc.column - 1) {
- this.raise(moduloPos, "Spaces between ´%´ and ´checks´ are not allowed here.");
- }
-
- if (this.eat(_types.types.parenL)) {
- node.value = this.parseExpression();
- this.expect(_types.types.parenR);
- return this.finishNode(node, "DeclaredPredicate");
- } else {
- return this.finishNode(node, "InferredPredicate");
- }
- }
-
- flowParseTypeAndPredicateInitialiser() {
- const oldInType = this.state.inType;
- this.state.inType = true;
- this.expect(_types.types.colon);
- let type = null;
- let predicate = null;
-
- if (this.match(_types.types.modulo)) {
- this.state.inType = oldInType;
- predicate = this.flowParsePredicate();
- } else {
- type = this.flowParseType();
- this.state.inType = oldInType;
-
- if (this.match(_types.types.modulo)) {
- 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.isRelational("<")) {
- typeNode.typeParameters = this.flowParseTypeParameterDeclaration();
- } else {
- typeNode.typeParameters = null;
- }
-
- this.expect(_types.types.parenL);
- const tmp = this.flowParseFunctionTypeParams();
- typeNode.params = tmp.params;
- typeNode.rest = tmp.rest;
- this.expect(_types.types.parenR);
- [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser();
- typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation");
- id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation");
- this.resetEndLocation(id);
- this.semicolon();
- return this.finishNode(node, "DeclareFunction");
- }
-
- flowParseDeclare(node, insideModule) {
- if (this.match(_types.types._class)) {
- return this.flowParseDeclareClass(node);
- } else if (this.match(_types.types._function)) {
- return this.flowParseDeclareFunction(node);
- } else if (this.match(_types.types._var)) {
- return this.flowParseDeclareVariable(node);
- } else if (this.eatContextual("module")) {
- if (this.match(_types.types.dot)) {
- return this.flowParseDeclareModuleExports(node);
- } else {
- if (insideModule) {
- this.raise(this.state.lastTokStart, "`declare module` cannot be used inside another `declare module`");
- }
-
- return this.flowParseDeclareModule(node);
- }
- } else if (this.isContextual("type")) {
- return this.flowParseDeclareTypeAlias(node);
- } else if (this.isContextual("opaque")) {
- return this.flowParseDeclareOpaqueType(node);
- } else if (this.isContextual("interface")) {
- return this.flowParseDeclareInterface(node);
- } else if (this.match(_types.types._export)) {
- return this.flowParseDeclareExportDeclaration(node, insideModule);
- } else {
- throw this.unexpected();
- }
- }
-
- flowParseDeclareVariable(node) {
- this.next();
- node.id = this.flowParseTypeAnnotatableIdentifier(true);
- this.scope.declareName(node.id.name, _scopeflags.BIND_VAR, node.id.start);
- this.semicolon();
- return this.finishNode(node, "DeclareVariable");
- }
-
- flowParseDeclareModule(node) {
- this.scope.enter(_scopeflags.SCOPE_OTHER);
-
- if (this.match(_types.types.string)) {
- node.id = this.parseExprAtom();
- } else {
- node.id = this.parseIdentifier();
- }
-
- const bodyNode = node.body = this.startNode();
- const body = bodyNode.body = [];
- this.expect(_types.types.braceL);
-
- while (!this.match(_types.types.braceR)) {
- let bodyNode = this.startNode();
-
- if (this.match(_types.types._import)) {
- this.next();
-
- if (!this.isContextual("type") && !this.match(_types.types._typeof)) {
- this.raise(this.state.lastTokStart, "Imports within a `declare module` body must always be `import type` or `import typeof`");
- }
-
- this.parseImport(bodyNode);
- } else {
- this.expectContextual("declare", "Only declares and type imports are allowed inside declare module");
- bodyNode = this.flowParseDeclare(bodyNode, true);
- }
-
- body.push(bodyNode);
- }
-
- this.scope.exit();
- this.expect(_types.types.braceR);
- this.finishNode(bodyNode, "BlockStatement");
- let kind = null;
- let hasModuleExport = false;
- const errorMessage = "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";
- body.forEach(bodyElement => {
- if (isEsModuleType(bodyElement)) {
- if (kind === "CommonJS") {
- this.raise(bodyElement.start, errorMessage);
- }
-
- kind = "ES";
- } else if (bodyElement.type === "DeclareModuleExports") {
- if (hasModuleExport) {
- this.raise(bodyElement.start, "Duplicate `declare module.exports` statement");
- }
-
- if (kind === "ES") this.raise(bodyElement.start, errorMessage);
- kind = "CommonJS";
- hasModuleExport = true;
- }
- });
- node.kind = kind || "CommonJS";
- return this.finishNode(node, "DeclareModule");
- }
-
- flowParseDeclareExportDeclaration(node, insideModule) {
- this.expect(_types.types._export);
-
- if (this.eat(_types.types._default)) {
- if (this.match(_types.types._function) || this.match(_types.types._class)) {
- 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(_types.types._const) || this.isLet() || (this.isContextual("type") || this.isContextual("interface")) && !insideModule) {
- const label = this.state.value;
- const suggestion = exportSuggestions[label];
- this.unexpected(this.state.start, `\`declare export ${label}\` is not supported. Use \`${suggestion}\` instead`);
- }
-
- if (this.match(_types.types._var) || this.match(_types.types._function) || this.match(_types.types._class) || this.isContextual("opaque")) {
- node.declaration = this.flowParseDeclare(this.startNode());
- node.default = false;
- return this.finishNode(node, "DeclareExportDeclaration");
- } else if (this.match(_types.types.star) || this.match(_types.types.braceL) || this.isContextual("interface") || this.isContextual("type") || this.isContextual("opaque")) {
- 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("exports");
- 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 ? _scopeflags.BIND_FUNCTION : _scopeflags.BIND_LEXICAL, node.id.start);
-
- if (this.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterDeclaration();
- } else {
- node.typeParameters = null;
- }
-
- node.extends = [];
- node.implements = [];
- node.mixins = [];
-
- if (this.eat(_types.types._extends)) {
- do {
- node.extends.push(this.flowParseInterfaceExtends());
- } while (!isClass && this.eat(_types.types.comma));
- }
-
- if (this.isContextual("mixins")) {
- this.next();
-
- do {
- node.mixins.push(this.flowParseInterfaceExtends());
- } while (this.eat(_types.types.comma));
- }
-
- if (this.isContextual("implements")) {
- this.next();
-
- do {
- node.implements.push(this.flowParseInterfaceExtends());
- } while (this.eat(_types.types.comma));
- }
-
- 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.isRelational("<")) {
- 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, "`_` is only allowed as a type argument to call or new");
- }
- }
-
- checkReservedType(word, startLoc, declaration) {
- if (!reservedTypes.has(word)) return;
-
- if (declaration) {
- this.raise(startLoc, `Cannot overwrite reserved type ${word}`);
- return;
- }
-
- this.raise(startLoc, `Unexpected reserved type ${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, _scopeflags.BIND_LEXICAL, node.id.start);
-
- if (this.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterDeclaration();
- } else {
- node.typeParameters = null;
- }
-
- node.right = this.flowParseTypeInitialiser(_types.types.eq);
- this.semicolon();
- return this.finishNode(node, "TypeAlias");
- }
-
- flowParseOpaqueType(node, declare) {
- this.expectContextual("type");
- node.id = this.flowParseRestrictedIdentifier(true, true);
- this.scope.declareName(node.id.name, _scopeflags.BIND_LEXICAL, node.id.start);
-
- if (this.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterDeclaration();
- } else {
- node.typeParameters = null;
- }
-
- node.supertype = null;
-
- if (this.match(_types.types.colon)) {
- node.supertype = this.flowParseTypeInitialiser(_types.types.colon);
- }
-
- node.impltype = null;
-
- if (!declare) {
- node.impltype = this.flowParseTypeInitialiser(_types.types.eq);
- }
-
- 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(_types.types.eq)) {
- this.eat(_types.types.eq);
- node.default = this.flowParseType();
- } else {
- if (requireDefault) {
- this.raise(nodeStart, "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.");
- }
- }
-
- return this.finishNode(node, "TypeParameter");
- }
-
- flowParseTypeParameterDeclaration() {
- const oldInType = this.state.inType;
- const node = this.startNode();
- node.params = [];
- this.state.inType = true;
-
- if (this.isRelational("<") || this.match(_types.types.jsxTagStart)) {
- 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.isRelational(">")) {
- this.expect(_types.types.comma);
- }
- } while (!this.isRelational(">"));
-
- this.expectRelational(">");
- 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.expectRelational("<");
- const oldNoAnonFunctionType = this.state.noAnonFunctionType;
- this.state.noAnonFunctionType = false;
-
- while (!this.isRelational(">")) {
- node.params.push(this.flowParseType());
-
- if (!this.isRelational(">")) {
- this.expect(_types.types.comma);
- }
- }
-
- this.state.noAnonFunctionType = oldNoAnonFunctionType;
- this.expectRelational(">");
- 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.expectRelational("<");
-
- while (!this.isRelational(">")) {
- node.params.push(this.flowParseTypeOrImplicitInstantiation());
-
- if (!this.isRelational(">")) {
- this.expect(_types.types.comma);
- }
- }
-
- this.expectRelational(">");
- this.state.inType = oldInType;
- return this.finishNode(node, "TypeParameterInstantiation");
- }
-
- flowParseInterfaceType() {
- const node = this.startNode();
- this.expectContextual("interface");
- node.extends = [];
-
- if (this.eat(_types.types._extends)) {
- do {
- node.extends.push(this.flowParseInterfaceExtends());
- } while (this.eat(_types.types.comma));
- }
-
- node.body = this.flowParseObjectType({
- allowStatic: false,
- allowExact: false,
- allowSpread: false,
- allowProto: false,
- allowInexact: false
- });
- return this.finishNode(node, "InterfaceTypeAnnotation");
- }
-
- flowParseObjectPropertyKey() {
- return this.match(_types.types.num) || this.match(_types.types.string) ? this.parseExprAtom() : this.parseIdentifier(true);
- }
-
- flowParseObjectTypeIndexer(node, isStatic, variance) {
- node.static = isStatic;
-
- if (this.lookahead().type === _types.types.colon) {
- node.id = this.flowParseObjectPropertyKey();
- node.key = this.flowParseTypeInitialiser();
- } else {
- node.id = null;
- node.key = this.flowParseType();
- }
-
- this.expect(_types.types.bracketR);
- node.value = this.flowParseTypeInitialiser();
- node.variance = variance;
- return this.finishNode(node, "ObjectTypeIndexer");
- }
-
- flowParseObjectTypeInternalSlot(node, isStatic) {
- node.static = isStatic;
- node.id = this.flowParseObjectPropertyKey();
- this.expect(_types.types.bracketR);
- this.expect(_types.types.bracketR);
-
- if (this.isRelational("<") || this.match(_types.types.parenL)) {
- node.method = true;
- node.optional = false;
- node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start));
- } else {
- node.method = false;
-
- if (this.eat(_types.types.question)) {
- node.optional = true;
- }
-
- node.value = this.flowParseTypeInitialiser();
- }
-
- return this.finishNode(node, "ObjectTypeInternalSlot");
- }
-
- flowParseObjectTypeMethodish(node) {
- node.params = [];
- node.rest = null;
- node.typeParameters = null;
-
- if (this.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterDeclaration();
- }
-
- this.expect(_types.types.parenL);
-
- while (!this.match(_types.types.parenR) && !this.match(_types.types.ellipsis)) {
- node.params.push(this.flowParseFunctionTypeParam());
-
- if (!this.match(_types.types.parenR)) {
- this.expect(_types.types.comma);
- }
- }
-
- if (this.eat(_types.types.ellipsis)) {
- node.rest = this.flowParseFunctionTypeParam();
- }
-
- this.expect(_types.types.parenR);
- 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(_types.types.braceBarL)) {
- this.expect(_types.types.braceBarL);
- endDelim = _types.types.braceBarR;
- exact = true;
- } else {
- this.expect(_types.types.braceL);
- endDelim = _types.types.braceR;
- 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("proto")) {
- const lookahead = this.lookahead();
-
- if (lookahead.type !== _types.types.colon && lookahead.type !== _types.types.question) {
- this.next();
- protoStart = this.state.start;
- allowStatic = false;
- }
- }
-
- if (allowStatic && this.isContextual("static")) {
- const lookahead = this.lookahead();
-
- if (lookahead.type !== _types.types.colon && lookahead.type !== _types.types.question) {
- this.next();
- isStatic = true;
- }
- }
-
- const variance = this.flowParseVariance();
-
- if (this.eat(_types.types.bracketL)) {
- if (protoStart != null) {
- this.unexpected(protoStart);
- }
-
- if (this.eat(_types.types.bracketL)) {
- 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(_types.types.parenL) || this.isRelational("<")) {
- 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("get") || this.isContextual("set")) {
- const lookahead = this.lookahead();
-
- if (lookahead.type === _types.types.name || lookahead.type === _types.types.string || lookahead.type === _types.types.num) {
- 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(_types.types.braceR) && !this.match(_types.types.braceBarR)) {
- this.raise(inexactStart, "Explicit inexact syntax must appear at the end of an inexact object");
- }
- }
-
- 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(_types.types.ellipsis)) {
- const isInexactToken = this.match(_types.types.comma) || this.match(_types.types.semi) || this.match(_types.types.braceR) || this.match(_types.types.braceBarR);
-
- if (isInexactToken) {
- if (!allowSpread) {
- this.raise(this.state.lastTokStart, "Explicit inexact syntax cannot appear in class or interface definitions");
- } else if (!allowInexact) {
- this.raise(this.state.lastTokStart, "Explicit inexact syntax cannot appear inside an explicit exact object type");
- }
-
- if (variance) {
- this.raise(variance.start, "Explicit inexact syntax cannot have variance");
- }
-
- return null;
- }
-
- if (!allowSpread) {
- this.raise(this.state.lastTokStart, "Spread operator cannot appear in class or interface definitions");
- }
-
- if (protoStart != null) {
- this.unexpected(protoStart);
- }
-
- if (variance) {
- this.raise(variance.start, "Spread properties cannot have variance");
- }
-
- 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.isRelational("<") || this.match(_types.types.parenL)) {
- 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);
- }
- } else {
- if (kind !== "init") this.unexpected();
- node.method = false;
-
- if (this.eat(_types.types.question)) {
- 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 (length !== paramCount) {
- if (property.kind === "get") {
- this.raise(start, "getter must not have any formal parameters");
- } else {
- this.raise(start, "setter must have exactly one formal parameter");
- }
- }
-
- if (property.kind === "set" && property.value.rest) {
- this.raise(start, "setter function argument must not be a rest parameter");
- }
- }
-
- flowObjectTypeSemicolon() {
- if (!this.eat(_types.types.semi) && !this.eat(_types.types.comma) && !this.match(_types.types.braceR) && !this.match(_types.types.braceBarR)) {
- 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(_types.types.dot)) {
- 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.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterInstantiation();
- }
-
- return this.finishNode(node, "GenericTypeAnnotation");
- }
-
- flowParseTypeofType() {
- const node = this.startNode();
- this.expect(_types.types._typeof);
- node.argument = this.flowParsePrimaryType();
- return this.finishNode(node, "TypeofTypeAnnotation");
- }
-
- flowParseTupleType() {
- const node = this.startNode();
- node.types = [];
- this.expect(_types.types.bracketL);
-
- while (this.state.pos < this.length && !this.match(_types.types.bracketR)) {
- node.types.push(this.flowParseType());
- if (this.match(_types.types.bracketR)) break;
- this.expect(_types.types.comma);
- }
-
- this.expect(_types.types.bracketR);
- return this.finishNode(node, "TupleTypeAnnotation");
- }
-
- flowParseFunctionTypeParam() {
- let name = null;
- let optional = false;
- let typeAnnotation = null;
- const node = this.startNode();
- const lh = this.lookahead();
-
- if (lh.type === _types.types.colon || lh.type === _types.types.question) {
- name = this.parseIdentifier();
-
- if (this.eat(_types.types.question)) {
- optional = true;
- }
-
- 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;
-
- while (!this.match(_types.types.parenR) && !this.match(_types.types.ellipsis)) {
- params.push(this.flowParseFunctionTypeParam());
-
- if (!this.match(_types.types.parenR)) {
- this.expect(_types.types.comma);
- }
- }
-
- if (this.eat(_types.types.ellipsis)) {
- rest = this.flowParseFunctionTypeParam();
- }
-
- return {
- params,
- rest
- };
- }
-
- 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");
-
- 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 _types.types.name:
- if (this.isContextual("interface")) {
- return this.flowParseInterfaceType();
- }
-
- return this.flowIdentToTypeAnnotation(startPos, startLoc, node, this.parseIdentifier());
-
- case _types.types.braceL:
- return this.flowParseObjectType({
- allowStatic: false,
- allowExact: false,
- allowSpread: true,
- allowProto: false,
- allowInexact: true
- });
-
- case _types.types.braceBarL:
- return this.flowParseObjectType({
- allowStatic: false,
- allowExact: true,
- allowSpread: true,
- allowProto: false,
- allowInexact: false
- });
-
- case _types.types.bracketL:
- this.state.noAnonFunctionType = false;
- type = this.flowParseTupleType();
- this.state.noAnonFunctionType = oldNoAnonFunctionType;
- return type;
-
- case _types.types.relational:
- if (this.state.value === "<") {
- node.typeParameters = this.flowParseTypeParameterDeclaration();
- this.expect(_types.types.parenL);
- tmp = this.flowParseFunctionTypeParams();
- node.params = tmp.params;
- node.rest = tmp.rest;
- this.expect(_types.types.parenR);
- this.expect(_types.types.arrow);
- node.returnType = this.flowParseType();
- return this.finishNode(node, "FunctionTypeAnnotation");
- }
-
- break;
-
- case _types.types.parenL:
- this.next();
-
- if (!this.match(_types.types.parenR) && !this.match(_types.types.ellipsis)) {
- if (this.match(_types.types.name)) {
- const token = this.lookahead().type;
- isGroupedType = token !== _types.types.question && token !== _types.types.colon;
- } else {
- isGroupedType = true;
- }
- }
-
- if (isGroupedType) {
- this.state.noAnonFunctionType = false;
- type = this.flowParseType();
- this.state.noAnonFunctionType = oldNoAnonFunctionType;
-
- if (this.state.noAnonFunctionType || !(this.match(_types.types.comma) || this.match(_types.types.parenR) && this.lookahead().type === _types.types.arrow)) {
- this.expect(_types.types.parenR);
- return type;
- } else {
- this.eat(_types.types.comma);
- }
- }
-
- if (type) {
- tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]);
- } else {
- tmp = this.flowParseFunctionTypeParams();
- }
-
- node.params = tmp.params;
- node.rest = tmp.rest;
- this.expect(_types.types.parenR);
- this.expect(_types.types.arrow);
- node.returnType = this.flowParseType();
- node.typeParameters = null;
- return this.finishNode(node, "FunctionTypeAnnotation");
-
- case _types.types.string:
- return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation");
-
- case _types.types._true:
- case _types.types._false:
- node.value = this.match(_types.types._true);
- this.next();
- return this.finishNode(node, "BooleanLiteralTypeAnnotation");
-
- case _types.types.plusMin:
- if (this.state.value === "-") {
- this.next();
-
- if (this.match(_types.types.num)) {
- return this.parseLiteral(-this.state.value, "NumberLiteralTypeAnnotation", node.start, node.loc.start);
- }
-
- if (this.match(_types.types.bigint)) {
- return this.parseLiteral(-this.state.value, "BigIntLiteralTypeAnnotation", node.start, node.loc.start);
- }
-
- throw this.raise(this.state.start, `Unexpected token, expected "number" or "bigint"`);
- }
-
- this.unexpected();
-
- case _types.types.num:
- return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation");
-
- case _types.types.bigint:
- return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation");
-
- case _types.types._void:
- this.next();
- return this.finishNode(node, "VoidTypeAnnotation");
-
- case _types.types._null:
- this.next();
- return this.finishNode(node, "NullLiteralTypeAnnotation");
-
- case _types.types._this:
- this.next();
- return this.finishNode(node, "ThisTypeAnnotation");
-
- case _types.types.star:
- this.next();
- return this.finishNode(node, "ExistsTypeAnnotation");
-
- default:
- if (this.state.type.keyword === "typeof") {
- return this.flowParseTypeofType();
- } else if (this.state.type.keyword) {
- const label = this.state.type.label;
- this.next();
- return super.createIdentifier(node, label);
- }
-
- }
-
- throw this.unexpected();
- }
-
- flowParsePostfixType() {
- const startPos = this.state.start,
- startLoc = this.state.startLoc;
- let type = this.flowParsePrimaryType();
-
- while (this.match(_types.types.bracketL) && !this.canInsertSemicolon()) {
- const node = this.startNodeAt(startPos, startLoc);
- node.elementType = type;
- this.expect(_types.types.bracketL);
- this.expect(_types.types.bracketR);
- type = this.finishNode(node, "ArrayTypeAnnotation");
- }
-
- return type;
- }
-
- flowParsePrefixType() {
- const node = this.startNode();
-
- if (this.eat(_types.types.question)) {
- node.typeAnnotation = this.flowParsePrefixType();
- return this.finishNode(node, "NullableTypeAnnotation");
- } else {
- return this.flowParsePostfixType();
- }
- }
-
- flowParseAnonFunctionWithoutParens() {
- const param = this.flowParsePrefixType();
-
- if (!this.state.noAnonFunctionType && this.eat(_types.types.arrow)) {
- const node = this.startNodeAt(param.start, param.loc.start);
- node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];
- node.rest = null;
- node.returnType = this.flowParseType();
- node.typeParameters = null;
- return this.finishNode(node, "FunctionTypeAnnotation");
- }
-
- return param;
- }
-
- flowParseIntersectionType() {
- const node = this.startNode();
- this.eat(_types.types.bitwiseAND);
- const type = this.flowParseAnonFunctionWithoutParens();
- node.types = [type];
-
- while (this.eat(_types.types.bitwiseAND)) {
- node.types.push(this.flowParseAnonFunctionWithoutParens());
- }
-
- return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation");
- }
-
- flowParseUnionType() {
- const node = this.startNode();
- this.eat(_types.types.bitwiseOR);
- const type = this.flowParseIntersectionType();
- node.types = [type];
-
- while (this.eat(_types.types.bitwiseOR)) {
- 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;
- this.state.exprAllowed = this.state.exprAllowed || this.state.noAnonFunctionType;
- return type;
- }
-
- flowParseTypeOrImplicitInstantiation() {
- if (this.state.type === _types.types.name && 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(_types.types.colon)) {
- 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(_types.types.plusMin)) {
- 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(_types.types.colon)) {
- 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.match(_types.types.name) && this.state.value === "interface") {
- const node = this.startNode();
- this.next();
- return this.flowParseInterface(node);
- } else if (this.shouldParseEnums() && this.isContextual("enum")) {
- const node = this.startNode();
- this.next();
- return this.flowParseEnumDeclaration(node);
- } else {
- 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(_types.types._class) || this.match(_types.types.name) || this.match(_types.types._function) || this.match(_types.types._var) || this.match(_types.types._export)) {
- return this.flowParseDeclare(node);
- }
- } else if (this.match(_types.types.name)) {
- 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() {
- return this.isContextual("type") || this.isContextual("interface") || this.isContextual("opaque") || this.shouldParseEnums() && this.isContextual("enum") || super.shouldParseExportDeclaration();
- }
-
- isExportDefaultSpecifier() {
- if (this.match(_types.types.name) && (this.state.value === "type" || this.state.value === "interface" || this.state.value === "opaque" || this.shouldParseEnums() && this.state.value === "enum")) {
- return false;
- }
-
- return super.isExportDefaultSpecifier();
- }
-
- parseExportDefaultExpression() {
- if (this.shouldParseEnums() && this.isContextual("enum")) {
- const node = this.startNode();
- this.next();
- return this.flowParseEnumDeclaration(node);
- }
-
- return super.parseExportDefaultExpression();
- }
-
- parseConditional(expr, noIn, startPos, startLoc, refNeedsArrowPos) {
- if (!this.match(_types.types.question)) return expr;
-
- if (refNeedsArrowPos) {
- const result = this.tryParse(() => super.parseConditional(expr, noIn, startPos, startLoc));
-
- if (!result.node) {
- refNeedsArrowPos.start = result.error.pos || this.state.start;
- return expr;
- }
-
- if (result.error) this.state = result.failState;
- return result.node;
- }
-
- this.expect(_types.types.question);
- 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, "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.");
- }
-
- if (failed && valid.length === 1) {
- this.state = state;
- this.state.noArrowAt = noArrowAt.concat(valid[0].start);
- ({
- consequent,
- failed
- } = this.tryParseConditionalConsequent());
- }
- }
-
- this.getArrowLikeExpressions(consequent, true);
- this.state.noArrowAt = originalNoArrowAt;
- this.expect(_types.types.colon);
- node.test = expr;
- node.consequent = consequent;
- node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(noIn, undefined, undefined, undefined));
- return this.finishNode(node, "ConditionalExpression");
- }
-
- tryParseConditionalConsequent() {
- this.state.noArrowParamsConversionAt.push(this.state.start);
- const consequent = this.parseMaybeAssign();
- const failed = !this.match(_types.types.colon);
- 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);
- this.scope.enter((0, _scopeflags.functionFlags)(false, false) | _scopeflags.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(_types.types.question)) {
- node.optional = true;
- this.resetEndLocation(node);
- }
-
- if (this.match(_types.types.colon)) {
- 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("type")) {
- node.exportKind = "type";
- const declarationNode = this.startNode();
- this.next();
-
- if (this.match(_types.types.braceL)) {
- node.specifiers = this.parseExportSpecifiers();
- this.parseExportFrom(node);
- return null;
- } else {
- return this.flowParseTypeAlias(declarationNode);
- }
- } else if (this.isContextual("opaque")) {
- node.exportKind = "type";
- const declarationNode = this.startNode();
- this.next();
- return this.flowParseOpaqueType(declarationNode, false);
- } else if (this.isContextual("interface")) {
- node.exportKind = "type";
- const declarationNode = this.startNode();
- this.next();
- return this.flowParseInterface(declarationNode);
- } else if (this.shouldParseEnums() && this.isContextual("enum")) {
- 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("type") && this.lookahead().type === _types.types.star) {
- 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.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterDeclaration();
- }
- }
-
- getTokenFromCode(code) {
- const next = this.input.charCodeAt(this.state.pos + 1);
-
- if (code === 123 && next === 124) {
- return this.finishOp(_types.types.braceBarL, 2);
- } else if (this.state.inType && (code === 62 || code === 60)) {
- return this.finishOp(_types.types.relational, 1);
- } else if ((0, _identifier.isIteratorStart)(code, next)) {
- this.state.isIterator = true;
- return super.readWord();
- } else {
- return super.getTokenFromCode(code);
- }
- }
-
- isAssignable(node, isBinding) {
- switch (node.type) {
- case "Identifier":
- case "ObjectPattern":
- case "ArrayPattern":
- case "AssignmentPattern":
- 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 => this.isAssignable(element));
-
- case "AssignmentExpression":
- return node.operator === "=";
-
- case "ParenthesizedExpression":
- case "TypeCastExpression":
- return this.isAssignable(node.expression);
-
- case "MemberExpression":
- case "OptionalMemberExpression":
- return !isBinding;
-
- default:
- return false;
- }
- }
-
- toAssignable(node) {
- if (node.type === "TypeCastExpression") {
- return super.toAssignable(this.typeCastToParameter(node));
- } else {
- return super.toAssignable(node);
- }
- }
-
- toAssignableList(exprList, trailingCommaPos) {
- for (let i = 0; i < exprList.length; i++) {
- const expr = exprList[i];
-
- if (expr && expr.type === "TypeCastExpression") {
- exprList[i] = this.typeCastToParameter(expr);
- }
- }
-
- return super.toAssignableList(exprList, trailingCommaPos);
- }
-
- toReferencedList(exprList, isParenthesizedExpr) {
- for (let i = 0; i < exprList.length; i++) {
- const expr = exprList[i];
-
- if (expr && expr.type === "TypeCastExpression" && (!expr.extra || !expr.extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) {
- this.raise(expr.typeAnnotation.start, "The type cast expression is expected to be wrapped with parenthesis");
- }
- }
-
- return exprList;
- }
-
- checkLVal(expr, bindingType = _scopeflags.BIND_NONE, checkClashes, contextDescription) {
- if (expr.type !== "TypeCastExpression") {
- return super.checkLVal(expr, bindingType, checkClashes, contextDescription);
- }
- }
-
- parseClassProperty(node) {
- if (this.match(_types.types.colon)) {
- node.typeAnnotation = this.flowParseTypeAnnotation();
- }
-
- return super.parseClassProperty(node);
- }
-
- parseClassPrivateProperty(node) {
- if (this.match(_types.types.colon)) {
- node.typeAnnotation = this.flowParseTypeAnnotation();
- }
-
- return super.parseClassPrivateProperty(node);
- }
-
- isClassMethod() {
- return this.isRelational("<") || super.isClassMethod();
- }
-
- isClassProperty() {
- return this.match(_types.types.colon) || super.isClassProperty();
- }
-
- isNonstaticConstructor(method) {
- return !this.match(_types.types.colon) && super.isNonstaticConstructor(method);
- }
-
- pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
- if (method.variance) {
- this.unexpected(method.variance.start);
- }
-
- delete method.variance;
-
- if (this.isRelational("<")) {
- method.typeParameters = this.flowParseTypeParameterDeclaration();
- }
-
- super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);
- }
-
- pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
- if (method.variance) {
- this.unexpected(method.variance.start);
- }
-
- delete method.variance;
-
- if (this.isRelational("<")) {
- method.typeParameters = this.flowParseTypeParameterDeclaration();
- }
-
- super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);
- }
-
- parseClassSuper(node) {
- super.parseClassSuper(node);
-
- if (node.superClass && this.isRelational("<")) {
- node.superTypeParameters = this.flowParseTypeParameterInstantiation();
- }
-
- if (this.isContextual("implements")) {
- this.next();
- const implemented = node.implements = [];
-
- do {
- const node = this.startNode();
- node.id = this.flowParseRestrictedIdentifier(true);
-
- if (this.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterInstantiation();
- } else {
- node.typeParameters = null;
- }
-
- implemented.push(this.finishNode(node, "ClassImplements"));
- } while (this.eat(_types.types.comma));
- }
- }
-
- parsePropertyName(node, isPrivateNameAllowed) {
- const variance = this.flowParseVariance();
- const key = super.parsePropertyName(node, isPrivateNameAllowed);
- node.variance = variance;
- return key;
- }
-
- parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refExpressionErrors, containsEsc) {
- if (prop.variance) {
- this.unexpected(prop.variance.start);
- }
-
- delete prop.variance;
- let typeParameters;
-
- if (this.isRelational("<")) {
- typeParameters = this.flowParseTypeParameterDeclaration();
- if (!this.match(_types.types.parenL)) this.unexpected();
- }
-
- super.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refExpressionErrors, containsEsc);
-
- if (typeParameters) {
- (prop.value || prop).typeParameters = typeParameters;
- }
- }
-
- parseAssignableListItemTypes(param) {
- if (this.eat(_types.types.question)) {
- if (param.type !== "Identifier") {
- this.raise(param.start, "A binding pattern parameter cannot be optional in an implementation signature.");
- }
-
- param.optional = true;
- }
-
- if (this.match(_types.types.colon)) {
- param.typeAnnotation = this.flowParseTypeAnnotation();
- }
-
- 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, "Type annotations must come before default assignments, " + "e.g. instead of `age = 25: number` use `age: number = 25`");
- }
-
- return node;
- }
-
- shouldParseDefaultImport(node) {
- if (!hasTypeImportKind(node)) {
- return super.shouldParseDefaultImport(node);
- }
-
- return isMaybeDefaultImport(this.state);
- }
-
- parseImportSpecifierLocal(node, specifier, type, contextDescription) {
- specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier();
- this.checkLVal(specifier.local, _scopeflags.BIND_LEXICAL, undefined, contextDescription);
- node.specifiers.push(this.finishNode(specifier, type));
- }
-
- maybeParseDefaultImportSpecifier(node) {
- node.importKind = "value";
- let kind = null;
-
- if (this.match(_types.types._typeof)) {
- kind = "typeof";
- } else if (this.isContextual("type")) {
- kind = "type";
- }
-
- if (kind) {
- const lh = this.lookahead();
-
- if (kind === "type" && lh.type === _types.types.star) {
- this.unexpected(lh.start);
- }
-
- if (isMaybeDefaultImport(lh) || lh.type === _types.types.braceL || lh.type === _types.types.star) {
- this.next();
- node.importKind = kind;
- }
- }
-
- return super.maybeParseDefaultImportSpecifier(node);
- }
-
- parseImportSpecifier(node) {
- const specifier = this.startNode();
- const firstIdentLoc = this.state.start;
- const firstIdent = this.parseIdentifier(true);
- let specifierTypeKind = null;
-
- if (firstIdent.name === "type") {
- specifierTypeKind = "type";
- } else if (firstIdent.name === "typeof") {
- specifierTypeKind = "typeof";
- }
-
- let isBinding = false;
-
- if (this.isContextual("as") && !this.isLookaheadContextual("as")) {
- const as_ident = this.parseIdentifier(true);
-
- if (specifierTypeKind !== null && !this.match(_types.types.name) && !this.state.type.keyword) {
- specifier.imported = as_ident;
- specifier.importKind = specifierTypeKind;
- specifier.local = as_ident.__clone();
- } else {
- specifier.imported = firstIdent;
- specifier.importKind = null;
- specifier.local = this.parseIdentifier();
- }
- } else if (specifierTypeKind !== null && (this.match(_types.types.name) || this.state.type.keyword)) {
- specifier.imported = this.parseIdentifier(true);
- specifier.importKind = specifierTypeKind;
-
- if (this.eatContextual("as")) {
- specifier.local = this.parseIdentifier();
- } else {
- isBinding = true;
- specifier.local = specifier.imported.__clone();
- }
- } else {
- isBinding = true;
- specifier.imported = firstIdent;
- specifier.importKind = null;
- specifier.local = specifier.imported.__clone();
- }
-
- const nodeIsTypeImport = hasTypeImportKind(node);
- const specifierIsTypeImport = hasTypeImportKind(specifier);
-
- if (nodeIsTypeImport && specifierIsTypeImport) {
- this.raise(firstIdentLoc, "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");
- }
-
- if (nodeIsTypeImport || specifierIsTypeImport) {
- this.checkReservedType(specifier.local.name, specifier.local.start, true);
- }
-
- if (isBinding && !nodeIsTypeImport && !specifierIsTypeImport) {
- this.checkReservedWord(specifier.local.name, specifier.start, true, true);
- }
-
- this.checkLVal(specifier.local, _scopeflags.BIND_LEXICAL, undefined, "import specifier");
- node.specifiers.push(this.finishNode(specifier, "ImportSpecifier"));
- }
-
- parseFunctionParams(node, allowModifiers) {
- const kind = node.kind;
-
- if (kind !== "get" && kind !== "set" && this.isRelational("<")) {
- node.typeParameters = this.flowParseTypeParameterDeclaration();
- }
-
- super.parseFunctionParams(node, allowModifiers);
- }
-
- parseVarId(decl, kind) {
- super.parseVarId(decl, kind);
-
- if (this.match(_types.types.colon)) {
- decl.id.typeAnnotation = this.flowParseTypeAnnotation();
- this.resetEndLocation(decl.id);
- }
- }
-
- parseAsyncArrowFromCallExpression(node, call) {
- if (this.match(_types.types.colon)) {
- 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(_types.types.colon) || super.shouldParseAsyncArrow();
- }
-
- parseMaybeAssign(noIn, refExpressionErrors, afterLeftParse, refNeedsArrowPos) {
- let state = null;
- let jsx;
-
- if (this.hasPlugin("jsx") && (this.match(_types.types.jsxTagStart) || this.isRelational("<"))) {
- state = this.state.clone();
- jsx = this.tryParse(() => super.parseMaybeAssign(noIn, refExpressionErrors, afterLeftParse, refNeedsArrowPos), state);
- if (!jsx.error) return jsx.node;
- const {
- context
- } = this.state;
-
- if (context[context.length - 1] === _context.types.j_oTag) {
- context.length -= 2;
- } else if (context[context.length - 1] === _context.types.j_expr) {
- context.length -= 1;
- }
- }
-
- if (jsx && jsx.error || this.isRelational("<")) {
- state = state || this.state.clone();
- let typeParameters;
- const arrow = this.tryParse(() => {
- typeParameters = this.flowParseTypeParameterDeclaration();
- const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => super.parseMaybeAssign(noIn, refExpressionErrors, afterLeftParse, refNeedsArrowPos));
- arrowExpression.typeParameters = typeParameters;
- this.resetStartLocationFromNode(arrowExpression, typeParameters);
- return arrowExpression;
- }, state);
- const arrowExpression = arrow.node && arrow.node.type === "ArrowFunctionExpression" ? arrow.node : null;
- if (!arrow.error && arrowExpression) return arrowExpression;
-
- if (jsx && jsx.node) {
- this.state = jsx.failState;
- return jsx.node;
- }
-
- if (arrowExpression) {
- this.state = arrow.failState;
- return arrowExpression;
- }
-
- if (jsx && jsx.thrown) throw jsx.error;
- if (arrow.thrown) throw arrow.error;
- throw this.raise(typeParameters.start, "Expected an arrow function after this type parameter declaration");
- }
-
- return super.parseMaybeAssign(noIn, refExpressionErrors, afterLeftParse, refNeedsArrowPos);
- }
-
- parseArrow(node) {
- if (this.match(_types.types.colon)) {
- 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(_types.types.arrow)) 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() {
- return this.match(_types.types.colon) || super.shouldParseArrow();
- }
-
- 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;
- }
-
- 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(_types.types.parenR, false);
- base = this.finishNode(node, "CallExpression");
- } else if (base.type === "Identifier" && base.name === "async" && this.isRelational("<")) {
- 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(_types.types.questionDot) && this.isLookaheadRelational("<")) {
- 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(_types.types.parenL);
- node.arguments = this.parseCallExpressionArguments(_types.types.parenR, false);
- node.optional = true;
- return this.finishCallExpression(node, true);
- } else if (!noCalls && this.shouldParseTypes() && this.isRelational("<")) {
- const node = this.startNodeAt(startPos, startLoc);
- node.callee = base;
- const result = this.tryParse(() => {
- node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew();
- this.expect(_types.types.parenL);
- node.arguments = this.parseCallExpressionArguments(_types.types.parenR, 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.isRelational("<")) {
- 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(_types.types.braceBarR, 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, "Unterminated flow-comment");
- }
-
- return fileNode;
- }
-
- skipBlockComment() {
- if (this.hasPlugin("flowComments") && this.skipFlowComment()) {
- if (this.state.hasFlowComment) {
- this.unexpected(null, "Cannot have a flow comment inside another flow comment");
- }
-
- 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, "Unterminated comment");
- }
-
- this.state.pos = end + 3;
- 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, "Unterminated comment");
- }
- }
-
- flowEnumErrorBooleanMemberNotInitialized(pos, {
- enumName,
- memberName
- }) {
- this.raise(pos, `Boolean enum members need to be initialized. Use either \`${memberName} = true,\` ` + `or \`${memberName} = false,\` in enum \`${enumName}\`.`);
- }
-
- flowEnumErrorInvalidMemberName(pos, {
- enumName,
- memberName
- }) {
- const suggestion = memberName[0].toUpperCase() + memberName.slice(1);
- this.raise(pos, `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using ` + `\`${memberName}\`, consider using \`${suggestion}\`, in enum \`${enumName}\`.`);
- }
-
- flowEnumErrorDuplicateMemberName(pos, {
- enumName,
- memberName
- }) {
- this.raise(pos, `Enum member names need to be unique, but the name \`${memberName}\` has already been used ` + `before in enum \`${enumName}\`.`);
- }
-
- flowEnumErrorInconsistentMemberValues(pos, {
- enumName
- }) {
- this.raise(pos, `Enum \`${enumName}\` has inconsistent member initializers. Either use no initializers, or ` + `consistently use literals (either booleans, numbers, or strings) for all member initializers.`);
- }
-
- flowEnumErrorInvalidExplicitType(pos, {
- enumName,
- suppliedType
- }) {
- const suggestion = `Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in ` + `enum \`${enumName}\`.`;
- const message = suppliedType === null ? `Supplied enum type is not valid. ${suggestion}` : `Enum type \`${suppliedType}\` is not valid. ${suggestion}`;
- return this.raise(pos, message);
- }
-
- flowEnumErrorInvalidMemberInitializer(pos, {
- enumName,
- explicitType,
- memberName
- }) {
- let message = null;
-
- switch (explicitType) {
- case "boolean":
- case "number":
- case "string":
- message = `Enum \`${enumName}\` has type \`${explicitType}\`, so the initializer of ` + `\`${memberName}\` needs to be a ${explicitType} literal.`;
- break;
-
- case "symbol":
- message = `Symbol enum members cannot be initialized. Use \`${memberName},\` in ` + `enum \`${enumName}\`.`;
- break;
-
- default:
- message = `The enum member initializer for \`${memberName}\` needs to be a literal (either ` + `a boolean, number, or string) in enum \`${enumName}\`.`;
- }
-
- return this.raise(pos, message);
- }
-
- flowEnumErrorNumberMemberNotInitialized(pos, {
- enumName,
- memberName
- }) {
- this.raise(pos, `Number enum members need to be initialized, e.g. \`${memberName} = 1\` in enum \`${enumName}\`.`);
- }
-
- flowEnumErrorStringMemberInconsistentlyInitailized(pos, {
- enumName
- }) {
- this.raise(pos, `String enum members need to consistently either all use initializers, or use no initializers, ` + `in enum \`${enumName}\`.`);
- }
-
- flowEnumMemberInit() {
- const startPos = this.state.start;
-
- const endOfInit = () => this.match(_types.types.comma) || this.match(_types.types.braceR);
-
- switch (this.state.type) {
- case _types.types.num:
- {
- const literal = this.parseLiteral(this.state.value, "NumericLiteral");
-
- if (endOfInit()) {
- return {
- type: "number",
- pos: literal.start,
- value: literal
- };
- }
-
- return {
- type: "invalid",
- pos: startPos
- };
- }
-
- case _types.types.string:
- {
- const literal = this.parseLiteral(this.state.value, "StringLiteral");
-
- if (endOfInit()) {
- return {
- type: "string",
- pos: literal.start,
- value: literal
- };
- }
-
- return {
- type: "invalid",
- pos: startPos
- };
- }
-
- case _types.types._true:
- case _types.types._false:
- {
- const literal = this.parseBooleanLiteral();
-
- 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(_types.types.eq) ? 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: []
- };
-
- while (!this.match(_types.types.braceR)) {
- 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(_types.types.braceR)) {
- this.expect(_types.types.comma);
- }
- }
-
- return members;
- }
-
- flowEnumStringMembers(initializedMembers, defaultedMembers, {
- enumName
- }) {
- if (initializedMembers.length === 0) {
- return defaultedMembers;
- } else if (defaultedMembers.length === 0) {
- return initializedMembers;
- } else if (defaultedMembers.length > initializedMembers.length) {
- for (let _i = 0; _i < initializedMembers.length; _i++) {
- const member = initializedMembers[_i];
- this.flowEnumErrorStringMemberInconsistentlyInitailized(member.start, {
- enumName
- });
- }
-
- return defaultedMembers;
- } else {
- for (let _i2 = 0; _i2 < defaultedMembers.length; _i2++) {
- const member = defaultedMembers[_i2];
- this.flowEnumErrorStringMemberInconsistentlyInitailized(member.start, {
- enumName
- });
- }
-
- return initializedMembers;
- }
- }
-
- flowEnumParseExplicitType({
- enumName
- }) {
- if (this.eatContextual("of")) {
- if (!this.match(_types.types.name)) {
- 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(_types.types.braceL);
- const members = this.flowEnumMembers({
- enumName,
- explicitType
- });
-
- switch (explicitType) {
- case "boolean":
- node.explicitType = true;
- node.members = members.booleanMembers;
- this.expect(_types.types.braceR);
- return this.finishNode(node, "EnumBooleanBody");
-
- case "number":
- node.explicitType = true;
- node.members = members.numberMembers;
- this.expect(_types.types.braceR);
- return this.finishNode(node, "EnumNumberBody");
-
- case "string":
- node.explicitType = true;
- node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {
- enumName
- });
- this.expect(_types.types.braceR);
- return this.finishNode(node, "EnumStringBody");
-
- case "symbol":
- node.members = members.defaultedMembers;
- this.expect(_types.types.braceR);
- return this.finishNode(node, "EnumSymbolBody");
-
- default:
- {
- const empty = () => {
- node.members = [];
- this.expect(_types.types.braceR);
- 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(_types.types.braceR);
- return this.finishNode(node, "EnumStringBody");
- } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {
- for (let _i3 = 0, _members$defaultedMem = members.defaultedMembers; _i3 < _members$defaultedMem.length; _i3++) {
- const member = _members$defaultedMem[_i3];
- this.flowEnumErrorBooleanMemberNotInitialized(member.start, {
- enumName,
- memberName: member.id.name
- });
- }
-
- node.members = members.booleanMembers;
- this.expect(_types.types.braceR);
- return this.finishNode(node, "EnumBooleanBody");
- } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {
- for (let _i4 = 0, _members$defaultedMem2 = members.defaultedMembers; _i4 < _members$defaultedMem2.length; _i4++) {
- const member = _members$defaultedMem2[_i4];
- this.flowEnumErrorNumberMemberNotInitialized(member.start, {
- enumName,
- memberName: member.id.name
- });
- }
-
- node.members = members.numberMembers;
- this.expect(_types.types.braceR);
- 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");
- }
-
-};
-
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/plugins/jsx/index.js b/assets/node_modules/@babel/parser/lib/plugins/jsx/index.js
deleted file mode 100644
index 37ae0f0..0000000
--- a/assets/node_modules/@babel/parser/lib/plugins/jsx/index.js
+++ /dev/null
@@ -1,516 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _xhtml = _interopRequireDefault(require("./xhtml"));
-
-var _types = require("../../tokenizer/types");
-
-var _context = require("../../tokenizer/context");
-
-var N = _interopRequireWildcard(require("../../types"));
-
-var _identifier = require("../../util/identifier");
-
-var _whitespace = require("../../util/whitespace");
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const HEX_NUMBER = /^[\da-fA-F]+$/;
-const DECIMAL_NUMBER = /^\d+$/;
-_context.types.j_oTag = new _context.TokContext("<tag", false);
-_context.types.j_cTag = new _context.TokContext("</tag", false);
-_context.types.j_expr = new _context.TokContext("<tag>...</tag>", true, true);
-_types.types.jsxName = new _types.TokenType("jsxName");
-_types.types.jsxText = new _types.TokenType("jsxText", {
- beforeExpr: true
-});
-_types.types.jsxTagStart = new _types.TokenType("jsxTagStart", {
- startsExpr: true
-});
-_types.types.jsxTagEnd = new _types.TokenType("jsxTagEnd");
-
-_types.types.jsxTagStart.updateContext = function () {
- this.state.context.push(_context.types.j_expr);
- this.state.context.push(_context.types.j_oTag);
- this.state.exprAllowed = false;
-};
-
-_types.types.jsxTagEnd.updateContext = function (prevType) {
- const out = this.state.context.pop();
-
- if (out === _context.types.j_oTag && prevType === _types.types.slash || out === _context.types.j_cTag) {
- this.state.context.pop();
- this.state.exprAllowed = this.curContext() === _context.types.j_expr;
- } else {
- this.state.exprAllowed = 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 _default = 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, "Unterminated JSX contents");
- }
-
- 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.exprAllowed) {
- ++this.state.pos;
- return this.finishToken(_types.types.jsxTagStart);
- }
-
- return super.getTokenFromCode(ch);
- }
-
- out += this.input.slice(chunkStart, this.state.pos);
- return this.finishToken(_types.types.jsxText, out);
-
- case 38:
- out += this.input.slice(chunkStart, this.state.pos);
- out += this.jsxReadEntity();
- chunkStart = this.state.pos;
- break;
-
- default:
- if ((0, _whitespace.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, "Unterminated string constant");
- }
-
- 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 ((0, _whitespace.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(_types.types.string, 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 = _xhtml.default[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 ((0, _identifier.isIdentifierChar)(ch) || ch === 45);
-
- return this.finishToken(_types.types.jsxName, this.input.slice(start, this.state.pos));
- }
-
- jsxParseIdentifier() {
- const node = this.startNode();
-
- if (this.match(_types.types.jsxName)) {
- node.name = this.state.value;
- } else if (this.state.type.keyword) {
- node.name = this.state.type.keyword;
- } 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(_types.types.colon)) 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(_types.types.dot)) {
- 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 _types.types.braceL:
- node = this.startNode();
- this.next();
- node = this.jsxParseExpressionContainer(node);
-
- if (node.expression.type === "JSXEmptyExpression") {
- this.raise(node.start, "JSX attributes must only be assigned a non-empty expression");
- }
-
- return node;
-
- case _types.types.jsxTagStart:
- case _types.types.string:
- return this.parseExprAtom();
-
- default:
- throw this.raise(this.state.start, "JSX value should be either an expression or a quoted JSX text");
- }
- }
-
- 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(_types.types.braceR);
- return this.finishNode(node, "JSXSpreadChild");
- }
-
- jsxParseExpressionContainer(node) {
- if (this.match(_types.types.braceR)) {
- node.expression = this.jsxParseEmptyExpression();
- } else {
- node.expression = this.parseExpression();
- }
-
- this.expect(_types.types.braceR);
- return this.finishNode(node, "JSXExpressionContainer");
- }
-
- jsxParseAttribute() {
- const node = this.startNode();
-
- if (this.eat(_types.types.braceL)) {
- this.expect(_types.types.ellipsis);
- node.argument = this.parseMaybeAssign();
- this.expect(_types.types.braceR);
- return this.finishNode(node, "JSXSpreadAttribute");
- }
-
- node.name = this.jsxParseNamespacedName();
- node.value = this.eat(_types.types.eq) ? this.jsxParseAttributeValue() : null;
- return this.finishNode(node, "JSXAttribute");
- }
-
- jsxParseOpeningElementAt(startPos, startLoc) {
- const node = this.startNodeAt(startPos, startLoc);
-
- if (this.match(_types.types.jsxTagEnd)) {
- this.expect(_types.types.jsxTagEnd);
- return this.finishNode(node, "JSXOpeningFragment");
- }
-
- node.name = this.jsxParseElementName();
- return this.jsxParseOpeningElementAfterName(node);
- }
-
- jsxParseOpeningElementAfterName(node) {
- const attributes = [];
-
- while (!this.match(_types.types.slash) && !this.match(_types.types.jsxTagEnd)) {
- attributes.push(this.jsxParseAttribute());
- }
-
- node.attributes = attributes;
- node.selfClosing = this.eat(_types.types.slash);
- this.expect(_types.types.jsxTagEnd);
- return this.finishNode(node, "JSXOpeningElement");
- }
-
- jsxParseClosingElementAt(startPos, startLoc) {
- const node = this.startNodeAt(startPos, startLoc);
-
- if (this.match(_types.types.jsxTagEnd)) {
- this.expect(_types.types.jsxTagEnd);
- return this.finishNode(node, "JSXClosingFragment");
- }
-
- node.name = this.jsxParseElementName();
- this.expect(_types.types.jsxTagEnd);
- 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 _types.types.jsxTagStart:
- startPos = this.state.start;
- startLoc = this.state.startLoc;
- this.next();
-
- if (this.eat(_types.types.slash)) {
- closingElement = this.jsxParseClosingElementAt(startPos, startLoc);
- break contents;
- }
-
- children.push(this.jsxParseElementAt(startPos, startLoc));
- break;
-
- case _types.types.jsxText:
- children.push(this.parseExprAtom());
- break;
-
- case _types.types.braceL:
- {
- const node = this.startNode();
- this.next();
-
- if (this.match(_types.types.ellipsis)) {
- 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, "Expected corresponding JSX closing tag for <>");
- } else if (!isFragment(openingElement) && isFragment(closingElement)) {
- this.raise(closingElement.start, "Expected corresponding JSX closing tag for <" + getQualifiedJSXName(openingElement.name) + ">");
- } else if (!isFragment(openingElement) && !isFragment(closingElement)) {
- if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {
- this.raise(closingElement.start, "Expected corresponding JSX closing tag for <" + getQualifiedJSXName(openingElement.name) + ">");
- }
- }
- }
-
- if (isFragment(openingElement)) {
- node.openingFragment = openingElement;
- node.closingFragment = closingElement;
- } else {
- node.openingElement = openingElement;
- node.closingElement = closingElement;
- }
-
- node.children = children;
-
- if (this.isRelational("<")) {
- throw this.raise(this.state.start, "Adjacent JSX elements must be wrapped in an enclosing tag. " + "Did you want a JSX fragment <>...</>?");
- }
-
- 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(_types.types.jsxText)) {
- return this.parseLiteral(this.state.value, "JSXText");
- } else if (this.match(_types.types.jsxTagStart)) {
- return this.jsxParseElement();
- } else if (this.isRelational("<") && this.input.charCodeAt(this.state.pos) !== 33) {
- this.finishToken(_types.types.jsxTagStart);
- return this.jsxParseElement();
- } else {
- return super.parseExprAtom(refExpressionErrors);
- }
- }
-
- getTokenFromCode(code) {
- if (this.state.inPropertyName) return super.getTokenFromCode(code);
- const context = this.curContext();
-
- if (context === _context.types.j_expr) {
- return this.jsxReadToken();
- }
-
- if (context === _context.types.j_oTag || context === _context.types.j_cTag) {
- if ((0, _identifier.isIdentifierStart)(code)) {
- return this.jsxReadWord();
- }
-
- if (code === 62) {
- ++this.state.pos;
- return this.finishToken(_types.types.jsxTagEnd);
- }
-
- if ((code === 34 || code === 39) && context === _context.types.j_oTag) {
- return this.jsxReadString(code);
- }
- }
-
- if (code === 60 && this.state.exprAllowed && this.input.charCodeAt(this.state.pos + 1) !== 33) {
- ++this.state.pos;
- return this.finishToken(_types.types.jsxTagStart);
- }
-
- return super.getTokenFromCode(code);
- }
-
- updateContext(prevType) {
- if (this.match(_types.types.braceL)) {
- const curContext = this.curContext();
-
- if (curContext === _context.types.j_oTag) {
- this.state.context.push(_context.types.braceExpression);
- } else if (curContext === _context.types.j_expr) {
- this.state.context.push(_context.types.templateQuasi);
- } else {
- super.updateContext(prevType);
- }
-
- this.state.exprAllowed = true;
- } else if (this.match(_types.types.slash) && prevType === _types.types.jsxTagStart) {
- this.state.context.length -= 2;
- this.state.context.push(_context.types.j_cTag);
- this.state.exprAllowed = false;
- } else {
- return super.updateContext(prevType);
- }
- }
-
-};
-
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/plugins/jsx/xhtml.js b/assets/node_modules/@babel/parser/lib/plugins/jsx/xhtml.js
deleted file mode 100644
index be4a35e..0000000
--- a/assets/node_modules/@babel/parser/lib/plugins/jsx/xhtml.js
+++ /dev/null
@@ -1,263 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-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"
-};
-var _default = entities;
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/plugins/placeholders.js b/assets/node_modules/@babel/parser/lib/plugins/placeholders.js
deleted file mode 100644
index 4fa2be2..0000000
--- a/assets/node_modules/@babel/parser/lib/plugins/placeholders.js
+++ /dev/null
@@ -1,204 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _types = require("../tokenizer/types");
-
-var N = _interopRequireWildcard(require("../types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-_types.types.placeholder = new _types.TokenType("%%", {
- startsExpr: true
-});
-
-var _default = superClass => class extends superClass {
- parsePlaceholder(expectedNode) {
- if (this.match(_types.types.placeholder)) {
- 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(_types.types.placeholder);
- 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(_types.types.placeholder, 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);
- }
-
- 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(_types.types.colon)) {
- 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 placeholder = this.parsePlaceholder("Identifier");
-
- if (placeholder) {
- if (this.match(_types.types._extends) || this.match(_types.types.placeholder) || this.match(_types.types.braceL)) {
- 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, "A class name is required");
- }
- } else {
- this.parseClassId(node, isStatement, optionalId);
- }
-
- this.parseClassSuper(node);
- node.body = this.parsePlaceholder("ClassBody") || this.parseClassBody(!!node.superClass);
- return this.finishNode(node, type);
- }
-
- parseExport(node) {
- const placeholder = this.parsePlaceholder("Identifier");
- if (!placeholder) return super.parseExport(...arguments);
-
- if (!this.isContextual("from") && !this.match(_types.types.comma)) {
- 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);
- }
-
- maybeParseExportDefaultSpecifier(node) {
- if (node.specifiers && node.specifiers.length > 0) {
- return true;
- }
-
- return super.maybeParseExportDefaultSpecifier(...arguments);
- }
-
- checkExport(node) {
- const {
- specifiers
- } = node;
-
- if (specifiers && 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("from") && !this.match(_types.types.comma)) {
- 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(_types.types.comma)) {
- const hasStarImport = this.maybeParseStarImportSpecifier(node);
- if (!hasStarImport) this.parseNamedImportSpecifiers(node);
- }
-
- this.expectContextual("from");
- node.source = this.parseImportSource();
- this.semicolon();
- return this.finishNode(node, "ImportDeclaration");
- }
-
- parseImportSource() {
- return this.parsePlaceholder("StringLiteral") || super.parseImportSource(...arguments);
- }
-
-};
-
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/plugins/typescript/index.js b/assets/node_modules/@babel/parser/lib/plugins/typescript/index.js
deleted file mode 100644
index b996a54..0000000
--- a/assets/node_modules/@babel/parser/lib/plugins/typescript/index.js
+++ /dev/null
@@ -1,2076 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _types = require("../../tokenizer/types");
-
-var _context = require("../../tokenizer/context");
-
-var N = _interopRequireWildcard(require("../../types"));
-
-var _scopeflags = require("../../util/scopeflags");
-
-var _scope = _interopRequireDefault(require("./scope"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function nonNull(x) {
- if (x == null) {
- throw new Error(`Unexpected ${x} value.`);
- }
-
- return x;
-}
-
-function assert(x) {
- if (!x) {
- throw new Error("Assert fail");
- }
-}
-
-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;
- }
-}
-
-var _default = superClass => class extends superClass {
- getScopeHandler() {
- return _scope.default;
- }
-
- tsIsIdentifier() {
- return this.match(_types.types.name);
- }
-
- tsNextTokenCanFollowModifier() {
- this.next();
- return !this.hasPrecedingLineBreak() && !this.match(_types.types.parenL) && !this.match(_types.types.parenR) && !this.match(_types.types.colon) && !this.match(_types.types.eq) && !this.match(_types.types.question) && !this.match(_types.types.bang);
- }
-
- tsParseModifier(allowedModifiers) {
- if (!this.match(_types.types.name)) {
- return undefined;
- }
-
- const modifier = this.state.value;
-
- if (allowedModifiers.indexOf(modifier) !== -1 && this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {
- return modifier;
- }
-
- return undefined;
- }
-
- tsParseModifiers(allowedModifiers) {
- const modifiers = Object.create(null);
-
- while (true) {
- const startPos = this.state.start;
- const modifier = this.tsParseModifier(allowedModifiers);
- if (!modifier) break;
-
- if (Object.hasOwnProperty.call(modifiers, modifier)) {
- this.raise(startPos, `Duplicate modifier: '${modifier}'`);
- }
-
- modifiers[modifier] = true;
- }
-
- return modifiers;
- }
-
- tsIsListTerminator(kind) {
- switch (kind) {
- case "EnumMembers":
- case "TypeMembers":
- return this.match(_types.types.braceR);
-
- case "HeritageClauseElement":
- return this.match(_types.types.braceL);
-
- case "TupleElementTypes":
- return this.match(_types.types.bracketR);
-
- case "TypeParametersOrArguments":
- return this.isRelational(">");
- }
-
- throw new Error("Unreachable");
- }
-
- tsParseList(kind, parseElement) {
- const result = [];
-
- while (!this.tsIsListTerminator(kind)) {
- result.push(parseElement());
- }
-
- return result;
- }
-
- tsParseDelimitedList(kind, parseElement) {
- return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true));
- }
-
- tsParseDelimitedListWorker(kind, parseElement, expectSuccess) {
- const result = [];
-
- while (true) {
- if (this.tsIsListTerminator(kind)) {
- break;
- }
-
- const element = parseElement();
-
- if (element == null) {
- return undefined;
- }
-
- result.push(element);
-
- if (this.eat(_types.types.comma)) {
- continue;
- }
-
- if (this.tsIsListTerminator(kind)) {
- break;
- }
-
- if (expectSuccess) {
- this.expect(_types.types.comma);
- }
-
- return undefined;
- }
-
- return result;
- }
-
- tsParseBracketedList(kind, parseElement, bracket, skipFirstToken) {
- if (!skipFirstToken) {
- if (bracket) {
- this.expect(_types.types.bracketL);
- } else {
- this.expectRelational("<");
- }
- }
-
- const result = this.tsParseDelimitedList(kind, parseElement);
-
- if (bracket) {
- this.expect(_types.types.bracketR);
- } else {
- this.expectRelational(">");
- }
-
- return result;
- }
-
- tsParseImportType() {
- const node = this.startNode();
- this.expect(_types.types._import);
- this.expect(_types.types.parenL);
-
- if (!this.match(_types.types.string)) {
- this.raise(this.state.start, "Argument in a type import must be a string literal");
- }
-
- node.argument = this.parseExprAtom();
- this.expect(_types.types.parenR);
-
- if (this.eat(_types.types.dot)) {
- node.qualifier = this.tsParseEntityName(true);
- }
-
- if (this.isRelational("<")) {
- node.typeParameters = this.tsParseTypeArguments();
- }
-
- return this.finishNode(node, "TSImportType");
- }
-
- tsParseEntityName(allowReservedWords) {
- let entity = this.parseIdentifier();
-
- while (this.eat(_types.types.dot)) {
- 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.isRelational("<")) {
- 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);
- return this.finishNode(node, "TSTypePredicate");
- }
-
- tsParseThisTypeNode() {
- const node = this.startNode();
- this.next();
- return this.finishNode(node, "TSThisType");
- }
-
- tsParseTypeQuery() {
- const node = this.startNode();
- this.expect(_types.types._typeof);
-
- if (this.match(_types.types._import)) {
- node.exprName = this.tsParseImportType();
- } else {
- node.exprName = this.tsParseEntityName(true);
- }
-
- return this.finishNode(node, "TSTypeQuery");
- }
-
- tsParseTypeParameter() {
- const node = this.startNode();
- node.name = this.parseIdentifierName(node.start);
- node.constraint = this.tsEatThenParseType(_types.types._extends);
- node.default = this.tsEatThenParseType(_types.types.eq);
- return this.finishNode(node, "TSTypeParameter");
- }
-
- tsTryParseTypeParameters() {
- if (this.isRelational("<")) {
- return this.tsParseTypeParameters();
- }
- }
-
- tsParseTypeParameters() {
- const node = this.startNode();
-
- if (this.isRelational("<") || this.match(_types.types.jsxTagStart)) {
- this.next();
- } else {
- this.unexpected();
- }
-
- node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this), false, true);
- return this.finishNode(node, "TSTypeParameterDeclaration");
- }
-
- tsTryNextParseConstantContext() {
- if (this.lookahead().type === _types.types._const) {
- this.next();
- return this.tsParseTypeReference();
- }
-
- return null;
- }
-
- tsFillSignature(returnToken, signature) {
- const returnTokenRequired = returnToken === _types.types.arrow;
- signature.typeParameters = this.tsTryParseTypeParameters();
- this.expect(_types.types.parenL);
- 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(_types.types.parenR, 41).map(pattern => {
- if (pattern.type !== "Identifier" && pattern.type !== "RestElement" && pattern.type !== "ObjectPattern" && pattern.type !== "ArrayPattern") {
- this.raise(pattern.start, "Name in a signature must be an Identifier, ObjectPattern or ArrayPattern," + `instead got ${pattern.type}`);
- }
-
- return pattern;
- });
- }
-
- tsParseTypeMemberSemicolon() {
- if (!this.eat(_types.types.comma)) {
- this.semicolon();
- }
- }
-
- tsParseSignatureMember(kind, node) {
- this.tsFillSignature(_types.types.colon, node);
- this.tsParseTypeMemberSemicolon();
- return this.finishNode(node, kind);
- }
-
- tsIsUnambiguouslyIndexSignature() {
- this.next();
- return this.eat(_types.types.name) && this.match(_types.types.colon);
- }
-
- tsTryParseIndexSignature(node) {
- if (!(this.match(_types.types.bracketL) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) {
- return undefined;
- }
-
- this.expect(_types.types.bracketL);
- const id = this.parseIdentifier();
- id.typeAnnotation = this.tsParseTypeAnnotation();
- this.resetEndLocation(id);
- this.expect(_types.types.bracketR);
- 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(_types.types.question)) node.optional = true;
- const nodeAny = node;
-
- if (!readonly && (this.match(_types.types.parenL) || this.isRelational("<"))) {
- const method = nodeAny;
- this.tsFillSignature(_types.types.colon, method);
- this.tsParseTypeMemberSemicolon();
- 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(_types.types.parenL) || this.isRelational("<")) {
- return this.tsParseSignatureMember("TSCallSignatureDeclaration", node);
- }
-
- if (this.match(_types.types._new)) {
- const id = this.startNode();
- this.next();
-
- if (this.match(_types.types.parenL) || this.isRelational("<")) {
- return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node);
- } else {
- node.key = this.createIdentifier(id, "new");
- return this.tsParsePropertyOrMethodSignature(node, false);
- }
- }
-
- const readonly = !!this.tsParseModifier(["readonly"]);
- const idx = this.tsTryParseIndexSignature(node);
-
- if (idx) {
- if (readonly) node.readonly = true;
- return idx;
- }
-
- this.parsePropertyName(node, false);
- return this.tsParsePropertyOrMethodSignature(node, readonly);
- }
-
- tsParseTypeLiteral() {
- const node = this.startNode();
- node.members = this.tsParseObjectTypeMembers();
- return this.finishNode(node, "TSTypeLiteral");
- }
-
- tsParseObjectTypeMembers() {
- this.expect(_types.types.braceL);
- const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this));
- this.expect(_types.types.braceR);
- return members;
- }
-
- tsIsStartOfMappedType() {
- this.next();
-
- if (this.eat(_types.types.plusMin)) {
- return this.isContextual("readonly");
- }
-
- if (this.isContextual("readonly")) {
- this.next();
- }
-
- if (!this.match(_types.types.bracketL)) {
- return false;
- }
-
- this.next();
-
- if (!this.tsIsIdentifier()) {
- return false;
- }
-
- this.next();
- return this.match(_types.types._in);
- }
-
- tsParseMappedTypeParameter() {
- const node = this.startNode();
- node.name = this.parseIdentifierName(node.start);
- node.constraint = this.tsExpectThenParseType(_types.types._in);
- return this.finishNode(node, "TSTypeParameter");
- }
-
- tsParseMappedType() {
- const node = this.startNode();
- this.expect(_types.types.braceL);
-
- if (this.match(_types.types.plusMin)) {
- node.readonly = this.state.value;
- this.next();
- this.expectContextual("readonly");
- } else if (this.eatContextual("readonly")) {
- node.readonly = true;
- }
-
- this.expect(_types.types.bracketL);
- node.typeParameter = this.tsParseMappedTypeParameter();
- this.expect(_types.types.bracketR);
-
- if (this.match(_types.types.plusMin)) {
- node.optional = this.state.value;
- this.next();
- this.expect(_types.types.question);
- } else if (this.eat(_types.types.question)) {
- node.optional = true;
- }
-
- node.typeAnnotation = this.tsTryParseType();
- this.semicolon();
- this.expect(_types.types.braceR);
- return this.finishNode(node, "TSMappedType");
- }
-
- tsParseTupleType() {
- const node = this.startNode();
- node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false);
- let seenOptionalElement = false;
- node.elementTypes.forEach(elementNode => {
- if (elementNode.type === "TSOptionalType") {
- seenOptionalElement = true;
- } else if (seenOptionalElement && elementNode.type !== "TSRestType") {
- this.raise(elementNode.start, "A required element cannot follow an optional element.");
- }
- });
- return this.finishNode(node, "TSTupleType");
- }
-
- tsParseTupleElementType() {
- if (this.match(_types.types.ellipsis)) {
- const restNode = this.startNode();
- this.next();
- restNode.typeAnnotation = this.tsParseType();
-
- if (this.match(_types.types.comma) && this.lookaheadCharCode() !== 93) {
- this.raiseRestNotLast(this.state.start);
- }
-
- return this.finishNode(restNode, "TSRestType");
- }
-
- const type = this.tsParseType();
-
- if (this.eat(_types.types.question)) {
- const optionalTypeNode = this.startNodeAtNode(type);
- optionalTypeNode.typeAnnotation = type;
- return this.finishNode(optionalTypeNode, "TSOptionalType");
- }
-
- return type;
- }
-
- tsParseParenthesizedType() {
- const node = this.startNode();
- this.expect(_types.types.parenL);
- node.typeAnnotation = this.tsParseType();
- this.expect(_types.types.parenR);
- return this.finishNode(node, "TSParenthesizedType");
- }
-
- tsParseFunctionOrConstructorType(type) {
- const node = this.startNode();
-
- if (type === "TSConstructorType") {
- this.expect(_types.types._new);
- }
-
- this.tsFillSignature(_types.types.arrow, node);
- return this.finishNode(node, type);
- }
-
- tsParseLiteralTypeNode() {
- const node = this.startNode();
-
- node.literal = (() => {
- switch (this.state.type) {
- case _types.types.num:
- case _types.types.string:
- case _types.types._true:
- case _types.types._false:
- return this.parseExprAtom();
-
- default:
- throw this.unexpected();
- }
- })();
-
- return this.finishNode(node, "TSLiteralType");
- }
-
- tsParseTemplateLiteralType() {
- const node = this.startNode();
- const templateNode = this.parseTemplate(false);
-
- if (templateNode.expressions.length > 0) {
- this.raise(templateNode.expressions[0].start, "Template literal types cannot have any substitution");
- }
-
- node.literal = templateNode;
- return this.finishNode(node, "TSLiteralType");
- }
-
- tsParseThisTypeOrThisTypePredicate() {
- const thisKeyword = this.tsParseThisTypeNode();
-
- if (this.isContextual("is") && !this.hasPrecedingLineBreak()) {
- return this.tsParseThisTypePredicate(thisKeyword);
- } else {
- return thisKeyword;
- }
- }
-
- tsParseNonArrayType() {
- switch (this.state.type) {
- case _types.types.name:
- case _types.types._void:
- case _types.types._null:
- {
- const type = this.match(_types.types._void) ? "TSVoidKeyword" : this.match(_types.types._null) ? "TSNullKeyword" : keywordTypeFromName(this.state.value);
-
- if (type !== undefined && this.lookaheadCharCode() !== 46) {
- const node = this.startNode();
- this.next();
- return this.finishNode(node, type);
- }
-
- return this.tsParseTypeReference();
- }
-
- case _types.types.string:
- case _types.types.num:
- case _types.types._true:
- case _types.types._false:
- return this.tsParseLiteralTypeNode();
-
- case _types.types.plusMin:
- if (this.state.value === "-") {
- const node = this.startNode();
-
- if (this.lookahead().type !== _types.types.num) {
- throw this.unexpected();
- }
-
- node.literal = this.parseMaybeUnary();
- return this.finishNode(node, "TSLiteralType");
- }
-
- break;
-
- case _types.types._this:
- return this.tsParseThisTypeOrThisTypePredicate();
-
- case _types.types._typeof:
- return this.tsParseTypeQuery();
-
- case _types.types._import:
- return this.tsParseImportType();
-
- case _types.types.braceL:
- return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral();
-
- case _types.types.bracketL:
- return this.tsParseTupleType();
-
- case _types.types.parenL:
- return this.tsParseParenthesizedType();
-
- case _types.types.backQuote:
- return this.tsParseTemplateLiteralType();
- }
-
- throw this.unexpected();
- }
-
- tsParseArrayTypeOrHigher() {
- let type = this.tsParseNonArrayType();
-
- while (!this.hasPrecedingLineBreak() && this.eat(_types.types.bracketL)) {
- if (this.match(_types.types.bracketR)) {
- const node = this.startNodeAtNode(type);
- node.elementType = type;
- this.expect(_types.types.bracketR);
- type = this.finishNode(node, "TSArrayType");
- } else {
- const node = this.startNodeAtNode(type);
- node.objectType = type;
- node.indexType = this.tsParseType();
- this.expect(_types.types.bracketR);
- type = this.finishNode(node, "TSIndexedAccessType");
- }
- }
-
- return type;
- }
-
- tsParseTypeOperator(operator) {
- const node = this.startNode();
- this.expectContextual(operator);
- 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, "'readonly' type modifier is only permitted on array and tuple literal types.");
- }
- }
-
- tsParseInferType() {
- const node = this.startNode();
- this.expectContextual("infer");
- const typeParameter = this.startNode();
- typeParameter.name = this.parseIdentifierName(typeParameter.start);
- node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter");
- return this.finishNode(node, "TSInferType");
- }
-
- tsParseTypeOperatorOrHigher() {
- const operator = ["keyof", "unique", "readonly"].find(kw => this.isContextual(kw));
- return operator ? this.tsParseTypeOperator(operator) : this.isContextual("infer") ? this.tsParseInferType() : this.tsParseArrayTypeOrHigher();
- }
-
- tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) {
- this.eat(operator);
- let type = parseConstituentType();
-
- if (this.match(operator)) {
- const types = [type];
-
- while (this.eat(operator)) {
- types.push(parseConstituentType());
- }
-
- const node = this.startNodeAtNode(type);
- node.types = types;
- type = this.finishNode(node, kind);
- }
-
- return type;
- }
-
- tsParseIntersectionTypeOrHigher() {
- return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), _types.types.bitwiseAND);
- }
-
- tsParseUnionTypeOrHigher() {
- return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), _types.types.bitwiseOR);
- }
-
- tsIsStartOfFunctionType() {
- if (this.isRelational("<")) {
- return true;
- }
-
- return this.match(_types.types.parenL) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this));
- }
-
- tsSkipParameterStart() {
- if (this.match(_types.types.name) || this.match(_types.types._this)) {
- this.next();
- return true;
- }
-
- if (this.match(_types.types.braceL)) {
- let braceStackCounter = 1;
- this.next();
-
- while (braceStackCounter > 0) {
- if (this.match(_types.types.braceL)) {
- ++braceStackCounter;
- } else if (this.match(_types.types.braceR)) {
- --braceStackCounter;
- }
-
- this.next();
- }
-
- return true;
- }
-
- if (this.match(_types.types.bracketL)) {
- let braceStackCounter = 1;
- this.next();
-
- while (braceStackCounter > 0) {
- if (this.match(_types.types.bracketL)) {
- ++braceStackCounter;
- } else if (this.match(_types.types.bracketR)) {
- --braceStackCounter;
- }
-
- this.next();
- }
-
- return true;
- }
-
- return false;
- }
-
- tsIsUnambiguouslyStartOfFunctionType() {
- this.next();
-
- if (this.match(_types.types.parenR) || this.match(_types.types.ellipsis)) {
- return true;
- }
-
- if (this.tsSkipParameterStart()) {
- if (this.match(_types.types.colon) || this.match(_types.types.comma) || this.match(_types.types.question) || this.match(_types.types.eq)) {
- return true;
- }
-
- if (this.match(_types.types.parenR)) {
- this.next();
-
- if (this.match(_types.types.arrow)) {
- return true;
- }
- }
- }
-
- return false;
- }
-
- tsParseTypeOrTypePredicateAnnotation(returnToken) {
- return this.tsInType(() => {
- const t = this.startNode();
- this.expect(returnToken);
- const asserts = this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this));
-
- if (asserts && this.match(_types.types._this)) {
- let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();
-
- if (thisTypePredicate.type === "TSThisType") {
- const node = this.startNodeAtNode(t);
- node.parameterName = thisTypePredicate;
- node.asserts = true;
- thisTypePredicate = this.finishNode(node, "TSTypePredicate");
- } else {
- 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);
- }
-
- const node = this.startNodeAtNode(t);
- node.parameterName = this.parseIdentifier();
- node.asserts = asserts;
- t.typeAnnotation = this.finishNode(node, "TSTypePredicate");
- return this.finishNode(t, "TSTypeAnnotation");
- }
-
- const type = this.tsParseTypeAnnotation(false);
- const node = this.startNodeAtNode(t);
- node.parameterName = typePredicateVariable;
- node.typeAnnotation = type;
- node.asserts = asserts;
- t.typeAnnotation = this.finishNode(node, "TSTypePredicate");
- return this.finishNode(t, "TSTypeAnnotation");
- });
- }
-
- tsTryParseTypeOrTypePredicateAnnotation() {
- return this.match(_types.types.colon) ? this.tsParseTypeOrTypePredicateAnnotation(_types.types.colon) : undefined;
- }
-
- tsTryParseTypeAnnotation() {
- return this.match(_types.types.colon) ? this.tsParseTypeAnnotation() : undefined;
- }
-
- tsTryParseType() {
- return this.tsEatThenParseType(_types.types.colon);
- }
-
- tsParseTypePredicatePrefix() {
- const id = this.parseIdentifier();
-
- if (this.isContextual("is") && !this.hasPrecedingLineBreak()) {
- this.next();
- return id;
- }
- }
-
- tsParseTypePredicateAsserts() {
- if (!this.match(_types.types.name) || this.state.value !== "asserts" || this.hasPrecedingLineBreak()) {
- return false;
- }
-
- const containsEsc = this.state.containsEsc;
- this.next();
-
- if (!this.match(_types.types.name) && !this.match(_types.types._this)) {
- return false;
- }
-
- if (containsEsc) {
- this.raise(this.state.lastTokStart, "Escape sequence in keyword asserts");
- }
-
- return true;
- }
-
- tsParseTypeAnnotation(eatColon = true, t = this.startNode()) {
- this.tsInType(() => {
- if (eatColon) this.expect(_types.types.colon);
- t.typeAnnotation = this.tsParseType();
- });
- return this.finishNode(t, "TSTypeAnnotation");
- }
-
- tsParseType() {
- assert(this.state.inType);
- const type = this.tsParseNonConditionalType();
-
- if (this.hasPrecedingLineBreak() || !this.eat(_types.types._extends)) {
- return type;
- }
-
- const node = this.startNodeAtNode(type);
- node.checkType = type;
- node.extendsType = this.tsParseNonConditionalType();
- this.expect(_types.types.question);
- node.trueType = this.tsParseType();
- this.expect(_types.types.colon);
- node.falseType = this.tsParseType();
- return this.finishNode(node, "TSConditionalType");
- }
-
- tsParseNonConditionalType() {
- if (this.tsIsStartOfFunctionType()) {
- return this.tsParseFunctionOrConstructorType("TSFunctionType");
- }
-
- if (this.match(_types.types._new)) {
- return this.tsParseFunctionOrConstructorType("TSConstructorType");
- }
-
- return this.tsParseUnionTypeOrHigher();
- }
-
- tsParseTypeAssertion() {
- const node = this.startNode();
-
- const _const = this.tsTryNextParseConstantContext();
-
- node.typeAnnotation = _const || this.tsNextThenParseType();
- this.expectRelational(">");
- 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, `'${descriptor}' list cannot be empty.`);
- }
-
- return delimitedList;
- }
-
- tsParseExpressionWithTypeArguments() {
- const node = this.startNode();
- node.expression = this.tsParseEntityName(false);
-
- if (this.isRelational("<")) {
- node.typeParameters = this.tsParseTypeArguments();
- }
-
- return this.finishNode(node, "TSExpressionWithTypeArguments");
- }
-
- tsParseInterfaceDeclaration(node) {
- node.id = this.parseIdentifier();
- this.checkLVal(node.id, _scopeflags.BIND_TS_INTERFACE, undefined, "typescript interface declaration");
- node.typeParameters = this.tsTryParseTypeParameters();
-
- if (this.eat(_types.types._extends)) {
- 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, _scopeflags.BIND_TS_TYPE, undefined, "typescript type alias");
- node.typeParameters = this.tsTryParseTypeParameters();
- node.typeAnnotation = this.tsExpectThenParseType(_types.types.eq);
- 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(_types.types.string) ? this.parseExprAtom() : this.parseIdentifier(true);
-
- if (this.eat(_types.types.eq)) {
- node.initializer = this.parseMaybeAssign();
- }
-
- return this.finishNode(node, "TSEnumMember");
- }
-
- tsParseEnumDeclaration(node, isConst) {
- if (isConst) node.const = true;
- node.id = this.parseIdentifier();
- this.checkLVal(node.id, isConst ? _scopeflags.BIND_TS_CONST_ENUM : _scopeflags.BIND_TS_ENUM, undefined, "typescript enum declaration");
- this.expect(_types.types.braceL);
- node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this));
- this.expect(_types.types.braceR);
- return this.finishNode(node, "TSEnumDeclaration");
- }
-
- tsParseModuleBlock() {
- const node = this.startNode();
- this.scope.enter(_scopeflags.SCOPE_OTHER);
- this.expect(_types.types.braceL);
- this.parseBlockOrModuleBlockBody(node.body = [], undefined, true, _types.types.braceR);
- this.scope.exit();
- return this.finishNode(node, "TSModuleBlock");
- }
-
- tsParseModuleOrNamespaceDeclaration(node, nested = false) {
- node.id = this.parseIdentifier();
-
- if (!nested) {
- this.checkLVal(node.id, _scopeflags.BIND_TS_NAMESPACE, null, "module or namespace declaration");
- }
-
- if (this.eat(_types.types.dot)) {
- const inner = this.startNode();
- this.tsParseModuleOrNamespaceDeclaration(inner, true);
- node.body = inner;
- } else {
- this.scope.enter(_scopeflags.SCOPE_TS_MODULE);
- node.body = this.tsParseModuleBlock();
- this.scope.exit();
- }
-
- return this.finishNode(node, "TSModuleDeclaration");
- }
-
- tsParseAmbientExternalModuleDeclaration(node) {
- if (this.isContextual("global")) {
- node.global = true;
- node.id = this.parseIdentifier();
- } else if (this.match(_types.types.string)) {
- node.id = this.parseExprAtom();
- } else {
- this.unexpected();
- }
-
- if (this.match(_types.types.braceL)) {
- this.scope.enter(_scopeflags.SCOPE_TS_MODULE);
- node.body = this.tsParseModuleBlock();
- 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, _scopeflags.BIND_LEXICAL, undefined, "import equals declaration");
- this.expect(_types.types.eq);
- node.moduleReference = this.tsParseModuleReference();
- this.semicolon();
- return this.finishNode(node, "TSImportEqualsDeclaration");
- }
-
- tsIsExternalModuleReference() {
- return this.isContextual("require") && this.lookaheadCharCode() === 40;
- }
-
- tsParseModuleReference() {
- return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false);
- }
-
- tsParseExternalModuleReference() {
- const node = this.startNode();
- this.expectContextual("require");
- this.expect(_types.types.parenL);
-
- if (!this.match(_types.types.string)) {
- throw this.unexpected();
- }
-
- node.expression = this.parseExprAtom();
- this.expect(_types.types.parenR);
- 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("let")) {
- starttype = _types.types._var;
- kind = "let";
- }
-
- switch (starttype) {
- case _types.types._function:
- return this.parseFunctionStatement(nany, false, true);
-
- case _types.types._class:
- nany.declare = true;
- return this.parseClass(nany, true, false);
-
- case _types.types._const:
- if (this.match(_types.types._const) && this.isLookaheadContextual("enum")) {
- this.expect(_types.types._const);
- this.expectContextual("enum");
- return this.tsParseEnumDeclaration(nany, true);
- }
-
- case _types.types._var:
- kind = kind || this.state.value;
- return this.parseVarStatement(nany, kind);
-
- case _types.types.name:
- {
- const value = this.state.value;
-
- if (value === "global") {
- return this.tsParseAmbientExternalModuleDeclaration(nany);
- } else {
- return this.tsParseDeclaration(nany, 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(_types.types.braceL)) {
- this.scope.enter(_scopeflags.SCOPE_TS_MODULE);
- const mod = node;
- mod.global = true;
- mod.id = expr;
- mod.body = this.tsParseModuleBlock();
- this.scope.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.tsCheckLineTerminatorAndMatch(_types.types._class, next)) {
- const cls = node;
- cls.abstract = true;
-
- if (next) {
- this.next();
-
- if (!this.match(_types.types._class)) {
- this.unexpected(null, _types.types._class);
- }
- }
-
- return this.parseClass(cls, true, false);
- }
-
- break;
-
- case "enum":
- if (next || this.match(_types.types.name)) {
- if (next) this.next();
- return this.tsParseEnumDeclaration(node, false);
- }
-
- break;
-
- case "interface":
- if (this.tsCheckLineTerminatorAndMatch(_types.types.name, next)) {
- if (next) this.next();
- return this.tsParseInterfaceDeclaration(node);
- }
-
- break;
-
- case "module":
- if (next) this.next();
-
- if (this.match(_types.types.string)) {
- return this.tsParseAmbientExternalModuleDeclaration(node);
- } else if (this.tsCheckLineTerminatorAndMatch(_types.types.name, next)) {
- return this.tsParseModuleOrNamespaceDeclaration(node);
- }
-
- break;
-
- case "namespace":
- if (this.tsCheckLineTerminatorAndMatch(_types.types.name, next)) {
- if (next) this.next();
- return this.tsParseModuleOrNamespaceDeclaration(node);
- }
-
- break;
-
- case "type":
- if (this.tsCheckLineTerminatorAndMatch(_types.types.name, next)) {
- if (next) this.next();
- return this.tsParseTypeAliasDeclaration(node);
- }
-
- break;
- }
- }
-
- tsCheckLineTerminatorAndMatch(tokenType, next) {
- return (next || this.match(tokenType)) && !this.isLineTerminator();
- }
-
- tsTryParseGenericAsyncArrowFunction(startPos, startLoc) {
- if (!this.isRelational("<")) {
- return undefined;
- }
-
- const res = this.tsTryParseAndCatch(() => {
- const node = this.startNodeAt(startPos, startLoc);
- node.typeParameters = this.tsParseTypeParameters();
- super.parseFunctionParams(node);
- node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();
- this.expect(_types.types.arrow);
- return node;
- });
-
- if (!res) {
- return undefined;
- }
-
- return this.parseArrowExpression(res, null, true);
- }
-
- tsParseTypeArguments() {
- const node = this.startNode();
- node.params = this.tsInType(() => this.tsInNoContext(() => {
- this.expectRelational("<");
- return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this));
- }));
- this.state.exprAllowed = false;
- this.expectRelational(">");
- return this.finishNode(node, "TSTypeParameterInstantiation");
- }
-
- tsIsDeclarationStart() {
- if (this.match(_types.types.name)) {
- switch (this.state.value) {
- case "abstract":
- case "declare":
- case "enum":
- case "interface":
- case "module":
- case "namespace":
- case "type":
- return true;
- }
- }
-
- return false;
- }
-
- 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;
-
- if (allowModifiers) {
- accessibility = this.parseAccessModifier();
- readonly = !!this.tsParseModifier(["readonly"]);
- }
-
- const left = this.parseMaybeDefault();
- this.parseAssignableListItemTypes(left);
- const elt = this.parseMaybeDefault(left.start, left.loc.start, left);
-
- if (accessibility || readonly) {
- const pp = this.startNodeAt(startPos, startLoc);
-
- if (decorators.length) {
- pp.decorators = decorators;
- }
-
- if (accessibility) pp.accessibility = accessibility;
- if (readonly) pp.readonly = readonly;
-
- if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") {
- this.raise(pp.start, "A parameter property may not be declared using a binding pattern.");
- }
-
- pp.parameter = elt;
- return this.finishNode(pp, "TSParameterProperty");
- }
-
- if (decorators.length) {
- left.decorators = decorators;
- }
-
- return elt;
- }
-
- parseFunctionBodyAndFinish(node, type, isMethod = false) {
- if (this.match(_types.types.colon)) {
- node.returnType = this.tsParseTypeOrTypePredicateAnnotation(_types.types.colon);
- }
-
- const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" ? "TSDeclareMethod" : undefined;
-
- if (bodilessType && !this.match(_types.types.braceL) && this.isLineTerminator()) {
- this.finishNode(node, bodilessType);
- return;
- }
-
- super.parseFunctionBodyAndFinish(node, type, isMethod);
- }
-
- registerFunctionStatementId(node) {
- if (!node.body && node.id) {
- this.checkLVal(node.id, _scopeflags.BIND_TS_AMBIENT, null, "function name");
- } else {
- super.registerFunctionStatementId(...arguments);
- }
- }
-
- parseSubscript(base, startPos, startLoc, noCalls, state) {
- if (!this.hasPrecedingLineBreak() && this.match(_types.types.bang)) {
- this.state.exprAllowed = false;
- this.next();
- const nonNullExpression = this.startNodeAt(startPos, startLoc);
- nonNullExpression.expression = base;
- return this.finishNode(nonNullExpression, "TSNonNullExpression");
- }
-
- if (this.isRelational("<")) {
- const result = this.tsTryParseAndCatch(() => {
- if (!noCalls && this.atPossibleAsync(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 (!noCalls && this.eat(_types.types.parenL)) {
- node.arguments = this.parseCallExpressionArguments(_types.types.parenR, false);
- node.typeParameters = typeArguments;
- return this.finishCallExpression(node, state.optionalChainMember);
- } else if (this.match(_types.types.backQuote)) {
- return this.parseTaggedTemplateExpression(startPos, startLoc, base, state, typeArguments);
- }
- }
-
- this.unexpected();
- });
- if (result) return result;
- }
-
- return super.parseSubscript(base, startPos, startLoc, noCalls, state);
- }
-
- parseNewArguments(node) {
- if (this.isRelational("<")) {
- const typeParameters = this.tsTryParseAndCatch(() => {
- const args = this.tsParseTypeArguments();
- if (!this.match(_types.types.parenL)) this.unexpected();
- return args;
- });
-
- if (typeParameters) {
- node.typeParameters = typeParameters;
- }
- }
-
- super.parseNewArguments(node);
- }
-
- parseExprOp(left, leftStartPos, leftStartLoc, minPrec, noIn) {
- if (nonNull(_types.types._in.binop) > minPrec && !this.hasPrecedingLineBreak() && this.isContextual("as")) {
- 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");
- return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn);
- }
-
- return super.parseExprOp(left, leftStartPos, leftStartLoc, minPrec, noIn);
- }
-
- checkReservedWord(word, startLoc, checkKeywords, isBinding) {}
-
- checkDuplicateExports() {}
-
- parseImport(node) {
- if (this.match(_types.types.name) && this.lookahead().type === _types.types.eq) {
- return this.tsParseImportEqualsDeclaration(node);
- }
-
- return super.parseImport(node);
- }
-
- parseExport(node) {
- if (this.match(_types.types._import)) {
- this.expect(_types.types._import);
- return this.tsParseImportEqualsDeclaration(node, true);
- } else if (this.eat(_types.types.eq)) {
- const assign = node;
- assign.expression = this.parseExpression();
- this.semicolon();
- return this.finishNode(assign, "TSExportAssignment");
- } else if (this.eatContextual("as")) {
- const decl = node;
- this.expectContextual("namespace");
- decl.id = this.parseIdentifier();
- this.semicolon();
- return this.finishNode(decl, "TSNamespaceExportDeclaration");
- } else {
- return super.parseExport(node);
- }
- }
-
- isAbstractClass() {
- return this.isContextual("abstract") && this.lookahead().type === _types.types._class;
- }
-
- parseExportDefaultExpression() {
- if (this.isAbstractClass()) {
- const cls = this.startNode();
- this.next();
- this.parseClass(cls, true, true);
- cls.abstract = true;
- return cls;
- }
-
- if (this.state.value === "interface") {
- const result = this.tsParseDeclaration(this.startNode(), this.state.value, true);
- if (result) return result;
- }
-
- return super.parseExportDefaultExpression();
- }
-
- parseStatementContent(context, topLevel) {
- if (this.state.type === _types.types._const) {
- const ahead = this.lookahead();
-
- if (ahead.type === _types.types.name && ahead.value === "enum") {
- const node = this.startNode();
- this.expect(_types.types._const);
- this.expectContextual("enum");
- return this.tsParseEnumDeclaration(node, true);
- }
- }
-
- return super.parseStatementContent(context, topLevel);
- }
-
- parseAccessModifier() {
- return this.tsParseModifier(["public", "protected", "private"]);
- }
-
- parseClassMember(classBody, member, state, constructorAllowsSuper) {
- const accessibility = this.parseAccessModifier();
- if (accessibility) member.accessibility = accessibility;
- super.parseClassMember(classBody, member, state, constructorAllowsSuper);
- }
-
- parseClassMemberWithIsStatic(classBody, member, state, isStatic, constructorAllowsSuper) {
- const modifiers = this.tsParseModifiers(["abstract", "readonly", "declare"]);
- Object.assign(member, modifiers);
- const idx = this.tsTryParseIndexSignature(member);
-
- if (idx) {
- classBody.body.push(idx);
-
- if (modifiers.abstract) {
- this.raise(member.start, "Index signatures cannot have the 'abstract' modifier");
- }
-
- if (isStatic) {
- this.raise(member.start, "Index signatures cannot have the 'static' modifier");
- }
-
- if (member.accessibility) {
- this.raise(member.start, `Index signatures cannot have an accessibility modifier ('${member.accessibility}')`);
- }
-
- return;
- }
-
- super.parseClassMemberWithIsStatic(classBody, member, state, isStatic, constructorAllowsSuper);
- }
-
- parsePostMemberNameModifiers(methodOrProp) {
- const optional = this.eat(_types.types.question);
- if (optional) methodOrProp.optional = true;
-
- if (methodOrProp.readonly && this.match(_types.types.parenL)) {
- this.raise(methodOrProp.start, "Class methods cannot have the 'readonly' modifier");
- }
-
- if (methodOrProp.declare && this.match(_types.types.parenL)) {
- this.raise(methodOrProp.start, "Class methods cannot have the 'declare' modifier");
- }
- }
-
- 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, noIn, startPos, startLoc, refNeedsArrowPos) {
- if (!refNeedsArrowPos || !this.match(_types.types.question)) {
- return super.parseConditional(expr, noIn, startPos, startLoc, refNeedsArrowPos);
- }
-
- const result = this.tryParse(() => super.parseConditional(expr, noIn, startPos, startLoc));
-
- if (!result.node) {
- refNeedsArrowPos.start = result.error.pos || this.state.start;
- 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(_types.types.question)) {
- node.optional = true;
- this.resetEndLocation(node);
- }
-
- if (this.match(_types.types.colon)) {
- 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("declare");
- let declaration;
-
- if (this.match(_types.types.name)) {
- declaration = this.tsTryParseExportDeclaration();
- }
-
- if (!declaration) {
- declaration = super.parseExportDeclaration(node);
- }
-
- if (declaration && isDeclare) {
- this.resetStartLocation(declaration, startPos, startLoc);
- declaration.declare = true;
- }
-
- return declaration;
- }
-
- parseClassId(node, isStatement, optionalId) {
- if ((!isStatement || optionalId) && this.isContextual("implements")) {
- return;
- }
-
- super.parseClassId(node, isStatement, optionalId, node.declare ? _scopeflags.BIND_TS_AMBIENT : _scopeflags.BIND_CLASS);
- const typeParameters = this.tsTryParseTypeParameters();
- if (typeParameters) node.typeParameters = typeParameters;
- }
-
- parseClassPropertyAnnotation(node) {
- if (!node.optional && this.eat(_types.types.bang)) {
- node.definite = true;
- }
-
- const type = this.tsTryParseTypeAnnotation();
- if (type) node.typeAnnotation = type;
- }
-
- parseClassProperty(node) {
- this.parseClassPropertyAnnotation(node);
-
- if (node.declare && this.match(_types.types.equal)) {
- this.raise(this.state.start, "'declare' class fields cannot have an initializer");
- }
-
- return super.parseClassProperty(node);
- }
-
- parseClassPrivateProperty(node) {
- if (node.abstract) {
- this.raise(node.start, "Private elements cannot have the 'abstract' modifier.");
- }
-
- if (node.accessibility) {
- this.raise(node.start, `Private elements cannot have an accessibility modifier ('${node.accessibility}')`);
- }
-
- this.parseClassPropertyAnnotation(node);
- return super.parseClassPrivateProperty(node);
- }
-
- pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
- const typeParameters = this.tsTryParseTypeParameters();
- 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);
- }
-
- parseClassSuper(node) {
- super.parseClassSuper(node);
-
- if (node.superClass && this.isRelational("<")) {
- node.superTypeParameters = this.tsParseTypeArguments();
- }
-
- if (this.eatContextual("implements")) {
- 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(_types.types.bang)) {
- decl.definite = true;
- }
-
- const type = this.tsTryParseTypeAnnotation();
-
- if (type) {
- decl.id.typeAnnotation = type;
- this.resetEndLocation(decl.id);
- }
- }
-
- parseAsyncArrowFromCallExpression(node, call) {
- if (this.match(_types.types.colon)) {
- node.returnType = this.tsParseTypeAnnotation();
- }
-
- return super.parseAsyncArrowFromCallExpression(node, call);
- }
-
- parseMaybeAssign(...args) {
- let state;
- let jsx;
- let typeCast;
-
- if (this.match(_types.types.jsxTagStart)) {
- 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] === _context.types.j_oTag) {
- context.length -= 2;
- } else if (context[context.length - 1] === _context.types.j_expr) {
- context.length -= 1;
- }
- }
-
- if (!(jsx && jsx.error) && !this.isRelational("<")) {
- return super.parseMaybeAssign(...args);
- }
-
- let typeParameters;
- state = state || this.state.clone();
- const arrow = this.tryParse(abort => {
- typeParameters = this.tsParseTypeParameters();
- const expr = super.parseMaybeAssign(...args);
-
- if (expr.type !== "ArrowFunctionExpression" || expr.extra && expr.extra.parenthesized) {
- abort();
- }
-
- if (typeParameters && typeParameters.params.length !== 0) {
- this.resetStartLocationFromNode(expr, typeParameters);
- }
-
- expr.typeParameters = typeParameters;
- return expr;
- }, state);
- if (!arrow.error && !arrow.aborted) return arrow.node;
-
- if (!jsx) {
- assert(!this.hasPlugin("jsx"));
- typeCast = this.tryParse(() => super.parseMaybeAssign(...args), state);
- if (!typeCast.error) return typeCast.node;
- }
-
- if (jsx && jsx.node) {
- this.state = jsx.failState;
- return jsx.node;
- }
-
- if (arrow.node) {
- this.state = arrow.failState;
- return arrow.node;
- }
-
- if (typeCast && typeCast.node) {
- this.state = typeCast.failState;
- return typeCast.node;
- }
-
- if (jsx && jsx.thrown) throw jsx.error;
- if (arrow.thrown) throw arrow.error;
- if (typeCast && typeCast.thrown) throw typeCast.error;
- throw jsx && jsx.error || arrow.error || typeCast && typeCast.error;
- }
-
- parseMaybeUnary(refExpressionErrors) {
- if (!this.hasPlugin("jsx") && this.isRelational("<")) {
- return this.tsParseTypeAssertion();
- } else {
- return super.parseMaybeUnary(refExpressionErrors);
- }
- }
-
- parseArrow(node) {
- if (this.match(_types.types.colon)) {
- const result = this.tryParse(abort => {
- const returnType = this.tsParseTypeOrTypePredicateAnnotation(_types.types.colon);
- if (this.canInsertSemicolon() || !this.match(_types.types.arrow)) 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(_types.types.question)) {
- if (param.type !== "Identifier") {
- this.raise(param.start, "A binding pattern parameter cannot be optional in an implementation signature.");
- }
-
- param.optional = true;
- }
-
- const type = this.tsTryParseTypeAnnotation();
- if (type) param.typeAnnotation = type;
- this.resetEndLocation(param);
- return param;
- }
-
- toAssignable(node) {
- switch (node.type) {
- case "TSTypeCastExpression":
- return super.toAssignable(this.typeCastToParameter(node));
-
- case "TSParameterProperty":
- return super.toAssignable(node);
-
- case "TSAsExpression":
- case "TSNonNullExpression":
- case "TSTypeAssertion":
- node.expression = this.toAssignable(node.expression);
- return node;
-
- default:
- return super.toAssignable(node);
- }
- }
-
- checkLVal(expr, bindingType = _scopeflags.BIND_NONE, checkClashes, contextDescription) {
- switch (expr.type) {
- case "TSTypeCastExpression":
- return;
-
- case "TSParameterProperty":
- this.checkLVal(expr.parameter, bindingType, checkClashes, "parameter property");
- return;
-
- case "TSAsExpression":
- case "TSNonNullExpression":
- case "TSTypeAssertion":
- this.checkLVal(expr.expression, bindingType, checkClashes, contextDescription);
- return;
-
- default:
- super.checkLVal(expr, bindingType, checkClashes, contextDescription);
- return;
- }
- }
-
- parseBindingAtom() {
- switch (this.state.type) {
- case _types.types._this:
- return this.parseIdentifier(true);
-
- default:
- return super.parseBindingAtom();
- }
- }
-
- parseMaybeDecoratorArguments(expr) {
- if (this.isRelational("<")) {
- const typeArguments = this.tsParseTypeArguments();
-
- if (this.match(_types.types.parenL)) {
- const call = super.parseMaybeDecoratorArguments(expr);
- call.typeParameters = typeArguments;
- return call;
- }
-
- this.unexpected(this.state.start, _types.types.parenL);
- }
-
- return super.parseMaybeDecoratorArguments(expr);
- }
-
- isClassMethod() {
- return this.isRelational("<") || super.isClassMethod();
- }
-
- isClassProperty() {
- return this.match(_types.types.bang) || this.match(_types.types.colon) || 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, "Type annotations must come before default assignments, " + "e.g. instead of `age = 25: number` use `age: number = 25`");
- }
-
- return node;
- }
-
- getTokenFromCode(code) {
- if (this.state.inType && (code === 62 || code === 60)) {
- return this.finishOp(_types.types.relational, 1);
- } else {
- return super.getTokenFromCode(code);
- }
- }
-
- 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, "Unexpected type cast in parameter position.");
- }
-
- 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;
- }
-
- toReferencedList(exprList, isInParens) {
- for (let i = 0; i < exprList.length; i++) {
- const expr = exprList[i];
-
- if (expr && expr.type === "TSTypeCastExpression") {
- this.raise(expr.start, "Did not expect a type annotation here.");
- }
- }
-
- return exprList;
- }
-
- shouldParseArrow() {
- return this.match(_types.types.colon) || super.shouldParseArrow();
- }
-
- shouldParseAsyncArrow() {
- return this.match(_types.types.colon) || super.shouldParseAsyncArrow();
- }
-
- canHaveLeadingDecorator() {
- return super.canHaveLeadingDecorator() || this.isAbstractClass();
- }
-
- jsxParseOpeningElementAfterName(node) {
- if (this.isRelational("<")) {
- const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArguments());
- if (typeArguments) node.typeParameters = typeArguments;
- }
-
- return super.jsxParseOpeningElementAfterName(node);
- }
-
- getGetterSetterExpectedParamCount(method) {
- const baseCount = super.getGetterSetterExpectedParamCount(method);
- const firstParam = method.params[0];
- const hasContextParam = firstParam && firstParam.type === "Identifier" && firstParam.name === "this";
- return hasContextParam ? baseCount + 1 : baseCount;
- }
-
-};
-
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/plugins/typescript/scope.js b/assets/node_modules/@babel/parser/lib/plugins/typescript/scope.js
deleted file mode 100644
index 48a075f..0000000
--- a/assets/node_modules/@babel/parser/lib/plugins/typescript/scope.js
+++ /dev/null
@@ -1,94 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _scope = _interopRequireWildcard(require("../../util/scope"));
-
-var _scopeflags = require("../../util/scopeflags");
-
-var N = _interopRequireWildcard(require("../../types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-class TypeScriptScope extends _scope.Scope {
- constructor(...args) {
- super(...args);
- this.types = [];
- this.enums = [];
- this.constEnums = [];
- this.classes = [];
- this.exportOnlyBindings = [];
- }
-
-}
-
-class TypeScriptScopeHandler extends _scope.default {
- createScope(flags) {
- return new TypeScriptScope(flags);
- }
-
- declareName(name, bindingType, pos) {
- const scope = this.currentScope();
-
- if (bindingType & _scopeflags.BIND_FLAGS_TS_EXPORT_ONLY) {
- this.maybeExportDefined(scope, name);
- scope.exportOnlyBindings.push(name);
- return;
- }
-
- super.declareName(...arguments);
-
- if (bindingType & _scopeflags.BIND_KIND_TYPE) {
- if (!(bindingType & _scopeflags.BIND_KIND_VALUE)) {
- this.checkRedeclarationInScope(scope, name, bindingType, pos);
- this.maybeExportDefined(scope, name);
- }
-
- scope.types.push(name);
- }
-
- if (bindingType & _scopeflags.BIND_FLAGS_TS_ENUM) scope.enums.push(name);
- if (bindingType & _scopeflags.BIND_FLAGS_TS_CONST_ENUM) scope.constEnums.push(name);
- if (bindingType & _scopeflags.BIND_FLAGS_CLASS) scope.classes.push(name);
- }
-
- isRedeclaredInScope(scope, name, bindingType) {
- if (scope.enums.indexOf(name) > -1) {
- if (bindingType & _scopeflags.BIND_FLAGS_TS_ENUM) {
- const isConst = !!(bindingType & _scopeflags.BIND_FLAGS_TS_CONST_ENUM);
- const wasConst = scope.constEnums.indexOf(name) > -1;
- return isConst !== wasConst;
- }
-
- return true;
- }
-
- if (bindingType & _scopeflags.BIND_FLAGS_CLASS && scope.classes.indexOf(name) > -1) {
- if (scope.lexical.indexOf(name) > -1) {
- return !!(bindingType & _scopeflags.BIND_KIND_VALUE);
- } else {
- return false;
- }
- }
-
- if (bindingType & _scopeflags.BIND_KIND_TYPE && scope.types.indexOf(name) > -1) {
- return true;
- }
-
- return super.isRedeclaredInScope(...arguments);
- }
-
- checkLocalExport(id) {
- if (this.scopeStack[0].types.indexOf(id.name) === -1 && this.scopeStack[0].exportOnlyBindings.indexOf(id.name) === -1) {
- super.checkLocalExport(id);
- }
- }
-
-}
-
-exports.default = TypeScriptScopeHandler; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/plugins/v8intrinsic.js b/assets/node_modules/@babel/parser/lib/plugins/v8intrinsic.js
deleted file mode 100644
index c437007..0000000
--- a/assets/node_modules/@babel/parser/lib/plugins/v8intrinsic.js
+++ /dev/null
@@ -1,43 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _types = require("../tokenizer/types");
-
-var N = _interopRequireWildcard(require("../types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-var _default = superClass => class extends superClass {
- parseV8Intrinsic() {
- if (this.match(_types.types.modulo)) {
- const v8IntrinsicStart = this.state.start;
- const node = this.startNode();
- this.eat(_types.types.modulo);
-
- if (this.match(_types.types.name)) {
- const name = this.parseIdentifierName(this.state.start);
- const identifier = this.createIdentifier(node, name);
- identifier.type = "V8IntrinsicIdentifier";
-
- if (this.match(_types.types.parenL)) {
- return identifier;
- }
- }
-
- this.unexpected(v8IntrinsicStart);
- }
- }
-
- parseExprAtom() {
- return this.parseV8Intrinsic() || super.parseExprAtom(...arguments);
- }
-
-};
-
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/tokenizer/context.js b/assets/node_modules/@babel/parser/lib/tokenizer/context.js
deleted file mode 100644
index dfdc373..0000000
--- a/assets/node_modules/@babel/parser/lib/tokenizer/context.js
+++ /dev/null
@@ -1,102 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.types = exports.TokContext = void 0;
-
-var _types = require("./types");
-
-var _whitespace = require("../util/whitespace");
-
-class TokContext {
- constructor(token, isExpr, preserveSpace, override) {
- this.token = token;
- this.isExpr = !!isExpr;
- this.preserveSpace = !!preserveSpace;
- this.override = override;
- }
-
-}
-
-exports.TokContext = TokContext;
-const types = {
- braceStatement: new TokContext("{", false),
- braceExpression: new TokContext("{", true),
- templateQuasi: new TokContext("${", false),
- parenStatement: new TokContext("(", false),
- parenExpression: new TokContext("(", true),
- template: new TokContext("`", true, true, p => p.readTmplToken()),
- functionExpression: new TokContext("function", true),
- functionStatement: new TokContext("function", false)
-};
-exports.types = types;
-
-_types.types.parenR.updateContext = _types.types.braceR.updateContext = function () {
- if (this.state.context.length === 1) {
- this.state.exprAllowed = true;
- return;
- }
-
- let out = this.state.context.pop();
-
- if (out === types.braceStatement && this.curContext().token === "function") {
- out = this.state.context.pop();
- }
-
- this.state.exprAllowed = !out.isExpr;
-};
-
-_types.types.name.updateContext = function (prevType) {
- let allowed = false;
-
- if (prevType !== _types.types.dot) {
- if (this.state.value === "of" && !this.state.exprAllowed || this.state.value === "yield" && this.scope.inGenerator) {
- allowed = true;
- }
- }
-
- this.state.exprAllowed = allowed;
-
- if (this.state.isIterator) {
- this.state.isIterator = false;
- }
-};
-
-_types.types.braceL.updateContext = function (prevType) {
- this.state.context.push(this.braceIsBlock(prevType) ? types.braceStatement : types.braceExpression);
- this.state.exprAllowed = true;
-};
-
-_types.types.dollarBraceL.updateContext = function () {
- this.state.context.push(types.templateQuasi);
- this.state.exprAllowed = true;
-};
-
-_types.types.parenL.updateContext = function (prevType) {
- const statementParens = prevType === _types.types._if || prevType === _types.types._for || prevType === _types.types._with || prevType === _types.types._while;
- this.state.context.push(statementParens ? types.parenStatement : types.parenExpression);
- this.state.exprAllowed = true;
-};
-
-_types.types.incDec.updateContext = function () {};
-
-_types.types._function.updateContext = _types.types._class.updateContext = function (prevType) {
- if (prevType.beforeExpr && prevType !== _types.types.semi && prevType !== _types.types._else && !(prevType === _types.types._return && _whitespace.lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start))) && !((prevType === _types.types.colon || prevType === _types.types.braceL) && this.curContext() === types.b_stat)) {
- this.state.context.push(types.functionExpression);
- } else {
- this.state.context.push(types.functionStatement);
- }
-
- this.state.exprAllowed = false;
-};
-
-_types.types.backQuote.updateContext = function () {
- if (this.curContext() === types.template) {
- this.state.context.pop();
- } else {
- this.state.context.push(types.template);
- }
-
- this.state.exprAllowed = false;
-}; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/tokenizer/index.js b/assets/node_modules/@babel/parser/lib/tokenizer/index.js
deleted file mode 100644
index 762845b..0000000
--- a/assets/node_modules/@babel/parser/lib/tokenizer/index.js
+++ /dev/null
@@ -1,1228 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.Token = void 0;
-
-var N = _interopRequireWildcard(require("../types"));
-
-var _identifier = require("../util/identifier");
-
-var _types2 = require("./types");
-
-var _context = require("./context");
-
-var _location = _interopRequireDefault(require("../parser/location"));
-
-var _location2 = require("../util/location");
-
-var _whitespace = require("../util/whitespace");
-
-var _state = _interopRequireDefault(require("./state"));
-
-var _isDigit = function isDigit(code) {
- return code >= 48 && code <= 57;
-};
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-const VALID_REGEX_FLAGS = new Set(["g", "m", "s", "i", "y", "u"]);
-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 _location2.SourceLocation(state.startLoc, state.endLoc);
- }
-
-}
-
-exports.Token = Token;
-
-class Tokenizer extends _location.default {
- constructor(options, input) {
- super();
- this.tokens = [];
- this.state = new _state.default();
- 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() {
- if (!this.isLookahead) {
- 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;
- }
-
- lookahead() {
- const old = this.state;
- this.state = old.clone(true);
- this.isLookahead = true;
- this.next();
- this.isLookahead = false;
- const curr = this.state;
- this.state = old;
- return curr;
- }
-
- nextTokenStart() {
- const thisTokEnd = this.state.pos;
- _whitespace.skipWhiteSpace.lastIndex = thisTokEnd;
-
- const skip = _whitespace.skipWhiteSpace.exec(this.input);
-
- return thisTokEnd + skip[0].length;
- }
-
- lookaheadCharCode() {
- return this.input.charCodeAt(this.nextTokenStart());
- }
-
- setStrict(strict) {
- this.state.strict = strict;
- if (!this.match(_types2.types.num) && !this.match(_types2.types.string)) return;
- this.state.pos = this.state.start;
-
- while (this.state.pos < this.state.lineStart) {
- this.state.lineStart = this.input.lastIndexOf("\n", this.state.lineStart - 2) + 1;
- --this.state.curLine;
- }
-
- this.nextToken();
- }
-
- curContext() {
- return this.state.context[this.state.context.length - 1];
- }
-
- nextToken() {
- const curContext = this.curContext();
- if (!curContext || !curContext.preserveSpace) this.skipSpace();
- this.state.containsOctal = false;
- this.state.octalPosition = null;
- this.state.start = this.state.pos;
- this.state.startLoc = this.state.curPosition();
-
- if (this.state.pos >= this.length) {
- this.finishToken(_types2.types.eof);
- return;
- }
-
- if (curContext.override) {
- curContext.override(this);
- } else {
- this.getTokenFromCode(this.input.codePointAt(this.state.pos));
- }
- }
-
- pushComment(block, text, start, end, startLoc, endLoc) {
- const comment = {
- type: block ? "CommentBlock" : "CommentLine",
- value: text,
- start: start,
- end: end,
- loc: new _location2.SourceLocation(startLoc, endLoc)
- };
- if (this.options.tokens) this.pushToken(comment);
- this.state.comments.push(comment);
- this.addComment(comment);
- }
-
- skipBlockComment() {
- const startLoc = this.state.curPosition();
- const start = this.state.pos;
- const end = this.input.indexOf("*/", this.state.pos + 2);
- if (end === -1) throw this.raise(start, "Unterminated comment");
- this.state.pos = end + 2;
- _whitespace.lineBreakG.lastIndex = start;
- let match;
-
- while ((match = _whitespace.lineBreakG.exec(this.input)) && match.index < this.state.pos) {
- ++this.state.curLine;
- this.state.lineStart = match.index + match[0].length;
- }
-
- if (this.isLookahead) return;
- this.pushComment(true, this.input.slice(start + 2, end), start, this.state.pos, startLoc, this.state.curPosition());
- }
-
- skipLineComment(startSkip) {
- const start = this.state.pos;
- const startLoc = this.state.curPosition();
- let ch = this.input.charCodeAt(this.state.pos += startSkip);
-
- if (this.state.pos < this.length) {
- while (!(0, _whitespace.isNewLine)(ch) && ++this.state.pos < this.length) {
- ch = this.input.charCodeAt(this.state.pos);
- }
- }
-
- if (this.isLookahead) return;
- this.pushComment(false, this.input.slice(start + startSkip, this.state.pos), start, this.state.pos, startLoc, this.state.curPosition());
- }
-
- skipSpace() {
- 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:
- this.skipBlockComment();
- break;
-
- case 47:
- this.skipLineComment(2);
- break;
-
- default:
- break loop;
- }
-
- break;
-
- default:
- if ((0, _whitespace.isWhitespace)(ch)) {
- ++this.state.pos;
- } else {
- break loop;
- }
-
- }
- }
- }
-
- finishToken(type, val) {
- this.state.end = this.state.pos;
- this.state.endLoc = this.state.curPosition();
- const prevType = this.state.type;
- this.state.type = type;
- this.state.value = val;
- if (!this.isLookahead) this.updateContext(prevType);
- }
-
- readToken_numberSign() {
- if (this.state.pos === 0 && this.readToken_interpreter()) {
- return;
- }
-
- const nextPos = this.state.pos + 1;
- const next = this.input.charCodeAt(nextPos);
-
- if (next >= 48 && next <= 57) {
- throw this.raise(this.state.pos, "Unexpected digit after hash token");
- }
-
- if (this.hasPlugin("classPrivateProperties") || this.hasPlugin("classPrivateMethods") || this.getPluginOption("pipelineOperator", "proposal") === "smart") {
- this.finishOp(_types2.types.hash, 1);
- } else {
- throw this.raise(this.state.pos, "Unexpected character '#'");
- }
- }
-
- 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(_types2.types.ellipsis);
- } else {
- ++this.state.pos;
- this.finishToken(_types2.types.dot);
- }
- }
-
- readToken_slash() {
- if (this.state.exprAllowed && !this.state.inType) {
- ++this.state.pos;
- this.readRegexp();
- return;
- }
-
- const next = this.input.charCodeAt(this.state.pos + 1);
-
- if (next === 61) {
- this.finishOp(_types2.types.assign, 2);
- } else {
- this.finishOp(_types2.types.slash, 1);
- }
- }
-
- readToken_interpreter() {
- if (this.state.pos !== 0 || this.length < 2) return false;
- const start = this.state.pos;
- this.state.pos += 1;
- let ch = this.input.charCodeAt(this.state.pos);
- if (ch !== 33) return false;
-
- while (!(0, _whitespace.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(_types2.types.interpreterDirective, value);
- return true;
- }
-
- readToken_mult_modulo(code) {
- let type = code === 42 ? _types2.types.star : _types2.types.modulo;
- let width = 1;
- let next = this.input.charCodeAt(this.state.pos + 1);
- const exprAllowed = this.state.exprAllowed;
-
- if (code === 42 && next === 42) {
- width++;
- next = this.input.charCodeAt(this.state.pos + 2);
- type = _types2.types.exponent;
- }
-
- if (next === 61 && !exprAllowed) {
- width++;
- type = _types2.types.assign;
- }
-
- 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(_types2.types.assign, 3);
- } else {
- this.finishOp(code === 124 ? _types2.types.logicalOR : _types2.types.logicalAND, 2);
- }
-
- return;
- }
-
- if (code === 124) {
- if (next === 62) {
- this.finishOp(_types2.types.pipeline, 2);
- return;
- }
- }
-
- if (next === 61) {
- this.finishOp(_types2.types.assign, 2);
- return;
- }
-
- this.finishOp(code === 124 ? _types2.types.bitwiseOR : _types2.types.bitwiseAND, 1);
- }
-
- readToken_caret() {
- const next = this.input.charCodeAt(this.state.pos + 1);
-
- if (next === 61) {
- this.finishOp(_types2.types.assign, 2);
- } else {
- this.finishOp(_types2.types.bitwiseXOR, 1);
- }
- }
-
- readToken_plus_min(code) {
- const next = this.input.charCodeAt(this.state.pos + 1);
-
- if (next === code) {
- if (next === 45 && !this.inModule && this.input.charCodeAt(this.state.pos + 2) === 62 && (this.state.lastTokEnd === 0 || _whitespace.lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.pos)))) {
- this.skipLineComment(3);
- this.skipSpace();
- this.nextToken();
- return;
- }
-
- this.finishOp(_types2.types.incDec, 2);
- return;
- }
-
- if (next === 61) {
- this.finishOp(_types2.types.assign, 2);
- } else {
- this.finishOp(_types2.types.plusMin, 1);
- }
- }
-
- readToken_lt_gt(code) {
- const next = this.input.charCodeAt(this.state.pos + 1);
- let size = 1;
-
- if (next === code) {
- size = code === 62 && this.input.charCodeAt(this.state.pos + 2) === 62 ? 3 : 2;
-
- if (this.input.charCodeAt(this.state.pos + size) === 61) {
- this.finishOp(_types2.types.assign, size + 1);
- return;
- }
-
- this.finishOp(_types2.types.bitShift, size);
- return;
- }
-
- if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.state.pos + 2) === 45 && this.input.charCodeAt(this.state.pos + 3) === 45) {
- this.skipLineComment(4);
- this.skipSpace();
- this.nextToken();
- return;
- }
-
- if (next === 61) {
- size = 2;
- }
-
- this.finishOp(_types2.types.relational, size);
- }
-
- readToken_eq_excl(code) {
- const next = this.input.charCodeAt(this.state.pos + 1);
-
- if (next === 61) {
- this.finishOp(_types2.types.equality, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2);
- return;
- }
-
- if (code === 61 && next === 62) {
- this.state.pos += 2;
- this.finishToken(_types2.types.arrow);
- return;
- }
-
- this.finishOp(code === 61 ? _types2.types.eq : _types2.types.bang, 1);
- }
-
- readToken_question() {
- const next = this.input.charCodeAt(this.state.pos + 1);
- const next2 = this.input.charCodeAt(this.state.pos + 2);
-
- if (next === 63 && !this.state.inType) {
- if (next2 === 61) {
- this.finishOp(_types2.types.assign, 3);
- } else {
- this.finishOp(_types2.types.nullishCoalescing, 2);
- }
- } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) {
- this.state.pos += 2;
- this.finishToken(_types2.types.questionDot);
- } else {
- ++this.state.pos;
- this.finishToken(_types2.types.question);
- }
- }
-
- getTokenFromCode(code) {
- switch (code) {
- case 46:
- this.readToken_dot();
- return;
-
- case 40:
- ++this.state.pos;
- this.finishToken(_types2.types.parenL);
- return;
-
- case 41:
- ++this.state.pos;
- this.finishToken(_types2.types.parenR);
- return;
-
- case 59:
- ++this.state.pos;
- this.finishToken(_types2.types.semi);
- return;
-
- case 44:
- ++this.state.pos;
- this.finishToken(_types2.types.comma);
- return;
-
- case 91:
- ++this.state.pos;
- this.finishToken(_types2.types.bracketL);
- return;
-
- case 93:
- ++this.state.pos;
- this.finishToken(_types2.types.bracketR);
- return;
-
- case 123:
- ++this.state.pos;
- this.finishToken(_types2.types.braceL);
- return;
-
- case 125:
- ++this.state.pos;
- this.finishToken(_types2.types.braceR);
- return;
-
- case 58:
- if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) {
- this.finishOp(_types2.types.doubleColon, 2);
- } else {
- ++this.state.pos;
- this.finishToken(_types2.types.colon);
- }
-
- return;
-
- case 63:
- this.readToken_question();
- return;
-
- case 96:
- ++this.state.pos;
- this.finishToken(_types2.types.backQuote);
- 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:
- case 62:
- this.readToken_lt_gt(code);
- return;
-
- case 61:
- case 33:
- this.readToken_eq_excl(code);
- return;
-
- case 126:
- this.finishOp(_types2.types.tilde, 1);
- return;
-
- case 64:
- ++this.state.pos;
- this.finishToken(_types2.types.at);
- return;
-
- case 35:
- this.readToken_numberSign();
- return;
-
- case 92:
- this.readWord();
- return;
-
- default:
- if ((0, _identifier.isIdentifierStart)(code)) {
- this.readWord();
- return;
- }
-
- }
-
- throw this.raise(this.state.pos, `Unexpected character '${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.pos;
- let escaped, inClass;
-
- for (;;) {
- if (this.state.pos >= this.length) {
- throw this.raise(start, "Unterminated regular expression");
- }
-
- const ch = this.input.charAt(this.state.pos);
-
- if (_whitespace.lineBreak.test(ch)) {
- throw this.raise(start, "Unterminated regular expression");
- }
-
- if (escaped) {
- escaped = false;
- } else {
- if (ch === "[") {
- inClass = true;
- } else if (ch === "]" && inClass) {
- inClass = false;
- } else if (ch === "/" && !inClass) {
- break;
- }
-
- escaped = ch === "\\";
- }
-
- ++this.state.pos;
- }
-
- const content = this.input.slice(start, this.state.pos);
- ++this.state.pos;
- let mods = "";
-
- while (this.state.pos < this.length) {
- const char = this.input[this.state.pos];
- const charCode = this.input.codePointAt(this.state.pos);
-
- if (VALID_REGEX_FLAGS.has(char)) {
- if (mods.indexOf(char) > -1) {
- this.raise(this.state.pos + 1, "Duplicate regular expression flag");
- }
- } else if ((0, _identifier.isIdentifierChar)(charCode) || charCode === 92) {
- this.raise(this.state.pos + 1, "Invalid regular expression flag");
- } else {
- break;
- }
-
- ++this.state.pos;
- mods += char;
- }
-
- this.finishToken(_types2.types.regexp, {
- 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 (this.hasPlugin("numericSeparator")) {
- 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, "A numeric separator is only allowed between two digits");
- } else if (forbiddenSiblings.indexOf(prev) > -1 || forbiddenSiblings.indexOf(next) > -1 || Number.isNaN(next)) {
- this.raise(this.state.pos, "A numeric separator is only allowed between two digits");
- }
-
- if (!allowNumSeparator) {
- this.raise(this.state.pos, "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences");
- }
-
- ++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, "Expected number in radix " + 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, "Expected number in radix " + radix);
- }
-
- if (this.hasPlugin("bigInt")) {
- if (this.input.charCodeAt(this.state.pos) === 110) {
- ++this.state.pos;
- isBigInt = true;
- }
- }
-
- if ((0, _identifier.isIdentifierStart)(this.input.codePointAt(this.state.pos))) {
- throw this.raise(this.state.pos, "Identifier directly after number");
- }
-
- if (isBigInt) {
- const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, "");
- this.finishToken(_types2.types.bigint, str);
- return;
- }
-
- this.finishToken(_types2.types.num, val);
- }
-
- readNumber(startsWithDot) {
- const start = this.state.pos;
- let isFloat = false;
- let isBigInt = false;
- let isNonOctalDecimalInt = false;
-
- if (!startsWithDot && this.readInt(10) === null) {
- this.raise(start, "Invalid number");
- }
-
- let octal = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48;
-
- if (octal) {
- if (this.state.strict) {
- this.raise(start, "Legacy octal literals are not allowed in strict mode");
- }
-
- if (/[89]/.test(this.input.slice(start, this.state.pos))) {
- octal = false;
- isNonOctalDecimalInt = true;
- }
- }
-
- let next = this.input.charCodeAt(this.state.pos);
-
- if (next === 46 && !octal) {
- ++this.state.pos;
- this.readInt(10);
- isFloat = true;
- next = this.input.charCodeAt(this.state.pos);
- }
-
- if ((next === 69 || next === 101) && !octal) {
- next = this.input.charCodeAt(++this.state.pos);
-
- if (next === 43 || next === 45) {
- ++this.state.pos;
- }
-
- if (this.readInt(10) === null) this.raise(start, "Invalid number");
- isFloat = true;
- next = this.input.charCodeAt(this.state.pos);
- }
-
- if (this.hasPlugin("numericSeparator") && (octal || isNonOctalDecimalInt)) {
- const underscorePos = this.input.slice(start, this.state.pos).indexOf("_");
-
- if (underscorePos > 0) {
- this.raise(underscorePos + start, "Numeric separator can not be used after leading 0");
- }
- }
-
- if (this.hasPlugin("bigInt")) {
- if (next === 110) {
- if (isFloat || octal || isNonOctalDecimalInt) {
- this.raise(start, "Invalid BigIntLiteral");
- }
-
- ++this.state.pos;
- isBigInt = true;
- }
- }
-
- if ((0, _identifier.isIdentifierStart)(this.input.codePointAt(this.state.pos))) {
- throw this.raise(this.state.pos, "Identifier directly after number");
- }
-
- const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, "");
-
- if (isBigInt) {
- this.finishToken(_types2.types.bigint, str);
- return;
- }
-
- const val = octal ? parseInt(str, 8) : parseFloat(str);
- this.finishToken(_types2.types.num, 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, "Code point out of bounds");
- } 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, "Unterminated string constant");
- }
-
- 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 ((0, _whitespace.isNewLine)(ch)) {
- throw this.raise(this.state.start, "Unterminated string constant");
- } else {
- ++this.state.pos;
- }
- }
-
- out += this.input.slice(chunkStart, this.state.pos++);
- this.finishToken(_types2.types.string, out);
- }
-
- readTmplToken() {
- let out = "",
- chunkStart = this.state.pos,
- containsInvalid = false;
-
- for (;;) {
- if (this.state.pos >= this.length) {
- throw this.raise(this.state.start, "Unterminated template");
- }
-
- 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(_types2.types.template)) {
- if (ch === 36) {
- this.state.pos += 2;
- this.finishToken(_types2.types.dollarBraceL);
- return;
- } else {
- ++this.state.pos;
- this.finishToken(_types2.types.backQuote);
- return;
- }
- }
-
- out += this.input.slice(chunkStart, this.state.pos);
- this.finishToken(_types2.types.template, 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 ((0, _whitespace.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;
- }
- }
- }
-
- 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;
- }
-
- default:
- if (ch >= 48 && ch <= 55) {
- const codePos = this.state.pos - 1;
- let octalStr = this.input.substr(this.state.pos - 1, 3).match(/^[0-7]+/)[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 if (this.state.strict) {
- this.raise(codePos, "Octal literal in strict mode");
- } else if (!this.state.containsOctal) {
- this.state.containsOctal = true;
- this.state.octalPosition = codePos;
- }
- }
-
- 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, "Bad character escape sequence");
- } else {
- this.state.pos = codePos - 1;
- }
- }
-
- return n;
- }
-
- readWord1() {
- let word = "";
- this.state.containsEsc = false;
- const start = this.state.pos;
- let chunkStart = this.state.pos;
-
- while (this.state.pos < this.length) {
- const ch = this.input.codePointAt(this.state.pos);
-
- if ((0, _identifier.isIdentifierChar)(ch)) {
- this.state.pos += ch <= 0xffff ? 1 : 2;
- } else if (this.state.isIterator && ch === 64) {
- ++this.state.pos;
- } 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 ? _identifier.isIdentifierStart : _identifier.isIdentifierChar;
-
- if (this.input.charCodeAt(++this.state.pos) !== 117) {
- this.raise(this.state.pos, "Expecting Unicode escape sequence \\uXXXX");
- continue;
- }
-
- ++this.state.pos;
- const esc = this.readCodePoint(true);
-
- if (esc !== null) {
- if (!identifierCheck(esc)) {
- this.raise(escStart, "Invalid Unicode escape");
- }
-
- word += String.fromCodePoint(esc);
- }
-
- chunkStart = this.state.pos;
- } else {
- break;
- }
- }
-
- return word + this.input.slice(chunkStart, this.state.pos);
- }
-
- isIterator(word) {
- return word === "@@iterator" || word === "@@asyncIterator";
- }
-
- readWord() {
- const word = this.readWord1();
-
- const type = _types2.keywords.get(word) || _types2.types.name;
-
- if (this.state.isIterator && (!this.isIterator(word) || !this.state.inType)) {
- this.raise(this.state.pos, `Invalid identifier ${word}`);
- }
-
- this.finishToken(type, word);
- }
-
- checkKeywordEscapes() {
- const kw = this.state.type.keyword;
-
- if (kw && this.state.containsEsc) {
- this.raise(this.state.start, `Escape sequence in keyword ${kw}`);
- }
- }
-
- braceIsBlock(prevType) {
- const parent = this.curContext();
-
- if (parent === _context.types.functionExpression || parent === _context.types.functionStatement) {
- return true;
- }
-
- if (prevType === _types2.types.colon && (parent === _context.types.braceStatement || parent === _context.types.braceExpression)) {
- return !parent.isExpr;
- }
-
- if (prevType === _types2.types._return || prevType === _types2.types.name && this.state.exprAllowed) {
- return _whitespace.lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start));
- }
-
- if (prevType === _types2.types._else || prevType === _types2.types.semi || prevType === _types2.types.eof || prevType === _types2.types.parenR || prevType === _types2.types.arrow) {
- return true;
- }
-
- if (prevType === _types2.types.braceL) {
- return parent === _context.types.braceStatement;
- }
-
- if (prevType === _types2.types._var || prevType === _types2.types._const || prevType === _types2.types.name) {
- return false;
- }
-
- if (prevType === _types2.types.relational) {
- return true;
- }
-
- return !this.state.exprAllowed;
- }
-
- updateContext(prevType) {
- const type = this.state.type;
- let update;
-
- if (type.keyword && (prevType === _types2.types.dot || prevType === _types2.types.questionDot)) {
- this.state.exprAllowed = false;
- } else if (update = type.updateContext) {
- update.call(this, prevType);
- } else {
- this.state.exprAllowed = type.beforeExpr;
- }
- }
-
-}
-
-exports.default = Tokenizer; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/tokenizer/state.js b/assets/node_modules/@babel/parser/lib/tokenizer/state.js
deleted file mode 100644
index eef3069..0000000
--- a/assets/node_modules/@babel/parser/lib/tokenizer/state.js
+++ /dev/null
@@ -1,98 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var N = _interopRequireWildcard(require("../types"));
-
-var _location = require("../util/location");
-
-var _context = require("./context");
-
-var _types2 = require("./types");
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-class State {
- constructor() {
- this.errors = [];
- this.potentialArrowAt = -1;
- this.noArrowAt = [];
- this.noArrowParamsConversionAt = [];
- this.inParameters = false;
- this.maybeInArrowParameters = false;
- this.inPipeline = false;
- this.inType = false;
- this.noAnonFunctionType = false;
- this.inPropertyName = false;
- this.hasFlowComment = false;
- this.isIterator = false;
- this.topicContext = {
- maxNumOfResolvableTopics: 0,
- maxTopicIndex: null
- };
- this.soloAwait = false;
- this.inFSharpPipelineDirectBody = false;
- this.labels = [];
- this.decoratorStack = [[]];
- this.yieldPos = -1;
- this.awaitPos = -1;
- this.comments = [];
- this.trailingComments = [];
- this.leadingComments = [];
- this.commentStack = [];
- this.commentPreviousNode = null;
- this.pos = 0;
- this.lineStart = 0;
- this.type = _types2.types.eof;
- this.value = null;
- this.start = 0;
- this.end = 0;
- this.lastTokEndLoc = null;
- this.lastTokStartLoc = null;
- this.lastTokStart = 0;
- this.lastTokEnd = 0;
- this.context = [_context.types.braceStatement];
- this.exprAllowed = true;
- this.containsEsc = false;
- this.containsOctal = false;
- this.octalPosition = null;
- this.exportedIdentifiers = [];
- this.tokensLength = 0;
- }
-
- init(options) {
- this.strict = options.strictMode === false ? false : options.sourceType === "module";
- this.curLine = options.startLine;
- this.startLoc = this.endLoc = this.curPosition();
- }
-
- curPosition() {
- return new _location.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;
- }
-
-}
-
-exports.default = State; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/tokenizer/types.js b/assets/node_modules/@babel/parser/lib/tokenizer/types.js
deleted file mode 100644
index e9e3d81..0000000
--- a/assets/node_modules/@babel/parser/lib/tokenizer/types.js
+++ /dev/null
@@ -1,267 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.types = exports.keywords = exports.TokenType = void 0;
-const beforeExpr = true;
-const startsExpr = true;
-const isLoop = true;
-const isAssign = true;
-const prefix = true;
-const postfix = true;
-
-class TokenType {
- constructor(label, conf = {}) {
- 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;
- }
-
-}
-
-exports.TokenType = TokenType;
-const keywords = new Map();
-exports.keywords = keywords;
-
-function createKeyword(name, options = {}) {
- options.keyword = name;
- const token = new TokenType(name, options);
- keywords.set(name, token);
- return token;
-}
-
-function createBinop(name, binop) {
- return new TokenType(name, {
- beforeExpr,
- binop
- });
-}
-
-const types = {
- num: new TokenType("num", {
- startsExpr
- }),
- bigint: new TokenType("bigint", {
- startsExpr
- }),
- regexp: new TokenType("regexp", {
- startsExpr
- }),
- string: new TokenType("string", {
- startsExpr
- }),
- name: new TokenType("name", {
- startsExpr
- }),
- eof: new TokenType("eof"),
- bracketL: new TokenType("[", {
- beforeExpr,
- startsExpr
- }),
- bracketR: new TokenType("]"),
- braceL: new TokenType("{", {
- beforeExpr,
- startsExpr
- }),
- braceBarL: new TokenType("{|", {
- beforeExpr,
- startsExpr
- }),
- braceR: new TokenType("}"),
- braceBarR: new TokenType("|}"),
- parenL: new TokenType("(", {
- beforeExpr,
- startsExpr
- }),
- parenR: new TokenType(")"),
- comma: new TokenType(",", {
- beforeExpr
- }),
- semi: new TokenType(";", {
- beforeExpr
- }),
- colon: new TokenType(":", {
- beforeExpr
- }),
- doubleColon: new TokenType("::", {
- beforeExpr
- }),
- dot: new TokenType("."),
- question: new TokenType("?", {
- beforeExpr
- }),
- questionDot: new TokenType("?."),
- arrow: new TokenType("=>", {
- beforeExpr
- }),
- template: new TokenType("template"),
- ellipsis: new TokenType("...", {
- beforeExpr
- }),
- backQuote: new TokenType("`", {
- startsExpr
- }),
- dollarBraceL: new TokenType("${", {
- beforeExpr,
- startsExpr
- }),
- at: new TokenType("@"),
- hash: new TokenType("#", {
- startsExpr
- }),
- interpreterDirective: new TokenType("#!..."),
- eq: new TokenType("=", {
- beforeExpr,
- isAssign
- }),
- assign: new TokenType("_=", {
- beforeExpr,
- isAssign
- }),
- incDec: new TokenType("++/--", {
- prefix,
- postfix,
- startsExpr
- }),
- bang: new TokenType("!", {
- beforeExpr,
- prefix,
- startsExpr
- }),
- tilde: new TokenType("~", {
- 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),
- relational: createBinop("</>/<=/>=", 7),
- bitShift: createBinop("<</>>/>>>", 8),
- plusMin: new TokenType("+/-", {
- beforeExpr,
- binop: 9,
- prefix,
- startsExpr
- }),
- modulo: new TokenType("%", {
- beforeExpr,
- binop: 10,
- startsExpr
- }),
- star: createBinop("*", 10),
- slash: createBinop("/", 10),
- exponent: new TokenType("**", {
- beforeExpr,
- binop: 11,
- rightAssociative: true
- }),
- _break: createKeyword("break"),
- _case: createKeyword("case", {
- beforeExpr
- }),
- _catch: createKeyword("catch"),
- _continue: createKeyword("continue"),
- _debugger: createKeyword("debugger"),
- _default: createKeyword("default", {
- beforeExpr
- }),
- _do: createKeyword("do", {
- isLoop,
- beforeExpr
- }),
- _else: createKeyword("else", {
- beforeExpr
- }),
- _finally: createKeyword("finally"),
- _for: createKeyword("for", {
- isLoop
- }),
- _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"),
- _while: createKeyword("while", {
- isLoop
- }),
- _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
- }),
- _in: createKeyword("in", {
- beforeExpr,
- binop: 7
- }),
- _instanceof: createKeyword("instanceof", {
- beforeExpr,
- binop: 7
- }),
- _typeof: createKeyword("typeof", {
- beforeExpr,
- prefix,
- startsExpr
- }),
- _void: createKeyword("void", {
- beforeExpr,
- prefix,
- startsExpr
- }),
- _delete: createKeyword("delete", {
- beforeExpr,
- prefix,
- startsExpr
- })
-};
-exports.types = types; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/types.js b/assets/node_modules/@babel/parser/lib/types.js
deleted file mode 100644
index e69de29..0000000
--- a/assets/node_modules/@babel/parser/lib/types.js
+++ /dev/null
diff --git a/assets/node_modules/@babel/parser/lib/util/class-scope.js b/assets/node_modules/@babel/parser/lib/util/class-scope.js
deleted file mode 100644
index c72e68a..0000000
--- a/assets/node_modules/@babel/parser/lib/util/class-scope.js
+++ /dev/null
@@ -1,101 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.ClassScope = void 0;
-
-var _scopeflags = require("./scopeflags");
-
-class ClassScope {
- constructor() {
- this.privateNames = new Set();
- this.loneAccessors = new Map();
- this.undefinedPrivateNames = new Map();
- }
-
-}
-
-exports.ClassScope = ClassScope;
-
-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 (let _i = 0, _Array$from = Array.from(oldClassScope.undefinedPrivateNames); _i < _Array$from.length; _i++) {
- const [name, pos] = _Array$from[_i];
-
- if (current) {
- if (!current.undefinedPrivateNames.has(name)) {
- current.undefinedPrivateNames.set(name, pos);
- }
- } else {
- this.raiseUndeclaredPrivateName(name, pos);
- }
- }
- }
-
- declarePrivateName(name, elementType, pos) {
- const classScope = this.current();
- let redefined = classScope.privateNames.has(name);
-
- if (elementType & _scopeflags.CLASS_ELEMENT_KIND_ACCESSOR) {
- const accessor = redefined && classScope.loneAccessors.get(name);
-
- if (accessor) {
- const oldStatic = accessor & _scopeflags.CLASS_ELEMENT_FLAG_STATIC;
- const newStatic = elementType & _scopeflags.CLASS_ELEMENT_FLAG_STATIC;
- const oldKind = accessor & _scopeflags.CLASS_ELEMENT_KIND_ACCESSOR;
- const newKind = elementType & _scopeflags.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, `Duplicate private name #${name}`);
- }
-
- classScope.privateNames.add(name);
- classScope.undefinedPrivateNames.delete(name);
- }
-
- usePrivateName(name, pos) {
- let classScope;
-
- for (let _i2 = 0, _this$stack = this.stack; _i2 < _this$stack.length; _i2++) {
- classScope = _this$stack[_i2];
- if (classScope.privateNames.has(name)) return;
- }
-
- if (classScope) {
- classScope.undefinedPrivateNames.set(name, pos);
- } else {
- this.raiseUndeclaredPrivateName(name, pos);
- }
- }
-
- raiseUndeclaredPrivateName(name, pos) {
- this.raise(pos, `Private name #${name} is not defined`);
- }
-
-}
-
-exports.default = ClassScopeHandler; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/util/identifier.js b/assets/node_modules/@babel/parser/lib/util/identifier.js
deleted file mode 100644
index 6e73b2f..0000000
--- a/assets/node_modules/@babel/parser/lib/util/identifier.js
+++ /dev/null
@@ -1,99 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.isStrictReservedWord = isStrictReservedWord;
-exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;
-exports.isStrictBindReservedWord = isStrictBindReservedWord;
-exports.isKeyword = isKeyword;
-exports.isIdentifierStart = isIdentifierStart;
-exports.isIteratorStart = isIteratorStart;
-exports.isIdentifierChar = isIdentifierChar;
-exports.keywordRelationalOperator = exports.isReservedWord = void 0;
-
-var _types = require("../tokenizer/types");
-
-const reservedWords = {
- strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
- strictBind: ["eval", "arguments"]
-};
-const reservedWordsStrictSet = new Set(reservedWords.strict);
-const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
-
-const isReservedWord = (word, inModule) => {
- return inModule && word === "await" || word === "enum";
-};
-
-exports.isReservedWord = isReservedWord;
-
-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 _types.keywords.has(word);
-}
-
-const keywordRelationalOperator = /^in(stanceof)?$/;
-exports.keywordRelationalOperator = keywordRelationalOperator;
-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\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\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-\u170c\u170e-\u1711\u1720-\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-\u1b4b\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-\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\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7c6\ua7f7-\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-\uab67\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\u08d3-\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\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\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\u0d82\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-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\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-\u1df9\u1dfb-\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\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, 157, 310, 10, 21, 11, 7, 153, 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, 477, 28, 11, 0, 9, 21, 155, 22, 13, 52, 76, 44, 33, 24, 27, 35, 30, 0, 12, 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, 0, 33, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 230, 43, 117, 63, 32, 0, 161, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 35, 56, 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, 270, 921, 103, 110, 18, 195, 2749, 1070, 4050, 582, 8634, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 754, 9486, 286, 50, 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, 2357, 44, 11, 6, 17, 0, 370, 43, 1301, 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, 42710, 42, 4148, 12, 221, 3, 5761, 15, 7472, 3104, 541];
-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, 525, 10, 176, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 4, 9, 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, 232, 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, 135, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 19723, 1, 5319, 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, 419, 13, 1495, 6, 110, 6, 6, 9, 792487, 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 isIteratorStart(current, next) {
- return current === 64 && next === 64;
-}
-
-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);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/util/location.js b/assets/node_modules/@babel/parser/lib/util/location.js
deleted file mode 100644
index 2328090..0000000
--- a/assets/node_modules/@babel/parser/lib/util/location.js
+++ /dev/null
@@ -1,43 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.getLineInfo = getLineInfo;
-exports.SourceLocation = exports.Position = void 0;
-
-var _whitespace = require("./whitespace");
-
-class Position {
- constructor(line, col) {
- this.line = line;
- this.column = col;
- }
-
-}
-
-exports.Position = Position;
-
-class SourceLocation {
- constructor(start, end) {
- this.start = start;
- this.end = end;
- }
-
-}
-
-exports.SourceLocation = SourceLocation;
-
-function getLineInfo(input, offset) {
- let line = 1;
- let lineStart = 0;
- let match;
- _whitespace.lineBreakG.lastIndex = 0;
-
- while ((match = _whitespace.lineBreakG.exec(input)) && match.index < offset) {
- line++;
- lineStart = _whitespace.lineBreakG.lastIndex;
- }
-
- return new Position(line, offset - lineStart);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/util/scope.js b/assets/node_modules/@babel/parser/lib/util/scope.js
deleted file mode 100644
index 679981d..0000000
--- a/assets/node_modules/@babel/parser/lib/util/scope.js
+++ /dev/null
@@ -1,183 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.Scope = void 0;
-
-var _scopeflags = require("./scopeflags");
-
-var N = _interopRequireWildcard(require("../types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-class Scope {
- constructor(flags) {
- this.var = [];
- this.lexical = [];
- this.functions = [];
- this.flags = flags;
- }
-
-}
-
-exports.Scope = Scope;
-
-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.currentVarScope().flags & _scopeflags.SCOPE_FUNCTION) > 0;
- }
-
- get inGenerator() {
- return (this.currentVarScope().flags & _scopeflags.SCOPE_GENERATOR) > 0;
- }
-
- get inAsync() {
- for (let i = this.scopeStack.length - 1;; i--) {
- const scope = this.scopeStack[i];
- const isVarScope = scope.flags & _scopeflags.SCOPE_VAR;
- const isClassScope = scope.flags & _scopeflags.SCOPE_CLASS;
-
- if (isClassScope && !isVarScope) {
- return false;
- } else if (isVarScope) {
- return (scope.flags & _scopeflags.SCOPE_ASYNC) > 0;
- }
- }
- }
-
- get allowSuper() {
- return (this.currentThisScope().flags & _scopeflags.SCOPE_SUPER) > 0;
- }
-
- get allowDirectSuper() {
- return (this.currentThisScope().flags & _scopeflags.SCOPE_DIRECT_SUPER) > 0;
- }
-
- get inClass() {
- return (this.currentThisScope().flags & _scopeflags.SCOPE_CLASS) > 0;
- }
-
- get inNonArrowFunction() {
- return (this.currentThisScope().flags & _scopeflags.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 & _scopeflags.SCOPE_FUNCTION || !this.inModule && scope.flags & _scopeflags.SCOPE_PROGRAM);
- }
-
- declareName(name, bindingType, pos) {
- let scope = this.currentScope();
-
- if (bindingType & _scopeflags.BIND_SCOPE_LEXICAL || bindingType & _scopeflags.BIND_SCOPE_FUNCTION) {
- this.checkRedeclarationInScope(scope, name, bindingType, pos);
-
- if (bindingType & _scopeflags.BIND_SCOPE_FUNCTION) {
- scope.functions.push(name);
- } else {
- scope.lexical.push(name);
- }
-
- if (bindingType & _scopeflags.BIND_SCOPE_LEXICAL) {
- this.maybeExportDefined(scope, name);
- }
- } else if (bindingType & _scopeflags.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.push(name);
- this.maybeExportDefined(scope, name);
- if (scope.flags & _scopeflags.SCOPE_VAR) break;
- }
- }
-
- if (this.inModule && scope.flags & _scopeflags.SCOPE_PROGRAM) {
- this.undefinedExports.delete(name);
- }
- }
-
- maybeExportDefined(scope, name) {
- if (this.inModule && scope.flags & _scopeflags.SCOPE_PROGRAM) {
- this.undefinedExports.delete(name);
- }
- }
-
- checkRedeclarationInScope(scope, name, bindingType, pos) {
- if (this.isRedeclaredInScope(scope, name, bindingType)) {
- this.raise(pos, `Identifier '${name}' has already been declared`);
- }
- }
-
- isRedeclaredInScope(scope, name, bindingType) {
- if (!(bindingType & _scopeflags.BIND_KIND_VALUE)) return false;
-
- if (bindingType & _scopeflags.BIND_SCOPE_LEXICAL) {
- return scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;
- }
-
- if (bindingType & _scopeflags.BIND_SCOPE_FUNCTION) {
- return scope.lexical.indexOf(name) > -1 || !this.treatFunctionsAsVarInScope(scope) && scope.var.indexOf(name) > -1;
- }
-
- return scope.lexical.indexOf(name) > -1 && !(scope.flags & _scopeflags.SCOPE_SIMPLE_CATCH && scope.lexical[0] === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.indexOf(name) > -1;
- }
-
- checkLocalExport(id) {
- if (this.scopeStack[0].lexical.indexOf(id.name) === -1 && this.scopeStack[0].var.indexOf(id.name) === -1 && this.scopeStack[0].functions.indexOf(id.name) === -1) {
- this.undefinedExports.set(id.name, id.start);
- }
- }
-
- currentScope() {
- return this.scopeStack[this.scopeStack.length - 1];
- }
-
- currentVarScope() {
- for (let i = this.scopeStack.length - 1;; i--) {
- const scope = this.scopeStack[i];
-
- if (scope.flags & _scopeflags.SCOPE_VAR) {
- return scope;
- }
- }
- }
-
- currentThisScope() {
- for (let i = this.scopeStack.length - 1;; i--) {
- const scope = this.scopeStack[i];
-
- if ((scope.flags & _scopeflags.SCOPE_VAR || scope.flags & _scopeflags.SCOPE_CLASS) && !(scope.flags & _scopeflags.SCOPE_ARROW)) {
- return scope;
- }
- }
- }
-
-}
-
-exports.default = ScopeHandler; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/util/scopeflags.js b/assets/node_modules/@babel/parser/lib/util/scopeflags.js
deleted file mode 100644
index c9f5dcc..0000000
--- a/assets/node_modules/@babel/parser/lib/util/scopeflags.js
+++ /dev/null
@@ -1,100 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.functionFlags = functionFlags;
-exports.CLASS_ELEMENT_OTHER = exports.CLASS_ELEMENT_INSTANCE_SETTER = exports.CLASS_ELEMENT_INSTANCE_GETTER = exports.CLASS_ELEMENT_STATIC_SETTER = exports.CLASS_ELEMENT_STATIC_GETTER = exports.CLASS_ELEMENT_KIND_ACCESSOR = exports.CLASS_ELEMENT_KIND_SETTER = exports.CLASS_ELEMENT_KIND_GETTER = exports.CLASS_ELEMENT_FLAG_STATIC = exports.BIND_TS_NAMESPACE = exports.BIND_TS_CONST_ENUM = exports.BIND_OUTSIDE = exports.BIND_NONE = exports.BIND_TS_AMBIENT = exports.BIND_TS_ENUM = exports.BIND_TS_TYPE = exports.BIND_TS_INTERFACE = exports.BIND_FUNCTION = exports.BIND_VAR = exports.BIND_LEXICAL = exports.BIND_CLASS = exports.BIND_FLAGS_TS_EXPORT_ONLY = exports.BIND_FLAGS_TS_CONST_ENUM = exports.BIND_FLAGS_TS_ENUM = exports.BIND_FLAGS_CLASS = exports.BIND_FLAGS_NONE = exports.BIND_SCOPE_OUTSIDE = exports.BIND_SCOPE_FUNCTION = exports.BIND_SCOPE_LEXICAL = exports.BIND_SCOPE_VAR = exports.BIND_KIND_TYPE = exports.BIND_KIND_VALUE = exports.SCOPE_VAR = exports.SCOPE_TS_MODULE = exports.SCOPE_CLASS = exports.SCOPE_DIRECT_SUPER = exports.SCOPE_SUPER = exports.SCOPE_SIMPLE_CATCH = exports.SCOPE_ARROW = exports.SCOPE_GENERATOR = exports.SCOPE_ASYNC = exports.SCOPE_FUNCTION = exports.SCOPE_PROGRAM = exports.SCOPE_OTHER = void 0;
-const SCOPE_OTHER = 0b0000000000,
- SCOPE_PROGRAM = 0b0000000001,
- SCOPE_FUNCTION = 0b0000000010,
- SCOPE_ASYNC = 0b0000000100,
- SCOPE_GENERATOR = 0b0000001000,
- SCOPE_ARROW = 0b0000010000,
- SCOPE_SIMPLE_CATCH = 0b0000100000,
- SCOPE_SUPER = 0b0001000000,
- SCOPE_DIRECT_SUPER = 0b0010000000,
- SCOPE_CLASS = 0b0100000000,
- SCOPE_TS_MODULE = 0b1000000000,
- SCOPE_VAR = SCOPE_PROGRAM | SCOPE_FUNCTION | SCOPE_TS_MODULE;
-exports.SCOPE_VAR = SCOPE_VAR;
-exports.SCOPE_TS_MODULE = SCOPE_TS_MODULE;
-exports.SCOPE_CLASS = SCOPE_CLASS;
-exports.SCOPE_DIRECT_SUPER = SCOPE_DIRECT_SUPER;
-exports.SCOPE_SUPER = SCOPE_SUPER;
-exports.SCOPE_SIMPLE_CATCH = SCOPE_SIMPLE_CATCH;
-exports.SCOPE_ARROW = SCOPE_ARROW;
-exports.SCOPE_GENERATOR = SCOPE_GENERATOR;
-exports.SCOPE_ASYNC = SCOPE_ASYNC;
-exports.SCOPE_FUNCTION = SCOPE_FUNCTION;
-exports.SCOPE_PROGRAM = SCOPE_PROGRAM;
-exports.SCOPE_OTHER = SCOPE_OTHER;
-
-function functionFlags(isAsync, isGenerator) {
- return SCOPE_FUNCTION | (isAsync ? SCOPE_ASYNC : 0) | (isGenerator ? SCOPE_GENERATOR : 0);
-}
-
-const BIND_KIND_VALUE = 0b00000000001,
- BIND_KIND_TYPE = 0b00000000010,
- BIND_SCOPE_VAR = 0b00000000100,
- BIND_SCOPE_LEXICAL = 0b00000001000,
- BIND_SCOPE_FUNCTION = 0b00000010000,
- BIND_SCOPE_OUTSIDE = 0b00000100000,
- BIND_FLAGS_NONE = 0b00001000000,
- BIND_FLAGS_CLASS = 0b00010000000,
- BIND_FLAGS_TS_ENUM = 0b00100000000,
- BIND_FLAGS_TS_CONST_ENUM = 0b01000000000,
- BIND_FLAGS_TS_EXPORT_ONLY = 0b10000000000;
-exports.BIND_FLAGS_TS_EXPORT_ONLY = BIND_FLAGS_TS_EXPORT_ONLY;
-exports.BIND_FLAGS_TS_CONST_ENUM = BIND_FLAGS_TS_CONST_ENUM;
-exports.BIND_FLAGS_TS_ENUM = BIND_FLAGS_TS_ENUM;
-exports.BIND_FLAGS_CLASS = BIND_FLAGS_CLASS;
-exports.BIND_FLAGS_NONE = BIND_FLAGS_NONE;
-exports.BIND_SCOPE_OUTSIDE = BIND_SCOPE_OUTSIDE;
-exports.BIND_SCOPE_FUNCTION = BIND_SCOPE_FUNCTION;
-exports.BIND_SCOPE_LEXICAL = BIND_SCOPE_LEXICAL;
-exports.BIND_SCOPE_VAR = BIND_SCOPE_VAR;
-exports.BIND_KIND_TYPE = BIND_KIND_TYPE;
-exports.BIND_KIND_VALUE = BIND_KIND_VALUE;
-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;
-exports.BIND_TS_NAMESPACE = BIND_TS_NAMESPACE;
-exports.BIND_TS_CONST_ENUM = BIND_TS_CONST_ENUM;
-exports.BIND_OUTSIDE = BIND_OUTSIDE;
-exports.BIND_NONE = BIND_NONE;
-exports.BIND_TS_AMBIENT = BIND_TS_AMBIENT;
-exports.BIND_TS_ENUM = BIND_TS_ENUM;
-exports.BIND_TS_TYPE = BIND_TS_TYPE;
-exports.BIND_TS_INTERFACE = BIND_TS_INTERFACE;
-exports.BIND_FUNCTION = BIND_FUNCTION;
-exports.BIND_VAR = BIND_VAR;
-exports.BIND_LEXICAL = BIND_LEXICAL;
-exports.BIND_CLASS = BIND_CLASS;
-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;
-exports.CLASS_ELEMENT_KIND_ACCESSOR = CLASS_ELEMENT_KIND_ACCESSOR;
-exports.CLASS_ELEMENT_KIND_SETTER = CLASS_ELEMENT_KIND_SETTER;
-exports.CLASS_ELEMENT_KIND_GETTER = CLASS_ELEMENT_KIND_GETTER;
-exports.CLASS_ELEMENT_FLAG_STATIC = CLASS_ELEMENT_FLAG_STATIC;
-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;
-exports.CLASS_ELEMENT_OTHER = CLASS_ELEMENT_OTHER;
-exports.CLASS_ELEMENT_INSTANCE_SETTER = CLASS_ELEMENT_INSTANCE_SETTER;
-exports.CLASS_ELEMENT_INSTANCE_GETTER = CLASS_ELEMENT_INSTANCE_GETTER;
-exports.CLASS_ELEMENT_STATIC_SETTER = CLASS_ELEMENT_STATIC_SETTER;
-exports.CLASS_ELEMENT_STATIC_GETTER = CLASS_ELEMENT_STATIC_GETTER; \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/lib/util/whitespace.js b/assets/node_modules/@babel/parser/lib/util/whitespace.js
deleted file mode 100644
index 8fea9f5..0000000
--- a/assets/node_modules/@babel/parser/lib/util/whitespace.js
+++ /dev/null
@@ -1,58 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.isNewLine = isNewLine;
-exports.isWhitespace = isWhitespace;
-exports.skipWhiteSpace = exports.lineBreakG = exports.lineBreak = void 0;
-const lineBreak = /\r\n?|[\n\u2028\u2029]/;
-exports.lineBreak = lineBreak;
-const lineBreakG = new RegExp(lineBreak.source, "g");
-exports.lineBreakG = lineBreakG;
-
-function isNewLine(code) {
- switch (code) {
- case 10:
- case 13:
- case 8232:
- case 8233:
- return true;
-
- default:
- return false;
- }
-}
-
-const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g;
-exports.skipWhiteSpace = skipWhiteSpace;
-
-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;
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/parser/package.json b/assets/node_modules/@babel/parser/package.json
deleted file mode 100644
index 32a11d3..0000000
--- a/assets/node_modules/@babel/parser/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "@babel/parser",
- "version": "7.8.4",
- "description": "A JavaScript parser",
- "author": "Sebastian McKenzie <sebmck@gmail.com>",
- "homepage": "https://babeljs.io/",
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- },
- "keywords": [
- "babel",
- "javascript",
- "parser",
- "tc39",
- "ecmascript",
- "@babel/parser"
- ],
- "repository": "https://github.com/babel/babel/tree/master/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.8.3",
- "@babel/helper-fixtures": "^7.8.3",
- "charcodes": "^0.2.0",
- "unicode-12.0.0": "^0.7.9"
- },
- "bin": {
- "parser": "./bin/babel-parser.js"
- },
- "gitHead": "5c2e6bc07fed3d28801d93168622c99ae622653a"
-}
diff --git a/assets/node_modules/@babel/parser/typings/babel-parser.d.ts b/assets/node_modules/@babel/parser/typings/babel-parser.d.ts
deleted file mode 100644
index 4016108..0000000
--- a/assets/node_modules/@babel/parser/typings/babel-parser.d.ts
+++ /dev/null
@@ -1,146 +0,0 @@
-// Type definitions for @babel/parser
-// Project: https://github.com/babel/babel/tree/master/packages/babel-parser
-// Definitions by: Troy Gerwien <https://github.com/yortus>
-// Marvin Hagemeister <https://github.com/marvinhagemeister>
-// Avi Vahl <https://github.com/AviVahl>
-// TypeScript Version: 2.9
-
-/**
- * Parse the provided code as an entire ECMAScript program.
- */
-export function parse(input: string, options?: ParserOptions): import('@babel/types').File;
-
-/**
- * Parse the provided code as a single expression.
- */
-export function parseExpression(input: string, options?: ParserOptions): import('@babel/types').Expression;
-
-export interface ParserOptions {
- /**
- * By default, import and export declarations can only appear at a program's top level.
- * Setting this option to true allows them anywhere where a statement is allowed.
- */
- allowImportExportEverywhere?: boolean;
-
- /**
- * By default, await use is not allowed outside of an async function.
- * Set this to true to accept such code.
- */
- allowAwaitOutsideFunction?: boolean;
-
- /**
- * By default, a return statement at the top level raises an error.
- * Set this to true to accept such code.
- */
- allowReturnOutsideFunction?: boolean;
-
- allowSuperOutsideMethod?: boolean;
-
- /**
- * By default, exported identifiers must refer to a declared variable.
- * Set this to true to allow export statements to reference undeclared variables.
- */
- allowUndeclaredExports?: boolean;
-
- /**
- * Indicate the mode the code should be parsed in.
- * Can be one of "script", "module", or "unambiguous". Defaults to "script".
- * "unambiguous" will make @babel/parser attempt to guess, based on the presence
- * of ES6 import or export statements.
- * Files with ES6 imports and exports are considered "module" and are otherwise "script".
- */
- sourceType?: 'script' | 'module' | 'unambiguous';
-
- /**
- * Correlate output AST nodes with their source filename.
- * Useful when generating code and source maps from the ASTs of multiple input files.
- */
- sourceFilename?: string;
-
- /**
- * By default, the first line of code parsed is treated as line 1.
- * You can provide a line number to alternatively start with.
- * Useful for integration with other source tools.
- */
- startLine?: number;
-
- /**
- * Array containing the plugins that you want to enable.
- */
- plugins?: ParserPlugin[];
-
- /**
- * Should the parser work in strict mode.
- * Defaults to true if sourceType === 'module'. Otherwise, false.
- */
- strictMode?: boolean;
-
- /**
- * Adds a ranges property to each node: [node.start, node.end]
- */
- ranges?: boolean;
-
- /**
- * Adds all parsed tokens to a tokens property on the File node.
- */
- tokens?: boolean;
-
- /**
- * By default, the parser adds information about parentheses by setting
- * `extra.parenthesized` to `true` as needed.
- * When this option is `true` the parser creates `ParenthesizedExpression`
- * AST nodes instead of using the `extra` property.
- */
- createParenthesizedExpressions?: boolean;
-}
-
-export type ParserPlugin =
- 'asyncGenerators' |
- 'bigInt' |
- 'classPrivateMethods' |
- 'classPrivateProperties' |
- 'classProperties' |
- 'decorators' |
- 'decorators-legacy' |
- 'doExpressions' |
- 'dynamicImport' |
- 'estree' |
- 'exportDefaultFrom' |
- 'exportNamespaceFrom' | // deprecated
- 'flow' |
- 'flowComments' |
- 'functionBind' |
- 'functionSent' |
- 'importMeta' |
- 'jsx' |
- 'logicalAssignment' |
- 'nullishCoalescingOperator' |
- 'numericSeparator' |
- 'objectRestSpread' |
- 'optionalCatchBinding' |
- 'optionalChaining' |
- 'partialApplication' |
- 'pipelineOperator' |
- 'placeholders' |
- 'throwExpressions' |
- 'topLevelAwait' |
- 'typescript' |
- 'v8intrinsic' |
- ParserPluginWithOptions;
-
-export type ParserPluginWithOptions =
- ['decorators', DecoratorsPluginOptions] |
- ['pipelineOperator', PipelineOperatorPluginOptions] |
- ['flow', FlowPluginOptions];
-
-export interface DecoratorsPluginOptions {
- decoratorsBeforeExport?: boolean;
-}
-
-export interface PipelineOperatorPluginOptions {
- proposal: 'minimal' | 'smart';
-}
-
-export interface FlowPluginOptions {
- all?: boolean;
-}
diff --git a/assets/node_modules/@babel/runtime/LICENSE b/assets/node_modules/@babel/runtime/LICENSE
deleted file mode 100644
index f31575e..0000000
--- a/assets/node_modules/@babel/runtime/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-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/assets/node_modules/@babel/runtime/README.md b/assets/node_modules/@babel/runtime/README.md
deleted file mode 100644
index 72e8daa..0000000
--- a/assets/node_modules/@babel/runtime/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# @babel/runtime
-
-> babel's modular runtime helpers
-
-See our website [@babel/runtime](https://babeljs.io/docs/en/next/babel-runtime.html) for more information.
-
-## Install
-
-Using npm:
-
-```sh
-npm install --save @babel/runtime
-```
-
-or using yarn:
-
-```sh
-yarn add @babel/runtime
-```
diff --git a/assets/node_modules/@babel/runtime/helpers/AsyncGenerator.js b/assets/node_modules/@babel/runtime/helpers/AsyncGenerator.js
deleted file mode 100644
index 5e23730..0000000
--- a/assets/node_modules/@babel/runtime/helpers/AsyncGenerator.js
+++ /dev/null
@@ -1,100 +0,0 @@
-var AwaitValue = require("./AwaitValue");
-
-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;
-
- if (typeof gen["return"] !== "function") {
- this["return"] = undefined;
- }
-}
-
-if (typeof Symbol === "function" && Symbol.asyncIterator) {
- AsyncGenerator.prototype[Symbol.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);
-};
-
-module.exports = AsyncGenerator; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/AwaitValue.js b/assets/node_modules/@babel/runtime/helpers/AwaitValue.js
deleted file mode 100644
index f9f4184..0000000
--- a/assets/node_modules/@babel/runtime/helpers/AwaitValue.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function _AwaitValue(value) {
- this.wrapped = value;
-}
-
-module.exports = _AwaitValue; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js b/assets/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js
deleted file mode 100644
index b0b41dd..0000000
--- a/assets/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js
+++ /dev/null
@@ -1,30 +0,0 @@
-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;
-}
-
-module.exports = _applyDecoratedDescriptor; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/arrayWithHoles.js b/assets/node_modules/@babel/runtime/helpers/arrayWithHoles.js
deleted file mode 100644
index 5a62a8c..0000000
--- a/assets/node_modules/@babel/runtime/helpers/arrayWithHoles.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function _arrayWithHoles(arr) {
- if (Array.isArray(arr)) return arr;
-}
-
-module.exports = _arrayWithHoles; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js b/assets/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js
deleted file mode 100644
index 3234017..0000000
--- a/assets/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js
+++ /dev/null
@@ -1,11 +0,0 @@
-function _arrayWithoutHoles(arr) {
- if (Array.isArray(arr)) {
- for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
- arr2[i] = arr[i];
- }
-
- return arr2;
- }
-}
-
-module.exports = _arrayWithoutHoles; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/assertThisInitialized.js b/assets/node_modules/@babel/runtime/helpers/assertThisInitialized.js
deleted file mode 100644
index 98d2949..0000000
--- a/assets/node_modules/@babel/runtime/helpers/assertThisInitialized.js
+++ /dev/null
@@ -1,9 +0,0 @@
-function _assertThisInitialized(self) {
- if (self === void 0) {
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
- }
-
- return self;
-}
-
-module.exports = _assertThisInitialized; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js b/assets/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js
deleted file mode 100644
index c37ecf2..0000000
--- a/assets/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js
+++ /dev/null
@@ -1,58 +0,0 @@
-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)
- };
- }
-
- ;
-
- if (typeof Symbol === "function" && Symbol.iterator) {
- iter[Symbol.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;
-}
-
-module.exports = _asyncGeneratorDelegate; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/asyncIterator.js b/assets/node_modules/@babel/runtime/helpers/asyncIterator.js
deleted file mode 100644
index ef5db27..0000000
--- a/assets/node_modules/@babel/runtime/helpers/asyncIterator.js
+++ /dev/null
@@ -1,19 +0,0 @@
-function _asyncIterator(iterable) {
- var method;
-
- if (typeof Symbol !== "undefined") {
- if (Symbol.asyncIterator) {
- method = iterable[Symbol.asyncIterator];
- if (method != null) return method.call(iterable);
- }
-
- if (Symbol.iterator) {
- method = iterable[Symbol.iterator];
- if (method != null) return method.call(iterable);
- }
- }
-
- throw new TypeError("Object is not async iterable");
-}
-
-module.exports = _asyncIterator; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/asyncToGenerator.js b/assets/node_modules/@babel/runtime/helpers/asyncToGenerator.js
deleted file mode 100644
index f5db93d..0000000
--- a/assets/node_modules/@babel/runtime/helpers/asyncToGenerator.js
+++ /dev/null
@@ -1,37 +0,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);
- }
-}
-
-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);
- });
- };
-}
-
-module.exports = _asyncToGenerator; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js b/assets/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js
deleted file mode 100644
index 59f797a..0000000
--- a/assets/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var AwaitValue = require("./AwaitValue");
-
-function _awaitAsyncGenerator(value) {
- return new AwaitValue(value);
-}
-
-module.exports = _awaitAsyncGenerator; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/classCallCheck.js b/assets/node_modules/@babel/runtime/helpers/classCallCheck.js
deleted file mode 100644
index f389f2e..0000000
--- a/assets/node_modules/@babel/runtime/helpers/classCallCheck.js
+++ /dev/null
@@ -1,7 +0,0 @@
-function _classCallCheck(instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function");
- }
-}
-
-module.exports = _classCallCheck; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/classNameTDZError.js b/assets/node_modules/@babel/runtime/helpers/classNameTDZError.js
deleted file mode 100644
index 8c1bdf5..0000000
--- a/assets/node_modules/@babel/runtime/helpers/classNameTDZError.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function _classNameTDZError(name) {
- throw new Error("Class \"" + name + "\" cannot be referenced in computed property keys.");
-}
-
-module.exports = _classNameTDZError; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js b/assets/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js
deleted file mode 100644
index fab9105..0000000
--- a/assets/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js
+++ /dev/null
@@ -1,28 +0,0 @@
-function _classPrivateFieldDestructureSet(receiver, privateMap) {
- if (!privateMap.has(receiver)) {
- throw new TypeError("attempted to set private field on non-instance");
- }
-
- var descriptor = privateMap.get(receiver);
-
- if (descriptor.set) {
- if (!("__destrObj" in descriptor)) {
- descriptor.__destrObj = {
- set value(v) {
- descriptor.set.call(receiver, v);
- }
-
- };
- }
-
- return descriptor.__destrObj;
- } else {
- if (!descriptor.writable) {
- throw new TypeError("attempted to set read only private field");
- }
-
- return descriptor;
- }
-}
-
-module.exports = _classPrivateFieldDestructureSet; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js b/assets/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js
deleted file mode 100644
index 106c3cd..0000000
--- a/assets/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js
+++ /dev/null
@@ -1,15 +0,0 @@
-function _classPrivateFieldGet(receiver, privateMap) {
- var descriptor = privateMap.get(receiver);
-
- if (!descriptor) {
- throw new TypeError("attempted to get private field on non-instance");
- }
-
- if (descriptor.get) {
- return descriptor.get.call(receiver);
- }
-
- return descriptor.value;
-}
-
-module.exports = _classPrivateFieldGet; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js b/assets/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js
deleted file mode 100644
index 64ed79d..0000000
--- a/assets/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js
+++ /dev/null
@@ -1,9 +0,0 @@
-function _classPrivateFieldBase(receiver, privateKey) {
- if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {
- throw new TypeError("attempted to use private field on non-instance");
- }
-
- return receiver;
-}
-
-module.exports = _classPrivateFieldBase; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js b/assets/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js
deleted file mode 100644
index a1a6417..0000000
--- a/assets/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var id = 0;
-
-function _classPrivateFieldKey(name) {
- return "__private_" + id++ + "_" + name;
-}
-
-module.exports = _classPrivateFieldKey; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js b/assets/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js
deleted file mode 100644
index c92f97a..0000000
--- a/assets/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js
+++ /dev/null
@@ -1,21 +0,0 @@
-function _classPrivateFieldSet(receiver, privateMap, value) {
- var descriptor = privateMap.get(receiver);
-
- if (!descriptor) {
- throw new TypeError("attempted to set private field on non-instance");
- }
-
- 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;
- }
-
- return value;
-}
-
-module.exports = _classPrivateFieldSet; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js b/assets/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js
deleted file mode 100644
index a3432b9..0000000
--- a/assets/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js
+++ /dev/null
@@ -1,9 +0,0 @@
-function _classPrivateMethodGet(receiver, privateSet, fn) {
- if (!privateSet.has(receiver)) {
- throw new TypeError("attempted to get private field on non-instance");
- }
-
- return fn;
-}
-
-module.exports = _classPrivateMethodGet; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js b/assets/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js
deleted file mode 100644
index 3847284..0000000
--- a/assets/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function _classPrivateMethodSet() {
- throw new TypeError("attempted to reassign private method");
-}
-
-module.exports = _classPrivateMethodSet; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js b/assets/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js
deleted file mode 100644
index c2b6766..0000000
--- a/assets/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js
+++ /dev/null
@@ -1,13 +0,0 @@
-function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {
- if (receiver !== classConstructor) {
- throw new TypeError("Private static access of wrong provenance");
- }
-
- if (descriptor.get) {
- return descriptor.get.call(receiver);
- }
-
- return descriptor.value;
-}
-
-module.exports = _classStaticPrivateFieldSpecGet; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js b/assets/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js
deleted file mode 100644
index 8799fbb..0000000
--- a/assets/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js
+++ /dev/null
@@ -1,19 +0,0 @@
-function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {
- if (receiver !== classConstructor) {
- throw new TypeError("Private static access of wrong provenance");
- }
-
- 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;
- }
-
- return value;
-}
-
-module.exports = _classStaticPrivateFieldSpecSet; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js b/assets/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js
deleted file mode 100644
index f9b0d00..0000000
--- a/assets/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js
+++ /dev/null
@@ -1,9 +0,0 @@
-function _classStaticPrivateMethodGet(receiver, classConstructor, method) {
- if (receiver !== classConstructor) {
- throw new TypeError("Private static access of wrong provenance");
- }
-
- return method;
-}
-
-module.exports = _classStaticPrivateMethodGet; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js b/assets/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js
deleted file mode 100644
index 89042da..0000000
--- a/assets/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function _classStaticPrivateMethodSet() {
- throw new TypeError("attempted to set read only static private field");
-}
-
-module.exports = _classStaticPrivateMethodSet; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/construct.js b/assets/node_modules/@babel/runtime/helpers/construct.js
deleted file mode 100644
index 723a7ea..0000000
--- a/assets/node_modules/@babel/runtime/helpers/construct.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var setPrototypeOf = require("./setPrototypeOf");
-
-function isNativeReflectConstruct() {
- if (typeof Reflect === "undefined" || !Reflect.construct) return false;
- if (Reflect.construct.sham) return false;
- if (typeof Proxy === "function") return true;
-
- try {
- Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
- return true;
- } catch (e) {
- return false;
- }
-}
-
-function _construct(Parent, args, Class) {
- if (isNativeReflectConstruct()) {
- module.exports = _construct = Reflect.construct;
- } else {
- module.exports = _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;
- };
- }
-
- return _construct.apply(null, arguments);
-}
-
-module.exports = _construct; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/createClass.js b/assets/node_modules/@babel/runtime/helpers/createClass.js
deleted file mode 100644
index f9d4841..0000000
--- a/assets/node_modules/@babel/runtime/helpers/createClass.js
+++ /dev/null
@@ -1,17 +0,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);
- }
-}
-
-function _createClass(Constructor, protoProps, staticProps) {
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
- if (staticProps) _defineProperties(Constructor, staticProps);
- return Constructor;
-}
-
-module.exports = _createClass; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/decorate.js b/assets/node_modules/@babel/runtime/helpers/decorate.js
deleted file mode 100644
index 77c0b98..0000000
--- a/assets/node_modules/@babel/runtime/helpers/decorate.js
+++ /dev/null
@@ -1,400 +0,0 @@
-var toArray = require("./toArray");
-
-var toPropertyKey = require("./toPropertyKey");
-
-function _decorate(decorators, factory, superClass, mixins) {
- 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 _getDecoratorsApi() {
- return api;
- };
-
- var api = {
- elementsDefinitionOrder: [["method"], ["field"]],
- initializeInstanceElements: function initializeInstanceElements(O, elements) {
- ["method", "field"].forEach(function (kind) {
- elements.forEach(function (element) {
- if (element.kind === kind && element.placement === "own") {
- this.defineClassElement(O, element);
- }
- }, this);
- }, this);
- },
- initializeClassElements: function initializeClassElements(F, elements) {
- var proto = F.prototype;
- ["method", "field"].forEach(function (kind) {
- elements.forEach(function (element) {
- 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: function defineClassElement(receiver, element) {
- var descriptor = 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: function decorateClass(elements, decorators) {
- var newElements = [];
- var finishers = [];
- var placements = {
- "static": [],
- prototype: [],
- own: []
- };
- elements.forEach(function (element) {
- this.addElementPlacement(element, placements);
- }, this);
- elements.forEach(function (element) {
- if (!_hasDecorators(element)) return newElements.push(element);
- var 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 = this.decorateConstructor(newElements, decorators);
- finishers.push.apply(finishers, result.finishers);
- result.finishers = finishers;
- return result;
- },
- addElementPlacement: function addElementPlacement(element, placements, silent) {
- var keys = placements[element.placement];
-
- if (!silent && keys.indexOf(element.key) !== -1) {
- throw new TypeError("Duplicated element (" + element.key + ")");
- }
-
- keys.push(element.key);
- },
- decorateElement: function decorateElement(element, placements) {
- var extras = [];
- var finishers = [];
-
- for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {
- var keys = placements[element.placement];
- keys.splice(keys.indexOf(element.key), 1);
- var elementObject = this.fromElementDescriptor(element);
- var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject);
- element = elementFinisherExtras.element;
- this.addElementPlacement(element, placements);
-
- if (elementFinisherExtras.finisher) {
- finishers.push(elementFinisherExtras.finisher);
- }
-
- var newExtras = 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: function decorateConstructor(elements, decorators) {
- var finishers = [];
-
- for (var i = decorators.length - 1; i >= 0; i--) {
- var obj = this.fromClassDescriptor(elements);
- var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || 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: function fromElementDescriptor(element) {
- var obj = {
- 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: function toElementDescriptors(elementObjects) {
- 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: function toElementDescriptor(elementObject) {
- 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 = elementObject.descriptor;
- this.disallowProperty(elementObject, "elements", "An element descriptor");
- var element = {
- 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 toElementFinisherExtras(elementObject) {
- var element = this.toElementDescriptor(elementObject);
-
- var finisher = _optionalCallableProperty(elementObject, "finisher");
-
- var extras = this.toElementDescriptors(elementObject.extras);
- return {
- element: element,
- finisher: finisher,
- extras: extras
- };
- },
- fromClassDescriptor: function fromClassDescriptor(elements) {
- 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: function toClassDescriptor(obj) {
- 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: function runClassFinishers(constructor, finishers) {
- for (var i = 0; i < finishers.length; i++) {
- var newConstructor = (0, finishers[i])(constructor);
-
- if (newConstructor !== undefined) {
- if (typeof newConstructor !== "function") {
- throw new TypeError("Finishers must return a constructor.");
- }
-
- constructor = newConstructor;
- }
- }
-
- return constructor;
- },
- disallowProperty: function disallowProperty(obj, name, objectType) {
- if (obj[name] !== undefined) {
- throw new TypeError(objectType + " can't have a ." + name + " property.");
- }
- }
- };
- return api;
-}
-
-function _createElementDescriptor(def) {
- var key = toPropertyKey(def.key);
- var descriptor;
-
- 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 = {
- 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;
-}
-
-function _coalesceGetterSetter(element, other) {
- if (element.descriptor.get !== undefined) {
- other.descriptor.get = element.descriptor.get;
- } else {
- other.descriptor.set = element.descriptor.set;
- }
-}
-
-function _coalesceClassElements(elements) {
- var newElements = [];
-
- var isSameElement = function isSameElement(other) {
- return other.kind === "method" && other.key === element.key && other.placement === element.placement;
- };
-
- for (var i = 0; i < elements.length; i++) {
- var element = elements[i];
- var other;
-
- 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) {
- return element.decorators && element.decorators.length;
-}
-
-function _isDataDescriptor(desc) {
- return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);
-}
-
-function _optionalCallableProperty(obj, name) {
- var value = obj[name];
-
- if (value !== undefined && typeof value !== "function") {
- throw new TypeError("Expected '" + name + "' to be a function");
- }
-
- return value;
-}
-
-module.exports = _decorate; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/defaults.js b/assets/node_modules/@babel/runtime/helpers/defaults.js
deleted file mode 100644
index 55ba1fe..0000000
--- a/assets/node_modules/@babel/runtime/helpers/defaults.js
+++ /dev/null
@@ -1,16 +0,0 @@
-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;
-}
-
-module.exports = _defaults; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js b/assets/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js
deleted file mode 100644
index 5d80ea1..0000000
--- a/assets/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js
+++ /dev/null
@@ -1,24 +0,0 @@
-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);
- }
-
- 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;
-}
-
-module.exports = _defineEnumerableProperties; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/defineProperty.js b/assets/node_modules/@babel/runtime/helpers/defineProperty.js
deleted file mode 100644
index 32a8d73..0000000
--- a/assets/node_modules/@babel/runtime/helpers/defineProperty.js
+++ /dev/null
@@ -1,16 +0,0 @@
-function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
-
- return obj;
-}
-
-module.exports = _defineProperty; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js b/assets/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js
deleted file mode 100644
index 65361d9..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js
+++ /dev/null
@@ -1,97 +0,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;
-
- if (typeof gen["return"] !== "function") {
- this["return"] = undefined;
- }
-}
-
-if (typeof Symbol === "function" && Symbol.asyncIterator) {
- AsyncGenerator.prototype[Symbol.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);
-}; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/AwaitValue.js b/assets/node_modules/@babel/runtime/helpers/esm/AwaitValue.js
deleted file mode 100644
index 5237e18..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/AwaitValue.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function _AwaitValue(value) {
- this.wrapped = value;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js b/assets/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js
deleted file mode 100644
index 84b5961..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js
+++ /dev/null
@@ -1,28 +0,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;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js b/assets/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
deleted file mode 100644
index be734fc..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function _arrayWithHoles(arr) {
- if (Array.isArray(arr)) return arr;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js b/assets/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
deleted file mode 100644
index cbcffa1..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
+++ /dev/null
@@ -1,9 +0,0 @@
-export default function _arrayWithoutHoles(arr) {
- if (Array.isArray(arr)) {
- for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
- arr2[i] = arr[i];
- }
-
- return arr2;
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js b/assets/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
deleted file mode 100644
index bbf849c..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
+++ /dev/null
@@ -1,7 +0,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;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js b/assets/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js
deleted file mode 100644
index eb56fe5..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js
+++ /dev/null
@@ -1,56 +0,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)
- };
- }
-
- ;
-
- if (typeof Symbol === "function" && Symbol.iterator) {
- iter[Symbol.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;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/asyncIterator.js b/assets/node_modules/@babel/runtime/helpers/esm/asyncIterator.js
deleted file mode 100644
index e03fa97..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/asyncIterator.js
+++ /dev/null
@@ -1,17 +0,0 @@
-export default function _asyncIterator(iterable) {
- var method;
-
- if (typeof Symbol !== "undefined") {
- if (Symbol.asyncIterator) {
- method = iterable[Symbol.asyncIterator];
- if (method != null) return method.call(iterable);
- }
-
- if (Symbol.iterator) {
- method = iterable[Symbol.iterator];
- if (method != null) return method.call(iterable);
- }
- }
-
- throw new TypeError("Object is not async iterable");
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js b/assets/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
deleted file mode 100644
index 2a25f54..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
+++ /dev/null
@@ -1,35 +0,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);
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js b/assets/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js
deleted file mode 100644
index 462f99c..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import AwaitValue from "./AwaitValue";
-export default function _awaitAsyncGenerator(value) {
- return new AwaitValue(value);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/classCallCheck.js b/assets/node_modules/@babel/runtime/helpers/esm/classCallCheck.js
deleted file mode 100644
index 2f1738a..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/classCallCheck.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default function _classCallCheck(instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function");
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js b/assets/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js
deleted file mode 100644
index f7b6dd5..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function _classNameTDZError(name) {
- throw new Error("Class \"" + name + "\" cannot be referenced in computed property keys.");
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js b/assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js
deleted file mode 100644
index 1f265bc..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js
+++ /dev/null
@@ -1,26 +0,0 @@
-export default function _classPrivateFieldDestructureSet(receiver, privateMap) {
- if (!privateMap.has(receiver)) {
- throw new TypeError("attempted to set private field on non-instance");
- }
-
- var descriptor = privateMap.get(receiver);
-
- if (descriptor.set) {
- if (!("__destrObj" in descriptor)) {
- descriptor.__destrObj = {
- set value(v) {
- descriptor.set.call(receiver, v);
- }
-
- };
- }
-
- return descriptor.__destrObj;
- } else {
- if (!descriptor.writable) {
- throw new TypeError("attempted to set read only private field");
- }
-
- return descriptor;
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js b/assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js
deleted file mode 100644
index f8287f1..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js
+++ /dev/null
@@ -1,13 +0,0 @@
-export default function _classPrivateFieldGet(receiver, privateMap) {
- var descriptor = privateMap.get(receiver);
-
- if (!descriptor) {
- throw new TypeError("attempted to get private field on non-instance");
- }
-
- if (descriptor.get) {
- return descriptor.get.call(receiver);
- }
-
- return descriptor.value;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js b/assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js
deleted file mode 100644
index 5b10916..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js
+++ /dev/null
@@ -1,7 +0,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;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js b/assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js
deleted file mode 100644
index 5b7e5ac..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var id = 0;
-export default function _classPrivateFieldKey(name) {
- return "__private_" + id++ + "_" + name;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js b/assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js
deleted file mode 100644
index fb4e5d2..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js
+++ /dev/null
@@ -1,19 +0,0 @@
-export default function _classPrivateFieldSet(receiver, privateMap, value) {
- var descriptor = privateMap.get(receiver);
-
- if (!descriptor) {
- throw new TypeError("attempted to set private field on non-instance");
- }
-
- 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;
- }
-
- return value;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js b/assets/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js
deleted file mode 100644
index 38b9d58..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js
+++ /dev/null
@@ -1,7 +0,0 @@
-export default function _classPrivateMethodGet(receiver, privateSet, fn) {
- if (!privateSet.has(receiver)) {
- throw new TypeError("attempted to get private field on non-instance");
- }
-
- return fn;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js b/assets/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js
deleted file mode 100644
index 2bbaf3a..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function _classPrivateMethodSet() {
- throw new TypeError("attempted to reassign private method");
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js b/assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js
deleted file mode 100644
index 75a9b7c..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js
+++ /dev/null
@@ -1,11 +0,0 @@
-export default function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {
- if (receiver !== classConstructor) {
- throw new TypeError("Private static access of wrong provenance");
- }
-
- if (descriptor.get) {
- return descriptor.get.call(receiver);
- }
-
- return descriptor.value;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js b/assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js
deleted file mode 100644
index 163279f..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js
+++ /dev/null
@@ -1,17 +0,0 @@
-export default function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {
- if (receiver !== classConstructor) {
- throw new TypeError("Private static access of wrong provenance");
- }
-
- 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;
- }
-
- return value;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js b/assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js
deleted file mode 100644
index da9b1e5..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js
+++ /dev/null
@@ -1,7 +0,0 @@
-export default function _classStaticPrivateMethodGet(receiver, classConstructor, method) {
- if (receiver !== classConstructor) {
- throw new TypeError("Private static access of wrong provenance");
- }
-
- return method;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js b/assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js
deleted file mode 100644
index d5ab60a..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function _classStaticPrivateMethodSet() {
- throw new TypeError("attempted to set read only static private field");
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/construct.js b/assets/node_modules/@babel/runtime/helpers/esm/construct.js
deleted file mode 100644
index 82f20fa..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/construct.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import setPrototypeOf from "./setPrototypeOf";
-
-function isNativeReflectConstruct() {
- if (typeof Reflect === "undefined" || !Reflect.construct) return false;
- if (Reflect.construct.sham) return false;
- if (typeof Proxy === "function") return true;
-
- try {
- Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
- return true;
- } catch (e) {
- return false;
- }
-}
-
-export default function _construct(Parent, args, Class) {
- if (isNativeReflectConstruct()) {
- _construct = Reflect.construct;
- } else {
- _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;
- };
- }
-
- return _construct.apply(null, arguments);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/createClass.js b/assets/node_modules/@babel/runtime/helpers/esm/createClass.js
deleted file mode 100644
index d6cf412..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/createClass.js
+++ /dev/null
@@ -1,15 +0,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;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/decorate.js b/assets/node_modules/@babel/runtime/helpers/esm/decorate.js
deleted file mode 100644
index b6acd1f..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/decorate.js
+++ /dev/null
@@ -1,396 +0,0 @@
-import toArray from "./toArray";
-import toPropertyKey from "./toPropertyKey";
-export default function _decorate(decorators, factory, superClass, mixins) {
- 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 _getDecoratorsApi() {
- return api;
- };
-
- var api = {
- elementsDefinitionOrder: [["method"], ["field"]],
- initializeInstanceElements: function initializeInstanceElements(O, elements) {
- ["method", "field"].forEach(function (kind) {
- elements.forEach(function (element) {
- if (element.kind === kind && element.placement === "own") {
- this.defineClassElement(O, element);
- }
- }, this);
- }, this);
- },
- initializeClassElements: function initializeClassElements(F, elements) {
- var proto = F.prototype;
- ["method", "field"].forEach(function (kind) {
- elements.forEach(function (element) {
- 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: function defineClassElement(receiver, element) {
- var descriptor = 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: function decorateClass(elements, decorators) {
- var newElements = [];
- var finishers = [];
- var placements = {
- "static": [],
- prototype: [],
- own: []
- };
- elements.forEach(function (element) {
- this.addElementPlacement(element, placements);
- }, this);
- elements.forEach(function (element) {
- if (!_hasDecorators(element)) return newElements.push(element);
- var 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 = this.decorateConstructor(newElements, decorators);
- finishers.push.apply(finishers, result.finishers);
- result.finishers = finishers;
- return result;
- },
- addElementPlacement: function addElementPlacement(element, placements, silent) {
- var keys = placements[element.placement];
-
- if (!silent && keys.indexOf(element.key) !== -1) {
- throw new TypeError("Duplicated element (" + element.key + ")");
- }
-
- keys.push(element.key);
- },
- decorateElement: function decorateElement(element, placements) {
- var extras = [];
- var finishers = [];
-
- for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {
- var keys = placements[element.placement];
- keys.splice(keys.indexOf(element.key), 1);
- var elementObject = this.fromElementDescriptor(element);
- var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject);
- element = elementFinisherExtras.element;
- this.addElementPlacement(element, placements);
-
- if (elementFinisherExtras.finisher) {
- finishers.push(elementFinisherExtras.finisher);
- }
-
- var newExtras = 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: function decorateConstructor(elements, decorators) {
- var finishers = [];
-
- for (var i = decorators.length - 1; i >= 0; i--) {
- var obj = this.fromClassDescriptor(elements);
- var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || 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: function fromElementDescriptor(element) {
- var obj = {
- 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: function toElementDescriptors(elementObjects) {
- 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: function toElementDescriptor(elementObject) {
- 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 = elementObject.descriptor;
- this.disallowProperty(elementObject, "elements", "An element descriptor");
- var element = {
- 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 toElementFinisherExtras(elementObject) {
- var element = this.toElementDescriptor(elementObject);
-
- var finisher = _optionalCallableProperty(elementObject, "finisher");
-
- var extras = this.toElementDescriptors(elementObject.extras);
- return {
- element: element,
- finisher: finisher,
- extras: extras
- };
- },
- fromClassDescriptor: function fromClassDescriptor(elements) {
- 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: function toClassDescriptor(obj) {
- 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: function runClassFinishers(constructor, finishers) {
- for (var i = 0; i < finishers.length; i++) {
- var newConstructor = (0, finishers[i])(constructor);
-
- if (newConstructor !== undefined) {
- if (typeof newConstructor !== "function") {
- throw new TypeError("Finishers must return a constructor.");
- }
-
- constructor = newConstructor;
- }
- }
-
- return constructor;
- },
- disallowProperty: function disallowProperty(obj, name, objectType) {
- if (obj[name] !== undefined) {
- throw new TypeError(objectType + " can't have a ." + name + " property.");
- }
- }
- };
- return api;
-}
-
-function _createElementDescriptor(def) {
- var key = toPropertyKey(def.key);
- var descriptor;
-
- 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 = {
- 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;
-}
-
-function _coalesceGetterSetter(element, other) {
- if (element.descriptor.get !== undefined) {
- other.descriptor.get = element.descriptor.get;
- } else {
- other.descriptor.set = element.descriptor.set;
- }
-}
-
-function _coalesceClassElements(elements) {
- var newElements = [];
-
- var isSameElement = function isSameElement(other) {
- return other.kind === "method" && other.key === element.key && other.placement === element.placement;
- };
-
- for (var i = 0; i < elements.length; i++) {
- var element = elements[i];
- var other;
-
- 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) {
- return element.decorators && element.decorators.length;
-}
-
-function _isDataDescriptor(desc) {
- return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);
-}
-
-function _optionalCallableProperty(obj, name) {
- var value = obj[name];
-
- if (value !== undefined && typeof value !== "function") {
- throw new TypeError("Expected '" + name + "' to be a function");
- }
-
- return value;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/defaults.js b/assets/node_modules/@babel/runtime/helpers/esm/defaults.js
deleted file mode 100644
index 3de1d8e..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/defaults.js
+++ /dev/null
@@ -1,14 +0,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;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js b/assets/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js
deleted file mode 100644
index 7981acd..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js
+++ /dev/null
@@ -1,22 +0,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);
- }
-
- 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;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/defineProperty.js b/assets/node_modules/@babel/runtime/helpers/esm/defineProperty.js
deleted file mode 100644
index 7cf6e59..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/defineProperty.js
+++ /dev/null
@@ -1,14 +0,0 @@
-export default function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
-
- return obj;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/extends.js b/assets/node_modules/@babel/runtime/helpers/esm/extends.js
deleted file mode 100644
index b9b138d..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/extends.js
+++ /dev/null
@@ -1,17 +0,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);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/get.js b/assets/node_modules/@babel/runtime/helpers/esm/get.js
deleted file mode 100644
index a369d4d..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/get.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import superPropBase from "./superPropBase";
-export default function _get(target, property, receiver) {
- 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) {
- return desc.get.call(receiver);
- }
-
- return desc.value;
- };
- }
-
- return _get(target, property, receiver || target);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js b/assets/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
deleted file mode 100644
index 5abafe3..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default function _getPrototypeOf(o) {
- _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
- return o.__proto__ || Object.getPrototypeOf(o);
- };
- return _getPrototypeOf(o);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/inherits.js b/assets/node_modules/@babel/runtime/helpers/esm/inherits.js
deleted file mode 100644
index 035648d..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/inherits.js
+++ /dev/null
@@ -1,15 +0,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);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js b/assets/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js
deleted file mode 100644
index 32017e6..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default function _inheritsLoose(subClass, superClass) {
- subClass.prototype = Object.create(superClass.prototype);
- subClass.prototype.constructor = subClass;
- subClass.__proto__ = superClass;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js b/assets/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js
deleted file mode 100644
index 26fdea0..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js
+++ /dev/null
@@ -1,9 +0,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
- });
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js b/assets/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js
deleted file mode 100644
index 30d518c..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js
+++ /dev/null
@@ -1,3 +0,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.');
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/instanceof.js b/assets/node_modules/@babel/runtime/helpers/esm/instanceof.js
deleted file mode 100644
index 8c43b71..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/instanceof.js
+++ /dev/null
@@ -1,7 +0,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;
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js b/assets/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js
deleted file mode 100644
index c2df7b6..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : {
- "default": obj
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js b/assets/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js
deleted file mode 100644
index d39be9e..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import _typeof from "../../helpers/esm/typeof";
-
-function _getRequireWildcardCache() {
- if (typeof WeakMap !== "function") return null;
- var cache = new WeakMap();
-
- _getRequireWildcardCache = function _getRequireWildcardCache() {
- return cache;
- };
-
- return cache;
-}
-
-export default function _interopRequireWildcard(obj) {
- if (obj && obj.__esModule) {
- return obj;
- }
-
- if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") {
- return {
- "default": obj
- };
- }
-
- var cache = _getRequireWildcardCache();
-
- if (cache && cache.has(obj)) {
- return cache.get(obj);
- }
-
- var newObj = {};
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
-
- for (var key in obj) {
- if (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;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js b/assets/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js
deleted file mode 100644
index 7b1bc82..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function _isNativeFunction(fn) {
- return Function.toString.call(fn).indexOf("[native code]") !== -1;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/iterableToArray.js b/assets/node_modules/@babel/runtime/helpers/esm/iterableToArray.js
deleted file mode 100644
index 671e400..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/iterableToArray.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function _iterableToArray(iter) {
- if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js b/assets/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
deleted file mode 100644
index 535cdde..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
+++ /dev/null
@@ -1,29 +0,0 @@
-export default function _iterableToArrayLimit(arr, i) {
- if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
- return;
- }
-
- var _arr = [];
- var _n = true;
- var _d = false;
- var _e = undefined;
-
- try {
- for (var _i = arr[Symbol.iterator](), _s; !(_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;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js b/assets/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js
deleted file mode 100644
index aac8223..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js
+++ /dev/null
@@ -1,15 +0,0 @@
-export default function _iterableToArrayLimitLoose(arr, i) {
- if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
- return;
- }
-
- var _arr = [];
-
- for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {
- _arr.push(_step.value);
-
- if (i && _arr.length === i) break;
- }
-
- return _arr;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/jsx.js b/assets/node_modules/@babel/runtime/helpers/esm/jsx.js
deleted file mode 100644
index 3a98cec..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/jsx.js
+++ /dev/null
@@ -1,46 +0,0 @@
-var REACT_ELEMENT_TYPE;
-export default 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/assets/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js b/assets/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js
deleted file mode 100644
index d6cd864..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default function _newArrowCheck(innerThis, boundThis) {
- if (innerThis !== boundThis) {
- throw new TypeError("Cannot instantiate an arrow function");
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js b/assets/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
deleted file mode 100644
index f94186d..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function _nonIterableRest() {
- throw new TypeError("Invalid attempt to destructure non-iterable instance");
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js b/assets/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
deleted file mode 100644
index d6bc738..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function _nonIterableSpread() {
- throw new TypeError("Invalid attempt to spread non-iterable instance");
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js b/assets/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js
deleted file mode 100644
index 82b67d2..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function _objectDestructuringEmpty(obj) {
- if (obj == null) throw new TypeError("Cannot destructure undefined");
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/objectSpread.js b/assets/node_modules/@babel/runtime/helpers/esm/objectSpread.js
deleted file mode 100644
index 0e189fb..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/objectSpread.js
+++ /dev/null
@@ -1,19 +0,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 = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
- }));
- }
-
- ownKeys.forEach(function (key) {
- defineProperty(target, key, source[key]);
- });
- }
-
- return target;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/objectSpread2.js b/assets/node_modules/@babel/runtime/helpers/esm/objectSpread2.js
deleted file mode 100644
index 1da0866..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/objectSpread2.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import defineProperty from "./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;
-}
-
-export default 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/assets/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js b/assets/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
deleted file mode 100644
index 2af6091..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
+++ /dev/null
@@ -1,19 +0,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;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js b/assets/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js
deleted file mode 100644
index c36815c..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js
+++ /dev/null
@@ -1,14 +0,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;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/package.json b/assets/node_modules/@babel/runtime/helpers/esm/package.json
deleted file mode 100644
index aead43d..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/package.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "type": "module"
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js b/assets/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
deleted file mode 100644
index be7b7a4..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import _typeof from "../../helpers/esm/typeof";
-import assertThisInitialized from "./assertThisInitialized";
-export default function _possibleConstructorReturn(self, call) {
- if (call && (_typeof(call) === "object" || typeof call === "function")) {
- return call;
- }
-
- return assertThisInitialized(self);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/readOnlyError.js b/assets/node_modules/@babel/runtime/helpers/esm/readOnlyError.js
deleted file mode 100644
index 45d01d7..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/readOnlyError.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function _readOnlyError(name) {
- throw new Error("\"" + name + "\" is read-only");
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/set.js b/assets/node_modules/@babel/runtime/helpers/esm/set.js
deleted file mode 100644
index fb20af7..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/set.js
+++ /dev/null
@@ -1,51 +0,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) {
- return false;
- }
- }
-
- desc = Object.getOwnPropertyDescriptor(receiver, property);
-
- if (desc) {
- if (!desc.writable) {
- return false;
- }
-
- desc.value = value;
- Object.defineProperty(receiver, property, desc);
- } else {
- 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;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js b/assets/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
deleted file mode 100644
index e6ef03e..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
+++ /dev/null
@@ -1,8 +0,0 @@
-export default function _setPrototypeOf(o, p) {
- _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
- o.__proto__ = p;
- return o;
- };
-
- return _setPrototypeOf(o, p);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js b/assets/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js
deleted file mode 100644
index cadd9bb..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js
+++ /dev/null
@@ -1,7 +0,0 @@
-export default function _skipFirstGeneratorNext(fn) {
- return function () {
- var it = fn.apply(this, arguments);
- it.next();
- return it;
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/slicedToArray.js b/assets/node_modules/@babel/runtime/helpers/esm/slicedToArray.js
deleted file mode 100644
index f6f1081..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/slicedToArray.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import arrayWithHoles from "./arrayWithHoles";
-import iterableToArrayLimit from "./iterableToArrayLimit";
-import nonIterableRest from "./nonIterableRest";
-export default function _slicedToArray(arr, i) {
- return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js b/assets/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js
deleted file mode 100644
index e675789..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import arrayWithHoles from "./arrayWithHoles";
-import iterableToArrayLimitLoose from "./iterableToArrayLimitLoose";
-import nonIterableRest from "./nonIterableRest";
-export default function _slicedToArrayLoose(arr, i) {
- return arrayWithHoles(arr) || iterableToArrayLimitLoose(arr, i) || nonIterableRest();
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/superPropBase.js b/assets/node_modules/@babel/runtime/helpers/esm/superPropBase.js
deleted file mode 100644
index eace947..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/superPropBase.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import getPrototypeOf from "./getPrototypeOf";
-export default function _superPropBase(object, property) {
- while (!Object.prototype.hasOwnProperty.call(object, property)) {
- object = getPrototypeOf(object);
- if (object === null) break;
- }
-
- return object;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js b/assets/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js
deleted file mode 100644
index 421f18a..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js
+++ /dev/null
@@ -1,11 +0,0 @@
-export default function _taggedTemplateLiteral(strings, raw) {
- if (!raw) {
- raw = strings.slice(0);
- }
-
- return Object.freeze(Object.defineProperties(strings, {
- raw: {
- value: Object.freeze(raw)
- }
- }));
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js b/assets/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js
deleted file mode 100644
index c8f081e..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js
+++ /dev/null
@@ -1,8 +0,0 @@
-export default function _taggedTemplateLiteralLoose(strings, raw) {
- if (!raw) {
- raw = strings.slice(0);
- }
-
- strings.raw = raw;
- return strings;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/tdz.js b/assets/node_modules/@babel/runtime/helpers/esm/tdz.js
deleted file mode 100644
index d5d0adc..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/tdz.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function _tdzError(name) {
- throw new ReferenceError(name + " is not defined - temporal dead zone");
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/temporalRef.js b/assets/node_modules/@babel/runtime/helpers/esm/temporalRef.js
deleted file mode 100644
index 6d167a3..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/temporalRef.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import undef from "./temporalUndefined";
-import err from "./tdz";
-export default function _temporalRef(val, name) {
- return val === undef ? err(name) : val;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js b/assets/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js
deleted file mode 100644
index 1a35717..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js
+++ /dev/null
@@ -1 +0,0 @@
-export default function _temporalUndefined() {} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/toArray.js b/assets/node_modules/@babel/runtime/helpers/esm/toArray.js
deleted file mode 100644
index 5acb22b..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/toArray.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import arrayWithHoles from "./arrayWithHoles";
-import iterableToArray from "./iterableToArray";
-import nonIterableRest from "./nonIterableRest";
-export default function _toArray(arr) {
- return arrayWithHoles(arr) || iterableToArray(arr) || nonIterableRest();
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js b/assets/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
deleted file mode 100644
index 7e480b9..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import arrayWithoutHoles from "./arrayWithoutHoles";
-import iterableToArray from "./iterableToArray";
-import nonIterableSpread from "./nonIterableSpread";
-export default function _toConsumableArray(arr) {
- return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/toPrimitive.js b/assets/node_modules/@babel/runtime/helpers/esm/toPrimitive.js
deleted file mode 100644
index 72a4a09..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/toPrimitive.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import _typeof from "../../helpers/esm/typeof";
-export default function _toPrimitive(input, hint) {
- 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);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js b/assets/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
deleted file mode 100644
index 7b53a4d..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import _typeof from "../../helpers/esm/typeof";
-import toPrimitive from "./toPrimitive";
-export default function _toPropertyKey(arg) {
- var key = toPrimitive(arg, "string");
- return _typeof(key) === "symbol" ? key : String(key);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/typeof.js b/assets/node_modules/@babel/runtime/helpers/esm/typeof.js
deleted file mode 100644
index eb444f7..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/typeof.js
+++ /dev/null
@@ -1,15 +0,0 @@
-export default function _typeof(obj) {
- "@babel/helpers - typeof";
-
- if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
- _typeof = function _typeof(obj) {
- return typeof obj;
- };
- } else {
- _typeof = function _typeof(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/assets/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js b/assets/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js
deleted file mode 100644
index 6d6d981..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import AsyncGenerator from "./AsyncGenerator";
-export default function _wrapAsyncGenerator(fn) {
- return function () {
- return new AsyncGenerator(fn.apply(this, arguments));
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js b/assets/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js
deleted file mode 100644
index 5c55d05..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js
+++ /dev/null
@@ -1,37 +0,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);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js b/assets/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js
deleted file mode 100644
index c885450..0000000
--- a/assets/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import _typeof from "../../helpers/esm/typeof";
-import wrapNativeSuper from "./wrapNativeSuper";
-import getPrototypeOf from "./getPrototypeOf";
-import possibleConstructorReturn from "./possibleConstructorReturn";
-import inherits from "./inherits";
-export default function _wrapRegExp(re, groups) {
- _wrapRegExp = function _wrapRegExp(re, groups) {
- return new BabelRegExp(re, undefined, groups);
- };
-
- var _RegExp = wrapNativeSuper(RegExp);
-
- var _super = RegExp.prototype;
-
- var _groups = new WeakMap();
-
- function BabelRegExp(re, flags, groups) {
- var _this = _RegExp.call(this, re, flags);
-
- _groups.set(_this, groups || _groups.get(re));
-
- return _this;
- }
-
- 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 = [];
- args.push.apply(args, arguments);
-
- if (_typeof(args[args.length - 1]) !== "object") {
- 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/assets/node_modules/@babel/runtime/helpers/extends.js b/assets/node_modules/@babel/runtime/helpers/extends.js
deleted file mode 100644
index 1816877..0000000
--- a/assets/node_modules/@babel/runtime/helpers/extends.js
+++ /dev/null
@@ -1,19 +0,0 @@
-function _extends() {
- module.exports = _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);
-}
-
-module.exports = _extends; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/get.js b/assets/node_modules/@babel/runtime/helpers/get.js
deleted file mode 100644
index 31ffc65..0000000
--- a/assets/node_modules/@babel/runtime/helpers/get.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var superPropBase = require("./superPropBase");
-
-function _get(target, property, receiver) {
- if (typeof Reflect !== "undefined" && Reflect.get) {
- module.exports = _get = Reflect.get;
- } else {
- module.exports = _get = function _get(target, property, receiver) {
- var base = superPropBase(target, property);
- if (!base) return;
- var desc = Object.getOwnPropertyDescriptor(base, property);
-
- if (desc.get) {
- return desc.get.call(receiver);
- }
-
- return desc.value;
- };
- }
-
- return _get(target, property, receiver || target);
-}
-
-module.exports = _get; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/getPrototypeOf.js b/assets/node_modules/@babel/runtime/helpers/getPrototypeOf.js
deleted file mode 100644
index 5fc9a16..0000000
--- a/assets/node_modules/@babel/runtime/helpers/getPrototypeOf.js
+++ /dev/null
@@ -1,8 +0,0 @@
-function _getPrototypeOf(o) {
- module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
- return o.__proto__ || Object.getPrototypeOf(o);
- };
- return _getPrototypeOf(o);
-}
-
-module.exports = _getPrototypeOf; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/inherits.js b/assets/node_modules/@babel/runtime/helpers/inherits.js
deleted file mode 100644
index 6b4f286..0000000
--- a/assets/node_modules/@babel/runtime/helpers/inherits.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var setPrototypeOf = require("./setPrototypeOf");
-
-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);
-}
-
-module.exports = _inherits; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/inheritsLoose.js b/assets/node_modules/@babel/runtime/helpers/inheritsLoose.js
deleted file mode 100644
index c3f7cdb..0000000
--- a/assets/node_modules/@babel/runtime/helpers/inheritsLoose.js
+++ /dev/null
@@ -1,7 +0,0 @@
-function _inheritsLoose(subClass, superClass) {
- subClass.prototype = Object.create(superClass.prototype);
- subClass.prototype.constructor = subClass;
- subClass.__proto__ = superClass;
-}
-
-module.exports = _inheritsLoose; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/initializerDefineProperty.js b/assets/node_modules/@babel/runtime/helpers/initializerDefineProperty.js
deleted file mode 100644
index 4caa5ca..0000000
--- a/assets/node_modules/@babel/runtime/helpers/initializerDefineProperty.js
+++ /dev/null
@@ -1,11 +0,0 @@
-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
- });
-}
-
-module.exports = _initializerDefineProperty; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/initializerWarningHelper.js b/assets/node_modules/@babel/runtime/helpers/initializerWarningHelper.js
deleted file mode 100644
index 50ec82c..0000000
--- a/assets/node_modules/@babel/runtime/helpers/initializerWarningHelper.js
+++ /dev/null
@@ -1,5 +0,0 @@
-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.');
-}
-
-module.exports = _initializerWarningHelper; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/instanceof.js b/assets/node_modules/@babel/runtime/helpers/instanceof.js
deleted file mode 100644
index efe134c..0000000
--- a/assets/node_modules/@babel/runtime/helpers/instanceof.js
+++ /dev/null
@@ -1,9 +0,0 @@
-function _instanceof(left, right) {
- if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
- return !!right[Symbol.hasInstance](left);
- } else {
- return left instanceof right;
- }
-}
-
-module.exports = _instanceof; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/interopRequireDefault.js b/assets/node_modules/@babel/runtime/helpers/interopRequireDefault.js
deleted file mode 100644
index f713d13..0000000
--- a/assets/node_modules/@babel/runtime/helpers/interopRequireDefault.js
+++ /dev/null
@@ -1,7 +0,0 @@
-function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : {
- "default": obj
- };
-}
-
-module.exports = _interopRequireDefault; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/interopRequireWildcard.js b/assets/node_modules/@babel/runtime/helpers/interopRequireWildcard.js
deleted file mode 100644
index 68fd84c..0000000
--- a/assets/node_modules/@babel/runtime/helpers/interopRequireWildcard.js
+++ /dev/null
@@ -1,55 +0,0 @@
-var _typeof = require("../helpers/typeof");
-
-function _getRequireWildcardCache() {
- if (typeof WeakMap !== "function") return null;
- var cache = new WeakMap();
-
- _getRequireWildcardCache = function _getRequireWildcardCache() {
- return cache;
- };
-
- return cache;
-}
-
-function _interopRequireWildcard(obj) {
- if (obj && obj.__esModule) {
- return obj;
- }
-
- if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") {
- return {
- "default": obj
- };
- }
-
- var cache = _getRequireWildcardCache();
-
- if (cache && cache.has(obj)) {
- return cache.get(obj);
- }
-
- var newObj = {};
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
-
- for (var key in obj) {
- if (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;
-}
-
-module.exports = _interopRequireWildcard; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/isNativeFunction.js b/assets/node_modules/@babel/runtime/helpers/isNativeFunction.js
deleted file mode 100644
index e2dc3ed..0000000
--- a/assets/node_modules/@babel/runtime/helpers/isNativeFunction.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function _isNativeFunction(fn) {
- return Function.toString.call(fn).indexOf("[native code]") !== -1;
-}
-
-module.exports = _isNativeFunction; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/iterableToArray.js b/assets/node_modules/@babel/runtime/helpers/iterableToArray.js
deleted file mode 100644
index e917e57..0000000
--- a/assets/node_modules/@babel/runtime/helpers/iterableToArray.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function _iterableToArray(iter) {
- if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
-}
-
-module.exports = _iterableToArray; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js b/assets/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js
deleted file mode 100644
index cd01642..0000000
--- a/assets/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js
+++ /dev/null
@@ -1,31 +0,0 @@
-function _iterableToArrayLimit(arr, i) {
- if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
- return;
- }
-
- var _arr = [];
- var _n = true;
- var _d = false;
- var _e = undefined;
-
- try {
- for (var _i = arr[Symbol.iterator](), _s; !(_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;
-}
-
-module.exports = _iterableToArrayLimit; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js b/assets/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js
deleted file mode 100644
index ccf8d2f..0000000
--- a/assets/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js
+++ /dev/null
@@ -1,17 +0,0 @@
-function _iterableToArrayLimitLoose(arr, i) {
- if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
- return;
- }
-
- var _arr = [];
-
- for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {
- _arr.push(_step.value);
-
- if (i && _arr.length === i) break;
- }
-
- return _arr;
-}
-
-module.exports = _iterableToArrayLimitLoose; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/jsx.js b/assets/node_modules/@babel/runtime/helpers/jsx.js
deleted file mode 100644
index 4b1ee54..0000000
--- a/assets/node_modules/@babel/runtime/helpers/jsx.js
+++ /dev/null
@@ -1,49 +0,0 @@
-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
- };
-}
-
-module.exports = _createRawReactElement; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/newArrowCheck.js b/assets/node_modules/@babel/runtime/helpers/newArrowCheck.js
deleted file mode 100644
index 9b59f58..0000000
--- a/assets/node_modules/@babel/runtime/helpers/newArrowCheck.js
+++ /dev/null
@@ -1,7 +0,0 @@
-function _newArrowCheck(innerThis, boundThis) {
- if (innerThis !== boundThis) {
- throw new TypeError("Cannot instantiate an arrow function");
- }
-}
-
-module.exports = _newArrowCheck; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/nonIterableRest.js b/assets/node_modules/@babel/runtime/helpers/nonIterableRest.js
deleted file mode 100644
index eb447dd..0000000
--- a/assets/node_modules/@babel/runtime/helpers/nonIterableRest.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function _nonIterableRest() {
- throw new TypeError("Invalid attempt to destructure non-iterable instance");
-}
-
-module.exports = _nonIterableRest; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/nonIterableSpread.js b/assets/node_modules/@babel/runtime/helpers/nonIterableSpread.js
deleted file mode 100644
index 7d7ca43..0000000
--- a/assets/node_modules/@babel/runtime/helpers/nonIterableSpread.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function _nonIterableSpread() {
- throw new TypeError("Invalid attempt to spread non-iterable instance");
-}
-
-module.exports = _nonIterableSpread; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js b/assets/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js
deleted file mode 100644
index 1d5c04a..0000000
--- a/assets/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function _objectDestructuringEmpty(obj) {
- if (obj == null) throw new TypeError("Cannot destructure undefined");
-}
-
-module.exports = _objectDestructuringEmpty; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/objectSpread.js b/assets/node_modules/@babel/runtime/helpers/objectSpread.js
deleted file mode 100644
index ad8036e..0000000
--- a/assets/node_modules/@babel/runtime/helpers/objectSpread.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var defineProperty = require("./defineProperty");
-
-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 = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
- }));
- }
-
- ownKeys.forEach(function (key) {
- defineProperty(target, key, source[key]);
- });
- }
-
- return target;
-}
-
-module.exports = _objectSpread; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/objectSpread2.js b/assets/node_modules/@babel/runtime/helpers/objectSpread2.js
deleted file mode 100644
index f067f3e..0000000
--- a/assets/node_modules/@babel/runtime/helpers/objectSpread2.js
+++ /dev/null
@@ -1,37 +0,0 @@
-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;
-}
-
-module.exports = _objectSpread2; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/objectWithoutProperties.js b/assets/node_modules/@babel/runtime/helpers/objectWithoutProperties.js
deleted file mode 100644
index 253d33c..0000000
--- a/assets/node_modules/@babel/runtime/helpers/objectWithoutProperties.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var objectWithoutPropertiesLoose = require("./objectWithoutPropertiesLoose");
-
-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;
-}
-
-module.exports = _objectWithoutProperties; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js b/assets/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js
deleted file mode 100644
index a58c56b..0000000
--- a/assets/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js
+++ /dev/null
@@ -1,16 +0,0 @@
-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;
-}
-
-module.exports = _objectWithoutPropertiesLoose; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js b/assets/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js
deleted file mode 100644
index 84f7bf6..0000000
--- a/assets/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js
+++ /dev/null
@@ -1,13 +0,0 @@
-var _typeof = require("../helpers/typeof");
-
-var assertThisInitialized = require("./assertThisInitialized");
-
-function _possibleConstructorReturn(self, call) {
- if (call && (_typeof(call) === "object" || typeof call === "function")) {
- return call;
- }
-
- return assertThisInitialized(self);
-}
-
-module.exports = _possibleConstructorReturn; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/readOnlyError.js b/assets/node_modules/@babel/runtime/helpers/readOnlyError.js
deleted file mode 100644
index 4e61e3f..0000000
--- a/assets/node_modules/@babel/runtime/helpers/readOnlyError.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function _readOnlyError(name) {
- throw new Error("\"" + name + "\" is read-only");
-}
-
-module.exports = _readOnlyError; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/set.js b/assets/node_modules/@babel/runtime/helpers/set.js
deleted file mode 100644
index 97fa8c3..0000000
--- a/assets/node_modules/@babel/runtime/helpers/set.js
+++ /dev/null
@@ -1,54 +0,0 @@
-var superPropBase = require("./superPropBase");
-
-var defineProperty = require("./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) {
- return false;
- }
- }
-
- desc = Object.getOwnPropertyDescriptor(receiver, property);
-
- if (desc) {
- if (!desc.writable) {
- return false;
- }
-
- desc.value = value;
- Object.defineProperty(receiver, property, desc);
- } else {
- defineProperty(receiver, property, value);
- }
-
- return true;
- };
- }
-
- return set(target, property, value, receiver);
-}
-
-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;
-}
-
-module.exports = _set; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/setPrototypeOf.js b/assets/node_modules/@babel/runtime/helpers/setPrototypeOf.js
deleted file mode 100644
index d86e2fc..0000000
--- a/assets/node_modules/@babel/runtime/helpers/setPrototypeOf.js
+++ /dev/null
@@ -1,10 +0,0 @@
-function _setPrototypeOf(o, p) {
- module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
- o.__proto__ = p;
- return o;
- };
-
- return _setPrototypeOf(o, p);
-}
-
-module.exports = _setPrototypeOf; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js b/assets/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js
deleted file mode 100644
index e1d6c86..0000000
--- a/assets/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js
+++ /dev/null
@@ -1,9 +0,0 @@
-function _skipFirstGeneratorNext(fn) {
- return function () {
- var it = fn.apply(this, arguments);
- it.next();
- return it;
- };
-}
-
-module.exports = _skipFirstGeneratorNext; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/slicedToArray.js b/assets/node_modules/@babel/runtime/helpers/slicedToArray.js
deleted file mode 100644
index 243ea9e..0000000
--- a/assets/node_modules/@babel/runtime/helpers/slicedToArray.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var arrayWithHoles = require("./arrayWithHoles");
-
-var iterableToArrayLimit = require("./iterableToArrayLimit");
-
-var nonIterableRest = require("./nonIterableRest");
-
-function _slicedToArray(arr, i) {
- return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();
-}
-
-module.exports = _slicedToArray; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js b/assets/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js
deleted file mode 100644
index c7e4313..0000000
--- a/assets/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var arrayWithHoles = require("./arrayWithHoles");
-
-var iterableToArrayLimitLoose = require("./iterableToArrayLimitLoose");
-
-var nonIterableRest = require("./nonIterableRest");
-
-function _slicedToArrayLoose(arr, i) {
- return arrayWithHoles(arr) || iterableToArrayLimitLoose(arr, i) || nonIterableRest();
-}
-
-module.exports = _slicedToArrayLoose; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/superPropBase.js b/assets/node_modules/@babel/runtime/helpers/superPropBase.js
deleted file mode 100644
index bbb34a2..0000000
--- a/assets/node_modules/@babel/runtime/helpers/superPropBase.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var getPrototypeOf = require("./getPrototypeOf");
-
-function _superPropBase(object, property) {
- while (!Object.prototype.hasOwnProperty.call(object, property)) {
- object = getPrototypeOf(object);
- if (object === null) break;
- }
-
- return object;
-}
-
-module.exports = _superPropBase; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js b/assets/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js
deleted file mode 100644
index bdcc1e9..0000000
--- a/assets/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js
+++ /dev/null
@@ -1,13 +0,0 @@
-function _taggedTemplateLiteral(strings, raw) {
- if (!raw) {
- raw = strings.slice(0);
- }
-
- return Object.freeze(Object.defineProperties(strings, {
- raw: {
- value: Object.freeze(raw)
- }
- }));
-}
-
-module.exports = _taggedTemplateLiteral; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js b/assets/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js
deleted file mode 100644
index beced54..0000000
--- a/assets/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js
+++ /dev/null
@@ -1,10 +0,0 @@
-function _taggedTemplateLiteralLoose(strings, raw) {
- if (!raw) {
- raw = strings.slice(0);
- }
-
- strings.raw = raw;
- return strings;
-}
-
-module.exports = _taggedTemplateLiteralLoose; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/tdz.js b/assets/node_modules/@babel/runtime/helpers/tdz.js
deleted file mode 100644
index 6075e8d..0000000
--- a/assets/node_modules/@babel/runtime/helpers/tdz.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function _tdzError(name) {
- throw new ReferenceError(name + " is not defined - temporal dead zone");
-}
-
-module.exports = _tdzError; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/temporalRef.js b/assets/node_modules/@babel/runtime/helpers/temporalRef.js
deleted file mode 100644
index 8aa5e5e..0000000
--- a/assets/node_modules/@babel/runtime/helpers/temporalRef.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var temporalUndefined = require("./temporalUndefined");
-
-var tdz = require("./tdz");
-
-function _temporalRef(val, name) {
- return val === temporalUndefined ? tdz(name) : val;
-}
-
-module.exports = _temporalRef; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/temporalUndefined.js b/assets/node_modules/@babel/runtime/helpers/temporalUndefined.js
deleted file mode 100644
index 416d9b3..0000000
--- a/assets/node_modules/@babel/runtime/helpers/temporalUndefined.js
+++ /dev/null
@@ -1,3 +0,0 @@
-function _temporalUndefined() {}
-
-module.exports = _temporalUndefined; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/toArray.js b/assets/node_modules/@babel/runtime/helpers/toArray.js
deleted file mode 100644
index c28fd9e..0000000
--- a/assets/node_modules/@babel/runtime/helpers/toArray.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var arrayWithHoles = require("./arrayWithHoles");
-
-var iterableToArray = require("./iterableToArray");
-
-var nonIterableRest = require("./nonIterableRest");
-
-function _toArray(arr) {
- return arrayWithHoles(arr) || iterableToArray(arr) || nonIterableRest();
-}
-
-module.exports = _toArray; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/toConsumableArray.js b/assets/node_modules/@babel/runtime/helpers/toConsumableArray.js
deleted file mode 100644
index 4cd54a3..0000000
--- a/assets/node_modules/@babel/runtime/helpers/toConsumableArray.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var arrayWithoutHoles = require("./arrayWithoutHoles");
-
-var iterableToArray = require("./iterableToArray");
-
-var nonIterableSpread = require("./nonIterableSpread");
-
-function _toConsumableArray(arr) {
- return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();
-}
-
-module.exports = _toConsumableArray; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/toPrimitive.js b/assets/node_modules/@babel/runtime/helpers/toPrimitive.js
deleted file mode 100644
index cd1d383..0000000
--- a/assets/node_modules/@babel/runtime/helpers/toPrimitive.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var _typeof = require("../helpers/typeof");
-
-function _toPrimitive(input, hint) {
- 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);
-}
-
-module.exports = _toPrimitive; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/toPropertyKey.js b/assets/node_modules/@babel/runtime/helpers/toPropertyKey.js
deleted file mode 100644
index 108b083..0000000
--- a/assets/node_modules/@babel/runtime/helpers/toPropertyKey.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var _typeof = require("../helpers/typeof");
-
-var toPrimitive = require("./toPrimitive");
-
-function _toPropertyKey(arg) {
- var key = toPrimitive(arg, "string");
- return _typeof(key) === "symbol" ? key : String(key);
-}
-
-module.exports = _toPropertyKey; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/typeof.js b/assets/node_modules/@babel/runtime/helpers/typeof.js
deleted file mode 100644
index cad1233..0000000
--- a/assets/node_modules/@babel/runtime/helpers/typeof.js
+++ /dev/null
@@ -1,17 +0,0 @@
-function _typeof(obj) {
- "@babel/helpers - typeof";
-
- if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
- module.exports = _typeof = function _typeof(obj) {
- return typeof obj;
- };
- } else {
- module.exports = _typeof = function _typeof(obj) {
- return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
- };
- }
-
- return _typeof(obj);
-}
-
-module.exports = _typeof; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js b/assets/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js
deleted file mode 100644
index 11554f3..0000000
--- a/assets/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var AsyncGenerator = require("./AsyncGenerator");
-
-function _wrapAsyncGenerator(fn) {
- return function () {
- return new AsyncGenerator(fn.apply(this, arguments));
- };
-}
-
-module.exports = _wrapAsyncGenerator; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/wrapNativeSuper.js b/assets/node_modules/@babel/runtime/helpers/wrapNativeSuper.js
deleted file mode 100644
index 3d4bd7a..0000000
--- a/assets/node_modules/@babel/runtime/helpers/wrapNativeSuper.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var getPrototypeOf = require("./getPrototypeOf");
-
-var setPrototypeOf = require("./setPrototypeOf");
-
-var isNativeFunction = require("./isNativeFunction");
-
-var construct = require("./construct");
-
-function _wrapNativeSuper(Class) {
- var _cache = typeof Map === "function" ? new Map() : undefined;
-
- module.exports = _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);
-}
-
-module.exports = _wrapNativeSuper; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/helpers/wrapRegExp.js b/assets/node_modules/@babel/runtime/helpers/wrapRegExp.js
deleted file mode 100644
index fcf91d8..0000000
--- a/assets/node_modules/@babel/runtime/helpers/wrapRegExp.js
+++ /dev/null
@@ -1,76 +0,0 @@
-var _typeof = require("../helpers/typeof");
-
-var wrapNativeSuper = require("./wrapNativeSuper");
-
-var getPrototypeOf = require("./getPrototypeOf");
-
-var possibleConstructorReturn = require("./possibleConstructorReturn");
-
-var inherits = require("./inherits");
-
-function _wrapRegExp(re, groups) {
- module.exports = _wrapRegExp = function _wrapRegExp(re, groups) {
- return new BabelRegExp(re, undefined, groups);
- };
-
- var _RegExp = wrapNativeSuper(RegExp);
-
- var _super = RegExp.prototype;
-
- var _groups = new WeakMap();
-
- function BabelRegExp(re, flags, groups) {
- var _this = _RegExp.call(this, re, flags);
-
- _groups.set(_this, groups || _groups.get(re));
-
- return _this;
- }
-
- 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 = [];
- args.push.apply(args, arguments);
-
- if (_typeof(args[args.length - 1]) !== "object") {
- 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);
-}
-
-module.exports = _wrapRegExp; \ No newline at end of file
diff --git a/assets/node_modules/@babel/runtime/package.json b/assets/node_modules/@babel/runtime/package.json
deleted file mode 100644
index d8f23a6..0000000
--- a/assets/node_modules/@babel/runtime/package.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "name": "@babel/runtime",
- "version": "7.8.4",
- "description": "babel's modular runtime helpers",
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/babel/babel.git",
- "directory": "packages/babel-runtime"
- },
- "homepage": "https://babeljs.io/docs/en/next/babel-runtime",
- "author": "Sebastian McKenzie <sebmck@gmail.com>",
- "dependencies": {
- "regenerator-runtime": "^0.13.2"
- },
- "devDependencies": {
- "@babel/helpers": "^7.8.4"
- },
- "gitHead": "5c2e6bc07fed3d28801d93168622c99ae622653a"
-}
diff --git a/assets/node_modules/@babel/runtime/regenerator/index.js b/assets/node_modules/@babel/runtime/regenerator/index.js
deleted file mode 100644
index 9fd4158..0000000
--- a/assets/node_modules/@babel/runtime/regenerator/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("regenerator-runtime");
diff --git a/assets/node_modules/@babel/template/LICENSE b/assets/node_modules/@babel/template/LICENSE
deleted file mode 100644
index f31575e..0000000
--- a/assets/node_modules/@babel/template/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-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/assets/node_modules/@babel/template/README.md b/assets/node_modules/@babel/template/README.md
deleted file mode 100644
index cf8f944..0000000
--- a/assets/node_modules/@babel/template/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# @babel/template
-
-> Generate an AST from a string template.
-
-See our website [@babel/template](https://babeljs.io/docs/en/next/babel-template.html) 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/assets/node_modules/@babel/template/lib/builder.js b/assets/node_modules/@babel/template/lib/builder.js
deleted file mode 100644
index 2a0e629..0000000
--- a/assets/node_modules/@babel/template/lib/builder.js
+++ /dev/null
@@ -1,83 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = createTemplateBuilder;
-
-var _options = require("./options");
-
-var _string = _interopRequireDefault(require("./string"));
-
-var _literal = _interopRequireDefault(require("./literal"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/template/lib/formatters.js b/assets/node_modules/@babel/template/lib/formatters.js
deleted file mode 100644
index 59e0984..0000000
--- a/assets/node_modules/@babel/template/lib/formatters.js
+++ /dev/null
@@ -1,63 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.program = exports.expression = exports.statement = exports.statements = exports.smart = void 0;
-
-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: ({
- program
- }) => {
- if (program.body.length > 1) {
- throw new Error("Found multiple statements but wanted one");
- }
-
- const expression = program.body[0].expression;
-
- if (expression.start === 0) {
- throw new Error("Parse result included parens.");
- }
- },
- unwrap: ast => ast.program.body[0].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/assets/node_modules/@babel/template/lib/index.js b/assets/node_modules/@babel/template/lib/index.js
deleted file mode 100644
index 9c666db..0000000
--- a/assets/node_modules/@babel/template/lib/index.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.program = exports.expression = exports.statements = exports.statement = exports.smart = void 0;
-
-var formatters = _interopRequireWildcard(require("./formatters"));
-
-var _builder = _interopRequireDefault(require("./builder"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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/assets/node_modules/@babel/template/lib/literal.js b/assets/node_modules/@babel/template/lib/literal.js
deleted file mode 100644
index 0b8f904..0000000
--- a/assets/node_modules/@babel/template/lib/literal.js
+++ /dev/null
@@ -1,82 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = literalTemplate;
-
-var _options = require("./options");
-
-var _parse = _interopRequireDefault(require("./parse"));
-
-var _populate = _interopRequireDefault(require("./populate"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function literalTemplate(formatter, tpl, opts) {
- const {
- metadata,
- names
- } = buildLiteralData(formatter, tpl, opts);
- return arg => {
- const defaultReplacements = arg.reduce((acc, replacement, i) => {
- acc[names[i]] = replacement;
- return acc;
- }, {});
- 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/assets/node_modules/@babel/template/lib/options.js b/assets/node_modules/@babel/template/lib/options.js
deleted file mode 100644
index a0302a6..0000000
--- a/assets/node_modules/@babel/template/lib/options.js
+++ /dev/null
@@ -1,82 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.merge = merge;
-exports.validate = validate;
-exports.normalizeReplacements = normalizeReplacements;
-
-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, ["placeholderWhitelist", "placeholderPattern", "preserveComments", "syntacticPlaceholders"]);
-
- 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 ? false : 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/assets/node_modules/@babel/template/lib/parse.js b/assets/node_modules/@babel/template/lib/parse.js
deleted file mode 100644
index 31e5849..0000000
--- a/assets/node_modules/@babel/template/lib/parse.js
+++ /dev/null
@@ -1,171 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = parseAndBuildMetadata;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-var _parser = require("@babel/parser");
-
-var _codeFrame = require("@babel/code-frame");
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-const PATTERN = /^[_$A-Z0-9]+$/;
-
-function parseAndBuildMetadata(formatter, code, opts) {
- const ast = parseWithCodeFrame(code, opts.parser);
- const {
- placeholderWhitelist,
- placeholderPattern,
- preserveComments,
- syntacticPlaceholders
- } = opts;
- t.removePropertiesDeep(ast, {
- preserveComments
- });
- formatter.validate(ast);
- const syntactic = {
- placeholders: [],
- placeholderNames: new Set()
- };
- const legacy = {
- placeholders: [],
- placeholderNames: new Set()
- };
- const isLegacyRef = {
- value: undefined
- };
- t.traverse(ast, placeholderVisitorHandler, {
- syntactic,
- legacy,
- isLegacyRef,
- placeholderWhitelist,
- placeholderPattern,
- syntacticPlaceholders
- });
- return Object.assign({
- ast
- }, isLegacyRef.value ? legacy : syntactic);
-}
-
-function placeholderVisitorHandler(node, ancestors, state) {
- let name;
-
- if (t.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 (t.isIdentifier(node) || t.isJSXIdentifier(node)) {
- name = node.name;
- state.isLegacyRef.value = true;
- } else if (t.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.placeholderWhitelist || !state.placeholderWhitelist.has(name))) {
- return;
- }
-
- ancestors = ancestors.slice();
- const {
- node: parent,
- key
- } = ancestors[ancestors.length - 1];
- let type;
-
- if (t.isStringLiteral(node) || t.isPlaceholder(node, {
- expectedNode: "StringLiteral"
- })) {
- type = "string";
- } else if (t.isNewExpression(parent) && key === "arguments" || t.isCallExpression(parent) && key === "arguments" || t.isFunction(parent) && key === "params") {
- type = "param";
- } else if (t.isExpressionStatement(parent) && !t.isPlaceholder(node)) {
- type = "statement";
- ancestors = ancestors.slice(0, -1);
- } else if (t.isStatement(node) && t.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) {
- parserOpts = Object.assign({
- allowReturnOutsideFunction: true,
- allowSuperOutsideMethod: true,
- sourceType: "module"
- }, parserOpts, {
- plugins: (parserOpts.plugins || []).concat("placeholders")
- });
-
- 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/assets/node_modules/@babel/template/lib/populate.js b/assets/node_modules/@babel/template/lib/populate.js
deleted file mode 100644
index cbca191..0000000
--- a/assets/node_modules/@babel/template/lib/populate.js
+++ /dev/null
@@ -1,127 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = populatePlaceholders;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function populatePlaceholders(metadata, replacements) {
- const ast = t.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 => t.cloneNode(node));
- } else if (typeof replacement === "object") {
- replacement = t.cloneNode(replacement);
- }
- }
-
- const {
- parent,
- key,
- index
- } = placeholder.resolve(ast);
-
- if (placeholder.type === "string") {
- if (typeof replacement === "string") {
- replacement = t.stringLiteral(replacement);
- }
-
- if (!replacement || !t.isStringLiteral(replacement)) {
- throw new Error("Expected string substitution");
- }
- } else if (placeholder.type === "statement") {
- if (index === undefined) {
- if (!replacement) {
- replacement = t.emptyStatement();
- } else if (Array.isArray(replacement)) {
- replacement = t.blockStatement(replacement);
- } else if (typeof replacement === "string") {
- replacement = t.expressionStatement(t.identifier(replacement));
- } else if (!t.isStatement(replacement)) {
- replacement = t.expressionStatement(replacement);
- }
- } else {
- if (replacement && !Array.isArray(replacement)) {
- if (typeof replacement === "string") {
- replacement = t.identifier(replacement);
- }
-
- if (!t.isStatement(replacement)) {
- replacement = t.expressionStatement(replacement);
- }
- }
- }
- } else if (placeholder.type === "param") {
- if (typeof replacement === "string") {
- replacement = t.identifier(replacement);
- }
-
- if (index === undefined) throw new Error("Assertion failure.");
- } else {
- if (typeof replacement === "string") {
- replacement = t.identifier(replacement);
- }
-
- if (Array.isArray(replacement)) {
- throw new Error("Cannot replace single expression with an array.");
- }
- }
-
- if (index === undefined) {
- t.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;
- }
-
- t.validate(parent, key, items);
- parent[key] = items;
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/template/lib/string.js b/assets/node_modules/@babel/template/lib/string.js
deleted file mode 100644
index 02ad457..0000000
--- a/assets/node_modules/@babel/template/lib/string.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = stringTemplate;
-
-var _options = require("./options");
-
-var _parse = _interopRequireDefault(require("./parse"));
-
-var _populate = _interopRequireDefault(require("./populate"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/template/node_modules/.bin/parser b/assets/node_modules/@babel/template/node_modules/.bin/parser
deleted file mode 120000
index 97a06c3..0000000
--- a/assets/node_modules/@babel/template/node_modules/.bin/parser
+++ /dev/null
@@ -1 +0,0 @@
-../../../parser/bin/babel-parser.js \ No newline at end of file
diff --git a/assets/node_modules/@babel/template/package.json b/assets/node_modules/@babel/template/package.json
deleted file mode 100644
index d972fc2..0000000
--- a/assets/node_modules/@babel/template/package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "@babel/template",
- "version": "7.8.3",
- "description": "Generate an AST from a string template.",
- "author": "Sebastian McKenzie <sebmck@gmail.com>",
- "homepage": "https://babeljs.io/",
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- },
- "repository": "https://github.com/babel/babel/tree/master/packages/babel-template",
- "main": "lib/index.js",
- "dependencies": {
- "@babel/code-frame": "^7.8.3",
- "@babel/parser": "^7.8.3",
- "@babel/types": "^7.8.3"
- },
- "gitHead": "a7620bd266ae1345975767bbc7abf09034437017"
-}
diff --git a/assets/node_modules/@babel/traverse/LICENSE b/assets/node_modules/@babel/traverse/LICENSE
deleted file mode 100644
index f31575e..0000000
--- a/assets/node_modules/@babel/traverse/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-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/assets/node_modules/@babel/traverse/README.md b/assets/node_modules/@babel/traverse/README.md
deleted file mode 100644
index 61dc580..0000000
--- a/assets/node_modules/@babel/traverse/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# @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/next/babel-traverse.html) 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/assets/node_modules/@babel/traverse/lib/cache.js b/assets/node_modules/@babel/traverse/lib/cache.js
deleted file mode 100644
index 89f2007..0000000
--- a/assets/node_modules/@babel/traverse/lib/cache.js
+++ /dev/null
@@ -1,26 +0,0 @@
-"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/assets/node_modules/@babel/traverse/lib/context.js b/assets/node_modules/@babel/traverse/lib/context.js
deleted file mode 100644
index 1a0f214..0000000
--- a/assets/node_modules/@babel/traverse/lib/context.js
+++ /dev/null
@@ -1,146 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _path = _interopRequireDefault(require("./path"));
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const testing = process.env.NODE_ENV === "test";
-
-class TraversalContext {
- constructor(scope, opts, state, parentPath) {
- this.queue = 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 = t.VISITOR_KEYS[node.type];
- if (!keys || !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.trap) {
- throw new Error("Infinite cycle detected");
- }
-
- 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 = [];
- 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;
-
- if (testing && queue.length >= 10000) {
- this.trap = true;
- }
-
- if (visited.indexOf(path.node) >= 0) continue;
- visited.push(path.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/assets/node_modules/@babel/traverse/lib/hub.js b/assets/node_modules/@babel/traverse/lib/hub.js
deleted file mode 100644
index fe139d2..0000000
--- a/assets/node_modules/@babel/traverse/lib/hub.js
+++ /dev/null
@@ -1,23 +0,0 @@
-"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/assets/node_modules/@babel/traverse/lib/index.js b/assets/node_modules/@babel/traverse/lib/index.js
deleted file mode 100644
index 980ee87..0000000
--- a/assets/node_modules/@babel/traverse/lib/index.js
+++ /dev/null
@@ -1,120 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = traverse;
-Object.defineProperty(exports, "NodePath", {
- enumerable: true,
- get: function () {
- return _path.default;
- }
-});
-Object.defineProperty(exports, "Scope", {
- enumerable: true,
- get: function () {
- return _scope.default;
- }
-});
-Object.defineProperty(exports, "Hub", {
- enumerable: true,
- get: function () {
- return _hub.default;
- }
-});
-exports.visitors = void 0;
-
-var _context = _interopRequireDefault(require("./context"));
-
-var visitors = _interopRequireWildcard(require("./visitors"));
-
-exports.visitors = visitors;
-
-var _includes = _interopRequireDefault(require("lodash/includes"));
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-var cache = _interopRequireWildcard(require("./cache"));
-
-var _path = _interopRequireDefault(require("./path"));
-
-var _scope = _interopRequireDefault(require("./scope"));
-
-var _hub = _interopRequireDefault(require("./hub"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function traverse(parent, opts, scope, state, parentPath) {
- if (!parent) return;
- if (!opts) opts = {};
-
- 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 (!t.VISITOR_KEYS[parent.type]) {
- return;
- }
-
- visitors.explode(opts);
- traverse.node(parent, opts, scope, state, parentPath);
-}
-
-traverse.visitors = visitors;
-traverse.verify = visitors.verify;
-traverse.explode = visitors.explode;
-
-traverse.cheap = function (node, enter) {
- return t.traverseFast(node, enter);
-};
-
-traverse.node = function (node, opts, scope, state, parentPath, skipKeys) {
- const keys = t.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) {
- t.removeProperties(node, opts);
- cache.path.delete(node);
-};
-
-traverse.removeProperties = function (tree, opts) {
- t.traverseFast(tree, traverse.clearNode, opts);
- return tree;
-};
-
-function hasBlacklistedType(path, state) {
- if (path.node.type === state.type) {
- state.has = true;
- path.stop();
- }
-}
-
-traverse.hasType = function (tree, type, blacklistTypes) {
- if ((0, _includes.default)(blacklistTypes, tree.type)) return false;
- if (tree.type === type) return true;
- const state = {
- has: false,
- type: type
- };
- traverse(tree, {
- noScope: true,
- blacklist: blacklistTypes,
- enter: hasBlacklistedType
- }, null, state);
- return state.has;
-};
-
-traverse.cache = cache; \ No newline at end of file
diff --git a/assets/node_modules/@babel/traverse/lib/path/ancestry.js b/assets/node_modules/@babel/traverse/lib/path/ancestry.js
deleted file mode 100644
index d2c7908..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/ancestry.js
+++ /dev/null
@@ -1,182 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.findParent = findParent;
-exports.find = find;
-exports.getFunctionParent = getFunctionParent;
-exports.getStatementParent = getStatementParent;
-exports.getEarliestCommonAncestorFrom = getEarliestCommonAncestorFrom;
-exports.getDeepestCommonAncestorFrom = getDeepestCommonAncestorFrom;
-exports.getAncestry = getAncestry;
-exports.isAncestor = isAncestor;
-exports.isDescendant = isDescendant;
-exports.inType = inType;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-var _index = _interopRequireDefault(require("./index"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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 = t.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() {
- let path = this;
-
- while (path) {
- for (const type of arguments) {
- if (path.node.type === type) return true;
- }
-
- path = path.parentPath;
- }
-
- return false;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/traverse/lib/path/comments.js b/assets/node_modules/@babel/traverse/lib/path/comments.js
deleted file mode 100644
index f4bd5da..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/comments.js
+++ /dev/null
@@ -1,41 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.shareCommentsWithSiblings = shareCommentsWithSiblings;
-exports.addComment = addComment;
-exports.addComments = addComments;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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) {} else if (hasPrev) {
- prev.addComments("trailing", trailing);
- } else if (hasNext) {
- next.addComments("leading", leading);
- }
-}
-
-function addComment(type, content, line) {
- t.addComment(this.node, type, content, line);
-}
-
-function addComments(type, comments) {
- t.addComments(this.node, type, comments);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/traverse/lib/path/context.js b/assets/node_modules/@babel/traverse/lib/path/context.js
deleted file mode 100644
index b7af2ab..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/context.js
+++ /dev/null
@@ -1,249 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.call = call;
-exports._call = _call;
-exports.isBlacklisted = isBlacklisted;
-exports.visit = visit;
-exports.skip = skip;
-exports.skipKey = skipKey;
-exports.stop = stop;
-exports.setScope = setScope;
-exports.setContext = setContext;
-exports.resync = resync;
-exports._resyncParent = _resyncParent;
-exports._resyncKey = _resyncKey;
-exports._resyncList = _resyncList;
-exports._resyncRemoved = _resyncRemoved;
-exports.popContext = popContext;
-exports.pushContext = pushContext;
-exports.setup = setup;
-exports.setKey = setKey;
-exports.requeue = requeue;
-exports._getQueueContexts = _getQueueContexts;
-
-var _index = _interopRequireDefault(require("../index"));
-
-var _index2 = require("./index");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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 isBlacklisted() {
- const blacklist = this.opts.blacklist;
- return blacklist && blacklist.indexOf(this.node.type) > -1;
-}
-
-function visit() {
- if (!this.node) {
- return false;
- }
-
- if (this.isBlacklisted()) {
- return false;
- }
-
- if (this.opts.shouldSkip && this.opts.shouldSkip(this)) {
- return false;
- }
-
- if (this.shouldSkip || this.call("enter") || this.shouldSkip) {
- this.debug("Skip...");
- return this.shouldStop;
- }
-
- this.debug("Recursing into...");
-
- _index.default.node(this.node, this.opts, this.scope, this.state, this, this.skipKeys);
-
- 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;
- 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) {
- this.key = key;
- this.node = this.container[this.key];
- this.type = this.node && 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/assets/node_modules/@babel/traverse/lib/path/conversion.js b/assets/node_modules/@babel/traverse/lib/path/conversion.js
deleted file mode 100644
index 6325d56..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/conversion.js
+++ /dev/null
@@ -1,428 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.toComputedKey = toComputedKey;
-exports.ensureBlock = ensureBlock;
-exports.arrowFunctionToShadowed = arrowFunctionToShadowed;
-exports.unwrapFunctionEnvironment = unwrapFunctionEnvironment;
-exports.arrowFunctionToExpression = arrowFunctionToExpression;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-var _helperFunctionName = _interopRequireDefault(require("@babel/helper-function-name"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function toComputedKey() {
- const node = this.node;
- let key;
-
- if (this.isMemberExpression()) {
- key = node.property;
- } else if (this.isProperty() || this.isMethod()) {
- key = node.key;
- } else {
- throw new ReferenceError("todo");
- }
-
- if (!node.computed) {
- if (t.isIdentifier(key)) key = t.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(t.returnStatement(body.node));
- } else {
- key = "expression";
- statements.push(t.expressionStatement(body.node));
- }
- }
-
- this.node.body = t.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
-} = {}) {
- if (!this.isArrowFunctionExpression()) {
- throw this.buildCodeFrameError("Cannot convert non-arrow function to a function expression.");
- }
-
- const thisBinding = hoistFunctionEnvironment(this, specCompliant, allowInsertArrow);
- this.ensureBlock();
- this.node.type = "FunctionExpression";
-
- if (specCompliant) {
- const checkBinding = thisBinding ? null : this.parentPath.scope.generateUidIdentifier("arrowCheckId");
-
- if (checkBinding) {
- this.parentPath.scope.push({
- id: checkBinding,
- init: t.objectExpression([])
- });
- }
-
- this.get("body").unshiftContainer("body", t.expressionStatement(t.callExpression(this.hub.addHelper("newArrowCheck"), [t.thisExpression(), checkBinding ? t.identifier(checkBinding.name) : t.identifier(thisBinding)])));
- this.replaceWith(t.callExpression(t.memberExpression((0, _helperFunctionName.default)(this, true) || this.node, t.identifier("bind")), [checkBinding ? t.identifier(checkBinding.name) : t.thisExpression()]));
- }
-}
-
-function hoistFunctionEnvironment(fnPath, specCompliant = false, allowInsertArrow = true) {
- const thisEnvFn = fnPath.findParent(p => {
- return p.isFunction() && !p.isArrowFunctionExpression() || p.isProgram() || p.isClassProperty({
- static: false
- });
- });
- const inConstructor = thisEnvFn && thisEnvFn.node.kind === "constructor";
-
- if (thisEnvFn.isClassProperty()) {
- 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 = t.identifier(superBinding);
- callee.loc = superCall.node.callee.loc;
- superCall.get("callee").replaceWith(callee);
- });
- }
-
- if (argumentsPaths.length > 0) {
- const argumentsBinding = getBinding(thisEnvFn, "arguments", () => t.identifier("arguments"));
- argumentsPaths.forEach(argumentsChild => {
- const argsRef = t.identifier(argumentsBinding);
- argsRef.loc = argumentsChild.node.loc;
- argumentsChild.replaceWith(argsRef);
- });
- }
-
- if (newTargetPaths.length > 0) {
- const newTargetBinding = getBinding(thisEnvFn, "newtarget", () => t.metaProperty(t.identifier("new"), t.identifier("target")));
- newTargetPaths.forEach(targetChild => {
- const targetRef = t.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 = t.callExpression(t.identifier(superBinding), args);
-
- if (isCall) {
- superProp.parentPath.unshiftContainer("arguments", t.thisExpression());
- superProp.replaceWith(t.memberExpression(call, t.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 || specCompliant) {
- thisBinding = getThisBinding(thisEnvFn, inConstructor);
-
- if (!specCompliant || inConstructor && hasSuperClass(thisEnvFn)) {
- thisPaths.forEach(thisChild => {
- const thisRef = thisChild.isJSX() ? t.jsxIdentifier(thisBinding) : t.identifier(thisBinding);
- thisRef.loc = thisChild.node.loc;
- thisChild.replaceWith(thisRef);
- });
- if (specCompliant) thisBinding = null;
- }
- }
-
- return thisBinding;
-}
-
-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(t.memberExpression(superProp.node.object, t.assignmentExpression("=", tmp, superProp.node.property), true));
- assignmentPath.get("right").replaceWith(t.binaryExpression(op, t.memberExpression(superProp.node.object, t.identifier(tmp.name), true), value));
- } else {
- assignmentPath.get("left").replaceWith(t.memberExpression(superProp.node.object, superProp.node.property));
- assignmentPath.get("right").replaceWith(t.binaryExpression(op, t.memberExpression(superProp.node.object, t.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 = [t.assignmentExpression("=", tmp, t.memberExpression(superProp.node.object, computedKey ? t.assignmentExpression("=", computedKey, superProp.node.property) : superProp.node.property, superProp.node.computed)), t.assignmentExpression("=", t.memberExpression(superProp.node.object, computedKey ? t.identifier(computedKey.name) : superProp.node.property, superProp.node.computed), t.binaryExpression("+", t.identifier(tmp.name), t.numericLiteral(1)))];
-
- if (!superProp.parentPath.node.prefix) {
- parts.push(t.identifier(tmp.name));
- }
-
- updateExpr.replaceWith(t.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 t.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, t.assignmentExpression("=", t.identifier(thisBinding), t.identifier("this"))]);
- }
-
- });
- });
-}
-
-function getSuperBinding(thisEnvFn) {
- return getBinding(thisEnvFn, "supercall", () => {
- const argsBinding = thisEnvFn.scope.generateUidIdentifier("args");
- return t.arrowFunctionExpression([t.restElement(argsBinding)], t.callExpression(t.super(), [t.spreadElement(t.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 = t.memberExpression(t.super(), t.identifier(propName));
- } else {
- const method = thisEnvFn.scope.generateUidIdentifier("prop");
- argsList.unshift(method);
- fnBody = t.memberExpression(t.super(), t.identifier(method.name), true);
- }
-
- if (isAssignment) {
- const valueIdent = thisEnvFn.scope.generateUidIdentifier("value");
- argsList.push(valueIdent);
- fnBody = t.assignmentExpression("=", fnBody, t.identifier(valueIdent.name));
- }
-
- return t.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;
- 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/assets/node_modules/@babel/traverse/lib/path/evaluation.js b/assets/node_modules/@babel/traverse/lib/path/evaluation.js
deleted file mode 100644
index 61c0a55..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/evaluation.js
+++ /dev/null
@@ -1,404 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.evaluateTruthy = evaluateTruthy;
-exports.evaluate = evaluate;
-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;
- const {
- node
- } = path;
-
- if (path.isSequenceExpression()) {
- const exprs = path.get("expressions");
- return evaluateCached(exprs[exprs.length - 1], state);
- }
-
- if (path.isStringLiteral() || path.isNumericLiteral() || path.isBooleanLiteral()) {
- return node.value;
- }
-
- if (path.isNullLiteral()) {
- return null;
- }
-
- if (path.isTemplateLiteral()) {
- return evaluateQuasis(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, true) && property.isIdentifier && property.node.name === "raw") {
- return evaluateQuasis(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: 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(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 && binding.hasValue) {
- return binding.value;
- } else {
- if (node.name === "undefined") {
- return binding ? deopt(binding.path, state) : undefined;
- } else if (node.name === "Infinity") {
- return binding ? deopt(binding.path, state) : Infinity;
- } else if (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 (node.operator === "void") {
- return undefined;
- }
-
- const argument = path.get("argument");
-
- if (node.operator === "typeof" && (argument.isFunction() || argument.isClass())) {
- return "function";
- }
-
- const arg = evaluateCached(argument, state);
- if (!state.confident) return;
-
- switch (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(elem, 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(keyPath, 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(valuePath, 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 (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 (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, true) && VALID_CALLEES.indexOf(callee.node.name) >= 0) {
- func = global[node.callee.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/assets/node_modules/@babel/traverse/lib/path/family.js b/assets/node_modules/@babel/traverse/lib/path/family.js
deleted file mode 100644
index a88cdff..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/family.js
+++ /dev/null
@@ -1,287 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.getOpposite = getOpposite;
-exports.getCompletionRecords = getCompletionRecords;
-exports.getSibling = getSibling;
-exports.getPrevSibling = getPrevSibling;
-exports.getNextSibling = getNextSibling;
-exports.getAllNextSiblings = getAllNextSiblings;
-exports.getAllPrevSiblings = getAllPrevSiblings;
-exports.get = get;
-exports._getKey = _getKey;
-exports._getPattern = _getPattern;
-exports.getBindingIdentifiers = getBindingIdentifiers;
-exports.getOuterBindingIdentifiers = getOuterBindingIdentifiers;
-exports.getBindingIdentifierPaths = getBindingIdentifierPaths;
-exports.getOuterBindingIdentifierPaths = getOuterBindingIdentifierPaths;
-
-var _index = _interopRequireDefault(require("./index"));
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function getOpposite() {
- if (this.key === "left") {
- return this.getSibling("right");
- } else if (this.key === "right") {
- return this.getSibling("left");
- }
-}
-
-function addCompletionRecords(path, paths) {
- if (path) return paths.concat(path.getCompletionRecords());
- return paths;
-}
-
-function completionRecordForSwitch(cases, paths) {
- let isLastCaseWithConsequent = true;
-
- for (let i = cases.length - 1; i >= 0; i--) {
- const switchCase = cases[i];
- const consequent = switchCase.get("consequent");
- let breakStatement;
-
- findBreak: for (const statement of consequent) {
- if (statement.isBlockStatement()) {
- for (const statementInBlock of statement.get("body")) {
- if (statementInBlock.isBreakStatement()) {
- breakStatement = statementInBlock;
- break findBreak;
- }
- }
- } else if (statement.isBreakStatement()) {
- breakStatement = statement;
- break;
- }
- }
-
- if (breakStatement) {
- while (breakStatement.key === 0 && breakStatement.parentPath.isBlockStatement()) {
- breakStatement = breakStatement.parentPath;
- }
-
- const prevSibling = breakStatement.getPrevSibling();
-
- if (breakStatement.key > 0 && (prevSibling.isExpressionStatement() || prevSibling.isBlockStatement())) {
- paths = addCompletionRecords(prevSibling, paths);
- breakStatement.remove();
- } else {
- breakStatement.replaceWith(breakStatement.scope.buildUndefinedNode());
- paths = addCompletionRecords(breakStatement, paths);
- }
- } else if (isLastCaseWithConsequent) {
- const statementFinder = statement => !statement.isBlockStatement() || statement.get("body").some(statementFinder);
-
- const hasConsequent = consequent.some(statementFinder);
-
- if (hasConsequent) {
- paths = addCompletionRecords(consequent[consequent.length - 1], paths);
- isLastCaseWithConsequent = false;
- }
- }
- }
-
- return paths;
-}
-
-function getCompletionRecords() {
- let paths = [];
-
- if (this.isIfStatement()) {
- paths = addCompletionRecords(this.get("consequent"), paths);
- paths = addCompletionRecords(this.get("alternate"), paths);
- } else if (this.isDoExpression() || this.isFor() || this.isWhile()) {
- paths = addCompletionRecords(this.get("body"), paths);
- } else if (this.isProgram() || this.isBlockStatement()) {
- paths = addCompletionRecords(this.get("body").pop(), paths);
- } else if (this.isFunction()) {
- return this.get("body").getCompletionRecords();
- } else if (this.isTryStatement()) {
- paths = addCompletionRecords(this.get("block"), paths);
- paths = addCompletionRecords(this.get("handler"), paths);
- } else if (this.isCatchClause()) {
- paths = addCompletionRecords(this.get("body"), paths);
- } else if (this.isSwitchStatement()) {
- paths = completionRecordForSwitch(this.get("cases"), paths);
- } else {
- paths.push(this);
- }
-
- return paths;
-}
-
-function getSibling(key) {
- return _index.default.get({
- parentPath: this.parentPath,
- parent: this.parent,
- container: this.container,
- listKey: this.listKey,
- key: key
- });
-}
-
-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) {
- 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 t.getBindingIdentifiers(this.node, duplicates);
-}
-
-function getOuterBindingIdentifiers(duplicates) {
- return t.getOuterBindingIdentifiers(this.node, duplicates);
-}
-
-function getBindingIdentifierPaths(duplicates = false, outerOnly = false) {
- const path = this;
- let search = [].concat(path);
- const ids = Object.create(null);
-
- while (search.length) {
- const id = search.shift();
- if (!id) continue;
- if (!id.node) continue;
- const keys = t.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 (declaration.isDeclaration()) {
- 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) || child.node) {
- search = search.concat(child);
- }
- }
- }
- }
-
- return ids;
-}
-
-function getOuterBindingIdentifierPaths(duplicates) {
- return this.getBindingIdentifierPaths(duplicates, true);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/traverse/lib/path/index.js b/assets/node_modules/@babel/traverse/lib/path/index.js
deleted file mode 100644
index b03b7e3..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/index.js
+++ /dev/null
@@ -1,256 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.SHOULD_SKIP = exports.SHOULD_STOP = exports.REMOVED = void 0;
-
-var virtualTypes = _interopRequireWildcard(require("./lib/virtual-types"));
-
-var _debug = _interopRequireDefault(require("debug"));
-
-var _index = _interopRequireDefault(require("../index"));
-
-var _scope = _interopRequireDefault(require("../scope"));
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-var _cache = require("../cache");
-
-var _generator = _interopRequireDefault(require("@babel/generator"));
-
-var NodePath_ancestry = _interopRequireWildcard(require("./ancestry"));
-
-var NodePath_inference = _interopRequireWildcard(require("./inference"));
-
-var NodePath_replacement = _interopRequireWildcard(require("./replacement"));
-
-var NodePath_evaluation = _interopRequireWildcard(require("./evaluation"));
-
-var NodePath_conversion = _interopRequireWildcard(require("./conversion"));
-
-var NodePath_introspection = _interopRequireWildcard(require("./introspection"));
-
-var NodePath_context = _interopRequireWildcard(require("./context"));
-
-var NodePath_removal = _interopRequireWildcard(require("./removal"));
-
-var NodePath_modification = _interopRequireWildcard(require("./modification"));
-
-var NodePath_family = _interopRequireWildcard(require("./family"));
-
-var NodePath_comments = _interopRequireWildcard(require("./comments"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-const debug = (0, _debug.default)("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.parent = parent;
- this.hub = hub;
- this.contexts = [];
- this.data = null;
- this._traverseFlags = 0;
- this.state = null;
- this.opts = null;
- this.skipKeys = null;
- this.parentPath = null;
- this.context = null;
- this.container = null;
- this.listKey = null;
- this.key = null;
- this.node = null;
- this.scope = null;
- this.type = 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];
- const paths = _cache.path.get(parent) || [];
-
- if (!_cache.path.has(parent)) {
- _cache.path.set(parent, paths);
- }
-
- let path;
-
- for (let i = 0; i < paths.length; i++) {
- const pathCheck = paths[i];
-
- if (pathCheck.node === targetNode) {
- path = pathCheck;
- break;
- }
- }
-
- if (!path) {
- path = new NodePath(hub, parent);
- paths.push(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) {
- t.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;
- }
- }
-
-}
-
-exports.default = NodePath;
-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);
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/traverse/lib/path/inference/index.js b/assets/node_modules/@babel/traverse/lib/path/inference/index.js
deleted file mode 100644
index 7808f66..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/inference/index.js
+++ /dev/null
@@ -1,126 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.getTypeAnnotation = getTypeAnnotation;
-exports._getTypeAnnotation = _getTypeAnnotation;
-exports.isBaseType = isBaseType;
-exports.couldBeBaseType = couldBeBaseType;
-exports.baseTypeStrictlyMatches = baseTypeStrictlyMatches;
-exports.isGenericType = isGenericType;
-
-var inferers = _interopRequireWildcard(require("./inferers"));
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function getTypeAnnotation() {
- if (this.typeAnnotation) return this.typeAnnotation;
- let type = this._getTypeAnnotation() || t.anyTypeAnnotation();
- if (t.isTypeAnnotation(type)) type = type.typeAnnotation;
- return this.typeAnnotation = type;
-}
-
-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 t.stringTypeAnnotation();
- }
-
- if (declar.key === "left" && declarParent.isForOfStatement()) {
- return t.anyTypeAnnotation();
- }
-
- return t.voidTypeAnnotation();
- } else {
- return;
- }
- }
-
- if (node.typeAnnotation) {
- return node.typeAnnotation;
- }
-
- let inferer = inferers[node.type];
-
- if (inferer) {
- return inferer.call(this, node);
- }
-
- inferer = inferers[this.parentPath.type];
-
- if (inferer && inferer.validParent) {
- return this.parentPath.getTypeAnnotation();
- }
-}
-
-function isBaseType(baseName, soft) {
- return _isBaseType(baseName, this.getTypeAnnotation(), soft);
-}
-
-function _isBaseType(baseName, type, soft) {
- if (baseName === "string") {
- return t.isStringTypeAnnotation(type);
- } else if (baseName === "number") {
- return t.isNumberTypeAnnotation(type);
- } else if (baseName === "boolean") {
- return t.isBooleanTypeAnnotation(type);
- } else if (baseName === "any") {
- return t.isAnyTypeAnnotation(type);
- } else if (baseName === "mixed") {
- return t.isMixedTypeAnnotation(type);
- } else if (baseName === "empty") {
- return t.isEmptyTypeAnnotation(type);
- } else if (baseName === "void") {
- return t.isVoidTypeAnnotation(type);
- } else {
- if (soft) {
- return false;
- } else {
- throw new Error(`Unknown base type ${baseName}`);
- }
- }
-}
-
-function couldBeBaseType(name) {
- const type = this.getTypeAnnotation();
- if (t.isAnyTypeAnnotation(type)) return true;
-
- if (t.isUnionTypeAnnotation(type)) {
- for (const type2 of type.types) {
- if (t.isAnyTypeAnnotation(type2) || _isBaseType(name, type2, true)) {
- return true;
- }
- }
-
- return false;
- } else {
- return _isBaseType(name, type, true);
- }
-}
-
-function baseTypeStrictlyMatches(right) {
- const left = this.getTypeAnnotation();
- right = right.getTypeAnnotation();
-
- if (!t.isAnyTypeAnnotation(left) && t.isFlowBaseAnnotation(left)) {
- return right.type === left.type;
- }
-}
-
-function isGenericType(genericName) {
- const type = this.getTypeAnnotation();
- return t.isGenericTypeAnnotation(type) && t.isIdentifier(type.id, {
- name: genericName
- });
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js b/assets/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js
deleted file mode 100644
index 5a17437..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js
+++ /dev/null
@@ -1,175 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = _default;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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 t.voidTypeAnnotation();
- } else if (node.name === "NaN" || node.name === "Infinity") {
- return t.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 = constantViolations.concat(functionConstantViolations);
-
- for (const violation of constantViolations) {
- types.push(violation.getTypeAnnotation());
- }
- }
-
- if (types.length) {
- return t.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 (t.BOOLEAN_NUMBER_BINARY_OPERATORS.indexOf(operator) >= 0) {
- return t.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 t.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) {
- return {
- typeAnnotation: t.createUnionTypeAnnotation(types),
- ifStatement
- };
- }
-
- return getConditionalAnnotation(ifStatement, name);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/traverse/lib/path/inference/inferers.js b/assets/node_modules/@babel/traverse/lib/path/inference/inferers.js
deleted file mode 100644
index cd0445d..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/inference/inferers.js
+++ /dev/null
@@ -1,221 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.VariableDeclarator = VariableDeclarator;
-exports.TypeCastExpression = TypeCastExpression;
-exports.NewExpression = NewExpression;
-exports.TemplateLiteral = TemplateLiteral;
-exports.UnaryExpression = UnaryExpression;
-exports.BinaryExpression = BinaryExpression;
-exports.LogicalExpression = LogicalExpression;
-exports.ConditionalExpression = ConditionalExpression;
-exports.SequenceExpression = SequenceExpression;
-exports.ParenthesizedExpression = ParenthesizedExpression;
-exports.AssignmentExpression = AssignmentExpression;
-exports.UpdateExpression = UpdateExpression;
-exports.StringLiteral = StringLiteral;
-exports.NumericLiteral = NumericLiteral;
-exports.BooleanLiteral = BooleanLiteral;
-exports.NullLiteral = NullLiteral;
-exports.RegExpLiteral = RegExpLiteral;
-exports.ObjectExpression = ObjectExpression;
-exports.ArrayExpression = ArrayExpression;
-exports.RestElement = RestElement;
-exports.ClassDeclaration = exports.ClassExpression = exports.FunctionDeclaration = exports.ArrowFunctionExpression = exports.FunctionExpression = Func;
-exports.CallExpression = CallExpression;
-exports.TaggedTemplateExpression = TaggedTemplateExpression;
-Object.defineProperty(exports, "Identifier", {
- enumerable: true,
- get: function () {
- return _infererReference.default;
- }
-});
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-var _infererReference = _interopRequireDefault(require("./inferer-reference"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function VariableDeclarator() {
- const id = this.get("id");
- if (!id.isIdentifier()) return;
- const init = this.get("init");
- let type = init.getTypeAnnotation();
-
- if (type && 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 t.genericTypeAnnotation(node.callee);
- }
-}
-
-function TemplateLiteral() {
- return t.stringTypeAnnotation();
-}
-
-function UnaryExpression(node) {
- const operator = node.operator;
-
- if (operator === "void") {
- return t.voidTypeAnnotation();
- } else if (t.NUMBER_UNARY_OPERATORS.indexOf(operator) >= 0) {
- return t.numberTypeAnnotation();
- } else if (t.STRING_UNARY_OPERATORS.indexOf(operator) >= 0) {
- return t.stringTypeAnnotation();
- } else if (t.BOOLEAN_UNARY_OPERATORS.indexOf(operator) >= 0) {
- return t.booleanTypeAnnotation();
- }
-}
-
-function BinaryExpression(node) {
- const operator = node.operator;
-
- if (t.NUMBER_BINARY_OPERATORS.indexOf(operator) >= 0) {
- return t.numberTypeAnnotation();
- } else if (t.BOOLEAN_BINARY_OPERATORS.indexOf(operator) >= 0) {
- return t.booleanTypeAnnotation();
- } else if (operator === "+") {
- const right = this.get("right");
- const left = this.get("left");
-
- if (left.isBaseType("number") && right.isBaseType("number")) {
- return t.numberTypeAnnotation();
- } else if (left.isBaseType("string") || right.isBaseType("string")) {
- return t.stringTypeAnnotation();
- }
-
- return t.unionTypeAnnotation([t.stringTypeAnnotation(), t.numberTypeAnnotation()]);
- }
-}
-
-function LogicalExpression() {
- return t.createUnionTypeAnnotation([this.get("left").getTypeAnnotation(), this.get("right").getTypeAnnotation()]);
-}
-
-function ConditionalExpression() {
- return t.createUnionTypeAnnotation([this.get("consequent").getTypeAnnotation(), this.get("alternate").getTypeAnnotation()]);
-}
-
-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 t.numberTypeAnnotation();
- }
-}
-
-function StringLiteral() {
- return t.stringTypeAnnotation();
-}
-
-function NumericLiteral() {
- return t.numberTypeAnnotation();
-}
-
-function BooleanLiteral() {
- return t.booleanTypeAnnotation();
-}
-
-function NullLiteral() {
- return t.nullLiteralTypeAnnotation();
-}
-
-function RegExpLiteral() {
- return t.genericTypeAnnotation(t.identifier("RegExp"));
-}
-
-function ObjectExpression() {
- return t.genericTypeAnnotation(t.identifier("Object"));
-}
-
-function ArrayExpression() {
- return t.genericTypeAnnotation(t.identifier("Array"));
-}
-
-function RestElement() {
- return ArrayExpression();
-}
-
-RestElement.validParent = true;
-
-function Func() {
- return t.genericTypeAnnotation(t.identifier("Function"));
-}
-
-const isArrayFrom = t.buildMatchMemberExpression("Array.from");
-const isObjectKeys = t.buildMatchMemberExpression("Object.keys");
-const isObjectValues = t.buildMatchMemberExpression("Object.values");
-const isObjectEntries = t.buildMatchMemberExpression("Object.entries");
-
-function CallExpression() {
- const {
- callee
- } = this.node;
-
- if (isObjectKeys(callee)) {
- return t.arrayTypeAnnotation(t.stringTypeAnnotation());
- } else if (isArrayFrom(callee) || isObjectValues(callee)) {
- return t.arrayTypeAnnotation(t.anyTypeAnnotation());
- } else if (isObjectEntries(callee)) {
- return t.arrayTypeAnnotation(t.tupleTypeAnnotation([t.stringTypeAnnotation(), t.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 t.genericTypeAnnotation(t.identifier("AsyncIterator"));
- } else {
- return t.genericTypeAnnotation(t.identifier("Promise"));
- }
- } else {
- if (callee.node.returnType) {
- return callee.node.returnType;
- } else {}
- }
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/traverse/lib/path/introspection.js b/assets/node_modules/@babel/traverse/lib/path/introspection.js
deleted file mode 100644
index e8f2cce..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/introspection.js
+++ /dev/null
@@ -1,423 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.matchesPattern = matchesPattern;
-exports.has = has;
-exports.isStatic = isStatic;
-exports.isnt = isnt;
-exports.equals = equals;
-exports.isNodeType = isNodeType;
-exports.canHaveVariableDeclarationOrExpression = canHaveVariableDeclarationOrExpression;
-exports.canSwapBetweenExpressionAndStatement = canSwapBetweenExpressionAndStatement;
-exports.isCompletionRecord = isCompletionRecord;
-exports.isStatementOrBlock = isStatementOrBlock;
-exports.referencesImport = referencesImport;
-exports.getSource = getSource;
-exports.willIMaybeExecuteBefore = willIMaybeExecuteBefore;
-exports._guessExecutionStatusRelativeTo = _guessExecutionStatusRelativeTo;
-exports._guessExecutionStatusRelativeToDifferentFunctions = _guessExecutionStatusRelativeToDifferentFunctions;
-exports.resolve = resolve;
-exports._resolve = _resolve;
-exports.isConstantExpression = isConstantExpression;
-exports.isInStrictMode = isInStrictMode;
-exports.is = void 0;
-
-var _includes = _interopRequireDefault(require("lodash/includes"));
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function matchesPattern(pattern, allowPartial) {
- return t.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 t.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 t.isBlockStatement(replacement);
- } else if (this.isBlockStatement()) {
- return t.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() || t.isBlockStatement(this.container)) {
- return false;
- } else {
- return (0, _includes.default)(t.STATEMENT_OR_BLOCK_KEYS, this.key);
- }
-}
-
-function referencesImport(moduleSource, importName) {
- if (!this.isReferencedIdentifier()) 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() && 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 = t.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 (!t.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.get("operator").node !== "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;
- }
-
- let {
- node
- } = path;
- if (path.isFunction()) node = node.body;
-
- for (const directive of node.directives) {
- if (directive.value.value === "use strict") {
- return true;
- }
- }
- });
- return !!strictParent;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/traverse/lib/path/lib/hoister.js b/assets/node_modules/@babel/traverse/lib/path/lib/hoister.js
deleted file mode 100644
index 4d6644a..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/lib/hoister.js
+++ /dev/null
@@ -1,193 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-const referenceVisitor = {
- ReferencedIdentifier(path, state) {
- if (path.isJSXIdentifier() && t.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 = [];
- 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 = t.variableDeclarator(uid, this.path.node);
- const insertFn = this.attachAfter ? "insertAfter" : "insertBefore";
- const [attached] = attachTo[insertFn]([attachTo.isVariableDeclarator() ? declarator : t.variableDeclaration("var", [declarator])]);
- const parent = this.path.parentPath;
-
- if (parent.isJSXElement() && this.path.container === parent.node.children) {
- uid = t.JSXExpressionContainer(uid);
- }
-
- this.path.replaceWith(t.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/assets/node_modules/@babel/traverse/lib/path/lib/removal-hooks.js b/assets/node_modules/@babel/traverse/lib/path/lib/removal-hooks.js
deleted file mode 100644
index 23ec8fe..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/lib/removal-hooks.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"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/assets/node_modules/@babel/traverse/lib/path/lib/virtual-types.js b/assets/node_modules/@babel/traverse/lib/path/lib/virtual-types.js
deleted file mode 100644
index 505e9a4..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/lib/virtual-types.js
+++ /dev/null
@@ -1,210 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.ForAwaitStatement = exports.NumericLiteralTypeAnnotation = exports.ExistentialTypeParam = exports.SpreadProperty = exports.RestProperty = exports.Flow = exports.Pure = exports.Generated = exports.User = exports.Var = exports.BlockScoped = exports.Referenced = exports.Scope = exports.Expression = exports.Statement = exports.BindingIdentifier = exports.ReferencedMemberExpression = exports.ReferencedIdentifier = void 0;
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-const ReferencedIdentifier = {
- types: ["Identifier", "JSXIdentifier"],
-
- checkPath(path, opts) {
- const {
- node,
- parent
- } = path;
-
- if (!t.isIdentifier(node, opts) && !t.isJSXMemberExpression(parent, opts)) {
- if (t.isJSXIdentifier(node, opts)) {
- if (t.react.isCompatTag(node.name)) return false;
- } else {
- return false;
- }
- }
-
- return t.isReferenced(node, parent, path.parentPath.parent);
- }
-
-};
-exports.ReferencedIdentifier = ReferencedIdentifier;
-const ReferencedMemberExpression = {
- types: ["MemberExpression"],
-
- checkPath({
- node,
- parent
- }) {
- return t.isMemberExpression(node) && t.isReferenced(node, parent);
- }
-
-};
-exports.ReferencedMemberExpression = ReferencedMemberExpression;
-const BindingIdentifier = {
- types: ["Identifier"],
-
- checkPath(path) {
- const {
- node,
- parent
- } = path;
- const grandparent = path.parentPath.parent;
- return t.isIdentifier(node) && t.isBinding(node, parent, grandparent);
- }
-
-};
-exports.BindingIdentifier = BindingIdentifier;
-const Statement = {
- types: ["Statement"],
-
- checkPath({
- node,
- parent
- }) {
- if (t.isStatement(node)) {
- if (t.isVariableDeclaration(node)) {
- if (t.isForXStatement(parent, {
- left: node
- })) return false;
- if (t.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 t.isExpression(path.node);
- }
- }
-
-};
-exports.Expression = Expression;
-const Scope = {
- types: ["Scopable", "Pattern"],
-
- checkPath(path) {
- return t.isScope(path.node, path.parent);
- }
-
-};
-exports.Scope = Scope;
-const Referenced = {
- checkPath(path) {
- return t.isReferenced(path.node, path.parent);
- }
-
-};
-exports.Referenced = Referenced;
-const BlockScoped = {
- checkPath(path) {
- return t.isBlockScoped(path.node);
- }
-
-};
-exports.BlockScoped = BlockScoped;
-const Var = {
- types: ["VariableDeclaration"],
-
- checkPath(path) {
- return t.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 (t.isFlow(node)) {
- return true;
- } else if (t.isImportDeclaration(node)) {
- return node.importKind === "type" || node.importKind === "typeof";
- } else if (t.isExportDeclaration(node)) {
- return node.exportKind === "type";
- } else if (t.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/assets/node_modules/@babel/traverse/lib/path/modification.js b/assets/node_modules/@babel/traverse/lib/path/modification.js
deleted file mode 100644
index 13aece7..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/modification.js
+++ /dev/null
@@ -1,216 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.insertBefore = insertBefore;
-exports._containerInsert = _containerInsert;
-exports._containerInsertBefore = _containerInsertBefore;
-exports._containerInsertAfter = _containerInsertAfter;
-exports.insertAfter = insertAfter;
-exports.updateSiblingKeys = updateSiblingKeys;
-exports._verifyNodeList = _verifyNodeList;
-exports.unshiftContainer = unshiftContainer;
-exports.pushContainer = pushContainer;
-exports.hoist = hoist;
-
-var _cache = require("../cache");
-
-var _hoister = _interopRequireDefault(require("./lib/hoister"));
-
-var _index = _interopRequireDefault(require("./index"));
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function insertBefore(nodes) {
- this._assertUnremoved();
-
- 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 shouldInsertCurrentNode = this.node && (!this.isExpressionStatement() || this.node.expression != null);
- this.replaceWith(t.blockStatement(shouldInsertCurrentNode ? [this.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();
-
- 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 t.isExpression(node) ? t.expressionStatement(node) : node;
- }));
- } else if (this.isNodeType("Expression") && !this.isJSXElement() && !parentPath.isJSXElement() || parentPath.isForStatement() && this.key === "init") {
- if (this.node) {
- let {
- scope
- } = this;
-
- if (parentPath.isMethod({
- computed: true,
- key: this.node
- })) {
- scope = scope.parent;
- }
-
- const temp = scope.generateDeclaredUidIdentifier();
- nodes.unshift(t.expressionStatement(t.assignmentExpression("=", t.cloneNode(temp), this.node)));
- nodes.push(t.expressionStatement(t.cloneNode(temp)));
- }
-
- return this.replaceExpressionWithStatements(nodes);
- } else if (Array.isArray(this.container)) {
- return this._containerInsertAfter(nodes);
- } else if (this.isStatementOrBlock()) {
- const shouldInsertCurrentNode = this.node && (!this.isExpressionStatement() || this.node.expression != null);
- this.replaceWith(t.blockStatement(shouldInsertCurrentNode ? [this.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 (let i = 0; i < paths.length; i++) {
- const path = paths[i];
-
- if (path.key >= fromIndex) {
- path.key += incrementBy;
- }
- }
-}
-
-function _verifyNodeList(nodes) {
- if (!nodes) {
- return [];
- }
-
- if (nodes.constructor !== Array) {
- 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
- });
-
- return path._containerInsertBefore(nodes);
-}
-
-function pushContainer(listKey, nodes) {
- this._assertUnremoved();
-
- nodes = this._verifyNodeList(nodes);
- const container = this.node[listKey];
-
- const path = _index.default.get({
- parentPath: this,
- parent: this.node,
- container: container,
- listKey,
- key: container.length
- });
-
- return path.replaceWithMultiple(nodes);
-}
-
-function hoist(scope = this.scope) {
- const hoister = new _hoister.default(this, scope);
- return hoister.run();
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/traverse/lib/path/removal.js b/assets/node_modules/@babel/traverse/lib/path/removal.js
deleted file mode 100644
index 9877430..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/removal.js
+++ /dev/null
@@ -1,66 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.remove = remove;
-exports._removeFromScope = _removeFromScope;
-exports._callRemovalHooks = _callRemovalHooks;
-exports._remove = _remove;
-exports._markRemoved = _markRemoved;
-exports._assertUnremoved = _assertUnremoved;
-
-var _removalHooks = require("./lib/removal-hooks");
-
-var _index = require("./index");
-
-function remove() {
- this._assertUnremoved();
-
- this.resync();
-
- 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;
- 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/assets/node_modules/@babel/traverse/lib/path/replacement.js b/assets/node_modules/@babel/traverse/lib/path/replacement.js
deleted file mode 100644
index dab8cb9..0000000
--- a/assets/node_modules/@babel/traverse/lib/path/replacement.js
+++ /dev/null
@@ -1,244 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.replaceWithMultiple = replaceWithMultiple;
-exports.replaceWithSourceString = replaceWithSourceString;
-exports.replaceWith = replaceWith;
-exports._replaceWith = _replaceWith;
-exports.replaceExpressionWithStatements = replaceExpressionWithStatements;
-exports.replaceInline = replaceInline;
-
-var _codeFrame = require("@babel/code-frame");
-
-var _index = _interopRequireDefault(require("../index"));
-
-var _index2 = _interopRequireDefault(require("./index"));
-
-var _parser = require("@babel/parser");
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const hoistVariablesVisitor = {
- Function(path) {
- path.skip();
- },
-
- VariableDeclaration(path) {
- if (path.node.kind !== "var") return;
- const bindings = path.getBindingIdentifiers();
-
- for (const key of Object.keys(bindings)) {
- path.scope.push({
- id: bindings[key]
- });
- }
-
- const exprs = [];
-
- for (const declar of path.node.declarations) {
- if (declar.init) {
- exprs.push(t.expressionStatement(t.assignmentExpression("=", declar.id, declar.init)));
- }
- }
-
- path.replaceWithMultiple(exprs);
- }
-
-};
-
-function replaceWithMultiple(nodes) {
- this.resync();
- nodes = this._verifyNodeList(nodes);
- t.inheritLeadingComments(nodes[0], this.node);
- t.inheritTrailingComments(nodes[nodes.length - 1], 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() && !t.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") && t.isExpression(replacement)) {
- if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement) && !this.parentPath.isExportDefaultDeclaration()) {
- replacement = t.expressionStatement(replacement);
- nodePath = "expression";
- }
- }
-
- if (this.isNodeType("Expression") && t.isStatement(replacement)) {
- if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement)) {
- return this.replaceExpressionWithStatements([replacement]);
- }
- }
-
- const oldNode = this.node;
-
- if (oldNode) {
- t.inheritsComments(replacement, oldNode);
- t.removeComments(oldNode);
- }
-
- this._replaceWith(replacement);
-
- this.type = replacement.type;
- this.setScope();
- this.requeue();
- return [nodePath ? this.get(nodePath) : this];
-}
-
-function _replaceWith(node) {
- if (!this.container) {
- throw new ReferenceError("Container is falsy");
- }
-
- if (this.inList) {
- t.validate(this.parent, this.key, [node]);
- } else {
- t.validate(this.parent, this.key, node);
- }
-
- this.debug(`Replace with ${node && node.type}`);
- this.node = this.container[this.key] = node;
-}
-
-function replaceExpressionWithStatements(nodes) {
- this.resync();
- const toSequenceExpression = t.toSequenceExpression(nodes, this.scope);
-
- if (toSequenceExpression) {
- return this.replaceWith(toSequenceExpression)[0].get("expressions");
- }
-
- const functionParent = this.getFunctionParent();
- const isParentAsync = functionParent && functionParent.is("async");
- const container = t.arrowFunctionExpression([], t.blockStatement(nodes));
- this.replaceWith(t.callExpression(container, []));
- this.traverse(hoistVariablesVisitor);
- 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) {
- const callee = this.get("callee");
- uid = callee.scope.generateDeclaredUidIdentifier("ret");
- callee.get("body").pushContainer("body", t.returnStatement(t.cloneNode(uid)));
- loop.setData("expressionReplacementReturnUid", uid);
- } else {
- uid = t.identifier(uid.name);
- }
-
- path.get("expression").replaceWith(t.assignmentExpression("=", t.cloneNode(uid), path.node.expression));
- } else {
- path.replaceWith(t.returnStatement(path.node.expression));
- }
- }
-
- const callee = this.get("callee");
- callee.arrowFunctionToExpression();
-
- if (isParentAsync && _index.default.hasType(this.get("callee.body").node, "AwaitExpression", t.FUNCTION_TYPES)) {
- callee.set("async", true);
- this.replaceWith(t.awaitExpression(this.node));
- }
-
- return callee.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/assets/node_modules/@babel/traverse/lib/scope/binding.js b/assets/node_modules/@babel/traverse/lib/scope/binding.js
deleted file mode 100644
index d19f116..0000000
--- a/assets/node_modules/@babel/traverse/lib/scope/binding.js
+++ /dev/null
@@ -1,71 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-class Binding {
- constructor({
- identifier,
- scope,
- path,
- kind
- }) {
- this.identifier = identifier;
- this.scope = scope;
- this.path = path;
- this.kind = kind;
- this.constantViolations = [];
- this.constant = true;
- this.referencePaths = [];
- this.referenced = false;
- this.references = 0;
- 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/assets/node_modules/@babel/traverse/lib/scope/index.js b/assets/node_modules/@babel/traverse/lib/scope/index.js
deleted file mode 100644
index 54f2a73..0000000
--- a/assets/node_modules/@babel/traverse/lib/scope/index.js
+++ /dev/null
@@ -1,858 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _includes = _interopRequireDefault(require("lodash/includes"));
-
-var _repeat = _interopRequireDefault(require("lodash/repeat"));
-
-var _renamer = _interopRequireDefault(require("./lib/renamer"));
-
-var _index = _interopRequireDefault(require("../index"));
-
-var _defaults = _interopRequireDefault(require("lodash/defaults"));
-
-var _binding = _interopRequireDefault(require("./binding"));
-
-var _globals = _interopRequireDefault(require("globals"));
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-var _cache = require("../cache");
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function gatherNodeParts(node, parts) {
- if (t.isModuleDeclaration(node)) {
- if (node.source) {
- gatherNodeParts(node.source, parts);
- } else if (node.specifiers && node.specifiers.length) {
- for (const specifier of node.specifiers) {
- gatherNodeParts(specifier, parts);
- }
- } else if (node.declaration) {
- gatherNodeParts(node.declaration, parts);
- }
- } else if (t.isModuleSpecifier(node)) {
- gatherNodeParts(node.local, parts);
- } else if (t.isMemberExpression(node)) {
- gatherNodeParts(node.object, parts);
- gatherNodeParts(node.property, parts);
- } else if (t.isIdentifier(node)) {
- parts.push(node.name);
- } else if (t.isLiteral(node)) {
- parts.push(node.value);
- } else if (t.isCallExpression(node)) {
- gatherNodeParts(node.callee, parts);
- } else if (t.isObjectExpression(node) || t.isObjectPattern(node)) {
- for (const prop of node.properties) {
- gatherNodeParts(prop.key || prop.argument, parts);
- }
- } else if (t.isPrivateName(node)) {
- gatherNodeParts(node.id, parts);
- } else if (t.isThisExpression(node)) {
- parts.push("this");
- } else if (t.isSuper(node)) {
- parts.push("super");
- }
-}
-
-const collectorVisitor = {
- For(path) {
- for (const key of t.FOR_INIT_KEYS) {
- const declar = path.get(key);
-
- if (declar.isVar()) {
- const parentScope = path.scope.getFunctionParent() || path.scope.getProgramParent();
- parentScope.registerBinding("var", declar);
- }
- }
- },
-
- Declaration(path) {
- if (path.isBlockScoped()) return;
-
- if (path.isExportDeclaration() && path.get("declaration").isDeclaration()) {
- return;
- }
-
- const parent = path.scope.getFunctionParent() || path.scope.getProgramParent();
- 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);
- }
- },
-
- ExportDeclaration: {
- exit(path) {
- const {
- node,
- scope
- } = path;
- const declar = node.declaration;
-
- if (t.isClassDeclaration(declar) || t.isFunctionDeclaration(declar)) {
- const id = declar.id;
- if (!id) return;
- const binding = scope.getBinding(id.name);
- if (binding) binding.reference(path);
- } else if (t.isVariableDeclaration(declar)) {
- for (const decl of declar.declarations) {
- for (const name of Object.keys(t.getBindingIdentifiers(decl))) {
- const binding = scope.getBinding(name);
- if (binding) binding.reference(path);
- }
- }
- }
- }
-
- },
-
- LabeledStatement(path) {
- path.scope.getProgramParent().addGlobal(path.node);
- 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);
- }
- },
-
- Block(path) {
- const paths = path.get("body");
-
- for (const bodyPath of paths) {
- if (bodyPath.isFunctionDeclaration()) {
- path.scope.getBlockParent().registerDeclaration(bodyPath);
- }
- }
- }
-
-};
-let uid = 0;
-
-class Scope {
- constructor(path) {
- const {
- node
- } = path;
-
- const cached = _cache.scope.get(node);
-
- if (cached && cached.path === path) {
- return cached;
- }
-
- _cache.scope.set(node, this);
-
- this.uid = uid++;
- this.block = node;
- this.path = path;
- this.labels = new Map();
- }
-
- get parent() {
- const parent = this.path.findParent(p => p.isScope());
- return parent && 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 t.cloneNode(id);
- }
-
- generateUidIdentifier(name) {
- return t.identifier(this.generateUid(name));
- }
-
- generateUid(name = "temp") {
- name = t.toIdentifier(name).replace(/^_+/, "").replace(/[0-9]+$/g, "");
- let uid;
- let i = 0;
-
- 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(parent, defaultName) {
- let node = parent;
-
- if (t.isAssignmentExpression(parent)) {
- node = parent.left;
- } else if (t.isVariableDeclarator(parent)) {
- node = parent.id;
- } else if (t.isObjectProperty(node) || t.isObjectMethod(node)) {
- node = node.key;
- }
-
- const parts = [];
- gatherNodeParts(node, parts);
- let id = parts.join("$");
- id = id.replace(/^_/, "") || defaultName || "ref";
- return this.generateUid(id.slice(0, 20));
- }
-
- generateUidIdentifierBasedOnNode(parent, defaultName) {
- return t.identifier(this.generateUidBasedOnNode(parent, defaultName));
- }
-
- isStatic(node) {
- if (t.isThisExpression(node) || t.isSuper(node)) {
- return true;
- }
-
- if (t.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 t.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 = (0, _repeat.default)("-", 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) {
- if (t.isIdentifier(node)) {
- const binding = this.getBinding(node.name);
-
- if (binding && binding.constant && binding.path.isGenericType("Array")) {
- return node;
- }
- }
-
- if (t.isArrayExpression(node)) {
- return node;
- }
-
- if (t.isIdentifier(node, {
- name: "arguments"
- })) {
- return t.callExpression(t.memberExpression(t.memberExpression(t.memberExpression(t.identifier("Array"), t.identifier("prototype")), t.identifier("slice")), t.identifier("call")), [node]);
- }
-
- let helperName;
- const args = [node];
-
- if (i === true) {
- helperName = "toConsumableArray";
- } else if (i) {
- args.push(t.numericLiteral(i));
- helperName = "slicedToArray";
- } else {
- helperName = "toArray";
- }
-
- return t.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 t.unaryExpression("void", t.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)) {
- for (const id of ids[name]) {
- const local = this.getOwnBinding(name);
-
- if (local) {
- if (local.identifier === id) continue;
- this.checkBlockScopedCollisions(local, kind, name, id);
- }
-
- parent.references[name] = true;
-
- 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) {
- let scope = this;
-
- do {
- if (scope.references[name]) return true;
- } while (scope = scope.parent);
-
- return false;
- }
-
- isPure(node, constantsOnly) {
- if (t.isIdentifier(node)) {
- const binding = this.getBinding(node.name);
- if (!binding) return false;
- if (constantsOnly) return binding.constant;
- return true;
- } else if (t.isClass(node)) {
- if (node.superClass && !this.isPure(node.superClass, constantsOnly)) {
- return false;
- }
-
- return this.isPure(node.body, constantsOnly);
- } else if (t.isClassBody(node)) {
- for (const method of node.body) {
- if (!this.isPure(method, constantsOnly)) return false;
- }
-
- return true;
- } else if (t.isBinary(node)) {
- return this.isPure(node.left, constantsOnly) && this.isPure(node.right, constantsOnly);
- } else if (t.isArrayExpression(node)) {
- for (const elem of node.elements) {
- if (!this.isPure(elem, constantsOnly)) return false;
- }
-
- return true;
- } else if (t.isObjectExpression(node)) {
- for (const prop of node.properties) {
- if (!this.isPure(prop, constantsOnly)) return false;
- }
-
- return true;
- } else if (t.isClassMethod(node)) {
- if (node.computed && !this.isPure(node.key, constantsOnly)) return false;
- if (node.kind === "get" || node.kind === "set") return false;
- return true;
- } else if (t.isProperty(node)) {
- if (node.computed && !this.isPure(node.key, constantsOnly)) return false;
- return this.isPure(node.value, constantsOnly);
- } else if (t.isUnaryExpression(node)) {
- return this.isPure(node.argument, constantsOnly);
- } else if (t.isTaggedTemplateExpression(node)) {
- return t.matchesPattern(node.tag, "String.raw") && !this.hasBinding("String", true) && this.isPure(node.quasi, constantsOnly);
- } else if (t.isTemplateLiteral(node)) {
- for (const expression of node.expressions) {
- if (!this.isPure(expression, constantsOnly)) return false;
- }
-
- return true;
- } else {
- return t.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.references) 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);
-
- if (path.isLoop()) {
- for (const key of t.FOR_INIT_KEYS) {
- const node = path.get(key);
- if (node.isBlockScoped()) this.registerBinding(node.node.kind, node);
- }
- }
-
- if (path.isFunctionExpression() && path.has("id")) {
- if (!path.get("id").node[t.NOT_LOCAL_BINDING]) {
- this.registerBinding("local", path.get("id"), path);
- }
- }
-
- if (path.isClassExpression() && path.has("id")) {
- if (!path.get("id").node[t.NOT_LOCAL_BINDING]) {
- this.registerBinding("local", path);
- }
- }
-
- if (path.isFunction()) {
- const params = path.get("params");
-
- for (const param of params) {
- this.registerBinding("param", param);
- }
- }
-
- if (path.isCatchClause()) {
- this.registerBinding("let", path);
- }
-
- const parent = this.getProgramParent();
- if (parent.crawling) return;
- const state = {
- references: [],
- constantViolations: [],
- assignments: []
- };
- this.crawling = true;
- path.traverse(collectorVisitor, state);
- this.crawling = false;
-
- for (const path of state.assignments) {
- const ids = path.getBindingIdentifiers();
- let programParent;
-
- for (const name of Object.keys(ids)) {
- if (path.scope.getBinding(name)) continue;
- programParent = programParent || path.scope.getProgramParent();
- 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 {
- ref.scope.getProgramParent().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 = t.variableDeclaration(kind, []);
- declar._blockHoist = blockHoist;
- [declarPath] = path.unshiftContainer("body", [declar]);
- if (!unique) path.setData(dataKey, declarPath);
- }
-
- const declarator = t.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 {
- (0, _defaults.default)(ids, scope.bindings);
- scope = scope.parent;
- } while (scope);
-
- return ids;
- }
-
- getAllBindingsOfKind() {
- const ids = Object.create(null);
-
- for (const kind of arguments) {
- 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) {
- if (previousPath && previousPath.isPattern() && previousPath.parentPath.isFunction() && binding.kind !== "param") {} else {
- return binding;
- }
- }
-
- previousPath = scope.path;
- } while (scope = scope.parent);
- }
-
- getOwnBinding(name) {
- return this.bindings[name];
- }
-
- getBindingIdentifier(name) {
- const info = this.getBinding(name);
- return info && info.identifier;
- }
-
- getOwnBindingIdentifier(name) {
- const binding = this.bindings[name];
- return binding && 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 && (0, _includes.default)(Scope.globals, name)) return true;
- if (!noGlobals && (0, _includes.default)(Scope.contextVariables, name)) return true;
- return false;
- }
-
- parentHasBinding(name, noGlobals) {
- return this.parent && 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) {
- const info = this.getBinding(name);
-
- if (info) {
- info.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.default.builtin);
-Scope.contextVariables = ["arguments", "undefined", "Infinity", "NaN"]; \ No newline at end of file
diff --git a/assets/node_modules/@babel/traverse/lib/scope/lib/renamer.js b/assets/node_modules/@babel/traverse/lib/scope/lib/renamer.js
deleted file mode 100644
index 3e77531..0000000
--- a/assets/node_modules/@babel/traverse/lib/scope/lib/renamer.js
+++ /dev/null
@@ -1,124 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _binding = _interopRequireDefault(require("../binding"));
-
-var _helperSplitExportDeclaration = _interopRequireDefault(require("@babel/helper-split-export-declaration"));
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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)) {
- path.skip();
- }
- },
-
- "AssignmentExpression|Declaration"(path, state) {
- 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 = t.identifier(this.oldName);
- path.node._blockHoist = 3;
- path.replaceWith(t.variableDeclaration("let", [t.variableDeclarator(t.identifier(this.newName), t.toExpression(path.node))]));
- }
-
- maybeConvertFromClassFunctionExpression(path) {
- return;
- if (!path.isFunctionExpression() && !path.isClassExpression()) return;
- if (this.binding.kind !== "local") return;
- path.node.id = t.identifier(this.oldName);
- this.binding.scope.parent.push({
- id: t.identifier(this.newName)
- });
- path.replaceWith(t.assignmentExpression("=", t.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);
- }
- }
-
- scope.traverse(block || scope.block, renameVisitor, this);
-
- if (!block) {
- scope.removeOwnBinding(oldName);
- scope.bindings[newName] = binding;
- this.binding.identifier.name = newName;
- }
-
- if (binding.type === "hoisted") {}
-
- if (parentDeclar) {
- this.maybeConvertFromClassFunctionDeclaration(parentDeclar);
- this.maybeConvertFromClassFunctionExpression(parentDeclar);
- }
- }
-
-}
-
-exports.default = Renamer; \ No newline at end of file
diff --git a/assets/node_modules/@babel/traverse/lib/visitors.js b/assets/node_modules/@babel/traverse/lib/visitors.js
deleted file mode 100644
index d74d771..0000000
--- a/assets/node_modules/@babel/traverse/lib/visitors.js
+++ /dev/null
@@ -1,244 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.explode = explode;
-exports.verify = verify;
-exports.merge = merge;
-
-var virtualTypes = _interopRequireWildcard(require("./path/lib/virtual-types"));
-
-var t = _interopRequireWildcard(require("@babel/types"));
-
-var _clone = _interopRequireDefault(require("lodash/clone"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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 = t.FLIPPED_ALIAS_KEYS[nodeType];
- const deprecratedKey = t.DEPRECATED_KEYS[nodeType];
-
- if (deprecratedKey) {
- console.trace(`Visitor defined for ${nodeType} but it has been renamed to ${deprecratedKey}`);
- aliases = [deprecratedKey];
- }
-
- if (!aliases) continue;
- delete visitor[nodeType];
-
- for (const alias of aliases) {
- const existing = visitor[alias];
-
- if (existing) {
- mergePair(existing, fns);
- } else {
- visitor[alias] = (0, _clone.default)(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 (t.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 === "blacklist" || key === "noScope" || key === "skipKeys") {
- 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/assets/node_modules/@babel/traverse/node_modules/.bin/parser b/assets/node_modules/@babel/traverse/node_modules/.bin/parser
deleted file mode 120000
index 97a06c3..0000000
--- a/assets/node_modules/@babel/traverse/node_modules/.bin/parser
+++ /dev/null
@@ -1 +0,0 @@
-../../../parser/bin/babel-parser.js \ No newline at end of file
diff --git a/assets/node_modules/@babel/traverse/package.json b/assets/node_modules/@babel/traverse/package.json
deleted file mode 100644
index 08e4243..0000000
--- a/assets/node_modules/@babel/traverse/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "@babel/traverse",
- "version": "7.8.4",
- "description": "The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes",
- "author": "Sebastian McKenzie <sebmck@gmail.com>",
- "homepage": "https://babeljs.io/",
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- },
- "repository": "https://github.com/babel/babel/tree/master/packages/babel-traverse",
- "main": "lib/index.js",
- "dependencies": {
- "@babel/code-frame": "^7.8.3",
- "@babel/generator": "^7.8.4",
- "@babel/helper-function-name": "^7.8.3",
- "@babel/helper-split-export-declaration": "^7.8.3",
- "@babel/parser": "^7.8.4",
- "@babel/types": "^7.8.3",
- "debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.13"
- },
- "devDependencies": {
- "@babel/helper-plugin-test-runner": "^7.8.3"
- },
- "gitHead": "5c2e6bc07fed3d28801d93168622c99ae622653a"
-}
diff --git a/assets/node_modules/@babel/types/LICENSE b/assets/node_modules/@babel/types/LICENSE
deleted file mode 100644
index f31575e..0000000
--- a/assets/node_modules/@babel/types/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-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/assets/node_modules/@babel/types/README.md b/assets/node_modules/@babel/types/README.md
deleted file mode 100644
index 8d33374..0000000
--- a/assets/node_modules/@babel/types/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# @babel/types
-
-> Babel Types is a Lodash-esque utility library for AST nodes
-
-See our website [@babel/types](https://babeljs.io/docs/en/next/babel-types.html) 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/assets/node_modules/@babel/types/lib/asserts/assertNode.js b/assets/node_modules/@babel/types/lib/asserts/assertNode.js
deleted file mode 100644
index 194ec71..0000000
--- a/assets/node_modules/@babel/types/lib/asserts/assertNode.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = assertNode;
-
-var _isNode = _interopRequireDefault(require("../validators/isNode"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function assertNode(node) {
- if (!(0, _isNode.default)(node)) {
- const type = node && node.type || JSON.stringify(node);
- throw new TypeError(`Not a valid node of type "${type}"`);
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/asserts/generated/index.js b/assets/node_modules/@babel/types/lib/asserts/generated/index.js
deleted file mode 100644
index 8563e50..0000000
--- a/assets/node_modules/@babel/types/lib/asserts/generated/index.js
+++ /dev/null
@@ -1,1429 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.assertArrayExpression = assertArrayExpression;
-exports.assertAssignmentExpression = assertAssignmentExpression;
-exports.assertBinaryExpression = assertBinaryExpression;
-exports.assertInterpreterDirective = assertInterpreterDirective;
-exports.assertDirective = assertDirective;
-exports.assertDirectiveLiteral = assertDirectiveLiteral;
-exports.assertBlockStatement = assertBlockStatement;
-exports.assertBreakStatement = assertBreakStatement;
-exports.assertCallExpression = assertCallExpression;
-exports.assertCatchClause = assertCatchClause;
-exports.assertConditionalExpression = assertConditionalExpression;
-exports.assertContinueStatement = assertContinueStatement;
-exports.assertDebuggerStatement = assertDebuggerStatement;
-exports.assertDoWhileStatement = assertDoWhileStatement;
-exports.assertEmptyStatement = assertEmptyStatement;
-exports.assertExpressionStatement = assertExpressionStatement;
-exports.assertFile = assertFile;
-exports.assertForInStatement = assertForInStatement;
-exports.assertForStatement = assertForStatement;
-exports.assertFunctionDeclaration = assertFunctionDeclaration;
-exports.assertFunctionExpression = assertFunctionExpression;
-exports.assertIdentifier = assertIdentifier;
-exports.assertIfStatement = assertIfStatement;
-exports.assertLabeledStatement = assertLabeledStatement;
-exports.assertStringLiteral = assertStringLiteral;
-exports.assertNumericLiteral = assertNumericLiteral;
-exports.assertNullLiteral = assertNullLiteral;
-exports.assertBooleanLiteral = assertBooleanLiteral;
-exports.assertRegExpLiteral = assertRegExpLiteral;
-exports.assertLogicalExpression = assertLogicalExpression;
-exports.assertMemberExpression = assertMemberExpression;
-exports.assertNewExpression = assertNewExpression;
-exports.assertProgram = assertProgram;
-exports.assertObjectExpression = assertObjectExpression;
-exports.assertObjectMethod = assertObjectMethod;
-exports.assertObjectProperty = assertObjectProperty;
-exports.assertRestElement = assertRestElement;
-exports.assertReturnStatement = assertReturnStatement;
-exports.assertSequenceExpression = assertSequenceExpression;
-exports.assertParenthesizedExpression = assertParenthesizedExpression;
-exports.assertSwitchCase = assertSwitchCase;
-exports.assertSwitchStatement = assertSwitchStatement;
-exports.assertThisExpression = assertThisExpression;
-exports.assertThrowStatement = assertThrowStatement;
-exports.assertTryStatement = assertTryStatement;
-exports.assertUnaryExpression = assertUnaryExpression;
-exports.assertUpdateExpression = assertUpdateExpression;
-exports.assertVariableDeclaration = assertVariableDeclaration;
-exports.assertVariableDeclarator = assertVariableDeclarator;
-exports.assertWhileStatement = assertWhileStatement;
-exports.assertWithStatement = assertWithStatement;
-exports.assertAssignmentPattern = assertAssignmentPattern;
-exports.assertArrayPattern = assertArrayPattern;
-exports.assertArrowFunctionExpression = assertArrowFunctionExpression;
-exports.assertClassBody = assertClassBody;
-exports.assertClassExpression = assertClassExpression;
-exports.assertClassDeclaration = assertClassDeclaration;
-exports.assertExportAllDeclaration = assertExportAllDeclaration;
-exports.assertExportDefaultDeclaration = assertExportDefaultDeclaration;
-exports.assertExportNamedDeclaration = assertExportNamedDeclaration;
-exports.assertExportSpecifier = assertExportSpecifier;
-exports.assertForOfStatement = assertForOfStatement;
-exports.assertImportDeclaration = assertImportDeclaration;
-exports.assertImportDefaultSpecifier = assertImportDefaultSpecifier;
-exports.assertImportNamespaceSpecifier = assertImportNamespaceSpecifier;
-exports.assertImportSpecifier = assertImportSpecifier;
-exports.assertMetaProperty = assertMetaProperty;
-exports.assertClassMethod = assertClassMethod;
-exports.assertObjectPattern = assertObjectPattern;
-exports.assertSpreadElement = assertSpreadElement;
-exports.assertSuper = assertSuper;
-exports.assertTaggedTemplateExpression = assertTaggedTemplateExpression;
-exports.assertTemplateElement = assertTemplateElement;
-exports.assertTemplateLiteral = assertTemplateLiteral;
-exports.assertYieldExpression = assertYieldExpression;
-exports.assertAnyTypeAnnotation = assertAnyTypeAnnotation;
-exports.assertArrayTypeAnnotation = assertArrayTypeAnnotation;
-exports.assertBooleanTypeAnnotation = assertBooleanTypeAnnotation;
-exports.assertBooleanLiteralTypeAnnotation = assertBooleanLiteralTypeAnnotation;
-exports.assertNullLiteralTypeAnnotation = assertNullLiteralTypeAnnotation;
-exports.assertClassImplements = assertClassImplements;
-exports.assertDeclareClass = assertDeclareClass;
-exports.assertDeclareFunction = assertDeclareFunction;
-exports.assertDeclareInterface = assertDeclareInterface;
-exports.assertDeclareModule = assertDeclareModule;
-exports.assertDeclareModuleExports = assertDeclareModuleExports;
-exports.assertDeclareTypeAlias = assertDeclareTypeAlias;
-exports.assertDeclareOpaqueType = assertDeclareOpaqueType;
-exports.assertDeclareVariable = assertDeclareVariable;
-exports.assertDeclareExportDeclaration = assertDeclareExportDeclaration;
-exports.assertDeclareExportAllDeclaration = assertDeclareExportAllDeclaration;
-exports.assertDeclaredPredicate = assertDeclaredPredicate;
-exports.assertExistsTypeAnnotation = assertExistsTypeAnnotation;
-exports.assertFunctionTypeAnnotation = assertFunctionTypeAnnotation;
-exports.assertFunctionTypeParam = assertFunctionTypeParam;
-exports.assertGenericTypeAnnotation = assertGenericTypeAnnotation;
-exports.assertInferredPredicate = assertInferredPredicate;
-exports.assertInterfaceExtends = assertInterfaceExtends;
-exports.assertInterfaceDeclaration = assertInterfaceDeclaration;
-exports.assertInterfaceTypeAnnotation = assertInterfaceTypeAnnotation;
-exports.assertIntersectionTypeAnnotation = assertIntersectionTypeAnnotation;
-exports.assertMixedTypeAnnotation = assertMixedTypeAnnotation;
-exports.assertEmptyTypeAnnotation = assertEmptyTypeAnnotation;
-exports.assertNullableTypeAnnotation = assertNullableTypeAnnotation;
-exports.assertNumberLiteralTypeAnnotation = assertNumberLiteralTypeAnnotation;
-exports.assertNumberTypeAnnotation = assertNumberTypeAnnotation;
-exports.assertObjectTypeAnnotation = assertObjectTypeAnnotation;
-exports.assertObjectTypeInternalSlot = assertObjectTypeInternalSlot;
-exports.assertObjectTypeCallProperty = assertObjectTypeCallProperty;
-exports.assertObjectTypeIndexer = assertObjectTypeIndexer;
-exports.assertObjectTypeProperty = assertObjectTypeProperty;
-exports.assertObjectTypeSpreadProperty = assertObjectTypeSpreadProperty;
-exports.assertOpaqueType = assertOpaqueType;
-exports.assertQualifiedTypeIdentifier = assertQualifiedTypeIdentifier;
-exports.assertStringLiteralTypeAnnotation = assertStringLiteralTypeAnnotation;
-exports.assertStringTypeAnnotation = assertStringTypeAnnotation;
-exports.assertThisTypeAnnotation = assertThisTypeAnnotation;
-exports.assertTupleTypeAnnotation = assertTupleTypeAnnotation;
-exports.assertTypeofTypeAnnotation = assertTypeofTypeAnnotation;
-exports.assertTypeAlias = assertTypeAlias;
-exports.assertTypeAnnotation = assertTypeAnnotation;
-exports.assertTypeCastExpression = assertTypeCastExpression;
-exports.assertTypeParameter = assertTypeParameter;
-exports.assertTypeParameterDeclaration = assertTypeParameterDeclaration;
-exports.assertTypeParameterInstantiation = assertTypeParameterInstantiation;
-exports.assertUnionTypeAnnotation = assertUnionTypeAnnotation;
-exports.assertVariance = assertVariance;
-exports.assertVoidTypeAnnotation = assertVoidTypeAnnotation;
-exports.assertEnumDeclaration = assertEnumDeclaration;
-exports.assertEnumBooleanBody = assertEnumBooleanBody;
-exports.assertEnumNumberBody = assertEnumNumberBody;
-exports.assertEnumStringBody = assertEnumStringBody;
-exports.assertEnumSymbolBody = assertEnumSymbolBody;
-exports.assertEnumBooleanMember = assertEnumBooleanMember;
-exports.assertEnumNumberMember = assertEnumNumberMember;
-exports.assertEnumStringMember = assertEnumStringMember;
-exports.assertEnumDefaultedMember = assertEnumDefaultedMember;
-exports.assertJSXAttribute = assertJSXAttribute;
-exports.assertJSXClosingElement = assertJSXClosingElement;
-exports.assertJSXElement = assertJSXElement;
-exports.assertJSXEmptyExpression = assertJSXEmptyExpression;
-exports.assertJSXExpressionContainer = assertJSXExpressionContainer;
-exports.assertJSXSpreadChild = assertJSXSpreadChild;
-exports.assertJSXIdentifier = assertJSXIdentifier;
-exports.assertJSXMemberExpression = assertJSXMemberExpression;
-exports.assertJSXNamespacedName = assertJSXNamespacedName;
-exports.assertJSXOpeningElement = assertJSXOpeningElement;
-exports.assertJSXSpreadAttribute = assertJSXSpreadAttribute;
-exports.assertJSXText = assertJSXText;
-exports.assertJSXFragment = assertJSXFragment;
-exports.assertJSXOpeningFragment = assertJSXOpeningFragment;
-exports.assertJSXClosingFragment = assertJSXClosingFragment;
-exports.assertNoop = assertNoop;
-exports.assertPlaceholder = assertPlaceholder;
-exports.assertV8IntrinsicIdentifier = assertV8IntrinsicIdentifier;
-exports.assertArgumentPlaceholder = assertArgumentPlaceholder;
-exports.assertAwaitExpression = assertAwaitExpression;
-exports.assertBindExpression = assertBindExpression;
-exports.assertClassProperty = assertClassProperty;
-exports.assertOptionalMemberExpression = assertOptionalMemberExpression;
-exports.assertPipelineTopicExpression = assertPipelineTopicExpression;
-exports.assertPipelineBareFunction = assertPipelineBareFunction;
-exports.assertPipelinePrimaryTopicReference = assertPipelinePrimaryTopicReference;
-exports.assertOptionalCallExpression = assertOptionalCallExpression;
-exports.assertClassPrivateProperty = assertClassPrivateProperty;
-exports.assertClassPrivateMethod = assertClassPrivateMethod;
-exports.assertImport = assertImport;
-exports.assertDecorator = assertDecorator;
-exports.assertDoExpression = assertDoExpression;
-exports.assertExportDefaultSpecifier = assertExportDefaultSpecifier;
-exports.assertExportNamespaceSpecifier = assertExportNamespaceSpecifier;
-exports.assertPrivateName = assertPrivateName;
-exports.assertBigIntLiteral = assertBigIntLiteral;
-exports.assertTSParameterProperty = assertTSParameterProperty;
-exports.assertTSDeclareFunction = assertTSDeclareFunction;
-exports.assertTSDeclareMethod = assertTSDeclareMethod;
-exports.assertTSQualifiedName = assertTSQualifiedName;
-exports.assertTSCallSignatureDeclaration = assertTSCallSignatureDeclaration;
-exports.assertTSConstructSignatureDeclaration = assertTSConstructSignatureDeclaration;
-exports.assertTSPropertySignature = assertTSPropertySignature;
-exports.assertTSMethodSignature = assertTSMethodSignature;
-exports.assertTSIndexSignature = assertTSIndexSignature;
-exports.assertTSAnyKeyword = assertTSAnyKeyword;
-exports.assertTSBooleanKeyword = assertTSBooleanKeyword;
-exports.assertTSBigIntKeyword = assertTSBigIntKeyword;
-exports.assertTSNeverKeyword = assertTSNeverKeyword;
-exports.assertTSNullKeyword = assertTSNullKeyword;
-exports.assertTSNumberKeyword = assertTSNumberKeyword;
-exports.assertTSObjectKeyword = assertTSObjectKeyword;
-exports.assertTSStringKeyword = assertTSStringKeyword;
-exports.assertTSSymbolKeyword = assertTSSymbolKeyword;
-exports.assertTSUndefinedKeyword = assertTSUndefinedKeyword;
-exports.assertTSUnknownKeyword = assertTSUnknownKeyword;
-exports.assertTSVoidKeyword = assertTSVoidKeyword;
-exports.assertTSThisType = assertTSThisType;
-exports.assertTSFunctionType = assertTSFunctionType;
-exports.assertTSConstructorType = assertTSConstructorType;
-exports.assertTSTypeReference = assertTSTypeReference;
-exports.assertTSTypePredicate = assertTSTypePredicate;
-exports.assertTSTypeQuery = assertTSTypeQuery;
-exports.assertTSTypeLiteral = assertTSTypeLiteral;
-exports.assertTSArrayType = assertTSArrayType;
-exports.assertTSTupleType = assertTSTupleType;
-exports.assertTSOptionalType = assertTSOptionalType;
-exports.assertTSRestType = assertTSRestType;
-exports.assertTSUnionType = assertTSUnionType;
-exports.assertTSIntersectionType = assertTSIntersectionType;
-exports.assertTSConditionalType = assertTSConditionalType;
-exports.assertTSInferType = assertTSInferType;
-exports.assertTSParenthesizedType = assertTSParenthesizedType;
-exports.assertTSTypeOperator = assertTSTypeOperator;
-exports.assertTSIndexedAccessType = assertTSIndexedAccessType;
-exports.assertTSMappedType = assertTSMappedType;
-exports.assertTSLiteralType = assertTSLiteralType;
-exports.assertTSExpressionWithTypeArguments = assertTSExpressionWithTypeArguments;
-exports.assertTSInterfaceDeclaration = assertTSInterfaceDeclaration;
-exports.assertTSInterfaceBody = assertTSInterfaceBody;
-exports.assertTSTypeAliasDeclaration = assertTSTypeAliasDeclaration;
-exports.assertTSAsExpression = assertTSAsExpression;
-exports.assertTSTypeAssertion = assertTSTypeAssertion;
-exports.assertTSEnumDeclaration = assertTSEnumDeclaration;
-exports.assertTSEnumMember = assertTSEnumMember;
-exports.assertTSModuleDeclaration = assertTSModuleDeclaration;
-exports.assertTSModuleBlock = assertTSModuleBlock;
-exports.assertTSImportType = assertTSImportType;
-exports.assertTSImportEqualsDeclaration = assertTSImportEqualsDeclaration;
-exports.assertTSExternalModuleReference = assertTSExternalModuleReference;
-exports.assertTSNonNullExpression = assertTSNonNullExpression;
-exports.assertTSExportAssignment = assertTSExportAssignment;
-exports.assertTSNamespaceExportDeclaration = assertTSNamespaceExportDeclaration;
-exports.assertTSTypeAnnotation = assertTSTypeAnnotation;
-exports.assertTSTypeParameterInstantiation = assertTSTypeParameterInstantiation;
-exports.assertTSTypeParameterDeclaration = assertTSTypeParameterDeclaration;
-exports.assertTSTypeParameter = assertTSTypeParameter;
-exports.assertExpression = assertExpression;
-exports.assertBinary = assertBinary;
-exports.assertScopable = assertScopable;
-exports.assertBlockParent = assertBlockParent;
-exports.assertBlock = assertBlock;
-exports.assertStatement = assertStatement;
-exports.assertTerminatorless = assertTerminatorless;
-exports.assertCompletionStatement = assertCompletionStatement;
-exports.assertConditional = assertConditional;
-exports.assertLoop = assertLoop;
-exports.assertWhile = assertWhile;
-exports.assertExpressionWrapper = assertExpressionWrapper;
-exports.assertFor = assertFor;
-exports.assertForXStatement = assertForXStatement;
-exports.assertFunction = assertFunction;
-exports.assertFunctionParent = assertFunctionParent;
-exports.assertPureish = assertPureish;
-exports.assertDeclaration = assertDeclaration;
-exports.assertPatternLike = assertPatternLike;
-exports.assertLVal = assertLVal;
-exports.assertTSEntityName = assertTSEntityName;
-exports.assertLiteral = assertLiteral;
-exports.assertImmutable = assertImmutable;
-exports.assertUserWhitespacable = assertUserWhitespacable;
-exports.assertMethod = assertMethod;
-exports.assertObjectMember = assertObjectMember;
-exports.assertProperty = assertProperty;
-exports.assertUnaryLike = assertUnaryLike;
-exports.assertPattern = assertPattern;
-exports.assertClass = assertClass;
-exports.assertModuleDeclaration = assertModuleDeclaration;
-exports.assertExportDeclaration = assertExportDeclaration;
-exports.assertModuleSpecifier = assertModuleSpecifier;
-exports.assertFlow = assertFlow;
-exports.assertFlowType = assertFlowType;
-exports.assertFlowBaseAnnotation = assertFlowBaseAnnotation;
-exports.assertFlowDeclaration = assertFlowDeclaration;
-exports.assertFlowPredicate = assertFlowPredicate;
-exports.assertEnumBody = assertEnumBody;
-exports.assertEnumMember = assertEnumMember;
-exports.assertJSX = assertJSX;
-exports.assertPrivate = assertPrivate;
-exports.assertTSTypeElement = assertTSTypeElement;
-exports.assertTSType = assertTSType;
-exports.assertNumberLiteral = assertNumberLiteral;
-exports.assertRegexLiteral = assertRegexLiteral;
-exports.assertRestProperty = assertRestProperty;
-exports.assertSpreadProperty = assertSpreadProperty;
-
-var _is = _interopRequireDefault(require("../../validators/is"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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 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 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 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 assertAwaitExpression(node, opts = {}) {
- assert("AwaitExpression", node, opts);
-}
-
-function assertBindExpression(node, opts = {}) {
- assert("BindExpression", node, opts);
-}
-
-function assertClassProperty(node, opts = {}) {
- assert("ClassProperty", node, opts);
-}
-
-function assertOptionalMemberExpression(node, opts = {}) {
- assert("OptionalMemberExpression", 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 assertOptionalCallExpression(node, opts = {}) {
- assert("OptionalCallExpression", node, opts);
-}
-
-function assertClassPrivateProperty(node, opts = {}) {
- assert("ClassPrivateProperty", node, opts);
-}
-
-function assertClassPrivateMethod(node, opts = {}) {
- assert("ClassPrivateMethod", node, opts);
-}
-
-function assertImport(node, opts = {}) {
- assert("Import", 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 assertExportNamespaceSpecifier(node, opts = {}) {
- assert("ExportNamespaceSpecifier", node, opts);
-}
-
-function assertPrivateName(node, opts = {}) {
- assert("PrivateName", node, opts);
-}
-
-function assertBigIntLiteral(node, opts = {}) {
- assert("BigIntLiteral", 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 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 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 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 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 assertPrivate(node, opts = {}) {
- assert("Private", node, opts);
-}
-
-function assertTSTypeElement(node, opts = {}) {
- assert("TSTypeElement", node, opts);
-}
-
-function assertTSType(node, opts = {}) {
- assert("TSType", 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/assets/node_modules/@babel/types/lib/builders/builder.js b/assets/node_modules/@babel/types/lib/builders/builder.js
deleted file mode 100644
index 812cc17..0000000
--- a/assets/node_modules/@babel/types/lib/builders/builder.js
+++ /dev/null
@@ -1,42 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = builder;
-
-var _clone = _interopRequireDefault(require("lodash/clone"));
-
-var _definitions = require("../definitions");
-
-var _validate = _interopRequireDefault(require("../validators/validate"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function builder(type, ...args) {
- const keys = _definitions.BUILDER_KEYS[type];
- const countArgs = args.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
- };
- let i = 0;
- keys.forEach(key => {
- const field = _definitions.NODE_FIELDS[type][key];
- let arg;
- if (i < countArgs) arg = args[i];
- if (arg === undefined) arg = (0, _clone.default)(field.default);
- node[key] = arg;
- i++;
- });
-
- for (const key of Object.keys(node)) {
- (0, _validate.default)(node, key, node[key]);
- }
-
- return node;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js b/assets/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js
deleted file mode 100644
index 4724335..0000000
--- a/assets/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js
+++ /dev/null
@@ -1,28 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = createTypeAnnotationBasedOnTypeof;
-
-var _generated = require("../generated");
-
-function createTypeAnnotationBasedOnTypeof(type) {
- if (type === "string") {
- return (0, _generated.stringTypeAnnotation)();
- } else if (type === "number") {
- return (0, _generated.numberTypeAnnotation)();
- } else if (type === "undefined") {
- return (0, _generated.voidTypeAnnotation)();
- } else if (type === "boolean") {
- return (0, _generated.booleanTypeAnnotation)();
- } else if (type === "function") {
- return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Function"));
- } else if (type === "object") {
- return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Object"));
- } else if (type === "symbol") {
- return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Symbol"));
- } else {
- throw new Error("Invalid typeof value");
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/builders/flow/createUnionTypeAnnotation.js b/assets/node_modules/@babel/types/lib/builders/flow/createUnionTypeAnnotation.js
deleted file mode 100644
index df76b01..0000000
--- a/assets/node_modules/@babel/types/lib/builders/flow/createUnionTypeAnnotation.js
+++ /dev/null
@@ -1,22 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = createUnionTypeAnnotation;
-
-var _generated = require("../generated");
-
-var _removeTypeDuplicates = _interopRequireDefault(require("../../modifications/flow/removeTypeDuplicates"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function createUnionTypeAnnotation(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/assets/node_modules/@babel/types/lib/builders/generated/index.js b/assets/node_modules/@babel/types/lib/builders/generated/index.js
deleted file mode 100644
index 32c1302..0000000
--- a/assets/node_modules/@babel/types/lib/builders/generated/index.js
+++ /dev/null
@@ -1,1203 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.arrayExpression = exports.ArrayExpression = ArrayExpression;
-exports.assignmentExpression = exports.AssignmentExpression = AssignmentExpression;
-exports.binaryExpression = exports.BinaryExpression = BinaryExpression;
-exports.interpreterDirective = exports.InterpreterDirective = InterpreterDirective;
-exports.directive = exports.Directive = Directive;
-exports.directiveLiteral = exports.DirectiveLiteral = DirectiveLiteral;
-exports.blockStatement = exports.BlockStatement = BlockStatement;
-exports.breakStatement = exports.BreakStatement = BreakStatement;
-exports.callExpression = exports.CallExpression = CallExpression;
-exports.catchClause = exports.CatchClause = CatchClause;
-exports.conditionalExpression = exports.ConditionalExpression = ConditionalExpression;
-exports.continueStatement = exports.ContinueStatement = ContinueStatement;
-exports.debuggerStatement = exports.DebuggerStatement = DebuggerStatement;
-exports.doWhileStatement = exports.DoWhileStatement = DoWhileStatement;
-exports.emptyStatement = exports.EmptyStatement = EmptyStatement;
-exports.expressionStatement = exports.ExpressionStatement = ExpressionStatement;
-exports.file = exports.File = File;
-exports.forInStatement = exports.ForInStatement = ForInStatement;
-exports.forStatement = exports.ForStatement = ForStatement;
-exports.functionDeclaration = exports.FunctionDeclaration = FunctionDeclaration;
-exports.functionExpression = exports.FunctionExpression = FunctionExpression;
-exports.identifier = exports.Identifier = Identifier;
-exports.ifStatement = exports.IfStatement = IfStatement;
-exports.labeledStatement = exports.LabeledStatement = LabeledStatement;
-exports.stringLiteral = exports.StringLiteral = StringLiteral;
-exports.numericLiteral = exports.NumericLiteral = NumericLiteral;
-exports.nullLiteral = exports.NullLiteral = NullLiteral;
-exports.booleanLiteral = exports.BooleanLiteral = BooleanLiteral;
-exports.regExpLiteral = exports.RegExpLiteral = RegExpLiteral;
-exports.logicalExpression = exports.LogicalExpression = LogicalExpression;
-exports.memberExpression = exports.MemberExpression = MemberExpression;
-exports.newExpression = exports.NewExpression = NewExpression;
-exports.program = exports.Program = Program;
-exports.objectExpression = exports.ObjectExpression = ObjectExpression;
-exports.objectMethod = exports.ObjectMethod = ObjectMethod;
-exports.objectProperty = exports.ObjectProperty = ObjectProperty;
-exports.restElement = exports.RestElement = RestElement;
-exports.returnStatement = exports.ReturnStatement = ReturnStatement;
-exports.sequenceExpression = exports.SequenceExpression = SequenceExpression;
-exports.parenthesizedExpression = exports.ParenthesizedExpression = ParenthesizedExpression;
-exports.switchCase = exports.SwitchCase = SwitchCase;
-exports.switchStatement = exports.SwitchStatement = SwitchStatement;
-exports.thisExpression = exports.ThisExpression = ThisExpression;
-exports.throwStatement = exports.ThrowStatement = ThrowStatement;
-exports.tryStatement = exports.TryStatement = TryStatement;
-exports.unaryExpression = exports.UnaryExpression = UnaryExpression;
-exports.updateExpression = exports.UpdateExpression = UpdateExpression;
-exports.variableDeclaration = exports.VariableDeclaration = VariableDeclaration;
-exports.variableDeclarator = exports.VariableDeclarator = VariableDeclarator;
-exports.whileStatement = exports.WhileStatement = WhileStatement;
-exports.withStatement = exports.WithStatement = WithStatement;
-exports.assignmentPattern = exports.AssignmentPattern = AssignmentPattern;
-exports.arrayPattern = exports.ArrayPattern = ArrayPattern;
-exports.arrowFunctionExpression = exports.ArrowFunctionExpression = ArrowFunctionExpression;
-exports.classBody = exports.ClassBody = ClassBody;
-exports.classExpression = exports.ClassExpression = ClassExpression;
-exports.classDeclaration = exports.ClassDeclaration = ClassDeclaration;
-exports.exportAllDeclaration = exports.ExportAllDeclaration = ExportAllDeclaration;
-exports.exportDefaultDeclaration = exports.ExportDefaultDeclaration = ExportDefaultDeclaration;
-exports.exportNamedDeclaration = exports.ExportNamedDeclaration = ExportNamedDeclaration;
-exports.exportSpecifier = exports.ExportSpecifier = ExportSpecifier;
-exports.forOfStatement = exports.ForOfStatement = ForOfStatement;
-exports.importDeclaration = exports.ImportDeclaration = ImportDeclaration;
-exports.importDefaultSpecifier = exports.ImportDefaultSpecifier = ImportDefaultSpecifier;
-exports.importNamespaceSpecifier = exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;
-exports.importSpecifier = exports.ImportSpecifier = ImportSpecifier;
-exports.metaProperty = exports.MetaProperty = MetaProperty;
-exports.classMethod = exports.ClassMethod = ClassMethod;
-exports.objectPattern = exports.ObjectPattern = ObjectPattern;
-exports.spreadElement = exports.SpreadElement = SpreadElement;
-exports.super = exports.Super = Super;
-exports.taggedTemplateExpression = exports.TaggedTemplateExpression = TaggedTemplateExpression;
-exports.templateElement = exports.TemplateElement = TemplateElement;
-exports.templateLiteral = exports.TemplateLiteral = TemplateLiteral;
-exports.yieldExpression = exports.YieldExpression = YieldExpression;
-exports.anyTypeAnnotation = exports.AnyTypeAnnotation = AnyTypeAnnotation;
-exports.arrayTypeAnnotation = exports.ArrayTypeAnnotation = ArrayTypeAnnotation;
-exports.booleanTypeAnnotation = exports.BooleanTypeAnnotation = BooleanTypeAnnotation;
-exports.booleanLiteralTypeAnnotation = exports.BooleanLiteralTypeAnnotation = BooleanLiteralTypeAnnotation;
-exports.nullLiteralTypeAnnotation = exports.NullLiteralTypeAnnotation = NullLiteralTypeAnnotation;
-exports.classImplements = exports.ClassImplements = ClassImplements;
-exports.declareClass = exports.DeclareClass = DeclareClass;
-exports.declareFunction = exports.DeclareFunction = DeclareFunction;
-exports.declareInterface = exports.DeclareInterface = DeclareInterface;
-exports.declareModule = exports.DeclareModule = DeclareModule;
-exports.declareModuleExports = exports.DeclareModuleExports = DeclareModuleExports;
-exports.declareTypeAlias = exports.DeclareTypeAlias = DeclareTypeAlias;
-exports.declareOpaqueType = exports.DeclareOpaqueType = DeclareOpaqueType;
-exports.declareVariable = exports.DeclareVariable = DeclareVariable;
-exports.declareExportDeclaration = exports.DeclareExportDeclaration = DeclareExportDeclaration;
-exports.declareExportAllDeclaration = exports.DeclareExportAllDeclaration = DeclareExportAllDeclaration;
-exports.declaredPredicate = exports.DeclaredPredicate = DeclaredPredicate;
-exports.existsTypeAnnotation = exports.ExistsTypeAnnotation = ExistsTypeAnnotation;
-exports.functionTypeAnnotation = exports.FunctionTypeAnnotation = FunctionTypeAnnotation;
-exports.functionTypeParam = exports.FunctionTypeParam = FunctionTypeParam;
-exports.genericTypeAnnotation = exports.GenericTypeAnnotation = GenericTypeAnnotation;
-exports.inferredPredicate = exports.InferredPredicate = InferredPredicate;
-exports.interfaceExtends = exports.InterfaceExtends = InterfaceExtends;
-exports.interfaceDeclaration = exports.InterfaceDeclaration = InterfaceDeclaration;
-exports.interfaceTypeAnnotation = exports.InterfaceTypeAnnotation = InterfaceTypeAnnotation;
-exports.intersectionTypeAnnotation = exports.IntersectionTypeAnnotation = IntersectionTypeAnnotation;
-exports.mixedTypeAnnotation = exports.MixedTypeAnnotation = MixedTypeAnnotation;
-exports.emptyTypeAnnotation = exports.EmptyTypeAnnotation = EmptyTypeAnnotation;
-exports.nullableTypeAnnotation = exports.NullableTypeAnnotation = NullableTypeAnnotation;
-exports.numberLiteralTypeAnnotation = exports.NumberLiteralTypeAnnotation = NumberLiteralTypeAnnotation;
-exports.numberTypeAnnotation = exports.NumberTypeAnnotation = NumberTypeAnnotation;
-exports.objectTypeAnnotation = exports.ObjectTypeAnnotation = ObjectTypeAnnotation;
-exports.objectTypeInternalSlot = exports.ObjectTypeInternalSlot = ObjectTypeInternalSlot;
-exports.objectTypeCallProperty = exports.ObjectTypeCallProperty = ObjectTypeCallProperty;
-exports.objectTypeIndexer = exports.ObjectTypeIndexer = ObjectTypeIndexer;
-exports.objectTypeProperty = exports.ObjectTypeProperty = ObjectTypeProperty;
-exports.objectTypeSpreadProperty = exports.ObjectTypeSpreadProperty = ObjectTypeSpreadProperty;
-exports.opaqueType = exports.OpaqueType = OpaqueType;
-exports.qualifiedTypeIdentifier = exports.QualifiedTypeIdentifier = QualifiedTypeIdentifier;
-exports.stringLiteralTypeAnnotation = exports.StringLiteralTypeAnnotation = StringLiteralTypeAnnotation;
-exports.stringTypeAnnotation = exports.StringTypeAnnotation = StringTypeAnnotation;
-exports.thisTypeAnnotation = exports.ThisTypeAnnotation = ThisTypeAnnotation;
-exports.tupleTypeAnnotation = exports.TupleTypeAnnotation = TupleTypeAnnotation;
-exports.typeofTypeAnnotation = exports.TypeofTypeAnnotation = TypeofTypeAnnotation;
-exports.typeAlias = exports.TypeAlias = TypeAlias;
-exports.typeAnnotation = exports.TypeAnnotation = TypeAnnotation;
-exports.typeCastExpression = exports.TypeCastExpression = TypeCastExpression;
-exports.typeParameter = exports.TypeParameter = TypeParameter;
-exports.typeParameterDeclaration = exports.TypeParameterDeclaration = TypeParameterDeclaration;
-exports.typeParameterInstantiation = exports.TypeParameterInstantiation = TypeParameterInstantiation;
-exports.unionTypeAnnotation = exports.UnionTypeAnnotation = UnionTypeAnnotation;
-exports.variance = exports.Variance = Variance;
-exports.voidTypeAnnotation = exports.VoidTypeAnnotation = VoidTypeAnnotation;
-exports.enumDeclaration = exports.EnumDeclaration = EnumDeclaration;
-exports.enumBooleanBody = exports.EnumBooleanBody = EnumBooleanBody;
-exports.enumNumberBody = exports.EnumNumberBody = EnumNumberBody;
-exports.enumStringBody = exports.EnumStringBody = EnumStringBody;
-exports.enumSymbolBody = exports.EnumSymbolBody = EnumSymbolBody;
-exports.enumBooleanMember = exports.EnumBooleanMember = EnumBooleanMember;
-exports.enumNumberMember = exports.EnumNumberMember = EnumNumberMember;
-exports.enumStringMember = exports.EnumStringMember = EnumStringMember;
-exports.enumDefaultedMember = exports.EnumDefaultedMember = EnumDefaultedMember;
-exports.jSXAttribute = exports.jsxAttribute = exports.JSXAttribute = JSXAttribute;
-exports.jSXClosingElement = exports.jsxClosingElement = exports.JSXClosingElement = JSXClosingElement;
-exports.jSXElement = exports.jsxElement = exports.JSXElement = JSXElement;
-exports.jSXEmptyExpression = exports.jsxEmptyExpression = exports.JSXEmptyExpression = JSXEmptyExpression;
-exports.jSXExpressionContainer = exports.jsxExpressionContainer = exports.JSXExpressionContainer = JSXExpressionContainer;
-exports.jSXSpreadChild = exports.jsxSpreadChild = exports.JSXSpreadChild = JSXSpreadChild;
-exports.jSXIdentifier = exports.jsxIdentifier = exports.JSXIdentifier = JSXIdentifier;
-exports.jSXMemberExpression = exports.jsxMemberExpression = exports.JSXMemberExpression = JSXMemberExpression;
-exports.jSXNamespacedName = exports.jsxNamespacedName = exports.JSXNamespacedName = JSXNamespacedName;
-exports.jSXOpeningElement = exports.jsxOpeningElement = exports.JSXOpeningElement = JSXOpeningElement;
-exports.jSXSpreadAttribute = exports.jsxSpreadAttribute = exports.JSXSpreadAttribute = JSXSpreadAttribute;
-exports.jSXText = exports.jsxText = exports.JSXText = JSXText;
-exports.jSXFragment = exports.jsxFragment = exports.JSXFragment = JSXFragment;
-exports.jSXOpeningFragment = exports.jsxOpeningFragment = exports.JSXOpeningFragment = JSXOpeningFragment;
-exports.jSXClosingFragment = exports.jsxClosingFragment = exports.JSXClosingFragment = JSXClosingFragment;
-exports.noop = exports.Noop = Noop;
-exports.placeholder = exports.Placeholder = Placeholder;
-exports.v8IntrinsicIdentifier = exports.V8IntrinsicIdentifier = V8IntrinsicIdentifier;
-exports.argumentPlaceholder = exports.ArgumentPlaceholder = ArgumentPlaceholder;
-exports.awaitExpression = exports.AwaitExpression = AwaitExpression;
-exports.bindExpression = exports.BindExpression = BindExpression;
-exports.classProperty = exports.ClassProperty = ClassProperty;
-exports.optionalMemberExpression = exports.OptionalMemberExpression = OptionalMemberExpression;
-exports.pipelineTopicExpression = exports.PipelineTopicExpression = PipelineTopicExpression;
-exports.pipelineBareFunction = exports.PipelineBareFunction = PipelineBareFunction;
-exports.pipelinePrimaryTopicReference = exports.PipelinePrimaryTopicReference = PipelinePrimaryTopicReference;
-exports.optionalCallExpression = exports.OptionalCallExpression = OptionalCallExpression;
-exports.classPrivateProperty = exports.ClassPrivateProperty = ClassPrivateProperty;
-exports.classPrivateMethod = exports.ClassPrivateMethod = ClassPrivateMethod;
-exports.import = exports.Import = Import;
-exports.decorator = exports.Decorator = Decorator;
-exports.doExpression = exports.DoExpression = DoExpression;
-exports.exportDefaultSpecifier = exports.ExportDefaultSpecifier = ExportDefaultSpecifier;
-exports.exportNamespaceSpecifier = exports.ExportNamespaceSpecifier = ExportNamespaceSpecifier;
-exports.privateName = exports.PrivateName = PrivateName;
-exports.bigIntLiteral = exports.BigIntLiteral = BigIntLiteral;
-exports.tSParameterProperty = exports.tsParameterProperty = exports.TSParameterProperty = TSParameterProperty;
-exports.tSDeclareFunction = exports.tsDeclareFunction = exports.TSDeclareFunction = TSDeclareFunction;
-exports.tSDeclareMethod = exports.tsDeclareMethod = exports.TSDeclareMethod = TSDeclareMethod;
-exports.tSQualifiedName = exports.tsQualifiedName = exports.TSQualifiedName = TSQualifiedName;
-exports.tSCallSignatureDeclaration = exports.tsCallSignatureDeclaration = exports.TSCallSignatureDeclaration = TSCallSignatureDeclaration;
-exports.tSConstructSignatureDeclaration = exports.tsConstructSignatureDeclaration = exports.TSConstructSignatureDeclaration = TSConstructSignatureDeclaration;
-exports.tSPropertySignature = exports.tsPropertySignature = exports.TSPropertySignature = TSPropertySignature;
-exports.tSMethodSignature = exports.tsMethodSignature = exports.TSMethodSignature = TSMethodSignature;
-exports.tSIndexSignature = exports.tsIndexSignature = exports.TSIndexSignature = TSIndexSignature;
-exports.tSAnyKeyword = exports.tsAnyKeyword = exports.TSAnyKeyword = TSAnyKeyword;
-exports.tSBooleanKeyword = exports.tsBooleanKeyword = exports.TSBooleanKeyword = TSBooleanKeyword;
-exports.tSBigIntKeyword = exports.tsBigIntKeyword = exports.TSBigIntKeyword = TSBigIntKeyword;
-exports.tSNeverKeyword = exports.tsNeverKeyword = exports.TSNeverKeyword = TSNeverKeyword;
-exports.tSNullKeyword = exports.tsNullKeyword = exports.TSNullKeyword = TSNullKeyword;
-exports.tSNumberKeyword = exports.tsNumberKeyword = exports.TSNumberKeyword = TSNumberKeyword;
-exports.tSObjectKeyword = exports.tsObjectKeyword = exports.TSObjectKeyword = TSObjectKeyword;
-exports.tSStringKeyword = exports.tsStringKeyword = exports.TSStringKeyword = TSStringKeyword;
-exports.tSSymbolKeyword = exports.tsSymbolKeyword = exports.TSSymbolKeyword = TSSymbolKeyword;
-exports.tSUndefinedKeyword = exports.tsUndefinedKeyword = exports.TSUndefinedKeyword = TSUndefinedKeyword;
-exports.tSUnknownKeyword = exports.tsUnknownKeyword = exports.TSUnknownKeyword = TSUnknownKeyword;
-exports.tSVoidKeyword = exports.tsVoidKeyword = exports.TSVoidKeyword = TSVoidKeyword;
-exports.tSThisType = exports.tsThisType = exports.TSThisType = TSThisType;
-exports.tSFunctionType = exports.tsFunctionType = exports.TSFunctionType = TSFunctionType;
-exports.tSConstructorType = exports.tsConstructorType = exports.TSConstructorType = TSConstructorType;
-exports.tSTypeReference = exports.tsTypeReference = exports.TSTypeReference = TSTypeReference;
-exports.tSTypePredicate = exports.tsTypePredicate = exports.TSTypePredicate = TSTypePredicate;
-exports.tSTypeQuery = exports.tsTypeQuery = exports.TSTypeQuery = TSTypeQuery;
-exports.tSTypeLiteral = exports.tsTypeLiteral = exports.TSTypeLiteral = TSTypeLiteral;
-exports.tSArrayType = exports.tsArrayType = exports.TSArrayType = TSArrayType;
-exports.tSTupleType = exports.tsTupleType = exports.TSTupleType = TSTupleType;
-exports.tSOptionalType = exports.tsOptionalType = exports.TSOptionalType = TSOptionalType;
-exports.tSRestType = exports.tsRestType = exports.TSRestType = TSRestType;
-exports.tSUnionType = exports.tsUnionType = exports.TSUnionType = TSUnionType;
-exports.tSIntersectionType = exports.tsIntersectionType = exports.TSIntersectionType = TSIntersectionType;
-exports.tSConditionalType = exports.tsConditionalType = exports.TSConditionalType = TSConditionalType;
-exports.tSInferType = exports.tsInferType = exports.TSInferType = TSInferType;
-exports.tSParenthesizedType = exports.tsParenthesizedType = exports.TSParenthesizedType = TSParenthesizedType;
-exports.tSTypeOperator = exports.tsTypeOperator = exports.TSTypeOperator = TSTypeOperator;
-exports.tSIndexedAccessType = exports.tsIndexedAccessType = exports.TSIndexedAccessType = TSIndexedAccessType;
-exports.tSMappedType = exports.tsMappedType = exports.TSMappedType = TSMappedType;
-exports.tSLiteralType = exports.tsLiteralType = exports.TSLiteralType = TSLiteralType;
-exports.tSExpressionWithTypeArguments = exports.tsExpressionWithTypeArguments = exports.TSExpressionWithTypeArguments = TSExpressionWithTypeArguments;
-exports.tSInterfaceDeclaration = exports.tsInterfaceDeclaration = exports.TSInterfaceDeclaration = TSInterfaceDeclaration;
-exports.tSInterfaceBody = exports.tsInterfaceBody = exports.TSInterfaceBody = TSInterfaceBody;
-exports.tSTypeAliasDeclaration = exports.tsTypeAliasDeclaration = exports.TSTypeAliasDeclaration = TSTypeAliasDeclaration;
-exports.tSAsExpression = exports.tsAsExpression = exports.TSAsExpression = TSAsExpression;
-exports.tSTypeAssertion = exports.tsTypeAssertion = exports.TSTypeAssertion = TSTypeAssertion;
-exports.tSEnumDeclaration = exports.tsEnumDeclaration = exports.TSEnumDeclaration = TSEnumDeclaration;
-exports.tSEnumMember = exports.tsEnumMember = exports.TSEnumMember = TSEnumMember;
-exports.tSModuleDeclaration = exports.tsModuleDeclaration = exports.TSModuleDeclaration = TSModuleDeclaration;
-exports.tSModuleBlock = exports.tsModuleBlock = exports.TSModuleBlock = TSModuleBlock;
-exports.tSImportType = exports.tsImportType = exports.TSImportType = TSImportType;
-exports.tSImportEqualsDeclaration = exports.tsImportEqualsDeclaration = exports.TSImportEqualsDeclaration = TSImportEqualsDeclaration;
-exports.tSExternalModuleReference = exports.tsExternalModuleReference = exports.TSExternalModuleReference = TSExternalModuleReference;
-exports.tSNonNullExpression = exports.tsNonNullExpression = exports.TSNonNullExpression = TSNonNullExpression;
-exports.tSExportAssignment = exports.tsExportAssignment = exports.TSExportAssignment = TSExportAssignment;
-exports.tSNamespaceExportDeclaration = exports.tsNamespaceExportDeclaration = exports.TSNamespaceExportDeclaration = TSNamespaceExportDeclaration;
-exports.tSTypeAnnotation = exports.tsTypeAnnotation = exports.TSTypeAnnotation = TSTypeAnnotation;
-exports.tSTypeParameterInstantiation = exports.tsTypeParameterInstantiation = exports.TSTypeParameterInstantiation = TSTypeParameterInstantiation;
-exports.tSTypeParameterDeclaration = exports.tsTypeParameterDeclaration = exports.TSTypeParameterDeclaration = TSTypeParameterDeclaration;
-exports.tSTypeParameter = exports.tsTypeParameter = exports.TSTypeParameter = TSTypeParameter;
-exports.numberLiteral = exports.NumberLiteral = NumberLiteral;
-exports.regexLiteral = exports.RegexLiteral = RegexLiteral;
-exports.restProperty = exports.RestProperty = RestProperty;
-exports.spreadProperty = exports.SpreadProperty = SpreadProperty;
-
-var _builder = _interopRequireDefault(require("../builder"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function ArrayExpression(...args) {
- return (0, _builder.default)("ArrayExpression", ...args);
-}
-
-function AssignmentExpression(...args) {
- return (0, _builder.default)("AssignmentExpression", ...args);
-}
-
-function BinaryExpression(...args) {
- return (0, _builder.default)("BinaryExpression", ...args);
-}
-
-function InterpreterDirective(...args) {
- return (0, _builder.default)("InterpreterDirective", ...args);
-}
-
-function Directive(...args) {
- return (0, _builder.default)("Directive", ...args);
-}
-
-function DirectiveLiteral(...args) {
- return (0, _builder.default)("DirectiveLiteral", ...args);
-}
-
-function BlockStatement(...args) {
- return (0, _builder.default)("BlockStatement", ...args);
-}
-
-function BreakStatement(...args) {
- return (0, _builder.default)("BreakStatement", ...args);
-}
-
-function CallExpression(...args) {
- return (0, _builder.default)("CallExpression", ...args);
-}
-
-function CatchClause(...args) {
- return (0, _builder.default)("CatchClause", ...args);
-}
-
-function ConditionalExpression(...args) {
- return (0, _builder.default)("ConditionalExpression", ...args);
-}
-
-function ContinueStatement(...args) {
- return (0, _builder.default)("ContinueStatement", ...args);
-}
-
-function DebuggerStatement(...args) {
- return (0, _builder.default)("DebuggerStatement", ...args);
-}
-
-function DoWhileStatement(...args) {
- return (0, _builder.default)("DoWhileStatement", ...args);
-}
-
-function EmptyStatement(...args) {
- return (0, _builder.default)("EmptyStatement", ...args);
-}
-
-function ExpressionStatement(...args) {
- return (0, _builder.default)("ExpressionStatement", ...args);
-}
-
-function File(...args) {
- return (0, _builder.default)("File", ...args);
-}
-
-function ForInStatement(...args) {
- return (0, _builder.default)("ForInStatement", ...args);
-}
-
-function ForStatement(...args) {
- return (0, _builder.default)("ForStatement", ...args);
-}
-
-function FunctionDeclaration(...args) {
- return (0, _builder.default)("FunctionDeclaration", ...args);
-}
-
-function FunctionExpression(...args) {
- return (0, _builder.default)("FunctionExpression", ...args);
-}
-
-function Identifier(...args) {
- return (0, _builder.default)("Identifier", ...args);
-}
-
-function IfStatement(...args) {
- return (0, _builder.default)("IfStatement", ...args);
-}
-
-function LabeledStatement(...args) {
- return (0, _builder.default)("LabeledStatement", ...args);
-}
-
-function StringLiteral(...args) {
- return (0, _builder.default)("StringLiteral", ...args);
-}
-
-function NumericLiteral(...args) {
- return (0, _builder.default)("NumericLiteral", ...args);
-}
-
-function NullLiteral(...args) {
- return (0, _builder.default)("NullLiteral", ...args);
-}
-
-function BooleanLiteral(...args) {
- return (0, _builder.default)("BooleanLiteral", ...args);
-}
-
-function RegExpLiteral(...args) {
- return (0, _builder.default)("RegExpLiteral", ...args);
-}
-
-function LogicalExpression(...args) {
- return (0, _builder.default)("LogicalExpression", ...args);
-}
-
-function MemberExpression(...args) {
- return (0, _builder.default)("MemberExpression", ...args);
-}
-
-function NewExpression(...args) {
- return (0, _builder.default)("NewExpression", ...args);
-}
-
-function Program(...args) {
- return (0, _builder.default)("Program", ...args);
-}
-
-function ObjectExpression(...args) {
- return (0, _builder.default)("ObjectExpression", ...args);
-}
-
-function ObjectMethod(...args) {
- return (0, _builder.default)("ObjectMethod", ...args);
-}
-
-function ObjectProperty(...args) {
- return (0, _builder.default)("ObjectProperty", ...args);
-}
-
-function RestElement(...args) {
- return (0, _builder.default)("RestElement", ...args);
-}
-
-function ReturnStatement(...args) {
- return (0, _builder.default)("ReturnStatement", ...args);
-}
-
-function SequenceExpression(...args) {
- return (0, _builder.default)("SequenceExpression", ...args);
-}
-
-function ParenthesizedExpression(...args) {
- return (0, _builder.default)("ParenthesizedExpression", ...args);
-}
-
-function SwitchCase(...args) {
- return (0, _builder.default)("SwitchCase", ...args);
-}
-
-function SwitchStatement(...args) {
- return (0, _builder.default)("SwitchStatement", ...args);
-}
-
-function ThisExpression(...args) {
- return (0, _builder.default)("ThisExpression", ...args);
-}
-
-function ThrowStatement(...args) {
- return (0, _builder.default)("ThrowStatement", ...args);
-}
-
-function TryStatement(...args) {
- return (0, _builder.default)("TryStatement", ...args);
-}
-
-function UnaryExpression(...args) {
- return (0, _builder.default)("UnaryExpression", ...args);
-}
-
-function UpdateExpression(...args) {
- return (0, _builder.default)("UpdateExpression", ...args);
-}
-
-function VariableDeclaration(...args) {
- return (0, _builder.default)("VariableDeclaration", ...args);
-}
-
-function VariableDeclarator(...args) {
- return (0, _builder.default)("VariableDeclarator", ...args);
-}
-
-function WhileStatement(...args) {
- return (0, _builder.default)("WhileStatement", ...args);
-}
-
-function WithStatement(...args) {
- return (0, _builder.default)("WithStatement", ...args);
-}
-
-function AssignmentPattern(...args) {
- return (0, _builder.default)("AssignmentPattern", ...args);
-}
-
-function ArrayPattern(...args) {
- return (0, _builder.default)("ArrayPattern", ...args);
-}
-
-function ArrowFunctionExpression(...args) {
- return (0, _builder.default)("ArrowFunctionExpression", ...args);
-}
-
-function ClassBody(...args) {
- return (0, _builder.default)("ClassBody", ...args);
-}
-
-function ClassExpression(...args) {
- return (0, _builder.default)("ClassExpression", ...args);
-}
-
-function ClassDeclaration(...args) {
- return (0, _builder.default)("ClassDeclaration", ...args);
-}
-
-function ExportAllDeclaration(...args) {
- return (0, _builder.default)("ExportAllDeclaration", ...args);
-}
-
-function ExportDefaultDeclaration(...args) {
- return (0, _builder.default)("ExportDefaultDeclaration", ...args);
-}
-
-function ExportNamedDeclaration(...args) {
- return (0, _builder.default)("ExportNamedDeclaration", ...args);
-}
-
-function ExportSpecifier(...args) {
- return (0, _builder.default)("ExportSpecifier", ...args);
-}
-
-function ForOfStatement(...args) {
- return (0, _builder.default)("ForOfStatement", ...args);
-}
-
-function ImportDeclaration(...args) {
- return (0, _builder.default)("ImportDeclaration", ...args);
-}
-
-function ImportDefaultSpecifier(...args) {
- return (0, _builder.default)("ImportDefaultSpecifier", ...args);
-}
-
-function ImportNamespaceSpecifier(...args) {
- return (0, _builder.default)("ImportNamespaceSpecifier", ...args);
-}
-
-function ImportSpecifier(...args) {
- return (0, _builder.default)("ImportSpecifier", ...args);
-}
-
-function MetaProperty(...args) {
- return (0, _builder.default)("MetaProperty", ...args);
-}
-
-function ClassMethod(...args) {
- return (0, _builder.default)("ClassMethod", ...args);
-}
-
-function ObjectPattern(...args) {
- return (0, _builder.default)("ObjectPattern", ...args);
-}
-
-function SpreadElement(...args) {
- return (0, _builder.default)("SpreadElement", ...args);
-}
-
-function Super(...args) {
- return (0, _builder.default)("Super", ...args);
-}
-
-function TaggedTemplateExpression(...args) {
- return (0, _builder.default)("TaggedTemplateExpression", ...args);
-}
-
-function TemplateElement(...args) {
- return (0, _builder.default)("TemplateElement", ...args);
-}
-
-function TemplateLiteral(...args) {
- return (0, _builder.default)("TemplateLiteral", ...args);
-}
-
-function YieldExpression(...args) {
- return (0, _builder.default)("YieldExpression", ...args);
-}
-
-function AnyTypeAnnotation(...args) {
- return (0, _builder.default)("AnyTypeAnnotation", ...args);
-}
-
-function ArrayTypeAnnotation(...args) {
- return (0, _builder.default)("ArrayTypeAnnotation", ...args);
-}
-
-function BooleanTypeAnnotation(...args) {
- return (0, _builder.default)("BooleanTypeAnnotation", ...args);
-}
-
-function BooleanLiteralTypeAnnotation(...args) {
- return (0, _builder.default)("BooleanLiteralTypeAnnotation", ...args);
-}
-
-function NullLiteralTypeAnnotation(...args) {
- return (0, _builder.default)("NullLiteralTypeAnnotation", ...args);
-}
-
-function ClassImplements(...args) {
- return (0, _builder.default)("ClassImplements", ...args);
-}
-
-function DeclareClass(...args) {
- return (0, _builder.default)("DeclareClass", ...args);
-}
-
-function DeclareFunction(...args) {
- return (0, _builder.default)("DeclareFunction", ...args);
-}
-
-function DeclareInterface(...args) {
- return (0, _builder.default)("DeclareInterface", ...args);
-}
-
-function DeclareModule(...args) {
- return (0, _builder.default)("DeclareModule", ...args);
-}
-
-function DeclareModuleExports(...args) {
- return (0, _builder.default)("DeclareModuleExports", ...args);
-}
-
-function DeclareTypeAlias(...args) {
- return (0, _builder.default)("DeclareTypeAlias", ...args);
-}
-
-function DeclareOpaqueType(...args) {
- return (0, _builder.default)("DeclareOpaqueType", ...args);
-}
-
-function DeclareVariable(...args) {
- return (0, _builder.default)("DeclareVariable", ...args);
-}
-
-function DeclareExportDeclaration(...args) {
- return (0, _builder.default)("DeclareExportDeclaration", ...args);
-}
-
-function DeclareExportAllDeclaration(...args) {
- return (0, _builder.default)("DeclareExportAllDeclaration", ...args);
-}
-
-function DeclaredPredicate(...args) {
- return (0, _builder.default)("DeclaredPredicate", ...args);
-}
-
-function ExistsTypeAnnotation(...args) {
- return (0, _builder.default)("ExistsTypeAnnotation", ...args);
-}
-
-function FunctionTypeAnnotation(...args) {
- return (0, _builder.default)("FunctionTypeAnnotation", ...args);
-}
-
-function FunctionTypeParam(...args) {
- return (0, _builder.default)("FunctionTypeParam", ...args);
-}
-
-function GenericTypeAnnotation(...args) {
- return (0, _builder.default)("GenericTypeAnnotation", ...args);
-}
-
-function InferredPredicate(...args) {
- return (0, _builder.default)("InferredPredicate", ...args);
-}
-
-function InterfaceExtends(...args) {
- return (0, _builder.default)("InterfaceExtends", ...args);
-}
-
-function InterfaceDeclaration(...args) {
- return (0, _builder.default)("InterfaceDeclaration", ...args);
-}
-
-function InterfaceTypeAnnotation(...args) {
- return (0, _builder.default)("InterfaceTypeAnnotation", ...args);
-}
-
-function IntersectionTypeAnnotation(...args) {
- return (0, _builder.default)("IntersectionTypeAnnotation", ...args);
-}
-
-function MixedTypeAnnotation(...args) {
- return (0, _builder.default)("MixedTypeAnnotation", ...args);
-}
-
-function EmptyTypeAnnotation(...args) {
- return (0, _builder.default)("EmptyTypeAnnotation", ...args);
-}
-
-function NullableTypeAnnotation(...args) {
- return (0, _builder.default)("NullableTypeAnnotation", ...args);
-}
-
-function NumberLiteralTypeAnnotation(...args) {
- return (0, _builder.default)("NumberLiteralTypeAnnotation", ...args);
-}
-
-function NumberTypeAnnotation(...args) {
- return (0, _builder.default)("NumberTypeAnnotation", ...args);
-}
-
-function ObjectTypeAnnotation(...args) {
- return (0, _builder.default)("ObjectTypeAnnotation", ...args);
-}
-
-function ObjectTypeInternalSlot(...args) {
- return (0, _builder.default)("ObjectTypeInternalSlot", ...args);
-}
-
-function ObjectTypeCallProperty(...args) {
- return (0, _builder.default)("ObjectTypeCallProperty", ...args);
-}
-
-function ObjectTypeIndexer(...args) {
- return (0, _builder.default)("ObjectTypeIndexer", ...args);
-}
-
-function ObjectTypeProperty(...args) {
- return (0, _builder.default)("ObjectTypeProperty", ...args);
-}
-
-function ObjectTypeSpreadProperty(...args) {
- return (0, _builder.default)("ObjectTypeSpreadProperty", ...args);
-}
-
-function OpaqueType(...args) {
- return (0, _builder.default)("OpaqueType", ...args);
-}
-
-function QualifiedTypeIdentifier(...args) {
- return (0, _builder.default)("QualifiedTypeIdentifier", ...args);
-}
-
-function StringLiteralTypeAnnotation(...args) {
- return (0, _builder.default)("StringLiteralTypeAnnotation", ...args);
-}
-
-function StringTypeAnnotation(...args) {
- return (0, _builder.default)("StringTypeAnnotation", ...args);
-}
-
-function ThisTypeAnnotation(...args) {
- return (0, _builder.default)("ThisTypeAnnotation", ...args);
-}
-
-function TupleTypeAnnotation(...args) {
- return (0, _builder.default)("TupleTypeAnnotation", ...args);
-}
-
-function TypeofTypeAnnotation(...args) {
- return (0, _builder.default)("TypeofTypeAnnotation", ...args);
-}
-
-function TypeAlias(...args) {
- return (0, _builder.default)("TypeAlias", ...args);
-}
-
-function TypeAnnotation(...args) {
- return (0, _builder.default)("TypeAnnotation", ...args);
-}
-
-function TypeCastExpression(...args) {
- return (0, _builder.default)("TypeCastExpression", ...args);
-}
-
-function TypeParameter(...args) {
- return (0, _builder.default)("TypeParameter", ...args);
-}
-
-function TypeParameterDeclaration(...args) {
- return (0, _builder.default)("TypeParameterDeclaration", ...args);
-}
-
-function TypeParameterInstantiation(...args) {
- return (0, _builder.default)("TypeParameterInstantiation", ...args);
-}
-
-function UnionTypeAnnotation(...args) {
- return (0, _builder.default)("UnionTypeAnnotation", ...args);
-}
-
-function Variance(...args) {
- return (0, _builder.default)("Variance", ...args);
-}
-
-function VoidTypeAnnotation(...args) {
- return (0, _builder.default)("VoidTypeAnnotation", ...args);
-}
-
-function EnumDeclaration(...args) {
- return (0, _builder.default)("EnumDeclaration", ...args);
-}
-
-function EnumBooleanBody(...args) {
- return (0, _builder.default)("EnumBooleanBody", ...args);
-}
-
-function EnumNumberBody(...args) {
- return (0, _builder.default)("EnumNumberBody", ...args);
-}
-
-function EnumStringBody(...args) {
- return (0, _builder.default)("EnumStringBody", ...args);
-}
-
-function EnumSymbolBody(...args) {
- return (0, _builder.default)("EnumSymbolBody", ...args);
-}
-
-function EnumBooleanMember(...args) {
- return (0, _builder.default)("EnumBooleanMember", ...args);
-}
-
-function EnumNumberMember(...args) {
- return (0, _builder.default)("EnumNumberMember", ...args);
-}
-
-function EnumStringMember(...args) {
- return (0, _builder.default)("EnumStringMember", ...args);
-}
-
-function EnumDefaultedMember(...args) {
- return (0, _builder.default)("EnumDefaultedMember", ...args);
-}
-
-function JSXAttribute(...args) {
- return (0, _builder.default)("JSXAttribute", ...args);
-}
-
-function JSXClosingElement(...args) {
- return (0, _builder.default)("JSXClosingElement", ...args);
-}
-
-function JSXElement(...args) {
- return (0, _builder.default)("JSXElement", ...args);
-}
-
-function JSXEmptyExpression(...args) {
- return (0, _builder.default)("JSXEmptyExpression", ...args);
-}
-
-function JSXExpressionContainer(...args) {
- return (0, _builder.default)("JSXExpressionContainer", ...args);
-}
-
-function JSXSpreadChild(...args) {
- return (0, _builder.default)("JSXSpreadChild", ...args);
-}
-
-function JSXIdentifier(...args) {
- return (0, _builder.default)("JSXIdentifier", ...args);
-}
-
-function JSXMemberExpression(...args) {
- return (0, _builder.default)("JSXMemberExpression", ...args);
-}
-
-function JSXNamespacedName(...args) {
- return (0, _builder.default)("JSXNamespacedName", ...args);
-}
-
-function JSXOpeningElement(...args) {
- return (0, _builder.default)("JSXOpeningElement", ...args);
-}
-
-function JSXSpreadAttribute(...args) {
- return (0, _builder.default)("JSXSpreadAttribute", ...args);
-}
-
-function JSXText(...args) {
- return (0, _builder.default)("JSXText", ...args);
-}
-
-function JSXFragment(...args) {
- return (0, _builder.default)("JSXFragment", ...args);
-}
-
-function JSXOpeningFragment(...args) {
- return (0, _builder.default)("JSXOpeningFragment", ...args);
-}
-
-function JSXClosingFragment(...args) {
- return (0, _builder.default)("JSXClosingFragment", ...args);
-}
-
-function Noop(...args) {
- return (0, _builder.default)("Noop", ...args);
-}
-
-function Placeholder(...args) {
- return (0, _builder.default)("Placeholder", ...args);
-}
-
-function V8IntrinsicIdentifier(...args) {
- return (0, _builder.default)("V8IntrinsicIdentifier", ...args);
-}
-
-function ArgumentPlaceholder(...args) {
- return (0, _builder.default)("ArgumentPlaceholder", ...args);
-}
-
-function AwaitExpression(...args) {
- return (0, _builder.default)("AwaitExpression", ...args);
-}
-
-function BindExpression(...args) {
- return (0, _builder.default)("BindExpression", ...args);
-}
-
-function ClassProperty(...args) {
- return (0, _builder.default)("ClassProperty", ...args);
-}
-
-function OptionalMemberExpression(...args) {
- return (0, _builder.default)("OptionalMemberExpression", ...args);
-}
-
-function PipelineTopicExpression(...args) {
- return (0, _builder.default)("PipelineTopicExpression", ...args);
-}
-
-function PipelineBareFunction(...args) {
- return (0, _builder.default)("PipelineBareFunction", ...args);
-}
-
-function PipelinePrimaryTopicReference(...args) {
- return (0, _builder.default)("PipelinePrimaryTopicReference", ...args);
-}
-
-function OptionalCallExpression(...args) {
- return (0, _builder.default)("OptionalCallExpression", ...args);
-}
-
-function ClassPrivateProperty(...args) {
- return (0, _builder.default)("ClassPrivateProperty", ...args);
-}
-
-function ClassPrivateMethod(...args) {
- return (0, _builder.default)("ClassPrivateMethod", ...args);
-}
-
-function Import(...args) {
- return (0, _builder.default)("Import", ...args);
-}
-
-function Decorator(...args) {
- return (0, _builder.default)("Decorator", ...args);
-}
-
-function DoExpression(...args) {
- return (0, _builder.default)("DoExpression", ...args);
-}
-
-function ExportDefaultSpecifier(...args) {
- return (0, _builder.default)("ExportDefaultSpecifier", ...args);
-}
-
-function ExportNamespaceSpecifier(...args) {
- return (0, _builder.default)("ExportNamespaceSpecifier", ...args);
-}
-
-function PrivateName(...args) {
- return (0, _builder.default)("PrivateName", ...args);
-}
-
-function BigIntLiteral(...args) {
- return (0, _builder.default)("BigIntLiteral", ...args);
-}
-
-function TSParameterProperty(...args) {
- return (0, _builder.default)("TSParameterProperty", ...args);
-}
-
-function TSDeclareFunction(...args) {
- return (0, _builder.default)("TSDeclareFunction", ...args);
-}
-
-function TSDeclareMethod(...args) {
- return (0, _builder.default)("TSDeclareMethod", ...args);
-}
-
-function TSQualifiedName(...args) {
- return (0, _builder.default)("TSQualifiedName", ...args);
-}
-
-function TSCallSignatureDeclaration(...args) {
- return (0, _builder.default)("TSCallSignatureDeclaration", ...args);
-}
-
-function TSConstructSignatureDeclaration(...args) {
- return (0, _builder.default)("TSConstructSignatureDeclaration", ...args);
-}
-
-function TSPropertySignature(...args) {
- return (0, _builder.default)("TSPropertySignature", ...args);
-}
-
-function TSMethodSignature(...args) {
- return (0, _builder.default)("TSMethodSignature", ...args);
-}
-
-function TSIndexSignature(...args) {
- return (0, _builder.default)("TSIndexSignature", ...args);
-}
-
-function TSAnyKeyword(...args) {
- return (0, _builder.default)("TSAnyKeyword", ...args);
-}
-
-function TSBooleanKeyword(...args) {
- return (0, _builder.default)("TSBooleanKeyword", ...args);
-}
-
-function TSBigIntKeyword(...args) {
- return (0, _builder.default)("TSBigIntKeyword", ...args);
-}
-
-function TSNeverKeyword(...args) {
- return (0, _builder.default)("TSNeverKeyword", ...args);
-}
-
-function TSNullKeyword(...args) {
- return (0, _builder.default)("TSNullKeyword", ...args);
-}
-
-function TSNumberKeyword(...args) {
- return (0, _builder.default)("TSNumberKeyword", ...args);
-}
-
-function TSObjectKeyword(...args) {
- return (0, _builder.default)("TSObjectKeyword", ...args);
-}
-
-function TSStringKeyword(...args) {
- return (0, _builder.default)("TSStringKeyword", ...args);
-}
-
-function TSSymbolKeyword(...args) {
- return (0, _builder.default)("TSSymbolKeyword", ...args);
-}
-
-function TSUndefinedKeyword(...args) {
- return (0, _builder.default)("TSUndefinedKeyword", ...args);
-}
-
-function TSUnknownKeyword(...args) {
- return (0, _builder.default)("TSUnknownKeyword", ...args);
-}
-
-function TSVoidKeyword(...args) {
- return (0, _builder.default)("TSVoidKeyword", ...args);
-}
-
-function TSThisType(...args) {
- return (0, _builder.default)("TSThisType", ...args);
-}
-
-function TSFunctionType(...args) {
- return (0, _builder.default)("TSFunctionType", ...args);
-}
-
-function TSConstructorType(...args) {
- return (0, _builder.default)("TSConstructorType", ...args);
-}
-
-function TSTypeReference(...args) {
- return (0, _builder.default)("TSTypeReference", ...args);
-}
-
-function TSTypePredicate(...args) {
- return (0, _builder.default)("TSTypePredicate", ...args);
-}
-
-function TSTypeQuery(...args) {
- return (0, _builder.default)("TSTypeQuery", ...args);
-}
-
-function TSTypeLiteral(...args) {
- return (0, _builder.default)("TSTypeLiteral", ...args);
-}
-
-function TSArrayType(...args) {
- return (0, _builder.default)("TSArrayType", ...args);
-}
-
-function TSTupleType(...args) {
- return (0, _builder.default)("TSTupleType", ...args);
-}
-
-function TSOptionalType(...args) {
- return (0, _builder.default)("TSOptionalType", ...args);
-}
-
-function TSRestType(...args) {
- return (0, _builder.default)("TSRestType", ...args);
-}
-
-function TSUnionType(...args) {
- return (0, _builder.default)("TSUnionType", ...args);
-}
-
-function TSIntersectionType(...args) {
- return (0, _builder.default)("TSIntersectionType", ...args);
-}
-
-function TSConditionalType(...args) {
- return (0, _builder.default)("TSConditionalType", ...args);
-}
-
-function TSInferType(...args) {
- return (0, _builder.default)("TSInferType", ...args);
-}
-
-function TSParenthesizedType(...args) {
- return (0, _builder.default)("TSParenthesizedType", ...args);
-}
-
-function TSTypeOperator(...args) {
- return (0, _builder.default)("TSTypeOperator", ...args);
-}
-
-function TSIndexedAccessType(...args) {
- return (0, _builder.default)("TSIndexedAccessType", ...args);
-}
-
-function TSMappedType(...args) {
- return (0, _builder.default)("TSMappedType", ...args);
-}
-
-function TSLiteralType(...args) {
- return (0, _builder.default)("TSLiteralType", ...args);
-}
-
-function TSExpressionWithTypeArguments(...args) {
- return (0, _builder.default)("TSExpressionWithTypeArguments", ...args);
-}
-
-function TSInterfaceDeclaration(...args) {
- return (0, _builder.default)("TSInterfaceDeclaration", ...args);
-}
-
-function TSInterfaceBody(...args) {
- return (0, _builder.default)("TSInterfaceBody", ...args);
-}
-
-function TSTypeAliasDeclaration(...args) {
- return (0, _builder.default)("TSTypeAliasDeclaration", ...args);
-}
-
-function TSAsExpression(...args) {
- return (0, _builder.default)("TSAsExpression", ...args);
-}
-
-function TSTypeAssertion(...args) {
- return (0, _builder.default)("TSTypeAssertion", ...args);
-}
-
-function TSEnumDeclaration(...args) {
- return (0, _builder.default)("TSEnumDeclaration", ...args);
-}
-
-function TSEnumMember(...args) {
- return (0, _builder.default)("TSEnumMember", ...args);
-}
-
-function TSModuleDeclaration(...args) {
- return (0, _builder.default)("TSModuleDeclaration", ...args);
-}
-
-function TSModuleBlock(...args) {
- return (0, _builder.default)("TSModuleBlock", ...args);
-}
-
-function TSImportType(...args) {
- return (0, _builder.default)("TSImportType", ...args);
-}
-
-function TSImportEqualsDeclaration(...args) {
- return (0, _builder.default)("TSImportEqualsDeclaration", ...args);
-}
-
-function TSExternalModuleReference(...args) {
- return (0, _builder.default)("TSExternalModuleReference", ...args);
-}
-
-function TSNonNullExpression(...args) {
- return (0, _builder.default)("TSNonNullExpression", ...args);
-}
-
-function TSExportAssignment(...args) {
- return (0, _builder.default)("TSExportAssignment", ...args);
-}
-
-function TSNamespaceExportDeclaration(...args) {
- return (0, _builder.default)("TSNamespaceExportDeclaration", ...args);
-}
-
-function TSTypeAnnotation(...args) {
- return (0, _builder.default)("TSTypeAnnotation", ...args);
-}
-
-function TSTypeParameterInstantiation(...args) {
- return (0, _builder.default)("TSTypeParameterInstantiation", ...args);
-}
-
-function TSTypeParameterDeclaration(...args) {
- return (0, _builder.default)("TSTypeParameterDeclaration", ...args);
-}
-
-function TSTypeParameter(...args) {
- return (0, _builder.default)("TSTypeParameter", ...args);
-}
-
-function NumberLiteral(...args) {
- console.trace("The node type NumberLiteral has been renamed to NumericLiteral");
- return NumberLiteral("NumberLiteral", ...args);
-}
-
-function RegexLiteral(...args) {
- console.trace("The node type RegexLiteral has been renamed to RegExpLiteral");
- return RegexLiteral("RegexLiteral", ...args);
-}
-
-function RestProperty(...args) {
- console.trace("The node type RestProperty has been renamed to RestElement");
- return RestProperty("RestProperty", ...args);
-}
-
-function SpreadProperty(...args) {
- console.trace("The node type SpreadProperty has been renamed to SpreadElement");
- return SpreadProperty("SpreadProperty", ...args);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/builders/react/buildChildren.js b/assets/node_modules/@babel/types/lib/builders/react/buildChildren.js
deleted file mode 100644
index 91e7cbd..0000000
--- a/assets/node_modules/@babel/types/lib/builders/react/buildChildren.js
+++ /dev/null
@@ -1,31 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = buildChildren;
-
-var _generated = require("../../validators/generated");
-
-var _cleanJSXElementLiteralChild = _interopRequireDefault(require("../../utils/react/cleanJSXElementLiteralChild"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/types/lib/clone/clone.js b/assets/node_modules/@babel/types/lib/clone/clone.js
deleted file mode 100644
index 9595f6e..0000000
--- a/assets/node_modules/@babel/types/lib/clone/clone.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = clone;
-
-var _cloneNode = _interopRequireDefault(require("./cloneNode"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function clone(node) {
- return (0, _cloneNode.default)(node, false);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/clone/cloneDeep.js b/assets/node_modules/@babel/types/lib/clone/cloneDeep.js
deleted file mode 100644
index eb29c53..0000000
--- a/assets/node_modules/@babel/types/lib/clone/cloneDeep.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = cloneDeep;
-
-var _cloneNode = _interopRequireDefault(require("./cloneNode"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function cloneDeep(node) {
- return (0, _cloneNode.default)(node);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/clone/cloneNode.js b/assets/node_modules/@babel/types/lib/clone/cloneNode.js
deleted file mode 100644
index ce9cb8c..0000000
--- a/assets/node_modules/@babel/types/lib/clone/cloneNode.js
+++ /dev/null
@@ -1,78 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = cloneNode;
-
-var _definitions = require("../definitions");
-
-const has = Function.call.bind(Object.prototype.hasOwnProperty);
-
-function cloneIfNode(obj, deep) {
- if (obj && typeof obj.type === "string" && obj.type !== "CommentLine" && obj.type !== "CommentBlock") {
- return cloneNode(obj, deep);
- }
-
- return obj;
-}
-
-function cloneIfNodeOrArray(obj, deep) {
- if (Array.isArray(obj)) {
- return obj.map(node => cloneIfNode(node, deep));
- }
-
- return cloneIfNode(obj, deep);
-}
-
-function cloneNode(node, deep = true) {
- if (!node) return node;
- const {
- type
- } = node;
- const newNode = {
- type
- };
-
- if (type === "Identifier") {
- 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) : 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)) {
- newNode[field] = deep ? cloneIfNodeOrArray(node[field], true) : node[field];
- }
- }
- }
-
- if (has(node, "loc")) {
- newNode.loc = node.loc;
- }
-
- if (has(node, "leadingComments")) {
- newNode.leadingComments = node.leadingComments;
- }
-
- if (has(node, "innerComments")) {
- newNode.innerComments = node.innerComments;
- }
-
- if (has(node, "trailingComments")) {
- newNode.trailingComments = node.trailingComments;
- }
-
- if (has(node, "extra")) {
- newNode.extra = Object.assign({}, node.extra);
- }
-
- return newNode;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js b/assets/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js
deleted file mode 100644
index 5622af7..0000000
--- a/assets/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = cloneWithoutLoc;
-
-var _clone = _interopRequireDefault(require("./clone"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function cloneWithoutLoc(node) {
- const newNode = (0, _clone.default)(node);
- newNode.loc = null;
- return newNode;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/comments/addComment.js b/assets/node_modules/@babel/types/lib/comments/addComment.js
deleted file mode 100644
index ff58651..0000000
--- a/assets/node_modules/@babel/types/lib/comments/addComment.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = addComment;
-
-var _addComments = _interopRequireDefault(require("./addComments"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/types/lib/comments/addComments.js b/assets/node_modules/@babel/types/lib/comments/addComments.js
deleted file mode 100644
index f3a61df..0000000
--- a/assets/node_modules/@babel/types/lib/comments/addComments.js
+++ /dev/null
@@ -1,23 +0,0 @@
-"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] = node[key].concat(comments);
- }
- } else {
- node[key] = comments;
- }
-
- return node;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/comments/inheritInnerComments.js b/assets/node_modules/@babel/types/lib/comments/inheritInnerComments.js
deleted file mode 100644
index fbe59de..0000000
--- a/assets/node_modules/@babel/types/lib/comments/inheritInnerComments.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = inheritInnerComments;
-
-var _inherit = _interopRequireDefault(require("../utils/inherit"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function inheritInnerComments(child, parent) {
- (0, _inherit.default)("innerComments", child, parent);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/comments/inheritLeadingComments.js b/assets/node_modules/@babel/types/lib/comments/inheritLeadingComments.js
deleted file mode 100644
index ccb02ec..0000000
--- a/assets/node_modules/@babel/types/lib/comments/inheritLeadingComments.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = inheritLeadingComments;
-
-var _inherit = _interopRequireDefault(require("../utils/inherit"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function inheritLeadingComments(child, parent) {
- (0, _inherit.default)("leadingComments", child, parent);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/comments/inheritTrailingComments.js b/assets/node_modules/@babel/types/lib/comments/inheritTrailingComments.js
deleted file mode 100644
index bce1e2d..0000000
--- a/assets/node_modules/@babel/types/lib/comments/inheritTrailingComments.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = inheritTrailingComments;
-
-var _inherit = _interopRequireDefault(require("../utils/inherit"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function inheritTrailingComments(child, parent) {
- (0, _inherit.default)("trailingComments", child, parent);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/comments/inheritsComments.js b/assets/node_modules/@babel/types/lib/comments/inheritsComments.js
deleted file mode 100644
index fd942d8..0000000
--- a/assets/node_modules/@babel/types/lib/comments/inheritsComments.js
+++ /dev/null
@@ -1,21 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = inheritsComments;
-
-var _inheritTrailingComments = _interopRequireDefault(require("./inheritTrailingComments"));
-
-var _inheritLeadingComments = _interopRequireDefault(require("./inheritLeadingComments"));
-
-var _inheritInnerComments = _interopRequireDefault(require("./inheritInnerComments"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/types/lib/comments/removeComments.js b/assets/node_modules/@babel/types/lib/comments/removeComments.js
deleted file mode 100644
index fe34f1a..0000000
--- a/assets/node_modules/@babel/types/lib/comments/removeComments.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/constants/generated/index.js b/assets/node_modules/@babel/types/lib/constants/generated/index.js
deleted file mode 100644
index a8b6e78..0000000
--- a/assets/node_modules/@babel/types/lib/constants/generated/index.js
+++ /dev/null
@@ -1,97 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.TSTYPE_TYPES = exports.TSTYPEELEMENT_TYPES = exports.PRIVATE_TYPES = exports.JSX_TYPES = exports.ENUMMEMBER_TYPES = exports.ENUMBODY_TYPES = exports.FLOWPREDICATE_TYPES = exports.FLOWDECLARATION_TYPES = exports.FLOWBASEANNOTATION_TYPES = exports.FLOWTYPE_TYPES = exports.FLOW_TYPES = exports.MODULESPECIFIER_TYPES = exports.EXPORTDECLARATION_TYPES = exports.MODULEDECLARATION_TYPES = exports.CLASS_TYPES = exports.PATTERN_TYPES = exports.UNARYLIKE_TYPES = exports.PROPERTY_TYPES = exports.OBJECTMEMBER_TYPES = exports.METHOD_TYPES = exports.USERWHITESPACABLE_TYPES = exports.IMMUTABLE_TYPES = exports.LITERAL_TYPES = exports.TSENTITYNAME_TYPES = exports.LVAL_TYPES = exports.PATTERNLIKE_TYPES = exports.DECLARATION_TYPES = exports.PUREISH_TYPES = exports.FUNCTIONPARENT_TYPES = exports.FUNCTION_TYPES = exports.FORXSTATEMENT_TYPES = exports.FOR_TYPES = exports.EXPRESSIONWRAPPER_TYPES = exports.WHILE_TYPES = exports.LOOP_TYPES = exports.CONDITIONAL_TYPES = exports.COMPLETIONSTATEMENT_TYPES = exports.TERMINATORLESS_TYPES = exports.STATEMENT_TYPES = exports.BLOCK_TYPES = exports.BLOCKPARENT_TYPES = exports.SCOPABLE_TYPES = exports.BINARY_TYPES = exports.EXPRESSION_TYPES = void 0;
-
-var _definitions = require("../../definitions");
-
-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 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 PRIVATE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Private"];
-exports.PRIVATE_TYPES = PRIVATE_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; \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/constants/index.js b/assets/node_modules/@babel/types/lib/constants/index.js
deleted file mode 100644
index c7b0d79..0000000
--- a/assets/node_modules/@babel/types/lib/constants/index.js
+++ /dev/null
@@ -1,49 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.NOT_LOCAL_BINDING = exports.BLOCK_SCOPED_SYMBOL = exports.INHERIT_KEYS = exports.UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = exports.NUMBER_UNARY_OPERATORS = exports.BOOLEAN_UNARY_OPERATORS = exports.ASSIGNMENT_OPERATORS = exports.BINARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = exports.EQUALITY_BINARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = exports.UPDATE_OPERATORS = exports.LOGICAL_OPERATORS = exports.COMMENT_KEYS = exports.FOR_INIT_KEYS = exports.FLATTENABLE_KEYS = exports.STATEMENT_OR_BLOCK_KEYS = 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 + "=")];
-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/assets/node_modules/@babel/types/lib/converters/ensureBlock.js b/assets/node_modules/@babel/types/lib/converters/ensureBlock.js
deleted file mode 100644
index 2836b36..0000000
--- a/assets/node_modules/@babel/types/lib/converters/ensureBlock.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = ensureBlock;
-
-var _toBlock = _interopRequireDefault(require("./toBlock"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function ensureBlock(node, key = "body") {
- return node[key] = (0, _toBlock.default)(node[key], node);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js b/assets/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js
deleted file mode 100644
index fadd0f0..0000000
--- a/assets/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js
+++ /dev/null
@@ -1,73 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = gatherSequenceExpressions;
-
-var _getBindingIdentifiers = _interopRequireDefault(require("../retrievers/getBindingIdentifiers"));
-
-var _generated = require("../validators/generated");
-
-var _generated2 = require("../builders/generated");
-
-var _cloneNode = _interopRequireDefault(require("../clone/cloneNode"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function gatherSequenceExpressions(nodes, scope, declars) {
- const exprs = [];
- let ensureLastUndefined = true;
-
- for (const node of nodes) {
- 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)) {
- 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/assets/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js b/assets/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js
deleted file mode 100644
index b9d165b..0000000
--- a/assets/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = toBindingIdentifierName;
-
-var _toIdentifier = _interopRequireDefault(require("./toIdentifier"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/types/lib/converters/toBlock.js b/assets/node_modules/@babel/types/lib/converters/toBlock.js
deleted file mode 100644
index 1988683..0000000
--- a/assets/node_modules/@babel/types/lib/converters/toBlock.js
+++ /dev/null
@@ -1,34 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/converters/toComputedKey.js b/assets/node_modules/@babel/types/lib/converters/toComputedKey.js
deleted file mode 100644
index 31e6770..0000000
--- a/assets/node_modules/@babel/types/lib/converters/toComputedKey.js
+++ /dev/null
@@ -1,15 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/converters/toExpression.js b/assets/node_modules/@babel/types/lib/converters/toExpression.js
deleted file mode 100644
index 6e58b0d..0000000
--- a/assets/node_modules/@babel/types/lib/converters/toExpression.js
+++ /dev/null
@@ -1,30 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = toExpression;
-
-var _generated = require("../validators/generated");
-
-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/assets/node_modules/@babel/types/lib/converters/toIdentifier.js b/assets/node_modules/@babel/types/lib/converters/toIdentifier.js
deleted file mode 100644
index e55db41..0000000
--- a/assets/node_modules/@babel/types/lib/converters/toIdentifier.js
+++ /dev/null
@@ -1,25 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = toIdentifier;
-
-var _isValidIdentifier = _interopRequireDefault(require("../validators/isValidIdentifier"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function toIdentifier(name) {
- name = name + "";
- name = name.replace(/[^a-zA-Z0-9$_]/g, "-");
- 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/assets/node_modules/@babel/types/lib/converters/toKeyAlias.js b/assets/node_modules/@babel/types/lib/converters/toKeyAlias.js
deleted file mode 100644
index c48fd0e..0000000
--- a/assets/node_modules/@babel/types/lib/converters/toKeyAlias.js
+++ /dev/null
@@ -1,48 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = toKeyAlias;
-
-var _generated = require("../validators/generated");
-
-var _cloneNode = _interopRequireDefault(require("../clone/cloneNode"));
-
-var _removePropertiesDeep = _interopRequireDefault(require("../modifications/removePropertiesDeep"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/types/lib/converters/toSequenceExpression.js b/assets/node_modules/@babel/types/lib/converters/toSequenceExpression.js
deleted file mode 100644
index 2e221db..0000000
--- a/assets/node_modules/@babel/types/lib/converters/toSequenceExpression.js
+++ /dev/null
@@ -1,23 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = toSequenceExpression;
-
-var _gatherSequenceExpressions = _interopRequireDefault(require("./gatherSequenceExpressions"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function toSequenceExpression(nodes, scope) {
- if (!nodes || !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/assets/node_modules/@babel/types/lib/converters/toStatement.js b/assets/node_modules/@babel/types/lib/converters/toStatement.js
deleted file mode 100644
index 69b22ae..0000000
--- a/assets/node_modules/@babel/types/lib/converters/toStatement.js
+++ /dev/null
@@ -1,44 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = toStatement;
-
-var _generated = require("../validators/generated");
-
-var _generated2 = require("../builders/generated");
-
-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/assets/node_modules/@babel/types/lib/converters/valueToNode.js b/assets/node_modules/@babel/types/lib/converters/valueToNode.js
deleted file mode 100644
index d1118e1..0000000
--- a/assets/node_modules/@babel/types/lib/converters/valueToNode.js
+++ /dev/null
@@ -1,88 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = valueToNode;
-
-var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject"));
-
-var _isRegExp = _interopRequireDefault(require("lodash/isRegExp"));
-
-var _isValidIdentifier = _interopRequireDefault(require("../validators/isValidIdentifier"));
-
-var _generated = require("../builders/generated");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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 ((0, _isRegExp.default)(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 ((0, _isPlainObject.default)(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/assets/node_modules/@babel/types/lib/definitions/core.js b/assets/node_modules/@babel/types/lib/definitions/core.js
deleted file mode 100644
index 31f78b5..0000000
--- a/assets/node_modules/@babel/types/lib/definitions/core.js
+++ /dev/null
@@ -1,856 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.patternLikeCommon = exports.functionDeclarationCommon = exports.functionTypeAnnotationCommon = exports.functionCommon = void 0;
-
-var _esutils = _interopRequireDefault(require("esutils"));
-
-var _is = _interopRequireDefault(require("../validators/is"));
-
-var _constants = require("../constants");
-
-var _utils = _interopRequireWildcard(require("./utils"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-(0, _utils.default)("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"]
-});
-(0, _utils.default)("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"]
-});
-(0, _utils.default)("BinaryExpression", {
- builder: ["operator", "left", "right"],
- fields: {
- operator: {
- validate: (0, _utils.assertOneOf)(..._constants.BINARY_OPERATORS)
- },
- left: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- right: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- },
- visitor: ["left", "right"],
- aliases: ["Binary", "Expression"]
-});
-(0, _utils.default)("InterpreterDirective", {
- builder: ["value"],
- fields: {
- value: {
- validate: (0, _utils.assertValueType)("string")
- }
- }
-});
-(0, _utils.default)("Directive", {
- visitor: ["value"],
- fields: {
- value: {
- validate: (0, _utils.assertNodeType)("DirectiveLiteral")
- }
- }
-});
-(0, _utils.default)("DirectiveLiteral", {
- builder: ["value"],
- fields: {
- value: {
- validate: (0, _utils.assertValueType)("string")
- }
- }
-});
-(0, _utils.default)("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"]
-});
-(0, _utils.default)("BreakStatement", {
- visitor: ["label"],
- fields: {
- label: {
- validate: (0, _utils.assertNodeType)("Identifier"),
- optional: true
- }
- },
- aliases: ["Statement", "Terminatorless", "CompletionStatement"]
-});
-(0, _utils.default)("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
- }
- })
-});
-(0, _utils.default)("CatchClause", {
- visitor: ["param", "body"],
- fields: {
- param: {
- validate: (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern"),
- optional: true
- },
- body: {
- validate: (0, _utils.assertNodeType)("BlockStatement")
- }
- },
- aliases: ["Scopable", "BlockParent"]
-});
-(0, _utils.default)("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"]
-});
-(0, _utils.default)("ContinueStatement", {
- visitor: ["label"],
- fields: {
- label: {
- validate: (0, _utils.assertNodeType)("Identifier"),
- optional: true
- }
- },
- aliases: ["Statement", "Terminatorless", "CompletionStatement"]
-});
-(0, _utils.default)("DebuggerStatement", {
- aliases: ["Statement"]
-});
-(0, _utils.default)("DoWhileStatement", {
- visitor: ["test", "body"],
- fields: {
- test: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- body: {
- validate: (0, _utils.assertNodeType)("Statement")
- }
- },
- aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"]
-});
-(0, _utils.default)("EmptyStatement", {
- aliases: ["Statement"]
-});
-(0, _utils.default)("ExpressionStatement", {
- visitor: ["expression"],
- fields: {
- expression: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- },
- aliases: ["Statement", "ExpressionWrapper"]
-});
-(0, _utils.default)("File", {
- builder: ["program", "comments", "tokens"],
- visitor: ["program"],
- fields: {
- program: {
- validate: (0, _utils.assertNodeType)("Program")
- }
- }
-});
-(0, _utils.default)("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")
- }
- }
-});
-(0, _utils.default)("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", "TSParameterProperty")))
- },
- 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;
-(0, _utils.default)("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);
- }
- };
- }()
-});
-(0, _utils.default)("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;
-(0, _utils.default)("Identifier", {
- builder: ["name"],
- visitor: ["typeAnnotation", "decorators"],
- aliases: ["Expression", "PatternLike", "LVal", "TSEntityName"],
- fields: Object.assign({}, patternLikeCommon, {
- name: {
- validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), function (node, key, val) {
- if (!process.env.BABEL_TYPES_8_BREAKING) return;
-
- if (!_esutils.default.keyword.isIdentifierNameES6(val)) {
- throw new TypeError(`"${val}" is not a valid identifier name`);
- }
- })
- },
- 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 (_esutils.default.keyword.isReservedWordES6(node.name, false) && node.name !== "this") {
- throw new TypeError(`"${node.name}" is not a valid identifer`);
- }
- }
-
-});
-(0, _utils.default)("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")
- }
- }
-});
-(0, _utils.default)("LabeledStatement", {
- visitor: ["label", "body"],
- aliases: ["Statement"],
- fields: {
- label: {
- validate: (0, _utils.assertNodeType)("Identifier")
- },
- body: {
- validate: (0, _utils.assertNodeType)("Statement")
- }
- }
-});
-(0, _utils.default)("StringLiteral", {
- builder: ["value"],
- fields: {
- value: {
- validate: (0, _utils.assertValueType)("string")
- }
- },
- aliases: ["Expression", "Pureish", "Literal", "Immutable"]
-});
-(0, _utils.default)("NumericLiteral", {
- builder: ["value"],
- deprecatedAlias: "NumberLiteral",
- fields: {
- value: {
- validate: (0, _utils.assertValueType)("number")
- }
- },
- aliases: ["Expression", "Pureish", "Literal", "Immutable"]
-});
-(0, _utils.default)("NullLiteral", {
- aliases: ["Expression", "Pureish", "Literal", "Immutable"]
-});
-(0, _utils.default)("BooleanLiteral", {
- builder: ["value"],
- fields: {
- value: {
- validate: (0, _utils.assertValueType)("boolean")
- }
- },
- aliases: ["Expression", "Pureish", "Literal", "Immutable"]
-});
-(0, _utils.default)("RegExpLiteral", {
- builder: ["pattern", "flags"],
- deprecatedAlias: "RegexLiteral",
- aliases: ["Expression", "Literal"],
- fields: {
- pattern: {
- validate: (0, _utils.assertValueType)("string")
- },
- flags: {
- validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), 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`);
- }
- }),
- default: ""
- }
- }
-});
-(0, _utils.default)("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")
- }
- }
-});
-(0, _utils.default)("MemberExpression", {
- builder: ["object", "property", "computed", "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");
- return function (node, key, val) {
- const validator = node.computed ? computed : normal;
- validator(node, key, val);
- };
- }()
- },
- computed: {
- default: false
- }
- }, !process.env.BABEL_TYPES_8_BREAKING ? {
- optional: {
- validate: (0, _utils.assertOneOf)(true, false),
- optional: true
- }
- } : {})
-});
-(0, _utils.default)("NewExpression", {
- inherits: "CallExpression"
-});
-(0, _utils.default)("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"]
-});
-(0, _utils.default)("ObjectExpression", {
- visitor: ["properties"],
- aliases: ["Expression"],
- fields: {
- properties: {
- validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ObjectMethod", "ObjectProperty", "SpreadElement")))
- }
- }
-});
-(0, _utils.default)("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");
- return function (node, key, val) {
- const validator = node.computed ? computed : normal;
- validator(node, key, val);
- };
- }()
- },
- 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"]
-});
-(0, _utils.default)("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");
- return function (node, key, val) {
- const validator = node.computed ? computed : normal;
- validator(node, key, val);
- };
- }()
- },
- value: {
- validate: (0, _utils.assertNodeType)("Expression", "PatternLike")
- },
- shorthand: {
- validate: (0, _utils.chain)((0, _utils.assertValueType)("boolean"), 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");
- }
- }, 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);
- };
- }()
-});
-(0, _utils.default)("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", "Pattern", "MemberExpression")
- }
- }),
-
- 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}`);
- }
- }
-
-});
-(0, _utils.default)("ReturnStatement", {
- visitor: ["argument"],
- aliases: ["Statement", "Terminatorless", "CompletionStatement"],
- fields: {
- argument: {
- validate: (0, _utils.assertNodeType)("Expression"),
- optional: true
- }
- }
-});
-(0, _utils.default)("SequenceExpression", {
- visitor: ["expressions"],
- fields: {
- expressions: {
- validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression")))
- }
- },
- aliases: ["Expression"]
-});
-(0, _utils.default)("ParenthesizedExpression", {
- visitor: ["expression"],
- aliases: ["Expression", "ExpressionWrapper"],
- fields: {
- expression: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
-});
-(0, _utils.default)("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")))
- }
- }
-});
-(0, _utils.default)("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")))
- }
- }
-});
-(0, _utils.default)("ThisExpression", {
- aliases: ["Expression"]
-});
-(0, _utils.default)("ThrowStatement", {
- visitor: ["argument"],
- aliases: ["Statement", "Terminatorless", "CompletionStatement"],
- fields: {
- argument: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
-});
-(0, _utils.default)("TryStatement", {
- visitor: ["block", "handler", "finalizer"],
- aliases: ["Statement"],
- fields: {
- block: {
- validate: (0, _utils.chain)((0, _utils.assertNodeType)("BlockStatement"), 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");
- }
- })
- },
- handler: {
- optional: true,
- validate: (0, _utils.assertNodeType)("CatchClause")
- },
- finalizer: {
- optional: true,
- validate: (0, _utils.assertNodeType)("BlockStatement")
- }
- }
-});
-(0, _utils.default)("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"]
-});
-(0, _utils.default)("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"]
-});
-(0, _utils.default)("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}`);
- }
- }
-
-});
-(0, _utils.default)("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")
- }
- }
-});
-(0, _utils.default)("WhileStatement", {
- visitor: ["test", "body"],
- aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"],
- fields: {
- test: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- body: {
- validate: (0, _utils.assertNodeType)("Statement")
- }
- }
-});
-(0, _utils.default)("WithStatement", {
- visitor: ["object", "body"],
- aliases: ["Statement"],
- fields: {
- object: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- body: {
- validate: (0, _utils.assertNodeType)("Statement")
- }
- }
-}); \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/definitions/es2015.js b/assets/node_modules/@babel/types/lib/definitions/es2015.js
deleted file mode 100644
index 86b2fd0..0000000
--- a/assets/node_modules/@babel/types/lib/definitions/es2015.js
+++ /dev/null
@@ -1,467 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.classMethodOrDeclareMethodCommon = exports.classMethodOrPropertyCommon = void 0;
-
-var _utils = _interopRequireWildcard(require("./utils"));
-
-var _core = require("./core");
-
-var _is = _interopRequireDefault(require("../validators/is"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-(0, _utils.default)("AssignmentPattern", {
- visitor: ["left", "right", "decorators"],
- builder: ["left", "right"],
- aliases: ["Pattern", "PatternLike", "LVal"],
- fields: Object.assign({}, _core.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
- }
- })
-});
-(0, _utils.default)("ArrayPattern", {
- visitor: ["elements", "typeAnnotation"],
- builder: ["elements"],
- aliases: ["Pattern", "PatternLike", "LVal"],
- fields: Object.assign({}, _core.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
- }
- })
-});
-(0, _utils.default)("ArrowFunctionExpression", {
- builder: ["params", "body", "async"],
- visitor: ["params", "body", "returnType", "typeParameters"],
- aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
- fields: Object.assign({}, _core.functionCommon, {}, _core.functionTypeAnnotationCommon, {
- expression: {
- validate: (0, _utils.assertValueType)("boolean")
- },
- body: {
- validate: (0, _utils.assertNodeType)("BlockStatement", "Expression")
- }
- })
-});
-(0, _utils.default)("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")))
- }
- }
-});
-(0, _utils.default)("ClassExpression", {
- builder: ["id", "superClass", "body", "decorators"],
- visitor: ["id", "body", "superClass", "mixins", "typeParameters", "superTypeParameters", "implements", "decorators"],
- aliases: ["Scopable", "Class", "Expression", "Pureish"],
- 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
- }
- }
-});
-(0, _utils.default)("ClassDeclaration", {
- inherits: "ClassExpression",
- aliases: ["Scopable", "Class", "Statement", "Declaration", "Pureish"],
- fields: {
- 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);
- }
- };
- }()
-});
-(0, _utils.default)("ExportAllDeclaration", {
- visitor: ["source"],
- aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
- fields: {
- source: {
- validate: (0, _utils.assertNodeType)("StringLiteral")
- }
- }
-});
-(0, _utils.default)("ExportDefaultDeclaration", {
- visitor: ["declaration"],
- aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
- fields: {
- declaration: {
- validate: (0, _utils.assertNodeType)("FunctionDeclaration", "TSDeclareFunction", "ClassDeclaration", "Expression")
- }
- }
-});
-(0, _utils.default)("ExportNamedDeclaration", {
- visitor: ["declaration", "specifiers", "source"],
- aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
- fields: {
- declaration: {
- optional: true,
- validate: (0, _utils.chain)((0, _utils.assertNodeType)("Declaration"), 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");
- }
- }, 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");
- }
- })
- },
- 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"))
- }
-});
-(0, _utils.default)("ExportSpecifier", {
- visitor: ["local", "exported"],
- aliases: ["ModuleSpecifier"],
- fields: {
- local: {
- validate: (0, _utils.assertNodeType)("Identifier")
- },
- exported: {
- validate: (0, _utils.assertNodeType)("Identifier")
- }
- }
-});
-(0, _utils.default)("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
- }
- }
-});
-(0, _utils.default)("ImportDeclaration", {
- visitor: ["specifiers", "source"],
- aliases: ["Statement", "Declaration", "ModuleDeclaration"],
- fields: {
- 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
- }
- }
-});
-(0, _utils.default)("ImportDefaultSpecifier", {
- visitor: ["local"],
- aliases: ["ModuleSpecifier"],
- fields: {
- local: {
- validate: (0, _utils.assertNodeType)("Identifier")
- }
- }
-});
-(0, _utils.default)("ImportNamespaceSpecifier", {
- visitor: ["local"],
- aliases: ["ModuleSpecifier"],
- fields: {
- local: {
- validate: (0, _utils.assertNodeType)("Identifier")
- }
- }
-});
-(0, _utils.default)("ImportSpecifier", {
- visitor: ["local", "imported"],
- aliases: ["ModuleSpecifier"],
- fields: {
- local: {
- validate: (0, _utils.assertNodeType)("Identifier")
- },
- imported: {
- validate: (0, _utils.assertNodeType)("Identifier")
- },
- importKind: {
- validate: (0, _utils.assertOneOf)("type", "typeof"),
- optional: true
- }
- }
-});
-(0, _utils.default)("MetaProperty", {
- visitor: ["meta", "property"],
- aliases: ["Expression"],
- fields: {
- meta: {
- validate: (0, _utils.chain)((0, _utils.assertNodeType)("Identifier"), 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");
- }
- })
- },
- 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
- },
- 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({}, _core.functionCommon, {}, classMethodOrPropertyCommon, {
- 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;
-(0, _utils.default)("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, {}, _core.functionTypeAnnotationCommon, {
- body: {
- validate: (0, _utils.assertNodeType)("BlockStatement")
- }
- })
-});
-(0, _utils.default)("ObjectPattern", {
- visitor: ["properties", "typeAnnotation", "decorators"],
- builder: ["properties"],
- aliases: ["Pattern", "PatternLike", "LVal"],
- fields: Object.assign({}, _core.patternLikeCommon, {
- properties: {
- validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("RestElement", "ObjectProperty")))
- }
- })
-});
-(0, _utils.default)("SpreadElement", {
- visitor: ["argument"],
- aliases: ["UnaryLike"],
- deprecatedAlias: "SpreadProperty",
- fields: {
- argument: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
-});
-(0, _utils.default)("Super", {
- aliases: ["Expression"]
-});
-(0, _utils.default)("TaggedTemplateExpression", {
- visitor: ["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
- }
- }
-});
-(0, _utils.default)("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
- }
- }
-});
-(0, _utils.default)("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")), 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}`);
- }
- })
- }
- }
-});
-(0, _utils.default)("YieldExpression", {
- builder: ["argument", "delegate"],
- visitor: ["argument"],
- aliases: ["Expression", "Terminatorless"],
- fields: {
- delegate: {
- validate: (0, _utils.chain)((0, _utils.assertValueType)("boolean"), 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");
- }
- }),
- default: false
- },
- argument: {
- optional: true,
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
-}); \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/definitions/experimental.js b/assets/node_modules/@babel/types/lib/definitions/experimental.js
deleted file mode 100644
index 1ea6875..0000000
--- a/assets/node_modules/@babel/types/lib/definitions/experimental.js
+++ /dev/null
@@ -1,222 +0,0 @@
-"use strict";
-
-var _utils = _interopRequireWildcard(require("./utils"));
-
-var _es = require("./es2015");
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-(0, _utils.default)("ArgumentPlaceholder", {});
-(0, _utils.default)("AwaitExpression", {
- builder: ["argument"],
- visitor: ["argument"],
- aliases: ["Expression", "Terminatorless"],
- fields: {
- argument: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
-});
-(0, _utils.default)("BindExpression", {
- visitor: ["object", "callee"],
- aliases: ["Expression"],
- fields: !process.env.BABEL_TYPES_8_BREAKING ? {} : {
- object: {
- validate: (0, _utils.assertNodeType)("Expression")
- },
- callee: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
-});
-(0, _utils.default)("ClassProperty", {
- visitor: ["key", "value", "typeAnnotation", "decorators"],
- builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"],
- aliases: ["Property"],
- fields: Object.assign({}, _es.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
- }
- })
-});
-(0, _utils.default)("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");
- return function (node, key, val) {
- const validator = node.computed ? computed : normal;
- validator(node, key, val);
- };
- }()
- },
- computed: {
- default: false
- },
- optional: {
- validate: (0, _utils.assertValueType)("boolean")
- }
- }
-});
-(0, _utils.default)("PipelineTopicExpression", {
- builder: ["expression"],
- visitor: ["expression"],
- fields: {
- expression: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
-});
-(0, _utils.default)("PipelineBareFunction", {
- builder: ["callee"],
- visitor: ["callee"],
- fields: {
- callee: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
-});
-(0, _utils.default)("PipelinePrimaryTopicReference", {
- aliases: ["Expression"]
-});
-(0, _utils.default)("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")))
- },
- optional: {
- validate: (0, _utils.assertValueType)("boolean")
- },
- typeArguments: {
- validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"),
- optional: true
- },
- typeParameters: {
- validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"),
- optional: true
- }
- }
-});
-(0, _utils.default)("ClassPrivateProperty", {
- visitor: ["key", "value", "decorators"],
- builder: ["key", "value", "decorators"],
- aliases: ["Property", "Private"],
- fields: {
- key: {
- validate: (0, _utils.assertNodeType)("PrivateName")
- },
- value: {
- validate: (0, _utils.assertNodeType)("Expression"),
- optional: true
- },
- decorators: {
- validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))),
- optional: true
- }
- }
-});
-(0, _utils.default)("ClassPrivateMethod", {
- builder: ["kind", "key", "params", "body", "static"],
- visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"],
- aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method", "Private"],
- fields: Object.assign({}, _es.classMethodOrDeclareMethodCommon, {
- key: {
- validate: (0, _utils.assertNodeType)("PrivateName")
- },
- body: {
- validate: (0, _utils.assertNodeType)("BlockStatement")
- }
- })
-});
-(0, _utils.default)("Import", {
- aliases: ["Expression"]
-});
-(0, _utils.default)("Decorator", {
- visitor: ["expression"],
- fields: {
- expression: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
-});
-(0, _utils.default)("DoExpression", {
- visitor: ["body"],
- aliases: ["Expression"],
- fields: {
- body: {
- validate: (0, _utils.assertNodeType)("BlockStatement")
- }
- }
-});
-(0, _utils.default)("ExportDefaultSpecifier", {
- visitor: ["exported"],
- aliases: ["ModuleSpecifier"],
- fields: {
- exported: {
- validate: (0, _utils.assertNodeType)("Identifier")
- }
- }
-});
-(0, _utils.default)("ExportNamespaceSpecifier", {
- visitor: ["exported"],
- aliases: ["ModuleSpecifier"],
- fields: {
- exported: {
- validate: (0, _utils.assertNodeType)("Identifier")
- }
- }
-});
-(0, _utils.default)("PrivateName", {
- visitor: ["id"],
- aliases: ["Private"],
- fields: {
- id: {
- validate: (0, _utils.assertNodeType)("Identifier")
- }
- }
-});
-(0, _utils.default)("BigIntLiteral", {
- builder: ["value"],
- fields: {
- value: {
- validate: (0, _utils.assertValueType)("string")
- }
- },
- aliases: ["Expression", "Pureish", "Literal", "Immutable"]
-}); \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/definitions/flow.js b/assets/node_modules/@babel/types/lib/definitions/flow.js
deleted file mode 100644
index f79a694..0000000
--- a/assets/node_modules/@babel/types/lib/definitions/flow.js
+++ /dev/null
@@ -1,458 +0,0 @@
-"use strict";
-
-var _utils = _interopRequireWildcard(require("./utils"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-const defineInterfaceishType = (name, typeParameterType = "TypeParameterDeclaration") => {
- (0, _utils.default)(name, {
- builder: ["id", "typeParameters", "extends", "body"],
- visitor: ["id", "typeParameters", "extends", "mixins", "implements", "body"],
- aliases: ["Flow", "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")
- }
- });
-};
-
-(0, _utils.default)("AnyTypeAnnotation", {
- aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
-});
-(0, _utils.default)("ArrayTypeAnnotation", {
- visitor: ["elementType"],
- aliases: ["Flow", "FlowType"],
- fields: {
- elementType: (0, _utils.validateType)("FlowType")
- }
-});
-(0, _utils.default)("BooleanTypeAnnotation", {
- aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
-});
-(0, _utils.default)("BooleanLiteralTypeAnnotation", {
- builder: ["value"],
- aliases: ["Flow", "FlowType"],
- fields: {
- value: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
- }
-});
-(0, _utils.default)("NullLiteralTypeAnnotation", {
- aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
-});
-(0, _utils.default)("ClassImplements", {
- visitor: ["id", "typeParameters"],
- aliases: ["Flow"],
- fields: {
- id: (0, _utils.validateType)("Identifier"),
- typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
- }
-});
-defineInterfaceishType("DeclareClass");
-(0, _utils.default)("DeclareFunction", {
- visitor: ["id"],
- aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
- fields: {
- id: (0, _utils.validateType)("Identifier"),
- predicate: (0, _utils.validateOptionalType)("DeclaredPredicate")
- }
-});
-defineInterfaceishType("DeclareInterface");
-(0, _utils.default)("DeclareModule", {
- builder: ["id", "body", "kind"],
- visitor: ["id", "body"],
- aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
- fields: {
- id: (0, _utils.validateType)(["Identifier", "StringLiteral"]),
- body: (0, _utils.validateType)("BlockStatement"),
- kind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("CommonJS", "ES"))
- }
-});
-(0, _utils.default)("DeclareModuleExports", {
- visitor: ["typeAnnotation"],
- aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
- fields: {
- typeAnnotation: (0, _utils.validateType)("TypeAnnotation")
- }
-});
-(0, _utils.default)("DeclareTypeAlias", {
- visitor: ["id", "typeParameters", "right"],
- aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
- fields: {
- id: (0, _utils.validateType)("Identifier"),
- typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
- right: (0, _utils.validateType)("FlowType")
- }
-});
-(0, _utils.default)("DeclareOpaqueType", {
- visitor: ["id", "typeParameters", "supertype"],
- aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
- fields: {
- id: (0, _utils.validateType)("Identifier"),
- typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
- supertype: (0, _utils.validateOptionalType)("FlowType")
- }
-});
-(0, _utils.default)("DeclareVariable", {
- visitor: ["id"],
- aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
- fields: {
- id: (0, _utils.validateType)("Identifier")
- }
-});
-(0, _utils.default)("DeclareExportDeclaration", {
- visitor: ["declaration", "specifiers", "source"],
- aliases: ["Flow", "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"))
- }
-});
-(0, _utils.default)("DeclareExportAllDeclaration", {
- visitor: ["source"],
- aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
- fields: {
- source: (0, _utils.validateType)("StringLiteral"),
- exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value"))
- }
-});
-(0, _utils.default)("DeclaredPredicate", {
- visitor: ["value"],
- aliases: ["Flow", "FlowPredicate"],
- fields: {
- value: (0, _utils.validateType)("Flow")
- }
-});
-(0, _utils.default)("ExistsTypeAnnotation", {
- aliases: ["Flow", "FlowType"]
-});
-(0, _utils.default)("FunctionTypeAnnotation", {
- visitor: ["typeParameters", "params", "rest", "returnType"],
- aliases: ["Flow", "FlowType"],
- fields: {
- typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
- params: (0, _utils.validate)((0, _utils.arrayOfType)("FunctionTypeParam")),
- rest: (0, _utils.validateOptionalType)("FunctionTypeParam"),
- returnType: (0, _utils.validateType)("FlowType")
- }
-});
-(0, _utils.default)("FunctionTypeParam", {
- visitor: ["name", "typeAnnotation"],
- aliases: ["Flow"],
- fields: {
- name: (0, _utils.validateOptionalType)("Identifier"),
- typeAnnotation: (0, _utils.validateType)("FlowType"),
- optional: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
- }
-});
-(0, _utils.default)("GenericTypeAnnotation", {
- visitor: ["id", "typeParameters"],
- aliases: ["Flow", "FlowType"],
- fields: {
- id: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"]),
- typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
- }
-});
-(0, _utils.default)("InferredPredicate", {
- aliases: ["Flow", "FlowPredicate"]
-});
-(0, _utils.default)("InterfaceExtends", {
- visitor: ["id", "typeParameters"],
- aliases: ["Flow"],
- fields: {
- id: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"]),
- typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
- }
-});
-defineInterfaceishType("InterfaceDeclaration");
-(0, _utils.default)("InterfaceTypeAnnotation", {
- visitor: ["extends", "body"],
- aliases: ["Flow", "FlowType"],
- fields: {
- extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")),
- body: (0, _utils.validateType)("ObjectTypeAnnotation")
- }
-});
-(0, _utils.default)("IntersectionTypeAnnotation", {
- visitor: ["types"],
- aliases: ["Flow", "FlowType"],
- fields: {
- types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
- }
-});
-(0, _utils.default)("MixedTypeAnnotation", {
- aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
-});
-(0, _utils.default)("EmptyTypeAnnotation", {
- aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
-});
-(0, _utils.default)("NullableTypeAnnotation", {
- visitor: ["typeAnnotation"],
- aliases: ["Flow", "FlowType"],
- fields: {
- typeAnnotation: (0, _utils.validateType)("FlowType")
- }
-});
-(0, _utils.default)("NumberLiteralTypeAnnotation", {
- builder: ["value"],
- aliases: ["Flow", "FlowType"],
- fields: {
- value: (0, _utils.validate)((0, _utils.assertValueType)("number"))
- }
-});
-(0, _utils.default)("NumberTypeAnnotation", {
- aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
-});
-(0, _utils.default)("ObjectTypeAnnotation", {
- visitor: ["properties", "indexers", "callProperties", "internalSlots"],
- aliases: ["Flow", "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"))
- }
-});
-(0, _utils.default)("ObjectTypeInternalSlot", {
- visitor: ["id", "value", "optional", "static", "method"],
- aliases: ["Flow", "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"))
- }
-});
-(0, _utils.default)("ObjectTypeCallProperty", {
- visitor: ["value"],
- aliases: ["Flow", "UserWhitespacable"],
- fields: {
- value: (0, _utils.validateType)("FlowType"),
- static: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
- }
-});
-(0, _utils.default)("ObjectTypeIndexer", {
- visitor: ["id", "key", "value", "variance"],
- aliases: ["Flow", "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")
- }
-});
-(0, _utils.default)("ObjectTypeProperty", {
- visitor: ["key", "value", "variance"],
- aliases: ["Flow", "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")
- }
-});
-(0, _utils.default)("ObjectTypeSpreadProperty", {
- visitor: ["argument"],
- aliases: ["Flow", "UserWhitespacable"],
- fields: {
- argument: (0, _utils.validateType)("FlowType")
- }
-});
-(0, _utils.default)("OpaqueType", {
- visitor: ["id", "typeParameters", "supertype", "impltype"],
- aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
- fields: {
- id: (0, _utils.validateType)("Identifier"),
- typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
- supertype: (0, _utils.validateOptionalType)("FlowType"),
- impltype: (0, _utils.validateType)("FlowType")
- }
-});
-(0, _utils.default)("QualifiedTypeIdentifier", {
- visitor: ["id", "qualification"],
- aliases: ["Flow"],
- fields: {
- id: (0, _utils.validateType)("Identifier"),
- qualification: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"])
- }
-});
-(0, _utils.default)("StringLiteralTypeAnnotation", {
- builder: ["value"],
- aliases: ["Flow", "FlowType"],
- fields: {
- value: (0, _utils.validate)((0, _utils.assertValueType)("string"))
- }
-});
-(0, _utils.default)("StringTypeAnnotation", {
- aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
-});
-(0, _utils.default)("ThisTypeAnnotation", {
- aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
-});
-(0, _utils.default)("TupleTypeAnnotation", {
- visitor: ["types"],
- aliases: ["Flow", "FlowType"],
- fields: {
- types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
- }
-});
-(0, _utils.default)("TypeofTypeAnnotation", {
- visitor: ["argument"],
- aliases: ["Flow", "FlowType"],
- fields: {
- argument: (0, _utils.validateType)("FlowType")
- }
-});
-(0, _utils.default)("TypeAlias", {
- visitor: ["id", "typeParameters", "right"],
- aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
- fields: {
- id: (0, _utils.validateType)("Identifier"),
- typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
- right: (0, _utils.validateType)("FlowType")
- }
-});
-(0, _utils.default)("TypeAnnotation", {
- aliases: ["Flow"],
- visitor: ["typeAnnotation"],
- fields: {
- typeAnnotation: (0, _utils.validateType)("FlowType")
- }
-});
-(0, _utils.default)("TypeCastExpression", {
- visitor: ["expression", "typeAnnotation"],
- aliases: ["Flow", "ExpressionWrapper", "Expression"],
- fields: {
- expression: (0, _utils.validateType)("Expression"),
- typeAnnotation: (0, _utils.validateType)("TypeAnnotation")
- }
-});
-(0, _utils.default)("TypeParameter", {
- aliases: ["Flow"],
- 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")
- }
-});
-(0, _utils.default)("TypeParameterDeclaration", {
- aliases: ["Flow"],
- visitor: ["params"],
- fields: {
- params: (0, _utils.validate)((0, _utils.arrayOfType)("TypeParameter"))
- }
-});
-(0, _utils.default)("TypeParameterInstantiation", {
- aliases: ["Flow"],
- visitor: ["params"],
- fields: {
- params: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
- }
-});
-(0, _utils.default)("UnionTypeAnnotation", {
- visitor: ["types"],
- aliases: ["Flow", "FlowType"],
- fields: {
- types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
- }
-});
-(0, _utils.default)("Variance", {
- aliases: ["Flow"],
- builder: ["kind"],
- fields: {
- kind: (0, _utils.validate)((0, _utils.assertOneOf)("minus", "plus"))
- }
-});
-(0, _utils.default)("VoidTypeAnnotation", {
- aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
-});
-(0, _utils.default)("EnumDeclaration", {
- aliases: ["Declaration"],
- visitor: ["id", "body"],
- fields: {
- id: (0, _utils.validateType)("Identifier"),
- body: (0, _utils.validateType)(["EnumBooleanBody", "EnumNumberBody", "EnumStringBody", "EnumSymbolBody"])
- }
-});
-(0, _utils.default)("EnumBooleanBody", {
- aliases: ["EnumBody"],
- visitor: ["members"],
- fields: {
- explicit: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
- members: (0, _utils.validateArrayOfType)("EnumBooleanMember")
- }
-});
-(0, _utils.default)("EnumNumberBody", {
- aliases: ["EnumBody"],
- visitor: ["members"],
- fields: {
- explicit: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
- members: (0, _utils.validateArrayOfType)("EnumNumberMember")
- }
-});
-(0, _utils.default)("EnumStringBody", {
- aliases: ["EnumBody"],
- visitor: ["members"],
- fields: {
- explicit: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
- members: (0, _utils.validateArrayOfType)(["EnumStringMember", "EnumDefaultedMember"])
- }
-});
-(0, _utils.default)("EnumSymbolBody", {
- aliases: ["EnumBody"],
- visitor: ["members"],
- fields: {
- members: (0, _utils.validateArrayOfType)("EnumDefaultedMember")
- }
-});
-(0, _utils.default)("EnumBooleanMember", {
- aliases: ["EnumMember"],
- visitor: ["id"],
- fields: {
- id: (0, _utils.validateType)("Identifier"),
- init: (0, _utils.validateType)("BooleanLiteral")
- }
-});
-(0, _utils.default)("EnumNumberMember", {
- aliases: ["EnumMember"],
- visitor: ["id", "init"],
- fields: {
- id: (0, _utils.validateType)("Identifier"),
- init: (0, _utils.validateType)("NumericLiteral")
- }
-});
-(0, _utils.default)("EnumStringMember", {
- aliases: ["EnumMember"],
- visitor: ["id", "init"],
- fields: {
- id: (0, _utils.validateType)("Identifier"),
- init: (0, _utils.validateType)("StringLiteral")
- }
-});
-(0, _utils.default)("EnumDefaultedMember", {
- aliases: ["EnumMember"],
- visitor: ["id"],
- fields: {
- id: (0, _utils.validateType)("Identifier")
- }
-}); \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/definitions/index.js b/assets/node_modules/@babel/types/lib/definitions/index.js
deleted file mode 100644
index 84ca387..0000000
--- a/assets/node_modules/@babel/types/lib/definitions/index.js
+++ /dev/null
@@ -1,99 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-Object.defineProperty(exports, "VISITOR_KEYS", {
- enumerable: true,
- get: function () {
- return _utils.VISITOR_KEYS;
- }
-});
-Object.defineProperty(exports, "ALIAS_KEYS", {
- enumerable: true,
- get: function () {
- return _utils.ALIAS_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, "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, "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;
-
-var _toFastProperties = _interopRequireDefault(require("to-fast-properties"));
-
-require("./core");
-
-require("./es2015");
-
-require("./flow");
-
-require("./jsx");
-
-require("./misc");
-
-require("./experimental");
-
-require("./typescript");
-
-var _utils = require("./utils");
-
-var _placeholders = require("./placeholders");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-(0, _toFastProperties.default)(_utils.VISITOR_KEYS);
-(0, _toFastProperties.default)(_utils.ALIAS_KEYS);
-(0, _toFastProperties.default)(_utils.FLIPPED_ALIAS_KEYS);
-(0, _toFastProperties.default)(_utils.NODE_FIELDS);
-(0, _toFastProperties.default)(_utils.BUILDER_KEYS);
-(0, _toFastProperties.default)(_utils.DEPRECATED_KEYS);
-(0, _toFastProperties.default)(_placeholders.PLACEHOLDERS_ALIAS);
-(0, _toFastProperties.default)(_placeholders.PLACEHOLDERS_FLIPPED_ALIAS);
-const TYPES = Object.keys(_utils.VISITOR_KEYS).concat(Object.keys(_utils.FLIPPED_ALIAS_KEYS)).concat(Object.keys(_utils.DEPRECATED_KEYS));
-exports.TYPES = TYPES; \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/definitions/jsx.js b/assets/node_modules/@babel/types/lib/definitions/jsx.js
deleted file mode 100644
index c700941..0000000
--- a/assets/node_modules/@babel/types/lib/definitions/jsx.js
+++ /dev/null
@@ -1,161 +0,0 @@
-"use strict";
-
-var _utils = _interopRequireWildcard(require("./utils"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-(0, _utils.default)("JSXAttribute", {
- visitor: ["name", "value"],
- aliases: ["JSX", "Immutable"],
- fields: {
- name: {
- validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXNamespacedName")
- },
- value: {
- optional: true,
- validate: (0, _utils.assertNodeType)("JSXElement", "JSXFragment", "StringLiteral", "JSXExpressionContainer")
- }
- }
-});
-(0, _utils.default)("JSXClosingElement", {
- visitor: ["name"],
- aliases: ["JSX", "Immutable"],
- fields: {
- name: {
- validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName")
- }
- }
-});
-(0, _utils.default)("JSXElement", {
- builder: ["openingElement", "closingElement", "children", "selfClosing"],
- visitor: ["openingElement", "children", "closingElement"],
- aliases: ["JSX", "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")))
- }
- }
-});
-(0, _utils.default)("JSXEmptyExpression", {
- aliases: ["JSX"]
-});
-(0, _utils.default)("JSXExpressionContainer", {
- visitor: ["expression"],
- aliases: ["JSX", "Immutable"],
- fields: {
- expression: {
- validate: (0, _utils.assertNodeType)("Expression", "JSXEmptyExpression")
- }
- }
-});
-(0, _utils.default)("JSXSpreadChild", {
- visitor: ["expression"],
- aliases: ["JSX", "Immutable"],
- fields: {
- expression: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
-});
-(0, _utils.default)("JSXIdentifier", {
- builder: ["name"],
- aliases: ["JSX"],
- fields: {
- name: {
- validate: (0, _utils.assertValueType)("string")
- }
- }
-});
-(0, _utils.default)("JSXMemberExpression", {
- visitor: ["object", "property"],
- aliases: ["JSX"],
- fields: {
- object: {
- validate: (0, _utils.assertNodeType)("JSXMemberExpression", "JSXIdentifier")
- },
- property: {
- validate: (0, _utils.assertNodeType)("JSXIdentifier")
- }
- }
-});
-(0, _utils.default)("JSXNamespacedName", {
- visitor: ["namespace", "name"],
- aliases: ["JSX"],
- fields: {
- namespace: {
- validate: (0, _utils.assertNodeType)("JSXIdentifier")
- },
- name: {
- validate: (0, _utils.assertNodeType)("JSXIdentifier")
- }
- }
-});
-(0, _utils.default)("JSXOpeningElement", {
- builder: ["name", "attributes", "selfClosing"],
- visitor: ["name", "attributes"],
- aliases: ["JSX", "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
- }
- }
-});
-(0, _utils.default)("JSXSpreadAttribute", {
- visitor: ["argument"],
- aliases: ["JSX"],
- fields: {
- argument: {
- validate: (0, _utils.assertNodeType)("Expression")
- }
- }
-});
-(0, _utils.default)("JSXText", {
- aliases: ["JSX", "Immutable"],
- builder: ["value"],
- fields: {
- value: {
- validate: (0, _utils.assertValueType)("string")
- }
- }
-});
-(0, _utils.default)("JSXFragment", {
- builder: ["openingFragment", "closingFragment", "children"],
- visitor: ["openingFragment", "children", "closingFragment"],
- aliases: ["JSX", "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")))
- }
- }
-});
-(0, _utils.default)("JSXOpeningFragment", {
- aliases: ["JSX", "Immutable"]
-});
-(0, _utils.default)("JSXClosingFragment", {
- aliases: ["JSX", "Immutable"]
-}); \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/definitions/misc.js b/assets/node_modules/@babel/types/lib/definitions/misc.js
deleted file mode 100644
index f72c651..0000000
--- a/assets/node_modules/@babel/types/lib/definitions/misc.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"use strict";
-
-var _utils = _interopRequireWildcard(require("./utils"));
-
-var _placeholders = require("./placeholders");
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-(0, _utils.default)("Noop", {
- visitor: []
-});
-(0, _utils.default)("Placeholder", {
- visitor: [],
- builder: ["expectedNode", "name"],
- fields: {
- name: {
- validate: (0, _utils.assertNodeType)("Identifier")
- },
- expectedNode: {
- validate: (0, _utils.assertOneOf)(..._placeholders.PLACEHOLDERS)
- }
- }
-});
-(0, _utils.default)("V8IntrinsicIdentifier", {
- builder: ["name"],
- fields: {
- name: {
- validate: (0, _utils.assertValueType)("string")
- }
- }
-}); \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/definitions/placeholders.js b/assets/node_modules/@babel/types/lib/definitions/placeholders.js
deleted file mode 100644
index 0edf7b2..0000000
--- a/assets/node_modules/@babel/types/lib/definitions/placeholders.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"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 && 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/assets/node_modules/@babel/types/lib/definitions/typescript.js b/assets/node_modules/@babel/types/lib/definitions/typescript.js
deleted file mode 100644
index 531338f..0000000
--- a/assets/node_modules/@babel/types/lib/definitions/typescript.js
+++ /dev/null
@@ -1,417 +0,0 @@
-"use strict";
-
-var _utils = _interopRequireWildcard(require("./utils"));
-
-var _core = require("./core");
-
-var _es = require("./es2015");
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-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
- }
-};
-(0, _utils.default)("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")
- }
- }
-});
-(0, _utils.default)("TSDeclareFunction", {
- aliases: ["Statement", "Declaration"],
- visitor: ["id", "typeParameters", "params", "returnType"],
- fields: Object.assign({}, _core.functionDeclarationCommon, {}, tSFunctionTypeAnnotationCommon)
-});
-(0, _utils.default)("TSDeclareMethod", {
- visitor: ["decorators", "key", "typeParameters", "params", "returnType"],
- fields: Object.assign({}, _es.classMethodOrDeclareMethodCommon, {}, tSFunctionTypeAnnotationCommon)
-});
-(0, _utils.default)("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
-};
-(0, _utils.default)("TSCallSignatureDeclaration", callConstructSignatureDeclaration);
-(0, _utils.default)("TSConstructSignatureDeclaration", callConstructSignatureDeclaration);
-const namedTypeElementCommon = {
- key: (0, _utils.validateType)("Expression"),
- computed: (0, _utils.validate)(bool),
- optional: (0, _utils.validateOptional)(bool)
-};
-(0, _utils.default)("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")
- })
-});
-(0, _utils.default)("TSMethodSignature", {
- aliases: ["TSTypeElement"],
- visitor: ["key", "typeParameters", "parameters", "typeAnnotation"],
- fields: Object.assign({}, signatureDeclarationCommon, {}, namedTypeElementCommon)
-});
-(0, _utils.default)("TSIndexSignature", {
- aliases: ["TSTypeElement"],
- visitor: ["parameters", "typeAnnotation"],
- fields: {
- readonly: (0, _utils.validateOptional)(bool),
- parameters: (0, _utils.validateArrayOfType)("Identifier"),
- typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation")
- }
-});
-const tsKeywordTypes = ["TSAnyKeyword", "TSBooleanKeyword", "TSBigIntKeyword", "TSNeverKeyword", "TSNullKeyword", "TSNumberKeyword", "TSObjectKeyword", "TSStringKeyword", "TSSymbolKeyword", "TSUndefinedKeyword", "TSUnknownKeyword", "TSVoidKeyword"];
-
-for (const type of tsKeywordTypes) {
- (0, _utils.default)(type, {
- aliases: ["TSType"],
- visitor: [],
- fields: {}
- });
-}
-
-(0, _utils.default)("TSThisType", {
- aliases: ["TSType"],
- visitor: [],
- fields: {}
-});
-const fnOrCtr = {
- aliases: ["TSType"],
- visitor: ["typeParameters", "parameters", "typeAnnotation"],
- fields: signatureDeclarationCommon
-};
-(0, _utils.default)("TSFunctionType", fnOrCtr);
-(0, _utils.default)("TSConstructorType", fnOrCtr);
-(0, _utils.default)("TSTypeReference", {
- aliases: ["TSType"],
- visitor: ["typeName", "typeParameters"],
- fields: {
- typeName: (0, _utils.validateType)("TSEntityName"),
- typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
- }
-});
-(0, _utils.default)("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)
- }
-});
-(0, _utils.default)("TSTypeQuery", {
- aliases: ["TSType"],
- visitor: ["exprName"],
- fields: {
- exprName: (0, _utils.validateType)(["TSEntityName", "TSImportType"])
- }
-});
-(0, _utils.default)("TSTypeLiteral", {
- aliases: ["TSType"],
- visitor: ["members"],
- fields: {
- members: (0, _utils.validateArrayOfType)("TSTypeElement")
- }
-});
-(0, _utils.default)("TSArrayType", {
- aliases: ["TSType"],
- visitor: ["elementType"],
- fields: {
- elementType: (0, _utils.validateType)("TSType")
- }
-});
-(0, _utils.default)("TSTupleType", {
- aliases: ["TSType"],
- visitor: ["elementTypes"],
- fields: {
- elementTypes: (0, _utils.validateArrayOfType)("TSType")
- }
-});
-(0, _utils.default)("TSOptionalType", {
- aliases: ["TSType"],
- visitor: ["typeAnnotation"],
- fields: {
- typeAnnotation: (0, _utils.validateType)("TSType")
- }
-});
-(0, _utils.default)("TSRestType", {
- aliases: ["TSType"],
- visitor: ["typeAnnotation"],
- fields: {
- typeAnnotation: (0, _utils.validateType)("TSType")
- }
-});
-const unionOrIntersection = {
- aliases: ["TSType"],
- visitor: ["types"],
- fields: {
- types: (0, _utils.validateArrayOfType)("TSType")
- }
-};
-(0, _utils.default)("TSUnionType", unionOrIntersection);
-(0, _utils.default)("TSIntersectionType", unionOrIntersection);
-(0, _utils.default)("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")
- }
-});
-(0, _utils.default)("TSInferType", {
- aliases: ["TSType"],
- visitor: ["typeParameter"],
- fields: {
- typeParameter: (0, _utils.validateType)("TSTypeParameter")
- }
-});
-(0, _utils.default)("TSParenthesizedType", {
- aliases: ["TSType"],
- visitor: ["typeAnnotation"],
- fields: {
- typeAnnotation: (0, _utils.validateType)("TSType")
- }
-});
-(0, _utils.default)("TSTypeOperator", {
- aliases: ["TSType"],
- visitor: ["typeAnnotation"],
- fields: {
- operator: (0, _utils.validate)((0, _utils.assertValueType)("string")),
- typeAnnotation: (0, _utils.validateType)("TSType")
- }
-});
-(0, _utils.default)("TSIndexedAccessType", {
- aliases: ["TSType"],
- visitor: ["objectType", "indexType"],
- fields: {
- objectType: (0, _utils.validateType)("TSType"),
- indexType: (0, _utils.validateType)("TSType")
- }
-});
-(0, _utils.default)("TSMappedType", {
- aliases: ["TSType"],
- visitor: ["typeParameter", "typeAnnotation"],
- fields: {
- readonly: (0, _utils.validateOptional)(bool),
- typeParameter: (0, _utils.validateType)("TSTypeParameter"),
- optional: (0, _utils.validateOptional)(bool),
- typeAnnotation: (0, _utils.validateOptionalType)("TSType")
- }
-});
-(0, _utils.default)("TSLiteralType", {
- aliases: ["TSType"],
- visitor: ["literal"],
- fields: {
- literal: (0, _utils.validateType)(["NumericLiteral", "StringLiteral", "BooleanLiteral"])
- }
-});
-(0, _utils.default)("TSExpressionWithTypeArguments", {
- aliases: ["TSType"],
- visitor: ["expression", "typeParameters"],
- fields: {
- expression: (0, _utils.validateType)("TSEntityName"),
- typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
- }
-});
-(0, _utils.default)("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")
- }
-});
-(0, _utils.default)("TSInterfaceBody", {
- visitor: ["body"],
- fields: {
- body: (0, _utils.validateArrayOfType)("TSTypeElement")
- }
-});
-(0, _utils.default)("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")
- }
-});
-(0, _utils.default)("TSAsExpression", {
- aliases: ["Expression"],
- visitor: ["expression", "typeAnnotation"],
- fields: {
- expression: (0, _utils.validateType)("Expression"),
- typeAnnotation: (0, _utils.validateType)("TSType")
- }
-});
-(0, _utils.default)("TSTypeAssertion", {
- aliases: ["Expression"],
- visitor: ["typeAnnotation", "expression"],
- fields: {
- typeAnnotation: (0, _utils.validateType)("TSType"),
- expression: (0, _utils.validateType)("Expression")
- }
-});
-(0, _utils.default)("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")
- }
-});
-(0, _utils.default)("TSEnumMember", {
- visitor: ["id", "initializer"],
- fields: {
- id: (0, _utils.validateType)(["Identifier", "StringLiteral"]),
- initializer: (0, _utils.validateOptionalType)("Expression")
- }
-});
-(0, _utils.default)("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"])
- }
-});
-(0, _utils.default)("TSModuleBlock", {
- aliases: ["Scopable", "Block", "BlockParent"],
- visitor: ["body"],
- fields: {
- body: (0, _utils.validateArrayOfType)("Statement")
- }
-});
-(0, _utils.default)("TSImportType", {
- aliases: ["TSType"],
- visitor: ["argument", "qualifier", "typeParameters"],
- fields: {
- argument: (0, _utils.validateType)("StringLiteral"),
- qualifier: (0, _utils.validateOptionalType)("TSEntityName"),
- typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
- }
-});
-(0, _utils.default)("TSImportEqualsDeclaration", {
- aliases: ["Statement"],
- visitor: ["id", "moduleReference"],
- fields: {
- isExport: (0, _utils.validate)(bool),
- id: (0, _utils.validateType)("Identifier"),
- moduleReference: (0, _utils.validateType)(["TSEntityName", "TSExternalModuleReference"])
- }
-});
-(0, _utils.default)("TSExternalModuleReference", {
- visitor: ["expression"],
- fields: {
- expression: (0, _utils.validateType)("StringLiteral")
- }
-});
-(0, _utils.default)("TSNonNullExpression", {
- aliases: ["Expression"],
- visitor: ["expression"],
- fields: {
- expression: (0, _utils.validateType)("Expression")
- }
-});
-(0, _utils.default)("TSExportAssignment", {
- aliases: ["Statement"],
- visitor: ["expression"],
- fields: {
- expression: (0, _utils.validateType)("Expression")
- }
-});
-(0, _utils.default)("TSNamespaceExportDeclaration", {
- aliases: ["Statement"],
- visitor: ["id"],
- fields: {
- id: (0, _utils.validateType)("Identifier")
- }
-});
-(0, _utils.default)("TSTypeAnnotation", {
- visitor: ["typeAnnotation"],
- fields: {
- typeAnnotation: {
- validate: (0, _utils.assertNodeType)("TSType")
- }
- }
-});
-(0, _utils.default)("TSTypeParameterInstantiation", {
- visitor: ["params"],
- fields: {
- params: {
- validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSType")))
- }
- }
-});
-(0, _utils.default)("TSTypeParameterDeclaration", {
- visitor: ["params"],
- fields: {
- params: {
- validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSTypeParameter")))
- }
- }
-});
-(0, _utils.default)("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/assets/node_modules/@babel/types/lib/definitions/utils.js b/assets/node_modules/@babel/types/lib/definitions/utils.js
deleted file mode 100644
index a32e160..0000000
--- a/assets/node_modules/@babel/types/lib/definitions/utils.js
+++ /dev/null
@@ -1,282 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.validate = validate;
-exports.typeIs = typeIs;
-exports.validateType = validateType;
-exports.validateOptional = validateOptional;
-exports.validateOptionalType = validateOptionalType;
-exports.arrayOf = arrayOf;
-exports.arrayOfType = arrayOfType;
-exports.validateArrayOfType = validateArrayOfType;
-exports.assertEach = assertEach;
-exports.assertOneOf = assertOneOf;
-exports.assertNodeType = assertNodeType;
-exports.assertNodeOrValueType = assertNodeOrValueType;
-exports.assertValueType = assertValueType;
-exports.assertShape = assertShape;
-exports.chain = chain;
-exports.default = defineType;
-exports.NODE_PARENT_VALIDATIONS = exports.DEPRECATED_KEYS = exports.BUILDER_KEYS = exports.NODE_FIELDS = exports.FLIPPED_ALIAS_KEYS = exports.ALIAS_KEYS = exports.VISITOR_KEYS = void 0;
-
-var _is = _interopRequireDefault(require("../validators/is"));
-
-var _validate = require("../validators/validate");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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 && 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 && 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 chain(...fns) {
- function validate(...args) {
- for (const fn of fns) {
- fn(...args);
- }
- }
-
- validate.chainOf = fns;
- return validate;
-}
-
-const validTypeOpts = ["aliases", "builder", "deprecatedAlias", "fields", "inherits", "visitor", "validate"];
-const validFieldKeys = ["default", "optional", "validate"];
-
-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];
- fields[key] = {
- default: field.default,
- 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/assets/node_modules/@babel/types/lib/index.d.ts b/assets/node_modules/@babel/types/lib/index.d.ts
deleted file mode 100644
index 60f0911..0000000
--- a/assets/node_modules/@babel/types/lib/index.d.ts
+++ /dev/null
@@ -1,2531 +0,0 @@
-// NOTE: This file is autogenerated. Do not modify.
-// See packages/babel-types/scripts/generators/typescript.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"];
-}
-
-export type Node = AnyTypeAnnotation | ArgumentPlaceholder | ArrayExpression | ArrayPattern | ArrayTypeAnnotation | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BigIntLiteral | Binary | BinaryExpression | BindExpression | Block | BlockParent | BlockStatement | BooleanLiteral | BooleanLiteralTypeAnnotation | BooleanTypeAnnotation | BreakStatement | CallExpression | CatchClause | Class | ClassBody | ClassDeclaration | ClassExpression | ClassImplements | ClassMethod | ClassPrivateMethod | ClassPrivateProperty | ClassProperty | CompletionStatement | Conditional | ConditionalExpression | ContinueStatement | DebuggerStatement | Declaration | DeclareClass | DeclareExportAllDeclaration | DeclareExportDeclaration | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareOpaqueType | DeclareTypeAlias | DeclareVariable | DeclaredPredicate | Decorator | Directive | DirectiveLiteral | DoExpression | DoWhileStatement | EmptyStatement | EmptyTypeAnnotation | EnumBody | EnumBooleanBody | EnumBooleanMember | EnumDeclaration | EnumDefaultedMember | EnumMember | EnumNumberBody | EnumNumberMember | EnumStringBody | EnumStringMember | EnumSymbolBody | ExistsTypeAnnotation | ExportAllDeclaration | ExportDeclaration | ExportDefaultDeclaration | ExportDefaultSpecifier | ExportNamedDeclaration | ExportNamespaceSpecifier | ExportSpecifier | Expression | ExpressionStatement | ExpressionWrapper | File | Flow | FlowBaseAnnotation | FlowDeclaration | FlowPredicate | FlowType | For | ForInStatement | ForOfStatement | ForStatement | ForXStatement | Function | FunctionDeclaration | FunctionExpression | FunctionParent | FunctionTypeAnnotation | FunctionTypeParam | GenericTypeAnnotation | Identifier | IfStatement | Immutable | Import | ImportDeclaration | ImportDefaultSpecifier | ImportNamespaceSpecifier | ImportSpecifier | InferredPredicate | InterfaceDeclaration | InterfaceExtends | InterfaceTypeAnnotation | InterpreterDirective | IntersectionTypeAnnotation | JSX | JSXAttribute | JSXClosingElement | JSXClosingFragment | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXFragment | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXOpeningFragment | JSXSpreadAttribute | JSXSpreadChild | JSXText | LVal | LabeledStatement | Literal | LogicalExpression | Loop | MemberExpression | MetaProperty | Method | MixedTypeAnnotation | ModuleDeclaration | ModuleSpecifier | NewExpression | Noop | NullLiteral | NullLiteralTypeAnnotation | NullableTypeAnnotation | NumberLiteral | NumberLiteralTypeAnnotation | NumberTypeAnnotation | NumericLiteral | ObjectExpression | ObjectMember | ObjectMethod | ObjectPattern | ObjectProperty | ObjectTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | Pattern | PatternLike | PipelineBareFunction | PipelinePrimaryTopicReference | PipelineTopicExpression | Placeholder | Private | PrivateName | Program | Property | Pureish | QualifiedTypeIdentifier | RegExpLiteral | RegexLiteral | RestElement | RestProperty | ReturnStatement | Scopable | SequenceExpression | SpreadElement | SpreadProperty | Statement | StringLiteral | StringLiteralTypeAnnotation | StringTypeAnnotation | Super | SwitchCase | SwitchStatement | TSAnyKeyword | TSArrayType | TSAsExpression | TSBigIntKeyword | TSBooleanKeyword | TSCallSignatureDeclaration | TSConditionalType | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSEntityName | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSExpressionWithTypeArguments | TSExternalModuleReference | TSFunctionType | TSImportEqualsDeclaration | TSImportType | TSIndexSignature | TSIndexedAccessType | TSInferType | TSInterfaceBody | TSInterfaceDeclaration | TSIntersectionType | TSLiteralType | TSMappedType | TSMethodSignature | TSModuleBlock | TSModuleDeclaration | TSNamespaceExportDeclaration | TSNeverKeyword | TSNonNullExpression | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSOptionalType | TSParameterProperty | TSParenthesizedType | TSPropertySignature | TSQualifiedName | TSRestType | TSStringKeyword | TSSymbolKeyword | TSThisType | TSTupleType | TSType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeElement | TSTypeLiteral | TSTypeOperator | TSTypeParameter | TSTypeParameterDeclaration | TSTypeParameterInstantiation | TSTypePredicate | TSTypeQuery | TSTypeReference | TSUndefinedKeyword | TSUnionType | TSUnknownKeyword | TSVoidKeyword | TaggedTemplateExpression | TemplateElement | TemplateLiteral | Terminatorless | ThisExpression | ThisTypeAnnotation | ThrowStatement | TryStatement | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeCastExpression | TypeParameter | TypeParameterDeclaration | TypeParameterInstantiation | TypeofTypeAnnotation | UnaryExpression | UnaryLike | UnionTypeAnnotation | UpdateExpression | UserWhitespacable | V8IntrinsicIdentifier | VariableDeclaration | VariableDeclarator | Variance | VoidTypeAnnotation | While | WhileStatement | WithStatement | YieldExpression;
-
-export interface ArrayExpression extends BaseNode {
- type: "ArrayExpression";
- elements: Array<null | Expression | SpreadElement>;
-}
-
-export interface AssignmentExpression extends BaseNode {
- type: "AssignmentExpression";
- operator: string;
- left: LVal;
- right: Expression;
-}
-
-export interface BinaryExpression extends BaseNode {
- type: "BinaryExpression";
- operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<=";
- left: Expression;
- right: Expression;
-}
-
-export interface InterpreterDirective extends BaseNode {
- type: "InterpreterDirective";
- value: string;
-}
-
-export interface Directive extends BaseNode {
- type: "Directive";
- value: DirectiveLiteral;
-}
-
-export interface DirectiveLiteral extends BaseNode {
- type: "DirectiveLiteral";
- value: string;
-}
-
-export interface BlockStatement extends BaseNode {
- type: "BlockStatement";
- body: Array<Statement>;
- directives: Array<Directive>;
-}
-
-export interface BreakStatement extends BaseNode {
- type: "BreakStatement";
- label: Identifier | null;
-}
-
-export interface CallExpression extends BaseNode {
- type: "CallExpression";
- callee: Expression | V8IntrinsicIdentifier;
- arguments: Array<Expression | SpreadElement | JSXNamespacedName | ArgumentPlaceholder>;
- optional: true | false | null;
- typeArguments: TypeParameterInstantiation | null;
- typeParameters: TSTypeParameterInstantiation | null;
-}
-
-export interface CatchClause extends BaseNode {
- type: "CatchClause";
- param: Identifier | ArrayPattern | ObjectPattern | null;
- body: BlockStatement;
-}
-
-export interface ConditionalExpression extends BaseNode {
- type: "ConditionalExpression";
- test: Expression;
- consequent: Expression;
- alternate: Expression;
-}
-
-export interface ContinueStatement extends BaseNode {
- type: "ContinueStatement";
- label: Identifier | null;
-}
-
-export interface DebuggerStatement extends BaseNode {
- type: "DebuggerStatement";
-}
-
-export interface DoWhileStatement extends BaseNode {
- type: "DoWhileStatement";
- test: Expression;
- body: Statement;
-}
-
-export interface EmptyStatement extends BaseNode {
- type: "EmptyStatement";
-}
-
-export interface ExpressionStatement extends BaseNode {
- type: "ExpressionStatement";
- expression: Expression;
-}
-
-export interface File extends BaseNode {
- type: "File";
- program: Program;
- comments: any;
- tokens: any;
-}
-
-export interface ForInStatement extends BaseNode {
- type: "ForInStatement";
- left: VariableDeclaration | LVal;
- right: Expression;
- body: Statement;
-}
-
-export interface ForStatement extends BaseNode {
- type: "ForStatement";
- init: VariableDeclaration | Expression | null;
- test: Expression | null;
- update: Expression | null;
- body: Statement;
-}
-
-export interface FunctionDeclaration extends BaseNode {
- type: "FunctionDeclaration";
- id: Identifier | null;
- params: Array<Identifier | Pattern | RestElement | TSParameterProperty>;
- body: BlockStatement;
- generator: boolean;
- async: boolean;
- declare: boolean | null;
- returnType: TypeAnnotation | TSTypeAnnotation | Noop | null;
- typeParameters: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
-}
-
-export interface FunctionExpression extends BaseNode {
- type: "FunctionExpression";
- id: Identifier | null;
- params: Array<Identifier | Pattern | RestElement | TSParameterProperty>;
- body: BlockStatement;
- generator: boolean;
- async: boolean;
- returnType: TypeAnnotation | TSTypeAnnotation | Noop | null;
- typeParameters: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
-}
-
-export interface Identifier extends BaseNode {
- type: "Identifier";
- name: any;
- decorators: Array<Decorator> | null;
- optional: boolean | null;
- typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
-}
-
-export interface IfStatement extends BaseNode {
- type: "IfStatement";
- test: Expression;
- consequent: Statement;
- alternate: Statement | null;
-}
-
-export interface LabeledStatement extends BaseNode {
- type: "LabeledStatement";
- label: Identifier;
- body: Statement;
-}
-
-export interface StringLiteral extends BaseNode {
- type: "StringLiteral";
- value: string;
-}
-
-export interface NumericLiteral extends BaseNode {
- type: "NumericLiteral";
- value: number;
-}
-
-export interface NullLiteral extends BaseNode {
- type: "NullLiteral";
-}
-
-export interface BooleanLiteral extends BaseNode {
- type: "BooleanLiteral";
- value: boolean;
-}
-
-export interface RegExpLiteral extends BaseNode {
- type: "RegExpLiteral";
- pattern: string;
- flags: any;
-}
-
-export interface LogicalExpression extends BaseNode {
- type: "LogicalExpression";
- operator: "||" | "&&" | "??";
- left: Expression;
- right: Expression;
-}
-
-export interface MemberExpression extends BaseNode {
- type: "MemberExpression";
- object: Expression;
- property: any;
- computed: boolean;
- optional: true | false | null;
-}
-
-export interface NewExpression extends BaseNode {
- type: "NewExpression";
- callee: Expression | V8IntrinsicIdentifier;
- arguments: Array<Expression | SpreadElement | JSXNamespacedName | ArgumentPlaceholder>;
- optional: true | false | null;
- typeArguments: TypeParameterInstantiation | null;
- typeParameters: TSTypeParameterInstantiation | null;
-}
-
-export interface Program extends BaseNode {
- type: "Program";
- body: Array<Statement>;
- directives: Array<Directive>;
- sourceType: "script" | "module";
- interpreter: InterpreterDirective | null;
- sourceFile: string;
-}
-
-export interface ObjectExpression extends BaseNode {
- type: "ObjectExpression";
- properties: Array<ObjectMethod | ObjectProperty | SpreadElement>;
-}
-
-export interface ObjectMethod extends BaseNode {
- type: "ObjectMethod";
- kind: "method" | "get" | "set";
- key: any;
- params: Array<Identifier | Pattern | RestElement | TSParameterProperty>;
- body: BlockStatement;
- computed: boolean;
- generator: boolean;
- async: boolean;
- decorators: Array<Decorator> | null;
- returnType: TypeAnnotation | TSTypeAnnotation | Noop | null;
- typeParameters: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
-}
-
-export interface ObjectProperty extends BaseNode {
- type: "ObjectProperty";
- key: any;
- value: Expression | PatternLike;
- computed: boolean;
- shorthand: any;
- decorators: Array<Decorator> | null;
-}
-
-export interface RestElement extends BaseNode {
- type: "RestElement";
- argument: LVal;
- decorators: Array<Decorator> | null;
- typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
-}
-
-export interface ReturnStatement extends BaseNode {
- type: "ReturnStatement";
- argument: Expression | null;
-}
-
-export interface SequenceExpression extends BaseNode {
- type: "SequenceExpression";
- expressions: Array<Expression>;
-}
-
-export interface ParenthesizedExpression extends BaseNode {
- type: "ParenthesizedExpression";
- expression: Expression;
-}
-
-export interface SwitchCase extends BaseNode {
- type: "SwitchCase";
- test: Expression | null;
- consequent: Array<Statement>;
-}
-
-export interface SwitchStatement extends BaseNode {
- type: "SwitchStatement";
- discriminant: Expression;
- cases: Array<SwitchCase>;
-}
-
-export interface ThisExpression extends BaseNode {
- type: "ThisExpression";
-}
-
-export interface ThrowStatement extends BaseNode {
- type: "ThrowStatement";
- argument: Expression;
-}
-
-export interface TryStatement extends BaseNode {
- type: "TryStatement";
- block: any;
- handler: CatchClause | null;
- finalizer: BlockStatement | null;
-}
-
-export interface UnaryExpression extends BaseNode {
- type: "UnaryExpression";
- operator: "void" | "throw" | "delete" | "!" | "+" | "-" | "~" | "typeof";
- argument: Expression;
- prefix: boolean;
-}
-
-export interface UpdateExpression extends BaseNode {
- type: "UpdateExpression";
- operator: "++" | "--";
- argument: Expression;
- prefix: boolean;
-}
-
-export interface VariableDeclaration extends BaseNode {
- type: "VariableDeclaration";
- kind: "var" | "let" | "const";
- declarations: Array<VariableDeclarator>;
- declare: boolean | null;
-}
-
-export interface VariableDeclarator extends BaseNode {
- type: "VariableDeclarator";
- id: LVal;
- init: Expression | null;
- definite: boolean | null;
-}
-
-export interface WhileStatement extends BaseNode {
- type: "WhileStatement";
- test: Expression;
- body: Statement;
-}
-
-export interface WithStatement extends BaseNode {
- type: "WithStatement";
- object: Expression;
- body: Statement;
-}
-
-export interface AssignmentPattern extends BaseNode {
- type: "AssignmentPattern";
- left: Identifier | ObjectPattern | ArrayPattern | MemberExpression;
- right: Expression;
- decorators: Array<Decorator> | null;
- typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
-}
-
-export interface ArrayPattern extends BaseNode {
- type: "ArrayPattern";
- elements: Array<null | PatternLike>;
- decorators: Array<Decorator> | null;
- typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
-}
-
-export interface ArrowFunctionExpression extends BaseNode {
- type: "ArrowFunctionExpression";
- params: Array<Identifier | Pattern | RestElement | TSParameterProperty>;
- body: BlockStatement | Expression;
- async: boolean;
- expression: boolean;
- generator: boolean;
- returnType: TypeAnnotation | TSTypeAnnotation | Noop | null;
- typeParameters: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
-}
-
-export interface ClassBody extends BaseNode {
- type: "ClassBody";
- body: Array<ClassMethod | ClassPrivateMethod | ClassProperty | ClassPrivateProperty | TSDeclareMethod | TSIndexSignature>;
-}
-
-export interface ClassExpression extends BaseNode {
- type: "ClassExpression";
- id: Identifier | null;
- superClass: Expression | null;
- body: ClassBody;
- decorators: Array<Decorator> | null;
- implements: Array<TSExpressionWithTypeArguments | ClassImplements> | null;
- mixins: any;
- superTypeParameters: TypeParameterInstantiation | TSTypeParameterInstantiation | null;
- typeParameters: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
-}
-
-export interface ClassDeclaration extends BaseNode {
- type: "ClassDeclaration";
- id: any;
- superClass: any;
- body: any;
- decorators: any;
- abstract: boolean | null;
- declare: boolean | null;
- implements: any;
- mixins: any;
- superTypeParameters: any;
- typeParameters: any;
-}
-
-export interface ExportAllDeclaration extends BaseNode {
- type: "ExportAllDeclaration";
- source: StringLiteral;
-}
-
-export interface ExportDefaultDeclaration extends BaseNode {
- type: "ExportDefaultDeclaration";
- declaration: FunctionDeclaration | TSDeclareFunction | ClassDeclaration | Expression;
-}
-
-export interface ExportNamedDeclaration extends BaseNode {
- type: "ExportNamedDeclaration";
- declaration: any | null;
- specifiers: Array<ExportSpecifier | ExportDefaultSpecifier | ExportNamespaceSpecifier>;
- source: StringLiteral | null;
- exportKind: "type" | "value" | null;
-}
-
-export interface ExportSpecifier extends BaseNode {
- type: "ExportSpecifier";
- local: Identifier;
- exported: Identifier;
-}
-
-export interface ForOfStatement extends BaseNode {
- type: "ForOfStatement";
- left: VariableDeclaration | LVal;
- right: Expression;
- body: Statement;
- await: boolean;
-}
-
-export interface ImportDeclaration extends BaseNode {
- type: "ImportDeclaration";
- specifiers: Array<ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier>;
- source: StringLiteral;
- importKind: "type" | "typeof" | "value" | null;
-}
-
-export interface ImportDefaultSpecifier extends BaseNode {
- type: "ImportDefaultSpecifier";
- local: Identifier;
-}
-
-export interface ImportNamespaceSpecifier extends BaseNode {
- type: "ImportNamespaceSpecifier";
- local: Identifier;
-}
-
-export interface ImportSpecifier extends BaseNode {
- type: "ImportSpecifier";
- local: Identifier;
- imported: Identifier;
- importKind: "type" | "typeof" | null;
-}
-
-export interface MetaProperty extends BaseNode {
- type: "MetaProperty";
- meta: any;
- property: Identifier;
-}
-
-export interface ClassMethod extends BaseNode {
- type: "ClassMethod";
- kind: "get" | "set" | "method" | "constructor";
- key: Identifier | StringLiteral | NumericLiteral | Expression;
- params: Array<Identifier | Pattern | RestElement | TSParameterProperty>;
- body: BlockStatement;
- computed: boolean;
- static: boolean;
- generator: boolean;
- async: boolean;
- abstract: boolean | null;
- access: "public" | "private" | "protected" | null;
- accessibility: "public" | "private" | "protected" | null;
- decorators: Array<Decorator> | null;
- optional: boolean | null;
- returnType: TypeAnnotation | TSTypeAnnotation | Noop | null;
- typeParameters: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
-}
-
-export interface ObjectPattern extends BaseNode {
- type: "ObjectPattern";
- properties: Array<RestElement | ObjectProperty>;
- decorators: Array<Decorator> | null;
- typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
-}
-
-export interface SpreadElement extends BaseNode {
- type: "SpreadElement";
- argument: Expression;
-}
-
-export interface Super extends BaseNode {
- type: "Super";
-}
-
-export interface TaggedTemplateExpression extends BaseNode {
- type: "TaggedTemplateExpression";
- tag: Expression;
- quasi: TemplateLiteral;
- typeParameters: TypeParameterInstantiation | TSTypeParameterInstantiation | null;
-}
-
-export interface TemplateElement extends BaseNode {
- type: "TemplateElement";
- value: { raw: string, cooked?: string };
- tail: boolean;
-}
-
-export interface TemplateLiteral extends BaseNode {
- type: "TemplateLiteral";
- quasis: Array<TemplateElement>;
- expressions: Array<Expression>;
-}
-
-export interface YieldExpression extends BaseNode {
- type: "YieldExpression";
- argument: Expression | null;
- delegate: any;
-}
-
-export interface AnyTypeAnnotation extends BaseNode {
- type: "AnyTypeAnnotation";
-}
-
-export interface ArrayTypeAnnotation extends BaseNode {
- type: "ArrayTypeAnnotation";
- elementType: FlowType;
-}
-
-export interface BooleanTypeAnnotation extends BaseNode {
- type: "BooleanTypeAnnotation";
-}
-
-export interface BooleanLiteralTypeAnnotation extends BaseNode {
- type: "BooleanLiteralTypeAnnotation";
- value: boolean;
-}
-
-export interface NullLiteralTypeAnnotation extends BaseNode {
- type: "NullLiteralTypeAnnotation";
-}
-
-export interface ClassImplements extends BaseNode {
- type: "ClassImplements";
- id: Identifier;
- typeParameters: TypeParameterInstantiation | null;
-}
-
-export interface DeclareClass extends BaseNode {
- type: "DeclareClass";
- id: Identifier;
- typeParameters: TypeParameterDeclaration | null;
- extends: Array<InterfaceExtends> | null;
- body: ObjectTypeAnnotation;
- implements: Array<ClassImplements> | null;
- mixins: Array<InterfaceExtends> | null;
-}
-
-export interface DeclareFunction extends BaseNode {
- type: "DeclareFunction";
- id: Identifier;
- predicate: DeclaredPredicate | null;
-}
-
-export interface DeclareInterface extends BaseNode {
- type: "DeclareInterface";
- id: Identifier;
- typeParameters: TypeParameterDeclaration | null;
- extends: Array<InterfaceExtends> | null;
- body: ObjectTypeAnnotation;
- implements: Array<ClassImplements> | null;
- mixins: Array<InterfaceExtends> | null;
-}
-
-export interface DeclareModule extends BaseNode {
- type: "DeclareModule";
- id: Identifier | StringLiteral;
- body: BlockStatement;
- kind: "CommonJS" | "ES" | null;
-}
-
-export interface DeclareModuleExports extends BaseNode {
- type: "DeclareModuleExports";
- typeAnnotation: TypeAnnotation;
-}
-
-export interface DeclareTypeAlias extends BaseNode {
- type: "DeclareTypeAlias";
- id: Identifier;
- typeParameters: TypeParameterDeclaration | null;
- right: FlowType;
-}
-
-export interface DeclareOpaqueType extends BaseNode {
- type: "DeclareOpaqueType";
- id: Identifier;
- typeParameters: TypeParameterDeclaration | null;
- supertype: FlowType | null;
-}
-
-export interface DeclareVariable extends BaseNode {
- type: "DeclareVariable";
- id: Identifier;
-}
-
-export interface DeclareExportDeclaration extends BaseNode {
- type: "DeclareExportDeclaration";
- declaration: Flow | null;
- specifiers: Array<ExportSpecifier | ExportNamespaceSpecifier> | null;
- source: StringLiteral | null;
- default: boolean | null;
-}
-
-export interface DeclareExportAllDeclaration extends BaseNode {
- type: "DeclareExportAllDeclaration";
- source: StringLiteral;
- exportKind: "type" | "value" | null;
-}
-
-export interface DeclaredPredicate extends BaseNode {
- type: "DeclaredPredicate";
- value: Flow;
-}
-
-export interface ExistsTypeAnnotation extends BaseNode {
- type: "ExistsTypeAnnotation";
-}
-
-export interface FunctionTypeAnnotation extends BaseNode {
- type: "FunctionTypeAnnotation";
- typeParameters: TypeParameterDeclaration | null;
- params: Array<FunctionTypeParam>;
- rest: FunctionTypeParam | null;
- returnType: FlowType;
-}
-
-export interface FunctionTypeParam extends BaseNode {
- type: "FunctionTypeParam";
- name: Identifier | null;
- typeAnnotation: FlowType;
- optional: boolean | null;
-}
-
-export interface GenericTypeAnnotation extends BaseNode {
- type: "GenericTypeAnnotation";
- id: Identifier | QualifiedTypeIdentifier;
- typeParameters: TypeParameterInstantiation | null;
-}
-
-export interface InferredPredicate extends BaseNode {
- type: "InferredPredicate";
-}
-
-export interface InterfaceExtends extends BaseNode {
- type: "InterfaceExtends";
- id: Identifier | QualifiedTypeIdentifier;
- typeParameters: TypeParameterInstantiation | null;
-}
-
-export interface InterfaceDeclaration extends BaseNode {
- type: "InterfaceDeclaration";
- id: Identifier;
- typeParameters: TypeParameterDeclaration | null;
- extends: Array<InterfaceExtends> | null;
- body: ObjectTypeAnnotation;
- implements: Array<ClassImplements> | null;
- mixins: Array<InterfaceExtends> | null;
-}
-
-export interface InterfaceTypeAnnotation extends BaseNode {
- type: "InterfaceTypeAnnotation";
- extends: Array<InterfaceExtends> | null;
- body: ObjectTypeAnnotation;
-}
-
-export interface IntersectionTypeAnnotation extends BaseNode {
- type: "IntersectionTypeAnnotation";
- types: Array<FlowType>;
-}
-
-export interface MixedTypeAnnotation extends BaseNode {
- type: "MixedTypeAnnotation";
-}
-
-export interface EmptyTypeAnnotation extends BaseNode {
- type: "EmptyTypeAnnotation";
-}
-
-export interface NullableTypeAnnotation extends BaseNode {
- type: "NullableTypeAnnotation";
- typeAnnotation: FlowType;
-}
-
-export interface NumberLiteralTypeAnnotation extends BaseNode {
- type: "NumberLiteralTypeAnnotation";
- value: number;
-}
-
-export interface NumberTypeAnnotation extends BaseNode {
- type: "NumberTypeAnnotation";
-}
-
-export interface ObjectTypeAnnotation extends BaseNode {
- type: "ObjectTypeAnnotation";
- properties: Array<ObjectTypeProperty | ObjectTypeSpreadProperty>;
- indexers: Array<ObjectTypeIndexer> | null;
- callProperties: Array<ObjectTypeCallProperty> | null;
- internalSlots: Array<ObjectTypeInternalSlot> | null;
- exact: boolean;
- inexact: boolean | null;
-}
-
-export interface ObjectTypeInternalSlot extends BaseNode {
- type: "ObjectTypeInternalSlot";
- id: Identifier;
- value: FlowType;
- optional: boolean;
- static: boolean;
- method: boolean;
-}
-
-export interface ObjectTypeCallProperty extends BaseNode {
- type: "ObjectTypeCallProperty";
- value: FlowType;
- static: boolean;
-}
-
-export interface ObjectTypeIndexer extends BaseNode {
- type: "ObjectTypeIndexer";
- id: Identifier | null;
- key: FlowType;
- value: FlowType;
- variance: Variance | null;
- static: boolean;
-}
-
-export interface ObjectTypeProperty extends BaseNode {
- type: "ObjectTypeProperty";
- key: Identifier | StringLiteral;
- value: FlowType;
- variance: Variance | null;
- kind: "init" | "get" | "set";
- optional: boolean;
- proto: boolean;
- static: boolean;
-}
-
-export interface ObjectTypeSpreadProperty extends BaseNode {
- type: "ObjectTypeSpreadProperty";
- argument: FlowType;
-}
-
-export interface OpaqueType extends BaseNode {
- type: "OpaqueType";
- id: Identifier;
- typeParameters: TypeParameterDeclaration | null;
- supertype: FlowType | null;
- impltype: FlowType;
-}
-
-export interface QualifiedTypeIdentifier extends BaseNode {
- type: "QualifiedTypeIdentifier";
- id: Identifier;
- qualification: Identifier | QualifiedTypeIdentifier;
-}
-
-export interface StringLiteralTypeAnnotation extends BaseNode {
- type: "StringLiteralTypeAnnotation";
- value: string;
-}
-
-export interface StringTypeAnnotation extends BaseNode {
- type: "StringTypeAnnotation";
-}
-
-export interface ThisTypeAnnotation extends BaseNode {
- type: "ThisTypeAnnotation";
-}
-
-export interface TupleTypeAnnotation extends BaseNode {
- type: "TupleTypeAnnotation";
- types: Array<FlowType>;
-}
-
-export interface TypeofTypeAnnotation extends BaseNode {
- type: "TypeofTypeAnnotation";
- argument: FlowType;
-}
-
-export interface TypeAlias extends BaseNode {
- type: "TypeAlias";
- id: Identifier;
- typeParameters: TypeParameterDeclaration | null;
- right: FlowType;
-}
-
-export interface TypeAnnotation extends BaseNode {
- type: "TypeAnnotation";
- typeAnnotation: FlowType;
-}
-
-export interface TypeCastExpression extends BaseNode {
- type: "TypeCastExpression";
- expression: Expression;
- typeAnnotation: TypeAnnotation;
-}
-
-export interface TypeParameter extends BaseNode {
- type: "TypeParameter";
- bound: TypeAnnotation | null;
- default: FlowType | null;
- variance: Variance | null;
- name: string;
-}
-
-export interface TypeParameterDeclaration extends BaseNode {
- type: "TypeParameterDeclaration";
- params: Array<TypeParameter>;
-}
-
-export interface TypeParameterInstantiation extends BaseNode {
- type: "TypeParameterInstantiation";
- params: Array<FlowType>;
-}
-
-export interface UnionTypeAnnotation extends BaseNode {
- type: "UnionTypeAnnotation";
- types: Array<FlowType>;
-}
-
-export interface Variance extends BaseNode {
- type: "Variance";
- kind: "minus" | "plus";
-}
-
-export interface VoidTypeAnnotation extends BaseNode {
- type: "VoidTypeAnnotation";
-}
-
-export interface EnumDeclaration extends BaseNode {
- type: "EnumDeclaration";
- id: Identifier;
- body: EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody;
-}
-
-export interface EnumBooleanBody extends BaseNode {
- type: "EnumBooleanBody";
- members: Array<EnumBooleanMember>;
- explicit: boolean;
-}
-
-export interface EnumNumberBody extends BaseNode {
- type: "EnumNumberBody";
- members: Array<EnumNumberMember>;
- explicit: boolean;
-}
-
-export interface EnumStringBody extends BaseNode {
- type: "EnumStringBody";
- members: Array<EnumStringMember | EnumDefaultedMember>;
- explicit: boolean;
-}
-
-export interface EnumSymbolBody extends BaseNode {
- type: "EnumSymbolBody";
- members: Array<EnumDefaultedMember>;
-}
-
-export interface EnumBooleanMember extends BaseNode {
- type: "EnumBooleanMember";
- id: Identifier;
- init: BooleanLiteral;
-}
-
-export interface EnumNumberMember extends BaseNode {
- type: "EnumNumberMember";
- id: Identifier;
- init: NumericLiteral;
-}
-
-export interface EnumStringMember extends BaseNode {
- type: "EnumStringMember";
- id: Identifier;
- init: StringLiteral;
-}
-
-export interface EnumDefaultedMember extends BaseNode {
- type: "EnumDefaultedMember";
- id: Identifier;
-}
-
-export interface JSXAttribute extends BaseNode {
- type: "JSXAttribute";
- name: JSXIdentifier | JSXNamespacedName;
- value: JSXElement | JSXFragment | StringLiteral | JSXExpressionContainer | null;
-}
-
-export interface JSXClosingElement extends BaseNode {
- type: "JSXClosingElement";
- name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName;
-}
-
-export interface JSXElement extends BaseNode {
- type: "JSXElement";
- openingElement: JSXOpeningElement;
- closingElement: JSXClosingElement | null;
- children: Array<JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment>;
- selfClosing: any;
-}
-
-export interface JSXEmptyExpression extends BaseNode {
- type: "JSXEmptyExpression";
-}
-
-export interface JSXExpressionContainer extends BaseNode {
- type: "JSXExpressionContainer";
- expression: Expression | JSXEmptyExpression;
-}
-
-export interface JSXSpreadChild extends BaseNode {
- type: "JSXSpreadChild";
- expression: Expression;
-}
-
-export interface JSXIdentifier extends BaseNode {
- type: "JSXIdentifier";
- name: string;
-}
-
-export interface JSXMemberExpression extends BaseNode {
- type: "JSXMemberExpression";
- object: JSXMemberExpression | JSXIdentifier;
- property: JSXIdentifier;
-}
-
-export interface JSXNamespacedName extends BaseNode {
- type: "JSXNamespacedName";
- namespace: JSXIdentifier;
- name: JSXIdentifier;
-}
-
-export interface JSXOpeningElement extends BaseNode {
- type: "JSXOpeningElement";
- name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName;
- attributes: Array<JSXAttribute | JSXSpreadAttribute>;
- selfClosing: boolean;
- typeParameters: TypeParameterInstantiation | TSTypeParameterInstantiation | null;
-}
-
-export interface JSXSpreadAttribute extends BaseNode {
- type: "JSXSpreadAttribute";
- argument: Expression;
-}
-
-export interface JSXText extends BaseNode {
- type: "JSXText";
- value: string;
-}
-
-export interface JSXFragment extends BaseNode {
- type: "JSXFragment";
- openingFragment: JSXOpeningFragment;
- closingFragment: JSXClosingFragment;
- children: Array<JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment>;
-}
-
-export interface JSXOpeningFragment extends BaseNode {
- type: "JSXOpeningFragment";
-}
-
-export interface JSXClosingFragment extends BaseNode {
- type: "JSXClosingFragment";
-}
-
-export interface Noop extends BaseNode {
- type: "Noop";
-}
-
-export interface Placeholder extends BaseNode {
- type: "Placeholder";
- expectedNode: "Identifier" | "StringLiteral" | "Expression" | "Statement" | "Declaration" | "BlockStatement" | "ClassBody" | "Pattern";
- name: Identifier;
-}
-
-export interface V8IntrinsicIdentifier extends BaseNode {
- type: "V8IntrinsicIdentifier";
- name: string;
-}
-
-export interface ArgumentPlaceholder extends BaseNode {
- type: "ArgumentPlaceholder";
-}
-
-export interface AwaitExpression extends BaseNode {
- type: "AwaitExpression";
- argument: Expression;
-}
-
-export interface BindExpression extends BaseNode {
- type: "BindExpression";
- object: any;
- callee: any;
-}
-
-export interface ClassProperty extends BaseNode {
- type: "ClassProperty";
- key: Identifier | StringLiteral | NumericLiteral | Expression;
- value: Expression | null;
- typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
- decorators: Array<Decorator> | null;
- computed: boolean;
- static: boolean;
- abstract: boolean | null;
- accessibility: "public" | "private" | "protected" | null;
- declare: boolean | null;
- definite: boolean | null;
- optional: boolean | null;
- readonly: boolean | null;
-}
-
-export interface OptionalMemberExpression extends BaseNode {
- type: "OptionalMemberExpression";
- object: Expression;
- property: any;
- computed: boolean;
- optional: boolean;
-}
-
-export interface PipelineTopicExpression extends BaseNode {
- type: "PipelineTopicExpression";
- expression: Expression;
-}
-
-export interface PipelineBareFunction extends BaseNode {
- type: "PipelineBareFunction";
- callee: Expression;
-}
-
-export interface PipelinePrimaryTopicReference extends BaseNode {
- type: "PipelinePrimaryTopicReference";
-}
-
-export interface OptionalCallExpression extends BaseNode {
- type: "OptionalCallExpression";
- callee: Expression;
- arguments: Array<Expression | SpreadElement | JSXNamespacedName>;
- optional: boolean;
- typeArguments: TypeParameterInstantiation | null;
- typeParameters: TSTypeParameterInstantiation | null;
-}
-
-export interface ClassPrivateProperty extends BaseNode {
- type: "ClassPrivateProperty";
- key: PrivateName;
- value: Expression | null;
- decorators: Array<Decorator> | null;
-}
-
-export interface ClassPrivateMethod extends BaseNode {
- type: "ClassPrivateMethod";
- kind: "get" | "set" | "method" | "constructor";
- key: PrivateName;
- params: Array<Identifier | Pattern | RestElement | TSParameterProperty>;
- body: BlockStatement;
- static: boolean;
- abstract: boolean | null;
- access: "public" | "private" | "protected" | null;
- accessibility: "public" | "private" | "protected" | null;
- async: boolean;
- computed: boolean;
- decorators: Array<Decorator> | null;
- generator: boolean;
- optional: boolean | null;
- returnType: any;
- typeParameters: any;
-}
-
-export interface Import extends BaseNode {
- type: "Import";
-}
-
-export interface Decorator extends BaseNode {
- type: "Decorator";
- expression: Expression;
-}
-
-export interface DoExpression extends BaseNode {
- type: "DoExpression";
- body: BlockStatement;
-}
-
-export interface ExportDefaultSpecifier extends BaseNode {
- type: "ExportDefaultSpecifier";
- exported: Identifier;
-}
-
-export interface ExportNamespaceSpecifier extends BaseNode {
- type: "ExportNamespaceSpecifier";
- exported: Identifier;
-}
-
-export interface PrivateName extends BaseNode {
- type: "PrivateName";
- id: Identifier;
-}
-
-export interface BigIntLiteral extends BaseNode {
- type: "BigIntLiteral";
- value: string;
-}
-
-export interface TSParameterProperty extends BaseNode {
- type: "TSParameterProperty";
- parameter: Identifier | AssignmentPattern;
- accessibility: "public" | "private" | "protected" | null;
- readonly: boolean | null;
-}
-
-export interface TSDeclareFunction extends BaseNode {
- type: "TSDeclareFunction";
- id: Identifier | null;
- typeParameters: TSTypeParameterDeclaration | Noop | null;
- params: Array<Identifier | Pattern | RestElement | TSParameterProperty>;
- returnType: TSTypeAnnotation | Noop | null;
- async: boolean;
- declare: boolean | null;
- generator: boolean;
-}
-
-export interface TSDeclareMethod extends BaseNode {
- type: "TSDeclareMethod";
- decorators: Array<Decorator> | null;
- key: Identifier | StringLiteral | NumericLiteral | Expression;
- typeParameters: TSTypeParameterDeclaration | Noop | null;
- params: Array<Identifier | Pattern | RestElement | TSParameterProperty>;
- returnType: TSTypeAnnotation | Noop | null;
- abstract: boolean | null;
- access: "public" | "private" | "protected" | null;
- accessibility: "public" | "private" | "protected" | null;
- async: boolean;
- computed: boolean;
- generator: boolean;
- kind: "get" | "set" | "method" | "constructor";
- optional: boolean | null;
- static: boolean;
-}
-
-export interface TSQualifiedName extends BaseNode {
- type: "TSQualifiedName";
- left: TSEntityName;
- right: Identifier;
-}
-
-export interface TSCallSignatureDeclaration extends BaseNode {
- type: "TSCallSignatureDeclaration";
- typeParameters: TSTypeParameterDeclaration | null;
- parameters: Array<Identifier | RestElement>;
- typeAnnotation: TSTypeAnnotation | null;
-}
-
-export interface TSConstructSignatureDeclaration extends BaseNode {
- type: "TSConstructSignatureDeclaration";
- typeParameters: TSTypeParameterDeclaration | null;
- parameters: Array<Identifier | RestElement>;
- typeAnnotation: TSTypeAnnotation | null;
-}
-
-export interface TSPropertySignature extends BaseNode {
- type: "TSPropertySignature";
- key: Expression;
- typeAnnotation: TSTypeAnnotation | null;
- initializer: Expression | null;
- computed: boolean | null;
- optional: boolean | null;
- readonly: boolean | null;
-}
-
-export interface TSMethodSignature extends BaseNode {
- type: "TSMethodSignature";
- key: Expression;
- typeParameters: TSTypeParameterDeclaration | null;
- parameters: Array<Identifier | RestElement>;
- typeAnnotation: TSTypeAnnotation | null;
- computed: boolean | null;
- optional: boolean | null;
-}
-
-export interface TSIndexSignature extends BaseNode {
- type: "TSIndexSignature";
- parameters: Array<Identifier>;
- typeAnnotation: TSTypeAnnotation | null;
- readonly: boolean | null;
-}
-
-export interface TSAnyKeyword extends BaseNode {
- type: "TSAnyKeyword";
-}
-
-export interface TSBooleanKeyword extends BaseNode {
- type: "TSBooleanKeyword";
-}
-
-export interface TSBigIntKeyword extends BaseNode {
- type: "TSBigIntKeyword";
-}
-
-export interface TSNeverKeyword extends BaseNode {
- type: "TSNeverKeyword";
-}
-
-export interface TSNullKeyword extends BaseNode {
- type: "TSNullKeyword";
-}
-
-export interface TSNumberKeyword extends BaseNode {
- type: "TSNumberKeyword";
-}
-
-export interface TSObjectKeyword extends BaseNode {
- type: "TSObjectKeyword";
-}
-
-export interface TSStringKeyword extends BaseNode {
- type: "TSStringKeyword";
-}
-
-export interface TSSymbolKeyword extends BaseNode {
- type: "TSSymbolKeyword";
-}
-
-export interface TSUndefinedKeyword extends BaseNode {
- type: "TSUndefinedKeyword";
-}
-
-export interface TSUnknownKeyword extends BaseNode {
- type: "TSUnknownKeyword";
-}
-
-export interface TSVoidKeyword extends BaseNode {
- type: "TSVoidKeyword";
-}
-
-export interface TSThisType extends BaseNode {
- type: "TSThisType";
-}
-
-export interface TSFunctionType extends BaseNode {
- type: "TSFunctionType";
- typeParameters: TSTypeParameterDeclaration | null;
- parameters: Array<Identifier | RestElement>;
- typeAnnotation: TSTypeAnnotation | null;
-}
-
-export interface TSConstructorType extends BaseNode {
- type: "TSConstructorType";
- typeParameters: TSTypeParameterDeclaration | null;
- parameters: Array<Identifier | RestElement>;
- typeAnnotation: TSTypeAnnotation | null;
-}
-
-export interface TSTypeReference extends BaseNode {
- type: "TSTypeReference";
- typeName: TSEntityName;
- typeParameters: TSTypeParameterInstantiation | null;
-}
-
-export interface TSTypePredicate extends BaseNode {
- type: "TSTypePredicate";
- parameterName: Identifier | TSThisType;
- typeAnnotation: TSTypeAnnotation | null;
- asserts: boolean | null;
-}
-
-export interface TSTypeQuery extends BaseNode {
- type: "TSTypeQuery";
- exprName: TSEntityName | TSImportType;
-}
-
-export interface TSTypeLiteral extends BaseNode {
- type: "TSTypeLiteral";
- members: Array<TSTypeElement>;
-}
-
-export interface TSArrayType extends BaseNode {
- type: "TSArrayType";
- elementType: TSType;
-}
-
-export interface TSTupleType extends BaseNode {
- type: "TSTupleType";
- elementTypes: Array<TSType>;
-}
-
-export interface TSOptionalType extends BaseNode {
- type: "TSOptionalType";
- typeAnnotation: TSType;
-}
-
-export interface TSRestType extends BaseNode {
- type: "TSRestType";
- typeAnnotation: TSType;
-}
-
-export interface TSUnionType extends BaseNode {
- type: "TSUnionType";
- types: Array<TSType>;
-}
-
-export interface TSIntersectionType extends BaseNode {
- type: "TSIntersectionType";
- types: Array<TSType>;
-}
-
-export interface TSConditionalType extends BaseNode {
- type: "TSConditionalType";
- checkType: TSType;
- extendsType: TSType;
- trueType: TSType;
- falseType: TSType;
-}
-
-export interface TSInferType extends BaseNode {
- type: "TSInferType";
- typeParameter: TSTypeParameter;
-}
-
-export interface TSParenthesizedType extends BaseNode {
- type: "TSParenthesizedType";
- typeAnnotation: TSType;
-}
-
-export interface TSTypeOperator extends BaseNode {
- type: "TSTypeOperator";
- typeAnnotation: TSType;
- operator: string;
-}
-
-export interface TSIndexedAccessType extends BaseNode {
- type: "TSIndexedAccessType";
- objectType: TSType;
- indexType: TSType;
-}
-
-export interface TSMappedType extends BaseNode {
- type: "TSMappedType";
- typeParameter: TSTypeParameter;
- typeAnnotation: TSType | null;
- optional: boolean | null;
- readonly: boolean | null;
-}
-
-export interface TSLiteralType extends BaseNode {
- type: "TSLiteralType";
- literal: NumericLiteral | StringLiteral | BooleanLiteral;
-}
-
-export interface TSExpressionWithTypeArguments extends BaseNode {
- type: "TSExpressionWithTypeArguments";
- expression: TSEntityName;
- typeParameters: TSTypeParameterInstantiation | null;
-}
-
-export interface TSInterfaceDeclaration extends BaseNode {
- type: "TSInterfaceDeclaration";
- id: Identifier;
- typeParameters: TSTypeParameterDeclaration | null;
- extends: Array<TSExpressionWithTypeArguments> | null;
- body: TSInterfaceBody;
- declare: boolean | null;
-}
-
-export interface TSInterfaceBody extends BaseNode {
- type: "TSInterfaceBody";
- body: Array<TSTypeElement>;
-}
-
-export interface TSTypeAliasDeclaration extends BaseNode {
- type: "TSTypeAliasDeclaration";
- id: Identifier;
- typeParameters: TSTypeParameterDeclaration | null;
- typeAnnotation: TSType;
- declare: boolean | null;
-}
-
-export interface TSAsExpression extends BaseNode {
- type: "TSAsExpression";
- expression: Expression;
- typeAnnotation: TSType;
-}
-
-export interface TSTypeAssertion extends BaseNode {
- type: "TSTypeAssertion";
- typeAnnotation: TSType;
- expression: Expression;
-}
-
-export interface TSEnumDeclaration extends BaseNode {
- type: "TSEnumDeclaration";
- id: Identifier;
- members: Array<TSEnumMember>;
- const: boolean | null;
- declare: boolean | null;
- initializer: Expression | null;
-}
-
-export interface TSEnumMember extends BaseNode {
- type: "TSEnumMember";
- id: Identifier | StringLiteral;
- initializer: Expression | null;
-}
-
-export interface TSModuleDeclaration extends BaseNode {
- type: "TSModuleDeclaration";
- id: Identifier | StringLiteral;
- body: TSModuleBlock | TSModuleDeclaration;
- declare: boolean | null;
- global: boolean | null;
-}
-
-export interface TSModuleBlock extends BaseNode {
- type: "TSModuleBlock";
- body: Array<Statement>;
-}
-
-export interface TSImportType extends BaseNode {
- type: "TSImportType";
- argument: StringLiteral;
- qualifier: TSEntityName | null;
- typeParameters: TSTypeParameterInstantiation | null;
-}
-
-export interface TSImportEqualsDeclaration extends BaseNode {
- type: "TSImportEqualsDeclaration";
- id: Identifier;
- moduleReference: TSEntityName | TSExternalModuleReference;
- isExport: boolean;
-}
-
-export interface TSExternalModuleReference extends BaseNode {
- type: "TSExternalModuleReference";
- expression: StringLiteral;
-}
-
-export interface TSNonNullExpression extends BaseNode {
- type: "TSNonNullExpression";
- expression: Expression;
-}
-
-export interface TSExportAssignment extends BaseNode {
- type: "TSExportAssignment";
- expression: Expression;
-}
-
-export interface TSNamespaceExportDeclaration extends BaseNode {
- type: "TSNamespaceExportDeclaration";
- id: Identifier;
-}
-
-export interface TSTypeAnnotation extends BaseNode {
- type: "TSTypeAnnotation";
- typeAnnotation: TSType;
-}
-
-export interface TSTypeParameterInstantiation extends BaseNode {
- type: "TSTypeParameterInstantiation";
- params: Array<TSType>;
-}
-
-export interface TSTypeParameterDeclaration extends BaseNode {
- type: "TSTypeParameterDeclaration";
- params: Array<TSTypeParameter>;
-}
-
-export interface TSTypeParameter extends BaseNode {
- type: "TSTypeParameter";
- constraint: TSType | null;
- default: TSType | null;
- name: string;
-}
-
-/**
- * @deprecated Use `NumericLiteral`
- */
-export type NumberLiteral = NumericLiteral;
-
-/**
- * @deprecated Use `RegExpLiteral`
- */
-export type RegexLiteral = RegExpLiteral;
-
-/**
- * @deprecated Use `RestElement`
- */
-export type RestProperty = RestElement;
-
-/**
- * @deprecated Use `SpreadElement`
- */
-export type SpreadProperty = SpreadElement;
-
-export type Expression = ArrayExpression | AssignmentExpression | BinaryExpression | CallExpression | ConditionalExpression | FunctionExpression | Identifier | StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | LogicalExpression | MemberExpression | NewExpression | ObjectExpression | SequenceExpression | ParenthesizedExpression | ThisExpression | UnaryExpression | UpdateExpression | ArrowFunctionExpression | ClassExpression | MetaProperty | Super | TaggedTemplateExpression | TemplateLiteral | YieldExpression | TypeCastExpression | JSXElement | JSXFragment | AwaitExpression | BindExpression | OptionalMemberExpression | PipelinePrimaryTopicReference | OptionalCallExpression | Import | DoExpression | BigIntLiteral | TSAsExpression | TSTypeAssertion | TSNonNullExpression;
-export type Binary = BinaryExpression | LogicalExpression;
-export type Scopable = BlockStatement | CatchClause | DoWhileStatement | ForInStatement | ForStatement | FunctionDeclaration | FunctionExpression | Program | ObjectMethod | SwitchStatement | WhileStatement | ArrowFunctionExpression | ClassExpression | ClassDeclaration | ForOfStatement | ClassMethod | ClassPrivateMethod | TSModuleBlock;
-export type BlockParent = BlockStatement | CatchClause | DoWhileStatement | ForInStatement | ForStatement | FunctionDeclaration | FunctionExpression | Program | ObjectMethod | SwitchStatement | WhileStatement | ArrowFunctionExpression | ForOfStatement | ClassMethod | ClassPrivateMethod | TSModuleBlock;
-export type Block = BlockStatement | Program | TSModuleBlock;
-export type Statement = BlockStatement | BreakStatement | ContinueStatement | DebuggerStatement | DoWhileStatement | EmptyStatement | ExpressionStatement | ForInStatement | ForStatement | FunctionDeclaration | IfStatement | LabeledStatement | ReturnStatement | SwitchStatement | ThrowStatement | TryStatement | VariableDeclaration | WhileStatement | WithStatement | ClassDeclaration | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ForOfStatement | ImportDeclaration | DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | InterfaceDeclaration | OpaqueType | TypeAlias | TSDeclareFunction | TSInterfaceDeclaration | TSTypeAliasDeclaration | TSEnumDeclaration | TSModuleDeclaration | TSImportEqualsDeclaration | TSExportAssignment | TSNamespaceExportDeclaration;
-export type Terminatorless = BreakStatement | ContinueStatement | ReturnStatement | ThrowStatement | YieldExpression | AwaitExpression;
-export type CompletionStatement = BreakStatement | ContinueStatement | ReturnStatement | ThrowStatement;
-export type Conditional = ConditionalExpression | IfStatement;
-export type Loop = DoWhileStatement | ForInStatement | ForStatement | WhileStatement | ForOfStatement;
-export type While = DoWhileStatement | WhileStatement;
-export type ExpressionWrapper = ExpressionStatement | ParenthesizedExpression | TypeCastExpression;
-export type For = ForInStatement | ForStatement | ForOfStatement;
-export type ForXStatement = ForInStatement | ForOfStatement;
-export type Function = FunctionDeclaration | FunctionExpression | ObjectMethod | ArrowFunctionExpression | ClassMethod | ClassPrivateMethod;
-export type FunctionParent = FunctionDeclaration | FunctionExpression | ObjectMethod | ArrowFunctionExpression | ClassMethod | ClassPrivateMethod;
-export type Pureish = FunctionDeclaration | FunctionExpression | StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | ArrowFunctionExpression | ClassExpression | ClassDeclaration | BigIntLiteral;
-export type Declaration = FunctionDeclaration | VariableDeclaration | ClassDeclaration | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ImportDeclaration | DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | InterfaceDeclaration | OpaqueType | TypeAlias | EnumDeclaration | TSDeclareFunction | TSInterfaceDeclaration | TSTypeAliasDeclaration | TSEnumDeclaration | TSModuleDeclaration;
-export type PatternLike = Identifier | RestElement | AssignmentPattern | ArrayPattern | ObjectPattern;
-export type LVal = Identifier | MemberExpression | RestElement | AssignmentPattern | ArrayPattern | ObjectPattern | TSParameterProperty;
-export type TSEntityName = Identifier | TSQualifiedName;
-export type Literal = StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | TemplateLiteral | BigIntLiteral;
-export type Immutable = StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | JSXAttribute | JSXClosingElement | JSXElement | JSXExpressionContainer | JSXSpreadChild | JSXOpeningElement | JSXText | JSXFragment | JSXOpeningFragment | JSXClosingFragment | BigIntLiteral;
-export type UserWhitespacable = ObjectMethod | ObjectProperty | ObjectTypeInternalSlot | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeProperty | ObjectTypeSpreadProperty;
-export type Method = ObjectMethod | ClassMethod | ClassPrivateMethod;
-export type ObjectMember = ObjectMethod | ObjectProperty;
-export type Property = ObjectProperty | ClassProperty | ClassPrivateProperty;
-export type UnaryLike = UnaryExpression | SpreadElement;
-export type Pattern = AssignmentPattern | ArrayPattern | ObjectPattern;
-export type Class = ClassExpression | ClassDeclaration;
-export type ModuleDeclaration = ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ImportDeclaration;
-export type ExportDeclaration = ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration;
-export type ModuleSpecifier = ExportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ImportSpecifier | ExportDefaultSpecifier | ExportNamespaceSpecifier;
-export type Flow = AnyTypeAnnotation | ArrayTypeAnnotation | BooleanTypeAnnotation | BooleanLiteralTypeAnnotation | NullLiteralTypeAnnotation | ClassImplements | DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | DeclaredPredicate | ExistsTypeAnnotation | FunctionTypeAnnotation | FunctionTypeParam | GenericTypeAnnotation | InferredPredicate | InterfaceExtends | InterfaceDeclaration | InterfaceTypeAnnotation | IntersectionTypeAnnotation | MixedTypeAnnotation | EmptyTypeAnnotation | NullableTypeAnnotation | NumberLiteralTypeAnnotation | NumberTypeAnnotation | ObjectTypeAnnotation | ObjectTypeInternalSlot | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | QualifiedTypeIdentifier | StringLiteralTypeAnnotation | StringTypeAnnotation | ThisTypeAnnotation | TupleTypeAnnotation | TypeofTypeAnnotation | TypeAlias | TypeAnnotation | TypeCastExpression | TypeParameter | TypeParameterDeclaration | TypeParameterInstantiation | UnionTypeAnnotation | Variance | VoidTypeAnnotation;
-export type FlowType = AnyTypeAnnotation | ArrayTypeAnnotation | BooleanTypeAnnotation | BooleanLiteralTypeAnnotation | NullLiteralTypeAnnotation | ExistsTypeAnnotation | FunctionTypeAnnotation | GenericTypeAnnotation | InterfaceTypeAnnotation | IntersectionTypeAnnotation | MixedTypeAnnotation | EmptyTypeAnnotation | NullableTypeAnnotation | NumberLiteralTypeAnnotation | NumberTypeAnnotation | ObjectTypeAnnotation | StringLiteralTypeAnnotation | StringTypeAnnotation | ThisTypeAnnotation | TupleTypeAnnotation | TypeofTypeAnnotation | UnionTypeAnnotation | VoidTypeAnnotation;
-export type FlowBaseAnnotation = AnyTypeAnnotation | BooleanTypeAnnotation | NullLiteralTypeAnnotation | MixedTypeAnnotation | EmptyTypeAnnotation | NumberTypeAnnotation | StringTypeAnnotation | ThisTypeAnnotation | VoidTypeAnnotation;
-export type FlowDeclaration = DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | InterfaceDeclaration | OpaqueType | TypeAlias;
-export type FlowPredicate = DeclaredPredicate | InferredPredicate;
-export type EnumBody = EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody;
-export type EnumMember = EnumBooleanMember | EnumNumberMember | EnumStringMember | EnumDefaultedMember;
-export type JSX = JSXAttribute | JSXClosingElement | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXSpreadChild | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXSpreadAttribute | JSXText | JSXFragment | JSXOpeningFragment | JSXClosingFragment;
-export type Private = ClassPrivateProperty | ClassPrivateMethod | PrivateName;
-export type TSTypeElement = TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSPropertySignature | TSMethodSignature | TSIndexSignature;
-export type TSType = TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSFunctionType | TSConstructorType | TSTypeReference | TSTypePredicate | TSTypeQuery | TSTypeLiteral | TSArrayType | TSTupleType | TSOptionalType | TSRestType | TSUnionType | TSIntersectionType | TSConditionalType | TSInferType | TSParenthesizedType | TSTypeOperator | TSIndexedAccessType | TSMappedType | TSLiteralType | TSExpressionWithTypeArguments | TSImportType;
-
-export interface Aliases {
- Expression: Expression;
- Binary: Binary;
- Scopable: Scopable;
- BlockParent: BlockParent;
- Block: Block;
- Statement: Statement;
- Terminatorless: Terminatorless;
- CompletionStatement: CompletionStatement;
- Conditional: Conditional;
- Loop: Loop;
- While: While;
- ExpressionWrapper: ExpressionWrapper;
- For: For;
- ForXStatement: ForXStatement;
- Function: Function;
- FunctionParent: FunctionParent;
- Pureish: Pureish;
- Declaration: Declaration;
- PatternLike: PatternLike;
- LVal: LVal;
- TSEntityName: TSEntityName;
- Literal: Literal;
- Immutable: Immutable;
- UserWhitespacable: UserWhitespacable;
- Method: Method;
- ObjectMember: ObjectMember;
- Property: Property;
- UnaryLike: UnaryLike;
- Pattern: Pattern;
- Class: Class;
- ModuleDeclaration: ModuleDeclaration;
- ExportDeclaration: ExportDeclaration;
- ModuleSpecifier: ModuleSpecifier;
- Flow: Flow;
- FlowType: FlowType;
- FlowBaseAnnotation: FlowBaseAnnotation;
- FlowDeclaration: FlowDeclaration;
- FlowPredicate: FlowPredicate;
- EnumBody: EnumBody;
- EnumMember: EnumMember;
- JSX: JSX;
- Private: Private;
- TSTypeElement: TSTypeElement;
- TSType: TSType;
-}
-
-export function arrayExpression(elements?: Array<null | Expression | SpreadElement>): ArrayExpression;
-export function assignmentExpression(operator: string, left: LVal, right: Expression): AssignmentExpression;
-export function binaryExpression(operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<=", left: Expression, right: Expression): BinaryExpression;
-export function interpreterDirective(value: string): InterpreterDirective;
-export function directive(value: DirectiveLiteral): Directive;
-export function directiveLiteral(value: string): DirectiveLiteral;
-export function blockStatement(body: Array<Statement>, directives?: Array<Directive>): BlockStatement;
-export function breakStatement(label?: Identifier | null): BreakStatement;
-export function callExpression(callee: Expression | V8IntrinsicIdentifier, _arguments: Array<Expression | SpreadElement | JSXNamespacedName | ArgumentPlaceholder>): CallExpression;
-export function catchClause(param: Identifier | ArrayPattern | ObjectPattern | null | undefined, body: BlockStatement): CatchClause;
-export function conditionalExpression(test: Expression, consequent: Expression, alternate: Expression): ConditionalExpression;
-export function continueStatement(label?: Identifier | null): ContinueStatement;
-export function debuggerStatement(): DebuggerStatement;
-export function doWhileStatement(test: Expression, body: Statement): DoWhileStatement;
-export function emptyStatement(): EmptyStatement;
-export function expressionStatement(expression: Expression): ExpressionStatement;
-export function file(program: Program, comments: any, tokens: any): File;
-export function forInStatement(left: VariableDeclaration | LVal, right: Expression, body: Statement): ForInStatement;
-export function forStatement(init: VariableDeclaration | Expression | null | undefined, test: Expression | null | undefined, update: Expression | null | undefined, body: Statement): ForStatement;
-export function functionDeclaration(id: Identifier | null | undefined, params: Array<Identifier | Pattern | RestElement | TSParameterProperty>, body: BlockStatement, generator?: boolean, async?: boolean): FunctionDeclaration;
-export function functionExpression(id: Identifier | null | undefined, params: Array<Identifier | Pattern | RestElement | TSParameterProperty>, body: BlockStatement, generator?: boolean, async?: boolean): FunctionExpression;
-export function identifier(name: any): Identifier;
-export function ifStatement(test: Expression, consequent: Statement, alternate?: Statement | null): IfStatement;
-export function labeledStatement(label: Identifier, body: Statement): LabeledStatement;
-export function stringLiteral(value: string): StringLiteral;
-export function numericLiteral(value: number): NumericLiteral;
-export function nullLiteral(): NullLiteral;
-export function booleanLiteral(value: boolean): BooleanLiteral;
-export function regExpLiteral(pattern: string, flags?: any): RegExpLiteral;
-export function logicalExpression(operator: "||" | "&&" | "??", left: Expression, right: Expression): LogicalExpression;
-export function memberExpression(object: Expression, property: any, computed?: boolean, optional?: true | false | null): MemberExpression;
-export function newExpression(callee: Expression | V8IntrinsicIdentifier, _arguments: Array<Expression | SpreadElement | JSXNamespacedName | ArgumentPlaceholder>): NewExpression;
-export function program(body: Array<Statement>, directives?: Array<Directive>, sourceType?: "script" | "module", interpreter?: InterpreterDirective | null): Program;
-export function objectExpression(properties: Array<ObjectMethod | ObjectProperty | SpreadElement>): ObjectExpression;
-export function objectMethod(kind: "method" | "get" | "set" | undefined, key: any, params: Array<Identifier | Pattern | RestElement | TSParameterProperty>, body: BlockStatement, computed?: boolean, generator?: boolean, async?: boolean): ObjectMethod;
-export function objectProperty(key: any, value: Expression | PatternLike, computed?: boolean, shorthand?: any, decorators?: Array<Decorator> | null): ObjectProperty;
-export function restElement(argument: LVal): RestElement;
-export function returnStatement(argument?: Expression | null): ReturnStatement;
-export function sequenceExpression(expressions: Array<Expression>): SequenceExpression;
-export function parenthesizedExpression(expression: Expression): ParenthesizedExpression;
-export function switchCase(test: Expression | null | undefined, consequent: Array<Statement>): SwitchCase;
-export function switchStatement(discriminant: Expression, cases: Array<SwitchCase>): SwitchStatement;
-export function thisExpression(): ThisExpression;
-export function throwStatement(argument: Expression): ThrowStatement;
-export function tryStatement(block: any, handler?: CatchClause | null, finalizer?: BlockStatement | null): TryStatement;
-export function unaryExpression(operator: "void" | "throw" | "delete" | "!" | "+" | "-" | "~" | "typeof", argument: Expression, prefix?: boolean): UnaryExpression;
-export function updateExpression(operator: "++" | "--", argument: Expression, prefix?: boolean): UpdateExpression;
-export function variableDeclaration(kind: "var" | "let" | "const", declarations: Array<VariableDeclarator>): VariableDeclaration;
-export function variableDeclarator(id: LVal, init?: Expression | null): VariableDeclarator;
-export function whileStatement(test: Expression, body: Statement): WhileStatement;
-export function withStatement(object: Expression, body: Statement): WithStatement;
-export function assignmentPattern(left: Identifier | ObjectPattern | ArrayPattern | MemberExpression, right: Expression): AssignmentPattern;
-export function arrayPattern(elements: Array<null | PatternLike>): ArrayPattern;
-export function arrowFunctionExpression(params: Array<Identifier | Pattern | RestElement | TSParameterProperty>, body: BlockStatement | Expression, async?: boolean): ArrowFunctionExpression;
-export function classBody(body: Array<ClassMethod | ClassPrivateMethod | ClassProperty | ClassPrivateProperty | TSDeclareMethod | TSIndexSignature>): ClassBody;
-export function classExpression(id: Identifier | null | undefined, superClass: Expression | null | undefined, body: ClassBody, decorators?: Array<Decorator> | null): ClassExpression;
-export function classDeclaration(id: any, superClass: any, body: any, decorators: any): ClassDeclaration;
-export function exportAllDeclaration(source: StringLiteral): ExportAllDeclaration;
-export function exportDefaultDeclaration(declaration: FunctionDeclaration | TSDeclareFunction | ClassDeclaration | Expression): ExportDefaultDeclaration;
-export function exportNamedDeclaration(declaration?: any | null, specifiers?: Array<ExportSpecifier | ExportDefaultSpecifier | ExportNamespaceSpecifier>, source?: StringLiteral | null): ExportNamedDeclaration;
-export function exportSpecifier(local: Identifier, exported: Identifier): ExportSpecifier;
-export function forOfStatement(left: VariableDeclaration | LVal, right: Expression, body: Statement, _await?: boolean): ForOfStatement;
-export function importDeclaration(specifiers: Array<ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier>, source: StringLiteral): ImportDeclaration;
-export function importDefaultSpecifier(local: Identifier): ImportDefaultSpecifier;
-export function importNamespaceSpecifier(local: Identifier): ImportNamespaceSpecifier;
-export function importSpecifier(local: Identifier, imported: Identifier): ImportSpecifier;
-export function metaProperty(meta: any, property: Identifier): MetaProperty;
-export function classMethod(kind: "get" | "set" | "method" | "constructor" | undefined, key: Identifier | StringLiteral | NumericLiteral | Expression, params: Array<Identifier | Pattern | RestElement | TSParameterProperty>, body: BlockStatement, computed?: boolean, _static?: boolean, generator?: boolean, async?: boolean): ClassMethod;
-export function objectPattern(properties: Array<RestElement | ObjectProperty>): ObjectPattern;
-export function spreadElement(argument: Expression): SpreadElement;
-declare function _super(): Super;
-export { _super as super}
-export function taggedTemplateExpression(tag: Expression, quasi: TemplateLiteral): TaggedTemplateExpression;
-export function templateElement(value: { raw: string, cooked?: string }, tail?: boolean): TemplateElement;
-export function templateLiteral(quasis: Array<TemplateElement>, expressions: Array<Expression>): TemplateLiteral;
-export function yieldExpression(argument?: Expression | null, delegate?: any): YieldExpression;
-export function anyTypeAnnotation(): AnyTypeAnnotation;
-export function arrayTypeAnnotation(elementType: FlowType): ArrayTypeAnnotation;
-export function booleanTypeAnnotation(): BooleanTypeAnnotation;
-export function booleanLiteralTypeAnnotation(value: boolean): BooleanLiteralTypeAnnotation;
-export function nullLiteralTypeAnnotation(): NullLiteralTypeAnnotation;
-export function classImplements(id: Identifier, typeParameters?: TypeParameterInstantiation | null): ClassImplements;
-export function declareClass(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, _extends: Array<InterfaceExtends> | null | undefined, body: ObjectTypeAnnotation): DeclareClass;
-export function declareFunction(id: Identifier): DeclareFunction;
-export function declareInterface(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, _extends: Array<InterfaceExtends> | null | undefined, body: ObjectTypeAnnotation): DeclareInterface;
-export function declareModule(id: Identifier | StringLiteral, body: BlockStatement, kind?: "CommonJS" | "ES" | null): DeclareModule;
-export function declareModuleExports(typeAnnotation: TypeAnnotation): DeclareModuleExports;
-export function declareTypeAlias(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, right: FlowType): DeclareTypeAlias;
-export function declareOpaqueType(id: Identifier, typeParameters?: TypeParameterDeclaration | null, supertype?: FlowType | null): DeclareOpaqueType;
-export function declareVariable(id: Identifier): DeclareVariable;
-export function declareExportDeclaration(declaration?: Flow | null, specifiers?: Array<ExportSpecifier | ExportNamespaceSpecifier> | null, source?: StringLiteral | null): DeclareExportDeclaration;
-export function declareExportAllDeclaration(source: StringLiteral): DeclareExportAllDeclaration;
-export function declaredPredicate(value: Flow): DeclaredPredicate;
-export function existsTypeAnnotation(): ExistsTypeAnnotation;
-export function functionTypeAnnotation(typeParameters: TypeParameterDeclaration | null | undefined, params: Array<FunctionTypeParam>, rest: FunctionTypeParam | null | undefined, returnType: FlowType): FunctionTypeAnnotation;
-export function functionTypeParam(name: Identifier | null | undefined, typeAnnotation: FlowType): FunctionTypeParam;
-export function genericTypeAnnotation(id: Identifier | QualifiedTypeIdentifier, typeParameters?: TypeParameterInstantiation | null): GenericTypeAnnotation;
-export function inferredPredicate(): InferredPredicate;
-export function interfaceExtends(id: Identifier | QualifiedTypeIdentifier, typeParameters?: TypeParameterInstantiation | null): InterfaceExtends;
-export function interfaceDeclaration(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, _extends: Array<InterfaceExtends> | null | undefined, body: ObjectTypeAnnotation): InterfaceDeclaration;
-export function interfaceTypeAnnotation(_extends: Array<InterfaceExtends> | null | undefined, body: ObjectTypeAnnotation): InterfaceTypeAnnotation;
-export function intersectionTypeAnnotation(types: Array<FlowType>): IntersectionTypeAnnotation;
-export function mixedTypeAnnotation(): MixedTypeAnnotation;
-export function emptyTypeAnnotation(): EmptyTypeAnnotation;
-export function nullableTypeAnnotation(typeAnnotation: FlowType): NullableTypeAnnotation;
-export function numberLiteralTypeAnnotation(value: number): NumberLiteralTypeAnnotation;
-export function numberTypeAnnotation(): NumberTypeAnnotation;
-export function objectTypeAnnotation(properties: Array<ObjectTypeProperty | ObjectTypeSpreadProperty>, indexers?: Array<ObjectTypeIndexer> | null, callProperties?: Array<ObjectTypeCallProperty> | null, internalSlots?: Array<ObjectTypeInternalSlot> | null, exact?: boolean): ObjectTypeAnnotation;
-export function objectTypeInternalSlot(id: Identifier, value: FlowType, optional: boolean, _static: boolean, method: boolean): ObjectTypeInternalSlot;
-export function objectTypeCallProperty(value: FlowType): ObjectTypeCallProperty;
-export function objectTypeIndexer(id: Identifier | null | undefined, key: FlowType, value: FlowType, variance?: Variance | null): ObjectTypeIndexer;
-export function objectTypeProperty(key: Identifier | StringLiteral, value: FlowType, variance?: Variance | null): ObjectTypeProperty;
-export function objectTypeSpreadProperty(argument: FlowType): ObjectTypeSpreadProperty;
-export function opaqueType(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, supertype: FlowType | null | undefined, impltype: FlowType): OpaqueType;
-export function qualifiedTypeIdentifier(id: Identifier, qualification: Identifier | QualifiedTypeIdentifier): QualifiedTypeIdentifier;
-export function stringLiteralTypeAnnotation(value: string): StringLiteralTypeAnnotation;
-export function stringTypeAnnotation(): StringTypeAnnotation;
-export function thisTypeAnnotation(): ThisTypeAnnotation;
-export function tupleTypeAnnotation(types: Array<FlowType>): TupleTypeAnnotation;
-export function typeofTypeAnnotation(argument: FlowType): TypeofTypeAnnotation;
-export function typeAlias(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, right: FlowType): TypeAlias;
-export function typeAnnotation(typeAnnotation: FlowType): TypeAnnotation;
-export function typeCastExpression(expression: Expression, typeAnnotation: TypeAnnotation): TypeCastExpression;
-export function typeParameter(bound?: TypeAnnotation | null, _default?: FlowType | null, variance?: Variance | null): TypeParameter;
-export function typeParameterDeclaration(params: Array<TypeParameter>): TypeParameterDeclaration;
-export function typeParameterInstantiation(params: Array<FlowType>): TypeParameterInstantiation;
-export function unionTypeAnnotation(types: Array<FlowType>): UnionTypeAnnotation;
-export function variance(kind: "minus" | "plus"): Variance;
-export function voidTypeAnnotation(): VoidTypeAnnotation;
-export function enumDeclaration(id: Identifier, body: EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody): EnumDeclaration;
-export function enumBooleanBody(members: Array<EnumBooleanMember>): EnumBooleanBody;
-export function enumNumberBody(members: Array<EnumNumberMember>): EnumNumberBody;
-export function enumStringBody(members: Array<EnumStringMember | EnumDefaultedMember>): EnumStringBody;
-export function enumSymbolBody(members: Array<EnumDefaultedMember>): EnumSymbolBody;
-export function enumBooleanMember(id: Identifier): EnumBooleanMember;
-export function enumNumberMember(id: Identifier, init: NumericLiteral): EnumNumberMember;
-export function enumStringMember(id: Identifier, init: StringLiteral): EnumStringMember;
-export function enumDefaultedMember(id: Identifier): EnumDefaultedMember;
-export function jsxAttribute(name: JSXIdentifier | JSXNamespacedName, value?: JSXElement | JSXFragment | StringLiteral | JSXExpressionContainer | null): JSXAttribute;
-export function jsxClosingElement(name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName): JSXClosingElement;
-export function jsxElement(openingElement: JSXOpeningElement, closingElement: JSXClosingElement | null | undefined, children: Array<JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment>, selfClosing: any): JSXElement;
-export function jsxEmptyExpression(): JSXEmptyExpression;
-export function jsxExpressionContainer(expression: Expression | JSXEmptyExpression): JSXExpressionContainer;
-export function jsxSpreadChild(expression: Expression): JSXSpreadChild;
-export function jsxIdentifier(name: string): JSXIdentifier;
-export function jsxMemberExpression(object: JSXMemberExpression | JSXIdentifier, property: JSXIdentifier): JSXMemberExpression;
-export function jsxNamespacedName(namespace: JSXIdentifier, name: JSXIdentifier): JSXNamespacedName;
-export function jsxOpeningElement(name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName, attributes: Array<JSXAttribute | JSXSpreadAttribute>, selfClosing?: boolean): JSXOpeningElement;
-export function jsxSpreadAttribute(argument: Expression): JSXSpreadAttribute;
-export function jsxText(value: string): JSXText;
-export function jsxFragment(openingFragment: JSXOpeningFragment, closingFragment: JSXClosingFragment, children: Array<JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment>): JSXFragment;
-export function jsxOpeningFragment(): JSXOpeningFragment;
-export function jsxClosingFragment(): JSXClosingFragment;
-export function noop(): Noop;
-export function placeholder(expectedNode: "Identifier" | "StringLiteral" | "Expression" | "Statement" | "Declaration" | "BlockStatement" | "ClassBody" | "Pattern", name: Identifier): Placeholder;
-export function v8IntrinsicIdentifier(name: string): V8IntrinsicIdentifier;
-export function argumentPlaceholder(): ArgumentPlaceholder;
-export function awaitExpression(argument: Expression): AwaitExpression;
-export function bindExpression(object: any, callee: any): BindExpression;
-export function classProperty(key: Identifier | StringLiteral | NumericLiteral | Expression, value?: Expression | null, typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null, decorators?: Array<Decorator> | null, computed?: boolean, _static?: boolean): ClassProperty;
-export function optionalMemberExpression(object: Expression, property: any, computed: boolean | undefined, optional: boolean): OptionalMemberExpression;
-export function pipelineTopicExpression(expression: Expression): PipelineTopicExpression;
-export function pipelineBareFunction(callee: Expression): PipelineBareFunction;
-export function pipelinePrimaryTopicReference(): PipelinePrimaryTopicReference;
-export function optionalCallExpression(callee: Expression, _arguments: Array<Expression | SpreadElement | JSXNamespacedName>, optional: boolean): OptionalCallExpression;
-export function classPrivateProperty(key: PrivateName, value?: Expression | null, decorators?: Array<Decorator> | null): ClassPrivateProperty;
-export function classPrivateMethod(kind: "get" | "set" | "method" | "constructor" | undefined, key: PrivateName, params: Array<Identifier | Pattern | RestElement | TSParameterProperty>, body: BlockStatement, _static?: boolean): ClassPrivateMethod;
-declare function _import(): Import;
-export { _import as import}
-export function decorator(expression: Expression): Decorator;
-export function doExpression(body: BlockStatement): DoExpression;
-export function exportDefaultSpecifier(exported: Identifier): ExportDefaultSpecifier;
-export function exportNamespaceSpecifier(exported: Identifier): ExportNamespaceSpecifier;
-export function privateName(id: Identifier): PrivateName;
-export function bigIntLiteral(value: string): BigIntLiteral;
-export function tsParameterProperty(parameter: Identifier | AssignmentPattern): TSParameterProperty;
-export function tsDeclareFunction(id: Identifier | null | undefined, typeParameters: TSTypeParameterDeclaration | Noop | null | undefined, params: Array<Identifier | Pattern | RestElement | TSParameterProperty>, returnType?: TSTypeAnnotation | Noop | null): TSDeclareFunction;
-export function tsDeclareMethod(decorators: Array<Decorator> | null | undefined, key: Identifier | StringLiteral | NumericLiteral | Expression, typeParameters: TSTypeParameterDeclaration | Noop | null | undefined, params: Array<Identifier | Pattern | RestElement | TSParameterProperty>, returnType?: TSTypeAnnotation | Noop | null): TSDeclareMethod;
-export function tsQualifiedName(left: TSEntityName, right: Identifier): TSQualifiedName;
-export function tsCallSignatureDeclaration(typeParameters: TSTypeParameterDeclaration | null | undefined, parameters: Array<Identifier | RestElement>, typeAnnotation?: TSTypeAnnotation | null): TSCallSignatureDeclaration;
-export function tsConstructSignatureDeclaration(typeParameters: TSTypeParameterDeclaration | null | undefined, parameters: Array<Identifier | RestElement>, typeAnnotation?: TSTypeAnnotation | null): TSConstructSignatureDeclaration;
-export function tsPropertySignature(key: Expression, typeAnnotation?: TSTypeAnnotation | null, initializer?: Expression | null): TSPropertySignature;
-export function tsMethodSignature(key: Expression, typeParameters: TSTypeParameterDeclaration | null | undefined, parameters: Array<Identifier | RestElement>, typeAnnotation?: TSTypeAnnotation | null): TSMethodSignature;
-export function tsIndexSignature(parameters: Array<Identifier>, typeAnnotation?: TSTypeAnnotation | null): TSIndexSignature;
-export function tsAnyKeyword(): TSAnyKeyword;
-export function tsBooleanKeyword(): TSBooleanKeyword;
-export function tsBigIntKeyword(): TSBigIntKeyword;
-export function tsNeverKeyword(): TSNeverKeyword;
-export function tsNullKeyword(): TSNullKeyword;
-export function tsNumberKeyword(): TSNumberKeyword;
-export function tsObjectKeyword(): TSObjectKeyword;
-export function tsStringKeyword(): TSStringKeyword;
-export function tsSymbolKeyword(): TSSymbolKeyword;
-export function tsUndefinedKeyword(): TSUndefinedKeyword;
-export function tsUnknownKeyword(): TSUnknownKeyword;
-export function tsVoidKeyword(): TSVoidKeyword;
-export function tsThisType(): TSThisType;
-export function tsFunctionType(typeParameters: TSTypeParameterDeclaration | null | undefined, parameters: Array<Identifier | RestElement>, typeAnnotation?: TSTypeAnnotation | null): TSFunctionType;
-export function tsConstructorType(typeParameters: TSTypeParameterDeclaration | null | undefined, parameters: Array<Identifier | RestElement>, typeAnnotation?: TSTypeAnnotation | null): TSConstructorType;
-export function tsTypeReference(typeName: TSEntityName, typeParameters?: TSTypeParameterInstantiation | null): TSTypeReference;
-export function tsTypePredicate(parameterName: Identifier | TSThisType, typeAnnotation?: TSTypeAnnotation | null, asserts?: boolean | null): TSTypePredicate;
-export function tsTypeQuery(exprName: TSEntityName | TSImportType): TSTypeQuery;
-export function tsTypeLiteral(members: Array<TSTypeElement>): TSTypeLiteral;
-export function tsArrayType(elementType: TSType): TSArrayType;
-export function tsTupleType(elementTypes: Array<TSType>): TSTupleType;
-export function tsOptionalType(typeAnnotation: TSType): TSOptionalType;
-export function tsRestType(typeAnnotation: TSType): TSRestType;
-export function tsUnionType(types: Array<TSType>): TSUnionType;
-export function tsIntersectionType(types: Array<TSType>): TSIntersectionType;
-export function tsConditionalType(checkType: TSType, extendsType: TSType, trueType: TSType, falseType: TSType): TSConditionalType;
-export function tsInferType(typeParameter: TSTypeParameter): TSInferType;
-export function tsParenthesizedType(typeAnnotation: TSType): TSParenthesizedType;
-export function tsTypeOperator(typeAnnotation: TSType): TSTypeOperator;
-export function tsIndexedAccessType(objectType: TSType, indexType: TSType): TSIndexedAccessType;
-export function tsMappedType(typeParameter: TSTypeParameter, typeAnnotation?: TSType | null): TSMappedType;
-export function tsLiteralType(literal: NumericLiteral | StringLiteral | BooleanLiteral): TSLiteralType;
-export function tsExpressionWithTypeArguments(expression: TSEntityName, typeParameters?: TSTypeParameterInstantiation | null): TSExpressionWithTypeArguments;
-export function tsInterfaceDeclaration(id: Identifier, typeParameters: TSTypeParameterDeclaration | null | undefined, _extends: Array<TSExpressionWithTypeArguments> | null | undefined, body: TSInterfaceBody): TSInterfaceDeclaration;
-export function tsInterfaceBody(body: Array<TSTypeElement>): TSInterfaceBody;
-export function tsTypeAliasDeclaration(id: Identifier, typeParameters: TSTypeParameterDeclaration | null | undefined, typeAnnotation: TSType): TSTypeAliasDeclaration;
-export function tsAsExpression(expression: Expression, typeAnnotation: TSType): TSAsExpression;
-export function tsTypeAssertion(typeAnnotation: TSType, expression: Expression): TSTypeAssertion;
-export function tsEnumDeclaration(id: Identifier, members: Array<TSEnumMember>): TSEnumDeclaration;
-export function tsEnumMember(id: Identifier | StringLiteral, initializer?: Expression | null): TSEnumMember;
-export function tsModuleDeclaration(id: Identifier | StringLiteral, body: TSModuleBlock | TSModuleDeclaration): TSModuleDeclaration;
-export function tsModuleBlock(body: Array<Statement>): TSModuleBlock;
-export function tsImportType(argument: StringLiteral, qualifier?: TSEntityName | null, typeParameters?: TSTypeParameterInstantiation | null): TSImportType;
-export function tsImportEqualsDeclaration(id: Identifier, moduleReference: TSEntityName | TSExternalModuleReference): TSImportEqualsDeclaration;
-export function tsExternalModuleReference(expression: StringLiteral): TSExternalModuleReference;
-export function tsNonNullExpression(expression: Expression): TSNonNullExpression;
-export function tsExportAssignment(expression: Expression): TSExportAssignment;
-export function tsNamespaceExportDeclaration(id: Identifier): TSNamespaceExportDeclaration;
-export function tsTypeAnnotation(typeAnnotation: TSType): TSTypeAnnotation;
-export function tsTypeParameterInstantiation(params: Array<TSType>): TSTypeParameterInstantiation;
-export function tsTypeParameterDeclaration(params: Array<TSTypeParameter>): TSTypeParameterDeclaration;
-export function tsTypeParameter(constraint: TSType | null | undefined, _default: TSType | null | undefined, name: string): TSTypeParameter;
-export function isAnyTypeAnnotation(node: object | null | undefined, opts?: object | null): node is AnyTypeAnnotation;
-// export function assertAnyTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is AnyTypeAnnotation;
-export function isArgumentPlaceholder(node: object | null | undefined, opts?: object | null): node is ArgumentPlaceholder;
-// export function assertArgumentPlaceholder(node: object | null | undefined, opts?: object | null): asserts node is ArgumentPlaceholder;
-export function isArrayExpression(node: object | null | undefined, opts?: object | null): node is ArrayExpression;
-// export function assertArrayExpression(node: object | null | undefined, opts?: object | null): asserts node is ArrayExpression;
-export function isArrayPattern(node: object | null | undefined, opts?: object | null): node is ArrayPattern;
-// export function assertArrayPattern(node: object | null | undefined, opts?: object | null): asserts node is ArrayPattern;
-export function isArrayTypeAnnotation(node: object | null | undefined, opts?: object | null): node is ArrayTypeAnnotation;
-// export function assertArrayTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is ArrayTypeAnnotation;
-export function isArrowFunctionExpression(node: object | null | undefined, opts?: object | null): node is ArrowFunctionExpression;
-// export function assertArrowFunctionExpression(node: object | null | undefined, opts?: object | null): asserts node is ArrowFunctionExpression;
-export function isAssignmentExpression(node: object | null | undefined, opts?: object | null): node is AssignmentExpression;
-// export function assertAssignmentExpression(node: object | null | undefined, opts?: object | null): asserts node is AssignmentExpression;
-export function isAssignmentPattern(node: object | null | undefined, opts?: object | null): node is AssignmentPattern;
-// export function assertAssignmentPattern(node: object | null | undefined, opts?: object | null): asserts node is AssignmentPattern;
-export function isAwaitExpression(node: object | null | undefined, opts?: object | null): node is AwaitExpression;
-// export function assertAwaitExpression(node: object | null | undefined, opts?: object | null): asserts node is AwaitExpression;
-export function isBigIntLiteral(node: object | null | undefined, opts?: object | null): node is BigIntLiteral;
-// export function assertBigIntLiteral(node: object | null | undefined, opts?: object | null): asserts node is BigIntLiteral;
-export function isBinary(node: object | null | undefined, opts?: object | null): node is Binary;
-// export function assertBinary(node: object | null | undefined, opts?: object | null): asserts node is Binary;
-export function isBinaryExpression(node: object | null | undefined, opts?: object | null): node is BinaryExpression;
-// export function assertBinaryExpression(node: object | null | undefined, opts?: object | null): asserts node is BinaryExpression;
-export function isBindExpression(node: object | null | undefined, opts?: object | null): node is BindExpression;
-// export function assertBindExpression(node: object | null | undefined, opts?: object | null): asserts node is BindExpression;
-export function isBlock(node: object | null | undefined, opts?: object | null): node is Block;
-// export function assertBlock(node: object | null | undefined, opts?: object | null): asserts node is Block;
-export function isBlockParent(node: object | null | undefined, opts?: object | null): node is BlockParent;
-// export function assertBlockParent(node: object | null | undefined, opts?: object | null): asserts node is BlockParent;
-export function isBlockStatement(node: object | null | undefined, opts?: object | null): node is BlockStatement;
-// export function assertBlockStatement(node: object | null | undefined, opts?: object | null): asserts node is BlockStatement;
-export function isBooleanLiteral(node: object | null | undefined, opts?: object | null): node is BooleanLiteral;
-// export function assertBooleanLiteral(node: object | null | undefined, opts?: object | null): asserts node is BooleanLiteral;
-export function isBooleanLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): node is BooleanLiteralTypeAnnotation;
-// export function assertBooleanLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is BooleanLiteralTypeAnnotation;
-export function isBooleanTypeAnnotation(node: object | null | undefined, opts?: object | null): node is BooleanTypeAnnotation;
-// export function assertBooleanTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is BooleanTypeAnnotation;
-export function isBreakStatement(node: object | null | undefined, opts?: object | null): node is BreakStatement;
-// export function assertBreakStatement(node: object | null | undefined, opts?: object | null): asserts node is BreakStatement;
-export function isCallExpression(node: object | null | undefined, opts?: object | null): node is CallExpression;
-// export function assertCallExpression(node: object | null | undefined, opts?: object | null): asserts node is CallExpression;
-export function isCatchClause(node: object | null | undefined, opts?: object | null): node is CatchClause;
-// export function assertCatchClause(node: object | null | undefined, opts?: object | null): asserts node is CatchClause;
-export function isClass(node: object | null | undefined, opts?: object | null): node is Class;
-// export function assertClass(node: object | null | undefined, opts?: object | null): asserts node is Class;
-export function isClassBody(node: object | null | undefined, opts?: object | null): node is ClassBody;
-// export function assertClassBody(node: object | null | undefined, opts?: object | null): asserts node is ClassBody;
-export function isClassDeclaration(node: object | null | undefined, opts?: object | null): node is ClassDeclaration;
-// export function assertClassDeclaration(node: object | null | undefined, opts?: object | null): asserts node is ClassDeclaration;
-export function isClassExpression(node: object | null | undefined, opts?: object | null): node is ClassExpression;
-// export function assertClassExpression(node: object | null | undefined, opts?: object | null): asserts node is ClassExpression;
-export function isClassImplements(node: object | null | undefined, opts?: object | null): node is ClassImplements;
-// export function assertClassImplements(node: object | null | undefined, opts?: object | null): asserts node is ClassImplements;
-export function isClassMethod(node: object | null | undefined, opts?: object | null): node is ClassMethod;
-// export function assertClassMethod(node: object | null | undefined, opts?: object | null): asserts node is ClassMethod;
-export function isClassPrivateMethod(node: object | null | undefined, opts?: object | null): node is ClassPrivateMethod;
-// export function assertClassPrivateMethod(node: object | null | undefined, opts?: object | null): asserts node is ClassPrivateMethod;
-export function isClassPrivateProperty(node: object | null | undefined, opts?: object | null): node is ClassPrivateProperty;
-// export function assertClassPrivateProperty(node: object | null | undefined, opts?: object | null): asserts node is ClassPrivateProperty;
-export function isClassProperty(node: object | null | undefined, opts?: object | null): node is ClassProperty;
-// export function assertClassProperty(node: object | null | undefined, opts?: object | null): asserts node is ClassProperty;
-export function isCompletionStatement(node: object | null | undefined, opts?: object | null): node is CompletionStatement;
-// export function assertCompletionStatement(node: object | null | undefined, opts?: object | null): asserts node is CompletionStatement;
-export function isConditional(node: object | null | undefined, opts?: object | null): node is Conditional;
-// export function assertConditional(node: object | null | undefined, opts?: object | null): asserts node is Conditional;
-export function isConditionalExpression(node: object | null | undefined, opts?: object | null): node is ConditionalExpression;
-// export function assertConditionalExpression(node: object | null | undefined, opts?: object | null): asserts node is ConditionalExpression;
-export function isContinueStatement(node: object | null | undefined, opts?: object | null): node is ContinueStatement;
-// export function assertContinueStatement(node: object | null | undefined, opts?: object | null): asserts node is ContinueStatement;
-export function isDebuggerStatement(node: object | null | undefined, opts?: object | null): node is DebuggerStatement;
-// export function assertDebuggerStatement(node: object | null | undefined, opts?: object | null): asserts node is DebuggerStatement;
-export function isDeclaration(node: object | null | undefined, opts?: object | null): node is Declaration;
-// export function assertDeclaration(node: object | null | undefined, opts?: object | null): asserts node is Declaration;
-export function isDeclareClass(node: object | null | undefined, opts?: object | null): node is DeclareClass;
-// export function assertDeclareClass(node: object | null | undefined, opts?: object | null): asserts node is DeclareClass;
-export function isDeclareExportAllDeclaration(node: object | null | undefined, opts?: object | null): node is DeclareExportAllDeclaration;
-// export function assertDeclareExportAllDeclaration(node: object | null | undefined, opts?: object | null): asserts node is DeclareExportAllDeclaration;
-export function isDeclareExportDeclaration(node: object | null | undefined, opts?: object | null): node is DeclareExportDeclaration;
-// export function assertDeclareExportDeclaration(node: object | null | undefined, opts?: object | null): asserts node is DeclareExportDeclaration;
-export function isDeclareFunction(node: object | null | undefined, opts?: object | null): node is DeclareFunction;
-// export function assertDeclareFunction(node: object | null | undefined, opts?: object | null): asserts node is DeclareFunction;
-export function isDeclareInterface(node: object | null | undefined, opts?: object | null): node is DeclareInterface;
-// export function assertDeclareInterface(node: object | null | undefined, opts?: object | null): asserts node is DeclareInterface;
-export function isDeclareModule(node: object | null | undefined, opts?: object | null): node is DeclareModule;
-// export function assertDeclareModule(node: object | null | undefined, opts?: object | null): asserts node is DeclareModule;
-export function isDeclareModuleExports(node: object | null | undefined, opts?: object | null): node is DeclareModuleExports;
-// export function assertDeclareModuleExports(node: object | null | undefined, opts?: object | null): asserts node is DeclareModuleExports;
-export function isDeclareOpaqueType(node: object | null | undefined, opts?: object | null): node is DeclareOpaqueType;
-// export function assertDeclareOpaqueType(node: object | null | undefined, opts?: object | null): asserts node is DeclareOpaqueType;
-export function isDeclareTypeAlias(node: object | null | undefined, opts?: object | null): node is DeclareTypeAlias;
-// export function assertDeclareTypeAlias(node: object | null | undefined, opts?: object | null): asserts node is DeclareTypeAlias;
-export function isDeclareVariable(node: object | null | undefined, opts?: object | null): node is DeclareVariable;
-// export function assertDeclareVariable(node: object | null | undefined, opts?: object | null): asserts node is DeclareVariable;
-export function isDeclaredPredicate(node: object | null | undefined, opts?: object | null): node is DeclaredPredicate;
-// export function assertDeclaredPredicate(node: object | null | undefined, opts?: object | null): asserts node is DeclaredPredicate;
-export function isDecorator(node: object | null | undefined, opts?: object | null): node is Decorator;
-// export function assertDecorator(node: object | null | undefined, opts?: object | null): asserts node is Decorator;
-export function isDirective(node: object | null | undefined, opts?: object | null): node is Directive;
-// export function assertDirective(node: object | null | undefined, opts?: object | null): asserts node is Directive;
-export function isDirectiveLiteral(node: object | null | undefined, opts?: object | null): node is DirectiveLiteral;
-// export function assertDirectiveLiteral(node: object | null | undefined, opts?: object | null): asserts node is DirectiveLiteral;
-export function isDoExpression(node: object | null | undefined, opts?: object | null): node is DoExpression;
-// export function assertDoExpression(node: object | null | undefined, opts?: object | null): asserts node is DoExpression;
-export function isDoWhileStatement(node: object | null | undefined, opts?: object | null): node is DoWhileStatement;
-// export function assertDoWhileStatement(node: object | null | undefined, opts?: object | null): asserts node is DoWhileStatement;
-export function isEmptyStatement(node: object | null | undefined, opts?: object | null): node is EmptyStatement;
-// export function assertEmptyStatement(node: object | null | undefined, opts?: object | null): asserts node is EmptyStatement;
-export function isEmptyTypeAnnotation(node: object | null | undefined, opts?: object | null): node is EmptyTypeAnnotation;
-// export function assertEmptyTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is EmptyTypeAnnotation;
-export function isEnumBody(node: object | null | undefined, opts?: object | null): node is EnumBody;
-// export function assertEnumBody(node: object | null | undefined, opts?: object | null): asserts node is EnumBody;
-export function isEnumBooleanBody(node: object | null | undefined, opts?: object | null): node is EnumBooleanBody;
-// export function assertEnumBooleanBody(node: object | null | undefined, opts?: object | null): asserts node is EnumBooleanBody;
-export function isEnumBooleanMember(node: object | null | undefined, opts?: object | null): node is EnumBooleanMember;
-// export function assertEnumBooleanMember(node: object | null | undefined, opts?: object | null): asserts node is EnumBooleanMember;
-export function isEnumDeclaration(node: object | null | undefined, opts?: object | null): node is EnumDeclaration;
-// export function assertEnumDeclaration(node: object | null | undefined, opts?: object | null): asserts node is EnumDeclaration;
-export function isEnumDefaultedMember(node: object | null | undefined, opts?: object | null): node is EnumDefaultedMember;
-// export function assertEnumDefaultedMember(node: object | null | undefined, opts?: object | null): asserts node is EnumDefaultedMember;
-export function isEnumMember(node: object | null | undefined, opts?: object | null): node is EnumMember;
-// export function assertEnumMember(node: object | null | undefined, opts?: object | null): asserts node is EnumMember;
-export function isEnumNumberBody(node: object | null | undefined, opts?: object | null): node is EnumNumberBody;
-// export function assertEnumNumberBody(node: object | null | undefined, opts?: object | null): asserts node is EnumNumberBody;
-export function isEnumNumberMember(node: object | null | undefined, opts?: object | null): node is EnumNumberMember;
-// export function assertEnumNumberMember(node: object | null | undefined, opts?: object | null): asserts node is EnumNumberMember;
-export function isEnumStringBody(node: object | null | undefined, opts?: object | null): node is EnumStringBody;
-// export function assertEnumStringBody(node: object | null | undefined, opts?: object | null): asserts node is EnumStringBody;
-export function isEnumStringMember(node: object | null | undefined, opts?: object | null): node is EnumStringMember;
-// export function assertEnumStringMember(node: object | null | undefined, opts?: object | null): asserts node is EnumStringMember;
-export function isEnumSymbolBody(node: object | null | undefined, opts?: object | null): node is EnumSymbolBody;
-// export function assertEnumSymbolBody(node: object | null | undefined, opts?: object | null): asserts node is EnumSymbolBody;
-export function isExistsTypeAnnotation(node: object | null | undefined, opts?: object | null): node is ExistsTypeAnnotation;
-// export function assertExistsTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is ExistsTypeAnnotation;
-export function isExportAllDeclaration(node: object | null | undefined, opts?: object | null): node is ExportAllDeclaration;
-// export function assertExportAllDeclaration(node: object | null | undefined, opts?: object | null): asserts node is ExportAllDeclaration;
-export function isExportDeclaration(node: object | null | undefined, opts?: object | null): node is ExportDeclaration;
-// export function assertExportDeclaration(node: object | null | undefined, opts?: object | null): asserts node is ExportDeclaration;
-export function isExportDefaultDeclaration(node: object | null | undefined, opts?: object | null): node is ExportDefaultDeclaration;
-// export function assertExportDefaultDeclaration(node: object | null | undefined, opts?: object | null): asserts node is ExportDefaultDeclaration;
-export function isExportDefaultSpecifier(node: object | null | undefined, opts?: object | null): node is ExportDefaultSpecifier;
-// export function assertExportDefaultSpecifier(node: object | null | undefined, opts?: object | null): asserts node is ExportDefaultSpecifier;
-export function isExportNamedDeclaration(node: object | null | undefined, opts?: object | null): node is ExportNamedDeclaration;
-// export function assertExportNamedDeclaration(node: object | null | undefined, opts?: object | null): asserts node is ExportNamedDeclaration;
-export function isExportNamespaceSpecifier(node: object | null | undefined, opts?: object | null): node is ExportNamespaceSpecifier;
-// export function assertExportNamespaceSpecifier(node: object | null | undefined, opts?: object | null): asserts node is ExportNamespaceSpecifier;
-export function isExportSpecifier(node: object | null | undefined, opts?: object | null): node is ExportSpecifier;
-// export function assertExportSpecifier(node: object | null | undefined, opts?: object | null): asserts node is ExportSpecifier;
-export function isExpression(node: object | null | undefined, opts?: object | null): node is Expression;
-// export function assertExpression(node: object | null | undefined, opts?: object | null): asserts node is Expression;
-export function isExpressionStatement(node: object | null | undefined, opts?: object | null): node is ExpressionStatement;
-// export function assertExpressionStatement(node: object | null | undefined, opts?: object | null): asserts node is ExpressionStatement;
-export function isExpressionWrapper(node: object | null | undefined, opts?: object | null): node is ExpressionWrapper;
-// export function assertExpressionWrapper(node: object | null | undefined, opts?: object | null): asserts node is ExpressionWrapper;
-export function isFile(node: object | null | undefined, opts?: object | null): node is File;
-// export function assertFile(node: object | null | undefined, opts?: object | null): asserts node is File;
-export function isFlow(node: object | null | undefined, opts?: object | null): node is Flow;
-// export function assertFlow(node: object | null | undefined, opts?: object | null): asserts node is Flow;
-export function isFlowBaseAnnotation(node: object | null | undefined, opts?: object | null): node is FlowBaseAnnotation;
-// export function assertFlowBaseAnnotation(node: object | null | undefined, opts?: object | null): asserts node is FlowBaseAnnotation;
-export function isFlowDeclaration(node: object | null | undefined, opts?: object | null): node is FlowDeclaration;
-// export function assertFlowDeclaration(node: object | null | undefined, opts?: object | null): asserts node is FlowDeclaration;
-export function isFlowPredicate(node: object | null | undefined, opts?: object | null): node is FlowPredicate;
-// export function assertFlowPredicate(node: object | null | undefined, opts?: object | null): asserts node is FlowPredicate;
-export function isFlowType(node: object | null | undefined, opts?: object | null): node is FlowType;
-// export function assertFlowType(node: object | null | undefined, opts?: object | null): asserts node is FlowType;
-export function isFor(node: object | null | undefined, opts?: object | null): node is For;
-// export function assertFor(node: object | null | undefined, opts?: object | null): asserts node is For;
-export function isForInStatement(node: object | null | undefined, opts?: object | null): node is ForInStatement;
-// export function assertForInStatement(node: object | null | undefined, opts?: object | null): asserts node is ForInStatement;
-export function isForOfStatement(node: object | null | undefined, opts?: object | null): node is ForOfStatement;
-// export function assertForOfStatement(node: object | null | undefined, opts?: object | null): asserts node is ForOfStatement;
-export function isForStatement(node: object | null | undefined, opts?: object | null): node is ForStatement;
-// export function assertForStatement(node: object | null | undefined, opts?: object | null): asserts node is ForStatement;
-export function isForXStatement(node: object | null | undefined, opts?: object | null): node is ForXStatement;
-// export function assertForXStatement(node: object | null | undefined, opts?: object | null): asserts node is ForXStatement;
-export function isFunction(node: object | null | undefined, opts?: object | null): node is Function;
-// export function assertFunction(node: object | null | undefined, opts?: object | null): asserts node is Function;
-export function isFunctionDeclaration(node: object | null | undefined, opts?: object | null): node is FunctionDeclaration;
-// export function assertFunctionDeclaration(node: object | null | undefined, opts?: object | null): asserts node is FunctionDeclaration;
-export function isFunctionExpression(node: object | null | undefined, opts?: object | null): node is FunctionExpression;
-// export function assertFunctionExpression(node: object | null | undefined, opts?: object | null): asserts node is FunctionExpression;
-export function isFunctionParent(node: object | null | undefined, opts?: object | null): node is FunctionParent;
-// export function assertFunctionParent(node: object | null | undefined, opts?: object | null): asserts node is FunctionParent;
-export function isFunctionTypeAnnotation(node: object | null | undefined, opts?: object | null): node is FunctionTypeAnnotation;
-// export function assertFunctionTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is FunctionTypeAnnotation;
-export function isFunctionTypeParam(node: object | null | undefined, opts?: object | null): node is FunctionTypeParam;
-// export function assertFunctionTypeParam(node: object | null | undefined, opts?: object | null): asserts node is FunctionTypeParam;
-export function isGenericTypeAnnotation(node: object | null | undefined, opts?: object | null): node is GenericTypeAnnotation;
-// export function assertGenericTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is GenericTypeAnnotation;
-export function isIdentifier(node: object | null | undefined, opts?: object | null): node is Identifier;
-// export function assertIdentifier(node: object | null | undefined, opts?: object | null): asserts node is Identifier;
-export function isIfStatement(node: object | null | undefined, opts?: object | null): node is IfStatement;
-// export function assertIfStatement(node: object | null | undefined, opts?: object | null): asserts node is IfStatement;
-export function isImmutable(node: object | null | undefined, opts?: object | null): node is Immutable;
-// export function assertImmutable(node: object | null | undefined, opts?: object | null): asserts node is Immutable;
-export function isImport(node: object | null | undefined, opts?: object | null): node is Import;
-// export function assertImport(node: object | null | undefined, opts?: object | null): asserts node is Import;
-export function isImportDeclaration(node: object | null | undefined, opts?: object | null): node is ImportDeclaration;
-// export function assertImportDeclaration(node: object | null | undefined, opts?: object | null): asserts node is ImportDeclaration;
-export function isImportDefaultSpecifier(node: object | null | undefined, opts?: object | null): node is ImportDefaultSpecifier;
-// export function assertImportDefaultSpecifier(node: object | null | undefined, opts?: object | null): asserts node is ImportDefaultSpecifier;
-export function isImportNamespaceSpecifier(node: object | null | undefined, opts?: object | null): node is ImportNamespaceSpecifier;
-// export function assertImportNamespaceSpecifier(node: object | null | undefined, opts?: object | null): asserts node is ImportNamespaceSpecifier;
-export function isImportSpecifier(node: object | null | undefined, opts?: object | null): node is ImportSpecifier;
-// export function assertImportSpecifier(node: object | null | undefined, opts?: object | null): asserts node is ImportSpecifier;
-export function isInferredPredicate(node: object | null | undefined, opts?: object | null): node is InferredPredicate;
-// export function assertInferredPredicate(node: object | null | undefined, opts?: object | null): asserts node is InferredPredicate;
-export function isInterfaceDeclaration(node: object | null | undefined, opts?: object | null): node is InterfaceDeclaration;
-// export function assertInterfaceDeclaration(node: object | null | undefined, opts?: object | null): asserts node is InterfaceDeclaration;
-export function isInterfaceExtends(node: object | null | undefined, opts?: object | null): node is InterfaceExtends;
-// export function assertInterfaceExtends(node: object | null | undefined, opts?: object | null): asserts node is InterfaceExtends;
-export function isInterfaceTypeAnnotation(node: object | null | undefined, opts?: object | null): node is InterfaceTypeAnnotation;
-// export function assertInterfaceTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is InterfaceTypeAnnotation;
-export function isInterpreterDirective(node: object | null | undefined, opts?: object | null): node is InterpreterDirective;
-// export function assertInterpreterDirective(node: object | null | undefined, opts?: object | null): asserts node is InterpreterDirective;
-export function isIntersectionTypeAnnotation(node: object | null | undefined, opts?: object | null): node is IntersectionTypeAnnotation;
-// export function assertIntersectionTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is IntersectionTypeAnnotation;
-export function isJSX(node: object | null | undefined, opts?: object | null): node is JSX;
-// export function assertJSX(node: object | null | undefined, opts?: object | null): asserts node is JSX;
-export function isJSXAttribute(node: object | null | undefined, opts?: object | null): node is JSXAttribute;
-// export function assertJSXAttribute(node: object | null | undefined, opts?: object | null): asserts node is JSXAttribute;
-export function isJSXClosingElement(node: object | null | undefined, opts?: object | null): node is JSXClosingElement;
-// export function assertJSXClosingElement(node: object | null | undefined, opts?: object | null): asserts node is JSXClosingElement;
-export function isJSXClosingFragment(node: object | null | undefined, opts?: object | null): node is JSXClosingFragment;
-// export function assertJSXClosingFragment(node: object | null | undefined, opts?: object | null): asserts node is JSXClosingFragment;
-export function isJSXElement(node: object | null | undefined, opts?: object | null): node is JSXElement;
-// export function assertJSXElement(node: object | null | undefined, opts?: object | null): asserts node is JSXElement;
-export function isJSXEmptyExpression(node: object | null | undefined, opts?: object | null): node is JSXEmptyExpression;
-// export function assertJSXEmptyExpression(node: object | null | undefined, opts?: object | null): asserts node is JSXEmptyExpression;
-export function isJSXExpressionContainer(node: object | null | undefined, opts?: object | null): node is JSXExpressionContainer;
-// export function assertJSXExpressionContainer(node: object | null | undefined, opts?: object | null): asserts node is JSXExpressionContainer;
-export function isJSXFragment(node: object | null | undefined, opts?: object | null): node is JSXFragment;
-// export function assertJSXFragment(node: object | null | undefined, opts?: object | null): asserts node is JSXFragment;
-export function isJSXIdentifier(node: object | null | undefined, opts?: object | null): node is JSXIdentifier;
-// export function assertJSXIdentifier(node: object | null | undefined, opts?: object | null): asserts node is JSXIdentifier;
-export function isJSXMemberExpression(node: object | null | undefined, opts?: object | null): node is JSXMemberExpression;
-// export function assertJSXMemberExpression(node: object | null | undefined, opts?: object | null): asserts node is JSXMemberExpression;
-export function isJSXNamespacedName(node: object | null | undefined, opts?: object | null): node is JSXNamespacedName;
-// export function assertJSXNamespacedName(node: object | null | undefined, opts?: object | null): asserts node is JSXNamespacedName;
-export function isJSXOpeningElement(node: object | null | undefined, opts?: object | null): node is JSXOpeningElement;
-// export function assertJSXOpeningElement(node: object | null | undefined, opts?: object | null): asserts node is JSXOpeningElement;
-export function isJSXOpeningFragment(node: object | null | undefined, opts?: object | null): node is JSXOpeningFragment;
-// export function assertJSXOpeningFragment(node: object | null | undefined, opts?: object | null): asserts node is JSXOpeningFragment;
-export function isJSXSpreadAttribute(node: object | null | undefined, opts?: object | null): node is JSXSpreadAttribute;
-// export function assertJSXSpreadAttribute(node: object | null | undefined, opts?: object | null): asserts node is JSXSpreadAttribute;
-export function isJSXSpreadChild(node: object | null | undefined, opts?: object | null): node is JSXSpreadChild;
-// export function assertJSXSpreadChild(node: object | null | undefined, opts?: object | null): asserts node is JSXSpreadChild;
-export function isJSXText(node: object | null | undefined, opts?: object | null): node is JSXText;
-// export function assertJSXText(node: object | null | undefined, opts?: object | null): asserts node is JSXText;
-export function isLVal(node: object | null | undefined, opts?: object | null): node is LVal;
-// export function assertLVal(node: object | null | undefined, opts?: object | null): asserts node is LVal;
-export function isLabeledStatement(node: object | null | undefined, opts?: object | null): node is LabeledStatement;
-// export function assertLabeledStatement(node: object | null | undefined, opts?: object | null): asserts node is LabeledStatement;
-export function isLiteral(node: object | null | undefined, opts?: object | null): node is Literal;
-// export function assertLiteral(node: object | null | undefined, opts?: object | null): asserts node is Literal;
-export function isLogicalExpression(node: object | null | undefined, opts?: object | null): node is LogicalExpression;
-// export function assertLogicalExpression(node: object | null | undefined, opts?: object | null): asserts node is LogicalExpression;
-export function isLoop(node: object | null | undefined, opts?: object | null): node is Loop;
-// export function assertLoop(node: object | null | undefined, opts?: object | null): asserts node is Loop;
-export function isMemberExpression(node: object | null | undefined, opts?: object | null): node is MemberExpression;
-// export function assertMemberExpression(node: object | null | undefined, opts?: object | null): asserts node is MemberExpression;
-export function isMetaProperty(node: object | null | undefined, opts?: object | null): node is MetaProperty;
-// export function assertMetaProperty(node: object | null | undefined, opts?: object | null): asserts node is MetaProperty;
-export function isMethod(node: object | null | undefined, opts?: object | null): node is Method;
-// export function assertMethod(node: object | null | undefined, opts?: object | null): asserts node is Method;
-export function isMixedTypeAnnotation(node: object | null | undefined, opts?: object | null): node is MixedTypeAnnotation;
-// export function assertMixedTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is MixedTypeAnnotation;
-export function isModuleDeclaration(node: object | null | undefined, opts?: object | null): node is ModuleDeclaration;
-// export function assertModuleDeclaration(node: object | null | undefined, opts?: object | null): asserts node is ModuleDeclaration;
-export function isModuleSpecifier(node: object | null | undefined, opts?: object | null): node is ModuleSpecifier;
-// export function assertModuleSpecifier(node: object | null | undefined, opts?: object | null): asserts node is ModuleSpecifier;
-export function isNewExpression(node: object | null | undefined, opts?: object | null): node is NewExpression;
-// export function assertNewExpression(node: object | null | undefined, opts?: object | null): asserts node is NewExpression;
-export function isNoop(node: object | null | undefined, opts?: object | null): node is Noop;
-// export function assertNoop(node: object | null | undefined, opts?: object | null): asserts node is Noop;
-export function isNullLiteral(node: object | null | undefined, opts?: object | null): node is NullLiteral;
-// export function assertNullLiteral(node: object | null | undefined, opts?: object | null): asserts node is NullLiteral;
-export function isNullLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): node is NullLiteralTypeAnnotation;
-// export function assertNullLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is NullLiteralTypeAnnotation;
-export function isNullableTypeAnnotation(node: object | null | undefined, opts?: object | null): node is NullableTypeAnnotation;
-// export function assertNullableTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is NullableTypeAnnotation;
-export function isNumberLiteral(node: object | null | undefined, opts?: object | null): boolean;
-// export function assertNumberLiteral(node: object | null | undefined, opts?: object | null): asserts node;
-export function isNumberLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): node is NumberLiteralTypeAnnotation;
-// export function assertNumberLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is NumberLiteralTypeAnnotation;
-export function isNumberTypeAnnotation(node: object | null | undefined, opts?: object | null): node is NumberTypeAnnotation;
-// export function assertNumberTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is NumberTypeAnnotation;
-export function isNumericLiteral(node: object | null | undefined, opts?: object | null): node is NumericLiteral;
-// export function assertNumericLiteral(node: object | null | undefined, opts?: object | null): asserts node is NumericLiteral;
-export function isObjectExpression(node: object | null | undefined, opts?: object | null): node is ObjectExpression;
-// export function assertObjectExpression(node: object | null | undefined, opts?: object | null): asserts node is ObjectExpression;
-export function isObjectMember(node: object | null | undefined, opts?: object | null): node is ObjectMember;
-// export function assertObjectMember(node: object | null | undefined, opts?: object | null): asserts node is ObjectMember;
-export function isObjectMethod(node: object | null | undefined, opts?: object | null): node is ObjectMethod;
-// export function assertObjectMethod(node: object | null | undefined, opts?: object | null): asserts node is ObjectMethod;
-export function isObjectPattern(node: object | null | undefined, opts?: object | null): node is ObjectPattern;
-// export function assertObjectPattern(node: object | null | undefined, opts?: object | null): asserts node is ObjectPattern;
-export function isObjectProperty(node: object | null | undefined, opts?: object | null): node is ObjectProperty;
-// export function assertObjectProperty(node: object | null | undefined, opts?: object | null): asserts node is ObjectProperty;
-export function isObjectTypeAnnotation(node: object | null | undefined, opts?: object | null): node is ObjectTypeAnnotation;
-// export function assertObjectTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is ObjectTypeAnnotation;
-export function isObjectTypeCallProperty(node: object | null | undefined, opts?: object | null): node is ObjectTypeCallProperty;
-// export function assertObjectTypeCallProperty(node: object | null | undefined, opts?: object | null): asserts node is ObjectTypeCallProperty;
-export function isObjectTypeIndexer(node: object | null | undefined, opts?: object | null): node is ObjectTypeIndexer;
-// export function assertObjectTypeIndexer(node: object | null | undefined, opts?: object | null): asserts node is ObjectTypeIndexer;
-export function isObjectTypeInternalSlot(node: object | null | undefined, opts?: object | null): node is ObjectTypeInternalSlot;
-// export function assertObjectTypeInternalSlot(node: object | null | undefined, opts?: object | null): asserts node is ObjectTypeInternalSlot;
-export function isObjectTypeProperty(node: object | null | undefined, opts?: object | null): node is ObjectTypeProperty;
-// export function assertObjectTypeProperty(node: object | null | undefined, opts?: object | null): asserts node is ObjectTypeProperty;
-export function isObjectTypeSpreadProperty(node: object | null | undefined, opts?: object | null): node is ObjectTypeSpreadProperty;
-// export function assertObjectTypeSpreadProperty(node: object | null | undefined, opts?: object | null): asserts node is ObjectTypeSpreadProperty;
-export function isOpaqueType(node: object | null | undefined, opts?: object | null): node is OpaqueType;
-// export function assertOpaqueType(node: object | null | undefined, opts?: object | null): asserts node is OpaqueType;
-export function isOptionalCallExpression(node: object | null | undefined, opts?: object | null): node is OptionalCallExpression;
-// export function assertOptionalCallExpression(node: object | null | undefined, opts?: object | null): asserts node is OptionalCallExpression;
-export function isOptionalMemberExpression(node: object | null | undefined, opts?: object | null): node is OptionalMemberExpression;
-// export function assertOptionalMemberExpression(node: object | null | undefined, opts?: object | null): asserts node is OptionalMemberExpression;
-export function isParenthesizedExpression(node: object | null | undefined, opts?: object | null): node is ParenthesizedExpression;
-// export function assertParenthesizedExpression(node: object | null | undefined, opts?: object | null): asserts node is ParenthesizedExpression;
-export function isPattern(node: object | null | undefined, opts?: object | null): node is Pattern;
-// export function assertPattern(node: object | null | undefined, opts?: object | null): asserts node is Pattern;
-export function isPatternLike(node: object | null | undefined, opts?: object | null): node is PatternLike;
-// export function assertPatternLike(node: object | null | undefined, opts?: object | null): asserts node is PatternLike;
-export function isPipelineBareFunction(node: object | null | undefined, opts?: object | null): node is PipelineBareFunction;
-// export function assertPipelineBareFunction(node: object | null | undefined, opts?: object | null): asserts node is PipelineBareFunction;
-export function isPipelinePrimaryTopicReference(node: object | null | undefined, opts?: object | null): node is PipelinePrimaryTopicReference;
-// export function assertPipelinePrimaryTopicReference(node: object | null | undefined, opts?: object | null): asserts node is PipelinePrimaryTopicReference;
-export function isPipelineTopicExpression(node: object | null | undefined, opts?: object | null): node is PipelineTopicExpression;
-// export function assertPipelineTopicExpression(node: object | null | undefined, opts?: object | null): asserts node is PipelineTopicExpression;
-export function isPlaceholder(node: object | null | undefined, opts?: object | null): node is Placeholder;
-// export function assertPlaceholder(node: object | null | undefined, opts?: object | null): asserts node is Placeholder;
-export function isPrivate(node: object | null | undefined, opts?: object | null): node is Private;
-// export function assertPrivate(node: object | null | undefined, opts?: object | null): asserts node is Private;
-export function isPrivateName(node: object | null | undefined, opts?: object | null): node is PrivateName;
-// export function assertPrivateName(node: object | null | undefined, opts?: object | null): asserts node is PrivateName;
-export function isProgram(node: object | null | undefined, opts?: object | null): node is Program;
-// export function assertProgram(node: object | null | undefined, opts?: object | null): asserts node is Program;
-export function isProperty(node: object | null | undefined, opts?: object | null): node is Property;
-// export function assertProperty(node: object | null | undefined, opts?: object | null): asserts node is Property;
-export function isPureish(node: object | null | undefined, opts?: object | null): node is Pureish;
-// export function assertPureish(node: object | null | undefined, opts?: object | null): asserts node is Pureish;
-export function isQualifiedTypeIdentifier(node: object | null | undefined, opts?: object | null): node is QualifiedTypeIdentifier;
-// export function assertQualifiedTypeIdentifier(node: object | null | undefined, opts?: object | null): asserts node is QualifiedTypeIdentifier;
-export function isRegExpLiteral(node: object | null | undefined, opts?: object | null): node is RegExpLiteral;
-// export function assertRegExpLiteral(node: object | null | undefined, opts?: object | null): asserts node is RegExpLiteral;
-export function isRegexLiteral(node: object | null | undefined, opts?: object | null): boolean;
-// export function assertRegexLiteral(node: object | null | undefined, opts?: object | null): asserts node;
-export function isRestElement(node: object | null | undefined, opts?: object | null): node is RestElement;
-// export function assertRestElement(node: object | null | undefined, opts?: object | null): asserts node is RestElement;
-export function isRestProperty(node: object | null | undefined, opts?: object | null): boolean;
-// export function assertRestProperty(node: object | null | undefined, opts?: object | null): asserts node;
-export function isReturnStatement(node: object | null | undefined, opts?: object | null): node is ReturnStatement;
-// export function assertReturnStatement(node: object | null | undefined, opts?: object | null): asserts node is ReturnStatement;
-export function isScopable(node: object | null | undefined, opts?: object | null): node is Scopable;
-// export function assertScopable(node: object | null | undefined, opts?: object | null): asserts node is Scopable;
-export function isSequenceExpression(node: object | null | undefined, opts?: object | null): node is SequenceExpression;
-// export function assertSequenceExpression(node: object | null | undefined, opts?: object | null): asserts node is SequenceExpression;
-export function isSpreadElement(node: object | null | undefined, opts?: object | null): node is SpreadElement;
-// export function assertSpreadElement(node: object | null | undefined, opts?: object | null): asserts node is SpreadElement;
-export function isSpreadProperty(node: object | null | undefined, opts?: object | null): boolean;
-// export function assertSpreadProperty(node: object | null | undefined, opts?: object | null): asserts node;
-export function isStatement(node: object | null | undefined, opts?: object | null): node is Statement;
-// export function assertStatement(node: object | null | undefined, opts?: object | null): asserts node is Statement;
-export function isStringLiteral(node: object | null | undefined, opts?: object | null): node is StringLiteral;
-// export function assertStringLiteral(node: object | null | undefined, opts?: object | null): asserts node is StringLiteral;
-export function isStringLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): node is StringLiteralTypeAnnotation;
-// export function assertStringLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is StringLiteralTypeAnnotation;
-export function isStringTypeAnnotation(node: object | null | undefined, opts?: object | null): node is StringTypeAnnotation;
-// export function assertStringTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is StringTypeAnnotation;
-export function isSuper(node: object | null | undefined, opts?: object | null): node is Super;
-// export function assertSuper(node: object | null | undefined, opts?: object | null): asserts node is Super;
-export function isSwitchCase(node: object | null | undefined, opts?: object | null): node is SwitchCase;
-// export function assertSwitchCase(node: object | null | undefined, opts?: object | null): asserts node is SwitchCase;
-export function isSwitchStatement(node: object | null | undefined, opts?: object | null): node is SwitchStatement;
-// export function assertSwitchStatement(node: object | null | undefined, opts?: object | null): asserts node is SwitchStatement;
-export function isTSAnyKeyword(node: object | null | undefined, opts?: object | null): node is TSAnyKeyword;
-// export function assertTSAnyKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSAnyKeyword;
-export function isTSArrayType(node: object | null | undefined, opts?: object | null): node is TSArrayType;
-// export function assertTSArrayType(node: object | null | undefined, opts?: object | null): asserts node is TSArrayType;
-export function isTSAsExpression(node: object | null | undefined, opts?: object | null): node is TSAsExpression;
-// export function assertTSAsExpression(node: object | null | undefined, opts?: object | null): asserts node is TSAsExpression;
-export function isTSBigIntKeyword(node: object | null | undefined, opts?: object | null): node is TSBigIntKeyword;
-// export function assertTSBigIntKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSBigIntKeyword;
-export function isTSBooleanKeyword(node: object | null | undefined, opts?: object | null): node is TSBooleanKeyword;
-// export function assertTSBooleanKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSBooleanKeyword;
-export function isTSCallSignatureDeclaration(node: object | null | undefined, opts?: object | null): node is TSCallSignatureDeclaration;
-// export function assertTSCallSignatureDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSCallSignatureDeclaration;
-export function isTSConditionalType(node: object | null | undefined, opts?: object | null): node is TSConditionalType;
-// export function assertTSConditionalType(node: object | null | undefined, opts?: object | null): asserts node is TSConditionalType;
-export function isTSConstructSignatureDeclaration(node: object | null | undefined, opts?: object | null): node is TSConstructSignatureDeclaration;
-// export function assertTSConstructSignatureDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSConstructSignatureDeclaration;
-export function isTSConstructorType(node: object | null | undefined, opts?: object | null): node is TSConstructorType;
-// export function assertTSConstructorType(node: object | null | undefined, opts?: object | null): asserts node is TSConstructorType;
-export function isTSDeclareFunction(node: object | null | undefined, opts?: object | null): node is TSDeclareFunction;
-// export function assertTSDeclareFunction(node: object | null | undefined, opts?: object | null): asserts node is TSDeclareFunction;
-export function isTSDeclareMethod(node: object | null | undefined, opts?: object | null): node is TSDeclareMethod;
-// export function assertTSDeclareMethod(node: object | null | undefined, opts?: object | null): asserts node is TSDeclareMethod;
-export function isTSEntityName(node: object | null | undefined, opts?: object | null): node is TSEntityName;
-// export function assertTSEntityName(node: object | null | undefined, opts?: object | null): asserts node is TSEntityName;
-export function isTSEnumDeclaration(node: object | null | undefined, opts?: object | null): node is TSEnumDeclaration;
-// export function assertTSEnumDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSEnumDeclaration;
-export function isTSEnumMember(node: object | null | undefined, opts?: object | null): node is TSEnumMember;
-// export function assertTSEnumMember(node: object | null | undefined, opts?: object | null): asserts node is TSEnumMember;
-export function isTSExportAssignment(node: object | null | undefined, opts?: object | null): node is TSExportAssignment;
-// export function assertTSExportAssignment(node: object | null | undefined, opts?: object | null): asserts node is TSExportAssignment;
-export function isTSExpressionWithTypeArguments(node: object | null | undefined, opts?: object | null): node is TSExpressionWithTypeArguments;
-// export function assertTSExpressionWithTypeArguments(node: object | null | undefined, opts?: object | null): asserts node is TSExpressionWithTypeArguments;
-export function isTSExternalModuleReference(node: object | null | undefined, opts?: object | null): node is TSExternalModuleReference;
-// export function assertTSExternalModuleReference(node: object | null | undefined, opts?: object | null): asserts node is TSExternalModuleReference;
-export function isTSFunctionType(node: object | null | undefined, opts?: object | null): node is TSFunctionType;
-// export function assertTSFunctionType(node: object | null | undefined, opts?: object | null): asserts node is TSFunctionType;
-export function isTSImportEqualsDeclaration(node: object | null | undefined, opts?: object | null): node is TSImportEqualsDeclaration;
-// export function assertTSImportEqualsDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSImportEqualsDeclaration;
-export function isTSImportType(node: object | null | undefined, opts?: object | null): node is TSImportType;
-// export function assertTSImportType(node: object | null | undefined, opts?: object | null): asserts node is TSImportType;
-export function isTSIndexSignature(node: object | null | undefined, opts?: object | null): node is TSIndexSignature;
-// export function assertTSIndexSignature(node: object | null | undefined, opts?: object | null): asserts node is TSIndexSignature;
-export function isTSIndexedAccessType(node: object | null | undefined, opts?: object | null): node is TSIndexedAccessType;
-// export function assertTSIndexedAccessType(node: object | null | undefined, opts?: object | null): asserts node is TSIndexedAccessType;
-export function isTSInferType(node: object | null | undefined, opts?: object | null): node is TSInferType;
-// export function assertTSInferType(node: object | null | undefined, opts?: object | null): asserts node is TSInferType;
-export function isTSInterfaceBody(node: object | null | undefined, opts?: object | null): node is TSInterfaceBody;
-// export function assertTSInterfaceBody(node: object | null | undefined, opts?: object | null): asserts node is TSInterfaceBody;
-export function isTSInterfaceDeclaration(node: object | null | undefined, opts?: object | null): node is TSInterfaceDeclaration;
-// export function assertTSInterfaceDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSInterfaceDeclaration;
-export function isTSIntersectionType(node: object | null | undefined, opts?: object | null): node is TSIntersectionType;
-// export function assertTSIntersectionType(node: object | null | undefined, opts?: object | null): asserts node is TSIntersectionType;
-export function isTSLiteralType(node: object | null | undefined, opts?: object | null): node is TSLiteralType;
-// export function assertTSLiteralType(node: object | null | undefined, opts?: object | null): asserts node is TSLiteralType;
-export function isTSMappedType(node: object | null | undefined, opts?: object | null): node is TSMappedType;
-// export function assertTSMappedType(node: object | null | undefined, opts?: object | null): asserts node is TSMappedType;
-export function isTSMethodSignature(node: object | null | undefined, opts?: object | null): node is TSMethodSignature;
-// export function assertTSMethodSignature(node: object | null | undefined, opts?: object | null): asserts node is TSMethodSignature;
-export function isTSModuleBlock(node: object | null | undefined, opts?: object | null): node is TSModuleBlock;
-// export function assertTSModuleBlock(node: object | null | undefined, opts?: object | null): asserts node is TSModuleBlock;
-export function isTSModuleDeclaration(node: object | null | undefined, opts?: object | null): node is TSModuleDeclaration;
-// export function assertTSModuleDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSModuleDeclaration;
-export function isTSNamespaceExportDeclaration(node: object | null | undefined, opts?: object | null): node is TSNamespaceExportDeclaration;
-// export function assertTSNamespaceExportDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSNamespaceExportDeclaration;
-export function isTSNeverKeyword(node: object | null | undefined, opts?: object | null): node is TSNeverKeyword;
-// export function assertTSNeverKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSNeverKeyword;
-export function isTSNonNullExpression(node: object | null | undefined, opts?: object | null): node is TSNonNullExpression;
-// export function assertTSNonNullExpression(node: object | null | undefined, opts?: object | null): asserts node is TSNonNullExpression;
-export function isTSNullKeyword(node: object | null | undefined, opts?: object | null): node is TSNullKeyword;
-// export function assertTSNullKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSNullKeyword;
-export function isTSNumberKeyword(node: object | null | undefined, opts?: object | null): node is TSNumberKeyword;
-// export function assertTSNumberKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSNumberKeyword;
-export function isTSObjectKeyword(node: object | null | undefined, opts?: object | null): node is TSObjectKeyword;
-// export function assertTSObjectKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSObjectKeyword;
-export function isTSOptionalType(node: object | null | undefined, opts?: object | null): node is TSOptionalType;
-// export function assertTSOptionalType(node: object | null | undefined, opts?: object | null): asserts node is TSOptionalType;
-export function isTSParameterProperty(node: object | null | undefined, opts?: object | null): node is TSParameterProperty;
-// export function assertTSParameterProperty(node: object | null | undefined, opts?: object | null): asserts node is TSParameterProperty;
-export function isTSParenthesizedType(node: object | null | undefined, opts?: object | null): node is TSParenthesizedType;
-// export function assertTSParenthesizedType(node: object | null | undefined, opts?: object | null): asserts node is TSParenthesizedType;
-export function isTSPropertySignature(node: object | null | undefined, opts?: object | null): node is TSPropertySignature;
-// export function assertTSPropertySignature(node: object | null | undefined, opts?: object | null): asserts node is TSPropertySignature;
-export function isTSQualifiedName(node: object | null | undefined, opts?: object | null): node is TSQualifiedName;
-// export function assertTSQualifiedName(node: object | null | undefined, opts?: object | null): asserts node is TSQualifiedName;
-export function isTSRestType(node: object | null | undefined, opts?: object | null): node is TSRestType;
-// export function assertTSRestType(node: object | null | undefined, opts?: object | null): asserts node is TSRestType;
-export function isTSStringKeyword(node: object | null | undefined, opts?: object | null): node is TSStringKeyword;
-// export function assertTSStringKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSStringKeyword;
-export function isTSSymbolKeyword(node: object | null | undefined, opts?: object | null): node is TSSymbolKeyword;
-// export function assertTSSymbolKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSSymbolKeyword;
-export function isTSThisType(node: object | null | undefined, opts?: object | null): node is TSThisType;
-// export function assertTSThisType(node: object | null | undefined, opts?: object | null): asserts node is TSThisType;
-export function isTSTupleType(node: object | null | undefined, opts?: object | null): node is TSTupleType;
-// export function assertTSTupleType(node: object | null | undefined, opts?: object | null): asserts node is TSTupleType;
-export function isTSType(node: object | null | undefined, opts?: object | null): node is TSType;
-// export function assertTSType(node: object | null | undefined, opts?: object | null): asserts node is TSType;
-export function isTSTypeAliasDeclaration(node: object | null | undefined, opts?: object | null): node is TSTypeAliasDeclaration;
-// export function assertTSTypeAliasDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSTypeAliasDeclaration;
-export function isTSTypeAnnotation(node: object | null | undefined, opts?: object | null): node is TSTypeAnnotation;
-// export function assertTSTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is TSTypeAnnotation;
-export function isTSTypeAssertion(node: object | null | undefined, opts?: object | null): node is TSTypeAssertion;
-// export function assertTSTypeAssertion(node: object | null | undefined, opts?: object | null): asserts node is TSTypeAssertion;
-export function isTSTypeElement(node: object | null | undefined, opts?: object | null): node is TSTypeElement;
-// export function assertTSTypeElement(node: object | null | undefined, opts?: object | null): asserts node is TSTypeElement;
-export function isTSTypeLiteral(node: object | null | undefined, opts?: object | null): node is TSTypeLiteral;
-// export function assertTSTypeLiteral(node: object | null | undefined, opts?: object | null): asserts node is TSTypeLiteral;
-export function isTSTypeOperator(node: object | null | undefined, opts?: object | null): node is TSTypeOperator;
-// export function assertTSTypeOperator(node: object | null | undefined, opts?: object | null): asserts node is TSTypeOperator;
-export function isTSTypeParameter(node: object | null | undefined, opts?: object | null): node is TSTypeParameter;
-// export function assertTSTypeParameter(node: object | null | undefined, opts?: object | null): asserts node is TSTypeParameter;
-export function isTSTypeParameterDeclaration(node: object | null | undefined, opts?: object | null): node is TSTypeParameterDeclaration;
-// export function assertTSTypeParameterDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSTypeParameterDeclaration;
-export function isTSTypeParameterInstantiation(node: object | null | undefined, opts?: object | null): node is TSTypeParameterInstantiation;
-// export function assertTSTypeParameterInstantiation(node: object | null | undefined, opts?: object | null): asserts node is TSTypeParameterInstantiation;
-export function isTSTypePredicate(node: object | null | undefined, opts?: object | null): node is TSTypePredicate;
-// export function assertTSTypePredicate(node: object | null | undefined, opts?: object | null): asserts node is TSTypePredicate;
-export function isTSTypeQuery(node: object | null | undefined, opts?: object | null): node is TSTypeQuery;
-// export function assertTSTypeQuery(node: object | null | undefined, opts?: object | null): asserts node is TSTypeQuery;
-export function isTSTypeReference(node: object | null | undefined, opts?: object | null): node is TSTypeReference;
-// export function assertTSTypeReference(node: object | null | undefined, opts?: object | null): asserts node is TSTypeReference;
-export function isTSUndefinedKeyword(node: object | null | undefined, opts?: object | null): node is TSUndefinedKeyword;
-// export function assertTSUndefinedKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSUndefinedKeyword;
-export function isTSUnionType(node: object | null | undefined, opts?: object | null): node is TSUnionType;
-// export function assertTSUnionType(node: object | null | undefined, opts?: object | null): asserts node is TSUnionType;
-export function isTSUnknownKeyword(node: object | null | undefined, opts?: object | null): node is TSUnknownKeyword;
-// export function assertTSUnknownKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSUnknownKeyword;
-export function isTSVoidKeyword(node: object | null | undefined, opts?: object | null): node is TSVoidKeyword;
-// export function assertTSVoidKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSVoidKeyword;
-export function isTaggedTemplateExpression(node: object | null | undefined, opts?: object | null): node is TaggedTemplateExpression;
-// export function assertTaggedTemplateExpression(node: object | null | undefined, opts?: object | null): asserts node is TaggedTemplateExpression;
-export function isTemplateElement(node: object | null | undefined, opts?: object | null): node is TemplateElement;
-// export function assertTemplateElement(node: object | null | undefined, opts?: object | null): asserts node is TemplateElement;
-export function isTemplateLiteral(node: object | null | undefined, opts?: object | null): node is TemplateLiteral;
-// export function assertTemplateLiteral(node: object | null | undefined, opts?: object | null): asserts node is TemplateLiteral;
-export function isTerminatorless(node: object | null | undefined, opts?: object | null): node is Terminatorless;
-// export function assertTerminatorless(node: object | null | undefined, opts?: object | null): asserts node is Terminatorless;
-export function isThisExpression(node: object | null | undefined, opts?: object | null): node is ThisExpression;
-// export function assertThisExpression(node: object | null | undefined, opts?: object | null): asserts node is ThisExpression;
-export function isThisTypeAnnotation(node: object | null | undefined, opts?: object | null): node is ThisTypeAnnotation;
-// export function assertThisTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is ThisTypeAnnotation;
-export function isThrowStatement(node: object | null | undefined, opts?: object | null): node is ThrowStatement;
-// export function assertThrowStatement(node: object | null | undefined, opts?: object | null): asserts node is ThrowStatement;
-export function isTryStatement(node: object | null | undefined, opts?: object | null): node is TryStatement;
-// export function assertTryStatement(node: object | null | undefined, opts?: object | null): asserts node is TryStatement;
-export function isTupleTypeAnnotation(node: object | null | undefined, opts?: object | null): node is TupleTypeAnnotation;
-// export function assertTupleTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is TupleTypeAnnotation;
-export function isTypeAlias(node: object | null | undefined, opts?: object | null): node is TypeAlias;
-// export function assertTypeAlias(node: object | null | undefined, opts?: object | null): asserts node is TypeAlias;
-export function isTypeAnnotation(node: object | null | undefined, opts?: object | null): node is TypeAnnotation;
-// export function assertTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is TypeAnnotation;
-export function isTypeCastExpression(node: object | null | undefined, opts?: object | null): node is TypeCastExpression;
-// export function assertTypeCastExpression(node: object | null | undefined, opts?: object | null): asserts node is TypeCastExpression;
-export function isTypeParameter(node: object | null | undefined, opts?: object | null): node is TypeParameter;
-// export function assertTypeParameter(node: object | null | undefined, opts?: object | null): asserts node is TypeParameter;
-export function isTypeParameterDeclaration(node: object | null | undefined, opts?: object | null): node is TypeParameterDeclaration;
-// export function assertTypeParameterDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TypeParameterDeclaration;
-export function isTypeParameterInstantiation(node: object | null | undefined, opts?: object | null): node is TypeParameterInstantiation;
-// export function assertTypeParameterInstantiation(node: object | null | undefined, opts?: object | null): asserts node is TypeParameterInstantiation;
-export function isTypeofTypeAnnotation(node: object | null | undefined, opts?: object | null): node is TypeofTypeAnnotation;
-// export function assertTypeofTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is TypeofTypeAnnotation;
-export function isUnaryExpression(node: object | null | undefined, opts?: object | null): node is UnaryExpression;
-// export function assertUnaryExpression(node: object | null | undefined, opts?: object | null): asserts node is UnaryExpression;
-export function isUnaryLike(node: object | null | undefined, opts?: object | null): node is UnaryLike;
-// export function assertUnaryLike(node: object | null | undefined, opts?: object | null): asserts node is UnaryLike;
-export function isUnionTypeAnnotation(node: object | null | undefined, opts?: object | null): node is UnionTypeAnnotation;
-// export function assertUnionTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is UnionTypeAnnotation;
-export function isUpdateExpression(node: object | null | undefined, opts?: object | null): node is UpdateExpression;
-// export function assertUpdateExpression(node: object | null | undefined, opts?: object | null): asserts node is UpdateExpression;
-export function isUserWhitespacable(node: object | null | undefined, opts?: object | null): node is UserWhitespacable;
-// export function assertUserWhitespacable(node: object | null | undefined, opts?: object | null): asserts node is UserWhitespacable;
-export function isV8IntrinsicIdentifier(node: object | null | undefined, opts?: object | null): node is V8IntrinsicIdentifier;
-// export function assertV8IntrinsicIdentifier(node: object | null | undefined, opts?: object | null): asserts node is V8IntrinsicIdentifier;
-export function isVariableDeclaration(node: object | null | undefined, opts?: object | null): node is VariableDeclaration;
-// export function assertVariableDeclaration(node: object | null | undefined, opts?: object | null): asserts node is VariableDeclaration;
-export function isVariableDeclarator(node: object | null | undefined, opts?: object | null): node is VariableDeclarator;
-// export function assertVariableDeclarator(node: object | null | undefined, opts?: object | null): asserts node is VariableDeclarator;
-export function isVariance(node: object | null | undefined, opts?: object | null): node is Variance;
-// export function assertVariance(node: object | null | undefined, opts?: object | null): asserts node is Variance;
-export function isVoidTypeAnnotation(node: object | null | undefined, opts?: object | null): node is VoidTypeAnnotation;
-// export function assertVoidTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is VoidTypeAnnotation;
-export function isWhile(node: object | null | undefined, opts?: object | null): node is While;
-// export function assertWhile(node: object | null | undefined, opts?: object | null): asserts node is While;
-export function isWhileStatement(node: object | null | undefined, opts?: object | null): node is WhileStatement;
-// export function assertWhileStatement(node: object | null | undefined, opts?: object | null): asserts node is WhileStatement;
-export function isWithStatement(node: object | null | undefined, opts?: object | null): node is WithStatement;
-// export function assertWithStatement(node: object | null | undefined, opts?: object | null): asserts node is WithStatement;
-export function isYieldExpression(node: object | null | undefined, opts?: object | null): node is YieldExpression;
-// export function assertYieldExpression(node: object | null | undefined, opts?: object | null): asserts node is YieldExpression;
-// export function assertNode(obj: any): asserts obj is Node
-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 createUnionTypeAnnotation(types: ReadonlyArray<FlowType>): UnionTypeAnnotation
-export function buildChildren(node: { children: ReadonlyArray<JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment | JSXEmptyExpression> }): JSXElement['children']
-export function clone<T extends Node>(n: T): T;
-export function cloneDeep<T extends Node>(n: T): T;
-export function cloneNode<T extends Node>(n: T, deep?: boolean): T;
-export function cloneWithoutLoc<T extends Node>(n: T): T;
-export type CommentTypeShorthand = 'leading' | 'inner' | 'trailing'
-export function addComment<T extends Node>(node: T, type: CommentTypeShorthand, content: string, line?: boolean): T
-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
-export function ensureBlock(node: Extract<Node, { body: BlockStatement | Statement | Expression }>): BlockStatement
-export function ensureBlock<K extends keyof Extract<Node, { body: BlockStatement | Statement | Expression }> = 'body'>(node: Extract<Node, Record<K, BlockStatement | Statement | Expression>>, key: K): BlockStatement
-export function toBindingIdentifierName(name: { toString(): string } | null | undefined): string
-export function toBlock(node: Statement | Expression, parent?: Function | null): BlockStatement
-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
-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
-export function toStatement(node: Statement | Class | Function | AssignmentExpression, ignore: true): Statement | undefined
-export function toStatement(node: Statement | Class | Function | AssignmentExpression, ignore?: boolean): Statement
-export function valueToNode(value: undefined): Identifier
-export function valueToNode(value: boolean): BooleanLiteral
-export function valueToNode(value: null): NullLiteral
-export function valueToNode(value: string): StringLiteral
-export function valueToNode(value: number): NumericLiteral | BinaryExpression | UnaryExpression
-export function valueToNode(value: RegExp): RegExpLiteral
-export function valueToNode(value: ReadonlyArray<undefined | boolean | null | string | number | RegExp | object>): ArrayExpression
-export function valueToNode(value: object): ObjectExpression
-export function valueToNode(value: undefined | boolean | null | string | number | RegExp | object): Expression
-export function removeTypeDuplicates(types: ReadonlyArray<FlowType | false | null | undefined>): FlowType[]
-export function appendToMemberExpression<T extends Pick<MemberExpression, 'object' | 'property'>>(member: T, append: MemberExpression['property'], computed?: boolean): T
-export function inherits<T extends Node | null | undefined>(child: T, parent: Node | null | undefined): T
-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;
-export function getBindingIdentifiers(node: Node, duplicates: true, outerOnly?: boolean): Record<string, Array<Identifier>>
-export function getBindingIdentifiers(node: Node, duplicates?: false, outerOnly?: boolean): Record<string, Identifier>
-export function getBindingIdentifiers(node: Node, duplicates: boolean, outerOnly?: boolean): Record<string, Identifier | Array<Identifier>>
-export function getOuterBindingIdentifiers(node: Node, duplicates: true): Record<string, Array<Identifier>>
-export function getOuterBindingIdentifiers(node: Node, duplicates?: false): Record<string, Identifier>
-export function getOuterBindingIdentifiers(node: Node, duplicates: boolean): Record<string, Identifier | Array<Identifier>>
-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>,
-};
-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;
-export function shallowEqual<T extends object>(actual: object, expected: T): actual is T
-export function buildMatchMemberExpression(match: string, allowPartial?: boolean): (node: Node | null | undefined) => node is MemberExpression
-export function is<T extends Node['type']>(type: T, n: Node | null | undefined, required?: undefined): n is Extract<Node, { type: T }>
-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
-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
-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
-export function matchesPattern(node: Node | null | undefined, match: string | ReadonlyArray<string>, allowPartial?: boolean): node is MemberExpression
-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;
diff --git a/assets/node_modules/@babel/types/lib/index.js b/assets/node_modules/@babel/types/lib/index.js
deleted file mode 100644
index f5bb66b..0000000
--- a/assets/node_modules/@babel/types/lib/index.js
+++ /dev/null
@@ -1,579 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-var _exportNames = {
- react: true,
- assertNode: true,
- createTypeAnnotationBasedOnTypeof: true,
- createUnionTypeAnnotation: true,
- cloneNode: true,
- clone: true,
- cloneDeep: 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, "assertNode", {
- enumerable: true,
- get: function () {
- return _assertNode.default;
- }
-});
-Object.defineProperty(exports, "createTypeAnnotationBasedOnTypeof", {
- enumerable: true,
- get: function () {
- return _createTypeAnnotationBasedOnTypeof.default;
- }
-});
-Object.defineProperty(exports, "createUnionTypeAnnotation", {
- enumerable: true,
- get: function () {
- return _createUnionTypeAnnotation.default;
- }
-});
-Object.defineProperty(exports, "cloneNode", {
- enumerable: true,
- get: function () {
- return _cloneNode.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, "cloneWithoutLoc", {
- enumerable: true,
- get: function () {
- return _cloneWithoutLoc.default;
- }
-});
-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, "inheritInnerComments", {
- enumerable: true,
- get: function () {
- return _inheritInnerComments.default;
- }
-});
-Object.defineProperty(exports, "inheritLeadingComments", {
- enumerable: true,
- get: function () {
- return _inheritLeadingComments.default;
- }
-});
-Object.defineProperty(exports, "inheritsComments", {
- enumerable: true,
- get: function () {
- return _inheritsComments.default;
- }
-});
-Object.defineProperty(exports, "inheritTrailingComments", {
- enumerable: true,
- get: function () {
- return _inheritTrailingComments.default;
- }
-});
-Object.defineProperty(exports, "removeComments", {
- enumerable: true,
- get: function () {
- return _removeComments.default;
- }
-});
-Object.defineProperty(exports, "ensureBlock", {
- enumerable: true,
- get: function () {
- return _ensureBlock.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, "valueToNode", {
- enumerable: true,
- get: function () {
- return _valueToNode.default;
- }
-});
-Object.defineProperty(exports, "appendToMemberExpression", {
- enumerable: true,
- get: function () {
- return _appendToMemberExpression.default;
- }
-});
-Object.defineProperty(exports, "inherits", {
- enumerable: true,
- get: function () {
- return _inherits.default;
- }
-});
-Object.defineProperty(exports, "prependToMemberExpression", {
- enumerable: true,
- get: function () {
- return _prependToMemberExpression.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, "getBindingIdentifiers", {
- enumerable: true,
- get: function () {
- return _getBindingIdentifiers.default;
- }
-});
-Object.defineProperty(exports, "getOuterBindingIdentifiers", {
- enumerable: true,
- get: function () {
- return _getOuterBindingIdentifiers.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, "shallowEqual", {
- enumerable: true,
- get: function () {
- return _shallowEqual.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, "validate", {
- enumerable: true,
- get: function () {
- return _validate.default;
- }
-});
-Object.defineProperty(exports, "buildMatchMemberExpression", {
- enumerable: true,
- get: function () {
- return _buildMatchMemberExpression.default;
- }
-});
-exports.react = void 0;
-
-var _isReactComponent = _interopRequireDefault(require("./validators/react/isReactComponent"));
-
-var _isCompatTag = _interopRequireDefault(require("./validators/react/isCompatTag"));
-
-var _buildChildren = _interopRequireDefault(require("./builders/react/buildChildren"));
-
-var _assertNode = _interopRequireDefault(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;
- Object.defineProperty(exports, key, {
- enumerable: true,
- get: function () {
- return _generated[key];
- }
- });
-});
-
-var _createTypeAnnotationBasedOnTypeof = _interopRequireDefault(require("./builders/flow/createTypeAnnotationBasedOnTypeof"));
-
-var _createUnionTypeAnnotation = _interopRequireDefault(require("./builders/flow/createUnionTypeAnnotation"));
-
-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;
- Object.defineProperty(exports, key, {
- enumerable: true,
- get: function () {
- return _generated2[key];
- }
- });
-});
-
-var _cloneNode = _interopRequireDefault(require("./clone/cloneNode"));
-
-var _clone = _interopRequireDefault(require("./clone/clone"));
-
-var _cloneDeep = _interopRequireDefault(require("./clone/cloneDeep"));
-
-var _cloneWithoutLoc = _interopRequireDefault(require("./clone/cloneWithoutLoc"));
-
-var _addComment = _interopRequireDefault(require("./comments/addComment"));
-
-var _addComments = _interopRequireDefault(require("./comments/addComments"));
-
-var _inheritInnerComments = _interopRequireDefault(require("./comments/inheritInnerComments"));
-
-var _inheritLeadingComments = _interopRequireDefault(require("./comments/inheritLeadingComments"));
-
-var _inheritsComments = _interopRequireDefault(require("./comments/inheritsComments"));
-
-var _inheritTrailingComments = _interopRequireDefault(require("./comments/inheritTrailingComments"));
-
-var _removeComments = _interopRequireDefault(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;
- 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;
- Object.defineProperty(exports, key, {
- enumerable: true,
- get: function () {
- return _constants[key];
- }
- });
-});
-
-var _ensureBlock = _interopRequireDefault(require("./converters/ensureBlock"));
-
-var _toBindingIdentifierName = _interopRequireDefault(require("./converters/toBindingIdentifierName"));
-
-var _toBlock = _interopRequireDefault(require("./converters/toBlock"));
-
-var _toComputedKey = _interopRequireDefault(require("./converters/toComputedKey"));
-
-var _toExpression = _interopRequireDefault(require("./converters/toExpression"));
-
-var _toIdentifier = _interopRequireDefault(require("./converters/toIdentifier"));
-
-var _toKeyAlias = _interopRequireDefault(require("./converters/toKeyAlias"));
-
-var _toSequenceExpression = _interopRequireDefault(require("./converters/toSequenceExpression"));
-
-var _toStatement = _interopRequireDefault(require("./converters/toStatement"));
-
-var _valueToNode = _interopRequireDefault(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;
- Object.defineProperty(exports, key, {
- enumerable: true,
- get: function () {
- return _definitions[key];
- }
- });
-});
-
-var _appendToMemberExpression = _interopRequireDefault(require("./modifications/appendToMemberExpression"));
-
-var _inherits = _interopRequireDefault(require("./modifications/inherits"));
-
-var _prependToMemberExpression = _interopRequireDefault(require("./modifications/prependToMemberExpression"));
-
-var _removeProperties = _interopRequireDefault(require("./modifications/removeProperties"));
-
-var _removePropertiesDeep = _interopRequireDefault(require("./modifications/removePropertiesDeep"));
-
-var _removeTypeDuplicates = _interopRequireDefault(require("./modifications/flow/removeTypeDuplicates"));
-
-var _getBindingIdentifiers = _interopRequireDefault(require("./retrievers/getBindingIdentifiers"));
-
-var _getOuterBindingIdentifiers = _interopRequireDefault(require("./retrievers/getOuterBindingIdentifiers"));
-
-var _traverse = _interopRequireDefault(require("./traverse/traverse"));
-
-var _traverseFast = _interopRequireDefault(require("./traverse/traverseFast"));
-
-var _shallowEqual = _interopRequireDefault(require("./utils/shallowEqual"));
-
-var _is = _interopRequireDefault(require("./validators/is"));
-
-var _isBinding = _interopRequireDefault(require("./validators/isBinding"));
-
-var _isBlockScoped = _interopRequireDefault(require("./validators/isBlockScoped"));
-
-var _isImmutable = _interopRequireDefault(require("./validators/isImmutable"));
-
-var _isLet = _interopRequireDefault(require("./validators/isLet"));
-
-var _isNode = _interopRequireDefault(require("./validators/isNode"));
-
-var _isNodesEquivalent = _interopRequireDefault(require("./validators/isNodesEquivalent"));
-
-var _isPlaceholderType = _interopRequireDefault(require("./validators/isPlaceholderType"));
-
-var _isReferenced = _interopRequireDefault(require("./validators/isReferenced"));
-
-var _isScope = _interopRequireDefault(require("./validators/isScope"));
-
-var _isSpecifierDefault = _interopRequireDefault(require("./validators/isSpecifierDefault"));
-
-var _isType = _interopRequireDefault(require("./validators/isType"));
-
-var _isValidES3Identifier = _interopRequireDefault(require("./validators/isValidES3Identifier"));
-
-var _isValidIdentifier = _interopRequireDefault(require("./validators/isValidIdentifier"));
-
-var _isVar = _interopRequireDefault(require("./validators/isVar"));
-
-var _matchesPattern = _interopRequireDefault(require("./validators/matchesPattern"));
-
-var _validate = _interopRequireDefault(require("./validators/validate"));
-
-var _buildMatchMemberExpression = _interopRequireDefault(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;
- Object.defineProperty(exports, key, {
- enumerable: true,
- get: function () {
- return _generated4[key];
- }
- });
-});
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const react = {
- isReactComponent: _isReactComponent.default,
- isCompatTag: _isCompatTag.default,
- buildChildren: _buildChildren.default
-};
-exports.react = react; \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/index.js.flow b/assets/node_modules/@babel/types/lib/index.js.flow
deleted file mode 100644
index 36808fb..0000000
--- a/assets/node_modules/@babel/types/lib/index.js.flow
+++ /dev/null
@@ -1,2117 +0,0 @@
-// 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;
-}
-
-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;
- 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: any;
- tokens: 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 | BabelNodeTSParameterProperty>;
- 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 | BabelNodeTSParameterProperty>;
- body: BabelNodeBlockStatement;
- generator?: boolean;
- async?: boolean;
- returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
- typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
-}
-
-declare class BabelNodeIdentifier extends BabelNode {
- type: "Identifier";
- name: any;
- 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?: any;
-}
-
-declare class BabelNodeLogicalExpression extends BabelNode {
- type: "LogicalExpression";
- operator: "||" | "&&" | "??";
- left: BabelNodeExpression;
- right: BabelNodeExpression;
-}
-
-declare class BabelNodeMemberExpression extends BabelNode {
- type: "MemberExpression";
- object: BabelNodeExpression;
- property: any;
- 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: any;
- params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>;
- 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: any;
- value: BabelNodeExpression | BabelNodePatternLike;
- computed?: boolean;
- shorthand?: any;
- decorators?: Array<BabelNodeDecorator>;
-}
-
-declare class BabelNodeRestElement extends BabelNode {
- type: "RestElement";
- argument: BabelNodeLVal;
- decorators?: Array<BabelNodeDecorator>;
- 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: any;
- 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>;
- typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
-}
-
-declare class BabelNodeArrowFunctionExpression extends BabelNode {
- type: "ArrowFunctionExpression";
- params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>;
- 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: any;
- superTypeParameters?: BabelNodeTypeParameterInstantiation | BabelNodeTSTypeParameterInstantiation;
- typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
-}
-
-declare class BabelNodeClassDeclaration extends BabelNode {
- type: "ClassDeclaration";
- id: any;
- superClass: any;
- body: any;
- decorators: any;
- abstract?: boolean;
- declare?: boolean;
- mixins: any;
- superTypeParameters: any;
- typeParameters: any;
-}
-
-declare class BabelNodeExportAllDeclaration extends BabelNode {
- type: "ExportAllDeclaration";
- source: BabelNodeStringLiteral;
-}
-
-declare class BabelNodeExportDefaultDeclaration extends BabelNode {
- type: "ExportDefaultDeclaration";
- declaration: BabelNodeFunctionDeclaration | BabelNodeTSDeclareFunction | BabelNodeClassDeclaration | BabelNodeExpression;
-}
-
-declare class BabelNodeExportNamedDeclaration extends BabelNode {
- type: "ExportNamedDeclaration";
- declaration?: any;
- specifiers?: Array<BabelNodeExportSpecifier | BabelNodeExportDefaultSpecifier | BabelNodeExportNamespaceSpecifier>;
- source?: BabelNodeStringLiteral;
- exportKind?: "type" | "value";
-}
-
-declare class BabelNodeExportSpecifier extends BabelNode {
- type: "ExportSpecifier";
- local: BabelNodeIdentifier;
- exported: BabelNodeIdentifier;
-}
-
-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;
- 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;
- importKind?: "type" | "typeof";
-}
-
-declare class BabelNodeMetaProperty extends BabelNode {
- type: "MetaProperty";
- meta: any;
- 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;
- 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>;
-}
-
-declare class BabelNodeYieldExpression extends BabelNode {
- type: "YieldExpression";
- argument?: BabelNodeExpression;
- delegate?: any;
-}
-
-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;
-}
-
-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";
- 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 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>;
- explicit: boolean;
-}
-
-declare class BabelNodeEnumNumberBody extends BabelNode {
- type: "EnumNumberBody";
- members: Array<BabelNodeEnumNumberMember>;
- explicit: boolean;
-}
-
-declare class BabelNodeEnumStringBody extends BabelNode {
- type: "EnumStringBody";
- members: Array<BabelNodeEnumStringMember | BabelNodeEnumDefaultedMember>;
- explicit: boolean;
-}
-
-declare class BabelNodeEnumSymbolBody extends BabelNode {
- type: "EnumSymbolBody";
- members: Array<BabelNodeEnumDefaultedMember>;
-}
-
-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 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: any;
-}
-
-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 BabelNodeAwaitExpression extends BabelNode {
- type: "AwaitExpression";
- argument: BabelNodeExpression;
-}
-
-declare class BabelNodeBindExpression extends BabelNode {
- type: "BindExpression";
- object: any;
- callee: any;
-}
-
-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;
- readonly?: boolean;
-}
-
-declare class BabelNodeOptionalMemberExpression extends BabelNode {
- type: "OptionalMemberExpression";
- object: BabelNodeExpression;
- property: any;
- computed?: boolean;
- optional: boolean;
-}
-
-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 BabelNodeOptionalCallExpression extends BabelNode {
- type: "OptionalCallExpression";
- callee: BabelNodeExpression;
- arguments: Array<BabelNodeExpression | BabelNodeSpreadElement | BabelNodeJSXNamespacedName>;
- optional: boolean;
- typeArguments?: BabelNodeTypeParameterInstantiation;
- typeParameters?: BabelNodeTSTypeParameterInstantiation;
-}
-
-declare class BabelNodeClassPrivateProperty extends BabelNode {
- type: "ClassPrivateProperty";
- key: BabelNodePrivateName;
- value?: BabelNodeExpression;
- decorators?: Array<BabelNodeDecorator>;
-}
-
-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;
- returnType: any;
- typeParameters: any;
-}
-
-declare class BabelNodeImport extends BabelNode {
- type: "Import";
-}
-
-declare class BabelNodeDecorator extends BabelNode {
- type: "Decorator";
- expression: BabelNodeExpression;
-}
-
-declare class BabelNodeDoExpression extends BabelNode {
- type: "DoExpression";
- body: BabelNodeBlockStatement;
-}
-
-declare class BabelNodeExportDefaultSpecifier extends BabelNode {
- type: "ExportDefaultSpecifier";
- exported: BabelNodeIdentifier;
-}
-
-declare class BabelNodeExportNamespaceSpecifier extends BabelNode {
- type: "ExportNamespaceSpecifier";
- exported: BabelNodeIdentifier;
-}
-
-declare class BabelNodePrivateName extends BabelNode {
- type: "PrivateName";
- id: BabelNodeIdentifier;
-}
-
-declare class BabelNodeBigIntLiteral extends BabelNode {
- type: "BigIntLiteral";
- value: string;
-}
-
-declare class BabelNodeTSParameterProperty extends BabelNode {
- type: "TSParameterProperty";
- parameter: BabelNodeIdentifier | BabelNodeAssignmentPattern;
- accessibility?: "public" | "private" | "protected";
- readonly?: boolean;
-}
-
-declare class BabelNodeTSDeclareFunction extends BabelNode {
- type: "TSDeclareFunction";
- id?: BabelNodeIdentifier;
- typeParameters?: BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
- params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>;
- 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;
-}
-
-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;
- optional?: boolean;
- readonly?: boolean;
-}
-
-declare class BabelNodeTSMethodSignature extends BabelNode {
- type: "TSMethodSignature";
- key: BabelNodeExpression;
- typeParameters?: BabelNodeTSTypeParameterDeclaration;
- parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>;
- typeAnnotation?: BabelNodeTSTypeAnnotation;
- computed?: boolean;
- 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 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;
-}
-
-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>;
-}
-
-declare class BabelNodeTSOptionalType extends BabelNode {
- type: "TSOptionalType";
- typeAnnotation: BabelNodeTSType;
-}
-
-declare class BabelNodeTSRestType extends BabelNode {
- type: "TSRestType";
- typeAnnotation: BabelNodeTSType;
-}
-
-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;
- optional?: boolean;
- readonly?: boolean;
-}
-
-declare class BabelNodeTSLiteralType extends BabelNode {
- type: "TSLiteralType";
- literal: BabelNodeNumericLiteral | BabelNodeStringLiteral | BabelNodeBooleanLiteral;
-}
-
-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;
- 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 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 | BabelNodeTypeCastExpression | BabelNodeJSXElement | BabelNodeJSXFragment | BabelNodeAwaitExpression | BabelNodeBindExpression | BabelNodeOptionalMemberExpression | BabelNodePipelinePrimaryTopicReference | BabelNodeOptionalCallExpression | BabelNodeImport | BabelNodeDoExpression | BabelNodeBigIntLiteral | 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 | BabelNodeTSModuleBlock;
-type BabelNodeBlockParent = BabelNodeBlockStatement | BabelNodeCatchClause | BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeSwitchStatement | BabelNodeWhileStatement | BabelNodeArrowFunctionExpression | BabelNodeForOfStatement | BabelNodeClassMethod | BabelNodeClassPrivateMethod | 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 | 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;
-type BabelNodePureish = BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeArrowFunctionExpression | BabelNodeClassExpression | BabelNodeClassDeclaration | BabelNodeBigIntLiteral;
-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;
-type BabelNodeImmutable = BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeJSXAttribute | BabelNodeJSXClosingElement | BabelNodeJSXElement | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXOpeningElement | BabelNodeJSXText | BabelNodeJSXFragment | BabelNodeJSXOpeningFragment | BabelNodeJSXClosingFragment | BabelNodeBigIntLiteral;
-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 | BabelNodeExportDefaultSpecifier | BabelNodeExportNamespaceSpecifier;
-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 | BabelNodeThisTypeAnnotation | BabelNodeTupleTypeAnnotation | BabelNodeTypeofTypeAnnotation | BabelNodeTypeAlias | BabelNodeTypeAnnotation | BabelNodeTypeCastExpression | BabelNodeTypeParameter | BabelNodeTypeParameterDeclaration | BabelNodeTypeParameterInstantiation | BabelNodeUnionTypeAnnotation | BabelNodeVariance | BabelNodeVoidTypeAnnotation;
-type BabelNodeFlowType = BabelNodeAnyTypeAnnotation | BabelNodeArrayTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeBooleanLiteralTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeExistsTypeAnnotation | BabelNodeFunctionTypeAnnotation | BabelNodeGenericTypeAnnotation | BabelNodeInterfaceTypeAnnotation | BabelNodeIntersectionTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeEmptyTypeAnnotation | BabelNodeNullableTypeAnnotation | BabelNodeNumberLiteralTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeObjectTypeAnnotation | BabelNodeStringLiteralTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeTupleTypeAnnotation | BabelNodeTypeofTypeAnnotation | BabelNodeUnionTypeAnnotation | BabelNodeVoidTypeAnnotation;
-type BabelNodeFlowBaseAnnotation = BabelNodeAnyTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeEmptyTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeStringTypeAnnotation | 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 BabelNodePrivate = BabelNodeClassPrivateProperty | BabelNodeClassPrivateMethod | BabelNodePrivateName;
-type BabelNodeTSTypeElement = BabelNodeTSCallSignatureDeclaration | BabelNodeTSConstructSignatureDeclaration | BabelNodeTSPropertySignature | BabelNodeTSMethodSignature | BabelNodeTSIndexSignature;
-type BabelNodeTSType = BabelNodeTSAnyKeyword | BabelNodeTSBooleanKeyword | BabelNodeTSBigIntKeyword | 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;
-
-declare module "@babel/types" {
- declare function arrayExpression(elements?: Array<null | BabelNodeExpression | BabelNodeSpreadElement>): BabelNodeArrayExpression;
- declare function assignmentExpression(operator: string, left: BabelNodeLVal, right: BabelNodeExpression): BabelNodeAssignmentExpression;
- declare function binaryExpression(operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<=", left: BabelNodeExpression, right: BabelNodeExpression): BabelNodeBinaryExpression;
- declare function interpreterDirective(value: string): BabelNodeInterpreterDirective;
- declare function directive(value: BabelNodeDirectiveLiteral): BabelNodeDirective;
- declare function directiveLiteral(value: string): BabelNodeDirectiveLiteral;
- declare function blockStatement(body: Array<BabelNodeStatement>, directives?: Array<BabelNodeDirective>): BabelNodeBlockStatement;
- declare function breakStatement(label?: BabelNodeIdentifier): BabelNodeBreakStatement;
- declare function callExpression(callee: BabelNodeExpression | BabelNodeV8IntrinsicIdentifier, _arguments: Array<BabelNodeExpression | BabelNodeSpreadElement | BabelNodeJSXNamespacedName | BabelNodeArgumentPlaceholder>): BabelNodeCallExpression;
- declare function catchClause(param?: BabelNodeIdentifier | BabelNodeArrayPattern | BabelNodeObjectPattern, body: BabelNodeBlockStatement): BabelNodeCatchClause;
- declare function conditionalExpression(test: BabelNodeExpression, consequent: BabelNodeExpression, alternate: BabelNodeExpression): BabelNodeConditionalExpression;
- declare function continueStatement(label?: BabelNodeIdentifier): BabelNodeContinueStatement;
- declare function debuggerStatement(): BabelNodeDebuggerStatement;
- declare function doWhileStatement(test: BabelNodeExpression, body: BabelNodeStatement): BabelNodeDoWhileStatement;
- declare function emptyStatement(): BabelNodeEmptyStatement;
- declare function expressionStatement(expression: BabelNodeExpression): BabelNodeExpressionStatement;
- declare function file(program: BabelNodeProgram, comments: any, tokens: any): BabelNodeFile;
- declare function forInStatement(left: BabelNodeVariableDeclaration | BabelNodeLVal, right: BabelNodeExpression, body: BabelNodeStatement): BabelNodeForInStatement;
- declare function forStatement(init?: BabelNodeVariableDeclaration | BabelNodeExpression, test?: BabelNodeExpression, update?: BabelNodeExpression, body: BabelNodeStatement): BabelNodeForStatement;
- declare function functionDeclaration(id?: BabelNodeIdentifier, params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>, body: BabelNodeBlockStatement, generator?: boolean, async?: boolean): BabelNodeFunctionDeclaration;
- declare function functionExpression(id?: BabelNodeIdentifier, params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>, body: BabelNodeBlockStatement, generator?: boolean, async?: boolean): BabelNodeFunctionExpression;
- declare function identifier(name: any): BabelNodeIdentifier;
- declare function ifStatement(test: BabelNodeExpression, consequent: BabelNodeStatement, alternate?: BabelNodeStatement): BabelNodeIfStatement;
- declare function labeledStatement(label: BabelNodeIdentifier, body: BabelNodeStatement): BabelNodeLabeledStatement;
- declare function stringLiteral(value: string): BabelNodeStringLiteral;
- declare function numericLiteral(value: number): BabelNodeNumericLiteral;
- declare function nullLiteral(): BabelNodeNullLiteral;
- declare function booleanLiteral(value: boolean): BabelNodeBooleanLiteral;
- declare function regExpLiteral(pattern: string, flags?: any): BabelNodeRegExpLiteral;
- declare function logicalExpression(operator: "||" | "&&" | "??", left: BabelNodeExpression, right: BabelNodeExpression): BabelNodeLogicalExpression;
- declare function memberExpression(object: BabelNodeExpression, property: any, computed?: boolean, optional?: true | false): BabelNodeMemberExpression;
- declare function newExpression(callee: BabelNodeExpression | BabelNodeV8IntrinsicIdentifier, _arguments: Array<BabelNodeExpression | BabelNodeSpreadElement | BabelNodeJSXNamespacedName | BabelNodeArgumentPlaceholder>): BabelNodeNewExpression;
- declare function program(body: Array<BabelNodeStatement>, directives?: Array<BabelNodeDirective>, sourceType?: "script" | "module", interpreter?: BabelNodeInterpreterDirective): BabelNodeProgram;
- declare function objectExpression(properties: Array<BabelNodeObjectMethod | BabelNodeObjectProperty | BabelNodeSpreadElement>): BabelNodeObjectExpression;
- declare function objectMethod(kind?: "method" | "get" | "set", key: any, params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>, body: BabelNodeBlockStatement, computed?: boolean, generator?: boolean, async?: boolean): BabelNodeObjectMethod;
- declare function objectProperty(key: any, value: BabelNodeExpression | BabelNodePatternLike, computed?: boolean, shorthand?: any, decorators?: Array<BabelNodeDecorator>): BabelNodeObjectProperty;
- declare function restElement(argument: BabelNodeLVal): BabelNodeRestElement;
- declare function returnStatement(argument?: BabelNodeExpression): BabelNodeReturnStatement;
- declare function sequenceExpression(expressions: Array<BabelNodeExpression>): BabelNodeSequenceExpression;
- declare function parenthesizedExpression(expression: BabelNodeExpression): BabelNodeParenthesizedExpression;
- declare function switchCase(test?: BabelNodeExpression, consequent: Array<BabelNodeStatement>): BabelNodeSwitchCase;
- declare function switchStatement(discriminant: BabelNodeExpression, cases: Array<BabelNodeSwitchCase>): BabelNodeSwitchStatement;
- declare function thisExpression(): BabelNodeThisExpression;
- declare function throwStatement(argument: BabelNodeExpression): BabelNodeThrowStatement;
- declare function tryStatement(block: any, handler?: BabelNodeCatchClause, finalizer?: BabelNodeBlockStatement): BabelNodeTryStatement;
- declare function unaryExpression(operator: "void" | "throw" | "delete" | "!" | "+" | "-" | "~" | "typeof", argument: BabelNodeExpression, prefix?: boolean): BabelNodeUnaryExpression;
- declare function updateExpression(operator: "++" | "--", argument: BabelNodeExpression, prefix?: boolean): BabelNodeUpdateExpression;
- declare function variableDeclaration(kind: "var" | "let" | "const", declarations: Array<BabelNodeVariableDeclarator>): BabelNodeVariableDeclaration;
- declare function variableDeclarator(id: BabelNodeLVal, init?: BabelNodeExpression): BabelNodeVariableDeclarator;
- declare function whileStatement(test: BabelNodeExpression, body: BabelNodeStatement): BabelNodeWhileStatement;
- declare function withStatement(object: BabelNodeExpression, body: BabelNodeStatement): BabelNodeWithStatement;
- declare function assignmentPattern(left: BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeArrayPattern | BabelNodeMemberExpression, right: BabelNodeExpression): BabelNodeAssignmentPattern;
- declare function arrayPattern(elements: Array<null | BabelNodePatternLike>): BabelNodeArrayPattern;
- declare function arrowFunctionExpression(params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>, body: BabelNodeBlockStatement | BabelNodeExpression, async?: boolean): BabelNodeArrowFunctionExpression;
- declare function classBody(body: Array<BabelNodeClassMethod | BabelNodeClassPrivateMethod | BabelNodeClassProperty | BabelNodeClassPrivateProperty | BabelNodeTSDeclareMethod | BabelNodeTSIndexSignature>): BabelNodeClassBody;
- declare function classExpression(id?: BabelNodeIdentifier, superClass?: BabelNodeExpression, body: BabelNodeClassBody, decorators?: Array<BabelNodeDecorator>): BabelNodeClassExpression;
- declare function classDeclaration(id: any, superClass: any, body: any, decorators: any): BabelNodeClassDeclaration;
- declare function exportAllDeclaration(source: BabelNodeStringLiteral): BabelNodeExportAllDeclaration;
- declare function exportDefaultDeclaration(declaration: BabelNodeFunctionDeclaration | BabelNodeTSDeclareFunction | BabelNodeClassDeclaration | BabelNodeExpression): BabelNodeExportDefaultDeclaration;
- declare function exportNamedDeclaration(declaration?: any, specifiers?: Array<BabelNodeExportSpecifier | BabelNodeExportDefaultSpecifier | BabelNodeExportNamespaceSpecifier>, source?: BabelNodeStringLiteral): BabelNodeExportNamedDeclaration;
- declare function exportSpecifier(local: BabelNodeIdentifier, exported: BabelNodeIdentifier): BabelNodeExportSpecifier;
- declare function forOfStatement(left: BabelNodeVariableDeclaration | BabelNodeLVal, right: BabelNodeExpression, body: BabelNodeStatement, _await?: boolean): BabelNodeForOfStatement;
- declare function importDeclaration(specifiers: Array<BabelNodeImportSpecifier | BabelNodeImportDefaultSpecifier | BabelNodeImportNamespaceSpecifier>, source: BabelNodeStringLiteral): BabelNodeImportDeclaration;
- declare function importDefaultSpecifier(local: BabelNodeIdentifier): BabelNodeImportDefaultSpecifier;
- declare function importNamespaceSpecifier(local: BabelNodeIdentifier): BabelNodeImportNamespaceSpecifier;
- declare function importSpecifier(local: BabelNodeIdentifier, imported: BabelNodeIdentifier): BabelNodeImportSpecifier;
- declare function metaProperty(meta: any, property: BabelNodeIdentifier): BabelNodeMetaProperty;
- declare 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 function objectPattern(properties: Array<BabelNodeRestElement | BabelNodeObjectProperty>): BabelNodeObjectPattern;
- declare function spreadElement(argument: BabelNodeExpression): BabelNodeSpreadElement;
- declare function _super(): BabelNodeSuper;
- declare export { _super as super }
- declare function taggedTemplateExpression(tag: BabelNodeExpression, quasi: BabelNodeTemplateLiteral): BabelNodeTaggedTemplateExpression;
- declare function templateElement(value: { raw: string, cooked?: string }, tail?: boolean): BabelNodeTemplateElement;
- declare function templateLiteral(quasis: Array<BabelNodeTemplateElement>, expressions: Array<BabelNodeExpression>): BabelNodeTemplateLiteral;
- declare function yieldExpression(argument?: BabelNodeExpression, delegate?: any): BabelNodeYieldExpression;
- declare function anyTypeAnnotation(): BabelNodeAnyTypeAnnotation;
- declare function arrayTypeAnnotation(elementType: BabelNodeFlowType): BabelNodeArrayTypeAnnotation;
- declare function booleanTypeAnnotation(): BabelNodeBooleanTypeAnnotation;
- declare function booleanLiteralTypeAnnotation(value: boolean): BabelNodeBooleanLiteralTypeAnnotation;
- declare function nullLiteralTypeAnnotation(): BabelNodeNullLiteralTypeAnnotation;
- declare function classImplements(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterInstantiation): BabelNodeClassImplements;
- declare function declareClass(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, _extends?: Array<BabelNodeInterfaceExtends>, body: BabelNodeObjectTypeAnnotation): BabelNodeDeclareClass;
- declare function declareFunction(id: BabelNodeIdentifier): BabelNodeDeclareFunction;
- declare function declareInterface(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, _extends?: Array<BabelNodeInterfaceExtends>, body: BabelNodeObjectTypeAnnotation): BabelNodeDeclareInterface;
- declare function declareModule(id: BabelNodeIdentifier | BabelNodeStringLiteral, body: BabelNodeBlockStatement, kind?: "CommonJS" | "ES"): BabelNodeDeclareModule;
- declare function declareModuleExports(typeAnnotation: BabelNodeTypeAnnotation): BabelNodeDeclareModuleExports;
- declare function declareTypeAlias(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, right: BabelNodeFlowType): BabelNodeDeclareTypeAlias;
- declare function declareOpaqueType(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, supertype?: BabelNodeFlowType): BabelNodeDeclareOpaqueType;
- declare function declareVariable(id: BabelNodeIdentifier): BabelNodeDeclareVariable;
- declare function declareExportDeclaration(declaration?: BabelNodeFlow, specifiers?: Array<BabelNodeExportSpecifier | BabelNodeExportNamespaceSpecifier>, source?: BabelNodeStringLiteral): BabelNodeDeclareExportDeclaration;
- declare function declareExportAllDeclaration(source: BabelNodeStringLiteral): BabelNodeDeclareExportAllDeclaration;
- declare function declaredPredicate(value: BabelNodeFlow): BabelNodeDeclaredPredicate;
- declare function existsTypeAnnotation(): BabelNodeExistsTypeAnnotation;
- declare function functionTypeAnnotation(typeParameters?: BabelNodeTypeParameterDeclaration, params: Array<BabelNodeFunctionTypeParam>, rest?: BabelNodeFunctionTypeParam, returnType: BabelNodeFlowType): BabelNodeFunctionTypeAnnotation;
- declare function functionTypeParam(name?: BabelNodeIdentifier, typeAnnotation: BabelNodeFlowType): BabelNodeFunctionTypeParam;
- declare function genericTypeAnnotation(id: BabelNodeIdentifier | BabelNodeQualifiedTypeIdentifier, typeParameters?: BabelNodeTypeParameterInstantiation): BabelNodeGenericTypeAnnotation;
- declare function inferredPredicate(): BabelNodeInferredPredicate;
- declare function interfaceExtends(id: BabelNodeIdentifier | BabelNodeQualifiedTypeIdentifier, typeParameters?: BabelNodeTypeParameterInstantiation): BabelNodeInterfaceExtends;
- declare function interfaceDeclaration(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, _extends?: Array<BabelNodeInterfaceExtends>, body: BabelNodeObjectTypeAnnotation): BabelNodeInterfaceDeclaration;
- declare function interfaceTypeAnnotation(_extends?: Array<BabelNodeInterfaceExtends>, body: BabelNodeObjectTypeAnnotation): BabelNodeInterfaceTypeAnnotation;
- declare function intersectionTypeAnnotation(types: Array<BabelNodeFlowType>): BabelNodeIntersectionTypeAnnotation;
- declare function mixedTypeAnnotation(): BabelNodeMixedTypeAnnotation;
- declare function emptyTypeAnnotation(): BabelNodeEmptyTypeAnnotation;
- declare function nullableTypeAnnotation(typeAnnotation: BabelNodeFlowType): BabelNodeNullableTypeAnnotation;
- declare function numberLiteralTypeAnnotation(value: number): BabelNodeNumberLiteralTypeAnnotation;
- declare function numberTypeAnnotation(): BabelNodeNumberTypeAnnotation;
- declare function objectTypeAnnotation(properties: Array<BabelNodeObjectTypeProperty | BabelNodeObjectTypeSpreadProperty>, indexers?: Array<BabelNodeObjectTypeIndexer>, callProperties?: Array<BabelNodeObjectTypeCallProperty>, internalSlots?: Array<BabelNodeObjectTypeInternalSlot>, exact?: boolean): BabelNodeObjectTypeAnnotation;
- declare function objectTypeInternalSlot(id: BabelNodeIdentifier, value: BabelNodeFlowType, optional: boolean, _static: boolean, method: boolean): BabelNodeObjectTypeInternalSlot;
- declare function objectTypeCallProperty(value: BabelNodeFlowType): BabelNodeObjectTypeCallProperty;
- declare function objectTypeIndexer(id?: BabelNodeIdentifier, key: BabelNodeFlowType, value: BabelNodeFlowType, variance?: BabelNodeVariance): BabelNodeObjectTypeIndexer;
- declare function objectTypeProperty(key: BabelNodeIdentifier | BabelNodeStringLiteral, value: BabelNodeFlowType, variance?: BabelNodeVariance): BabelNodeObjectTypeProperty;
- declare function objectTypeSpreadProperty(argument: BabelNodeFlowType): BabelNodeObjectTypeSpreadProperty;
- declare function opaqueType(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, supertype?: BabelNodeFlowType, impltype: BabelNodeFlowType): BabelNodeOpaqueType;
- declare function qualifiedTypeIdentifier(id: BabelNodeIdentifier, qualification: BabelNodeIdentifier | BabelNodeQualifiedTypeIdentifier): BabelNodeQualifiedTypeIdentifier;
- declare function stringLiteralTypeAnnotation(value: string): BabelNodeStringLiteralTypeAnnotation;
- declare function stringTypeAnnotation(): BabelNodeStringTypeAnnotation;
- declare function thisTypeAnnotation(): BabelNodeThisTypeAnnotation;
- declare function tupleTypeAnnotation(types: Array<BabelNodeFlowType>): BabelNodeTupleTypeAnnotation;
- declare function typeofTypeAnnotation(argument: BabelNodeFlowType): BabelNodeTypeofTypeAnnotation;
- declare function typeAlias(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, right: BabelNodeFlowType): BabelNodeTypeAlias;
- declare function typeAnnotation(typeAnnotation: BabelNodeFlowType): BabelNodeTypeAnnotation;
- declare function typeCastExpression(expression: BabelNodeExpression, typeAnnotation: BabelNodeTypeAnnotation): BabelNodeTypeCastExpression;
- declare function typeParameter(bound?: BabelNodeTypeAnnotation, _default?: BabelNodeFlowType, variance?: BabelNodeVariance): BabelNodeTypeParameter;
- declare function typeParameterDeclaration(params: Array<BabelNodeTypeParameter>): BabelNodeTypeParameterDeclaration;
- declare function typeParameterInstantiation(params: Array<BabelNodeFlowType>): BabelNodeTypeParameterInstantiation;
- declare function unionTypeAnnotation(types: Array<BabelNodeFlowType>): BabelNodeUnionTypeAnnotation;
- declare function variance(kind: "minus" | "plus"): BabelNodeVariance;
- declare function voidTypeAnnotation(): BabelNodeVoidTypeAnnotation;
- declare function enumDeclaration(id: BabelNodeIdentifier, body: BabelNodeEnumBooleanBody | BabelNodeEnumNumberBody | BabelNodeEnumStringBody | BabelNodeEnumSymbolBody): BabelNodeEnumDeclaration;
- declare function enumBooleanBody(members: Array<BabelNodeEnumBooleanMember>): BabelNodeEnumBooleanBody;
- declare function enumNumberBody(members: Array<BabelNodeEnumNumberMember>): BabelNodeEnumNumberBody;
- declare function enumStringBody(members: Array<BabelNodeEnumStringMember | BabelNodeEnumDefaultedMember>): BabelNodeEnumStringBody;
- declare function enumSymbolBody(members: Array<BabelNodeEnumDefaultedMember>): BabelNodeEnumSymbolBody;
- declare function enumBooleanMember(id: BabelNodeIdentifier): BabelNodeEnumBooleanMember;
- declare function enumNumberMember(id: BabelNodeIdentifier, init: BabelNodeNumericLiteral): BabelNodeEnumNumberMember;
- declare function enumStringMember(id: BabelNodeIdentifier, init: BabelNodeStringLiteral): BabelNodeEnumStringMember;
- declare function enumDefaultedMember(id: BabelNodeIdentifier): BabelNodeEnumDefaultedMember;
- declare function jsxAttribute(name: BabelNodeJSXIdentifier | BabelNodeJSXNamespacedName, value?: BabelNodeJSXElement | BabelNodeJSXFragment | BabelNodeStringLiteral | BabelNodeJSXExpressionContainer): BabelNodeJSXAttribute;
- declare function jsxClosingElement(name: BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName): BabelNodeJSXClosingElement;
- declare function jsxElement(openingElement: BabelNodeJSXOpeningElement, closingElement?: BabelNodeJSXClosingElement, children: Array<BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment>, selfClosing: any): BabelNodeJSXElement;
- declare function jsxEmptyExpression(): BabelNodeJSXEmptyExpression;
- declare function jsxExpressionContainer(expression: BabelNodeExpression | BabelNodeJSXEmptyExpression): BabelNodeJSXExpressionContainer;
- declare function jsxSpreadChild(expression: BabelNodeExpression): BabelNodeJSXSpreadChild;
- declare function jsxIdentifier(name: string): BabelNodeJSXIdentifier;
- declare function jsxMemberExpression(object: BabelNodeJSXMemberExpression | BabelNodeJSXIdentifier, property: BabelNodeJSXIdentifier): BabelNodeJSXMemberExpression;
- declare function jsxNamespacedName(namespace: BabelNodeJSXIdentifier, name: BabelNodeJSXIdentifier): BabelNodeJSXNamespacedName;
- declare function jsxOpeningElement(name: BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName, attributes: Array<BabelNodeJSXAttribute | BabelNodeJSXSpreadAttribute>, selfClosing?: boolean): BabelNodeJSXOpeningElement;
- declare function jsxSpreadAttribute(argument: BabelNodeExpression): BabelNodeJSXSpreadAttribute;
- declare function jsxText(value: string): BabelNodeJSXText;
- declare function jsxFragment(openingFragment: BabelNodeJSXOpeningFragment, closingFragment: BabelNodeJSXClosingFragment, children: Array<BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment>): BabelNodeJSXFragment;
- declare function jsxOpeningFragment(): BabelNodeJSXOpeningFragment;
- declare function jsxClosingFragment(): BabelNodeJSXClosingFragment;
- declare function noop(): BabelNodeNoop;
- declare function placeholder(expectedNode: "Identifier" | "StringLiteral" | "Expression" | "Statement" | "Declaration" | "BlockStatement" | "ClassBody" | "Pattern", name: BabelNodeIdentifier): BabelNodePlaceholder;
- declare function v8IntrinsicIdentifier(name: string): BabelNodeV8IntrinsicIdentifier;
- declare function argumentPlaceholder(): BabelNodeArgumentPlaceholder;
- declare function awaitExpression(argument: BabelNodeExpression): BabelNodeAwaitExpression;
- declare function bindExpression(object: any, callee: any): BabelNodeBindExpression;
- declare function classProperty(key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression, value?: BabelNodeExpression, typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop, decorators?: Array<BabelNodeDecorator>, computed?: boolean, _static?: boolean): BabelNodeClassProperty;
- declare function optionalMemberExpression(object: BabelNodeExpression, property: any, computed?: boolean, optional: boolean): BabelNodeOptionalMemberExpression;
- declare function pipelineTopicExpression(expression: BabelNodeExpression): BabelNodePipelineTopicExpression;
- declare function pipelineBareFunction(callee: BabelNodeExpression): BabelNodePipelineBareFunction;
- declare function pipelinePrimaryTopicReference(): BabelNodePipelinePrimaryTopicReference;
- declare function optionalCallExpression(callee: BabelNodeExpression, _arguments: Array<BabelNodeExpression | BabelNodeSpreadElement | BabelNodeJSXNamespacedName>, optional: boolean): BabelNodeOptionalCallExpression;
- declare function classPrivateProperty(key: BabelNodePrivateName, value?: BabelNodeExpression, decorators?: Array<BabelNodeDecorator>): BabelNodeClassPrivateProperty;
- declare function classPrivateMethod(kind?: "get" | "set" | "method" | "constructor", key: BabelNodePrivateName, params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>, body: BabelNodeBlockStatement, _static?: boolean): BabelNodeClassPrivateMethod;
- declare function _import(): BabelNodeImport;
- declare export { _import as import }
- declare function decorator(expression: BabelNodeExpression): BabelNodeDecorator;
- declare function doExpression(body: BabelNodeBlockStatement): BabelNodeDoExpression;
- declare function exportDefaultSpecifier(exported: BabelNodeIdentifier): BabelNodeExportDefaultSpecifier;
- declare function exportNamespaceSpecifier(exported: BabelNodeIdentifier): BabelNodeExportNamespaceSpecifier;
- declare function privateName(id: BabelNodeIdentifier): BabelNodePrivateName;
- declare function bigIntLiteral(value: string): BabelNodeBigIntLiteral;
- declare function tsParameterProperty(parameter: BabelNodeIdentifier | BabelNodeAssignmentPattern): BabelNodeTSParameterProperty;
- declare function tsDeclareFunction(id?: BabelNodeIdentifier, typeParameters?: BabelNodeTSTypeParameterDeclaration | BabelNodeNoop, params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>, returnType?: BabelNodeTSTypeAnnotation | BabelNodeNoop): BabelNodeTSDeclareFunction;
- declare function tsDeclareMethod(decorators?: Array<BabelNodeDecorator>, key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression, typeParameters?: BabelNodeTSTypeParameterDeclaration | BabelNodeNoop, params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>, returnType?: BabelNodeTSTypeAnnotation | BabelNodeNoop): BabelNodeTSDeclareMethod;
- declare function tsQualifiedName(left: BabelNodeTSEntityName, right: BabelNodeIdentifier): BabelNodeTSQualifiedName;
- declare function tsCallSignatureDeclaration(typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSCallSignatureDeclaration;
- declare function tsConstructSignatureDeclaration(typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSConstructSignatureDeclaration;
- declare function tsPropertySignature(key: BabelNodeExpression, typeAnnotation?: BabelNodeTSTypeAnnotation, initializer?: BabelNodeExpression): BabelNodeTSPropertySignature;
- declare function tsMethodSignature(key: BabelNodeExpression, typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSMethodSignature;
- declare function tsIndexSignature(parameters: Array<BabelNodeIdentifier>, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSIndexSignature;
- declare function tsAnyKeyword(): BabelNodeTSAnyKeyword;
- declare function tsBooleanKeyword(): BabelNodeTSBooleanKeyword;
- declare function tsBigIntKeyword(): BabelNodeTSBigIntKeyword;
- declare function tsNeverKeyword(): BabelNodeTSNeverKeyword;
- declare function tsNullKeyword(): BabelNodeTSNullKeyword;
- declare function tsNumberKeyword(): BabelNodeTSNumberKeyword;
- declare function tsObjectKeyword(): BabelNodeTSObjectKeyword;
- declare function tsStringKeyword(): BabelNodeTSStringKeyword;
- declare function tsSymbolKeyword(): BabelNodeTSSymbolKeyword;
- declare function tsUndefinedKeyword(): BabelNodeTSUndefinedKeyword;
- declare function tsUnknownKeyword(): BabelNodeTSUnknownKeyword;
- declare function tsVoidKeyword(): BabelNodeTSVoidKeyword;
- declare function tsThisType(): BabelNodeTSThisType;
- declare function tsFunctionType(typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSFunctionType;
- declare function tsConstructorType(typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSConstructorType;
- declare function tsTypeReference(typeName: BabelNodeTSEntityName, typeParameters?: BabelNodeTSTypeParameterInstantiation): BabelNodeTSTypeReference;
- declare function tsTypePredicate(parameterName: BabelNodeIdentifier | BabelNodeTSThisType, typeAnnotation?: BabelNodeTSTypeAnnotation, asserts?: boolean): BabelNodeTSTypePredicate;
- declare function tsTypeQuery(exprName: BabelNodeTSEntityName | BabelNodeTSImportType): BabelNodeTSTypeQuery;
- declare function tsTypeLiteral(members: Array<BabelNodeTSTypeElement>): BabelNodeTSTypeLiteral;
- declare function tsArrayType(elementType: BabelNodeTSType): BabelNodeTSArrayType;
- declare function tsTupleType(elementTypes: Array<BabelNodeTSType>): BabelNodeTSTupleType;
- declare function tsOptionalType(typeAnnotation: BabelNodeTSType): BabelNodeTSOptionalType;
- declare function tsRestType(typeAnnotation: BabelNodeTSType): BabelNodeTSRestType;
- declare function tsUnionType(types: Array<BabelNodeTSType>): BabelNodeTSUnionType;
- declare function tsIntersectionType(types: Array<BabelNodeTSType>): BabelNodeTSIntersectionType;
- declare function tsConditionalType(checkType: BabelNodeTSType, extendsType: BabelNodeTSType, trueType: BabelNodeTSType, falseType: BabelNodeTSType): BabelNodeTSConditionalType;
- declare function tsInferType(typeParameter: BabelNodeTSTypeParameter): BabelNodeTSInferType;
- declare function tsParenthesizedType(typeAnnotation: BabelNodeTSType): BabelNodeTSParenthesizedType;
- declare function tsTypeOperator(typeAnnotation: BabelNodeTSType): BabelNodeTSTypeOperator;
- declare function tsIndexedAccessType(objectType: BabelNodeTSType, indexType: BabelNodeTSType): BabelNodeTSIndexedAccessType;
- declare function tsMappedType(typeParameter: BabelNodeTSTypeParameter, typeAnnotation?: BabelNodeTSType): BabelNodeTSMappedType;
- declare function tsLiteralType(literal: BabelNodeNumericLiteral | BabelNodeStringLiteral | BabelNodeBooleanLiteral): BabelNodeTSLiteralType;
- declare function tsExpressionWithTypeArguments(expression: BabelNodeTSEntityName, typeParameters?: BabelNodeTSTypeParameterInstantiation): BabelNodeTSExpressionWithTypeArguments;
- declare function tsInterfaceDeclaration(id: BabelNodeIdentifier, typeParameters?: BabelNodeTSTypeParameterDeclaration, _extends?: Array<BabelNodeTSExpressionWithTypeArguments>, body: BabelNodeTSInterfaceBody): BabelNodeTSInterfaceDeclaration;
- declare function tsInterfaceBody(body: Array<BabelNodeTSTypeElement>): BabelNodeTSInterfaceBody;
- declare function tsTypeAliasDeclaration(id: BabelNodeIdentifier, typeParameters?: BabelNodeTSTypeParameterDeclaration, typeAnnotation: BabelNodeTSType): BabelNodeTSTypeAliasDeclaration;
- declare function tsAsExpression(expression: BabelNodeExpression, typeAnnotation: BabelNodeTSType): BabelNodeTSAsExpression;
- declare function tsTypeAssertion(typeAnnotation: BabelNodeTSType, expression: BabelNodeExpression): BabelNodeTSTypeAssertion;
- declare function tsEnumDeclaration(id: BabelNodeIdentifier, members: Array<BabelNodeTSEnumMember>): BabelNodeTSEnumDeclaration;
- declare function tsEnumMember(id: BabelNodeIdentifier | BabelNodeStringLiteral, initializer?: BabelNodeExpression): BabelNodeTSEnumMember;
- declare function tsModuleDeclaration(id: BabelNodeIdentifier | BabelNodeStringLiteral, body: BabelNodeTSModuleBlock | BabelNodeTSModuleDeclaration): BabelNodeTSModuleDeclaration;
- declare function tsModuleBlock(body: Array<BabelNodeStatement>): BabelNodeTSModuleBlock;
- declare function tsImportType(argument: BabelNodeStringLiteral, qualifier?: BabelNodeTSEntityName, typeParameters?: BabelNodeTSTypeParameterInstantiation): BabelNodeTSImportType;
- declare function tsImportEqualsDeclaration(id: BabelNodeIdentifier, moduleReference: BabelNodeTSEntityName | BabelNodeTSExternalModuleReference): BabelNodeTSImportEqualsDeclaration;
- declare function tsExternalModuleReference(expression: BabelNodeStringLiteral): BabelNodeTSExternalModuleReference;
- declare function tsNonNullExpression(expression: BabelNodeExpression): BabelNodeTSNonNullExpression;
- declare function tsExportAssignment(expression: BabelNodeExpression): BabelNodeTSExportAssignment;
- declare function tsNamespaceExportDeclaration(id: BabelNodeIdentifier): BabelNodeTSNamespaceExportDeclaration;
- declare function tsTypeAnnotation(typeAnnotation: BabelNodeTSType): BabelNodeTSTypeAnnotation;
- declare function tsTypeParameterInstantiation(params: Array<BabelNodeTSType>): BabelNodeTSTypeParameterInstantiation;
- declare function tsTypeParameterDeclaration(params: Array<BabelNodeTSTypeParameter>): BabelNodeTSTypeParameterDeclaration;
- declare function tsTypeParameter(constraint?: BabelNodeTSType, _default?: BabelNodeTSType, name: string): BabelNodeTSTypeParameter;
- declare function isArrayExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeArrayExpression)
- declare function isAssignmentExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeAssignmentExpression)
- declare function isBinaryExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBinaryExpression)
- declare function isInterpreterDirective(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeInterpreterDirective)
- declare function isDirective(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDirective)
- declare function isDirectiveLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDirectiveLiteral)
- declare function isBlockStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBlockStatement)
- declare function isBreakStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBreakStatement)
- declare function isCallExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeCallExpression)
- declare function isCatchClause(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeCatchClause)
- declare function isConditionalExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeConditionalExpression)
- declare function isContinueStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeContinueStatement)
- declare function isDebuggerStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDebuggerStatement)
- declare function isDoWhileStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDoWhileStatement)
- declare function isEmptyStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEmptyStatement)
- declare function isExpressionStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExpressionStatement)
- declare function isFile(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeFile)
- declare function isForInStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeForInStatement)
- declare function isForStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeForStatement)
- declare function isFunctionDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeFunctionDeclaration)
- declare function isFunctionExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeFunctionExpression)
- declare function isIdentifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeIdentifier)
- declare function isIfStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeIfStatement)
- declare function isLabeledStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeLabeledStatement)
- declare function isStringLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeStringLiteral)
- declare function isNumericLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNumericLiteral)
- declare function isNullLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNullLiteral)
- declare function isBooleanLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBooleanLiteral)
- declare function isRegExpLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeRegExpLiteral)
- declare function isLogicalExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeLogicalExpression)
- declare function isMemberExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeMemberExpression)
- declare function isNewExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNewExpression)
- declare function isProgram(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeProgram)
- declare function isObjectExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectExpression)
- declare function isObjectMethod(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectMethod)
- declare function isObjectProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectProperty)
- declare function isRestElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeRestElement)
- declare function isReturnStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeReturnStatement)
- declare function isSequenceExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSequenceExpression)
- declare function isParenthesizedExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeParenthesizedExpression)
- declare function isSwitchCase(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSwitchCase)
- declare function isSwitchStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSwitchStatement)
- declare function isThisExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeThisExpression)
- declare function isThrowStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeThrowStatement)
- declare function isTryStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTryStatement)
- declare function isUnaryExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeUnaryExpression)
- declare function isUpdateExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeUpdateExpression)
- declare function isVariableDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeVariableDeclaration)
- declare function isVariableDeclarator(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeVariableDeclarator)
- declare function isWhileStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeWhileStatement)
- declare function isWithStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeWithStatement)
- declare function isAssignmentPattern(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeAssignmentPattern)
- declare function isArrayPattern(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeArrayPattern)
- declare function isArrowFunctionExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeArrowFunctionExpression)
- declare function isClassBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassBody)
- declare function isClassExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassExpression)
- declare function isClassDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassDeclaration)
- declare function isExportAllDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportAllDeclaration)
- declare function isExportDefaultDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportDefaultDeclaration)
- declare function isExportNamedDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportNamedDeclaration)
- declare function isExportSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportSpecifier)
- declare function isForOfStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeForOfStatement)
- declare function isImportDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImportDeclaration)
- declare function isImportDefaultSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImportDefaultSpecifier)
- declare function isImportNamespaceSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImportNamespaceSpecifier)
- declare function isImportSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImportSpecifier)
- declare function isMetaProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeMetaProperty)
- declare function isClassMethod(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassMethod)
- declare function isObjectPattern(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectPattern)
- declare function isSpreadElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSpreadElement)
- declare function isSuper(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSuper)
- declare function isTaggedTemplateExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTaggedTemplateExpression)
- declare function isTemplateElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTemplateElement)
- declare function isTemplateLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTemplateLiteral)
- declare function isYieldExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeYieldExpression)
- declare function isAnyTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeAnyTypeAnnotation)
- declare function isArrayTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeArrayTypeAnnotation)
- declare function isBooleanTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBooleanTypeAnnotation)
- declare function isBooleanLiteralTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBooleanLiteralTypeAnnotation)
- declare function isNullLiteralTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNullLiteralTypeAnnotation)
- declare function isClassImplements(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassImplements)
- declare function isDeclareClass(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareClass)
- declare function isDeclareFunction(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareFunction)
- declare function isDeclareInterface(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareInterface)
- declare function isDeclareModule(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareModule)
- declare function isDeclareModuleExports(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareModuleExports)
- declare function isDeclareTypeAlias(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareTypeAlias)
- declare function isDeclareOpaqueType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareOpaqueType)
- declare function isDeclareVariable(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareVariable)
- declare function isDeclareExportDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareExportDeclaration)
- declare function isDeclareExportAllDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareExportAllDeclaration)
- declare function isDeclaredPredicate(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclaredPredicate)
- declare function isExistsTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExistsTypeAnnotation)
- declare function isFunctionTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeFunctionTypeAnnotation)
- declare function isFunctionTypeParam(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeFunctionTypeParam)
- declare function isGenericTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeGenericTypeAnnotation)
- declare function isInferredPredicate(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeInferredPredicate)
- declare function isInterfaceExtends(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeInterfaceExtends)
- declare function isInterfaceDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeInterfaceDeclaration)
- declare function isInterfaceTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeInterfaceTypeAnnotation)
- declare function isIntersectionTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeIntersectionTypeAnnotation)
- declare function isMixedTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeMixedTypeAnnotation)
- declare function isEmptyTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEmptyTypeAnnotation)
- declare function isNullableTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNullableTypeAnnotation)
- declare function isNumberLiteralTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNumberLiteralTypeAnnotation)
- declare function isNumberTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNumberTypeAnnotation)
- declare function isObjectTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeAnnotation)
- declare function isObjectTypeInternalSlot(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeInternalSlot)
- declare function isObjectTypeCallProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeCallProperty)
- declare function isObjectTypeIndexer(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeIndexer)
- declare function isObjectTypeProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeProperty)
- declare function isObjectTypeSpreadProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeSpreadProperty)
- declare function isOpaqueType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeOpaqueType)
- declare function isQualifiedTypeIdentifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeQualifiedTypeIdentifier)
- declare function isStringLiteralTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeStringLiteralTypeAnnotation)
- declare function isStringTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeStringTypeAnnotation)
- declare function isThisTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeThisTypeAnnotation)
- declare function isTupleTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTupleTypeAnnotation)
- declare function isTypeofTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeofTypeAnnotation)
- declare function isTypeAlias(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeAlias)
- declare function isTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeAnnotation)
- declare function isTypeCastExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeCastExpression)
- declare function isTypeParameter(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeParameter)
- declare function isTypeParameterDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeParameterDeclaration)
- declare function isTypeParameterInstantiation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeParameterInstantiation)
- declare function isUnionTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeUnionTypeAnnotation)
- declare function isVariance(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeVariance)
- declare function isVoidTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeVoidTypeAnnotation)
- declare function isEnumDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumDeclaration)
- declare function isEnumBooleanBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumBooleanBody)
- declare function isEnumNumberBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumNumberBody)
- declare function isEnumStringBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumStringBody)
- declare function isEnumSymbolBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumSymbolBody)
- declare function isEnumBooleanMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumBooleanMember)
- declare function isEnumNumberMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumNumberMember)
- declare function isEnumStringMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumStringMember)
- declare function isEnumDefaultedMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumDefaultedMember)
- declare function isJSXAttribute(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXAttribute)
- declare function isJSXClosingElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXClosingElement)
- declare function isJSXElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXElement)
- declare function isJSXEmptyExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXEmptyExpression)
- declare function isJSXExpressionContainer(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXExpressionContainer)
- declare function isJSXSpreadChild(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXSpreadChild)
- declare function isJSXIdentifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXIdentifier)
- declare function isJSXMemberExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXMemberExpression)
- declare function isJSXNamespacedName(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXNamespacedName)
- declare function isJSXOpeningElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXOpeningElement)
- declare function isJSXSpreadAttribute(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXSpreadAttribute)
- declare function isJSXText(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXText)
- declare function isJSXFragment(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXFragment)
- declare function isJSXOpeningFragment(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXOpeningFragment)
- declare function isJSXClosingFragment(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXClosingFragment)
- declare function isNoop(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNoop)
- declare function isPlaceholder(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodePlaceholder)
- declare function isV8IntrinsicIdentifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeV8IntrinsicIdentifier)
- declare function isArgumentPlaceholder(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeArgumentPlaceholder)
- declare function isAwaitExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeAwaitExpression)
- declare function isBindExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBindExpression)
- declare function isClassProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassProperty)
- declare function isOptionalMemberExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeOptionalMemberExpression)
- declare function isPipelineTopicExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodePipelineTopicExpression)
- declare function isPipelineBareFunction(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodePipelineBareFunction)
- declare function isPipelinePrimaryTopicReference(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodePipelinePrimaryTopicReference)
- declare function isOptionalCallExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeOptionalCallExpression)
- declare function isClassPrivateProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassPrivateProperty)
- declare function isClassPrivateMethod(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassPrivateMethod)
- declare function isImport(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImport)
- declare function isDecorator(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDecorator)
- declare function isDoExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDoExpression)
- declare function isExportDefaultSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportDefaultSpecifier)
- declare function isExportNamespaceSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportNamespaceSpecifier)
- declare function isPrivateName(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodePrivateName)
- declare function isBigIntLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBigIntLiteral)
- declare function isTSParameterProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSParameterProperty)
- declare function isTSDeclareFunction(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSDeclareFunction)
- declare function isTSDeclareMethod(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSDeclareMethod)
- declare function isTSQualifiedName(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSQualifiedName)
- declare function isTSCallSignatureDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSCallSignatureDeclaration)
- declare function isTSConstructSignatureDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSConstructSignatureDeclaration)
- declare function isTSPropertySignature(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSPropertySignature)
- declare function isTSMethodSignature(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSMethodSignature)
- declare function isTSIndexSignature(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSIndexSignature)
- declare function isTSAnyKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSAnyKeyword)
- declare function isTSBooleanKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSBooleanKeyword)
- declare function isTSBigIntKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSBigIntKeyword)
- declare function isTSNeverKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNeverKeyword)
- declare function isTSNullKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNullKeyword)
- declare function isTSNumberKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNumberKeyword)
- declare function isTSObjectKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSObjectKeyword)
- declare function isTSStringKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSStringKeyword)
- declare function isTSSymbolKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSSymbolKeyword)
- declare function isTSUndefinedKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSUndefinedKeyword)
- declare function isTSUnknownKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSUnknownKeyword)
- declare function isTSVoidKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSVoidKeyword)
- declare function isTSThisType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSThisType)
- declare function isTSFunctionType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSFunctionType)
- declare function isTSConstructorType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSConstructorType)
- declare function isTSTypeReference(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeReference)
- declare function isTSTypePredicate(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypePredicate)
- declare function isTSTypeQuery(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeQuery)
- declare function isTSTypeLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeLiteral)
- declare function isTSArrayType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSArrayType)
- declare function isTSTupleType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTupleType)
- declare function isTSOptionalType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSOptionalType)
- declare function isTSRestType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSRestType)
- declare function isTSUnionType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSUnionType)
- declare function isTSIntersectionType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSIntersectionType)
- declare function isTSConditionalType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSConditionalType)
- declare function isTSInferType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSInferType)
- declare function isTSParenthesizedType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSParenthesizedType)
- declare function isTSTypeOperator(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeOperator)
- declare function isTSIndexedAccessType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSIndexedAccessType)
- declare function isTSMappedType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSMappedType)
- declare function isTSLiteralType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSLiteralType)
- declare function isTSExpressionWithTypeArguments(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSExpressionWithTypeArguments)
- declare function isTSInterfaceDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSInterfaceDeclaration)
- declare function isTSInterfaceBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSInterfaceBody)
- declare function isTSTypeAliasDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeAliasDeclaration)
- declare function isTSAsExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSAsExpression)
- declare function isTSTypeAssertion(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeAssertion)
- declare function isTSEnumDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSEnumDeclaration)
- declare function isTSEnumMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSEnumMember)
- declare function isTSModuleDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSModuleDeclaration)
- declare function isTSModuleBlock(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSModuleBlock)
- declare function isTSImportType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSImportType)
- declare function isTSImportEqualsDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSImportEqualsDeclaration)
- declare function isTSExternalModuleReference(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSExternalModuleReference)
- declare function isTSNonNullExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNonNullExpression)
- declare function isTSExportAssignment(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSExportAssignment)
- declare function isTSNamespaceExportDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNamespaceExportDeclaration)
- declare function isTSTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeAnnotation)
- declare function isTSTypeParameterInstantiation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeParameterInstantiation)
- declare function isTSTypeParameterDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeParameterDeclaration)
- declare function isTSTypeParameter(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeParameter)
- declare function isExpression(node: ?Object, opts?: ?Object): boolean
- declare function isBinary(node: ?Object, opts?: ?Object): boolean
- declare function isScopable(node: ?Object, opts?: ?Object): boolean
- declare function isBlockParent(node: ?Object, opts?: ?Object): boolean
- declare function isBlock(node: ?Object, opts?: ?Object): boolean
- declare function isStatement(node: ?Object, opts?: ?Object): boolean
- declare function isTerminatorless(node: ?Object, opts?: ?Object): boolean
- declare function isCompletionStatement(node: ?Object, opts?: ?Object): boolean
- declare function isConditional(node: ?Object, opts?: ?Object): boolean
- declare function isLoop(node: ?Object, opts?: ?Object): boolean
- declare function isWhile(node: ?Object, opts?: ?Object): boolean
- declare function isExpressionWrapper(node: ?Object, opts?: ?Object): boolean
- declare function isFor(node: ?Object, opts?: ?Object): boolean
- declare function isForXStatement(node: ?Object, opts?: ?Object): boolean
- declare function isFunction(node: ?Object, opts?: ?Object): boolean
- declare function isFunctionParent(node: ?Object, opts?: ?Object): boolean
- declare function isPureish(node: ?Object, opts?: ?Object): boolean
- declare function isDeclaration(node: ?Object, opts?: ?Object): boolean
- declare function isPatternLike(node: ?Object, opts?: ?Object): boolean
- declare function isLVal(node: ?Object, opts?: ?Object): boolean
- declare function isTSEntityName(node: ?Object, opts?: ?Object): boolean
- declare function isLiteral(node: ?Object, opts?: ?Object): boolean
- declare function isImmutable(node: ?Object, opts?: ?Object): boolean
- declare function isUserWhitespacable(node: ?Object, opts?: ?Object): boolean
- declare function isMethod(node: ?Object, opts?: ?Object): boolean
- declare function isObjectMember(node: ?Object, opts?: ?Object): boolean
- declare function isProperty(node: ?Object, opts?: ?Object): boolean
- declare function isUnaryLike(node: ?Object, opts?: ?Object): boolean
- declare function isPattern(node: ?Object, opts?: ?Object): boolean
- declare function isClass(node: ?Object, opts?: ?Object): boolean
- declare function isModuleDeclaration(node: ?Object, opts?: ?Object): boolean
- declare function isExportDeclaration(node: ?Object, opts?: ?Object): boolean
- declare function isModuleSpecifier(node: ?Object, opts?: ?Object): boolean
- declare function isFlow(node: ?Object, opts?: ?Object): boolean
- declare function isFlowType(node: ?Object, opts?: ?Object): boolean
- declare function isFlowBaseAnnotation(node: ?Object, opts?: ?Object): boolean
- declare function isFlowDeclaration(node: ?Object, opts?: ?Object): boolean
- declare function isFlowPredicate(node: ?Object, opts?: ?Object): boolean
- declare function isEnumBody(node: ?Object, opts?: ?Object): boolean
- declare function isEnumMember(node: ?Object, opts?: ?Object): boolean
- declare function isJSX(node: ?Object, opts?: ?Object): boolean
- declare function isPrivate(node: ?Object, opts?: ?Object): boolean
- declare function isTSTypeElement(node: ?Object, opts?: ?Object): boolean
- declare function isTSType(node: ?Object, opts?: ?Object): boolean
- declare function isNumberLiteral(node: ?Object, opts?: ?Object): boolean
- declare function isRegexLiteral(node: ?Object, opts?: ?Object): boolean
- declare function isRestProperty(node: ?Object, opts?: ?Object): boolean
- declare function isSpreadProperty(node: ?Object, opts?: ?Object): boolean
- declare function createTypeAnnotationBasedOnTypeof(type: 'string' | 'number' | 'undefined' | 'boolean' | 'function' | 'object' | 'symbol'): BabelNodeTypeAnnotation
- declare function createUnionTypeAnnotation(types: Array<BabelNodeFlowType>): BabelNodeUnionTypeAnnotation
- declare function buildChildren(node: { children: Array<BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment | BabelNodeJSXEmptyExpression> }): Array<BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment>
- declare function clone<T>(n: T): T;
- declare function cloneDeep<T>(n: T): T;
- declare function cloneNode<T>(n: T, deep?: boolean): T;
- declare function cloneWithoutLoc<T>(n: T): T;
- declare type CommentTypeShorthand = 'leading' | 'inner' | 'trailing'
- declare function addComment<T: Node>(node: T, type: CommentTypeShorthand, content: string, line?: boolean): T
- declare function addComments<T: Node>(node: T, type: CommentTypeShorthand, comments: Array<Comment>): T
- declare function inheritInnerComments(node: Node, parent: Node): void
- declare function inheritLeadingComments(node: Node, parent: Node): void
- declare function inheritsComments<T: Node>(node: T, parent: Node): void
- declare function inheritTrailingComments(node: Node, parent: Node): void
- declare function removeComments<T: Node>(node: T): T
- declare function ensureBlock(node: BabelNode, key: string): BabelNodeBlockStatement
- declare function toBindingIdentifierName(name?: ?string): string
- declare function toBlock(node: BabelNodeStatement | BabelNodeExpression, parent?: BabelNodeFunction | null): BabelNodeBlockStatement
- declare function toComputedKey(node: BabelNodeMethod | BabelNodeProperty, key?: BabelNodeExpression | BabelNodeIdentifier): BabelNodeExpression
- declare function toExpression(node: BabelNodeExpressionStatement | BabelNodeExpression | BabelNodeClass | BabelNodeFunction): BabelNodeExpression
- declare function toIdentifier(name?: ?string): string
- declare function toKeyAlias(node: BabelNodeMethod | BabelNodeProperty, key?: BabelNode): string
- declare function toStatement(node: BabelNodeStatement | BabelNodeClass | BabelNodeFunction | BabelNodeAssignmentExpression, ignore?: boolean): BabelNodeStatement | void
- declare function valueToNode(value: any): BabelNodeExpression
- declare function removeTypeDuplicates(types: Array<BabelNodeFlowType>): Array<BabelNodeFlowType>
- declare function appendToMemberExpression(member: BabelNodeMemberExpression, append: BabelNode, computed?: boolean): BabelNodeMemberExpression
- declare function inherits<T: Node>(child: T, parent: BabelNode | null | void): T
- declare function prependToMemberExpression(member: BabelNodeMemberExpression, prepend: BabelNodeExpression): BabelNodeMemberExpression
- declare function removeProperties<T>(n: T, opts: ?{}): void;
- declare function removePropertiesDeep<T>(n: T, opts: ?{}): T;
- declare function getBindingIdentifiers(node: BabelNode, duplicates: boolean, outerOnly?: boolean): { [key: string]: BabelNodeIdentifier | Array<BabelNodeIdentifier> }
- declare function getOuterBindingIdentifiers(node: Node, 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 function traverse<T>(n: BabelNode, TraversalHandler<T> | TraversalHandlers<T>, state?: T): void;
- declare function traverseFast<T>(n: Node, h: TraversalHandler<T>, state?: T): void;
- declare function shallowEqual(actual: Object, expected: Object): boolean
- declare function buildMatchMemberExpression(match: string, allowPartial?: boolean): (?BabelNode) => boolean
- declare function is(type: string, n: BabelNode, opts: Object): boolean;
- declare function isBinding(node: BabelNode, parent: BabelNode, grandparent?: BabelNode): boolean
- declare function isBlockScoped(node: BabelNode): boolean
- declare function isImmutable(node: BabelNode): boolean
- declare function isLet(node: BabelNode): boolean
- declare function isNode(node: ?Object): boolean
- declare function isNodesEquivalent(a: any, b: any): boolean
- declare function isPlaceholderType(placeholderType: string, targetType: string): boolean
- declare function isReferenced(node: BabelNode, parent: BabelNode, grandparent?: BabelNode): boolean
- declare function isScope(node: BabelNode, parent: BabelNode): boolean
- declare function isSpecifierDefault(specifier: BabelNodeModuleSpecifier): boolean
- declare function isType(nodetype: ?string, targetType: string): boolean
- declare function isValidES3Identifier(name: string): boolean
- declare function isValidES3Identifier(name: string): boolean
- declare function isValidIdentifier(name: string): boolean
- declare function isVar(node: BabelNode): boolean
- declare function matchesPattern(node: ?BabelNode, match: string | Array<string>, allowPartial?: boolean): boolean
- declare function validate(n: BabelNode, key: string, value: mixed): void;
-}
diff --git a/assets/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js b/assets/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js
deleted file mode 100644
index 6a0ac93..0000000
--- a/assets/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js
+++ /dev/null
@@ -1,15 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js b/assets/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js
deleted file mode 100644
index 5802683..0000000
--- a/assets/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js
+++ /dev/null
@@ -1,74 +0,0 @@
-"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 = [];
- 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.indexOf(node.types) < 0) {
- nodes = nodes.concat(node.types);
- typeGroups.push(node.types);
- }
-
- continue;
- }
-
- if ((0, _generated.isGenericTypeAnnotation)(node)) {
- const name = node.id.name;
-
- 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/assets/node_modules/@babel/types/lib/modifications/inherits.js b/assets/node_modules/@babel/types/lib/modifications/inherits.js
deleted file mode 100644
index 64d72fc..0000000
--- a/assets/node_modules/@babel/types/lib/modifications/inherits.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = inherits;
-
-var _constants = require("../constants");
-
-var _inheritsComments = _interopRequireDefault(require("../comments/inheritsComments"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js b/assets/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js
deleted file mode 100644
index ee6de0e..0000000
--- a/assets/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js
+++ /dev/null
@@ -1,13 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/modifications/removeProperties.js b/assets/node_modules/@babel/types/lib/modifications/removeProperties.js
deleted file mode 100644
index f9cf8e6..0000000
--- a/assets/node_modules/@babel/types/lib/modifications/removeProperties.js
+++ /dev/null
@@ -1,30 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js b/assets/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js
deleted file mode 100644
index d11a84a..0000000
--- a/assets/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = removePropertiesDeep;
-
-var _traverseFast = _interopRequireDefault(require("../traverse/traverseFast"));
-
-var _removeProperties = _interopRequireDefault(require("./removeProperties"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function removePropertiesDeep(tree, opts) {
- (0, _traverseFast.default)(tree, _removeProperties.default, opts);
- return tree;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js b/assets/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js
deleted file mode 100644
index 189f4b8..0000000
--- a/assets/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js
+++ /dev/null
@@ -1,103 +0,0 @@
-"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)) {
- 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"],
- 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/assets/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js b/assets/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js
deleted file mode 100644
index 8e1e3cb..0000000
--- a/assets/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = getOuterBindingIdentifiers;
-
-var _getBindingIdentifiers = _interopRequireDefault(require("./getBindingIdentifiers"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function getOuterBindingIdentifiers(node, duplicates) {
- return (0, _getBindingIdentifiers.default)(node, duplicates, true);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/traverse/traverse.js b/assets/node_modules/@babel/types/lib/traverse/traverse.js
deleted file mode 100644
index 775aed1..0000000
--- a/assets/node_modules/@babel/types/lib/traverse/traverse.js
+++ /dev/null
@@ -1,55 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/traverse/traverseFast.js b/assets/node_modules/@babel/types/lib/traverse/traverseFast.js
deleted file mode 100644
index f038dd8..0000000
--- a/assets/node_modules/@babel/types/lib/traverse/traverseFast.js
+++ /dev/null
@@ -1,28 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/utils/inherit.js b/assets/node_modules/@babel/types/lib/utils/inherit.js
deleted file mode 100644
index f6691c7..0000000
--- a/assets/node_modules/@babel/types/lib/utils/inherit.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = inherit;
-
-var _uniq = _interopRequireDefault(require("lodash/uniq"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function inherit(key, child, parent) {
- if (child && parent) {
- child[key] = (0, _uniq.default)([].concat(child[key], parent[key]).filter(Boolean));
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js b/assets/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js
deleted file mode 100644
index f0ca133..0000000
--- a/assets/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js
+++ /dev/null
@@ -1,47 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/utils/shallowEqual.js b/assets/node_modules/@babel/types/lib/utils/shallowEqual.js
deleted file mode 100644
index fae259e..0000000
--- a/assets/node_modules/@babel/types/lib/utils/shallowEqual.js
+++ /dev/null
@@ -1,18 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js b/assets/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js
deleted file mode 100644
index 0faa29c..0000000
--- a/assets/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js
+++ /dev/null
@@ -1,15 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = buildMatchMemberExpression;
-
-var _matchesPattern = _interopRequireDefault(require("./matchesPattern"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/types/lib/validators/generated/index.js b/assets/node_modules/@babel/types/lib/validators/generated/index.js
deleted file mode 100644
index bf9ce34..0000000
--- a/assets/node_modules/@babel/types/lib/validators/generated/index.js
+++ /dev/null
@@ -1,4525 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.isArrayExpression = isArrayExpression;
-exports.isAssignmentExpression = isAssignmentExpression;
-exports.isBinaryExpression = isBinaryExpression;
-exports.isInterpreterDirective = isInterpreterDirective;
-exports.isDirective = isDirective;
-exports.isDirectiveLiteral = isDirectiveLiteral;
-exports.isBlockStatement = isBlockStatement;
-exports.isBreakStatement = isBreakStatement;
-exports.isCallExpression = isCallExpression;
-exports.isCatchClause = isCatchClause;
-exports.isConditionalExpression = isConditionalExpression;
-exports.isContinueStatement = isContinueStatement;
-exports.isDebuggerStatement = isDebuggerStatement;
-exports.isDoWhileStatement = isDoWhileStatement;
-exports.isEmptyStatement = isEmptyStatement;
-exports.isExpressionStatement = isExpressionStatement;
-exports.isFile = isFile;
-exports.isForInStatement = isForInStatement;
-exports.isForStatement = isForStatement;
-exports.isFunctionDeclaration = isFunctionDeclaration;
-exports.isFunctionExpression = isFunctionExpression;
-exports.isIdentifier = isIdentifier;
-exports.isIfStatement = isIfStatement;
-exports.isLabeledStatement = isLabeledStatement;
-exports.isStringLiteral = isStringLiteral;
-exports.isNumericLiteral = isNumericLiteral;
-exports.isNullLiteral = isNullLiteral;
-exports.isBooleanLiteral = isBooleanLiteral;
-exports.isRegExpLiteral = isRegExpLiteral;
-exports.isLogicalExpression = isLogicalExpression;
-exports.isMemberExpression = isMemberExpression;
-exports.isNewExpression = isNewExpression;
-exports.isProgram = isProgram;
-exports.isObjectExpression = isObjectExpression;
-exports.isObjectMethod = isObjectMethod;
-exports.isObjectProperty = isObjectProperty;
-exports.isRestElement = isRestElement;
-exports.isReturnStatement = isReturnStatement;
-exports.isSequenceExpression = isSequenceExpression;
-exports.isParenthesizedExpression = isParenthesizedExpression;
-exports.isSwitchCase = isSwitchCase;
-exports.isSwitchStatement = isSwitchStatement;
-exports.isThisExpression = isThisExpression;
-exports.isThrowStatement = isThrowStatement;
-exports.isTryStatement = isTryStatement;
-exports.isUnaryExpression = isUnaryExpression;
-exports.isUpdateExpression = isUpdateExpression;
-exports.isVariableDeclaration = isVariableDeclaration;
-exports.isVariableDeclarator = isVariableDeclarator;
-exports.isWhileStatement = isWhileStatement;
-exports.isWithStatement = isWithStatement;
-exports.isAssignmentPattern = isAssignmentPattern;
-exports.isArrayPattern = isArrayPattern;
-exports.isArrowFunctionExpression = isArrowFunctionExpression;
-exports.isClassBody = isClassBody;
-exports.isClassExpression = isClassExpression;
-exports.isClassDeclaration = isClassDeclaration;
-exports.isExportAllDeclaration = isExportAllDeclaration;
-exports.isExportDefaultDeclaration = isExportDefaultDeclaration;
-exports.isExportNamedDeclaration = isExportNamedDeclaration;
-exports.isExportSpecifier = isExportSpecifier;
-exports.isForOfStatement = isForOfStatement;
-exports.isImportDeclaration = isImportDeclaration;
-exports.isImportDefaultSpecifier = isImportDefaultSpecifier;
-exports.isImportNamespaceSpecifier = isImportNamespaceSpecifier;
-exports.isImportSpecifier = isImportSpecifier;
-exports.isMetaProperty = isMetaProperty;
-exports.isClassMethod = isClassMethod;
-exports.isObjectPattern = isObjectPattern;
-exports.isSpreadElement = isSpreadElement;
-exports.isSuper = isSuper;
-exports.isTaggedTemplateExpression = isTaggedTemplateExpression;
-exports.isTemplateElement = isTemplateElement;
-exports.isTemplateLiteral = isTemplateLiteral;
-exports.isYieldExpression = isYieldExpression;
-exports.isAnyTypeAnnotation = isAnyTypeAnnotation;
-exports.isArrayTypeAnnotation = isArrayTypeAnnotation;
-exports.isBooleanTypeAnnotation = isBooleanTypeAnnotation;
-exports.isBooleanLiteralTypeAnnotation = isBooleanLiteralTypeAnnotation;
-exports.isNullLiteralTypeAnnotation = isNullLiteralTypeAnnotation;
-exports.isClassImplements = isClassImplements;
-exports.isDeclareClass = isDeclareClass;
-exports.isDeclareFunction = isDeclareFunction;
-exports.isDeclareInterface = isDeclareInterface;
-exports.isDeclareModule = isDeclareModule;
-exports.isDeclareModuleExports = isDeclareModuleExports;
-exports.isDeclareTypeAlias = isDeclareTypeAlias;
-exports.isDeclareOpaqueType = isDeclareOpaqueType;
-exports.isDeclareVariable = isDeclareVariable;
-exports.isDeclareExportDeclaration = isDeclareExportDeclaration;
-exports.isDeclareExportAllDeclaration = isDeclareExportAllDeclaration;
-exports.isDeclaredPredicate = isDeclaredPredicate;
-exports.isExistsTypeAnnotation = isExistsTypeAnnotation;
-exports.isFunctionTypeAnnotation = isFunctionTypeAnnotation;
-exports.isFunctionTypeParam = isFunctionTypeParam;
-exports.isGenericTypeAnnotation = isGenericTypeAnnotation;
-exports.isInferredPredicate = isInferredPredicate;
-exports.isInterfaceExtends = isInterfaceExtends;
-exports.isInterfaceDeclaration = isInterfaceDeclaration;
-exports.isInterfaceTypeAnnotation = isInterfaceTypeAnnotation;
-exports.isIntersectionTypeAnnotation = isIntersectionTypeAnnotation;
-exports.isMixedTypeAnnotation = isMixedTypeAnnotation;
-exports.isEmptyTypeAnnotation = isEmptyTypeAnnotation;
-exports.isNullableTypeAnnotation = isNullableTypeAnnotation;
-exports.isNumberLiteralTypeAnnotation = isNumberLiteralTypeAnnotation;
-exports.isNumberTypeAnnotation = isNumberTypeAnnotation;
-exports.isObjectTypeAnnotation = isObjectTypeAnnotation;
-exports.isObjectTypeInternalSlot = isObjectTypeInternalSlot;
-exports.isObjectTypeCallProperty = isObjectTypeCallProperty;
-exports.isObjectTypeIndexer = isObjectTypeIndexer;
-exports.isObjectTypeProperty = isObjectTypeProperty;
-exports.isObjectTypeSpreadProperty = isObjectTypeSpreadProperty;
-exports.isOpaqueType = isOpaqueType;
-exports.isQualifiedTypeIdentifier = isQualifiedTypeIdentifier;
-exports.isStringLiteralTypeAnnotation = isStringLiteralTypeAnnotation;
-exports.isStringTypeAnnotation = isStringTypeAnnotation;
-exports.isThisTypeAnnotation = isThisTypeAnnotation;
-exports.isTupleTypeAnnotation = isTupleTypeAnnotation;
-exports.isTypeofTypeAnnotation = isTypeofTypeAnnotation;
-exports.isTypeAlias = isTypeAlias;
-exports.isTypeAnnotation = isTypeAnnotation;
-exports.isTypeCastExpression = isTypeCastExpression;
-exports.isTypeParameter = isTypeParameter;
-exports.isTypeParameterDeclaration = isTypeParameterDeclaration;
-exports.isTypeParameterInstantiation = isTypeParameterInstantiation;
-exports.isUnionTypeAnnotation = isUnionTypeAnnotation;
-exports.isVariance = isVariance;
-exports.isVoidTypeAnnotation = isVoidTypeAnnotation;
-exports.isEnumDeclaration = isEnumDeclaration;
-exports.isEnumBooleanBody = isEnumBooleanBody;
-exports.isEnumNumberBody = isEnumNumberBody;
-exports.isEnumStringBody = isEnumStringBody;
-exports.isEnumSymbolBody = isEnumSymbolBody;
-exports.isEnumBooleanMember = isEnumBooleanMember;
-exports.isEnumNumberMember = isEnumNumberMember;
-exports.isEnumStringMember = isEnumStringMember;
-exports.isEnumDefaultedMember = isEnumDefaultedMember;
-exports.isJSXAttribute = isJSXAttribute;
-exports.isJSXClosingElement = isJSXClosingElement;
-exports.isJSXElement = isJSXElement;
-exports.isJSXEmptyExpression = isJSXEmptyExpression;
-exports.isJSXExpressionContainer = isJSXExpressionContainer;
-exports.isJSXSpreadChild = isJSXSpreadChild;
-exports.isJSXIdentifier = isJSXIdentifier;
-exports.isJSXMemberExpression = isJSXMemberExpression;
-exports.isJSXNamespacedName = isJSXNamespacedName;
-exports.isJSXOpeningElement = isJSXOpeningElement;
-exports.isJSXSpreadAttribute = isJSXSpreadAttribute;
-exports.isJSXText = isJSXText;
-exports.isJSXFragment = isJSXFragment;
-exports.isJSXOpeningFragment = isJSXOpeningFragment;
-exports.isJSXClosingFragment = isJSXClosingFragment;
-exports.isNoop = isNoop;
-exports.isPlaceholder = isPlaceholder;
-exports.isV8IntrinsicIdentifier = isV8IntrinsicIdentifier;
-exports.isArgumentPlaceholder = isArgumentPlaceholder;
-exports.isAwaitExpression = isAwaitExpression;
-exports.isBindExpression = isBindExpression;
-exports.isClassProperty = isClassProperty;
-exports.isOptionalMemberExpression = isOptionalMemberExpression;
-exports.isPipelineTopicExpression = isPipelineTopicExpression;
-exports.isPipelineBareFunction = isPipelineBareFunction;
-exports.isPipelinePrimaryTopicReference = isPipelinePrimaryTopicReference;
-exports.isOptionalCallExpression = isOptionalCallExpression;
-exports.isClassPrivateProperty = isClassPrivateProperty;
-exports.isClassPrivateMethod = isClassPrivateMethod;
-exports.isImport = isImport;
-exports.isDecorator = isDecorator;
-exports.isDoExpression = isDoExpression;
-exports.isExportDefaultSpecifier = isExportDefaultSpecifier;
-exports.isExportNamespaceSpecifier = isExportNamespaceSpecifier;
-exports.isPrivateName = isPrivateName;
-exports.isBigIntLiteral = isBigIntLiteral;
-exports.isTSParameterProperty = isTSParameterProperty;
-exports.isTSDeclareFunction = isTSDeclareFunction;
-exports.isTSDeclareMethod = isTSDeclareMethod;
-exports.isTSQualifiedName = isTSQualifiedName;
-exports.isTSCallSignatureDeclaration = isTSCallSignatureDeclaration;
-exports.isTSConstructSignatureDeclaration = isTSConstructSignatureDeclaration;
-exports.isTSPropertySignature = isTSPropertySignature;
-exports.isTSMethodSignature = isTSMethodSignature;
-exports.isTSIndexSignature = isTSIndexSignature;
-exports.isTSAnyKeyword = isTSAnyKeyword;
-exports.isTSBooleanKeyword = isTSBooleanKeyword;
-exports.isTSBigIntKeyword = isTSBigIntKeyword;
-exports.isTSNeverKeyword = isTSNeverKeyword;
-exports.isTSNullKeyword = isTSNullKeyword;
-exports.isTSNumberKeyword = isTSNumberKeyword;
-exports.isTSObjectKeyword = isTSObjectKeyword;
-exports.isTSStringKeyword = isTSStringKeyword;
-exports.isTSSymbolKeyword = isTSSymbolKeyword;
-exports.isTSUndefinedKeyword = isTSUndefinedKeyword;
-exports.isTSUnknownKeyword = isTSUnknownKeyword;
-exports.isTSVoidKeyword = isTSVoidKeyword;
-exports.isTSThisType = isTSThisType;
-exports.isTSFunctionType = isTSFunctionType;
-exports.isTSConstructorType = isTSConstructorType;
-exports.isTSTypeReference = isTSTypeReference;
-exports.isTSTypePredicate = isTSTypePredicate;
-exports.isTSTypeQuery = isTSTypeQuery;
-exports.isTSTypeLiteral = isTSTypeLiteral;
-exports.isTSArrayType = isTSArrayType;
-exports.isTSTupleType = isTSTupleType;
-exports.isTSOptionalType = isTSOptionalType;
-exports.isTSRestType = isTSRestType;
-exports.isTSUnionType = isTSUnionType;
-exports.isTSIntersectionType = isTSIntersectionType;
-exports.isTSConditionalType = isTSConditionalType;
-exports.isTSInferType = isTSInferType;
-exports.isTSParenthesizedType = isTSParenthesizedType;
-exports.isTSTypeOperator = isTSTypeOperator;
-exports.isTSIndexedAccessType = isTSIndexedAccessType;
-exports.isTSMappedType = isTSMappedType;
-exports.isTSLiteralType = isTSLiteralType;
-exports.isTSExpressionWithTypeArguments = isTSExpressionWithTypeArguments;
-exports.isTSInterfaceDeclaration = isTSInterfaceDeclaration;
-exports.isTSInterfaceBody = isTSInterfaceBody;
-exports.isTSTypeAliasDeclaration = isTSTypeAliasDeclaration;
-exports.isTSAsExpression = isTSAsExpression;
-exports.isTSTypeAssertion = isTSTypeAssertion;
-exports.isTSEnumDeclaration = isTSEnumDeclaration;
-exports.isTSEnumMember = isTSEnumMember;
-exports.isTSModuleDeclaration = isTSModuleDeclaration;
-exports.isTSModuleBlock = isTSModuleBlock;
-exports.isTSImportType = isTSImportType;
-exports.isTSImportEqualsDeclaration = isTSImportEqualsDeclaration;
-exports.isTSExternalModuleReference = isTSExternalModuleReference;
-exports.isTSNonNullExpression = isTSNonNullExpression;
-exports.isTSExportAssignment = isTSExportAssignment;
-exports.isTSNamespaceExportDeclaration = isTSNamespaceExportDeclaration;
-exports.isTSTypeAnnotation = isTSTypeAnnotation;
-exports.isTSTypeParameterInstantiation = isTSTypeParameterInstantiation;
-exports.isTSTypeParameterDeclaration = isTSTypeParameterDeclaration;
-exports.isTSTypeParameter = isTSTypeParameter;
-exports.isExpression = isExpression;
-exports.isBinary = isBinary;
-exports.isScopable = isScopable;
-exports.isBlockParent = isBlockParent;
-exports.isBlock = isBlock;
-exports.isStatement = isStatement;
-exports.isTerminatorless = isTerminatorless;
-exports.isCompletionStatement = isCompletionStatement;
-exports.isConditional = isConditional;
-exports.isLoop = isLoop;
-exports.isWhile = isWhile;
-exports.isExpressionWrapper = isExpressionWrapper;
-exports.isFor = isFor;
-exports.isForXStatement = isForXStatement;
-exports.isFunction = isFunction;
-exports.isFunctionParent = isFunctionParent;
-exports.isPureish = isPureish;
-exports.isDeclaration = isDeclaration;
-exports.isPatternLike = isPatternLike;
-exports.isLVal = isLVal;
-exports.isTSEntityName = isTSEntityName;
-exports.isLiteral = isLiteral;
-exports.isImmutable = isImmutable;
-exports.isUserWhitespacable = isUserWhitespacable;
-exports.isMethod = isMethod;
-exports.isObjectMember = isObjectMember;
-exports.isProperty = isProperty;
-exports.isUnaryLike = isUnaryLike;
-exports.isPattern = isPattern;
-exports.isClass = isClass;
-exports.isModuleDeclaration = isModuleDeclaration;
-exports.isExportDeclaration = isExportDeclaration;
-exports.isModuleSpecifier = isModuleSpecifier;
-exports.isFlow = isFlow;
-exports.isFlowType = isFlowType;
-exports.isFlowBaseAnnotation = isFlowBaseAnnotation;
-exports.isFlowDeclaration = isFlowDeclaration;
-exports.isFlowPredicate = isFlowPredicate;
-exports.isEnumBody = isEnumBody;
-exports.isEnumMember = isEnumMember;
-exports.isJSX = isJSX;
-exports.isPrivate = isPrivate;
-exports.isTSTypeElement = isTSTypeElement;
-exports.isTSType = isTSType;
-exports.isNumberLiteral = isNumberLiteral;
-exports.isRegexLiteral = isRegexLiteral;
-exports.isRestProperty = isRestProperty;
-exports.isSpreadProperty = isSpreadProperty;
-
-var _shallowEqual = _interopRequireDefault(require("../../utils/shallowEqual"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 isExpression(node, opts) {
- if (!node) return false;
- const nodeType = node.type;
-
- if (nodeType === "Expression" || "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 || "TypeCastExpression" === nodeType || "JSXElement" === nodeType || "JSXFragment" === nodeType || "AwaitExpression" === nodeType || "BindExpression" === nodeType || "OptionalMemberExpression" === nodeType || "PipelinePrimaryTopicReference" === nodeType || "OptionalCallExpression" === nodeType || "Import" === nodeType || "DoExpression" === nodeType || "BigIntLiteral" === 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 (nodeType === "Binary" || "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 (nodeType === "Scopable" || "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 || "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 (nodeType === "BlockParent" || "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 || "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 (nodeType === "Block" || "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 (nodeType === "Statement" || "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 || "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 (nodeType === "Terminatorless" || "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 (nodeType === "CompletionStatement" || "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 (nodeType === "Conditional" || "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 (nodeType === "Loop" || "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 (nodeType === "While" || "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 (nodeType === "ExpressionWrapper" || "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 (nodeType === "For" || "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 (nodeType === "ForXStatement" || "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 (nodeType === "Function" || "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 (nodeType === "FunctionParent" || "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 isPureish(node, opts) {
- if (!node) return false;
- const nodeType = node.type;
-
- if (nodeType === "Pureish" || "FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassExpression" === nodeType || "ClassDeclaration" === nodeType || "BigIntLiteral" === 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 (nodeType === "Declaration" || "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 (nodeType === "PatternLike" || "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 (nodeType === "LVal" || "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 (nodeType === "TSEntityName" || "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 (nodeType === "Literal" || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "RegExpLiteral" === nodeType || "TemplateLiteral" === nodeType || "BigIntLiteral" === 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 (nodeType === "Immutable" || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "JSXAttribute" === nodeType || "JSXClosingElement" === nodeType || "JSXElement" === nodeType || "JSXExpressionContainer" === nodeType || "JSXSpreadChild" === nodeType || "JSXOpeningElement" === nodeType || "JSXText" === nodeType || "JSXFragment" === nodeType || "JSXOpeningFragment" === nodeType || "JSXClosingFragment" === nodeType || "BigIntLiteral" === 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 (nodeType === "UserWhitespacable" || "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 (nodeType === "Method" || "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 (nodeType === "ObjectMember" || "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 (nodeType === "Property" || "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 (nodeType === "UnaryLike" || "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 (nodeType === "Pattern" || "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 (nodeType === "Class" || "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 (nodeType === "ModuleDeclaration" || "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 (nodeType === "ExportDeclaration" || "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 (nodeType === "ModuleSpecifier" || "ExportSpecifier" === nodeType || "ImportDefaultSpecifier" === nodeType || "ImportNamespaceSpecifier" === nodeType || "ImportSpecifier" === nodeType || "ExportDefaultSpecifier" === nodeType || "ExportNamespaceSpecifier" === 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 (nodeType === "Flow" || "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 || "ThisTypeAnnotation" === nodeType || "TupleTypeAnnotation" === nodeType || "TypeofTypeAnnotation" === nodeType || "TypeAlias" === nodeType || "TypeAnnotation" === nodeType || "TypeCastExpression" === nodeType || "TypeParameter" === nodeType || "TypeParameterDeclaration" === nodeType || "TypeParameterInstantiation" === nodeType || "UnionTypeAnnotation" === nodeType || "Variance" === nodeType || "VoidTypeAnnotation" === 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 (nodeType === "FlowType" || "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 || "ThisTypeAnnotation" === nodeType || "TupleTypeAnnotation" === nodeType || "TypeofTypeAnnotation" === nodeType || "UnionTypeAnnotation" === nodeType || "VoidTypeAnnotation" === 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 (nodeType === "FlowBaseAnnotation" || "AnyTypeAnnotation" === nodeType || "BooleanTypeAnnotation" === nodeType || "NullLiteralTypeAnnotation" === nodeType || "MixedTypeAnnotation" === nodeType || "EmptyTypeAnnotation" === nodeType || "NumberTypeAnnotation" === nodeType || "StringTypeAnnotation" === 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 (nodeType === "FlowDeclaration" || "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 (nodeType === "FlowPredicate" || "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 (nodeType === "EnumBody" || "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 (nodeType === "EnumMember" || "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 (nodeType === "JSX" || "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 isPrivate(node, opts) {
- if (!node) return false;
- const nodeType = node.type;
-
- if (nodeType === "Private" || "ClassPrivateProperty" === nodeType || "ClassPrivateMethod" === nodeType || "PrivateName" === 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 (nodeType === "TSTypeElement" || "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 (nodeType === "TSType" || "TSAnyKeyword" === nodeType || "TSBooleanKeyword" === nodeType || "TSBigIntKeyword" === 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 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/assets/node_modules/@babel/types/lib/validators/is.js b/assets/node_modules/@babel/types/lib/validators/is.js
deleted file mode 100644
index a68c108..0000000
--- a/assets/node_modules/@babel/types/lib/validators/is.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = is;
-
-var _shallowEqual = _interopRequireDefault(require("../utils/shallowEqual"));
-
-var _isType = _interopRequireDefault(require("./isType"));
-
-var _isPlaceholderType = _interopRequireDefault(require("./isPlaceholderType"));
-
-var _definitions = require("../definitions");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/types/lib/validators/isBinding.js b/assets/node_modules/@babel/types/lib/validators/isBinding.js
deleted file mode 100644
index e18ad19..0000000
--- a/assets/node_modules/@babel/types/lib/validators/isBinding.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = isBinding;
-
-var _getBindingIdentifiers = _interopRequireDefault(require("../retrievers/getBindingIdentifiers"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/types/lib/validators/isBlockScoped.js b/assets/node_modules/@babel/types/lib/validators/isBlockScoped.js
deleted file mode 100644
index 7e6549e..0000000
--- a/assets/node_modules/@babel/types/lib/validators/isBlockScoped.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = isBlockScoped;
-
-var _generated = require("./generated");
-
-var _isLet = _interopRequireDefault(require("./isLet"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/types/lib/validators/isImmutable.js b/assets/node_modules/@babel/types/lib/validators/isImmutable.js
deleted file mode 100644
index b00b23d..0000000
--- a/assets/node_modules/@babel/types/lib/validators/isImmutable.js
+++ /dev/null
@@ -1,26 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = isImmutable;
-
-var _isType = _interopRequireDefault(require("./isType"));
-
-var _generated = require("./generated");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/types/lib/validators/isLet.js b/assets/node_modules/@babel/types/lib/validators/isLet.js
deleted file mode 100644
index 93d7562..0000000
--- a/assets/node_modules/@babel/types/lib/validators/isLet.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/validators/isNode.js b/assets/node_modules/@babel/types/lib/validators/isNode.js
deleted file mode 100644
index e88a47a..0000000
--- a/assets/node_modules/@babel/types/lib/validators/isNode.js
+++ /dev/null
@@ -1,12 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/validators/isNodesEquivalent.js b/assets/node_modules/@babel/types/lib/validators/isNodesEquivalent.js
deleted file mode 100644
index 0c3b8ac..0000000
--- a/assets/node_modules/@babel/types/lib/validators/isNodesEquivalent.js
+++ /dev/null
@@ -1,67 +0,0 @@
-"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 || !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/assets/node_modules/@babel/types/lib/validators/isPlaceholderType.js b/assets/node_modules/@babel/types/lib/validators/isPlaceholderType.js
deleted file mode 100644
index e8271de..0000000
--- a/assets/node_modules/@babel/types/lib/validators/isPlaceholderType.js
+++ /dev/null
@@ -1,21 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/validators/isReferenced.js b/assets/node_modules/@babel/types/lib/validators/isReferenced.js
deleted file mode 100644
index 46598dd..0000000
--- a/assets/node_modules/@babel/types/lib/validators/isReferenced.js
+++ /dev/null
@@ -1,112 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = isReferenced;
-
-function isReferenced(node, parent, grandparent) {
- switch (parent.type) {
- case "MemberExpression":
- case "JSXMemberExpression":
- case "OptionalMemberExpression":
- if (parent.property === node) {
- return !!parent.computed;
- }
-
- return parent.object === node;
-
- case "VariableDeclarator":
- return parent.init === node;
-
- case "ArrowFunctionExpression":
- return parent.body === node;
-
- case "ExportSpecifier":
- if (parent.source) {
- return false;
- }
-
- return parent.local === node;
-
- case "PrivateName":
- return false;
-
- case "ObjectProperty":
- case "ClassProperty":
- case "ClassPrivateProperty":
- case "ClassMethod":
- case "ClassPrivateMethod":
- case "ObjectMethod":
- if (parent.key === node) {
- return !!parent.computed;
- }
-
- if (parent.value === node) {
- return !grandparent || grandparent.type !== "ObjectPattern";
- }
-
- return true;
-
- 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 "ImportDefaultSpecifier":
- case "ImportNamespaceSpecifier":
- case "ImportSpecifier":
- 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/assets/node_modules/@babel/types/lib/validators/isScope.js b/assets/node_modules/@babel/types/lib/validators/isScope.js
deleted file mode 100644
index d4cd46c..0000000
--- a/assets/node_modules/@babel/types/lib/validators/isScope.js
+++ /dev/null
@@ -1,28 +0,0 @@
-"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, {
- body: node
- })) {
- return false;
- }
-
- if ((0, _generated.isBlockStatement)(node) && (0, _generated.isCatchClause)(parent, {
- body: node
- })) {
- return false;
- }
-
- if ((0, _generated.isPattern)(node) && (0, _generated.isFunction)(parent)) {
- return true;
- }
-
- return (0, _generated.isScopable)(node);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/validators/isSpecifierDefault.js b/assets/node_modules/@babel/types/lib/validators/isSpecifierDefault.js
deleted file mode 100644
index 25431cc..0000000
--- a/assets/node_modules/@babel/types/lib/validators/isSpecifierDefault.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/validators/isType.js b/assets/node_modules/@babel/types/lib/validators/isType.js
deleted file mode 100644
index 59d31df..0000000
--- a/assets/node_modules/@babel/types/lib/validators/isType.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/validators/isValidES3Identifier.js b/assets/node_modules/@babel/types/lib/validators/isValidES3Identifier.js
deleted file mode 100644
index 8455cab..0000000
--- a/assets/node_modules/@babel/types/lib/validators/isValidES3Identifier.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = isValidES3Identifier;
-
-var _isValidIdentifier = _interopRequireDefault(require("./isValidIdentifier"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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/assets/node_modules/@babel/types/lib/validators/isValidIdentifier.js b/assets/node_modules/@babel/types/lib/validators/isValidIdentifier.js
deleted file mode 100644
index e8e7e73..0000000
--- a/assets/node_modules/@babel/types/lib/validators/isValidIdentifier.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = isValidIdentifier;
-
-var _esutils = _interopRequireDefault(require("esutils"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function isValidIdentifier(name, reserved = true) {
- if (typeof name !== "string") return false;
-
- if (reserved) {
- if (_esutils.default.keyword.isReservedWordES6(name, true)) {
- return false;
- } else if (name === "await") {
- return false;
- }
- }
-
- return _esutils.default.keyword.isIdentifierNameES6(name);
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/validators/isVar.js b/assets/node_modules/@babel/types/lib/validators/isVar.js
deleted file mode 100644
index a34801d..0000000
--- a/assets/node_modules/@babel/types/lib/validators/isVar.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/validators/matchesPattern.js b/assets/node_modules/@babel/types/lib/validators/matchesPattern.js
deleted file mode 100644
index 538e011..0000000
--- a/assets/node_modules/@babel/types/lib/validators/matchesPattern.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"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 {
- return false;
- }
-
- if (parts[i] !== value) return false;
- }
-
- return true;
-} \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/validators/react/isCompatTag.js b/assets/node_modules/@babel/types/lib/validators/react/isCompatTag.js
deleted file mode 100644
index 57761c2..0000000
--- a/assets/node_modules/@babel/types/lib/validators/react/isCompatTag.js
+++ /dev/null
@@ -1,10 +0,0 @@
-"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/assets/node_modules/@babel/types/lib/validators/react/isReactComponent.js b/assets/node_modules/@babel/types/lib/validators/react/isReactComponent.js
deleted file mode 100644
index 33b30d7..0000000
--- a/assets/node_modules/@babel/types/lib/validators/react/isReactComponent.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _buildMatchMemberExpression = _interopRequireDefault(require("../buildMatchMemberExpression"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const isReactComponent = (0, _buildMatchMemberExpression.default)("React.Component");
-var _default = isReactComponent;
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/@babel/types/lib/validators/validate.js b/assets/node_modules/@babel/types/lib/validators/validate.js
deleted file mode 100644
index 4604f4b..0000000
--- a/assets/node_modules/@babel/types/lib/validators/validate.js
+++ /dev/null
@@ -1,32 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = validate;
-exports.validateField = validateField;
-exports.validateChild = validateChild;
-
-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 || !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/assets/node_modules/@babel/types/package.json b/assets/node_modules/@babel/types/package.json
deleted file mode 100644
index 88442db..0000000
--- a/assets/node_modules/@babel/types/package.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "name": "@babel/types",
- "version": "7.8.3",
- "description": "Babel Types is a Lodash-esque utility library for AST nodes",
- "author": "Sebastian McKenzie <sebmck@gmail.com>",
- "homepage": "https://babeljs.io/",
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- },
- "repository": "https://github.com/babel/babel/tree/master/packages/babel-types",
- "main": "lib/index.js",
- "types": "lib/index.d.ts",
- "dependencies": {
- "esutils": "^2.0.2",
- "lodash": "^4.17.13",
- "to-fast-properties": "^2.0.0"
- },
- "devDependencies": {
- "@babel/generator": "^7.8.3",
- "@babel/parser": "^7.8.3"
- },
- "gitHead": "a7620bd266ae1345975767bbc7abf09034437017"
-}
diff --git a/assets/node_modules/@babel/types/scripts/generateTypeHelpers.js b/assets/node_modules/@babel/types/scripts/generateTypeHelpers.js
deleted file mode 100644
index bf0b036..0000000
--- a/assets/node_modules/@babel/types/scripts/generateTypeHelpers.js
+++ /dev/null
@@ -1,29 +0,0 @@
-"use strict";
-const path = require("path");
-const chalk = require("chalk");
-const generateBuilders = require("./generators/generateBuilders");
-const generateValidators = require("./generators/generateValidators");
-const generateAsserts = require("./generators/generateAsserts");
-const generateConstants = require("./generators/generateConstants");
-const format = require("../../../scripts/utils/formatCode");
-const writeFile = require("../../../scripts/utils/writeFileAndMkDir");
-
-const baseDir = path.join(__dirname, "../src");
-
-console.log("Generating @babel/types dynamic functions");
-
-const buildersFile = path.join(baseDir, "builders/generated/index.js");
-writeFile(buildersFile, format(generateBuilders(), buildersFile));
-console.log(` ${chalk.green("✔")} Generated builders`);
-
-const validatorsFile = path.join(baseDir, "validators/generated/index.js");
-writeFile(validatorsFile, format(generateValidators(), validatorsFile));
-console.log(` ${chalk.green("✔")} Generated validators`);
-
-const assertsFile = path.join(baseDir, "asserts/generated/index.js");
-writeFile(assertsFile, format(generateAsserts(), assertsFile));
-console.log(` ${chalk.green("✔")} Generated asserts`);
-
-const constantsFile = path.join(baseDir, "constants/generated/index.js");
-writeFile(constantsFile, format(generateConstants(), constantsFile));
-console.log(` ${chalk.green("✔")} Generated constants`);
diff --git a/assets/node_modules/@babel/types/scripts/generators/docs.js b/assets/node_modules/@babel/types/scripts/generators/docs.js
deleted file mode 100644
index 340dbbc..0000000
--- a/assets/node_modules/@babel/types/scripts/generators/docs.js
+++ /dev/null
@@ -1,121 +0,0 @@
-"use strict";
-
-const util = require("util");
-const stringifyValidator = require("../utils/stringifyValidator");
-const toFunctionName = require("../utils/toFunctionName");
-
-const types = require("../../");
-
-const readme = [
- `# @babel/types
-
-> 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`",
- },
-};
-Object.keys(types.BUILDER_KEYS)
- .sort()
- .forEach(function(key) {
- readme.push("### " + key[0].toLowerCase() + key.substr(1));
- readme.push("```javascript");
- readme.push(
- "t." +
- toFunctionName(key) +
- "(" +
- types.BUILDER_KEYS[key].join(", ") +
- ")"
- );
- readme.push("```");
- readme.push("");
- readme.push(
- "See also `t.is" +
- key +
- "(node, opts)` and `t.assert" +
- key +
- "(node, opts)`."
- );
- readme.push("");
- if (types.ALIAS_KEYS[key] && types.ALIAS_KEYS[key].length) {
- readme.push(
- "Aliases: " +
- types.ALIAS_KEYS[key]
- .map(function(key) {
- return "`" + key + "`";
- })
- .join(", ")
- );
- readme.push("");
- }
- Object.keys(types.NODE_FIELDS[key])
- .sort(function(fieldA, fieldB) {
- const indexA = types.BUILDER_KEYS[key].indexOf(fieldA);
- const indexB = types.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 = types.NODE_FIELDS[key][field].default;
- const fieldDescription = ["`" + field + "`"];
- const validator = types.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 || types.NODE_FIELDS[key][field].optional) {
- fieldDescription.push(
- " (default: `" + util.inspect(defaultValue) + "`"
- );
- if (types.BUILDER_KEYS[key].indexOf(field) < 0) {
- fieldDescription.push(", excluded from builder function");
- }
- fieldDescription.push(")");
- } else {
- fieldDescription.push(" (required)");
- }
- readme.push(" - " + fieldDescription.join(""));
- });
-
- readme.push("");
- readme.push("---");
- readme.push("");
- });
-
-process.stdout.write(readme.join("\n"));
diff --git a/assets/node_modules/@babel/types/scripts/generators/flow.js b/assets/node_modules/@babel/types/scripts/generators/flow.js
deleted file mode 100644
index 6c81a28..0000000
--- a/assets/node_modules/@babel/types/scripts/generators/flow.js
+++ /dev/null
@@ -1,248 +0,0 @@
-"use strict";
-
-const t = require("../../");
-const stringifyValidator = require("../utils/stringifyValidator");
-const toFunctionName = require("../utils/toFunctionName");
-
-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;
-}\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 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 (let i = 0; i < t.TYPES.length; i++) {
- let decl = `declare function is${t.TYPES[i]}(node: ?Object, opts?: ?Object): boolean`;
-
- if (t.NODE_FIELDS[t.TYPES[i]]) {
- decl += ` %checks (node instanceof ${NODE_PREFIX}${t.TYPES[i]})`;
- }
-
- lines.push(decl);
-}
-
-lines.push(
- // builders/
- // eslint-disable-next-line max-len
- `declare function createTypeAnnotationBasedOnTypeof(type: 'string' | 'number' | 'undefined' | 'boolean' | 'function' | 'object' | 'symbol'): ${NODE_PREFIX}TypeAnnotation`,
- // eslint-disable-next-line max-len
- `declare function createUnionTypeAnnotation(types: Array<${NODE_PREFIX}FlowType>): ${NODE_PREFIX}UnionTypeAnnotation`,
- // this smells like "internal API"
- // eslint-disable-next-line max-len
- `declare 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 function clone<T>(n: T): T;`,
- `declare function cloneDeep<T>(n: T): T;`,
- `declare function cloneNode<T>(n: T, deep?: boolean): T;`,
- `declare function cloneWithoutLoc<T>(n: T): T;`,
-
- // comments/
- `declare type CommentTypeShorthand = 'leading' | 'inner' | 'trailing'`,
- // eslint-disable-next-line max-len
- `declare function addComment<T: Node>(node: T, type: CommentTypeShorthand, content: string, line?: boolean): T`,
- // eslint-disable-next-line max-len
- `declare function addComments<T: Node>(node: T, type: CommentTypeShorthand, comments: Array<Comment>): T`,
- `declare function inheritInnerComments(node: Node, parent: Node): void`,
- `declare function inheritLeadingComments(node: Node, parent: Node): void`,
- `declare function inheritsComments<T: Node>(node: T, parent: Node): void`,
- `declare function inheritTrailingComments(node: Node, parent: Node): void`,
- `declare function removeComments<T: Node>(node: T): T`,
-
- // converters/
- `declare function ensureBlock(node: ${NODE_PREFIX}, key: string): ${NODE_PREFIX}BlockStatement`,
- `declare function toBindingIdentifierName(name?: ?string): string`,
- // eslint-disable-next-line max-len
- `declare function toBlock(node: ${NODE_PREFIX}Statement | ${NODE_PREFIX}Expression, parent?: ${NODE_PREFIX}Function | null): ${NODE_PREFIX}BlockStatement`,
- // eslint-disable-next-line max-len
- `declare 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 function toExpression(node: ${NODE_PREFIX}ExpressionStatement | ${NODE_PREFIX}Expression | ${NODE_PREFIX}Class | ${NODE_PREFIX}Function): ${NODE_PREFIX}Expression`,
- `declare function toIdentifier(name?: ?string): string`,
- // eslint-disable-next-line max-len
- `declare 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 function toStatement(node: ${NODE_PREFIX}Statement | ${NODE_PREFIX}Class | ${NODE_PREFIX}Function | ${NODE_PREFIX}AssignmentExpression, ignore?: boolean): ${NODE_PREFIX}Statement | void`,
- `declare function valueToNode(value: any): ${NODE_PREFIX}Expression`,
-
- // modifications/
- // eslint-disable-next-line max-len
- `declare function removeTypeDuplicates(types: Array<${NODE_PREFIX}FlowType>): Array<${NODE_PREFIX}FlowType>`,
- // eslint-disable-next-line max-len
- `declare function appendToMemberExpression(member: ${NODE_PREFIX}MemberExpression, append: ${NODE_PREFIX}, computed?: boolean): ${NODE_PREFIX}MemberExpression`,
- // eslint-disable-next-line max-len
- `declare function inherits<T: Node>(child: T, parent: ${NODE_PREFIX} | null | void): T`,
- // eslint-disable-next-line max-len
- `declare function prependToMemberExpression(member: ${NODE_PREFIX}MemberExpression, prepend: ${NODE_PREFIX}Expression): ${NODE_PREFIX}MemberExpression`,
- `declare function removeProperties<T>(n: T, opts: ?{}): void;`,
- `declare function removePropertiesDeep<T>(n: T, opts: ?{}): T;`,
-
- // retrievers/
- // eslint-disable-next-line max-len
- `declare function getBindingIdentifiers(node: ${NODE_PREFIX}, duplicates: boolean, outerOnly?: boolean): { [key: string]: ${NODE_PREFIX}Identifier | Array<${NODE_PREFIX}Identifier> }`,
- // eslint-disable-next-line max-len
- `declare function getOuterBindingIdentifiers(node: Node, 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 function traverse<T>(n: BabelNode, TraversalHandler<T> | TraversalHandlers<T>, state?: T): void;`,
- `declare function traverseFast<T>(n: Node, h: TraversalHandler<T>, state?: T): void;`,
-
- // utils/
- // cleanJSXElementLiteralChild is not exported
- // inherit is not exported
- `declare function shallowEqual(actual: Object, expected: Object): boolean`,
-
- // validators/
- // eslint-disable-next-line max-len
- `declare function buildMatchMemberExpression(match: string, allowPartial?: boolean): (?BabelNode) => boolean`,
- `declare function is(type: string, n: BabelNode, opts: Object): boolean;`,
- `declare function isBinding(node: BabelNode, parent: BabelNode, grandparent?: BabelNode): boolean`,
- `declare function isBlockScoped(node: BabelNode): boolean`,
- `declare function isImmutable(node: BabelNode): boolean`,
- `declare function isLet(node: BabelNode): boolean`,
- `declare function isNode(node: ?Object): boolean`,
- `declare function isNodesEquivalent(a: any, b: any): boolean`,
- `declare function isPlaceholderType(placeholderType: string, targetType: string): boolean`,
- `declare function isReferenced(node: BabelNode, parent: BabelNode, grandparent?: BabelNode): boolean`,
- `declare function isScope(node: BabelNode, parent: BabelNode): boolean`,
- `declare function isSpecifierDefault(specifier: BabelNodeModuleSpecifier): boolean`,
- `declare function isType(nodetype: ?string, targetType: string): boolean`,
- `declare function isValidES3Identifier(name: string): boolean`,
- `declare function isValidES3Identifier(name: string): boolean`,
- `declare function isValidIdentifier(name: string): boolean`,
- `declare function isVar(node: BabelNode): boolean`,
- // eslint-disable-next-line max-len
- `declare function matchesPattern(node: ?BabelNode, match: string | Array<string>, allowPartial?: boolean): boolean`,
- `declare 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/assets/node_modules/@babel/types/scripts/generators/generateAsserts.js b/assets/node_modules/@babel/types/scripts/generators/generateAsserts.js
deleted file mode 100644
index 26bdb8d..0000000
--- a/assets/node_modules/@babel/types/scripts/generators/generateAsserts.js
+++ /dev/null
@@ -1,44 +0,0 @@
-"use strict";
-const definitions = require("../../lib/definitions");
-
-function addAssertHelper(type) {
- return `export function assert${type}(node: Object, opts?: Object = {}): void {
- assert("${type}", node, opts) }
- `;
-}
-
-module.exports = function generateAsserts() {
- let output = `// @flow
-/*
- * This file is auto-generated! Do not modify it directly.
- * To re-generate run 'make build'
- */
-import is from "../../validators/is";
-
-function assert(type: string, node: Object, opts?: Object): void {
- if (!is(type, node, opts)) {
- throw new Error(
- \`Expected type "\${type}" with option \${JSON.stringify((opts: any))}, \` +
- \`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: Object, opts: Object): void {
- console.trace("The node type ${type} has been renamed to ${newType}");
- assert("${type}", node, opts);
-}\n`;
- });
-
- return output;
-};
diff --git a/assets/node_modules/@babel/types/scripts/generators/generateBuilders.js b/assets/node_modules/@babel/types/scripts/generators/generateBuilders.js
deleted file mode 100644
index 08a5b6f..0000000
--- a/assets/node_modules/@babel/types/scripts/generators/generateBuilders.js
+++ /dev/null
@@ -1,43 +0,0 @@
-"use strict";
-const definitions = require("../../lib/definitions");
-const formatBuilderName = require("../utils/formatBuilderName");
-const lowerFirst = require("../utils/lowerFirst");
-
-module.exports = function generateBuilders() {
- let output = `// @flow
-/*
- * This file is auto-generated! Do not modify it directly.
- * To re-generate run 'make build'
- */
-import builder from "../builder";\n\n`;
-
- Object.keys(definitions.BUILDER_KEYS).forEach(type => {
- output += `export function ${type}(...args: Array<any>): Object { return builder("${type}", ...args); }
-export { ${type} as ${formatBuilderName(type)} };\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`;
- }
- });
-
- Object.keys(definitions.DEPRECATED_KEYS).forEach(type => {
- const newType = definitions.DEPRECATED_KEYS[type];
- output += `export function ${type}(...args: Array<any>): Object {
- console.trace("The node type ${type} has been renamed to ${newType}");
- return ${type}("${type}", ...args);
-}
-export { ${type} as ${formatBuilderName(type)} };\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;
-};
diff --git a/assets/node_modules/@babel/types/scripts/generators/generateConstants.js b/assets/node_modules/@babel/types/scripts/generators/generateConstants.js
deleted file mode 100644
index 1e4d2ca..0000000
--- a/assets/node_modules/@babel/types/scripts/generators/generateConstants.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-const definitions = require("../../lib/definitions");
-
-module.exports = function generateConstants() {
- let output = `// @flow
-/*
- * 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/assets/node_modules/@babel/types/scripts/generators/generateValidators.js b/assets/node_modules/@babel/types/scripts/generators/generateValidators.js
deleted file mode 100644
index 1455f99..0000000
--- a/assets/node_modules/@babel/types/scripts/generators/generateValidators.js
+++ /dev/null
@@ -1,78 +0,0 @@
-"use strict";
-const definitions = require("../../lib/definitions");
-
-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.expectedNode") +
- ")";
- }
-
- return `export function is${type}(node: ?Object, opts?: Object): boolean {
- ${deprecated || ""}
- if (!node) return false;
-
- const nodeType = node.type;
- if (nodeType === ${targetType}${aliasSource}${placeholderSource}) {
- if (typeof opts === "undefined") {
- return true;
- } else {
- return shallowEqual(node, opts);
- }
- }
-
- return false;
- }
- `;
-}
-
-module.exports = function generateValidators() {
- let output = `// @flow
-/*
- * This file is auto-generated! Do not modify it directly.
- * To re-generate run 'make build'
- */
-import shallowEqual from "../../utils/shallowEqual";\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/assets/node_modules/@babel/types/scripts/generators/typescript.js b/assets/node_modules/@babel/types/scripts/generators/typescript.js
deleted file mode 100644
index 1b2707a..0000000
--- a/assets/node_modules/@babel/types/scripts/generators/typescript.js
+++ /dev/null
@@ -1,361 +0,0 @@
-"use strict";
-
-const t = require("../../");
-const stringifyValidator = require("../utils/stringifyValidator");
-const toFunctionName = require("../utils/toFunctionName");
-
-let code = `// NOTE: This file is autogenerated. Do not modify.
-// See packages/babel-types/scripts/generators/typescript.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"];
-}
-
-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 result =
- t.NODE_FIELDS[typeName] || t.FLIPPED_ALIAS_KEYS[typeName]
- ? `node is ${typeName}`
- : "boolean";
-
- lines.push(
- `export function is${typeName}(node: object | null | undefined, opts?: object | null): ${result};`,
- // TypeScript 3.7: https://github.com/microsoft/TypeScript/pull/32695 will allow assert declarations
- // eslint-disable-next-line max-len
- `// export function assert${typeName}(node: object | null | undefined, opts?: object | null): asserts ${
- result === "boolean" ? "node" : result
- };`
- );
-}
-
-lines.push(
- // assert/
- // Commented out as this declaration requires TypeScript 3.7 (what do?)
- `// export function assertNode(obj: any): asserts obj is Node`,
-
- // 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`,
- // 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`,
- // 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 cloneNode<T extends Node>(n: T, deep?: 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`,
- // TypeScript 3.7: ": asserts n is T"
- // 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/assets/node_modules/@babel/types/scripts/utils/formatBuilderName.js b/assets/node_modules/@babel/types/scripts/utils/formatBuilderName.js
deleted file mode 100644
index 621c468..0000000
--- a/assets/node_modules/@babel/types/scripts/utils/formatBuilderName.js
+++ /dev/null
@@ -1,10 +0,0 @@
-"use strict";
-
-const toLowerCase = Function.call.bind("".toLowerCase);
-
-module.exports = 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/assets/node_modules/@babel/types/scripts/utils/lowerFirst.js b/assets/node_modules/@babel/types/scripts/utils/lowerFirst.js
deleted file mode 100644
index 9e7b0ce..0000000
--- a/assets/node_modules/@babel/types/scripts/utils/lowerFirst.js
+++ /dev/null
@@ -1,4 +0,0 @@
-"use strict";
-module.exports = function lowerFirst(string) {
- return string[0].toLowerCase() + string.slice(1);
-};
diff --git a/assets/node_modules/@babel/types/scripts/utils/stringifyValidator.js b/assets/node_modules/@babel/types/scripts/utils/stringifyValidator.js
deleted file mode 100644
index 2ea1e80..0000000
--- a/assets/node_modules/@babel/types/scripts/utils/stringifyValidator.js
+++ /dev/null
@@ -1,66 +0,0 @@
-module.exports = 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/assets/node_modules/@babel/types/scripts/utils/toFunctionName.js b/assets/node_modules/@babel/types/scripts/utils/toFunctionName.js
deleted file mode 100644
index 627c9a7..0000000
--- a/assets/node_modules/@babel/types/scripts/utils/toFunctionName.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = function toFunctionName(typeName) {
- const _ = typeName.replace(/^TS/, "ts").replace(/^JSX/, "jsx");
- return _.slice(0, 1).toLowerCase() + _.slice(1);
-};
diff --git a/assets/node_modules/@nodelib/fs.scandir/LICENSE b/assets/node_modules/@nodelib/fs.scandir/LICENSE
deleted file mode 100644
index 65a9994..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Denis Malinochkin
-
-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/assets/node_modules/@nodelib/fs.scandir/README.md b/assets/node_modules/@nodelib/fs.scandir/README.md
deleted file mode 100644
index e0b218b..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/README.md
+++ /dev/null
@@ -1,171 +0,0 @@
-# @nodelib/fs.scandir
-
-> List files and directories inside the specified directory.
-
-## :bulb: Highlights
-
-The package is aimed at obtaining information about entries in the directory.
-
-* :moneybag: Returns useful information: `name`, `path`, `dirent` and `stats` (optional).
-* :gear: On Node.js 10.10+ uses the mechanism without additional calls to determine the entry type. See [`old` and `modern` mode](#old-and-modern-mode).
-* :link: Can safely work with broken symbolic links.
-
-## Install
-
-```console
-npm install @nodelib/fs.scandir
-```
-
-## Usage
-
-```ts
-import * as fsScandir from '@nodelib/fs.scandir';
-
-fsScandir.scandir('path', (error, stats) => { /* … */ });
-```
-
-## API
-
-### .scandir(path, [optionsOrSettings], callback)
-
-Returns an array of plain objects ([`Entry`](#entry)) with information about entry for provided path with standard callback-style.
-
-```ts
-fsScandir.scandir('path', (error, entries) => { /* … */ });
-fsScandir.scandir('path', {}, (error, entries) => { /* … */ });
-fsScandir.scandir('path', new fsScandir.Settings(), (error, entries) => { /* … */ });
-```
-
-### .scandirSync(path, [optionsOrSettings])
-
-Returns an array of plain objects ([`Entry`](#entry)) with information about entry for provided path.
-
-```ts
-const entries = fsScandir.scandirSync('path');
-const entries = fsScandir.scandirSync('path', {});
-const entries = fsScandir.scandirSync(('path', new fsScandir.Settings());
-```
-
-#### path
-
-* Required: `true`
-* Type: `string | Buffer | URL`
-
-A path to a file. If a URL is provided, it must use the `file:` protocol.
-
-#### optionsOrSettings
-
-* Required: `false`
-* Type: `Options | Settings`
-* Default: An instance of `Settings` class
-
-An [`Options`](#options) object or an instance of [`Settings`](#settingsoptions) class.
-
-> :book: When you pass a plain object, an instance of the `Settings` class will be created automatically. If you plan to call the method frequently, use a pre-created instance of the `Settings` class.
-
-### Settings([options])
-
-A class of full settings of the package.
-
-```ts
-const settings = new fsScandir.Settings({ followSymbolicLinks: false });
-
-const entries = fsScandir.scandirSync('path', settings);
-```
-
-## Entry
-
-* `name` — The name of the entry (`unknown.txt`).
-* `path` — The path of the entry relative to call directory (`root/unknown.txt`).
-* `dirent` — An instance of [`fs.Dirent`](./src/types/index.ts) class. On Node.js below 10.10 will be emulated by [`DirentFromStats`](./src/utils/fs.ts) class.
-* `stats` (optional) — An instance of `fs.Stats` class.
-
-For example, the `scandir` call for `tools` directory with one directory inside:
-
-```ts
-{
- dirent: Dirent { name: 'typedoc', /* … */ },
- name: 'typedoc',
- path: 'tools/typedoc'
-}
-```
-
-## Options
-
-### stats
-
-* Type: `boolean`
-* Default: `false`
-
-Adds an instance of `fs.Stats` class to the [`Entry`](#entry).
-
-> :book: Always use `fs.readdir` without the `withFileTypes` option. ??TODO??
-
-### followSymbolicLinks
-
-* Type: `boolean`
-* Default: `false`
-
-Follow symbolic links or not. Call `fs.stat` on symbolic link if `true`.
-
-### `throwErrorOnBrokenSymbolicLink`
-
-* Type: `boolean`
-* Default: `true`
-
-Throw an error when symbolic link is broken if `true` or safely use `lstat` call if `false`.
-
-### `pathSegmentSeparator`
-
-* Type: `string`
-* Default: `path.sep`
-
-By default, this package uses the correct path separator for your OS (`\` on Windows, `/` on Unix-like systems). But you can set this option to any separator character(s) that you want to use instead.
-
-### `fs`
-
-* Type: [`FileSystemAdapter`](./src/adapters/fs.ts)
-* Default: A default FS methods
-
-By default, the built-in Node.js module (`fs`) is used to work with the file system. You can replace any method with your own.
-
-```ts
-interface FileSystemAdapter {
- lstat?: typeof fs.lstat;
- stat?: typeof fs.stat;
- lstatSync?: typeof fs.lstatSync;
- statSync?: typeof fs.statSync;
- readdir?: typeof fs.readdir;
- readdirSync?: typeof fs.readdirSync;
-}
-
-const settings = new fsScandir.Settings({
- fs: { lstat: fakeLstat }
-});
-```
-
-## `old` and `modern` mode
-
-This package has two modes that are used depending on the environment and parameters of use.
-
-### old
-
-* Node.js below `10.10` or when the `stats` option is enabled
-
-When working in the old mode, the directory is read first (`fs.readdir`), then the type of entries is determined (`fs.lstat` and/or `fs.stat` for symbolic links).
-
-### modern
-
-* Node.js 10.10+ and the `stats` option is disabled
-
-In the modern mode, reading the directory (`fs.readdir` with the `withFileTypes` option) is combined with obtaining information about its entries. An additional call for symbolic links (`fs.stat`) is still present.
-
-This mode makes fewer calls to the file system. It's faster.
-
-## Changelog
-
-See the [Releases section of our GitHub project](https://github.com/nodelib/nodelib/releases) for changelog for each release version.
-
-## License
-
-This software is released under the terms of the MIT license.
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts b/assets/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts
deleted file mode 100644
index d0adcb4..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/// <reference types="node" />
-import * as fs from 'fs';
-export declare type FileSystemAdapter = {
- lstat: typeof fs.lstat;
- stat: typeof fs.stat;
- lstatSync: typeof fs.lstatSync;
- statSync: typeof fs.statSync;
- readdir: typeof fs.readdir;
- readdirSync: typeof fs.readdirSync;
-};
-export declare const FILE_SYSTEM_ADAPTER: FileSystemAdapter;
-export declare function createFileSystemAdapter(fsMethods?: Partial<FileSystemAdapter>): FileSystemAdapter;
-//# sourceMappingURL=fs.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/adapters/fs.js b/assets/node_modules/@nodelib/fs.scandir/out/adapters/fs.js
deleted file mode 100644
index dd95e35..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/adapters/fs.js
+++ /dev/null
@@ -1,18 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const fs = require("fs");
-exports.FILE_SYSTEM_ADAPTER = {
- lstat: fs.lstat,
- stat: fs.stat,
- lstatSync: fs.lstatSync,
- statSync: fs.statSync,
- readdir: fs.readdir,
- readdirSync: fs.readdirSync
-};
-function createFileSystemAdapter(fsMethods) {
- if (fsMethods === undefined) {
- return exports.FILE_SYSTEM_ADAPTER;
- }
- return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);
-}
-exports.createFileSystemAdapter = createFileSystemAdapter;
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/constants.d.ts b/assets/node_modules/@nodelib/fs.scandir/out/constants.d.ts
deleted file mode 100644
index bb3f4fd..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/constants.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-/**
- * IS `true` for Node.js 10.10 and greater.
- */
-export declare const IS_SUPPORT_READDIR_WITH_FILE_TYPES: boolean;
-//# sourceMappingURL=constants.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/constants.js b/assets/node_modules/@nodelib/fs.scandir/out/constants.js
deleted file mode 100644
index 43917c8..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/constants.js
+++ /dev/null
@@ -1,13 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const NODE_PROCESS_VERSION_PARTS = process.versions.node.split('.');
-const MAJOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[0], 10);
-const MINOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[1], 10);
-const SUPPORTED_MAJOR_VERSION = 10;
-const SUPPORTED_MINOR_VERSION = 10;
-const IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION;
-const IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION;
-/**
- * IS `true` for Node.js 10.10 and greater.
- */
-exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR;
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/index.d.ts b/assets/node_modules/@nodelib/fs.scandir/out/index.d.ts
deleted file mode 100644
index b12b529..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/index.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { FileSystemAdapter } from './adapters/fs';
-import * as async from './providers/async';
-import Settings, { Options } from './settings';
-import { Dirent, Entry } from './types';
-declare type AsyncCallback = async.AsyncCallback;
-declare function scandir(path: string, callback: AsyncCallback): void;
-declare function scandir(path: string, optionsOrSettings: Options | Settings, callback: AsyncCallback): void;
-declare namespace scandir {
- function __promisify__(path: string, optionsOrSettings?: Options | Settings): Promise<Entry[]>;
-}
-declare function scandirSync(path: string, optionsOrSettings?: Options | Settings): Entry[];
-export { scandir, scandirSync, Settings, AsyncCallback, Dirent, Entry, FileSystemAdapter, Options };
-//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/index.js b/assets/node_modules/@nodelib/fs.scandir/out/index.js
deleted file mode 100644
index 6e12de0..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/index.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const async = require("./providers/async");
-const sync = require("./providers/sync");
-const settings_1 = require("./settings");
-exports.Settings = settings_1.default;
-function scandir(path, optionsOrSettingsOrCallback, callback) {
- if (typeof optionsOrSettingsOrCallback === 'function') {
- return async.read(path, getSettings(), optionsOrSettingsOrCallback);
- }
- async.read(path, getSettings(optionsOrSettingsOrCallback), callback);
-}
-exports.scandir = scandir;
-function scandirSync(path, optionsOrSettings) {
- const settings = getSettings(optionsOrSettings);
- return sync.read(path, settings);
-}
-exports.scandirSync = scandirSync;
-function getSettings(settingsOrOptions = {}) {
- if (settingsOrOptions instanceof settings_1.default) {
- return settingsOrOptions;
- }
- return new settings_1.default(settingsOrOptions);
-}
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts b/assets/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts
deleted file mode 100644
index def26de..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-/// <reference types="node" />
-import Settings from '../settings';
-import { Entry } from '../types';
-export declare type AsyncCallback = (err: NodeJS.ErrnoException, entries: Entry[]) => void;
-export declare function read(directory: string, settings: Settings, callback: AsyncCallback): void;
-export declare function readdirWithFileTypes(directory: string, settings: Settings, callback: AsyncCallback): void;
-export declare function readdir(directory: string, settings: Settings, callback: AsyncCallback): void;
-//# sourceMappingURL=async.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/providers/async.js b/assets/node_modules/@nodelib/fs.scandir/out/providers/async.js
deleted file mode 100644
index d506853..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/providers/async.js
+++ /dev/null
@@ -1,90 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const fsStat = require("@nodelib/fs.stat");
-const rpl = require("run-parallel");
-const constants_1 = require("../constants");
-const utils = require("../utils");
-function read(directory, settings, callback) {
- if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {
- return readdirWithFileTypes(directory, settings, callback);
- }
- return readdir(directory, settings, callback);
-}
-exports.read = read;
-function readdirWithFileTypes(directory, settings, callback) {
- settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => {
- if (readdirError !== null) {
- return callFailureCallback(callback, readdirError);
- }
- const entries = dirents.map((dirent) => ({
- dirent,
- name: dirent.name,
- path: `${directory}${settings.pathSegmentSeparator}${dirent.name}`
- }));
- if (!settings.followSymbolicLinks) {
- return callSuccessCallback(callback, entries);
- }
- const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings));
- rpl(tasks, (rplError, rplEntries) => {
- if (rplError !== null) {
- return callFailureCallback(callback, rplError);
- }
- callSuccessCallback(callback, rplEntries);
- });
- });
-}
-exports.readdirWithFileTypes = readdirWithFileTypes;
-function makeRplTaskEntry(entry, settings) {
- return (done) => {
- if (!entry.dirent.isSymbolicLink()) {
- return done(null, entry);
- }
- settings.fs.stat(entry.path, (statError, stats) => {
- if (statError !== null) {
- if (settings.throwErrorOnBrokenSymbolicLink) {
- return done(statError);
- }
- return done(null, entry);
- }
- entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);
- return done(null, entry);
- });
- };
-}
-function readdir(directory, settings, callback) {
- settings.fs.readdir(directory, (readdirError, names) => {
- if (readdirError !== null) {
- return callFailureCallback(callback, readdirError);
- }
- const filepaths = names.map((name) => `${directory}${settings.pathSegmentSeparator}${name}`);
- const tasks = filepaths.map((filepath) => {
- return (done) => fsStat.stat(filepath, settings.fsStatSettings, done);
- });
- rpl(tasks, (rplError, results) => {
- if (rplError !== null) {
- return callFailureCallback(callback, rplError);
- }
- const entries = [];
- names.forEach((name, index) => {
- const stats = results[index];
- const entry = {
- name,
- path: filepaths[index],
- dirent: utils.fs.createDirentFromStats(name, stats)
- };
- if (settings.stats) {
- entry.stats = stats;
- }
- entries.push(entry);
- });
- callSuccessCallback(callback, entries);
- });
- });
-}
-exports.readdir = readdir;
-function callFailureCallback(callback, error) {
- callback(error);
-}
-function callSuccessCallback(callback, result) {
- callback(null, result);
-}
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts b/assets/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts
deleted file mode 100644
index d6ed468..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import Settings from '../settings';
-import { Entry } from '../types';
-export declare function read(directory: string, settings: Settings): Entry[];
-export declare function readdirWithFileTypes(directory: string, settings: Settings): Entry[];
-export declare function readdir(directory: string, settings: Settings): Entry[];
-//# sourceMappingURL=sync.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/providers/sync.js b/assets/node_modules/@nodelib/fs.scandir/out/providers/sync.js
deleted file mode 100644
index 7cc36af..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/providers/sync.js
+++ /dev/null
@@ -1,52 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const fsStat = require("@nodelib/fs.stat");
-const constants_1 = require("../constants");
-const utils = require("../utils");
-function read(directory, settings) {
- if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {
- return readdirWithFileTypes(directory, settings);
- }
- return readdir(directory, settings);
-}
-exports.read = read;
-function readdirWithFileTypes(directory, settings) {
- const dirents = settings.fs.readdirSync(directory, { withFileTypes: true });
- return dirents.map((dirent) => {
- const entry = {
- dirent,
- name: dirent.name,
- path: `${directory}${settings.pathSegmentSeparator}${dirent.name}`
- };
- if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) {
- try {
- const stats = settings.fs.statSync(entry.path);
- entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);
- }
- catch (error) {
- if (settings.throwErrorOnBrokenSymbolicLink) {
- throw error;
- }
- }
- }
- return entry;
- });
-}
-exports.readdirWithFileTypes = readdirWithFileTypes;
-function readdir(directory, settings) {
- const names = settings.fs.readdirSync(directory);
- return names.map((name) => {
- const entryPath = `${directory}${settings.pathSegmentSeparator}${name}`;
- const stats = fsStat.statSync(entryPath, settings.fsStatSettings);
- const entry = {
- name,
- path: entryPath,
- dirent: utils.fs.createDirentFromStats(name, stats)
- };
- if (settings.stats) {
- entry.stats = stats;
- }
- return entry;
- });
-}
-exports.readdir = readdir;
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/settings.d.ts b/assets/node_modules/@nodelib/fs.scandir/out/settings.d.ts
deleted file mode 100644
index 175f7c1..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/settings.d.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import * as fsStat from '@nodelib/fs.stat';
-import * as fs from './adapters/fs';
-export declare type Options = {
- followSymbolicLinks?: boolean;
- fs?: Partial<fs.FileSystemAdapter>;
- pathSegmentSeparator?: string;
- stats?: boolean;
- throwErrorOnBrokenSymbolicLink?: boolean;
-};
-export default class Settings {
- private readonly _options;
- readonly followSymbolicLinks: boolean;
- readonly fs: fs.FileSystemAdapter;
- readonly pathSegmentSeparator: string;
- readonly stats: boolean;
- readonly throwErrorOnBrokenSymbolicLink: boolean;
- readonly fsStatSettings: fsStat.Settings;
- constructor(_options?: Options);
- private _getValue;
-}
-//# sourceMappingURL=settings.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/settings.js b/assets/node_modules/@nodelib/fs.scandir/out/settings.js
deleted file mode 100644
index 52c3a09..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/settings.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const path = require("path");
-const fsStat = require("@nodelib/fs.stat");
-const fs = require("./adapters/fs");
-class Settings {
- constructor(_options = {}) {
- this._options = _options;
- this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false);
- this.fs = fs.createFileSystemAdapter(this._options.fs);
- this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);
- this.stats = this._getValue(this._options.stats, false);
- this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);
- this.fsStatSettings = new fsStat.Settings({
- followSymbolicLink: this.followSymbolicLinks,
- fs: this.fs,
- throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink
- });
- }
- _getValue(option, value) {
- return option === undefined ? value : option;
- }
-}
-exports.default = Settings;
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/types/index.d.ts b/assets/node_modules/@nodelib/fs.scandir/out/types/index.d.ts
deleted file mode 100644
index 50e4b8f..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/types/index.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-/// <reference types="node" />
-import * as fs from 'fs';
-export declare type Entry = {
- dirent: Dirent;
- name: string;
- path: string;
- stats?: Stats;
-};
-export declare type Stats = fs.Stats;
-export declare type Dirent = {
- isBlockDevice(): boolean;
- isCharacterDevice(): boolean;
- isDirectory(): boolean;
- isFIFO(): boolean;
- isFile(): boolean;
- isSocket(): boolean;
- isSymbolicLink(): boolean;
- name: string;
-};
-//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/types/index.js b/assets/node_modules/@nodelib/fs.scandir/out/types/index.js
deleted file mode 100644
index ce03781..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/types/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts b/assets/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts
deleted file mode 100644
index 8aef008..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { Dirent, Stats } from '../types';
-export declare function createDirentFromStats(name: string, stats: Stats): Dirent;
-//# sourceMappingURL=fs.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/utils/fs.js b/assets/node_modules/@nodelib/fs.scandir/out/utils/fs.js
deleted file mode 100644
index cd70c6b..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/utils/fs.js
+++ /dev/null
@@ -1,18 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-class DirentFromStats {
- constructor(name, stats) {
- this.name = name;
- this.isBlockDevice = stats.isBlockDevice.bind(stats);
- this.isCharacterDevice = stats.isCharacterDevice.bind(stats);
- this.isDirectory = stats.isDirectory.bind(stats);
- this.isFIFO = stats.isFIFO.bind(stats);
- this.isFile = stats.isFile.bind(stats);
- this.isSocket = stats.isSocket.bind(stats);
- this.isSymbolicLink = stats.isSymbolicLink.bind(stats);
- }
-}
-function createDirentFromStats(name, stats) {
- return new DirentFromStats(name, stats);
-}
-exports.createDirentFromStats = createDirentFromStats;
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts b/assets/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts
deleted file mode 100644
index 5ecd894..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import * as fs from './fs';
-export { fs };
-//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.scandir/out/utils/index.js b/assets/node_modules/@nodelib/fs.scandir/out/utils/index.js
deleted file mode 100644
index 61c1045..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/out/utils/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const fs = require("./fs");
-exports.fs = fs;
diff --git a/assets/node_modules/@nodelib/fs.scandir/package.json b/assets/node_modules/@nodelib/fs.scandir/package.json
deleted file mode 100644
index 95723d5..0000000
--- a/assets/node_modules/@nodelib/fs.scandir/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "@nodelib/fs.scandir",
- "version": "2.1.3",
- "description": "List files and directories inside the specified directory",
- "license": "MIT",
- "repository": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.scandir",
- "keywords": [
- "NodeLib",
- "fs",
- "FileSystem",
- "file system",
- "scandir",
- "readdir",
- "dirent"
- ],
- "engines": {
- "node": ">= 8"
- },
- "main": "out/index.js",
- "typings": "out/index.d.ts",
- "scripts": {
- "clean": "rimraf {tsconfig.tsbuildinfo,out}",
- "lint": "eslint \"src/**/*.ts\" --cache",
- "compile": "tsc -b .",
- "compile:watch": "tsc -p . --watch --sourceMap",
- "test": "mocha \"out/**/*.spec.js\" -s 0",
- "build": "npm run clean && npm run compile && npm run lint && npm test",
- "watch": "npm run clean && npm run compile:watch"
- },
- "dependencies": {
- "@nodelib/fs.stat": "2.0.3",
- "run-parallel": "^1.1.9"
- },
- "gitHead": "3b1ef7554ad7c061b3580858101d483fba847abf"
-}
diff --git a/assets/node_modules/@nodelib/fs.stat/LICENSE b/assets/node_modules/@nodelib/fs.stat/LICENSE
deleted file mode 100644
index 65a9994..0000000
--- a/assets/node_modules/@nodelib/fs.stat/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Denis Malinochkin
-
-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/assets/node_modules/@nodelib/fs.stat/README.md b/assets/node_modules/@nodelib/fs.stat/README.md
deleted file mode 100644
index 686f047..0000000
--- a/assets/node_modules/@nodelib/fs.stat/README.md
+++ /dev/null
@@ -1,126 +0,0 @@
-# @nodelib/fs.stat
-
-> Get the status of a file with some features.
-
-## :bulb: Highlights
-
-Wrapper around standard method `fs.lstat` and `fs.stat` with some features.
-
-* :beginner: Normally follows symbolic link.
-* :gear: Can safely work with broken symbolic link.
-
-## Install
-
-```console
-npm install @nodelib/fs.stat
-```
-
-## Usage
-
-```ts
-import * as fsStat from '@nodelib/fs.stat';
-
-fsStat.stat('path', (error, stats) => { /* … */ });
-```
-
-## API
-
-### .stat(path, [optionsOrSettings], callback)
-
-Returns an instance of `fs.Stats` class for provided path with standard callback-style.
-
-```ts
-fsStat.stat('path', (error, stats) => { /* … */ });
-fsStat.stat('path', {}, (error, stats) => { /* … */ });
-fsStat.stat('path', new fsStat.Settings(), (error, stats) => { /* … */ });
-```
-
-### .statSync(path, [optionsOrSettings])
-
-Returns an instance of `fs.Stats` class for provided path.
-
-```ts
-const stats = fsStat.stat('path');
-const stats = fsStat.stat('path', {});
-const stats = fsStat.stat('path', new fsStat.Settings());
-```
-
-#### path
-
-* Required: `true`
-* Type: `string | Buffer | URL`
-
-A path to a file. If a URL is provided, it must use the `file:` protocol.
-
-#### optionsOrSettings
-
-* Required: `false`
-* Type: `Options | Settings`
-* Default: An instance of `Settings` class
-
-An [`Options`](#options) object or an instance of [`Settings`](#settings) class.
-
-> :book: When you pass a plain object, an instance of the `Settings` class will be created automatically. If you plan to call the method frequently, use a pre-created instance of the `Settings` class.
-
-### Settings([options])
-
-A class of full settings of the package.
-
-```ts
-const settings = new fsStat.Settings({ followSymbolicLink: false });
-
-const stats = fsStat.stat('path', settings);
-```
-
-## Options
-
-### `followSymbolicLink`
-
-* Type: `boolean`
-* Default: `true`
-
-Follow symbolic link or not. Call `fs.stat` on symbolic link if `true`.
-
-### `markSymbolicLink`
-
-* Type: `boolean`
-* Default: `false`
-
-Mark symbolic link by setting the return value of `isSymbolicLink` function to always `true` (even after `fs.stat`).
-
-> :book: Can be used if you want to know what is hidden behind a symbolic link, but still continue to know that it is a symbolic link.
-
-### `throwErrorOnBrokenSymbolicLink`
-
-* Type: `boolean`
-* Default: `true`
-
-Throw an error when symbolic link is broken if `true` or safely return `lstat` call if `false`.
-
-### `fs`
-
-* Type: [`FileSystemAdapter`](./src/adapters/fs.ts)
-* Default: A default FS methods
-
-By default, the built-in Node.js module (`fs`) is used to work with the file system. You can replace any method with your own.
-
-```ts
-interface FileSystemAdapter {
- lstat?: typeof fs.lstat;
- stat?: typeof fs.stat;
- lstatSync?: typeof fs.lstatSync;
- statSync?: typeof fs.statSync;
-}
-
-const settings = new fsStat.Settings({
- fs: { lstat: fakeLstat }
-});
-```
-
-## Changelog
-
-See the [Releases section of our GitHub project](https://github.com/nodelib/nodelib/releases) for changelog for each release version.
-
-## License
-
-This software is released under the terms of the MIT license.
diff --git a/assets/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts b/assets/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts
deleted file mode 100644
index d17b356..0000000
--- a/assets/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-/// <reference types="node" />
-import * as fs from 'fs';
-export declare type FileSystemAdapter = {
- lstat: typeof fs.lstat;
- stat: typeof fs.stat;
- lstatSync: typeof fs.lstatSync;
- statSync: typeof fs.statSync;
-};
-export declare const FILE_SYSTEM_ADAPTER: FileSystemAdapter;
-export declare function createFileSystemAdapter(fsMethods?: Partial<FileSystemAdapter>): FileSystemAdapter;
-//# sourceMappingURL=fs.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.stat/out/adapters/fs.js b/assets/node_modules/@nodelib/fs.stat/out/adapters/fs.js
deleted file mode 100644
index 3a9806f..0000000
--- a/assets/node_modules/@nodelib/fs.stat/out/adapters/fs.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const fs = require("fs");
-exports.FILE_SYSTEM_ADAPTER = {
- lstat: fs.lstat,
- stat: fs.stat,
- lstatSync: fs.lstatSync,
- statSync: fs.statSync
-};
-function createFileSystemAdapter(fsMethods) {
- if (fsMethods === undefined) {
- return exports.FILE_SYSTEM_ADAPTER;
- }
- return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);
-}
-exports.createFileSystemAdapter = createFileSystemAdapter;
diff --git a/assets/node_modules/@nodelib/fs.stat/out/index.d.ts b/assets/node_modules/@nodelib/fs.stat/out/index.d.ts
deleted file mode 100644
index 5f092f9..0000000
--- a/assets/node_modules/@nodelib/fs.stat/out/index.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { FileSystemAdapter } from './adapters/fs';
-import * as async from './providers/async';
-import Settings, { Options } from './settings';
-import { Stats } from './types';
-declare type AsyncCallback = async.AsyncCallback;
-declare function stat(path: string, callback: AsyncCallback): void;
-declare function stat(path: string, optionsOrSettings: Options | Settings, callback: AsyncCallback): void;
-declare namespace stat {
- function __promisify__(path: string, optionsOrSettings?: Options | Settings): Promise<Stats>;
-}
-declare function statSync(path: string, optionsOrSettings?: Options | Settings): Stats;
-export { Settings, stat, statSync, AsyncCallback, FileSystemAdapter, Options, Stats };
-//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.stat/out/index.js b/assets/node_modules/@nodelib/fs.stat/out/index.js
deleted file mode 100644
index 6a98f77..0000000
--- a/assets/node_modules/@nodelib/fs.stat/out/index.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const async = require("./providers/async");
-const sync = require("./providers/sync");
-const settings_1 = require("./settings");
-exports.Settings = settings_1.default;
-function stat(path, optionsOrSettingsOrCallback, callback) {
- if (typeof optionsOrSettingsOrCallback === 'function') {
- return async.read(path, getSettings(), optionsOrSettingsOrCallback);
- }
- async.read(path, getSettings(optionsOrSettingsOrCallback), callback);
-}
-exports.stat = stat;
-function statSync(path, optionsOrSettings) {
- const settings = getSettings(optionsOrSettings);
- return sync.read(path, settings);
-}
-exports.statSync = statSync;
-function getSettings(settingsOrOptions = {}) {
- if (settingsOrOptions instanceof settings_1.default) {
- return settingsOrOptions;
- }
- return new settings_1.default(settingsOrOptions);
-}
diff --git a/assets/node_modules/@nodelib/fs.stat/out/providers/async.d.ts b/assets/node_modules/@nodelib/fs.stat/out/providers/async.d.ts
deleted file mode 100644
index a9637c5..0000000
--- a/assets/node_modules/@nodelib/fs.stat/out/providers/async.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import Settings from '../settings';
-import { ErrnoException, Stats } from '../types';
-export declare type AsyncCallback = (err: ErrnoException, stats: Stats) => void;
-export declare function read(path: string, settings: Settings, callback: AsyncCallback): void;
-//# sourceMappingURL=async.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.stat/out/providers/async.js b/assets/node_modules/@nodelib/fs.stat/out/providers/async.js
deleted file mode 100644
index ab98c29..0000000
--- a/assets/node_modules/@nodelib/fs.stat/out/providers/async.js
+++ /dev/null
@@ -1,31 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-function read(path, settings, callback) {
- settings.fs.lstat(path, (lstatError, lstat) => {
- if (lstatError !== null) {
- return callFailureCallback(callback, lstatError);
- }
- if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {
- return callSuccessCallback(callback, lstat);
- }
- settings.fs.stat(path, (statError, stat) => {
- if (statError !== null) {
- if (settings.throwErrorOnBrokenSymbolicLink) {
- return callFailureCallback(callback, statError);
- }
- return callSuccessCallback(callback, lstat);
- }
- if (settings.markSymbolicLink) {
- stat.isSymbolicLink = () => true;
- }
- callSuccessCallback(callback, stat);
- });
- });
-}
-exports.read = read;
-function callFailureCallback(callback, error) {
- callback(error);
-}
-function callSuccessCallback(callback, result) {
- callback(null, result);
-}
diff --git a/assets/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts b/assets/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts
deleted file mode 100644
index f4c1d78..0000000
--- a/assets/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import Settings from '../settings';
-import { Stats } from '../types';
-export declare function read(path: string, settings: Settings): Stats;
-//# sourceMappingURL=sync.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.stat/out/providers/sync.js b/assets/node_modules/@nodelib/fs.stat/out/providers/sync.js
deleted file mode 100644
index 31dab38..0000000
--- a/assets/node_modules/@nodelib/fs.stat/out/providers/sync.js
+++ /dev/null
@@ -1,22 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-function read(path, settings) {
- const lstat = settings.fs.lstatSync(path);
- if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {
- return lstat;
- }
- try {
- const stat = settings.fs.statSync(path);
- if (settings.markSymbolicLink) {
- stat.isSymbolicLink = () => true;
- }
- return stat;
- }
- catch (error) {
- if (!settings.throwErrorOnBrokenSymbolicLink) {
- return lstat;
- }
- throw error;
- }
-}
-exports.read = read;
diff --git a/assets/node_modules/@nodelib/fs.stat/out/settings.d.ts b/assets/node_modules/@nodelib/fs.stat/out/settings.d.ts
deleted file mode 100644
index 34c4620..0000000
--- a/assets/node_modules/@nodelib/fs.stat/out/settings.d.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import * as fs from './adapters/fs';
-export declare type Options = {
- followSymbolicLink?: boolean;
- fs?: Partial<fs.FileSystemAdapter>;
- markSymbolicLink?: boolean;
- throwErrorOnBrokenSymbolicLink?: boolean;
-};
-export default class Settings {
- private readonly _options;
- readonly followSymbolicLink: boolean;
- readonly fs: fs.FileSystemAdapter;
- readonly markSymbolicLink: boolean;
- readonly throwErrorOnBrokenSymbolicLink: boolean;
- constructor(_options?: Options);
- private _getValue;
-}
-//# sourceMappingURL=settings.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.stat/out/settings.js b/assets/node_modules/@nodelib/fs.stat/out/settings.js
deleted file mode 100644
index ef4d057..0000000
--- a/assets/node_modules/@nodelib/fs.stat/out/settings.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const fs = require("./adapters/fs");
-class Settings {
- constructor(_options = {}) {
- this._options = _options;
- this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true);
- this.fs = fs.createFileSystemAdapter(this._options.fs);
- this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false);
- this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);
- }
- _getValue(option, value) {
- return option === undefined ? value : option;
- }
-}
-exports.default = Settings;
diff --git a/assets/node_modules/@nodelib/fs.stat/out/types/index.d.ts b/assets/node_modules/@nodelib/fs.stat/out/types/index.d.ts
deleted file mode 100644
index 227f7bf..0000000
--- a/assets/node_modules/@nodelib/fs.stat/out/types/index.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-/// <reference types="node" />
-import * as fs from 'fs';
-export declare type Stats = fs.Stats;
-export declare type ErrnoException = NodeJS.ErrnoException;
-//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.stat/out/types/index.js b/assets/node_modules/@nodelib/fs.stat/out/types/index.js
deleted file mode 100644
index ce03781..0000000
--- a/assets/node_modules/@nodelib/fs.stat/out/types/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/assets/node_modules/@nodelib/fs.stat/package.json b/assets/node_modules/@nodelib/fs.stat/package.json
deleted file mode 100644
index 8c79d19..0000000
--- a/assets/node_modules/@nodelib/fs.stat/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "name": "@nodelib/fs.stat",
- "version": "2.0.3",
- "description": "Get the status of a file with some features",
- "license": "MIT",
- "repository": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.stat",
- "keywords": [
- "NodeLib",
- "fs",
- "FileSystem",
- "file system",
- "stat"
- ],
- "engines": {
- "node": ">= 8"
- },
- "main": "out/index.js",
- "typings": "out/index.d.ts",
- "scripts": {
- "clean": "rimraf {tsconfig.tsbuildinfo,out}",
- "lint": "eslint \"src/**/*.ts\" --cache",
- "compile": "tsc -b .",
- "compile:watch": "tsc -p . --watch --sourceMap",
- "test": "mocha \"out/**/*.spec.js\" -s 0",
- "build": "npm run clean && npm run compile && npm run lint && npm test",
- "watch": "npm run clean && npm run compile:watch"
- },
- "gitHead": "3b1ef7554ad7c061b3580858101d483fba847abf"
-}
diff --git a/assets/node_modules/@nodelib/fs.walk/LICENSE b/assets/node_modules/@nodelib/fs.walk/LICENSE
deleted file mode 100644
index 65a9994..0000000
--- a/assets/node_modules/@nodelib/fs.walk/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Denis Malinochkin
-
-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/assets/node_modules/@nodelib/fs.walk/README.md b/assets/node_modules/@nodelib/fs.walk/README.md
deleted file mode 100644
index 6ccc08d..0000000
--- a/assets/node_modules/@nodelib/fs.walk/README.md
+++ /dev/null
@@ -1,215 +0,0 @@
-# @nodelib/fs.walk
-
-> A library for efficiently walking a directory recursively.
-
-## :bulb: Highlights
-
-* :moneybag: Returns useful information: `name`, `path`, `dirent` and `stats` (optional).
-* :rocket: On Node.js 10.10+ uses the mechanism without additional calls to determine the entry type for performance reasons. See [`old` and `modern` mode](https://github.com/nodelib/nodelib/blob/master/packages/fs/fs.scandir/README.md#old-and-modern-mode).
-* :gear: Built-in directories/files and error filtering system.
-* :link: Can safely work with broken symbolic links.
-
-## Install
-
-```console
-npm install @nodelib/fs.walk
-```
-
-## Usage
-
-```ts
-import * as fsWalk from '@nodelib/fs.walk';
-
-fsWalk.walk('path', (error, entries) => { /* … */ });
-```
-
-## API
-
-### .walk(path, [optionsOrSettings], callback)
-
-Reads the directory recursively and asynchronously. Requires a callback function.
-
-> :book: If you want to use the Promise API, use `util.promisify`.
-
-```ts
-fsWalk.walk('path', (error, entries) => { /* … */ });
-fsWalk.walk('path', {}, (error, entries) => { /* … */ });
-fsWalk.walk('path', new fsWalk.Settings(), (error, entries) => { /* … */ });
-```
-
-### .walkStream(path, [optionsOrSettings])
-
-Reads the directory recursively and asynchronously. [Readable Stream](https://nodejs.org/dist/latest-v12.x/docs/api/stream.html#stream_readable_streams) is used as a provider.
-
-```ts
-const stream = fsWalk.walkStream('path');
-const stream = fsWalk.walkStream('path', {});
-const stream = fsWalk.walkStream('path', new fsWalk.Settings());
-```
-
-### .walkSync(path, [optionsOrSettings])
-
-Reads the directory recursively and synchronously. Returns an array of entries.
-
-```ts
-const entries = fsWalk.walkSync('path');
-const entries = fsWalk.walkSync('path', {});
-const entries = fsWalk.walkSync('path', new fsWalk.Settings());
-```
-
-#### path
-
-* Required: `true`
-* Type: `string | Buffer | URL`
-
-A path to a file. If a URL is provided, it must use the `file:` protocol.
-
-#### optionsOrSettings
-
-* Required: `false`
-* Type: `Options | Settings`
-* Default: An instance of `Settings` class
-
-An [`Options`](#options) object or an instance of [`Settings`](#settings) class.
-
-> :book: When you pass a plain object, an instance of the `Settings` class will be created automatically. If you plan to call the method frequently, use a pre-created instance of the `Settings` class.
-
-### Settings([options])
-
-A class of full settings of the package.
-
-```ts
-const settings = new fsWalk.Settings({ followSymbolicLinks: true });
-
-const entries = fsWalk.walkSync('path', settings);
-```
-
-## Entry
-
-* `name` — The name of the entry (`unknown.txt`).
-* `path` — The path of the entry relative to call directory (`root/unknown.txt`).
-* `dirent` — An instance of [`fs.Dirent`](./src/types/index.ts) class.
-* [`stats`] — An instance of `fs.Stats` class.
-
-## Options
-
-### basePath
-
-* Type: `string`
-* Default: `undefined`
-
-By default, all paths are built relative to the root path. You can use this option to set custom root path.
-
-In the example below we read the files from the `root` directory, but in the results the root path will be `custom`.
-
-```ts
-fsWalk.walkSync('root'); // → ['root/file.txt']
-fsWalk.walkSync('root', { basePath: 'custom' }); // → ['custom/file.txt']
-```
-
-### concurrency
-
-* Type: `number`
-* Default: `Infinity`
-
-The maximum number of concurrent calls to `fs.readdir`.
-
-> :book: The higher the number, the higher performance and the load on the File System. If you want to read in quiet mode, set the value to `4 * os.cpus().length` (4 is default size of [thread pool work scheduling](http://docs.libuv.org/en/v1.x/threadpool.html#thread-pool-work-scheduling)).
-
-### deepFilter
-
-* Type: [`DeepFilterFunction`](./src/settings.ts)
-* Default: `undefined`
-
-A function that indicates whether the directory will be read deep or not.
-
-```ts
-// Skip all directories that starts with `node_modules`
-const filter: DeepFilterFunction = (entry) => !entry.path.startsWith('node_modules');
-```
-
-### entryFilter
-
-* Type: [`EntryFilterFunction`](./src/settings.ts)
-* Default: `undefined`
-
-A function that indicates whether the entry will be included to results or not.
-
-```ts
-// Exclude all `.js` files from results
-const filter: EntryFilterFunction = (entry) => !entry.name.endsWith('.js');
-```
-
-### errorFilter
-
-* Type: [`ErrorFilterFunction`](./src/settings.ts)
-* Default: `undefined`
-
-A function that allows you to skip errors that occur when reading directories.
-
-For example, you can skip `ENOENT` errors if required:
-
-```ts
-// Skip all ENOENT errors
-const filter: ErrorFilterFunction = (error) => error.code == 'ENOENT';
-```
-
-### stats
-
-* Type: `boolean`
-* Default: `false`
-
-Adds an instance of `fs.Stats` class to the [`Entry`](#entry).
-
-> :book: Always use `fs.readdir` with additional `fs.lstat/fs.stat` calls to determine the entry type.
-
-### followSymbolicLinks
-
-* Type: `boolean`
-* Default: `false`
-
-Follow symbolic links or not. Call `fs.stat` on symbolic link if `true`.
-
-### `throwErrorOnBrokenSymbolicLink`
-
-* Type: `boolean`
-* Default: `true`
-
-Throw an error when symbolic link is broken if `true` or safely return `lstat` call if `false`.
-
-### `pathSegmentSeparator`
-
-* Type: `string`
-* Default: `path.sep`
-
-By default, this package uses the correct path separator for your OS (`\` on Windows, `/` on Unix-like systems). But you can set this option to any separator character(s) that you want to use instead.
-
-### `fs`
-
-* Type: `FileSystemAdapter`
-* Default: A default FS methods
-
-By default, the built-in Node.js module (`fs`) is used to work with the file system. You can replace any method with your own.
-
-```ts
-interface FileSystemAdapter {
- lstat: typeof fs.lstat;
- stat: typeof fs.stat;
- lstatSync: typeof fs.lstatSync;
- statSync: typeof fs.statSync;
- readdir: typeof fs.readdir;
- readdirSync: typeof fs.readdirSync;
-}
-
-const settings = new fsWalk.Settings({
- fs: { lstat: fakeLstat }
-});
-```
-
-## Changelog
-
-See the [Releases section of our GitHub project](https://github.com/nodelib/nodelib/releases) for changelog for each release version.
-
-## License
-
-This software is released under the terms of the MIT license.
diff --git a/assets/node_modules/@nodelib/fs.walk/out/index.d.ts b/assets/node_modules/@nodelib/fs.walk/out/index.d.ts
deleted file mode 100644
index 5070b6a..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/index.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-/// <reference types="node" />
-import { Readable } from 'stream';
-import { Dirent, FileSystemAdapter } from '@nodelib/fs.scandir';
-import { AsyncCallback } from './providers/async';
-import Settings, { DeepFilterFunction, EntryFilterFunction, ErrorFilterFunction, Options } from './settings';
-import { Entry } from './types';
-declare function walk(directory: string, callback: AsyncCallback): void;
-declare function walk(directory: string, optionsOrSettings: Options | Settings, callback: AsyncCallback): void;
-declare namespace walk {
- function __promisify__(directory: string, optionsOrSettings?: Options | Settings): Promise<Entry[]>;
-}
-declare function walkSync(directory: string, optionsOrSettings?: Options | Settings): Entry[];
-declare function walkStream(directory: string, optionsOrSettings?: Options | Settings): Readable;
-export { walk, walkSync, walkStream, Settings, AsyncCallback, Dirent, Entry, FileSystemAdapter, Options, DeepFilterFunction, EntryFilterFunction, ErrorFilterFunction };
-//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.walk/out/index.js b/assets/node_modules/@nodelib/fs.walk/out/index.js
deleted file mode 100644
index f081527..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const async_1 = require("./providers/async");
-const stream_1 = require("./providers/stream");
-const sync_1 = require("./providers/sync");
-const settings_1 = require("./settings");
-exports.Settings = settings_1.default;
-function walk(directory, optionsOrSettingsOrCallback, callback) {
- if (typeof optionsOrSettingsOrCallback === 'function') {
- return new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback);
- }
- new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback);
-}
-exports.walk = walk;
-function walkSync(directory, optionsOrSettings) {
- const settings = getSettings(optionsOrSettings);
- const provider = new sync_1.default(directory, settings);
- return provider.read();
-}
-exports.walkSync = walkSync;
-function walkStream(directory, optionsOrSettings) {
- const settings = getSettings(optionsOrSettings);
- const provider = new stream_1.default(directory, settings);
- return provider.read();
-}
-exports.walkStream = walkStream;
-function getSettings(settingsOrOptions = {}) {
- if (settingsOrOptions instanceof settings_1.default) {
- return settingsOrOptions;
- }
- return new settings_1.default(settingsOrOptions);
-}
diff --git a/assets/node_modules/@nodelib/fs.walk/out/providers/async.d.ts b/assets/node_modules/@nodelib/fs.walk/out/providers/async.d.ts
deleted file mode 100644
index 1f5f1ba..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/providers/async.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import AsyncReader from '../readers/async';
-import Settings from '../settings';
-import { Entry, Errno } from '../types';
-export declare type AsyncCallback = (err: Errno, entries: Entry[]) => void;
-export default class AsyncProvider {
- private readonly _root;
- private readonly _settings;
- protected readonly _reader: AsyncReader;
- private readonly _storage;
- constructor(_root: string, _settings: Settings);
- read(callback: AsyncCallback): void;
-}
-//# sourceMappingURL=async.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.walk/out/providers/async.js b/assets/node_modules/@nodelib/fs.walk/out/providers/async.js
deleted file mode 100644
index 20e4ab5..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/providers/async.js
+++ /dev/null
@@ -1,30 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const async_1 = require("../readers/async");
-class AsyncProvider {
- constructor(_root, _settings) {
- this._root = _root;
- this._settings = _settings;
- this._reader = new async_1.default(this._root, this._settings);
- this._storage = new Set();
- }
- read(callback) {
- this._reader.onError((error) => {
- callFailureCallback(callback, error);
- });
- this._reader.onEntry((entry) => {
- this._storage.add(entry);
- });
- this._reader.onEnd(() => {
- callSuccessCallback(callback, [...this._storage]);
- });
- this._reader.read();
- }
-}
-exports.default = AsyncProvider;
-function callFailureCallback(callback, error) {
- callback(error);
-}
-function callSuccessCallback(callback, entries) {
- callback(null, entries);
-}
diff --git a/assets/node_modules/@nodelib/fs.walk/out/providers/index.d.ts b/assets/node_modules/@nodelib/fs.walk/out/providers/index.d.ts
deleted file mode 100644
index cbdfb3b..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/providers/index.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import AsyncProvider from './async';
-import StreamProvider from './stream';
-import SyncProvider from './sync';
-export { AsyncProvider, StreamProvider, SyncProvider };
-//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.walk/out/providers/index.js b/assets/node_modules/@nodelib/fs.walk/out/providers/index.js
deleted file mode 100644
index c6dd916..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/providers/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const async_1 = require("./async");
-exports.AsyncProvider = async_1.default;
-const stream_1 = require("./stream");
-exports.StreamProvider = stream_1.default;
-const sync_1 = require("./sync");
-exports.SyncProvider = sync_1.default;
diff --git a/assets/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts b/assets/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts
deleted file mode 100644
index 810111d..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/// <reference types="node" />
-import { Readable } from 'stream';
-import AsyncReader from '../readers/async';
-import Settings from '../settings';
-export default class StreamProvider {
- private readonly _root;
- private readonly _settings;
- protected readonly _reader: AsyncReader;
- protected readonly _stream: Readable;
- constructor(_root: string, _settings: Settings);
- read(): Readable;
-}
-//# sourceMappingURL=stream.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.walk/out/providers/stream.js b/assets/node_modules/@nodelib/fs.walk/out/providers/stream.js
deleted file mode 100644
index f44cd8a..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/providers/stream.js
+++ /dev/null
@@ -1,30 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const stream_1 = require("stream");
-const async_1 = require("../readers/async");
-class StreamProvider {
- constructor(_root, _settings) {
- this._root = _root;
- this._settings = _settings;
- this._reader = new async_1.default(this._root, this._settings);
- this._stream = new stream_1.Readable({
- objectMode: true,
- read: () => { },
- destroy: this._reader.destroy.bind(this._reader)
- });
- }
- read() {
- this._reader.onError((error) => {
- this._stream.emit('error', error);
- });
- this._reader.onEntry((entry) => {
- this._stream.push(entry);
- });
- this._reader.onEnd(() => {
- this._stream.push(null);
- });
- this._reader.read();
- return this._stream;
- }
-}
-exports.default = StreamProvider;
diff --git a/assets/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts b/assets/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts
deleted file mode 100644
index 9570fd1..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import SyncReader from '../readers/sync';
-import Settings from '../settings';
-import { Entry } from '../types';
-export default class SyncProvider {
- private readonly _root;
- private readonly _settings;
- protected readonly _reader: SyncReader;
- constructor(_root: string, _settings: Settings);
- read(): Entry[];
-}
-//# sourceMappingURL=sync.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.walk/out/providers/sync.js b/assets/node_modules/@nodelib/fs.walk/out/providers/sync.js
deleted file mode 100644
index fef1d8d..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/providers/sync.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const sync_1 = require("../readers/sync");
-class SyncProvider {
- constructor(_root, _settings) {
- this._root = _root;
- this._settings = _settings;
- this._reader = new sync_1.default(this._root, this._settings);
- }
- read() {
- return this._reader.read();
- }
-}
-exports.default = SyncProvider;
diff --git a/assets/node_modules/@nodelib/fs.walk/out/readers/async.d.ts b/assets/node_modules/@nodelib/fs.walk/out/readers/async.d.ts
deleted file mode 100644
index 7325382..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/readers/async.d.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-/// <reference types="node" />
-import { EventEmitter } from 'events';
-import * as fsScandir from '@nodelib/fs.scandir';
-import Settings from '../settings';
-import { Entry, Errno } from '../types';
-import Reader from './reader';
-declare type EntryEventCallback = (entry: Entry) => void;
-declare type ErrorEventCallback = (error: Errno) => void;
-declare type EndEventCallback = () => void;
-export default class AsyncReader extends Reader {
- protected readonly _settings: Settings;
- protected readonly _scandir: typeof fsScandir.scandir;
- protected readonly _emitter: EventEmitter;
- private readonly _queue;
- private _isFatalError;
- private _isDestroyed;
- constructor(_root: string, _settings: Settings);
- read(): EventEmitter;
- destroy(): void;
- onEntry(callback: EntryEventCallback): void;
- onError(callback: ErrorEventCallback): void;
- onEnd(callback: EndEventCallback): void;
- private _pushToQueue;
- private _worker;
- private _handleError;
- private _handleEntry;
- private _emitEntry;
-}
-export {};
-//# sourceMappingURL=async.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.walk/out/readers/async.js b/assets/node_modules/@nodelib/fs.walk/out/readers/async.js
deleted file mode 100644
index d6f666d..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/readers/async.js
+++ /dev/null
@@ -1,93 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const events_1 = require("events");
-const fsScandir = require("@nodelib/fs.scandir");
-const fastq = require("fastq");
-const common = require("./common");
-const reader_1 = require("./reader");
-class AsyncReader extends reader_1.default {
- constructor(_root, _settings) {
- super(_root, _settings);
- this._settings = _settings;
- this._scandir = fsScandir.scandir;
- this._emitter = new events_1.EventEmitter();
- this._queue = fastq(this._worker.bind(this), this._settings.concurrency);
- this._isFatalError = false;
- this._isDestroyed = false;
- this._queue.drain = () => {
- if (!this._isFatalError) {
- this._emitter.emit('end');
- }
- };
- }
- read() {
- this._isFatalError = false;
- this._isDestroyed = false;
- setImmediate(() => {
- this._pushToQueue(this._root, this._settings.basePath);
- });
- return this._emitter;
- }
- destroy() {
- if (this._isDestroyed) {
- throw new Error('The reader is already destroyed');
- }
- this._isDestroyed = true;
- this._queue.killAndDrain();
- }
- onEntry(callback) {
- this._emitter.on('entry', callback);
- }
- onError(callback) {
- this._emitter.once('error', callback);
- }
- onEnd(callback) {
- this._emitter.once('end', callback);
- }
- _pushToQueue(directory, base) {
- const queueItem = { directory, base };
- this._queue.push(queueItem, (error) => {
- if (error !== null) {
- this._handleError(error);
- }
- });
- }
- _worker(item, done) {
- this._scandir(item.directory, this._settings.fsScandirSettings, (error, entries) => {
- if (error !== null) {
- return done(error, undefined);
- }
- for (const entry of entries) {
- this._handleEntry(entry, item.base);
- }
- done(null, undefined);
- });
- }
- _handleError(error) {
- if (!common.isFatalError(this._settings, error)) {
- return;
- }
- this._isFatalError = true;
- this._isDestroyed = true;
- this._emitter.emit('error', error);
- }
- _handleEntry(entry, base) {
- if (this._isDestroyed || this._isFatalError) {
- return;
- }
- const fullpath = entry.path;
- if (base !== undefined) {
- entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);
- }
- if (common.isAppliedFilter(this._settings.entryFilter, entry)) {
- this._emitEntry(entry);
- }
- if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {
- this._pushToQueue(fullpath, entry.path);
- }
- }
- _emitEntry(entry) {
- this._emitter.emit('entry', entry);
- }
-}
-exports.default = AsyncReader;
diff --git a/assets/node_modules/@nodelib/fs.walk/out/readers/common.d.ts b/assets/node_modules/@nodelib/fs.walk/out/readers/common.d.ts
deleted file mode 100644
index 93bbae3..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/readers/common.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import Settings, { FilterFunction } from '../settings';
-import { Errno } from '../types';
-export declare function isFatalError(settings: Settings, error: Errno): boolean;
-export declare function isAppliedFilter<T>(filter: FilterFunction<T> | null, value: T): boolean;
-export declare function replacePathSegmentSeparator(filepath: string, separator: string): string;
-export declare function joinPathSegments(a: string, b: string, separator: string): string;
-//# sourceMappingURL=common.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.walk/out/readers/common.js b/assets/node_modules/@nodelib/fs.walk/out/readers/common.js
deleted file mode 100644
index c340606..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/readers/common.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-function isFatalError(settings, error) {
- if (settings.errorFilter === null) {
- return true;
- }
- return !settings.errorFilter(error);
-}
-exports.isFatalError = isFatalError;
-function isAppliedFilter(filter, value) {
- return filter === null || filter(value);
-}
-exports.isAppliedFilter = isAppliedFilter;
-function replacePathSegmentSeparator(filepath, separator) {
- return filepath.split(/[\\/]/).join(separator);
-}
-exports.replacePathSegmentSeparator = replacePathSegmentSeparator;
-function joinPathSegments(a, b, separator) {
- if (a === '') {
- return b;
- }
- return a + separator + b;
-}
-exports.joinPathSegments = joinPathSegments;
diff --git a/assets/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts b/assets/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts
deleted file mode 100644
index 688968f..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import Settings from '../settings';
-export default class Reader {
- protected readonly _root: string;
- protected readonly _settings: Settings;
- constructor(_root: string, _settings: Settings);
-}
-//# sourceMappingURL=reader.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.walk/out/readers/reader.js b/assets/node_modules/@nodelib/fs.walk/out/readers/reader.js
deleted file mode 100644
index 25e7997..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/readers/reader.js
+++ /dev/null
@@ -1,11 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const common = require("./common");
-class Reader {
- constructor(_root, _settings) {
- this._root = _root;
- this._settings = _settings;
- this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator);
- }
-}
-exports.default = Reader;
diff --git a/assets/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts b/assets/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts
deleted file mode 100644
index b0bb267..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import * as fsScandir from '@nodelib/fs.scandir';
-import { Entry } from '../types';
-import Reader from './reader';
-export default class SyncReader extends Reader {
- protected readonly _scandir: typeof fsScandir.scandirSync;
- private readonly _storage;
- private readonly _queue;
- read(): Entry[];
- private _pushToQueue;
- private _handleQueue;
- private _handleDirectory;
- private _handleError;
- private _handleEntry;
- private _pushToStorage;
-}
-//# sourceMappingURL=sync.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.walk/out/readers/sync.js b/assets/node_modules/@nodelib/fs.walk/out/readers/sync.js
deleted file mode 100644
index d0f0691..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/readers/sync.js
+++ /dev/null
@@ -1,59 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const fsScandir = require("@nodelib/fs.scandir");
-const common = require("./common");
-const reader_1 = require("./reader");
-class SyncReader extends reader_1.default {
- constructor() {
- super(...arguments);
- this._scandir = fsScandir.scandirSync;
- this._storage = new Set();
- this._queue = new Set();
- }
- read() {
- this._pushToQueue(this._root, this._settings.basePath);
- this._handleQueue();
- return [...this._storage];
- }
- _pushToQueue(directory, base) {
- this._queue.add({ directory, base });
- }
- _handleQueue() {
- for (const item of this._queue.values()) {
- this._handleDirectory(item.directory, item.base);
- }
- }
- _handleDirectory(directory, base) {
- try {
- const entries = this._scandir(directory, this._settings.fsScandirSettings);
- for (const entry of entries) {
- this._handleEntry(entry, base);
- }
- }
- catch (error) {
- this._handleError(error);
- }
- }
- _handleError(error) {
- if (!common.isFatalError(this._settings, error)) {
- return;
- }
- throw error;
- }
- _handleEntry(entry, base) {
- const fullpath = entry.path;
- if (base !== undefined) {
- entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);
- }
- if (common.isAppliedFilter(this._settings.entryFilter, entry)) {
- this._pushToStorage(entry);
- }
- if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {
- this._pushToQueue(fullpath, entry.path);
- }
- }
- _pushToStorage(entry) {
- this._storage.add(entry);
- }
-}
-exports.default = SyncReader;
diff --git a/assets/node_modules/@nodelib/fs.walk/out/settings.d.ts b/assets/node_modules/@nodelib/fs.walk/out/settings.d.ts
deleted file mode 100644
index bc1f9d5..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/settings.d.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import * as fsScandir from '@nodelib/fs.scandir';
-import { Entry, Errno } from './types';
-export declare type FilterFunction<T> = (value: T) => boolean;
-export declare type DeepFilterFunction = FilterFunction<Entry>;
-export declare type EntryFilterFunction = FilterFunction<Entry>;
-export declare type ErrorFilterFunction = FilterFunction<Errno>;
-export declare type Options = {
- basePath?: string;
- concurrency?: number;
- deepFilter?: DeepFilterFunction;
- entryFilter?: EntryFilterFunction;
- errorFilter?: ErrorFilterFunction;
- followSymbolicLinks?: boolean;
- fs?: Partial<fsScandir.FileSystemAdapter>;
- pathSegmentSeparator?: string;
- stats?: boolean;
- throwErrorOnBrokenSymbolicLink?: boolean;
-};
-export default class Settings {
- private readonly _options;
- readonly basePath?: string;
- readonly concurrency: number;
- readonly deepFilter: DeepFilterFunction | null;
- readonly entryFilter: EntryFilterFunction | null;
- readonly errorFilter: ErrorFilterFunction | null;
- readonly pathSegmentSeparator: string;
- readonly fsScandirSettings: fsScandir.Settings;
- constructor(_options?: Options);
- private _getValue;
-}
-//# sourceMappingURL=settings.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.walk/out/settings.js b/assets/node_modules/@nodelib/fs.walk/out/settings.js
deleted file mode 100644
index 4357987..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/settings.js
+++ /dev/null
@@ -1,26 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const path = require("path");
-const fsScandir = require("@nodelib/fs.scandir");
-class Settings {
- constructor(_options = {}) {
- this._options = _options;
- this.basePath = this._getValue(this._options.basePath, undefined);
- this.concurrency = this._getValue(this._options.concurrency, Infinity);
- this.deepFilter = this._getValue(this._options.deepFilter, null);
- this.entryFilter = this._getValue(this._options.entryFilter, null);
- this.errorFilter = this._getValue(this._options.errorFilter, null);
- this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);
- this.fsScandirSettings = new fsScandir.Settings({
- followSymbolicLinks: this._options.followSymbolicLinks,
- fs: this._options.fs,
- pathSegmentSeparator: this._options.pathSegmentSeparator,
- stats: this._options.stats,
- throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink
- });
- }
- _getValue(option, value) {
- return option === undefined ? value : option;
- }
-}
-exports.default = Settings;
diff --git a/assets/node_modules/@nodelib/fs.walk/out/types/index.d.ts b/assets/node_modules/@nodelib/fs.walk/out/types/index.d.ts
deleted file mode 100644
index 75bc4ab..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/types/index.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-/// <reference types="node" />
-import * as scandir from '@nodelib/fs.scandir';
-export declare type Entry = scandir.Entry;
-export declare type Errno = NodeJS.ErrnoException;
-export declare type QueueItem = {
- directory: string;
- base?: string;
-};
-//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/@nodelib/fs.walk/out/types/index.js b/assets/node_modules/@nodelib/fs.walk/out/types/index.js
deleted file mode 100644
index ce03781..0000000
--- a/assets/node_modules/@nodelib/fs.walk/out/types/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/assets/node_modules/@nodelib/fs.walk/package.json b/assets/node_modules/@nodelib/fs.walk/package.json
deleted file mode 100644
index 82fa491..0000000
--- a/assets/node_modules/@nodelib/fs.walk/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "@nodelib/fs.walk",
- "version": "1.2.4",
- "description": "A library for efficiently walking a directory recursively",
- "license": "MIT",
- "repository": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.walk",
- "keywords": [
- "NodeLib",
- "fs",
- "FileSystem",
- "file system",
- "walk",
- "scanner",
- "crawler"
- ],
- "engines": {
- "node": ">= 8"
- },
- "main": "out/index.js",
- "typings": "out/index.d.ts",
- "scripts": {
- "clean": "rimraf {tsconfig.tsbuildinfo,out}",
- "lint": "eslint \"src/**/*.ts\" --cache",
- "compile": "tsc -b .",
- "compile:watch": "tsc -p . --watch --sourceMap",
- "test": "mocha \"out/**/*.spec.js\" -s 0",
- "build": "npm run clean && npm run compile && npm run lint && npm test",
- "watch": "npm run clean && npm run compile:watch"
- },
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.3",
- "fastq": "^1.6.0"
- },
- "gitHead": "3b1ef7554ad7c061b3580858101d483fba847abf"
-}
diff --git a/assets/node_modules/@types/color-name/LICENSE b/assets/node_modules/@types/color-name/LICENSE
deleted file mode 100644
index 4b1ad51..0000000
--- a/assets/node_modules/@types/color-name/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
- MIT License
-
- Copyright (c) Microsoft Corporation. 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/assets/node_modules/@types/color-name/README.md b/assets/node_modules/@types/color-name/README.md
deleted file mode 100644
index 5c77cba..0000000
--- a/assets/node_modules/@types/color-name/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Installation
-> `npm install --save @types/color-name`
-
-# Summary
-This package contains type definitions for color-name ( https://github.com/colorjs/color-name ).
-
-# Details
-Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/color-name
-
-Additional Details
- * Last updated: Wed, 13 Feb 2019 16:16:48 GMT
- * Dependencies: none
- * Global values: none
-
-# Credits
-These definitions were written by Junyoung Clare Jang <https://github.com/Ailrun>.
diff --git a/assets/node_modules/@types/color-name/index.d.ts b/assets/node_modules/@types/color-name/index.d.ts
deleted file mode 100644
index b5bff47..0000000
--- a/assets/node_modules/@types/color-name/index.d.ts
+++ /dev/null
@@ -1,161 +0,0 @@
-// Type definitions for color-name 1.1
-// Project: https://github.com/colorjs/color-name
-// Definitions by: Junyoung Clare Jang <https://github.com/Ailrun>
-// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
-
-/**
- * Tuple of Red, Green, and Blue
- * @example
- * // Red = 55, Green = 70, Blue = 0
- * const rgb: RGB = [55, 70, 0];
- */
-export type RGB = [number, number, number];
-
-export const aliceblue: RGB;
-export const antiquewhite: RGB;
-export const aqua: RGB;
-export const aquamarine: RGB;
-export const azure: RGB;
-export const beige: RGB;
-export const bisque: RGB;
-export const black: RGB;
-export const blanchedalmond: RGB;
-export const blue: RGB;
-export const blueviolet: RGB;
-export const brown: RGB;
-export const burlywood: RGB;
-export const cadetblue: RGB;
-export const chartreuse: RGB;
-export const chocolate: RGB;
-export const coral: RGB;
-export const cornflowerblue: RGB;
-export const cornsilk: RGB;
-export const crimson: RGB;
-export const cyan: RGB;
-export const darkblue: RGB;
-export const darkcyan: RGB;
-export const darkgoldenrod: RGB;
-export const darkgray: RGB;
-export const darkgreen: RGB;
-export const darkgrey: RGB;
-export const darkkhaki: RGB;
-export const darkmagenta: RGB;
-export const darkolivegreen: RGB;
-export const darkorange: RGB;
-export const darkorchid: RGB;
-export const darkred: RGB;
-export const darksalmon: RGB;
-export const darkseagreen: RGB;
-export const darkslateblue: RGB;
-export const darkslategray: RGB;
-export const darkslategrey: RGB;
-export const darkturquoise: RGB;
-export const darkviolet: RGB;
-export const deeppink: RGB;
-export const deepskyblue: RGB;
-export const dimgray: RGB;
-export const dimgrey: RGB;
-export const dodgerblue: RGB;
-export const firebrick: RGB;
-export const floralwhite: RGB;
-export const forestgreen: RGB;
-export const fuchsia: RGB;
-export const gainsboro: RGB;
-export const ghostwhite: RGB;
-export const gold: RGB;
-export const goldenrod: RGB;
-export const gray: RGB;
-export const green: RGB;
-export const greenyellow: RGB;
-export const grey: RGB;
-export const honeydew: RGB;
-export const hotpink: RGB;
-export const indianred: RGB;
-export const indigo: RGB;
-export const ivory: RGB;
-export const khaki: RGB;
-export const lavender: RGB;
-export const lavenderblush: RGB;
-export const lawngreen: RGB;
-export const lemonchiffon: RGB;
-export const lightblue: RGB;
-export const lightcoral: RGB;
-export const lightcyan: RGB;
-export const lightgoldenrodyellow: RGB;
-export const lightgray: RGB;
-export const lightgreen: RGB;
-export const lightgrey: RGB;
-export const lightpink: RGB;
-export const lightsalmon: RGB;
-export const lightseagreen: RGB;
-export const lightskyblue: RGB;
-export const lightslategray: RGB;
-export const lightslategrey: RGB;
-export const lightsteelblue: RGB;
-export const lightyellow: RGB;
-export const lime: RGB;
-export const limegreen: RGB;
-export const linen: RGB;
-export const magenta: RGB;
-export const maroon: RGB;
-export const mediumaquamarine: RGB;
-export const mediumblue: RGB;
-export const mediumorchid: RGB;
-export const mediumpurple: RGB;
-export const mediumseagreen: RGB;
-export const mediumslateblue: RGB;
-export const mediumspringgreen: RGB;
-export const mediumturquoise: RGB;
-export const mediumvioletred: RGB;
-export const midnightblue: RGB;
-export const mintcream: RGB;
-export const mistyrose: RGB;
-export const moccasin: RGB;
-export const navajowhite: RGB;
-export const navy: RGB;
-export const oldlace: RGB;
-export const olive: RGB;
-export const olivedrab: RGB;
-export const orange: RGB;
-export const orangered: RGB;
-export const orchid: RGB;
-export const palegoldenrod: RGB;
-export const palegreen: RGB;
-export const paleturquoise: RGB;
-export const palevioletred: RGB;
-export const papayawhip: RGB;
-export const peachpuff: RGB;
-export const peru: RGB;
-export const pink: RGB;
-export const plum: RGB;
-export const powderblue: RGB;
-export const purple: RGB;
-export const rebeccapurple: RGB;
-export const red: RGB;
-export const rosybrown: RGB;
-export const royalblue: RGB;
-export const saddlebrown: RGB;
-export const salmon: RGB;
-export const sandybrown: RGB;
-export const seagreen: RGB;
-export const seashell: RGB;
-export const sienna: RGB;
-export const silver: RGB;
-export const skyblue: RGB;
-export const slateblue: RGB;
-export const slategray: RGB;
-export const slategrey: RGB;
-export const snow: RGB;
-export const springgreen: RGB;
-export const steelblue: RGB;
-export const tan: RGB;
-export const teal: RGB;
-export const thistle: RGB;
-export const tomato: RGB;
-export const turquoise: RGB;
-export const violet: RGB;
-export const wheat: RGB;
-export const white: RGB;
-export const whitesmoke: RGB;
-export const yellow: RGB;
-export const yellowgreen: RGB;
diff --git a/assets/node_modules/@types/color-name/package.json b/assets/node_modules/@types/color-name/package.json
deleted file mode 100644
index d5e367e..0000000
--- a/assets/node_modules/@types/color-name/package.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "name": "@types/color-name",
- "version": "1.1.1",
- "description": "TypeScript definitions for color-name",
- "license": "MIT",
- "contributors": [
- {
- "name": "Junyoung Clare Jang",
- "url": "https://github.com/Ailrun",
- "githubUsername": "Ailrun"
- }
- ],
- "main": "",
- "types": "index",
- "repository": {
- "type": "git",
- "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git"
- },
- "scripts": {},
- "dependencies": {},
- "typesPublisherContentHash": "e22c6881e2dcf766e32142cbb82d9acf9c08258bdf0da8e76c8a448d1be44ac7",
- "typeScriptVersion": "2.0"
-} \ No newline at end of file
diff --git a/assets/node_modules/@types/minimist/README.md b/assets/node_modules/@types/minimist/README.md
deleted file mode 100644
index f76b552..0000000
--- a/assets/node_modules/@types/minimist/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Installation
-> `npm install --save @types/minimist`
-
-# Summary
-This package contains type definitions for minimist (https://github.com/substack/minimist).
-
-# Details
-Files were exported from https://www.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/minimist
-
-Additional Details
- * Last updated: Thu, 29 Dec 2016 23:09:09 GMT
- * Library Dependencies: none
- * Module Dependencies: none
- * Global values: none
-
-# Credits
-These definitions were written by Bart van der Schoor <https://github.com/Bartvds>, Necroskillz <https://github.com/Necroskillz>, kamranayub <https://github.com/kamranayub>.
diff --git a/assets/node_modules/@types/minimist/index.d.ts b/assets/node_modules/@types/minimist/index.d.ts
deleted file mode 100644
index 0e3b222..0000000
--- a/assets/node_modules/@types/minimist/index.d.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-// Type definitions for minimist 1.2.0
-// Project: https://github.com/substack/minimist
-// Definitions by: Bart van der Schoor <https://github.com/Bartvds>, Necroskillz <https://github.com/Necroskillz>, kamranayub <https://github.com/kamranayub>
-// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
-
-/**
- * Return an argument object populated with the array arguments from args
- *
- * @param args An optional argument array (typically `process.argv.slice(2)`)
- * @param opts An optional options object to customize the parsing
- */
-declare function minimist(args?: string[], opts?: minimist.Opts): minimist.ParsedArgs;
-
-/**
- * Return an argument object populated with the array arguments from args. Strongly-typed
- * to be the intersect of type T with minimist.ParsedArgs.
- *
- * @type T The type that will be intersected with minimist.ParsedArgs to represent the argument object
- * @param args An optional argument array (typically `process.argv.slice(2)`)
- * @param opts An optional options object to customize the parsing
- */
-declare function minimist<T>(args?: string[], opts?: minimist.Opts): T & minimist.ParsedArgs;
-
-/**
- * Return an argument object populated with the array arguments from args. Strongly-typed
- * to be the the type T which should extend minimist.ParsedArgs
- *
- * @type T The type that extends minimist.ParsedArgs and represents the argument object
- * @param args An optional argument array (typically `process.argv.slice(2)`)
- * @param opts An optional options object to customize the parsing
- */
-declare function minimist<T extends minimist.ParsedArgs>(args?: string[], opts?: minimist.Opts): T;
-
-declare namespace minimist {
- export interface Opts {
- /**
- * A string or array of strings argument names to always treat as strings
- */
- string?: string | string[];
-
- /**
- * A boolean, string or array of strings to always treat as booleans. If true will treat
- * all double hyphenated arguments without equals signs as boolean (e.g. affects `--foo`, not `-f` or `--foo=bar`)
- */
- boolean?: boolean | string | string[];
-
- /**
- * An object mapping string names to strings or arrays of string argument names to use as aliases
- */
- alias?: { [key: string]: string | string[] };
-
- /**
- * An object mapping string argument names to default values
- */
- default?: { [key: string]: any };
-
- /**
- * When true, populate argv._ with everything after the first non-option
- */
- stopEarly?: boolean;
-
- /**
- * 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
- */
- unknown?: (arg: string) => boolean;
-
- /**
- * When true, populate argv._ with everything before the -- and argv['--'] with everything after the --.
- * Note that with -- set, parsing for arguments still stops after the `--`.
- */
- '--'?: boolean;
- }
-
- export interface ParsedArgs {
- [arg: string]: any;
-
- /**
- * If opts['--'] is true, populated with everything after the --
- */
- '--'?: string[];
-
- /**
- * Contains all the arguments that didn't have an option associated with them
- */
- _: string[];
- }
-}
-
-export = minimist;
diff --git a/assets/node_modules/@types/minimist/package.json b/assets/node_modules/@types/minimist/package.json
deleted file mode 100644
index 0f408ca..0000000
--- a/assets/node_modules/@types/minimist/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "@types/minimist",
- "version": "1.2.0",
- "description": "TypeScript definitions for minimist",
- "license": "MIT",
- "author": "Bart van der Schoor <https://github.com/Bartvds>, Necroskillz <https://github.com/Necroskillz>, kamranayub <https://github.com/kamranayub>",
- "main": "",
- "repository": {
- "type": "git",
- "url": "https://www.github.com/DefinitelyTyped/DefinitelyTyped.git"
- },
- "scripts": {},
- "dependencies": {},
- "peerDependencies": {},
- "typesPublisherContentHash": "46fbb5db5555175c72b64f17adce05fa9f0b38683361f762134fc47aea2ac195",
- "typeScriptVersion": "2.0"
-} \ No newline at end of file
diff --git a/assets/node_modules/@types/minimist/types-metadata.json b/assets/node_modules/@types/minimist/types-metadata.json
deleted file mode 100644
index 0483e67..0000000
--- a/assets/node_modules/@types/minimist/types-metadata.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "authors": "Bart van der Schoor <https://github.com/Bartvds>, Necroskillz <https://github.com/Necroskillz>, kamranayub <https://github.com/kamranayub>",
- "libraryDependencies": [],
- "moduleDependencies": [],
- "libraryMajorVersion": 1,
- "libraryMinorVersion": 2,
- "typeScriptVersion": "2.0",
- "libraryName": "minimist",
- "typingsPackageName": "minimist",
- "projectName": "https://github.com/substack/minimist",
- "sourceRepoURL": "https://www.github.com/DefinitelyTyped/DefinitelyTyped",
- "sourceBranch": "master",
- "globals": [],
- "declaredModules": [
- "minimist"
- ],
- "files": [
- "index.d.ts"
- ],
- "hasPackageJson": false,
- "contentHash": "46fbb5db5555175c72b64f17adce05fa9f0b38683361f762134fc47aea2ac195"
-} \ No newline at end of file
diff --git a/assets/node_modules/@types/node/LICENSE b/assets/node_modules/@types/node/LICENSE
deleted file mode 100644
index 4b1ad51..0000000
--- a/assets/node_modules/@types/node/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
- MIT License
-
- Copyright (c) Microsoft Corporation. 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/assets/node_modules/@types/node/README.md b/assets/node_modules/@types/node/README.md
deleted file mode 100644
index f0697e6..0000000
--- a/assets/node_modules/@types/node/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Installation
-> `npm install --save @types/node`
-
-# Summary
-This package contains type definitions for Node.js (http://nodejs.org/).
-
-# Details
-Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
-
-### Additional Details
- * Last updated: Fri, 31 Jan 2020 21:34:20 GMT
- * Dependencies: none
- * Global values: `Buffer`, `Symbol`, `__dirname`, `__filename`, `clearImmediate`, `clearInterval`, `clearTimeout`, `console`, `exports`, `global`, `module`, `process`, `queueMicrotask`, `require`, `setImmediate`, `setInterval`, `setTimeout`
-
-# Credits
-These definitions were written by Microsoft TypeScript (https://github.com/Microsoft), DefinitelyTyped (https://github.com/DefinitelyTyped), Alberto Schiabel (https://github.com/jkomyno), Alexander T. (https://github.com/a-tarasyuk), Alvis HT Tang (https://github.com/alvis), Andrew Makarov (https://github.com/r3nya), Benjamin Toueg (https://github.com/btoueg), Bruno Scheufler (https://github.com/brunoscheufler), Chigozirim C. (https://github.com/smac89), Christian Vaagland Tellnes (https://github.com/tellnes), David Junger (https://github.com/touffy), Deividas Bakanas (https://github.com/DeividasBakanas), Eugene Y. Q. Shen (https://github.com/eyqs), Flarna (https://github.com/Flarna), Hannes Magnusson (https://github.com/Hannes-Magnusson-CK), Hoàng Văn Khải (https://github.com/KSXGitHub), Huw (https://github.com/hoo29), Kelvin Jin (https://github.com/kjin), Klaus Meinhardt (https://github.com/ajafff), Lishude (https://github.com/islishude), Mariusz Wiktorczyk (https://github.com/mwiktorczyk), Mohsen Azimi (https://github.com/mohsen1), Nicolas Even (https://github.com/n-e), Nicolas Voigt (https://github.com/octo-sniffle), Nikita Galkin (https://github.com/galkin), Parambir Singh (https://github.com/parambirs), Sebastian Silbermann (https://github.com/eps1lon), Simon Schick (https://github.com/SimonSchick), Thomas den Hollander (https://github.com/ThomasdenH), Wilco Bakker (https://github.com/WilcoBakker), wwwy3y3 (https://github.com/wwwy3y3), Zane Hannan AU (https://github.com/ZaneHannanAU), Samuel Ainsworth (https://github.com/samuela), Kyle Uehlein (https://github.com/kuehlein), Jordi Oliveras Rovira (https://github.com/j-oliveras), Thanik Bhongbhibhat (https://github.com/bhongy), Marcin Kopacz (https://github.com/chyzwar), Trivikram Kamat (https://github.com/trivikr), Minh Son Nguyen (https://github.com/nguymin4), Junxiao Shi (https://github.com/yoursunny), and Ilia Baryshnikov (https://github.com/qwelias).
diff --git a/assets/node_modules/@types/node/assert.d.ts b/assets/node_modules/@types/node/assert.d.ts
deleted file mode 100644
index df6df63..0000000
--- a/assets/node_modules/@types/node/assert.d.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-declare module "assert" {
- function internal(value: any, message?: string | Error): void;
- namespace internal {
- class AssertionError implements Error {
- name: string;
- message: string;
- actual: any;
- expected: any;
- operator: string;
- generatedMessage: boolean;
- code: 'ERR_ASSERTION';
-
- constructor(options?: {
- message?: string; actual?: any; expected?: any;
- operator?: string; stackStartFn?: Function
- });
- }
-
- type AssertPredicate = RegExp | (new() => object) | ((thrown: any) => boolean) | object | Error;
-
- function fail(message?: string | Error): never;
- /** @deprecated since v10.0.0 - use fail([message]) or other assert functions instead. */
- function fail(actual: any, expected: any, message?: string | Error, operator?: string, stackStartFn?: Function): never;
- function ok(value: any, message?: string | Error): void;
- function equal(actual: any, expected: any, message?: string | Error): void;
- function notEqual(actual: any, expected: any, message?: string | Error): void;
- function deepEqual(actual: any, expected: any, message?: string | Error): void;
- function notDeepEqual(actual: any, expected: any, message?: string | Error): void;
- function strictEqual(actual: any, expected: any, message?: string | Error): void;
- function notStrictEqual(actual: any, expected: any, message?: string | Error): void;
- function deepStrictEqual(actual: any, expected: any, message?: string | Error): void;
- function notDeepStrictEqual(actual: any, expected: any, message?: string | Error): void;
-
- function throws(block: () => any, message?: string | Error): void;
- function throws(block: () => any, error: AssertPredicate, message?: string | Error): void;
- function doesNotThrow(block: () => any, message?: string | Error): void;
- function doesNotThrow(block: () => any, error: RegExp | Function, message?: string | Error): void;
-
- function ifError(value: any): void;
-
- function rejects(block: (() => Promise<any>) | Promise<any>, message?: string | Error): Promise<void>;
- function rejects(block: (() => Promise<any>) | Promise<any>, error: AssertPredicate, message?: string | Error): Promise<void>;
- function doesNotReject(block: (() => Promise<any>) | Promise<any>, message?: string | Error): Promise<void>;
- function doesNotReject(block: (() => Promise<any>) | Promise<any>, error: RegExp | Function, message?: string | Error): Promise<void>;
-
- function match(value: string, regExp: RegExp, message?: string | Error): void;
- function doesNotMatch(value: string, regExp: RegExp, message?: string | Error): void;
-
- const strict: typeof internal;
- }
-
- export = internal;
-}
diff --git a/assets/node_modules/@types/node/async_hooks.d.ts b/assets/node_modules/@types/node/async_hooks.d.ts
deleted file mode 100644
index 6487c38..0000000
--- a/assets/node_modules/@types/node/async_hooks.d.ts
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * Async Hooks module: https://nodejs.org/api/async_hooks.html
- */
-declare module "async_hooks" {
- /**
- * Returns the asyncId of the current execution context.
- */
- function executionAsyncId(): number;
-
- /**
- * Returns the ID of the resource responsible for calling the callback that is currently being executed.
- */
- function triggerAsyncId(): number;
-
- interface HookCallbacks {
- /**
- * Called when a class is constructed that has the possibility to emit an asynchronous event.
- * @param asyncId a unique ID for the async resource
- * @param type the type of the async resource
- * @param triggerAsyncId the unique ID of the async resource in whose execution context this async resource was created
- * @param resource reference to the resource representing the async operation, needs to be released during destroy
- */
- init?(asyncId: number, type: string, triggerAsyncId: number, resource: object): void;
-
- /**
- * When an asynchronous operation is initiated or completes a callback is called to notify the user.
- * The before callback is called just before said callback is executed.
- * @param asyncId the unique identifier assigned to the resource about to execute the callback.
- */
- before?(asyncId: number): void;
-
- /**
- * Called immediately after the callback specified in before is completed.
- * @param asyncId the unique identifier assigned to the resource which has executed the callback.
- */
- after?(asyncId: number): void;
-
- /**
- * Called when a promise has resolve() called. This may not be in the same execution id
- * as the promise itself.
- * @param asyncId the unique id for the promise that was resolve()d.
- */
- promiseResolve?(asyncId: number): void;
-
- /**
- * Called after the resource corresponding to asyncId is destroyed
- * @param asyncId a unique ID for the async resource
- */
- destroy?(asyncId: number): void;
- }
-
- interface AsyncHook {
- /**
- * Enable the callbacks for a given AsyncHook instance. If no callbacks are provided enabling is a noop.
- */
- enable(): this;
-
- /**
- * Disable the callbacks for a given AsyncHook instance from the global pool of AsyncHook callbacks to be executed. Once a hook has been disabled it will not be called again until enabled.
- */
- disable(): this;
- }
-
- /**
- * Registers functions to be called for different lifetime events of each async operation.
- * @param options the callbacks to register
- * @return an AsyncHooks instance used for disabling and enabling hooks
- */
- function createHook(options: HookCallbacks): AsyncHook;
-
- interface AsyncResourceOptions {
- /**
- * The ID of the execution context that created this async event.
- * Default: `executionAsyncId()`
- */
- triggerAsyncId?: number;
-
- /**
- * Disables automatic `emitDestroy` when the object is garbage collected.
- * This usually does not need to be set (even if `emitDestroy` is called
- * manually), unless the resource's `asyncId` is retrieved and the
- * sensitive API's `emitDestroy` is called with it.
- * Default: `false`
- */
- requireManualDestroy?: boolean;
- }
-
- /**
- * The class AsyncResource was designed to be extended by the embedder's async resources.
- * Using this users can easily trigger the lifetime events of their own resources.
- */
- class AsyncResource {
- /**
- * AsyncResource() is meant to be extended. Instantiating a
- * new AsyncResource() also triggers init. If triggerAsyncId is omitted then
- * async_hook.executionAsyncId() is used.
- * @param type The type of async event.
- * @param triggerAsyncId The ID of the execution context that created
- * this async event (default: `executionAsyncId()`), or an
- * AsyncResourceOptions object (since 9.3)
- */
- constructor(type: string, triggerAsyncId?: number|AsyncResourceOptions);
-
- /**
- * Call the provided function with the provided arguments in the
- * execution context of the async resource. This will establish the
- * context, trigger the AsyncHooks before callbacks, call the function,
- * trigger the AsyncHooks after callbacks, and then restore the original
- * execution context.
- * @param fn The function to call in the execution context of this
- * async resource.
- * @param thisArg The receiver to be used for the function call.
- * @param args Optional arguments to pass to the function.
- */
- runInAsyncScope<This, Result>(fn: (this: This, ...args: any[]) => Result, thisArg?: This, ...args: any[]): Result;
-
- /**
- * Call AsyncHooks destroy callbacks.
- */
- emitDestroy(): void;
-
- /**
- * @return the unique ID assigned to this AsyncResource instance.
- */
- asyncId(): number;
-
- /**
- * @return the trigger ID for this AsyncResource instance.
- */
- triggerAsyncId(): number;
- }
-}
diff --git a/assets/node_modules/@types/node/base.d.ts b/assets/node_modules/@types/node/base.d.ts
deleted file mode 100644
index 70983d9..0000000
--- a/assets/node_modules/@types/node/base.d.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-// base definnitions for all NodeJS modules that are not specific to any version of TypeScript
-/// <reference path="globals.d.ts" />
-/// <reference path="assert.d.ts" />
-/// <reference path="async_hooks.d.ts" />
-/// <reference path="buffer.d.ts" />
-/// <reference path="child_process.d.ts" />
-/// <reference path="cluster.d.ts" />
-/// <reference path="console.d.ts" />
-/// <reference path="constants.d.ts" />
-/// <reference path="crypto.d.ts" />
-/// <reference path="dgram.d.ts" />
-/// <reference path="dns.d.ts" />
-/// <reference path="domain.d.ts" />
-/// <reference path="events.d.ts" />
-/// <reference path="fs.d.ts" />
-/// <reference path="http.d.ts" />
-/// <reference path="http2.d.ts" />
-/// <reference path="https.d.ts" />
-/// <reference path="inspector.d.ts" />
-/// <reference path="module.d.ts" />
-/// <reference path="net.d.ts" />
-/// <reference path="os.d.ts" />
-/// <reference path="path.d.ts" />
-/// <reference path="perf_hooks.d.ts" />
-/// <reference path="process.d.ts" />
-/// <reference path="punycode.d.ts" />
-/// <reference path="querystring.d.ts" />
-/// <reference path="readline.d.ts" />
-/// <reference path="repl.d.ts" />
-/// <reference path="stream.d.ts" />
-/// <reference path="string_decoder.d.ts" />
-/// <reference path="timers.d.ts" />
-/// <reference path="tls.d.ts" />
-/// <reference path="trace_events.d.ts" />
-/// <reference path="tty.d.ts" />
-/// <reference path="url.d.ts" />
-/// <reference path="util.d.ts" />
-/// <reference path="v8.d.ts" />
-/// <reference path="vm.d.ts" />
-/// <reference path="worker_threads.d.ts" />
-/// <reference path="zlib.d.ts" />
diff --git a/assets/node_modules/@types/node/buffer.d.ts b/assets/node_modules/@types/node/buffer.d.ts
deleted file mode 100644
index 7eb1061..0000000
--- a/assets/node_modules/@types/node/buffer.d.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-declare module "buffer" {
- export const INSPECT_MAX_BYTES: number;
- export const kMaxLength: number;
- export const kStringMaxLength: number;
- export const constants: {
- MAX_LENGTH: number;
- MAX_STRING_LENGTH: number;
- };
- const BuffType: typeof Buffer;
-
- export type TranscodeEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "latin1" | "binary";
-
- export function transcode(source: Uint8Array, fromEnc: TranscodeEncoding, toEnc: TranscodeEncoding): Buffer;
-
- export const SlowBuffer: {
- /** @deprecated since v6.0.0, use Buffer.allocUnsafeSlow() */
- new(size: number): Buffer;
- prototype: Buffer;
- };
-
- export { BuffType as Buffer };
-}
diff --git a/assets/node_modules/@types/node/child_process.d.ts b/assets/node_modules/@types/node/child_process.d.ts
deleted file mode 100644
index ed2e13a..0000000
--- a/assets/node_modules/@types/node/child_process.d.ts
+++ /dev/null
@@ -1,495 +0,0 @@
-declare module "child_process" {
- import * as events from "events";
- import * as net from "net";
- import { Writable, Readable, Stream, Pipe } from "stream";
-
- type Serializable = string | object | number | boolean;
- type SendHandle = net.Socket | net.Server;
-
- interface ChildProcess extends events.EventEmitter {
- stdin: Writable | null;
- stdout: Readable | null;
- stderr: Readable | null;
- readonly channel?: Pipe | null;
- readonly stdio: [
- Writable | null, // stdin
- Readable | null, // stdout
- Readable | null, // stderr
- Readable | Writable | null | undefined, // extra
- Readable | Writable | null | undefined // extra
- ];
- readonly killed: boolean;
- readonly pid: number;
- readonly connected: boolean;
- kill(signal?: NodeJS.Signals | number): void;
- send(message: Serializable, callback?: (error: Error | null) => void): boolean;
- send(message: Serializable, sendHandle?: SendHandle, callback?: (error: Error | null) => void): boolean;
- send(message: Serializable, sendHandle?: SendHandle, options?: MessageOptions, callback?: (error: Error | null) => void): boolean;
- disconnect(): void;
- unref(): void;
- ref(): void;
-
- /**
- * events.EventEmitter
- * 1. close
- * 2. disconnect
- * 3. error
- * 4. exit
- * 5. message
- */
-
- addListener(event: string, listener: (...args: any[]) => void): this;
- addListener(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
- addListener(event: "disconnect", listener: () => void): this;
- addListener(event: "error", listener: (err: Error) => void): this;
- addListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
- addListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this;
-
- emit(event: string | symbol, ...args: any[]): boolean;
- emit(event: "close", code: number, signal: NodeJS.Signals): boolean;
- emit(event: "disconnect"): boolean;
- emit(event: "error", err: Error): boolean;
- emit(event: "exit", code: number | null, signal: NodeJS.Signals | null): boolean;
- emit(event: "message", message: Serializable, sendHandle: SendHandle): boolean;
-
- on(event: string, listener: (...args: any[]) => void): this;
- on(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
- on(event: "disconnect", listener: () => void): this;
- on(event: "error", listener: (err: Error) => void): this;
- on(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
- on(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this;
-
- once(event: string, listener: (...args: any[]) => void): this;
- once(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
- once(event: "disconnect", listener: () => void): this;
- once(event: "error", listener: (err: Error) => void): this;
- once(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
- once(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this;
-
- prependListener(event: string, listener: (...args: any[]) => void): this;
- prependListener(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
- prependListener(event: "disconnect", listener: () => void): this;
- prependListener(event: "error", listener: (err: Error) => void): this;
- prependListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
- prependListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this;
-
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
- prependOnceListener(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
- prependOnceListener(event: "disconnect", listener: () => void): this;
- prependOnceListener(event: "error", listener: (err: Error) => void): this;
- prependOnceListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
- prependOnceListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this;
- }
-
- // return this object when stdio option is undefined or not specified
- interface ChildProcessWithoutNullStreams extends ChildProcess {
- stdin: Writable;
- stdout: Readable;
- stderr: Readable;
- readonly stdio: [
- Writable, // stdin
- Readable, // stdout
- Readable, // stderr
- Readable | Writable | null | undefined, // extra, no modification
- Readable | Writable | null | undefined // extra, no modification
- ];
- }
-
- // return this object when stdio option is a tuple of 3
- interface ChildProcessByStdio<
- I extends null | Writable,
- O extends null | Readable,
- E extends null | Readable,
- > extends ChildProcess {
- stdin: I;
- stdout: O;
- stderr: E;
- readonly stdio: [
- I,
- O,
- E,
- Readable | Writable | null | undefined, // extra, no modification
- Readable | Writable | null | undefined // extra, no modification
- ];
- }
-
- interface MessageOptions {
- keepOpen?: boolean;
- }
-
- type StdioOptions = "pipe" | "ignore" | "inherit" | Array<("pipe" | "ipc" | "ignore" | "inherit" | Stream | number | null | undefined)>;
-
- type SerializationType = 'json' | 'advanced';
-
- interface MessagingOptions {
- /**
- * Specify the kind of serialization used for sending messages between processes.
- * @default 'json'
- */
- serialization?: SerializationType;
- }
-
- interface ProcessEnvOptions {
- uid?: number;
- gid?: number;
- cwd?: string;
- env?: NodeJS.ProcessEnv;
- }
-
- interface CommonOptions extends ProcessEnvOptions {
- /**
- * @default true
- */
- windowsHide?: boolean;
- /**
- * @default 0
- */
- timeout?: number;
- }
-
- interface CommonSpawnOptions extends CommonOptions, MessagingOptions {
- argv0?: string;
- stdio?: StdioOptions;
- shell?: boolean | string;
- windowsVerbatimArguments?: boolean;
- }
-
- interface SpawnOptions extends CommonSpawnOptions {
- detached?: boolean;
- }
-
- interface SpawnOptionsWithoutStdio extends SpawnOptions {
- stdio?: 'pipe' | Array<null | undefined | 'pipe'>;
- }
-
- type StdioNull = 'inherit' | 'ignore' | Stream;
- type StdioPipe = undefined | null | 'pipe';
-
- interface SpawnOptionsWithStdioTuple<
- Stdin extends StdioNull | StdioPipe,
- Stdout extends StdioNull | StdioPipe,
- Stderr extends StdioNull | StdioPipe,
- > extends SpawnOptions {
- stdio: [Stdin, Stdout, Stderr];
- }
-
- // overloads of spawn without 'args'
- function spawn(command: string, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
-
- function spawn(
- command: string,
- options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioPipe>,
- ): ChildProcessByStdio<Writable, Readable, Readable>;
- function spawn(
- command: string,
- options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioNull>,
- ): ChildProcessByStdio<Writable, Readable, null>;
- function spawn(
- command: string,
- options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioPipe>,
- ): ChildProcessByStdio<Writable, null, Readable>;
- function spawn(
- command: string,
- options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioPipe>,
- ): ChildProcessByStdio<null, Readable, Readable>;
- function spawn(
- command: string,
- options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioNull>,
- ): ChildProcessByStdio<Writable, null, null>;
- function spawn(
- command: string,
- options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioNull>,
- ): ChildProcessByStdio<null, Readable, null>;
- function spawn(
- command: string,
- options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioPipe>,
- ): ChildProcessByStdio<null, null, Readable>;
- function spawn(
- command: string,
- options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioNull>,
- ): ChildProcessByStdio<null, null, null>;
-
- function spawn(command: string, options: SpawnOptions): ChildProcess;
-
- // overloads of spawn with 'args'
- function spawn(command: string, args?: ReadonlyArray<string>, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
-
- function spawn(
- command: string,
- args: ReadonlyArray<string>,
- options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioPipe>,
- ): ChildProcessByStdio<Writable, Readable, Readable>;
- function spawn(
- command: string,
- args: ReadonlyArray<string>,
- options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioNull>,
- ): ChildProcessByStdio<Writable, Readable, null>;
- function spawn(
- command: string,
- args: ReadonlyArray<string>,
- options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioPipe>,
- ): ChildProcessByStdio<Writable, null, Readable>;
- function spawn(
- command: string,
- args: ReadonlyArray<string>,
- options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioPipe>,
- ): ChildProcessByStdio<null, Readable, Readable>;
- function spawn(
- command: string,
- args: ReadonlyArray<string>,
- options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioNull>,
- ): ChildProcessByStdio<Writable, null, null>;
- function spawn(
- command: string,
- args: ReadonlyArray<string>,
- options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioNull>,
- ): ChildProcessByStdio<null, Readable, null>;
- function spawn(
- command: string,
- args: ReadonlyArray<string>,
- options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioPipe>,
- ): ChildProcessByStdio<null, null, Readable>;
- function spawn(
- command: string,
- args: ReadonlyArray<string>,
- options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioNull>,
- ): ChildProcessByStdio<null, null, null>;
-
- function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptions): ChildProcess;
-
- interface ExecOptions extends CommonOptions {
- shell?: string;
- maxBuffer?: number;
- killSignal?: NodeJS.Signals | number;
- }
-
- interface ExecOptionsWithStringEncoding extends ExecOptions {
- encoding: BufferEncoding;
- }
-
- interface ExecOptionsWithBufferEncoding extends ExecOptions {
- encoding: string | null; // specify `null`.
- }
-
- interface ExecException extends Error {
- cmd?: string;
- killed?: boolean;
- code?: number;
- signal?: NodeJS.Signals;
- }
-
- // no `options` definitely means stdout/stderr are `string`.
- function exec(command: string, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
-
- // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
- function exec(command: string, options: { encoding: "buffer" | null } & ExecOptions, callback?: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;
-
- // `options` with well known `encoding` means stdout/stderr are definitely `string`.
- function exec(command: string, options: { encoding: BufferEncoding } & ExecOptions, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
-
- // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
- // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
- function exec(command: string, options: { encoding: string } & ExecOptions, callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess;
-
- // `options` without an `encoding` means stdout/stderr are definitely `string`.
- function exec(command: string, options: ExecOptions, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
-
- // fallback if nothing else matches. Worst case is always `string | Buffer`.
- function exec(
- command: string,
- options: ({ encoding?: string | null } & ExecOptions) | undefined | null,
- callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void,
- ): ChildProcess;
-
- interface PromiseWithChild<T> extends Promise<T> {
- child: ChildProcess;
- }
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace exec {
- function __promisify__(command: string): PromiseWithChild<{ stdout: string, stderr: string }>;
- function __promisify__(command: string, options: { encoding: "buffer" | null } & ExecOptions): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>;
- function __promisify__(command: string, options: { encoding: BufferEncoding } & ExecOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
- function __promisify__(command: string, options: ExecOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
- function __promisify__(command: string, options?: ({ encoding?: string | null } & ExecOptions) | null): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
- }
-
- interface ExecFileOptions extends CommonOptions {
- maxBuffer?: number;
- killSignal?: NodeJS.Signals | number;
- windowsVerbatimArguments?: boolean;
- shell?: boolean | string;
- }
- interface ExecFileOptionsWithStringEncoding extends ExecFileOptions {
- encoding: BufferEncoding;
- }
- interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions {
- encoding: 'buffer' | null;
- }
- interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions {
- encoding: string;
- }
-
- function execFile(file: string): ChildProcess;
- function execFile(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): ChildProcess;
- function execFile(file: string, args?: ReadonlyArray<string> | null): ChildProcess;
- function execFile(file: string, args: ReadonlyArray<string> | undefined | null, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): ChildProcess;
-
- // no `options` definitely means stdout/stderr are `string`.
- function execFile(file: string, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
- function execFile(file: string, args: ReadonlyArray<string> | undefined | null, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
-
- // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
- function execFile(file: string, options: ExecFileOptionsWithBufferEncoding, callback: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;
- function execFile(
- file: string,
- args: ReadonlyArray<string> | undefined | null,
- options: ExecFileOptionsWithBufferEncoding,
- callback: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void,
- ): ChildProcess;
-
- // `options` with well known `encoding` means stdout/stderr are definitely `string`.
- function execFile(file: string, options: ExecFileOptionsWithStringEncoding, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
- function execFile(
- file: string,
- args: ReadonlyArray<string> | undefined | null,
- options: ExecFileOptionsWithStringEncoding,
- callback: (error: ExecException | null, stdout: string, stderr: string) => void,
- ): ChildProcess;
-
- // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
- // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
- function execFile(
- file: string,
- options: ExecFileOptionsWithOtherEncoding,
- callback: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void,
- ): ChildProcess;
- function execFile(
- file: string,
- args: ReadonlyArray<string> | undefined | null,
- options: ExecFileOptionsWithOtherEncoding,
- callback: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void,
- ): ChildProcess;
-
- // `options` without an `encoding` means stdout/stderr are definitely `string`.
- function execFile(file: string, options: ExecFileOptions, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
- function execFile(
- file: string,
- args: ReadonlyArray<string> | undefined | null,
- options: ExecFileOptions,
- callback: (error: ExecException | null, stdout: string, stderr: string) => void
- ): ChildProcess;
-
- // fallback if nothing else matches. Worst case is always `string | Buffer`.
- function execFile(
- file: string,
- options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null,
- callback: ((error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null,
- ): ChildProcess;
- function execFile(
- file: string,
- args: ReadonlyArray<string> | undefined | null,
- options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null,
- callback: ((error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null,
- ): ChildProcess;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace execFile {
- function __promisify__(file: string): PromiseWithChild<{ stdout: string, stderr: string }>;
- function __promisify__(file: string, args: string[] | undefined | null): PromiseWithChild<{ stdout: string, stderr: string }>;
- function __promisify__(file: string, options: ExecFileOptionsWithBufferEncoding): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>;
- function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithBufferEncoding): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>;
- function __promisify__(file: string, options: ExecFileOptionsWithStringEncoding): PromiseWithChild<{ stdout: string, stderr: string }>;
- function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithStringEncoding): PromiseWithChild<{ stdout: string, stderr: string }>;
- function __promisify__(file: string, options: ExecFileOptionsWithOtherEncoding): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
- function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithOtherEncoding): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
- function __promisify__(file: string, options: ExecFileOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
- function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
- function __promisify__(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
- function __promisify__(
- file: string,
- args: string[] | undefined | null,
- options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null,
- ): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
- }
-
- interface ForkOptions extends ProcessEnvOptions, MessagingOptions {
- execPath?: string;
- execArgv?: string[];
- silent?: boolean;
- stdio?: StdioOptions;
- detached?: boolean;
- windowsVerbatimArguments?: boolean;
- }
- function fork(modulePath: string, args?: ReadonlyArray<string>, options?: ForkOptions): ChildProcess;
-
- interface SpawnSyncOptions extends CommonSpawnOptions {
- input?: string | NodeJS.ArrayBufferView;
- killSignal?: NodeJS.Signals | number;
- maxBuffer?: number;
- encoding?: string;
- }
- interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions {
- encoding: BufferEncoding;
- }
- interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions {
- encoding: string; // specify `null`.
- }
- interface SpawnSyncReturns<T> {
- pid: number;
- output: string[];
- stdout: T;
- stderr: T;
- status: number | null;
- signal: NodeJS.Signals | null;
- error?: Error;
- }
- function spawnSync(command: string): SpawnSyncReturns<Buffer>;
- function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>;
- function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>;
- function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>;
- function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>;
- function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>;
- function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>;
-
- interface ExecSyncOptions extends CommonOptions {
- input?: string | Uint8Array;
- stdio?: StdioOptions;
- shell?: string;
- killSignal?: NodeJS.Signals | number;
- maxBuffer?: number;
- encoding?: string;
- }
- interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions {
- encoding: BufferEncoding;
- }
- interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions {
- encoding: string; // specify `null`.
- }
- function execSync(command: string): Buffer;
- function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string;
- function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer;
- function execSync(command: string, options?: ExecSyncOptions): Buffer;
-
- interface ExecFileSyncOptions extends CommonOptions {
- input?: string | NodeJS.ArrayBufferView;
- stdio?: StdioOptions;
- killSignal?: NodeJS.Signals | number;
- maxBuffer?: number;
- encoding?: string;
- shell?: boolean | string;
- }
- interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions {
- encoding: BufferEncoding;
- }
- interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions {
- encoding: string; // specify `null`.
- }
- function execFileSync(command: string): Buffer;
- function execFileSync(command: string, options?: ExecFileSyncOptionsWithStringEncoding): string;
- function execFileSync(command: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;
- function execFileSync(command: string, options?: ExecFileSyncOptions): Buffer;
- function execFileSync(command: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptionsWithStringEncoding): string;
- function execFileSync(command: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;
- function execFileSync(command: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptions): Buffer;
-}
diff --git a/assets/node_modules/@types/node/cluster.d.ts b/assets/node_modules/@types/node/cluster.d.ts
deleted file mode 100644
index 2992af8..0000000
--- a/assets/node_modules/@types/node/cluster.d.ts
+++ /dev/null
@@ -1,266 +0,0 @@
-declare module "cluster" {
- import * as child from "child_process";
- import * as events from "events";
- import * as net from "net";
-
- // interfaces
- interface ClusterSettings {
- execArgv?: string[]; // default: process.execArgv
- exec?: string;
- args?: string[];
- silent?: boolean;
- stdio?: any[];
- uid?: number;
- gid?: number;
- inspectPort?: number | (() => number);
- }
-
- interface Address {
- address: string;
- port: number;
- addressType: number | "udp4" | "udp6"; // 4, 6, -1, "udp4", "udp6"
- }
-
- class Worker extends events.EventEmitter {
- id: number;
- process: child.ChildProcess;
- send(message: child.Serializable, sendHandle?: child.SendHandle, callback?: (error: Error | null) => void): boolean;
- kill(signal?: string): void;
- destroy(signal?: string): void;
- disconnect(): void;
- isConnected(): boolean;
- isDead(): boolean;
- exitedAfterDisconnect: boolean;
-
- /**
- * events.EventEmitter
- * 1. disconnect
- * 2. error
- * 3. exit
- * 4. listening
- * 5. message
- * 6. online
- */
- addListener(event: string, listener: (...args: any[]) => void): this;
- addListener(event: "disconnect", listener: () => void): this;
- addListener(event: "error", listener: (error: Error) => void): this;
- addListener(event: "exit", listener: (code: number, signal: string) => void): this;
- addListener(event: "listening", listener: (address: Address) => void): this;
- addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
- addListener(event: "online", listener: () => void): this;
-
- emit(event: string | symbol, ...args: any[]): boolean;
- emit(event: "disconnect"): boolean;
- emit(event: "error", error: Error): boolean;
- emit(event: "exit", code: number, signal: string): boolean;
- emit(event: "listening", address: Address): boolean;
- emit(event: "message", message: any, handle: net.Socket | net.Server): boolean;
- emit(event: "online"): boolean;
-
- on(event: string, listener: (...args: any[]) => void): this;
- on(event: "disconnect", listener: () => void): this;
- on(event: "error", listener: (error: Error) => void): this;
- on(event: "exit", listener: (code: number, signal: string) => void): this;
- on(event: "listening", listener: (address: Address) => void): this;
- on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
- on(event: "online", listener: () => void): this;
-
- once(event: string, listener: (...args: any[]) => void): this;
- once(event: "disconnect", listener: () => void): this;
- once(event: "error", listener: (error: Error) => void): this;
- once(event: "exit", listener: (code: number, signal: string) => void): this;
- once(event: "listening", listener: (address: Address) => void): this;
- once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
- once(event: "online", listener: () => void): this;
-
- prependListener(event: string, listener: (...args: any[]) => void): this;
- prependListener(event: "disconnect", listener: () => void): this;
- prependListener(event: "error", listener: (error: Error) => void): this;
- prependListener(event: "exit", listener: (code: number, signal: string) => void): this;
- prependListener(event: "listening", listener: (address: Address) => void): this;
- prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
- prependListener(event: "online", listener: () => void): this;
-
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
- prependOnceListener(event: "disconnect", listener: () => void): this;
- prependOnceListener(event: "error", listener: (error: Error) => void): this;
- prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this;
- prependOnceListener(event: "listening", listener: (address: Address) => void): this;
- prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
- prependOnceListener(event: "online", listener: () => void): this;
- }
-
- interface Cluster extends events.EventEmitter {
- Worker: Worker;
- disconnect(callback?: () => void): void;
- fork(env?: any): Worker;
- isMaster: boolean;
- isWorker: boolean;
- schedulingPolicy: number;
- settings: ClusterSettings;
- setupMaster(settings?: ClusterSettings): void;
- worker?: Worker;
- workers?: {
- [index: string]: Worker | undefined
- };
-
- readonly SCHED_NONE: number;
- readonly SCHED_RR: number;
-
- /**
- * events.EventEmitter
- * 1. disconnect
- * 2. exit
- * 3. fork
- * 4. listening
- * 5. message
- * 6. online
- * 7. setup
- */
- addListener(event: string, listener: (...args: any[]) => void): this;
- addListener(event: "disconnect", listener: (worker: Worker) => void): this;
- addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
- addListener(event: "fork", listener: (worker: Worker) => void): this;
- addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
- addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
- addListener(event: "online", listener: (worker: Worker) => void): this;
- addListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
-
- emit(event: string | symbol, ...args: any[]): boolean;
- emit(event: "disconnect", worker: Worker): boolean;
- emit(event: "exit", worker: Worker, code: number, signal: string): boolean;
- emit(event: "fork", worker: Worker): boolean;
- emit(event: "listening", worker: Worker, address: Address): boolean;
- emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean;
- emit(event: "online", worker: Worker): boolean;
- emit(event: "setup", settings: ClusterSettings): boolean;
-
- on(event: string, listener: (...args: any[]) => void): this;
- on(event: "disconnect", listener: (worker: Worker) => void): this;
- on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
- on(event: "fork", listener: (worker: Worker) => void): this;
- on(event: "listening", listener: (worker: Worker, address: Address) => void): this;
- on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
- on(event: "online", listener: (worker: Worker) => void): this;
- on(event: "setup", listener: (settings: ClusterSettings) => void): this;
-
- once(event: string, listener: (...args: any[]) => void): this;
- once(event: "disconnect", listener: (worker: Worker) => void): this;
- once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
- once(event: "fork", listener: (worker: Worker) => void): this;
- once(event: "listening", listener: (worker: Worker, address: Address) => void): this;
- once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
- once(event: "online", listener: (worker: Worker) => void): this;
- once(event: "setup", listener: (settings: ClusterSettings) => void): this;
-
- prependListener(event: string, listener: (...args: any[]) => void): this;
- prependListener(event: "disconnect", listener: (worker: Worker) => void): this;
- prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
- prependListener(event: "fork", listener: (worker: Worker) => void): this;
- prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
- prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
- prependListener(event: "online", listener: (worker: Worker) => void): this;
- prependListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
-
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
- prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this;
- prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
- prependOnceListener(event: "fork", listener: (worker: Worker) => void): this;
- prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
- // the handle is a net.Socket or net.Server object, or undefined.
- prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this;
- prependOnceListener(event: "online", listener: (worker: Worker) => void): this;
- prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
- }
-
- const SCHED_NONE: number;
- const SCHED_RR: number;
-
- function disconnect(callback?: () => void): void;
- function fork(env?: any): Worker;
- const isMaster: boolean;
- const isWorker: boolean;
- let schedulingPolicy: number;
- const settings: ClusterSettings;
- function setupMaster(settings?: ClusterSettings): void;
- const worker: Worker;
- const workers: {
- [index: string]: Worker | undefined
- };
-
- /**
- * events.EventEmitter
- * 1. disconnect
- * 2. exit
- * 3. fork
- * 4. listening
- * 5. message
- * 6. online
- * 7. setup
- */
- function addListener(event: string, listener: (...args: any[]) => void): Cluster;
- function addListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;
- function addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
- function addListener(event: "fork", listener: (worker: Worker) => void): Cluster;
- function addListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
- // the handle is a net.Socket or net.Server object, or undefined.
- function addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;
- function addListener(event: "online", listener: (worker: Worker) => void): Cluster;
- function addListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
-
- function emit(event: string | symbol, ...args: any[]): boolean;
- function emit(event: "disconnect", worker: Worker): boolean;
- function emit(event: "exit", worker: Worker, code: number, signal: string): boolean;
- function emit(event: "fork", worker: Worker): boolean;
- function emit(event: "listening", worker: Worker, address: Address): boolean;
- function emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean;
- function emit(event: "online", worker: Worker): boolean;
- function emit(event: "setup", settings: ClusterSettings): boolean;
-
- function on(event: string, listener: (...args: any[]) => void): Cluster;
- function on(event: "disconnect", listener: (worker: Worker) => void): Cluster;
- function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
- function on(event: "fork", listener: (worker: Worker) => void): Cluster;
- function on(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
- function on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.
- function on(event: "online", listener: (worker: Worker) => void): Cluster;
- function on(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
-
- function once(event: string, listener: (...args: any[]) => void): Cluster;
- function once(event: "disconnect", listener: (worker: Worker) => void): Cluster;
- function once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
- function once(event: "fork", listener: (worker: Worker) => void): Cluster;
- function once(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
- function once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.
- function once(event: "online", listener: (worker: Worker) => void): Cluster;
- function once(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
-
- function removeListener(event: string, listener: (...args: any[]) => void): Cluster;
- function removeAllListeners(event?: string): Cluster;
- function setMaxListeners(n: number): Cluster;
- function getMaxListeners(): number;
- function listeners(event: string): Function[];
- function listenerCount(type: string): number;
-
- function prependListener(event: string, listener: (...args: any[]) => void): Cluster;
- function prependListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;
- function prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
- function prependListener(event: "fork", listener: (worker: Worker) => void): Cluster;
- function prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
- // the handle is a net.Socket or net.Server object, or undefined.
- function prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;
- function prependListener(event: "online", listener: (worker: Worker) => void): Cluster;
- function prependListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
-
- function prependOnceListener(event: string, listener: (...args: any[]) => void): Cluster;
- function prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;
- function prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
- function prependOnceListener(event: "fork", listener: (worker: Worker) => void): Cluster;
- function prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
- // the handle is a net.Socket or net.Server object, or undefined.
- function prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;
- function prependOnceListener(event: "online", listener: (worker: Worker) => void): Cluster;
- function prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
-
- function eventNames(): string[];
-}
diff --git a/assets/node_modules/@types/node/console.d.ts b/assets/node_modules/@types/node/console.d.ts
deleted file mode 100644
index d30d13f..0000000
--- a/assets/node_modules/@types/node/console.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-declare module "console" {
- export = console;
-}
diff --git a/assets/node_modules/@types/node/constants.d.ts b/assets/node_modules/@types/node/constants.d.ts
deleted file mode 100644
index d124ae6..0000000
--- a/assets/node_modules/@types/node/constants.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-/** @deprecated since v6.3.0 - use constants property exposed by the relevant module instead. */
-declare module "constants" {
- import { constants as osConstants, SignalConstants } from 'os';
- import { constants as cryptoConstants } from 'crypto';
- import { constants as fsConstants } from 'fs';
- const exp: typeof osConstants.errno & typeof osConstants.priority & SignalConstants & typeof cryptoConstants & typeof fsConstants;
- export = exp;
-}
diff --git a/assets/node_modules/@types/node/crypto.d.ts b/assets/node_modules/@types/node/crypto.d.ts
deleted file mode 100644
index 87555f9..0000000
--- a/assets/node_modules/@types/node/crypto.d.ts
+++ /dev/null
@@ -1,615 +0,0 @@
-declare module "crypto" {
- import * as stream from "stream";
-
- interface Certificate {
- exportChallenge(spkac: BinaryLike): Buffer;
- exportPublicKey(spkac: BinaryLike): Buffer;
- verifySpkac(spkac: NodeJS.ArrayBufferView): boolean;
- }
- const Certificate: {
- new(): Certificate;
- (): Certificate;
- };
-
- namespace constants { // https://nodejs.org/dist/latest-v10.x/docs/api/crypto.html#crypto_crypto_constants
- const OPENSSL_VERSION_NUMBER: number;
-
- /** Applies multiple bug workarounds within OpenSSL. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html for detail. */
- const SSL_OP_ALL: number;
- /** Allows legacy insecure renegotiation between OpenSSL and unpatched clients or servers. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */
- const SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number;
- /** Attempts to use the server's preferences instead of the client's when selecting a cipher. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */
- const SSL_OP_CIPHER_SERVER_PREFERENCE: number;
- /** Instructs OpenSSL to use Cisco's "speshul" version of DTLS_BAD_VER. */
- const SSL_OP_CISCO_ANYCONNECT: number;
- /** Instructs OpenSSL to turn on cookie exchange. */
- const SSL_OP_COOKIE_EXCHANGE: number;
- /** Instructs OpenSSL to add server-hello extension from an early version of the cryptopro draft. */
- const SSL_OP_CRYPTOPRO_TLSEXT_BUG: number;
- /** Instructs OpenSSL to disable a SSL 3.0/TLS 1.0 vulnerability workaround added in OpenSSL 0.9.6d. */
- const SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number;
- /** Instructs OpenSSL to always use the tmp_rsa key when performing RSA operations. */
- const SSL_OP_EPHEMERAL_RSA: number;
- /** Allows initial connection to servers that do not support RI. */
- const SSL_OP_LEGACY_SERVER_CONNECT: number;
- const SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number;
- const SSL_OP_MICROSOFT_SESS_ID_BUG: number;
- /** Instructs OpenSSL to disable the workaround for a man-in-the-middle protocol-version vulnerability in the SSL 2.0 server implementation. */
- const SSL_OP_MSIE_SSLV2_RSA_PADDING: number;
- const SSL_OP_NETSCAPE_CA_DN_BUG: number;
- const SSL_OP_NETSCAPE_CHALLENGE_BUG: number;
- const SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number;
- const SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number;
- /** Instructs OpenSSL to disable support for SSL/TLS compression. */
- const SSL_OP_NO_COMPRESSION: number;
- const SSL_OP_NO_QUERY_MTU: number;
- /** Instructs OpenSSL to always start a new session when performing renegotiation. */
- const SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number;
- const SSL_OP_NO_SSLv2: number;
- const SSL_OP_NO_SSLv3: number;
- const SSL_OP_NO_TICKET: number;
- const SSL_OP_NO_TLSv1: number;
- const SSL_OP_NO_TLSv1_1: number;
- const SSL_OP_NO_TLSv1_2: number;
- const SSL_OP_PKCS1_CHECK_1: number;
- const SSL_OP_PKCS1_CHECK_2: number;
- /** Instructs OpenSSL to always create a new key when using temporary/ephemeral DH parameters. */
- const SSL_OP_SINGLE_DH_USE: number;
- /** Instructs OpenSSL to always create a new key when using temporary/ephemeral ECDH parameters. */
- const SSL_OP_SINGLE_ECDH_USE: number;
- const SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number;
- const SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number;
- const SSL_OP_TLS_BLOCK_PADDING_BUG: number;
- const SSL_OP_TLS_D5_BUG: number;
- /** Instructs OpenSSL to disable version rollback attack detection. */
- const SSL_OP_TLS_ROLLBACK_BUG: number;
-
- const ENGINE_METHOD_RSA: number;
- const ENGINE_METHOD_DSA: number;
- const ENGINE_METHOD_DH: number;
- const ENGINE_METHOD_RAND: number;
- const ENGINE_METHOD_EC: number;
- const ENGINE_METHOD_CIPHERS: number;
- const ENGINE_METHOD_DIGESTS: number;
- const ENGINE_METHOD_PKEY_METHS: number;
- const ENGINE_METHOD_PKEY_ASN1_METHS: number;
- const ENGINE_METHOD_ALL: number;
- const ENGINE_METHOD_NONE: number;
-
- const DH_CHECK_P_NOT_SAFE_PRIME: number;
- const DH_CHECK_P_NOT_PRIME: number;
- const DH_UNABLE_TO_CHECK_GENERATOR: number;
- const DH_NOT_SUITABLE_GENERATOR: number;
-
- const ALPN_ENABLED: number;
-
- const RSA_PKCS1_PADDING: number;
- const RSA_SSLV23_PADDING: number;
- const RSA_NO_PADDING: number;
- const RSA_PKCS1_OAEP_PADDING: number;
- const RSA_X931_PADDING: number;
- const RSA_PKCS1_PSS_PADDING: number;
- /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the digest size when signing or verifying. */
- const RSA_PSS_SALTLEN_DIGEST: number;
- /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the maximum permissible value when signing data. */
- const RSA_PSS_SALTLEN_MAX_SIGN: number;
- /** Causes the salt length for RSA_PKCS1_PSS_PADDING to be determined automatically when verifying a signature. */
- const RSA_PSS_SALTLEN_AUTO: number;
-
- const POINT_CONVERSION_COMPRESSED: number;
- const POINT_CONVERSION_UNCOMPRESSED: number;
- const POINT_CONVERSION_HYBRID: number;
-
- /** Specifies the built-in default cipher list used by Node.js (colon-separated values). */
- const defaultCoreCipherList: string;
- /** Specifies the active default cipher list used by the current Node.js process (colon-separated values). */
- const defaultCipherList: string;
- }
-
- interface HashOptions extends stream.TransformOptions {
- /**
- * For XOF hash functions such as `shake256`, the
- * outputLength option can be used to specify the desired output length in bytes.
- */
- outputLength?: number;
- }
-
- /** @deprecated since v10.0.0 */
- const fips: boolean;
-
- function createHash(algorithm: string, options?: HashOptions): Hash;
- function createHmac(algorithm: string, key: BinaryLike, options?: stream.TransformOptions): Hmac;
-
- type Utf8AsciiLatin1Encoding = "utf8" | "ascii" | "latin1";
- type HexBase64Latin1Encoding = "latin1" | "hex" | "base64";
- type Utf8AsciiBinaryEncoding = "utf8" | "ascii" | "binary";
- type HexBase64BinaryEncoding = "binary" | "base64" | "hex";
- type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid";
-
- class Hash extends stream.Transform {
- private constructor();
- copy(): Hash;
- update(data: BinaryLike): Hash;
- update(data: string, input_encoding: Utf8AsciiLatin1Encoding): Hash;
- digest(): Buffer;
- digest(encoding: HexBase64Latin1Encoding): string;
- }
- class Hmac extends stream.Transform {
- private constructor();
- update(data: BinaryLike): Hmac;
- update(data: string, input_encoding: Utf8AsciiLatin1Encoding): Hmac;
- digest(): Buffer;
- digest(encoding: HexBase64Latin1Encoding): string;
- }
-
- type KeyObjectType = 'secret' | 'public' | 'private';
-
- interface KeyExportOptions<T extends KeyFormat> {
- type: 'pkcs1' | 'spki' | 'pkcs8' | 'sec1';
- format: T;
- cipher?: string;
- passphrase?: string | Buffer;
- }
-
- class KeyObject {
- private constructor();
- asymmetricKeyType?: KeyType;
- /**
- * For asymmetric keys, this property represents the size of the embedded key in
- * bytes. This property is `undefined` for symmetric keys.
- */
- asymmetricKeySize?: number;
- export(options: KeyExportOptions<'pem'>): string | Buffer;
- export(options?: KeyExportOptions<'der'>): Buffer;
- symmetricSize?: number;
- type: KeyObjectType;
- }
-
- type CipherCCMTypes = 'aes-128-ccm' | 'aes-192-ccm' | 'aes-256-ccm' | 'chacha20-poly1305';
- type CipherGCMTypes = 'aes-128-gcm' | 'aes-192-gcm' | 'aes-256-gcm';
-
- type BinaryLike = string | NodeJS.ArrayBufferView;
-
- type CipherKey = BinaryLike | KeyObject;
-
- interface CipherCCMOptions extends stream.TransformOptions {
- authTagLength: number;
- }
- interface CipherGCMOptions extends stream.TransformOptions {
- authTagLength?: number;
- }
- /** @deprecated since v10.0.0 use createCipheriv() */
- function createCipher(algorithm: CipherCCMTypes, password: BinaryLike, options: CipherCCMOptions): CipherCCM;
- /** @deprecated since v10.0.0 use createCipheriv() */
- function createCipher(algorithm: CipherGCMTypes, password: BinaryLike, options?: CipherGCMOptions): CipherGCM;
- /** @deprecated since v10.0.0 use createCipheriv() */
- function createCipher(algorithm: string, password: BinaryLike, options?: stream.TransformOptions): Cipher;
-
- function createCipheriv(
- algorithm: CipherCCMTypes,
- key: CipherKey,
- iv: BinaryLike | null,
- options: CipherCCMOptions
- ): CipherCCM;
- function createCipheriv(
- algorithm: CipherGCMTypes,
- key: CipherKey,
- iv: BinaryLike | null,
- options?: CipherGCMOptions
- ): CipherGCM;
- function createCipheriv(
- algorithm: string, key: CipherKey, iv: BinaryLike | null, options?: stream.TransformOptions
- ): Cipher;
-
- class Cipher extends stream.Transform {
- private constructor();
- update(data: BinaryLike): Buffer;
- update(data: string, input_encoding: Utf8AsciiBinaryEncoding): Buffer;
- update(data: NodeJS.ArrayBufferView, input_encoding: undefined, output_encoding: HexBase64BinaryEncoding): string;
- update(data: string, input_encoding: Utf8AsciiBinaryEncoding | undefined, output_encoding: HexBase64BinaryEncoding): string;
- final(): Buffer;
- final(output_encoding: string): string;
- setAutoPadding(auto_padding?: boolean): this;
- // getAuthTag(): Buffer;
- // setAAD(buffer: Buffer): this; // docs only say buffer
- }
- interface CipherCCM extends Cipher {
- setAAD(buffer: Buffer, options: { plaintextLength: number }): this;
- getAuthTag(): Buffer;
- }
- interface CipherGCM extends Cipher {
- setAAD(buffer: Buffer, options?: { plaintextLength: number }): this;
- getAuthTag(): Buffer;
- }
- /** @deprecated since v10.0.0 use createDecipheriv() */
- function createDecipher(algorithm: CipherCCMTypes, password: BinaryLike, options: CipherCCMOptions): DecipherCCM;
- /** @deprecated since v10.0.0 use createDecipheriv() */
- function createDecipher(algorithm: CipherGCMTypes, password: BinaryLike, options?: CipherGCMOptions): DecipherGCM;
- /** @deprecated since v10.0.0 use createDecipheriv() */
- function createDecipher(algorithm: string, password: BinaryLike, options?: stream.TransformOptions): Decipher;
-
- function createDecipheriv(
- algorithm: CipherCCMTypes,
- key: BinaryLike,
- iv: BinaryLike | null,
- options: CipherCCMOptions,
- ): DecipherCCM;
- function createDecipheriv(
- algorithm: CipherGCMTypes,
- key: BinaryLike,
- iv: BinaryLike | null,
- options?: CipherGCMOptions,
- ): DecipherGCM;
- function createDecipheriv(algorithm: string, key: BinaryLike, iv: BinaryLike | null, options?: stream.TransformOptions): Decipher;
-
- class Decipher extends stream.Transform {
- private constructor();
- update(data: NodeJS.ArrayBufferView): Buffer;
- update(data: string, input_encoding: HexBase64BinaryEncoding): Buffer;
- update(data: NodeJS.ArrayBufferView, input_encoding: HexBase64BinaryEncoding | undefined, output_encoding: Utf8AsciiBinaryEncoding): string;
- update(data: string, input_encoding: HexBase64BinaryEncoding | undefined, output_encoding: Utf8AsciiBinaryEncoding): string;
- final(): Buffer;
- final(output_encoding: string): string;
- setAutoPadding(auto_padding?: boolean): this;
- // setAuthTag(tag: NodeJS.ArrayBufferView): this;
- // setAAD(buffer: NodeJS.ArrayBufferView): this;
- }
- interface DecipherCCM extends Decipher {
- setAuthTag(buffer: NodeJS.ArrayBufferView): this;
- setAAD(buffer: NodeJS.ArrayBufferView, options: { plaintextLength: number }): this;
- }
- interface DecipherGCM extends Decipher {
- setAuthTag(buffer: NodeJS.ArrayBufferView): this;
- setAAD(buffer: NodeJS.ArrayBufferView, options?: { plaintextLength: number }): this;
- }
-
- interface PrivateKeyInput {
- key: string | Buffer;
- format?: KeyFormat;
- type?: 'pkcs1' | 'pkcs8' | 'sec1';
- passphrase?: string | Buffer;
- }
-
- interface PublicKeyInput {
- key: string | Buffer;
- format?: KeyFormat;
- type?: 'pkcs1' | 'spki';
- }
-
- function createPrivateKey(key: PrivateKeyInput | string | Buffer): KeyObject;
- function createPublicKey(key: PublicKeyInput | string | Buffer | KeyObject): KeyObject;
- function createSecretKey(key: Buffer): KeyObject;
-
- function createSign(algorithm: string, options?: stream.WritableOptions): Signer;
-
- interface SigningOptions {
- /**
- * @See crypto.constants.RSA_PKCS1_PADDING
- */
- padding?: number;
- saltLength?: number;
- }
-
- interface SignPrivateKeyInput extends PrivateKeyInput, SigningOptions {
- }
-
- type KeyLike = string | Buffer | KeyObject;
-
- class Signer extends stream.Writable {
- private constructor();
-
- update(data: BinaryLike): Signer;
- update(data: string, input_encoding: Utf8AsciiLatin1Encoding): Signer;
- sign(private_key: SignPrivateKeyInput | KeyLike): Buffer;
- sign(private_key: SignPrivateKeyInput | KeyLike, output_format: HexBase64Latin1Encoding): string;
- }
-
- function createVerify(algorithm: string, options?: stream.WritableOptions): Verify;
- class Verify extends stream.Writable {
- private constructor();
-
- update(data: BinaryLike): Verify;
- update(data: string, input_encoding: Utf8AsciiLatin1Encoding): Verify;
- verify(object: object | KeyLike, signature: NodeJS.ArrayBufferView): boolean;
- verify(object: object | KeyLike, signature: string, signature_format?: HexBase64Latin1Encoding): boolean;
- // https://nodejs.org/api/crypto.html#crypto_verifier_verify_object_signature_signature_format
- // The signature field accepts a TypedArray type, but it is only available starting ES2017
- }
- function createDiffieHellman(prime_length: number, generator?: number | NodeJS.ArrayBufferView): DiffieHellman;
- function createDiffieHellman(prime: NodeJS.ArrayBufferView): DiffieHellman;
- function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding): DiffieHellman;
- function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: number | NodeJS.ArrayBufferView): DiffieHellman;
- function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: string, generator_encoding: HexBase64Latin1Encoding): DiffieHellman;
- class DiffieHellman {
- private constructor();
- generateKeys(): Buffer;
- generateKeys(encoding: HexBase64Latin1Encoding): string;
- computeSecret(other_public_key: NodeJS.ArrayBufferView): Buffer;
- computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer;
- computeSecret(other_public_key: NodeJS.ArrayBufferView, output_encoding: HexBase64Latin1Encoding): string;
- computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string;
- getPrime(): Buffer;
- getPrime(encoding: HexBase64Latin1Encoding): string;
- getGenerator(): Buffer;
- getGenerator(encoding: HexBase64Latin1Encoding): string;
- getPublicKey(): Buffer;
- getPublicKey(encoding: HexBase64Latin1Encoding): string;
- getPrivateKey(): Buffer;
- getPrivateKey(encoding: HexBase64Latin1Encoding): string;
- setPublicKey(public_key: NodeJS.ArrayBufferView): void;
- setPublicKey(public_key: string, encoding: string): void;
- setPrivateKey(private_key: NodeJS.ArrayBufferView): void;
- setPrivateKey(private_key: string, encoding: string): void;
- verifyError: number;
- }
- function getDiffieHellman(group_name: string): DiffieHellman;
- function pbkdf2(
- password: BinaryLike,
- salt: BinaryLike,
- iterations: number,
- keylen: number,
- digest: string,
- callback: (err: Error | null, derivedKey: Buffer) => any,
- ): void;
- function pbkdf2Sync(password: BinaryLike, salt: BinaryLike, iterations: number, keylen: number, digest: string): Buffer;
-
- function randomBytes(size: number): Buffer;
- function randomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void;
- function pseudoRandomBytes(size: number): Buffer;
- function pseudoRandomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void;
-
- function randomFillSync<T extends NodeJS.ArrayBufferView>(buffer: T, offset?: number, size?: number): T;
- function randomFill<T extends NodeJS.ArrayBufferView>(buffer: T, callback: (err: Error | null, buf: T) => void): void;
- function randomFill<T extends NodeJS.ArrayBufferView>(buffer: T, offset: number, callback: (err: Error | null, buf: T) => void): void;
- function randomFill<T extends NodeJS.ArrayBufferView>(buffer: T, offset: number, size: number, callback: (err: Error | null, buf: T) => void): void;
-
- interface ScryptOptions {
- N?: number;
- r?: number;
- p?: number;
- maxmem?: number;
- }
- function scrypt(
- password: BinaryLike,
- salt: BinaryLike,
- keylen: number, callback: (err: Error | null, derivedKey: Buffer) => void,
- ): void;
- function scrypt(
- password: BinaryLike,
- salt: BinaryLike,
- keylen: number,
- options: ScryptOptions,
- callback: (err: Error | null, derivedKey: Buffer) => void,
- ): void;
- function scryptSync(password: BinaryLike, salt: BinaryLike, keylen: number, options?: ScryptOptions): Buffer;
-
- interface RsaPublicKey {
- key: KeyLike;
- padding?: number;
- }
- interface RsaPrivateKey {
- key: KeyLike;
- passphrase?: string;
- /**
- * @default 'sha1'
- */
- oaepHash?: string;
- oaepLabel?: NodeJS.TypedArray;
- padding?: number;
- }
- function publicEncrypt(key: RsaPublicKey | RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
- function publicDecrypt(key: RsaPublicKey | RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
- function privateDecrypt(private_key: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
- function privateEncrypt(private_key: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
- function getCiphers(): string[];
- function getCurves(): string[];
- function getHashes(): string[];
- class ECDH {
- private constructor();
- static convertKey(
- key: BinaryLike,
- curve: string,
- inputEncoding?: HexBase64Latin1Encoding,
- outputEncoding?: "latin1" | "hex" | "base64",
- format?: "uncompressed" | "compressed" | "hybrid",
- ): Buffer | string;
- generateKeys(): Buffer;
- generateKeys(encoding: HexBase64Latin1Encoding, format?: ECDHKeyFormat): string;
- computeSecret(other_public_key: NodeJS.ArrayBufferView): Buffer;
- computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer;
- computeSecret(other_public_key: NodeJS.ArrayBufferView, output_encoding: HexBase64Latin1Encoding): string;
- computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string;
- getPrivateKey(): Buffer;
- getPrivateKey(encoding: HexBase64Latin1Encoding): string;
- getPublicKey(): Buffer;
- getPublicKey(encoding: HexBase64Latin1Encoding, format?: ECDHKeyFormat): string;
- setPrivateKey(private_key: NodeJS.ArrayBufferView): void;
- setPrivateKey(private_key: string, encoding: HexBase64Latin1Encoding): void;
- }
- function createECDH(curve_name: string): ECDH;
- function timingSafeEqual(a: NodeJS.ArrayBufferView, b: NodeJS.ArrayBufferView): boolean;
- /** @deprecated since v10.0.0 */
- const DEFAULT_ENCODING: string;
-
- type KeyType = 'rsa' | 'dsa' | 'ec';
- type KeyFormat = 'pem' | 'der';
-
- interface BasePrivateKeyEncodingOptions<T extends KeyFormat> {
- format: T;
- cipher?: string;
- passphrase?: string;
- }
-
- interface KeyPairKeyObjectResult {
- publicKey: KeyObject;
- privateKey: KeyObject;
- }
-
- interface ECKeyPairKeyObjectOptions {
- /**
- * Name of the curve to use.
- */
- namedCurve: string;
- }
-
- interface RSAKeyPairKeyObjectOptions {
- /**
- * Key size in bits
- */
- modulusLength: number;
-
- /**
- * @default 0x10001
- */
- publicExponent?: number;
- }
-
- interface DSAKeyPairKeyObjectOptions {
- /**
- * Key size in bits
- */
- modulusLength: number;
-
- /**
- * Size of q in bits
- */
- divisorLength: number;
- }
-
- interface RSAKeyPairOptions<PubF extends KeyFormat, PrivF extends KeyFormat> {
- /**
- * Key size in bits
- */
- modulusLength: number;
- /**
- * @default 0x10001
- */
- publicExponent?: number;
-
- publicKeyEncoding: {
- type: 'pkcs1' | 'spki';
- format: PubF;
- };
- privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & {
- type: 'pkcs1' | 'pkcs8';
- };
- }
-
- interface DSAKeyPairOptions<PubF extends KeyFormat, PrivF extends KeyFormat> {
- /**
- * Key size in bits
- */
- modulusLength: number;
- /**
- * Size of q in bits
- */
- divisorLength: number;
-
- publicKeyEncoding: {
- type: 'spki';
- format: PubF;
- };
- privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & {
- type: 'pkcs8';
- };
- }
-
- interface ECKeyPairOptions<PubF extends KeyFormat, PrivF extends KeyFormat> {
- /**
- * Name of the curve to use.
- */
- namedCurve: string;
-
- publicKeyEncoding: {
- type: 'pkcs1' | 'spki';
- format: PubF;
- };
- privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & {
- type: 'sec1' | 'pkcs8';
- };
- }
-
- interface KeyPairSyncResult<T1 extends string | Buffer, T2 extends string | Buffer> {
- publicKey: T1;
- privateKey: T2;
- }
-
- function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'pem', 'pem'>): KeyPairSyncResult<string, string>;
- function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'pem', 'der'>): KeyPairSyncResult<string, Buffer>;
- function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'der', 'pem'>): KeyPairSyncResult<Buffer, string>;
- function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'der', 'der'>): KeyPairSyncResult<Buffer, Buffer>;
- function generateKeyPairSync(type: 'rsa', options: RSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult;
-
- function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'pem', 'pem'>): KeyPairSyncResult<string, string>;
- function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'pem', 'der'>): KeyPairSyncResult<string, Buffer>;
- function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'der', 'pem'>): KeyPairSyncResult<Buffer, string>;
- function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'der', 'der'>): KeyPairSyncResult<Buffer, Buffer>;
- function generateKeyPairSync(type: 'dsa', options: DSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult;
-
- function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'pem', 'pem'>): KeyPairSyncResult<string, string>;
- function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'pem', 'der'>): KeyPairSyncResult<string, Buffer>;
- function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'der', 'pem'>): KeyPairSyncResult<Buffer, string>;
- function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'der', 'der'>): KeyPairSyncResult<Buffer, Buffer>;
- function generateKeyPairSync(type: 'ec', options: ECKeyPairKeyObjectOptions): KeyPairKeyObjectResult;
-
- function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
- function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
- function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
- function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
- function generateKeyPair(type: 'rsa', options: RSAKeyPairKeyObjectOptions, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
-
- function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
- function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
- function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
- function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
- function generateKeyPair(type: 'dsa', options: DSAKeyPairKeyObjectOptions, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
-
- function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
- function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
- function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
- function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
- function generateKeyPair(type: 'ec', options: ECKeyPairKeyObjectOptions, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
-
- namespace generateKeyPair {
- function __promisify__(type: "rsa", options: RSAKeyPairOptions<'pem', 'pem'>): Promise<{ publicKey: string, privateKey: string }>;
- function __promisify__(type: "rsa", options: RSAKeyPairOptions<'pem', 'der'>): Promise<{ publicKey: string, privateKey: Buffer }>;
- function __promisify__(type: "rsa", options: RSAKeyPairOptions<'der', 'pem'>): Promise<{ publicKey: Buffer, privateKey: string }>;
- function __promisify__(type: "rsa", options: RSAKeyPairOptions<'der', 'der'>): Promise<{ publicKey: Buffer, privateKey: Buffer }>;
- function __promisify__(type: "rsa", options: RSAKeyPairKeyObjectOptions): Promise<KeyPairKeyObjectResult>;
-
- function __promisify__(type: "dsa", options: DSAKeyPairOptions<'pem', 'pem'>): Promise<{ publicKey: string, privateKey: string }>;
- function __promisify__(type: "dsa", options: DSAKeyPairOptions<'pem', 'der'>): Promise<{ publicKey: string, privateKey: Buffer }>;
- function __promisify__(type: "dsa", options: DSAKeyPairOptions<'der', 'pem'>): Promise<{ publicKey: Buffer, privateKey: string }>;
- function __promisify__(type: "dsa", options: DSAKeyPairOptions<'der', 'der'>): Promise<{ publicKey: Buffer, privateKey: Buffer }>;
- function __promisify__(type: "dsa", options: DSAKeyPairKeyObjectOptions): Promise<KeyPairKeyObjectResult>;
-
- function __promisify__(type: "ec", options: ECKeyPairOptions<'pem', 'pem'>): Promise<{ publicKey: string, privateKey: string }>;
- function __promisify__(type: "ec", options: ECKeyPairOptions<'pem', 'der'>): Promise<{ publicKey: string, privateKey: Buffer }>;
- function __promisify__(type: "ec", options: ECKeyPairOptions<'der', 'pem'>): Promise<{ publicKey: Buffer, privateKey: string }>;
- function __promisify__(type: "ec", options: ECKeyPairOptions<'der', 'der'>): Promise<{ publicKey: Buffer, privateKey: Buffer }>;
- function __promisify__(type: "ec", options: ECKeyPairKeyObjectOptions): Promise<KeyPairKeyObjectResult>;
- }
-
- /**
- * Calculates and returns the signature for `data` using the given private key and
- * algorithm. If `algorithm` is `null` or `undefined`, then the algorithm is
- * dependent upon the key type (especially Ed25519 and Ed448).
- *
- * If `key` is not a [`KeyObject`][], this function behaves as if `key` had been
- * passed to [`crypto.createPrivateKey()`][].
- */
- function sign(algorithm: string | null | undefined, data: NodeJS.ArrayBufferView, key: KeyLike | SignPrivateKeyInput): Buffer;
-
- interface VerifyKeyWithOptions extends KeyObject, SigningOptions {
- }
-
- /**
- * Calculates and returns the signature for `data` using the given private key and
- * algorithm. If `algorithm` is `null` or `undefined`, then the algorithm is
- * dependent upon the key type (especially Ed25519 and Ed448).
- *
- * If `key` is not a [`KeyObject`][], this function behaves as if `key` had been
- * passed to [`crypto.createPublicKey()`][].
- */
- function verify(algorithm: string | null | undefined, data: NodeJS.ArrayBufferView, key: KeyLike | VerifyKeyWithOptions, signature: NodeJS.ArrayBufferView): boolean;
-}
diff --git a/assets/node_modules/@types/node/dgram.d.ts b/assets/node_modules/@types/node/dgram.d.ts
deleted file mode 100644
index 91fb0cb..0000000
--- a/assets/node_modules/@types/node/dgram.d.ts
+++ /dev/null
@@ -1,141 +0,0 @@
-declare module "dgram" {
- import { AddressInfo } from "net";
- import * as dns from "dns";
- import * as events from "events";
-
- interface RemoteInfo {
- address: string;
- family: 'IPv4' | 'IPv6';
- port: number;
- size: number;
- }
-
- interface BindOptions {
- port?: number;
- address?: string;
- exclusive?: boolean;
- fd?: number;
- }
-
- type SocketType = "udp4" | "udp6";
-
- interface SocketOptions {
- type: SocketType;
- reuseAddr?: boolean;
- /**
- * @default false
- */
- ipv6Only?: boolean;
- recvBufferSize?: number;
- sendBufferSize?: number;
- lookup?: (hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void) => void;
- }
-
- function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket;
- function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket;
-
- class Socket extends events.EventEmitter {
- addMembership(multicastAddress: string, multicastInterface?: string): void;
- address(): AddressInfo;
- bind(port?: number, address?: string, callback?: () => void): void;
- bind(port?: number, callback?: () => void): void;
- bind(callback?: () => void): void;
- bind(options: BindOptions, callback?: () => void): void;
- close(callback?: () => void): void;
- connect(port: number, address?: string, callback?: () => void): void;
- connect(port: number, callback: () => void): void;
- disconnect(): void;
- dropMembership(multicastAddress: string, multicastInterface?: string): void;
- getRecvBufferSize(): number;
- getSendBufferSize(): number;
- ref(): this;
- remoteAddress(): AddressInfo;
- send(msg: string | Uint8Array | any[], port?: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void;
- send(msg: string | Uint8Array | any[], port?: number, callback?: (error: Error | null, bytes: number) => void): void;
- send(msg: string | Uint8Array | any[], callback?: (error: Error | null, bytes: number) => void): void;
- send(msg: string | Uint8Array, offset: number, length: number, port?: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void;
- send(msg: string | Uint8Array, offset: number, length: number, port?: number, callback?: (error: Error | null, bytes: number) => void): void;
- send(msg: string | Uint8Array, offset: number, length: number, callback?: (error: Error | null, bytes: number) => void): void;
- setBroadcast(flag: boolean): void;
- setMulticastInterface(multicastInterface: string): void;
- setMulticastLoopback(flag: boolean): void;
- setMulticastTTL(ttl: number): void;
- setRecvBufferSize(size: number): void;
- setSendBufferSize(size: number): void;
- setTTL(ttl: number): void;
- unref(): this;
- /**
- * Tells the kernel to join a source-specific multicast channel at the given
- * `sourceAddress` and `groupAddress`, using the `multicastInterface` with the
- * `IP_ADD_SOURCE_MEMBERSHIP` socket option.
- * If the `multicastInterface` argument
- * is not specified, the operating system will choose one interface and will add
- * membership to it.
- * To add membership to every available interface, call
- * `socket.addSourceSpecificMembership()` multiple times, once per interface.
- */
- addSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void;
-
- /**
- * Instructs the kernel to leave a source-specific multicast channel at the given
- * `sourceAddress` and `groupAddress` using the `IP_DROP_SOURCE_MEMBERSHIP`
- * socket option. This method is automatically called by the kernel when the
- * socket is closed or the process terminates, so most apps will never have
- * reason to call this.
- *
- * If `multicastInterface` is not specified, the operating system will attempt to
- * drop membership on all valid interfaces.
- */
- dropSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void;
-
- /**
- * events.EventEmitter
- * 1. close
- * 2. connect
- * 3. error
- * 4. listening
- * 5. message
- */
- addListener(event: string, listener: (...args: any[]) => void): this;
- addListener(event: "close", listener: () => void): this;
- addListener(event: "connect", listener: () => void): this;
- addListener(event: "error", listener: (err: Error) => void): this;
- addListener(event: "listening", listener: () => void): this;
- addListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
-
- emit(event: string | symbol, ...args: any[]): boolean;
- emit(event: "close"): boolean;
- emit(event: "connect"): boolean;
- emit(event: "error", err: Error): boolean;
- emit(event: "listening"): boolean;
- emit(event: "message", msg: Buffer, rinfo: RemoteInfo): boolean;
-
- on(event: string, listener: (...args: any[]) => void): this;
- on(event: "close", listener: () => void): this;
- on(event: "connect", listener: () => void): this;
- on(event: "error", listener: (err: Error) => void): this;
- on(event: "listening", listener: () => void): this;
- on(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
-
- once(event: string, listener: (...args: any[]) => void): this;
- once(event: "close", listener: () => void): this;
- once(event: "connect", listener: () => void): this;
- once(event: "error", listener: (err: Error) => void): this;
- once(event: "listening", listener: () => void): this;
- once(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
-
- prependListener(event: string, listener: (...args: any[]) => void): this;
- prependListener(event: "close", listener: () => void): this;
- prependListener(event: "connect", listener: () => void): this;
- prependListener(event: "error", listener: (err: Error) => void): this;
- prependListener(event: "listening", listener: () => void): this;
- prependListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
-
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
- prependOnceListener(event: "close", listener: () => void): this;
- prependOnceListener(event: "connect", listener: () => void): this;
- prependOnceListener(event: "error", listener: (err: Error) => void): this;
- prependOnceListener(event: "listening", listener: () => void): this;
- prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
- }
-}
diff --git a/assets/node_modules/@types/node/dns.d.ts b/assets/node_modules/@types/node/dns.d.ts
deleted file mode 100644
index d2b0505..0000000
--- a/assets/node_modules/@types/node/dns.d.ts
+++ /dev/null
@@ -1,366 +0,0 @@
-declare module "dns" {
- // Supported getaddrinfo flags.
- const ADDRCONFIG: number;
- const V4MAPPED: number;
-
- interface LookupOptions {
- family?: number;
- hints?: number;
- all?: boolean;
- verbatim?: boolean;
- }
-
- interface LookupOneOptions extends LookupOptions {
- all?: false;
- }
-
- interface LookupAllOptions extends LookupOptions {
- all: true;
- }
-
- interface LookupAddress {
- address: string;
- family: number;
- }
-
- function lookup(hostname: string, family: number, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
- function lookup(hostname: string, options: LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
- function lookup(hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException | null, addresses: LookupAddress[]) => void): void;
- function lookup(hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException | null, address: string | LookupAddress[], family: number) => void): void;
- function lookup(hostname: string, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace lookup {
- function __promisify__(hostname: string, options: LookupAllOptions): Promise<LookupAddress[]>;
- function __promisify__(hostname: string, options?: LookupOneOptions | number): Promise<LookupAddress>;
- function __promisify__(hostname: string, options: LookupOptions): Promise<LookupAddress | LookupAddress[]>;
- }
-
- function lookupService(address: string, port: number, callback: (err: NodeJS.ErrnoException | null, hostname: string, service: string) => void): void;
-
- namespace lookupService {
- function __promisify__(address: string, port: number): Promise<{ hostname: string, service: string }>;
- }
-
- interface ResolveOptions {
- ttl: boolean;
- }
-
- interface ResolveWithTtlOptions extends ResolveOptions {
- ttl: true;
- }
-
- interface RecordWithTtl {
- address: string;
- ttl: number;
- }
-
- /** @deprecated Use AnyARecord or AnyAaaaRecord instead. */
- type AnyRecordWithTtl = AnyARecord | AnyAaaaRecord;
-
- interface AnyARecord extends RecordWithTtl {
- type: "A";
- }
-
- interface AnyAaaaRecord extends RecordWithTtl {
- type: "AAAA";
- }
-
- interface MxRecord {
- priority: number;
- exchange: string;
- }
-
- interface AnyMxRecord extends MxRecord {
- type: "MX";
- }
-
- interface NaptrRecord {
- flags: string;
- service: string;
- regexp: string;
- replacement: string;
- order: number;
- preference: number;
- }
-
- interface AnyNaptrRecord extends NaptrRecord {
- type: "NAPTR";
- }
-
- interface SoaRecord {
- nsname: string;
- hostmaster: string;
- serial: number;
- refresh: number;
- retry: number;
- expire: number;
- minttl: number;
- }
-
- interface AnySoaRecord extends SoaRecord {
- type: "SOA";
- }
-
- interface SrvRecord {
- priority: number;
- weight: number;
- port: number;
- name: string;
- }
-
- interface AnySrvRecord extends SrvRecord {
- type: "SRV";
- }
-
- interface AnyTxtRecord {
- type: "TXT";
- entries: string[];
- }
-
- interface AnyNsRecord {
- type: "NS";
- value: string;
- }
-
- interface AnyPtrRecord {
- type: "PTR";
- value: string;
- }
-
- interface AnyCnameRecord {
- type: "CNAME";
- value: string;
- }
-
- type AnyRecord = AnyARecord |
- AnyAaaaRecord |
- AnyCnameRecord |
- AnyMxRecord |
- AnyNaptrRecord |
- AnyNsRecord |
- AnyPtrRecord |
- AnySoaRecord |
- AnySrvRecord |
- AnyTxtRecord;
-
- function resolve(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
- function resolve(hostname: string, rrtype: "A", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
- function resolve(hostname: string, rrtype: "AAAA", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
- function resolve(hostname: string, rrtype: "ANY", callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void): void;
- function resolve(hostname: string, rrtype: "CNAME", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
- function resolve(hostname: string, rrtype: "MX", callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void): void;
- function resolve(hostname: string, rrtype: "NAPTR", callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void): void;
- function resolve(hostname: string, rrtype: "NS", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
- function resolve(hostname: string, rrtype: "PTR", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
- function resolve(hostname: string, rrtype: "SOA", callback: (err: NodeJS.ErrnoException | null, addresses: SoaRecord) => void): void;
- function resolve(hostname: string, rrtype: "SRV", callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void): void;
- function resolve(hostname: string, rrtype: "TXT", callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void): void;
- function resolve(
- hostname: string,
- rrtype: string,
- callback: (err: NodeJS.ErrnoException | null, addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][] | AnyRecord[]) => void,
- ): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace resolve {
- function __promisify__(hostname: string, rrtype?: "A" | "AAAA" | "CNAME" | "NS" | "PTR"): Promise<string[]>;
- function __promisify__(hostname: string, rrtype: "ANY"): Promise<AnyRecord[]>;
- function __promisify__(hostname: string, rrtype: "MX"): Promise<MxRecord[]>;
- function __promisify__(hostname: string, rrtype: "NAPTR"): Promise<NaptrRecord[]>;
- function __promisify__(hostname: string, rrtype: "SOA"): Promise<SoaRecord>;
- function __promisify__(hostname: string, rrtype: "SRV"): Promise<SrvRecord[]>;
- function __promisify__(hostname: string, rrtype: "TXT"): Promise<string[][]>;
- function __promisify__(hostname: string, rrtype: string): Promise<string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][] | AnyRecord[]>;
- }
-
- function resolve4(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
- function resolve4(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void): void;
- function resolve4(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace resolve4 {
- function __promisify__(hostname: string): Promise<string[]>;
- function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
- function __promisify__(hostname: string, options?: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
- }
-
- function resolve6(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
- function resolve6(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void): void;
- function resolve6(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace resolve6 {
- function __promisify__(hostname: string): Promise<string[]>;
- function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
- function __promisify__(hostname: string, options?: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
- }
-
- function resolveCname(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
- namespace resolveCname {
- function __promisify__(hostname: string): Promise<string[]>;
- }
-
- function resolveMx(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void): void;
- namespace resolveMx {
- function __promisify__(hostname: string): Promise<MxRecord[]>;
- }
-
- function resolveNaptr(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void): void;
- namespace resolveNaptr {
- function __promisify__(hostname: string): Promise<NaptrRecord[]>;
- }
-
- function resolveNs(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
- namespace resolveNs {
- function __promisify__(hostname: string): Promise<string[]>;
- }
-
- function resolvePtr(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
- namespace resolvePtr {
- function __promisify__(hostname: string): Promise<string[]>;
- }
-
- function resolveSoa(hostname: string, callback: (err: NodeJS.ErrnoException | null, address: SoaRecord) => void): void;
- namespace resolveSoa {
- function __promisify__(hostname: string): Promise<SoaRecord>;
- }
-
- function resolveSrv(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void): void;
- namespace resolveSrv {
- function __promisify__(hostname: string): Promise<SrvRecord[]>;
- }
-
- function resolveTxt(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void): void;
- namespace resolveTxt {
- function __promisify__(hostname: string): Promise<string[][]>;
- }
-
- function resolveAny(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void): void;
- namespace resolveAny {
- function __promisify__(hostname: string): Promise<AnyRecord[]>;
- }
-
- function reverse(ip: string, callback: (err: NodeJS.ErrnoException | null, hostnames: string[]) => void): void;
- function setServers(servers: ReadonlyArray<string>): void;
- function getServers(): string[];
-
- // Error codes
- const NODATA: string;
- const FORMERR: string;
- const SERVFAIL: string;
- const NOTFOUND: string;
- const NOTIMP: string;
- const REFUSED: string;
- const BADQUERY: string;
- const BADNAME: string;
- const BADFAMILY: string;
- const BADRESP: string;
- const CONNREFUSED: string;
- const TIMEOUT: string;
- const EOF: string;
- const FILE: string;
- const NOMEM: string;
- const DESTRUCTION: string;
- const BADSTR: string;
- const BADFLAGS: string;
- const NONAME: string;
- const BADHINTS: string;
- const NOTINITIALIZED: string;
- const LOADIPHLPAPI: string;
- const ADDRGETNETWORKPARAMS: string;
- const CANCELLED: string;
-
- class Resolver {
- getServers: typeof getServers;
- setServers: typeof setServers;
- resolve: typeof resolve;
- resolve4: typeof resolve4;
- resolve6: typeof resolve6;
- resolveAny: typeof resolveAny;
- resolveCname: typeof resolveCname;
- resolveMx: typeof resolveMx;
- resolveNaptr: typeof resolveNaptr;
- resolveNs: typeof resolveNs;
- resolvePtr: typeof resolvePtr;
- resolveSoa: typeof resolveSoa;
- resolveSrv: typeof resolveSrv;
- resolveTxt: typeof resolveTxt;
- reverse: typeof reverse;
- cancel(): void;
- }
-
- namespace promises {
- function getServers(): string[];
-
- function lookup(hostname: string, family: number): Promise<LookupAddress>;
- function lookup(hostname: string, options: LookupOneOptions): Promise<LookupAddress>;
- function lookup(hostname: string, options: LookupAllOptions): Promise<LookupAddress[]>;
- function lookup(hostname: string, options: LookupOptions): Promise<LookupAddress | LookupAddress[]>;
- function lookup(hostname: string): Promise<LookupAddress>;
-
- function lookupService(address: string, port: number): Promise<{ hostname: string, service: string }>;
-
- function resolve(hostname: string): Promise<string[]>;
- function resolve(hostname: string, rrtype: "A"): Promise<string[]>;
- function resolve(hostname: string, rrtype: "AAAA"): Promise<string[]>;
- function resolve(hostname: string, rrtype: "ANY"): Promise<AnyRecord[]>;
- function resolve(hostname: string, rrtype: "CNAME"): Promise<string[]>;
- function resolve(hostname: string, rrtype: "MX"): Promise<MxRecord[]>;
- function resolve(hostname: string, rrtype: "NAPTR"): Promise<NaptrRecord[]>;
- function resolve(hostname: string, rrtype: "NS"): Promise<string[]>;
- function resolve(hostname: string, rrtype: "PTR"): Promise<string[]>;
- function resolve(hostname: string, rrtype: "SOA"): Promise<SoaRecord>;
- function resolve(hostname: string, rrtype: "SRV"): Promise<SrvRecord[]>;
- function resolve(hostname: string, rrtype: "TXT"): Promise<string[][]>;
- function resolve(hostname: string, rrtype: string): Promise<string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][] | AnyRecord[]>;
-
- function resolve4(hostname: string): Promise<string[]>;
- function resolve4(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
- function resolve4(hostname: string, options: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
-
- function resolve6(hostname: string): Promise<string[]>;
- function resolve6(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
- function resolve6(hostname: string, options: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
-
- function resolveAny(hostname: string): Promise<AnyRecord[]>;
-
- function resolveCname(hostname: string): Promise<string[]>;
-
- function resolveMx(hostname: string): Promise<MxRecord[]>;
-
- function resolveNaptr(hostname: string): Promise<NaptrRecord[]>;
-
- function resolveNs(hostname: string): Promise<string[]>;
-
- function resolvePtr(hostname: string): Promise<string[]>;
-
- function resolveSoa(hostname: string): Promise<SoaRecord>;
-
- function resolveSrv(hostname: string): Promise<SrvRecord[]>;
-
- function resolveTxt(hostname: string): Promise<string[][]>;
-
- function reverse(ip: string): Promise<string[]>;
-
- function setServers(servers: ReadonlyArray<string>): void;
-
- class Resolver {
- getServers: typeof getServers;
- resolve: typeof resolve;
- resolve4: typeof resolve4;
- resolve6: typeof resolve6;
- resolveAny: typeof resolveAny;
- resolveCname: typeof resolveCname;
- resolveMx: typeof resolveMx;
- resolveNaptr: typeof resolveNaptr;
- resolveNs: typeof resolveNs;
- resolvePtr: typeof resolvePtr;
- resolveSoa: typeof resolveSoa;
- resolveSrv: typeof resolveSrv;
- resolveTxt: typeof resolveTxt;
- reverse: typeof reverse;
- setServers: typeof setServers;
- }
- }
-}
diff --git a/assets/node_modules/@types/node/domain.d.ts b/assets/node_modules/@types/node/domain.d.ts
deleted file mode 100644
index c7fa9b8..0000000
--- a/assets/node_modules/@types/node/domain.d.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-declare module "domain" {
- import { EventEmitter } from "events";
-
- class Domain extends EventEmitter implements NodeJS.Domain {
- run<T>(fn: (...args: any[]) => T, ...args: any[]): T;
- add(emitter: EventEmitter | NodeJS.Timer): void;
- remove(emitter: EventEmitter | NodeJS.Timer): void;
- bind<T extends Function>(cb: T): T;
- intercept<T extends Function>(cb: T): T;
- members: Array<EventEmitter | NodeJS.Timer>;
- enter(): void;
- exit(): void;
- }
-
- function create(): Domain;
-}
diff --git a/assets/node_modules/@types/node/events.d.ts b/assets/node_modules/@types/node/events.d.ts
deleted file mode 100644
index b07defc..0000000
--- a/assets/node_modules/@types/node/events.d.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-declare module "events" {
- interface EventEmitterOptions {
- /**
- * Enables automatic capturing of promise rejection.
- */
- captureRejections?: boolean;
- }
-
- interface NodeEventTarget {
- once(event: string | symbol, listener: (...args: any[]) => void): this;
- }
-
- interface DOMEventTarget {
- addEventListener(event: string, listener: (...args: any[]) => void, opts?: { once: boolean }): any;
- }
-
- namespace EventEmitter {
- function once(emitter: NodeEventTarget, event: string | symbol): Promise<any[]>;
- function once(emitter: DOMEventTarget, event: string): Promise<any[]>;
- function on(emitter: EventEmitter, event: string): AsyncIterableIterator<any>;
- const captureRejectionSymbol: unique symbol;
-
- /**
- * This symbol shall be used to install a listener for only monitoring `'error'`
- * events. Listeners installed using this symbol are called before the regular
- * `'error'` listeners are called.
- *
- * Installing a listener using this symbol does not change the behavior once an
- * `'error'` event is emitted, therefore the process will still crash if no
- * regular `'error'` listener is installed.
- */
- const errorMonitor: unique symbol;
- /**
- * Sets or gets the default captureRejection value for all emitters.
- */
- let captureRejections: boolean;
-
- interface EventEmitter extends NodeJS.EventEmitter {
- }
-
- class EventEmitter {
- constructor(options?: EventEmitterOptions);
- /** @deprecated since v4.0.0 */
- static listenerCount(emitter: EventEmitter, event: string | symbol): number;
- static defaultMaxListeners: number;
- }
- }
-
- export = EventEmitter;
-}
diff --git a/assets/node_modules/@types/node/fs.d.ts b/assets/node_modules/@types/node/fs.d.ts
deleted file mode 100644
index c5ad15a..0000000
--- a/assets/node_modules/@types/node/fs.d.ts
+++ /dev/null
@@ -1,2458 +0,0 @@
-declare module "fs" {
- import * as stream from "stream";
- import * as events from "events";
- import { URL } from "url";
-
- /**
- * Valid types for path values in "fs".
- */
- type PathLike = string | Buffer | URL;
-
- type NoParamCallback = (err: NodeJS.ErrnoException | null) => void;
-
- interface StatsBase<T> {
- isFile(): boolean;
- isDirectory(): boolean;
- isBlockDevice(): boolean;
- isCharacterDevice(): boolean;
- isSymbolicLink(): boolean;
- isFIFO(): boolean;
- isSocket(): boolean;
-
- dev: number;
- ino: number;
- mode: number;
- nlink: number;
- uid: number;
- gid: number;
- rdev: number;
- size: number;
- blksize: number;
- blocks: number;
- atimeMs: number;
- mtimeMs: number;
- ctimeMs: number;
- birthtimeMs: number;
- atime: Date;
- mtime: Date;
- ctime: Date;
- birthtime: Date;
- }
-
- interface Stats extends StatsBase<number> {
- }
-
- class Stats {
- }
-
- class Dirent {
- isFile(): boolean;
- isDirectory(): boolean;
- isBlockDevice(): boolean;
- isCharacterDevice(): boolean;
- isSymbolicLink(): boolean;
- isFIFO(): boolean;
- isSocket(): boolean;
- name: string;
- }
-
- /**
- * A class representing a directory stream.
- */
- class Dir {
- readonly path: string;
-
- /**
- * Asynchronously iterates over the directory via `readdir(3)` until all entries have been read.
- */
- [Symbol.asyncIterator](): AsyncIterableIterator<Dirent>;
-
- /**
- * Asynchronously close the directory's underlying resource handle.
- * Subsequent reads will result in errors.
- */
- close(): Promise<void>;
- close(cb: NoParamCallback): void;
-
- /**
- * Synchronously close the directory's underlying resource handle.
- * Subsequent reads will result in errors.
- */
- closeSync(): void;
-
- /**
- * Asynchronously read the next directory entry via `readdir(3)` as an `Dirent`.
- * After the read is completed, a value is returned that will be resolved with an `Dirent`, or `null` if there are no more directory entries to read.
- * Directory entries returned by this function are in no particular order as provided by the operating system's underlying directory mechanisms.
- */
- read(): Promise<Dirent | null>;
- read(cb: (err: NodeJS.ErrnoException | null, dirEnt: Dirent | null) => void): void;
-
- /**
- * Synchronously read the next directory entry via `readdir(3)` as a `Dirent`.
- * If there are no more directory entries to read, null will be returned.
- * Directory entries returned by this function are in no particular order as provided by the operating system's underlying directory mechanisms.
- */
- readSync(): Dirent;
- }
-
- interface FSWatcher extends events.EventEmitter {
- close(): void;
-
- /**
- * events.EventEmitter
- * 1. change
- * 2. error
- */
- addListener(event: string, listener: (...args: any[]) => void): this;
- addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
- addListener(event: "error", listener: (error: Error) => void): this;
- addListener(event: "close", listener: () => void): this;
-
- on(event: string, listener: (...args: any[]) => void): this;
- on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
- on(event: "error", listener: (error: Error) => void): this;
- on(event: "close", listener: () => void): this;
-
- once(event: string, listener: (...args: any[]) => void): this;
- once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
- once(event: "error", listener: (error: Error) => void): this;
- once(event: "close", listener: () => void): this;
-
- prependListener(event: string, listener: (...args: any[]) => void): this;
- prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
- prependListener(event: "error", listener: (error: Error) => void): this;
- prependListener(event: "close", listener: () => void): this;
-
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
- prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
- prependOnceListener(event: "error", listener: (error: Error) => void): this;
- prependOnceListener(event: "close", listener: () => void): this;
- }
-
- class ReadStream extends stream.Readable {
- close(): void;
- bytesRead: number;
- path: string | Buffer;
-
- /**
- * events.EventEmitter
- * 1. open
- * 2. close
- */
- addListener(event: string, listener: (...args: any[]) => void): this;
- addListener(event: "open", listener: (fd: number) => void): this;
- addListener(event: "close", listener: () => void): this;
-
- on(event: string, listener: (...args: any[]) => void): this;
- on(event: "open", listener: (fd: number) => void): this;
- on(event: "close", listener: () => void): this;
-
- once(event: string, listener: (...args: any[]) => void): this;
- once(event: "open", listener: (fd: number) => void): this;
- once(event: "close", listener: () => void): this;
-
- prependListener(event: string, listener: (...args: any[]) => void): this;
- prependListener(event: "open", listener: (fd: number) => void): this;
- prependListener(event: "close", listener: () => void): this;
-
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
- prependOnceListener(event: "open", listener: (fd: number) => void): this;
- prependOnceListener(event: "close", listener: () => void): this;
- }
-
- class WriteStream extends stream.Writable {
- close(): void;
- bytesWritten: number;
- path: string | Buffer;
-
- /**
- * events.EventEmitter
- * 1. open
- * 2. close
- */
- addListener(event: string, listener: (...args: any[]) => void): this;
- addListener(event: "open", listener: (fd: number) => void): this;
- addListener(event: "close", listener: () => void): this;
-
- on(event: string, listener: (...args: any[]) => void): this;
- on(event: "open", listener: (fd: number) => void): this;
- on(event: "close", listener: () => void): this;
-
- once(event: string, listener: (...args: any[]) => void): this;
- once(event: "open", listener: (fd: number) => void): this;
- once(event: "close", listener: () => void): this;
-
- prependListener(event: string, listener: (...args: any[]) => void): this;
- prependListener(event: "open", listener: (fd: number) => void): this;
- prependListener(event: "close", listener: () => void): this;
-
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
- prependOnceListener(event: "open", listener: (fd: number) => void): this;
- prependOnceListener(event: "close", listener: () => void): this;
- }
-
- /**
- * Asynchronous rename(2) - Change the name or location of a file or directory.
- * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function rename(oldPath: PathLike, newPath: PathLike, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace rename {
- /**
- * Asynchronous rename(2) - Change the name or location of a file or directory.
- * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function __promisify__(oldPath: PathLike, newPath: PathLike): Promise<void>;
- }
-
- /**
- * Synchronous rename(2) - Change the name or location of a file or directory.
- * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function renameSync(oldPath: PathLike, newPath: PathLike): void;
-
- /**
- * Asynchronous truncate(2) - Truncate a file to a specified length.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param len If not specified, defaults to `0`.
- */
- function truncate(path: PathLike, len: number | undefined | null, callback: NoParamCallback): void;
-
- /**
- * Asynchronous truncate(2) - Truncate a file to a specified length.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function truncate(path: PathLike, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace truncate {
- /**
- * Asynchronous truncate(2) - Truncate a file to a specified length.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param len If not specified, defaults to `0`.
- */
- function __promisify__(path: PathLike, len?: number | null): Promise<void>;
- }
-
- /**
- * Synchronous truncate(2) - Truncate a file to a specified length.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param len If not specified, defaults to `0`.
- */
- function truncateSync(path: PathLike, len?: number | null): void;
-
- /**
- * Asynchronous ftruncate(2) - Truncate a file to a specified length.
- * @param fd A file descriptor.
- * @param len If not specified, defaults to `0`.
- */
- function ftruncate(fd: number, len: number | undefined | null, callback: NoParamCallback): void;
-
- /**
- * Asynchronous ftruncate(2) - Truncate a file to a specified length.
- * @param fd A file descriptor.
- */
- function ftruncate(fd: number, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace ftruncate {
- /**
- * Asynchronous ftruncate(2) - Truncate a file to a specified length.
- * @param fd A file descriptor.
- * @param len If not specified, defaults to `0`.
- */
- function __promisify__(fd: number, len?: number | null): Promise<void>;
- }
-
- /**
- * Synchronous ftruncate(2) - Truncate a file to a specified length.
- * @param fd A file descriptor.
- * @param len If not specified, defaults to `0`.
- */
- function ftruncateSync(fd: number, len?: number | null): void;
-
- /**
- * Asynchronous chown(2) - Change ownership of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function chown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace chown {
- /**
- * Asynchronous chown(2) - Change ownership of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function __promisify__(path: PathLike, uid: number, gid: number): Promise<void>;
- }
-
- /**
- * Synchronous chown(2) - Change ownership of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function chownSync(path: PathLike, uid: number, gid: number): void;
-
- /**
- * Asynchronous fchown(2) - Change ownership of a file.
- * @param fd A file descriptor.
- */
- function fchown(fd: number, uid: number, gid: number, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace fchown {
- /**
- * Asynchronous fchown(2) - Change ownership of a file.
- * @param fd A file descriptor.
- */
- function __promisify__(fd: number, uid: number, gid: number): Promise<void>;
- }
-
- /**
- * Synchronous fchown(2) - Change ownership of a file.
- * @param fd A file descriptor.
- */
- function fchownSync(fd: number, uid: number, gid: number): void;
-
- /**
- * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function lchown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace lchown {
- /**
- * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function __promisify__(path: PathLike, uid: number, gid: number): Promise<void>;
- }
-
- /**
- * Synchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function lchownSync(path: PathLike, uid: number, gid: number): void;
-
- /**
- * Asynchronous chmod(2) - Change permissions of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
- */
- function chmod(path: PathLike, mode: string | number, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace chmod {
- /**
- * Asynchronous chmod(2) - Change permissions of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
- */
- function __promisify__(path: PathLike, mode: string | number): Promise<void>;
- }
-
- /**
- * Synchronous chmod(2) - Change permissions of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
- */
- function chmodSync(path: PathLike, mode: string | number): void;
-
- /**
- * Asynchronous fchmod(2) - Change permissions of a file.
- * @param fd A file descriptor.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
- */
- function fchmod(fd: number, mode: string | number, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace fchmod {
- /**
- * Asynchronous fchmod(2) - Change permissions of a file.
- * @param fd A file descriptor.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
- */
- function __promisify__(fd: number, mode: string | number): Promise<void>;
- }
-
- /**
- * Synchronous fchmod(2) - Change permissions of a file.
- * @param fd A file descriptor.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
- */
- function fchmodSync(fd: number, mode: string | number): void;
-
- /**
- * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
- */
- function lchmod(path: PathLike, mode: string | number, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace lchmod {
- /**
- * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
- */
- function __promisify__(path: PathLike, mode: string | number): Promise<void>;
- }
-
- /**
- * Synchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
- */
- function lchmodSync(path: PathLike, mode: string | number): void;
-
- /**
- * Asynchronous stat(2) - Get file status.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function stat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace stat {
- /**
- * Asynchronous stat(2) - Get file status.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function __promisify__(path: PathLike): Promise<Stats>;
- }
-
- /**
- * Synchronous stat(2) - Get file status.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function statSync(path: PathLike): Stats;
-
- /**
- * Asynchronous fstat(2) - Get file status.
- * @param fd A file descriptor.
- */
- function fstat(fd: number, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace fstat {
- /**
- * Asynchronous fstat(2) - Get file status.
- * @param fd A file descriptor.
- */
- function __promisify__(fd: number): Promise<Stats>;
- }
-
- /**
- * Synchronous fstat(2) - Get file status.
- * @param fd A file descriptor.
- */
- function fstatSync(fd: number): Stats;
-
- /**
- * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function lstat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace lstat {
- /**
- * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function __promisify__(path: PathLike): Promise<Stats>;
- }
-
- /**
- * Synchronous lstat(2) - Get file status. Does not dereference symbolic links.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function lstatSync(path: PathLike): Stats;
-
- /**
- * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file.
- * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function link(existingPath: PathLike, newPath: PathLike, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace link {
- /**
- * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file.
- * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function __promisify__(existingPath: PathLike, newPath: PathLike): Promise<void>;
- }
-
- /**
- * Synchronous link(2) - Create a new link (also known as a hard link) to an existing file.
- * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function linkSync(existingPath: PathLike, newPath: PathLike): void;
-
- /**
- * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
- * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
- * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
- * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms).
- * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path.
- */
- function symlink(target: PathLike, path: PathLike, type: symlink.Type | undefined | null, callback: NoParamCallback): void;
-
- /**
- * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
- * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
- * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
- */
- function symlink(target: PathLike, path: PathLike, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace symlink {
- /**
- * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
- * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
- * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
- * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms).
- * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path.
- */
- function __promisify__(target: PathLike, path: PathLike, type?: string | null): Promise<void>;
-
- type Type = "dir" | "file" | "junction";
- }
-
- /**
- * Synchronous symlink(2) - Create a new symbolic link to an existing file.
- * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
- * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
- * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms).
- * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path.
- */
- function symlinkSync(target: PathLike, path: PathLike, type?: symlink.Type | null): void;
-
- /**
- * Asynchronous readlink(2) - read value of a symbolic link.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readlink(
- path: PathLike,
- options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null,
- callback: (err: NodeJS.ErrnoException | null, linkString: string) => void
- ): void;
-
- /**
- * Asynchronous readlink(2) - read value of a symbolic link.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readlink(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException | null, linkString: Buffer) => void): void;
-
- /**
- * Asynchronous readlink(2) - read value of a symbolic link.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readlink(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, linkString: string | Buffer) => void): void;
-
- /**
- * Asynchronous readlink(2) - read value of a symbolic link.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function readlink(path: PathLike, callback: (err: NodeJS.ErrnoException | null, linkString: string) => void): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace readlink {
- /**
- * Asynchronous readlink(2) - read value of a symbolic link.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function __promisify__(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise<string>;
-
- /**
- * Asynchronous readlink(2) - read value of a symbolic link.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function __promisify__(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise<Buffer>;
-
- /**
- * Asynchronous readlink(2) - read value of a symbolic link.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise<string | Buffer>;
- }
-
- /**
- * Synchronous readlink(2) - read value of a symbolic link.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readlinkSync(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;
-
- /**
- * Synchronous readlink(2) - read value of a symbolic link.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readlinkSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer;
-
- /**
- * Synchronous readlink(2) - read value of a symbolic link.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readlinkSync(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer;
-
- /**
- * Asynchronous realpath(3) - return the canonicalized absolute pathname.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function realpath(
- path: PathLike,
- options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null,
- callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void
- ): void;
-
- /**
- * Asynchronous realpath(3) - return the canonicalized absolute pathname.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function realpath(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void): void;
-
- /**
- * Asynchronous realpath(3) - return the canonicalized absolute pathname.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function realpath(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void): void;
-
- /**
- * Asynchronous realpath(3) - return the canonicalized absolute pathname.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function realpath(path: PathLike, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace realpath {
- /**
- * Asynchronous realpath(3) - return the canonicalized absolute pathname.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function __promisify__(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise<string>;
-
- /**
- * Asynchronous realpath(3) - return the canonicalized absolute pathname.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function __promisify__(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise<Buffer>;
-
- /**
- * Asynchronous realpath(3) - return the canonicalized absolute pathname.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise<string | Buffer>;
-
- function native(
- path: PathLike,
- options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null,
- callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void
- ): void;
- function native(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void): void;
- function native(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void): void;
- function native(path: PathLike, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void): void;
- }
-
- /**
- * Synchronous realpath(3) - return the canonicalized absolute pathname.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function realpathSync(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;
-
- /**
- * Synchronous realpath(3) - return the canonicalized absolute pathname.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function realpathSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer;
-
- /**
- * Synchronous realpath(3) - return the canonicalized absolute pathname.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function realpathSync(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer;
-
- namespace realpathSync {
- function native(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;
- function native(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer;
- function native(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer;
- }
-
- /**
- * Asynchronous unlink(2) - delete a name and possibly the file it refers to.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function unlink(path: PathLike, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace unlink {
- /**
- * Asynchronous unlink(2) - delete a name and possibly the file it refers to.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function __promisify__(path: PathLike): Promise<void>;
- }
-
- /**
- * Synchronous unlink(2) - delete a name and possibly the file it refers to.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function unlinkSync(path: PathLike): void;
-
- interface RmDirOptions {
- /**
- * If `true`, perform a recursive directory removal. In
- * recursive mode, errors are not reported if `path` does not exist, and
- * operations are retried on failure.
- * @experimental
- * @default false
- */
- recursive?: boolean;
- }
-
- interface RmDirAsyncOptions extends RmDirOptions {
- /**
- * The amount of time in milliseconds to wait between retries.
- * This option is ignored if the `recursive` option is not `true`.
- * @default 100
- */
- retryDelay?: number;
- /**
- * If an `EBUSY`, `EMFILE`, `ENFILE`, `ENOTEMPTY`, or
- * `EPERM` error is encountered, Node.js will retry the operation with a linear
- * backoff wait of `retryDelay` ms longer on each try. This option represents the
- * number of retries. This option is ignored if the `recursive` option is not
- * `true`.
- * @default 0
- */
- maxRetries?: number;
- }
-
- /**
- * Asynchronous rmdir(2) - delete a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function rmdir(path: PathLike, callback: NoParamCallback): void;
- function rmdir(path: PathLike, options: RmDirAsyncOptions, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace rmdir {
- /**
- * Asynchronous rmdir(2) - delete a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function __promisify__(path: PathLike, options?: RmDirAsyncOptions): Promise<void>;
- }
-
- /**
- * Synchronous rmdir(2) - delete a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function rmdirSync(path: PathLike, options?: RmDirOptions): void;
-
- interface MakeDirectoryOptions {
- /**
- * Indicates whether parent folders should be created.
- * @default false
- */
- recursive?: boolean;
- /**
- * A file mode. If a string is passed, it is parsed as an octal integer. If not specified
- * @default 0o777.
- */
- mode?: number;
- }
-
- /**
- * Asynchronous mkdir(2) - create a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
- * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
- */
- function mkdir(path: PathLike, options: number | string | MakeDirectoryOptions | undefined | null, callback: NoParamCallback): void;
-
- /**
- * Asynchronous mkdir(2) - create a directory with a mode of `0o777`.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function mkdir(path: PathLike, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace mkdir {
- /**
- * Asynchronous mkdir(2) - create a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
- * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
- */
- function __promisify__(path: PathLike, options?: number | string | MakeDirectoryOptions | null): Promise<void>;
- }
-
- /**
- * Synchronous mkdir(2) - create a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
- * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
- */
- function mkdirSync(path: PathLike, options?: number | string | MakeDirectoryOptions | null): void;
-
- /**
- * Asynchronously creates a unique temporary directory.
- * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function mkdtemp(prefix: string, options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException | null, folder: string) => void): void;
-
- /**
- * Asynchronously creates a unique temporary directory.
- * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function mkdtemp(prefix: string, options: "buffer" | { encoding: "buffer" }, callback: (err: NodeJS.ErrnoException | null, folder: Buffer) => void): void;
-
- /**
- * Asynchronously creates a unique temporary directory.
- * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function mkdtemp(prefix: string, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, folder: string | Buffer) => void): void;
-
- /**
- * Asynchronously creates a unique temporary directory.
- * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
- */
- function mkdtemp(prefix: string, callback: (err: NodeJS.ErrnoException | null, folder: string) => void): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace mkdtemp {
- /**
- * Asynchronously creates a unique temporary directory.
- * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function __promisify__(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise<string>;
-
- /**
- * Asynchronously creates a unique temporary directory.
- * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function __promisify__(prefix: string, options: { encoding: "buffer" } | "buffer"): Promise<Buffer>;
-
- /**
- * Asynchronously creates a unique temporary directory.
- * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function __promisify__(prefix: string, options?: { encoding?: string | null } | string | null): Promise<string | Buffer>;
- }
-
- /**
- * Synchronously creates a unique temporary directory.
- * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function mkdtempSync(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;
-
- /**
- * Synchronously creates a unique temporary directory.
- * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function mkdtempSync(prefix: string, options: { encoding: "buffer" } | "buffer"): Buffer;
-
- /**
- * Synchronously creates a unique temporary directory.
- * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function mkdtempSync(prefix: string, options?: { encoding?: string | null } | string | null): string | Buffer;
-
- /**
- * Asynchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readdir(
- path: PathLike,
- options: { encoding: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | undefined | null,
- callback: (err: NodeJS.ErrnoException | null, files: string[]) => void,
- ): void;
-
- /**
- * Asynchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readdir(path: PathLike, options: { encoding: "buffer"; withFileTypes?: false } | "buffer", callback: (err: NodeJS.ErrnoException | null, files: Buffer[]) => void): void;
-
- /**
- * Asynchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readdir(
- path: PathLike,
- options: { encoding?: string | null; withFileTypes?: false } | string | undefined | null,
- callback: (err: NodeJS.ErrnoException | null, files: string[] | Buffer[]) => void,
- ): void;
-
- /**
- * Asynchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function readdir(path: PathLike, callback: (err: NodeJS.ErrnoException | null, files: string[]) => void): void;
-
- /**
- * Asynchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options If called with `withFileTypes: true` the result data will be an array of Dirent.
- */
- function readdir(path: PathLike, options: { encoding?: string | null; withFileTypes: true }, callback: (err: NodeJS.ErrnoException | null, files: Dirent[]) => void): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace readdir {
- /**
- * Asynchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function __promisify__(path: PathLike, options?: { encoding: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | null): Promise<string[]>;
-
- /**
- * Asynchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function __promisify__(path: PathLike, options: "buffer" | { encoding: "buffer"; withFileTypes?: false }): Promise<Buffer[]>;
-
- /**
- * Asynchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function __promisify__(path: PathLike, options?: { encoding?: string | null; withFileTypes?: false } | string | null): Promise<string[] | Buffer[]>;
-
- /**
- * Asynchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options If called with `withFileTypes: true` the result data will be an array of Dirent
- */
- function __promisify__(path: PathLike, options: { encoding?: string | null; withFileTypes: true }): Promise<Dirent[]>;
- }
-
- /**
- * Synchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readdirSync(path: PathLike, options?: { encoding: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | null): string[];
-
- /**
- * Synchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readdirSync(path: PathLike, options: { encoding: "buffer"; withFileTypes?: false } | "buffer"): Buffer[];
-
- /**
- * Synchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readdirSync(path: PathLike, options?: { encoding?: string | null; withFileTypes?: false } | string | null): string[] | Buffer[];
-
- /**
- * Synchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options If called with `withFileTypes: true` the result data will be an array of Dirent.
- */
- function readdirSync(path: PathLike, options: { encoding?: string | null; withFileTypes: true }): Dirent[];
-
- /**
- * Asynchronous close(2) - close a file descriptor.
- * @param fd A file descriptor.
- */
- function close(fd: number, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace close {
- /**
- * Asynchronous close(2) - close a file descriptor.
- * @param fd A file descriptor.
- */
- function __promisify__(fd: number): Promise<void>;
- }
-
- /**
- * Synchronous close(2) - close a file descriptor.
- * @param fd A file descriptor.
- */
- function closeSync(fd: number): void;
-
- /**
- * Asynchronous open(2) - open and possibly create a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.
- */
- function open(path: PathLike, flags: string | number, mode: string | number | undefined | null, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
-
- /**
- * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function open(path: PathLike, flags: string | number, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace open {
- /**
- * Asynchronous open(2) - open and possibly create a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.
- */
- function __promisify__(path: PathLike, flags: string | number, mode?: string | number | null): Promise<number>;
- }
-
- /**
- * Synchronous open(2) - open and possibly create a file, returning a file descriptor..
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.
- */
- function openSync(path: PathLike, flags: string | number, mode?: string | number | null): number;
-
- /**
- * Asynchronously change file timestamps of the file referenced by the supplied path.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param atime The last access time. If a string is provided, it will be coerced to number.
- * @param mtime The last modified time. If a string is provided, it will be coerced to number.
- */
- function utimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace utimes {
- /**
- * Asynchronously change file timestamps of the file referenced by the supplied path.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param atime The last access time. If a string is provided, it will be coerced to number.
- * @param mtime The last modified time. If a string is provided, it will be coerced to number.
- */
- function __promisify__(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise<void>;
- }
-
- /**
- * Synchronously change file timestamps of the file referenced by the supplied path.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param atime The last access time. If a string is provided, it will be coerced to number.
- * @param mtime The last modified time. If a string is provided, it will be coerced to number.
- */
- function utimesSync(path: PathLike, atime: string | number | Date, mtime: string | number | Date): void;
-
- /**
- * Asynchronously change file timestamps of the file referenced by the supplied file descriptor.
- * @param fd A file descriptor.
- * @param atime The last access time. If a string is provided, it will be coerced to number.
- * @param mtime The last modified time. If a string is provided, it will be coerced to number.
- */
- function futimes(fd: number, atime: string | number | Date, mtime: string | number | Date, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace futimes {
- /**
- * Asynchronously change file timestamps of the file referenced by the supplied file descriptor.
- * @param fd A file descriptor.
- * @param atime The last access time. If a string is provided, it will be coerced to number.
- * @param mtime The last modified time. If a string is provided, it will be coerced to number.
- */
- function __promisify__(fd: number, atime: string | number | Date, mtime: string | number | Date): Promise<void>;
- }
-
- /**
- * Synchronously change file timestamps of the file referenced by the supplied file descriptor.
- * @param fd A file descriptor.
- * @param atime The last access time. If a string is provided, it will be coerced to number.
- * @param mtime The last modified time. If a string is provided, it will be coerced to number.
- */
- function futimesSync(fd: number, atime: string | number | Date, mtime: string | number | Date): void;
-
- /**
- * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device.
- * @param fd A file descriptor.
- */
- function fsync(fd: number, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace fsync {
- /**
- * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device.
- * @param fd A file descriptor.
- */
- function __promisify__(fd: number): Promise<void>;
- }
-
- /**
- * Synchronous fsync(2) - synchronize a file's in-core state with the underlying storage device.
- * @param fd A file descriptor.
- */
- function fsyncSync(fd: number): void;
-
- /**
- * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
- * @param fd A file descriptor.
- * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
- * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
- * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
- */
- function write<TBuffer extends NodeJS.ArrayBufferView>(
- fd: number,
- buffer: TBuffer,
- offset: number | undefined | null,
- length: number | undefined | null,
- position: number | undefined | null,
- callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void,
- ): void;
-
- /**
- * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
- * @param fd A file descriptor.
- * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
- * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
- */
- function write<TBuffer extends NodeJS.ArrayBufferView>(
- fd: number,
- buffer: TBuffer,
- offset: number | undefined | null,
- length: number | undefined | null,
- callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void,
- ): void;
-
- /**
- * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
- * @param fd A file descriptor.
- * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
- */
- function write<TBuffer extends NodeJS.ArrayBufferView>(
- fd: number,
- buffer: TBuffer,
- offset: number | undefined | null,
- callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void
- ): void;
-
- /**
- * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
- * @param fd A file descriptor.
- */
- function write<TBuffer extends NodeJS.ArrayBufferView>(fd: number, buffer: TBuffer, callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void): void;
-
- /**
- * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
- * @param fd A file descriptor.
- * @param string A string to write. If something other than a string is supplied it will be coerced to a string.
- * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
- * @param encoding The expected string encoding.
- */
- function write(
- fd: number,
- string: any,
- position: number | undefined | null,
- encoding: string | undefined | null,
- callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void,
- ): void;
-
- /**
- * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
- * @param fd A file descriptor.
- * @param string A string to write. If something other than a string is supplied it will be coerced to a string.
- * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
- */
- function write(fd: number, string: any, position: number | undefined | null, callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void): void;
-
- /**
- * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
- * @param fd A file descriptor.
- * @param string A string to write. If something other than a string is supplied it will be coerced to a string.
- */
- function write(fd: number, string: any, callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace write {
- /**
- * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
- * @param fd A file descriptor.
- * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
- * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
- * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
- */
- function __promisify__<TBuffer extends NodeJS.ArrayBufferView>(
- fd: number,
- buffer?: TBuffer,
- offset?: number,
- length?: number,
- position?: number | null,
- ): Promise<{ bytesWritten: number, buffer: TBuffer }>;
-
- /**
- * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
- * @param fd A file descriptor.
- * @param string A string to write. If something other than a string is supplied it will be coerced to a string.
- * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
- * @param encoding The expected string encoding.
- */
- function __promisify__(fd: number, string: any, position?: number | null, encoding?: string | null): Promise<{ bytesWritten: number, buffer: string }>;
- }
-
- /**
- * Synchronously writes `buffer` to the file referenced by the supplied file descriptor, returning the number of bytes written.
- * @param fd A file descriptor.
- * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
- * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
- * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
- */
- function writeSync(fd: number, buffer: NodeJS.ArrayBufferView, offset?: number | null, length?: number | null, position?: number | null): number;
-
- /**
- * Synchronously writes `string` to the file referenced by the supplied file descriptor, returning the number of bytes written.
- * @param fd A file descriptor.
- * @param string A string to write. If something other than a string is supplied it will be coerced to a string.
- * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
- * @param encoding The expected string encoding.
- */
- function writeSync(fd: number, string: any, position?: number | null, encoding?: string | null): number;
-
- /**
- * Asynchronously reads data from the file referenced by the supplied file descriptor.
- * @param fd A file descriptor.
- * @param buffer The buffer that the data will be written to.
- * @param offset The offset in the buffer at which to start writing.
- * @param length The number of bytes to read.
- * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.
- */
- function read<TBuffer extends NodeJS.ArrayBufferView>(
- fd: number,
- buffer: TBuffer,
- offset: number,
- length: number,
- position: number | null,
- callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: TBuffer) => void,
- ): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace read {
- /**
- * @param fd A file descriptor.
- * @param buffer The buffer that the data will be written to.
- * @param offset The offset in the buffer at which to start writing.
- * @param length The number of bytes to read.
- * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.
- */
- function __promisify__<TBuffer extends NodeJS.ArrayBufferView>(
- fd: number,
- buffer: TBuffer,
- offset: number,
- length: number,
- position: number | null
- ): Promise<{ bytesRead: number, buffer: TBuffer }>;
- }
-
- /**
- * Synchronously reads data from the file referenced by the supplied file descriptor, returning the number of bytes read.
- * @param fd A file descriptor.
- * @param buffer The buffer that the data will be written to.
- * @param offset The offset in the buffer at which to start writing.
- * @param length The number of bytes to read.
- * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.
- */
- function readSync(fd: number, buffer: NodeJS.ArrayBufferView, offset: number, length: number, position: number | null): number;
-
- /**
- * Asynchronously reads the entire contents of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param options An object that may contain an optional flag.
- * If a flag is not provided, it defaults to `'r'`.
- */
- function readFile(path: PathLike | number, options: { encoding?: null; flag?: string; } | undefined | null, callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void): void;
-
- /**
- * Asynchronously reads the entire contents of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
- * If a flag is not provided, it defaults to `'r'`.
- */
- function readFile(path: PathLike | number, options: { encoding: string; flag?: string; } | string, callback: (err: NodeJS.ErrnoException | null, data: string) => void): void;
-
- /**
- * Asynchronously reads the entire contents of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
- * If a flag is not provided, it defaults to `'r'`.
- */
- function readFile(
- path: PathLike | number,
- options: { encoding?: string | null; flag?: string; } | string | undefined | null,
- callback: (err: NodeJS.ErrnoException | null, data: string | Buffer) => void,
- ): void;
-
- /**
- * Asynchronously reads the entire contents of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- */
- function readFile(path: PathLike | number, callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace readFile {
- /**
- * Asynchronously reads the entire contents of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param options An object that may contain an optional flag.
- * If a flag is not provided, it defaults to `'r'`.
- */
- function __promisify__(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Promise<Buffer>;
-
- /**
- * Asynchronously reads the entire contents of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
- * If a flag is not provided, it defaults to `'r'`.
- */
- function __promisify__(path: PathLike | number, options: { encoding: string; flag?: string; } | string): Promise<string>;
-
- /**
- * Asynchronously reads the entire contents of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
- * If a flag is not provided, it defaults to `'r'`.
- */
- function __promisify__(path: PathLike | number, options?: { encoding?: string | null; flag?: string; } | string | null): Promise<string | Buffer>;
- }
-
- /**
- * Synchronously reads the entire contents of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param options An object that may contain an optional flag. If a flag is not provided, it defaults to `'r'`.
- */
- function readFileSync(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Buffer;
-
- /**
- * Synchronously reads the entire contents of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
- * If a flag is not provided, it defaults to `'r'`.
- */
- function readFileSync(path: PathLike | number, options: { encoding: string; flag?: string; } | string): string;
-
- /**
- * Synchronously reads the entire contents of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
- * If a flag is not provided, it defaults to `'r'`.
- */
- function readFileSync(path: PathLike | number, options?: { encoding?: string | null; flag?: string; } | string | null): string | Buffer;
-
- type WriteFileOptions = { encoding?: string | null; mode?: number | string; flag?: string; } | string | null;
-
- /**
- * Asynchronously writes data to a file, replacing the file if it already exists.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
- * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
- * If `encoding` is not supplied, the default of `'utf8'` is used.
- * If `mode` is not supplied, the default of `0o666` is used.
- * If `mode` is a string, it is parsed as an octal integer.
- * If `flag` is not supplied, the default of `'w'` is used.
- */
- function writeFile(path: PathLike | number, data: any, options: WriteFileOptions, callback: NoParamCallback): void;
-
- /**
- * Asynchronously writes data to a file, replacing the file if it already exists.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
- */
- function writeFile(path: PathLike | number, data: any, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace writeFile {
- /**
- * Asynchronously writes data to a file, replacing the file if it already exists.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
- * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
- * If `encoding` is not supplied, the default of `'utf8'` is used.
- * If `mode` is not supplied, the default of `0o666` is used.
- * If `mode` is a string, it is parsed as an octal integer.
- * If `flag` is not supplied, the default of `'w'` is used.
- */
- function __promisify__(path: PathLike | number, data: any, options?: WriteFileOptions): Promise<void>;
- }
-
- /**
- * Synchronously writes data to a file, replacing the file if it already exists.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
- * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
- * If `encoding` is not supplied, the default of `'utf8'` is used.
- * If `mode` is not supplied, the default of `0o666` is used.
- * If `mode` is a string, it is parsed as an octal integer.
- * If `flag` is not supplied, the default of `'w'` is used.
- */
- function writeFileSync(path: PathLike | number, data: any, options?: WriteFileOptions): void;
-
- /**
- * Asynchronously append data to a file, creating the file if it does not exist.
- * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
- * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
- * If `encoding` is not supplied, the default of `'utf8'` is used.
- * If `mode` is not supplied, the default of `0o666` is used.
- * If `mode` is a string, it is parsed as an octal integer.
- * If `flag` is not supplied, the default of `'a'` is used.
- */
- function appendFile(file: PathLike | number, data: any, options: WriteFileOptions, callback: NoParamCallback): void;
-
- /**
- * Asynchronously append data to a file, creating the file if it does not exist.
- * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
- */
- function appendFile(file: PathLike | number, data: any, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace appendFile {
- /**
- * Asynchronously append data to a file, creating the file if it does not exist.
- * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
- * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
- * If `encoding` is not supplied, the default of `'utf8'` is used.
- * If `mode` is not supplied, the default of `0o666` is used.
- * If `mode` is a string, it is parsed as an octal integer.
- * If `flag` is not supplied, the default of `'a'` is used.
- */
- function __promisify__(file: PathLike | number, data: any, options?: WriteFileOptions): Promise<void>;
- }
-
- /**
- * Synchronously append data to a file, creating the file if it does not exist.
- * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
- * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
- * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
- * If `encoding` is not supplied, the default of `'utf8'` is used.
- * If `mode` is not supplied, the default of `0o666` is used.
- * If `mode` is a string, it is parsed as an octal integer.
- * If `flag` is not supplied, the default of `'a'` is used.
- */
- function appendFileSync(file: PathLike | number, data: any, options?: WriteFileOptions): void;
-
- /**
- * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed.
- */
- function watchFile(filename: PathLike, options: { persistent?: boolean; interval?: number; } | undefined, listener: (curr: Stats, prev: Stats) => void): void;
-
- /**
- * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed.
- * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function watchFile(filename: PathLike, listener: (curr: Stats, prev: Stats) => void): void;
-
- /**
- * Stop watching for changes on `filename`.
- * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function unwatchFile(filename: PathLike, listener?: (curr: Stats, prev: Stats) => void): void;
-
- /**
- * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
- * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.
- * If `encoding` is not supplied, the default of `'utf8'` is used.
- * If `persistent` is not supplied, the default of `true` is used.
- * If `recursive` is not supplied, the default of `false` is used.
- */
- function watch(
- filename: PathLike,
- options: { encoding?: BufferEncoding | null, persistent?: boolean, recursive?: boolean } | BufferEncoding | undefined | null,
- listener?: (event: string, filename: string) => void,
- ): FSWatcher;
-
- /**
- * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
- * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.
- * If `encoding` is not supplied, the default of `'utf8'` is used.
- * If `persistent` is not supplied, the default of `true` is used.
- * If `recursive` is not supplied, the default of `false` is used.
- */
- function watch(filename: PathLike, options: { encoding: "buffer", persistent?: boolean, recursive?: boolean } | "buffer", listener?: (event: string, filename: Buffer) => void): FSWatcher;
-
- /**
- * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
- * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.
- * If `encoding` is not supplied, the default of `'utf8'` is used.
- * If `persistent` is not supplied, the default of `true` is used.
- * If `recursive` is not supplied, the default of `false` is used.
- */
- function watch(
- filename: PathLike,
- options: { encoding?: string | null, persistent?: boolean, recursive?: boolean } | string | null,
- listener?: (event: string, filename: string | Buffer) => void,
- ): FSWatcher;
-
- /**
- * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
- * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function watch(filename: PathLike, listener?: (event: string, filename: string) => any): FSWatcher;
-
- /**
- * Asynchronously tests whether or not the given path exists by checking with the file system.
- * @deprecated
- * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function exists(path: PathLike, callback: (exists: boolean) => void): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace exists {
- /**
- * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function __promisify__(path: PathLike): Promise<boolean>;
- }
-
- /**
- * Synchronously tests whether or not the given path exists by checking with the file system.
- * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function existsSync(path: PathLike): boolean;
-
- namespace constants {
- // File Access Constants
-
- /** Constant for fs.access(). File is visible to the calling process. */
- const F_OK: number;
-
- /** Constant for fs.access(). File can be read by the calling process. */
- const R_OK: number;
-
- /** Constant for fs.access(). File can be written by the calling process. */
- const W_OK: number;
-
- /** Constant for fs.access(). File can be executed by the calling process. */
- const X_OK: number;
-
- // File Copy Constants
-
- /** Constant for fs.copyFile. Flag indicating the destination file should not be overwritten if it already exists. */
- const COPYFILE_EXCL: number;
-
- /**
- * Constant for fs.copyFile. copy operation will attempt to create a copy-on-write reflink.
- * If the underlying platform does not support copy-on-write, then a fallback copy mechanism is used.
- */
- const COPYFILE_FICLONE: number;
-
- /**
- * Constant for fs.copyFile. Copy operation will attempt to create a copy-on-write reflink.
- * If the underlying platform does not support copy-on-write, then the operation will fail with an error.
- */
- const COPYFILE_FICLONE_FORCE: number;
-
- // File Open Constants
-
- /** Constant for fs.open(). Flag indicating to open a file for read-only access. */
- const O_RDONLY: number;
-
- /** Constant for fs.open(). Flag indicating to open a file for write-only access. */
- const O_WRONLY: number;
-
- /** Constant for fs.open(). Flag indicating to open a file for read-write access. */
- const O_RDWR: number;
-
- /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */
- const O_CREAT: number;
-
- /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */
- const O_EXCL: number;
-
- /**
- * Constant for fs.open(). Flag indicating that if path identifies a terminal device,
- * opening the path shall not cause that terminal to become the controlling terminal for the process
- * (if the process does not already have one).
- */
- const O_NOCTTY: number;
-
- /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */
- const O_TRUNC: number;
-
- /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */
- const O_APPEND: number;
-
- /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */
- const O_DIRECTORY: number;
-
- /**
- * constant for fs.open().
- * Flag indicating reading accesses to the file system will no longer result in
- * an update to the atime information associated with the file.
- * This flag is available on Linux operating systems only.
- */
- const O_NOATIME: number;
-
- /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */
- const O_NOFOLLOW: number;
-
- /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */
- const O_SYNC: number;
-
- /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O with write operations waiting for data integrity. */
- const O_DSYNC: number;
-
- /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */
- const O_SYMLINK: number;
-
- /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */
- const O_DIRECT: number;
-
- /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */
- const O_NONBLOCK: number;
-
- // File Type Constants
-
- /** Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code. */
- const S_IFMT: number;
-
- /** Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file. */
- const S_IFREG: number;
-
- /** Constant for fs.Stats mode property for determining a file's type. File type constant for a directory. */
- const S_IFDIR: number;
-
- /** Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file. */
- const S_IFCHR: number;
-
- /** Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file. */
- const S_IFBLK: number;
-
- /** Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe. */
- const S_IFIFO: number;
-
- /** Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link. */
- const S_IFLNK: number;
-
- /** Constant for fs.Stats mode property for determining a file's type. File type constant for a socket. */
- const S_IFSOCK: number;
-
- // File Mode Constants
-
- /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */
- const S_IRWXU: number;
-
- /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */
- const S_IRUSR: number;
-
- /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */
- const S_IWUSR: number;
-
- /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */
- const S_IXUSR: number;
-
- /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */
- const S_IRWXG: number;
-
- /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */
- const S_IRGRP: number;
-
- /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */
- const S_IWGRP: number;
-
- /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */
- const S_IXGRP: number;
-
- /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */
- const S_IRWXO: number;
-
- /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */
- const S_IROTH: number;
-
- /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */
- const S_IWOTH: number;
-
- /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */
- const S_IXOTH: number;
-
- /**
- * When set, a memory file mapping is used to access the file. This flag
- * is available on Windows operating systems only. On other operating systems,
- * this flag is ignored.
- */
- const UV_FS_O_FILEMAP: number;
- }
-
- /**
- * Asynchronously tests a user's permissions for the file specified by path.
- * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function access(path: PathLike, mode: number | undefined, callback: NoParamCallback): void;
-
- /**
- * Asynchronously tests a user's permissions for the file specified by path.
- * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function access(path: PathLike, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace access {
- /**
- * Asynchronously tests a user's permissions for the file specified by path.
- * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function __promisify__(path: PathLike, mode?: number): Promise<void>;
- }
-
- /**
- * Synchronously tests a user's permissions for the file specified by path.
- * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function accessSync(path: PathLike, mode?: number): void;
-
- /**
- * Returns a new `ReadStream` object.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function createReadStream(path: PathLike, options?: string | {
- flags?: string;
- encoding?: string;
- fd?: number;
- mode?: number;
- autoClose?: boolean;
- /**
- * @default false
- */
- emitClose?: boolean;
- start?: number;
- end?: number;
- highWaterMark?: number;
- }): ReadStream;
-
- /**
- * Returns a new `WriteStream` object.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function createWriteStream(path: PathLike, options?: string | {
- flags?: string;
- encoding?: string;
- fd?: number;
- mode?: number;
- autoClose?: boolean;
- emitClose?: boolean;
- start?: number;
- highWaterMark?: number;
- }): WriteStream;
-
- /**
- * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device.
- * @param fd A file descriptor.
- */
- function fdatasync(fd: number, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace fdatasync {
- /**
- * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device.
- * @param fd A file descriptor.
- */
- function __promisify__(fd: number): Promise<void>;
- }
-
- /**
- * Synchronous fdatasync(2) - synchronize a file's in-core state with storage device.
- * @param fd A file descriptor.
- */
- function fdatasyncSync(fd: number): void;
-
- /**
- * Asynchronously copies src to dest. By default, dest is overwritten if it already exists.
- * No arguments other than a possible exception are given to the callback function.
- * Node.js makes no guarantees about the atomicity of the copy operation.
- * If an error occurs after the destination file has been opened for writing, Node.js will attempt
- * to remove the destination.
- * @param src A path to the source file.
- * @param dest A path to the destination file.
- */
- function copyFile(src: PathLike, dest: PathLike, callback: NoParamCallback): void;
- /**
- * Asynchronously copies src to dest. By default, dest is overwritten if it already exists.
- * No arguments other than a possible exception are given to the callback function.
- * Node.js makes no guarantees about the atomicity of the copy operation.
- * If an error occurs after the destination file has been opened for writing, Node.js will attempt
- * to remove the destination.
- * @param src A path to the source file.
- * @param dest A path to the destination file.
- * @param flags An integer that specifies the behavior of the copy operation. The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists.
- */
- function copyFile(src: PathLike, dest: PathLike, flags: number, callback: NoParamCallback): void;
-
- // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
- namespace copyFile {
- /**
- * Asynchronously copies src to dest. By default, dest is overwritten if it already exists.
- * No arguments other than a possible exception are given to the callback function.
- * Node.js makes no guarantees about the atomicity of the copy operation.
- * If an error occurs after the destination file has been opened for writing, Node.js will attempt
- * to remove the destination.
- * @param src A path to the source file.
- * @param dest A path to the destination file.
- * @param flags An optional integer that specifies the behavior of the copy operation.
- * The only supported flag is fs.constants.COPYFILE_EXCL,
- * which causes the copy operation to fail if dest already exists.
- */
- function __promisify__(src: PathLike, dst: PathLike, flags?: number): Promise<void>;
- }
-
- /**
- * Synchronously copies src to dest. By default, dest is overwritten if it already exists.
- * Node.js makes no guarantees about the atomicity of the copy operation.
- * If an error occurs after the destination file has been opened for writing, Node.js will attempt
- * to remove the destination.
- * @param src A path to the source file.
- * @param dest A path to the destination file.
- * @param flags An optional integer that specifies the behavior of the copy operation.
- * The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists.
- */
- function copyFileSync(src: PathLike, dest: PathLike, flags?: number): void;
-
- /**
- * Write an array of ArrayBufferViews to the file specified by fd using writev().
- * position is the offset from the beginning of the file where this data should be written.
- * It is unsafe to use fs.writev() multiple times on the same file without waiting for the callback. For this scenario, use fs.createWriteStream().
- * On Linux, positional writes don't work when the file is opened in append mode.
- * The kernel ignores the position argument and always appends the data to the end of the file.
- */
- function writev(
- fd: number,
- buffers: NodeJS.ArrayBufferView[],
- cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void
- ): void;
- function writev(
- fd: number,
- buffers: NodeJS.ArrayBufferView[],
- position: number,
- cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void
- ): void;
-
- interface WriteVResult {
- bytesWritten: number;
- buffers: NodeJS.ArrayBufferView[];
- }
-
- namespace writev {
- function __promisify__(fd: number, buffers: NodeJS.ArrayBufferView[], position?: number): Promise<WriteVResult>;
- }
-
- /**
- * See `writev`.
- */
- function writevSync(fd: number, buffers: NodeJS.ArrayBufferView[], position?: number): number;
-
- interface OpenDirOptions {
- encoding?: BufferEncoding;
- /**
- * Number of directory entries that are buffered
- * internally when reading from the directory. Higher values lead to better
- * performance but higher memory usage.
- * @default 32
- */
- bufferSize?: number;
- }
-
- function opendirSync(path: string, options?: OpenDirOptions): Dir;
-
- function opendir(path: string, cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void): void;
- function opendir(path: string, options: OpenDirOptions, cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void): void;
-
- namespace opendir {
- function __promisify__(path: string, options?: OpenDirOptions): Promise<Dir>;
- }
-
- namespace promises {
- interface FileHandle {
- /**
- * Gets the file descriptor for this file handle.
- */
- readonly fd: number;
-
- /**
- * Asynchronously append data to a file, creating the file if it does not exist. The underlying file will _not_ be closed automatically.
- * The `FileHandle` must have been opened for appending.
- * @param data The data to write. If something other than a `Buffer` or `Uint8Array` is provided, the value is coerced to a string.
- * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
- * If `encoding` is not supplied, the default of `'utf8'` is used.
- * If `mode` is not supplied, the default of `0o666` is used.
- * If `mode` is a string, it is parsed as an octal integer.
- * If `flag` is not supplied, the default of `'a'` is used.
- */
- appendFile(data: any, options?: { encoding?: string | null, mode?: string | number, flag?: string | number } | string | null): Promise<void>;
-
- /**
- * Asynchronous fchown(2) - Change ownership of a file.
- */
- chown(uid: number, gid: number): Promise<void>;
-
- /**
- * Asynchronous fchmod(2) - Change permissions of a file.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
- */
- chmod(mode: string | number): Promise<void>;
-
- /**
- * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device.
- */
- datasync(): Promise<void>;
-
- /**
- * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device.
- */
- sync(): Promise<void>;
-
- /**
- * Asynchronously reads data from the file.
- * The `FileHandle` must have been opened for reading.
- * @param buffer The buffer that the data will be written to.
- * @param offset The offset in the buffer at which to start writing.
- * @param length The number of bytes to read.
- * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.
- */
- read<TBuffer extends Uint8Array>(buffer: TBuffer, offset?: number | null, length?: number | null, position?: number | null): Promise<{ bytesRead: number, buffer: TBuffer }>;
-
- /**
- * Asynchronously reads the entire contents of a file. The underlying file will _not_ be closed automatically.
- * The `FileHandle` must have been opened for reading.
- * @param options An object that may contain an optional flag.
- * If a flag is not provided, it defaults to `'r'`.
- */
- readFile(options?: { encoding?: null, flag?: string | number } | null): Promise<Buffer>;
-
- /**
- * Asynchronously reads the entire contents of a file. The underlying file will _not_ be closed automatically.
- * The `FileHandle` must have been opened for reading.
- * @param options An object that may contain an optional flag.
- * If a flag is not provided, it defaults to `'r'`.
- */
- readFile(options: { encoding: BufferEncoding, flag?: string | number } | BufferEncoding): Promise<string>;
-
- /**
- * Asynchronously reads the entire contents of a file. The underlying file will _not_ be closed automatically.
- * The `FileHandle` must have been opened for reading.
- * @param options An object that may contain an optional flag.
- * If a flag is not provided, it defaults to `'r'`.
- */
- readFile(options?: { encoding?: string | null, flag?: string | number } | string | null): Promise<string | Buffer>;
-
- /**
- * Asynchronous fstat(2) - Get file status.
- */
- stat(): Promise<Stats>;
-
- /**
- * Asynchronous ftruncate(2) - Truncate a file to a specified length.
- * @param len If not specified, defaults to `0`.
- */
- truncate(len?: number): Promise<void>;
-
- /**
- * Asynchronously change file timestamps of the file.
- * @param atime The last access time. If a string is provided, it will be coerced to number.
- * @param mtime The last modified time. If a string is provided, it will be coerced to number.
- */
- utimes(atime: string | number | Date, mtime: string | number | Date): Promise<void>;
-
- /**
- * Asynchronously writes `buffer` to the file.
- * The `FileHandle` must have been opened for writing.
- * @param buffer The buffer that the data will be written to.
- * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
- * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
- * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
- */
- write<TBuffer extends Uint8Array>(buffer: TBuffer, offset?: number | null, length?: number | null, position?: number | null): Promise<{ bytesWritten: number, buffer: TBuffer }>;
-
- /**
- * Asynchronously writes `string` to the file.
- * The `FileHandle` must have been opened for writing.
- * It is unsafe to call `write()` multiple times on the same file without waiting for the `Promise`
- * to be resolved (or rejected). For this scenario, `fs.createWriteStream` is strongly recommended.
- * @param string A string to write. If something other than a string is supplied it will be coerced to a string.
- * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
- * @param encoding The expected string encoding.
- */
- write(data: any, position?: number | null, encoding?: string | null): Promise<{ bytesWritten: number, buffer: string }>;
-
- /**
- * Asynchronously writes data to a file, replacing the file if it already exists. The underlying file will _not_ be closed automatically.
- * The `FileHandle` must have been opened for writing.
- * It is unsafe to call `writeFile()` multiple times on the same file without waiting for the `Promise` to be resolved (or rejected).
- * @param data The data to write. If something other than a `Buffer` or `Uint8Array` is provided, the value is coerced to a string.
- * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
- * If `encoding` is not supplied, the default of `'utf8'` is used.
- * If `mode` is not supplied, the default of `0o666` is used.
- * If `mode` is a string, it is parsed as an octal integer.
- * If `flag` is not supplied, the default of `'w'` is used.
- */
- writeFile(data: any, options?: { encoding?: string | null, mode?: string | number, flag?: string | number } | string | null): Promise<void>;
-
- /**
- * See `fs.writev` promisified version.
- */
- writev(buffers: NodeJS.ArrayBufferView[], position?: number): Promise<WriteVResult>;
-
- /**
- * Asynchronous close(2) - close a `FileHandle`.
- */
- close(): Promise<void>;
- }
-
- /**
- * Asynchronously tests a user's permissions for the file specified by path.
- * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function access(path: PathLike, mode?: number): Promise<void>;
-
- /**
- * Asynchronously copies `src` to `dest`. By default, `dest` is overwritten if it already exists.
- * Node.js makes no guarantees about the atomicity of the copy operation.
- * If an error occurs after the destination file has been opened for writing, Node.js will attempt
- * to remove the destination.
- * @param src A path to the source file.
- * @param dest A path to the destination file.
- * @param flags An optional integer that specifies the behavior of the copy operation. The only
- * supported flag is `fs.constants.COPYFILE_EXCL`, which causes the copy operation to fail if
- * `dest` already exists.
- */
- function copyFile(src: PathLike, dest: PathLike, flags?: number): Promise<void>;
-
- /**
- * Asynchronous open(2) - open and possibly create a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not
- * supplied, defaults to `0o666`.
- */
- function open(path: PathLike, flags: string | number, mode?: string | number): Promise<FileHandle>;
-
- /**
- * Asynchronously reads data from the file referenced by the supplied `FileHandle`.
- * @param handle A `FileHandle`.
- * @param buffer The buffer that the data will be written to.
- * @param offset The offset in the buffer at which to start writing.
- * @param length The number of bytes to read.
- * @param position The offset from the beginning of the file from which data should be read. If
- * `null`, data will be read from the current position.
- */
- function read<TBuffer extends Uint8Array>(
- handle: FileHandle,
- buffer: TBuffer,
- offset?: number | null,
- length?: number | null,
- position?: number | null,
- ): Promise<{ bytesRead: number, buffer: TBuffer }>;
-
- /**
- * Asynchronously writes `buffer` to the file referenced by the supplied `FileHandle`.
- * It is unsafe to call `fsPromises.write()` multiple times on the same file without waiting for the `Promise`
- * to be resolved (or rejected). For this scenario, `fs.createWriteStream` is strongly recommended.
- * @param handle A `FileHandle`.
- * @param buffer The buffer that the data will be written to.
- * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
- * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
- * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
- */
- function write<TBuffer extends Uint8Array>(
- handle: FileHandle,
- buffer: TBuffer,
- offset?: number | null,
- length?: number | null, position?: number | null): Promise<{ bytesWritten: number, buffer: TBuffer }>;
-
- /**
- * Asynchronously writes `string` to the file referenced by the supplied `FileHandle`.
- * It is unsafe to call `fsPromises.write()` multiple times on the same file without waiting for the `Promise`
- * to be resolved (or rejected). For this scenario, `fs.createWriteStream` is strongly recommended.
- * @param handle A `FileHandle`.
- * @param string A string to write. If something other than a string is supplied it will be coerced to a string.
- * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
- * @param encoding The expected string encoding.
- */
- function write(handle: FileHandle, string: any, position?: number | null, encoding?: string | null): Promise<{ bytesWritten: number, buffer: string }>;
-
- /**
- * Asynchronous rename(2) - Change the name or location of a file or directory.
- * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- */
- function rename(oldPath: PathLike, newPath: PathLike): Promise<void>;
-
- /**
- * Asynchronous truncate(2) - Truncate a file to a specified length.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param len If not specified, defaults to `0`.
- */
- function truncate(path: PathLike, len?: number): Promise<void>;
-
- /**
- * Asynchronous ftruncate(2) - Truncate a file to a specified length.
- * @param handle A `FileHandle`.
- * @param len If not specified, defaults to `0`.
- */
- function ftruncate(handle: FileHandle, len?: number): Promise<void>;
-
- /**
- * Asynchronous rmdir(2) - delete a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function rmdir(path: PathLike, options?: RmDirAsyncOptions): Promise<void>;
-
- /**
- * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device.
- * @param handle A `FileHandle`.
- */
- function fdatasync(handle: FileHandle): Promise<void>;
-
- /**
- * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device.
- * @param handle A `FileHandle`.
- */
- function fsync(handle: FileHandle): Promise<void>;
-
- /**
- * Asynchronous mkdir(2) - create a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
- * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
- */
- function mkdir(path: PathLike, options?: number | string | MakeDirectoryOptions | null): Promise<void>;
-
- /**
- * Asynchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readdir(path: PathLike, options?: { encoding?: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | null): Promise<string[]>;
-
- /**
- * Asynchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readdir(path: PathLike, options: { encoding: "buffer"; withFileTypes?: false } | "buffer"): Promise<Buffer[]>;
-
- /**
- * Asynchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readdir(path: PathLike, options?: { encoding?: string | null; withFileTypes?: false } | string | null): Promise<string[] | Buffer[]>;
-
- /**
- * Asynchronous readdir(3) - read a directory.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options If called with `withFileTypes: true` the result data will be an array of Dirent.
- */
- function readdir(path: PathLike, options: { encoding?: string | null; withFileTypes: true }): Promise<Dirent[]>;
-
- /**
- * Asynchronous readlink(2) - read value of a symbolic link.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readlink(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise<string>;
-
- /**
- * Asynchronous readlink(2) - read value of a symbolic link.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readlink(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise<Buffer>;
-
- /**
- * Asynchronous readlink(2) - read value of a symbolic link.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function readlink(path: PathLike, options?: { encoding?: string | null } | string | null): Promise<string | Buffer>;
-
- /**
- * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
- * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
- * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
- * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms).
- * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path.
- */
- function symlink(target: PathLike, path: PathLike, type?: string | null): Promise<void>;
-
- /**
- * Asynchronous fstat(2) - Get file status.
- * @param handle A `FileHandle`.
- */
- function fstat(handle: FileHandle): Promise<Stats>;
-
- /**
- * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function lstat(path: PathLike): Promise<Stats>;
-
- /**
- * Asynchronous stat(2) - Get file status.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function stat(path: PathLike): Promise<Stats>;
-
- /**
- * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file.
- * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function link(existingPath: PathLike, newPath: PathLike): Promise<void>;
-
- /**
- * Asynchronous unlink(2) - delete a name and possibly the file it refers to.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function unlink(path: PathLike): Promise<void>;
-
- /**
- * Asynchronous fchmod(2) - Change permissions of a file.
- * @param handle A `FileHandle`.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
- */
- function fchmod(handle: FileHandle, mode: string | number): Promise<void>;
-
- /**
- * Asynchronous chmod(2) - Change permissions of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
- */
- function chmod(path: PathLike, mode: string | number): Promise<void>;
-
- /**
- * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
- */
- function lchmod(path: PathLike, mode: string | number): Promise<void>;
-
- /**
- * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function lchown(path: PathLike, uid: number, gid: number): Promise<void>;
-
- /**
- * Asynchronous fchown(2) - Change ownership of a file.
- * @param handle A `FileHandle`.
- */
- function fchown(handle: FileHandle, uid: number, gid: number): Promise<void>;
-
- /**
- * Asynchronous chown(2) - Change ownership of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- */
- function chown(path: PathLike, uid: number, gid: number): Promise<void>;
-
- /**
- * Asynchronously change file timestamps of the file referenced by the supplied path.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param atime The last access time. If a string is provided, it will be coerced to number.
- * @param mtime The last modified time. If a string is provided, it will be coerced to number.
- */
- function utimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise<void>;
-
- /**
- * Asynchronously change file timestamps of the file referenced by the supplied `FileHandle`.
- * @param handle A `FileHandle`.
- * @param atime The last access time. If a string is provided, it will be coerced to number.
- * @param mtime The last modified time. If a string is provided, it will be coerced to number.
- */
- function futimes(handle: FileHandle, atime: string | number | Date, mtime: string | number | Date): Promise<void>;
-
- /**
- * Asynchronous realpath(3) - return the canonicalized absolute pathname.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function realpath(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise<string>;
-
- /**
- * Asynchronous realpath(3) - return the canonicalized absolute pathname.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function realpath(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise<Buffer>;
-
- /**
- * Asynchronous realpath(3) - return the canonicalized absolute pathname.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function realpath(path: PathLike, options?: { encoding?: string | null } | string | null): Promise<string | Buffer>;
-
- /**
- * Asynchronously creates a unique temporary directory.
- * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function mkdtemp(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise<string>;
-
- /**
- * Asynchronously creates a unique temporary directory.
- * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function mkdtemp(prefix: string, options: { encoding: "buffer" } | "buffer"): Promise<Buffer>;
-
- /**
- * Asynchronously creates a unique temporary directory.
- * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory.
- * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
- */
- function mkdtemp(prefix: string, options?: { encoding?: string | null } | string | null): Promise<string | Buffer>;
-
- /**
- * Asynchronously writes data to a file, replacing the file if it already exists.
- * It is unsafe to call `fsPromises.writeFile()` multiple times on the same file without waiting for the `Promise` to be resolved (or rejected).
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically.
- * @param data The data to write. If something other than a `Buffer` or `Uint8Array` is provided, the value is coerced to a string.
- * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
- * If `encoding` is not supplied, the default of `'utf8'` is used.
- * If `mode` is not supplied, the default of `0o666` is used.
- * If `mode` is a string, it is parsed as an octal integer.
- * If `flag` is not supplied, the default of `'w'` is used.
- */
- function writeFile(path: PathLike | FileHandle, data: any, options?: { encoding?: string | null, mode?: string | number, flag?: string | number } | string | null): Promise<void>;
-
- /**
- * Asynchronously append data to a file, creating the file if it does not exist.
- * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
- * URL support is _experimental_.
- * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically.
- * @param data The data to write. If something other than a `Buffer` or `Uint8Array` is provided, the value is coerced to a string.
- * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
- * If `encoding` is not supplied, the default of `'utf8'` is used.
- * If `mode` is not supplied, the default of `0o666` is used.
- * If `mode` is a string, it is parsed as an octal integer.
- * If `flag` is not supplied, the default of `'a'` is used.
- */
- function appendFile(path: PathLike | FileHandle, data: any, options?: { encoding?: string | null, mode?: string | number, flag?: string | number } | string | null): Promise<void>;
-
- /**
- * Asynchronously reads the entire contents of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically.
- * @param options An object that may contain an optional flag.
- * If a flag is not provided, it defaults to `'r'`.
- */
- function readFile(path: PathLike | FileHandle, options?: { encoding?: null, flag?: string | number } | null): Promise<Buffer>;
-
- /**
- * Asynchronously reads the entire contents of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically.
- * @param options An object that may contain an optional flag.
- * If a flag is not provided, it defaults to `'r'`.
- */
- function readFile(path: PathLike | FileHandle, options: { encoding: BufferEncoding, flag?: string | number } | BufferEncoding): Promise<string>;
-
- /**
- * Asynchronously reads the entire contents of a file.
- * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
- * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically.
- * @param options An object that may contain an optional flag.
- * If a flag is not provided, it defaults to `'r'`.
- */
- function readFile(path: PathLike | FileHandle, options?: { encoding?: string | null, flag?: string | number } | string | null): Promise<string | Buffer>;
-
- function opendir(path: string, options?: OpenDirOptions): Promise<Dir>;
- }
-}
diff --git a/assets/node_modules/@types/node/globals.d.ts b/assets/node_modules/@types/node/globals.d.ts
deleted file mode 100644
index e5fcc20..0000000
--- a/assets/node_modules/@types/node/globals.d.ts
+++ /dev/null
@@ -1,1105 +0,0 @@
-// This needs to be global to avoid TS2403 in case lib.dom.d.ts is present in the same build
-interface Console {
- Console: NodeJS.ConsoleConstructor;
- /**
- * A simple assertion test that verifies whether `value` is truthy.
- * If it is not, an `AssertionError` is thrown.
- * If provided, the error `message` is formatted using `util.format()` and used as the error message.
- */
- assert(value: any, message?: string, ...optionalParams: any[]): void;
- /**
- * When `stdout` is a TTY, calling `console.clear()` will attempt to clear the TTY.
- * When `stdout` is not a TTY, this method does nothing.
- */
- clear(): void;
- /**
- * Maintains an internal counter specific to `label` and outputs to `stdout` the number of times `console.count()` has been called with the given `label`.
- */
- count(label?: string): void;
- /**
- * Resets the internal counter specific to `label`.
- */
- countReset(label?: string): void;
- /**
- * The `console.debug()` function is an alias for {@link console.log()}.
- */
- debug(message?: any, ...optionalParams: any[]): void;
- /**
- * Uses {@link util.inspect()} on `obj` and prints the resulting string to `stdout`.
- * This function bypasses any custom `inspect()` function defined on `obj`.
- */
- dir(obj: any, options?: NodeJS.InspectOptions): void;
- /**
- * This method calls {@link console.log()} passing it the arguments received. Please note that this method does not produce any XML formatting
- */
- dirxml(...data: any[]): void;
- /**
- * Prints to `stderr` with newline.
- */
- error(message?: any, ...optionalParams: any[]): void;
- /**
- * Increases indentation of subsequent lines by two spaces.
- * If one or more `label`s are provided, those are printed first without the additional indentation.
- */
- group(...label: any[]): void;
- /**
- * The `console.groupCollapsed()` function is an alias for {@link console.group()}.
- */
- groupCollapsed(...label: any[]): void;
- /**
- * Decreases indentation of subsequent lines by two spaces.
- */
- groupEnd(): void;
- /**
- * The {@link console.info()} function is an alias for {@link console.log()}.
- */
- info(message?: any, ...optionalParams: any[]): void;
- /**
- * Prints to `stdout` with newline.
- */
- log(message?: any, ...optionalParams: any[]): void;
- /**
- * This method does not display anything unless used in the inspector.
- * Prints to `stdout` the array `array` formatted as a table.
- */
- table(tabularData: any, properties?: string[]): void;
- /**
- * Starts a timer that can be used to compute the duration of an operation. Timers are identified by a unique `label`.
- */
- time(label?: string): void;
- /**
- * Stops a timer that was previously started by calling {@link console.time()} and prints the result to `stdout`.
- */
- timeEnd(label?: string): void;
- /**
- * For a timer that was previously started by calling {@link console.time()}, prints the elapsed time and other `data` arguments to `stdout`.
- */
- timeLog(label?: string, ...data: any[]): void;
- /**
- * Prints to `stderr` the string 'Trace :', followed by the {@link util.format()} formatted message and stack trace to the current position in the code.
- */
- trace(message?: any, ...optionalParams: any[]): void;
- /**
- * The {@link console.warn()} function is an alias for {@link console.error()}.
- */
- warn(message?: any, ...optionalParams: any[]): void;
-
- // --- Inspector mode only ---
- /**
- * This method does not display anything unless used in the inspector.
- * Starts a JavaScript CPU profile with an optional label.
- */
- profile(label?: string): void;
- /**
- * This method does not display anything unless used in the inspector.
- * Stops the current JavaScript CPU profiling session if one has been started and prints the report to the Profiles panel of the inspector.
- */
- profileEnd(label?: string): void;
- /**
- * This method does not display anything unless used in the inspector.
- * Adds an event with the label `label` to the Timeline panel of the inspector.
- */
- timeStamp(label?: string): void;
-}
-
-// Declare "static" methods in Error
-interface ErrorConstructor {
- /** Create .stack property on a target object */
- captureStackTrace(targetObject: object, constructorOpt?: Function): void;
-
- /**
- * Optional override for formatting stack traces
- *
- * @see https://github.com/v8/v8/wiki/Stack%20Trace%20API#customizing-stack-traces
- */
- prepareStackTrace?: (err: Error, stackTraces: NodeJS.CallSite[]) => any;
-
- stackTraceLimit: number;
-}
-
-// Node.js ESNEXT support
-interface String {
- /** Removes whitespace from the left end of a string. */
- trimLeft(): string;
- /** Removes whitespace from the right end of a string. */
- trimRight(): string;
-}
-
-interface ImportMeta {
- url: string;
-}
-
-/*-----------------------------------------------*
- * *
- * GLOBAL *
- * *
- ------------------------------------------------*/
-
-// For backwards compability
-interface NodeRequire extends NodeJS.Require {}
-interface RequireResolve extends NodeJS.RequireResolve {}
-interface NodeModule extends NodeJS.Module {}
-
-declare var process: NodeJS.Process;
-declare var global: NodeJS.Global;
-declare var console: Console;
-
-declare var __filename: string;
-declare var __dirname: string;
-
-declare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout;
-declare namespace setTimeout {
- function __promisify__(ms: number): Promise<void>;
- function __promisify__<T>(ms: number, value: T): Promise<T>;
-}
-declare function clearTimeout(timeoutId: NodeJS.Timeout): void;
-declare function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout;
-declare function clearInterval(intervalId: NodeJS.Timeout): void;
-declare function setImmediate(callback: (...args: any[]) => void, ...args: any[]): NodeJS.Immediate;
-declare namespace setImmediate {
- function __promisify__(): Promise<void>;
- function __promisify__<T>(value: T): Promise<T>;
-}
-declare function clearImmediate(immediateId: NodeJS.Immediate): void;
-
-declare function queueMicrotask(callback: () => void): void;
-
-declare var require: NodeRequire;
-declare var module: NodeModule;
-
-// Same as module.exports
-declare var exports: any;
-
-// Buffer class
-type BufferEncoding = "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" | "ucs-2" | "base64" | "latin1" | "binary" | "hex";
-
-/**
- * Raw data is stored in instances of the Buffer class.
- * A Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.
- * Valid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'
- */
-declare class Buffer extends Uint8Array {
- /**
- * Allocates a new buffer containing the given {str}.
- *
- * @param str String to store in buffer.
- * @param encoding encoding to use, optional. Default is 'utf8'
- * @deprecated since v10.0.0 - Use `Buffer.from(string[, encoding])` instead.
- */
- constructor(str: string, encoding?: BufferEncoding);
- /**
- * Allocates a new buffer of {size} octets.
- *
- * @param size count of octets to allocate.
- * @deprecated since v10.0.0 - Use `Buffer.alloc()` instead (also see `Buffer.allocUnsafe()`).
- */
- constructor(size: number);
- /**
- * Allocates a new buffer containing the given {array} of octets.
- *
- * @param array The octets to store.
- * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead.
- */
- constructor(array: Uint8Array);
- /**
- * Produces a Buffer backed by the same allocated memory as
- * the given {ArrayBuffer}/{SharedArrayBuffer}.
- *
- *
- * @param arrayBuffer The ArrayBuffer with which to share memory.
- * @deprecated since v10.0.0 - Use `Buffer.from(arrayBuffer[, byteOffset[, length]])` instead.
- */
- constructor(arrayBuffer: ArrayBuffer | SharedArrayBuffer);
- /**
- * Allocates a new buffer containing the given {array} of octets.
- *
- * @param array The octets to store.
- * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead.
- */
- constructor(array: any[]);
- /**
- * Copies the passed {buffer} data onto a new {Buffer} instance.
- *
- * @param buffer The buffer to copy.
- * @deprecated since v10.0.0 - Use `Buffer.from(buffer)` instead.
- */
- constructor(buffer: Buffer);
- /**
- * 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.
- * The optional {byteOffset} and {length} arguments specify a memory range
- * within the {arrayBuffer} that will be shared by the Buffer.
- *
- * @param arrayBuffer The .buffer property of any TypedArray or a new ArrayBuffer()
- */
- static from(arrayBuffer: ArrayBuffer | SharedArrayBuffer, byteOffset?: number, length?: number): Buffer;
- /**
- * Creates a new Buffer using the passed {data}
- * @param data data to create a new Buffer
- */
- static from(data: number[]): Buffer;
- static from(data: Uint8Array): Buffer;
- /**
- * 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'.
- */
- static from(str: string, encoding?: BufferEncoding): Buffer;
- /**
- * Creates a new Buffer using the passed {data}
- * @param values to create a new Buffer
- */
- static of(...items: number[]): Buffer;
- /**
- * Returns true if {obj} is a Buffer
- *
- * @param obj object to test.
- */
- static isBuffer(obj: any): obj is Buffer;
- /**
- * Returns true if {encoding} is a valid encoding argument.
- * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'
- *
- * @param encoding string to test.
- */
- static isEncoding(encoding: string): encoding is BufferEncoding;
- /**
- * Gives the actual byte length of a string. encoding defaults to 'utf8'.
- * This is not the same as String.prototype.length since that returns the number of characters in a string.
- *
- * @param string string to test.
- * @param encoding encoding used to evaluate (defaults to 'utf8')
- */
- static byteLength(
- string: string | NodeJS.ArrayBufferView | ArrayBuffer | SharedArrayBuffer,
- encoding?: BufferEncoding
- ): number;
- /**
- * Returns a buffer which is the result of concatenating all the buffers in the list together.
- *
- * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer.
- * If the list has exactly one item, then the first item of the list is returned.
- * If the list has more than one item, then a new Buffer is created.
- *
- * @param list An array of Buffer objects to concatenate
- * @param totalLength Total length of the buffers when concatenated.
- * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly.
- */
- static concat(list: Uint8Array[], totalLength?: number): Buffer;
- /**
- * The same as buf1.compare(buf2).
- */
- static compare(buf1: Uint8Array, buf2: Uint8Array): number;
- /**
- * Allocates a new buffer of {size} octets.
- *
- * @param size count of octets to allocate.
- * @param fill if specified, buffer will be initialized by calling buf.fill(fill).
- * If parameter is omitted, buffer will be filled with zeros.
- * @param encoding encoding used for call to buf.fill while initalizing
- */
- static alloc(size: number, fill?: string | Buffer | number, encoding?: BufferEncoding): Buffer;
- /**
- * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents
- * of the newly created Buffer are unknown and may contain sensitive data.
- *
- * @param size count of octets to allocate
- */
- static allocUnsafe(size: number): Buffer;
- /**
- * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents
- * of the newly created Buffer are unknown and may contain sensitive data.
- *
- * @param size count of octets to allocate
- */
- static allocUnsafeSlow(size: number): Buffer;
- /**
- * This is the number of bytes used to determine the size of pre-allocated, internal Buffer instances used for pooling. This value may be modified.
- */
- static poolSize: number;
-
- write(string: string, encoding?: BufferEncoding): number;
- write(string: string, offset: number, encoding?: BufferEncoding): number;
- write(string: string, offset: number, length: number, encoding?: BufferEncoding): number;
- toString(encoding?: string, start?: number, end?: number): string;
- toJSON(): { type: 'Buffer'; data: number[] };
- equals(otherBuffer: Uint8Array): boolean;
- compare(
- otherBuffer: Uint8Array,
- targetStart?: number,
- targetEnd?: number,
- sourceStart?: number,
- sourceEnd?: number
- ): number;
- copy(targetBuffer: Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;
- /**
- * Returns a new `Buffer` that references **the same memory as the original**, but offset and cropped by the start and end indices.
- *
- * This method is incompatible with `Uint8Array#slice()`, which returns a copy of the original memory.
- *
- * @param begin Where the new `Buffer` will start. Default: `0`.
- * @param end Where the new `Buffer` will end (not inclusive). Default: `buf.length`.
- */
- slice(begin?: number, end?: number): Buffer;
- /**
- * Returns a new `Buffer` that references **the same memory as the original**, but offset and cropped by the start and end indices.
- *
- * This method is compatible with `Uint8Array#subarray()`.
- *
- * @param begin Where the new `Buffer` will start. Default: `0`.
- * @param end Where the new `Buffer` will end (not inclusive). Default: `buf.length`.
- */
- subarray(begin?: number, end?: number): Buffer;
- writeUIntLE(value: number, offset: number, byteLength: number): number;
- writeUIntBE(value: number, offset: number, byteLength: number): number;
- writeIntLE(value: number, offset: number, byteLength: number): number;
- writeIntBE(value: number, offset: number, byteLength: number): number;
- readUIntLE(offset: number, byteLength: number): number;
- readUIntBE(offset: number, byteLength: number): number;
- readIntLE(offset: number, byteLength: number): number;
- readIntBE(offset: number, byteLength: number): number;
- readUInt8(offset: number): number;
- readUInt16LE(offset: number): number;
- readUInt16BE(offset: number): number;
- readUInt32LE(offset: number): number;
- readUInt32BE(offset: number): number;
- readInt8(offset: number): number;
- readInt16LE(offset: number): number;
- readInt16BE(offset: number): number;
- readInt32LE(offset: number): number;
- readInt32BE(offset: number): number;
- readFloatLE(offset: number): number;
- readFloatBE(offset: number): number;
- readDoubleLE(offset: number): number;
- readDoubleBE(offset: number): number;
- reverse(): this;
- swap16(): Buffer;
- swap32(): Buffer;
- swap64(): Buffer;
- writeUInt8(value: number, offset: number): number;
- writeUInt16LE(value: number, offset: number): number;
- writeUInt16BE(value: number, offset: number): number;
- writeUInt32LE(value: number, offset: number): number;
- writeUInt32BE(value: number, offset: number): number;
- writeInt8(value: number, offset: number): number;
- writeInt16LE(value: number, offset: number): number;
- writeInt16BE(value: number, offset: number): number;
- writeInt32LE(value: number, offset: number): number;
- writeInt32BE(value: number, offset: number): number;
- writeFloatLE(value: number, offset: number): number;
- writeFloatBE(value: number, offset: number): number;
- writeDoubleLE(value: number, offset: number): number;
- writeDoubleBE(value: number, offset: number): number;
-
- fill(value: string | Uint8Array | number, offset?: number, end?: number, encoding?: BufferEncoding): this;
-
- indexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number;
- lastIndexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number;
- entries(): IterableIterator<[number, number]>;
- includes(value: string | number | Buffer, byteOffset?: number, encoding?: BufferEncoding): boolean;
- keys(): IterableIterator<number>;
- values(): IterableIterator<number>;
-}
-
-/*----------------------------------------------*
-* *
-* GLOBAL INTERFACES *
-* *
-*-----------------------------------------------*/
-declare namespace NodeJS {
- interface InspectOptions {
- /**
- * If set to `true`, getters are going to be
- * inspected as well. If set to `'get'` only getters without setter are going
- * to be inspected. If set to `'set'` only getters having a corresponding
- * setter are going to be inspected. This might cause side effects depending on
- * the getter function.
- * @default `false`
- */
- getters?: 'get' | 'set' | boolean;
- showHidden?: boolean;
- /**
- * @default 2
- */
- depth?: number | null;
- colors?: boolean;
- customInspect?: boolean;
- showProxy?: boolean;
- maxArrayLength?: number | null;
- breakLength?: number;
- /**
- * Setting this to `false` causes each object key
- * to be displayed on a new line. It will also add new lines to text that is
- * longer than `breakLength`. If set to a number, the most `n` inner elements
- * are united on a single line as long as all properties fit into
- * `breakLength`. Short array elements are also grouped together. Note that no
- * text will be reduced below 16 characters, no matter the `breakLength` size.
- * For more information, see the example below.
- * @default `true`
- */
- compact?: boolean | number;
- sorted?: boolean | ((a: string, b: string) => number);
- }
-
- interface ConsoleConstructorOptions {
- stdout: WritableStream;
- stderr?: WritableStream;
- ignoreErrors?: boolean;
- colorMode?: boolean | 'auto';
- inspectOptions?: InspectOptions;
- }
-
- interface ConsoleConstructor {
- prototype: Console;
- new(stdout: WritableStream, stderr?: WritableStream, ignoreErrors?: boolean): Console;
- new(options: ConsoleConstructorOptions): Console;
- }
-
- interface CallSite {
- /**
- * Value of "this"
- */
- getThis(): any;
-
- /**
- * Type of "this" as a string.
- * This is the name of the function stored in the constructor field of
- * "this", if available. Otherwise the object's [[Class]] internal
- * property.
- */
- getTypeName(): string | null;
-
- /**
- * Current function
- */
- getFunction(): Function | undefined;
-
- /**
- * Name of the current function, typically its name property.
- * If a name property is not available an attempt will be made to try
- * to infer a name from the function's context.
- */
- getFunctionName(): string | null;
-
- /**
- * Name of the property [of "this" or one of its prototypes] that holds
- * the current function
- */
- getMethodName(): string | null;
-
- /**
- * Name of the script [if this function was defined in a script]
- */
- getFileName(): string | null;
-
- /**
- * Current line number [if this function was defined in a script]
- */
- getLineNumber(): number | null;
-
- /**
- * Current column number [if this function was defined in a script]
- */
- getColumnNumber(): number | null;
-
- /**
- * A call site object representing the location where eval was called
- * [if this function was created using a call to eval]
- */
- getEvalOrigin(): string | undefined;
-
- /**
- * Is this a toplevel invocation, that is, is "this" the global object?
- */
- isToplevel(): boolean;
-
- /**
- * Does this call take place in code defined by a call to eval?
- */
- isEval(): boolean;
-
- /**
- * Is this call in native V8 code?
- */
- isNative(): boolean;
-
- /**
- * Is this a constructor call?
- */
- isConstructor(): boolean;
- }
-
- interface ErrnoException extends Error {
- errno?: number;
- code?: string;
- path?: string;
- syscall?: string;
- stack?: string;
- }
-
- interface EventEmitter {
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
- on(event: string | symbol, listener: (...args: any[]) => void): this;
- once(event: string | symbol, listener: (...args: any[]) => void): this;
- removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
- off(event: string | symbol, listener: (...args: any[]) => void): this;
- removeAllListeners(event?: string | symbol): this;
- setMaxListeners(n: number): this;
- getMaxListeners(): number;
- listeners(event: string | symbol): Function[];
- rawListeners(event: string | symbol): Function[];
- emit(event: string | symbol, ...args: any[]): boolean;
- listenerCount(type: string | symbol): number;
- // Added in Node 6...
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
- eventNames(): Array<string | symbol>;
- }
-
- interface ReadableStream extends EventEmitter {
- readable: boolean;
- read(size?: number): string | Buffer;
- setEncoding(encoding: string): this;
- pause(): this;
- resume(): this;
- isPaused(): boolean;
- pipe<T extends WritableStream>(destination: T, options?: { end?: boolean; }): T;
- unpipe(destination?: WritableStream): this;
- unshift(chunk: string | Uint8Array, encoding?: BufferEncoding): void;
- wrap(oldStream: ReadableStream): this;
- [Symbol.asyncIterator](): AsyncIterableIterator<string | Buffer>;
- }
-
- interface WritableStream extends EventEmitter {
- writable: boolean;
- write(buffer: Uint8Array | string, cb?: (err?: Error | null) => void): boolean;
- write(str: string, encoding?: string, cb?: (err?: Error | null) => void): boolean;
- end(cb?: () => void): void;
- end(data: string | Uint8Array, cb?: () => void): void;
- end(str: string, encoding?: string, cb?: () => void): void;
- }
-
- interface ReadWriteStream extends ReadableStream, WritableStream { }
-
- interface Domain extends EventEmitter {
- run<T>(fn: (...args: any[]) => T, ...args: any[]): T;
- add(emitter: EventEmitter | Timer): void;
- remove(emitter: EventEmitter | Timer): void;
- bind<T extends Function>(cb: T): T;
- intercept<T extends Function>(cb: T): T;
-
- addListener(event: string, listener: (...args: any[]) => void): this;
- on(event: string, listener: (...args: any[]) => void): this;
- once(event: string, listener: (...args: any[]) => void): this;
- removeListener(event: string, listener: (...args: any[]) => void): this;
- removeAllListeners(event?: string): this;
- }
-
- interface MemoryUsage {
- rss: number;
- heapTotal: number;
- heapUsed: number;
- external: number;
- }
-
- interface CpuUsage {
- user: number;
- system: number;
- }
-
- interface ProcessRelease {
- name: string;
- sourceUrl?: string;
- headersUrl?: string;
- libUrl?: string;
- lts?: string;
- }
-
- interface ProcessVersions {
- http_parser: string;
- node: string;
- v8: string;
- ares: string;
- uv: string;
- zlib: string;
- modules: string;
- openssl: string;
- }
-
- type Platform = 'aix'
- | 'android'
- | 'darwin'
- | 'freebsd'
- | 'linux'
- | 'openbsd'
- | 'sunos'
- | 'win32'
- | 'cygwin'
- | 'netbsd';
-
- type Signals =
- "SIGABRT" | "SIGALRM" | "SIGBUS" | "SIGCHLD" | "SIGCONT" | "SIGFPE" | "SIGHUP" | "SIGILL" | "SIGINT" | "SIGIO" |
- "SIGIOT" | "SIGKILL" | "SIGPIPE" | "SIGPOLL" | "SIGPROF" | "SIGPWR" | "SIGQUIT" | "SIGSEGV" | "SIGSTKFLT" |
- "SIGSTOP" | "SIGSYS" | "SIGTERM" | "SIGTRAP" | "SIGTSTP" | "SIGTTIN" | "SIGTTOU" | "SIGUNUSED" | "SIGURG" |
- "SIGUSR1" | "SIGUSR2" | "SIGVTALRM" | "SIGWINCH" | "SIGXCPU" | "SIGXFSZ" | "SIGBREAK" | "SIGLOST" | "SIGINFO";
-
- type MultipleResolveType = 'resolve' | 'reject';
-
- type BeforeExitListener = (code: number) => void;
- type DisconnectListener = () => void;
- type ExitListener = (code: number) => void;
- type RejectionHandledListener = (promise: Promise<any>) => void;
- type UncaughtExceptionListener = (error: Error) => void;
- type UnhandledRejectionListener = (reason: {} | null | undefined, promise: Promise<any>) => void;
- type WarningListener = (warning: Error) => void;
- type MessageListener = (message: any, sendHandle: any) => void;
- type SignalsListener = (signal: Signals) => void;
- type NewListenerListener = (type: string | symbol, listener: (...args: any[]) => void) => void;
- type RemoveListenerListener = (type: string | symbol, listener: (...args: any[]) => void) => void;
- type MultipleResolveListener = (type: MultipleResolveType, promise: Promise<any>, value: any) => void;
-
- interface Socket extends ReadWriteStream {
- isTTY?: true;
- }
-
- interface ProcessEnv {
- [key: string]: string | undefined;
- }
-
- interface HRTime {
- (time?: [number, number]): [number, number];
- }
-
- interface ProcessReport {
- /**
- * Directory where the report is written.
- * working directory of the Node.js process.
- * @default '' indicating that reports are written to the current
- */
- directory: string;
-
- /**
- * Filename where the report is written.
- * The default value is the empty string.
- * @default '' the output filename will be comprised of a timestamp,
- * PID, and sequence number.
- */
- filename: string;
-
- /**
- * Returns a JSON-formatted diagnostic report for the running process.
- * The report's JavaScript stack trace is taken from err, if present.
- */
- getReport(err?: Error): string;
-
- /**
- * If true, a diagnostic report is generated on fatal errors,
- * such as out of memory errors or failed C++ assertions.
- * @default false
- */
- reportOnFatalError: boolean;
-
- /**
- * If true, a diagnostic report is generated when the process
- * receives the signal specified by process.report.signal.
- * @defaul false
- */
- reportOnSignal: boolean;
-
- /**
- * If true, a diagnostic report is generated on uncaught exception.
- * @default false
- */
- reportOnUncaughtException: boolean;
-
- /**
- * The signal used to trigger the creation of a diagnostic report.
- * @default 'SIGUSR2'
- */
- signal: Signals;
-
- /**
- * Writes a diagnostic report to a file. If filename is not provided, the default filename
- * includes the date, time, PID, and a sequence number.
- * The report's JavaScript stack trace is taken from err, if present.
- *
- * @param fileName Name of the file where the report is written.
- * This should be a relative path, that will be appended to the directory specified in
- * `process.report.directory`, or the current working directory of the Node.js process,
- * if unspecified.
- * @param error A custom error used for reporting the JavaScript stack.
- * @return Filename of the generated report.
- */
- writeReport(fileName?: string): string;
- writeReport(error?: Error): string;
- writeReport(fileName?: string, err?: Error): string;
- }
-
- interface ResourceUsage {
- fsRead: number;
- fsWrite: number;
- involuntaryContextSwitches: number;
- ipcReceived: number;
- ipcSent: number;
- majorPageFault: number;
- maxRSS: number;
- minorPageFault: number;
- sharedMemorySize: number;
- signalsCount: number;
- swappedOut: number;
- systemCPUTime: number;
- unsharedDataSize: number;
- unsharedStackSize: number;
- userCPUTime: number;
- voluntaryContextSwitches: number;
- }
-
- interface Process extends EventEmitter {
- /**
- * Can also be a tty.WriteStream, not typed due to limitation.s
- */
- stdout: WriteStream;
- /**
- * Can also be a tty.WriteStream, not typed due to limitation.s
- */
- stderr: WriteStream;
- stdin: ReadStream;
- openStdin(): Socket;
- argv: string[];
- argv0: string;
- execArgv: string[];
- execPath: string;
- abort(): void;
- chdir(directory: string): void;
- cwd(): string;
- debugPort: number;
- emitWarning(warning: string | Error, name?: string, ctor?: Function): void;
- env: ProcessEnv;
- exit(code?: number): never;
- exitCode?: number;
- getgid(): number;
- setgid(id: number | string): void;
- getuid(): number;
- setuid(id: number | string): void;
- geteuid(): number;
- seteuid(id: number | string): void;
- getegid(): number;
- setegid(id: number | string): void;
- getgroups(): number[];
- setgroups(groups: Array<string | number>): void;
- setUncaughtExceptionCaptureCallback(cb: ((err: Error) => void) | null): void;
- hasUncaughtExceptionCaptureCallback(): boolean;
- version: string;
- versions: ProcessVersions;
- config: {
- target_defaults: {
- cflags: any[];
- default_configuration: string;
- defines: string[];
- include_dirs: string[];
- libraries: string[];
- };
- variables: {
- clang: number;
- host_arch: string;
- node_install_npm: boolean;
- node_install_waf: boolean;
- node_prefix: string;
- node_shared_openssl: boolean;
- node_shared_v8: boolean;
- node_shared_zlib: boolean;
- node_use_dtrace: boolean;
- node_use_etw: boolean;
- node_use_openssl: boolean;
- target_arch: string;
- v8_no_strict_aliasing: number;
- v8_use_snapshot: boolean;
- visibility: string;
- };
- };
- kill(pid: number, signal?: string | number): void;
- pid: number;
- ppid: number;
- title: string;
- arch: string;
- platform: Platform;
- mainModule?: Module;
- memoryUsage(): MemoryUsage;
- cpuUsage(previousValue?: CpuUsage): CpuUsage;
- nextTick(callback: Function, ...args: any[]): void;
- release: ProcessRelease;
- features: {
- inspector: boolean;
- debug: boolean;
- uv: boolean;
- ipv6: boolean;
- tls_alpn: boolean;
- tls_sni: boolean;
- tls_ocsp: boolean;
- tls: boolean;
- };
- /**
- * Can only be set if not in worker thread.
- */
- umask(mask?: number): number;
- uptime(): number;
- hrtime: HRTime;
- domain: Domain;
-
- // Worker
- send?(message: any, sendHandle?: any, options?: { swallowErrors?: boolean}, callback?: (error: Error | null) => void): boolean;
- disconnect(): void;
- connected: boolean;
-
- /**
- * The `process.allowedNodeEnvironmentFlags` property is a special,
- * read-only `Set` of flags allowable within the [`NODE_OPTIONS`][]
- * environment variable.
- */
- allowedNodeEnvironmentFlags: ReadonlySet<string>;
-
- /**
- * Only available with `--experimental-report`
- */
- report?: ProcessReport;
-
- resourceUsage(): ResourceUsage;
-
- /**
- * EventEmitter
- * 1. beforeExit
- * 2. disconnect
- * 3. exit
- * 4. message
- * 5. rejectionHandled
- * 6. uncaughtException
- * 7. unhandledRejection
- * 8. warning
- * 9. message
- * 10. <All OS Signals>
- * 11. newListener/removeListener inherited from EventEmitter
- */
- addListener(event: "beforeExit", listener: BeforeExitListener): this;
- addListener(event: "disconnect", listener: DisconnectListener): this;
- addListener(event: "exit", listener: ExitListener): this;
- addListener(event: "rejectionHandled", listener: RejectionHandledListener): this;
- addListener(event: "uncaughtException", listener: UncaughtExceptionListener): this;
- addListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this;
- addListener(event: "warning", listener: WarningListener): this;
- addListener(event: "message", listener: MessageListener): this;
- addListener(event: Signals, listener: SignalsListener): this;
- addListener(event: "newListener", listener: NewListenerListener): this;
- addListener(event: "removeListener", listener: RemoveListenerListener): this;
- addListener(event: "multipleResolves", listener: MultipleResolveListener): this;
-
- emit(event: "beforeExit", code: number): boolean;
- emit(event: "disconnect"): boolean;
- emit(event: "exit", code: number): boolean;
- emit(event: "rejectionHandled", promise: Promise<any>): boolean;
- emit(event: "uncaughtException", error: Error): boolean;
- emit(event: "unhandledRejection", reason: any, promise: Promise<any>): boolean;
- emit(event: "warning", warning: Error): boolean;
- emit(event: "message", message: any, sendHandle: any): this;
- emit(event: Signals, signal: Signals): boolean;
- emit(event: "newListener", eventName: string | symbol, listener: (...args: any[]) => void): this;
- emit(event: "removeListener", eventName: string, listener: (...args: any[]) => void): this;
- emit(event: "multipleResolves", listener: MultipleResolveListener): this;
-
- on(event: "beforeExit", listener: BeforeExitListener): this;
- on(event: "disconnect", listener: DisconnectListener): this;
- on(event: "exit", listener: ExitListener): this;
- on(event: "rejectionHandled", listener: RejectionHandledListener): this;
- on(event: "uncaughtException", listener: UncaughtExceptionListener): this;
- on(event: "unhandledRejection", listener: UnhandledRejectionListener): this;
- on(event: "warning", listener: WarningListener): this;
- on(event: "message", listener: MessageListener): this;
- on(event: Signals, listener: SignalsListener): this;
- on(event: "newListener", listener: NewListenerListener): this;
- on(event: "removeListener", listener: RemoveListenerListener): this;
- on(event: "multipleResolves", listener: MultipleResolveListener): this;
-
- once(event: "beforeExit", listener: BeforeExitListener): this;
- once(event: "disconnect", listener: DisconnectListener): this;
- once(event: "exit", listener: ExitListener): this;
- once(event: "rejectionHandled", listener: RejectionHandledListener): this;
- once(event: "uncaughtException", listener: UncaughtExceptionListener): this;
- once(event: "unhandledRejection", listener: UnhandledRejectionListener): this;
- once(event: "warning", listener: WarningListener): this;
- once(event: "message", listener: MessageListener): this;
- once(event: Signals, listener: SignalsListener): this;
- once(event: "newListener", listener: NewListenerListener): this;
- once(event: "removeListener", listener: RemoveListenerListener): this;
- once(event: "multipleResolves", listener: MultipleResolveListener): this;
-
- prependListener(event: "beforeExit", listener: BeforeExitListener): this;
- prependListener(event: "disconnect", listener: DisconnectListener): this;
- prependListener(event: "exit", listener: ExitListener): this;
- prependListener(event: "rejectionHandled", listener: RejectionHandledListener): this;
- prependListener(event: "uncaughtException", listener: UncaughtExceptionListener): this;
- prependListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this;
- prependListener(event: "warning", listener: WarningListener): this;
- prependListener(event: "message", listener: MessageListener): this;
- prependListener(event: Signals, listener: SignalsListener): this;
- prependListener(event: "newListener", listener: NewListenerListener): this;
- prependListener(event: "removeListener", listener: RemoveListenerListener): this;
- prependListener(event: "multipleResolves", listener: MultipleResolveListener): this;
-
- prependOnceListener(event: "beforeExit", listener: BeforeExitListener): this;
- prependOnceListener(event: "disconnect", listener: DisconnectListener): this;
- prependOnceListener(event: "exit", listener: ExitListener): this;
- prependOnceListener(event: "rejectionHandled", listener: RejectionHandledListener): this;
- prependOnceListener(event: "uncaughtException", listener: UncaughtExceptionListener): this;
- prependOnceListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this;
- prependOnceListener(event: "warning", listener: WarningListener): this;
- prependOnceListener(event: "message", listener: MessageListener): this;
- prependOnceListener(event: Signals, listener: SignalsListener): this;
- prependOnceListener(event: "newListener", listener: NewListenerListener): this;
- prependOnceListener(event: "removeListener", listener: RemoveListenerListener): this;
- prependOnceListener(event: "multipleResolves", listener: MultipleResolveListener): this;
-
- listeners(event: "beforeExit"): BeforeExitListener[];
- listeners(event: "disconnect"): DisconnectListener[];
- listeners(event: "exit"): ExitListener[];
- listeners(event: "rejectionHandled"): RejectionHandledListener[];
- listeners(event: "uncaughtException"): UncaughtExceptionListener[];
- listeners(event: "unhandledRejection"): UnhandledRejectionListener[];
- listeners(event: "warning"): WarningListener[];
- listeners(event: "message"): MessageListener[];
- listeners(event: Signals): SignalsListener[];
- listeners(event: "newListener"): NewListenerListener[];
- listeners(event: "removeListener"): RemoveListenerListener[];
- listeners(event: "multipleResolves"): MultipleResolveListener[];
- }
-
- interface Global {
- Array: typeof Array;
- ArrayBuffer: typeof ArrayBuffer;
- Boolean: typeof Boolean;
- Buffer: typeof Buffer;
- DataView: typeof DataView;
- Date: typeof Date;
- Error: typeof Error;
- EvalError: typeof EvalError;
- Float32Array: typeof Float32Array;
- Float64Array: typeof Float64Array;
- Function: typeof Function;
- GLOBAL: Global;
- Infinity: typeof Infinity;
- Int16Array: typeof Int16Array;
- Int32Array: typeof Int32Array;
- Int8Array: typeof Int8Array;
- Intl: typeof Intl;
- JSON: typeof JSON;
- Map: MapConstructor;
- Math: typeof Math;
- NaN: typeof NaN;
- Number: typeof Number;
- Object: typeof Object;
- Promise: typeof Promise;
- RangeError: typeof RangeError;
- ReferenceError: typeof ReferenceError;
- RegExp: typeof RegExp;
- Set: SetConstructor;
- String: typeof String;
- Symbol: Function;
- SyntaxError: typeof SyntaxError;
- TypeError: typeof TypeError;
- URIError: typeof URIError;
- Uint16Array: typeof Uint16Array;
- Uint32Array: typeof Uint32Array;
- Uint8Array: typeof Uint8Array;
- Uint8ClampedArray: typeof Uint8ClampedArray;
- WeakMap: WeakMapConstructor;
- WeakSet: WeakSetConstructor;
- clearImmediate: (immediateId: Immediate) => void;
- clearInterval: (intervalId: Timeout) => void;
- clearTimeout: (timeoutId: Timeout) => void;
- console: typeof console;
- decodeURI: typeof decodeURI;
- decodeURIComponent: typeof decodeURIComponent;
- encodeURI: typeof encodeURI;
- encodeURIComponent: typeof encodeURIComponent;
- escape: (str: string) => string;
- eval: typeof eval;
- global: Global;
- isFinite: typeof isFinite;
- isNaN: typeof isNaN;
- parseFloat: typeof parseFloat;
- parseInt: typeof parseInt;
- process: Process;
- /**
- * @deprecated Use `global`.
- */
- root: Global;
- setImmediate: (callback: (...args: any[]) => void, ...args: any[]) => Immediate;
- setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => Timeout;
- setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => Timeout;
- queueMicrotask: typeof queueMicrotask;
- undefined: typeof undefined;
- unescape: (str: string) => string;
- gc: () => void;
- v8debug?: any;
- }
-
- interface RefCounted {
- ref(): this;
- unref(): this;
- }
-
- // compatibility with older typings
- interface Timer extends RefCounted {
- hasRef(): boolean;
- refresh(): this;
- }
-
- interface Immediate extends RefCounted {
- hasRef(): boolean;
- _onImmediate: Function; // to distinguish it from the Timeout class
- }
-
- interface Timeout extends Timer {
- hasRef(): boolean;
- refresh(): this;
- }
-
- type TypedArray = Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | Int8Array | Int16Array | Int32Array | Float32Array | Float64Array;
- type ArrayBufferView = TypedArray | DataView;
-
- interface NodeRequireCache {
- [path: string]: NodeModule;
- }
-
- interface Require {
- /* tslint:disable-next-line:callable-types */
- (id: string): any;
- resolve: RequireResolve;
- cache: NodeRequireCache;
- /**
- * @deprecated
- */
- extensions: RequireExtensions;
- main: Module | undefined;
- }
-
- interface RequireResolve {
- (id: string, options?: { paths?: string[]; }): string;
- paths(request: string): string[] | null;
- }
-
- interface RequireExtensions {
- '.js': (m: Module, filename: string) => any;
- '.json': (m: Module, filename: string) => any;
- '.node': (m: Module, filename: string) => any;
- [ext: string]: (m: Module, filename: string) => any;
- }
- interface Module {
- exports: any;
- require: Require;
- id: string;
- filename: string;
- loaded: boolean;
- parent: Module | null;
- children: Module[];
- paths: string[];
- }
-}
diff --git a/assets/node_modules/@types/node/http.d.ts b/assets/node_modules/@types/node/http.d.ts
deleted file mode 100644
index f6bc57e..0000000
--- a/assets/node_modules/@types/node/http.d.ts
+++ /dev/null
@@ -1,395 +0,0 @@
-declare module "http" {
- import * as events from "events";
- import * as stream from "stream";
- import { URL } from "url";
- import { Socket, Server as NetServer } from "net";
-
- // incoming headers will never contain number
- interface IncomingHttpHeaders {
- 'accept'?: string;
- 'accept-language'?: string;
- 'accept-patch'?: string;
- 'accept-ranges'?: string;
- 'access-control-allow-credentials'?: string;
- 'access-control-allow-headers'?: string;
- 'access-control-allow-methods'?: string;
- 'access-control-allow-origin'?: string;
- 'access-control-expose-headers'?: string;
- 'access-control-max-age'?: string;
- 'age'?: string;
- 'allow'?: string;
- 'alt-svc'?: string;
- 'authorization'?: string;
- 'cache-control'?: string;
- 'connection'?: string;
- 'content-disposition'?: string;
- 'content-encoding'?: string;
- 'content-language'?: string;
- 'content-length'?: string;
- 'content-location'?: string;
- 'content-range'?: string;
- 'content-type'?: string;
- 'cookie'?: string;
- 'date'?: string;
- 'expect'?: string;
- 'expires'?: string;
- 'forwarded'?: string;
- 'from'?: string;
- 'host'?: string;
- 'if-match'?: string;
- 'if-modified-since'?: string;
- 'if-none-match'?: string;
- 'if-unmodified-since'?: string;
- 'last-modified'?: string;
- 'location'?: string;
- 'pragma'?: string;
- 'proxy-authenticate'?: string;
- 'proxy-authorization'?: string;
- 'public-key-pins'?: string;
- 'range'?: string;
- 'referer'?: string;
- 'retry-after'?: string;
- 'set-cookie'?: string[];
- 'strict-transport-security'?: string;
- 'tk'?: string;
- 'trailer'?: string;
- 'transfer-encoding'?: string;
- 'upgrade'?: string;
- 'user-agent'?: string;
- 'vary'?: string;
- 'via'?: string;
- 'warning'?: string;
- 'www-authenticate'?: string;
- [header: string]: string | string[] | undefined;
- }
-
- // outgoing headers allows numbers (as they are converted internally to strings)
- interface OutgoingHttpHeaders {
- [header: string]: number | string | string[] | undefined;
- }
-
- interface ClientRequestArgs {
- protocol?: string | null;
- host?: string | null;
- hostname?: string | null;
- family?: number;
- port?: number | string | null;
- defaultPort?: number | string;
- localAddress?: string;
- socketPath?: string;
- /**
- * @default 8192
- */
- maxHeaderSize?: number;
- method?: string;
- path?: string | null;
- headers?: OutgoingHttpHeaders;
- auth?: string | null;
- agent?: Agent | boolean;
- _defaultAgent?: Agent;
- timeout?: number;
- setHost?: boolean;
- // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L278
- createConnection?: (options: ClientRequestArgs, oncreate: (err: Error, socket: Socket) => void) => Socket;
- }
-
- interface ServerOptions {
- IncomingMessage?: typeof IncomingMessage;
- ServerResponse?: typeof ServerResponse;
- /**
- * Optionally overrides the value of
- * [`--max-http-header-size`][] for requests received by this server, i.e.
- * the maximum length of request headers in bytes.
- * @default 8192
- */
- maxHeaderSize?: number;
- }
-
- type RequestListener = (req: IncomingMessage, res: ServerResponse) => void;
-
- interface HttpBase {
- setTimeout(msecs?: number, callback?: () => void): this;
- setTimeout(callback: () => void): this;
- /**
- * Limits maximum incoming headers count. If set to 0, no limit will be applied.
- * @default 2000
- * {@link https://nodejs.org/api/http.html#http_server_maxheaderscount}
- */
- maxHeadersCount: number | null;
- timeout: number;
- /**
- * Limit the amount of time the parser will wait to receive the complete HTTP headers.
- * @default 60000
- * {@link https://nodejs.org/api/http.html#http_server_headerstimeout}
- */
- headersTimeout: number;
- keepAliveTimeout: number;
- }
-
- interface Server extends HttpBase {}
- class Server extends NetServer {
- constructor(requestListener?: RequestListener);
- constructor(options: ServerOptions, requestListener?: RequestListener);
- }
-
- // https://github.com/nodejs/node/blob/master/lib/_http_outgoing.js
- class OutgoingMessage extends stream.Writable {
- upgrading: boolean;
- chunkedEncoding: boolean;
- shouldKeepAlive: boolean;
- useChunkedEncodingByDefault: boolean;
- sendDate: boolean;
- /**
- * @deprecated Use `writableEnded` instead.
- */
- finished: boolean;
- headersSent: boolean;
- /**
- * @deprecate Use `socket` instead.
- */
- connection: Socket;
- socket: Socket;
-
- constructor();
-
- setTimeout(msecs: number, callback?: () => void): this;
- setHeader(name: string, value: number | string | string[]): void;
- getHeader(name: string): number | string | string[] | undefined;
- getHeaders(): OutgoingHttpHeaders;
- getHeaderNames(): string[];
- hasHeader(name: string): boolean;
- removeHeader(name: string): void;
- addTrailers(headers: OutgoingHttpHeaders | Array<[string, string]>): void;
- flushHeaders(): void;
- }
-
- // https://github.com/nodejs/node/blob/master/lib/_http_server.js#L108-L256
- class ServerResponse extends OutgoingMessage {
- statusCode: number;
- statusMessage: string;
-
- constructor(req: IncomingMessage);
-
- assignSocket(socket: Socket): void;
- detachSocket(socket: Socket): void;
- // https://github.com/nodejs/node/blob/master/test/parallel/test-http-write-callbacks.js#L53
- // no args in writeContinue callback
- writeContinue(callback?: () => void): void;
- writeHead(statusCode: number, reasonPhrase?: string, headers?: OutgoingHttpHeaders): this;
- writeHead(statusCode: number, headers?: OutgoingHttpHeaders): this;
- writeProcessing(): void;
- }
-
- interface InformationEvent {
- statusCode: number;
- statusMessage: string;
- httpVersion: string;
- httpVersionMajor: number;
- httpVersionMinor: number;
- headers: IncomingHttpHeaders;
- rawHeaders: string[];
- }
-
- // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L77
- class ClientRequest extends OutgoingMessage {
- connection: Socket;
- socket: Socket;
- aborted: number;
-
- constructor(url: string | URL | ClientRequestArgs, cb?: (res: IncomingMessage) => void);
-
- method: string;
- path: string;
- abort(): void;
- onSocket(socket: Socket): void;
- setTimeout(timeout: number, callback?: () => void): this;
- setNoDelay(noDelay?: boolean): void;
- setSocketKeepAlive(enable?: boolean, initialDelay?: number): void;
-
- addListener(event: 'abort', listener: () => void): this;
- addListener(event: 'connect', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
- addListener(event: 'continue', listener: () => void): this;
- addListener(event: 'information', listener: (info: InformationEvent) => void): this;
- addListener(event: 'response', listener: (response: IncomingMessage) => void): this;
- addListener(event: 'socket', listener: (socket: Socket) => void): this;
- addListener(event: 'timeout', listener: () => void): this;
- addListener(event: 'upgrade', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
- addListener(event: 'close', listener: () => void): this;
- addListener(event: 'drain', listener: () => void): this;
- addListener(event: 'error', listener: (err: Error) => void): this;
- addListener(event: 'finish', listener: () => void): this;
- addListener(event: 'pipe', listener: (src: stream.Readable) => void): this;
- addListener(event: 'unpipe', listener: (src: stream.Readable) => void): this;
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- on(event: 'abort', listener: () => void): this;
- on(event: 'connect', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
- on(event: 'continue', listener: () => void): this;
- on(event: 'information', listener: (info: InformationEvent) => void): this;
- on(event: 'response', listener: (response: IncomingMessage) => void): this;
- on(event: 'socket', listener: (socket: Socket) => void): this;
- on(event: 'timeout', listener: () => void): this;
- on(event: 'upgrade', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
- on(event: 'close', listener: () => void): this;
- on(event: 'drain', listener: () => void): this;
- on(event: 'error', listener: (err: Error) => void): this;
- on(event: 'finish', listener: () => void): this;
- on(event: 'pipe', listener: (src: stream.Readable) => void): this;
- on(event: 'unpipe', listener: (src: stream.Readable) => void): this;
- on(event: string | symbol, listener: (...args: any[]) => void): this;
-
- once(event: 'abort', listener: () => void): this;
- once(event: 'connect', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
- once(event: 'continue', listener: () => void): this;
- once(event: 'information', listener: (info: InformationEvent) => void): this;
- once(event: 'response', listener: (response: IncomingMessage) => void): this;
- once(event: 'socket', listener: (socket: Socket) => void): this;
- once(event: 'timeout', listener: () => void): this;
- once(event: 'upgrade', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
- once(event: 'close', listener: () => void): this;
- once(event: 'drain', listener: () => void): this;
- once(event: 'error', listener: (err: Error) => void): this;
- once(event: 'finish', listener: () => void): this;
- once(event: 'pipe', listener: (src: stream.Readable) => void): this;
- once(event: 'unpipe', listener: (src: stream.Readable) => void): this;
- once(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependListener(event: 'abort', listener: () => void): this;
- prependListener(event: 'connect', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
- prependListener(event: 'continue', listener: () => void): this;
- prependListener(event: 'information', listener: (info: InformationEvent) => void): this;
- prependListener(event: 'response', listener: (response: IncomingMessage) => void): this;
- prependListener(event: 'socket', listener: (socket: Socket) => void): this;
- prependListener(event: 'timeout', listener: () => void): this;
- prependListener(event: 'upgrade', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
- prependListener(event: 'close', listener: () => void): this;
- prependListener(event: 'drain', listener: () => void): this;
- prependListener(event: 'error', listener: (err: Error) => void): this;
- prependListener(event: 'finish', listener: () => void): this;
- prependListener(event: 'pipe', listener: (src: stream.Readable) => void): this;
- prependListener(event: 'unpipe', listener: (src: stream.Readable) => void): this;
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependOnceListener(event: 'abort', listener: () => void): this;
- prependOnceListener(event: 'connect', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
- prependOnceListener(event: 'continue', listener: () => void): this;
- prependOnceListener(event: 'information', listener: (info: InformationEvent) => void): this;
- prependOnceListener(event: 'response', listener: (response: IncomingMessage) => void): this;
- prependOnceListener(event: 'socket', listener: (socket: Socket) => void): this;
- prependOnceListener(event: 'timeout', listener: () => void): this;
- prependOnceListener(event: 'upgrade', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
- prependOnceListener(event: 'close', listener: () => void): this;
- prependOnceListener(event: 'drain', listener: () => void): this;
- prependOnceListener(event: 'error', listener: (err: Error) => void): this;
- prependOnceListener(event: 'finish', listener: () => void): this;
- prependOnceListener(event: 'pipe', listener: (src: stream.Readable) => void): this;
- prependOnceListener(event: 'unpipe', listener: (src: stream.Readable) => void): this;
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
- }
-
- class IncomingMessage extends stream.Readable {
- constructor(socket: Socket);
-
- httpVersion: string;
- httpVersionMajor: number;
- httpVersionMinor: number;
- complete: boolean;
- /**
- * @deprecate Use `socket` instead.
- */
- connection: Socket;
- socket: Socket;
- headers: IncomingHttpHeaders;
- rawHeaders: string[];
- trailers: { [key: string]: string | undefined };
- rawTrailers: string[];
- setTimeout(msecs: number, callback?: () => void): this;
- /**
- * Only valid for request obtained from http.Server.
- */
- method?: string;
- /**
- * Only valid for request obtained from http.Server.
- */
- url?: string;
- /**
- * Only valid for response obtained from http.ClientRequest.
- */
- statusCode?: number;
- /**
- * Only valid for response obtained from http.ClientRequest.
- */
- statusMessage?: string;
- destroy(error?: Error): void;
- }
-
- interface AgentOptions {
- /**
- * Keep sockets around in a pool to be used by other requests in the future. Default = false
- */
- keepAlive?: boolean;
- /**
- * When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 1000.
- * Only relevant if keepAlive is set to true.
- */
- keepAliveMsecs?: number;
- /**
- * Maximum number of sockets to allow per host. Default for Node 0.10 is 5, default for Node 0.12 is Infinity
- */
- maxSockets?: number;
- /**
- * Maximum number of sockets to leave open in a free state. Only relevant if keepAlive is set to true. Default = 256.
- */
- maxFreeSockets?: number;
- /**
- * Socket timeout in milliseconds. This will set the timeout after the socket is connected.
- */
- timeout?: number;
- }
-
- class Agent {
- maxFreeSockets: number;
- maxSockets: number;
- readonly sockets: {
- readonly [key: string]: Socket[];
- };
- readonly requests: {
- readonly [key: string]: IncomingMessage[];
- };
-
- constructor(opts?: AgentOptions);
-
- /**
- * Destroy any sockets that are currently in use by the agent.
- * It is usually not necessary to do this. However, if you are using an agent with KeepAlive enabled,
- * then it is best to explicitly shut down the agent when you know that it will no longer be used. Otherwise,
- * sockets may hang open for quite a long time before the server terminates them.
- */
- destroy(): void;
- }
-
- const METHODS: string[];
-
- const STATUS_CODES: {
- [errorCode: number]: string | undefined;
- [errorCode: string]: string | undefined;
- };
-
- function createServer(requestListener?: RequestListener): Server;
- function createServer(options: ServerOptions, requestListener?: RequestListener): Server;
-
- // although RequestOptions are passed as ClientRequestArgs to ClientRequest directly,
- // create interface RequestOptions would make the naming more clear to developers
- interface RequestOptions extends ClientRequestArgs { }
- function request(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest;
- function request(url: string | URL, options: RequestOptions, callback?: (res: IncomingMessage) => void): ClientRequest;
- function get(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest;
- function get(url: string | URL, options: RequestOptions, callback?: (res: IncomingMessage) => void): ClientRequest;
- let globalAgent: Agent;
-
- /**
- * Read-only property specifying the maximum allowed size of HTTP headers in bytes.
- * Defaults to 8KB. Configurable using the [`--max-http-header-size`][] CLI option.
- */
- const maxHeaderSize: number;
-}
diff --git a/assets/node_modules/@types/node/http2.d.ts b/assets/node_modules/@types/node/http2.d.ts
deleted file mode 100644
index 667dc1c..0000000
--- a/assets/node_modules/@types/node/http2.d.ts
+++ /dev/null
@@ -1,948 +0,0 @@
-declare module "http2" {
- import * as events from "events";
- import * as fs from "fs";
- import * as net from "net";
- import * as stream from "stream";
- import * as tls from "tls";
- import * as url from "url";
-
- import { IncomingHttpHeaders as Http1IncomingHttpHeaders, OutgoingHttpHeaders, IncomingMessage, ServerResponse } from "http";
- export { OutgoingHttpHeaders } from "http";
-
- export interface IncomingHttpStatusHeader {
- ":status"?: number;
- }
-
- export interface IncomingHttpHeaders extends Http1IncomingHttpHeaders {
- ":path"?: string;
- ":method"?: string;
- ":authority"?: string;
- ":scheme"?: string;
- }
-
- // Http2Stream
-
- export interface StreamPriorityOptions {
- exclusive?: boolean;
- parent?: number;
- weight?: number;
- silent?: boolean;
- }
-
- export interface StreamState {
- localWindowSize?: number;
- state?: number;
- localClose?: number;
- remoteClose?: number;
- sumDependencyWeight?: number;
- weight?: number;
- }
-
- export interface ServerStreamResponseOptions {
- endStream?: boolean;
- waitForTrailers?: boolean;
- }
-
- export interface StatOptions {
- offset: number;
- length: number;
- }
-
- export interface ServerStreamFileResponseOptions {
- statCheck?(stats: fs.Stats, headers: OutgoingHttpHeaders, statOptions: StatOptions): void | boolean;
- waitForTrailers?: boolean;
- offset?: number;
- length?: number;
- }
-
- export interface ServerStreamFileResponseOptionsWithError extends ServerStreamFileResponseOptions {
- onError?(err: NodeJS.ErrnoException): void;
- }
-
- export interface Http2Stream extends stream.Duplex {
- readonly aborted: boolean;
- readonly bufferSize: number;
- readonly closed: boolean;
- readonly destroyed: boolean;
- /**
- * Set the true if the END_STREAM flag was set in the request or response HEADERS frame received,
- * indicating that no additional data should be received and the readable side of the Http2Stream will be closed.
- */
- readonly endAfterHeaders: boolean;
- readonly id?: number;
- readonly pending: boolean;
- readonly rstCode: number;
- readonly sentHeaders: OutgoingHttpHeaders;
- readonly sentInfoHeaders?: OutgoingHttpHeaders[];
- readonly sentTrailers?: OutgoingHttpHeaders;
- readonly session: Http2Session;
- readonly state: StreamState;
-
- close(code?: number, callback?: () => void): void;
- priority(options: StreamPriorityOptions): void;
- setTimeout(msecs: number, callback?: () => void): void;
- sendTrailers(headers: OutgoingHttpHeaders): void;
-
- addListener(event: "aborted", listener: () => void): this;
- addListener(event: "close", listener: () => void): this;
- addListener(event: "data", listener: (chunk: Buffer | string) => void): this;
- addListener(event: "drain", listener: () => void): this;
- addListener(event: "end", listener: () => void): this;
- addListener(event: "error", listener: (err: Error) => void): this;
- addListener(event: "finish", listener: () => void): this;
- addListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
- addListener(event: "pipe", listener: (src: stream.Readable) => void): this;
- addListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
- addListener(event: "streamClosed", listener: (code: number) => void): this;
- addListener(event: "timeout", listener: () => void): this;
- addListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
- addListener(event: "wantTrailers", listener: () => void): this;
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- emit(event: "aborted"): boolean;
- emit(event: "close"): boolean;
- emit(event: "data", chunk: Buffer | string): boolean;
- emit(event: "drain"): boolean;
- emit(event: "end"): boolean;
- emit(event: "error", err: Error): boolean;
- emit(event: "finish"): boolean;
- emit(event: "frameError", frameType: number, errorCode: number): boolean;
- emit(event: "pipe", src: stream.Readable): boolean;
- emit(event: "unpipe", src: stream.Readable): boolean;
- emit(event: "streamClosed", code: number): boolean;
- emit(event: "timeout"): boolean;
- emit(event: "trailers", trailers: IncomingHttpHeaders, flags: number): boolean;
- emit(event: "wantTrailers"): boolean;
- emit(event: string | symbol, ...args: any[]): boolean;
-
- on(event: "aborted", listener: () => void): this;
- on(event: "close", listener: () => void): this;
- on(event: "data", listener: (chunk: Buffer | string) => void): this;
- on(event: "drain", listener: () => void): this;
- on(event: "end", listener: () => void): this;
- on(event: "error", listener: (err: Error) => void): this;
- on(event: "finish", listener: () => void): this;
- on(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
- on(event: "pipe", listener: (src: stream.Readable) => void): this;
- on(event: "unpipe", listener: (src: stream.Readable) => void): this;
- on(event: "streamClosed", listener: (code: number) => void): this;
- on(event: "timeout", listener: () => void): this;
- on(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
- on(event: "wantTrailers", listener: () => void): this;
- on(event: string | symbol, listener: (...args: any[]) => void): this;
-
- once(event: "aborted", listener: () => void): this;
- once(event: "close", listener: () => void): this;
- once(event: "data", listener: (chunk: Buffer | string) => void): this;
- once(event: "drain", listener: () => void): this;
- once(event: "end", listener: () => void): this;
- once(event: "error", listener: (err: Error) => void): this;
- once(event: "finish", listener: () => void): this;
- once(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
- once(event: "pipe", listener: (src: stream.Readable) => void): this;
- once(event: "unpipe", listener: (src: stream.Readable) => void): this;
- once(event: "streamClosed", listener: (code: number) => void): this;
- once(event: "timeout", listener: () => void): this;
- once(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
- once(event: "wantTrailers", listener: () => void): this;
- once(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependListener(event: "aborted", listener: () => void): this;
- prependListener(event: "close", listener: () => void): this;
- prependListener(event: "data", listener: (chunk: Buffer | string) => void): this;
- prependListener(event: "drain", listener: () => void): this;
- prependListener(event: "end", listener: () => void): this;
- prependListener(event: "error", listener: (err: Error) => void): this;
- prependListener(event: "finish", listener: () => void): this;
- prependListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
- prependListener(event: "pipe", listener: (src: stream.Readable) => void): this;
- prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
- prependListener(event: "streamClosed", listener: (code: number) => void): this;
- prependListener(event: "timeout", listener: () => void): this;
- prependListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
- prependListener(event: "wantTrailers", listener: () => void): this;
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependOnceListener(event: "aborted", listener: () => void): this;
- prependOnceListener(event: "close", listener: () => void): this;
- prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this;
- prependOnceListener(event: "drain", listener: () => void): this;
- prependOnceListener(event: "end", listener: () => void): this;
- prependOnceListener(event: "error", listener: (err: Error) => void): this;
- prependOnceListener(event: "finish", listener: () => void): this;
- prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
- prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this;
- prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
- prependOnceListener(event: "streamClosed", listener: (code: number) => void): this;
- prependOnceListener(event: "timeout", listener: () => void): this;
- prependOnceListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
- prependOnceListener(event: "wantTrailers", listener: () => void): this;
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
- }
-
- export interface ClientHttp2Stream extends Http2Stream {
- addListener(event: "continue", listener: () => {}): this;
- addListener(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
- addListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
- addListener(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- emit(event: "continue"): boolean;
- emit(event: "headers", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean;
- emit(event: "push", headers: IncomingHttpHeaders, flags: number): boolean;
- emit(event: "response", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean;
- emit(event: string | symbol, ...args: any[]): boolean;
-
- on(event: "continue", listener: () => {}): this;
- on(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
- on(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
- on(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
- on(event: string | symbol, listener: (...args: any[]) => void): this;
-
- once(event: "continue", listener: () => {}): this;
- once(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
- once(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
- once(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
- once(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependListener(event: "continue", listener: () => {}): this;
- prependListener(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
- prependListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
- prependListener(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependOnceListener(event: "continue", listener: () => {}): this;
- prependOnceListener(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
- prependOnceListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
- prependOnceListener(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
- }
-
- export interface ServerHttp2Stream extends Http2Stream {
- readonly headersSent: boolean;
- readonly pushAllowed: boolean;
- additionalHeaders(headers: OutgoingHttpHeaders): void;
- pushStream(headers: OutgoingHttpHeaders, callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void): void;
- pushStream(headers: OutgoingHttpHeaders, options?: StreamPriorityOptions, callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void): void;
- respond(headers?: OutgoingHttpHeaders, options?: ServerStreamResponseOptions): void;
- respondWithFD(fd: number | fs.promises.FileHandle, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptions): void;
- respondWithFile(path: string, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptionsWithError): void;
- }
-
- // Http2Session
-
- export interface Settings {
- headerTableSize?: number;
- enablePush?: boolean;
- initialWindowSize?: number;
- maxFrameSize?: number;
- maxConcurrentStreams?: number;
- maxHeaderListSize?: number;
- enableConnectProtocol?: boolean;
- }
-
- export interface ClientSessionRequestOptions {
- endStream?: boolean;
- exclusive?: boolean;
- parent?: number;
- weight?: number;
- waitForTrailers?: boolean;
- }
-
- export interface SessionState {
- effectiveLocalWindowSize?: number;
- effectiveRecvDataLength?: number;
- nextStreamID?: number;
- localWindowSize?: number;
- lastProcStreamID?: number;
- remoteWindowSize?: number;
- outboundQueueSize?: number;
- deflateDynamicTableSize?: number;
- inflateDynamicTableSize?: number;
- }
-
- export interface Http2Session extends events.EventEmitter {
- readonly alpnProtocol?: string;
- readonly closed: boolean;
- readonly connecting: boolean;
- readonly destroyed: boolean;
- readonly encrypted?: boolean;
- readonly localSettings: Settings;
- readonly originSet?: string[];
- readonly pendingSettingsAck: boolean;
- readonly remoteSettings: Settings;
- readonly socket: net.Socket | tls.TLSSocket;
- readonly state: SessionState;
- readonly type: number;
-
- close(callback?: () => void): void;
- destroy(error?: Error, code?: number): void;
- goaway(code?: number, lastStreamID?: number, opaqueData?: NodeJS.ArrayBufferView): void;
- ping(callback: (err: Error | null, duration: number, payload: Buffer) => void): boolean;
- ping(payload: NodeJS.ArrayBufferView, callback: (err: Error | null, duration: number, payload: Buffer) => void): boolean;
- ref(): void;
- setTimeout(msecs: number, callback?: () => void): void;
- settings(settings: Settings): void;
- unref(): void;
-
- addListener(event: "close", listener: () => void): this;
- addListener(event: "error", listener: (err: Error) => void): this;
- addListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
- addListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
- addListener(event: "localSettings", listener: (settings: Settings) => void): this;
- addListener(event: "ping", listener: () => void): this;
- addListener(event: "remoteSettings", listener: (settings: Settings) => void): this;
- addListener(event: "timeout", listener: () => void): this;
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- emit(event: "close"): boolean;
- emit(event: "error", err: Error): boolean;
- emit(event: "frameError", frameType: number, errorCode: number, streamID: number): boolean;
- emit(event: "goaway", errorCode: number, lastStreamID: number, opaqueData: Buffer): boolean;
- emit(event: "localSettings", settings: Settings): boolean;
- emit(event: "ping"): boolean;
- emit(event: "remoteSettings", settings: Settings): boolean;
- emit(event: "timeout"): boolean;
- emit(event: string | symbol, ...args: any[]): boolean;
-
- on(event: "close", listener: () => void): this;
- on(event: "error", listener: (err: Error) => void): this;
- on(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
- on(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
- on(event: "localSettings", listener: (settings: Settings) => void): this;
- on(event: "ping", listener: () => void): this;
- on(event: "remoteSettings", listener: (settings: Settings) => void): this;
- on(event: "timeout", listener: () => void): this;
- on(event: string | symbol, listener: (...args: any[]) => void): this;
-
- once(event: "close", listener: () => void): this;
- once(event: "error", listener: (err: Error) => void): this;
- once(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
- once(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
- once(event: "localSettings", listener: (settings: Settings) => void): this;
- once(event: "ping", listener: () => void): this;
- once(event: "remoteSettings", listener: (settings: Settings) => void): this;
- once(event: "timeout", listener: () => void): this;
- once(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependListener(event: "close", listener: () => void): this;
- prependListener(event: "error", listener: (err: Error) => void): this;
- prependListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
- prependListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
- prependListener(event: "localSettings", listener: (settings: Settings) => void): this;
- prependListener(event: "ping", listener: () => void): this;
- prependListener(event: "remoteSettings", listener: (settings: Settings) => void): this;
- prependListener(event: "timeout", listener: () => void): this;
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependOnceListener(event: "close", listener: () => void): this;
- prependOnceListener(event: "error", listener: (err: Error) => void): this;
- prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
- prependOnceListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
- prependOnceListener(event: "localSettings", listener: (settings: Settings) => void): this;
- prependOnceListener(event: "ping", listener: () => void): this;
- prependOnceListener(event: "remoteSettings", listener: (settings: Settings) => void): this;
- prependOnceListener(event: "timeout", listener: () => void): this;
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
- }
-
- export interface ClientHttp2Session extends Http2Session {
- request(headers?: OutgoingHttpHeaders, options?: ClientSessionRequestOptions): ClientHttp2Stream;
-
- addListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
- addListener(event: "origin", listener: (origins: string[]) => void): this;
- addListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
- addListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- emit(event: "altsvc", alt: string, origin: string, stream: number): boolean;
- emit(event: "origin", origins: string[]): boolean;
- emit(event: "connect", session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket): boolean;
- emit(event: "stream", stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean;
- emit(event: string | symbol, ...args: any[]): boolean;
-
- on(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
- on(event: "origin", listener: (origins: string[]) => void): this;
- on(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
- on(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
- on(event: string | symbol, listener: (...args: any[]) => void): this;
-
- once(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
- once(event: "origin", listener: (origins: string[]) => void): this;
- once(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
- once(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
- once(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
- prependListener(event: "origin", listener: (origins: string[]) => void): this;
- prependListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
- prependListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependOnceListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
- prependOnceListener(event: "origin", listener: (origins: string[]) => void): this;
- prependOnceListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
- prependOnceListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
- }
-
- export interface AlternativeServiceOptions {
- origin: number | string | url.URL;
- }
-
- export interface ServerHttp2Session extends Http2Session {
- readonly server: Http2Server | Http2SecureServer;
-
- altsvc(alt: string, originOrStream: number | string | url.URL | AlternativeServiceOptions): void;
- origin(...args: Array<string | url.URL | { origin: string }>): void;
-
- addListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
- addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- emit(event: "connect", session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket): boolean;
- emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;
- emit(event: string | symbol, ...args: any[]): boolean;
-
- on(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
- on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
- on(event: string | symbol, listener: (...args: any[]) => void): this;
-
- once(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
- once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
- once(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
- prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependOnceListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
- prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
- }
-
- // Http2Server
-
- export interface SessionOptions {
- maxDeflateDynamicTableSize?: number;
- maxSessionMemory?: number;
- maxHeaderListPairs?: number;
- maxOutstandingPings?: number;
- maxSendHeaderBlockLength?: number;
- paddingStrategy?: number;
- peerMaxConcurrentStreams?: number;
- settings?: Settings;
-
- selectPadding?(frameLen: number, maxFrameLen: number): number;
- createConnection?(authority: url.URL, option: SessionOptions): stream.Duplex;
- }
-
- export interface ClientSessionOptions extends SessionOptions {
- maxReservedRemoteStreams?: number;
- createConnection?: (authority: url.URL, option: SessionOptions) => stream.Duplex;
- protocol?: 'http:' | 'https:';
- }
-
- export interface ServerSessionOptions extends SessionOptions {
- Http1IncomingMessage?: typeof IncomingMessage;
- Http1ServerResponse?: typeof ServerResponse;
- Http2ServerRequest?: typeof Http2ServerRequest;
- Http2ServerResponse?: typeof Http2ServerResponse;
- }
-
- export interface SecureClientSessionOptions extends ClientSessionOptions, tls.ConnectionOptions { }
- export interface SecureServerSessionOptions extends ServerSessionOptions, tls.TlsOptions { }
-
- export interface ServerOptions extends ServerSessionOptions { }
-
- export interface SecureServerOptions extends SecureServerSessionOptions {
- allowHTTP1?: boolean;
- origins?: string[];
- }
-
- export interface Http2Server extends net.Server {
- addListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- addListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
- addListener(event: "sessionError", listener: (err: Error) => void): this;
- addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
- addListener(event: "timeout", listener: () => void): this;
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- emit(event: "checkContinue", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
- emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
- emit(event: "session", session: ServerHttp2Session): boolean;
- emit(event: "sessionError", err: Error): boolean;
- emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;
- emit(event: "timeout"): boolean;
- emit(event: string | symbol, ...args: any[]): boolean;
-
- on(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- on(event: "session", listener: (session: ServerHttp2Session) => void): this;
- on(event: "sessionError", listener: (err: Error) => void): this;
- on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
- on(event: "timeout", listener: () => void): this;
- on(event: string | symbol, listener: (...args: any[]) => void): this;
-
- once(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- once(event: "session", listener: (session: ServerHttp2Session) => void): this;
- once(event: "sessionError", listener: (err: Error) => void): this;
- once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
- once(event: "timeout", listener: () => void): this;
- once(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- prependListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
- prependListener(event: "sessionError", listener: (err: Error) => void): this;
- prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
- prependListener(event: "timeout", listener: () => void): this;
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependOnceListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- prependOnceListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
- prependOnceListener(event: "sessionError", listener: (err: Error) => void): this;
- prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
- prependOnceListener(event: "timeout", listener: () => void): this;
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- setTimeout(msec?: number, callback?: () => void): this;
- }
-
- export interface Http2SecureServer extends tls.Server {
- addListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- addListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
- addListener(event: "sessionError", listener: (err: Error) => void): this;
- addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
- addListener(event: "timeout", listener: () => void): this;
- addListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- emit(event: "checkContinue", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
- emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
- emit(event: "session", session: ServerHttp2Session): boolean;
- emit(event: "sessionError", err: Error): boolean;
- emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;
- emit(event: "timeout"): boolean;
- emit(event: "unknownProtocol", socket: tls.TLSSocket): boolean;
- emit(event: string | symbol, ...args: any[]): boolean;
-
- on(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- on(event: "session", listener: (session: ServerHttp2Session) => void): this;
- on(event: "sessionError", listener: (err: Error) => void): this;
- on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
- on(event: "timeout", listener: () => void): this;
- on(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
- on(event: string | symbol, listener: (...args: any[]) => void): this;
-
- once(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- once(event: "session", listener: (session: ServerHttp2Session) => void): this;
- once(event: "sessionError", listener: (err: Error) => void): this;
- once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
- once(event: "timeout", listener: () => void): this;
- once(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
- once(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- prependListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
- prependListener(event: "sessionError", listener: (err: Error) => void): this;
- prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
- prependListener(event: "timeout", listener: () => void): this;
- prependListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependOnceListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
- prependOnceListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
- prependOnceListener(event: "sessionError", listener: (err: Error) => void): this;
- prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
- prependOnceListener(event: "timeout", listener: () => void): this;
- prependOnceListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- setTimeout(msec?: number, callback?: () => void): this;
- }
-
- export class Http2ServerRequest extends stream.Readable {
- constructor(stream: ServerHttp2Stream, headers: IncomingHttpHeaders, options: stream.ReadableOptions, rawHeaders: string[]);
-
- readonly aborted: boolean;
- readonly authority: string;
- readonly headers: IncomingHttpHeaders;
- readonly httpVersion: string;
- readonly method: string;
- readonly rawHeaders: string[];
- readonly rawTrailers: string[];
- readonly scheme: string;
- readonly socket: net.Socket | tls.TLSSocket;
- readonly stream: ServerHttp2Stream;
- readonly trailers: IncomingHttpHeaders;
- readonly url: string;
-
- setTimeout(msecs: number, callback?: () => void): void;
- read(size?: number): Buffer | string | null;
-
- addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
- addListener(event: "close", listener: () => void): this;
- addListener(event: "data", listener: (chunk: Buffer | string) => void): this;
- addListener(event: "end", listener: () => void): this;
- addListener(event: "readable", listener: () => void): this;
- addListener(event: "error", listener: (err: Error) => void): this;
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- emit(event: "aborted", hadError: boolean, code: number): boolean;
- emit(event: "close"): boolean;
- emit(event: "data", chunk: Buffer | string): boolean;
- emit(event: "end"): boolean;
- emit(event: "readable"): boolean;
- emit(event: "error", err: Error): boolean;
- emit(event: string | symbol, ...args: any[]): boolean;
-
- on(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
- on(event: "close", listener: () => void): this;
- on(event: "data", listener: (chunk: Buffer | string) => void): this;
- on(event: "end", listener: () => void): this;
- on(event: "readable", listener: () => void): this;
- on(event: "error", listener: (err: Error) => void): this;
- on(event: string | symbol, listener: (...args: any[]) => void): this;
-
- once(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
- once(event: "close", listener: () => void): this;
- once(event: "data", listener: (chunk: Buffer | string) => void): this;
- once(event: "end", listener: () => void): this;
- once(event: "readable", listener: () => void): this;
- once(event: "error", listener: (err: Error) => void): this;
- once(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
- prependListener(event: "close", listener: () => void): this;
- prependListener(event: "data", listener: (chunk: Buffer | string) => void): this;
- prependListener(event: "end", listener: () => void): this;
- prependListener(event: "readable", listener: () => void): this;
- prependListener(event: "error", listener: (err: Error) => void): this;
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
- prependOnceListener(event: "close", listener: () => void): this;
- prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this;
- prependOnceListener(event: "end", listener: () => void): this;
- prependOnceListener(event: "readable", listener: () => void): this;
- prependOnceListener(event: "error", listener: (err: Error) => void): this;
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
- }
-
- export class Http2ServerResponse extends stream.Stream {
- constructor(stream: ServerHttp2Stream);
-
- readonly connection: net.Socket | tls.TLSSocket;
- readonly finished: boolean;
- readonly headersSent: boolean;
- readonly socket: net.Socket | tls.TLSSocket;
- readonly stream: ServerHttp2Stream;
- sendDate: boolean;
- statusCode: number;
- statusMessage: '';
- addTrailers(trailers: OutgoingHttpHeaders): void;
- end(callback?: () => void): void;
- end(data: string | Uint8Array, callback?: () => void): void;
- end(data: string | Uint8Array, encoding: string, callback?: () => void): void;
- getHeader(name: string): string;
- getHeaderNames(): string[];
- getHeaders(): OutgoingHttpHeaders;
- hasHeader(name: string): boolean;
- removeHeader(name: string): void;
- setHeader(name: string, value: number | string | string[]): void;
- setTimeout(msecs: number, callback?: () => void): void;
- write(chunk: string | Uint8Array, callback?: (err: Error) => void): boolean;
- write(chunk: string | Uint8Array, encoding: string, callback?: (err: Error) => void): boolean;
- writeContinue(): void;
- writeHead(statusCode: number, headers?: OutgoingHttpHeaders): this;
- writeHead(statusCode: number, statusMessage: string, headers?: OutgoingHttpHeaders): this;
- createPushResponse(headers: OutgoingHttpHeaders, callback: (err: Error | null, res: Http2ServerResponse) => void): void;
-
- addListener(event: "close", listener: () => void): this;
- addListener(event: "drain", listener: () => void): this;
- addListener(event: "error", listener: (error: Error) => void): this;
- addListener(event: "finish", listener: () => void): this;
- addListener(event: "pipe", listener: (src: stream.Readable) => void): this;
- addListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- emit(event: "close"): boolean;
- emit(event: "drain"): boolean;
- emit(event: "error", error: Error): boolean;
- emit(event: "finish"): boolean;
- emit(event: "pipe", src: stream.Readable): boolean;
- emit(event: "unpipe", src: stream.Readable): boolean;
- emit(event: string | symbol, ...args: any[]): boolean;
-
- on(event: "close", listener: () => void): this;
- on(event: "drain", listener: () => void): this;
- on(event: "error", listener: (error: Error) => void): this;
- on(event: "finish", listener: () => void): this;
- on(event: "pipe", listener: (src: stream.Readable) => void): this;
- on(event: "unpipe", listener: (src: stream.Readable) => void): this;
- on(event: string | symbol, listener: (...args: any[]) => void): this;
-
- once(event: "close", listener: () => void): this;
- once(event: "drain", listener: () => void): this;
- once(event: "error", listener: (error: Error) => void): this;
- once(event: "finish", listener: () => void): this;
- once(event: "pipe", listener: (src: stream.Readable) => void): this;
- once(event: "unpipe", listener: (src: stream.Readable) => void): this;
- once(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependListener(event: "close", listener: () => void): this;
- prependListener(event: "drain", listener: () => void): this;
- prependListener(event: "error", listener: (error: Error) => void): this;
- prependListener(event: "finish", listener: () => void): this;
- prependListener(event: "pipe", listener: (src: stream.Readable) => void): this;
- prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependOnceListener(event: "close", listener: () => void): this;
- prependOnceListener(event: "drain", listener: () => void): this;
- prependOnceListener(event: "error", listener: (error: Error) => void): this;
- prependOnceListener(event: "finish", listener: () => void): this;
- prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this;
- prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
- }
-
- // Public API
-
- export namespace constants {
- const NGHTTP2_SESSION_SERVER: number;
- const NGHTTP2_SESSION_CLIENT: number;
- const NGHTTP2_STREAM_STATE_IDLE: number;
- const NGHTTP2_STREAM_STATE_OPEN: number;
- const NGHTTP2_STREAM_STATE_RESERVED_LOCAL: number;
- const NGHTTP2_STREAM_STATE_RESERVED_REMOTE: number;
- const NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL: number;
- const NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE: number;
- const NGHTTP2_STREAM_STATE_CLOSED: number;
- const NGHTTP2_NO_ERROR: number;
- const NGHTTP2_PROTOCOL_ERROR: number;
- const NGHTTP2_INTERNAL_ERROR: number;
- const NGHTTP2_FLOW_CONTROL_ERROR: number;
- const NGHTTP2_SETTINGS_TIMEOUT: number;
- const NGHTTP2_STREAM_CLOSED: number;
- const NGHTTP2_FRAME_SIZE_ERROR: number;
- const NGHTTP2_REFUSED_STREAM: number;
- const NGHTTP2_CANCEL: number;
- const NGHTTP2_COMPRESSION_ERROR: number;
- const NGHTTP2_CONNECT_ERROR: number;
- const NGHTTP2_ENHANCE_YOUR_CALM: number;
- const NGHTTP2_INADEQUATE_SECURITY: number;
- const NGHTTP2_HTTP_1_1_REQUIRED: number;
- const NGHTTP2_ERR_FRAME_SIZE_ERROR: number;
- const NGHTTP2_FLAG_NONE: number;
- const NGHTTP2_FLAG_END_STREAM: number;
- const NGHTTP2_FLAG_END_HEADERS: number;
- const NGHTTP2_FLAG_ACK: number;
- const NGHTTP2_FLAG_PADDED: number;
- const NGHTTP2_FLAG_PRIORITY: number;
- const DEFAULT_SETTINGS_HEADER_TABLE_SIZE: number;
- const DEFAULT_SETTINGS_ENABLE_PUSH: number;
- const DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE: number;
- const DEFAULT_SETTINGS_MAX_FRAME_SIZE: number;
- const MAX_MAX_FRAME_SIZE: number;
- const MIN_MAX_FRAME_SIZE: number;
- const MAX_INITIAL_WINDOW_SIZE: number;
- const NGHTTP2_DEFAULT_WEIGHT: number;
- const NGHTTP2_SETTINGS_HEADER_TABLE_SIZE: number;
- const NGHTTP2_SETTINGS_ENABLE_PUSH: number;
- const NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS: number;
- const NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE: number;
- const NGHTTP2_SETTINGS_MAX_FRAME_SIZE: number;
- const NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE: number;
- const PADDING_STRATEGY_NONE: number;
- const PADDING_STRATEGY_MAX: number;
- const PADDING_STRATEGY_CALLBACK: number;
- const HTTP2_HEADER_STATUS: string;
- const HTTP2_HEADER_METHOD: string;
- const HTTP2_HEADER_AUTHORITY: string;
- const HTTP2_HEADER_SCHEME: string;
- const HTTP2_HEADER_PATH: string;
- const HTTP2_HEADER_ACCEPT_CHARSET: string;
- const HTTP2_HEADER_ACCEPT_ENCODING: string;
- const HTTP2_HEADER_ACCEPT_LANGUAGE: string;
- const HTTP2_HEADER_ACCEPT_RANGES: string;
- const HTTP2_HEADER_ACCEPT: string;
- const HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN: string;
- const HTTP2_HEADER_AGE: string;
- const HTTP2_HEADER_ALLOW: string;
- const HTTP2_HEADER_AUTHORIZATION: string;
- const HTTP2_HEADER_CACHE_CONTROL: string;
- const HTTP2_HEADER_CONNECTION: string;
- const HTTP2_HEADER_CONTENT_DISPOSITION: string;
- const HTTP2_HEADER_CONTENT_ENCODING: string;
- const HTTP2_HEADER_CONTENT_LANGUAGE: string;
- const HTTP2_HEADER_CONTENT_LENGTH: string;
- const HTTP2_HEADER_CONTENT_LOCATION: string;
- const HTTP2_HEADER_CONTENT_MD5: string;
- const HTTP2_HEADER_CONTENT_RANGE: string;
- const HTTP2_HEADER_CONTENT_TYPE: string;
- const HTTP2_HEADER_COOKIE: string;
- const HTTP2_HEADER_DATE: string;
- const HTTP2_HEADER_ETAG: string;
- const HTTP2_HEADER_EXPECT: string;
- const HTTP2_HEADER_EXPIRES: string;
- const HTTP2_HEADER_FROM: string;
- const HTTP2_HEADER_HOST: string;
- const HTTP2_HEADER_IF_MATCH: string;
- const HTTP2_HEADER_IF_MODIFIED_SINCE: string;
- const HTTP2_HEADER_IF_NONE_MATCH: string;
- const HTTP2_HEADER_IF_RANGE: string;
- const HTTP2_HEADER_IF_UNMODIFIED_SINCE: string;
- const HTTP2_HEADER_LAST_MODIFIED: string;
- const HTTP2_HEADER_LINK: string;
- const HTTP2_HEADER_LOCATION: string;
- const HTTP2_HEADER_MAX_FORWARDS: string;
- const HTTP2_HEADER_PREFER: string;
- const HTTP2_HEADER_PROXY_AUTHENTICATE: string;
- const HTTP2_HEADER_PROXY_AUTHORIZATION: string;
- const HTTP2_HEADER_RANGE: string;
- const HTTP2_HEADER_REFERER: string;
- const HTTP2_HEADER_REFRESH: string;
- const HTTP2_HEADER_RETRY_AFTER: string;
- const HTTP2_HEADER_SERVER: string;
- const HTTP2_HEADER_SET_COOKIE: string;
- const HTTP2_HEADER_STRICT_TRANSPORT_SECURITY: string;
- const HTTP2_HEADER_TRANSFER_ENCODING: string;
- const HTTP2_HEADER_TE: string;
- const HTTP2_HEADER_UPGRADE: string;
- const HTTP2_HEADER_USER_AGENT: string;
- const HTTP2_HEADER_VARY: string;
- const HTTP2_HEADER_VIA: string;
- const HTTP2_HEADER_WWW_AUTHENTICATE: string;
- const HTTP2_HEADER_HTTP2_SETTINGS: string;
- const HTTP2_HEADER_KEEP_ALIVE: string;
- const HTTP2_HEADER_PROXY_CONNECTION: string;
- const HTTP2_METHOD_ACL: string;
- const HTTP2_METHOD_BASELINE_CONTROL: string;
- const HTTP2_METHOD_BIND: string;
- const HTTP2_METHOD_CHECKIN: string;
- const HTTP2_METHOD_CHECKOUT: string;
- const HTTP2_METHOD_CONNECT: string;
- const HTTP2_METHOD_COPY: string;
- const HTTP2_METHOD_DELETE: string;
- const HTTP2_METHOD_GET: string;
- const HTTP2_METHOD_HEAD: string;
- const HTTP2_METHOD_LABEL: string;
- const HTTP2_METHOD_LINK: string;
- const HTTP2_METHOD_LOCK: string;
- const HTTP2_METHOD_MERGE: string;
- const HTTP2_METHOD_MKACTIVITY: string;
- const HTTP2_METHOD_MKCALENDAR: string;
- const HTTP2_METHOD_MKCOL: string;
- const HTTP2_METHOD_MKREDIRECTREF: string;
- const HTTP2_METHOD_MKWORKSPACE: string;
- const HTTP2_METHOD_MOVE: string;
- const HTTP2_METHOD_OPTIONS: string;
- const HTTP2_METHOD_ORDERPATCH: string;
- const HTTP2_METHOD_PATCH: string;
- const HTTP2_METHOD_POST: string;
- const HTTP2_METHOD_PRI: string;
- const HTTP2_METHOD_PROPFIND: string;
- const HTTP2_METHOD_PROPPATCH: string;
- const HTTP2_METHOD_PUT: string;
- const HTTP2_METHOD_REBIND: string;
- const HTTP2_METHOD_REPORT: string;
- const HTTP2_METHOD_SEARCH: string;
- const HTTP2_METHOD_TRACE: string;
- const HTTP2_METHOD_UNBIND: string;
- const HTTP2_METHOD_UNCHECKOUT: string;
- const HTTP2_METHOD_UNLINK: string;
- const HTTP2_METHOD_UNLOCK: string;
- const HTTP2_METHOD_UPDATE: string;
- const HTTP2_METHOD_UPDATEREDIRECTREF: string;
- const HTTP2_METHOD_VERSION_CONTROL: string;
- const HTTP_STATUS_CONTINUE: number;
- const HTTP_STATUS_SWITCHING_PROTOCOLS: number;
- const HTTP_STATUS_PROCESSING: number;
- const HTTP_STATUS_OK: number;
- const HTTP_STATUS_CREATED: number;
- const HTTP_STATUS_ACCEPTED: number;
- const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION: number;
- const HTTP_STATUS_NO_CONTENT: number;
- const HTTP_STATUS_RESET_CONTENT: number;
- const HTTP_STATUS_PARTIAL_CONTENT: number;
- const HTTP_STATUS_MULTI_STATUS: number;
- const HTTP_STATUS_ALREADY_REPORTED: number;
- const HTTP_STATUS_IM_USED: number;
- const HTTP_STATUS_MULTIPLE_CHOICES: number;
- const HTTP_STATUS_MOVED_PERMANENTLY: number;
- const HTTP_STATUS_FOUND: number;
- const HTTP_STATUS_SEE_OTHER: number;
- const HTTP_STATUS_NOT_MODIFIED: number;
- const HTTP_STATUS_USE_PROXY: number;
- const HTTP_STATUS_TEMPORARY_REDIRECT: number;
- const HTTP_STATUS_PERMANENT_REDIRECT: number;
- const HTTP_STATUS_BAD_REQUEST: number;
- const HTTP_STATUS_UNAUTHORIZED: number;
- const HTTP_STATUS_PAYMENT_REQUIRED: number;
- const HTTP_STATUS_FORBIDDEN: number;
- const HTTP_STATUS_NOT_FOUND: number;
- const HTTP_STATUS_METHOD_NOT_ALLOWED: number;
- const HTTP_STATUS_NOT_ACCEPTABLE: number;
- const HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED: number;
- const HTTP_STATUS_REQUEST_TIMEOUT: number;
- const HTTP_STATUS_CONFLICT: number;
- const HTTP_STATUS_GONE: number;
- const HTTP_STATUS_LENGTH_REQUIRED: number;
- const HTTP_STATUS_PRECONDITION_FAILED: number;
- const HTTP_STATUS_PAYLOAD_TOO_LARGE: number;
- const HTTP_STATUS_URI_TOO_LONG: number;
- const HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: number;
- const HTTP_STATUS_RANGE_NOT_SATISFIABLE: number;
- const HTTP_STATUS_EXPECTATION_FAILED: number;
- const HTTP_STATUS_TEAPOT: number;
- const HTTP_STATUS_MISDIRECTED_REQUEST: number;
- const HTTP_STATUS_UNPROCESSABLE_ENTITY: number;
- const HTTP_STATUS_LOCKED: number;
- const HTTP_STATUS_FAILED_DEPENDENCY: number;
- const HTTP_STATUS_UNORDERED_COLLECTION: number;
- const HTTP_STATUS_UPGRADE_REQUIRED: number;
- const HTTP_STATUS_PRECONDITION_REQUIRED: number;
- const HTTP_STATUS_TOO_MANY_REQUESTS: number;
- const HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE: number;
- const HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS: number;
- const HTTP_STATUS_INTERNAL_SERVER_ERROR: number;
- const HTTP_STATUS_NOT_IMPLEMENTED: number;
- const HTTP_STATUS_BAD_GATEWAY: number;
- const HTTP_STATUS_SERVICE_UNAVAILABLE: number;
- const HTTP_STATUS_GATEWAY_TIMEOUT: number;
- const HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED: number;
- const HTTP_STATUS_VARIANT_ALSO_NEGOTIATES: number;
- const HTTP_STATUS_INSUFFICIENT_STORAGE: number;
- const HTTP_STATUS_LOOP_DETECTED: number;
- const HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED: number;
- const HTTP_STATUS_NOT_EXTENDED: number;
- const HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED: number;
- }
-
- export function getDefaultSettings(): Settings;
- export function getPackedSettings(settings: Settings): Buffer;
- export function getUnpackedSettings(buf: Uint8Array): Settings;
-
- export function createServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server;
- export function createServer(options: ServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server;
-
- export function createSecureServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer;
- export function createSecureServer(options: SecureServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer;
-
- export function connect(authority: string | url.URL, listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): ClientHttp2Session;
- export function connect(
- authority: string | url.URL,
- options?: ClientSessionOptions | SecureClientSessionOptions,
- listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void
- ): ClientHttp2Session;
-}
diff --git a/assets/node_modules/@types/node/https.d.ts b/assets/node_modules/@types/node/https.d.ts
deleted file mode 100644
index 24326c9..0000000
--- a/assets/node_modules/@types/node/https.d.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-declare module "https" {
- import * as tls from "tls";
- import * as events from "events";
- import * as http from "http";
- import { URL } from "url";
-
- type ServerOptions = tls.SecureContextOptions & tls.TlsOptions & http.ServerOptions;
-
- type RequestOptions = http.RequestOptions & tls.SecureContextOptions & {
- rejectUnauthorized?: boolean; // Defaults to true
- servername?: string; // SNI TLS Extension
- };
-
- interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions {
- rejectUnauthorized?: boolean;
- maxCachedSessions?: number;
- }
-
- class Agent extends http.Agent {
- constructor(options?: AgentOptions);
- options: AgentOptions;
- }
-
- interface Server extends http.HttpBase {}
- class Server extends tls.Server {
- constructor(requestListener?: http.RequestListener);
- constructor(options: ServerOptions, requestListener?: http.RequestListener);
- }
-
- function createServer(requestListener?: http.RequestListener): Server;
- function createServer(options: ServerOptions, requestListener?: http.RequestListener): Server;
- function request(options: RequestOptions | string | URL, callback?: (res: http.IncomingMessage) => void): http.ClientRequest;
- function request(url: string | URL, options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest;
- function get(options: RequestOptions | string | URL, callback?: (res: http.IncomingMessage) => void): http.ClientRequest;
- function get(url: string | URL, options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest;
- let globalAgent: Agent;
-}
diff --git a/assets/node_modules/@types/node/index.d.ts b/assets/node_modules/@types/node/index.d.ts
deleted file mode 100644
index 8995900..0000000
--- a/assets/node_modules/@types/node/index.d.ts
+++ /dev/null
@@ -1,83 +0,0 @@
-// Type definitions for non-npm package Node.js 13.7
-// Project: http://nodejs.org/
-// Definitions by: Microsoft TypeScript <https://github.com/Microsoft>
-// DefinitelyTyped <https://github.com/DefinitelyTyped>
-// Alberto Schiabel <https://github.com/jkomyno>
-// Alexander T. <https://github.com/a-tarasyuk>
-// Alvis HT Tang <https://github.com/alvis>
-// Andrew Makarov <https://github.com/r3nya>
-// Benjamin Toueg <https://github.com/btoueg>
-// Bruno Scheufler <https://github.com/brunoscheufler>
-// Chigozirim C. <https://github.com/smac89>
-// Christian Vaagland Tellnes <https://github.com/tellnes>
-// David Junger <https://github.com/touffy>
-// Deividas Bakanas <https://github.com/DeividasBakanas>
-// Eugene Y. Q. Shen <https://github.com/eyqs>
-// Flarna <https://github.com/Flarna>
-// Hannes Magnusson <https://github.com/Hannes-Magnusson-CK>
-// Hoàng Văn Khải <https://github.com/KSXGitHub>
-// Huw <https://github.com/hoo29>
-// Kelvin Jin <https://github.com/kjin>
-// Klaus Meinhardt <https://github.com/ajafff>
-// Lishude <https://github.com/islishude>
-// Mariusz Wiktorczyk <https://github.com/mwiktorczyk>
-// Mohsen Azimi <https://github.com/mohsen1>
-// Nicolas Even <https://github.com/n-e>
-// Nicolas Voigt <https://github.com/octo-sniffle>
-// Nikita Galkin <https://github.com/galkin>
-// Parambir Singh <https://github.com/parambirs>
-// Sebastian Silbermann <https://github.com/eps1lon>
-// Simon Schick <https://github.com/SimonSchick>
-// Thomas den Hollander <https://github.com/ThomasdenH>
-// Wilco Bakker <https://github.com/WilcoBakker>
-// wwwy3y3 <https://github.com/wwwy3y3>
-// Zane Hannan AU <https://github.com/ZaneHannanAU>
-// Samuel Ainsworth <https://github.com/samuela>
-// Kyle Uehlein <https://github.com/kuehlein>
-// Jordi Oliveras Rovira <https://github.com/j-oliveras>
-// Thanik Bhongbhibhat <https://github.com/bhongy>
-// Marcin Kopacz <https://github.com/chyzwar>
-// Trivikram Kamat <https://github.com/trivikr>
-// Minh Son Nguyen <https://github.com/nguymin4>
-// Junxiao Shi <https://github.com/yoursunny>
-// Ilia Baryshnikov <https://github.com/qwelias>
-// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
-
-// NOTE: These definitions support NodeJS and TypeScript 3.5.
-
-// NOTE: TypeScript version-specific augmentations can be found in the following paths:
-// - ~/base.d.ts - Shared definitions common to all TypeScript versions
-// - ~/index.d.ts - Definitions specific to TypeScript 2.8
-// - ~/ts3.5/index.d.ts - Definitions specific to TypeScript 3.5
-
-// NOTE: Augmentations for TypeScript 3.5 and later should use individual files for overrides
-// within the respective ~/ts3.5 (or later) folder. However, this is disallowed for versions
-// prior to TypeScript 3.5, so the older definitions will be found here.
-
-// Base definitions for all NodeJS modules that are not specific to any version of TypeScript:
-/// <reference path="base.d.ts" />
-
-// Forward-declarations for needed types from es2015 and later (in case users are using `--lib es5`)
-// Empty interfaces are used here which merge fine with the real declarations in the lib XXX files
-// just to ensure the names are known and node typings can be used without importing these libs.
-// if someone really needs these types the libs need to be added via --lib or in tsconfig.json
-interface AsyncIterable<T> { }
-interface IterableIterator<T> { }
-interface AsyncIterableIterator<T> {}
-interface SymbolConstructor {
- readonly asyncIterator: symbol;
-}
-declare var Symbol: SymbolConstructor;
-// even this is just a forward declaration some properties are added otherwise
-// it would be allowed to pass anything to e.g. Buffer.from()
-interface SharedArrayBuffer {
- readonly byteLength: number;
- slice(begin?: number, end?: number): SharedArrayBuffer;
-}
-
-declare module "util" {
- namespace types {
- function isBigInt64Array(value: any): boolean;
- function isBigUint64Array(value: any): boolean;
- }
-}
diff --git a/assets/node_modules/@types/node/inspector.d.ts b/assets/node_modules/@types/node/inspector.d.ts
deleted file mode 100644
index b14aed2..0000000
--- a/assets/node_modules/@types/node/inspector.d.ts
+++ /dev/null
@@ -1,3034 +0,0 @@
-// tslint:disable-next-line:dt-header
-// Type definitions for inspector
-
-// These definitions are auto-generated.
-// Please see https://github.com/DefinitelyTyped/DefinitelyTyped/pull/19330
-// for more information.
-
-// tslint:disable:max-line-length
-
-/**
- * The inspector module provides an API for interacting with the V8 inspector.
- */
-declare module "inspector" {
- import { EventEmitter } from 'events';
-
- interface InspectorNotification<T> {
- method: string;
- params: T;
- }
-
- namespace Schema {
- /**
- * Description of the protocol domain.
- */
- interface Domain {
- /**
- * Domain name.
- */
- name: string;
- /**
- * Domain version.
- */
- version: string;
- }
-
- interface GetDomainsReturnType {
- /**
- * List of supported domains.
- */
- domains: Domain[];
- }
- }
-
- namespace Runtime {
- /**
- * Unique script identifier.
- */
- type ScriptId = string;
-
- /**
- * Unique object identifier.
- */
- type RemoteObjectId = string;
-
- /**
- * Primitive value which cannot be JSON-stringified.
- */
- type UnserializableValue = string;
-
- /**
- * Mirror object referencing original JavaScript object.
- */
- interface RemoteObject {
- /**
- * Object type.
- */
- type: string;
- /**
- * Object subtype hint. Specified for <code>object</code> type values only.
- */
- subtype?: string;
- /**
- * Object class (constructor) name. Specified for <code>object</code> type values only.
- */
- className?: string;
- /**
- * Remote object value in case of primitive values or JSON values (if it was requested).
- */
- value?: any;
- /**
- * Primitive value which can not be JSON-stringified does not have <code>value</code>, but gets this property.
- */
- unserializableValue?: UnserializableValue;
- /**
- * String representation of the object.
- */
- description?: string;
- /**
- * Unique object identifier (for non-primitive values).
- */
- objectId?: RemoteObjectId;
- /**
- * Preview containing abbreviated property values. Specified for <code>object</code> type values only.
- * @experimental
- */
- preview?: ObjectPreview;
- /**
- * @experimental
- */
- customPreview?: CustomPreview;
- }
-
- /**
- * @experimental
- */
- interface CustomPreview {
- header: string;
- hasBody: boolean;
- formatterObjectId: RemoteObjectId;
- bindRemoteObjectFunctionId: RemoteObjectId;
- configObjectId?: RemoteObjectId;
- }
-
- /**
- * Object containing abbreviated remote object value.
- * @experimental
- */
- interface ObjectPreview {
- /**
- * Object type.
- */
- type: string;
- /**
- * Object subtype hint. Specified for <code>object</code> type values only.
- */
- subtype?: string;
- /**
- * String representation of the object.
- */
- description?: string;
- /**
- * True iff some of the properties or entries of the original object did not fit.
- */
- overflow: boolean;
- /**
- * List of the properties.
- */
- properties: PropertyPreview[];
- /**
- * List of the entries. Specified for <code>map</code> and <code>set</code> subtype values only.
- */
- entries?: EntryPreview[];
- }
-
- /**
- * @experimental
- */
- interface PropertyPreview {
- /**
- * Property name.
- */
- name: string;
- /**
- * Object type. Accessor means that the property itself is an accessor property.
- */
- type: string;
- /**
- * User-friendly property value string.
- */
- value?: string;
- /**
- * Nested value preview.
- */
- valuePreview?: ObjectPreview;
- /**
- * Object subtype hint. Specified for <code>object</code> type values only.
- */
- subtype?: string;
- }
-
- /**
- * @experimental
- */
- interface EntryPreview {
- /**
- * Preview of the key. Specified for map-like collection entries.
- */
- key?: ObjectPreview;
- /**
- * Preview of the value.
- */
- value: ObjectPreview;
- }
-
- /**
- * Object property descriptor.
- */
- interface PropertyDescriptor {
- /**
- * Property name or symbol description.
- */
- name: string;
- /**
- * The value associated with the property.
- */
- value?: RemoteObject;
- /**
- * True if the value associated with the property may be changed (data descriptors only).
- */
- writable?: boolean;
- /**
- * A function which serves as a getter for the property, or <code>undefined</code> if there is no getter (accessor descriptors only).
- */
- get?: RemoteObject;
- /**
- * A function which serves as a setter for the property, or <code>undefined</code> if there is no setter (accessor descriptors only).
- */
- set?: RemoteObject;
- /**
- * True if the type of this property descriptor may be changed and if the property may be deleted from the corresponding object.
- */
- configurable: boolean;
- /**
- * True if this property shows up during enumeration of the properties on the corresponding object.
- */
- enumerable: boolean;
- /**
- * True if the result was thrown during the evaluation.
- */
- wasThrown?: boolean;
- /**
- * True if the property is owned for the object.
- */
- isOwn?: boolean;
- /**
- * Property symbol object, if the property is of the <code>symbol</code> type.
- */
- symbol?: RemoteObject;
- }
-
- /**
- * Object internal property descriptor. This property isn't normally visible in JavaScript code.
- */
- interface InternalPropertyDescriptor {
- /**
- * Conventional property name.
- */
- name: string;
- /**
- * The value associated with the property.
- */
- value?: RemoteObject;
- }
-
- /**
- * Represents function call argument. Either remote object id <code>objectId</code>, primitive <code>value</code>, unserializable primitive value or neither of (for undefined) them should be specified.
- */
- interface CallArgument {
- /**
- * Primitive value or serializable javascript object.
- */
- value?: any;
- /**
- * Primitive value which can not be JSON-stringified.
- */
- unserializableValue?: UnserializableValue;
- /**
- * Remote object handle.
- */
- objectId?: RemoteObjectId;
- }
-
- /**
- * Id of an execution context.
- */
- type ExecutionContextId = number;
-
- /**
- * Description of an isolated world.
- */
- interface ExecutionContextDescription {
- /**
- * Unique id of the execution context. It can be used to specify in which execution context script evaluation should be performed.
- */
- id: ExecutionContextId;
- /**
- * Execution context origin.
- */
- origin: string;
- /**
- * Human readable name describing given context.
- */
- name: string;
- /**
- * Embedder-specific auxiliary data.
- */
- auxData?: {};
- }
-
- /**
- * Detailed information about exception (or error) that was thrown during script compilation or execution.
- */
- interface ExceptionDetails {
- /**
- * Exception id.
- */
- exceptionId: number;
- /**
- * Exception text, which should be used together with exception object when available.
- */
- text: string;
- /**
- * Line number of the exception location (0-based).
- */
- lineNumber: number;
- /**
- * Column number of the exception location (0-based).
- */
- columnNumber: number;
- /**
- * Script ID of the exception location.
- */
- scriptId?: ScriptId;
- /**
- * URL of the exception location, to be used when the script was not reported.
- */
- url?: string;
- /**
- * JavaScript stack trace if available.
- */
- stackTrace?: StackTrace;
- /**
- * Exception object if available.
- */
- exception?: RemoteObject;
- /**
- * Identifier of the context where exception happened.
- */
- executionContextId?: ExecutionContextId;
- }
-
- /**
- * Number of milliseconds since epoch.
- */
- type Timestamp = number;
-
- /**
- * Stack entry for runtime errors and assertions.
- */
- interface CallFrame {
- /**
- * JavaScript function name.
- */
- functionName: string;
- /**
- * JavaScript script id.
- */
- scriptId: ScriptId;
- /**
- * JavaScript script name or url.
- */
- url: string;
- /**
- * JavaScript script line number (0-based).
- */
- lineNumber: number;
- /**
- * JavaScript script column number (0-based).
- */
- columnNumber: number;
- }
-
- /**
- * Call frames for assertions or error messages.
- */
- interface StackTrace {
- /**
- * String label of this stack trace. For async traces this may be a name of the function that initiated the async call.
- */
- description?: string;
- /**
- * JavaScript function name.
- */
- callFrames: CallFrame[];
- /**
- * Asynchronous JavaScript stack trace that preceded this stack, if available.
- */
- parent?: StackTrace;
- /**
- * Asynchronous JavaScript stack trace that preceded this stack, if available.
- * @experimental
- */
- parentId?: StackTraceId;
- }
-
- /**
- * Unique identifier of current debugger.
- * @experimental
- */
- type UniqueDebuggerId = string;
-
- /**
- * If <code>debuggerId</code> is set stack trace comes from another debugger and can be resolved there. This allows to track cross-debugger calls. See <code>Runtime.StackTrace</code> and <code>Debugger.paused</code> for usages.
- * @experimental
- */
- interface StackTraceId {
- id: string;
- debuggerId?: UniqueDebuggerId;
- }
-
- interface EvaluateParameterType {
- /**
- * Expression to evaluate.
- */
- expression: string;
- /**
- * Symbolic group name that can be used to release multiple objects.
- */
- objectGroup?: string;
- /**
- * Determines whether Command Line API should be available during the evaluation.
- */
- includeCommandLineAPI?: boolean;
- /**
- * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides <code>setPauseOnException</code> state.
- */
- silent?: boolean;
- /**
- * Specifies in which execution context to perform evaluation. If the parameter is omitted the evaluation will be performed in the context of the inspected page.
- */
- contextId?: ExecutionContextId;
- /**
- * Whether the result is expected to be a JSON object that should be sent by value.
- */
- returnByValue?: boolean;
- /**
- * Whether preview should be generated for the result.
- * @experimental
- */
- generatePreview?: boolean;
- /**
- * Whether execution should be treated as initiated by user in the UI.
- */
- userGesture?: boolean;
- /**
- * Whether execution should <code>await</code> for resulting value and return once awaited promise is resolved.
- */
- awaitPromise?: boolean;
- }
-
- interface AwaitPromiseParameterType {
- /**
- * Identifier of the promise.
- */
- promiseObjectId: RemoteObjectId;
- /**
- * Whether the result is expected to be a JSON object that should be sent by value.
- */
- returnByValue?: boolean;
- /**
- * Whether preview should be generated for the result.
- */
- generatePreview?: boolean;
- }
-
- interface CallFunctionOnParameterType {
- /**
- * Declaration of the function to call.
- */
- functionDeclaration: string;
- /**
- * Identifier of the object to call function on. Either objectId or executionContextId should be specified.
- */
- objectId?: RemoteObjectId;
- /**
- * Call arguments. All call arguments must belong to the same JavaScript world as the target object.
- */
- arguments?: CallArgument[];
- /**
- * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides <code>setPauseOnException</code> state.
- */
- silent?: boolean;
- /**
- * Whether the result is expected to be a JSON object which should be sent by value.
- */
- returnByValue?: boolean;
- /**
- * Whether preview should be generated for the result.
- * @experimental
- */
- generatePreview?: boolean;
- /**
- * Whether execution should be treated as initiated by user in the UI.
- */
- userGesture?: boolean;
- /**
- * Whether execution should <code>await</code> for resulting value and return once awaited promise is resolved.
- */
- awaitPromise?: boolean;
- /**
- * Specifies execution context which global object will be used to call function on. Either executionContextId or objectId should be specified.
- */
- executionContextId?: ExecutionContextId;
- /**
- * Symbolic group name that can be used to release multiple objects. If objectGroup is not specified and objectId is, objectGroup will be inherited from object.
- */
- objectGroup?: string;
- }
-
- interface GetPropertiesParameterType {
- /**
- * Identifier of the object to return properties for.
- */
- objectId: RemoteObjectId;
- /**
- * If true, returns properties belonging only to the element itself, not to its prototype chain.
- */
- ownProperties?: boolean;
- /**
- * If true, returns accessor properties (with getter/setter) only; internal properties are not returned either.
- * @experimental
- */
- accessorPropertiesOnly?: boolean;
- /**
- * Whether preview should be generated for the results.
- * @experimental
- */
- generatePreview?: boolean;
- }
-
- interface ReleaseObjectParameterType {
- /**
- * Identifier of the object to release.
- */
- objectId: RemoteObjectId;
- }
-
- interface ReleaseObjectGroupParameterType {
- /**
- * Symbolic object group name.
- */
- objectGroup: string;
- }
-
- interface SetCustomObjectFormatterEnabledParameterType {
- enabled: boolean;
- }
-
- interface CompileScriptParameterType {
- /**
- * Expression to compile.
- */
- expression: string;
- /**
- * Source url to be set for the script.
- */
- sourceURL: string;
- /**
- * Specifies whether the compiled script should be persisted.
- */
- persistScript: boolean;
- /**
- * Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page.
- */
- executionContextId?: ExecutionContextId;
- }
-
- interface RunScriptParameterType {
- /**
- * Id of the script to run.
- */
- scriptId: ScriptId;
- /**
- * Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page.
- */
- executionContextId?: ExecutionContextId;
- /**
- * Symbolic group name that can be used to release multiple objects.
- */
- objectGroup?: string;
- /**
- * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides <code>setPauseOnException</code> state.
- */
- silent?: boolean;
- /**
- * Determines whether Command Line API should be available during the evaluation.
- */
- includeCommandLineAPI?: boolean;
- /**
- * Whether the result is expected to be a JSON object which should be sent by value.
- */
- returnByValue?: boolean;
- /**
- * Whether preview should be generated for the result.
- */
- generatePreview?: boolean;
- /**
- * Whether execution should <code>await</code> for resulting value and return once awaited promise is resolved.
- */
- awaitPromise?: boolean;
- }
-
- interface QueryObjectsParameterType {
- /**
- * Identifier of the prototype to return objects for.
- */
- prototypeObjectId: RemoteObjectId;
- }
-
- interface GlobalLexicalScopeNamesParameterType {
- /**
- * Specifies in which execution context to lookup global scope variables.
- */
- executionContextId?: ExecutionContextId;
- }
-
- interface EvaluateReturnType {
- /**
- * Evaluation result.
- */
- result: RemoteObject;
- /**
- * Exception details.
- */
- exceptionDetails?: ExceptionDetails;
- }
-
- interface AwaitPromiseReturnType {
- /**
- * Promise result. Will contain rejected value if promise was rejected.
- */
- result: RemoteObject;
- /**
- * Exception details if stack strace is available.
- */
- exceptionDetails?: ExceptionDetails;
- }
-
- interface CallFunctionOnReturnType {
- /**
- * Call result.
- */
- result: RemoteObject;
- /**
- * Exception details.
- */
- exceptionDetails?: ExceptionDetails;
- }
-
- interface GetPropertiesReturnType {
- /**
- * Object properties.
- */
- result: PropertyDescriptor[];
- /**
- * Internal object properties (only of the element itself).
- */
- internalProperties?: InternalPropertyDescriptor[];
- /**
- * Exception details.
- */
- exceptionDetails?: ExceptionDetails;
- }
-
- interface CompileScriptReturnType {
- /**
- * Id of the script.
- */
- scriptId?: ScriptId;
- /**
- * Exception details.
- */
- exceptionDetails?: ExceptionDetails;
- }
-
- interface RunScriptReturnType {
- /**
- * Run result.
- */
- result: RemoteObject;
- /**
- * Exception details.
- */
- exceptionDetails?: ExceptionDetails;
- }
-
- interface QueryObjectsReturnType {
- /**
- * Array with objects.
- */
- objects: RemoteObject;
- }
-
- interface GlobalLexicalScopeNamesReturnType {
- names: string[];
- }
-
- interface ExecutionContextCreatedEventDataType {
- /**
- * A newly created execution context.
- */
- context: ExecutionContextDescription;
- }
-
- interface ExecutionContextDestroyedEventDataType {
- /**
- * Id of the destroyed context
- */
- executionContextId: ExecutionContextId;
- }
-
- interface ExceptionThrownEventDataType {
- /**
- * Timestamp of the exception.
- */
- timestamp: Timestamp;
- exceptionDetails: ExceptionDetails;
- }
-
- interface ExceptionRevokedEventDataType {
- /**
- * Reason describing why exception was revoked.
- */
- reason: string;
- /**
- * The id of revoked exception, as reported in <code>exceptionThrown</code>.
- */
- exceptionId: number;
- }
-
- interface ConsoleAPICalledEventDataType {
- /**
- * Type of the call.
- */
- type: string;
- /**
- * Call arguments.
- */
- args: RemoteObject[];
- /**
- * Identifier of the context where the call was made.
- */
- executionContextId: ExecutionContextId;
- /**
- * Call timestamp.
- */
- timestamp: Timestamp;
- /**
- * Stack trace captured when the call was made.
- */
- stackTrace?: StackTrace;
- /**
- * Console context descriptor for calls on non-default console context (not console.*): 'anonymous#unique-logger-id' for call on unnamed context, 'name#unique-logger-id' for call on named context.
- * @experimental
- */
- context?: string;
- }
-
- interface InspectRequestedEventDataType {
- object: RemoteObject;
- hints: {};
- }
- }
-
- namespace Debugger {
- /**
- * Breakpoint identifier.
- */
- type BreakpointId = string;
-
- /**
- * Call frame identifier.
- */
- type CallFrameId = string;
-
- /**
- * Location in the source code.
- */
- interface Location {
- /**
- * Script identifier as reported in the <code>Debugger.scriptParsed</code>.
- */
- scriptId: Runtime.ScriptId;
- /**
- * Line number in the script (0-based).
- */
- lineNumber: number;
- /**
- * Column number in the script (0-based).
- */
- columnNumber?: number;
- }
-
- /**
- * Location in the source code.
- * @experimental
- */
- interface ScriptPosition {
- lineNumber: number;
- columnNumber: number;
- }
-
- /**
- * JavaScript call frame. Array of call frames form the call stack.
- */
- interface CallFrame {
- /**
- * Call frame identifier. This identifier is only valid while the virtual machine is paused.
- */
- callFrameId: CallFrameId;
- /**
- * Name of the JavaScript function called on this call frame.
- */
- functionName: string;
- /**
- * Location in the source code.
- */
- functionLocation?: Location;
- /**
- * Location in the source code.
- */
- location: Location;
- /**
- * JavaScript script name or url.
- */
- url: string;
- /**
- * Scope chain for this call frame.
- */
- scopeChain: Scope[];
- /**
- * <code>this</code> object for this call frame.
- */
- this: Runtime.RemoteObject;
- /**
- * The value being returned, if the function is at return point.
- */
- returnValue?: Runtime.RemoteObject;
- }
-
- /**
- * Scope description.
- */
- interface Scope {
- /**
- * Scope type.
- */
- type: string;
- /**
- * Object representing the scope. For <code>global</code> and <code>with</code> scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties.
- */
- object: Runtime.RemoteObject;
- name?: string;
- /**
- * Location in the source code where scope starts
- */
- startLocation?: Location;
- /**
- * Location in the source code where scope ends
- */
- endLocation?: Location;
- }
-
- /**
- * Search match for resource.
- */
- interface SearchMatch {
- /**
- * Line number in resource content.
- */
- lineNumber: number;
- /**
- * Line with match content.
- */
- lineContent: string;
- }
-
- interface BreakLocation {
- /**
- * Script identifier as reported in the <code>Debugger.scriptParsed</code>.
- */
- scriptId: Runtime.ScriptId;
- /**
- * Line number in the script (0-based).
- */
- lineNumber: number;
- /**
- * Column number in the script (0-based).
- */
- columnNumber?: number;
- type?: string;
- }
-
- interface SetBreakpointsActiveParameterType {
- /**
- * New value for breakpoints active state.
- */
- active: boolean;
- }
-
- interface SetSkipAllPausesParameterType {
- /**
- * New value for skip pauses state.
- */
- skip: boolean;
- }
-
- interface SetBreakpointByUrlParameterType {
- /**
- * Line number to set breakpoint at.
- */
- lineNumber: number;
- /**
- * URL of the resources to set breakpoint on.
- */
- url?: string;
- /**
- * Regex pattern for the URLs of the resources to set breakpoints on. Either <code>url</code> or <code>urlRegex</code> must be specified.
- */
- urlRegex?: string;
- /**
- * Script hash of the resources to set breakpoint on.
- */
- scriptHash?: string;
- /**
- * Offset in the line to set breakpoint at.
- */
- columnNumber?: number;
- /**
- * Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true.
- */
- condition?: string;
- }
-
- interface SetBreakpointParameterType {
- /**
- * Location to set breakpoint in.
- */
- location: Location;
- /**
- * Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true.
- */
- condition?: string;
- }
-
- interface RemoveBreakpointParameterType {
- breakpointId: BreakpointId;
- }
-
- interface GetPossibleBreakpointsParameterType {
- /**
- * Start of range to search possible breakpoint locations in.
- */
- start: Location;
- /**
- * End of range to search possible breakpoint locations in (excluding). When not specified, end of scripts is used as end of range.
- */
- end?: Location;
- /**
- * Only consider locations which are in the same (non-nested) function as start.
- */
- restrictToFunction?: boolean;
- }
-
- interface ContinueToLocationParameterType {
- /**
- * Location to continue to.
- */
- location: Location;
- targetCallFrames?: string;
- }
-
- interface PauseOnAsyncCallParameterType {
- /**
- * Debugger will pause when async call with given stack trace is started.
- */
- parentStackTraceId: Runtime.StackTraceId;
- }
-
- interface StepIntoParameterType {
- /**
- * Debugger will issue additional Debugger.paused notification if any async task is scheduled before next pause.
- * @experimental
- */
- breakOnAsyncCall?: boolean;
- }
-
- interface GetStackTraceParameterType {
- stackTraceId: Runtime.StackTraceId;
- }
-
- interface SearchInContentParameterType {
- /**
- * Id of the script to search in.
- */
- scriptId: Runtime.ScriptId;
- /**
- * String to search for.
- */
- query: string;
- /**
- * If true, search is case sensitive.
- */
- caseSensitive?: boolean;
- /**
- * If true, treats string parameter as regex.
- */
- isRegex?: boolean;
- }
-
- interface SetScriptSourceParameterType {
- /**
- * Id of the script to edit.
- */
- scriptId: Runtime.ScriptId;
- /**
- * New content of the script.
- */
- scriptSource: string;
- /**
- * If true the change will not actually be applied. Dry run may be used to get result description without actually modifying the code.
- */
- dryRun?: boolean;
- }
-
- interface RestartFrameParameterType {
- /**
- * Call frame identifier to evaluate on.
- */
- callFrameId: CallFrameId;
- }
-
- interface GetScriptSourceParameterType {
- /**
- * Id of the script to get source for.
- */
- scriptId: Runtime.ScriptId;
- }
-
- interface SetPauseOnExceptionsParameterType {
- /**
- * Pause on exceptions mode.
- */
- state: string;
- }
-
- interface EvaluateOnCallFrameParameterType {
- /**
- * Call frame identifier to evaluate on.
- */
- callFrameId: CallFrameId;
- /**
- * Expression to evaluate.
- */
- expression: string;
- /**
- * String object group name to put result into (allows rapid releasing resulting object handles using <code>releaseObjectGroup</code>).
- */
- objectGroup?: string;
- /**
- * Specifies whether command line API should be available to the evaluated expression, defaults to false.
- */
- includeCommandLineAPI?: boolean;
- /**
- * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides <code>setPauseOnException</code> state.
- */
- silent?: boolean;
- /**
- * Whether the result is expected to be a JSON object that should be sent by value.
- */
- returnByValue?: boolean;
- /**
- * Whether preview should be generated for the result.
- * @experimental
- */
- generatePreview?: boolean;
- /**
- * Whether to throw an exception if side effect cannot be ruled out during evaluation.
- */
- throwOnSideEffect?: boolean;
- }
-
- interface SetVariableValueParameterType {
- /**
- * 0-based number of scope as was listed in scope chain. Only 'local', 'closure' and 'catch' scope types are allowed. Other scopes could be manipulated manually.
- */
- scopeNumber: number;
- /**
- * Variable name.
- */
- variableName: string;
- /**
- * New variable value.
- */
- newValue: Runtime.CallArgument;
- /**
- * Id of callframe that holds variable.
- */
- callFrameId: CallFrameId;
- }
-
- interface SetReturnValueParameterType {
- /**
- * New return value.
- */
- newValue: Runtime.CallArgument;
- }
-
- interface SetAsyncCallStackDepthParameterType {
- /**
- * Maximum depth of async call stacks. Setting to <code>0</code> will effectively disable collecting async call stacks (default).
- */
- maxDepth: number;
- }
-
- interface SetBlackboxPatternsParameterType {
- /**
- * Array of regexps that will be used to check script url for blackbox state.
- */
- patterns: string[];
- }
-
- interface SetBlackboxedRangesParameterType {
- /**
- * Id of the script.
- */
- scriptId: Runtime.ScriptId;
- positions: ScriptPosition[];
- }
-
- interface EnableReturnType {
- /**
- * Unique identifier of the debugger.
- * @experimental
- */
- debuggerId: Runtime.UniqueDebuggerId;
- }
-
- interface SetBreakpointByUrlReturnType {
- /**
- * Id of the created breakpoint for further reference.
- */
- breakpointId: BreakpointId;
- /**
- * List of the locations this breakpoint resolved into upon addition.
- */
- locations: Location[];
- }
-
- interface SetBreakpointReturnType {
- /**
- * Id of the created breakpoint for further reference.
- */
- breakpointId: BreakpointId;
- /**
- * Location this breakpoint resolved into.
- */
- actualLocation: Location;
- }
-
- interface GetPossibleBreakpointsReturnType {
- /**
- * List of the possible breakpoint locations.
- */
- locations: BreakLocation[];
- }
-
- interface GetStackTraceReturnType {
- stackTrace: Runtime.StackTrace;
- }
-
- interface SearchInContentReturnType {
- /**
- * List of search matches.
- */
- result: SearchMatch[];
- }
-
- interface SetScriptSourceReturnType {
- /**
- * New stack trace in case editing has happened while VM was stopped.
- */
- callFrames?: CallFrame[];
- /**
- * Whether current call stack was modified after applying the changes.
- */
- stackChanged?: boolean;
- /**
- * Async stack trace, if any.
- */
- asyncStackTrace?: Runtime.StackTrace;
- /**
- * Async stack trace, if any.
- * @experimental
- */
- asyncStackTraceId?: Runtime.StackTraceId;
- /**
- * Exception details if any.
- */
- exceptionDetails?: Runtime.ExceptionDetails;
- }
-
- interface RestartFrameReturnType {
- /**
- * New stack trace.
- */
- callFrames: CallFrame[];
- /**
- * Async stack trace, if any.
- */
- asyncStackTrace?: Runtime.StackTrace;
- /**
- * Async stack trace, if any.
- * @experimental
- */
- asyncStackTraceId?: Runtime.StackTraceId;
- }
-
- interface GetScriptSourceReturnType {
- /**
- * Script source.
- */
- scriptSource: string;
- }
-
- interface EvaluateOnCallFrameReturnType {
- /**
- * Object wrapper for the evaluation result.
- */
- result: Runtime.RemoteObject;
- /**
- * Exception details.
- */
- exceptionDetails?: Runtime.ExceptionDetails;
- }
-
- interface ScriptParsedEventDataType {
- /**
- * Identifier of the script parsed.
- */
- scriptId: Runtime.ScriptId;
- /**
- * URL or name of the script parsed (if any).
- */
- url: string;
- /**
- * Line offset of the script within the resource with given URL (for script tags).
- */
- startLine: number;
- /**
- * Column offset of the script within the resource with given URL.
- */
- startColumn: number;
- /**
- * Last line of the script.
- */
- endLine: number;
- /**
- * Length of the last line of the script.
- */
- endColumn: number;
- /**
- * Specifies script creation context.
- */
- executionContextId: Runtime.ExecutionContextId;
- /**
- * Content hash of the script.
- */
- hash: string;
- /**
- * Embedder-specific auxiliary data.
- */
- executionContextAuxData?: {};
- /**
- * True, if this script is generated as a result of the live edit operation.
- * @experimental
- */
- isLiveEdit?: boolean;
- /**
- * URL of source map associated with script (if any).
- */
- sourceMapURL?: string;
- /**
- * True, if this script has sourceURL.
- */
- hasSourceURL?: boolean;
- /**
- * True, if this script is ES6 module.
- */
- isModule?: boolean;
- /**
- * This script length.
- */
- length?: number;
- /**
- * JavaScript top stack frame of where the script parsed event was triggered if available.
- * @experimental
- */
- stackTrace?: Runtime.StackTrace;
- }
-
- interface ScriptFailedToParseEventDataType {
- /**
- * Identifier of the script parsed.
- */
- scriptId: Runtime.ScriptId;
- /**
- * URL or name of the script parsed (if any).
- */
- url: string;
- /**
- * Line offset of the script within the resource with given URL (for script tags).
- */
- startLine: number;
- /**
- * Column offset of the script within the resource with given URL.
- */
- startColumn: number;
- /**
- * Last line of the script.
- */
- endLine: number;
- /**
- * Length of the last line of the script.
- */
- endColumn: number;
- /**
- * Specifies script creation context.
- */
- executionContextId: Runtime.ExecutionContextId;
- /**
- * Content hash of the script.
- */
- hash: string;
- /**
- * Embedder-specific auxiliary data.
- */
- executionContextAuxData?: {};
- /**
- * URL of source map associated with script (if any).
- */
- sourceMapURL?: string;
- /**
- * True, if this script has sourceURL.
- */
- hasSourceURL?: boolean;
- /**
- * True, if this script is ES6 module.
- */
- isModule?: boolean;
- /**
- * This script length.
- */
- length?: number;
- /**
- * JavaScript top stack frame of where the script parsed event was triggered if available.
- * @experimental
- */
- stackTrace?: Runtime.StackTrace;
- }
-
- interface BreakpointResolvedEventDataType {
- /**
- * Breakpoint unique identifier.
- */
- breakpointId: BreakpointId;
- /**
- * Actual breakpoint location.
- */
- location: Location;
- }
-
- interface PausedEventDataType {
- /**
- * Call stack the virtual machine stopped on.
- */
- callFrames: CallFrame[];
- /**
- * Pause reason.
- */
- reason: string;
- /**
- * Object containing break-specific auxiliary properties.
- */
- data?: {};
- /**
- * Hit breakpoints IDs
- */
- hitBreakpoints?: string[];
- /**
- * Async stack trace, if any.
- */
- asyncStackTrace?: Runtime.StackTrace;
- /**
- * Async stack trace, if any.
- * @experimental
- */
- asyncStackTraceId?: Runtime.StackTraceId;
- /**
- * Just scheduled async call will have this stack trace as parent stack during async execution. This field is available only after <code>Debugger.stepInto</code> call with <code>breakOnAsynCall</code> flag.
- * @experimental
- */
- asyncCallStackTraceId?: Runtime.StackTraceId;
- }
- }
-
- namespace Console {
- /**
- * Console message.
- */
- interface ConsoleMessage {
- /**
- * Message source.
- */
- source: string;
- /**
- * Message severity.
- */
- level: string;
- /**
- * Message text.
- */
- text: string;
- /**
- * URL of the message origin.
- */
- url?: string;
- /**
- * Line number in the resource that generated this message (1-based).
- */
- line?: number;
- /**
- * Column number in the resource that generated this message (1-based).
- */
- column?: number;
- }
-
- interface MessageAddedEventDataType {
- /**
- * Console message that has been added.
- */
- message: ConsoleMessage;
- }
- }
-
- namespace Profiler {
- /**
- * Profile node. Holds callsite information, execution statistics and child nodes.
- */
- interface ProfileNode {
- /**
- * Unique id of the node.
- */
- id: number;
- /**
- * Function location.
- */
- callFrame: Runtime.CallFrame;
- /**
- * Number of samples where this node was on top of the call stack.
- */
- hitCount?: number;
- /**
- * Child node ids.
- */
- children?: number[];
- /**
- * The reason of being not optimized. The function may be deoptimized or marked as don't optimize.
- */
- deoptReason?: string;
- /**
- * An array of source position ticks.
- */
- positionTicks?: PositionTickInfo[];
- }
-
- /**
- * Profile.
- */
- interface Profile {
- /**
- * The list of profile nodes. First item is the root node.
- */
- nodes: ProfileNode[];
- /**
- * Profiling start timestamp in microseconds.
- */
- startTime: number;
- /**
- * Profiling end timestamp in microseconds.
- */
- endTime: number;
- /**
- * Ids of samples top nodes.
- */
- samples?: number[];
- /**
- * Time intervals between adjacent samples in microseconds. The first delta is relative to the profile startTime.
- */
- timeDeltas?: number[];
- }
-
- /**
- * Specifies a number of samples attributed to a certain source position.
- */
- interface PositionTickInfo {
- /**
- * Source line number (1-based).
- */
- line: number;
- /**
- * Number of samples attributed to the source line.
- */
- ticks: number;
- }
-
- /**
- * Coverage data for a source range.
- */
- interface CoverageRange {
- /**
- * JavaScript script source offset for the range start.
- */
- startOffset: number;
- /**
- * JavaScript script source offset for the range end.
- */
- endOffset: number;
- /**
- * Collected execution count of the source range.
- */
- count: number;
- }
-
- /**
- * Coverage data for a JavaScript function.
- */
- interface FunctionCoverage {
- /**
- * JavaScript function name.
- */
- functionName: string;
- /**
- * Source ranges inside the function with coverage data.
- */
- ranges: CoverageRange[];
- /**
- * Whether coverage data for this function has block granularity.
- */
- isBlockCoverage: boolean;
- }
-
- /**
- * Coverage data for a JavaScript script.
- */
- interface ScriptCoverage {
- /**
- * JavaScript script id.
- */
- scriptId: Runtime.ScriptId;
- /**
- * JavaScript script name or url.
- */
- url: string;
- /**
- * Functions contained in the script that has coverage data.
- */
- functions: FunctionCoverage[];
- }
-
- /**
- * Describes a type collected during runtime.
- * @experimental
- */
- interface TypeObject {
- /**
- * Name of a type collected with type profiling.
- */
- name: string;
- }
-
- /**
- * Source offset and types for a parameter or return value.
- * @experimental
- */
- interface TypeProfileEntry {
- /**
- * Source offset of the parameter or end of function for return values.
- */
- offset: number;
- /**
- * The types for this parameter or return value.
- */
- types: TypeObject[];
- }
-
- /**
- * Type profile data collected during runtime for a JavaScript script.
- * @experimental
- */
- interface ScriptTypeProfile {
- /**
- * JavaScript script id.
- */
- scriptId: Runtime.ScriptId;
- /**
- * JavaScript script name or url.
- */
- url: string;
- /**
- * Type profile entries for parameters and return values of the functions in the script.
- */
- entries: TypeProfileEntry[];
- }
-
- interface SetSamplingIntervalParameterType {
- /**
- * New sampling interval in microseconds.
- */
- interval: number;
- }
-
- interface StartPreciseCoverageParameterType {
- /**
- * Collect accurate call counts beyond simple 'covered' or 'not covered'.
- */
- callCount?: boolean;
- /**
- * Collect block-based coverage.
- */
- detailed?: boolean;
- }
-
- interface StopReturnType {
- /**
- * Recorded profile.
- */
- profile: Profile;
- }
-
- interface TakePreciseCoverageReturnType {
- /**
- * Coverage data for the current isolate.
- */
- result: ScriptCoverage[];
- }
-
- interface GetBestEffortCoverageReturnType {
- /**
- * Coverage data for the current isolate.
- */
- result: ScriptCoverage[];
- }
-
- interface TakeTypeProfileReturnType {
- /**
- * Type profile for all scripts since startTypeProfile() was turned on.
- */
- result: ScriptTypeProfile[];
- }
-
- interface ConsoleProfileStartedEventDataType {
- id: string;
- /**
- * Location of console.profile().
- */
- location: Debugger.Location;
- /**
- * Profile title passed as an argument to console.profile().
- */
- title?: string;
- }
-
- interface ConsoleProfileFinishedEventDataType {
- id: string;
- /**
- * Location of console.profileEnd().
- */
- location: Debugger.Location;
- profile: Profile;
- /**
- * Profile title passed as an argument to console.profile().
- */
- title?: string;
- }
- }
-
- namespace HeapProfiler {
- /**
- * Heap snapshot object id.
- */
- type HeapSnapshotObjectId = string;
-
- /**
- * Sampling Heap Profile node. Holds callsite information, allocation statistics and child nodes.
- */
- interface SamplingHeapProfileNode {
- /**
- * Function location.
- */
- callFrame: Runtime.CallFrame;
- /**
- * Allocations size in bytes for the node excluding children.
- */
- selfSize: number;
- /**
- * Child nodes.
- */
- children: SamplingHeapProfileNode[];
- }
-
- /**
- * Profile.
- */
- interface SamplingHeapProfile {
- head: SamplingHeapProfileNode;
- }
-
- interface StartTrackingHeapObjectsParameterType {
- trackAllocations?: boolean;
- }
-
- interface StopTrackingHeapObjectsParameterType {
- /**
- * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken when the tracking is stopped.
- */
- reportProgress?: boolean;
- }
-
- interface TakeHeapSnapshotParameterType {
- /**
- * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken.
- */
- reportProgress?: boolean;
- }
-
- interface GetObjectByHeapObjectIdParameterType {
- objectId: HeapSnapshotObjectId;
- /**
- * Symbolic group name that can be used to release multiple objects.
- */
- objectGroup?: string;
- }
-
- interface AddInspectedHeapObjectParameterType {
- /**
- * Heap snapshot object id to be accessible by means of $x command line API.
- */
- heapObjectId: HeapSnapshotObjectId;
- }
-
- interface GetHeapObjectIdParameterType {
- /**
- * Identifier of the object to get heap object id for.
- */
- objectId: Runtime.RemoteObjectId;
- }
-
- interface StartSamplingParameterType {
- /**
- * Average sample interval in bytes. Poisson distribution is used for the intervals. The default value is 32768 bytes.
- */
- samplingInterval?: number;
- }
-
- interface GetObjectByHeapObjectIdReturnType {
- /**
- * Evaluation result.
- */
- result: Runtime.RemoteObject;
- }
-
- interface GetHeapObjectIdReturnType {
- /**
- * Id of the heap snapshot object corresponding to the passed remote object id.
- */
- heapSnapshotObjectId: HeapSnapshotObjectId;
- }
-
- interface StopSamplingReturnType {
- /**
- * Recorded sampling heap profile.
- */
- profile: SamplingHeapProfile;
- }
-
- interface GetSamplingProfileReturnType {
- /**
- * Return the sampling profile being collected.
- */
- profile: SamplingHeapProfile;
- }
-
- interface AddHeapSnapshotChunkEventDataType {
- chunk: string;
- }
-
- interface ReportHeapSnapshotProgressEventDataType {
- done: number;
- total: number;
- finished?: boolean;
- }
-
- interface LastSeenObjectIdEventDataType {
- lastSeenObjectId: number;
- timestamp: number;
- }
-
- interface HeapStatsUpdateEventDataType {
- /**
- * An array of triplets. Each triplet describes a fragment. The first integer is the fragment index, the second integer is a total count of objects for the fragment, the third integer is a total size of the objects for the fragment.
- */
- statsUpdate: number[];
- }
- }
-
- namespace NodeTracing {
- interface TraceConfig {
- /**
- * Controls how the trace buffer stores data.
- */
- recordMode?: string;
- /**
- * Included category filters.
- */
- includedCategories: string[];
- }
-
- interface StartParameterType {
- traceConfig: TraceConfig;
- }
-
- interface GetCategoriesReturnType {
- /**
- * A list of supported tracing categories.
- */
- categories: string[];
- }
-
- interface DataCollectedEventDataType {
- value: Array<{}>;
- }
- }
-
- namespace NodeWorker {
- type WorkerID = string;
-
- /**
- * Unique identifier of attached debugging session.
- */
- type SessionID = string;
-
- interface WorkerInfo {
- workerId: WorkerID;
- type: string;
- title: string;
- url: string;
- }
-
- interface SendMessageToWorkerParameterType {
- message: string;
- /**
- * Identifier of the session.
- */
- sessionId: SessionID;
- }
-
- interface EnableParameterType {
- /**
- * Whether to new workers should be paused until the frontend sends `Runtime.runIfWaitingForDebugger`
- * message to run them.
- */
- waitForDebuggerOnStart: boolean;
- }
-
- interface DetachParameterType {
- sessionId: SessionID;
- }
-
- interface AttachedToWorkerEventDataType {
- /**
- * Identifier assigned to the session used to send/receive messages.
- */
- sessionId: SessionID;
- workerInfo: WorkerInfo;
- waitingForDebugger: boolean;
- }
-
- interface DetachedFromWorkerEventDataType {
- /**
- * Detached session identifier.
- */
- sessionId: SessionID;
- }
-
- interface ReceivedMessageFromWorkerEventDataType {
- /**
- * Identifier of a session which sends a message.
- */
- sessionId: SessionID;
- message: string;
- }
- }
-
- namespace NodeRuntime {
- interface NotifyWhenWaitingForDisconnectParameterType {
- enabled: boolean;
- }
- }
-
- /**
- * The inspector.Session is used for dispatching messages to the V8 inspector back-end and receiving message responses and notifications.
- */
- class Session extends EventEmitter {
- /**
- * Create a new instance of the inspector.Session class.
- * The inspector session needs to be connected through session.connect() before the messages can be dispatched to the inspector backend.
- */
- constructor();
-
- /**
- * Connects a session to the inspector back-end.
- * An exception will be thrown if there is already a connected session established either
- * through the API or by a front-end connected to the Inspector WebSocket port.
- */
- connect(): void;
-
- /**
- * Immediately close the session. All pending message callbacks will be called with an error.
- * session.connect() will need to be called to be able to send messages again.
- * Reconnected session will lose all inspector state, such as enabled agents or configured breakpoints.
- */
- disconnect(): void;
-
- /**
- * Posts a message to the inspector back-end. callback will be notified when a response is received.
- * callback is a function that accepts two optional arguments - error and message-specific result.
- */
- post(method: string, params?: {}, callback?: (err: Error | null, params?: {}) => void): void;
- post(method: string, callback?: (err: Error | null, params?: {}) => void): void;
-
- /**
- * Returns supported domains.
- */
- post(method: "Schema.getDomains", callback?: (err: Error | null, params: Schema.GetDomainsReturnType) => void): void;
-
- /**
- * Evaluates expression on global object.
- */
- post(method: "Runtime.evaluate", params?: Runtime.EvaluateParameterType, callback?: (err: Error | null, params: Runtime.EvaluateReturnType) => void): void;
- post(method: "Runtime.evaluate", callback?: (err: Error | null, params: Runtime.EvaluateReturnType) => void): void;
-
- /**
- * Add handler to promise with given promise object id.
- */
- post(method: "Runtime.awaitPromise", params?: Runtime.AwaitPromiseParameterType, callback?: (err: Error | null, params: Runtime.AwaitPromiseReturnType) => void): void;
- post(method: "Runtime.awaitPromise", callback?: (err: Error | null, params: Runtime.AwaitPromiseReturnType) => void): void;
-
- /**
- * Calls function with given declaration on the given object. Object group of the result is inherited from the target object.
- */
- post(method: "Runtime.callFunctionOn", params?: Runtime.CallFunctionOnParameterType, callback?: (err: Error | null, params: Runtime.CallFunctionOnReturnType) => void): void;
- post(method: "Runtime.callFunctionOn", callback?: (err: Error | null, params: Runtime.CallFunctionOnReturnType) => void): void;
-
- /**
- * Returns properties of a given object. Object group of the result is inherited from the target object.
- */
- post(method: "Runtime.getProperties", params?: Runtime.GetPropertiesParameterType, callback?: (err: Error | null, params: Runtime.GetPropertiesReturnType) => void): void;
- post(method: "Runtime.getProperties", callback?: (err: Error | null, params: Runtime.GetPropertiesReturnType) => void): void;
-
- /**
- * Releases remote object with given id.
- */
- post(method: "Runtime.releaseObject", params?: Runtime.ReleaseObjectParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Runtime.releaseObject", callback?: (err: Error | null) => void): void;
-
- /**
- * Releases all remote objects that belong to a given group.
- */
- post(method: "Runtime.releaseObjectGroup", params?: Runtime.ReleaseObjectGroupParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Runtime.releaseObjectGroup", callback?: (err: Error | null) => void): void;
-
- /**
- * Tells inspected instance to run if it was waiting for debugger to attach.
- */
- post(method: "Runtime.runIfWaitingForDebugger", callback?: (err: Error | null) => void): void;
-
- /**
- * Enables reporting of execution contexts creation by means of <code>executionContextCreated</code> event. When the reporting gets enabled the event will be sent immediately for each existing execution context.
- */
- post(method: "Runtime.enable", callback?: (err: Error | null) => void): void;
-
- /**
- * Disables reporting of execution contexts creation.
- */
- post(method: "Runtime.disable", callback?: (err: Error | null) => void): void;
-
- /**
- * Discards collected exceptions and console API calls.
- */
- post(method: "Runtime.discardConsoleEntries", callback?: (err: Error | null) => void): void;
-
- /**
- * @experimental
- */
- post(method: "Runtime.setCustomObjectFormatterEnabled", params?: Runtime.SetCustomObjectFormatterEnabledParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Runtime.setCustomObjectFormatterEnabled", callback?: (err: Error | null) => void): void;
-
- /**
- * Compiles expression.
- */
- post(method: "Runtime.compileScript", params?: Runtime.CompileScriptParameterType, callback?: (err: Error | null, params: Runtime.CompileScriptReturnType) => void): void;
- post(method: "Runtime.compileScript", callback?: (err: Error | null, params: Runtime.CompileScriptReturnType) => void): void;
-
- /**
- * Runs script with given id in a given context.
- */
- post(method: "Runtime.runScript", params?: Runtime.RunScriptParameterType, callback?: (err: Error | null, params: Runtime.RunScriptReturnType) => void): void;
- post(method: "Runtime.runScript", callback?: (err: Error | null, params: Runtime.RunScriptReturnType) => void): void;
-
- post(method: "Runtime.queryObjects", params?: Runtime.QueryObjectsParameterType, callback?: (err: Error | null, params: Runtime.QueryObjectsReturnType) => void): void;
- post(method: "Runtime.queryObjects", callback?: (err: Error | null, params: Runtime.QueryObjectsReturnType) => void): void;
-
- /**
- * Returns all let, const and class variables from global scope.
- */
- post(
- method: "Runtime.globalLexicalScopeNames",
- params?: Runtime.GlobalLexicalScopeNamesParameterType,
- callback?: (err: Error | null, params: Runtime.GlobalLexicalScopeNamesReturnType) => void
- ): void;
- post(method: "Runtime.globalLexicalScopeNames", callback?: (err: Error | null, params: Runtime.GlobalLexicalScopeNamesReturnType) => void): void;
-
- /**
- * Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received.
- */
- post(method: "Debugger.enable", callback?: (err: Error | null, params: Debugger.EnableReturnType) => void): void;
-
- /**
- * Disables debugger for given page.
- */
- post(method: "Debugger.disable", callback?: (err: Error | null) => void): void;
-
- /**
- * Activates / deactivates all breakpoints on the page.
- */
- post(method: "Debugger.setBreakpointsActive", params?: Debugger.SetBreakpointsActiveParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Debugger.setBreakpointsActive", callback?: (err: Error | null) => void): void;
-
- /**
- * Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc).
- */
- post(method: "Debugger.setSkipAllPauses", params?: Debugger.SetSkipAllPausesParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Debugger.setSkipAllPauses", callback?: (err: Error | null) => void): void;
-
- /**
- * Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in <code>locations</code> property. Further matching script parsing will result in subsequent <code>breakpointResolved</code> events issued. This logical breakpoint will survive page reloads.
- */
- post(method: "Debugger.setBreakpointByUrl", params?: Debugger.SetBreakpointByUrlParameterType, callback?: (err: Error | null, params: Debugger.SetBreakpointByUrlReturnType) => void): void;
- post(method: "Debugger.setBreakpointByUrl", callback?: (err: Error | null, params: Debugger.SetBreakpointByUrlReturnType) => void): void;
-
- /**
- * Sets JavaScript breakpoint at a given location.
- */
- post(method: "Debugger.setBreakpoint", params?: Debugger.SetBreakpointParameterType, callback?: (err: Error | null, params: Debugger.SetBreakpointReturnType) => void): void;
- post(method: "Debugger.setBreakpoint", callback?: (err: Error | null, params: Debugger.SetBreakpointReturnType) => void): void;
-
- /**
- * Removes JavaScript breakpoint.
- */
- post(method: "Debugger.removeBreakpoint", params?: Debugger.RemoveBreakpointParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Debugger.removeBreakpoint", callback?: (err: Error | null) => void): void;
-
- /**
- * Returns possible locations for breakpoint. scriptId in start and end range locations should be the same.
- */
- post(
- method: "Debugger.getPossibleBreakpoints",
- params?: Debugger.GetPossibleBreakpointsParameterType,
- callback?: (err: Error | null, params: Debugger.GetPossibleBreakpointsReturnType) => void
- ): void;
- post(method: "Debugger.getPossibleBreakpoints", callback?: (err: Error | null, params: Debugger.GetPossibleBreakpointsReturnType) => void): void;
-
- /**
- * Continues execution until specific location is reached.
- */
- post(method: "Debugger.continueToLocation", params?: Debugger.ContinueToLocationParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Debugger.continueToLocation", callback?: (err: Error | null) => void): void;
-
- /**
- * @experimental
- */
- post(method: "Debugger.pauseOnAsyncCall", params?: Debugger.PauseOnAsyncCallParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Debugger.pauseOnAsyncCall", callback?: (err: Error | null) => void): void;
-
- /**
- * Steps over the statement.
- */
- post(method: "Debugger.stepOver", callback?: (err: Error | null) => void): void;
-
- /**
- * Steps into the function call.
- */
- post(method: "Debugger.stepInto", params?: Debugger.StepIntoParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Debugger.stepInto", callback?: (err: Error | null) => void): void;
-
- /**
- * Steps out of the function call.
- */
- post(method: "Debugger.stepOut", callback?: (err: Error | null) => void): void;
-
- /**
- * Stops on the next JavaScript statement.
- */
- post(method: "Debugger.pause", callback?: (err: Error | null) => void): void;
-
- /**
- * This method is deprecated - use Debugger.stepInto with breakOnAsyncCall and Debugger.pauseOnAsyncTask instead. Steps into next scheduled async task if any is scheduled before next pause. Returns success when async task is actually scheduled, returns error if no task were scheduled or another scheduleStepIntoAsync was called.
- * @experimental
- */
- post(method: "Debugger.scheduleStepIntoAsync", callback?: (err: Error | null) => void): void;
-
- /**
- * Resumes JavaScript execution.
- */
- post(method: "Debugger.resume", callback?: (err: Error | null) => void): void;
-
- /**
- * Returns stack trace with given <code>stackTraceId</code>.
- * @experimental
- */
- post(method: "Debugger.getStackTrace", params?: Debugger.GetStackTraceParameterType, callback?: (err: Error | null, params: Debugger.GetStackTraceReturnType) => void): void;
- post(method: "Debugger.getStackTrace", callback?: (err: Error | null, params: Debugger.GetStackTraceReturnType) => void): void;
-
- /**
- * Searches for given string in script content.
- */
- post(method: "Debugger.searchInContent", params?: Debugger.SearchInContentParameterType, callback?: (err: Error | null, params: Debugger.SearchInContentReturnType) => void): void;
- post(method: "Debugger.searchInContent", callback?: (err: Error | null, params: Debugger.SearchInContentReturnType) => void): void;
-
- /**
- * Edits JavaScript source live.
- */
- post(method: "Debugger.setScriptSource", params?: Debugger.SetScriptSourceParameterType, callback?: (err: Error | null, params: Debugger.SetScriptSourceReturnType) => void): void;
- post(method: "Debugger.setScriptSource", callback?: (err: Error | null, params: Debugger.SetScriptSourceReturnType) => void): void;
-
- /**
- * Restarts particular call frame from the beginning.
- */
- post(method: "Debugger.restartFrame", params?: Debugger.RestartFrameParameterType, callback?: (err: Error | null, params: Debugger.RestartFrameReturnType) => void): void;
- post(method: "Debugger.restartFrame", callback?: (err: Error | null, params: Debugger.RestartFrameReturnType) => void): void;
-
- /**
- * Returns source for the script with given id.
- */
- post(method: "Debugger.getScriptSource", params?: Debugger.GetScriptSourceParameterType, callback?: (err: Error | null, params: Debugger.GetScriptSourceReturnType) => void): void;
- post(method: "Debugger.getScriptSource", callback?: (err: Error | null, params: Debugger.GetScriptSourceReturnType) => void): void;
-
- /**
- * Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is <code>none</code>.
- */
- post(method: "Debugger.setPauseOnExceptions", params?: Debugger.SetPauseOnExceptionsParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Debugger.setPauseOnExceptions", callback?: (err: Error | null) => void): void;
-
- /**
- * Evaluates expression on a given call frame.
- */
- post(method: "Debugger.evaluateOnCallFrame", params?: Debugger.EvaluateOnCallFrameParameterType, callback?: (err: Error | null, params: Debugger.EvaluateOnCallFrameReturnType) => void): void;
- post(method: "Debugger.evaluateOnCallFrame", callback?: (err: Error | null, params: Debugger.EvaluateOnCallFrameReturnType) => void): void;
-
- /**
- * Changes value of variable in a callframe. Object-based scopes are not supported and must be mutated manually.
- */
- post(method: "Debugger.setVariableValue", params?: Debugger.SetVariableValueParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Debugger.setVariableValue", callback?: (err: Error | null) => void): void;
-
- /**
- * Changes return value in top frame. Available only at return break position.
- * @experimental
- */
- post(method: "Debugger.setReturnValue", params?: Debugger.SetReturnValueParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Debugger.setReturnValue", callback?: (err: Error | null) => void): void;
-
- /**
- * Enables or disables async call stacks tracking.
- */
- post(method: "Debugger.setAsyncCallStackDepth", params?: Debugger.SetAsyncCallStackDepthParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Debugger.setAsyncCallStackDepth", callback?: (err: Error | null) => void): void;
-
- /**
- * Replace previous blackbox patterns with passed ones. Forces backend to skip stepping/pausing in scripts with url matching one of the patterns. VM will try to leave blackboxed script by performing 'step in' several times, finally resorting to 'step out' if unsuccessful.
- * @experimental
- */
- post(method: "Debugger.setBlackboxPatterns", params?: Debugger.SetBlackboxPatternsParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Debugger.setBlackboxPatterns", callback?: (err: Error | null) => void): void;
-
- /**
- * Makes backend skip steps in the script in blackboxed ranges. VM will try leave blacklisted scripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. Positions array contains positions where blackbox state is changed. First interval isn't blackboxed. Array should be sorted.
- * @experimental
- */
- post(method: "Debugger.setBlackboxedRanges", params?: Debugger.SetBlackboxedRangesParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Debugger.setBlackboxedRanges", callback?: (err: Error | null) => void): void;
-
- /**
- * Enables console domain, sends the messages collected so far to the client by means of the <code>messageAdded</code> notification.
- */
- post(method: "Console.enable", callback?: (err: Error | null) => void): void;
-
- /**
- * Disables console domain, prevents further console messages from being reported to the client.
- */
- post(method: "Console.disable", callback?: (err: Error | null) => void): void;
-
- /**
- * Does nothing.
- */
- post(method: "Console.clearMessages", callback?: (err: Error | null) => void): void;
-
- post(method: "Profiler.enable", callback?: (err: Error | null) => void): void;
-
- post(method: "Profiler.disable", callback?: (err: Error | null) => void): void;
-
- /**
- * Changes CPU profiler sampling interval. Must be called before CPU profiles recording started.
- */
- post(method: "Profiler.setSamplingInterval", params?: Profiler.SetSamplingIntervalParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Profiler.setSamplingInterval", callback?: (err: Error | null) => void): void;
-
- post(method: "Profiler.start", callback?: (err: Error | null) => void): void;
-
- post(method: "Profiler.stop", callback?: (err: Error | null, params: Profiler.StopReturnType) => void): void;
-
- /**
- * Enable precise code coverage. Coverage data for JavaScript executed before enabling precise code coverage may be incomplete. Enabling prevents running optimized code and resets execution counters.
- */
- post(method: "Profiler.startPreciseCoverage", params?: Profiler.StartPreciseCoverageParameterType, callback?: (err: Error | null) => void): void;
- post(method: "Profiler.startPreciseCoverage", callback?: (err: Error | null) => void): void;
-
- /**
- * Disable precise code coverage. Disabling releases unnecessary execution count records and allows executing optimized code.
- */
- post(method: "Profiler.stopPreciseCoverage", callback?: (err: Error | null) => void): void;
-
- /**
- * Collect coverage data for the current isolate, and resets execution counters. Precise code coverage needs to have started.
- */
- post(method: "Profiler.takePreciseCoverage", callback?: (err: Error | null, params: Profiler.TakePreciseCoverageReturnType) => void): void;
-
- /**
- * Collect coverage data for the current isolate. The coverage data may be incomplete due to garbage collection.
- */
- post(method: "Profiler.getBestEffortCoverage", callback?: (err: Error | null, params: Profiler.GetBestEffortCoverageReturnType) => void): void;
-
- /**
- * Enable type profile.
- * @experimental
- */
- post(method: "Profiler.startTypeProfile", callback?: (err: Error | null) => void): void;
-
- /**
- * Disable type profile. Disabling releases type profile data collected so far.
- * @experimental
- */
- post(method: "Profiler.stopTypeProfile", callback?: (err: Error | null) => void): void;
-
- /**
- * Collect type profile.
- * @experimental
- */
- post(method: "Profiler.takeTypeProfile", callback?: (err: Error | null, params: Profiler.TakeTypeProfileReturnType) => void): void;
-
- post(method: "HeapProfiler.enable", callback?: (err: Error | null) => void): void;
-
- post(method: "HeapProfiler.disable", callback?: (err: Error | null) => void): void;
-
- post(method: "HeapProfiler.startTrackingHeapObjects", params?: HeapProfiler.StartTrackingHeapObjectsParameterType, callback?: (err: Error | null) => void): void;
- post(method: "HeapProfiler.startTrackingHeapObjects", callback?: (err: Error | null) => void): void;
-
- post(method: "HeapProfiler.stopTrackingHeapObjects", params?: HeapProfiler.StopTrackingHeapObjectsParameterType, callback?: (err: Error | null) => void): void;
- post(method: "HeapProfiler.stopTrackingHeapObjects", callback?: (err: Error | null) => void): void;
-
- post(method: "HeapProfiler.takeHeapSnapshot", params?: HeapProfiler.TakeHeapSnapshotParameterType, callback?: (err: Error | null) => void): void;
- post(method: "HeapProfiler.takeHeapSnapshot", callback?: (err: Error | null) => void): void;
-
- post(method: "HeapProfiler.collectGarbage", callback?: (err: Error | null) => void): void;
-
- post(
- method: "HeapProfiler.getObjectByHeapObjectId",
- params?: HeapProfiler.GetObjectByHeapObjectIdParameterType,
- callback?: (err: Error | null, params: HeapProfiler.GetObjectByHeapObjectIdReturnType) => void
- ): void;
- post(method: "HeapProfiler.getObjectByHeapObjectId", callback?: (err: Error | null, params: HeapProfiler.GetObjectByHeapObjectIdReturnType) => void): void;
-
- /**
- * Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions).
- */
- post(method: "HeapProfiler.addInspectedHeapObject", params?: HeapProfiler.AddInspectedHeapObjectParameterType, callback?: (err: Error | null) => void): void;
- post(method: "HeapProfiler.addInspectedHeapObject", callback?: (err: Error | null) => void): void;
-
- post(method: "HeapProfiler.getHeapObjectId", params?: HeapProfiler.GetHeapObjectIdParameterType, callback?: (err: Error | null, params: HeapProfiler.GetHeapObjectIdReturnType) => void): void;
- post(method: "HeapProfiler.getHeapObjectId", callback?: (err: Error | null, params: HeapProfiler.GetHeapObjectIdReturnType) => void): void;
-
- post(method: "HeapProfiler.startSampling", params?: HeapProfiler.StartSamplingParameterType, callback?: (err: Error | null) => void): void;
- post(method: "HeapProfiler.startSampling", callback?: (err: Error | null) => void): void;
-
- post(method: "HeapProfiler.stopSampling", callback?: (err: Error | null, params: HeapProfiler.StopSamplingReturnType) => void): void;
-
- post(method: "HeapProfiler.getSamplingProfile", callback?: (err: Error | null, params: HeapProfiler.GetSamplingProfileReturnType) => void): void;
-
- /**
- * Gets supported tracing categories.
- */
- post(method: "NodeTracing.getCategories", callback?: (err: Error | null, params: NodeTracing.GetCategoriesReturnType) => void): void;
-
- /**
- * Start trace events collection.
- */
- post(method: "NodeTracing.start", params?: NodeTracing.StartParameterType, callback?: (err: Error | null) => void): void;
- post(method: "NodeTracing.start", callback?: (err: Error | null) => void): void;
-
- /**
- * Stop trace events collection. Remaining collected events will be sent as a sequence of
- * dataCollected events followed by tracingComplete event.
- */
- post(method: "NodeTracing.stop", callback?: (err: Error | null) => void): void;
-
- /**
- * Sends protocol message over session with given id.
- */
- post(method: "NodeWorker.sendMessageToWorker", params?: NodeWorker.SendMessageToWorkerParameterType, callback?: (err: Error | null) => void): void;
- post(method: "NodeWorker.sendMessageToWorker", callback?: (err: Error | null) => void): void;
-
- /**
- * Instructs the inspector to attach to running workers. Will also attach to new workers
- * as they start
- */
- post(method: "NodeWorker.enable", params?: NodeWorker.EnableParameterType, callback?: (err: Error | null) => void): void;
- post(method: "NodeWorker.enable", callback?: (err: Error | null) => void): void;
-
- /**
- * Detaches from all running workers and disables attaching to new workers as they are started.
- */
- post(method: "NodeWorker.disable", callback?: (err: Error | null) => void): void;
-
- /**
- * Detached from the worker with given sessionId.
- */
- post(method: "NodeWorker.detach", params?: NodeWorker.DetachParameterType, callback?: (err: Error | null) => void): void;
- post(method: "NodeWorker.detach", callback?: (err: Error | null) => void): void;
-
- /**
- * Enable the `NodeRuntime.waitingForDisconnect`.
- */
- post(method: "NodeRuntime.notifyWhenWaitingForDisconnect", params?: NodeRuntime.NotifyWhenWaitingForDisconnectParameterType, callback?: (err: Error | null) => void): void;
- post(method: "NodeRuntime.notifyWhenWaitingForDisconnect", callback?: (err: Error | null) => void): void;
-
- // Events
-
- addListener(event: string, listener: (...args: any[]) => void): this;
-
- /**
- * Emitted when any notification from the V8 Inspector is received.
- */
- addListener(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this;
-
- /**
- * Issued when new execution context is created.
- */
- addListener(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification<Runtime.ExecutionContextCreatedEventDataType>) => void): this;
-
- /**
- * Issued when execution context is destroyed.
- */
- addListener(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification<Runtime.ExecutionContextDestroyedEventDataType>) => void): this;
-
- /**
- * Issued when all executionContexts were cleared in browser
- */
- addListener(event: "Runtime.executionContextsCleared", listener: () => void): this;
-
- /**
- * Issued when exception was thrown and unhandled.
- */
- addListener(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification<Runtime.ExceptionThrownEventDataType>) => void): this;
-
- /**
- * Issued when unhandled exception was revoked.
- */
- addListener(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification<Runtime.ExceptionRevokedEventDataType>) => void): this;
-
- /**
- * Issued when console API was called.
- */
- addListener(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification<Runtime.ConsoleAPICalledEventDataType>) => void): this;
-
- /**
- * Issued when object should be inspected (for example, as a result of inspect() command line API call).
- */
- addListener(event: "Runtime.inspectRequested", listener: (message: InspectorNotification<Runtime.InspectRequestedEventDataType>) => void): this;
-
- /**
- * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger.
- */
- addListener(event: "Debugger.scriptParsed", listener: (message: InspectorNotification<Debugger.ScriptParsedEventDataType>) => void): this;
-
- /**
- * Fired when virtual machine fails to parse the script.
- */
- addListener(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification<Debugger.ScriptFailedToParseEventDataType>) => void): this;
-
- /**
- * Fired when breakpoint is resolved to an actual script and location.
- */
- addListener(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification<Debugger.BreakpointResolvedEventDataType>) => void): this;
-
- /**
- * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
- */
- addListener(event: "Debugger.paused", listener: (message: InspectorNotification<Debugger.PausedEventDataType>) => void): this;
-
- /**
- * Fired when the virtual machine resumed execution.
- */
- addListener(event: "Debugger.resumed", listener: () => void): this;
-
- /**
- * Issued when new console message is added.
- */
- addListener(event: "Console.messageAdded", listener: (message: InspectorNotification<Console.MessageAddedEventDataType>) => void): this;
-
- /**
- * Sent when new profile recording is started using console.profile() call.
- */
- addListener(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification<Profiler.ConsoleProfileStartedEventDataType>) => void): this;
-
- addListener(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification<Profiler.ConsoleProfileFinishedEventDataType>) => void): this;
- addListener(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification<HeapProfiler.AddHeapSnapshotChunkEventDataType>) => void): this;
- addListener(event: "HeapProfiler.resetProfiles", listener: () => void): this;
- addListener(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification<HeapProfiler.ReportHeapSnapshotProgressEventDataType>) => void): this;
-
- /**
- * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event.
- */
- addListener(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification<HeapProfiler.LastSeenObjectIdEventDataType>) => void): this;
-
- /**
- * If heap objects tracking has been started then backend may send update for one or more fragments
- */
- addListener(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification<HeapProfiler.HeapStatsUpdateEventDataType>) => void): this;
-
- /**
- * Contains an bucket of collected trace events.
- */
- addListener(event: "NodeTracing.dataCollected", listener: (message: InspectorNotification<NodeTracing.DataCollectedEventDataType>) => void): this;
-
- /**
- * Signals that tracing is stopped and there is no trace buffers pending flush, all data were
- * delivered via dataCollected events.
- */
- addListener(event: "NodeTracing.tracingComplete", listener: () => void): this;
-
- /**
- * Issued when attached to a worker.
- */
- addListener(event: "NodeWorker.attachedToWorker", listener: (message: InspectorNotification<NodeWorker.AttachedToWorkerEventDataType>) => void): this;
-
- /**
- * Issued when detached from the worker.
- */
- addListener(event: "NodeWorker.detachedFromWorker", listener: (message: InspectorNotification<NodeWorker.DetachedFromWorkerEventDataType>) => void): this;
-
- /**
- * Notifies about a new protocol message received from the session
- * (session ID is provided in attachedToWorker notification).
- */
- addListener(event: "NodeWorker.receivedMessageFromWorker", listener: (message: InspectorNotification<NodeWorker.ReceivedMessageFromWorkerEventDataType>) => void): this;
-
- /**
- * This event is fired instead of `Runtime.executionContextDestroyed` when
- * enabled.
- * It is fired when the Node process finished all code execution and is
- * waiting for all frontends to disconnect.
- */
- addListener(event: "NodeRuntime.waitingForDisconnect", listener: () => void): this;
-
- emit(event: string | symbol, ...args: any[]): boolean;
- emit(event: "inspectorNotification", message: InspectorNotification<{}>): boolean;
- emit(event: "Runtime.executionContextCreated", message: InspectorNotification<Runtime.ExecutionContextCreatedEventDataType>): boolean;
- emit(event: "Runtime.executionContextDestroyed", message: InspectorNotification<Runtime.ExecutionContextDestroyedEventDataType>): boolean;
- emit(event: "Runtime.executionContextsCleared"): boolean;
- emit(event: "Runtime.exceptionThrown", message: InspectorNotification<Runtime.ExceptionThrownEventDataType>): boolean;
- emit(event: "Runtime.exceptionRevoked", message: InspectorNotification<Runtime.ExceptionRevokedEventDataType>): boolean;
- emit(event: "Runtime.consoleAPICalled", message: InspectorNotification<Runtime.ConsoleAPICalledEventDataType>): boolean;
- emit(event: "Runtime.inspectRequested", message: InspectorNotification<Runtime.InspectRequestedEventDataType>): boolean;
- emit(event: "Debugger.scriptParsed", message: InspectorNotification<Debugger.ScriptParsedEventDataType>): boolean;
- emit(event: "Debugger.scriptFailedToParse", message: InspectorNotification<Debugger.ScriptFailedToParseEventDataType>): boolean;
- emit(event: "Debugger.breakpointResolved", message: InspectorNotification<Debugger.BreakpointResolvedEventDataType>): boolean;
- emit(event: "Debugger.paused", message: InspectorNotification<Debugger.PausedEventDataType>): boolean;
- emit(event: "Debugger.resumed"): boolean;
- emit(event: "Console.messageAdded", message: InspectorNotification<Console.MessageAddedEventDataType>): boolean;
- emit(event: "Profiler.consoleProfileStarted", message: InspectorNotification<Profiler.ConsoleProfileStartedEventDataType>): boolean;
- emit(event: "Profiler.consoleProfileFinished", message: InspectorNotification<Profiler.ConsoleProfileFinishedEventDataType>): boolean;
- emit(event: "HeapProfiler.addHeapSnapshotChunk", message: InspectorNotification<HeapProfiler.AddHeapSnapshotChunkEventDataType>): boolean;
- emit(event: "HeapProfiler.resetProfiles"): boolean;
- emit(event: "HeapProfiler.reportHeapSnapshotProgress", message: InspectorNotification<HeapProfiler.ReportHeapSnapshotProgressEventDataType>): boolean;
- emit(event: "HeapProfiler.lastSeenObjectId", message: InspectorNotification<HeapProfiler.LastSeenObjectIdEventDataType>): boolean;
- emit(event: "HeapProfiler.heapStatsUpdate", message: InspectorNotification<HeapProfiler.HeapStatsUpdateEventDataType>): boolean;
- emit(event: "NodeTracing.dataCollected", message: InspectorNotification<NodeTracing.DataCollectedEventDataType>): boolean;
- emit(event: "NodeTracing.tracingComplete"): boolean;
- emit(event: "NodeWorker.attachedToWorker", message: InspectorNotification<NodeWorker.AttachedToWorkerEventDataType>): boolean;
- emit(event: "NodeWorker.detachedFromWorker", message: InspectorNotification<NodeWorker.DetachedFromWorkerEventDataType>): boolean;
- emit(event: "NodeWorker.receivedMessageFromWorker", message: InspectorNotification<NodeWorker.ReceivedMessageFromWorkerEventDataType>): boolean;
- emit(event: "NodeRuntime.waitingForDisconnect"): boolean;
-
- on(event: string, listener: (...args: any[]) => void): this;
-
- /**
- * Emitted when any notification from the V8 Inspector is received.
- */
- on(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this;
-
- /**
- * Issued when new execution context is created.
- */
- on(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification<Runtime.ExecutionContextCreatedEventDataType>) => void): this;
-
- /**
- * Issued when execution context is destroyed.
- */
- on(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification<Runtime.ExecutionContextDestroyedEventDataType>) => void): this;
-
- /**
- * Issued when all executionContexts were cleared in browser
- */
- on(event: "Runtime.executionContextsCleared", listener: () => void): this;
-
- /**
- * Issued when exception was thrown and unhandled.
- */
- on(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification<Runtime.ExceptionThrownEventDataType>) => void): this;
-
- /**
- * Issued when unhandled exception was revoked.
- */
- on(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification<Runtime.ExceptionRevokedEventDataType>) => void): this;
-
- /**
- * Issued when console API was called.
- */
- on(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification<Runtime.ConsoleAPICalledEventDataType>) => void): this;
-
- /**
- * Issued when object should be inspected (for example, as a result of inspect() command line API call).
- */
- on(event: "Runtime.inspectRequested", listener: (message: InspectorNotification<Runtime.InspectRequestedEventDataType>) => void): this;
-
- /**
- * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger.
- */
- on(event: "Debugger.scriptParsed", listener: (message: InspectorNotification<Debugger.ScriptParsedEventDataType>) => void): this;
-
- /**
- * Fired when virtual machine fails to parse the script.
- */
- on(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification<Debugger.ScriptFailedToParseEventDataType>) => void): this;
-
- /**
- * Fired when breakpoint is resolved to an actual script and location.
- */
- on(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification<Debugger.BreakpointResolvedEventDataType>) => void): this;
-
- /**
- * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
- */
- on(event: "Debugger.paused", listener: (message: InspectorNotification<Debugger.PausedEventDataType>) => void): this;
-
- /**
- * Fired when the virtual machine resumed execution.
- */
- on(event: "Debugger.resumed", listener: () => void): this;
-
- /**
- * Issued when new console message is added.
- */
- on(event: "Console.messageAdded", listener: (message: InspectorNotification<Console.MessageAddedEventDataType>) => void): this;
-
- /**
- * Sent when new profile recording is started using console.profile() call.
- */
- on(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification<Profiler.ConsoleProfileStartedEventDataType>) => void): this;
-
- on(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification<Profiler.ConsoleProfileFinishedEventDataType>) => void): this;
- on(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification<HeapProfiler.AddHeapSnapshotChunkEventDataType>) => void): this;
- on(event: "HeapProfiler.resetProfiles", listener: () => void): this;
- on(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification<HeapProfiler.ReportHeapSnapshotProgressEventDataType>) => void): this;
-
- /**
- * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event.
- */
- on(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification<HeapProfiler.LastSeenObjectIdEventDataType>) => void): this;
-
- /**
- * If heap objects tracking has been started then backend may send update for one or more fragments
- */
- on(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification<HeapProfiler.HeapStatsUpdateEventDataType>) => void): this;
-
- /**
- * Contains an bucket of collected trace events.
- */
- on(event: "NodeTracing.dataCollected", listener: (message: InspectorNotification<NodeTracing.DataCollectedEventDataType>) => void): this;
-
- /**
- * Signals that tracing is stopped and there is no trace buffers pending flush, all data were
- * delivered via dataCollected events.
- */
- on(event: "NodeTracing.tracingComplete", listener: () => void): this;
-
- /**
- * Issued when attached to a worker.
- */
- on(event: "NodeWorker.attachedToWorker", listener: (message: InspectorNotification<NodeWorker.AttachedToWorkerEventDataType>) => void): this;
-
- /**
- * Issued when detached from the worker.
- */
- on(event: "NodeWorker.detachedFromWorker", listener: (message: InspectorNotification<NodeWorker.DetachedFromWorkerEventDataType>) => void): this;
-
- /**
- * Notifies about a new protocol message received from the session
- * (session ID is provided in attachedToWorker notification).
- */
- on(event: "NodeWorker.receivedMessageFromWorker", listener: (message: InspectorNotification<NodeWorker.ReceivedMessageFromWorkerEventDataType>) => void): this;
-
- /**
- * This event is fired instead of `Runtime.executionContextDestroyed` when
- * enabled.
- * It is fired when the Node process finished all code execution and is
- * waiting for all frontends to disconnect.
- */
- on(event: "NodeRuntime.waitingForDisconnect", listener: () => void): this;
-
- once(event: string, listener: (...args: any[]) => void): this;
-
- /**
- * Emitted when any notification from the V8 Inspector is received.
- */
- once(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this;
-
- /**
- * Issued when new execution context is created.
- */
- once(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification<Runtime.ExecutionContextCreatedEventDataType>) => void): this;
-
- /**
- * Issued when execution context is destroyed.
- */
- once(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification<Runtime.ExecutionContextDestroyedEventDataType>) => void): this;
-
- /**
- * Issued when all executionContexts were cleared in browser
- */
- once(event: "Runtime.executionContextsCleared", listener: () => void): this;
-
- /**
- * Issued when exception was thrown and unhandled.
- */
- once(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification<Runtime.ExceptionThrownEventDataType>) => void): this;
-
- /**
- * Issued when unhandled exception was revoked.
- */
- once(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification<Runtime.ExceptionRevokedEventDataType>) => void): this;
-
- /**
- * Issued when console API was called.
- */
- once(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification<Runtime.ConsoleAPICalledEventDataType>) => void): this;
-
- /**
- * Issued when object should be inspected (for example, as a result of inspect() command line API call).
- */
- once(event: "Runtime.inspectRequested", listener: (message: InspectorNotification<Runtime.InspectRequestedEventDataType>) => void): this;
-
- /**
- * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger.
- */
- once(event: "Debugger.scriptParsed", listener: (message: InspectorNotification<Debugger.ScriptParsedEventDataType>) => void): this;
-
- /**
- * Fired when virtual machine fails to parse the script.
- */
- once(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification<Debugger.ScriptFailedToParseEventDataType>) => void): this;
-
- /**
- * Fired when breakpoint is resolved to an actual script and location.
- */
- once(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification<Debugger.BreakpointResolvedEventDataType>) => void): this;
-
- /**
- * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
- */
- once(event: "Debugger.paused", listener: (message: InspectorNotification<Debugger.PausedEventDataType>) => void): this;
-
- /**
- * Fired when the virtual machine resumed execution.
- */
- once(event: "Debugger.resumed", listener: () => void): this;
-
- /**
- * Issued when new console message is added.
- */
- once(event: "Console.messageAdded", listener: (message: InspectorNotification<Console.MessageAddedEventDataType>) => void): this;
-
- /**
- * Sent when new profile recording is started using console.profile() call.
- */
- once(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification<Profiler.ConsoleProfileStartedEventDataType>) => void): this;
-
- once(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification<Profiler.ConsoleProfileFinishedEventDataType>) => void): this;
- once(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification<HeapProfiler.AddHeapSnapshotChunkEventDataType>) => void): this;
- once(event: "HeapProfiler.resetProfiles", listener: () => void): this;
- once(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification<HeapProfiler.ReportHeapSnapshotProgressEventDataType>) => void): this;
-
- /**
- * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event.
- */
- once(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification<HeapProfiler.LastSeenObjectIdEventDataType>) => void): this;
-
- /**
- * If heap objects tracking has been started then backend may send update for one or more fragments
- */
- once(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification<HeapProfiler.HeapStatsUpdateEventDataType>) => void): this;
-
- /**
- * Contains an bucket of collected trace events.
- */
- once(event: "NodeTracing.dataCollected", listener: (message: InspectorNotification<NodeTracing.DataCollectedEventDataType>) => void): this;
-
- /**
- * Signals that tracing is stopped and there is no trace buffers pending flush, all data were
- * delivered via dataCollected events.
- */
- once(event: "NodeTracing.tracingComplete", listener: () => void): this;
-
- /**
- * Issued when attached to a worker.
- */
- once(event: "NodeWorker.attachedToWorker", listener: (message: InspectorNotification<NodeWorker.AttachedToWorkerEventDataType>) => void): this;
-
- /**
- * Issued when detached from the worker.
- */
- once(event: "NodeWorker.detachedFromWorker", listener: (message: InspectorNotification<NodeWorker.DetachedFromWorkerEventDataType>) => void): this;
-
- /**
- * Notifies about a new protocol message received from the session
- * (session ID is provided in attachedToWorker notification).
- */
- once(event: "NodeWorker.receivedMessageFromWorker", listener: (message: InspectorNotification<NodeWorker.ReceivedMessageFromWorkerEventDataType>) => void): this;
-
- /**
- * This event is fired instead of `Runtime.executionContextDestroyed` when
- * enabled.
- * It is fired when the Node process finished all code execution and is
- * waiting for all frontends to disconnect.
- */
- once(event: "NodeRuntime.waitingForDisconnect", listener: () => void): this;
-
- prependListener(event: string, listener: (...args: any[]) => void): this;
-
- /**
- * Emitted when any notification from the V8 Inspector is received.
- */
- prependListener(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this;
-
- /**
- * Issued when new execution context is created.
- */
- prependListener(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification<Runtime.ExecutionContextCreatedEventDataType>) => void): this;
-
- /**
- * Issued when execution context is destroyed.
- */
- prependListener(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification<Runtime.ExecutionContextDestroyedEventDataType>) => void): this;
-
- /**
- * Issued when all executionContexts were cleared in browser
- */
- prependListener(event: "Runtime.executionContextsCleared", listener: () => void): this;
-
- /**
- * Issued when exception was thrown and unhandled.
- */
- prependListener(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification<Runtime.ExceptionThrownEventDataType>) => void): this;
-
- /**
- * Issued when unhandled exception was revoked.
- */
- prependListener(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification<Runtime.ExceptionRevokedEventDataType>) => void): this;
-
- /**
- * Issued when console API was called.
- */
- prependListener(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification<Runtime.ConsoleAPICalledEventDataType>) => void): this;
-
- /**
- * Issued when object should be inspected (for example, as a result of inspect() command line API call).
- */
- prependListener(event: "Runtime.inspectRequested", listener: (message: InspectorNotification<Runtime.InspectRequestedEventDataType>) => void): this;
-
- /**
- * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger.
- */
- prependListener(event: "Debugger.scriptParsed", listener: (message: InspectorNotification<Debugger.ScriptParsedEventDataType>) => void): this;
-
- /**
- * Fired when virtual machine fails to parse the script.
- */
- prependListener(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification<Debugger.ScriptFailedToParseEventDataType>) => void): this;
-
- /**
- * Fired when breakpoint is resolved to an actual script and location.
- */
- prependListener(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification<Debugger.BreakpointResolvedEventDataType>) => void): this;
-
- /**
- * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
- */
- prependListener(event: "Debugger.paused", listener: (message: InspectorNotification<Debugger.PausedEventDataType>) => void): this;
-
- /**
- * Fired when the virtual machine resumed execution.
- */
- prependListener(event: "Debugger.resumed", listener: () => void): this;
-
- /**
- * Issued when new console message is added.
- */
- prependListener(event: "Console.messageAdded", listener: (message: InspectorNotification<Console.MessageAddedEventDataType>) => void): this;
-
- /**
- * Sent when new profile recording is started using console.profile() call.
- */
- prependListener(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification<Profiler.ConsoleProfileStartedEventDataType>) => void): this;
-
- prependListener(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification<Profiler.ConsoleProfileFinishedEventDataType>) => void): this;
- prependListener(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification<HeapProfiler.AddHeapSnapshotChunkEventDataType>) => void): this;
- prependListener(event: "HeapProfiler.resetProfiles", listener: () => void): this;
- prependListener(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification<HeapProfiler.ReportHeapSnapshotProgressEventDataType>) => void): this;
-
- /**
- * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event.
- */
- prependListener(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification<HeapProfiler.LastSeenObjectIdEventDataType>) => void): this;
-
- /**
- * If heap objects tracking has been started then backend may send update for one or more fragments
- */
- prependListener(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification<HeapProfiler.HeapStatsUpdateEventDataType>) => void): this;
-
- /**
- * Contains an bucket of collected trace events.
- */
- prependListener(event: "NodeTracing.dataCollected", listener: (message: InspectorNotification<NodeTracing.DataCollectedEventDataType>) => void): this;
-
- /**
- * Signals that tracing is stopped and there is no trace buffers pending flush, all data were
- * delivered via dataCollected events.
- */
- prependListener(event: "NodeTracing.tracingComplete", listener: () => void): this;
-
- /**
- * Issued when attached to a worker.
- */
- prependListener(event: "NodeWorker.attachedToWorker", listener: (message: InspectorNotification<NodeWorker.AttachedToWorkerEventDataType>) => void): this;
-
- /**
- * Issued when detached from the worker.
- */
- prependListener(event: "NodeWorker.detachedFromWorker", listener: (message: InspectorNotification<NodeWorker.DetachedFromWorkerEventDataType>) => void): this;
-
- /**
- * Notifies about a new protocol message received from the session
- * (session ID is provided in attachedToWorker notification).
- */
- prependListener(event: "NodeWorker.receivedMessageFromWorker", listener: (message: InspectorNotification<NodeWorker.ReceivedMessageFromWorkerEventDataType>) => void): this;
-
- /**
- * This event is fired instead of `Runtime.executionContextDestroyed` when
- * enabled.
- * It is fired when the Node process finished all code execution and is
- * waiting for all frontends to disconnect.
- */
- prependListener(event: "NodeRuntime.waitingForDisconnect", listener: () => void): this;
-
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
-
- /**
- * Emitted when any notification from the V8 Inspector is received.
- */
- prependOnceListener(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this;
-
- /**
- * Issued when new execution context is created.
- */
- prependOnceListener(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification<Runtime.ExecutionContextCreatedEventDataType>) => void): this;
-
- /**
- * Issued when execution context is destroyed.
- */
- prependOnceListener(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification<Runtime.ExecutionContextDestroyedEventDataType>) => void): this;
-
- /**
- * Issued when all executionContexts were cleared in browser
- */
- prependOnceListener(event: "Runtime.executionContextsCleared", listener: () => void): this;
-
- /**
- * Issued when exception was thrown and unhandled.
- */
- prependOnceListener(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification<Runtime.ExceptionThrownEventDataType>) => void): this;
-
- /**
- * Issued when unhandled exception was revoked.
- */
- prependOnceListener(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification<Runtime.ExceptionRevokedEventDataType>) => void): this;
-
- /**
- * Issued when console API was called.
- */
- prependOnceListener(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification<Runtime.ConsoleAPICalledEventDataType>) => void): this;
-
- /**
- * Issued when object should be inspected (for example, as a result of inspect() command line API call).
- */
- prependOnceListener(event: "Runtime.inspectRequested", listener: (message: InspectorNotification<Runtime.InspectRequestedEventDataType>) => void): this;
-
- /**
- * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger.
- */
- prependOnceListener(event: "Debugger.scriptParsed", listener: (message: InspectorNotification<Debugger.ScriptParsedEventDataType>) => void): this;
-
- /**
- * Fired when virtual machine fails to parse the script.
- */
- prependOnceListener(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification<Debugger.ScriptFailedToParseEventDataType>) => void): this;
-
- /**
- * Fired when breakpoint is resolved to an actual script and location.
- */
- prependOnceListener(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification<Debugger.BreakpointResolvedEventDataType>) => void): this;
-
- /**
- * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
- */
- prependOnceListener(event: "Debugger.paused", listener: (message: InspectorNotification<Debugger.PausedEventDataType>) => void): this;
-
- /**
- * Fired when the virtual machine resumed execution.
- */
- prependOnceListener(event: "Debugger.resumed", listener: () => void): this;
-
- /**
- * Issued when new console message is added.
- */
- prependOnceListener(event: "Console.messageAdded", listener: (message: InspectorNotification<Console.MessageAddedEventDataType>) => void): this;
-
- /**
- * Sent when new profile recording is started using console.profile() call.
- */
- prependOnceListener(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification<Profiler.ConsoleProfileStartedEventDataType>) => void): this;
-
- prependOnceListener(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification<Profiler.ConsoleProfileFinishedEventDataType>) => void): this;
- prependOnceListener(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification<HeapProfiler.AddHeapSnapshotChunkEventDataType>) => void): this;
- prependOnceListener(event: "HeapProfiler.resetProfiles", listener: () => void): this;
- prependOnceListener(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification<HeapProfiler.ReportHeapSnapshotProgressEventDataType>) => void): this;
-
- /**
- * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event.
- */
- prependOnceListener(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification<HeapProfiler.LastSeenObjectIdEventDataType>) => void): this;
-
- /**
- * If heap objects tracking has been started then backend may send update for one or more fragments
- */
- prependOnceListener(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification<HeapProfiler.HeapStatsUpdateEventDataType>) => void): this;
-
- /**
- * Contains an bucket of collected trace events.
- */
- prependOnceListener(event: "NodeTracing.dataCollected", listener: (message: InspectorNotification<NodeTracing.DataCollectedEventDataType>) => void): this;
-
- /**
- * Signals that tracing is stopped and there is no trace buffers pending flush, all data were
- * delivered via dataCollected events.
- */
- prependOnceListener(event: "NodeTracing.tracingComplete", listener: () => void): this;
-
- /**
- * Issued when attached to a worker.
- */
- prependOnceListener(event: "NodeWorker.attachedToWorker", listener: (message: InspectorNotification<NodeWorker.AttachedToWorkerEventDataType>) => void): this;
-
- /**
- * Issued when detached from the worker.
- */
- prependOnceListener(event: "NodeWorker.detachedFromWorker", listener: (message: InspectorNotification<NodeWorker.DetachedFromWorkerEventDataType>) => void): this;
-
- /**
- * Notifies about a new protocol message received from the session
- * (session ID is provided in attachedToWorker notification).
- */
- prependOnceListener(event: "NodeWorker.receivedMessageFromWorker", listener: (message: InspectorNotification<NodeWorker.ReceivedMessageFromWorkerEventDataType>) => void): this;
-
- /**
- * This event is fired instead of `Runtime.executionContextDestroyed` when
- * enabled.
- * It is fired when the Node process finished all code execution and is
- * waiting for all frontends to disconnect.
- */
- prependOnceListener(event: "NodeRuntime.waitingForDisconnect", listener: () => void): this;
- }
-
- // Top Level API
-
- /**
- * Activate inspector on host and port. Equivalent to node --inspect=[[host:]port], but can be done programatically after node has started.
- * If wait is true, will block until a client has connected to the inspect port and flow control has been passed to the debugger client.
- * @param port Port to listen on for inspector connections. Optional, defaults to what was specified on the CLI.
- * @param host Host to listen on for inspector connections. Optional, defaults to what was specified on the CLI.
- * @param wait Block until a client has connected. Optional, defaults to false.
- */
- function open(port?: number, host?: string, wait?: boolean): void;
-
- /**
- * Deactivate the inspector. Blocks until there are no active connections.
- */
- function close(): void;
-
- /**
- * Return the URL of the active inspector, or `undefined` if there is none.
- */
- function url(): string | undefined;
-}
diff --git a/assets/node_modules/@types/node/module.d.ts b/assets/node_modules/@types/node/module.d.ts
deleted file mode 100644
index 2654f42..0000000
--- a/assets/node_modules/@types/node/module.d.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-declare module "module" {
- import { URL } from "url";
- namespace Module {
- /**
- * Updates all the live bindings for builtin ES Modules to match the properties of the CommonJS exports.
- * It does not add or remove exported names from the ES Modules.
- */
- function syncBuiltinESMExports(): void;
-
- /**
- * @experimental
- */
- function findSourceMap(path: string, error?: Error): SourceMap;
- interface SourceMapPayload {
- file: string;
- version: number;
- sources: string[];
- sourcesContent: string[];
- names: string[];
- mappings: string;
- sourceRoot: string;
- }
-
- interface SourceMapping {
- generatedLine: number;
- generatedColumn: number;
- originalSource: string;
- originalLine: number;
- originalColumn: number;
- }
-
- /**
- * @experimental
- */
- class SourceMap {
- readonly payload: SourceMapPayload;
- constructor(payload: SourceMapPayload);
- findEntry(line: number, column: number): SourceMapping;
- }
- }
- interface Module extends NodeModule {}
- class Module {
- static runMain(): void;
- static wrap(code: string): string;
-
- /**
- * @deprecated Deprecated since: v12.2.0. Please use createRequire() instead.
- */
- static createRequireFromPath(path: string): NodeRequire;
- static createRequire(path: string | URL): NodeRequire;
- static builtinModules: string[];
-
- static Module: typeof Module;
-
- constructor(id: string, parent?: Module);
- }
- export = Module;
-}
diff --git a/assets/node_modules/@types/node/net.d.ts b/assets/node_modules/@types/node/net.d.ts
deleted file mode 100644
index 8eb5c7b..0000000
--- a/assets/node_modules/@types/node/net.d.ts
+++ /dev/null
@@ -1,268 +0,0 @@
-declare module "net" {
- import * as stream from "stream";
- import * as events from "events";
- import * as dns from "dns";
-
- type LookupFunction = (hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void) => void;
-
- interface AddressInfo {
- address: string;
- family: string;
- port: number;
- }
-
- interface SocketConstructorOpts {
- fd?: number;
- allowHalfOpen?: boolean;
- readable?: boolean;
- writable?: boolean;
- }
-
- interface OnReadOpts {
- buffer: Uint8Array | (() => Uint8Array);
- /**
- * This function is called for every chunk of incoming data.
- * Two arguments are passed to it: the number of bytes written to buffer and a reference to buffer.
- * Return false from this function to implicitly pause() the socket.
- */
- callback(bytesWritten: number, buf: Uint8Array): boolean;
- }
-
- interface ConnectOpts {
- /**
- * If specified, incoming data is stored in a single buffer and passed to the supplied callback when data arrives on the socket.
- * Note: this will cause the streaming functionality to not provide any data, however events like 'error', 'end', and 'close' will
- * still be emitted as normal and methods like pause() and resume() will also behave as expected.
- */
- onread?: OnReadOpts;
- }
-
- interface TcpSocketConnectOpts extends ConnectOpts {
- port: number;
- host?: string;
- localAddress?: string;
- localPort?: number;
- hints?: number;
- family?: number;
- lookup?: LookupFunction;
- }
-
- interface IpcSocketConnectOpts extends ConnectOpts {
- path: string;
- }
-
- type SocketConnectOpts = TcpSocketConnectOpts | IpcSocketConnectOpts;
-
- class Socket extends stream.Duplex {
- constructor(options?: SocketConstructorOpts);
-
- // Extended base methods
- write(buffer: Uint8Array | string, cb?: (err?: Error) => void): boolean;
- write(str: Uint8Array | string, encoding?: string, cb?: (err?: Error) => void): boolean;
-
- connect(options: SocketConnectOpts, connectionListener?: () => void): this;
- connect(port: number, host: string, connectionListener?: () => void): this;
- connect(port: number, connectionListener?: () => void): this;
- connect(path: string, connectionListener?: () => void): this;
-
- setEncoding(encoding?: string): this;
- pause(): this;
- resume(): this;
- setTimeout(timeout: number, callback?: () => void): this;
- setNoDelay(noDelay?: boolean): this;
- setKeepAlive(enable?: boolean, initialDelay?: number): this;
- address(): AddressInfo | string;
- unref(): this;
- ref(): this;
-
- readonly bufferSize: number;
- readonly bytesRead: number;
- readonly bytesWritten: number;
- readonly connecting: boolean;
- readonly destroyed: boolean;
- readonly localAddress: string;
- readonly localPort: number;
- readonly remoteAddress?: string;
- readonly remoteFamily?: string;
- readonly remotePort?: number;
-
- // Extended base methods
- end(cb?: () => void): void;
- end(buffer: Uint8Array | string, cb?: () => void): void;
- end(str: Uint8Array | string, encoding?: string, cb?: () => void): void;
-
- /**
- * events.EventEmitter
- * 1. close
- * 2. connect
- * 3. data
- * 4. drain
- * 5. end
- * 6. error
- * 7. lookup
- * 8. timeout
- */
- addListener(event: string, listener: (...args: any[]) => void): this;
- addListener(event: "close", listener: (had_error: boolean) => void): this;
- addListener(event: "connect", listener: () => void): this;
- addListener(event: "data", listener: (data: Buffer) => void): this;
- addListener(event: "drain", listener: () => void): this;
- addListener(event: "end", listener: () => void): this;
- addListener(event: "error", listener: (err: Error) => void): this;
- addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
- addListener(event: "timeout", listener: () => void): this;
-
- emit(event: string | symbol, ...args: any[]): boolean;
- emit(event: "close", had_error: boolean): boolean;
- emit(event: "connect"): boolean;
- emit(event: "data", data: Buffer): boolean;
- emit(event: "drain"): boolean;
- emit(event: "end"): boolean;
- emit(event: "error", err: Error): boolean;
- emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean;
- emit(event: "timeout"): boolean;
-
- on(event: string, listener: (...args: any[]) => void): this;
- on(event: "close", listener: (had_error: boolean) => void): this;
- on(event: "connect", listener: () => void): this;
- on(event: "data", listener: (data: Buffer) => void): this;
- on(event: "drain", listener: () => void): this;
- on(event: "end", listener: () => void): this;
- on(event: "error", listener: (err: Error) => void): this;
- on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
- on(event: "timeout", listener: () => void): this;
-
- once(event: string, listener: (...args: any[]) => void): this;
- once(event: "close", listener: (had_error: boolean) => void): this;
- once(event: "connect", listener: () => void): this;
- once(event: "data", listener: (data: Buffer) => void): this;
- once(event: "drain", listener: () => void): this;
- once(event: "end", listener: () => void): this;
- once(event: "error", listener: (err: Error) => void): this;
- once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
- once(event: "timeout", listener: () => void): this;
-
- prependListener(event: string, listener: (...args: any[]) => void): this;
- prependListener(event: "close", listener: (had_error: boolean) => void): this;
- prependListener(event: "connect", listener: () => void): this;
- prependListener(event: "data", listener: (data: Buffer) => void): this;
- prependListener(event: "drain", listener: () => void): this;
- prependListener(event: "end", listener: () => void): this;
- prependListener(event: "error", listener: (err: Error) => void): this;
- prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
- prependListener(event: "timeout", listener: () => void): this;
-
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
- prependOnceListener(event: "close", listener: (had_error: boolean) => void): this;
- prependOnceListener(event: "connect", listener: () => void): this;
- prependOnceListener(event: "data", listener: (data: Buffer) => void): this;
- prependOnceListener(event: "drain", listener: () => void): this;
- prependOnceListener(event: "end", listener: () => void): this;
- prependOnceListener(event: "error", listener: (err: Error) => void): this;
- prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
- prependOnceListener(event: "timeout", listener: () => void): this;
- }
-
- interface ListenOptions {
- port?: number;
- host?: string;
- backlog?: number;
- path?: string;
- exclusive?: boolean;
- readableAll?: boolean;
- writableAll?: boolean;
- /**
- * @default false
- */
- ipv6Only?: boolean;
- }
-
- // https://github.com/nodejs/node/blob/master/lib/net.js
- class Server extends events.EventEmitter {
- constructor(connectionListener?: (socket: Socket) => void);
- constructor(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void);
-
- listen(port?: number, hostname?: string, backlog?: number, listeningListener?: () => void): this;
- listen(port?: number, hostname?: string, listeningListener?: () => void): this;
- listen(port?: number, backlog?: number, listeningListener?: () => void): this;
- listen(port?: number, listeningListener?: () => void): this;
- listen(path: string, backlog?: number, listeningListener?: () => void): this;
- listen(path: string, listeningListener?: () => void): this;
- listen(options: ListenOptions, listeningListener?: () => void): this;
- listen(handle: any, backlog?: number, listeningListener?: () => void): this;
- listen(handle: any, listeningListener?: () => void): this;
- close(callback?: (err?: Error) => void): this;
- address(): AddressInfo | string | null;
- getConnections(cb: (error: Error | null, count: number) => void): void;
- ref(): this;
- unref(): this;
- maxConnections: number;
- connections: number;
- listening: boolean;
-
- /**
- * events.EventEmitter
- * 1. close
- * 2. connection
- * 3. error
- * 4. listening
- */
- addListener(event: string, listener: (...args: any[]) => void): this;
- addListener(event: "close", listener: () => void): this;
- addListener(event: "connection", listener: (socket: Socket) => void): this;
- addListener(event: "error", listener: (err: Error) => void): this;
- addListener(event: "listening", listener: () => void): this;
-
- emit(event: string | symbol, ...args: any[]): boolean;
- emit(event: "close"): boolean;
- emit(event: "connection", socket: Socket): boolean;
- emit(event: "error", err: Error): boolean;
- emit(event: "listening"): boolean;
-
- on(event: string, listener: (...args: any[]) => void): this;
- on(event: "close", listener: () => void): this;
- on(event: "connection", listener: (socket: Socket) => void): this;
- on(event: "error", listener: (err: Error) => void): this;
- on(event: "listening", listener: () => void): this;
-
- once(event: string, listener: (...args: any[]) => void): this;
- once(event: "close", listener: () => void): this;
- once(event: "connection", listener: (socket: Socket) => void): this;
- once(event: "error", listener: (err: Error) => void): this;
- once(event: "listening", listener: () => void): this;
-
- prependListener(event: string, listener: (...args: any[]) => void): this;
- prependListener(event: "close", listener: () => void): this;
- prependListener(event: "connection", listener: (socket: Socket) => void): this;
- prependListener(event: "error", listener: (err: Error) => void): this;
- prependListener(event: "listening", listener: () => void): this;
-
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
- prependOnceListener(event: "close", listener: () => void): this;
- prependOnceListener(event: "connection", listener: (socket: Socket) => void): this;
- prependOnceListener(event: "error", listener: (err: Error) => void): this;
- prependOnceListener(event: "listening", listener: () => void): this;
- }
-
- interface TcpNetConnectOpts extends TcpSocketConnectOpts, SocketConstructorOpts {
- timeout?: number;
- }
-
- interface IpcNetConnectOpts extends IpcSocketConnectOpts, SocketConstructorOpts {
- timeout?: number;
- }
-
- type NetConnectOpts = TcpNetConnectOpts | IpcNetConnectOpts;
-
- function createServer(connectionListener?: (socket: Socket) => void): Server;
- function createServer(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void): Server;
- function connect(options: NetConnectOpts, connectionListener?: () => void): Socket;
- function connect(port: number, host?: string, connectionListener?: () => void): Socket;
- function connect(path: string, connectionListener?: () => void): Socket;
- function createConnection(options: NetConnectOpts, connectionListener?: () => void): Socket;
- function createConnection(port: number, host?: string, connectionListener?: () => void): Socket;
- function createConnection(path: string, connectionListener?: () => void): Socket;
- function isIP(input: string): number;
- function isIPv4(input: string): boolean;
- function isIPv6(input: string): boolean;
-}
diff --git a/assets/node_modules/@types/node/os.d.ts b/assets/node_modules/@types/node/os.d.ts
deleted file mode 100644
index 59980e7..0000000
--- a/assets/node_modules/@types/node/os.d.ts
+++ /dev/null
@@ -1,231 +0,0 @@
-declare module "os" {
- interface CpuInfo {
- model: string;
- speed: number;
- times: {
- user: number;
- nice: number;
- sys: number;
- idle: number;
- irq: number;
- };
- }
-
- interface NetworkInterfaceBase {
- address: string;
- netmask: string;
- mac: string;
- internal: boolean;
- cidr: string | null;
- }
-
- interface NetworkInterfaceInfoIPv4 extends NetworkInterfaceBase {
- family: "IPv4";
- }
-
- interface NetworkInterfaceInfoIPv6 extends NetworkInterfaceBase {
- family: "IPv6";
- scopeid: number;
- }
-
- interface UserInfo<T> {
- username: T;
- uid: number;
- gid: number;
- shell: T;
- homedir: T;
- }
-
- type NetworkInterfaceInfo = NetworkInterfaceInfoIPv4 | NetworkInterfaceInfoIPv6;
-
- function hostname(): string;
- function loadavg(): number[];
- function uptime(): number;
- function freemem(): number;
- function totalmem(): number;
- function cpus(): CpuInfo[];
- function type(): string;
- function release(): string;
- function networkInterfaces(): { [index: string]: NetworkInterfaceInfo[] };
- function homedir(): string;
- function userInfo(options: { encoding: 'buffer' }): UserInfo<Buffer>;
- function userInfo(options?: { encoding: string }): UserInfo<string>;
-
- type SignalConstants = {
- [key in NodeJS.Signals]: number;
- };
-
- namespace constants {
- const UV_UDP_REUSEADDR: number;
- namespace signals {}
- const signals: SignalConstants;
- namespace errno {
- const E2BIG: number;
- const EACCES: number;
- const EADDRINUSE: number;
- const EADDRNOTAVAIL: number;
- const EAFNOSUPPORT: number;
- const EAGAIN: number;
- const EALREADY: number;
- const EBADF: number;
- const EBADMSG: number;
- const EBUSY: number;
- const ECANCELED: number;
- const ECHILD: number;
- const ECONNABORTED: number;
- const ECONNREFUSED: number;
- const ECONNRESET: number;
- const EDEADLK: number;
- const EDESTADDRREQ: number;
- const EDOM: number;
- const EDQUOT: number;
- const EEXIST: number;
- const EFAULT: number;
- const EFBIG: number;
- const EHOSTUNREACH: number;
- const EIDRM: number;
- const EILSEQ: number;
- const EINPROGRESS: number;
- const EINTR: number;
- const EINVAL: number;
- const EIO: number;
- const EISCONN: number;
- const EISDIR: number;
- const ELOOP: number;
- const EMFILE: number;
- const EMLINK: number;
- const EMSGSIZE: number;
- const EMULTIHOP: number;
- const ENAMETOOLONG: number;
- const ENETDOWN: number;
- const ENETRESET: number;
- const ENETUNREACH: number;
- const ENFILE: number;
- const ENOBUFS: number;
- const ENODATA: number;
- const ENODEV: number;
- const ENOENT: number;
- const ENOEXEC: number;
- const ENOLCK: number;
- const ENOLINK: number;
- const ENOMEM: number;
- const ENOMSG: number;
- const ENOPROTOOPT: number;
- const ENOSPC: number;
- const ENOSR: number;
- const ENOSTR: number;
- const ENOSYS: number;
- const ENOTCONN: number;
- const ENOTDIR: number;
- const ENOTEMPTY: number;
- const ENOTSOCK: number;
- const ENOTSUP: number;
- const ENOTTY: number;
- const ENXIO: number;
- const EOPNOTSUPP: number;
- const EOVERFLOW: number;
- const EPERM: number;
- const EPIPE: number;
- const EPROTO: number;
- const EPROTONOSUPPORT: number;
- const EPROTOTYPE: number;
- const ERANGE: number;
- const EROFS: number;
- const ESPIPE: number;
- const ESRCH: number;
- const ESTALE: number;
- const ETIME: number;
- const ETIMEDOUT: number;
- const ETXTBSY: number;
- const EWOULDBLOCK: number;
- const EXDEV: number;
- const WSAEINTR: number;
- const WSAEBADF: number;
- const WSAEACCES: number;
- const WSAEFAULT: number;
- const WSAEINVAL: number;
- const WSAEMFILE: number;
- const WSAEWOULDBLOCK: number;
- const WSAEINPROGRESS: number;
- const WSAEALREADY: number;
- const WSAENOTSOCK: number;
- const WSAEDESTADDRREQ: number;
- const WSAEMSGSIZE: number;
- const WSAEPROTOTYPE: number;
- const WSAENOPROTOOPT: number;
- const WSAEPROTONOSUPPORT: number;
- const WSAESOCKTNOSUPPORT: number;
- const WSAEOPNOTSUPP: number;
- const WSAEPFNOSUPPORT: number;
- const WSAEAFNOSUPPORT: number;
- const WSAEADDRINUSE: number;
- const WSAEADDRNOTAVAIL: number;
- const WSAENETDOWN: number;
- const WSAENETUNREACH: number;
- const WSAENETRESET: number;
- const WSAECONNABORTED: number;
- const WSAECONNRESET: number;
- const WSAENOBUFS: number;
- const WSAEISCONN: number;
- const WSAENOTCONN: number;
- const WSAESHUTDOWN: number;
- const WSAETOOMANYREFS: number;
- const WSAETIMEDOUT: number;
- const WSAECONNREFUSED: number;
- const WSAELOOP: number;
- const WSAENAMETOOLONG: number;
- const WSAEHOSTDOWN: number;
- const WSAEHOSTUNREACH: number;
- const WSAENOTEMPTY: number;
- const WSAEPROCLIM: number;
- const WSAEUSERS: number;
- const WSAEDQUOT: number;
- const WSAESTALE: number;
- const WSAEREMOTE: number;
- const WSASYSNOTREADY: number;
- const WSAVERNOTSUPPORTED: number;
- const WSANOTINITIALISED: number;
- const WSAEDISCON: number;
- const WSAENOMORE: number;
- const WSAECANCELLED: number;
- const WSAEINVALIDPROCTABLE: number;
- const WSAEINVALIDPROVIDER: number;
- const WSAEPROVIDERFAILEDINIT: number;
- const WSASYSCALLFAILURE: number;
- const WSASERVICE_NOT_FOUND: number;
- const WSATYPE_NOT_FOUND: number;
- const WSA_E_NO_MORE: number;
- const WSA_E_CANCELLED: number;
- const WSAEREFUSED: number;
- }
- namespace priority {
- const PRIORITY_LOW: number;
- const PRIORITY_BELOW_NORMAL: number;
- const PRIORITY_NORMAL: number;
- const PRIORITY_ABOVE_NORMAL: number;
- const PRIORITY_HIGH: number;
- const PRIORITY_HIGHEST: number;
- }
- }
-
- function arch(): string;
- function platform(): NodeJS.Platform;
- function tmpdir(): string;
- const EOL: string;
- function endianness(): "BE" | "LE";
- /**
- * Gets the priority of a process.
- * Defaults to current process.
- */
- function getPriority(pid?: number): number;
- /**
- * Sets the priority of the current process.
- * @param priority Must be in range of -20 to 19
- */
- function setPriority(priority: number): void;
- /**
- * Sets the priority of the process specified process.
- * @param priority Must be in range of -20 to 19
- */
- function setPriority(pid: number, priority: number): void;
-}
diff --git a/assets/node_modules/@types/node/package.json b/assets/node_modules/@types/node/package.json
deleted file mode 100644
index 17e1b14..0000000
--- a/assets/node_modules/@types/node/package.json
+++ /dev/null
@@ -1,231 +0,0 @@
-{
- "name": "@types/node",
- "version": "13.7.0",
- "description": "TypeScript definitions for Node.js",
- "license": "MIT",
- "contributors": [
- {
- "name": "Microsoft TypeScript",
- "url": "https://github.com/Microsoft",
- "githubUsername": "Microsoft"
- },
- {
- "name": "DefinitelyTyped",
- "url": "https://github.com/DefinitelyTyped",
- "githubUsername": "DefinitelyTyped"
- },
- {
- "name": "Alberto Schiabel",
- "url": "https://github.com/jkomyno",
- "githubUsername": "jkomyno"
- },
- {
- "name": "Alexander T.",
- "url": "https://github.com/a-tarasyuk",
- "githubUsername": "a-tarasyuk"
- },
- {
- "name": "Alvis HT Tang",
- "url": "https://github.com/alvis",
- "githubUsername": "alvis"
- },
- {
- "name": "Andrew Makarov",
- "url": "https://github.com/r3nya",
- "githubUsername": "r3nya"
- },
- {
- "name": "Benjamin Toueg",
- "url": "https://github.com/btoueg",
- "githubUsername": "btoueg"
- },
- {
- "name": "Bruno Scheufler",
- "url": "https://github.com/brunoscheufler",
- "githubUsername": "brunoscheufler"
- },
- {
- "name": "Chigozirim C.",
- "url": "https://github.com/smac89",
- "githubUsername": "smac89"
- },
- {
- "name": "Christian Vaagland Tellnes",
- "url": "https://github.com/tellnes",
- "githubUsername": "tellnes"
- },
- {
- "name": "David Junger",
- "url": "https://github.com/touffy",
- "githubUsername": "touffy"
- },
- {
- "name": "Deividas Bakanas",
- "url": "https://github.com/DeividasBakanas",
- "githubUsername": "DeividasBakanas"
- },
- {
- "name": "Eugene Y. Q. Shen",
- "url": "https://github.com/eyqs",
- "githubUsername": "eyqs"
- },
- {
- "name": "Flarna",
- "url": "https://github.com/Flarna",
- "githubUsername": "Flarna"
- },
- {
- "name": "Hannes Magnusson",
- "url": "https://github.com/Hannes-Magnusson-CK",
- "githubUsername": "Hannes-Magnusson-CK"
- },
- {
- "name": "Hoàng Văn Khải",
- "url": "https://github.com/KSXGitHub",
- "githubUsername": "KSXGitHub"
- },
- {
- "name": "Huw",
- "url": "https://github.com/hoo29",
- "githubUsername": "hoo29"
- },
- {
- "name": "Kelvin Jin",
- "url": "https://github.com/kjin",
- "githubUsername": "kjin"
- },
- {
- "name": "Klaus Meinhardt",
- "url": "https://github.com/ajafff",
- "githubUsername": "ajafff"
- },
- {
- "name": "Lishude",
- "url": "https://github.com/islishude",
- "githubUsername": "islishude"
- },
- {
- "name": "Mariusz Wiktorczyk",
- "url": "https://github.com/mwiktorczyk",
- "githubUsername": "mwiktorczyk"
- },
- {
- "name": "Mohsen Azimi",
- "url": "https://github.com/mohsen1",
- "githubUsername": "mohsen1"
- },
- {
- "name": "Nicolas Even",
- "url": "https://github.com/n-e",
- "githubUsername": "n-e"
- },
- {
- "name": "Nicolas Voigt",
- "url": "https://github.com/octo-sniffle",
- "githubUsername": "octo-sniffle"
- },
- {
- "name": "Nikita Galkin",
- "url": "https://github.com/galkin",
- "githubUsername": "galkin"
- },
- {
- "name": "Parambir Singh",
- "url": "https://github.com/parambirs",
- "githubUsername": "parambirs"
- },
- {
- "name": "Sebastian Silbermann",
- "url": "https://github.com/eps1lon",
- "githubUsername": "eps1lon"
- },
- {
- "name": "Simon Schick",
- "url": "https://github.com/SimonSchick",
- "githubUsername": "SimonSchick"
- },
- {
- "name": "Thomas den Hollander",
- "url": "https://github.com/ThomasdenH",
- "githubUsername": "ThomasdenH"
- },
- {
- "name": "Wilco Bakker",
- "url": "https://github.com/WilcoBakker",
- "githubUsername": "WilcoBakker"
- },
- {
- "name": "wwwy3y3",
- "url": "https://github.com/wwwy3y3",
- "githubUsername": "wwwy3y3"
- },
- {
- "name": "Zane Hannan AU",
- "url": "https://github.com/ZaneHannanAU",
- "githubUsername": "ZaneHannanAU"
- },
- {
- "name": "Samuel Ainsworth",
- "url": "https://github.com/samuela",
- "githubUsername": "samuela"
- },
- {
- "name": "Kyle Uehlein",
- "url": "https://github.com/kuehlein",
- "githubUsername": "kuehlein"
- },
- {
- "name": "Jordi Oliveras Rovira",
- "url": "https://github.com/j-oliveras",
- "githubUsername": "j-oliveras"
- },
- {
- "name": "Thanik Bhongbhibhat",
- "url": "https://github.com/bhongy",
- "githubUsername": "bhongy"
- },
- {
- "name": "Marcin Kopacz",
- "url": "https://github.com/chyzwar",
- "githubUsername": "chyzwar"
- },
- {
- "name": "Trivikram Kamat",
- "url": "https://github.com/trivikr",
- "githubUsername": "trivikr"
- },
- {
- "name": "Minh Son Nguyen",
- "url": "https://github.com/nguymin4",
- "githubUsername": "nguymin4"
- },
- {
- "name": "Junxiao Shi",
- "url": "https://github.com/yoursunny",
- "githubUsername": "yoursunny"
- },
- {
- "name": "Ilia Baryshnikov",
- "url": "https://github.com/qwelias",
- "githubUsername": "qwelias"
- }
- ],
- "main": "",
- "types": "index.d.ts",
- "typesVersions": {
- ">=3.5.0-0": {
- "*": [
- "ts3.5/*"
- ]
- }
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
- "directory": "types/node"
- },
- "scripts": {},
- "dependencies": {},
- "typesPublisherContentHash": "b0cd8dccd6d2eca8bb1de5a05bebf13796984567eb809f63164972122c4ddbaf",
- "typeScriptVersion": "2.8"
-} \ No newline at end of file
diff --git a/assets/node_modules/@types/node/path.d.ts b/assets/node_modules/@types/node/path.d.ts
deleted file mode 100644
index 0273d58..0000000
--- a/assets/node_modules/@types/node/path.d.ts
+++ /dev/null
@@ -1,153 +0,0 @@
-declare module "path" {
- namespace path {
- /**
- * A parsed path object generated by path.parse() or consumed by path.format().
- */
- interface ParsedPath {
- /**
- * The root of the path such as '/' or 'c:\'
- */
- root: string;
- /**
- * The full directory path such as '/home/user/dir' or 'c:\path\dir'
- */
- dir: string;
- /**
- * The file name including extension (if any) such as 'index.html'
- */
- base: string;
- /**
- * The file extension (if any) such as '.html'
- */
- ext: string;
- /**
- * The file name without extension (if any) such as 'index'
- */
- name: string;
- }
-
- interface FormatInputPathObject {
- /**
- * The root of the path such as '/' or 'c:\'
- */
- root?: string;
- /**
- * The full directory path such as '/home/user/dir' or 'c:\path\dir'
- */
- dir?: string;
- /**
- * The file name including extension (if any) such as 'index.html'
- */
- base?: string;
- /**
- * The file extension (if any) such as '.html'
- */
- ext?: string;
- /**
- * The file name without extension (if any) such as 'index'
- */
- name?: string;
- }
-
- interface PlatformPath {
- /**
- * Normalize a string path, reducing '..' and '.' parts.
- * When multiple slashes are found, they're replaced by a single one; when the path contains a trailing slash, it is preserved. On Windows backslashes are used.
- *
- * @param p string path to normalize.
- */
- normalize(p: string): string;
- /**
- * Join all arguments together and normalize the resulting path.
- * Arguments must be strings. In v0.8, non-string arguments were silently ignored. In v0.10 and up, an exception is thrown.
- *
- * @param paths paths to join.
- */
- join(...paths: string[]): string;
- /**
- * The right-most parameter is considered {to}. Other parameters are considered an array of {from}.
- *
- * Starting from leftmost {from} parameter, resolves {to} to an absolute path.
- *
- * If {to} isn't already absolute, {from} arguments are prepended in right to left order,
- * until an absolute path is found. If after using all {from} paths still no absolute path is found,
- * the current working directory is used as well. The resulting path is normalized,
- * and trailing slashes are removed unless the path gets resolved to the root directory.
- *
- * @param pathSegments string paths to join. Non-string arguments are ignored.
- */
- resolve(...pathSegments: string[]): string;
- /**
- * Determines whether {path} is an absolute path. An absolute path will always resolve to the same location, regardless of the working directory.
- *
- * @param path path to test.
- */
- isAbsolute(p: string): boolean;
- /**
- * Solve the relative path from {from} to {to}.
- * At times we have two absolute paths, and we need to derive the relative path from one to the other. This is actually the reverse transform of path.resolve.
- */
- relative(from: string, to: string): string;
- /**
- * Return the directory name of a path. Similar to the Unix dirname command.
- *
- * @param p the path to evaluate.
- */
- dirname(p: string): string;
- /**
- * Return the last portion of a path. Similar to the Unix basename command.
- * Often used to extract the file name from a fully qualified path.
- *
- * @param p the path to evaluate.
- * @param ext optionally, an extension to remove from the result.
- */
- basename(p: string, ext?: string): string;
- /**
- * Return the extension of the path, from the last '.' to end of string in the last portion of the path.
- * If there is no '.' in the last portion of the path or the first character of it is '.', then it returns an empty string
- *
- * @param p the path to evaluate.
- */
- extname(p: string): string;
- /**
- * The platform-specific file separator. '\\' or '/'.
- */
- readonly sep: string;
- /**
- * The platform-specific file delimiter. ';' or ':'.
- */
- readonly delimiter: string;
- /**
- * Returns an object from a path string - the opposite of format().
- *
- * @param pathString path to evaluate.
- */
- parse(p: string): ParsedPath;
- /**
- * Returns a path string from an object - the opposite of parse().
- *
- * @param pathString path to evaluate.
- */
- format(pP: FormatInputPathObject): string;
- /**
- * On Windows systems only, returns an equivalent namespace-prefixed path for the given path.
- * If path is not a string, path will be returned without modifications.
- * This method is meaningful only on Windows system.
- * On POSIX systems, the method is non-operational and always returns path without modifications.
- */
- toNamespacedPath(path: string): string;
- /**
- * Posix specific pathing.
- * Same as parent object on posix.
- */
- readonly posix: PlatformPath;
- /**
- * Windows specific pathing.
- * Same as parent object on windows
- */
- readonly win32: PlatformPath;
- }
- }
- const path: path.PlatformPath;
- export = path;
-}
diff --git a/assets/node_modules/@types/node/perf_hooks.d.ts b/assets/node_modules/@types/node/perf_hooks.d.ts
deleted file mode 100644
index bf44d44..0000000
--- a/assets/node_modules/@types/node/perf_hooks.d.ts
+++ /dev/null
@@ -1,304 +0,0 @@
-declare module "perf_hooks" {
- import { AsyncResource } from "async_hooks";
-
- interface PerformanceEntry {
- /**
- * The total number of milliseconds elapsed for this entry.
- * This value will not be meaningful for all Performance Entry types.
- */
- readonly duration: number;
-
- /**
- * The name of the performance entry.
- */
- readonly name: string;
-
- /**
- * The high resolution millisecond timestamp marking the starting time of the Performance Entry.
- */
- readonly startTime: number;
-
- /**
- * The type of the performance entry.
- * Currently it may be one of: 'node', 'mark', 'measure', 'gc', or 'function'.
- */
- readonly entryType: string;
-
- /**
- * When performanceEntry.entryType is equal to 'gc', the performance.kind property identifies
- * the type of garbage collection operation that occurred.
- * The value may be one of perf_hooks.constants.
- */
- readonly kind?: number;
- }
-
- interface PerformanceNodeTiming extends PerformanceEntry {
- /**
- * The high resolution millisecond timestamp at which the Node.js process completed bootstrap.
- */
- readonly bootstrapComplete: number;
-
- /**
- * The high resolution millisecond timestamp at which cluster processing ended.
- */
- readonly clusterSetupEnd: number;
-
- /**
- * The high resolution millisecond timestamp at which cluster processing started.
- */
- readonly clusterSetupStart: number;
-
- /**
- * The high resolution millisecond timestamp at which the Node.js event loop exited.
- */
- readonly loopExit: number;
-
- /**
- * The high resolution millisecond timestamp at which the Node.js event loop started.
- */
- readonly loopStart: number;
-
- /**
- * The high resolution millisecond timestamp at which main module load ended.
- */
- readonly moduleLoadEnd: number;
-
- /**
- * The high resolution millisecond timestamp at which main module load started.
- */
- readonly moduleLoadStart: number;
-
- /**
- * The high resolution millisecond timestamp at which the Node.js process was initialized.
- */
- readonly nodeStart: number;
-
- /**
- * The high resolution millisecond timestamp at which preload module load ended.
- */
- readonly preloadModuleLoadEnd: number;
-
- /**
- * The high resolution millisecond timestamp at which preload module load started.
- */
- readonly preloadModuleLoadStart: number;
-
- /**
- * The high resolution millisecond timestamp at which third_party_main processing ended.
- */
- readonly thirdPartyMainEnd: number;
-
- /**
- * The high resolution millisecond timestamp at which third_party_main processing started.
- */
- readonly thirdPartyMainStart: number;
-
- /**
- * The high resolution millisecond timestamp at which the V8 platform was initialized.
- */
- readonly v8Start: number;
- }
-
- interface Performance {
- /**
- * If name is not provided, removes all PerformanceFunction objects from the Performance Timeline.
- * If name is provided, removes entries with name.
- * @param name
- */
- clearFunctions(name?: string): void;
-
- /**
- * If name is not provided, removes all PerformanceMark objects from the Performance Timeline.
- * If name is provided, removes only the named mark.
- * @param name
- */
- clearMarks(name?: string): void;
-
- /**
- * If name is not provided, removes all PerformanceMeasure objects from the Performance Timeline.
- * If name is provided, removes only objects whose performanceEntry.name matches name.
- */
- clearMeasures(name?: string): void;
-
- /**
- * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime.
- * @return list of all PerformanceEntry objects
- */
- getEntries(): PerformanceEntry[];
-
- /**
- * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime
- * whose performanceEntry.name is equal to name, and optionally, whose performanceEntry.entryType is equal to type.
- * @param name
- * @param type
- * @return list of all PerformanceEntry objects
- */
- getEntriesByName(name: string, type?: string): PerformanceEntry[];
-
- /**
- * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime
- * whose performanceEntry.entryType is equal to type.
- * @param type
- * @return list of all PerformanceEntry objects
- */
- getEntriesByType(type: string): PerformanceEntry[];
-
- /**
- * Creates a new PerformanceMark entry in the Performance Timeline.
- * A PerformanceMark is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'mark',
- * and whose performanceEntry.duration is always 0.
- * Performance marks are used to mark specific significant moments in the Performance Timeline.
- * @param name
- */
- mark(name?: string): void;
-
- /**
- * Creates a new PerformanceMeasure entry in the Performance Timeline.
- * A PerformanceMeasure is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'measure',
- * and whose performanceEntry.duration measures the number of milliseconds elapsed since startMark and endMark.
- *
- * The startMark argument may identify any existing PerformanceMark in the the Performance Timeline, or may identify
- * any of the timestamp properties provided by the PerformanceNodeTiming class. If the named startMark does not exist,
- * then startMark is set to timeOrigin by default.
- *
- * The endMark argument must identify any existing PerformanceMark in the the Performance Timeline or any of the timestamp
- * properties provided by the PerformanceNodeTiming class. If the named endMark does not exist, an error will be thrown.
- * @param name
- * @param startMark
- * @param endMark
- */
- measure(name: string, startMark: string, endMark: string): void;
-
- /**
- * An instance of the PerformanceNodeTiming class that provides performance metrics for specific Node.js operational milestones.
- */
- readonly nodeTiming: PerformanceNodeTiming;
-
- /**
- * @return the current high resolution millisecond timestamp
- */
- now(): number;
-
- /**
- * The timeOrigin specifies the high resolution millisecond timestamp from which all performance metric durations are measured.
- */
- readonly timeOrigin: number;
-
- /**
- * Wraps a function within a new function that measures the running time of the wrapped function.
- * A PerformanceObserver must be subscribed to the 'function' event type in order for the timing details to be accessed.
- * @param fn
- */
- timerify<T extends (...optionalParams: any[]) => any>(fn: T): T;
- }
-
- interface PerformanceObserverEntryList {
- /**
- * @return a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime.
- */
- getEntries(): PerformanceEntry[];
-
- /**
- * @return a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime
- * whose performanceEntry.name is equal to name, and optionally, whose performanceEntry.entryType is equal to type.
- */
- getEntriesByName(name: string, type?: string): PerformanceEntry[];
-
- /**
- * @return Returns a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime
- * whose performanceEntry.entryType is equal to type.
- */
- getEntriesByType(type: string): PerformanceEntry[];
- }
-
- type PerformanceObserverCallback = (list: PerformanceObserverEntryList, observer: PerformanceObserver) => void;
-
- class PerformanceObserver extends AsyncResource {
- constructor(callback: PerformanceObserverCallback);
-
- /**
- * Disconnects the PerformanceObserver instance from all notifications.
- */
- disconnect(): void;
-
- /**
- * Subscribes the PerformanceObserver instance to notifications of new PerformanceEntry instances identified by options.entryTypes.
- * When options.buffered is false, the callback will be invoked once for every PerformanceEntry instance.
- * Property buffered defaults to false.
- * @param options
- */
- observe(options: { entryTypes: string[], buffered?: boolean }): void;
- }
-
- namespace constants {
- const NODE_PERFORMANCE_GC_MAJOR: number;
- const NODE_PERFORMANCE_GC_MINOR: number;
- const NODE_PERFORMANCE_GC_INCREMENTAL: number;
- const NODE_PERFORMANCE_GC_WEAKCB: number;
- }
-
- const performance: Performance;
-
- interface EventLoopMonitorOptions {
- /**
- * The sampling rate in milliseconds.
- * Must be greater than zero.
- * @default 10
- */
- resolution?: number;
- }
-
- interface EventLoopDelayMonitor {
- /**
- * Enables the event loop delay sample timer. Returns `true` if the timer was started, `false` if it was already started.
- */
- enable(): boolean;
- /**
- * Disables the event loop delay sample timer. Returns `true` if the timer was stopped, `false` if it was already stopped.
- */
- disable(): boolean;
-
- /**
- * Resets the collected histogram data.
- */
- reset(): void;
-
- /**
- * Returns the value at the given percentile.
- * @param percentile A percentile value between 1 and 100.
- */
- percentile(percentile: number): number;
-
- /**
- * A `Map` object detailing the accumulated percentile distribution.
- */
- readonly percentiles: Map<number, number>;
-
- /**
- * The number of times the event loop delay exceeded the maximum 1 hour eventloop delay threshold.
- */
- readonly exceeds: number;
-
- /**
- * The minimum recorded event loop delay.
- */
- readonly min: number;
-
- /**
- * The maximum recorded event loop delay.
- */
- readonly max: number;
-
- /**
- * The mean of the recorded event loop delays.
- */
- readonly mean: number;
-
- /**
- * The standard deviation of the recorded event loop delays.
- */
- readonly stddev: number;
- }
-
- function monitorEventLoopDelay(options?: EventLoopMonitorOptions): EventLoopDelayMonitor;
-}
diff --git a/assets/node_modules/@types/node/process.d.ts b/assets/node_modules/@types/node/process.d.ts
deleted file mode 100644
index d007d4e..0000000
--- a/assets/node_modules/@types/node/process.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-declare module "process" {
- import * as tty from "tty";
-
- global {
- namespace NodeJS {
- // this namespace merge is here because these are specifically used
- // as the type for process.stdin, process.stdout, and process.stderr.
- // they can't live in tty.d.ts because we need to disambiguate the imported name.
- interface ReadStream extends tty.ReadStream {}
- interface WriteStream extends tty.WriteStream {}
- }
- }
-
- export = process;
-}
diff --git a/assets/node_modules/@types/node/punycode.d.ts b/assets/node_modules/@types/node/punycode.d.ts
deleted file mode 100644
index 75d2811..0000000
--- a/assets/node_modules/@types/node/punycode.d.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-declare module "punycode" {
- function decode(string: string): string;
- function encode(string: string): string;
- function toUnicode(domain: string): string;
- function toASCII(domain: string): string;
- const ucs2: ucs2;
- interface ucs2 {
- decode(string: string): number[];
- encode(codePoints: number[]): string;
- }
- const version: string;
-}
diff --git a/assets/node_modules/@types/node/querystring.d.ts b/assets/node_modules/@types/node/querystring.d.ts
deleted file mode 100644
index 0fd6fee..0000000
--- a/assets/node_modules/@types/node/querystring.d.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-declare module "querystring" {
- interface StringifyOptions {
- encodeURIComponent?: (str: string) => string;
- }
-
- interface ParseOptions {
- maxKeys?: number;
- decodeURIComponent?: (str: string) => string;
- }
-
- interface ParsedUrlQuery { [key: string]: string | string[]; }
-
- interface ParsedUrlQueryInput {
- [key: string]: string | number | boolean | string[] | number[] | boolean[] | undefined | null;
- }
-
- function stringify(obj?: ParsedUrlQueryInput, sep?: string, eq?: string, options?: StringifyOptions): string;
- function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): ParsedUrlQuery;
- /**
- * The querystring.encode() function is an alias for querystring.stringify().
- */
- const encode: typeof stringify;
- /**
- * The querystring.decode() function is an alias for querystring.parse().
- */
- const decode: typeof parse;
- function escape(str: string): string;
- function unescape(str: string): string;
-}
diff --git a/assets/node_modules/@types/node/readline.d.ts b/assets/node_modules/@types/node/readline.d.ts
deleted file mode 100644
index caa4857..0000000
--- a/assets/node_modules/@types/node/readline.d.ts
+++ /dev/null
@@ -1,170 +0,0 @@
-declare module "readline" {
- import * as events from "events";
- import * as stream from "stream";
-
- interface Key {
- sequence?: string;
- name?: string;
- ctrl?: boolean;
- meta?: boolean;
- shift?: boolean;
- }
-
- class Interface extends events.EventEmitter {
- readonly terminal: boolean;
-
- // Need direct access to line/cursor data, for use in external processes
- // see: https://github.com/nodejs/node/issues/30347
- /** The current input data */
- readonly line: string;
- /** The current cursor position in the input line */
- readonly cursor: number;
-
- /**
- * NOTE: According to the documentation:
- *
- * > Instances of the `readline.Interface` class are constructed using the
- * > `readline.createInterface()` method.
- *
- * @see https://nodejs.org/dist/latest-v10.x/docs/api/readline.html#readline_class_interface
- */
- protected constructor(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean);
- /**
- * NOTE: According to the documentation:
- *
- * > Instances of the `readline.Interface` class are constructed using the
- * > `readline.createInterface()` method.
- *
- * @see https://nodejs.org/dist/latest-v10.x/docs/api/readline.html#readline_class_interface
- */
- protected constructor(options: ReadLineOptions);
-
- setPrompt(prompt: string): void;
- prompt(preserveCursor?: boolean): void;
- question(query: string, callback: (answer: string) => void): void;
- pause(): this;
- resume(): this;
- close(): void;
- write(data: string | Buffer, key?: Key): void;
-
- /**
- * Returns the real position of the cursor in relation to the input
- * prompt + string. Long input (wrapping) strings, as well as multiple
- * line prompts are included in the calculations.
- */
- getCursorPos(): CursorPos;
-
- /**
- * events.EventEmitter
- * 1. close
- * 2. line
- * 3. pause
- * 4. resume
- * 5. SIGCONT
- * 6. SIGINT
- * 7. SIGTSTP
- */
-
- addListener(event: string, listener: (...args: any[]) => void): this;
- addListener(event: "close", listener: () => void): this;
- addListener(event: "line", listener: (input: string) => void): this;
- addListener(event: "pause", listener: () => void): this;
- addListener(event: "resume", listener: () => void): this;
- addListener(event: "SIGCONT", listener: () => void): this;
- addListener(event: "SIGINT", listener: () => void): this;
- addListener(event: "SIGTSTP", listener: () => void): this;
-
- emit(event: string | symbol, ...args: any[]): boolean;
- emit(event: "close"): boolean;
- emit(event: "line", input: string): boolean;
- emit(event: "pause"): boolean;
- emit(event: "resume"): boolean;
- emit(event: "SIGCONT"): boolean;
- emit(event: "SIGINT"): boolean;
- emit(event: "SIGTSTP"): boolean;
-
- on(event: string, listener: (...args: any[]) => void): this;
- on(event: "close", listener: () => void): this;
- on(event: "line", listener: (input: string) => void): this;
- on(event: "pause", listener: () => void): this;
- on(event: "resume", listener: () => void): this;
- on(event: "SIGCONT", listener: () => void): this;
- on(event: "SIGINT", listener: () => void): this;
- on(event: "SIGTSTP", listener: () => void): this;
-
- once(event: string, listener: (...args: any[]) => void): this;
- once(event: "close", listener: () => void): this;
- once(event: "line", listener: (input: string) => void): this;
- once(event: "pause", listener: () => void): this;
- once(event: "resume", listener: () => void): this;
- once(event: "SIGCONT", listener: () => void): this;
- once(event: "SIGINT", listener: () => void): this;
- once(event: "SIGTSTP", listener: () => void): this;
-
- prependListener(event: string, listener: (...args: any[]) => void): this;
- prependListener(event: "close", listener: () => void): this;
- prependListener(event: "line", listener: (input: string) => void): this;
- prependListener(event: "pause", listener: () => void): this;
- prependListener(event: "resume", listener: () => void): this;
- prependListener(event: "SIGCONT", listener: () => void): this;
- prependListener(event: "SIGINT", listener: () => void): this;
- prependListener(event: "SIGTSTP", listener: () => void): this;
-
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
- prependOnceListener(event: "close", listener: () => void): this;
- prependOnceListener(event: "line", listener: (input: string) => void): this;
- prependOnceListener(event: "pause", listener: () => void): this;
- prependOnceListener(event: "resume", listener: () => void): this;
- prependOnceListener(event: "SIGCONT", listener: () => void): this;
- prependOnceListener(event: "SIGINT", listener: () => void): this;
- prependOnceListener(event: "SIGTSTP", listener: () => void): this;
- [Symbol.asyncIterator](): AsyncIterableIterator<string>;
- }
-
- type ReadLine = Interface; // type forwarded for backwards compatiblity
-
- type Completer = (line: string) => CompleterResult;
- type AsyncCompleter = (line: string, callback: (err?: null | Error, result?: CompleterResult) => void) => any;
-
- type CompleterResult = [string[], string];
-
- interface ReadLineOptions {
- input: NodeJS.ReadableStream;
- output?: NodeJS.WritableStream;
- completer?: Completer | AsyncCompleter;
- terminal?: boolean;
- historySize?: number;
- prompt?: string;
- crlfDelay?: number;
- removeHistoryDuplicates?: boolean;
- escapeCodeTimeout?: number;
- }
-
- function createInterface(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean): Interface;
- function createInterface(options: ReadLineOptions): Interface;
- function emitKeypressEvents(stream: NodeJS.ReadableStream, readlineInterface?: Interface): void;
-
- type Direction = -1 | 0 | 1;
-
- interface CursorPos {
- rows: number;
- cols: number;
- }
-
- /**
- * Clears the current line of this WriteStream in a direction identified by `dir`.
- */
- function clearLine(stream: NodeJS.WritableStream, dir: Direction, callback?: () => void): boolean;
- /**
- * Clears this `WriteStream` from the current cursor down.
- */
- function clearScreenDown(stream: NodeJS.WritableStream, callback?: () => void): boolean;
- /**
- * Moves this WriteStream's cursor to the specified position.
- */
- function cursorTo(stream: NodeJS.WritableStream, x: number, y?: number, callback?: () => void): boolean;
- /**
- * Moves this WriteStream's cursor relative to its current position.
- */
- function moveCursor(stream: NodeJS.WritableStream, dx: number, dy: number, callback?: () => void): boolean;
-}
diff --git a/assets/node_modules/@types/node/repl.d.ts b/assets/node_modules/@types/node/repl.d.ts
deleted file mode 100644
index 5e321d2..0000000
--- a/assets/node_modules/@types/node/repl.d.ts
+++ /dev/null
@@ -1,387 +0,0 @@
-declare module "repl" {
- import { Interface, Completer, AsyncCompleter } from "readline";
- import { Context } from "vm";
- import { InspectOptions } from "util";
-
- interface ReplOptions {
- /**
- * The input prompt to display.
- * Default: `"> "`
- */
- prompt?: string;
- /**
- * The `Readable` stream from which REPL input will be read.
- * Default: `process.stdin`
- */
- input?: NodeJS.ReadableStream;
- /**
- * The `Writable` stream to which REPL output will be written.
- * Default: `process.stdout`
- */
- output?: NodeJS.WritableStream;
- /**
- * If `true`, specifies that the output should be treated as a TTY terminal, and have
- * ANSI/VT100 escape codes written to it.
- * Default: checking the value of the `isTTY` property on the output stream upon
- * instantiation.
- */
- terminal?: boolean;
- /**
- * The function to be used when evaluating each given line of input.
- * Default: an async wrapper for the JavaScript `eval()` function. An `eval` function can
- * error with `repl.Recoverable` to indicate the input was incomplete and prompt for
- * additional lines.
- *
- * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_default_evaluation
- * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_custom_evaluation_functions
- */
- eval?: REPLEval;
- /**
- * Defines if the repl prints output previews or not.
- * @default `true` Always `false` in case `terminal` is falsy.
- */
- preview?: boolean;
- /**
- * If `true`, specifies that the default `writer` function should include ANSI color
- * styling to REPL output. If a custom `writer` function is provided then this has no
- * effect.
- * Default: the REPL instance's `terminal` value.
- */
- useColors?: boolean;
- /**
- * If `true`, specifies that the default evaluation function will use the JavaScript
- * `global` as the context as opposed to creating a new separate context for the REPL
- * instance. The node CLI REPL sets this value to `true`.
- * Default: `false`.
- */
- useGlobal?: boolean;
- /**
- * If `true`, specifies that the default writer will not output the return value of a
- * command if it evaluates to `undefined`.
- * Default: `false`.
- */
- ignoreUndefined?: boolean;
- /**
- * The function to invoke to format the output of each command before writing to `output`.
- * Default: a wrapper for `util.inspect`.
- *
- * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_customizing_repl_output
- */
- writer?: REPLWriter;
- /**
- * An optional function used for custom Tab auto completion.
- *
- * @see https://nodejs.org/dist/latest-v11.x/docs/api/readline.html#readline_use_of_the_completer_function
- */
- completer?: Completer | AsyncCompleter;
- /**
- * A flag that specifies whether the default evaluator executes all JavaScript commands in
- * strict mode or default (sloppy) mode.
- * Accepted values are:
- * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode.
- * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to
- * prefacing every repl statement with `'use strict'`.
- */
- replMode?: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT;
- /**
- * Stop evaluating the current piece of code when `SIGINT` is received, i.e. `Ctrl+C` is
- * pressed. This cannot be used together with a custom `eval` function.
- * Default: `false`.
- */
- breakEvalOnSigint?: boolean;
- }
-
- type REPLEval = (this: REPLServer, evalCmd: string, context: Context, file: string, cb: (err: Error | null, result: any) => void) => void;
- type REPLWriter = (this: REPLServer, obj: any) => string;
-
- /**
- * This is the default "writer" value, if none is passed in the REPL options,
- * and it can be overridden by custom print functions.
- */
- const writer: REPLWriter & { options: InspectOptions };
-
- type REPLCommandAction = (this: REPLServer, text: string) => void;
-
- interface REPLCommand {
- /**
- * Help text to be displayed when `.help` is entered.
- */
- help?: string;
- /**
- * The function to execute, optionally accepting a single string argument.
- */
- action: REPLCommandAction;
- }
-
- /**
- * Provides a customizable Read-Eval-Print-Loop (REPL).
- *
- * Instances of `repl.REPLServer` will accept individual lines of user input, evaluate those
- * according to a user-defined evaluation function, then output the result. Input and output
- * may be from `stdin` and `stdout`, respectively, or may be connected to any Node.js `stream`.
- *
- * Instances of `repl.REPLServer` support automatic completion of inputs, simplistic Emacs-style
- * line editing, multi-line inputs, ANSI-styled output, saving and restoring current REPL session
- * state, error recovery, and customizable evaluation functions.
- *
- * Instances of `repl.REPLServer` are created using the `repl.start()` method and _should not_
- * be created directly using the JavaScript `new` keyword.
- *
- * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_repl
- */
- class REPLServer extends Interface {
- /**
- * The `vm.Context` provided to the `eval` function to be used for JavaScript
- * evaluation.
- */
- readonly context: Context;
- /**
- * The `Readable` stream from which REPL input will be read.
- */
- readonly inputStream: NodeJS.ReadableStream;
- /**
- * The `Writable` stream to which REPL output will be written.
- */
- readonly outputStream: NodeJS.WritableStream;
- /**
- * The commands registered via `replServer.defineCommand()`.
- */
- readonly commands: { readonly [name: string]: REPLCommand | undefined };
- /**
- * A value indicating whether the REPL is currently in "editor mode".
- *
- * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_commands_and_special_keys
- */
- readonly editorMode: boolean;
- /**
- * A value indicating whether the `_` variable has been assigned.
- *
- * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable
- */
- readonly underscoreAssigned: boolean;
- /**
- * The last evaluation result from the REPL (assigned to the `_` variable inside of the REPL).
- *
- * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable
- */
- readonly last: any;
- /**
- * A value indicating whether the `_error` variable has been assigned.
- *
- * @since v9.8.0
- * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable
- */
- readonly underscoreErrAssigned: boolean;
- /**
- * The last error raised inside the REPL (assigned to the `_error` variable inside of the REPL).
- *
- * @since v9.8.0
- * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable
- */
- readonly lastError: any;
- /**
- * Specified in the REPL options, this is the function to be used when evaluating each
- * given line of input. If not specified in the REPL options, this is an async wrapper
- * for the JavaScript `eval()` function.
- */
- readonly eval: REPLEval;
- /**
- * Specified in the REPL options, this is a value indicating whether the default
- * `writer` function should include ANSI color styling to REPL output.
- */
- readonly useColors: boolean;
- /**
- * Specified in the REPL options, this is a value indicating whether the default `eval`
- * function will use the JavaScript `global` as the context as opposed to creating a new
- * separate context for the REPL instance.
- */
- readonly useGlobal: boolean;
- /**
- * Specified in the REPL options, this is a value indicating whether the default `writer`
- * function should output the result of a command if it evaluates to `undefined`.
- */
- readonly ignoreUndefined: boolean;
- /**
- * Specified in the REPL options, this is the function to invoke to format the output of
- * each command before writing to `outputStream`. If not specified in the REPL options,
- * this will be a wrapper for `util.inspect`.
- */
- readonly writer: REPLWriter;
- /**
- * Specified in the REPL options, this is the function to use for custom Tab auto-completion.
- */
- readonly completer: Completer | AsyncCompleter;
- /**
- * Specified in the REPL options, this is a flag that specifies whether the default `eval`
- * function should execute all JavaScript commands in strict mode or default (sloppy) mode.
- * Possible values are:
- * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode.
- * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to
- * prefacing every repl statement with `'use strict'`.
- */
- readonly replMode: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT;
-
- /**
- * NOTE: According to the documentation:
- *
- * > Instances of `repl.REPLServer` are created using the `repl.start()` method and
- * > _should not_ be created directly using the JavaScript `new` keyword.
- *
- * `REPLServer` cannot be subclassed due to implementation specifics in NodeJS.
- *
- * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_class_replserver
- */
- private constructor();
-
- /**
- * Used to add new `.`-prefixed commands to the REPL instance. Such commands are invoked
- * by typing a `.` followed by the `keyword`.
- *
- * @param keyword The command keyword (_without_ a leading `.` character).
- * @param cmd The function to invoke when the command is processed.
- *
- * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_replserver_definecommand_keyword_cmd
- */
- defineCommand(keyword: string, cmd: REPLCommandAction | REPLCommand): void;
- /**
- * Readies the REPL instance for input from the user, printing the configured `prompt` to a
- * new line in the `output` and resuming the `input` to accept new input.
- *
- * When multi-line input is being entered, an ellipsis is printed rather than the 'prompt'.
- *
- * This method is primarily intended to be called from within the action function for
- * commands registered using the `replServer.defineCommand()` method.
- *
- * @param preserveCursor When `true`, the cursor placement will not be reset to `0`.
- */
- displayPrompt(preserveCursor?: boolean): void;
- /**
- * Clears any command that has been buffered but not yet executed.
- *
- * This method is primarily intended to be called from within the action function for
- * commands registered using the `replServer.defineCommand()` method.
- *
- * @since v9.0.0
- */
- clearBufferedCommand(): void;
-
- /**
- * Initializes a history log file for the REPL instance. When executing the
- * Node.js binary and using the command line REPL, a history file is initialized
- * by default. However, this is not the case when creating a REPL
- * programmatically. Use this method to initialize a history log file when working
- * with REPL instances programmatically.
- * @param path The path to the history file
- */
- setupHistory(path: string, cb: (err: Error | null, repl: this) => void): void;
-
- /**
- * events.EventEmitter
- * 1. close - inherited from `readline.Interface`
- * 2. line - inherited from `readline.Interface`
- * 3. pause - inherited from `readline.Interface`
- * 4. resume - inherited from `readline.Interface`
- * 5. SIGCONT - inherited from `readline.Interface`
- * 6. SIGINT - inherited from `readline.Interface`
- * 7. SIGTSTP - inherited from `readline.Interface`
- * 8. exit
- * 9. reset
- */
-
- addListener(event: string, listener: (...args: any[]) => void): this;
- addListener(event: "close", listener: () => void): this;
- addListener(event: "line", listener: (input: string) => void): this;
- addListener(event: "pause", listener: () => void): this;
- addListener(event: "resume", listener: () => void): this;
- addListener(event: "SIGCONT", listener: () => void): this;
- addListener(event: "SIGINT", listener: () => void): this;
- addListener(event: "SIGTSTP", listener: () => void): this;
- addListener(event: "exit", listener: () => void): this;
- addListener(event: "reset", listener: (context: Context) => void): this;
-
- emit(event: string | symbol, ...args: any[]): boolean;
- emit(event: "close"): boolean;
- emit(event: "line", input: string): boolean;
- emit(event: "pause"): boolean;
- emit(event: "resume"): boolean;
- emit(event: "SIGCONT"): boolean;
- emit(event: "SIGINT"): boolean;
- emit(event: "SIGTSTP"): boolean;
- emit(event: "exit"): boolean;
- emit(event: "reset", context: Context): boolean;
-
- on(event: string, listener: (...args: any[]) => void): this;
- on(event: "close", listener: () => void): this;
- on(event: "line", listener: (input: string) => void): this;
- on(event: "pause", listener: () => void): this;
- on(event: "resume", listener: () => void): this;
- on(event: "SIGCONT", listener: () => void): this;
- on(event: "SIGINT", listener: () => void): this;
- on(event: "SIGTSTP", listener: () => void): this;
- on(event: "exit", listener: () => void): this;
- on(event: "reset", listener: (context: Context) => void): this;
-
- once(event: string, listener: (...args: any[]) => void): this;
- once(event: "close", listener: () => void): this;
- once(event: "line", listener: (input: string) => void): this;
- once(event: "pause", listener: () => void): this;
- once(event: "resume", listener: () => void): this;
- once(event: "SIGCONT", listener: () => void): this;
- once(event: "SIGINT", listener: () => void): this;
- once(event: "SIGTSTP", listener: () => void): this;
- once(event: "exit", listener: () => void): this;
- once(event: "reset", listener: (context: Context) => void): this;
-
- prependListener(event: string, listener: (...args: any[]) => void): this;
- prependListener(event: "close", listener: () => void): this;
- prependListener(event: "line", listener: (input: string) => void): this;
- prependListener(event: "pause", listener: () => void): this;
- prependListener(event: "resume", listener: () => void): this;
- prependListener(event: "SIGCONT", listener: () => void): this;
- prependListener(event: "SIGINT", listener: () => void): this;
- prependListener(event: "SIGTSTP", listener: () => void): this;
- prependListener(event: "exit", listener: () => void): this;
- prependListener(event: "reset", listener: (context: Context) => void): this;
-
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
- prependOnceListener(event: "close", listener: () => void): this;
- prependOnceListener(event: "line", listener: (input: string) => void): this;
- prependOnceListener(event: "pause", listener: () => void): this;
- prependOnceListener(event: "resume", listener: () => void): this;
- prependOnceListener(event: "SIGCONT", listener: () => void): this;
- prependOnceListener(event: "SIGINT", listener: () => void): this;
- prependOnceListener(event: "SIGTSTP", listener: () => void): this;
- prependOnceListener(event: "exit", listener: () => void): this;
- prependOnceListener(event: "reset", listener: (context: Context) => void): this;
- }
-
- /**
- * A flag passed in the REPL options. Evaluates expressions in sloppy mode.
- */
- const REPL_MODE_SLOPPY: unique symbol;
-
- /**
- * A flag passed in the REPL options. Evaluates expressions in strict mode.
- * This is equivalent to prefacing every repl statement with `'use strict'`.
- */
- const REPL_MODE_STRICT: unique symbol;
-
- /**
- * Creates and starts a `repl.REPLServer` instance.
- *
- * @param options The options for the `REPLServer`. If `options` is a string, then it specifies
- * the input prompt.
- */
- function start(options?: string | ReplOptions): REPLServer;
-
- /**
- * Indicates a recoverable error that a `REPLServer` can use to support multi-line input.
- *
- * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_recoverable_errors
- */
- class Recoverable extends SyntaxError {
- err: Error;
-
- constructor(err: Error);
- }
-}
diff --git a/assets/node_modules/@types/node/stream.d.ts b/assets/node_modules/@types/node/stream.d.ts
deleted file mode 100644
index 7e6f11b..0000000
--- a/assets/node_modules/@types/node/stream.d.ts
+++ /dev/null
@@ -1,332 +0,0 @@
-declare module "stream" {
- import * as events from "events";
-
- class internal extends events.EventEmitter {
- pipe<T extends NodeJS.WritableStream>(destination: T, options?: { end?: boolean; }): T;
- }
-
- namespace internal {
- class Stream extends internal {
- constructor(opts?: ReadableOptions);
- }
-
- interface ReadableOptions {
- highWaterMark?: number;
- encoding?: string;
- objectMode?: boolean;
- read?(this: Readable, size: number): void;
- destroy?(this: Readable, error: Error | null, callback: (error: Error | null) => void): void;
- autoDestroy?: boolean;
- }
-
- class Readable extends Stream implements NodeJS.ReadableStream {
- /**
- * A utility method for creating Readable Streams out of iterators.
- */
- static from(iterable: Iterable<any> | AsyncIterable<any>, options?: ReadableOptions): Readable;
-
- readable: boolean;
- readonly readableHighWaterMark: number;
- readonly readableLength: number;
- readonly readableObjectMode: boolean;
- destroyed: boolean;
- constructor(opts?: ReadableOptions);
- _read(size: number): void;
- read(size?: number): any;
- setEncoding(encoding: string): this;
- pause(): this;
- resume(): this;
- isPaused(): boolean;
- unpipe(destination?: NodeJS.WritableStream): this;
- unshift(chunk: any, encoding?: BufferEncoding): void;
- wrap(oldStream: NodeJS.ReadableStream): this;
- push(chunk: any, encoding?: string): boolean;
- _destroy(error: Error | null, callback: (error?: Error | null) => void): void;
- destroy(error?: Error): void;
-
- /**
- * Event emitter
- * The defined events on documents including:
- * 1. close
- * 2. data
- * 3. end
- * 4. readable
- * 5. error
- */
- addListener(event: "close", listener: () => void): this;
- addListener(event: "data", listener: (chunk: any) => void): this;
- addListener(event: "end", listener: () => void): this;
- addListener(event: "readable", listener: () => void): this;
- addListener(event: "error", listener: (err: Error) => void): this;
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- emit(event: "close"): boolean;
- emit(event: "data", chunk: any): boolean;
- emit(event: "end"): boolean;
- emit(event: "readable"): boolean;
- emit(event: "error", err: Error): boolean;
- emit(event: string | symbol, ...args: any[]): boolean;
-
- on(event: "close", listener: () => void): this;
- on(event: "data", listener: (chunk: any) => void): this;
- on(event: "end", listener: () => void): this;
- on(event: "readable", listener: () => void): this;
- on(event: "error", listener: (err: Error) => void): this;
- on(event: string | symbol, listener: (...args: any[]) => void): this;
-
- once(event: "close", listener: () => void): this;
- once(event: "data", listener: (chunk: any) => void): this;
- once(event: "end", listener: () => void): this;
- once(event: "readable", listener: () => void): this;
- once(event: "error", listener: (err: Error) => void): this;
- once(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependListener(event: "close", listener: () => void): this;
- prependListener(event: "data", listener: (chunk: any) => void): this;
- prependListener(event: "end", listener: () => void): this;
- prependListener(event: "readable", listener: () => void): this;
- prependListener(event: "error", listener: (err: Error) => void): this;
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependOnceListener(event: "close", listener: () => void): this;
- prependOnceListener(event: "data", listener: (chunk: any) => void): this;
- prependOnceListener(event: "end", listener: () => void): this;
- prependOnceListener(event: "readable", listener: () => void): this;
- prependOnceListener(event: "error", listener: (err: Error) => void): this;
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- removeListener(event: "close", listener: () => void): this;
- removeListener(event: "data", listener: (chunk: any) => void): this;
- removeListener(event: "end", listener: () => void): this;
- removeListener(event: "readable", listener: () => void): this;
- removeListener(event: "error", listener: (err: Error) => void): this;
- removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- [Symbol.asyncIterator](): AsyncIterableIterator<any>;
- }
-
- interface WritableOptions {
- highWaterMark?: number;
- decodeStrings?: boolean;
- defaultEncoding?: string;
- objectMode?: boolean;
- emitClose?: boolean;
- write?(this: Writable, chunk: any, encoding: string, callback: (error?: Error | null) => void): void;
- writev?(this: Writable, chunks: Array<{ chunk: any, encoding: string }>, callback: (error?: Error | null) => void): void;
- destroy?(this: Writable, error: Error | null, callback: (error: Error | null) => void): void;
- final?(this: Writable, callback: (error?: Error | null) => void): void;
- autoDestroy?: boolean;
- }
-
- class Writable extends Stream implements NodeJS.WritableStream {
- readonly writable: boolean;
- readonly writableEnded: boolean;
- readonly writableFinished: boolean;
- readonly writableHighWaterMark: number;
- readonly writableLength: number;
- readonly writableObjectMode: boolean;
- readonly writableCorked: number;
- destroyed: boolean;
- constructor(opts?: WritableOptions);
- _write(chunk: any, encoding: string, callback: (error?: Error | null) => void): void;
- _writev?(chunks: Array<{ chunk: any, encoding: string }>, callback: (error?: Error | null) => void): void;
- _destroy(error: Error | null, callback: (error?: Error | null) => void): void;
- _final(callback: (error?: Error | null) => void): void;
- write(chunk: any, cb?: (error: Error | null | undefined) => void): boolean;
- write(chunk: any, encoding: string, cb?: (error: Error | null | undefined) => void): boolean;
- setDefaultEncoding(encoding: string): this;
- end(cb?: () => void): void;
- end(chunk: any, cb?: () => void): void;
- end(chunk: any, encoding: string, cb?: () => void): void;
- cork(): void;
- uncork(): void;
- destroy(error?: Error): void;
-
- /**
- * Event emitter
- * The defined events on documents including:
- * 1. close
- * 2. drain
- * 3. error
- * 4. finish
- * 5. pipe
- * 6. unpipe
- */
- addListener(event: "close", listener: () => void): this;
- addListener(event: "drain", listener: () => void): this;
- addListener(event: "error", listener: (err: Error) => void): this;
- addListener(event: "finish", listener: () => void): this;
- addListener(event: "pipe", listener: (src: Readable) => void): this;
- addListener(event: "unpipe", listener: (src: Readable) => void): this;
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- emit(event: "close"): boolean;
- emit(event: "drain"): boolean;
- emit(event: "error", err: Error): boolean;
- emit(event: "finish"): boolean;
- emit(event: "pipe", src: Readable): boolean;
- emit(event: "unpipe", src: Readable): boolean;
- emit(event: string | symbol, ...args: any[]): boolean;
-
- on(event: "close", listener: () => void): this;
- on(event: "drain", listener: () => void): this;
- on(event: "error", listener: (err: Error) => void): this;
- on(event: "finish", listener: () => void): this;
- on(event: "pipe", listener: (src: Readable) => void): this;
- on(event: "unpipe", listener: (src: Readable) => void): this;
- on(event: string | symbol, listener: (...args: any[]) => void): this;
-
- once(event: "close", listener: () => void): this;
- once(event: "drain", listener: () => void): this;
- once(event: "error", listener: (err: Error) => void): this;
- once(event: "finish", listener: () => void): this;
- once(event: "pipe", listener: (src: Readable) => void): this;
- once(event: "unpipe", listener: (src: Readable) => void): this;
- once(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependListener(event: "close", listener: () => void): this;
- prependListener(event: "drain", listener: () => void): this;
- prependListener(event: "error", listener: (err: Error) => void): this;
- prependListener(event: "finish", listener: () => void): this;
- prependListener(event: "pipe", listener: (src: Readable) => void): this;
- prependListener(event: "unpipe", listener: (src: Readable) => void): this;
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependOnceListener(event: "close", listener: () => void): this;
- prependOnceListener(event: "drain", listener: () => void): this;
- prependOnceListener(event: "error", listener: (err: Error) => void): this;
- prependOnceListener(event: "finish", listener: () => void): this;
- prependOnceListener(event: "pipe", listener: (src: Readable) => void): this;
- prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this;
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- removeListener(event: "close", listener: () => void): this;
- removeListener(event: "drain", listener: () => void): this;
- removeListener(event: "error", listener: (err: Error) => void): this;
- removeListener(event: "finish", listener: () => void): this;
- removeListener(event: "pipe", listener: (src: Readable) => void): this;
- removeListener(event: "unpipe", listener: (src: Readable) => void): this;
- removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
- }
-
- interface DuplexOptions extends ReadableOptions, WritableOptions {
- allowHalfOpen?: boolean;
- readableObjectMode?: boolean;
- writableObjectMode?: boolean;
- readableHighWaterMark?: number;
- writableHighWaterMark?: number;
- writableCorked?: number;
- read?(this: Duplex, size: number): void;
- write?(this: Duplex, chunk: any, encoding: string, callback: (error?: Error | null) => void): void;
- writev?(this: Duplex, chunks: Array<{ chunk: any, encoding: string }>, callback: (error?: Error | null) => void): void;
- final?(this: Duplex, callback: (error?: Error | null) => void): void;
- destroy?(this: Duplex, error: Error | null, callback: (error: Error | null) => void): void;
- }
-
- // Note: Duplex extends both Readable and Writable.
- class Duplex extends Readable implements Writable {
- readonly writable: boolean;
- readonly writableEnded: boolean;
- readonly writableFinished: boolean;
- readonly writableHighWaterMark: number;
- readonly writableLength: number;
- readonly writableObjectMode: boolean;
- readonly writableCorked: number;
- constructor(opts?: DuplexOptions);
- _write(chunk: any, encoding: string, callback: (error?: Error | null) => void): void;
- _writev?(chunks: Array<{ chunk: any, encoding: string }>, callback: (error?: Error | null) => void): void;
- _destroy(error: Error | null, callback: (error: Error | null) => void): void;
- _final(callback: (error?: Error | null) => void): void;
- write(chunk: any, encoding?: string, cb?: (error: Error | null | undefined) => void): boolean;
- write(chunk: any, cb?: (error: Error | null | undefined) => void): boolean;
- setDefaultEncoding(encoding: string): this;
- end(cb?: () => void): void;
- end(chunk: any, cb?: () => void): void;
- end(chunk: any, encoding?: string, cb?: () => void): void;
- cork(): void;
- uncork(): void;
- }
-
- type TransformCallback = (error?: Error | null, data?: any) => void;
-
- interface TransformOptions extends DuplexOptions {
- read?(this: Transform, size: number): void;
- write?(this: Transform, chunk: any, encoding: string, callback: (error?: Error | null) => void): void;
- writev?(this: Transform, chunks: Array<{ chunk: any, encoding: string }>, callback: (error?: Error | null) => void): void;
- final?(this: Transform, callback: (error?: Error | null) => void): void;
- destroy?(this: Transform, error: Error | null, callback: (error: Error | null) => void): void;
- transform?(this: Transform, chunk: any, encoding: string, callback: TransformCallback): void;
- flush?(this: Transform, callback: TransformCallback): void;
- }
-
- class Transform extends Duplex {
- constructor(opts?: TransformOptions);
- _transform(chunk: any, encoding: string, callback: TransformCallback): void;
- _flush(callback: TransformCallback): void;
- }
-
- class PassThrough extends Transform { }
-
- interface FinishedOptions {
- error?: boolean;
- readable?: boolean;
- writable?: boolean;
- }
- function finished(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, options: FinishedOptions, callback: (err?: NodeJS.ErrnoException | null) => void): () => void;
- function finished(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, callback: (err?: NodeJS.ErrnoException | null) => void): () => void;
- namespace finished {
- function __promisify__(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, options?: FinishedOptions): Promise<void>;
- }
-
- function pipeline<T extends NodeJS.WritableStream>(stream1: NodeJS.ReadableStream, stream2: T, callback?: (err: NodeJS.ErrnoException | null) => void): T;
- function pipeline<T extends NodeJS.WritableStream>(stream1: NodeJS.ReadableStream, stream2: NodeJS.ReadWriteStream, stream3: T, callback?: (err: NodeJS.ErrnoException | null) => void): T;
- function pipeline<T extends NodeJS.WritableStream>(
- stream1: NodeJS.ReadableStream,
- stream2: NodeJS.ReadWriteStream,
- stream3: NodeJS.ReadWriteStream,
- stream4: T,
- callback?: (err: NodeJS.ErrnoException | null) => void,
- ): T;
- function pipeline<T extends NodeJS.WritableStream>(
- stream1: NodeJS.ReadableStream,
- stream2: NodeJS.ReadWriteStream,
- stream3: NodeJS.ReadWriteStream,
- stream4: NodeJS.ReadWriteStream,
- stream5: T,
- callback?: (err: NodeJS.ErrnoException | null) => void,
- ): T;
- function pipeline(streams: Array<NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream>, callback?: (err: NodeJS.ErrnoException | null) => void): NodeJS.WritableStream;
- function pipeline(
- stream1: NodeJS.ReadableStream,
- stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream,
- ...streams: Array<NodeJS.ReadWriteStream | NodeJS.WritableStream | ((err: NodeJS.ErrnoException | null) => void)>,
- ): NodeJS.WritableStream;
- namespace pipeline {
- function __promisify__(stream1: NodeJS.ReadableStream, stream2: NodeJS.WritableStream): Promise<void>;
- function __promisify__(stream1: NodeJS.ReadableStream, stream2: NodeJS.ReadWriteStream, stream3: NodeJS.WritableStream): Promise<void>;
- function __promisify__(stream1: NodeJS.ReadableStream, stream2: NodeJS.ReadWriteStream, stream3: NodeJS.ReadWriteStream, stream4: NodeJS.WritableStream): Promise<void>;
- function __promisify__(
- stream1: NodeJS.ReadableStream,
- stream2: NodeJS.ReadWriteStream,
- stream3: NodeJS.ReadWriteStream,
- stream4: NodeJS.ReadWriteStream,
- stream5: NodeJS.WritableStream,
- ): Promise<void>;
- function __promisify__(streams: Array<NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream>): Promise<void>;
- function __promisify__(
- stream1: NodeJS.ReadableStream,
- stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream,
- ...streams: Array<NodeJS.ReadWriteStream | NodeJS.WritableStream>,
- ): Promise<void>;
- }
-
- interface Pipe {
- close(): void;
- hasRef(): boolean;
- ref(): void;
- unref(): void;
- }
- }
-
- export = internal;
-}
diff --git a/assets/node_modules/@types/node/string_decoder.d.ts b/assets/node_modules/@types/node/string_decoder.d.ts
deleted file mode 100644
index fe0e0b4..0000000
--- a/assets/node_modules/@types/node/string_decoder.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-declare module "string_decoder" {
- class StringDecoder {
- constructor(encoding?: string);
- write(buffer: Buffer): string;
- end(buffer?: Buffer): string;
- }
-}
diff --git a/assets/node_modules/@types/node/timers.d.ts b/assets/node_modules/@types/node/timers.d.ts
deleted file mode 100644
index e64a673..0000000
--- a/assets/node_modules/@types/node/timers.d.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-declare module "timers" {
- function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout;
- namespace setTimeout {
- function __promisify__(ms: number): Promise<void>;
- function __promisify__<T>(ms: number, value: T): Promise<T>;
- }
- function clearTimeout(timeoutId: NodeJS.Timeout): void;
- function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout;
- function clearInterval(intervalId: NodeJS.Timeout): void;
- function setImmediate(callback: (...args: any[]) => void, ...args: any[]): NodeJS.Immediate;
- namespace setImmediate {
- function __promisify__(): Promise<void>;
- function __promisify__<T>(value: T): Promise<T>;
- }
- function clearImmediate(immediateId: NodeJS.Immediate): void;
-}
diff --git a/assets/node_modules/@types/node/tls.d.ts b/assets/node_modules/@types/node/tls.d.ts
deleted file mode 100644
index a1a03b5..0000000
--- a/assets/node_modules/@types/node/tls.d.ts
+++ /dev/null
@@ -1,759 +0,0 @@
-declare module "tls" {
- import * as crypto from "crypto";
- import * as dns from "dns";
- import * as net from "net";
- import * as stream from "stream";
-
- const CLIENT_RENEG_LIMIT: number;
- const CLIENT_RENEG_WINDOW: number;
-
- interface Certificate {
- /**
- * Country code.
- */
- C: string;
- /**
- * Street.
- */
- ST: string;
- /**
- * Locality.
- */
- L: string;
- /**
- * Organization.
- */
- O: string;
- /**
- * Organizational unit.
- */
- OU: string;
- /**
- * Common name.
- */
- CN: string;
- }
-
- interface PeerCertificate {
- subject: Certificate;
- issuer: Certificate;
- subjectaltname: string;
- infoAccess: { [index: string]: string[] | undefined };
- modulus: string;
- exponent: string;
- valid_from: string;
- valid_to: string;
- fingerprint: string;
- ext_key_usage: string[];
- serialNumber: string;
- raw: Buffer;
- }
-
- interface DetailedPeerCertificate extends PeerCertificate {
- issuerCertificate: DetailedPeerCertificate;
- }
-
- interface CipherNameAndProtocol {
- /**
- * The cipher name.
- */
- name: string;
- /**
- * SSL/TLS protocol version.
- */
- version: string;
-
- /**
- * IETF name for the cipher suite.
- */
- standardName: string;
- }
-
- interface EphemeralKeyInfo {
- /**
- * The supported types are 'DH' and 'ECDH'.
- */
- type: string;
- /**
- * The name property is available only when type is 'ECDH'.
- */
- name?: string;
- /**
- * The size of parameter of an ephemeral key exchange.
- */
- size: number;
- }
-
- interface KeyObject {
- /**
- * Private keys in PEM format.
- */
- pem: string | Buffer;
- /**
- * Optional passphrase.
- */
- passphrase?: string;
- }
-
- interface PxfObject {
- /**
- * PFX or PKCS12 encoded private key and certificate chain.
- */
- buf: string | Buffer;
- /**
- * Optional passphrase.
- */
- passphrase?: string;
- }
-
- interface TLSSocketOptions extends SecureContextOptions, CommonConnectionOptions {
- /**
- * If true the TLS socket will be instantiated in server-mode.
- * Defaults to false.
- */
- isServer?: boolean;
- /**
- * An optional net.Server instance.
- */
- server?: net.Server;
-
- /**
- * An optional Buffer instance containing a TLS session.
- */
- session?: Buffer;
- /**
- * If true, specifies that the OCSP status request extension will be
- * added to the client hello and an 'OCSPResponse' event will be
- * emitted on the socket before establishing a secure communication
- */
- requestOCSP?: boolean;
- }
-
- class TLSSocket extends net.Socket {
- /**
- * Construct a new tls.TLSSocket object from an existing TCP socket.
- */
- constructor(socket: net.Socket, options?: TLSSocketOptions);
-
- /**
- * A boolean that is true if the peer certificate was signed by one of the specified CAs, otherwise false.
- */
- authorized: boolean;
- /**
- * The reason why the peer's certificate has not been verified.
- * This property becomes available only when tlsSocket.authorized === false.
- */
- authorizationError: Error;
- /**
- * Static boolean value, always true.
- * May be used to distinguish TLS sockets from regular ones.
- */
- encrypted: boolean;
-
- /**
- * String containing the selected ALPN protocol.
- * When ALPN has no selected protocol, tlsSocket.alpnProtocol equals false.
- */
- alpnProtocol?: string;
-
- /**
- * Returns an object representing the local certificate. The returned
- * object has some properties corresponding to the fields of the
- * certificate.
- *
- * See tls.TLSSocket.getPeerCertificate() for an example of the
- * certificate structure.
- *
- * If there is no local certificate, an empty object will be returned.
- * If the socket has been destroyed, null will be returned.
- */
- getCertificate(): PeerCertificate | object | null;
- /**
- * Returns an object representing the cipher name and the SSL/TLS protocol version of the current connection.
- * @returns Returns an object representing the cipher name
- * and the SSL/TLS protocol version of the current connection.
- */
- getCipher(): CipherNameAndProtocol;
- /**
- * Returns an object representing the type, name, and size of parameter
- * of an ephemeral key exchange in Perfect Forward Secrecy on a client
- * connection. It returns an empty object when the key exchange is not
- * ephemeral. As this is only supported on a client socket; null is
- * returned if called on a server socket. The supported types are 'DH'
- * and 'ECDH'. The name property is available only when type is 'ECDH'.
- *
- * For example: { type: 'ECDH', name: 'prime256v1', size: 256 }.
- */
- getEphemeralKeyInfo(): EphemeralKeyInfo | object | null;
- /**
- * Returns the latest Finished message that has
- * been sent to the socket as part of a SSL/TLS handshake, or undefined
- * if no Finished message has been sent yet.
- *
- * As the Finished messages are message digests of the complete
- * handshake (with a total of 192 bits for TLS 1.0 and more for SSL
- * 3.0), they can be used for external authentication procedures when
- * the authentication provided by SSL/TLS is not desired or is not
- * enough.
- *
- * Corresponds to the SSL_get_finished routine in OpenSSL and may be
- * used to implement the tls-unique channel binding from RFC 5929.
- */
- getFinished(): Buffer | undefined;
- /**
- * Returns an object representing the peer's certificate.
- * The returned object has some properties corresponding to the field of the certificate.
- * If detailed argument is true the full chain with issuer property will be returned,
- * if false only the top certificate without issuer property.
- * If the peer does not provide a certificate, it returns null or an empty object.
- * @param detailed - If true; the full chain with issuer property will be returned.
- * @returns An object representing the peer's certificate.
- */
- getPeerCertificate(detailed: true): DetailedPeerCertificate;
- getPeerCertificate(detailed?: false): PeerCertificate;
- getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate;
- /**
- * Returns the latest Finished message that is expected or has actually
- * been received from the socket as part of a SSL/TLS handshake, or
- * undefined if there is no Finished message so far.
- *
- * As the Finished messages are message digests of the complete
- * handshake (with a total of 192 bits for TLS 1.0 and more for SSL
- * 3.0), they can be used for external authentication procedures when
- * the authentication provided by SSL/TLS is not desired or is not
- * enough.
- *
- * Corresponds to the SSL_get_peer_finished routine in OpenSSL and may
- * be used to implement the tls-unique channel binding from RFC 5929.
- */
- getPeerFinished(): Buffer | undefined;
- /**
- * Returns a string containing the negotiated SSL/TLS protocol version of the current connection.
- * The value `'unknown'` will be returned for connected sockets that have not completed the handshaking process.
- * The value `null` will be returned for server sockets or disconnected client sockets.
- * See https://www.openssl.org/docs/man1.0.2/ssl/SSL_get_version.html for more information.
- * @returns negotiated SSL/TLS protocol version of the current connection
- */
- getProtocol(): string | null;
- /**
- * Could be used to speed up handshake establishment when reconnecting to the server.
- * @returns ASN.1 encoded TLS session or undefined if none was negotiated.
- */
- getSession(): Buffer | undefined;
- /**
- * Returns a list of signature algorithms shared between the server and
- * the client in the order of decreasing preference.
- */
- getSharedSigalgs(): string[];
- /**
- * NOTE: Works only with client TLS sockets.
- * Useful only for debugging, for session reuse provide session option to tls.connect().
- * @returns TLS session ticket or undefined if none was negotiated.
- */
- getTLSTicket(): Buffer | undefined;
- /**
- * Returns true if the session was reused, false otherwise.
- */
- isSessionReused(): boolean;
- /**
- * Initiate TLS renegotiation process.
- *
- * NOTE: Can be used to request peer's certificate after the secure connection has been established.
- * ANOTHER NOTE: When running as the server, socket will be destroyed with an error after handshakeTimeout timeout.
- * @param options - The options may contain the following fields: rejectUnauthorized,
- * requestCert (See tls.createServer() for details).
- * @param callback - callback(err) will be executed with null as err, once the renegotiation
- * is successfully completed.
- * @return `undefined` when socket is destroy, `false` if negotiaion can't be initiated.
- */
- renegotiate(options: { rejectUnauthorized?: boolean, requestCert?: boolean }, callback: (err: Error | null) => void): undefined | boolean;
- /**
- * Set maximum TLS fragment size (default and maximum value is: 16384, minimum is: 512).
- * Smaller fragment size decreases buffering latency on the client: large fragments are buffered by
- * the TLS layer until the entire fragment is received and its integrity is verified;
- * large fragments can span multiple roundtrips, and their processing can be delayed due to packet
- * loss or reordering. However, smaller fragments add extra TLS framing bytes and CPU overhead,
- * which may decrease overall server throughput.
- * @param size - TLS fragment size (default and maximum value is: 16384, minimum is: 512).
- * @returns Returns true on success, false otherwise.
- */
- setMaxSendFragment(size: number): boolean;
-
- /**
- * Disables TLS renegotiation for this TLSSocket instance. Once called,
- * attempts to renegotiate will trigger an 'error' event on the
- * TLSSocket.
- */
- disableRenegotiation(): void;
-
- /**
- * When enabled, TLS packet trace information is written to `stderr`. This can be
- * used to debug TLS connection problems.
- *
- * Note: The format of the output is identical to the output of `openssl s_client
- * -trace` or `openssl s_server -trace`. While it is produced by OpenSSL's
- * `SSL_trace()` function, the format is undocumented, can change without notice,
- * and should not be relied on.
- */
- enableTrace(): void;
-
- addListener(event: string, listener: (...args: any[]) => void): this;
- addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this;
- addListener(event: "secureConnect", listener: () => void): this;
- addListener(event: "session", listener: (session: Buffer) => void): this;
- addListener(event: "keylog", listener: (line: Buffer) => void): this;
-
- emit(event: string | symbol, ...args: any[]): boolean;
- emit(event: "OCSPResponse", response: Buffer): boolean;
- emit(event: "secureConnect"): boolean;
- emit(event: "session", session: Buffer): boolean;
- emit(event: "keylog", line: Buffer): boolean;
-
- on(event: string, listener: (...args: any[]) => void): this;
- on(event: "OCSPResponse", listener: (response: Buffer) => void): this;
- on(event: "secureConnect", listener: () => void): this;
- on(event: "session", listener: (session: Buffer) => void): this;
- on(event: "keylog", listener: (line: Buffer) => void): this;
-
- once(event: string, listener: (...args: any[]) => void): this;
- once(event: "OCSPResponse", listener: (response: Buffer) => void): this;
- once(event: "secureConnect", listener: () => void): this;
- once(event: "session", listener: (session: Buffer) => void): this;
- once(event: "keylog", listener: (line: Buffer) => void): this;
-
- prependListener(event: string, listener: (...args: any[]) => void): this;
- prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this;
- prependListener(event: "secureConnect", listener: () => void): this;
- prependListener(event: "session", listener: (session: Buffer) => void): this;
- prependListener(event: "keylog", listener: (line: Buffer) => void): this;
-
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
- prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this;
- prependOnceListener(event: "secureConnect", listener: () => void): this;
- prependOnceListener(event: "session", listener: (session: Buffer) => void): this;
- prependOnceListener(event: "keylog", listener: (line: Buffer) => void): this;
- }
-
- interface CommonConnectionOptions {
- /**
- * An optional TLS context object from tls.createSecureContext()
- */
- secureContext?: SecureContext;
-
- /**
- * When enabled, TLS packet trace information is written to `stderr`. This can be
- * used to debug TLS connection problems.
- * @default false
- */
- enableTrace?: boolean;
- /**
- * If true the server will request a certificate from clients that
- * connect and attempt to verify that certificate. Defaults to
- * false.
- */
- requestCert?: boolean;
- /**
- * An array of strings or a Buffer naming possible ALPN protocols.
- * (Protocols should be ordered by their priority.)
- */
- ALPNProtocols?: string[] | Uint8Array[] | Uint8Array;
- /**
- * SNICallback(servername, cb) <Function> A function that will be
- * called if the client supports SNI TLS extension. Two arguments
- * will be passed when called: servername and cb. SNICallback should
- * invoke cb(null, ctx), where ctx is a SecureContext instance.
- * (tls.createSecureContext(...) can be used to get a proper
- * SecureContext.) If SNICallback wasn't provided the default callback
- * with high-level API will be used (see below).
- */
- SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void;
- /**
- * If true the server will reject any connection which is not
- * authorized with the list of supplied CAs. This option only has an
- * effect if requestCert is true.
- * @default true
- */
- rejectUnauthorized?: boolean;
- }
-
- interface TlsOptions extends SecureContextOptions, CommonConnectionOptions {
- /**
- * Abort the connection if the SSL/TLS handshake does not finish in the
- * specified number of milliseconds. A 'tlsClientError' is emitted on
- * the tls.Server object whenever a handshake times out. Default:
- * 120000 (120 seconds).
- */
- handshakeTimeout?: number;
- /**
- * The number of seconds after which a TLS session created by the
- * server will no longer be resumable. See Session Resumption for more
- * information. Default: 300.
- */
- sessionTimeout?: number;
- /**
- * 48-bytes of cryptographically strong pseudo-random data.
- */
- ticketKeys?: Buffer;
-
- /**
- *
- * @param socket
- * @param identity identity parameter sent from the client.
- * @return pre-shared key that must either be
- * a buffer or `null` to stop the negotiation process. Returned PSK must be
- * compatible with the selected cipher's digest.
- *
- * When negotiating TLS-PSK (pre-shared keys), this function is called
- * with the identity provided by the client.
- * If the return value is `null` the negotiation process will stop and an
- * "unknown_psk_identity" alert message will be sent to the other party.
- * If the server wishes to hide the fact that the PSK identity was not known,
- * the callback must provide some random data as `psk` to make the connection
- * fail with "decrypt_error" before negotiation is finished.
- * PSK ciphers are disabled by default, and using TLS-PSK thus
- * requires explicitly specifying a cipher suite with the `ciphers` option.
- * More information can be found in the RFC 4279.
- */
-
- pskCallback?(socket: TLSSocket, identity: string): DataView | NodeJS.TypedArray | null;
- /**
- * hint to send to a client to help
- * with selecting the identity during TLS-PSK negotiation. Will be ignored
- * in TLS 1.3. Upon failing to set pskIdentityHint `tlsClientError` will be
- * emitted with `ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED` code.
- */
- pskIdentityHint?: string;
- }
-
- interface PSKCallbackNegotation {
- psk: DataView | NodeJS.TypedArray;
- identitty: string;
- }
-
- interface ConnectionOptions extends SecureContextOptions, CommonConnectionOptions {
- host?: string;
- port?: number;
- path?: string; // Creates unix socket connection to path. If this option is specified, `host` and `port` are ignored.
- socket?: net.Socket; // Establish secure connection on a given socket rather than creating a new socket
- checkServerIdentity?: typeof checkServerIdentity;
- servername?: string; // SNI TLS Extension
- session?: Buffer;
- minDHSize?: number;
- lookup?: net.LookupFunction;
- timeout?: number;
- /**
- * When negotiating TLS-PSK (pre-shared keys), this function is called
- * with optional identity `hint` provided by the server or `null`
- * in case of TLS 1.3 where `hint` was removed.
- * It will be necessary to provide a custom `tls.checkServerIdentity()`
- * for the connection as the default one will try to check hostname/IP
- * of the server against the certificate but that's not applicable for PSK
- * because there won't be a certificate present.
- * More information can be found in the RFC 4279.
- *
- * @param hint message sent from the server to help client
- * decide which identity to use during negotiation.
- * Always `null` if TLS 1.3 is used.
- * @returns Return `null` to stop the negotiation process. `psk` must be
- * compatible with the selected cipher's digest.
- * `identity` must use UTF-8 encoding.
- */
- pskCallback?(hint: string | null): PSKCallbackNegotation | null;
- }
-
- class Server extends net.Server {
- /**
- * The server.addContext() method adds a secure context that will be
- * used if the client request's SNI name matches the supplied hostname
- * (or wildcard).
- */
- addContext(hostName: string, credentials: SecureContextOptions): void;
- /**
- * Returns the session ticket keys.
- */
- getTicketKeys(): Buffer;
- /**
- *
- * The server.setSecureContext() method replaces the
- * secure context of an existing server. Existing connections to the
- * server are not interrupted.
- */
- setSecureContext(details: SecureContextOptions): void;
- /**
- * The server.setSecureContext() method replaces the secure context of
- * an existing server. Existing connections to the server are not
- * interrupted.
- */
- setTicketKeys(keys: Buffer): void;
-
- /**
- * events.EventEmitter
- * 1. tlsClientError
- * 2. newSession
- * 3. OCSPRequest
- * 4. resumeSession
- * 5. secureConnection
- * 6. keylog
- */
- addListener(event: string, listener: (...args: any[]) => void): this;
- addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;
- addListener(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void): this;
- addListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void) => void): this;
- addListener(event: "resumeSession", listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void): this;
- addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;
- addListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this;
-
- emit(event: string | symbol, ...args: any[]): boolean;
- emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean;
- emit(event: "newSession", sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void): boolean;
- emit(event: "OCSPRequest", certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void): boolean;
- emit(event: "resumeSession", sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void): boolean;
- emit(event: "secureConnection", tlsSocket: TLSSocket): boolean;
- emit(event: "keylog", line: Buffer, tlsSocket: TLSSocket): boolean;
-
- on(event: string, listener: (...args: any[]) => void): this;
- on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;
- on(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void): this;
- on(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void) => void): this;
- on(event: "resumeSession", listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void): this;
- on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;
- on(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this;
-
- once(event: string, listener: (...args: any[]) => void): this;
- once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;
- once(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void): this;
- once(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void) => void): this;
- once(event: "resumeSession", listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void): this;
- once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;
- once(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this;
-
- prependListener(event: string, listener: (...args: any[]) => void): this;
- prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;
- prependListener(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void): this;
- prependListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void) => void): this;
- prependListener(event: "resumeSession", listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void): this;
- prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;
- prependListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this;
-
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
- prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;
- prependOnceListener(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void): this;
- prependOnceListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void) => void): this;
- prependOnceListener(event: "resumeSession", listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void): this;
- prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;
- prependOnceListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this;
- }
-
- interface SecurePair {
- encrypted: TLSSocket;
- cleartext: TLSSocket;
- }
-
- type SecureVersion = 'TLSv1.3' | 'TLSv1.2' | 'TLSv1.1' | 'TLSv1';
-
- interface SecureContextOptions {
- /**
- * Optionally override the trusted CA certificates. Default is to trust
- * the well-known CAs curated by Mozilla. Mozilla's CAs are completely
- * replaced when CAs are explicitly specified using this option.
- */
- ca?: string | Buffer | Array<string | Buffer>;
- /**
- * Cert chains in PEM format. One cert chain should be provided per
- * private key. Each cert chain should consist of the PEM formatted
- * certificate for a provided private key, followed by the PEM
- * formatted intermediate certificates (if any), in order, and not
- * including the root CA (the root CA must be pre-known to the peer,
- * see ca). When providing multiple cert chains, they do not have to
- * be in the same order as their private keys in key. If the
- * intermediate certificates are not provided, the peer will not be
- * able to validate the certificate, and the handshake will fail.
- */
- cert?: string | Buffer | Array<string | Buffer>;
- /**
- * Colon-separated list of supported signature algorithms. The list
- * can contain digest algorithms (SHA256, MD5 etc.), public key
- * algorithms (RSA-PSS, ECDSA etc.), combination of both (e.g
- * 'RSA+SHA384') or TLS v1.3 scheme names (e.g. rsa_pss_pss_sha512).
- */
- sigalgs?: string;
- /**
- * Cipher suite specification, replacing the default. For more
- * information, see modifying the default cipher suite. Permitted
- * ciphers can be obtained via tls.getCiphers(). Cipher names must be
- * uppercased in order for OpenSSL to accept them.
- */
- ciphers?: string;
- /**
- * Name of an OpenSSL engine which can provide the client certificate.
- */
- clientCertEngine?: string;
- /**
- * PEM formatted CRLs (Certificate Revocation Lists).
- */
- crl?: string | Buffer | Array<string | Buffer>;
- /**
- * Diffie Hellman parameters, required for Perfect Forward Secrecy. Use
- * openssl dhparam to create the parameters. The key length must be
- * greater than or equal to 1024 bits or else an error will be thrown.
- * Although 1024 bits is permissible, use 2048 bits or larger for
- * stronger security. If omitted or invalid, the parameters are
- * silently discarded and DHE ciphers will not be available.
- */
- dhparam?: string | Buffer;
- /**
- * A string describing a named curve or a colon separated list of curve
- * NIDs or names, for example P-521:P-384:P-256, to use for ECDH key
- * agreement. Set to auto to select the curve automatically. Use
- * crypto.getCurves() to obtain a list of available curve names. On
- * recent releases, openssl ecparam -list_curves will also display the
- * name and description of each available elliptic curve. Default:
- * tls.DEFAULT_ECDH_CURVE.
- */
- ecdhCurve?: string;
- /**
- * Attempt to use the server's cipher suite preferences instead of the
- * client's. When true, causes SSL_OP_CIPHER_SERVER_PREFERENCE to be
- * set in secureOptions
- */
- honorCipherOrder?: boolean;
- /**
- * Private keys in PEM format. PEM allows the option of private keys
- * being encrypted. Encrypted keys will be decrypted with
- * options.passphrase. Multiple keys using different algorithms can be
- * provided either as an array of unencrypted key strings or buffers,
- * or an array of objects in the form {pem: <string|buffer>[,
- * passphrase: <string>]}. The object form can only occur in an array.
- * object.passphrase is optional. Encrypted keys will be decrypted with
- * object.passphrase if provided, or options.passphrase if it is not.
- */
- key?: string | Buffer | Array<Buffer | KeyObject>;
- /**
- * Name of an OpenSSL engine to get private key from. Should be used
- * together with privateKeyIdentifier.
- */
- privateKeyEngine?: string;
- /**
- * Identifier of a private key managed by an OpenSSL engine. Should be
- * used together with privateKeyEngine. Should not be set together with
- * key, because both options define a private key in different ways.
- */
- privateKeyIdentifier?: string;
- /**
- * Optionally set the maximum TLS version to allow. One
- * of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the
- * `secureProtocol` option, use one or the other.
- * **Default:** `'TLSv1.3'`, unless changed using CLI options. Using
- * `--tls-max-v1.2` sets the default to `'TLSv1.2'`. Using `--tls-max-v1.3` sets the default to
- * `'TLSv1.3'`. If multiple of the options are provided, the highest maximum is used.
- */
- maxVersion?: SecureVersion;
- /**
- * Optionally set the minimum TLS version to allow. One
- * of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the
- * `secureProtocol` option, use one or the other. It is not recommended to use
- * less than TLSv1.2, but it may be required for interoperability.
- * **Default:** `'TLSv1.2'`, unless changed using CLI options. Using
- * `--tls-v1.0` sets the default to `'TLSv1'`. Using `--tls-v1.1` sets the default to
- * `'TLSv1.1'`. Using `--tls-min-v1.3` sets the default to
- * 'TLSv1.3'. If multiple of the options are provided, the lowest minimum is used.
- */
- minVersion?: SecureVersion;
- /**
- * Shared passphrase used for a single private key and/or a PFX.
- */
- passphrase?: string;
- /**
- * PFX or PKCS12 encoded private key and certificate chain. pfx is an
- * alternative to providing key and cert individually. PFX is usually
- * encrypted, if it is, passphrase will be used to decrypt it. Multiple
- * PFX can be provided either as an array of unencrypted PFX buffers,
- * or an array of objects in the form {buf: <string|buffer>[,
- * passphrase: <string>]}. The object form can only occur in an array.
- * object.passphrase is optional. Encrypted PFX will be decrypted with
- * object.passphrase if provided, or options.passphrase if it is not.
- */
- pfx?: string | Buffer | Array<string | Buffer | PxfObject>;
- /**
- * Optionally affect the OpenSSL protocol behavior, which is not
- * usually necessary. This should be used carefully if at all! Value is
- * a numeric bitmask of the SSL_OP_* options from OpenSSL Options
- */
- secureOptions?: number; // Value is a numeric bitmask of the `SSL_OP_*` options
- /**
- * Legacy mechanism to select the TLS protocol version to use, it does
- * not support independent control of the minimum and maximum version,
- * and does not support limiting the protocol to TLSv1.3. Use
- * minVersion and maxVersion instead. The possible values are listed as
- * SSL_METHODS, use the function names as strings. For example, use
- * 'TLSv1_1_method' to force TLS version 1.1, or 'TLS_method' to allow
- * any TLS protocol version up to TLSv1.3. It is not recommended to use
- * TLS versions less than 1.2, but it may be required for
- * interoperability. Default: none, see minVersion.
- */
- secureProtocol?: string;
- /**
- * Opaque identifier used by servers to ensure session state is not
- * shared between applications. Unused by clients.
- */
- sessionIdContext?: string;
- }
-
- interface SecureContext {
- context: any;
- }
-
- /*
- * Verifies the certificate `cert` is issued to host `host`.
- * @host The hostname to verify the certificate against
- * @cert PeerCertificate representing the peer's certificate
- *
- * Returns Error object, populating it with the reason, host and cert on failure. On success, returns undefined.
- */
- function checkServerIdentity(host: string, cert: PeerCertificate): Error | undefined;
- function createServer(secureConnectionListener?: (socket: TLSSocket) => void): Server;
- function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server;
- function connect(options: ConnectionOptions, secureConnectListener?: () => void): TLSSocket;
- function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket;
- function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket;
- /**
- * @deprecated
- */
- function createSecurePair(credentials?: SecureContext, isServer?: boolean, requestCert?: boolean, rejectUnauthorized?: boolean): SecurePair;
- function createSecureContext(details: SecureContextOptions): SecureContext;
- function getCiphers(): string[];
-
- /**
- * The default curve name to use for ECDH key agreement in a tls server.
- * The default value is 'auto'. See tls.createSecureContext() for further
- * information.
- */
- let DEFAULT_ECDH_CURVE: string;
- /**
- * The default value of the maxVersion option of
- * tls.createSecureContext(). It can be assigned any of the supported TLS
- * protocol versions, 'TLSv1.3', 'TLSv1.2', 'TLSv1.1', or 'TLSv1'. Default:
- * 'TLSv1.3', unless changed using CLI options. Using --tls-max-v1.2 sets
- * the default to 'TLSv1.2'. Using --tls-max-v1.3 sets the default to
- * 'TLSv1.3'. If multiple of the options are provided, the highest maximum
- * is used.
- */
- let DEFAULT_MAX_VERSION: SecureVersion;
- /**
- * The default value of the minVersion option of tls.createSecureContext().
- * It can be assigned any of the supported TLS protocol versions,
- * 'TLSv1.3', 'TLSv1.2', 'TLSv1.1', or 'TLSv1'. Default: 'TLSv1.2', unless
- * changed using CLI options. Using --tls-min-v1.0 sets the default to
- * 'TLSv1'. Using --tls-min-v1.1 sets the default to 'TLSv1.1'. Using
- * --tls-min-v1.3 sets the default to 'TLSv1.3'. If multiple of the options
- * are provided, the lowest minimum is used.
- */
- let DEFAULT_MIN_VERSION: SecureVersion;
-
- /**
- * An immutable array of strings representing the root certificates (in PEM
- * format) used for verifying peer certificates. This is the default value
- * of the ca option to tls.createSecureContext().
- */
- const rootCertificates: ReadonlyArray<string>;
-}
diff --git a/assets/node_modules/@types/node/trace_events.d.ts b/assets/node_modules/@types/node/trace_events.d.ts
deleted file mode 100644
index 1f3a89c..0000000
--- a/assets/node_modules/@types/node/trace_events.d.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-declare module "trace_events" {
- /**
- * The `Tracing` object is used to enable or disable tracing for sets of
- * categories. Instances are created using the
- * `trace_events.createTracing()` method.
- *
- * When created, the `Tracing` object is disabled. Calling the
- * `tracing.enable()` method adds the categories to the set of enabled trace
- * event categories. Calling `tracing.disable()` will remove the categories
- * from the set of enabled trace event categories.
- */
- interface Tracing {
- /**
- * A comma-separated list of the trace event categories covered by this
- * `Tracing` object.
- */
- readonly categories: string;
-
- /**
- * Disables this `Tracing` object.
- *
- * Only trace event categories _not_ covered by other enabled `Tracing`
- * objects and _not_ specified by the `--trace-event-categories` flag
- * will be disabled.
- */
- disable(): void;
-
- /**
- * Enables this `Tracing` object for the set of categories covered by
- * the `Tracing` object.
- */
- enable(): void;
-
- /**
- * `true` only if the `Tracing` object has been enabled.
- */
- readonly enabled: boolean;
- }
-
- interface CreateTracingOptions {
- /**
- * An array of trace category names. Values included in the array are
- * coerced to a string when possible. An error will be thrown if the
- * value cannot be coerced.
- */
- categories: string[];
- }
-
- /**
- * Creates and returns a Tracing object for the given set of categories.
- */
- function createTracing(options: CreateTracingOptions): Tracing;
-
- /**
- * Returns a comma-separated list of all currently-enabled trace event
- * categories. The current set of enabled trace event categories is
- * determined by the union of all currently-enabled `Tracing` objects and
- * any categories enabled using the `--trace-event-categories` flag.
- */
- function getEnabledCategories(): string | undefined;
-}
diff --git a/assets/node_modules/@types/node/ts3.5/fs.d.ts b/assets/node_modules/@types/node/ts3.5/fs.d.ts
deleted file mode 100644
index 0a9eae0..0000000
--- a/assets/node_modules/@types/node/ts3.5/fs.d.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-// tslint:disable-next-line:no-bad-reference
-/// <reference path="../fs.d.ts" />
-
-declare module 'fs' {
- interface BigIntStats extends StatsBase<BigInt> {
- }
-
- class BigIntStats {
- atimeNs: BigInt;
- mtimeNs: BigInt;
- ctimeNs: BigInt;
- birthtimeNs: BigInt;
- }
-
- interface BigIntOptions {
- bigint: true;
- }
-
- interface StatOptions {
- bigint: boolean;
- }
-
- function stat(path: PathLike, options: BigIntOptions, callback: (err: NodeJS.ErrnoException | null, stats: BigIntStats) => void): void;
- function stat(path: PathLike, options: StatOptions, callback: (err: NodeJS.ErrnoException | null, stats: Stats | BigIntStats) => void): void;
-
- namespace stat {
- function __promisify__(path: PathLike, options: BigIntOptions): Promise<BigIntStats>;
- function __promisify__(path: PathLike, options: StatOptions): Promise<Stats | BigIntStats>;
- }
-
- function statSync(path: PathLike, options: BigIntOptions): BigIntStats;
- function statSync(path: PathLike, options: StatOptions): Stats | BigIntStats;
-}
diff --git a/assets/node_modules/@types/node/ts3.5/globals.d.ts b/assets/node_modules/@types/node/ts3.5/globals.d.ts
deleted file mode 100644
index 70892bc..0000000
--- a/assets/node_modules/@types/node/ts3.5/globals.d.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-// tslint:disable-next-line:no-bad-reference
-/// <reference path="../globals.d.ts" />
-
-declare namespace NodeJS {
- interface HRTime {
- bigint(): bigint;
- }
-}
-
-interface Buffer extends Uint8Array {
- readBigUInt64BE(offset?: number): bigint;
- readBigUInt64LE(offset?: number): bigint;
- readBigInt64BE(offset?: number): bigint;
- readBigInt64LE(offset?: number): bigint;
- writeBigInt64BE(value: bigint, offset?: number): number;
- writeBigInt64LE(value: bigint, offset?: number): number;
- writeBigUInt64BE(value: bigint, offset?: number): number;
- writeBigUInt64LE(value: bigint, offset?: number): number;
-}
diff --git a/assets/node_modules/@types/node/ts3.5/index.d.ts b/assets/node_modules/@types/node/ts3.5/index.d.ts
deleted file mode 100644
index 6a31db6..0000000
--- a/assets/node_modules/@types/node/ts3.5/index.d.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-// NOTE: These definitions support NodeJS and TypeScript 3.5.
-
-// Reference required types from the default lib:
-/// <reference lib="es2018" />
-/// <reference lib="esnext.asynciterable" />
-/// <reference lib="esnext.intl" />
-/// <reference lib="esnext.bigint" />
-
-// Base definitions for all NodeJS modules that are not specific to any version of TypeScript:
-// tslint:disable-next-line:no-bad-reference
-/// <reference path="../base.d.ts" />
-
-// TypeScript 3.5-specific augmentations:
-/// <reference path="fs.d.ts" />
-/// <reference path="util.d.ts" />
-/// <reference path="globals.d.ts" />
-/// <reference path="wasi.d.ts" />
diff --git a/assets/node_modules/@types/node/ts3.5/util.d.ts b/assets/node_modules/@types/node/ts3.5/util.d.ts
deleted file mode 100644
index 5c57e6e..0000000
--- a/assets/node_modules/@types/node/ts3.5/util.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-// tslint:disable-next-line:no-bad-reference
-/// <reference path="../util.d.ts" />
-
-declare module "util" {
- namespace types {
- function isBigInt64Array(value: any): value is BigInt64Array;
- function isBigUint64Array(value: any): value is BigUint64Array;
- }
-}
diff --git a/assets/node_modules/@types/node/ts3.5/wasi.d.ts b/assets/node_modules/@types/node/ts3.5/wasi.d.ts
deleted file mode 100644
index 50c147e..0000000
--- a/assets/node_modules/@types/node/ts3.5/wasi.d.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-declare module 'wasi' {
- interface WASIOptions {
- /**
- * An array of strings that the WebAssembly application will
- * see as command line arguments. The first argument is the virtual path to the
- * WASI command itself.
- */
- args?: string[];
- /**
- * An object similar to `process.env` that the WebAssembly
- * application will see as its environment.
- */
- env?: object;
- /**
- * This object represents the WebAssembly application's
- * sandbox directory structure. The string keys of `preopens` are treated as
- * directories within the sandbox. The corresponding values in `preopens` are
- * the real paths to those directories on the host machine.
- */
- preopens?: {
- [key: string]: string;
- };
- }
-
- class WASI {
- constructor(options?: WASIOptions);
- /**
- *
- * Attempt to begin execution of `instance` by invoking its `_start()` export.
- * If `instance` does not contain a `_start()` export, then `start()` attempts to
- * invoke the `__wasi_unstable_reactor_start()` export. If neither of those exports
- * is present on `instance`, then `start()` does nothing.
- *
- * `start()` requires that `instance` exports a [`WebAssembly.Memory`][] named
- * `memory`. If `instance` does not have a `memory` export an exception is thrown.
- */
- start(instance: object): void; // TODO: avoid DOM dependency until WASM moved to own lib.
- /**
- * Is an object that implements the WASI system call API. This object
- * should be passed as the `wasi_unstable` import during the instantiation of a
- * [`WebAssembly.Instance`][].
- */
- readonly wasiImport: { [key: string]: any }; // TODO: Narrow to DOM types
- }
-}
diff --git a/assets/node_modules/@types/node/tty.d.ts b/assets/node_modules/@types/node/tty.d.ts
deleted file mode 100644
index 22bce21..0000000
--- a/assets/node_modules/@types/node/tty.d.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-declare module "tty" {
- import * as net from "net";
-
- function isatty(fd: number): boolean;
- class ReadStream extends net.Socket {
- constructor(fd: number, options?: net.SocketConstructorOpts);
- isRaw: boolean;
- setRawMode(mode: boolean): void;
- isTTY: boolean;
- }
- /**
- * -1 - to the left from cursor
- * 0 - the entire line
- * 1 - to the right from cursor
- */
- type Direction = -1 | 0 | 1;
- class WriteStream extends net.Socket {
- constructor(fd: number);
- addListener(event: string, listener: (...args: any[]) => void): this;
- addListener(event: "resize", listener: () => void): this;
-
- emit(event: string | symbol, ...args: any[]): boolean;
- emit(event: "resize"): boolean;
-
- on(event: string, listener: (...args: any[]) => void): this;
- on(event: "resize", listener: () => void): this;
-
- once(event: string, listener: (...args: any[]) => void): this;
- once(event: "resize", listener: () => void): this;
-
- prependListener(event: string, listener: (...args: any[]) => void): this;
- prependListener(event: "resize", listener: () => void): this;
-
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
- prependOnceListener(event: "resize", listener: () => void): this;
-
- /**
- * Clears the current line of this WriteStream in a direction identified by `dir`.
- */
- clearLine(dir: Direction, callback?: () => void): boolean;
- /**
- * Clears this `WriteStream` from the current cursor down.
- */
- clearScreenDown(callback?: () => void): boolean;
- /**
- * Moves this WriteStream's cursor to the specified position.
- */
- cursorTo(x: number, y?: number, callback?: () => void): boolean;
- cursorTo(x: number, callback: () => void): boolean;
- /**
- * Moves this WriteStream's cursor relative to its current position.
- */
- moveCursor(dx: number, dy: number, callback?: () => void): boolean;
- /**
- * @default `process.env`
- */
- getColorDepth(env?: {}): number;
- hasColors(depth?: number): boolean;
- hasColors(env?: {}): boolean;
- hasColors(depth: number, env?: {}): boolean;
- getWindowSize(): [number, number];
- columns: number;
- rows: number;
- isTTY: boolean;
- }
-}
diff --git a/assets/node_modules/@types/node/url.d.ts b/assets/node_modules/@types/node/url.d.ts
deleted file mode 100644
index d3a395b..0000000
--- a/assets/node_modules/@types/node/url.d.ts
+++ /dev/null
@@ -1,110 +0,0 @@
-declare module "url" {
- import { ParsedUrlQuery, ParsedUrlQueryInput } from 'querystring';
-
- // Input to `url.format`
- interface UrlObject {
- auth?: string | null;
- hash?: string | null;
- host?: string | null;
- hostname?: string | null;
- href?: string | null;
- pathname?: string | null;
- protocol?: string | null;
- search?: string | null;
- slashes?: boolean | null;
- port?: string | number | null;
- query?: string | null | ParsedUrlQueryInput;
- }
-
- // Output of `url.parse`
- interface Url {
- auth: string | null;
- hash: string | null;
- host: string | null;
- hostname: string | null;
- href: string;
- path: string | null;
- pathname: string | null;
- protocol: string | null;
- search: string | null;
- slashes: boolean | null;
- port: string | null;
- query: string | null | ParsedUrlQuery;
- }
-
- interface UrlWithParsedQuery extends Url {
- query: ParsedUrlQuery;
- }
-
- interface UrlWithStringQuery extends Url {
- query: string | null;
- }
-
- function parse(urlStr: string): UrlWithStringQuery;
- function parse(urlStr: string, parseQueryString: false | undefined, slashesDenoteHost?: boolean): UrlWithStringQuery;
- function parse(urlStr: string, parseQueryString: true, slashesDenoteHost?: boolean): UrlWithParsedQuery;
- function parse(urlStr: string, parseQueryString: boolean, slashesDenoteHost?: boolean): Url;
-
- function format(URL: URL, options?: URLFormatOptions): string;
- function format(urlObject: UrlObject | string): string;
- function resolve(from: string, to: string): string;
-
- function domainToASCII(domain: string): string;
- function domainToUnicode(domain: string): string;
-
- /**
- * This function ensures the correct decodings of percent-encoded characters as
- * well as ensuring a cross-platform valid absolute path string.
- * @param url The file URL string or URL object to convert to a path.
- */
- function fileURLToPath(url: string | URL): string;
-
- /**
- * This function ensures that path is resolved absolutely, and that the URL
- * control characters are correctly encoded when converting into a File URL.
- * @param url The path to convert to a File URL.
- */
- function pathToFileURL(url: string): URL;
-
- interface URLFormatOptions {
- auth?: boolean;
- fragment?: boolean;
- search?: boolean;
- unicode?: boolean;
- }
-
- class URL {
- constructor(input: string, base?: string | URL);
- hash: string;
- host: string;
- hostname: string;
- href: string;
- readonly origin: string;
- password: string;
- pathname: string;
- port: string;
- protocol: string;
- search: string;
- readonly searchParams: URLSearchParams;
- username: string;
- toString(): string;
- toJSON(): string;
- }
-
- class URLSearchParams implements Iterable<[string, string]> {
- constructor(init?: URLSearchParams | string | { [key: string]: string | string[] | undefined } | Iterable<[string, string]> | Array<[string, string]>);
- append(name: string, value: string): void;
- delete(name: string): void;
- entries(): IterableIterator<[string, string]>;
- forEach(callback: (value: string, name: string, searchParams: this) => void): void;
- get(name: string): string | null;
- getAll(name: string): string[];
- has(name: string): boolean;
- keys(): IterableIterator<string>;
- set(name: string, value: string): void;
- sort(): void;
- toString(): string;
- values(): IterableIterator<string>;
- [Symbol.iterator](): IterableIterator<[string, string]>;
- }
-}
diff --git a/assets/node_modules/@types/node/util.d.ts b/assets/node_modules/@types/node/util.d.ts
deleted file mode 100644
index 85a5ad8..0000000
--- a/assets/node_modules/@types/node/util.d.ts
+++ /dev/null
@@ -1,190 +0,0 @@
-declare module "util" {
- interface InspectOptions extends NodeJS.InspectOptions { }
- type Style = 'special' | 'number' | 'bigint' | 'boolean' | 'undefined' | 'null' | 'string' | 'symbol' | 'date' | 'regexp' | 'module';
- type CustomInspectFunction = (depth: number, options: InspectOptionsStylized) => string;
- interface InspectOptionsStylized extends InspectOptions {
- stylize(text: string, styleType: Style): string;
- }
- function format(format: any, ...param: any[]): string;
- function formatWithOptions(inspectOptions: InspectOptions, format: string, ...param: any[]): string;
- /** @deprecated since v0.11.3 - use a third party module instead. */
- function log(string: string): void;
- function inspect(object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string;
- function inspect(object: any, options: InspectOptions): string;
- namespace inspect {
- let colors: {
- [color: string]: [number, number] | undefined
- };
- let styles: {
- [K in Style]: string
- };
- let defaultOptions: InspectOptions;
- /**
- * Allows changing inspect settings from the repl.
- */
- let replDefaults: InspectOptions;
- const custom: unique symbol;
- }
- /** @deprecated since v4.0.0 - use `Array.isArray()` instead. */
- function isArray(object: any): object is any[];
- /** @deprecated since v4.0.0 - use `util.types.isRegExp()` instead. */
- function isRegExp(object: any): object is RegExp;
- /** @deprecated since v4.0.0 - use `util.types.isDate()` instead. */
- function isDate(object: any): object is Date;
- /** @deprecated since v4.0.0 - use `util.types.isNativeError()` instead. */
- function isError(object: any): object is Error;
- function inherits(constructor: any, superConstructor: any): void;
- function debuglog(key: string): (msg: string, ...param: any[]) => void;
- /** @deprecated since v4.0.0 - use `typeof value === 'boolean'` instead. */
- function isBoolean(object: any): object is boolean;
- /** @deprecated since v4.0.0 - use `Buffer.isBuffer()` instead. */
- function isBuffer(object: any): object is Buffer;
- /** @deprecated since v4.0.0 - use `typeof value === 'function'` instead. */
- function isFunction(object: any): boolean;
- /** @deprecated since v4.0.0 - use `value === null` instead. */
- function isNull(object: any): object is null;
- /** @deprecated since v4.0.0 - use `value === null || value === undefined` instead. */
- function isNullOrUndefined(object: any): object is null | undefined;
- /** @deprecated since v4.0.0 - use `typeof value === 'number'` instead. */
- function isNumber(object: any): object is number;
- /** @deprecated since v4.0.0 - use `value !== null && typeof value === 'object'` instead. */
- function isObject(object: any): boolean;
- /** @deprecated since v4.0.0 - use `(typeof value !== 'object' && typeof value !== 'function') || value === null` instead. */
- function isPrimitive(object: any): boolean;
- /** @deprecated since v4.0.0 - use `typeof value === 'string'` instead. */
- function isString(object: any): object is string;
- /** @deprecated since v4.0.0 - use `typeof value === 'symbol'` instead. */
- function isSymbol(object: any): object is symbol;
- /** @deprecated since v4.0.0 - use `value === undefined` instead. */
- function isUndefined(object: any): object is undefined;
- function deprecate<T extends Function>(fn: T, message: string, code?: string): T;
- function isDeepStrictEqual(val1: any, val2: any): boolean;
-
- interface CustomPromisify<TCustom extends Function> extends Function {
- __promisify__: TCustom;
- }
-
- function callbackify(fn: () => Promise<void>): (callback: (err: NodeJS.ErrnoException) => void) => void;
- function callbackify<TResult>(fn: () => Promise<TResult>): (callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;
- function callbackify<T1>(fn: (arg1: T1) => Promise<void>): (arg1: T1, callback: (err: NodeJS.ErrnoException) => void) => void;
- function callbackify<T1, TResult>(fn: (arg1: T1) => Promise<TResult>): (arg1: T1, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;
- function callbackify<T1, T2>(fn: (arg1: T1, arg2: T2) => Promise<void>): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void;
- function callbackify<T1, T2, TResult>(fn: (arg1: T1, arg2: T2) => Promise<TResult>): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void;
- function callbackify<T1, T2, T3>(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void;
- function callbackify<T1, T2, T3, TResult>(
- fn: (arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void;
- function callbackify<T1, T2, T3, T4>(
- fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void;
- function callbackify<T1, T2, T3, T4, TResult>(
- fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void;
- function callbackify<T1, T2, T3, T4, T5>(
- fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void;
- function callbackify<T1, T2, T3, T4, T5, TResult>(
- fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>,
- ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void;
- function callbackify<T1, T2, T3, T4, T5, T6>(
- fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<void>,
- ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException) => void) => void;
- function callbackify<T1, T2, T3, T4, T5, T6, TResult>(
- fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<TResult>
- ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void;
-
- function promisify<TCustom extends Function>(fn: CustomPromisify<TCustom>): TCustom;
- function promisify<TResult>(fn: (callback: (err: any, result: TResult) => void) => void): () => Promise<TResult>;
- function promisify(fn: (callback: (err?: any) => void) => void): () => Promise<void>;
- function promisify<T1, TResult>(fn: (arg1: T1, callback: (err: any, result: TResult) => void) => void): (arg1: T1) => Promise<TResult>;
- function promisify<T1>(fn: (arg1: T1, callback: (err?: any) => void) => void): (arg1: T1) => Promise<void>;
- function promisify<T1, T2, TResult>(fn: (arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void): (arg1: T1, arg2: T2) => Promise<TResult>;
- function promisify<T1, T2>(fn: (arg1: T1, arg2: T2, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2) => Promise<void>;
- function promisify<T1, T2, T3, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void):
- (arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>;
- function promisify<T1, T2, T3>(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise<void>;
- function promisify<T1, T2, T3, T4, TResult>(
- fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void,
- ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>;
- function promisify<T1, T2, T3, T4>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void):
- (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>;
- function promisify<T1, T2, T3, T4, T5, TResult>(
- fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void,
- ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>;
- function promisify<T1, T2, T3, T4, T5>(
- fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void,
- ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>;
- function promisify(fn: Function): Function;
-
- namespace types {
- function isAnyArrayBuffer(object: any): boolean;
- function isArgumentsObject(object: any): object is IArguments;
- function isArrayBuffer(object: any): object is ArrayBuffer;
- function isAsyncFunction(object: any): boolean;
- function isBooleanObject(object: any): object is Boolean;
- function isBoxedPrimitive(object: any): object is (Number | Boolean | String | Symbol /* | Object(BigInt) | Object(Symbol) */);
- function isDataView(object: any): object is DataView;
- function isDate(object: any): object is Date;
- function isExternal(object: any): boolean;
- function isFloat32Array(object: any): object is Float32Array;
- function isFloat64Array(object: any): object is Float64Array;
- function isGeneratorFunction(object: any): boolean;
- function isGeneratorObject(object: any): boolean;
- function isInt8Array(object: any): object is Int8Array;
- function isInt16Array(object: any): object is Int16Array;
- function isInt32Array(object: any): object is Int32Array;
- function isMap(object: any): boolean;
- function isMapIterator(object: any): boolean;
- function isModuleNamespaceObject(value: any): boolean;
- function isNativeError(object: any): object is Error;
- function isNumberObject(object: any): object is Number;
- function isPromise(object: any): boolean;
- function isProxy(object: any): boolean;
- function isRegExp(object: any): object is RegExp;
- function isSet(object: any): boolean;
- function isSetIterator(object: any): boolean;
- function isSharedArrayBuffer(object: any): boolean;
- function isStringObject(object: any): boolean;
- function isSymbolObject(object: any): boolean;
- function isTypedArray(object: any): object is NodeJS.TypedArray;
- function isUint8Array(object: any): object is Uint8Array;
- function isUint8ClampedArray(object: any): object is Uint8ClampedArray;
- function isUint16Array(object: any): object is Uint16Array;
- function isUint32Array(object: any): object is Uint32Array;
- function isWeakMap(object: any): boolean;
- function isWeakSet(object: any): boolean;
- function isWebAssemblyCompiledModule(object: any): boolean;
- }
-
- class TextDecoder {
- readonly encoding: string;
- readonly fatal: boolean;
- readonly ignoreBOM: boolean;
- constructor(
- encoding?: string,
- options?: { fatal?: boolean; ignoreBOM?: boolean }
- );
- decode(
- input?: NodeJS.ArrayBufferView | ArrayBuffer | null,
- options?: { stream?: boolean }
- ): string;
- }
-
- interface EncodeIntoResult {
- /**
- * The read Unicode code units of input.
- */
-
- read: number;
- /**
- * The written UTF-8 bytes of output.
- */
- written: number;
- }
-
- class TextEncoder {
- readonly encoding: string;
- encode(input?: string): Uint8Array;
- encodeInto(input: string, output: Uint8Array): EncodeIntoResult;
- }
-
- namespace promisify {
- const custom: unique symbol;
- }
-}
diff --git a/assets/node_modules/@types/node/v8.d.ts b/assets/node_modules/@types/node/v8.d.ts
deleted file mode 100644
index 7d95082..0000000
--- a/assets/node_modules/@types/node/v8.d.ts
+++ /dev/null
@@ -1,187 +0,0 @@
-declare module "v8" {
- import { Readable } from "stream";
-
- interface HeapSpaceInfo {
- space_name: string;
- space_size: number;
- space_used_size: number;
- space_available_size: number;
- physical_space_size: number;
- }
-
- // ** Signifies if the --zap_code_space option is enabled or not. 1 == enabled, 0 == disabled. */
- type DoesZapCodeSpaceFlag = 0 | 1;
-
- interface HeapInfo {
- total_heap_size: number;
- total_heap_size_executable: number;
- total_physical_size: number;
- total_available_size: number;
- used_heap_size: number;
- heap_size_limit: number;
- malloced_memory: number;
- peak_malloced_memory: number;
- does_zap_garbage: DoesZapCodeSpaceFlag;
- number_of_native_contexts: number;
- number_of_detached_contexts: number;
- }
-
- interface HeapCodeStatistics {
- code_and_metadata_size: number;
- bytecode_and_metadata_size: number;
- external_script_source_size: number;
- }
-
- /**
- * Returns an integer representing a "version tag" derived from the V8 version, command line flags and detected CPU features.
- * This is useful for determining whether a vm.Script cachedData buffer is compatible with this instance of V8.
- */
- function cachedDataVersionTag(): number;
-
- function getHeapStatistics(): HeapInfo;
- function getHeapSpaceStatistics(): HeapSpaceInfo[];
- function setFlagsFromString(flags: string): void;
- /**
- * Generates a snapshot of the current V8 heap and returns a Readable
- * Stream that may be used to read the JSON serialized representation.
- * This conversation was marked as resolved by joyeecheung
- * This JSON stream format is intended to be used with tools such as
- * Chrome DevTools. The JSON schema is undocumented and specific to the
- * V8 engine, and may change from one version of V8 to the next.
- */
- function getHeapSnapshot(): Readable;
-
- /**
- *
- * @param fileName The file path where the V8 heap snapshot is to be
- * saved. If not specified, a file name with the pattern
- * `'Heap-${yyyymmdd}-${hhmmss}-${pid}-${thread_id}.heapsnapshot'` will be
- * generated, where `{pid}` will be the PID of the Node.js process,
- * `{thread_id}` will be `0` when `writeHeapSnapshot()` is called from
- * the main Node.js thread or the id of a worker thread.
- */
- function writeHeapSnapshot(fileName?: string): string;
-
- function getHeapCodeStatistics(): HeapCodeStatistics;
-
- class Serializer {
- /**
- * Writes out a header, which includes the serialization format version.
- */
- writeHeader(): void;
-
- /**
- * Serializes a JavaScript value and adds the serialized representation to the internal buffer.
- * This throws an error if value cannot be serialized.
- */
- writeValue(val: any): boolean;
-
- /**
- * Returns the stored internal buffer.
- * This serializer should not be used once the buffer is released.
- * Calling this method results in undefined behavior if a previous write has failed.
- */
- releaseBuffer(): Buffer;
-
- /**
- * Marks an ArrayBuffer as having its contents transferred out of band.\
- * Pass the corresponding ArrayBuffer in the deserializing context to deserializer.transferArrayBuffer().
- */
- transferArrayBuffer(id: number, arrayBuffer: ArrayBuffer): void;
-
- /**
- * Write a raw 32-bit unsigned integer.
- */
- writeUint32(value: number): void;
-
- /**
- * Write a raw 64-bit unsigned integer, split into high and low 32-bit parts.
- */
- writeUint64(hi: number, lo: number): void;
-
- /**
- * Write a JS number value.
- */
- writeDouble(value: number): void;
-
- /**
- * Write raw bytes into the serializer’s internal buffer.
- * The deserializer will require a way to compute the length of the buffer.
- */
- writeRawBytes(buffer: NodeJS.TypedArray): void;
- }
-
- /**
- * A subclass of `Serializer` that serializes `TypedArray` (in particular `Buffer`) and `DataView` objects as host objects,
- * and only stores the part of their underlying `ArrayBuffers` that they are referring to.
- */
- class DefaultSerializer extends Serializer {
- }
-
- class Deserializer {
- constructor(data: NodeJS.TypedArray);
- /**
- * Reads and validates a header (including the format version).
- * May, for example, reject an invalid or unsupported wire format.
- * In that case, an Error is thrown.
- */
- readHeader(): boolean;
-
- /**
- * Deserializes a JavaScript value from the buffer and returns it.
- */
- readValue(): any;
-
- /**
- * Marks an ArrayBuffer as having its contents transferred out of band.
- * Pass the corresponding `ArrayBuffer` in the serializing context to serializer.transferArrayBuffer()
- * (or return the id from serializer._getSharedArrayBufferId() in the case of SharedArrayBuffers).
- */
- transferArrayBuffer(id: number, arrayBuffer: ArrayBuffer): void;
-
- /**
- * Reads the underlying wire format version.
- * Likely mostly to be useful to legacy code reading old wire format versions.
- * May not be called before .readHeader().
- */
- getWireFormatVersion(): number;
-
- /**
- * Read a raw 32-bit unsigned integer and return it.
- */
- readUint32(): number;
-
- /**
- * Read a raw 64-bit unsigned integer and return it as an array [hi, lo] with two 32-bit unsigned integer entries.
- */
- readUint64(): [number, number];
-
- /**
- * Read a JS number value.
- */
- readDouble(): number;
-
- /**
- * Read raw bytes from the deserializer’s internal buffer.
- * The length parameter must correspond to the length of the buffer that was passed to serializer.writeRawBytes().
- */
- readRawBytes(length: number): Buffer;
- }
-
- /**
- * A subclass of `Serializer` that serializes `TypedArray` (in particular `Buffer`) and `DataView` objects as host objects,
- * and only stores the part of their underlying `ArrayBuffers` that they are referring to.
- */
- class DefaultDeserializer extends Deserializer {
- }
-
- /**
- * Uses a `DefaultSerializer` to serialize value into a buffer.
- */
- function serialize(value: any): Buffer;
-
- /**
- * Uses a `DefaultDeserializer` with default options to read a JS value from a buffer.
- */
- function deserialize(data: NodeJS.TypedArray): any;
-}
diff --git a/assets/node_modules/@types/node/vm.d.ts b/assets/node_modules/@types/node/vm.d.ts
deleted file mode 100644
index 208498c..0000000
--- a/assets/node_modules/@types/node/vm.d.ts
+++ /dev/null
@@ -1,110 +0,0 @@
-declare module "vm" {
- interface Context {
- [key: string]: any;
- }
- interface BaseOptions {
- /**
- * Specifies the filename used in stack traces produced by this script.
- * Default: `''`.
- */
- filename?: string;
- /**
- * Specifies the line number offset that is displayed in stack traces produced by this script.
- * Default: `0`.
- */
- lineOffset?: number;
- /**
- * Specifies the column number offset that is displayed in stack traces produced by this script.
- * Default: `0`
- */
- columnOffset?: number;
- }
- interface ScriptOptions extends BaseOptions {
- displayErrors?: boolean;
- timeout?: number;
- cachedData?: Buffer;
- produceCachedData?: boolean;
- }
- interface RunningScriptOptions extends BaseOptions {
- /**
- * When `true`, if an `Error` occurs while compiling the `code`, the line of code causing the error is attached to the stack trace.
- * Default: `true`.
- */
- displayErrors?: boolean;
- /**
- * Specifies the number of milliseconds to execute code before terminating execution.
- * If execution is terminated, an `Error` will be thrown. This value must be a strictly positive integer.
- */
- timeout?: number;
- /**
- * If `true`, the execution will be terminated when `SIGINT` (Ctrl+C) is received.
- * Existing handlers for the event that have been attached via `process.on('SIGINT')` will be disabled during script execution, but will continue to work after that.
- * If execution is terminated, an `Error` will be thrown.
- * Default: `false`.
- */
- breakOnSigint?: boolean;
- }
- interface CompileFunctionOptions extends BaseOptions {
- /**
- * Provides an optional data with V8's code cache data for the supplied source.
- */
- cachedData?: Buffer;
- /**
- * Specifies whether to produce new cache data.
- * Default: `false`,
- */
- produceCachedData?: boolean;
- /**
- * The sandbox/context in which the said function should be compiled in.
- */
- parsingContext?: Context;
-
- /**
- * An array containing a collection of context extensions (objects wrapping the current scope) to be applied while compiling
- */
- contextExtensions?: Object[];
- }
-
- interface CreateContextOptions {
- /**
- * Human-readable name of the newly created context.
- * @default 'VM Context i' Where i is an ascending numerical index of the created context.
- */
- name?: string;
- /**
- * Corresponds to the newly created context for display purposes.
- * The origin should be formatted like a `URL`, but with only the scheme, host, and port (if necessary),
- * like the value of the `url.origin` property of a URL object.
- * Most notably, this string should omit the trailing slash, as that denotes a path.
- * @default ''
- */
- origin?: string;
- codeGeneration?: {
- /**
- * If set to false any calls to eval or function constructors (Function, GeneratorFunction, etc)
- * will throw an EvalError.
- * @default true
- */
- strings?: boolean;
- /**
- * If set to false any attempt to compile a WebAssembly module will throw a WebAssembly.CompileError.
- * @default true
- */
- wasm?: boolean;
- };
- }
-
- class Script {
- constructor(code: string, options?: ScriptOptions);
- runInContext(contextifiedSandbox: Context, options?: RunningScriptOptions): any;
- runInNewContext(sandbox?: Context, options?: RunningScriptOptions): any;
- runInThisContext(options?: RunningScriptOptions): any;
- createCachedData(): Buffer;
- }
- function createContext(sandbox?: Context, options?: CreateContextOptions): Context;
- function isContext(sandbox: Context): boolean;
- function runInContext(code: string, contextifiedSandbox: Context, options?: RunningScriptOptions | string): any;
- function runInNewContext(code: string, sandbox?: Context, options?: RunningScriptOptions | string): any;
- function runInThisContext(code: string, options?: RunningScriptOptions | string): any;
- function compileFunction(code: string, params: string[], options: CompileFunctionOptions): Function;
-}
diff --git a/assets/node_modules/@types/node/worker_threads.d.ts b/assets/node_modules/@types/node/worker_threads.d.ts
deleted file mode 100644
index 07336f7..0000000
--- a/assets/node_modules/@types/node/worker_threads.d.ts
+++ /dev/null
@@ -1,168 +0,0 @@
-declare module "worker_threads" {
- import { Context } from "vm";
- import { EventEmitter } from "events";
- import { Readable, Writable } from "stream";
-
- const isMainThread: boolean;
- const parentPort: null | MessagePort;
- const threadId: number;
- const workerData: any;
-
- class MessageChannel {
- readonly port1: MessagePort;
- readonly port2: MessagePort;
- }
-
- class MessagePort extends EventEmitter {
- close(): void;
- postMessage(value: any, transferList?: Array<ArrayBuffer | MessagePort>): void;
- ref(): void;
- unref(): void;
- start(): void;
-
- addListener(event: "close", listener: () => void): this;
- addListener(event: "message", listener: (value: any) => void): this;
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- emit(event: "close"): boolean;
- emit(event: "message", value: any): boolean;
- emit(event: string | symbol, ...args: any[]): boolean;
-
- on(event: "close", listener: () => void): this;
- on(event: "message", listener: (value: any) => void): this;
- on(event: string | symbol, listener: (...args: any[]) => void): this;
-
- once(event: "close", listener: () => void): this;
- once(event: "message", listener: (value: any) => void): this;
- once(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependListener(event: "close", listener: () => void): this;
- prependListener(event: "message", listener: (value: any) => void): this;
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependOnceListener(event: "close", listener: () => void): this;
- prependOnceListener(event: "message", listener: (value: any) => void): this;
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- removeListener(event: "close", listener: () => void): this;
- removeListener(event: "message", listener: (value: any) => void): this;
- removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- off(event: "close", listener: () => void): this;
- off(event: "message", listener: (value: any) => void): this;
- off(event: string | symbol, listener: (...args: any[]) => void): this;
- }
-
- interface WorkerOptions {
- /**
- * List of arguments which would be stringified and appended to
- * `process.argv` in the worker. This is mostly similar to the `workerData`
- * but the values will be available on the global `process.argv` as if they
- * were passed as CLI options to the script.
- */
- argv?: any[];
- eval?: boolean;
- workerData?: any;
- stdin?: boolean;
- stdout?: boolean;
- stderr?: boolean;
- execArgv?: string[];
- resourceLimits?: ResourceLimits;
- }
-
- interface ResourceLimits {
- maxYoungGenerationSizeMb?: number;
- maxOldGenerationSizeMb?: number;
- codeRangeSizeMb?: number;
- }
-
- class Worker extends EventEmitter {
- readonly stdin: Writable | null;
- readonly stdout: Readable;
- readonly stderr: Readable;
- readonly threadId: number;
- readonly resourceLimits?: ResourceLimits;
-
- constructor(filename: string, options?: WorkerOptions);
-
- postMessage(value: any, transferList?: Array<ArrayBuffer | MessagePort>): void;
- ref(): void;
- unref(): void;
- /**
- * Stop all JavaScript execution in the worker thread as soon as possible.
- * Returns a Promise for the exit code that is fulfilled when the `exit` event is emitted.
- */
- terminate(): Promise<number>;
- /**
- * Transfer a `MessagePort` to a different `vm` Context. The original `port`
- * object will be rendered unusable, and the returned `MessagePort` instance will
- * take its place.
- *
- * The returned `MessagePort` will be an object in the target context, and will
- * inherit from its global `Object` class. Objects passed to the
- * `port.onmessage()` listener will also be created in the target context
- * and inherit from its global `Object` class.
- *
- * However, the created `MessagePort` will no longer inherit from
- * `EventEmitter`, and only `port.onmessage()` can be used to receive
- * events using it.
- */
- moveMessagePortToContext(port: MessagePort, context: Context): MessagePort;
-
- /**
- * Receive a single message from a given `MessagePort`. If no message is available,
- * `undefined` is returned, otherwise an object with a single `message` property
- * that contains the message payload, corresponding to the oldest message in the
- * `MessagePort`’s queue.
- */
- receiveMessageOnPort(port: MessagePort): {} | undefined;
-
- addListener(event: "error", listener: (err: Error) => void): this;
- addListener(event: "exit", listener: (exitCode: number) => void): this;
- addListener(event: "message", listener: (value: any) => void): this;
- addListener(event: "online", listener: () => void): this;
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- emit(event: "error", err: Error): boolean;
- emit(event: "exit", exitCode: number): boolean;
- emit(event: "message", value: any): boolean;
- emit(event: "online"): boolean;
- emit(event: string | symbol, ...args: any[]): boolean;
-
- on(event: "error", listener: (err: Error) => void): this;
- on(event: "exit", listener: (exitCode: number) => void): this;
- on(event: "message", listener: (value: any) => void): this;
- on(event: "online", listener: () => void): this;
- on(event: string | symbol, listener: (...args: any[]) => void): this;
-
- once(event: "error", listener: (err: Error) => void): this;
- once(event: "exit", listener: (exitCode: number) => void): this;
- once(event: "message", listener: (value: any) => void): this;
- once(event: "online", listener: () => void): this;
- once(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependListener(event: "error", listener: (err: Error) => void): this;
- prependListener(event: "exit", listener: (exitCode: number) => void): this;
- prependListener(event: "message", listener: (value: any) => void): this;
- prependListener(event: "online", listener: () => void): this;
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- prependOnceListener(event: "error", listener: (err: Error) => void): this;
- prependOnceListener(event: "exit", listener: (exitCode: number) => void): this;
- prependOnceListener(event: "message", listener: (value: any) => void): this;
- prependOnceListener(event: "online", listener: () => void): this;
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- removeListener(event: "error", listener: (err: Error) => void): this;
- removeListener(event: "exit", listener: (exitCode: number) => void): this;
- removeListener(event: "message", listener: (value: any) => void): this;
- removeListener(event: "online", listener: () => void): this;
- removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
-
- off(event: "error", listener: (err: Error) => void): this;
- off(event: "exit", listener: (exitCode: number) => void): this;
- off(event: "message", listener: (value: any) => void): this;
- off(event: "online", listener: () => void): this;
- off(event: string | symbol, listener: (...args: any[]) => void): this;
- }
-}
diff --git a/assets/node_modules/@types/node/zlib.d.ts b/assets/node_modules/@types/node/zlib.d.ts
deleted file mode 100644
index a03e900..0000000
--- a/assets/node_modules/@types/node/zlib.d.ts
+++ /dev/null
@@ -1,352 +0,0 @@
-declare module "zlib" {
- import * as stream from "stream";
-
- interface ZlibOptions {
- /**
- * @default constants.Z_NO_FLUSH
- */
- flush?: number;
- /**
- * @default constants.Z_FINISH
- */
- finishFlush?: number;
- /**
- * @default 16*1024
- */
- chunkSize?: number;
- windowBits?: number;
- level?: number; // compression only
- memLevel?: number; // compression only
- strategy?: number; // compression only
- dictionary?: NodeJS.ArrayBufferView | ArrayBuffer; // deflate/inflate only, empty dictionary by default
- }
-
- interface BrotliOptions {
- /**
- * @default constants.BROTLI_OPERATION_PROCESS
- */
- flush?: number;
- /**
- * @default constants.BROTLI_OPERATION_FINISH
- */
- finishFlush?: number;
- /**
- * @default 16*1024
- */
- chunkSize?: number;
- params?: {
- /**
- * Each key is a `constants.BROTLI_*` constant.
- */
- [key: number]: boolean | number;
- };
- }
-
- interface Zlib {
- /** @deprecated Use bytesWritten instead. */
- readonly bytesRead: number;
- readonly bytesWritten: number;
- shell?: boolean | string;
- close(callback?: () => void): void;
- flush(kind?: number | (() => void), callback?: () => void): void;
- }
-
- interface ZlibParams {
- params(level: number, strategy: number, callback: () => void): void;
- }
-
- interface ZlibReset {
- reset(): void;
- }
-
- interface BrotliCompress extends stream.Transform, Zlib { }
- interface BrotliDecompress extends stream.Transform, Zlib { }
- interface Gzip extends stream.Transform, Zlib { }
- interface Gunzip extends stream.Transform, Zlib { }
- interface Deflate extends stream.Transform, Zlib, ZlibReset, ZlibParams { }
- interface Inflate extends stream.Transform, Zlib, ZlibReset { }
- interface DeflateRaw extends stream.Transform, Zlib, ZlibReset, ZlibParams { }
- interface InflateRaw extends stream.Transform, Zlib, ZlibReset { }
- interface Unzip extends stream.Transform, Zlib { }
-
- function createBrotliCompress(options?: BrotliOptions): BrotliCompress;
- function createBrotliDecompress(options?: BrotliOptions): BrotliDecompress;
- function createGzip(options?: ZlibOptions): Gzip;
- function createGunzip(options?: ZlibOptions): Gunzip;
- function createDeflate(options?: ZlibOptions): Deflate;
- function createInflate(options?: ZlibOptions): Inflate;
- function createDeflateRaw(options?: ZlibOptions): DeflateRaw;
- function createInflateRaw(options?: ZlibOptions): InflateRaw;
- function createUnzip(options?: ZlibOptions): Unzip;
-
- type InputType = string | ArrayBuffer | NodeJS.ArrayBufferView;
-
- type CompressCallback = (error: Error | null, result: Buffer) => void;
-
- function brotliCompress(buf: InputType, options: BrotliOptions, callback: CompressCallback): void;
- function brotliCompress(buf: InputType, callback: CompressCallback): void;
- function brotliCompressSync(buf: InputType, options?: BrotliOptions): Buffer;
- function brotliDecompress(buf: InputType, options: BrotliOptions, callback: CompressCallback): void;
- function brotliDecompress(buf: InputType, callback: CompressCallback): void;
- function brotliDecompressSync(buf: InputType, options?: BrotliOptions): Buffer;
- function deflate(buf: InputType, callback: CompressCallback): void;
- function deflate(buf: InputType, options: ZlibOptions, callback: CompressCallback): void;
- function deflateSync(buf: InputType, options?: ZlibOptions): Buffer;
- function deflateRaw(buf: InputType, callback: CompressCallback): void;
- function deflateRaw(buf: InputType, options: ZlibOptions, callback: CompressCallback): void;
- function deflateRawSync(buf: InputType, options?: ZlibOptions): Buffer;
- function gzip(buf: InputType, callback: CompressCallback): void;
- function gzip(buf: InputType, options: ZlibOptions, callback: CompressCallback): void;
- function gzipSync(buf: InputType, options?: ZlibOptions): Buffer;
- function gunzip(buf: InputType, callback: CompressCallback): void;
- function gunzip(buf: InputType, options: ZlibOptions, callback: CompressCallback): void;
- function gunzipSync(buf: InputType, options?: ZlibOptions): Buffer;
- function inflate(buf: InputType, callback: CompressCallback): void;
- function inflate(buf: InputType, options: ZlibOptions, callback: CompressCallback): void;
- function inflateSync(buf: InputType, options?: ZlibOptions): Buffer;
- function inflateRaw(buf: InputType, callback: CompressCallback): void;
- function inflateRaw(buf: InputType, options: ZlibOptions, callback: CompressCallback): void;
- function inflateRawSync(buf: InputType, options?: ZlibOptions): Buffer;
- function unzip(buf: InputType, callback: CompressCallback): void;
- function unzip(buf: InputType, options: ZlibOptions, callback: CompressCallback): void;
- function unzipSync(buf: InputType, options?: ZlibOptions): Buffer;
-
- namespace constants {
- const BROTLI_DECODE: number;
- const BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: number;
- const BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: number;
- const BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: number;
- const BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: number;
- const BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: number;
- const BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: number;
- const BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: number;
- const BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: number;
- const BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: number;
- const BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: number;
- const BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: number;
- const BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: number;
- const BROTLI_DECODER_ERROR_FORMAT_DISTANCE: number;
- const BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: number;
- const BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: number;
- const BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: number;
- const BROTLI_DECODER_ERROR_FORMAT_PADDING_1: number;
- const BROTLI_DECODER_ERROR_FORMAT_PADDING_2: number;
- const BROTLI_DECODER_ERROR_FORMAT_RESERVED: number;
- const BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: number;
- const BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: number;
- const BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: number;
- const BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: number;
- const BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: number;
- const BROTLI_DECODER_ERROR_UNREACHABLE: number;
- const BROTLI_DECODER_NEEDS_MORE_INPUT: number;
- const BROTLI_DECODER_NEEDS_MORE_OUTPUT: number;
- const BROTLI_DECODER_NO_ERROR: number;
- const BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: number;
- const BROTLI_DECODER_PARAM_LARGE_WINDOW: number;
- const BROTLI_DECODER_RESULT_ERROR: number;
- const BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: number;
- const BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: number;
- const BROTLI_DECODER_RESULT_SUCCESS: number;
- const BROTLI_DECODER_SUCCESS: number;
-
- const BROTLI_DEFAULT_MODE: number;
- const BROTLI_DEFAULT_QUALITY: number;
- const BROTLI_DEFAULT_WINDOW: number;
- const BROTLI_ENCODE: number;
- const BROTLI_LARGE_MAX_WINDOW_BITS: number;
- const BROTLI_MAX_INPUT_BLOCK_BITS: number;
- const BROTLI_MAX_QUALITY: number;
- const BROTLI_MAX_WINDOW_BITS: number;
- const BROTLI_MIN_INPUT_BLOCK_BITS: number;
- const BROTLI_MIN_QUALITY: number;
- const BROTLI_MIN_WINDOW_BITS: number;
-
- const BROTLI_MODE_FONT: number;
- const BROTLI_MODE_GENERIC: number;
- const BROTLI_MODE_TEXT: number;
-
- const BROTLI_OPERATION_EMIT_METADATA: number;
- const BROTLI_OPERATION_FINISH: number;
- const BROTLI_OPERATION_FLUSH: number;
- const BROTLI_OPERATION_PROCESS: number;
-
- const BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: number;
- const BROTLI_PARAM_LARGE_WINDOW: number;
- const BROTLI_PARAM_LGBLOCK: number;
- const BROTLI_PARAM_LGWIN: number;
- const BROTLI_PARAM_MODE: number;
- const BROTLI_PARAM_NDIRECT: number;
- const BROTLI_PARAM_NPOSTFIX: number;
- const BROTLI_PARAM_QUALITY: number;
- const BROTLI_PARAM_SIZE_HINT: number;
-
- const DEFLATE: number;
- const DEFLATERAW: number;
- const GUNZIP: number;
- const GZIP: number;
- const INFLATE: number;
- const INFLATERAW: number;
- const UNZIP: number;
-
- const Z_BEST_COMPRESSION: number;
- const Z_BEST_SPEED: number;
- const Z_BLOCK: number;
- const Z_BUF_ERROR: number;
- const Z_DATA_ERROR: number;
-
- const Z_DEFAULT_CHUNK: number;
- const Z_DEFAULT_COMPRESSION: number;
- const Z_DEFAULT_LEVEL: number;
- const Z_DEFAULT_MEMLEVEL: number;
- const Z_DEFAULT_STRATEGY: number;
- const Z_DEFAULT_WINDOWBITS: number;
-
- const Z_ERRNO: number;
- const Z_FILTERED: number;
- const Z_FINISH: number;
- const Z_FIXED: number;
- const Z_FULL_FLUSH: number;
- const Z_HUFFMAN_ONLY: number;
- const Z_MAX_CHUNK: number;
- const Z_MAX_LEVEL: number;
- const Z_MAX_MEMLEVEL: number;
- const Z_MAX_WINDOWBITS: number;
- const Z_MEM_ERROR: number;
- const Z_MIN_CHUNK: number;
- const Z_MIN_LEVEL: number;
- const Z_MIN_MEMLEVEL: number;
- const Z_MIN_WINDOWBITS: number;
- const Z_NEED_DICT: number;
- const Z_NO_COMPRESSION: number;
- const Z_NO_FLUSH: number;
- const Z_OK: number;
- const Z_PARTIAL_FLUSH: number;
- const Z_RLE: number;
- const Z_STREAM_END: number;
- const Z_STREAM_ERROR: number;
- const Z_SYNC_FLUSH: number;
- const Z_VERSION_ERROR: number;
- const ZLIB_VERNUM: number;
- }
-
- /**
- * @deprecated
- */
- const Z_NO_FLUSH: number;
- /**
- * @deprecated
- */
- const Z_PARTIAL_FLUSH: number;
- /**
- * @deprecated
- */
- const Z_SYNC_FLUSH: number;
- /**
- * @deprecated
- */
- const Z_FULL_FLUSH: number;
- /**
- * @deprecated
- */
- const Z_FINISH: number;
- /**
- * @deprecated
- */
- const Z_BLOCK: number;
- /**
- * @deprecated
- */
- const Z_TREES: number;
- /**
- * @deprecated
- */
- const Z_OK: number;
- /**
- * @deprecated
- */
- const Z_STREAM_END: number;
- /**
- * @deprecated
- */
- const Z_NEED_DICT: number;
- /**
- * @deprecated
- */
- const Z_ERRNO: number;
- /**
- * @deprecated
- */
- const Z_STREAM_ERROR: number;
- /**
- * @deprecated
- */
- const Z_DATA_ERROR: number;
- /**
- * @deprecated
- */
- const Z_MEM_ERROR: number;
- /**
- * @deprecated
- */
- const Z_BUF_ERROR: number;
- /**
- * @deprecated
- */
- const Z_VERSION_ERROR: number;
- /**
- * @deprecated
- */
- const Z_NO_COMPRESSION: number;
- /**
- * @deprecated
- */
- const Z_BEST_SPEED: number;
- /**
- * @deprecated
- */
- const Z_BEST_COMPRESSION: number;
- /**
- * @deprecated
- */
- const Z_DEFAULT_COMPRESSION: number;
- /**
- * @deprecated
- */
- const Z_FILTERED: number;
- /**
- * @deprecated
- */
- const Z_HUFFMAN_ONLY: number;
- /**
- * @deprecated
- */
- const Z_RLE: number;
- /**
- * @deprecated
- */
- const Z_FIXED: number;
- /**
- * @deprecated
- */
- const Z_DEFAULT_STRATEGY: number;
- /**
- * @deprecated
- */
- const Z_BINARY: number;
- /**
- * @deprecated
- */
- const Z_TEXT: number;
- /**
- * @deprecated
- */
- const Z_ASCII: number;
- /**
- * @deprecated
- */
- const Z_UNKNOWN: number;
- /**
- * @deprecated
- */
- const Z_DEFLATED: number;
-}
diff --git a/assets/node_modules/@types/normalize-package-data/LICENSE b/assets/node_modules/@types/normalize-package-data/LICENSE
deleted file mode 100755
index 2107107..0000000
--- a/assets/node_modules/@types/normalize-package-data/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
- MIT License
-
- Copyright (c) Microsoft Corporation. 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/assets/node_modules/@types/normalize-package-data/README.md b/assets/node_modules/@types/normalize-package-data/README.md
deleted file mode 100755
index e24ae27..0000000
--- a/assets/node_modules/@types/normalize-package-data/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Installation
-> `npm install --save @types/normalize-package-data`
-
-# Summary
-This package contains type definitions for normalize-package-data (https://github.com/npm/normalize-package-data#readme).
-
-# Details
-Files were exported from https://www.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/normalize-package-data
-
-Additional Details
- * Last updated: Sun, 07 Jan 2018 07:34:38 GMT
- * Dependencies: none
- * Global values: none
-
-# Credits
-These definitions were written by Jeff Dickey <https://github.com/jdxcode>.
diff --git a/assets/node_modules/@types/normalize-package-data/index.d.ts b/assets/node_modules/@types/normalize-package-data/index.d.ts
deleted file mode 100755
index fa8186b..0000000
--- a/assets/node_modules/@types/normalize-package-data/index.d.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-// Type definitions for normalize-package-data 2.4
-// Project: https://github.com/npm/normalize-package-data#readme
-// Definitions by: Jeff Dickey <https://github.com/jdxcode>
-// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
-
-export = normalize;
-
-declare function normalize(data: normalize.Input, warn?: normalize.WarnFn, strict?: boolean): void;
-declare function normalize(data: normalize.Input, strict?: boolean): void;
-
-declare namespace normalize {
- type WarnFn = (msg: string) => void;
- interface Input {[k: string]: any; }
-
- interface Person {
- name?: string;
- email?: string;
- url?: string;
- }
-
- interface Package {
- [k: string]: any;
- name: string;
- version: string;
- files?: string[];
- bin?: {[k: string]: string };
- man?: string[];
- keywords?: string[];
- author?: Person;
- maintainers?: Person[];
- contributors?: Person[];
- bundleDependencies?: {[name: string]: string; };
- dependencies?: {[name: string]: string; };
- devDependencies?: {[name: string]: string; };
- optionalDependencies?: {[name: string]: string; };
- description?: string;
- engines?: {[type: string]: string };
- license?: string;
- repository?: { type: string, url: string };
- bugs?: { url: string, email?: string } | { url?: string, email: string };
- homepage?: string;
- scripts?: {[k: string]: string};
- readme: string;
- _id: string;
- }
-}
diff --git a/assets/node_modules/@types/normalize-package-data/package.json b/assets/node_modules/@types/normalize-package-data/package.json
deleted file mode 100755
index 829a2d2..0000000
--- a/assets/node_modules/@types/normalize-package-data/package.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "@types/normalize-package-data",
- "version": "2.4.0",
- "description": "TypeScript definitions for normalize-package-data",
- "license": "MIT",
- "contributors": [
- {
- "name": "Jeff Dickey",
- "url": "https://github.com/jdxcode",
- "githubUsername": "jdxcode"
- }
- ],
- "main": "",
- "repository": {
- "type": "git",
- "url": "https://www.github.com/DefinitelyTyped/DefinitelyTyped.git"
- },
- "scripts": {},
- "dependencies": {},
- "typesPublisherContentHash": "5d2101e9e55c73e1d649a6c311e0d40bdfaa25bb06bb75ea6f3bb0d149c1303b",
- "typeScriptVersion": "2.0"
-} \ No newline at end of file
diff --git a/assets/node_modules/@types/parse-json/LICENSE b/assets/node_modules/@types/parse-json/LICENSE
deleted file mode 100644
index 4b1ad51..0000000
--- a/assets/node_modules/@types/parse-json/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
- MIT License
-
- Copyright (c) Microsoft Corporation. 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/assets/node_modules/@types/parse-json/README.md b/assets/node_modules/@types/parse-json/README.md
deleted file mode 100644
index 6c7d67d..0000000
--- a/assets/node_modules/@types/parse-json/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Installation
-> `npm install --save @types/parse-json`
-
-# Summary
-This package contains type definitions for parse-json (https://github.com/sindresorhus/parse-json).
-
-# Details
-Files were exported from https://www.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/parse-json
-
-Additional Details
- * Last updated: Tue, 14 Nov 2017 00:30:05 GMT
- * Dependencies: none
- * Global values: none
-
-# Credits
-These definitions were written by mrmlnc <https://github.com/mrmlnc>.
diff --git a/assets/node_modules/@types/parse-json/index.d.ts b/assets/node_modules/@types/parse-json/index.d.ts
deleted file mode 100644
index 293a4a9..0000000
--- a/assets/node_modules/@types/parse-json/index.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-// Type definitions for parse-json 4.0
-// Project: https://github.com/sindresorhus/parse-json
-// Definitions by: mrmlnc <https://github.com/mrmlnc>
-// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
-
-declare function parseJson(input: string | null, filepath?: string): any;
-declare function parseJson(input: string | null, reviver: (key: any, value: any) => any, filepath?: string): any;
-
-export = parseJson;
diff --git a/assets/node_modules/@types/parse-json/package.json b/assets/node_modules/@types/parse-json/package.json
deleted file mode 100644
index cdc08dc..0000000
--- a/assets/node_modules/@types/parse-json/package.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "@types/parse-json",
- "version": "4.0.0",
- "description": "TypeScript definitions for parse-json",
- "license": "MIT",
- "contributors": [
- {
- "name": "mrmlnc",
- "url": "https://github.com/mrmlnc",
- "githubUsername": "mrmlnc"
- }
- ],
- "main": "",
- "repository": {
- "type": "git",
- "url": "https://www.github.com/DefinitelyTyped/DefinitelyTyped.git"
- },
- "scripts": {},
- "dependencies": {},
- "typesPublisherContentHash": "68b3120a3ffa0ae0c978a90b74a1e50adc0340a9d11f17cc1efb7bf2186e7751",
- "typeScriptVersion": "2.0"
-} \ No newline at end of file
diff --git a/assets/node_modules/@types/unist/LICENSE b/assets/node_modules/@types/unist/LICENSE
deleted file mode 100644
index 4b1ad51..0000000
--- a/assets/node_modules/@types/unist/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
- MIT License
-
- Copyright (c) Microsoft Corporation. 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/assets/node_modules/@types/unist/README.md b/assets/node_modules/@types/unist/README.md
deleted file mode 100644
index a15402a..0000000
--- a/assets/node_modules/@types/unist/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Installation
-> `npm install --save @types/unist`
-
-# Summary
-This package contains type definitions for non-npm package 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, 14 Feb 2019 18:10:46 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>.
diff --git a/assets/node_modules/@types/unist/index.d.ts b/assets/node_modules/@types/unist/index.d.ts
deleted file mode 100644
index e5e052d..0000000
--- a/assets/node_modules/@types/unist/index.d.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-// Type definitions for non-npm package Unist 2.0
-// Project: https://github.com/syntax-tree/unist
-// Definitions 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>
-// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
-// TypeScript Version: 3.0
-
-/**
- * Syntactic units in unist syntax trees are called nodes.
- */
-export interface Node {
- /**
- * The variant of a node.
- */
- type: string;
-
- /**
- * Information from the ecosystem.
- */
- data?: Data;
-
- /**
- * Location of a node in a source document.
- * Must not be present if a node is generated.
- */
- position?: Position;
-
- [key: string]: unknown;
-}
-
-/**
- * Information associated by the ecosystem with the node.
- * Space is guaranteed to never be specified by unist or specifications
- * implementing unist.
- */
-export interface Data {
- [key: string]: unknown;
-}
-
-/**
- * Location of a node in a source file.
- */
-export interface Position {
- /**
- * Place of the first character of the parsed source region.
- */
- start: Point;
-
- /**
- * Place of the first character after the parsed source region.
- */
- end: Point;
-
- /**
- * Start column at each index (plus start line) in the source region,
- * for elements that span multiple lines.
- */
- indent?: number[];
-}
-
-/**
- * One place in a source file.
- */
-export interface Point {
- /**
- * Line in a source file (1-indexed integer).
- */
- line: number;
-
- /**
- * Column in a source file (1-indexed integer).
- */
- column: number;
- /**
- * Character in a source file (0-indexed integer).
- */
- offset?: number;
-}
-
-/**
- * Nodes containing other nodes.
- */
-export interface Parent extends Node {
- /**
- * List representing the children of a node.
- */
- children: Node[];
-}
-
-/**
- * Nodes containing a value.
- */
-export interface Literal extends Node {
- value: unknown;
-}
diff --git a/assets/node_modules/@types/unist/package.json b/assets/node_modules/@types/unist/package.json
deleted file mode 100644
index 78fa628..0000000
--- a/assets/node_modules/@types/unist/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "@types/unist",
- "version": "2.0.3",
- "description": "TypeScript definitions for non-npm package 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"
- }
- ],
- "main": "",
- "types": "index",
- "repository": {
- "type": "git",
- "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git"
- },
- "scripts": {},
- "dependencies": {},
- "typesPublisherContentHash": "555fe20f164ccded02a3f69d8b45c8c9d2ec6fd53844a7c7858a3001c281bc9b",
- "typeScriptVersion": "3.0"
-} \ No newline at end of file
diff --git a/assets/node_modules/@types/vfile-message/LICENSE b/assets/node_modules/@types/vfile-message/LICENSE
deleted file mode 100644
index 4b1ad51..0000000
--- a/assets/node_modules/@types/vfile-message/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
- MIT License
-
- Copyright (c) Microsoft Corporation. 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/assets/node_modules/@types/vfile-message/README.md b/assets/node_modules/@types/vfile-message/README.md
deleted file mode 100644
index 50ada3e..0000000
--- a/assets/node_modules/@types/vfile-message/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-This is a stub types definition for vfile-message (https://github.com/vfile/vfile-message#readme).
-
-vfile-message provides its own type definitions, so you don't need @types/vfile-message installed! \ No newline at end of file
diff --git a/assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/index.js b/assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/index.js
deleted file mode 100644
index 3d78a44..0000000
--- a/assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/index.js
+++ /dev/null
@@ -1,50 +0,0 @@
-'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/assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/license b/assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/license
deleted file mode 100644
index 8d8660d..0000000
--- a/assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/package.json b/assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/package.json
deleted file mode 100644
index 1f49530..0000000
--- a/assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/package.json
+++ /dev/null
@@ -1,83 +0,0 @@
-{
- "name": "unist-util-stringify-position",
- "version": "2.0.2",
- "description": "Stringify a Unist node, position, or point",
- "license": "MIT",
- "keywords": [
- "unist",
- "position",
- "location",
- "point",
- "node",
- "stringify",
- "tostring",
- "util",
- "utility"
- ],
- "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": "^2.0.0",
- "nyc": "^14.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.25.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/assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/readme.md b/assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/readme.md
deleted file mode 100644
index 70ea076..0000000
--- a/assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/readme.md
+++ /dev/null
@@ -1,140 +0,0 @@
-# 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
-```
-
-## Usage
-
-```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, organisation, 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/join%20the%20community-on%20spectrum-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/assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/types/index.d.ts b/assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/types/index.d.ts
deleted file mode 100644
index 8f31bc0..0000000
--- a/assets/node_modules/@types/vfile-message/node_modules/unist-util-stringify-position/types/index.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-// TypeScript Version: 3.0
-
-import * as Unist from 'unist'
-
-declare function unistUtilStringifyPosition(
- value: Unist.Node | Unist.Position | Unist.Point
-): string
-
-export = unistUtilStringifyPosition
diff --git a/assets/node_modules/@types/vfile-message/node_modules/vfile-message/index.js b/assets/node_modules/@types/vfile-message/node_modules/vfile-message/index.js
deleted file mode 100644
index c913753..0000000
--- a/assets/node_modules/@types/vfile-message/node_modules/vfile-message/index.js
+++ /dev/null
@@ -1,94 +0,0 @@
-'use strict'
-
-var stringify = require('unist-util-stringify-position')
-
-module.exports = VMessage
-
-// Inherit from `Error#`.
-function VMessagePrototype() {}
-VMessagePrototype.prototype = Error.prototype
-VMessage.prototype = new VMessagePrototype()
-
-// Message properties.
-var proto = VMessage.prototype
-
-proto.file = ''
-proto.name = ''
-proto.reason = ''
-proto.message = ''
-proto.stack = ''
-proto.fatal = null
-proto.column = null
-proto.line = null
-
-// Construct a new VMessage.
-//
-// Note: We cannot invoke `Error` on the created context, as that adds readonly
-// `line` and `column` attributes on Safari 9, thus throwing and failing the
-// data.
-function VMessage(reason, position, origin) {
- var parts
- var range
- var location
-
- if (typeof position === 'string') {
- origin = position
- position = null
- }
-
- parts = parseOrigin(origin)
- range = stringify(position) || '1:1'
-
- location = {
- start: {line: null, column: null},
- end: {line: null, column: null}
- }
-
- // Node.
- if (position && position.position) {
- position = position.position
- }
-
- if (position) {
- // Position.
- if (position.start) {
- location = position
- position = position.start
- } else {
- // Point.
- location.start = position
- }
- }
-
- if (reason.stack) {
- this.stack = reason.stack
- reason = reason.message
- }
-
- this.message = reason
- this.name = range
- this.reason = reason
- this.line = position ? position.line : null
- this.column = position ? position.column : null
- this.location = location
- this.source = parts[0]
- this.ruleId = parts[1]
-}
-
-function parseOrigin(origin) {
- var result = [null, null]
- var index
-
- if (typeof origin === 'string') {
- index = origin.indexOf(':')
-
- if (index === -1) {
- result[1] = origin
- } else {
- result[0] = origin.slice(0, index)
- result[1] = origin.slice(index + 1)
- }
- }
-
- return result
-}
diff --git a/assets/node_modules/@types/vfile-message/node_modules/vfile-message/license b/assets/node_modules/@types/vfile-message/node_modules/vfile-message/license
deleted file mode 100644
index 045ffe0..0000000
--- a/assets/node_modules/@types/vfile-message/node_modules/vfile-message/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2017 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/assets/node_modules/@types/vfile-message/node_modules/vfile-message/package.json b/assets/node_modules/@types/vfile-message/node_modules/vfile-message/package.json
deleted file mode 100644
index 960da62..0000000
--- a/assets/node_modules/@types/vfile-message/node_modules/vfile-message/package.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{
- "name": "vfile-message",
- "version": "2.0.2",
- "description": "Create a virtual message",
- "license": "MIT",
- "keywords": [
- "vfile",
- "virtual",
- "message"
- ],
- "repository": "vfile/vfile-message",
- "bugs": "https://github.com/vfile/vfile-message/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.0",
- "unist-util-stringify-position": "^2.0.0"
- },
- "devDependencies": {
- "browserify": "^16.0.0",
- "dtslint": "^2.0.0",
- "nyc": "^14.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.25.0"
- },
- "scripts": {
- "format": "remark . -qfo && prettier --write \"**/*.{js,ts}\" && xo --fix",
- "build-bundle": "browserify . -s vfileMessage > vfile-message.js",
- "build-mangle": "browserify . -s vfileMessage -p tinyify > vfile-message.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": [
- "vfile-message.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/@types/vfile-message/node_modules/vfile-message/readme.md b/assets/node_modules/@types/vfile-message/node_modules/vfile-message/readme.md
deleted file mode 100644
index c05b83f..0000000
--- a/assets/node_modules/@types/vfile-message/node_modules/vfile-message/readme.md
+++ /dev/null
@@ -1,214 +0,0 @@
-# vfile-message
-
-[![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]
-
-Create [vfile][] messages.
-
-## Install
-
-[npm][]:
-
-```bash
-npm install vfile-message
-```
-
-## Usage
-
-```js
-var VMessage = require('vfile-message')
-
-var message = new VMessage(
- '`braavo` is misspelt; did you mean `bravo`?',
- {line: 1, column: 8},
- 'spell:typo'
-)
-
-console.log(message)
-```
-
-Yields:
-
-```js
-{ [1:8: `braavo` is misspelt; did you mean `bravo`?]
- reason: '`braavo` is misspelt; did you mean `bravo`?',
- fatal: null,
- line: 1,
- column: 8,
- location:
- { start: { line: 1, column: 8 },
- end: { line: null, column: null } },
- source: 'spell',
- ruleId: 'typo' }
-```
-
-## API
-
-### `VMessage(reason[, position][, origin])`
-
-Constructor of a message for `reason` at `position` from `origin`.
-When an error is passed in as `reason`, copies the stack.
-
-##### Parameters
-
-###### `reason`
-
-Reason for message (`string` or `Error`).
-Uses the stack and message of the error if given.
-
-###### `position`
-
-Place at which the message occurred in a file ([`Node`][node],
-[`Position`][position], or [`Point`][point], optional).
-
-###### `origin`
-
-Place in code the message originates from (`string`, optional).
-
-Can either be the [`ruleId`][ruleid] (`'rule'`), or a string with both a
-[`source`][source] and a [`ruleId`][ruleid] delimited with a colon
-(`'source:rule'`).
-
-##### Extends
-
-[`Error`][error].
-
-##### Returns
-
-An instance of itself.
-
-##### Properties
-
-###### `reason`
-
-Reason for message (`string`).
-
-###### `fatal`
-
-If `true`, marks associated file as no longer processable (`boolean?`).
-If `false`, necessitates a (potential) change.
-The value can also be `null` or `undefined`.
-
-###### `line`
-
-Starting line of error (`number?`).
-
-###### `column`
-
-Starting column of error (`number?`).
-
-###### `location`
-
-Full range information, when available ([`Position`][position]).
-Has `start` and `end` properties, both set to an object with `line` and
-`column`, set to `number?`.
-
-###### `source`
-
-Namespace of warning (`string?`).
-
-###### `ruleId`
-
-Category of message (`string?`).
-
-###### `stack`
-
-Stack of message (`string?`).
-
-##### Custom properties
-
-It’s OK to store custom data directly on the `VMessage`, some of those are
-handled by [utilities][util].
-
-###### `file`
-
-You may add a `file` property with a path of a file (used throughout the
-[**VFile**][vfile] ecosystem).
-
-###### `note`
-
-You may add a `note` property with a long form description of the message
-(supported by [`vfile-reporter`][reporter]).
-
-###### `url`
-
-You may add a `url` property with a link to documentation for the message.
-
-## Contribute
-
-See [`contributing.md`][contributing] in [`vfile/.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.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/vfile/vfile-message.svg
-
-[build]: https://travis-ci.org/vfile/vfile-message
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/vfile/vfile-message.svg
-
-[coverage]: https://codecov.io/github/vfile/vfile-message
-
-[downloads-badge]: https://img.shields.io/npm/dm/vfile-message.svg
-
-[downloads]: https://www.npmjs.com/package/vfile-message
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/vfile-message.svg
-
-[size]: https://bundlephobia.com/result?p=vfile-message
-
-[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/join%20the%20community-on%20spectrum-7b16ff.svg
-
-[chat]: https://spectrum.chat/unified/vfile
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[contributing]: https://github.com/vfile/.github/blob/master/contributing.md
-
-[support]: https://github.com/vfile/.github/blob/master/support.md
-
-[health]: https://github.com/vfile/.github
-
-[coc]: https://github.com/vfile/.github/blob/master/code-of-conduct.md
-
-[license]: license
-
-[author]: https://wooorm.com
-
-[error]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error
-
-[node]: https://github.com/syntax-tree/unist#node
-
-[position]: https://github.com/syntax-tree/unist#position
-
-[point]: https://github.com/syntax-tree/unist#point
-
-[vfile]: https://github.com/vfile/vfile
-
-[util]: https://github.com/vfile/vfile#utilities
-
-[reporter]: https://github.com/vfile/vfile-reporter
-
-[ruleid]: #ruleid
-
-[source]: #source
diff --git a/assets/node_modules/@types/vfile-message/node_modules/vfile-message/types/index.d.ts b/assets/node_modules/@types/vfile-message/node_modules/vfile-message/types/index.d.ts
deleted file mode 100644
index 03c9b75..0000000
--- a/assets/node_modules/@types/vfile-message/node_modules/vfile-message/types/index.d.ts
+++ /dev/null
@@ -1,73 +0,0 @@
-// TypeScript Version: 3.0
-
-import * as Unist from 'unist'
-
-declare namespace vfileMessage {
- /**
- * Create a virtual message.
- */
- interface VFileMessage extends Error {
- /**
- * Constructor of a message for `reason` at `position` from `origin`.
- * When an error is passed in as `reason`, copies the `stack`.
- *
- * @param reason Reason for message (`string` or `Error`). Uses the stack and message of the error if given.
- * @param position Place at which the message occurred in a file (`Node`, `Position`, or `Point`, optional).
- * @param origin Place in code the message originates from (`string`, optional).
- */
- (
- reason: string | Error,
- position?: Unist.Node | Unist.Position | Unist.Point,
- origin?: string
- ): VFileMessage
- /**
- * Category of message.
- */
- ruleId: string | null
- /**
- * Reason for message.
- */
- reason: string
- /**
- * Starting line of error.
- */
- line: number | null
- /**
- * Starting column of error.
- */
- column: number | null
- /**
- * Full range information, when available.
- * Has start and end properties, both set to an object with line and column, set to number?.
- */
- location: Unist.Position
- /**
- * Namespace of warning.
- */
- source: string | null
- /**
- * If true, marks associated file as no longer processable.
- */
- fatal?: boolean | null
- /**
- * You may add a file property with a path of a file (used throughout the VFile ecosystem).
- */
- file?: string
- /**
- * You may add a note property with a long form description of the message (supported by vfile-reporter).
- */
- note?: string
- /**
- * You may add a url property with a link to documentation for the message.
- */
- url?: string
- /**
- * It’s OK to store custom data directly on the VMessage, some of those are handled by utilities.
- */
- [key: string]: unknown
- }
-}
-
-declare const vfileMessage: vfileMessage.VFileMessage
-
-export = vfileMessage
diff --git a/assets/node_modules/@types/vfile-message/package.json b/assets/node_modules/@types/vfile-message/package.json
deleted file mode 100644
index 87f4c28..0000000
--- a/assets/node_modules/@types/vfile-message/package.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "name": "@types/vfile-message",
- "version": "2.0.0",
- "typings": null,
- "description": "Stub TypeScript definitions entry for vfile-message, which provides its own types definitions",
- "main": "",
- "scripts": {},
- "author": "",
- "repository": "https://github.com/vfile/vfile-message#readme",
- "license": "MIT",
- "dependencies": {
- "vfile-message": "*"
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/@types/vfile/LICENSE b/assets/node_modules/@types/vfile/LICENSE
deleted file mode 100644
index 4b1ad51..0000000
--- a/assets/node_modules/@types/vfile/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
- MIT License
-
- Copyright (c) Microsoft Corporation. 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/assets/node_modules/@types/vfile/README.md b/assets/node_modules/@types/vfile/README.md
deleted file mode 100644
index 21a9b94..0000000
--- a/assets/node_modules/@types/vfile/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Installation
-> `npm install --save @types/vfile`
-
-# Summary
-This package contains type definitions for VFile (https://github.com/vfile/vfile).
-
-# Details
-Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/vfile
-
-Additional Details
- * Last updated: Wed, 05 Dec 2018 19:00:18 GMT
- * Dependencies: @types/unist, @types/vfile-message, @types/node
- * Global values: none
-
-# Credits
-These definitions were written by bizen241 <https://github.com/bizen241>, Junyoung Choi <https://github.com/rokt33r>.
diff --git a/assets/node_modules/@types/vfile/index.d.ts b/assets/node_modules/@types/vfile/index.d.ts
deleted file mode 100644
index aec7ca8..0000000
--- a/assets/node_modules/@types/vfile/index.d.ts
+++ /dev/null
@@ -1,124 +0,0 @@
-// Type definitions for VFile 3.0
-// Project: https://github.com/vfile/vfile
-// Definitions by: bizen241 <https://github.com/bizen241>
-// Junyoung Choi <https://github.com/rokt33r>
-// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
-// TypeScript Version: 3.0
-
-/// <reference types='node' />
-
-import * as Unist from 'unist';
-import * as vfileMessage from 'vfile-message';
-
-declare namespace vfile {
- type VFileContents = string | Buffer;
-
- interface VFileOptions {
- contents?: VFileContents;
- path?: string;
- basename?: string;
- stem?: string;
- extname?: string;
- dirname?: string;
- cwd?: string;
- data?: any;
- [key: string]: any;
- }
-
- interface VFile {
- /**
- * Create a new virtual file. If `options` is `string` or `Buffer`, treats it as `{contents: options}`.
- * If `options` is a `VFile`, returns it. All other options are set on the newly created `vfile`.
- *
- * Path related properties are set in the following order (least specific to most specific): `history`, `path`, `basename`, `stem`, `extname`, `dirname`.
- *
- * It’s not possible to set either `dirname` or `extname` without setting either `history`, `path`, `basename`, or `stem` as well.
- *
- * @param options If `options` is `string` or `Buffer`, treats it as `{contents: options}`. If `options` is a `VFile`, returns it. All other options are set on the newly created `vfile`.
- */
- <F extends VFile>(input?: VFileContents | F | VFileOptions): F;
- /**
- * List of file-paths the file moved between.
- */
- history: string[];
- /**
- * Place to store custom information.
- * It's OK to store custom data directly on the `vfile`, moving it to `data` gives a little more privacy.
- */
- data: unknown;
- /**
- * List of messages associated with the file.
- */
- messages: vfileMessage.VFileMessage[];
- /**
- * Raw value.
- */
- contents: VFileContents;
- /**
- * Path of `vfile`.
- * Cannot be nullified.
- */
- path?: string;
- /**
- * Path to parent directory of `vfile`.
- * Cannot be set if there's no `path` yet.
- */
- dirname?: string;
- /**
- * Current name (including extension) of `vfile`.
- * Cannot contain path separators.
- * Cannot be nullified either (use `file.path = file.dirname` instead).
- */
- basename?: string;
- /**
- * Name (without extension) of `vfile`.
- * Cannot be nullified, and cannot contain path separators.
- */
- stem?: string;
- /**
- * Extension (with dot) of `vfile`.
- * Cannot be set if there's no `path` yet and cannot contain path separators.
- */
- extname?: string;
- /**
- * Base of `path`.
- * Defaults to `process.cwd()`.
- */
- cwd: string;
- /**
- * Convert contents of `vfile` to string.
- * @param encoding If `contents` is a buffer, `encoding` is used to stringify buffers (default: `'utf8'`).
- */
- toString: (encoding?: BufferEncoding) => string;
- /**
- * Associates a message with the file for `reason` at `position`.
- * When an error is passed in as `reason`, copies the stack.
- * Each message has a `fatal` property which by default is set to `false` (ie. `warning`).
- * @param reason Reason for message. Uses the stack and message of the error if given.
- * @param position Place at which the message occurred in `vfile`.
- * @param ruleId Category of message.
- */
- message: (reason: string, position?: Unist.Point | Unist.Position | Unist.Node, ruleId?: string) => vfileMessage.VFileMessage;
- /**
- * Associates a fatal message with the file, then immediately throws it.
- * Note: fatal errors mean a file is no longer processable.
- * Calls `message()` internally.
- * @param reason Reason for message. Uses the stack and message of the error if given.
- * @param position Place at which the message occurred in `vfile`.
- * @param ruleId Category of message.
- */
- fail: (reason: string, position?: Unist.Point | Unist.Position | Unist.Node, ruleId?: string) => never;
- /**
- * Associates an informational message with the file, where `fatal` is set to `null`.
- * Calls `message()` internally.
- * @param reason Reason for message. Uses the stack and message of the error if given.
- * @param position Place at which the message occurred in `vfile`.
- * @param ruleId Category of message.
- */
- info: (reason: string, position?: Unist.Point | Unist.Position | Unist.Node, ruleId?: string) => vfileMessage.VFileMessage;
- }
-}
-
-declare const vfile: vfile.VFile;
-
-export = vfile;
diff --git a/assets/node_modules/@types/vfile/package.json b/assets/node_modules/@types/vfile/package.json
deleted file mode 100644
index 601ff15..0000000
--- a/assets/node_modules/@types/vfile/package.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "@types/vfile",
- "version": "3.0.2",
- "description": "TypeScript definitions for VFile",
- "license": "MIT",
- "contributors": [
- {
- "name": "bizen241",
- "url": "https://github.com/bizen241",
- "githubUsername": "bizen241"
- },
- {
- "name": "Junyoung Choi",
- "url": "https://github.com/rokt33r",
- "githubUsername": "rokt33r"
- }
- ],
- "main": "",
- "types": "index",
- "repository": {
- "type": "git",
- "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git"
- },
- "scripts": {},
- "dependencies": {
- "@types/node": "*",
- "@types/unist": "*",
- "@types/vfile-message": "*"
- },
- "typesPublisherContentHash": "bb48d507c93dd3ef78cc32948c63a2e407e0706f185a4c8da2fb862ab259d3b9",
- "typeScriptVersion": "3.0"
-} \ No newline at end of file
diff --git a/assets/node_modules/ajv/.tonic_example.js b/assets/node_modules/ajv/.tonic_example.js
deleted file mode 100644
index aa11812..0000000
--- a/assets/node_modules/ajv/.tonic_example.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var Ajv = require('ajv');
-var ajv = new Ajv({allErrors: true});
-
-var schema = {
- "properties": {
- "foo": { "type": "string" },
- "bar": { "type": "number", "maximum": 3 }
- }
-};
-
-var validate = ajv.compile(schema);
-
-test({"foo": "abc", "bar": 2});
-test({"foo": 2, "bar": 4});
-
-function test(data) {
- var valid = validate(data);
- if (valid) console.log('Valid!');
- else console.log('Invalid: ' + ajv.errorsText(validate.errors));
-} \ No newline at end of file
diff --git a/assets/node_modules/ajv/LICENSE b/assets/node_modules/ajv/LICENSE
deleted file mode 100644
index 96ee719..0000000
--- a/assets/node_modules/ajv/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015-2017 Evgeny Poberezkin
-
-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/assets/node_modules/ajv/README.md b/assets/node_modules/ajv/README.md
deleted file mode 100644
index d645c3f..0000000
--- a/assets/node_modules/ajv/README.md
+++ /dev/null
@@ -1,1380 +0,0 @@
-<img align="right" alt="Ajv logo" width="160" src="http://epoberezkin.github.io/ajv/images/ajv_logo.png">
-
-# Ajv: Another JSON Schema Validator
-
-The fastest JSON Schema validator for Node.js and browser. Supports draft-04/06/07.
-
-[![Build Status](https://travis-ci.org/epoberezkin/ajv.svg?branch=master)](https://travis-ci.org/epoberezkin/ajv)
-[![npm](https://img.shields.io/npm/v/ajv.svg)](https://www.npmjs.com/package/ajv)
-[![npm downloads](https://img.shields.io/npm/dm/ajv.svg)](https://www.npmjs.com/package/ajv)
-[![Coverage Status](https://coveralls.io/repos/epoberezkin/ajv/badge.svg?branch=master&service=github)](https://coveralls.io/github/epoberezkin/ajv?branch=master)
-[![Greenkeeper badge](https://badges.greenkeeper.io/epoberezkin/ajv.svg)](https://greenkeeper.io/)
-[![Gitter](https://img.shields.io/gitter/room/ajv-validator/ajv.svg)](https://gitter.im/ajv-validator/ajv)
-
-
-## Using version 6
-
-[JSON Schema draft-07](http://json-schema.org/latest/json-schema-validation.html) is published.
-
-[Ajv version 6.0.0](https://github.com/epoberezkin/ajv/releases/tag/v6.0.0) that supports draft-07 is released. It may require either migrating your schemas or updating your code (to continue using draft-04 and v5 schemas, draft-06 schemas will be supported without changes).
-
-__Please note__: To use Ajv with draft-06 schemas you need to explicitly add the meta-schema to the validator instance:
-
-```javascript
-ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-06.json'));
-```
-
-To use Ajv with draft-04 schemas in addition to explicitly adding meta-schema you also need to use option schemaId:
-
-```javascript
-var ajv = new Ajv({schemaId: 'id'});
-// If you want to use both draft-04 and draft-06/07 schemas:
-// var ajv = new Ajv({schemaId: 'auto'});
-ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-04.json'));
-```
-
-
-## Contents
-
-- [Performance](#performance)
-- [Features](#features)
-- [Getting started](#getting-started)
-- [Frequently Asked Questions](https://github.com/epoberezkin/ajv/blob/master/FAQ.md)
-- [Using in browser](#using-in-browser)
-- [Command line interface](#command-line-interface)
-- Validation
- - [Keywords](#validation-keywords)
- - [Annotation keywords](#annotation-keywords)
- - [Formats](#formats)
- - [Combining schemas with $ref](#ref)
- - [$data reference](#data-reference)
- - NEW: [$merge and $patch keywords](#merge-and-patch-keywords)
- - [Defining custom keywords](#defining-custom-keywords)
- - [Asynchronous schema compilation](#asynchronous-schema-compilation)
- - [Asynchronous validation](#asynchronous-validation)
-- [Security considerations](#security-considerations)
- - [Security contact](#security-contact)
- - [Untrusted schemas](#untrusted-schemas)
- - [Circular references in objects](#circular-references-in-javascript-objects)
- - [Trusted schemas](#security-risks-of-trusted-schemas)
- - [ReDoS attack](#redos-attack)
-- Modifying data during validation
- - [Filtering data](#filtering-data)
- - [Assigning defaults](#assigning-defaults)
- - [Coercing data types](#coercing-data-types)
-- API
- - [Methods](#api)
- - [Options](#options)
- - [Validation errors](#validation-errors)
-- [Plugins](#plugins)
-- [Related packages](#related-packages)
-- [Some packages using Ajv](#some-packages-using-ajv)
-- [Tests, Contributing, History, Support, License](#tests)
-
-
-## Performance
-
-Ajv generates code using [doT templates](https://github.com/olado/doT) to turn JSON Schemas into super-fast validation functions that are efficient for v8 optimization.
-
-Currently Ajv is the fastest and the most standard compliant validator according to these benchmarks:
-
-- [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark) - 50% faster than the second place
-- [jsck benchmark](https://github.com/pandastrike/jsck#benchmarks) - 20-190% faster
-- [z-schema benchmark](https://rawgit.com/zaggino/z-schema/master/benchmark/results.html)
-- [themis benchmark](https://cdn.rawgit.com/playlyfe/themis/master/benchmark/results.html)
-
-
-Performance of different validators by [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark):
-
-[![performance](https://chart.googleapis.com/chart?chxt=x,y&cht=bhs&chco=76A4FB&chls=2.0&chbh=32,4,1&chs=600x416&chxl=-1:|djv|ajv|json-schema-validator-generator|jsen|is-my-json-valid|themis|z-schema|jsck|skeemas|json-schema-library|tv4&chd=t:100,98,72.1,66.8,50.1,15.1,6.1,3.8,1.2,0.7,0.2)](https://github.com/ebdrup/json-schema-benchmark/blob/master/README.md#performance)
-
-
-## Features
-
-- Ajv implements full JSON Schema [draft-06/07](http://json-schema.org/) and draft-04 standards:
- - all validation keywords (see [JSON Schema validation keywords](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md))
- - full support of remote refs (remote schemas have to be added with `addSchema` or compiled to be available)
- - support of circular references between schemas
- - correct string lengths for strings with unicode pairs (can be turned off)
- - [formats](#formats) defined by JSON Schema draft-07 standard and custom formats (can be turned off)
- - [validates schemas against meta-schema](#api-validateschema)
-- supports [browsers](#using-in-browser) and Node.js 0.10-8.x
-- [asynchronous loading](#asynchronous-schema-compilation) of referenced schemas during compilation
-- "All errors" validation mode with [option allErrors](#options)
-- [error messages with parameters](#validation-errors) describing error reasons to allow creating custom error messages
-- i18n error messages support with [ajv-i18n](https://github.com/epoberezkin/ajv-i18n) package
-- [filtering data](#filtering-data) from additional properties
-- [assigning defaults](#assigning-defaults) to missing properties and items
-- [coercing data](#coercing-data-types) to the types specified in `type` keywords
-- [custom keywords](#defining-custom-keywords)
-- draft-06/07 keywords `const`, `contains`, `propertyNames` and `if/then/else`
-- draft-06 boolean schemas (`true`/`false` as a schema to always pass/fail).
-- keywords `switch`, `patternRequired`, `formatMaximum` / `formatMinimum` and `formatExclusiveMaximum` / `formatExclusiveMinimum` from [JSON Schema extension proposals](https://github.com/json-schema/json-schema/wiki/v5-Proposals) with [ajv-keywords](https://github.com/epoberezkin/ajv-keywords) package
-- [$data reference](#data-reference) to use values from the validated data as values for the schema keywords
-- [asynchronous validation](#asynchronous-validation) of custom formats and keywords
-
-Currently Ajv is the only validator that passes all the tests from [JSON Schema Test Suite](https://github.com/json-schema/JSON-Schema-Test-Suite) (according to [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark), apart from the test that requires that `1.0` is not an integer that is impossible to satisfy in JavaScript).
-
-
-## Install
-
-```
-npm install ajv
-```
-
-
-## <a name="usage"></a>Getting started
-
-Try it in the Node.js REPL: https://tonicdev.com/npm/ajv
-
-
-The fastest validation call:
-
-```javascript
-var Ajv = require('ajv');
-var ajv = new Ajv(); // options can be passed, e.g. {allErrors: true}
-var validate = ajv.compile(schema);
-var valid = validate(data);
-if (!valid) console.log(validate.errors);
-```
-
-or with less code
-
-```javascript
-// ...
-var valid = ajv.validate(schema, data);
-if (!valid) console.log(ajv.errors);
-// ...
-```
-
-or
-
-```javascript
-// ...
-var valid = ajv.addSchema(schema, 'mySchema')
- .validate('mySchema', data);
-if (!valid) console.log(ajv.errorsText());
-// ...
-```
-
-See [API](#api) and [Options](#options) for more details.
-
-Ajv compiles schemas to functions and caches them in all cases (using schema serialized with [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) or a custom function as a key), so that the next time the same schema is used (not necessarily the same object instance) it won't be compiled again.
-
-The best performance is achieved when using compiled functions returned by `compile` or `getSchema` methods (there is no additional function call).
-
-__Please note__: every time a validation function or `ajv.validate` are called `errors` property is overwritten. You need to copy `errors` array reference to another variable if you want to use it later (e.g., in the callback). See [Validation errors](#validation-errors)
-
-
-## Using in browser
-
-You can require Ajv directly from the code you browserify - in this case Ajv will be a part of your bundle.
-
-If you need to use Ajv in several bundles you can create a separate UMD bundle using `npm run bundle` script (thanks to [siddo420](https://github.com/siddo420)).
-
-Then you need to load Ajv in the browser:
-```html
-<script src="ajv.min.js"></script>
-```
-
-This bundle can be used with different module systems; it creates global `Ajv` if no module system is found.
-
-The browser bundle is available on [cdnjs](https://cdnjs.com/libraries/ajv).
-
-Ajv is tested with these browsers:
-
-[![Sauce Test Status](https://saucelabs.com/browser-matrix/epoberezkin.svg)](https://saucelabs.com/u/epoberezkin)
-
-__Please note__: some frameworks, e.g. Dojo, may redefine global require in such way that is not compatible with CommonJS module format. In such case Ajv bundle has to be loaded before the framework and then you can use global Ajv (see issue [#234](https://github.com/epoberezkin/ajv/issues/234)).
-
-
-## Command line interface
-
-CLI is available as a separate npm package [ajv-cli](https://github.com/jessedc/ajv-cli). It supports:
-
-- compiling JSON Schemas to test their validity
-- BETA: generating standalone module exporting a validation function to be used without Ajv (using [ajv-pack](https://github.com/epoberezkin/ajv-pack))
-- migrate schemas to draft-07 (using [json-schema-migrate](https://github.com/epoberezkin/json-schema-migrate))
-- validating data file(s) against JSON Schema
-- testing expected validity of data against JSON Schema
-- referenced schemas
-- custom meta-schemas
-- files in JSON and JavaScript format
-- all Ajv options
-- reporting changes in data after validation in [JSON-patch](https://tools.ietf.org/html/rfc6902) format
-
-
-## Validation keywords
-
-Ajv supports all validation keywords from draft-07 of JSON Schema standard:
-
-- [type](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#type)
-- [for numbers](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#keywords-for-numbers) - maximum, minimum, exclusiveMaximum, exclusiveMinimum, multipleOf
-- [for strings](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#keywords-for-strings) - maxLength, minLength, pattern, format
-- [for arrays](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#keywords-for-arrays) - maxItems, minItems, uniqueItems, items, additionalItems, [contains](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#contains)
-- [for objects](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#keywords-for-objects) - maxProperties, minProperties, required, properties, patternProperties, additionalProperties, dependencies, [propertyNames](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#propertynames)
-- [for all types](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#keywords-for-all-types) - enum, [const](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#const)
-- [compound keywords](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#compound-keywords) - not, oneOf, anyOf, allOf, [if/then/else](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#ifthenelse)
-
-With [ajv-keywords](https://github.com/epoberezkin/ajv-keywords) package Ajv also supports validation keywords from [JSON Schema extension proposals](https://github.com/json-schema/json-schema/wiki/v5-Proposals) for JSON Schema standard:
-
-- [patternRequired](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#patternrequired-proposed) - like `required` but with patterns that some property should match.
-- [formatMaximum, formatMinimum, formatExclusiveMaximum, formatExclusiveMinimum](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#formatmaximum--formatminimum-and-exclusiveformatmaximum--exclusiveformatminimum-proposed) - setting limits for date, time, etc.
-
-See [JSON Schema validation keywords](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md) for more details.
-
-
-## Annotation keywords
-
-JSON Schema specification defines several annotation keywords that describe schema itself but do not perform any validation.
-
-- `title` and `description`: information about the data represented by that schema
-- `$comment` (NEW in draft-07): information for developers. With option `$comment` Ajv logs or passes the comment string to the user-supplied function. See [Options](#options).
-- `default`: a default value of the data instance, see [Assigning defaults](#assigning-defaults).
-- `examples` (NEW in draft-06): an array of data instances. Ajv does not check the validity of these instances against the schema.
-- `readOnly` and `writeOnly` (NEW in draft-07): marks data-instance as read-only or write-only in relation to the source of the data (database, api, etc.).
-- `contentEncoding`: [RFC 2045](https://tools.ietf.org/html/rfc2045#section-6.1 ), e.g., "base64".
-- `contentMediaType`: [RFC 2046](https://tools.ietf.org/html/rfc2046), e.g., "image/png".
-
-__Please note__: Ajv does not implement validation of the keywords `examples`, `contentEncoding` and `contentMediaType` but it reserves them. If you want to create a plugin that implements some of them, it should remove these keywords from the instance.
-
-
-## Formats
-
-Ajv implements formats defined by JSON Schema specification and several other formats. It is recommended NOT to use "format" keyword implementations with untrusted data, as they use potentially unsafe regular expressions - see [ReDoS attack](#redos-attack).
-
-__Please note__: if you need to use "format" keyword to validate untrusted data, you MUST assess their suitability and safety for your validation scenarios.
-
-The following formats are implemented for string validation with "format" keyword:
-
-- _date_: full-date according to [RFC3339](http://tools.ietf.org/html/rfc3339#section-5.6).
-- _time_: time with optional time-zone.
-- _date-time_: date-time from the same source (time-zone is mandatory). `date`, `time` and `date-time` validate ranges in `full` mode and only regexp in `fast` mode (see [options](#options)).
-- _uri_: full URI.
-- _uri-reference_: URI reference, including full and relative URIs.
-- _uri-template_: URI template according to [RFC6570](https://tools.ietf.org/html/rfc6570)
-- _url_ (deprecated): [URL record](https://url.spec.whatwg.org/#concept-url).
-- _email_: email address.
-- _hostname_: host name according to [RFC1034](http://tools.ietf.org/html/rfc1034#section-3.5).
-- _ipv4_: IP address v4.
-- _ipv6_: IP address v6.
-- _regex_: tests whether a string is a valid regular expression by passing it to RegExp constructor.
-- _uuid_: Universally Unique IDentifier according to [RFC4122](http://tools.ietf.org/html/rfc4122).
-- _json-pointer_: JSON-pointer according to [RFC6901](https://tools.ietf.org/html/rfc6901).
-- _relative-json-pointer_: relative JSON-pointer according to [this draft](http://tools.ietf.org/html/draft-luff-relative-json-pointer-00).
-
-__Please note__: JSON Schema draft-07 also defines formats `iri`, `iri-reference`, `idn-hostname` and `idn-email` for URLs, hostnames and emails with international characters. Ajv does not implement these formats. If you create Ajv plugin that implements them please make a PR to mention this plugin here.
-
-There are two modes of format validation: `fast` and `full`. This mode affects formats `date`, `time`, `date-time`, `uri`, `uri-reference`, `email`, and `hostname`. See [Options](#options) for details.
-
-You can add additional formats and replace any of the formats above using [addFormat](#api-addformat) method.
-
-The option `unknownFormats` allows changing the default behaviour when an unknown format is encountered. In this case Ajv can either fail schema compilation (default) or ignore it (default in versions before 5.0.0). You also can whitelist specific format(s) to be ignored. See [Options](#options) for details.
-
-You can find regular expressions used for format validation and the sources that were used in [formats.js](https://github.com/epoberezkin/ajv/blob/master/lib/compile/formats.js).
-
-
-## <a name="ref"></a>Combining schemas with $ref
-
-You can structure your validation logic across multiple schema files and have schemas reference each other using `$ref` keyword.
-
-Example:
-
-```javascript
-var schema = {
- "$id": "http://example.com/schemas/schema.json",
- "type": "object",
- "properties": {
- "foo": { "$ref": "defs.json#/definitions/int" },
- "bar": { "$ref": "defs.json#/definitions/str" }
- }
-};
-
-var defsSchema = {
- "$id": "http://example.com/schemas/defs.json",
- "definitions": {
- "int": { "type": "integer" },
- "str": { "type": "string" }
- }
-};
-```
-
-Now to compile your schema you can either pass all schemas to Ajv instance:
-
-```javascript
-var ajv = new Ajv({schemas: [schema, defsSchema]});
-var validate = ajv.getSchema('http://example.com/schemas/schema.json');
-```
-
-or use `addSchema` method:
-
-```javascript
-var ajv = new Ajv;
-var validate = ajv.addSchema(defsSchema)
- .compile(schema);
-```
-
-See [Options](#options) and [addSchema](#api) method.
-
-__Please note__:
-- `$ref` is resolved as the uri-reference using schema $id as the base URI (see the example).
-- References can be recursive (and mutually recursive) to implement the schemas for different data structures (such as linked lists, trees, graphs, etc.).
-- You don't have to host your schema files at the URIs that you use as schema $id. These URIs are only used to identify the schemas, and according to JSON Schema specification validators should not expect to be able to download the schemas from these URIs.
-- The actual location of the schema file in the file system is not used.
-- You can pass the identifier of the schema as the second parameter of `addSchema` method or as a property name in `schemas` option. This identifier can be used instead of (or in addition to) schema $id.
-- You cannot have the same $id (or the schema identifier) used for more than one schema - the exception will be thrown.
-- You can implement dynamic resolution of the referenced schemas using `compileAsync` method. In this way you can store schemas in any system (files, web, database, etc.) and reference them without explicitly adding to Ajv instance. See [Asynchronous schema compilation](#asynchronous-schema-compilation).
-
-
-## $data reference
-
-With `$data` option you can use values from the validated data as the values for the schema keywords. See [proposal](https://github.com/json-schema/json-schema/wiki/$data-(v5-proposal)) for more information about how it works.
-
-`$data` reference is supported in the keywords: const, enum, format, maximum/minimum, exclusiveMaximum / exclusiveMinimum, maxLength / minLength, maxItems / minItems, maxProperties / minProperties, formatMaximum / formatMinimum, formatExclusiveMaximum / formatExclusiveMinimum, multipleOf, pattern, required, uniqueItems.
-
-The value of "$data" should be a [JSON-pointer](https://tools.ietf.org/html/rfc6901) to the data (the root is always the top level data object, even if the $data reference is inside a referenced subschema) or a [relative JSON-pointer](http://tools.ietf.org/html/draft-luff-relative-json-pointer-00) (it is relative to the current point in data; if the $data reference is inside a referenced subschema it cannot point to the data outside of the root level for this subschema).
-
-Examples.
-
-This schema requires that the value in property `smaller` is less or equal than the value in the property larger:
-
-```javascript
-var ajv = new Ajv({$data: true});
-
-var schema = {
- "properties": {
- "smaller": {
- "type": "number",
- "maximum": { "$data": "1/larger" }
- },
- "larger": { "type": "number" }
- }
-};
-
-var validData = {
- smaller: 5,
- larger: 7
-};
-
-ajv.validate(schema, validData); // true
-```
-
-This schema requires that the properties have the same format as their field names:
-
-```javascript
-var schema = {
- "additionalProperties": {
- "type": "string",
- "format": { "$data": "0#" }
- }
-};
-
-var validData = {
- 'date-time': '1963-06-19T08:30:06.283185Z',
- email: 'joe.bloggs@example.com'
-}
-```
-
-`$data` reference is resolved safely - it won't throw even if some property is undefined. If `$data` resolves to `undefined` the validation succeeds (with the exclusion of `const` keyword). If `$data` resolves to incorrect type (e.g. not "number" for maximum keyword) the validation fails.
-
-
-## $merge and $patch keywords
-
-With the package [ajv-merge-patch](https://github.com/epoberezkin/ajv-merge-patch) you can use the keywords `$merge` and `$patch` that allow extending JSON Schemas with patches using formats [JSON Merge Patch (RFC 7396)](https://tools.ietf.org/html/rfc7396) and [JSON Patch (RFC 6902)](https://tools.ietf.org/html/rfc6902).
-
-To add keywords `$merge` and `$patch` to Ajv instance use this code:
-
-```javascript
-require('ajv-merge-patch')(ajv);
-```
-
-Examples.
-
-Using `$merge`:
-
-```json
-{
- "$merge": {
- "source": {
- "type": "object",
- "properties": { "p": { "type": "string" } },
- "additionalProperties": false
- },
- "with": {
- "properties": { "q": { "type": "number" } }
- }
- }
-}
-```
-
-Using `$patch`:
-
-```json
-{
- "$patch": {
- "source": {
- "type": "object",
- "properties": { "p": { "type": "string" } },
- "additionalProperties": false
- },
- "with": [
- { "op": "add", "path": "/properties/q", "value": { "type": "number" } }
- ]
- }
-}
-```
-
-The schemas above are equivalent to this schema:
-
-```json
-{
- "type": "object",
- "properties": {
- "p": { "type": "string" },
- "q": { "type": "number" }
- },
- "additionalProperties": false
-}
-```
-
-The properties `source` and `with` in the keywords `$merge` and `$patch` can use absolute or relative `$ref` to point to other schemas previously added to the Ajv instance or to the fragments of the current schema.
-
-See the package [ajv-merge-patch](https://github.com/epoberezkin/ajv-merge-patch) for more information.
-
-
-## Defining custom keywords
-
-The advantages of using custom keywords are:
-
-- allow creating validation scenarios that cannot be expressed using JSON Schema
-- simplify your schemas
-- help bringing a bigger part of the validation logic to your schemas
-- make your schemas more expressive, less verbose and closer to your application domain
-- implement custom data processors that modify your data (`modifying` option MUST be used in keyword definition) and/or create side effects while the data is being validated
-
-If a keyword is used only for side-effects and its validation result is pre-defined, use option `valid: true/false` in keyword definition to simplify both generated code (no error handling in case of `valid: true`) and your keyword functions (no need to return any validation result).
-
-The concerns you have to be aware of when extending JSON Schema standard with custom keywords are the portability and understanding of your schemas. You will have to support these custom keywords on other platforms and to properly document these keywords so that everybody can understand them in your schemas.
-
-You can define custom keywords with [addKeyword](#api-addkeyword) method. Keywords are defined on the `ajv` instance level - new instances will not have previously defined keywords.
-
-Ajv allows defining keywords with:
-- validation function
-- compilation function
-- macro function
-- inline compilation function that should return code (as string) that will be inlined in the currently compiled schema.
-
-Example. `range` and `exclusiveRange` keywords using compiled schema:
-
-```javascript
-ajv.addKeyword('range', {
- type: 'number',
- compile: function (sch, parentSchema) {
- var min = sch[0];
- var max = sch[1];
-
- return parentSchema.exclusiveRange === true
- ? function (data) { return data > min && data < max; }
- : function (data) { return data >= min && data <= max; }
- }
-});
-
-var schema = { "range": [2, 4], "exclusiveRange": true };
-var validate = ajv.compile(schema);
-console.log(validate(2.01)); // true
-console.log(validate(3.99)); // true
-console.log(validate(2)); // false
-console.log(validate(4)); // false
-```
-
-Several custom keywords (typeof, instanceof, range and propertyNames) are defined in [ajv-keywords](https://github.com/epoberezkin/ajv-keywords) package - they can be used for your schemas and as a starting point for your own custom keywords.
-
-See [Defining custom keywords](https://github.com/epoberezkin/ajv/blob/master/CUSTOM.md) for more details.
-
-
-## Asynchronous schema compilation
-
-During asynchronous compilation remote references are loaded using supplied function. See `compileAsync` [method](#api-compileAsync) and `loadSchema` [option](#options).
-
-Example:
-
-```javascript
-var ajv = new Ajv({ loadSchema: loadSchema });
-
-ajv.compileAsync(schema).then(function (validate) {
- var valid = validate(data);
- // ...
-});
-
-function loadSchema(uri) {
- return request.json(uri).then(function (res) {
- if (res.statusCode >= 400)
- throw new Error('Loading error: ' + res.statusCode);
- return res.body;
- });
-}
-```
-
-__Please note__: [Option](#options) `missingRefs` should NOT be set to `"ignore"` or `"fail"` for asynchronous compilation to work.
-
-
-## Asynchronous validation
-
-Example in Node.js REPL: https://tonicdev.com/esp/ajv-asynchronous-validation
-
-You can define custom formats and keywords that perform validation asynchronously by accessing database or some other service. You should add `async: true` in the keyword or format definition (see [addFormat](#api-addformat), [addKeyword](#api-addkeyword) and [Defining custom keywords](#defining-custom-keywords)).
-
-If your schema uses asynchronous formats/keywords or refers to some schema that contains them it should have `"$async": true` keyword so that Ajv can compile it correctly. If asynchronous format/keyword or reference to asynchronous schema is used in the schema without `$async` keyword Ajv will throw an exception during schema compilation.
-
-__Please note__: all asynchronous subschemas that are referenced from the current or other schemas should have `"$async": true` keyword as well, otherwise the schema compilation will fail.
-
-Validation function for an asynchronous custom format/keyword should return a promise that resolves with `true` or `false` (or rejects with `new Ajv.ValidationError(errors)` if you want to return custom errors from the keyword function).
-
-Ajv compiles asynchronous schemas to [es7 async functions](http://tc39.github.io/ecmascript-asyncawait/) that can optionally be transpiled with [nodent](https://github.com/MatAtBread/nodent). Async functions are supported in Node.js 7+ and all modern browsers. You can also supply any other transpiler as a function via `processCode` option. See [Options](#options).
-
-The compiled validation function has `$async: true` property (if the schema is asynchronous), so you can differentiate these functions if you are using both synchronous and asynchronous schemas.
-
-Validation result will be a promise that resolves with validated data or rejects with an exception `Ajv.ValidationError` that contains the array of validation errors in `errors` property.
-
-
-Example:
-
-```javascript
-var ajv = new Ajv;
-// require('ajv-async')(ajv);
-
-ajv.addKeyword('idExists', {
- async: true,
- type: 'number',
- validate: checkIdExists
-});
-
-
-function checkIdExists(schema, data) {
- return knex(schema.table)
- .select('id')
- .where('id', data)
- .then(function (rows) {
- return !!rows.length; // true if record is found
- });
-}
-
-var schema = {
- "$async": true,
- "properties": {
- "userId": {
- "type": "integer",
- "idExists": { "table": "users" }
- },
- "postId": {
- "type": "integer",
- "idExists": { "table": "posts" }
- }
- }
-};
-
-var validate = ajv.compile(schema);
-
-validate({ userId: 1, postId: 19 })
-.then(function (data) {
- console.log('Data is valid', data); // { userId: 1, postId: 19 }
-})
-.catch(function (err) {
- if (!(err instanceof Ajv.ValidationError)) throw err;
- // data is invalid
- console.log('Validation errors:', err.errors);
-});
-```
-
-### Using transpilers with asynchronous validation functions.
-
-[ajv-async](https://github.com/epoberezkin/ajv-async) uses [nodent](https://github.com/MatAtBread/nodent) to transpile async functions. To use another transpiler you should separately install it (or load its bundle in the browser).
-
-
-#### Using nodent
-
-```javascript
-var ajv = new Ajv;
-require('ajv-async')(ajv);
-// in the browser if you want to load ajv-async bundle separately you can:
-// window.ajvAsync(ajv);
-var validate = ajv.compile(schema); // transpiled es7 async function
-validate(data).then(successFunc).catch(errorFunc);
-```
-
-
-#### Using other transpilers
-
-```javascript
-var ajv = new Ajv({ processCode: transpileFunc });
-var validate = ajv.compile(schema); // transpiled es7 async function
-validate(data).then(successFunc).catch(errorFunc);
-```
-
-See [Options](#options).
-
-
-## Security considerations
-
-JSON Schema, if properly used, can replace data sanitisation. It doesn't replace other API security considerations. It also introduces additional security aspects to consider.
-
-
-##### Security contact
-
-To report a security vulnerability, please use the
-[Tidelift security contact](https://tidelift.com/security).
-Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerabilities via GitHub issues.
-
-
-##### Untrusted schemas
-
-Ajv treats JSON schemas as trusted as your application code. This security model is based on the most common use case, when the schemas are static and bundled together with the application.
-
-If your schemas are received from untrusted sources (or generated from untrusted data) there are several scenarios you need to prevent:
-- compiling schemas can cause stack overflow (if they are too deep)
-- compiling schemas can be slow (e.g. [#557](https://github.com/epoberezkin/ajv/issues/557))
-- validating certain data can be slow
-
-It is difficult to predict all the scenarios, but at the very least it may help to limit the size of untrusted schemas (e.g. limit JSON string length) and also the maximum schema object depth (that can be high for relatively small JSON strings). You also may want to mitigate slow regular expressions in `pattern` and `patternProperties` keywords.
-
-Regardless the measures you take, using untrusted schemas increases security risks.
-
-
-##### Circular references in JavaScript objects
-
-Ajv does not support schemas and validated data that have circular references in objects. See [issue #802](https://github.com/epoberezkin/ajv/issues/802).
-
-An attempt to compile such schemas or validate such data would cause stack overflow (or will not complete in case of asynchronous validation). Depending on the parser you use, untrusted data can lead to circular references.
-
-
-##### Security risks of trusted schemas
-
-Some keywords in JSON Schemas can lead to very slow validation for certain data. These keywords include (but may be not limited to):
-
-- `pattern` and `format` for large strings - in some cases using `maxLength` can help mitigate it, but certain regular expressions can lead to exponential validation time even with relatively short strings (see [ReDoS attack](#redos-attack)).
-- `patternProperties` for large property names - use `propertyNames` to mitigate, but some regular expressions can have exponential evaluation time as well.
-- `uniqueItems` for large non-scalar arrays - use `maxItems` to mitigate
-
-__Please note__: The suggestions above to prevent slow validation would only work if you do NOT use `allErrors: true` in production code (using it would continue validation after validation errors).
-
-You can validate your JSON schemas against [this meta-schema](https://github.com/epoberezkin/ajv/blob/master/lib/refs/json-schema-secure.json) to check that these recommendations are followed:
-
-```javascript
-const isSchemaSecure = ajv.compile(require('ajv/lib/refs/json-schema-secure.json'));
-
-const schema1 = {format: 'email'};
-isSchemaSecure(schema1); // false
-
-const schema2 = {format: 'email', maxLength: MAX_LENGTH};
-isSchemaSecure(schema2); // true
-```
-
-__Please note__: following all these recommendation is not a guarantee that validation of untrusted data is safe - it can still lead to some undesirable results.
-
-
-## ReDoS attack
-
-Certain regular expressions can lead to the exponential evaluation time even with relatively short strings.
-
-Please assess the regular expressions you use in the schemas on their vulnerability to this attack - see [safe-regex](https://github.com/substack/safe-regex), for example.
-
-__Please note__: some formats that Ajv implements use [regular expressions](https://github.com/epoberezkin/ajv/blob/master/lib/compile/formats.js) that can be vulnerable to ReDoS attack, so if you use Ajv to validate data from untrusted sources __it is strongly recommended__ to consider the following:
-
-- making assessment of "format" implementations in Ajv.
-- using `format: 'fast'` option that simplifies some of the regular expressions (although it does not guarantee that they are safe).
-- replacing format implementations provided by Ajv with your own implementations of "format" keyword that either uses different regular expressions or another approach to format validation. Please see [addFormat](#api-addformat) method.
-- disabling format validation by ignoring "format" keyword with option `format: false`
-
-Whatever mitigation you choose, please assume all formats provided by Ajv as potentially unsafe and make your own assessment of their suitability for your validation scenarios.
-
-
-## Filtering data
-
-With [option `removeAdditional`](#options) (added by [andyscott](https://github.com/andyscott)) you can filter data during the validation.
-
-This option modifies original data.
-
-Example:
-
-```javascript
-var ajv = new Ajv({ removeAdditional: true });
-var schema = {
- "additionalProperties": false,
- "properties": {
- "foo": { "type": "number" },
- "bar": {
- "additionalProperties": { "type": "number" },
- "properties": {
- "baz": { "type": "string" }
- }
- }
- }
-}
-
-var data = {
- "foo": 0,
- "additional1": 1, // will be removed; `additionalProperties` == false
- "bar": {
- "baz": "abc",
- "additional2": 2 // will NOT be removed; `additionalProperties` != false
- },
-}
-
-var validate = ajv.compile(schema);
-
-console.log(validate(data)); // true
-console.log(data); // { "foo": 0, "bar": { "baz": "abc", "additional2": 2 }
-```
-
-If `removeAdditional` option in the example above were `"all"` then both `additional1` and `additional2` properties would have been removed.
-
-If the option were `"failing"` then property `additional1` would have been removed regardless of its value and property `additional2` would have been removed only if its value were failing the schema in the inner `additionalProperties` (so in the example above it would have stayed because it passes the schema, but any non-number would have been removed).
-
-__Please note__: If you use `removeAdditional` option with `additionalProperties` keyword inside `anyOf`/`oneOf` keywords your validation can fail with this schema, for example:
-
-```json
-{
- "type": "object",
- "oneOf": [
- {
- "properties": {
- "foo": { "type": "string" }
- },
- "required": [ "foo" ],
- "additionalProperties": false
- },
- {
- "properties": {
- "bar": { "type": "integer" }
- },
- "required": [ "bar" ],
- "additionalProperties": false
- }
- ]
-}
-```
-
-The intention of the schema above is to allow objects with either the string property "foo" or the integer property "bar", but not with both and not with any other properties.
-
-With the option `removeAdditional: true` the validation will pass for the object `{ "foo": "abc"}` but will fail for the object `{"bar": 1}`. It happens because while the first subschema in `oneOf` is validated, the property `bar` is removed because it is an additional property according to the standard (because it is not included in `properties` keyword in the same schema).
-
-While this behaviour is unexpected (issues [#129](https://github.com/epoberezkin/ajv/issues/129), [#134](https://github.com/epoberezkin/ajv/issues/134)), it is correct. To have the expected behaviour (both objects are allowed and additional properties are removed) the schema has to be refactored in this way:
-
-```json
-{
- "type": "object",
- "properties": {
- "foo": { "type": "string" },
- "bar": { "type": "integer" }
- },
- "additionalProperties": false,
- "oneOf": [
- { "required": [ "foo" ] },
- { "required": [ "bar" ] }
- ]
-}
-```
-
-The schema above is also more efficient - it will compile into a faster function.
-
-
-## Assigning defaults
-
-With [option `useDefaults`](#options) Ajv will assign values from `default` keyword in the schemas of `properties` and `items` (when it is the array of schemas) to the missing properties and items.
-
-With the option value `"empty"` properties and items equal to `null` or `""` (empty string) will be considered missing and assigned defaults.
-
-This option modifies original data.
-
-__Please note__: the default value is inserted in the generated validation code as a literal, so the value inserted in the data will be the deep clone of the default in the schema.
-
-
-Example 1 (`default` in `properties`):
-
-```javascript
-var ajv = new Ajv({ useDefaults: true });
-var schema = {
- "type": "object",
- "properties": {
- "foo": { "type": "number" },
- "bar": { "type": "string", "default": "baz" }
- },
- "required": [ "foo", "bar" ]
-};
-
-var data = { "foo": 1 };
-
-var validate = ajv.compile(schema);
-
-console.log(validate(data)); // true
-console.log(data); // { "foo": 1, "bar": "baz" }
-```
-
-Example 2 (`default` in `items`):
-
-```javascript
-var schema = {
- "type": "array",
- "items": [
- { "type": "number" },
- { "type": "string", "default": "foo" }
- ]
-}
-
-var data = [ 1 ];
-
-var validate = ajv.compile(schema);
-
-console.log(validate(data)); // true
-console.log(data); // [ 1, "foo" ]
-```
-
-`default` keywords in other cases are ignored:
-
-- not in `properties` or `items` subschemas
-- in schemas inside `anyOf`, `oneOf` and `not` (see [#42](https://github.com/epoberezkin/ajv/issues/42))
-- in `if` subschema of `switch` keyword
-- in schemas generated by custom macro keywords
-
-The [`strictDefaults` option](#options) customizes Ajv's behavior for the defaults that Ajv ignores (`true` raises an error, and `"log"` outputs a warning).
-
-
-## Coercing data types
-
-When you are validating user inputs all your data properties are usually strings. The option `coerceTypes` allows you to have your data types coerced to the types specified in your schema `type` keywords, both to pass the validation and to use the correctly typed data afterwards.
-
-This option modifies original data.
-
-__Please note__: if you pass a scalar value to the validating function its type will be coerced and it will pass the validation, but the value of the variable you pass won't be updated because scalars are passed by value.
-
-
-Example 1:
-
-```javascript
-var ajv = new Ajv({ coerceTypes: true });
-var schema = {
- "type": "object",
- "properties": {
- "foo": { "type": "number" },
- "bar": { "type": "boolean" }
- },
- "required": [ "foo", "bar" ]
-};
-
-var data = { "foo": "1", "bar": "false" };
-
-var validate = ajv.compile(schema);
-
-console.log(validate(data)); // true
-console.log(data); // { "foo": 1, "bar": false }
-```
-
-Example 2 (array coercions):
-
-```javascript
-var ajv = new Ajv({ coerceTypes: 'array' });
-var schema = {
- "properties": {
- "foo": { "type": "array", "items": { "type": "number" } },
- "bar": { "type": "boolean" }
- }
-};
-
-var data = { "foo": "1", "bar": ["false"] };
-
-var validate = ajv.compile(schema);
-
-console.log(validate(data)); // true
-console.log(data); // { "foo": [1], "bar": false }
-```
-
-The coercion rules, as you can see from the example, are different from JavaScript both to validate user input as expected and to have the coercion reversible (to correctly validate cases where different types are defined in subschemas of "anyOf" and other compound keywords).
-
-See [Coercion rules](https://github.com/epoberezkin/ajv/blob/master/COERCION.md) for details.
-
-
-## API
-
-##### new Ajv(Object options) -&gt; Object
-
-Create Ajv instance.
-
-
-##### .compile(Object schema) -&gt; Function&lt;Object data&gt;
-
-Generate validating function and cache the compiled schema for future use.
-
-Validating function returns a boolean value. This function has properties `errors` and `schema`. Errors encountered during the last validation are assigned to `errors` property (it is assigned `null` if there was no errors). `schema` property contains the reference to the original schema.
-
-The schema passed to this method will be validated against meta-schema unless `validateSchema` option is false. If schema is invalid, an error will be thrown. See [options](#options).
-
-
-##### <a name="api-compileAsync"></a>.compileAsync(Object schema [, Boolean meta] [, Function callback]) -&gt; Promise
-
-Asynchronous version of `compile` method that loads missing remote schemas using asynchronous function in `options.loadSchema`. This function returns a Promise that resolves to a validation function. An optional callback passed to `compileAsync` will be called with 2 parameters: error (or null) and validating function. The returned promise will reject (and the callback will be called with an error) when:
-
-- missing schema can't be loaded (`loadSchema` returns a Promise that rejects).
-- a schema containing a missing reference is loaded, but the reference cannot be resolved.
-- schema (or some loaded/referenced schema) is invalid.
-
-The function compiles schema and loads the first missing schema (or meta-schema) until all missing schemas are loaded.
-
-You can asynchronously compile meta-schema by passing `true` as the second parameter.
-
-See example in [Asynchronous compilation](#asynchronous-schema-compilation).
-
-
-##### .validate(Object schema|String key|String ref, data) -&gt; Boolean
-
-Validate data using passed schema (it will be compiled and cached).
-
-Instead of the schema you can use the key that was previously passed to `addSchema`, the schema id if it was present in the schema or any previously resolved reference.
-
-Validation errors will be available in the `errors` property of Ajv instance (`null` if there were no errors).
-
-__Please note__: every time this method is called the errors are overwritten so you need to copy them to another variable if you want to use them later.
-
-If the schema is asynchronous (has `$async` keyword on the top level) this method returns a Promise. See [Asynchronous validation](#asynchronous-validation).
-
-
-##### .addSchema(Array&lt;Object&gt;|Object schema [, String key]) -&gt; Ajv
-
-Add schema(s) to validator instance. This method does not compile schemas (but it still validates them). Because of that dependencies can be added in any order and circular dependencies are supported. It also prevents unnecessary compilation of schemas that are containers for other schemas but not used as a whole.
-
-Array of schemas can be passed (schemas should have ids), the second parameter will be ignored.
-
-Key can be passed that can be used to reference the schema and will be used as the schema id if there is no id inside the schema. If the key is not passed, the schema id will be used as the key.
-
-
-Once the schema is added, it (and all the references inside it) can be referenced in other schemas and used to validate data.
-
-Although `addSchema` does not compile schemas, explicit compilation is not required - the schema will be compiled when it is used first time.
-
-By default the schema is validated against meta-schema before it is added, and if the schema does not pass validation the exception is thrown. This behaviour is controlled by `validateSchema` option.
-
-__Please note__: Ajv uses the [method chaining syntax](https://en.wikipedia.org/wiki/Method_chaining) for all methods with the prefix `add*` and `remove*`.
-This allows you to do nice things like the following.
-
-```javascript
-var validate = new Ajv().addSchema(schema).addFormat(name, regex).getSchema(uri);
-```
-
-##### .addMetaSchema(Array&lt;Object&gt;|Object schema [, String key]) -&gt; Ajv
-
-Adds meta schema(s) that can be used to validate other schemas. That function should be used instead of `addSchema` because there may be instance options that would compile a meta schema incorrectly (at the moment it is `removeAdditional` option).
-
-There is no need to explicitly add draft-07 meta schema (http://json-schema.org/draft-07/schema) - it is added by default, unless option `meta` is set to `false`. You only need to use it if you have a changed meta-schema that you want to use to validate your schemas. See `validateSchema`.
-
-
-##### <a name="api-validateschema"></a>.validateSchema(Object schema) -&gt; Boolean
-
-Validates schema. This method should be used to validate schemas rather than `validate` due to the inconsistency of `uri` format in JSON Schema standard.
-
-By default this method is called automatically when the schema is added, so you rarely need to use it directly.
-
-If schema doesn't have `$schema` property, it is validated against draft 6 meta-schema (option `meta` should not be false).
-
-If schema has `$schema` property, then the schema with this id (that should be previously added) is used to validate passed schema.
-
-Errors will be available at `ajv.errors`.
-
-
-##### .getSchema(String key) -&gt; Function&lt;Object data&gt;
-
-Retrieve compiled schema previously added with `addSchema` by the key passed to `addSchema` or by its full reference (id). The returned validating function has `schema` property with the reference to the original schema.
-
-
-##### .removeSchema([Object schema|String key|String ref|RegExp pattern]) -&gt; Ajv
-
-Remove added/cached schema. Even if schema is referenced by other schemas it can be safely removed as dependent schemas have local references.
-
-Schema can be removed using:
-- key passed to `addSchema`
-- it's full reference (id)
-- RegExp that should match schema id or key (meta-schemas won't be removed)
-- actual schema object that will be stable-stringified to remove schema from cache
-
-If no parameter is passed all schemas but meta-schemas will be removed and the cache will be cleared.
-
-
-##### <a name="api-addformat"></a>.addFormat(String name, String|RegExp|Function|Object format) -&gt; Ajv
-
-Add custom format to validate strings or numbers. It can also be used to replace pre-defined formats for Ajv instance.
-
-Strings are converted to RegExp.
-
-Function should return validation result as `true` or `false`.
-
-If object is passed it should have properties `validate`, `compare` and `async`:
-
-- _validate_: a string, RegExp or a function as described above.
-- _compare_: an optional comparison function that accepts two strings and compares them according to the format meaning. This function is used with keywords `formatMaximum`/`formatMinimum` (defined in [ajv-keywords](https://github.com/epoberezkin/ajv-keywords) package). It should return `1` if the first value is bigger than the second value, `-1` if it is smaller and `0` if it is equal.
-- _async_: an optional `true` value if `validate` is an asynchronous function; in this case it should return a promise that resolves with a value `true` or `false`.
-- _type_: an optional type of data that the format applies to. It can be `"string"` (default) or `"number"` (see https://github.com/epoberezkin/ajv/issues/291#issuecomment-259923858). If the type of data is different, the validation will pass.
-
-Custom formats can be also added via `formats` option.
-
-
-##### <a name="api-addkeyword"></a>.addKeyword(String keyword, Object definition) -&gt; Ajv
-
-Add custom validation keyword to Ajv instance.
-
-Keyword should be different from all standard JSON Schema keywords and different from previously defined keywords. There is no way to redefine keywords or to remove keyword definition from the instance.
-
-Keyword must start with a letter, `_` or `$`, and may continue with letters, numbers, `_`, `$`, or `-`.
-It is recommended to use an application-specific prefix for keywords to avoid current and future name collisions.
-
-Example Keywords:
-- `"xyz-example"`: valid, and uses prefix for the xyz project to avoid name collisions.
-- `"example"`: valid, but not recommended as it could collide with future versions of JSON Schema etc.
-- `"3-example"`: invalid as numbers are not allowed to be the first character in a keyword
-
-Keyword definition is an object with the following properties:
-
-- _type_: optional string or array of strings with data type(s) that the keyword applies to. If not present, the keyword will apply to all types.
-- _validate_: validating function
-- _compile_: compiling function
-- _macro_: macro function
-- _inline_: compiling function that returns code (as string)
-- _schema_: an optional `false` value used with "validate" keyword to not pass schema
-- _metaSchema_: an optional meta-schema for keyword schema
-- _dependencies_: an optional list of properties that must be present in the parent schema - it will be checked during schema compilation
-- _modifying_: `true` MUST be passed if keyword modifies data
-- _statements_: `true` can be passed in case inline keyword generates statements (as opposed to expression)
-- _valid_: pass `true`/`false` to pre-define validation result, the result returned from validation function will be ignored. This option cannot be used with macro keywords.
-- _$data_: an optional `true` value to support [$data reference](#data-reference) as the value of custom keyword. The reference will be resolved at validation time. If the keyword has meta-schema it would be extended to allow $data and it will be used to validate the resolved value. Supporting $data reference requires that keyword has validating function (as the only option or in addition to compile, macro or inline function).
-- _async_: an optional `true` value if the validation function is asynchronous (whether it is compiled or passed in _validate_ property); in this case it should return a promise that resolves with a value `true` or `false`. This option is ignored in case of "macro" and "inline" keywords.
-- _errors_: an optional boolean or string `"full"` indicating whether keyword returns errors. If this property is not set Ajv will determine if the errors were set in case of failed validation.
-
-_compile_, _macro_ and _inline_ are mutually exclusive, only one should be used at a time. _validate_ can be used separately or in addition to them to support $data reference.
-
-__Please note__: If the keyword is validating data type that is different from the type(s) in its definition, the validation function will not be called (and expanded macro will not be used), so there is no need to check for data type inside validation function or inside schema returned by macro function (unless you want to enforce a specific type and for some reason do not want to use a separate `type` keyword for that). In the same way as standard keywords work, if the keyword does not apply to the data type being validated, the validation of this keyword will succeed.
-
-See [Defining custom keywords](#defining-custom-keywords) for more details.
-
-
-##### .getKeyword(String keyword) -&gt; Object|Boolean
-
-Returns custom keyword definition, `true` for pre-defined keywords and `false` if the keyword is unknown.
-
-
-##### .removeKeyword(String keyword) -&gt; Ajv
-
-Removes custom or pre-defined keyword so you can redefine them.
-
-While this method can be used to extend pre-defined keywords, it can also be used to completely change their meaning - it may lead to unexpected results.
-
-__Please note__: schemas compiled before the keyword is removed will continue to work without changes. To recompile schemas use `removeSchema` method and compile them again.
-
-
-##### .errorsText([Array&lt;Object&gt; errors [, Object options]]) -&gt; String
-
-Returns the text with all errors in a String.
-
-Options can have properties `separator` (string used to separate errors, ", " by default) and `dataVar` (the variable name that dataPaths are prefixed with, "data" by default).
-
-
-## Options
-
-Defaults:
-
-```javascript
-{
- // validation and reporting options:
- $data: false,
- allErrors: false,
- verbose: false,
- $comment: false, // NEW in Ajv version 6.0
- jsonPointers: false,
- uniqueItems: true,
- unicode: true,
- nullable: false,
- format: 'fast',
- formats: {},
- unknownFormats: true,
- schemas: {},
- logger: undefined,
- // referenced schema options:
- schemaId: '$id',
- missingRefs: true,
- extendRefs: 'ignore', // recommended 'fail'
- loadSchema: undefined, // function(uri: string): Promise {}
- // options to modify validated data:
- removeAdditional: false,
- useDefaults: false,
- coerceTypes: false,
- // strict mode options
- strictDefaults: false,
- strictKeywords: false,
- // asynchronous validation options:
- transpile: undefined, // requires ajv-async package
- // advanced options:
- meta: true,
- validateSchema: true,
- addUsedSchema: true,
- inlineRefs: true,
- passContext: false,
- loopRequired: Infinity,
- ownProperties: false,
- multipleOfPrecision: false,
- errorDataPath: 'object', // deprecated
- messages: true,
- sourceCode: false,
- processCode: undefined, // function (str: string): string {}
- cache: new Cache,
- serialize: undefined
-}
-```
-
-##### Validation and reporting options
-
-- _$data_: support [$data references](#data-reference). Draft 6 meta-schema that is added by default will be extended to allow them. If you want to use another meta-schema you need to use $dataMetaSchema method to add support for $data reference. See [API](#api).
-- _allErrors_: check all rules collecting all errors. Default is to return after the first error.
-- _verbose_: include the reference to the part of the schema (`schema` and `parentSchema`) and validated data in errors (false by default).
-- _$comment_ (NEW in Ajv version 6.0): log or pass the value of `$comment` keyword to a function. Option values:
- - `false` (default): ignore $comment keyword.
- - `true`: log the keyword value to console.
- - function: pass the keyword value, its schema path and root schema to the specified function
-- _jsonPointers_: set `dataPath` property of errors using [JSON Pointers](https://tools.ietf.org/html/rfc6901) instead of JavaScript property access notation.
-- _uniqueItems_: validate `uniqueItems` keyword (true by default).
-- _unicode_: calculate correct length of strings with unicode pairs (true by default). Pass `false` to use `.length` of strings that is faster, but gives "incorrect" lengths of strings with unicode pairs - each unicode pair is counted as two characters.
-- _nullable_: support keyword "nullable" from [Open API 3 specification](https://swagger.io/docs/specification/data-models/data-types/).
-- _format_: formats validation mode. Option values:
- - `"fast"` (default) - simplified and fast validation (see [Formats](#formats) for details of which formats are available and affected by this option).
- - `"full"` - more restrictive and slow validation. E.g., 25:00:00 and 2015/14/33 will be invalid time and date in 'full' mode but it will be valid in 'fast' mode.
- - `false` - ignore all format keywords.
-- _formats_: an object with custom formats. Keys and values will be passed to `addFormat` method.
-- _unknownFormats_: handling of unknown formats. Option values:
- - `true` (default) - if an unknown format is encountered the exception is thrown during schema compilation. If `format` keyword value is [$data reference](#data-reference) and it is unknown the validation will fail.
- - `[String]` - an array of unknown format names that will be ignored. This option can be used to allow usage of third party schemas with format(s) for which you don't have definitions, but still fail if another unknown format is used. If `format` keyword value is [$data reference](#data-reference) and it is not in this array the validation will fail.
- - `"ignore"` - to log warning during schema compilation and always pass validation (the default behaviour in versions before 5.0.0). This option is not recommended, as it allows to mistype format name and it won't be validated without any error message. This behaviour is required by JSON Schema specification.
-- _schemas_: an array or object of schemas that will be added to the instance. In case you pass the array the schemas must have IDs in them. When the object is passed the method `addSchema(value, key)` will be called for each schema in this object.
-- _logger_: sets the logging method. Default is the global `console` object that should have methods `log`, `warn` and `error`. Option values:
- - custom logger - it should have methods `log`, `warn` and `error`. If any of these methods is missing an exception will be thrown.
- - `false` - logging is disabled.
-
-
-##### Referenced schema options
-
-- _schemaId_: this option defines which keywords are used as schema URI. Option value:
- - `"$id"` (default) - only use `$id` keyword as schema URI (as specified in JSON Schema draft-06/07), ignore `id` keyword (if it is present a warning will be logged).
- - `"id"` - only use `id` keyword as schema URI (as specified in JSON Schema draft-04), ignore `$id` keyword (if it is present a warning will be logged).
- - `"auto"` - use both `$id` and `id` keywords as schema URI. If both are present (in the same schema object) and different the exception will be thrown during schema compilation.
-- _missingRefs_: handling of missing referenced schemas. Option values:
- - `true` (default) - if the reference cannot be resolved during compilation the exception is thrown. The thrown error has properties `missingRef` (with hash fragment) and `missingSchema` (without it). Both properties are resolved relative to the current base id (usually schema id, unless it was substituted).
- - `"ignore"` - to log error during compilation and always pass validation.
- - `"fail"` - to log error and successfully compile schema but fail validation if this rule is checked.
-- _extendRefs_: validation of other keywords when `$ref` is present in the schema. Option values:
- - `"ignore"` (default) - when `$ref` is used other keywords are ignored (as per [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03#section-3) standard). A warning will be logged during the schema compilation.
- - `"fail"` (recommended) - if other validation keywords are used together with `$ref` the exception will be thrown when the schema is compiled. This option is recommended to make sure schema has no keywords that are ignored, which can be confusing.
- - `true` - validate all keywords in the schemas with `$ref` (the default behaviour in versions before 5.0.0).
-- _loadSchema_: asynchronous function that will be used to load remote schemas when `compileAsync` [method](#api-compileAsync) is used and some reference is missing (option `missingRefs` should NOT be 'fail' or 'ignore'). This function should accept remote schema uri as a parameter and return a Promise that resolves to a schema. See example in [Asynchronous compilation](#asynchronous-schema-compilation).
-
-
-##### Options to modify validated data
-
-- _removeAdditional_: remove additional properties - see example in [Filtering data](#filtering-data). This option is not used if schema is added with `addMetaSchema` method. Option values:
- - `false` (default) - not to remove additional properties
- - `"all"` - all additional properties are removed, regardless of `additionalProperties` keyword in schema (and no validation is made for them).
- - `true` - only additional properties with `additionalProperties` keyword equal to `false` are removed.
- - `"failing"` - additional properties that fail schema validation will be removed (where `additionalProperties` keyword is `false` or schema).
-- _useDefaults_: replace missing or undefined properties and items with the values from corresponding `default` keywords. Default behaviour is to ignore `default` keywords. This option is not used if schema is added with `addMetaSchema` method. See examples in [Assigning defaults](#assigning-defaults). Option values:
- - `false` (default) - do not use defaults
- - `true` - insert defaults by value (object literal is used).
- - `"empty"` - in addition to missing or undefined, use defaults for properties and items that are equal to `null` or `""` (an empty string).
- - `"shared"` (deprecated) - insert defaults by reference. If the default is an object, it will be shared by all instances of validated data. If you modify the inserted default in the validated data, it will be modified in the schema as well.
-- _coerceTypes_: change data type of data to match `type` keyword. See the example in [Coercing data types](#coercing-data-types) and [coercion rules](https://github.com/epoberezkin/ajv/blob/master/COERCION.md). Option values:
- - `false` (default) - no type coercion.
- - `true` - coerce scalar data types.
- - `"array"` - in addition to coercions between scalar types, coerce scalar data to an array with one element and vice versa (as required by the schema).
-
-
-##### Strict mode options
-
-- _strictDefaults_: report ignored `default` keywords in schemas. Option values:
- - `false` (default) - ignored defaults are not reported
- - `true` - if an ignored default is present, throw an error
- - `"log"` - if an ignored default is present, log warning
-- _strictKeywords_: report unknown keywords in schemas. Option values:
- - `false` (default) - unknown keywords are not reported
- - `true` - if an unknown keyword is present, throw an error
- - `"log"` - if an unknown keyword is present, log warning
-
-
-##### Asynchronous validation options
-
-- _transpile_: Requires [ajv-async](https://github.com/epoberezkin/ajv-async) package. It determines whether Ajv transpiles compiled asynchronous validation function. Option values:
- - `undefined` (default) - transpile with [nodent](https://github.com/MatAtBread/nodent) if async functions are not supported.
- - `true` - always transpile with nodent.
- - `false` - do not transpile; if async functions are not supported an exception will be thrown.
-
-
-##### Advanced options
-
-- _meta_: add [meta-schema](http://json-schema.org/documentation.html) so it can be used by other schemas (true by default). If an object is passed, it will be used as the default meta-schema for schemas that have no `$schema` keyword. This default meta-schema MUST have `$schema` keyword.
-- _validateSchema_: validate added/compiled schemas against meta-schema (true by default). `$schema` property in the schema can be http://json-schema.org/draft-07/schema or absent (draft-07 meta-schema will be used) or can be a reference to the schema previously added with `addMetaSchema` method. Option values:
- - `true` (default) - if the validation fails, throw the exception.
- - `"log"` - if the validation fails, log error.
- - `false` - skip schema validation.
-- _addUsedSchema_: by default methods `compile` and `validate` add schemas to the instance if they have `$id` (or `id`) property that doesn't start with "#". If `$id` is present and it is not unique the exception will be thrown. Set this option to `false` to skip adding schemas to the instance and the `$id` uniqueness check when these methods are used. This option does not affect `addSchema` method.
-- _inlineRefs_: Affects compilation of referenced schemas. Option values:
- - `true` (default) - the referenced schemas that don't have refs in them are inlined, regardless of their size - that substantially improves performance at the cost of the bigger size of compiled schema functions.
- - `false` - to not inline referenced schemas (they will be compiled as separate functions).
- - integer number - to limit the maximum number of keywords of the schema that will be inlined.
-- _passContext_: pass validation context to custom keyword functions. If this option is `true` and you pass some context to the compiled validation function with `validate.call(context, data)`, the `context` will be available as `this` in your custom keywords. By default `this` is Ajv instance.
-- _loopRequired_: by default `required` keyword is compiled into a single expression (or a sequence of statements in `allErrors` mode). In case of a very large number of properties in this keyword it may result in a very big validation function. Pass integer to set the number of properties above which `required` keyword will be validated in a loop - smaller validation function size but also worse performance.
-- _ownProperties_: by default Ajv iterates over all enumerable object properties; when this option is `true` only own enumerable object properties (i.e. found directly on the object rather than on its prototype) are iterated. Contributed by @mbroadst.
-- _multipleOfPrecision_: by default `multipleOf` keyword is validated by comparing the result of division with parseInt() of that result. It works for dividers that are bigger than 1. For small dividers such as 0.01 the result of the division is usually not integer (even when it should be integer, see issue [#84](https://github.com/epoberezkin/ajv/issues/84)). If you need to use fractional dividers set this option to some positive integer N to have `multipleOf` validated using this formula: `Math.abs(Math.round(division) - division) < 1e-N` (it is slower but allows for float arithmetics deviations).
-- _errorDataPath_ (deprecated): set `dataPath` to point to 'object' (default) or to 'property' when validating keywords `required`, `additionalProperties` and `dependencies`.
-- _messages_: Include human-readable messages in errors. `true` by default. `false` can be passed when custom messages are used (e.g. with [ajv-i18n](https://github.com/epoberezkin/ajv-i18n)).
-- _sourceCode_: add `sourceCode` property to validating function (for debugging; this code can be different from the result of toString call).
-- _processCode_: an optional function to process generated code before it is passed to Function constructor. It can be used to either beautify (the validating function is generated without line-breaks) or to transpile code. Starting from version 5.0.0 this option replaced options:
- - `beautify` that formatted the generated function using [js-beautify](https://github.com/beautify-web/js-beautify). If you want to beautify the generated code pass `require('js-beautify').js_beautify`.
- - `transpile` that transpiled asynchronous validation function. You can still use `transpile` option with [ajv-async](https://github.com/epoberezkin/ajv-async) package. See [Asynchronous validation](#asynchronous-validation) for more information.
-- _cache_: an optional instance of cache to store compiled schemas using stable-stringified schema as a key. For example, set-associative cache [sacjs](https://github.com/epoberezkin/sacjs) can be used. If not passed then a simple hash is used which is good enough for the common use case (a limited number of statically defined schemas). Cache should have methods `put(key, value)`, `get(key)`, `del(key)` and `clear()`.
-- _serialize_: an optional function to serialize schema to cache key. Pass `false` to use schema itself as a key (e.g., if WeakMap used as a cache). By default [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used.
-
-
-## Validation errors
-
-In case of validation failure, Ajv assigns the array of errors to `errors` property of validation function (or to `errors` property of Ajv instance when `validate` or `validateSchema` methods were called). In case of [asynchronous validation](#asynchronous-validation), the returned promise is rejected with exception `Ajv.ValidationError` that has `errors` property.
-
-
-### Error objects
-
-Each error is an object with the following properties:
-
-- _keyword_: validation keyword.
-- _dataPath_: the path to the part of the data that was validated. By default `dataPath` uses JavaScript property access notation (e.g., `".prop[1].subProp"`). When the option `jsonPointers` is true (see [Options](#options)) `dataPath` will be set using JSON pointer standard (e.g., `"/prop/1/subProp"`).
-- _schemaPath_: the path (JSON-pointer as a URI fragment) to the schema of the keyword that failed validation.
-- _params_: the object with the additional information about error that can be used to create custom error messages (e.g., using [ajv-i18n](https://github.com/epoberezkin/ajv-i18n) package). See below for parameters set by all keywords.
-- _message_: the standard error message (can be excluded with option `messages` set to false).
-- _schema_: the schema of the keyword (added with `verbose` option).
-- _parentSchema_: the schema containing the keyword (added with `verbose` option)
-- _data_: the data validated by the keyword (added with `verbose` option).
-
-__Please note__: `propertyNames` keyword schema validation errors have an additional property `propertyName`, `dataPath` points to the object. After schema validation for each property name, if it is invalid an additional error is added with the property `keyword` equal to `"propertyNames"`.
-
-
-### Error parameters
-
-Properties of `params` object in errors depend on the keyword that failed validation.
-
-- `maxItems`, `minItems`, `maxLength`, `minLength`, `maxProperties`, `minProperties` - property `limit` (number, the schema of the keyword).
-- `additionalItems` - property `limit` (the maximum number of allowed items in case when `items` keyword is an array of schemas and `additionalItems` is false).
-- `additionalProperties` - property `additionalProperty` (the property not used in `properties` and `patternProperties` keywords).
-- `dependencies` - properties:
- - `property` (dependent property),
- - `missingProperty` (required missing dependency - only the first one is reported currently)
- - `deps` (required dependencies, comma separated list as a string),
- - `depsCount` (the number of required dependencies).
-- `format` - property `format` (the schema of the keyword).
-- `maximum`, `minimum` - properties:
- - `limit` (number, the schema of the keyword),
- - `exclusive` (boolean, the schema of `exclusiveMaximum` or `exclusiveMinimum`),
- - `comparison` (string, comparison operation to compare the data to the limit, with the data on the left and the limit on the right; can be "<", "<=", ">", ">=")
-- `multipleOf` - property `multipleOf` (the schema of the keyword)
-- `pattern` - property `pattern` (the schema of the keyword)
-- `required` - property `missingProperty` (required property that is missing).
-- `propertyNames` - property `propertyName` (an invalid property name).
-- `patternRequired` (in ajv-keywords) - property `missingPattern` (required pattern that did not match any property).
-- `type` - property `type` (required type(s), a string, can be a comma-separated list)
-- `uniqueItems` - properties `i` and `j` (indices of duplicate items).
-- `const` - property `allowedValue` pointing to the value (the schema of the keyword).
-- `enum` - property `allowedValues` pointing to the array of values (the schema of the keyword).
-- `$ref` - property `ref` with the referenced schema URI.
-- `oneOf` - property `passingSchemas` (array of indices of passing schemas, null if no schema passes).
-- custom keywords (in case keyword definition doesn't create errors) - property `keyword` (the keyword name).
-
-
-## Plugins
-
-Ajv can be extended with plugins that add custom keywords, formats or functions to process generated code. When such plugin is published as npm package it is recommended that it follows these conventions:
-
-- it exports a function
-- this function accepts ajv instance as the first parameter and returns the same instance to allow chaining
-- this function can accept an optional configuration as the second parameter
-
-If you have published a useful plugin please submit a PR to add it to the next section.
-
-
-## Related packages
-
-- [ajv-async](https://github.com/epoberezkin/ajv-async) - plugin to configure async validation mode
-- [ajv-bsontype](https://github.com/BoLaMN/ajv-bsontype) - plugin to validate mongodb's bsonType formats
-- [ajv-cli](https://github.com/jessedc/ajv-cli) - command line interface
-- [ajv-errors](https://github.com/epoberezkin/ajv-errors) - plugin for custom error messages
-- [ajv-i18n](https://github.com/epoberezkin/ajv-i18n) - internationalised error messages
-- [ajv-istanbul](https://github.com/epoberezkin/ajv-istanbul) - plugin to instrument generated validation code to measure test coverage of your schemas
-- [ajv-keywords](https://github.com/epoberezkin/ajv-keywords) - plugin with custom validation keywords (select, typeof, etc.)
-- [ajv-merge-patch](https://github.com/epoberezkin/ajv-merge-patch) - plugin with keywords $merge and $patch
-- [ajv-pack](https://github.com/epoberezkin/ajv-pack) - produces a compact module exporting validation functions
-
-
-## Some packages using Ajv
-
-- [webpack](https://github.com/webpack/webpack) - a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser
-- [jsonscript-js](https://github.com/JSONScript/jsonscript-js) - the interpreter for [JSONScript](http://www.jsonscript.org) - scripted processing of existing endpoints and services
-- [osprey-method-handler](https://github.com/mulesoft-labs/osprey-method-handler) - Express middleware for validating requests and responses based on a RAML method object, used in [osprey](https://github.com/mulesoft/osprey) - validating API proxy generated from a RAML definition
-- [har-validator](https://github.com/ahmadnassri/har-validator) - HTTP Archive (HAR) validator
-- [jsoneditor](https://github.com/josdejong/jsoneditor) - a web-based tool to view, edit, format, and validate JSON http://jsoneditoronline.org
-- [JSON Schema Lint](https://github.com/nickcmaynard/jsonschemalint) - a web tool to validate JSON/YAML document against a single JSON Schema http://jsonschemalint.com
-- [objection](https://github.com/vincit/objection.js) - SQL-friendly ORM for Node.js
-- [table](https://github.com/gajus/table) - formats data into a string table
-- [ripple-lib](https://github.com/ripple/ripple-lib) - a JavaScript API for interacting with [Ripple](https://ripple.com) in Node.js and the browser
-- [restbase](https://github.com/wikimedia/restbase) - distributed storage with REST API & dispatcher for backend services built to provide a low-latency & high-throughput API for Wikipedia / Wikimedia content
-- [hippie-swagger](https://github.com/CacheControl/hippie-swagger) - [Hippie](https://github.com/vesln/hippie) wrapper that provides end to end API testing with swagger validation
-- [react-form-controlled](https://github.com/seeden/react-form-controlled) - React controlled form components with validation
-- [rabbitmq-schema](https://github.com/tjmehta/rabbitmq-schema) - a schema definition module for RabbitMQ graphs and messages
-- [@query/schema](https://www.npmjs.com/package/@query/schema) - stream filtering with a URI-safe query syntax parsing to JSON Schema
-- [chai-ajv-json-schema](https://github.com/peon374/chai-ajv-json-schema) - chai plugin to us JSON Schema with expect in mocha tests
-- [grunt-jsonschema-ajv](https://github.com/SignpostMarv/grunt-jsonschema-ajv) - Grunt plugin for validating files against JSON Schema
-- [extract-text-webpack-plugin](https://github.com/webpack-contrib/extract-text-webpack-plugin) - extract text from bundle into a file
-- [electron-builder](https://github.com/electron-userland/electron-builder) - a solution to package and build a ready for distribution Electron app
-- [addons-linter](https://github.com/mozilla/addons-linter) - Mozilla Add-ons Linter
-- [gh-pages-generator](https://github.com/epoberezkin/gh-pages-generator) - multi-page site generator converting markdown files to GitHub pages
-- [ESLint](https://github.com/eslint/eslint) - the pluggable linting utility for JavaScript and JSX
-
-
-## Tests
-
-```
-npm install
-git submodule update --init
-npm test
-```
-
-## Contributing
-
-All validation functions are generated using doT templates in [dot](https://github.com/epoberezkin/ajv/tree/master/lib/dot) folder. Templates are precompiled so doT is not a run-time dependency.
-
-`npm run build` - compiles templates to [dotjs](https://github.com/epoberezkin/ajv/tree/master/lib/dotjs) folder.
-
-`npm run watch` - automatically compiles templates when files in dot folder change
-
-Please see [Contributing guidelines](https://github.com/epoberezkin/ajv/blob/master/CONTRIBUTING.md)
-
-
-## Changes history
-
-See https://github.com/epoberezkin/ajv/releases
-
-__Please note__: [Changes in version 6.0.0](https://github.com/epoberezkin/ajv/releases/tag/v6.0.0).
-
-[Version 5.0.0](https://github.com/epoberezkin/ajv/releases/tag/5.0.0).
-
-[Version 4.0.0](https://github.com/epoberezkin/ajv/releases/tag/4.0.0).
-
-[Version 3.0.0](https://github.com/epoberezkin/ajv/releases/tag/3.0.0).
-
-[Version 2.0.0](https://github.com/epoberezkin/ajv/releases/tag/2.0.0).
-
-
-## Open-source software support
-
-Ajv is a part of [Tidelift subscription](https://tidelift.com/subscription/pkg/npm-ajv?utm_source=npm-ajv&utm_medium=referral&utm_campaign=readme) - it provides a centralised support to open-source software users, in addition to the support provided by software maintainers.
-
-
-## License
-
-[MIT](https://github.com/epoberezkin/ajv/blob/master/LICENSE)
diff --git a/assets/node_modules/ajv/dist/ajv.bundle.js b/assets/node_modules/ajv/dist/ajv.bundle.js
deleted file mode 100644
index 2ebb4c3..0000000
--- a/assets/node_modules/ajv/dist/ajv.bundle.js
+++ /dev/null
@@ -1,7163 +0,0 @@
-(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Ajv = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
-'use strict';
-
-
-var Cache = module.exports = function Cache() {
- this._cache = {};
-};
-
-
-Cache.prototype.put = function Cache_put(key, value) {
- this._cache[key] = value;
-};
-
-
-Cache.prototype.get = function Cache_get(key) {
- return this._cache[key];
-};
-
-
-Cache.prototype.del = function Cache_del(key) {
- delete this._cache[key];
-};
-
-
-Cache.prototype.clear = function Cache_clear() {
- this._cache = {};
-};
-
-},{}],2:[function(require,module,exports){
-'use strict';
-
-var MissingRefError = require('./error_classes').MissingRef;
-
-module.exports = compileAsync;
-
-
-/**
- * Creates validating function for passed schema with asynchronous loading of missing schemas.
- * `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.
- * @this Ajv
- * @param {Object} schema schema object
- * @param {Boolean} meta optional true to compile meta-schema; this parameter can be skipped
- * @param {Function} callback an optional node-style callback, it is called with 2 parameters: error (or null) and validating function.
- * @return {Promise} promise that resolves with a validating function.
- */
-function compileAsync(schema, meta, callback) {
- /* eslint no-shadow: 0 */
- /* global Promise */
- /* jshint validthis: true */
- var self = this;
- if (typeof this._opts.loadSchema != 'function')
- throw new Error('options.loadSchema should be a function');
-
- if (typeof meta == 'function') {
- callback = meta;
- meta = undefined;
- }
-
- var p = loadMetaSchemaOf(schema).then(function () {
- var schemaObj = self._addSchema(schema, undefined, meta);
- return schemaObj.validate || _compileAsync(schemaObj);
- });
-
- if (callback) {
- p.then(
- function(v) { callback(null, v); },
- callback
- );
- }
-
- return p;
-
-
- function loadMetaSchemaOf(sch) {
- var $schema = sch.$schema;
- return $schema && !self.getSchema($schema)
- ? compileAsync.call(self, { $ref: $schema }, true)
- : Promise.resolve();
- }
-
-
- function _compileAsync(schemaObj) {
- try { return self._compile(schemaObj); }
- catch(e) {
- if (e instanceof MissingRefError) return loadMissingSchema(e);
- throw e;
- }
-
-
- function loadMissingSchema(e) {
- var ref = e.missingSchema;
- if (added(ref)) throw new Error('Schema ' + ref + ' is loaded but ' + e.missingRef + ' cannot be resolved');
-
- var schemaPromise = self._loadingSchemas[ref];
- if (!schemaPromise) {
- schemaPromise = self._loadingSchemas[ref] = self._opts.loadSchema(ref);
- schemaPromise.then(removePromise, removePromise);
- }
-
- return schemaPromise.then(function (sch) {
- if (!added(ref)) {
- return loadMetaSchemaOf(sch).then(function () {
- if (!added(ref)) self.addSchema(sch, ref, undefined, meta);
- });
- }
- }).then(function() {
- return _compileAsync(schemaObj);
- });
-
- function removePromise() {
- delete self._loadingSchemas[ref];
- }
-
- function added(ref) {
- return self._refs[ref] || self._schemas[ref];
- }
- }
- }
-}
-
-},{"./error_classes":3}],3:[function(require,module,exports){
-'use strict';
-
-var resolve = require('./resolve');
-
-module.exports = {
- Validation: errorSubclass(ValidationError),
- MissingRef: errorSubclass(MissingRefError)
-};
-
-
-function ValidationError(errors) {
- this.message = 'validation failed';
- this.errors = errors;
- this.ajv = this.validation = true;
-}
-
-
-MissingRefError.message = function (baseId, ref) {
- return 'can\'t resolve reference ' + ref + ' from id ' + baseId;
-};
-
-
-function MissingRefError(baseId, ref, message) {
- this.message = message || MissingRefError.message(baseId, ref);
- this.missingRef = resolve.url(baseId, ref);
- this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef));
-}
-
-
-function errorSubclass(Subclass) {
- Subclass.prototype = Object.create(Error.prototype);
- Subclass.prototype.constructor = Subclass;
- return Subclass;
-}
-
-},{"./resolve":6}],4:[function(require,module,exports){
-'use strict';
-
-var util = require('./util');
-
-var DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/;
-var DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31];
-var TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i;
-var HOSTNAME = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i;
-var URI = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;
-var URIREF = /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;
-// uri-template: https://tools.ietf.org/html/rfc6570
-var URITEMPLATE = /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i;
-// For the source: https://gist.github.com/dperini/729294
-// For test cases: https://mathiasbynens.be/demo/url-regex
-// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.
-// var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu;
-var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i;
-var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;
-var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$/;
-var JSON_POINTER_URI_FRAGMENT = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;
-var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;
-
-
-module.exports = formats;
-
-function formats(mode) {
- mode = mode == 'full' ? 'full' : 'fast';
- return util.copy(formats[mode]);
-}
-
-
-formats.fast = {
- // date: http://tools.ietf.org/html/rfc3339#section-5.6
- date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/,
- // date-time: http://tools.ietf.org/html/rfc3339#section-5.6
- time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,
- 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,
- // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js
- uri: /^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,
- 'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,
- 'uri-template': URITEMPLATE,
- url: URL,
- // email (sources from jsen validator):
- // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363
- // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')
- email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,
- hostname: HOSTNAME,
- // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html
- ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,
- // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses
- ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,
- regex: regex,
- // uuid: http://tools.ietf.org/html/rfc4122
- uuid: UUID,
- // JSON-pointer: https://tools.ietf.org/html/rfc6901
- // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A
- 'json-pointer': JSON_POINTER,
- 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,
- // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00
- 'relative-json-pointer': RELATIVE_JSON_POINTER
-};
-
-
-formats.full = {
- date: date,
- time: time,
- 'date-time': date_time,
- uri: uri,
- 'uri-reference': URIREF,
- 'uri-template': URITEMPLATE,
- url: URL,
- email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,
- hostname: hostname,
- ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,
- ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,
- regex: regex,
- uuid: UUID,
- 'json-pointer': JSON_POINTER,
- 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,
- 'relative-json-pointer': RELATIVE_JSON_POINTER
-};
-
-
-function isLeapYear(year) {
- // https://tools.ietf.org/html/rfc3339#appendix-C
- return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
-}
-
-
-function date(str) {
- // full-date from http://tools.ietf.org/html/rfc3339#section-5.6
- var matches = str.match(DATE);
- if (!matches) return false;
-
- var year = +matches[1];
- var month = +matches[2];
- var day = +matches[3];
-
- return month >= 1 && month <= 12 && day >= 1 &&
- day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);
-}
-
-
-function time(str, full) {
- var matches = str.match(TIME);
- if (!matches) return false;
-
- var hour = matches[1];
- var minute = matches[2];
- var second = matches[3];
- var timeZone = matches[5];
- return ((hour <= 23 && minute <= 59 && second <= 59) ||
- (hour == 23 && minute == 59 && second == 60)) &&
- (!full || timeZone);
-}
-
-
-var DATE_TIME_SEPARATOR = /t|\s/i;
-function date_time(str) {
- // http://tools.ietf.org/html/rfc3339#section-5.6
- var dateTime = str.split(DATE_TIME_SEPARATOR);
- return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);
-}
-
-
-function hostname(str) {
- // https://tools.ietf.org/html/rfc1034#section-3.5
- // https://tools.ietf.org/html/rfc1123#section-2
- return str.length <= 255 && HOSTNAME.test(str);
-}
-
-
-var NOT_URI_FRAGMENT = /\/|:/;
-function uri(str) {
- // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "."
- return NOT_URI_FRAGMENT.test(str) && URI.test(str);
-}
-
-
-var Z_ANCHOR = /[^\\]\\Z/;
-function regex(str) {
- if (Z_ANCHOR.test(str)) return false;
- try {
- new RegExp(str);
- return true;
- } catch(e) {
- return false;
- }
-}
-
-},{"./util":10}],5:[function(require,module,exports){
-'use strict';
-
-var resolve = require('./resolve')
- , util = require('./util')
- , errorClasses = require('./error_classes')
- , stableStringify = require('fast-json-stable-stringify');
-
-var validateGenerator = require('../dotjs/validate');
-
-/**
- * Functions below are used inside compiled validations function
- */
-
-var ucs2length = util.ucs2length;
-var equal = require('fast-deep-equal');
-
-// this error is thrown by async schemas to return validation errors via exception
-var ValidationError = errorClasses.Validation;
-
-module.exports = compile;
-
-
-/**
- * Compiles schema to validation function
- * @this Ajv
- * @param {Object} schema schema object
- * @param {Object} root object with information about the root schema for this schema
- * @param {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution
- * @param {String} baseId base ID for IDs in the schema
- * @return {Function} validation function
- */
-function compile(schema, root, localRefs, baseId) {
- /* jshint validthis: true, evil: true */
- /* eslint no-shadow: 0 */
- var self = this
- , opts = this._opts
- , refVal = [ undefined ]
- , refs = {}
- , patterns = []
- , patternsHash = {}
- , defaults = []
- , defaultsHash = {}
- , customRules = [];
-
- root = root || { schema: schema, refVal: refVal, refs: refs };
-
- var c = checkCompiling.call(this, schema, root, baseId);
- var compilation = this._compilations[c.index];
- if (c.compiling) return (compilation.callValidate = callValidate);
-
- var formats = this._formats;
- var RULES = this.RULES;
-
- try {
- var v = localCompile(schema, root, localRefs, baseId);
- compilation.validate = v;
- var cv = compilation.callValidate;
- if (cv) {
- cv.schema = v.schema;
- cv.errors = null;
- cv.refs = v.refs;
- cv.refVal = v.refVal;
- cv.root = v.root;
- cv.$async = v.$async;
- if (opts.sourceCode) cv.source = v.source;
- }
- return v;
- } finally {
- endCompiling.call(this, schema, root, baseId);
- }
-
- /* @this {*} - custom context, see passContext option */
- function callValidate() {
- /* jshint validthis: true */
- var validate = compilation.validate;
- var result = validate.apply(this, arguments);
- callValidate.errors = validate.errors;
- return result;
- }
-
- function localCompile(_schema, _root, localRefs, baseId) {
- var isRoot = !_root || (_root && _root.schema == _schema);
- if (_root.schema != root.schema)
- return compile.call(self, _schema, _root, localRefs, baseId);
-
- var $async = _schema.$async === true;
-
- var sourceCode = validateGenerator({
- isTop: true,
- schema: _schema,
- isRoot: isRoot,
- baseId: baseId,
- root: _root,
- schemaPath: '',
- errSchemaPath: '#',
- errorPath: '""',
- MissingRefError: errorClasses.MissingRef,
- RULES: RULES,
- validate: validateGenerator,
- util: util,
- resolve: resolve,
- resolveRef: resolveRef,
- usePattern: usePattern,
- useDefault: useDefault,
- useCustomRule: useCustomRule,
- opts: opts,
- formats: formats,
- logger: self.logger,
- self: self
- });
-
- sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode)
- + vars(defaults, defaultCode) + vars(customRules, customRuleCode)
- + sourceCode;
-
- if (opts.processCode) sourceCode = opts.processCode(sourceCode);
- // console.log('\n\n\n *** \n', JSON.stringify(sourceCode));
- var validate;
- try {
- var makeValidate = new Function(
- 'self',
- 'RULES',
- 'formats',
- 'root',
- 'refVal',
- 'defaults',
- 'customRules',
- 'equal',
- 'ucs2length',
- 'ValidationError',
- sourceCode
- );
-
- validate = makeValidate(
- self,
- RULES,
- formats,
- root,
- refVal,
- defaults,
- customRules,
- equal,
- ucs2length,
- ValidationError
- );
-
- refVal[0] = validate;
- } catch(e) {
- self.logger.error('Error compiling schema, function code:', sourceCode);
- throw e;
- }
-
- validate.schema = _schema;
- validate.errors = null;
- validate.refs = refs;
- validate.refVal = refVal;
- validate.root = isRoot ? validate : _root;
- if ($async) validate.$async = true;
- if (opts.sourceCode === true) {
- validate.source = {
- code: sourceCode,
- patterns: patterns,
- defaults: defaults
- };
- }
-
- return validate;
- }
-
- function resolveRef(baseId, ref, isRoot) {
- ref = resolve.url(baseId, ref);
- var refIndex = refs[ref];
- var _refVal, refCode;
- if (refIndex !== undefined) {
- _refVal = refVal[refIndex];
- refCode = 'refVal[' + refIndex + ']';
- return resolvedRef(_refVal, refCode);
- }
- if (!isRoot && root.refs) {
- var rootRefId = root.refs[ref];
- if (rootRefId !== undefined) {
- _refVal = root.refVal[rootRefId];
- refCode = addLocalRef(ref, _refVal);
- return resolvedRef(_refVal, refCode);
- }
- }
-
- refCode = addLocalRef(ref);
- var v = resolve.call(self, localCompile, root, ref);
- if (v === undefined) {
- var localSchema = localRefs && localRefs[ref];
- if (localSchema) {
- v = resolve.inlineRef(localSchema, opts.inlineRefs)
- ? localSchema
- : compile.call(self, localSchema, root, localRefs, baseId);
- }
- }
-
- if (v === undefined) {
- removeLocalRef(ref);
- } else {
- replaceLocalRef(ref, v);
- return resolvedRef(v, refCode);
- }
- }
-
- function addLocalRef(ref, v) {
- var refId = refVal.length;
- refVal[refId] = v;
- refs[ref] = refId;
- return 'refVal' + refId;
- }
-
- function removeLocalRef(ref) {
- delete refs[ref];
- }
-
- function replaceLocalRef(ref, v) {
- var refId = refs[ref];
- refVal[refId] = v;
- }
-
- function resolvedRef(refVal, code) {
- return typeof refVal == 'object' || typeof refVal == 'boolean'
- ? { code: code, schema: refVal, inline: true }
- : { code: code, $async: refVal && !!refVal.$async };
- }
-
- function usePattern(regexStr) {
- var index = patternsHash[regexStr];
- if (index === undefined) {
- index = patternsHash[regexStr] = patterns.length;
- patterns[index] = regexStr;
- }
- return 'pattern' + index;
- }
-
- function useDefault(value) {
- switch (typeof value) {
- case 'boolean':
- case 'number':
- return '' + value;
- case 'string':
- return util.toQuotedString(value);
- case 'object':
- if (value === null) return 'null';
- var valueStr = stableStringify(value);
- var index = defaultsHash[valueStr];
- if (index === undefined) {
- index = defaultsHash[valueStr] = defaults.length;
- defaults[index] = value;
- }
- return 'default' + index;
- }
- }
-
- function useCustomRule(rule, schema, parentSchema, it) {
- if (self._opts.validateSchema !== false) {
- var deps = rule.definition.dependencies;
- if (deps && !deps.every(function(keyword) {
- return Object.prototype.hasOwnProperty.call(parentSchema, keyword);
- }))
- throw new Error('parent schema must have all required keywords: ' + deps.join(','));
-
- var validateSchema = rule.definition.validateSchema;
- if (validateSchema) {
- var valid = validateSchema(schema);
- if (!valid) {
- var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);
- if (self._opts.validateSchema == 'log') self.logger.error(message);
- else throw new Error(message);
- }
- }
- }
-
- var compile = rule.definition.compile
- , inline = rule.definition.inline
- , macro = rule.definition.macro;
-
- var validate;
- if (compile) {
- validate = compile.call(self, schema, parentSchema, it);
- } else if (macro) {
- validate = macro.call(self, schema, parentSchema, it);
- if (opts.validateSchema !== false) self.validateSchema(validate, true);
- } else if (inline) {
- validate = inline.call(self, it, rule.keyword, schema, parentSchema);
- } else {
- validate = rule.definition.validate;
- if (!validate) return;
- }
-
- if (validate === undefined)
- throw new Error('custom keyword "' + rule.keyword + '"failed to compile');
-
- var index = customRules.length;
- customRules[index] = validate;
-
- return {
- code: 'customRule' + index,
- validate: validate
- };
- }
-}
-
-
-/**
- * Checks if the schema is currently compiled
- * @this Ajv
- * @param {Object} schema schema to compile
- * @param {Object} root root object
- * @param {String} baseId base schema ID
- * @return {Object} object with properties "index" (compilation index) and "compiling" (boolean)
- */
-function checkCompiling(schema, root, baseId) {
- /* jshint validthis: true */
- var index = compIndex.call(this, schema, root, baseId);
- if (index >= 0) return { index: index, compiling: true };
- index = this._compilations.length;
- this._compilations[index] = {
- schema: schema,
- root: root,
- baseId: baseId
- };
- return { index: index, compiling: false };
-}
-
-
-/**
- * Removes the schema from the currently compiled list
- * @this Ajv
- * @param {Object} schema schema to compile
- * @param {Object} root root object
- * @param {String} baseId base schema ID
- */
-function endCompiling(schema, root, baseId) {
- /* jshint validthis: true */
- var i = compIndex.call(this, schema, root, baseId);
- if (i >= 0) this._compilations.splice(i, 1);
-}
-
-
-/**
- * Index of schema compilation in the currently compiled list
- * @this Ajv
- * @param {Object} schema schema to compile
- * @param {Object} root root object
- * @param {String} baseId base schema ID
- * @return {Integer} compilation index
- */
-function compIndex(schema, root, baseId) {
- /* jshint validthis: true */
- for (var i=0; i<this._compilations.length; i++) {
- var c = this._compilations[i];
- if (c.schema == schema && c.root == root && c.baseId == baseId) return i;
- }
- return -1;
-}
-
-
-function patternCode(i, patterns) {
- return 'var pattern' + i + ' = new RegExp(' + util.toQuotedString(patterns[i]) + ');';
-}
-
-
-function defaultCode(i) {
- return 'var default' + i + ' = defaults[' + i + '];';
-}
-
-
-function refValCode(i, refVal) {
- return refVal[i] === undefined ? '' : 'var refVal' + i + ' = refVal[' + i + '];';
-}
-
-
-function customRuleCode(i) {
- return 'var customRule' + i + ' = customRules[' + i + '];';
-}
-
-
-function vars(arr, statement) {
- if (!arr.length) return '';
- var code = '';
- for (var i=0; i<arr.length; i++)
- code += statement(i, arr);
- return code;
-}
-
-},{"../dotjs/validate":38,"./error_classes":3,"./resolve":6,"./util":10,"fast-deep-equal":42,"fast-json-stable-stringify":43}],6:[function(require,module,exports){
-'use strict';
-
-var URI = require('uri-js')
- , equal = require('fast-deep-equal')
- , util = require('./util')
- , SchemaObject = require('./schema_obj')
- , traverse = require('json-schema-traverse');
-
-module.exports = resolve;
-
-resolve.normalizeId = normalizeId;
-resolve.fullPath = getFullPath;
-resolve.url = resolveUrl;
-resolve.ids = resolveIds;
-resolve.inlineRef = inlineRef;
-resolve.schema = resolveSchema;
-
-/**
- * [resolve and compile the references ($ref)]
- * @this Ajv
- * @param {Function} compile reference to schema compilation funciton (localCompile)
- * @param {Object} root object with information about the root schema for the current schema
- * @param {String} ref reference to resolve
- * @return {Object|Function} schema object (if the schema can be inlined) or validation function
- */
-function resolve(compile, root, ref) {
- /* jshint validthis: true */
- var refVal = this._refs[ref];
- if (typeof refVal == 'string') {
- if (this._refs[refVal]) refVal = this._refs[refVal];
- else return resolve.call(this, compile, root, refVal);
- }
-
- refVal = refVal || this._schemas[ref];
- if (refVal instanceof SchemaObject) {
- return inlineRef(refVal.schema, this._opts.inlineRefs)
- ? refVal.schema
- : refVal.validate || this._compile(refVal);
- }
-
- var res = resolveSchema.call(this, root, ref);
- var schema, v, baseId;
- if (res) {
- schema = res.schema;
- root = res.root;
- baseId = res.baseId;
- }
-
- if (schema instanceof SchemaObject) {
- v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId);
- } else if (schema !== undefined) {
- v = inlineRef(schema, this._opts.inlineRefs)
- ? schema
- : compile.call(this, schema, root, undefined, baseId);
- }
-
- return v;
-}
-
-
-/**
- * Resolve schema, its root and baseId
- * @this Ajv
- * @param {Object} root root object with properties schema, refVal, refs
- * @param {String} ref reference to resolve
- * @return {Object} object with properties schema, root, baseId
- */
-function resolveSchema(root, ref) {
- /* jshint validthis: true */
- var p = URI.parse(ref)
- , refPath = _getFullPath(p)
- , baseId = getFullPath(this._getId(root.schema));
- if (Object.keys(root.schema).length === 0 || refPath !== baseId) {
- var id = normalizeId(refPath);
- var refVal = this._refs[id];
- if (typeof refVal == 'string') {
- return resolveRecursive.call(this, root, refVal, p);
- } else if (refVal instanceof SchemaObject) {
- if (!refVal.validate) this._compile(refVal);
- root = refVal;
- } else {
- refVal = this._schemas[id];
- if (refVal instanceof SchemaObject) {
- if (!refVal.validate) this._compile(refVal);
- if (id == normalizeId(ref))
- return { schema: refVal, root: root, baseId: baseId };
- root = refVal;
- } else {
- return;
- }
- }
- if (!root.schema) return;
- baseId = getFullPath(this._getId(root.schema));
- }
- return getJsonPointer.call(this, p, baseId, root.schema, root);
-}
-
-
-/* @this Ajv */
-function resolveRecursive(root, ref, parsedRef) {
- /* jshint validthis: true */
- var res = resolveSchema.call(this, root, ref);
- if (res) {
- var schema = res.schema;
- var baseId = res.baseId;
- root = res.root;
- var id = this._getId(schema);
- if (id) baseId = resolveUrl(baseId, id);
- return getJsonPointer.call(this, parsedRef, baseId, schema, root);
- }
-}
-
-
-var PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']);
-/* @this Ajv */
-function getJsonPointer(parsedRef, baseId, schema, root) {
- /* jshint validthis: true */
- parsedRef.fragment = parsedRef.fragment || '';
- if (parsedRef.fragment.slice(0,1) != '/') return;
- var parts = parsedRef.fragment.split('/');
-
- for (var i = 1; i < parts.length; i++) {
- var part = parts[i];
- if (part) {
- part = util.unescapeFragment(part);
- schema = schema[part];
- if (schema === undefined) break;
- var id;
- if (!PREVENT_SCOPE_CHANGE[part]) {
- id = this._getId(schema);
- if (id) baseId = resolveUrl(baseId, id);
- if (schema.$ref) {
- var $ref = resolveUrl(baseId, schema.$ref);
- var res = resolveSchema.call(this, root, $ref);
- if (res) {
- schema = res.schema;
- root = res.root;
- baseId = res.baseId;
- }
- }
- }
- }
- }
- if (schema !== undefined && schema !== root.schema)
- return { schema: schema, root: root, baseId: baseId };
-}
-
-
-var SIMPLE_INLINED = util.toHash([
- 'type', 'format', 'pattern',
- 'maxLength', 'minLength',
- 'maxProperties', 'minProperties',
- 'maxItems', 'minItems',
- 'maximum', 'minimum',
- 'uniqueItems', 'multipleOf',
- 'required', 'enum'
-]);
-function inlineRef(schema, limit) {
- if (limit === false) return false;
- if (limit === undefined || limit === true) return checkNoRef(schema);
- else if (limit) return countKeys(schema) <= limit;
-}
-
-
-function checkNoRef(schema) {
- var item;
- if (Array.isArray(schema)) {
- for (var i=0; i<schema.length; i++) {
- item = schema[i];
- if (typeof item == 'object' && !checkNoRef(item)) return false;
- }
- } else {
- for (var key in schema) {
- if (key == '$ref') return false;
- item = schema[key];
- if (typeof item == 'object' && !checkNoRef(item)) return false;
- }
- }
- return true;
-}
-
-
-function countKeys(schema) {
- var count = 0, item;
- if (Array.isArray(schema)) {
- for (var i=0; i<schema.length; i++) {
- item = schema[i];
- if (typeof item == 'object') count += countKeys(item);
- if (count == Infinity) return Infinity;
- }
- } else {
- for (var key in schema) {
- if (key == '$ref') return Infinity;
- if (SIMPLE_INLINED[key]) {
- count++;
- } else {
- item = schema[key];
- if (typeof item == 'object') count += countKeys(item) + 1;
- if (count == Infinity) return Infinity;
- }
- }
- }
- return count;
-}
-
-
-function getFullPath(id, normalize) {
- if (normalize !== false) id = normalizeId(id);
- var p = URI.parse(id);
- return _getFullPath(p);
-}
-
-
-function _getFullPath(p) {
- return URI.serialize(p).split('#')[0] + '#';
-}
-
-
-var TRAILING_SLASH_HASH = /#\/?$/;
-function normalizeId(id) {
- return id ? id.replace(TRAILING_SLASH_HASH, '') : '';
-}
-
-
-function resolveUrl(baseId, id) {
- id = normalizeId(id);
- return URI.resolve(baseId, id);
-}
-
-
-/* @this Ajv */
-function resolveIds(schema) {
- var schemaId = normalizeId(this._getId(schema));
- var baseIds = {'': schemaId};
- var fullPaths = {'': getFullPath(schemaId, false)};
- var localRefs = {};
- var self = this;
-
- traverse(schema, {allKeys: true}, function(sch, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {
- if (jsonPtr === '') return;
- var id = self._getId(sch);
- var baseId = baseIds[parentJsonPtr];
- var fullPath = fullPaths[parentJsonPtr] + '/' + parentKeyword;
- if (keyIndex !== undefined)
- fullPath += '/' + (typeof keyIndex == 'number' ? keyIndex : util.escapeFragment(keyIndex));
-
- if (typeof id == 'string') {
- id = baseId = normalizeId(baseId ? URI.resolve(baseId, id) : id);
-
- var refVal = self._refs[id];
- if (typeof refVal == 'string') refVal = self._refs[refVal];
- if (refVal && refVal.schema) {
- if (!equal(sch, refVal.schema))
- throw new Error('id "' + id + '" resolves to more than one schema');
- } else if (id != normalizeId(fullPath)) {
- if (id[0] == '#') {
- if (localRefs[id] && !equal(sch, localRefs[id]))
- throw new Error('id "' + id + '" resolves to more than one schema');
- localRefs[id] = sch;
- } else {
- self._refs[id] = fullPath;
- }
- }
- }
- baseIds[jsonPtr] = baseId;
- fullPaths[jsonPtr] = fullPath;
- });
-
- return localRefs;
-}
-
-},{"./schema_obj":8,"./util":10,"fast-deep-equal":42,"json-schema-traverse":44,"uri-js":45}],7:[function(require,module,exports){
-'use strict';
-
-var ruleModules = require('../dotjs')
- , toHash = require('./util').toHash;
-
-module.exports = function rules() {
- var RULES = [
- { type: 'number',
- rules: [ { 'maximum': ['exclusiveMaximum'] },
- { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] },
- { type: 'string',
- rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },
- { type: 'array',
- rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] },
- { type: 'object',
- rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames',
- { 'properties': ['additionalProperties', 'patternProperties'] } ] },
- { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] }
- ];
-
- var ALL = [ 'type', '$comment' ];
- var KEYWORDS = [
- '$schema', '$id', 'id', '$data', '$async', 'title',
- 'description', 'default', 'definitions',
- 'examples', 'readOnly', 'writeOnly',
- 'contentMediaType', 'contentEncoding',
- 'additionalItems', 'then', 'else'
- ];
- var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];
- RULES.all = toHash(ALL);
- RULES.types = toHash(TYPES);
-
- RULES.forEach(function (group) {
- group.rules = group.rules.map(function (keyword) {
- var implKeywords;
- if (typeof keyword == 'object') {
- var key = Object.keys(keyword)[0];
- implKeywords = keyword[key];
- keyword = key;
- implKeywords.forEach(function (k) {
- ALL.push(k);
- RULES.all[k] = true;
- });
- }
- ALL.push(keyword);
- var rule = RULES.all[keyword] = {
- keyword: keyword,
- code: ruleModules[keyword],
- implements: implKeywords
- };
- return rule;
- });
-
- RULES.all.$comment = {
- keyword: '$comment',
- code: ruleModules.$comment
- };
-
- if (group.type) RULES.types[group.type] = group;
- });
-
- RULES.keywords = toHash(ALL.concat(KEYWORDS));
- RULES.custom = {};
-
- return RULES;
-};
-
-},{"../dotjs":27,"./util":10}],8:[function(require,module,exports){
-'use strict';
-
-var util = require('./util');
-
-module.exports = SchemaObject;
-
-function SchemaObject(obj) {
- util.copy(obj, this);
-}
-
-},{"./util":10}],9:[function(require,module,exports){
-'use strict';
-
-// https://mathiasbynens.be/notes/javascript-encoding
-// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode
-module.exports = function ucs2length(str) {
- var length = 0
- , len = str.length
- , pos = 0
- , value;
- while (pos < len) {
- length++;
- value = str.charCodeAt(pos++);
- if (value >= 0xD800 && value <= 0xDBFF && pos < len) {
- // high surrogate, and there is a next character
- value = str.charCodeAt(pos);
- if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate
- }
- }
- return length;
-};
-
-},{}],10:[function(require,module,exports){
-'use strict';
-
-
-module.exports = {
- copy: copy,
- checkDataType: checkDataType,
- checkDataTypes: checkDataTypes,
- coerceToTypes: coerceToTypes,
- toHash: toHash,
- getProperty: getProperty,
- escapeQuotes: escapeQuotes,
- equal: require('fast-deep-equal'),
- ucs2length: require('./ucs2length'),
- varOccurences: varOccurences,
- varReplace: varReplace,
- cleanUpCode: cleanUpCode,
- finalCleanUpCode: finalCleanUpCode,
- schemaHasRules: schemaHasRules,
- schemaHasRulesExcept: schemaHasRulesExcept,
- schemaUnknownRules: schemaUnknownRules,
- toQuotedString: toQuotedString,
- getPathExpr: getPathExpr,
- getPath: getPath,
- getData: getData,
- unescapeFragment: unescapeFragment,
- unescapeJsonPointer: unescapeJsonPointer,
- escapeFragment: escapeFragment,
- escapeJsonPointer: escapeJsonPointer
-};
-
-
-function copy(o, to) {
- to = to || {};
- for (var key in o) to[key] = o[key];
- return to;
-}
-
-
-function checkDataType(dataType, data, negate) {
- var EQUAL = negate ? ' !== ' : ' === '
- , AND = negate ? ' || ' : ' && '
- , OK = negate ? '!' : ''
- , NOT = negate ? '' : '!';
- switch (dataType) {
- case 'null': return data + EQUAL + 'null';
- case 'array': return OK + 'Array.isArray(' + data + ')';
- case 'object': return '(' + OK + data + AND +
- 'typeof ' + data + EQUAL + '"object"' + AND +
- NOT + 'Array.isArray(' + data + '))';
- case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND +
- NOT + '(' + data + ' % 1)' +
- AND + data + EQUAL + data + ')';
- default: return 'typeof ' + data + EQUAL + '"' + dataType + '"';
- }
-}
-
-
-function checkDataTypes(dataTypes, data) {
- switch (dataTypes.length) {
- case 1: return checkDataType(dataTypes[0], data, true);
- default:
- var code = '';
- var types = toHash(dataTypes);
- if (types.array && types.object) {
- code = types.null ? '(': '(!' + data + ' || ';
- code += 'typeof ' + data + ' !== "object")';
- delete types.null;
- delete types.array;
- delete types.object;
- }
- if (types.number) delete types.integer;
- for (var t in types)
- code += (code ? ' && ' : '' ) + checkDataType(t, data, true);
-
- return code;
- }
-}
-
-
-var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);
-function coerceToTypes(optionCoerceTypes, dataTypes) {
- if (Array.isArray(dataTypes)) {
- var types = [];
- for (var i=0; i<dataTypes.length; i++) {
- var t = dataTypes[i];
- if (COERCE_TO_TYPES[t]) types[types.length] = t;
- else if (optionCoerceTypes === 'array' && t === 'array') types[types.length] = t;
- }
- if (types.length) return types;
- } else if (COERCE_TO_TYPES[dataTypes]) {
- return [dataTypes];
- } else if (optionCoerceTypes === 'array' && dataTypes === 'array') {
- return ['array'];
- }
-}
-
-
-function toHash(arr) {
- var hash = {};
- for (var i=0; i<arr.length; i++) hash[arr[i]] = true;
- return hash;
-}
-
-
-var IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;
-var SINGLE_QUOTE = /'|\\/g;
-function getProperty(key) {
- return typeof key == 'number'
- ? '[' + key + ']'
- : IDENTIFIER.test(key)
- ? '.' + key
- : "['" + escapeQuotes(key) + "']";
-}
-
-
-function escapeQuotes(str) {
- return str.replace(SINGLE_QUOTE, '\\$&')
- .replace(/\n/g, '\\n')
- .replace(/\r/g, '\\r')
- .replace(/\f/g, '\\f')
- .replace(/\t/g, '\\t');
-}
-
-
-function varOccurences(str, dataVar) {
- dataVar += '[^0-9]';
- var matches = str.match(new RegExp(dataVar, 'g'));
- return matches ? matches.length : 0;
-}
-
-
-function varReplace(str, dataVar, expr) {
- dataVar += '([^0-9])';
- expr = expr.replace(/\$/g, '$$$$');
- return str.replace(new RegExp(dataVar, 'g'), expr + '$1');
-}
-
-
-var EMPTY_ELSE = /else\s*{\s*}/g
- , EMPTY_IF_NO_ELSE = /if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g
- , EMPTY_IF_WITH_ELSE = /if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g;
-function cleanUpCode(out) {
- return out.replace(EMPTY_ELSE, '')
- .replace(EMPTY_IF_NO_ELSE, '')
- .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))');
-}
-
-
-var ERRORS_REGEXP = /[^v.]errors/g
- , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g
- , REMOVE_ERRORS_ASYNC = /var errors = 0;|var vErrors = null;/g
- , RETURN_VALID = 'return errors === 0;'
- , RETURN_TRUE = 'validate.errors = null; return true;'
- , RETURN_ASYNC = /if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/
- , RETURN_DATA_ASYNC = 'return data;'
- , ROOTDATA_REGEXP = /[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g
- , REMOVE_ROOTDATA = /if \(rootData === undefined\) rootData = data;/;
-
-function finalCleanUpCode(out, async) {
- var matches = out.match(ERRORS_REGEXP);
- if (matches && matches.length == 2) {
- out = async
- ? out.replace(REMOVE_ERRORS_ASYNC, '')
- .replace(RETURN_ASYNC, RETURN_DATA_ASYNC)
- : out.replace(REMOVE_ERRORS, '')
- .replace(RETURN_VALID, RETURN_TRUE);
- }
-
- matches = out.match(ROOTDATA_REGEXP);
- if (!matches || matches.length !== 3) return out;
- return out.replace(REMOVE_ROOTDATA, '');
-}
-
-
-function schemaHasRules(schema, rules) {
- if (typeof schema == 'boolean') return !schema;
- for (var key in schema) if (rules[key]) return true;
-}
-
-
-function schemaHasRulesExcept(schema, rules, exceptKeyword) {
- if (typeof schema == 'boolean') return !schema && exceptKeyword != 'not';
- for (var key in schema) if (key != exceptKeyword && rules[key]) return true;
-}
-
-
-function schemaUnknownRules(schema, rules) {
- if (typeof schema == 'boolean') return;
- for (var key in schema) if (!rules[key]) return key;
-}
-
-
-function toQuotedString(str) {
- return '\'' + escapeQuotes(str) + '\'';
-}
-
-
-function getPathExpr(currentPath, expr, jsonPointers, isNumber) {
- var path = jsonPointers // false by default
- ? '\'/\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \'~0\').replace(/\\//g, \'~1\')')
- : (isNumber ? '\'[\' + ' + expr + ' + \']\'' : '\'[\\\'\' + ' + expr + ' + \'\\\']\'');
- return joinPaths(currentPath, path);
-}
-
-
-function getPath(currentPath, prop, jsonPointers) {
- var path = jsonPointers // false by default
- ? toQuotedString('/' + escapeJsonPointer(prop))
- : toQuotedString(getProperty(prop));
- return joinPaths(currentPath, path);
-}
-
-
-var JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/;
-var RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;
-function getData($data, lvl, paths) {
- var up, jsonPointer, data, matches;
- if ($data === '') return 'rootData';
- if ($data[0] == '/') {
- if (!JSON_POINTER.test($data)) throw new Error('Invalid JSON-pointer: ' + $data);
- jsonPointer = $data;
- data = 'rootData';
- } else {
- matches = $data.match(RELATIVE_JSON_POINTER);
- if (!matches) throw new Error('Invalid JSON-pointer: ' + $data);
- up = +matches[1];
- jsonPointer = matches[2];
- if (jsonPointer == '#') {
- if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);
- return paths[lvl - up];
- }
-
- if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);
- data = 'data' + ((lvl - up) || '');
- if (!jsonPointer) return data;
- }
-
- var expr = data;
- var segments = jsonPointer.split('/');
- for (var i=0; i<segments.length; i++) {
- var segment = segments[i];
- if (segment) {
- data += getProperty(unescapeJsonPointer(segment));
- expr += ' && ' + data;
- }
- }
- return expr;
-}
-
-
-function joinPaths (a, b) {
- if (a == '""') return b;
- return (a + ' + ' + b).replace(/' \+ '/g, '');
-}
-
-
-function unescapeFragment(str) {
- return unescapeJsonPointer(decodeURIComponent(str));
-}
-
-
-function escapeFragment(str) {
- return encodeURIComponent(escapeJsonPointer(str));
-}
-
-
-function escapeJsonPointer(str) {
- return str.replace(/~/g, '~0').replace(/\//g, '~1');
-}
-
-
-function unescapeJsonPointer(str) {
- return str.replace(/~1/g, '/').replace(/~0/g, '~');
-}
-
-},{"./ucs2length":9,"fast-deep-equal":42}],11:[function(require,module,exports){
-'use strict';
-
-var KEYWORDS = [
- 'multipleOf',
- 'maximum',
- 'exclusiveMaximum',
- 'minimum',
- 'exclusiveMinimum',
- 'maxLength',
- 'minLength',
- 'pattern',
- 'additionalItems',
- 'maxItems',
- 'minItems',
- 'uniqueItems',
- 'maxProperties',
- 'minProperties',
- 'required',
- 'additionalProperties',
- 'enum',
- 'format',
- 'const'
-];
-
-module.exports = function (metaSchema, keywordsJsonPointers) {
- for (var i=0; i<keywordsJsonPointers.length; i++) {
- metaSchema = JSON.parse(JSON.stringify(metaSchema));
- var segments = keywordsJsonPointers[i].split('/');
- var keywords = metaSchema;
- var j;
- for (j=1; j<segments.length; j++)
- keywords = keywords[segments[j]];
-
- for (j=0; j<KEYWORDS.length; j++) {
- var key = KEYWORDS[j];
- var schema = keywords[key];
- if (schema) {
- keywords[key] = {
- anyOf: [
- schema,
- { $ref: 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' }
- ]
- };
- }
- }
- }
-
- return metaSchema;
-};
-
-},{}],12:[function(require,module,exports){
-'use strict';
-
-var metaSchema = require('./refs/json-schema-draft-07.json');
-
-module.exports = {
- $id: 'https://github.com/epoberezkin/ajv/blob/master/lib/definition_schema.js',
- definitions: {
- simpleTypes: metaSchema.definitions.simpleTypes
- },
- type: 'object',
- dependencies: {
- schema: ['validate'],
- $data: ['validate'],
- statements: ['inline'],
- valid: {not: {required: ['macro']}}
- },
- properties: {
- type: metaSchema.properties.type,
- schema: {type: 'boolean'},
- statements: {type: 'boolean'},
- dependencies: {
- type: 'array',
- items: {type: 'string'}
- },
- metaSchema: {type: 'object'},
- modifying: {type: 'boolean'},
- valid: {type: 'boolean'},
- $data: {type: 'boolean'},
- async: {type: 'boolean'},
- errors: {
- anyOf: [
- {type: 'boolean'},
- {const: 'full'}
- ]
- }
- }
-};
-
-},{"./refs/json-schema-draft-07.json":41}],13:[function(require,module,exports){
-'use strict';
-module.exports = function generate__limit(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
- var $data = 'data' + ($dataLvl || '');
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $isMax = $keyword == 'maximum',
- $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum',
- $schemaExcl = it.schema[$exclusiveKeyword],
- $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data,
- $op = $isMax ? '<' : '>',
- $notOp = $isMax ? '>' : '<',
- $errorKeyword = undefined;
- if ($isDataExcl) {
- var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),
- $exclusive = 'exclusive' + $lvl,
- $exclType = 'exclType' + $lvl,
- $exclIsNumber = 'exclIsNumber' + $lvl,
- $opExpr = 'op' + $lvl,
- $opStr = '\' + ' + $opExpr + ' + \'';
- out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';
- $schemaValueExcl = 'schemaExcl' + $lvl;
- out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \'boolean\' && ' + ($exclType) + ' != \'undefined\' && ' + ($exclType) + ' != \'number\') { ';
- var $errorKeyword = $exclusiveKeyword;
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
- if (it.opts.messages !== false) {
- out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } else if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
- }
- out += ' ' + ($exclType) + ' == \'number\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\'; ';
- if ($schema === undefined) {
- $errorKeyword = $exclusiveKeyword;
- $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
- $schemaValue = $schemaValueExcl;
- $isData = $isDataExcl;
- }
- } else {
- var $exclIsNumber = typeof $schemaExcl == 'number',
- $opStr = $op;
- if ($exclIsNumber && $isData) {
- var $opExpr = '\'' + $opStr + '\'';
- out += ' if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
- }
- out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { ';
- } else {
- if ($exclIsNumber && $schema === undefined) {
- $exclusive = true;
- $errorKeyword = $exclusiveKeyword;
- $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
- $schemaValue = $schemaExcl;
- $notOp += '=';
- } else {
- if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);
- if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {
- $exclusive = true;
- $errorKeyword = $exclusiveKeyword;
- $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
- $notOp += '=';
- } else {
- $exclusive = false;
- $opStr += '=';
- }
- }
- var $opExpr = '\'' + $opStr + '\'';
- out += ' if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
- }
- out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { ';
- }
- }
- $errorKeyword = $errorKeyword || $keyword;
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should be ' + ($opStr) + ' ';
- if ($isData) {
- out += '\' + ' + ($schemaValue);
- } else {
- out += '' + ($schemaValue) + '\'';
- }
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + ($schema);
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
-
-},{}],14:[function(require,module,exports){
-'use strict';
-module.exports = function generate__limitItems(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
- var $data = 'data' + ($dataLvl || '');
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $op = $keyword == 'maxItems' ? '>' : '<';
- out += 'if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
- }
- out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';
- var $errorKeyword = $keyword;
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should NOT have ';
- if ($keyword == 'maxItems') {
- out += 'more';
- } else {
- out += 'fewer';
- }
- out += ' than ';
- if ($isData) {
- out += '\' + ' + ($schemaValue) + ' + \'';
- } else {
- out += '' + ($schema);
- }
- out += ' items\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + ($schema);
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += '} ';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
-
-},{}],15:[function(require,module,exports){
-'use strict';
-module.exports = function generate__limitLength(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
- var $data = 'data' + ($dataLvl || '');
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $op = $keyword == 'maxLength' ? '>' : '<';
- out += 'if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
- }
- if (it.opts.unicode === false) {
- out += ' ' + ($data) + '.length ';
- } else {
- out += ' ucs2length(' + ($data) + ') ';
- }
- out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';
- var $errorKeyword = $keyword;
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should NOT be ';
- if ($keyword == 'maxLength') {
- out += 'longer';
- } else {
- out += 'shorter';
- }
- out += ' than ';
- if ($isData) {
- out += '\' + ' + ($schemaValue) + ' + \'';
- } else {
- out += '' + ($schema);
- }
- out += ' characters\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + ($schema);
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += '} ';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
-
-},{}],16:[function(require,module,exports){
-'use strict';
-module.exports = function generate__limitProperties(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
- var $data = 'data' + ($dataLvl || '');
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $op = $keyword == 'maxProperties' ? '>' : '<';
- out += 'if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
- }
- out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';
- var $errorKeyword = $keyword;
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should NOT have ';
- if ($keyword == 'maxProperties') {
- out += 'more';
- } else {
- out += 'fewer';
- }
- out += ' than ';
- if ($isData) {
- out += '\' + ' + ($schemaValue) + ' + \'';
- } else {
- out += '' + ($schema);
- }
- out += ' properties\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + ($schema);
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += '} ';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
-
-},{}],17:[function(require,module,exports){
-'use strict';
-module.exports = function generate_allOf(it, $keyword, $ruleType) {
- var out = ' ';
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $currentBaseId = $it.baseId,
- $allSchemasEmpty = true;
- var arr1 = $schema;
- if (arr1) {
- var $sch, $i = -1,
- l1 = arr1.length - 1;
- while ($i < l1) {
- $sch = arr1[$i += 1];
- if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {
- $allSchemasEmpty = false;
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + '[' + $i + ']';
- $it.errSchemaPath = $errSchemaPath + '/' + $i;
- out += ' ' + (it.validate($it)) + ' ';
- $it.baseId = $currentBaseId;
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- $closingBraces += '}';
- }
- }
- }
- }
- if ($breakOnError) {
- if ($allSchemasEmpty) {
- out += ' if (true) { ';
- } else {
- out += ' ' + ($closingBraces.slice(0, -1)) + ' ';
- }
- }
- out = it.util.cleanUpCode(out);
- return out;
-}
-
-},{}],18:[function(require,module,exports){
-'use strict';
-module.exports = function generate_anyOf(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $noEmptySchema = $schema.every(function($sch) {
- return (it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all));
- });
- if ($noEmptySchema) {
- var $currentBaseId = $it.baseId;
- out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; ';
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- var arr1 = $schema;
- if (arr1) {
- var $sch, $i = -1,
- l1 = arr1.length - 1;
- while ($i < l1) {
- $sch = arr1[$i += 1];
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + '[' + $i + ']';
- $it.errSchemaPath = $errSchemaPath + '/' + $i;
- out += ' ' + (it.validate($it)) + ' ';
- $it.baseId = $currentBaseId;
- out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { ';
- $closingBraces += '}';
- }
- }
- it.compositeRule = $it.compositeRule = $wasComposite;
- out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should match some schema in anyOf\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError(vErrors); ';
- } else {
- out += ' validate.errors = vErrors; return false; ';
- }
- }
- out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';
- if (it.opts.allErrors) {
- out += ' } ';
- }
- out = it.util.cleanUpCode(out);
- } else {
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- }
- return out;
-}
-
-},{}],19:[function(require,module,exports){
-'use strict';
-module.exports = function generate_comment(it, $keyword, $ruleType) {
- var out = ' ';
- var $schema = it.schema[$keyword];
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $comment = it.util.toQuotedString($schema);
- if (it.opts.$comment === true) {
- out += ' console.log(' + ($comment) + ');';
- } else if (typeof it.opts.$comment == 'function') {
- out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);';
- }
- return out;
-}
-
-},{}],20:[function(require,module,exports){
-'use strict';
-module.exports = function generate_const(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- if (!$isData) {
- out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';
- }
- out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('const') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should be equal to constant\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' }';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
-
-},{}],21:[function(require,module,exports){
-'use strict';
-module.exports = function generate_contains(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $idx = 'i' + $lvl,
- $dataNxt = $it.dataLevel = it.dataLevel + 1,
- $nextData = 'data' + $dataNxt,
- $currentBaseId = it.baseId,
- $nonEmptySchema = (it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all));
- out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';
- if ($nonEmptySchema) {
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- $it.schema = $schema;
- $it.schemaPath = $schemaPath;
- $it.errSchemaPath = $errSchemaPath;
- out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';
- $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);
- var $passData = $data + '[' + $idx + ']';
- $it.dataPathArr[$dataNxt] = $idx;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- out += ' if (' + ($nextValid) + ') break; } ';
- it.compositeRule = $it.compositeRule = $wasComposite;
- out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {';
- } else {
- out += ' if (' + ($data) + '.length == 0) {';
- }
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('contains') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should contain a valid item\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } else { ';
- if ($nonEmptySchema) {
- out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';
- }
- if (it.opts.allErrors) {
- out += ' } ';
- }
- out = it.util.cleanUpCode(out);
- return out;
-}
-
-},{}],22:[function(require,module,exports){
-'use strict';
-module.exports = function generate_custom(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $errs = 'errs__' + $lvl;
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $rule = this,
- $definition = 'definition' + $lvl,
- $rDef = $rule.definition,
- $closingBraces = '';
- var $compile, $inline, $macro, $ruleValidate, $validateCode;
- if ($isData && $rDef.$data) {
- $validateCode = 'keywordValidate' + $lvl;
- var $validateSchema = $rDef.validateSchema;
- out += ' var ' + ($definition) + ' = RULES.custom[\'' + ($keyword) + '\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;';
- } else {
- $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);
- if (!$ruleValidate) return;
- $schemaValue = 'validate.schema' + $schemaPath;
- $validateCode = $ruleValidate.code;
- $compile = $rDef.compile;
- $inline = $rDef.inline;
- $macro = $rDef.macro;
- }
- var $ruleErrs = $validateCode + '.errors',
- $i = 'i' + $lvl,
- $ruleErr = 'ruleErr' + $lvl,
- $asyncKeyword = $rDef.async;
- if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema');
- if (!($inline || $macro)) {
- out += '' + ($ruleErrs) + ' = null;';
- }
- out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';
- if ($isData && $rDef.$data) {
- $closingBraces += '}';
- out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { ';
- if ($validateSchema) {
- $closingBraces += '}';
- out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { ';
- }
- }
- if ($inline) {
- if ($rDef.statements) {
- out += ' ' + ($ruleValidate.validate) + ' ';
- } else {
- out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; ';
- }
- } else if ($macro) {
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- $it.schema = $ruleValidate.validate;
- $it.schemaPath = '';
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- var $code = it.validate($it).replace(/validate\.schema/g, $validateCode);
- it.compositeRule = $it.compositeRule = $wasComposite;
- out += ' ' + ($code);
- } else {
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = '';
- out += ' ' + ($validateCode) + '.call( ';
- if (it.opts.passContext) {
- out += 'this';
- } else {
- out += 'self';
- }
- if ($compile || $rDef.schema === false) {
- out += ' , ' + ($data) + ' ';
- } else {
- out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' ';
- }
- out += ' , (dataPath || \'\')';
- if (it.errorPath != '""') {
- out += ' + ' + (it.errorPath);
- }
- var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',
- $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
- out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData ) ';
- var def_callRuleValidate = out;
- out = $$outStack.pop();
- if ($rDef.errors === false) {
- out += ' ' + ($valid) + ' = ';
- if ($asyncKeyword) {
- out += 'await ';
- }
- out += '' + (def_callRuleValidate) + '; ';
- } else {
- if ($asyncKeyword) {
- $ruleErrs = 'customErrors' + $lvl;
- out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } ';
- } else {
- out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; ';
- }
- }
- }
- if ($rDef.modifying) {
- out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];';
- }
- out += '' + ($closingBraces);
- if ($rDef.valid) {
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- } else {
- out += ' if ( ';
- if ($rDef.valid === undefined) {
- out += ' !';
- if ($macro) {
- out += '' + ($nextValid);
- } else {
- out += '' + ($valid);
- }
- } else {
- out += ' ' + (!$rDef.valid) + ' ';
- }
- out += ') { ';
- $errorKeyword = $rule.keyword;
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = '';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \'' + ($rule.keyword) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- var def_customError = out;
- out = $$outStack.pop();
- if ($inline) {
- if ($rDef.errors) {
- if ($rDef.errors != 'full') {
- out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \'\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = "' + ($errSchemaPath) + '"; } ';
- if (it.opts.verbose) {
- out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';
- }
- out += ' } ';
- }
- } else {
- if ($rDef.errors === false) {
- out += ' ' + (def_customError) + ' ';
- } else {
- out += ' if (' + ($errs) + ' == errors) { ' + (def_customError) + ' } else { for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \'\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = "' + ($errSchemaPath) + '"; } ';
- if (it.opts.verbose) {
- out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';
- }
- out += ' } } ';
- }
- }
- } else if ($macro) {
- out += ' var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \'' + ($rule.keyword) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError(vErrors); ';
- } else {
- out += ' validate.errors = vErrors; return false; ';
- }
- }
- } else {
- if ($rDef.errors === false) {
- out += ' ' + (def_customError) + ' ';
- } else {
- out += ' if (Array.isArray(' + ($ruleErrs) + ')) { if (vErrors === null) vErrors = ' + ($ruleErrs) + '; else vErrors = vErrors.concat(' + ($ruleErrs) + '); errors = vErrors.length; for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \'\') + ' + (it.errorPath) + '; ' + ($ruleErr) + '.schemaPath = "' + ($errSchemaPath) + '"; ';
- if (it.opts.verbose) {
- out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';
- }
- out += ' } } else { ' + (def_customError) + ' } ';
- }
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' else { ';
- }
- }
- return out;
-}
-
-},{}],23:[function(require,module,exports){
-'use strict';
-module.exports = function generate_dependencies(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $schemaDeps = {},
- $propertyDeps = {},
- $ownProperties = it.opts.ownProperties;
- for ($property in $schema) {
- var $sch = $schema[$property];
- var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;
- $deps[$property] = $sch;
- }
- out += 'var ' + ($errs) + ' = errors;';
- var $currentErrorPath = it.errorPath;
- out += 'var missing' + ($lvl) + ';';
- for (var $property in $propertyDeps) {
- $deps = $propertyDeps[$property];
- if ($deps.length) {
- out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';
- if ($ownProperties) {
- out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') ';
- }
- if ($breakOnError) {
- out += ' && ( ';
- var arr1 = $deps;
- if (arr1) {
- var $propertyKey, $i = -1,
- l1 = arr1.length - 1;
- while ($i < l1) {
- $propertyKey = arr1[$i += 1];
- if ($i) {
- out += ' || ';
- }
- var $prop = it.util.getProperty($propertyKey),
- $useData = $data + $prop;
- out += ' ( ( ' + ($useData) + ' === undefined ';
- if ($ownProperties) {
- out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
- }
- out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';
- }
- }
- out += ')) { ';
- var $propertyPath = 'missing' + $lvl,
- $missingProperty = '\' + ' + $propertyPath + ' + \'';
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;
- }
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should have ';
- if ($deps.length == 1) {
- out += 'property ' + (it.util.escapeQuotes($deps[0]));
- } else {
- out += 'properties ' + (it.util.escapeQuotes($deps.join(", ")));
- }
- out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- } else {
- out += ' ) { ';
- var arr2 = $deps;
- if (arr2) {
- var $propertyKey, i2 = -1,
- l2 = arr2.length - 1;
- while (i2 < l2) {
- $propertyKey = arr2[i2 += 1];
- var $prop = it.util.getProperty($propertyKey),
- $missingProperty = it.util.escapeQuotes($propertyKey),
- $useData = $data + $prop;
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
- }
- out += ' if ( ' + ($useData) + ' === undefined ';
- if ($ownProperties) {
- out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
- }
- out += ') { var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should have ';
- if ($deps.length == 1) {
- out += 'property ' + (it.util.escapeQuotes($deps[0]));
- } else {
- out += 'properties ' + (it.util.escapeQuotes($deps.join(", ")));
- }
- out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';
- }
- }
- }
- out += ' } ';
- if ($breakOnError) {
- $closingBraces += '}';
- out += ' else { ';
- }
- }
- }
- it.errorPath = $currentErrorPath;
- var $currentBaseId = $it.baseId;
- for (var $property in $schemaDeps) {
- var $sch = $schemaDeps[$property];
- if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {
- out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';
- if ($ownProperties) {
- out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') ';
- }
- out += ') { ';
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + it.util.getProperty($property);
- $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);
- out += ' ' + (it.validate($it)) + ' ';
- $it.baseId = $currentBaseId;
- out += ' } ';
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- $closingBraces += '}';
- }
- }
- }
- if ($breakOnError) {
- out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
- }
- out = it.util.cleanUpCode(out);
- return out;
-}
-
-},{}],24:[function(require,module,exports){
-'use strict';
-module.exports = function generate_enum(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $i = 'i' + $lvl,
- $vSchema = 'schema' + $lvl;
- if (!$isData) {
- out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';';
- }
- out += 'var ' + ($valid) + ';';
- if ($isData) {
- out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';
- }
- out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }';
- if ($isData) {
- out += ' } ';
- }
- out += ' if (!' + ($valid) + ') { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('enum') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should be equal to one of the allowed values\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' }';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
-
-},{}],25:[function(require,module,exports){
-'use strict';
-module.exports = function generate_format(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- if (it.opts.format === false) {
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- return out;
- }
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $unknownFormats = it.opts.unknownFormats,
- $allowUnknown = Array.isArray($unknownFormats);
- if ($isData) {
- var $format = 'format' + $lvl,
- $isObject = 'isObject' + $lvl,
- $formatType = 'formatType' + $lvl;
- out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \'object\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \'string\'; if (' + ($isObject) + ') { ';
- if (it.async) {
- out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; ';
- }
- out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || ';
- }
- out += ' (';
- if ($unknownFormats != 'ignore') {
- out += ' (' + ($schemaValue) + ' && !' + ($format) + ' ';
- if ($allowUnknown) {
- out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 ';
- }
- out += ') || ';
- }
- out += ' (' + ($format) + ' && ' + ($formatType) + ' == \'' + ($ruleType) + '\' && !(typeof ' + ($format) + ' == \'function\' ? ';
- if (it.async) {
- out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) ';
- } else {
- out += ' ' + ($format) + '(' + ($data) + ') ';
- }
- out += ' : ' + ($format) + '.test(' + ($data) + '))))) {';
- } else {
- var $format = it.formats[$schema];
- if (!$format) {
- if ($unknownFormats == 'ignore') {
- it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"');
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- return out;
- } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) {
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- return out;
- } else {
- throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"');
- }
- }
- var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate;
- var $formatType = $isObject && $format.type || 'string';
- if ($isObject) {
- var $async = $format.async === true;
- $format = $format.validate;
- }
- if ($formatType != $ruleType) {
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- return out;
- }
- if ($async) {
- if (!it.async) throw new Error('async format in sync schema');
- var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';
- out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { ';
- } else {
- out += ' if (! ';
- var $formatRef = 'formats' + it.util.getProperty($schema);
- if ($isObject) $formatRef += '.validate';
- if (typeof $format == 'function') {
- out += ' ' + ($formatRef) + '(' + ($data) + ') ';
- } else {
- out += ' ' + ($formatRef) + '.test(' + ($data) + ') ';
- }
- out += ') { ';
- }
- }
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('format') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: ';
- if ($isData) {
- out += '' + ($schemaValue);
- } else {
- out += '' + (it.util.toQuotedString($schema));
- }
- out += ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should match format "';
- if ($isData) {
- out += '\' + ' + ($schemaValue) + ' + \'';
- } else {
- out += '' + (it.util.escapeQuotes($schema));
- }
- out += '"\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + (it.util.toQuotedString($schema));
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
-
-},{}],26:[function(require,module,exports){
-'use strict';
-module.exports = function generate_if(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $thenSch = it.schema['then'],
- $elseSch = it.schema['else'],
- $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? typeof $thenSch == 'object' && Object.keys($thenSch).length > 0 : it.util.schemaHasRules($thenSch, it.RULES.all)),
- $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? typeof $elseSch == 'object' && Object.keys($elseSch).length > 0 : it.util.schemaHasRules($elseSch, it.RULES.all)),
- $currentBaseId = $it.baseId;
- if ($thenPresent || $elsePresent) {
- var $ifClause;
- $it.createErrors = false;
- $it.schema = $schema;
- $it.schemaPath = $schemaPath;
- $it.errSchemaPath = $errSchemaPath;
- out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; ';
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- out += ' ' + (it.validate($it)) + ' ';
- $it.baseId = $currentBaseId;
- $it.createErrors = true;
- out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';
- it.compositeRule = $it.compositeRule = $wasComposite;
- if ($thenPresent) {
- out += ' if (' + ($nextValid) + ') { ';
- $it.schema = it.schema['then'];
- $it.schemaPath = it.schemaPath + '.then';
- $it.errSchemaPath = it.errSchemaPath + '/then';
- out += ' ' + (it.validate($it)) + ' ';
- $it.baseId = $currentBaseId;
- out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';
- if ($thenPresent && $elsePresent) {
- $ifClause = 'ifClause' + $lvl;
- out += ' var ' + ($ifClause) + ' = \'then\'; ';
- } else {
- $ifClause = '\'then\'';
- }
- out += ' } ';
- if ($elsePresent) {
- out += ' else { ';
- }
- } else {
- out += ' if (!' + ($nextValid) + ') { ';
- }
- if ($elsePresent) {
- $it.schema = it.schema['else'];
- $it.schemaPath = it.schemaPath + '.else';
- $it.errSchemaPath = it.errSchemaPath + '/else';
- out += ' ' + (it.validate($it)) + ' ';
- $it.baseId = $currentBaseId;
- out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';
- if ($thenPresent && $elsePresent) {
- $ifClause = 'ifClause' + $lvl;
- out += ' var ' + ($ifClause) + ' = \'else\'; ';
- } else {
- $ifClause = '\'else\'';
- }
- out += ' } ';
- }
- out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('if') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should match "\' + ' + ($ifClause) + ' + \'" schema\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError(vErrors); ';
- } else {
- out += ' validate.errors = vErrors; return false; ';
- }
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' else { ';
- }
- out = it.util.cleanUpCode(out);
- } else {
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- }
- return out;
-}
-
-},{}],27:[function(require,module,exports){
-'use strict';
-
-//all requires must be explicit because browserify won't work with dynamic requires
-module.exports = {
- '$ref': require('./ref'),
- allOf: require('./allOf'),
- anyOf: require('./anyOf'),
- '$comment': require('./comment'),
- const: require('./const'),
- contains: require('./contains'),
- dependencies: require('./dependencies'),
- 'enum': require('./enum'),
- format: require('./format'),
- 'if': require('./if'),
- items: require('./items'),
- maximum: require('./_limit'),
- minimum: require('./_limit'),
- maxItems: require('./_limitItems'),
- minItems: require('./_limitItems'),
- maxLength: require('./_limitLength'),
- minLength: require('./_limitLength'),
- maxProperties: require('./_limitProperties'),
- minProperties: require('./_limitProperties'),
- multipleOf: require('./multipleOf'),
- not: require('./not'),
- oneOf: require('./oneOf'),
- pattern: require('./pattern'),
- properties: require('./properties'),
- propertyNames: require('./propertyNames'),
- required: require('./required'),
- uniqueItems: require('./uniqueItems'),
- validate: require('./validate')
-};
-
-},{"./_limit":13,"./_limitItems":14,"./_limitLength":15,"./_limitProperties":16,"./allOf":17,"./anyOf":18,"./comment":19,"./const":20,"./contains":21,"./dependencies":23,"./enum":24,"./format":25,"./if":26,"./items":28,"./multipleOf":29,"./not":30,"./oneOf":31,"./pattern":32,"./properties":33,"./propertyNames":34,"./ref":35,"./required":36,"./uniqueItems":37,"./validate":38}],28:[function(require,module,exports){
-'use strict';
-module.exports = function generate_items(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $idx = 'i' + $lvl,
- $dataNxt = $it.dataLevel = it.dataLevel + 1,
- $nextData = 'data' + $dataNxt,
- $currentBaseId = it.baseId;
- out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';
- if (Array.isArray($schema)) {
- var $additionalItems = it.schema.additionalItems;
- if ($additionalItems === false) {
- out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; ';
- var $currErrSchemaPath = $errSchemaPath;
- $errSchemaPath = it.errSchemaPath + '/additionalItems';
- out += ' if (!' + ($valid) + ') { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('additionalItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should NOT have more than ' + ($schema.length) + ' items\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } ';
- $errSchemaPath = $currErrSchemaPath;
- if ($breakOnError) {
- $closingBraces += '}';
- out += ' else { ';
- }
- }
- var arr1 = $schema;
- if (arr1) {
- var $sch, $i = -1,
- l1 = arr1.length - 1;
- while ($i < l1) {
- $sch = arr1[$i += 1];
- if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {
- out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';
- var $passData = $data + '[' + $i + ']';
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + '[' + $i + ']';
- $it.errSchemaPath = $errSchemaPath + '/' + $i;
- $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);
- $it.dataPathArr[$dataNxt] = $i;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- $closingBraces += '}';
- }
- }
- }
- }
- if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0 : it.util.schemaHasRules($additionalItems, it.RULES.all))) {
- $it.schema = $additionalItems;
- $it.schemaPath = it.schemaPath + '.additionalItems';
- $it.errSchemaPath = it.errSchemaPath + '/additionalItems';
- out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';
- $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);
- var $passData = $data + '[' + $idx + ']';
- $it.dataPathArr[$dataNxt] = $idx;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- if ($breakOnError) {
- out += ' if (!' + ($nextValid) + ') break; ';
- }
- out += ' } } ';
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- $closingBraces += '}';
- }
- }
- } else if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) {
- $it.schema = $schema;
- $it.schemaPath = $schemaPath;
- $it.errSchemaPath = $errSchemaPath;
- out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';
- $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);
- var $passData = $data + '[' + $idx + ']';
- $it.dataPathArr[$dataNxt] = $idx;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- if ($breakOnError) {
- out += ' if (!' + ($nextValid) + ') break; ';
- }
- out += ' }';
- }
- if ($breakOnError) {
- out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
- }
- out = it.util.cleanUpCode(out);
- return out;
-}
-
-},{}],29:[function(require,module,exports){
-'use strict';
-module.exports = function generate_multipleOf(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- out += 'var division' + ($lvl) + ';if (';
- if ($isData) {
- out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || ';
- }
- out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';
- if (it.opts.multipleOfPrecision) {
- out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';
- } else {
- out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';
- }
- out += ' ) ';
- if ($isData) {
- out += ' ) ';
- }
- out += ' ) { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should be multiple of ';
- if ($isData) {
- out += '\' + ' + ($schemaValue);
- } else {
- out += '' + ($schemaValue) + '\'';
- }
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + ($schema);
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += '} ';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
-
-},{}],30:[function(require,module,exports){
-'use strict';
-module.exports = function generate_not(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) {
- $it.schema = $schema;
- $it.schemaPath = $schemaPath;
- $it.errSchemaPath = $errSchemaPath;
- out += ' var ' + ($errs) + ' = errors; ';
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- $it.createErrors = false;
- var $allErrorsOption;
- if ($it.opts.allErrors) {
- $allErrorsOption = $it.opts.allErrors;
- $it.opts.allErrors = false;
- }
- out += ' ' + (it.validate($it)) + ' ';
- $it.createErrors = true;
- if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;
- it.compositeRule = $it.compositeRule = $wasComposite;
- out += ' if (' + ($nextValid) + ') { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should NOT be valid\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';
- if (it.opts.allErrors) {
- out += ' } ';
- }
- } else {
- out += ' var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should NOT be valid\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- if ($breakOnError) {
- out += ' if (false) { ';
- }
- }
- return out;
-}
-
-},{}],31:[function(require,module,exports){
-'use strict';
-module.exports = function generate_oneOf(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $currentBaseId = $it.baseId,
- $prevValid = 'prevValid' + $lvl,
- $passingSchemas = 'passingSchemas' + $lvl;
- out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; ';
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- var arr1 = $schema;
- if (arr1) {
- var $sch, $i = -1,
- l1 = arr1.length - 1;
- while ($i < l1) {
- $sch = arr1[$i += 1];
- if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + '[' + $i + ']';
- $it.errSchemaPath = $errSchemaPath + '/' + $i;
- out += ' ' + (it.validate($it)) + ' ';
- $it.baseId = $currentBaseId;
- } else {
- out += ' var ' + ($nextValid) + ' = true; ';
- }
- if ($i) {
- out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { ';
- $closingBraces += '}';
- }
- out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }';
- }
- }
- it.compositeRule = $it.compositeRule = $wasComposite;
- out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should match exactly one schema in oneOf\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError(vErrors); ';
- } else {
- out += ' validate.errors = vErrors; return false; ';
- }
- }
- out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';
- if (it.opts.allErrors) {
- out += ' } ';
- }
- return out;
-}
-
-},{}],32:[function(require,module,exports){
-'use strict';
-module.exports = function generate_pattern(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);
- out += 'if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || ';
- }
- out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: ';
- if ($isData) {
- out += '' + ($schemaValue);
- } else {
- out += '' + (it.util.toQuotedString($schema));
- }
- out += ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should match pattern "';
- if ($isData) {
- out += '\' + ' + ($schemaValue) + ' + \'';
- } else {
- out += '' + (it.util.escapeQuotes($schema));
- }
- out += '"\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + (it.util.toQuotedString($schema));
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += '} ';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
-
-},{}],33:[function(require,module,exports){
-'use strict';
-module.exports = function generate_properties(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $key = 'key' + $lvl,
- $idx = 'idx' + $lvl,
- $dataNxt = $it.dataLevel = it.dataLevel + 1,
- $nextData = 'data' + $dataNxt,
- $dataProperties = 'dataProperties' + $lvl;
- var $schemaKeys = Object.keys($schema || {}),
- $pProperties = it.schema.patternProperties || {},
- $pPropertyKeys = Object.keys($pProperties),
- $aProperties = it.schema.additionalProperties,
- $someProperties = $schemaKeys.length || $pPropertyKeys.length,
- $noAdditional = $aProperties === false,
- $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,
- $removeAdditional = it.opts.removeAdditional,
- $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,
- $ownProperties = it.opts.ownProperties,
- $currentBaseId = it.baseId;
- var $required = it.schema.required;
- if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required);
- out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';
- if ($ownProperties) {
- out += ' var ' + ($dataProperties) + ' = undefined;';
- }
- if ($checkAdditional) {
- if ($ownProperties) {
- out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';
- } else {
- out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';
- }
- if ($someProperties) {
- out += ' var isAdditional' + ($lvl) + ' = !(false ';
- if ($schemaKeys.length) {
- if ($schemaKeys.length > 8) {
- out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') ';
- } else {
- var arr1 = $schemaKeys;
- if (arr1) {
- var $propertyKey, i1 = -1,
- l1 = arr1.length - 1;
- while (i1 < l1) {
- $propertyKey = arr1[i1 += 1];
- out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';
- }
- }
- }
- }
- if ($pPropertyKeys.length) {
- var arr2 = $pPropertyKeys;
- if (arr2) {
- var $pProperty, $i = -1,
- l2 = arr2.length - 1;
- while ($i < l2) {
- $pProperty = arr2[$i += 1];
- out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';
- }
- }
- }
- out += ' ); if (isAdditional' + ($lvl) + ') { ';
- }
- if ($removeAdditional == 'all') {
- out += ' delete ' + ($data) + '[' + ($key) + ']; ';
- } else {
- var $currentErrorPath = it.errorPath;
- var $additionalProperty = '\' + ' + $key + ' + \'';
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
- }
- if ($noAdditional) {
- if ($removeAdditional) {
- out += ' delete ' + ($data) + '[' + ($key) + ']; ';
- } else {
- out += ' ' + ($nextValid) + ' = false; ';
- var $currErrSchemaPath = $errSchemaPath;
- $errSchemaPath = it.errSchemaPath + '/additionalProperties';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \'' + ($additionalProperty) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'';
- if (it.opts._errorDataPathProperty) {
- out += 'is an invalid additional property';
- } else {
- out += 'should NOT have additional properties';
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- $errSchemaPath = $currErrSchemaPath;
- if ($breakOnError) {
- out += ' break; ';
- }
- }
- } else if ($additionalIsSchema) {
- if ($removeAdditional == 'failing') {
- out += ' var ' + ($errs) + ' = errors; ';
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- $it.schema = $aProperties;
- $it.schemaPath = it.schemaPath + '.additionalProperties';
- $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';
- $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
- var $passData = $data + '[' + $key + ']';
- $it.dataPathArr[$dataNxt] = $key;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } ';
- it.compositeRule = $it.compositeRule = $wasComposite;
- } else {
- $it.schema = $aProperties;
- $it.schemaPath = it.schemaPath + '.additionalProperties';
- $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';
- $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
- var $passData = $data + '[' + $key + ']';
- $it.dataPathArr[$dataNxt] = $key;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- if ($breakOnError) {
- out += ' if (!' + ($nextValid) + ') break; ';
- }
- }
- }
- it.errorPath = $currentErrorPath;
- }
- if ($someProperties) {
- out += ' } ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- $closingBraces += '}';
- }
- }
- var $useDefaults = it.opts.useDefaults && !it.compositeRule;
- if ($schemaKeys.length) {
- var arr3 = $schemaKeys;
- if (arr3) {
- var $propertyKey, i3 = -1,
- l3 = arr3.length - 1;
- while (i3 < l3) {
- $propertyKey = arr3[i3 += 1];
- var $sch = $schema[$propertyKey];
- if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {
- var $prop = it.util.getProperty($propertyKey),
- $passData = $data + $prop,
- $hasDefault = $useDefaults && $sch.default !== undefined;
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + $prop;
- $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);
- $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);
- $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- $code = it.util.varReplace($code, $nextData, $passData);
- var $useData = $passData;
- } else {
- var $useData = $nextData;
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';
- }
- if ($hasDefault) {
- out += ' ' + ($code) + ' ';
- } else {
- if ($requiredHash && $requiredHash[$propertyKey]) {
- out += ' if ( ' + ($useData) + ' === undefined ';
- if ($ownProperties) {
- out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
- }
- out += ') { ' + ($nextValid) + ' = false; ';
- var $currentErrorPath = it.errorPath,
- $currErrSchemaPath = $errSchemaPath,
- $missingProperty = it.util.escapeQuotes($propertyKey);
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
- }
- $errSchemaPath = it.errSchemaPath + '/required';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'';
- if (it.opts._errorDataPathProperty) {
- out += 'is a required property';
- } else {
- out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- $errSchemaPath = $currErrSchemaPath;
- it.errorPath = $currentErrorPath;
- out += ' } else { ';
- } else {
- if ($breakOnError) {
- out += ' if ( ' + ($useData) + ' === undefined ';
- if ($ownProperties) {
- out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
- }
- out += ') { ' + ($nextValid) + ' = true; } else { ';
- } else {
- out += ' if (' + ($useData) + ' !== undefined ';
- if ($ownProperties) {
- out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
- }
- out += ' ) { ';
- }
- }
- out += ' ' + ($code) + ' } ';
- }
- }
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- $closingBraces += '}';
- }
- }
- }
- }
- if ($pPropertyKeys.length) {
- var arr4 = $pPropertyKeys;
- if (arr4) {
- var $pProperty, i4 = -1,
- l4 = arr4.length - 1;
- while (i4 < l4) {
- $pProperty = arr4[i4 += 1];
- var $sch = $pProperties[$pProperty];
- if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {
- $it.schema = $sch;
- $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);
- $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);
- if ($ownProperties) {
- out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';
- } else {
- out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';
- }
- out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';
- $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
- var $passData = $data + '[' + $key + ']';
- $it.dataPathArr[$dataNxt] = $key;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- if ($breakOnError) {
- out += ' if (!' + ($nextValid) + ') break; ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' else ' + ($nextValid) + ' = true; ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- $closingBraces += '}';
- }
- }
- }
- }
- }
- if ($breakOnError) {
- out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
- }
- out = it.util.cleanUpCode(out);
- return out;
-}
-
-},{}],34:[function(require,module,exports){
-'use strict';
-module.exports = function generate_propertyNames(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- out += 'var ' + ($errs) + ' = errors;';
- if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) {
- $it.schema = $schema;
- $it.schemaPath = $schemaPath;
- $it.errSchemaPath = $errSchemaPath;
- var $key = 'key' + $lvl,
- $idx = 'idx' + $lvl,
- $i = 'i' + $lvl,
- $invalidName = '\' + ' + $key + ' + \'',
- $dataNxt = $it.dataLevel = it.dataLevel + 1,
- $nextData = 'data' + $dataNxt,
- $dataProperties = 'dataProperties' + $lvl,
- $ownProperties = it.opts.ownProperties,
- $currentBaseId = it.baseId;
- if ($ownProperties) {
- out += ' var ' + ($dataProperties) + ' = undefined; ';
- }
- if ($ownProperties) {
- out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';
- } else {
- out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';
- }
- out += ' var startErrs' + ($lvl) + ' = errors; ';
- var $passData = $key;
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- it.compositeRule = $it.compositeRule = $wasComposite;
- out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + '<errors; ' + ($i) + '++) { vErrors[' + ($i) + '].propertyName = ' + ($key) + '; } var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('propertyNames') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { propertyName: \'' + ($invalidName) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'property name \\\'' + ($invalidName) + '\\\' is invalid\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError(vErrors); ';
- } else {
- out += ' validate.errors = vErrors; return false; ';
- }
- }
- if ($breakOnError) {
- out += ' break; ';
- }
- out += ' } }';
- }
- if ($breakOnError) {
- out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
- }
- out = it.util.cleanUpCode(out);
- return out;
-}
-
-},{}],35:[function(require,module,exports){
-'use strict';
-module.exports = function generate_ref(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $async, $refCode;
- if ($schema == '#' || $schema == '#/') {
- if (it.isRoot) {
- $async = it.async;
- $refCode = 'validate';
- } else {
- $async = it.root.schema.$async === true;
- $refCode = 'root.refVal[0]';
- }
- } else {
- var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot);
- if ($refVal === undefined) {
- var $message = it.MissingRefError.message(it.baseId, $schema);
- if (it.opts.missingRefs == 'fail') {
- it.logger.error($message);
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- if ($breakOnError) {
- out += ' if (false) { ';
- }
- } else if (it.opts.missingRefs == 'ignore') {
- it.logger.warn($message);
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- } else {
- throw new it.MissingRefError(it.baseId, $schema, $message);
- }
- } else if ($refVal.inline) {
- var $it = it.util.copy(it);
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- $it.schema = $refVal.schema;
- $it.schemaPath = '';
- $it.errSchemaPath = $schema;
- var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code);
- out += ' ' + ($code) + ' ';
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- }
- } else {
- $async = $refVal.$async === true || (it.async && $refVal.$async !== false);
- $refCode = $refVal.code;
- }
- }
- if ($refCode) {
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = '';
- if (it.opts.passContext) {
- out += ' ' + ($refCode) + '.call(this, ';
- } else {
- out += ' ' + ($refCode) + '( ';
- }
- out += ' ' + ($data) + ', (dataPath || \'\')';
- if (it.errorPath != '""') {
- out += ' + ' + (it.errorPath);
- }
- var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',
- $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
- out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData) ';
- var __callValidate = out;
- out = $$outStack.pop();
- if ($async) {
- if (!it.async) throw new Error('async schema referenced by sync schema');
- if ($breakOnError) {
- out += ' var ' + ($valid) + '; ';
- }
- out += ' try { await ' + (__callValidate) + '; ';
- if ($breakOnError) {
- out += ' ' + ($valid) + ' = true; ';
- }
- out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ';
- if ($breakOnError) {
- out += ' ' + ($valid) + ' = false; ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' if (' + ($valid) + ') { ';
- }
- } else {
- out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } ';
- if ($breakOnError) {
- out += ' else { ';
- }
- }
- }
- return out;
-}
-
-},{}],36:[function(require,module,exports){
-'use strict';
-module.exports = function generate_required(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $vSchema = 'schema' + $lvl;
- if (!$isData) {
- if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) {
- var $required = [];
- var arr1 = $schema;
- if (arr1) {
- var $property, i1 = -1,
- l1 = arr1.length - 1;
- while (i1 < l1) {
- $property = arr1[i1 += 1];
- var $propertySch = it.schema.properties[$property];
- if (!($propertySch && (it.opts.strictKeywords ? typeof $propertySch == 'object' && Object.keys($propertySch).length > 0 : it.util.schemaHasRules($propertySch, it.RULES.all)))) {
- $required[$required.length] = $property;
- }
- }
- }
- } else {
- var $required = $schema;
- }
- }
- if ($isData || $required.length) {
- var $currentErrorPath = it.errorPath,
- $loopRequired = $isData || $required.length >= it.opts.loopRequired,
- $ownProperties = it.opts.ownProperties;
- if ($breakOnError) {
- out += ' var missing' + ($lvl) + '; ';
- if ($loopRequired) {
- if (!$isData) {
- out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';
- }
- var $i = 'i' + $lvl,
- $propertyPath = 'schema' + $lvl + '[' + $i + ']',
- $missingProperty = '\' + ' + $propertyPath + ' + \'';
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);
- }
- out += ' var ' + ($valid) + ' = true; ';
- if ($isData) {
- out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';
- }
- out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';
- if ($ownProperties) {
- out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';
- }
- out += '; if (!' + ($valid) + ') break; } ';
- if ($isData) {
- out += ' } ';
- }
- out += ' if (!' + ($valid) + ') { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'';
- if (it.opts._errorDataPathProperty) {
- out += 'is a required property';
- } else {
- out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } else { ';
- } else {
- out += ' if ( ';
- var arr2 = $required;
- if (arr2) {
- var $propertyKey, $i = -1,
- l2 = arr2.length - 1;
- while ($i < l2) {
- $propertyKey = arr2[$i += 1];
- if ($i) {
- out += ' || ';
- }
- var $prop = it.util.getProperty($propertyKey),
- $useData = $data + $prop;
- out += ' ( ( ' + ($useData) + ' === undefined ';
- if ($ownProperties) {
- out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
- }
- out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';
- }
- }
- out += ') { ';
- var $propertyPath = 'missing' + $lvl,
- $missingProperty = '\' + ' + $propertyPath + ' + \'';
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;
- }
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'';
- if (it.opts._errorDataPathProperty) {
- out += 'is a required property';
- } else {
- out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } else { ';
- }
- } else {
- if ($loopRequired) {
- if (!$isData) {
- out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';
- }
- var $i = 'i' + $lvl,
- $propertyPath = 'schema' + $lvl + '[' + $i + ']',
- $missingProperty = '\' + ' + $propertyPath + ' + \'';
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);
- }
- if ($isData) {
- out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'';
- if (it.opts._errorDataPathProperty) {
- out += 'is a required property';
- } else {
- out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';
- }
- out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';
- if ($ownProperties) {
- out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';
- }
- out += ') { var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'';
- if (it.opts._errorDataPathProperty) {
- out += 'is a required property';
- } else {
- out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';
- if ($isData) {
- out += ' } ';
- }
- } else {
- var arr3 = $required;
- if (arr3) {
- var $propertyKey, i3 = -1,
- l3 = arr3.length - 1;
- while (i3 < l3) {
- $propertyKey = arr3[i3 += 1];
- var $prop = it.util.getProperty($propertyKey),
- $missingProperty = it.util.escapeQuotes($propertyKey),
- $useData = $data + $prop;
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
- }
- out += ' if ( ' + ($useData) + ' === undefined ';
- if ($ownProperties) {
- out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
- }
- out += ') { var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'';
- if (it.opts._errorDataPathProperty) {
- out += 'is a required property';
- } else {
- out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';
- }
- }
- }
- }
- it.errorPath = $currentErrorPath;
- } else if ($breakOnError) {
- out += ' if (true) {';
- }
- return out;
-}
-
-},{}],37:[function(require,module,exports){
-'use strict';
-module.exports = function generate_uniqueItems(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- if (($schema || $isData) && it.opts.uniqueItems !== false) {
- if ($isData) {
- out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { ';
- }
- out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { ';
- var $itemType = it.schema.items && it.schema.items.type,
- $typeIsArray = Array.isArray($itemType);
- if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) {
- out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } ';
- } else {
- out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; ';
- var $method = 'checkDataType' + ($typeIsArray ? 's' : '');
- out += ' if (' + (it.util[$method]($itemType, 'item', true)) + ') continue; ';
- if ($typeIsArray) {
- out += ' if (typeof item == \'string\') item = \'"\' + item; ';
- }
- out += ' if (typeof itemIndices[item] == \'number\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ';
- }
- out += ' } ';
- if ($isData) {
- out += ' } ';
- }
- out += ' if (!' + ($valid) + ') { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + ($schema);
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' else { ';
- }
- } else {
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- }
- return out;
-}
-
-},{}],38:[function(require,module,exports){
-'use strict';
-module.exports = function generate_validate(it, $keyword, $ruleType) {
- var out = '';
- var $async = it.schema.$async === true,
- $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'),
- $id = it.self._getId(it.schema);
- if (it.opts.strictKeywords) {
- var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords);
- if ($unknownKwd) {
- var $keywordsMsg = 'unknown keyword: ' + $unknownKwd;
- if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg);
- else throw new Error($keywordsMsg);
- }
- }
- if (it.isTop) {
- out += ' var validate = ';
- if ($async) {
- it.async = true;
- out += 'async ';
- }
- out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \'use strict\'; ';
- if ($id && (it.opts.sourceCode || it.opts.processCode)) {
- out += ' ' + ('/\*# sourceURL=' + $id + ' */') + ' ';
- }
- }
- if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) {
- var $keyword = 'false schema';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- if (it.schema === false) {
- if (it.isTop) {
- $breakOnError = true;
- } else {
- out += ' var ' + ($valid) + ' = false; ';
- }
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || 'false schema') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
- if (it.opts.messages !== false) {
- out += ' , message: \'boolean schema is false\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- } else {
- if (it.isTop) {
- if ($async) {
- out += ' return data; ';
- } else {
- out += ' validate.errors = null; return true; ';
- }
- } else {
- out += ' var ' + ($valid) + ' = true; ';
- }
- }
- if (it.isTop) {
- out += ' }; return validate; ';
- }
- return out;
- }
- if (it.isTop) {
- var $top = it.isTop,
- $lvl = it.level = 0,
- $dataLvl = it.dataLevel = 0,
- $data = 'data';
- it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema));
- it.baseId = it.baseId || it.rootId;
- delete it.isTop;
- it.dataPathArr = [undefined];
- if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) {
- var $defaultMsg = 'default is ignored in the schema root';
- if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);
- else throw new Error($defaultMsg);
- }
- out += ' var vErrors = null; ';
- out += ' var errors = 0; ';
- out += ' if (rootData === undefined) rootData = data; ';
- } else {
- var $lvl = it.level,
- $dataLvl = it.dataLevel,
- $data = 'data' + ($dataLvl || '');
- if ($id) it.baseId = it.resolve.url(it.baseId, $id);
- if ($async && !it.async) throw new Error('async schema in sync schema');
- out += ' var errs_' + ($lvl) + ' = errors;';
- }
- var $valid = 'valid' + $lvl,
- $breakOnError = !it.opts.allErrors,
- $closingBraces1 = '',
- $closingBraces2 = '';
- var $errorKeyword;
- var $typeSchema = it.schema.type,
- $typeIsArray = Array.isArray($typeSchema);
- if ($typeSchema && it.opts.nullable && it.schema.nullable === true) {
- if ($typeIsArray) {
- if ($typeSchema.indexOf('null') == -1) $typeSchema = $typeSchema.concat('null');
- } else if ($typeSchema != 'null') {
- $typeSchema = [$typeSchema, 'null'];
- $typeIsArray = true;
- }
- }
- if ($typeIsArray && $typeSchema.length == 1) {
- $typeSchema = $typeSchema[0];
- $typeIsArray = false;
- }
- if (it.schema.$ref && $refKeywords) {
- if (it.opts.extendRefs == 'fail') {
- throw new Error('$ref: validation keywords used in schema at path "' + it.errSchemaPath + '" (see option extendRefs)');
- } else if (it.opts.extendRefs !== true) {
- $refKeywords = false;
- it.logger.warn('$ref: keywords ignored in schema at path "' + it.errSchemaPath + '"');
- }
- }
- if (it.schema.$comment && it.opts.$comment) {
- out += ' ' + (it.RULES.all.$comment.code(it, '$comment'));
- }
- if ($typeSchema) {
- if (it.opts.coerceTypes) {
- var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema);
- }
- var $rulesGroup = it.RULES.types[$typeSchema];
- if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) {
- var $schemaPath = it.schemaPath + '.type',
- $errSchemaPath = it.errSchemaPath + '/type';
- var $schemaPath = it.schemaPath + '.type',
- $errSchemaPath = it.errSchemaPath + '/type',
- $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType';
- out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { ';
- if ($coerceToTypes) {
- var $dataType = 'dataType' + $lvl,
- $coerced = 'coerced' + $lvl;
- out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; ';
- if (it.opts.coerceTypes == 'array') {
- out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ')) ' + ($dataType) + ' = \'array\'; ';
- }
- out += ' var ' + ($coerced) + ' = undefined; ';
- var $bracesCoercion = '';
- var arr1 = $coerceToTypes;
- if (arr1) {
- var $type, $i = -1,
- l1 = arr1.length - 1;
- while ($i < l1) {
- $type = arr1[$i += 1];
- if ($i) {
- out += ' if (' + ($coerced) + ' === undefined) { ';
- $bracesCoercion += '}';
- }
- if (it.opts.coerceTypes == 'array' && $type != 'array') {
- out += ' if (' + ($dataType) + ' == \'array\' && ' + ($data) + '.length == 1) { ' + ($coerced) + ' = ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; } ';
- }
- if ($type == 'string') {
- out += ' if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; ';
- } else if ($type == 'number' || $type == 'integer') {
- out += ' if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' ';
- if ($type == 'integer') {
- out += ' && !(' + ($data) + ' % 1)';
- }
- out += ')) ' + ($coerced) + ' = +' + ($data) + '; ';
- } else if ($type == 'boolean') {
- out += ' if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; ';
- } else if ($type == 'null') {
- out += ' if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; ';
- } else if (it.opts.coerceTypes == 'array' && $type == 'array') {
- out += ' if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; ';
- }
- }
- }
- out += ' ' + ($bracesCoercion) + ' if (' + ($coerced) + ' === undefined) { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \'';
- if ($typeIsArray) {
- out += '' + ($typeSchema.join(","));
- } else {
- out += '' + ($typeSchema);
- }
- out += '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should be ';
- if ($typeIsArray) {
- out += '' + ($typeSchema.join(","));
- } else {
- out += '' + ($typeSchema);
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } else { ';
- var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',
- $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
- out += ' ' + ($data) + ' = ' + ($coerced) + '; ';
- if (!$dataLvl) {
- out += 'if (' + ($parentData) + ' !== undefined)';
- }
- out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } ';
- } else {
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \'';
- if ($typeIsArray) {
- out += '' + ($typeSchema.join(","));
- } else {
- out += '' + ($typeSchema);
- }
- out += '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should be ';
- if ($typeIsArray) {
- out += '' + ($typeSchema.join(","));
- } else {
- out += '' + ($typeSchema);
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- }
- out += ' } ';
- }
- }
- if (it.schema.$ref && !$refKeywords) {
- out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' ';
- if ($breakOnError) {
- out += ' } if (errors === ';
- if ($top) {
- out += '0';
- } else {
- out += 'errs_' + ($lvl);
- }
- out += ') { ';
- $closingBraces2 += '}';
- }
- } else {
- var arr2 = it.RULES;
- if (arr2) {
- var $rulesGroup, i2 = -1,
- l2 = arr2.length - 1;
- while (i2 < l2) {
- $rulesGroup = arr2[i2 += 1];
- if ($shouldUseGroup($rulesGroup)) {
- if ($rulesGroup.type) {
- out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { ';
- }
- if (it.opts.useDefaults) {
- if ($rulesGroup.type == 'object' && it.schema.properties) {
- var $schema = it.schema.properties,
- $schemaKeys = Object.keys($schema);
- var arr3 = $schemaKeys;
- if (arr3) {
- var $propertyKey, i3 = -1,
- l3 = arr3.length - 1;
- while (i3 < l3) {
- $propertyKey = arr3[i3 += 1];
- var $sch = $schema[$propertyKey];
- if ($sch.default !== undefined) {
- var $passData = $data + it.util.getProperty($propertyKey);
- if (it.compositeRule) {
- if (it.opts.strictDefaults) {
- var $defaultMsg = 'default is ignored for: ' + $passData;
- if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);
- else throw new Error($defaultMsg);
- }
- } else {
- out += ' if (' + ($passData) + ' === undefined ';
- if (it.opts.useDefaults == 'empty') {
- out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \'\' ';
- }
- out += ' ) ' + ($passData) + ' = ';
- if (it.opts.useDefaults == 'shared') {
- out += ' ' + (it.useDefault($sch.default)) + ' ';
- } else {
- out += ' ' + (JSON.stringify($sch.default)) + ' ';
- }
- out += '; ';
- }
- }
- }
- }
- } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) {
- var arr4 = it.schema.items;
- if (arr4) {
- var $sch, $i = -1,
- l4 = arr4.length - 1;
- while ($i < l4) {
- $sch = arr4[$i += 1];
- if ($sch.default !== undefined) {
- var $passData = $data + '[' + $i + ']';
- if (it.compositeRule) {
- if (it.opts.strictDefaults) {
- var $defaultMsg = 'default is ignored for: ' + $passData;
- if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);
- else throw new Error($defaultMsg);
- }
- } else {
- out += ' if (' + ($passData) + ' === undefined ';
- if (it.opts.useDefaults == 'empty') {
- out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \'\' ';
- }
- out += ' ) ' + ($passData) + ' = ';
- if (it.opts.useDefaults == 'shared') {
- out += ' ' + (it.useDefault($sch.default)) + ' ';
- } else {
- out += ' ' + (JSON.stringify($sch.default)) + ' ';
- }
- out += '; ';
- }
- }
- }
- }
- }
- }
- var arr5 = $rulesGroup.rules;
- if (arr5) {
- var $rule, i5 = -1,
- l5 = arr5.length - 1;
- while (i5 < l5) {
- $rule = arr5[i5 += 1];
- if ($shouldUseRule($rule)) {
- var $code = $rule.code(it, $rule.keyword, $rulesGroup.type);
- if ($code) {
- out += ' ' + ($code) + ' ';
- if ($breakOnError) {
- $closingBraces1 += '}';
- }
- }
- }
- }
- }
- if ($breakOnError) {
- out += ' ' + ($closingBraces1) + ' ';
- $closingBraces1 = '';
- }
- if ($rulesGroup.type) {
- out += ' } ';
- if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) {
- out += ' else { ';
- var $schemaPath = it.schemaPath + '.type',
- $errSchemaPath = it.errSchemaPath + '/type';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \'';
- if ($typeIsArray) {
- out += '' + ($typeSchema.join(","));
- } else {
- out += '' + ($typeSchema);
- }
- out += '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should be ';
- if ($typeIsArray) {
- out += '' + ($typeSchema.join(","));
- } else {
- out += '' + ($typeSchema);
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } ';
- }
- }
- if ($breakOnError) {
- out += ' if (errors === ';
- if ($top) {
- out += '0';
- } else {
- out += 'errs_' + ($lvl);
- }
- out += ') { ';
- $closingBraces2 += '}';
- }
- }
- }
- }
- }
- if ($breakOnError) {
- out += ' ' + ($closingBraces2) + ' ';
- }
- if ($top) {
- if ($async) {
- out += ' if (errors === 0) return data; ';
- out += ' else throw new ValidationError(vErrors); ';
- } else {
- out += ' validate.errors = vErrors; ';
- out += ' return errors === 0; ';
- }
- out += ' }; return validate;';
- } else {
- out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';';
- }
- out = it.util.cleanUpCode(out);
- if ($top) {
- out = it.util.finalCleanUpCode(out, $async);
- }
-
- function $shouldUseGroup($rulesGroup) {
- var rules = $rulesGroup.rules;
- for (var i = 0; i < rules.length; i++)
- if ($shouldUseRule(rules[i])) return true;
- }
-
- function $shouldUseRule($rule) {
- return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule));
- }
-
- function $ruleImplementsSomeKeyword($rule) {
- var impl = $rule.implements;
- for (var i = 0; i < impl.length; i++)
- if (it.schema[impl[i]] !== undefined) return true;
- }
- return out;
-}
-
-},{}],39:[function(require,module,exports){
-'use strict';
-
-var IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i;
-var customRuleCode = require('./dotjs/custom');
-var definitionSchema = require('./definition_schema');
-
-module.exports = {
- add: addKeyword,
- get: getKeyword,
- remove: removeKeyword,
- validate: validateKeyword
-};
-
-
-/**
- * Define custom keyword
- * @this Ajv
- * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords).
- * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.
- * @return {Ajv} this for method chaining
- */
-function addKeyword(keyword, definition) {
- /* jshint validthis: true */
- /* eslint no-shadow: 0 */
- var RULES = this.RULES;
- if (RULES.keywords[keyword])
- throw new Error('Keyword ' + keyword + ' is already defined');
-
- if (!IDENTIFIER.test(keyword))
- throw new Error('Keyword ' + keyword + ' is not a valid identifier');
-
- if (definition) {
- this.validateKeyword(definition, true);
-
- var dataType = definition.type;
- if (Array.isArray(dataType)) {
- for (var i=0; i<dataType.length; i++)
- _addRule(keyword, dataType[i], definition);
- } else {
- _addRule(keyword, dataType, definition);
- }
-
- var metaSchema = definition.metaSchema;
- if (metaSchema) {
- if (definition.$data && this._opts.$data) {
- metaSchema = {
- anyOf: [
- metaSchema,
- { '$ref': 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' }
- ]
- };
- }
- definition.validateSchema = this.compile(metaSchema, true);
- }
- }
-
- RULES.keywords[keyword] = RULES.all[keyword] = true;
-
-
- function _addRule(keyword, dataType, definition) {
- var ruleGroup;
- for (var i=0; i<RULES.length; i++) {
- var rg = RULES[i];
- if (rg.type == dataType) {
- ruleGroup = rg;
- break;
- }
- }
-
- if (!ruleGroup) {
- ruleGroup = { type: dataType, rules: [] };
- RULES.push(ruleGroup);
- }
-
- var rule = {
- keyword: keyword,
- definition: definition,
- custom: true,
- code: customRuleCode,
- implements: definition.implements
- };
- ruleGroup.rules.push(rule);
- RULES.custom[keyword] = rule;
- }
-
- return this;
-}
-
-
-/**
- * Get keyword
- * @this Ajv
- * @param {String} keyword pre-defined or custom keyword.
- * @return {Object|Boolean} custom keyword definition, `true` if it is a predefined keyword, `false` otherwise.
- */
-function getKeyword(keyword) {
- /* jshint validthis: true */
- var rule = this.RULES.custom[keyword];
- return rule ? rule.definition : this.RULES.keywords[keyword] || false;
-}
-
-
-/**
- * Remove keyword
- * @this Ajv
- * @param {String} keyword pre-defined or custom keyword.
- * @return {Ajv} this for method chaining
- */
-function removeKeyword(keyword) {
- /* jshint validthis: true */
- var RULES = this.RULES;
- delete RULES.keywords[keyword];
- delete RULES.all[keyword];
- delete RULES.custom[keyword];
- for (var i=0; i<RULES.length; i++) {
- var rules = RULES[i].rules;
- for (var j=0; j<rules.length; j++) {
- if (rules[j].keyword == keyword) {
- rules.splice(j, 1);
- break;
- }
- }
- }
- return this;
-}
-
-
-/**
- * Validate keyword definition
- * @this Ajv
- * @param {Object} definition keyword definition object.
- * @param {Boolean} throwError true to throw exception if definition is invalid
- * @return {boolean} validation result
- */
-function validateKeyword(definition, throwError) {
- validateKeyword.errors = null;
- var v = this._validateKeyword = this._validateKeyword
- || this.compile(definitionSchema, true);
-
- if (v(definition)) return true;
- validateKeyword.errors = v.errors;
- if (throwError)
- throw new Error('custom keyword definition is invalid: ' + this.errorsText(v.errors));
- else
- return false;
-}
-
-},{"./definition_schema":12,"./dotjs/custom":22}],40:[function(require,module,exports){
-module.exports={
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#",
- "description": "Meta-schema for $data reference (JSON Schema extension proposal)",
- "type": "object",
- "required": [ "$data" ],
- "properties": {
- "$data": {
- "type": "string",
- "anyOf": [
- { "format": "relative-json-pointer" },
- { "format": "json-pointer" }
- ]
- }
- },
- "additionalProperties": false
-}
-
-},{}],41:[function(require,module,exports){
-module.exports={
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "http://json-schema.org/draft-07/schema#",
- "title": "Core schema meta-schema",
- "definitions": {
- "schemaArray": {
- "type": "array",
- "minItems": 1,
- "items": { "$ref": "#" }
- },
- "nonNegativeInteger": {
- "type": "integer",
- "minimum": 0
- },
- "nonNegativeIntegerDefault0": {
- "allOf": [
- { "$ref": "#/definitions/nonNegativeInteger" },
- { "default": 0 }
- ]
- },
- "simpleTypes": {
- "enum": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ]
- },
- "stringArray": {
- "type": "array",
- "items": { "type": "string" },
- "uniqueItems": true,
- "default": []
- }
- },
- "type": ["object", "boolean"],
- "properties": {
- "$id": {
- "type": "string",
- "format": "uri-reference"
- },
- "$schema": {
- "type": "string",
- "format": "uri"
- },
- "$ref": {
- "type": "string",
- "format": "uri-reference"
- },
- "$comment": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "description": {
- "type": "string"
- },
- "default": true,
- "readOnly": {
- "type": "boolean",
- "default": false
- },
- "examples": {
- "type": "array",
- "items": true
- },
- "multipleOf": {
- "type": "number",
- "exclusiveMinimum": 0
- },
- "maximum": {
- "type": "number"
- },
- "exclusiveMaximum": {
- "type": "number"
- },
- "minimum": {
- "type": "number"
- },
- "exclusiveMinimum": {
- "type": "number"
- },
- "maxLength": { "$ref": "#/definitions/nonNegativeInteger" },
- "minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
- "pattern": {
- "type": "string",
- "format": "regex"
- },
- "additionalItems": { "$ref": "#" },
- "items": {
- "anyOf": [
- { "$ref": "#" },
- { "$ref": "#/definitions/schemaArray" }
- ],
- "default": true
- },
- "maxItems": { "$ref": "#/definitions/nonNegativeInteger" },
- "minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
- "uniqueItems": {
- "type": "boolean",
- "default": false
- },
- "contains": { "$ref": "#" },
- "maxProperties": { "$ref": "#/definitions/nonNegativeInteger" },
- "minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
- "required": { "$ref": "#/definitions/stringArray" },
- "additionalProperties": { "$ref": "#" },
- "definitions": {
- "type": "object",
- "additionalProperties": { "$ref": "#" },
- "default": {}
- },
- "properties": {
- "type": "object",
- "additionalProperties": { "$ref": "#" },
- "default": {}
- },
- "patternProperties": {
- "type": "object",
- "additionalProperties": { "$ref": "#" },
- "propertyNames": { "format": "regex" },
- "default": {}
- },
- "dependencies": {
- "type": "object",
- "additionalProperties": {
- "anyOf": [
- { "$ref": "#" },
- { "$ref": "#/definitions/stringArray" }
- ]
- }
- },
- "propertyNames": { "$ref": "#" },
- "const": true,
- "enum": {
- "type": "array",
- "items": true,
- "minItems": 1,
- "uniqueItems": true
- },
- "type": {
- "anyOf": [
- { "$ref": "#/definitions/simpleTypes" },
- {
- "type": "array",
- "items": { "$ref": "#/definitions/simpleTypes" },
- "minItems": 1,
- "uniqueItems": true
- }
- ]
- },
- "format": { "type": "string" },
- "contentMediaType": { "type": "string" },
- "contentEncoding": { "type": "string" },
- "if": {"$ref": "#"},
- "then": {"$ref": "#"},
- "else": {"$ref": "#"},
- "allOf": { "$ref": "#/definitions/schemaArray" },
- "anyOf": { "$ref": "#/definitions/schemaArray" },
- "oneOf": { "$ref": "#/definitions/schemaArray" },
- "not": { "$ref": "#" }
- },
- "default": true
-}
-
-},{}],42:[function(require,module,exports){
-'use strict';
-
-// do not edit .js files directly - edit src/index.jst
-
-
-
-module.exports = function equal(a, b) {
- if (a === b) return true;
-
- if (a && b && typeof a == 'object' && typeof b == 'object') {
- if (a.constructor !== b.constructor) return false;
-
- var length, i, keys;
- if (Array.isArray(a)) {
- length = a.length;
- if (length != b.length) return false;
- for (i = length; i-- !== 0;)
- if (!equal(a[i], b[i])) return false;
- return true;
- }
-
-
-
- if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
- if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
- if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
-
- keys = Object.keys(a);
- length = keys.length;
- if (length !== Object.keys(b).length) return false;
-
- for (i = length; i-- !== 0;)
- if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
-
- for (i = length; i-- !== 0;) {
- var key = keys[i];
-
- if (!equal(a[key], b[key])) return false;
- }
-
- return true;
- }
-
- // true if both NaN, false otherwise
- return a!==a && b!==b;
-};
-
-},{}],43:[function(require,module,exports){
-'use strict';
-
-module.exports = function (data, opts) {
- if (!opts) opts = {};
- if (typeof opts === 'function') opts = { cmp: opts };
- var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;
-
- var cmp = opts.cmp && (function (f) {
- return function (node) {
- return function (a, b) {
- var aobj = { key: a, value: node[a] };
- var bobj = { key: b, value: node[b] };
- return f(aobj, bobj);
- };
- };
- })(opts.cmp);
-
- var seen = [];
- return (function stringify (node) {
- if (node && node.toJSON && typeof node.toJSON === 'function') {
- node = node.toJSON();
- }
-
- if (node === undefined) return;
- if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';
- if (typeof node !== 'object') return JSON.stringify(node);
-
- var i, out;
- if (Array.isArray(node)) {
- out = '[';
- for (i = 0; i < node.length; i++) {
- if (i) out += ',';
- out += stringify(node[i]) || 'null';
- }
- return out + ']';
- }
-
- if (node === null) return 'null';
-
- if (seen.indexOf(node) !== -1) {
- if (cycles) return JSON.stringify('__cycle__');
- throw new TypeError('Converting circular structure to JSON');
- }
-
- var seenIndex = seen.push(node) - 1;
- var keys = Object.keys(node).sort(cmp && cmp(node));
- out = '';
- for (i = 0; i < keys.length; i++) {
- var key = keys[i];
- var value = stringify(node[key]);
-
- if (!value) continue;
- if (out) out += ',';
- out += JSON.stringify(key) + ':' + value;
- }
- seen.splice(seenIndex, 1);
- return '{' + out + '}';
- })(data);
-};
-
-},{}],44:[function(require,module,exports){
-'use strict';
-
-var traverse = module.exports = function (schema, opts, cb) {
- // Legacy support for v0.3.1 and earlier.
- if (typeof opts == 'function') {
- cb = opts;
- opts = {};
- }
-
- cb = opts.cb || cb;
- var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};
- var post = cb.post || function() {};
-
- _traverse(opts, pre, post, schema, '', schema);
-};
-
-
-traverse.keywords = {
- additionalItems: true,
- items: true,
- contains: true,
- additionalProperties: true,
- propertyNames: true,
- not: true
-};
-
-traverse.arrayKeywords = {
- items: true,
- allOf: true,
- anyOf: true,
- oneOf: true
-};
-
-traverse.propsKeywords = {
- definitions: true,
- properties: true,
- patternProperties: true,
- dependencies: true
-};
-
-traverse.skipKeywords = {
- default: true,
- enum: true,
- const: true,
- required: true,
- maximum: true,
- minimum: true,
- exclusiveMaximum: true,
- exclusiveMinimum: true,
- multipleOf: true,
- maxLength: true,
- minLength: true,
- pattern: true,
- format: true,
- maxItems: true,
- minItems: true,
- uniqueItems: true,
- maxProperties: true,
- minProperties: true
-};
-
-
-function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {
- if (schema && typeof schema == 'object' && !Array.isArray(schema)) {
- pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
- for (var key in schema) {
- var sch = schema[key];
- if (Array.isArray(sch)) {
- if (key in traverse.arrayKeywords) {
- for (var i=0; i<sch.length; i++)
- _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);
- }
- } else if (key in traverse.propsKeywords) {
- if (sch && typeof sch == 'object') {
- for (var prop in sch)
- _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);
- }
- } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {
- _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);
- }
- }
- post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
- }
-}
-
-
-function escapeJsonPtr(str) {
- return str.replace(/~/g, '~0').replace(/\//g, '~1');
-}
-
-},{}],45:[function(require,module,exports){
-/** @license URI.js v4.2.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */
-(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
- typeof define === 'function' && define.amd ? define(['exports'], factory) :
- (factory((global.URI = global.URI || {})));
-}(this, (function (exports) { 'use strict';
-
-function merge() {
- for (var _len = arguments.length, sets = Array(_len), _key = 0; _key < _len; _key++) {
- sets[_key] = arguments[_key];
- }
-
- if (sets.length > 1) {
- sets[0] = sets[0].slice(0, -1);
- var xl = sets.length - 1;
- for (var x = 1; x < xl; ++x) {
- sets[x] = sets[x].slice(1, -1);
- }
- sets[xl] = sets[xl].slice(1);
- return sets.join('');
- } else {
- return sets[0];
- }
-}
-function subexp(str) {
- return "(?:" + str + ")";
-}
-function typeOf(o) {
- return o === undefined ? "undefined" : o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase();
-}
-function toUpperCase(str) {
- return str.toUpperCase();
-}
-function toArray(obj) {
- return obj !== undefined && obj !== null ? obj instanceof Array ? obj : typeof obj.length !== "number" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj) : [];
-}
-function assign(target, source) {
- var obj = target;
- if (source) {
- for (var key in source) {
- obj[key] = source[key];
- }
- }
- return obj;
-}
-
-function buildExps(isIRI) {
- var ALPHA$$ = "[A-Za-z]",
- CR$ = "[\\x0D]",
- DIGIT$$ = "[0-9]",
- DQUOTE$$ = "[\\x22]",
- HEXDIG$$ = merge(DIGIT$$, "[A-Fa-f]"),
- //case-insensitive
- LF$$ = "[\\x0A]",
- SP$$ = "[\\x20]",
- PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)),
- //expanded
- GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]",
- SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]",
- RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),
- UCSCHAR$$ = isIRI ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]",
- //subset, excludes bidi control characters
- IPRIVATE$$ = isIRI ? "[\\uE000-\\uF8FF]" : "[]",
- //subset
- UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$),
- SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"),
- USERINFO$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]")) + "*"),
- DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$),
- DEC_OCTET_RELAXED$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("0?[1-9]" + DIGIT$$) + "|0?0?" + DIGIT$$),
- //relaxed parsing rules
- IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$),
- H16$ = subexp(HEXDIG$$ + "{1,4}"),
- LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$),
- IPV6ADDRESS1$ = subexp(subexp(H16$ + "\\:") + "{6}" + LS32$),
- // 6( h16 ":" ) ls32
- IPV6ADDRESS2$ = subexp("\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$),
- // "::" 5( h16 ":" ) ls32
- IPV6ADDRESS3$ = subexp(subexp(H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$),
- //[ h16 ] "::" 4( h16 ":" ) ls32
- IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$),
- //[ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32
- IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$),
- //[ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32
- IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$),
- //[ *3( h16 ":" ) h16 ] "::" h16 ":" ls32
- IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$),
- //[ *4( h16 ":" ) h16 ] "::" ls32
- IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$),
- //[ *5( h16 ":" ) h16 ] "::" h16
- IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:"),
- //[ *6( h16 ":" ) h16 ] "::"
- IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")),
- ZONEID$ = subexp(subexp(UNRESERVED$$ + "|" + PCT_ENCODED$) + "+"),
- //RFC 6874
- IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$),
- //RFC 6874
- IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + ZONEID$),
- //RFC 6874, with relaxed parsing rules
- IPVFUTURE$ = subexp("[vV]" + HEXDIG$$ + "+\\." + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]") + "+"),
- IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"),
- //RFC 6874
- REG_NAME$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$)) + "*"),
- HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")" + "|" + REG_NAME$),
- PORT$ = subexp(DIGIT$$ + "*"),
- AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"),
- PCHAR$ = subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@]")),
- SEGMENT$ = subexp(PCHAR$ + "*"),
- SEGMENT_NZ$ = subexp(PCHAR$ + "+"),
- SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\@]")) + "+"),
- PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"),
- PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"),
- //simplified
- PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$),
- //simplified
- PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$),
- //simplified
- PATH_EMPTY$ = "(?!" + PCHAR$ + ")",
- PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$),
- QUERY$ = subexp(subexp(PCHAR$ + "|" + merge("[\\/\\?]", IPRIVATE$$)) + "*"),
- FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"),
- HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$),
- URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"),
- RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$),
- RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"),
- URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$),
- ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"),
- GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$",
- RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$",
- ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$",
- SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$",
- AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$";
- return {
- NOT_SCHEME: new RegExp(merge("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"),
- NOT_USERINFO: new RegExp(merge("[^\\%\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_HOST: new RegExp(merge("[^\\%\\[\\]\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_PATH: new RegExp(merge("[^\\%\\/\\:\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_PATH_NOSCHEME: new RegExp(merge("[^\\%\\/\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_QUERY: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"),
- NOT_FRAGMENT: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"),
- ESCAPE: new RegExp(merge("[^]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- UNRESERVED: new RegExp(UNRESERVED$$, "g"),
- OTHER_CHARS: new RegExp(merge("[^\\%]", UNRESERVED$$, RESERVED$$), "g"),
- PCT_ENCODED: new RegExp(PCT_ENCODED$, "g"),
- IPV4ADDRESS: new RegExp("^(" + IPV4ADDRESS$ + ")$"),
- IPV6ADDRESS: new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules
- };
-}
-var URI_PROTOCOL = buildExps(false);
-
-var IRI_PROTOCOL = buildExps(true);
-
-var slicedToArray = function () {
- function sliceIterator(arr, i) {
- var _arr = [];
- var _n = true;
- var _d = false;
- var _e = undefined;
-
- try {
- for (var _i = arr[Symbol.iterator](), _s; !(_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"]) _i["return"]();
- } finally {
- if (_d) throw _e;
- }
- }
-
- return _arr;
- }
-
- return function (arr, i) {
- if (Array.isArray(arr)) {
- return arr;
- } else if (Symbol.iterator in Object(arr)) {
- return sliceIterator(arr, i);
- } else {
- throw new TypeError("Invalid attempt to destructure non-iterable instance");
- }
- };
-}();
-
-
-
-
-
-
-
-
-
-
-
-
-
-var toConsumableArray = function (arr) {
- if (Array.isArray(arr)) {
- for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
-
- return arr2;
- } else {
- return Array.from(arr);
- }
-};
-
-/** Highest positive signed 32-bit float value */
-
-var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1
-
-/** Bootstring parameters */
-var base = 36;
-var tMin = 1;
-var tMax = 26;
-var skew = 38;
-var damp = 700;
-var initialBias = 72;
-var initialN = 128; // 0x80
-var delimiter = '-'; // '\x2D'
-
-/** Regular expressions */
-var regexPunycode = /^xn--/;
-var regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars
-var regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators
-
-/** Error messages */
-var errors = {
- 'overflow': 'Overflow: input needs wider integers to process',
- 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
- 'invalid-input': 'Invalid input'
-};
-
-/** Convenience shortcuts */
-var baseMinusTMin = base - tMin;
-var floor = Math.floor;
-var stringFromCharCode = String.fromCharCode;
-
-/*--------------------------------------------------------------------------*/
-
-/**
- * A generic error utility function.
- * @private
- * @param {String} type The error type.
- * @returns {Error} Throws a `RangeError` with the applicable error message.
- */
-function error$1(type) {
- throw new RangeError(errors[type]);
-}
-
-/**
- * A generic `Array#map` utility function.
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} callback The function that gets called for every array
- * item.
- * @returns {Array} A new array of values returned by the callback function.
- */
-function map(array, fn) {
- var result = [];
- var length = array.length;
- while (length--) {
- result[length] = fn(array[length]);
- }
- return result;
-}
-
-/**
- * A simple `Array#map`-like wrapper to work with domain name strings or email
- * addresses.
- * @private
- * @param {String} domain The domain name or email address.
- * @param {Function} callback The function that gets called for every
- * character.
- * @returns {Array} A new string of characters returned by the callback
- * function.
- */
-function mapDomain(string, fn) {
- var parts = string.split('@');
- var result = '';
- if (parts.length > 1) {
- // In email addresses, only the domain name should be punycoded. Leave
- // the local part (i.e. everything up to `@`) intact.
- result = parts[0] + '@';
- string = parts[1];
- }
- // Avoid `split(regex)` for IE8 compatibility. See #17.
- string = string.replace(regexSeparators, '\x2E');
- var labels = string.split('.');
- var encoded = map(labels, fn).join('.');
- return result + encoded;
-}
-
-/**
- * Creates an array containing the numeric code points of each Unicode
- * character in the string. While JavaScript uses UCS-2 internally,
- * this function will convert a pair of surrogate halves (each of which
- * UCS-2 exposes as separate characters) into a single code point,
- * matching UTF-16.
- * @see `punycode.ucs2.encode`
- * @see <https://mathiasbynens.be/notes/javascript-encoding>
- * @memberOf punycode.ucs2
- * @name decode
- * @param {String} string The Unicode input string (UCS-2).
- * @returns {Array} The new array of code points.
- */
-function ucs2decode(string) {
- var output = [];
- var counter = 0;
- var length = string.length;
- while (counter < length) {
- var value = string.charCodeAt(counter++);
- if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
- // It's a high surrogate, and there is a next character.
- var extra = string.charCodeAt(counter++);
- if ((extra & 0xFC00) == 0xDC00) {
- // Low surrogate.
- output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
- } else {
- // It's an unmatched surrogate; only append this code unit, in case the
- // next code unit is the high surrogate of a surrogate pair.
- output.push(value);
- counter--;
- }
- } else {
- output.push(value);
- }
- }
- return output;
-}
-
-/**
- * Creates a string based on an array of numeric code points.
- * @see `punycode.ucs2.decode`
- * @memberOf punycode.ucs2
- * @name encode
- * @param {Array} codePoints The array of numeric code points.
- * @returns {String} The new Unicode string (UCS-2).
- */
-var ucs2encode = function ucs2encode(array) {
- return String.fromCodePoint.apply(String, toConsumableArray(array));
-};
-
-/**
- * Converts a basic code point into a digit/integer.
- * @see `digitToBasic()`
- * @private
- * @param {Number} codePoint The basic numeric code point value.
- * @returns {Number} The numeric value of a basic code point (for use in
- * representing integers) in the range `0` to `base - 1`, or `base` if
- * the code point does not represent a value.
- */
-var basicToDigit = function basicToDigit(codePoint) {
- if (codePoint - 0x30 < 0x0A) {
- return codePoint - 0x16;
- }
- if (codePoint - 0x41 < 0x1A) {
- return codePoint - 0x41;
- }
- if (codePoint - 0x61 < 0x1A) {
- return codePoint - 0x61;
- }
- return base;
-};
-
-/**
- * Converts a digit/integer into a basic code point.
- * @see `basicToDigit()`
- * @private
- * @param {Number} digit The numeric value of a basic code point.
- * @returns {Number} The basic code point whose value (when used for
- * representing integers) is `digit`, which needs to be in the range
- * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
- * used; else, the lowercase form is used. The behavior is undefined
- * if `flag` is non-zero and `digit` has no uppercase form.
- */
-var digitToBasic = function digitToBasic(digit, flag) {
- // 0..25 map to ASCII a..z or A..Z
- // 26..35 map to ASCII 0..9
- return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
-};
-
-/**
- * Bias adaptation function as per section 3.4 of RFC 3492.
- * https://tools.ietf.org/html/rfc3492#section-3.4
- * @private
- */
-var adapt = function adapt(delta, numPoints, firstTime) {
- var k = 0;
- delta = firstTime ? floor(delta / damp) : delta >> 1;
- delta += floor(delta / numPoints);
- for (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) {
- delta = floor(delta / baseMinusTMin);
- }
- return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
-};
-
-/**
- * Converts a Punycode string of ASCII-only symbols to a string of Unicode
- * symbols.
- * @memberOf punycode
- * @param {String} input The Punycode string of ASCII-only symbols.
- * @returns {String} The resulting string of Unicode symbols.
- */
-var decode = function decode(input) {
- // Don't use UCS-2.
- var output = [];
- var inputLength = input.length;
- var i = 0;
- var n = initialN;
- var bias = initialBias;
-
- // Handle the basic code points: let `basic` be the number of input code
- // points before the last delimiter, or `0` if there is none, then copy
- // the first basic code points to the output.
-
- var basic = input.lastIndexOf(delimiter);
- if (basic < 0) {
- basic = 0;
- }
-
- for (var j = 0; j < basic; ++j) {
- // if it's not a basic code point
- if (input.charCodeAt(j) >= 0x80) {
- error$1('not-basic');
- }
- output.push(input.charCodeAt(j));
- }
-
- // Main decoding loop: start just after the last delimiter if any basic code
- // points were copied; start at the beginning otherwise.
-
- for (var index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{
-
- // `index` is the index of the next character to be consumed.
- // Decode a generalized variable-length integer into `delta`,
- // which gets added to `i`. The overflow checking is easier
- // if we increase `i` as we go, then subtract off its starting
- // value at the end to obtain `delta`.
- var oldi = i;
- for (var w = 1, k = base;; /* no condition */k += base) {
-
- if (index >= inputLength) {
- error$1('invalid-input');
- }
-
- var digit = basicToDigit(input.charCodeAt(index++));
-
- if (digit >= base || digit > floor((maxInt - i) / w)) {
- error$1('overflow');
- }
-
- i += digit * w;
- var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
-
- if (digit < t) {
- break;
- }
-
- var baseMinusT = base - t;
- if (w > floor(maxInt / baseMinusT)) {
- error$1('overflow');
- }
-
- w *= baseMinusT;
- }
-
- var out = output.length + 1;
- bias = adapt(i - oldi, out, oldi == 0);
-
- // `i` was supposed to wrap around from `out` to `0`,
- // incrementing `n` each time, so we'll fix that now:
- if (floor(i / out) > maxInt - n) {
- error$1('overflow');
- }
-
- n += floor(i / out);
- i %= out;
-
- // Insert `n` at position `i` of the output.
- output.splice(i++, 0, n);
- }
-
- return String.fromCodePoint.apply(String, output);
-};
-
-/**
- * Converts a string of Unicode symbols (e.g. a domain name label) to a
- * Punycode string of ASCII-only symbols.
- * @memberOf punycode
- * @param {String} input The string of Unicode symbols.
- * @returns {String} The resulting Punycode string of ASCII-only symbols.
- */
-var encode = function encode(input) {
- var output = [];
-
- // Convert the input in UCS-2 to an array of Unicode code points.
- input = ucs2decode(input);
-
- // Cache the length.
- var inputLength = input.length;
-
- // Initialize the state.
- var n = initialN;
- var delta = 0;
- var bias = initialBias;
-
- // Handle the basic code points.
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var _currentValue2 = _step.value;
-
- if (_currentValue2 < 0x80) {
- output.push(stringFromCharCode(_currentValue2));
- }
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-
- var basicLength = output.length;
- var handledCPCount = basicLength;
-
- // `handledCPCount` is the number of code points that have been handled;
- // `basicLength` is the number of basic code points.
-
- // Finish the basic string with a delimiter unless it's empty.
- if (basicLength) {
- output.push(delimiter);
- }
-
- // Main encoding loop:
- while (handledCPCount < inputLength) {
-
- // All non-basic code points < n have been handled already. Find the next
- // larger one:
- var m = maxInt;
- var _iteratorNormalCompletion2 = true;
- var _didIteratorError2 = false;
- var _iteratorError2 = undefined;
-
- try {
- for (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
- var currentValue = _step2.value;
-
- if (currentValue >= n && currentValue < m) {
- m = currentValue;
- }
- }
-
- // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
- // but guard against overflow.
- } catch (err) {
- _didIteratorError2 = true;
- _iteratorError2 = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion2 && _iterator2.return) {
- _iterator2.return();
- }
- } finally {
- if (_didIteratorError2) {
- throw _iteratorError2;
- }
- }
- }
-
- var handledCPCountPlusOne = handledCPCount + 1;
- if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
- error$1('overflow');
- }
-
- delta += (m - n) * handledCPCountPlusOne;
- n = m;
-
- var _iteratorNormalCompletion3 = true;
- var _didIteratorError3 = false;
- var _iteratorError3 = undefined;
-
- try {
- for (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
- var _currentValue = _step3.value;
-
- if (_currentValue < n && ++delta > maxInt) {
- error$1('overflow');
- }
- if (_currentValue == n) {
- // Represent delta as a generalized variable-length integer.
- var q = delta;
- for (var k = base;; /* no condition */k += base) {
- var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
- if (q < t) {
- break;
- }
- var qMinusT = q - t;
- var baseMinusT = base - t;
- output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));
- q = floor(qMinusT / baseMinusT);
- }
-
- output.push(stringFromCharCode(digitToBasic(q, 0)));
- bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
- delta = 0;
- ++handledCPCount;
- }
- }
- } catch (err) {
- _didIteratorError3 = true;
- _iteratorError3 = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion3 && _iterator3.return) {
- _iterator3.return();
- }
- } finally {
- if (_didIteratorError3) {
- throw _iteratorError3;
- }
- }
- }
-
- ++delta;
- ++n;
- }
- return output.join('');
-};
-
-/**
- * Converts a Punycode string representing a domain name or an email address
- * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
- * it doesn't matter if you call it on a string that has already been
- * converted to Unicode.
- * @memberOf punycode
- * @param {String} input The Punycoded domain name or email address to
- * convert to Unicode.
- * @returns {String} The Unicode representation of the given Punycode
- * string.
- */
-var toUnicode = function toUnicode(input) {
- return mapDomain(input, function (string) {
- return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;
- });
-};
-
-/**
- * Converts a Unicode string representing a domain name or an email address to
- * Punycode. Only the non-ASCII parts of the domain name will be converted,
- * i.e. it doesn't matter if you call it with a domain that's already in
- * ASCII.
- * @memberOf punycode
- * @param {String} input The domain name or email address to convert, as a
- * Unicode string.
- * @returns {String} The Punycode representation of the given domain name or
- * email address.
- */
-var toASCII = function toASCII(input) {
- return mapDomain(input, function (string) {
- return regexNonASCII.test(string) ? 'xn--' + encode(string) : string;
- });
-};
-
-/*--------------------------------------------------------------------------*/
-
-/** Define the public API */
-var punycode = {
- /**
- * A string representing the current Punycode.js version number.
- * @memberOf punycode
- * @type String
- */
- 'version': '2.1.0',
- /**
- * An object of methods to convert from JavaScript's internal character
- * representation (UCS-2) to Unicode code points, and back.
- * @see <https://mathiasbynens.be/notes/javascript-encoding>
- * @memberOf punycode
- * @type Object
- */
- 'ucs2': {
- 'decode': ucs2decode,
- 'encode': ucs2encode
- },
- 'decode': decode,
- 'encode': encode,
- 'toASCII': toASCII,
- 'toUnicode': toUnicode
-};
-
-/**
- * URI.js
- *
- * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.
- * @author <a href="mailto:gary.court@gmail.com">Gary Court</a>
- * @see http://github.com/garycourt/uri-js
- */
-/**
- * Copyright 2011 Gary Court. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. 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 GARY COURT ``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 GARY COURT 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.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of Gary Court.
- */
-var SCHEMES = {};
-function pctEncChar(chr) {
- var c = chr.charCodeAt(0);
- var e = void 0;
- if (c < 16) e = "%0" + c.toString(16).toUpperCase();else if (c < 128) e = "%" + c.toString(16).toUpperCase();else if (c < 2048) e = "%" + (c >> 6 | 192).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase();else e = "%" + (c >> 12 | 224).toString(16).toUpperCase() + "%" + (c >> 6 & 63 | 128).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase();
- return e;
-}
-function pctDecChars(str) {
- var newStr = "";
- var i = 0;
- var il = str.length;
- while (i < il) {
- var c = parseInt(str.substr(i + 1, 2), 16);
- if (c < 128) {
- newStr += String.fromCharCode(c);
- i += 3;
- } else if (c >= 194 && c < 224) {
- if (il - i >= 6) {
- var c2 = parseInt(str.substr(i + 4, 2), 16);
- newStr += String.fromCharCode((c & 31) << 6 | c2 & 63);
- } else {
- newStr += str.substr(i, 6);
- }
- i += 6;
- } else if (c >= 224) {
- if (il - i >= 9) {
- var _c = parseInt(str.substr(i + 4, 2), 16);
- var c3 = parseInt(str.substr(i + 7, 2), 16);
- newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63);
- } else {
- newStr += str.substr(i, 9);
- }
- i += 9;
- } else {
- newStr += str.substr(i, 3);
- i += 3;
- }
- }
- return newStr;
-}
-function _normalizeComponentEncoding(components, protocol) {
- function decodeUnreserved(str) {
- var decStr = pctDecChars(str);
- return !decStr.match(protocol.UNRESERVED) ? str : decStr;
- }
- if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, "");
- if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- return components;
-}
-
-function _stripLeadingZeros(str) {
- return str.replace(/^0*(.*)/, "$1") || "0";
-}
-function _normalizeIPv4(host, protocol) {
- var matches = host.match(protocol.IPV4ADDRESS) || [];
-
- var _matches = slicedToArray(matches, 2),
- address = _matches[1];
-
- if (address) {
- return address.split(".").map(_stripLeadingZeros).join(".");
- } else {
- return host;
- }
-}
-function _normalizeIPv6(host, protocol) {
- var matches = host.match(protocol.IPV6ADDRESS) || [];
-
- var _matches2 = slicedToArray(matches, 3),
- address = _matches2[1],
- zone = _matches2[2];
-
- if (address) {
- var _address$toLowerCase$ = address.toLowerCase().split('::').reverse(),
- _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2),
- last = _address$toLowerCase$2[0],
- first = _address$toLowerCase$2[1];
-
- var firstFields = first ? first.split(":").map(_stripLeadingZeros) : [];
- var lastFields = last.split(":").map(_stripLeadingZeros);
- var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);
- var fieldCount = isLastFieldIPv4Address ? 7 : 8;
- var lastFieldsStart = lastFields.length - fieldCount;
- var fields = Array(fieldCount);
- for (var x = 0; x < fieldCount; ++x) {
- fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';
- }
- if (isLastFieldIPv4Address) {
- fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);
- }
- var allZeroFields = fields.reduce(function (acc, field, index) {
- if (!field || field === "0") {
- var lastLongest = acc[acc.length - 1];
- if (lastLongest && lastLongest.index + lastLongest.length === index) {
- lastLongest.length++;
- } else {
- acc.push({ index: index, length: 1 });
- }
- }
- return acc;
- }, []);
- var longestZeroFields = allZeroFields.sort(function (a, b) {
- return b.length - a.length;
- })[0];
- var newHost = void 0;
- if (longestZeroFields && longestZeroFields.length > 1) {
- var newFirst = fields.slice(0, longestZeroFields.index);
- var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);
- newHost = newFirst.join(":") + "::" + newLast.join(":");
- } else {
- newHost = fields.join(":");
- }
- if (zone) {
- newHost += "%" + zone;
- }
- return newHost;
- } else {
- return host;
- }
-}
-var URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i;
-var NO_MATCH_IS_UNDEFINED = "".match(/(){0}/)[1] === undefined;
-function parse(uriString) {
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- var components = {};
- var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;
- if (options.reference === "suffix") uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString;
- var matches = uriString.match(URI_PARSE);
- if (matches) {
- if (NO_MATCH_IS_UNDEFINED) {
- //store each component
- components.scheme = matches[1];
- components.userinfo = matches[3];
- components.host = matches[4];
- components.port = parseInt(matches[5], 10);
- components.path = matches[6] || "";
- components.query = matches[7];
- components.fragment = matches[8];
- //fix port number
- if (isNaN(components.port)) {
- components.port = matches[5];
- }
- } else {
- //IE FIX for improper RegExp matching
- //store each component
- components.scheme = matches[1] || undefined;
- components.userinfo = uriString.indexOf("@") !== -1 ? matches[3] : undefined;
- components.host = uriString.indexOf("//") !== -1 ? matches[4] : undefined;
- components.port = parseInt(matches[5], 10);
- components.path = matches[6] || "";
- components.query = uriString.indexOf("?") !== -1 ? matches[7] : undefined;
- components.fragment = uriString.indexOf("#") !== -1 ? matches[8] : undefined;
- //fix port number
- if (isNaN(components.port)) {
- components.port = uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : undefined;
- }
- }
- if (components.host) {
- //normalize IP hosts
- components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);
- }
- //determine reference type
- if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {
- components.reference = "same-document";
- } else if (components.scheme === undefined) {
- components.reference = "relative";
- } else if (components.fragment === undefined) {
- components.reference = "absolute";
- } else {
- components.reference = "uri";
- }
- //check for reference errors
- if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) {
- components.error = components.error || "URI is not a " + options.reference + " reference.";
- }
- //find scheme handler
- var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()];
- //check if scheme can't handle IRIs
- if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {
- //if host component is a domain name
- if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) {
- //convert Unicode IDN -> ASCII IDN
- try {
- components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());
- } catch (e) {
- components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e;
- }
- }
- //convert IRI -> URI
- _normalizeComponentEncoding(components, URI_PROTOCOL);
- } else {
- //normalize encodings
- _normalizeComponentEncoding(components, protocol);
- }
- //perform scheme specific parsing
- if (schemeHandler && schemeHandler.parse) {
- schemeHandler.parse(components, options);
- }
- } else {
- components.error = components.error || "URI can not be parsed.";
- }
- return components;
-}
-
-function _recomposeAuthority(components, options) {
- var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;
- var uriTokens = [];
- if (components.userinfo !== undefined) {
- uriTokens.push(components.userinfo);
- uriTokens.push("@");
- }
- if (components.host !== undefined) {
- //normalize IP hosts, add brackets and escape zone separator for IPv6
- uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function (_, $1, $2) {
- return "[" + $1 + ($2 ? "%25" + $2 : "") + "]";
- }));
- }
- if (typeof components.port === "number") {
- uriTokens.push(":");
- uriTokens.push(components.port.toString(10));
- }
- return uriTokens.length ? uriTokens.join("") : undefined;
-}
-
-var RDS1 = /^\.\.?\//;
-var RDS2 = /^\/\.(\/|$)/;
-var RDS3 = /^\/\.\.(\/|$)/;
-var RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/;
-function removeDotSegments(input) {
- var output = [];
- while (input.length) {
- if (input.match(RDS1)) {
- input = input.replace(RDS1, "");
- } else if (input.match(RDS2)) {
- input = input.replace(RDS2, "/");
- } else if (input.match(RDS3)) {
- input = input.replace(RDS3, "/");
- output.pop();
- } else if (input === "." || input === "..") {
- input = "";
- } else {
- var im = input.match(RDS5);
- if (im) {
- var s = im[0];
- input = input.slice(s.length);
- output.push(s);
- } else {
- throw new Error("Unexpected dot segment condition");
- }
- }
- }
- return output.join("");
-}
-
-function serialize(components) {
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL;
- var uriTokens = [];
- //find scheme handler
- var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()];
- //perform scheme specific serialization
- if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);
- if (components.host) {
- //if host component is an IPv6 address
- if (protocol.IPV6ADDRESS.test(components.host)) {}
- //TODO: normalize IPv6 address as per RFC 5952
-
- //if host component is a domain name
- else if (options.domainHost || schemeHandler && schemeHandler.domainHost) {
- //convert IDN via punycode
- try {
- components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host);
- } catch (e) {
- components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e;
- }
- }
- }
- //normalize encoding
- _normalizeComponentEncoding(components, protocol);
- if (options.reference !== "suffix" && components.scheme) {
- uriTokens.push(components.scheme);
- uriTokens.push(":");
- }
- var authority = _recomposeAuthority(components, options);
- if (authority !== undefined) {
- if (options.reference !== "suffix") {
- uriTokens.push("//");
- }
- uriTokens.push(authority);
- if (components.path && components.path.charAt(0) !== "/") {
- uriTokens.push("/");
- }
- }
- if (components.path !== undefined) {
- var s = components.path;
- if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {
- s = removeDotSegments(s);
- }
- if (authority === undefined) {
- s = s.replace(/^\/\//, "/%2F"); //don't allow the path to start with "//"
- }
- uriTokens.push(s);
- }
- if (components.query !== undefined) {
- uriTokens.push("?");
- uriTokens.push(components.query);
- }
- if (components.fragment !== undefined) {
- uriTokens.push("#");
- uriTokens.push(components.fragment);
- }
- return uriTokens.join(""); //merge tokens into a string
-}
-
-function resolveComponents(base, relative) {
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
- var skipNormalization = arguments[3];
-
- var target = {};
- if (!skipNormalization) {
- base = parse(serialize(base, options), options); //normalize base components
- relative = parse(serialize(relative, options), options); //normalize relative components
- }
- options = options || {};
- if (!options.tolerant && relative.scheme) {
- target.scheme = relative.scheme;
- //target.authority = relative.authority;
- target.userinfo = relative.userinfo;
- target.host = relative.host;
- target.port = relative.port;
- target.path = removeDotSegments(relative.path || "");
- target.query = relative.query;
- } else {
- if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {
- //target.authority = relative.authority;
- target.userinfo = relative.userinfo;
- target.host = relative.host;
- target.port = relative.port;
- target.path = removeDotSegments(relative.path || "");
- target.query = relative.query;
- } else {
- if (!relative.path) {
- target.path = base.path;
- if (relative.query !== undefined) {
- target.query = relative.query;
- } else {
- target.query = base.query;
- }
- } else {
- if (relative.path.charAt(0) === "/") {
- target.path = removeDotSegments(relative.path);
- } else {
- if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {
- target.path = "/" + relative.path;
- } else if (!base.path) {
- target.path = relative.path;
- } else {
- target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path;
- }
- target.path = removeDotSegments(target.path);
- }
- target.query = relative.query;
- }
- //target.authority = base.authority;
- target.userinfo = base.userinfo;
- target.host = base.host;
- target.port = base.port;
- }
- target.scheme = base.scheme;
- }
- target.fragment = relative.fragment;
- return target;
-}
-
-function resolve(baseURI, relativeURI, options) {
- var schemelessOptions = assign({ scheme: 'null' }, options);
- return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);
-}
-
-function normalize(uri, options) {
- if (typeof uri === "string") {
- uri = serialize(parse(uri, options), options);
- } else if (typeOf(uri) === "object") {
- uri = parse(serialize(uri, options), options);
- }
- return uri;
-}
-
-function equal(uriA, uriB, options) {
- if (typeof uriA === "string") {
- uriA = serialize(parse(uriA, options), options);
- } else if (typeOf(uriA) === "object") {
- uriA = serialize(uriA, options);
- }
- if (typeof uriB === "string") {
- uriB = serialize(parse(uriB, options), options);
- } else if (typeOf(uriB) === "object") {
- uriB = serialize(uriB, options);
- }
- return uriA === uriB;
-}
-
-function escapeComponent(str, options) {
- return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar);
-}
-
-function unescapeComponent(str, options) {
- return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars);
-}
-
-var handler = {
- scheme: "http",
- domainHost: true,
- parse: function parse(components, options) {
- //report missing host
- if (!components.host) {
- components.error = components.error || "HTTP URIs must have a host.";
- }
- return components;
- },
- serialize: function serialize(components, options) {
- //normalize the default port
- if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") {
- components.port = undefined;
- }
- //normalize the empty path
- if (!components.path) {
- components.path = "/";
- }
- //NOTE: We do not parse query strings for HTTP URIs
- //as WWW Form Url Encoded query strings are part of the HTML4+ spec,
- //and not the HTTP spec.
- return components;
- }
-};
-
-var handler$1 = {
- scheme: "https",
- domainHost: handler.domainHost,
- parse: handler.parse,
- serialize: handler.serialize
-};
-
-var O = {};
-var isIRI = true;
-//RFC 3986
-var UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]";
-var HEXDIG$$ = "[0-9A-Fa-f]"; //case-insensitive
-var PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); //expanded
-//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =
-//const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]";
-//const WSP$$ = "[\\x20\\x09]";
-//const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127)
-//const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext
-//const VCHAR$$ = "[\\x21-\\x7E]";
-//const WSP$$ = "[\\x20\\x09]";
-//const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext
-//const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+");
-//const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$);
-//const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"');
-var ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]";
-var QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]";
-var VCHAR$$ = merge(QTEXT$$, "[\\\"\\\\]");
-var SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]";
-var UNRESERVED = new RegExp(UNRESERVED$$, "g");
-var PCT_ENCODED = new RegExp(PCT_ENCODED$, "g");
-var NOT_LOCAL_PART = new RegExp(merge("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g");
-var NOT_HFNAME = new RegExp(merge("[^]", UNRESERVED$$, SOME_DELIMS$$), "g");
-var NOT_HFVALUE = NOT_HFNAME;
-function decodeUnreserved(str) {
- var decStr = pctDecChars(str);
- return !decStr.match(UNRESERVED) ? str : decStr;
-}
-var handler$2 = {
- scheme: "mailto",
- parse: function parse$$1(components, options) {
- var mailtoComponents = components;
- var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(",") : [];
- mailtoComponents.path = undefined;
- if (mailtoComponents.query) {
- var unknownHeaders = false;
- var headers = {};
- var hfields = mailtoComponents.query.split("&");
- for (var x = 0, xl = hfields.length; x < xl; ++x) {
- var hfield = hfields[x].split("=");
- switch (hfield[0]) {
- case "to":
- var toAddrs = hfield[1].split(",");
- for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) {
- to.push(toAddrs[_x]);
- }
- break;
- case "subject":
- mailtoComponents.subject = unescapeComponent(hfield[1], options);
- break;
- case "body":
- mailtoComponents.body = unescapeComponent(hfield[1], options);
- break;
- default:
- unknownHeaders = true;
- headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);
- break;
- }
- }
- if (unknownHeaders) mailtoComponents.headers = headers;
- }
- mailtoComponents.query = undefined;
- for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) {
- var addr = to[_x2].split("@");
- addr[0] = unescapeComponent(addr[0]);
- if (!options.unicodeSupport) {
- //convert Unicode IDN -> ASCII IDN
- try {
- addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());
- } catch (e) {
- mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e;
- }
- } else {
- addr[1] = unescapeComponent(addr[1], options).toLowerCase();
- }
- to[_x2] = addr.join("@");
- }
- return mailtoComponents;
- },
- serialize: function serialize$$1(mailtoComponents, options) {
- var components = mailtoComponents;
- var to = toArray(mailtoComponents.to);
- if (to) {
- for (var x = 0, xl = to.length; x < xl; ++x) {
- var toAddr = String(to[x]);
- var atIdx = toAddr.lastIndexOf("@");
- var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);
- var domain = toAddr.slice(atIdx + 1);
- //convert IDN via punycode
- try {
- domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain);
- } catch (e) {
- components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e;
- }
- to[x] = localPart + "@" + domain;
- }
- components.path = to.join(",");
- }
- var headers = mailtoComponents.headers = mailtoComponents.headers || {};
- if (mailtoComponents.subject) headers["subject"] = mailtoComponents.subject;
- if (mailtoComponents.body) headers["body"] = mailtoComponents.body;
- var fields = [];
- for (var name in headers) {
- if (headers[name] !== O[name]) {
- fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + "=" + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar));
- }
- }
- if (fields.length) {
- components.query = fields.join("&");
- }
- return components;
- }
-};
-
-var URN_PARSE = /^([^\:]+)\:(.*)/;
-//RFC 2141
-var handler$3 = {
- scheme: "urn",
- parse: function parse$$1(components, options) {
- var matches = components.path && components.path.match(URN_PARSE);
- var urnComponents = components;
- if (matches) {
- var scheme = options.scheme || urnComponents.scheme || "urn";
- var nid = matches[1].toLowerCase();
- var nss = matches[2];
- var urnScheme = scheme + ":" + (options.nid || nid);
- var schemeHandler = SCHEMES[urnScheme];
- urnComponents.nid = nid;
- urnComponents.nss = nss;
- urnComponents.path = undefined;
- if (schemeHandler) {
- urnComponents = schemeHandler.parse(urnComponents, options);
- }
- } else {
- urnComponents.error = urnComponents.error || "URN can not be parsed.";
- }
- return urnComponents;
- },
- serialize: function serialize$$1(urnComponents, options) {
- var scheme = options.scheme || urnComponents.scheme || "urn";
- var nid = urnComponents.nid;
- var urnScheme = scheme + ":" + (options.nid || nid);
- var schemeHandler = SCHEMES[urnScheme];
- if (schemeHandler) {
- urnComponents = schemeHandler.serialize(urnComponents, options);
- }
- var uriComponents = urnComponents;
- var nss = urnComponents.nss;
- uriComponents.path = (nid || options.nid) + ":" + nss;
- return uriComponents;
- }
-};
-
-var UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/;
-//RFC 4122
-var handler$4 = {
- scheme: "urn:uuid",
- parse: function parse(urnComponents, options) {
- var uuidComponents = urnComponents;
- uuidComponents.uuid = uuidComponents.nss;
- uuidComponents.nss = undefined;
- if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {
- uuidComponents.error = uuidComponents.error || "UUID is not valid.";
- }
- return uuidComponents;
- },
- serialize: function serialize(uuidComponents, options) {
- var urnComponents = uuidComponents;
- //normalize UUID
- urnComponents.nss = (uuidComponents.uuid || "").toLowerCase();
- return urnComponents;
- }
-};
-
-SCHEMES[handler.scheme] = handler;
-SCHEMES[handler$1.scheme] = handler$1;
-SCHEMES[handler$2.scheme] = handler$2;
-SCHEMES[handler$3.scheme] = handler$3;
-SCHEMES[handler$4.scheme] = handler$4;
-
-exports.SCHEMES = SCHEMES;
-exports.pctEncChar = pctEncChar;
-exports.pctDecChars = pctDecChars;
-exports.parse = parse;
-exports.removeDotSegments = removeDotSegments;
-exports.serialize = serialize;
-exports.resolveComponents = resolveComponents;
-exports.resolve = resolve;
-exports.normalize = normalize;
-exports.equal = equal;
-exports.escapeComponent = escapeComponent;
-exports.unescapeComponent = unescapeComponent;
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-})));
-
-
-},{}],"ajv":[function(require,module,exports){
-'use strict';
-
-var compileSchema = require('./compile')
- , resolve = require('./compile/resolve')
- , Cache = require('./cache')
- , SchemaObject = require('./compile/schema_obj')
- , stableStringify = require('fast-json-stable-stringify')
- , formats = require('./compile/formats')
- , rules = require('./compile/rules')
- , $dataMetaSchema = require('./data')
- , util = require('./compile/util');
-
-module.exports = Ajv;
-
-Ajv.prototype.validate = validate;
-Ajv.prototype.compile = compile;
-Ajv.prototype.addSchema = addSchema;
-Ajv.prototype.addMetaSchema = addMetaSchema;
-Ajv.prototype.validateSchema = validateSchema;
-Ajv.prototype.getSchema = getSchema;
-Ajv.prototype.removeSchema = removeSchema;
-Ajv.prototype.addFormat = addFormat;
-Ajv.prototype.errorsText = errorsText;
-
-Ajv.prototype._addSchema = _addSchema;
-Ajv.prototype._compile = _compile;
-
-Ajv.prototype.compileAsync = require('./compile/async');
-var customKeyword = require('./keyword');
-Ajv.prototype.addKeyword = customKeyword.add;
-Ajv.prototype.getKeyword = customKeyword.get;
-Ajv.prototype.removeKeyword = customKeyword.remove;
-Ajv.prototype.validateKeyword = customKeyword.validate;
-
-var errorClasses = require('./compile/error_classes');
-Ajv.ValidationError = errorClasses.Validation;
-Ajv.MissingRefError = errorClasses.MissingRef;
-Ajv.$dataMetaSchema = $dataMetaSchema;
-
-var META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema';
-
-var META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ];
-var META_SUPPORT_DATA = ['/properties'];
-
-/**
- * Creates validator instance.
- * Usage: `Ajv(opts)`
- * @param {Object} opts optional options
- * @return {Object} ajv instance
- */
-function Ajv(opts) {
- if (!(this instanceof Ajv)) return new Ajv(opts);
- opts = this._opts = util.copy(opts) || {};
- setLogger(this);
- this._schemas = {};
- this._refs = {};
- this._fragments = {};
- this._formats = formats(opts.format);
-
- this._cache = opts.cache || new Cache;
- this._loadingSchemas = {};
- this._compilations = [];
- this.RULES = rules();
- this._getId = chooseGetId(opts);
-
- opts.loopRequired = opts.loopRequired || Infinity;
- if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;
- if (opts.serialize === undefined) opts.serialize = stableStringify;
- this._metaOpts = getMetaSchemaOptions(this);
-
- if (opts.formats) addInitialFormats(this);
- addDefaultMetaSchema(this);
- if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);
- if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}});
- addInitialSchemas(this);
-}
-
-
-
-/**
- * Validate data using schema
- * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize.
- * @this Ajv
- * @param {String|Object} schemaKeyRef key, ref or schema object
- * @param {Any} data to be validated
- * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).
- */
-function validate(schemaKeyRef, data) {
- var v;
- if (typeof schemaKeyRef == 'string') {
- v = this.getSchema(schemaKeyRef);
- if (!v) throw new Error('no schema with key or ref "' + schemaKeyRef + '"');
- } else {
- var schemaObj = this._addSchema(schemaKeyRef);
- v = schemaObj.validate || this._compile(schemaObj);
- }
-
- var valid = v(data);
- if (v.$async !== true) this.errors = v.errors;
- return valid;
-}
-
-
-/**
- * Create validating function for passed schema.
- * @this Ajv
- * @param {Object} schema schema object
- * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords.
- * @return {Function} validating function
- */
-function compile(schema, _meta) {
- var schemaObj = this._addSchema(schema, undefined, _meta);
- return schemaObj.validate || this._compile(schemaObj);
-}
-
-
-/**
- * Adds schema to the instance.
- * @this Ajv
- * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.
- * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.
- * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.
- * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.
- * @return {Ajv} this for method chaining
- */
-function addSchema(schema, key, _skipValidation, _meta) {
- if (Array.isArray(schema)){
- for (var i=0; i<schema.length; i++) this.addSchema(schema[i], undefined, _skipValidation, _meta);
- return this;
- }
- var id = this._getId(schema);
- if (id !== undefined && typeof id != 'string')
- throw new Error('schema id must be string');
- key = resolve.normalizeId(key || id);
- checkUnique(this, key);
- this._schemas[key] = this._addSchema(schema, _skipValidation, _meta, true);
- return this;
-}
-
-
-/**
- * Add schema that will be used to validate other schemas
- * options in META_IGNORE_OPTIONS are alway set to false
- * @this Ajv
- * @param {Object} schema schema object
- * @param {String} key optional schema key
- * @param {Boolean} skipValidation true to skip schema validation, can be used to override validateSchema option for meta-schema
- * @return {Ajv} this for method chaining
- */
-function addMetaSchema(schema, key, skipValidation) {
- this.addSchema(schema, key, skipValidation, true);
- return this;
-}
-
-
-/**
- * Validate schema
- * @this Ajv
- * @param {Object} schema schema to validate
- * @param {Boolean} throwOrLogError pass true to throw (or log) an error if invalid
- * @return {Boolean} true if schema is valid
- */
-function validateSchema(schema, throwOrLogError) {
- var $schema = schema.$schema;
- if ($schema !== undefined && typeof $schema != 'string')
- throw new Error('$schema must be a string');
- $schema = $schema || this._opts.defaultMeta || defaultMeta(this);
- if (!$schema) {
- this.logger.warn('meta-schema not available');
- this.errors = null;
- return true;
- }
- var valid = this.validate($schema, schema);
- if (!valid && throwOrLogError) {
- var message = 'schema is invalid: ' + this.errorsText();
- if (this._opts.validateSchema == 'log') this.logger.error(message);
- else throw new Error(message);
- }
- return valid;
-}
-
-
-function defaultMeta(self) {
- var meta = self._opts.meta;
- self._opts.defaultMeta = typeof meta == 'object'
- ? self._getId(meta) || meta
- : self.getSchema(META_SCHEMA_ID)
- ? META_SCHEMA_ID
- : undefined;
- return self._opts.defaultMeta;
-}
-
-
-/**
- * Get compiled schema from the instance by `key` or `ref`.
- * @this Ajv
- * @param {String} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id).
- * @return {Function} schema validating function (with property `schema`).
- */
-function getSchema(keyRef) {
- var schemaObj = _getSchemaObj(this, keyRef);
- switch (typeof schemaObj) {
- case 'object': return schemaObj.validate || this._compile(schemaObj);
- case 'string': return this.getSchema(schemaObj);
- case 'undefined': return _getSchemaFragment(this, keyRef);
- }
-}
-
-
-function _getSchemaFragment(self, ref) {
- var res = resolve.schema.call(self, { schema: {} }, ref);
- if (res) {
- var schema = res.schema
- , root = res.root
- , baseId = res.baseId;
- var v = compileSchema.call(self, schema, root, undefined, baseId);
- self._fragments[ref] = new SchemaObject({
- ref: ref,
- fragment: true,
- schema: schema,
- root: root,
- baseId: baseId,
- validate: v
- });
- return v;
- }
-}
-
-
-function _getSchemaObj(self, keyRef) {
- keyRef = resolve.normalizeId(keyRef);
- return self._schemas[keyRef] || self._refs[keyRef] || self._fragments[keyRef];
-}
-
-
-/**
- * Remove cached schema(s).
- * If no parameter is passed all schemas but meta-schemas are removed.
- * If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.
- * Even if schema is referenced by other schemas it still can be removed as other schemas have local references.
- * @this Ajv
- * @param {String|Object|RegExp} schemaKeyRef key, ref, pattern to match key/ref or schema object
- * @return {Ajv} this for method chaining
- */
-function removeSchema(schemaKeyRef) {
- if (schemaKeyRef instanceof RegExp) {
- _removeAllSchemas(this, this._schemas, schemaKeyRef);
- _removeAllSchemas(this, this._refs, schemaKeyRef);
- return this;
- }
- switch (typeof schemaKeyRef) {
- case 'undefined':
- _removeAllSchemas(this, this._schemas);
- _removeAllSchemas(this, this._refs);
- this._cache.clear();
- return this;
- case 'string':
- var schemaObj = _getSchemaObj(this, schemaKeyRef);
- if (schemaObj) this._cache.del(schemaObj.cacheKey);
- delete this._schemas[schemaKeyRef];
- delete this._refs[schemaKeyRef];
- return this;
- case 'object':
- var serialize = this._opts.serialize;
- var cacheKey = serialize ? serialize(schemaKeyRef) : schemaKeyRef;
- this._cache.del(cacheKey);
- var id = this._getId(schemaKeyRef);
- if (id) {
- id = resolve.normalizeId(id);
- delete this._schemas[id];
- delete this._refs[id];
- }
- }
- return this;
-}
-
-
-function _removeAllSchemas(self, schemas, regex) {
- for (var keyRef in schemas) {
- var schemaObj = schemas[keyRef];
- if (!schemaObj.meta && (!regex || regex.test(keyRef))) {
- self._cache.del(schemaObj.cacheKey);
- delete schemas[keyRef];
- }
- }
-}
-
-
-/* @this Ajv */
-function _addSchema(schema, skipValidation, meta, shouldAddSchema) {
- if (typeof schema != 'object' && typeof schema != 'boolean')
- throw new Error('schema should be object or boolean');
- var serialize = this._opts.serialize;
- var cacheKey = serialize ? serialize(schema) : schema;
- var cached = this._cache.get(cacheKey);
- if (cached) return cached;
-
- shouldAddSchema = shouldAddSchema || this._opts.addUsedSchema !== false;
-
- var id = resolve.normalizeId(this._getId(schema));
- if (id && shouldAddSchema) checkUnique(this, id);
-
- var willValidate = this._opts.validateSchema !== false && !skipValidation;
- var recursiveMeta;
- if (willValidate && !(recursiveMeta = id && id == resolve.normalizeId(schema.$schema)))
- this.validateSchema(schema, true);
-
- var localRefs = resolve.ids.call(this, schema);
-
- var schemaObj = new SchemaObject({
- id: id,
- schema: schema,
- localRefs: localRefs,
- cacheKey: cacheKey,
- meta: meta
- });
-
- if (id[0] != '#' && shouldAddSchema) this._refs[id] = schemaObj;
- this._cache.put(cacheKey, schemaObj);
-
- if (willValidate && recursiveMeta) this.validateSchema(schema, true);
-
- return schemaObj;
-}
-
-
-/* @this Ajv */
-function _compile(schemaObj, root) {
- if (schemaObj.compiling) {
- schemaObj.validate = callValidate;
- callValidate.schema = schemaObj.schema;
- callValidate.errors = null;
- callValidate.root = root ? root : callValidate;
- if (schemaObj.schema.$async === true)
- callValidate.$async = true;
- return callValidate;
- }
- schemaObj.compiling = true;
-
- var currentOpts;
- if (schemaObj.meta) {
- currentOpts = this._opts;
- this._opts = this._metaOpts;
- }
-
- var v;
- try { v = compileSchema.call(this, schemaObj.schema, root, schemaObj.localRefs); }
- catch(e) {
- delete schemaObj.validate;
- throw e;
- }
- finally {
- schemaObj.compiling = false;
- if (schemaObj.meta) this._opts = currentOpts;
- }
-
- schemaObj.validate = v;
- schemaObj.refs = v.refs;
- schemaObj.refVal = v.refVal;
- schemaObj.root = v.root;
- return v;
-
-
- /* @this {*} - custom context, see passContext option */
- function callValidate() {
- /* jshint validthis: true */
- var _validate = schemaObj.validate;
- var result = _validate.apply(this, arguments);
- callValidate.errors = _validate.errors;
- return result;
- }
-}
-
-
-function chooseGetId(opts) {
- switch (opts.schemaId) {
- case 'auto': return _get$IdOrId;
- case 'id': return _getId;
- default: return _get$Id;
- }
-}
-
-/* @this Ajv */
-function _getId(schema) {
- if (schema.$id) this.logger.warn('schema $id ignored', schema.$id);
- return schema.id;
-}
-
-/* @this Ajv */
-function _get$Id(schema) {
- if (schema.id) this.logger.warn('schema id ignored', schema.id);
- return schema.$id;
-}
-
-
-function _get$IdOrId(schema) {
- if (schema.$id && schema.id && schema.$id != schema.id)
- throw new Error('schema $id is different from id');
- return schema.$id || schema.id;
-}
-
-
-/**
- * Convert array of error message objects to string
- * @this Ajv
- * @param {Array<Object>} errors optional array of validation errors, if not passed errors from the instance are used.
- * @param {Object} options optional options with properties `separator` and `dataVar`.
- * @return {String} human readable string with all errors descriptions
- */
-function errorsText(errors, options) {
- errors = errors || this.errors;
- if (!errors) return 'No errors';
- options = options || {};
- var separator = options.separator === undefined ? ', ' : options.separator;
- var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;
-
- var text = '';
- for (var i=0; i<errors.length; i++) {
- var e = errors[i];
- if (e) text += dataVar + e.dataPath + ' ' + e.message + separator;
- }
- return text.slice(0, -separator.length);
-}
-
-
-/**
- * Add custom format
- * @this Ajv
- * @param {String} name format name
- * @param {String|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid)
- * @return {Ajv} this for method chaining
- */
-function addFormat(name, format) {
- if (typeof format == 'string') format = new RegExp(format);
- this._formats[name] = format;
- return this;
-}
-
-
-function addDefaultMetaSchema(self) {
- var $dataSchema;
- if (self._opts.$data) {
- $dataSchema = require('./refs/data.json');
- self.addMetaSchema($dataSchema, $dataSchema.$id, true);
- }
- if (self._opts.meta === false) return;
- var metaSchema = require('./refs/json-schema-draft-07.json');
- if (self._opts.$data) metaSchema = $dataMetaSchema(metaSchema, META_SUPPORT_DATA);
- self.addMetaSchema(metaSchema, META_SCHEMA_ID, true);
- self._refs['http://json-schema.org/schema'] = META_SCHEMA_ID;
-}
-
-
-function addInitialSchemas(self) {
- var optsSchemas = self._opts.schemas;
- if (!optsSchemas) return;
- if (Array.isArray(optsSchemas)) self.addSchema(optsSchemas);
- else for (var key in optsSchemas) self.addSchema(optsSchemas[key], key);
-}
-
-
-function addInitialFormats(self) {
- for (var name in self._opts.formats) {
- var format = self._opts.formats[name];
- self.addFormat(name, format);
- }
-}
-
-
-function checkUnique(self, id) {
- if (self._schemas[id] || self._refs[id])
- throw new Error('schema with key or id "' + id + '" already exists');
-}
-
-
-function getMetaSchemaOptions(self) {
- var metaOpts = util.copy(self._opts);
- for (var i=0; i<META_IGNORE_OPTIONS.length; i++)
- delete metaOpts[META_IGNORE_OPTIONS[i]];
- return metaOpts;
-}
-
-
-function setLogger(self) {
- var logger = self._opts.logger;
- if (logger === false) {
- self.logger = {log: noop, warn: noop, error: noop};
- } else {
- if (logger === undefined) logger = console;
- if (!(typeof logger == 'object' && logger.log && logger.warn && logger.error))
- throw new Error('logger must implement log, warn and error methods');
- self.logger = logger;
- }
-}
-
-
-function noop() {}
-
-},{"./cache":1,"./compile":5,"./compile/async":2,"./compile/error_classes":3,"./compile/formats":4,"./compile/resolve":6,"./compile/rules":7,"./compile/schema_obj":8,"./compile/util":10,"./data":11,"./keyword":39,"./refs/data.json":40,"./refs/json-schema-draft-07.json":41,"fast-json-stable-stringify":43}]},{},[])("ajv")
-});
diff --git a/assets/node_modules/ajv/dist/ajv.min.js b/assets/node_modules/ajv/dist/ajv.min.js
deleted file mode 100644
index 68aa57f..0000000
--- a/assets/node_modules/ajv/dist/ajv.min.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/* ajv 6.11.0: Another JSON Schema Validator */
-!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Ajv=e()}}(function(){return function o(i,n,l){function c(r,e){if(!n[r]){if(!i[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(u)return u(r,!0);var a=new Error("Cannot find module '"+r+"'");throw a.code="MODULE_NOT_FOUND",a}var s=n[r]={exports:{}};i[r][0].call(s.exports,function(e){return c(i[r][1][e]||e)},s,s.exports,o,i,n,l)}return n[r].exports}for(var u="function"==typeof require&&require,e=0;e<l.length;e++)c(l[e]);return c}({1:[function(e,r,t){"use strict";var a=r.exports=function(){this._cache={}};a.prototype.put=function(e,r){this._cache[e]=r},a.prototype.get=function(e){return this._cache[e]},a.prototype.del=function(e){delete this._cache[e]},a.prototype.clear=function(){this._cache={}}},{}],2:[function(e,r,t){"use strict";var s=e("./error_classes").MissingRef;r.exports=function t(r,i,a){var n=this;if("function"!=typeof this._opts.loadSchema)throw new Error("options.loadSchema should be a function");"function"==typeof i&&(a=i,i=void 0);var e=l(r).then(function(){var e=n._addSchema(r,void 0,i);return e.validate||c(e)});a&&e.then(function(e){a(null,e)},a);return e;function l(e){var r=e.$schema;return r&&!n.getSchema(r)?t.call(n,{$ref:r},!0):Promise.resolve()}function c(o){try{return n._compile(o)}catch(e){if(e instanceof s)return r(e);throw e}function r(e){var r=e.missingSchema;if(s(r))throw new Error("Schema "+r+" is loaded but "+e.missingRef+" cannot be resolved");var t=n._loadingSchemas[r];return t||(t=n._loadingSchemas[r]=n._opts.loadSchema(r)).then(a,a),t.then(function(e){if(!s(r))return l(e).then(function(){s(r)||n.addSchema(e,r,void 0,i)})}).then(function(){return c(o)});function a(){delete n._loadingSchemas[r]}function s(e){return n._refs[e]||n._schemas[e]}}}}},{"./error_classes":3}],3:[function(e,r,t){"use strict";var a=e("./resolve");function s(e,r,t){this.message=t||s.message(e,r),this.missingRef=a.url(e,r),this.missingSchema=a.normalizeId(a.fullPath(this.missingRef))}function o(e){return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e}r.exports={Validation:o(function(e){this.message="validation failed",this.errors=e,this.ajv=this.validation=!0}),MissingRef:o(s)},s.message=function(e,r){return"can't resolve reference "+r+" from id "+e}},{"./resolve":6}],4:[function(e,r,t){"use strict";var a=e("./util"),o=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,i=[0,31,28,31,30,31,30,31,31,30,31,30,31],n=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,s=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i,l=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,c=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,u=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,h=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,d=/^(?:\/(?:[^~/]|~0|~1)*)*$/,f=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,p=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;function m(e){return a.copy(m[e="full"==e?"full":"fast"])}function v(e){var r=e.match(o);if(!r)return!1;var t,a=+r[2],s=+r[3];return 1<=a&&a<=12&&1<=s&&s<=(2!=a||((t=+r[1])%4!=0||t%100==0&&t%400!=0)?i[a]:29)}function y(e,r){var t=e.match(n);if(!t)return!1;var a=t[1],s=t[2],o=t[3];return(a<=23&&s<=59&&o<=59||23==a&&59==s&&60==o)&&(!r||t[5])}(r.exports=m).fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":c,url:u,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:s,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":d,"json-pointer-uri-fragment":f,"relative-json-pointer":p},m.full={date:v,time:y,"date-time":function(e){var r=e.split(g);return 2==r.length&&v(r[0])&&y(r[1],!0)},uri:function(e){return P.test(e)&&l.test(e)},"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":c,url:u,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:function(e){return e.length<=255&&s.test(e)},ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":d,"json-pointer-uri-fragment":f,"relative-json-pointer":p};var g=/t|\s/i;var P=/\/|:/;var E=/[^\\]\\Z/;function w(e){if(E.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}},{"./util":10}],5:[function(e,r,t){"use strict";var j=e("./resolve"),O=e("./util"),I=e("./error_classes"),A=e("fast-json-stable-stringify"),C=e("../dotjs/validate"),k=O.ucs2length,L=e("fast-deep-equal"),z=I.Validation;function T(e,r,t){var a=s.call(this,e,r,t);return 0<=a?{index:a,compiling:!0}:{index:a=this._compilations.length,compiling:!(this._compilations[a]={schema:e,root:r,baseId:t})}}function q(e,r,t){var a=s.call(this,e,r,t);0<=a&&this._compilations.splice(a,1)}function s(e,r,t){for(var a=0;a<this._compilations.length;a++){var s=this._compilations[a];if(s.schema==e&&s.root==r&&s.baseId==t)return a}return-1}function N(e,r){return"var pattern"+e+" = new RegExp("+O.toQuotedString(r[e])+");"}function Q(e){return"var default"+e+" = defaults["+e+"];"}function U(e,r){return void 0===r[e]?"":"var refVal"+e+" = refVal["+e+"];"}function V(e){return"var customRule"+e+" = customRules["+e+"];"}function H(e,r){if(!e.length)return"";for(var t="",a=0;a<e.length;a++)t+=r(a,e);return t}r.exports=function c(e,u,h,r){var f=this,p=this._opts,d=[void 0],m={},v=[],t={},y=[],a={},g=[];u=u||{schema:e,refVal:d,refs:m};var s=T.call(this,e,u,r);var o=this._compilations[s.index];if(s.compiling)return o.callValidate=l;var P=this._formats;var E=this.RULES;try{var i=w(e,u,h,r);o.validate=i;var n=o.callValidate;return n&&(n.schema=i.schema,n.errors=null,n.refs=i.refs,n.refVal=i.refVal,n.root=i.root,n.$async=i.$async,p.sourceCode&&(n.source=i.source)),i}finally{q.call(this,e,u,r)}function l(){var e=o.validate,r=e.apply(this,arguments);return l.errors=e.errors,r}function w(e,r,t,a){var s=!r||r&&r.schema==e;if(r.schema!=u.schema)return c.call(f,e,r,t,a);var o,i=!0===e.$async,n=C({isTop:!0,schema:e,isRoot:s,baseId:a,root:r,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:I.MissingRef,RULES:E,validate:C,util:O,resolve:j,resolveRef:b,usePattern:R,useDefault:$,useCustomRule:D,opts:p,formats:P,logger:f.logger,self:f});n=H(d,U)+H(v,N)+H(y,Q)+H(g,V)+n,p.processCode&&(n=p.processCode(n));try{var l=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",n);o=l(f,E,P,u,d,y,g,L,k,z),d[0]=o}catch(e){throw f.logger.error("Error compiling schema, function code:",n),e}return o.schema=e,o.errors=null,o.refs=m,o.refVal=d,o.root=s?o:r,i&&(o.$async=!0),!0===p.sourceCode&&(o.source={code:n,patterns:v,defaults:y}),o}function b(e,r,t){r=j.url(e,r);var a,s,o=m[r];if(void 0!==o)return x(a=d[o],s="refVal["+o+"]");if(!t&&u.refs){var i=u.refs[r];if(void 0!==i)return s=S(r,a=u.refVal[i]),x(a,s)}s=S(r);var n=j.call(f,w,u,r);if(void 0===n){var l=h&&h[r];l&&(n=j.inlineRef(l,p.inlineRefs)?l:c.call(f,l,u,h,e))}if(void 0!==n)return F(r,n),x(n,s);_(r)}function S(e,r){var t=d.length;return d[t]=r,"refVal"+(m[e]=t)}function _(e){delete m[e]}function F(e,r){var t=m[e];d[t]=r}function x(e,r){return"object"==typeof e||"boolean"==typeof e?{code:r,schema:e,inline:!0}:{code:r,$async:e&&!!e.$async}}function R(e){var r=t[e];return void 0===r&&(r=t[e]=v.length,v[r]=e),"pattern"+r}function $(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return O.toQuotedString(e);case"object":if(null===e)return"null";var r=A(e),t=a[r];return void 0===t&&(t=a[r]=y.length,y[t]=e),"default"+t}}function D(e,r,t,a){if(!1!==f._opts.validateSchema){var s=e.definition.dependencies;if(s&&!s.every(function(e){return Object.prototype.hasOwnProperty.call(t,e)}))throw new Error("parent schema must have all required keywords: "+s.join(","));var o=e.definition.validateSchema;if(o){var i=o(r);if(!i){var n="keyword schema is invalid: "+f.errorsText(o.errors);if("log"!=f._opts.validateSchema)throw new Error(n);f.logger.error(n)}}}var l,c=e.definition.compile,u=e.definition.inline,h=e.definition.macro;if(c)l=c.call(f,r,t,a);else if(h)l=h.call(f,r,t,a),!1!==p.validateSchema&&f.validateSchema(l,!0);else if(u)l=u.call(f,a,e.keyword,r,t);else if(!(l=e.definition.validate))return;if(void 0===l)throw new Error('custom keyword "'+e.keyword+'"failed to compile');var d=g.length;return{code:"customRule"+d,validate:g[d]=l}}}},{"../dotjs/validate":38,"./error_classes":3,"./resolve":6,"./util":10,"fast-deep-equal":42,"fast-json-stable-stringify":43}],6:[function(e,r,t){"use strict";var m=e("uri-js"),v=e("fast-deep-equal"),y=e("./util"),l=e("./schema_obj"),a=e("json-schema-traverse");function c(e,r,t){var a=this._refs[t];if("string"==typeof a){if(!this._refs[a])return c.call(this,e,r,a);a=this._refs[a]}if((a=a||this._schemas[t])instanceof l)return d(a.schema,this._opts.inlineRefs)?a.schema:a.validate||this._compile(a);var s,o,i,n=u.call(this,r,t);return n&&(s=n.schema,r=n.root,i=n.baseId),s instanceof l?o=s.validate||e.call(this,s.schema,r,void 0,i):void 0!==s&&(o=d(s,this._opts.inlineRefs)?s:e.call(this,s,r,void 0,i)),o}function u(e,r){var t=m.parse(r),a=f(t),s=g(this._getId(e.schema));if(0===Object.keys(e.schema).length||a!==s){var o=P(a),i=this._refs[o];if("string"==typeof i)return function(e,r,t){var a=u.call(this,e,r);if(a){var s=a.schema,o=a.baseId;e=a.root;var i=this._getId(s);return i&&(o=p(o,i)),n.call(this,t,o,s,e)}}.call(this,e,i,t);if(i instanceof l)i.validate||this._compile(i),e=i;else{if(!((i=this._schemas[o])instanceof l))return;if(i.validate||this._compile(i),o==P(r))return{schema:i,root:e,baseId:s};e=i}if(!e.schema)return;s=g(this._getId(e.schema))}return n.call(this,t,s,e.schema,e)}(r.exports=c).normalizeId=P,c.fullPath=g,c.url=p,c.ids=function(e){var r=P(this._getId(e)),h={"":r},d={"":g(r,!1)},f={},p=this;return a(e,{allKeys:!0},function(e,r,t,a,s,o,i){if(""!==r){var n=p._getId(e),l=h[a],c=d[a]+"/"+s;if(void 0!==i&&(c+="/"+("number"==typeof i?i:y.escapeFragment(i))),"string"==typeof n){n=l=P(l?m.resolve(l,n):n);var u=p._refs[n];if("string"==typeof u&&(u=p._refs[u]),u&&u.schema){if(!v(e,u.schema))throw new Error('id "'+n+'" resolves to more than one schema')}else if(n!=P(c))if("#"==n[0]){if(f[n]&&!v(e,f[n]))throw new Error('id "'+n+'" resolves to more than one schema');f[n]=e}else p._refs[n]=c}h[r]=l,d[r]=c}}),f},c.inlineRef=d,c.schema=u;var h=y.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function n(e,r,t,a){if(e.fragment=e.fragment||"","/"==e.fragment.slice(0,1)){for(var s=e.fragment.split("/"),o=1;o<s.length;o++){var i=s[o];if(i){if(void 0===(t=t[i=y.unescapeFragment(i)]))break;var n;if(!h[i]&&((n=this._getId(t))&&(r=p(r,n)),t.$ref)){var l=p(r,t.$ref),c=u.call(this,a,l);c&&(t=c.schema,a=c.root,r=c.baseId)}}}return void 0!==t&&t!==a.schema?{schema:t,root:a,baseId:r}:void 0}}var i=y.toHash(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum"]);function d(e,r){return!1!==r&&(void 0===r||!0===r?function e(r){var t;if(Array.isArray(r)){for(var a=0;a<r.length;a++)if("object"==typeof(t=r[a])&&!e(t))return!1}else for(var s in r){if("$ref"==s)return!1;if("object"==typeof(t=r[s])&&!e(t))return!1}return!0}(e):r?function e(r){var t,a=0;if(Array.isArray(r)){for(var s=0;s<r.length;s++)if("object"==typeof(t=r[s])&&(a+=e(t)),a==1/0)return 1/0}else for(var o in r){if("$ref"==o)return 1/0;if(i[o])a++;else if("object"==typeof(t=r[o])&&(a+=e(t)+1),a==1/0)return 1/0}return a}(e)<=r:void 0)}function g(e,r){return!1!==r&&(e=P(e)),f(m.parse(e))}function f(e){return m.serialize(e).split("#")[0]+"#"}var s=/#\/?$/;function P(e){return e?e.replace(s,""):""}function p(e,r){return r=P(r),m.resolve(e,r)}},{"./schema_obj":8,"./util":10,"fast-deep-equal":42,"json-schema-traverse":44,"uri-js":45}],7:[function(e,r,t){"use strict";var o=e("../dotjs"),i=e("./util").toHash;r.exports=function(){var a=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],s=["type","$comment"];return a.all=i(s),a.types=i(["number","integer","string","array","object","boolean","null"]),a.forEach(function(e){e.rules=e.rules.map(function(e){var r;if("object"==typeof e){var t=Object.keys(e)[0];r=e[t],e=t,r.forEach(function(e){s.push(e),a.all[e]=!0})}return s.push(e),a.all[e]={keyword:e,code:o[e],implements:r}}),a.all.$comment={keyword:"$comment",code:o.$comment},e.type&&(a.types[e.type]=e)}),a.keywords=i(s.concat(["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"])),a.custom={},a}},{"../dotjs":27,"./util":10}],8:[function(e,r,t){"use strict";var a=e("./util");r.exports=function(e){a.copy(e,this)}},{"./util":10}],9:[function(e,r,t){"use strict";r.exports=function(e){for(var r,t=0,a=e.length,s=0;s<a;)t++,55296<=(r=e.charCodeAt(s++))&&r<=56319&&s<a&&56320==(64512&(r=e.charCodeAt(s)))&&s++;return t}},{}],10:[function(e,r,t){"use strict";function o(e,r,t){var a=t?" !== ":" === ",s=t?" || ":" && ",o=t?"!":"",i=t?"":"!";switch(e){case"null":return r+a+"null";case"array":return o+"Array.isArray("+r+")";case"object":return"("+o+r+s+"typeof "+r+a+'"object"'+s+i+"Array.isArray("+r+"))";case"integer":return"(typeof "+r+a+'"number"'+s+i+"("+r+" % 1)"+s+r+a+r+")";default:return"typeof "+r+a+'"'+e+'"'}}r.exports={copy:function(e,r){for(var t in r=r||{},e)r[t]=e[t];return r},checkDataType:o,checkDataTypes:function(e,r){switch(e.length){case 1:return o(e[0],r,!0);default:var t="",a=n(e);for(var s in a.array&&a.object&&(t=a.null?"(":"(!"+r+" || ",t+="typeof "+r+' !== "object")',delete a.null,delete a.array,delete a.object),a.number&&delete a.integer,a)t+=(t?" && ":"")+o(s,r,!0);return t}},coerceToTypes:function(e,r){if(Array.isArray(r)){for(var t=[],a=0;a<r.length;a++){var s=r[a];i[s]?t[t.length]=s:"array"===e&&"array"===s&&(t[t.length]=s)}if(t.length)return t}else{if(i[r])return[r];if("array"===e&&"array"===r)return["array"]}},toHash:n,getProperty:h,escapeQuotes:l,equal:e("fast-deep-equal"),ucs2length:e("./ucs2length"),varOccurences:function(e,r){r+="[^0-9]";var t=e.match(new RegExp(r,"g"));return t?t.length:0},varReplace:function(e,r,t){return r+="([^0-9])",t=t.replace(/\$/g,"$$$$"),e.replace(new RegExp(r,"g"),t+"$1")},cleanUpCode:function(e){return e.replace(c,"").replace(u,"").replace(d,"if (!($1))")},finalCleanUpCode:function(e,r){var t=e.match(f);t&&2==t.length&&(e=r?e.replace(m,"").replace(g,P):e.replace(p,"").replace(v,y));return(t=e.match(E))&&3===t.length?e.replace(w,""):e},schemaHasRules:function(e,r){if("boolean"==typeof e)return!e;for(var t in e)if(r[t])return!0},schemaHasRulesExcept:function(e,r,t){if("boolean"==typeof e)return!e&&"not"!=t;for(var a in e)if(a!=t&&r[a])return!0},schemaUnknownRules:function(e,r){if("boolean"==typeof e)return;for(var t in e)if(!r[t])return t},toQuotedString:b,getPathExpr:function(e,r,t,a){return F(e,t?"'/' + "+r+(a?"":".replace(/~/g, '~0').replace(/\\//g, '~1')"):a?"'[' + "+r+" + ']'":"'[\\'' + "+r+" + '\\']'")},getPath:function(e,r,t){var a=b(t?"/"+x(r):h(r));return F(e,a)},getData:function(e,r,t){var a,s,o,i;if(""===e)return"rootData";if("/"==e[0]){if(!S.test(e))throw new Error("Invalid JSON-pointer: "+e);s=e,o="rootData"}else{if(!(i=e.match(_)))throw new Error("Invalid JSON-pointer: "+e);if(a=+i[1],"#"==(s=i[2])){if(r<=a)throw new Error("Cannot access property/index "+a+" levels up, current level is "+r);return t[r-a]}if(r<a)throw new Error("Cannot access data "+a+" levels up, current level is "+r);if(o="data"+(r-a||""),!s)return o}for(var n=o,l=s.split("/"),c=0;c<l.length;c++){var u=l[c];u&&(o+=h(R(u)),n+=" && "+o)}return n},unescapeFragment:function(e){return R(decodeURIComponent(e))},unescapeJsonPointer:R,escapeFragment:function(e){return encodeURIComponent(x(e))},escapeJsonPointer:x};var i=n(["string","number","integer","boolean","null"]);function n(e){for(var r={},t=0;t<e.length;t++)r[e[t]]=!0;return r}var a=/^[a-z$_][a-z$_0-9]*$/i,s=/'|\\/g;function h(e){return"number"==typeof e?"["+e+"]":a.test(e)?"."+e:"['"+l(e)+"']"}function l(e){return e.replace(s,"\\$&").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\f/g,"\\f").replace(/\t/g,"\\t")}var c=/else\s*{\s*}/g,u=/if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g,d=/if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g;var f=/[^v.]errors/g,p=/var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g,m=/var errors = 0;|var vErrors = null;/g,v="return errors === 0;",y="validate.errors = null; return true;",g=/if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/,P="return data;",E=/[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g,w=/if \(rootData === undefined\) rootData = data;/;function b(e){return"'"+l(e)+"'"}var S=/^\/(?:[^~]|~0|~1)*$/,_=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function F(e,r){return'""'==e?r:(e+" + "+r).replace(/' \+ '/g,"")}function x(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function R(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}},{"./ucs2length":9,"fast-deep-equal":42}],11:[function(e,r,t){"use strict";var l=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];r.exports=function(e,r){for(var t=0;t<r.length;t++){e=JSON.parse(JSON.stringify(e));var a,s=r[t].split("/"),o=e;for(a=1;a<s.length;a++)o=o[s[a]];for(a=0;a<l.length;a++){var i=l[a],n=o[i];n&&(o[i]={anyOf:[n,{$ref:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#"}]})}}return e}},{}],12:[function(e,r,t){"use strict";var a=e("./refs/json-schema-draft-07.json");r.exports={$id:"https://github.com/epoberezkin/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:a.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:a.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}},{"./refs/json-schema-draft-07.json":41}],13:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i;var d="maximum"==r,f=d?"exclusiveMaximum":"exclusiveMinimum",p=e.schema[f],m=e.opts.$data&&p&&p.$data,v=d?"<":">",y=d?">":"<",g=void 0;if(m){var P=e.util.getData(p.$data,o,e.dataPathArr),E="exclusive"+s,w="exclType"+s,b="exclIsNumber"+s,S="' + "+(x="op"+s)+" + '";a+=" var schemaExcl"+s+" = "+P+"; ";var _;g=f;(_=_||[]).push(a+=" var "+E+"; var "+w+" = typeof "+(P="schemaExcl"+s)+"; if ("+w+" != 'boolean' && "+w+" != 'undefined' && "+w+" != 'number') { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(g||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: '"+f+" should be boolean' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var F=a;a=_.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=" "+w+" == 'number' ? ( ("+E+" = "+t+" === undefined || "+P+" "+v+"= "+t+") ? "+u+" "+y+"= "+P+" : "+u+" "+y+" "+t+" ) : ( ("+E+" = "+P+" === true) ? "+u+" "+y+"= "+t+" : "+u+" "+y+" "+t+" ) || "+u+" !== "+u+") { var op"+s+" = "+E+" ? '"+v+"' : '"+v+"='; ",void 0===i&&(l=e.errSchemaPath+"/"+(g=f),t=P,h=m)}else{S=v;if((b="number"==typeof p)&&h){var x="'"+S+"'";a+=" if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=" ( "+t+" === undefined || "+p+" "+v+"= "+t+" ? "+u+" "+y+"= "+p+" : "+u+" "+y+" "+t+" ) || "+u+" !== "+u+") { "}else{b&&void 0===i?(E=!0,l=e.errSchemaPath+"/"+(g=f),t=p,y+="="):(b&&(t=Math[d?"min":"max"](p,i)),p===(!b||t)?(E=!0,l=e.errSchemaPath+"/"+(g=f),y+="="):(E=!1,S+="="));x="'"+S+"'";a+=" if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=" "+u+" "+y+" "+t+" || "+u+" !== "+u+") { "}}g=g||r,(_=_||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: '"+(g||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { comparison: "+x+", limit: "+t+", exclusive: "+E+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be "+S+" ",a+=h?"' + "+t:t+"'"),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";F=a;return a=_.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { "),a}},{}],14:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,a+="if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || ");var d=r,f=f||[];f.push(a+=" "+u+".length "+("maxItems"==r?">":"<")+" "+t+") { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(d||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have ",a+="maxItems"==r?"more":"fewer",a+=" than ",a+=h?"' + "+t+" + '":""+i,a+=" items' "),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],15:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,a+="if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || "),a+=!1===e.opts.unicode?" "+u+".length ":" ucs2length("+u+") ";var d=r,f=f||[];f.push(a+=" "+("maxLength"==r?">":"<")+" "+t+") { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(d||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be ",a+="maxLength"==r?"longer":"shorter",a+=" than ",a+=h?"' + "+t+" + '":""+i,a+=" characters' "),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],16:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,a+="if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'number') || ");var d=r,f=f||[];f.push(a+=" Object.keys("+u+").length "+("maxProperties"==r?">":"<")+" "+t+") { "),a="",!1!==e.createErrors?(a+=" { keyword: '"+(d||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have ",a+="maxProperties"==r?"more":"fewer",a+=" than ",a+=h?"' + "+t+" + '":""+i,a+=" properties' "),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],17:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.schema[r],s=e.schemaPath+e.util.getProperty(r),o=e.errSchemaPath+"/"+r,i=!e.opts.allErrors,n=e.util.copy(e),l="";n.level++;var c="valid"+n.level,u=n.baseId,h=!0,d=a;if(d)for(var f,p=-1,m=d.length-1;p<m;)f=d[p+=1],(e.opts.strictKeywords?"object"==typeof f&&0<Object.keys(f).length:e.util.schemaHasRules(f,e.RULES.all))&&(h=!1,n.schema=f,n.schemaPath=s+"["+p+"]",n.errSchemaPath=o+"/"+p,t+=" "+e.validate(n)+" ",n.baseId=u,i&&(t+=" if ("+c+") { ",l+="}"));return i&&(t+=h?" if (true) { ":" "+l.slice(0,-1)+" "),t=e.util.cleanUpCode(t)}},{}],18:[function(e,r,t){"use strict";r.exports=function(r,e){var t=" ",a=r.level,s=r.dataLevel,o=r.schema[e],i=r.schemaPath+r.util.getProperty(e),n=r.errSchemaPath+"/"+e,l=!r.opts.allErrors,c="data"+(s||""),u="valid"+a,h="errs__"+a,d=r.util.copy(r),f="";d.level++;var p="valid"+d.level;if(o.every(function(e){return r.opts.strictKeywords?"object"==typeof e&&0<Object.keys(e).length:r.util.schemaHasRules(e,r.RULES.all)})){var m=d.baseId;t+=" var "+h+" = errors; var "+u+" = false; ";var v=r.compositeRule;r.compositeRule=d.compositeRule=!0;var y=o;if(y)for(var g,P=-1,E=y.length-1;P<E;)g=y[P+=1],d.schema=g,d.schemaPath=i+"["+P+"]",d.errSchemaPath=n+"/"+P,t+=" "+r.validate(d)+" ",d.baseId=m,t+=" "+u+" = "+u+" || "+p+"; if (!"+u+") { ",f+="}";r.compositeRule=d.compositeRule=v,t+=" "+f+" if (!"+u+") { var err = ",!1!==r.createErrors?(t+=" { keyword: 'anyOf' , dataPath: (dataPath || '') + "+r.errorPath+" , schemaPath: "+r.util.toQuotedString(n)+" , params: {} ",!1!==r.opts.messages&&(t+=" , message: 'should match some schema in anyOf' "),r.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+r.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!r.compositeRule&&l&&(t+=r.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),t+=" } else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",r.opts.allErrors&&(t+=" } "),t=r.util.cleanUpCode(t)}else l&&(t+=" if (true) { ");return t}},{}],19:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.errSchemaPath+"/"+r,s=e.util.toQuotedString(e.schema[r]);return!0===e.opts.$comment?t+=" console.log("+s+");":"function"==typeof e.opts.$comment&&(t+=" self._opts.$comment("+s+", "+e.util.toQuotedString(a)+", validate.root.schema);"),t}},{}],20:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h=e.opts.$data&&o&&o.$data;h&&(t+=" var schema"+a+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; "),h||(t+=" var schema"+a+" = validate.schema"+i+";");var d=d||[];d.push(t+="var "+u+" = equal("+c+", schema"+a+"); if (!"+u+") { "),t="",!1!==e.createErrors?(t+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { allowedValue: schema"+a+" } ",!1!==e.opts.messages&&(t+=" , message: 'should be equal to constant' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var f=t;return t=d.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+f+"]); ":" validate.errors = ["+f+"]; return false; ":" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" }",l&&(t+=" else { "),t}},{}],21:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h="errs__"+a,d=e.util.copy(e);d.level++;var f="valid"+d.level,p="i"+a,m=d.dataLevel=e.dataLevel+1,v="data"+m,y=e.baseId,g=e.opts.strictKeywords?"object"==typeof o&&0<Object.keys(o).length:e.util.schemaHasRules(o,e.RULES.all);if(t+="var "+h+" = errors;var "+u+";",g){var P=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.schema=o,d.schemaPath=i,d.errSchemaPath=n,t+=" var "+f+" = false; for (var "+p+" = 0; "+p+" < "+c+".length; "+p+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers,!0);var E=c+"["+p+"]";d.dataPathArr[m]=p;var w=e.validate(d);d.baseId=y,e.util.varOccurences(w,v)<2?t+=" "+e.util.varReplace(w,v,E)+" ":t+=" var "+v+" = "+E+"; "+w+" ",t+=" if ("+f+") break; } ",e.compositeRule=d.compositeRule=P,t+=" if (!"+f+") {"}else t+=" if ("+c+".length == 0) {";var b=b||[];b.push(t),t="",!1!==e.createErrors?(t+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: {} ",!1!==e.opts.messages&&(t+=" , message: 'should contain a valid item' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var S=t;return t=b.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { ",g&&(t+=" errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } "),e.opts.allErrors&&(t+=" } "),t=e.util.cleanUpCode(t)}},{}],22:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,h="data"+(i||""),d="valid"+o,f="errs__"+o,p=e.opts.$data&&n&&n.$data;a=p?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n;var m,v,y,g,P,E=this,w="definition"+o,b=E.definition,S="";if(p&&b.$data){var _=b.validateSchema;s+=" var "+w+" = RULES.custom['"+r+"'].definition; var "+(P="keywordValidate"+o)+" = "+w+".validate;"}else{if(!(g=e.useCustomRule(E,n,e.schema,e)))return;a="validate.schema"+l,P=g.code,m=b.compile,v=b.inline,y=b.macro}var F=P+".errors",x="i"+o,R="ruleErr"+o,$=b.async;if($&&!e.async)throw new Error("async keyword in sync schema");if(v||y||(s+=F+" = null;"),s+="var "+f+" = errors;var "+d+";",p&&b.$data&&(S+="}",s+=" if ("+a+" === undefined) { "+d+" = true; } else { ",_&&(S+="}",s+=" "+d+" = "+w+".validateSchema("+a+"); if ("+d+") { ")),v)s+=b.statements?" "+g.validate+" ":" "+d+" = "+g.validate+"; ";else if(y){var D=e.util.copy(e);S="";D.level++;var j="valid"+D.level;D.schema=g.validate,D.schemaPath="";var O=e.compositeRule;e.compositeRule=D.compositeRule=!0;var I=e.validate(D).replace(/validate\.schema/g,P);e.compositeRule=D.compositeRule=O,s+=" "+I}else{(L=L||[]).push(s),s="",s+=" "+P+".call( ",s+=e.opts.passContext?"this":"self",s+=m||!1===b.schema?" , "+h+" ":" , "+a+" , "+h+" , validate.schema"+e.schemaPath+" ",s+=" , (dataPath || '')",'""'!=e.errorPath&&(s+=" + "+e.errorPath);var A=i?"data"+(i-1||""):"parentData",C=i?e.dataPathArr[i]:"parentDataProperty",k=s+=" , "+A+" , "+C+" , rootData ) ";s=L.pop(),!1===b.errors?(s+=" "+d+" = ",$&&(s+="await "),s+=k+"; "):s+=$?" var "+(F="customErrors"+o)+" = null; try { "+d+" = await "+k+"; } catch (e) { "+d+" = false; if (e instanceof ValidationError) "+F+" = e.errors; else throw e; } ":" "+F+" = null; "+d+" = "+k+"; "}if(b.modifying&&(s+=" if ("+A+") "+h+" = "+A+"["+C+"];"),s+=""+S,b.valid)u&&(s+=" if (true) { ");else{var L;s+=" if ( ",void 0===b.valid?(s+=" !",s+=y?""+j:d):s+=" "+!b.valid+" ",t=E.keyword,(L=L||[]).push(s+=") { "),(L=L||[]).push(s=""),s="",!1!==e.createErrors?(s+=" { keyword: '"+(t||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { keyword: '"+E.keyword+"' } ",!1!==e.opts.messages&&(s+=" , message: 'should pass \""+E.keyword+"\" keyword validation' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var z=s;s=L.pop();var T=s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+z+"]); ":" validate.errors = ["+z+"]; return false; ":" var err = "+z+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";s=L.pop(),v?b.errors?"full"!=b.errors&&(s+=" for (var "+x+"="+f+"; "+x+"<errors; "+x+"++) { var "+R+" = vErrors["+x+"]; if ("+R+".dataPath === undefined) "+R+".dataPath = (dataPath || '') + "+e.errorPath+"; if ("+R+".schemaPath === undefined) { "+R+'.schemaPath = "'+c+'"; } ',e.opts.verbose&&(s+=" "+R+".schema = "+a+"; "+R+".data = "+h+"; "),s+=" } "):!1===b.errors?s+=" "+T+" ":(s+=" if ("+f+" == errors) { "+T+" } else { for (var "+x+"="+f+"; "+x+"<errors; "+x+"++) { var "+R+" = vErrors["+x+"]; if ("+R+".dataPath === undefined) "+R+".dataPath = (dataPath || '') + "+e.errorPath+"; if ("+R+".schemaPath === undefined) { "+R+'.schemaPath = "'+c+'"; } ',e.opts.verbose&&(s+=" "+R+".schema = "+a+"; "+R+".data = "+h+"; "),s+=" } } "):y?(s+=" var err = ",!1!==e.createErrors?(s+=" { keyword: '"+(t||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { keyword: '"+E.keyword+"' } ",!1!==e.opts.messages&&(s+=" , message: 'should pass \""+E.keyword+"\" keyword validation' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ",s+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(s+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; ")):!1===b.errors?s+=" "+T+" ":(s+=" if (Array.isArray("+F+")) { if (vErrors === null) vErrors = "+F+"; else vErrors = vErrors.concat("+F+"); errors = vErrors.length; for (var "+x+"="+f+"; "+x+"<errors; "+x+"++) { var "+R+" = vErrors["+x+"]; if ("+R+".dataPath === undefined) "+R+".dataPath = (dataPath || '') + "+e.errorPath+"; "+R+'.schemaPath = "'+c+'"; ',e.opts.verbose&&(s+=" "+R+".schema = "+a+"; "+R+".data = "+h+"; "),s+=" } } else { "+T+" } "),s+=" } ",u&&(s+=" else { ")}return s}},{}],23:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="errs__"+a,h=e.util.copy(e),d="";h.level++;var f="valid"+h.level,p={},m={},v=e.opts.ownProperties;for(E in o){var y=o[E],g=Array.isArray(y)?m:p;g[E]=y}t+="var "+u+" = errors;";var P=e.errorPath;for(var E in t+="var missing"+a+";",m)if((g=m[E]).length){if(t+=" if ( "+c+e.util.getProperty(E)+" !== undefined ",v&&(t+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(E)+"') "),l){t+=" && ( ";var w=g;if(w)for(var b=-1,S=w.length-1;b<S;){D=w[b+=1],b&&(t+=" || "),t+=" ( ( "+(A=c+(I=e.util.getProperty(D)))+" === undefined ",v&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(D)+"') "),t+=") && (missing"+a+" = "+e.util.toQuotedString(e.opts.jsonPointers?D:I)+") ) "}t+=")) { ";var _="missing"+a,F="' + "+_+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(P,_,!0):P+" + "+_);var x=x||[];x.push(t),t="",!1!==e.createErrors?(t+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { property: '"+e.util.escapeQuotes(E)+"', missingProperty: '"+F+"', depsCount: "+g.length+", deps: '"+e.util.escapeQuotes(1==g.length?g[0]:g.join(", "))+"' } ",!1!==e.opts.messages&&(t+=" , message: 'should have ",t+=1==g.length?"property "+e.util.escapeQuotes(g[0]):"properties "+e.util.escapeQuotes(g.join(", ")),t+=" when property "+e.util.escapeQuotes(E)+" is present' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var R=t;t=x.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+R+"]); ":" validate.errors = ["+R+"]; return false; ":" var err = "+R+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else{t+=" ) { ";var $=g;if($)for(var D,j=-1,O=$.length-1;j<O;){D=$[j+=1];var I=e.util.getProperty(D),A=(F=e.util.escapeQuotes(D),c+I);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(P,D,e.opts.jsonPointers)),t+=" if ( "+A+" === undefined ",v&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(D)+"') "),t+=") { var err = ",!1!==e.createErrors?(t+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { property: '"+e.util.escapeQuotes(E)+"', missingProperty: '"+F+"', depsCount: "+g.length+", deps: '"+e.util.escapeQuotes(1==g.length?g[0]:g.join(", "))+"' } ",!1!==e.opts.messages&&(t+=" , message: 'should have ",t+=1==g.length?"property "+e.util.escapeQuotes(g[0]):"properties "+e.util.escapeQuotes(g.join(", ")),t+=" when property "+e.util.escapeQuotes(E)+" is present' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}t+=" } ",l&&(d+="}",t+=" else { ")}e.errorPath=P;var C=h.baseId;for(var E in p){y=p[E];(e.opts.strictKeywords?"object"==typeof y&&0<Object.keys(y).length:e.util.schemaHasRules(y,e.RULES.all))&&(t+=" "+f+" = true; if ( "+c+e.util.getProperty(E)+" !== undefined ",v&&(t+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(E)+"') "),t+=") { ",h.schema=y,h.schemaPath=i+e.util.getProperty(E),h.errSchemaPath=n+"/"+e.util.escapeFragment(E),t+=" "+e.validate(h)+" ",h.baseId=C,t+=" } ",l&&(t+=" if ("+f+") { ",d+="}"))}return l&&(t+=" "+d+" if ("+u+" == errors) {"),t=e.util.cleanUpCode(t)}},{}],24:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h=e.opts.$data&&o&&o.$data;h&&(t+=" var schema"+a+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ");var d="i"+a,f="schema"+a;h||(t+=" var "+f+" = validate.schema"+i+";"),t+="var "+u+";",h&&(t+=" if (schema"+a+" === undefined) "+u+" = true; else if (!Array.isArray(schema"+a+")) "+u+" = false; else {"),t+=u+" = false;for (var "+d+"=0; "+d+"<"+f+".length; "+d+"++) if (equal("+c+", "+f+"["+d+"])) { "+u+" = true; break; }",h&&(t+=" } ");var p=p||[];p.push(t+=" if (!"+u+") { "),t="",!1!==e.createErrors?(t+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { allowedValues: schema"+a+" } ",!1!==e.opts.messages&&(t+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var m=t;return t=p.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" }",l&&(t+=" else { "),t}},{}],25:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||"");if(!1===e.opts.format)return c&&(a+=" if (true) { "),a;var h,d=e.opts.$data&&i&&i.$data;h=d?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i;var f=e.opts.unknownFormats,p=Array.isArray(f);if(d){a+=" var "+(m="format"+s)+" = formats["+h+"]; var "+(v="isObject"+s)+" = typeof "+m+" == 'object' && !("+m+" instanceof RegExp) && "+m+".validate; var "+(y="formatType"+s)+" = "+v+" && "+m+".type || 'string'; if ("+v+") { ",e.async&&(a+=" var async"+s+" = "+m+".async; "),a+=" "+m+" = "+m+".validate; } if ( ",d&&(a+=" ("+h+" !== undefined && typeof "+h+" != 'string') || "),a+=" (","ignore"!=f&&(a+=" ("+h+" && !"+m+" ",p&&(a+=" && self._opts.unknownFormats.indexOf("+h+") == -1 "),a+=") || "),a+=" ("+m+" && "+y+" == '"+t+"' && !(typeof "+m+" == 'function' ? ",a+=e.async?" (async"+s+" ? await "+m+"("+u+") : "+m+"("+u+")) ":" "+m+"("+u+") ",a+=" : "+m+".test("+u+"))))) {"}else{var m;if(!(m=e.formats[i])){if("ignore"==f)return e.logger.warn('unknown format "'+i+'" ignored in schema at path "'+e.errSchemaPath+'"'),c&&(a+=" if (true) { "),a;if(p&&0<=f.indexOf(i))return c&&(a+=" if (true) { "),a;throw new Error('unknown format "'+i+'" is used in schema at path "'+e.errSchemaPath+'"')}var v,y=(v="object"==typeof m&&!(m instanceof RegExp)&&m.validate)&&m.type||"string";if(v){var g=!0===m.async;m=m.validate}if(y!=t)return c&&(a+=" if (true) { "),a;if(g){if(!e.async)throw new Error("async format in sync schema");a+=" if (!(await "+(P="formats"+e.util.getProperty(i)+".validate")+"("+u+"))) { "}else{a+=" if (! ";var P="formats"+e.util.getProperty(i);v&&(P+=".validate"),a+="function"==typeof m?" "+P+"("+u+") ":" "+P+".test("+u+") ",a+=") { "}}var E=E||[];E.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { format: ",a+=d?""+h:""+e.util.toQuotedString(i),a+=" } ",!1!==e.opts.messages&&(a+=" , message: 'should match format \"",a+=d?"' + "+h+" + '":""+e.util.escapeQuotes(i),a+="\"' "),e.opts.verbose&&(a+=" , schema: ",a+=d?"validate.schema"+n:""+e.util.toQuotedString(i),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var w=a;return a=E.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+w+"]); ":" validate.errors = ["+w+"]; return false; ":" var err = "+w+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { "),a}},{}],26:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h="errs__"+a,d=e.util.copy(e);d.level++;var f="valid"+d.level,p=e.schema.then,m=e.schema.else,v=void 0!==p&&(e.opts.strictKeywords?"object"==typeof p&&0<Object.keys(p).length:e.util.schemaHasRules(p,e.RULES.all)),y=void 0!==m&&(e.opts.strictKeywords?"object"==typeof m&&0<Object.keys(m).length:e.util.schemaHasRules(m,e.RULES.all)),g=d.baseId;if(v||y){var P;d.createErrors=!1,d.schema=o,d.schemaPath=i,d.errSchemaPath=n,t+=" var "+h+" = errors; var "+u+" = true; ";var E=e.compositeRule;e.compositeRule=d.compositeRule=!0,t+=" "+e.validate(d)+" ",d.baseId=g,d.createErrors=!0,t+=" errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",e.compositeRule=d.compositeRule=E,v?(t+=" if ("+f+") { ",d.schema=e.schema.then,d.schemaPath=e.schemaPath+".then",d.errSchemaPath=e.errSchemaPath+"/then",t+=" "+e.validate(d)+" ",d.baseId=g,t+=" "+u+" = "+f+"; ",v&&y?t+=" var "+(P="ifClause"+a)+" = 'then'; ":P="'then'",t+=" } ",y&&(t+=" else { ")):t+=" if (!"+f+") { ",y&&(d.schema=e.schema.else,d.schemaPath=e.schemaPath+".else",d.errSchemaPath=e.errSchemaPath+"/else",t+=" "+e.validate(d)+" ",d.baseId=g,t+=" "+u+" = "+f+"; ",v&&y?t+=" var "+(P="ifClause"+a)+" = 'else'; ":P="'else'",t+=" } "),t+=" if (!"+u+") { var err = ",!1!==e.createErrors?(t+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { failingKeyword: "+P+" } ",!1!==e.opts.messages&&(t+=" , message: 'should match \"' + "+P+" + '\" schema' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&l&&(t+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),t+=" } ",l&&(t+=" else { "),t=e.util.cleanUpCode(t)}else l&&(t+=" if (true) { ");return t}},{}],27:[function(e,r,t){"use strict";r.exports={$ref:e("./ref"),allOf:e("./allOf"),anyOf:e("./anyOf"),$comment:e("./comment"),const:e("./const"),contains:e("./contains"),dependencies:e("./dependencies"),enum:e("./enum"),format:e("./format"),if:e("./if"),items:e("./items"),maximum:e("./_limit"),minimum:e("./_limit"),maxItems:e("./_limitItems"),minItems:e("./_limitItems"),maxLength:e("./_limitLength"),minLength:e("./_limitLength"),maxProperties:e("./_limitProperties"),minProperties:e("./_limitProperties"),multipleOf:e("./multipleOf"),not:e("./not"),oneOf:e("./oneOf"),pattern:e("./pattern"),properties:e("./properties"),propertyNames:e("./propertyNames"),required:e("./required"),uniqueItems:e("./uniqueItems"),validate:e("./validate")}},{"./_limit":13,"./_limitItems":14,"./_limitLength":15,"./_limitProperties":16,"./allOf":17,"./anyOf":18,"./comment":19,"./const":20,"./contains":21,"./dependencies":23,"./enum":24,"./format":25,"./if":26,"./items":28,"./multipleOf":29,"./not":30,"./oneOf":31,"./pattern":32,"./properties":33,"./propertyNames":34,"./ref":35,"./required":36,"./uniqueItems":37,"./validate":38}],28:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h="errs__"+a,d=e.util.copy(e),f="";d.level++;var p="valid"+d.level,m="i"+a,v=d.dataLevel=e.dataLevel+1,y="data"+v,g=e.baseId;if(t+="var "+h+" = errors;var "+u+";",Array.isArray(o)){var P=e.schema.additionalItems;if(!1===P){t+=" "+u+" = "+c+".length <= "+o.length+"; ";var E=n;n=e.errSchemaPath+"/additionalItems";var w=w||[];w.push(t+=" if (!"+u+") { "),t="",!1!==e.createErrors?(t+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { limit: "+o.length+" } ",!1!==e.opts.messages&&(t+=" , message: 'should NOT have more than "+o.length+" items' "),e.opts.verbose&&(t+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var b=t;t=w.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+b+"]); ":" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } ",n=E,l&&(f+="}",t+=" else { ")}var S=o;if(S)for(var _,F=-1,x=S.length-1;F<x;)if(_=S[F+=1],e.opts.strictKeywords?"object"==typeof _&&0<Object.keys(_).length:e.util.schemaHasRules(_,e.RULES.all)){t+=" "+p+" = true; if ("+c+".length > "+F+") { ";var R=c+"["+F+"]";d.schema=_,d.schemaPath=i+"["+F+"]",d.errSchemaPath=n+"/"+F,d.errorPath=e.util.getPathExpr(e.errorPath,F,e.opts.jsonPointers,!0),d.dataPathArr[v]=F;var $=e.validate(d);d.baseId=g,e.util.varOccurences($,y)<2?t+=" "+e.util.varReplace($,y,R)+" ":t+=" var "+y+" = "+R+"; "+$+" ",t+=" } ",l&&(t+=" if ("+p+") { ",f+="}")}if("object"==typeof P&&(e.opts.strictKeywords?"object"==typeof P&&0<Object.keys(P).length:e.util.schemaHasRules(P,e.RULES.all))){d.schema=P,d.schemaPath=e.schemaPath+".additionalItems",d.errSchemaPath=e.errSchemaPath+"/additionalItems",t+=" "+p+" = true; if ("+c+".length > "+o.length+") { for (var "+m+" = "+o.length+"; "+m+" < "+c+".length; "+m+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);R=c+"["+m+"]";d.dataPathArr[v]=m;$=e.validate(d);d.baseId=g,e.util.varOccurences($,y)<2?t+=" "+e.util.varReplace($,y,R)+" ":t+=" var "+y+" = "+R+"; "+$+" ",l&&(t+=" if (!"+p+") break; "),t+=" } } ",l&&(t+=" if ("+p+") { ",f+="}")}}else if(e.opts.strictKeywords?"object"==typeof o&&0<Object.keys(o).length:e.util.schemaHasRules(o,e.RULES.all)){d.schema=o,d.schemaPath=i,d.errSchemaPath=n,t+=" for (var "+m+" = 0; "+m+" < "+c+".length; "+m+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);R=c+"["+m+"]";d.dataPathArr[v]=m;$=e.validate(d);d.baseId=g,e.util.varOccurences($,y)<2?t+=" "+e.util.varReplace($,y,R)+" ":t+=" var "+y+" = "+R+"; "+$+" ",l&&(t+=" if (!"+p+") break; "),t+=" }"}return l&&(t+=" "+f+" if ("+h+" == errors) {"),t=e.util.cleanUpCode(t)}},{}],29:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,a+="var division"+s+";if (",h&&(a+=" "+t+" !== undefined && ( typeof "+t+" != 'number' || "),a+=" (division"+s+" = "+u+" / "+t+", ",a+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+s+") - division"+s+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+s+" !== parseInt(division"+s+") ",a+=" ) ",h&&(a+=" ) ");var d=d||[];d.push(a+=" ) { "),a="",!1!==e.createErrors?(a+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { multipleOf: "+t+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be multiple of ",a+=h?"' + "+t:t+"'"),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var f=a;return a=d.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+f+"]); ":" validate.errors = ["+f+"]; return false; ":" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],30:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="errs__"+a,h=e.util.copy(e);h.level++;var d="valid"+h.level;if(e.opts.strictKeywords?"object"==typeof o&&0<Object.keys(o).length:e.util.schemaHasRules(o,e.RULES.all)){h.schema=o,h.schemaPath=i,h.errSchemaPath=n,t+=" var "+u+" = errors; ";var f,p=e.compositeRule;e.compositeRule=h.compositeRule=!0,h.createErrors=!1,h.opts.allErrors&&(f=h.opts.allErrors,h.opts.allErrors=!1),t+=" "+e.validate(h)+" ",h.createErrors=!0,f&&(h.opts.allErrors=f),e.compositeRule=h.compositeRule=p;var m=m||[];m.push(t+=" if ("+d+") { "),t="",!1!==e.createErrors?(t+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: {} ",!1!==e.opts.messages&&(t+=" , message: 'should NOT be valid' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var v=t;t=m.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } ",e.opts.allErrors&&(t+=" } ")}else t+=" var err = ",!1!==e.createErrors?(t+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: {} ",!1!==e.opts.messages&&(t+=" , message: 'should NOT be valid' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l&&(t+=" if (false) { ");return t}},{}],31:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h="errs__"+a,d=e.util.copy(e),f="";d.level++;var p="valid"+d.level,m=d.baseId,v="prevValid"+a,y="passingSchemas"+a;t+="var "+h+" = errors , "+v+" = false , "+u+" = false , "+y+" = null; ";var g=e.compositeRule;e.compositeRule=d.compositeRule=!0;var P=o;if(P)for(var E,w=-1,b=P.length-1;w<b;)E=P[w+=1],(e.opts.strictKeywords?"object"==typeof E&&0<Object.keys(E).length:e.util.schemaHasRules(E,e.RULES.all))?(d.schema=E,d.schemaPath=i+"["+w+"]",d.errSchemaPath=n+"/"+w,t+=" "+e.validate(d)+" ",d.baseId=m):t+=" var "+p+" = true; ",w&&(t+=" if ("+p+" && "+v+") { "+u+" = false; "+y+" = ["+y+", "+w+"]; } else { ",f+="}"),t+=" if ("+p+") { "+u+" = "+v+" = true; "+y+" = "+w+"; }";return e.compositeRule=d.compositeRule=g,t+=f+"if (!"+u+") { var err = ",!1!==e.createErrors?(t+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { passingSchemas: "+y+" } ",!1!==e.opts.messages&&(t+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&l&&(t+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),t+="} else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; }",e.opts.allErrors&&(t+=" } "),t}},{}],32:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h=e.opts.$data&&i&&i.$data;t=h?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i;var d=h?"(new RegExp("+t+"))":e.usePattern(i);a+="if ( ",h&&(a+=" ("+t+" !== undefined && typeof "+t+" != 'string') || ");var f=f||[];f.push(a+=" !"+d+".test("+u+") ) { "),a="",!1!==e.createErrors?(a+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { pattern: ",a+=h?""+t:""+e.util.toQuotedString(i),a+=" } ",!1!==e.opts.messages&&(a+=" , message: 'should match pattern \"",a+=h?"' + "+t+" + '":""+e.util.escapeQuotes(i),a+="\"' "),e.opts.verbose&&(a+=" , schema: ",a+=h?"validate.schema"+n:""+e.util.toQuotedString(i),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},{}],33:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="errs__"+a,h=e.util.copy(e),d="";h.level++;var f="valid"+h.level,p="key"+a,m="idx"+a,v=h.dataLevel=e.dataLevel+1,y="data"+v,g="dataProperties"+a,P=Object.keys(o||{}),E=e.schema.patternProperties||{},w=Object.keys(E),b=e.schema.additionalProperties,S=P.length||w.length,_=!1===b,F="object"==typeof b&&Object.keys(b).length,x=e.opts.removeAdditional,R=_||F||x,$=e.opts.ownProperties,D=e.baseId,j=e.schema.required;if(j&&(!e.opts.$data||!j.$data)&&j.length<e.opts.loopRequired)var O=e.util.toHash(j);if(t+="var "+u+" = errors;var "+f+" = true;",$&&(t+=" var "+g+" = undefined;"),R){if(t+=$?" "+g+" = "+g+" || Object.keys("+c+"); for (var "+m+"=0; "+m+"<"+g+".length; "+m+"++) { var "+p+" = "+g+"["+m+"]; ":" for (var "+p+" in "+c+") { ",S){if(t+=" var isAdditional"+a+" = !(false ",P.length)if(8<P.length)t+=" || validate.schema"+i+".hasOwnProperty("+p+") ";else{var I=P;if(I)for(var A=-1,C=I.length-1;A<C;)B=I[A+=1],t+=" || "+p+" == "+e.util.toQuotedString(B)+" "}if(w.length){var k=w;if(k)for(var L=-1,z=k.length-1;L<z;)ae=k[L+=1],t+=" || "+e.usePattern(ae)+".test("+p+") "}t+=" ); if (isAdditional"+a+") { "}if("all"==x)t+=" delete "+c+"["+p+"]; ";else{var T=e.errorPath,q="' + "+p+" + '";if(e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers)),_)if(x)t+=" delete "+c+"["+p+"]; ";else{var N=n;n=e.errSchemaPath+"/additionalProperties",(ee=ee||[]).push(t+=" "+f+" = false; "),t="",!1!==e.createErrors?(t+=" { keyword: 'additionalProperties' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { additionalProperty: '"+q+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is an invalid additional property":"should NOT have additional properties",t+="' "),e.opts.verbose&&(t+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var Q=t;t=ee.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+Q+"]); ":" validate.errors = ["+Q+"]; return false; ":" var err = "+Q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n=N,l&&(t+=" break; ")}else if(F)if("failing"==x){t+=" var "+u+" = errors; ";var U=e.compositeRule;e.compositeRule=h.compositeRule=!0,h.schema=b,h.schemaPath=e.schemaPath+".additionalProperties",h.errSchemaPath=e.errSchemaPath+"/additionalProperties",h.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers);var V=c+"["+p+"]";h.dataPathArr[v]=p;var H=e.validate(h);h.baseId=D,e.util.varOccurences(H,y)<2?t+=" "+e.util.varReplace(H,y,V)+" ":t+=" var "+y+" = "+V+"; "+H+" ",t+=" if (!"+f+") { errors = "+u+"; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete "+c+"["+p+"]; } ",e.compositeRule=h.compositeRule=U}else{h.schema=b,h.schemaPath=e.schemaPath+".additionalProperties",h.errSchemaPath=e.errSchemaPath+"/additionalProperties",h.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers);V=c+"["+p+"]";h.dataPathArr[v]=p;H=e.validate(h);h.baseId=D,e.util.varOccurences(H,y)<2?t+=" "+e.util.varReplace(H,y,V)+" ":t+=" var "+y+" = "+V+"; "+H+" ",l&&(t+=" if (!"+f+") break; ")}e.errorPath=T}S&&(t+=" } "),t+=" } ",l&&(t+=" if ("+f+") { ",d+="}")}var K=e.opts.useDefaults&&!e.compositeRule;if(P.length){var M=P;if(M)for(var B,J=-1,Z=M.length-1;J<Z;){var G=o[B=M[J+=1]];if(e.opts.strictKeywords?"object"==typeof G&&0<Object.keys(G).length:e.util.schemaHasRules(G,e.RULES.all)){var Y=e.util.getProperty(B),W=(V=c+Y,K&&void 0!==G.default);h.schema=G,h.schemaPath=i+Y,h.errSchemaPath=n+"/"+e.util.escapeFragment(B),h.errorPath=e.util.getPath(e.errorPath,B,e.opts.jsonPointers),h.dataPathArr[v]=e.util.toQuotedString(B);H=e.validate(h);if(h.baseId=D,e.util.varOccurences(H,y)<2){H=e.util.varReplace(H,y,V);var X=V}else{X=y;t+=" var "+y+" = "+V+"; "}if(W)t+=" "+H+" ";else{if(O&&O[B]){t+=" if ( "+X+" === undefined ",$&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(B)+"') "),t+=") { "+f+" = false; ";T=e.errorPath,N=n;var ee,re=e.util.escapeQuotes(B);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(T,B,e.opts.jsonPointers)),n=e.errSchemaPath+"/required",(ee=ee||[]).push(t),t="",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+re+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+re+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";Q=t;t=ee.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+Q+"]); ":" validate.errors = ["+Q+"]; return false; ":" var err = "+Q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n=N,e.errorPath=T,t+=" } else { "}else l?(t+=" if ( "+X+" === undefined ",$&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(B)+"') "),t+=") { "+f+" = true; } else { "):(t+=" if ("+X+" !== undefined ",$&&(t+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(B)+"') "),t+=" ) { ");t+=" "+H+" } "}}l&&(t+=" if ("+f+") { ",d+="}")}}if(w.length){var te=w;if(te)for(var ae,se=-1,oe=te.length-1;se<oe;){G=E[ae=te[se+=1]];if(e.opts.strictKeywords?"object"==typeof G&&0<Object.keys(G).length:e.util.schemaHasRules(G,e.RULES.all)){h.schema=G,h.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(ae),h.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(ae),t+=$?" "+g+" = "+g+" || Object.keys("+c+"); for (var "+m+"=0; "+m+"<"+g+".length; "+m+"++) { var "+p+" = "+g+"["+m+"]; ":" for (var "+p+" in "+c+") { ",t+=" if ("+e.usePattern(ae)+".test("+p+")) { ",h.errorPath=e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers);V=c+"["+p+"]";h.dataPathArr[v]=p;H=e.validate(h);h.baseId=D,e.util.varOccurences(H,y)<2?t+=" "+e.util.varReplace(H,y,V)+" ":t+=" var "+y+" = "+V+"; "+H+" ",l&&(t+=" if (!"+f+") break; "),t+=" } ",l&&(t+=" else "+f+" = true; "),t+=" } ",l&&(t+=" if ("+f+") { ",d+="}")}}}return l&&(t+=" "+d+" if ("+u+" == errors) {"),t=e.util.cleanUpCode(t)}},{}],34:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="errs__"+a,h=e.util.copy(e);h.level++;var d="valid"+h.level;if(t+="var "+u+" = errors;",e.opts.strictKeywords?"object"==typeof o&&0<Object.keys(o).length:e.util.schemaHasRules(o,e.RULES.all)){h.schema=o,h.schemaPath=i,h.errSchemaPath=n;var f="key"+a,p="idx"+a,m="i"+a,v="' + "+f+" + '",y="data"+(h.dataLevel=e.dataLevel+1),g="dataProperties"+a,P=e.opts.ownProperties,E=e.baseId;P&&(t+=" var "+g+" = undefined; "),t+=P?" "+g+" = "+g+" || Object.keys("+c+"); for (var "+p+"=0; "+p+"<"+g+".length; "+p+"++) { var "+f+" = "+g+"["+p+"]; ":" for (var "+f+" in "+c+") { ",t+=" var startErrs"+a+" = errors; ";var w=f,b=e.compositeRule;e.compositeRule=h.compositeRule=!0;var S=e.validate(h);h.baseId=E,e.util.varOccurences(S,y)<2?t+=" "+e.util.varReplace(S,y,w)+" ":t+=" var "+y+" = "+w+"; "+S+" ",e.compositeRule=h.compositeRule=b,t+=" if (!"+d+") { for (var "+m+"=startErrs"+a+"; "+m+"<errors; "+m+"++) { vErrors["+m+"].propertyName = "+f+"; } var err = ",!1!==e.createErrors?(t+=" { keyword: 'propertyNames' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { propertyName: '"+v+"' } ",!1!==e.opts.messages&&(t+=" , message: 'property name \\'"+v+"\\' is invalid' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&l&&(t+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),l&&(t+=" break; "),t+=" } }"}return l&&(t+=" if ("+u+" == errors) {"),t=e.util.cleanUpCode(t)}},{}],35:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.dataLevel,i=e.schema[r],n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(o||""),u="valid"+e.level;if("#"==i||"#/"==i)a=e.isRoot?(t=e.async,"validate"):(t=!0===e.root.schema.$async,"root.refVal[0]");else{var h=e.resolveRef(e.baseId,i,e.isRoot);if(void 0===h){var d=e.MissingRefError.message(e.baseId,i);if("fail"==e.opts.missingRefs){e.logger.error(d),(v=v||[]).push(s),s="",!1!==e.createErrors?(s+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { ref: '"+e.util.escapeQuotes(i)+"' } ",!1!==e.opts.messages&&(s+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(i)+"' "),e.opts.verbose&&(s+=" , schema: "+e.util.toQuotedString(i)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var f=s;s=v.pop(),s+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+f+"]); ":" validate.errors = ["+f+"]; return false; ":" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l&&(s+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,i,d);e.logger.warn(d),l&&(s+=" if (true) { ")}}else if(h.inline){var p=e.util.copy(e);p.level++;var m="valid"+p.level;p.schema=h.schema,p.schemaPath="",p.errSchemaPath=i,s+=" "+e.validate(p).replace(/validate\.schema/g,h.code)+" ",l&&(s+=" if ("+m+") { ")}else t=!0===h.$async||e.async&&!1!==h.$async,a=h.code}if(a){var v;(v=v||[]).push(s),s="",s+=e.opts.passContext?" "+a+".call(this, ":" "+a+"( ",s+=" "+c+", (dataPath || '')",'""'!=e.errorPath&&(s+=" + "+e.errorPath);var y=s+=" , "+(o?"data"+(o-1||""):"parentData")+" , "+(o?e.dataPathArr[o]:"parentDataProperty")+", rootData) ";if(s=v.pop(),t){if(!e.async)throw new Error("async schema referenced by sync schema");l&&(s+=" var "+u+"; "),s+=" try { await "+y+"; ",l&&(s+=" "+u+" = true; "),s+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",l&&(s+=" "+u+" = false; "),s+=" } ",l&&(s+=" if ("+u+") { ")}else s+=" if (!"+y+") { if (vErrors === null) vErrors = "+a+".errors; else vErrors = vErrors.concat("+a+".errors); errors = vErrors.length; } ",l&&(s+=" else { ")}return s}},{}],36:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.level,s=e.dataLevel,o=e.schema[r],i=e.schemaPath+e.util.getProperty(r),n=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c="data"+(s||""),u="valid"+a,h=e.opts.$data&&o&&o.$data;h&&(t+=" var schema"+a+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ");var d="schema"+a;if(!h)if(o.length<e.opts.loopRequired&&e.schema.properties&&Object.keys(e.schema.properties).length){var f=[],p=o;if(p)for(var m,v=-1,y=p.length-1;v<y;){m=p[v+=1];var g=e.schema.properties[m];g&&(e.opts.strictKeywords?"object"==typeof g&&0<Object.keys(g).length:e.util.schemaHasRules(g,e.RULES.all))||(f[f.length]=m)}}else f=o;if(h||f.length){var P=e.errorPath,E=h||e.opts.loopRequired<=f.length,w=e.opts.ownProperties;if(l)if(t+=" var missing"+a+"; ",E){h||(t+=" var "+d+" = validate.schema"+i+"; ");var b="' + "+($="schema"+a+"["+(F="i"+a)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(P,$,e.opts.jsonPointers)),t+=" var "+u+" = true; ",h&&(t+=" if (schema"+a+" === undefined) "+u+" = true; else if (!Array.isArray(schema"+a+")) "+u+" = false; else {"),t+=" for (var "+F+" = 0; "+F+" < "+d+".length; "+F+"++) { "+u+" = "+c+"["+d+"["+F+"]] !== undefined ",w&&(t+=" && Object.prototype.hasOwnProperty.call("+c+", "+d+"["+F+"]) "),t+="; if (!"+u+") break; } ",h&&(t+=" } "),(R=R||[]).push(t+=" if (!"+u+") { "),t="",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";var S=t;t=R.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { "}else{t+=" if ( ";var _=f;if(_)for(var F=-1,x=_.length-1;F<x;){j=_[F+=1],F&&(t+=" || "),t+=" ( ( "+(C=c+(A=e.util.getProperty(j)))+" === undefined ",w&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(j)+"') "),t+=") && (missing"+a+" = "+e.util.toQuotedString(e.opts.jsonPointers?j:A)+") ) "}t+=") { ";var R;b="' + "+($="missing"+a)+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(P,$,!0):P+" + "+$),(R=R||[]).push(t),t="",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ";S=t;t=R.pop(),t+=!e.compositeRule&&l?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { "}else if(E){h||(t+=" var "+d+" = validate.schema"+i+"; ");var $;b="' + "+($="schema"+a+"["+(F="i"+a)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(P,$,e.opts.jsonPointers)),h&&(t+=" if ("+d+" && !Array.isArray("+d+")) { var err = ",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if ("+d+" !== undefined) { "),t+=" for (var "+F+" = 0; "+F+" < "+d+".length; "+F+"++) { if ("+c+"["+d+"["+F+"]] === undefined ",w&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", "+d+"["+F+"]) "),t+=") { var err = ",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ",h&&(t+=" } ")}else{var D=f;if(D)for(var j,O=-1,I=D.length-1;O<I;){j=D[O+=1];var A=e.util.getProperty(j),C=(b=e.util.escapeQuotes(j),c+A);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(P,j,e.opts.jsonPointers)),t+=" if ( "+C+" === undefined ",w&&(t+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(j)+"') "),t+=") { var err = ",!1!==e.createErrors?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(n)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(t+=" , message: '",t+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+i+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}e.errorPath=P}else l&&(t+=" if (true) {");return t}},{}],37:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(o||""),h="valid"+s,d=e.opts.$data&&i&&i.$data;if(t=d?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i,(i||d)&&!1!==e.opts.uniqueItems){d&&(a+=" var "+h+"; if ("+t+" === false || "+t+" === undefined) "+h+" = true; else if (typeof "+t+" != 'boolean') "+h+" = false; else { "),a+=" var i = "+u+".length , "+h+" = true , j; if (i > 1) { ";var f=e.schema.items&&e.schema.items.type,p=Array.isArray(f);if(!f||"object"==f||"array"==f||p&&(0<=f.indexOf("object")||0<=f.indexOf("array")))a+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+u+"[i], "+u+"[j])) { "+h+" = false; break outer; } } } ";else a+=" var itemIndices = {}, item; for (;i--;) { var item = "+u+"[i]; ",a+=" if ("+e.util["checkDataType"+(p?"s":"")](f,"item",!0)+") continue; ",p&&(a+=" if (typeof item == 'string') item = '\"' + item; "),a+=" if (typeof itemIndices[item] == 'number') { "+h+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ";a+=" } ",d&&(a+=" } ");var m=m||[];m.push(a+=" if (!"+h+") { "),a="",!1!==e.createErrors?(a+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(a+=" , schema: ",a+=d?"validate.schema"+n:""+i,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var v=a;a=m.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { ")}else c&&(a+=" if (true) { ");return a}},{}],38:[function(e,r,t){"use strict";r.exports=function(a,e){var r="",t=!0===a.schema.$async,s=a.util.schemaHasRulesExcept(a.schema,a.RULES.all,"$ref"),o=a.self._getId(a.schema);if(a.opts.strictKeywords){var i=a.util.schemaUnknownRules(a.schema,a.RULES.keywords);if(i){var n="unknown keyword: "+i;if("log"!==a.opts.strictKeywords)throw new Error(n);a.logger.warn(n)}}if(a.isTop&&(r+=" var validate = ",t&&(a.async=!0,r+="async "),r+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",o&&(a.opts.sourceCode||a.opts.processCode)&&(r+=" /*# sourceURL="+o+" */ ")),"boolean"==typeof a.schema||!s&&!a.schema.$ref){var l=a.level,c=a.dataLevel,u=a.schema[e="false schema"],h=a.schemaPath+a.util.getProperty(e),d=a.errSchemaPath+"/"+e,f=!a.opts.allErrors,p="data"+(c||""),m="valid"+l;if(!1===a.schema){a.isTop?f=!0:r+=" var "+m+" = false; ",(Z=Z||[]).push(r),r="",!1!==a.createErrors?(r+=" { keyword: 'false schema' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(d)+" , params: {} ",!1!==a.opts.messages&&(r+=" , message: 'boolean schema is false' "),a.opts.verbose&&(r+=" , schema: false , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),r+=" } "):r+=" {} ";var v=r;r=Z.pop(),r+=!a.compositeRule&&f?a.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else r+=a.isTop?t?" return data; ":" validate.errors = null; return true; ":" var "+m+" = true; ";return a.isTop&&(r+=" }; return validate; "),r}if(a.isTop){var y=a.isTop;l=a.level=0,c=a.dataLevel=0,p="data";if(a.rootId=a.resolve.fullPath(a.self._getId(a.root.schema)),a.baseId=a.baseId||a.rootId,delete a.isTop,a.dataPathArr=[void 0],void 0!==a.schema.default&&a.opts.useDefaults&&a.opts.strictDefaults){var g="default is ignored in the schema root";if("log"!==a.opts.strictDefaults)throw new Error(g);a.logger.warn(g)}r+=" var vErrors = null; ",r+=" var errors = 0; ",r+=" if (rootData === undefined) rootData = data; "}else{l=a.level,p="data"+((c=a.dataLevel)||"");if(o&&(a.baseId=a.resolve.url(a.baseId,o)),t&&!a.async)throw new Error("async schema in sync schema");r+=" var errs_"+l+" = errors;"}m="valid"+l,f=!a.opts.allErrors;var P="",E="",w=a.schema.type,b=Array.isArray(w);if(w&&a.opts.nullable&&!0===a.schema.nullable&&(b?-1==w.indexOf("null")&&(w=w.concat("null")):"null"!=w&&(w=[w,"null"],b=!0)),b&&1==w.length&&(w=w[0],b=!1),a.schema.$ref&&s){if("fail"==a.opts.extendRefs)throw new Error('$ref: validation keywords used in schema at path "'+a.errSchemaPath+'" (see option extendRefs)');!0!==a.opts.extendRefs&&(s=!1,a.logger.warn('$ref: keywords ignored in schema at path "'+a.errSchemaPath+'"'))}if(a.schema.$comment&&a.opts.$comment&&(r+=" "+a.RULES.all.$comment.code(a,"$comment")),w){if(a.opts.coerceTypes)var S=a.util.coerceToTypes(a.opts.coerceTypes,w);var _=a.RULES.types[w];if(S||b||!0===_||_&&!G(_)){h=a.schemaPath+".type",d=a.errSchemaPath+"/type",h=a.schemaPath+".type",d=a.errSchemaPath+"/type";if(r+=" if ("+a.util[b?"checkDataTypes":"checkDataType"](w,p,!0)+") { ",S){var F="dataType"+l,x="coerced"+l;r+=" var "+F+" = typeof "+p+"; ","array"==a.opts.coerceTypes&&(r+=" if ("+F+" == 'object' && Array.isArray("+p+")) "+F+" = 'array'; "),r+=" var "+x+" = undefined; ";var R="",$=S;if($)for(var D,j=-1,O=$.length-1;j<O;)D=$[j+=1],j&&(r+=" if ("+x+" === undefined) { ",R+="}"),"array"==a.opts.coerceTypes&&"array"!=D&&(r+=" if ("+F+" == 'array' && "+p+".length == 1) { "+x+" = "+p+" = "+p+"[0]; "+F+" = typeof "+p+"; } "),"string"==D?r+=" if ("+F+" == 'number' || "+F+" == 'boolean') "+x+" = '' + "+p+"; else if ("+p+" === null) "+x+" = ''; ":"number"==D||"integer"==D?(r+=" if ("+F+" == 'boolean' || "+p+" === null || ("+F+" == 'string' && "+p+" && "+p+" == +"+p+" ","integer"==D&&(r+=" && !("+p+" % 1)"),r+=")) "+x+" = +"+p+"; "):"boolean"==D?r+=" if ("+p+" === 'false' || "+p+" === 0 || "+p+" === null) "+x+" = false; else if ("+p+" === 'true' || "+p+" === 1) "+x+" = true; ":"null"==D?r+=" if ("+p+" === '' || "+p+" === 0 || "+p+" === false) "+x+" = null; ":"array"==a.opts.coerceTypes&&"array"==D&&(r+=" if ("+F+" == 'string' || "+F+" == 'number' || "+F+" == 'boolean' || "+p+" == null) "+x+" = ["+p+"]; ");(Z=Z||[]).push(r+=" "+R+" if ("+x+" === undefined) { "),r="",!1!==a.createErrors?(r+=" { keyword: 'type' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(d)+" , params: { type: '",r+=b?""+w.join(","):""+w,r+="' } ",!1!==a.opts.messages&&(r+=" , message: 'should be ",r+=b?""+w.join(","):""+w,r+="' "),a.opts.verbose&&(r+=" , schema: validate.schema"+h+" , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),r+=" } "):r+=" {} ";v=r;r=Z.pop(),r+=!a.compositeRule&&f?a.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { ";var I=c?"data"+(c-1||""):"parentData";r+=" "+p+" = "+x+"; ",c||(r+="if ("+I+" !== undefined)"),r+=" "+I+"["+(c?a.dataPathArr[c]:"parentDataProperty")+"] = "+x+"; } "}else{(Z=Z||[]).push(r),r="",!1!==a.createErrors?(r+=" { keyword: 'type' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(d)+" , params: { type: '",r+=b?""+w.join(","):""+w,r+="' } ",!1!==a.opts.messages&&(r+=" , message: 'should be ",r+=b?""+w.join(","):""+w,r+="' "),a.opts.verbose&&(r+=" , schema: validate.schema"+h+" , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),r+=" } "):r+=" {} ";v=r;r=Z.pop(),r+=!a.compositeRule&&f?a.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}r+=" } "}}if(a.schema.$ref&&!s)r+=" "+a.RULES.all.$ref.code(a,"$ref")+" ",f&&(r+=" } if (errors === ",r+=y?"0":"errs_"+l,r+=") { ",E+="}");else{var A=a.RULES;if(A)for(var C=-1,k=A.length-1;C<k;)if(G(_=A[C+=1])){if(_.type&&(r+=" if ("+a.util.checkDataType(_.type,p)+") { "),a.opts.useDefaults)if("object"==_.type&&a.schema.properties){u=a.schema.properties;var L=Object.keys(u);if(L)for(var z,T=-1,q=L.length-1;T<q;){if(void 0!==(U=u[z=L[T+=1]]).default){var N=p+a.util.getProperty(z);if(a.compositeRule){if(a.opts.strictDefaults){g="default is ignored for: "+N;if("log"!==a.opts.strictDefaults)throw new Error(g);a.logger.warn(g)}}else r+=" if ("+N+" === undefined ","empty"==a.opts.useDefaults&&(r+=" || "+N+" === null || "+N+" === '' "),r+=" ) "+N+" = ",r+="shared"==a.opts.useDefaults?" "+a.useDefault(U.default)+" ":" "+JSON.stringify(U.default)+" ",r+="; "}}}else if("array"==_.type&&Array.isArray(a.schema.items)){var Q=a.schema.items;if(Q){j=-1;for(var U,V=Q.length-1;j<V;)if(void 0!==(U=Q[j+=1]).default){N=p+"["+j+"]";if(a.compositeRule){if(a.opts.strictDefaults){g="default is ignored for: "+N;if("log"!==a.opts.strictDefaults)throw new Error(g);a.logger.warn(g)}}else r+=" if ("+N+" === undefined ","empty"==a.opts.useDefaults&&(r+=" || "+N+" === null || "+N+" === '' "),r+=" ) "+N+" = ",r+="shared"==a.opts.useDefaults?" "+a.useDefault(U.default)+" ":" "+JSON.stringify(U.default)+" ",r+="; "}}}var H=_.rules;if(H)for(var K,M=-1,B=H.length-1;M<B;)if(Y(K=H[M+=1])){var J=K.code(a,K.keyword,_.type);J&&(r+=" "+J+" ",f&&(P+="}"))}if(f&&(r+=" "+P+" ",P=""),_.type&&(r+=" } ",w&&w===_.type&&!S)){var Z;h=a.schemaPath+".type",d=a.errSchemaPath+"/type";(Z=Z||[]).push(r+=" else { "),r="",!1!==a.createErrors?(r+=" { keyword: 'type' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(d)+" , params: { type: '",r+=b?""+w.join(","):""+w,r+="' } ",!1!==a.opts.messages&&(r+=" , message: 'should be ",r+=b?""+w.join(","):""+w,r+="' "),a.opts.verbose&&(r+=" , schema: validate.schema"+h+" , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),r+=" } "):r+=" {} ";v=r;r=Z.pop(),r+=!a.compositeRule&&f?a.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } "}f&&(r+=" if (errors === ",r+=y?"0":"errs_"+l,r+=") { ",E+="}")}}function G(e){for(var r=e.rules,t=0;t<r.length;t++)if(Y(r[t]))return 1}function Y(e){return void 0!==a.schema[e.keyword]||e.implements&&function(e){for(var r=e.implements,t=0;t<r.length;t++)if(void 0!==a.schema[r[t]])return!0}(e)}return f&&(r+=" "+E+" "),y?(t?(r+=" if (errors === 0) return data; ",r+=" else throw new ValidationError(vErrors); "):(r+=" validate.errors = vErrors; ",r+=" return errors === 0; "),r+=" }; return validate;"):r+=" var "+m+" = errors === errs_"+l+";",r=a.util.cleanUpCode(r),y&&(r=a.util.finalCleanUpCode(r,t)),r}},{}],39:[function(e,r,t){"use strict";var i=/^[a-z_$][a-z0-9_$-]*$/i,l=e("./dotjs/custom"),s=e("./definition_schema");r.exports={add:function(e,r){var n=this.RULES;if(n.keywords[e])throw new Error("Keyword "+e+" is already defined");if(!i.test(e))throw new Error("Keyword "+e+" is not a valid identifier");if(r){this.validateKeyword(r,!0);var t=r.type;if(Array.isArray(t))for(var a=0;a<t.length;a++)o(e,t[a],r);else o(e,t,r);var s=r.metaSchema;s&&(r.$data&&this._opts.$data&&(s={anyOf:[s,{$ref:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#"}]}),r.validateSchema=this.compile(s,!0))}function o(e,r,t){for(var a,s=0;s<n.length;s++){var o=n[s];if(o.type==r){a=o;break}}a||n.push(a={type:r,rules:[]});var i={keyword:e,definition:t,custom:!0,code:l,implements:t.implements};a.rules.push(i),n.custom[e]=i}return n.keywords[e]=n.all[e]=!0,this},get:function(e){var r=this.RULES.custom[e];return r?r.definition:this.RULES.keywords[e]||!1},remove:function(e){var r=this.RULES;delete r.keywords[e],delete r.all[e],delete r.custom[e];for(var t=0;t<r.length;t++)for(var a=r[t].rules,s=0;s<a.length;s++)if(a[s].keyword==e){a.splice(s,1);break}return this},validate:function e(r,t){e.errors=null;var a=this._validateKeyword=this._validateKeyword||this.compile(s,!0);if(a(r))return!0;e.errors=a.errors;{if(t)throw new Error("custom keyword definition is invalid: "+this.errorsText(a.errors));return!1}}}},{"./definition_schema":12,"./dotjs/custom":22}],40:[function(e,r,t){r.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}},{}],41:[function(e,r,t){r.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}},{}],42:[function(e,r,t){"use strict";r.exports=function e(r,t){if(r===t)return!0;if(r&&t&&"object"==typeof r&&"object"==typeof t){if(r.constructor!==t.constructor)return!1;var a,s,o;if(Array.isArray(r)){if((a=r.length)!=t.length)return!1;for(s=a;0!=s--;)if(!e(r[s],t[s]))return!1;return!0}if(r.constructor===RegExp)return r.source===t.source&&r.flags===t.flags;if(r.valueOf!==Object.prototype.valueOf)return r.valueOf()===t.valueOf();if(r.toString!==Object.prototype.toString)return r.toString()===t.toString();if((a=(o=Object.keys(r)).length)!==Object.keys(t).length)return!1;for(s=a;0!=s--;)if(!Object.prototype.hasOwnProperty.call(t,o[s]))return!1;for(s=a;0!=s--;){var i=o[s];if(!e(r[i],t[i]))return!1}return!0}return r!=r&&t!=t}},{}],43:[function(e,r,t){"use strict";r.exports=function(e,r){"function"==typeof(r=r||{})&&(r={cmp:r});var a,l="boolean"==typeof r.cycles&&r.cycles,c=r.cmp&&(a=r.cmp,function(t){return function(e,r){return a({key:e,value:t[e]},{key:r,value:t[r]})}}),u=[];return function e(r){if(r&&r.toJSON&&"function"==typeof r.toJSON&&(r=r.toJSON()),void 0!==r){if("number"==typeof r)return isFinite(r)?""+r:"null";if("object"!=typeof r)return JSON.stringify(r);var t,a;if(Array.isArray(r)){for(a="[",t=0;t<r.length;t++)t&&(a+=","),a+=e(r[t])||"null";return a+"]"}if(null===r)return"null";if(-1!==u.indexOf(r)){if(l)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var s=u.push(r)-1,o=Object.keys(r).sort(c&&c(r));for(a="",t=0;t<o.length;t++){var i=o[t],n=e(r[i]);n&&(a&&(a+=","),a+=JSON.stringify(i)+":"+n)}return u.splice(s,1),"{"+a+"}"}}(e)}},{}],44:[function(e,r,t){"use strict";var m=r.exports=function(e,r,t){"function"==typeof r&&(t=r,r={}),function e(r,t,a,s,o,i,n,l,c,u){if(s&&"object"==typeof s&&!Array.isArray(s)){for(var h in t(s,o,i,n,l,c,u),s){var d=s[h];if(Array.isArray(d)){if(h in m.arrayKeywords)for(var f=0;f<d.length;f++)e(r,t,a,d[f],o+"/"+h+"/"+f,i,o,h,s,f)}else if(h in m.propsKeywords){if(d&&"object"==typeof d)for(var p in d)e(r,t,a,d[p],o+"/"+h+"/"+p.replace(/~/g,"~0").replace(/\//g,"~1"),i,o,h,s,p)}else(h in m.keywords||r.allKeys&&!(h in m.skipKeywords))&&e(r,t,a,d,o+"/"+h,i,o,h,s)}a(s,o,i,n,l,c,u)}}(r,"function"==typeof(t=r.cb||t)?t:t.pre||function(){},t.post||function(){},e,"",e)};m.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0},m.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},m.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},m.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0}},{}],45:[function(e,r,t){var a;a=this,function(e){"use strict";function J(){for(var e=arguments.length,r=Array(e),t=0;t<e;t++)r[t]=arguments[t];if(1<r.length){r[0]=r[0].slice(0,-1);for(var a=r.length-1,s=1;s<a;++s)r[s]=r[s].slice(1,-1);return r[a]=r[a].slice(1),r.join("")}return r[0]}function Z(e){return"(?:"+e+")"}function a(e){return void 0===e?"undefined":null===e?"null":Object.prototype.toString.call(e).split(" ").pop().split("]").shift().toLowerCase()}function p(e){return e.toUpperCase()}function r(e){var r="[A-Za-z]",t="[0-9]",a=J(t,"[A-Fa-f]"),s=Z(Z("%[EFef]"+a+"%"+a+a+"%"+a+a)+"|"+Z("%[89A-Fa-f]"+a+"%"+a+a)+"|"+Z("%"+a+a)),o="[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]",i=J("[\\:\\/\\?\\#\\[\\]\\@]",o),n=e?"[\\uE000-\\uF8FF]":"[]",l=J(r,t,"[\\-\\.\\_\\~]",e?"[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]":"[]"),c=Z(r+J(r,t,"[\\+\\-\\.]")+"*"),u=Z(Z(s+"|"+J(l,o,"[\\:]"))+"*"),h=(Z("(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9][0-9])|(?:[1-9][0-9])|"+t),Z("(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9][0-9])|(?:0?[1-9][0-9])|0?0?"+t)),d=Z(h+"\\."+h+"\\."+h+"\\."+h),f=Z(a+"{1,4}"),p=Z(Z(f+"\\:"+f)+"|"+d),m=Z(Z(f+"\\:")+"{6}"+p),v=Z("\\:\\:"+Z(f+"\\:")+"{5}"+p),y=Z(Z(f)+"?\\:\\:"+Z(f+"\\:")+"{4}"+p),g=Z(Z(Z(f+"\\:")+"{0,1}"+f)+"?\\:\\:"+Z(f+"\\:")+"{3}"+p),P=Z(Z(Z(f+"\\:")+"{0,2}"+f)+"?\\:\\:"+Z(f+"\\:")+"{2}"+p),E=Z(Z(Z(f+"\\:")+"{0,3}"+f)+"?\\:\\:"+f+"\\:"+p),w=Z(Z(Z(f+"\\:")+"{0,4}"+f)+"?\\:\\:"+p),b=Z(Z(Z(f+"\\:")+"{0,5}"+f)+"?\\:\\:"+f),S=Z(Z(Z(f+"\\:")+"{0,6}"+f)+"?\\:\\:"),_=Z([m,v,y,g,P,E,w,b,S].join("|")),F=Z(Z(l+"|"+s)+"+"),x=(Z(_+"\\%25"+F),Z(_+Z("\\%25|\\%(?!"+a+"{2})")+F)),R=Z("[vV]"+a+"+\\."+J(l,o,"[\\:]")+"+"),$=Z("\\["+Z(x+"|"+_+"|"+R)+"\\]"),D=Z(Z(s+"|"+J(l,o))+"*"),j=Z($+"|"+d+"(?!"+D+")|"+D),O=Z(t+"*"),I=Z(Z(u+"@")+"?"+j+Z("\\:"+O)+"?"),A=Z(s+"|"+J(l,o,"[\\:\\@]")),C=Z(A+"*"),k=Z(A+"+"),L=Z(Z(s+"|"+J(l,o,"[\\@]"))+"+"),z=Z(Z("\\/"+C)+"*"),T=Z("\\/"+Z(k+z)+"?"),q=Z(L+z),N=Z(k+z),Q="(?!"+A+")",U=(Z(z+"|"+T+"|"+q+"|"+N+"|"+Q),Z(Z(A+"|"+J("[\\/\\?]",n))+"*")),V=Z(Z(A+"|[\\/\\?]")+"*"),H=Z(Z("\\/\\/"+I+z)+"|"+T+"|"+N+"|"+Q),K=Z(c+"\\:"+H+Z("\\?"+U)+"?"+Z("\\#"+V)+"?"),M=Z(Z("\\/\\/"+I+z)+"|"+T+"|"+q+"|"+Q),B=Z(M+Z("\\?"+U)+"?"+Z("\\#"+V)+"?");Z(K+"|"+B),Z(c+"\\:"+H+Z("\\?"+U)+"?"),Z(Z("\\/\\/("+Z("("+u+")@")+"?("+j+")"+Z("\\:("+O+")")+"?)")+"?("+z+"|"+T+"|"+N+"|"+Q+")"),Z("\\?("+U+")"),Z("\\#("+V+")"),Z(Z("\\/\\/("+Z("("+u+")@")+"?("+j+")"+Z("\\:("+O+")")+"?)")+"?("+z+"|"+T+"|"+q+"|"+Q+")"),Z("\\?("+U+")"),Z("\\#("+V+")"),Z(Z("\\/\\/("+Z("("+u+")@")+"?("+j+")"+Z("\\:("+O+")")+"?)")+"?("+z+"|"+T+"|"+N+"|"+Q+")"),Z("\\?("+U+")"),Z("\\#("+V+")"),Z("("+u+")@"),Z("\\:("+O+")");return{NOT_SCHEME:new RegExp(J("[^]",r,t,"[\\+\\-\\.]"),"g"),NOT_USERINFO:new RegExp(J("[^\\%\\:]",l,o),"g"),NOT_HOST:new RegExp(J("[^\\%\\[\\]\\:]",l,o),"g"),NOT_PATH:new RegExp(J("[^\\%\\/\\:\\@]",l,o),"g"),NOT_PATH_NOSCHEME:new RegExp(J("[^\\%\\/\\@]",l,o),"g"),NOT_QUERY:new RegExp(J("[^\\%]",l,o,"[\\:\\@\\/\\?]",n),"g"),NOT_FRAGMENT:new RegExp(J("[^\\%]",l,o,"[\\:\\@\\/\\?]"),"g"),ESCAPE:new RegExp(J("[^]",l,o),"g"),UNRESERVED:new RegExp(l,"g"),OTHER_CHARS:new RegExp(J("[^\\%]",l,i),"g"),PCT_ENCODED:new RegExp(s,"g"),IPV4ADDRESS:new RegExp("^("+d+")$"),IPV6ADDRESS:new RegExp("^\\[?("+_+")"+Z(Z("\\%25|\\%(?!"+a+"{2})")+"("+F+")")+"?\\]?$")}}var u=r(!1),h=r(!0),w=function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,r){var t=[],a=!0,s=!1,o=void 0;try{for(var i,n=e[Symbol.iterator]();!(a=(i=n.next()).done)&&(t.push(i.value),!r||t.length!==r);a=!0);}catch(e){s=!0,o=e}finally{try{!a&&n.return&&n.return()}finally{if(s)throw o}}return t}(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")},A=2147483647,t=/^xn--/,s=/[^\0-\x7E]/,o=/[\x2E\u3002\uFF0E\uFF61]/g,i={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},C=Math.floor,k=String.fromCharCode;function L(e){throw new RangeError(i[e])}function n(e,r){var t=e.split("@"),a="";return 1<t.length&&(a=t[0]+"@",e=t[1]),a+function(e,r){for(var t=[],a=e.length;a--;)t[a]=r(e[a]);return t}((e=e.replace(o,".")).split("."),r).join(".")}function z(e){for(var r=[],t=0,a=e.length;t<a;){var s=e.charCodeAt(t++);if(55296<=s&&s<=56319&&t<a){var o=e.charCodeAt(t++);56320==(64512&o)?r.push(((1023&s)<<10)+(1023&o)+65536):(r.push(s),t--)}else r.push(s)}return r}function T(e,r){return e+22+75*(e<26)-((0!=r)<<5)}function q(e,r,t){var a=0;for(e=t?C(e/700):e>>1,e+=C(e/r);455<e;a+=36)e=C(e/35);return C(a+36*e/(e+38))}function l(e){var r,t=[],a=e.length,s=0,o=128,i=72,n=e.lastIndexOf("-");n<0&&(n=0);for(var l=0;l<n;++l)128<=e.charCodeAt(l)&&L("not-basic"),t.push(e.charCodeAt(l));for(var c=0<n?n+1:0;c<a;){for(var u=s,h=1,d=36;;d+=36){a<=c&&L("invalid-input");var f=(r=e.charCodeAt(c++))-48<10?r-22:r-65<26?r-65:r-97<26?r-97:36;(36<=f||f>C((A-s)/h))&&L("overflow"),s+=f*h;var p=d<=i?1:i+26<=d?26:d-i;if(f<p)break;var m=36-p;h>C(A/m)&&L("overflow"),h*=m}var v=t.length+1;i=q(s-u,v,0==u),C(s/v)>A-o&&L("overflow"),o+=C(s/v),s%=v,t.splice(s++,0,o)}return String.fromCodePoint.apply(String,t)}function c(e){var r=[],t=(e=z(e)).length,a=128,s=0,o=72,i=!0,n=!1,l=void 0;try{for(var c,u=e[Symbol.iterator]();!(i=(c=u.next()).done);i=!0){var h=c.value;h<128&&r.push(k(h))}}catch(e){n=!0,l=e}finally{try{!i&&u.return&&u.return()}finally{if(n)throw l}}var d=r.length,f=d;for(d&&r.push("-");f<t;){var p=A,m=!0,v=!1,y=void 0;try{for(var g,P=e[Symbol.iterator]();!(m=(g=P.next()).done);m=!0){var E=g.value;a<=E&&E<p&&(p=E)}}catch(e){v=!0,y=e}finally{try{!m&&P.return&&P.return()}finally{if(v)throw y}}var w=f+1;p-a>C((A-s)/w)&&L("overflow"),s+=(p-a)*w,a=p;var b=!0,S=!1,_=void 0;try{for(var F,x=e[Symbol.iterator]();!(b=(F=x.next()).done);b=!0){var R=F.value;if(R<a&&++s>A&&L("overflow"),R==a){for(var $=s,D=36;;D+=36){var j=D<=o?1:o+26<=D?26:D-o;if($<j)break;var O=$-j,I=36-j;r.push(k(T(j+O%I,0))),$=C(O/I)}r.push(k(T($,0))),o=q(s,w,f==d),s=0,++f}}}catch(e){S=!0,_=e}finally{try{!b&&x.return&&x.return()}finally{if(S)throw _}}++s,++a}return r.join("")}var v={version:"2.1.0",ucs2:{decode:z,encode:function(e){return String.fromCodePoint.apply(String,function(e){if(Array.isArray(e)){for(var r=0,t=Array(e.length);r<e.length;r++)t[r]=e[r];return t}return Array.from(e)}(e))}},decode:l,encode:c,toASCII:function(e){return n(e,function(e){return s.test(e)?"xn--"+c(e):e})},toUnicode:function(e){return n(e,function(e){return t.test(e)?l(e.slice(4).toLowerCase()):e})}},d={};function m(e){var r=e.charCodeAt(0);return r<16?"%0"+r.toString(16).toUpperCase():r<128?"%"+r.toString(16).toUpperCase():r<2048?"%"+(r>>6|192).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase():"%"+(r>>12|224).toString(16).toUpperCase()+"%"+(r>>6&63|128).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase()}function f(e){for(var r="",t=0,a=e.length;t<a;){var s=parseInt(e.substr(t+1,2),16);if(s<128)r+=String.fromCharCode(s),t+=3;else if(194<=s&&s<224){if(6<=a-t){var o=parseInt(e.substr(t+4,2),16);r+=String.fromCharCode((31&s)<<6|63&o)}else r+=e.substr(t,6);t+=6}else if(224<=s){if(9<=a-t){var i=parseInt(e.substr(t+4,2),16),n=parseInt(e.substr(t+7,2),16);r+=String.fromCharCode((15&s)<<12|(63&i)<<6|63&n)}else r+=e.substr(t,9);t+=9}else r+=e.substr(t,3),t+=3}return r}function y(e,t){function r(e){var r=f(e);return r.match(t.UNRESERVED)?r:e}return e.scheme&&(e.scheme=String(e.scheme).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_SCHEME,"")),void 0!==e.userinfo&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,r).replace(t.NOT_USERINFO,m).replace(t.PCT_ENCODED,p)),void 0!==e.host&&(e.host=String(e.host).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_HOST,m).replace(t.PCT_ENCODED,p)),void 0!==e.path&&(e.path=String(e.path).replace(t.PCT_ENCODED,r).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,m).replace(t.PCT_ENCODED,p)),void 0!==e.query&&(e.query=String(e.query).replace(t.PCT_ENCODED,r).replace(t.NOT_QUERY,m).replace(t.PCT_ENCODED,p)),void 0!==e.fragment&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,r).replace(t.NOT_FRAGMENT,m).replace(t.PCT_ENCODED,p)),e}function b(e){return e.replace(/^0*(.*)/,"$1")||"0"}function S(e,r){var t=e.match(r.IPV4ADDRESS)||[],a=w(t,2)[1];return a?a.split(".").map(b).join("."):e}function g(e,r){var t=e.match(r.IPV6ADDRESS)||[],a=w(t,3),s=a[1],o=a[2];if(s){for(var i=s.toLowerCase().split("::").reverse(),n=w(i,2),l=n[0],c=n[1],u=c?c.split(":").map(b):[],h=l.split(":").map(b),d=r.IPV4ADDRESS.test(h[h.length-1]),f=d?7:8,p=h.length-f,m=Array(f),v=0;v<f;++v)m[v]=u[v]||h[p+v]||"";d&&(m[f-1]=S(m[f-1],r));var y=m.reduce(function(e,r,t){if(!r||"0"===r){var a=e[e.length-1];a&&a.index+a.length===t?a.length++:e.push({index:t,length:1})}return e},[]).sort(function(e,r){return r.length-e.length})[0],g=void 0;if(y&&1<y.length){var P=m.slice(0,y.index),E=m.slice(y.index+y.length);g=P.join(":")+"::"+E.join(":")}else g=m.join(":");return o&&(g+="%"+o),g}return e}var P=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,E=void 0==="".match(/(){0}/)[1];function _(e){var r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},t={},a=!1!==r.iri?h:u;"suffix"===r.reference&&(e=(r.scheme?r.scheme+":":"")+"//"+e);var s=e.match(P);if(s){E?(t.scheme=s[1],t.userinfo=s[3],t.host=s[4],t.port=parseInt(s[5],10),t.path=s[6]||"",t.query=s[7],t.fragment=s[8],isNaN(t.port)&&(t.port=s[5])):(t.scheme=s[1]||void 0,t.userinfo=-1!==e.indexOf("@")?s[3]:void 0,t.host=-1!==e.indexOf("//")?s[4]:void 0,t.port=parseInt(s[5],10),t.path=s[6]||"",t.query=-1!==e.indexOf("?")?s[7]:void 0,t.fragment=-1!==e.indexOf("#")?s[8]:void 0,isNaN(t.port)&&(t.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?s[4]:void 0)),t.host&&(t.host=g(S(t.host,a),a)),t.reference=void 0!==t.scheme||void 0!==t.userinfo||void 0!==t.host||void 0!==t.port||t.path||void 0!==t.query?void 0===t.scheme?"relative":void 0===t.fragment?"absolute":"uri":"same-document",r.reference&&"suffix"!==r.reference&&r.reference!==t.reference&&(t.error=t.error||"URI is not a "+r.reference+" reference.");var o=d[(r.scheme||t.scheme||"").toLowerCase()];if(r.unicodeSupport||o&&o.unicodeSupport)y(t,a);else{if(t.host&&(r.domainHost||o&&o.domainHost))try{t.host=v.toASCII(t.host.replace(a.PCT_ENCODED,f).toLowerCase())}catch(e){t.error=t.error||"Host's domain name can not be converted to ASCII via punycode: "+e}y(t,u)}o&&o.parse&&o.parse(t,r)}else t.error=t.error||"URI can not be parsed.";return t}var F=/^\.\.?\//,x=/^\/\.(\/|$)/,R=/^\/\.\.(\/|$)/,$=/^\/?(?:.|\n)*?(?=\/|$)/;function D(e){for(var r=[];e.length;)if(e.match(F))e=e.replace(F,"");else if(e.match(x))e=e.replace(x,"/");else if(e.match(R))e=e.replace(R,"/"),r.pop();else if("."===e||".."===e)e="";else{var t=e.match($);if(!t)throw new Error("Unexpected dot segment condition");var a=t[0];e=e.slice(a.length),r.push(a)}return r.join("")}function j(r){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=t.iri?h:u,a=[],s=d[(t.scheme||r.scheme||"").toLowerCase()];if(s&&s.serialize&&s.serialize(r,t),r.host&&!e.IPV6ADDRESS.test(r.host)&&(t.domainHost||s&&s.domainHost))try{r.host=t.iri?v.toUnicode(r.host):v.toASCII(r.host.replace(e.PCT_ENCODED,f).toLowerCase())}catch(e){r.error=r.error||"Host's domain name can not be converted to "+(t.iri?"Unicode":"ASCII")+" via punycode: "+e}y(r,e),"suffix"!==t.reference&&r.scheme&&(a.push(r.scheme),a.push(":"));var o,i,n,l=(i=!1!==t.iri?h:u,n=[],void 0!==(o=r).userinfo&&(n.push(o.userinfo),n.push("@")),void 0!==o.host&&n.push(g(S(String(o.host),i),i).replace(i.IPV6ADDRESS,function(e,r,t){return"["+r+(t?"%25"+t:"")+"]"})),"number"==typeof o.port&&(n.push(":"),n.push(o.port.toString(10))),n.length?n.join(""):void 0);if(void 0!==l&&("suffix"!==t.reference&&a.push("//"),a.push(l),r.path&&"/"!==r.path.charAt(0)&&a.push("/")),void 0!==r.path){var c=r.path;t.absolutePath||s&&s.absolutePath||(c=D(c)),void 0===l&&(c=c.replace(/^\/\//,"/%2F")),a.push(c)}return void 0!==r.query&&(a.push("?"),a.push(r.query)),void 0!==r.fragment&&(a.push("#"),a.push(r.fragment)),a.join("")}function O(e,r){var t=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},a={};return arguments[3]||(e=_(j(e,t),t),r=_(j(r,t),t)),!(t=t||{}).tolerant&&r.scheme?(a.scheme=r.scheme,a.userinfo=r.userinfo,a.host=r.host,a.port=r.port,a.path=D(r.path||""),a.query=r.query):(void 0!==r.userinfo||void 0!==r.host||void 0!==r.port?(a.userinfo=r.userinfo,a.host=r.host,a.port=r.port,a.path=D(r.path||""),a.query=r.query):(r.path?("/"===r.path.charAt(0)?a.path=D(r.path):(a.path=void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?e.path.slice(0,e.path.lastIndexOf("/")+1)+r.path:r.path:"/"+r.path,a.path=D(a.path)),a.query=r.query):(a.path=e.path,a.query=void 0!==r.query?r.query:e.query),a.userinfo=e.userinfo,a.host=e.host,a.port=e.port),a.scheme=e.scheme),a.fragment=r.fragment,a}function I(e,r){return e&&e.toString().replace(r&&r.iri?h.PCT_ENCODED:u.PCT_ENCODED,f)}var N={scheme:"http",domainHost:!0,parse:function(e){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e},serialize:function(e){return e.port!==("https"!==String(e.scheme).toLowerCase()?80:443)&&""!==e.port||(e.port=void 0),e.path||(e.path="/"),e}},Q={scheme:"https",domainHost:N.domainHost,parse:N.parse,serialize:N.serialize},U={},V="[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",H="[0-9A-Fa-f]",K=(Z(Z("%[EFef]"+H+"%"+H+H+"%"+H+H)+"|"+Z("%[89A-Fa-f]"+H+"%"+H+H)+"|"+Z("%"+H+H)),J("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",'[\\"\\\\]')),M=new RegExp(V,"g"),B=new RegExp("(?:(?:%[EFef][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f])|(?:%[89A-Fa-f][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f])|(?:%[0-9A-Fa-f][0-9A-Fa-f]))","g"),G=new RegExp(J("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',K),"g"),Y=new RegExp(J("[^]",V,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),W=Y;function X(e){var r=f(e);return r.match(M)?r:e}var ee={scheme:"mailto",parse:function(e,r){var t=e,a=t.to=t.path?t.path.split(","):[];if(t.path=void 0,t.query){for(var s=!1,o={},i=t.query.split("&"),n=0,l=i.length;n<l;++n){var c=i[n].split("=");switch(c[0]){case"to":for(var u=c[1].split(","),h=0,d=u.length;h<d;++h)a.push(u[h]);break;case"subject":t.subject=I(c[1],r);break;case"body":t.body=I(c[1],r);break;default:s=!0,o[I(c[0],r)]=I(c[1],r)}}s&&(t.headers=o)}t.query=void 0;for(var f=0,p=a.length;f<p;++f){var m=a[f].split("@");if(m[0]=I(m[0]),r.unicodeSupport)m[1]=I(m[1],r).toLowerCase();else try{m[1]=v.toASCII(I(m[1],r).toLowerCase())}catch(e){t.error=t.error||"Email address's domain name can not be converted to ASCII via punycode: "+e}a[f]=m.join("@")}return t},serialize:function(e,r){var t,a=e,s=null!=(t=e.to)?t instanceof Array?t:"number"!=typeof t.length||t.split||t.setInterval||t.call?[t]:Array.prototype.slice.call(t):[];if(s){for(var o=0,i=s.length;o<i;++o){var n=String(s[o]),l=n.lastIndexOf("@"),c=n.slice(0,l).replace(B,X).replace(B,p).replace(G,m),u=n.slice(l+1);try{u=r.iri?v.toUnicode(u):v.toASCII(I(u,r).toLowerCase())}catch(e){a.error=a.error||"Email address's domain name can not be converted to "+(r.iri?"Unicode":"ASCII")+" via punycode: "+e}s[o]=c+"@"+u}a.path=s.join(",")}var h=e.headers=e.headers||{};e.subject&&(h.subject=e.subject),e.body&&(h.body=e.body);var d=[];for(var f in h)h[f]!==U[f]&&d.push(f.replace(B,X).replace(B,p).replace(Y,m)+"="+h[f].replace(B,X).replace(B,p).replace(W,m));return d.length&&(a.query=d.join("&")),a}},re=/^([^\:]+)\:(.*)/,te={scheme:"urn",parse:function(e,r){var t=e.path&&e.path.match(re),a=e;if(t){var s=r.scheme||a.scheme||"urn",o=t[1].toLowerCase(),i=t[2],n=d[s+":"+(r.nid||o)];a.nid=o,a.nss=i,a.path=void 0,n&&(a=n.parse(a,r))}else a.error=a.error||"URN can not be parsed.";return a},serialize:function(e,r){var t=e.nid,a=d[(r.scheme||e.scheme||"urn")+":"+(r.nid||t)];a&&(e=a.serialize(e,r));var s=e;return s.path=(t||r.nid)+":"+e.nss,s}},ae=/^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/,se={scheme:"urn:uuid",parse:function(e,r){var t=e;return t.uuid=t.nss,t.nss=void 0,r.tolerant||t.uuid&&t.uuid.match(ae)||(t.error=t.error||"UUID is not valid."),t},serialize:function(e){var r=e;return r.nss=(e.uuid||"").toLowerCase(),r}};d[N.scheme]=N,d[Q.scheme]=Q,d[ee.scheme]=ee,d[te.scheme]=te,d[se.scheme]=se,e.SCHEMES=d,e.pctEncChar=m,e.pctDecChars=f,e.parse=_,e.removeDotSegments=D,e.serialize=j,e.resolveComponents=O,e.resolve=function(e,r,t){var a=function(e,r){var t=e;if(r)for(var a in r)t[a]=r[a];return t}({scheme:"null"},t);return j(O(_(e,a),_(r,a),a,!0),a)},e.normalize=function(e,r){return"string"==typeof e?e=j(_(e,r),r):"object"===a(e)&&(e=_(j(e,r),r)),e},e.equal=function(e,r,t){return"string"==typeof e?e=j(_(e,t),t):"object"===a(e)&&(e=j(e,t)),"string"==typeof r?r=j(_(r,t),t):"object"===a(r)&&(r=j(r,t)),e===r},e.escapeComponent=function(e,r){return e&&e.toString().replace(r&&r.iri?h.ESCAPE:u.ESCAPE,m)},e.unescapeComponent=I,Object.defineProperty(e,"__esModule",{value:!0})}("object"==typeof t&&void 0!==r?t:a.URI=a.URI||{})},{}],ajv:[function(a,e,r){"use strict";var n=a("./compile"),d=a("./compile/resolve"),t=a("./cache"),f=a("./compile/schema_obj"),s=a("fast-json-stable-stringify"),o=a("./compile/formats"),i=a("./compile/rules"),l=a("./data"),c=a("./compile/util");(e.exports=y).prototype.validate=function(e,r){var t;if("string"==typeof e){if(!(t=this.getSchema(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var a=this._addSchema(e);t=a.validate||this._compile(a)}var s=t(r);!0!==t.$async&&(this.errors=t.errors);return s},y.prototype.compile=function(e,r){var t=this._addSchema(e,void 0,r);return t.validate||this._compile(t)},y.prototype.addSchema=function(e,r,t,a){if(Array.isArray(e)){for(var s=0;s<e.length;s++)this.addSchema(e[s],void 0,t,a);return this}var o=this._getId(e);if(void 0!==o&&"string"!=typeof o)throw new Error("schema id must be string");return S(this,r=d.normalizeId(r||o)),this._schemas[r]=this._addSchema(e,t,a,!0),this},y.prototype.addMetaSchema=function(e,r,t){return this.addSchema(e,r,t,!0),this},y.prototype.validateSchema=function(e,r){var t=e.$schema;if(void 0!==t&&"string"!=typeof t)throw new Error("$schema must be a string");if(!(t=t||this._opts.defaultMeta||function(e){var r=e._opts.meta;return e._opts.defaultMeta="object"==typeof r?e._getId(r)||r:e.getSchema(p)?p:void 0,e._opts.defaultMeta}(this)))return this.logger.warn("meta-schema not available"),!(this.errors=null);var a=this.validate(t,e);if(!a&&r){var s="schema is invalid: "+this.errorsText();if("log"!=this._opts.validateSchema)throw new Error(s);this.logger.error(s)}return a},y.prototype.getSchema=function(e){var r=g(this,e);switch(typeof r){case"object":return r.validate||this._compile(r);case"string":return this.getSchema(r);case"undefined":return function(e,r){var t=d.schema.call(e,{schema:{}},r);if(t){var a=t.schema,s=t.root,o=t.baseId,i=n.call(e,a,s,void 0,o);return e._fragments[r]=new f({ref:r,fragment:!0,schema:a,root:s,baseId:o,validate:i}),i}}(this,e)}},y.prototype.removeSchema=function(e){if(e instanceof RegExp)return P(this,this._schemas,e),P(this,this._refs,e),this;switch(typeof e){case"undefined":return P(this,this._schemas),P(this,this._refs),this._cache.clear(),this;case"string":var r=g(this,e);return r&&this._cache.del(r.cacheKey),delete this._schemas[e],delete this._refs[e],this;case"object":var t=this._opts.serialize,a=t?t(e):e;this._cache.del(a);var s=this._getId(e);s&&(s=d.normalizeId(s),delete this._schemas[s],delete this._refs[s])}return this},y.prototype.addFormat=function(e,r){"string"==typeof r&&(r=new RegExp(r));return this._formats[e]=r,this},y.prototype.errorsText=function(e,r){if(!(e=e||this.errors))return"No errors";for(var t=void 0===(r=r||{}).separator?", ":r.separator,a=void 0===r.dataVar?"data":r.dataVar,s="",o=0;o<e.length;o++){var i=e[o];i&&(s+=a+i.dataPath+" "+i.message+t)}return s.slice(0,-t.length)},y.prototype._addSchema=function(e,r,t,a){if("object"!=typeof e&&"boolean"!=typeof e)throw new Error("schema should be object or boolean");var s=this._opts.serialize,o=s?s(e):e,i=this._cache.get(o);if(i)return i;a=a||!1!==this._opts.addUsedSchema;var n=d.normalizeId(this._getId(e));n&&a&&S(this,n);var l,c=!1!==this._opts.validateSchema&&!r;c&&!(l=n&&n==d.normalizeId(e.$schema))&&this.validateSchema(e,!0);var u=d.ids.call(this,e),h=new f({id:n,schema:e,localRefs:u,cacheKey:o,meta:t});"#"!=n[0]&&a&&(this._refs[n]=h);this._cache.put(o,h),c&&l&&this.validateSchema(e,!0);return h},y.prototype._compile=function(t,e){if(t.compiling)return(t.validate=s).schema=t.schema,s.errors=null,s.root=e||s,!0===t.schema.$async&&(s.$async=!0),s;var r,a;t.compiling=!0,t.meta&&(r=this._opts,this._opts=this._metaOpts);try{a=n.call(this,t.schema,e,t.localRefs)}catch(e){throw delete t.validate,e}finally{t.compiling=!1,t.meta&&(this._opts=r)}return t.validate=a,t.refs=a.refs,t.refVal=a.refVal,t.root=a.root,a;function s(){var e=t.validate,r=e.apply(this,arguments);return s.errors=e.errors,r}},y.prototype.compileAsync=a("./compile/async");var u=a("./keyword");y.prototype.addKeyword=u.add,y.prototype.getKeyword=u.get,y.prototype.removeKeyword=u.remove,y.prototype.validateKeyword=u.validate;var h=a("./compile/error_classes");y.ValidationError=h.Validation,y.MissingRefError=h.MissingRef,y.$dataMetaSchema=l;var p="http://json-schema.org/draft-07/schema",m=["removeAdditional","useDefaults","coerceTypes","strictDefaults"],v=["/properties"];function y(e){if(!(this instanceof y))return new y(e);e=this._opts=c.copy(e)||{},function(e){var r=e._opts.logger;if(!1===r)e.logger={log:_,warn:_,error:_};else{if(void 0===r&&(r=console),!("object"==typeof r&&r.log&&r.warn&&r.error))throw new Error("logger must implement log, warn and error methods");e.logger=r}}(this),this._schemas={},this._refs={},this._fragments={},this._formats=o(e.format),this._cache=e.cache||new t,this._loadingSchemas={},this._compilations=[],this.RULES=i(),this._getId=function(e){switch(e.schemaId){case"auto":return b;case"id":return E;default:return w}}(e),e.loopRequired=e.loopRequired||1/0,"property"==e.errorDataPath&&(e._errorDataPathProperty=!0),void 0===e.serialize&&(e.serialize=s),this._metaOpts=function(e){for(var r=c.copy(e._opts),t=0;t<m.length;t++)delete r[m[t]];return r}(this),e.formats&&function(e){for(var r in e._opts.formats){e.addFormat(r,e._opts.formats[r])}}(this),function(e){var r;e._opts.$data&&(r=a("./refs/data.json"),e.addMetaSchema(r,r.$id,!0));if(!1===e._opts.meta)return;var t=a("./refs/json-schema-draft-07.json");e._opts.$data&&(t=l(t,v));e.addMetaSchema(t,p,!0),e._refs["http://json-schema.org/schema"]=p}(this),"object"==typeof e.meta&&this.addMetaSchema(e.meta),e.nullable&&this.addKeyword("nullable",{metaSchema:{type:"boolean"}}),function(e){var r=e._opts.schemas;if(!r)return;if(Array.isArray(r))e.addSchema(r);else for(var t in r)e.addSchema(r[t],t)}(this)}function g(e,r){return r=d.normalizeId(r),e._schemas[r]||e._refs[r]||e._fragments[r]}function P(e,r,t){for(var a in r){var s=r[a];s.meta||t&&!t.test(a)||(e._cache.del(s.cacheKey),delete r[a])}}function E(e){return e.$id&&this.logger.warn("schema $id ignored",e.$id),e.id}function w(e){return e.id&&this.logger.warn("schema id ignored",e.id),e.$id}function b(e){if(e.$id&&e.id&&e.$id!=e.id)throw new Error("schema $id is different from id");return e.$id||e.id}function S(e,r){if(e._schemas[r]||e._refs[r])throw new Error('schema with key or id "'+r+'" already exists')}function _(){}},{"./cache":1,"./compile":5,"./compile/async":2,"./compile/error_classes":3,"./compile/formats":4,"./compile/resolve":6,"./compile/rules":7,"./compile/schema_obj":8,"./compile/util":10,"./data":11,"./keyword":39,"./refs/data.json":40,"./refs/json-schema-draft-07.json":41,"fast-json-stable-stringify":43}]},{},[])("ajv")});
-//# sourceMappingURL=ajv.min.js.map \ No newline at end of file
diff --git a/assets/node_modules/ajv/dist/ajv.min.js.map b/assets/node_modules/ajv/dist/ajv.min.js.map
deleted file mode 100644
index 03c0d91..0000000
--- a/assets/node_modules/ajv/dist/ajv.min.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["0"],"names":["f","exports","module","define","amd","window","global","self","this","Ajv","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","Cache","_cache","prototype","put","key","value","get","del","clear","2","MissingRefError","MissingRef","compileAsync","schema","meta","callback","_opts","loadSchema","undefined","loadMetaSchemaOf","then","schemaObj","_addSchema","validate","_compileAsync","v","sch","$schema","getSchema","$ref","Promise","resolve","_compile","loadMissingSchema","ref","missingSchema","added","missingRef","schemaPromise","_loadingSchemas","removePromise","addSchema","_refs","_schemas","./error_classes","3","baseId","message","url","normalizeId","fullPath","errorSubclass","Subclass","Object","create","constructor","Validation","errors","ajv","validation","./resolve","4","util","DATE","DAYS","TIME","HOSTNAME","URI","URITEMPLATE","URL","UUID","JSON_POINTER","JSON_POINTER_URI_FRAGMENT","RELATIVE_JSON_POINTER","formats","mode","copy","date","str","matches","match","year","month","day","time","full","hour","minute","second","fast","date-time","uri","uri-reference","uri-template","email","hostname","ipv4","ipv6","regex","uuid","json-pointer","json-pointer-uri-fragment","relative-json-pointer","dateTime","split","DATE_TIME_SEPARATOR","NOT_URI_FRAGMENT","test","Z_ANCHOR","RegExp","./util","5","errorClasses","stableStringify","validateGenerator","ucs2length","equal","ValidationError","checkCompiling","root","index","compIndex","compiling","_compilations","endCompiling","splice","patternCode","patterns","toQuotedString","defaultCode","refValCode","refVal","customRuleCode","vars","arr","statement","compile","localRefs","opts","refs","patternsHash","defaults","defaultsHash","customRules","compilation","callValidate","_formats","RULES","localCompile","cv","$async","sourceCode","source","result","apply","arguments","_schema","_root","isRoot","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","logger","processCode","makeValidate","Function","error","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","replaceLocalRef","removeLocalRef","refId","inline","regexStr","valueStr","rule","parentSchema","it","validateSchema","deps","definition","dependencies","every","keyword","hasOwnProperty","join","valid","errorsText","macro","../dotjs/validate","fast-deep-equal","fast-json-stable-stringify","6","SchemaObject","traverse","res","resolveSchema","parse","refPath","_getFullPath","getFullPath","_getId","keys","id","parsedRef","resolveUrl","getJsonPointer","ids","schemaId","baseIds","","fullPaths","allKeys","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","escapeFragment","PREVENT_SCOPE_CHANGE","toHash","fragment","slice","parts","part","unescapeFragment","SIMPLE_INLINED","limit","checkNoRef","item","Array","isArray","countKeys","count","Infinity","normalize","serialize","TRAILING_SLASH_HASH","replace","./schema_obj","json-schema-traverse","uri-js","7","ruleModules","type","rules","maximum","minimum","properties","ALL","all","types","forEach","group","map","implKeywords","k","push","implements","$comment","keywords","concat","custom","../dotjs","8","obj","9","len","pos","charCodeAt","10","checkDataType","dataType","data","negate","EQUAL","AND","OK","NOT","to","checkDataTypes","dataTypes","array","object","null","number","integer","coerceToTypes","optionCoerceTypes","COERCE_TO_TYPES","getProperty","escapeQuotes","varOccurences","dataVar","varReplace","expr","cleanUpCode","out","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","finalCleanUpCode","async","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","RETURN_DATA_ASYNC","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","ROOTDATA_REGEXP","REMOVE_ROOTDATA","schemaHasRules","schemaHasRulesExcept","exceptKeyword","schemaUnknownRules","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","prop","path","escapeJsonPointer","getData","$data","lvl","paths","up","jsonPointer","segments","segment","unescapeJsonPointer","decodeURIComponent","encodeURIComponent","hash","IDENTIFIER","SINGLE_QUOTE","b","./ucs2length","11","KEYWORDS","metaSchema","keywordsJsonPointers","JSON","stringify","j","anyOf","12","$id","definitions","simpleTypes","statements","not","required","items","modifying","const","./refs/json-schema-draft-07.json","13","$keyword","$schemaValue","$lvl","level","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","$breakOnError","allErrors","$isData","dataPathArr","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$errorKeyword","$schemaValueExcl","$exclusive","$exclType","$exclIsNumber","$opStr","$opExpr","$$outStack","createErrors","messages","verbose","__err","pop","compositeRule","Math","14","15","unicode","16","17","$it","$closingBraces","$nextValid","$currentBaseId","$allSchemasEmpty","arr1","$sch","$i","l1","strictKeywords","18","$valid","$errs","$wasComposite","19","20","21","$idx","$dataNxt","$nextData","$nonEmptySchema","$passData","$code","22","$compile","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","passContext","$parentData","$parentDataProperty","def_callRuleValidate","def_customError","23","$schemaDeps","$propertyDeps","$ownProperties","ownProperties","$property","$deps","$currentErrorPath","$propertyKey","$useData","$prop","$propertyPath","$missingProperty","_errorDataPathProperty","arr2","i2","l2","24","$vSchema","25","$ruleType","format","$unknownFormats","unknownFormats","$allowUnknown","$format","$isObject","$formatType","warn","indexOf","$formatRef","26","$thenSch","$elseSch","$thenPresent","$elsePresent","$ifClause","27","allOf","contains","enum","if","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","oneOf","pattern","propertyNames","uniqueItems","./_limit","./_limitItems","./_limitLength","./_limitProperties","./allOf","./anyOf","./comment","./const","./contains","./dependencies","./enum","./format","./if","./items","./multipleOf","./not","./oneOf","./pattern","./properties","./propertyNames","./ref","./required","./uniqueItems","./validate","28","$additionalItems","additionalItems","$currErrSchemaPath","29","multipleOfPrecision","30","$allErrorsOption","31","$prevValid","$passingSchemas","32","$regexp","33","$key","$dataProperties","$schemaKeys","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","loopRequired","$requiredHash","i1","$pProperty","$additionalProperty","$useDefaults","useDefaults","arr3","i3","l3","$hasDefault","default","arr4","i4","l4","34","$invalidName","35","$refCode","$refVal","$message","missingRefs","__callValidate","36","$propertySch","$loopRequired","37","$itemType","$typeIsArray","38","$refKeywords","$unknownKwd","$keywordsMsg","$top","rootId","strictDefaults","$defaultMsg","$closingBraces1","$closingBraces2","$typeSchema","nullable","extendRefs","coerceTypes","$coerceToTypes","$rulesGroup","$shouldUseGroup","$dataType","$coerced","$bracesCoercion","$type","arr5","i5","l5","$shouldUseRule","impl","$ruleImplementsSomeKeyword","39","definitionSchema","add","validateKeyword","_addRule","ruleGroup","rg","remove","throwError","_validateKeyword","./definition_schema","./dotjs/custom","40","description","41","title","schemaArray","nonNegativeInteger","nonNegativeIntegerDefault0","stringArray","readOnly","examples","exclusiveMinimum","exclusiveMaximum","contentMediaType","contentEncoding","else","42","flags","valueOf","toString","43","cmp","cycles","node","seen","toJSON","isFinite","TypeError","seenIndex","sort","44","cb","_traverse","pre","post","arrayKeywords","propsKeywords","skipKeywords","45","merge","_len","sets","_key","xl","x","subexp","typeOf","shift","toLowerCase","toUpperCase","buildExps","isIRI","ALPHA$$","DIGIT$$","HEXDIG$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","IPRIVATE$$","UNRESERVED$$","SCHEME$","USERINFO$","DEC_OCTET_RELAXED$","IPV4ADDRESS$","H16$","LS32$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","IPV6ADDRESS$","ZONEID$","IPV6ADDRZ_RELAXED$","IPVFUTURE$","IP_LITERAL$","REG_NAME$","HOST$","PORT$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH_NOSCHEME$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","FRAGMENT$","HIER_PART$","URI$","RELATIVE_PART$","RELATIVE$","NOT_SCHEME","NOT_USERINFO","NOT_HOST","NOT_PATH","NOT_PATH_NOSCHEME","NOT_QUERY","NOT_FRAGMENT","ESCAPE","UNRESERVED","OTHER_CHARS","PCT_ENCODED","IPV4ADDRESS","IPV6ADDRESS","URI_PROTOCOL","IRI_PROTOCOL","slicedToArray","Symbol","iterator","_arr","_n","_d","_e","_s","_i","next","done","err","sliceIterator","maxInt","regexPunycode","regexNonASCII","regexSeparators","overflow","not-basic","invalid-input","floor","stringFromCharCode","String","fromCharCode","error$1","RangeError","mapDomain","string","fn","ucs2decode","output","counter","extra","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","base","decode","input","codePoint","inputLength","bias","basic","lastIndexOf","oldi","w","baseMinusT","fromCodePoint","encode","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_currentValue2","return","basicLength","handledCPCount","m","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","currentValue","handledCPCountPlusOne","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","_currentValue","q","qMinusT","punycode","version","ucs2","from","toConsumableArray","toASCII","toUnicode","SCHEMES","pctEncChar","chr","pctDecChars","newStr","il","parseInt","substr","c2","_c","c3","_normalizeComponentEncoding","components","protocol","decodeUnreserved","decStr","scheme","userinfo","host","query","_stripLeadingZeros","_normalizeIPv4","address","_normalizeIPv6","_matches2","zone","_address$toLowerCase$","reverse","_address$toLowerCase$2","last","first","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","fields","longestZeroFields","reduce","acc","field","lastLongest","newHost","newFirst","newLast","URI_PARSE","NO_MATCH_IS_UNDEFINED","uriString","options","iri","reference","port","isNaN","schemeHandler","unicodeSupport","domainHost","RDS1","RDS2","RDS3","RDS5","removeDotSegments","im","s","uriTokens","authority","_","$1","$2","charAt","absolutePath","resolveComponents","relative","target","tolerant","unescapeComponent","handler","handler$1","O","VCHAR$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","handler$2","mailtoComponents","unknownHeaders","headers","hfields","hfield","toAddrs","_x","_xl","subject","body","_x2","_xl2","addr","setInterval","toAddr","atIdx","localPart","domain","name","URN_PARSE","handler$3","urnComponents","nid","nss","uriComponents","handler$4","uuidComponents","baseURI","relativeURI","schemelessOptions","assign","uriA","uriB","escapeComponent","defineProperty","factory","compileSchema","$dataMetaSchema","schemaKeyRef","_meta","_skipValidation","checkUnique","addMetaSchema","skipValidation","throwOrLogError","defaultMeta","META_SCHEMA_ID","keyRef","_getSchemaObj","_fragments","_getSchemaFragment","removeSchema","_removeAllSchemas","cacheKey","addFormat","separator","text","dataPath","shouldAddSchema","cached","addUsedSchema","recursiveMeta","willValidate","currentOpts","_metaOpts","_validate","customKeyword","addKeyword","getKeyword","removeKeyword","META_IGNORE_OPTIONS","META_SUPPORT_DATA","log","noop","console","setLogger","cache","_get$IdOrId","_get$Id","chooseGetId","errorDataPath","metaOpts","getMetaSchemaOptions","addInitialFormats","$dataSchema","addDefaultMetaSchema","optsSchemas","schemas","addInitialSchemas","./cache","./compile","./compile/async","./compile/error_classes","./compile/formats","./compile/resolve","./compile/rules","./compile/schema_obj","./compile/util","./data","./keyword","./refs/data.json"],"mappings":";CAAA,SAAUA,GAAG,GAAoB,iBAAVC,SAAoC,oBAATC,OAAsBA,OAAOD,QAAQD,SAAS,GAAmB,mBAATG,QAAqBA,OAAOC,IAAKD,OAAO,GAAGH,OAAO,EAA0B,oBAATK,OAAwBA,OAA+B,oBAATC,OAAwBA,OAA6B,oBAAPC,KAAsBA,KAAYC,MAAOC,IAAMT,KAAxT,CAA+T,WAAqC,OAAmB,SAASU,EAAEC,EAAEC,EAAEC,GAAG,SAASC,EAAEC,EAAEf,GAAG,IAAIY,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,IAAIC,EAAE,mBAAmBC,SAASA,QAAQ,IAAIjB,GAAGgB,EAAE,OAAOA,EAAED,GAAE,GAAI,GAAGG,EAAE,OAAOA,EAAEH,GAAE,GAAI,IAAII,EAAE,IAAIC,MAAM,uBAAuBL,EAAE,KAAK,MAAMI,EAAEE,KAAK,mBAAmBF,EAAE,IAAIG,EAAEV,EAAEG,GAAG,CAACd,QAAQ,IAAIU,EAAEI,GAAG,GAAGQ,KAAKD,EAAErB,QAAQ,SAASS,GAAoB,OAAOI,EAAlBH,EAAEI,GAAG,GAAGL,IAAeA,IAAIY,EAAEA,EAAErB,QAAQS,EAAEC,EAAEC,EAAEC,GAAG,OAAOD,EAAEG,GAAGd,QAAQ,IAAI,IAAIiB,EAAE,mBAAmBD,SAASA,QAAQF,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,IAAI,OAAOD,EAA7b,CAA4c,CAACW,EAAE,CAAC,SAASR,EAAQf,EAAOD,GACn1B,aAGA,IAAIyB,EAAQxB,EAAOD,QAAU,WAC3BO,KAAKmB,OAAS,IAIhBD,EAAME,UAAUC,IAAM,SAAmBC,EAAKC,GAC5CvB,KAAKmB,OAAOG,GAAOC,GAIrBL,EAAME,UAAUI,IAAM,SAAmBF,GACvC,OAAOtB,KAAKmB,OAAOG,IAIrBJ,EAAME,UAAUK,IAAM,SAAmBH,UAChCtB,KAAKmB,OAAOG,IAIrBJ,EAAME,UAAUM,MAAQ,WACtB1B,KAAKmB,OAAS,KAGd,IAAIQ,EAAE,CAAC,SAASlB,EAAQf,EAAOD,GACjC,aAEA,IAAImC,EAAkBnB,EAAQ,mBAAmBoB,WAEjDnC,EAAOD,QAYP,SAASqC,EAAaC,EAAQC,EAAMC,GAIlC,IAAIlC,EAAOC,KACX,GAAoC,mBAAzBA,KAAKkC,MAAMC,WACpB,MAAM,IAAIvB,MAAM,2CAEC,mBAARoB,IACTC,EAAWD,EACXA,OAAOI,GAGT,IAAItB,EAAIuB,EAAiBN,GAAQO,KAAK,WACpC,IAAIC,EAAYxC,EAAKyC,WAAWT,OAAQK,EAAWJ,GACnD,OAAOO,EAAUE,UAAYC,EAAcH,KAGzCN,GACFnB,EAAEwB,KACA,SAASK,GAAKV,EAAS,KAAMU,IAC7BV,GAIJ,OAAOnB,EAGP,SAASuB,EAAiBO,GACxB,IAAIC,EAAUD,EAAIC,QAClB,OAAOA,IAAY9C,EAAK+C,UAAUD,GACxBf,EAAaf,KAAKhB,EAAM,CAAEgD,KAAMF,IAAW,GAC3CG,QAAQC,UAIpB,SAASP,EAAcH,GACrB,IAAM,OAAOxC,EAAKmD,SAASX,GAC3B,MAAMpC,GACJ,GAAIA,aAAayB,EAAiB,OAAOuB,EAAkBhD,GAC3D,MAAMA,EAIR,SAASgD,EAAkBhD,GACzB,IAAIiD,EAAMjD,EAAEkD,cACZ,GAAIC,EAAMF,GAAM,MAAM,IAAIxC,MAAM,UAAYwC,EAAM,kBAAoBjD,EAAEoD,WAAa,uBAErF,IAAIC,EAAgBzD,EAAK0D,gBAAgBL,GAMzC,OALKI,IACHA,EAAgBzD,EAAK0D,gBAAgBL,GAAOrD,EAAKmC,MAAMC,WAAWiB,IACpDd,KAAKoB,EAAeA,GAG7BF,EAAclB,KAAK,SAAUM,GAClC,IAAKU,EAAMF,GACT,OAAOf,EAAiBO,GAAKN,KAAK,WAC3BgB,EAAMF,IAAMrD,EAAK4D,UAAUf,EAAKQ,OAAKhB,EAAWJ,OAGxDM,KAAK,WACN,OAAOI,EAAcH,KAGvB,SAASmB,WACA3D,EAAK0D,gBAAgBL,GAG9B,SAASE,EAAMF,GACb,OAAOrD,EAAK6D,MAAMR,IAAQrD,EAAK8D,SAAST,QAM9C,CAACU,kBAAkB,IAAIC,EAAE,CAAC,SAAStD,EAAQf,EAAOD,GACpD,aAEA,IAAIwD,EAAUxC,EAAQ,aAoBtB,SAASmB,EAAgBoC,EAAQZ,EAAKa,GACpCjE,KAAKiE,QAAUA,GAAWrC,EAAgBqC,QAAQD,EAAQZ,GAC1DpD,KAAKuD,WAAaN,EAAQiB,IAAIF,EAAQZ,GACtCpD,KAAKqD,cAAgBJ,EAAQkB,YAAYlB,EAAQmB,SAASpE,KAAKuD,aAIjE,SAASc,EAAcC,GAGrB,OAFAA,EAASlD,UAAYmD,OAAOC,OAAO5D,MAAMQ,WACzCkD,EAASlD,UAAUqD,YAAcH,EA3BnC5E,EAAOD,QAAU,CACfiF,WAAYL,EAKd,SAAyBM,GACvB3E,KAAKiE,QAAU,oBACfjE,KAAK2E,OAASA,EACd3E,KAAK4E,IAAM5E,KAAK6E,YAAa,IAP7BhD,WAAYwC,EAAczC,IAW5BA,EAAgBqC,QAAU,SAAUD,EAAQZ,GAC1C,MAAO,2BAA8BA,EAAM,YAAcY,IAiBzD,CAACc,YAAY,IAAIC,EAAE,CAAC,SAAStE,EAAQf,EAAOD,GAC9C,aAEA,IAAIuF,EAAOvE,EAAQ,UAEfwE,EAAO,6BACPC,EAAO,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAC3CC,EAAO,0DACPC,EAAW,qFACXC,EAAM,+nCAGNC,EAAc,oLAKdC,EAAM,4rDACNC,EAAO,+DACPC,EAAe,4BACfC,EAA4B,+DAC5BC,EAAwB,mDAK5B,SAASC,EAAQC,GAEf,OAAOb,EAAKc,KAAKF,EADjBC,EAAe,QAARA,EAAiB,OAAS,SA+DnC,SAASE,EAAKC,GAEZ,IAAIC,EAAUD,EAAIE,MAAMjB,GACxB,IAAKgB,EAAS,OAAO,EAErB,IAXkBE,EAYdC,GAASH,EAAQ,GACjBI,GAAOJ,EAAQ,GAEnB,OAAgB,GAATG,GAAcA,GAAS,IAAa,GAAPC,GAC5BA,IAAiB,GAATD,KAhBED,GAWNF,EAAQ,IATN,GAAM,GAAME,EAAO,KAAQ,GAAKA,EAAO,KAAQ,GAcPjB,EAAKkB,GAAV,IAInD,SAASE,EAAKN,EAAKO,GACjB,IAAIN,EAAUD,EAAIE,MAAMf,GACxB,IAAKc,EAAS,OAAO,EAErB,IAAIO,EAAOP,EAAQ,GACfQ,EAASR,EAAQ,GACjBS,EAAST,EAAQ,GAErB,OAASO,GAAQ,IAAMC,GAAU,IAAMC,GAAU,IAChC,IAARF,GAAwB,IAAVC,GAA0B,IAAVC,MAC9BH,GAHMN,EAAQ,KAvFzBvG,EAAOD,QAAUmG,GAQTe,KAAO,CAEbZ,KAAM,6BAENO,KAAM,8EACNM,YAAa,0GAEbC,IAAK,4CACLC,gBAAiB,yEACjBC,eAAgBzB,EAChBpB,IAAKqB,EAILyB,MAAO,mHACPC,SAAU7B,EAEV8B,KAAM,4EAENC,KAAM,qpCACNC,MAAOA,EAEPC,KAAM7B,EAGN8B,eAAgB7B,EAChB8B,4BAA6B7B,EAE7B8B,wBAAyB7B,GAI3BC,EAAQW,KAAO,CACbR,KAAMA,EACNO,KAAMA,EACNM,YAoDF,SAAmBZ,GAEjB,IAAIyB,EAAWzB,EAAI0B,MAAMC,GACzB,OAA0B,GAAnBF,EAASzG,QAAe+E,EAAK0B,EAAS,KAAOnB,EAAKmB,EAAS,IAAI,IAtDtEZ,IAkEF,SAAab,GAEX,OAAO4B,EAAiBC,KAAK7B,IAAQX,EAAIwC,KAAK7B,IAnE9Cc,gBA3DW,yoCA4DXC,eAAgBzB,EAChBpB,IAAKqB,EACLyB,MAAO,2IACPC,SAqDF,SAAkBjB,GAGhB,OAAOA,EAAIhF,QAAU,KAAOoE,EAASyC,KAAK7B,IAvD1CkB,KAAM,4EACNC,KAAM,qpCACNC,MAAOA,EACPC,KAAM7B,EACN8B,eAAgB7B,EAChB8B,4BAA6B7B,EAC7B8B,wBAAyB7B,GAsC3B,IAAIgC,EAAsB,QAe1B,IAAIC,EAAmB,OAOvB,IAAIE,EAAW,WACf,SAASV,EAAMpB,GACb,GAAI8B,EAASD,KAAK7B,GAAM,OAAO,EAC/B,IAEE,OADA,IAAI+B,OAAO/B,IACJ,EACP,MAAM7F,GACN,OAAO,KAIT,CAAC6H,SAAS,KAAKC,EAAE,CAAC,SAASxH,EAAQf,EAAOD,GAC5C,aAEA,IAAIwD,EAAUxC,EAAQ,aAClBuE,EAAOvE,EAAQ,UACfyH,EAAezH,EAAQ,mBACvB0H,EAAkB1H,EAAQ,8BAE1B2H,EAAoB3H,EAAQ,qBAM5B4H,EAAarD,EAAKqD,WAClBC,EAAQ7H,EAAQ,mBAGhB8H,EAAkBL,EAAaxD,WAySnC,SAAS8D,EAAezG,EAAQ0G,EAAMzE,GAEpC,IAAI0E,EAAQC,EAAU5H,KAAKf,KAAM+B,EAAQ0G,EAAMzE,GAC/C,OAAa,GAAT0E,EAAmB,CAAEA,MAAOA,EAAOE,WAAW,GAO3C,CAAEF,MANTA,EAAQ1I,KAAK6I,cAAc7H,OAMJ4H,YALvB5I,KAAK6I,cAAcH,GAAS,CAC1B3G,OAAQA,EACR0G,KAAMA,EACNzE,OAAQA,KAaZ,SAAS8E,EAAa/G,EAAQ0G,EAAMzE,GAElC,IAAIzD,EAAIoI,EAAU5H,KAAKf,KAAM+B,EAAQ0G,EAAMzE,GAClC,GAALzD,GAAQP,KAAK6I,cAAcE,OAAOxI,EAAG,GAY3C,SAASoI,EAAU5G,EAAQ0G,EAAMzE,GAE/B,IAAK,IAAIzD,EAAE,EAAGA,EAAEP,KAAK6I,cAAc7H,OAAQT,IAAK,CAC9C,IAAIC,EAAIR,KAAK6I,cAActI,GAC3B,GAAIC,EAAEuB,QAAUA,GAAUvB,EAAEiI,MAAQA,GAAQjI,EAAEwD,QAAUA,EAAQ,OAAOzD,EAEzE,OAAQ,EAIV,SAASyI,EAAYzI,EAAG0I,GACtB,MAAO,cAAgB1I,EAAI,iBAAmByE,EAAKkE,eAAeD,EAAS1I,IAAM,KAInF,SAAS4I,EAAY5I,GACnB,MAAO,cAAgBA,EAAI,eAAiBA,EAAI,KAIlD,SAAS6I,EAAW7I,EAAG8I,GACrB,YAAqBjH,IAAdiH,EAAO9I,GAAmB,GAAK,aAAeA,EAAI,aAAeA,EAAI,KAI9E,SAAS+I,EAAe/I,GACtB,MAAO,iBAAmBA,EAAI,kBAAoBA,EAAI,KAIxD,SAASgJ,EAAKC,EAAKC,GACjB,IAAKD,EAAIxI,OAAQ,MAAO,GAExB,IADA,IAAIH,EAAO,GACFN,EAAE,EAAGA,EAAEiJ,EAAIxI,OAAQT,IAC1BM,GAAQ4I,EAAUlJ,EAAGiJ,GACvB,OAAO3I,EA9WTnB,EAAOD,QAYP,SAASiK,EAAQ3H,EAAQ0G,EAAMkB,EAAW3F,GAGxC,IAAIjE,EAAOC,KACP4J,EAAO5J,KAAKkC,MACZmH,EAAS,MAAEjH,GACXyH,EAAO,GACPZ,EAAW,GACXa,EAAe,GACfC,EAAW,GACXC,EAAe,GACfC,EAAc,GAElBxB,EAAOA,GAAQ,CAAE1G,OAAQA,EAAQsH,OAAQA,EAAQQ,KAAMA,GAEvD,IAAIrJ,EAAIgI,EAAezH,KAAKf,KAAM+B,EAAQ0G,EAAMzE,GAChD,IAAIkG,EAAclK,KAAK6I,cAAcrI,EAAEkI,OACvC,GAAIlI,EAAEoI,UAAW,OAAQsB,EAAYC,aAAeA,EAEpD,IAAIvE,EAAU5F,KAAKoK,SACnB,IAAIC,EAAQrK,KAAKqK,MAEjB,IACE,IAAI1H,EAAI2H,EAAavI,EAAQ0G,EAAMkB,EAAW3F,GAC9CkG,EAAYzH,SAAWE,EACvB,IAAI4H,EAAKL,EAAYC,aAUrB,OATII,IACFA,EAAGxI,OAASY,EAAEZ,OACdwI,EAAG5F,OAAS,KACZ4F,EAAGV,KAAOlH,EAAEkH,KACZU,EAAGlB,OAAS1G,EAAE0G,OACdkB,EAAG9B,KAAO9F,EAAE8F,KACZ8B,EAAGC,OAAS7H,EAAE6H,OACVZ,EAAKa,aAAYF,EAAGG,OAAS/H,EAAE+H,SAE9B/H,EACP,QACAmG,EAAa/H,KAAKf,KAAM+B,EAAQ0G,EAAMzE,GAIxC,SAASmG,IAEP,IAAI1H,EAAWyH,EAAYzH,SACvBkI,EAASlI,EAASmI,MAAM5K,KAAM6K,WAElC,OADAV,EAAaxF,OAASlC,EAASkC,OACxBgG,EAGT,SAASL,EAAaQ,EAASC,EAAOpB,EAAW3F,GAC/C,IAAIgH,GAAUD,GAAUA,GAASA,EAAMhJ,QAAU+I,EACjD,GAAIC,EAAMhJ,QAAU0G,EAAK1G,OACvB,OAAO2H,EAAQ3I,KAAKhB,EAAM+K,EAASC,EAAOpB,EAAW3F,GAEvD,IAgCIvB,EAhCA+H,GAA4B,IAAnBM,EAAQN,OAEjBC,EAAarC,EAAkB,CACjC6C,OAAO,EACPlJ,OAAQ+I,EACRE,OAAQA,EACRhH,OAAQA,EACRyE,KAAMsC,EACNG,WAAY,GACZC,cAAe,IACfC,UAAW,KACXxJ,gBAAiBsG,EAAarG,WAC9BwI,MAAOA,EACP5H,SAAU2F,EACVpD,KAAMA,EACN/B,QAASA,EACToI,WAAYA,EACZC,WAAYA,EACZC,WAAYA,EACZC,cAAeA,EACf5B,KAAMA,EACNhE,QAASA,EACT6F,OAAQ1L,EAAK0L,OACb1L,KAAMA,IAGR0K,EAAalB,EAAKF,EAAQD,GAAcG,EAAKN,EAAUD,GACtCO,EAAKQ,EAAUZ,GAAeI,EAAKU,EAAaX,GAChDmB,EAEbb,EAAK8B,cAAajB,EAAab,EAAK8B,YAAYjB,IAGpD,IACE,IAAIkB,EAAe,IAAIC,SACrB,OACA,QACA,UACA,OACA,SACA,WACA,cACA,QACA,aACA,kBACAnB,GAGFhI,EAAWkJ,EACT5L,EACAsK,EACAzE,EACA6C,EACAY,EACAU,EACAE,EACA3B,EACAD,EACAE,GAGFc,EAAO,GAAK5G,EACZ,MAAMtC,GAEN,MADAJ,EAAK0L,OAAOI,MAAM,yCAA0CpB,GACtDtK,EAiBR,OAdAsC,EAASV,OAAS+I,EAClBrI,EAASkC,OAAS,KAClBlC,EAASoH,KAAOA,EAChBpH,EAAS4G,OAASA,EAClB5G,EAASgG,KAAOuC,EAASvI,EAAWsI,EAChCP,IAAQ/H,EAAS+H,QAAS,IACN,IAApBZ,EAAKa,aACPhI,EAASiI,OAAS,CAChB7J,KAAM4J,EACNxB,SAAUA,EACVc,SAAUA,IAIPtH,EAGT,SAAS4I,EAAWrH,EAAQZ,EAAK4H,GAC/B5H,EAAMH,EAAQiB,IAAIF,EAAQZ,GAC1B,IACI0I,EAASC,EADTC,EAAWnC,EAAKzG,GAEpB,QAAiBhB,IAAb4J,EAGF,OAAOC,EAFPH,EAAUzC,EAAO2C,GACjBD,EAAU,UAAYC,EAAW,KAGnC,IAAKhB,GAAUvC,EAAKoB,KAAM,CACxB,IAAIqC,EAAYzD,EAAKoB,KAAKzG,GAC1B,QAAkBhB,IAAd8J,EAGF,OADAH,EAAUI,EAAY/I,EADtB0I,EAAUrD,EAAKY,OAAO6C,IAEfD,EAAYH,EAASC,GAIhCA,EAAUI,EAAY/I,GACtB,IAAIT,EAAIM,EAAQlC,KAAKhB,EAAMuK,EAAc7B,EAAMrF,GAC/C,QAAUhB,IAANO,EAAiB,CACnB,IAAIyJ,EAAczC,GAAaA,EAAUvG,GACrCgJ,IACFzJ,EAAIM,EAAQoJ,UAAUD,EAAaxC,EAAK0C,YAClCF,EACA1C,EAAQ3I,KAAKhB,EAAMqM,EAAa3D,EAAMkB,EAAW3F,IAI3D,QAAU5B,IAANO,EAIF,OADA4J,EAAgBnJ,EAAKT,GACdsJ,EAAYtJ,EAAGoJ,GAHtBS,EAAepJ,GAOnB,SAAS+I,EAAY/I,EAAKT,GACxB,IAAI8J,EAAQpD,EAAOrI,OAGnB,OAFAqI,EAAOoD,GAAS9J,EAET,UADPkH,EAAKzG,GAAOqJ,GAId,SAASD,EAAepJ,UACfyG,EAAKzG,GAGd,SAASmJ,EAAgBnJ,EAAKT,GAC5B,IAAI8J,EAAQ5C,EAAKzG,GACjBiG,EAAOoD,GAAS9J,EAGlB,SAASsJ,EAAY5C,EAAQxI,GAC3B,MAAwB,iBAAVwI,GAAuC,kBAAVA,EACjC,CAAExI,KAAMA,EAAMkB,OAAQsH,EAAQqD,QAAQ,GACtC,CAAE7L,KAAMA,EAAM2J,OAAQnB,KAAYA,EAAOmB,QAGrD,SAASc,EAAWqB,GAClB,IAAIjE,EAAQoB,EAAa6C,GAKzB,YAJcvK,IAAVsG,IACFA,EAAQoB,EAAa6C,GAAY1D,EAASjI,OAC1CiI,EAASP,GAASiE,GAEb,UAAYjE,EAGrB,SAAS6C,EAAWhK,GAClB,cAAeA,GACb,IAAK,UACL,IAAK,SACH,MAAO,GAAKA,EACd,IAAK,SACH,OAAOyD,EAAKkE,eAAe3H,GAC7B,IAAK,SACH,GAAc,OAAVA,EAAgB,MAAO,OAC3B,IAAIqL,EAAWzE,EAAgB5G,GAC3BmH,EAAQsB,EAAa4C,GAKzB,YAJcxK,IAAVsG,IACFA,EAAQsB,EAAa4C,GAAY7C,EAAS/I,OAC1C+I,EAASrB,GAASnH,GAEb,UAAYmH,GAIzB,SAAS8C,EAAcqB,EAAM9K,EAAQ+K,EAAcC,GACjD,IAAkC,IAA9BhN,EAAKmC,MAAM8K,eAA0B,CACvC,IAAIC,EAAOJ,EAAKK,WAAWC,aAC3B,GAAIF,IAASA,EAAKG,MAAM,SAASC,GAC/B,OAAO9I,OAAOnD,UAAUkM,eAAevM,KAAK+L,EAAcO,KAE1D,MAAM,IAAIzM,MAAM,kDAAoDqM,EAAKM,KAAK,MAEhF,IAAIP,EAAiBH,EAAKK,WAAWF,eACrC,GAAIA,EAAgB,CAClB,IAAIQ,EAAQR,EAAejL,GAC3B,IAAKyL,EAAO,CACV,IAAIvJ,EAAU,8BAAgClE,EAAK0N,WAAWT,EAAerI,QAC7E,GAAiC,OAA7B5E,EAAKmC,MAAM8K,eACV,MAAM,IAAIpM,MAAMqD,GADmBlE,EAAK0L,OAAOI,MAAM5H,KAMhE,IAIIxB,EAJAiH,EAAUmD,EAAKK,WAAWxD,QAC1BgD,EAASG,EAAKK,WAAWR,OACzBgB,EAAQb,EAAKK,WAAWQ,MAG5B,GAAIhE,EACFjH,EAAWiH,EAAQ3I,KAAKhB,EAAMgC,EAAQ+K,EAAcC,QAC/C,GAAIW,EACTjL,EAAWiL,EAAM3M,KAAKhB,EAAMgC,EAAQ+K,EAAcC,IACtB,IAAxBnD,EAAKoD,gBAA0BjN,EAAKiN,eAAevK,GAAU,QAC5D,GAAIiK,EACTjK,EAAWiK,EAAO3L,KAAKhB,EAAMgN,EAAIF,EAAKQ,QAAStL,EAAQ+K,QAGvD,KADArK,EAAWoK,EAAKK,WAAWzK,UACZ,OAGjB,QAAiBL,IAAbK,EACF,MAAM,IAAI7B,MAAM,mBAAqBiM,EAAKQ,QAAU,sBAEtD,IAAI3E,EAAQuB,EAAYjJ,OAGxB,MAAO,CACLH,KAAM,aAAe6H,EACrBjG,SAJFwH,EAAYvB,GAASjG,MA4FvB,CAACkL,oBAAoB,GAAG7J,kBAAkB,EAAEgB,YAAY,EAAEkD,SAAS,GAAG4F,kBAAkB,GAAGC,6BAA6B,KAAKC,EAAE,CAAC,SAASrN,EAAQf,EAAOD,GAC1J,aAEA,IAAI4F,EAAM5E,EAAQ,UACd6H,EAAQ7H,EAAQ,mBAChBuE,EAAOvE,EAAQ,UACfsN,EAAetN,EAAQ,gBACvBuN,EAAWvN,EAAQ,wBAmBvB,SAASwC,EAAQyG,EAASjB,EAAMrF,GAE9B,IAAIiG,EAASrJ,KAAK4D,MAAMR,GACxB,GAAqB,iBAAViG,EAAoB,CAC7B,IAAIrJ,KAAK4D,MAAMyF,GACV,OAAOpG,EAAQlC,KAAKf,KAAM0J,EAASjB,EAAMY,GADtBA,EAASrJ,KAAK4D,MAAMyF,GAK9C,IADAA,EAASA,GAAUrJ,KAAK6D,SAAST,cACX2K,EACpB,OAAO1B,EAAUhD,EAAOtH,OAAQ/B,KAAKkC,MAAMoK,YACjCjD,EAAOtH,OACPsH,EAAO5G,UAAYzC,KAAKkD,SAASmG,GAG7C,IACItH,EAAQY,EAAGqB,EADXiK,EAAMC,EAAcnN,KAAKf,KAAMyI,EAAMrF,GAgBzC,OAdI6K,IACFlM,EAASkM,EAAIlM,OACb0G,EAAOwF,EAAIxF,KACXzE,EAASiK,EAAIjK,QAGXjC,aAAkBgM,EACpBpL,EAAIZ,EAAOU,UAAYiH,EAAQ3I,KAAKf,KAAM+B,EAAOA,OAAQ0G,OAAMrG,EAAW4B,QACtD5B,IAAXL,IACTY,EAAI0J,EAAUtK,EAAQ/B,KAAKkC,MAAMoK,YAC3BvK,EACA2H,EAAQ3I,KAAKf,KAAM+B,EAAQ0G,OAAMrG,EAAW4B,IAG7CrB,EAWT,SAASuL,EAAczF,EAAMrF,GAE3B,IAAItC,EAAIuE,EAAI8I,MAAM/K,GACdgL,EAAUC,EAAavN,GACvBkD,EAASsK,EAAYtO,KAAKuO,OAAO9F,EAAK1G,SAC1C,GAAwC,IAApCwC,OAAOiK,KAAK/F,EAAK1G,QAAQf,QAAgBoN,IAAYpK,EAAQ,CAC/D,IAAIyK,EAAKtK,EAAYiK,GACjB/E,EAASrJ,KAAK4D,MAAM6K,GACxB,GAAqB,iBAAVpF,EACT,OAuBN,SAA0BZ,EAAMrF,EAAKsL,GAEnC,IAAIT,EAAMC,EAAcnN,KAAKf,KAAMyI,EAAMrF,GACzC,GAAI6K,EAAK,CACP,IAAIlM,EAASkM,EAAIlM,OACbiC,EAASiK,EAAIjK,OACjByE,EAAOwF,EAAIxF,KACX,IAAIgG,EAAKzO,KAAKuO,OAAOxM,GAErB,OADI0M,IAAIzK,EAAS2K,EAAW3K,EAAQyK,IAC7BG,EAAe7N,KAAKf,KAAM0O,EAAW1K,EAAQjC,EAAQ0G,KAhClC1H,KAAKf,KAAMyI,EAAMY,EAAQvI,GAC5C,GAAIuI,aAAkB0E,EACtB1E,EAAO5G,UAAUzC,KAAKkD,SAASmG,GACpCZ,EAAOY,MACF,CAEL,MADAA,EAASrJ,KAAK6D,SAAS4K,cACDV,GAMpB,OAJA,GADK1E,EAAO5G,UAAUzC,KAAKkD,SAASmG,GAChCoF,GAAMtK,EAAYf,GACpB,MAAO,CAAErB,OAAQsH,EAAQZ,KAAMA,EAAMzE,OAAQA,GAC/CyE,EAAOY,EAKX,IAAKZ,EAAK1G,OAAQ,OAClBiC,EAASsK,EAAYtO,KAAKuO,OAAO9F,EAAK1G,SAExC,OAAO6M,EAAe7N,KAAKf,KAAMc,EAAGkD,EAAQyE,EAAK1G,OAAQ0G,IAtF3D/I,EAAOD,QAAUwD,GAETkB,YAAcA,EACtBlB,EAAQmB,SAAWkK,EACnBrL,EAAQiB,IAAMyK,EACd1L,EAAQ4L,IA0NR,SAAoB9M,GAClB,IAAI+M,EAAW3K,EAAYnE,KAAKuO,OAAOxM,IACnCgN,EAAU,CAACC,GAAIF,GACfG,EAAY,CAACD,GAAIV,EAAYQ,GAAU,IACvCnF,EAAY,GACZ5J,EAAOC,KAgCX,OA9BAgO,EAASjM,EAAQ,CAACmN,SAAS,GAAO,SAAStM,EAAKuM,EAASC,EAAYC,EAAeC,EAAexC,EAAcyC,GAC/G,GAAgB,KAAZJ,EAAJ,CACA,IAAIV,EAAK1O,EAAKwO,OAAO3L,GACjBoB,EAAS+K,EAAQM,GACjBjL,EAAW6K,EAAUI,GAAiB,IAAMC,EAIhD,QAHiBlN,IAAbmN,IACFnL,GAAY,KAA0B,iBAAZmL,EAAuBA,EAAWvK,EAAKwK,eAAeD,KAEjE,iBAANd,EAAgB,CACzBA,EAAKzK,EAASG,EAAYH,EAASqB,EAAIpC,QAAQe,EAAQyK,GAAMA,GAE7D,IAAIpF,EAAStJ,EAAK6D,MAAM6K,GAExB,GADqB,iBAAVpF,IAAoBA,EAAStJ,EAAK6D,MAAMyF,IAC/CA,GAAUA,EAAOtH,QACnB,IAAKuG,EAAM1F,EAAKyG,EAAOtH,QACrB,MAAM,IAAInB,MAAM,OAAS6N,EAAK,2CAC3B,GAAIA,GAAMtK,EAAYC,GAC3B,GAAa,KAATqK,EAAG,GAAW,CAChB,GAAI9E,EAAU8E,KAAQnG,EAAM1F,EAAK+G,EAAU8E,IACzC,MAAM,IAAI7N,MAAM,OAAS6N,EAAK,sCAChC9E,EAAU8E,GAAM7L,OAEhB7C,EAAK6D,MAAM6K,GAAMrK,EAIvB2K,EAAQI,GAAWnL,EACnBiL,EAAUE,GAAW/K,KAGhBuF,GA9PT1G,EAAQoJ,UAAYA,EACpBpJ,EAAQlB,OAASmM,EAkGjB,IAAIuB,EAAuBzK,EAAK0K,OAAO,CAAC,aAAc,oBAAqB,OAAQ,eAAgB,gBAEnG,SAASd,EAAeF,EAAW1K,EAAQjC,EAAQ0G,GAGjD,GADAiG,EAAUiB,SAAWjB,EAAUiB,UAAY,GACN,KAAjCjB,EAAUiB,SAASC,MAAM,EAAE,GAA/B,CAGA,IAFA,IAAIC,EAAQnB,EAAUiB,SAASjI,MAAM,KAE5BnH,EAAI,EAAGA,EAAIsP,EAAM7O,OAAQT,IAAK,CACrC,IAAIuP,EAAOD,EAAMtP,GACjB,GAAIuP,EAAM,CAGR,QAAe1N,KADfL,EAASA,EADT+N,EAAO9K,EAAK+K,iBAAiBD,KAEH,MAC1B,IAAIrB,EACJ,IAAKgB,EAAqBK,MACxBrB,EAAKzO,KAAKuO,OAAOxM,MACTiC,EAAS2K,EAAW3K,EAAQyK,IAChC1M,EAAOgB,MAAM,CACf,IAAIA,EAAO4L,EAAW3K,EAAQjC,EAAOgB,MACjCkL,EAAMC,EAAcnN,KAAKf,KAAMyI,EAAM1F,GACrCkL,IACFlM,EAASkM,EAAIlM,OACb0G,EAAOwF,EAAIxF,KACXzE,EAASiK,EAAIjK,UAMvB,YAAe5B,IAAXL,GAAwBA,IAAW0G,EAAK1G,OACnC,CAAEA,OAAQA,EAAQ0G,KAAMA,EAAMzE,OAAQA,QAD/C,GAKF,IAAIgM,EAAiBhL,EAAK0K,OAAO,CAC/B,OAAQ,SAAU,UAClB,YAAa,YACb,gBAAiB,gBACjB,WAAY,WACZ,UAAW,UACX,cAAe,aACf,WAAY,SAEd,SAASrD,EAAUtK,EAAQkO,GACzB,OAAc,IAAVA,SACU7N,IAAV6N,IAAiC,IAAVA,EAK7B,SAASC,EAAWnO,GAClB,IAAIoO,EACJ,GAAIC,MAAMC,QAAQtO,IAChB,IAAK,IAAIxB,EAAE,EAAGA,EAAEwB,EAAOf,OAAQT,IAE7B,GAAmB,iBADnB4P,EAAOpO,EAAOxB,MACkB2P,EAAWC,GAAO,OAAO,OAG3D,IAAK,IAAI7O,KAAOS,EAAQ,CACtB,GAAW,QAAPT,EAAe,OAAO,EAE1B,GAAmB,iBADnB6O,EAAOpO,EAAOT,MACkB4O,EAAWC,GAAO,OAAO,EAG7D,OAAO,EAnB2CD,CAAWnO,GACpDkO,EAsBX,SAASK,EAAUvO,GACjB,IAAeoO,EAAXI,EAAQ,EACZ,GAAIH,MAAMC,QAAQtO,IAChB,IAAK,IAAIxB,EAAE,EAAGA,EAAEwB,EAAOf,OAAQT,IAG7B,GADmB,iBADnB4P,EAAOpO,EAAOxB,MACegQ,GAASD,EAAUH,IAC5CI,GAASC,EAAAA,EAAU,OAAOA,EAAAA,OAGhC,IAAK,IAAIlP,KAAOS,EAAQ,CACtB,GAAW,QAAPT,EAAe,OAAOkP,EAAAA,EAC1B,GAAIR,EAAe1O,GACjBiP,SAIA,GADmB,iBADnBJ,EAAOpO,EAAOT,MACeiP,GAASD,EAAUH,GAAQ,GACpDI,GAASC,EAAAA,EAAU,OAAOA,EAAAA,EAIpC,OAAOD,EA1CgBD,CAAUvO,IAAWkO,OAAvC,GA8CP,SAAS3B,EAAYG,EAAIgC,GAGvB,OAFkB,IAAdA,IAAqBhC,EAAKtK,EAAYsK,IAEnCJ,EADChJ,EAAI8I,MAAMM,IAKpB,SAASJ,EAAavN,GACpB,OAAOuE,EAAIqL,UAAU5P,GAAG4G,MAAM,KAAK,GAAK,IAI1C,IAAIiJ,EAAsB,QAC1B,SAASxM,EAAYsK,GACnB,OAAOA,EAAKA,EAAGmC,QAAQD,EAAqB,IAAM,GAIpD,SAAShC,EAAW3K,EAAQyK,GAE1B,OADAA,EAAKtK,EAAYsK,GACVpJ,EAAIpC,QAAQe,EAAQyK,KA6C3B,CAACoC,eAAe,EAAE7I,SAAS,GAAG4F,kBAAkB,GAAGkD,uBAAuB,GAAGC,SAAS,KAAKC,EAAE,CAAC,SAASvQ,EAAQf,EAAOD,GACxH,aAEA,IAAIwR,EAAcxQ,EAAQ,YACtBiP,EAASjP,EAAQ,UAAUiP,OAE/BhQ,EAAOD,QAAU,WACf,IAAI4K,EAAQ,CACV,CAAE6G,KAAM,SACNC,MAAO,CAAE,CAAEC,QAAW,CAAC,qBACd,CAAEC,QAAW,CAAC,qBAAuB,aAAc,WAC9D,CAAEH,KAAM,SACNC,MAAO,CAAE,YAAa,YAAa,UAAW,WAChD,CAAED,KAAM,QACNC,MAAO,CAAE,WAAY,WAAY,QAAS,WAAY,gBACxD,CAAED,KAAM,SACNC,MAAO,CAAE,gBAAiB,gBAAiB,WAAY,eAAgB,gBAC9D,CAAEG,WAAc,CAAC,uBAAwB,wBACpD,CAAEH,MAAO,CAAE,OAAQ,QAAS,OAAQ,MAAO,QAAS,QAAS,QAAS,QAGpEI,EAAM,CAAE,OAAQ,YA4CpB,OAnCAlH,EAAMmH,IAAM9B,EAAO6B,GACnBlH,EAAMoH,MAAQ/B,EAFF,CAAE,SAAU,UAAW,SAAU,QAAS,SAAU,UAAW,SAI3ErF,EAAMqH,QAAQ,SAAUC,GACtBA,EAAMR,MAAQQ,EAAMR,MAAMS,IAAI,SAAUvE,GACtC,IAAIwE,EACJ,GAAsB,iBAAXxE,EAAqB,CAC9B,IAAI/L,EAAMiD,OAAOiK,KAAKnB,GAAS,GAC/BwE,EAAexE,EAAQ/L,GACvB+L,EAAU/L,EACVuQ,EAAaH,QAAQ,SAAUI,GAC7BP,EAAIQ,KAAKD,GACTzH,EAAMmH,IAAIM,IAAK,IASnB,OANAP,EAAIQ,KAAK1E,GACEhD,EAAMmH,IAAInE,GAAW,CAC9BA,QAASA,EACTxM,KAAMoQ,EAAY5D,GAClB2E,WAAYH,KAKhBxH,EAAMmH,IAAIS,SAAW,CACnB5E,QAAS,WACTxM,KAAMoQ,EAAYgB,UAGhBN,EAAMT,OAAM7G,EAAMoH,MAAME,EAAMT,MAAQS,KAG5CtH,EAAM6H,SAAWxC,EAAO6B,EAAIY,OAxCb,CACb,UAAW,MAAO,KAAM,QAAS,SAAU,QAC3C,cAAe,UAAW,cAC1B,WAAY,WAAY,YACxB,mBAAoB,kBACpB,kBAAmB,OAAQ,UAoC7B9H,EAAM+H,OAAS,GAER/H,IAGP,CAACgI,WAAW,GAAGrK,SAAS,KAAKsK,EAAE,CAAC,SAAS7R,EAAQf,EAAOD,GAC1D,aAEA,IAAIuF,EAAOvE,EAAQ,UAEnBf,EAAOD,QAEP,SAAsB8S,GACpBvN,EAAKc,KAAKyM,EAAKvS,QAGf,CAACgI,SAAS,KAAKwK,EAAE,CAAC,SAAS/R,EAAQf,EAAOD,GAC5C,aAIAC,EAAOD,QAAU,SAAoBuG,GAKnC,IAJA,IAGIzE,EAHAP,EAAS,EACTyR,EAAMzM,EAAIhF,OACV0R,EAAM,EAEHA,EAAMD,GACXzR,IAEa,QADbO,EAAQyE,EAAI2M,WAAWD,OACAnR,GAAS,OAAUmR,EAAMD,GAGtB,QAAX,OADblR,EAAQyE,EAAI2M,WAAWD,MACSA,IAGpC,OAAO1R,IAGP,IAAI4R,GAAG,CAAC,SAASnS,EAAQf,EAAOD,GAClC,aAsCA,SAASoT,EAAcC,EAAUC,EAAMC,GACrC,IAAIC,EAAQD,EAAS,QAAU,QAC3BE,EAAMF,EAAS,OAAS,OACxBG,EAAKH,EAAS,IAAM,GACpBI,EAAMJ,EAAS,GAAK,IACxB,OAAQF,GACN,IAAK,OAAQ,OAAOC,EAAOE,EAAQ,OACnC,IAAK,QAAS,OAAOE,EAAK,iBAAmBJ,EAAO,IACpD,IAAK,SAAU,MAAO,IAAMI,EAAKJ,EAAOG,EAClB,UAAYH,EAAOE,EAAQ,WAAaC,EACxCE,EAAM,iBAAmBL,EAAO,KACtD,IAAK,UAAW,MAAO,WAAaA,EAAOE,EAAQ,WAAaC,EACzCE,EAAM,IAAML,EAAO,QACnBG,EAAMH,EAAOE,EAAQF,EAAO,IACnD,QAAS,MAAO,UAAYA,EAAOE,EAAQ,IAAMH,EAAW,KAjDhEpT,EAAOD,QAAU,CACfqG,KA2BF,SAAcxF,EAAG+S,GAEf,IAAK,IAAI/R,KADT+R,EAAKA,GAAM,GACK/S,EAAG+S,EAAG/R,GAAOhB,EAAEgB,GAC/B,OAAO+R,GA7BPR,cAAeA,EACfS,eAmDF,SAAwBC,EAAWR,GACjC,OAAQQ,EAAUvS,QAChB,KAAK,EAAG,OAAO6R,EAAcU,EAAU,GAAIR,GAAM,GACjD,QACE,IAAIlS,EAAO,GACP4Q,EAAQ/B,EAAO6D,GASnB,IAAK,IAAIlT,KARLoR,EAAM+B,OAAS/B,EAAMgC,SACvB5S,EAAO4Q,EAAMiC,KAAO,IAAK,KAAOX,EAAO,OACvClS,GAAQ,UAAYkS,EAAO,wBACpBtB,EAAMiC,YACNjC,EAAM+B,aACN/B,EAAMgC,QAEXhC,EAAMkC,eAAelC,EAAMmC,QACjBnC,EACZ5Q,IAASA,EAAO,OAAS,IAAOgS,EAAcxS,EAAG0S,GAAM,GAEzD,OAAOlS,IAnEXgT,cAyEF,SAAuBC,EAAmBP,GACxC,GAAInD,MAAMC,QAAQkD,GAAY,CAE5B,IADA,IAAI9B,EAAQ,GACHlR,EAAE,EAAGA,EAAEgT,EAAUvS,OAAQT,IAAK,CACrC,IAAIF,EAAIkT,EAAUhT,GACdwT,EAAgB1T,GAAIoR,EAAMA,EAAMzQ,QAAUX,EACf,UAAtByT,GAAuC,UAANzT,IAAeoR,EAAMA,EAAMzQ,QAAUX,GAEjF,GAAIoR,EAAMzQ,OAAQ,OAAOyQ,MACpB,CAAA,GAAIsC,EAAgBR,GACzB,MAAO,CAACA,GACH,GAA0B,UAAtBO,GAA+C,UAAdP,EAC1C,MAAO,CAAC,WApFV7D,OAAQA,EACRsE,YAAaA,EACbC,aAAcA,EACd3L,MAAO7H,EAAQ,mBACf4H,WAAY5H,EAAQ,gBACpByT,cA+GF,SAAuBlO,EAAKmO,GAC1BA,GAAW,SACX,IAAIlO,EAAUD,EAAIE,MAAM,IAAI6B,OAAOoM,EAAS,MAC5C,OAAOlO,EAAUA,EAAQjF,OAAS,GAjHlCoT,WAqHF,SAAoBpO,EAAKmO,EAASE,GAGhC,OAFAF,GAAW,WACXE,EAAOA,EAAKzD,QAAQ,MAAO,QACpB5K,EAAI4K,QAAQ,IAAI7I,OAAOoM,EAAS,KAAME,EAAO,OAvHpDC,YA8HF,SAAqBC,GACnB,OAAOA,EAAI3D,QAAQ4D,EAAY,IACpB5D,QAAQ6D,EAAkB,IAC1B7D,QAAQ8D,EAAoB,eAhIvCC,iBA8IF,SAA0BJ,EAAKK,GAC7B,IAAI3O,EAAUsO,EAAIrO,MAAM2O,GACpB5O,GAA6B,GAAlBA,EAAQjF,SACrBuT,EAAMK,EACEL,EAAI3D,QAAQkE,EAAqB,IAC7BlE,QAAQmE,EAAcC,GAC1BT,EAAI3D,QAAQqE,EAAe,IACvBrE,QAAQsE,EAAcC,IAIpC,OADAlP,EAAUsO,EAAIrO,MAAMkP,KACe,IAAnBnP,EAAQjF,OACjBuT,EAAI3D,QAAQyE,EAAiB,IADSd,GAxJ7Ce,eA6JF,SAAwBvT,EAAQoP,GAC9B,GAAqB,kBAAVpP,EAAqB,OAAQA,EACxC,IAAK,IAAIT,KAAOS,EAAQ,GAAIoP,EAAM7P,GAAM,OAAO,GA9J/CiU,qBAkKF,SAA8BxT,EAAQoP,EAAOqE,GAC3C,GAAqB,kBAAVzT,EAAqB,OAAQA,GAA2B,OAAjByT,EAClD,IAAK,IAAIlU,KAAOS,EAAQ,GAAIT,GAAOkU,GAAiBrE,EAAM7P,GAAM,OAAO,GAnKvEmU,mBAuKF,SAA4B1T,EAAQoP,GAClC,GAAqB,kBAAVpP,EAAqB,OAChC,IAAK,IAAIT,KAAOS,EAAQ,IAAKoP,EAAM7P,GAAM,OAAOA,GAxKhD4H,eAAgBA,EAChBwM,YAgLF,SAAqBC,EAAatB,EAAMuB,EAAcC,GAIpD,OAAOC,EAAUH,EAHNC,EACG,SAAavB,GAAQwB,EAAW,GAAK,8CACpCA,EAAW,SAAaxB,EAAO,SAAa,YAAiBA,EAAO,cAlLnF0B,QAuLF,SAAiBJ,EAAaK,EAAMJ,GAClC,IAAIK,EACU/M,EADH0M,EACkB,IAAMM,EAAkBF,GACxBhC,EAAYgC,IACzC,OAAOF,EAAUH,EAAaM,IA1L9BE,QAgMF,SAAiBC,EAAOC,EAAKC,GAC3B,IAAIC,EAAIC,EAAazD,EAAM9M,EAC3B,GAAc,KAAVmQ,EAAc,MAAO,WACzB,GAAgB,KAAZA,EAAM,GAAW,CACnB,IAAK3Q,EAAaoC,KAAKuO,GAAQ,MAAM,IAAIxV,MAAM,yBAA2BwV,GAC1EI,EAAcJ,EACdrD,EAAO,eACF,CAEL,KADA9M,EAAUmQ,EAAMlQ,MAAMP,IACR,MAAM,IAAI/E,MAAM,yBAA2BwV,GAGzD,GAFAG,GAAMtQ,EAAQ,GAEK,MADnBuQ,EAAcvQ,EAAQ,IACE,CACtB,GAAUoQ,GAANE,EAAW,MAAM,IAAI3V,MAAM,gCAAkC2V,EAAK,gCAAkCF,GACxG,OAAOC,EAAMD,EAAME,GAGrB,GAASF,EAALE,EAAU,MAAM,IAAI3V,MAAM,sBAAwB2V,EAAK,gCAAkCF,GAE7F,GADAtD,EAAO,QAAWsD,EAAME,GAAO,KAC1BC,EAAa,OAAOzD,EAK3B,IAFA,IAAIsB,EAAOtB,EACP0D,EAAWD,EAAY9O,MAAM,KACxBnH,EAAE,EAAGA,EAAEkW,EAASzV,OAAQT,IAAK,CACpC,IAAImW,EAAUD,EAASlW,GACnBmW,IACF3D,GAAQiB,EAAY2C,EAAoBD,IACxCrC,GAAQ,OAAStB,GAGrB,OAAOsB,GA9NPtE,iBAwOF,SAA0B/J,GACxB,OAAO2Q,EAAoBC,mBAAmB5Q,KAxO9C2Q,oBAAqBA,EACrBnH,eA2OF,SAAwBxJ,GACtB,OAAO6Q,mBAAmBX,EAAkBlQ,KA3O5CkQ,kBAAmBA,GAoDrB,IAAInC,EAAkBrE,EAAO,CAAE,SAAU,SAAU,UAAW,UAAW,SAkBzE,SAASA,EAAOlG,GAEd,IADA,IAAIsN,EAAO,GACFvW,EAAE,EAAGA,EAAEiJ,EAAIxI,OAAQT,IAAKuW,EAAKtN,EAAIjJ,KAAM,EAChD,OAAOuW,EAIT,IAAIC,EAAa,wBACbC,EAAe,QACnB,SAAShD,EAAY1S,GACnB,MAAqB,iBAAPA,EACJ,IAAMA,EAAM,IACZyV,EAAWlP,KAAKvG,GACd,IAAMA,EACN,KAAO2S,EAAa3S,GAAO,KAIzC,SAAS2S,EAAajO,GACpB,OAAOA,EAAI4K,QAAQoG,EAAc,QACtBpG,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OAkB5B,IAAI4D,EAAa,gBACbC,EAAmB,uCACnBC,EAAqB,8CAQzB,IAAIG,EAAgB,eAChBI,EAAgB,kEAChBH,EAAsB,uCACtBI,EAAe,uBACfC,EAAc,uCACdJ,EAAe,gFACfC,EAAoB,eACpBI,EAAkB,qCAClBC,EAAkB,iDAoCtB,SAASnM,EAAelD,GACtB,MAAO,IAAOiO,EAAajO,GAAO,IAoBpC,IAAIP,EAAe,sBACfE,EAAwB,mCAoC5B,SAASmQ,EAAWnV,EAAGsW,GACrB,MAAS,MAALtW,EAAkBsW,GACdtW,EAAI,MAAQsW,GAAGrG,QAAQ,UAAW,IAc5C,SAASsF,EAAkBlQ,GACzB,OAAOA,EAAI4K,QAAQ,KAAM,MAAMA,QAAQ,MAAO,MAIhD,SAAS+F,EAAoB3Q,GAC3B,OAAOA,EAAI4K,QAAQ,MAAO,KAAKA,QAAQ,MAAO,OAG9C,CAACsG,eAAe,EAAEtJ,kBAAkB,KAAKuJ,GAAG,CAAC,SAAS1W,EAAQf,EAAOD,GACvE,aAEA,IAAI2X,EAAW,CACb,aACA,UACA,mBACA,UACA,mBACA,YACA,YACA,UACA,kBACA,WACA,WACA,cACA,gBACA,gBACA,WACA,uBACA,OACA,SACA,SAGF1X,EAAOD,QAAU,SAAU4X,EAAYC,GACrC,IAAK,IAAI/W,EAAE,EAAGA,EAAE+W,EAAqBtW,OAAQT,IAAK,CAChD8W,EAAaE,KAAKpJ,MAAMoJ,KAAKC,UAAUH,IACvC,IAEII,EAFAhB,EAAWa,EAAqB/W,GAAGmH,MAAM,KACzCwK,EAAWmF,EAEf,IAAKI,EAAE,EAAGA,EAAEhB,EAASzV,OAAQyW,IAC3BvF,EAAWA,EAASuE,EAASgB,IAE/B,IAAKA,EAAE,EAAGA,EAAEL,EAASpW,OAAQyW,IAAK,CAChC,IAAInW,EAAM8V,EAASK,GACf1V,EAASmQ,EAAS5Q,GAClBS,IACFmQ,EAAS5Q,GAAO,CACdoW,MAAO,CACL3V,EACA,CAAEgB,KAAM,oFAOlB,OAAOsU,IAGP,IAAIM,GAAG,CAAC,SAASlX,EAAQf,EAAOD,GAClC,aAEA,IAAI4X,EAAa5W,EAAQ,oCAEzBf,EAAOD,QAAU,CACfmY,IAAK,0EACLC,YAAa,CACXC,YAAaT,EAAWQ,YAAYC,aAEtC5G,KAAM,SACN/D,aAAc,CACZpL,OAAQ,CAAC,YACTqU,MAAO,CAAC,YACR2B,WAAY,CAAC,UACbvK,MAAO,CAACwK,IAAK,CAACC,SAAU,CAAC,YAE3B3G,WAAY,CACVJ,KAAMmG,EAAW/F,WAAWJ,KAC5BnP,OAAQ,CAACmP,KAAM,WACf6G,WAAY,CAAC7G,KAAM,WACnB/D,aAAc,CACZ+D,KAAM,QACNgH,MAAO,CAAChH,KAAM,WAEhBmG,WAAY,CAACnG,KAAM,UACnBiH,UAAW,CAACjH,KAAM,WAClB1D,MAAO,CAAC0D,KAAM,WACdkF,MAAO,CAAClF,KAAM,WACd0D,MAAO,CAAC1D,KAAM,WACdvM,OAAQ,CACN+S,MAAO,CACL,CAACxG,KAAM,WACP,CAACkH,MAAO,aAMd,CAACC,mCAAmC,KAAKC,GAAG,CAAC,SAAS7X,EAAQf,EAAOD,GACvE,aACAC,EAAOD,QAAU,SAAyBsN,EAAIwL,GAC5C,IAUEC,EAVEjE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UAEzB5C,EAAQ,QAAUuC,GAAY,IAC9BM,EAAUlM,EAAGnD,KAAKwM,OAASvT,GAAWA,EAAQuT,MAIhDoC,EAFES,GACF1E,GAAO,cAAgB,EAAS,MAASxH,EAAG/H,KAAKmR,QAAQtT,EAAQuT,MAAOuC,EAAU5L,EAAGmM,aAAgB,KACtF,SAAWT,GAEX5V,EAEjB,IAAIsW,EAAqB,WAAZZ,EACXa,EAAoBD,EAAS,mBAAqB,mBAClDE,EAActM,EAAGhL,OAAOqX,GACxBE,EAAcvM,EAAGnD,KAAKwM,OAASiD,GAAeA,EAAYjD,MAC1DmD,EAAMJ,EAAS,IAAM,IACrBK,EAASL,EAAS,IAAM,IACxBM,OAAgBrX,EAClB,GAAIkX,EAAa,CACf,IAAII,EAAmB3M,EAAG/H,KAAKmR,QAAQkD,EAAYjD,MAAOuC,EAAU5L,EAAGmM,aACrES,EAAa,YAAclB,EAC3BmB,EAAY,WAAanB,EACzBoB,EAAgB,eAAiBpB,EAEjCqB,EAAS,QADTC,EAAU,KAAOtB,GACY,OAC/BlE,GAAO,kBAAoB,EAAS,MAAQ,EAAqB,KAGjE,IACIyF,EADAP,EAAgBL,GAChBY,EAAaA,GAAc,IACpBjI,KAHXwC,GAAO,QAAU,EAAe,SAAW,EAAc,cADzDmF,EAAmB,aAAejB,GAC2D,SAAW,EAAc,oBAAwB,EAAc,sBAA0B,EAAc,oBAIpMlE,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,iBAAoBkF,GAAiB,mBAAqB,oCAA0C1M,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,kBACjK,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,gBAAmB,EAAsB,wBAE9CxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EACZA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,gBACH0E,IACF1E,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,IAAM,EAAc,qBAAyB,EAAe,MAAQ,EAAiB,qBAAuB,EAAqB,IAAM,EAAQ,KAAO,EAAiB,OAAS,EAAU,IAAM,EAAW,KAAO,EAAqB,MAAQ,EAAU,IAAM,EAAW,IAAM,EAAiB,WAAa,EAAe,MAAQ,EAAqB,gBAAkB,EAAU,IAAM,EAAW,KAAO,EAAiB,MAAQ,EAAU,IAAM,EAAW,IAAM,EAAiB,SAAW,EAAU,QAAU,EAAU,aAAe,EAAS,MAAQ,EAAe,OAAU,EAAQ,QAAY,EAAQ,YAC9kBnS,IAAZS,IAEFiW,EAAiB/L,EAAG5B,cAAgB,KADpCsO,EAAgBL,GAEhBZ,EAAekB,EACfT,EAAUK,OAEP,CAEHQ,EAASP,EACX,IAFIM,EAAsC,iBAAfR,IAENJ,EAAS,CAC5B,IAAIc,EAAU,IAAOD,EAAS,IAC9BvF,GAAO,SACH0E,IACF1E,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,MAAQ,EAAiB,qBAAuB,EAAgB,IAAM,EAAQ,KAAO,EAAiB,MAAQ,EAAU,IAAM,EAAW,KAAO,EAAgB,MAAQ,EAAU,IAAM,EAAW,IAAM,EAAiB,SAAW,EAAU,QAAU,EAAU,WACrQ,CACDsF,QAA6BzX,IAAZS,GACnB8W,GAAa,EAEbb,EAAiB/L,EAAG5B,cAAgB,KADpCsO,EAAgBL,GAEhBZ,EAAea,EACfG,GAAU,MAENK,IAAerB,EAAe+B,KAAKpB,EAAS,MAAQ,OAAOE,EAAaxW,IACxEwW,MAAiBQ,GAAgBrB,IACnCmB,GAAa,EAEbb,EAAiB/L,EAAG5B,cAAgB,KADpCsO,EAAgBL,GAEhBI,GAAU,MAEVG,GAAa,EACbG,GAAU,MAGVC,EAAU,IAAOD,EAAS,IAC9BvF,GAAO,SACH0E,IACF1E,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,IAAM,EAAU,IAAM,EAAW,IAAM,EAAiB,OAAS,EAAU,QAAU,EAAU,QAG1GkF,EAAgBA,GAAiBlB,GAC7ByB,EAAaA,GAAc,IACpBjI,KAAKwC,GAChBA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,iBAAoBkF,GAAiB,UAAY,oCAA0C1M,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,4BAA8B,EAAY,YAAc,EAAiB,gBAAkB,EAAe,OAClQ,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,0BAA6B,EAAW,IAE7CA,GADE0E,EACK,OAAU,EAEL,EAAiB,KAG7BlM,EAAGnD,KAAKuQ,UACV5F,GAAO,eAELA,GADE0E,EACK,kBAAoB,EAEpB,GAAK,EAEd1E,GAAO,2CAA8CxH,EAAa,WAAI,YAAc,EAAU,KAEhGwH,GAAO,OAEPA,GAAO,OAEL6F,EAAQ7F,EAgBZ,OAfAA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,MACHwE,IACFxE,GAAO,YAEFA,IAGP,IAAIiG,GAAG,CAAC,SAAS/Z,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA8BsN,EAAIwL,GACjD,IAUEC,EAVEjE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UAEzB5C,EAAQ,QAAUuC,GAAY,IAC9BM,EAAUlM,EAAGnD,KAAKwM,OAASvT,GAAWA,EAAQuT,MAIhDoC,EAFES,GACF1E,GAAO,cAAgB,EAAS,MAASxH,EAAG/H,KAAKmR,QAAQtT,EAAQuT,MAAOuC,EAAU5L,EAAGmM,aAAgB,KACtF,SAAWT,GAEX5V,EAGjB0R,GAAO,QACH0E,IACF1E,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAGhF,IAAIkF,EAAgBlB,EAChByB,EAAaA,GAAc,GAC/BA,EAAWjI,KAHXwC,GAAO,IAAM,EAAU,YALD,YAAZgE,EAAyB,IAAM,KAKG,IAAM,EAAiB,QAInEhE,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,iBAAoBkF,GAAiB,eAAiB,oCAA0C1M,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,uBAAyB,EAAiB,OACvM,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,gCAELA,GADc,YAAZgE,EACK,OAEA,QAEThE,GAAO,SAELA,GADE0E,EACK,OAAU,EAAiB,OAE3B,GAAK,EAEd1E,GAAO,YAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,eAELA,GADE0E,EACK,kBAAoB,EAEpB,GAAK,EAEd1E,GAAO,2CAA8CxH,EAAa,WAAI,YAAc,EAAU,KAEhGwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EAgBZ,OAfAA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,KACHwE,IACFxE,GAAO,YAEFA,IAGP,IAAIkG,GAAG,CAAC,SAASha,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA+BsN,EAAIwL,GAClD,IAUEC,EAVEjE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UAEzB5C,EAAQ,QAAUuC,GAAY,IAC9BM,EAAUlM,EAAGnD,KAAKwM,OAASvT,GAAWA,EAAQuT,MAIhDoC,EAFES,GACF1E,GAAO,cAAgB,EAAS,MAASxH,EAAG/H,KAAKmR,QAAQtT,EAAQuT,MAAOuC,EAAU5L,EAAGmM,aAAgB,KACtF,SAAWT,GAEX5V,EAGjB0R,GAAO,QACH0E,IACF1E,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAG9EA,IADsB,IAApBxH,EAAGnD,KAAK8Q,QACH,IAAM,EAAU,WAEhB,eAAiB,EAAU,KAGpC,IAAIjB,EAAgBlB,EAChByB,EAAaA,GAAc,GAC/BA,EAAWjI,KAHXwC,GAAO,KAVe,aAAZgE,EAA0B,IAAM,KAUrB,IAAM,EAAiB,QAI5ChE,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,iBAAoBkF,GAAiB,gBAAkB,oCAA0C1M,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,uBAAyB,EAAiB,OACxM,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,8BAELA,GADc,aAAZgE,EACK,SAEA,UAEThE,GAAO,SAELA,GADE0E,EACK,OAAU,EAAiB,OAE3B,GAAK,EAEd1E,GAAO,iBAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,eAELA,GADE0E,EACK,kBAAoB,EAEpB,GAAK,EAEd1E,GAAO,2CAA8CxH,EAAa,WAAI,YAAc,EAAU,KAEhGwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EAgBZ,OAfAA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,KACHwE,IACFxE,GAAO,YAEFA,IAGP,IAAIoG,GAAG,CAAC,SAASla,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAmCsN,EAAIwL,GACtD,IAUEC,EAVEjE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UAEzB5C,EAAQ,QAAUuC,GAAY,IAC9BM,EAAUlM,EAAGnD,KAAKwM,OAASvT,GAAWA,EAAQuT,MAIhDoC,EAFES,GACF1E,GAAO,cAAgB,EAAS,MAASxH,EAAG/H,KAAKmR,QAAQtT,EAAQuT,MAAOuC,EAAU5L,EAAGmM,aAAgB,KACtF,SAAWT,GAEX5V,EAGjB0R,GAAO,QACH0E,IACF1E,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAGhF,IAAIkF,EAAgBlB,EAChByB,EAAaA,GAAc,GAC/BA,EAAWjI,KAHXwC,GAAO,gBAAkB,EAAU,aALb,iBAAZgE,EAA8B,IAAM,KAKW,IAAM,EAAiB,QAIhFhE,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,iBAAoBkF,GAAiB,oBAAsB,oCAA0C1M,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,uBAAyB,EAAiB,OAC5M,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,gCAELA,GADc,iBAAZgE,EACK,OAEA,QAEThE,GAAO,SAELA,GADE0E,EACK,OAAU,EAAiB,OAE3B,GAAK,EAEd1E,GAAO,iBAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,eAELA,GADE0E,EACK,kBAAoB,EAEpB,GAAK,EAEd1E,GAAO,2CAA8CxH,EAAa,WAAI,YAAc,EAAU,KAEhGwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EAgBZ,OAfAA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,KACHwE,IACFxE,GAAO,YAEFA,IAGP,IAAIqG,GAAG,CAAC,SAASna,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAwBsN,EAAIwL,GAC3C,IAAIhE,EAAM,IACN1R,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB6B,EAAM9N,EAAG/H,KAAKc,KAAKiH,GACnB+N,EAAiB,GACrBD,EAAInC,QACJ,IAAIqC,EAAa,QAAUF,EAAInC,MAC3BsC,EAAiBH,EAAI7W,OACvBiX,GAAmB,EACjBC,EAAOrY,EACX,GAAIqY,EAGF,IAFA,IAAIC,EAAMC,GAAM,EACdC,EAAKH,EAAKla,OAAS,EACdoa,EAAKC,GACVF,EAAOD,EAAKE,GAAM,IACbrO,EAAGnD,KAAK0R,eAAgC,iBAARH,GAA+C,EAA3B5W,OAAOiK,KAAK2M,GAAMna,OAAa+L,EAAG/H,KAAKsQ,eAAe6F,EAAMpO,EAAG1C,MAAMmH,QAC5HyJ,GAAmB,EACnBJ,EAAI9Y,OAASoZ,EACbN,EAAI3P,WAAa2N,EAAc,IAAMuC,EAAK,IAC1CP,EAAI1P,cAAgB2N,EAAiB,IAAMsC,EAC3C7G,GAAO,KAAQxH,EAAGtK,SAASoY,GAAQ,IACnCA,EAAI7W,OAASgX,EACTjC,IACFxE,GAAO,QAAU,EAAe,OAChCuG,GAAkB,MAa1B,OARI/B,IAEAxE,GADE0G,EACK,gBAEA,IAAOH,EAAelL,MAAM,GAAI,GAAM,KAGjD2E,EAAMxH,EAAG/H,KAAKsP,YAAYC,KAI1B,IAAIgH,GAAG,CAAC,SAAS9a,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAwBsN,EAAIwL,GAC3C,IAAIhE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9B6C,EAAS,QAAU/C,EACnBgD,EAAQ,SAAWhD,EACnBoC,EAAM9N,EAAG/H,KAAKc,KAAKiH,GACnB+N,EAAiB,GACrBD,EAAInC,QACJ,IAAIqC,EAAa,QAAUF,EAAInC,MAI/B,GAHqB7V,EAAQuK,MAAM,SAAS+N,GAC1C,OAAQpO,EAAGnD,KAAK0R,eAAgC,iBAARH,GAA+C,EAA3B5W,OAAOiK,KAAK2M,GAAMna,OAAa+L,EAAG/H,KAAKsQ,eAAe6F,EAAMpO,EAAG1C,MAAMmH,OAE/G,CAClB,IAAIwJ,EAAiBH,EAAI7W,OACzBuQ,GAAO,QAAU,EAAU,kBAAoB,EAAW,cAC1D,IAAImH,EAAgB3O,EAAGuN,cACvBvN,EAAGuN,cAAgBO,EAAIP,eAAgB,EACvC,IAAIY,EAAOrY,EACX,GAAIqY,EAGF,IAFA,IAAIC,EAAMC,GAAM,EACdC,EAAKH,EAAKla,OAAS,EACdoa,EAAKC,GACVF,EAAOD,EAAKE,GAAM,GAClBP,EAAI9Y,OAASoZ,EACbN,EAAI3P,WAAa2N,EAAc,IAAMuC,EAAK,IAC1CP,EAAI1P,cAAgB2N,EAAiB,IAAMsC,EAC3C7G,GAAO,KAAQxH,EAAGtK,SAASoY,GAAQ,IACnCA,EAAI7W,OAASgX,EACbzG,GAAO,IAAM,EAAW,MAAQ,EAAW,OAAS,EAAe,UAAY,EAAW,OAC1FuG,GAAkB,IAGtB/N,EAAGuN,cAAgBO,EAAIP,cAAgBoB,EACvCnH,GAAO,IAAM,EAAmB,SAAW,EAAW,sBAC9B,IAApBxH,EAAGkN,cACL1F,GAAO,sDAAyExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,kBACtI,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,oDAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACFxH,EAAGuN,eAAiBvB,IAGrBxE,GADExH,EAAG6H,MACE,wCAEA,8CAGXL,GAAO,uBAAyB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,4BACrHxH,EAAGnD,KAAKoP,YACVzE,GAAO,OAETA,EAAMxH,EAAG/H,KAAKsP,YAAYC,QAEtBwE,IACFxE,GAAO,iBAGX,OAAOA,IAGP,IAAIoH,GAAG,CAAC,SAASlb,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA0BsN,EAAIwL,GAC7C,IAAIhE,EAAM,IAENuE,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAE1CtG,EAAWlF,EAAG/H,KAAKkE,eAHT6D,EAAGhL,OAAOwW,IASxB,OALyB,IAArBxL,EAAGnD,KAAKqI,SACVsC,GAAO,gBAAkB,EAAa,KACF,mBAApBxH,EAAGnD,KAAKqI,WACxBsC,GAAO,wBAA0B,EAAa,KAAQxH,EAAG/H,KAAKkE,eAAe4P,GAAmB,4BAE3FvE,IAGP,IAAIqH,GAAG,CAAC,SAASnb,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAwBsN,EAAIwL,GAC3C,IAAIhE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9B6C,EAAS,QAAU/C,EACnBQ,EAAUlM,EAAGnD,KAAKwM,OAASvT,GAAWA,EAAQuT,MAE9C6C,IACF1E,GAAO,cAAgB,EAAS,MAASxH,EAAG/H,KAAKmR,QAAQtT,EAAQuT,MAAOuC,EAAU5L,EAAGmM,aAAgB,MAKlGD,IACH1E,GAAO,cAAgB,EAAS,qBAAuB,EAAgB,KAGzE,IAAIyF,EAAaA,GAAc,GAC/BA,EAAWjI,KAFXwC,GAAO,OAAS,EAAW,YAAc,EAAU,WAAa,EAAS,WAAa,EAAW,UAGjGA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,sDAAyExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,oCAAsC,EAAS,OACrL,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,8CAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EAgBZ,OAfAA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,KACHwE,IACFxE,GAAO,YAEFA,IAGP,IAAIsH,GAAG,CAAC,SAASpb,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA2BsN,EAAIwL,GAC9C,IAAIhE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9B6C,EAAS,QAAU/C,EACnBgD,EAAQ,SAAWhD,EACnBoC,EAAM9N,EAAG/H,KAAKc,KAAKiH,GAEvB8N,EAAInC,QACJ,IAAIqC,EAAa,QAAUF,EAAInC,MAC3BoD,EAAO,IAAMrD,EACfsD,EAAWlB,EAAIjC,UAAY7L,EAAG6L,UAAY,EAC1CoD,EAAY,OAASD,EACrBf,EAAiBjO,EAAG/I,OACpBiY,EAAmBlP,EAAGnD,KAAK0R,eAAmC,iBAAXzY,GAAqD,EAA9B0B,OAAOiK,KAAK3L,GAAS7B,OAAa+L,EAAG/H,KAAKsQ,eAAezS,EAASkK,EAAG1C,MAAMmH,KAEvJ,GADA+C,GAAO,OAAS,EAAU,iBAAmB,EAAW,IACpD0H,EAAiB,CACnB,IAAIP,EAAgB3O,EAAGuN,cACvBvN,EAAGuN,cAAgBO,EAAIP,eAAgB,EACvCO,EAAI9Y,OAASc,EACbgY,EAAI3P,WAAa2N,EACjBgC,EAAI1P,cAAgB2N,EACpBvE,GAAO,QAAU,EAAe,sBAAwB,EAAS,SAAW,EAAS,MAAQ,EAAU,YAAc,EAAS,SAC9HsG,EAAIzP,UAAY2B,EAAG/H,KAAK0Q,YAAY3I,EAAG3B,UAAW0Q,EAAM/O,EAAGnD,KAAKgM,cAAc,GAC9E,IAAIsG,EAAY9F,EAAQ,IAAM0F,EAAO,IACrCjB,EAAI3B,YAAY6C,GAAYD,EAC5B,IAAIK,EAAQpP,EAAGtK,SAASoY,GACxBA,EAAI7W,OAASgX,EACTjO,EAAG/H,KAAKkP,cAAciI,EAAOH,GAAa,EAC5CzH,GAAO,IAAOxH,EAAG/H,KAAKoP,WAAW+H,EAAOH,EAAWE,GAAc,IAEjE3H,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAExEA,GAAO,QAAU,EAAe,eAChCxH,EAAGuN,cAAgBO,EAAIP,cAAgBoB,EACvCnH,GAAO,UAAoC,EAAe,WAE1DA,GAAO,QAAU,EAAU,kBAE7B,IAAIyF,EAAaA,GAAc,GAC/BA,EAAWjI,KAAKwC,GAChBA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,yDAA4ExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,kBACzI,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,8CAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EAoBZ,OAnBAA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,aACH0H,IACF1H,GAAO,cAAgB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,6BAE9GxH,EAAGnD,KAAKoP,YACVzE,GAAO,OAETA,EAAMxH,EAAG/H,KAAKsP,YAAYC,KAI1B,IAAI6H,GAAG,CAAC,SAAS3b,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAyBsN,EAAIwL,GAC5C,IAOIkB,EAKFjB,EAZEjE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UAEzB5C,EAAQ,QAAUuC,GAAY,IAC9B6C,EAAS,QAAU/C,EACnBgD,EAAQ,SAAWhD,EACnBQ,EAAUlM,EAAGnD,KAAKwM,OAASvT,GAAWA,EAAQuT,MAIhDoC,EAFES,GACF1E,GAAO,cAAgB,EAAS,MAASxH,EAAG/H,KAAKmR,QAAQtT,EAAQuT,MAAOuC,EAAU5L,EAAGmM,aAAgB,KACtF,SAAWT,GAEX5V,EAEjB,IAIIwZ,EAAUC,EAASC,EAAQC,EAAeC,EAJ1CC,EAAQ1c,KACV2c,EAAc,aAAelE,EAC7BmE,EAAQF,EAAMxP,WACd4N,EAAiB,GAEnB,GAAI7B,GAAW2D,EAAMxG,MAAO,CAE1B,IAAIyG,EAAkBD,EAAM5P,eAC5BuH,GAAO,QAAU,EAAgB,oBAAuB,EAAa,uBAFrEkI,EAAgB,kBAAoBhE,GAE4E,MAAQ,EAAgB,iBACnI,CAEL,KADA+D,EAAgBzP,EAAGvB,cAAckR,EAAO7Z,EAASkK,EAAGhL,OAAQgL,IACxC,OACpByL,EAAe,kBAAoBK,EACnC4D,EAAgBD,EAAc3b,KAC9Bwb,EAAWO,EAAMlT,QACjB4S,EAAUM,EAAMlQ,OAChB6P,EAASK,EAAMlP,MAEjB,IAAIoP,EAAYL,EAAgB,UAC9BrB,EAAK,IAAM3C,EACXsE,EAAW,UAAYtE,EACvBuE,EAAgBJ,EAAMhI,MACxB,GAAIoI,IAAkBjQ,EAAG6H,MAAO,MAAM,IAAIhU,MAAM,gCAahD,GAZM0b,GAAWC,IACfhI,GAAY,EAAc,YAE5BA,GAAO,OAAS,EAAU,iBAAmB,EAAW,IACpD0E,GAAW2D,EAAMxG,QACnB0E,GAAkB,IAClBvG,GAAO,QAAU,EAAiB,qBAAuB,EAAW,qBAChEsI,IACF/B,GAAkB,IAClBvG,GAAO,IAAM,EAAW,MAAQ,EAAgB,mBAAqB,EAAiB,UAAY,EAAW,SAG7G+H,EAEA/H,GADEqI,EAAM7E,WACD,IAAOyE,EAAsB,SAAI,IAEjC,IAAM,EAAW,MAASA,EAAsB,SAAI,UAExD,GAAID,EAAQ,CACjB,IAAI1B,EAAM9N,EAAG/H,KAAKc,KAAKiH,GACnB+N,EAAiB,GACrBD,EAAInC,QACJ,IAAIqC,EAAa,QAAUF,EAAInC,MAC/BmC,EAAI9Y,OAASya,EAAc/Z,SAC3BoY,EAAI3P,WAAa,GACjB,IAAIwQ,EAAgB3O,EAAGuN,cACvBvN,EAAGuN,cAAgBO,EAAIP,eAAgB,EACvC,IAAI6B,EAAQpP,EAAGtK,SAASoY,GAAKjK,QAAQ,oBAAqB6L,GAC1D1P,EAAGuN,cAAgBO,EAAIP,cAAgBoB,EACvCnH,GAAO,IAAM,MACR,EACDyF,EAAaA,GAAc,IACpBjI,KAAKwC,GAChBA,EAAM,GACNA,GAAO,KAAO,EAAkB,UAE9BA,GADExH,EAAGnD,KAAKqT,YACH,OAEA,OAGP1I,GADE8H,IAA6B,IAAjBO,EAAM7a,OACb,MAAQ,EAAU,IAElB,MAAQ,EAAiB,MAAQ,EAAU,qBAAwBgL,EAAa,WAAI,IAE7FwH,GAAO,sBACa,MAAhBxH,EAAG3B,YACLmJ,GAAO,MAASxH,EAAY,WAE9B,IAAImQ,EAAcvE,EAAW,QAAWA,EAAW,GAAM,IAAM,aAC7DwE,EAAsBxE,EAAW5L,EAAGmM,YAAYP,GAAY,qBAE1DyE,EADJ7I,GAAO,MAAQ,EAAgB,MAAQ,EAAwB,kBAE/DA,EAAMyF,EAAWK,OACI,IAAjBuC,EAAMjY,QACR4P,GAAO,IAAM,EAAW,MACpByI,IACFzI,GAAO,UAETA,GAAY,EAAyB,MAInCA,GAFEyI,EAEK,SADPF,EAAY,eAAiBrE,GACE,kBAAoB,EAAW,YAAc,EAAyB,mBAAqB,EAAW,+CAAiD,EAAc,gCAE7L,IAAM,EAAc,YAAc,EAAW,MAAQ,EAAyB,KAQ3F,GAJImE,EAAMzE,YACR5D,GAAO,QAAU,EAAgB,KAAO,EAAU,MAAQ,EAAgB,IAAM,EAAwB,MAE1GA,GAAO,GAAK,EACRqI,EAAMpP,MACJuL,IACFxE,GAAO,qBAEJ,CAcL,IAGIyF,EAhBJzF,GAAO,cACanS,IAAhBwa,EAAMpP,OACR+G,GAAO,KAELA,GADEgI,EACK,GAAK,EAEA,GAGdhI,GAAO,KAAQqI,EAAMpP,MAAS,IAGhCiM,EAAgBiD,EAAMrP,SAClB2M,EAAaA,GAAc,IACpBjI,KAHXwC,GAAO,SAKHyF,EAAaA,GAAc,IACpBjI,KAFXwC,EAAM,IAGNA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,iBAAoBkF,GAAiB,UAAY,oCAA0C1M,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,0BAA8B4D,EAAa,QAAI,QACvM,IAArB3P,EAAGnD,KAAKsQ,WACV3F,GAAO,8BAAiCmI,EAAa,QAAI,2BAEvD3P,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EACZA,EAAMyF,EAAWK,MAWjB,IAAIgD,EAPA9I,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAGnCL,EAAMyF,EAAWK,MACbiC,EACEM,EAAMjY,OACY,QAAhBiY,EAAMjY,SACR4P,GAAO,cAAgB,EAAO,IAAM,EAAU,KAAO,EAAO,YAAc,EAAO,aAAe,EAAa,cAAgB,EAAO,UAAY,EAAa,4BAA8B,EAAa,kCAAuCxH,EAAY,UAAI,SAAW,EAAa,gCAAkC,EAAa,kBAAoB,EAAmB,QACzWA,EAAGnD,KAAKuQ,UACV5F,GAAO,IAAM,EAAa,aAAe,EAAiB,KAAO,EAAa,WAAa,EAAU,MAEvGA,GAAO,QAGY,IAAjBqI,EAAMjY,OACR4P,GAAO,IAAM,EAAoB,KAEjCA,GAAO,QAAU,EAAU,iBAAmB,EAAoB,uBAAyB,EAAO,IAAM,EAAU,KAAO,EAAO,YAAc,EAAO,aAAe,EAAa,cAAgB,EAAO,UAAY,EAAa,4BAA8B,EAAa,kCAAuCxH,EAAY,UAAI,SAAW,EAAa,gCAAkC,EAAa,kBAAoB,EAAmB,QAC7aA,EAAGnD,KAAKuQ,UACV5F,GAAO,IAAM,EAAa,aAAe,EAAiB,KAAO,EAAa,WAAa,EAAU,MAEvGA,GAAO,SAGFgI,GACThI,GAAO,mBACiB,IAApBxH,EAAGkN,cACL1F,GAAO,iBAAoBkF,GAAiB,UAAY,oCAA0C1M,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,0BAA8B4D,EAAa,QAAI,QACvM,IAArB3P,EAAGnD,KAAKsQ,WACV3F,GAAO,8BAAiCmI,EAAa,QAAI,2BAEvD3P,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACFxH,EAAGuN,eAAiBvB,IAGrBxE,GADExH,EAAG6H,MACE,wCAEA,gDAIU,IAAjBgI,EAAMjY,OACR4P,GAAO,IAAM,EAAoB,KAEjCA,GAAO,sBAAwB,EAAc,wCAA0C,EAAc,mCAAqC,EAAc,yCAA2C,EAAO,IAAM,EAAU,KAAO,EAAO,YAAc,EAAO,aAAe,EAAa,cAAgB,EAAO,UAAY,EAAa,4BAA8B,EAAa,kCAAuCxH,EAAY,UAAI,MAAQ,EAAa,kBAAoB,EAAmB,OACneA,EAAGnD,KAAKuQ,UACV5F,GAAO,IAAM,EAAa,aAAe,EAAiB,KAAO,EAAa,WAAa,EAAU,MAEvGA,GAAO,eAAiB,EAAoB,OAGhDA,GAAO,MACHwE,IACFxE,GAAO,YAGX,OAAOA,IAGP,IAAI+I,GAAG,CAAC,SAAS7c,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA+BsN,EAAIwL,GAClD,IAAIhE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9B8C,EAAQ,SAAWhD,EACnBoC,EAAM9N,EAAG/H,KAAKc,KAAKiH,GACnB+N,EAAiB,GACrBD,EAAInC,QACJ,IAAIqC,EAAa,QAAUF,EAAInC,MAC3B6E,EAAc,GAChBC,EAAgB,GAChBC,EAAiB1Q,EAAGnD,KAAK8T,cAC3B,IAAKC,KAAa9a,EAAS,CACzB,IAAIsY,EAAOtY,EAAQ8a,GACfC,EAAQxN,MAAMC,QAAQ8K,GAAQqC,EAAgBD,EAClDK,EAAMD,GAAaxC,EAErB5G,GAAO,OAAS,EAAU,aAC1B,IAAIsJ,EAAoB9Q,EAAG3B,UAE3B,IAAK,IAAIuS,KADTpJ,GAAO,cAAgB,EAAS,IACViJ,EAEpB,IADAI,EAAQJ,EAAcG,IACZ3c,OAAQ,CAKhB,GAJAuT,GAAO,SAAW,EAAWxH,EAAG/H,KAAKgP,YAAY2J,GAAc,kBAC3DF,IACFlJ,GAAO,4CAA8C,EAAU,MAAUxH,EAAG/H,KAAKiP,aAAa0J,GAAc,OAE1G5E,EAAe,CACjBxE,GAAO,SACP,IAAI2G,EAAO0C,EACX,GAAI1C,EAGF,IAFA,IAAkBE,GAAM,EACtBC,EAAKH,EAAKla,OAAS,EACdoa,EAAKC,GAAI,CACdyC,EAAe5C,EAAKE,GAAM,GACtBA,IACF7G,GAAO,QAITA,GAAO,SADLwJ,EAAW3H,GADT4H,EAAQjR,EAAG/H,KAAKgP,YAAY8J,KAEF,kBAC1BL,IACFlJ,GAAO,8CAAgD,EAAU,MAAUxH,EAAG/H,KAAKiP,aAAa6J,GAAiB,OAEnHvJ,GAAO,gBAAkB,EAAS,MAASxH,EAAG/H,KAAKkE,eAAe6D,EAAGnD,KAAKgM,aAAekI,EAAeE,GAAU,OAGtHzJ,GAAO,SACP,IAAI0J,EAAgB,UAAYxF,EAC9ByF,EAAmB,OAAUD,EAAgB,OAC3ClR,EAAGnD,KAAKuU,yBACVpR,EAAG3B,UAAY2B,EAAGnD,KAAKgM,aAAe7I,EAAG/H,KAAK0Q,YAAYmI,EAAmBI,GAAe,GAAQJ,EAAoB,MAAQI,GAElI,IAAIjE,EAAaA,GAAc,GAC/BA,EAAWjI,KAAKwC,GAChBA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,6DAAgFxH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,2BAA+B/L,EAAG/H,KAAKiP,aAAa0J,GAAc,wBAA4B,EAAqB,iBAAqBC,EAAY,OAAI,YAAgB7Q,EAAG/H,KAAKiP,aAA6B,GAAhB2J,EAAM5c,OAAc4c,EAAM,GAAKA,EAAMrQ,KAAK,OAAU,QAC9X,IAArBR,EAAGnD,KAAKsQ,WACV3F,GAAO,4BAELA,GADkB,GAAhBqJ,EAAM5c,OACD,YAAe+L,EAAG/H,KAAKiP,aAAa2J,EAAM,IAE1C,cAAiB7Q,EAAG/H,KAAKiP,aAAa2J,EAAMrQ,KAAK,OAE1DgH,GAAO,kBAAqBxH,EAAG/H,KAAKiP,aAAa0J,GAAc,iBAE7D5Q,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EACZA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,mFAE9B,CACLL,GAAO,QACP,IAAI6J,EAAOR,EACX,GAAIQ,EAGF,IAFA,IAAIN,EAAcO,GAAM,EACtBC,EAAKF,EAAKpd,OAAS,EACdqd,EAAKC,GAAI,CACdR,EAAeM,EAAKC,GAAM,GAC1B,IAAIL,EAAQjR,EAAG/H,KAAKgP,YAAY8J,GAE9BC,GADAG,EAAmBnR,EAAG/H,KAAKiP,aAAa6J,GAC7B1H,EAAQ4H,GACjBjR,EAAGnD,KAAKuU,yBACVpR,EAAG3B,UAAY2B,EAAG/H,KAAK+Q,QAAQ8H,EAAmBC,EAAc/Q,EAAGnD,KAAKgM,eAE1ErB,GAAO,SAAW,EAAa,kBAC3BkJ,IACFlJ,GAAO,8CAAgD,EAAU,MAAUxH,EAAG/H,KAAKiP,aAAa6J,GAAiB,OAEnHvJ,GAAO,qBACiB,IAApBxH,EAAGkN,cACL1F,GAAO,6DAAgFxH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,2BAA+B/L,EAAG/H,KAAKiP,aAAa0J,GAAc,wBAA4B,EAAqB,iBAAqBC,EAAY,OAAI,YAAgB7Q,EAAG/H,KAAKiP,aAA6B,GAAhB2J,EAAM5c,OAAc4c,EAAM,GAAKA,EAAMrQ,KAAK,OAAU,QAC9X,IAArBR,EAAGnD,KAAKsQ,WACV3F,GAAO,4BAELA,GADkB,GAAhBqJ,EAAM5c,OACD,YAAe+L,EAAG/H,KAAKiP,aAAa2J,EAAM,IAE1C,cAAiB7Q,EAAG/H,KAAKiP,aAAa2J,EAAMrQ,KAAK,OAE1DgH,GAAO,kBAAqBxH,EAAG/H,KAAKiP,aAAa0J,GAAc,iBAE7D5Q,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAETA,GAAO,kFAIbA,GAAO,QACHwE,IACF+B,GAAkB,IAClBvG,GAAO,YAIbxH,EAAG3B,UAAYyS,EACf,IAAI7C,EAAiBH,EAAI7W,OACzB,IAAK,IAAI2Z,KAAaJ,EAAa,CAC7BpC,EAAOoC,EAAYI,IAClB5Q,EAAGnD,KAAK0R,eAAgC,iBAARH,GAA+C,EAA3B5W,OAAOiK,KAAK2M,GAAMna,OAAa+L,EAAG/H,KAAKsQ,eAAe6F,EAAMpO,EAAG1C,MAAMmH,QAC5H+C,GAAO,IAAM,EAAe,iBAAmB,EAAWxH,EAAG/H,KAAKgP,YAAY2J,GAAc,kBACxFF,IACFlJ,GAAO,4CAA8C,EAAU,MAAUxH,EAAG/H,KAAKiP,aAAa0J,GAAc,OAE9GpJ,GAAO,OACPsG,EAAI9Y,OAASoZ,EACbN,EAAI3P,WAAa2N,EAAc9L,EAAG/H,KAAKgP,YAAY2J,GACnD9C,EAAI1P,cAAgB2N,EAAiB,IAAM/L,EAAG/H,KAAKwK,eAAemO,GAClEpJ,GAAO,KAAQxH,EAAGtK,SAASoY,GAAQ,IACnCA,EAAI7W,OAASgX,EACbzG,GAAO,OACHwE,IACFxE,GAAO,QAAU,EAAe,OAChCuG,GAAkB,MAQxB,OAJI/B,IACFxE,GAAO,MAAQ,EAAmB,QAAU,EAAU,iBAExDA,EAAMxH,EAAG/H,KAAKsP,YAAYC,KAI1B,IAAIgK,GAAG,CAAC,SAAS9d,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAuBsN,EAAIwL,GAC1C,IAAIhE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9B6C,EAAS,QAAU/C,EACnBQ,EAAUlM,EAAGnD,KAAKwM,OAASvT,GAAWA,EAAQuT,MAE9C6C,IACF1E,GAAO,cAAgB,EAAS,MAASxH,EAAG/H,KAAKmR,QAAQtT,EAAQuT,MAAOuC,EAAU5L,EAAGmM,aAAgB,MAKvG,IAAIkC,EAAK,IAAM3C,EACb+F,EAAW,SAAW/F,EACnBQ,IACH1E,GAAO,QAAU,EAAa,qBAAuB,EAAgB,KAEvEA,GAAO,OAAS,EAAW,IACvB0E,IACF1E,GAAO,cAAgB,EAAS,mBAAqB,EAAW,0CAA4C,EAAS,MAAQ,EAAW,oBAE1IA,GAAY,EAAW,qBAAuB,EAAO,OAAS,EAAO,IAAM,EAAa,YAAc,EAAO,iBAAmB,EAAU,KAAO,EAAa,IAAM,EAAO,SAAW,EAAW,oBAC7L0E,IACF1E,GAAO,SAGT,IAAIyF,EAAaA,GAAc,GAC/BA,EAAWjI,KAFXwC,GAAO,SAAW,EAAW,UAG7BA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,qDAAwExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,qCAAuC,EAAS,OACrL,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,+DAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EAgBZ,OAfAA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,KACHwE,IACFxE,GAAO,YAEFA,IAGP,IAAIkK,GAAG,CAAC,SAAShe,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAyBsN,EAAIwL,EAAUmG,GACtD,IAAInK,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAClC,IAAuB,IAAnB5L,EAAGnD,KAAK+U,OAIV,OAHI5F,IACFxE,GAAO,iBAEFA,EAET,IACEiE,EADES,EAAUlM,EAAGnD,KAAKwM,OAASvT,GAAWA,EAAQuT,MAIhDoC,EAFES,GACF1E,GAAO,cAAgB,EAAS,MAASxH,EAAG/H,KAAKmR,QAAQtT,EAAQuT,MAAOuC,EAAU5L,EAAGmM,aAAgB,KACtF,SAAWT,GAEX5V,EAEjB,IAAI+b,EAAkB7R,EAAGnD,KAAKiV,eAC5BC,EAAgB1O,MAAMC,QAAQuO,GAChC,GAAI3F,EAAS,CAIX1E,GAAO,SAHHwK,EAAU,SAAWtG,GAGI,cAAgB,EAAiB,WAF5DuG,EAAY,WAAavG,GAE6D,aAAe,EAAY,qBAAyB,EAAY,0BAA4B,EAAY,mBAD9LwG,EAAc,aAAexG,GACqM,MAAQ,EAAc,OAAS,EAAY,0BAA8B,EAAc,OACvT1L,EAAG6H,QACLL,GAAO,aAAe,EAAS,MAAQ,EAAY,YAErDA,GAAO,IAAM,EAAY,MAAQ,EAAY,sBACzC0E,IACF1E,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,KACgB,UAAnBqK,IACFrK,GAAO,KAAO,EAAiB,QAAU,EAAY,IACjDuK,IACFvK,GAAO,yCAA2C,EAAiB,YAErEA,GAAO,SAETA,GAAO,KAAO,EAAY,OAAS,EAAgB,QAAW,EAAc,iBAAoB,EAAY,oBAE1GA,GADExH,EAAG6H,MACE,UAAY,EAAS,YAAc,EAAY,IAAM,EAAU,OAAS,EAAY,IAAM,EAAU,MAEpG,IAAM,EAAY,IAAM,EAAU,KAE3CL,GAAO,MAAQ,EAAY,SAAW,EAAU,cAC3C,CACL,IAAIwK,EACJ,KADIA,EAAUhS,EAAGnH,QAAQ/C,IACX,CACZ,GAAuB,UAAnB+b,EAKF,OAJA7R,EAAGtB,OAAOyT,KAAK,mBAAqBrc,EAAU,gCAAkCkK,EAAG5B,cAAgB,KAC/F4N,IACFxE,GAAO,iBAEFA,EACF,GAAIuK,GAAqD,GAApCF,EAAgBO,QAAQtc,GAIlD,OAHIkW,IACFxE,GAAO,iBAEFA,EAEP,MAAM,IAAI3T,MAAM,mBAAqBiC,EAAU,gCAAkCkK,EAAG5B,cAAgB,KAGxG,IAAI6T,EACAC,GADAD,EAA8B,iBAAXD,KAAyBA,aAAmBhX,SAAWgX,EAAQtc,WACvDsc,EAAQ7N,MAAQ,SAC/C,GAAI8N,EAAW,CACb,IAAIxU,GAA2B,IAAlBuU,EAAQnK,MACrBmK,EAAUA,EAAQtc,SAEpB,GAAIwc,GAAeP,EAIjB,OAHI3F,IACFxE,GAAO,iBAEFA,EAET,GAAI/J,EAAQ,CACV,IAAKuC,EAAG6H,MAAO,MAAM,IAAIhU,MAAM,+BAE/B2T,GAAO,iBADH6K,EAAa,UAAYrS,EAAG/H,KAAKgP,YAAYnR,GAAW,aACpB,IAAM,EAAU,aACnD,CACL0R,GAAO,UACP,IAAI6K,EAAa,UAAYrS,EAAG/H,KAAKgP,YAAYnR,GAC7Cmc,IAAWI,GAAc,aAE3B7K,GADoB,mBAAXwK,EACF,IAAM,EAAe,IAAM,EAAU,KAErC,IAAM,EAAe,SAAW,EAAU,KAEnDxK,GAAO,QAGX,IAAIyF,EAAaA,GAAc,GAC/BA,EAAWjI,KAAKwC,GAChBA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,uDAA0ExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,yBAE9JvE,GADE0E,EACK,GAAK,EAEL,GAAMlM,EAAG/H,KAAKkE,eAAerG,GAEtC0R,GAAO,QACkB,IAArBxH,EAAGnD,KAAKsQ,WACV3F,GAAO,sCAELA,GADE0E,EACK,OAAU,EAAiB,OAE3B,GAAMlM,EAAG/H,KAAKiP,aAAapR,GAEpC0R,GAAO,QAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,eAELA,GADE0E,EACK,kBAAoB,EAEpB,GAAMlM,EAAG/H,KAAKkE,eAAerG,GAEtC0R,GAAO,2CAA8CxH,EAAa,WAAI,YAAc,EAAU,KAEhGwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EAgBZ,OAfAA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,MACHwE,IACFxE,GAAO,YAEFA,IAGP,IAAI8K,GAAG,CAAC,SAAS5e,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAqBsN,EAAIwL,GACxC,IAAIhE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9B6C,EAAS,QAAU/C,EACnBgD,EAAQ,SAAWhD,EACnBoC,EAAM9N,EAAG/H,KAAKc,KAAKiH,GACvB8N,EAAInC,QACJ,IAAIqC,EAAa,QAAUF,EAAInC,MAC3B4G,EAAWvS,EAAGhL,OAAa,KAC7Bwd,EAAWxS,EAAGhL,OAAa,KAC3Byd,OAA4Bpd,IAAbkd,IAA2BvS,EAAGnD,KAAK0R,eAAoC,iBAAZgE,GAAuD,EAA/B/a,OAAOiK,KAAK8Q,GAAUte,OAAa+L,EAAG/H,KAAKsQ,eAAegK,EAAUvS,EAAG1C,MAAMmH,MAC/KiO,OAA4Brd,IAAbmd,IAA2BxS,EAAGnD,KAAK0R,eAAoC,iBAAZiE,GAAuD,EAA/Bhb,OAAOiK,KAAK+Q,GAAUve,OAAa+L,EAAG/H,KAAKsQ,eAAeiK,EAAUxS,EAAG1C,MAAMmH,MAC/KwJ,EAAiBH,EAAI7W,OACvB,GAAIwb,GAAgBC,EAAc,CAChC,IAAIC,EACJ7E,EAAIZ,cAAe,EACnBY,EAAI9Y,OAASc,EACbgY,EAAI3P,WAAa2N,EACjBgC,EAAI1P,cAAgB2N,EACpBvE,GAAO,QAAU,EAAU,kBAAoB,EAAW,aAC1D,IAAImH,EAAgB3O,EAAGuN,cACvBvN,EAAGuN,cAAgBO,EAAIP,eAAgB,EACvC/F,GAAO,KAAQxH,EAAGtK,SAASoY,GAAQ,IACnCA,EAAI7W,OAASgX,EACbH,EAAIZ,cAAe,EACnB1F,GAAO,cAAgB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,6BAChHxH,EAAGuN,cAAgBO,EAAIP,cAAgBoB,EACnC8D,GACFjL,GAAO,QAAU,EAAe,QAChCsG,EAAI9Y,OAASgL,EAAGhL,OAAa,KAC7B8Y,EAAI3P,WAAa6B,EAAG7B,WAAa,QACjC2P,EAAI1P,cAAgB4B,EAAG5B,cAAgB,QACvCoJ,GAAO,KAAQxH,EAAGtK,SAASoY,GAAQ,IACnCA,EAAI7W,OAASgX,EACbzG,GAAO,IAAM,EAAW,MAAQ,EAAe,KAC3CiL,GAAgBC,EAElBlL,GAAO,SADPmL,EAAY,WAAajH,GACM,cAE/BiH,EAAY,SAEdnL,GAAO,MACHkL,IACFlL,GAAO,aAGTA,GAAO,SAAW,EAAe,OAE/BkL,IACF5E,EAAI9Y,OAASgL,EAAGhL,OAAa,KAC7B8Y,EAAI3P,WAAa6B,EAAG7B,WAAa,QACjC2P,EAAI1P,cAAgB4B,EAAG5B,cAAgB,QACvCoJ,GAAO,KAAQxH,EAAGtK,SAASoY,GAAQ,IACnCA,EAAI7W,OAASgX,EACbzG,GAAO,IAAM,EAAW,MAAQ,EAAe,KAC3CiL,GAAgBC,EAElBlL,GAAO,SADPmL,EAAY,WAAajH,GACM,cAE/BiH,EAAY,SAEdnL,GAAO,OAETA,GAAO,SAAW,EAAW,sBACL,IAApBxH,EAAGkN,cACL1F,GAAO,mDAAsExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,gCAAkC,EAAc,OACnL,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,mCAAsC,EAAc,mBAEzDxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACFxH,EAAGuN,eAAiBvB,IAGrBxE,GADExH,EAAG6H,MACE,wCAEA,8CAGXL,GAAO,QACHwE,IACFxE,GAAO,YAETA,EAAMxH,EAAG/H,KAAKsP,YAAYC,QAEtBwE,IACFxE,GAAO,iBAGX,OAAOA,IAGP,IAAIoL,GAAG,CAAC,SAASlf,EAAQf,EAAOD,GAClC,aAGAC,EAAOD,QAAU,CACfsD,KAAQtC,EAAQ,SAChBmf,MAAOnf,EAAQ,WACfiX,MAAOjX,EAAQ,WACfwR,SAAYxR,EAAQ,aACpB2X,MAAO3X,EAAQ,WACfof,SAAUpf,EAAQ,cAClB0M,aAAc1M,EAAQ,kBACtBqf,KAAQrf,EAAQ,UAChBke,OAAQle,EAAQ,YAChBsf,GAAMtf,EAAQ,QACdyX,MAAOzX,EAAQ,WACf2Q,QAAS3Q,EAAQ,YACjB4Q,QAAS5Q,EAAQ,YACjBuf,SAAUvf,EAAQ,iBAClBwf,SAAUxf,EAAQ,iBAClByf,UAAWzf,EAAQ,kBACnB0f,UAAW1f,EAAQ,kBACnB2f,cAAe3f,EAAQ,sBACvB4f,cAAe5f,EAAQ,sBACvB6f,WAAY7f,EAAQ,gBACpBuX,IAAKvX,EAAQ,SACb8f,MAAO9f,EAAQ,WACf+f,QAAS/f,EAAQ,aACjB6Q,WAAY7Q,EAAQ,gBACpBggB,cAAehgB,EAAQ,mBACvBwX,SAAUxX,EAAQ,cAClBigB,YAAajgB,EAAQ,iBACrBgC,SAAUhC,EAAQ,gBAGlB,CAACkgB,WAAW,GAAGC,gBAAgB,GAAGC,iBAAiB,GAAGC,qBAAqB,GAAGC,UAAU,GAAGC,UAAU,GAAGC,YAAY,GAAGC,UAAU,GAAGC,aAAa,GAAGC,iBAAiB,GAAGC,SAAS,GAAGC,WAAW,GAAGC,OAAO,GAAGC,UAAU,GAAGC,eAAe,GAAGC,QAAQ,GAAGC,UAAU,GAAGC,YAAY,GAAGC,eAAe,GAAGC,kBAAkB,GAAGC,QAAQ,GAAGC,aAAa,GAAGC,gBAAgB,GAAGC,aAAa,KAAKC,GAAG,CAAC,SAAS1hB,EAAQf,EAAOD,GACvZ,aACAC,EAAOD,QAAU,SAAwBsN,EAAIwL,GAC3C,IAAIhE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9B6C,EAAS,QAAU/C,EACnBgD,EAAQ,SAAWhD,EACnBoC,EAAM9N,EAAG/H,KAAKc,KAAKiH,GACnB+N,EAAiB,GACrBD,EAAInC,QACJ,IAAIqC,EAAa,QAAUF,EAAInC,MAC3BoD,EAAO,IAAMrD,EACfsD,EAAWlB,EAAIjC,UAAY7L,EAAG6L,UAAY,EAC1CoD,EAAY,OAASD,EACrBf,EAAiBjO,EAAG/I,OAEtB,GADAuQ,GAAO,OAAS,EAAU,iBAAmB,EAAW,IACpDnE,MAAMC,QAAQxN,GAAU,CAC1B,IAAIuf,EAAmBrV,EAAGhL,OAAOsgB,gBACjC,IAAyB,IAArBD,EAA4B,CAC9B7N,GAAO,IAAM,EAAW,MAAQ,EAAU,cAAiB1R,EAAc,OAAI,KAC7E,IAAIyf,EAAqBxJ,EACzBA,EAAiB/L,EAAG5B,cAAgB,mBAEpC,IAAI6O,EAAaA,GAAc,GAC/BA,EAAWjI,KAFXwC,GAAO,UAAY,EAAW,UAG9BA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,gEAAmFxH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,uBAA0BjW,EAAc,OAAI,OAC5L,IAArBkK,EAAGnD,KAAKsQ,WACV3F,GAAO,0CAA8C1R,EAAc,OAAI,YAErEkK,EAAGnD,KAAKuQ,UACV5F,GAAO,mDAAsDxH,EAAa,WAAI,YAAc,EAAU,KAExGwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EACZA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,MACPuE,EAAiBwJ,EACbvJ,IACF+B,GAAkB,IAClBvG,GAAO,YAGX,IAAI2G,EAAOrY,EACX,GAAIqY,EAGF,IAFA,IAAIC,EAAMC,GAAM,EACdC,EAAKH,EAAKla,OAAS,EACdoa,EAAKC,GAEV,GADAF,EAAOD,EAAKE,GAAM,GACbrO,EAAGnD,KAAK0R,eAAgC,iBAARH,GAA+C,EAA3B5W,OAAOiK,KAAK2M,GAAMna,OAAa+L,EAAG/H,KAAKsQ,eAAe6F,EAAMpO,EAAG1C,MAAMmH,KAAO,CACnI+C,GAAO,IAAM,EAAe,gBAAkB,EAAU,aAAe,EAAO,OAC9E,IAAI2H,EAAY9F,EAAQ,IAAMgF,EAAK,IACnCP,EAAI9Y,OAASoZ,EACbN,EAAI3P,WAAa2N,EAAc,IAAMuC,EAAK,IAC1CP,EAAI1P,cAAgB2N,EAAiB,IAAMsC,EAC3CP,EAAIzP,UAAY2B,EAAG/H,KAAK0Q,YAAY3I,EAAG3B,UAAWgQ,EAAIrO,EAAGnD,KAAKgM,cAAc,GAC5EiF,EAAI3B,YAAY6C,GAAYX,EAC5B,IAAIe,EAAQpP,EAAGtK,SAASoY,GACxBA,EAAI7W,OAASgX,EACTjO,EAAG/H,KAAKkP,cAAciI,EAAOH,GAAa,EAC5CzH,GAAO,IAAOxH,EAAG/H,KAAKoP,WAAW+H,EAAOH,EAAWE,GAAc,IAEjE3H,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAExEA,GAAO,OACHwE,IACFxE,GAAO,QAAU,EAAe,OAChCuG,GAAkB,KAK1B,GAA+B,iBAApBsH,IAAiCrV,EAAGnD,KAAK0R,eAA4C,iBAApB8G,GAAuE,EAAvC7d,OAAOiK,KAAK4T,GAAkBphB,OAAa+L,EAAG/H,KAAKsQ,eAAe8M,EAAkBrV,EAAG1C,MAAMmH,MAAO,CAC9MqJ,EAAI9Y,OAASqgB,EACbvH,EAAI3P,WAAa6B,EAAG7B,WAAa,mBACjC2P,EAAI1P,cAAgB4B,EAAG5B,cAAgB,mBACvCoJ,GAAO,IAAM,EAAe,gBAAkB,EAAU,aAAgB1R,EAAc,OAAI,iBAAmB,EAAS,MAASA,EAAc,OAAI,KAAO,EAAS,MAAQ,EAAU,YAAc,EAAS,SAC1MgY,EAAIzP,UAAY2B,EAAG/H,KAAK0Q,YAAY3I,EAAG3B,UAAW0Q,EAAM/O,EAAGnD,KAAKgM,cAAc,GAC1EsG,EAAY9F,EAAQ,IAAM0F,EAAO,IACrCjB,EAAI3B,YAAY6C,GAAYD,EACxBK,EAAQpP,EAAGtK,SAASoY,GACxBA,EAAI7W,OAASgX,EACTjO,EAAG/H,KAAKkP,cAAciI,EAAOH,GAAa,EAC5CzH,GAAO,IAAOxH,EAAG/H,KAAKoP,WAAW+H,EAAOH,EAAWE,GAAc,IAEjE3H,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAEpEwE,IACFxE,GAAO,SAAW,EAAe,aAEnCA,GAAO,SACHwE,IACFxE,GAAO,QAAU,EAAe,OAChCuG,GAAkB,WAGjB,GAAK/N,EAAGnD,KAAK0R,eAAmC,iBAAXzY,GAAqD,EAA9B0B,OAAOiK,KAAK3L,GAAS7B,OAAa+L,EAAG/H,KAAKsQ,eAAezS,EAASkK,EAAG1C,MAAMmH,KAAO,CACnJqJ,EAAI9Y,OAASc,EACbgY,EAAI3P,WAAa2N,EACjBgC,EAAI1P,cAAgB2N,EACpBvE,GAAO,cAAgB,EAAS,SAAqB,EAAS,MAAQ,EAAU,YAAc,EAAS,SACvGsG,EAAIzP,UAAY2B,EAAG/H,KAAK0Q,YAAY3I,EAAG3B,UAAW0Q,EAAM/O,EAAGnD,KAAKgM,cAAc,GAC1EsG,EAAY9F,EAAQ,IAAM0F,EAAO,IACrCjB,EAAI3B,YAAY6C,GAAYD,EACxBK,EAAQpP,EAAGtK,SAASoY,GACxBA,EAAI7W,OAASgX,EACTjO,EAAG/H,KAAKkP,cAAciI,EAAOH,GAAa,EAC5CzH,GAAO,IAAOxH,EAAG/H,KAAKoP,WAAW+H,EAAOH,EAAWE,GAAc,IAEjE3H,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAEpEwE,IACFxE,GAAO,SAAW,EAAe,aAEnCA,GAAO,KAMT,OAJIwE,IACFxE,GAAO,IAAM,EAAmB,QAAU,EAAU,iBAEtDA,EAAMxH,EAAG/H,KAAKsP,YAAYC,KAI1B,IAAIgO,GAAG,CAAC,SAAS9hB,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA6BsN,EAAIwL,GAChD,IASEC,EATEjE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9BM,EAAUlM,EAAGnD,KAAKwM,OAASvT,GAAWA,EAAQuT,MAIhDoC,EAFES,GACF1E,GAAO,cAAgB,EAAS,MAASxH,EAAG/H,KAAKmR,QAAQtT,EAAQuT,MAAOuC,EAAU5L,EAAGmM,aAAgB,KACtF,SAAWT,GAEX5V,EAEjB0R,GAAO,eAAiB,EAAS,QAC7B0E,IACF1E,GAAO,IAAM,EAAiB,8BAAgC,EAAiB,oBAEjFA,GAAO,aAAe,EAAS,MAAQ,EAAU,MAAQ,EAAiB,KAExEA,GADExH,EAAGnD,KAAK4Y,oBACH,gCAAkC,EAAS,eAAiB,EAAS,UAAazV,EAAGnD,KAAwB,oBAAI,IAEjH,YAAc,EAAS,yBAA2B,EAAS,KAEpE2K,GAAO,MACH0E,IACF1E,GAAO,SAGT,IAAIyF,EAAaA,GAAc,GAC/BA,EAAWjI,KAFXwC,GAAO,WAGPA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,2DAA8ExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,4BAA8B,EAAiB,OAC1L,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,sCAELA,GADE0E,EACK,OAAU,EAEL,EAAiB,KAG7BlM,EAAGnD,KAAKuQ,UACV5F,GAAO,eAELA,GADE0E,EACK,kBAAoB,EAEpB,GAAK,EAEd1E,GAAO,2CAA8CxH,EAAa,WAAI,YAAc,EAAU,KAEhGwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EAgBZ,OAfAA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,KACHwE,IACFxE,GAAO,YAEFA,IAGP,IAAIkO,GAAG,CAAC,SAAShiB,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAsBsN,EAAIwL,GACzC,IAAIhE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9B8C,EAAQ,SAAWhD,EACnBoC,EAAM9N,EAAG/H,KAAKc,KAAKiH,GACvB8N,EAAInC,QACJ,IAAIqC,EAAa,QAAUF,EAAInC,MAC/B,GAAK3L,EAAGnD,KAAK0R,eAAmC,iBAAXzY,GAAqD,EAA9B0B,OAAOiK,KAAK3L,GAAS7B,OAAa+L,EAAG/H,KAAKsQ,eAAezS,EAASkK,EAAG1C,MAAMmH,KAAO,CAC5IqJ,EAAI9Y,OAASc,EACbgY,EAAI3P,WAAa2N,EACjBgC,EAAI1P,cAAgB2N,EACpBvE,GAAO,QAAU,EAAU,eAC3B,IAGImO,EAHAhH,EAAgB3O,EAAGuN,cACvBvN,EAAGuN,cAAgBO,EAAIP,eAAgB,EACvCO,EAAIZ,cAAe,EAEfY,EAAIjR,KAAKoP,YACX0J,EAAmB7H,EAAIjR,KAAKoP,UAC5B6B,EAAIjR,KAAKoP,WAAY,GAEvBzE,GAAO,IAAOxH,EAAGtK,SAASoY,GAAQ,IAClCA,EAAIZ,cAAe,EACfyI,IAAkB7H,EAAIjR,KAAKoP,UAAY0J,GAC3C3V,EAAGuN,cAAgBO,EAAIP,cAAgBoB,EAEvC,IAAI1B,EAAaA,GAAc,GAC/BA,EAAWjI,KAFXwC,GAAO,QAAU,EAAe,UAGhCA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,oDAAuExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,kBACpI,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,sCAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EACZA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,uBAAyB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,4BACrHxH,EAAGnD,KAAKoP,YACVzE,GAAO,YAGTA,GAAO,kBACiB,IAApBxH,EAAGkN,cACL1F,GAAO,oDAAuExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,kBACpI,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,sCAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAETA,GAAO,+EACHwE,IACFxE,GAAO,kBAGX,OAAOA,IAGP,IAAIoO,GAAG,CAAC,SAASliB,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAwBsN,EAAIwL,GAC3C,IAAIhE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9B6C,EAAS,QAAU/C,EACnBgD,EAAQ,SAAWhD,EACnBoC,EAAM9N,EAAG/H,KAAKc,KAAKiH,GACnB+N,EAAiB,GACrBD,EAAInC,QACJ,IAAIqC,EAAa,QAAUF,EAAInC,MAC3BsC,EAAiBH,EAAI7W,OACvB4e,EAAa,YAAcnK,EAC3BoK,EAAkB,iBAAmBpK,EACvClE,GAAO,OAAS,EAAU,eAAiB,EAAe,cAAgB,EAAW,cAAgB,EAAoB,YACzH,IAAImH,EAAgB3O,EAAGuN,cACvBvN,EAAGuN,cAAgBO,EAAIP,eAAgB,EACvC,IAAIY,EAAOrY,EACX,GAAIqY,EAGF,IAFA,IAAIC,EAAMC,GAAM,EACdC,EAAKH,EAAKla,OAAS,EACdoa,EAAKC,GACVF,EAAOD,EAAKE,GAAM,IACbrO,EAAGnD,KAAK0R,eAAgC,iBAARH,GAA+C,EAA3B5W,OAAOiK,KAAK2M,GAAMna,OAAa+L,EAAG/H,KAAKsQ,eAAe6F,EAAMpO,EAAG1C,MAAMmH,OAC5HqJ,EAAI9Y,OAASoZ,EACbN,EAAI3P,WAAa2N,EAAc,IAAMuC,EAAK,IAC1CP,EAAI1P,cAAgB2N,EAAiB,IAAMsC,EAC3C7G,GAAO,KAAQxH,EAAGtK,SAASoY,GAAQ,IACnCA,EAAI7W,OAASgX,GAEbzG,GAAO,QAAU,EAAe,YAE9B6G,IACF7G,GAAO,QAAU,EAAe,OAAS,EAAe,OAAS,EAAW,aAAe,EAAoB,OAAS,EAAoB,KAAO,EAAO,eAC1JuG,GAAkB,KAEpBvG,GAAO,QAAU,EAAe,OAAS,EAAW,MAAQ,EAAe,YAAc,EAAoB,MAAQ,EAAO,MA8BhI,OA3BAxH,EAAGuN,cAAgBO,EAAIP,cAAgBoB,EACvCnH,GAAY,EAAmB,QAAU,EAAW,sBAC5B,IAApBxH,EAAGkN,cACL1F,GAAO,sDAAyExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,gCAAkC,EAAoB,OAC5L,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,2DAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACFxH,EAAGuN,eAAiBvB,IAGrBxE,GADExH,EAAG6H,MACE,wCAEA,8CAGXL,GAAO,sBAAwB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,2BACpHxH,EAAGnD,KAAKoP,YACVzE,GAAO,OAEFA,IAGP,IAAIuO,GAAG,CAAC,SAASriB,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA0BsN,EAAIwL,GAC7C,IASEC,EATEjE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9BM,EAAUlM,EAAGnD,KAAKwM,OAASvT,GAAWA,EAAQuT,MAIhDoC,EAFES,GACF1E,GAAO,cAAgB,EAAS,MAASxH,EAAG/H,KAAKmR,QAAQtT,EAAQuT,MAAOuC,EAAU5L,EAAGmM,aAAgB,KACtF,SAAWT,GAEX5V,EAEjB,IAAIkgB,EAAU9J,EAAU,eAAiBT,EAAe,KAAOzL,EAAGzB,WAAWzI,GAC7E0R,GAAO,QACH0E,IACF1E,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAGhF,IAAIyF,EAAaA,GAAc,GAC/BA,EAAWjI,KAFXwC,GAAO,KAAO,EAAY,SAAW,EAAU,YAG/CA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,wDAA2ExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,0BAE/JvE,GADE0E,EACK,GAAK,EAEL,GAAMlM,EAAG/H,KAAKkE,eAAerG,GAEtC0R,GAAO,QACkB,IAArBxH,EAAGnD,KAAKsQ,WACV3F,GAAO,uCAELA,GADE0E,EACK,OAAU,EAAiB,OAE3B,GAAMlM,EAAG/H,KAAKiP,aAAapR,GAEpC0R,GAAO,QAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,eAELA,GADE0E,EACK,kBAAoB,EAEpB,GAAMlM,EAAG/H,KAAKkE,eAAerG,GAEtC0R,GAAO,2CAA8CxH,EAAa,WAAI,YAAc,EAAU,KAEhGwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EAgBZ,OAfAA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,KACHwE,IACFxE,GAAO,YAEFA,IAGP,IAAIyO,GAAG,CAAC,SAASviB,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA6BsN,EAAIwL,GAChD,IAAIhE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9B8C,EAAQ,SAAWhD,EACnBoC,EAAM9N,EAAG/H,KAAKc,KAAKiH,GACnB+N,EAAiB,GACrBD,EAAInC,QACJ,IAAIqC,EAAa,QAAUF,EAAInC,MAC3BuK,EAAO,MAAQxK,EACjBqD,EAAO,MAAQrD,EACfsD,EAAWlB,EAAIjC,UAAY7L,EAAG6L,UAAY,EAC1CoD,EAAY,OAASD,EACrBmH,EAAkB,iBAAmBzK,EACnC0K,EAAc5e,OAAOiK,KAAK3L,GAAW,IACvCugB,EAAerW,EAAGhL,OAAOshB,mBAAqB,GAC9CC,EAAiB/e,OAAOiK,KAAK4U,GAC7BG,EAAexW,EAAGhL,OAAOyhB,qBACzBC,EAAkBN,EAAYniB,QAAUsiB,EAAetiB,OACvD0iB,GAAiC,IAAjBH,EAChBI,EAA6C,iBAAhBJ,GAA4Bhf,OAAOiK,KAAK+U,GAAcviB,OACnF4iB,EAAoB7W,EAAGnD,KAAKia,iBAC5BC,EAAmBJ,GAAiBC,GAAuBC,EAC3DnG,EAAiB1Q,EAAGnD,KAAK8T,cACzB1C,EAAiBjO,EAAG/I,OAClB+f,EAAYhX,EAAGhL,OAAOkW,SAC1B,GAAI8L,KAAehX,EAAGnD,KAAKwM,QAAS2N,EAAU3N,QAAU2N,EAAU/iB,OAAS+L,EAAGnD,KAAKoa,aAAc,IAAIC,EAAgBlX,EAAG/H,KAAK0K,OAAOqU,GAKpI,GAJAxP,GAAO,OAAS,EAAU,iBAAmB,EAAe,WACxDkJ,IACFlJ,GAAO,QAAU,EAAoB,iBAEnCuP,EAAkB,CAMpB,GAJEvP,GADEkJ,EACK,IAAM,EAAoB,MAAQ,EAAoB,mBAAqB,EAAU,eAAiB,EAAS,OAAS,EAAS,IAAM,EAAoB,YAAc,EAAS,aAAe,EAAS,MAAQ,EAAoB,IAAM,EAAS,MAErP,aAAe,EAAS,OAAS,EAAU,OAEhDgG,EAAiB,CAEnB,GADAlP,GAAO,oBAAsB,EAAS,cAClC4O,EAAYniB,OACd,GAAyB,EAArBmiB,EAAYniB,OACduT,GAAO,sBAAwB,EAAgB,mBAAqB,EAAS,SACxE,CACL,IAAI2G,EAAOiI,EACX,GAAIjI,EAGF,IAFA,IAAkBgJ,GAAM,EACtB7I,EAAKH,EAAKla,OAAS,EACdkjB,EAAK7I,GACVyC,EAAe5C,EAAKgJ,GAAM,GAC1B3P,GAAO,OAAS,EAAS,OAAUxH,EAAG/H,KAAKkE,eAAe4U,GAAiB,IAKnF,GAAIwF,EAAetiB,OAAQ,CACzB,IAAIod,EAAOkF,EACX,GAAIlF,EAGF,IAFA,IAAgBhD,GAAM,EACpBkD,EAAKF,EAAKpd,OAAS,EACdoa,EAAKkD,GACV6F,GAAa/F,EAAKhD,GAAM,GACxB7G,GAAO,OAAUxH,EAAGzB,WAAW6Y,IAAe,SAAW,EAAS,KAIxE5P,GAAO,uBAAyB,EAAS,OAE3C,GAAyB,OAArBqP,EACFrP,GAAO,WAAa,EAAU,IAAM,EAAS,UACxC,CACL,IAAIsJ,EAAoB9Q,EAAG3B,UACvBgZ,EAAsB,OAAUnB,EAAO,OAI3C,GAHIlW,EAAGnD,KAAKuU,yBACVpR,EAAG3B,UAAY2B,EAAG/H,KAAK0Q,YAAY3I,EAAG3B,UAAW6X,EAAMlW,EAAGnD,KAAKgM,eAE7D8N,EACF,GAAIE,EACFrP,GAAO,WAAa,EAAU,IAAM,EAAS,UACxC,CAEL,IAAI+N,EAAqBxJ,EACzBA,EAAiB/L,EAAG5B,cAAgB,yBAChC6O,GAAaA,IAAc,IACpBjI,KAJXwC,GAAO,IAAM,EAAe,cAK5BA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,qEAAwFxH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,qCAAwC,EAAwB,QACrN,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,gBAELA,GADExH,EAAGnD,KAAKuU,uBACH,oCAEA,wCAET5J,GAAO,MAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,mDAAsDxH,EAAa,WAAI,YAAc,EAAU,KAExGwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EACZA,EAAMyF,GAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCkE,EAAiBwJ,EACbvJ,IACFxE,GAAO,iBAGN,GAAIoP,EACT,GAAyB,WAArBC,EAAgC,CAClCrP,GAAO,QAAU,EAAU,eAC3B,IAAImH,EAAgB3O,EAAGuN,cACvBvN,EAAGuN,cAAgBO,EAAIP,eAAgB,EACvCO,EAAI9Y,OAASwhB,EACb1I,EAAI3P,WAAa6B,EAAG7B,WAAa,wBACjC2P,EAAI1P,cAAgB4B,EAAG5B,cAAgB,wBACvC0P,EAAIzP,UAAY2B,EAAGnD,KAAKuU,uBAAyBpR,EAAG3B,UAAY2B,EAAG/H,KAAK0Q,YAAY3I,EAAG3B,UAAW6X,EAAMlW,EAAGnD,KAAKgM,cAChH,IAAIsG,EAAY9F,EAAQ,IAAM6M,EAAO,IACrCpI,EAAI3B,YAAY6C,GAAYkH,EAC5B,IAAI9G,EAAQpP,EAAGtK,SAASoY,GACxBA,EAAI7W,OAASgX,EACTjO,EAAG/H,KAAKkP,cAAciI,EAAOH,GAAa,EAC5CzH,GAAO,IAAOxH,EAAG/H,KAAKoP,WAAW+H,EAAOH,EAAWE,GAAc,IAEjE3H,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAExEA,GAAO,SAAW,EAAe,gBAAkB,EAAU,wHAA0H,EAAU,IAAM,EAAS,SAChNxH,EAAGuN,cAAgBO,EAAIP,cAAgBoB,MAClC,CACLb,EAAI9Y,OAASwhB,EACb1I,EAAI3P,WAAa6B,EAAG7B,WAAa,wBACjC2P,EAAI1P,cAAgB4B,EAAG5B,cAAgB,wBACvC0P,EAAIzP,UAAY2B,EAAGnD,KAAKuU,uBAAyBpR,EAAG3B,UAAY2B,EAAG/H,KAAK0Q,YAAY3I,EAAG3B,UAAW6X,EAAMlW,EAAGnD,KAAKgM,cAC5GsG,EAAY9F,EAAQ,IAAM6M,EAAO,IACrCpI,EAAI3B,YAAY6C,GAAYkH,EACxB9G,EAAQpP,EAAGtK,SAASoY,GACxBA,EAAI7W,OAASgX,EACTjO,EAAG/H,KAAKkP,cAAciI,EAAOH,GAAa,EAC5CzH,GAAO,IAAOxH,EAAG/H,KAAKoP,WAAW+H,EAAOH,EAAWE,GAAc,IAEjE3H,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAEpEwE,IACFxE,GAAO,SAAW,EAAe,aAIvCxH,EAAG3B,UAAYyS,EAEb4F,IACFlP,GAAO,OAETA,GAAO,OACHwE,IACFxE,GAAO,QAAU,EAAe,OAChCuG,GAAkB,KAGtB,IAAIuJ,EAAetX,EAAGnD,KAAK0a,cAAgBvX,EAAGuN,cAC9C,GAAI6I,EAAYniB,OAAQ,CACtB,IAAIujB,EAAOpB,EACX,GAAIoB,EAGF,IAFA,IAAIzG,EAAc0G,GAAM,EACtBC,EAAKF,EAAKvjB,OAAS,EACdwjB,EAAKC,GAAI,CAEd,IAAItJ,EAAOtY,EADXib,EAAeyG,EAAKC,GAAM,IAE1B,GAAKzX,EAAGnD,KAAK0R,eAAgC,iBAARH,GAA+C,EAA3B5W,OAAOiK,KAAK2M,GAAMna,OAAa+L,EAAG/H,KAAKsQ,eAAe6F,EAAMpO,EAAG1C,MAAMmH,KAAO,CACnI,IAAIwM,EAAQjR,EAAG/H,KAAKgP,YAAY8J,GAE9B4G,GADAxI,EAAY9F,EAAQ4H,EACNqG,QAAiCjiB,IAAjB+Y,EAAKwJ,SACrC9J,EAAI9Y,OAASoZ,EACbN,EAAI3P,WAAa2N,EAAcmF,EAC/BnD,EAAI1P,cAAgB2N,EAAiB,IAAM/L,EAAG/H,KAAKwK,eAAesO,GAClEjD,EAAIzP,UAAY2B,EAAG/H,KAAK+Q,QAAQhJ,EAAG3B,UAAW0S,EAAc/Q,EAAGnD,KAAKgM,cACpEiF,EAAI3B,YAAY6C,GAAYhP,EAAG/H,KAAKkE,eAAe4U,GAC/C3B,EAAQpP,EAAGtK,SAASoY,GAExB,GADAA,EAAI7W,OAASgX,EACTjO,EAAG/H,KAAKkP,cAAciI,EAAOH,GAAa,EAAG,CAC/CG,EAAQpP,EAAG/H,KAAKoP,WAAW+H,EAAOH,EAAWE,GAC7C,IAAI6B,EAAW7B,MACV,CACD6B,EAAW/B,EACfzH,GAAO,QAAU,EAAc,MAAQ,EAAc,KAEvD,GAAImQ,EACFnQ,GAAO,IAAM,EAAU,QAClB,CACL,GAAI0P,GAAiBA,EAAcnG,GAAe,CAChDvJ,GAAO,SAAW,EAAa,kBAC3BkJ,IACFlJ,GAAO,8CAAgD,EAAU,MAAUxH,EAAG/H,KAAKiP,aAAa6J,GAAiB,OAEnHvJ,GAAO,OAAS,EAAe,aAC3BsJ,EAAoB9Q,EAAG3B,UACzBkX,EAAqBxJ,EADvB,IAOIkB,GALFkE,GAAmBnR,EAAG/H,KAAKiP,aAAa6J,GACtC/Q,EAAGnD,KAAKuU,yBACVpR,EAAG3B,UAAY2B,EAAG/H,KAAK+Q,QAAQ8H,EAAmBC,EAAc/Q,EAAGnD,KAAKgM,eAE1EkD,EAAiB/L,EAAG5B,cAAgB,aAChC6O,GAAaA,IAAc,IACpBjI,KAAKwC,GAChBA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,yDAA4ExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,kCAAqC,GAAqB,QACnM,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,gBAELA,GADExH,EAAGnD,KAAKuU,uBACH,yBAEA,oCAAuC,GAAqB,MAErE5J,GAAO,MAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAEL6F,EAAQ7F,EACZA,EAAMyF,GAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCkE,EAAiBwJ,EACjBvV,EAAG3B,UAAYyS,EACftJ,GAAO,kBAEHwE,GACFxE,GAAO,SAAW,EAAa,kBAC3BkJ,IACFlJ,GAAO,8CAAgD,EAAU,MAAUxH,EAAG/H,KAAKiP,aAAa6J,GAAiB,OAEnHvJ,GAAO,OAAS,EAAe,uBAE/BA,GAAO,QAAU,EAAa,kBAC1BkJ,IACFlJ,GAAO,8CAAgD,EAAU,MAAUxH,EAAG/H,KAAKiP,aAAa6J,GAAiB,OAEnHvJ,GAAO,SAGXA,GAAO,IAAM,EAAU,OAGvBwE,IACFxE,GAAO,QAAU,EAAe,OAChCuG,GAAkB,MAK1B,GAAIwI,EAAetiB,OAAQ,CACzB,IAAI4jB,GAAOtB,EACX,GAAIsB,GAGF,IAFA,IAAIT,GAAYU,IAAM,EACpBC,GAAKF,GAAK5jB,OAAS,EACd6jB,GAAKC,IAAI,CAEV3J,EAAOiI,EADXe,GAAaS,GAAKC,IAAM,IAExB,GAAK9X,EAAGnD,KAAK0R,eAAgC,iBAARH,GAA+C,EAA3B5W,OAAOiK,KAAK2M,GAAMna,OAAa+L,EAAG/H,KAAKsQ,eAAe6F,EAAMpO,EAAG1C,MAAMmH,KAAO,CACnIqJ,EAAI9Y,OAASoZ,EACbN,EAAI3P,WAAa6B,EAAG7B,WAAa,qBAAuB6B,EAAG/H,KAAKgP,YAAYmQ,IAC5EtJ,EAAI1P,cAAgB4B,EAAG5B,cAAgB,sBAAwB4B,EAAG/H,KAAKwK,eAAe2U,IAEpF5P,GADEkJ,EACK,IAAM,EAAoB,MAAQ,EAAoB,mBAAqB,EAAU,eAAiB,EAAS,OAAS,EAAS,IAAM,EAAoB,YAAc,EAAS,aAAe,EAAS,MAAQ,EAAoB,IAAM,EAAS,MAErP,aAAe,EAAS,OAAS,EAAU,OAEpDlJ,GAAO,QAAWxH,EAAGzB,WAAW6Y,IAAe,SAAW,EAAS,QACnEtJ,EAAIzP,UAAY2B,EAAG/H,KAAK0Q,YAAY3I,EAAG3B,UAAW6X,EAAMlW,EAAGnD,KAAKgM,cAC5DsG,EAAY9F,EAAQ,IAAM6M,EAAO,IACrCpI,EAAI3B,YAAY6C,GAAYkH,EACxB9G,EAAQpP,EAAGtK,SAASoY,GACxBA,EAAI7W,OAASgX,EACTjO,EAAG/H,KAAKkP,cAAciI,EAAOH,GAAa,EAC5CzH,GAAO,IAAOxH,EAAG/H,KAAKoP,WAAW+H,EAAOH,EAAWE,GAAc,IAEjE3H,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAEpEwE,IACFxE,GAAO,SAAW,EAAe,aAEnCA,GAAO,MACHwE,IACFxE,GAAO,SAAW,EAAe,aAEnCA,GAAO,OACHwE,IACFxE,GAAO,QAAU,EAAe,OAChCuG,GAAkB,OAU5B,OAJI/B,IACFxE,GAAO,IAAM,EAAmB,QAAU,EAAU,iBAEtDA,EAAMxH,EAAG/H,KAAKsP,YAAYC,KAI1B,IAAIwQ,GAAG,CAAC,SAAStkB,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAgCsN,EAAIwL,GACnD,IAAIhE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9B8C,EAAQ,SAAWhD,EACnBoC,EAAM9N,EAAG/H,KAAKc,KAAKiH,GAEvB8N,EAAInC,QACJ,IAAIqC,EAAa,QAAUF,EAAInC,MAE/B,GADAnE,GAAO,OAAS,EAAU,aACrBxH,EAAGnD,KAAK0R,eAAmC,iBAAXzY,GAAqD,EAA9B0B,OAAOiK,KAAK3L,GAAS7B,OAAa+L,EAAG/H,KAAKsQ,eAAezS,EAASkK,EAAG1C,MAAMmH,KAAO,CAC5IqJ,EAAI9Y,OAASc,EACbgY,EAAI3P,WAAa2N,EACjBgC,EAAI1P,cAAgB2N,EACpB,IAAImK,EAAO,MAAQxK,EACjBqD,EAAO,MAAQrD,EACf2C,EAAK,IAAM3C,EACXuM,EAAe,OAAU/B,EAAO,OAEhCjH,EAAY,QADDnB,EAAIjC,UAAY7L,EAAG6L,UAAY,GAE1CsK,EAAkB,iBAAmBzK,EACrCgF,EAAiB1Q,EAAGnD,KAAK8T,cACzB1C,EAAiBjO,EAAG/I,OAClByZ,IACFlJ,GAAO,QAAU,EAAoB,kBAGrCA,GADEkJ,EACK,IAAM,EAAoB,MAAQ,EAAoB,mBAAqB,EAAU,eAAiB,EAAS,OAAS,EAAS,IAAM,EAAoB,YAAc,EAAS,aAAe,EAAS,MAAQ,EAAoB,IAAM,EAAS,MAErP,aAAe,EAAS,OAAS,EAAU,OAEpDlJ,GAAO,iBAAmB,EAAS,cACnC,IAAI2H,EAAY+G,EACZvH,EAAgB3O,EAAGuN,cACvBvN,EAAGuN,cAAgBO,EAAIP,eAAgB,EACvC,IAAI6B,EAAQpP,EAAGtK,SAASoY,GACxBA,EAAI7W,OAASgX,EACTjO,EAAG/H,KAAKkP,cAAciI,EAAOH,GAAa,EAC5CzH,GAAO,IAAOxH,EAAG/H,KAAKoP,WAAW+H,EAAOH,EAAWE,GAAc,IAEjE3H,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAExExH,EAAGuN,cAAgBO,EAAIP,cAAgBoB,EACvCnH,GAAO,SAAW,EAAe,gBAAkB,EAAO,aAAe,EAAS,KAAO,EAAO,YAAc,EAAO,iBAAmB,EAAO,oBAAsB,EAAS,sBACtJ,IAApBxH,EAAGkN,cACL1F,GAAO,8DAAiFxH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,+BAAkC,EAAiB,QACjM,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,iCAAqC,EAAiB,oBAE3DxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACFxH,EAAGuN,eAAiBvB,IAGrBxE,GADExH,EAAG6H,MACE,wCAEA,8CAGPmE,IACFxE,GAAO,YAETA,GAAO,OAMT,OAJIwE,IACFxE,GAAO,SAAmC,EAAU,iBAEtDA,EAAMxH,EAAG/H,KAAKsP,YAAYC,KAI1B,IAAI0Q,GAAG,CAAC,SAASxkB,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAsBsN,EAAIwL,GACzC,IAQI/N,EAAQ0a,EARR3Q,EAAM,IAENoE,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9B6C,EAAS,QANFzO,EAAG2L,MAQd,GAAe,KAAX7V,GAA6B,MAAXA,EAGlBqiB,EAFEnY,EAAG/B,QACLR,EAASuC,EAAG6H,MACD,aAEXpK,GAAmC,IAA1BuC,EAAGtE,KAAK1G,OAAOyI,OACb,sBAER,CACL,IAAI2a,EAAUpY,EAAG1B,WAAW0B,EAAG/I,OAAQnB,EAASkK,EAAG/B,QACnD,QAAgB5I,IAAZ+iB,EAAuB,CACzB,IAAIC,EAAWrY,EAAGnL,gBAAgBqC,QAAQ8I,EAAG/I,OAAQnB,GACrD,GAA2B,QAAvBkK,EAAGnD,KAAKyb,YAAuB,CACjCtY,EAAGtB,OAAOI,MAAMuZ,IACZpL,EAAaA,GAAc,IACpBjI,KAAKwC,GAChBA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,qDAAwExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,sBAA0B/L,EAAG/H,KAAKiP,aAAapR,GAAY,QAChM,IAArBkK,EAAGnD,KAAKsQ,WACV3F,GAAO,0CAA+CxH,EAAG/H,KAAKiP,aAAapR,GAAY,MAErFkK,EAAGnD,KAAKuQ,UACV5F,GAAO,cAAiBxH,EAAG/H,KAAKkE,eAAerG,GAAY,mCAAsCkK,EAAa,WAAI,YAAc,EAAU,KAE5IwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EACZA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAE/BmE,IACFxE,GAAO,sBAEJ,CAAA,GAA2B,UAAvBxH,EAAGnD,KAAKyb,YAMjB,MAAM,IAAItY,EAAGnL,gBAAgBmL,EAAG/I,OAAQnB,EAASuiB,GALjDrY,EAAGtB,OAAOyT,KAAKkG,GACXrM,IACFxE,GAAO,uBAKN,GAAI4Q,EAAQzY,OAAQ,CACzB,IAAImO,EAAM9N,EAAG/H,KAAKc,KAAKiH,GACvB8N,EAAInC,QACJ,IAAIqC,EAAa,QAAUF,EAAInC,MAC/BmC,EAAI9Y,OAASojB,EAAQpjB,OACrB8Y,EAAI3P,WAAa,GACjB2P,EAAI1P,cAAgBtI,EAEpB0R,GAAO,IADKxH,EAAGtK,SAASoY,GAAKjK,QAAQ,oBAAqBuU,EAAQtkB,MAC3C,IACnBkY,IACFxE,GAAO,QAAU,EAAe,aAGlC/J,GAA4B,IAAnB2a,EAAQ3a,QAAoBuC,EAAG6H,QAA4B,IAAnBuQ,EAAQ3a,OACzD0a,EAAWC,EAAQtkB,KAGvB,GAAIqkB,EAAU,CACZ,IAAIlL,GAAAA,EAAaA,GAAc,IACpBjI,KAAKwC,GAChBA,EAAM,GAEJA,GADExH,EAAGnD,KAAKqT,YACH,IAAM,EAAa,eAEnB,IAAM,EAAa,KAE5B1I,GAAO,IAAM,EAAU,qBACH,MAAhBxH,EAAG3B,YACLmJ,GAAO,MAASxH,EAAY,WAK9B,IAAIuY,EADJ/Q,GAAO,OAFWoE,EAAW,QAAWA,EAAW,GAAM,IAAM,cAEhC,OADPA,EAAW5L,EAAGmM,YAAYP,GAAY,sBACC,gBAG/D,GADApE,EAAMyF,EAAWK,MACb7P,EAAQ,CACV,IAAKuC,EAAG6H,MAAO,MAAM,IAAIhU,MAAM,0CAC3BmY,IACFxE,GAAO,QAAU,EAAW,MAE9BA,GAAO,gBAAkB,EAAmB,KACxCwE,IACFxE,GAAO,IAAM,EAAW,aAE1BA,GAAO,4KACHwE,IACFxE,GAAO,IAAM,EAAW,cAE1BA,GAAO,MACHwE,IACFxE,GAAO,QAAU,EAAW,aAG9BA,GAAO,SAAW,EAAmB,uCAAyC,EAAa,0CAA4C,EAAa,wCAChJwE,IACFxE,GAAO,YAIb,OAAOA,IAGP,IAAIgR,GAAG,CAAC,SAAS9kB,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA2BsN,EAAIwL,GAC9C,IAAIhE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9B6C,EAAS,QAAU/C,EACnBQ,EAAUlM,EAAGnD,KAAKwM,OAASvT,GAAWA,EAAQuT,MAE9C6C,IACF1E,GAAO,cAAgB,EAAS,MAASxH,EAAG/H,KAAKmR,QAAQtT,EAAQuT,MAAOuC,EAAU5L,EAAGmM,aAAgB,MAKvG,IAAIsF,EAAW,SAAW/F,EAC1B,IAAKQ,EACH,GAAIpW,EAAQ7B,OAAS+L,EAAGnD,KAAKoa,cAAgBjX,EAAGhL,OAAOuP,YAAc/M,OAAOiK,KAAKzB,EAAGhL,OAAOuP,YAAYtQ,OAAQ,CAC7G,IAAI+iB,EAAY,GACZ7I,EAAOrY,EACX,GAAIqY,EAGF,IAFA,IAAIyC,EAAWuG,GAAM,EACnB7I,EAAKH,EAAKla,OAAS,EACdkjB,EAAK7I,GAAI,CACdsC,EAAYzC,EAAKgJ,GAAM,GACvB,IAAIsB,EAAezY,EAAGhL,OAAOuP,WAAWqM,GAClC6H,IAAiBzY,EAAGnD,KAAK0R,eAAwC,iBAAhBkK,GAA+D,EAAnCjhB,OAAOiK,KAAKgX,GAAcxkB,OAAa+L,EAAG/H,KAAKsQ,eAAekQ,EAAczY,EAAG1C,MAAMmH,QACtKuS,EAAUA,EAAU/iB,QAAU2c,SAKhCoG,EAAYlhB,EAGpB,GAAIoW,GAAW8K,EAAU/iB,OAAQ,CAC/B,IAAI6c,EAAoB9Q,EAAG3B,UACzBqa,EAAgBxM,GAA+BlM,EAAGnD,KAAKoa,cAA5BD,EAAU/iB,OACrCyc,EAAiB1Q,EAAGnD,KAAK8T,cAC3B,GAAI3E,EAEF,GADAxE,GAAO,eAAiB,EAAS,KAC7BkR,EAAe,CACZxM,IACH1E,GAAO,QAAU,EAAa,qBAAuB,EAAgB,MAEvE,IAEE2J,EAAmB,QADnBD,EAAgB,SAAWxF,EAAO,KADhC2C,EAAK,IAAM3C,GACgC,KACA,OAC3C1L,EAAGnD,KAAKuU,yBACVpR,EAAG3B,UAAY2B,EAAG/H,KAAK0Q,YAAYmI,EAAmBI,EAAelR,EAAGnD,KAAKgM,eAE/ErB,GAAO,QAAU,EAAW,YACxB0E,IACF1E,GAAO,cAAgB,EAAS,mBAAqB,EAAW,0CAA4C,EAAS,MAAQ,EAAW,oBAE1IA,GAAO,aAAe,EAAO,SAAW,EAAO,MAAQ,EAAa,YAAc,EAAO,SAAW,EAAW,MAAQ,EAAU,IAAM,EAAa,IAAM,EAAO,oBAC7JkJ,IACFlJ,GAAO,8CAAgD,EAAU,KAAO,EAAa,IAAM,EAAO,OAEpGA,GAAO,UAAY,EAAW,cAC1B0E,IACF1E,GAAO,UAGLyF,EAAaA,GAAc,IACpBjI,KAFXwC,GAAO,UAAY,EAAW,UAG9BA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,yDAA4ExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,kCAAqC,EAAqB,QACnM,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,gBAELA,GADExH,EAAGnD,KAAKuU,uBACH,yBAEA,oCAAuC,EAAqB,MAErE5J,GAAO,MAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EACZA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,iBACF,CACLA,GAAO,SACP,IAAI6J,EAAO2F,EACX,GAAI3F,EAGF,IAFA,IAAkBhD,GAAM,EACtBkD,EAAKF,EAAKpd,OAAS,EACdoa,EAAKkD,GAAI,CACdR,EAAeM,EAAKhD,GAAM,GACtBA,IACF7G,GAAO,QAITA,GAAO,SADLwJ,EAAW3H,GADT4H,EAAQjR,EAAG/H,KAAKgP,YAAY8J,KAEF,kBAC1BL,IACFlJ,GAAO,8CAAgD,EAAU,MAAUxH,EAAG/H,KAAKiP,aAAa6J,GAAiB,OAEnHvJ,GAAO,gBAAkB,EAAS,MAASxH,EAAG/H,KAAKkE,eAAe6D,EAAGnD,KAAKgM,aAAekI,EAAeE,GAAU,OAGtHzJ,GAAO,QACP,IAKIyF,EAJFkE,EAAmB,QADjBD,EAAgB,UAAYxF,GACe,OAC3C1L,EAAGnD,KAAKuU,yBACVpR,EAAG3B,UAAY2B,EAAGnD,KAAKgM,aAAe7I,EAAG/H,KAAK0Q,YAAYmI,EAAmBI,GAAe,GAAQJ,EAAoB,MAAQI,IAE9HjE,EAAaA,GAAc,IACpBjI,KAAKwC,GAChBA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,yDAA4ExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,kCAAqC,EAAqB,QACnM,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,gBAELA,GADExH,EAAGnD,KAAKuU,uBACH,yBAEA,oCAAuC,EAAqB,MAErE5J,GAAO,MAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAEL6F,EAAQ7F,EACZA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,kBAGT,GAAIkR,EAAe,CACZxM,IACH1E,GAAO,QAAU,EAAa,qBAAuB,EAAgB,MAEvE,IACE0J,EACAC,EAAmB,QADnBD,EAAgB,SAAWxF,EAAO,KADhC2C,EAAK,IAAM3C,GACgC,KACA,OAC3C1L,EAAGnD,KAAKuU,yBACVpR,EAAG3B,UAAY2B,EAAG/H,KAAK0Q,YAAYmI,EAAmBI,EAAelR,EAAGnD,KAAKgM,eAE3EqD,IACF1E,GAAO,QAAU,EAAa,sBAAwB,EAAa,sBAC3C,IAApBxH,EAAGkN,cACL1F,GAAO,yDAA4ExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,kCAAqC,EAAqB,QACnM,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,gBAELA,GADExH,EAAGnD,KAAKuU,uBACH,yBAEA,oCAAuC,EAAqB,MAErE5J,GAAO,MAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAETA,GAAO,0FAA4F,EAAa,sBAElHA,GAAO,aAAe,EAAO,SAAW,EAAO,MAAQ,EAAa,YAAc,EAAO,aAAe,EAAU,IAAM,EAAa,IAAM,EAAO,oBAC9IkJ,IACFlJ,GAAO,8CAAgD,EAAU,KAAO,EAAa,IAAM,EAAO,OAEpGA,GAAO,qBACiB,IAApBxH,EAAGkN,cACL1F,GAAO,yDAA4ExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,kCAAqC,EAAqB,QACnM,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,gBAELA,GADExH,EAAGnD,KAAKuU,uBACH,yBAEA,oCAAuC,EAAqB,MAErE5J,GAAO,MAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAETA,GAAO,mFACH0E,IACF1E,GAAO,aAEJ,CACL,IAAIgQ,EAAOR,EACX,GAAIQ,EAGF,IAFA,IAAIzG,EAAc0G,GAAM,EACtBC,EAAKF,EAAKvjB,OAAS,EACdwjB,EAAKC,GAAI,CACd3G,EAAeyG,EAAKC,GAAM,GAC1B,IAAIxG,EAAQjR,EAAG/H,KAAKgP,YAAY8J,GAE9BC,GADAG,EAAmBnR,EAAG/H,KAAKiP,aAAa6J,GAC7B1H,EAAQ4H,GACjBjR,EAAGnD,KAAKuU,yBACVpR,EAAG3B,UAAY2B,EAAG/H,KAAK+Q,QAAQ8H,EAAmBC,EAAc/Q,EAAGnD,KAAKgM,eAE1ErB,GAAO,SAAW,EAAa,kBAC3BkJ,IACFlJ,GAAO,8CAAgD,EAAU,MAAUxH,EAAG/H,KAAKiP,aAAa6J,GAAiB,OAEnHvJ,GAAO,qBACiB,IAApBxH,EAAGkN,cACL1F,GAAO,yDAA4ExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,kCAAqC,EAAqB,QACnM,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,gBAELA,GADExH,EAAGnD,KAAKuU,uBACH,yBAEA,oCAAuC,EAAqB,MAErE5J,GAAO,MAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAETA,GAAO,kFAKfxH,EAAG3B,UAAYyS,OACN9E,IACTxE,GAAO,gBAET,OAAOA,IAGP,IAAImR,GAAG,CAAC,SAASjlB,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA8BsN,EAAIwL,GACjD,IAUEC,EAVEjE,EAAM,IACNkE,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAAOwW,GACpBM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UACzB5C,EAAQ,QAAUuC,GAAY,IAC9B6C,EAAS,QAAU/C,EACnBQ,EAAUlM,EAAGnD,KAAKwM,OAASvT,GAAWA,EAAQuT,MAQlD,GAJEoC,EAFES,GACF1E,GAAO,cAAgB,EAAS,MAASxH,EAAG/H,KAAKmR,QAAQtT,EAAQuT,MAAOuC,EAAU5L,EAAGmM,aAAgB,KACtF,SAAWT,GAEX5V,GAEZA,GAAWoW,KAAoC,IAAxBlM,EAAGnD,KAAK8W,YAAuB,CACrDzH,IACF1E,GAAO,QAAU,EAAW,SAAW,EAAiB,iBAAmB,EAAiB,mBAAqB,EAAW,4BAA8B,EAAiB,kBAAsB,EAAW,qBAE9MA,GAAO,YAAc,EAAU,aAAe,EAAW,6BACzD,IAAIoR,EAAY5Y,EAAGhL,OAAOmW,OAASnL,EAAGhL,OAAOmW,MAAMhH,KACjD0U,EAAexV,MAAMC,QAAQsV,GAC/B,IAAKA,GAA0B,UAAbA,GAAsC,SAAbA,GAAyBC,IAAgD,GAA/BD,EAAUxG,QAAQ,WAAgD,GAA9BwG,EAAUxG,QAAQ,UACzI5K,GAAO,uDAAyD,EAAU,QAAU,EAAU,WAAa,EAAW,qCAEtHA,GAAO,yDAA2D,EAAU,QAE5EA,GAAO,QAAWxH,EAAG/H,KADP,iBAAmB4gB,EAAe,IAAM,KACnBD,EAAW,QAAQ,GAAS,eAC3DC,IACFrR,GAAO,sDAETA,GAAO,gDAAoD,EAAW,sEAExEA,GAAO,MACH0E,IACF1E,GAAO,SAGT,IAAIyF,EAAaA,GAAc,GAC/BA,EAAWjI,KAFXwC,GAAO,SAAW,EAAW,UAG7BA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,4DAA+ExH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,8BAC5I,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,mGAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,eAELA,GADE0E,EACK,kBAAoB,EAEpB,GAAK,EAEd1E,GAAO,2CAA8CxH,EAAa,WAAI,YAAc,EAAU,KAEhGwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EACZA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,MACHwE,IACFxE,GAAO,iBAGLwE,IACFxE,GAAO,iBAGX,OAAOA,IAGP,IAAIsR,GAAG,CAAC,SAASplB,EAAQf,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA2BsN,EAAIwL,GAC9C,IAAIhE,EAAM,GACN/J,GAA8B,IAArBuC,EAAGhL,OAAOyI,OACrBsb,EAAe/Y,EAAG/H,KAAKuQ,qBAAqBxI,EAAGhL,OAAQgL,EAAG1C,MAAMmH,IAAK,QACrEoG,EAAM7K,EAAGhN,KAAKwO,OAAOxB,EAAGhL,QAC1B,GAAIgL,EAAGnD,KAAK0R,eAAgB,CAC1B,IAAIyK,EAAchZ,EAAG/H,KAAKyQ,mBAAmB1I,EAAGhL,OAAQgL,EAAG1C,MAAM6H,UACjE,GAAI6T,EAAa,CACf,IAAIC,EAAe,oBAAsBD,EACzC,GAA+B,QAA3BhZ,EAAGnD,KAAK0R,eACP,MAAM,IAAI1a,MAAMolB,GADiBjZ,EAAGtB,OAAOyT,KAAK8G,IAezD,GAXIjZ,EAAG9B,QACLsJ,GAAO,mBACH/J,IACFuC,EAAG6H,OAAQ,EACXL,GAAO,UAETA,GAAO,sFACHqD,IAAQ7K,EAAGnD,KAAKa,YAAcsC,EAAGnD,KAAK8B,eACxC6I,GAAO,kBAA2BqD,EAAM,SAGpB,kBAAb7K,EAAGhL,SAAyB+jB,IAAgB/Y,EAAGhL,OAAOgB,KAAO,CACtE,IACI0V,EAAO1L,EAAG2L,MACVC,EAAW5L,EAAG6L,UACd/V,EAAUkK,EAAGhL,OAHbwW,EAAW,gBAIXM,EAAc9L,EAAG7B,WAAa6B,EAAG/H,KAAKgP,YAAYuE,GAClDO,EAAiB/L,EAAG5B,cAAgB,IAAMoN,EAC1CQ,GAAiBhM,EAAGnD,KAAKoP,UAEzB5C,EAAQ,QAAUuC,GAAY,IAC9B6C,EAAS,QAAU/C,EACvB,IAAkB,IAAd1L,EAAGhL,OAAkB,CACnBgL,EAAG9B,MACL8N,GAAgB,EAEhBxE,GAAO,QAAU,EAAW,cAE1ByF,EAAaA,GAAc,IACpBjI,KAAKwC,GAChBA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,6DAAiGxH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,kBAC9J,IAArB/L,EAAGnD,KAAKsQ,WACV3F,GAAO,0CAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,mDAAsDxH,EAAa,WAAI,YAAc,EAAU,KAExGwH,GAAO,OAEPA,GAAO,OAET,IAAI6F,EAAQ7F,EACZA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,oFAK/BL,GAFAxH,EAAG9B,MACDT,EACK,iBAEA,yCAGF,QAAU,EAAW,YAMhC,OAHIuC,EAAG9B,QACLsJ,GAAO,yBAEFA,EAET,GAAIxH,EAAG9B,MAAO,CACZ,IAAIgb,EAAOlZ,EAAG9B,MACZwN,EAAO1L,EAAG2L,MAAQ,EAClBC,EAAW5L,EAAG6L,UAAY,EAC1BxC,EAAQ,OAKV,GAJArJ,EAAGmZ,OAASnZ,EAAG9J,QAAQmB,SAAS2I,EAAGhN,KAAKwO,OAAOxB,EAAGtE,KAAK1G,SACvDgL,EAAG/I,OAAS+I,EAAG/I,QAAU+I,EAAGmZ,cACrBnZ,EAAG9B,MACV8B,EAAGmM,YAAc,MAAC9W,QACQA,IAAtB2K,EAAGhL,OAAO4iB,SAAyB5X,EAAGnD,KAAK0a,aAAevX,EAAGnD,KAAKuc,eAAgB,CACpF,IAAIC,EAAc,wCAClB,GAA+B,QAA3BrZ,EAAGnD,KAAKuc,eACP,MAAM,IAAIvlB,MAAMwlB,GADiBrZ,EAAGtB,OAAOyT,KAAKkH,GAGvD7R,GAAO,wBACPA,GAAO,wBACPA,GAAO,qDACF,CACDkE,EAAO1L,EAAG2L,MAEZtC,EAAQ,SADRuC,EAAW5L,EAAG6L,YACgB,IAEhC,GADIhB,IAAK7K,EAAG/I,OAAS+I,EAAG9J,QAAQiB,IAAI6I,EAAG/I,OAAQ4T,IAC3CpN,IAAWuC,EAAG6H,MAAO,MAAM,IAAIhU,MAAM,+BACzC2T,GAAO,aAAe,EAAS,aAE7BiH,EAAS,QAAU/C,EACrBM,GAAiBhM,EAAGnD,KAAKoP,UAD3B,IAEEqN,EAAkB,GAClBC,EAAkB,GAEhBC,EAAcxZ,EAAGhL,OAAOmP,KAC1B0U,EAAexV,MAAMC,QAAQkW,GAa/B,GAZIA,GAAexZ,EAAGnD,KAAK4c,WAAmC,IAAvBzZ,EAAGhL,OAAOykB,WAC3CZ,GACkC,GAAhCW,EAAYpH,QAAQ,UAAeoH,EAAcA,EAAYpU,OAAO,SAChD,QAAfoU,IACTA,EAAc,CAACA,EAAa,QAC5BX,GAAe,IAGfA,GAAsC,GAAtBW,EAAYvlB,SAC9BulB,EAAcA,EAAY,GAC1BX,GAAe,GAEb7Y,EAAGhL,OAAOgB,MAAQ+iB,EAAc,CAClC,GAA0B,QAAtB/Y,EAAGnD,KAAK6c,WACV,MAAM,IAAI7lB,MAAM,qDAAuDmM,EAAG5B,cAAgB,8BAC1D,IAAvB4B,EAAGnD,KAAK6c,aACjBX,GAAe,EACf/Y,EAAGtB,OAAOyT,KAAK,6CAA+CnS,EAAG5B,cAAgB,MAMrF,GAHI4B,EAAGhL,OAAOkQ,UAAYlF,EAAGnD,KAAKqI,WAChCsC,GAAO,IAAOxH,EAAG1C,MAAMmH,IAAIS,SAASpR,KAAKkM,EAAI,aAE3CwZ,EAAa,CACf,GAAIxZ,EAAGnD,KAAK8c,YACV,IAAIC,EAAiB5Z,EAAG/H,KAAK6O,cAAc9G,EAAGnD,KAAK8c,YAAaH,GAElE,IAAIK,EAAc7Z,EAAG1C,MAAMoH,MAAM8U,GACjC,GAAII,GAAkBf,IAAgC,IAAhBgB,GAAyBA,IAAgBC,EAAgBD,GAAe,CACxG/N,EAAc9L,EAAG7B,WAAa,QAChC4N,EAAiB/L,EAAG5B,cAAgB,QAClC0N,EAAc9L,EAAG7B,WAAa,QAChC4N,EAAiB/L,EAAG5B,cAAgB,QAGtC,GADAoJ,GAAO,QAAWxH,EAAG/H,KADT4gB,EAAe,iBAAmB,iBACXW,EAAanQ,GAAO,GAAS,OAC5DuQ,EAAgB,CAClB,IAAIG,EAAY,WAAarO,EAC3BsO,EAAW,UAAYtO,EACzBlE,GAAO,QAAU,EAAc,aAAe,EAAU,KAC7B,SAAvBxH,EAAGnD,KAAK8c,cACVnS,GAAO,QAAU,EAAc,iCAAqC,EAAU,MAAQ,EAAc,gBAEtGA,GAAO,QAAU,EAAa,iBAC9B,IAAIyS,EAAkB,GAClB9L,EAAOyL,EACX,GAAIzL,EAGF,IAFA,IAAI+L,EAAO7L,GAAM,EACfC,EAAKH,EAAKla,OAAS,EACdoa,EAAKC,GACV4L,EAAQ/L,EAAKE,GAAM,GACfA,IACF7G,GAAO,QAAU,EAAa,qBAC9ByS,GAAmB,KAEM,SAAvBja,EAAGnD,KAAK8c,aAAmC,SAATO,IACpC1S,GAAO,QAAU,EAAc,kBAAsB,EAAU,mBAAqB,EAAa,MAAQ,EAAU,MAAQ,EAAU,QAAU,EAAc,aAAe,EAAU,SAE3K,UAAT0S,EACF1S,GAAO,QAAU,EAAc,mBAAuB,EAAc,kBAAsB,EAAa,WAAe,EAAU,cAAgB,EAAU,cAAgB,EAAa,UACrK,UAAT0S,GAA8B,WAATA,GAC9B1S,GAAO,QAAU,EAAc,oBAAwB,EAAU,iBAAmB,EAAc,mBAAuB,EAAU,OAAS,EAAU,QAAU,EAAU,IAC7J,WAAT0S,IACF1S,GAAO,SAAW,EAAU,SAE9BA,GAAO,MAAQ,EAAa,OAAS,EAAU,MAC7B,WAAT0S,EACT1S,GAAO,QAAU,EAAU,mBAAuB,EAAU,aAAe,EAAU,cAAgB,EAAa,sBAAwB,EAAU,kBAAsB,EAAU,WAAa,EAAa,YAC5L,QAAT0S,EACT1S,GAAO,QAAU,EAAU,cAAkB,EAAU,aAAe,EAAU,eAAiB,EAAa,YAC9E,SAAvBxH,EAAGnD,KAAK8c,aAAmC,SAATO,IAC3C1S,GAAO,QAAU,EAAc,mBAAuB,EAAc,mBAAuB,EAAc,oBAAwB,EAAU,aAAe,EAAa,OAAS,EAAU,QAK5LyF,EAAaA,GAAc,IACpBjI,KAFXwC,GAAO,IAAM,EAAoB,QAAU,EAAa,wBAGxDA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,qDAAyFxH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,uBAE7KvE,GADEqR,EACK,GAAMW,EAAYhZ,KAAK,KAEvB,GAAK,EAEdgH,GAAO,QACkB,IAArBxH,EAAGnD,KAAKsQ,WACV3F,GAAO,0BAELA,GADEqR,EACK,GAAMW,EAAYhZ,KAAK,KAEvB,GAAK,EAEdgH,GAAO,MAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAEL6F,EAAQ7F,EACZA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,cACP,IAAI2I,EAAcvE,EAAW,QAAWA,EAAW,GAAM,IAAM,aAE/DpE,GAAO,IAAM,EAAU,MAAQ,EAAa,KACvCoE,IACHpE,GAAO,OAAS,EAAgB,mBAElCA,GAAO,IAAM,EAAgB,KALLoE,EAAW5L,EAAGmM,YAAYP,GAAY,sBAKH,OAAS,EAAa,WAC5E,EACDqB,EAAaA,GAAc,IACpBjI,KAAKwC,GAChBA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,qDAAyFxH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,uBAE7KvE,GADEqR,EACK,GAAMW,EAAYhZ,KAAK,KAEvB,GAAK,EAEdgH,GAAO,QACkB,IAArBxH,EAAGnD,KAAKsQ,WACV3F,GAAO,0BAELA,GADEqR,EACK,GAAMW,EAAYhZ,KAAK,KAEvB,GAAK,EAEdgH,GAAO,MAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAEL6F,EAAQ7F,EACZA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAGrCL,GAAO,OAGX,GAAIxH,EAAGhL,OAAOgB,OAAS+iB,EACrBvR,GAAO,IAAOxH,EAAG1C,MAAMmH,IAAIzO,KAAKlC,KAAKkM,EAAI,QAAW,IAChDgM,IACFxE,GAAO,qBAELA,GADE0R,EACK,IAEA,QAAU,EAEnB1R,GAAO,OACP+R,GAAmB,SAEhB,CACL,IAAIlI,EAAOrR,EAAG1C,MACd,GAAI+T,EAGF,IAFA,IAAiBC,GAAM,EACrBC,EAAKF,EAAKpd,OAAS,EACdqd,EAAKC,GAEV,GAAIuI,EADJD,EAAcxI,EAAKC,GAAM,IACS,CAIhC,GAHIuI,EAAY1V,OACdqD,GAAO,QAAWxH,EAAG/H,KAAK6N,cAAc+T,EAAY1V,KAAMkF,GAAU,QAElErJ,EAAGnD,KAAK0a,YACV,GAAwB,UAApBsC,EAAY1V,MAAoBnE,EAAGhL,OAAOuP,WAAY,CACpDzO,EAAUkK,EAAGhL,OAAOuP,WAAxB,IAEIiT,EADYhgB,OAAOiK,KAAK3L,GAE5B,GAAI0hB,EAGF,IAFA,IAAIzG,EAAc0G,GAAM,EACtBC,EAAKF,EAAKvjB,OAAS,EACdwjB,EAAKC,GAAI,CAGd,QAAqBriB,KADjB+Y,EAAOtY,EADXib,EAAeyG,EAAKC,GAAM,KAEjBG,QAAuB,CAC9B,IAAIzI,EAAY9F,EAAQrJ,EAAG/H,KAAKgP,YAAY8J,GAC5C,GAAI/Q,EAAGuN,eACL,GAAIvN,EAAGnD,KAAKuc,eAAgB,CACtBC,EAAc,2BAA6BlK,EAC/C,GAA+B,QAA3BnP,EAAGnD,KAAKuc,eACP,MAAM,IAAIvlB,MAAMwlB,GADiBrZ,EAAGtB,OAAOyT,KAAKkH,SAIvD7R,GAAO,QAAU,EAAc,kBACJ,SAAvBxH,EAAGnD,KAAK0a,cACV/P,GAAO,OAAS,EAAc,gBAAkB,EAAc,YAEhEA,GAAO,MAAQ,EAAc,MAE3BA,GADyB,UAAvBxH,EAAGnD,KAAK0a,YACH,IAAOvX,EAAGxB,WAAW4P,EAAKwJ,SAAY,IAEtC,IAAOpN,KAAKC,UAAU2D,EAAKwJ,SAAY,IAEhDpQ,GAAO,YAKV,GAAwB,SAApBqS,EAAY1V,MAAmBd,MAAMC,QAAQtD,EAAGhL,OAAOmW,OAAQ,CACxE,IAAI0M,EAAO7X,EAAGhL,OAAOmW,MACrB,GAAI0M,EACF,CAAUxJ,GAAM,EAEhB,IAFA,IAAID,EACF2J,EAAKF,EAAK5jB,OAAS,EACdoa,EAAK0J,GAEV,QAAqB1iB,KADrB+Y,EAAOyJ,EAAKxJ,GAAM,IACTuJ,QAAuB,CAC1BzI,EAAY9F,EAAQ,IAAMgF,EAAK,IACnC,GAAIrO,EAAGuN,eACL,GAAIvN,EAAGnD,KAAKuc,eAAgB,CACtBC,EAAc,2BAA6BlK,EAC/C,GAA+B,QAA3BnP,EAAGnD,KAAKuc,eACP,MAAM,IAAIvlB,MAAMwlB,GADiBrZ,EAAGtB,OAAOyT,KAAKkH,SAIvD7R,GAAO,QAAU,EAAc,kBACJ,SAAvBxH,EAAGnD,KAAK0a,cACV/P,GAAO,OAAS,EAAc,gBAAkB,EAAc,YAEhEA,GAAO,MAAQ,EAAc,MAE3BA,GADyB,UAAvBxH,EAAGnD,KAAK0a,YACH,IAAOvX,EAAGxB,WAAW4P,EAAKwJ,SAAY,IAEtC,IAAOpN,KAAKC,UAAU2D,EAAKwJ,SAAY,IAEhDpQ,GAAO,OAOnB,IAAI2S,EAAON,EAAYzV,MACvB,GAAI+V,EAGF,IAFA,IAAIxK,EAAOyK,GAAM,EACfC,EAAKF,EAAKlmB,OAAS,EACdmmB,EAAKC,GAEV,GAAIC,EADJ3K,EAAQwK,EAAKC,GAAM,IACQ,CACzB,IAAIhL,EAAQO,EAAM7b,KAAKkM,EAAI2P,EAAMrP,QAASuZ,EAAY1V,MAClDiL,IACF5H,GAAO,IAAM,EAAU,IACnBwE,IACFsN,GAAmB,MAU7B,GAJItN,IACFxE,GAAO,IAAM,EAAoB,IACjC8R,EAAkB,IAEhBO,EAAY1V,OACdqD,GAAO,MACHgS,GAAeA,IAAgBK,EAAY1V,OAASyV,GAAgB,CAEtE,IAEI3M,EAFAnB,EAAc9L,EAAG7B,WAAa,QAChC4N,EAAiB/L,EAAG5B,cAAgB,SAClC6O,EAAaA,GAAc,IACpBjI,KAJXwC,GAAO,YAKPA,EAAM,IACkB,IAApBxH,EAAGkN,cACL1F,GAAO,qDAAyFxH,EAAY,UAAI,kBAAqBA,EAAG/H,KAAKkE,eAAe4P,GAAmB,uBAE7KvE,GADEqR,EACK,GAAMW,EAAYhZ,KAAK,KAEvB,GAAK,EAEdgH,GAAO,QACkB,IAArBxH,EAAGnD,KAAKsQ,WACV3F,GAAO,0BAELA,GADEqR,EACK,GAAMW,EAAYhZ,KAAK,KAEvB,GAAK,EAEdgH,GAAO,MAELxH,EAAGnD,KAAKuQ,UACV5F,GAAO,6BAA+B,EAAgB,mCAAsCxH,EAAa,WAAI,YAAc,EAAU,KAEvIwH,GAAO,OAEPA,GAAO,OAEL6F,EAAQ7F,EACZA,EAAMyF,EAAWK,MAIb9F,IAHCxH,EAAGuN,eAAiBvB,EAEnBhM,EAAG6H,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,MAGPwE,IACFxE,GAAO,mBAELA,GADE0R,EACK,IAEA,QAAU,EAEnB1R,GAAO,OACP+R,GAAmB,MA0B7B,SAASO,EAAgBD,GAEvB,IADA,IAAIzV,EAAQyV,EAAYzV,MACf5Q,EAAI,EAAGA,EAAI4Q,EAAMnQ,OAAQT,IAChC,GAAI8mB,EAAelW,EAAM5Q,IAAK,OAAO,EAGzC,SAAS8mB,EAAe3K,GACtB,YAAoCta,IAA7B2K,EAAGhL,OAAO2a,EAAMrP,UAA2BqP,EAAM1K,YAG1D,SAAoC0K,GAElC,IADA,IAAI4K,EAAO5K,EAAM1K,WACRzR,EAAI,EAAGA,EAAI+mB,EAAKtmB,OAAQT,IAC/B,QAA2B6B,IAAvB2K,EAAGhL,OAAOulB,EAAK/mB,IAAmB,OAAO,EANuBgnB,CAA2B7K,GAQnG,OAnCI3D,IACFxE,GAAO,IAAM,EAAoB,KAE/B0R,GACEzb,GACF+J,GAAO,6CACPA,GAAO,+CAEPA,GAAO,+BACPA,GAAO,gCAETA,GAAO,wBAEPA,GAAO,QAAU,EAAW,sBAAwB,EAAS,IAE/DA,EAAMxH,EAAG/H,KAAKsP,YAAYC,GACtB0R,IACF1R,EAAMxH,EAAG/H,KAAK2P,iBAAiBJ,EAAK/J,IAkB/B+J,IAGP,IAAIiT,GAAG,CAAC,SAAS/mB,EAAQf,EAAOD,GAClC,aAEA,IAAIsX,EAAa,yBACbzN,EAAiB7I,EAAQ,kBACzBgnB,EAAmBhnB,EAAQ,uBAE/Bf,EAAOD,QAAU,CACfioB,IAcF,SAAoBra,EAASH,GAG3B,IAAI7C,EAAQrK,KAAKqK,MACjB,GAAIA,EAAM6H,SAAS7E,GACjB,MAAM,IAAIzM,MAAM,WAAayM,EAAU,uBAEzC,IAAK0J,EAAWlP,KAAKwF,GACnB,MAAM,IAAIzM,MAAM,WAAayM,EAAU,8BAEzC,GAAIH,EAAY,CACdlN,KAAK2nB,gBAAgBza,GAAY,GAEjC,IAAI4F,EAAW5F,EAAWgE,KAC1B,GAAId,MAAMC,QAAQyC,GAChB,IAAK,IAAIvS,EAAE,EAAGA,EAAEuS,EAAS9R,OAAQT,IAC/BqnB,EAASva,EAASyF,EAASvS,GAAI2M,QAEjC0a,EAASva,EAASyF,EAAU5F,GAG9B,IAAImK,EAAanK,EAAWmK,WACxBA,IACEnK,EAAWkJ,OAASpW,KAAKkC,MAAMkU,QACjCiB,EAAa,CACXK,MAAO,CACLL,EACA,CAAEtU,KAAQ,mFAIhBmK,EAAWF,eAAiBhN,KAAK0J,QAAQ2N,GAAY,IAOzD,SAASuQ,EAASva,EAASyF,EAAU5F,GAEnC,IADA,IAAI2a,EACKtnB,EAAE,EAAGA,EAAE8J,EAAMrJ,OAAQT,IAAK,CACjC,IAAIunB,EAAKzd,EAAM9J,GACf,GAAIunB,EAAG5W,MAAQ4B,EAAU,CACvB+U,EAAYC,EACZ,OAICD,GAEHxd,EAAM0H,KADN8V,EAAY,CAAE3W,KAAM4B,EAAU3B,MAAO,KAIvC,IAAItE,EAAO,CACTQ,QAASA,EACTH,WAAYA,EACZkF,QAAQ,EACRvR,KAAMyI,EACN0I,WAAY9E,EAAW8E,YAEzB6V,EAAU1W,MAAMY,KAAKlF,GACrBxC,EAAM+H,OAAO/E,GAAWR,EAG1B,OA7BAxC,EAAM6H,SAAS7E,GAAWhD,EAAMmH,IAAInE,IAAW,EA6BxCrN,MA7EPwB,IAuFF,SAAoB6L,GAElB,IAAIR,EAAO7M,KAAKqK,MAAM+H,OAAO/E,GAC7B,OAAOR,EAAOA,EAAKK,WAAalN,KAAKqK,MAAM6H,SAAS7E,KAAY,GAzFhE0a,OAmGF,SAAuB1a,GAErB,IAAIhD,EAAQrK,KAAKqK,aACVA,EAAM6H,SAAS7E,UACfhD,EAAMmH,IAAInE,UACVhD,EAAM+H,OAAO/E,GACpB,IAAK,IAAI9M,EAAE,EAAGA,EAAE8J,EAAMrJ,OAAQT,IAE5B,IADA,IAAI4Q,EAAQ9G,EAAM9J,GAAG4Q,MACZsG,EAAE,EAAGA,EAAEtG,EAAMnQ,OAAQyW,IAC5B,GAAItG,EAAMsG,GAAGpK,SAAWA,EAAS,CAC/B8D,EAAMpI,OAAO0O,EAAG,GAChB,MAIN,OAAOzX,MAjHPyC,SA4HF,SAASklB,EAAgBza,EAAY8a,GACnCL,EAAgBhjB,OAAS,KACzB,IAAIhC,EAAI3C,KAAKioB,iBAAmBjoB,KAAKioB,kBACFjoB,KAAK0J,QAAQ+d,GAAkB,GAElE,GAAI9kB,EAAEuK,GAAa,OAAO,EAC1Bya,EAAgBhjB,OAAShC,EAAEgC,OAC3B,CAAA,GAAIqjB,EACF,MAAM,IAAIpnB,MAAM,yCAA4CZ,KAAKyN,WAAW9K,EAAEgC,SAE9E,OAAO,MAGT,CAACujB,sBAAsB,GAAGC,iBAAiB,KAAKC,GAAG,CAAC,SAAS3nB,EAAQf,EAAOD,GAC9EC,EAAOD,QAAQ,CACXoD,QAAW,0CACX+U,IAAO,+EACPyQ,YAAe,mEACfnX,KAAQ,SACR+G,SAAY,CAAE,SACd3G,WAAc,CACV8E,MAAS,CACLlF,KAAQ,SACRwG,MAAS,CACL,CAAEiH,OAAU,yBACZ,CAAEA,OAAU,mBAIxB6E,sBAAwB,IAG1B,IAAI8E,GAAG,CAAC,SAAS7nB,EAAQf,EAAOD,GAClCC,EAAOD,QAAQ,CACXoD,QAAW,0CACX+U,IAAO,0CACP2Q,MAAS,0BACT1Q,YAAe,CACX2Q,YAAe,CACXtX,KAAQ,QACR+O,SAAY,EACZ/H,MAAS,CAAEnV,KAAQ,MAEvB0lB,mBAAsB,CAClBvX,KAAQ,UACRG,QAAW,GAEfqX,2BAA8B,CAC1B9I,MAAS,CACL,CAAE7c,KAAQ,oCACV,CAAE4hB,QAAW,KAGrB7M,YAAe,CACXgI,KAAQ,CACJ,QACA,UACA,UACA,OACA,SACA,SACA,WAGR6I,YAAe,CACXzX,KAAQ,QACRgH,MAAS,CAAEhH,KAAQ,UACnBwP,aAAe,EACfiE,QAAW,KAGnBzT,KAAQ,CAAC,SAAU,WACnBI,WAAc,CACVsG,IAAO,CACH1G,KAAQ,SACRyN,OAAU,iBAEd9b,QAAW,CACPqO,KAAQ,SACRyN,OAAU,OAEd5b,KAAQ,CACJmO,KAAQ,SACRyN,OAAU,iBAEd1M,SAAY,CACRf,KAAQ,UAEZqX,MAAS,CACLrX,KAAQ,UAEZmX,YAAe,CACXnX,KAAQ,UAEZyT,SAAW,EACXiE,SAAY,CACR1X,KAAQ,UACRyT,SAAW,GAEfkE,SAAY,CACR3X,KAAQ,QACRgH,OAAS,GAEboI,WAAc,CACVpP,KAAQ,SACR4X,iBAAoB,GAExB1X,QAAW,CACPF,KAAQ,UAEZ6X,iBAAoB,CAChB7X,KAAQ,UAEZG,QAAW,CACPH,KAAQ,UAEZ4X,iBAAoB,CAChB5X,KAAQ,UAEZgP,UAAa,CAAEnd,KAAQ,oCACvBod,UAAa,CAAEpd,KAAQ,4CACvByd,QAAW,CACPtP,KAAQ,SACRyN,OAAU,SAEd0D,gBAAmB,CAAEtf,KAAQ,KAC7BmV,MAAS,CACLR,MAAS,CACL,CAAE3U,KAAQ,KACV,CAAEA,KAAQ,8BAEd4hB,SAAW,GAEf3E,SAAY,CAAEjd,KAAQ,oCACtBkd,SAAY,CAAEld,KAAQ,4CACtB2d,YAAe,CACXxP,KAAQ,UACRyT,SAAW,GAEf9E,SAAY,CAAE9c,KAAQ,KACtBqd,cAAiB,CAAErd,KAAQ,oCAC3Bsd,cAAiB,CAAEtd,KAAQ,4CAC3BkV,SAAY,CAAElV,KAAQ,6BACtBygB,qBAAwB,CAAEzgB,KAAQ,KAClC8U,YAAe,CACX3G,KAAQ,SACRsS,qBAAwB,CAAEzgB,KAAQ,KAClC4hB,QAAW,IAEfrT,WAAc,CACVJ,KAAQ,SACRsS,qBAAwB,CAAEzgB,KAAQ,KAClC4hB,QAAW,IAEftB,kBAAqB,CACjBnS,KAAQ,SACRsS,qBAAwB,CAAEzgB,KAAQ,KAClC0d,cAAiB,CAAE9B,OAAU,SAC7BgG,QAAW,IAEfxX,aAAgB,CACZ+D,KAAQ,SACRsS,qBAAwB,CACpB9L,MAAS,CACL,CAAE3U,KAAQ,KACV,CAAEA,KAAQ,gCAItB0d,cAAiB,CAAE1d,KAAQ,KAC3BqV,OAAS,EACT0H,KAAQ,CACJ5O,KAAQ,QACRgH,OAAS,EACT+H,SAAY,EACZS,aAAe,GAEnBxP,KAAQ,CACJwG,MAAS,CACL,CAAE3U,KAAQ,6BACV,CACImO,KAAQ,QACRgH,MAAS,CAAEnV,KAAQ,6BACnBkd,SAAY,EACZS,aAAe,KAI3B/B,OAAU,CAAEzN,KAAQ,UACpB8X,iBAAoB,CAAE9X,KAAQ,UAC9B+X,gBAAmB,CAAE/X,KAAQ,UAC7B6O,GAAM,CAAChd,KAAQ,KACfT,KAAQ,CAACS,KAAQ,KACjBmmB,KAAQ,CAACnmB,KAAQ,KACjB6c,MAAS,CAAE7c,KAAQ,6BACnB2U,MAAS,CAAE3U,KAAQ,6BACnBwd,MAAS,CAAExd,KAAQ,6BACnBiV,IAAO,CAAEjV,KAAQ,MAErB4hB,SAAW,IAGb,IAAIwE,GAAG,CAAC,SAAS1oB,EAAQf,EAAOD,GAClC,aAMAC,EAAOD,QAAU,SAAS6I,EAAM3H,EAAGsW,GACjC,GAAItW,IAAMsW,EAAG,OAAO,EAEpB,GAAItW,GAAKsW,GAAiB,iBAALtW,GAA6B,iBAALsW,EAAe,CAC1D,GAAItW,EAAE8D,cAAgBwS,EAAExS,YAAa,OAAO,EAE5C,IAAIzD,EAAQT,EAAGiO,EACf,GAAI4B,MAAMC,QAAQ1P,GAAI,CAEpB,IADAK,EAASL,EAAEK,SACGiW,EAAEjW,OAAQ,OAAO,EAC/B,IAAKT,EAAIS,EAAgB,GAART,KACf,IAAK+H,EAAM3H,EAAEJ,GAAI0W,EAAE1W,IAAK,OAAO,EACjC,OAAO,EAKT,GAAII,EAAE8D,cAAgBsD,OAAQ,OAAOpH,EAAE+J,SAAWuM,EAAEvM,QAAU/J,EAAEyoB,QAAUnS,EAAEmS,MAC5E,GAAIzoB,EAAE0oB,UAAY9kB,OAAOnD,UAAUioB,QAAS,OAAO1oB,EAAE0oB,YAAcpS,EAAEoS,UACrE,GAAI1oB,EAAE2oB,WAAa/kB,OAAOnD,UAAUkoB,SAAU,OAAO3oB,EAAE2oB,aAAerS,EAAEqS,WAIxE,IADAtoB,GADAwN,EAAOjK,OAAOiK,KAAK7N,IACLK,UACCuD,OAAOiK,KAAKyI,GAAGjW,OAAQ,OAAO,EAE7C,IAAKT,EAAIS,EAAgB,GAART,KACf,IAAKgE,OAAOnD,UAAUkM,eAAevM,KAAKkW,EAAGzI,EAAKjO,IAAK,OAAO,EAEhE,IAAKA,EAAIS,EAAgB,GAART,KAAY,CAC3B,IAAIe,EAAMkN,EAAKjO,GAEf,IAAK+H,EAAM3H,EAAEW,GAAM2V,EAAE3V,IAAO,OAAO,EAGrC,OAAO,EAIT,OAAOX,GAAIA,GAAKsW,GAAIA,IAGpB,IAAIsS,GAAG,CAAC,SAAS9oB,EAAQf,EAAOD,GAClC,aAEAC,EAAOD,QAAU,SAAUsT,EAAMnJ,GAET,mBADTA,EAANA,GAAa,MACcA,EAAO,CAAE4f,IAAK5f,IAC9C,IAEiCpK,EAF7BiqB,EAAiC,kBAAhB7f,EAAK6f,QAAwB7f,EAAK6f,OAEnDD,EAAM5f,EAAK4f,MAAkBhqB,EAQ9BoK,EAAK4f,IAPG,SAAUE,GACb,OAAO,SAAU/oB,EAAGsW,GAGhB,OAAOzX,EAFI,CAAE8B,IAAKX,EAAGY,MAAOmoB,EAAK/oB,IACtB,CAAEW,IAAK2V,EAAG1V,MAAOmoB,EAAKzS,QAMzC0S,EAAO,GACX,OAAO,SAAUnS,EAAWkS,GAKxB,GAJIA,GAAQA,EAAKE,QAAiC,mBAAhBF,EAAKE,SACnCF,EAAOA,EAAKE,eAGHxnB,IAATsnB,EAAJ,CACA,GAAmB,iBAARA,EAAkB,OAAOG,SAASH,GAAQ,GAAKA,EAAO,OACjE,GAAoB,iBAATA,EAAmB,OAAOnS,KAAKC,UAAUkS,GAEpD,IAAInpB,EAAGgU,EACP,GAAInE,MAAMC,QAAQqZ,GAAO,CAErB,IADAnV,EAAM,IACDhU,EAAI,EAAGA,EAAImpB,EAAK1oB,OAAQT,IACrBA,IAAGgU,GAAO,KACdA,GAAOiD,EAAUkS,EAAKnpB,KAAO,OAEjC,OAAOgU,EAAM,IAGjB,GAAa,OAATmV,EAAe,MAAO,OAE1B,IAA4B,IAAxBC,EAAKxK,QAAQuK,GAAc,CAC3B,GAAID,EAAQ,OAAOlS,KAAKC,UAAU,aAClC,MAAM,IAAIsS,UAAU,yCAGxB,IAAIC,EAAYJ,EAAK5X,KAAK2X,GAAQ,EAC9Blb,EAAOjK,OAAOiK,KAAKkb,GAAMM,KAAKR,GAAOA,EAAIE,IAE7C,IADAnV,EAAM,GACDhU,EAAI,EAAGA,EAAIiO,EAAKxN,OAAQT,IAAK,CAC9B,IAAIe,EAAMkN,EAAKjO,GACXgB,EAAQiW,EAAUkS,EAAKpoB,IAEtBC,IACDgT,IAAKA,GAAO,KAChBA,GAAOgD,KAAKC,UAAUlW,GAAO,IAAMC,GAGvC,OADAooB,EAAK5gB,OAAOghB,EAAW,GAChB,IAAMxV,EAAM,KAtChB,CAuCJxB,KAGL,IAAIkX,GAAG,CAAC,SAASxpB,EAAQf,EAAOD,GAClC,aAEA,IAAIuO,EAAWtO,EAAOD,QAAU,SAAUsC,EAAQ6H,EAAMsgB,GAEnC,mBAARtgB,IACTsgB,EAAKtgB,EACLA,EAAO,IAwDX,SAASugB,EAAUvgB,EAAMwgB,EAAKC,EAAMtoB,EAAQoN,EAASC,EAAYC,EAAeC,EAAexC,EAAcyC,GAC3G,GAAIxN,GAA2B,iBAAVA,IAAuBqO,MAAMC,QAAQtO,GAAS,CAEjE,IAAK,IAAIT,KADT8oB,EAAIroB,EAAQoN,EAASC,EAAYC,EAAeC,EAAexC,EAAcyC,GAC7DxN,EAAQ,CACtB,IAAIa,EAAMb,EAAOT,GACjB,GAAI8O,MAAMC,QAAQzN,IAChB,GAAItB,KAAO0M,EAASsc,cAClB,IAAK,IAAI/pB,EAAE,EAAGA,EAAEqC,EAAI5B,OAAQT,IAC1B4pB,EAAUvgB,EAAMwgB,EAAKC,EAAMznB,EAAIrC,GAAI4O,EAAU,IAAM7N,EAAM,IAAMf,EAAG6O,EAAYD,EAAS7N,EAAKS,EAAQxB,QAEnG,GAAIe,KAAO0M,EAASuc,eACzB,GAAI3nB,GAAqB,iBAAPA,EAChB,IAAK,IAAIoT,KAAQpT,EACfunB,EAAUvgB,EAAMwgB,EAAKC,EAAMznB,EAAIoT,GAAO7G,EAAU,IAAM7N,EAAM,IAAoB0U,EAY/EpF,QAAQ,KAAM,MAAMA,QAAQ,MAAO,MAZmDxB,EAAYD,EAAS7N,EAAKS,EAAQiU,QAEpH1U,KAAO0M,EAASkE,UAAatI,EAAKsF,WAAa5N,KAAO0M,EAASwc,gBACxEL,EAAUvgB,EAAMwgB,EAAKC,EAAMznB,EAAKuM,EAAU,IAAM7N,EAAK8N,EAAYD,EAAS7N,EAAKS,GAGnFsoB,EAAKtoB,EAAQoN,EAASC,EAAYC,EAAeC,EAAexC,EAAcyC,IApEhF4a,CAAUvgB,EAHc,mBADxBsgB,EAAKtgB,EAAKsgB,IAAMA,GACsBA,EAAKA,EAAGE,KAAO,aAC1CF,EAAGG,MAAQ,aAEKtoB,EAAQ,GAAIA,IAIzCiM,EAASkE,SAAW,CAClBmQ,iBAAiB,EACjBnK,OAAO,EACP2H,UAAU,EACV2D,sBAAsB,EACtB/C,eAAe,EACfzI,KAAK,GAGPhK,EAASsc,cAAgB,CACvBpS,OAAO,EACP0H,OAAO,EACPlI,OAAO,EACP6I,OAAO,GAGTvS,EAASuc,cAAgB,CACvB1S,aAAa,EACbvG,YAAY,EACZ+R,mBAAmB,EACnBlW,cAAc,GAGhBa,EAASwc,aAAe,CACtB7F,SAAS,EACT7E,MAAM,EACN1H,OAAO,EACPH,UAAU,EACV7G,SAAS,EACTC,SAAS,EACT0X,kBAAkB,EAClBD,kBAAkB,EAClBxI,YAAY,EACZJ,WAAW,EACXC,WAAW,EACXK,SAAS,EACT7B,QAAQ,EACRqB,UAAU,EACVC,UAAU,EACVS,aAAa,EACbN,eAAe,EACfC,eAAe,IAgCf,IAAIoK,GAAG,CAAC,SAAShqB,EAAQf,EAAOD,GAEjC,IAAUK,EAAAA,EAITE,KAAM,SAAWP,GAAW,aAE9B,SAASirB,IACL,IAAK,IAAIC,EAAO9f,UAAU7J,OAAQ4pB,EAAOxa,MAAMua,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IACzED,EAAKC,GAAQhgB,UAAUggB,GAG3B,GAAkB,EAAdD,EAAK5pB,OAAY,CACjB4pB,EAAK,GAAKA,EAAK,GAAGhb,MAAM,GAAI,GAE5B,IADA,IAAIkb,EAAKF,EAAK5pB,OAAS,EACd+pB,EAAI,EAAGA,EAAID,IAAMC,EACtBH,EAAKG,GAAKH,EAAKG,GAAGnb,MAAM,GAAI,GAGhC,OADAgb,EAAKE,GAAMF,EAAKE,GAAIlb,MAAM,GACnBgb,EAAKrd,KAAK,IAEjB,OAAOqd,EAAK,GAGpB,SAASI,EAAOhlB,GACZ,MAAO,MAAQA,EAAM,IAEzB,SAASilB,EAAO3qB,GACZ,YAAa8B,IAAN9B,EAAkB,YAAoB,OAANA,EAAa,OAASiE,OAAOnD,UAAUkoB,SAASvoB,KAAKT,GAAGoH,MAAM,KAAK2S,MAAM3S,MAAM,KAAKwjB,QAAQC,cAEvI,SAASC,EAAYplB,GACjB,OAAOA,EAAIolB,cAef,SAASC,EAAUC,GACf,IAAIC,EAAU,WAEVC,EAAU,QAEVC,EAAWf,EAAMc,EAAS,YAI1BE,EAAeV,EAAOA,EAAO,UAAYS,EAAW,IAAMA,EAAWA,EAAW,IAAMA,EAAWA,GAAY,IAAMT,EAAO,cAAgBS,EAAW,IAAMA,EAAWA,GAAY,IAAMT,EAAO,IAAMS,EAAWA,IAGhNE,EAAe,sCACfC,EAAalB,EAFF,0BAEsBiB,GAGrCE,EAAaP,EAAQ,oBAAsB,KAE3CQ,EAAepB,EAAMa,EAASC,EAAS,iBAJvBF,EAAQ,8EAAgF,MAKpGS,EAAUf,EAAOO,EAAUb,EAAMa,EAASC,EAAS,eAAiB,KACpEQ,EAAYhB,EAAOA,EAAOU,EAAe,IAAMhB,EAAMoB,EAAcH,EAAc,UAAY,KAE7FM,GADajB,EAAOA,8DAAuIQ,GACtIR,EAAOA,oEAA6IQ,IAE7KU,EAAelB,EAAOiB,EAAqB,MAAQA,EAAqB,MAAQA,EAAqB,MAAQA,GACzGE,EAAOnB,EAAOS,EAAW,SACzBW,EAAQpB,EAAOA,EAAOmB,EAAO,MAAQA,GAAQ,IAAMD,GACnDG,EAAgBrB,EAAOA,EAAOmB,EAAO,OAAS,MAAQC,GAE1DE,EAAgBtB,EAAO,SAAWA,EAAOmB,EAAO,OAAS,MAAQC,GAEjEG,EAAgBvB,EAAOA,EAAOmB,GAAQ,UAAYnB,EAAOmB,EAAO,OAAS,MAAQC,GAEjFI,EAAgBxB,EAAOA,EAAOA,EAAOmB,EAAO,OAAS,QAAUA,GAAQ,UAAYnB,EAAOmB,EAAO,OAAS,MAAQC,GAElHK,EAAgBzB,EAAOA,EAAOA,EAAOmB,EAAO,OAAS,QAAUA,GAAQ,UAAYnB,EAAOmB,EAAO,OAAS,MAAQC,GAElHM,EAAgB1B,EAAOA,EAAOA,EAAOmB,EAAO,OAAS,QAAUA,GAAQ,UAAYA,EAAO,MAAQC,GAElGO,EAAgB3B,EAAOA,EAAOA,EAAOmB,EAAO,OAAS,QAAUA,GAAQ,UAAYC,GAEnFQ,EAAgB5B,EAAOA,EAAOA,EAAOmB,EAAO,OAAS,QAAUA,GAAQ,UAAYA,GAEnFU,EAAgB7B,EAAOA,EAAOA,EAAOmB,EAAO,OAAS,QAAUA,GAAQ,WAEvEW,EAAe9B,EAAO,CAACqB,EAAeC,EAAeC,EAAeC,EAAeC,EAAeC,EAAeC,EAAeC,EAAeC,GAAetf,KAAK,MAC/Jwf,EAAU/B,EAAOA,EAAOc,EAAe,IAAMJ,GAAgB,KAIjEsB,GAFahC,EAAO8B,EAAe,QAAUC,GAExB/B,EAAO8B,EAAe9B,EAAO,eAAiBS,EAAW,QAAUsB,IAExFE,EAAajC,EAAO,OAASS,EAAW,OAASf,EAAMoB,EAAcH,EAAc,SAAW,KAC1FuB,EAAclC,EAAO,MAAQA,EAAOgC,EAAqB,IAAMF,EAAe,IAAMG,GAAc,OAEtGE,EAAYnC,EAAOA,EAAOU,EAAe,IAAMhB,EAAMoB,EAAcH,IAAiB,KAChFyB,EAAQpC,EAAOkC,EAAc,IAAMhB,EAAe,MAAQiB,EAAY,KAAYA,GAClFE,EAAQrC,EAAOQ,EAAU,KACzB8B,EAAatC,EAAOA,EAAOgB,EAAY,KAAO,IAAMoB,EAAQpC,EAAO,MAAQqC,GAAS,KACpFE,EAASvC,EAAOU,EAAe,IAAMhB,EAAMoB,EAAcH,EAAc,aACvE6B,EAAWxC,EAAOuC,EAAS,KAC3BE,EAAczC,EAAOuC,EAAS,KAC9BG,EAAiB1C,EAAOA,EAAOU,EAAe,IAAMhB,EAAMoB,EAAcH,EAAc,UAAY,KAClGgC,EAAgB3C,EAAOA,EAAO,MAAQwC,GAAY,KAClDI,EAAiB5C,EAAO,MAAQA,EAAOyC,EAAcE,GAAiB,KAE1EE,EAAiB7C,EAAO0C,EAAiBC,GAEzCG,EAAiB9C,EAAOyC,EAAcE,GAEtCI,EAAc,MAAQR,EAAS,IAE3BS,GADQhD,EAAO2C,EAAgB,IAAMC,EAAiB,IAAMC,EAAiB,IAAMC,EAAiB,IAAMC,GACjG/C,EAAOA,EAAOuC,EAAS,IAAM7C,EAAM,WAAYmB,IAAe,MACvEoC,EAAYjD,EAAOA,EAAOuC,EAAS,aAAe,KAClDW,EAAalD,EAAOA,EAAO,SAAWsC,EAAaK,GAAiB,IAAMC,EAAiB,IAAME,EAAiB,IAAMC,GACxHI,EAAOnD,EAAOe,EAAU,MAAQmC,EAAalD,EAAO,MAAQgD,GAAU,IAAMhD,EAAO,MAAQiD,GAAa,KACxGG,EAAiBpD,EAAOA,EAAO,SAAWsC,EAAaK,GAAiB,IAAMC,EAAiB,IAAMC,EAAiB,IAAME,GAC5HM,EAAYrD,EAAOoD,EAAiBpD,EAAO,MAAQgD,GAAU,IAAMhD,EAAO,MAAQiD,GAAa,KAC9EjD,EAAOmD,EAAO,IAAME,GACrBrD,EAAOe,EAAU,MAAQmC,EAAalD,EAAO,MAAQgD,GAAU,KACtChD,EAAOA,EAAO,UAAYA,EAAO,IAAMgB,EAAY,MAAQ,KAAOoB,EAAQ,IAAMpC,EAAO,OAASqC,EAAQ,KAAO,MAAQ,KAAOM,EAAgB,IAAMC,EAAiB,IAAME,EAAiB,IAAMC,EAAc,KAAO/C,EAAO,OAASgD,EAAS,KAAahD,EAAO,OAASiD,EAAY,KACvSjD,EAAOA,EAAO,UAAYA,EAAO,IAAMgB,EAAY,MAAQ,KAAOoB,EAAQ,IAAMpC,EAAO,OAASqC,EAAQ,KAAO,MAAQ,KAAOM,EAAgB,IAAMC,EAAiB,IAAMC,EAAiB,IAAME,EAAc,KAAO/C,EAAO,OAASgD,EAAS,KAAahD,EAAO,OAASiD,EAAY,KAC1QjD,EAAOA,EAAO,UAAYA,EAAO,IAAMgB,EAAY,MAAQ,KAAOoB,EAAQ,IAAMpC,EAAO,OAASqC,EAAQ,KAAO,MAAQ,KAAOM,EAAgB,IAAMC,EAAiB,IAAME,EAAiB,IAAMC,EAAc,KAAO/C,EAAO,OAASgD,EAAS,KACrQhD,EAAO,OAASiD,EAAY,KAC1BjD,EAAO,IAAMgB,EAAY,MAA6BhB,EAAO,OAASqC,EAAQ,KACzG,MAAO,CACHiB,WAAY,IAAIvmB,OAAO2iB,EAAM,MAAOa,EAASC,EAAS,eAAgB,KACtE+C,aAAc,IAAIxmB,OAAO2iB,EAAM,YAAaoB,EAAcH,GAAe,KACzE6C,SAAU,IAAIzmB,OAAO2iB,EAAM,kBAAmBoB,EAAcH,GAAe,KAC3E8C,SAAU,IAAI1mB,OAAO2iB,EAAM,kBAAmBoB,EAAcH,GAAe,KAC3E+C,kBAAmB,IAAI3mB,OAAO2iB,EAAM,eAAgBoB,EAAcH,GAAe,KACjFgD,UAAW,IAAI5mB,OAAO2iB,EAAM,SAAUoB,EAAcH,EAAc,iBAAkBE,GAAa,KACjG+C,aAAc,IAAI7mB,OAAO2iB,EAAM,SAAUoB,EAAcH,EAAc,kBAAmB,KACxFkD,OAAQ,IAAI9mB,OAAO2iB,EAAM,MAAOoB,EAAcH,GAAe,KAC7DmD,WAAY,IAAI/mB,OAAO+jB,EAAc,KACrCiD,YAAa,IAAIhnB,OAAO2iB,EAAM,SAAUoB,EAAcF,GAAa,KACnEoD,YAAa,IAAIjnB,OAAO2jB,EAAc,KACtCuD,YAAa,IAAIlnB,OAAO,KAAOmkB,EAAe,MAC9CgD,YAAa,IAAInnB,OAAO,SAAW+kB,EAAe,IAAM9B,EAAOA,EAAO,eAAiBS,EAAW,QAAU,IAAMsB,EAAU,KAAO,WAG3I,IAAIoC,EAAe9D,GAAU,GAEzB+D,EAAe/D,GAAU,GAEzBgE,EA2BK,SAAU7lB,EAAKjJ,GACpB,GAAI6P,MAAMC,QAAQ7G,GAChB,OAAOA,EACF,GAAI8lB,OAAOC,YAAYhrB,OAAOiF,GACnC,OA9BJ,SAAuBA,EAAKjJ,GAC1B,IAAIivB,EAAO,GACPC,GAAK,EACLC,GAAK,EACLC,OAAKvtB,EAET,IACE,IAAK,IAAiCwtB,EAA7BC,EAAKrmB,EAAI8lB,OAAOC,cAAmBE,GAAMG,EAAKC,EAAGC,QAAQC,QAChEP,EAAKzd,KAAK6d,EAAGruB,QAEThB,GAAKivB,EAAKxuB,SAAWT,GAH8CkvB,GAAK,IAK9E,MAAOO,GACPN,GAAK,EACLC,EAAKK,EACL,QACA,KACOP,GAAMI,EAAW,QAAGA,EAAW,SACpC,QACA,GAAIH,EAAI,MAAMC,GAIlB,OAAOH,EAOES,CAAczmB,EAAKjJ,GAE1B,MAAM,IAAIupB,UAAU,yDA6BtBoG,EAAS,WAaTC,EAAgB,QAChBC,EAAgB,aAChBC,EAAkB,4BAGlB1rB,EAAS,CACZ2rB,SAAY,kDACZC,YAAa,iDACbC,gBAAiB,iBAKdC,EAAQlW,KAAKkW,MACbC,EAAqBC,OAAOC,aAUhC,SAASC,EAAQ3f,GAChB,MAAM,IAAI4f,WAAWnsB,EAAOuM,IA8B7B,SAAS6f,EAAUC,EAAQC,GAC1B,IAAIphB,EAAQmhB,EAAOtpB,MAAM,KACrBiD,EAAS,GAWb,OAVmB,EAAfkF,EAAM7O,SAGT2J,EAASkF,EAAM,GAAK,IACpBmhB,EAASnhB,EAAM,IAMTlF,EAhCR,SAAa6I,EAAOyd,GAGnB,IAFA,IAAItmB,EAAS,GACT3J,EAASwS,EAAMxS,OACZA,KACN2J,EAAO3J,GAAUiwB,EAAGzd,EAAMxS,IAE3B,OAAO2J,EAyBOiH,EAFdof,EAASA,EAAOpgB,QAAQyf,EAAiB,MACrB3oB,MAAM,KACAupB,GAAI1jB,KAAK,KAiBpC,SAAS2jB,EAAWF,GAInB,IAHA,IAAIG,EAAS,GACTC,EAAU,EACVpwB,EAASgwB,EAAOhwB,OACbowB,EAAUpwB,GAAQ,CACxB,IAAIO,EAAQyvB,EAAOre,WAAWye,KAC9B,GAAa,OAAT7vB,GAAmBA,GAAS,OAAU6vB,EAAUpwB,EAAQ,CAE3D,IAAIqwB,EAAQL,EAAOre,WAAWye,KACN,QAAX,MAARC,GAEJF,EAAOpf,OAAe,KAARxQ,IAAkB,KAAe,KAAR8vB,GAAiB,QAIxDF,EAAOpf,KAAKxQ,GACZ6vB,UAGDD,EAAOpf,KAAKxQ,GAGd,OAAO4vB,EAgDW,SAAfG,EAAqCC,EAAOC,GAG/C,OAAOD,EAAQ,GAAK,IAAMA,EAAQ,MAAgB,GAARC,IAAc,GAQ7C,SAARC,EAAuBC,EAAOC,EAAWC,GAC5C,IAAI9f,EAAI,EAGR,IAFA4f,EAAQE,EAAYnB,EAAMiB,EA7KhB,KA6KgCA,GAAS,EACnDA,GAASjB,EAAMiB,EAAQC,GACeE,IAARH,EAAmC5f,GAnLvD,GAoLT4f,EAAQjB,EAAMiB,EA9JII,IAgKnB,OAAOrB,EAAM3e,EAAI,GAAsB4f,GAASA,EAnLtC,KA6LE,SAATK,EAAyBC,GAE5B,IAtDwCC,EAsDpCd,EAAS,GACTe,EAAcF,EAAMhxB,OACpBT,EAAI,EACJH,EA/LU,IAgMV+xB,EAjMa,GAuMbC,EAAQJ,EAAMK,YArMH,KAsMXD,EAAQ,IACXA,EAAQ,GAGT,IAAK,IAAI3a,EAAI,EAAGA,EAAI2a,IAAS3a,EAED,KAAvBua,EAAMrf,WAAW8E,IACpBoZ,EAAQ,aAETM,EAAOpf,KAAKigB,EAAMrf,WAAW8E,IAM9B,IAAK,IAAI/O,EAAgB,EAAR0pB,EAAYA,EAAQ,EAAI,EAAG1pB,EAAQwpB,GAAuC,CAQ1F,IADA,IAAII,EAAO/xB,EACFgyB,EAAI,EAAGzgB,EApOP,IAoOoCA,GApOpC,GAoO+C,CAE1CogB,GAATxpB,GACHmoB,EAAQ,iBAGT,IAAIU,GA9FkCU,EA8FbD,EAAMrf,WAAWjK,MA7F5B,GAAO,GACfupB,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GApJV,IAAA,IA4OJV,GAAiBA,EAAQd,GAAOP,EAAS3vB,GAAKgyB,KACjD1B,EAAQ,YAGTtwB,GAAKgxB,EAAQgB,EACb,IAAIlyB,EAAIyR,GAAKqgB,EAhPL,EAgPwBA,EA/OxB,IA+OmBrgB,EA/OnB,GA+O6CA,EAAIqgB,EAEzD,GAAIZ,EAAQlxB,EACX,MAGD,IAAImyB,EAvPI,GAuPgBnyB,EACpBkyB,EAAI9B,EAAMP,EAASsC,IACtB3B,EAAQ,YAGT0B,GAAKC,EAGN,IAAIje,EAAM4c,EAAOnwB,OAAS,EAC1BmxB,EAAOV,EAAMlxB,EAAI+xB,EAAM/d,EAAa,GAAR+d,GAIxB7B,EAAMlwB,EAAIgU,GAAO2b,EAAS9vB,GAC7BywB,EAAQ,YAGTzwB,GAAKqwB,EAAMlwB,EAAIgU,GACfhU,GAAKgU,EAGL4c,EAAOpoB,OAAOxI,IAAK,EAAGH,GAGvB,OAAOuwB,OAAO8B,cAAc7nB,MAAM+lB,OAAQQ,GAU9B,SAATuB,EAAyBV,GAC5B,IAAIb,EAAS,GAMTe,GAHJF,EAAQd,EAAWc,IAGKhxB,OAGpBZ,EA7RU,IA8RVsxB,EAAQ,EACRS,EAhSa,GAmSbQ,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiBzwB,EAErB,IACC,IAAK,IAA0C0wB,EAAtCC,EAAYf,EAAM1C,OAAOC,cAAsBoD,GAA6BG,EAAQC,EAAUjD,QAAQC,MAAO4C,GAA4B,EAAM,CACvJ,IAAIK,EAAiBF,EAAMvxB,MAEvByxB,EAAiB,KACpB7B,EAAOpf,KAAK2e,EAAmBsC,KAGhC,MAAOhD,GACR4C,GAAoB,EACpBC,EAAiB7C,EAChB,QACD,KACM2C,GAA6BI,EAAUE,QAC3CF,EAAUE,SAEV,QACD,GAAIL,EACH,MAAMC,GAKT,IAAIK,EAAc/B,EAAOnwB,OACrBmyB,EAAiBD,EAWrB,IALIA,GACH/B,EAAOpf,KApUO,KAwURohB,EAAiBjB,GAAa,CAIpC,IAAIkB,EAAIlD,EACJmD,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBnxB,EAEtB,IACC,IAAK,IAA2CoxB,EAAvCC,EAAazB,EAAM1C,OAAOC,cAAuB8D,GAA8BG,EAASC,EAAW3D,QAAQC,MAAOsD,GAA6B,EAAM,CAC7J,IAAIK,EAAeF,EAAOjyB,MAENnB,GAAhBszB,GAAqBA,EAAeN,IACvCA,EAAIM,IAML,MAAO1D,GACRsD,GAAqB,EACrBC,EAAkBvD,EACjB,QACD,KACMqD,GAA8BI,EAAWR,QAC7CQ,EAAWR,SAEX,QACD,GAAIK,EACH,MAAMC,GAKT,IAAII,EAAwBR,EAAiB,EACzCC,EAAIhzB,EAAIqwB,GAAOP,EAASwB,GAASiC,IACpC9C,EAAQ,YAGTa,IAAU0B,EAAIhzB,GAAKuzB,EACnBvzB,EAAIgzB,EAEJ,IAAIQ,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkB1xB,EAEtB,IACC,IAAK,IAA2C2xB,EAAvCC,EAAahC,EAAM1C,OAAOC,cAAuBqE,GAA8BG,EAASC,EAAWlE,QAAQC,MAAO6D,GAA6B,EAAM,CAC7J,IAAIK,EAAgBF,EAAOxyB,MAK3B,GAHI0yB,EAAgB7zB,KAAOsxB,EAAQxB,GAClCW,EAAQ,YAELoD,GAAiB7zB,EAAG,CAGvB,IADA,IAAI8zB,EAAIxC,EACC5f,EAxYH,IAwYgCA,GAxYhC,GAwY2C,CAChD,IAAIzR,EAAIyR,GAAKqgB,EAxYR,EAwY2BA,EAvY3B,IAuYsBrgB,EAvYtB,GAuYgDA,EAAIqgB,EACzD,GAAI+B,EAAI7zB,EACP,MAED,IAAI8zB,EAAUD,EAAI7zB,EACdmyB,EA9YC,GA8YmBnyB,EACxB8wB,EAAOpf,KAAK2e,EAAmBY,EAAajxB,EAAI8zB,EAAU3B,EAAY,KACtE0B,EAAIzD,EAAM0D,EAAU3B,GAGrBrB,EAAOpf,KAAK2e,EAAmBY,EAAa4C,EAAG,KAC/C/B,EAAOV,EAAMC,EAAOiC,EAAuBR,GAAkBD,GAC7DxB,EAAQ,IACNyB,IAGH,MAAOnD,GACR6D,GAAqB,EACrBC,EAAkB9D,EACjB,QACD,KACM4D,GAA8BI,EAAWf,QAC7Ce,EAAWf,SAEX,QACD,GAAIY,EACH,MAAMC,KAKPpC,IACAtxB,EAEH,OAAO+wB,EAAO5jB,KAAK,IA5SpB,IAoVI6mB,EAAW,CAMdC,QAAW,QAQXC,KAAQ,CACPvC,OAAUb,EACVwB,OApWe,SAAoBlf,GACpC,OAAOmd,OAAO8B,cAAc7nB,MAAM+lB,OA/IX,SAAUnnB,GAChC,GAAI4G,MAAMC,QAAQ7G,GAAM,CACtB,IAAK,IAAIjJ,EAAI,EAAG6d,EAAOhO,MAAM5G,EAAIxI,QAAST,EAAIiJ,EAAIxI,OAAQT,IAAK6d,EAAK7d,GAAKiJ,EAAIjJ,GAE7E,OAAO6d,EAEP,OAAOhO,MAAMmkB,KAAK/qB,GAyIqBgrB,CAAkBhhB,MAqW5Due,OAAUA,EACVW,OAAUA,EACV+B,QA7Ba,SAAiBzC,GAC9B,OAAOjB,EAAUiB,EAAO,SAAUhB,GACjC,OAAOZ,EAAcvoB,KAAKmpB,GAAU,OAAS0B,EAAO1B,GAAUA,KA4B/D0D,UA/Ce,SAAmB1C,GAClC,OAAOjB,EAAUiB,EAAO,SAAUhB,GACjC,OAAOb,EAActoB,KAAKmpB,GAAUe,EAAOf,EAAOphB,MAAM,GAAGub,eAAiB6F,MAkF1E2D,EAAU,GACd,SAASC,EAAWC,GAChB,IAAIr0B,EAAIq0B,EAAIliB,WAAW,GAGvB,OADInS,EAAI,GAAQ,KAAOA,EAAE8oB,SAAS,IAAI8B,cAAuB5qB,EAAI,IAAS,IAAMA,EAAE8oB,SAAS,IAAI8B,cAAuB5qB,EAAI,KAAU,KAAOA,GAAK,EAAI,KAAK8oB,SAAS,IAAI8B,cAAgB,KAAW,GAAJ5qB,EAAS,KAAK8oB,SAAS,IAAI8B,cAAuB,KAAO5qB,GAAK,GAAK,KAAK8oB,SAAS,IAAI8B,cAAgB,KAAO5qB,GAAK,EAAI,GAAK,KAAK8oB,SAAS,IAAI8B,cAAgB,KAAW,GAAJ5qB,EAAS,KAAK8oB,SAAS,IAAI8B,cAG/X,SAAS0J,EAAY9uB,GAIjB,IAHA,IAAI+uB,EAAS,GACTx0B,EAAI,EACJy0B,EAAKhvB,EAAIhF,OACNT,EAAIy0B,GAAI,CACX,IAAIx0B,EAAIy0B,SAASjvB,EAAIkvB,OAAO30B,EAAI,EAAG,GAAI,IACvC,GAAIC,EAAI,IACJu0B,GAAUpE,OAAOC,aAAapwB,GAC9BD,GAAK,OACF,GAAS,KAALC,GAAYA,EAAI,IAAK,CAC5B,GAAc,GAAVw0B,EAAKz0B,EAAQ,CACb,IAAI40B,EAAKF,SAASjvB,EAAIkvB,OAAO30B,EAAI,EAAG,GAAI,IACxCw0B,GAAUpE,OAAOC,cAAkB,GAAJpwB,IAAW,EAAS,GAAL20B,QAE9CJ,GAAU/uB,EAAIkvB,OAAO30B,EAAG,GAE5BA,GAAK,OACF,GAAS,KAALC,EAAU,CACjB,GAAc,GAAVw0B,EAAKz0B,EAAQ,CACb,IAAI60B,EAAKH,SAASjvB,EAAIkvB,OAAO30B,EAAI,EAAG,GAAI,IACpC80B,EAAKJ,SAASjvB,EAAIkvB,OAAO30B,EAAI,EAAG,GAAI,IACxCw0B,GAAUpE,OAAOC,cAAkB,GAAJpwB,IAAW,IAAW,GAAL40B,IAAY,EAAS,GAALC,QAEhEN,GAAU/uB,EAAIkvB,OAAO30B,EAAG,GAE5BA,GAAK,OAELw0B,GAAU/uB,EAAIkvB,OAAO30B,EAAG,GACxBA,GAAK,EAGb,OAAOw0B,EAEX,SAASO,EAA4BC,EAAYC,GAC7C,SAASC,EAAiBzvB,GACtB,IAAI0vB,EAASZ,EAAY9uB,GACzB,OAAQ0vB,EAAOxvB,MAAMsvB,EAAS1G,YAAoB4G,EAAN1vB,EAQhD,OANIuvB,EAAWI,SAAQJ,EAAWI,OAAShF,OAAO4E,EAAWI,QAAQ/kB,QAAQ4kB,EAASxG,YAAayG,GAAkBtK,cAAcva,QAAQ4kB,EAASlH,WAAY,UACpIlsB,IAAxBmzB,EAAWK,WAAwBL,EAAWK,SAAWjF,OAAO4E,EAAWK,UAAUhlB,QAAQ4kB,EAASxG,YAAayG,GAAkB7kB,QAAQ4kB,EAASjH,aAAcqG,GAAYhkB,QAAQ4kB,EAASxG,YAAa5D,SAC1LhpB,IAApBmzB,EAAWM,OAAoBN,EAAWM,KAAOlF,OAAO4E,EAAWM,MAAMjlB,QAAQ4kB,EAASxG,YAAayG,GAAkBtK,cAAcva,QAAQ4kB,EAAShH,SAAUoG,GAAYhkB,QAAQ4kB,EAASxG,YAAa5D,SACxLhpB,IAApBmzB,EAAWtf,OAAoBsf,EAAWtf,KAAO0a,OAAO4E,EAAWtf,MAAMrF,QAAQ4kB,EAASxG,YAAayG,GAAkB7kB,QAAQ2kB,EAAWI,OAASH,EAAS/G,SAAW+G,EAAS9G,kBAAmBkG,GAAYhkB,QAAQ4kB,EAASxG,YAAa5D,SAC1NhpB,IAArBmzB,EAAWO,QAAqBP,EAAWO,MAAQnF,OAAO4E,EAAWO,OAAOllB,QAAQ4kB,EAASxG,YAAayG,GAAkB7kB,QAAQ4kB,EAAS7G,UAAWiG,GAAYhkB,QAAQ4kB,EAASxG,YAAa5D,SAC1KhpB,IAAxBmzB,EAAW5lB,WAAwB4lB,EAAW5lB,SAAWghB,OAAO4E,EAAW5lB,UAAUiB,QAAQ4kB,EAASxG,YAAayG,GAAkB7kB,QAAQ4kB,EAAS5G,aAAcgG,GAAYhkB,QAAQ4kB,EAASxG,YAAa5D,IAC3MmK,EAGX,SAASQ,EAAmB/vB,GACxB,OAAOA,EAAI4K,QAAQ,UAAW,OAAS,IAE3C,SAASolB,EAAeH,EAAML,GAC1B,IAAIvvB,EAAU4vB,EAAK3vB,MAAMsvB,EAASvG,cAAgB,GAG9CgH,EADW5G,EAAcppB,EAAS,GACf,GAEvB,OAAIgwB,EACOA,EAAQvuB,MAAM,KAAKkK,IAAImkB,GAAoBxoB,KAAK,KAEhDsoB,EAGf,SAASK,EAAeL,EAAML,GAC1B,IAAIvvB,EAAU4vB,EAAK3vB,MAAMsvB,EAAStG,cAAgB,GAE9CiH,EAAY9G,EAAcppB,EAAS,GACnCgwB,EAAUE,EAAU,GACpBC,EAAOD,EAAU,GAErB,GAAIF,EAAS,CAYT,IAXA,IAAII,EAAwBJ,EAAQ9K,cAAczjB,MAAM,MAAM4uB,UAC1DC,EAAyBlH,EAAcgH,EAAuB,GAC9DG,EAAOD,EAAuB,GAC9BE,EAAQF,EAAuB,GAE/BG,EAAcD,EAAQA,EAAM/uB,MAAM,KAAKkK,IAAImkB,GAAsB,GACjEY,EAAaH,EAAK9uB,MAAM,KAAKkK,IAAImkB,GACjCa,EAAyBpB,EAASvG,YAAYpnB,KAAK8uB,EAAWA,EAAW31B,OAAS,IAClF61B,EAAaD,EAAyB,EAAI,EAC1CE,EAAkBH,EAAW31B,OAAS61B,EACtCE,EAAS3mB,MAAMymB,GACV9L,EAAI,EAAGA,EAAI8L,IAAc9L,EAC9BgM,EAAOhM,GAAK2L,EAAY3L,IAAM4L,EAAWG,EAAkB/L,IAAM,GAEjE6L,IACAG,EAAOF,EAAa,GAAKb,EAAee,EAAOF,EAAa,GAAIrB,IAEpE,IAWIwB,EAXgBD,EAAOE,OAAO,SAAUC,EAAKC,EAAOzuB,GACpD,IAAKyuB,GAAmB,MAAVA,EAAe,CACzB,IAAIC,EAAcF,EAAIA,EAAIl2B,OAAS,GAC/Bo2B,GAAeA,EAAY1uB,MAAQ0uB,EAAYp2B,SAAW0H,EAC1D0uB,EAAYp2B,SAEZk2B,EAAInlB,KAAK,CAAErJ,MAAOA,EAAO1H,OAAQ,IAGzC,OAAOk2B,GACR,IACmClN,KAAK,SAAUrpB,EAAGsW,GACpD,OAAOA,EAAEjW,OAASL,EAAEK,SACrB,GACCq2B,OAAU,EACd,GAAIL,GAAgD,EAA3BA,EAAkBh2B,OAAY,CACnD,IAAIs2B,EAAWP,EAAOnnB,MAAM,EAAGonB,EAAkBtuB,OAC7C6uB,EAAUR,EAAOnnB,MAAMonB,EAAkBtuB,MAAQsuB,EAAkBh2B,QACvEq2B,EAAUC,EAAS/pB,KAAK,KAAO,KAAOgqB,EAAQhqB,KAAK,UAEnD8pB,EAAUN,EAAOxpB,KAAK,KAK1B,OAHI6oB,IACAiB,GAAW,IAAMjB,GAEdiB,EAEP,OAAOxB,EAGf,IAAI2B,EAAY,kIACZC,OAAiDr1B,IAAzB,GAAG8D,MAAM,SAAS,GAC9C,SAASiI,EAAMupB,GACX,IAAIC,EAA6B,EAAnB9sB,UAAU7J,aAA+BoB,IAAjByI,UAAU,GAAmBA,UAAU,GAAK,GAE9E0qB,EAAa,GACbC,GAA2B,IAAhBmC,EAAQC,IAAgBxI,EAAeD,EAC5B,WAAtBwI,EAAQE,YAAwBH,GAAaC,EAAQhC,OAASgC,EAAQhC,OAAS,IAAM,IAAM,KAAO+B,GACtG,IAAIzxB,EAAUyxB,EAAUxxB,MAAMsxB,GAC9B,GAAIvxB,EAAS,CACLwxB,GAEAlC,EAAWI,OAAS1vB,EAAQ,GAC5BsvB,EAAWK,SAAW3vB,EAAQ,GAC9BsvB,EAAWM,KAAO5vB,EAAQ,GAC1BsvB,EAAWuC,KAAO7C,SAAShvB,EAAQ,GAAI,IACvCsvB,EAAWtf,KAAOhQ,EAAQ,IAAM,GAChCsvB,EAAWO,MAAQ7vB,EAAQ,GAC3BsvB,EAAW5lB,SAAW1J,EAAQ,GAE1B8xB,MAAMxC,EAAWuC,QACjBvC,EAAWuC,KAAO7xB,EAAQ,MAK9BsvB,EAAWI,OAAS1vB,EAAQ,SAAM7D,EAClCmzB,EAAWK,UAAuC,IAA5B8B,EAAUvY,QAAQ,KAAclZ,EAAQ,QAAK7D,EACnEmzB,EAAWM,MAAoC,IAA7B6B,EAAUvY,QAAQ,MAAelZ,EAAQ,QAAK7D,EAChEmzB,EAAWuC,KAAO7C,SAAShvB,EAAQ,GAAI,IACvCsvB,EAAWtf,KAAOhQ,EAAQ,IAAM,GAChCsvB,EAAWO,OAAoC,IAA5B4B,EAAUvY,QAAQ,KAAclZ,EAAQ,QAAK7D,EAChEmzB,EAAW5lB,UAAuC,IAA5B+nB,EAAUvY,QAAQ,KAAclZ,EAAQ,QAAK7D,EAE/D21B,MAAMxC,EAAWuC,QACjBvC,EAAWuC,KAAOJ,EAAUxxB,MAAM,iCAAmCD,EAAQ,QAAK7D,IAGtFmzB,EAAWM,OAEXN,EAAWM,KAAOK,EAAeF,EAAeT,EAAWM,KAAML,GAAWA,IAM5ED,EAAWsC,eAHWz1B,IAAtBmzB,EAAWI,aAAgDvzB,IAAxBmzB,EAAWK,eAA8CxzB,IAApBmzB,EAAWM,WAA0CzzB,IAApBmzB,EAAWuC,MAAuBvC,EAAWtf,WAA6B7T,IAArBmzB,EAAWO,WAE5I1zB,IAAtBmzB,EAAWI,OACK,gBACQvzB,IAAxBmzB,EAAW5lB,SACK,WAEA,MANA,gBASvBgoB,EAAQE,WAAmC,WAAtBF,EAAQE,WAA0BF,EAAQE,YAActC,EAAWsC,YACxFtC,EAAW1pB,MAAQ0pB,EAAW1pB,OAAS,gBAAkB8rB,EAAQE,UAAY,eAGjF,IAAIG,EAAgBrD,GAASgD,EAAQhC,QAAUJ,EAAWI,QAAU,IAAIxK,eAExE,GAAKwM,EAAQM,gBAAoBD,GAAkBA,EAAcC,eAc7D3C,EAA4BC,EAAYC,OAdsC,CAE9E,GAAID,EAAWM,OAAS8B,EAAQO,YAAcF,GAAiBA,EAAcE,YAEzE,IACI3C,EAAWM,KAAOzB,EAASK,QAAQc,EAAWM,KAAKjlB,QAAQ4kB,EAASxG,YAAa8F,GAAa3J,eAChG,MAAOhrB,GACLo1B,EAAW1pB,MAAQ0pB,EAAW1pB,OAAS,kEAAoE1L,EAInHm1B,EAA4BC,EAAYpG,GAMxC6I,GAAiBA,EAAc7pB,OAC/B6pB,EAAc7pB,MAAMonB,EAAYoC,QAGpCpC,EAAW1pB,MAAQ0pB,EAAW1pB,OAAS,yBAE3C,OAAO0pB,EAuBX,IAAI4C,EAAO,WACPC,EAAO,cACPC,EAAO,gBACPC,EAAO,yBACX,SAASC,EAAkBvG,GAEvB,IADA,IAAIb,EAAS,GACNa,EAAMhxB,QACT,GAAIgxB,EAAM9rB,MAAMiyB,GACZnG,EAAQA,EAAMphB,QAAQunB,EAAM,SACzB,GAAInG,EAAM9rB,MAAMkyB,GACnBpG,EAAQA,EAAMphB,QAAQwnB,EAAM,UACzB,GAAIpG,EAAM9rB,MAAMmyB,GACnBrG,EAAQA,EAAMphB,QAAQynB,EAAM,KAC5BlH,EAAO9W,WACJ,GAAc,MAAV2X,GAA2B,OAAVA,EACxBA,EAAQ,OACL,CACH,IAAIwG,EAAKxG,EAAM9rB,MAAMoyB,GACrB,IAAIE,EAKA,MAAM,IAAI53B,MAAM,oCAJhB,IAAI63B,EAAID,EAAG,GACXxG,EAAQA,EAAMpiB,MAAM6oB,EAAEz3B,QACtBmwB,EAAOpf,KAAK0mB,GAMxB,OAAOtH,EAAO5jB,KAAK,IAGvB,SAASmD,EAAU6kB,GACf,IAAIoC,EAA6B,EAAnB9sB,UAAU7J,aAA+BoB,IAAjByI,UAAU,GAAmBA,UAAU,GAAK,GAE9E2qB,EAAWmC,EAAQC,IAAMxI,EAAeD,EACxCuJ,EAAY,GAEZV,EAAgBrD,GAASgD,EAAQhC,QAAUJ,EAAWI,QAAU,IAAIxK,eAGxE,GADI6M,GAAiBA,EAActnB,WAAWsnB,EAActnB,UAAU6kB,EAAYoC,GAC9EpC,EAAWM,OAEPL,EAAStG,YAAYrnB,KAAK0tB,EAAWM,QAIhC8B,EAAQO,YAAcF,GAAiBA,EAAcE,YAEtD,IACI3C,EAAWM,KAAQ8B,EAAQC,IAAmGxD,EAASM,UAAUa,EAAWM,MAA3HzB,EAASK,QAAQc,EAAWM,KAAKjlB,QAAQ4kB,EAASxG,YAAa8F,GAAa3J,eAC/G,MAAOhrB,GACLo1B,EAAW1pB,MAAQ0pB,EAAW1pB,OAAS,+CAAkD8rB,EAAQC,IAAgB,UAAV,SAAuB,kBAAoBz3B,EAKlKm1B,EAA4BC,EAAYC,GACd,WAAtBmC,EAAQE,WAA0BtC,EAAWI,SAC7C+C,EAAU3mB,KAAKwjB,EAAWI,QAC1B+C,EAAU3mB,KAAK,MAEnB,IAhFyBwjB,EACrBC,EACAkD,EA8EAC,GA/EAnD,GAA2B,IA+EiBmC,EA/EzBC,IAAgBxI,EAAeD,EAClDuJ,EAAY,QACYt2B,KAHHmzB,EAgFWA,GA7ErBK,WACX8C,EAAU3mB,KAAKwjB,EAAWK,UAC1B8C,EAAU3mB,KAAK,WAEK3P,IAApBmzB,EAAWM,MAEX6C,EAAU3mB,KAAKmkB,EAAeF,EAAerF,OAAO4E,EAAWM,MAAOL,GAAWA,GAAU5kB,QAAQ4kB,EAAStG,YAAa,SAAU0J,EAAGC,EAAIC,GACtI,MAAO,IAAMD,GAAMC,EAAK,MAAQA,EAAK,IAAM,OAGpB,iBAApBvD,EAAWuC,OAClBY,EAAU3mB,KAAK,KACf2mB,EAAU3mB,KAAKwjB,EAAWuC,KAAKxO,SAAS,MAErCoP,EAAU13B,OAAS03B,EAAUnrB,KAAK,SAAMnL,GAyE/C,QATkBA,IAAdu2B,IAC0B,WAAtBhB,EAAQE,WACRa,EAAU3mB,KAAK,MAEnB2mB,EAAU3mB,KAAK4mB,GACXpD,EAAWtf,MAAsC,MAA9Bsf,EAAWtf,KAAK8iB,OAAO,IAC1CL,EAAU3mB,KAAK,WAGC3P,IAApBmzB,EAAWtf,KAAoB,CAC/B,IAAIwiB,EAAIlD,EAAWtf,KACd0hB,EAAQqB,cAAkBhB,GAAkBA,EAAcgB,eAC3DP,EAAIF,EAAkBE,SAERr2B,IAAdu2B,IACAF,EAAIA,EAAE7nB,QAAQ,QAAS,SAE3B8nB,EAAU3mB,KAAK0mB,GAUnB,YARyBr2B,IAArBmzB,EAAWO,QACX4C,EAAU3mB,KAAK,KACf2mB,EAAU3mB,KAAKwjB,EAAWO,aAEF1zB,IAAxBmzB,EAAW5lB,WACX+oB,EAAU3mB,KAAK,KACf2mB,EAAU3mB,KAAKwjB,EAAW5lB,WAEvB+oB,EAAUnrB,KAAK,IAG1B,SAAS0rB,EAAkBnH,EAAMoH,GAC7B,IAAIvB,EAA6B,EAAnB9sB,UAAU7J,aAA+BoB,IAAjByI,UAAU,GAAmBA,UAAU,GAAK,GAG9EsuB,EAAS,GAqDb,OAvDwBtuB,UAAU,KAI9BinB,EAAO3jB,EAAMuC,EAAUohB,EAAM6F,GAAUA,GACvCuB,EAAW/qB,EAAMuC,EAAUwoB,EAAUvB,GAAUA,MAEnDA,EAAUA,GAAW,IACRyB,UAAYF,EAASvD,QAC9BwD,EAAOxD,OAASuD,EAASvD,OAEzBwD,EAAOvD,SAAWsD,EAAStD,SAC3BuD,EAAOtD,KAAOqD,EAASrD,KACvBsD,EAAOrB,KAAOoB,EAASpB,KACvBqB,EAAOljB,KAAOsiB,EAAkBW,EAASjjB,MAAQ,IACjDkjB,EAAOrD,MAAQoD,EAASpD,aAEE1zB,IAAtB82B,EAAStD,eAA4CxzB,IAAlB82B,EAASrD,WAAwCzzB,IAAlB82B,EAASpB,MAE3EqB,EAAOvD,SAAWsD,EAAStD,SAC3BuD,EAAOtD,KAAOqD,EAASrD,KACvBsD,EAAOrB,KAAOoB,EAASpB,KACvBqB,EAAOljB,KAAOsiB,EAAkBW,EAASjjB,MAAQ,IACjDkjB,EAAOrD,MAAQoD,EAASpD,QAEnBoD,EAASjjB,MAQsB,MAA5BijB,EAASjjB,KAAK8iB,OAAO,GACrBI,EAAOljB,KAAOsiB,EAAkBW,EAASjjB,OAOrCkjB,EAAOljB,UALY7T,IAAlB0vB,EAAK8D,eAAwCxzB,IAAd0vB,EAAK+D,WAAoCzzB,IAAd0vB,EAAKgG,MAAwBhG,EAAK7b,KAErF6b,EAAK7b,KAGC6b,EAAK7b,KAAKrG,MAAM,EAAGkiB,EAAK7b,KAAKoc,YAAY,KAAO,GAAK6G,EAASjjB,KAF9DijB,EAASjjB,KAFT,IAAMijB,EAASjjB,KAMjCkjB,EAAOljB,KAAOsiB,EAAkBY,EAAOljB,OAE3CkjB,EAAOrD,MAAQoD,EAASpD,QAnBxBqD,EAAOljB,KAAO6b,EAAK7b,KAEfkjB,EAAOrD,WADY1zB,IAAnB82B,EAASpD,MACMoD,EAASpD,MAEThE,EAAKgE,OAkB5BqD,EAAOvD,SAAW9D,EAAK8D,SACvBuD,EAAOtD,KAAO/D,EAAK+D,KACnBsD,EAAOrB,KAAOhG,EAAKgG,MAEvBqB,EAAOxD,OAAS7D,EAAK6D,QAEzBwD,EAAOxpB,SAAWupB,EAASvpB,SACpBwpB,EAmCX,SAASE,EAAkBrzB,EAAK2xB,GAC5B,OAAO3xB,GAAOA,EAAIsjB,WAAW1Y,QAAS+mB,GAAYA,EAAQC,IAAiCxI,EAAaJ,YAAxCG,EAAaH,YAAwC8F,GAGzH,IAAIwE,EAAU,CACV3D,OAAQ,OACRuC,YAAY,EACZ/pB,MAAO,SAAeonB,GAKlB,OAHKA,EAAWM,OACZN,EAAW1pB,MAAQ0pB,EAAW1pB,OAAS,+BAEpC0pB,GAEX7kB,UAAW,SAAmB6kB,GAY1B,OAVIA,EAAWuC,QAAsD,UAA5CnH,OAAO4E,EAAWI,QAAQxK,cAA4B,GAAK,MAA4B,KAApBoK,EAAWuC,OACnGvC,EAAWuC,UAAO11B,GAGjBmzB,EAAWtf,OACZsf,EAAWtf,KAAO,KAKfsf,IAIXgE,EAAY,CACZ5D,OAAQ,QACRuC,WAAYoB,EAAQpB,WACpB/pB,MAAOmrB,EAAQnrB,MACfuC,UAAW4oB,EAAQ5oB,WAGnB8oB,EAAI,GAGJ1N,EAAe,mGACfL,EAAW,cAeXgO,GAdezO,EAAOA,EAAO,UAAYS,EAAW,IAAMA,EAAWA,EAAW,IAAMA,EAAWA,GAAY,IAAMT,EAAO,cAAgBS,EAAW,IAAMA,EAAWA,GAAY,IAAMT,EAAO,IAAMS,EAAWA,IActMf,EADA,6DACe,cAEzBoE,EAAa,IAAI/mB,OAAO+jB,EAAc,KACtCkD,EAAc,IAAIjnB,OAjBHijB,yJAiBwB,KACvC0O,EAAiB,IAAI3xB,OAAO2iB,EAAM,MANxB,wDAMwC,QAAS,QAAS+O,GAAU,KAC9EE,EAAa,IAAI5xB,OAAO2iB,EAAM,MAAOoB,EAJrB,uCAImD,KACnE8N,EAAcD,EAClB,SAASlE,EAAiBzvB,GACtB,IAAI0vB,EAASZ,EAAY9uB,GACzB,OAAQ0vB,EAAOxvB,MAAM4oB,GAAoB4G,EAAN1vB,EAEvC,IAAI6zB,GAAY,CACZlE,OAAQ,SACRxnB,MAAO,SAAkBonB,EAAYoC,GACjC,IAAImC,EAAmBvE,EACnBliB,EAAKymB,EAAiBzmB,GAAKymB,EAAiB7jB,KAAO6jB,EAAiB7jB,KAAKvO,MAAM,KAAO,GAE1F,GADAoyB,EAAiB7jB,UAAO7T,EACpB03B,EAAiBhE,MAAO,CAIxB,IAHA,IAAIiE,GAAiB,EACjBC,EAAU,GACVC,EAAUH,EAAiBhE,MAAMpuB,MAAM,KAClCqjB,EAAI,EAAGD,EAAKmP,EAAQj5B,OAAQ+pB,EAAID,IAAMC,EAAG,CAC9C,IAAImP,EAASD,EAAQlP,GAAGrjB,MAAM,KAC9B,OAAQwyB,EAAO,IACX,IAAK,KAED,IADA,IAAIC,EAAUD,EAAO,GAAGxyB,MAAM,KACrB0yB,EAAK,EAAGC,EAAMF,EAAQn5B,OAAQo5B,EAAKC,IAAOD,EAC/C/mB,EAAGtB,KAAKooB,EAAQC,IAEpB,MACJ,IAAK,UACDN,EAAiBQ,QAAUjB,EAAkBa,EAAO,GAAIvC,GACxD,MACJ,IAAK,OACDmC,EAAiBS,KAAOlB,EAAkBa,EAAO,GAAIvC,GACrD,MACJ,QACIoC,GAAiB,EACjBC,EAAQX,EAAkBa,EAAO,GAAIvC,IAAY0B,EAAkBa,EAAO,GAAIvC,IAItFoC,IAAgBD,EAAiBE,QAAUA,GAEnDF,EAAiBhE,WAAQ1zB,EACzB,IAAK,IAAIo4B,EAAM,EAAGC,EAAOpnB,EAAGrS,OAAQw5B,EAAMC,IAAQD,EAAK,CACnD,IAAIE,EAAOrnB,EAAGmnB,GAAK9yB,MAAM,KAEzB,GADAgzB,EAAK,GAAKrB,EAAkBqB,EAAK,IAC5B/C,EAAQM,eAQTyC,EAAK,GAAKrB,EAAkBqB,EAAK,GAAI/C,GAASxM,mBAN9C,IACIuP,EAAK,GAAKtG,EAASK,QAAQ4E,EAAkBqB,EAAK,GAAI/C,GAASxM,eACjE,MAAOhrB,GACL25B,EAAiBjuB,MAAQiuB,EAAiBjuB,OAAS,2EAA6E1L,EAKxIkT,EAAGmnB,GAAOE,EAAKntB,KAAK,KAExB,OAAOusB,GAEXppB,UAAW,SAAsBopB,EAAkBnC,GAC/C,IAvtCSplB,EAutCLgjB,EAAauE,EACbzmB,EAvtCDd,OADMA,EAwtCQunB,EAAiBzmB,IAvtCKd,aAAenC,MAAQmC,EAA4B,iBAAfA,EAAIvR,QAAuBuR,EAAI7K,OAAS6K,EAAIooB,aAAepoB,EAAIxR,KAAO,CAACwR,GAAOnC,MAAMhP,UAAUwO,MAAM7O,KAAKwR,GAAO,GAwtC3L,GAAIc,EAAI,CACJ,IAAK,IAAI0X,EAAI,EAAGD,EAAKzX,EAAGrS,OAAQ+pB,EAAID,IAAMC,EAAG,CACzC,IAAI6P,EAASjK,OAAOtd,EAAG0X,IACnB8P,EAAQD,EAAOvI,YAAY,KAC3ByI,EAAYF,EAAOhrB,MAAM,EAAGirB,GAAOjqB,QAAQoe,EAAayG,GAAkB7kB,QAAQoe,EAAa5D,GAAaxa,QAAQ8oB,EAAgB9E,GACpImG,EAASH,EAAOhrB,MAAMirB,EAAQ,GAElC,IACIE,EAAUpD,EAAQC,IAA2ExD,EAASM,UAAUqG,GAAxF3G,EAASK,QAAQ4E,EAAkB0B,EAAQpD,GAASxM,eAC9E,MAAOhrB,GACLo1B,EAAW1pB,MAAQ0pB,EAAW1pB,OAAS,wDAA2D8rB,EAAQC,IAAgB,UAAV,SAAuB,kBAAoBz3B,EAE/JkT,EAAG0X,GAAK+P,EAAY,IAAMC,EAE9BxF,EAAWtf,KAAO5C,EAAG9F,KAAK,KAE9B,IAAIysB,EAAUF,EAAiBE,QAAUF,EAAiBE,SAAW,GACjEF,EAAiBQ,UAASN,EAAiB,QAAIF,EAAiBQ,SAChER,EAAiBS,OAAMP,EAAc,KAAIF,EAAiBS,MAC9D,IAAIxD,EAAS,GACb,IAAK,IAAIiE,KAAQhB,EACTA,EAAQgB,KAAUxB,EAAEwB,IACpBjE,EAAOhlB,KAAKipB,EAAKpqB,QAAQoe,EAAayG,GAAkB7kB,QAAQoe,EAAa5D,GAAaxa,QAAQ+oB,EAAY/E,GAAc,IAAMoF,EAAQgB,GAAMpqB,QAAQoe,EAAayG,GAAkB7kB,QAAQoe,EAAa5D,GAAaxa,QAAQgpB,EAAahF,IAMtP,OAHImC,EAAO/1B,SACPu0B,EAAWO,MAAQiB,EAAOxpB,KAAK,MAE5BgoB,IAIX0F,GAAY,kBAEZC,GAAY,CACZvF,OAAQ,MACRxnB,MAAO,SAAkBonB,EAAYoC,GACjC,IAAI1xB,EAAUsvB,EAAWtf,MAAQsf,EAAWtf,KAAK/P,MAAM+0B,IACnDE,EAAgB5F,EACpB,GAAItvB,EAAS,CACT,IAAI0vB,EAASgC,EAAQhC,QAAUwF,EAAcxF,QAAU,MACnDyF,EAAMn1B,EAAQ,GAAGklB,cACjBkQ,EAAMp1B,EAAQ,GAEd+xB,EAAgBrD,EADJgB,EAAS,KAAOgC,EAAQyD,KAAOA,IAE/CD,EAAcC,IAAMA,EACpBD,EAAcE,IAAMA,EACpBF,EAAcllB,UAAO7T,EACjB41B,IACAmD,EAAgBnD,EAAc7pB,MAAMgtB,EAAexD,SAGvDwD,EAActvB,MAAQsvB,EAActvB,OAAS,yBAEjD,OAAOsvB,GAEXzqB,UAAW,SAAsByqB,EAAexD,GAC5C,IACIyD,EAAMD,EAAcC,IAEpBpD,EAAgBrD,GAHPgD,EAAQhC,QAAUwF,EAAcxF,QAAU,OAE9B,KAAOgC,EAAQyD,KAAOA,IAE3CpD,IACAmD,EAAgBnD,EAActnB,UAAUyqB,EAAexD,IAE3D,IAAI2D,EAAgBH,EAGpB,OADAG,EAAcrlB,MAAQmlB,GAAOzD,EAAQyD,KAAO,IADlCD,EAAcE,IAEjBC,IAIX91B,GAAO,2DAEP+1B,GAAY,CACZ5F,OAAQ,WACRxnB,MAAO,SAAegtB,EAAexD,GACjC,IAAI6D,EAAiBL,EAMrB,OALAK,EAAen0B,KAAOm0B,EAAeH,IACrCG,EAAeH,SAAMj5B,EAChBu1B,EAAQyB,UAAcoC,EAAen0B,MAASm0B,EAAen0B,KAAKnB,MAAMV,MACzEg2B,EAAe3vB,MAAQ2vB,EAAe3vB,OAAS,sBAE5C2vB,GAEX9qB,UAAW,SAAmB8qB,GAC1B,IAAIL,EAAgBK,EAGpB,OADAL,EAAcE,KAAOG,EAAen0B,MAAQ,IAAI8jB,cACzCgQ,IAIfxG,EAAQ2E,EAAQ3D,QAAU2D,EAC1B3E,EAAQ4E,EAAU5D,QAAU4D,EAC5B5E,EAAQkF,GAAUlE,QAAUkE,GAC5BlF,EAAQuG,GAAUvF,QAAUuF,GAC5BvG,EAAQ4G,GAAU5F,QAAU4F,GAE5B97B,EAAQk1B,QAAUA,EAClBl1B,EAAQm1B,WAAaA,EACrBn1B,EAAQq1B,YAAcA,EACtBr1B,EAAQ0O,MAAQA,EAChB1O,EAAQ84B,kBAAoBA,EAC5B94B,EAAQiR,UAAYA,EACpBjR,EAAQw5B,kBAAoBA,EAC5Bx5B,EAAQwD,QAlQR,SAAiBw4B,EAASC,EAAa/D,GACnC,IAAIgE,EA9jCR,SAAgBxC,EAAQzuB,GACpB,IAAI6H,EAAM4mB,EACV,GAAIzuB,EACA,IAAK,IAAIpJ,KAAOoJ,EACZ6H,EAAIjR,GAAOoJ,EAAOpJ,GAG1B,OAAOiR,EAujCiBqpB,CAAO,CAAEjG,OAAQ,QAAUgC,GACnD,OAAOjnB,EAAUuoB,EAAkB9qB,EAAMstB,EAASE,GAAoBxtB,EAAMutB,EAAaC,GAAoBA,GAAmB,GAAOA,IAiQ3Il8B,EAAQgR,UA9PR,SAAmB5J,EAAK8wB,GAMpB,MALmB,iBAAR9wB,EACPA,EAAM6J,EAAUvC,EAAMtH,EAAK8wB,GAAUA,GACd,WAAhB1M,EAAOpkB,KACdA,EAAMsH,EAAMuC,EAAU7J,EAAK8wB,GAAUA,IAElC9wB,GAyPXpH,EAAQ6I,MAtPR,SAAeuzB,EAAMC,EAAMnE,GAWvB,MAVoB,iBAATkE,EACPA,EAAOnrB,EAAUvC,EAAM0tB,EAAMlE,GAAUA,GACf,WAAjB1M,EAAO4Q,KACdA,EAAOnrB,EAAUmrB,EAAMlE,IAEP,iBAATmE,EACPA,EAAOprB,EAAUvC,EAAM2tB,EAAMnE,GAAUA,GACf,WAAjB1M,EAAO6Q,KACdA,EAAOprB,EAAUorB,EAAMnE,IAEpBkE,IAASC,GA4OpBr8B,EAAQs8B,gBAzOR,SAAyB/1B,EAAK2xB,GAC1B,OAAO3xB,GAAOA,EAAIsjB,WAAW1Y,QAAS+mB,GAAYA,EAAQC,IAA4BxI,EAAaP,OAAnCM,EAAaN,OAA8B+F,IAyO/Gn1B,EAAQ45B,kBAAoBA,EAE5B90B,OAAOy3B,eAAev8B,EAAS,aAAc,CAAE8B,OAAO,IAv2CU06B,CAA5C,iBAAZx8B,QAA0C,IAAXC,EAAiCD,EAE7DK,EAAOuF,IAAMvF,EAAOuF,KAAO,KA02CpC,IAAIT,IAAM,CAAC,SAASnE,EAAQf,EAAOD,GACrC,aAEA,IAAIy8B,EAAgBz7B,EAAQ,aACxBwC,EAAUxC,EAAQ,qBAClBS,EAAQT,EAAQ,WAChBsN,EAAetN,EAAQ,wBACvB0H,EAAkB1H,EAAQ,8BAC1BmF,EAAUnF,EAAQ,qBAClB0Q,EAAQ1Q,EAAQ,mBAChB07B,EAAkB17B,EAAQ,UAC1BuE,EAAOvE,EAAQ,mBAEnBf,EAAOD,QAAUQ,GAEbmB,UAAUqB,SAyEd,SAAkB25B,EAAcrpB,GAC9B,IAAIpQ,EACJ,GAA2B,iBAAhBy5B,GAET,KADAz5B,EAAI3C,KAAK8C,UAAUs5B,IACX,MAAM,IAAIx7B,MAAM,8BAAgCw7B,EAAe,SAClE,CACL,IAAI75B,EAAYvC,KAAKwC,WAAW45B,GAChCz5B,EAAIJ,EAAUE,UAAYzC,KAAKkD,SAASX,GAG1C,IAAIiL,EAAQ7K,EAAEoQ,IACG,IAAbpQ,EAAE6H,SAAiBxK,KAAK2E,OAAShC,EAAEgC,QACvC,OAAO6I,GApFTvN,EAAImB,UAAUsI,QA+Fd,SAAiB3H,EAAQs6B,GACvB,IAAI95B,EAAYvC,KAAKwC,WAAWT,OAAQK,EAAWi6B,GACnD,OAAO95B,EAAUE,UAAYzC,KAAKkD,SAASX,IAhG7CtC,EAAImB,UAAUuC,UA6Gd,SAAmB5B,EAAQT,EAAKg7B,EAAiBD,GAC/C,GAAIjsB,MAAMC,QAAQtO,GAAQ,CACxB,IAAK,IAAIxB,EAAE,EAAGA,EAAEwB,EAAOf,OAAQT,IAAKP,KAAK2D,UAAU5B,EAAOxB,QAAI6B,EAAWk6B,EAAiBD,GAC1F,OAAOr8B,KAET,IAAIyO,EAAKzO,KAAKuO,OAAOxM,GACrB,QAAWK,IAAPqM,GAAiC,iBAANA,EAC7B,MAAM,IAAI7N,MAAM,4BAIlB,OAFA27B,EAAYv8B,KADZsB,EAAM2B,EAAQkB,YAAY7C,GAAOmN,IAEjCzO,KAAK6D,SAASvC,GAAOtB,KAAKwC,WAAWT,EAAQu6B,EAAiBD,GAAO,GAC9Dr8B,MAvHTC,EAAImB,UAAUo7B,cAoId,SAAuBz6B,EAAQT,EAAKm7B,GAElC,OADAz8B,KAAK2D,UAAU5B,EAAQT,EAAKm7B,GAAgB,GACrCz8B,MArITC,EAAImB,UAAU4L,eAgJd,SAAwBjL,EAAQ26B,GAC9B,IAAI75B,EAAUd,EAAOc,QACrB,QAAgBT,IAAZS,GAA2C,iBAAXA,EAClC,MAAM,IAAIjC,MAAM,4BAElB,KADAiC,EAAUA,GAAW7C,KAAKkC,MAAMy6B,aAgBlC,SAAqB58B,GACnB,IAAIiC,EAAOjC,EAAKmC,MAAMF,KAMtB,OALAjC,EAAKmC,MAAMy6B,YAA6B,iBAAR36B,EACJjC,EAAKwO,OAAOvM,IAASA,EACrBjC,EAAK+C,UAAU85B,GACbA,OACAx6B,EACvBrC,EAAKmC,MAAMy6B,YAvB6BA,CAAY38B,OAIzD,OAFAA,KAAKyL,OAAOyT,KAAK,+BACjBlf,KAAK2E,OAAS,MAGhB,IAAI6I,EAAQxN,KAAKyC,SAASI,EAASd,GACnC,IAAKyL,GAASkvB,EAAiB,CAC7B,IAAIz4B,EAAU,sBAAwBjE,KAAKyN,aAC3C,GAAiC,OAA7BzN,KAAKkC,MAAM8K,eACV,MAAM,IAAIpM,MAAMqD,GADmBjE,KAAKyL,OAAOI,MAAM5H,GAG5D,OAAOuJ,GA/JTvN,EAAImB,UAAU0B,UAoLd,SAAmB+5B,GACjB,IAAIt6B,EAAYu6B,EAAc98B,KAAM68B,GACpC,cAAet6B,GACb,IAAK,SAAU,OAAOA,EAAUE,UAAYzC,KAAKkD,SAASX,GAC1D,IAAK,SAAU,OAAOvC,KAAK8C,UAAUP,GACrC,IAAK,YAAa,OAKtB,SAA4BxC,EAAMqD,GAChC,IAAI6K,EAAMhL,EAAQlB,OAAOhB,KAAKhB,EAAM,CAAEgC,OAAQ,IAAMqB,GACpD,GAAI6K,EAAK,CACP,IAAIlM,EAASkM,EAAIlM,OACb0G,EAAOwF,EAAIxF,KACXzE,EAASiK,EAAIjK,OACbrB,EAAIu5B,EAAcn7B,KAAKhB,EAAMgC,EAAQ0G,OAAMrG,EAAW4B,GAS1D,OARAjE,EAAKg9B,WAAW35B,GAAO,IAAI2K,EAAa,CACtC3K,IAAKA,EACLuM,UAAU,EACV5N,OAAQA,EACR0G,KAAMA,EACNzE,OAAQA,EACRvB,SAAUE,IAELA,GApBkBq6B,CAAmBh9B,KAAM68B,KAxLtD58B,EAAImB,UAAU67B,aAgOd,SAAsBb,GACpB,GAAIA,aAAwBr0B,OAG1B,OAFAm1B,EAAkBl9B,KAAMA,KAAK6D,SAAUu4B,GACvCc,EAAkBl9B,KAAMA,KAAK4D,MAAOw4B,GAC7Bp8B,KAET,cAAeo8B,GACb,IAAK,YAIH,OAHAc,EAAkBl9B,KAAMA,KAAK6D,UAC7Bq5B,EAAkBl9B,KAAMA,KAAK4D,OAC7B5D,KAAKmB,OAAOO,QACL1B,KACT,IAAK,SACH,IAAIuC,EAAYu6B,EAAc98B,KAAMo8B,GAIpC,OAHI75B,GAAWvC,KAAKmB,OAAOM,IAAIc,EAAU46B,iBAClCn9B,KAAK6D,SAASu4B,UACdp8B,KAAK4D,MAAMw4B,GACXp8B,KACT,IAAK,SACH,IAAI0Q,EAAY1Q,KAAKkC,MAAMwO,UACvBysB,EAAWzsB,EAAYA,EAAU0rB,GAAgBA,EACrDp8B,KAAKmB,OAAOM,IAAI07B,GAChB,IAAI1uB,EAAKzO,KAAKuO,OAAO6tB,GACjB3tB,IACFA,EAAKxL,EAAQkB,YAAYsK,UAClBzO,KAAK6D,SAAS4K,UACdzO,KAAK4D,MAAM6K,IAGxB,OAAOzO,MA5PTC,EAAImB,UAAUg8B,UA2Zd,SAAmBpC,EAAMrc,GACF,iBAAVA,IAAoBA,EAAS,IAAI5W,OAAO4W,IAEnD,OADA3e,KAAKoK,SAAS4wB,GAAQrc,EACf3e,MA7ZTC,EAAImB,UAAUqM,WAmYd,SAAoB9I,EAAQgzB,GAE1B,KADAhzB,EAASA,GAAU3E,KAAK2E,QACX,MAAO,YAMpB,IAJA,IAAI04B,OAAkCj7B,KADtCu1B,EAAUA,GAAW,IACG0F,UAA0B,KAAO1F,EAAQ0F,UAC7DlpB,OAA8B/R,IAApBu1B,EAAQxjB,QAAwB,OAASwjB,EAAQxjB,QAE3DmpB,EAAO,GACF/8B,EAAE,EAAGA,EAAEoE,EAAO3D,OAAQT,IAAK,CAClC,IAAIJ,EAAIwE,EAAOpE,GACXJ,IAAGm9B,GAAQnpB,EAAUhU,EAAEo9B,SAAW,IAAMp9B,EAAE8D,QAAUo5B,GAE1D,OAAOC,EAAK1tB,MAAM,GAAIytB,EAAUr8B,SA7YlCf,EAAImB,UAAUoB,WAyQd,SAAoBT,EAAQ06B,EAAgBz6B,EAAMw7B,GAChD,GAAqB,iBAAVz7B,GAAuC,kBAAVA,EACtC,MAAM,IAAInB,MAAM,sCAClB,IAAI8P,EAAY1Q,KAAKkC,MAAMwO,UACvBysB,EAAWzsB,EAAYA,EAAU3O,GAAUA,EAC3C07B,EAASz9B,KAAKmB,OAAOK,IAAI27B,GAC7B,GAAIM,EAAQ,OAAOA,EAEnBD,EAAkBA,IAAgD,IAA7Bx9B,KAAKkC,MAAMw7B,cAEhD,IAAIjvB,EAAKxL,EAAQkB,YAAYnE,KAAKuO,OAAOxM,IACrC0M,GAAM+uB,GAAiBjB,EAAYv8B,KAAMyO,GAE7C,IACIkvB,EADAC,GAA6C,IAA9B59B,KAAKkC,MAAM8K,iBAA6ByvB,EAEvDmB,KAAkBD,EAAgBlvB,GAAMA,GAAMxL,EAAQkB,YAAYpC,EAAOc,WAC3E7C,KAAKgN,eAAejL,GAAQ,GAE9B,IAAI4H,EAAY1G,EAAQ4L,IAAI9N,KAAKf,KAAM+B,GAEnCQ,EAAY,IAAIwL,EAAa,CAC/BU,GAAIA,EACJ1M,OAAQA,EACR4H,UAAWA,EACXwzB,SAAUA,EACVn7B,KAAMA,IAGK,KAATyM,EAAG,IAAa+uB,IAAiBx9B,KAAK4D,MAAM6K,GAAMlM,GACtDvC,KAAKmB,OAAOE,IAAI87B,EAAU56B,GAEtBq7B,GAAgBD,GAAe39B,KAAKgN,eAAejL,GAAQ,GAE/D,OAAOQ,GAzSTtC,EAAImB,UAAU8B,SA8Sd,SAAkBX,EAAWkG,GAC3B,GAAIlG,EAAUqG,UAOZ,OANArG,EAAUE,SAAW0H,GACRpI,OAASQ,EAAUR,OAChCoI,EAAaxF,OAAS,KACtBwF,EAAa1B,KAAOA,GAAc0B,GACF,IAA5B5H,EAAUR,OAAOyI,SACnBL,EAAaK,QAAS,GACjBL,EAIT,IAAI0zB,EAMAl7B,EARJJ,EAAUqG,WAAY,EAGlBrG,EAAUP,OACZ67B,EAAc79B,KAAKkC,MACnBlC,KAAKkC,MAAQlC,KAAK89B,WAIpB,IAAMn7B,EAAIu5B,EAAcn7B,KAAKf,KAAMuC,EAAUR,OAAQ0G,EAAMlG,EAAUoH,WACrE,MAAMxJ,GAEJ,aADOoC,EAAUE,SACXtC,EAER,QACEoC,EAAUqG,WAAY,EAClBrG,EAAUP,OAAMhC,KAAKkC,MAAQ27B,GAOnC,OAJAt7B,EAAUE,SAAWE,EACrBJ,EAAUsH,KAAOlH,EAAEkH,KACnBtH,EAAU8G,OAAS1G,EAAE0G,OACrB9G,EAAUkG,KAAO9F,EAAE8F,KACZ9F,EAIP,SAASwH,IAEP,IAAI4zB,EAAYx7B,EAAUE,SACtBkI,EAASozB,EAAUnzB,MAAM5K,KAAM6K,WAEnC,OADAV,EAAaxF,OAASo5B,EAAUp5B,OACzBgG,IAtVX1K,EAAImB,UAAUU,aAAerB,EAAQ,mBACrC,IAAIu9B,EAAgBv9B,EAAQ,aAC5BR,EAAImB,UAAU68B,WAAaD,EAActW,IACzCznB,EAAImB,UAAU88B,WAAaF,EAAcx8B,IACzCvB,EAAImB,UAAU+8B,cAAgBH,EAAcjW,OAC5C9nB,EAAImB,UAAUumB,gBAAkBqW,EAAcv7B,SAE9C,IAAIyF,EAAezH,EAAQ,2BAC3BR,EAAIsI,gBAAkBL,EAAaxD,WACnCzE,EAAI2B,gBAAkBsG,EAAarG,WACnC5B,EAAIk8B,gBAAkBA,EAEtB,IAAIS,EAAiB,yCAEjBwB,EAAsB,CAAE,mBAAoB,cAAe,cAAe,kBAC1EC,EAAoB,CAAC,eAQzB,SAASp+B,EAAI2J,GACX,KAAM5J,gBAAgBC,GAAM,OAAO,IAAIA,EAAI2J,GAC3CA,EAAO5J,KAAKkC,MAAQ8C,EAAKc,KAAK8D,IAAS,GA+azC,SAAmB7J,GACjB,IAAI0L,EAAS1L,EAAKmC,MAAMuJ,OACxB,IAAe,IAAXA,EACF1L,EAAK0L,OAAS,CAAC6yB,IAAKC,EAAMrf,KAAMqf,EAAM1yB,MAAO0yB,OACxC,CAEL,QADen8B,IAAXqJ,IAAsBA,EAAS+yB,WACZ,iBAAV/yB,GAAsBA,EAAO6yB,KAAO7yB,EAAOyT,MAAQzT,EAAOI,OACrE,MAAM,IAAIjL,MAAM,qDAClBb,EAAK0L,OAASA,GAtbhBgzB,CAAUz+B,MACVA,KAAK6D,SAAW,GAChB7D,KAAK4D,MAAQ,GACb5D,KAAK+8B,WAAa,GAClB/8B,KAAKoK,SAAWxE,EAAQgE,EAAK+U,QAE7B3e,KAAKmB,OAASyI,EAAK80B,OAAS,IAAIx9B,EAChClB,KAAKyD,gBAAkB,GACvBzD,KAAK6I,cAAgB,GACrB7I,KAAKqK,MAAQ8G,IACbnR,KAAKuO,OAuTP,SAAqB3E,GACnB,OAAQA,EAAKkF,UACX,IAAK,OAAQ,OAAO6vB,EACpB,IAAK,KAAM,OAAOpwB,EAClB,QAAS,OAAOqwB,GA3TJC,CAAYj1B,GAE1BA,EAAKoa,aAAepa,EAAKoa,cAAgBxT,EAAAA,EACf,YAAtB5G,EAAKk1B,gBAA6Bl1B,EAAKuU,wBAAyB,QAC7C/b,IAAnBwH,EAAK8G,YAAyB9G,EAAK8G,UAAYvI,GACnDnI,KAAK89B,UAuZP,SAA8B/9B,GAE5B,IADA,IAAIg/B,EAAW/5B,EAAKc,KAAK/F,EAAKmC,OACrB3B,EAAE,EAAGA,EAAE69B,EAAoBp9B,OAAQT,WACnCw+B,EAASX,EAAoB79B,IACtC,OAAOw+B,EA3ZUC,CAAqBh/B,MAElC4J,EAAKhE,SAuYX,SAA2B7F,GACzB,IAAK,IAAIi7B,KAAQj7B,EAAKmC,MAAM0D,QAAS,CAEnC7F,EAAKq9B,UAAUpC,EADFj7B,EAAKmC,MAAM0D,QAAQo1B,KAzYhBiE,CAAkBj/B,MAiXtC,SAA8BD,GAC5B,IAAIm/B,EACAn/B,EAAKmC,MAAMkU,QACb8oB,EAAcz+B,EAAQ,oBACtBV,EAAKy8B,cAAc0C,EAAaA,EAAYtnB,KAAK,IAEnD,IAAwB,IAApB7X,EAAKmC,MAAMF,KAAgB,OAC/B,IAAIqV,EAAa5W,EAAQ,oCACrBV,EAAKmC,MAAMkU,QAAOiB,EAAa8kB,EAAgB9kB,EAAYgnB,IAC/Dt+B,EAAKy8B,cAAcnlB,EAAYulB,GAAgB,GAC/C78B,EAAK6D,MAAM,iCAAmCg5B,EA1X9CuC,CAAqBn/B,MACG,iBAAb4J,EAAK5H,MAAkBhC,KAAKw8B,cAAc5yB,EAAK5H,MACtD4H,EAAK4c,UAAUxmB,KAAKi+B,WAAW,WAAY,CAAC5mB,WAAY,CAACnG,KAAM,aA4XrE,SAA2BnR,GACzB,IAAIq/B,EAAcr/B,EAAKmC,MAAMm9B,QAC7B,IAAKD,EAAa,OAClB,GAAIhvB,MAAMC,QAAQ+uB,GAAcr/B,EAAK4D,UAAUy7B,QAC1C,IAAK,IAAI99B,KAAO89B,EAAar/B,EAAK4D,UAAUy7B,EAAY99B,GAAMA,GA/XnEg+B,CAAkBt/B,MA2JpB,SAAS88B,EAAc/8B,EAAM88B,GAE3B,OADAA,EAAS55B,EAAQkB,YAAY04B,GACtB98B,EAAK8D,SAASg5B,IAAW98B,EAAK6D,MAAMi5B,IAAW98B,EAAKg9B,WAAWF,GA8CxE,SAASK,EAAkBn9B,EAAMs/B,EAASj4B,GACxC,IAAK,IAAIy1B,KAAUwC,EAAS,CAC1B,IAAI98B,EAAY88B,EAAQxC,GACnBt6B,EAAUP,MAAUoF,IAASA,EAAMS,KAAKg1B,KAC3C98B,EAAKoB,OAAOM,IAAIc,EAAU46B,iBACnBkC,EAAQxC,KAqGrB,SAAStuB,EAAOxM,GAEd,OADIA,EAAO6V,KAAK5X,KAAKyL,OAAOyT,KAAK,qBAAsBnd,EAAO6V,KACvD7V,EAAO0M,GAIhB,SAASmwB,EAAQ78B,GAEf,OADIA,EAAO0M,IAAIzO,KAAKyL,OAAOyT,KAAK,oBAAqBnd,EAAO0M,IACrD1M,EAAO6V,IAIhB,SAAS+mB,EAAY58B,GACnB,GAAIA,EAAO6V,KAAO7V,EAAO0M,IAAM1M,EAAO6V,KAAO7V,EAAO0M,GAClD,MAAM,IAAI7N,MAAM,mCAClB,OAAOmB,EAAO6V,KAAO7V,EAAO0M,GAuE9B,SAAS8tB,EAAYx8B,EAAM0O,GACzB,GAAI1O,EAAK8D,SAAS4K,IAAO1O,EAAK6D,MAAM6K,GAClC,MAAM,IAAI7N,MAAM,0BAA4B6N,EAAK,oBAyBrD,SAAS8vB,OAEP,CAACgB,UAAU,EAAEC,YAAY,EAAEC,kBAAkB,EAAEC,0BAA0B,EAAEC,oBAAoB,EAAEC,oBAAoB,EAAEC,kBAAkB,EAAEC,uBAAuB,EAAEC,iBAAiB,GAAGC,SAAS,GAAGC,YAAY,GAAGC,mBAAmB,GAAG7nB,mCAAmC,GAAGxK,6BAA6B,MAAM,GAAG,GAz/NoD,CAy/NhD","file":"ajv.min.js"} \ No newline at end of file
diff --git a/assets/node_modules/ajv/lib/ajv.d.ts b/assets/node_modules/ajv/lib/ajv.d.ts
deleted file mode 100644
index ba75f8d..0000000
--- a/assets/node_modules/ajv/lib/ajv.d.ts
+++ /dev/null
@@ -1,391 +0,0 @@
-declare var ajv: {
- (options?: ajv.Options): ajv.Ajv;
- new(options?: ajv.Options): ajv.Ajv;
- ValidationError: typeof AjvErrors.ValidationError;
- MissingRefError: typeof AjvErrors.MissingRefError;
- $dataMetaSchema: object;
-}
-
-declare namespace AjvErrors {
- class ValidationError extends Error {
- constructor(errors: Array<ajv.ErrorObject>);
-
- message: string;
- errors: Array<ajv.ErrorObject>;
- ajv: true;
- validation: true;
- }
-
- class MissingRefError extends Error {
- constructor(baseId: string, ref: string, message?: string);
- static message: (baseId: string, ref: string) => string;
-
- message: string;
- missingRef: string;
- missingSchema: string;
- }
-}
-
-declare namespace ajv {
- type ValidationError = AjvErrors.ValidationError;
-
- type MissingRefError = AjvErrors.MissingRefError;
-
- interface Ajv {
- /**
- * Validate data using schema
- * Schema will be compiled and cached (using serialized JSON as key, [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize by default).
- * @param {string|object|Boolean} schemaKeyRef key, ref or schema object
- * @param {Any} data to be validated
- * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).
- */
- validate(schemaKeyRef: object | string | boolean, data: any): boolean | PromiseLike<any>;
- /**
- * Create validating function for passed schema.
- * @param {object|Boolean} schema schema object
- * @return {Function} validating function
- */
- compile(schema: object | boolean): ValidateFunction;
- /**
- * Creates validating function for passed schema with asynchronous loading of missing schemas.
- * `loadSchema` option should be a function that accepts schema uri and node-style callback.
- * @this Ajv
- * @param {object|Boolean} schema schema object
- * @param {Boolean} meta optional true to compile meta-schema; this parameter can be skipped
- * @param {Function} callback optional node-style callback, it is always called with 2 parameters: error (or null) and validating function.
- * @return {PromiseLike<ValidateFunction>} validating function
- */
- compileAsync(schema: object | boolean, meta?: Boolean, callback?: (err: Error, validate: ValidateFunction) => any): PromiseLike<ValidateFunction>;
- /**
- * Adds schema to the instance.
- * @param {object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.
- * @param {string} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.
- * @return {Ajv} this for method chaining
- */
- addSchema(schema: Array<object> | object, key?: string): Ajv;
- /**
- * Add schema that will be used to validate other schemas
- * options in META_IGNORE_OPTIONS are alway set to false
- * @param {object} schema schema object
- * @param {string} key optional schema key
- * @return {Ajv} this for method chaining
- */
- addMetaSchema(schema: object, key?: string): Ajv;
- /**
- * Validate schema
- * @param {object|Boolean} schema schema to validate
- * @return {Boolean} true if schema is valid
- */
- validateSchema(schema: object | boolean): boolean;
- /**
- * Get compiled schema from the instance by `key` or `ref`.
- * @param {string} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id).
- * @return {Function} schema validating function (with property `schema`).
- */
- getSchema(keyRef: string): ValidateFunction;
- /**
- * Remove cached schema(s).
- * If no parameter is passed all schemas but meta-schemas are removed.
- * If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.
- * Even if schema is referenced by other schemas it still can be removed as other schemas have local references.
- * @param {string|object|RegExp|Boolean} schemaKeyRef key, ref, pattern to match key/ref or schema object
- * @return {Ajv} this for method chaining
- */
- removeSchema(schemaKeyRef?: object | string | RegExp | boolean): Ajv;
- /**
- * Add custom format
- * @param {string} name format name
- * @param {string|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid)
- * @return {Ajv} this for method chaining
- */
- addFormat(name: string, format: FormatValidator | FormatDefinition): Ajv;
- /**
- * Define custom keyword
- * @this Ajv
- * @param {string} keyword custom keyword, should be a valid identifier, should be different from all standard, custom and macro keywords.
- * @param {object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.
- * @return {Ajv} this for method chaining
- */
- addKeyword(keyword: string, definition: KeywordDefinition): Ajv;
- /**
- * Get keyword definition
- * @this Ajv
- * @param {string} keyword pre-defined or custom keyword.
- * @return {object|Boolean} custom keyword definition, `true` if it is a predefined keyword, `false` otherwise.
- */
- getKeyword(keyword: string): object | boolean;
- /**
- * Remove keyword
- * @this Ajv
- * @param {string} keyword pre-defined or custom keyword.
- * @return {Ajv} this for method chaining
- */
- removeKeyword(keyword: string): Ajv;
- /**
- * Validate keyword
- * @this Ajv
- * @param {object} definition keyword definition object
- * @param {boolean} throwError true to throw exception if definition is invalid
- * @return {boolean} validation result
- */
- validateKeyword(definition: KeywordDefinition, throwError: boolean): boolean;
- /**
- * Convert array of error message objects to string
- * @param {Array<object>} errors optional array of validation errors, if not passed errors from the instance are used.
- * @param {object} options optional options with properties `separator` and `dataVar`.
- * @return {string} human readable string with all errors descriptions
- */
- errorsText(errors?: Array<ErrorObject> | null, options?: ErrorsTextOptions): string;
- errors?: Array<ErrorObject> | null;
- }
-
- interface CustomLogger {
- log(...args: any[]): any;
- warn(...args: any[]): any;
- error(...args: any[]): any;
- }
-
- interface ValidateFunction {
- (
- data: any,
- dataPath?: string,
- parentData?: object | Array<any>,
- parentDataProperty?: string | number,
- rootData?: object | Array<any>
- ): boolean | PromiseLike<any>;
- schema?: object | boolean;
- errors?: null | Array<ErrorObject>;
- refs?: object;
- refVal?: Array<any>;
- root?: ValidateFunction | object;
- $async?: true;
- source?: object;
- }
-
- interface Options {
- $data?: boolean;
- allErrors?: boolean;
- verbose?: boolean;
- jsonPointers?: boolean;
- uniqueItems?: boolean;
- unicode?: boolean;
- format?: string;
- formats?: object;
- unknownFormats?: true | string[] | 'ignore';
- schemas?: Array<object> | object;
- schemaId?: '$id' | 'id' | 'auto';
- missingRefs?: true | 'ignore' | 'fail';
- extendRefs?: true | 'ignore' | 'fail';
- loadSchema?: (uri: string, cb?: (err: Error, schema: object) => void) => PromiseLike<object | boolean>;
- removeAdditional?: boolean | 'all' | 'failing';
- useDefaults?: boolean | 'empty' | 'shared';
- coerceTypes?: boolean | 'array';
- strictDefaults?: boolean | 'log';
- strictKeywords?: boolean | 'log';
- async?: boolean | string;
- transpile?: string | ((code: string) => string);
- meta?: boolean | object;
- validateSchema?: boolean | 'log';
- addUsedSchema?: boolean;
- inlineRefs?: boolean | number;
- passContext?: boolean;
- loopRequired?: number;
- ownProperties?: boolean;
- multipleOfPrecision?: boolean | number;
- errorDataPath?: string,
- messages?: boolean;
- sourceCode?: boolean;
- processCode?: (code: string) => string;
- cache?: object;
- logger?: CustomLogger | false;
- nullable?: boolean;
- serialize?: ((schema: object | boolean) => any) | false;
- }
-
- type FormatValidator = string | RegExp | ((data: string) => boolean | PromiseLike<any>);
- type NumberFormatValidator = ((data: number) => boolean | PromiseLike<any>);
-
- interface NumberFormatDefinition {
- type: "number",
- validate: NumberFormatValidator;
- compare?: (data1: number, data2: number) => number;
- async?: boolean;
- }
-
- interface StringFormatDefinition {
- type?: "string",
- validate: FormatValidator;
- compare?: (data1: string, data2: string) => number;
- async?: boolean;
- }
-
- type FormatDefinition = NumberFormatDefinition | StringFormatDefinition;
-
- interface KeywordDefinition {
- type?: string | Array<string>;
- async?: boolean;
- $data?: boolean;
- errors?: boolean | string;
- metaSchema?: object;
- // schema: false makes validate not to expect schema (ValidateFunction)
- schema?: boolean;
- statements?: boolean;
- dependencies?: Array<string>;
- modifying?: boolean;
- valid?: boolean;
- // one and only one of the following properties should be present
- validate?: SchemaValidateFunction | ValidateFunction;
- compile?: (schema: any, parentSchema: object, it: CompilationContext) => ValidateFunction;
- macro?: (schema: any, parentSchema: object, it: CompilationContext) => object | boolean;
- inline?: (it: CompilationContext, keyword: string, schema: any, parentSchema: object) => string;
- }
-
- interface CompilationContext {
- level: number;
- dataLevel: number;
- dataPathArr: string[];
- schema: any;
- schemaPath: string;
- baseId: string;
- async: boolean;
- opts: Options;
- formats: {
- [index: string]: FormatDefinition | undefined;
- };
- compositeRule: boolean;
- validate: (schema: object) => boolean;
- util: {
- copy(obj: any, target?: any): any;
- toHash(source: string[]): { [index: string]: true | undefined };
- equal(obj: any, target: any): boolean;
- getProperty(str: string): string;
- schemaHasRules(schema: object, rules: any): string;
- escapeQuotes(str: string): string;
- toQuotedString(str: string): string;
- getData(jsonPointer: string, dataLevel: number, paths: string[]): string;
- escapeJsonPointer(str: string): string;
- unescapeJsonPointer(str: string): string;
- escapeFragment(str: string): string;
- unescapeFragment(str: string): string;
- };
- self: Ajv;
- }
-
- interface SchemaValidateFunction {
- (
- schema: any,
- data: any,
- parentSchema?: object,
- dataPath?: string,
- parentData?: object | Array<any>,
- parentDataProperty?: string | number,
- rootData?: object | Array<any>
- ): boolean | PromiseLike<any>;
- errors?: Array<ErrorObject>;
- }
-
- interface ErrorsTextOptions {
- separator?: string;
- dataVar?: string;
- }
-
- interface ErrorObject {
- keyword: string;
- dataPath: string;
- schemaPath: string;
- params: ErrorParameters;
- // Added to validation errors of propertyNames keyword schema
- propertyName?: string;
- // Excluded if messages set to false.
- message?: string;
- // These are added with the `verbose` option.
- schema?: any;
- parentSchema?: object;
- data?: any;
- }
-
- type ErrorParameters = RefParams | LimitParams | AdditionalPropertiesParams |
- DependenciesParams | FormatParams | ComparisonParams |
- MultipleOfParams | PatternParams | RequiredParams |
- TypeParams | UniqueItemsParams | CustomParams |
- PatternRequiredParams | PropertyNamesParams |
- IfParams | SwitchParams | NoParams | EnumParams;
-
- interface RefParams {
- ref: string;
- }
-
- interface LimitParams {
- limit: number;
- }
-
- interface AdditionalPropertiesParams {
- additionalProperty: string;
- }
-
- interface DependenciesParams {
- property: string;
- missingProperty: string;
- depsCount: number;
- deps: string;
- }
-
- interface FormatParams {
- format: string
- }
-
- interface ComparisonParams {
- comparison: string;
- limit: number | string;
- exclusive: boolean;
- }
-
- interface MultipleOfParams {
- multipleOf: number;
- }
-
- interface PatternParams {
- pattern: string;
- }
-
- interface RequiredParams {
- missingProperty: string;
- }
-
- interface TypeParams {
- type: string;
- }
-
- interface UniqueItemsParams {
- i: number;
- j: number;
- }
-
- interface CustomParams {
- keyword: string;
- }
-
- interface PatternRequiredParams {
- missingPattern: string;
- }
-
- interface PropertyNamesParams {
- propertyName: string;
- }
-
- interface IfParams {
- failingKeyword: string;
- }
-
- interface SwitchParams {
- caseIndex: number;
- }
-
- interface NoParams { }
-
- interface EnumParams {
- allowedValues: Array<any>;
- }
-}
-
-export = ajv;
diff --git a/assets/node_modules/ajv/lib/ajv.js b/assets/node_modules/ajv/lib/ajv.js
deleted file mode 100644
index 611b938..0000000
--- a/assets/node_modules/ajv/lib/ajv.js
+++ /dev/null
@@ -1,497 +0,0 @@
-'use strict';
-
-var compileSchema = require('./compile')
- , resolve = require('./compile/resolve')
- , Cache = require('./cache')
- , SchemaObject = require('./compile/schema_obj')
- , stableStringify = require('fast-json-stable-stringify')
- , formats = require('./compile/formats')
- , rules = require('./compile/rules')
- , $dataMetaSchema = require('./data')
- , util = require('./compile/util');
-
-module.exports = Ajv;
-
-Ajv.prototype.validate = validate;
-Ajv.prototype.compile = compile;
-Ajv.prototype.addSchema = addSchema;
-Ajv.prototype.addMetaSchema = addMetaSchema;
-Ajv.prototype.validateSchema = validateSchema;
-Ajv.prototype.getSchema = getSchema;
-Ajv.prototype.removeSchema = removeSchema;
-Ajv.prototype.addFormat = addFormat;
-Ajv.prototype.errorsText = errorsText;
-
-Ajv.prototype._addSchema = _addSchema;
-Ajv.prototype._compile = _compile;
-
-Ajv.prototype.compileAsync = require('./compile/async');
-var customKeyword = require('./keyword');
-Ajv.prototype.addKeyword = customKeyword.add;
-Ajv.prototype.getKeyword = customKeyword.get;
-Ajv.prototype.removeKeyword = customKeyword.remove;
-Ajv.prototype.validateKeyword = customKeyword.validate;
-
-var errorClasses = require('./compile/error_classes');
-Ajv.ValidationError = errorClasses.Validation;
-Ajv.MissingRefError = errorClasses.MissingRef;
-Ajv.$dataMetaSchema = $dataMetaSchema;
-
-var META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema';
-
-var META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ];
-var META_SUPPORT_DATA = ['/properties'];
-
-/**
- * Creates validator instance.
- * Usage: `Ajv(opts)`
- * @param {Object} opts optional options
- * @return {Object} ajv instance
- */
-function Ajv(opts) {
- if (!(this instanceof Ajv)) return new Ajv(opts);
- opts = this._opts = util.copy(opts) || {};
- setLogger(this);
- this._schemas = {};
- this._refs = {};
- this._fragments = {};
- this._formats = formats(opts.format);
-
- this._cache = opts.cache || new Cache;
- this._loadingSchemas = {};
- this._compilations = [];
- this.RULES = rules();
- this._getId = chooseGetId(opts);
-
- opts.loopRequired = opts.loopRequired || Infinity;
- if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;
- if (opts.serialize === undefined) opts.serialize = stableStringify;
- this._metaOpts = getMetaSchemaOptions(this);
-
- if (opts.formats) addInitialFormats(this);
- addDefaultMetaSchema(this);
- if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);
- if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}});
- addInitialSchemas(this);
-}
-
-
-
-/**
- * Validate data using schema
- * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize.
- * @this Ajv
- * @param {String|Object} schemaKeyRef key, ref or schema object
- * @param {Any} data to be validated
- * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).
- */
-function validate(schemaKeyRef, data) {
- var v;
- if (typeof schemaKeyRef == 'string') {
- v = this.getSchema(schemaKeyRef);
- if (!v) throw new Error('no schema with key or ref "' + schemaKeyRef + '"');
- } else {
- var schemaObj = this._addSchema(schemaKeyRef);
- v = schemaObj.validate || this._compile(schemaObj);
- }
-
- var valid = v(data);
- if (v.$async !== true) this.errors = v.errors;
- return valid;
-}
-
-
-/**
- * Create validating function for passed schema.
- * @this Ajv
- * @param {Object} schema schema object
- * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords.
- * @return {Function} validating function
- */
-function compile(schema, _meta) {
- var schemaObj = this._addSchema(schema, undefined, _meta);
- return schemaObj.validate || this._compile(schemaObj);
-}
-
-
-/**
- * Adds schema to the instance.
- * @this Ajv
- * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.
- * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.
- * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.
- * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.
- * @return {Ajv} this for method chaining
- */
-function addSchema(schema, key, _skipValidation, _meta) {
- if (Array.isArray(schema)){
- for (var i=0; i<schema.length; i++) this.addSchema(schema[i], undefined, _skipValidation, _meta);
- return this;
- }
- var id = this._getId(schema);
- if (id !== undefined && typeof id != 'string')
- throw new Error('schema id must be string');
- key = resolve.normalizeId(key || id);
- checkUnique(this, key);
- this._schemas[key] = this._addSchema(schema, _skipValidation, _meta, true);
- return this;
-}
-
-
-/**
- * Add schema that will be used to validate other schemas
- * options in META_IGNORE_OPTIONS are alway set to false
- * @this Ajv
- * @param {Object} schema schema object
- * @param {String} key optional schema key
- * @param {Boolean} skipValidation true to skip schema validation, can be used to override validateSchema option for meta-schema
- * @return {Ajv} this for method chaining
- */
-function addMetaSchema(schema, key, skipValidation) {
- this.addSchema(schema, key, skipValidation, true);
- return this;
-}
-
-
-/**
- * Validate schema
- * @this Ajv
- * @param {Object} schema schema to validate
- * @param {Boolean} throwOrLogError pass true to throw (or log) an error if invalid
- * @return {Boolean} true if schema is valid
- */
-function validateSchema(schema, throwOrLogError) {
- var $schema = schema.$schema;
- if ($schema !== undefined && typeof $schema != 'string')
- throw new Error('$schema must be a string');
- $schema = $schema || this._opts.defaultMeta || defaultMeta(this);
- if (!$schema) {
- this.logger.warn('meta-schema not available');
- this.errors = null;
- return true;
- }
- var valid = this.validate($schema, schema);
- if (!valid && throwOrLogError) {
- var message = 'schema is invalid: ' + this.errorsText();
- if (this._opts.validateSchema == 'log') this.logger.error(message);
- else throw new Error(message);
- }
- return valid;
-}
-
-
-function defaultMeta(self) {
- var meta = self._opts.meta;
- self._opts.defaultMeta = typeof meta == 'object'
- ? self._getId(meta) || meta
- : self.getSchema(META_SCHEMA_ID)
- ? META_SCHEMA_ID
- : undefined;
- return self._opts.defaultMeta;
-}
-
-
-/**
- * Get compiled schema from the instance by `key` or `ref`.
- * @this Ajv
- * @param {String} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id).
- * @return {Function} schema validating function (with property `schema`).
- */
-function getSchema(keyRef) {
- var schemaObj = _getSchemaObj(this, keyRef);
- switch (typeof schemaObj) {
- case 'object': return schemaObj.validate || this._compile(schemaObj);
- case 'string': return this.getSchema(schemaObj);
- case 'undefined': return _getSchemaFragment(this, keyRef);
- }
-}
-
-
-function _getSchemaFragment(self, ref) {
- var res = resolve.schema.call(self, { schema: {} }, ref);
- if (res) {
- var schema = res.schema
- , root = res.root
- , baseId = res.baseId;
- var v = compileSchema.call(self, schema, root, undefined, baseId);
- self._fragments[ref] = new SchemaObject({
- ref: ref,
- fragment: true,
- schema: schema,
- root: root,
- baseId: baseId,
- validate: v
- });
- return v;
- }
-}
-
-
-function _getSchemaObj(self, keyRef) {
- keyRef = resolve.normalizeId(keyRef);
- return self._schemas[keyRef] || self._refs[keyRef] || self._fragments[keyRef];
-}
-
-
-/**
- * Remove cached schema(s).
- * If no parameter is passed all schemas but meta-schemas are removed.
- * If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.
- * Even if schema is referenced by other schemas it still can be removed as other schemas have local references.
- * @this Ajv
- * @param {String|Object|RegExp} schemaKeyRef key, ref, pattern to match key/ref or schema object
- * @return {Ajv} this for method chaining
- */
-function removeSchema(schemaKeyRef) {
- if (schemaKeyRef instanceof RegExp) {
- _removeAllSchemas(this, this._schemas, schemaKeyRef);
- _removeAllSchemas(this, this._refs, schemaKeyRef);
- return this;
- }
- switch (typeof schemaKeyRef) {
- case 'undefined':
- _removeAllSchemas(this, this._schemas);
- _removeAllSchemas(this, this._refs);
- this._cache.clear();
- return this;
- case 'string':
- var schemaObj = _getSchemaObj(this, schemaKeyRef);
- if (schemaObj) this._cache.del(schemaObj.cacheKey);
- delete this._schemas[schemaKeyRef];
- delete this._refs[schemaKeyRef];
- return this;
- case 'object':
- var serialize = this._opts.serialize;
- var cacheKey = serialize ? serialize(schemaKeyRef) : schemaKeyRef;
- this._cache.del(cacheKey);
- var id = this._getId(schemaKeyRef);
- if (id) {
- id = resolve.normalizeId(id);
- delete this._schemas[id];
- delete this._refs[id];
- }
- }
- return this;
-}
-
-
-function _removeAllSchemas(self, schemas, regex) {
- for (var keyRef in schemas) {
- var schemaObj = schemas[keyRef];
- if (!schemaObj.meta && (!regex || regex.test(keyRef))) {
- self._cache.del(schemaObj.cacheKey);
- delete schemas[keyRef];
- }
- }
-}
-
-
-/* @this Ajv */
-function _addSchema(schema, skipValidation, meta, shouldAddSchema) {
- if (typeof schema != 'object' && typeof schema != 'boolean')
- throw new Error('schema should be object or boolean');
- var serialize = this._opts.serialize;
- var cacheKey = serialize ? serialize(schema) : schema;
- var cached = this._cache.get(cacheKey);
- if (cached) return cached;
-
- shouldAddSchema = shouldAddSchema || this._opts.addUsedSchema !== false;
-
- var id = resolve.normalizeId(this._getId(schema));
- if (id && shouldAddSchema) checkUnique(this, id);
-
- var willValidate = this._opts.validateSchema !== false && !skipValidation;
- var recursiveMeta;
- if (willValidate && !(recursiveMeta = id && id == resolve.normalizeId(schema.$schema)))
- this.validateSchema(schema, true);
-
- var localRefs = resolve.ids.call(this, schema);
-
- var schemaObj = new SchemaObject({
- id: id,
- schema: schema,
- localRefs: localRefs,
- cacheKey: cacheKey,
- meta: meta
- });
-
- if (id[0] != '#' && shouldAddSchema) this._refs[id] = schemaObj;
- this._cache.put(cacheKey, schemaObj);
-
- if (willValidate && recursiveMeta) this.validateSchema(schema, true);
-
- return schemaObj;
-}
-
-
-/* @this Ajv */
-function _compile(schemaObj, root) {
- if (schemaObj.compiling) {
- schemaObj.validate = callValidate;
- callValidate.schema = schemaObj.schema;
- callValidate.errors = null;
- callValidate.root = root ? root : callValidate;
- if (schemaObj.schema.$async === true)
- callValidate.$async = true;
- return callValidate;
- }
- schemaObj.compiling = true;
-
- var currentOpts;
- if (schemaObj.meta) {
- currentOpts = this._opts;
- this._opts = this._metaOpts;
- }
-
- var v;
- try { v = compileSchema.call(this, schemaObj.schema, root, schemaObj.localRefs); }
- catch(e) {
- delete schemaObj.validate;
- throw e;
- }
- finally {
- schemaObj.compiling = false;
- if (schemaObj.meta) this._opts = currentOpts;
- }
-
- schemaObj.validate = v;
- schemaObj.refs = v.refs;
- schemaObj.refVal = v.refVal;
- schemaObj.root = v.root;
- return v;
-
-
- /* @this {*} - custom context, see passContext option */
- function callValidate() {
- /* jshint validthis: true */
- var _validate = schemaObj.validate;
- var result = _validate.apply(this, arguments);
- callValidate.errors = _validate.errors;
- return result;
- }
-}
-
-
-function chooseGetId(opts) {
- switch (opts.schemaId) {
- case 'auto': return _get$IdOrId;
- case 'id': return _getId;
- default: return _get$Id;
- }
-}
-
-/* @this Ajv */
-function _getId(schema) {
- if (schema.$id) this.logger.warn('schema $id ignored', schema.$id);
- return schema.id;
-}
-
-/* @this Ajv */
-function _get$Id(schema) {
- if (schema.id) this.logger.warn('schema id ignored', schema.id);
- return schema.$id;
-}
-
-
-function _get$IdOrId(schema) {
- if (schema.$id && schema.id && schema.$id != schema.id)
- throw new Error('schema $id is different from id');
- return schema.$id || schema.id;
-}
-
-
-/**
- * Convert array of error message objects to string
- * @this Ajv
- * @param {Array<Object>} errors optional array of validation errors, if not passed errors from the instance are used.
- * @param {Object} options optional options with properties `separator` and `dataVar`.
- * @return {String} human readable string with all errors descriptions
- */
-function errorsText(errors, options) {
- errors = errors || this.errors;
- if (!errors) return 'No errors';
- options = options || {};
- var separator = options.separator === undefined ? ', ' : options.separator;
- var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;
-
- var text = '';
- for (var i=0; i<errors.length; i++) {
- var e = errors[i];
- if (e) text += dataVar + e.dataPath + ' ' + e.message + separator;
- }
- return text.slice(0, -separator.length);
-}
-
-
-/**
- * Add custom format
- * @this Ajv
- * @param {String} name format name
- * @param {String|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid)
- * @return {Ajv} this for method chaining
- */
-function addFormat(name, format) {
- if (typeof format == 'string') format = new RegExp(format);
- this._formats[name] = format;
- return this;
-}
-
-
-function addDefaultMetaSchema(self) {
- var $dataSchema;
- if (self._opts.$data) {
- $dataSchema = require('./refs/data.json');
- self.addMetaSchema($dataSchema, $dataSchema.$id, true);
- }
- if (self._opts.meta === false) return;
- var metaSchema = require('./refs/json-schema-draft-07.json');
- if (self._opts.$data) metaSchema = $dataMetaSchema(metaSchema, META_SUPPORT_DATA);
- self.addMetaSchema(metaSchema, META_SCHEMA_ID, true);
- self._refs['http://json-schema.org/schema'] = META_SCHEMA_ID;
-}
-
-
-function addInitialSchemas(self) {
- var optsSchemas = self._opts.schemas;
- if (!optsSchemas) return;
- if (Array.isArray(optsSchemas)) self.addSchema(optsSchemas);
- else for (var key in optsSchemas) self.addSchema(optsSchemas[key], key);
-}
-
-
-function addInitialFormats(self) {
- for (var name in self._opts.formats) {
- var format = self._opts.formats[name];
- self.addFormat(name, format);
- }
-}
-
-
-function checkUnique(self, id) {
- if (self._schemas[id] || self._refs[id])
- throw new Error('schema with key or id "' + id + '" already exists');
-}
-
-
-function getMetaSchemaOptions(self) {
- var metaOpts = util.copy(self._opts);
- for (var i=0; i<META_IGNORE_OPTIONS.length; i++)
- delete metaOpts[META_IGNORE_OPTIONS[i]];
- return metaOpts;
-}
-
-
-function setLogger(self) {
- var logger = self._opts.logger;
- if (logger === false) {
- self.logger = {log: noop, warn: noop, error: noop};
- } else {
- if (logger === undefined) logger = console;
- if (!(typeof logger == 'object' && logger.log && logger.warn && logger.error))
- throw new Error('logger must implement log, warn and error methods');
- self.logger = logger;
- }
-}
-
-
-function noop() {}
diff --git a/assets/node_modules/ajv/lib/cache.js b/assets/node_modules/ajv/lib/cache.js
deleted file mode 100644
index 7558874..0000000
--- a/assets/node_modules/ajv/lib/cache.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict';
-
-
-var Cache = module.exports = function Cache() {
- this._cache = {};
-};
-
-
-Cache.prototype.put = function Cache_put(key, value) {
- this._cache[key] = value;
-};
-
-
-Cache.prototype.get = function Cache_get(key) {
- return this._cache[key];
-};
-
-
-Cache.prototype.del = function Cache_del(key) {
- delete this._cache[key];
-};
-
-
-Cache.prototype.clear = function Cache_clear() {
- this._cache = {};
-};
diff --git a/assets/node_modules/ajv/lib/compile/async.js b/assets/node_modules/ajv/lib/compile/async.js
deleted file mode 100644
index 6a30b88..0000000
--- a/assets/node_modules/ajv/lib/compile/async.js
+++ /dev/null
@@ -1,90 +0,0 @@
-'use strict';
-
-var MissingRefError = require('./error_classes').MissingRef;
-
-module.exports = compileAsync;
-
-
-/**
- * Creates validating function for passed schema with asynchronous loading of missing schemas.
- * `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.
- * @this Ajv
- * @param {Object} schema schema object
- * @param {Boolean} meta optional true to compile meta-schema; this parameter can be skipped
- * @param {Function} callback an optional node-style callback, it is called with 2 parameters: error (or null) and validating function.
- * @return {Promise} promise that resolves with a validating function.
- */
-function compileAsync(schema, meta, callback) {
- /* eslint no-shadow: 0 */
- /* global Promise */
- /* jshint validthis: true */
- var self = this;
- if (typeof this._opts.loadSchema != 'function')
- throw new Error('options.loadSchema should be a function');
-
- if (typeof meta == 'function') {
- callback = meta;
- meta = undefined;
- }
-
- var p = loadMetaSchemaOf(schema).then(function () {
- var schemaObj = self._addSchema(schema, undefined, meta);
- return schemaObj.validate || _compileAsync(schemaObj);
- });
-
- if (callback) {
- p.then(
- function(v) { callback(null, v); },
- callback
- );
- }
-
- return p;
-
-
- function loadMetaSchemaOf(sch) {
- var $schema = sch.$schema;
- return $schema && !self.getSchema($schema)
- ? compileAsync.call(self, { $ref: $schema }, true)
- : Promise.resolve();
- }
-
-
- function _compileAsync(schemaObj) {
- try { return self._compile(schemaObj); }
- catch(e) {
- if (e instanceof MissingRefError) return loadMissingSchema(e);
- throw e;
- }
-
-
- function loadMissingSchema(e) {
- var ref = e.missingSchema;
- if (added(ref)) throw new Error('Schema ' + ref + ' is loaded but ' + e.missingRef + ' cannot be resolved');
-
- var schemaPromise = self._loadingSchemas[ref];
- if (!schemaPromise) {
- schemaPromise = self._loadingSchemas[ref] = self._opts.loadSchema(ref);
- schemaPromise.then(removePromise, removePromise);
- }
-
- return schemaPromise.then(function (sch) {
- if (!added(ref)) {
- return loadMetaSchemaOf(sch).then(function () {
- if (!added(ref)) self.addSchema(sch, ref, undefined, meta);
- });
- }
- }).then(function() {
- return _compileAsync(schemaObj);
- });
-
- function removePromise() {
- delete self._loadingSchemas[ref];
- }
-
- function added(ref) {
- return self._refs[ref] || self._schemas[ref];
- }
- }
- }
-}
diff --git a/assets/node_modules/ajv/lib/compile/equal.js b/assets/node_modules/ajv/lib/compile/equal.js
deleted file mode 100644
index 4b271d5..0000000
--- a/assets/node_modules/ajv/lib/compile/equal.js
+++ /dev/null
@@ -1,5 +0,0 @@
-'use strict';
-
-// do NOT remove this file - it would break pre-compiled schemas
-// https://github.com/epoberezkin/ajv/issues/889
-module.exports = require('fast-deep-equal');
diff --git a/assets/node_modules/ajv/lib/compile/error_classes.js b/assets/node_modules/ajv/lib/compile/error_classes.js
deleted file mode 100644
index 0b0ec4e..0000000
--- a/assets/node_modules/ajv/lib/compile/error_classes.js
+++ /dev/null
@@ -1,34 +0,0 @@
-'use strict';
-
-var resolve = require('./resolve');
-
-module.exports = {
- Validation: errorSubclass(ValidationError),
- MissingRef: errorSubclass(MissingRefError)
-};
-
-
-function ValidationError(errors) {
- this.message = 'validation failed';
- this.errors = errors;
- this.ajv = this.validation = true;
-}
-
-
-MissingRefError.message = function (baseId, ref) {
- return 'can\'t resolve reference ' + ref + ' from id ' + baseId;
-};
-
-
-function MissingRefError(baseId, ref, message) {
- this.message = message || MissingRefError.message(baseId, ref);
- this.missingRef = resolve.url(baseId, ref);
- this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef));
-}
-
-
-function errorSubclass(Subclass) {
- Subclass.prototype = Object.create(Error.prototype);
- Subclass.prototype.constructor = Subclass;
- return Subclass;
-}
diff --git a/assets/node_modules/ajv/lib/compile/formats.js b/assets/node_modules/ajv/lib/compile/formats.js
deleted file mode 100644
index d06792a..0000000
--- a/assets/node_modules/ajv/lib/compile/formats.js
+++ /dev/null
@@ -1,149 +0,0 @@
-'use strict';
-
-var util = require('./util');
-
-var DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/;
-var DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31];
-var TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i;
-var HOSTNAME = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i;
-var URI = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;
-var URIREF = /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;
-// uri-template: https://tools.ietf.org/html/rfc6570
-var URITEMPLATE = /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i;
-// For the source: https://gist.github.com/dperini/729294
-// For test cases: https://mathiasbynens.be/demo/url-regex
-// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.
-// var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu;
-var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i;
-var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;
-var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$/;
-var JSON_POINTER_URI_FRAGMENT = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;
-var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;
-
-
-module.exports = formats;
-
-function formats(mode) {
- mode = mode == 'full' ? 'full' : 'fast';
- return util.copy(formats[mode]);
-}
-
-
-formats.fast = {
- // date: http://tools.ietf.org/html/rfc3339#section-5.6
- date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/,
- // date-time: http://tools.ietf.org/html/rfc3339#section-5.6
- time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,
- 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,
- // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js
- uri: /^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,
- 'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,
- 'uri-template': URITEMPLATE,
- url: URL,
- // email (sources from jsen validator):
- // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363
- // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')
- email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,
- hostname: HOSTNAME,
- // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html
- ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,
- // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses
- ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,
- regex: regex,
- // uuid: http://tools.ietf.org/html/rfc4122
- uuid: UUID,
- // JSON-pointer: https://tools.ietf.org/html/rfc6901
- // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A
- 'json-pointer': JSON_POINTER,
- 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,
- // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00
- 'relative-json-pointer': RELATIVE_JSON_POINTER
-};
-
-
-formats.full = {
- date: date,
- time: time,
- 'date-time': date_time,
- uri: uri,
- 'uri-reference': URIREF,
- 'uri-template': URITEMPLATE,
- url: URL,
- email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,
- hostname: hostname,
- ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,
- ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,
- regex: regex,
- uuid: UUID,
- 'json-pointer': JSON_POINTER,
- 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,
- 'relative-json-pointer': RELATIVE_JSON_POINTER
-};
-
-
-function isLeapYear(year) {
- // https://tools.ietf.org/html/rfc3339#appendix-C
- return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
-}
-
-
-function date(str) {
- // full-date from http://tools.ietf.org/html/rfc3339#section-5.6
- var matches = str.match(DATE);
- if (!matches) return false;
-
- var year = +matches[1];
- var month = +matches[2];
- var day = +matches[3];
-
- return month >= 1 && month <= 12 && day >= 1 &&
- day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);
-}
-
-
-function time(str, full) {
- var matches = str.match(TIME);
- if (!matches) return false;
-
- var hour = matches[1];
- var minute = matches[2];
- var second = matches[3];
- var timeZone = matches[5];
- return ((hour <= 23 && minute <= 59 && second <= 59) ||
- (hour == 23 && minute == 59 && second == 60)) &&
- (!full || timeZone);
-}
-
-
-var DATE_TIME_SEPARATOR = /t|\s/i;
-function date_time(str) {
- // http://tools.ietf.org/html/rfc3339#section-5.6
- var dateTime = str.split(DATE_TIME_SEPARATOR);
- return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);
-}
-
-
-function hostname(str) {
- // https://tools.ietf.org/html/rfc1034#section-3.5
- // https://tools.ietf.org/html/rfc1123#section-2
- return str.length <= 255 && HOSTNAME.test(str);
-}
-
-
-var NOT_URI_FRAGMENT = /\/|:/;
-function uri(str) {
- // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "."
- return NOT_URI_FRAGMENT.test(str) && URI.test(str);
-}
-
-
-var Z_ANCHOR = /[^\\]\\Z/;
-function regex(str) {
- if (Z_ANCHOR.test(str)) return false;
- try {
- new RegExp(str);
- return true;
- } catch(e) {
- return false;
- }
-}
diff --git a/assets/node_modules/ajv/lib/compile/index.js b/assets/node_modules/ajv/lib/compile/index.js
deleted file mode 100644
index f4d3f0d..0000000
--- a/assets/node_modules/ajv/lib/compile/index.js
+++ /dev/null
@@ -1,387 +0,0 @@
-'use strict';
-
-var resolve = require('./resolve')
- , util = require('./util')
- , errorClasses = require('./error_classes')
- , stableStringify = require('fast-json-stable-stringify');
-
-var validateGenerator = require('../dotjs/validate');
-
-/**
- * Functions below are used inside compiled validations function
- */
-
-var ucs2length = util.ucs2length;
-var equal = require('fast-deep-equal');
-
-// this error is thrown by async schemas to return validation errors via exception
-var ValidationError = errorClasses.Validation;
-
-module.exports = compile;
-
-
-/**
- * Compiles schema to validation function
- * @this Ajv
- * @param {Object} schema schema object
- * @param {Object} root object with information about the root schema for this schema
- * @param {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution
- * @param {String} baseId base ID for IDs in the schema
- * @return {Function} validation function
- */
-function compile(schema, root, localRefs, baseId) {
- /* jshint validthis: true, evil: true */
- /* eslint no-shadow: 0 */
- var self = this
- , opts = this._opts
- , refVal = [ undefined ]
- , refs = {}
- , patterns = []
- , patternsHash = {}
- , defaults = []
- , defaultsHash = {}
- , customRules = [];
-
- root = root || { schema: schema, refVal: refVal, refs: refs };
-
- var c = checkCompiling.call(this, schema, root, baseId);
- var compilation = this._compilations[c.index];
- if (c.compiling) return (compilation.callValidate = callValidate);
-
- var formats = this._formats;
- var RULES = this.RULES;
-
- try {
- var v = localCompile(schema, root, localRefs, baseId);
- compilation.validate = v;
- var cv = compilation.callValidate;
- if (cv) {
- cv.schema = v.schema;
- cv.errors = null;
- cv.refs = v.refs;
- cv.refVal = v.refVal;
- cv.root = v.root;
- cv.$async = v.$async;
- if (opts.sourceCode) cv.source = v.source;
- }
- return v;
- } finally {
- endCompiling.call(this, schema, root, baseId);
- }
-
- /* @this {*} - custom context, see passContext option */
- function callValidate() {
- /* jshint validthis: true */
- var validate = compilation.validate;
- var result = validate.apply(this, arguments);
- callValidate.errors = validate.errors;
- return result;
- }
-
- function localCompile(_schema, _root, localRefs, baseId) {
- var isRoot = !_root || (_root && _root.schema == _schema);
- if (_root.schema != root.schema)
- return compile.call(self, _schema, _root, localRefs, baseId);
-
- var $async = _schema.$async === true;
-
- var sourceCode = validateGenerator({
- isTop: true,
- schema: _schema,
- isRoot: isRoot,
- baseId: baseId,
- root: _root,
- schemaPath: '',
- errSchemaPath: '#',
- errorPath: '""',
- MissingRefError: errorClasses.MissingRef,
- RULES: RULES,
- validate: validateGenerator,
- util: util,
- resolve: resolve,
- resolveRef: resolveRef,
- usePattern: usePattern,
- useDefault: useDefault,
- useCustomRule: useCustomRule,
- opts: opts,
- formats: formats,
- logger: self.logger,
- self: self
- });
-
- sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode)
- + vars(defaults, defaultCode) + vars(customRules, customRuleCode)
- + sourceCode;
-
- if (opts.processCode) sourceCode = opts.processCode(sourceCode);
- // console.log('\n\n\n *** \n', JSON.stringify(sourceCode));
- var validate;
- try {
- var makeValidate = new Function(
- 'self',
- 'RULES',
- 'formats',
- 'root',
- 'refVal',
- 'defaults',
- 'customRules',
- 'equal',
- 'ucs2length',
- 'ValidationError',
- sourceCode
- );
-
- validate = makeValidate(
- self,
- RULES,
- formats,
- root,
- refVal,
- defaults,
- customRules,
- equal,
- ucs2length,
- ValidationError
- );
-
- refVal[0] = validate;
- } catch(e) {
- self.logger.error('Error compiling schema, function code:', sourceCode);
- throw e;
- }
-
- validate.schema = _schema;
- validate.errors = null;
- validate.refs = refs;
- validate.refVal = refVal;
- validate.root = isRoot ? validate : _root;
- if ($async) validate.$async = true;
- if (opts.sourceCode === true) {
- validate.source = {
- code: sourceCode,
- patterns: patterns,
- defaults: defaults
- };
- }
-
- return validate;
- }
-
- function resolveRef(baseId, ref, isRoot) {
- ref = resolve.url(baseId, ref);
- var refIndex = refs[ref];
- var _refVal, refCode;
- if (refIndex !== undefined) {
- _refVal = refVal[refIndex];
- refCode = 'refVal[' + refIndex + ']';
- return resolvedRef(_refVal, refCode);
- }
- if (!isRoot && root.refs) {
- var rootRefId = root.refs[ref];
- if (rootRefId !== undefined) {
- _refVal = root.refVal[rootRefId];
- refCode = addLocalRef(ref, _refVal);
- return resolvedRef(_refVal, refCode);
- }
- }
-
- refCode = addLocalRef(ref);
- var v = resolve.call(self, localCompile, root, ref);
- if (v === undefined) {
- var localSchema = localRefs && localRefs[ref];
- if (localSchema) {
- v = resolve.inlineRef(localSchema, opts.inlineRefs)
- ? localSchema
- : compile.call(self, localSchema, root, localRefs, baseId);
- }
- }
-
- if (v === undefined) {
- removeLocalRef(ref);
- } else {
- replaceLocalRef(ref, v);
- return resolvedRef(v, refCode);
- }
- }
-
- function addLocalRef(ref, v) {
- var refId = refVal.length;
- refVal[refId] = v;
- refs[ref] = refId;
- return 'refVal' + refId;
- }
-
- function removeLocalRef(ref) {
- delete refs[ref];
- }
-
- function replaceLocalRef(ref, v) {
- var refId = refs[ref];
- refVal[refId] = v;
- }
-
- function resolvedRef(refVal, code) {
- return typeof refVal == 'object' || typeof refVal == 'boolean'
- ? { code: code, schema: refVal, inline: true }
- : { code: code, $async: refVal && !!refVal.$async };
- }
-
- function usePattern(regexStr) {
- var index = patternsHash[regexStr];
- if (index === undefined) {
- index = patternsHash[regexStr] = patterns.length;
- patterns[index] = regexStr;
- }
- return 'pattern' + index;
- }
-
- function useDefault(value) {
- switch (typeof value) {
- case 'boolean':
- case 'number':
- return '' + value;
- case 'string':
- return util.toQuotedString(value);
- case 'object':
- if (value === null) return 'null';
- var valueStr = stableStringify(value);
- var index = defaultsHash[valueStr];
- if (index === undefined) {
- index = defaultsHash[valueStr] = defaults.length;
- defaults[index] = value;
- }
- return 'default' + index;
- }
- }
-
- function useCustomRule(rule, schema, parentSchema, it) {
- if (self._opts.validateSchema !== false) {
- var deps = rule.definition.dependencies;
- if (deps && !deps.every(function(keyword) {
- return Object.prototype.hasOwnProperty.call(parentSchema, keyword);
- }))
- throw new Error('parent schema must have all required keywords: ' + deps.join(','));
-
- var validateSchema = rule.definition.validateSchema;
- if (validateSchema) {
- var valid = validateSchema(schema);
- if (!valid) {
- var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);
- if (self._opts.validateSchema == 'log') self.logger.error(message);
- else throw new Error(message);
- }
- }
- }
-
- var compile = rule.definition.compile
- , inline = rule.definition.inline
- , macro = rule.definition.macro;
-
- var validate;
- if (compile) {
- validate = compile.call(self, schema, parentSchema, it);
- } else if (macro) {
- validate = macro.call(self, schema, parentSchema, it);
- if (opts.validateSchema !== false) self.validateSchema(validate, true);
- } else if (inline) {
- validate = inline.call(self, it, rule.keyword, schema, parentSchema);
- } else {
- validate = rule.definition.validate;
- if (!validate) return;
- }
-
- if (validate === undefined)
- throw new Error('custom keyword "' + rule.keyword + '"failed to compile');
-
- var index = customRules.length;
- customRules[index] = validate;
-
- return {
- code: 'customRule' + index,
- validate: validate
- };
- }
-}
-
-
-/**
- * Checks if the schema is currently compiled
- * @this Ajv
- * @param {Object} schema schema to compile
- * @param {Object} root root object
- * @param {String} baseId base schema ID
- * @return {Object} object with properties "index" (compilation index) and "compiling" (boolean)
- */
-function checkCompiling(schema, root, baseId) {
- /* jshint validthis: true */
- var index = compIndex.call(this, schema, root, baseId);
- if (index >= 0) return { index: index, compiling: true };
- index = this._compilations.length;
- this._compilations[index] = {
- schema: schema,
- root: root,
- baseId: baseId
- };
- return { index: index, compiling: false };
-}
-
-
-/**
- * Removes the schema from the currently compiled list
- * @this Ajv
- * @param {Object} schema schema to compile
- * @param {Object} root root object
- * @param {String} baseId base schema ID
- */
-function endCompiling(schema, root, baseId) {
- /* jshint validthis: true */
- var i = compIndex.call(this, schema, root, baseId);
- if (i >= 0) this._compilations.splice(i, 1);
-}
-
-
-/**
- * Index of schema compilation in the currently compiled list
- * @this Ajv
- * @param {Object} schema schema to compile
- * @param {Object} root root object
- * @param {String} baseId base schema ID
- * @return {Integer} compilation index
- */
-function compIndex(schema, root, baseId) {
- /* jshint validthis: true */
- for (var i=0; i<this._compilations.length; i++) {
- var c = this._compilations[i];
- if (c.schema == schema && c.root == root && c.baseId == baseId) return i;
- }
- return -1;
-}
-
-
-function patternCode(i, patterns) {
- return 'var pattern' + i + ' = new RegExp(' + util.toQuotedString(patterns[i]) + ');';
-}
-
-
-function defaultCode(i) {
- return 'var default' + i + ' = defaults[' + i + '];';
-}
-
-
-function refValCode(i, refVal) {
- return refVal[i] === undefined ? '' : 'var refVal' + i + ' = refVal[' + i + '];';
-}
-
-
-function customRuleCode(i) {
- return 'var customRule' + i + ' = customRules[' + i + '];';
-}
-
-
-function vars(arr, statement) {
- if (!arr.length) return '';
- var code = '';
- for (var i=0; i<arr.length; i++)
- code += statement(i, arr);
- return code;
-}
diff --git a/assets/node_modules/ajv/lib/compile/resolve.js b/assets/node_modules/ajv/lib/compile/resolve.js
deleted file mode 100644
index 66f2aee..0000000
--- a/assets/node_modules/ajv/lib/compile/resolve.js
+++ /dev/null
@@ -1,270 +0,0 @@
-'use strict';
-
-var URI = require('uri-js')
- , equal = require('fast-deep-equal')
- , util = require('./util')
- , SchemaObject = require('./schema_obj')
- , traverse = require('json-schema-traverse');
-
-module.exports = resolve;
-
-resolve.normalizeId = normalizeId;
-resolve.fullPath = getFullPath;
-resolve.url = resolveUrl;
-resolve.ids = resolveIds;
-resolve.inlineRef = inlineRef;
-resolve.schema = resolveSchema;
-
-/**
- * [resolve and compile the references ($ref)]
- * @this Ajv
- * @param {Function} compile reference to schema compilation funciton (localCompile)
- * @param {Object} root object with information about the root schema for the current schema
- * @param {String} ref reference to resolve
- * @return {Object|Function} schema object (if the schema can be inlined) or validation function
- */
-function resolve(compile, root, ref) {
- /* jshint validthis: true */
- var refVal = this._refs[ref];
- if (typeof refVal == 'string') {
- if (this._refs[refVal]) refVal = this._refs[refVal];
- else return resolve.call(this, compile, root, refVal);
- }
-
- refVal = refVal || this._schemas[ref];
- if (refVal instanceof SchemaObject) {
- return inlineRef(refVal.schema, this._opts.inlineRefs)
- ? refVal.schema
- : refVal.validate || this._compile(refVal);
- }
-
- var res = resolveSchema.call(this, root, ref);
- var schema, v, baseId;
- if (res) {
- schema = res.schema;
- root = res.root;
- baseId = res.baseId;
- }
-
- if (schema instanceof SchemaObject) {
- v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId);
- } else if (schema !== undefined) {
- v = inlineRef(schema, this._opts.inlineRefs)
- ? schema
- : compile.call(this, schema, root, undefined, baseId);
- }
-
- return v;
-}
-
-
-/**
- * Resolve schema, its root and baseId
- * @this Ajv
- * @param {Object} root root object with properties schema, refVal, refs
- * @param {String} ref reference to resolve
- * @return {Object} object with properties schema, root, baseId
- */
-function resolveSchema(root, ref) {
- /* jshint validthis: true */
- var p = URI.parse(ref)
- , refPath = _getFullPath(p)
- , baseId = getFullPath(this._getId(root.schema));
- if (Object.keys(root.schema).length === 0 || refPath !== baseId) {
- var id = normalizeId(refPath);
- var refVal = this._refs[id];
- if (typeof refVal == 'string') {
- return resolveRecursive.call(this, root, refVal, p);
- } else if (refVal instanceof SchemaObject) {
- if (!refVal.validate) this._compile(refVal);
- root = refVal;
- } else {
- refVal = this._schemas[id];
- if (refVal instanceof SchemaObject) {
- if (!refVal.validate) this._compile(refVal);
- if (id == normalizeId(ref))
- return { schema: refVal, root: root, baseId: baseId };
- root = refVal;
- } else {
- return;
- }
- }
- if (!root.schema) return;
- baseId = getFullPath(this._getId(root.schema));
- }
- return getJsonPointer.call(this, p, baseId, root.schema, root);
-}
-
-
-/* @this Ajv */
-function resolveRecursive(root, ref, parsedRef) {
- /* jshint validthis: true */
- var res = resolveSchema.call(this, root, ref);
- if (res) {
- var schema = res.schema;
- var baseId = res.baseId;
- root = res.root;
- var id = this._getId(schema);
- if (id) baseId = resolveUrl(baseId, id);
- return getJsonPointer.call(this, parsedRef, baseId, schema, root);
- }
-}
-
-
-var PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']);
-/* @this Ajv */
-function getJsonPointer(parsedRef, baseId, schema, root) {
- /* jshint validthis: true */
- parsedRef.fragment = parsedRef.fragment || '';
- if (parsedRef.fragment.slice(0,1) != '/') return;
- var parts = parsedRef.fragment.split('/');
-
- for (var i = 1; i < parts.length; i++) {
- var part = parts[i];
- if (part) {
- part = util.unescapeFragment(part);
- schema = schema[part];
- if (schema === undefined) break;
- var id;
- if (!PREVENT_SCOPE_CHANGE[part]) {
- id = this._getId(schema);
- if (id) baseId = resolveUrl(baseId, id);
- if (schema.$ref) {
- var $ref = resolveUrl(baseId, schema.$ref);
- var res = resolveSchema.call(this, root, $ref);
- if (res) {
- schema = res.schema;
- root = res.root;
- baseId = res.baseId;
- }
- }
- }
- }
- }
- if (schema !== undefined && schema !== root.schema)
- return { schema: schema, root: root, baseId: baseId };
-}
-
-
-var SIMPLE_INLINED = util.toHash([
- 'type', 'format', 'pattern',
- 'maxLength', 'minLength',
- 'maxProperties', 'minProperties',
- 'maxItems', 'minItems',
- 'maximum', 'minimum',
- 'uniqueItems', 'multipleOf',
- 'required', 'enum'
-]);
-function inlineRef(schema, limit) {
- if (limit === false) return false;
- if (limit === undefined || limit === true) return checkNoRef(schema);
- else if (limit) return countKeys(schema) <= limit;
-}
-
-
-function checkNoRef(schema) {
- var item;
- if (Array.isArray(schema)) {
- for (var i=0; i<schema.length; i++) {
- item = schema[i];
- if (typeof item == 'object' && !checkNoRef(item)) return false;
- }
- } else {
- for (var key in schema) {
- if (key == '$ref') return false;
- item = schema[key];
- if (typeof item == 'object' && !checkNoRef(item)) return false;
- }
- }
- return true;
-}
-
-
-function countKeys(schema) {
- var count = 0, item;
- if (Array.isArray(schema)) {
- for (var i=0; i<schema.length; i++) {
- item = schema[i];
- if (typeof item == 'object') count += countKeys(item);
- if (count == Infinity) return Infinity;
- }
- } else {
- for (var key in schema) {
- if (key == '$ref') return Infinity;
- if (SIMPLE_INLINED[key]) {
- count++;
- } else {
- item = schema[key];
- if (typeof item == 'object') count += countKeys(item) + 1;
- if (count == Infinity) return Infinity;
- }
- }
- }
- return count;
-}
-
-
-function getFullPath(id, normalize) {
- if (normalize !== false) id = normalizeId(id);
- var p = URI.parse(id);
- return _getFullPath(p);
-}
-
-
-function _getFullPath(p) {
- return URI.serialize(p).split('#')[0] + '#';
-}
-
-
-var TRAILING_SLASH_HASH = /#\/?$/;
-function normalizeId(id) {
- return id ? id.replace(TRAILING_SLASH_HASH, '') : '';
-}
-
-
-function resolveUrl(baseId, id) {
- id = normalizeId(id);
- return URI.resolve(baseId, id);
-}
-
-
-/* @this Ajv */
-function resolveIds(schema) {
- var schemaId = normalizeId(this._getId(schema));
- var baseIds = {'': schemaId};
- var fullPaths = {'': getFullPath(schemaId, false)};
- var localRefs = {};
- var self = this;
-
- traverse(schema, {allKeys: true}, function(sch, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {
- if (jsonPtr === '') return;
- var id = self._getId(sch);
- var baseId = baseIds[parentJsonPtr];
- var fullPath = fullPaths[parentJsonPtr] + '/' + parentKeyword;
- if (keyIndex !== undefined)
- fullPath += '/' + (typeof keyIndex == 'number' ? keyIndex : util.escapeFragment(keyIndex));
-
- if (typeof id == 'string') {
- id = baseId = normalizeId(baseId ? URI.resolve(baseId, id) : id);
-
- var refVal = self._refs[id];
- if (typeof refVal == 'string') refVal = self._refs[refVal];
- if (refVal && refVal.schema) {
- if (!equal(sch, refVal.schema))
- throw new Error('id "' + id + '" resolves to more than one schema');
- } else if (id != normalizeId(fullPath)) {
- if (id[0] == '#') {
- if (localRefs[id] && !equal(sch, localRefs[id]))
- throw new Error('id "' + id + '" resolves to more than one schema');
- localRefs[id] = sch;
- } else {
- self._refs[id] = fullPath;
- }
- }
- }
- baseIds[jsonPtr] = baseId;
- fullPaths[jsonPtr] = fullPath;
- });
-
- return localRefs;
-}
diff --git a/assets/node_modules/ajv/lib/compile/rules.js b/assets/node_modules/ajv/lib/compile/rules.js
deleted file mode 100644
index 08b25ae..0000000
--- a/assets/node_modules/ajv/lib/compile/rules.js
+++ /dev/null
@@ -1,66 +0,0 @@
-'use strict';
-
-var ruleModules = require('../dotjs')
- , toHash = require('./util').toHash;
-
-module.exports = function rules() {
- var RULES = [
- { type: 'number',
- rules: [ { 'maximum': ['exclusiveMaximum'] },
- { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] },
- { type: 'string',
- rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },
- { type: 'array',
- rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] },
- { type: 'object',
- rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames',
- { 'properties': ['additionalProperties', 'patternProperties'] } ] },
- { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] }
- ];
-
- var ALL = [ 'type', '$comment' ];
- var KEYWORDS = [
- '$schema', '$id', 'id', '$data', '$async', 'title',
- 'description', 'default', 'definitions',
- 'examples', 'readOnly', 'writeOnly',
- 'contentMediaType', 'contentEncoding',
- 'additionalItems', 'then', 'else'
- ];
- var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];
- RULES.all = toHash(ALL);
- RULES.types = toHash(TYPES);
-
- RULES.forEach(function (group) {
- group.rules = group.rules.map(function (keyword) {
- var implKeywords;
- if (typeof keyword == 'object') {
- var key = Object.keys(keyword)[0];
- implKeywords = keyword[key];
- keyword = key;
- implKeywords.forEach(function (k) {
- ALL.push(k);
- RULES.all[k] = true;
- });
- }
- ALL.push(keyword);
- var rule = RULES.all[keyword] = {
- keyword: keyword,
- code: ruleModules[keyword],
- implements: implKeywords
- };
- return rule;
- });
-
- RULES.all.$comment = {
- keyword: '$comment',
- code: ruleModules.$comment
- };
-
- if (group.type) RULES.types[group.type] = group;
- });
-
- RULES.keywords = toHash(ALL.concat(KEYWORDS));
- RULES.custom = {};
-
- return RULES;
-};
diff --git a/assets/node_modules/ajv/lib/compile/schema_obj.js b/assets/node_modules/ajv/lib/compile/schema_obj.js
deleted file mode 100644
index e7903b0..0000000
--- a/assets/node_modules/ajv/lib/compile/schema_obj.js
+++ /dev/null
@@ -1,9 +0,0 @@
-'use strict';
-
-var util = require('./util');
-
-module.exports = SchemaObject;
-
-function SchemaObject(obj) {
- util.copy(obj, this);
-}
diff --git a/assets/node_modules/ajv/lib/compile/ucs2length.js b/assets/node_modules/ajv/lib/compile/ucs2length.js
deleted file mode 100644
index d193fb1..0000000
--- a/assets/node_modules/ajv/lib/compile/ucs2length.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict';
-
-// https://mathiasbynens.be/notes/javascript-encoding
-// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode
-module.exports = function ucs2length(str) {
- var length = 0
- , len = str.length
- , pos = 0
- , value;
- while (pos < len) {
- length++;
- value = str.charCodeAt(pos++);
- if (value >= 0xD800 && value <= 0xDBFF && pos < len) {
- // high surrogate, and there is a next character
- value = str.charCodeAt(pos);
- if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate
- }
- }
- return length;
-};
diff --git a/assets/node_modules/ajv/lib/compile/util.js b/assets/node_modules/ajv/lib/compile/util.js
deleted file mode 100644
index 0efa001..0000000
--- a/assets/node_modules/ajv/lib/compile/util.js
+++ /dev/null
@@ -1,274 +0,0 @@
-'use strict';
-
-
-module.exports = {
- copy: copy,
- checkDataType: checkDataType,
- checkDataTypes: checkDataTypes,
- coerceToTypes: coerceToTypes,
- toHash: toHash,
- getProperty: getProperty,
- escapeQuotes: escapeQuotes,
- equal: require('fast-deep-equal'),
- ucs2length: require('./ucs2length'),
- varOccurences: varOccurences,
- varReplace: varReplace,
- cleanUpCode: cleanUpCode,
- finalCleanUpCode: finalCleanUpCode,
- schemaHasRules: schemaHasRules,
- schemaHasRulesExcept: schemaHasRulesExcept,
- schemaUnknownRules: schemaUnknownRules,
- toQuotedString: toQuotedString,
- getPathExpr: getPathExpr,
- getPath: getPath,
- getData: getData,
- unescapeFragment: unescapeFragment,
- unescapeJsonPointer: unescapeJsonPointer,
- escapeFragment: escapeFragment,
- escapeJsonPointer: escapeJsonPointer
-};
-
-
-function copy(o, to) {
- to = to || {};
- for (var key in o) to[key] = o[key];
- return to;
-}
-
-
-function checkDataType(dataType, data, negate) {
- var EQUAL = negate ? ' !== ' : ' === '
- , AND = negate ? ' || ' : ' && '
- , OK = negate ? '!' : ''
- , NOT = negate ? '' : '!';
- switch (dataType) {
- case 'null': return data + EQUAL + 'null';
- case 'array': return OK + 'Array.isArray(' + data + ')';
- case 'object': return '(' + OK + data + AND +
- 'typeof ' + data + EQUAL + '"object"' + AND +
- NOT + 'Array.isArray(' + data + '))';
- case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND +
- NOT + '(' + data + ' % 1)' +
- AND + data + EQUAL + data + ')';
- default: return 'typeof ' + data + EQUAL + '"' + dataType + '"';
- }
-}
-
-
-function checkDataTypes(dataTypes, data) {
- switch (dataTypes.length) {
- case 1: return checkDataType(dataTypes[0], data, true);
- default:
- var code = '';
- var types = toHash(dataTypes);
- if (types.array && types.object) {
- code = types.null ? '(': '(!' + data + ' || ';
- code += 'typeof ' + data + ' !== "object")';
- delete types.null;
- delete types.array;
- delete types.object;
- }
- if (types.number) delete types.integer;
- for (var t in types)
- code += (code ? ' && ' : '' ) + checkDataType(t, data, true);
-
- return code;
- }
-}
-
-
-var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);
-function coerceToTypes(optionCoerceTypes, dataTypes) {
- if (Array.isArray(dataTypes)) {
- var types = [];
- for (var i=0; i<dataTypes.length; i++) {
- var t = dataTypes[i];
- if (COERCE_TO_TYPES[t]) types[types.length] = t;
- else if (optionCoerceTypes === 'array' && t === 'array') types[types.length] = t;
- }
- if (types.length) return types;
- } else if (COERCE_TO_TYPES[dataTypes]) {
- return [dataTypes];
- } else if (optionCoerceTypes === 'array' && dataTypes === 'array') {
- return ['array'];
- }
-}
-
-
-function toHash(arr) {
- var hash = {};
- for (var i=0; i<arr.length; i++) hash[arr[i]] = true;
- return hash;
-}
-
-
-var IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;
-var SINGLE_QUOTE = /'|\\/g;
-function getProperty(key) {
- return typeof key == 'number'
- ? '[' + key + ']'
- : IDENTIFIER.test(key)
- ? '.' + key
- : "['" + escapeQuotes(key) + "']";
-}
-
-
-function escapeQuotes(str) {
- return str.replace(SINGLE_QUOTE, '\\$&')
- .replace(/\n/g, '\\n')
- .replace(/\r/g, '\\r')
- .replace(/\f/g, '\\f')
- .replace(/\t/g, '\\t');
-}
-
-
-function varOccurences(str, dataVar) {
- dataVar += '[^0-9]';
- var matches = str.match(new RegExp(dataVar, 'g'));
- return matches ? matches.length : 0;
-}
-
-
-function varReplace(str, dataVar, expr) {
- dataVar += '([^0-9])';
- expr = expr.replace(/\$/g, '$$$$');
- return str.replace(new RegExp(dataVar, 'g'), expr + '$1');
-}
-
-
-var EMPTY_ELSE = /else\s*{\s*}/g
- , EMPTY_IF_NO_ELSE = /if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g
- , EMPTY_IF_WITH_ELSE = /if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g;
-function cleanUpCode(out) {
- return out.replace(EMPTY_ELSE, '')
- .replace(EMPTY_IF_NO_ELSE, '')
- .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))');
-}
-
-
-var ERRORS_REGEXP = /[^v.]errors/g
- , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g
- , REMOVE_ERRORS_ASYNC = /var errors = 0;|var vErrors = null;/g
- , RETURN_VALID = 'return errors === 0;'
- , RETURN_TRUE = 'validate.errors = null; return true;'
- , RETURN_ASYNC = /if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/
- , RETURN_DATA_ASYNC = 'return data;'
- , ROOTDATA_REGEXP = /[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g
- , REMOVE_ROOTDATA = /if \(rootData === undefined\) rootData = data;/;
-
-function finalCleanUpCode(out, async) {
- var matches = out.match(ERRORS_REGEXP);
- if (matches && matches.length == 2) {
- out = async
- ? out.replace(REMOVE_ERRORS_ASYNC, '')
- .replace(RETURN_ASYNC, RETURN_DATA_ASYNC)
- : out.replace(REMOVE_ERRORS, '')
- .replace(RETURN_VALID, RETURN_TRUE);
- }
-
- matches = out.match(ROOTDATA_REGEXP);
- if (!matches || matches.length !== 3) return out;
- return out.replace(REMOVE_ROOTDATA, '');
-}
-
-
-function schemaHasRules(schema, rules) {
- if (typeof schema == 'boolean') return !schema;
- for (var key in schema) if (rules[key]) return true;
-}
-
-
-function schemaHasRulesExcept(schema, rules, exceptKeyword) {
- if (typeof schema == 'boolean') return !schema && exceptKeyword != 'not';
- for (var key in schema) if (key != exceptKeyword && rules[key]) return true;
-}
-
-
-function schemaUnknownRules(schema, rules) {
- if (typeof schema == 'boolean') return;
- for (var key in schema) if (!rules[key]) return key;
-}
-
-
-function toQuotedString(str) {
- return '\'' + escapeQuotes(str) + '\'';
-}
-
-
-function getPathExpr(currentPath, expr, jsonPointers, isNumber) {
- var path = jsonPointers // false by default
- ? '\'/\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \'~0\').replace(/\\//g, \'~1\')')
- : (isNumber ? '\'[\' + ' + expr + ' + \']\'' : '\'[\\\'\' + ' + expr + ' + \'\\\']\'');
- return joinPaths(currentPath, path);
-}
-
-
-function getPath(currentPath, prop, jsonPointers) {
- var path = jsonPointers // false by default
- ? toQuotedString('/' + escapeJsonPointer(prop))
- : toQuotedString(getProperty(prop));
- return joinPaths(currentPath, path);
-}
-
-
-var JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/;
-var RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;
-function getData($data, lvl, paths) {
- var up, jsonPointer, data, matches;
- if ($data === '') return 'rootData';
- if ($data[0] == '/') {
- if (!JSON_POINTER.test($data)) throw new Error('Invalid JSON-pointer: ' + $data);
- jsonPointer = $data;
- data = 'rootData';
- } else {
- matches = $data.match(RELATIVE_JSON_POINTER);
- if (!matches) throw new Error('Invalid JSON-pointer: ' + $data);
- up = +matches[1];
- jsonPointer = matches[2];
- if (jsonPointer == '#') {
- if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);
- return paths[lvl - up];
- }
-
- if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);
- data = 'data' + ((lvl - up) || '');
- if (!jsonPointer) return data;
- }
-
- var expr = data;
- var segments = jsonPointer.split('/');
- for (var i=0; i<segments.length; i++) {
- var segment = segments[i];
- if (segment) {
- data += getProperty(unescapeJsonPointer(segment));
- expr += ' && ' + data;
- }
- }
- return expr;
-}
-
-
-function joinPaths (a, b) {
- if (a == '""') return b;
- return (a + ' + ' + b).replace(/' \+ '/g, '');
-}
-
-
-function unescapeFragment(str) {
- return unescapeJsonPointer(decodeURIComponent(str));
-}
-
-
-function escapeFragment(str) {
- return encodeURIComponent(escapeJsonPointer(str));
-}
-
-
-function escapeJsonPointer(str) {
- return str.replace(/~/g, '~0').replace(/\//g, '~1');
-}
-
-
-function unescapeJsonPointer(str) {
- return str.replace(/~1/g, '/').replace(/~0/g, '~');
-}
diff --git a/assets/node_modules/ajv/lib/data.js b/assets/node_modules/ajv/lib/data.js
deleted file mode 100644
index 5f1ad85..0000000
--- a/assets/node_modules/ajv/lib/data.js
+++ /dev/null
@@ -1,49 +0,0 @@
-'use strict';
-
-var KEYWORDS = [
- 'multipleOf',
- 'maximum',
- 'exclusiveMaximum',
- 'minimum',
- 'exclusiveMinimum',
- 'maxLength',
- 'minLength',
- 'pattern',
- 'additionalItems',
- 'maxItems',
- 'minItems',
- 'uniqueItems',
- 'maxProperties',
- 'minProperties',
- 'required',
- 'additionalProperties',
- 'enum',
- 'format',
- 'const'
-];
-
-module.exports = function (metaSchema, keywordsJsonPointers) {
- for (var i=0; i<keywordsJsonPointers.length; i++) {
- metaSchema = JSON.parse(JSON.stringify(metaSchema));
- var segments = keywordsJsonPointers[i].split('/');
- var keywords = metaSchema;
- var j;
- for (j=1; j<segments.length; j++)
- keywords = keywords[segments[j]];
-
- for (j=0; j<KEYWORDS.length; j++) {
- var key = KEYWORDS[j];
- var schema = keywords[key];
- if (schema) {
- keywords[key] = {
- anyOf: [
- schema,
- { $ref: 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' }
- ]
- };
- }
- }
- }
-
- return metaSchema;
-};
diff --git a/assets/node_modules/ajv/lib/definition_schema.js b/assets/node_modules/ajv/lib/definition_schema.js
deleted file mode 100644
index e5f6b91..0000000
--- a/assets/node_modules/ajv/lib/definition_schema.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict';
-
-var metaSchema = require('./refs/json-schema-draft-07.json');
-
-module.exports = {
- $id: 'https://github.com/epoberezkin/ajv/blob/master/lib/definition_schema.js',
- definitions: {
- simpleTypes: metaSchema.definitions.simpleTypes
- },
- type: 'object',
- dependencies: {
- schema: ['validate'],
- $data: ['validate'],
- statements: ['inline'],
- valid: {not: {required: ['macro']}}
- },
- properties: {
- type: metaSchema.properties.type,
- schema: {type: 'boolean'},
- statements: {type: 'boolean'},
- dependencies: {
- type: 'array',
- items: {type: 'string'}
- },
- metaSchema: {type: 'object'},
- modifying: {type: 'boolean'},
- valid: {type: 'boolean'},
- $data: {type: 'boolean'},
- async: {type: 'boolean'},
- errors: {
- anyOf: [
- {type: 'boolean'},
- {const: 'full'}
- ]
- }
- }
-};
diff --git a/assets/node_modules/ajv/lib/dot/_limit.jst b/assets/node_modules/ajv/lib/dot/_limit.jst
deleted file mode 100644
index e10806f..0000000
--- a/assets/node_modules/ajv/lib/dot/_limit.jst
+++ /dev/null
@@ -1,104 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.$data }}
-
-{{## def.setExclusiveLimit:
- $exclusive = true;
- $errorKeyword = $exclusiveKeyword;
- $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
-#}}
-
-{{
- var $isMax = $keyword == 'maximum'
- , $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum'
- , $schemaExcl = it.schema[$exclusiveKeyword]
- , $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data
- , $op = $isMax ? '<' : '>'
- , $notOp = $isMax ? '>' : '<'
- , $errorKeyword = undefined;
-}}
-
-{{? $isDataExcl }}
- {{
- var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr)
- , $exclusive = 'exclusive' + $lvl
- , $exclType = 'exclType' + $lvl
- , $exclIsNumber = 'exclIsNumber' + $lvl
- , $opExpr = 'op' + $lvl
- , $opStr = '\' + ' + $opExpr + ' + \'';
- }}
- var schemaExcl{{=$lvl}} = {{=$schemaValueExcl}};
- {{ $schemaValueExcl = 'schemaExcl' + $lvl; }}
-
- var {{=$exclusive}};
- var {{=$exclType}} = typeof {{=$schemaValueExcl}};
- if ({{=$exclType}} != 'boolean' && {{=$exclType}} != 'undefined' && {{=$exclType}} != 'number') {
- {{ var $errorKeyword = $exclusiveKeyword; }}
- {{# def.error:'_exclusiveLimit' }}
- } else if ({{# def.$dataNotType:'number' }}
- {{=$exclType}} == 'number'
- ? (
- ({{=$exclusive}} = {{=$schemaValue}} === undefined || {{=$schemaValueExcl}} {{=$op}}= {{=$schemaValue}})
- ? {{=$data}} {{=$notOp}}= {{=$schemaValueExcl}}
- : {{=$data}} {{=$notOp}} {{=$schemaValue}}
- )
- : (
- ({{=$exclusive}} = {{=$schemaValueExcl}} === true)
- ? {{=$data}} {{=$notOp}}= {{=$schemaValue}}
- : {{=$data}} {{=$notOp}} {{=$schemaValue}}
- )
- || {{=$data}} !== {{=$data}}) {
- var op{{=$lvl}} = {{=$exclusive}} ? '{{=$op}}' : '{{=$op}}=';
- {{
- if ($schema === undefined) {
- $errorKeyword = $exclusiveKeyword;
- $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
- $schemaValue = $schemaValueExcl;
- $isData = $isDataExcl;
- }
- }}
-{{??}}
- {{
- var $exclIsNumber = typeof $schemaExcl == 'number'
- , $opStr = $op; /*used in error*/
- }}
-
- {{? $exclIsNumber && $isData }}
- {{ var $opExpr = '\'' + $opStr + '\''; /*used in error*/ }}
- if ({{# def.$dataNotType:'number' }}
- ( {{=$schemaValue}} === undefined
- || {{=$schemaExcl}} {{=$op}}= {{=$schemaValue}}
- ? {{=$data}} {{=$notOp}}= {{=$schemaExcl}}
- : {{=$data}} {{=$notOp}} {{=$schemaValue}} )
- || {{=$data}} !== {{=$data}}) {
- {{??}}
- {{
- if ($exclIsNumber && $schema === undefined) {
- {{# def.setExclusiveLimit }}
- $schemaValue = $schemaExcl;
- $notOp += '=';
- } else {
- if ($exclIsNumber)
- $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);
-
- if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {
- {{# def.setExclusiveLimit }}
- $notOp += '=';
- } else {
- $exclusive = false;
- $opStr += '=';
- }
- }
-
- var $opExpr = '\'' + $opStr + '\''; /*used in error*/
- }}
-
- if ({{# def.$dataNotType:'number' }}
- {{=$data}} {{=$notOp}} {{=$schemaValue}}
- || {{=$data}} !== {{=$data}}) {
- {{?}}
-{{?}}
- {{ $errorKeyword = $errorKeyword || $keyword; }}
- {{# def.error:'_limit' }}
- } {{? $breakOnError }} else { {{?}}
diff --git a/assets/node_modules/ajv/lib/dot/_limitItems.jst b/assets/node_modules/ajv/lib/dot/_limitItems.jst
deleted file mode 100644
index a3e078e..0000000
--- a/assets/node_modules/ajv/lib/dot/_limitItems.jst
+++ /dev/null
@@ -1,10 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.$data }}
-
-{{ var $op = $keyword == 'maxItems' ? '>' : '<'; }}
-if ({{# def.$dataNotType:'number' }} {{=$data}}.length {{=$op}} {{=$schemaValue}}) {
- {{ var $errorKeyword = $keyword; }}
- {{# def.error:'_limitItems' }}
-} {{? $breakOnError }} else { {{?}}
diff --git a/assets/node_modules/ajv/lib/dot/_limitLength.jst b/assets/node_modules/ajv/lib/dot/_limitLength.jst
deleted file mode 100644
index cfc8dbb..0000000
--- a/assets/node_modules/ajv/lib/dot/_limitLength.jst
+++ /dev/null
@@ -1,10 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.$data }}
-
-{{ var $op = $keyword == 'maxLength' ? '>' : '<'; }}
-if ({{# def.$dataNotType:'number' }} {{# def.strLength }} {{=$op}} {{=$schemaValue}}) {
- {{ var $errorKeyword = $keyword; }}
- {{# def.error:'_limitLength' }}
-} {{? $breakOnError }} else { {{?}}
diff --git a/assets/node_modules/ajv/lib/dot/_limitProperties.jst b/assets/node_modules/ajv/lib/dot/_limitProperties.jst
deleted file mode 100644
index da7ea77..0000000
--- a/assets/node_modules/ajv/lib/dot/_limitProperties.jst
+++ /dev/null
@@ -1,10 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.$data }}
-
-{{ var $op = $keyword == 'maxProperties' ? '>' : '<'; }}
-if ({{# def.$dataNotType:'number' }} Object.keys({{=$data}}).length {{=$op}} {{=$schemaValue}}) {
- {{ var $errorKeyword = $keyword; }}
- {{# def.error:'_limitProperties' }}
-} {{? $breakOnError }} else { {{?}}
diff --git a/assets/node_modules/ajv/lib/dot/allOf.jst b/assets/node_modules/ajv/lib/dot/allOf.jst
deleted file mode 100644
index 4c28363..0000000
--- a/assets/node_modules/ajv/lib/dot/allOf.jst
+++ /dev/null
@@ -1,34 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.setupNextLevel }}
-
-{{
- var $currentBaseId = $it.baseId
- , $allSchemasEmpty = true;
-}}
-
-{{~ $schema:$sch:$i }}
- {{? {{# def.nonEmptySchema:$sch }} }}
- {{
- $allSchemasEmpty = false;
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + '[' + $i + ']';
- $it.errSchemaPath = $errSchemaPath + '/' + $i;
- }}
-
- {{# def.insertSubschemaCode }}
-
- {{# def.ifResultValid }}
- {{?}}
-{{~}}
-
-{{? $breakOnError }}
- {{? $allSchemasEmpty }}
- if (true) {
- {{??}}
- {{= $closingBraces.slice(0,-1) }}
- {{?}}
-{{?}}
-
-{{# def.cleanUp }}
diff --git a/assets/node_modules/ajv/lib/dot/anyOf.jst b/assets/node_modules/ajv/lib/dot/anyOf.jst
deleted file mode 100644
index 086cf2b..0000000
--- a/assets/node_modules/ajv/lib/dot/anyOf.jst
+++ /dev/null
@@ -1,48 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.setupNextLevel }}
-
-{{
- var $noEmptySchema = $schema.every(function($sch) {
- return {{# def.nonEmptySchema:$sch }};
- });
-}}
-{{? $noEmptySchema }}
- {{ var $currentBaseId = $it.baseId; }}
- var {{=$errs}} = errors;
- var {{=$valid}} = false;
-
- {{# def.setCompositeRule }}
-
- {{~ $schema:$sch:$i }}
- {{
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + '[' + $i + ']';
- $it.errSchemaPath = $errSchemaPath + '/' + $i;
- }}
-
- {{# def.insertSubschemaCode }}
-
- {{=$valid}} = {{=$valid}} || {{=$nextValid}};
-
- if (!{{=$valid}}) {
- {{ $closingBraces += '}'; }}
- {{~}}
-
- {{# def.resetCompositeRule }}
-
- {{= $closingBraces }}
-
- if (!{{=$valid}}) {
- {{# def.extraError:'anyOf' }}
- } else {
- {{# def.resetErrors }}
- {{? it.opts.allErrors }} } {{?}}
-
- {{# def.cleanUp }}
-{{??}}
- {{? $breakOnError }}
- if (true) {
- {{?}}
-{{?}}
diff --git a/assets/node_modules/ajv/lib/dot/coerce.def b/assets/node_modules/ajv/lib/dot/coerce.def
deleted file mode 100644
index 86e0e18..0000000
--- a/assets/node_modules/ajv/lib/dot/coerce.def
+++ /dev/null
@@ -1,61 +0,0 @@
-{{## def.coerceType:
- {{
- var $dataType = 'dataType' + $lvl
- , $coerced = 'coerced' + $lvl;
- }}
- var {{=$dataType}} = typeof {{=$data}};
- {{? it.opts.coerceTypes == 'array'}}
- if ({{=$dataType}} == 'object' && Array.isArray({{=$data}})) {{=$dataType}} = 'array';
- {{?}}
-
- var {{=$coerced}} = undefined;
-
- {{ var $bracesCoercion = ''; }}
- {{~ $coerceToTypes:$type:$i }}
- {{? $i }}
- if ({{=$coerced}} === undefined) {
- {{ $bracesCoercion += '}'; }}
- {{?}}
-
- {{? it.opts.coerceTypes == 'array' && $type != 'array' }}
- if ({{=$dataType}} == 'array' && {{=$data}}.length == 1) {
- {{=$coerced}} = {{=$data}} = {{=$data}}[0];
- {{=$dataType}} = typeof {{=$data}};
- /*if ({{=$dataType}} == 'object' && Array.isArray({{=$data}})) {{=$dataType}} = 'array';*/
- }
- {{?}}
-
- {{? $type == 'string' }}
- if ({{=$dataType}} == 'number' || {{=$dataType}} == 'boolean')
- {{=$coerced}} = '' + {{=$data}};
- else if ({{=$data}} === null) {{=$coerced}} = '';
- {{?? $type == 'number' || $type == 'integer' }}
- if ({{=$dataType}} == 'boolean' || {{=$data}} === null
- || ({{=$dataType}} == 'string' && {{=$data}} && {{=$data}} == +{{=$data}}
- {{? $type == 'integer' }} && !({{=$data}} % 1){{?}}))
- {{=$coerced}} = +{{=$data}};
- {{?? $type == 'boolean' }}
- if ({{=$data}} === 'false' || {{=$data}} === 0 || {{=$data}} === null)
- {{=$coerced}} = false;
- else if ({{=$data}} === 'true' || {{=$data}} === 1)
- {{=$coerced}} = true;
- {{?? $type == 'null' }}
- if ({{=$data}} === '' || {{=$data}} === 0 || {{=$data}} === false)
- {{=$coerced}} = null;
- {{?? it.opts.coerceTypes == 'array' && $type == 'array' }}
- if ({{=$dataType}} == 'string' || {{=$dataType}} == 'number' || {{=$dataType}} == 'boolean' || {{=$data}} == null)
- {{=$coerced}} = [{{=$data}}];
- {{?}}
- {{~}}
-
- {{= $bracesCoercion }}
-
- if ({{=$coerced}} === undefined) {
- {{# def.error:'type' }}
- } else {
- {{# def.setParentData }}
- {{=$data}} = {{=$coerced}};
- {{? !$dataLvl }}if ({{=$parentData}} !== undefined){{?}}
- {{=$parentData}}[{{=$parentDataProperty}}] = {{=$coerced}};
- }
-#}}
diff --git a/assets/node_modules/ajv/lib/dot/comment.jst b/assets/node_modules/ajv/lib/dot/comment.jst
deleted file mode 100644
index f959150..0000000
--- a/assets/node_modules/ajv/lib/dot/comment.jst
+++ /dev/null
@@ -1,9 +0,0 @@
-{{# def.definitions }}
-{{# def.setupKeyword }}
-
-{{ var $comment = it.util.toQuotedString($schema); }}
-{{? it.opts.$comment === true }}
- console.log({{=$comment}});
-{{?? typeof it.opts.$comment == 'function' }}
- self._opts.$comment({{=$comment}}, {{=it.util.toQuotedString($errSchemaPath)}}, validate.root.schema);
-{{?}}
diff --git a/assets/node_modules/ajv/lib/dot/const.jst b/assets/node_modules/ajv/lib/dot/const.jst
deleted file mode 100644
index 2aa2298..0000000
--- a/assets/node_modules/ajv/lib/dot/const.jst
+++ /dev/null
@@ -1,11 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.$data }}
-
-{{? !$isData }}
- var schema{{=$lvl}} = validate.schema{{=$schemaPath}};
-{{?}}
-var {{=$valid}} = equal({{=$data}}, schema{{=$lvl}});
-{{# def.checkError:'const' }}
-{{? $breakOnError }} else { {{?}}
diff --git a/assets/node_modules/ajv/lib/dot/contains.jst b/assets/node_modules/ajv/lib/dot/contains.jst
deleted file mode 100644
index 925d2c8..0000000
--- a/assets/node_modules/ajv/lib/dot/contains.jst
+++ /dev/null
@@ -1,57 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.setupNextLevel }}
-
-
-{{
- var $idx = 'i' + $lvl
- , $dataNxt = $it.dataLevel = it.dataLevel + 1
- , $nextData = 'data' + $dataNxt
- , $currentBaseId = it.baseId
- , $nonEmptySchema = {{# def.nonEmptySchema:$schema }};
-}}
-
-var {{=$errs}} = errors;
-var {{=$valid}};
-
-{{? $nonEmptySchema }}
- {{# def.setCompositeRule }}
-
- {{
- $it.schema = $schema;
- $it.schemaPath = $schemaPath;
- $it.errSchemaPath = $errSchemaPath;
- }}
-
- var {{=$nextValid}} = false;
-
- for (var {{=$idx}} = 0; {{=$idx}} < {{=$data}}.length; {{=$idx}}++) {
- {{
- $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);
- var $passData = $data + '[' + $idx + ']';
- $it.dataPathArr[$dataNxt] = $idx;
- }}
-
- {{# def.generateSubschemaCode }}
- {{# def.optimizeValidate }}
-
- if ({{=$nextValid}}) break;
- }
-
- {{# def.resetCompositeRule }}
- {{= $closingBraces }}
-
- if (!{{=$nextValid}}) {
-{{??}}
- if ({{=$data}}.length == 0) {
-{{?}}
-
- {{# def.error:'contains' }}
- } else {
- {{? $nonEmptySchema }}
- {{# def.resetErrors }}
- {{?}}
- {{? it.opts.allErrors }} } {{?}}
-
-{{# def.cleanUp }}
diff --git a/assets/node_modules/ajv/lib/dot/custom.jst b/assets/node_modules/ajv/lib/dot/custom.jst
deleted file mode 100644
index d30588f..0000000
--- a/assets/node_modules/ajv/lib/dot/custom.jst
+++ /dev/null
@@ -1,191 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.$data }}
-
-{{
- var $rule = this
- , $definition = 'definition' + $lvl
- , $rDef = $rule.definition
- , $closingBraces = '';
- var $validate = $rDef.validate;
- var $compile, $inline, $macro, $ruleValidate, $validateCode;
-}}
-
-{{? $isData && $rDef.$data }}
- {{
- $validateCode = 'keywordValidate' + $lvl;
- var $validateSchema = $rDef.validateSchema;
- }}
- var {{=$definition}} = RULES.custom['{{=$keyword}}'].definition;
- var {{=$validateCode}} = {{=$definition}}.validate;
-{{??}}
- {{
- $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);
- if (!$ruleValidate) return;
- $schemaValue = 'validate.schema' + $schemaPath;
- $validateCode = $ruleValidate.code;
- $compile = $rDef.compile;
- $inline = $rDef.inline;
- $macro = $rDef.macro;
- }}
-{{?}}
-
-{{
- var $ruleErrs = $validateCode + '.errors'
- , $i = 'i' + $lvl
- , $ruleErr = 'ruleErr' + $lvl
- , $asyncKeyword = $rDef.async;
-
- if ($asyncKeyword && !it.async)
- throw new Error('async keyword in sync schema');
-}}
-
-
-{{? !($inline || $macro) }}{{=$ruleErrs}} = null;{{?}}
-var {{=$errs}} = errors;
-var {{=$valid}};
-
-{{## def.callRuleValidate:
- {{=$validateCode}}.call(
- {{? it.opts.passContext }}this{{??}}self{{?}}
- {{? $compile || $rDef.schema === false }}
- , {{=$data}}
- {{??}}
- , {{=$schemaValue}}
- , {{=$data}}
- , validate.schema{{=it.schemaPath}}
- {{?}}
- , {{# def.dataPath }}
- {{# def.passParentData }}
- , rootData
- )
-#}}
-
-{{## def.extendErrors:_inline:
- for (var {{=$i}}={{=$errs}}; {{=$i}}<errors; {{=$i}}++) {
- var {{=$ruleErr}} = vErrors[{{=$i}}];
- if ({{=$ruleErr}}.dataPath === undefined)
- {{=$ruleErr}}.dataPath = (dataPath || '') + {{= it.errorPath }};
- {{# _inline ? 'if (\{\{=$ruleErr\}\}.schemaPath === undefined) {' : '' }}
- {{=$ruleErr}}.schemaPath = "{{=$errSchemaPath}}";
- {{# _inline ? '}' : '' }}
- {{? it.opts.verbose }}
- {{=$ruleErr}}.schema = {{=$schemaValue}};
- {{=$ruleErr}}.data = {{=$data}};
- {{?}}
- }
-#}}
-
-
-{{? $isData && $rDef.$data }}
- {{ $closingBraces += '}'; }}
- if ({{=$schemaValue}} === undefined) {
- {{=$valid}} = true;
- } else {
- {{? $validateSchema }}
- {{ $closingBraces += '}'; }}
- {{=$valid}} = {{=$definition}}.validateSchema({{=$schemaValue}});
- if ({{=$valid}}) {
- {{?}}
-{{?}}
-
-{{? $inline }}
- {{? $rDef.statements }}
- {{= $ruleValidate.validate }}
- {{??}}
- {{=$valid}} = {{= $ruleValidate.validate }};
- {{?}}
-{{?? $macro }}
- {{# def.setupNextLevel }}
- {{
- $it.schema = $ruleValidate.validate;
- $it.schemaPath = '';
- }}
- {{# def.setCompositeRule }}
- {{ var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); }}
- {{# def.resetCompositeRule }}
- {{= $code }}
-{{??}}
- {{# def.beginDefOut}}
- {{# def.callRuleValidate }}
- {{# def.storeDefOut:def_callRuleValidate }}
-
- {{? $rDef.errors === false }}
- {{=$valid}} = {{? $asyncKeyword }}await {{?}}{{= def_callRuleValidate }};
- {{??}}
- {{? $asyncKeyword }}
- {{ $ruleErrs = 'customErrors' + $lvl; }}
- var {{=$ruleErrs}} = null;
- try {
- {{=$valid}} = await {{= def_callRuleValidate }};
- } catch (e) {
- {{=$valid}} = false;
- if (e instanceof ValidationError) {{=$ruleErrs}} = e.errors;
- else throw e;
- }
- {{??}}
- {{=$ruleErrs}} = null;
- {{=$valid}} = {{= def_callRuleValidate }};
- {{?}}
- {{?}}
-{{?}}
-
-{{? $rDef.modifying }}
- if ({{=$parentData}}) {{=$data}} = {{=$parentData}}[{{=$parentDataProperty}}];
-{{?}}
-
-{{= $closingBraces }}
-
-{{## def.notValidationResult:
- {{? $rDef.valid === undefined }}
- !{{? $macro }}{{=$nextValid}}{{??}}{{=$valid}}{{?}}
- {{??}}
- {{= !$rDef.valid }}
- {{?}}
-#}}
-
-{{? $rDef.valid }}
- {{? $breakOnError }} if (true) { {{?}}
-{{??}}
- if ({{# def.notValidationResult }}) {
- {{ $errorKeyword = $rule.keyword; }}
- {{# def.beginDefOut}}
- {{# def.error:'custom' }}
- {{# def.storeDefOut:def_customError }}
-
- {{? $inline }}
- {{? $rDef.errors }}
- {{? $rDef.errors != 'full' }}
- {{# def.extendErrors:true }}
- {{?}}
- {{??}}
- {{? $rDef.errors === false}}
- {{= def_customError }}
- {{??}}
- if ({{=$errs}} == errors) {
- {{= def_customError }}
- } else {
- {{# def.extendErrors:true }}
- }
- {{?}}
- {{?}}
- {{?? $macro }}
- {{# def.extraError:'custom' }}
- {{??}}
- {{? $rDef.errors === false}}
- {{= def_customError }}
- {{??}}
- if (Array.isArray({{=$ruleErrs}})) {
- if (vErrors === null) vErrors = {{=$ruleErrs}};
- else vErrors = vErrors.concat({{=$ruleErrs}});
- errors = vErrors.length;
- {{# def.extendErrors:false }}
- } else {
- {{= def_customError }}
- }
- {{?}}
- {{?}}
-
- } {{? $breakOnError }} else { {{?}}
-{{?}}
diff --git a/assets/node_modules/ajv/lib/dot/defaults.def b/assets/node_modules/ajv/lib/dot/defaults.def
deleted file mode 100644
index a844cf2..0000000
--- a/assets/node_modules/ajv/lib/dot/defaults.def
+++ /dev/null
@@ -1,47 +0,0 @@
-{{## def.assignDefault:
- {{? it.compositeRule }}
- {{
- if (it.opts.strictDefaults) {
- var $defaultMsg = 'default is ignored for: ' + $passData;
- if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);
- else throw new Error($defaultMsg);
- }
- }}
- {{??}}
- if ({{=$passData}} === undefined
- {{? it.opts.useDefaults == 'empty' }}
- || {{=$passData}} === null
- || {{=$passData}} === ''
- {{?}}
- )
- {{=$passData}} = {{? it.opts.useDefaults == 'shared' }}
- {{= it.useDefault($sch.default) }}
- {{??}}
- {{= JSON.stringify($sch.default) }}
- {{?}};
- {{?}}
-#}}
-
-
-{{## def.defaultProperties:
- {{
- var $schema = it.schema.properties
- , $schemaKeys = Object.keys($schema); }}
- {{~ $schemaKeys:$propertyKey }}
- {{ var $sch = $schema[$propertyKey]; }}
- {{? $sch.default !== undefined }}
- {{ var $passData = $data + it.util.getProperty($propertyKey); }}
- {{# def.assignDefault }}
- {{?}}
- {{~}}
-#}}
-
-
-{{## def.defaultItems:
- {{~ it.schema.items:$sch:$i }}
- {{? $sch.default !== undefined }}
- {{ var $passData = $data + '[' + $i + ']'; }}
- {{# def.assignDefault }}
- {{?}}
- {{~}}
-#}}
diff --git a/assets/node_modules/ajv/lib/dot/definitions.def b/assets/node_modules/ajv/lib/dot/definitions.def
deleted file mode 100644
index b68e064..0000000
--- a/assets/node_modules/ajv/lib/dot/definitions.def
+++ /dev/null
@@ -1,201 +0,0 @@
-{{## def.setupKeyword:
- {{
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
-
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $errs = 'errs__' + $lvl;
- }}
-#}}
-
-
-{{## def.setCompositeRule:
- {{
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- }}
-#}}
-
-
-{{## def.resetCompositeRule:
- {{ it.compositeRule = $it.compositeRule = $wasComposite; }}
-#}}
-
-
-{{## def.setupNextLevel:
- {{
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- }}
-#}}
-
-
-{{## def.ifValid:
- {{? $breakOnError }}
- if ({{=$valid}}) {
- {{ $closingBraces += '}'; }}
- {{?}}
-#}}
-
-
-{{## def.ifResultValid:
- {{? $breakOnError }}
- if ({{=$nextValid}}) {
- {{ $closingBraces += '}'; }}
- {{?}}
-#}}
-
-
-{{## def.elseIfValid:
- {{? $breakOnError }}
- {{ $closingBraces += '}'; }}
- else {
- {{?}}
-#}}
-
-
-{{## def.nonEmptySchema:_schema:
- (it.opts.strictKeywords
- ? typeof _schema == 'object' && Object.keys(_schema).length > 0
- : it.util.schemaHasRules(_schema, it.RULES.all))
-#}}
-
-
-{{## def.strLength:
- {{? it.opts.unicode === false }}
- {{=$data}}.length
- {{??}}
- ucs2length({{=$data}})
- {{?}}
-#}}
-
-
-{{## def.willOptimize:
- it.util.varOccurences($code, $nextData) < 2
-#}}
-
-
-{{## def.generateSubschemaCode:
- {{
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- }}
-#}}
-
-
-{{## def.insertSubschemaCode:
- {{= it.validate($it) }}
- {{ $it.baseId = $currentBaseId; }}
-#}}
-
-
-{{## def._optimizeValidate:
- it.util.varReplace($code, $nextData, $passData)
-#}}
-
-
-{{## def.optimizeValidate:
- {{? {{# def.willOptimize}} }}
- {{= {{# def._optimizeValidate }} }}
- {{??}}
- var {{=$nextData}} = {{=$passData}};
- {{= $code }}
- {{?}}
-#}}
-
-
-{{## def.cleanUp: {{ out = it.util.cleanUpCode(out); }} #}}
-
-
-{{## def.finalCleanUp: {{ out = it.util.finalCleanUpCode(out, $async); }} #}}
-
-
-{{## def.$data:
- {{
- var $isData = it.opts.$data && $schema && $schema.$data
- , $schemaValue;
- }}
- {{? $isData }}
- var schema{{=$lvl}} = {{= it.util.getData($schema.$data, $dataLvl, it.dataPathArr) }};
- {{ $schemaValue = 'schema' + $lvl; }}
- {{??}}
- {{ $schemaValue = $schema; }}
- {{?}}
-#}}
-
-
-{{## def.$dataNotType:_type:
- {{?$isData}} ({{=$schemaValue}} !== undefined && typeof {{=$schemaValue}} != _type) || {{?}}
-#}}
-
-
-{{## def.check$dataIsArray:
- if (schema{{=$lvl}} === undefined) {{=$valid}} = true;
- else if (!Array.isArray(schema{{=$lvl}})) {{=$valid}} = false;
- else {
-#}}
-
-
-{{## def.beginDefOut:
- {{
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = '';
- }}
-#}}
-
-
-{{## def.storeDefOut:_variable:
- {{
- var _variable = out;
- out = $$outStack.pop();
- }}
-#}}
-
-
-{{## def.dataPath:(dataPath || ''){{? it.errorPath != '""'}} + {{= it.errorPath }}{{?}}#}}
-
-{{## def.setParentData:
- {{
- var $parentData = $dataLvl ? 'data' + (($dataLvl-1)||'') : 'parentData'
- , $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
- }}
-#}}
-
-{{## def.passParentData:
- {{# def.setParentData }}
- , {{= $parentData }}
- , {{= $parentDataProperty }}
-#}}
-
-
-{{## def.iterateProperties:
- {{? $ownProperties }}
- {{=$dataProperties}} = {{=$dataProperties}} || Object.keys({{=$data}});
- for (var {{=$idx}}=0; {{=$idx}}<{{=$dataProperties}}.length; {{=$idx}}++) {
- var {{=$key}} = {{=$dataProperties}}[{{=$idx}}];
- {{??}}
- for (var {{=$key}} in {{=$data}}) {
- {{?}}
-#}}
-
-
-{{## def.noPropertyInData:
- {{=$useData}} === undefined
- {{? $ownProperties }}
- || !{{# def.isOwnProperty }}
- {{?}}
-#}}
-
-
-{{## def.isOwnProperty:
- Object.prototype.hasOwnProperty.call({{=$data}}, '{{=it.util.escapeQuotes($propertyKey)}}')
-#}}
diff --git a/assets/node_modules/ajv/lib/dot/dependencies.jst b/assets/node_modules/ajv/lib/dot/dependencies.jst
deleted file mode 100644
index c41f334..0000000
--- a/assets/node_modules/ajv/lib/dot/dependencies.jst
+++ /dev/null
@@ -1,80 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.missing }}
-{{# def.setupKeyword }}
-{{# def.setupNextLevel }}
-
-
-{{## def.propertyInData:
- {{=$data}}{{= it.util.getProperty($property) }} !== undefined
- {{? $ownProperties }}
- && Object.prototype.hasOwnProperty.call({{=$data}}, '{{=it.util.escapeQuotes($property)}}')
- {{?}}
-#}}
-
-
-{{
- var $schemaDeps = {}
- , $propertyDeps = {}
- , $ownProperties = it.opts.ownProperties;
-
- for ($property in $schema) {
- var $sch = $schema[$property];
- var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;
- $deps[$property] = $sch;
- }
-}}
-
-var {{=$errs}} = errors;
-
-{{ var $currentErrorPath = it.errorPath; }}
-
-var missing{{=$lvl}};
-{{ for (var $property in $propertyDeps) { }}
- {{ $deps = $propertyDeps[$property]; }}
- {{? $deps.length }}
- if ({{# def.propertyInData }}
- {{? $breakOnError }}
- && ({{# def.checkMissingProperty:$deps }})) {
- {{# def.errorMissingProperty:'dependencies' }}
- {{??}}
- ) {
- {{~ $deps:$propertyKey }}
- {{# def.allErrorsMissingProperty:'dependencies' }}
- {{~}}
- {{?}}
- } {{# def.elseIfValid }}
- {{?}}
-{{ } }}
-
-{{
- it.errorPath = $currentErrorPath;
- var $currentBaseId = $it.baseId;
-}}
-
-
-{{ for (var $property in $schemaDeps) { }}
- {{ var $sch = $schemaDeps[$property]; }}
- {{? {{# def.nonEmptySchema:$sch }} }}
- {{=$nextValid}} = true;
-
- if ({{# def.propertyInData }}) {
- {{
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + it.util.getProperty($property);
- $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);
- }}
-
- {{# def.insertSubschemaCode }}
- }
-
- {{# def.ifResultValid }}
- {{?}}
-{{ } }}
-
-{{? $breakOnError }}
- {{= $closingBraces }}
- if ({{=$errs}} == errors) {
-{{?}}
-
-{{# def.cleanUp }}
diff --git a/assets/node_modules/ajv/lib/dot/enum.jst b/assets/node_modules/ajv/lib/dot/enum.jst
deleted file mode 100644
index 357c2e8..0000000
--- a/assets/node_modules/ajv/lib/dot/enum.jst
+++ /dev/null
@@ -1,30 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.$data }}
-
-{{
- var $i = 'i' + $lvl
- , $vSchema = 'schema' + $lvl;
-}}
-
-{{? !$isData }}
- var {{=$vSchema}} = validate.schema{{=$schemaPath}};
-{{?}}
-var {{=$valid}};
-
-{{?$isData}}{{# def.check$dataIsArray }}{{?}}
-
-{{=$valid}} = false;
-
-for (var {{=$i}}=0; {{=$i}}<{{=$vSchema}}.length; {{=$i}}++)
- if (equal({{=$data}}, {{=$vSchema}}[{{=$i}}])) {
- {{=$valid}} = true;
- break;
- }
-
-{{? $isData }} } {{?}}
-
-{{# def.checkError:'enum' }}
-
-{{? $breakOnError }} else { {{?}}
diff --git a/assets/node_modules/ajv/lib/dot/errors.def b/assets/node_modules/ajv/lib/dot/errors.def
deleted file mode 100644
index 5c5752c..0000000
--- a/assets/node_modules/ajv/lib/dot/errors.def
+++ /dev/null
@@ -1,194 +0,0 @@
-{{# def.definitions }}
-
-{{## def._error:_rule:
- {{ 'istanbul ignore else'; }}
- {{? it.createErrors !== false }}
- {
- keyword: '{{= $errorKeyword || _rule }}'
- , dataPath: (dataPath || '') + {{= it.errorPath }}
- , schemaPath: {{=it.util.toQuotedString($errSchemaPath)}}
- , params: {{# def._errorParams[_rule] }}
- {{? it.opts.messages !== false }}
- , message: {{# def._errorMessages[_rule] }}
- {{?}}
- {{? it.opts.verbose }}
- , schema: {{# def._errorSchemas[_rule] }}
- , parentSchema: validate.schema{{=it.schemaPath}}
- , data: {{=$data}}
- {{?}}
- }
- {{??}}
- {}
- {{?}}
-#}}
-
-
-{{## def._addError:_rule:
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
-#}}
-
-
-{{## def.addError:_rule:
- var err = {{# def._error:_rule }};
- {{# def._addError:_rule }}
-#}}
-
-
-{{## def.error:_rule:
- {{# def.beginDefOut}}
- {{# def._error:_rule }}
- {{# def.storeDefOut:__err }}
-
- {{? !it.compositeRule && $breakOnError }}
- {{ 'istanbul ignore if'; }}
- {{? it.async }}
- throw new ValidationError([{{=__err}}]);
- {{??}}
- validate.errors = [{{=__err}}];
- return false;
- {{?}}
- {{??}}
- var err = {{=__err}};
- {{# def._addError:_rule }}
- {{?}}
-#}}
-
-
-{{## def.extraError:_rule:
- {{# def.addError:_rule}}
- {{? !it.compositeRule && $breakOnError }}
- {{ 'istanbul ignore if'; }}
- {{? it.async }}
- throw new ValidationError(vErrors);
- {{??}}
- validate.errors = vErrors;
- return false;
- {{?}}
- {{?}}
-#}}
-
-
-{{## def.checkError:_rule:
- if (!{{=$valid}}) {
- {{# def.error:_rule }}
- }
-#}}
-
-
-{{## def.resetErrors:
- errors = {{=$errs}};
- if (vErrors !== null) {
- if ({{=$errs}}) vErrors.length = {{=$errs}};
- else vErrors = null;
- }
-#}}
-
-
-{{## def.concatSchema:{{?$isData}}' + {{=$schemaValue}} + '{{??}}{{=$schema}}{{?}}#}}
-{{## def.appendSchema:{{?$isData}}' + {{=$schemaValue}}{{??}}{{=$schemaValue}}'{{?}}#}}
-{{## def.concatSchemaEQ:{{?$isData}}' + {{=$schemaValue}} + '{{??}}{{=it.util.escapeQuotes($schema)}}{{?}}#}}
-
-{{## def._errorMessages = {
- 'false schema': "'boolean schema is false'",
- $ref: "'can\\\'t resolve reference {{=it.util.escapeQuotes($schema)}}'",
- additionalItems: "'should NOT have more than {{=$schema.length}} items'",
- additionalProperties: "'{{? it.opts._errorDataPathProperty }}is an invalid additional property{{??}}should NOT have additional properties{{?}}'",
- anyOf: "'should match some schema in anyOf'",
- const: "'should be equal to constant'",
- contains: "'should contain a valid item'",
- dependencies: "'should have {{? $deps.length == 1 }}property {{= it.util.escapeQuotes($deps[0]) }}{{??}}properties {{= it.util.escapeQuotes($deps.join(\", \")) }}{{?}} when property {{= it.util.escapeQuotes($property) }} is present'",
- 'enum': "'should be equal to one of the allowed values'",
- format: "'should match format \"{{#def.concatSchemaEQ}}\"'",
- 'if': "'should match \"' + {{=$ifClause}} + '\" schema'",
- _limit: "'should be {{=$opStr}} {{#def.appendSchema}}",
- _exclusiveLimit: "'{{=$exclusiveKeyword}} should be boolean'",
- _limitItems: "'should NOT have {{?$keyword=='maxItems'}}more{{??}}fewer{{?}} than {{#def.concatSchema}} items'",
- _limitLength: "'should NOT be {{?$keyword=='maxLength'}}longer{{??}}shorter{{?}} than {{#def.concatSchema}} characters'",
- _limitProperties:"'should NOT have {{?$keyword=='maxProperties'}}more{{??}}fewer{{?}} than {{#def.concatSchema}} properties'",
- multipleOf: "'should be multiple of {{#def.appendSchema}}",
- not: "'should NOT be valid'",
- oneOf: "'should match exactly one schema in oneOf'",
- pattern: "'should match pattern \"{{#def.concatSchemaEQ}}\"'",
- propertyNames: "'property name \\'{{=$invalidName}}\\' is invalid'",
- required: "'{{? it.opts._errorDataPathProperty }}is a required property{{??}}should have required property \\'{{=$missingProperty}}\\'{{?}}'",
- type: "'should be {{? $typeIsArray }}{{= $typeSchema.join(\",\") }}{{??}}{{=$typeSchema}}{{?}}'",
- uniqueItems: "'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)'",
- custom: "'should pass \"{{=$rule.keyword}}\" keyword validation'",
- patternRequired: "'should have property matching pattern \\'{{=$missingPattern}}\\''",
- switch: "'should pass \"switch\" keyword validation'",
- _formatLimit: "'should be {{=$opStr}} \"{{#def.concatSchemaEQ}}\"'",
- _formatExclusiveLimit: "'{{=$exclusiveKeyword}} should be boolean'"
-} #}}
-
-
-{{## def.schemaRefOrVal: {{?$isData}}validate.schema{{=$schemaPath}}{{??}}{{=$schema}}{{?}} #}}
-{{## def.schemaRefOrQS: {{?$isData}}validate.schema{{=$schemaPath}}{{??}}{{=it.util.toQuotedString($schema)}}{{?}} #}}
-
-{{## def._errorSchemas = {
- 'false schema': "false",
- $ref: "{{=it.util.toQuotedString($schema)}}",
- additionalItems: "false",
- additionalProperties: "false",
- anyOf: "validate.schema{{=$schemaPath}}",
- const: "validate.schema{{=$schemaPath}}",
- contains: "validate.schema{{=$schemaPath}}",
- dependencies: "validate.schema{{=$schemaPath}}",
- 'enum': "validate.schema{{=$schemaPath}}",
- format: "{{#def.schemaRefOrQS}}",
- 'if': "validate.schema{{=$schemaPath}}",
- _limit: "{{#def.schemaRefOrVal}}",
- _exclusiveLimit: "validate.schema{{=$schemaPath}}",
- _limitItems: "{{#def.schemaRefOrVal}}",
- _limitLength: "{{#def.schemaRefOrVal}}",
- _limitProperties:"{{#def.schemaRefOrVal}}",
- multipleOf: "{{#def.schemaRefOrVal}}",
- not: "validate.schema{{=$schemaPath}}",
- oneOf: "validate.schema{{=$schemaPath}}",
- pattern: "{{#def.schemaRefOrQS}}",
- propertyNames: "validate.schema{{=$schemaPath}}",
- required: "validate.schema{{=$schemaPath}}",
- type: "validate.schema{{=$schemaPath}}",
- uniqueItems: "{{#def.schemaRefOrVal}}",
- custom: "validate.schema{{=$schemaPath}}",
- patternRequired: "validate.schema{{=$schemaPath}}",
- switch: "validate.schema{{=$schemaPath}}",
- _formatLimit: "{{#def.schemaRefOrQS}}",
- _formatExclusiveLimit: "validate.schema{{=$schemaPath}}"
-} #}}
-
-
-{{## def.schemaValueQS: {{?$isData}}{{=$schemaValue}}{{??}}{{=it.util.toQuotedString($schema)}}{{?}} #}}
-
-{{## def._errorParams = {
- 'false schema': "{}",
- $ref: "{ ref: '{{=it.util.escapeQuotes($schema)}}' }",
- additionalItems: "{ limit: {{=$schema.length}} }",
- additionalProperties: "{ additionalProperty: '{{=$additionalProperty}}' }",
- anyOf: "{}",
- const: "{ allowedValue: schema{{=$lvl}} }",
- contains: "{}",
- dependencies: "{ property: '{{= it.util.escapeQuotes($property) }}', missingProperty: '{{=$missingProperty}}', depsCount: {{=$deps.length}}, deps: '{{= it.util.escapeQuotes($deps.length==1 ? $deps[0] : $deps.join(\", \")) }}' }",
- 'enum': "{ allowedValues: schema{{=$lvl}} }",
- format: "{ format: {{#def.schemaValueQS}} }",
- 'if': "{ failingKeyword: {{=$ifClause}} }",
- _limit: "{ comparison: {{=$opExpr}}, limit: {{=$schemaValue}}, exclusive: {{=$exclusive}} }",
- _exclusiveLimit: "{}",
- _limitItems: "{ limit: {{=$schemaValue}} }",
- _limitLength: "{ limit: {{=$schemaValue}} }",
- _limitProperties:"{ limit: {{=$schemaValue}} }",
- multipleOf: "{ multipleOf: {{=$schemaValue}} }",
- not: "{}",
- oneOf: "{ passingSchemas: {{=$passingSchemas}} }",
- pattern: "{ pattern: {{#def.schemaValueQS}} }",
- propertyNames: "{ propertyName: '{{=$invalidName}}' }",
- required: "{ missingProperty: '{{=$missingProperty}}' }",
- type: "{ type: '{{? $typeIsArray }}{{= $typeSchema.join(\",\") }}{{??}}{{=$typeSchema}}{{?}}' }",
- uniqueItems: "{ i: i, j: j }",
- custom: "{ keyword: '{{=$rule.keyword}}' }",
- patternRequired: "{ missingPattern: '{{=$missingPattern}}' }",
- switch: "{ caseIndex: {{=$caseIndex}} }",
- _formatLimit: "{ comparison: {{=$opExpr}}, limit: {{#def.schemaValueQS}}, exclusive: {{=$exclusive}} }",
- _formatExclusiveLimit: "{}"
-} #}}
diff --git a/assets/node_modules/ajv/lib/dot/format.jst b/assets/node_modules/ajv/lib/dot/format.jst
deleted file mode 100644
index 37f14da..0000000
--- a/assets/node_modules/ajv/lib/dot/format.jst
+++ /dev/null
@@ -1,106 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-
-{{## def.skipFormat:
- {{? $breakOnError }} if (true) { {{?}}
- {{ return out; }}
-#}}
-
-{{? it.opts.format === false }}{{# def.skipFormat }}{{?}}
-
-
-{{# def.$data }}
-
-
-{{## def.$dataCheckFormat:
- {{# def.$dataNotType:'string' }}
- ({{? $unknownFormats != 'ignore' }}
- ({{=$schemaValue}} && !{{=$format}}
- {{? $allowUnknown }}
- && self._opts.unknownFormats.indexOf({{=$schemaValue}}) == -1
- {{?}}) ||
- {{?}}
- ({{=$format}} && {{=$formatType}} == '{{=$ruleType}}'
- && !(typeof {{=$format}} == 'function'
- ? {{? it.async}}
- (async{{=$lvl}} ? await {{=$format}}({{=$data}}) : {{=$format}}({{=$data}}))
- {{??}}
- {{=$format}}({{=$data}})
- {{?}}
- : {{=$format}}.test({{=$data}}))))
-#}}
-
-{{## def.checkFormat:
- {{
- var $formatRef = 'formats' + it.util.getProperty($schema);
- if ($isObject) $formatRef += '.validate';
- }}
- {{? typeof $format == 'function' }}
- {{=$formatRef}}({{=$data}})
- {{??}}
- {{=$formatRef}}.test({{=$data}})
- {{?}}
-#}}
-
-
-{{
- var $unknownFormats = it.opts.unknownFormats
- , $allowUnknown = Array.isArray($unknownFormats);
-}}
-
-{{? $isData }}
- {{
- var $format = 'format' + $lvl
- , $isObject = 'isObject' + $lvl
- , $formatType = 'formatType' + $lvl;
- }}
- var {{=$format}} = formats[{{=$schemaValue}}];
- var {{=$isObject}} = typeof {{=$format}} == 'object'
- && !({{=$format}} instanceof RegExp)
- && {{=$format}}.validate;
- var {{=$formatType}} = {{=$isObject}} && {{=$format}}.type || 'string';
- if ({{=$isObject}}) {
- {{? it.async}}
- var async{{=$lvl}} = {{=$format}}.async;
- {{?}}
- {{=$format}} = {{=$format}}.validate;
- }
- if ({{# def.$dataCheckFormat }}) {
-{{??}}
- {{ var $format = it.formats[$schema]; }}
- {{? !$format }}
- {{? $unknownFormats == 'ignore' }}
- {{ it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"'); }}
- {{# def.skipFormat }}
- {{?? $allowUnknown && $unknownFormats.indexOf($schema) >= 0 }}
- {{# def.skipFormat }}
- {{??}}
- {{ throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"'); }}
- {{?}}
- {{?}}
- {{
- var $isObject = typeof $format == 'object'
- && !($format instanceof RegExp)
- && $format.validate;
- var $formatType = $isObject && $format.type || 'string';
- if ($isObject) {
- var $async = $format.async === true;
- $format = $format.validate;
- }
- }}
- {{? $formatType != $ruleType }}
- {{# def.skipFormat }}
- {{?}}
- {{? $async }}
- {{
- if (!it.async) throw new Error('async format in sync schema');
- var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';
- }}
- if (!(await {{=$formatRef}}({{=$data}}))) {
- {{??}}
- if (!{{# def.checkFormat }}) {
- {{?}}
-{{?}}
- {{# def.error:'format' }}
- } {{? $breakOnError }} else { {{?}}
diff --git a/assets/node_modules/ajv/lib/dot/if.jst b/assets/node_modules/ajv/lib/dot/if.jst
deleted file mode 100644
index 7ccc9b7..0000000
--- a/assets/node_modules/ajv/lib/dot/if.jst
+++ /dev/null
@@ -1,75 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.setupNextLevel }}
-
-
-{{## def.validateIfClause:_clause:
- {{
- $it.schema = it.schema['_clause'];
- $it.schemaPath = it.schemaPath + '._clause';
- $it.errSchemaPath = it.errSchemaPath + '/_clause';
- }}
- {{# def.insertSubschemaCode }}
- {{=$valid}} = {{=$nextValid}};
- {{? $thenPresent && $elsePresent }}
- {{ $ifClause = 'ifClause' + $lvl; }}
- var {{=$ifClause}} = '_clause';
- {{??}}
- {{ $ifClause = '\'_clause\''; }}
- {{?}}
-#}}
-
-{{
- var $thenSch = it.schema['then']
- , $elseSch = it.schema['else']
- , $thenPresent = $thenSch !== undefined && {{# def.nonEmptySchema:$thenSch }}
- , $elsePresent = $elseSch !== undefined && {{# def.nonEmptySchema:$elseSch }}
- , $currentBaseId = $it.baseId;
-}}
-
-{{? $thenPresent || $elsePresent }}
- {{
- var $ifClause;
- $it.createErrors = false;
- $it.schema = $schema;
- $it.schemaPath = $schemaPath;
- $it.errSchemaPath = $errSchemaPath;
- }}
- var {{=$errs}} = errors;
- var {{=$valid}} = true;
-
- {{# def.setCompositeRule }}
- {{# def.insertSubschemaCode }}
- {{ $it.createErrors = true; }}
- {{# def.resetErrors }}
- {{# def.resetCompositeRule }}
-
- {{? $thenPresent }}
- if ({{=$nextValid}}) {
- {{# def.validateIfClause:then }}
- }
- {{? $elsePresent }}
- else {
- {{?}}
- {{??}}
- if (!{{=$nextValid}}) {
- {{?}}
-
- {{? $elsePresent }}
- {{# def.validateIfClause:else }}
- }
- {{?}}
-
- if (!{{=$valid}}) {
- {{# def.extraError:'if' }}
- }
- {{? $breakOnError }} else { {{?}}
-
- {{# def.cleanUp }}
-{{??}}
- {{? $breakOnError }}
- if (true) {
- {{?}}
-{{?}}
-
diff --git a/assets/node_modules/ajv/lib/dot/items.jst b/assets/node_modules/ajv/lib/dot/items.jst
deleted file mode 100644
index 8c0f5ac..0000000
--- a/assets/node_modules/ajv/lib/dot/items.jst
+++ /dev/null
@@ -1,100 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.setupNextLevel }}
-
-
-{{## def.validateItems:startFrom:
- for (var {{=$idx}} = {{=startFrom}}; {{=$idx}} < {{=$data}}.length; {{=$idx}}++) {
- {{
- $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);
- var $passData = $data + '[' + $idx + ']';
- $it.dataPathArr[$dataNxt] = $idx;
- }}
-
- {{# def.generateSubschemaCode }}
- {{# def.optimizeValidate }}
-
- {{? $breakOnError }}
- if (!{{=$nextValid}}) break;
- {{?}}
- }
-#}}
-
-{{
- var $idx = 'i' + $lvl
- , $dataNxt = $it.dataLevel = it.dataLevel + 1
- , $nextData = 'data' + $dataNxt
- , $currentBaseId = it.baseId;
-}}
-
-var {{=$errs}} = errors;
-var {{=$valid}};
-
-{{? Array.isArray($schema) }}
- {{ /* 'items' is an array of schemas */}}
- {{ var $additionalItems = it.schema.additionalItems; }}
- {{? $additionalItems === false }}
- {{=$valid}} = {{=$data}}.length <= {{= $schema.length }};
- {{
- var $currErrSchemaPath = $errSchemaPath;
- $errSchemaPath = it.errSchemaPath + '/additionalItems';
- }}
- {{# def.checkError:'additionalItems' }}
- {{ $errSchemaPath = $currErrSchemaPath; }}
- {{# def.elseIfValid}}
- {{?}}
-
- {{~ $schema:$sch:$i }}
- {{? {{# def.nonEmptySchema:$sch }} }}
- {{=$nextValid}} = true;
-
- if ({{=$data}}.length > {{=$i}}) {
- {{
- var $passData = $data + '[' + $i + ']';
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + '[' + $i + ']';
- $it.errSchemaPath = $errSchemaPath + '/' + $i;
- $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);
- $it.dataPathArr[$dataNxt] = $i;
- }}
-
- {{# def.generateSubschemaCode }}
- {{# def.optimizeValidate }}
- }
-
- {{# def.ifResultValid }}
- {{?}}
- {{~}}
-
- {{? typeof $additionalItems == 'object' && {{# def.nonEmptySchema:$additionalItems }} }}
- {{
- $it.schema = $additionalItems;
- $it.schemaPath = it.schemaPath + '.additionalItems';
- $it.errSchemaPath = it.errSchemaPath + '/additionalItems';
- }}
- {{=$nextValid}} = true;
-
- if ({{=$data}}.length > {{= $schema.length }}) {
- {{# def.validateItems: $schema.length }}
- }
-
- {{# def.ifResultValid }}
- {{?}}
-
-{{?? {{# def.nonEmptySchema:$schema }} }}
- {{ /* 'items' is a single schema */}}
- {{
- $it.schema = $schema;
- $it.schemaPath = $schemaPath;
- $it.errSchemaPath = $errSchemaPath;
- }}
- {{# def.validateItems: 0 }}
-{{?}}
-
-{{? $breakOnError }}
- {{= $closingBraces }}
- if ({{=$errs}} == errors) {
-{{?}}
-
-{{# def.cleanUp }}
diff --git a/assets/node_modules/ajv/lib/dot/missing.def b/assets/node_modules/ajv/lib/dot/missing.def
deleted file mode 100644
index a73b9f9..0000000
--- a/assets/node_modules/ajv/lib/dot/missing.def
+++ /dev/null
@@ -1,39 +0,0 @@
-{{## def.checkMissingProperty:_properties:
- {{~ _properties:$propertyKey:$i }}
- {{?$i}} || {{?}}
- {{
- var $prop = it.util.getProperty($propertyKey)
- , $useData = $data + $prop;
- }}
- ( ({{# def.noPropertyInData }}) && (missing{{=$lvl}} = {{= it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop) }}) )
- {{~}}
-#}}
-
-
-{{## def.errorMissingProperty:_error:
- {{
- var $propertyPath = 'missing' + $lvl
- , $missingProperty = '\' + ' + $propertyPath + ' + \'';
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.opts.jsonPointers
- ? it.util.getPathExpr($currentErrorPath, $propertyPath, true)
- : $currentErrorPath + ' + ' + $propertyPath;
- }
- }}
- {{# def.error:_error }}
-#}}
-
-
-{{## def.allErrorsMissingProperty:_error:
- {{
- var $prop = it.util.getProperty($propertyKey)
- , $missingProperty = it.util.escapeQuotes($propertyKey)
- , $useData = $data + $prop;
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
- }
- }}
- if ({{# def.noPropertyInData }}) {
- {{# def.addError:_error }}
- }
-#}}
diff --git a/assets/node_modules/ajv/lib/dot/multipleOf.jst b/assets/node_modules/ajv/lib/dot/multipleOf.jst
deleted file mode 100644
index 5f8dd33..0000000
--- a/assets/node_modules/ajv/lib/dot/multipleOf.jst
+++ /dev/null
@@ -1,20 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.$data }}
-
-var division{{=$lvl}};
-if ({{?$isData}}
- {{=$schemaValue}} !== undefined && (
- typeof {{=$schemaValue}} != 'number' ||
- {{?}}
- (division{{=$lvl}} = {{=$data}} / {{=$schemaValue}},
- {{? it.opts.multipleOfPrecision }}
- Math.abs(Math.round(division{{=$lvl}}) - division{{=$lvl}}) > 1e-{{=it.opts.multipleOfPrecision}}
- {{??}}
- division{{=$lvl}} !== parseInt(division{{=$lvl}})
- {{?}}
- )
- {{?$isData}} ) {{?}} ) {
- {{# def.error:'multipleOf' }}
-} {{? $breakOnError }} else { {{?}}
diff --git a/assets/node_modules/ajv/lib/dot/not.jst b/assets/node_modules/ajv/lib/dot/not.jst
deleted file mode 100644
index e03185a..0000000
--- a/assets/node_modules/ajv/lib/dot/not.jst
+++ /dev/null
@@ -1,43 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.setupNextLevel }}
-
-{{? {{# def.nonEmptySchema:$schema }} }}
- {{
- $it.schema = $schema;
- $it.schemaPath = $schemaPath;
- $it.errSchemaPath = $errSchemaPath;
- }}
-
- var {{=$errs}} = errors;
-
- {{# def.setCompositeRule }}
-
- {{
- $it.createErrors = false;
- var $allErrorsOption;
- if ($it.opts.allErrors) {
- $allErrorsOption = $it.opts.allErrors;
- $it.opts.allErrors = false;
- }
- }}
- {{= it.validate($it) }}
- {{
- $it.createErrors = true;
- if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;
- }}
-
- {{# def.resetCompositeRule }}
-
- if ({{=$nextValid}}) {
- {{# def.error:'not' }}
- } else {
- {{# def.resetErrors }}
- {{? it.opts.allErrors }} } {{?}}
-{{??}}
- {{# def.addError:'not' }}
- {{? $breakOnError}}
- if (false) {
- {{?}}
-{{?}}
diff --git a/assets/node_modules/ajv/lib/dot/oneOf.jst b/assets/node_modules/ajv/lib/dot/oneOf.jst
deleted file mode 100644
index bcce2c6..0000000
--- a/assets/node_modules/ajv/lib/dot/oneOf.jst
+++ /dev/null
@@ -1,54 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.setupNextLevel }}
-
-{{
- var $currentBaseId = $it.baseId
- , $prevValid = 'prevValid' + $lvl
- , $passingSchemas = 'passingSchemas' + $lvl;
-}}
-
-var {{=$errs}} = errors
- , {{=$prevValid}} = false
- , {{=$valid}} = false
- , {{=$passingSchemas}} = null;
-
-{{# def.setCompositeRule }}
-
-{{~ $schema:$sch:$i }}
- {{? {{# def.nonEmptySchema:$sch }} }}
- {{
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + '[' + $i + ']';
- $it.errSchemaPath = $errSchemaPath + '/' + $i;
- }}
-
- {{# def.insertSubschemaCode }}
- {{??}}
- var {{=$nextValid}} = true;
- {{?}}
-
- {{? $i }}
- if ({{=$nextValid}} && {{=$prevValid}}) {
- {{=$valid}} = false;
- {{=$passingSchemas}} = [{{=$passingSchemas}}, {{=$i}}];
- } else {
- {{ $closingBraces += '}'; }}
- {{?}}
-
- if ({{=$nextValid}}) {
- {{=$valid}} = {{=$prevValid}} = true;
- {{=$passingSchemas}} = {{=$i}};
- }
-{{~}}
-
-{{# def.resetCompositeRule }}
-
-{{= $closingBraces }}
-
-if (!{{=$valid}}) {
- {{# def.extraError:'oneOf' }}
-} else {
- {{# def.resetErrors }}
-{{? it.opts.allErrors }} } {{?}}
diff --git a/assets/node_modules/ajv/lib/dot/pattern.jst b/assets/node_modules/ajv/lib/dot/pattern.jst
deleted file mode 100644
index 3a37ef6..0000000
--- a/assets/node_modules/ajv/lib/dot/pattern.jst
+++ /dev/null
@@ -1,14 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.$data }}
-
-{{
- var $regexp = $isData
- ? '(new RegExp(' + $schemaValue + '))'
- : it.usePattern($schema);
-}}
-
-if ({{# def.$dataNotType:'string' }} !{{=$regexp}}.test({{=$data}}) ) {
- {{# def.error:'pattern' }}
-} {{? $breakOnError }} else { {{?}}
diff --git a/assets/node_modules/ajv/lib/dot/properties.jst b/assets/node_modules/ajv/lib/dot/properties.jst
deleted file mode 100644
index 862067e..0000000
--- a/assets/node_modules/ajv/lib/dot/properties.jst
+++ /dev/null
@@ -1,244 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.setupNextLevel }}
-
-
-{{## def.validateAdditional:
- {{ /* additionalProperties is schema */
- $it.schema = $aProperties;
- $it.schemaPath = it.schemaPath + '.additionalProperties';
- $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';
- $it.errorPath = it.opts._errorDataPathProperty
- ? it.errorPath
- : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
- var $passData = $data + '[' + $key + ']';
- $it.dataPathArr[$dataNxt] = $key;
- }}
-
- {{# def.generateSubschemaCode }}
- {{# def.optimizeValidate }}
-#}}
-
-
-{{
- var $key = 'key' + $lvl
- , $idx = 'idx' + $lvl
- , $dataNxt = $it.dataLevel = it.dataLevel + 1
- , $nextData = 'data' + $dataNxt
- , $dataProperties = 'dataProperties' + $lvl;
-
- var $schemaKeys = Object.keys($schema || {})
- , $pProperties = it.schema.patternProperties || {}
- , $pPropertyKeys = Object.keys($pProperties)
- , $aProperties = it.schema.additionalProperties
- , $someProperties = $schemaKeys.length || $pPropertyKeys.length
- , $noAdditional = $aProperties === false
- , $additionalIsSchema = typeof $aProperties == 'object'
- && Object.keys($aProperties).length
- , $removeAdditional = it.opts.removeAdditional
- , $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional
- , $ownProperties = it.opts.ownProperties
- , $currentBaseId = it.baseId;
-
- var $required = it.schema.required;
- if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired)
- var $requiredHash = it.util.toHash($required);
-}}
-
-
-var {{=$errs}} = errors;
-var {{=$nextValid}} = true;
-{{? $ownProperties }}
- var {{=$dataProperties}} = undefined;
-{{?}}
-
-{{? $checkAdditional }}
- {{# def.iterateProperties }}
- {{? $someProperties }}
- var isAdditional{{=$lvl}} = !(false
- {{? $schemaKeys.length }}
- {{? $schemaKeys.length > 8 }}
- || validate.schema{{=$schemaPath}}.hasOwnProperty({{=$key}})
- {{??}}
- {{~ $schemaKeys:$propertyKey }}
- || {{=$key}} == {{= it.util.toQuotedString($propertyKey) }}
- {{~}}
- {{?}}
- {{?}}
- {{? $pPropertyKeys.length }}
- {{~ $pPropertyKeys:$pProperty:$i }}
- || {{= it.usePattern($pProperty) }}.test({{=$key}})
- {{~}}
- {{?}}
- );
-
- if (isAdditional{{=$lvl}}) {
- {{?}}
- {{? $removeAdditional == 'all' }}
- delete {{=$data}}[{{=$key}}];
- {{??}}
- {{
- var $currentErrorPath = it.errorPath;
- var $additionalProperty = '\' + ' + $key + ' + \'';
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
- }
- }}
- {{? $noAdditional }}
- {{? $removeAdditional }}
- delete {{=$data}}[{{=$key}}];
- {{??}}
- {{=$nextValid}} = false;
- {{
- var $currErrSchemaPath = $errSchemaPath;
- $errSchemaPath = it.errSchemaPath + '/additionalProperties';
- }}
- {{# def.error:'additionalProperties' }}
- {{ $errSchemaPath = $currErrSchemaPath; }}
- {{? $breakOnError }} break; {{?}}
- {{?}}
- {{?? $additionalIsSchema }}
- {{? $removeAdditional == 'failing' }}
- var {{=$errs}} = errors;
- {{# def.setCompositeRule }}
-
- {{# def.validateAdditional }}
-
- if (!{{=$nextValid}}) {
- errors = {{=$errs}};
- if (validate.errors !== null) {
- if (errors) validate.errors.length = errors;
- else validate.errors = null;
- }
- delete {{=$data}}[{{=$key}}];
- }
-
- {{# def.resetCompositeRule }}
- {{??}}
- {{# def.validateAdditional }}
- {{? $breakOnError }} if (!{{=$nextValid}}) break; {{?}}
- {{?}}
- {{?}}
- {{ it.errorPath = $currentErrorPath; }}
- {{?}}
- {{? $someProperties }}
- }
- {{?}}
- }
-
- {{# def.ifResultValid }}
-{{?}}
-
-{{ var $useDefaults = it.opts.useDefaults && !it.compositeRule; }}
-
-{{? $schemaKeys.length }}
- {{~ $schemaKeys:$propertyKey }}
- {{ var $sch = $schema[$propertyKey]; }}
-
- {{? {{# def.nonEmptySchema:$sch}} }}
- {{
- var $prop = it.util.getProperty($propertyKey)
- , $passData = $data + $prop
- , $hasDefault = $useDefaults && $sch.default !== undefined;
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + $prop;
- $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);
- $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);
- $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);
- }}
-
- {{# def.generateSubschemaCode }}
-
- {{? {{# def.willOptimize }} }}
- {{
- $code = {{# def._optimizeValidate }};
- var $useData = $passData;
- }}
- {{??}}
- {{ var $useData = $nextData; }}
- var {{=$nextData}} = {{=$passData}};
- {{?}}
-
- {{? $hasDefault }}
- {{= $code }}
- {{??}}
- {{? $requiredHash && $requiredHash[$propertyKey] }}
- if ({{# def.noPropertyInData }}) {
- {{=$nextValid}} = false;
- {{
- var $currentErrorPath = it.errorPath
- , $currErrSchemaPath = $errSchemaPath
- , $missingProperty = it.util.escapeQuotes($propertyKey);
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
- }
- $errSchemaPath = it.errSchemaPath + '/required';
- }}
- {{# def.error:'required' }}
- {{ $errSchemaPath = $currErrSchemaPath; }}
- {{ it.errorPath = $currentErrorPath; }}
- } else {
- {{??}}
- {{? $breakOnError }}
- if ({{# def.noPropertyInData }}) {
- {{=$nextValid}} = true;
- } else {
- {{??}}
- if ({{=$useData}} !== undefined
- {{? $ownProperties }}
- && {{# def.isOwnProperty }}
- {{?}}
- ) {
- {{?}}
- {{?}}
-
- {{= $code }}
- }
- {{?}} {{ /* $hasDefault */ }}
- {{?}} {{ /* def.nonEmptySchema */ }}
-
- {{# def.ifResultValid }}
- {{~}}
-{{?}}
-
-{{? $pPropertyKeys.length }}
- {{~ $pPropertyKeys:$pProperty }}
- {{ var $sch = $pProperties[$pProperty]; }}
-
- {{? {{# def.nonEmptySchema:$sch}} }}
- {{
- $it.schema = $sch;
- $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);
- $it.errSchemaPath = it.errSchemaPath + '/patternProperties/'
- + it.util.escapeFragment($pProperty);
- }}
-
- {{# def.iterateProperties }}
- if ({{= it.usePattern($pProperty) }}.test({{=$key}})) {
- {{
- $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
- var $passData = $data + '[' + $key + ']';
- $it.dataPathArr[$dataNxt] = $key;
- }}
-
- {{# def.generateSubschemaCode }}
- {{# def.optimizeValidate }}
-
- {{? $breakOnError }} if (!{{=$nextValid}}) break; {{?}}
- }
- {{? $breakOnError }} else {{=$nextValid}} = true; {{?}}
- }
-
- {{# def.ifResultValid }}
- {{?}} {{ /* def.nonEmptySchema */ }}
- {{~}}
-{{?}}
-
-
-{{? $breakOnError }}
- {{= $closingBraces }}
- if ({{=$errs}} == errors) {
-{{?}}
-
-{{# def.cleanUp }}
diff --git a/assets/node_modules/ajv/lib/dot/propertyNames.jst b/assets/node_modules/ajv/lib/dot/propertyNames.jst
deleted file mode 100644
index ee52b21..0000000
--- a/assets/node_modules/ajv/lib/dot/propertyNames.jst
+++ /dev/null
@@ -1,54 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.setupNextLevel }}
-
-var {{=$errs}} = errors;
-
-{{? {{# def.nonEmptySchema:$schema }} }}
- {{
- $it.schema = $schema;
- $it.schemaPath = $schemaPath;
- $it.errSchemaPath = $errSchemaPath;
- }}
-
- {{
- var $key = 'key' + $lvl
- , $idx = 'idx' + $lvl
- , $i = 'i' + $lvl
- , $invalidName = '\' + ' + $key + ' + \''
- , $dataNxt = $it.dataLevel = it.dataLevel + 1
- , $nextData = 'data' + $dataNxt
- , $dataProperties = 'dataProperties' + $lvl
- , $ownProperties = it.opts.ownProperties
- , $currentBaseId = it.baseId;
- }}
-
- {{? $ownProperties }}
- var {{=$dataProperties}} = undefined;
- {{?}}
- {{# def.iterateProperties }}
- var startErrs{{=$lvl}} = errors;
-
- {{ var $passData = $key; }}
- {{# def.setCompositeRule }}
- {{# def.generateSubschemaCode }}
- {{# def.optimizeValidate }}
- {{# def.resetCompositeRule }}
-
- if (!{{=$nextValid}}) {
- for (var {{=$i}}=startErrs{{=$lvl}}; {{=$i}}<errors; {{=$i}}++) {
- vErrors[{{=$i}}].propertyName = {{=$key}};
- }
- {{# def.extraError:'propertyNames' }}
- {{? $breakOnError }} break; {{?}}
- }
- }
-{{?}}
-
-{{? $breakOnError }}
- {{= $closingBraces }}
- if ({{=$errs}} == errors) {
-{{?}}
-
-{{# def.cleanUp }}
diff --git a/assets/node_modules/ajv/lib/dot/ref.jst b/assets/node_modules/ajv/lib/dot/ref.jst
deleted file mode 100644
index 253e350..0000000
--- a/assets/node_modules/ajv/lib/dot/ref.jst
+++ /dev/null
@@ -1,85 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-
-{{## def._validateRef:_v:
- {{? it.opts.passContext }}
- {{=_v}}.call(this,
- {{??}}
- {{=_v}}(
- {{?}}
- {{=$data}}, {{# def.dataPath }}{{# def.passParentData }}, rootData)
-#}}
-
-{{ var $async, $refCode; }}
-{{? $schema == '#' || $schema == '#/' }}
- {{
- if (it.isRoot) {
- $async = it.async;
- $refCode = 'validate';
- } else {
- $async = it.root.schema.$async === true;
- $refCode = 'root.refVal[0]';
- }
- }}
-{{??}}
- {{ var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); }}
- {{? $refVal === undefined }}
- {{ var $message = it.MissingRefError.message(it.baseId, $schema); }}
- {{? it.opts.missingRefs == 'fail' }}
- {{ it.logger.error($message); }}
- {{# def.error:'$ref' }}
- {{? $breakOnError }} if (false) { {{?}}
- {{?? it.opts.missingRefs == 'ignore' }}
- {{ it.logger.warn($message); }}
- {{? $breakOnError }} if (true) { {{?}}
- {{??}}
- {{ throw new it.MissingRefError(it.baseId, $schema, $message); }}
- {{?}}
- {{?? $refVal.inline }}
- {{# def.setupNextLevel }}
- {{
- $it.schema = $refVal.schema;
- $it.schemaPath = '';
- $it.errSchemaPath = $schema;
- }}
- {{ var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); }}
- {{= $code }}
- {{? $breakOnError}}
- if ({{=$nextValid}}) {
- {{?}}
- {{??}}
- {{
- $async = $refVal.$async === true || (it.async && $refVal.$async !== false);
- $refCode = $refVal.code;
- }}
- {{?}}
-{{?}}
-
-{{? $refCode }}
- {{# def.beginDefOut}}
- {{# def._validateRef:$refCode }}
- {{# def.storeDefOut:__callValidate }}
-
- {{? $async }}
- {{ if (!it.async) throw new Error('async schema referenced by sync schema'); }}
- {{? $breakOnError }} var {{=$valid}}; {{?}}
- try {
- await {{=__callValidate}};
- {{? $breakOnError }} {{=$valid}} = true; {{?}}
- } catch (e) {
- if (!(e instanceof ValidationError)) throw e;
- if (vErrors === null) vErrors = e.errors;
- else vErrors = vErrors.concat(e.errors);
- errors = vErrors.length;
- {{? $breakOnError }} {{=$valid}} = false; {{?}}
- }
- {{? $breakOnError }} if ({{=$valid}}) { {{?}}
- {{??}}
- if (!{{=__callValidate}}) {
- if (vErrors === null) vErrors = {{=$refCode}}.errors;
- else vErrors = vErrors.concat({{=$refCode}}.errors);
- errors = vErrors.length;
- } {{? $breakOnError }} else { {{?}}
- {{?}}
-{{?}}
diff --git a/assets/node_modules/ajv/lib/dot/required.jst b/assets/node_modules/ajv/lib/dot/required.jst
deleted file mode 100644
index 80fde35..0000000
--- a/assets/node_modules/ajv/lib/dot/required.jst
+++ /dev/null
@@ -1,108 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.missing }}
-{{# def.setupKeyword }}
-{{# def.$data }}
-
-{{ var $vSchema = 'schema' + $lvl; }}
-
-{{## def.setupLoop:
- {{? !$isData }}
- var {{=$vSchema}} = validate.schema{{=$schemaPath}};
- {{?}}
-
- {{
- var $i = 'i' + $lvl
- , $propertyPath = 'schema' + $lvl + '[' + $i + ']'
- , $missingProperty = '\' + ' + $propertyPath + ' + \'';
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);
- }
- }}
-#}}
-
-
-{{## def.isRequiredOwnProperty:
- Object.prototype.hasOwnProperty.call({{=$data}}, {{=$vSchema}}[{{=$i}}])
-#}}
-
-
-{{? !$isData }}
- {{? $schema.length < it.opts.loopRequired &&
- it.schema.properties && Object.keys(it.schema.properties).length }}
- {{ var $required = []; }}
- {{~ $schema:$property }}
- {{ var $propertySch = it.schema.properties[$property]; }}
- {{? !($propertySch && {{# def.nonEmptySchema:$propertySch}}) }}
- {{ $required[$required.length] = $property; }}
- {{?}}
- {{~}}
- {{??}}
- {{ var $required = $schema; }}
- {{?}}
-{{?}}
-
-
-{{? $isData || $required.length }}
- {{
- var $currentErrorPath = it.errorPath
- , $loopRequired = $isData || $required.length >= it.opts.loopRequired
- , $ownProperties = it.opts.ownProperties;
- }}
-
- {{? $breakOnError }}
- var missing{{=$lvl}};
- {{? $loopRequired }}
- {{# def.setupLoop }}
- var {{=$valid}} = true;
-
- {{?$isData}}{{# def.check$dataIsArray }}{{?}}
-
- for (var {{=$i}} = 0; {{=$i}} < {{=$vSchema}}.length; {{=$i}}++) {
- {{=$valid}} = {{=$data}}[{{=$vSchema}}[{{=$i}}]] !== undefined
- {{? $ownProperties }}
- && {{# def.isRequiredOwnProperty }}
- {{?}};
- if (!{{=$valid}}) break;
- }
-
- {{? $isData }} } {{?}}
-
- {{# def.checkError:'required' }}
- else {
- {{??}}
- if ({{# def.checkMissingProperty:$required }}) {
- {{# def.errorMissingProperty:'required' }}
- } else {
- {{?}}
- {{??}}
- {{? $loopRequired }}
- {{# def.setupLoop }}
- {{? $isData }}
- if ({{=$vSchema}} && !Array.isArray({{=$vSchema}})) {
- {{# def.addError:'required' }}
- } else if ({{=$vSchema}} !== undefined) {
- {{?}}
-
- for (var {{=$i}} = 0; {{=$i}} < {{=$vSchema}}.length; {{=$i}}++) {
- if ({{=$data}}[{{=$vSchema}}[{{=$i}}]] === undefined
- {{? $ownProperties }}
- || !{{# def.isRequiredOwnProperty }}
- {{?}}) {
- {{# def.addError:'required' }}
- }
- }
-
- {{? $isData }} } {{?}}
- {{??}}
- {{~ $required:$propertyKey }}
- {{# def.allErrorsMissingProperty:'required' }}
- {{~}}
- {{?}}
- {{?}}
-
- {{ it.errorPath = $currentErrorPath; }}
-
-{{?? $breakOnError }}
- if (true) {
-{{?}}
diff --git a/assets/node_modules/ajv/lib/dot/uniqueItems.jst b/assets/node_modules/ajv/lib/dot/uniqueItems.jst
deleted file mode 100644
index 22f82f9..0000000
--- a/assets/node_modules/ajv/lib/dot/uniqueItems.jst
+++ /dev/null
@@ -1,62 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.setupKeyword }}
-{{# def.$data }}
-
-
-{{? ($schema || $isData) && it.opts.uniqueItems !== false }}
- {{? $isData }}
- var {{=$valid}};
- if ({{=$schemaValue}} === false || {{=$schemaValue}} === undefined)
- {{=$valid}} = true;
- else if (typeof {{=$schemaValue}} != 'boolean')
- {{=$valid}} = false;
- else {
- {{?}}
-
- var i = {{=$data}}.length
- , {{=$valid}} = true
- , j;
- if (i > 1) {
- {{
- var $itemType = it.schema.items && it.schema.items.type
- , $typeIsArray = Array.isArray($itemType);
- }}
- {{? !$itemType || $itemType == 'object' || $itemType == 'array' ||
- ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0)) }}
- outer:
- for (;i--;) {
- for (j = i; j--;) {
- if (equal({{=$data}}[i], {{=$data}}[j])) {
- {{=$valid}} = false;
- break outer;
- }
- }
- }
- {{??}}
- var itemIndices = {}, item;
- for (;i--;) {
- var item = {{=$data}}[i];
- {{ var $method = 'checkDataType' + ($typeIsArray ? 's' : ''); }}
- if ({{= it.util[$method]($itemType, 'item', true) }}) continue;
- {{? $typeIsArray}}
- if (typeof item == 'string') item = '"' + item;
- {{?}}
- if (typeof itemIndices[item] == 'number') {
- {{=$valid}} = false;
- j = itemIndices[item];
- break;
- }
- itemIndices[item] = i;
- }
- {{?}}
- }
-
- {{? $isData }} } {{?}}
-
- if (!{{=$valid}}) {
- {{# def.error:'uniqueItems' }}
- } {{? $breakOnError }} else { {{?}}
-{{??}}
- {{? $breakOnError }} if (true) { {{?}}
-{{?}}
diff --git a/assets/node_modules/ajv/lib/dot/validate.jst b/assets/node_modules/ajv/lib/dot/validate.jst
deleted file mode 100644
index f8a1edf..0000000
--- a/assets/node_modules/ajv/lib/dot/validate.jst
+++ /dev/null
@@ -1,282 +0,0 @@
-{{# def.definitions }}
-{{# def.errors }}
-{{# def.defaults }}
-{{# def.coerce }}
-
-{{ /**
- * schema compilation (render) time:
- * it = { schema, RULES, _validate, opts }
- * it.validate - this template function,
- * it is used recursively to generate code for subschemas
- *
- * runtime:
- * "validate" is a variable name to which this function will be assigned
- * validateRef etc. are defined in the parent scope in index.js
- */ }}
-
-{{
- var $async = it.schema.$async === true
- , $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref')
- , $id = it.self._getId(it.schema);
-}}
-
-{{
- if (it.opts.strictKeywords) {
- var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords);
- if ($unknownKwd) {
- var $keywordsMsg = 'unknown keyword: ' + $unknownKwd;
- if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg);
- else throw new Error($keywordsMsg);
- }
- }
-}}
-
-{{? it.isTop }}
- var validate = {{?$async}}{{it.async = true;}}async {{?}}function(data, dataPath, parentData, parentDataProperty, rootData) {
- 'use strict';
- {{? $id && (it.opts.sourceCode || it.opts.processCode) }}
- {{= '/\*# sourceURL=' + $id + ' */' }}
- {{?}}
-{{?}}
-
-{{? typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref) }}
- {{ var $keyword = 'false schema'; }}
- {{# def.setupKeyword }}
- {{? it.schema === false}}
- {{? it.isTop}}
- {{ $breakOnError = true; }}
- {{??}}
- var {{=$valid}} = false;
- {{?}}
- {{# def.error:'false schema' }}
- {{??}}
- {{? it.isTop}}
- {{? $async }}
- return data;
- {{??}}
- validate.errors = null;
- return true;
- {{?}}
- {{??}}
- var {{=$valid}} = true;
- {{?}}
- {{?}}
-
- {{? it.isTop}}
- };
- return validate;
- {{?}}
-
- {{ return out; }}
-{{?}}
-
-
-{{? it.isTop }}
- {{
- var $top = it.isTop
- , $lvl = it.level = 0
- , $dataLvl = it.dataLevel = 0
- , $data = 'data';
- it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema));
- it.baseId = it.baseId || it.rootId;
- delete it.isTop;
-
- it.dataPathArr = [undefined];
-
- if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) {
- var $defaultMsg = 'default is ignored in the schema root';
- if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);
- else throw new Error($defaultMsg);
- }
- }}
-
- var vErrors = null; {{ /* don't edit, used in replace */ }}
- var errors = 0; {{ /* don't edit, used in replace */ }}
- if (rootData === undefined) rootData = data; {{ /* don't edit, used in replace */ }}
-{{??}}
- {{
- var $lvl = it.level
- , $dataLvl = it.dataLevel
- , $data = 'data' + ($dataLvl || '');
-
- if ($id) it.baseId = it.resolve.url(it.baseId, $id);
-
- if ($async && !it.async) throw new Error('async schema in sync schema');
- }}
-
- var errs_{{=$lvl}} = errors;
-{{?}}
-
-{{
- var $valid = 'valid' + $lvl
- , $breakOnError = !it.opts.allErrors
- , $closingBraces1 = ''
- , $closingBraces2 = '';
-
- var $errorKeyword;
- var $typeSchema = it.schema.type
- , $typeIsArray = Array.isArray($typeSchema);
-
- if ($typeSchema && it.opts.nullable && it.schema.nullable === true) {
- if ($typeIsArray) {
- if ($typeSchema.indexOf('null') == -1)
- $typeSchema = $typeSchema.concat('null');
- } else if ($typeSchema != 'null') {
- $typeSchema = [$typeSchema, 'null'];
- $typeIsArray = true;
- }
- }
-
- if ($typeIsArray && $typeSchema.length == 1) {
- $typeSchema = $typeSchema[0];
- $typeIsArray = false;
- }
-}}
-
-{{## def.checkType:
- {{
- var $schemaPath = it.schemaPath + '.type'
- , $errSchemaPath = it.errSchemaPath + '/type'
- , $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType';
- }}
-
- if ({{= it.util[$method]($typeSchema, $data, true) }}) {
-#}}
-
-{{? it.schema.$ref && $refKeywords }}
- {{? it.opts.extendRefs == 'fail' }}
- {{ throw new Error('$ref: validation keywords used in schema at path "' + it.errSchemaPath + '" (see option extendRefs)'); }}
- {{?? it.opts.extendRefs !== true }}
- {{
- $refKeywords = false;
- it.logger.warn('$ref: keywords ignored in schema at path "' + it.errSchemaPath + '"');
- }}
- {{?}}
-{{?}}
-
-{{? it.schema.$comment && it.opts.$comment }}
- {{= it.RULES.all.$comment.code(it, '$comment') }}
-{{?}}
-
-{{? $typeSchema }}
- {{? it.opts.coerceTypes }}
- {{ var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema); }}
- {{?}}
-
- {{ var $rulesGroup = it.RULES.types[$typeSchema]; }}
- {{? $coerceToTypes || $typeIsArray || $rulesGroup === true ||
- ($rulesGroup && !$shouldUseGroup($rulesGroup)) }}
- {{
- var $schemaPath = it.schemaPath + '.type'
- , $errSchemaPath = it.errSchemaPath + '/type';
- }}
- {{# def.checkType }}
- {{? $coerceToTypes }}
- {{# def.coerceType }}
- {{??}}
- {{# def.error:'type' }}
- {{?}}
- }
- {{?}}
-{{?}}
-
-
-{{? it.schema.$ref && !$refKeywords }}
- {{= it.RULES.all.$ref.code(it, '$ref') }}
- {{? $breakOnError }}
- }
- if (errors === {{?$top}}0{{??}}errs_{{=$lvl}}{{?}}) {
- {{ $closingBraces2 += '}'; }}
- {{?}}
-{{??}}
- {{~ it.RULES:$rulesGroup }}
- {{? $shouldUseGroup($rulesGroup) }}
- {{? $rulesGroup.type }}
- if ({{= it.util.checkDataType($rulesGroup.type, $data) }}) {
- {{?}}
- {{? it.opts.useDefaults }}
- {{? $rulesGroup.type == 'object' && it.schema.properties }}
- {{# def.defaultProperties }}
- {{?? $rulesGroup.type == 'array' && Array.isArray(it.schema.items) }}
- {{# def.defaultItems }}
- {{?}}
- {{?}}
- {{~ $rulesGroup.rules:$rule }}
- {{? $shouldUseRule($rule) }}
- {{ var $code = $rule.code(it, $rule.keyword, $rulesGroup.type); }}
- {{? $code }}
- {{= $code }}
- {{? $breakOnError }}
- {{ $closingBraces1 += '}'; }}
- {{?}}
- {{?}}
- {{?}}
- {{~}}
- {{? $breakOnError }}
- {{= $closingBraces1 }}
- {{ $closingBraces1 = ''; }}
- {{?}}
- {{? $rulesGroup.type }}
- }
- {{? $typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes }}
- else {
- {{
- var $schemaPath = it.schemaPath + '.type'
- , $errSchemaPath = it.errSchemaPath + '/type';
- }}
- {{# def.error:'type' }}
- }
- {{?}}
- {{?}}
-
- {{? $breakOnError }}
- if (errors === {{?$top}}0{{??}}errs_{{=$lvl}}{{?}}) {
- {{ $closingBraces2 += '}'; }}
- {{?}}
- {{?}}
- {{~}}
-{{?}}
-
-{{? $breakOnError }} {{= $closingBraces2 }} {{?}}
-
-{{? $top }}
- {{? $async }}
- if (errors === 0) return data; {{ /* don't edit, used in replace */ }}
- else throw new ValidationError(vErrors); {{ /* don't edit, used in replace */ }}
- {{??}}
- validate.errors = vErrors; {{ /* don't edit, used in replace */ }}
- return errors === 0; {{ /* don't edit, used in replace */ }}
- {{?}}
- };
-
- return validate;
-{{??}}
- var {{=$valid}} = errors === errs_{{=$lvl}};
-{{?}}
-
-{{# def.cleanUp }}
-
-{{? $top }}
- {{# def.finalCleanUp }}
-{{?}}
-
-{{
- function $shouldUseGroup($rulesGroup) {
- var rules = $rulesGroup.rules;
- for (var i=0; i < rules.length; i++)
- if ($shouldUseRule(rules[i]))
- return true;
- }
-
- function $shouldUseRule($rule) {
- return it.schema[$rule.keyword] !== undefined ||
- ($rule.implements && $ruleImplementsSomeKeyword($rule));
- }
-
- function $ruleImplementsSomeKeyword($rule) {
- var impl = $rule.implements;
- for (var i=0; i < impl.length; i++)
- if (it.schema[impl[i]] !== undefined)
- return true;
- }
-}}
diff --git a/assets/node_modules/ajv/lib/dotjs/README.md b/assets/node_modules/ajv/lib/dotjs/README.md
deleted file mode 100644
index 4d99484..0000000
--- a/assets/node_modules/ajv/lib/dotjs/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-These files are compiled dot templates from dot folder.
-
-Do NOT edit them directly, edit the templates and run `npm run build` from main ajv folder.
diff --git a/assets/node_modules/ajv/lib/dotjs/_limit.js b/assets/node_modules/ajv/lib/dotjs/_limit.js
deleted file mode 100644
index f02a760..0000000
--- a/assets/node_modules/ajv/lib/dotjs/_limit.js
+++ /dev/null
@@ -1,157 +0,0 @@
-'use strict';
-module.exports = function generate__limit(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
- var $data = 'data' + ($dataLvl || '');
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $isMax = $keyword == 'maximum',
- $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum',
- $schemaExcl = it.schema[$exclusiveKeyword],
- $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data,
- $op = $isMax ? '<' : '>',
- $notOp = $isMax ? '>' : '<',
- $errorKeyword = undefined;
- if ($isDataExcl) {
- var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),
- $exclusive = 'exclusive' + $lvl,
- $exclType = 'exclType' + $lvl,
- $exclIsNumber = 'exclIsNumber' + $lvl,
- $opExpr = 'op' + $lvl,
- $opStr = '\' + ' + $opExpr + ' + \'';
- out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';
- $schemaValueExcl = 'schemaExcl' + $lvl;
- out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \'boolean\' && ' + ($exclType) + ' != \'undefined\' && ' + ($exclType) + ' != \'number\') { ';
- var $errorKeyword = $exclusiveKeyword;
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
- if (it.opts.messages !== false) {
- out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } else if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
- }
- out += ' ' + ($exclType) + ' == \'number\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\'; ';
- if ($schema === undefined) {
- $errorKeyword = $exclusiveKeyword;
- $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
- $schemaValue = $schemaValueExcl;
- $isData = $isDataExcl;
- }
- } else {
- var $exclIsNumber = typeof $schemaExcl == 'number',
- $opStr = $op;
- if ($exclIsNumber && $isData) {
- var $opExpr = '\'' + $opStr + '\'';
- out += ' if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
- }
- out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { ';
- } else {
- if ($exclIsNumber && $schema === undefined) {
- $exclusive = true;
- $errorKeyword = $exclusiveKeyword;
- $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
- $schemaValue = $schemaExcl;
- $notOp += '=';
- } else {
- if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);
- if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {
- $exclusive = true;
- $errorKeyword = $exclusiveKeyword;
- $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
- $notOp += '=';
- } else {
- $exclusive = false;
- $opStr += '=';
- }
- }
- var $opExpr = '\'' + $opStr + '\'';
- out += ' if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
- }
- out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { ';
- }
- }
- $errorKeyword = $errorKeyword || $keyword;
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should be ' + ($opStr) + ' ';
- if ($isData) {
- out += '\' + ' + ($schemaValue);
- } else {
- out += '' + ($schemaValue) + '\'';
- }
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + ($schema);
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/_limitItems.js b/assets/node_modules/ajv/lib/dotjs/_limitItems.js
deleted file mode 100644
index a27d118..0000000
--- a/assets/node_modules/ajv/lib/dotjs/_limitItems.js
+++ /dev/null
@@ -1,77 +0,0 @@
-'use strict';
-module.exports = function generate__limitItems(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
- var $data = 'data' + ($dataLvl || '');
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $op = $keyword == 'maxItems' ? '>' : '<';
- out += 'if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
- }
- out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';
- var $errorKeyword = $keyword;
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should NOT have ';
- if ($keyword == 'maxItems') {
- out += 'more';
- } else {
- out += 'fewer';
- }
- out += ' than ';
- if ($isData) {
- out += '\' + ' + ($schemaValue) + ' + \'';
- } else {
- out += '' + ($schema);
- }
- out += ' items\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + ($schema);
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += '} ';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/_limitLength.js b/assets/node_modules/ajv/lib/dotjs/_limitLength.js
deleted file mode 100644
index 789f374..0000000
--- a/assets/node_modules/ajv/lib/dotjs/_limitLength.js
+++ /dev/null
@@ -1,82 +0,0 @@
-'use strict';
-module.exports = function generate__limitLength(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
- var $data = 'data' + ($dataLvl || '');
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $op = $keyword == 'maxLength' ? '>' : '<';
- out += 'if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
- }
- if (it.opts.unicode === false) {
- out += ' ' + ($data) + '.length ';
- } else {
- out += ' ucs2length(' + ($data) + ') ';
- }
- out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';
- var $errorKeyword = $keyword;
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should NOT be ';
- if ($keyword == 'maxLength') {
- out += 'longer';
- } else {
- out += 'shorter';
- }
- out += ' than ';
- if ($isData) {
- out += '\' + ' + ($schemaValue) + ' + \'';
- } else {
- out += '' + ($schema);
- }
- out += ' characters\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + ($schema);
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += '} ';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/_limitProperties.js b/assets/node_modules/ajv/lib/dotjs/_limitProperties.js
deleted file mode 100644
index 11dc939..0000000
--- a/assets/node_modules/ajv/lib/dotjs/_limitProperties.js
+++ /dev/null
@@ -1,77 +0,0 @@
-'use strict';
-module.exports = function generate__limitProperties(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
- var $data = 'data' + ($dataLvl || '');
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $op = $keyword == 'maxProperties' ? '>' : '<';
- out += 'if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || ';
- }
- out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';
- var $errorKeyword = $keyword;
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should NOT have ';
- if ($keyword == 'maxProperties') {
- out += 'more';
- } else {
- out += 'fewer';
- }
- out += ' than ';
- if ($isData) {
- out += '\' + ' + ($schemaValue) + ' + \'';
- } else {
- out += '' + ($schema);
- }
- out += ' properties\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + ($schema);
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += '} ';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/allOf.js b/assets/node_modules/ajv/lib/dotjs/allOf.js
deleted file mode 100644
index 4bad914..0000000
--- a/assets/node_modules/ajv/lib/dotjs/allOf.js
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict';
-module.exports = function generate_allOf(it, $keyword, $ruleType) {
- var out = ' ';
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $currentBaseId = $it.baseId,
- $allSchemasEmpty = true;
- var arr1 = $schema;
- if (arr1) {
- var $sch, $i = -1,
- l1 = arr1.length - 1;
- while ($i < l1) {
- $sch = arr1[$i += 1];
- if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {
- $allSchemasEmpty = false;
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + '[' + $i + ']';
- $it.errSchemaPath = $errSchemaPath + '/' + $i;
- out += ' ' + (it.validate($it)) + ' ';
- $it.baseId = $currentBaseId;
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- $closingBraces += '}';
- }
- }
- }
- }
- if ($breakOnError) {
- if ($allSchemasEmpty) {
- out += ' if (true) { ';
- } else {
- out += ' ' + ($closingBraces.slice(0, -1)) + ' ';
- }
- }
- out = it.util.cleanUpCode(out);
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/anyOf.js b/assets/node_modules/ajv/lib/dotjs/anyOf.js
deleted file mode 100644
index 01551d5..0000000
--- a/assets/node_modules/ajv/lib/dotjs/anyOf.js
+++ /dev/null
@@ -1,74 +0,0 @@
-'use strict';
-module.exports = function generate_anyOf(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $noEmptySchema = $schema.every(function($sch) {
- return (it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all));
- });
- if ($noEmptySchema) {
- var $currentBaseId = $it.baseId;
- out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; ';
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- var arr1 = $schema;
- if (arr1) {
- var $sch, $i = -1,
- l1 = arr1.length - 1;
- while ($i < l1) {
- $sch = arr1[$i += 1];
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + '[' + $i + ']';
- $it.errSchemaPath = $errSchemaPath + '/' + $i;
- out += ' ' + (it.validate($it)) + ' ';
- $it.baseId = $currentBaseId;
- out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { ';
- $closingBraces += '}';
- }
- }
- it.compositeRule = $it.compositeRule = $wasComposite;
- out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should match some schema in anyOf\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError(vErrors); ';
- } else {
- out += ' validate.errors = vErrors; return false; ';
- }
- }
- out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';
- if (it.opts.allErrors) {
- out += ' } ';
- }
- out = it.util.cleanUpCode(out);
- } else {
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/comment.js b/assets/node_modules/ajv/lib/dotjs/comment.js
deleted file mode 100644
index dd66bb8..0000000
--- a/assets/node_modules/ajv/lib/dotjs/comment.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict';
-module.exports = function generate_comment(it, $keyword, $ruleType) {
- var out = ' ';
- var $schema = it.schema[$keyword];
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $comment = it.util.toQuotedString($schema);
- if (it.opts.$comment === true) {
- out += ' console.log(' + ($comment) + ');';
- } else if (typeof it.opts.$comment == 'function') {
- out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);';
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/const.js b/assets/node_modules/ajv/lib/dotjs/const.js
deleted file mode 100644
index 15b7c61..0000000
--- a/assets/node_modules/ajv/lib/dotjs/const.js
+++ /dev/null
@@ -1,56 +0,0 @@
-'use strict';
-module.exports = function generate_const(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- if (!$isData) {
- out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';
- }
- out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('const') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should be equal to constant\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' }';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/contains.js b/assets/node_modules/ajv/lib/dotjs/contains.js
deleted file mode 100644
index cd4dfab..0000000
--- a/assets/node_modules/ajv/lib/dotjs/contains.js
+++ /dev/null
@@ -1,82 +0,0 @@
-'use strict';
-module.exports = function generate_contains(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $idx = 'i' + $lvl,
- $dataNxt = $it.dataLevel = it.dataLevel + 1,
- $nextData = 'data' + $dataNxt,
- $currentBaseId = it.baseId,
- $nonEmptySchema = (it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all));
- out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';
- if ($nonEmptySchema) {
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- $it.schema = $schema;
- $it.schemaPath = $schemaPath;
- $it.errSchemaPath = $errSchemaPath;
- out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';
- $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);
- var $passData = $data + '[' + $idx + ']';
- $it.dataPathArr[$dataNxt] = $idx;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- out += ' if (' + ($nextValid) + ') break; } ';
- it.compositeRule = $it.compositeRule = $wasComposite;
- out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {';
- } else {
- out += ' if (' + ($data) + '.length == 0) {';
- }
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('contains') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should contain a valid item\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } else { ';
- if ($nonEmptySchema) {
- out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';
- }
- if (it.opts.allErrors) {
- out += ' } ';
- }
- out = it.util.cleanUpCode(out);
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/custom.js b/assets/node_modules/ajv/lib/dotjs/custom.js
deleted file mode 100644
index f3e641e..0000000
--- a/assets/node_modules/ajv/lib/dotjs/custom.js
+++ /dev/null
@@ -1,228 +0,0 @@
-'use strict';
-module.exports = function generate_custom(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $errs = 'errs__' + $lvl;
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $rule = this,
- $definition = 'definition' + $lvl,
- $rDef = $rule.definition,
- $closingBraces = '';
- var $compile, $inline, $macro, $ruleValidate, $validateCode;
- if ($isData && $rDef.$data) {
- $validateCode = 'keywordValidate' + $lvl;
- var $validateSchema = $rDef.validateSchema;
- out += ' var ' + ($definition) + ' = RULES.custom[\'' + ($keyword) + '\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;';
- } else {
- $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);
- if (!$ruleValidate) return;
- $schemaValue = 'validate.schema' + $schemaPath;
- $validateCode = $ruleValidate.code;
- $compile = $rDef.compile;
- $inline = $rDef.inline;
- $macro = $rDef.macro;
- }
- var $ruleErrs = $validateCode + '.errors',
- $i = 'i' + $lvl,
- $ruleErr = 'ruleErr' + $lvl,
- $asyncKeyword = $rDef.async;
- if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema');
- if (!($inline || $macro)) {
- out += '' + ($ruleErrs) + ' = null;';
- }
- out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';
- if ($isData && $rDef.$data) {
- $closingBraces += '}';
- out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { ';
- if ($validateSchema) {
- $closingBraces += '}';
- out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { ';
- }
- }
- if ($inline) {
- if ($rDef.statements) {
- out += ' ' + ($ruleValidate.validate) + ' ';
- } else {
- out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; ';
- }
- } else if ($macro) {
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- $it.schema = $ruleValidate.validate;
- $it.schemaPath = '';
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- var $code = it.validate($it).replace(/validate\.schema/g, $validateCode);
- it.compositeRule = $it.compositeRule = $wasComposite;
- out += ' ' + ($code);
- } else {
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = '';
- out += ' ' + ($validateCode) + '.call( ';
- if (it.opts.passContext) {
- out += 'this';
- } else {
- out += 'self';
- }
- if ($compile || $rDef.schema === false) {
- out += ' , ' + ($data) + ' ';
- } else {
- out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' ';
- }
- out += ' , (dataPath || \'\')';
- if (it.errorPath != '""') {
- out += ' + ' + (it.errorPath);
- }
- var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',
- $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
- out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData ) ';
- var def_callRuleValidate = out;
- out = $$outStack.pop();
- if ($rDef.errors === false) {
- out += ' ' + ($valid) + ' = ';
- if ($asyncKeyword) {
- out += 'await ';
- }
- out += '' + (def_callRuleValidate) + '; ';
- } else {
- if ($asyncKeyword) {
- $ruleErrs = 'customErrors' + $lvl;
- out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } ';
- } else {
- out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; ';
- }
- }
- }
- if ($rDef.modifying) {
- out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];';
- }
- out += '' + ($closingBraces);
- if ($rDef.valid) {
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- } else {
- out += ' if ( ';
- if ($rDef.valid === undefined) {
- out += ' !';
- if ($macro) {
- out += '' + ($nextValid);
- } else {
- out += '' + ($valid);
- }
- } else {
- out += ' ' + (!$rDef.valid) + ' ';
- }
- out += ') { ';
- $errorKeyword = $rule.keyword;
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = '';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \'' + ($rule.keyword) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- var def_customError = out;
- out = $$outStack.pop();
- if ($inline) {
- if ($rDef.errors) {
- if ($rDef.errors != 'full') {
- out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \'\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = "' + ($errSchemaPath) + '"; } ';
- if (it.opts.verbose) {
- out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';
- }
- out += ' } ';
- }
- } else {
- if ($rDef.errors === false) {
- out += ' ' + (def_customError) + ' ';
- } else {
- out += ' if (' + ($errs) + ' == errors) { ' + (def_customError) + ' } else { for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \'\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = "' + ($errSchemaPath) + '"; } ';
- if (it.opts.verbose) {
- out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';
- }
- out += ' } } ';
- }
- }
- } else if ($macro) {
- out += ' var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \'' + ($rule.keyword) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError(vErrors); ';
- } else {
- out += ' validate.errors = vErrors; return false; ';
- }
- }
- } else {
- if ($rDef.errors === false) {
- out += ' ' + (def_customError) + ' ';
- } else {
- out += ' if (Array.isArray(' + ($ruleErrs) + ')) { if (vErrors === null) vErrors = ' + ($ruleErrs) + '; else vErrors = vErrors.concat(' + ($ruleErrs) + '); errors = vErrors.length; for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \'\') + ' + (it.errorPath) + '; ' + ($ruleErr) + '.schemaPath = "' + ($errSchemaPath) + '"; ';
- if (it.opts.verbose) {
- out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';
- }
- out += ' } } else { ' + (def_customError) + ' } ';
- }
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' else { ';
- }
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/dependencies.js b/assets/node_modules/ajv/lib/dotjs/dependencies.js
deleted file mode 100644
index 9678936..0000000
--- a/assets/node_modules/ajv/lib/dotjs/dependencies.js
+++ /dev/null
@@ -1,168 +0,0 @@
-'use strict';
-module.exports = function generate_dependencies(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $schemaDeps = {},
- $propertyDeps = {},
- $ownProperties = it.opts.ownProperties;
- for ($property in $schema) {
- var $sch = $schema[$property];
- var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;
- $deps[$property] = $sch;
- }
- out += 'var ' + ($errs) + ' = errors;';
- var $currentErrorPath = it.errorPath;
- out += 'var missing' + ($lvl) + ';';
- for (var $property in $propertyDeps) {
- $deps = $propertyDeps[$property];
- if ($deps.length) {
- out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';
- if ($ownProperties) {
- out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') ';
- }
- if ($breakOnError) {
- out += ' && ( ';
- var arr1 = $deps;
- if (arr1) {
- var $propertyKey, $i = -1,
- l1 = arr1.length - 1;
- while ($i < l1) {
- $propertyKey = arr1[$i += 1];
- if ($i) {
- out += ' || ';
- }
- var $prop = it.util.getProperty($propertyKey),
- $useData = $data + $prop;
- out += ' ( ( ' + ($useData) + ' === undefined ';
- if ($ownProperties) {
- out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
- }
- out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';
- }
- }
- out += ')) { ';
- var $propertyPath = 'missing' + $lvl,
- $missingProperty = '\' + ' + $propertyPath + ' + \'';
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;
- }
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should have ';
- if ($deps.length == 1) {
- out += 'property ' + (it.util.escapeQuotes($deps[0]));
- } else {
- out += 'properties ' + (it.util.escapeQuotes($deps.join(", ")));
- }
- out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- } else {
- out += ' ) { ';
- var arr2 = $deps;
- if (arr2) {
- var $propertyKey, i2 = -1,
- l2 = arr2.length - 1;
- while (i2 < l2) {
- $propertyKey = arr2[i2 += 1];
- var $prop = it.util.getProperty($propertyKey),
- $missingProperty = it.util.escapeQuotes($propertyKey),
- $useData = $data + $prop;
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
- }
- out += ' if ( ' + ($useData) + ' === undefined ';
- if ($ownProperties) {
- out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
- }
- out += ') { var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should have ';
- if ($deps.length == 1) {
- out += 'property ' + (it.util.escapeQuotes($deps[0]));
- } else {
- out += 'properties ' + (it.util.escapeQuotes($deps.join(", ")));
- }
- out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';
- }
- }
- }
- out += ' } ';
- if ($breakOnError) {
- $closingBraces += '}';
- out += ' else { ';
- }
- }
- }
- it.errorPath = $currentErrorPath;
- var $currentBaseId = $it.baseId;
- for (var $property in $schemaDeps) {
- var $sch = $schemaDeps[$property];
- if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {
- out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';
- if ($ownProperties) {
- out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') ';
- }
- out += ') { ';
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + it.util.getProperty($property);
- $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);
- out += ' ' + (it.validate($it)) + ' ';
- $it.baseId = $currentBaseId;
- out += ' } ';
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- $closingBraces += '}';
- }
- }
- }
- if ($breakOnError) {
- out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
- }
- out = it.util.cleanUpCode(out);
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/enum.js b/assets/node_modules/ajv/lib/dotjs/enum.js
deleted file mode 100644
index 90580b9..0000000
--- a/assets/node_modules/ajv/lib/dotjs/enum.js
+++ /dev/null
@@ -1,66 +0,0 @@
-'use strict';
-module.exports = function generate_enum(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $i = 'i' + $lvl,
- $vSchema = 'schema' + $lvl;
- if (!$isData) {
- out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';';
- }
- out += 'var ' + ($valid) + ';';
- if ($isData) {
- out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';
- }
- out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }';
- if ($isData) {
- out += ' } ';
- }
- out += ' if (!' + ($valid) + ') { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('enum') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should be equal to one of the allowed values\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' }';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/format.js b/assets/node_modules/ajv/lib/dotjs/format.js
deleted file mode 100644
index cd9a569..0000000
--- a/assets/node_modules/ajv/lib/dotjs/format.js
+++ /dev/null
@@ -1,150 +0,0 @@
-'use strict';
-module.exports = function generate_format(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- if (it.opts.format === false) {
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- return out;
- }
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $unknownFormats = it.opts.unknownFormats,
- $allowUnknown = Array.isArray($unknownFormats);
- if ($isData) {
- var $format = 'format' + $lvl,
- $isObject = 'isObject' + $lvl,
- $formatType = 'formatType' + $lvl;
- out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \'object\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \'string\'; if (' + ($isObject) + ') { ';
- if (it.async) {
- out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; ';
- }
- out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || ';
- }
- out += ' (';
- if ($unknownFormats != 'ignore') {
- out += ' (' + ($schemaValue) + ' && !' + ($format) + ' ';
- if ($allowUnknown) {
- out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 ';
- }
- out += ') || ';
- }
- out += ' (' + ($format) + ' && ' + ($formatType) + ' == \'' + ($ruleType) + '\' && !(typeof ' + ($format) + ' == \'function\' ? ';
- if (it.async) {
- out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) ';
- } else {
- out += ' ' + ($format) + '(' + ($data) + ') ';
- }
- out += ' : ' + ($format) + '.test(' + ($data) + '))))) {';
- } else {
- var $format = it.formats[$schema];
- if (!$format) {
- if ($unknownFormats == 'ignore') {
- it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"');
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- return out;
- } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) {
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- return out;
- } else {
- throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"');
- }
- }
- var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate;
- var $formatType = $isObject && $format.type || 'string';
- if ($isObject) {
- var $async = $format.async === true;
- $format = $format.validate;
- }
- if ($formatType != $ruleType) {
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- return out;
- }
- if ($async) {
- if (!it.async) throw new Error('async format in sync schema');
- var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';
- out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { ';
- } else {
- out += ' if (! ';
- var $formatRef = 'formats' + it.util.getProperty($schema);
- if ($isObject) $formatRef += '.validate';
- if (typeof $format == 'function') {
- out += ' ' + ($formatRef) + '(' + ($data) + ') ';
- } else {
- out += ' ' + ($formatRef) + '.test(' + ($data) + ') ';
- }
- out += ') { ';
- }
- }
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('format') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: ';
- if ($isData) {
- out += '' + ($schemaValue);
- } else {
- out += '' + (it.util.toQuotedString($schema));
- }
- out += ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should match format "';
- if ($isData) {
- out += '\' + ' + ($schemaValue) + ' + \'';
- } else {
- out += '' + (it.util.escapeQuotes($schema));
- }
- out += '"\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + (it.util.toQuotedString($schema));
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/if.js b/assets/node_modules/ajv/lib/dotjs/if.js
deleted file mode 100644
index 019f61a..0000000
--- a/assets/node_modules/ajv/lib/dotjs/if.js
+++ /dev/null
@@ -1,104 +0,0 @@
-'use strict';
-module.exports = function generate_if(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $thenSch = it.schema['then'],
- $elseSch = it.schema['else'],
- $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? typeof $thenSch == 'object' && Object.keys($thenSch).length > 0 : it.util.schemaHasRules($thenSch, it.RULES.all)),
- $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? typeof $elseSch == 'object' && Object.keys($elseSch).length > 0 : it.util.schemaHasRules($elseSch, it.RULES.all)),
- $currentBaseId = $it.baseId;
- if ($thenPresent || $elsePresent) {
- var $ifClause;
- $it.createErrors = false;
- $it.schema = $schema;
- $it.schemaPath = $schemaPath;
- $it.errSchemaPath = $errSchemaPath;
- out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; ';
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- out += ' ' + (it.validate($it)) + ' ';
- $it.baseId = $currentBaseId;
- $it.createErrors = true;
- out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';
- it.compositeRule = $it.compositeRule = $wasComposite;
- if ($thenPresent) {
- out += ' if (' + ($nextValid) + ') { ';
- $it.schema = it.schema['then'];
- $it.schemaPath = it.schemaPath + '.then';
- $it.errSchemaPath = it.errSchemaPath + '/then';
- out += ' ' + (it.validate($it)) + ' ';
- $it.baseId = $currentBaseId;
- out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';
- if ($thenPresent && $elsePresent) {
- $ifClause = 'ifClause' + $lvl;
- out += ' var ' + ($ifClause) + ' = \'then\'; ';
- } else {
- $ifClause = '\'then\'';
- }
- out += ' } ';
- if ($elsePresent) {
- out += ' else { ';
- }
- } else {
- out += ' if (!' + ($nextValid) + ') { ';
- }
- if ($elsePresent) {
- $it.schema = it.schema['else'];
- $it.schemaPath = it.schemaPath + '.else';
- $it.errSchemaPath = it.errSchemaPath + '/else';
- out += ' ' + (it.validate($it)) + ' ';
- $it.baseId = $currentBaseId;
- out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';
- if ($thenPresent && $elsePresent) {
- $ifClause = 'ifClause' + $lvl;
- out += ' var ' + ($ifClause) + ' = \'else\'; ';
- } else {
- $ifClause = '\'else\'';
- }
- out += ' } ';
- }
- out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('if') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should match "\' + ' + ($ifClause) + ' + \'" schema\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError(vErrors); ';
- } else {
- out += ' validate.errors = vErrors; return false; ';
- }
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' else { ';
- }
- out = it.util.cleanUpCode(out);
- } else {
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/index.js b/assets/node_modules/ajv/lib/dotjs/index.js
deleted file mode 100644
index 2fb1b00..0000000
--- a/assets/node_modules/ajv/lib/dotjs/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-'use strict';
-
-//all requires must be explicit because browserify won't work with dynamic requires
-module.exports = {
- '$ref': require('./ref'),
- allOf: require('./allOf'),
- anyOf: require('./anyOf'),
- '$comment': require('./comment'),
- const: require('./const'),
- contains: require('./contains'),
- dependencies: require('./dependencies'),
- 'enum': require('./enum'),
- format: require('./format'),
- 'if': require('./if'),
- items: require('./items'),
- maximum: require('./_limit'),
- minimum: require('./_limit'),
- maxItems: require('./_limitItems'),
- minItems: require('./_limitItems'),
- maxLength: require('./_limitLength'),
- minLength: require('./_limitLength'),
- maxProperties: require('./_limitProperties'),
- minProperties: require('./_limitProperties'),
- multipleOf: require('./multipleOf'),
- not: require('./not'),
- oneOf: require('./oneOf'),
- pattern: require('./pattern'),
- properties: require('./properties'),
- propertyNames: require('./propertyNames'),
- required: require('./required'),
- uniqueItems: require('./uniqueItems'),
- validate: require('./validate')
-};
diff --git a/assets/node_modules/ajv/lib/dotjs/items.js b/assets/node_modules/ajv/lib/dotjs/items.js
deleted file mode 100644
index d5532f0..0000000
--- a/assets/node_modules/ajv/lib/dotjs/items.js
+++ /dev/null
@@ -1,141 +0,0 @@
-'use strict';
-module.exports = function generate_items(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $idx = 'i' + $lvl,
- $dataNxt = $it.dataLevel = it.dataLevel + 1,
- $nextData = 'data' + $dataNxt,
- $currentBaseId = it.baseId;
- out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';
- if (Array.isArray($schema)) {
- var $additionalItems = it.schema.additionalItems;
- if ($additionalItems === false) {
- out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; ';
- var $currErrSchemaPath = $errSchemaPath;
- $errSchemaPath = it.errSchemaPath + '/additionalItems';
- out += ' if (!' + ($valid) + ') { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('additionalItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should NOT have more than ' + ($schema.length) + ' items\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } ';
- $errSchemaPath = $currErrSchemaPath;
- if ($breakOnError) {
- $closingBraces += '}';
- out += ' else { ';
- }
- }
- var arr1 = $schema;
- if (arr1) {
- var $sch, $i = -1,
- l1 = arr1.length - 1;
- while ($i < l1) {
- $sch = arr1[$i += 1];
- if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {
- out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';
- var $passData = $data + '[' + $i + ']';
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + '[' + $i + ']';
- $it.errSchemaPath = $errSchemaPath + '/' + $i;
- $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);
- $it.dataPathArr[$dataNxt] = $i;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- $closingBraces += '}';
- }
- }
- }
- }
- if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0 : it.util.schemaHasRules($additionalItems, it.RULES.all))) {
- $it.schema = $additionalItems;
- $it.schemaPath = it.schemaPath + '.additionalItems';
- $it.errSchemaPath = it.errSchemaPath + '/additionalItems';
- out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';
- $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);
- var $passData = $data + '[' + $idx + ']';
- $it.dataPathArr[$dataNxt] = $idx;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- if ($breakOnError) {
- out += ' if (!' + ($nextValid) + ') break; ';
- }
- out += ' } } ';
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- $closingBraces += '}';
- }
- }
- } else if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) {
- $it.schema = $schema;
- $it.schemaPath = $schemaPath;
- $it.errSchemaPath = $errSchemaPath;
- out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';
- $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);
- var $passData = $data + '[' + $idx + ']';
- $it.dataPathArr[$dataNxt] = $idx;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- if ($breakOnError) {
- out += ' if (!' + ($nextValid) + ') break; ';
- }
- out += ' }';
- }
- if ($breakOnError) {
- out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
- }
- out = it.util.cleanUpCode(out);
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/multipleOf.js b/assets/node_modules/ajv/lib/dotjs/multipleOf.js
deleted file mode 100644
index af087d2..0000000
--- a/assets/node_modules/ajv/lib/dotjs/multipleOf.js
+++ /dev/null
@@ -1,77 +0,0 @@
-'use strict';
-module.exports = function generate_multipleOf(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- out += 'var division' + ($lvl) + ';if (';
- if ($isData) {
- out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || ';
- }
- out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';
- if (it.opts.multipleOfPrecision) {
- out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';
- } else {
- out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';
- }
- out += ' ) ';
- if ($isData) {
- out += ' ) ';
- }
- out += ' ) { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should be multiple of ';
- if ($isData) {
- out += '\' + ' + ($schemaValue);
- } else {
- out += '' + ($schemaValue) + '\'';
- }
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + ($schema);
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += '} ';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/not.js b/assets/node_modules/ajv/lib/dotjs/not.js
deleted file mode 100644
index 6aea659..0000000
--- a/assets/node_modules/ajv/lib/dotjs/not.js
+++ /dev/null
@@ -1,84 +0,0 @@
-'use strict';
-module.exports = function generate_not(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) {
- $it.schema = $schema;
- $it.schemaPath = $schemaPath;
- $it.errSchemaPath = $errSchemaPath;
- out += ' var ' + ($errs) + ' = errors; ';
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- $it.createErrors = false;
- var $allErrorsOption;
- if ($it.opts.allErrors) {
- $allErrorsOption = $it.opts.allErrors;
- $it.opts.allErrors = false;
- }
- out += ' ' + (it.validate($it)) + ' ';
- $it.createErrors = true;
- if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;
- it.compositeRule = $it.compositeRule = $wasComposite;
- out += ' if (' + ($nextValid) + ') { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should NOT be valid\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';
- if (it.opts.allErrors) {
- out += ' } ';
- }
- } else {
- out += ' var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should NOT be valid\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- if ($breakOnError) {
- out += ' if (false) { ';
- }
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/oneOf.js b/assets/node_modules/ajv/lib/dotjs/oneOf.js
deleted file mode 100644
index 30988d5..0000000
--- a/assets/node_modules/ajv/lib/dotjs/oneOf.js
+++ /dev/null
@@ -1,73 +0,0 @@
-'use strict';
-module.exports = function generate_oneOf(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $currentBaseId = $it.baseId,
- $prevValid = 'prevValid' + $lvl,
- $passingSchemas = 'passingSchemas' + $lvl;
- out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; ';
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- var arr1 = $schema;
- if (arr1) {
- var $sch, $i = -1,
- l1 = arr1.length - 1;
- while ($i < l1) {
- $sch = arr1[$i += 1];
- if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + '[' + $i + ']';
- $it.errSchemaPath = $errSchemaPath + '/' + $i;
- out += ' ' + (it.validate($it)) + ' ';
- $it.baseId = $currentBaseId;
- } else {
- out += ' var ' + ($nextValid) + ' = true; ';
- }
- if ($i) {
- out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { ';
- $closingBraces += '}';
- }
- out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }';
- }
- }
- it.compositeRule = $it.compositeRule = $wasComposite;
- out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should match exactly one schema in oneOf\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError(vErrors); ';
- } else {
- out += ' validate.errors = vErrors; return false; ';
- }
- }
- out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';
- if (it.opts.allErrors) {
- out += ' } ';
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/pattern.js b/assets/node_modules/ajv/lib/dotjs/pattern.js
deleted file mode 100644
index 1d74d6b..0000000
--- a/assets/node_modules/ajv/lib/dotjs/pattern.js
+++ /dev/null
@@ -1,75 +0,0 @@
-'use strict';
-module.exports = function generate_pattern(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);
- out += 'if ( ';
- if ($isData) {
- out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || ';
- }
- out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: ';
- if ($isData) {
- out += '' + ($schemaValue);
- } else {
- out += '' + (it.util.toQuotedString($schema));
- }
- out += ' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should match pattern "';
- if ($isData) {
- out += '\' + ' + ($schemaValue) + ' + \'';
- } else {
- out += '' + (it.util.escapeQuotes($schema));
- }
- out += '"\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + (it.util.toQuotedString($schema));
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += '} ';
- if ($breakOnError) {
- out += ' else { ';
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/properties.js b/assets/node_modules/ajv/lib/dotjs/properties.js
deleted file mode 100644
index 34a82c6..0000000
--- a/assets/node_modules/ajv/lib/dotjs/properties.js
+++ /dev/null
@@ -1,330 +0,0 @@
-'use strict';
-module.exports = function generate_properties(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- var $key = 'key' + $lvl,
- $idx = 'idx' + $lvl,
- $dataNxt = $it.dataLevel = it.dataLevel + 1,
- $nextData = 'data' + $dataNxt,
- $dataProperties = 'dataProperties' + $lvl;
- var $schemaKeys = Object.keys($schema || {}),
- $pProperties = it.schema.patternProperties || {},
- $pPropertyKeys = Object.keys($pProperties),
- $aProperties = it.schema.additionalProperties,
- $someProperties = $schemaKeys.length || $pPropertyKeys.length,
- $noAdditional = $aProperties === false,
- $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,
- $removeAdditional = it.opts.removeAdditional,
- $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,
- $ownProperties = it.opts.ownProperties,
- $currentBaseId = it.baseId;
- var $required = it.schema.required;
- if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required);
- out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';
- if ($ownProperties) {
- out += ' var ' + ($dataProperties) + ' = undefined;';
- }
- if ($checkAdditional) {
- if ($ownProperties) {
- out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';
- } else {
- out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';
- }
- if ($someProperties) {
- out += ' var isAdditional' + ($lvl) + ' = !(false ';
- if ($schemaKeys.length) {
- if ($schemaKeys.length > 8) {
- out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') ';
- } else {
- var arr1 = $schemaKeys;
- if (arr1) {
- var $propertyKey, i1 = -1,
- l1 = arr1.length - 1;
- while (i1 < l1) {
- $propertyKey = arr1[i1 += 1];
- out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';
- }
- }
- }
- }
- if ($pPropertyKeys.length) {
- var arr2 = $pPropertyKeys;
- if (arr2) {
- var $pProperty, $i = -1,
- l2 = arr2.length - 1;
- while ($i < l2) {
- $pProperty = arr2[$i += 1];
- out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';
- }
- }
- }
- out += ' ); if (isAdditional' + ($lvl) + ') { ';
- }
- if ($removeAdditional == 'all') {
- out += ' delete ' + ($data) + '[' + ($key) + ']; ';
- } else {
- var $currentErrorPath = it.errorPath;
- var $additionalProperty = '\' + ' + $key + ' + \'';
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
- }
- if ($noAdditional) {
- if ($removeAdditional) {
- out += ' delete ' + ($data) + '[' + ($key) + ']; ';
- } else {
- out += ' ' + ($nextValid) + ' = false; ';
- var $currErrSchemaPath = $errSchemaPath;
- $errSchemaPath = it.errSchemaPath + '/additionalProperties';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \'' + ($additionalProperty) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'';
- if (it.opts._errorDataPathProperty) {
- out += 'is an invalid additional property';
- } else {
- out += 'should NOT have additional properties';
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- $errSchemaPath = $currErrSchemaPath;
- if ($breakOnError) {
- out += ' break; ';
- }
- }
- } else if ($additionalIsSchema) {
- if ($removeAdditional == 'failing') {
- out += ' var ' + ($errs) + ' = errors; ';
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- $it.schema = $aProperties;
- $it.schemaPath = it.schemaPath + '.additionalProperties';
- $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';
- $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
- var $passData = $data + '[' + $key + ']';
- $it.dataPathArr[$dataNxt] = $key;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } ';
- it.compositeRule = $it.compositeRule = $wasComposite;
- } else {
- $it.schema = $aProperties;
- $it.schemaPath = it.schemaPath + '.additionalProperties';
- $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';
- $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
- var $passData = $data + '[' + $key + ']';
- $it.dataPathArr[$dataNxt] = $key;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- if ($breakOnError) {
- out += ' if (!' + ($nextValid) + ') break; ';
- }
- }
- }
- it.errorPath = $currentErrorPath;
- }
- if ($someProperties) {
- out += ' } ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- $closingBraces += '}';
- }
- }
- var $useDefaults = it.opts.useDefaults && !it.compositeRule;
- if ($schemaKeys.length) {
- var arr3 = $schemaKeys;
- if (arr3) {
- var $propertyKey, i3 = -1,
- l3 = arr3.length - 1;
- while (i3 < l3) {
- $propertyKey = arr3[i3 += 1];
- var $sch = $schema[$propertyKey];
- if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {
- var $prop = it.util.getProperty($propertyKey),
- $passData = $data + $prop,
- $hasDefault = $useDefaults && $sch.default !== undefined;
- $it.schema = $sch;
- $it.schemaPath = $schemaPath + $prop;
- $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);
- $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);
- $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- $code = it.util.varReplace($code, $nextData, $passData);
- var $useData = $passData;
- } else {
- var $useData = $nextData;
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';
- }
- if ($hasDefault) {
- out += ' ' + ($code) + ' ';
- } else {
- if ($requiredHash && $requiredHash[$propertyKey]) {
- out += ' if ( ' + ($useData) + ' === undefined ';
- if ($ownProperties) {
- out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
- }
- out += ') { ' + ($nextValid) + ' = false; ';
- var $currentErrorPath = it.errorPath,
- $currErrSchemaPath = $errSchemaPath,
- $missingProperty = it.util.escapeQuotes($propertyKey);
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
- }
- $errSchemaPath = it.errSchemaPath + '/required';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'';
- if (it.opts._errorDataPathProperty) {
- out += 'is a required property';
- } else {
- out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- $errSchemaPath = $currErrSchemaPath;
- it.errorPath = $currentErrorPath;
- out += ' } else { ';
- } else {
- if ($breakOnError) {
- out += ' if ( ' + ($useData) + ' === undefined ';
- if ($ownProperties) {
- out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
- }
- out += ') { ' + ($nextValid) + ' = true; } else { ';
- } else {
- out += ' if (' + ($useData) + ' !== undefined ';
- if ($ownProperties) {
- out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
- }
- out += ' ) { ';
- }
- }
- out += ' ' + ($code) + ' } ';
- }
- }
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- $closingBraces += '}';
- }
- }
- }
- }
- if ($pPropertyKeys.length) {
- var arr4 = $pPropertyKeys;
- if (arr4) {
- var $pProperty, i4 = -1,
- l4 = arr4.length - 1;
- while (i4 < l4) {
- $pProperty = arr4[i4 += 1];
- var $sch = $pProperties[$pProperty];
- if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {
- $it.schema = $sch;
- $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);
- $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);
- if ($ownProperties) {
- out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';
- } else {
- out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';
- }
- out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';
- $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
- var $passData = $data + '[' + $key + ']';
- $it.dataPathArr[$dataNxt] = $key;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- if ($breakOnError) {
- out += ' if (!' + ($nextValid) + ') break; ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' else ' + ($nextValid) + ' = true; ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- $closingBraces += '}';
- }
- }
- }
- }
- }
- if ($breakOnError) {
- out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
- }
- out = it.util.cleanUpCode(out);
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/propertyNames.js b/assets/node_modules/ajv/lib/dotjs/propertyNames.js
deleted file mode 100644
index b2bf295..0000000
--- a/assets/node_modules/ajv/lib/dotjs/propertyNames.js
+++ /dev/null
@@ -1,82 +0,0 @@
-'use strict';
-module.exports = function generate_propertyNames(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $errs = 'errs__' + $lvl;
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- out += 'var ' + ($errs) + ' = errors;';
- if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) {
- $it.schema = $schema;
- $it.schemaPath = $schemaPath;
- $it.errSchemaPath = $errSchemaPath;
- var $key = 'key' + $lvl,
- $idx = 'idx' + $lvl,
- $i = 'i' + $lvl,
- $invalidName = '\' + ' + $key + ' + \'',
- $dataNxt = $it.dataLevel = it.dataLevel + 1,
- $nextData = 'data' + $dataNxt,
- $dataProperties = 'dataProperties' + $lvl,
- $ownProperties = it.opts.ownProperties,
- $currentBaseId = it.baseId;
- if ($ownProperties) {
- out += ' var ' + ($dataProperties) + ' = undefined; ';
- }
- if ($ownProperties) {
- out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';
- } else {
- out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';
- }
- out += ' var startErrs' + ($lvl) + ' = errors; ';
- var $passData = $key;
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- if (it.util.varOccurences($code, $nextData) < 2) {
- out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
- } else {
- out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
- }
- it.compositeRule = $it.compositeRule = $wasComposite;
- out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + '<errors; ' + ($i) + '++) { vErrors[' + ($i) + '].propertyName = ' + ($key) + '; } var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('propertyNames') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { propertyName: \'' + ($invalidName) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'property name \\\'' + ($invalidName) + '\\\' is invalid\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError(vErrors); ';
- } else {
- out += ' validate.errors = vErrors; return false; ';
- }
- }
- if ($breakOnError) {
- out += ' break; ';
- }
- out += ' } }';
- }
- if ($breakOnError) {
- out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
- }
- out = it.util.cleanUpCode(out);
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/ref.js b/assets/node_modules/ajv/lib/dotjs/ref.js
deleted file mode 100644
index 8042a47..0000000
--- a/assets/node_modules/ajv/lib/dotjs/ref.js
+++ /dev/null
@@ -1,124 +0,0 @@
-'use strict';
-module.exports = function generate_ref(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $async, $refCode;
- if ($schema == '#' || $schema == '#/') {
- if (it.isRoot) {
- $async = it.async;
- $refCode = 'validate';
- } else {
- $async = it.root.schema.$async === true;
- $refCode = 'root.refVal[0]';
- }
- } else {
- var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot);
- if ($refVal === undefined) {
- var $message = it.MissingRefError.message(it.baseId, $schema);
- if (it.opts.missingRefs == 'fail') {
- it.logger.error($message);
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- if ($breakOnError) {
- out += ' if (false) { ';
- }
- } else if (it.opts.missingRefs == 'ignore') {
- it.logger.warn($message);
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- } else {
- throw new it.MissingRefError(it.baseId, $schema, $message);
- }
- } else if ($refVal.inline) {
- var $it = it.util.copy(it);
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- $it.schema = $refVal.schema;
- $it.schemaPath = '';
- $it.errSchemaPath = $schema;
- var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code);
- out += ' ' + ($code) + ' ';
- if ($breakOnError) {
- out += ' if (' + ($nextValid) + ') { ';
- }
- } else {
- $async = $refVal.$async === true || (it.async && $refVal.$async !== false);
- $refCode = $refVal.code;
- }
- }
- if ($refCode) {
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = '';
- if (it.opts.passContext) {
- out += ' ' + ($refCode) + '.call(this, ';
- } else {
- out += ' ' + ($refCode) + '( ';
- }
- out += ' ' + ($data) + ', (dataPath || \'\')';
- if (it.errorPath != '""') {
- out += ' + ' + (it.errorPath);
- }
- var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',
- $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
- out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData) ';
- var __callValidate = out;
- out = $$outStack.pop();
- if ($async) {
- if (!it.async) throw new Error('async schema referenced by sync schema');
- if ($breakOnError) {
- out += ' var ' + ($valid) + '; ';
- }
- out += ' try { await ' + (__callValidate) + '; ';
- if ($breakOnError) {
- out += ' ' + ($valid) + ' = true; ';
- }
- out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ';
- if ($breakOnError) {
- out += ' ' + ($valid) + ' = false; ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' if (' + ($valid) + ') { ';
- }
- } else {
- out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } ';
- if ($breakOnError) {
- out += ' else { ';
- }
- }
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/required.js b/assets/node_modules/ajv/lib/dotjs/required.js
deleted file mode 100644
index 12110a4..0000000
--- a/assets/node_modules/ajv/lib/dotjs/required.js
+++ /dev/null
@@ -1,270 +0,0 @@
-'use strict';
-module.exports = function generate_required(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- var $vSchema = 'schema' + $lvl;
- if (!$isData) {
- if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) {
- var $required = [];
- var arr1 = $schema;
- if (arr1) {
- var $property, i1 = -1,
- l1 = arr1.length - 1;
- while (i1 < l1) {
- $property = arr1[i1 += 1];
- var $propertySch = it.schema.properties[$property];
- if (!($propertySch && (it.opts.strictKeywords ? typeof $propertySch == 'object' && Object.keys($propertySch).length > 0 : it.util.schemaHasRules($propertySch, it.RULES.all)))) {
- $required[$required.length] = $property;
- }
- }
- }
- } else {
- var $required = $schema;
- }
- }
- if ($isData || $required.length) {
- var $currentErrorPath = it.errorPath,
- $loopRequired = $isData || $required.length >= it.opts.loopRequired,
- $ownProperties = it.opts.ownProperties;
- if ($breakOnError) {
- out += ' var missing' + ($lvl) + '; ';
- if ($loopRequired) {
- if (!$isData) {
- out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';
- }
- var $i = 'i' + $lvl,
- $propertyPath = 'schema' + $lvl + '[' + $i + ']',
- $missingProperty = '\' + ' + $propertyPath + ' + \'';
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);
- }
- out += ' var ' + ($valid) + ' = true; ';
- if ($isData) {
- out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';
- }
- out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';
- if ($ownProperties) {
- out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';
- }
- out += '; if (!' + ($valid) + ') break; } ';
- if ($isData) {
- out += ' } ';
- }
- out += ' if (!' + ($valid) + ') { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'';
- if (it.opts._errorDataPathProperty) {
- out += 'is a required property';
- } else {
- out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } else { ';
- } else {
- out += ' if ( ';
- var arr2 = $required;
- if (arr2) {
- var $propertyKey, $i = -1,
- l2 = arr2.length - 1;
- while ($i < l2) {
- $propertyKey = arr2[$i += 1];
- if ($i) {
- out += ' || ';
- }
- var $prop = it.util.getProperty($propertyKey),
- $useData = $data + $prop;
- out += ' ( ( ' + ($useData) + ' === undefined ';
- if ($ownProperties) {
- out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
- }
- out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';
- }
- }
- out += ') { ';
- var $propertyPath = 'missing' + $lvl,
- $missingProperty = '\' + ' + $propertyPath + ' + \'';
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;
- }
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'';
- if (it.opts._errorDataPathProperty) {
- out += 'is a required property';
- } else {
- out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } else { ';
- }
- } else {
- if ($loopRequired) {
- if (!$isData) {
- out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';
- }
- var $i = 'i' + $lvl,
- $propertyPath = 'schema' + $lvl + '[' + $i + ']',
- $missingProperty = '\' + ' + $propertyPath + ' + \'';
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);
- }
- if ($isData) {
- out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'';
- if (it.opts._errorDataPathProperty) {
- out += 'is a required property';
- } else {
- out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';
- }
- out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';
- if ($ownProperties) {
- out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';
- }
- out += ') { var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'';
- if (it.opts._errorDataPathProperty) {
- out += 'is a required property';
- } else {
- out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';
- if ($isData) {
- out += ' } ';
- }
- } else {
- var arr3 = $required;
- if (arr3) {
- var $propertyKey, i3 = -1,
- l3 = arr3.length - 1;
- while (i3 < l3) {
- $propertyKey = arr3[i3 += 1];
- var $prop = it.util.getProperty($propertyKey),
- $missingProperty = it.util.escapeQuotes($propertyKey),
- $useData = $data + $prop;
- if (it.opts._errorDataPathProperty) {
- it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
- }
- out += ' if ( ' + ($useData) + ' === undefined ';
- if ($ownProperties) {
- out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
- }
- out += ') { var err = '; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'';
- if (it.opts._errorDataPathProperty) {
- out += 'is a required property';
- } else {
- out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';
- }
- }
- }
- }
- it.errorPath = $currentErrorPath;
- } else if ($breakOnError) {
- out += ' if (true) {';
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/uniqueItems.js b/assets/node_modules/ajv/lib/dotjs/uniqueItems.js
deleted file mode 100644
index c4f6536..0000000
--- a/assets/node_modules/ajv/lib/dotjs/uniqueItems.js
+++ /dev/null
@@ -1,86 +0,0 @@
-'use strict';
-module.exports = function generate_uniqueItems(it, $keyword, $ruleType) {
- var out = ' ';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $isData = it.opts.$data && $schema && $schema.$data,
- $schemaValue;
- if ($isData) {
- out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
- $schemaValue = 'schema' + $lvl;
- } else {
- $schemaValue = $schema;
- }
- if (($schema || $isData) && it.opts.uniqueItems !== false) {
- if ($isData) {
- out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { ';
- }
- out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { ';
- var $itemType = it.schema.items && it.schema.items.type,
- $typeIsArray = Array.isArray($itemType);
- if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) {
- out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } ';
- } else {
- out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; ';
- var $method = 'checkDataType' + ($typeIsArray ? 's' : '');
- out += ' if (' + (it.util[$method]($itemType, 'item', true)) + ') continue; ';
- if ($typeIsArray) {
- out += ' if (typeof item == \'string\') item = \'"\' + item; ';
- }
- out += ' if (typeof itemIndices[item] == \'number\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ';
- }
- out += ' } ';
- if ($isData) {
- out += ' } ';
- }
- out += ' if (!' + ($valid) + ') { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ('uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: ';
- if ($isData) {
- out += 'validate.schema' + ($schemaPath);
- } else {
- out += '' + ($schema);
- }
- out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } ';
- if ($breakOnError) {
- out += ' else { ';
- }
- } else {
- if ($breakOnError) {
- out += ' if (true) { ';
- }
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/dotjs/validate.js b/assets/node_modules/ajv/lib/dotjs/validate.js
deleted file mode 100644
index cd0efc8..0000000
--- a/assets/node_modules/ajv/lib/dotjs/validate.js
+++ /dev/null
@@ -1,494 +0,0 @@
-'use strict';
-module.exports = function generate_validate(it, $keyword, $ruleType) {
- var out = '';
- var $async = it.schema.$async === true,
- $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'),
- $id = it.self._getId(it.schema);
- if (it.opts.strictKeywords) {
- var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords);
- if ($unknownKwd) {
- var $keywordsMsg = 'unknown keyword: ' + $unknownKwd;
- if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg);
- else throw new Error($keywordsMsg);
- }
- }
- if (it.isTop) {
- out += ' var validate = ';
- if ($async) {
- it.async = true;
- out += 'async ';
- }
- out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \'use strict\'; ';
- if ($id && (it.opts.sourceCode || it.opts.processCode)) {
- out += ' ' + ('/\*# sourceURL=' + $id + ' */') + ' ';
- }
- }
- if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) {
- var $keyword = 'false schema';
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- if (it.schema === false) {
- if (it.isTop) {
- $breakOnError = true;
- } else {
- out += ' var ' + ($valid) + ' = false; ';
- }
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || 'false schema') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';
- if (it.opts.messages !== false) {
- out += ' , message: \'boolean schema is false\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- } else {
- if (it.isTop) {
- if ($async) {
- out += ' return data; ';
- } else {
- out += ' validate.errors = null; return true; ';
- }
- } else {
- out += ' var ' + ($valid) + ' = true; ';
- }
- }
- if (it.isTop) {
- out += ' }; return validate; ';
- }
- return out;
- }
- if (it.isTop) {
- var $top = it.isTop,
- $lvl = it.level = 0,
- $dataLvl = it.dataLevel = 0,
- $data = 'data';
- it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema));
- it.baseId = it.baseId || it.rootId;
- delete it.isTop;
- it.dataPathArr = [undefined];
- if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) {
- var $defaultMsg = 'default is ignored in the schema root';
- if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);
- else throw new Error($defaultMsg);
- }
- out += ' var vErrors = null; ';
- out += ' var errors = 0; ';
- out += ' if (rootData === undefined) rootData = data; ';
- } else {
- var $lvl = it.level,
- $dataLvl = it.dataLevel,
- $data = 'data' + ($dataLvl || '');
- if ($id) it.baseId = it.resolve.url(it.baseId, $id);
- if ($async && !it.async) throw new Error('async schema in sync schema');
- out += ' var errs_' + ($lvl) + ' = errors;';
- }
- var $valid = 'valid' + $lvl,
- $breakOnError = !it.opts.allErrors,
- $closingBraces1 = '',
- $closingBraces2 = '';
- var $errorKeyword;
- var $typeSchema = it.schema.type,
- $typeIsArray = Array.isArray($typeSchema);
- if ($typeSchema && it.opts.nullable && it.schema.nullable === true) {
- if ($typeIsArray) {
- if ($typeSchema.indexOf('null') == -1) $typeSchema = $typeSchema.concat('null');
- } else if ($typeSchema != 'null') {
- $typeSchema = [$typeSchema, 'null'];
- $typeIsArray = true;
- }
- }
- if ($typeIsArray && $typeSchema.length == 1) {
- $typeSchema = $typeSchema[0];
- $typeIsArray = false;
- }
- if (it.schema.$ref && $refKeywords) {
- if (it.opts.extendRefs == 'fail') {
- throw new Error('$ref: validation keywords used in schema at path "' + it.errSchemaPath + '" (see option extendRefs)');
- } else if (it.opts.extendRefs !== true) {
- $refKeywords = false;
- it.logger.warn('$ref: keywords ignored in schema at path "' + it.errSchemaPath + '"');
- }
- }
- if (it.schema.$comment && it.opts.$comment) {
- out += ' ' + (it.RULES.all.$comment.code(it, '$comment'));
- }
- if ($typeSchema) {
- if (it.opts.coerceTypes) {
- var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema);
- }
- var $rulesGroup = it.RULES.types[$typeSchema];
- if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) {
- var $schemaPath = it.schemaPath + '.type',
- $errSchemaPath = it.errSchemaPath + '/type';
- var $schemaPath = it.schemaPath + '.type',
- $errSchemaPath = it.errSchemaPath + '/type',
- $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType';
- out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { ';
- if ($coerceToTypes) {
- var $dataType = 'dataType' + $lvl,
- $coerced = 'coerced' + $lvl;
- out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; ';
- if (it.opts.coerceTypes == 'array') {
- out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ')) ' + ($dataType) + ' = \'array\'; ';
- }
- out += ' var ' + ($coerced) + ' = undefined; ';
- var $bracesCoercion = '';
- var arr1 = $coerceToTypes;
- if (arr1) {
- var $type, $i = -1,
- l1 = arr1.length - 1;
- while ($i < l1) {
- $type = arr1[$i += 1];
- if ($i) {
- out += ' if (' + ($coerced) + ' === undefined) { ';
- $bracesCoercion += '}';
- }
- if (it.opts.coerceTypes == 'array' && $type != 'array') {
- out += ' if (' + ($dataType) + ' == \'array\' && ' + ($data) + '.length == 1) { ' + ($coerced) + ' = ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; } ';
- }
- if ($type == 'string') {
- out += ' if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; ';
- } else if ($type == 'number' || $type == 'integer') {
- out += ' if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' ';
- if ($type == 'integer') {
- out += ' && !(' + ($data) + ' % 1)';
- }
- out += ')) ' + ($coerced) + ' = +' + ($data) + '; ';
- } else if ($type == 'boolean') {
- out += ' if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; ';
- } else if ($type == 'null') {
- out += ' if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; ';
- } else if (it.opts.coerceTypes == 'array' && $type == 'array') {
- out += ' if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; ';
- }
- }
- }
- out += ' ' + ($bracesCoercion) + ' if (' + ($coerced) + ' === undefined) { ';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \'';
- if ($typeIsArray) {
- out += '' + ($typeSchema.join(","));
- } else {
- out += '' + ($typeSchema);
- }
- out += '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should be ';
- if ($typeIsArray) {
- out += '' + ($typeSchema.join(","));
- } else {
- out += '' + ($typeSchema);
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } else { ';
- var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',
- $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
- out += ' ' + ($data) + ' = ' + ($coerced) + '; ';
- if (!$dataLvl) {
- out += 'if (' + ($parentData) + ' !== undefined)';
- }
- out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } ';
- } else {
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \'';
- if ($typeIsArray) {
- out += '' + ($typeSchema.join(","));
- } else {
- out += '' + ($typeSchema);
- }
- out += '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should be ';
- if ($typeIsArray) {
- out += '' + ($typeSchema.join(","));
- } else {
- out += '' + ($typeSchema);
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- }
- out += ' } ';
- }
- }
- if (it.schema.$ref && !$refKeywords) {
- out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' ';
- if ($breakOnError) {
- out += ' } if (errors === ';
- if ($top) {
- out += '0';
- } else {
- out += 'errs_' + ($lvl);
- }
- out += ') { ';
- $closingBraces2 += '}';
- }
- } else {
- var arr2 = it.RULES;
- if (arr2) {
- var $rulesGroup, i2 = -1,
- l2 = arr2.length - 1;
- while (i2 < l2) {
- $rulesGroup = arr2[i2 += 1];
- if ($shouldUseGroup($rulesGroup)) {
- if ($rulesGroup.type) {
- out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { ';
- }
- if (it.opts.useDefaults) {
- if ($rulesGroup.type == 'object' && it.schema.properties) {
- var $schema = it.schema.properties,
- $schemaKeys = Object.keys($schema);
- var arr3 = $schemaKeys;
- if (arr3) {
- var $propertyKey, i3 = -1,
- l3 = arr3.length - 1;
- while (i3 < l3) {
- $propertyKey = arr3[i3 += 1];
- var $sch = $schema[$propertyKey];
- if ($sch.default !== undefined) {
- var $passData = $data + it.util.getProperty($propertyKey);
- if (it.compositeRule) {
- if (it.opts.strictDefaults) {
- var $defaultMsg = 'default is ignored for: ' + $passData;
- if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);
- else throw new Error($defaultMsg);
- }
- } else {
- out += ' if (' + ($passData) + ' === undefined ';
- if (it.opts.useDefaults == 'empty') {
- out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \'\' ';
- }
- out += ' ) ' + ($passData) + ' = ';
- if (it.opts.useDefaults == 'shared') {
- out += ' ' + (it.useDefault($sch.default)) + ' ';
- } else {
- out += ' ' + (JSON.stringify($sch.default)) + ' ';
- }
- out += '; ';
- }
- }
- }
- }
- } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) {
- var arr4 = it.schema.items;
- if (arr4) {
- var $sch, $i = -1,
- l4 = arr4.length - 1;
- while ($i < l4) {
- $sch = arr4[$i += 1];
- if ($sch.default !== undefined) {
- var $passData = $data + '[' + $i + ']';
- if (it.compositeRule) {
- if (it.opts.strictDefaults) {
- var $defaultMsg = 'default is ignored for: ' + $passData;
- if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);
- else throw new Error($defaultMsg);
- }
- } else {
- out += ' if (' + ($passData) + ' === undefined ';
- if (it.opts.useDefaults == 'empty') {
- out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \'\' ';
- }
- out += ' ) ' + ($passData) + ' = ';
- if (it.opts.useDefaults == 'shared') {
- out += ' ' + (it.useDefault($sch.default)) + ' ';
- } else {
- out += ' ' + (JSON.stringify($sch.default)) + ' ';
- }
- out += '; ';
- }
- }
- }
- }
- }
- }
- var arr5 = $rulesGroup.rules;
- if (arr5) {
- var $rule, i5 = -1,
- l5 = arr5.length - 1;
- while (i5 < l5) {
- $rule = arr5[i5 += 1];
- if ($shouldUseRule($rule)) {
- var $code = $rule.code(it, $rule.keyword, $rulesGroup.type);
- if ($code) {
- out += ' ' + ($code) + ' ';
- if ($breakOnError) {
- $closingBraces1 += '}';
- }
- }
- }
- }
- }
- if ($breakOnError) {
- out += ' ' + ($closingBraces1) + ' ';
- $closingBraces1 = '';
- }
- if ($rulesGroup.type) {
- out += ' } ';
- if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) {
- out += ' else { ';
- var $schemaPath = it.schemaPath + '.type',
- $errSchemaPath = it.errSchemaPath + '/type';
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = ''; /* istanbul ignore else */
- if (it.createErrors !== false) {
- out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \'';
- if ($typeIsArray) {
- out += '' + ($typeSchema.join(","));
- } else {
- out += '' + ($typeSchema);
- }
- out += '\' } ';
- if (it.opts.messages !== false) {
- out += ' , message: \'should be ';
- if ($typeIsArray) {
- out += '' + ($typeSchema.join(","));
- } else {
- out += '' + ($typeSchema);
- }
- out += '\' ';
- }
- if (it.opts.verbose) {
- out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
- }
- out += ' } ';
- } else {
- out += ' {} ';
- }
- var __err = out;
- out = $$outStack.pop();
- if (!it.compositeRule && $breakOnError) {
- /* istanbul ignore if */
- if (it.async) {
- out += ' throw new ValidationError([' + (__err) + ']); ';
- } else {
- out += ' validate.errors = [' + (__err) + ']; return false; ';
- }
- } else {
- out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
- }
- out += ' } ';
- }
- }
- if ($breakOnError) {
- out += ' if (errors === ';
- if ($top) {
- out += '0';
- } else {
- out += 'errs_' + ($lvl);
- }
- out += ') { ';
- $closingBraces2 += '}';
- }
- }
- }
- }
- }
- if ($breakOnError) {
- out += ' ' + ($closingBraces2) + ' ';
- }
- if ($top) {
- if ($async) {
- out += ' if (errors === 0) return data; ';
- out += ' else throw new ValidationError(vErrors); ';
- } else {
- out += ' validate.errors = vErrors; ';
- out += ' return errors === 0; ';
- }
- out += ' }; return validate;';
- } else {
- out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';';
- }
- out = it.util.cleanUpCode(out);
- if ($top) {
- out = it.util.finalCleanUpCode(out, $async);
- }
-
- function $shouldUseGroup($rulesGroup) {
- var rules = $rulesGroup.rules;
- for (var i = 0; i < rules.length; i++)
- if ($shouldUseRule(rules[i])) return true;
- }
-
- function $shouldUseRule($rule) {
- return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule));
- }
-
- function $ruleImplementsSomeKeyword($rule) {
- var impl = $rule.implements;
- for (var i = 0; i < impl.length; i++)
- if (it.schema[impl[i]] !== undefined) return true;
- }
- return out;
-}
diff --git a/assets/node_modules/ajv/lib/keyword.js b/assets/node_modules/ajv/lib/keyword.js
deleted file mode 100644
index 5fec19a..0000000
--- a/assets/node_modules/ajv/lib/keyword.js
+++ /dev/null
@@ -1,146 +0,0 @@
-'use strict';
-
-var IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i;
-var customRuleCode = require('./dotjs/custom');
-var definitionSchema = require('./definition_schema');
-
-module.exports = {
- add: addKeyword,
- get: getKeyword,
- remove: removeKeyword,
- validate: validateKeyword
-};
-
-
-/**
- * Define custom keyword
- * @this Ajv
- * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords).
- * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.
- * @return {Ajv} this for method chaining
- */
-function addKeyword(keyword, definition) {
- /* jshint validthis: true */
- /* eslint no-shadow: 0 */
- var RULES = this.RULES;
- if (RULES.keywords[keyword])
- throw new Error('Keyword ' + keyword + ' is already defined');
-
- if (!IDENTIFIER.test(keyword))
- throw new Error('Keyword ' + keyword + ' is not a valid identifier');
-
- if (definition) {
- this.validateKeyword(definition, true);
-
- var dataType = definition.type;
- if (Array.isArray(dataType)) {
- for (var i=0; i<dataType.length; i++)
- _addRule(keyword, dataType[i], definition);
- } else {
- _addRule(keyword, dataType, definition);
- }
-
- var metaSchema = definition.metaSchema;
- if (metaSchema) {
- if (definition.$data && this._opts.$data) {
- metaSchema = {
- anyOf: [
- metaSchema,
- { '$ref': 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' }
- ]
- };
- }
- definition.validateSchema = this.compile(metaSchema, true);
- }
- }
-
- RULES.keywords[keyword] = RULES.all[keyword] = true;
-
-
- function _addRule(keyword, dataType, definition) {
- var ruleGroup;
- for (var i=0; i<RULES.length; i++) {
- var rg = RULES[i];
- if (rg.type == dataType) {
- ruleGroup = rg;
- break;
- }
- }
-
- if (!ruleGroup) {
- ruleGroup = { type: dataType, rules: [] };
- RULES.push(ruleGroup);
- }
-
- var rule = {
- keyword: keyword,
- definition: definition,
- custom: true,
- code: customRuleCode,
- implements: definition.implements
- };
- ruleGroup.rules.push(rule);
- RULES.custom[keyword] = rule;
- }
-
- return this;
-}
-
-
-/**
- * Get keyword
- * @this Ajv
- * @param {String} keyword pre-defined or custom keyword.
- * @return {Object|Boolean} custom keyword definition, `true` if it is a predefined keyword, `false` otherwise.
- */
-function getKeyword(keyword) {
- /* jshint validthis: true */
- var rule = this.RULES.custom[keyword];
- return rule ? rule.definition : this.RULES.keywords[keyword] || false;
-}
-
-
-/**
- * Remove keyword
- * @this Ajv
- * @param {String} keyword pre-defined or custom keyword.
- * @return {Ajv} this for method chaining
- */
-function removeKeyword(keyword) {
- /* jshint validthis: true */
- var RULES = this.RULES;
- delete RULES.keywords[keyword];
- delete RULES.all[keyword];
- delete RULES.custom[keyword];
- for (var i=0; i<RULES.length; i++) {
- var rules = RULES[i].rules;
- for (var j=0; j<rules.length; j++) {
- if (rules[j].keyword == keyword) {
- rules.splice(j, 1);
- break;
- }
- }
- }
- return this;
-}
-
-
-/**
- * Validate keyword definition
- * @this Ajv
- * @param {Object} definition keyword definition object.
- * @param {Boolean} throwError true to throw exception if definition is invalid
- * @return {boolean} validation result
- */
-function validateKeyword(definition, throwError) {
- validateKeyword.errors = null;
- var v = this._validateKeyword = this._validateKeyword
- || this.compile(definitionSchema, true);
-
- if (v(definition)) return true;
- validateKeyword.errors = v.errors;
- if (throwError)
- throw new Error('custom keyword definition is invalid: ' + this.errorsText(v.errors));
- else
- return false;
-}
diff --git a/assets/node_modules/ajv/lib/refs/data.json b/assets/node_modules/ajv/lib/refs/data.json
deleted file mode 100644
index 87a2d14..0000000
--- a/assets/node_modules/ajv/lib/refs/data.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#",
- "description": "Meta-schema for $data reference (JSON Schema extension proposal)",
- "type": "object",
- "required": [ "$data" ],
- "properties": {
- "$data": {
- "type": "string",
- "anyOf": [
- { "format": "relative-json-pointer" },
- { "format": "json-pointer" }
- ]
- }
- },
- "additionalProperties": false
-}
diff --git a/assets/node_modules/ajv/lib/refs/json-schema-draft-04.json b/assets/node_modules/ajv/lib/refs/json-schema-draft-04.json
deleted file mode 100644
index bcbb847..0000000
--- a/assets/node_modules/ajv/lib/refs/json-schema-draft-04.json
+++ /dev/null
@@ -1,149 +0,0 @@
-{
- "id": "http://json-schema.org/draft-04/schema#",
- "$schema": "http://json-schema.org/draft-04/schema#",
- "description": "Core schema meta-schema",
- "definitions": {
- "schemaArray": {
- "type": "array",
- "minItems": 1,
- "items": { "$ref": "#" }
- },
- "positiveInteger": {
- "type": "integer",
- "minimum": 0
- },
- "positiveIntegerDefault0": {
- "allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ]
- },
- "simpleTypes": {
- "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ]
- },
- "stringArray": {
- "type": "array",
- "items": { "type": "string" },
- "minItems": 1,
- "uniqueItems": true
- }
- },
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "$schema": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "description": {
- "type": "string"
- },
- "default": {},
- "multipleOf": {
- "type": "number",
- "minimum": 0,
- "exclusiveMinimum": true
- },
- "maximum": {
- "type": "number"
- },
- "exclusiveMaximum": {
- "type": "boolean",
- "default": false
- },
- "minimum": {
- "type": "number"
- },
- "exclusiveMinimum": {
- "type": "boolean",
- "default": false
- },
- "maxLength": { "$ref": "#/definitions/positiveInteger" },
- "minLength": { "$ref": "#/definitions/positiveIntegerDefault0" },
- "pattern": {
- "type": "string",
- "format": "regex"
- },
- "additionalItems": {
- "anyOf": [
- { "type": "boolean" },
- { "$ref": "#" }
- ],
- "default": {}
- },
- "items": {
- "anyOf": [
- { "$ref": "#" },
- { "$ref": "#/definitions/schemaArray" }
- ],
- "default": {}
- },
- "maxItems": { "$ref": "#/definitions/positiveInteger" },
- "minItems": { "$ref": "#/definitions/positiveIntegerDefault0" },
- "uniqueItems": {
- "type": "boolean",
- "default": false
- },
- "maxProperties": { "$ref": "#/definitions/positiveInteger" },
- "minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" },
- "required": { "$ref": "#/definitions/stringArray" },
- "additionalProperties": {
- "anyOf": [
- { "type": "boolean" },
- { "$ref": "#" }
- ],
- "default": {}
- },
- "definitions": {
- "type": "object",
- "additionalProperties": { "$ref": "#" },
- "default": {}
- },
- "properties": {
- "type": "object",
- "additionalProperties": { "$ref": "#" },
- "default": {}
- },
- "patternProperties": {
- "type": "object",
- "additionalProperties": { "$ref": "#" },
- "default": {}
- },
- "dependencies": {
- "type": "object",
- "additionalProperties": {
- "anyOf": [
- { "$ref": "#" },
- { "$ref": "#/definitions/stringArray" }
- ]
- }
- },
- "enum": {
- "type": "array",
- "minItems": 1,
- "uniqueItems": true
- },
- "type": {
- "anyOf": [
- { "$ref": "#/definitions/simpleTypes" },
- {
- "type": "array",
- "items": { "$ref": "#/definitions/simpleTypes" },
- "minItems": 1,
- "uniqueItems": true
- }
- ]
- },
- "format": { "type": "string" },
- "allOf": { "$ref": "#/definitions/schemaArray" },
- "anyOf": { "$ref": "#/definitions/schemaArray" },
- "oneOf": { "$ref": "#/definitions/schemaArray" },
- "not": { "$ref": "#" }
- },
- "dependencies": {
- "exclusiveMaximum": [ "maximum" ],
- "exclusiveMinimum": [ "minimum" ]
- },
- "default": {}
-}
diff --git a/assets/node_modules/ajv/lib/refs/json-schema-draft-06.json b/assets/node_modules/ajv/lib/refs/json-schema-draft-06.json
deleted file mode 100644
index 5656240..0000000
--- a/assets/node_modules/ajv/lib/refs/json-schema-draft-06.json
+++ /dev/null
@@ -1,154 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-06/schema#",
- "$id": "http://json-schema.org/draft-06/schema#",
- "title": "Core schema meta-schema",
- "definitions": {
- "schemaArray": {
- "type": "array",
- "minItems": 1,
- "items": { "$ref": "#" }
- },
- "nonNegativeInteger": {
- "type": "integer",
- "minimum": 0
- },
- "nonNegativeIntegerDefault0": {
- "allOf": [
- { "$ref": "#/definitions/nonNegativeInteger" },
- { "default": 0 }
- ]
- },
- "simpleTypes": {
- "enum": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ]
- },
- "stringArray": {
- "type": "array",
- "items": { "type": "string" },
- "uniqueItems": true,
- "default": []
- }
- },
- "type": ["object", "boolean"],
- "properties": {
- "$id": {
- "type": "string",
- "format": "uri-reference"
- },
- "$schema": {
- "type": "string",
- "format": "uri"
- },
- "$ref": {
- "type": "string",
- "format": "uri-reference"
- },
- "title": {
- "type": "string"
- },
- "description": {
- "type": "string"
- },
- "default": {},
- "examples": {
- "type": "array",
- "items": {}
- },
- "multipleOf": {
- "type": "number",
- "exclusiveMinimum": 0
- },
- "maximum": {
- "type": "number"
- },
- "exclusiveMaximum": {
- "type": "number"
- },
- "minimum": {
- "type": "number"
- },
- "exclusiveMinimum": {
- "type": "number"
- },
- "maxLength": { "$ref": "#/definitions/nonNegativeInteger" },
- "minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
- "pattern": {
- "type": "string",
- "format": "regex"
- },
- "additionalItems": { "$ref": "#" },
- "items": {
- "anyOf": [
- { "$ref": "#" },
- { "$ref": "#/definitions/schemaArray" }
- ],
- "default": {}
- },
- "maxItems": { "$ref": "#/definitions/nonNegativeInteger" },
- "minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
- "uniqueItems": {
- "type": "boolean",
- "default": false
- },
- "contains": { "$ref": "#" },
- "maxProperties": { "$ref": "#/definitions/nonNegativeInteger" },
- "minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
- "required": { "$ref": "#/definitions/stringArray" },
- "additionalProperties": { "$ref": "#" },
- "definitions": {
- "type": "object",
- "additionalProperties": { "$ref": "#" },
- "default": {}
- },
- "properties": {
- "type": "object",
- "additionalProperties": { "$ref": "#" },
- "default": {}
- },
- "patternProperties": {
- "type": "object",
- "additionalProperties": { "$ref": "#" },
- "default": {}
- },
- "dependencies": {
- "type": "object",
- "additionalProperties": {
- "anyOf": [
- { "$ref": "#" },
- { "$ref": "#/definitions/stringArray" }
- ]
- }
- },
- "propertyNames": { "$ref": "#" },
- "const": {},
- "enum": {
- "type": "array",
- "minItems": 1,
- "uniqueItems": true
- },
- "type": {
- "anyOf": [
- { "$ref": "#/definitions/simpleTypes" },
- {
- "type": "array",
- "items": { "$ref": "#/definitions/simpleTypes" },
- "minItems": 1,
- "uniqueItems": true
- }
- ]
- },
- "format": { "type": "string" },
- "allOf": { "$ref": "#/definitions/schemaArray" },
- "anyOf": { "$ref": "#/definitions/schemaArray" },
- "oneOf": { "$ref": "#/definitions/schemaArray" },
- "not": { "$ref": "#" }
- },
- "default": {}
-}
diff --git a/assets/node_modules/ajv/lib/refs/json-schema-draft-07.json b/assets/node_modules/ajv/lib/refs/json-schema-draft-07.json
deleted file mode 100644
index 5bee90e..0000000
--- a/assets/node_modules/ajv/lib/refs/json-schema-draft-07.json
+++ /dev/null
@@ -1,168 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "http://json-schema.org/draft-07/schema#",
- "title": "Core schema meta-schema",
- "definitions": {
- "schemaArray": {
- "type": "array",
- "minItems": 1,
- "items": { "$ref": "#" }
- },
- "nonNegativeInteger": {
- "type": "integer",
- "minimum": 0
- },
- "nonNegativeIntegerDefault0": {
- "allOf": [
- { "$ref": "#/definitions/nonNegativeInteger" },
- { "default": 0 }
- ]
- },
- "simpleTypes": {
- "enum": [
- "array",
- "boolean",
- "integer",
- "null",
- "number",
- "object",
- "string"
- ]
- },
- "stringArray": {
- "type": "array",
- "items": { "type": "string" },
- "uniqueItems": true,
- "default": []
- }
- },
- "type": ["object", "boolean"],
- "properties": {
- "$id": {
- "type": "string",
- "format": "uri-reference"
- },
- "$schema": {
- "type": "string",
- "format": "uri"
- },
- "$ref": {
- "type": "string",
- "format": "uri-reference"
- },
- "$comment": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "description": {
- "type": "string"
- },
- "default": true,
- "readOnly": {
- "type": "boolean",
- "default": false
- },
- "examples": {
- "type": "array",
- "items": true
- },
- "multipleOf": {
- "type": "number",
- "exclusiveMinimum": 0
- },
- "maximum": {
- "type": "number"
- },
- "exclusiveMaximum": {
- "type": "number"
- },
- "minimum": {
- "type": "number"
- },
- "exclusiveMinimum": {
- "type": "number"
- },
- "maxLength": { "$ref": "#/definitions/nonNegativeInteger" },
- "minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
- "pattern": {
- "type": "string",
- "format": "regex"
- },
- "additionalItems": { "$ref": "#" },
- "items": {
- "anyOf": [
- { "$ref": "#" },
- { "$ref": "#/definitions/schemaArray" }
- ],
- "default": true
- },
- "maxItems": { "$ref": "#/definitions/nonNegativeInteger" },
- "minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
- "uniqueItems": {
- "type": "boolean",
- "default": false
- },
- "contains": { "$ref": "#" },
- "maxProperties": { "$ref": "#/definitions/nonNegativeInteger" },
- "minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
- "required": { "$ref": "#/definitions/stringArray" },
- "additionalProperties": { "$ref": "#" },
- "definitions": {
- "type": "object",
- "additionalProperties": { "$ref": "#" },
- "default": {}
- },
- "properties": {
- "type": "object",
- "additionalProperties": { "$ref": "#" },
- "default": {}
- },
- "patternProperties": {
- "type": "object",
- "additionalProperties": { "$ref": "#" },
- "propertyNames": { "format": "regex" },
- "default": {}
- },
- "dependencies": {
- "type": "object",
- "additionalProperties": {
- "anyOf": [
- { "$ref": "#" },
- { "$ref": "#/definitions/stringArray" }
- ]
- }
- },
- "propertyNames": { "$ref": "#" },
- "const": true,
- "enum": {
- "type": "array",
- "items": true,
- "minItems": 1,
- "uniqueItems": true
- },
- "type": {
- "anyOf": [
- { "$ref": "#/definitions/simpleTypes" },
- {
- "type": "array",
- "items": { "$ref": "#/definitions/simpleTypes" },
- "minItems": 1,
- "uniqueItems": true
- }
- ]
- },
- "format": { "type": "string" },
- "contentMediaType": { "type": "string" },
- "contentEncoding": { "type": "string" },
- "if": {"$ref": "#"},
- "then": {"$ref": "#"},
- "else": {"$ref": "#"},
- "allOf": { "$ref": "#/definitions/schemaArray" },
- "anyOf": { "$ref": "#/definitions/schemaArray" },
- "oneOf": { "$ref": "#/definitions/schemaArray" },
- "not": { "$ref": "#" }
- },
- "default": true
-}
diff --git a/assets/node_modules/ajv/lib/refs/json-schema-secure.json b/assets/node_modules/ajv/lib/refs/json-schema-secure.json
deleted file mode 100644
index 66faf84..0000000
--- a/assets/node_modules/ajv/lib/refs/json-schema-secure.json
+++ /dev/null
@@ -1,94 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-secure.json#",
- "title": "Meta-schema for the security assessment of JSON Schemas",
- "description": "If a JSON Schema fails validation against this meta-schema, it may be unsafe to validate untrusted data",
- "definitions": {
- "schemaArray": {
- "type": "array",
- "minItems": 1,
- "items": {"$ref": "#"}
- }
- },
- "dependencies": {
- "patternProperties": {
- "description": "prevent slow validation of large property names",
- "required": ["propertyNames"],
- "properties": {
- "propertyNames": {
- "required": ["maxLength"]
- }
- }
- },
- "uniqueItems": {
- "description": "prevent slow validation of large non-scalar arrays",
- "if": {
- "properties": {
- "uniqueItems": {"const": true},
- "items": {
- "properties": {
- "type": {
- "anyOf": [
- {
- "enum": ["object", "array"]
- },
- {
- "type": "array",
- "contains": {"enum": ["object", "array"]}
- }
- ]
- }
- }
- }
- }
- },
- "then": {
- "required": ["maxItems"]
- }
- },
- "pattern": {
- "description": "prevent slow pattern matching of large strings",
- "required": ["maxLength"]
- },
- "format": {
- "description": "prevent slow format validation of large strings",
- "required": ["maxLength"]
- }
- },
- "properties": {
- "additionalItems": {"$ref": "#"},
- "additionalProperties": {"$ref": "#"},
- "dependencies": {
- "additionalProperties": {
- "anyOf": [
- {"type": "array"},
- {"$ref": "#"}
- ]
- }
- },
- "items": {
- "anyOf": [
- {"$ref": "#"},
- {"$ref": "#/definitions/schemaArray"}
- ]
- },
- "definitions": {
- "additionalProperties": {"$ref": "#"}
- },
- "patternProperties": {
- "additionalProperties": {"$ref": "#"}
- },
- "properties": {
- "additionalProperties": {"$ref": "#"}
- },
- "if": {"$ref": "#"},
- "then": {"$ref": "#"},
- "else": {"$ref": "#"},
- "allOf": {"$ref": "#/definitions/schemaArray"},
- "anyOf": {"$ref": "#/definitions/schemaArray"},
- "oneOf": {"$ref": "#/definitions/schemaArray"},
- "not": {"$ref": "#"},
- "contains": {"$ref": "#"},
- "propertyNames": {"$ref": "#"}
- }
-}
diff --git a/assets/node_modules/ajv/package.json b/assets/node_modules/ajv/package.json
deleted file mode 100644
index da9218a..0000000
--- a/assets/node_modules/ajv/package.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "name": "ajv",
- "version": "6.11.0",
- "description": "Another JSON Schema Validator",
- "main": "lib/ajv.js",
- "typings": "lib/ajv.d.ts",
- "files": [
- "lib/",
- "dist/",
- "scripts/",
- "LICENSE",
- ".tonic_example.js"
- ],
- "scripts": {
- "eslint": "eslint lib/{compile/,}*.js spec/{**/,}*.js scripts --ignore-pattern spec/JSON-Schema-Test-Suite",
- "jshint": "jshint lib/{compile/,}*.js",
- "lint": "npm run jshint && npm run eslint",
- "test-spec": "mocha spec/{**/,}*.spec.js -R spec",
- "test-fast": "AJV_FAST_TEST=true npm run test-spec",
- "test-debug": "npm run test-spec -- --inspect-brk",
- "test-cov": "nyc npm run test-spec",
- "test-ts": "tsc --target ES5 --noImplicitAny --noEmit spec/typescript/index.ts",
- "bundle": "del-cli dist && node ./scripts/bundle.js . Ajv pure_getters",
- "bundle-beautify": "node ./scripts/bundle.js js-beautify",
- "build": "del-cli lib/dotjs/*.js \"!lib/dotjs/index.js\" && node scripts/compile-dots.js",
- "test-karma": "karma start",
- "test-browser": "del-cli .browser && npm run bundle && scripts/prepare-tests && npm run test-karma",
- "test-all": "npm run test-cov && if-node-version 10 npm run test-browser",
- "test": "npm run lint && npm run build && npm run test-all",
- "prepublish": "npm run build && npm run bundle",
- "watch": "watch \"npm run build\" ./lib/dot"
- },
- "nyc": {
- "exclude": [
- "**/spec/**",
- "node_modules"
- ],
- "reporter": [
- "lcov",
- "text-summary"
- ]
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/epoberezkin/ajv.git"
- },
- "keywords": [
- "JSON",
- "schema",
- "validator",
- "validation",
- "jsonschema",
- "json-schema",
- "json-schema-validator",
- "json-schema-validation"
- ],
- "author": "Evgeny Poberezkin",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/epoberezkin/ajv/issues"
- },
- "homepage": "https://github.com/epoberezkin/ajv",
- "tonicExampleFilename": ".tonic_example.js",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "devDependencies": {
- "ajv-async": "^1.0.0",
- "bluebird": "^3.5.3",
- "brfs": "^2.0.0",
- "browserify": "^16.2.0",
- "chai": "^4.0.1",
- "coveralls": "^3.0.1",
- "del-cli": "^3.0.0",
- "dot": "^1.0.3",
- "eslint": "^6.0.0",
- "gh-pages-generator": "^0.2.3",
- "glob": "^7.0.0",
- "if-node-version": "^1.0.0",
- "js-beautify": "^1.7.3",
- "jshint": "^2.10.2",
- "json-schema-test": "^2.0.0",
- "karma": "^4.0.1",
- "karma-chrome-launcher": "^3.0.0",
- "karma-mocha": "^1.1.1",
- "karma-sauce-launcher": "^2.0.0",
- "mocha": "^6.0.0",
- "nyc": "^15.0.0",
- "pre-commit": "^1.1.1",
- "require-globify": "^1.3.0",
- "typescript": "^2.8.3",
- "uglify-js": "^3.6.9",
- "watch": "^1.0.0"
- }
-}
diff --git a/assets/node_modules/ajv/scripts/.eslintrc.yml b/assets/node_modules/ajv/scripts/.eslintrc.yml
deleted file mode 100644
index 493d7d3..0000000
--- a/assets/node_modules/ajv/scripts/.eslintrc.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-rules:
- no-console: 0
- no-empty: [2, allowEmptyCatch: true]
diff --git a/assets/node_modules/ajv/scripts/bundle.js b/assets/node_modules/ajv/scripts/bundle.js
deleted file mode 100644
index e381a76..0000000
--- a/assets/node_modules/ajv/scripts/bundle.js
+++ /dev/null
@@ -1,61 +0,0 @@
-'use strict';
-
-var fs = require('fs')
- , path = require('path')
- , browserify = require('browserify')
- , uglify = require('uglify-js');
-
-var pkg = process.argv[2]
- , standalone = process.argv[3]
- , compress = process.argv[4];
-
-var packageDir = path.join(__dirname, '..');
-if (pkg != '.') packageDir = path.join(packageDir, 'node_modules', pkg);
-
-var json = require(path.join(packageDir, 'package.json'));
-
-var distDir = path.join(__dirname, '..', 'dist');
-if (!fs.existsSync(distDir)) fs.mkdirSync(distDir);
-
-var bOpts = {};
-if (standalone) bOpts.standalone = standalone;
-
-browserify(bOpts)
-.require(path.join(packageDir, json.main), {expose: json.name})
-.bundle(function (err, buf) {
- if (err) {
- console.error('browserify error:', err);
- process.exit(1);
- }
-
- var outputFile = path.join(distDir, json.name);
- var uglifyOpts = {
- warnings: true,
- compress: {},
- output: {
- preamble: '/* ' + json.name + ' ' + json.version + ': ' + json.description + ' */'
- }
- };
- if (compress) {
- var compressOpts = compress.split(',');
- for (var i=0, il = compressOpts.length; i<il; ++i) {
- var pair = compressOpts[i].split('=');
- uglifyOpts.compress[pair[0]] = pair.length < 1 || pair[1] != 'false';
- }
- }
- if (standalone) {
- uglifyOpts.sourceMap = {
- filename: json.name + '.min.js',
- url: json.name + '.min.js.map'
- };
- }
-
- var result = uglify.minify(buf.toString(), uglifyOpts);
- fs.writeFileSync(outputFile + '.min.js', result.code);
- if (result.map) fs.writeFileSync(outputFile + '.min.js.map', result.map);
- if (standalone) fs.writeFileSync(outputFile + '.bundle.js', buf);
- if (result.warnings) {
- for (var j=0, jl = result.warnings.length; j<jl; ++j)
- console.warn('UglifyJS warning:', result.warnings[j]);
- }
-});
diff --git a/assets/node_modules/ajv/scripts/compile-dots.js b/assets/node_modules/ajv/scripts/compile-dots.js
deleted file mode 100644
index 5a21a7d..0000000
--- a/assets/node_modules/ajv/scripts/compile-dots.js
+++ /dev/null
@@ -1,73 +0,0 @@
-//compile doT templates to js functions
-'use strict';
-
-var glob = require('glob')
- , fs = require('fs')
- , path = require('path')
- , doT = require('dot')
- , beautify = require('js-beautify').js_beautify;
-
-var defsRootPath = process.argv[2] || path.join(__dirname, '../lib');
-
-var defs = {};
-var defFiles = glob.sync('./dot/**/*.def', { cwd: defsRootPath });
-defFiles.forEach(function (f) {
- var name = path.basename(f, '.def');
- defs[name] = fs.readFileSync(path.join(defsRootPath, f));
-});
-
-var filesRootPath = process.argv[3] || path.join(__dirname, '../lib');
-var files = glob.sync('./dot/**/*.jst', { cwd: filesRootPath });
-
-var dotjsPath = path.join(filesRootPath, './dotjs');
-try { fs.mkdirSync(dotjsPath); } catch(e) {}
-
-console.log('\n\nCompiling:');
-
-var FUNCTION_NAME = /function\s+anonymous\s*\(it[^)]*\)\s*{/;
-var OUT_EMPTY_STRING = /out\s*\+=\s*'\s*';/g;
-var ISTANBUL = /'(istanbul[^']+)';/g;
-var ERROR_KEYWORD = /\$errorKeyword/g;
-var ERROR_KEYWORD_OR = /\$errorKeyword\s+\|\|/g;
-var VARS = [
- '$errs', '$valid', '$lvl', '$data', '$dataLvl',
- '$errorKeyword', '$closingBraces', '$schemaPath',
- '$validate'
-];
-
-files.forEach(function (f) {
- var keyword = path.basename(f, '.jst');
- var targetPath = path.join(dotjsPath, keyword + '.js');
- var template = fs.readFileSync(path.join(filesRootPath, f));
- var code = doT.compile(template, defs);
- code = code.toString()
- .replace(OUT_EMPTY_STRING, '')
- .replace(FUNCTION_NAME, 'function generate_' + keyword + '(it, $keyword, $ruleType) {')
- .replace(ISTANBUL, '/* $1 */');
- removeAlwaysFalsyInOr();
- VARS.forEach(removeUnusedVar);
- code = "'use strict';\nmodule.exports = " + code;
- code = beautify(code, { indent_size: 2 }) + '\n';
- fs.writeFileSync(targetPath, code);
- console.log('compiled', keyword);
-
- function removeUnusedVar(v) {
- v = v.replace(/\$/g, '\\$$');
- var regexp = new RegExp(v + '[^A-Za-z0-9_$]', 'g');
- var count = occurrences(regexp);
- if (count == 1) {
- regexp = new RegExp('var\\s+' + v + '\\s*=[^;]+;|var\\s+' + v + ';');
- code = code.replace(regexp, '');
- }
- }
-
- function removeAlwaysFalsyInOr() {
- var countUsed = occurrences(ERROR_KEYWORD);
- var countOr = occurrences(ERROR_KEYWORD_OR);
- if (countUsed == countOr + 1) code = code.replace(ERROR_KEYWORD_OR, '');
- }
-
- function occurrences(regexp) {
- return (code.match(regexp) || []).length;
- }
-});
diff --git a/assets/node_modules/ajv/scripts/info b/assets/node_modules/ajv/scripts/info
deleted file mode 100755
index 77269ab..0000000
--- a/assets/node_modules/ajv/scripts/info
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env node
-
-'use strict';
-
-var fs = require('fs');
-var name = process.argv[2] || '.';
-var property = process.argv[3] || 'version';
-if (name != '.') name = 'node_modules/' + name;
-var json = JSON.parse(fs.readFileSync(name + '/package.json', 'utf8'));
-console.log(json[property]);
diff --git a/assets/node_modules/ajv/scripts/prepare-tests b/assets/node_modules/ajv/scripts/prepare-tests
deleted file mode 100755
index 6847033..0000000
--- a/assets/node_modules/ajv/scripts/prepare-tests
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env sh
-
-set -e
-
-mkdir -p .browser
-
-echo
-echo Preparing browser tests:
-
-find spec -type f -name '*.spec.js' | \
-xargs -I {} sh -c \
-'export f="{}"; echo $f; browserify $f -t require-globify -t brfs -x ajv -u buffer -o $(echo $f | sed -e "s/spec/.browser/");'
diff --git a/assets/node_modules/ajv/scripts/publish-built-version b/assets/node_modules/ajv/scripts/publish-built-version
deleted file mode 100755
index 2796ed2..0000000
--- a/assets/node_modules/ajv/scripts/publish-built-version
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-
-if [[ -n $TRAVIS_TAG && $TRAVIS_JOB_NUMBER =~ ".3" ]]; then
- echo "About to publish $TRAVIS_TAG to ajv-dist..."
-
- git config user.email "$GIT_USER_EMAIL"
- git config user.name "$GIT_USER_NAME"
-
- git clone https://${GITHUB_TOKEN}@github.com/epoberezkin/ajv-dist.git ../ajv-dist
-
- rm -rf ../ajv-dist/dist
- mkdir ../ajv-dist/dist
- cp ./dist/ajv.* ../ajv-dist/dist
- cat bower.json | sed 's/"name": "ajv"/"name": "ajv-dist"/' > ../ajv-dist/bower.json
- cd ../ajv-dist
-
- if [[ `git status --porcelain` ]]; then
- echo "Changes detected. Updating master branch..."
- git add -A
- git commit -m "updated by travis build #$TRAVIS_BUILD_NUMBER"
- git push --quiet origin master > /dev/null 2>&1
- fi
-
- echo "Publishing tag..."
-
- git tag $TRAVIS_TAG
- git push --tags > /dev/null 2>&1
-
- echo "Done"
-fi
diff --git a/assets/node_modules/ajv/scripts/travis-gh-pages b/assets/node_modules/ajv/scripts/travis-gh-pages
deleted file mode 100755
index 46ded16..0000000
--- a/assets/node_modules/ajv/scripts/travis-gh-pages
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-
-if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_PULL_REQUEST" == "false" && $TRAVIS_JOB_NUMBER =~ ".3" ]]; then
- git diff --name-only $TRAVIS_COMMIT_RANGE | grep -qE '\.md$|^LICENSE$|travis-gh-pages$' && {
- rm -rf ../gh-pages
- git clone -b gh-pages --single-branch https://${GITHUB_TOKEN}@github.com/epoberezkin/ajv.git ../gh-pages
- mkdir -p ../gh-pages/_source
- cp *.md ../gh-pages/_source
- cp LICENSE ../gh-pages/_source
- currentDir=$(pwd)
- cd ../gh-pages
- $currentDir/node_modules/.bin/gh-pages-generator
- # remove logo from README
- sed -i -E "s/<img[^>]+ajv_logo[^>]+>//" index.md
- git config user.email "$GIT_USER_EMAIL"
- git config user.name "$GIT_USER_NAME"
- git add .
- git commit -am "updated by travis build #$TRAVIS_BUILD_NUMBER"
- git push --quiet origin gh-pages > /dev/null 2>&1
- }
-fi
diff --git a/assets/node_modules/ansi-regex/index.d.ts b/assets/node_modules/ansi-regex/index.d.ts
deleted file mode 100644
index 2dbf6af..0000000
--- a/assets/node_modules/ansi-regex/index.d.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-declare namespace ansiRegex {
- interface Options {
- /**
- Match only the first ANSI escape.
-
- @default false
- */
- onlyFirst: boolean;
- }
-}
-
-/**
-Regular expression for matching ANSI escape codes.
-
-@example
-```
-import ansiRegex = require('ansi-regex');
-
-ansiRegex().test('\u001B[4mcake\u001B[0m');
-//=> true
-
-ansiRegex().test('cake');
-//=> false
-
-'\u001B[4mcake\u001B[0m'.match(ansiRegex());
-//=> ['\u001B[4m', '\u001B[0m']
-
-'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true}));
-//=> ['\u001B[4m']
-
-'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex());
-//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007']
-```
-*/
-declare function ansiRegex(options?: ansiRegex.Options): RegExp;
-
-export = ansiRegex;
diff --git a/assets/node_modules/ansi-regex/index.js b/assets/node_modules/ansi-regex/index.js
deleted file mode 100644
index 35054aa..0000000
--- a/assets/node_modules/ansi-regex/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict';
-
-module.exports = ({onlyFirst = false} = {}) => {
- const pattern = [
- '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)',
- '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'
- ].join('|');
-
- return new RegExp(pattern, onlyFirst ? undefined : 'g');
-};
diff --git a/assets/node_modules/ansi-regex/license b/assets/node_modules/ansi-regex/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/ansi-regex/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/ansi-regex/package.json b/assets/node_modules/ansi-regex/package.json
deleted file mode 100644
index 7af801f..0000000
--- a/assets/node_modules/ansi-regex/package.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "name": "ansi-regex",
- "version": "5.0.0",
- "description": "Regular expression for matching ANSI escape codes",
- "license": "MIT",
- "repository": "chalk/ansi-regex",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd",
- "view-supported": "node fixtures/view-codes.js"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "ansi",
- "styles",
- "color",
- "colour",
- "colors",
- "terminal",
- "console",
- "cli",
- "string",
- "tty",
- "escape",
- "formatting",
- "rgb",
- "256",
- "shell",
- "xterm",
- "command-line",
- "text",
- "regex",
- "regexp",
- "re",
- "match",
- "test",
- "find",
- "pattern"
- ],
- "devDependencies": {
- "ava": "^2.4.0",
- "tsd": "^0.9.0",
- "xo": "^0.25.3"
- }
-}
diff --git a/assets/node_modules/ansi-regex/readme.md b/assets/node_modules/ansi-regex/readme.md
deleted file mode 100644
index 3c2b77c..0000000
--- a/assets/node_modules/ansi-regex/readme.md
+++ /dev/null
@@ -1,78 +0,0 @@
-# ansi-regex [![Build Status](https://travis-ci.org/chalk/ansi-regex.svg?branch=master)](https://travis-ci.org/chalk/ansi-regex)
-
-> Regular expression for matching [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code)
-
-
-## Install
-
-```
-$ npm install ansi-regex
-```
-
-
-## Usage
-
-```js
-const ansiRegex = require('ansi-regex');
-
-ansiRegex().test('\u001B[4mcake\u001B[0m');
-//=> true
-
-ansiRegex().test('cake');
-//=> false
-
-'\u001B[4mcake\u001B[0m'.match(ansiRegex());
-//=> ['\u001B[4m', '\u001B[0m']
-
-'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true}));
-//=> ['\u001B[4m']
-
-'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex());
-//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007']
-```
-
-
-## API
-
-### ansiRegex(options?)
-
-Returns a regex for matching ANSI escape codes.
-
-#### options
-
-Type: `object`
-
-##### onlyFirst
-
-Type: `boolean`<br>
-Default: `false` *(Matches any ANSI escape codes in a string)*
-
-Match only the first ANSI escape.
-
-
-## FAQ
-
-### Why do you test for codes not in the ECMA 48 standard?
-
-Some of the codes we run as a test are codes that we acquired finding various lists of non-standard or manufacturer specific codes. We test for both standard and non-standard codes, as most of them follow the same or similar format and can be safely matched in strings without the risk of removing actual string content. There are a few non-standard control codes that do not follow the traditional format (i.e. they end in numbers) thus forcing us to exclude them from the test because we cannot reliably match them.
-
-On the historical side, those ECMA standards were established in the early 90's whereas the VT100, for example, was designed in the mid/late 70's. At that point in time, control codes were still pretty ungoverned and engineers used them for a multitude of things, namely to activate hardware ports that may have been proprietary. Somewhere else you see a similar 'anarchy' of codes is in the x86 architecture for processors; there are a ton of "interrupts" that can mean different things on certain brands of processors, most of which have been phased out.
-
-
-## Maintainers
-
-- [Sindre Sorhus](https://github.com/sindresorhus)
-- [Josh Junon](https://github.com/qix-)
-
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-ansi-regex?utm_source=npm-ansi-regex&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
diff --git a/assets/node_modules/ansi-styles/index.js b/assets/node_modules/ansi-styles/index.js
deleted file mode 100644
index 90a871c..0000000
--- a/assets/node_modules/ansi-styles/index.js
+++ /dev/null
@@ -1,165 +0,0 @@
-'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/assets/node_modules/ansi-styles/license b/assets/node_modules/ansi-styles/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/ansi-styles/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/ansi-styles/package.json b/assets/node_modules/ansi-styles/package.json
deleted file mode 100644
index 65edb48..0000000
--- a/assets/node_modules/ansi-styles/package.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "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/assets/node_modules/ansi-styles/readme.md b/assets/node_modules/ansi-styles/readme.md
deleted file mode 100644
index 3158e2d..0000000
--- a/assets/node_modules/ansi-styles/readme.md
+++ /dev/null
@@ -1,147 +0,0 @@
-# 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/assets/node_modules/anymatch/LICENSE b/assets/node_modules/anymatch/LICENSE
deleted file mode 100644
index 491766c..0000000
--- a/assets/node_modules/anymatch/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) 2019 Elan Shanker, Paul Miller (https://paulmillr.com)
-
-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/assets/node_modules/anymatch/README.md b/assets/node_modules/anymatch/README.md
deleted file mode 100644
index 1dd67f5..0000000
--- a/assets/node_modules/anymatch/README.md
+++ /dev/null
@@ -1,87 +0,0 @@
-anymatch [![Build Status](https://travis-ci.org/micromatch/anymatch.svg?branch=master)](https://travis-ci.org/micromatch/anymatch) [![Coverage Status](https://img.shields.io/coveralls/micromatch/anymatch.svg?branch=master)](https://coveralls.io/r/micromatch/anymatch?branch=master)
-======
-Javascript module to match a string against a regular expression, glob, string,
-or function that takes the string as an argument and returns a truthy or falsy
-value. The matcher can also be an array of any or all of these. Useful for
-allowing a very flexible user-defined config to define things like file paths.
-
-__Note: This module has Bash-parity, please be aware that Windows-style backslashes are not supported as separators. See https://github.com/micromatch/micromatch#backslashes for more information.__
-
-
-Usage
------
-```sh
-npm install anymatch
-```
-
-#### anymatch(matchers, testString, [returnIndex], [options])
-* __matchers__: (_Array|String|RegExp|Function_)
-String to be directly matched, string with glob patterns, regular expression
-test, function that takes the testString as an argument and returns a truthy
-value if it should be matched, or an array of any number and mix of these types.
-* __testString__: (_String|Array_) The string to test against the matchers. If
-passed as an array, the first element of the array will be used as the
-`testString` for non-function matchers, while the entire array will be applied
-as the arguments for function matchers.
-* __options__: (_Object_ [optional]_) Any of the [picomatch](https://github.com/micromatch/picomatch#options) options.
- * __returnIndex__: (_Boolean [optional]_) If true, return the array index of
-the first matcher that that testString matched, or -1 if no match, instead of a
-boolean result.
-
-```js
-const anymatch = require('anymatch');
-
-const matchers = [ 'path/to/file.js', 'path/anyjs/**/*.js', /foo.js$/, string => string.includes('bar') && string.length > 10 ] ;
-
-anymatch(matchers, 'path/to/file.js'); // true
-anymatch(matchers, 'path/anyjs/baz.js'); // true
-anymatch(matchers, 'path/to/foo.js'); // true
-anymatch(matchers, 'path/to/bar.js'); // true
-anymatch(matchers, 'bar.js'); // false
-
-// returnIndex = true
-anymatch(matchers, 'foo.js', {returnIndex: true}); // 2
-anymatch(matchers, 'path/anyjs/foo.js', {returnIndex: true}); // 1
-
-// any picomatc
-
-// using globs to match directories and their children
-anymatch('node_modules', 'node_modules'); // true
-anymatch('node_modules', 'node_modules/somelib/index.js'); // false
-anymatch('node_modules/**', 'node_modules/somelib/index.js'); // true
-anymatch('node_modules/**', '/absolute/path/to/node_modules/somelib/index.js'); // false
-anymatch('**/node_modules/**', '/absolute/path/to/node_modules/somelib/index.js'); // true
-
-const matcher = anymatch(matchers);
-['foo.js', 'bar.js'].filter(matcher); // [ 'foo.js' ]
-anymatch master* ❯
-
-```
-
-#### anymatch(matchers)
-You can also pass in only your matcher(s) to get a curried function that has
-already been bound to the provided matching criteria. This can be used as an
-`Array#filter` callback.
-
-```js
-var matcher = anymatch(matchers);
-
-matcher('path/to/file.js'); // true
-matcher('path/anyjs/baz.js', true); // 1
-
-['foo.js', 'bar.js'].filter(matcher); // ['foo.js']
-```
-
-Changelog
-----------
-[See release notes page on GitHub](https://github.com/micromatch/anymatch/releases)
-
-- **v3.0:** Removed `startIndex` and `endIndex` arguments. Node 8.x-only.
-- **v2.0:** [micromatch](https://github.com/jonschlinkert/micromatch) moves away from minimatch-parity and inline with Bash. This includes handling backslashes differently (see https://github.com/micromatch/micromatch#backslashes for more information).
-- **v1.2:** anymatch uses [micromatch](https://github.com/jonschlinkert/micromatch)
-for glob pattern matching. Issues with glob pattern matching should be
-reported directly to the [micromatch issue tracker](https://github.com/jonschlinkert/micromatch/issues).
-
-License
--------
-[ISC](https://raw.github.com/micromatch/anymatch/master/LICENSE)
diff --git a/assets/node_modules/anymatch/index.d.ts b/assets/node_modules/anymatch/index.d.ts
deleted file mode 100644
index 196d061..0000000
--- a/assets/node_modules/anymatch/index.d.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-type AnymatchFn = (testString: string) => boolean;
-type AnymatchPattern = string|RegExp|AnymatchFn;
-type AnymatchMatcher = AnymatchPattern|AnymatchPattern[]
-type AnymatchTester = {
- (testString: string|any[], returnIndex: true): number;
- (testString: string|any[]): boolean;
-}
-
-type PicomatchOptions = {dot: boolean};
-
-declare const anymatch: {
- (matchers: AnymatchMatcher): AnymatchTester;
- (matchers: AnymatchMatcher, testString: string|any[], returnIndex: true | PicomatchOptions): number;
- (matchers: AnymatchMatcher, testString: string|any[]): boolean;
-}
-
-export {AnymatchMatcher as Matcher}
-export {AnymatchTester as Tester}
-export default anymatch
diff --git a/assets/node_modules/anymatch/index.js b/assets/node_modules/anymatch/index.js
deleted file mode 100644
index 24529c8..0000000
--- a/assets/node_modules/anymatch/index.js
+++ /dev/null
@@ -1,102 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, "__esModule", { value: true });
-
-const picomatch = require('picomatch');
-const normalizePath = require('normalize-path');
-
-/**
- * @typedef {(testString: string) => boolean} AnymatchFn
- * @typedef {string|RegExp|AnymatchFn} AnymatchPattern
- * @typedef {AnymatchPattern|AnymatchPattern[]} AnymatchMatcher
- */
-const BANG = '!';
-const DEFAULT_OPTIONS = {returnIndex: false};
-const arrify = (item) => Array.isArray(item) ? item : [item];
-
-/**
- * @param {AnymatchPattern} matcher
- * @param {object} options
- * @returns {AnymatchFn}
- */
-const createPattern = (matcher, options) => {
- if (typeof matcher === 'function') {
- return matcher;
- }
- if (typeof matcher === 'string') {
- const glob = picomatch(matcher, options);
- return (string) => matcher === string || glob(string);
- }
- if (matcher instanceof RegExp) {
- return (string) => matcher.test(string);
- }
- return (string) => false;
-};
-
-/**
- * @param {Array<Function>} patterns
- * @param {Array<Function>} negPatterns
- * @param {String|Array} args
- * @param {Boolean} returnIndex
- * @returns {boolean|number}
- */
-const matchPatterns = (patterns, negPatterns, args, returnIndex) => {
- const isList = Array.isArray(args);
- const _path = isList ? args[0] : args;
- if (!isList && typeof _path !== 'string') {
- throw new TypeError('anymatch: second argument must be a string: got ' +
- Object.prototype.toString.call(_path))
- }
- const path = normalizePath(_path);
-
- for (let index = 0; index < negPatterns.length; index++) {
- const nglob = negPatterns[index];
- if (nglob(path)) {
- return returnIndex ? -1 : false;
- }
- }
-
- const applied = isList && [path].concat(args.slice(1));
- for (let index = 0; index < patterns.length; index++) {
- const pattern = patterns[index];
- if (isList ? pattern(...applied) : pattern(path)) {
- return returnIndex ? index : true;
- }
- }
-
- return returnIndex ? -1 : false;
-};
-
-/**
- * @param {AnymatchMatcher} matchers
- * @param {Array|string} testString
- * @param {object} options
- * @returns {boolean|number|Function}
- */
-const anymatch = (matchers, testString, options = DEFAULT_OPTIONS) => {
- if (matchers == null) {
- throw new TypeError('anymatch: specify first argument');
- }
- const opts = typeof options === 'boolean' ? {returnIndex: options} : options;
- const returnIndex = opts.returnIndex || false;
-
- // Early cache for matchers.
- const mtchers = arrify(matchers);
- const negatedGlobs = mtchers
- .filter(item => typeof item === 'string' && item.charAt(0) === BANG)
- .map(item => item.slice(1))
- .map(item => picomatch(item, opts));
- const patterns = mtchers.map(matcher => createPattern(matcher, opts));
-
- if (testString == null) {
- return (testString, ri = false) => {
- const returnIndex = typeof ri === 'boolean' ? ri : false;
- return matchPatterns(patterns, negatedGlobs, testString, returnIndex);
- }
- }
-
- return matchPatterns(patterns, negatedGlobs, testString, returnIndex);
-};
-
-anymatch.default = anymatch;
-module.exports = anymatch;
diff --git a/assets/node_modules/anymatch/package.json b/assets/node_modules/anymatch/package.json
deleted file mode 100644
index 479ecc2..0000000
--- a/assets/node_modules/anymatch/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "anymatch",
- "version": "3.1.1",
- "description": "Matches strings against configurable strings, globs, regular expressions, and/or functions",
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "author": {
- "name": "Elan Shanker",
- "url": "https://github.com/es128"
- },
- "license": "ISC",
- "homepage": "https://github.com/micromatch/anymatch",
- "repository": {
- "type": "git",
- "url": "https://github.com/micromatch/anymatch"
- },
- "keywords": [
- "match",
- "any",
- "string",
- "file",
- "fs",
- "list",
- "glob",
- "regex",
- "regexp",
- "regular",
- "expression",
- "function"
- ],
- "scripts": {
- "test": "nyc mocha",
- "mocha": "mocha"
- },
- "devDependencies": {
- "mocha": "^6.1.3",
- "nyc": "^14.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
-}
diff --git a/assets/node_modules/array-union/index.d.ts b/assets/node_modules/array-union/index.d.ts
deleted file mode 100644
index 379fc1d..0000000
--- a/assets/node_modules/array-union/index.d.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
-Create an array of unique values, in order, from the input arrays.
-
-@example
-```
-import arrayUnion = require('array-union');
-
-arrayUnion([1, 1, 2, 3], [2, 3]);
-//=> [1, 2, 3]
-
-arrayUnion(['foo', 'foo', 'bar']);
-//=> ['foo', 'bar']
-
-arrayUnion(['🐱', '🦄', '🐻'], ['🦄', '🌈']);
-//=> ['🐱', '🦄', '🐻', '🌈']
-
-arrayUnion(['🐱', '🦄'], ['🐻', '🦄'], ['🐶', '🌈', '🌈']);
-//=> ['🐱', '🦄', '🐻', '🐶', '🌈']
-```
-*/
-declare function arrayUnion<ArgumentsType extends readonly unknown[]>(
- ...arguments: readonly ArgumentsType[]
-): ArgumentsType;
-
-export = arrayUnion;
diff --git a/assets/node_modules/array-union/index.js b/assets/node_modules/array-union/index.js
deleted file mode 100644
index 7f85d3d..0000000
--- a/assets/node_modules/array-union/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-'use strict';
-
-module.exports = (...arguments_) => {
- return [...new Set([].concat(...arguments_))];
-};
diff --git a/assets/node_modules/array-union/license b/assets/node_modules/array-union/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/array-union/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/array-union/package.json b/assets/node_modules/array-union/package.json
deleted file mode 100644
index 5ad5afa..0000000
--- a/assets/node_modules/array-union/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "array-union",
- "version": "2.1.0",
- "description": "Create an array of unique values, in order, from the input arrays",
- "license": "MIT",
- "repository": "sindresorhus/array-union",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "array",
- "set",
- "uniq",
- "unique",
- "duplicate",
- "remove",
- "union",
- "combine",
- "merge"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/array-union/readme.md b/assets/node_modules/array-union/readme.md
deleted file mode 100644
index 2474a1a..0000000
--- a/assets/node_modules/array-union/readme.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# array-union [![Build Status](https://travis-ci.org/sindresorhus/array-union.svg?branch=master)](https://travis-ci.org/sindresorhus/array-union)
-
-> Create an array of unique values, in order, from the input arrays
-
-
-## Install
-
-```
-$ npm install array-union
-```
-
-
-## Usage
-
-```js
-const arrayUnion = require('array-union');
-
-arrayUnion([1, 1, 2, 3], [2, 3]);
-//=> [1, 2, 3]
-
-arrayUnion(['foo', 'foo', 'bar']);
-//=> ['foo', 'bar']
-
-arrayUnion(['🐱', '🦄', '🐻'], ['🦄', '🌈']);
-//=> ['🐱', '🦄', '🐻', '🌈']
-
-arrayUnion(['🐱', '🦄'], ['🐻', '🦄'], ['🐶', '🌈', '🌈']);
-//=> ['🐱', '🦄', '🐻', '🐶', '🌈']
-```
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/arrify/index.js b/assets/node_modules/arrify/index.js
deleted file mode 100644
index 2a2fdee..0000000
--- a/assets/node_modules/arrify/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-'use strict';
-module.exports = function (val) {
- if (val === null || val === undefined) {
- return [];
- }
-
- return Array.isArray(val) ? val : [val];
-};
diff --git a/assets/node_modules/arrify/license b/assets/node_modules/arrify/license
deleted file mode 100644
index 654d0bf..0000000
--- a/assets/node_modules/arrify/license
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/arrify/package.json b/assets/node_modules/arrify/package.json
deleted file mode 100644
index 1e63e59..0000000
--- a/assets/node_modules/arrify/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "arrify",
- "version": "1.0.1",
- "description": "Convert a value to an array",
- "license": "MIT",
- "repository": "sindresorhus/arrify",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "array",
- "arr",
- "arrify",
- "arrayify",
- "convert",
- "value"
- ],
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- }
-}
diff --git a/assets/node_modules/arrify/readme.md b/assets/node_modules/arrify/readme.md
deleted file mode 100644
index 183d075..0000000
--- a/assets/node_modules/arrify/readme.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# arrify [![Build Status](https://travis-ci.org/sindresorhus/arrify.svg?branch=master)](https://travis-ci.org/sindresorhus/arrify)
-
-> Convert a value to an array
-
-
-## Install
-
-```
-$ npm install --save arrify
-```
-
-
-## Usage
-
-```js
-const arrify = require('arrify');
-
-arrify('unicorn');
-//=> ['unicorn']
-
-arrify(['unicorn']);
-//=> ['unicorn']
-
-arrify(null);
-//=> []
-
-arrify(undefined);
-//=> []
-```
-
-*Supplying `null` or `undefined` results in an empty array.*
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/assets/node_modules/astral-regex/index.js b/assets/node_modules/astral-regex/index.js
deleted file mode 100644
index f90e6a2..0000000
--- a/assets/node_modules/astral-regex/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-'use strict';
-const regex = '[\uD800-\uDBFF][\uDC00-\uDFFF]';
-
-module.exports = opts => opts && opts.exact ? new RegExp(`^${regex}$`) : new RegExp(regex, 'g');
diff --git a/assets/node_modules/astral-regex/license b/assets/node_modules/astral-regex/license
deleted file mode 100644
index db6bc32..0000000
--- a/assets/node_modules/astral-regex/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) Kevin Mårtensson <kevinmartensson@gmail.com> (github.com/kevva)
-
-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/assets/node_modules/astral-regex/package.json b/assets/node_modules/astral-regex/package.json
deleted file mode 100644
index c9a06da..0000000
--- a/assets/node_modules/astral-regex/package.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "astral-regex",
- "version": "1.0.0",
- "description": "Regular expression for matching astral symbols",
- "license": "MIT",
- "repository": "kevva/astral-regex",
- "author": {
- "name": "Kevin Mårtensson",
- "email": "kevinmartensson@gmail.com",
- "url": "github.com/kevva"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "astral",
- "emoji",
- "regex",
- "surrogate"
- ],
- "dependencies": {},
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- }
-}
diff --git a/assets/node_modules/astral-regex/readme.md b/assets/node_modules/astral-regex/readme.md
deleted file mode 100644
index cde44f7..0000000
--- a/assets/node_modules/astral-regex/readme.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# astral-regex [![Build Status](https://travis-ci.org/kevva/astral-regex.svg?branch=master)](https://travis-ci.org/kevva/astral-regex)
-
-> Regular expression for matching astral symbols
-
-
-## Install
-
-```
-$ npm install astral-regex
-```
-
-
-## Usage
-
-```js
-const astralRegex = require('astral-regex');
-
-astralRegex({exact: true}).test('');
-//=> true
-```
-
-
-## API
-
-### astralRegex([options])
-
-Returns a `RegExp` for matching astral symbols.
-
-#### options
-
-Type: `Object`
-
-##### exact
-
-Type: `boolean`<br>
-Default: `false` *(Matches any astral symbols in a string)*
-
-Only match an exact string. Useful with `RegExp#test()` to check if a string is a astral symbol.
-
-
-## License
-
-MIT © [Kevin Mårtensson](https://github.com/kevva)
diff --git a/assets/node_modules/autoprefixer/CHANGELOG.md b/assets/node_modules/autoprefixer/CHANGELOG.md
deleted file mode 100644
index 07a4677..0000000
--- a/assets/node_modules/autoprefixer/CHANGELOG.md
+++ /dev/null
@@ -1,956 +0,0 @@
-# Change Log
-This project adheres to [Semantic Versioning](http://semver.org/).
-
-## 9.7.4
-* Fix warning text (by Dmitry Ishkov).
-
-## 9.7.3
-* Fix compatibility with PostCSS Modules.
-
-## 9.7.2
-* Add `-ms-user-select: element` support.
-* Add funding link for `npm fund`.
-
-## 9.7.1
-* Avoid unnecessary transitions in prefixed selectors (by Andrey Alexandrov).
-* Fix `fit-content` for Firefox.
-
-## 9.7 “Ad Victoriam”
-* Add `AUTOPREFIXER_GRID` env variable to enable Grid Layout polyfill for IE.
-* Fix `Cannot read property 'grid' of undefined` error.
-
-## 9.6.5
-* Fix selector prefixing (by Andrey Alexandrov).
-
-## 9.6.4
-* Now the real fix for `'startsWith' of undefined` error.
-
-## 9.6.3
-* Fix `Cannot read property 'startsWith' of undefined` error.
-
-## 9.6.2
-* Fix false `Replace fill to stretch` warning.
-
-## 9.6.1
-* Fix `-webkit-line-clamp` truncating multi-line text support.
-
-## 9.6 “Nunc id vides, nunc ne vides”
-* Show warning about Browserslist config on `browser` option.
-* Add warning-less `overrideBrowserslist` option.
-* Add `text-orientation` support.
-* Add `min-resolution: 2x` alias support.
-* Add `.github/CONTRIBUTING.md` (by Juan Martin Marco).
-
-## 9.5.1
-* Fix `backdrop-filter` for Edge (by Oleh Aloshkin).
-* Fix `min-resolution` media query support in Firefox < 16.
-
-## 9.5 “Draco dormiens nunquam titillandus”
-* Add `mask-composite` support (by Semen Levenson).
-
-## 9.4.10
-* Add warning for named Grid rows.
-
-## 9.4.9
-* Fix `grid-template` and `@media` case (by Bogdan Dolin).
-
-## 9.4.8
-* Fix `calc()` support in Grid gap.
-
-## 9.4.7
-* Fix infinite loop on mismatched parens.
-
-## 9.4.6
-* Fix warning text (by Albert Juhé Lluveras).
-
-## 9.4.5
-* Fix `text-decoration-skip-ink` support.
-
-## 9.4.4
-* Use `direction` value for `-ms-writing-mode` (by Denys Kniazevych).
-* Fix warning text (by @zzzzBov).
-
-## 9.4.3
-* Add warning to force `flex-start` instead of `start` (by Antoine du Hamel).
-* Fix docs (by Christian Oliff).
-
-## 9.4.2
-* Fix Grid autoplacement warning.
-
-## 9.4.1
-* Fix unnecessary Flexbox prefixes in Grid elements.
-
-## 9.4 “Advance Australia”
-* Add Grid autoplacement for `-ms-` (by Bogdan Dolin).
-* Improve docs and warnings (by Daniel Tonon).
-* Remove some unnecessary warnings for Grid (by Andrey Alexandrov).
-
-## 9.3.1
-* Fix Grid prefixes with `repeat()` value (by Bogdan Dolin).
-
-## 9.3 “Labor omnia vincit”
-* Add `place-self` support (by Bogdan Dolin).
-* Fix Grid row/column span inheritance bug (by Bogdan Dolin).
-
-## 9.2.1
-* Fix broken AST.
-
-## 9.2 “Onyi est glavnaya krepost”
-* Add `/* autoprefixer grid: on */` control comment (by Andrey Alexandrov).
-* Add duplicate `grid-area` support (by Bogdan Dolin).
-* Fix `grid-gap` support for rules with different specifity (by Bogdan Dolin).
-* Disable Grid in `@supports` at-rule with non-supported Grid features.
-* Improve Grid warnings (by Daniel Tonon).
-* Improve docs (by Joshua Hall, Mat Gadd, Roy Revelt, and Ivan).
-
-## 9.1.5
-* Remove `@babel/register` from dependencies.
-
-## 9.1.4
-* Use Babel 7.
-
-## 9.1.3
-* Sort properties in `autoprefixer --info` alphabetically.
-* Fix old Firefox gradient prefix.
-
-## 9.1.2
-* Fix `autoprefixer --info` in new Node.js.
-
-## 9.1.1
-* Retain `grid-gap` through `@media` (by Bogdan Dolin).
-* Fix `grid-template` and `@media` (by Bogdan Dolin).
-* Fix Grid areas searching error (by Bogdan Dolin).
-* Fix `span X` Grid prefix (by Bogdan Dolin).
-* Fix docs (by Eduard Kyvenko).
-
-## 9.1 “Equality before the law”
-* Add `background-clip: text` support.
-* Fix adding Grid span for IE (by Bogdan Dolin).
-
-## 9.0.2
-* Show warning on Grid area names conflict (by Bogdan Dolin).
-* Fix documentation (by Sven Wagner).
-
-## 9.0.1
-* Fix nested at-rules in Grid prefixes (by Ivan Malov).
-
-## 9.0 “A Mari Usque Ad Mare”
-* Remove Node.js 9 and Node.js 4 support.
-* Remove IE and “dead” browsers from Babel.
-* Use PostCSS 7.0.
-* Use Browserslist 4.0.
-
-## 8.6.5
-* Do not show Grid warnings if IE was not selected.
-
-## 8.6.4
-* Fix `stretch` prefix in Chrome >= 46.
-
-## 8.6.3
-* Add warnings for unsupported Grid features.
-* Add warnings about wrong Grid properties.
-* Add note about `grid` option for grid properties in `autoprefixer --info`.
-
-## 8.6.2
-* Fix error during adding Grid prefixes in `@media` (by Evgeny Petukhov).
-
-## 8.6.1
-* Fix `grid-template` with media queries (by Evgeny Petukhov).
-
-## 8.6 “Follow Reason”
-* Add `gap` support (by Evgeny Petukhov).
-* Add two values support for `grid-gap` and `gap` (by Evgeny Petukhov).
-* Add `ignoreUnknownVersions` option for Browserslist.
-
-## 8.5.2
-* Fix `grid-template` support wit auto row sizes (by Yury Timofeev).
-
-## 8.5.1
-* Remove unnecessary warning on `-webkit-fill-available`.
-
-## 8.5 “Muito Nobre e Sempre Leal”
-* Add `grid-gap` support (by Evgeny Petukhov).
-* Fix radial gradients direction fix.
-* Fix docs (by Phani Kandula and Huáng Jùnliàng).
-
-## 8.4.1
-* Fix working in old PostCSS versions (by Diablohu).
-
-## 8.4 “Non in aves, sed in angues”
-* Add `/* autoprefixer: ignore next */` control comment (by Pavel Vostrikov).
-
-## 8.3 “Benigno Numine”
-* Add `@media` support to `grid-template` (by Evgeny Petukhov).
-* Fix `radial-gradient` direction warning (by Gustavo Real).
-
-## 8.2 “Ad Astra per Aspera”
-* Add `color-adjust` (by Sergey Lysenko, Stanislav Botev, and Yuriy Alekseyev).
-
-## 8.1 “Rex, Familia et Ultio”
-* Add `overscroll-behavior` support.
-* Add `grid-template` shortcut support (by Evgeny Petukhov).
-* Add better `grid-column-end` and `grid-row-end` support (by Evgeny Petukhov).
-* Fix Grid properties support in `@supports`.
-
-## 8.0 “Excelsior”
-* Use Browserslist 3.0.
-* Rename `autoprefixer-info` CLI tool to `autoprefixer --info`.
-* Remove `break-*` to `page-break-*` conversion for Firefox.
-
-## 7.2.6
-* Fix `-ms-` prefix for grid cells with same `grid-area` (by Evgeny Petukhov).
-
-## 7.2.5
-* Fix multiple prefixes in declaration value.
-
-## 7.2.4
-* Fix IE 10 support.
-
-## 7.2.3
-* Fix `grid-template-areas` in `@media` (by Evgeny Petukhov).
-
-## 7.2.2
-* Fix `_autoprefixerDisabled is undefined` issue.
-
-## 7.2.1
-* Fix IE and other old JS runtimes support.
-
-## 7.2 “Ordem e Progresso”
-* Add `grid-template-areas` support (by Evgeny Petukhov).
-* Add `grid-template` support (by Evgeny Petukhov).
-* Add `grid-area` support (by Alexey Komarov).
-* Add `autoprefixer-info` CLI tool.
-* Add wrong `radial-gradient` properties warning.
-* Use current working dir on missed `from` in `info()` (by Phil Dokas).
-* Fix `grid-row` and `grid-column` support (by Alexey Komarov).
-* Do not prefix `reverse` animation direction.
-* Improve test coverage (by Dmitry Semigradsky).
-
-## 7.1.6
-* Add warning for using `browserslist` option instead of `browsers`.
-* Add warning for multiple control comments in the same scope.
-* Fix `Invalid array length` error during indent changes.
-
-## 7.1.5
-* Fix `::placeholder` prefix for Edge.
-* Fix `inherit`/`initial`/`unset` values for `flex-direction`.
-* Fix RegExp usage in gradients (by Yet Another Minion).
-
-## 7.1.4
-* Fix `radial-gradient` direction conversion.
-* Fix `image-set` in `cursor`.
-
-## 7.1.3
-* Add warning for old `radial-gradient` direction syntax.
-
-## 7.1.2
-* Fix `text-decoration` shortcut support.
-
-## 7.1.1
-* Remove non-`-webkit-` intrinsic prefixes in Grid Layout (by 一丝).
-
-## 7.1 “Universitas litterarum”
-* Add `unicode-bidi` support.
-* Add `-webkit-appearance` support for Edge.
-* Add `from` option to `info()`.
-* Fix intrinsic widths prefixes in Grid Layout.
-
-## 7.0.1
-* Fix Autoprefixer for old JS runtimes.
-
-## 7.0 “Coelestem adspicit lucem”
-* Remove node.js 0.12 support.
-* Use PostCSS 6.0.
-* Use Browserslist 2.
-* Use `caniuse-lite` instead of `caniuse-db` (by Ben Briggs).
-* Use `^` for Browserslist dependencies, instead of `~`.
-* Rewrite project from CoffeeScript to Babel (by Dmitry Semigradsky).
-* Disable Grid Layout prefixes for IE by default.
-* Fix `-ms-grid-column-align`.
-* Move tests to Jest.
-
-## 6.7.7
-* Fix `order` for non-digit values.
-
-## 6.7.6
-* Fix `font-kerning` (by Chi Vinh Le).
-
-## 6.7.5
-* Fix `text-decoration-skip` in iOS (by Chi Vinh Le).
-* Fix `clip-path` (by Chi Vinh Le).
-
-## 6.7.4
-* Improve `browsers` option perfomance.
-* Update CoffeeScript compiler.
-
-## 6.7.3
-* Fix compatibility with “Intrinsic & Extrinsic Sizing” spec update.
-
-## 6.7.2
-* Do not prefix grid/flexbox in `@supports` on `grid: false`/`flexbox: false`.
-
-## 6.7.1
-* Update Browserslist with `last n version` fix.
-
-## 6.7 “Krungthep doot thep saang”
-* Add Electron support in browsers list (by Kilian Valkhof).
-* Add `flex-flow` partial support for Flexbox 2009 specification.
-* Fix browsers `0` version issue in some Can I Use data.
-
-## 6.6.1
-* Add metadata to use Autoprefixer in JSS tests (by Chi Vinh Le).
-
-## 6.6 “Kaiyuan”
-* Add `browserslist` key in `package.json` support.
-* Add support for separated environments in browserslist config.
-* Add `browserslist-stats.json` file support to load custom usage statistics.
-
-## 6.5.4
-* Fix unitless 0 basis in IE10/IE11 shorthand flex (by Google).
-
-## 6.5.3
-* Add error for popular mistake with `browser` option instead of `browsers`.
-
-## 6.5.2
-* Clean prefixes data (by Reinaldo Schiehll).
-
-## 6.5.1
-* Fix selectors with `:--` prefix support.
-
-## 6.5 “Einigkeit und Recht und Freiheit”
-* Add `defaults` keyword to browsers requirements.
-* Fix CSS Grid Layout support.
-* Fix `align-self` cleaning.
-
-## 6.4.1
-* Fix node cloning after some PostCSS plugins.
-
-## 6.4 “Hic et ubique terrarum”
-* Add `:any-link` selector support.
-* Add `text-decoration-skip` support.
-* Add `transition: duration property` support.
-* Fix `-webkit-` prefix for `backface-visibility`.
-* Fix `rad` unit support in gradients (by 刘祺).
-* Fix `transition` support in Opera 12.
-* Removed Safari TP Grid prefixes support.
-
-## 6.3.7
-* Fix rare `Cannot read property 'constructor' of null` issue.
-
-## 6.3.6
-* Add Safari TP prefix support for Grid Layout.
-
-## 6.3.5
-* Fix duplicate prefixes for `-ms-interpolation-mode`.
-
-## 6.3.4
-* Show users coverage for selected browsers in `info()`.
-
-## 6.3.3
-* Fix transition warning.
-
-## 6.3.2
-* Fix jspm support (by Sean Anderson).
-
-## 6.3.1
-* Fix compatibility with Flexibility polyfill.
-
-## 6.3 “Pro rege et lege”
-* Add Grid Layout support.
-* Add `text-spacing` support.
-* Add `> 10% in my stats` browsers query with custom usage statistics.
-* Add options to disable `@supports`, Flexbox or Grid support.
-* Fix compatibility with other PostCSS plugins.
-
-## 6.2.3
-* Fix error on broken transition with double comma.
-
-## 6.2.2
-* Fix issues in broken transitions.
-
-## 6.2.1
-* Fix AST error in transition warning (by @jvdanilo).
-
-## 6.2 “Fluctuat nec mergitur”
-* Use `fill` instead of `fill-available` according spec changes (by 一丝).
-* Add `fill` support for logical dimension properties (by 一丝).
-* Add `text-emphasis` support (by 一丝).
-* Add prefixes to `@supports` only for compatible browsers.
-* Add `rad`, `grad` and `turn` units support to linear gradients.
-* Add some `deg` directions support for old WebKit linear gradients.
-* Fix `@supports` parenthesis (by @heady).
-* Add warning when prefixes could not be generated
- for complicated `transition-property` values.
-* Add warning for outdated `fill-available` value.
-* Add warning for wrong `text-emphasis-position` value.
-* Add “time capsule” warning for prefix-less future.
-* Normalizes all warning messages.
-
-## 6.1.2
-* Fix gradient hack on some parameters (by Alexey Efremov).
-
-## 6.1.1
-* Fix `cursor: grab` and `cursor: grabbing` support.
-
-## 6.1 “Bil-shaʿb wa lil-shaʿb”
-* Change `transition` support to output more robust CSS.
-* Add `:read-only` support.
-* Add support for `appearance` with any values.
-* Add CSS-in-JS support via `postcss-js`.
-* Add loud `/*! autoprefixer: off */` control comments support.
-* Convert `rotateZ` to `rotate` for `-ms-transform`.
-* Use `postcss-value-parser` to carefully work with gradients.
-* Remove `-ms-transform-style` and `-o-transform-style` that never existed.
-
-## 6.0.3
-* Fix old gradient direction warning.
-
-## 6.0.2
-* Remove unnecessary `-khtml-` prefix too.
-
-## 6.0.1
-* Fix `cross-fade()` support (by 一丝).
-
-## 6.0 “Eureka”
-* CLI was removed from `autoprefixer` package to `autoprefixer-cli`.
-* `autoprefixer-core` and `autoprefixer` packages was merged back.
-* Remove `autoprefixer(opt).process(css)`, use `autoprefixer.process(css, opt)`.
-* Remove `safe` option. Use separated Safe parser from PostCSS.
-* Remove Opera 12.1 from default query.
-* Use PostCSS 5.0 API.
-* Add custom syntaxes support.
-* Add `image-set` support (by 一丝).
-* Add `mask-border` support (by 一丝).
-* Add `filter()` function support (by Vincent De Oliveira).
-* Add `backdrop-filter` support (by Vincent De Oliveira).
-* Add `element()` support (by Vincent De Oliveira).
-* Add CSS Regions support.
-* Add Scroll Snap Points support.
-* Add `writing-mode` support.
-* Add `::backdrop` support.
-* Add `cross-fade()` support.
-* Add other `break-` properties support.
-* Add Microsoft Edge support (by Andrey Polischuk).
-* Add `not` keyword and exclude browsers by query.
-* Add version ranges `IE 6-9` (by Ben Briggs).
-* Fix `filter` in `transition` support on Safari.
-* Fix `url()` parsing.
-* Fix `pixelated` cleaning.
-* Always show old gradient direction warning.
-
-## 5.2.1
-* Fix parent-less node issue on some cases (by Josh Gillies).
-
-## 5.2 “Dont tread on me”
-* Add `appearance` support.
-* Warn users on old gradient direction or flexbox syntax.
-* Add `add: false` option to disable new prefixes adding.
-* Make Autoprefixer 30% faster.
-* Use PostCSS 4.1 plugin API.
-* Add prefixes for `pixelated` instead of `crisp-edges` in `image-rendering`.
-* Do not add `::placeholder` prefixes for `:placeholder-shown`.
-* Fix `text-decoration` prefixes.
-* `autoprefixer.process()` was deprecated. Use PostCSS API.
-
-## 5.1.11
-* Update `num2fraction` to fix resolution media query (by 一丝).
-
-## 5.1.10
-* Do not generate `-webkit-image-rendering`.
-
-## 5.1.9
-* Fix DynJS compatibility (by Nick Howes).
-
-## 5.1.8
-* Fix gradients in `mask` and `mask-image` properties.
-* Fix old webkit prefix on some unsupported gradients.
-
-## 5.1.7
-* Fix placeholder selector (by Vincent De Oliveira).
-
-## 5.1.6
-* Use official `::placeholder-shown` selector (by Vincent De Oliveira).
-
-## 5.1.5
-* Add transition support for CSS Masks properties.
-
-## 5.1.4
-* Use `-webkit-` prefix for Opera Mobile 24.
-
-## 5.1.3
-* Add IE support for `image-rendering: crisp-edges`.
-
-## 5.1.2
-* Add never existed `@-ms-keyframes` to common mistake.
-
-## 5.1.1
-* Safer value split in `flex` hack.
-
-## 5.1 “Jianyuan”
-* Add support for resolution media query (by 一丝).
-* Higher accuracy while removing prefixes in values.
-* Add support for logical properties (by 一丝).
-* Add `@viewport` support.
-* Add `text-overflow` support (by 一丝).
-* Add `text-emphasis` support (by 一丝).
-* Add `image-rendering: crisp-edges` support.
-* Add `text-align-last` support.
-* Return `autoprefixer.defaults` as alias to current `browserslist.defaults`.
-* Save code style while adding prefixes to `@keyframes` and `@viewport`.
-* Do not remove `-webkit-background-clip` with non-spec `text` value.
-* Fix `-webkit-filter` in `transition`.
-* Better support for browser versions joined on Can I Use
- like `ios_saf 7.0-7.1` (by Vincent De Oliveira).
-* Fix compatibility with `postcss-import` (by Jason Kuhrt).
-* Fix Flexbox prefixes for BlackBerry and UC Browser.
-* Fix gradient prefixes for old Chrome.
-
-## 5.0 “Pravda vítězí”
-* Use PostCSS 4.0.
-* Use Browserslist to parse browsers queries.
-* Use global `browserslist` config.
-* Add `> 5% in US` query to select browsers by usage in some country.
-* Add `object-fit` and `object-position` properties support.
-* Add CSS Shape properties support.
-* Fix UC Browser name in debug info.
-* Remove `autoprefixer.defaults` and use defaults from Browserslist.
-
-## 4.0.2
-* Remove `o-border-radius`, which is common mistake in legacy CSS.
-
-## 4.0.1
-* Fix `@supports` support with brackets in values (by Vincent De Oliveira).
-
-## 4.0 “Indivisibiliter ac Inseparabiliter”
-* Become 2.5 times fatser by new PostCSS 3.0 parser.
-* Do not remove outdated prefixes by `remove: false` option.
-* `map.inline` and `map.sourcesContent` options are now `true` by default.
-* Add `box-decoration-break` support.
-* Do not add old `-webkit-` prefix for gradients with `px` units.
-* Use previous source map to show origin source of CSS syntax error.
-* Use `from` option from previous source map `file` field.
-* Set `to` value to `from` if `to` option is missing.
-* Trim Unicode BOM on source maps parsing.
-* Parse at-rules without spaces like `@import"file"`.
-* Better previous `sourceMappingURL` annotation comment cleaning.
-* Do not remove previous `sourceMappingURL` comment on `map.annotation: false`.
-
-## 3.1.2
-* Update Firefox ESR version from 24 to 31.
-
-## 3.1.1
-* Use Flexbox 2009 spec for Android stock browser < 4.4.
-
-## 3.1 “Satyameva Jayate”
-* Do not remove comments from prefixed values (by Eitan Rousso).
-* Allow Safari 6.1 to use final Flexbox spec (by John Kreitlow).
-* Fix `filter` value in `transition` in Webkits.
-* Show greetings if your browsers don’t require any prefixes.
-* Add `<=` and `<` browsers requirement (by Andreas Lind).
-
-## 3.0.1
-* Fix `autoprefixer.postcss` in callbacks.
-
-## 3.0 “Liberté, Égalité, Fraternité”
-* Project was split to autoprefixer (with CLI) and autoprefixer-core.
-* `autoprefixer()` now receives only `options` object with `browsers` key.
-* GNU format for syntax error messages from PostCSS 2.2.
-
-## 2.2 “Mobilis in mobili”
-* Allow to disable Autoprefixer for some rule by control comment.
-* Use PostCSS 2.1 with Safe Mode option and broken source line
- in CSS syntax error messages.
-
-## 2.1.1
-* Fix `-webkit-background-size` hack for `contain` and `cover` values.
-* Don’t add `-webkit-` prefix to `filter` with SVG (by Vincent De Oliveira).
-
-## 2.1 “Eleftheria i thanatos”
-* Add support for `clip-path` and `mask` properties.
-* Return `-webkit-` prefix to `filter` with SVG URI.
-
-## 2.0.2
-* Add readable names for new browsers from 2.0 release.
-* Don’t add `-webkit-` prefix to `filter` with SVG URI.
-* Don’t add `-o-` prefix 3D transforms.
-
-## 2.0.1
-* Save declaration style, when clone declaration to prefix.
-
-## 2.0 “Hongik Ingan”
-* Based on PostCSS 1.0.
- See [options changes](https://github.com/postcss/postcss/releases/tag/1.0.0).
-* Restore visual cascade after declaration removing.
-* Enable visual cascade by default.
-* Prefix declareation in `@supports` at-rule conditions.
-* Add all browsers from Can I Use: `ie_mob`, `and_chr`, `and_ff`,
- `op_mob` and `op_mini`.
-* Allow to use latest Autoprefixer from GitHub by npm.
-* Add `--no-cascade`, `--annotation` and `--sources-content` options to binary.
-
-## 1.3.1
-* Fix gradient hack, when `background` property contains color.
-
-## 1.3 “Tenka Fubu”
-* Add `text-size-adjust` support.
-* Add `background-size` to support Android 2.
-
-## 1.2 “Meiji”
-* Use Can I Use data from official `caniuse-db` npm package.
-* Remove package data update from binary.
-* Use increment value instead of current date in minor versions.
-
-## 1.1 “Nutrisco et extingo”
-* Add source map annotation comment support.
-* Add inline source map support.
-* Autodetect previous source map.
-* Fix source maps support on Windows.
-* Fix source maps support in subdirectory.
-* Prefix selector even if it is already prefixed by developer.
-* Add option `cascade` to create nice visual cascade of prefixes.
-* Fix flexbox support for IE 10 (by Roland Warmerdam).
-* Better `break-inside` support.
-* Fix prefixing, when two same properties are near.
-
-### 20140222
-* Add `touch-action` support.
-
-### 20140226
-* Chrome 33 is moved to released versions.
-* Add Chrome 36 data.
-
-### 20140302
-* Add `text-decoration-*` properties support.
-* Update browsers usage statistics.
-* Use new PostCSS version.
-
-### 20140319
-* Check already prefixed properties after current declaration.
-* Normalize spaces before already prefixed check.
-* Firefox 28 is moved to released versions.
-* Add Firefox 31 data.
-* Add some Blackberry data.
-
-### 20140327
-* Don’t use `-ms-transform` in `@keyframes`, because IE 9 doesn’t support
- animations.
-* Update BlackBerry 10 data.
-
-### 20140403
-* Update browsers usage statistics.
-* Opera 20 is moved to released versions.
-* Add Opera 22 data.
-
-### 20140410
-* Chrome 34 is moved to released versions.
-* Add Chrome 37 data.
-* Fix Chrome 36 data.
-
-### 20140429
-* Fix `display: inline-flex` support by 2009 spec.
-* Fix old WebKit gradient converter (by Sergey Belov).
-* Fix CSS 3 cursors data (by Nick Schonning).
-
-### 20140430
-* Separate 2D and 3D transform prefixes to clean unnecessary `-ms-` prefixes.
-* Firefox 29 is moved to released versions.
-* Add Firefox 32 data.
-
-### 20140510
-* Do not add `-ms-` prefix for `transform` with 3D functions.
-* Update browsers global usage statistics.
-
-### 20140512
-* Remove unnecessary `-moz-` prefix for `wavy` in `text-decoration`.
-* Update Safari data for font properties.
-
-### 20140521
-* Chrome 36 is moved to released versions.
-* Add Chrome 38 data.
-
-### 20140523
-* Opera 21 is moved to released versions.
-* Add Opera 23 data.
-
-### 20140605
-* Allow to parse gradients without space between color and position.
-* Add iOS 8, Safari 8 and Android 4.4.3 data.
-* Update browsers usage statistics.
-
-## 1.0 “Plus ultra”
-* Source map support.
-* Save origin indents and code formatting.
-* Change CSS parser to PostCSS.
-* Preserve vendor-prefixed properties put right after unprefixed ones.
-* Rename `compile()` to `process()` and return result object,
- instead of CSS string.
-* Rename `inspect()` to `info()`.
-* Add in binary `-d` option to specify output directory.
-* Binary now will not concat output files.
-* Allow to select last versions for specified browser.
-* Add full browser names aliases: `firefox`, `explorer` and `blackberry`.
-* Ignore case in browser names.
-* Change license to MIT.
-* Add prefixes inside custom at-rules.
-* Add only necessary prefixes to selector inside prefixed at-rule.
-* Safer backgrounds list parser in gradient hack.
-* Prefix `@keyframes` inside `@media`.
-* Don’t prefix values for CSS3 PIE properties.
-* Binary now shows file name in syntax error.
-* Use browserify to build standalone version.
-
-### 20131225
-* Fix deprecated API convertor.
-* Add `::placeholder` support for Firefix >= 18.
-* Fix vendor prefixes order.
-
-### 20140103
-* Add `-webkit-` prefix for `sticky` position.
-* Update browsers popularity statistics.
-
-### 20140109
-* Add selectors and at-rules sections to debug info.
-* Fix outdated prefixes cleaning.
-
-### 20140110
-* Add `Firefox ESR` browser requirement.
-* Opera 18 is moved to released versions.
-* Add Opera 20 data.
-
-### 20140117
-* Chrome 32 is moved to released versions.
-* Add Opera 34 data.
-
-### 20140130
-* Fix flexbox properties names in transitions.
-* Add Chrome 35 and Firefox 29 data.
-
-### 20140203
-* Android 4.4 stock browser and Opera 19 are moved to released versions.
-* Add Opera 21 data.
-* Update browsers usage statistics.
-
-### 20140213
-* Add case insensitive to IE’s filter hack (by Dominik Schilling).
-* Improve selector prefixing in some rare cases (by Simon Lydell).
-* Firefox 27 is moved to released versions.
-* Add Firefox 30 data.
-
-## 0.8 “Unbowed, Unbent, Unbroken”
-* Add more browsers to defaults ("> 1%, last 2 versions, ff 17, opera 12.1"
- instead of just "last 2 browsers").
-* Keep vendor prefixes without unprefixed version (like vendor-specific hacks).
-* Convert gradients to old WebKit syntax (actual for Android 2.3).
-* Better support for several syntaxes with one prefix (like Flexbox and
- gradients in WebKit).
-* Add intrinsic and extrinsic sizing values support.
-* Remove never existed prefixes from common mistakes (like -ms-transition).
-* Add Opera 17 data.
-* Fix selector prefixes order.
-* Fix browser versions order in inspect.
-
-### 20130903
-* Fix old WebKit gradients convertor on rgba() colors.
-* Allow to write old direction syntax in gradients.
-
-### 20130906
-* Fix direction syntax in radial gradients.
-* Don’t prefix IE filter with modern syntax.
-
-### 20130911
-* Fix parsing property name with spaces.
-
-### 20130919
-* Fix processing custom framework prefixes (by Johannes J. Schmidt).
-* Concat outputs if several files compiled to one output.
-* Decrease standalone build size by removing unnecessary Binary class.
-* iOS 7 is moved to released versions.
-* Clean up binary code (by Simon Lydell).
-
-### 20130923
-* Firefox 24 is moved to released versions.
-
-### 20131001
-* Add support for grab, grabbing, zoom-in and zoom-out cursor values.
-
-### 20131006
-* Chrome 30 is moved to released versions.
-
-### 20131007
-* Don’t add another prefixes in rule with prefixed selector.
-
-### 20131009
-* Opera 17 is moved to released versions.
-
-### 20131015
-* Fix converting multiple gradients to old webkit syntax (by Aleksei Androsov).
-
-### 20131017
-* Fix @host at-rule parsing.
-
-### 20131020
-* IE 11 and Andrid 4.3 is moved to released versions.
-* Add Opera 18 data.
-* Add @namespace support.
-* Sort browser versions in data file.
-
-### 20131029
-* Add Safari 6.1 data.
-* Add fx alias for Firefox.
-
-### 20131104
-* Update Android future version to 4.4.
-* Google Chrome 32 added to future versions list.
-* Firefox 25 now is actual version, 27 and 28 added to future versions.
-* Browsers statistics are updated.
-
-### 20131205
-* Google Chrome 33 added to future releases list.
-* Google Chrome 31 moved to current releases list.
-
-### 20131209
-* Use old webkit gradients for old iOS and Safari (by Chad von Nau).
-* Fix direction conversion for old webkit gradients (by Chad von Nau).
-* Update browsers popularity statistics.
-
-### 20131213
-* Firefox ESR in default browsers was changed to 24 version.
-* Firefox 26 was moved to current releases list.
-* Firefox 28 was added to future releases list.
-
-## 0.7 “We Do Not Sow”
-* Add vendor prefixes to selectors.
-* Add ::selection and ::placeholder selectors support.
-* Allow to load support data from Can I Use pull requests.
-* Remove deprecated API.
-
-### 20130806
-* Add hyphens support.
-
-### 20130807
-* Add tab-size support.
-* Add :fullscreen support.
-
-### 20130808
-* Allow to select browser versions by > and >= operator.
-* Fix flex properties in transition.
-
-### 20130810
-* Add Firefox 25 data.
-
-### 20130824
-* Add Chrome 31 and 30 data.
-* Fix CSS comments parsing (by vladkens).
-
-## 0.6 “As High As Honor”
-* New faster API, which cache preprocessed data. Old API is deprecated.
-* A lot of perfomance improvements.
-* Add Opera 15 -webkit- prefix support.
-* Update Chrome 29 and Safari 7 prefixes data.
-* Add minor browsers in popularity select.
-* Better syntax error messages.
-
-### 20130721
-* Add Chrome 30 data.
-
-### 20130728
-* Don’t remove non-standard -webkit-background-clip: text.
-* Don’t remove IE hack on CSS parse.
-
-### 20130729
-* Add Opera 16 data.
-* Fix “Invalid range in character class” error on Firefox.
-
-### 20130730
-* Fix correct clone comments inside keyframes (by Alexey Plutalov).
-* Fix angle recalculation in gradients (by Roman Komarov).
-
-### 20130731
-* Add border-image support.
-
-## 0.5 “Ours is the Fury”
-* Rewrite Autoprefixer to be more flexible.
-* Use css, instead of Rework, to fix CSS parsing errors faster.
-* Fix a lot of CSS parsing errors.
-
-### 20130616
-* More useful message for CSS parsing errors.
-* Remove old WebKit gradient syntax.
-* Fix parsing error on comment with braces.
-
-### 20130617
-* Remove old Mozilla border-radius.
-* Don’t prefix old IE filter.
-* Remove old background-clip, background-size and background-origin prefixes.
-* Speed up regexps in values.
-* Allow to hack property declarations.
-
-### 20130625
-* Convert flexbox properties to 2009 and 2012 specifications.
-* Improve messages on syntax errors.
-
-### 20130626
-* Add Firefox 24 data.
-* Add prefixes for font-feature-settings.
-
-### 20130629
-* Fix convert flex properties to old box-flex.
-
-## 0.4 “Winter Is Coming”
-* Remove outdated prefixes.
-* Add border-radius and box-shadow properties to database.
-* Change degrees in webkit gradients.
-
-### 20130515
-* Add old syntax in gradient direction.
-* Add old syntax for display: flex.
-* Update browser global usage statistics.
-
-### 20130521
-* Add Firefox 23 data.
-
-### 20130524
-* Add Chrome 29 data.
-
-### 20130528
-* Fix compatibilty with Rework from git master.
-* Add minor browsers to data, which can be selected only directly.
-
-### 20130530
-* Add Opera 15 and iOS 6.1 data.
-* Fix iOS versions in properties and values data.
-
-### 20130603
-* Use latest Rework 0.15 with a lot of CSS parsing fixes.
-* Update browsers usage statistics.
-
-## 0.3 “Growing Strong”
-* Rename `autoprefixer.filter()` to `autoprefixer.rework()`.
-* Use own filters instead of Rework’s `prefix` and `prefixValue`.
-* Smarter value prefixer without false match “order” in “border”.
-* 40% faster.
-* Don’t add unnecessary properties instead of Rework’s `prefixValue`.
-* Don’t change properties order.
-* Sort properties and values in inspect output.
-* Add main to component config (by Jonathan Ong).
-* Fix documentation (by Sergey Leschina and Mark Vasilkov).
-
-### 20130424
-* Fix value override in prefixer.
-
-### 20130427
-* Prefix several same values in one property.
-* Fix Windows support in binary.
-* Improve print errors in binary.
-
-### 20130502
-* Don’t add -webkit- prefix to IE filter.
-* Don’t duplicate prefixes on second run.
-
-## 0.2 “Hear Me Roar!”
-* Update parse libraries.
-* Use component package manager to build standalone script.
-* Add inspect to standalone script.
-
-## 0.1 “Fire and Blood”
-* Initial release.
diff --git a/assets/node_modules/autoprefixer/LICENSE b/assets/node_modules/autoprefixer/LICENSE
deleted file mode 100644
index da057b4..0000000
--- a/assets/node_modules/autoprefixer/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright 2013 Andrey Sitnik <andrey@sitnik.ru>
-
-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/assets/node_modules/autoprefixer/README.md b/assets/node_modules/autoprefixer/README.md
deleted file mode 100644
index d7a6802..0000000
--- a/assets/node_modules/autoprefixer/README.md
+++ /dev/null
@@ -1,1099 +0,0 @@
-# Autoprefixer [![Cult Of Martians][cult-img]][cult]
-
-<img align="right" width="94" height="71"
- src="http://postcss.github.io/autoprefixer/logo.svg"
- title="Autoprefixer logo by Anton Lovchikov">
-
-[PostCSS] plugin to parse CSS and add vendor prefixes to CSS rules using values
-from [Can I Use]. It is [recommended] by Google and used in Twitter and Alibaba.
-
-Write your CSS rules without vendor prefixes (in fact, forget about them
-entirely):
-
-```css
-::placeholder {
- color: gray;
-}
-
-.image {
- background-image: url(image@1x.png);
-}
-@media (min-resolution: 2dppx) {
- .image {
- background-image: url(image@2x.png);
- }
-}
-```
-
-Autoprefixer will use the data based on current browser popularity and property
-support to apply prefixes for you. You can try the [interactive demo]
-of Autoprefixer.
-
-```css
-::-webkit-input-placeholder {
- color: gray;
-}
-::-moz-placeholder {
- color: gray;
-}
-:-ms-input-placeholder {
- color: gray;
-}
-::-ms-input-placeholder {
- color: gray;
-}
-::placeholder {
- color: gray;
-}
-
-.image {
- background-image: url(image@1x.png);
-}
-@media (-webkit-min-device-pixel-ratio: 2),
- (-o-min-device-pixel-ratio: 2/1),
- (min-resolution: 2dppx) {
- .image {
- background-image: url(image@2x.png);
- }
-}
-```
-
-Twitter account for news and releases: [@autoprefixer].
-
-<a href="https://evilmartians.com/?utm_source=autoprefixer">
-<img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg" alt="Sponsored by Evil Martians" width="236" height="54">
-</a>
-
-[interactive demo]: https://autoprefixer.github.io/
-[@autoprefixer]: https://twitter.com/autoprefixer
-[recommended]: https://developers.google.com/web/tools/setup/setup-buildtools#dont_trip_up_with_vendor_prefixes
-[Can I Use]: https://caniuse.com/
-[cult-img]: http://cultofmartians.com/assets/badges/badge.svg
-[PostCSS]: https://github.com/postcss/postcss
-[cult]: http://cultofmartians.com/tasks/autoprefixer-grid.html
-
-
-## Contents
-
-- [Browsers](#browsers)
-- [FAQ](#faq)
- - [Does Autoprefixer polyfill Grid Layout for IE?](#does-autoprefixer-polyfill-grid-layout-for-ie)
- - [Does it add polyfills?](#does-it-add-polyfills)
- - [Why doesn’t Autoprefixer add prefixes to `border-radius`?](#why-doesnt-autoprefixer-add-prefixes-to-border-radius)
- - [Why does Autoprefixer use unprefixed properties in `@-webkit-keyframes`?](#why-does-autoprefixer-use-unprefixed-properties-in--webkit-keyframes)
- - [How to work with legacy `-webkit-` only code?](#how-to-work-with-legacy--webkit--only-code)
- - [Does Autoprefixer add `-epub-` prefix?](#does-autoprefixer-add--epub--prefix)
- - [Why doesn’t Autoprefixer transform generic font-family `system-ui`?](#why-doesnt-autoprefixer-transform-generic-font-family-system-ui)
-- [Usage](#usage)
- - [Gulp](#gulp)
- - [Webpack](#webpack)
- - [CSS-in-JS](#css-in-js)
- - [CLI](#cli)
- - [Other Build Tools](#other-build-tools)
- - [JavaScript](#javascript)
- - [Text Editors and IDE](#text-editors-and-ide)
-- [Warnings](#warnings)
-- [Disabling](#disabling)
-- [Options](#options)
-- [Environment variables](#environment-variables)
- - [Using environment variables to support CSS Grid prefixes in Create React App](#using-environment-variables-to-support-css-grid-prefixes-in-create-react-app)
-- [Grid Autoplacement support in IE](#grid-autoplacement-support-in-ie)
-- [Debug](#debug)
-
-## Browsers
-
-Autoprefixer uses [Browserslist], so you can specify the browsers
-you want to target in your project with queries like `> 5%`
-(see [Best Practices]).
-
-The best way to provide browsers is a `.browserslistrc` file in your project
-root, or by adding a `browserslist` key to your `package.json`.
-
-We recommend the use of these options over passing options to Autoprefixer so
-that the config can be shared with other tools such as [babel-preset-env] and
-[Stylelint].
-
-See [Browserslist docs] for queries, browser names, config format, and defaults.
-
-[Browserslist docs]: https://github.com/browserslist/browserslist#queries
-[babel-preset-env]: https://github.com/babel/babel/tree/master/packages/babel-preset-env
-[Best Practices]: https://github.com/browserslist/browserslist#best-practices
-[Browserslist]: https://github.com/browserslist/browserslist
-[Stylelint]: https://stylelint.io/
-
-
-## FAQ
-
-### Does Autoprefixer polyfill Grid Layout for IE?
-
-Autoprefixer can be used to translate modern CSS Grid syntax into IE 10
-and IE 11 syntax, but this polyfill will not work in 100% of cases.
-This is why it is disabled by default.
-
-First, you need to enable Grid prefixes by using either the `grid: "autoplace"`
-option or the `/* autoprefixer grid: autoplace */` control comment.
-Also you can use environment variable to enable Grid:
-`AUTOPREFIXER_GRID=autoplace npm build`.
-
-Second, you need to test every fix with Grid in IE. It is not an enable and
-forget feature, but it is still very useful.
-Financial Times and Yandex use it in production.
-
-Third, there is only very limited auto placement support. Read the
-[Grid Autoplacement support in IE](#grid-autoplacement-support-in-ie) section
-for more details.
-
-Fourth, if you are not using the autoplacement feature, the best way
-to use Autoprefixer is by using `grid-template` or `grid-template-areas`.
-
-```css
-.page {
- display: grid;
- grid-gap: 33px;
- grid-template:
- "head head head" 1fr
- "nav main main" minmax(100px, 1fr)
- "nav foot foot" 2fr /
- 1fr 100px 1fr;
-}
-.page__head {
- grid-area: head;
-}
-.page__nav {
- grid-area: nav;
-}
-.page__main {
- grid-area: main;
-}
-.page__footer {
- grid-area: foot;
-}
-```
-
-See also:
-
-* [The guide about Grids in IE and Autoprefixer].
-* [`postcss-gap-properties`] to use new `gap` property
- instead of old `grid-gap`.
-* [`postcss-grid-kiss`] has alternate “everything in one property” syntax,
- which makes using Autoprefixer’s Grid translations safer.
-
-[The guide about Grids in IE and Autoprefixer]: https://css-tricks.com/css-grid-in-ie-css-grid-and-the-new-autoprefixer/
-[`postcss-gap-properties`]: https://github.com/jonathantneal/postcss-gap-properties
-[`postcss-grid-kiss`]: https://github.com/sylvainpolletvillard/postcss-grid-kiss
-
-
-### Does it add polyfills?
-
-No. Autoprefixer only adds prefixes.
-
-Most new CSS features will require client side JavaScript to handle a new
-behavior correctly.
-
-Depending on what you consider to be a “polyfill”, you can take a look at some
-other tools and libraries. If you are just looking for syntax sugar,
-you might take a look at:
-
-- [postcss-preset-env] is a plugins preset with polyfills and Autoprefixer
- to write future CSS today.
-- [Oldie], a PostCSS plugin that handles some IE hacks (opacity, rgba, etc).
-- [postcss-flexbugs-fixes], a PostCSS plugin to fix flexbox issues.
-
-[postcss-flexbugs-fixes]: https://github.com/luisrudge/postcss-flexbugs-fixes
-[postcss-preset-env]: https://github.com/jonathantneal/postcss-preset-env
-[Oldie]: https://github.com/jonathantneal/oldie
-
-
-### Why doesn’t Autoprefixer add prefixes to `border-radius`?
-
-Developers are often surprised by how few prefixes are required today.
-If Autoprefixer doesn’t add prefixes to your CSS, check if they’re still
-required on [Can I Use].
-
-[Can I Use]: https://caniuse.com/
-
-
-### Why does Autoprefixer use unprefixed properties in `@-webkit-keyframes`?
-
-Browser teams can remove some prefixes before others, so we try to use all
-combinations of prefixed/unprefixed values.
-
-
-### How to work with legacy `-webkit-` only code?
-
-Autoprefixer needs unprefixed property to add prefixes. So if you only
-wrote `-webkit-gradient` without W3C’s `gradient`,
-Autoprefixer will not add other prefixes.
-
-But [PostCSS] has plugins to convert CSS to unprefixed state.
-Use [postcss-unprefix] before Autoprefixer.
-
-[postcss-unprefix]: https://github.com/gucong3000/postcss-unprefix
-
-
-### Does Autoprefixer add `-epub-` prefix?
-
-No, Autoprefixer works only with browsers prefixes from Can I Use.
-But you can use [postcss-epub] for prefixing ePub3 properties.
-
-[postcss-epub]: https://github.com/Rycochet/postcss-epub
-
-
-### Why doesn’t Autoprefixer transform generic font-family `system-ui`?
-
-`system-ui` is technically not a prefix and the transformation is not
-future-proof. You can use [postcss-font-family-system-ui] to transform
-`system-ui` to a practical font-family list.
-
-[postcss-font-family-system-ui]: https://github.com/JLHwung/postcss-font-family-system-ui
-
-
-## Usage
-
-### Gulp
-
-In Gulp you can use [gulp-postcss] with `autoprefixer` npm package.
-
-```js
-gulp.task('autoprefixer', () => {
- const autoprefixer = require('autoprefixer')
- const sourcemaps = require('gulp-sourcemaps')
- const postcss = require('gulp-postcss')
-
- return gulp.src('./src/*.css')
- .pipe(sourcemaps.init())
- .pipe(postcss([ autoprefixer() ]))
- .pipe(sourcemaps.write('.'))
- .pipe(gulp.dest('./dest'))
-})
-```
-
-With `gulp-postcss` you also can combine Autoprefixer
-with [other PostCSS plugins].
-
-[gulp-postcss]: https://github.com/postcss/gulp-postcss
-[other PostCSS plugins]: https://github.com/postcss/postcss#plugins
-
-
-### Webpack
-
-In [webpack] you can use [postcss-loader] with `autoprefixer`
-and [other PostCSS plugins].
-
-```js
-module.exports = {
- module: {
- rules: [
- {
- test: /\.css$/,
- use: ["style-loader", "css-loader", "postcss-loader"]
- }
- ]
- }
-}
-```
-
-And create a `postcss.config.js` with:
-
-```js
-module.exports = {
- plugins: [
- require('autoprefixer')
- ]
-}
-```
-
-[other PostCSS plugins]: https://github.com/postcss/postcss#plugins
-[postcss-loader]: https://github.com/postcss/postcss-loader
-[webpack]: https://webpack.js.org/
-
-
-### CSS-in-JS
-
-The best way to use PostCSS with CSS-in-JS is [`astroturf`].
-Add its loader to your `webpack.config.js`:
-
-```js
-module.exports = {
- module: {
- rules: [
- {
- test: /\.css$/,
- use: ['style-loader', 'postcss-loader'],
- },
- {
- test: /\.jsx?$/,
- use: ['babel-loader', 'astroturf/loader'],
- }
- ]
- }
-}
-```
-
-Then create `postcss.config.js`:
-
-```js
-module.exports = {
- plugins: [
- require('autoprefixer')
- ]
-}
-```
-
-[`astroturf`]: https://github.com/4Catalyzer/astroturf
-
-
-### CLI
-
-You can use the [postcss-cli] to run Autoprefixer from CLI:
-
-```sh
-npm install postcss-cli autoprefixer
-npx postcss *.css --use autoprefixer -d build/
-```
-
-See `postcss -h` for help.
-
-[postcss-cli]: https://github.com/postcss/postcss-cli
-
-
-### Other Build Tools
-
-* **Grunt:** [grunt-postcss]
-* **Ruby on Rails**: [autoprefixer-rails]
-* **Neutrino**: [neutrino-middleware-postcss]
-* **Jekyll**: add `autoprefixer-rails` and `jekyll-assets` to `Gemfile`
-* **Brunch**: [postcss-brunch]
-* **Broccoli**: [broccoli-postcss]
-* **Middleman**: [middleman-autoprefixer]
-* **Mincer**: add `autoprefixer` npm package and enable it:
- `environment.enable('autoprefixer')`
-
-[neutrino-middleware-postcss]: https://www.npmjs.com/package/neutrino-middleware-postcss
-[middleman-autoprefixer]: https://github.com/middleman/middleman-autoprefixer
-[autoprefixer-rails]: https://github.com/ai/autoprefixer-rails
-[broccoli-postcss]: https://github.com/jeffjewiss/broccoli-postcss
-[postcss-brunch]: https://github.com/iamvdo/postcss-brunch
-[grunt-postcss]: https://github.com/nDmitry/grunt-postcss
-
-
-#### Preprocessors
-
-* **Less**: [less-plugin-autoprefix]
-* **Stylus**: [autoprefixer-stylus]
-* **Compass**: [autoprefixer-rails#compass]
-
-[less-plugin-autoprefix]: https://github.com/less/less-plugin-autoprefix
-[autoprefixer-stylus]: https://github.com/jenius/autoprefixer-stylus
-[autoprefixer-rails#compass]: https://github.com/ai/autoprefixer-rails#compass
-
-
-#### GUI Tools
-
-* [CodeKit](https://codekitapp.com/help/autoprefixer/)
-* [Prepros](https://prepros.io)
-
-
-### JavaScript
-
-You can use Autoprefixer with [PostCSS] in your Node.js application
-or if you want to develop an Autoprefixer plugin for a new environment.
-
-```js
-const autoprefixer = require('autoprefixer')
-const postcss = require('postcss')
-
-postcss([ autoprefixer ]).process(css).then(result => {
- result.warnings().forEach(warn => {
- console.warn(warn.toString())
- })
- console.log(result.css)
-})
-```
-
-There is also a [standalone build] for the browser or for a non-Node.js runtime.
-
-You can use [html-autoprefixer] to process HTML with inlined CSS.
-
-[html-autoprefixer]: https://github.com/RebelMail/html-autoprefixer
-[standalone build]: https://raw.github.com/ai/autoprefixer-rails/master/vendor/autoprefixer.js
-[PostCSS]: https://github.com/postcss/postcss
-
-
-### Text Editors and IDE
-
-Autoprefixer should be used in assets build tools. Text editor plugins are not
-a good solution, because prefixes decrease code readability and you will need
-to change values in all prefixed properties.
-
-I recommend you to learn how to use build tools like [Parcel].
-They work much better and will open you a whole new world of useful plugins
-and automation.
-
-If you can’t move to a build tool, you can use text editor plugins:
-
-* [Sublime Text](https://github.com/sindresorhus/sublime-autoprefixer)
-* [Brackets](https://github.com/mikaeljorhult/brackets-autoprefixer)
-* [Atom Editor](https://github.com/sindresorhus/atom-autoprefixer)
-* [Visual Studio](https://github.com/madskristensen/WebCompiler)
- ([how to](https://stackoverflow.com/a/54908636/2440))
-
-[Parcel]: https://parceljs.org/
-
-
-## Warnings
-
-Autoprefixer uses the [PostCSS warning API] to warn about really important
-problems in your CSS:
-
-* Old direction syntax in gradients.
-* Old unprefixed `display: box` instead of `display: flex`
- by latest specification version.
-
-You can get warnings from `result.warnings()`:
-
-```js
-result.warnings().forEach(warn => {
- console.warn(warn.toString())
-})
-```
-
-Every Autoprefixer runner should display these warnings.
-
-[PostCSS warning API]: https://github.com/postcss/postcss/blob/master/docs/api.md#warning-class
-
-
-## Disabling
-
-### Prefixes
-
-Autoprefixer was designed to have no interface – it just works.
-If you need some browser specific hack just write a prefixed property
-after the unprefixed one.
-
-```css
-a {
- transform: scale(0.5);
- -moz-transform: scale(0.6);
-}
-```
-
-If some prefixes were generated incorrectly, please create an [issue on GitHub].
-
-[issue on GitHub]: https://github.com/postcss/autoprefixer/issues
-
-
-### Features
-
-You can use these plugin options to control some of Autoprefixer’s features.
-
-* `grid: "autoplace"` will enable `-ms-` prefixes for Grid Layout including some
- [limited autoplacement support](#grid-autoplacement-support-in-ie).
-* `supports: false` will disable `@supports` parameters prefixing.
-* `flexbox: false` will disable flexbox properties prefixing.
- Or `flexbox: "no-2009"` will add prefixes only for final and IE
- versions of specification.
-* `remove: false` will disable cleaning outdated prefixes.
-
-You should set them inside the plugin like so:
-
-```js
-autoprefixer({ grid: 'autoplace' })
-```
-
-
-### Control Comments
-
-If you do not need Autoprefixer in some part of your CSS,
-you can use control comments to disable Autoprefixer.
-
-```css
-.a {
- transition: 1s; /* will be prefixed */
-}
-
-.b {
- /* autoprefixer: off */
- transition: 1s; /* will not be prefixed */
-}
-
-.c {
- /* autoprefixer: ignore next */
- transition: 1s; /* will not be prefixed */
- mask: url(image.png); /* will be prefixed */
-}
-```
-
-There are three types of control comments:
-
-* `/* autoprefixer: (on|off) */`: enable/disable all Autoprefixer translations for the
- whole block both *before* and *after* the comment.
-* `/* autoprefixer: ignore next */`: disable Autoprefixer only for the next property
- or next rule selector or at-rule parameters (but not rule/at‑rule body).
-* `/* autoprefixer grid: (autoplace|no-autoplace|off) */`: control how Autoprefixer handles
- grid translations for the whole block:
- * `autoplace`: enable grid translations with autoplacement support.
- * `no-autoplace`: enable grid translations with autoplacement
- support *disabled* (alias for deprecated value `on`).
- * `off`: disable all grid translations.
-
-You can also use comments recursively:
-
-```css
-/* autoprefixer: off */
-@supports (transition: all) {
- /* autoprefixer: on */
- a {
- /* autoprefixer: off */
- }
-}
-```
-
-Note that comments that disable the whole block should not be featured in the same
-block twice:
-
-```css
-/* How not to use block level control comments */
-
-.do-not-do-this {
- /* autoprefixer: off */
- transition: 1s;
- /* autoprefixer: on */
- transform: rotate(20deg);
-}
-```
-
-
-## Options
-
-Function `autoprefixer(options)` returns a new PostCSS plugin.
-See [PostCSS API] for plugin usage documentation.
-
-```js
-autoprefixer({ cascade: false })
-```
-
-Available options are:
-
-* `env` (string): environment for Browserslist.
-* `cascade` (boolean): should Autoprefixer use Visual Cascade,
- if CSS is uncompressed. Default: `true`
-* `add` (boolean): should Autoprefixer add prefixes. Default is `true`.
-* `remove` (boolean): should Autoprefixer [remove outdated] prefixes.
- Default is `true`.
-* `supports` (boolean): should Autoprefixer add prefixes for `@supports`
- parameters. Default is `true`.
-* `flexbox` (boolean|string): should Autoprefixer add prefixes for flexbox
- properties. With `"no-2009"` value Autoprefixer will add prefixes only
- for final and IE 10 versions of specification. Default is `true`.
-* `grid` (false|`"autoplace"`|`"no-autoplace"`): should Autoprefixer
- add IE 10-11 prefixes for Grid Layout properties?
- * `false` (default): prevent Autoprefixer from outputting
- CSS Grid translations.
- * `"autoplace"`: enable Autoprefixer grid translations
- and *include* autoplacement support. You can also use
- `/* autoprefixer grid: autoplace */` in your CSS.
- * `"no-autoplace"`: enable Autoprefixer grid translations
- but *exclude* autoplacement support. You can also use
- `/* autoprefixer grid: no-autoplace */` in your CSS.
- (alias for the deprecated `true` value)
-* `stats` (object): custom [usage statistics] for `> 10% in my stats`
- browsers query.
-* `overrideBrowserslist` (array): list of queries for target browsers.
- Try to not use it. The best practice is to use `.browserslistrc` config
- or `browserslist` key in `package.json` to share target browsers
- with Babel, ESLint and Stylelint. See [Browserslist docs]
- for available queries and default value.
-* `ignoreUnknownVersions` (boolean): do not raise error on unknown browser
- version in Browserslist config. Default is `false`.
-
-Plugin object has `info()` method for debugging purpose.
-
-You can use PostCSS processor to process several CSS files
-to increase performance.
-
-[usage statistics]: https://github.com/browserslist/browserslist#custom-usage-data
-[PostCSS API]: http://api.postcss.org
-
-## Environment Variables
-
-* `AUTOPREFIXER_GRID`: (`autoplace`|`no-autoplace`) should Autoprefixer
- add IE 10-11 prefixes for Grid Layout properties?
- * `autoplace`: enable Autoprefixer grid translations
- and *include* autoplacement support.
- * `no-autoplace`: enable Autoprefixer grid translations
- but *exclude* autoplacement support.
-
-Environment variables are useful, when you want to change Autoprefixer options but don't have access to config files.
-[Create React App] is a good example of this.
-
-[Create React App]: (https://reactjs.org/docs/create-a-new-react-app.html#create-react-app)
-
-### Using environment variables to support CSS Grid prefixes in Create React App
-
-1. Install the latest version of Autoprefixer and [cross-env](https://www.npmjs.com/package/cross-env):
-
-```
-npm install autoprefixer@latest cross-env --save-dev
-```
-
-2. Under `"browserslist"` > `"development"` in the package.json file, add `"last 1 ie version"`
-
-```
-"browserslist": {
- "production": [
- ">0.2%",
- "not dead",
- "not op_mini all"
- ],
- "development": [
- "last 1 chrome version",
- "last 1 firefox version",
- "last 1 safari version",
- "last 1 ie version"
- ]
-}
-```
-
-3. Update `"scripts"` in the package.json file to the following:
-
-```
-"scripts": {
- "start": "cross-env AUTOPREFIXER_GRID=autoplace react-scripts start",
- "build": "cross-env AUTOPREFIXER_GRID=autoplace react-scripts build",
- "test": "cross-env AUTOPREFIXER_GRID=autoplace react-scripts test",
- "eject": "react-scripts eject"
-},
-```
-
-Replace `autoplace` with `no-autoplace` in the above example if you prefer to disable Autoprefixer Grid autoplacement support.
-
-Now when you run `npm start` you will see CSS Grid prefixes automatically being applied to your output CSS.
-
-See also [Browserslist environment variables] for more examples on how to use environment variables in your project.
-
-[Browserslist environment variables]: https://github.com/browserslist/browserslist#environment-variables
-
-## Grid Autoplacement support in IE
-
-If the `grid` option is set to `"autoplace"`, limited autoplacement support is added to Autoprefixers grid translations. You can also use
-the `/* autoprefixer grid: autoplace */` control comment or
-`AUTOPREFIXER_GRID=autoplace npm build` environment variable.
-
-Autoprefixer will only autoplace grid cells if both `grid-template-rows`
-and `grid-template-columns` has been set. If `grid-template`
-or `grid-template-areas` has been set, Autoprefixer will use area based
-cell placement instead.
-
-Autoprefixer supports autoplacement by using `nth-child` CSS selectors.
-It creates [number of columns] x [number of rows] `nth-child` selectors.
-For this reason Autoplacement is only supported within the explicit grid.
-
-```css
-/* Input CSS */
-
-/* autoprefixer grid: autoplace */
-
-.autoplacement-example {
- display: grid;
- grid-template-columns: 1fr 1fr;
- grid-template-rows: auto auto;
- grid-gap: 20px;
-}
-```
-
-```css
-/* Output CSS */
-
-/* autoprefixer grid: autoplace */
-
-.autoplacement-example {
- display: -ms-grid;
- display: grid;
- -ms-grid-columns: 1fr 20px 1fr;
- grid-template-columns: 1fr 1fr;
- -ms-grid-rows: auto 20px auto;
- grid-template-rows: auto auto;
- grid-gap: 20px;
-}
-
-.autoplacement-example > *:nth-child(1) {
- -ms-grid-row: 1;
- -ms-grid-column: 1;
-}
-
-.autoplacement-example > *:nth-child(2) {
- -ms-grid-row: 1;
- -ms-grid-column: 3;
-}
-
-.autoplacement-example > *:nth-child(3) {
- -ms-grid-row: 3;
- -ms-grid-column: 1;
-}
-
-.autoplacement-example > *:nth-child(4) {
- -ms-grid-row: 3;
- -ms-grid-column: 3;
-}
-```
-
-### Beware of enabling autoplacement in old projects
-
-Be careful about enabling autoplacement in any already established projects that have
-previously not used Autoprefixer's grid autoplacement feature before.
-
-If this was your html:
-
-```html
-<div class="grid">
- <div class="grid-cell"></div>
-</div>
-```
-
-The following CSS will not work as expected with the autoplacement feature enabled:
-
-```css
-/* Unsafe CSS when Autoplacement is enabled */
-
-.grid-cell {
- grid-column: 2;
- grid-row: 2;
-}
-
-.grid {
- display: grid;
- grid-template-columns: repeat(3, 1fr);
- grid-template-rows: repeat(3, 1fr);
-}
-```
-
-Swapping the rules around will not fix the issue either:
-
-```css
-/* Also unsafe to use this CSS */
-
-.grid {
- display: grid;
- grid-template-columns: repeat(3, 1fr);
- grid-template-rows: repeat(3, 1fr);
-}
-
-.grid-cell {
- grid-column: 2;
- grid-row: 2;
-}
-```
-
-One way to deal with this issue is to disable autoplacement in the
-grid-declaration rule:
-
-```css
-/* Disable autoplacement to fix the issue */
-
-.grid {
- /* autoprefixer grid: no-autoplace */
- display: grid;
- grid-template-columns: repeat(3, 1fr);
- grid-template-rows: repeat(3, 1fr);
-}
-
-.grid-cell {
- grid-column: 2;
- grid-row: 2;
-}
-```
-
-The absolute best way to integrate autoplacement into already existing projects
-though is to leave autoplacement turned off by default and then use a control
-comment to enable it when needed. This method is far less likely to cause
-something on the site to break.
-
-```css
-/* Disable autoplacement by default in old projects */
-/* autoprefixer grid: no-autoplace */
-
-/* Old code will function the same way it always has */
-.old-grid {
- display: grid;
- grid-template-columns: repeat(3, 1fr);
- grid-template-rows: repeat(3, 1fr);
-}
-.old-grid-cell {
- grid-column: 2;
- grid-row: 2;
-}
-
-/* Enable autoplacement when you want to use it in new code */
-.new-autoplace-friendly-grid {
- /* autoprefixer grid: autoplace */
- display: grid;
- grid-template-columns: repeat(3, 1fr);
- grid-template-rows: repeat(3, auto);
-}
-```
-
-Note that the `grid: "no-autoplace"` setting and the
-`/* autoprefixer grid: no-autoplace */` control comment share identical
-functionality to the `grid: true` setting and the `/* autoprefixer grid: on */`
-control comment. There is no need to refactor old code to use `no-autoplace`
-in place of the old `true` and `on` statements.
-
-### Autoplacement limitations
-
-#### Both columns and rows must be defined
-
-Autoplacement only works inside the explicit grid. The columns and rows need to be defined
-so that Autoprefixer knows how many `nth-child` selectors to generate.
-
-```css
-.not-allowed {
- display: grid;
- grid-template-columns: repeat(3, 1fr);
-}
-
-.is-allowed {
- display: grid;
- grid-template-columns: repeat(3, 1fr);
- grid-template-rows: repeat(10, auto);
-}
-```
-
-#### Repeat auto-fit and auto-fill are not supported
-
-The `repeat(auto-fit, ...)` and `repeat(auto-fill, ...)` grid functionality relies on
-knowledge from the browser about screen dimensions and the number of available grid
-items for it to work properly. Autoprefixer does not have access to this information
-so unfortunately this little snippet will _never_ be IE friendly.
-
-```css
-.grid {
- /* This will never be IE friendly */
- grid-template-columns: repeat(auto-fit, min-max(200px, 1fr))
-}
-```
-
-#### No manual cell placement or column/row spans allowed inside an autoplacement grid
-
-Elements must not be manually placed or given column/row spans inside
-an autoplacement grid. Only the most basic of autoplacement grids are supported.
-Grid cells can still be placed manually outside the the explicit grid though.
-Support for manually placing individual grid cells inside an explicit
-autoplacement grid is planned for a future release.
-
-```css
-.autoplacement-grid {
- display: grid;
- grid-template-columns: repeat(3, 1fr);
- grid-template-rows: repeat(3, auto);
-}
-
-/* Grid cells placed inside the explicit grid
- will break the layout in IE */
-.not-permitted-grid-cell {
- grid-column: 1;
- grid-row: 1;
-}
-
-/* Grid cells placed outside the
- explicit grid will work in IE */
-.permitted-grid-cell {
- grid-column: 1 / span 2;
- grid-row: 4;
-}
-```
-
-If manual cell placement is required, we recommend using `grid-template` or
-`grid-template-areas` instead:
-
-```css
-.page {
- display: grid;
- grid-gap: 30px;
- grid-template:
- "head head"
- "nav main" minmax(100px, 1fr)
- "foot foot" /
- 200px 1fr;
-}
-.page__head {
- grid-area: head;
-}
-.page__nav {
- grid-area: nav;
-}
-.page__main {
- grid-area: main;
-}
-.page__footer {
- grid-area: foot;
-}
-```
-
-#### Do not create `::before` and `::after` pseudo elements
-
-Let's say you have this HTML:
-
-```html
-<div class="grid">
- <div class="grid-cell"></div>
-</div>
-```
-
-And you write this CSS:
-
-```css
-.grid {
- display: grid;
- grid-template-columns: 1fr 1fr;
- grid-template-rows: auto;
-}
-
-.grid::before {
- content: 'before';
-}
-
-.grid::after {
- content: 'after';
-}
-```
-
-This will be the output:
-
-```css
-.grid {
- display: -ms-grid;
- display: grid;
- -ms-grid-columns: 1fr 1fr;
- grid-template-columns: 1fr 1fr;
- -ms-grid-rows: auto;
- grid-template-rows: auto;
-}
-
-.grid > *:nth-child(1) {
- -ms-grid-row: 1;
- -ms-grid-column: 1;
-}
-
-
-.grid > *:nth-child(2) {
- -ms-grid-row: 1;
- -ms-grid-column: 2;
-}
-
-.grid::before {
- content: 'before';
-}
-
-.grid::after {
- content: 'after';
-}
-```
-
-IE will place `.grid-cell`, `::before` and `::after` in row 1 column 1.
-Modern browsers on the other hand will place `::before` in row 1 column 1,
-`.grid-cell` in row 1 column 2, and `::after` in row 2 column 1.
-
-See this [Code Pen](https://codepen.io/daniel-tonon/pen/gBymVw) to see a visualization
-of the issue. View the Code Pen in both a modern browser and IE to see the difference.
-
-Note that you can still create `::before` and `::after` elements as long as you manually
-place them outside the explicit grid.
-
-#### When changing the `grid gap` value, columns and rows must be re-declared
-
-If you wish to change the size of a `grid-gap`, you will need to redeclare the grid columns and rows.
-
-```css
-.grid {
- display: grid;
- grid-template-columns: 1fr 1fr;
- grid-template-rows: auto;
- grid-gap: 50px;
-}
-
-/* This will *NOT* work in IE */
-@media (max-width: 600px) {
- .grid {
- grid-gap: 20px;
- }
-}
-
-/* This will *NOT* work in IE */
-.grid.small-gap {
- grid-gap: 20px;
-}
-```
-
-```css
-.grid {
- display: grid;
- grid-template-columns: 1fr 1fr;
- grid-template-rows: auto;
- grid-gap: 50px;
-}
-
-/* This *WILL* work in IE */
-@media (max-width: 600px) {
- .grid {
- grid-template-columns: 1fr 1fr;
- grid-template-rows: auto;
- grid-gap: 20px;
- }
-}
-
-/* This *WILL* work in IE */
-.grid.small-gap {
- grid-template-columns: 1fr 1fr;
- grid-template-rows: auto;
- grid-gap: 20px;
-}
-```
-
-## Debug
-
-Run `npx autoprefixer --info` in your project directory to check
-which browsers are selected and which properties will be prefixed:
-
-```
-$ npx autoprefixer --info
-Browsers:
- Edge: 16
-
-These browsers account for 0.26% of all users globally
-
-At-Rules:
- @viewport: ms
-
-Selectors:
- ::placeholder: ms
-
-Properties:
- appearance: webkit
- flow-from: ms
- flow-into: ms
- hyphens: ms
- overscroll-behavior: ms
- region-fragment: ms
- scroll-snap-coordinate: ms
- scroll-snap-destination: ms
- scroll-snap-points-x: ms
- scroll-snap-points-y: ms
- scroll-snap-type: ms
- text-size-adjust: ms
- text-spacing: ms
- user-select: ms
-```
-
-JS API is also available:
-
-```js
-console.log(autoprefixer().info())
-```
-
-## Security Contact
-
-To report a security vulnerability, please use the [Tidelift security contact].
-Tidelift will coordinate the fix and disclosure.
-
-[Tidelift security contact]: https://tidelift.com/security
diff --git a/assets/node_modules/autoprefixer/bin/autoprefixer b/assets/node_modules/autoprefixer/bin/autoprefixer
deleted file mode 100755
index 33e5864..0000000
--- a/assets/node_modules/autoprefixer/bin/autoprefixer
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env node
-
-let mode = process.argv[2]
-if (mode === '--info') {
- process.stdout.write(
- require('../')().info() + '\n')
-} else if (mode === '--version') {
- process.stdout.write(
- 'autoprefixer ' + require('../package.json').version + '\n')
-} else {
- process.stdout.write(
- 'autoprefix\n' +
- '\n' +
- 'Options:\n' +
- ' --info Show target browsers and used prefixes\n' +
- ' --version Show version number\n' +
- ' --help Show help\n' +
- '\n' +
- 'Usage:\n' +
- ' autoprefixer --info\n'
- )
-}
diff --git a/assets/node_modules/autoprefixer/data/prefixes.js b/assets/node_modules/autoprefixer/data/prefixes.js
deleted file mode 100644
index 6c9750a..0000000
--- a/assets/node_modules/autoprefixer/data/prefixes.js
+++ /dev/null
@@ -1,722 +0,0 @@
-"use strict";
-
-var unpack = require('caniuse-lite').feature;
-
-function browsersSort(a, b) {
- a = a.split(' ');
- b = b.split(' ');
-
- if (a[0] > b[0]) {
- return 1;
- } else if (a[0] < b[0]) {
- return -1;
- } else {
- return Math.sign(parseFloat(a[1]) - parseFloat(b[1]));
- }
-} // Convert Can I Use data
-
-
-function f(data, opts, callback) {
- data = unpack(data);
-
- if (!callback) {
- var _ref = [opts, {}];
- callback = _ref[0];
- opts = _ref[1];
- }
-
- var match = opts.match || /\sx($|\s)/;
- var need = [];
-
- for (var browser in data.stats) {
- var versions = data.stats[browser];
-
- for (var version in versions) {
- var support = versions[version];
-
- if (support.match(match)) {
- need.push(browser + ' ' + version);
- }
- }
- }
-
- callback(need.sort(browsersSort));
-} // Add data for all properties
-
-
-var result = {};
-
-function prefix(names, data) {
- for (var _iterator = names, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref2;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref2 = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref2 = _i.value;
- }
-
- var name = _ref2;
- result[name] = Object.assign({}, data);
- }
-}
-
-function add(names, data) {
- for (var _iterator2 = names, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
- var _ref3;
-
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- _ref3 = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- _ref3 = _i2.value;
- }
-
- var name = _ref3;
- result[name].browsers = result[name].browsers.concat(data.browsers).sort(browsersSort);
- }
-}
-
-module.exports = result; // Border Radius
-
-f(require('caniuse-lite/data/features/border-radius'), function (browsers) {
- return prefix(['border-radius', 'border-top-left-radius', 'border-top-right-radius', 'border-bottom-right-radius', 'border-bottom-left-radius'], {
- mistakes: ['-khtml-', '-ms-', '-o-'],
- feature: 'border-radius',
- browsers: browsers
- });
-}); // Box Shadow
-
-f(require('caniuse-lite/data/features/css-boxshadow'), function (browsers) {
- return prefix(['box-shadow'], {
- mistakes: ['-khtml-'],
- feature: 'css-boxshadow',
- browsers: browsers
- });
-}); // Animation
-
-f(require('caniuse-lite/data/features/css-animation'), function (browsers) {
- return prefix(['animation', 'animation-name', 'animation-duration', 'animation-delay', 'animation-direction', 'animation-fill-mode', 'animation-iteration-count', 'animation-play-state', 'animation-timing-function', '@keyframes'], {
- mistakes: ['-khtml-', '-ms-'],
- feature: 'css-animation',
- browsers: browsers
- });
-}); // Transition
-
-f(require('caniuse-lite/data/features/css-transitions'), function (browsers) {
- return prefix(['transition', 'transition-property', 'transition-duration', 'transition-delay', 'transition-timing-function'], {
- mistakes: ['-khtml-', '-ms-'],
- browsers: browsers,
- feature: 'css-transitions'
- });
-}); // Transform 2D
-
-f(require('caniuse-lite/data/features/transforms2d'), function (browsers) {
- return prefix(['transform', 'transform-origin'], {
- feature: 'transforms2d',
- browsers: browsers
- });
-}); // Transform 3D
-
-var transforms3d = require('caniuse-lite/data/features/transforms3d');
-
-f(transforms3d, function (browsers) {
- prefix(['perspective', 'perspective-origin'], {
- feature: 'transforms3d',
- browsers: browsers
- });
- return prefix(['transform-style'], {
- mistakes: ['-ms-', '-o-'],
- browsers: browsers,
- feature: 'transforms3d'
- });
-});
-f(transforms3d, {
- match: /y\sx|y\s#2/
-}, function (browsers) {
- return prefix(['backface-visibility'], {
- mistakes: ['-ms-', '-o-'],
- feature: 'transforms3d',
- browsers: browsers
- });
-}); // Gradients
-
-var gradients = require('caniuse-lite/data/features/css-gradients');
-
-f(gradients, {
- match: /y\sx/
-}, function (browsers) {
- return prefix(['linear-gradient', 'repeating-linear-gradient', 'radial-gradient', 'repeating-radial-gradient'], {
- props: ['background', 'background-image', 'border-image', 'mask', 'list-style', 'list-style-image', 'content', 'mask-image'],
- mistakes: ['-ms-'],
- feature: 'css-gradients',
- browsers: browsers
- });
-});
-f(gradients, {
- match: /a\sx/
-}, function (browsers) {
- browsers = browsers.map(function (i) {
- if (/firefox|op/.test(i)) {
- return i;
- } else {
- return i + " old";
- }
- });
- return add(['linear-gradient', 'repeating-linear-gradient', 'radial-gradient', 'repeating-radial-gradient'], {
- feature: 'css-gradients',
- browsers: browsers
- });
-}); // Box sizing
-
-f(require('caniuse-lite/data/features/css3-boxsizing'), function (browsers) {
- return prefix(['box-sizing'], {
- feature: 'css3-boxsizing',
- browsers: browsers
- });
-}); // Filter Effects
-
-f(require('caniuse-lite/data/features/css-filters'), function (browsers) {
- return prefix(['filter'], {
- feature: 'css-filters',
- browsers: browsers
- });
-}); // filter() function
-
-f(require('caniuse-lite/data/features/css-filter-function'), function (browsers) {
- return prefix(['filter-function'], {
- props: ['background', 'background-image', 'border-image', 'mask', 'list-style', 'list-style-image', 'content', 'mask-image'],
- feature: 'css-filter-function',
- browsers: browsers
- });
-}); // Backdrop-filter
-
-var backdrop = require('caniuse-lite/data/features/css-backdrop-filter');
-
-f(backdrop, {
- match: /y\sx|y\s#2/
-}, function (browsers) {
- return prefix(['backdrop-filter'], {
- feature: 'css-backdrop-filter',
- browsers: browsers
- });
-}); // element() function
-
-f(require('caniuse-lite/data/features/css-element-function'), function (browsers) {
- return prefix(['element'], {
- props: ['background', 'background-image', 'border-image', 'mask', 'list-style', 'list-style-image', 'content', 'mask-image'],
- feature: 'css-element-function',
- browsers: browsers
- });
-}); // Multicolumns
-
-f(require('caniuse-lite/data/features/multicolumn'), function (browsers) {
- prefix(['columns', 'column-width', 'column-gap', 'column-rule', 'column-rule-color', 'column-rule-width', 'column-count', 'column-rule-style', 'column-span', 'column-fill'], {
- feature: 'multicolumn',
- browsers: browsers
- });
- var noff = browsers.filter(function (i) {
- return !/firefox/.test(i);
- });
- prefix(['break-before', 'break-after', 'break-inside'], {
- feature: 'multicolumn',
- browsers: noff
- });
-}); // User select
-
-f(require('caniuse-lite/data/features/user-select-none'), function (browsers) {
- return prefix(['user-select'], {
- mistakes: ['-khtml-'],
- feature: 'user-select-none',
- browsers: browsers
- });
-}); // Flexible Box Layout
-
-var flexbox = require('caniuse-lite/data/features/flexbox');
-
-f(flexbox, {
- match: /a\sx/
-}, function (browsers) {
- browsers = browsers.map(function (i) {
- if (/ie|firefox/.test(i)) {
- return i;
- } else {
- return i + " 2009";
- }
- });
- prefix(['display-flex', 'inline-flex'], {
- props: ['display'],
- feature: 'flexbox',
- browsers: browsers
- });
- prefix(['flex', 'flex-grow', 'flex-shrink', 'flex-basis'], {
- feature: 'flexbox',
- browsers: browsers
- });
- prefix(['flex-direction', 'flex-wrap', 'flex-flow', 'justify-content', 'order', 'align-items', 'align-self', 'align-content'], {
- feature: 'flexbox',
- browsers: browsers
- });
-});
-f(flexbox, {
- match: /y\sx/
-}, function (browsers) {
- add(['display-flex', 'inline-flex'], {
- feature: 'flexbox',
- browsers: browsers
- });
- add(['flex', 'flex-grow', 'flex-shrink', 'flex-basis'], {
- feature: 'flexbox',
- browsers: browsers
- });
- add(['flex-direction', 'flex-wrap', 'flex-flow', 'justify-content', 'order', 'align-items', 'align-self', 'align-content'], {
- feature: 'flexbox',
- browsers: browsers
- });
-}); // calc() unit
-
-f(require('caniuse-lite/data/features/calc'), function (browsers) {
- return prefix(['calc'], {
- props: ['*'],
- feature: 'calc',
- browsers: browsers
- });
-}); // Background options
-
-f(require('caniuse-lite/data/features/background-img-opts'), function (browsers) {
- return prefix(['background-origin', 'background-size'], {
- feature: 'background-img-opts',
- browsers: browsers
- });
-}); // background-clip: text
-
-f(require('caniuse-lite/data/features/background-clip-text'), function (browsers) {
- return prefix(['background-clip'], {
- feature: 'background-clip-text',
- browsers: browsers
- });
-}); // Font feature settings
-
-f(require('caniuse-lite/data/features/font-feature'), function (browsers) {
- return prefix(['font-feature-settings', 'font-variant-ligatures', 'font-language-override'], {
- feature: 'font-feature',
- browsers: browsers
- });
-}); // CSS font-kerning property
-
-f(require('caniuse-lite/data/features/font-kerning'), function (browsers) {
- return prefix(['font-kerning'], {
- feature: 'font-kerning',
- browsers: browsers
- });
-}); // Border image
-
-f(require('caniuse-lite/data/features/border-image'), function (browsers) {
- return prefix(['border-image'], {
- feature: 'border-image',
- browsers: browsers
- });
-}); // Selection selector
-
-f(require('caniuse-lite/data/features/css-selection'), function (browsers) {
- return prefix(['::selection'], {
- selector: true,
- feature: 'css-selection',
- browsers: browsers
- });
-}); // Placeholder selector
-
-f(require('caniuse-lite/data/features/css-placeholder'), function (browsers) {
- prefix(['::placeholder'], {
- selector: true,
- feature: 'css-placeholder',
- browsers: browsers.concat(['ie 10 old', 'ie 11 old', 'firefox 18 old'])
- });
-}); // Hyphenation
-
-f(require('caniuse-lite/data/features/css-hyphens'), function (browsers) {
- return prefix(['hyphens'], {
- feature: 'css-hyphens',
- browsers: browsers
- });
-}); // Fullscreen selector
-
-var fullscreen = require('caniuse-lite/data/features/fullscreen');
-
-f(fullscreen, function (browsers) {
- return prefix([':fullscreen'], {
- selector: true,
- feature: 'fullscreen',
- browsers: browsers
- });
-});
-f(fullscreen, {
- match: /x(\s#2|$)/
-}, function (browsers) {
- return prefix(['::backdrop'], {
- selector: true,
- feature: 'fullscreen',
- browsers: browsers
- });
-}); // Tab size
-
-f(require('caniuse-lite/data/features/css3-tabsize'), function (browsers) {
- return prefix(['tab-size'], {
- feature: 'css3-tabsize',
- browsers: browsers
- });
-}); // Intrinsic & extrinsic sizing
-
-var intrinsic = require('caniuse-lite/data/features/intrinsic-width');
-
-var sizeProps = ['width', 'min-width', 'max-width', 'height', 'min-height', 'max-height', 'inline-size', 'min-inline-size', 'max-inline-size', 'block-size', 'min-block-size', 'max-block-size', 'grid', 'grid-template', 'grid-template-rows', 'grid-template-columns', 'grid-auto-columns', 'grid-auto-rows'];
-f(intrinsic, function (browsers) {
- return prefix(['max-content', 'min-content'], {
- props: sizeProps,
- feature: 'intrinsic-width',
- browsers: browsers
- });
-});
-f(intrinsic, {
- match: /x|\s#4/
-}, function (browsers) {
- return prefix(['fill', 'fill-available', 'stretch'], {
- props: sizeProps,
- feature: 'intrinsic-width',
- browsers: browsers
- });
-});
-f(intrinsic, {
- match: /x|\s#5/
-}, function (browsers) {
- return prefix(['fit-content'], {
- props: sizeProps,
- feature: 'intrinsic-width',
- browsers: browsers
- });
-}); // Zoom cursors
-
-f(require('caniuse-lite/data/features/css3-cursors-newer'), function (browsers) {
- return prefix(['zoom-in', 'zoom-out'], {
- props: ['cursor'],
- feature: 'css3-cursors-newer',
- browsers: browsers
- });
-}); // Grab cursors
-
-f(require('caniuse-lite/data/features/css3-cursors-grab'), function (browsers) {
- return prefix(['grab', 'grabbing'], {
- props: ['cursor'],
- feature: 'css3-cursors-grab',
- browsers: browsers
- });
-}); // Sticky position
-
-f(require('caniuse-lite/data/features/css-sticky'), function (browsers) {
- return prefix(['sticky'], {
- props: ['position'],
- feature: 'css-sticky',
- browsers: browsers
- });
-}); // Pointer Events
-
-f(require('caniuse-lite/data/features/pointer'), function (browsers) {
- return prefix(['touch-action'], {
- feature: 'pointer',
- browsers: browsers
- });
-}); // Text decoration
-
-var decoration = require('caniuse-lite/data/features/text-decoration');
-
-f(decoration, function (browsers) {
- return prefix(['text-decoration-style', 'text-decoration-color', 'text-decoration-line', 'text-decoration'], {
- feature: 'text-decoration',
- browsers: browsers
- });
-});
-f(decoration, {
- match: /x.*#[235]/
-}, function (browsers) {
- return prefix(['text-decoration-skip', 'text-decoration-skip-ink'], {
- feature: 'text-decoration',
- browsers: browsers
- });
-}); // Text Size Adjust
-
-f(require('caniuse-lite/data/features/text-size-adjust'), function (browsers) {
- return prefix(['text-size-adjust'], {
- feature: 'text-size-adjust',
- browsers: browsers
- });
-}); // CSS Masks
-
-f(require('caniuse-lite/data/features/css-masks'), function (browsers) {
- prefix(['mask-clip', 'mask-composite', 'mask-image', 'mask-origin', 'mask-repeat', 'mask-border-repeat', 'mask-border-source'], {
- feature: 'css-masks',
- browsers: browsers
- });
- prefix(['mask', 'mask-position', 'mask-size', 'mask-border', 'mask-border-outset', 'mask-border-width', 'mask-border-slice'], {
- feature: 'css-masks',
- browsers: browsers
- });
-}); // CSS clip-path property
-
-f(require('caniuse-lite/data/features/css-clip-path'), function (browsers) {
- return prefix(['clip-path'], {
- feature: 'css-clip-path',
- browsers: browsers
- });
-}); // Fragmented Borders and Backgrounds
-
-f(require('caniuse-lite/data/features/css-boxdecorationbreak'), function (browsers) {
- return prefix(['box-decoration-break'], {
- feature: 'css-boxdecorationbreak',
- browsers: browsers
- });
-}); // CSS3 object-fit/object-position
-
-f(require('caniuse-lite/data/features/object-fit'), function (browsers) {
- return prefix(['object-fit', 'object-position'], {
- feature: 'object-fit',
- browsers: browsers
- });
-}); // CSS Shapes
-
-f(require('caniuse-lite/data/features/css-shapes'), function (browsers) {
- return prefix(['shape-margin', 'shape-outside', 'shape-image-threshold'], {
- feature: 'css-shapes',
- browsers: browsers
- });
-}); // CSS3 text-overflow
-
-f(require('caniuse-lite/data/features/text-overflow'), function (browsers) {
- return prefix(['text-overflow'], {
- feature: 'text-overflow',
- browsers: browsers
- });
-}); // Viewport at-rule
-
-f(require('caniuse-lite/data/features/css-deviceadaptation'), function (browsers) {
- return prefix(['@viewport'], {
- feature: 'css-deviceadaptation',
- browsers: browsers
- });
-}); // Resolution Media Queries
-
-var resolut = require('caniuse-lite/data/features/css-media-resolution');
-
-f(resolut, {
- match: /( x($| )|a #2)/
-}, function (browsers) {
- return prefix(['@resolution'], {
- feature: 'css-media-resolution',
- browsers: browsers
- });
-}); // CSS text-align-last
-
-f(require('caniuse-lite/data/features/css-text-align-last'), function (browsers) {
- return prefix(['text-align-last'], {
- feature: 'css-text-align-last',
- browsers: browsers
- });
-}); // Crisp Edges Image Rendering Algorithm
-
-var crispedges = require('caniuse-lite/data/features/css-crisp-edges');
-
-f(crispedges, {
- match: /y x|a x #1/
-}, function (browsers) {
- return prefix(['pixelated'], {
- props: ['image-rendering'],
- feature: 'css-crisp-edges',
- browsers: browsers
- });
-});
-f(crispedges, {
- match: /a x #2/
-}, function (browsers) {
- return prefix(['image-rendering'], {
- feature: 'css-crisp-edges',
- browsers: browsers
- });
-}); // Logical Properties
-
-var logicalProps = require('caniuse-lite/data/features/css-logical-props');
-
-f(logicalProps, function (browsers) {
- return prefix(['border-inline-start', 'border-inline-end', 'margin-inline-start', 'margin-inline-end', 'padding-inline-start', 'padding-inline-end'], {
- feature: 'css-logical-props',
- browsers: browsers
- });
-});
-f(logicalProps, {
- match: /x\s#2/
-}, function (browsers) {
- return prefix(['border-block-start', 'border-block-end', 'margin-block-start', 'margin-block-end', 'padding-block-start', 'padding-block-end'], {
- feature: 'css-logical-props',
- browsers: browsers
- });
-}); // CSS appearance
-
-var appearance = require('caniuse-lite/data/features/css-appearance');
-
-f(appearance, {
- match: /#2|x/
-}, function (browsers) {
- return prefix(['appearance'], {
- feature: 'css-appearance',
- browsers: browsers
- });
-}); // CSS Scroll snap points
-
-f(require('caniuse-lite/data/features/css-snappoints'), function (browsers) {
- return prefix(['scroll-snap-type', 'scroll-snap-coordinate', 'scroll-snap-destination', 'scroll-snap-points-x', 'scroll-snap-points-y'], {
- feature: 'css-snappoints',
- browsers: browsers
- });
-}); // CSS Regions
-
-f(require('caniuse-lite/data/features/css-regions'), function (browsers) {
- return prefix(['flow-into', 'flow-from', 'region-fragment'], {
- feature: 'css-regions',
- browsers: browsers
- });
-}); // CSS image-set
-
-f(require('caniuse-lite/data/features/css-image-set'), function (browsers) {
- return prefix(['image-set'], {
- props: ['background', 'background-image', 'border-image', 'cursor', 'mask', 'mask-image', 'list-style', 'list-style-image', 'content'],
- feature: 'css-image-set',
- browsers: browsers
- });
-}); // Writing Mode
-
-var writingMode = require('caniuse-lite/data/features/css-writing-mode');
-
-f(writingMode, {
- match: /a|x/
-}, function (browsers) {
- return prefix(['writing-mode'], {
- feature: 'css-writing-mode',
- browsers: browsers
- });
-}); // Cross-Fade Function
-
-f(require('caniuse-lite/data/features/css-cross-fade'), function (browsers) {
- return prefix(['cross-fade'], {
- props: ['background', 'background-image', 'border-image', 'mask', 'list-style', 'list-style-image', 'content', 'mask-image'],
- feature: 'css-cross-fade',
- browsers: browsers
- });
-}); // Read Only selector
-
-f(require('caniuse-lite/data/features/css-read-only-write'), function (browsers) {
- return prefix([':read-only', ':read-write'], {
- selector: true,
- feature: 'css-read-only-write',
- browsers: browsers
- });
-}); // Text Emphasize
-
-f(require('caniuse-lite/data/features/text-emphasis'), function (browsers) {
- return prefix(['text-emphasis', 'text-emphasis-position', 'text-emphasis-style', 'text-emphasis-color'], {
- feature: 'text-emphasis',
- browsers: browsers
- });
-}); // CSS Grid Layout
-
-var grid = require('caniuse-lite/data/features/css-grid');
-
-f(grid, function (browsers) {
- prefix(['display-grid', 'inline-grid'], {
- props: ['display'],
- feature: 'css-grid',
- browsers: browsers
- });
- prefix(['grid-template-columns', 'grid-template-rows', 'grid-row-start', 'grid-column-start', 'grid-row-end', 'grid-column-end', 'grid-row', 'grid-column', 'grid-area', 'grid-template', 'grid-template-areas', 'place-self'], {
- feature: 'css-grid',
- browsers: browsers
- });
-});
-f(grid, {
- match: /a x/
-}, function (browsers) {
- return prefix(['grid-column-align', 'grid-row-align'], {
- feature: 'css-grid',
- browsers: browsers
- });
-}); // CSS text-spacing
-
-f(require('caniuse-lite/data/features/css-text-spacing'), function (browsers) {
- return prefix(['text-spacing'], {
- feature: 'css-text-spacing',
- browsers: browsers
- });
-}); // :any-link selector
-
-f(require('caniuse-lite/data/features/css-any-link'), function (browsers) {
- return prefix([':any-link'], {
- selector: true,
- feature: 'css-any-link',
- browsers: browsers
- });
-}); // unicode-bidi
-
-var bidi = require('caniuse-lite/data/features/css-unicode-bidi');
-
-f(bidi, function (browsers) {
- return prefix(['isolate'], {
- props: ['unicode-bidi'],
- feature: 'css-unicode-bidi',
- browsers: browsers
- });
-});
-f(bidi, {
- match: /y x|a x #2/
-}, function (browsers) {
- return prefix(['plaintext'], {
- props: ['unicode-bidi'],
- feature: 'css-unicode-bidi',
- browsers: browsers
- });
-});
-f(bidi, {
- match: /y x/
-}, function (browsers) {
- return prefix(['isolate-override'], {
- props: ['unicode-bidi'],
- feature: 'css-unicode-bidi',
- browsers: browsers
- });
-}); // overscroll-behavior selector
-
-var over = require('caniuse-lite/data/features/css-overscroll-behavior');
-
-f(over, {
- match: /a #1/
-}, function (browsers) {
- return prefix(['overscroll-behavior'], {
- feature: 'css-overscroll-behavior',
- browsers: browsers
- });
-}); // color-adjust
-
-f(require('caniuse-lite/data/features/css-color-adjust'), function (browsers) {
- return prefix(['color-adjust'], {
- feature: 'css-color-adjust',
- browsers: browsers
- });
-}); // text-orientation
-
-f(require('caniuse-lite/data/features/css-text-orientation'), function (browsers) {
- return prefix(['text-orientation'], {
- feature: 'css-text-orientation',
- browsers: browsers
- });
-}); \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/at-rule.js b/assets/node_modules/autoprefixer/lib/at-rule.js
deleted file mode 100644
index 3abf80b..0000000
--- a/assets/node_modules/autoprefixer/lib/at-rule.js
+++ /dev/null
@@ -1,69 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-var Prefixer = require('./prefixer');
-
-var AtRule =
-/*#__PURE__*/
-function (_Prefixer) {
- _inheritsLoose(AtRule, _Prefixer);
-
- function AtRule() {
- return _Prefixer.apply(this, arguments) || this;
- }
-
- var _proto = AtRule.prototype;
-
- /**
- * Clone and add prefixes for at-rule
- */
- _proto.add = function add(rule, prefix) {
- var prefixed = prefix + rule.name;
- var already = rule.parent.some(function (i) {
- return i.name === prefixed && i.params === rule.params;
- });
-
- if (already) {
- return undefined;
- }
-
- var cloned = this.clone(rule, {
- name: prefixed
- });
- return rule.parent.insertBefore(rule, cloned);
- }
- /**
- * Clone node with prefixes
- */
- ;
-
- _proto.process = function process(node) {
- var parent = this.parentPrefix(node);
-
- for (var _iterator = this.prefixes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var prefix = _ref;
-
- if (!parent || parent === prefix) {
- this.add(node, prefix);
- }
- }
- };
-
- return AtRule;
-}(Prefixer);
-
-module.exports = AtRule; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/autoprefixer.js b/assets/node_modules/autoprefixer/lib/autoprefixer.js
deleted file mode 100644
index 85a1ac8..0000000
--- a/assets/node_modules/autoprefixer/lib/autoprefixer.js
+++ /dev/null
@@ -1,153 +0,0 @@
-"use strict";
-
-var browserslist = require('browserslist');
-
-var postcss = require('postcss');
-
-var agents = require('caniuse-lite').agents;
-
-var chalk = require('chalk');
-
-var Browsers = require('./browsers');
-
-var Prefixes = require('./prefixes');
-
-var data = require('../data/prefixes');
-
-var info = require('./info');
-
-var WARNING = '\n' + ' Replace Autoprefixer `browsers` option to Browserslist config.\n' + ' Use `browserslist` key in `package.json` or `.browserslistrc` file.\n' + '\n' + ' Using `browsers` option can cause errors. Browserslist config \n' + ' can be used for Babel, Autoprefixer, postcss-normalize and other tools.\n' + '\n' + ' If you really need to use option, rename it to `overrideBrowserslist`.\n' + '\n' + ' Learn more at:\n' + ' https://github.com/browserslist/browserslist#readme\n' + ' https://twitter.com/browserslist\n' + '\n';
-
-function isPlainObject(obj) {
- return Object.prototype.toString.apply(obj) === '[object Object]';
-}
-
-var cache = {};
-
-function timeCapsule(result, prefixes) {
- if (prefixes.browsers.selected.length === 0) {
- return;
- }
-
- if (prefixes.add.selectors.length > 0) {
- return;
- }
-
- if (Object.keys(prefixes.add).length > 2) {
- return;
- }
- /* istanbul ignore next */
-
-
- result.warn('Greetings, time traveller. ' + 'We are in the golden age of prefix-less CSS, ' + 'where Autoprefixer is no longer needed for your stylesheet.');
-}
-
-module.exports = postcss.plugin('autoprefixer', function () {
- for (var _len = arguments.length, reqs = new Array(_len), _key = 0; _key < _len; _key++) {
- reqs[_key] = arguments[_key];
- }
-
- var options;
-
- if (reqs.length === 1 && isPlainObject(reqs[0])) {
- options = reqs[0];
- reqs = undefined;
- } else if (reqs.length === 0 || reqs.length === 1 && !reqs[0]) {
- reqs = undefined;
- } else if (reqs.length <= 2 && (Array.isArray(reqs[0]) || !reqs[0])) {
- options = reqs[1];
- reqs = reqs[0];
- } else if (typeof reqs[reqs.length - 1] === 'object') {
- options = reqs.pop();
- }
-
- if (!options) {
- options = {};
- }
-
- if (options.browser) {
- throw new Error('Change `browser` option to `overrideBrowserslist` in Autoprefixer');
- } else if (options.browserslist) {
- throw new Error('Change `browserslist` option to `overrideBrowserslist` in Autoprefixer');
- }
-
- if (options.overrideBrowserslist) {
- reqs = options.overrideBrowserslist;
- } else if (options.browsers) {
- if (typeof console !== 'undefined' && console.warn) {
- if (chalk && chalk.red) {
- console.warn(chalk.red(WARNING.replace(/`[^`]+`/g, function (i) {
- return chalk.yellow(i.slice(1, -1));
- })));
- } else {
- console.warn(WARNING);
- }
- }
-
- reqs = options.browsers;
- }
-
- var brwlstOpts = {
- ignoreUnknownVersions: options.ignoreUnknownVersions,
- stats: options.stats
- };
-
- function loadPrefixes(opts) {
- var d = module.exports.data;
- var browsers = new Browsers(d.browsers, reqs, opts, brwlstOpts);
- var key = browsers.selected.join(', ') + JSON.stringify(options);
-
- if (!cache[key]) {
- cache[key] = new Prefixes(d.prefixes, browsers, options);
- }
-
- return cache[key];
- }
-
- function plugin(css, result) {
- var prefixes = loadPrefixes({
- from: css.source && css.source.input.file,
- env: options.env
- });
- timeCapsule(result, prefixes);
-
- if (options.remove !== false) {
- prefixes.processor.remove(css, result);
- }
-
- if (options.add !== false) {
- prefixes.processor.add(css, result);
- }
- }
-
- plugin.options = options;
- plugin.browsers = reqs;
-
- plugin.info = function (opts) {
- opts = opts || {};
- opts.from = opts.from || process.cwd();
- return info(loadPrefixes(opts));
- };
-
- return plugin;
-});
-/**
- * Autoprefixer data
- */
-
-module.exports.data = {
- browsers: agents,
- prefixes: data
-};
-/**
- * Autoprefixer default browsers
- */
-
-module.exports.defaults = browserslist.defaults;
-/**
- * Inspect with default Autoprefixer
- */
-
-module.exports.info = function () {
- return module.exports().info();
-}; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/brackets.js b/assets/node_modules/autoprefixer/lib/brackets.js
deleted file mode 100644
index c548609..0000000
--- a/assets/node_modules/autoprefixer/lib/brackets.js
+++ /dev/null
@@ -1,80 +0,0 @@
-"use strict";
-
-function last(array) {
- return array[array.length - 1];
-}
-
-var brackets = {
- /**
- * Parse string to nodes tree
- */
- parse: function parse(str) {
- var current = [''];
- var stack = [current];
-
- for (var _iterator = str, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var sym = _ref;
-
- if (sym === '(') {
- current = [''];
- last(stack).push(current);
- stack.push(current);
- continue;
- }
-
- if (sym === ')') {
- stack.pop();
- current = last(stack);
- current.push('');
- continue;
- }
-
- current[current.length - 1] += sym;
- }
-
- return stack[0];
- },
-
- /**
- * Generate output string by nodes tree
- */
- stringify: function stringify(ast) {
- var result = '';
-
- for (var _iterator2 = ast, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
- var _ref2;
-
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- _ref2 = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- _ref2 = _i2.value;
- }
-
- var i = _ref2;
-
- if (typeof i === 'object') {
- result += "(" + brackets.stringify(i) + ")";
- continue;
- }
-
- result += i;
- }
-
- return result;
- }
-};
-module.exports = brackets; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/browsers.js b/assets/node_modules/autoprefixer/lib/browsers.js
deleted file mode 100644
index f2166f1..0000000
--- a/assets/node_modules/autoprefixer/lib/browsers.js
+++ /dev/null
@@ -1,99 +0,0 @@
-"use strict";
-
-var browserslist = require('browserslist');
-
-var agents = require('caniuse-lite').agents;
-
-var utils = require('./utils');
-
-var Browsers =
-/*#__PURE__*/
-function () {
- /**
- * Return all prefixes for default browser data
- */
- Browsers.prefixes = function prefixes() {
- if (this.prefixesCache) {
- return this.prefixesCache;
- }
-
- this.prefixesCache = [];
-
- for (var name in agents) {
- this.prefixesCache.push("-" + agents[name].prefix + "-");
- }
-
- this.prefixesCache = utils.uniq(this.prefixesCache).sort(function (a, b) {
- return b.length - a.length;
- });
- return this.prefixesCache;
- }
- /**
- * Check is value contain any possible prefix
- */
- ;
-
- Browsers.withPrefix = function withPrefix(value) {
- if (!this.prefixesRegexp) {
- this.prefixesRegexp = new RegExp(this.prefixes().join('|'));
- }
-
- return this.prefixesRegexp.test(value);
- };
-
- function Browsers(data, requirements, options, browserslistOpts) {
- this.data = data;
- this.options = options || {};
- this.browserslistOpts = browserslistOpts || {};
- this.selected = this.parse(requirements);
- }
- /**
- * Return browsers selected by requirements
- */
-
-
- var _proto = Browsers.prototype;
-
- _proto.parse = function parse(requirements) {
- var opts = {};
-
- for (var i in this.browserslistOpts) {
- opts[i] = this.browserslistOpts[i];
- }
-
- opts.path = this.options.from;
- opts.env = this.options.env;
- return browserslist(requirements, opts);
- }
- /**
- * Return prefix for selected browser
- */
- ;
-
- _proto.prefix = function prefix(browser) {
- var _browser$split = browser.split(' '),
- name = _browser$split[0],
- version = _browser$split[1];
-
- var data = this.data[name];
- var prefix = data.prefix_exceptions && data.prefix_exceptions[version];
-
- if (!prefix) {
- prefix = data.prefix;
- }
-
- return "-" + prefix + "-";
- }
- /**
- * Is browser is selected by requirements
- */
- ;
-
- _proto.isSelected = function isSelected(browser) {
- return this.selected.includes(browser);
- };
-
- return Browsers;
-}();
-
-module.exports = Browsers; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/declaration.js b/assets/node_modules/autoprefixer/lib/declaration.js
deleted file mode 100644
index 3674d2c..0000000
--- a/assets/node_modules/autoprefixer/lib/declaration.js
+++ /dev/null
@@ -1,261 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-var Prefixer = require('./prefixer');
-
-var Browsers = require('./browsers');
-
-var utils = require('./utils');
-
-var Declaration =
-/*#__PURE__*/
-function (_Prefixer) {
- _inheritsLoose(Declaration, _Prefixer);
-
- function Declaration() {
- return _Prefixer.apply(this, arguments) || this;
- }
-
- var _proto = Declaration.prototype;
-
- /**
- * Always true, because we already get prefixer by property name
- */
- _proto.check = function check()
- /* decl */
- {
- return true;
- }
- /**
- * Return prefixed version of property
- */
- ;
-
- _proto.prefixed = function prefixed(prop, prefix) {
- return prefix + prop;
- }
- /**
- * Return unprefixed version of property
- */
- ;
-
- _proto.normalize = function normalize(prop) {
- return prop;
- }
- /**
- * Check `value`, that it contain other prefixes, rather than `prefix`
- */
- ;
-
- _proto.otherPrefixes = function otherPrefixes(value, prefix) {
- for (var _iterator = Browsers.prefixes(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var other = _ref;
-
- if (other === prefix) {
- continue;
- }
-
- if (value.includes(other)) {
- return true;
- }
- }
-
- return false;
- }
- /**
- * Set prefix to declaration
- */
- ;
-
- _proto.set = function set(decl, prefix) {
- decl.prop = this.prefixed(decl.prop, prefix);
- return decl;
- }
- /**
- * Should we use visual cascade for prefixes
- */
- ;
-
- _proto.needCascade = function needCascade(decl) {
- if (!decl._autoprefixerCascade) {
- decl._autoprefixerCascade = this.all.options.cascade !== false && decl.raw('before').includes('\n');
- }
-
- return decl._autoprefixerCascade;
- }
- /**
- * Return maximum length of possible prefixed property
- */
- ;
-
- _proto.maxPrefixed = function maxPrefixed(prefixes, decl) {
- if (decl._autoprefixerMax) {
- return decl._autoprefixerMax;
- }
-
- var max = 0;
-
- for (var _iterator2 = prefixes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
- var _ref2;
-
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- _ref2 = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- _ref2 = _i2.value;
- }
-
- var prefix = _ref2;
- prefix = utils.removeNote(prefix);
-
- if (prefix.length > max) {
- max = prefix.length;
- }
- }
-
- decl._autoprefixerMax = max;
- return decl._autoprefixerMax;
- }
- /**
- * Calculate indentation to create visual cascade
- */
- ;
-
- _proto.calcBefore = function calcBefore(prefixes, decl, prefix) {
- if (prefix === void 0) {
- prefix = '';
- }
-
- var max = this.maxPrefixed(prefixes, decl);
- var diff = max - utils.removeNote(prefix).length;
- var before = decl.raw('before');
-
- if (diff > 0) {
- before += Array(diff).fill(' ').join('');
- }
-
- return before;
- }
- /**
- * Remove visual cascade
- */
- ;
-
- _proto.restoreBefore = function restoreBefore(decl) {
- var lines = decl.raw('before').split('\n');
- var min = lines[lines.length - 1];
- this.all.group(decl).up(function (prefixed) {
- var array = prefixed.raw('before').split('\n');
- var last = array[array.length - 1];
-
- if (last.length < min.length) {
- min = last;
- }
- });
- lines[lines.length - 1] = min;
- decl.raws.before = lines.join('\n');
- }
- /**
- * Clone and insert new declaration
- */
- ;
-
- _proto.insert = function insert(decl, prefix, prefixes) {
- var cloned = this.set(this.clone(decl), prefix);
- if (!cloned) return undefined;
- var already = decl.parent.some(function (i) {
- return i.prop === cloned.prop && i.value === cloned.value;
- });
-
- if (already) {
- return undefined;
- }
-
- if (this.needCascade(decl)) {
- cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
- }
-
- return decl.parent.insertBefore(decl, cloned);
- }
- /**
- * Did this declaration has this prefix above
- */
- ;
-
- _proto.isAlready = function isAlready(decl, prefixed) {
- var already = this.all.group(decl).up(function (i) {
- return i.prop === prefixed;
- });
-
- if (!already) {
- already = this.all.group(decl).down(function (i) {
- return i.prop === prefixed;
- });
- }
-
- return already;
- }
- /**
- * Clone and add prefixes for declaration
- */
- ;
-
- _proto.add = function add(decl, prefix, prefixes, result) {
- var prefixed = this.prefixed(decl.prop, prefix);
-
- if (this.isAlready(decl, prefixed) || this.otherPrefixes(decl.value, prefix)) {
- return undefined;
- }
-
- return this.insert(decl, prefix, prefixes, result);
- }
- /**
- * Add spaces for visual cascade
- */
- ;
-
- _proto.process = function process(decl, result) {
- if (!this.needCascade(decl)) {
- _Prefixer.prototype.process.call(this, decl, result);
-
- return;
- }
-
- var prefixes = _Prefixer.prototype.process.call(this, decl, result);
-
- if (!prefixes || !prefixes.length) {
- return;
- }
-
- this.restoreBefore(decl);
- decl.raws.before = this.calcBefore(prefixes, decl);
- }
- /**
- * Return list of prefixed properties to clean old prefixes
- */
- ;
-
- _proto.old = function old(prop, prefix) {
- return [this.prefixed(prop, prefix)];
- };
-
- return Declaration;
-}(Prefixer);
-
-module.exports = Declaration; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/align-content.js b/assets/node_modules/autoprefixer/lib/hacks/align-content.js
deleted file mode 100644
index 2796f56..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/align-content.js
+++ /dev/null
@@ -1,81 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var flexSpec = require('./flex-spec');
-
-var Declaration = require('../declaration');
-
-var AlignContent =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(AlignContent, _Declaration);
-
- function AlignContent() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = AlignContent.prototype;
-
- /**
- * Change property name for 2012 spec
- */
- _proto.prefixed = function prefixed(prop, prefix) {
- var spec;
-
- var _flexSpec = flexSpec(prefix);
-
- spec = _flexSpec[0];
- prefix = _flexSpec[1];
-
- if (spec === 2012) {
- return prefix + 'flex-line-pack';
- }
-
- return _Declaration.prototype.prefixed.call(this, prop, prefix);
- }
- /**
- * Return property name by final spec
- */
- ;
-
- _proto.normalize = function normalize() {
- return 'align-content';
- }
- /**
- * Change value for 2012 spec and ignore prefix for 2009
- */
- ;
-
- _proto.set = function set(decl, prefix) {
- var spec = flexSpec(prefix)[0];
-
- if (spec === 2012) {
- decl.value = AlignContent.oldValues[decl.value] || decl.value;
- return _Declaration.prototype.set.call(this, decl, prefix);
- }
-
- if (spec === 'final') {
- return _Declaration.prototype.set.call(this, decl, prefix);
- }
-
- return undefined;
- };
-
- return AlignContent;
-}(Declaration);
-
-_defineProperty(AlignContent, "names", ['align-content', 'flex-line-pack']);
-
-_defineProperty(AlignContent, "oldValues", {
- 'flex-end': 'end',
- 'flex-start': 'start',
- 'space-between': 'justify',
- 'space-around': 'distribute'
-});
-
-module.exports = AlignContent; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/align-items.js b/assets/node_modules/autoprefixer/lib/hacks/align-items.js
deleted file mode 100644
index a9ed9ba..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/align-items.js
+++ /dev/null
@@ -1,78 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var flexSpec = require('./flex-spec');
-
-var Declaration = require('../declaration');
-
-var AlignItems =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(AlignItems, _Declaration);
-
- function AlignItems() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = AlignItems.prototype;
-
- /**
- * Change property name for 2009 and 2012 specs
- */
- _proto.prefixed = function prefixed(prop, prefix) {
- var spec;
-
- var _flexSpec = flexSpec(prefix);
-
- spec = _flexSpec[0];
- prefix = _flexSpec[1];
-
- if (spec === 2009) {
- return prefix + 'box-align';
- }
-
- if (spec === 2012) {
- return prefix + 'flex-align';
- }
-
- return _Declaration.prototype.prefixed.call(this, prop, prefix);
- }
- /**
- * Return property name by final spec
- */
- ;
-
- _proto.normalize = function normalize() {
- return 'align-items';
- }
- /**
- * Change value for 2009 and 2012 specs
- */
- ;
-
- _proto.set = function set(decl, prefix) {
- var spec = flexSpec(prefix)[0];
-
- if (spec === 2009 || spec === 2012) {
- decl.value = AlignItems.oldValues[decl.value] || decl.value;
- }
-
- return _Declaration.prototype.set.call(this, decl, prefix);
- };
-
- return AlignItems;
-}(Declaration);
-
-_defineProperty(AlignItems, "names", ['align-items', 'flex-align', 'box-align']);
-
-_defineProperty(AlignItems, "oldValues", {
- 'flex-end': 'end',
- 'flex-start': 'start'
-});
-
-module.exports = AlignItems; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/align-self.js b/assets/node_modules/autoprefixer/lib/hacks/align-self.js
deleted file mode 100644
index 30c0652..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/align-self.js
+++ /dev/null
@@ -1,86 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var flexSpec = require('./flex-spec');
-
-var Declaration = require('../declaration');
-
-var AlignSelf =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(AlignSelf, _Declaration);
-
- function AlignSelf() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = AlignSelf.prototype;
-
- _proto.check = function check(decl) {
- return decl.parent && !decl.parent.some(function (i) {
- return i.prop && i.prop.startsWith('grid-');
- });
- }
- /**
- * Change property name for 2012 specs
- */
- ;
-
- _proto.prefixed = function prefixed(prop, prefix) {
- var spec;
-
- var _flexSpec = flexSpec(prefix);
-
- spec = _flexSpec[0];
- prefix = _flexSpec[1];
-
- if (spec === 2012) {
- return prefix + 'flex-item-align';
- }
-
- return _Declaration.prototype.prefixed.call(this, prop, prefix);
- }
- /**
- * Return property name by final spec
- */
- ;
-
- _proto.normalize = function normalize() {
- return 'align-self';
- }
- /**
- * Change value for 2012 spec and ignore prefix for 2009
- */
- ;
-
- _proto.set = function set(decl, prefix) {
- var spec = flexSpec(prefix)[0];
-
- if (spec === 2012) {
- decl.value = AlignSelf.oldValues[decl.value] || decl.value;
- return _Declaration.prototype.set.call(this, decl, prefix);
- }
-
- if (spec === 'final') {
- return _Declaration.prototype.set.call(this, decl, prefix);
- }
-
- return undefined;
- };
-
- return AlignSelf;
-}(Declaration);
-
-_defineProperty(AlignSelf, "names", ['align-self', 'flex-item-align']);
-
-_defineProperty(AlignSelf, "oldValues", {
- 'flex-end': 'end',
- 'flex-start': 'start'
-});
-
-module.exports = AlignSelf; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/animation.js b/assets/node_modules/autoprefixer/lib/hacks/animation.js
deleted file mode 100644
index 55a03d9..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/animation.js
+++ /dev/null
@@ -1,37 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var Animation =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(Animation, _Declaration);
-
- function Animation() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = Animation.prototype;
-
- /**
- * Don’t add prefixes for modern values.
- */
- _proto.check = function check(decl) {
- return !decl.value.split(/\s+/).some(function (i) {
- var lower = i.toLowerCase();
- return lower === 'reverse' || lower === 'alternate-reverse';
- });
- };
-
- return Animation;
-}(Declaration);
-
-_defineProperty(Animation, "names", ['animation', 'animation-direction']);
-
-module.exports = Animation; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/appearance.js b/assets/node_modules/autoprefixer/lib/hacks/appearance.js
deleted file mode 100644
index 29424d9..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/appearance.js
+++ /dev/null
@@ -1,41 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var utils = require('../utils');
-
-var Appearance =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(Appearance, _Declaration);
-
- function Appearance(name, prefixes, all) {
- var _this;
-
- _this = _Declaration.call(this, name, prefixes, all) || this;
-
- if (_this.prefixes) {
- _this.prefixes = utils.uniq(_this.prefixes.map(function (i) {
- if (i === '-ms-') {
- return '-webkit-';
- }
-
- return i;
- }));
- }
-
- return _this;
- }
-
- return Appearance;
-}(Declaration);
-
-_defineProperty(Appearance, "names", ['appearance']);
-
-module.exports = Appearance; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/backdrop-filter.js b/assets/node_modules/autoprefixer/lib/hacks/backdrop-filter.js
deleted file mode 100644
index 5b97e82..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/backdrop-filter.js
+++ /dev/null
@@ -1,37 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var utils = require('../utils');
-
-var BackdropFilter =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(BackdropFilter, _Declaration);
-
- function BackdropFilter(name, prefixes, all) {
- var _this;
-
- _this = _Declaration.call(this, name, prefixes, all) || this;
-
- if (_this.prefixes) {
- _this.prefixes = utils.uniq(_this.prefixes.map(function (i) {
- return i === '-ms-' ? '-webkit-' : i;
- }));
- }
-
- return _this;
- }
-
- return BackdropFilter;
-}(Declaration);
-
-_defineProperty(BackdropFilter, "names", ['backdrop-filter']);
-
-module.exports = BackdropFilter; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/background-clip.js b/assets/node_modules/autoprefixer/lib/hacks/background-clip.js
deleted file mode 100644
index 58fcbb6..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/background-clip.js
+++ /dev/null
@@ -1,43 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var utils = require('../utils');
-
-var BackgroundClip =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(BackgroundClip, _Declaration);
-
- function BackgroundClip(name, prefixes, all) {
- var _this;
-
- _this = _Declaration.call(this, name, prefixes, all) || this;
-
- if (_this.prefixes) {
- _this.prefixes = utils.uniq(_this.prefixes.map(function (i) {
- return i === '-ms-' ? '-webkit-' : i;
- }));
- }
-
- return _this;
- }
-
- var _proto = BackgroundClip.prototype;
-
- _proto.check = function check(decl) {
- return decl.value.toLowerCase() === 'text';
- };
-
- return BackgroundClip;
-}(Declaration);
-
-_defineProperty(BackgroundClip, "names", ['background-clip']);
-
-module.exports = BackgroundClip; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/background-size.js b/assets/node_modules/autoprefixer/lib/hacks/background-size.js
deleted file mode 100644
index 01e788d..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/background-size.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var BackgroundSize =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(BackgroundSize, _Declaration);
-
- function BackgroundSize() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = BackgroundSize.prototype;
-
- /**
- * Duplication parameter for -webkit- browsers
- */
- _proto.set = function set(decl, prefix) {
- var value = decl.value.toLowerCase();
-
- if (prefix === '-webkit-' && !value.includes(' ') && value !== 'contain' && value !== 'cover') {
- decl.value = decl.value + ' ' + decl.value;
- }
-
- return _Declaration.prototype.set.call(this, decl, prefix);
- };
-
- return BackgroundSize;
-}(Declaration);
-
-_defineProperty(BackgroundSize, "names", ['background-size']);
-
-module.exports = BackgroundSize; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/block-logical.js b/assets/node_modules/autoprefixer/lib/hacks/block-logical.js
deleted file mode 100644
index a3f12ba..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/block-logical.js
+++ /dev/null
@@ -1,50 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var BlockLogical =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(BlockLogical, _Declaration);
-
- function BlockLogical() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = BlockLogical.prototype;
-
- /**
- * Use old syntax for -moz- and -webkit-
- */
- _proto.prefixed = function prefixed(prop, prefix) {
- if (prop.includes('-start')) {
- return prefix + prop.replace('-block-start', '-before');
- }
-
- return prefix + prop.replace('-block-end', '-after');
- }
- /**
- * Return property name by spec
- */
- ;
-
- _proto.normalize = function normalize(prop) {
- if (prop.includes('-before')) {
- return prop.replace('-before', '-block-start');
- }
-
- return prop.replace('-after', '-block-end');
- };
-
- return BlockLogical;
-}(Declaration);
-
-_defineProperty(BlockLogical, "names", ['border-block-start', 'border-block-end', 'margin-block-start', 'margin-block-end', 'padding-block-start', 'padding-block-end', 'border-before', 'border-after', 'margin-before', 'margin-after', 'padding-before', 'padding-after']);
-
-module.exports = BlockLogical; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/border-image.js b/assets/node_modules/autoprefixer/lib/hacks/border-image.js
deleted file mode 100644
index aebd64a..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/border-image.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var BorderImage =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(BorderImage, _Declaration);
-
- function BorderImage() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = BorderImage.prototype;
-
- /**
- * Remove fill parameter for prefixed declarations
- */
- _proto.set = function set(decl, prefix) {
- decl.value = decl.value.replace(/\s+fill(\s)/, '$1');
- return _Declaration.prototype.set.call(this, decl, prefix);
- };
-
- return BorderImage;
-}(Declaration);
-
-_defineProperty(BorderImage, "names", ['border-image']);
-
-module.exports = BorderImage; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/border-radius.js b/assets/node_modules/autoprefixer/lib/hacks/border-radius.js
deleted file mode 100644
index 3bd42fc..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/border-radius.js
+++ /dev/null
@@ -1,64 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var BorderRadius =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(BorderRadius, _Declaration);
-
- function BorderRadius() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = BorderRadius.prototype;
-
- /**
- * Change syntax, when add Mozilla prefix
- */
- _proto.prefixed = function prefixed(prop, prefix) {
- if (prefix === '-moz-') {
- return prefix + (BorderRadius.toMozilla[prop] || prop);
- }
-
- return _Declaration.prototype.prefixed.call(this, prop, prefix);
- }
- /**
- * Return unprefixed version of property
- */
- ;
-
- _proto.normalize = function normalize(prop) {
- return BorderRadius.toNormal[prop] || prop;
- };
-
- return BorderRadius;
-}(Declaration);
-
-_defineProperty(BorderRadius, "names", ['border-radius']);
-
-_defineProperty(BorderRadius, "toMozilla", {});
-
-_defineProperty(BorderRadius, "toNormal", {});
-
-for (var _i = 0, _arr = ['top', 'bottom']; _i < _arr.length; _i++) {
- var ver = _arr[_i];
-
- for (var _i2 = 0, _arr2 = ['left', 'right']; _i2 < _arr2.length; _i2++) {
- var hor = _arr2[_i2];
- var normal = "border-" + ver + "-" + hor + "-radius";
- var mozilla = "border-radius-" + ver + hor;
- BorderRadius.names.push(normal);
- BorderRadius.names.push(mozilla);
- BorderRadius.toMozilla[normal] = mozilla;
- BorderRadius.toNormal[mozilla] = normal;
- }
-}
-
-module.exports = BorderRadius; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/break-props.js b/assets/node_modules/autoprefixer/lib/hacks/break-props.js
deleted file mode 100644
index 3112d63..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/break-props.js
+++ /dev/null
@@ -1,78 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var BreakProps =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(BreakProps, _Declaration);
-
- function BreakProps() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = BreakProps.prototype;
-
- /**
- * Change name for -webkit- and -moz- prefix
- */
- _proto.prefixed = function prefixed(prop, prefix) {
- return prefix + "column-" + prop;
- }
- /**
- * Return property name by final spec
- */
- ;
-
- _proto.normalize = function normalize(prop) {
- if (prop.includes('inside')) {
- return 'break-inside';
- }
-
- if (prop.includes('before')) {
- return 'break-before';
- }
-
- return 'break-after';
- }
- /**
- * Change prefixed value for avoid-column and avoid-page
- */
- ;
-
- _proto.set = function set(decl, prefix) {
- if (decl.prop === 'break-inside' && decl.value === 'avoid-column' || decl.value === 'avoid-page') {
- decl.value = 'avoid';
- }
-
- return _Declaration.prototype.set.call(this, decl, prefix);
- }
- /**
- * Don’t prefix some values
- */
- ;
-
- _proto.insert = function insert(decl, prefix, prefixes) {
- if (decl.prop !== 'break-inside') {
- return _Declaration.prototype.insert.call(this, decl, prefix, prefixes);
- }
-
- if (/region/i.test(decl.value) || /page/i.test(decl.value)) {
- return undefined;
- }
-
- return _Declaration.prototype.insert.call(this, decl, prefix, prefixes);
- };
-
- return BreakProps;
-}(Declaration);
-
-_defineProperty(BreakProps, "names", ['break-inside', 'page-break-inside', 'column-break-inside', 'break-before', 'page-break-before', 'column-break-before', 'break-after', 'page-break-after', 'column-break-after']);
-
-module.exports = BreakProps; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/color-adjust.js b/assets/node_modules/autoprefixer/lib/hacks/color-adjust.js
deleted file mode 100644
index 70f332d..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/color-adjust.js
+++ /dev/null
@@ -1,42 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var ColorAdjust =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(ColorAdjust, _Declaration);
-
- function ColorAdjust() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = ColorAdjust.prototype;
-
- /**
- * Change property name for WebKit-based browsers
- */
- _proto.prefixed = function prefixed(prop, prefix) {
- return prefix + 'print-color-adjust';
- }
- /**
- * Return property name by spec
- */
- ;
-
- _proto.normalize = function normalize() {
- return 'color-adjust';
- };
-
- return ColorAdjust;
-}(Declaration);
-
-_defineProperty(ColorAdjust, "names", ['color-adjust', 'print-color-adjust']);
-
-module.exports = ColorAdjust; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/cross-fade.js b/assets/node_modules/autoprefixer/lib/hacks/cross-fade.js
deleted file mode 100644
index b1f0b6e..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/cross-fade.js
+++ /dev/null
@@ -1,56 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var list = require('postcss').list;
-
-var Value = require('../value');
-
-var CrossFade =
-/*#__PURE__*/
-function (_Value) {
- _inheritsLoose(CrossFade, _Value);
-
- function CrossFade() {
- return _Value.apply(this, arguments) || this;
- }
-
- var _proto = CrossFade.prototype;
-
- _proto.replace = function replace(string, prefix) {
- var _this = this;
-
- return list.space(string).map(function (value) {
- if (value.slice(0, +_this.name.length + 1) !== _this.name + '(') {
- return value;
- }
-
- var close = value.lastIndexOf(')');
- var after = value.slice(close + 1);
- var args = value.slice(_this.name.length + 1, close);
-
- if (prefix === '-webkit-') {
- var match = args.match(/\d*.?\d+%?/);
-
- if (match) {
- args = args.slice(match[0].length).trim();
- args += ", " + match[0];
- } else {
- args += ', 0.5';
- }
- }
-
- return prefix + _this.name + '(' + args + ')' + after;
- }).join(' ');
- };
-
- return CrossFade;
-}(Value);
-
-_defineProperty(CrossFade, "names", ['cross-fade']);
-
-module.exports = CrossFade; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/display-flex.js b/assets/node_modules/autoprefixer/lib/hacks/display-flex.js
deleted file mode 100644
index 1da30b3..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/display-flex.js
+++ /dev/null
@@ -1,96 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var flexSpec = require('./flex-spec');
-
-var OldValue = require('../old-value');
-
-var Value = require('../value');
-
-var DisplayFlex =
-/*#__PURE__*/
-function (_Value) {
- _inheritsLoose(DisplayFlex, _Value);
-
- function DisplayFlex(name, prefixes) {
- var _this;
-
- _this = _Value.call(this, name, prefixes) || this;
-
- if (name === 'display-flex') {
- _this.name = 'flex';
- }
-
- return _this;
- }
- /**
- * Faster check for flex value
- */
-
-
- var _proto = DisplayFlex.prototype;
-
- _proto.check = function check(decl) {
- return decl.prop === 'display' && decl.value === this.name;
- }
- /**
- * Return value by spec
- */
- ;
-
- _proto.prefixed = function prefixed(prefix) {
- var spec, value;
-
- var _flexSpec = flexSpec(prefix);
-
- spec = _flexSpec[0];
- prefix = _flexSpec[1];
-
- if (spec === 2009) {
- if (this.name === 'flex') {
- value = 'box';
- } else {
- value = 'inline-box';
- }
- } else if (spec === 2012) {
- if (this.name === 'flex') {
- value = 'flexbox';
- } else {
- value = 'inline-flexbox';
- }
- } else if (spec === 'final') {
- value = this.name;
- }
-
- return prefix + value;
- }
- /**
- * Add prefix to value depend on flebox spec version
- */
- ;
-
- _proto.replace = function replace(string, prefix) {
- return this.prefixed(prefix);
- }
- /**
- * Change value for old specs
- */
- ;
-
- _proto.old = function old(prefix) {
- var prefixed = this.prefixed(prefix);
- if (!prefixed) return undefined;
- return new OldValue(this.name, prefixed);
- };
-
- return DisplayFlex;
-}(Value);
-
-_defineProperty(DisplayFlex, "names", ['display-flex', 'inline-flex']);
-
-module.exports = DisplayFlex; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/display-grid.js b/assets/node_modules/autoprefixer/lib/hacks/display-grid.js
deleted file mode 100644
index bc63bf8..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/display-grid.js
+++ /dev/null
@@ -1,43 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Value = require('../value');
-
-var DisplayGrid =
-/*#__PURE__*/
-function (_Value) {
- _inheritsLoose(DisplayGrid, _Value);
-
- function DisplayGrid(name, prefixes) {
- var _this;
-
- _this = _Value.call(this, name, prefixes) || this;
-
- if (name === 'display-grid') {
- _this.name = 'grid';
- }
-
- return _this;
- }
- /**
- * Faster check for flex value
- */
-
-
- var _proto = DisplayGrid.prototype;
-
- _proto.check = function check(decl) {
- return decl.prop === 'display' && decl.value === this.name;
- };
-
- return DisplayGrid;
-}(Value);
-
-_defineProperty(DisplayGrid, "names", ['display-grid', 'inline-grid']);
-
-module.exports = DisplayGrid; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/filter-value.js b/assets/node_modules/autoprefixer/lib/hacks/filter-value.js
deleted file mode 100644
index c4c6416..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/filter-value.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Value = require('../value');
-
-var FilterValue =
-/*#__PURE__*/
-function (_Value) {
- _inheritsLoose(FilterValue, _Value);
-
- function FilterValue(name, prefixes) {
- var _this;
-
- _this = _Value.call(this, name, prefixes) || this;
-
- if (name === 'filter-function') {
- _this.name = 'filter';
- }
-
- return _this;
- }
-
- return FilterValue;
-}(Value);
-
-_defineProperty(FilterValue, "names", ['filter', 'filter-function']);
-
-module.exports = FilterValue; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/filter.js b/assets/node_modules/autoprefixer/lib/hacks/filter.js
deleted file mode 100644
index 17c09f5..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/filter.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var Filter =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(Filter, _Declaration);
-
- function Filter() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = Filter.prototype;
-
- /**
- * Check is it Internet Explorer filter
- */
- _proto.check = function check(decl) {
- var v = decl.value;
- return !v.toLowerCase().includes('alpha(') && !v.includes('DXImageTransform.Microsoft') && !v.includes('data:image/svg+xml');
- };
-
- return Filter;
-}(Declaration);
-
-_defineProperty(Filter, "names", ['filter']);
-
-module.exports = Filter; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/flex-basis.js b/assets/node_modules/autoprefixer/lib/hacks/flex-basis.js
deleted file mode 100644
index 351d61d..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/flex-basis.js
+++ /dev/null
@@ -1,74 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var flexSpec = require('./flex-spec');
-
-var Declaration = require('../declaration');
-
-var FlexBasis =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(FlexBasis, _Declaration);
-
- function FlexBasis() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = FlexBasis.prototype;
-
- /**
- * Return property name by final spec
- */
- _proto.normalize = function normalize() {
- return 'flex-basis';
- }
- /**
- * Return flex property for 2012 spec
- */
- ;
-
- _proto.prefixed = function prefixed(prop, prefix) {
- var spec;
-
- var _flexSpec = flexSpec(prefix);
-
- spec = _flexSpec[0];
- prefix = _flexSpec[1];
-
- if (spec === 2012) {
- return prefix + 'flex-preferred-size';
- }
-
- return _Declaration.prototype.prefixed.call(this, prop, prefix);
- }
- /**
- * Ignore 2009 spec and use flex property for 2012
- */
- ;
-
- _proto.set = function set(decl, prefix) {
- var spec;
-
- var _flexSpec2 = flexSpec(prefix);
-
- spec = _flexSpec2[0];
- prefix = _flexSpec2[1];
-
- if (spec === 2012 || spec === 'final') {
- return _Declaration.prototype.set.call(this, decl, prefix);
- }
-
- return undefined;
- };
-
- return FlexBasis;
-}(Declaration);
-
-_defineProperty(FlexBasis, "names", ['flex-basis', 'flex-preferred-size']);
-
-module.exports = FlexBasis; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/flex-direction.js b/assets/node_modules/autoprefixer/lib/hacks/flex-direction.js
deleted file mode 100644
index 8503ed1..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/flex-direction.js
+++ /dev/null
@@ -1,110 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var flexSpec = require('./flex-spec');
-
-var Declaration = require('../declaration');
-
-var FlexDirection =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(FlexDirection, _Declaration);
-
- function FlexDirection() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = FlexDirection.prototype;
-
- /**
- * Return property name by final spec
- */
- _proto.normalize = function normalize() {
- return 'flex-direction';
- }
- /**
- * Use two properties for 2009 spec
- */
- ;
-
- _proto.insert = function insert(decl, prefix, prefixes) {
- var spec;
-
- var _flexSpec = flexSpec(prefix);
-
- spec = _flexSpec[0];
- prefix = _flexSpec[1];
-
- if (spec !== 2009) {
- return _Declaration.prototype.insert.call(this, decl, prefix, prefixes);
- }
-
- var already = decl.parent.some(function (i) {
- return i.prop === prefix + 'box-orient' || i.prop === prefix + 'box-direction';
- });
-
- if (already) {
- return undefined;
- }
-
- var v = decl.value;
- var orient, dir;
-
- if (v === 'inherit' || v === 'initial' || v === 'unset') {
- orient = v;
- dir = v;
- } else {
- orient = v.includes('row') ? 'horizontal' : 'vertical';
- dir = v.includes('reverse') ? 'reverse' : 'normal';
- }
-
- var cloned = this.clone(decl);
- cloned.prop = prefix + 'box-orient';
- cloned.value = orient;
-
- if (this.needCascade(decl)) {
- cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
- }
-
- decl.parent.insertBefore(decl, cloned);
- cloned = this.clone(decl);
- cloned.prop = prefix + 'box-direction';
- cloned.value = dir;
-
- if (this.needCascade(decl)) {
- cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
- }
-
- return decl.parent.insertBefore(decl, cloned);
- }
- /**
- * Clean two properties for 2009 spec
- */
- ;
-
- _proto.old = function old(prop, prefix) {
- var spec;
-
- var _flexSpec2 = flexSpec(prefix);
-
- spec = _flexSpec2[0];
- prefix = _flexSpec2[1];
-
- if (spec === 2009) {
- return [prefix + 'box-orient', prefix + 'box-direction'];
- } else {
- return _Declaration.prototype.old.call(this, prop, prefix);
- }
- };
-
- return FlexDirection;
-}(Declaration);
-
-_defineProperty(FlexDirection, "names", ['flex-direction', 'box-direction', 'box-orient']);
-
-module.exports = FlexDirection; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/flex-flow.js b/assets/node_modules/autoprefixer/lib/hacks/flex-flow.js
deleted file mode 100644
index 970bc31..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/flex-flow.js
+++ /dev/null
@@ -1,83 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var flexSpec = require('./flex-spec');
-
-var Declaration = require('../declaration');
-
-var FlexFlow =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(FlexFlow, _Declaration);
-
- function FlexFlow() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = FlexFlow.prototype;
-
- /**
- * Use two properties for 2009 spec
- */
- _proto.insert = function insert(decl, prefix, prefixes) {
- var spec;
-
- var _flexSpec = flexSpec(prefix);
-
- spec = _flexSpec[0];
- prefix = _flexSpec[1];
-
- if (spec !== 2009) {
- return _Declaration.prototype.insert.call(this, decl, prefix, prefixes);
- }
-
- var values = decl.value.split(/\s+/).filter(function (i) {
- return i !== 'wrap' && i !== 'nowrap' && 'wrap-reverse';
- });
-
- if (values.length === 0) {
- return undefined;
- }
-
- var already = decl.parent.some(function (i) {
- return i.prop === prefix + 'box-orient' || i.prop === prefix + 'box-direction';
- });
-
- if (already) {
- return undefined;
- }
-
- var value = values[0];
- var orient = value.includes('row') ? 'horizontal' : 'vertical';
- var dir = value.includes('reverse') ? 'reverse' : 'normal';
- var cloned = this.clone(decl);
- cloned.prop = prefix + 'box-orient';
- cloned.value = orient;
-
- if (this.needCascade(decl)) {
- cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
- }
-
- decl.parent.insertBefore(decl, cloned);
- cloned = this.clone(decl);
- cloned.prop = prefix + 'box-direction';
- cloned.value = dir;
-
- if (this.needCascade(decl)) {
- cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
- }
-
- return decl.parent.insertBefore(decl, cloned);
- };
-
- return FlexFlow;
-}(Declaration);
-
-_defineProperty(FlexFlow, "names", ['flex-flow', 'box-direction', 'box-orient']);
-
-module.exports = FlexFlow; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/flex-grow.js b/assets/node_modules/autoprefixer/lib/hacks/flex-grow.js
deleted file mode 100644
index 09278a2..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/flex-grow.js
+++ /dev/null
@@ -1,59 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var flexSpec = require('./flex-spec');
-
-var Declaration = require('../declaration');
-
-var Flex =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(Flex, _Declaration);
-
- function Flex() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = Flex.prototype;
-
- /**
- * Return property name by final spec
- */
- _proto.normalize = function normalize() {
- return 'flex';
- }
- /**
- * Return flex property for 2009 and 2012 specs
- */
- ;
-
- _proto.prefixed = function prefixed(prop, prefix) {
- var spec;
-
- var _flexSpec = flexSpec(prefix);
-
- spec = _flexSpec[0];
- prefix = _flexSpec[1];
-
- if (spec === 2009) {
- return prefix + 'box-flex';
- }
-
- if (spec === 2012) {
- return prefix + 'flex-positive';
- }
-
- return _Declaration.prototype.prefixed.call(this, prop, prefix);
- };
-
- return Flex;
-}(Declaration);
-
-_defineProperty(Flex, "names", ['flex-grow', 'flex-positive']);
-
-module.exports = Flex; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/flex-shrink.js b/assets/node_modules/autoprefixer/lib/hacks/flex-shrink.js
deleted file mode 100644
index cab835c..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/flex-shrink.js
+++ /dev/null
@@ -1,74 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var flexSpec = require('./flex-spec');
-
-var Declaration = require('../declaration');
-
-var FlexShrink =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(FlexShrink, _Declaration);
-
- function FlexShrink() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = FlexShrink.prototype;
-
- /**
- * Return property name by final spec
- */
- _proto.normalize = function normalize() {
- return 'flex-shrink';
- }
- /**
- * Return flex property for 2012 spec
- */
- ;
-
- _proto.prefixed = function prefixed(prop, prefix) {
- var spec;
-
- var _flexSpec = flexSpec(prefix);
-
- spec = _flexSpec[0];
- prefix = _flexSpec[1];
-
- if (spec === 2012) {
- return prefix + 'flex-negative';
- }
-
- return _Declaration.prototype.prefixed.call(this, prop, prefix);
- }
- /**
- * Ignore 2009 spec and use flex property for 2012
- */
- ;
-
- _proto.set = function set(decl, prefix) {
- var spec;
-
- var _flexSpec2 = flexSpec(prefix);
-
- spec = _flexSpec2[0];
- prefix = _flexSpec2[1];
-
- if (spec === 2012 || spec === 'final') {
- return _Declaration.prototype.set.call(this, decl, prefix);
- }
-
- return undefined;
- };
-
- return FlexShrink;
-}(Declaration);
-
-_defineProperty(FlexShrink, "names", ['flex-shrink', 'flex-negative']);
-
-module.exports = FlexShrink; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/flex-spec.js b/assets/node_modules/autoprefixer/lib/hacks/flex-spec.js
deleted file mode 100644
index d73027a..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/flex-spec.js
+++ /dev/null
@@ -1,22 +0,0 @@
-"use strict";
-
-/**
- * Return flexbox spec versions by prefix
- */
-module.exports = function (prefix) {
- var spec;
-
- if (prefix === '-webkit- 2009' || prefix === '-moz-') {
- spec = 2009;
- } else if (prefix === '-ms-') {
- spec = 2012;
- } else if (prefix === '-webkit-') {
- spec = 'final';
- }
-
- if (prefix === '-webkit- 2009') {
- prefix = '-webkit-';
- }
-
- return [spec, prefix];
-}; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/flex-wrap.js b/assets/node_modules/autoprefixer/lib/hacks/flex-wrap.js
deleted file mode 100644
index 841eb62..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/flex-wrap.js
+++ /dev/null
@@ -1,42 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var flexSpec = require('./flex-spec');
-
-var Declaration = require('../declaration');
-
-var FlexWrap =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(FlexWrap, _Declaration);
-
- function FlexWrap() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = FlexWrap.prototype;
-
- /**
- * Don't add prefix for 2009 spec
- */
- _proto.set = function set(decl, prefix) {
- var spec = flexSpec(prefix)[0];
-
- if (spec !== 2009) {
- return _Declaration.prototype.set.call(this, decl, prefix);
- }
-
- return undefined;
- };
-
- return FlexWrap;
-}(Declaration);
-
-_defineProperty(FlexWrap, "names", ['flex-wrap']);
-
-module.exports = FlexWrap; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/flex.js b/assets/node_modules/autoprefixer/lib/hacks/flex.js
deleted file mode 100644
index 44c9e1e..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/flex.js
+++ /dev/null
@@ -1,87 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var list = require('postcss').list;
-
-var flexSpec = require('./flex-spec');
-
-var Declaration = require('../declaration');
-
-var Flex =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(Flex, _Declaration);
-
- function Flex() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = Flex.prototype;
-
- /**
- * Change property name for 2009 spec
- */
- _proto.prefixed = function prefixed(prop, prefix) {
- var spec;
-
- var _flexSpec = flexSpec(prefix);
-
- spec = _flexSpec[0];
- prefix = _flexSpec[1];
-
- if (spec === 2009) {
- return prefix + 'box-flex';
- }
-
- return _Declaration.prototype.prefixed.call(this, prop, prefix);
- }
- /**
- * Return property name by final spec
- */
- ;
-
- _proto.normalize = function normalize() {
- return 'flex';
- }
- /**
- * Spec 2009 supports only first argument
- * Spec 2012 disallows unitless basis
- */
- ;
-
- _proto.set = function set(decl, prefix) {
- var spec = flexSpec(prefix)[0];
-
- if (spec === 2009) {
- decl.value = list.space(decl.value)[0];
- decl.value = Flex.oldValues[decl.value] || decl.value;
- return _Declaration.prototype.set.call(this, decl, prefix);
- }
-
- if (spec === 2012) {
- var components = list.space(decl.value);
-
- if (components.length === 3 && components[2] === '0') {
- decl.value = components.slice(0, 2).concat('0px').join(' ');
- }
- }
-
- return _Declaration.prototype.set.call(this, decl, prefix);
- };
-
- return Flex;
-}(Declaration);
-
-_defineProperty(Flex, "names", ['flex', 'box-flex']);
-
-_defineProperty(Flex, "oldValues", {
- auto: '1',
- none: '0'
-});
-
-module.exports = Flex; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/fullscreen.js b/assets/node_modules/autoprefixer/lib/hacks/fullscreen.js
deleted file mode 100644
index fae1849..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/fullscreen.js
+++ /dev/null
@@ -1,42 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Selector = require('../selector');
-
-var Fullscreen =
-/*#__PURE__*/
-function (_Selector) {
- _inheritsLoose(Fullscreen, _Selector);
-
- function Fullscreen() {
- return _Selector.apply(this, arguments) || this;
- }
-
- var _proto = Fullscreen.prototype;
-
- /**
- * Return different selectors depend on prefix
- */
- _proto.prefixed = function prefixed(prefix) {
- if (prefix === '-webkit-') {
- return ':-webkit-full-screen';
- }
-
- if (prefix === '-moz-') {
- return ':-moz-full-screen';
- }
-
- return ":" + prefix + "fullscreen";
- };
-
- return Fullscreen;
-}(Selector);
-
-_defineProperty(Fullscreen, "names", [':fullscreen']);
-
-module.exports = Fullscreen; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/gradient.js b/assets/node_modules/autoprefixer/lib/hacks/gradient.js
deleted file mode 100644
index 3c1712a..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/gradient.js
+++ /dev/null
@@ -1,581 +0,0 @@
-"use strict";
-
-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; }
-
-function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var parser = require('postcss-value-parser');
-
-var range = require('normalize-range');
-
-var OldValue = require('../old-value');
-
-var Value = require('../value');
-
-var utils = require('../utils');
-
-var IS_DIRECTION = /top|left|right|bottom/gi;
-
-var Gradient =
-/*#__PURE__*/
-function (_Value) {
- _inheritsLoose(Gradient, _Value);
-
- function Gradient() {
- var _this;
-
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
-
- _this = _Value.call.apply(_Value, [this].concat(args)) || this;
-
- _defineProperty(_assertThisInitialized(_this), "directions", {
- top: 'bottom',
- left: 'right',
- bottom: 'top',
- right: 'left'
- });
-
- _defineProperty(_assertThisInitialized(_this), "oldDirections", {
- 'top': 'left bottom, left top',
- 'left': 'right top, left top',
- 'bottom': 'left top, left bottom',
- 'right': 'left top, right top',
- 'top right': 'left bottom, right top',
- 'top left': 'right bottom, left top',
- 'right top': 'left bottom, right top',
- 'right bottom': 'left top, right bottom',
- 'bottom right': 'left top, right bottom',
- 'bottom left': 'right top, left bottom',
- 'left top': 'right bottom, left top',
- 'left bottom': 'right top, left bottom'
- });
-
- return _this;
- }
-
- var _proto = Gradient.prototype;
-
- /**
- * Change degrees for webkit prefix
- */
- _proto.replace = function replace(string, prefix) {
- var ast = parser(string);
-
- for (var _iterator = ast.nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var node = _ref;
-
- if (node.type === 'function' && node.value === this.name) {
- node.nodes = this.newDirection(node.nodes);
- node.nodes = this.normalize(node.nodes);
-
- if (prefix === '-webkit- old') {
- var changes = this.oldWebkit(node);
-
- if (!changes) {
- return false;
- }
- } else {
- node.nodes = this.convertDirection(node.nodes);
- node.value = prefix + node.value;
- }
- }
- }
-
- return ast.toString();
- }
- /**
- * Replace first token
- */
- ;
-
- _proto.replaceFirst = function replaceFirst(params) {
- for (var _len2 = arguments.length, words = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
- words[_key2 - 1] = arguments[_key2];
- }
-
- var prefix = words.map(function (i) {
- if (i === ' ') {
- return {
- type: 'space',
- value: i
- };
- }
-
- return {
- type: 'word',
- value: i
- };
- });
- return prefix.concat(params.slice(1));
- }
- /**
- * Convert angle unit to deg
- */
- ;
-
- _proto.normalizeUnit = function normalizeUnit(str, full) {
- var num = parseFloat(str);
- var deg = num / full * 360;
- return deg + "deg";
- }
- /**
- * Normalize angle
- */
- ;
-
- _proto.normalize = function normalize(nodes) {
- if (!nodes[0]) return nodes;
-
- if (/-?\d+(.\d+)?grad/.test(nodes[0].value)) {
- nodes[0].value = this.normalizeUnit(nodes[0].value, 400);
- } else if (/-?\d+(.\d+)?rad/.test(nodes[0].value)) {
- nodes[0].value = this.normalizeUnit(nodes[0].value, 2 * Math.PI);
- } else if (/-?\d+(.\d+)?turn/.test(nodes[0].value)) {
- nodes[0].value = this.normalizeUnit(nodes[0].value, 1);
- } else if (nodes[0].value.includes('deg')) {
- var num = parseFloat(nodes[0].value);
- num = range.wrap(0, 360, num);
- nodes[0].value = num + "deg";
- }
-
- if (nodes[0].value === '0deg') {
- nodes = this.replaceFirst(nodes, 'to', ' ', 'top');
- } else if (nodes[0].value === '90deg') {
- nodes = this.replaceFirst(nodes, 'to', ' ', 'right');
- } else if (nodes[0].value === '180deg') {
- nodes = this.replaceFirst(nodes, 'to', ' ', 'bottom');
- } else if (nodes[0].value === '270deg') {
- nodes = this.replaceFirst(nodes, 'to', ' ', 'left');
- }
-
- return nodes;
- }
- /**
- * Replace old direction to new
- */
- ;
-
- _proto.newDirection = function newDirection(params) {
- if (params[0].value === 'to') {
- return params;
- }
-
- IS_DIRECTION.lastIndex = 0; // reset search index of global regexp
-
- if (!IS_DIRECTION.test(params[0].value)) {
- return params;
- }
-
- params.unshift({
- type: 'word',
- value: 'to'
- }, {
- type: 'space',
- value: ' '
- });
-
- for (var i = 2; i < params.length; i++) {
- if (params[i].type === 'div') {
- break;
- }
-
- if (params[i].type === 'word') {
- params[i].value = this.revertDirection(params[i].value);
- }
- }
-
- return params;
- }
- /**
- * Look for at word
- */
- ;
-
- _proto.isRadial = function isRadial(params) {
- var state = 'before';
-
- for (var _iterator2 = params, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
- var _ref2;
-
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- _ref2 = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- _ref2 = _i2.value;
- }
-
- var param = _ref2;
-
- if (state === 'before' && param.type === 'space') {
- state = 'at';
- } else if (state === 'at' && param.value === 'at') {
- state = 'after';
- } else if (state === 'after' && param.type === 'space') {
- return true;
- } else if (param.type === 'div') {
- break;
- } else {
- state = 'before';
- }
- }
-
- return false;
- }
- /**
- * Change new direction to old
- */
- ;
-
- _proto.convertDirection = function convertDirection(params) {
- if (params.length > 0) {
- if (params[0].value === 'to') {
- this.fixDirection(params);
- } else if (params[0].value.includes('deg')) {
- this.fixAngle(params);
- } else if (this.isRadial(params)) {
- this.fixRadial(params);
- }
- }
-
- return params;
- }
- /**
- * Replace `to top left` to `bottom right`
- */
- ;
-
- _proto.fixDirection = function fixDirection(params) {
- params.splice(0, 2);
-
- for (var _iterator3 = params, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
- var _ref3;
-
- if (_isArray3) {
- if (_i3 >= _iterator3.length) break;
- _ref3 = _iterator3[_i3++];
- } else {
- _i3 = _iterator3.next();
- if (_i3.done) break;
- _ref3 = _i3.value;
- }
-
- var param = _ref3;
-
- if (param.type === 'div') {
- break;
- }
-
- if (param.type === 'word') {
- param.value = this.revertDirection(param.value);
- }
- }
- }
- /**
- * Add 90 degrees
- */
- ;
-
- _proto.fixAngle = function fixAngle(params) {
- var first = params[0].value;
- first = parseFloat(first);
- first = Math.abs(450 - first) % 360;
- first = this.roundFloat(first, 3);
- params[0].value = first + "deg";
- }
- /**
- * Fix radial direction syntax
- */
- ;
-
- _proto.fixRadial = function fixRadial(params) {
- var first = [];
- var second = [];
- var a, b, c, i, next;
-
- for (i = 0; i < params.length - 2; i++) {
- a = params[i];
- b = params[i + 1];
- c = params[i + 2];
-
- if (a.type === 'space' && b.value === 'at' && c.type === 'space') {
- next = i + 3;
- break;
- } else {
- first.push(a);
- }
- }
-
- var div;
-
- for (i = next; i < params.length; i++) {
- if (params[i].type === 'div') {
- div = params[i];
- break;
- } else {
- second.push(params[i]);
- }
- }
-
- params.splice.apply(params, [0, i].concat(second, [div], first));
- };
-
- _proto.revertDirection = function revertDirection(word) {
- return this.directions[word.toLowerCase()] || word;
- }
- /**
- * Round float and save digits under dot
- */
- ;
-
- _proto.roundFloat = function roundFloat(_float, digits) {
- return parseFloat(_float.toFixed(digits));
- }
- /**
- * Convert to old webkit syntax
- */
- ;
-
- _proto.oldWebkit = function oldWebkit(node) {
- var nodes = node.nodes;
- var string = parser.stringify(node.nodes);
-
- if (this.name !== 'linear-gradient') {
- return false;
- }
-
- if (nodes[0] && nodes[0].value.includes('deg')) {
- return false;
- }
-
- if (string.includes('px') || string.includes('-corner') || string.includes('-side')) {
- return false;
- }
-
- var params = [[]];
-
- for (var _iterator4 = nodes, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
- var _ref4;
-
- if (_isArray4) {
- if (_i4 >= _iterator4.length) break;
- _ref4 = _iterator4[_i4++];
- } else {
- _i4 = _iterator4.next();
- if (_i4.done) break;
- _ref4 = _i4.value;
- }
-
- var i = _ref4;
- params[params.length - 1].push(i);
-
- if (i.type === 'div' && i.value === ',') {
- params.push([]);
- }
- }
-
- this.oldDirection(params);
- this.colorStops(params);
- node.nodes = [];
-
- for (var _i5 = 0, _params = params; _i5 < _params.length; _i5++) {
- var param = _params[_i5];
- node.nodes = node.nodes.concat(param);
- }
-
- node.nodes.unshift({
- type: 'word',
- value: 'linear'
- }, this.cloneDiv(node.nodes));
- node.value = '-webkit-gradient';
- return true;
- }
- /**
- * Change direction syntax to old webkit
- */
- ;
-
- _proto.oldDirection = function oldDirection(params) {
- var div = this.cloneDiv(params[0]);
-
- if (params[0][0].value !== 'to') {
- return params.unshift([{
- type: 'word',
- value: this.oldDirections.bottom
- }, div]);
- } else {
- var words = [];
-
- for (var _iterator5 = params[0].slice(2), _isArray5 = Array.isArray(_iterator5), _i6 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
- var _ref5;
-
- if (_isArray5) {
- if (_i6 >= _iterator5.length) break;
- _ref5 = _iterator5[_i6++];
- } else {
- _i6 = _iterator5.next();
- if (_i6.done) break;
- _ref5 = _i6.value;
- }
-
- var node = _ref5;
-
- if (node.type === 'word') {
- words.push(node.value.toLowerCase());
- }
- }
-
- words = words.join(' ');
- var old = this.oldDirections[words] || words;
- params[0] = [{
- type: 'word',
- value: old
- }, div];
- return params[0];
- }
- }
- /**
- * Get div token from exists parameters
- */
- ;
-
- _proto.cloneDiv = function cloneDiv(params) {
- for (var _iterator6 = params, _isArray6 = Array.isArray(_iterator6), _i7 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
- var _ref6;
-
- if (_isArray6) {
- if (_i7 >= _iterator6.length) break;
- _ref6 = _iterator6[_i7++];
- } else {
- _i7 = _iterator6.next();
- if (_i7.done) break;
- _ref6 = _i7.value;
- }
-
- var i = _ref6;
-
- if (i.type === 'div' && i.value === ',') {
- return i;
- }
- }
-
- return {
- type: 'div',
- value: ',',
- after: ' '
- };
- }
- /**
- * Change colors syntax to old webkit
- */
- ;
-
- _proto.colorStops = function colorStops(params) {
- var result = [];
-
- for (var i = 0; i < params.length; i++) {
- var pos = void 0;
- var param = params[i];
- var item = void 0;
-
- if (i === 0) {
- continue;
- }
-
- var color = parser.stringify(param[0]);
-
- if (param[1] && param[1].type === 'word') {
- pos = param[1].value;
- } else if (param[2] && param[2].type === 'word') {
- pos = param[2].value;
- }
-
- var stop = void 0;
-
- if (i === 1 && (!pos || pos === '0%')) {
- stop = "from(" + color + ")";
- } else if (i === params.length - 1 && (!pos || pos === '100%')) {
- stop = "to(" + color + ")";
- } else if (pos) {
- stop = "color-stop(" + pos + ", " + color + ")";
- } else {
- stop = "color-stop(" + color + ")";
- }
-
- var div = param[param.length - 1];
- params[i] = [{
- type: 'word',
- value: stop
- }];
-
- if (div.type === 'div' && div.value === ',') {
- item = params[i].push(div);
- }
-
- result.push(item);
- }
-
- return result;
- }
- /**
- * Remove old WebKit gradient too
- */
- ;
-
- _proto.old = function old(prefix) {
- if (prefix === '-webkit-') {
- var type = this.name === 'linear-gradient' ? 'linear' : 'radial';
- var string = '-gradient';
- var regexp = utils.regexp("-webkit-(" + type + "-gradient|gradient\\(\\s*" + type + ")", false);
- return new OldValue(this.name, prefix + this.name, string, regexp);
- } else {
- return _Value.prototype.old.call(this, prefix);
- }
- }
- /**
- * Do not add non-webkit prefixes for list-style and object
- */
- ;
-
- _proto.add = function add(decl, prefix) {
- var p = decl.prop;
-
- if (p.includes('mask')) {
- if (prefix === '-webkit-' || prefix === '-webkit- old') {
- return _Value.prototype.add.call(this, decl, prefix);
- }
- } else if (p === 'list-style' || p === 'list-style-image' || p === 'content') {
- if (prefix === '-webkit-' || prefix === '-webkit- old') {
- return _Value.prototype.add.call(this, decl, prefix);
- }
- } else {
- return _Value.prototype.add.call(this, decl, prefix);
- }
-
- return undefined;
- };
-
- return Gradient;
-}(Value);
-
-_defineProperty(Gradient, "names", ['linear-gradient', 'repeating-linear-gradient', 'radial-gradient', 'repeating-radial-gradient']);
-
-module.exports = Gradient; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/grid-area.js b/assets/node_modules/autoprefixer/lib/hacks/grid-area.js
deleted file mode 100644
index 8c1b39c..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/grid-area.js
+++ /dev/null
@@ -1,54 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var utils = require('./grid-utils');
-
-var GridArea =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(GridArea, _Declaration);
-
- function GridArea() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = GridArea.prototype;
-
- /**
- * Translate grid-area to separate -ms- prefixed properties
- */
- _proto.insert = function insert(decl, prefix, prefixes, result) {
- if (prefix !== '-ms-') return _Declaration.prototype.insert.call(this, decl, prefix, prefixes);
- var values = utils.parse(decl);
-
- var _utils$translate = utils.translate(values, 0, 2),
- rowStart = _utils$translate[0],
- rowSpan = _utils$translate[1];
-
- var _utils$translate2 = utils.translate(values, 1, 3),
- columnStart = _utils$translate2[0],
- columnSpan = _utils$translate2[1];
-
- [['grid-row', rowStart], ['grid-row-span', rowSpan], ['grid-column', columnStart], ['grid-column-span', columnSpan]].forEach(function (_ref) {
- var prop = _ref[0],
- value = _ref[1];
- utils.insertDecl(decl, prop, value);
- });
- utils.warnTemplateSelectorNotFound(decl, result);
- utils.warnIfGridRowColumnExists(decl, result);
- return undefined;
- };
-
- return GridArea;
-}(Declaration);
-
-_defineProperty(GridArea, "names", ['grid-area']);
-
-module.exports = GridArea; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/grid-column-align.js b/assets/node_modules/autoprefixer/lib/hacks/grid-column-align.js
deleted file mode 100644
index 4f5ce23..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/grid-column-align.js
+++ /dev/null
@@ -1,50 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var GridColumnAlign =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(GridColumnAlign, _Declaration);
-
- function GridColumnAlign() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = GridColumnAlign.prototype;
-
- /**
- * Do not prefix flexbox values
- */
- _proto.check = function check(decl) {
- return !decl.value.includes('flex-') && decl.value !== 'baseline';
- }
- /**
- * Change property name for IE
- */
- ;
-
- _proto.prefixed = function prefixed(prop, prefix) {
- return prefix + 'grid-column-align';
- }
- /**
- * Change IE property back
- */
- ;
-
- _proto.normalize = function normalize() {
- return 'justify-self';
- };
-
- return GridColumnAlign;
-}(Declaration);
-
-_defineProperty(GridColumnAlign, "names", ['grid-column-align']);
-
-module.exports = GridColumnAlign; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/grid-end.js b/assets/node_modules/autoprefixer/lib/hacks/grid-end.js
deleted file mode 100644
index d13c7b8..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/grid-end.js
+++ /dev/null
@@ -1,64 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var GridEnd =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(GridEnd, _Declaration);
-
- function GridEnd() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = GridEnd.prototype;
-
- /**
- * Change repeating syntax for IE
- */
- _proto.insert = function insert(decl, prefix, prefixes, result) {
- if (prefix !== '-ms-') return _Declaration.prototype.insert.call(this, decl, prefix, prefixes);
- var clonedDecl = this.clone(decl);
- var startProp = decl.prop.replace(/end$/, 'start');
- var spanProp = prefix + decl.prop.replace(/end$/, 'span');
-
- if (decl.parent.some(function (i) {
- return i.prop === spanProp;
- })) {
- return undefined;
- }
-
- clonedDecl.prop = spanProp;
-
- if (decl.value.includes('span')) {
- clonedDecl.value = decl.value.replace(/span\s/i, '');
- } else {
- var startDecl;
- decl.parent.walkDecls(startProp, function (d) {
- startDecl = d;
- });
-
- if (startDecl) {
- var value = Number(decl.value) - Number(startDecl.value) + '';
- clonedDecl.value = value;
- } else {
- decl.warn(result, "Can not prefix " + decl.prop + " (" + startProp + " is not found)");
- }
- }
-
- decl.cloneBefore(clonedDecl);
- return undefined;
- };
-
- return GridEnd;
-}(Declaration);
-
-_defineProperty(GridEnd, "names", ['grid-row-end', 'grid-column-end']);
-
-module.exports = GridEnd; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/grid-row-align.js b/assets/node_modules/autoprefixer/lib/hacks/grid-row-align.js
deleted file mode 100644
index b2184d4..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/grid-row-align.js
+++ /dev/null
@@ -1,50 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var GridRowAlign =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(GridRowAlign, _Declaration);
-
- function GridRowAlign() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = GridRowAlign.prototype;
-
- /**
- * Do not prefix flexbox values
- */
- _proto.check = function check(decl) {
- return !decl.value.includes('flex-') && decl.value !== 'baseline';
- }
- /**
- * Change property name for IE
- */
- ;
-
- _proto.prefixed = function prefixed(prop, prefix) {
- return prefix + 'grid-row-align';
- }
- /**
- * Change IE property back
- */
- ;
-
- _proto.normalize = function normalize() {
- return 'align-self';
- };
-
- return GridRowAlign;
-}(Declaration);
-
-_defineProperty(GridRowAlign, "names", ['grid-row-align']);
-
-module.exports = GridRowAlign; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/grid-row-column.js b/assets/node_modules/autoprefixer/lib/hacks/grid-row-column.js
deleted file mode 100644
index 256f9d1..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/grid-row-column.js
+++ /dev/null
@@ -1,54 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var utils = require('./grid-utils');
-
-var GridRowColumn =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(GridRowColumn, _Declaration);
-
- function GridRowColumn() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = GridRowColumn.prototype;
-
- /**
- * Translate grid-row / grid-column to separate -ms- prefixed properties
- */
- _proto.insert = function insert(decl, prefix, prefixes) {
- if (prefix !== '-ms-') return _Declaration.prototype.insert.call(this, decl, prefix, prefixes);
- var values = utils.parse(decl);
-
- var _utils$translate = utils.translate(values, 0, 1),
- start = _utils$translate[0],
- span = _utils$translate[1];
-
- var hasStartValueSpan = values[0] && values[0].includes('span');
-
- if (hasStartValueSpan) {
- span = values[0].join('').replace(/\D/g, '');
- }
-
- [[decl.prop, start], [decl.prop + "-span", span]].forEach(function (_ref) {
- var prop = _ref[0],
- value = _ref[1];
- utils.insertDecl(decl, prop, value);
- });
- return undefined;
- };
-
- return GridRowColumn;
-}(Declaration);
-
-_defineProperty(GridRowColumn, "names", ['grid-row', 'grid-column']);
-
-module.exports = GridRowColumn; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/grid-rows-columns.js b/assets/node_modules/autoprefixer/lib/hacks/grid-rows-columns.js
deleted file mode 100644
index 05b42b0..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/grid-rows-columns.js
+++ /dev/null
@@ -1,151 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var _require = require('./grid-utils'),
- prefixTrackProp = _require.prefixTrackProp,
- prefixTrackValue = _require.prefixTrackValue,
- autoplaceGridItems = _require.autoplaceGridItems,
- getGridGap = _require.getGridGap,
- inheritGridGap = _require.inheritGridGap;
-
-var Processor = require('../processor');
-
-var GridRowsColumns =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(GridRowsColumns, _Declaration);
-
- function GridRowsColumns() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = GridRowsColumns.prototype;
-
- /**
- * Change property name for IE
- */
- _proto.prefixed = function prefixed(prop, prefix) {
- if (prefix === '-ms-') {
- return prefixTrackProp({
- prop: prop,
- prefix: prefix
- });
- }
-
- return _Declaration.prototype.prefixed.call(this, prop, prefix);
- }
- /**
- * Change IE property back
- */
- ;
-
- _proto.normalize = function normalize(prop) {
- return prop.replace(/^grid-(rows|columns)/, 'grid-template-$1');
- };
-
- _proto.insert = function insert(decl, prefix, prefixes, result) {
- if (prefix !== '-ms-') return _Declaration.prototype.insert.call(this, decl, prefix, prefixes);
- var parent = decl.parent,
- prop = decl.prop,
- value = decl.value;
- var isRowProp = prop.includes('rows');
- var isColumnProp = prop.includes('columns');
- var hasGridTemplate = parent.some(function (i) {
- return i.prop === 'grid-template' || i.prop === 'grid-template-areas';
- });
- /**
- * Not to prefix rows declaration if grid-template(-areas) is present
- */
-
- if (hasGridTemplate && isRowProp) {
- return false;
- }
-
- var processor = new Processor({
- options: {}
- });
- var status = processor.gridStatus(parent, result);
- var gap = getGridGap(decl);
- gap = inheritGridGap(decl, gap) || gap;
- var gapValue = isRowProp ? gap.row : gap.column;
-
- if ((status === 'no-autoplace' || status === true) && !hasGridTemplate) {
- gapValue = null;
- }
-
- var prefixValue = prefixTrackValue({
- value: value,
- gap: gapValue
- });
- /**
- * Insert prefixes
- */
-
- decl.cloneBefore({
- prop: prefixTrackProp({
- prop: prop,
- prefix: prefix
- }),
- value: prefixValue
- });
- var autoflow = parent.nodes.find(function (i) {
- return i.prop === 'grid-auto-flow';
- });
- var autoflowValue = 'row';
-
- if (autoflow && !processor.disabled(autoflow, result)) {
- autoflowValue = autoflow.value.trim();
- }
-
- if (status === 'autoplace') {
- /**
- * Show warning if grid-template-rows decl is not found
- */
- var rowDecl = parent.nodes.find(function (i) {
- return i.prop === 'grid-template-rows';
- });
-
- if (!rowDecl && hasGridTemplate) {
- return undefined;
- } else if (!rowDecl && !hasGridTemplate) {
- decl.warn(result, 'Autoplacement does not work without grid-template-rows property');
- return undefined;
- }
- /**
- * Show warning if grid-template-columns decl is not found
- */
-
-
- var columnDecl = parent.nodes.find(function (i) {
- return i.prop === 'grid-template-columns';
- });
-
- if (!columnDecl && !hasGridTemplate) {
- decl.warn(result, 'Autoplacement does not work without grid-template-columns property');
- }
- /**
- * Autoplace grid items
- */
-
-
- if (isColumnProp && !hasGridTemplate) {
- autoplaceGridItems(decl, result, gap, autoflowValue);
- }
- }
-
- return undefined;
- };
-
- return GridRowsColumns;
-}(Declaration);
-
-_defineProperty(GridRowsColumns, "names", ['grid-template-rows', 'grid-template-columns', 'grid-rows', 'grid-columns']);
-
-module.exports = GridRowsColumns; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/grid-start.js b/assets/node_modules/autoprefixer/lib/hacks/grid-start.js
deleted file mode 100644
index a114445..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/grid-start.js
+++ /dev/null
@@ -1,57 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var GridStart =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(GridStart, _Declaration);
-
- function GridStart() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = GridStart.prototype;
-
- /**
- * Do not add prefix for unsupported value in IE
- */
- _proto.check = function check(decl) {
- var value = decl.value;
- return !value.includes('/') || value.includes('span');
- }
- /**
- * Return a final spec property
- */
- ;
-
- _proto.normalize = function normalize(prop) {
- return prop.replace('-start', '');
- }
- /**
- * Change property name for IE
- */
- ;
-
- _proto.prefixed = function prefixed(prop, prefix) {
- var result = _Declaration.prototype.prefixed.call(this, prop, prefix);
-
- if (prefix === '-ms-') {
- result = result.replace('-start', '');
- }
-
- return result;
- };
-
- return GridStart;
-}(Declaration);
-
-_defineProperty(GridStart, "names", ['grid-row-start', 'grid-column-start']);
-
-module.exports = GridStart; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/grid-template-areas.js b/assets/node_modules/autoprefixer/lib/hacks/grid-template-areas.js
deleted file mode 100644
index de132ec..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/grid-template-areas.js
+++ /dev/null
@@ -1,103 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var _require = require('./grid-utils'),
- parseGridAreas = _require.parseGridAreas,
- warnMissedAreas = _require.warnMissedAreas,
- prefixTrackProp = _require.prefixTrackProp,
- prefixTrackValue = _require.prefixTrackValue,
- getGridGap = _require.getGridGap,
- warnGridGap = _require.warnGridGap,
- inheritGridGap = _require.inheritGridGap;
-
-function getGridRows(tpl) {
- return tpl.trim().slice(1, -1).split(/["']\s*["']?/g);
-}
-
-var GridTemplateAreas =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(GridTemplateAreas, _Declaration);
-
- function GridTemplateAreas() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = GridTemplateAreas.prototype;
-
- /**
- * Translate grid-template-areas to separate -ms- prefixed properties
- */
- _proto.insert = function insert(decl, prefix, prefixes, result) {
- if (prefix !== '-ms-') return _Declaration.prototype.insert.call(this, decl, prefix, prefixes);
- var hasColumns = false;
- var hasRows = false;
- var parent = decl.parent;
- var gap = getGridGap(decl);
- gap = inheritGridGap(decl, gap) || gap; // remove already prefixed rows
- // to prevent doubling prefixes
-
- parent.walkDecls(/-ms-grid-rows/, function (i) {
- return i.remove();
- }); // add empty tracks to rows
-
- parent.walkDecls(/grid-template-(rows|columns)/, function (trackDecl) {
- if (trackDecl.prop === 'grid-template-rows') {
- hasRows = true;
- var prop = trackDecl.prop,
- value = trackDecl.value;
- trackDecl.cloneBefore({
- prop: prefixTrackProp({
- prop: prop,
- prefix: prefix
- }),
- value: prefixTrackValue({
- value: value,
- gap: gap.row
- })
- });
- } else {
- hasColumns = true;
- }
- });
- var gridRows = getGridRows(decl.value);
-
- if (hasColumns && !hasRows && gap.row && gridRows.length > 1) {
- decl.cloneBefore({
- prop: '-ms-grid-rows',
- value: prefixTrackValue({
- value: "repeat(" + gridRows.length + ", auto)",
- gap: gap.row
- }),
- raws: {}
- });
- } // warnings
-
-
- warnGridGap({
- gap: gap,
- hasColumns: hasColumns,
- decl: decl,
- result: result
- });
- var areas = parseGridAreas({
- rows: gridRows,
- gap: gap
- });
- warnMissedAreas(areas, decl, result);
- return decl;
- };
-
- return GridTemplateAreas;
-}(Declaration);
-
-_defineProperty(GridTemplateAreas, "names", ['grid-template-areas']);
-
-module.exports = GridTemplateAreas; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/grid-template.js b/assets/node_modules/autoprefixer/lib/hacks/grid-template.js
deleted file mode 100644
index 88ce36b..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/grid-template.js
+++ /dev/null
@@ -1,92 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var _require = require('./grid-utils'),
- parseTemplate = _require.parseTemplate,
- warnMissedAreas = _require.warnMissedAreas,
- getGridGap = _require.getGridGap,
- warnGridGap = _require.warnGridGap,
- inheritGridGap = _require.inheritGridGap;
-
-var GridTemplate =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(GridTemplate, _Declaration);
-
- function GridTemplate() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = GridTemplate.prototype;
-
- /**
- * Translate grid-template to separate -ms- prefixed properties
- */
- _proto.insert = function insert(decl, prefix, prefixes, result) {
- if (prefix !== '-ms-') return _Declaration.prototype.insert.call(this, decl, prefix, prefixes);
-
- if (decl.parent.some(function (i) {
- return i.prop === '-ms-grid-rows';
- })) {
- return undefined;
- }
-
- var gap = getGridGap(decl);
- /**
- * we must insert inherited gap values in some cases:
- * if we are inside media query && if we have no grid-gap value
- */
-
- var inheritedGap = inheritGridGap(decl, gap);
-
- var _parseTemplate = parseTemplate({
- decl: decl,
- gap: inheritedGap || gap
- }),
- rows = _parseTemplate.rows,
- columns = _parseTemplate.columns,
- areas = _parseTemplate.areas;
-
- var hasAreas = Object.keys(areas).length > 0;
- var hasRows = Boolean(rows);
- var hasColumns = Boolean(columns);
- warnGridGap({
- gap: gap,
- hasColumns: hasColumns,
- decl: decl,
- result: result
- });
- warnMissedAreas(areas, decl, result);
-
- if (hasRows && hasColumns || hasAreas) {
- decl.cloneBefore({
- prop: '-ms-grid-rows',
- value: rows,
- raws: {}
- });
- }
-
- if (hasColumns) {
- decl.cloneBefore({
- prop: '-ms-grid-columns',
- value: columns,
- raws: {}
- });
- }
-
- return decl;
- };
-
- return GridTemplate;
-}(Declaration);
-
-_defineProperty(GridTemplate, "names", ['grid-template']);
-
-module.exports = GridTemplate; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/grid-utils.js b/assets/node_modules/autoprefixer/lib/hacks/grid-utils.js
deleted file mode 100644
index abb4cf0..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/grid-utils.js
+++ /dev/null
@@ -1,1150 +0,0 @@
-"use strict";
-
-var parser = require('postcss-value-parser');
-
-var list = require('postcss').list;
-
-var uniq = require('../utils').uniq;
-
-var escapeRegexp = require('../utils').escapeRegexp;
-
-var splitSelector = require('../utils').splitSelector;
-
-function convert(value) {
- if (value && value.length === 2 && value[0] === 'span' && parseInt(value[1], 10) > 0) {
- return [false, parseInt(value[1], 10)];
- }
-
- if (value && value.length === 1 && parseInt(value[0], 10) > 0) {
- return [parseInt(value[0], 10), false];
- }
-
- return [false, false];
-}
-
-function translate(values, startIndex, endIndex) {
- var startValue = values[startIndex];
- var endValue = values[endIndex];
-
- if (!startValue) {
- return [false, false];
- }
-
- var _convert = convert(startValue),
- start = _convert[0],
- spanStart = _convert[1];
-
- var _convert2 = convert(endValue),
- end = _convert2[0],
- spanEnd = _convert2[1];
-
- if (start && !endValue) {
- return [start, false];
- }
-
- if (spanStart && end) {
- return [end - spanStart, spanStart];
- }
-
- if (start && spanEnd) {
- return [start, spanEnd];
- }
-
- if (start && end) {
- return [start, end - start];
- }
-
- return [false, false];
-}
-
-function parse(decl) {
- var node = parser(decl.value);
- var values = [];
- var current = 0;
- values[current] = [];
-
- for (var _iterator = node.nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var i = _ref;
-
- if (i.type === 'div') {
- current += 1;
- values[current] = [];
- } else if (i.type === 'word') {
- values[current].push(i.value);
- }
- }
-
- return values;
-}
-
-function insertDecl(decl, prop, value) {
- if (value && !decl.parent.some(function (i) {
- return i.prop === "-ms-" + prop;
- })) {
- decl.cloneBefore({
- prop: "-ms-" + prop,
- value: value.toString()
- });
- }
-} // Track transforms
-
-
-function prefixTrackProp(_ref2) {
- var prop = _ref2.prop,
- prefix = _ref2.prefix;
- return prefix + prop.replace('template-', '');
-}
-
-function transformRepeat(_ref3, _ref4) {
- var nodes = _ref3.nodes;
- var gap = _ref4.gap;
-
- var _nodes$reduce = nodes.reduce(function (result, node) {
- if (node.type === 'div' && node.value === ',') {
- result.key = 'size';
- } else {
- result[result.key].push(parser.stringify(node));
- }
-
- return result;
- }, {
- key: 'count',
- size: [],
- count: []
- }),
- count = _nodes$reduce.count,
- size = _nodes$reduce.size; // insert gap values
-
-
- if (gap) {
- var _ret = function () {
- size = size.filter(function (i) {
- return i.trim();
- });
- var val = [];
-
- var _loop = function _loop(i) {
- size.forEach(function (item, index) {
- if (index > 0 || i > 1) {
- val.push(gap);
- }
-
- val.push(item);
- });
- };
-
- for (var i = 1; i <= count; i++) {
- _loop(i);
- }
-
- return {
- v: val.join(' ')
- };
- }();
-
- if (typeof _ret === "object") return _ret.v;
- }
-
- return "(" + size.join('') + ")[" + count.join('') + "]";
-}
-
-function prefixTrackValue(_ref5) {
- var value = _ref5.value,
- gap = _ref5.gap;
- var result = parser(value).nodes.reduce(function (nodes, node) {
- if (node.type === 'function' && node.value === 'repeat') {
- return nodes.concat({
- type: 'word',
- value: transformRepeat(node, {
- gap: gap
- })
- });
- }
-
- if (gap && node.type === 'space') {
- return nodes.concat({
- type: 'space',
- value: ' '
- }, {
- type: 'word',
- value: gap
- }, node);
- }
-
- return nodes.concat(node);
- }, []);
- return parser.stringify(result);
-} // Parse grid-template-areas
-
-
-var DOTS = /^\.+$/;
-
-function track(start, end) {
- return {
- start: start,
- end: end,
- span: end - start
- };
-}
-
-function getColumns(line) {
- return line.trim().split(/\s+/g);
-}
-
-function parseGridAreas(_ref6) {
- var rows = _ref6.rows,
- gap = _ref6.gap;
- return rows.reduce(function (areas, line, rowIndex) {
- if (gap.row) rowIndex *= 2;
- if (line.trim() === '') return areas;
- getColumns(line).forEach(function (area, columnIndex) {
- if (DOTS.test(area)) return;
- if (gap.column) columnIndex *= 2;
-
- if (typeof areas[area] === 'undefined') {
- areas[area] = {
- column: track(columnIndex + 1, columnIndex + 2),
- row: track(rowIndex + 1, rowIndex + 2)
- };
- } else {
- var _areas$area = areas[area],
- column = _areas$area.column,
- row = _areas$area.row;
- column.start = Math.min(column.start, columnIndex + 1);
- column.end = Math.max(column.end, columnIndex + 2);
- column.span = column.end - column.start;
- row.start = Math.min(row.start, rowIndex + 1);
- row.end = Math.max(row.end, rowIndex + 2);
- row.span = row.end - row.start;
- }
- });
- return areas;
- }, {});
-} // Parse grid-template
-
-
-function testTrack(node) {
- return node.type === 'word' && /^\[.+]$/.test(node.value);
-}
-
-function verifyRowSize(result) {
- if (result.areas.length > result.rows.length) {
- result.rows.push('auto');
- }
-
- return result;
-}
-
-function parseTemplate(_ref7) {
- var decl = _ref7.decl,
- gap = _ref7.gap;
- var gridTemplate = parser(decl.value).nodes.reduce(function (result, node) {
- var type = node.type,
- value = node.value;
- if (testTrack(node) || type === 'space') return result; // area
-
- if (type === 'string') {
- result = verifyRowSize(result);
- result.areas.push(value);
- } // values and function
-
-
- if (type === 'word' || type === 'function') {
- result[result.key].push(parser.stringify(node));
- } // divider(/)
-
-
- if (type === 'div' && value === '/') {
- result.key = 'columns';
- result = verifyRowSize(result);
- }
-
- return result;
- }, {
- key: 'rows',
- columns: [],
- rows: [],
- areas: []
- });
- return {
- areas: parseGridAreas({
- rows: gridTemplate.areas,
- gap: gap
- }),
- columns: prefixTrackValue({
- value: gridTemplate.columns.join(' '),
- gap: gap.column
- }),
- rows: prefixTrackValue({
- value: gridTemplate.rows.join(' '),
- gap: gap.row
- })
- };
-} // Insert parsed grid areas
-
-/**
- * Get an array of -ms- prefixed props and values
- * @param {Object} [area] area object with column and row data
- * @param {Boolean} [addRowSpan] should we add grid-column-row value?
- * @param {Boolean} [addColumnSpan] should we add grid-column-span value?
- * @return {Array<Object>}
- */
-
-
-function getMSDecls(area, addRowSpan, addColumnSpan) {
- if (addRowSpan === void 0) {
- addRowSpan = false;
- }
-
- if (addColumnSpan === void 0) {
- addColumnSpan = false;
- }
-
- return [].concat({
- prop: '-ms-grid-row',
- value: String(area.row.start)
- }, area.row.span > 1 || addRowSpan ? {
- prop: '-ms-grid-row-span',
- value: String(area.row.span)
- } : [], {
- prop: '-ms-grid-column',
- value: String(area.column.start)
- }, area.column.span > 1 || addColumnSpan ? {
- prop: '-ms-grid-column-span',
- value: String(area.column.span)
- } : []);
-}
-
-function getParentMedia(parent) {
- if (parent.type === 'atrule' && parent.name === 'media') {
- return parent;
- }
-
- if (!parent.parent) {
- return false;
- }
-
- return getParentMedia(parent.parent);
-}
-/**
- * change selectors for rules with duplicate grid-areas.
- * @param {Array<Rule>} rules
- * @param {Array<String>} templateSelectors
- * @return {Array<Rule>} rules with changed selectors
- */
-
-
-function changeDuplicateAreaSelectors(ruleSelectors, templateSelectors) {
- ruleSelectors = ruleSelectors.map(function (selector) {
- var selectorBySpace = list.space(selector);
- var selectorByComma = list.comma(selector);
-
- if (selectorBySpace.length > selectorByComma.length) {
- selector = selectorBySpace.slice(-1).join('');
- }
-
- return selector;
- });
- return ruleSelectors.map(function (ruleSelector) {
- var newSelector = templateSelectors.map(function (tplSelector, index) {
- var space = index === 0 ? '' : ' ';
- return "" + space + tplSelector + " > " + ruleSelector;
- });
- return newSelector;
- });
-}
-/**
- * check if selector of rules are equal
- * @param {Rule} ruleA
- * @param {Rule} ruleB
- * @return {Boolean}
- */
-
-
-function selectorsEqual(ruleA, ruleB) {
- return ruleA.selectors.some(function (sel) {
- return ruleB.selectors.some(function (s) {
- return s === sel;
- });
- });
-}
-/**
- * Parse data from all grid-template(-areas) declarations
- * @param {Root} css css root
- * @return {Object} parsed data
- */
-
-
-function parseGridTemplatesData(css) {
- var parsed = []; // we walk through every grid-template(-areas) declaration and store
- // data with the same area names inside the item
-
- css.walkDecls(/grid-template(-areas)?$/, function (d) {
- var rule = d.parent;
- var media = getParentMedia(rule);
- var gap = getGridGap(d);
- var inheritedGap = inheritGridGap(d, gap);
-
- var _parseTemplate = parseTemplate({
- decl: d,
- gap: inheritedGap || gap
- }),
- areas = _parseTemplate.areas;
-
- var areaNames = Object.keys(areas); // skip node if it doesn't have areas
-
- if (areaNames.length === 0) {
- return true;
- } // check parsed array for item that include the same area names
- // return index of that item
-
-
- var index = parsed.reduce(function (acc, _ref8, idx) {
- var allAreas = _ref8.allAreas;
- var hasAreas = allAreas && areaNames.some(function (area) {
- return allAreas.includes(area);
- });
- return hasAreas ? idx : acc;
- }, null);
-
- if (index !== null) {
- // index is found, add the grid-template data to that item
- var _parsed$index = parsed[index],
- allAreas = _parsed$index.allAreas,
- rules = _parsed$index.rules; // check if rule has no duplicate area names
-
- var hasNoDuplicates = rules.some(function (r) {
- return r.hasDuplicates === false && selectorsEqual(r, rule);
- });
- var duplicatesFound = false; // check need to gather all duplicate area names
-
- var duplicateAreaNames = rules.reduce(function (acc, r) {
- if (!r.params && selectorsEqual(r, rule)) {
- duplicatesFound = true;
- return r.duplicateAreaNames;
- }
-
- if (!duplicatesFound) {
- areaNames.forEach(function (name) {
- if (r.areas[name]) {
- acc.push(name);
- }
- });
- }
-
- return uniq(acc);
- }, []); // update grid-row/column-span values for areas with duplicate
- // area names. @see #1084 and #1146
-
- rules.forEach(function (r) {
- areaNames.forEach(function (name) {
- var area = r.areas[name];
-
- if (area && area.row.span !== areas[name].row.span) {
- areas[name].row.updateSpan = true;
- }
-
- if (area && area.column.span !== areas[name].column.span) {
- areas[name].column.updateSpan = true;
- }
- });
- });
- parsed[index].allAreas = uniq([].concat(allAreas, areaNames));
- parsed[index].rules.push({
- hasDuplicates: !hasNoDuplicates,
- params: media.params,
- selectors: rule.selectors,
- node: rule,
- duplicateAreaNames: duplicateAreaNames,
- areas: areas
- });
- } else {
- // index is NOT found, push the new item to the parsed array
- parsed.push({
- allAreas: areaNames,
- areasCount: 0,
- rules: [{
- hasDuplicates: false,
- duplicateRules: [],
- params: media.params,
- selectors: rule.selectors,
- node: rule,
- duplicateAreaNames: [],
- areas: areas
- }]
- });
- }
-
- return undefined;
- });
- return parsed;
-}
-/**
- * insert prefixed grid-area declarations
- * @param {Root} css css root
- * @param {Function} isDisabled check if the rule is disabled
- * @return {void}
- */
-
-
-function insertAreas(css, isDisabled) {
- // parse grid-template declarations
- var gridTemplatesData = parseGridTemplatesData(css); // return undefined if no declarations found
-
- if (gridTemplatesData.length === 0) {
- return undefined;
- } // we need to store the rules that we will insert later
-
-
- var rulesToInsert = {};
- css.walkDecls('grid-area', function (gridArea) {
- var gridAreaRule = gridArea.parent;
- var hasPrefixedRow = gridAreaRule.first.prop === '-ms-grid-row';
- var gridAreaMedia = getParentMedia(gridAreaRule);
-
- if (isDisabled(gridArea)) {
- return undefined;
- }
-
- var gridAreaRuleIndex = gridAreaMedia ? css.index(gridAreaMedia) : css.index(gridAreaRule);
- var value = gridArea.value; // found the data that matches grid-area identifier
-
- var data = gridTemplatesData.filter(function (d) {
- return d.allAreas.includes(value);
- })[0];
-
- if (!data) {
- return true;
- }
-
- var lastArea = data.allAreas[data.allAreas.length - 1];
- var selectorBySpace = list.space(gridAreaRule.selector);
- var selectorByComma = list.comma(gridAreaRule.selector);
- var selectorIsComplex = selectorBySpace.length > 1 && selectorBySpace.length > selectorByComma.length; // prevent doubling of prefixes
-
- if (hasPrefixedRow) {
- return false;
- } // create the empty object with the key as the last area name
- // e.g if we have templates with "a b c" values, "c" will be the last area
-
-
- if (!rulesToInsert[lastArea]) {
- rulesToInsert[lastArea] = {};
- }
-
- var lastRuleIsSet = false; // walk through every grid-template rule data
-
- for (var _iterator2 = data.rules, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
- var _ref9;
-
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- _ref9 = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- _ref9 = _i2.value;
- }
-
- var rule = _ref9;
- var area = rule.areas[value];
- var hasDuplicateName = rule.duplicateAreaNames.includes(value); // if we can't find the area name, update lastRule and continue
-
- if (!area) {
- var lastRuleIndex = css.index(rulesToInsert[lastArea].lastRule);
-
- if (gridAreaRuleIndex > lastRuleIndex) {
- rulesToInsert[lastArea].lastRule = gridAreaMedia || gridAreaRule;
- }
-
- continue;
- } // for grid-templates inside media rule we need to create empty
- // array to push prefixed grid-area rules later
-
-
- if (rule.params && !rulesToInsert[lastArea][rule.params]) {
- rulesToInsert[lastArea][rule.params] = [];
- }
-
- if ((!rule.hasDuplicates || !hasDuplicateName) && !rule.params) {
- // grid-template has no duplicates and not inside media rule
- getMSDecls(area, false, false).reverse().forEach(function (i) {
- return gridAreaRule.prepend(Object.assign(i, {
- raws: {
- between: gridArea.raws.between
- }
- }));
- });
- rulesToInsert[lastArea].lastRule = gridAreaRule;
- lastRuleIsSet = true;
- } else if (rule.hasDuplicates && !rule.params && !selectorIsComplex) {
- (function () {
- // grid-template has duplicates and not inside media rule
- var cloned = gridAreaRule.clone();
- cloned.removeAll();
- getMSDecls(area, area.row.updateSpan, area.column.updateSpan).reverse().forEach(function (i) {
- return cloned.prepend(Object.assign(i, {
- raws: {
- between: gridArea.raws.between
- }
- }));
- });
- cloned.selectors = changeDuplicateAreaSelectors(cloned.selectors, rule.selectors);
-
- if (rulesToInsert[lastArea].lastRule) {
- rulesToInsert[lastArea].lastRule.after(cloned);
- }
-
- rulesToInsert[lastArea].lastRule = cloned;
- lastRuleIsSet = true;
- })();
- } else if (rule.hasDuplicates && !rule.params && selectorIsComplex && gridAreaRule.selector.includes(rule.selectors[0])) {
- // grid-template has duplicates and not inside media rule
- // and the selector is complex
- gridAreaRule.walkDecls(/-ms-grid-(row|column)/, function (d) {
- return d.remove();
- });
- getMSDecls(area, area.row.updateSpan, area.column.updateSpan).reverse().forEach(function (i) {
- return gridAreaRule.prepend(Object.assign(i, {
- raws: {
- between: gridArea.raws.between
- }
- }));
- });
- } else if (rule.params) {
- (function () {
- // grid-template is inside media rule
- // if we're inside media rule, we need to store prefixed rules
- // inside rulesToInsert object to be able to preserve the order of media
- // rules and merge them easily
- var cloned = gridAreaRule.clone();
- cloned.removeAll();
- getMSDecls(area, area.row.updateSpan, area.column.updateSpan).reverse().forEach(function (i) {
- return cloned.prepend(Object.assign(i, {
- raws: {
- between: gridArea.raws.between
- }
- }));
- });
-
- if (rule.hasDuplicates && hasDuplicateName) {
- cloned.selectors = changeDuplicateAreaSelectors(cloned.selectors, rule.selectors);
- }
-
- cloned.raws = rule.node.raws;
-
- if (css.index(rule.node.parent) > gridAreaRuleIndex) {
- // append the prefixed rules right inside media rule
- // with grid-template
- rule.node.parent.append(cloned);
- } else {
- // store the rule to insert later
- rulesToInsert[lastArea][rule.params].push(cloned);
- } // set new rule as last rule ONLY if we didn't set lastRule for
- // this grid-area before
-
-
- if (!lastRuleIsSet) {
- rulesToInsert[lastArea].lastRule = gridAreaMedia || gridAreaRule;
- }
- })();
- }
- }
-
- return undefined;
- }); // append stored rules inside the media rules
-
- Object.keys(rulesToInsert).forEach(function (area) {
- var data = rulesToInsert[area];
- var lastRule = data.lastRule;
- Object.keys(data).reverse().filter(function (p) {
- return p !== 'lastRule';
- }).forEach(function (params) {
- if (data[params].length > 0 && lastRule) {
- lastRule.after({
- name: 'media',
- params: params
- });
- lastRule.next().append(data[params]);
- }
- });
- });
- return undefined;
-}
-/**
- * Warn user if grid area identifiers are not found
- * @param {Object} areas
- * @param {Declaration} decl
- * @param {Result} result
- * @return {void}
- */
-
-
-function warnMissedAreas(areas, decl, result) {
- var missed = Object.keys(areas);
- decl.root().walkDecls('grid-area', function (gridArea) {
- missed = missed.filter(function (e) {
- return e !== gridArea.value;
- });
- });
-
- if (missed.length > 0) {
- decl.warn(result, 'Can not find grid areas: ' + missed.join(', '));
- }
-
- return undefined;
-}
-/**
- * compare selectors with grid-area rule and grid-template rule
- * show warning if grid-template selector is not found
- * (this function used for grid-area rule)
- * @param {Declaration} decl
- * @param {Result} result
- * @return {void}
- */
-
-
-function warnTemplateSelectorNotFound(decl, result) {
- var rule = decl.parent;
- var root = decl.root();
- var duplicatesFound = false; // slice selector array. Remove the last part (for comparison)
-
- var slicedSelectorArr = list.space(rule.selector).filter(function (str) {
- return str !== '>';
- }).slice(0, -1); // we need to compare only if selector is complex.
- // e.g '.grid-cell' is simple, but '.parent > .grid-cell' is complex
-
- if (slicedSelectorArr.length > 0) {
- var gridTemplateFound = false;
- var foundAreaSelector = null;
- root.walkDecls(/grid-template(-areas)?$/, function (d) {
- var parent = d.parent;
- var templateSelectors = parent.selectors;
-
- var _parseTemplate2 = parseTemplate({
- decl: d,
- gap: getGridGap(d)
- }),
- areas = _parseTemplate2.areas;
-
- var hasArea = areas[decl.value]; // find the the matching selectors
-
- for (var _iterator3 = templateSelectors, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
- var _ref10;
-
- if (_isArray3) {
- if (_i3 >= _iterator3.length) break;
- _ref10 = _iterator3[_i3++];
- } else {
- _i3 = _iterator3.next();
- if (_i3.done) break;
- _ref10 = _i3.value;
- }
-
- var tplSelector = _ref10;
-
- if (gridTemplateFound) {
- break;
- }
-
- var tplSelectorArr = list.space(tplSelector).filter(function (str) {
- return str !== '>';
- });
- gridTemplateFound = tplSelectorArr.every(function (item, idx) {
- return item === slicedSelectorArr[idx];
- });
- }
-
- if (gridTemplateFound || !hasArea) {
- return true;
- }
-
- if (!foundAreaSelector) {
- foundAreaSelector = parent.selector;
- } // if we found the duplicate area with different selector
-
-
- if (foundAreaSelector && foundAreaSelector !== parent.selector) {
- duplicatesFound = true;
- }
-
- return undefined;
- }); // warn user if we didn't find template
-
- if (!gridTemplateFound && duplicatesFound) {
- decl.warn(result, 'Autoprefixer cannot find a grid-template ' + ("containing the duplicate grid-area \"" + decl.value + "\" ") + ("with full selector matching: " + slicedSelectorArr.join(' ')));
- }
- }
-}
-/**
- * warn user if both grid-area and grid-(row|column)
- * declarations are present in the same rule
- * @param {Declaration} decl
- * @param {Result} result
- * @return {void}
- */
-
-
-function warnIfGridRowColumnExists(decl, result) {
- var rule = decl.parent;
- var decls = [];
- rule.walkDecls(/^grid-(row|column)/, function (d) {
- if (!d.prop.endsWith('-end') && !d.value.startsWith('span')) {
- decls.push(d);
- }
- });
-
- if (decls.length > 0) {
- decls.forEach(function (d) {
- d.warn(result, 'You already have a grid-area declaration present in the rule. ' + ("You should use either grid-area or " + d.prop + ", not both"));
- });
- }
-
- return undefined;
-} // Gap utils
-
-
-function getGridGap(decl) {
- var gap = {}; // try to find gap
-
- var testGap = /^(grid-)?((row|column)-)?gap$/;
- decl.parent.walkDecls(testGap, function (_ref11) {
- var prop = _ref11.prop,
- value = _ref11.value;
-
- if (/^(grid-)?gap$/.test(prop)) {
- var _parser$nodes = parser(value).nodes,
- row = _parser$nodes[0],
- column = _parser$nodes[2];
- gap.row = row && parser.stringify(row);
- gap.column = column ? parser.stringify(column) : gap.row;
- }
-
- if (/^(grid-)?row-gap$/.test(prop)) gap.row = value;
- if (/^(grid-)?column-gap$/.test(prop)) gap.column = value;
- });
- return gap;
-}
-/**
- * parse media parameters (for example 'min-width: 500px')
- * @param {String} params parameter to parse
- * @return {}
- */
-
-
-function parseMediaParams(params) {
- if (!params) {
- return false;
- }
-
- var parsed = parser(params);
- var prop;
- var value;
- parsed.walk(function (node) {
- if (node.type === 'word' && /min|max/g.test(node.value)) {
- prop = node.value;
- } else if (node.value.includes('px')) {
- value = parseInt(node.value.replace(/\D/g, ''));
- }
- });
- return [prop, value];
-}
-/**
- * Compare the selectors and decide if we
- * need to inherit gap from compared selector or not.
- * @type {String} selA
- * @type {String} selB
- * @return {Boolean}
- */
-
-
-function shouldInheritGap(selA, selB) {
- var result; // get arrays of selector split in 3-deep array
-
- var splitSelectorArrA = splitSelector(selA);
- var splitSelectorArrB = splitSelector(selB);
-
- if (splitSelectorArrA[0].length < splitSelectorArrB[0].length) {
- // abort if selectorA has lower descendant specificity then selectorB
- // (e.g '.grid' and '.hello .world .grid')
- return false;
- } else if (splitSelectorArrA[0].length > splitSelectorArrB[0].length) {
- // if selectorA has higher descendant specificity then selectorB
- // (e.g '.foo .bar .grid' and '.grid')
- var idx = splitSelectorArrA[0].reduce(function (res, _ref12, index) {
- var item = _ref12[0];
- var firstSelectorPart = splitSelectorArrB[0][0][0];
-
- if (item === firstSelectorPart) {
- return index;
- }
-
- return false;
- }, false);
-
- if (idx) {
- result = splitSelectorArrB[0].every(function (arr, index) {
- return arr.every(function (part, innerIndex) {
- return (// because selectorA has more space elements, we need to slice
- // selectorA array by 'idx' number to compare them
- splitSelectorArrA[0].slice(idx)[index][innerIndex] === part
- );
- });
- });
- }
- } else {
- // if selectorA has the same descendant specificity as selectorB
- // this condition covers cases such as: '.grid.foo.bar' and '.grid'
- result = splitSelectorArrB.some(function (byCommaArr) {
- return byCommaArr.every(function (bySpaceArr, index) {
- return bySpaceArr.every(function (part, innerIndex) {
- return splitSelectorArrA[0][index][innerIndex] === part;
- });
- });
- });
- }
-
- return result;
-}
-/**
- * inherit grid gap values from the closest rule above
- * with the same selector
- * @param {Declaration} decl
- * @param {Object} gap gap values
- * @return {Object | Boolean} return gap values or false (if not found)
- */
-
-
-function inheritGridGap(decl, gap) {
- var rule = decl.parent;
- var mediaRule = getParentMedia(rule);
- var root = rule.root(); // get an array of selector split in 3-deep array
-
- var splitSelectorArr = splitSelector(rule.selector); // abort if the rule already has gaps
-
- if (Object.keys(gap).length > 0) {
- return false;
- } // e.g ['min-width']
-
-
- var _parseMediaParams = parseMediaParams(mediaRule.params),
- prop = _parseMediaParams[0];
-
- var lastBySpace = splitSelectorArr[0]; // get escaped value from the selector
- // if we have '.grid-2.foo.bar' selector, will be '\.grid\-2'
-
- var escaped = escapeRegexp(lastBySpace[lastBySpace.length - 1][0]);
- var regexp = new RegExp("(" + escaped + "$)|(" + escaped + "[,.])"); // find the closest rule with the same selector
-
- var closestRuleGap;
- root.walkRules(regexp, function (r) {
- var gridGap; // abort if are checking the same rule
-
- if (rule.toString() === r.toString()) {
- return false;
- } // find grid-gap values
-
-
- r.walkDecls('grid-gap', function (d) {
- return gridGap = getGridGap(d);
- }); // skip rule without gaps
-
- if (!gridGap || Object.keys(gridGap).length === 0) {
- return true;
- } // skip rules that should not be inherited from
-
-
- if (!shouldInheritGap(rule.selector, r.selector)) {
- return true;
- }
-
- var media = getParentMedia(r);
-
- if (media) {
- // if we are inside media, we need to check that media props match
- // e.g ('min-width' === 'min-width')
- var propToCompare = parseMediaParams(media.params)[0];
-
- if (propToCompare === prop) {
- closestRuleGap = gridGap;
- return true;
- }
- } else {
- closestRuleGap = gridGap;
- return true;
- }
-
- return undefined;
- }); // if we find the closest gap object
-
- if (closestRuleGap && Object.keys(closestRuleGap).length > 0) {
- return closestRuleGap;
- }
-
- return false;
-}
-
-function warnGridGap(_ref13) {
- var gap = _ref13.gap,
- hasColumns = _ref13.hasColumns,
- decl = _ref13.decl,
- result = _ref13.result;
- var hasBothGaps = gap.row && gap.column;
-
- if (!hasColumns && (hasBothGaps || gap.column && !gap.row)) {
- delete gap.column;
- decl.warn(result, 'Can not implement grid-gap without grid-template-columns');
- }
-}
-/**
- * normalize the grid-template-rows/columns values
- * @param {String} str grid-template-rows/columns value
- * @return {Array} normalized array with values
- * @example
- * let normalized = normalizeRowColumn('1fr repeat(2, 20px 50px) 1fr')
- * normalized // <= ['1fr', '20px', '50px', '20px', '50px', '1fr']
- */
-
-
-function normalizeRowColumn(str) {
- var normalized = parser(str).nodes.reduce(function (result, node) {
- if (node.type === 'function' && node.value === 'repeat') {
- var key = 'count';
-
- var _node$nodes$reduce = node.nodes.reduce(function (acc, n) {
- if (n.type === 'word' && key === 'count') {
- acc[0] = Math.abs(parseInt(n.value));
- return acc;
- }
-
- if (n.type === 'div' && n.value === ',') {
- key = 'value';
- return acc;
- }
-
- if (key === 'value') {
- acc[1] += parser.stringify(n);
- }
-
- return acc;
- }, [0, '']),
- count = _node$nodes$reduce[0],
- value = _node$nodes$reduce[1];
-
- if (count) {
- for (var i = 0; i < count; i++) {
- result.push(value);
- }
- }
-
- return result;
- }
-
- if (node.type === 'space') {
- return result;
- }
-
- return result.concat(parser.stringify(node));
- }, []);
- return normalized;
-}
-/**
- * Autoplace grid items
- * @param {Declaration} decl
- * @param {Result} result
- * @param {Object} gap gap values
- * @param {String} autoflowValue grid-auto-flow value
- * @return {void}
- * @see https://github.com/postcss/autoprefixer/issues/1148
- */
-
-
-function autoplaceGridItems(decl, result, gap, autoflowValue) {
- if (autoflowValue === void 0) {
- autoflowValue = 'row';
- }
-
- var parent = decl.parent;
- var rowDecl = parent.nodes.find(function (i) {
- return i.prop === 'grid-template-rows';
- });
- var rows = normalizeRowColumn(rowDecl.value);
- var columns = normalizeRowColumn(decl.value); // Build array of area names with dummy values. If we have 3 columns and
- // 2 rows, filledRows will be equal to ['1 2 3', '4 5 6']
-
- var filledRows = rows.map(function (_, rowIndex) {
- return Array.from({
- length: columns.length
- }, function (v, k) {
- return k + rowIndex * columns.length + 1;
- }).join(' ');
- });
- var areas = parseGridAreas({
- rows: filledRows,
- gap: gap
- });
- var keys = Object.keys(areas);
- var items = keys.map(function (i) {
- return areas[i];
- }); // Change the order of cells if grid-auto-flow value is 'column'
-
- if (autoflowValue.includes('column')) {
- items = items.sort(function (a, b) {
- return a.column.start - b.column.start;
- });
- } // Insert new rules
-
-
- items.reverse().forEach(function (item, index) {
- var column = item.column,
- row = item.row;
- var nodeSelector = parent.selectors.map(function (sel) {
- return sel + (" > *:nth-child(" + (keys.length - index) + ")");
- }).join(', '); // create new rule
-
- var node = parent.clone().removeAll(); // change rule selector
-
- node.selector = nodeSelector; // insert prefixed row/column values
-
- node.append({
- prop: '-ms-grid-row',
- value: row.start
- });
- node.append({
- prop: '-ms-grid-column',
- value: column.start
- }); // insert rule
-
- parent.after(node);
- });
- return undefined;
-}
-
-module.exports = {
- parse: parse,
- translate: translate,
- parseTemplate: parseTemplate,
- parseGridAreas: parseGridAreas,
- warnMissedAreas: warnMissedAreas,
- insertAreas: insertAreas,
- insertDecl: insertDecl,
- prefixTrackProp: prefixTrackProp,
- prefixTrackValue: prefixTrackValue,
- getGridGap: getGridGap,
- warnGridGap: warnGridGap,
- warnTemplateSelectorNotFound: warnTemplateSelectorNotFound,
- warnIfGridRowColumnExists: warnIfGridRowColumnExists,
- inheritGridGap: inheritGridGap,
- autoplaceGridItems: autoplaceGridItems
-}; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/image-rendering.js b/assets/node_modules/autoprefixer/lib/hacks/image-rendering.js
deleted file mode 100644
index d6de83c..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/image-rendering.js
+++ /dev/null
@@ -1,73 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var ImageRendering =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(ImageRendering, _Declaration);
-
- function ImageRendering() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = ImageRendering.prototype;
-
- /**
- * Add hack only for crisp-edges
- */
- _proto.check = function check(decl) {
- return decl.value === 'pixelated';
- }
- /**
- * Change property name for IE
- */
- ;
-
- _proto.prefixed = function prefixed(prop, prefix) {
- if (prefix === '-ms-') {
- return '-ms-interpolation-mode';
- }
-
- return _Declaration.prototype.prefixed.call(this, prop, prefix);
- }
- /**
- * Change property and value for IE
- */
- ;
-
- _proto.set = function set(decl, prefix) {
- if (prefix !== '-ms-') return _Declaration.prototype.set.call(this, decl, prefix);
- decl.prop = '-ms-interpolation-mode';
- decl.value = 'nearest-neighbor';
- return decl;
- }
- /**
- * Return property name by spec
- */
- ;
-
- _proto.normalize = function normalize() {
- return 'image-rendering';
- }
- /**
- * Warn on old value
- */
- ;
-
- _proto.process = function process(node, result) {
- return _Declaration.prototype.process.call(this, node, result);
- };
-
- return ImageRendering;
-}(Declaration);
-
-_defineProperty(ImageRendering, "names", ['image-rendering', 'interpolation-mode']);
-
-module.exports = ImageRendering; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/image-set.js b/assets/node_modules/autoprefixer/lib/hacks/image-set.js
deleted file mode 100644
index 2263aaf..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/image-set.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Value = require('../value');
-
-var ImageSet =
-/*#__PURE__*/
-function (_Value) {
- _inheritsLoose(ImageSet, _Value);
-
- function ImageSet() {
- return _Value.apply(this, arguments) || this;
- }
-
- var _proto = ImageSet.prototype;
-
- /**
- * Use non-standard name for WebKit and Firefox
- */
- _proto.replace = function replace(string, prefix) {
- var fixed = _Value.prototype.replace.call(this, string, prefix);
-
- if (prefix === '-webkit-') {
- fixed = fixed.replace(/("[^"]+"|'[^']+')(\s+\d+\w)/gi, 'url($1)$2');
- }
-
- return fixed;
- };
-
- return ImageSet;
-}(Value);
-
-_defineProperty(ImageSet, "names", ['image-set']);
-
-module.exports = ImageSet; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/inline-logical.js b/assets/node_modules/autoprefixer/lib/hacks/inline-logical.js
deleted file mode 100644
index 819f14a..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/inline-logical.js
+++ /dev/null
@@ -1,42 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var InlineLogical =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(InlineLogical, _Declaration);
-
- function InlineLogical() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = InlineLogical.prototype;
-
- /**
- * Use old syntax for -moz- and -webkit-
- */
- _proto.prefixed = function prefixed(prop, prefix) {
- return prefix + prop.replace('-inline', '');
- }
- /**
- * Return property name by spec
- */
- ;
-
- _proto.normalize = function normalize(prop) {
- return prop.replace(/(margin|padding|border)-(start|end)/, '$1-inline-$2');
- };
-
- return InlineLogical;
-}(Declaration);
-
-_defineProperty(InlineLogical, "names", ['border-inline-start', 'border-inline-end', 'margin-inline-start', 'margin-inline-end', 'padding-inline-start', 'padding-inline-end', 'border-start', 'border-end', 'margin-start', 'margin-end', 'padding-start', 'padding-end']);
-
-module.exports = InlineLogical; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/intrinsic.js b/assets/node_modules/autoprefixer/lib/hacks/intrinsic.js
deleted file mode 100644
index 91640b9..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/intrinsic.js
+++ /dev/null
@@ -1,76 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var OldValue = require('../old-value');
-
-var Value = require('../value');
-
-function _regexp(name) {
- return new RegExp("(^|[\\s,(])(" + name + "($|[\\s),]))", 'gi');
-}
-
-var Intrinsic =
-/*#__PURE__*/
-function (_Value) {
- _inheritsLoose(Intrinsic, _Value);
-
- function Intrinsic() {
- return _Value.apply(this, arguments) || this;
- }
-
- var _proto = Intrinsic.prototype;
-
- _proto.regexp = function regexp() {
- if (!this.regexpCache) this.regexpCache = _regexp(this.name);
- return this.regexpCache;
- };
-
- _proto.isStretch = function isStretch() {
- return this.name === 'stretch' || this.name === 'fill' || this.name === 'fill-available';
- };
-
- _proto.replace = function replace(string, prefix) {
- if (prefix === '-moz-' && this.isStretch()) {
- return string.replace(this.regexp(), '$1-moz-available$3');
- }
-
- if (prefix === '-webkit-' && this.isStretch()) {
- return string.replace(this.regexp(), '$1-webkit-fill-available$3');
- }
-
- return _Value.prototype.replace.call(this, string, prefix);
- };
-
- _proto.old = function old(prefix) {
- var prefixed = prefix + this.name;
-
- if (this.isStretch()) {
- if (prefix === '-moz-') {
- prefixed = '-moz-available';
- } else if (prefix === '-webkit-') {
- prefixed = '-webkit-fill-available';
- }
- }
-
- return new OldValue(this.name, prefixed, prefixed, _regexp(prefixed));
- };
-
- _proto.add = function add(decl, prefix) {
- if (decl.prop.includes('grid') && prefix !== '-webkit-') {
- return undefined;
- }
-
- return _Value.prototype.add.call(this, decl, prefix);
- };
-
- return Intrinsic;
-}(Value);
-
-_defineProperty(Intrinsic, "names", ['max-content', 'min-content', 'fit-content', 'fill', 'fill-available', 'stretch']);
-
-module.exports = Intrinsic; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/justify-content.js b/assets/node_modules/autoprefixer/lib/hacks/justify-content.js
deleted file mode 100644
index 7e7bb95..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/justify-content.js
+++ /dev/null
@@ -1,87 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var flexSpec = require('./flex-spec');
-
-var Declaration = require('../declaration');
-
-var JustifyContent =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(JustifyContent, _Declaration);
-
- function JustifyContent() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = JustifyContent.prototype;
-
- /**
- * Change property name for 2009 and 2012 specs
- */
- _proto.prefixed = function prefixed(prop, prefix) {
- var spec;
-
- var _flexSpec = flexSpec(prefix);
-
- spec = _flexSpec[0];
- prefix = _flexSpec[1];
-
- if (spec === 2009) {
- return prefix + 'box-pack';
- }
-
- if (spec === 2012) {
- return prefix + 'flex-pack';
- }
-
- return _Declaration.prototype.prefixed.call(this, prop, prefix);
- }
- /**
- * Return property name by final spec
- */
- ;
-
- _proto.normalize = function normalize() {
- return 'justify-content';
- }
- /**
- * Change value for 2009 and 2012 specs
- */
- ;
-
- _proto.set = function set(decl, prefix) {
- var spec = flexSpec(prefix)[0];
-
- if (spec === 2009 || spec === 2012) {
- var value = JustifyContent.oldValues[decl.value] || decl.value;
- decl.value = value;
-
- if (spec !== 2009 || value !== 'distribute') {
- return _Declaration.prototype.set.call(this, decl, prefix);
- }
- } else if (spec === 'final') {
- return _Declaration.prototype.set.call(this, decl, prefix);
- }
-
- return undefined;
- };
-
- return JustifyContent;
-}(Declaration);
-
-_defineProperty(JustifyContent, "names", ['justify-content', 'flex-pack', 'box-pack']);
-
-_defineProperty(JustifyContent, "oldValues", {
- 'flex-end': 'end',
- 'flex-start': 'start',
- 'space-between': 'justify',
- 'space-around': 'distribute'
-});
-
-module.exports = JustifyContent; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/mask-border.js b/assets/node_modules/autoprefixer/lib/hacks/mask-border.js
deleted file mode 100644
index 751615a..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/mask-border.js
+++ /dev/null
@@ -1,48 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var MaskBorder =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(MaskBorder, _Declaration);
-
- function MaskBorder() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = MaskBorder.prototype;
-
- /**
- * Return property name by final spec
- */
- _proto.normalize = function normalize() {
- return this.name.replace('box-image', 'border');
- }
- /**
- * Return flex property for 2012 spec
- */
- ;
-
- _proto.prefixed = function prefixed(prop, prefix) {
- var result = _Declaration.prototype.prefixed.call(this, prop, prefix);
-
- if (prefix === '-webkit-') {
- result = result.replace('border', 'box-image');
- }
-
- return result;
- };
-
- return MaskBorder;
-}(Declaration);
-
-_defineProperty(MaskBorder, "names", ['mask-border', 'mask-border-source', 'mask-border-slice', 'mask-border-width', 'mask-border-outset', 'mask-border-repeat', 'mask-box-image', 'mask-box-image-source', 'mask-box-image-slice', 'mask-box-image-width', 'mask-box-image-outset', 'mask-box-image-repeat']);
-
-module.exports = MaskBorder; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/mask-composite.js b/assets/node_modules/autoprefixer/lib/hacks/mask-composite.js
deleted file mode 100644
index f68fe00..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/mask-composite.js
+++ /dev/null
@@ -1,106 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var MaskComposite =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(MaskComposite, _Declaration);
-
- function MaskComposite() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = MaskComposite.prototype;
-
- /**
- * Prefix mask-composite for webkit
- */
- _proto.insert = function insert(decl, prefix, prefixes) {
- var isCompositeProp = decl.prop === 'mask-composite';
- var compositeValues;
-
- if (isCompositeProp) {
- compositeValues = decl.value.split(',');
- } else {
- compositeValues = decl.value.match(MaskComposite.regexp) || [];
- }
-
- compositeValues = compositeValues.map(function (el) {
- return el.trim();
- }).filter(function (el) {
- return el;
- });
- var hasCompositeValues = compositeValues.length;
- var compositeDecl;
-
- if (hasCompositeValues) {
- compositeDecl = this.clone(decl);
- compositeDecl.value = compositeValues.map(function (value) {
- return MaskComposite.oldValues[value] || value;
- }).join(', ');
-
- if (compositeValues.includes('intersect')) {
- compositeDecl.value += ', xor';
- }
-
- compositeDecl.prop = prefix + 'mask-composite';
- }
-
- if (isCompositeProp) {
- if (!hasCompositeValues) {
- return undefined;
- }
-
- if (this.needCascade(decl)) {
- compositeDecl.raws.before = this.calcBefore(prefixes, decl, prefix);
- }
-
- return decl.parent.insertBefore(decl, compositeDecl);
- }
-
- var cloned = this.clone(decl);
- cloned.prop = prefix + cloned.prop;
-
- if (hasCompositeValues) {
- cloned.value = cloned.value.replace(MaskComposite.regexp, '');
- }
-
- if (this.needCascade(decl)) {
- cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
- }
-
- decl.parent.insertBefore(decl, cloned);
-
- if (!hasCompositeValues) {
- return decl;
- }
-
- if (this.needCascade(decl)) {
- compositeDecl.raws.before = this.calcBefore(prefixes, decl, prefix);
- }
-
- return decl.parent.insertBefore(decl, compositeDecl);
- };
-
- return MaskComposite;
-}(Declaration);
-
-_defineProperty(MaskComposite, "names", ['mask', 'mask-composite']);
-
-_defineProperty(MaskComposite, "oldValues", {
- add: 'source-over',
- substract: 'source-out',
- intersect: 'source-in',
- exclude: 'xor'
-});
-
-_defineProperty(MaskComposite, "regexp", new RegExp("\\s+(" + Object.keys(MaskComposite.oldValues).join('|') + ")\\b(?!\\))\\s*(?=[,])", 'ig'));
-
-module.exports = MaskComposite; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/order.js b/assets/node_modules/autoprefixer/lib/hacks/order.js
deleted file mode 100644
index 1226a41..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/order.js
+++ /dev/null
@@ -1,74 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var flexSpec = require('./flex-spec');
-
-var Declaration = require('../declaration');
-
-var Order =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(Order, _Declaration);
-
- function Order() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = Order.prototype;
-
- /**
- * Change property name for 2009 and 2012 specs
- */
- _proto.prefixed = function prefixed(prop, prefix) {
- var spec;
-
- var _flexSpec = flexSpec(prefix);
-
- spec = _flexSpec[0];
- prefix = _flexSpec[1];
-
- if (spec === 2009) {
- return prefix + 'box-ordinal-group';
- }
-
- if (spec === 2012) {
- return prefix + 'flex-order';
- }
-
- return _Declaration.prototype.prefixed.call(this, prop, prefix);
- }
- /**
- * Return property name by final spec
- */
- ;
-
- _proto.normalize = function normalize() {
- return 'order';
- }
- /**
- * Fix value for 2009 spec
- */
- ;
-
- _proto.set = function set(decl, prefix) {
- var spec = flexSpec(prefix)[0];
-
- if (spec === 2009 && /\d/.test(decl.value)) {
- decl.value = (parseInt(decl.value) + 1).toString();
- return _Declaration.prototype.set.call(this, decl, prefix);
- }
-
- return _Declaration.prototype.set.call(this, decl, prefix);
- };
-
- return Order;
-}(Declaration);
-
-_defineProperty(Order, "names", ['order', 'flex-order', 'box-ordinal-group']);
-
-module.exports = Order; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/overscroll-behavior.js b/assets/node_modules/autoprefixer/lib/hacks/overscroll-behavior.js
deleted file mode 100644
index be58e9e..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/overscroll-behavior.js
+++ /dev/null
@@ -1,56 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var OverscrollBehavior =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(OverscrollBehavior, _Declaration);
-
- function OverscrollBehavior() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = OverscrollBehavior.prototype;
-
- /**
- * Change property name for IE
- */
- _proto.prefixed = function prefixed(prop, prefix) {
- return prefix + 'scroll-chaining';
- }
- /**
- * Return property name by spec
- */
- ;
-
- _proto.normalize = function normalize() {
- return 'overscroll-behavior';
- }
- /**
- * Change value for IE
- */
- ;
-
- _proto.set = function set(decl, prefix) {
- if (decl.value === 'auto') {
- decl.value = 'chained';
- } else if (decl.value === 'none' || decl.value === 'contain') {
- decl.value = 'none';
- }
-
- return _Declaration.prototype.set.call(this, decl, prefix);
- };
-
- return OverscrollBehavior;
-}(Declaration);
-
-_defineProperty(OverscrollBehavior, "names", ['overscroll-behavior', 'scroll-chaining']);
-
-module.exports = OverscrollBehavior; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/pixelated.js b/assets/node_modules/autoprefixer/lib/hacks/pixelated.js
deleted file mode 100644
index 3e0b906..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/pixelated.js
+++ /dev/null
@@ -1,60 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var OldValue = require('../old-value');
-
-var Value = require('../value');
-
-var Pixelated =
-/*#__PURE__*/
-function (_Value) {
- _inheritsLoose(Pixelated, _Value);
-
- function Pixelated() {
- return _Value.apply(this, arguments) || this;
- }
-
- var _proto = Pixelated.prototype;
-
- /**
- * Use non-standard name for WebKit and Firefox
- */
- _proto.replace = function replace(string, prefix) {
- if (prefix === '-webkit-') {
- return string.replace(this.regexp(), '$1-webkit-optimize-contrast');
- }
-
- if (prefix === '-moz-') {
- return string.replace(this.regexp(), '$1-moz-crisp-edges');
- }
-
- return _Value.prototype.replace.call(this, string, prefix);
- }
- /**
- * Different name for WebKit and Firefox
- */
- ;
-
- _proto.old = function old(prefix) {
- if (prefix === '-webkit-') {
- return new OldValue(this.name, '-webkit-optimize-contrast');
- }
-
- if (prefix === '-moz-') {
- return new OldValue(this.name, '-moz-crisp-edges');
- }
-
- return _Value.prototype.old.call(this, prefix);
- };
-
- return Pixelated;
-}(Value);
-
-_defineProperty(Pixelated, "names", ['pixelated']);
-
-module.exports = Pixelated; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/place-self.js b/assets/node_modules/autoprefixer/lib/hacks/place-self.js
deleted file mode 100644
index dc517ad..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/place-self.js
+++ /dev/null
@@ -1,57 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var utils = require('./grid-utils');
-
-var PlaceSelf =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(PlaceSelf, _Declaration);
-
- function PlaceSelf() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = PlaceSelf.prototype;
-
- /**
- * Translate place-self to separate -ms- prefixed properties
- */
- _proto.insert = function insert(decl, prefix, prefixes) {
- if (prefix !== '-ms-') return _Declaration.prototype.insert.call(this, decl, prefix, prefixes); // prevent doubling of prefixes
-
- if (decl.parent.some(function (i) {
- return i.prop === '-ms-grid-row-align';
- })) {
- return undefined;
- }
-
- var _utils$parse = utils.parse(decl),
- _utils$parse$ = _utils$parse[0],
- first = _utils$parse$[0],
- second = _utils$parse$[1];
-
- if (second) {
- utils.insertDecl(decl, 'grid-row-align', first);
- utils.insertDecl(decl, 'grid-column-align', second);
- } else {
- utils.insertDecl(decl, 'grid-row-align', first);
- utils.insertDecl(decl, 'grid-column-align', first);
- }
-
- return undefined;
- };
-
- return PlaceSelf;
-}(Declaration);
-
-_defineProperty(PlaceSelf, "names", ['place-self']);
-
-module.exports = PlaceSelf; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/placeholder.js b/assets/node_modules/autoprefixer/lib/hacks/placeholder.js
deleted file mode 100644
index d84026f..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/placeholder.js
+++ /dev/null
@@ -1,58 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Selector = require('../selector');
-
-var Placeholder =
-/*#__PURE__*/
-function (_Selector) {
- _inheritsLoose(Placeholder, _Selector);
-
- function Placeholder() {
- return _Selector.apply(this, arguments) || this;
- }
-
- var _proto = Placeholder.prototype;
-
- /**
- * Add old mozilla to possible prefixes
- */
- _proto.possible = function possible() {
- return _Selector.prototype.possible.call(this).concat(['-moz- old', '-ms- old']);
- }
- /**
- * Return different selectors depend on prefix
- */
- ;
-
- _proto.prefixed = function prefixed(prefix) {
- if (prefix === '-webkit-') {
- return '::-webkit-input-placeholder';
- }
-
- if (prefix === '-ms-') {
- return '::-ms-input-placeholder';
- }
-
- if (prefix === '-ms- old') {
- return ':-ms-input-placeholder';
- }
-
- if (prefix === '-moz- old') {
- return ':-moz-placeholder';
- }
-
- return "::" + prefix + "placeholder";
- };
-
- return Placeholder;
-}(Selector);
-
-_defineProperty(Placeholder, "names", ['::placeholder']);
-
-module.exports = Placeholder; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/text-decoration-skip-ink.js b/assets/node_modules/autoprefixer/lib/hacks/text-decoration-skip-ink.js
deleted file mode 100644
index 7c3e630..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/text-decoration-skip-ink.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var TextDecorationSkipInk =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(TextDecorationSkipInk, _Declaration);
-
- function TextDecorationSkipInk() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = TextDecorationSkipInk.prototype;
-
- /**
- * Change prefix for ink value
- */
- _proto.set = function set(decl, prefix) {
- if (decl.prop === 'text-decoration-skip-ink' && decl.value === 'auto') {
- decl.prop = prefix + 'text-decoration-skip';
- decl.value = 'ink';
- return decl;
- } else {
- return _Declaration.prototype.set.call(this, decl, prefix);
- }
- };
-
- return TextDecorationSkipInk;
-}(Declaration);
-
-_defineProperty(TextDecorationSkipInk, "names", ['text-decoration-skip-ink', 'text-decoration-skip']);
-
-module.exports = TextDecorationSkipInk; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/text-decoration.js b/assets/node_modules/autoprefixer/lib/hacks/text-decoration.js
deleted file mode 100644
index 3decf3d..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/text-decoration.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var BASIC = ['none', 'underline', 'overline', 'line-through', 'blink', 'inherit', 'initial', 'unset'];
-
-var TextDecoration =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(TextDecoration, _Declaration);
-
- function TextDecoration() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = TextDecoration.prototype;
-
- /**
- * Do not add prefixes for basic values.
- */
- _proto.check = function check(decl) {
- return decl.value.split(/\s+/).some(function (i) {
- return !BASIC.includes(i);
- });
- };
-
- return TextDecoration;
-}(Declaration);
-
-_defineProperty(TextDecoration, "names", ['text-decoration']);
-
-module.exports = TextDecoration; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/text-emphasis-position.js b/assets/node_modules/autoprefixer/lib/hacks/text-emphasis-position.js
deleted file mode 100644
index eef1218..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/text-emphasis-position.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var TextEmphasisPosition =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(TextEmphasisPosition, _Declaration);
-
- function TextEmphasisPosition() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = TextEmphasisPosition.prototype;
-
- _proto.set = function set(decl, prefix) {
- if (prefix === '-webkit-') {
- decl.value = decl.value.replace(/\s*(right|left)\s*/i, '');
- }
-
- return _Declaration.prototype.set.call(this, decl, prefix);
- };
-
- return TextEmphasisPosition;
-}(Declaration);
-
-_defineProperty(TextEmphasisPosition, "names", ['text-emphasis-position']);
-
-module.exports = TextEmphasisPosition; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/transform-decl.js b/assets/node_modules/autoprefixer/lib/hacks/transform-decl.js
deleted file mode 100644
index b901591..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/transform-decl.js
+++ /dev/null
@@ -1,112 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var TransformDecl =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(TransformDecl, _Declaration);
-
- function TransformDecl() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = TransformDecl.prototype;
-
- /**
- * Recursively check all parents for @keyframes
- */
- _proto.keyframeParents = function keyframeParents(decl) {
- var parent = decl.parent;
-
- while (parent) {
- if (parent.type === 'atrule' && parent.name === 'keyframes') {
- return true;
- }
-
- var _parent = parent;
- parent = _parent.parent;
- }
-
- return false;
- }
- /**
- * Is transform contain 3D commands
- */
- ;
-
- _proto.contain3d = function contain3d(decl) {
- if (decl.prop === 'transform-origin') {
- return false;
- }
-
- for (var _iterator = TransformDecl.functions3d, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var func = _ref;
-
- if (decl.value.includes(func + "(")) {
- return true;
- }
- }
-
- return false;
- }
- /**
- * Replace rotateZ to rotate for IE 9
- */
- ;
-
- _proto.set = function set(decl, prefix) {
- decl = _Declaration.prototype.set.call(this, decl, prefix);
-
- if (prefix === '-ms-') {
- decl.value = decl.value.replace(/rotatez/gi, 'rotate');
- }
-
- return decl;
- }
- /**
- * Don't add prefix for IE in keyframes
- */
- ;
-
- _proto.insert = function insert(decl, prefix, prefixes) {
- if (prefix === '-ms-') {
- if (!this.contain3d(decl) && !this.keyframeParents(decl)) {
- return _Declaration.prototype.insert.call(this, decl, prefix, prefixes);
- }
- } else if (prefix === '-o-') {
- if (!this.contain3d(decl)) {
- return _Declaration.prototype.insert.call(this, decl, prefix, prefixes);
- }
- } else {
- return _Declaration.prototype.insert.call(this, decl, prefix, prefixes);
- }
-
- return undefined;
- };
-
- return TransformDecl;
-}(Declaration);
-
-_defineProperty(TransformDecl, "names", ['transform', 'transform-origin']);
-
-_defineProperty(TransformDecl, "functions3d", ['matrix3d', 'translate3d', 'translateZ', 'scale3d', 'scaleZ', 'rotate3d', 'rotateX', 'rotateY', 'perspective']);
-
-module.exports = TransformDecl; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/user-select.js b/assets/node_modules/autoprefixer/lib/hacks/user-select.js
deleted file mode 100644
index 64b58d0..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/user-select.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var UserSelect =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(UserSelect, _Declaration);
-
- function UserSelect() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = UserSelect.prototype;
-
- /**
- * Change prefixed value for IE
- */
- _proto.set = function set(decl, prefix) {
- if (prefix === '-ms-' && decl.value === 'contain') {
- decl.value = 'element';
- }
-
- return _Declaration.prototype.set.call(this, decl, prefix);
- };
-
- return UserSelect;
-}(Declaration);
-
-_defineProperty(UserSelect, "names", ['user-select']);
-
-module.exports = UserSelect; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/hacks/writing-mode.js b/assets/node_modules/autoprefixer/lib/hacks/writing-mode.js
deleted file mode 100644
index 71bfc05..0000000
--- a/assets/node_modules/autoprefixer/lib/hacks/writing-mode.js
+++ /dev/null
@@ -1,61 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var Declaration = require('../declaration');
-
-var WritingMode =
-/*#__PURE__*/
-function (_Declaration) {
- _inheritsLoose(WritingMode, _Declaration);
-
- function WritingMode() {
- return _Declaration.apply(this, arguments) || this;
- }
-
- var _proto = WritingMode.prototype;
-
- _proto.insert = function insert(decl, prefix, prefixes) {
- if (prefix === '-ms-') {
- var cloned = this.set(this.clone(decl), prefix);
-
- if (this.needCascade(decl)) {
- cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
- }
-
- var direction = 'ltr';
- decl.parent.nodes.forEach(function (i) {
- if (i.prop === 'direction') {
- if (i.value === 'rtl' || i.value === 'ltr') direction = i.value;
- }
- });
- cloned.value = WritingMode.msValues[direction][decl.value] || decl.value;
- return decl.parent.insertBefore(decl, cloned);
- }
-
- return _Declaration.prototype.insert.call(this, decl, prefix, prefixes);
- };
-
- return WritingMode;
-}(Declaration);
-
-_defineProperty(WritingMode, "names", ['writing-mode']);
-
-_defineProperty(WritingMode, "msValues", {
- ltr: {
- 'horizontal-tb': 'lr-tb',
- 'vertical-rl': 'tb-rl',
- 'vertical-lr': 'tb-lr'
- },
- rtl: {
- 'horizontal-tb': 'rl-tb',
- 'vertical-rl': 'bt-rl',
- 'vertical-lr': 'bt-lr'
- }
-});
-
-module.exports = WritingMode; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/info.js b/assets/node_modules/autoprefixer/lib/info.js
deleted file mode 100644
index a036b20..0000000
--- a/assets/node_modules/autoprefixer/lib/info.js
+++ /dev/null
@@ -1,176 +0,0 @@
-"use strict";
-
-var browserslist = require('browserslist');
-
-function capitalize(str) {
- return str.slice(0, 1).toUpperCase() + str.slice(1);
-}
-
-var NAMES = {
- ie: 'IE',
- ie_mob: 'IE Mobile',
- ios_saf: 'iOS',
- op_mini: 'Opera Mini',
- op_mob: 'Opera Mobile',
- and_chr: 'Chrome for Android',
- and_ff: 'Firefox for Android',
- and_uc: 'UC for Android'
-};
-
-function prefix(name, prefixes, note) {
- var out = " " + name;
- if (note) out += ' *';
- out += ': ';
- out += prefixes.map(function (i) {
- return i.replace(/^-(.*)-$/g, '$1');
- }).join(', ');
- out += '\n';
- return out;
-}
-
-module.exports = function (prefixes) {
- if (prefixes.browsers.selected.length === 0) {
- return 'No browsers selected';
- }
-
- var versions = {};
-
- for (var _iterator = prefixes.browsers.selected, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var _browser = _ref;
-
- var parts = _browser.split(' ');
-
- var _name2 = parts[0];
- var version = parts[1];
- _name2 = NAMES[_name2] || capitalize(_name2);
-
- if (versions[_name2]) {
- versions[_name2].push(version);
- } else {
- versions[_name2] = [version];
- }
- }
-
- var out = 'Browsers:\n';
-
- for (var browser in versions) {
- var list = versions[browser];
- list = list.sort(function (a, b) {
- return parseFloat(b) - parseFloat(a);
- });
- out += " " + browser + ": " + list.join(', ') + "\n";
- }
-
- var coverage = browserslist.coverage(prefixes.browsers.selected);
- var round = Math.round(coverage * 100) / 100.0;
- out += "\nThese browsers account for " + round + "% of all users globally\n";
- var atrules = [];
-
- for (var name in prefixes.add) {
- var data = prefixes.add[name];
-
- if (name[0] === '@' && data.prefixes) {
- atrules.push(prefix(name, data.prefixes));
- }
- }
-
- if (atrules.length > 0) {
- out += "\nAt-Rules:\n" + atrules.sort().join('');
- }
-
- var selectors = [];
-
- for (var _iterator2 = prefixes.add.selectors, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
- var _ref2;
-
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- _ref2 = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- _ref2 = _i2.value;
- }
-
- var selector = _ref2;
-
- if (selector.prefixes) {
- selectors.push(prefix(selector.name, selector.prefixes));
- }
- }
-
- if (selectors.length > 0) {
- out += "\nSelectors:\n" + selectors.sort().join('');
- }
-
- var values = [];
- var props = [];
- var hadGrid = false;
-
- for (var _name in prefixes.add) {
- var _data = prefixes.add[_name];
-
- if (_name[0] !== '@' && _data.prefixes) {
- var grid = _name.indexOf('grid-') === 0;
- if (grid) hadGrid = true;
- props.push(prefix(_name, _data.prefixes, grid));
- }
-
- if (!Array.isArray(_data.values)) {
- continue;
- }
-
- for (var _iterator3 = _data.values, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
- var _ref3;
-
- if (_isArray3) {
- if (_i3 >= _iterator3.length) break;
- _ref3 = _iterator3[_i3++];
- } else {
- _i3 = _iterator3.next();
- if (_i3.done) break;
- _ref3 = _i3.value;
- }
-
- var value = _ref3;
-
- var _grid = value.name.includes('grid');
-
- if (_grid) hadGrid = true;
- var string = prefix(value.name, value.prefixes, _grid);
-
- if (!values.includes(string)) {
- values.push(string);
- }
- }
- }
-
- if (props.length > 0) {
- out += "\nProperties:\n" + props.sort().join('');
- }
-
- if (values.length > 0) {
- out += "\nValues:\n" + values.sort().join('');
- }
-
- if (hadGrid) {
- out += '\n* - Prefixes will be added only on grid: true option.\n';
- }
-
- if (!atrules.length && !selectors.length && !props.length && !values.length) {
- out += '\nAwesome! Your browsers don\'t require any vendor prefixes.' + '\nNow you can remove Autoprefixer from build steps.';
- }
-
- return out;
-}; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/old-selector.js b/assets/node_modules/autoprefixer/lib/old-selector.js
deleted file mode 100644
index ba0913e..0000000
--- a/assets/node_modules/autoprefixer/lib/old-selector.js
+++ /dev/null
@@ -1,95 +0,0 @@
-"use strict";
-
-var OldSelector =
-/*#__PURE__*/
-function () {
- function OldSelector(selector, prefix) {
- this.prefix = prefix;
- this.prefixed = selector.prefixed(this.prefix);
- this.regexp = selector.regexp(this.prefix);
- this.prefixeds = selector.possible().map(function (x) {
- return [selector.prefixed(x), selector.regexp(x)];
- });
- this.unprefixed = selector.name;
- this.nameRegexp = selector.regexp();
- }
- /**
- * Is rule a hack without unprefixed version bottom
- */
-
-
- var _proto = OldSelector.prototype;
-
- _proto.isHack = function isHack(rule) {
- var index = rule.parent.index(rule) + 1;
- var rules = rule.parent.nodes;
-
- while (index < rules.length) {
- var before = rules[index].selector;
-
- if (!before) {
- return true;
- }
-
- if (before.includes(this.unprefixed) && before.match(this.nameRegexp)) {
- return false;
- }
-
- var some = false;
-
- for (var _iterator = this.prefixeds, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var _ref2 = _ref,
- string = _ref2[0],
- regexp = _ref2[1];
-
- if (before.includes(string) && before.match(regexp)) {
- some = true;
- break;
- }
- }
-
- if (!some) {
- return true;
- }
-
- index += 1;
- }
-
- return true;
- }
- /**
- * Does rule contain an unnecessary prefixed selector
- */
- ;
-
- _proto.check = function check(rule) {
- if (!rule.selector.includes(this.prefixed)) {
- return false;
- }
-
- if (!rule.selector.match(this.regexp)) {
- return false;
- }
-
- if (this.isHack(rule)) {
- return false;
- }
-
- return true;
- };
-
- return OldSelector;
-}();
-
-module.exports = OldSelector; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/old-value.js b/assets/node_modules/autoprefixer/lib/old-value.js
deleted file mode 100644
index 0a18e1e..0000000
--- a/assets/node_modules/autoprefixer/lib/old-value.js
+++ /dev/null
@@ -1,32 +0,0 @@
-"use strict";
-
-var utils = require('./utils');
-
-var OldValue =
-/*#__PURE__*/
-function () {
- function OldValue(unprefixed, prefixed, string, regexp) {
- this.unprefixed = unprefixed;
- this.prefixed = prefixed;
- this.string = string || prefixed;
- this.regexp = regexp || utils.regexp(prefixed);
- }
- /**
- * Check, that value contain old value
- */
-
-
- var _proto = OldValue.prototype;
-
- _proto.check = function check(value) {
- if (value.includes(this.string)) {
- return !!value.match(this.regexp);
- }
-
- return false;
- };
-
- return OldValue;
-}();
-
-module.exports = OldValue; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/prefixer.js b/assets/node_modules/autoprefixer/lib/prefixer.js
deleted file mode 100644
index 63acf09..0000000
--- a/assets/node_modules/autoprefixer/lib/prefixer.js
+++ /dev/null
@@ -1,174 +0,0 @@
-"use strict";
-
-var vendor = require('postcss').vendor;
-
-var Browsers = require('./browsers');
-
-var utils = require('./utils');
-/**
- * Recursively clone objects
- */
-
-
-function _clone(obj, parent) {
- var cloned = new obj.constructor();
-
- for (var _i = 0, _Object$keys = Object.keys(obj || {}); _i < _Object$keys.length; _i++) {
- var i = _Object$keys[_i];
- var value = obj[i];
-
- if (i === 'parent' && typeof value === 'object') {
- if (parent) {
- cloned[i] = parent;
- }
- } else if (i === 'source' || i === null) {
- cloned[i] = value;
- } else if (Array.isArray(value)) {
- cloned[i] = value.map(function (x) {
- return _clone(x, cloned);
- });
- } else if (i !== '_autoprefixerPrefix' && i !== '_autoprefixerValues') {
- if (typeof value === 'object' && value !== null) {
- value = _clone(value, cloned);
- }
-
- cloned[i] = value;
- }
- }
-
- return cloned;
-}
-
-var Prefixer =
-/*#__PURE__*/
-function () {
- /**
- * Add hack to selected names
- */
- Prefixer.hack = function hack(klass) {
- var _this = this;
-
- if (!this.hacks) {
- this.hacks = {};
- }
-
- return klass.names.map(function (name) {
- _this.hacks[name] = klass;
- return _this.hacks[name];
- });
- }
- /**
- * Load hacks for some names
- */
- ;
-
- Prefixer.load = function load(name, prefixes, all) {
- var Klass = this.hacks && this.hacks[name];
-
- if (Klass) {
- return new Klass(name, prefixes, all);
- } else {
- return new this(name, prefixes, all);
- }
- }
- /**
- * Clone node and clean autprefixer custom caches
- */
- ;
-
- Prefixer.clone = function clone(node, overrides) {
- var cloned = _clone(node);
-
- for (var name in overrides) {
- cloned[name] = overrides[name];
- }
-
- return cloned;
- };
-
- function Prefixer(name, prefixes, all) {
- this.prefixes = prefixes;
- this.name = name;
- this.all = all;
- }
- /**
- * Find prefix in node parents
- */
-
-
- var _proto = Prefixer.prototype;
-
- _proto.parentPrefix = function parentPrefix(node) {
- var prefix;
-
- if (typeof node._autoprefixerPrefix !== 'undefined') {
- prefix = node._autoprefixerPrefix;
- } else if (node.type === 'decl' && node.prop[0] === '-') {
- prefix = vendor.prefix(node.prop);
- } else if (node.type === 'root') {
- prefix = false;
- } else if (node.type === 'rule' && node.selector.includes(':-') && /:(-\w+-)/.test(node.selector)) {
- prefix = node.selector.match(/:(-\w+-)/)[1];
- } else if (node.type === 'atrule' && node.name[0] === '-') {
- prefix = vendor.prefix(node.name);
- } else {
- prefix = this.parentPrefix(node.parent);
- }
-
- if (!Browsers.prefixes().includes(prefix)) {
- prefix = false;
- }
-
- node._autoprefixerPrefix = prefix;
- return node._autoprefixerPrefix;
- }
- /**
- * Clone node with prefixes
- */
- ;
-
- _proto.process = function process(node, result) {
- if (!this.check(node)) {
- return undefined;
- }
-
- var parent = this.parentPrefix(node);
- var prefixes = this.prefixes.filter(function (prefix) {
- return !parent || parent === utils.removeNote(prefix);
- });
- var added = [];
-
- for (var _iterator = prefixes, _isArray = Array.isArray(_iterator), _i2 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i2 >= _iterator.length) break;
- _ref = _iterator[_i2++];
- } else {
- _i2 = _iterator.next();
- if (_i2.done) break;
- _ref = _i2.value;
- }
-
- var prefix = _ref;
-
- if (this.add(node, prefix, added.concat([prefix]), result)) {
- added.push(prefix);
- }
- }
-
- return added;
- }
- /**
- * Shortcut for Prefixer.clone
- */
- ;
-
- _proto.clone = function clone(node, overrides) {
- return Prefixer.clone(node, overrides);
- };
-
- return Prefixer;
-}();
-
-module.exports = Prefixer; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/prefixes.js b/assets/node_modules/autoprefixer/lib/prefixes.js
deleted file mode 100644
index cb30826..0000000
--- a/assets/node_modules/autoprefixer/lib/prefixes.js
+++ /dev/null
@@ -1,543 +0,0 @@
-"use strict";
-
-var vendor = require('postcss').vendor;
-
-var Declaration = require('./declaration');
-
-var Resolution = require('./resolution');
-
-var Transition = require('./transition');
-
-var Processor = require('./processor');
-
-var Supports = require('./supports');
-
-var Browsers = require('./browsers');
-
-var Selector = require('./selector');
-
-var AtRule = require('./at-rule');
-
-var Value = require('./value');
-
-var utils = require('./utils');
-
-Selector.hack(require('./hacks/fullscreen'));
-Selector.hack(require('./hacks/placeholder'));
-Declaration.hack(require('./hacks/flex'));
-Declaration.hack(require('./hacks/order'));
-Declaration.hack(require('./hacks/filter'));
-Declaration.hack(require('./hacks/grid-end'));
-Declaration.hack(require('./hacks/animation'));
-Declaration.hack(require('./hacks/flex-flow'));
-Declaration.hack(require('./hacks/flex-grow'));
-Declaration.hack(require('./hacks/flex-wrap'));
-Declaration.hack(require('./hacks/grid-area'));
-Declaration.hack(require('./hacks/place-self'));
-Declaration.hack(require('./hacks/grid-start'));
-Declaration.hack(require('./hacks/align-self'));
-Declaration.hack(require('./hacks/appearance'));
-Declaration.hack(require('./hacks/flex-basis'));
-Declaration.hack(require('./hacks/mask-border'));
-Declaration.hack(require('./hacks/mask-composite'));
-Declaration.hack(require('./hacks/align-items'));
-Declaration.hack(require('./hacks/user-select'));
-Declaration.hack(require('./hacks/flex-shrink'));
-Declaration.hack(require('./hacks/break-props'));
-Declaration.hack(require('./hacks/color-adjust'));
-Declaration.hack(require('./hacks/writing-mode'));
-Declaration.hack(require('./hacks/border-image'));
-Declaration.hack(require('./hacks/align-content'));
-Declaration.hack(require('./hacks/border-radius'));
-Declaration.hack(require('./hacks/block-logical'));
-Declaration.hack(require('./hacks/grid-template'));
-Declaration.hack(require('./hacks/inline-logical'));
-Declaration.hack(require('./hacks/grid-row-align'));
-Declaration.hack(require('./hacks/transform-decl'));
-Declaration.hack(require('./hacks/flex-direction'));
-Declaration.hack(require('./hacks/image-rendering'));
-Declaration.hack(require('./hacks/backdrop-filter'));
-Declaration.hack(require('./hacks/background-clip'));
-Declaration.hack(require('./hacks/text-decoration'));
-Declaration.hack(require('./hacks/justify-content'));
-Declaration.hack(require('./hacks/background-size'));
-Declaration.hack(require('./hacks/grid-row-column'));
-Declaration.hack(require('./hacks/grid-rows-columns'));
-Declaration.hack(require('./hacks/grid-column-align'));
-Declaration.hack(require('./hacks/overscroll-behavior'));
-Declaration.hack(require('./hacks/grid-template-areas'));
-Declaration.hack(require('./hacks/text-emphasis-position'));
-Declaration.hack(require('./hacks/text-decoration-skip-ink'));
-Value.hack(require('./hacks/gradient'));
-Value.hack(require('./hacks/intrinsic'));
-Value.hack(require('./hacks/pixelated'));
-Value.hack(require('./hacks/image-set'));
-Value.hack(require('./hacks/cross-fade'));
-Value.hack(require('./hacks/display-flex'));
-Value.hack(require('./hacks/display-grid'));
-Value.hack(require('./hacks/filter-value'));
-var declsCache = {};
-
-var Prefixes =
-/*#__PURE__*/
-function () {
- function Prefixes(data, browsers, options) {
- if (options === void 0) {
- options = {};
- }
-
- this.data = data;
- this.browsers = browsers;
- this.options = options;
-
- var _this$preprocess = this.preprocess(this.select(this.data));
-
- this.add = _this$preprocess[0];
- this.remove = _this$preprocess[1];
- this.transition = new Transition(this);
- this.processor = new Processor(this);
- }
- /**
- * Return clone instance to remove all prefixes
- */
-
-
- var _proto = Prefixes.prototype;
-
- _proto.cleaner = function cleaner() {
- if (this.cleanerCache) {
- return this.cleanerCache;
- }
-
- if (this.browsers.selected.length) {
- var empty = new Browsers(this.browsers.data, []);
- this.cleanerCache = new Prefixes(this.data, empty, this.options);
- } else {
- return this;
- }
-
- return this.cleanerCache;
- }
- /**
- * Select prefixes from data, which is necessary for selected browsers
- */
- ;
-
- _proto.select = function select(list) {
- var _this = this;
-
- var selected = {
- add: {},
- remove: {}
- };
-
- var _loop = function _loop(name) {
- var data = list[name];
- var add = data.browsers.map(function (i) {
- var params = i.split(' ');
- return {
- browser: params[0] + " " + params[1],
- note: params[2]
- };
- });
- var notes = add.filter(function (i) {
- return i.note;
- }).map(function (i) {
- return _this.browsers.prefix(i.browser) + " " + i.note;
- });
- notes = utils.uniq(notes);
- add = add.filter(function (i) {
- return _this.browsers.isSelected(i.browser);
- }).map(function (i) {
- var prefix = _this.browsers.prefix(i.browser);
-
- if (i.note) {
- return prefix + " " + i.note;
- } else {
- return prefix;
- }
- });
- add = _this.sort(utils.uniq(add));
-
- if (_this.options.flexbox === 'no-2009') {
- add = add.filter(function (i) {
- return !i.includes('2009');
- });
- }
-
- var all = data.browsers.map(function (i) {
- return _this.browsers.prefix(i);
- });
-
- if (data.mistakes) {
- all = all.concat(data.mistakes);
- }
-
- all = all.concat(notes);
- all = utils.uniq(all);
-
- if (add.length) {
- selected.add[name] = add;
-
- if (add.length < all.length) {
- selected.remove[name] = all.filter(function (i) {
- return !add.includes(i);
- });
- }
- } else {
- selected.remove[name] = all;
- }
- };
-
- for (var name in list) {
- _loop(name);
- }
-
- return selected;
- }
- /**
- * Sort vendor prefixes
- */
- ;
-
- _proto.sort = function sort(prefixes) {
- return prefixes.sort(function (a, b) {
- var aLength = utils.removeNote(a).length;
- var bLength = utils.removeNote(b).length;
-
- if (aLength === bLength) {
- return b.length - a.length;
- } else {
- return bLength - aLength;
- }
- });
- }
- /**
- * Cache prefixes data to fast CSS processing
- */
- ;
-
- _proto.preprocess = function preprocess(selected) {
- var add = {
- 'selectors': [],
- '@supports': new Supports(Prefixes, this)
- };
-
- for (var name in selected.add) {
- var prefixes = selected.add[name];
-
- if (name === '@keyframes' || name === '@viewport') {
- add[name] = new AtRule(name, prefixes, this);
- } else if (name === '@resolution') {
- add[name] = new Resolution(name, prefixes, this);
- } else if (this.data[name].selector) {
- add.selectors.push(Selector.load(name, prefixes, this));
- } else {
- var props = this.data[name].props;
-
- if (props) {
- var value = Value.load(name, prefixes, this);
-
- for (var _iterator = props, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var prop = _ref;
-
- if (!add[prop]) {
- add[prop] = {
- values: []
- };
- }
-
- add[prop].values.push(value);
- }
- } else {
- var values = add[name] && add[name].values || [];
- add[name] = Declaration.load(name, prefixes, this);
- add[name].values = values;
- }
- }
- }
-
- var remove = {
- selectors: []
- };
-
- for (var _name in selected.remove) {
- var _prefixes = selected.remove[_name];
-
- if (this.data[_name].selector) {
- var selector = Selector.load(_name, _prefixes);
-
- for (var _iterator2 = _prefixes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
- var _ref2;
-
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- _ref2 = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- _ref2 = _i2.value;
- }
-
- var prefix = _ref2;
- remove.selectors.push(selector.old(prefix));
- }
- } else if (_name === '@keyframes' || _name === '@viewport') {
- for (var _iterator3 = _prefixes, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
- var _ref3;
-
- if (_isArray3) {
- if (_i3 >= _iterator3.length) break;
- _ref3 = _iterator3[_i3++];
- } else {
- _i3 = _iterator3.next();
- if (_i3.done) break;
- _ref3 = _i3.value;
- }
-
- var _prefix = _ref3;
-
- var prefixed = "@" + _prefix + _name.slice(1);
-
- remove[prefixed] = {
- remove: true
- };
- }
- } else if (_name === '@resolution') {
- remove[_name] = new Resolution(_name, _prefixes, this);
- } else {
- var _props = this.data[_name].props;
-
- if (_props) {
- var _value = Value.load(_name, [], this);
-
- for (var _iterator4 = _prefixes, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
- var _ref4;
-
- if (_isArray4) {
- if (_i4 >= _iterator4.length) break;
- _ref4 = _iterator4[_i4++];
- } else {
- _i4 = _iterator4.next();
- if (_i4.done) break;
- _ref4 = _i4.value;
- }
-
- var _prefix2 = _ref4;
-
- var old = _value.old(_prefix2);
-
- if (old) {
- for (var _iterator5 = _props, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
- var _ref5;
-
- if (_isArray5) {
- if (_i5 >= _iterator5.length) break;
- _ref5 = _iterator5[_i5++];
- } else {
- _i5 = _iterator5.next();
- if (_i5.done) break;
- _ref5 = _i5.value;
- }
-
- var _prop = _ref5;
-
- if (!remove[_prop]) {
- remove[_prop] = {};
- }
-
- if (!remove[_prop].values) {
- remove[_prop].values = [];
- }
-
- remove[_prop].values.push(old);
- }
- }
- }
- } else {
- for (var _iterator6 = _prefixes, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
- var _ref6;
-
- if (_isArray6) {
- if (_i6 >= _iterator6.length) break;
- _ref6 = _iterator6[_i6++];
- } else {
- _i6 = _iterator6.next();
- if (_i6.done) break;
- _ref6 = _i6.value;
- }
-
- var p = _ref6;
- var olds = this.decl(_name).old(_name, p);
-
- if (_name === 'align-self') {
- var a = add[_name] && add[_name].prefixes;
-
- if (a) {
- if (p === '-webkit- 2009' && a.includes('-webkit-')) {
- continue;
- } else if (p === '-webkit-' && a.includes('-webkit- 2009')) {
- continue;
- }
- }
- }
-
- for (var _iterator7 = olds, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
- var _ref7;
-
- if (_isArray7) {
- if (_i7 >= _iterator7.length) break;
- _ref7 = _iterator7[_i7++];
- } else {
- _i7 = _iterator7.next();
- if (_i7.done) break;
- _ref7 = _i7.value;
- }
-
- var _prefixed = _ref7;
-
- if (!remove[_prefixed]) {
- remove[_prefixed] = {};
- }
-
- remove[_prefixed].remove = true;
- }
- }
- }
- }
- }
-
- return [add, remove];
- }
- /**
- * Declaration loader with caching
- */
- ;
-
- _proto.decl = function decl(prop) {
- var decl = declsCache[prop];
-
- if (decl) {
- return decl;
- } else {
- declsCache[prop] = Declaration.load(prop);
- return declsCache[prop];
- }
- }
- /**
- * Return unprefixed version of property
- */
- ;
-
- _proto.unprefixed = function unprefixed(prop) {
- var value = this.normalize(vendor.unprefixed(prop));
-
- if (value === 'flex-direction') {
- value = 'flex-flow';
- }
-
- return value;
- }
- /**
- * Normalize prefix for remover
- */
- ;
-
- _proto.normalize = function normalize(prop) {
- return this.decl(prop).normalize(prop);
- }
- /**
- * Return prefixed version of property
- */
- ;
-
- _proto.prefixed = function prefixed(prop, prefix) {
- prop = vendor.unprefixed(prop);
- return this.decl(prop).prefixed(prop, prefix);
- }
- /**
- * Return values, which must be prefixed in selected property
- */
- ;
-
- _proto.values = function values(type, prop) {
- var data = this[type];
- var global = data['*'] && data['*'].values;
- var values = data[prop] && data[prop].values;
-
- if (global && values) {
- return utils.uniq(global.concat(values));
- } else {
- return global || values || [];
- }
- }
- /**
- * Group declaration by unprefixed property to check them
- */
- ;
-
- _proto.group = function group(decl) {
- var _this2 = this;
-
- var rule = decl.parent;
- var index = rule.index(decl);
- var length = rule.nodes.length;
- var unprefixed = this.unprefixed(decl.prop);
-
- var checker = function checker(step, callback) {
- index += step;
-
- while (index >= 0 && index < length) {
- var other = rule.nodes[index];
-
- if (other.type === 'decl') {
- if (step === -1 && other.prop === unprefixed) {
- if (!Browsers.withPrefix(other.value)) {
- break;
- }
- }
-
- if (_this2.unprefixed(other.prop) !== unprefixed) {
- break;
- } else if (callback(other) === true) {
- return true;
- }
-
- if (step === +1 && other.prop === unprefixed) {
- if (!Browsers.withPrefix(other.value)) {
- break;
- }
- }
- }
-
- index += step;
- }
-
- return false;
- };
-
- return {
- up: function up(callback) {
- return checker(-1, callback);
- },
- down: function down(callback) {
- return checker(+1, callback);
- }
- };
- };
-
- return Prefixes;
-}();
-
-module.exports = Prefixes; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/processor.js b/assets/node_modules/autoprefixer/lib/processor.js
deleted file mode 100644
index 207cc2e..0000000
--- a/assets/node_modules/autoprefixer/lib/processor.js
+++ /dev/null
@@ -1,763 +0,0 @@
-"use strict";
-
-var parser = require('postcss-value-parser');
-
-var Value = require('./value');
-
-var insertAreas = require('./hacks/grid-utils').insertAreas;
-
-var OLD_LINEAR = /(^|[^-])linear-gradient\(\s*(top|left|right|bottom)/i;
-var OLD_RADIAL = /(^|[^-])radial-gradient\(\s*\d+(\w*|%)\s+\d+(\w*|%)\s*,/i;
-var IGNORE_NEXT = /(!\s*)?autoprefixer:\s*ignore\s+next/i;
-var GRID_REGEX = /(!\s*)?autoprefixer\s*grid:\s*(on|off|(no-)?autoplace)/i;
-var SIZES = ['width', 'height', 'min-width', 'max-width', 'min-height', 'max-height', 'inline-size', 'min-inline-size', 'max-inline-size', 'block-size', 'min-block-size', 'max-block-size'];
-
-function hasGridTemplate(decl) {
- return decl.parent.some(function (i) {
- return i.prop === 'grid-template' || i.prop === 'grid-template-areas';
- });
-}
-
-function hasRowsAndColumns(decl) {
- var hasRows = decl.parent.some(function (i) {
- return i.prop === 'grid-template-rows';
- });
- var hasColumns = decl.parent.some(function (i) {
- return i.prop === 'grid-template-columns';
- });
- return hasRows && hasColumns;
-}
-
-var Processor =
-/*#__PURE__*/
-function () {
- function Processor(prefixes) {
- this.prefixes = prefixes;
- }
- /**
- * Add necessary prefixes
- */
-
-
- var _proto = Processor.prototype;
-
- _proto.add = function add(css, result) {
- var _this = this;
-
- // At-rules
- var resolution = this.prefixes.add['@resolution'];
- var keyframes = this.prefixes.add['@keyframes'];
- var viewport = this.prefixes.add['@viewport'];
- var supports = this.prefixes.add['@supports'];
- css.walkAtRules(function (rule) {
- if (rule.name === 'keyframes') {
- if (!_this.disabled(rule, result)) {
- return keyframes && keyframes.process(rule);
- }
- } else if (rule.name === 'viewport') {
- if (!_this.disabled(rule, result)) {
- return viewport && viewport.process(rule);
- }
- } else if (rule.name === 'supports') {
- if (_this.prefixes.options.supports !== false && !_this.disabled(rule, result)) {
- return supports.process(rule);
- }
- } else if (rule.name === 'media' && rule.params.includes('-resolution')) {
- if (!_this.disabled(rule, result)) {
- return resolution && resolution.process(rule);
- }
- }
-
- return undefined;
- }); // Selectors
-
- css.walkRules(function (rule) {
- if (_this.disabled(rule, result)) return undefined;
- return _this.prefixes.add.selectors.map(function (selector) {
- return selector.process(rule, result);
- });
- });
-
- function insideGrid(decl) {
- return decl.parent.nodes.some(function (node) {
- if (node.type !== 'decl') return false;
- var displayGrid = node.prop === 'display' && /(inline-)?grid/.test(node.value);
- var gridTemplate = node.prop.startsWith('grid-template');
- var gridGap = /^grid-([A-z]+-)?gap/.test(node.prop);
- return displayGrid || gridTemplate || gridGap;
- });
- }
-
- function insideFlex(decl) {
- return decl.parent.some(function (node) {
- return node.prop === 'display' && /(inline-)?flex/.test(node.value);
- });
- }
-
- var gridPrefixes = this.gridStatus(css, result) && this.prefixes.add['grid-area'] && this.prefixes.add['grid-area'].prefixes;
- css.walkDecls(function (decl) {
- if (_this.disabledDecl(decl, result)) return undefined;
- var parent = decl.parent;
- var prop = decl.prop;
- var value = decl.value;
-
- if (prop === 'grid-row-span') {
- result.warn('grid-row-span is not part of final Grid Layout. Use grid-row.', {
- node: decl
- });
- return undefined;
- } else if (prop === 'grid-column-span') {
- result.warn('grid-column-span is not part of final Grid Layout. Use grid-column.', {
- node: decl
- });
- return undefined;
- } else if (prop === 'display' && value === 'box') {
- result.warn('You should write display: flex by final spec ' + 'instead of display: box', {
- node: decl
- });
- return undefined;
- } else if (prop === 'text-emphasis-position') {
- if (value === 'under' || value === 'over') {
- result.warn('You should use 2 values for text-emphasis-position ' + 'For example, `under left` instead of just `under`.', {
- node: decl
- });
- }
- } else if (/^(align|justify|place)-(items|content)$/.test(prop) && insideFlex(decl)) {
- if (value === 'start' || value === 'end') {
- result.warn(value + " value has mixed support, consider using " + ("flex-" + value + " instead"), {
- node: decl
- });
- }
- } else if (prop === 'text-decoration-skip' && value === 'ink') {
- result.warn('Replace text-decoration-skip: ink to ' + 'text-decoration-skip-ink: auto, because spec had been changed', {
- node: decl
- });
- } else {
- if (gridPrefixes) {
- if (/^(align|justify|place)-items$/.test(prop) && insideGrid(decl)) {
- var fixed = prop.replace('-items', '-self');
- result.warn("IE does not support " + prop + " on grid containers. " + ("Try using " + fixed + " on child elements instead: ") + (decl.parent.selector + " > * { " + fixed + ": " + decl.value + " }"), {
- node: decl
- });
- } else if (/^(align|justify|place)-content$/.test(prop) && insideGrid(decl)) {
- result.warn("IE does not support " + decl.prop + " on grid containers", {
- node: decl
- });
- } else if (prop === 'display' && decl.value === 'contents') {
- result.warn('Please do not use display: contents; ' + 'if you have grid setting enabled', {
- node: decl
- });
- return undefined;
- } else if (decl.prop === 'grid-gap') {
- var status = _this.gridStatus(decl, result);
-
- if (status === 'autoplace' && !hasRowsAndColumns(decl) && !hasGridTemplate(decl)) {
- result.warn('grid-gap only works if grid-template(-areas) is being ' + 'used or both rows and columns have been declared ' + 'and cells have not been manually ' + 'placed inside the explicit grid', {
- node: decl
- });
- } else if ((status === true || status === 'no-autoplace') && !hasGridTemplate(decl)) {
- result.warn('grid-gap only works if grid-template(-areas) is being used', {
- node: decl
- });
- }
- } else if (prop === 'grid-auto-columns') {
- result.warn('grid-auto-columns is not supported by IE', {
- node: decl
- });
- return undefined;
- } else if (prop === 'grid-auto-rows') {
- result.warn('grid-auto-rows is not supported by IE', {
- node: decl
- });
- return undefined;
- } else if (prop === 'grid-auto-flow') {
- var hasRows = parent.some(function (i) {
- return i.prop === 'grid-template-rows';
- });
- var hasCols = parent.some(function (i) {
- return i.prop === 'grid-template-columns';
- });
-
- if (hasGridTemplate(decl)) {
- result.warn('grid-auto-flow is not supported by IE', {
- node: decl
- });
- } else if (value.includes('dense')) {
- result.warn('grid-auto-flow: dense is not supported by IE', {
- node: decl
- });
- } else if (!hasRows && !hasCols) {
- result.warn('grid-auto-flow works only if grid-template-rows and ' + 'grid-template-columns are present in the same rule', {
- node: decl
- });
- }
-
- return undefined;
- } else if (value.includes('auto-fit')) {
- result.warn('auto-fit value is not supported by IE', {
- node: decl,
- word: 'auto-fit'
- });
- return undefined;
- } else if (value.includes('auto-fill')) {
- result.warn('auto-fill value is not supported by IE', {
- node: decl,
- word: 'auto-fill'
- });
- return undefined;
- } else if (prop.startsWith('grid-template') && value.includes('[')) {
- result.warn('Autoprefixer currently does not support line names. ' + 'Try using grid-template-areas instead.', {
- node: decl,
- word: '['
- });
- }
- }
-
- if (value.includes('radial-gradient')) {
- if (OLD_RADIAL.test(decl.value)) {
- result.warn('Gradient has outdated direction syntax. ' + 'New syntax is like `closest-side at 0 0` ' + 'instead of `0 0, closest-side`.', {
- node: decl
- });
- } else {
- var ast = parser(value);
-
- for (var _iterator = ast.nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var i = _ref;
-
- if (i.type === 'function' && i.value === 'radial-gradient') {
- for (var _iterator2 = i.nodes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
- var _ref2;
-
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- _ref2 = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- _ref2 = _i2.value;
- }
-
- var word = _ref2;
-
- if (word.type === 'word') {
- if (word.value === 'cover') {
- result.warn('Gradient has outdated direction syntax. ' + 'Replace `cover` to `farthest-corner`.', {
- node: decl
- });
- } else if (word.value === 'contain') {
- result.warn('Gradient has outdated direction syntax. ' + 'Replace `contain` to `closest-side`.', {
- node: decl
- });
- }
- }
- }
- }
- }
- }
- }
-
- if (value.includes('linear-gradient')) {
- if (OLD_LINEAR.test(value)) {
- result.warn('Gradient has outdated direction syntax. ' + 'New syntax is like `to left` instead of `right`.', {
- node: decl
- });
- }
- }
- }
-
- if (SIZES.includes(decl.prop)) {
- if (!decl.value.includes('-fill-available')) {
- if (decl.value.includes('fill-available')) {
- result.warn('Replace fill-available to stretch, ' + 'because spec had been changed', {
- node: decl
- });
- } else if (decl.value.includes('fill')) {
- var _ast = parser(value);
-
- if (_ast.nodes.some(function (i) {
- return i.type === 'word' && i.value === 'fill';
- })) {
- result.warn('Replace fill to stretch, because spec had been changed', {
- node: decl
- });
- }
- }
- }
- }
-
- var prefixer;
-
- if (decl.prop === 'transition' || decl.prop === 'transition-property') {
- // Transition
- return _this.prefixes.transition.add(decl, result);
- } else if (decl.prop === 'align-self') {
- // align-self flexbox or grid
- var display = _this.displayType(decl);
-
- if (display !== 'grid' && _this.prefixes.options.flexbox !== false) {
- prefixer = _this.prefixes.add['align-self'];
-
- if (prefixer && prefixer.prefixes) {
- prefixer.process(decl);
- }
- }
-
- if (display !== 'flex' && _this.gridStatus(decl, result) !== false) {
- prefixer = _this.prefixes.add['grid-row-align'];
-
- if (prefixer && prefixer.prefixes) {
- return prefixer.process(decl, result);
- }
- }
- } else if (decl.prop === 'justify-self') {
- // justify-self flexbox or grid
- var _display = _this.displayType(decl);
-
- if (_display !== 'flex' && _this.gridStatus(decl, result) !== false) {
- prefixer = _this.prefixes.add['grid-column-align'];
-
- if (prefixer && prefixer.prefixes) {
- return prefixer.process(decl, result);
- }
- }
- } else if (decl.prop === 'place-self') {
- prefixer = _this.prefixes.add['place-self'];
-
- if (prefixer && prefixer.prefixes && _this.gridStatus(decl, result) !== false) {
- return prefixer.process(decl, result);
- }
- } else {
- // Properties
- prefixer = _this.prefixes.add[decl.prop];
-
- if (prefixer && prefixer.prefixes) {
- return prefixer.process(decl, result);
- }
- }
-
- return undefined;
- }); // Insert grid-area prefixes. We need to be able to store the different
- // rules as a data and hack API is not enough for this
-
- if (this.gridStatus(css, result)) {
- insertAreas(css, this.disabled);
- } // Values
-
-
- return css.walkDecls(function (decl) {
- if (_this.disabledValue(decl, result)) return;
-
- var unprefixed = _this.prefixes.unprefixed(decl.prop);
-
- var list = _this.prefixes.values('add', unprefixed);
-
- if (Array.isArray(list)) {
- for (var _iterator3 = list, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
- var _ref3;
-
- if (_isArray3) {
- if (_i3 >= _iterator3.length) break;
- _ref3 = _iterator3[_i3++];
- } else {
- _i3 = _iterator3.next();
- if (_i3.done) break;
- _ref3 = _i3.value;
- }
-
- var value = _ref3;
- if (value.process) value.process(decl, result);
- }
- }
-
- Value.save(_this.prefixes, decl);
- });
- }
- /**
- * Remove unnecessary pefixes
- */
- ;
-
- _proto.remove = function remove(css, result) {
- var _this2 = this;
-
- // At-rules
- var resolution = this.prefixes.remove['@resolution'];
- css.walkAtRules(function (rule, i) {
- if (_this2.prefixes.remove["@" + rule.name]) {
- if (!_this2.disabled(rule, result)) {
- rule.parent.removeChild(i);
- }
- } else if (rule.name === 'media' && rule.params.includes('-resolution') && resolution) {
- resolution.clean(rule);
- }
- }); // Selectors
-
- var _loop = function _loop() {
- if (_isArray4) {
- if (_i4 >= _iterator4.length) return "break";
- _ref4 = _iterator4[_i4++];
- } else {
- _i4 = _iterator4.next();
- if (_i4.done) return "break";
- _ref4 = _i4.value;
- }
-
- var checker = _ref4;
- css.walkRules(function (rule, i) {
- if (checker.check(rule)) {
- if (!_this2.disabled(rule, result)) {
- rule.parent.removeChild(i);
- }
- }
- });
- };
-
- for (var _iterator4 = this.prefixes.remove.selectors, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
- var _ref4;
-
- var _ret = _loop();
-
- if (_ret === "break") break;
- }
-
- return css.walkDecls(function (decl, i) {
- if (_this2.disabled(decl, result)) return;
- var rule = decl.parent;
-
- var unprefixed = _this2.prefixes.unprefixed(decl.prop); // Transition
-
-
- if (decl.prop === 'transition' || decl.prop === 'transition-property') {
- _this2.prefixes.transition.remove(decl);
- } // Properties
-
-
- if (_this2.prefixes.remove[decl.prop] && _this2.prefixes.remove[decl.prop].remove) {
- var notHack = _this2.prefixes.group(decl).down(function (other) {
- return _this2.prefixes.normalize(other.prop) === unprefixed;
- });
-
- if (unprefixed === 'flex-flow') {
- notHack = true;
- }
-
- if (decl.prop === '-webkit-box-orient') {
- var hacks = {
- 'flex-direction': true,
- 'flex-flow': true
- };
- if (!decl.parent.some(function (j) {
- return hacks[j.prop];
- })) return;
- }
-
- if (notHack && !_this2.withHackValue(decl)) {
- if (decl.raw('before').includes('\n')) {
- _this2.reduceSpaces(decl);
- }
-
- rule.removeChild(i);
- return;
- }
- } // Values
-
-
- for (var _iterator5 = _this2.prefixes.values('remove', unprefixed), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
- var _ref5;
-
- if (_isArray5) {
- if (_i5 >= _iterator5.length) break;
- _ref5 = _iterator5[_i5++];
- } else {
- _i5 = _iterator5.next();
- if (_i5.done) break;
- _ref5 = _i5.value;
- }
-
- var checker = _ref5;
- if (!checker.check) continue;
- if (!checker.check(decl.value)) continue;
- unprefixed = checker.unprefixed;
-
- var _notHack = _this2.prefixes.group(decl).down(function (other) {
- return other.value.includes(unprefixed);
- });
-
- if (_notHack) {
- rule.removeChild(i);
- return;
- }
- }
- });
- }
- /**
- * Some rare old values, which is not in standard
- */
- ;
-
- _proto.withHackValue = function withHackValue(decl) {
- return decl.prop === '-webkit-background-clip' && decl.value === 'text';
- }
- /**
- * Check for grid/flexbox options.
- */
- ;
-
- _proto.disabledValue = function disabledValue(node, result) {
- if (this.gridStatus(node, result) === false && node.type === 'decl') {
- if (node.prop === 'display' && node.value.includes('grid')) {
- return true;
- }
- }
-
- if (this.prefixes.options.flexbox === false && node.type === 'decl') {
- if (node.prop === 'display' && node.value.includes('flex')) {
- return true;
- }
- }
-
- return this.disabled(node, result);
- }
- /**
- * Check for grid/flexbox options.
- */
- ;
-
- _proto.disabledDecl = function disabledDecl(node, result) {
- if (this.gridStatus(node, result) === false && node.type === 'decl') {
- if (node.prop.includes('grid') || node.prop === 'justify-items') {
- return true;
- }
- }
-
- if (this.prefixes.options.flexbox === false && node.type === 'decl') {
- var other = ['order', 'justify-content', 'align-items', 'align-content'];
-
- if (node.prop.includes('flex') || other.includes(node.prop)) {
- return true;
- }
- }
-
- return this.disabled(node, result);
- }
- /**
- * Check for control comment and global options
- */
- ;
-
- _proto.disabled = function disabled(node, result) {
- if (!node) return false;
-
- if (node._autoprefixerDisabled !== undefined) {
- return node._autoprefixerDisabled;
- }
-
- if (node.parent) {
- var p = node.prev();
-
- if (p && p.type === 'comment' && IGNORE_NEXT.test(p.text)) {
- node._autoprefixerDisabled = true;
- node._autoprefixerSelfDisabled = true;
- return true;
- }
- }
-
- var value = null;
-
- if (node.nodes) {
- var status;
- node.each(function (i) {
- if (i.type !== 'comment') return;
-
- if (/(!\s*)?autoprefixer:\s*(off|on)/i.test(i.text)) {
- if (typeof status !== 'undefined') {
- result.warn('Second Autoprefixer control comment ' + 'was ignored. Autoprefixer applies control ' + 'comment to whole block, not to next rules.', {
- node: i
- });
- } else {
- status = /on/i.test(i.text);
- }
- }
- });
-
- if (status !== undefined) {
- value = !status;
- }
- }
-
- if (!node.nodes || value === null) {
- if (node.parent) {
- var isParentDisabled = this.disabled(node.parent, result);
-
- if (node.parent._autoprefixerSelfDisabled === true) {
- value = false;
- } else {
- value = isParentDisabled;
- }
- } else {
- value = false;
- }
- }
-
- node._autoprefixerDisabled = value;
- return value;
- }
- /**
- * Normalize spaces in cascade declaration group
- */
- ;
-
- _proto.reduceSpaces = function reduceSpaces(decl) {
- var stop = false;
- this.prefixes.group(decl).up(function () {
- stop = true;
- return true;
- });
-
- if (stop) {
- return;
- }
-
- var parts = decl.raw('before').split('\n');
- var prevMin = parts[parts.length - 1].length;
- var diff = false;
- this.prefixes.group(decl).down(function (other) {
- parts = other.raw('before').split('\n');
- var last = parts.length - 1;
-
- if (parts[last].length > prevMin) {
- if (diff === false) {
- diff = parts[last].length - prevMin;
- }
-
- parts[last] = parts[last].slice(0, -diff);
- other.raws.before = parts.join('\n');
- }
- });
- }
- /**
- * Is it flebox or grid rule
- */
- ;
-
- _proto.displayType = function displayType(decl) {
- for (var _iterator6 = decl.parent.nodes, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
- var _ref6;
-
- if (_isArray6) {
- if (_i6 >= _iterator6.length) break;
- _ref6 = _iterator6[_i6++];
- } else {
- _i6 = _iterator6.next();
- if (_i6.done) break;
- _ref6 = _i6.value;
- }
-
- var i = _ref6;
-
- if (i.prop !== 'display') {
- continue;
- }
-
- if (i.value.includes('flex')) {
- return 'flex';
- }
-
- if (i.value.includes('grid')) {
- return 'grid';
- }
- }
-
- return false;
- }
- /**
- * Set grid option via control comment
- */
- ;
-
- _proto.gridStatus = function gridStatus(node, result) {
- if (!node) return false;
-
- if (node._autoprefixerGridStatus !== undefined) {
- return node._autoprefixerGridStatus;
- }
-
- var value = null;
-
- if (node.nodes) {
- var status;
- node.each(function (i) {
- if (i.type !== 'comment') return;
-
- if (GRID_REGEX.test(i.text)) {
- var hasAutoplace = /:\s*autoplace/i.test(i.text);
- var noAutoplace = /no-autoplace/i.test(i.text);
-
- if (typeof status !== 'undefined') {
- result.warn('Second Autoprefixer grid control comment was ' + 'ignored. Autoprefixer applies control comments to the whole ' + 'block, not to the next rules.', {
- node: i
- });
- } else if (hasAutoplace) {
- status = 'autoplace';
- } else if (noAutoplace) {
- status = true;
- } else {
- status = /on/i.test(i.text);
- }
- }
- });
-
- if (status !== undefined) {
- value = status;
- }
- }
-
- if (node.type === 'atrule' && node.name === 'supports') {
- var params = node.params;
-
- if (params.includes('grid') && params.includes('auto')) {
- value = false;
- }
- }
-
- if (!node.nodes || value === null) {
- if (node.parent) {
- var isParentGrid = this.gridStatus(node.parent, result);
-
- if (node.parent._autoprefixerSelfDisabled === true) {
- value = false;
- } else {
- value = isParentGrid;
- }
- } else if (typeof this.prefixes.options.grid !== 'undefined') {
- value = this.prefixes.options.grid;
- } else if (typeof process.env.AUTOPREFIXER_GRID !== 'undefined') {
- if (process.env.AUTOPREFIXER_GRID === 'autoplace') {
- value = 'autoplace';
- } else {
- value = true;
- }
- } else {
- value = false;
- }
- }
-
- node._autoprefixerGridStatus = value;
- return value;
- };
-
- return Processor;
-}();
-
-module.exports = Processor; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/resolution.js b/assets/node_modules/autoprefixer/lib/resolution.js
deleted file mode 100644
index 4092e4e..0000000
--- a/assets/node_modules/autoprefixer/lib/resolution.js
+++ /dev/null
@@ -1,156 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-var n2f = require('num2fraction');
-
-var Prefixer = require('./prefixer');
-
-var utils = require('./utils');
-
-var REGEXP = /(min|max)-resolution\s*:\s*\d*\.?\d+(dppx|dpi|x)/gi;
-var SPLIT = /(min|max)-resolution(\s*:\s*)(\d*\.?\d+)(dppx|dpi|x)/i;
-
-var Resolution =
-/*#__PURE__*/
-function (_Prefixer) {
- _inheritsLoose(Resolution, _Prefixer);
-
- function Resolution() {
- return _Prefixer.apply(this, arguments) || this;
- }
-
- var _proto = Resolution.prototype;
-
- /**
- * Return prefixed query name
- */
- _proto.prefixName = function prefixName(prefix, name) {
- if (prefix === '-moz-') {
- return name + '--moz-device-pixel-ratio';
- } else {
- return prefix + name + '-device-pixel-ratio';
- }
- }
- /**
- * Return prefixed query
- */
- ;
-
- _proto.prefixQuery = function prefixQuery(prefix, name, colon, value, units) {
- if (units === 'dpi') {
- value = Number(value / 96);
- }
-
- if (prefix === '-o-') {
- value = n2f(value);
- }
-
- return this.prefixName(prefix, name) + colon + value;
- }
- /**
- * Remove prefixed queries
- */
- ;
-
- _proto.clean = function clean(rule) {
- var _this = this;
-
- if (!this.bad) {
- this.bad = [];
-
- for (var _iterator = this.prefixes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var prefix = _ref;
- this.bad.push(this.prefixName(prefix, 'min'));
- this.bad.push(this.prefixName(prefix, 'max'));
- }
- }
-
- rule.params = utils.editList(rule.params, function (queries) {
- return queries.filter(function (query) {
- return _this.bad.every(function (i) {
- return !query.includes(i);
- });
- });
- });
- }
- /**
- * Add prefixed queries
- */
- ;
-
- _proto.process = function process(rule) {
- var _this2 = this;
-
- var parent = this.parentPrefix(rule);
- var prefixes = parent ? [parent] : this.prefixes;
- rule.params = utils.editList(rule.params, function (origin, prefixed) {
- for (var _iterator2 = origin, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
- var _ref2;
-
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- _ref2 = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- _ref2 = _i2.value;
- }
-
- var query = _ref2;
-
- if (!query.includes('min-resolution') && !query.includes('max-resolution')) {
- prefixed.push(query);
- continue;
- }
-
- var _loop = function _loop() {
- if (_isArray3) {
- if (_i3 >= _iterator3.length) return "break";
- _ref3 = _iterator3[_i3++];
- } else {
- _i3 = _iterator3.next();
- if (_i3.done) return "break";
- _ref3 = _i3.value;
- }
-
- var prefix = _ref3;
- var processed = query.replace(REGEXP, function (str) {
- var parts = str.match(SPLIT);
- return _this2.prefixQuery(prefix, parts[1], parts[2], parts[3], parts[4]);
- });
- prefixed.push(processed);
- };
-
- for (var _iterator3 = prefixes, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
- var _ref3;
-
- var _ret = _loop();
-
- if (_ret === "break") break;
- }
-
- prefixed.push(query);
- }
-
- return utils.uniq(prefixed);
- });
- };
-
- return Resolution;
-}(Prefixer);
-
-module.exports = Resolution; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/selector.js b/assets/node_modules/autoprefixer/lib/selector.js
deleted file mode 100644
index ae84f3a..0000000
--- a/assets/node_modules/autoprefixer/lib/selector.js
+++ /dev/null
@@ -1,218 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-var _require = require('postcss'),
- list = _require.list;
-
-var OldSelector = require('./old-selector');
-
-var Prefixer = require('./prefixer');
-
-var Browsers = require('./browsers');
-
-var utils = require('./utils');
-
-var Selector =
-/*#__PURE__*/
-function (_Prefixer) {
- _inheritsLoose(Selector, _Prefixer);
-
- function Selector(name, prefixes, all) {
- var _this;
-
- _this = _Prefixer.call(this, name, prefixes, all) || this;
- _this.regexpCache = {};
- return _this;
- }
- /**
- * Is rule selectors need to be prefixed
- */
-
-
- var _proto = Selector.prototype;
-
- _proto.check = function check(rule) {
- if (rule.selector.includes(this.name)) {
- return !!rule.selector.match(this.regexp());
- }
-
- return false;
- }
- /**
- * Return prefixed version of selector
- */
- ;
-
- _proto.prefixed = function prefixed(prefix) {
- return this.name.replace(/^(\W*)/, "$1" + prefix);
- }
- /**
- * Lazy loadRegExp for name
- */
- ;
-
- _proto.regexp = function regexp(prefix) {
- if (this.regexpCache[prefix]) {
- return this.regexpCache[prefix];
- }
-
- var name = prefix ? this.prefixed(prefix) : this.name;
- this.regexpCache[prefix] = new RegExp("(^|[^:\"'=])" + utils.escapeRegexp(name), 'gi');
- return this.regexpCache[prefix];
- }
- /**
- * All possible prefixes
- */
- ;
-
- _proto.possible = function possible() {
- return Browsers.prefixes();
- }
- /**
- * Return all possible selector prefixes
- */
- ;
-
- _proto.prefixeds = function prefixeds(rule) {
- var _this2 = this;
-
- if (rule._autoprefixerPrefixeds) {
- if (rule._autoprefixerPrefixeds[this.name]) {
- return rule._autoprefixerPrefixeds;
- }
- } else {
- rule._autoprefixerPrefixeds = {};
- }
-
- var prefixeds = {};
-
- if (rule.selector.includes(',')) {
- var ruleParts = list.comma(rule.selector);
- var toProcess = ruleParts.filter(function (el) {
- return el.includes(_this2.name);
- });
-
- var _loop = function _loop() {
- if (_isArray) {
- if (_i >= _iterator.length) return "break";
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) return "break";
- _ref = _i.value;
- }
-
- var prefix = _ref;
- prefixeds[prefix] = toProcess.map(function (el) {
- return _this2.replace(el, prefix);
- }).join(', ');
- };
-
- for (var _iterator = this.possible(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- var _ret = _loop();
-
- if (_ret === "break") break;
- }
- } else {
- for (var _iterator2 = this.possible(), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
- var _ref2;
-
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- _ref2 = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- _ref2 = _i2.value;
- }
-
- var prefix = _ref2;
- prefixeds[prefix] = this.replace(rule.selector, prefix);
- }
- }
-
- rule._autoprefixerPrefixeds[this.name] = prefixeds;
- return rule._autoprefixerPrefixeds;
- }
- /**
- * Is rule already prefixed before
- */
- ;
-
- _proto.already = function already(rule, prefixeds, prefix) {
- var index = rule.parent.index(rule) - 1;
-
- while (index >= 0) {
- var before = rule.parent.nodes[index];
-
- if (before.type !== 'rule') {
- return false;
- }
-
- var some = false;
-
- for (var key in prefixeds[this.name]) {
- var prefixed = prefixeds[this.name][key];
-
- if (before.selector === prefixed) {
- if (prefix === key) {
- return true;
- } else {
- some = true;
- break;
- }
- }
- }
-
- if (!some) {
- return false;
- }
-
- index -= 1;
- }
-
- return false;
- }
- /**
- * Replace selectors by prefixed one
- */
- ;
-
- _proto.replace = function replace(selector, prefix) {
- return selector.replace(this.regexp(), "$1" + this.prefixed(prefix));
- }
- /**
- * Clone and add prefixes for at-rule
- */
- ;
-
- _proto.add = function add(rule, prefix) {
- var prefixeds = this.prefixeds(rule);
-
- if (this.already(rule, prefixeds, prefix)) {
- return;
- }
-
- var cloned = this.clone(rule, {
- selector: prefixeds[this.name][prefix]
- });
- rule.parent.insertBefore(rule, cloned);
- }
- /**
- * Return function to fast find prefixed selector
- */
- ;
-
- _proto.old = function old(prefix) {
- return new OldSelector(this, prefix);
- };
-
- return Selector;
-}(Prefixer);
-
-module.exports = Selector; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/supports.js b/assets/node_modules/autoprefixer/lib/supports.js
deleted file mode 100644
index 431caa0..0000000
--- a/assets/node_modules/autoprefixer/lib/supports.js
+++ /dev/null
@@ -1,386 +0,0 @@
-"use strict";
-
-var postcss = require('postcss');
-
-var data = require('caniuse-lite').feature(require('caniuse-lite/data/features/css-featurequeries.js'));
-
-var Browsers = require('./browsers');
-
-var brackets = require('./brackets');
-
-var Value = require('./value');
-
-var utils = require('./utils');
-
-var supported = [];
-
-for (var browser in data.stats) {
- var versions = data.stats[browser];
-
- for (var version in versions) {
- var support = versions[version];
-
- if (/y/.test(support)) {
- supported.push(browser + ' ' + version);
- }
- }
-}
-
-var Supports =
-/*#__PURE__*/
-function () {
- function Supports(Prefixes, all) {
- this.Prefixes = Prefixes;
- this.all = all;
- }
- /**
- * Return prefixer only with @supports supported browsers
- */
-
-
- var _proto = Supports.prototype;
-
- _proto.prefixer = function prefixer() {
- if (this.prefixerCache) {
- return this.prefixerCache;
- }
-
- var filtered = this.all.browsers.selected.filter(function (i) {
- return supported.includes(i);
- });
- var browsers = new Browsers(this.all.browsers.data, filtered, this.all.options);
- this.prefixerCache = new this.Prefixes(this.all.data, browsers, this.all.options);
- return this.prefixerCache;
- }
- /**
- * Parse string into declaration property and value
- */
- ;
-
- _proto.parse = function parse(str) {
- var parts = str.split(':');
- var prop = parts[0];
- var value = parts[1];
- if (!value) value = '';
- return [prop.trim(), value.trim()];
- }
- /**
- * Create virtual rule to process it by prefixer
- */
- ;
-
- _proto.virtual = function virtual(str) {
- var _this$parse = this.parse(str),
- prop = _this$parse[0],
- value = _this$parse[1];
-
- var rule = postcss.parse('a{}').first;
- rule.append({
- prop: prop,
- value: value,
- raws: {
- before: ''
- }
- });
- return rule;
- }
- /**
- * Return array of Declaration with all necessary prefixes
- */
- ;
-
- _proto.prefixed = function prefixed(str) {
- var rule = this.virtual(str);
-
- if (this.disabled(rule.first)) {
- return rule.nodes;
- }
-
- var result = {
- warn: function warn() {
- return null;
- }
- };
- var prefixer = this.prefixer().add[rule.first.prop];
- prefixer && prefixer.process && prefixer.process(rule.first, result);
-
- for (var _iterator = rule.nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var decl = _ref;
-
- for (var _iterator2 = this.prefixer().values('add', rule.first.prop), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
- var _ref2;
-
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- _ref2 = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- _ref2 = _i2.value;
- }
-
- var value = _ref2;
- value.process(decl);
- }
-
- Value.save(this.all, decl);
- }
-
- return rule.nodes;
- }
- /**
- * Return true if brackets node is "not" word
- */
- ;
-
- _proto.isNot = function isNot(node) {
- return typeof node === 'string' && /not\s*/i.test(node);
- }
- /**
- * Return true if brackets node is "or" word
- */
- ;
-
- _proto.isOr = function isOr(node) {
- return typeof node === 'string' && /\s*or\s*/i.test(node);
- }
- /**
- * Return true if brackets node is (prop: value)
- */
- ;
-
- _proto.isProp = function isProp(node) {
- return typeof node === 'object' && node.length === 1 && typeof node[0] === 'string';
- }
- /**
- * Return true if prefixed property has no unprefixed
- */
- ;
-
- _proto.isHack = function isHack(all, unprefixed) {
- var check = new RegExp("(\\(|\\s)" + utils.escapeRegexp(unprefixed) + ":");
- return !check.test(all);
- }
- /**
- * Return true if we need to remove node
- */
- ;
-
- _proto.toRemove = function toRemove(str, all) {
- var _this$parse2 = this.parse(str),
- prop = _this$parse2[0],
- value = _this$parse2[1];
-
- var unprefixed = this.all.unprefixed(prop);
- var cleaner = this.all.cleaner();
-
- if (cleaner.remove[prop] && cleaner.remove[prop].remove && !this.isHack(all, unprefixed)) {
- return true;
- }
-
- for (var _iterator3 = cleaner.values('remove', unprefixed), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
- var _ref3;
-
- if (_isArray3) {
- if (_i3 >= _iterator3.length) break;
- _ref3 = _iterator3[_i3++];
- } else {
- _i3 = _iterator3.next();
- if (_i3.done) break;
- _ref3 = _i3.value;
- }
-
- var checker = _ref3;
-
- if (checker.check(value)) {
- return true;
- }
- }
-
- return false;
- }
- /**
- * Remove all unnecessary prefixes
- */
- ;
-
- _proto.remove = function remove(nodes, all) {
- var i = 0;
-
- while (i < nodes.length) {
- if (!this.isNot(nodes[i - 1]) && this.isProp(nodes[i]) && this.isOr(nodes[i + 1])) {
- if (this.toRemove(nodes[i][0], all)) {
- nodes.splice(i, 2);
- continue;
- }
-
- i += 2;
- continue;
- }
-
- if (typeof nodes[i] === 'object') {
- nodes[i] = this.remove(nodes[i], all);
- }
-
- i += 1;
- }
-
- return nodes;
- }
- /**
- * Clean brackets with one child
- */
- ;
-
- _proto.cleanBrackets = function cleanBrackets(nodes) {
- var _this = this;
-
- return nodes.map(function (i) {
- if (typeof i !== 'object') {
- return i;
- }
-
- if (i.length === 1 && typeof i[0] === 'object') {
- return _this.cleanBrackets(i[0]);
- }
-
- return _this.cleanBrackets(i);
- });
- }
- /**
- * Add " or " between properties and convert it to brackets format
- */
- ;
-
- _proto.convert = function convert(progress) {
- var result = [''];
-
- for (var _iterator4 = progress, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
- var _ref4;
-
- if (_isArray4) {
- if (_i4 >= _iterator4.length) break;
- _ref4 = _iterator4[_i4++];
- } else {
- _i4 = _iterator4.next();
- if (_i4.done) break;
- _ref4 = _i4.value;
- }
-
- var i = _ref4;
- result.push([i.prop + ": " + i.value]);
- result.push(' or ');
- }
-
- result[result.length - 1] = '';
- return result;
- }
- /**
- * Compress value functions into a string nodes
- */
- ;
-
- _proto.normalize = function normalize(nodes) {
- var _this2 = this;
-
- if (typeof nodes !== 'object') {
- return nodes;
- }
-
- nodes = nodes.filter(function (i) {
- return i !== '';
- });
-
- if (typeof nodes[0] === 'string' && nodes[0].includes(':')) {
- return [brackets.stringify(nodes)];
- }
-
- return nodes.map(function (i) {
- return _this2.normalize(i);
- });
- }
- /**
- * Add prefixes
- */
- ;
-
- _proto.add = function add(nodes, all) {
- var _this3 = this;
-
- return nodes.map(function (i) {
- if (_this3.isProp(i)) {
- var prefixed = _this3.prefixed(i[0]);
-
- if (prefixed.length > 1) {
- return _this3.convert(prefixed);
- }
-
- return i;
- }
-
- if (typeof i === 'object') {
- return _this3.add(i, all);
- }
-
- return i;
- });
- }
- /**
- * Add prefixed declaration
- */
- ;
-
- _proto.process = function process(rule) {
- var ast = brackets.parse(rule.params);
- ast = this.normalize(ast);
- ast = this.remove(ast, rule.params);
- ast = this.add(ast, rule.params);
- ast = this.cleanBrackets(ast);
- rule.params = brackets.stringify(ast);
- }
- /**
- * Check global options
- */
- ;
-
- _proto.disabled = function disabled(node) {
- if (!this.all.options.grid) {
- if (node.prop === 'display' && node.value.includes('grid')) {
- return true;
- }
-
- if (node.prop.includes('grid') || node.prop === 'justify-items') {
- return true;
- }
- }
-
- if (this.all.options.flexbox === false) {
- if (node.prop === 'display' && node.value.includes('flex')) {
- return true;
- }
-
- var other = ['order', 'justify-content', 'align-items', 'align-content'];
-
- if (node.prop.includes('flex') || other.includes(node.prop)) {
- return true;
- }
- }
-
- return false;
- };
-
- return Supports;
-}();
-
-module.exports = Supports; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/transition.js b/assets/node_modules/autoprefixer/lib/transition.js
deleted file mode 100644
index 677bb60..0000000
--- a/assets/node_modules/autoprefixer/lib/transition.js
+++ /dev/null
@@ -1,509 +0,0 @@
-"use strict";
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var parser = require('postcss-value-parser');
-
-var vendor = require('postcss').vendor;
-
-var list = require('postcss').list;
-
-var Browsers = require('./browsers');
-
-var Transition =
-/*#__PURE__*/
-function () {
- function Transition(prefixes) {
- _defineProperty(this, "props", ['transition', 'transition-property']);
-
- this.prefixes = prefixes;
- }
- /**
- * Process transition and add prefixes for all necessary properties
- */
-
-
- var _proto = Transition.prototype;
-
- _proto.add = function add(decl, result) {
- var _this = this;
-
- var prefix, prop;
- var add = this.prefixes.add[decl.prop];
- var vendorPrefixes = this.ruleVendorPrefixes(decl);
- var declPrefixes = vendorPrefixes || add && add.prefixes || [];
- var params = this.parse(decl.value);
- var names = params.map(function (i) {
- return _this.findProp(i);
- });
- var added = [];
-
- if (names.some(function (i) {
- return i[0] === '-';
- })) {
- return;
- }
-
- for (var _iterator = params, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var param = _ref;
- prop = this.findProp(param);
- if (prop[0] === '-') continue;
- var prefixer = this.prefixes.add[prop];
- if (!prefixer || !prefixer.prefixes) continue;
-
- for (var _iterator3 = prefixer.prefixes, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
- if (_isArray3) {
- if (_i3 >= _iterator3.length) break;
- prefix = _iterator3[_i3++];
- } else {
- _i3 = _iterator3.next();
- if (_i3.done) break;
- prefix = _i3.value;
- }
-
- if (vendorPrefixes && !vendorPrefixes.some(function (p) {
- return prefix.includes(p);
- })) {
- continue;
- }
-
- var prefixed = this.prefixes.prefixed(prop, prefix);
-
- if (prefixed !== '-ms-transform' && !names.includes(prefixed)) {
- if (!this.disabled(prop, prefix)) {
- added.push(this.clone(prop, prefixed, param));
- }
- }
- }
- }
-
- params = params.concat(added);
- var value = this.stringify(params);
- var webkitClean = this.stringify(this.cleanFromUnprefixed(params, '-webkit-'));
-
- if (declPrefixes.includes('-webkit-')) {
- this.cloneBefore(decl, "-webkit-" + decl.prop, webkitClean);
- }
-
- this.cloneBefore(decl, decl.prop, webkitClean);
-
- if (declPrefixes.includes('-o-')) {
- var operaClean = this.stringify(this.cleanFromUnprefixed(params, '-o-'));
- this.cloneBefore(decl, "-o-" + decl.prop, operaClean);
- }
-
- for (var _iterator2 = declPrefixes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- prefix = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- prefix = _i2.value;
- }
-
- if (prefix !== '-webkit-' && prefix !== '-o-') {
- var prefixValue = this.stringify(this.cleanOtherPrefixes(params, prefix));
- this.cloneBefore(decl, prefix + decl.prop, prefixValue);
- }
- }
-
- if (value !== decl.value && !this.already(decl, decl.prop, value)) {
- this.checkForWarning(result, decl);
- decl.cloneBefore();
- decl.value = value;
- }
- }
- /**
- * Find property name
- */
- ;
-
- _proto.findProp = function findProp(param) {
- var prop = param[0].value;
-
- if (/^\d/.test(prop)) {
- for (var _iterator4 = param.entries(), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
- var _ref2;
-
- if (_isArray4) {
- if (_i4 >= _iterator4.length) break;
- _ref2 = _iterator4[_i4++];
- } else {
- _i4 = _iterator4.next();
- if (_i4.done) break;
- _ref2 = _i4.value;
- }
-
- var _ref3 = _ref2,
- i = _ref3[0],
- token = _ref3[1];
-
- if (i !== 0 && token.type === 'word') {
- return token.value;
- }
- }
- }
-
- return prop;
- }
- /**
- * Does we already have this declaration
- */
- ;
-
- _proto.already = function already(decl, prop, value) {
- return decl.parent.some(function (i) {
- return i.prop === prop && i.value === value;
- });
- }
- /**
- * Add declaration if it is not exist
- */
- ;
-
- _proto.cloneBefore = function cloneBefore(decl, prop, value) {
- if (!this.already(decl, prop, value)) {
- decl.cloneBefore({
- prop: prop,
- value: value
- });
- }
- }
- /**
- * Show transition-property warning
- */
- ;
-
- _proto.checkForWarning = function checkForWarning(result, decl) {
- if (decl.prop !== 'transition-property') {
- return;
- }
-
- decl.parent.each(function (i) {
- if (i.type !== 'decl') {
- return undefined;
- }
-
- if (i.prop.indexOf('transition-') !== 0) {
- return undefined;
- }
-
- if (i.prop === 'transition-property') {
- return undefined;
- }
-
- if (list.comma(i.value).length > 1) {
- decl.warn(result, 'Replace transition-property to transition, ' + 'because Autoprefixer could not support ' + 'any cases of transition-property ' + 'and other transition-*');
- }
-
- return false;
- });
- }
- /**
- * Process transition and remove all unnecessary properties
- */
- ;
-
- _proto.remove = function remove(decl) {
- var _this2 = this;
-
- var params = this.parse(decl.value);
- params = params.filter(function (i) {
- var prop = _this2.prefixes.remove[_this2.findProp(i)];
-
- return !prop || !prop.remove;
- });
- var value = this.stringify(params);
-
- if (decl.value === value) {
- return;
- }
-
- if (params.length === 0) {
- decl.remove();
- return;
- }
-
- var _double = decl.parent.some(function (i) {
- return i.prop === decl.prop && i.value === value;
- });
-
- var smaller = decl.parent.some(function (i) {
- return i !== decl && i.prop === decl.prop && i.value.length > value.length;
- });
-
- if (_double || smaller) {
- decl.remove();
- return;
- }
-
- decl.value = value;
- }
- /**
- * Parse properties list to array
- */
- ;
-
- _proto.parse = function parse(value) {
- var ast = parser(value);
- var result = [];
- var param = [];
-
- for (var _iterator5 = ast.nodes, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
- var _ref4;
-
- if (_isArray5) {
- if (_i5 >= _iterator5.length) break;
- _ref4 = _iterator5[_i5++];
- } else {
- _i5 = _iterator5.next();
- if (_i5.done) break;
- _ref4 = _i5.value;
- }
-
- var node = _ref4;
- param.push(node);
-
- if (node.type === 'div' && node.value === ',') {
- result.push(param);
- param = [];
- }
- }
-
- result.push(param);
- return result.filter(function (i) {
- return i.length > 0;
- });
- }
- /**
- * Return properties string from array
- */
- ;
-
- _proto.stringify = function stringify(params) {
- if (params.length === 0) {
- return '';
- }
-
- var nodes = [];
-
- for (var _iterator6 = params, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
- var _ref5;
-
- if (_isArray6) {
- if (_i6 >= _iterator6.length) break;
- _ref5 = _iterator6[_i6++];
- } else {
- _i6 = _iterator6.next();
- if (_i6.done) break;
- _ref5 = _i6.value;
- }
-
- var param = _ref5;
-
- if (param[param.length - 1].type !== 'div') {
- param.push(this.div(params));
- }
-
- nodes = nodes.concat(param);
- }
-
- if (nodes[0].type === 'div') {
- nodes = nodes.slice(1);
- }
-
- if (nodes[nodes.length - 1].type === 'div') {
- nodes = nodes.slice(0, +-2 + 1 || undefined);
- }
-
- return parser.stringify({
- nodes: nodes
- });
- }
- /**
- * Return new param array with different name
- */
- ;
-
- _proto.clone = function clone(origin, name, param) {
- var result = [];
- var changed = false;
-
- for (var _iterator7 = param, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
- var _ref6;
-
- if (_isArray7) {
- if (_i7 >= _iterator7.length) break;
- _ref6 = _iterator7[_i7++];
- } else {
- _i7 = _iterator7.next();
- if (_i7.done) break;
- _ref6 = _i7.value;
- }
-
- var i = _ref6;
-
- if (!changed && i.type === 'word' && i.value === origin) {
- result.push({
- type: 'word',
- value: name
- });
- changed = true;
- } else {
- result.push(i);
- }
- }
-
- return result;
- }
- /**
- * Find or create separator
- */
- ;
-
- _proto.div = function div(params) {
- for (var _iterator8 = params, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
- var _ref7;
-
- if (_isArray8) {
- if (_i8 >= _iterator8.length) break;
- _ref7 = _iterator8[_i8++];
- } else {
- _i8 = _iterator8.next();
- if (_i8.done) break;
- _ref7 = _i8.value;
- }
-
- var param = _ref7;
-
- for (var _iterator9 = param, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
- var _ref8;
-
- if (_isArray9) {
- if (_i9 >= _iterator9.length) break;
- _ref8 = _iterator9[_i9++];
- } else {
- _i9 = _iterator9.next();
- if (_i9.done) break;
- _ref8 = _i9.value;
- }
-
- var node = _ref8;
-
- if (node.type === 'div' && node.value === ',') {
- return node;
- }
- }
- }
-
- return {
- type: 'div',
- value: ',',
- after: ' '
- };
- };
-
- _proto.cleanOtherPrefixes = function cleanOtherPrefixes(params, prefix) {
- var _this3 = this;
-
- return params.filter(function (param) {
- var current = vendor.prefix(_this3.findProp(param));
- return current === '' || current === prefix;
- });
- }
- /**
- * Remove all non-webkit prefixes and unprefixed params if we have prefixed
- */
- ;
-
- _proto.cleanFromUnprefixed = function cleanFromUnprefixed(params, prefix) {
- var _this4 = this;
-
- var remove = params.map(function (i) {
- return _this4.findProp(i);
- }).filter(function (i) {
- return i.slice(0, prefix.length) === prefix;
- }).map(function (i) {
- return _this4.prefixes.unprefixed(i);
- });
- var result = [];
-
- for (var _iterator10 = params, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {
- var _ref9;
-
- if (_isArray10) {
- if (_i10 >= _iterator10.length) break;
- _ref9 = _iterator10[_i10++];
- } else {
- _i10 = _iterator10.next();
- if (_i10.done) break;
- _ref9 = _i10.value;
- }
-
- var param = _ref9;
- var prop = this.findProp(param);
- var p = vendor.prefix(prop);
-
- if (!remove.includes(prop) && (p === prefix || p === '')) {
- result.push(param);
- }
- }
-
- return result;
- }
- /**
- * Check property for disabled by option
- */
- ;
-
- _proto.disabled = function disabled(prop, prefix) {
- var other = ['order', 'justify-content', 'align-self', 'align-content'];
-
- if (prop.includes('flex') || other.includes(prop)) {
- if (this.prefixes.options.flexbox === false) {
- return true;
- }
-
- if (this.prefixes.options.flexbox === 'no-2009') {
- return prefix.includes('2009');
- }
- }
-
- return undefined;
- }
- /**
- * Check if transition prop is inside vendor specific rule
- */
- ;
-
- _proto.ruleVendorPrefixes = function ruleVendorPrefixes(decl) {
- var parent = decl.parent;
-
- if (parent.type !== 'rule') {
- return false;
- } else if (!parent.selector.includes(':-')) {
- return false;
- }
-
- var selectors = Browsers.prefixes().filter(function (s) {
- return parent.selector.includes(':' + s);
- });
- return selectors.length > 0 ? selectors : false;
- };
-
- return Transition;
-}();
-
-module.exports = Transition; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/utils.js b/assets/node_modules/autoprefixer/lib/utils.js
deleted file mode 100644
index ea97ee8..0000000
--- a/assets/node_modules/autoprefixer/lib/utils.js
+++ /dev/null
@@ -1,108 +0,0 @@
-"use strict";
-
-var list = require('postcss').list;
-
-module.exports = {
- /**
- * Throw special error, to tell beniary,
- * that this error is from Autoprefixer.
- */
- error: function error(text) {
- var err = new Error(text);
- err.autoprefixer = true;
- throw err;
- },
-
- /**
- * Return array, that doesn’t contain duplicates.
- */
- uniq: function uniq(array) {
- var filtered = [];
-
- for (var _iterator = array, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var i = _ref;
-
- if (!filtered.includes(i)) {
- filtered.push(i);
- }
- }
-
- return filtered;
- },
-
- /**
- * Return "-webkit-" on "-webkit- old"
- */
- removeNote: function removeNote(string) {
- if (!string.includes(' ')) {
- return string;
- }
-
- return string.split(' ')[0];
- },
-
- /**
- * Escape RegExp symbols
- */
- escapeRegexp: function escapeRegexp(string) {
- return string.replace(/[$()*+-.?[\\\]^{|}]/g, '\\$&');
- },
-
- /**
- * Return regexp to check, that CSS string contain word
- */
- regexp: function regexp(word, escape) {
- if (escape === void 0) {
- escape = true;
- }
-
- if (escape) {
- word = this.escapeRegexp(word);
- }
-
- return new RegExp("(^|[\\s,(])(" + word + "($|[\\s(,]))", 'gi');
- },
-
- /**
- * Change comma list
- */
- editList: function editList(value, callback) {
- var origin = list.comma(value);
- var changed = callback(origin, []);
-
- if (origin === changed) {
- return value;
- }
-
- var join = value.match(/,\s*/);
- join = join ? join[0] : ', ';
- return changed.join(join);
- },
-
- /**
- * Split the selector into parts.
- * It returns 3 level deep array because selectors can be comma
- * separated (1), space separated (2), and combined (3)
- * @param {String} selector selector string
- * @return {Array<Array<Array>>} 3 level deep array of split selector
- * @see utils.test.js for examples
- */
- splitSelector: function splitSelector(selector) {
- return list.comma(selector).map(function (i) {
- return list.space(i).map(function (k) {
- return k.split(/(?=\.|#)/g);
- });
- });
- }
-}; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/lib/value.js b/assets/node_modules/autoprefixer/lib/value.js
deleted file mode 100644
index 1139a6b..0000000
--- a/assets/node_modules/autoprefixer/lib/value.js
+++ /dev/null
@@ -1,166 +0,0 @@
-"use strict";
-
-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; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
-var vendor = require('postcss').vendor;
-
-var Prefixer = require('./prefixer');
-
-var OldValue = require('./old-value');
-
-var utils = require('./utils');
-
-var Value =
-/*#__PURE__*/
-function (_Prefixer) {
- _inheritsLoose(Value, _Prefixer);
-
- function Value() {
- return _Prefixer.apply(this, arguments) || this;
- }
-
- /**
- * Clone decl for each prefixed values
- */
- Value.save = function save(prefixes, decl) {
- var _this = this;
-
- var prop = decl.prop;
- var result = [];
-
- var _loop = function _loop(prefix) {
- var value = decl._autoprefixerValues[prefix];
-
- if (value === decl.value) {
- return "continue";
- }
-
- var item = void 0;
- var propPrefix = vendor.prefix(prop);
-
- if (propPrefix === '-pie-') {
- return "continue";
- }
-
- if (propPrefix === prefix) {
- item = decl.value = value;
- result.push(item);
- return "continue";
- }
-
- var prefixed = prefixes.prefixed(prop, prefix);
- var rule = decl.parent;
-
- if (!rule.every(function (i) {
- return i.prop !== prefixed;
- })) {
- result.push(item);
- return "continue";
- }
-
- var trimmed = value.replace(/\s+/, ' ');
- var already = rule.some(function (i) {
- return i.prop === decl.prop && i.value.replace(/\s+/, ' ') === trimmed;
- });
-
- if (already) {
- result.push(item);
- return "continue";
- }
-
- var cloned = _this.clone(decl, {
- value: value
- });
-
- item = decl.parent.insertBefore(decl, cloned);
- result.push(item);
- };
-
- for (var prefix in decl._autoprefixerValues) {
- var _ret = _loop(prefix);
-
- if (_ret === "continue") continue;
- }
-
- return result;
- }
- /**
- * Is declaration need to be prefixed
- */
- ;
-
- var _proto = Value.prototype;
-
- _proto.check = function check(decl) {
- var value = decl.value;
-
- if (!value.includes(this.name)) {
- return false;
- }
-
- return !!value.match(this.regexp());
- }
- /**
- * Lazy regexp loading
- */
- ;
-
- _proto.regexp = function regexp() {
- return this.regexpCache || (this.regexpCache = utils.regexp(this.name));
- }
- /**
- * Add prefix to values in string
- */
- ;
-
- _proto.replace = function replace(string, prefix) {
- return string.replace(this.regexp(), "$1" + prefix + "$2");
- }
- /**
- * Get value with comments if it was not changed
- */
- ;
-
- _proto.value = function value(decl) {
- if (decl.raws.value && decl.raws.value.value === decl.value) {
- return decl.raws.value.raw;
- } else {
- return decl.value;
- }
- }
- /**
- * Save values with next prefixed token
- */
- ;
-
- _proto.add = function add(decl, prefix) {
- if (!decl._autoprefixerValues) {
- decl._autoprefixerValues = {};
- }
-
- var value = decl._autoprefixerValues[prefix] || this.value(decl);
- var before;
-
- do {
- before = value;
- value = this.replace(value, prefix);
- if (value === false) return;
- } while (value !== before);
-
- decl._autoprefixerValues[prefix] = value;
- }
- /**
- * Return function to fast find prefixed value
- */
- ;
-
- _proto.old = function old(prefix) {
- return new OldValue(this.name, prefix + this.name);
- };
-
- return Value;
-}(Prefixer);
-
-module.exports = Value; \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/node_modules/.bin/browserslist b/assets/node_modules/autoprefixer/node_modules/.bin/browserslist
deleted file mode 120000
index c4cc06e..0000000
--- a/assets/node_modules/autoprefixer/node_modules/.bin/browserslist
+++ /dev/null
@@ -1 +0,0 @@
-../../../browserslist/cli.js \ No newline at end of file
diff --git a/assets/node_modules/autoprefixer/package.json b/assets/node_modules/autoprefixer/package.json
deleted file mode 100644
index d5b4ea2..0000000
--- a/assets/node_modules/autoprefixer/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "autoprefixer",
- "version": "9.7.4",
- "description": "Parse CSS and add vendor prefixes to CSS rules using values from the Can I Use website",
- "keywords": ["autoprefixer", "css", "prefix", "postcss", "postcss-plugin"],
- "bin": "./bin/autoprefixer",
- "funding": {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/autoprefixer"
- },
- "author": "Andrey Sitnik <andrey@sitnik.ru>",
- "license": "MIT",
- "repository": "postcss/autoprefixer",
- "engines": {
- "node": ">=6.0.0"
- },
- "dependencies": {
- "browserslist": "^4.8.3",
- "caniuse-lite": "^1.0.30001020",
- "chalk": "^2.4.2",
- "normalize-range": "^0.1.2",
- "num2fraction": "^1.2.2",
- "postcss": "^7.0.26",
- "postcss-value-parser": "^4.0.2"
- },
- "eslintIgnore": ["build/"],
- "browser": {
- "chalk": false
- },
- "main": "lib/autoprefixer"
-} \ No newline at end of file
diff --git a/assets/node_modules/bail/index.js b/assets/node_modules/bail/index.js
deleted file mode 100644
index ef5e880..0000000
--- a/assets/node_modules/bail/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-'use strict'
-
-module.exports = bail
-
-function bail(err) {
- if (err) {
- throw err
- }
-}
diff --git a/assets/node_modules/bail/license b/assets/node_modules/bail/license
deleted file mode 100644
index 32e7a3d..0000000
--- a/assets/node_modules/bail/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/bail/package.json b/assets/node_modules/bail/package.json
deleted file mode 100644
index 8f8539d..0000000
--- a/assets/node_modules/bail/package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "name": "bail",
- "version": "1.0.5",
- "description": "Throw a given error",
- "license": "MIT",
- "keywords": [
- "fail",
- "bail",
- "throw",
- "callback",
- "error"
- ],
- "repository": "wooorm/bail",
- "bugs": "https://github.com/wooorm/bail/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 index.js -s bail -o bail.js",
- "build-mangle": "browserify index.js -s bail -p tinyify -o bail.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": [
- "bail.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
- }
-}
diff --git a/assets/node_modules/bail/readme.md b/assets/node_modules/bail/readme.md
deleted file mode 100644
index 8e7b086..0000000
--- a/assets/node_modules/bail/readme.md
+++ /dev/null
@@ -1,84 +0,0 @@
-# bail
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-:warning: Throw a given error.
-
-## Install
-
-[npm][]:
-
-```sh
-npm install bail
-```
-
-## Use
-
-```js
-var bail = require('bail')
-
-bail()
-
-bail(new Error('failure'))
-// Error: failure
-// at repl:1:6
-// at REPLServer.defaultEval (repl.js:154:27)
-// …
-```
-
-## API
-
-### `bail([err])`
-
-Throw a given error.
-
-###### Parameters
-
-* `err` (`Error?`) — Optional error.
-
-###### Throws
-
-* `Error` — Given error, if any.
-
-## Related
-
-* [`noop`][noop]
-* [`noop2`][noop2]
-* [`noop3`][noop3]
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/wooorm/bail.svg
-
-[build]: https://travis-ci.org/wooorm/bail
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/bail.svg
-
-[coverage]: https://codecov.io/github/wooorm/bail
-
-[downloads-badge]: https://img.shields.io/npm/dm/bail.svg
-
-[downloads]: https://www.npmjs.com/package/bail
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/bail.svg
-
-[size]: https://bundlephobia.com/result?p=bail
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
-
-[noop]: https://www.npmjs.com/package/noop
-
-[noop2]: https://www.npmjs.com/package/noop2
-
-[noop3]: https://www.npmjs.com/package/noop3
diff --git a/assets/node_modules/balanced-match/.npmignore b/assets/node_modules/balanced-match/.npmignore
deleted file mode 100644
index ae5d8c3..0000000
--- a/assets/node_modules/balanced-match/.npmignore
+++ /dev/null
@@ -1,5 +0,0 @@
-test
-.gitignore
-.travis.yml
-Makefile
-example.js
diff --git a/assets/node_modules/balanced-match/LICENSE.md b/assets/node_modules/balanced-match/LICENSE.md
deleted file mode 100644
index 2cdc8e4..0000000
--- a/assets/node_modules/balanced-match/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-(MIT)
-
-Copyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;
-
-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/assets/node_modules/balanced-match/README.md b/assets/node_modules/balanced-match/README.md
deleted file mode 100644
index 08e918c..0000000
--- a/assets/node_modules/balanced-match/README.md
+++ /dev/null
@@ -1,91 +0,0 @@
-# balanced-match
-
-Match balanced string pairs, like `{` and `}` or `<b>` and `</b>`. Supports regular expressions as well!
-
-[![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match)
-[![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match)
-
-[![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match)
-
-## Example
-
-Get the first matching pair of braces:
-
-```js
-var balanced = require('balanced-match');
-
-console.log(balanced('{', '}', 'pre{in{nested}}post'));
-console.log(balanced('{', '}', 'pre{first}between{second}post'));
-console.log(balanced(/\s+\{\s+/, /\s+\}\s+/, 'pre { in{nest} } post'));
-```
-
-The matches are:
-
-```bash
-$ node example.js
-{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' }
-{ start: 3,
- end: 9,
- pre: 'pre',
- body: 'first',
- post: 'between{second}post' }
-{ start: 3, end: 17, pre: 'pre', body: 'in{nest}', post: 'post' }
-```
-
-## API
-
-### var m = balanced(a, b, str)
-
-For the first non-nested matching pair of `a` and `b` in `str`, return an
-object with those keys:
-
-* **start** the index of the first match of `a`
-* **end** the index of the matching `b`
-* **pre** the preamble, `a` and `b` not included
-* **body** the match, `a` and `b` not included
-* **post** the postscript, `a` and `b` not included
-
-If there's no match, `undefined` will be returned.
-
-If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`.
-
-### var r = balanced.range(a, b, str)
-
-For the first non-nested matching pair of `a` and `b` in `str`, return an
-array with indexes: `[ <a index>, <b index> ]`.
-
-If there's no match, `undefined` will be returned.
-
-If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]` and `{a}}` will match `[0, 2]`.
-
-## Installation
-
-With [npm](https://npmjs.org) do:
-
-```bash
-npm install balanced-match
-```
-
-## License
-
-(MIT)
-
-Copyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;
-
-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/assets/node_modules/balanced-match/index.js b/assets/node_modules/balanced-match/index.js
deleted file mode 100644
index 1685a76..0000000
--- a/assets/node_modules/balanced-match/index.js
+++ /dev/null
@@ -1,59 +0,0 @@
-'use strict';
-module.exports = balanced;
-function balanced(a, b, str) {
- if (a instanceof RegExp) a = maybeMatch(a, str);
- if (b instanceof RegExp) b = maybeMatch(b, str);
-
- var r = range(a, b, str);
-
- return r && {
- start: r[0],
- end: r[1],
- pre: str.slice(0, r[0]),
- body: str.slice(r[0] + a.length, r[1]),
- post: str.slice(r[1] + b.length)
- };
-}
-
-function maybeMatch(reg, str) {
- var m = str.match(reg);
- return m ? m[0] : null;
-}
-
-balanced.range = range;
-function range(a, b, str) {
- var begs, beg, left, right, result;
- var ai = str.indexOf(a);
- var bi = str.indexOf(b, ai + 1);
- var i = ai;
-
- if (ai >= 0 && bi > 0) {
- begs = [];
- left = str.length;
-
- while (i >= 0 && !result) {
- if (i == ai) {
- begs.push(i);
- ai = str.indexOf(a, i + 1);
- } else if (begs.length == 1) {
- result = [ begs.pop(), bi ];
- } else {
- beg = begs.pop();
- if (beg < left) {
- left = beg;
- right = bi;
- }
-
- bi = str.indexOf(b, i + 1);
- }
-
- i = ai < bi && ai >= 0 ? ai : bi;
- }
-
- if (begs.length) {
- result = [ left, right ];
- }
- }
-
- return result;
-}
diff --git a/assets/node_modules/balanced-match/package.json b/assets/node_modules/balanced-match/package.json
deleted file mode 100644
index 61349c6..0000000
--- a/assets/node_modules/balanced-match/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "name": "balanced-match",
- "description": "Match balanced character pairs, like \"{\" and \"}\"",
- "version": "1.0.0",
- "repository": {
- "type": "git",
- "url": "git://github.com/juliangruber/balanced-match.git"
- },
- "homepage": "https://github.com/juliangruber/balanced-match",
- "main": "index.js",
- "scripts": {
- "test": "make test",
- "bench": "make bench"
- },
- "dependencies": {},
- "devDependencies": {
- "matcha": "^0.7.0",
- "tape": "^4.6.0"
- },
- "keywords": [
- "match",
- "regexp",
- "test",
- "balanced",
- "parse"
- ],
- "author": {
- "name": "Julian Gruber",
- "email": "mail@juliangruber.com",
- "url": "http://juliangruber.com"
- },
- "license": "MIT",
- "testling": {
- "files": "test/*.js",
- "browsers": [
- "ie/8..latest",
- "firefox/20..latest",
- "firefox/nightly",
- "chrome/25..latest",
- "chrome/canary",
- "opera/12..latest",
- "opera/next",
- "safari/5.1..latest",
- "ipad/6.0..latest",
- "iphone/6.0..latest",
- "android-browser/4.2..latest"
- ]
- }
-}
diff --git a/assets/node_modules/binary-extensions/binary-extensions.json b/assets/node_modules/binary-extensions/binary-extensions.json
deleted file mode 100644
index 725e532..0000000
--- a/assets/node_modules/binary-extensions/binary-extensions.json
+++ /dev/null
@@ -1,252 +0,0 @@
-[
- "3dm",
- "3ds",
- "3g2",
- "3gp",
- "7z",
- "a",
- "aac",
- "adp",
- "ai",
- "aif",
- "aiff",
- "alz",
- "ape",
- "apk",
- "ar",
- "arj",
- "asf",
- "au",
- "avi",
- "bak",
- "baml",
- "bh",
- "bin",
- "bk",
- "bmp",
- "btif",
- "bz2",
- "bzip2",
- "cab",
- "caf",
- "cgm",
- "class",
- "cmx",
- "cpio",
- "cr2",
- "cur",
- "dat",
- "dcm",
- "deb",
- "dex",
- "djvu",
- "dll",
- "dmg",
- "dng",
- "doc",
- "docm",
- "docx",
- "dot",
- "dotm",
- "dra",
- "DS_Store",
- "dsk",
- "dts",
- "dtshd",
- "dvb",
- "dwg",
- "dxf",
- "ecelp4800",
- "ecelp7470",
- "ecelp9600",
- "egg",
- "eol",
- "eot",
- "epub",
- "exe",
- "f4v",
- "fbs",
- "fh",
- "fla",
- "flac",
- "fli",
- "flv",
- "fpx",
- "fst",
- "fvt",
- "g3",
- "gh",
- "gif",
- "graffle",
- "gz",
- "gzip",
- "h261",
- "h263",
- "h264",
- "icns",
- "ico",
- "ief",
- "img",
- "ipa",
- "iso",
- "jar",
- "jpeg",
- "jpg",
- "jpgv",
- "jpm",
- "jxr",
- "key",
- "ktx",
- "lha",
- "lib",
- "lvp",
- "lz",
- "lzh",
- "lzma",
- "lzo",
- "m3u",
- "m4a",
- "m4v",
- "mar",
- "mdi",
- "mht",
- "mid",
- "midi",
- "mj2",
- "mka",
- "mkv",
- "mmr",
- "mng",
- "mobi",
- "mov",
- "movie",
- "mp3",
- "mp4",
- "mp4a",
- "mpeg",
- "mpg",
- "mpga",
- "mxu",
- "nef",
- "npx",
- "numbers",
- "nupkg",
- "o",
- "oga",
- "ogg",
- "ogv",
- "otf",
- "pages",
- "pbm",
- "pcx",
- "pdb",
- "pdf",
- "pea",
- "pgm",
- "pic",
- "png",
- "pnm",
- "pot",
- "potm",
- "potx",
- "ppa",
- "ppam",
- "ppm",
- "pps",
- "ppsm",
- "ppsx",
- "ppt",
- "pptm",
- "pptx",
- "psd",
- "pya",
- "pyc",
- "pyo",
- "pyv",
- "qt",
- "rar",
- "ras",
- "raw",
- "resources",
- "rgb",
- "rip",
- "rlc",
- "rmf",
- "rmvb",
- "rtf",
- "rz",
- "s3m",
- "s7z",
- "scpt",
- "sgi",
- "shar",
- "sil",
- "sketch",
- "slk",
- "smv",
- "snk",
- "so",
- "stl",
- "suo",
- "sub",
- "swf",
- "tar",
- "tbz",
- "tbz2",
- "tga",
- "tgz",
- "thmx",
- "tif",
- "tiff",
- "tlz",
- "ttc",
- "ttf",
- "txz",
- "udf",
- "uvh",
- "uvi",
- "uvm",
- "uvp",
- "uvs",
- "uvu",
- "viv",
- "vob",
- "war",
- "wav",
- "wax",
- "wbmp",
- "wdp",
- "weba",
- "webm",
- "webp",
- "whl",
- "wim",
- "wm",
- "wma",
- "wmv",
- "wmx",
- "woff",
- "woff2",
- "wrm",
- "wvx",
- "xbm",
- "xif",
- "xla",
- "xlam",
- "xls",
- "xlsb",
- "xlsm",
- "xlsx",
- "xlt",
- "xltm",
- "xltx",
- "xm",
- "xmind",
- "xpi",
- "xpm",
- "xwd",
- "xz",
- "z",
- "zip",
- "zipx"
-]
diff --git a/assets/node_modules/binary-extensions/binary-extensions.json.d.ts b/assets/node_modules/binary-extensions/binary-extensions.json.d.ts
deleted file mode 100644
index 94a248c..0000000
--- a/assets/node_modules/binary-extensions/binary-extensions.json.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-declare const binaryExtensionsJson: readonly string[];
-
-export = binaryExtensionsJson;
diff --git a/assets/node_modules/binary-extensions/index.d.ts b/assets/node_modules/binary-extensions/index.d.ts
deleted file mode 100644
index f469ac5..0000000
--- a/assets/node_modules/binary-extensions/index.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
-List of binary file extensions.
-
-@example
-```
-import binaryExtensions = require('binary-extensions');
-
-console.log(binaryExtensions);
-//=> ['3ds', '3g2', …]
-```
-*/
-declare const binaryExtensions: readonly string[];
-
-export = binaryExtensions;
diff --git a/assets/node_modules/binary-extensions/index.js b/assets/node_modules/binary-extensions/index.js
deleted file mode 100644
index d46e468..0000000
--- a/assets/node_modules/binary-extensions/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./binary-extensions.json');
diff --git a/assets/node_modules/binary-extensions/license b/assets/node_modules/binary-extensions/license
deleted file mode 100644
index 401b1c7..0000000
--- a/assets/node_modules/binary-extensions/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) 2019 Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com), Paul Miller (https://paulmillr.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/assets/node_modules/binary-extensions/package.json b/assets/node_modules/binary-extensions/package.json
deleted file mode 100644
index b19edd3..0000000
--- a/assets/node_modules/binary-extensions/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "binary-extensions",
- "version": "2.0.0",
- "description": "List of binary file extensions",
- "license": "MIT",
- "repository": "sindresorhus/binary-extensions",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts",
- "binary-extensions.json",
- "binary-extensions.json.d.ts"
- ],
- "keywords": [
- "binary",
- "extensions",
- "extension",
- "file",
- "json",
- "list",
- "array"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/binary-extensions/readme.md b/assets/node_modules/binary-extensions/readme.md
deleted file mode 100644
index 8d711fa..0000000
--- a/assets/node_modules/binary-extensions/readme.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# binary-extensions [![Build Status](https://travis-ci.org/sindresorhus/binary-extensions.svg?branch=master)](https://travis-ci.org/sindresorhus/binary-extensions)
-
-> List of binary file extensions
-
-The list is just a [JSON file](binary-extensions.json) and can be used anywhere.
-
-
-## Install
-
-```
-$ npm install binary-extensions
-```
-
-
-## Usage
-
-```js
-const binaryExtensions = require('binary-extensions');
-
-console.log(binaryExtensions);
-//=> ['3ds', '3g2', …]
-```
-
-
-## Related
-
-- [is-binary-path](https://github.com/sindresorhus/is-binary-path) - Check if a filepath is a binary file
-- [text-extensions](https://github.com/sindresorhus/text-extensions) - List of text file extensions
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com), [Paul Miller](https://paulmillr.com)
diff --git a/assets/node_modules/brace-expansion/LICENSE b/assets/node_modules/brace-expansion/LICENSE
deleted file mode 100644
index de32266..0000000
--- a/assets/node_modules/brace-expansion/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2013 Julian Gruber <julian@juliangruber.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/assets/node_modules/brace-expansion/README.md b/assets/node_modules/brace-expansion/README.md
deleted file mode 100644
index 6b4e0e1..0000000
--- a/assets/node_modules/brace-expansion/README.md
+++ /dev/null
@@ -1,129 +0,0 @@
-# brace-expansion
-
-[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html),
-as known from sh/bash, in JavaScript.
-
-[![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion)
-[![downloads](https://img.shields.io/npm/dm/brace-expansion.svg)](https://www.npmjs.org/package/brace-expansion)
-[![Greenkeeper badge](https://badges.greenkeeper.io/juliangruber/brace-expansion.svg)](https://greenkeeper.io/)
-
-[![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion)
-
-## Example
-
-```js
-var expand = require('brace-expansion');
-
-expand('file-{a,b,c}.jpg')
-// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']
-
-expand('-v{,,}')
-// => ['-v', '-v', '-v']
-
-expand('file{0..2}.jpg')
-// => ['file0.jpg', 'file1.jpg', 'file2.jpg']
-
-expand('file-{a..c}.jpg')
-// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']
-
-expand('file{2..0}.jpg')
-// => ['file2.jpg', 'file1.jpg', 'file0.jpg']
-
-expand('file{0..4..2}.jpg')
-// => ['file0.jpg', 'file2.jpg', 'file4.jpg']
-
-expand('file-{a..e..2}.jpg')
-// => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg']
-
-expand('file{00..10..5}.jpg')
-// => ['file00.jpg', 'file05.jpg', 'file10.jpg']
-
-expand('{{A..C},{a..c}}')
-// => ['A', 'B', 'C', 'a', 'b', 'c']
-
-expand('ppp{,config,oe{,conf}}')
-// => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf']
-```
-
-## API
-
-```js
-var expand = require('brace-expansion');
-```
-
-### var expanded = expand(str)
-
-Return an array of all possible and valid expansions of `str`. If none are
-found, `[str]` is returned.
-
-Valid expansions are:
-
-```js
-/^(.*,)+(.+)?$/
-// {a,b,...}
-```
-
-A comma separated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`.
-
-```js
-/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/
-// {x..y[..incr]}
-```
-
-A numeric sequence from `x` to `y` inclusive, with optional increment.
-If `x` or `y` start with a leading `0`, all the numbers will be padded
-to have equal length. Negative numbers and backwards iteration work too.
-
-```js
-/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/
-// {x..y[..incr]}
-```
-
-An alphabetic sequence from `x` to `y` inclusive, with optional increment.
-`x` and `y` must be exactly one character, and if given, `incr` must be a
-number.
-
-For compatibility reasons, the string `${` is not eligible for brace expansion.
-
-## Installation
-
-With [npm](https://npmjs.org) do:
-
-```bash
-npm install brace-expansion
-```
-
-## Contributors
-
-- [Julian Gruber](https://github.com/juliangruber)
-- [Isaac Z. Schlueter](https://github.com/isaacs)
-
-## Sponsors
-
-This module is proudly supported by my [Sponsors](https://github.com/juliangruber/sponsors)!
-
-Do you want to support modules like this to improve their quality, stability and weigh in on new features? Then please consider donating to my [Patreon](https://www.patreon.com/juliangruber). Not sure how much of my modules you're using? Try [feross/thanks](https://github.com/feross/thanks)!
-
-## License
-
-(MIT)
-
-Copyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;
-
-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/assets/node_modules/brace-expansion/index.js b/assets/node_modules/brace-expansion/index.js
deleted file mode 100644
index 0478be8..0000000
--- a/assets/node_modules/brace-expansion/index.js
+++ /dev/null
@@ -1,201 +0,0 @@
-var concatMap = require('concat-map');
-var balanced = require('balanced-match');
-
-module.exports = expandTop;
-
-var escSlash = '\0SLASH'+Math.random()+'\0';
-var escOpen = '\0OPEN'+Math.random()+'\0';
-var escClose = '\0CLOSE'+Math.random()+'\0';
-var escComma = '\0COMMA'+Math.random()+'\0';
-var escPeriod = '\0PERIOD'+Math.random()+'\0';
-
-function numeric(str) {
- return parseInt(str, 10) == str
- ? parseInt(str, 10)
- : str.charCodeAt(0);
-}
-
-function escapeBraces(str) {
- return str.split('\\\\').join(escSlash)
- .split('\\{').join(escOpen)
- .split('\\}').join(escClose)
- .split('\\,').join(escComma)
- .split('\\.').join(escPeriod);
-}
-
-function unescapeBraces(str) {
- return str.split(escSlash).join('\\')
- .split(escOpen).join('{')
- .split(escClose).join('}')
- .split(escComma).join(',')
- .split(escPeriod).join('.');
-}
-
-
-// Basically just str.split(","), but handling cases
-// where we have nested braced sections, which should be
-// treated as individual members, like {a,{b,c},d}
-function parseCommaParts(str) {
- if (!str)
- return [''];
-
- var parts = [];
- var m = balanced('{', '}', str);
-
- if (!m)
- return str.split(',');
-
- var pre = m.pre;
- var body = m.body;
- var post = m.post;
- var p = pre.split(',');
-
- p[p.length-1] += '{' + body + '}';
- var postParts = parseCommaParts(post);
- if (post.length) {
- p[p.length-1] += postParts.shift();
- p.push.apply(p, postParts);
- }
-
- parts.push.apply(parts, p);
-
- return parts;
-}
-
-function expandTop(str) {
- if (!str)
- return [];
-
- // I don't know why Bash 4.3 does this, but it does.
- // Anything starting with {} will have the first two bytes preserved
- // but *only* at the top level, so {},a}b will not expand to anything,
- // but a{},b}c will be expanded to [a}c,abc].
- // One could argue that this is a bug in Bash, but since the goal of
- // this module is to match Bash's rules, we escape a leading {}
- if (str.substr(0, 2) === '{}') {
- str = '\\{\\}' + str.substr(2);
- }
-
- return expand(escapeBraces(str), true).map(unescapeBraces);
-}
-
-function identity(e) {
- return e;
-}
-
-function embrace(str) {
- return '{' + str + '}';
-}
-function isPadded(el) {
- return /^-?0\d/.test(el);
-}
-
-function lte(i, y) {
- return i <= y;
-}
-function gte(i, y) {
- return i >= y;
-}
-
-function expand(str, isTop) {
- var expansions = [];
-
- var m = balanced('{', '}', str);
- if (!m || /\$$/.test(m.pre)) return [str];
-
- var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
- var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
- var isSequence = isNumericSequence || isAlphaSequence;
- var isOptions = m.body.indexOf(',') >= 0;
- if (!isSequence && !isOptions) {
- // {a},b}
- if (m.post.match(/,.*\}/)) {
- str = m.pre + '{' + m.body + escClose + m.post;
- return expand(str);
- }
- return [str];
- }
-
- var n;
- if (isSequence) {
- n = m.body.split(/\.\./);
- } else {
- n = parseCommaParts(m.body);
- if (n.length === 1) {
- // x{{a,b}}y ==> x{a}y x{b}y
- n = expand(n[0], false).map(embrace);
- if (n.length === 1) {
- var post = m.post.length
- ? expand(m.post, false)
- : [''];
- return post.map(function(p) {
- return m.pre + n[0] + p;
- });
- }
- }
- }
-
- // at this point, n is the parts, and we know it's not a comma set
- // with a single entry.
-
- // no need to expand pre, since it is guaranteed to be free of brace-sets
- var pre = m.pre;
- var post = m.post.length
- ? expand(m.post, false)
- : [''];
-
- var N;
-
- if (isSequence) {
- var x = numeric(n[0]);
- var y = numeric(n[1]);
- var width = Math.max(n[0].length, n[1].length)
- var incr = n.length == 3
- ? Math.abs(numeric(n[2]))
- : 1;
- var test = lte;
- var reverse = y < x;
- if (reverse) {
- incr *= -1;
- test = gte;
- }
- var pad = n.some(isPadded);
-
- N = [];
-
- for (var i = x; test(i, y); i += incr) {
- var c;
- if (isAlphaSequence) {
- c = String.fromCharCode(i);
- if (c === '\\')
- c = '';
- } else {
- c = String(i);
- if (pad) {
- var need = width - c.length;
- if (need > 0) {
- var z = new Array(need + 1).join('0');
- if (i < 0)
- c = '-' + z + c.slice(1);
- else
- c = z + c;
- }
- }
- }
- N.push(c);
- }
- } else {
- N = concatMap(n, function(el) { return expand(el, false) });
- }
-
- for (var j = 0; j < N.length; j++) {
- for (var k = 0; k < post.length; k++) {
- var expansion = pre + N[j] + post[k];
- if (!isTop || isSequence || expansion)
- expansions.push(expansion);
- }
- }
-
- return expansions;
-}
-
diff --git a/assets/node_modules/brace-expansion/package.json b/assets/node_modules/brace-expansion/package.json
deleted file mode 100644
index a18faa8..0000000
--- a/assets/node_modules/brace-expansion/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "name": "brace-expansion",
- "description": "Brace expansion as known from sh/bash",
- "version": "1.1.11",
- "repository": {
- "type": "git",
- "url": "git://github.com/juliangruber/brace-expansion.git"
- },
- "homepage": "https://github.com/juliangruber/brace-expansion",
- "main": "index.js",
- "scripts": {
- "test": "tape test/*.js",
- "gentest": "bash test/generate.sh",
- "bench": "matcha test/perf/bench.js"
- },
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- },
- "devDependencies": {
- "matcha": "^0.7.0",
- "tape": "^4.6.0"
- },
- "keywords": [],
- "author": {
- "name": "Julian Gruber",
- "email": "mail@juliangruber.com",
- "url": "http://juliangruber.com"
- },
- "license": "MIT",
- "testling": {
- "files": "test/*.js",
- "browsers": [
- "ie/8..latest",
- "firefox/20..latest",
- "firefox/nightly",
- "chrome/25..latest",
- "chrome/canary",
- "opera/12..latest",
- "opera/next",
- "safari/5.1..latest",
- "ipad/6.0..latest",
- "iphone/6.0..latest",
- "android-browser/4.2..latest"
- ]
- }
-}
diff --git a/assets/node_modules/braces/CHANGELOG.md b/assets/node_modules/braces/CHANGELOG.md
deleted file mode 100644
index 36f798b..0000000
--- a/assets/node_modules/braces/CHANGELOG.md
+++ /dev/null
@@ -1,184 +0,0 @@
-# Release history
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
-and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
-
-<details>
- <summary><strong>Guiding Principles</strong></summary>
-
-- Changelogs are for humans, not machines.
-- There should be an entry for every single version.
-- The same types of changes should be grouped.
-- Versions and sections should be linkable.
-- The latest version comes first.
-- The release date of each versions is displayed.
-- Mention whether you follow Semantic Versioning.
-
-</details>
-
-<details>
- <summary><strong>Types of changes</strong></summary>
-
-Changelog entries are classified using the following labels _(from [keep-a-changelog](http://keepachangelog.com/)_):
-
-- `Added` for new features.
-- `Changed` for changes in existing functionality.
-- `Deprecated` for soon-to-be removed features.
-- `Removed` for now removed features.
-- `Fixed` for any bug fixes.
-- `Security` in case of vulnerabilities.
-
-</details>
-
-## [3.0.0] - 2018-04-08
-
-v3.0 is a complete refactor, resulting in a faster, smaller codebase, with fewer deps, and a more accurate parser and compiler.
-
-**Breaking Changes**
-
-- The undocumented `.makeRe` method was removed
-
-**Non-breaking changes**
-
-- Caching was removed
-
-## [2.3.2] - 2018-04-08
-
-- start refactoring
-- cover sets
-- better range handling
-
-## [2.3.1] - 2018-02-17
-
-- Remove unnecessary escape in Regex. (#14)
-
-## [2.3.0] - 2017-10-19
-
-- minor code reorganization
-- optimize regex
-- expose `maxLength` option
-
-## [2.2.1] - 2017-05-30
-
-- don't condense when braces contain extglobs
-
-## [2.2.0] - 2017-05-28
-
-- ensure word boundaries are preserved
-- fixes edge case where extglob characters precede a brace pattern
-
-## [2.1.1] - 2017-04-27
-
-- use snapdragon-node
-- handle edge case
-- optimizations, lint
-
-## [2.0.4] - 2017-04-11
-
-- pass opts to compiler
-- minor optimization in create method
-- re-write parser handlers to remove negation regex
-
-## [2.0.3] - 2016-12-10
-
-- use split-string
-- clear queue at the end
-- adds sequences example
-- add unit tests
-
-## [2.0.2] - 2016-10-21
-
-- fix comma handling in nested extglobs
-
-## [2.0.1] - 2016-10-20
-
-- add comments
-- more tests, ensure quotes are stripped
-
-## [2.0.0] - 2016-10-19
-
-- don't expand braces inside character classes
-- add quantifier pattern
-
-## [1.8.5] - 2016-05-21
-
-- Refactor (#10)
-
-## [1.8.4] - 2016-04-20
-
-- fixes https://github.com/jonschlinkert/micromatch/issues/66
-
-## [1.8.0] - 2015-03-18
-
-- adds exponent examples, tests
-- fixes the first example in https://github.com/jonschlinkert/micromatch/issues/38
-
-## [1.6.0] - 2015-01-30
-
-- optimizations, `bash` mode:
-- improve path escaping
-
-## [1.5.0] - 2015-01-28
-
-- Merge pull request #5 from eush77/lib-files
-
-## [1.4.0] - 2015-01-24
-
-- add extglob tests
-- externalize exponent function
-- better whitespace handling
-
-## [1.3.0] - 2015-01-24
-
-- make regex patterns explicity
-
-## [1.1.0] - 2015-01-11
-
-- don't create a match group with `makeRe`
-
-## [1.0.0] - 2014-12-23
-
-- Merge commit '97b05f5544f8348736a8efaecf5c32bbe3e2ad6e'
-- support empty brace syntax
-- better bash coverage
-- better support for regex strings
-
-## [0.1.4] - 2014-11-14
-
-- improve recognition of bad args, recognize mismatched argument types
-- support escaping
-- remove pathname-expansion
-- support whitespace in patterns
-
-## [0.1.0]
-
-- first commit
-
-[2.3.2]: https://github.com/micromatch/braces/compare/2.3.1...2.3.2
-[2.3.1]: https://github.com/micromatch/braces/compare/2.3.0...2.3.1
-[2.3.0]: https://github.com/micromatch/braces/compare/2.2.1...2.3.0
-[2.2.1]: https://github.com/micromatch/braces/compare/2.2.0...2.2.1
-[2.2.0]: https://github.com/micromatch/braces/compare/2.1.1...2.2.0
-[2.1.1]: https://github.com/micromatch/braces/compare/2.1.0...2.1.1
-[2.1.0]: https://github.com/micromatch/braces/compare/2.0.4...2.1.0
-[2.0.4]: https://github.com/micromatch/braces/compare/2.0.3...2.0.4
-[2.0.3]: https://github.com/micromatch/braces/compare/2.0.2...2.0.3
-[2.0.2]: https://github.com/micromatch/braces/compare/2.0.1...2.0.2
-[2.0.1]: https://github.com/micromatch/braces/compare/2.0.0...2.0.1
-[2.0.0]: https://github.com/micromatch/braces/compare/1.8.5...2.0.0
-[1.8.5]: https://github.com/micromatch/braces/compare/1.8.4...1.8.5
-[1.8.4]: https://github.com/micromatch/braces/compare/1.8.0...1.8.4
-[1.8.0]: https://github.com/micromatch/braces/compare/1.6.0...1.8.0
-[1.6.0]: https://github.com/micromatch/braces/compare/1.5.0...1.6.0
-[1.5.0]: https://github.com/micromatch/braces/compare/1.4.0...1.5.0
-[1.4.0]: https://github.com/micromatch/braces/compare/1.3.0...1.4.0
-[1.3.0]: https://github.com/micromatch/braces/compare/1.2.0...1.3.0
-[1.2.0]: https://github.com/micromatch/braces/compare/1.1.0...1.2.0
-[1.1.0]: https://github.com/micromatch/braces/compare/1.0.0...1.1.0
-[1.0.0]: https://github.com/micromatch/braces/compare/0.1.4...1.0.0
-[0.1.4]: https://github.com/micromatch/braces/compare/0.1.0...0.1.4
-
-[Unreleased]: https://github.com/micromatch/braces/compare/0.1.0...HEAD
-[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog \ No newline at end of file
diff --git a/assets/node_modules/braces/LICENSE b/assets/node_modules/braces/LICENSE
deleted file mode 100644
index d32ab44..0000000
--- a/assets/node_modules/braces/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2018, Jon Schlinkert.
-
-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/assets/node_modules/braces/README.md b/assets/node_modules/braces/README.md
deleted file mode 100644
index cba2f60..0000000
--- a/assets/node_modules/braces/README.md
+++ /dev/null
@@ -1,593 +0,0 @@
-# braces [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [![NPM version](https://img.shields.io/npm/v/braces.svg?style=flat)](https://www.npmjs.com/package/braces) [![NPM monthly downloads](https://img.shields.io/npm/dm/braces.svg?style=flat)](https://npmjs.org/package/braces) [![NPM total downloads](https://img.shields.io/npm/dt/braces.svg?style=flat)](https://npmjs.org/package/braces) [![Linux Build Status](https://img.shields.io/travis/micromatch/braces.svg?style=flat&label=Travis)](https://travis-ci.org/micromatch/braces)
-
-> Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save braces
-```
-
-## v3.0.0 Released!!
-
-See the [changelog](CHANGELOG.md) for details.
-
-## Why use braces?
-
-Brace patterns make globs more powerful by adding the ability to match specific ranges and sequences of characters.
-
-* **Accurate** - complete support for the [Bash 4.3 Brace Expansion](www.gnu.org/software/bash/) specification (passes all of the Bash braces tests)
-* **[fast and performant](#benchmarks)** - Starts fast, runs fast and [scales well](#performance) as patterns increase in complexity.
-* **Organized code base** - The parser and compiler are easy to maintain and update when edge cases crop up.
-* **Well-tested** - Thousands of test assertions, and passes all of the Bash, minimatch, and [brace-expansion](https://github.com/juliangruber/brace-expansion) unit tests (as of the date this was written).
-* **Safer** - You shouldn't have to worry about users defining aggressive or malicious brace patterns that can break your application. Braces takes measures to prevent malicious regex that can be used for DDoS attacks (see [catastrophic backtracking](https://www.regular-expressions.info/catastrophic.html)).
-* [Supports lists](#lists) - (aka "sets") `a/{b,c}/d` => `['a/b/d', 'a/c/d']`
-* [Supports sequences](#sequences) - (aka "ranges") `{01..03}` => `['01', '02', '03']`
-* [Supports steps](#steps) - (aka "increments") `{2..10..2}` => `['2', '4', '6', '8', '10']`
-* [Supports escaping](#escaping) - To prevent evaluation of special characters.
-
-## Usage
-
-The main export is a function that takes one or more brace `patterns` and `options`.
-
-```js
-const braces = require('braces');
-// braces(patterns[, options]);
-
-console.log(braces(['{01..05}', '{a..e}']));
-//=> ['(0[1-5])', '([a-e])']
-
-console.log(braces(['{01..05}', '{a..e}'], { expand: true }));
-//=> ['01', '02', '03', '04', '05', 'a', 'b', 'c', 'd', 'e']
-```
-
-### Brace Expansion vs. Compilation
-
-By default, brace patterns are compiled into strings that are optimized for creating regular expressions and matching.
-
-**Compiled**
-
-```js
-console.log(braces('a/{x,y,z}/b'));
-//=> ['a/(x|y|z)/b']
-console.log(braces(['a/{01..20}/b', 'a/{1..5}/b']));
-//=> [ 'a/(0[1-9]|1[0-9]|20)/b', 'a/([1-5])/b' ]
-```
-
-**Expanded**
-
-Enable brace expansion by setting the `expand` option to true, or by using [braces.expand()](#expand) (returns an array similar to what you'd expect from Bash, or `echo {1..5}`, or [minimatch](https://github.com/isaacs/minimatch)):
-
-```js
-console.log(braces('a/{x,y,z}/b', { expand: true }));
-//=> ['a/x/b', 'a/y/b', 'a/z/b']
-
-console.log(braces.expand('{01..10}'));
-//=> ['01','02','03','04','05','06','07','08','09','10']
-```
-
-### Lists
-
-Expand lists (like Bash "sets"):
-
-```js
-console.log(braces('a/{foo,bar,baz}/*.js'));
-//=> ['a/(foo|bar|baz)/*.js']
-
-console.log(braces.expand('a/{foo,bar,baz}/*.js'));
-//=> ['a/foo/*.js', 'a/bar/*.js', 'a/baz/*.js']
-```
-
-### Sequences
-
-Expand ranges of characters (like Bash "sequences"):
-
-```js
-console.log(braces.expand('{1..3}')); // ['1', '2', '3']
-console.log(braces.expand('a/{1..3}/b')); // ['a/1/b', 'a/2/b', 'a/3/b']
-console.log(braces('{a..c}', { expand: true })); // ['a', 'b', 'c']
-console.log(braces('foo/{a..c}', { expand: true })); // ['foo/a', 'foo/b', 'foo/c']
-
-// supports zero-padded ranges
-console.log(braces('a/{01..03}/b')); //=> ['a/(0[1-3])/b']
-console.log(braces('a/{001..300}/b')); //=> ['a/(0{2}[1-9]|0[1-9][0-9]|[12][0-9]{2}|300)/b']
-```
-
-See [fill-range](https://github.com/jonschlinkert/fill-range) for all available range-expansion options.
-
-### Steppped ranges
-
-Steps, or increments, may be used with ranges:
-
-```js
-console.log(braces.expand('{2..10..2}'));
-//=> ['2', '4', '6', '8', '10']
-
-console.log(braces('{2..10..2}'));
-//=> ['(2|4|6|8|10)']
-```
-
-When the [.optimize](#optimize) method is used, or [options.optimize](#optionsoptimize) is set to true, sequences are passed to [to-regex-range](https://github.com/jonschlinkert/to-regex-range) for expansion.
-
-### Nesting
-
-Brace patterns may be nested. The results of each expanded string are not sorted, and left to right order is preserved.
-
-**"Expanded" braces**
-
-```js
-console.log(braces.expand('a{b,c,/{x,y}}/e'));
-//=> ['ab/e', 'ac/e', 'a/x/e', 'a/y/e']
-
-console.log(braces.expand('a/{x,{1..5},y}/c'));
-//=> ['a/x/c', 'a/1/c', 'a/2/c', 'a/3/c', 'a/4/c', 'a/5/c', 'a/y/c']
-```
-
-**"Optimized" braces**
-
-```js
-console.log(braces('a{b,c,/{x,y}}/e'));
-//=> ['a(b|c|/(x|y))/e']
-
-console.log(braces('a/{x,{1..5},y}/c'));
-//=> ['a/(x|([1-5])|y)/c']
-```
-
-### Escaping
-
-**Escaping braces**
-
-A brace pattern will not be expanded or evaluted if _either the opening or closing brace is escaped_:
-
-```js
-console.log(braces.expand('a\\{d,c,b}e'));
-//=> ['a{d,c,b}e']
-
-console.log(braces.expand('a{d,c,b\\}e'));
-//=> ['a{d,c,b}e']
-```
-
-**Escaping commas**
-
-Commas inside braces may also be escaped:
-
-```js
-console.log(braces.expand('a{b\\,c}d'));
-//=> ['a{b,c}d']
-
-console.log(braces.expand('a{d\\,c,b}e'));
-//=> ['ad,ce', 'abe']
-```
-
-**Single items**
-
-Following bash conventions, a brace pattern is also not expanded when it contains a single character:
-
-```js
-console.log(braces.expand('a{b}c'));
-//=> ['a{b}c']
-```
-
-## Options
-
-### options.maxLength
-
-**Type**: `Number`
-
-**Default**: `65,536`
-
-**Description**: Limit the length of the input string. Useful when the input string is generated or your application allows users to pass a string, et cetera.
-
-```js
-console.log(braces('a/{b,c}/d', { maxLength: 3 })); //=> throws an error
-```
-
-### options.expand
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-**Description**: Generate an "expanded" brace pattern (alternatively you can use the `braces.expand()` method, which does the same thing).
-
-```js
-console.log(braces('a/{b,c}/d', { expand: true }));
-//=> [ 'a/b/d', 'a/c/d' ]
-```
-
-### options.nodupes
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-**Description**: Remove duplicates from the returned array.
-
-### options.rangeLimit
-
-**Type**: `Number`
-
-**Default**: `1000`
-
-**Description**: To prevent malicious patterns from being passed by users, an error is thrown when `braces.expand()` is used or `options.expand` is true and the generated range will exceed the `rangeLimit`.
-
-You can customize `options.rangeLimit` or set it to `Inifinity` to disable this altogether.
-
-**Examples**
-
-```js
-// pattern exceeds the "rangeLimit", so it's optimized automatically
-console.log(braces.expand('{1..1000}'));
-//=> ['([1-9]|[1-9][0-9]{1,2}|1000)']
-
-// pattern does not exceed "rangeLimit", so it's NOT optimized
-console.log(braces.expand('{1..100}'));
-//=> ['1', '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', '93', '94', '95', '96', '97', '98', '99', '100']
-```
-
-### options.transform
-
-**Type**: `Function`
-
-**Default**: `undefined`
-
-**Description**: Customize range expansion.
-
-**Example: Transforming non-numeric values**
-
-```js
-const alpha = braces.expand('x/{a..e}/y', {
- transform(value, index) {
- // When non-numeric values are passed, "value" is a character code.
- return 'foo/' + String.fromCharCode(value) + '-' + index;
- }
-});
-console.log(alpha);
-//=> [ 'x/foo/a-0/y', 'x/foo/b-1/y', 'x/foo/c-2/y', 'x/foo/d-3/y', 'x/foo/e-4/y' ]
-```
-
-**Example: Transforming numeric values**
-
-```js
-const numeric = braces.expand('{1..5}', {
- transform(value) {
- // when numeric values are passed, "value" is a number
- return 'foo/' + value * 2;
- }
-});
-console.log(numeric);
-//=> [ 'foo/2', 'foo/4', 'foo/6', 'foo/8', 'foo/10' ]
-```
-
-### options.quantifiers
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-**Description**: In regular expressions, quanitifiers can be used to specify how many times a token can be repeated. For example, `a{1,3}` will match the letter `a` one to three times.
-
-Unfortunately, regex quantifiers happen to share the same syntax as [Bash lists](#lists)
-
-The `quantifiers` option tells braces to detect when [regex quantifiers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#quantifiers) are defined in the given pattern, and not to try to expand them as lists.
-
-**Examples**
-
-```js
-const braces = require('braces');
-console.log(braces('a/b{1,3}/{x,y,z}'));
-//=> [ 'a/b(1|3)/(x|y|z)' ]
-console.log(braces('a/b{1,3}/{x,y,z}', {quantifiers: true}));
-//=> [ 'a/b{1,3}/(x|y|z)' ]
-console.log(braces('a/b{1,3}/{x,y,z}', {quantifiers: true, expand: true}));
-//=> [ 'a/b{1,3}/x', 'a/b{1,3}/y', 'a/b{1,3}/z' ]
-```
-
-### options.unescape
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-**Description**: Strip backslashes that were used for escaping from the result.
-
-## What is "brace expansion"?
-
-Brace expansion is a type of parameter expansion that was made popular by unix shells for generating lists of strings, as well as regex-like matching when used alongside wildcards (globs).
-
-In addition to "expansion", braces are also used for matching. In other words:
-
-* [brace expansion](#brace-expansion) is for generating new lists
-* [brace matching](#brace-matching) is for filtering existing lists
-
-<details>
-<summary><strong>More about brace expansion</strong> (click to expand)</summary>
-
-There are two main types of brace expansion:
-
-1. **lists**: which are defined using comma-separated values inside curly braces: `{a,b,c}`
-2. **sequences**: which are defined using a starting value and an ending value, separated by two dots: `a{1..3}b`. Optionally, a third argument may be passed to define a "step" or increment to use: `a{1..100..10}b`. These are also sometimes referred to as "ranges".
-
-Here are some example brace patterns to illustrate how they work:
-
-**Sets**
-
-```
-{a,b,c} => a b c
-{a,b,c}{1,2} => a1 a2 b1 b2 c1 c2
-```
-
-**Sequences**
-
-```
-{1..9} => 1 2 3 4 5 6 7 8 9
-{4..-4} => 4 3 2 1 0 -1 -2 -3 -4
-{1..20..3} => 1 4 7 10 13 16 19
-{a..j} => a b c d e f g h i j
-{j..a} => j i h g f e d c b a
-{a..z..3} => a d g j m p s v y
-```
-
-**Combination**
-
-Sets and sequences can be mixed together or used along with any other strings.
-
-```
-{a,b,c}{1..3} => a1 a2 a3 b1 b2 b3 c1 c2 c3
-foo/{a,b,c}/bar => foo/a/bar foo/b/bar foo/c/bar
-```
-
-The fact that braces can be "expanded" from relatively simple patterns makes them ideal for quickly generating test fixtures, file paths, and similar use cases.
-
-## Brace matching
-
-In addition to _expansion_, brace patterns are also useful for performing regular-expression-like matching.
-
-For example, the pattern `foo/{1..3}/bar` would match any of following strings:
-
-```
-foo/1/bar
-foo/2/bar
-foo/3/bar
-```
-
-But not:
-
-```
-baz/1/qux
-baz/2/qux
-baz/3/qux
-```
-
-Braces can also be combined with [glob patterns](https://github.com/jonschlinkert/micromatch) to perform more advanced wildcard matching. For example, the pattern `*/{1..3}/*` would match any of following strings:
-
-```
-foo/1/bar
-foo/2/bar
-foo/3/bar
-baz/1/qux
-baz/2/qux
-baz/3/qux
-```
-
-## Brace matching pitfalls
-
-Although brace patterns offer a user-friendly way of matching ranges or sets of strings, there are also some major disadvantages and potential risks you should be aware of.
-
-### tldr
-
-**"brace bombs"**
-
-* brace expansion can eat up a huge amount of processing resources
-* as brace patterns increase _linearly in size_, the system resources required to expand the pattern increase exponentially
-* users can accidentally (or intentially) exhaust your system's resources resulting in the equivalent of a DoS attack (bonus: no programming knowledge is required!)
-
-For a more detailed explanation with examples, see the [geometric complexity](#geometric-complexity) section.
-
-### The solution
-
-Jump to the [performance section](#performance) to see how Braces solves this problem in comparison to other libraries.
-
-### Geometric complexity
-
-At minimum, brace patterns with sets limited to two elements have quadradic or `O(n^2)` complexity. But the complexity of the algorithm increases exponentially as the number of sets, _and elements per set_, increases, which is `O(n^c)`.
-
-For example, the following sets demonstrate quadratic (`O(n^2)`) complexity:
-
-```
-{1,2}{3,4} => (2X2) => 13 14 23 24
-{1,2}{3,4}{5,6} => (2X2X2) => 135 136 145 146 235 236 245 246
-```
-
-But add an element to a set, and we get a n-fold Cartesian product with `O(n^c)` complexity:
-
-```
-{1,2,3}{4,5,6}{7,8,9} => (3X3X3) => 147 148 149 157 158 159 167 168 169 247 248
- 249 257 258 259 267 268 269 347 348 349 357
- 358 359 367 368 369
-```
-
-Now, imagine how this complexity grows given that each element is a n-tuple:
-
-```
-{1..100}{1..100} => (100X100) => 10,000 elements (38.4 kB)
-{1..100}{1..100}{1..100} => (100X100X100) => 1,000,000 elements (5.76 MB)
-```
-
-Although these examples are clearly contrived, they demonstrate how brace patterns can quickly grow out of control.
-
-**More information**
-
-Interested in learning more about brace expansion?
-
-* [linuxjournal/bash-brace-expansion](http://www.linuxjournal.com/content/bash-brace-expansion)
-* [rosettacode/Brace_expansion](https://rosettacode.org/wiki/Brace_expansion)
-* [cartesian product](https://en.wikipedia.org/wiki/Cartesian_product)
-
-</details>
-
-## Performance
-
-Braces is not only screaming fast, it's also more accurate the other brace expansion libraries.
-
-### Better algorithms
-
-Fortunately there is a solution to the ["brace bomb" problem](#brace-matching-pitfalls): _don't expand brace patterns into an array when they're used for matching_.
-
-Instead, convert the pattern into an optimized regular expression. This is easier said than done, and braces is the only library that does this currently.
-
-**The proof is in the numbers**
-
-Minimatch gets exponentially slower as patterns increase in complexity, braces does not. The following results were generated using `braces()` and `minimatch.braceExpand()`, respectively.
-
-| **Pattern** | **braces** | **[minimatch][]** |
-| --- | --- | --- |
-| `{1..9007199254740991}`[^1] | `298 B` (5ms 459μs)| N/A (freezes) |
-| `{1..1000000000000000}` | `41 B` (1ms 15μs) | N/A (freezes) |
-| `{1..100000000000000}` | `40 B` (890μs) | N/A (freezes) |
-| `{1..10000000000000}` | `39 B` (2ms 49μs) | N/A (freezes) |
-| `{1..1000000000000}` | `38 B` (608μs) | N/A (freezes) |
-| `{1..100000000000}` | `37 B` (397μs) | N/A (freezes) |
-| `{1..10000000000}` | `35 B` (983μs) | N/A (freezes) |
-| `{1..1000000000}` | `34 B` (798μs) | N/A (freezes) |
-| `{1..100000000}` | `33 B` (733μs) | N/A (freezes) |
-| `{1..10000000}` | `32 B` (5ms 632μs) | `78.89 MB` (16s 388ms 569μs) |
-| `{1..1000000}` | `31 B` (1ms 381μs) | `6.89 MB` (1s 496ms 887μs) |
-| `{1..100000}` | `30 B` (950μs) | `588.89 kB` (146ms 921μs) |
-| `{1..10000}` | `29 B` (1ms 114μs) | `48.89 kB` (14ms 187μs) |
-| `{1..1000}` | `28 B` (760μs) | `3.89 kB` (1ms 453μs) |
-| `{1..100}` | `22 B` (345μs) | `291 B` (196μs) |
-| `{1..10}` | `10 B` (533μs) | `20 B` (37μs) |
-| `{1..3}` | `7 B` (190μs) | `5 B` (27μs) |
-
-### Faster algorithms
-
-When you need expansion, braces is still much faster.
-
-_(the following results were generated using `braces.expand()` and `minimatch.braceExpand()`, respectively)_
-
-| **Pattern** | **braces** | **[minimatch][]** |
-| --- | --- | --- |
-| `{1..10000000}` | `78.89 MB` (2s 698ms 642μs) | `78.89 MB` (18s 601ms 974μs) |
-| `{1..1000000}` | `6.89 MB` (458ms 576μs) | `6.89 MB` (1s 491ms 621μs) |
-| `{1..100000}` | `588.89 kB` (20ms 728μs) | `588.89 kB` (156ms 919μs) |
-| `{1..10000}` | `48.89 kB` (2ms 202μs) | `48.89 kB` (13ms 641μs) |
-| `{1..1000}` | `3.89 kB` (1ms 796μs) | `3.89 kB` (1ms 958μs) |
-| `{1..100}` | `291 B` (424μs) | `291 B` (211μs) |
-| `{1..10}` | `20 B` (487μs) | `20 B` (72μs) |
-| `{1..3}` | `5 B` (166μs) | `5 B` (27μs) |
-
-If you'd like to run these comparisons yourself, see [test/support/generate.js](test/support/generate.js).
-
-## Benchmarks
-
-### Running benchmarks
-
-Install dev dependencies:
-
-```bash
-npm i -d && npm benchmark
-```
-
-### Latest results
-
-Braces is more accurate, without sacrificing performance.
-
-```bash
-# range (expanded)
- braces x 29,040 ops/sec ±3.69% (91 runs sampled))
- minimatch x 4,735 ops/sec ±1.28% (90 runs sampled)
-
-# range (optimized for regex)
- braces x 382,878 ops/sec ±0.56% (94 runs sampled)
- minimatch x 1,040 ops/sec ±0.44% (93 runs sampled)
-
-# nested ranges (expanded)
- braces x 19,744 ops/sec ±2.27% (92 runs sampled))
- minimatch x 4,579 ops/sec ±0.50% (93 runs sampled)
-
-# nested ranges (optimized for regex)
- braces x 246,019 ops/sec ±2.02% (93 runs sampled)
- minimatch x 1,028 ops/sec ±0.39% (94 runs sampled)
-
-# set (expanded)
- braces x 138,641 ops/sec ±0.53% (95 runs sampled)
- minimatch x 219,582 ops/sec ±0.98% (94 runs sampled)
-
-# set (optimized for regex)
- braces x 388,408 ops/sec ±0.41% (95 runs sampled)
- minimatch x 44,724 ops/sec ±0.91% (89 runs sampled)
-
-# nested sets (expanded)
- braces x 84,966 ops/sec ±0.48% (94 runs sampled)
- minimatch x 140,720 ops/sec ±0.37% (95 runs sampled)
-
-# nested sets (optimized for regex)
- braces x 263,340 ops/sec ±2.06% (92 runs sampled)
- minimatch x 28,714 ops/sec ±0.40% (90 runs sampled)
-```
-
-## About
-
-<details>
-<summary><strong>Contributing</strong></summary>
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-</details>
-
-<details>
-<summary><strong>Running Tests</strong></summary>
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-</details>
-
-<details>
-<summary><strong>Building docs</strong></summary>
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-</details>
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 197 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 4 | [doowb](https://github.com/doowb) |
-| 1 | [es128](https://github.com/es128) |
-| 1 | [eush77](https://github.com/eush77) |
-| 1 | [hemanth](https://github.com/hemanth) |
-| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-
-### License
-
-Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 08, 2019._ \ No newline at end of file
diff --git a/assets/node_modules/braces/index.js b/assets/node_modules/braces/index.js
deleted file mode 100644
index 0eee0f5..0000000
--- a/assets/node_modules/braces/index.js
+++ /dev/null
@@ -1,170 +0,0 @@
-'use strict';
-
-const stringify = require('./lib/stringify');
-const compile = require('./lib/compile');
-const expand = require('./lib/expand');
-const parse = require('./lib/parse');
-
-/**
- * Expand the given pattern or create a regex-compatible string.
- *
- * ```js
- * const braces = require('braces');
- * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']
- * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']
- * ```
- * @param {String} `str`
- * @param {Object} `options`
- * @return {String}
- * @api public
- */
-
-const braces = (input, options = {}) => {
- let output = [];
-
- if (Array.isArray(input)) {
- for (let pattern of input) {
- let result = braces.create(pattern, options);
- if (Array.isArray(result)) {
- output.push(...result);
- } else {
- output.push(result);
- }
- }
- } else {
- output = [].concat(braces.create(input, options));
- }
-
- if (options && options.expand === true && options.nodupes === true) {
- output = [...new Set(output)];
- }
- return output;
-};
-
-/**
- * Parse the given `str` with the given `options`.
- *
- * ```js
- * // braces.parse(pattern, [, options]);
- * const ast = braces.parse('a/{b,c}/d');
- * console.log(ast);
- * ```
- * @param {String} pattern Brace pattern to parse
- * @param {Object} options
- * @return {Object} Returns an AST
- * @api public
- */
-
-braces.parse = (input, options = {}) => parse(input, options);
-
-/**
- * Creates a braces string from an AST, or an AST node.
- *
- * ```js
- * const braces = require('braces');
- * let ast = braces.parse('foo/{a,b}/bar');
- * console.log(stringify(ast.nodes[2])); //=> '{a,b}'
- * ```
- * @param {String} `input` Brace pattern or AST.
- * @param {Object} `options`
- * @return {Array} Returns an array of expanded values.
- * @api public
- */
-
-braces.stringify = (input, options = {}) => {
- if (typeof input === 'string') {
- return stringify(braces.parse(input, options), options);
- }
- return stringify(input, options);
-};
-
-/**
- * Compiles a brace pattern into a regex-compatible, optimized string.
- * This method is called by the main [braces](#braces) function by default.
- *
- * ```js
- * const braces = require('braces');
- * console.log(braces.compile('a/{b,c}/d'));
- * //=> ['a/(b|c)/d']
- * ```
- * @param {String} `input` Brace pattern or AST.
- * @param {Object} `options`
- * @return {Array} Returns an array of expanded values.
- * @api public
- */
-
-braces.compile = (input, options = {}) => {
- if (typeof input === 'string') {
- input = braces.parse(input, options);
- }
- return compile(input, options);
-};
-
-/**
- * Expands a brace pattern into an array. This method is called by the
- * main [braces](#braces) function when `options.expand` is true. Before
- * using this method it's recommended that you read the [performance notes](#performance))
- * and advantages of using [.compile](#compile) instead.
- *
- * ```js
- * const braces = require('braces');
- * console.log(braces.expand('a/{b,c}/d'));
- * //=> ['a/b/d', 'a/c/d'];
- * ```
- * @param {String} `pattern` Brace pattern
- * @param {Object} `options`
- * @return {Array} Returns an array of expanded values.
- * @api public
- */
-
-braces.expand = (input, options = {}) => {
- if (typeof input === 'string') {
- input = braces.parse(input, options);
- }
-
- let result = expand(input, options);
-
- // filter out empty strings if specified
- if (options.noempty === true) {
- result = result.filter(Boolean);
- }
-
- // filter out duplicates if specified
- if (options.nodupes === true) {
- result = [...new Set(result)];
- }
-
- return result;
-};
-
-/**
- * Processes a brace pattern and returns either an expanded array
- * (if `options.expand` is true), a highly optimized regex-compatible string.
- * This method is called by the main [braces](#braces) function.
- *
- * ```js
- * const braces = require('braces');
- * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))
- * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'
- * ```
- * @param {String} `pattern` Brace pattern
- * @param {Object} `options`
- * @return {Array} Returns an array of expanded values.
- * @api public
- */
-
-braces.create = (input, options = {}) => {
- if (input === '' || input.length < 3) {
- return [input];
- }
-
- return options.expand !== true
- ? braces.compile(input, options)
- : braces.expand(input, options);
-};
-
-/**
- * Expose "braces"
- */
-
-module.exports = braces;
diff --git a/assets/node_modules/braces/lib/compile.js b/assets/node_modules/braces/lib/compile.js
deleted file mode 100644
index 3e984a4..0000000
--- a/assets/node_modules/braces/lib/compile.js
+++ /dev/null
@@ -1,57 +0,0 @@
-'use strict';
-
-const fill = require('fill-range');
-const utils = require('./utils');
-
-const compile = (ast, options = {}) => {
- let walk = (node, parent = {}) => {
- let invalidBlock = utils.isInvalidBrace(parent);
- let invalidNode = node.invalid === true && options.escapeInvalid === true;
- let invalid = invalidBlock === true || invalidNode === true;
- let prefix = options.escapeInvalid === true ? '\\' : '';
- let output = '';
-
- if (node.isOpen === true) {
- return prefix + node.value;
- }
- if (node.isClose === true) {
- return prefix + node.value;
- }
-
- if (node.type === 'open') {
- return invalid ? (prefix + node.value) : '(';
- }
-
- if (node.type === 'close') {
- return invalid ? (prefix + node.value) : ')';
- }
-
- if (node.type === 'comma') {
- return node.prev.type === 'comma' ? '' : (invalid ? node.value : '|');
- }
-
- if (node.value) {
- return node.value;
- }
-
- if (node.nodes && node.ranges > 0) {
- let args = utils.reduce(node.nodes);
- let range = fill(...args, { ...options, wrap: false, toRegex: true });
-
- if (range.length !== 0) {
- return args.length > 1 && range.length > 1 ? `(${range})` : range;
- }
- }
-
- if (node.nodes) {
- for (let child of node.nodes) {
- output += walk(child, node);
- }
- }
- return output;
- };
-
- return walk(ast);
-};
-
-module.exports = compile;
diff --git a/assets/node_modules/braces/lib/constants.js b/assets/node_modules/braces/lib/constants.js
deleted file mode 100644
index a937943..0000000
--- a/assets/node_modules/braces/lib/constants.js
+++ /dev/null
@@ -1,57 +0,0 @@
-'use strict';
-
-module.exports = {
- MAX_LENGTH: 1024 * 64,
-
- // Digits
- CHAR_0: '0', /* 0 */
- CHAR_9: '9', /* 9 */
-
- // Alphabet chars.
- CHAR_UPPERCASE_A: 'A', /* A */
- CHAR_LOWERCASE_A: 'a', /* a */
- CHAR_UPPERCASE_Z: 'Z', /* Z */
- CHAR_LOWERCASE_Z: 'z', /* z */
-
- CHAR_LEFT_PARENTHESES: '(', /* ( */
- CHAR_RIGHT_PARENTHESES: ')', /* ) */
-
- CHAR_ASTERISK: '*', /* * */
-
- // Non-alphabetic chars.
- CHAR_AMPERSAND: '&', /* & */
- CHAR_AT: '@', /* @ */
- CHAR_BACKSLASH: '\\', /* \ */
- CHAR_BACKTICK: '`', /* ` */
- CHAR_CARRIAGE_RETURN: '\r', /* \r */
- CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */
- CHAR_COLON: ':', /* : */
- CHAR_COMMA: ',', /* , */
- CHAR_DOLLAR: '$', /* . */
- CHAR_DOT: '.', /* . */
- CHAR_DOUBLE_QUOTE: '"', /* " */
- CHAR_EQUAL: '=', /* = */
- CHAR_EXCLAMATION_MARK: '!', /* ! */
- CHAR_FORM_FEED: '\f', /* \f */
- CHAR_FORWARD_SLASH: '/', /* / */
- CHAR_HASH: '#', /* # */
- CHAR_HYPHEN_MINUS: '-', /* - */
- CHAR_LEFT_ANGLE_BRACKET: '<', /* < */
- CHAR_LEFT_CURLY_BRACE: '{', /* { */
- CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */
- CHAR_LINE_FEED: '\n', /* \n */
- CHAR_NO_BREAK_SPACE: '\u00A0', /* \u00A0 */
- CHAR_PERCENT: '%', /* % */
- CHAR_PLUS: '+', /* + */
- CHAR_QUESTION_MARK: '?', /* ? */
- CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */
- CHAR_RIGHT_CURLY_BRACE: '}', /* } */
- CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */
- CHAR_SEMICOLON: ';', /* ; */
- CHAR_SINGLE_QUOTE: '\'', /* ' */
- CHAR_SPACE: ' ', /* */
- CHAR_TAB: '\t', /* \t */
- CHAR_UNDERSCORE: '_', /* _ */
- CHAR_VERTICAL_LINE: '|', /* | */
- CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\uFEFF' /* \uFEFF */
-};
diff --git a/assets/node_modules/braces/lib/expand.js b/assets/node_modules/braces/lib/expand.js
deleted file mode 100644
index 376c748..0000000
--- a/assets/node_modules/braces/lib/expand.js
+++ /dev/null
@@ -1,113 +0,0 @@
-'use strict';
-
-const fill = require('fill-range');
-const stringify = require('./stringify');
-const utils = require('./utils');
-
-const append = (queue = '', stash = '', enclose = false) => {
- let result = [];
-
- queue = [].concat(queue);
- stash = [].concat(stash);
-
- if (!stash.length) return queue;
- if (!queue.length) {
- return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;
- }
-
- for (let item of queue) {
- if (Array.isArray(item)) {
- for (let value of item) {
- result.push(append(value, stash, enclose));
- }
- } else {
- for (let ele of stash) {
- if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;
- result.push(Array.isArray(ele) ? append(item, ele, enclose) : (item + ele));
- }
- }
- }
- return utils.flatten(result);
-};
-
-const expand = (ast, options = {}) => {
- let rangeLimit = options.rangeLimit === void 0 ? 1000 : options.rangeLimit;
-
- let walk = (node, parent = {}) => {
- node.queue = [];
-
- let p = parent;
- let q = parent.queue;
-
- while (p.type !== 'brace' && p.type !== 'root' && p.parent) {
- p = p.parent;
- q = p.queue;
- }
-
- if (node.invalid || node.dollar) {
- q.push(append(q.pop(), stringify(node, options)));
- return;
- }
-
- if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {
- q.push(append(q.pop(), ['{}']));
- return;
- }
-
- if (node.nodes && node.ranges > 0) {
- let args = utils.reduce(node.nodes);
-
- if (utils.exceedsLimit(...args, options.step, rangeLimit)) {
- throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');
- }
-
- let range = fill(...args, options);
- if (range.length === 0) {
- range = stringify(node, options);
- }
-
- q.push(append(q.pop(), range));
- node.nodes = [];
- return;
- }
-
- let enclose = utils.encloseBrace(node);
- let queue = node.queue;
- let block = node;
-
- while (block.type !== 'brace' && block.type !== 'root' && block.parent) {
- block = block.parent;
- queue = block.queue;
- }
-
- for (let i = 0; i < node.nodes.length; i++) {
- let child = node.nodes[i];
-
- if (child.type === 'comma' && node.type === 'brace') {
- if (i === 1) queue.push('');
- queue.push('');
- continue;
- }
-
- if (child.type === 'close') {
- q.push(append(q.pop(), queue, enclose));
- continue;
- }
-
- if (child.value && child.type !== 'open') {
- queue.push(append(queue.pop(), child.value));
- continue;
- }
-
- if (child.nodes) {
- walk(child, node);
- }
- }
-
- return queue;
- };
-
- return utils.flatten(walk(ast));
-};
-
-module.exports = expand;
diff --git a/assets/node_modules/braces/lib/parse.js b/assets/node_modules/braces/lib/parse.js
deleted file mode 100644
index 145ea26..0000000
--- a/assets/node_modules/braces/lib/parse.js
+++ /dev/null
@@ -1,333 +0,0 @@
-'use strict';
-
-const stringify = require('./stringify');
-
-/**
- * Constants
- */
-
-const {
- MAX_LENGTH,
- CHAR_BACKSLASH, /* \ */
- CHAR_BACKTICK, /* ` */
- CHAR_COMMA, /* , */
- CHAR_DOT, /* . */
- CHAR_LEFT_PARENTHESES, /* ( */
- CHAR_RIGHT_PARENTHESES, /* ) */
- CHAR_LEFT_CURLY_BRACE, /* { */
- CHAR_RIGHT_CURLY_BRACE, /* } */
- CHAR_LEFT_SQUARE_BRACKET, /* [ */
- CHAR_RIGHT_SQUARE_BRACKET, /* ] */
- CHAR_DOUBLE_QUOTE, /* " */
- CHAR_SINGLE_QUOTE, /* ' */
- CHAR_NO_BREAK_SPACE,
- CHAR_ZERO_WIDTH_NOBREAK_SPACE
-} = require('./constants');
-
-/**
- * parse
- */
-
-const parse = (input, options = {}) => {
- if (typeof input !== 'string') {
- throw new TypeError('Expected a string');
- }
-
- let opts = options || {};
- let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
- if (input.length > max) {
- throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);
- }
-
- let ast = { type: 'root', input, nodes: [] };
- let stack = [ast];
- let block = ast;
- let prev = ast;
- let brackets = 0;
- let length = input.length;
- let index = 0;
- let depth = 0;
- let value;
- let memo = {};
-
- /**
- * Helpers
- */
-
- const advance = () => input[index++];
- const push = node => {
- if (node.type === 'text' && prev.type === 'dot') {
- prev.type = 'text';
- }
-
- if (prev && prev.type === 'text' && node.type === 'text') {
- prev.value += node.value;
- return;
- }
-
- block.nodes.push(node);
- node.parent = block;
- node.prev = prev;
- prev = node;
- return node;
- };
-
- push({ type: 'bos' });
-
- while (index < length) {
- block = stack[stack.length - 1];
- value = advance();
-
- /**
- * Invalid chars
- */
-
- if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {
- continue;
- }
-
- /**
- * Escaped chars
- */
-
- if (value === CHAR_BACKSLASH) {
- push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });
- continue;
- }
-
- /**
- * Right square bracket (literal): ']'
- */
-
- if (value === CHAR_RIGHT_SQUARE_BRACKET) {
- push({ type: 'text', value: '\\' + value });
- continue;
- }
-
- /**
- * Left square bracket: '['
- */
-
- if (value === CHAR_LEFT_SQUARE_BRACKET) {
- brackets++;
-
- let closed = true;
- let next;
-
- while (index < length && (next = advance())) {
- value += next;
-
- if (next === CHAR_LEFT_SQUARE_BRACKET) {
- brackets++;
- continue;
- }
-
- if (next === CHAR_BACKSLASH) {
- value += advance();
- continue;
- }
-
- if (next === CHAR_RIGHT_SQUARE_BRACKET) {
- brackets--;
-
- if (brackets === 0) {
- break;
- }
- }
- }
-
- push({ type: 'text', value });
- continue;
- }
-
- /**
- * Parentheses
- */
-
- if (value === CHAR_LEFT_PARENTHESES) {
- block = push({ type: 'paren', nodes: [] });
- stack.push(block);
- push({ type: 'text', value });
- continue;
- }
-
- if (value === CHAR_RIGHT_PARENTHESES) {
- if (block.type !== 'paren') {
- push({ type: 'text', value });
- continue;
- }
- block = stack.pop();
- push({ type: 'text', value });
- block = stack[stack.length - 1];
- continue;
- }
-
- /**
- * Quotes: '|"|`
- */
-
- if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {
- let open = value;
- let next;
-
- if (options.keepQuotes !== true) {
- value = '';
- }
-
- while (index < length && (next = advance())) {
- if (next === CHAR_BACKSLASH) {
- value += next + advance();
- continue;
- }
-
- if (next === open) {
- if (options.keepQuotes === true) value += next;
- break;
- }
-
- value += next;
- }
-
- push({ type: 'text', value });
- continue;
- }
-
- /**
- * Left curly brace: '{'
- */
-
- if (value === CHAR_LEFT_CURLY_BRACE) {
- depth++;
-
- let dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;
- let brace = {
- type: 'brace',
- open: true,
- close: false,
- dollar,
- depth,
- commas: 0,
- ranges: 0,
- nodes: []
- };
-
- block = push(brace);
- stack.push(block);
- push({ type: 'open', value });
- continue;
- }
-
- /**
- * Right curly brace: '}'
- */
-
- if (value === CHAR_RIGHT_CURLY_BRACE) {
- if (block.type !== 'brace') {
- push({ type: 'text', value });
- continue;
- }
-
- let type = 'close';
- block = stack.pop();
- block.close = true;
-
- push({ type, value });
- depth--;
-
- block = stack[stack.length - 1];
- continue;
- }
-
- /**
- * Comma: ','
- */
-
- if (value === CHAR_COMMA && depth > 0) {
- if (block.ranges > 0) {
- block.ranges = 0;
- let open = block.nodes.shift();
- block.nodes = [open, { type: 'text', value: stringify(block) }];
- }
-
- push({ type: 'comma', value });
- block.commas++;
- continue;
- }
-
- /**
- * Dot: '.'
- */
-
- if (value === CHAR_DOT && depth > 0 && block.commas === 0) {
- let siblings = block.nodes;
-
- if (depth === 0 || siblings.length === 0) {
- push({ type: 'text', value });
- continue;
- }
-
- if (prev.type === 'dot') {
- block.range = [];
- prev.value += value;
- prev.type = 'range';
-
- if (block.nodes.length !== 3 && block.nodes.length !== 5) {
- block.invalid = true;
- block.ranges = 0;
- prev.type = 'text';
- continue;
- }
-
- block.ranges++;
- block.args = [];
- continue;
- }
-
- if (prev.type === 'range') {
- siblings.pop();
-
- let before = siblings[siblings.length - 1];
- before.value += prev.value + value;
- prev = before;
- block.ranges--;
- continue;
- }
-
- push({ type: 'dot', value });
- continue;
- }
-
- /**
- * Text
- */
-
- push({ type: 'text', value });
- }
-
- // Mark imbalanced braces and brackets as invalid
- do {
- block = stack.pop();
-
- if (block.type !== 'root') {
- block.nodes.forEach(node => {
- if (!node.nodes) {
- if (node.type === 'open') node.isOpen = true;
- if (node.type === 'close') node.isClose = true;
- if (!node.nodes) node.type = 'text';
- node.invalid = true;
- }
- });
-
- // get the location of the block on parent.nodes (block's siblings)
- let parent = stack[stack.length - 1];
- let index = parent.nodes.indexOf(block);
- // replace the (invalid) block with it's nodes
- parent.nodes.splice(index, 1, ...block.nodes);
- }
- } while (stack.length > 0);
-
- push({ type: 'eos' });
- return ast;
-};
-
-module.exports = parse;
diff --git a/assets/node_modules/braces/lib/stringify.js b/assets/node_modules/braces/lib/stringify.js
deleted file mode 100644
index 414b7bc..0000000
--- a/assets/node_modules/braces/lib/stringify.js
+++ /dev/null
@@ -1,32 +0,0 @@
-'use strict';
-
-const utils = require('./utils');
-
-module.exports = (ast, options = {}) => {
- let stringify = (node, parent = {}) => {
- let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);
- let invalidNode = node.invalid === true && options.escapeInvalid === true;
- let output = '';
-
- if (node.value) {
- if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {
- return '\\' + node.value;
- }
- return node.value;
- }
-
- if (node.value) {
- return node.value;
- }
-
- if (node.nodes) {
- for (let child of node.nodes) {
- output += stringify(child);
- }
- }
- return output;
- };
-
- return stringify(ast);
-};
-
diff --git a/assets/node_modules/braces/lib/utils.js b/assets/node_modules/braces/lib/utils.js
deleted file mode 100644
index e3551a6..0000000
--- a/assets/node_modules/braces/lib/utils.js
+++ /dev/null
@@ -1,112 +0,0 @@
-'use strict';
-
-exports.isInteger = num => {
- if (typeof num === 'number') {
- return Number.isInteger(num);
- }
- if (typeof num === 'string' && num.trim() !== '') {
- return Number.isInteger(Number(num));
- }
- return false;
-};
-
-/**
- * Find a node of the given type
- */
-
-exports.find = (node, type) => node.nodes.find(node => node.type === type);
-
-/**
- * Find a node of the given type
- */
-
-exports.exceedsLimit = (min, max, step = 1, limit) => {
- if (limit === false) return false;
- if (!exports.isInteger(min) || !exports.isInteger(max)) return false;
- return ((Number(max) - Number(min)) / Number(step)) >= limit;
-};
-
-/**
- * Escape the given node with '\\' before node.value
- */
-
-exports.escapeNode = (block, n = 0, type) => {
- let node = block.nodes[n];
- if (!node) return;
-
- if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {
- if (node.escaped !== true) {
- node.value = '\\' + node.value;
- node.escaped = true;
- }
- }
-};
-
-/**
- * Returns true if the given brace node should be enclosed in literal braces
- */
-
-exports.encloseBrace = node => {
- if (node.type !== 'brace') return false;
- if ((node.commas >> 0 + node.ranges >> 0) === 0) {
- node.invalid = true;
- return true;
- }
- return false;
-};
-
-/**
- * Returns true if a brace node is invalid.
- */
-
-exports.isInvalidBrace = block => {
- if (block.type !== 'brace') return false;
- if (block.invalid === true || block.dollar) return true;
- if ((block.commas >> 0 + block.ranges >> 0) === 0) {
- block.invalid = true;
- return true;
- }
- if (block.open !== true || block.close !== true) {
- block.invalid = true;
- return true;
- }
- return false;
-};
-
-/**
- * Returns true if a node is an open or close node
- */
-
-exports.isOpenOrClose = node => {
- if (node.type === 'open' || node.type === 'close') {
- return true;
- }
- return node.open === true || node.close === true;
-};
-
-/**
- * Reduce an array of text nodes.
- */
-
-exports.reduce = nodes => nodes.reduce((acc, node) => {
- if (node.type === 'text') acc.push(node.value);
- if (node.type === 'range') node.type = 'text';
- return acc;
-}, []);
-
-/**
- * Flatten an array
- */
-
-exports.flatten = (...args) => {
- const result = [];
- const flat = arr => {
- for (let i = 0; i < arr.length; i++) {
- let ele = arr[i];
- Array.isArray(ele) ? flat(ele, result) : ele !== void 0 && result.push(ele);
- }
- return result;
- };
- flat(args);
- return result;
-};
diff --git a/assets/node_modules/braces/package.json b/assets/node_modules/braces/package.json
deleted file mode 100644
index 3f52e34..0000000
--- a/assets/node_modules/braces/package.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "name": "braces",
- "description": "Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.",
- "version": "3.0.2",
- "homepage": "https://github.com/micromatch/braces",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Brian Woodward (https://twitter.com/doowb)",
- "Elan Shanker (https://github.com/es128)",
- "Eugene Sharygin (https://github.com/eush77)",
- "hemanth.hm (http://h3manth.com)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)"
- ],
- "repository": "micromatch/braces",
- "bugs": {
- "url": "https://github.com/micromatch/braces/issues"
- },
- "license": "MIT",
- "files": [
- "index.js",
- "lib"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "mocha",
- "benchmark": "node benchmark"
- },
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "devDependencies": {
- "ansi-colors": "^3.2.4",
- "bash-path": "^2.0.1",
- "gulp-format-md": "^2.0.0",
- "mocha": "^6.1.1"
- },
- "keywords": [
- "alpha",
- "alphabetical",
- "bash",
- "brace",
- "braces",
- "expand",
- "expansion",
- "filepath",
- "fill",
- "fs",
- "glob",
- "globbing",
- "letter",
- "match",
- "matches",
- "matching",
- "number",
- "numerical",
- "path",
- "range",
- "ranges",
- "sh"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "lint": {
- "reflinks": true
- },
- "plugins": [
- "gulp-format-md"
- ]
- }
-}
diff --git a/assets/node_modules/browserslist/CHANGELOG.md b/assets/node_modules/browserslist/CHANGELOG.md
deleted file mode 100644
index 3e7cd24..0000000
--- a/assets/node_modules/browserslist/CHANGELOG.md
+++ /dev/null
@@ -1,437 +0,0 @@
-# Change Log
-This project adheres to [Semantic Versioning](http://semver.org/).
-
-## 4.8.6
-* Fix `Unknown version 10 of op_mob` error in `mobileToDesktop` option.
-
-## 4.8.5
-* Fix `last N browsers` again after new `caniuse-db` API changes.
-
-## 4.8.4
-* Fix released versions detection for queries like `last N browsers`.
-* Add IE 11 Mobile to `dead` browsers.
-
-## 4.8.3
-* Fix warning message (by Anton Ivanov).
-
-## 4.8.2
-* Fix `Cannot convert undefined or null to object` (by Antoine Clausse).
-* Fix `mobileToDesktop` in `defaults` (by Huáng Jùnliàng).
-
-## 4.8.1
-* Fix Chrome and `mobileToDesktop` (by Huáng Jùnliàng).
-
-## 4.8
-* Add `> 5% in browserslist-config-my stats` query (by Andrew Leedham).
-* Improve docs (by Danny van Kooten).
-
-## 4.7.3
-* Add funding link for `npm fund`.
-
-## 4.7.2
-* Add cache for query parsing.
-* Improve config caching (by Kārlis Gaņģis).
-* Update Firefox ESR.
-
-## 4.7.1
-* Improve caching.
-
-## 4.7
-* Add PhantomJS queries.
-* Improve docs (by Dorian Koehring).
-
-## 4.6.6
-* Remove Safari from `dead` query.
-
-## 4.6.5
-* Add Samsung 4 browser to `dead` query.
-* Remove dirty fix for `android all` error.
-
-## 4.6.4
-* Add Firefox 68 to `Firefox ESR` query.
-
-## 4.6.3
-* Dirty fix for `android all` error.
-
-## 4.6.2
-* Fix `last x version` and similar queries for Android (by Tony Ross).
-
-## 4.6.1
-* Fix patch version support for Electron (by Kilian Valkhof).
-
-## 4.6
-* Add `mobileToDesktop` option (by Nicolò Ribaudo).
-
-## 4.5.6
-* Make `Node > 5` and `node > 5` queries case insensitive.
-
-## 4.5.5
-* Fix CLI help (by Marcel Gerber).
-* Add KaiOS browser to docs.
-
-## 4.5.4
-* Update docs (by Andrew Leedham and Dan Onoshko).
-
-## 4.5.3
-* Fix splitting string to queries.
-
-## 4.5.2
-* Show default browsers in CLI on project without config.
-
-## 4.5.1
-* Improve text for the warning about outdated `caniuse-lite`.
-
-## 4.5
-* Add `>=`, `>`, and `<=` support for Node.js version (by Mathspy Terabithian).
-
-## 4.4.2
-* Allow to have string in `package.json` (by @dmarkhas).
-
-## 4.4.1
-* Allow to use `.` in scope name of shareable config (by Gustav Nikolaj).
-
-## 4.4
-* Added `and` and `or` keywords to combine queries (by Jon Ege Ronnenberg).
-
-## 4.3.7
-* Fix fraction years support in `last 1.5 years` (by Clément P).
-* Fix version-less browser support.
-
-## 4.3.6
-* Fix version-less browser support in custom statistics (by Alex Walter).
-
-## 4.3.5
-* Fix `not` query for wrong Can I Use data.
-
-## 4.3.4
-* Allow to update `node-releases` without new Browserslist releases.
-
-## 4.3.3
-* Fix Node.js 11 support.
-
-## 4.3.2
-* Fix `Unknown version 11 of Node.js` error (by Dan Onoshko).
-
-## 4.3.1
-* Fix conflict between `caniuse-lite` and custom browsers statistics.
-
-## 4.3
-* Allow to use `extends browserslist-config-a/file` (by @Schweinepriester).
-
-## 4.2.1
-* Use new `node-releases` support (by Sergey Rubanov).
-
-## 4.2
-* Add `--json` argument for CLI.
-* Allow to pass multiple areas in CLI by `--coverage=US,alt-AS,global`.
-
-## 4.1.2
-* Better `unknow query` error message.
-* Use latest `node-releases`.
-
-## 4.1.1
-* Update Firefox ESR versions.
-
-## 4.1
-* Add `current node` query.
-* Add contributors widget to docs (by Sergey Surkov).
-
-## 4.0.2
-* Fix new `node-releases` support (by Sergey Rubanov).
-* Fix error text (by Josh Smith).
-
-## 4.0.1
-* Reduce npm package size.
-* Fix docs.
-
-## 4.0.0 “Erinaceus amurensis”
-* Add `node X` and `maintained node versions` queries (by Pavel Vostrikov).
-* Remove Node.js 4 support.
-* Show warning if `caniuse-lite` is old (by Anton Tuzhik).
-* Add comma support in config file.
-
-## 3.2.8
-* Add IE 9-5.5 to dead browsers.
-* Remove development configs from npm package.
-
-## 3.2.7
-* Add Firefox 60 as Firefox ESR.
-
-## 3.2.6
-* Add Opera Mini 12 to dead browsers.
-* Update docs (by Jamie Kyle).
-
-## 3.2.5
-* Fix excluding Opera Mini and other browsers with `all` version.
-
-## 3.2.4
-* Resolve shareable config from current working directory.
-
-## 3.2.3
-* Fix `package.json` config validation for single string case.
-* Fix CLI error reporting.
-
-## 3.2.2
-* Add `package.json` config validation.
-* Move project to `browserlist` GitHub organization.
-
-## 3.2.1
-* Fix error text (by Steve Schrab).
-
-## 3.2
-* Add `cover 99%` query (by Vasily Fedoseyev).
-* Add `cover 99% in US` query (by Vasily Fedoseyev).
-* Add `cover 99% in my stats` query (by Vasily Fedoseyev).
-* Add `"my stats"` support to `browserlist.coverage()` (by Vasily Fedoseyev).
-
-## 3.1.2
-* Add more clear error on missed browser version.
-
-## 3.1.1
-* Fix JSDoc (by Sylvain Pollet-Villard).
-
-## 3.1
-* Add `ignoreUnknownVersions` option.
-* Fix docs (by Pascal Duez).
-
-## 3.0 “Atelerix sclateri”
-* Remove country statistics from client-side build of Browserslist.
-* Change `> 1%` to `> 0.5%` in default query.
-* Add `not dead` to default query.
-* Change default environment to `production` (by Marco Fugaro).
-* Add `dead` query support with IE 10 and BlackBerry browser.
-* Add multiple environments in one section support (by Evilebot Tnawi).
-* Add custom statistics support to `browserlist.coverage()`.
-* Fix `path` option check.
-
-## 2.11.3
-* Fix for `path: undefined` option.
-
-## 2.11.2
-* Remove Node.js specific code from webpack build.
-
-## 2.11.1
-* Fix using Browserslist in browser with `path` but without `fs`.
-
-## 2.11
-* Add `last 2 years` query support (by James Harris).
-
-## 2.10.2
-* Fix Browserify support.
-
-## 2.10.1
-* Fix using Browserslist without `process` (by Andrew Patton).
-
-## 2.10
-* Add `< 1%` and `<= 1%` queries support (by August Kaiser).
-
-## 2.9.1
-* Fix unknown query on trailing spaces in query.
-
-## 2.9
-* Add `last Electron versions` and `last Electron major versions` queries
- (by Louis Mouhat).
-
-## 2.8
-* Add `since 2016-03` and `since 2016-03-20` queries support (by Andrew Blick).
-
-## 2.7
-* Add `since 2016` queries support (by Igor Deryabin).
-
-## 2.6.1
-* Fix `Path must be a string` error.
-
-## 2.6
-* By default load config from current directory in CLI tool.
-
-## 2.5.1
-* Allow `@scope/browserlist-config` config name (by Jamie Connolly).
-
-## 2.5
-* Add `extends` query (by YellowKirby).
-
-## 2.4.1
-* Throw error if `package.json` contain `browserlist` instead of `browserslist`.
-
-## 2.4
-* Add `last n major versions` query (by John Sanders).
-
-## 2.3.3
-* Fix browsers support.
-
-## 2.3.2
-* Fix `> 0` query for browsers with one version (by Nikolay Solovyov).
-
-## 2.3.1
-* Reduce library size.
-
-## 2.3
-* Add `unreleased versions` and `unreleased Chrome versions` queries.
-
-## 2.2.2
-* Fix `Path must be a string` error (by Pieter Beulque).
-
-## 2.2.1
-* Fix security issue with regions dynamic `require`.
-
-## 2.2
-* Add region usage statistics support (by Clément P).
-
-## 2.1.5
-* Remove Firefox 45 from Firefox ESR.
-
-## 2.1.4
-* Use both ESR versions when they actual.
-
-## 2.1.3
-* Add warning on first exclude query.
-
-## 2.1.2
-* Fix non-Node.js environments support.
-
-## 2.1.1
-* Fix CLI arguments parsing.
-
-## 2.1
-* Add `>= 5%`, `>= 5% in US` and `>= 5% in my stats` queries.
-
-## 2.0 “Atelerix frontalis”
-* `last n versions` returns versions for all browsers, not only main browsers.
-* Cache file system operations (by Aarni Koskela).
-* Use `caniuse-lite` 1 MB instead of `caniuse-db` 7 MB (by Ben Briggs).
-* Add `.browserslistrc` config support.
-* Add QQ Browser for Android support.
-* Add tests for CLI (by Zhulduz Zhankenova).
-
-## 1.7.7
-* Update Firefox ESR.
-
-## 1.7.6
-* Fix Android Chrome selection.
-
-## 1.7.5
-* Fix combining `not` query with country based statistics.
-* Fix `--env` argument in CLI (by Tuure Savuoja).
-
-## 1.7.4
-* Speed up browser sorting (by Aarni Koskela).
-
-## 1.7.3
-* Fix config finding when directory was passed to `path` (by Aarni Koskela).
-
-## 1.7.2
-* Fix config finding algorithm (by Aarni Koskela).
-
-## 1.7.1
-* Fix unreleased browsers version detection.
-
-## 1.7
-* Add `--config` and `--env` arguments to CLI (by Jarek Rencz).
-
-## 1.6
-* Convert Electron version to Chrome (by Kilian Valkhof).
-* Fix `0` version mistake in Can I Use data.
-
-## 1.5.2
-* Fix browser versions ordering (by Marco Massarotto).
-
-## 1.5.1
-* Fix error on `package.json` and `browserslist` in same directory.
-
-## 1.5
-* Add `package.json` support (by Stepan Kuzmin).
-* Add environments support (by Maksim Semenov and openlibser).
-* Add `browserslist-stats.json` file support (by Oleh Aloshkin).
-* Add `config` option to CLI (by Evilebot Tnawi).
-* Add JSDoc.
-* Fix tests on Windows (by Anna Stoliar).
-* Don’t set custom usage statistics globally.
-
-## 1.4
-* Add `defaults` keyword.
-
-## 1.3.6
-* Add `UCAndroid` alias to `and_uc` (by Evilebot Tnawi).
-
-## 1.3.5
-* Fix Opera Mini support. Use `op_mini all`.
-
-## 1.3.4
-* Add space-less `>1%` and `>.5%` syntax support (by Andreas Lind).
-
-## 1.3.3
-* Clean `0` versions in some country-based requests.
-
-## 1.3.2
-* Update Firefox ESR.
-
-## 1.3.1
-* Add Safari TP support.
-
-## 1.3
-* Add coverage for specific country (by Joshua Wise).
-
-## 1.2
-* Add `browserslist.coverage()` method.
-* Add `--coverage` and `-c` argument to CLI.
-* Add `-v` argument support to CLI.
-* Better error handling in CLI.
-
-## 1.1.3
-* Fix jspm support (by Sean Anderson).
-
-## 1.1.2
-* Fix jspm support (by Sean Anderson).
-
-## 1.1.1
-* Fix space-less `>10%` and `>10% in my stats` queries.
-* Normalize error messages.
-* Remove development files from npm package.
-
-## 1.1
-* Added query against custom browser usage data (by Daniel Rey).
-
-## 1.0.1
-* Update Firefox ESR (by Rouven Weßling).
-
-## 1.0 “Atelerix algirus”
-* Remove Opera 12.1 from default query.
-* Add `not` keyword and exclude browsers by query.
-* Add Microsoft Edge support (by Andrey Polischuk).
-* Add CLI for debug and non-JS usage (by Luke Horvat).
-* Use own class in Browserslist errors.
-
-## 0.5
-* Add version ranges `IE 6-9` (by Ben Briggs).
-
-## 0.4
-* Add `config` option and `BROWSERSLIST_CONFIG` environment variable support.
-* Add symlink config support.
-
-## 0.3.3
-* Fix DynJS compatibility (by Nick Howes).
-
-## 0.3.2
-* Fix joined versions on versions query (by Vincent De Oliveira).
-
-## 0.3.1
-* Fix global variable leak (by Peter Müller).
-
-## 0.3
-* Takes queries from `BROWSERSLIST` environment variable.
-
-## 0.2
-* Return Can I Use joined versions as `ios_saf 7.0-7.1`.
-
-## 0.1.3
-* Better work with Can I Use joined versions like `ios_saf 7.0-7.1`.
-* Browserslist now understands `ios_saf 7.0` or `ios_saf 7`.
-
-## 0.1.2
-* Do not create global `browserslist` var (by Maxime Thirouin).
-
-## 0.1.1
-* Sort browsers by name and version.
-
-## 0.1 “Atelerix albiventris”
-* Initial release.
diff --git a/assets/node_modules/browserslist/LICENSE b/assets/node_modules/browserslist/LICENSE
deleted file mode 100644
index 1ae47a2..0000000
--- a/assets/node_modules/browserslist/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright 2014 Andrey Sitnik <andrey@sitnik.ru>
-
-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/assets/node_modules/browserslist/README.md b/assets/node_modules/browserslist/README.md
deleted file mode 100644
index e3c64c8..0000000
--- a/assets/node_modules/browserslist/README.md
+++ /dev/null
@@ -1,598 +0,0 @@
-# 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`:
-
-```js
- "browserslist": [
- "defaults",
- "not IE 11",
- "not IE_Mob 11",
- "maintained node versions",
- ]
-```
-
-Or in `.browserslistrc` config:
-
-```yaml
-# Browsers that we support
-
-defaults
-not IE 11
-not IE_Mob 11
-maintained node versions
-```
-
-Developers set their version lists using queries like `last 2 version`
-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.
-
-[Browserslist Example] shows how every tool uses Browserslist.
-
-[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
-
-## Table of Contents
-
-1. [Tools](#tools)
-2. [Best Practices](#best-practices)
-3. [Queries](#queries)
-4. [Config File](#config-file)
-5. [Shareable Configs](#shareable-configs)
-6. [Configuring for Different Environments](#configuring-for-different-environments)
-7. [Custom Usage Data](#custom-usage-data)
-8. [JS API](#js-api)
-9. [Environment Variables](#environment-variables)
-10. [Cache](#cache)
-
-## Tools
-
-* [`browserl.ist`](https://browserl.ist/) is an online tool to check
- what browsers will be selected by some query.
-* [`browserslist-ga`] and [`browserslist-ga-export`] download your website
- browsers statistics to use it in `> 0.5% in my stats` query.
-* [`browserslist-useragent-regexp`] compiles Browserslist query to a RegExp
- to test browser useragent.
-* [`browserslist-useragent-ruby`] is a Ruby library to checks browser
- by user agent string to match Browserslist.
-* [`browserslist-browserstack`] runs BrowserStack tests for all browsers
- in Browserslist config.
-* [`caniuse-api`] returns browsers which support some specific feature.
-* Run `npx browserslist` in your project directory to see project’s
- target browsers. This CLI tool is built-in and available in any project
- with Autoprefixer.
-
-[`browserslist-useragent-regexp`]: https://github.com/browserslist/browserslist-useragent-regexp
-[`browserslist-useragent-ruby`]: https://github.com/browserslist/browserslist-useragent-ruby
-[`browserslist-browserstack`]: https://github.com/xeroxinteractive/browserslist-browserstack
-[`browserslist-ga-export`]: https://github.com/browserslist/browserslist-ga-export
-[`browserslist-useragent`]: https://github.com/pastelsky/browserslist-useragent
-[`browserslist-ga`]: https://github.com/browserslist/browserslist-ga
-[`caniuse-api`]: https://github.com/Nyalab/caniuse-api
-
-
-## Best Practices
-
-* There is a `defaults` query, which gives a reasonable configuration
- for most users:
-
- ```json
- "browserslist": [
- "defaults"
- ]
- ```
-
-* If you want to change the default set of browsers, we recommend combining
- `last 2 versions`, `not dead` with a usage number like `> 0.2%`. This is
- because `last n versions` on its own does not add popular old versions, while
- only using a percentage above `0.2%` will in the long run make popular
- browsers even more popular. We might run into a monopoly and stagnation
- situation, as we had with Internet Explorer 6. Please use this setting
- with caution.
-* Select browsers directly (`last 2 Chrome versions`) only if you are making
- a web app for a kiosk with one browser. There are a lot of browsers
- on the market. If you are making general web app you should respect
- browsers diversity.
-* Don’t remove browsers just because you don’t know them. Opera Mini has
- 100 million users in Africa and it is more popular in the global market
- than Microsoft Edge. Chinese QQ Browsers has more market share than Firefox
- and desktop Safari combined.
-
-
-## Queries
-
-Browserslist will use browsers and Node.js versions query
-from one of these sources:
-
-1. `browserslist` key in `package.json` file in current or parent directories.
- **We recommend this way.**
-2. `.browserslistrc` config file in current or parent directories.
-3. `browserslist` config file in current or parent directories.
-4. `BROWSERSLIST` environment variable.
-5. If the above methods did not produce a valid result
- Browserslist will use defaults:
- `> 0.5%, last 2 versions, Firefox ESR, not dead`.
-
-
-### Query Composition
-
-An `or` combiner can use the keyword `or` as well as `,`.
-`last 1 version or > 1%` is equal to `last 1 version, > 1%`.
-
-`and` query combinations are also supported to perform an
-intersection of the previous query: `last 1 version and > 1%`.
-
-There is 3 different ways to combine queries as depicted below. First you start
-with a single query and then we combine the queries to get our final list.
-
-Obviously you can *not* start with a `not` combiner, since there is no left-hand
-side query to combine it with.
-
-| Query combiner type | Illustration | Example |
-| ------------------- | :----------: | ------- |
-|`or`/`,` combiner <br> (union) | ![Union of queries](img/union.svg) | `> .5% or last 2 versions` <br> `> .5%, last 2 versions` |
-| `and` combiner <br> (intersection) | ![intersection of queries](img/intersection.svg) | `> .5% and last 2 versions` |
-| `not` combiner <br> (relative complement) | ![Relative complement of queries](img/complement.svg) | `> .5% and not last 2 versions` <br> `> .5% or not last 2 versions` <br> `> .5%, not last 2 versions` |
-
-_A quick way to test your query is to do `npx browserslist '> 0.5%, not IE 11'`
-in your terminal._
-
-
-### Full List
-
-You can specify the browser and Node.js versions by queries (case insensitive):
-
-* `defaults`: Browserslist’s default browsers
- (`> 0.5%, last 2 versions, Firefox ESR, not dead`).
-* `> 5%`: browsers versions selected by global usage statistics.
- `>=`, `<` and `<=` work too.
-* `> 5% in US`: uses USA usage statistics. It accepts [two-letter country code].
-* `> 5% in alt-AS`: uses Asia region usage statistics. List of all region codes
- can be found at [`caniuse-lite/data/regions`].
-* `> 5% in my stats`: uses [custom usage data].
-* `> 5% in browserslist-config-mycompany stats`: uses [custom usage data]
- from `browserslist-config-mycompany/browserslist-stats.json`.
-* `cover 99.5%`: most popular browsers that provide coverage.
-* `cover 99.5% in US`: same as above, with [two-letter country code].
-* `cover 99.5% in my stats`: uses [custom usage data].
-* `maintained node versions`: all Node.js versions, which are [still maintained]
- by Node.js Foundation.
-* `node 10` and `node 10.4`: selects latest Node.js `10.x.x`
- or `10.4.x` release.
-* `current node`: Node.js version used by Browserslist right now.
-* `extends browserslist-config-mycompany`: take queries from
- `browserslist-config-mycompany` npm package.
-* `ie 6-8`: selects an inclusive range of versions.
-* `Firefox > 20`: versions of Firefox newer than 20.
- `>=`, `<` and `<=` work too. It also works with Node.js.
-* `iOS 7`: the iOS browser version 7 directly.
-* `Firefox ESR`: the latest [Firefox ESR] version.
-* `PhantomJS 2.1` and `PhantomJS 1.9`: selects Safari versions similar
- to PhantomJS runtime.
-* `unreleased versions` or `unreleased Chrome versions`:
- alpha and beta versions.
-* `last 2 major versions` or `last 2 iOS major versions`:
- all minor/patch releases of last 2 major versions.
-* `since 2015` or `last 2 years`: all versions released since year 2015
- (also `since 2015-03` and `since 2015-03-10`).
-* `dead`: browsers without official support or updates for 24 months.
- Right now it is `IE 10`, `IE_Mob 10`, `BlackBerry 10`, `BlackBerry 7`,
- `Samsung 4` and `OperaMobile 12.1`.
-* `last 2 versions`: the last 2 versions for *each* browser.
-* `last 2 Chrome versions`: the last 2 versions of Chrome browser.
-* `not ie <= 8`: exclude browsers selected by previous queries.
-
-You can add `not ` to any query.
-
-[`caniuse-lite/data/regions`]: https://github.com/ben-eb/caniuse-lite/tree/master/data/regions
-[two-letter country code]: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements
-[custom usage data]: #custom-usage-data
-[still maintained]: https://github.com/nodejs/Release
-[Can I Use]: https://caniuse.com/
-
-
-### Debug
-
-Run `npx browserslist` in project directory to see what browsers was selected
-by your queries.
-
-```sh
-$ npx browserslist
-and_chr 61
-and_ff 56
-and_qq 1.2
-and_uc 11.4
-android 56
-baidu 7.12
-bb 10
-chrome 62
-edge 16
-firefox 56
-ios_saf 11
-opera 48
-safari 11
-samsung 5
-```
-
-
-### Browsers
-
-Names are case insensitive:
-
-* `Android` for Android WebView.
-* `Baidu` for Baidu Browser.
-* `BlackBerry` or `bb` for Blackberry browser.
-* `Chrome` for Google Chrome.
-* `ChromeAndroid` or `and_chr` for Chrome for Android
-* `Edge` for Microsoft Edge.
-* `Electron` for Electron framework. It will be converted to Chrome version.
-* `Explorer` or `ie` for Internet Explorer.
-* `ExplorerMobile` or `ie_mob` for Internet Explorer Mobile.
-* `Firefox` or `ff` for Mozilla Firefox.
-* `FirefoxAndroid` or `and_ff` for Firefox for Android.
-* `iOS` or `ios_saf` for iOS Safari.
-* `Node` for Node.js.
-* `Opera` for Opera.
-* `OperaMini` or `op_mini` for Opera Mini.
-* `OperaMobile` or `op_mob` for Opera Mobile.
-* `QQAndroid` or `and_qq` for QQ Browser for Android.
-* `Safari` for desktop Safari.
-* `Samsung` for Samsung Internet.
-* `UCAndroid` or `and_uc` for UC Browser for Android.
-* `kaios` for KaiOS Browser.
-
-
-## Config File
-
-### `package.json`
-
-If you want to reduce config files in project root, you can specify
-browsers in `package.json` with `browserslist` key:
-
-```json
-{
- "private": true,
- "dependencies": {
- "autoprefixer": "^6.5.4"
- },
- "browserslist": [
- "last 1 version",
- "> 1%",
- "IE 10"
- ]
-}
-```
-
-
-### `.browserslistrc`
-
-Separated Browserslist config should be named `.browserslistrc`
-and have browsers queries split by a new line. Comments starts with `#` symbol:
-
-```yaml
-# Browsers that we support
-
-last 1 version
-> 1%
-IE 10 # sorry
-```
-
-Browserslist will check config in every directory in `path`.
-So, if tool process `app/styles/main.css`, you can put config to root,
-`app/` or `app/styles`.
-
-You can specify direct path in `BROWSERSLIST_CONFIG` environment variables.
-
-
-## Shareable Configs
-
-You can use the following query to reference an exported Browserslist config
-from another package:
-
-```json
- "browserslist": [
- "extends browserslist-config-mycompany"
- ]
-```
-
-For security reasons, external configuration only supports packages that have
-the `browserslist-config-` prefix. npm scoped packages are also supported, by
-naming or prefixing the module with `@scope/browserslist-config`, such as
-`@scope/browserslist-config` or `@scope/browserslist-config-mycompany`.
-
-If you don’t accept Browserslist queries from users, you can disable the
-validation by using the `dangerousExtend` option:
-
-```js
-browserslist(queries, { path, dangerousExtend: true })
-```
-
-Because this uses `npm`'s resolution, you can also reference specific files
-in a package:
-
-```json
- "browserslist": [
- "extends browserslist-config-mycompany/desktop",
- "extends browserslist-config-mycompany/mobile"
- ]
-```
-
-When writing a shared Browserslist package, just export an array.
-`browserslist-config-mycompany/index.js`:
-
-```js
-module.exports = [
- 'last 1 version',
- '> 1%',
- 'ie 10'
-]
-```
-
-You can also include a `browserslist-stats.json` file as part of your shareable
-config at the root and query it using `> 5% in browserslist-config-mycompany stats`.
-It uses the same format as `extends` and the `dangerousExtend` property as above.
-
-
-## Configuring for Different Environments
-
-You can also specify different browser queries for various environments.
-Browserslist will choose query according to `BROWSERSLIST_ENV` or `NODE_ENV`
-variables. If none of them is declared, Browserslist will firstly look
-for `production` queries and then use defaults.
-
-In `package.json`:
-
-```js
- "browserslist": {
- "production": [
- "> 1%",
- "ie 10"
- ],
- "modern": [
- "last 1 chrome version",
- "last 1 firefox version"
- ],
- "ssr": [
- "node 12"
- ]
- }
-```
-
-In `.browserslistrc` config:
-
-```ini
-[production]
-> 1%
-ie 10
-
-[modern]
-last 1 chrome version
-last 1 firefox version
-
-[ssr]
-node 12
-```
-
-
-## Custom Usage Data
-
-If you have a website, you can query against the usage statistics of your site.
-[`browserslist-ga`] will ask access to Google Analytics and then generate
-`browserslist-stats.json`:
-
-```
-npx browserslist-ga
-```
-
-Or you can use [`browserslist-ga-export`] to convert Google Analytics data without giving a password for Google account.
-
-You can generate usage statistics file by any other method. File format should
-be like:
-
-```js
-{
- "ie": {
- "6": 0.01,
- "7": 0.4,
- "8": 1.5
- },
- "chrome": {
- …
- },
- …
-}
-```
-
-Note that you can query against your custom usage data while also querying
-against global or regional data. For example, the query
-`> 1% in my stats, > 5% in US, 10%` is permitted.
-
-[`browserslist-ga-export`]: https://github.com/browserslist/browserslist-ga-export
-[`browserslist-ga`]: https://github.com/browserslist/browserslist-ga
-[Can I Use]: https://caniuse.com/
-
-
-## JS API
-
-```js
-const browserslist = require('browserslist')
-
-// Your CSS/JS build tool code
-function process (source, opts) {
- const browsers = browserslist(opts.overrideBrowserslist, {
- stats: opts.stats,
- path: opts.file,
- env: opts.env
- })
- // Your code to add features for selected browsers
-}
-```
-
-Queries can be a string `"> 1%, IE 10"`
-or an array `['> 1%', 'IE 10']`.
-
-If a query is missing, Browserslist will look for a config file.
-You can provide a `path` option (that can be a file) to find the config file
-relatively to it.
-
-Options:
-
-* `path`: file or a directory path to look for config file. Default is `.`.
-* `env`: what environment section use from config. Default is `production`.
-* `stats`: custom usage statistics data.
-* `config`: path to config if you want to set it manually.
-* `ignoreUnknownVersions`: do not throw on direct query (like `ie 12`).
- Default is `false.`
-* `dangerousExtend`: Disable security checks for `extend` query.
- Default is `false.`
-* `mobileToDesktop`: Use desktop browsers if Can I Use doesn’t have data
- about this mobile version. For instance, Browserslist will return
- `chrome 20` on `and_chr 20` query (Can I Use has only data only about
- latest versions of mobile browsers). Default is `false`.
-
-For non-JS environment and debug purpose you can use CLI tool:
-
-```sh
-browserslist "> 1%, IE 10"
-```
-
-You can get total users coverage for selected browsers by JS API:
-
-```js
-browserslist.coverage(browserslist('> 1%'))
-//=> 81.4
-```
-
-```js
-browserslist.coverage(browserslist('> 1% in US'), 'US')
-//=> 83.1
-```
-
-```js
-browserslist.coverage(browserslist('> 1% in my stats'), 'my stats')
-//=> 83.1
-```
-
-```js
-browserslist.coverage(browserslist('> 1% in my stats', { stats }), stats)
-//=> 82.2
-```
-
-Or by CLI:
-
-```sh
-$ browserslist --coverage "> 1%"
-These browsers account for 81.4% of all users globally
-```
-
-```sh
-$ browserslist --coverage=US "> 1% in US"
-These browsers account for 83.1% of all users in the US
-```
-
-```sh
-$ browserslist --coverage "> 1% in my stats"
-These browsers account for 83.1% of all users in custom statistics
-```
-
-```sh
-$ browserslist --coverage "> 1% in my stats" --stats=./stats.json
-These browsers account for 83.1% of all users in custom statistics
-```
-
-
-## Environment Variables
-
-If a tool uses Browserslist inside, you can change the Browserslist settings
-with [environment variables]:
-
-* `BROWSERSLIST` with browsers queries.
-
- ```sh
- BROWSERSLIST="> 5%" gulp css
- ```
-
-* `BROWSERSLIST_CONFIG` with path to config file.
-
- ```sh
- BROWSERSLIST_CONFIG=./config/browserslist gulp css
- ```
-
-* `BROWSERSLIST_ENV` with environments string.
-
- ```sh
- BROWSERSLIST_ENV="development" gulp css
- ```
-
-* `BROWSERSLIST_STATS` with path to the custom usage data
- for `> 1% in my stats` query.
-
- ```sh
- BROWSERSLIST_STATS=./config/usage_data.json gulp css
- ```
-
-* `BROWSERSLIST_DISABLE_CACHE` if you want to disable config reading cache.
-
- ```sh
- BROWSERSLIST_DISABLE_CACHE=1 gulp css
- ```
-
-[environment variables]: https://en.wikipedia.org/wiki/Environment_variable
-
-
-## Cache
-
-Browserslist caches the configuration it reads from `package.json` and
-`browserslist` files, as well as knowledge about the existence of files,
-for the duration of the hosting process.
-
-To clear these caches, use:
-
-```js
-browserslist.clearCaches()
-```
-
-To disable the caching altogether, set the `BROWSERSLIST_DISABLE_CACHE`
-environment variable.
-
-
-## Security Contact
-
-To report a security vulnerability, please use the [Tidelift security contact].
-Tidelift will coordinate the fix and disclosure.
-
-[Tidelift security contact]: https://tidelift.com/security
diff --git a/assets/node_modules/browserslist/browser.js b/assets/node_modules/browserslist/browser.js
deleted file mode 100644
index 77a217a..0000000
--- a/assets/node_modules/browserslist/browser.js
+++ /dev/null
@@ -1,41 +0,0 @@
-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 is not supported ' +
- '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/assets/node_modules/browserslist/cli.js b/assets/node_modules/browserslist/cli.js
deleted file mode 100755
index d58f9c8..0000000
--- a/assets/node_modules/browserslist/cli.js
+++ /dev/null
@@ -1,135 +0,0 @@
-#!/usr/bin/env node
-
-var fs = require('fs')
-
-var browserslist = require('./')
-var pkg = require('./package.json')
-var args = process.argv.slice(2)
-
-var USAGE = 'Usage:\n' +
- ' ' + pkg.name + '\n' +
- ' ' + pkg.name + ' "QUERIES"\n' +
- ' ' + pkg.name + ' --json "QUERIES"\n' +
- ' ' + pkg.name + ' --config="path/to/browserlist/file"\n' +
- ' ' + pkg.name + ' --coverage "QUERIES"\n' +
- ' ' + pkg.name + ' --coverage=US "QUERIES"\n' +
- ' ' + pkg.name + ' --coverage=US,RU,global "QUERIES"\n' +
- ' ' + pkg.name + ' --env="environment name defined in config"\n' +
- ' ' + pkg.name + ' --stats="path/to/browserlist/stats/file"'
-
-function isArg (arg) {
- return args.some(function (str) {
- return str === arg || str.indexOf(arg + '=') === 0
- })
-}
-
-function error (msg) {
- process.stderr.write(pkg.name + ': ' + 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(pkg.name + ' ' + pkg.version + '\n')
-} 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 {
- 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/assets/node_modules/browserslist/error.js b/assets/node_modules/browserslist/error.js
deleted file mode 100644
index b3bc0fe..0000000
--- a/assets/node_modules/browserslist/error.js
+++ /dev/null
@@ -1,12 +0,0 @@
-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/assets/node_modules/browserslist/index.js b/assets/node_modules/browserslist/index.js
deleted file mode 100644
index f2403ad..0000000
--- a/assets/node_modules/browserslist/index.js
+++ /dev/null
@@ -1,1092 +0,0 @@
-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 minimum = getMajor(released[released.length - 1]) - parseInt(number) + 1
- 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'))
- )
-}
-
-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) {
- return data.releaseDate[v] >= 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
- }
-
- 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.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)
- 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)
-}
-
-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).reverse(), 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).reverse().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+)(?:-(\d+))?(?:-(\d+))?$/i,
- select: function (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)
- }
- },
- {
- regexp: /^(>=?|<=?)\s*(\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+)%\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+)%\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+)%\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)
- 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+)%(\s+in\s+(my\s+stats|(alt-)?\w\w))?$/,
- select: function (context, coverage, statMode) {
- coverage = parseFloat(coverage)
- var usage = browserslist.usage.global
- if (statMode) {
- if (statMode.match(/^\s+in\s+my\s+stats$/)) {
- if (!context.customUsage) {
- throw new BrowserslistError(
- 'Custom usage statistics was not provided'
- )
- }
- usage = context.customUsage
- } else {
- var match = statMode.match(/\s+in\s+((alt-)?\w\w)/)
- var place = match[1]
- if (place.length === 2) {
- place = place.toUpperCase()
- } else {
- place = place.toLowerCase()
- }
- env.loadCountry(browserslist.usage, place)
- 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
- }
- },
- {
- 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: /^(\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 68']
- }
- },
- {
- 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+(\.\d+)?(\.\d+)?)$/i,
- select: function (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]
- }
- },
- {
- 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: /^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
- }
- }
- }
- }
-}())
-
-module.exports = browserslist
diff --git a/assets/node_modules/browserslist/node.js b/assets/node_modules/browserslist/node.js
deleted file mode 100644
index 4c73926..0000000
--- a/assets/node_modules/browserslist/node.js
+++ /dev/null
@@ -1,348 +0,0 @@
-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 (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 = Object.keys(data[i].versions)[0]
- normalized[i] = { }
- normalized[i][normal] = stats[i][versions[0]]
- } else {
- normalized[i] = stats[i]
- }
- }
-
- return normalized
-}
-
-module.exports = {
- loadQueries: function loadQueries (context, name) {
- if (!context.dangerousExtend) checkExtend(name)
- // eslint-disable-next-line security/detect-non-literal-require
- var queries = require(require.resolve(name, { paths: ['.'] }))
- if (!Array.isArray(queries)) {
- throw new BrowserslistError(
- '`' + name + '` config exports not an array of queries'
- )
- }
- return queries
- },
-
- loadStat: function loadStat (context, name, data) {
- if (!context.dangerousExtend) checkExtend(name)
- // eslint-disable-next-line security/detect-non-literal-require
- 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) {
- var code = country.replace(/[^\w-]/g, '')
- if (!usage[code]) {
- // eslint-disable-next-line security/detect-non-literal-require
- var compressed = require('caniuse-lite/data/regions/' + code + '.js')
- var data = region(compressed)
- usage[country] = { }
- for (var i in data) {
- for (var j in data[i]) {
- usage[country][i + ' ' + j] = data[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 = { }
- },
-
- 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) {
- var command = 'npm update'
- eachParent(__filename, function (dir) {
- var pckg = path.join(dir, 'package.json')
- var yarnLock = path.join(dir, 'yarn.lock')
- if (isFile(pckg) && isFile(yarnLock)) {
- command = 'yarn upgrade'
- }
- })
- console.warn(
- 'Browserslist: caniuse-lite is outdated. ' +
- 'Please run the following command: `' + command + '`'
- )
- }
- },
-
- currentNode: function currentNode () {
- return 'node ' + process.versions.node
- }
-}
diff --git a/assets/node_modules/browserslist/package.json b/assets/node_modules/browserslist/package.json
deleted file mode 100644
index d4ad1ab..0000000
--- a/assets/node_modules/browserslist/package.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "name": "browserslist",
- "version": "4.8.6",
- "description": "Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-env-preset",
- "keywords": [
- "caniuse",
- "browsers",
- "target"
- ],
- "funding": {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- "author": "Andrey Sitnik <andrey@sitnik.ru>",
- "license": "MIT",
- "repository": "browserslist/browserslist",
- "dependencies": {
- "caniuse-lite": "^1.0.30001023",
- "electron-to-chromium": "^1.3.341",
- "node-releases": "^1.1.47"
- },
- "bin": "./cli.js",
- "browser": {
- "./node.js": "./browser.js",
- "path": false
- },
- "eslintIgnore": [
- "test/fixtures"
- ],
- "sharec": {
- "config": "@logux/sharec-config",
- "version": "0.5.6"
- }
-}
diff --git a/assets/node_modules/callsites/index.d.ts b/assets/node_modules/callsites/index.d.ts
deleted file mode 100644
index 61f597c..0000000
--- a/assets/node_modules/callsites/index.d.ts
+++ /dev/null
@@ -1,96 +0,0 @@
-declare namespace callsites {
- interface CallSite {
- /**
- Returns the value of `this`.
- */
- getThis(): unknown | undefined;
-
- /**
- Returns the type of `this` as a string. This is the name of the function stored in the constructor field of `this`, if available, otherwise the object's `[[Class]]` internal property.
- */
- getTypeName(): string | null;
-
- /**
- Returns the current function.
- */
- getFunction(): Function | undefined;
-
- /**
- Returns the name of the current function, typically its `name` property. If a name property is not available an attempt will be made to try to infer a name from the function's context.
- */
- getFunctionName(): string | null;
-
- /**
- Returns the name of the property of `this` or one of its prototypes that holds the current function.
- */
- getMethodName(): string | undefined;
-
- /**
- Returns the name of the script if this function was defined in a script.
- */
- getFileName(): string | null;
-
- /**
- Returns the current line number if this function was defined in a script.
- */
- getLineNumber(): number | null;
-
- /**
- Returns the current column number if this function was defined in a script.
- */
- getColumnNumber(): number | null;
-
- /**
- Returns a string representing the location where `eval` was called if this function was created using a call to `eval`.
- */
- getEvalOrigin(): string | undefined;
-
- /**
- Returns `true` if this is a top-level invocation, that is, if it's a global object.
- */
- isToplevel(): boolean;
-
- /**
- Returns `true` if this call takes place in code defined by a call to `eval`.
- */
- isEval(): boolean;
-
- /**
- Returns `true` if this call is in native V8 code.
- */
- isNative(): boolean;
-
- /**
- Returns `true` if this is a constructor call.
- */
- isConstructor(): boolean;
- }
-}
-
-declare const callsites: {
- /**
- Get callsites from the V8 stack trace API.
-
- @returns An array of `CallSite` objects.
-
- @example
- ```
- import callsites = require('callsites');
-
- function unicorn() {
- console.log(callsites()[0].getFileName());
- //=> '/Users/sindresorhus/dev/callsites/test.js'
- }
-
- unicorn();
- ```
- */
- (): callsites.CallSite[];
-
- // TODO: Remove this for the next major release, refactor the whole definition to:
- // declare function callsites(): callsites.CallSite[];
- // export = callsites;
- default: typeof callsites;
-};
-
-export = callsites;
diff --git a/assets/node_modules/callsites/index.js b/assets/node_modules/callsites/index.js
deleted file mode 100644
index 486c241..0000000
--- a/assets/node_modules/callsites/index.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict';
-
-const callsites = () => {
- const _prepareStackTrace = Error.prepareStackTrace;
- Error.prepareStackTrace = (_, stack) => stack;
- const stack = new Error().stack.slice(1);
- Error.prepareStackTrace = _prepareStackTrace;
- return stack;
-};
-
-module.exports = callsites;
-// TODO: Remove this for the next major release
-module.exports.default = callsites;
diff --git a/assets/node_modules/callsites/license b/assets/node_modules/callsites/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/callsites/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/callsites/package.json b/assets/node_modules/callsites/package.json
deleted file mode 100644
index 93463c3..0000000
--- a/assets/node_modules/callsites/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "callsites",
- "version": "3.1.0",
- "description": "Get callsites from the V8 stack trace API",
- "license": "MIT",
- "repository": "sindresorhus/callsites",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "stacktrace",
- "v8",
- "callsite",
- "callsites",
- "stack",
- "trace",
- "function",
- "file",
- "line",
- "debug"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/callsites/readme.md b/assets/node_modules/callsites/readme.md
deleted file mode 100644
index fc84613..0000000
--- a/assets/node_modules/callsites/readme.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# callsites [![Build Status](https://travis-ci.org/sindresorhus/callsites.svg?branch=master)](https://travis-ci.org/sindresorhus/callsites)
-
-> Get callsites from the [V8 stack trace API](https://v8.dev/docs/stack-trace-api)
-
-
-## Install
-
-```
-$ npm install callsites
-```
-
-
-## Usage
-
-```js
-const callsites = require('callsites');
-
-function unicorn() {
- console.log(callsites()[0].getFileName());
- //=> '/Users/sindresorhus/dev/callsites/test.js'
-}
-
-unicorn();
-```
-
-
-## API
-
-Returns an array of callsite objects with the following methods:
-
-- `getThis`: returns the value of `this`.
-- `getTypeName`: returns the type of `this` as a string. This is the name of the function stored in the constructor field of `this`, if available, otherwise the object's `[[Class]]` internal property.
-- `getFunction`: returns the current function.
-- `getFunctionName`: returns the name of the current function, typically its `name` property. If a name property is not available an attempt will be made to try to infer a name from the function's context.
-- `getMethodName`: returns the name of the property of `this` or one of its prototypes that holds the current function.
-- `getFileName`: if this function was defined in a script returns the name of the script.
-- `getLineNumber`: if this function was defined in a script returns the current line number.
-- `getColumnNumber`: if this function was defined in a script returns the current column number
-- `getEvalOrigin`: if this function was created using a call to `eval` returns a string representing the location where `eval` was called.
-- `isToplevel`: is this a top-level invocation, that is, is this the global object?
-- `isEval`: does this call take place in code defined by a call to `eval`?
-- `isNative`: is this call in native V8 code?
-- `isConstructor`: is this a constructor call?
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/camelcase-keys/index.d.ts b/assets/node_modules/camelcase-keys/index.d.ts
deleted file mode 100644
index ee2a247..0000000
--- a/assets/node_modules/camelcase-keys/index.d.ts
+++ /dev/null
@@ -1,102 +0,0 @@
-declare namespace camelcaseKeys {
- interface Options {
- /**
- Recurse nested objects and objects in arrays.
-
- @default false
- */
- readonly deep?: boolean;
-
- /**
- Exclude keys from being camel-cased.
-
- @default []
- */
- readonly exclude?: ReadonlyArray<string | RegExp>;
-
- /**
- Exclude children at the given object paths in dot-notation from being camel-cased. For example, with an object like `{a: {b: '🦄'}}`, the object path to reach the unicorn is `'a.b'`.
-
- @default []
-
- @example
- ```
- camelcaseKeys({
- a_b: 1,
- a_c: {
- c_d: 1,
- c_e: {
- e_f: 1
- }
- }
- }, {
- deep: true,
- stopPaths: [
- 'a_c.c_e'
- ]
- }),
- // {
- // aB: 1,
- // aC: {
- // cD: 1,
- // cE: {
- // e_f: 1
- // }
- // }
- // }
- ```
- */
- readonly stopPaths?: ReadonlyArray<string>;
-
- /**
- Uppercase the first character as in `bye-bye` → `ByeBye`.
-
- @default false
- */
- readonly pascalCase?: boolean;
- }
-}
-
-/**
-Convert object keys to camel case using [`camelcase`](https://github.com/sindresorhus/camelcase).
-
-@param input - Object or array of objects to camel-case.
-
-@example
-```
-import camelcaseKeys = require('camelcase-keys');
-
-// Convert an object
-camelcaseKeys({'foo-bar': true});
-//=> {fooBar: true}
-
-// Convert an array of objects
-camelcaseKeys([{'foo-bar': true}, {'bar-foo': false}]);
-//=> [{fooBar: true}, {barFoo: false}]
-
-camelcaseKeys({'foo-bar': true, nested: {unicorn_rainbow: true}}, {deep: true});
-//=> {fooBar: true, nested: {unicornRainbow: true}}
-
-// Convert object keys to pascal case
-camelcaseKeys({'foo-bar': true, nested: {unicorn_rainbow: true}}, {deep: true, pascalCase: true});
-//=> {FooBar: true, Nested: {UnicornRainbow: true}}
-
-import minimist = require('minimist');
-
-const argv = minimist(process.argv.slice(2));
-//=> {_: [], 'foo-bar': true}
-
-camelcaseKeys(argv);
-//=> {_: [], fooBar: true}
-```
-*/
-declare function camelcaseKeys(
- input: ReadonlyArray<{[key: string]: any}>,
- options?: camelcaseKeys.Options
-): Array<{[key: string]: unknown}>;
-declare function camelcaseKeys(
- input: {[key: string]: any},
- options?: camelcaseKeys.Options
-): {[key: string]: unknown};
-
-export = camelcaseKeys;
diff --git a/assets/node_modules/camelcase-keys/index.js b/assets/node_modules/camelcase-keys/index.js
deleted file mode 100644
index 40a6fb6..0000000
--- a/assets/node_modules/camelcase-keys/index.js
+++ /dev/null
@@ -1,73 +0,0 @@
-'use strict';
-const mapObj = require('map-obj');
-const camelCase = require('camelcase');
-const QuickLru = require('quick-lru');
-
-const has = (array, key) => array.some(x => {
- if (typeof x === 'string') {
- return x === key;
- }
-
- x.lastIndex = 0;
- return x.test(key);
-});
-
-const cache = new QuickLru({maxSize: 100000});
-
-// Reproduces behavior from `map-obj`
-const isObject = value =>
- typeof value === 'object' &&
- value !== null &&
- !(value instanceof RegExp) &&
- !(value instanceof Error) &&
- !(value instanceof Date);
-
-const camelCaseConvert = (input, options) => {
- options = {
- deep: false,
- pascalCase: false,
- ...options
- };
-
- const {exclude, pascalCase, stopPaths, deep} = options;
-
- const stopPathsSet = new Set(stopPaths);
-
- const makeMapper = parentPath => (key, value) => {
- if (deep && isObject(value)) {
- const path = parentPath === undefined ? key : `${parentPath}.${key}`;
-
- if (!stopPathsSet.has(path)) {
- value = mapObj(value, makeMapper(path));
- }
- }
-
- if (!(exclude && has(exclude, key))) {
- const cacheKey = pascalCase ? `${key}_` : key;
-
- if (cache.has(cacheKey)) {
- key = cache.get(cacheKey);
- } else {
- const ret = camelCase(key, {pascalCase});
-
- if (key.length < 100) { // Prevent abuse
- cache.set(cacheKey, ret);
- }
-
- key = ret;
- }
- }
-
- return [key, value];
- };
-
- return mapObj(input, makeMapper(undefined));
-};
-
-module.exports = (input, options) => {
- if (Array.isArray(input)) {
- return Object.keys(input).map(key => camelCaseConvert(input[key], options));
- }
-
- return camelCaseConvert(input, options);
-};
diff --git a/assets/node_modules/camelcase-keys/license b/assets/node_modules/camelcase-keys/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/camelcase-keys/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/camelcase-keys/node_modules/map-obj/index.d.ts b/assets/node_modules/camelcase-keys/node_modules/map-obj/index.d.ts
deleted file mode 100644
index 50b5e17..0000000
--- a/assets/node_modules/camelcase-keys/node_modules/map-obj/index.d.ts
+++ /dev/null
@@ -1,106 +0,0 @@
-declare namespace mapObject {
- type Mapper<
- SourceObjectType extends {[key: string]: any},
- MappedObjectKeyType extends string,
- MappedObjectValueType
- > = (
- sourceKey: keyof SourceObjectType,
- sourceValue: SourceObjectType[keyof SourceObjectType],
- source: SourceObjectType
- ) => [MappedObjectKeyType, MappedObjectValueType];
-
- interface Options {
- /**
- Recurse nested objects and objects in arrays.
-
- @default false
- */
- deep?: boolean;
-
- /**
- Target object to map properties on to.
-
- @default {}
- */
- target?: {[key: string]: any};
- }
-
- interface DeepOptions extends Options {
- deep: true;
- }
-
- interface TargetOptions<TargetObjectType extends {[key: string]: any}> extends Options {
- target: TargetObjectType;
- }
-}
-
-/**
-Map object keys and values into a new object.
-
-@param source - Source object to copy properties from.
-@param mapper - Mapping function.
-
-@example
-```
-import mapObject = require('map-obj');
-
-const newObject = mapObject({foo: 'bar'}, (key, value) => [value, key]);
-//=> {bar: 'foo'}
-```
-*/
-declare function mapObject<
- SourceObjectType extends object,
- TargetObjectType extends {[key: string]: any},
- MappedObjectKeyType extends string,
- MappedObjectValueType
->(
- source: SourceObjectType,
- mapper: mapObject.Mapper<
- SourceObjectType,
- MappedObjectKeyType,
- MappedObjectValueType
- >,
- options: mapObject.DeepOptions & mapObject.TargetOptions<TargetObjectType>
-): TargetObjectType & {[key: string]: unknown};
-declare function mapObject<
- SourceObjectType extends object,
- MappedObjectKeyType extends string,
- MappedObjectValueType
->(
- source: SourceObjectType,
- mapper: mapObject.Mapper<
- SourceObjectType,
- MappedObjectKeyType,
- MappedObjectValueType
- >,
- options: mapObject.DeepOptions
-): {[key: string]: unknown};
-declare function mapObject<
- SourceObjectType extends {[key: string]: any},
- TargetObjectType extends {[key: string]: any},
- MappedObjectKeyType extends string,
- MappedObjectValueType
->(
- source: SourceObjectType,
- mapper: mapObject.Mapper<
- SourceObjectType,
- MappedObjectKeyType,
- MappedObjectValueType
- >,
- options: mapObject.TargetOptions<TargetObjectType>
-): TargetObjectType & {[K in MappedObjectKeyType]: MappedObjectValueType};
-declare function mapObject<
- SourceObjectType extends {[key: string]: any},
- MappedObjectKeyType extends string,
- MappedObjectValueType
->(
- source: SourceObjectType,
- mapper: mapObject.Mapper<
- SourceObjectType,
- MappedObjectKeyType,
- MappedObjectValueType
- >,
- options?: mapObject.Options
-): {[K in MappedObjectKeyType]: MappedObjectValueType};
-
-export = mapObject;
diff --git a/assets/node_modules/camelcase-keys/node_modules/map-obj/index.js b/assets/node_modules/camelcase-keys/node_modules/map-obj/index.js
deleted file mode 100644
index 4f1e4be..0000000
--- a/assets/node_modules/camelcase-keys/node_modules/map-obj/index.js
+++ /dev/null
@@ -1,54 +0,0 @@
-'use strict';
-
-const isObject = value => typeof value === 'object' && value !== null;
-
-// Customized for this use-case
-const isObjectCustom = value =>
- isObject(value) &&
- !(value instanceof RegExp) &&
- !(value instanceof Error) &&
- !(value instanceof Date);
-
-const mapObject = (object, mapper, options, isSeen = new WeakMap()) => {
- options = {
- deep: false,
- target: {},
- ...options
- };
-
- if (isSeen.has(object)) {
- return isSeen.get(object);
- }
-
- isSeen.set(object, options.target);
-
- const {target} = options;
- delete options.target;
-
- const mapArray = array => array.map(element => isObjectCustom(element) ? mapObject(element, mapper, options, isSeen) : element);
- if (Array.isArray(object)) {
- return mapArray(object);
- }
-
- for (const [key, value] of Object.entries(object)) {
- let [newKey, newValue] = mapper(key, value, object);
-
- if (options.deep && isObjectCustom(newValue)) {
- newValue = Array.isArray(newValue) ?
- mapArray(newValue) :
- mapObject(newValue, mapper, options, isSeen);
- }
-
- target[newKey] = newValue;
- }
-
- return target;
-};
-
-module.exports = (object, mapper, options) => {
- if (!isObject(object)) {
- throw new TypeError(`Expected an object, got \`${object}\` (${typeof object})`);
- }
-
- return mapObject(object, mapper, options);
-};
diff --git a/assets/node_modules/camelcase-keys/node_modules/map-obj/license b/assets/node_modules/camelcase-keys/node_modules/map-obj/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/camelcase-keys/node_modules/map-obj/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/camelcase-keys/node_modules/map-obj/package.json b/assets/node_modules/camelcase-keys/node_modules/map-obj/package.json
deleted file mode 100644
index 18cf63c..0000000
--- a/assets/node_modules/camelcase-keys/node_modules/map-obj/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "map-obj",
- "version": "4.1.0",
- "description": "Map object keys and values into a new object",
- "license": "MIT",
- "repository": "sindresorhus/map-obj",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "map",
- "object",
- "key",
- "keys",
- "value",
- "values",
- "iterate",
- "iterator",
- "rename",
- "modify",
- "deep",
- "recurse",
- "recursive"
- ],
- "devDependencies": {
- "ava": "^2.0.0",
- "tsd": "^0.7.3",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/camelcase-keys/node_modules/map-obj/readme.md b/assets/node_modules/camelcase-keys/node_modules/map-obj/readme.md
deleted file mode 100644
index cd405f5..0000000
--- a/assets/node_modules/camelcase-keys/node_modules/map-obj/readme.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# map-obj [![Build Status](https://travis-ci.org/sindresorhus/map-obj.svg?branch=master)](https://travis-ci.org/sindresorhus/map-obj)
-
-> Map object keys and values into a new object
-
-
-## Install
-
-```
-$ npm install map-obj
-```
-
-
-## Usage
-
-```js
-const mapObject = require('map-obj');
-
-const newObject = mapObject({foo: 'bar'}, (key, value) => [value, key]);
-//=> {bar: 'foo'}
-```
-
-
-## API
-
-### mapObject(source, mapper, options?)
-
-#### source
-
-Type: `object`
-
-Source object to copy properties from.
-
-#### mapper
-
-Type: `Function`
-
-Mapping function.
-
-- It has signature `mapper(sourceKey, sourceValue, source)`.
-- It must return a two item array: `[targetKey, targetValue]`.
-
-#### options
-
-Type: `object`
-
-##### deep
-
-Type: `boolean`<br>
-Default: `false`
-
-Recurse nested objects and objects in arrays.
-
-##### target
-
-Type: `object`<br>
-Default: `{}`
-
-Target object to map properties on to.
-
-
-## Related
-
-- [filter-obj](https://github.com/sindresorhus/filter-obj) - Filter object keys and values into a new object
-
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-map-obj?utm_source=npm-map-obj&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
diff --git a/assets/node_modules/camelcase-keys/package.json b/assets/node_modules/camelcase-keys/package.json
deleted file mode 100644
index b9c28aa..0000000
--- a/assets/node_modules/camelcase-keys/package.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "camelcase-keys",
- "version": "6.1.2",
- "description": "Convert object keys to camel case",
- "license": "MIT",
- "repository": "sindresorhus/camelcase-keys",
- "funding": "https://github.com/sponsors/sindresorhus",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd",
- "bench": "matcha bench/bench.js"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "map",
- "obj",
- "object",
- "key",
- "keys",
- "value",
- "values",
- "val",
- "iterate",
- "camelcase",
- "camel-case",
- "camel",
- "case",
- "dash",
- "hyphen",
- "dot",
- "underscore",
- "separator",
- "string",
- "text",
- "convert",
- "deep",
- "recurse",
- "recursive"
- ],
- "dependencies": {
- "camelcase": "^5.3.1",
- "map-obj": "^4.0.0",
- "quick-lru": "^4.0.1"
- },
- "devDependencies": {
- "ava": "^2.1.0",
- "matcha": "^0.7.0",
- "tsd": "^0.11.0",
- "xo": "^0.25.3"
- },
- "xo": {
- "overrides": [
- {
- "files": "bench/bench.js",
- "rules": {
- "import/no-unresolved": "off"
- }
- }
- ]
- }
-}
diff --git a/assets/node_modules/camelcase-keys/readme.md b/assets/node_modules/camelcase-keys/readme.md
deleted file mode 100644
index f0ac0f1..0000000
--- a/assets/node_modules/camelcase-keys/readme.md
+++ /dev/null
@@ -1,125 +0,0 @@
-# camelcase-keys [![Build Status](https://travis-ci.org/sindresorhus/camelcase-keys.svg?branch=master)](https://travis-ci.org/sindresorhus/camelcase-keys)
-
-> Convert object keys to camel case using [`camelcase`](https://github.com/sindresorhus/camelcase)
-
-## Install
-
-```
-$ npm install camelcase-keys
-```
-
-## Usage
-
-```js
-const camelcaseKeys = require('camelcase-keys');
-
-// Convert an object
-camelcaseKeys({'foo-bar': true});
-//=> {fooBar: true}
-
-// Convert an array of objects
-camelcaseKeys([{'foo-bar': true}, {'bar-foo': false}]);
-//=> [{fooBar: true}, {barFoo: false}]
-
-camelcaseKeys({'foo-bar': true, nested: {unicorn_rainbow: true}}, {deep: true});
-//=> {fooBar: true, nested: {unicornRainbow: true}}
-
-camelcaseKeys({a_b: 1, a_c: {c_d: 1, c_e: {e_f: 1}}}, {deep: true, stopPaths: ['a_c.c_e']}),
-//=> {aB: 1, aC: {cD: 1, cE: {e_f: 1}}}
-
-// Convert object keys to pascal case
-camelcaseKeys({'foo-bar': true, nested: {unicorn_rainbow: true}}, {deep: true, pascalCase: true});
-//=> {FooBar: true, Nested: {UnicornRainbow: true}}
-```
-
-```js
-const camelcaseKeys = require('camelcase-keys');
-
-const argv = require('minimist')(process.argv.slice(2));
-//=> {_: [], 'foo-bar': true}
-
-camelcaseKeys(argv);
-//=> {_: [], fooBar: true}
-```
-
-## API
-
-### camelcaseKeys(input, options?)
-
-#### input
-
-Type: `object | object[]`
-
-An object or array of objects to camel-case.
-
-#### options
-
-Type: `object`
-
-##### exclude
-
-Type: `Array<string | RegExp>`\
-Default: `[]`
-
-Exclude keys from being camel-cased.
-
-##### stopPaths
-
-Type: `string[]`\
-Default: `[]`
-
-Exclude children at the given object paths in dot-notation from being camel-cased. For example, with an object like `{a: {b: '🦄'}}`, the object path to reach the unicorn is `'a.b'`.
-
-```js
-camelcaseKeys({
- a_b: 1,
- a_c: {
- c_d: 1,
- c_e: {
- e_f: 1
- }
- }
-}, {
- deep: true,
- stopPaths: [
- 'a_c.c_e'
- ]
-}),
-/*
-{
- aB: 1,
- aC: {
- cD: 1,
- cE: {
- e_f: 1
- }
- }
-}
-*/
-```
-
-##### deep
-
-Type: `boolean`\
-Default: `false`
-
-Recurse nested objects and objects in arrays.
-
-##### pascalCase
-
-Type: `boolean`\
-Default: `false`
-
-Uppercase the first character as in `bye-bye` → `ByeBye`.
-
-## camelcase-keys for enterprise
-
-Available as part of the Tidelift Subscription.
-
-The maintainers of camelcase-keys and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-camelcase-keys?utm_source=npm-camelcase-keys&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
-
-## Related
-
-- [snakecase-keys](https://github.com/bendrucker/snakecase-keys)
-- [kebabcase-keys](https://github.com/mattiloh/kebabcase-keys)
-
diff --git a/assets/node_modules/camelcase/index.d.ts b/assets/node_modules/camelcase/index.d.ts
deleted file mode 100644
index 58f2069..0000000
--- a/assets/node_modules/camelcase/index.d.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-declare namespace camelcase {
- interface Options {
- /**
- Uppercase the first character: `foo-bar` → `FooBar`.
-
- @default false
- */
- readonly pascalCase?: boolean;
- }
-}
-
-declare const camelcase: {
- /**
- Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`.
-
- @param input - String to convert to camel case.
-
- @example
- ```
- import camelCase = require('camelcase');
-
- camelCase('foo-bar');
- //=> 'fooBar'
-
- camelCase('foo_bar');
- //=> 'fooBar'
-
- camelCase('Foo-Bar');
- //=> 'fooBar'
-
- camelCase('Foo-Bar', {pascalCase: true});
- //=> 'FooBar'
-
- camelCase('--foo.bar', {pascalCase: false});
- //=> 'fooBar'
-
- camelCase('foo bar');
- //=> 'fooBar'
-
- console.log(process.argv[3]);
- //=> '--foo-bar'
- camelCase(process.argv[3]);
- //=> 'fooBar'
-
- camelCase(['foo', 'bar']);
- //=> 'fooBar'
-
- camelCase(['__foo__', '--bar'], {pascalCase: true});
- //=> 'FooBar'
- ```
- */
- (input: string | ReadonlyArray<string>, options?: camelcase.Options): string;
-
- // TODO: Remove this for the next major release, refactor the whole definition to:
- // declare function camelcase(
- // input: string | ReadonlyArray<string>,
- // options?: camelcase.Options
- // ): string;
- // export = camelcase;
- default: typeof camelcase;
-};
-
-export = camelcase;
diff --git a/assets/node_modules/camelcase/index.js b/assets/node_modules/camelcase/index.js
deleted file mode 100644
index 579f99b..0000000
--- a/assets/node_modules/camelcase/index.js
+++ /dev/null
@@ -1,76 +0,0 @@
-'use strict';
-
-const preserveCamelCase = string => {
- let isLastCharLower = false;
- let isLastCharUpper = false;
- let isLastLastCharUpper = false;
-
- for (let i = 0; i < string.length; i++) {
- const character = string[i];
-
- if (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {
- string = string.slice(0, i) + '-' + string.slice(i);
- isLastCharLower = false;
- isLastLastCharUpper = isLastCharUpper;
- isLastCharUpper = true;
- i++;
- } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {
- string = string.slice(0, i - 1) + '-' + string.slice(i - 1);
- isLastLastCharUpper = isLastCharUpper;
- isLastCharUpper = false;
- isLastCharLower = true;
- } else {
- isLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;
- isLastLastCharUpper = isLastCharUpper;
- isLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;
- }
- }
-
- return string;
-};
-
-const camelCase = (input, options) => {
- if (!(typeof input === 'string' || Array.isArray(input))) {
- throw new TypeError('Expected the input to be `string | string[]`');
- }
-
- options = Object.assign({
- pascalCase: false
- }, options);
-
- const postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;
-
- if (Array.isArray(input)) {
- input = input.map(x => x.trim())
- .filter(x => x.length)
- .join('-');
- } else {
- input = input.trim();
- }
-
- if (input.length === 0) {
- return '';
- }
-
- if (input.length === 1) {
- return options.pascalCase ? input.toUpperCase() : input.toLowerCase();
- }
-
- const hasUpperCase = input !== input.toLowerCase();
-
- if (hasUpperCase) {
- input = preserveCamelCase(input);
- }
-
- input = input
- .replace(/^[_.\- ]+/, '')
- .toLowerCase()
- .replace(/[_.\- ]+(\w|$)/g, (_, p1) => p1.toUpperCase())
- .replace(/\d+(\w|$)/g, m => m.toUpperCase());
-
- return postProcess(input);
-};
-
-module.exports = camelCase;
-// TODO: Remove this for the next major release
-module.exports.default = camelCase;
diff --git a/assets/node_modules/camelcase/license b/assets/node_modules/camelcase/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/camelcase/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/camelcase/package.json b/assets/node_modules/camelcase/package.json
deleted file mode 100644
index fbdbaaa..0000000
--- a/assets/node_modules/camelcase/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "camelcase",
- "version": "5.3.1",
- "description": "Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`",
- "license": "MIT",
- "repository": "sindresorhus/camelcase",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "camelcase",
- "camel-case",
- "camel",
- "case",
- "dash",
- "hyphen",
- "dot",
- "underscore",
- "separator",
- "string",
- "text",
- "convert",
- "pascalcase",
- "pascal-case"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.1",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/camelcase/readme.md b/assets/node_modules/camelcase/readme.md
deleted file mode 100644
index fde2726..0000000
--- a/assets/node_modules/camelcase/readme.md
+++ /dev/null
@@ -1,99 +0,0 @@
-# camelcase [![Build Status](https://travis-ci.org/sindresorhus/camelcase.svg?branch=master)](https://travis-ci.org/sindresorhus/camelcase)
-
-> Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-camelcase?utm_source=npm-camelcase&utm_medium=referral&utm_campaign=readme">Get professional support for 'camelcase' with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
-
----
-
-## Install
-
-```
-$ npm install camelcase
-```
-
-
-## Usage
-
-```js
-const camelCase = require('camelcase');
-
-camelCase('foo-bar');
-//=> 'fooBar'
-
-camelCase('foo_bar');
-//=> 'fooBar'
-
-camelCase('Foo-Bar');
-//=> 'fooBar'
-
-camelCase('Foo-Bar', {pascalCase: true});
-//=> 'FooBar'
-
-camelCase('--foo.bar', {pascalCase: false});
-//=> 'fooBar'
-
-camelCase('foo bar');
-//=> 'fooBar'
-
-console.log(process.argv[3]);
-//=> '--foo-bar'
-camelCase(process.argv[3]);
-//=> 'fooBar'
-
-camelCase(['foo', 'bar']);
-//=> 'fooBar'
-
-camelCase(['__foo__', '--bar'], {pascalCase: true});
-//=> 'FooBar'
-```
-
-
-## API
-
-### camelCase(input, [options])
-
-#### input
-
-Type: `string` `string[]`
-
-String to convert to camel case.
-
-#### options
-
-Type: `Object`
-
-##### pascalCase
-
-Type: `boolean`<br>
-Default: `false`
-
-Uppercase the first character: `foo-bar` → `FooBar`
-
-
-## Security
-
-To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
-
-
-## Related
-
-- [decamelize](https://github.com/sindresorhus/decamelize) - The inverse of this module
-- [uppercamelcase](https://github.com/SamVerschueren/uppercamelcase) - Like this module, but to PascalCase instead of camelCase
-- [titleize](https://github.com/sindresorhus/titleize) - Capitalize every word in string
-- [humanize-string](https://github.com/sindresorhus/humanize-string) - Convert a camelized/dasherized/underscored string into a humanized one
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/caniuse-lite/CHANGELOG.md b/assets/node_modules/caniuse-lite/CHANGELOG.md
deleted file mode 100644
index 472d91a..0000000
--- a/assets/node_modules/caniuse-lite/CHANGELOG.md
+++ /dev/null
@@ -1,331 +0,0 @@
-# 1.x releases
-
-The contents of this section have been generated automatically; each version
-tracks the `caniuse-db` package at the same version.
-
-- **1.0.30001025** was released on February 4th, 2020 at 06:32.
-- **1.0.30001024** was released on February 3rd, 2020 at 22:10.
-- **1.0.30001023** was released on January 25th, 2020 at 07:32.
-- **1.0.30001022** was released on January 21st, 2020 at 02:32.
-- **1.0.30001021** was released on January 15th, 2020 at 05:32.
-- **1.0.30001020** was released on January 9th, 2020 at 05:32.
-- **1.0.30001019** was released on January 5th, 2020 at 01:32.
-- **1.0.30001018** was released on January 3rd, 2020 at 23:32.
-- **1.0.30001017** was released on December 27th, 2019 at 18:32.
-- **1.0.30001016** was released on December 16th, 2019 at 06:32.
-- **1.0.30001015** was released on December 4th, 2019 at 07:32.
-- **1.0.30001013** was released on December 2nd, 2019 at 06:32.
-- **1.0.30001012** was released on November 25th, 2019 at 06:32.
-- **1.0.30001011** was released on November 20th, 2019 at 05:32.
-- **1.0.30001010** was released on November 14th, 2019 at 07:32.
-- **1.0.30001009** was released on November 13th, 2019 at 05:32.
-- **1.0.30001008** was released on November 4th, 2019 at 06:32.
-- **1.0.30001006** was released on October 30th, 2019 at 03:32.
-- **1.0.30001005** was released on October 27th, 2019 at 05:32.
-- **1.0.30001004** was released on October 24th, 2019 at 06:32.
-- **1.0.30001002** was released on October 21st, 2019 at 06:32.
-- **1.0.30001001** was released on October 21st, 2019 at 04:32.
-- **1.0.30000999** was released on October 6th, 2019 at 00:32.
-- **1.0.30000998** was released on October 2nd, 2019 at 06:32.
-- **1.0.30000997** was released on September 24th, 2019 at 04:32.
-- **1.0.30000996** was released on September 20th, 2019 at 05:32.
-- **1.0.30000995** was released on September 16th, 2019 at 04:32.
-- **1.0.30000994** was released on September 11th, 2019 at 05:32.
-- **1.0.30000992** was released on September 5th, 2019 at 05:32.
-- **1.0.30000990** was released on September 4th, 2019 at 05:32.
-- **1.0.30000989** was released on August 6th, 2019 at 04:32.
-- **1.0.30000988** was released on July 31st, 2019 at 03:32.
-- **1.0.30000987** was released on July 30th, 2019 at 05:32.
-- **1.0.30000986** was released on July 27th, 2019 at 05:32.
-- **1.0.30000985** was released on July 21st, 2019 at 05:32.
-- **1.0.30000984** was released on July 13th, 2019 at 05:32.
-- **1.0.30000983** was released on July 10th, 2019 at 06:32.
-- **1.0.30000981** was released on July 8th, 2019 at 06:32.
-- **1.0.30000980** was released on July 5th, 2019 at 17:32.
-- **1.0.30000979** was released on July 1st, 2019 at 06:32.
-- **1.0.30000978** was released on June 26th, 2019 at 06:32.
-- **1.0.30000977** was released on June 25th, 2019 at 06:32.
-- **1.0.30000976** was released on June 21st, 2019 at 06:32.
-- **1.0.30000975** was released on June 18th, 2019 at 06:32.
-- **1.0.30000974** was released on June 6th, 2019 at 06:32.
-- **1.0.30000973** was released on June 4th, 2019 at 06:32.
-- **1.0.30000971** was released on May 22nd, 2019 at 04:32.
-- **1.0.30000969** was released on May 16th, 2019 at 03:32.
-- **1.0.30000967** was released on May 7th, 2019 at 05:32.
-- **1.0.30000966** was released on May 3rd, 2019 at 05:32.
-- **1.0.30000965** was released on May 3rd, 2019 at 04:32.
-- **1.0.30000963** was released on April 24th, 2019 at 04:32.
-- **1.0.30000962** was released on April 19th, 2019 at 04:32.
-- **1.0.30000960** was released on April 16th, 2019 at 06:32.
-- **1.0.30000959** was released on April 15th, 2019 at 03:32.
-- **1.0.30000958** was released on April 14th, 2019 at 21:32.
-- **1.0.30000957** was released on April 3rd, 2019 at 06:32.
-- **1.0.30000956** was released on April 3rd, 2019 at 04:32.
-- **1.0.30000955** was released on March 28th, 2019 at 06:32.
-- **1.0.30000954** was released on March 27th, 2019 at 05:32.
-- **1.0.30000953** was released on March 26th, 2019 at 05:32.
-- **1.0.30000952** was released on March 26th, 2019 at 02:32.
-- **1.0.30000951** was released on March 20th, 2019 at 04:32.
-- **1.0.30000950** was released on March 17th, 2019 at 06:32.
-- **1.0.30000949** was released on March 16th, 2019 at 03:32.
-- **1.0.30000948** was released on March 15th, 2019 at 06:32.
-- **1.0.30000947** was released on March 14th, 2019 at 05:32.
-- **1.0.30000946** was released on March 13th, 2019 at 05:32.
-- **1.0.30000945** was released on March 12th, 2019 at 06:32.
-- **1.0.30000944** was released on March 12th, 2019 at 05:32.
-- **1.0.30000943** was released on March 10th, 2019 at 03:32.
-- **1.0.30000942** was released on March 7th, 2019 at 04:32.
-- **1.0.30000941** was released on March 5th, 2019 at 04:32.
-- **1.0.30000940** was released on March 3rd, 2019 at 20:32.
-- **1.0.30000939** was released on February 23rd, 2019 at 04:32.
-- **1.0.30000938** was released on February 15th, 2019 at 05:32.
-- **1.0.30000937** was released on February 15th, 2019 at 04:32.
-- **1.0.30000936** was released on February 11th, 2019 at 04:32.
-- **1.0.30000935** was released on February 5th, 2019 at 05:32.
-- **1.0.30000934** was released on February 3rd, 2019 at 07:32.
-- **1.0.30000933** was released on January 31st, 2019 at 05:32.
-- **1.0.30000932** was released on January 25th, 2019 at 07:32.
-- **1.0.30000931** was released on January 25th, 2019 at 06:32.
-- **1.0.30000930** was released on January 23rd, 2019 at 05:32.
-- **1.0.30000929** was released on January 16th, 2019 at 05:32.
-- **1.0.30000928** was released on January 10th, 2019 at 06:32.
-- **1.0.30000927** was released on January 4th, 2019 at 03:32.
-- **1.0.30000926** was released on January 2nd, 2019 at 02:32.
-- **1.0.30000925** was released on December 28th, 2018 at 03:32.
-- **1.0.30000923** was released on December 20th, 2018 at 00:32.
-- **1.0.30000921** was released on December 14th, 2018 at 05:32.
-- **1.0.30000919** was released on December 14th, 2018 at 04:32.
-- **1.0.30000918** was released on December 10th, 2018 at 05:32.
-- **1.0.30000917** was released on December 10th, 2018 at 01:32.
-- **1.0.30000916** was released on December 6th, 2018 at 06:32.
-- **1.0.30000915** was released on December 6th, 2018 at 05:32.
-- **1.0.30000914** was released on December 4th, 2018 at 06:32.
-- **1.0.30000913** was released on December 3rd, 2018 at 07:32.
-- **1.0.30000912** was released on November 27th, 2018 at 15:32.
-- **1.0.30000911** was released on November 27th, 2018 at 06:32.
-- **1.0.30000910** was released on November 21st, 2018 at 06:32.
-- **1.0.30000909** was released on November 18th, 2018 at 06:32.
-- **1.0.30000908** was released on November 18th, 2018 at 05:32.
-- **1.0.30000907** was released on November 8th, 2018 at 07:32.
-- **1.0.30000906** was released on November 6th, 2018 at 05:32.
-- **1.0.30000905** was released on November 5th, 2018 at 05:32.
-- **1.0.30000904** was released on November 3rd, 2018 at 06:32.
-- **1.0.30000903** was released on October 31st, 2018 at 05:32.
-- **1.0.30000902** was released on October 30th, 2018 at 04:32.
-- **1.0.30000901** was released on October 30th, 2018 at 03:32.
-- **1.0.30000900** was released on October 29th, 2018 at 01:32.
-- **1.0.30000899** was released on October 25th, 2018 at 04:32.
-- **1.0.30000898** was released on October 23rd, 2018 at 05:32.
-- **1.0.30000893** was released on October 18th, 2018 at 05:32.
-- **1.0.30000892** was released on October 15th, 2018 at 06:32.
-- **1.0.30000890** was released on October 8th, 2018 at 03:32.
-- **1.0.30000889** was released on October 3rd, 2018 at 04:32.
-- **1.0.30000888** was released on September 28th, 2018 at 02:32.
-- **1.0.30000887** was released on September 23rd, 2018 at 04:32.
-- **1.0.30000886** was released on September 21st, 2018 at 06:32.
-- **1.0.30000885** was released on September 6th, 2018 at 05:32.
-- **1.0.30000884** was released on September 4th, 2018 at 04:32.
-- **1.0.30000883** was released on August 30th, 2018 at 04:32.
-- **1.0.30000882** was released on August 29th, 2018 at 05:32.
-- **1.0.30000880** was released on August 28th, 2018 at 06:32.
-- **1.0.30000878** was released on August 21st, 2018 at 06:32.
-- **1.0.30000877** was released on August 14th, 2018 at 05:32.
-- **1.0.30000876** was released on August 13th, 2018 at 01:32.
-- **1.0.30000874** was released on August 3rd, 2018 at 06:47.
-- **1.0.30000872** was released on August 2nd, 2018 at 22:47.
-- **1.0.30000865** was released on July 10th, 2018 at 05:00.
-- **1.0.30000864** was released on July 5th, 2018 at 03:01.
-- **1.0.30000862** was released on July 3rd, 2018 at 06:00.
-- **1.0.30000861** was released on June 29th, 2018 at 05:00.
-- **1.0.30000860** was released on June 28th, 2018 at 06:00.
-- **1.0.30000859** was released on June 26th, 2018 at 06:00.
-- **1.0.30000858** was released on June 24th, 2018 at 00:01.
-- **1.0.30000857** was released on June 23rd, 2018 at 23:00.
-- **1.0.30000856** was released on June 15th, 2018 at 06:01.
-- **1.0.30000855** was released on June 14th, 2018 at 06:00.
-- **1.0.30000854** was released on June 14th, 2018 at 05:00.
-- **1.0.30000853** was released on June 13th, 2018 at 07:00.
-- **1.0.30000852** was released on June 12th, 2018 at 07:00.
-- **1.0.30000851** was released on June 8th, 2018 at 06:00.
-- **1.0.30000850** was released on June 7th, 2018 at 07:00.
-- **1.0.30000849** was released on June 5th, 2018 at 07:00.
-- **1.0.30000848** was released on June 4th, 2018 at 15:01.
-- **1.0.30000847** was released on May 31st, 2018 at 07:00.
-- **1.0.30000846** was released on May 24th, 2018 at 07:00.
-- **1.0.30000845** was released on May 23rd, 2018 at 23:00.
-- **1.0.30000844** was released on May 22nd, 2018 at 11:00.
-- **1.0.30000845** was released on May 22nd, 2018 at 06:02.
-- **1.0.30000844** was released on May 21st, 2018 at 04:00.
-- **1.0.30000843** was released on May 18th, 2018 at 07:01.
-- **1.0.30000842** was released on May 17th, 2018 at 06:00.
-- **1.0.30000841** was released on May 16th, 2018 at 06:00.
-- **1.0.30000840** was released on May 14th, 2018 at 06:00.
-- **1.0.30000839** was released on May 10th, 2018 at 07:00.
-- **1.0.30000838** was released on May 10th, 2018 at 06:01.
-- **1.0.30000836** was released on May 8th, 2018 at 05:00.
-- **1.0.30000835** was released on May 6th, 2018 at 05:00.
-- **1.0.30000834** was released on May 6th, 2018 at 04:00.
-- **1.0.30000833** was released on May 2nd, 2018 at 04:01.
-- **1.0.30000832** was released on April 28th, 2018 at 04:00.
-- **1.0.30000831** was released on April 28th, 2018 at 03:00.
-- **1.0.30000830** was released on April 14th, 2018 at 05:00.
-- **1.0.30000828** was released on April 12th, 2018 at 06:00.
-- **1.0.30000827** was released on April 10th, 2018 at 05:00.
-- **1.0.30000826** was released on April 10th, 2018 at 04:00.
-- **1.0.30000824** was released on April 6th, 2018 at 05:00.
-- **1.0.30000823** was released on April 3rd, 2018 at 06:01.
-- **1.0.30000822** was released on April 3rd, 2018 at 05:00.
-- **1.0.30000821** was released on March 28th, 2018 at 04:00.
-- **1.0.30000820** was released on March 25th, 2018 at 05:01.
-- **1.0.30000819** was released on March 22nd, 2018 at 06:01.
-- **1.0.30000817** was released on March 21st, 2018 at 06:01.
-- **1.0.30000815** was released on March 15th, 2018 at 06:01.
-- **1.0.30000814** was released on March 13th, 2018 at 06:01.
-- **1.0.30000813** was released on March 6th, 2018 at 07:00.
-- **1.0.30000812** was released on March 5th, 2018 at 05:01.
-- **1.0.30000811** was released on March 3rd, 2018 at 08:01.
-- **1.0.30000810** was released on February 20th, 2018 at 00:00.
-- **1.0.30000809** was released on February 18th, 2018 at 02:01.
-- **1.0.30000808** was released on February 11th, 2018 at 07:00.
-- **1.0.30000807** was released on February 10th, 2018 at 06:00.
-- **1.0.30000805** was released on February 9th, 2018 at 05:00.
-- **1.0.30000804** was released on February 7th, 2018 at 07:00.
-- **1.0.30000803** was released on February 6th, 2018 at 07:00.
-- **1.0.30000802** was released on February 5th, 2018 at 23:14.
-- **1.0.30000792** was released on January 15th, 2018 at 06:01.
-- **1.0.30000791** was released on January 12th, 2018 at 06:01.
-- **1.0.30000790** was released on January 11th, 2018 at 08:00.
-- **1.0.30000789** was released on January 7th, 2018 at 05:00.
-- **1.0.30000788** was released on January 7th, 2018 at 04:00.
-- **1.0.30000787** was released on January 3rd, 2018 at 23:00.
-- **1.0.30000786** was released on January 3rd, 2018 at 19:00.
-- **1.0.30000785** was released on January 3rd, 2018 at 18:01.
-- **1.0.30000784** was released on December 20th, 2017 at 05:01.
-- **1.0.30000783** was released on December 13th, 2017 at 06:01.
-- **1.0.30000782** was released on December 10th, 2017 at 07:01.
-- **1.0.30000781** was released on December 10th, 2017 at 06:01.
-- **1.0.30000780** was released on December 6th, 2017 at 06:01.
-- **1.0.30000779** was released on December 6th, 2017 at 05:01.
-- **1.0.30000778** was released on December 4th, 2017 at 07:01.
-- **1.0.30000777** was released on December 1st, 2017 at 07:00.
-- **1.0.30000776** was released on December 1st, 2017 at 05:01.
-- **1.0.30000775** was released on November 29th, 2017 at 06:00.
-- **1.0.30000774** was released on November 29th, 2017 at 05:01.
-- **1.0.30000772** was released on November 26th, 2017 at 07:01.
-- **1.0.30000770** was released on November 23rd, 2017 at 06:01.
-- **1.0.30000769** was released on November 21st, 2017 at 06:01.
-- **1.0.30000766** was released on November 17th, 2017 at 06:01.
-- **1.0.30000765** was released on November 16th, 2017 at 05:00.
-- **1.0.30000764** was released on November 14th, 2017 at 07:00.
-- **1.0.30000762** was released on November 14th, 2017 at 06:00.
-- **1.0.30000760** was released on November 8th, 2017 at 04:00.
-- **1.0.30000758** was released on November 3rd, 2017 at 06:01.
-- **1.0.30000757** was released on November 2nd, 2017 at 06:00.
-- **1.0.30000756** was released on October 30th, 2017 at 06:00.
-- **1.0.30000755** was released on October 28th, 2017 at 07:00.
-- **1.0.30000753** was released on October 28th, 2017 at 06:00.
-- **1.0.30000752** was released on October 27th, 2017 at 05:00.
-- **1.0.30000751** was released on October 26th, 2017 at 05:00.
-- **1.0.30000750** was released on October 25th, 2017 at 05:00.
-- **1.0.30000749** was released on October 22nd, 2017 at 23:00.
-- **1.0.30000748** was released on October 19th, 2017 at 06:00.
-- **1.0.30000747** was released on October 18th, 2017 at 06:00.
-- **1.0.30000746** was released on October 11th, 2017 at 05:00.
-- **1.0.30000745** was released on October 9th, 2017 at 03:00.
-- **1.0.30000744** was released on October 5th, 2017 at 06:01.
-- **1.0.30000743** was released on October 4th, 2017 at 06:00.
-- **1.0.30000742** was released on October 4th, 2017 at 05:01.
-- **1.0.30000741** was released on October 3rd, 2017 at 04:00.
-- **1.0.30000740** was released on September 29th, 2017 at 05:00.
-- **1.0.30000739** was released on September 28th, 2017 at 05:00.
-- **1.0.30000738** was released on September 25th, 2017 at 07:00.
-- **1.0.30000737** was released on September 24th, 2017 at 06:00.
-- **1.0.30000736** was released on September 24th, 2017 at 05:00.
-- **1.0.30000735** was released on September 22nd, 2017 at 05:00.
-- **1.0.30000734** was released on September 22nd, 2017 at 01:00.
-- **1.0.30000733** was released on September 18th, 2017 at 05:00.
-- **1.0.30000732** was released on September 17th, 2017 at 06:00.
-- **1.0.30000731** was released on September 16th, 2017 at 06:00.
-- **1.0.30000730** was released on September 15th, 2017 at 06:00.
-- **1.0.30000727** was released on September 11th, 2017 at 07:00.
-- **1.0.30000726** was released on September 6th, 2017 at 04:00.
-- **1.0.30000725** was released on September 5th, 2017 at 06:00.
-- **1.0.30000724** was released on September 5th, 2017 at 05:00.
-- **1.0.30000723** was released on September 4th, 2017 at 20:00.
-- **1.0.30000722** was released on September 4th, 2017 at 05:00.
-- **1.0.30000721** was released on August 30th, 2017 at 06:00.
-- **1.0.30000720** was released on August 30th, 2017 at 05:00.
-- **1.0.30000718** was released on August 25th, 2017 at 07:00.
-- **1.0.30000717** was released on August 22nd, 2017 at 04:00.
-- **1.0.30000716** was released on August 20th, 2017 at 07:00.
-- **1.0.30000715** was released on August 11th, 2017 at 06:00.
-- **1.0.30000714** was released on August 11th, 2017 at 05:00.
-- **1.0.30000713** was released on August 9th, 2017 at 06:00.
-- **1.0.30000712** was released on August 7th, 2017 at 04:00.
-- **1.0.30000711** was released on August 7th, 2017 at 01:00.
-- **1.0.30000710** was released on August 4th, 2017 at 03:00.
-- **1.0.30000709** was released on August 1st, 2017 at 05:00.
-- **1.0.30000708** was released on July 27th, 2017 at 07:01.
-- **1.0.30000706** was released on July 25th, 2017 at 16:06.
-- **1.0.30000704** was released on July 20th, 2017 at 07:01.
-- **1.0.30000703** was released on July 19th, 2017 at 06:01.
-- **1.0.30000702** was released on July 18th, 2017 at 08:01.
-- **1.0.30000701** was released on July 14th, 2017 at 06:01.
-- **1.0.30000700** was released on July 12th, 2017 at 07:01.
-- **1.0.30000699** was released on July 11th, 2017 at 06:02.
-- **1.0.30000698** was released on July 10th, 2017 at 06:01.
-- **1.0.30000697** was released on July 5th, 2017 at 06:01.
-- **1.0.30000696** was released on June 27th, 2017 at 07:01.
-- **1.0.30000695** was released on June 27th, 2017 at 05:01.
-- **1.0.30000694** was released on June 24th, 2017 at 05:01.
-- **1.0.30000693** was released on June 22nd, 2017 at 04:01.
-- **1.0.30000692** was released on June 19th, 2017 at 07:01.
-- **1.0.30000690** was released on June 18th, 2017 at 07:01.
-- **1.0.30000689** was released on June 18th, 2017 at 06:01.
-- **1.0.30000688** was released on June 18th, 2017 at 05:01.
-- **1.0.30000687** was released on June 18th, 2017 at 04:01.
-- **1.0.30000686** was released on June 15th, 2017 at 07:01.
-- **1.0.30000684** was released on June 13th, 2017 at 05:01.
-- **1.0.30000683** was released on June 10th, 2017 at 05:01.
-- **1.0.30000680** was released on June 8th, 2017 at 08:01.
-- **1.0.30000679** was released on June 6th, 2017 at 06:01.
-- **1.0.30000677** was released on June 5th, 2017 at 00:01.
-- **1.0.30000676** was released on May 30th, 2017 at 06:01.
-- **1.0.30000674** was released on May 28th, 2017 at 06:01.
-- **1.0.30000673** was released on May 27th, 2017 at 06:01.
-- **1.0.30000672** was released on May 26th, 2017 at 06:01.
-- **1.0.30000671** was released on May 25th, 2017 at 07:01.
-- **1.0.30000670** was released on May 15th, 2017 at 07:01.
-- **1.0.30000669** was released on May 14th, 2017 at 06:01.
-- **1.0.30000668** was released on May 14th, 2017 at 05:01.
-- **1.0.30000667** was released on May 12th, 2017 at 07:01.
-- **1.0.30000666** was released on May 8th, 2017 at 06:01.
-- **1.0.30000665** was released on May 3rd, 2017 at 08:01.
-- **1.0.30000664** was released on April 28th, 2017 at 06:01.
-- **1.0.30000663** was released on April 28th, 2017 at 05:01.
-- **1.0.30000662** was released on April 26th, 2017 at 07:01.
-- **1.0.30000661** was released on April 26th, 2017 at 06:01.
-- **1.0.30000660** was released on April 24th, 2017 at 17:01.
-- **1.0.30000659** was released on April 24th, 2017 at 00:01.
-- **1.0.30000657** was released on April 21st, 2017 at 06:01.
-- **1.0.30000656** was released on April 20th, 2017 at 12:16.
-- **1.0.30000655** was released on April 17th, 2017 at 17:06.
-
-# 0.3.0
-
-- Add the `title` key to each feature.
-- Update `caniuse-db` to `1.0.30000653`.
-- Test automated publish script.
-
-# 0.2.0
-
-- Rewrite of the module. Now tries to be less clever with version merging,
- instead opting for base62 identifiers for versions, and it is now tested
- for accuracy against the original data.
-- `null` versions are now preserved to be consistent with caniuse-db.
-- All data is now stored as JS objects rather than JSON.
-- The browser map is now automatically generated.
-
-# 0.1.0
-
-- Initial release.
diff --git a/assets/node_modules/caniuse-lite/LICENSE b/assets/node_modules/caniuse-lite/LICENSE
deleted file mode 100644
index 06c608d..0000000
--- a/assets/node_modules/caniuse-lite/LICENSE
+++ /dev/null
@@ -1,395 +0,0 @@
-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/assets/node_modules/caniuse-lite/README.md b/assets/node_modules/caniuse-lite/README.md
deleted file mode 100644
index 84e471c..0000000
--- a/assets/node_modules/caniuse-lite/README.md
+++ /dev/null
@@ -1,103 +0,0 @@
-# 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).
-
-
-## Contributors
-
-Thanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):
-
-<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
-<!-- prettier-ignore -->
-| [<img src="https://avatars.githubusercontent.com/u/1282980?v=3" width="100px;"/><br /><sub><b>Ben Briggs</b></sub>](http://beneb.info)<br />[💻](https://github.com/ben-eb/caniuse-lite/commits?author=ben-eb "Code") [📖](https://github.com/ben-eb/caniuse-lite/commits?author=ben-eb "Documentation") [👀](#review-ben-eb "Reviewed Pull Requests") [⚠️](https://github.com/ben-eb/caniuse-lite/commits?author=ben-eb "Tests") | [<img src="https://avatars.githubusercontent.com/u/1737375?v=3" width="100px;"/><br /><sub><b>Andy Jansson</b></sub>](https://github.com/andyjansson)<br />[💻](https://github.com/ben-eb/caniuse-lite/commits?author=andyjansson "Code") | [<img src="https://avatars1.githubusercontent.com/u/19343?v=4" width="100px;"/><br /><sub><b>Andrey Sitnik</b></sub>](http://twitter.com/sitnikcode)<br />[💻](https://github.com/ben-eb/caniuse-lite/commits?author=ai "Code") | <img src="https://avatars2.githubusercontent.com/u/947326?v=4" width="100px;"/><br /><sub><b>Igor Deryabin</b></sub><br />[💻](https://github.com/ben-eb/caniuse-lite/commits?author=rodweb "Code") |
-| :---: | :---: | :---: | :---: |
-<!-- ALL-CONTRIBUTORS-LIST:END -->
-
-This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!
-
-<img src="https://opensource.nyc3.digitaloceanspaces.com/attribution/assets/SVG/DO_Logo_icon_blue.svg" alt="Digital Ocean logo" width="40" align="left">
-
-Big thanks to [DigitalOcean](https://www.digitalocean.com/?utm_source=opensource&utm_campaign=caniuse-lite) for supporting this project by providing their great infrastructure for us.
-
-## 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/assets/node_modules/caniuse-lite/data/agents.js b/assets/node_modules/caniuse-lite/data/agents.js
deleted file mode 100644
index 7b8893a..0000000
--- a/assets/node_modules/caniuse-lite/data/agents.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{H:0.00940789,D:0.00470395,G:0.0987829,E:0.0376316,A:0.0329276,B:1.5523,nB:0.009298},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","nB","H","D","G","E","A","B","","",""],E:"IE",F:{nB:962323200,H:998870400,D:1161129600,G:1237420800,E:1300060800,A:1346716800,B:1381968000}},B:{A:{C:0.009064,K:0.009064,f:0.018128,L:0.018128,N:0.040788,I:0.140492,J:1.90344,q:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","C","K","f","L","N","I","J","q","","",""],E:"Edge",F:{C:1438128000,K:1447286400,f:1470096000,L:1491868800,N:1508198400,I:1525046400,J:1542067200,q:1579046400},D:{C:"ms",K:"ms",f:"ms",L:"ms",N:"ms",I:"ms",J:"ms"}},C:{A:{"0":0.027192,"1":0.013596,"2":0.031724,"3":0.049852,"4":0.009064,"5":0.018128,"6":0.018128,"8":0.185812,kB:0.004827,OB:0.00487,F:0.00974,O:0.004879,H:0.020136,D:0.005725,G:0.004525,E:0.00533,A:0.004283,B:0.009042,C:0.004471,K:0.004486,f:0.00453,L:0.004465,N:0.004417,I:0.008922,J:0.004393,P:0.004443,Q:0.004283,R:0.013596,S:0.004393,T:0.004525,U:0.008786,V:0.004403,W:0.004317,X:0.004393,Y:0.004418,Z:0.008834,a:0.004403,b:0.008928,c:0.004471,d:0.004532,e:0.004707,AB:0.013596,g:0.004465,h:0.004783,i:0.009064,j:0.004783,k:0.00487,l:0.005029,m:0.0047,n:0.009064,o:0.009064,p:0.013596,M:0.004525,r:0.018128,s:0.031724,t:0.004532,u:0.018128,v:0.009064,w:0.149556,x:0.004532,y:0.013596,z:0.009064,EB:0.009064,NB:0.009064,DB:0.049852,BB:0.04532,FB:0.02266,HB:0.04532,IB:0.06798,JB:0.992508,KB:2.3929,LB:0.054384,MB:0,eB:0.008786,dB:0.00487},B:"moz",C:["","","","kB","OB","eB","dB","F","O","H","D","G","E","A","B","C","K","f","L","N","I","J","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","AB","g","h","i","j","k","l","m","n","o","p","M","r","s","t","u","v","w","x","y","z","0","1","2","EB","3","NB","4","5","6","DB","BB","FB","8","HB","IB","JB","KB","LB","MB",""],E:"Firefox",F:{"0":1506556800,"1":1510617600,"2":1516665600,"3":1525824000,"4":1536105600,"5":1540252800,"6":1544486400,"8":1562630400,kB:1161648000,OB:1213660800,eB:1246320000,dB:1264032000,F:1300752000,O:1308614400,H:1313452800,D:1317081600,G:1317081600,E:1320710400,A:1324339200,B:1327968000,C:1331596800,K:1335225600,f:1338854400,L:1342483200,N:1346112000,I:1349740800,J:1353628800,P:1357603200,Q:1361232000,R:1364860800,S:1368489600,T:1372118400,U:1375747200,V:1379376000,W:1386633600,X:1391472000,Y:1395100800,Z:1398729600,a:1402358400,b:1405987200,c:1409616000,d:1413244800,e:1417392000,AB:1421107200,g:1424736000,h:1428278400,i:1431475200,j:1435881600,k:1439251200,l:1442880000,m:1446508800,n:1450137600,o:1453852800,p:1457395200,M:1461628800,r:1465257600,s:1470096000,t:1474329600,u:1479168000,v:1485216000,w:1488844800,x:1492560000,y:1497312000,z:1502150400,EB:1520985600,NB:1529971200,DB:1548720000,BB:1552953600,FB:1558396800,HB:1567468800,IB:1571788800,JB:1575331200,KB:1578355200,LB:null,MB:null}},D:{A:{"0":0.031724,"1":0.063448,"2":0.031724,"3":0.027192,"4":0.027192,"5":0.253792,"6":0.013596,"8":0.04532,F:0.004706,O:0.004879,H:0.004879,D:0.005591,G:0.005591,E:0.005591,A:0.004534,B:0.004464,C:0.010424,K:0.004532,f:0.004706,L:0.015087,N:0.004393,I:0.004393,J:0.008652,P:0.004418,Q:0.004393,R:0.004317,S:0.004465,T:0.008786,U:0.004532,V:0.004461,W:0.004532,X:0.004326,Y:0.0047,Z:0.004461,a:0.004403,b:0.013596,c:0.004465,d:0.013596,e:0.009064,AB:0.004532,g:0.009064,h:0.004464,i:0.02266,j:0.004464,k:0.02266,l:0.009064,m:0.004403,n:0.018128,o:0.004465,p:0.004532,M:0.004532,r:0.009064,s:0.031724,t:0.516648,u:0.009064,v:0.009064,w:0.004403,x:0.027192,y:0.018128,z:0.031724,EB:0.02266,NB:0.031724,DB:0.054384,BB:0.036256,FB:0.058916,HB:0.15862,IB:0.117832,JB:0.154088,KB:0.172216,LB:0.15862,MB:0.20394,cB:0.244728,QB:0.267388,XB:0.276452,TB:0.865612,q:26.1904,sB:0.058916,UB:0.036256,VB:0},B:"webkit",C:["F","O","H","D","G","E","A","B","C","K","f","L","N","I","J","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","AB","g","h","i","j","k","l","m","n","o","p","M","r","s","t","u","v","w","x","y","z","0","1","2","EB","3","NB","4","5","6","DB","BB","FB","8","HB","IB","JB","KB","LB","MB","cB","QB","XB","TB","q","sB","UB","VB"],E:"Chrome",F:{"0":1485302400,"1":1489017600,"2":1492560000,"3":1500940800,"4":1508198400,"5":1512518400,"6":1516752000,"8":1532390400,F:1264377600,O:1274745600,H:1283385600,D:1287619200,G:1291248000,E:1296777600,A:1299542400,B:1303862400,C:1307404800,K:1312243200,f:1316131200,L:1316131200,N:1319500800,I:1323734400,J:1328659200,P:1332892800,Q:1337040000,R:1340668800,S:1343692800,T:1348531200,U:1352246400,V:1357862400,W:1361404800,X:1364428800,Y:1369094400,Z:1374105600,a:1376956800,b:1384214400,c:1389657600,d:1392940800,e:1397001600,AB:1400544000,g:1405468800,h:1409011200,i:1412640000,j:1416268800,k:1421798400,l:1425513600,m:1429401600,n:1432080000,o:1437523200,p:1441152000,M:1444780800,r:1449014400,s:1453248000,t:1456963200,u:1460592000,v:1464134400,w:1469059200,x:1472601600,y:1476230400,z:1480550400,EB:1496707200,NB:1504569600,DB:1520294400,BB:1523923200,FB:1527552000,HB:1536019200,IB:1539648000,JB:1543968000,KB:1548720000,LB:1552348800,MB:1555977600,cB:1559606400,QB:1564444800,XB:1568073600,TB:1571702400,q:1575936000,sB:null,UB:null,VB:null}},E:{A:{"7":0.18128,"9":0.403348,F:0,O:0.004532,H:0.004349,D:0.004465,G:0.027192,E:0.013596,A:0.013596,B:0.036256,C:0.122364,K:2.64669,WB:0,RB:0.008692,YB:0.312708,ZB:0.00456,aB:0.004283,bB:0.040788,PB:0.09064,fB:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","WB","RB","F","O","YB","H","ZB","D","aB","G","E","bB","A","PB","B","7","C","9","K","fB","",""],E:"Safari",F:{"7":1522281600,"9":1553472000,WB:1205798400,RB:1226534400,F:1244419200,O:1275868800,YB:1311120000,H:1343174400,ZB:1382400000,D:1382400000,aB:1410998400,G:1413417600,E:1443657600,bB:1458518400,A:1474329600,PB:1490572800,B:1505779200,C:1537142400,K:1568851200,fB:null}},F:{A:{"0":0.004532,"1":0.004532,"2":0.009064,"3":0.004403,"4":0.004532,"5":0.009064,"6":0.072512,"7":0.006229,"9":0.009064,E:0.0082,B:0.016581,C:0.004317,L:0.00685,N:0.00685,I:0.00685,J:0.005014,P:0.006015,Q:0.004879,R:0.006597,S:0.006597,T:0.013434,U:0.006702,V:0.006015,W:0.005595,X:0.004393,Y:0.008652,Z:0.004879,a:0.004879,b:0.009064,c:0.005152,d:0.005014,e:0.009758,AB:0.004879,g:0.013596,h:0.004283,i:0.004367,j:0.004534,k:0.004367,l:0.004227,m:0.004418,n:0.009042,o:0.004227,p:0.004725,M:0.004417,r:0.008942,s:0.004707,t:0.004827,u:0.004707,v:0.004707,w:0.004326,x:0.008922,y:0.014349,z:0.004725,gB:0.00685,hB:0,iB:0.008392,jB:0.004706,GB:0.004879,lB:0.008786},B:"webkit",C:["","","","","","","","","","","","","","","","","","E","gB","hB","iB","jB","B","7","GB","lB","C","9","L","N","I","J","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","AB","g","h","i","j","k","l","m","n","o","p","M","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","","",""],E:"Opera",F:{"0":1537833600,"1":1543363200,"2":1548201600,"3":1554768000,"4":1561593600,"5":1566259200,"6":1570406400,"7":1302566400,"9":1352073600,E:1150761600,gB:1223424000,hB:1251763200,iB:1267488000,jB:1277942400,B:1292457600,GB:1309219200,lB:1323129600,C:1323129600,L:1372723200,N:1377561600,I:1381104000,J:1386288000,P:1390867200,Q:1393891200,R:1399334400,S:1401753600,T:1405987200,U:1409616000,V:1413331200,W:1417132800,X:1422316800,Y:1425945600,Z:1430179200,a:1433808000,b:1438646400,c:1442448000,d:1445904000,e:1449100800,AB:1454371200,g:1457308800,h:1462320000,i:1465344000,j:1470096000,k:1474329600,l:1477267200,m:1481587200,n:1486425600,o:1490054400,p:1494374400,M:1498003200,r:1502236800,s:1506470400,t:1510099200,u:1515024000,v:1517961600,w:1521676800,x:1525910400,y:1530144000,z:1534982400},D:{"7":"o","9":"o",E:"o",B:"o",C:"o",gB:"o",hB:"o",iB:"o",jB:"o",GB:"o",lB:"o"}},G:{A:{G:0.00124904,RB:0.00124904,mB:0.00249808,CB:0,oB:0.00749423,pB:0.00374711,qB:0.0099923,rB:0.0187356,SB:0.0162375,tB:0.154881,uB:0.0487125,vB:0.171118,wB:0.137394,xB:0.23357,yB:0.314757,zB:1.88105,"0B":0.86933,"1B":0.365968,"2B":8.24864},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","RB","mB","CB","oB","pB","qB","G","rB","SB","tB","uB","vB","wB","xB","yB","zB","0B","1B","2B","",""],E:"iOS Safari",F:{RB:1270252800,mB:1283904000,CB:1299628800,oB:1331078400,pB:1359331200,qB:1394409600,G:1410912000,rB:1413763200,SB:1442361600,tB:1458518400,uB:1473724800,vB:1490572800,wB:1505779200,xB:1522281600,yB:1537142400,zB:1553472000,"0B":1568851200,"1B":1572220800,"2B":null}},H:{A:{"3B":1.10762},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","3B","","",""],E:"Opera Mini",F:{"3B":1426464000}},I:{A:{OB:0.000288116,F:0.00288116,QB:0,"4B":0,"5B":0.000864348,"6B":0.000288116,"7B":0.00489797,CB:0.127347,"8B":0,"9B":0.082113},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","4B","5B","6B","OB","F","7B","CB","8B","9B","QB","","",""],E:"Android Browser",F:{"4B":1256515200,"5B":1274313600,"6B":1291593600,OB:1298332800,F:1318896000,"7B":1341792000,CB:1374624000,"8B":1386547200,"9B":1401667200,QB:1566777600}},J:{A:{D:0,A:0.010934},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","D","A","","",""],E:"Blackberry Browser",F:{D:1325376000,A:1359504000}},K:{A:{"7":0,"9":0,A:0,B:0,C:0,M:0.0111391,GB:0},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","7","GB","C","9","M","","",""],E:"Opera Mobile",F:{"7":1314835200,"9":1349740800,A:1287100800,B:1300752000,GB:1318291200,C:1330300800,M:1474588800},D:{M:"webkit"}},L:{A:{q:34.4223},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","q","","",""],E:"Chrome for Android",F:{q:1575936000}},M:{A:{"8":0.21868},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","8","","",""],E:"Firefox for Android",F:{"8":1567468800}},N:{A:{A:0.0115934,B:0.049203},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","","",""],E:"IE Mobile",F:{A:1340150400,B:1353456000}},O:{A:{AC:2.61869},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","AC","","",""],E:"UC Browser for Android",F:{AC:1471392000},D:{AC:"webkit"}},P:{A:{F:0.28116,BC:0.0208267,CC:0.0208267,DC:0.114547,EC:0.0416533,FC:0.270747,PB:2.59292},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","F","BC","CC","DC","EC","FC","PB","","",""],E:"Samsung Internet",F:{F:1461024000,BC:1481846400,CC:1509408000,DC:1528329600,EC:1546128000,FC:1554163200,PB:1567900800}},Q:{A:{GC:0.202279},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","GC","","",""],E:"QQ Browser",F:{GC:1483228800}},R:{A:{HC:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","HC","","",""],E:"Baidu Browser",F:{HC:1491004800}},S:{A:{IC:0.114807},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","IC","","",""],E:"KaiOS Browser",F:{IC:1527811200}}};
diff --git a/assets/node_modules/caniuse-lite/data/browserVersions.js b/assets/node_modules/caniuse-lite/data/browserVersions.js
deleted file mode 100644
index 64a71c9..0000000
--- a/assets/node_modules/caniuse-lite/data/browserVersions.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={"0":"56","1":"57","2":"58","3":"60","4":"62","5":"63","6":"64","7":"11.1","8":"68","9":"12.1",A:"10",B:"11",C:"12",D:"7",E:"9",F:"4",G:"8",H:"6",I:"17",J:"18",K:"13",L:"15",M:"46",N:"16",O:"5",P:"19",Q:"20",R:"21",S:"22",T:"23",U:"24",V:"25",W:"26",X:"27",Y:"28",Z:"29",a:"30",b:"31",c:"32",d:"33",e:"34",f:"14",g:"36",h:"37",i:"38",j:"39",k:"40",l:"41",m:"42",n:"43",o:"44",p:"45",q:"79",r:"47",s:"48",t:"49",u:"50",v:"51",w:"52",x:"53",y:"54",z:"55",AB:"35",BB:"66",CB:"4.2-4.3",DB:"65",EB:"59",FB:"67",GB:"11.5",HB:"69",IB:"70",JB:"71",KB:"72",LB:"73",MB:"74",NB:"61",OB:"3",PB:"10.1",QB:"76",RB:"3.2",SB:"9.0-9.2",TB:"78",UB:"81",VB:"82",WB:"3.1",XB:"77",YB:"5.1",ZB:"6.1",aB:"7.1",bB:"9.1",cB:"75",dB:"3.6",eB:"3.5",fB:"TP",gB:"9.5-9.6",hB:"10.0-10.1",iB:"10.5",jB:"10.6",kB:"2",lB:"11.6",mB:"4.0-4.1",nB:"5.5",oB:"5.0-5.1",pB:"6.0-6.1",qB:"7.0-7.1",rB:"8.1-8.4",sB:"80",tB:"9.3",uB:"10.0-10.2",vB:"10.3",wB:"11.0-11.2",xB:"11.3-11.4",yB:"12.0-12.1",zB:"12.2-12.4","0B":"13.0-13.1","1B":"13.2","2B":"13.3","3B":"all","4B":"2.1","5B":"2.2","6B":"2.3","7B":"4.1","8B":"4.4","9B":"4.4.3-4.4.4",AC:"12.12",BC:"5.0-5.4",CC:"6.2-6.4",DC:"7.2-7.4",EC:"8.2",FC:"9.2",GC:"1.2",HC:"7.12",IC:"2.5"};
diff --git a/assets/node_modules/caniuse-lite/data/browsers.js b/assets/node_modules/caniuse-lite/data/browsers.js
deleted file mode 100644
index 04fbb50..0000000
--- a/assets/node_modules/caniuse-lite/data/browsers.js
+++ /dev/null
@@ -1 +0,0 @@
-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/assets/node_modules/caniuse-lite/data/features.js b/assets/node_modules/caniuse-lite/data/features.js
deleted file mode 100644
index 7e4d626..0000000
--- a/assets/node_modules/caniuse-lite/data/features.js
+++ /dev/null
@@ -1 +0,0 @@
-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"),"async-iterations-and-generators":require("./features/async-iterations-and-generators"),"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"),"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"),"clear-site-data-header":require("./features/clear-site-data-header"),"client-hints-dpr-width-viewport":require("./features/client-hints-dpr-width-viewport"),"clipboard":require("./features/clipboard"),"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"),"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-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-case-insensitive":require("./features/css-case-insensitive"),"css-clip-path":require("./features/css-clip-path"),"css-color-adjust":require("./features/css-color-adjust"),"css-conic-gradients":require("./features/css-conic-gradients"),"css-containment":require("./features/css-containment"),"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-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-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":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-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"),"details":require("./features/details"),"deviceorientation":require("./features/deviceorientation"),"devicepixelratio":require("./features/devicepixelratio"),"dialog":require("./features/dialog"),"dispatchevent":require("./features/dispatchevent"),"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-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"),"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-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"),"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":require("./features/intersectionobserver"),"intl-pluralrules":require("./features/intl-pluralrules"),"intrinsic-width":require("./features/intrinsic-width"),"jpeg2000":require("./features/jpeg2000"),"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"),"node-contains":require("./features/node-contains"),"node-parentelement":require("./features/node-parentelement"),"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"),"permissions-api":require("./features/permissions-api"),"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"),"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"),"replace-all":require("./features/replace-all"),"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"),"stopimmediatepropagation":require("./features/stopimmediatepropagation"),"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"),"symbols":require("./features/symbols"),"tabindex-attr":require("./features/tabindex-attr"),"template-literals":require("./features/template-literals"),"template":require("./features/template"),"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"),"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"),"vibration":require("./features/vibration"),"video":require("./features/video"),"videotracks":require("./features/videotracks"),"viewport-units":require("./features/viewport-units"),"wai-aria":require("./features/wai-aria"),"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-share":require("./features/web-share"),"webauthn":require("./features/webauthn"),"webgl":require("./features/webgl"),"webgl2":require("./features/webgl2"),"webhid":require("./features/webhid"),"webm":require("./features/webm"),"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/assets/node_modules/caniuse-lite/data/features/aac.js b/assets/node_modules/caniuse-lite/data/features/aac.js
deleted file mode 100644
index d6c61bb..0000000
--- a/assets/node_modules/caniuse-lite/data/features/aac.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R eB dB","132":"0 1 2 3 4 5 6 8 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"0 1 2 3 4 5 6 8 C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E","16":"A B"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","2":"WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB"},H:{"2":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","2":"4B 5B 6B"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"132":"8"},N:{"1":"A","2":"B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"132":"IC"}},B:6,C:"AAC audio file format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/abortcontroller.js b/assets/node_modules/caniuse-lite/data/features/abortcontroller.js
deleted file mode 100644
index 04af0f0..0000000
--- a/assets/node_modules/caniuse-lite/data/features/abortcontroller.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"N I J q","2":"C K f L"},C:{"1":"1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB","2":"0 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z eB dB"},D:{"1":"8 BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB"},E:{"1":"9 K fB","2":"F O H D G E A B WB RB YB ZB aB bB PB","130":"7 C"},F:{"1":"0 1 2 3 4 5 6 x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w gB hB iB jB GB lB"},G:{"1":"xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"FC PB","2":"F BC CC DC EC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:1,C:"AbortController & AbortSignal"};
diff --git a/assets/node_modules/caniuse-lite/data/features/ac3-ec3.js b/assets/node_modules/caniuse-lite/data/features/ac3-ec3.js
deleted file mode 100644
index 8a3138d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/ac3-ec3.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J","2":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB","132":"SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D","132":"A"},K:{"2":"7 A B C M GB","132":"9"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"132":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"AC-3 (Dolby Digital) and EC-3 (Dolby Digital Plus) codecs"};
diff --git a/assets/node_modules/caniuse-lite/data/features/accelerometer.js b/assets/node_modules/caniuse-lite/data/features/accelerometer.js
deleted file mode 100644
index 851e5b7..0000000
--- a/assets/node_modules/caniuse-lite/data/features/accelerometer.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"8 FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","194":"2 3 4 5 6 EB NB DB BB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:4,C:"Accelerometer"};
diff --git a/assets/node_modules/caniuse-lite/data/features/addeventlistener.js b/assets/node_modules/caniuse-lite/data/features/addeventlistener.js
deleted file mode 100644
index 5491651..0000000
--- a/assets/node_modules/caniuse-lite/data/features/addeventlistener.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","130":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","257":"kB OB F O H eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"EventTarget.addEventListener()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/alternate-stylesheet.js b/assets/node_modules/caniuse-lite/data/features/alternate-stylesheet.js
deleted file mode 100644
index a771205..0000000
--- a/assets/node_modules/caniuse-lite/data/features/alternate-stylesheet.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"G E A B","2":"H D nB"},B:{"2":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"7 9 E B C gB hB iB jB GB lB","16":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"16":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"16":"D A"},K:{"16":"7 9 A B C M GB"},L:{"16":"q"},M:{"16":"8"},N:{"16":"A B"},O:{"16":"AC"},P:{"16":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"16":"HC"},S:{"1":"IC"}},B:1,C:"Alternate stylesheet"};
diff --git a/assets/node_modules/caniuse-lite/data/features/ambient-light.js b/assets/node_modules/caniuse-lite/data/features/ambient-light.js
deleted file mode 100644
index 8677bb6..0000000
--- a/assets/node_modules/caniuse-lite/data/features/ambient-light.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K","132":"f L N I J","322":"q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R eB dB","132":"0 1 2 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB","194":"3 4 5 6 8 NB DB BB FB HB IB JB KB LB MB"},D:{"2":"0 1 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","322":"2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"132":"IC"}},B:4,C:"Ambient Light Sensor"};
diff --git a/assets/node_modules/caniuse-lite/data/features/apng.js b/assets/node_modules/caniuse-lite/data/features/apng.js
deleted file mode 100644
index 6d22e1e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/apng.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB"},D:{"1":"3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},E:{"1":"7 9 G E A B C K bB PB fB","2":"F O H D WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C M r s t u v w x y z gB hB iB jB GB lB","2":"E L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p"},G:{"1":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB qB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"DC EC FC PB","2":"F BC CC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:7,C:"Animated PNG (APNG)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/array-find-index.js b/assets/node_modules/caniuse-lite/data/features/array-find-index.js
deleted file mode 100644
index 3ac2763..0000000
--- a/assets/node_modules/caniuse-lite/data/features/array-find-index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"L N I J q","16":"C K f"},C:{"1":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U eB dB"},D:{"1":"0 1 2 3 4 5 6 8 p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o"},E:{"1":"7 9 G E A B C K aB bB PB fB","2":"F O H D WB RB YB ZB"},F:{"1":"0 1 2 3 4 5 6 c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b gB hB iB jB GB lB"},G:{"1":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB qB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D","16":"A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"Array.prototype.findIndex"};
diff --git a/assets/node_modules/caniuse-lite/data/features/array-find.js b/assets/node_modules/caniuse-lite/data/features/array-find.js
deleted file mode 100644
index 4a556ae..0000000
--- a/assets/node_modules/caniuse-lite/data/features/array-find.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"L N I J q","16":"C K f"},C:{"1":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U eB dB"},D:{"1":"0 1 2 3 4 5 6 8 p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o"},E:{"1":"7 9 G E A B C K aB bB PB fB","2":"F O H D WB RB YB ZB"},F:{"1":"0 1 2 3 4 5 6 c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b gB hB iB jB GB lB"},G:{"1":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB qB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D","16":"A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"Array.prototype.find"};
diff --git a/assets/node_modules/caniuse-lite/data/features/array-flat.js b/assets/node_modules/caniuse-lite/data/features/array-flat.js
deleted file mode 100644
index 8e3144a..0000000
--- a/assets/node_modules/caniuse-lite/data/features/array-flat.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"4 5 6 8 DB BB FB HB IB JB KB LB MB","2":"0 1 2 3 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB eB dB"},D:{"1":"HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB"},E:{"1":"9 C K fB","2":"7 F O H D G E A B WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"PB","2":"F BC CC DC EC FC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"flat & flatMap array methods"};
diff --git a/assets/node_modules/caniuse-lite/data/features/array-includes.js b/assets/node_modules/caniuse-lite/data/features/array-includes.js
deleted file mode 100644
index 55090c8..0000000
--- a/assets/node_modules/caniuse-lite/data/features/array-includes.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"f L N I J q","2":"C K"},C:{"1":"0 1 2 3 4 5 6 8 n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m eB dB"},D:{"1":"0 1 2 3 4 5 6 8 r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D G WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d gB hB iB jB GB lB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"Array.prototype.includes"};
diff --git a/assets/node_modules/caniuse-lite/data/features/arrow-functions.js b/assets/node_modules/caniuse-lite/data/features/arrow-functions.js
deleted file mode 100644
index ce80d2d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/arrow-functions.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R eB dB"},D:{"1":"0 1 2 3 4 5 6 8 p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o"},E:{"1":"7 9 A B C K PB fB","2":"F O H D G E WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b gB hB iB jB GB lB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"Arrow functions"};
diff --git a/assets/node_modules/caniuse-lite/data/features/asmjs.js b/assets/node_modules/caniuse-lite/data/features/asmjs.js
deleted file mode 100644
index d8c3b94..0000000
--- a/assets/node_modules/caniuse-lite/data/features/asmjs.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"K f L N I J","132":"q","322":"C"},C:{"1":"0 1 2 3 4 5 6 8 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R eB dB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X","132":"0 1 2 3 4 5 6 8 Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","132":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","132":"QB"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","132":"M"},L:{"132":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F","132":"BC CC DC EC FC PB"},Q:{"132":"GC"},R:{"132":"HC"},S:{"1":"IC"}},B:6,C:"asm.js"};
diff --git a/assets/node_modules/caniuse-lite/data/features/async-clipboard.js b/assets/node_modules/caniuse-lite/data/features/async-clipboard.js
deleted file mode 100644
index 9c240a9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/async-clipboard.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"4 5 6 8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","66":"2 3 EB NB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r gB hB iB jB GB lB","16":"0 1 2 3 4 5 6 s t u v w x y z"},G:{"2":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"Asynchronous Clipboard API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/async-functions.js b/assets/node_modules/caniuse-lite/data/features/async-functions.js
deleted file mode 100644
index 9bcee2e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/async-functions.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"L N I J q","2":"C K","194":"f"},C:{"1":"0 1 2 3 4 5 6 8 w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v eB dB"},D:{"1":"0 1 2 3 4 5 6 8 z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y"},E:{"1":"7 9 B C K fB","2":"F O H D G E A WB RB YB ZB aB bB","514":"PB"},F:{"1":"0 1 2 3 4 5 6 m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l gB hB iB jB GB lB"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB","514":"vB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"CC DC EC FC PB","2":"F BC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"Async functions"};
diff --git a/assets/node_modules/caniuse-lite/data/features/async-iterations-and-generators.js b/assets/node_modules/caniuse-lite/data/features/async-iterations-and-generators.js
deleted file mode 100644
index 6ce0e29..0000000
--- a/assets/node_modules/caniuse-lite/data/features/async-iterations-and-generators.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB","2":"0 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z eB dB"},D:{"1":"5 6 8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB"},E:{"1":"9 C K fB","2":"7 F O H D G E A B WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"Async iterators and generators"};
diff --git a/assets/node_modules/caniuse-lite/data/features/atob-btoa.js b/assets/node_modules/caniuse-lite/data/features/atob-btoa.js
deleted file mode 100644
index af20f42..0000000
--- a/assets/node_modules/caniuse-lite/data/features/atob-btoa.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z jB GB lB","2":"E gB hB","16":"iB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","16":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Base64 encoding and decoding"};
diff --git a/assets/node_modules/caniuse-lite/data/features/audio-api.js b/assets/node_modules/caniuse-lite/data/features/audio-api.js
deleted file mode 100644
index 1b7c5ac..0000000
--- a/assets/node_modules/caniuse-lite/data/features/audio-api.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U eB dB"},D:{"1":"0 1 2 3 4 5 6 8 e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E","33":"A B C K f L N I J P Q R S T U V W X Y Z a b c d"},E:{"2":"F O WB RB YB","33":"7 9 H D G E A B C K ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","33":"L N I J P Q R"},G:{"2":"RB mB CB oB","33":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"Web Audio API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/audio.js b/assets/node_modules/caniuse-lite/data/features/audio.js
deleted file mode 100644
index 5b898fc..0000000
--- a/assets/node_modules/caniuse-lite/data/features/audio.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB","132":"F O H D G E A B C K f L N I J P eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","2":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","2":"E","4":"gB hB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB"},H:{"2":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","2":"4B 5B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Audio element"};
diff --git a/assets/node_modules/caniuse-lite/data/features/audiotracks.js b/assets/node_modules/caniuse-lite/data/features/audiotracks.js
deleted file mode 100644
index 4abac22..0000000
--- a/assets/node_modules/caniuse-lite/data/features/audiotracks.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J","322":"q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c eB dB","194":"0 1 2 3 4 5 6 8 d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o","322":"0 1 2 3 4 5 6 8 p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","2":"F O H WB RB YB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b gB hB iB jB GB lB","322":"0 1 2 3 4 5 6 c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","322":"M"},L:{"322":"q"},M:{"2":"8"},N:{"1":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"194":"IC"}},B:1,C:"Audio Tracks"};
diff --git a/assets/node_modules/caniuse-lite/data/features/autofocus.js b/assets/node_modules/caniuse-lite/data/features/autofocus.js
deleted file mode 100644
index 58c4281..0000000
--- a/assets/node_modules/caniuse-lite/data/features/autofocus.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","2":"E"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","2":"4B 5B 6B"},J:{"1":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"2":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:1,C:"Autofocus attribute"};
diff --git a/assets/node_modules/caniuse-lite/data/features/aux-click.js b/assets/node_modules/caniuse-lite/data/features/aux-click.js
deleted file mode 100644
index 6f32888..0000000
--- a/assets/node_modules/caniuse-lite/data/features/aux-click.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"K C G E A B CB"},B:{"2":"D v Z I M H"},C:{"2":"VB y F J K C G E A B D v Z I M H N O P Q R S T U V W X Y x a b c d e f L h i j k l m n o p q r s t u z TB SB","129":"0 1 2 3 5 6 7 w"},D:{"1":"2 3 5 6 7 w HB g DB XB EB FB","2":"0 1 F J K C G E A B D v Z I M H N O P Q R S T U V W X Y x a b c d e f L h i j k l m n o p q r s t u z"},E:{"2":"F J K C G E A B GB AB IB JB KB LB MB NB"},F:{"1":"l m n o p q r s t u","2":"8 9 E B D I M H N O P Q R S T U V W X Y x a b c d e f L h i j k OB PB QB RB UB BB"},G:{"2":"4 G AB WB YB ZB aB bB cB dB eB fB gB"},H:{"2":"hB"},I:{"1":"g","2":"4 y F iB jB kB lB mB nB"},J:{"2":"C","16":"A"},K:{"2":"8 9 A B D L BB"},L:{"1":"g"},M:{"2":"w"},N:{"2":"A B"},O:{"16":"oB"},P:{"1":"J pB","16":"F"},Q:{"16":"qB"},R:{"1":"rB"}},B:5,C:"Auxclick"};
diff --git a/assets/node_modules/caniuse-lite/data/features/auxclick.js b/assets/node_modules/caniuse-lite/data/features/auxclick.js
deleted file mode 100644
index 36e473b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/auxclick.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w eB dB","129":"0 1 2 3 4 5 6 8 x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"0 1 2 3 4 5 6 8 z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","16":"M"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:5,C:"Auxclick"};
diff --git a/assets/node_modules/caniuse-lite/data/features/av1.js b/assets/node_modules/caniuse-lite/data/features/av1.js
deleted file mode 100644
index f9d8c0c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/av1.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I","194":"J"},C:{"1":"8 FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y eB dB","1090":"5 6","1284":"DB","1540":"BB","2114":"0 1 2 3 z EB","3138":"4 NB"},D:{"1":"IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB","4162":"8 FB HB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"1 2 3 4 5 6","2":"0 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"1090":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"AV1 video format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/background-attachment.js b/assets/node_modules/caniuse-lite/data/features/background-attachment.js
deleted file mode 100644
index 9f6dbe5..0000000
--- a/assets/node_modules/caniuse-lite/data/features/background-attachment.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","132":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","132":"kB OB F O H D G E A B C K f L N I J P Q R S T U eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","132":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","132":"E gB hB"},G:{"2":"RB mB CB","772":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 8B 9B","132":"7B CB"},J:{"260":"D A"},K:{"1":"7 9 B C M GB","132":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"2":"F","1028":"BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1028":"HC"},S:{"1":"IC"}},B:4,C:"CSS background-attachment"};
diff --git a/assets/node_modules/caniuse-lite/data/features/background-clip-text.js b/assets/node_modules/caniuse-lite/data/features/background-clip-text.js
deleted file mode 100644
index 5bad2bf..0000000
--- a/assets/node_modules/caniuse-lite/data/features/background-clip-text.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"36":"q","257":"L N I J","548":"C K f"},C:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","16":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r eB dB","130":"s"},D:{"36":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"16":"WB RB","36":"7 9 F O H D G E A B C K YB ZB aB bB PB fB"},F:{"16":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"16":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"16":"3B"},I:{"16":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"16":"D A"},K:{"16":"7 9 A B C M GB"},L:{"16":"q"},M:{"16":"8"},N:{"16":"A B"},O:{"16":"AC"},P:{"16":"F BC CC DC EC FC PB"},Q:{"16":"GC"},R:{"16":"HC"},S:{"130":"IC"}},B:1,C:"CSS3 Background-clip: text"};
diff --git a/assets/node_modules/caniuse-lite/data/features/background-img-opts.js b/assets/node_modules/caniuse-lite/data/features/background-img-opts.js
deleted file mode 100644
index be78956..0000000
--- a/assets/node_modules/caniuse-lite/data/features/background-img-opts.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB","36":"dB"},D:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","516":"F O H D G E A B C K f"},E:{"1":"7 9 D G E A B C K aB bB PB fB","772":"F O H WB RB YB ZB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","2":"E gB","36":"hB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","4":"RB mB CB pB","516":"oB"},H:{"132":"3B"},I:{"1":"QB 8B 9B","36":"4B","516":"OB F 7B CB","548":"5B 6B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS3 Background-image options"};
diff --git a/assets/node_modules/caniuse-lite/data/features/background-position-x-y.js b/assets/node_modules/caniuse-lite/data/features/background-position-x-y.js
deleted file mode 100644
index 3b5e3b7..0000000
--- a/assets/node_modules/caniuse-lite/data/features/background-position-x-y.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:7,C:"background-position-x & background-position-y"};
diff --git a/assets/node_modules/caniuse-lite/data/features/background-repeat-round-space.js b/assets/node_modules/caniuse-lite/data/features/background-repeat-round-space.js
deleted file mode 100644
index e0200df..0000000
--- a/assets/node_modules/caniuse-lite/data/features/background-repeat-round-space.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G nB","132":"E"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s eB dB"},D:{"1":"0 1 2 3 4 5 6 8 c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b"},E:{"1":"7 9 D G E A B C K aB bB PB fB","2":"F O H WB RB YB ZB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","2":"E L N I J gB hB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB"},H:{"1":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:4,C:"CSS background-repeat round and space"};
diff --git a/assets/node_modules/caniuse-lite/data/features/background-sync.js b/assets/node_modules/caniuse-lite/data/features/background-sync.js
deleted file mode 100644
index c86e9bd..0000000
--- a/assets/node_modules/caniuse-lite/data/features/background-sync.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB eB dB","16":"LB MB"},D:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"1":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"Background Sync API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/battery-status.js b/assets/node_modules/caniuse-lite/data/features/battery-status.js
deleted file mode 100644
index a811314..0000000
--- a/assets/node_modules/caniuse-lite/data/features/battery-status.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"n o p M r s t u v","2":"0 1 2 3 4 5 6 8 kB OB F O H D G E w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","132":"N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m","164":"A B C K f L"},D:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g","66":"h"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"Battery Status API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/beacon.js b/assets/node_modules/caniuse-lite/data/features/beacon.js
deleted file mode 100644
index 8fd75c6..0000000
--- a/assets/node_modules/caniuse-lite/data/features/beacon.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"f L N I J q","2":"C K"},C:{"1":"0 1 2 3 4 5 6 8 b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a eB dB"},D:{"1":"0 1 2 3 4 5 6 8 j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i"},E:{"1":"7 9 C K fB","2":"F O H D G E A B WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V gB hB iB jB GB lB"},G:{"1":"xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"Beacon API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/beforeafterprint.js b/assets/node_modules/caniuse-lite/data/features/beforeafterprint.js
deleted file mode 100644
index 39eaba8..0000000
--- a/assets/node_modules/caniuse-lite/data/features/beforeafterprint.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D G E A B","16":"nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O eB dB"},D:{"1":"5 6 8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"16":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"16":"A B"},O:{"16":"AC"},P:{"2":"BC CC DC EC FC PB","16":"F"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:2,C:"Printing Events"};
diff --git a/assets/node_modules/caniuse-lite/data/features/bigint.js b/assets/node_modules/caniuse-lite/data/features/bigint.js
deleted file mode 100644
index 0b2de8e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/bigint.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"8 HB IB JB KB LB MB","2":"0 1 2 3 4 5 6 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB eB dB","194":"DB BB FB"},D:{"1":"8 FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"FC PB","2":"F BC CC DC EC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:3,C:"BigInt"};
diff --git a/assets/node_modules/caniuse-lite/data/features/blobbuilder.js b/assets/node_modules/caniuse-lite/data/features/blobbuilder.js
deleted file mode 100644
index f058425..0000000
--- a/assets/node_modules/caniuse-lite/data/features/blobbuilder.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O eB dB","36":"H D G E A B C"},D:{"1":"0 1 2 3 4 5 6 8 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D","36":"G E A B C K f L N I J P"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB"},F:{"1":"0 1 2 3 4 5 6 9 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B C gB hB iB jB GB lB"},G:{"1":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB"},H:{"2":"3B"},I:{"1":"QB","2":"4B 5B 6B","36":"OB F 7B CB 8B 9B"},J:{"1":"A","2":"D"},K:{"1":"9 M","2":"7 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"Blob constructing"};
diff --git a/assets/node_modules/caniuse-lite/data/features/bloburls.js b/assets/node_modules/caniuse-lite/data/features/bloburls.js
deleted file mode 100644
index 1f4ca1e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/bloburls.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","129":"A B"},B:{"1":"L N I J q","129":"C K f"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D","33":"G E A B C K f L N I J P Q R S"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB","33":"H"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB","33":"pB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB 4B 5B 6B","33":"F 7B CB"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","2":"A"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"Blob URLs"};
diff --git a/assets/node_modules/caniuse-lite/data/features/border-image.js b/assets/node_modules/caniuse-lite/data/features/border-image.js
deleted file mode 100644
index a03bbb4..0000000
--- a/assets/node_modules/caniuse-lite/data/features/border-image.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G E A nB"},B:{"1":"f L N I J q","129":"C K"},C:{"1":"0 1 2 3 4 5 6 8 u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB","260":"L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t","804":"F O H D G E A B C K f eB dB"},D:{"1":"0 1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","260":"v w x y z","388":"a b c d e AB g h i j k l m n o p M r s t u","1412":"L N I J P Q R S T U V W X Y Z","1956":"F O H D G E A B C K f"},E:{"129":"7 9 A B C K bB PB fB","1412":"H D G E ZB aB","1956":"F O WB RB YB"},F:{"1":"0 1 2 3 4 5 6 n o p M r s t u v w x y z","2":"E gB hB","260":"i j k l m","388":"L N I J P Q R S T U V W X Y Z a b c d e AB g h","1796":"iB jB","1828":"7 9 B C GB lB"},G:{"129":"tB uB vB wB xB yB zB 0B 1B 2B","1412":"G pB qB rB SB","1956":"RB mB CB oB"},H:{"1828":"3B"},I:{"388":"QB 8B 9B","1956":"OB F 4B 5B 6B 7B CB"},J:{"1412":"A","1924":"D"},K:{"2":"A","388":"M","1828":"7 9 B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","2":"A"},O:{"388":"AC"},P:{"1":"DC EC FC PB","260":"BC CC","388":"F"},Q:{"260":"GC"},R:{"260":"HC"},S:{"260":"IC"}},B:4,C:"CSS3 Border images"};
diff --git a/assets/node_modules/caniuse-lite/data/features/border-radius.js b/assets/node_modules/caniuse-lite/data/features/border-radius.js
deleted file mode 100644
index c40f87a..0000000
--- a/assets/node_modules/caniuse-lite/data/features/border-radius.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 u v w x y z EB NB DB BB FB HB IB JB KB LB MB","257":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t","289":"OB eB dB","292":"kB"},D:{"1":"0 1 2 3 4 5 6 8 O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","33":"F"},E:{"1":"7 9 O D G E A B C K aB bB PB fB","33":"F WB RB","129":"H YB ZB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","2":"E gB hB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","33":"RB"},H:{"2":"3B"},I:{"1":"OB F QB 5B 6B 7B CB 8B 9B","33":"4B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"257":"IC"}},B:4,C:"CSS3 Border-radius (rounded corners)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/broadcastchannel.js b/assets/node_modules/caniuse-lite/data/features/broadcastchannel.js
deleted file mode 100644
index 6d81f8f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/broadcastchannel.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h eB dB"},D:{"1":"0 1 2 3 4 5 6 8 y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"DC EC FC PB","2":"F BC CC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:1,C:"BroadcastChannel"};
diff --git a/assets/node_modules/caniuse-lite/data/features/brotli.js b/assets/node_modules/caniuse-lite/data/features/brotli.js
deleted file mode 100644
index 2ee86db..0000000
--- a/assets/node_modules/caniuse-lite/data/features/brotli.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"L N I J q","2":"C K f"},C:{"1":"0 1 2 3 4 5 6 8 o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n eB dB"},D:{"1":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s","194":"t","257":"u"},E:{"2":"F O H D G E A WB RB YB ZB aB bB PB","513":"7 9 B C K fB"},F:{"1":"0 1 2 3 4 5 6 i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB gB hB iB jB GB lB","194":"g h"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","257":"QB"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"1":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:6,C:"Brotli Accept-Encoding/Content-Encoding"};
diff --git a/assets/node_modules/caniuse-lite/data/features/calc.js b/assets/node_modules/caniuse-lite/data/features/calc.js
deleted file mode 100644
index e637420..0000000
--- a/assets/node_modules/caniuse-lite/data/features/calc.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","260":"E","516":"A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","33":"F O H D G E A B C K f L"},D:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J","33":"P Q R S T U V"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB","33":"H"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB","33":"pB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB","132":"8B 9B"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"calc() as CSS unit value"};
diff --git a/assets/node_modules/caniuse-lite/data/features/canvas-blending.js b/assets/node_modules/caniuse-lite/data/features/canvas-blending.js
deleted file mode 100644
index 872a23c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/canvas-blending.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"K f L N I J q","2":"C"},C:{"1":"0 1 2 3 4 5 6 8 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P eB dB"},D:{"1":"0 1 2 3 4 5 6 8 a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","2":"F O H WB RB YB"},F:{"1":"0 1 2 3 4 5 6 I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N gB hB iB jB GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"Canvas blend modes"};
diff --git a/assets/node_modules/caniuse-lite/data/features/canvas-text.js b/assets/node_modules/caniuse-lite/data/features/canvas-text.js
deleted file mode 100644
index e1cea3b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/canvas-text.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"nB","8":"H D G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","8":"kB OB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","8":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","8":"E gB hB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","8":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Text API for Canvas"};
diff --git a/assets/node_modules/caniuse-lite/data/features/canvas.js b/assets/node_modules/caniuse-lite/data/features/canvas.js
deleted file mode 100644
index 2f40c04..0000000
--- a/assets/node_modules/caniuse-lite/data/features/canvas.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"nB","8":"H D G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB dB","132":"kB OB eB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","132":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"260":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","132":"4B 5B 6B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Canvas (basic support)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/ch-unit.js b/assets/node_modules/caniuse-lite/data/features/ch-unit.js
deleted file mode 100644
index 1c2b1b0..0000000
--- a/assets/node_modules/caniuse-lite/data/features/ch-unit.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","132":"E A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W"},E:{"1":"7 9 D G E A B C K aB bB PB fB","2":"F O H WB RB YB ZB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"ch (character) unit"};
diff --git a/assets/node_modules/caniuse-lite/data/features/chacha20-poly1305.js b/assets/node_modules/caniuse-lite/data/features/chacha20-poly1305.js
deleted file mode 100644
index d83358c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/chacha20-poly1305.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M eB dB"},D:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c","129":"d e AB g h i j k l m n o p M r s"},E:{"1":"7 9 C K fB","2":"F O H D G E A B WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB gB hB iB jB GB lB"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B","16":"9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"ChaCha20-Poly1305 cipher suites for TLS"};
diff --git a/assets/node_modules/caniuse-lite/data/features/channel-messaging.js b/assets/node_modules/caniuse-lite/data/features/channel-messaging.js
deleted file mode 100644
index 61ea64f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/channel-messaging.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V eB dB","194":"W X Y Z a b c d e AB g h i j k"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z jB GB lB","2":"E gB hB","16":"iB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Channel messaging"};
diff --git a/assets/node_modules/caniuse-lite/data/features/childnode-remove.js b/assets/node_modules/caniuse-lite/data/features/childnode-remove.js
deleted file mode 100644
index 1412ced..0000000
--- a/assets/node_modules/caniuse-lite/data/features/childnode-remove.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"K f L N I J q","16":"C"},C:{"1":"0 1 2 3 4 5 6 8 T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S eB dB"},D:{"1":"0 1 2 3 4 5 6 8 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB","16":"H"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"ChildNode.remove()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/classlist.js b/assets/node_modules/caniuse-lite/data/features/classlist.js
deleted file mode 100644
index 72b33cf..0000000
--- a/assets/node_modules/caniuse-lite/data/features/classlist.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"8":"H D G E nB","1924":"A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","8":"kB OB eB","516":"U V","772":"F O H D G E A B C K f L N I J P Q R S T dB"},D:{"1":"0 1 2 3 4 5 6 8 Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","8":"F O H D","516":"U V W X","772":"T","900":"G E A B C K f L N I J P Q R S"},E:{"1":"7 9 D G E A B C K aB bB PB fB","8":"F O WB RB","900":"H YB ZB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","8":"7 E B gB hB iB jB","900":"9 C GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","8":"RB mB CB","900":"oB pB"},H:{"900":"3B"},I:{"1":"QB 8B 9B","8":"4B 5B 6B","900":"OB F 7B CB"},J:{"1":"A","900":"D"},K:{"1":"M","8":"A B","900":"7 9 C GB"},L:{"1":"q"},M:{"1":"8"},N:{"900":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"classList (DOMTokenList)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/clear-site-data-header.js b/assets/node_modules/caniuse-lite/data/features/clear-site-data-header.js
deleted file mode 100644
index 9dbda06..0000000
--- a/assets/node_modules/caniuse-lite/data/features/clear-site-data-header.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"16":"H D G E A B nB"},B:{"1":"q","16":"C K f L N I J"},C:{"1":"5 6 8 DB BB FB HB IB JB KB LB MB","16":"0 1 2 3 4 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB eB dB"},D:{"1":"4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"0 1 2 3 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB"},E:{"16":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 s t u v w x y z","16":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r gB hB iB jB GB lB"},G:{"16":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"16":"3B"},I:{"1":"QB","16":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"16":"D A"},K:{"16":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"16":"A B"},O:{"16":"AC"},P:{"16":"F BC CC DC EC FC PB"},Q:{"16":"GC"},R:{"16":"HC"},S:{"16":"IC"}},B:5,C:"Clear-Site-Data Header"};
diff --git a/assets/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js b/assets/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js
deleted file mode 100644
index e429c1c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:6,C:"Client Hints: DPR, Width, Viewport-Width"};
diff --git a/assets/node_modules/caniuse-lite/data/features/clipboard.js b/assets/node_modules/caniuse-lite/data/features/clipboard.js
deleted file mode 100644
index 661e636..0000000
--- a/assets/node_modules/caniuse-lite/data/features/clipboard.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2436":"H D G E A B nB"},B:{"260":"I J","2436":"C K f L N","10244":"q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R eB dB","772":"S T U V W X Y Z a b c d e AB g h i j k","4100":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"2":"F O H D G E A B C","2564":"K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m","10244":"0 1 2 3 4 5 6 8 n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"9 C K fB","16":"WB RB","2308":"7 A B PB","2820":"F O H D G E YB ZB aB bB"},F:{"2":"7 E B gB hB iB jB GB lB","16":"C","516":"9","2564":"L N I J P Q R S T U V W X Y Z","10244":"0 1 2 3 4 5 6 a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"1":"yB zB 0B 1B 2B","2":"RB mB CB","2820":"G oB pB qB rB SB tB uB vB wB xB"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB","2308":"QB 8B 9B"},J:{"2":"D","2308":"A"},K:{"2":"7 A B C GB","16":"9","3076":"M"},L:{"2052":"q"},M:{"1028":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2052":"BC CC DC EC FC PB","2308":"F"},Q:{"10244":"GC"},R:{"2052":"HC"},S:{"4100":"IC"}},B:5,C:"Synchronous Clipboard API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/comparedocumentposition.js b/assets/node_modules/caniuse-lite/data/features/comparedocumentposition.js
deleted file mode 100644
index cd9356a..0000000
--- a/assets/node_modules/caniuse-lite/data/features/comparedocumentposition.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","16":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f","132":"L N I J P Q R S T U V W X Y Z"},E:{"1":"7 9 A B C K PB fB","16":"F O H WB RB","132":"D G E ZB aB bB","260":"YB"},F:{"1":"0 1 2 3 4 5 6 9 C I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","16":"7 E B gB hB iB jB GB","132":"L N"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","16":"RB","132":"G mB CB oB pB qB rB SB tB"},H:{"1":"3B"},I:{"1":"QB 8B 9B","16":"4B 5B","132":"OB F 6B 7B CB"},J:{"132":"D A"},K:{"1":"9 C M","16":"7 A B GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Node.compareDocumentPosition()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/console-basic.js b/assets/node_modules/caniuse-lite/data/features/console-basic.js
deleted file mode 100644
index e3758d0..0000000
--- a/assets/node_modules/caniuse-lite/data/features/console-basic.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D nB","132":"G E"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z GB lB","2":"E gB hB iB jB"},G:{"1":"RB mB CB oB","513":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"4097":"3B"},I:{"1025":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"258":"D A"},K:{"2":"A","258":"7 9 B C M GB"},L:{"1025":"q"},M:{"2049":"8"},N:{"258":"A B"},O:{"258":"AC"},P:{"1025":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1025":"HC"},S:{"1":"IC"}},B:1,C:"Basic console logging functions"};
diff --git a/assets/node_modules/caniuse-lite/data/features/console-time.js b/assets/node_modules/caniuse-lite/data/features/console-time.js
deleted file mode 100644
index e717ca9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/console-time.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G E A nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","2":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z GB lB","2":"E gB hB iB jB","16":"B"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"M","16":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","2":"A"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"console.time and console.timeEnd"};
diff --git a/assets/node_modules/caniuse-lite/data/features/const.js b/assets/node_modules/caniuse-lite/data/features/const.js
deleted file mode 100644
index e3a70dd..0000000
--- a/assets/node_modules/caniuse-lite/data/features/const.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","2052":"B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","132":"kB OB F O H D G E A B C eB dB","260":"K f L N I J P Q R S T U V W X Y Z a b c d e AB"},D:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","260":"F O H D G E A B C K f L N I J P Q","772":"R S T U V W X Y Z a b c d e AB g h i j k","1028":"l m n o p M r s"},E:{"1":"7 9 A B C K PB fB","260":"F O WB RB","772":"H D G E YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 g h i j k l m n o p M r s t u v w x y z","2":"E gB","132":"7 B hB iB jB GB","644":"9 C lB","772":"L N I J P Q R S T U V W X","1028":"Y Z a b c d e AB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","260":"RB mB CB","772":"G oB pB qB rB SB tB"},H:{"644":"3B"},I:{"1":"QB","16":"4B 5B","260":"6B","772":"OB F 7B CB 8B 9B"},J:{"772":"D A"},K:{"1":"M","132":"7 A B GB","644":"9 C"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","2":"A"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","1028":"F"},Q:{"772":"GC"},R:{"1028":"HC"},S:{"1":"IC"}},B:6,C:"const"};
diff --git a/assets/node_modules/caniuse-lite/data/features/constraint-validation.js b/assets/node_modules/caniuse-lite/data/features/constraint-validation.js
deleted file mode 100644
index 882ff1b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/constraint-validation.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","900":"A B"},B:{"1":"I J q","388":"f L N","900":"C K"},C:{"1":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","260":"t u","388":"Z a b c d e AB g h i j k l m n o p M r s","900":"F O H D G E A B C K f L N I J P Q R S T U V W X Y"},D:{"1":"0 1 2 3 4 5 6 8 k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f","388":"V W X Y Z a b c d e AB g h i j","900":"L N I J P Q R S T U"},E:{"1":"7 9 A B C K PB fB","16":"F O WB RB","388":"G E aB bB","900":"H D YB ZB"},F:{"1":"0 1 2 3 4 5 6 X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","16":"7 E B gB hB iB jB GB","388":"L N I J P Q R S T U V W","900":"9 C lB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB","388":"G qB rB SB tB","900":"oB pB"},H:{"2":"3B"},I:{"1":"QB","16":"OB 4B 5B 6B","388":"8B 9B","900":"F 7B CB"},J:{"16":"D","388":"A"},K:{"1":"M","16":"7 A B GB","900":"9 C"},L:{"1":"q"},M:{"1":"8"},N:{"900":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"388":"GC"},R:{"1":"HC"},S:{"388":"IC"}},B:1,C:"Constraint Validation API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/contenteditable.js b/assets/node_modules/caniuse-lite/data/features/contenteditable.js
deleted file mode 100644
index d4965ad..0000000
--- a/assets/node_modules/caniuse-lite/data/features/contenteditable.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB","4":"OB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"2":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","2":"4B 5B 6B"},J:{"1":"D A"},K:{"1":"9 M","2":"7 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"contenteditable attribute (basic support)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js b/assets/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js
deleted file mode 100644
index 409c604..0000000
--- a/assets/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","132":"A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","129":"F O H D G E A B C K f L N I J P Q R S"},D:{"1":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K","257":"f L N I J P Q R S T U"},E:{"1":"7 9 D G E A B C K aB bB PB fB","2":"F O WB RB","257":"H ZB","260":"YB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB","257":"pB","260":"oB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"2":"D","257":"A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"132":"A B"},O:{"257":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"Content Security Policy 1.0"};
diff --git a/assets/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js b/assets/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js
deleted file mode 100644
index cedfee2..0000000
--- a/assets/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f","32772":"L N I J"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a eB dB","132":"b c d e","260":"AB","516":"g h i j k l m n o","8196":"0 1 2 3 4 5 6 8 p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"0 1 2 3 4 5 6 8 k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB","1028":"g h i","2052":"j"},E:{"1":"7 9 A B C K PB fB","2":"F O H D G E WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S gB hB iB jB GB lB","1028":"T U V","2052":"W"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"4100":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"8196":"IC"}},B:4,C:"Content Security Policy Level 2"};
diff --git a/assets/node_modules/caniuse-lite/data/features/cors.js b/assets/node_modules/caniuse-lite/data/features/cors.js
deleted file mode 100644
index 947444b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/cors.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D nB","132":"A","260":"G E"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB JB KB LB MB eB dB","2":"kB OB","1025":"4 5 6 8 NB DB BB FB HB IB"},D:{"1":"0 1 2 3 4 5 6 8 K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","132":"F O H D G E A B C"},E:{"2":"WB RB","513":"7 9 H D G E A B C K ZB aB bB PB fB","644":"F O YB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B gB hB iB jB GB lB"},G:{"513":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","644":"RB mB CB oB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","132":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","132":"D"},K:{"1":"9 C M","2":"7 A B GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","132":"A"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Cross-Origin Resource Sharing"};
diff --git a/assets/node_modules/caniuse-lite/data/features/createimagebitmap.js b/assets/node_modules/caniuse-lite/data/features/createimagebitmap.js
deleted file mode 100644
index b51ea5e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/createimagebitmap.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l eB dB","3076":"0 1 2 3 4 5 6 8 m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t","132":"u v","260":"w x","516":"0 1 2 y z"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB","16":"fB"},F:{"1":"0 1 2 3 4 5 6 M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g gB hB iB jB GB lB","132":"h i","260":"j k","516":"l m n o p"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"3076":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"CC DC EC FC PB","16":"F BC"},Q:{"1":"GC"},R:{"2":"HC"},S:{"3076":"IC"}},B:1,C:"createImageBitmap"};
diff --git a/assets/node_modules/caniuse-lite/data/features/credential-management.js b/assets/node_modules/caniuse-lite/data/features/credential-management.js
deleted file mode 100644
index 88bae53..0000000
--- a/assets/node_modules/caniuse-lite/data/features/credential-management.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r","66":"s t u","129":"0 v w x y z"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"DC EC FC PB","2":"F BC CC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"Credential Management API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/cryptography.js b/assets/node_modules/caniuse-lite/data/features/cryptography.js
deleted file mode 100644
index ce82c45..0000000
--- a/assets/node_modules/caniuse-lite/data/features/cryptography.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"nB","8":"H D G E A","164":"B"},B:{"1":"q","1025":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","8":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b eB dB","322":"c d"},D:{"1":"0 1 2 3 4 5 6 8 h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","8":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g"},E:{"1":"7 9 B C K fB","8":"F O H D WB RB YB ZB","545":"G E A aB bB PB"},F:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","8":"7 9 E B C L N I J P Q R S T gB hB iB jB GB lB"},G:{"1":"wB xB yB zB 0B 1B 2B","8":"RB mB CB oB pB qB","545":"G rB SB tB uB vB"},H:{"2":"3B"},I:{"1":"QB","8":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"8":"D A"},K:{"1":"M","8":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"8":"A","164":"B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"Web Cryptography"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-all.js b/assets/node_modules/caniuse-lite/data/features/css-all.js
deleted file mode 100644
index 8f69af3..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-all.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W eB dB"},D:{"1":"0 1 2 3 4 5 6 8 h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g"},E:{"1":"7 9 A B C K bB PB fB","2":"F O H D G E WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T gB hB iB jB GB lB"},G:{"1":"tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB"},H:{"2":"3B"},I:{"1":"QB 9B","2":"OB F 4B 5B 6B 7B CB 8B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS all property"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-animation.js b/assets/node_modules/caniuse-lite/data/features/css-animation.js
deleted file mode 100644
index ad166c6..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-animation.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F eB dB","33":"O H D G E A B C K f L"},D:{"1":"0 1 2 3 4 5 6 8 n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","33":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m"},E:{"1":"7 9 E A B C K bB PB fB","2":"WB RB","33":"H D G YB ZB aB","292":"F O"},F:{"1":"0 1 2 3 4 5 6 9 a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B gB hB iB jB GB lB","33":"C L N I J P Q R S T U V W X Y Z"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","33":"G pB qB rB","164":"RB mB CB oB"},H:{"2":"3B"},I:{"1":"QB","33":"F 7B CB 8B 9B","164":"OB 4B 5B 6B"},J:{"33":"D A"},K:{"1":"9 M","2":"7 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"33":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"CSS Animation"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-any-link.js b/assets/node_modules/caniuse-lite/data/features/css-any-link.js
deleted file mode 100644
index 5a1f578..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-any-link.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","33":"q"},C:{"1":"0 1 2 3 4 5 6 8 u v w x y z EB NB DB BB FB HB IB JB KB LB MB","16":"kB OB F O H D G E A B C K f L N I J P Q eB dB","33":"R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t"},D:{"16":"F O H D G E A B C K f L N I J P Q R S T","33":"0 1 2 3 4 5 6 8 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"16":"F O H WB RB YB","33":"7 9 D G E A B C K ZB aB bB PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","33":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"16":"RB mB CB oB","33":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"16":"OB F 4B 5B 6B 7B CB 8B 9B","33":"QB"},J:{"16":"D A"},K:{"2":"7 9 A B C GB","33":"M"},L:{"33":"q"},M:{"33":"8"},N:{"2":"A B"},O:{"16":"AC"},P:{"16":"F","33":"BC CC DC EC FC PB"},Q:{"33":"GC"},R:{"33":"HC"},S:{"33":"IC"}},B:5,C:"CSS :any-link selector"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-appearance.js b/assets/node_modules/caniuse-lite/data/features/css-appearance.js
deleted file mode 100644
index 3a8f4f7..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-appearance.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"164":"q","388":"C K f L N I J"},C:{"164":"0 1 2 3 4 5 6 8 AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","676":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e eB dB"},D:{"164":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"164":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","164":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"164":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"164":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"164":"D A"},K:{"2":"7 9 A B C GB","164":"M"},L:{"164":"q"},M:{"164":"8"},N:{"2":"A","388":"B"},O:{"164":"AC"},P:{"164":"F BC CC DC EC FC PB"},Q:{"164":"GC"},R:{"164":"HC"},S:{"164":"IC"}},B:5,C:"CSS Appearance"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-apply-rule.js b/assets/node_modules/caniuse-lite/data/features/css-apply-rule.js
deleted file mode 100644
index 642c938..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-apply-rule.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","194":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u","194":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h gB hB iB jB GB lB","194":"0 1 2 3 4 5 6 i j k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","194":"M"},L:{"194":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F","194":"BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"194":"HC"},S:{"2":"IC"}},B:7,C:"CSS @apply rule"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-at-counter-style.js b/assets/node_modules/caniuse-lite/data/features/css-at-counter-style.js
deleted file mode 100644
index 5555a02..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-at-counter-style.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c eB dB","132":"0 1 2 3 4 5 6 8 d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"132":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"132":"IC"}},B:4,C:"CSS Counter Styles"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-backdrop-filter.js b/assets/node_modules/caniuse-lite/data/features/css-backdrop-filter.js
deleted file mode 100644
index 646df10..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-backdrop-filter.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N","257":"I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB eB dB","578":"IB JB KB LB MB"},D:{"1":"QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M","194":"0 1 2 3 4 5 6 8 r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB"},E:{"2":"F O H D G WB RB YB ZB aB","33":"7 9 E A B C K bB PB fB"},F:{"1":"6","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d gB hB iB jB GB lB","194":"0 1 2 3 4 5 e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB","33":"SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","194":"M"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F","194":"BC CC DC EC FC PB"},Q:{"194":"GC"},R:{"194":"HC"},S:{"2":"IC"}},B:7,C:"CSS Backdrop Filter"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-background-offsets.js b/assets/node_modules/caniuse-lite/data/features/css-background-offsets.js
deleted file mode 100644
index 3323152..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-background-offsets.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C eB dB"},D:{"1":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U"},E:{"1":"7 9 D G E A B C K aB bB PB fB","2":"F O H WB RB YB ZB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","2":"E gB hB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB"},H:{"1":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS background-position edge offsets"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js b/assets/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js
deleted file mode 100644
index 19266d8..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z eB dB"},D:{"1":"0 1 2 3 4 5 6 8 AB g h i j k l m n o p r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e","260":"M"},E:{"1":"7 9 B C K PB fB","2":"F O H D WB RB YB ZB","132":"G E A aB bB"},F:{"1":"0 1 2 3 4 5 6 S T U V W X Y Z a b c e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R gB hB iB jB GB lB","260":"d"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB qB","132":"G rB SB tB uB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","260":"M"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS background-blend-mode"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js b/assets/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js
deleted file mode 100644
index 8ce13b8..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","164":"q"},C:{"1":"0 1 2 3 4 5 6 8 c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b eB dB"},D:{"2":"F O H D G E A B C K f L N I J P Q R","164":"0 1 2 3 4 5 6 8 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O H WB RB YB","164":"7 9 D G E A B C K ZB aB bB PB fB"},F:{"2":"E gB hB iB jB","129":"7 9 B C GB lB","164":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"RB mB CB oB pB","164":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"132":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB","164":"QB 8B 9B"},J:{"2":"D","164":"A"},K:{"2":"A","129":"7 9 B C GB","164":"M"},L:{"164":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"164":"F BC CC DC EC FC PB"},Q:{"164":"GC"},R:{"164":"HC"},S:{"1":"IC"}},B:5,C:"CSS box-decoration-break"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-boxshadow.js b/assets/node_modules/caniuse-lite/data/features/css-boxshadow.js
deleted file mode 100644
index 2b4f65f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-boxshadow.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB","33":"eB dB"},D:{"1":"0 1 2 3 4 5 6 8 A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","33":"F O H D G E"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","33":"O","164":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","2":"E gB hB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","33":"mB CB","164":"RB"},H:{"2":"3B"},I:{"1":"F QB 7B CB 8B 9B","164":"OB 4B 5B 6B"},J:{"1":"A","33":"D"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS3 Box-shadow"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-canvas.js b/assets/node_modules/caniuse-lite/data/features/css-canvas.js
deleted file mode 100644
index 38ac133..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-canvas.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v eB dB","16":"0 1 2 3 4 5 6 8 w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"2":"0 1 2 3 4 5 6 8 s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","33":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r"},E:{"2":"WB RB","33":"7 9 F O H D G E A B C K YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","33":"L N I J P Q R S T U V W X Y Z a b c d e"},G:{"33":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"QB","33":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"33":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"BC CC DC EC FC PB","33":"F"},Q:{"33":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"CSS Canvas Drawings"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-caret-color.js b/assets/node_modules/caniuse-lite/data/features/css-caret-color.js
deleted file mode 100644
index 550ae11..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-caret-color.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w eB dB"},D:{"1":"1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},E:{"1":"7 9 C K fB","2":"F O H D G E A B WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n gB hB iB jB GB lB"},G:{"1":"xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"DC EC FC PB","2":"F BC CC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:4,C:"CSS caret-color"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-case-insensitive.js b/assets/node_modules/caniuse-lite/data/features/css-case-insensitive.js
deleted file mode 100644
index b56f560..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-case-insensitive.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M eB dB"},D:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D G WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB gB hB iB jB GB lB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:5,C:"Case-insensitive CSS attribute selectors"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-clip-path.js b/assets/node_modules/caniuse-lite/data/features/css-clip-path.js
deleted file mode 100644
index 2934086..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-clip-path.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I","260":"q","3138":"J"},C:{"1":"0 1 2 3 4 5 6 8 y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB","132":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M eB dB","644":"r s t u v w x"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T","260":"0 1 2 3 4 5 6 8 z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","292":"U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y"},E:{"2":"F O H WB RB YB ZB","292":"7 9 D G E A B C K aB bB PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","260":"0 1 2 3 4 5 6 m n o p M r s t u v w x y z","292":"L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l"},G:{"2":"RB mB CB oB pB","292":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB","260":"QB","292":"8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","292":"M"},L:{"260":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"292":"AC"},P:{"292":"F BC CC DC EC FC PB"},Q:{"292":"GC"},R:{"260":"HC"},S:{"644":"IC"}},B:4,C:"CSS clip-path property (for HTML)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-color-adjust.js b/assets/node_modules/caniuse-lite/data/features/css-color-adjust.js
deleted file mode 100644
index 3cba21d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-color-adjust.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","33":"q"},C:{"1":"0 1 2 3 4 5 6 8 s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r eB dB"},D:{"16":"F O H D G E A B C K f L N I J","33":"0 1 2 3 4 5 6 8 P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O WB RB YB","33":"7 9 H D G E A B C K ZB aB bB PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","33":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"16":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"16":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"16":"D A"},K:{"2":"7 9 A B C M GB"},L:{"16":"q"},M:{"1":"8"},N:{"16":"A B"},O:{"16":"AC"},P:{"16":"F BC CC DC EC FC PB"},Q:{"16":"GC"},R:{"16":"HC"},S:{"1":"IC"}},B:7,C:"CSS color-adjust"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-conic-gradients.js b/assets/node_modules/caniuse-lite/data/features/css-conic-gradients.js
deleted file mode 100644
index 1e35e90..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-conic-gradients.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","194":"3 4 5 6 8 EB NB DB BB FB"},E:{"1":"9 K fB","2":"7 F O H D G E A B C WB RB YB ZB aB bB PB"},F:{"1":"6","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p gB hB iB jB GB lB","194":"0 1 2 3 4 5 M r s t u v w x y z"},G:{"1":"zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"PB","2":"F BC CC DC EC FC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"CSS Conical Gradients"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-containment.js b/assets/node_modules/caniuse-lite/data/features/css-containment.js
deleted file mode 100644
index 526bfb9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-containment.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k eB dB","322":"l m n o p M r s t u v","336":"0 1 2 3 4 5 6 8 w x y z EB NB DB BB FB"},D:{"1":"0 1 2 3 4 5 6 8 w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u","194":"v"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h gB hB iB jB GB lB","194":"i j"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"322":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"CC DC EC FC PB","2":"F BC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"322":"IC"}},B:4,C:"CSS Containment"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-counters.js b/assets/node_modules/caniuse-lite/data/features/css-counters.js
deleted file mode 100644
index aee3cad..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-counters.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"G E A B","2":"H D nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"CSS Counters"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-crisp-edges.js b/assets/node_modules/caniuse-lite/data/features/css-crisp-edges.js
deleted file mode 100644
index 574bc48..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-crisp-edges.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H nB","2340":"D G E A B"},B:{"2":"C K f L N I J","1025":"q"},C:{"2":"kB OB eB","513":"8 DB BB FB HB IB JB KB LB MB","545":"0 1 2 3 4 5 6 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB dB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k","1025":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 A B C K PB fB","2":"F O WB RB YB","164":"H","4644":"D G E ZB aB bB"},F:{"2":"7 E B L N I J P Q R S T U V W X gB hB iB jB GB","545":"9 C lB","1025":"0 1 2 3 4 5 6 Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB","4260":"oB pB","4644":"G qB rB SB tB"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","1025":"QB"},J:{"2":"D","4260":"A"},K:{"2":"7 A B GB","545":"9 C","1025":"M"},L:{"1025":"q"},M:{"545":"8"},N:{"2340":"A B"},O:{"1":"AC"},P:{"1025":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"1025":"HC"},S:{"4097":"IC"}},B:7,C:"Crisp edges/pixelated images"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-cross-fade.js b/assets/node_modules/caniuse-lite/data/features/css-cross-fade.js
deleted file mode 100644
index 4b32c0a..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-cross-fade.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","33":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"F O H D G E A B C K f L N","33":"0 1 2 3 4 5 6 8 I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 A B C K PB fB","2":"F O WB RB","33":"H D G E YB ZB aB bB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","33":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB","33":"G oB pB qB rB SB tB"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB","33":"QB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","33":"M"},L:{"33":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"33":"AC"},P:{"33":"F BC CC DC EC FC PB"},Q:{"33":"GC"},R:{"33":"HC"},S:{"2":"IC"}},B:7,C:"CSS Cross-Fade Function"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-default-pseudo.js b/assets/node_modules/caniuse-lite/data/features/css-default-pseudo.js
deleted file mode 100644
index fd8834a..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-default-pseudo.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","16":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f","132":"L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u"},E:{"1":"7 9 B C K PB fB","16":"F O WB RB","132":"H D G E A YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 i j k l m n o p M r s t u v w x y z","16":"7 E B gB hB iB jB GB","132":"L N I J P Q R S T U V W X Y Z a b c d e AB g h","260":"9 C lB"},G:{"1":"vB wB xB yB zB 0B 1B 2B","16":"RB mB CB oB pB","132":"G qB rB SB tB uB"},H:{"260":"3B"},I:{"1":"QB","16":"OB 4B 5B 6B","132":"F 7B CB 8B 9B"},J:{"16":"D","132":"A"},K:{"1":"M","16":"7 A B C GB","260":"9"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"132":"AC"},P:{"1":"BC CC DC EC FC PB","132":"F"},Q:{"1":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:7,C:":default CSS pseudo-class"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js b/assets/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js
deleted file mode 100644
index fbdfc60..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","16":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q","16":"sB UB VB"},E:{"1":"B","2":"7 9 F O H D G E A C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"Explicit descendant combinator >>"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-deviceadaptation.js b/assets/node_modules/caniuse-lite/data/features/css-deviceadaptation.js
deleted file mode 100644
index d5a0760..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-deviceadaptation.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","164":"A B"},B:{"66":"q","164":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y","66":"0 1 2 3 4 5 6 8 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j gB hB iB jB GB lB","66":"0 1 2 3 4 5 6 k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"292":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"A M","292":"7 9 B C GB"},L:{"2":"q"},M:{"2":"8"},N:{"164":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"66":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"CSS Device Adaptation"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-dir-pseudo.js b/assets/node_modules/caniuse-lite/data/features/css-dir-pseudo.js
deleted file mode 100644
index d9c40f7..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-dir-pseudo.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N eB dB","33":"I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"33":"IC"}},B:5,C:":dir() CSS pseudo-class"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-display-contents.js b/assets/node_modules/caniuse-lite/data/features/css-display-contents.js
deleted file mode 100644
index 9c77c98..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-display-contents.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","260":"q"},C:{"1":"4 5 6 8 DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g eB dB","260":"0 1 2 3 h i j k l m n o p M r s t u v w x y z EB NB"},D:{"2":"0 1 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","194":"2 3 4 5 6 EB NB","260":"8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"fB","2":"F O H D G E A B WB RB YB ZB aB bB PB","260":"K","772":"7 9 C"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v gB hB iB jB GB lB","260":"0 1 2 3 4 5 6 w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB","260":"xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","260":"QB"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"260":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC","260":"FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"260":"IC"}},B:5,C:"CSS display: contents"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-element-function.js b/assets/node_modules/caniuse-lite/data/features/css-element-function.js
deleted file mode 100644
index bcc1d02..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-element-function.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"33":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","164":"kB OB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"33":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"33":"IC"}},B:5,C:"CSS element() function"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-env-function.js b/assets/node_modules/caniuse-lite/data/features/css-env-function.js
deleted file mode 100644
index 38ff163..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-env-function.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"8 DB BB FB HB IB JB KB LB MB","2":"0 1 2 3 4 5 6 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB eB dB"},D:{"1":"HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB"},E:{"1":"7 9 C K fB","2":"F O H D G E A WB RB YB ZB aB bB PB","132":"B"},F:{"1":"0 1 2 3 4 5 6","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB","132":"wB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"PB","2":"F BC CC DC EC FC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"CSS Environment Variables env()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-exclusions.js b/assets/node_modules/caniuse-lite/data/features/css-exclusions.js
deleted file mode 100644
index beab7e5..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-exclusions.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","33":"A B"},B:{"2":"q","33":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"33":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"CSS Exclusions Level 1"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-featurequeries.js b/assets/node_modules/caniuse-lite/data/features/css-featurequeries.js
deleted file mode 100644
index 4f88c21..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-featurequeries.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R eB dB"},D:{"1":"0 1 2 3 4 5 6 8 Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D G WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 9 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B C gB hB iB jB GB lB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"1":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS Feature Queries"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-filter-function.js b/assets/node_modules/caniuse-lite/data/features/css-filter-function.js
deleted file mode 100644
index 396f613..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-filter-function.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 A B C K bB PB fB","2":"F O H D G WB RB YB ZB aB","33":"E"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB","33":"SB tB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"CSS filter() function"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-filters.js b/assets/node_modules/caniuse-lite/data/features/css-filters.js
deleted file mode 100644
index efbdfc1..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-filters.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","1028":"K f L N I J","1346":"C"},C:{"1":"0 1 2 3 4 5 6 8 AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB","196":"e","516":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d dB"},D:{"1":"0 1 2 3 4 5 6 8 x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I","33":"J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w"},E:{"1":"7 9 A B C K bB PB fB","2":"F O WB RB YB","33":"H D G E ZB aB"},F:{"1":"0 1 2 3 4 5 6 k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","33":"L N I J P Q R S T U V W X Y Z a b c d e AB g h i j"},G:{"1":"tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB","33":"G pB qB rB SB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB","33":"8B 9B"},J:{"2":"D","33":"A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"DC EC FC PB","33":"F BC CC"},Q:{"33":"GC"},R:{"33":"HC"},S:{"1":"IC"}},B:5,C:"CSS Filter Effects"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-first-letter.js b/assets/node_modules/caniuse-lite/data/features/css-first-letter.js
deleted file mode 100644
index 4d78656..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-first-letter.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","16":"nB","516":"G","1540":"H D"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","132":"OB","260":"kB"},D:{"1":"0 1 2 3 4 5 6 8 E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"O H D G","132":"F"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","16":"O WB","132":"F RB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","16":"E gB","260":"7 B hB iB jB GB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB"},H:{"1":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","16":"4B 5B","132":"6B"},J:{"1":"D A"},K:{"1":"9 C M","260":"7 A B GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"::first-letter CSS pseudo-element selector"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-first-line.js b/assets/node_modules/caniuse-lite/data/features/css-first-line.js
deleted file mode 100644
index 3f2e5cc..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-first-line.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","132":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"CSS first-line pseudo-element"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-fixed.js b/assets/node_modules/caniuse-lite/data/features/css-fixed.js
deleted file mode 100644
index cfd80ff..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-fixed.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"D G E A B","2":"nB","8":"H"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB PB fB","1025":"bB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB","132":"oB pB qB"},H:{"2":"3B"},I:{"1":"OB QB 8B 9B","260":"4B 5B 6B","513":"F 7B CB"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"CSS position:fixed"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-focus-ring.js b/assets/node_modules/caniuse-lite/data/features/css-focus-ring.js
deleted file mode 100644
index 85d13b0..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-focus-ring.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"K C G E A B CB"},B:{"2":"D v Z I M H"},C:{"2":"VB y TB SB","161":"0 1 2 3 5 6 7 F J K C G E A B D v Z I M H N O P Q R S T U V W X Y x a b c d e f L h i j k l m n o p q r s t u z w"},D:{"2":"0 1 2 3 5 6 7 F J K C G E A B D v Z I M H N O P Q R S T U V W X Y x a b c d e f L h i j k l m n o p q r s t u z w HB g DB XB EB FB"},E:{"2":"F J K C G E A B GB AB IB JB KB LB MB NB"},F:{"2":"8 9 E B D I M H N O P Q R S T U V W X Y x a b c d e f L h i j k l m n o p q r s t u OB PB QB RB UB BB"},G:{"2":"4 G AB WB YB ZB aB bB cB dB eB fB gB"},H:{"2":"hB"},I:{"2":"4 y F g iB jB kB lB mB nB"},J:{"2":"C A"},K:{"2":"8 9 A B D L BB"},L:{"2":"g"},M:{"161":"w"},N:{"2":"A B"},O:{"2":"oB"},P:{"2":"F J pB"},Q:{"2":"qB"},R:{"2":"rB"}},B:7,C:":focus-ring CSS pseudo-class"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-focus-visible.js b/assets/node_modules/caniuse-lite/data/features/css-focus-visible.js
deleted file mode 100644
index d39bc66..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-focus-visible.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","328":"q"},C:{"2":"kB OB eB dB","161":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"2":"0 1 2 3 4 5 6 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB","328":"8 FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"328":"q"},M:{"161":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"161":"IC"}},B:7,C:":focus-visible CSS pseudo-class"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-focus-within.js b/assets/node_modules/caniuse-lite/data/features/css-focus-within.js
deleted file mode 100644
index 9e59d0f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-focus-within.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v eB dB"},D:{"1":"3 4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","194":"EB"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p gB hB iB jB GB lB","194":"M"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:":focus-within CSS pseudo-class"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js b/assets/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js
deleted file mode 100644
index 43f35d9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p eB dB","322":"0 1 M r s t u v w x y z"},D:{"1":"3 4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s","194":"0 1 2 t u v w x y z EB"},E:{"1":"7 9 C K fB","2":"F O H D G E A B WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB gB hB iB jB GB lB","194":"g h i j k l m n o p M"},G:{"1":"xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","194":"M"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"EC FC PB","2":"F","194":"BC CC DC"},Q:{"194":"GC"},R:{"2":"HC"},S:{"322":"IC"}},B:5,C:"CSS font-rendering controls"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-font-stretch.js b/assets/node_modules/caniuse-lite/data/features/css-font-stretch.js
deleted file mode 100644
index 508b407..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-font-stretch.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G eB dB"},D:{"1":"0 1 2 3 4 5 6 8 s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r"},E:{"1":"7 9 B C K fB","2":"F O H D G E A WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS font-stretch"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-gencontent.js b/assets/node_modules/caniuse-lite/data/features/css-gencontent.js
deleted file mode 100644
index 77b48eb..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-gencontent.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D nB","132":"G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"CSS Generated content for pseudo-elements"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-gradients.js b/assets/node_modules/caniuse-lite/data/features/css-gradients.js
deleted file mode 100644
index b2522e4..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-gradients.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB","260":"N I J P Q R S T U V W X Y Z a b c d e AB","292":"F O H D G E A B C K f L dB"},D:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","33":"A B C K f L N I J P Q R S T U V","548":"F O H D G E"},E:{"2":"WB RB","260":"7 9 D G E A B C K ZB aB bB PB fB","292":"H YB","804":"F O"},F:{"1":"0 1 2 3 4 5 6 9 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"E B gB hB iB jB","33":"C lB","164":"7 GB"},G:{"260":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","292":"oB pB","804":"RB mB CB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","33":"F 7B CB","548":"OB 4B 5B 6B"},J:{"1":"A","548":"D"},K:{"1":"9 M","2":"A B","33":"C","164":"7 GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS Gradients"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-grid.js b/assets/node_modules/caniuse-lite/data/features/css-grid.js
deleted file mode 100644
index c265b5b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-grid.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","8":"E","292":"A B"},B:{"1":"N I J q","292":"C K f L"},C:{"1":"0 1 2 3 4 5 6 8 y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J eB dB","8":"P Q R S T U V W X Y Z a b c d e AB g h i j","584":"k l m n o p M r s t u v","1025":"w x"},D:{"1":"2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U","8":"V W X Y","200":"0 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","1025":"1"},E:{"1":"7 9 B C K PB fB","2":"F O WB RB YB","8":"H D G E A ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X gB hB iB jB GB lB","200":"Y Z a b c d e AB g h i j k l m n"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB","8":"G pB qB rB SB tB uB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B","8":"CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"292":"A B"},O:{"1":"AC"},P:{"1":"CC DC EC FC PB","2":"BC","8":"F"},Q:{"200":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:4,C:"CSS Grid Layout (level 1)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js b/assets/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js
deleted file mode 100644
index 6ce7273..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 A B C K PB fB","2":"F O H D G E WB RB YB ZB aB bB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"CSS hanging-punctuation"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-has.js b/assets/node_modules/caniuse-lite/data/features/css-has.js
deleted file mode 100644
index 0725666..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-has.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:":has() CSS relational pseudo-class"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-hyphenate.js b/assets/node_modules/caniuse-lite/data/features/css-hyphenate.js
deleted file mode 100644
index ea00e60..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-hyphenate.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"16":"H D G E A B nB"},B:{"1":"q","16":"C K f L N I J"},C:{"16":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y"},E:{"16":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"16":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"16":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"16":"3B"},I:{"16":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"16":"D A"},K:{"16":"7 9 A B C M GB"},L:{"16":"q"},M:{"16":"8"},N:{"16":"A B"},O:{"16":"AC"},P:{"16":"F BC CC DC EC FC PB"},Q:{"16":"GC"},R:{"16":"HC"},S:{"16":"IC"}},B:5,C:"CSS4 Hyphenation"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-hyphens.js b/assets/node_modules/caniuse-lite/data/features/css-hyphens.js
deleted file mode 100644
index 234607f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-hyphens.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","33":"A B"},B:{"33":"C K f L N I J","132":"q"},C:{"1":"0 1 2 3 4 5 6 8 n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O eB dB","33":"H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y","132":"0 1 2 3 4 5 6 8 z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O WB RB","33":"7 9 H D G E A B C K YB ZB aB bB PB fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l gB hB iB jB GB lB","132":"0 1 2 3 4 5 6 m n o p M r s t u v w x y z"},G:{"2":"RB mB","33":"G CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","132":"QB"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"132":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"4":"AC"},P:{"1":"CC DC EC FC PB","2":"F","132":"BC"},Q:{"2":"GC"},R:{"132":"HC"},S:{"1":"IC"}},B:5,C:"CSS Hyphenation"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-image-orientation.js b/assets/node_modules/caniuse-lite/data/features/css-image-orientation.js
deleted file mode 100644
index ba74e1c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-image-orientation.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V eB dB"},D:{"1":"UB VB","2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"132":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:4,C:"CSS3 image-orientation"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-image-set.js b/assets/node_modules/caniuse-lite/data/features/css-image-set.js
deleted file mode 100644
index 4949747..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-image-set.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","33":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"F O H D G E A B C K f L N I J P Q","33":"0 1 2 3 4 5 6 8 R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O WB RB YB","33":"H D G E ZB aB bB","129":"7 9 A B C K PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","33":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"RB mB CB oB","33":"G pB qB rB SB tB","129":"uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB","33":"QB 8B 9B"},J:{"2":"D","33":"A"},K:{"2":"7 9 A B C GB","33":"M"},L:{"33":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"33":"AC"},P:{"33":"F BC CC DC EC FC PB"},Q:{"33":"GC"},R:{"33":"HC"},S:{"2":"IC"}},B:5,C:"CSS image-set"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-in-out-of-range.js b/assets/node_modules/caniuse-lite/data/features/css-in-out-of-range.js
deleted file mode 100644
index 65cc0ba..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-in-out-of-range.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C","260":"K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y eB dB","516":"Z a b c d e AB g h i j k l m n o p M r s t"},D:{"1":"0 1 2 3 4 5 6 8 x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F","16":"O H D G E A B C K f","260":"w","772":"L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v"},E:{"1":"7 9 B C K PB fB","2":"F WB RB","16":"O","772":"H D G E A YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 k l m n o p M r s t u v w x y z","16":"E gB","260":"7 9 B C j hB iB jB GB lB","772":"L N I J P Q R S T U V W X Y Z a b c d e AB g h i"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"RB mB CB","772":"G oB pB qB rB SB tB uB"},H:{"132":"3B"},I:{"1":"QB","2":"OB 4B 5B 6B","260":"F 7B CB 8B 9B"},J:{"2":"D","260":"A"},K:{"1":"M","260":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","260":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"516":"IC"}},B:5,C:":in-range and :out-of-range CSS pseudo-classes"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js b/assets/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js
deleted file mode 100644
index 1969d70..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","132":"A B","388":"E"},B:{"1":"q","132":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB","16":"kB OB eB dB","132":"H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u","388":"F O"},D:{"1":"0 1 2 3 4 5 6 8 j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f","132":"L N I J P Q R S T U V W X Y Z a b c d e AB g h i"},E:{"1":"7 9 B C K PB fB","16":"F O H WB RB","132":"D G E A ZB aB bB","388":"YB"},F:{"1":"0 1 2 3 4 5 6 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","16":"7 E B gB hB iB jB GB","132":"L N I J P Q R S T U V","516":"9 C lB"},G:{"1":"vB wB xB yB zB 0B 1B 2B","16":"RB mB CB oB pB","132":"G qB rB SB tB uB"},H:{"516":"3B"},I:{"1":"QB","16":"OB 4B 5B 6B 9B","132":"8B","388":"F 7B CB"},J:{"16":"D","132":"A"},K:{"1":"M","16":"7 A B C GB","516":"9"},L:{"1":"q"},M:{"132":"8"},N:{"132":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"132":"IC"}},B:7,C:":indeterminate CSS pseudo-class"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-initial-letter.js b/assets/node_modules/caniuse-lite/data/features/css-initial-letter.js
deleted file mode 100644
index c9f65bc..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-initial-letter.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O H D G WB RB YB ZB aB","4":"E","164":"7 9 A B C K bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB","164":"SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"CSS Initial Letter"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-initial-value.js b/assets/node_modules/caniuse-lite/data/features/css-initial-value.js
deleted file mode 100644
index 13b73b5..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-initial-value.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","33":"F O H D G E A B C K f L N I J eB dB","164":"kB OB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K RB YB ZB aB bB PB fB","16":"WB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB"},H:{"2":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS initial value"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-letter-spacing.js b/assets/node_modules/caniuse-lite/data/features/css-letter-spacing.js
deleted file mode 100644
index 36c4d12..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-letter-spacing.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","16":"nB","132":"H D G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","132":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","16":"WB","132":"F O H RB YB"},F:{"1":"0 1 2 3 4 5 6 I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","16":"E gB","132":"7 9 B C L N hB iB jB GB lB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","16":"4B 5B","132":"OB F 6B 7B CB"},J:{"132":"D A"},K:{"1":"M","132":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"letter-spacing CSS property"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-line-clamp.js b/assets/node_modules/caniuse-lite/data/features/css-line-clamp.js
deleted file mode 100644
index d0c5e92..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-line-clamp.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N","33":"q","129":"I J"},C:{"2":"0 1 2 3 4 5 6 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB eB dB","33":"8 HB IB JB KB LB MB"},D:{"16":"F O H D G E A B C K","33":"0 1 2 3 4 5 6 8 f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F WB RB","33":"7 9 O H D G E A B C K YB ZB aB bB PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","33":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"RB mB CB","33":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"16":"4B 5B","33":"OB F QB 6B 7B CB 8B 9B"},J:{"33":"D A"},K:{"2":"7 9 A B C GB","33":"M"},L:{"33":"q"},M:{"33":"8"},N:{"2":"A B"},O:{"33":"AC"},P:{"33":"F BC CC DC EC FC PB"},Q:{"33":"GC"},R:{"33":"HC"},S:{"2":"IC"}},B:7,C:"CSS line-clamp"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-logical-props.js b/assets/node_modules/caniuse-lite/data/features/css-logical-props.js
deleted file mode 100644
index 2a76fc1..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-logical-props.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB","164":"OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k eB dB"},D:{"1":"HB IB JB KB LB MB cB QB XB TB q sB UB VB","292":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB"},E:{"1":"9 K fB","292":"7 F O H D G E A B C WB RB YB ZB aB bB PB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","292":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"1":"zB 0B 1B 2B","292":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB"},H:{"2":"3B"},I:{"1":"QB","292":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"292":"D A"},K:{"2":"7 9 A B C GB","292":"M"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"292":"AC"},P:{"1":"PB","292":"F BC CC DC EC FC"},Q:{"292":"GC"},R:{"292":"HC"},S:{"1":"IC"}},B:5,C:"CSS Logical Properties"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-marker-pseudo.js b/assets/node_modules/caniuse-lite/data/features/css-marker-pseudo.js
deleted file mode 100644
index 988414d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-marker-pseudo.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"1":"8 HB IB JB KB LB MB","2":"0 1 2 3 4 5 6 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O H D G E A B WB RB YB ZB aB bB PB","129":"7 9 C K fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"CSS ::marker pseudo-element"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-masks.js b/assets/node_modules/caniuse-lite/data/features/css-masks.js
deleted file mode 100644
index 89374fc..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-masks.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N","164":"q","3138":"I","12292":"J"},C:{"1":"0 1 2 3 4 5 6 8 x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB","260":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w eB dB"},D:{"164":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"WB RB","164":"7 9 F O H D G E A B C K YB ZB aB bB PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","164":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"164":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"164":"QB 8B 9B","676":"OB F 4B 5B 6B 7B CB"},J:{"164":"D A"},K:{"2":"7 9 A B C GB","164":"M"},L:{"164":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"164":"AC"},P:{"164":"F BC CC DC EC FC PB"},Q:{"164":"GC"},R:{"164":"HC"},S:{"260":"IC"}},B:4,C:"CSS Masks"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-matches-pseudo.js b/assets/node_modules/caniuse-lite/data/features/css-matches-pseudo.js
deleted file mode 100644
index 6675ea9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-matches-pseudo.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","1348":"q"},C:{"16":"kB OB eB dB","548":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"16":"F O H D G E A B C K f","164":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB","1348":"8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F WB RB","16":"O","164":"H D G YB ZB aB","257":"7 9 E A B C K bB PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","164":"L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v","1220":"0 1 2 3 4 5 6 w x y z"},G:{"16":"RB mB CB oB pB","164":"G qB rB","257":"SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"16":"OB 4B 5B 6B","164":"F QB 7B CB 8B 9B"},J:{"16":"D","164":"A"},K:{"2":"7 9 A B C GB","164":"M"},L:{"1220":"q"},M:{"548":"8"},N:{"2":"A B"},O:{"164":"AC"},P:{"164":"F BC CC DC EC FC PB"},Q:{"164":"GC"},R:{"164":"HC"},S:{"548":"IC"}},B:5,C:":matches() CSS pseudo-class"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-math-functions.js b/assets/node_modules/caniuse-lite/data/features/css-math-functions.js
deleted file mode 100644
index 2d8d38c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-math-functions.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"q sB UB VB","2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB"},E:{"1":"fB","2":"F O H D G E A B WB RB YB ZB aB bB PB","132":"7 9 C K"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB","132":"xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"CSS math functions min(), max() and clamp()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-media-interaction.js b/assets/node_modules/caniuse-lite/data/features/css-media-interaction.js
deleted file mode 100644
index 5c59c80..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-media-interaction.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"6 8 DB BB FB HB IB JB KB LB MB","2":"0 1 2 3 4 5 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D G WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X gB hB iB jB GB lB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:5,C:"Media Queries: interaction media features"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-media-resolution.js b/assets/node_modules/caniuse-lite/data/features/css-media-resolution.js
deleted file mode 100644
index 979d877..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-media-resolution.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","132":"E A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB","260":"F O H D G E A B C K f L eB dB"},D:{"1":"0 1 2 3 4 5 6 8 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","548":"F O H D G E A B C K f L N I J P Q R S T U V W X Y"},E:{"2":"WB RB","548":"7 9 F O H D G E A B C K YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 9 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"E","548":"7 B C gB hB iB jB GB lB"},G:{"16":"RB","548":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"132":"3B"},I:{"1":"QB 8B 9B","16":"4B 5B","548":"OB F 6B 7B CB"},J:{"548":"D A"},K:{"1":"9 M","548":"7 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"132":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"Media Queries: resolution feature"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-media-scripting.js b/assets/node_modules/caniuse-lite/data/features/css-media-scripting.js
deleted file mode 100644
index 809e3c7..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-media-scripting.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"16":"C K f L N I J q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v eB dB","16":"0 1 2 3 4 5 6 8 w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q","16":"sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"Media Queries: scripting media feature"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-mediaqueries.js b/assets/node_modules/caniuse-lite/data/features/css-mediaqueries.js
deleted file mode 100644
index af75317..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-mediaqueries.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"8":"H D G nB","129":"E A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB OB"},D:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","129":"F O H D G E A B C K f L N I J P Q R S T U V"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","129":"F O H YB","388":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","2":"E"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","129":"RB mB CB oB pB"},H:{"1":"3B"},I:{"1":"QB 8B 9B","129":"OB F 4B 5B 6B 7B CB"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"129":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"CSS3 Media Queries"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-mixblendmode.js b/assets/node_modules/caniuse-lite/data/features/css-mixblendmode.js
deleted file mode 100644
index c9b61ed..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-mixblendmode.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b eB dB"},D:{"1":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y","194":"Z a b c d e AB g h i j k"},E:{"2":"F O H D WB RB YB ZB","260":"7 9 G E A B C K aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y gB hB iB jB GB lB"},G:{"2":"RB mB CB oB pB qB","260":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"Blending of HTML/SVG elements"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-motion-paths.js b/assets/node_modules/caniuse-lite/data/features/css-motion-paths.js
deleted file mode 100644
index e4bb807..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-motion-paths.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"KB LB MB","2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m","194":"n o p"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z gB hB iB jB GB lB","194":"a b c"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:5,C:"CSS Motion Path"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-namespaces.js b/assets/node_modules/caniuse-lite/data/features/css-namespaces.js
deleted file mode 100644
index 495b18e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-namespaces.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","16":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"CSS namespaces"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-not-sel-list.js b/assets/node_modules/caniuse-lite/data/features/css-not-sel-list.js
deleted file mode 100644
index 90ee835..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-not-sel-list.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","16":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB eB dB","16":"LB MB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q","16":"sB UB VB"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D G WB RB YB ZB aB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"selector list argument of :not()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-nth-child-of.js b/assets/node_modules/caniuse-lite/data/features/css-nth-child-of.js
deleted file mode 100644
index 77b231c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-nth-child-of.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D G WB RB YB ZB aB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"selector list argument of :nth-child and :nth-last-child CSS pseudo-classes"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-opacity.js b/assets/node_modules/caniuse-lite/data/features/css-opacity.js
deleted file mode 100644
index 120f931..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-opacity.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","4":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"CSS3 Opacity"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-optional-pseudo.js b/assets/node_modules/caniuse-lite/data/features/css-optional-pseudo.js
deleted file mode 100644
index 02d6178..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-optional-pseudo.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","16":"E gB","132":"7 9 B C hB iB jB GB lB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"132":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"M","132":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:7,C:":optional CSS pseudo-class"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-overflow-anchor.js b/assets/node_modules/caniuse-lite/data/features/css-overflow-anchor.js
deleted file mode 100644
index adca33e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-overflow-anchor.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"8 BB FB HB IB JB KB LB MB","2":"0 1 2 3 4 5 6 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:5,C:"CSS overflow-anchor (Scroll Anchoring)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-overflow.js b/assets/node_modules/caniuse-lite/data/features/css-overflow.js
deleted file mode 100644
index 6541273..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-overflow.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"388":"H D G E A B nB"},B:{"260":"q","388":"C K f L N I J"},C:{"260":"4 5 6 8 NB DB BB FB HB IB JB KB LB MB","388":"0 1 2 3 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB eB dB"},D:{"260":"8 HB IB JB KB LB MB cB QB XB TB q sB UB VB","388":"0 1 2 3 4 5 6 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB"},E:{"388":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"260":"0 1 2 3 4 5 6 z","388":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y gB hB iB jB GB lB"},G:{"388":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"388":"3B"},I:{"388":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"388":"D A"},K:{"388":"7 9 A B C M GB"},L:{"260":"q"},M:{"260":"8"},N:{"388":"A B"},O:{"388":"AC"},P:{"388":"F BC CC DC EC FC PB"},Q:{"388":"GC"},R:{"388":"HC"},S:{"388":"IC"}},B:5,C:"CSS overflow property"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js b/assets/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js
deleted file mode 100644
index 4042fe0..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","132":"A B"},B:{"1":"q","132":"C K f L N I","516":"J"},C:{"1":"3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB","2":"0 1 2 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z eB dB"},D:{"1":"8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB","260":"5 6"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t gB hB iB jB GB lB","260":"u v"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"132":"A B"},O:{"2":"AC"},P:{"1":"EC FC PB","2":"F BC CC DC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"CSS overscroll-behavior"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-page-break.js b/assets/node_modules/caniuse-lite/data/features/css-page-break.js
deleted file mode 100644
index 2703c73..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-page-break.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"388":"A B","900":"H D G E nB"},B:{"388":"C K f L N I J","900":"q"},C:{"772":"8 DB BB FB HB IB JB KB LB MB","900":"0 1 2 3 4 5 6 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB eB dB"},D:{"900":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"772":"A","900":"7 9 F O H D G E B C K WB RB YB ZB aB bB PB fB"},F:{"16":"E gB","129":"7 9 B C hB iB jB GB lB","900":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"900":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"129":"3B"},I:{"900":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"900":"D A"},K:{"129":"7 9 A B C GB","900":"M"},L:{"900":"q"},M:{"900":"8"},N:{"388":"A B"},O:{"900":"AC"},P:{"900":"F BC CC DC EC FC PB"},Q:{"900":"GC"},R:{"900":"HC"},S:{"900":"IC"}},B:2,C:"CSS page-break properties"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-paged-media.js b/assets/node_modules/caniuse-lite/data/features/css-paged-media.js
deleted file mode 100644
index 22bc1a9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-paged-media.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D nB","132":"G E A B"},B:{"1":"q","132":"C K f L N I J"},C:{"2":"kB OB F O H D G E A B C K f L N I J eB dB","132":"0 1 2 3 4 5 6 8 P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","132":"7 9 E B C gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"16":"3B"},I:{"16":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"16":"D A"},K:{"16":"7 9 A B C GB","258":"M"},L:{"1":"q"},M:{"132":"8"},N:{"258":"A B"},O:{"258":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"132":"IC"}},B:5,C:"CSS Paged Media (@page)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-paint-api.js b/assets/node_modules/caniuse-lite/data/features/css-paint-api.js
deleted file mode 100644
index b0309e3..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-paint-api.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB"},E:{"2":"7 F O H D G E A B C WB RB YB ZB aB bB PB","194":"9 K fB"},F:{"1":"0 1 2 3 4 5 6 w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"CSS Paint API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-placeholder-shown.js b/assets/node_modules/caniuse-lite/data/features/css-placeholder-shown.js
deleted file mode 100644
index 581fc5c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-placeholder-shown.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","292":"A B"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","164":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u"},D:{"1":"0 1 2 3 4 5 6 8 r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D G WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d gB hB iB jB GB lB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"164":"IC"}},B:5,C:":placeholder-shown CSS pseudo-class"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-placeholder.js b/assets/node_modules/caniuse-lite/data/features/css-placeholder.js
deleted file mode 100644
index a0b3232..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-placeholder.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","36":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J eB dB","33":"P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u"},D:{"1":"1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","36":"0 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},E:{"1":"7 9 B C K PB fB","2":"F WB RB","36":"O H D G E A YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","36":"L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"RB mB","36":"G CB oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"1":"QB","36":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"36":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"36":"A B"},O:{"1":"AC"},P:{"1":"DC EC FC PB","36":"F BC CC"},Q:{"36":"GC"},R:{"1":"HC"},S:{"33":"IC"}},B:5,C:"::placeholder CSS pseudo-element"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-read-only-write.js b/assets/node_modules/caniuse-lite/data/features/css-read-only-write.js
deleted file mode 100644
index f92edac..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-read-only-write.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"K f L N I J q","2":"C"},C:{"16":"kB","33":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f","132":"L N I J P Q R S T U V W X Y Z a b c d e AB"},E:{"1":"7 9 E A B C K bB PB fB","16":"WB RB","132":"F O H D G YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","16":"7 E B gB hB iB jB","132":"9 C L N I J P Q R S GB lB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB","132":"G CB oB pB qB rB"},H:{"2":"3B"},I:{"1":"QB","16":"4B 5B","132":"OB F 6B 7B CB 8B 9B"},J:{"1":"A","132":"D"},K:{"1":"M","2":"7 A B","132":"9 C GB"},L:{"1":"q"},M:{"33":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"33":"IC"}},B:1,C:"CSS :read-only and :read-write selectors"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-rebeccapurple.js b/assets/node_modules/caniuse-lite/data/features/css-rebeccapurple.js
deleted file mode 100644
index 3f21047..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-rebeccapurple.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","132":"B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c eB dB"},D:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h"},E:{"1":"7 9 D G E A B C K aB bB PB fB","2":"F O H WB RB YB","16":"ZB"},F:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U gB hB iB jB GB lB"},G:{"1":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB qB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"Rebeccapurple color"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-reflections.js b/assets/node_modules/caniuse-lite/data/features/css-reflections.js
deleted file mode 100644
index e9f2e45..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-reflections.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","33":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"33":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"WB RB","33":"7 9 F O H D G E A B C K YB ZB aB bB PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","33":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"33":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"33":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"33":"D A"},K:{"2":"7 9 A B C GB","33":"M"},L:{"33":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"33":"F BC CC DC EC FC PB"},Q:{"33":"GC"},R:{"33":"HC"},S:{"2":"IC"}},B:7,C:"CSS Reflections"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-regions.js b/assets/node_modules/caniuse-lite/data/features/css-regions.js
deleted file mode 100644
index 3daea64..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-regions.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","420":"A B"},B:{"2":"q","420":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","36":"L N I J","66":"P Q R S T U V W X Y Z a b c d e"},E:{"2":"7 9 F O H C K WB RB YB fB","33":"D G E A B ZB aB bB PB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"RB mB CB oB pB xB yB zB 0B 1B 2B","33":"G qB rB SB tB uB vB wB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"420":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"CSS Regions"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-repeating-gradients.js b/assets/node_modules/caniuse-lite/data/features/css-repeating-gradients.js
deleted file mode 100644
index 3d13dff..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-repeating-gradients.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB","33":"F O H D G E A B C K f L dB"},D:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E","33":"A B C K f L N I J P Q R S T U V"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","2":"F O WB RB","33":"H YB"},F:{"1":"0 1 2 3 4 5 6 9 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"E B gB hB iB jB","33":"C lB","36":"7 GB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB","33":"oB pB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB 4B 5B 6B","33":"F 7B CB"},J:{"1":"A","2":"D"},K:{"1":"9 M","2":"A B","33":"C","36":"7 GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS Repeating Gradients"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-resize.js b/assets/node_modules/caniuse-lite/data/features/css-resize.js
deleted file mode 100644
index eb054f3..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-resize.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","33":"F"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","2":"WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B C gB hB iB jB GB lB","132":"9"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:4,C:"CSS resize property"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-revert-value.js b/assets/node_modules/caniuse-lite/data/features/css-revert-value.js
deleted file mode 100644
index 0a5308d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-revert-value.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"1":"8 FB HB IB JB KB LB MB","2":"0 1 2 3 4 5 6 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 A B C K bB PB fB","2":"F O H D G E WB RB YB ZB aB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"CSS revert value"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-rrggbbaa.js b/assets/node_modules/caniuse-lite/data/features/css-rrggbbaa.js
deleted file mode 100644
index 6ee9eb4..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-rrggbbaa.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s eB dB"},D:{"1":"4 5 6 8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v","194":"0 1 2 3 w x y z EB NB"},E:{"1":"7 9 A B C K PB fB","2":"F O H D G E WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i gB hB iB jB GB lB","194":"j k l m n o p M r s t u v"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"EC FC PB","2":"F","194":"BC CC DC"},Q:{"194":"GC"},R:{"194":"HC"},S:{"2":"IC"}},B:7,C:"#rrggbbaa hex color notation"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-scroll-behavior.js b/assets/node_modules/caniuse-lite/data/features/css-scroll-behavior.js
deleted file mode 100644
index 6a644ff..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-scroll-behavior.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","129":"q"},C:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB eB dB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k","129":"4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","450":"0 1 2 3 l m n o p M r s t u v w x y z EB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X gB hB iB jB GB lB","129":"0 1 2 3 4 5 6 s t u v w x y z","450":"Y Z a b c d e AB g h i j k l m n o p M r"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"129":"AC"},P:{"1":"EC FC PB","2":"F BC CC DC"},Q:{"450":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"CSSOM Scroll-behavior"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-scrollbar.js b/assets/node_modules/caniuse-lite/data/features/css-scrollbar.js
deleted file mode 100644
index 8a86899..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-scrollbar.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"132":"H D G E A B nB"},B:{"2":"C K f L N I J","292":"q"},C:{"2":"0 1 2 3 4 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB eB dB","3074":"5","4100":"6 8 DB BB FB HB IB JB KB LB MB"},D:{"292":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"16":"F O WB RB","292":"7 9 H D G E A B C K YB ZB aB bB PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","292":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"16":"RB mB CB oB pB","292":"qB","804":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"16":"4B 5B","292":"OB F QB 6B 7B CB 8B 9B"},J:{"292":"D A"},K:{"2":"7 9 A B C GB","292":"M"},L:{"292":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"292":"AC"},P:{"292":"F BC CC DC EC FC PB"},Q:{"292":"GC"},R:{"292":"HC"},S:{"2":"IC"}},B:7,C:"CSS scrollbar styling"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-sel2.js b/assets/node_modules/caniuse-lite/data/features/css-sel2.js
deleted file mode 100644
index 293894e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-sel2.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"D G E A B","2":"nB","8":"H"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"CSS 2.1 selectors"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-sel3.js b/assets/node_modules/caniuse-lite/data/features/css-sel3.js
deleted file mode 100644
index 7af928a..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-sel3.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"nB","8":"H","132":"D G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB OB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K RB YB ZB aB bB PB fB","2":"WB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","2":"E"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"CSS3 selectors"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-selection.js b/assets/node_modules/caniuse-lite/data/features/css-selection.js
deleted file mode 100644
index 5aa92d2..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-selection.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"4 5 6 8 DB BB FB HB IB JB KB LB MB","33":"0 1 2 3 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","2":"E"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"9 C M GB","16":"7 A B"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"33":"IC"}},B:5,C:"::selection CSS pseudo-element"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-shapes.js b/assets/node_modules/caniuse-lite/data/features/css-shapes.js
deleted file mode 100644
index a07cc42..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-shapes.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"4 5 6 8 DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u eB dB","322":"0 1 2 3 v w x y z EB NB"},D:{"1":"0 1 2 3 4 5 6 8 h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d","194":"e AB g"},E:{"1":"7 9 B C K PB fB","2":"F O H D WB RB YB ZB","33":"G E A aB bB"},F:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T gB hB iB jB GB lB"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB qB","33":"G rB SB tB uB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:4,C:"CSS Shapes Level 1"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-snappoints.js b/assets/node_modules/caniuse-lite/data/features/css-snappoints.js
deleted file mode 100644
index 1695edd..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-snappoints.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","6308":"A","6436":"B"},B:{"1":"q","6436":"C K f L N I J"},C:{"1":"8 HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i eB dB","2052":"0 1 2 3 4 5 6 j k l m n o p M r s t u v w x y z EB NB DB BB FB"},D:{"1":"HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB","8258":"8 BB FB"},E:{"1":"7 9 B C K fB","2":"F O H D G WB RB YB ZB aB","3108":"E A bB PB"},F:{"1":"6","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x gB hB iB jB GB lB","8258":"0 1 2 3 4 5 y z"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB","3108":"SB tB uB vB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2052":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"PB","2":"F BC CC DC EC FC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2052":"IC"}},B:4,C:"CSS Scroll Snap"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-sticky.js b/assets/node_modules/caniuse-lite/data/features/css-sticky.js
deleted file mode 100644
index 616e768..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-sticky.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L","1028":"q","4100":"N I J"},C:{"1":"3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V eB dB","194":"W X Y Z a b","516":"0 1 2 c d e AB g h i j k l m n o p M r s t u v w x y z"},D:{"2":"F O H D G E A B C K f L N I J P Q R S h i j k l m n o p M r s t u v","322":"T U V W X Y Z a b c d e AB g w x y z","1028":"0 1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O H WB RB YB","33":"7 9 G E A B C K aB bB PB fB","2084":"D ZB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i gB hB iB jB GB lB","322":"j k l","1028":"0 1 2 3 4 5 6 m n o p M r s t u v w x y z"},G:{"2":"RB mB CB oB","33":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","2084":"pB qB"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","1028":"QB"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","1028":"M"},L:{"1028":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1028":"AC"},P:{"1":"CC DC EC FC PB","2":"F BC"},Q:{"322":"GC"},R:{"2":"HC"},S:{"516":"IC"}},B:5,C:"CSS position:sticky"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-subgrid.js b/assets/node_modules/caniuse-lite/data/features/css-subgrid.js
deleted file mode 100644
index 8a0bb6a..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-subgrid.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"1":"JB KB LB MB","2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"CSS Subgrid"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-supports-api.js b/assets/node_modules/caniuse-lite/data/features/css-supports-api.js
deleted file mode 100644
index bb911f5..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-supports-api.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","260":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P eB dB","66":"Q R","260":"S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y"},D:{"1":"4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X","260":"0 1 2 3 Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D G WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B C gB hB iB jB GB lB","132":"9"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"132":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"2":"D A"},K:{"1":"M","2":"7 A B C GB","132":"9"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS.supports() API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-table.js b/assets/node_modules/caniuse-lite/data/features/css-table.js
deleted file mode 100644
index fb5c732..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-table.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"G E A B","2":"H D nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","132":"kB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"CSS Table display"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-text-align-last.js b/assets/node_modules/caniuse-lite/data/features/css-text-align-last.js
deleted file mode 100644
index e7b19fd..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-text-align-last.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"132":"H D G E A B nB"},B:{"1":"q","4":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B eB dB","33":"C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s"},D:{"1":"0 1 2 3 4 5 6 8 r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e","322":"AB g h i j k l m n o p M"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R gB hB iB jB GB lB","578":"S T U V W X Y Z a b c d"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"132":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"33":"IC"}},B:5,C:"CSS3 text-align-last"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-text-indent.js b/assets/node_modules/caniuse-lite/data/features/css-text-indent.js
deleted file mode 100644
index 20d5976..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-text-indent.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"132":"H D G E A B nB"},B:{"132":"C K f L N I J","388":"q"},C:{"132":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"132":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h","388":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"132":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"132":"7 9 E B C L N I J P Q R S T U gB hB iB jB GB lB","388":"0 1 2 3 4 5 6 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"132":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"132":"3B"},I:{"132":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"132":"D A"},K:{"132":"7 9 A B C GB","388":"M"},L:{"388":"q"},M:{"132":"8"},N:{"132":"A B"},O:{"132":"AC"},P:{"132":"F","388":"BC CC DC EC FC PB"},Q:{"388":"GC"},R:{"388":"HC"},S:{"132":"IC"}},B:5,C:"CSS text-indent"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-text-justify.js b/assets/node_modules/caniuse-lite/data/features/css-text-justify.js
deleted file mode 100644
index e76dfcf..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-text-justify.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"16":"H D nB","132":"G E A B"},B:{"132":"C K f L N I J","322":"q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x eB dB","1025":"0 1 2 3 4 5 6 8 z EB NB DB BB FB HB IB JB KB LB MB","1602":"y"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m","322":"0 1 2 3 4 5 6 8 n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z gB hB iB jB GB lB","322":"0 1 2 3 4 5 6 a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","322":"QB"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","322":"M"},L:{"322":"q"},M:{"1025":"8"},N:{"132":"A B"},O:{"2":"AC"},P:{"2":"F","322":"BC CC DC EC FC PB"},Q:{"322":"GC"},R:{"322":"HC"},S:{"2":"IC"}},B:5,C:"CSS text-justify"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-text-orientation.js b/assets/node_modules/caniuse-lite/data/features/css-text-orientation.js
deleted file mode 100644
index 3ec2225..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-text-orientation.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h eB dB","194":"i j k"},D:{"1":"0 1 2 3 4 5 6 8 s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r"},E:{"2":"F O H D G E WB RB YB ZB aB bB","16":"A","33":"7 9 B C K PB fB"},F:{"1":"0 1 2 3 4 5 6 AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e gB hB iB jB GB lB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS text-orientation"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-text-spacing.js b/assets/node_modules/caniuse-lite/data/features/css-text-spacing.js
deleted file mode 100644
index 376bfff..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-text-spacing.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D nB","161":"G E A B"},B:{"2":"q","161":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"16":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"CSS Text 4 text-spacing"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-textshadow.js b/assets/node_modules/caniuse-lite/data/features/css-textshadow.js
deleted file mode 100644
index ecd6284..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-textshadow.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","129":"A B"},B:{"1":"q","129":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB OB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","260":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","2":"E"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"4":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"A","4":"D"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"129":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS3 Text-shadow"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-touch-action-2.js b/assets/node_modules/caniuse-lite/data/features/css-touch-action-2.js
deleted file mode 100644
index bd7b9b4..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-touch-action-2.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","132":"B","164":"A"},B:{"1":"q","132":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y","260":"z"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l gB hB iB jB GB lB","260":"m"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"132":"B","164":"A"},O:{"2":"AC"},P:{"1":"BC CC DC EC FC PB","16":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:5,C:"CSS touch-action level 2 values"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-touch-action.js b/assets/node_modules/caniuse-lite/data/features/css-touch-action.js
deleted file mode 100644
index 70c1bfc..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-touch-action.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G E nB","289":"A"},B:{"1":"C K f L N I J q"},C:{"1":"1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y eB dB","194":"Z a b c d e AB g h i j k l m n o p M r s t u v","1025":"0 w x y z"},D:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S gB hB iB jB GB lB"},G:{"1":"0B 1B 2B","2":"G RB mB CB oB pB qB rB SB","516":"tB uB vB wB xB yB zB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","289":"A"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"194":"IC"}},B:2,C:"CSS touch-action property"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-transitions.js b/assets/node_modules/caniuse-lite/data/features/css-transitions.js
deleted file mode 100644
index c401771..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-transitions.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","33":"O H D G E A B C K f L","164":"F"},D:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","33":"F O H D G E A B C K f L N I J P Q R S T U V"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","33":"H YB","164":"F O WB RB"},F:{"1":"0 1 2 3 4 5 6 9 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"E gB hB","33":"C","164":"7 B iB jB GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","33":"pB","164":"RB mB CB oB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","33":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","33":"D"},K:{"1":"9 M","33":"C","164":"7 A B GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"CSS3 Transitions"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-unicode-bidi.js b/assets/node_modules/caniuse-lite/data/features/css-unicode-bidi.js
deleted file mode 100644
index 83ef2bd..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-unicode-bidi.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"132":"H D G E A B nB"},B:{"1":"q","132":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 u v w x y z EB NB DB BB FB HB IB JB KB LB MB","33":"I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t","132":"kB OB F O H D G E eB dB","292":"A B C K f L N"},D:{"1":"0 1 2 3 4 5 6 8 s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","132":"F O H D G E A B C K f L N","548":"I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r"},E:{"132":"F O H D G WB RB YB ZB aB","548":"7 9 E A B C K bB PB fB"},F:{"132":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"132":"G RB mB CB oB pB qB rB","548":"SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"16":"3B"},I:{"1":"QB","16":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"16":"D A"},K:{"16":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"132":"A B"},O:{"16":"AC"},P:{"1":"BC CC DC EC FC PB","16":"F"},Q:{"16":"GC"},R:{"16":"HC"},S:{"33":"IC"}},B:4,C:"CSS unicode-bidi property"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-unset-value.js b/assets/node_modules/caniuse-lite/data/features/css-unset-value.js
deleted file mode 100644
index 0586dff..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-unset-value.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"K f L N I J q","2":"C"},C:{"1":"0 1 2 3 4 5 6 8 X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W eB dB"},D:{"1":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k"},E:{"1":"7 9 A B C K bB PB fB","2":"F O H D G E WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X gB hB iB jB GB lB"},G:{"1":"tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS unset value"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-variables.js b/assets/node_modules/caniuse-lite/data/features/css-variables.js
deleted file mode 100644
index 83ee6d5..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-variables.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"N I J q","2":"C K f","260":"L"},C:{"1":"0 1 2 3 4 5 6 8 b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a eB dB"},D:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r","194":"s"},E:{"1":"7 9 A B C K bB PB fB","2":"F O H D G E WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e gB hB iB jB GB lB","194":"AB"},G:{"1":"tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:4,C:"CSS Variables (Custom Properties)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-widows-orphans.js b/assets/node_modules/caniuse-lite/data/features/css-widows-orphans.js
deleted file mode 100644
index 2c4e106..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-widows-orphans.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D nB","129":"G E"},B:{"1":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U"},E:{"1":"7 9 D G E A B C K aB bB PB fB","2":"F O H WB RB YB ZB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","129":"7 E B gB hB iB jB GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB"},H:{"1":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"2":"D A"},K:{"1":"9 M","2":"7 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:2,C:"CSS widows & orphans"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-writing-mode.js b/assets/node_modules/caniuse-lite/data/features/css-writing-mode.js
deleted file mode 100644
index 31bfa35..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-writing-mode.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"132":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB eB dB","322":"g h i j k"},D:{"1":"0 1 2 3 4 5 6 8 s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H","16":"D","33":"G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r"},E:{"1":"7 9 B C K fB","2":"F WB RB","16":"O","33":"H D G E A YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","33":"L N I J P Q R S T U V W X Y Z a b c d e"},G:{"1":"wB xB yB zB 0B 1B 2B","16":"RB mB CB","33":"G oB pB qB rB SB tB uB vB"},H:{"2":"3B"},I:{"1":"QB","2":"4B 5B 6B","33":"OB F 7B CB 8B 9B"},J:{"33":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"36":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","33":"F"},Q:{"33":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS writing-mode property"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css-zoom.js b/assets/node_modules/caniuse-lite/data/features/css-zoom.js
deleted file mode 100644
index c086a2b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css-zoom.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D nB","129":"G E A B"},B:{"1":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","2":"WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB"},H:{"2":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"129":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:7,C:"CSS zoom"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css3-attr.js b/assets/node_modules/caniuse-lite/data/features/css3-attr.js
deleted file mode 100644
index d8e395e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css3-attr.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:4,C:"CSS3 attr() function for all properties"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css3-boxsizing.js b/assets/node_modules/caniuse-lite/data/features/css3-boxsizing.js
deleted file mode 100644
index d289174..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css3-boxsizing.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"G E A B","8":"H D nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","33":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y eB dB"},D:{"1":"0 1 2 3 4 5 6 8 A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","33":"F O H D G E"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","33":"F O WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","2":"E"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","33":"RB mB CB"},H:{"1":"3B"},I:{"1":"F QB 7B CB 8B 9B","33":"OB 4B 5B 6B"},J:{"1":"A","33":"D"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"CSS3 Box-sizing"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css3-colors.js b/assets/node_modules/caniuse-lite/data/features/css3-colors.js
deleted file mode 100644
index 2ae5b85..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css3-colors.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","4":"kB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z hB iB jB GB lB","2":"E","4":"gB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"CSS3 Colors"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css3-cursors-grab.js b/assets/node_modules/caniuse-lite/data/features/css3-cursors-grab.js
deleted file mode 100644
index efd6ad6..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css3-cursors-grab.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"L N I J q","2":"C K f"},C:{"1":"0 1 2 3 4 5 6 8 X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","33":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W eB dB"},D:{"1":"8 HB IB JB KB LB MB cB QB XB TB q sB UB VB","33":"0 1 2 3 4 5 6 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB"},E:{"1":"7 9 B C K fB","33":"F O H D G E A WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 9 C z lB","2":"7 E B gB hB iB jB GB","33":"L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"33":"D A"},K:{"2":"7 9 A B C GB","33":"M"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"33":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:3,C:"CSS grab & grabbing cursors"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css3-cursors-newer.js b/assets/node_modules/caniuse-lite/data/features/css3-cursors-newer.js
deleted file mode 100644
index 2dc1355..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css3-cursors-newer.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","33":"kB OB F O H D G E A B C K f L N I J P Q R S T eB dB"},D:{"1":"0 1 2 3 4 5 6 8 h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","33":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g"},E:{"1":"7 9 E A B C K bB PB fB","33":"F O H D G WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 9 C U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","2":"7 E B gB hB iB jB GB","33":"L N I J P Q R S T"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"33":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:4,C:"CSS3 Cursors: zoom-in & zoom-out"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css3-cursors.js b/assets/node_modules/caniuse-lite/data/features/css3-cursors.js
deleted file mode 100644
index 196b3ad..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css3-cursors.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","132":"H D G nB"},B:{"1":"f L N I J q","260":"C K"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","4":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","4":"F"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","4":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","260":"7 9 E B C gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D","16":"A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:4,C:"CSS3 Cursors (original values)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/css3-tabsize.js b/assets/node_modules/caniuse-lite/data/features/css3-tabsize.js
deleted file mode 100644
index 72f2b4f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/css3-tabsize.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"kB OB eB dB","33":"0 1 2 3 4 5 6 8 x y z EB NB DB BB FB HB IB JB KB LB MB","164":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w"},D:{"1":"0 1 2 3 4 5 6 8 m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q","132":"R S T U V W X Y Z a b c d e AB g h i j k l"},E:{"1":"fB","2":"F O H WB RB YB","132":"7 9 D G E A B C K ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"E gB hB iB","132":"L N I J P Q R S T U V W X Y","164":"7 9 B C jB GB lB"},G:{"2":"RB mB CB oB pB","132":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"164":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB","132":"8B 9B"},J:{"132":"D A"},K:{"1":"M","2":"A","164":"7 9 B C GB"},L:{"1":"q"},M:{"33":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"164":"IC"}},B:5,C:"CSS3 tab-size"};
diff --git a/assets/node_modules/caniuse-lite/data/features/currentcolor.js b/assets/node_modules/caniuse-lite/data/features/currentcolor.js
deleted file mode 100644
index 14654c3..0000000
--- a/assets/node_modules/caniuse-lite/data/features/currentcolor.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","2":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","2":"E"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"CSS currentColor value"};
diff --git a/assets/node_modules/caniuse-lite/data/features/custom-elements.js b/assets/node_modules/caniuse-lite/data/features/custom-elements.js
deleted file mode 100644
index 446f154..0000000
--- a/assets/node_modules/caniuse-lite/data/features/custom-elements.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","8":"A B"},B:{"1":"q","8":"C K f L N I J"},C:{"2":"3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S EB NB DB BB FB HB IB JB KB LB MB eB dB","66":"T U V W X Y Z","72":"0 1 2 a b c d e AB g h i j k l m n o p M r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 8 d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q","2":"F O H D G E A B C K f L N I J P Q R S T U V W sB UB VB","66":"X Y Z a b c"},E:{"2":"F O WB RB YB","8":"7 9 H D G E A B C K ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","66":"L N I J P"},G:{"2":"RB mB CB oB pB","8":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"9B","2":"OB F QB 4B 5B 6B 7B CB 8B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"72":"IC"}},B:7,C:"Custom Elements (deprecated V0 spec)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/custom-elementsv1.js b/assets/node_modules/caniuse-lite/data/features/custom-elementsv1.js
deleted file mode 100644
index c89dd32..0000000
--- a/assets/node_modules/caniuse-lite/data/features/custom-elementsv1.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","8":"A B"},B:{"1":"q","8":"C K f L N I J"},C:{"1":"5 6 8 DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z eB dB","8":"a b c d e AB g h i j k l m n o p M r s t","456":"0 1 2 u v w x y z","712":"3 4 EB NB"},D:{"1":"8 FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v","8":"w x","132":"0 1 2 3 4 5 6 y z EB NB DB BB"},E:{"2":"F O H D WB RB YB ZB aB","8":"G E A bB","132":"7 9 B C K PB fB"},F:{"1":"6","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k gB hB iB jB GB lB","132":"0 1 2 3 4 5 l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB","132":"vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","132":"M"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"CC DC EC FC PB","2":"F","132":"BC"},Q:{"8":"GC"},R:{"132":"HC"},S:{"8":"IC"}},B:1,C:"Custom Elements (V1)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/customevent.js b/assets/node_modules/caniuse-lite/data/features/customevent.js
deleted file mode 100644
index 0816937..0000000
--- a/assets/node_modules/caniuse-lite/data/features/customevent.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","132":"E A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O eB dB","132":"H D G E A"},D:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F","16":"O H D G K f","388":"E A B C"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","2":"F WB RB","16":"O H","388":"YB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","2":"E gB hB iB jB","132":"7 B GB"},G:{"1":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"mB","16":"RB CB","388":"oB"},H:{"1":"3B"},I:{"1":"QB 8B 9B","2":"4B 5B 6B","388":"OB F 7B CB"},J:{"1":"A","388":"D"},K:{"1":"9 C M","2":"A","132":"7 B GB"},L:{"1":"q"},M:{"1":"8"},N:{"132":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"CustomEvent"};
diff --git a/assets/node_modules/caniuse-lite/data/features/datalist.js b/assets/node_modules/caniuse-lite/data/features/datalist.js
deleted file mode 100644
index 89a423a..0000000
--- a/assets/node_modules/caniuse-lite/data/features/datalist.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"nB","8":"H D G E","260":"A B"},B:{"1":"q","260":"C K f L","1284":"N I J"},C:{"8":"kB OB eB dB","516":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"HB IB JB KB LB MB cB QB XB TB q sB UB VB","8":"F O H D G E A B C K f L N I J P","132":"0 1 2 3 4 5 6 8 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB"},E:{"1":"9 K fB","8":"7 F O H D G E A B C WB RB YB ZB aB bB PB"},F:{"1":"6 7 9 E B C gB hB iB jB GB lB","132":"0 1 2 3 4 5 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"8":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB","2049":"zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"9B","8":"OB F 4B 5B 6B 7B CB 8B","132":"QB"},J:{"1":"A","8":"D"},K:{"1":"7 9 A B C GB","8":"M"},L:{"1":"q"},M:{"516":"8"},N:{"8":"A B"},O:{"8":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:1,C:"Datalist element"};
diff --git a/assets/node_modules/caniuse-lite/data/features/dataset.js b/assets/node_modules/caniuse-lite/data/features/dataset.js
deleted file mode 100644
index 66dd1b8..0000000
--- a/assets/node_modules/caniuse-lite/data/features/dataset.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","4":"H D G E A nB"},B:{"1":"C K f L N","129":"I J q"},C:{"1":"H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u","4":"kB OB F O eB dB","129":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"p M r s t u v w x y","4":"F O H","129":"0 1 2 3 4 5 6 8 D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"4":"F O WB RB","129":"7 9 H D G E A B C K YB ZB aB bB PB fB"},F:{"1":"7 9 C c d e AB g h i j k l GB lB","4":"E B gB hB iB jB","129":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b m n o p M r s t u v w x y z"},G:{"4":"RB mB CB","129":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"4":"3B"},I:{"4":"4B 5B 6B","129":"OB F QB 7B CB 8B 9B"},J:{"129":"D A"},K:{"1":"7 9 C GB","4":"A B","129":"M"},L:{"129":"q"},M:{"129":"8"},N:{"1":"B","4":"A"},O:{"129":"AC"},P:{"129":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"129":"HC"},S:{"1":"IC"}},B:1,C:"dataset & data-* attributes"};
diff --git a/assets/node_modules/caniuse-lite/data/features/datauri.js b/assets/node_modules/caniuse-lite/data/features/datauri.js
deleted file mode 100644
index b1894c8..0000000
--- a/assets/node_modules/caniuse-lite/data/features/datauri.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D nB","132":"G","260":"E A B"},B:{"1":"q","260":"C K L N I J","772":"f"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"260":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"Data URIs"};
diff --git a/assets/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js b/assets/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js
deleted file mode 100644
index 1a9008c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"16":"nB","132":"H D G E A B"},B:{"1":"J q","132":"C K f L N I"},C:{"1":"0 1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB","132":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y eB dB","260":"w x y z","772":"Z a b c d e AB g h i j k l m n o p M r s t u v"},D:{"1":"IB JB KB LB MB cB QB XB TB q sB UB VB","132":"F O H D G E A B C K f L N I J P Q R S T","260":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB","772":"U V W X Y Z a b c d e AB g h"},E:{"1":"9 C K fB","16":"F O WB RB","132":"H D G E A YB ZB aB bB","260":"7 B PB"},F:{"1":"1 2 3 4 5 6","16":"7 E B C gB hB iB jB GB lB","132":"9","260":"0 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","772":"L N I J P Q R S T U"},G:{"1":"vB wB xB yB zB 0B 1B 2B","16":"RB mB CB oB","132":"G pB qB rB SB tB uB"},H:{"132":"3B"},I:{"1":"QB","16":"OB 4B 5B 6B","132":"F 7B CB","772":"8B 9B"},J:{"132":"D A"},K:{"1":"M","16":"7 A B C GB","132":"9"},L:{"1":"q"},M:{"1":"8"},N:{"132":"A B"},O:{"260":"AC"},P:{"1":"FC PB","260":"F BC CC DC EC"},Q:{"260":"GC"},R:{"132":"HC"},S:{"132":"IC"}},B:6,C:"Date.prototype.toLocaleDateString"};
diff --git a/assets/node_modules/caniuse-lite/data/features/details.js b/assets/node_modules/caniuse-lite/data/features/details.js
deleted file mode 100644
index 27fee49..0000000
--- a/assets/node_modules/caniuse-lite/data/features/details.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"E A B nB","8":"H D G"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB","8":"OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M eB dB","194":"r s"},D:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","8":"F O H D G E A B","257":"P Q R S T U V W X Y Z a b c d e AB","769":"C K f L N I J"},E:{"1":"9 C K fB","8":"F O WB RB YB","257":"H D G E A ZB aB bB","1025":"7 B PB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 C GB lB","8":"E B gB hB iB jB"},G:{"1":"G pB qB rB SB tB xB yB zB 0B 1B 2B","8":"RB mB CB oB","1025":"uB vB wB"},H:{"8":"3B"},I:{"1":"F QB 7B CB 8B 9B","8":"OB 4B 5B 6B"},J:{"1":"A","8":"D"},K:{"1":"M","8":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"769":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Details & Summary elements"};
diff --git a/assets/node_modules/caniuse-lite/data/features/deviceorientation.js b/assets/node_modules/caniuse-lite/data/features/deviceorientation.js
deleted file mode 100644
index 52cd90d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/deviceorientation.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","132":"B"},B:{"1":"C K f L N I J","4":"q"},C:{"2":"kB OB eB","4":"0 1 2 3 4 5 6 8 H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","8":"F O dB"},D:{"2":"F O H","4":"0 1 2 3 4 5 6 8 D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","4":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"RB mB","4":"G CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"4B 5B 6B","4":"OB F QB 7B CB 8B 9B"},J:{"2":"D","4":"A"},K:{"1":"9 C","2":"7 A B GB","4":"M"},L:{"4":"q"},M:{"4":"8"},N:{"1":"B","2":"A"},O:{"4":"AC"},P:{"4":"F BC CC DC EC FC PB"},Q:{"4":"GC"},R:{"4":"HC"},S:{"4":"IC"}},B:4,C:"DeviceOrientation & DeviceMotion events"};
diff --git a/assets/node_modules/caniuse-lite/data/features/devicepixelratio.js b/assets/node_modules/caniuse-lite/data/features/devicepixelratio.js
deleted file mode 100644
index ff10fb4..0000000
--- a/assets/node_modules/caniuse-lite/data/features/devicepixelratio.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G E A nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","2":"7 E B gB hB iB jB GB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"9 C M","2":"7 A B GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","2":"A"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"Window.devicePixelRatio"};
diff --git a/assets/node_modules/caniuse-lite/data/features/dialog.js b/assets/node_modules/caniuse-lite/data/features/dialog.js
deleted file mode 100644
index 6d70109..0000000
--- a/assets/node_modules/caniuse-lite/data/features/dialog.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w eB dB","194":"0 1 2 3 4 5 6 8 x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"0 1 2 3 4 5 6 8 h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b","322":"c d e AB g"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J gB hB iB jB GB lB","578":"P Q R S T"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:1,C:"Dialog element"};
diff --git a/assets/node_modules/caniuse-lite/data/features/dispatchevent.js b/assets/node_modules/caniuse-lite/data/features/dispatchevent.js
deleted file mode 100644
index 7f9e464..0000000
--- a/assets/node_modules/caniuse-lite/data/features/dispatchevent.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","16":"nB","129":"E A","130":"H D G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K RB YB ZB aB bB PB fB","16":"WB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","16":"E"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB"},H:{"1":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","129":"A"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"EventTarget.dispatchEvent"};
diff --git a/assets/node_modules/caniuse-lite/data/features/do-not-track.js b/assets/node_modules/caniuse-lite/data/features/do-not-track.js
deleted file mode 100644
index e6cebc2..0000000
--- a/assets/node_modules/caniuse-lite/data/features/do-not-track.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","164":"E A","260":"B"},B:{"1":"I J q","260":"C K f L N"},C:{"1":"0 1 2 3 4 5 6 8 c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G eB dB","516":"E A B C K f L N I J P Q R S T U V W X Y Z a b"},D:{"1":"0 1 2 3 4 5 6 8 T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S"},E:{"1":"7 H A B C YB bB PB","2":"9 F O K WB RB fB","1028":"D G E ZB aB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B gB hB iB jB GB lB"},G:{"1":"SB tB uB vB wB xB yB","2":"RB mB CB oB pB zB 0B 1B 2B","1028":"G qB rB"},H:{"1":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"16":"D","1028":"A"},K:{"1":"9 M","16":"7 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"164":"A","260":"B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"Do Not Track API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/document-currentscript.js b/assets/node_modules/caniuse-lite/data/features/document-currentscript.js
deleted file mode 100644
index 0963bc1..0000000
--- a/assets/node_modules/caniuse-lite/data/features/document-currentscript.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y"},E:{"1":"7 9 G E A B C K bB PB fB","2":"F O H D WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L gB hB iB jB GB lB"},G:{"1":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB qB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"document.currentScript"};
diff --git a/assets/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js b/assets/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js
deleted file mode 100644
index 4dc9267..0000000
--- a/assets/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","16":"kB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","16":"E"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:7,C:"document.evaluate & XPath"};
diff --git a/assets/node_modules/caniuse-lite/data/features/document-execcommand.js b/assets/node_modules/caniuse-lite/data/features/document-execcommand.js
deleted file mode 100644
index c92ef41..0000000
--- a/assets/node_modules/caniuse-lite/data/features/document-execcommand.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","16":"F O WB RB YB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z hB iB jB GB lB","16":"E gB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB","16":"CB oB pB"},H:{"2":"3B"},I:{"1":"QB 7B CB 8B 9B","2":"OB F 4B 5B 6B"},J:{"1":"A","2":"D"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","2":"A"},O:{"2":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:7,C:"Document.execCommand()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/document-scrollingelement.js b/assets/node_modules/caniuse-lite/data/features/document-scrollingelement.js
deleted file mode 100644
index 1c04e6c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/document-scrollingelement.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"f L N I J q","16":"C K"},C:{"1":"0 1 2 3 4 5 6 8 s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r eB dB"},D:{"1":"0 1 2 3 4 5 6 8 o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D G WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a gB hB iB jB GB lB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"document.scrollingElement"};
diff --git a/assets/node_modules/caniuse-lite/data/features/documenthead.js b/assets/node_modules/caniuse-lite/data/features/documenthead.js
deleted file mode 100644
index 3bde3c4..0000000
--- a/assets/node_modules/caniuse-lite/data/features/documenthead.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB","16":"O"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z GB lB","2":"E gB hB iB jB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB"},H:{"1":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"document.head"};
diff --git a/assets/node_modules/caniuse-lite/data/features/dom-manip-convenience.js b/assets/node_modules/caniuse-lite/data/features/dom-manip-convenience.js
deleted file mode 100644
index 78d9966..0000000
--- a/assets/node_modules/caniuse-lite/data/features/dom-manip-convenience.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"I J q","2":"C K f L N"},C:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s eB dB"},D:{"1":"0 1 2 3 4 5 6 8 y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v","194":"w x"},E:{"1":"7 9 A B C K PB fB","2":"F O H D G E WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j gB hB iB jB GB lB","194":"k"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"CC DC EC FC PB","2":"F BC"},Q:{"194":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:1,C:"DOM manipulation convenience methods"};
diff --git a/assets/node_modules/caniuse-lite/data/features/dom-range.js b/assets/node_modules/caniuse-lite/data/features/dom-range.js
deleted file mode 100644
index 27be8f7..0000000
--- a/assets/node_modules/caniuse-lite/data/features/dom-range.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"nB","8":"H D G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Document Object Model Range"};
diff --git a/assets/node_modules/caniuse-lite/data/features/domcontentloaded.js b/assets/node_modules/caniuse-lite/data/features/domcontentloaded.js
deleted file mode 100644
index b42a2a2..0000000
--- a/assets/node_modules/caniuse-lite/data/features/domcontentloaded.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"DOMContentLoaded"};
diff --git a/assets/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js b/assets/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js
deleted file mode 100644
index 4aa8fcc..0000000
--- a/assets/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f L N I J P Q R S T U V"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB","16":"O"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","16":"7 E B gB hB iB jB GB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB oB pB"},H:{"16":"3B"},I:{"1":"F QB 7B CB 8B 9B","16":"OB 4B 5B 6B"},J:{"16":"D A"},K:{"16":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"16":"A B"},O:{"16":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:5,C:"DOMFocusIn & DOMFocusOut events"};
diff --git a/assets/node_modules/caniuse-lite/data/features/dommatrix.js b/assets/node_modules/caniuse-lite/data/features/dommatrix.js
deleted file mode 100644
index e0e4090..0000000
--- a/assets/node_modules/caniuse-lite/data/features/dommatrix.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","132":"A B"},B:{"132":"C K f L N I J","1028":"q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c eB dB","2564":"d e AB g h i j k l m n o p M r s","3076":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"16":"F O H D","132":"0 1 2 3 E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB","388":"G","1028":"4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"16":"F WB RB","132":"O H D G E A YB ZB aB bB PB","1028":"7 9 B C K fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","132":"L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r","1028":"0 1 2 3 4 5 6 s t u v w x y z"},G:{"16":"RB mB CB","132":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","132":"F 7B CB 8B 9B","292":"OB 4B 5B 6B"},J:{"16":"D","132":"A"},K:{"2":"7 9 A B C GB","132":"M"},L:{"1028":"q"},M:{"1":"8"},N:{"132":"A B"},O:{"132":"AC"},P:{"132":"F BC CC DC EC FC PB"},Q:{"132":"GC"},R:{"132":"HC"},S:{"2564":"IC"}},B:4,C:"DOMMatrix"};
diff --git a/assets/node_modules/caniuse-lite/data/features/download.js b/assets/node_modules/caniuse-lite/data/features/download.js
deleted file mode 100644
index 793515c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/download.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"K f L N I J q","2":"C"},C:{"1":"0 1 2 3 4 5 6 8 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P eB dB"},D:{"1":"0 1 2 3 4 5 6 8 f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Download attribute"};
diff --git a/assets/node_modules/caniuse-lite/data/features/dragndrop.js b/assets/node_modules/caniuse-lite/data/features/dragndrop.js
deleted file mode 100644
index 8f68b46..0000000
--- a/assets/node_modules/caniuse-lite/data/features/dragndrop.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"644":"H D G E nB","772":"A B"},B:{"1":"J q","260":"C K f L N I"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","8":"kB OB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","8":"7 E B gB hB iB jB GB lB"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"9","2":"M","8":"7 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"1":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:1,C:"Drag and Drop"};
diff --git a/assets/node_modules/caniuse-lite/data/features/element-closest.js b/assets/node_modules/caniuse-lite/data/features/element-closest.js
deleted file mode 100644
index 9b82d55..0000000
--- a/assets/node_modules/caniuse-lite/data/features/element-closest.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"L N I J q","2":"C K f"},C:{"1":"0 1 2 3 4 5 6 8 AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e eB dB"},D:{"1":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D G WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X gB hB iB jB GB lB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Element.closest()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/element-from-point.js b/assets/node_modules/caniuse-lite/data/features/element-from-point.js
deleted file mode 100644
index 16941f8..0000000
--- a/assets/node_modules/caniuse-lite/data/features/element-from-point.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D G E A B","16":"nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","16":"kB"},D:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","16":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z GB lB","16":"E gB hB iB jB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB"},H:{"1":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"9 C M","16":"7 A B GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"document.elementFromPoint()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/element-scroll-methods.js b/assets/node_modules/caniuse-lite/data/features/element-scroll-methods.js
deleted file mode 100644
index 64ac5ed..0000000
--- a/assets/node_modules/caniuse-lite/data/features/element-scroll-methods.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB eB dB"},D:{"1":"4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB"},E:{"2":"F O H D G E WB RB YB ZB aB bB","132":"7 9 A B C K PB fB"},F:{"1":"0 1 2 3 4 5 6 s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB","132":"uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"EC FC PB","2":"F BC CC DC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:5,C:"Scroll methods on elements (scroll, scrollTo, scrollBy)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/eme.js b/assets/node_modules/caniuse-lite/data/features/eme.js
deleted file mode 100644
index f16b7b3..0000000
--- a/assets/node_modules/caniuse-lite/data/features/eme.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","164":"B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h eB dB"},D:{"1":"0 1 2 3 4 5 6 8 m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e","132":"AB g h i j k l"},E:{"1":"9 C K fB","2":"F O H WB RB YB ZB","164":"7 D G E A B aB bB PB"},F:{"1":"0 1 2 3 4 5 6 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R gB hB iB jB GB lB","132":"S T U V W X Y"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:3,C:"Encrypted Media Extensions"};
diff --git a/assets/node_modules/caniuse-lite/data/features/eot.js b/assets/node_modules/caniuse-lite/data/features/eot.js
deleted file mode 100644
index edea544..0000000
--- a/assets/node_modules/caniuse-lite/data/features/eot.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D G E A B","2":"nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"EOT - Embedded OpenType fonts"};
diff --git a/assets/node_modules/caniuse-lite/data/features/es5.js b/assets/node_modules/caniuse-lite/data/features/es5.js
deleted file mode 100644
index e673fc5..0000000
--- a/assets/node_modules/caniuse-lite/data/features/es5.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D nB","260":"E","1026":"G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","4":"kB OB eB dB","132":"F O H D G E A B C K f L N I J P Q"},D:{"1":"0 1 2 3 4 5 6 8 T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","4":"F O H D G E A B C K f L N I J","132":"P Q R S"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","4":"F O WB RB YB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","4":"7 E B C gB hB iB jB GB lB","132":"9"},G:{"1":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","4":"RB mB CB oB"},H:{"132":"3B"},I:{"1":"QB 8B 9B","4":"OB 4B 5B 6B","132":"7B CB","900":"F"},J:{"1":"A","4":"D"},K:{"1":"M","4":"7 A B C GB","132":"9"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"ECMAScript 5"};
diff --git a/assets/node_modules/caniuse-lite/data/features/es6-class.js b/assets/node_modules/caniuse-lite/data/features/es6-class.js
deleted file mode 100644
index 5b02153..0000000
--- a/assets/node_modules/caniuse-lite/data/features/es6-class.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o eB dB"},D:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l","132":"m n o p M r s"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D G WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y gB hB iB jB GB lB","132":"Z a b c d e AB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"ES6 classes"};
diff --git a/assets/node_modules/caniuse-lite/data/features/es6-generators.js b/assets/node_modules/caniuse-lite/data/features/es6-generators.js
deleted file mode 100644
index 2ec352f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/es6-generators.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"K f L N I J q","2":"C"},C:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V eB dB"},D:{"1":"0 1 2 3 4 5 6 8 j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i"},E:{"1":"7 9 A B C K PB fB","2":"F O H D G E WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V gB hB iB jB GB lB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"ES6 Generators"};
diff --git a/assets/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js b/assets/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js
deleted file mode 100644
index 1dc8427..0000000
--- a/assets/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"8 FB HB IB JB KB LB MB","2":"0 1 2 3 4 5 6 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB eB dB","194":"BB"},D:{"1":"5 6 8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB"},E:{"1":"7 9 C K fB","2":"F O H D G E A B WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t gB hB iB jB GB lB"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"EC FC PB","2":"F BC CC DC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"JavaScript modules: dynamic import()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/es6-module-nomodule.js b/assets/node_modules/caniuse-lite/data/features/es6-module-nomodule.js
deleted file mode 100644
index 5c2f998..0000000
--- a/assets/node_modules/caniuse-lite/data/features/es6-module-nomodule.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"K C G E A B YB"},B:{"2":"D w Z I","514":"M H"},C:{"2":"0 1 WB AB F J K C G E A B D w Z I M H N O P Q R S T U V W X Y y a b c d e f L h i j k l m n o p q r s t u v UB OB","322":"3 5 6 7 8 z x"},D:{"1":"8 BB IB DB FB ZB GB","2":"0 1 3 5 6 F J K C G E A B D w Z I M H N O P Q R S T U V W X Y y a b c d e f L h i j k l m n o p q r s t u v z x","194":"7"},E:{"1":"B g PB","2":"F J K C G E A HB CB JB KB LB MB NB"},F:{"2":"4 9 E B D I M H N O P Q R S T U V W X Y y a b c d e f L h i j k l m n o p q QB RB SB TB g VB","194":"r s t u v"},G:{"1":"hB iB","2":"2 G CB XB EB aB bB cB dB eB fB gB"},H:{"2":"jB"},I:{"2":"2 AB F BB kB lB mB nB oB pB"},J:{"2":"C A"},K:{"2":"4 9 A B D L g"},L:{"2":"DB"},M:{"2":"x"},N:{"2":"A B"},O:{"2":"qB"},P:{"2":"F J rB"},Q:{"2":"sB"},R:{"2":"tB"}},B:1,C:"JavaScript modules: nomodule attribute"};
diff --git a/assets/node_modules/caniuse-lite/data/features/es6-module.js b/assets/node_modules/caniuse-lite/data/features/es6-module.js
deleted file mode 100644
index c5f9c6f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/es6-module.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f","4097":"N I J","4290":"L"},C:{"1":"3 4 5 6 8 NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x eB dB","322":"0 1 2 y z EB"},D:{"1":"4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB","194":"3"},E:{"1":"7 9 B C K fB","2":"F O H D G E A WB RB YB ZB aB bB","3076":"PB"},F:{"1":"0 1 2 3 4 5 6 s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M gB hB iB jB GB lB","194":"r"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB","3076":"vB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"EC FC PB","2":"F BC CC DC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:1,C:"JavaScript modules via script tag"};
diff --git a/assets/node_modules/caniuse-lite/data/features/es6-number.js b/assets/node_modules/caniuse-lite/data/features/es6-number.js
deleted file mode 100644
index faf4107..0000000
--- a/assets/node_modules/caniuse-lite/data/features/es6-number.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L eB dB","132":"N I J P Q R S T U","260":"V W X Y Z a","516":"b"},D:{"1":"0 1 2 3 4 5 6 8 e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J","1028":"P Q R S T U V W X Y Z a b c d"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D G WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","1028":"L N I J P Q"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B","1028":"7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"ES6 Number"};
diff --git a/assets/node_modules/caniuse-lite/data/features/es6-string-includes.js b/assets/node_modules/caniuse-lite/data/features/es6-string-includes.js
deleted file mode 100644
index e7f4cc6..0000000
--- a/assets/node_modules/caniuse-lite/data/features/es6-string-includes.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j eB dB"},D:{"1":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D G WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X gB hB iB jB GB lB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"String.prototype.includes"};
diff --git a/assets/node_modules/caniuse-lite/data/features/es6.js b/assets/node_modules/caniuse-lite/data/features/es6.js
deleted file mode 100644
index 7634462..0000000
--- a/assets/node_modules/caniuse-lite/data/features/es6.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","388":"B"},B:{"257":"q","260":"C K f","769":"L N I J"},C:{"2":"kB OB F O eB dB","4":"H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x","257":"0 1 2 3 4 5 6 8 y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"2":"F O H D G E A B C K f L N I J P Q","4":"R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u","257":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 A B C K PB fB","2":"F O H D WB RB YB ZB","4":"G E aB bB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","4":"L N I J P Q R S T U V W X Y Z a b c d e AB g h","257":"0 1 2 3 4 5 6 i j k l m n o p M r s t u v w x y z"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB","4":"G qB rB SB tB"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB","4":"8B 9B","257":"QB"},J:{"2":"D","4":"A"},K:{"2":"7 9 A B C GB","257":"M"},L:{"257":"q"},M:{"257":"8"},N:{"2":"A","388":"B"},O:{"257":"AC"},P:{"4":"F","257":"BC CC DC EC FC PB"},Q:{"257":"GC"},R:{"4":"HC"},S:{"4":"IC"}},B:6,C:"ECMAScript 2015 (ES6)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/eventsource.js b/assets/node_modules/caniuse-lite/data/features/eventsource.js
deleted file mode 100644
index 5bd4562..0000000
--- a/assets/node_modules/caniuse-lite/data/features/eventsource.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O eB dB"},D:{"1":"0 1 2 3 4 5 6 8 H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z GB lB","4":"E gB hB iB jB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"D A"},K:{"1":"7 9 C M GB","4":"A B"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Server-sent events"};
diff --git a/assets/node_modules/caniuse-lite/data/features/feature-policy.js b/assets/node_modules/caniuse-lite/data/features/feature-policy.js
deleted file mode 100644
index bddb689..0000000
--- a/assets/node_modules/caniuse-lite/data/features/feature-policy.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","132":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB eB dB","260":"LB MB"},D:{"2":"0 1 2 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB","132":"3 4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O H D G E A B WB RB YB ZB aB bB PB","772":"7 9 C K fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M gB hB iB jB GB lB","132":"0 1 2 3 4 5 6 r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB","16":"xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","132":"QB"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"132":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC","132":"EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"Feature Policy"};
diff --git a/assets/node_modules/caniuse-lite/data/features/fetch.js b/assets/node_modules/caniuse-lite/data/features/fetch.js
deleted file mode 100644
index 094e09d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/fetch.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"f L N I J q","2":"C K"},C:{"1":"0 1 2 3 4 5 6 8 k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d eB dB","1025":"j","1218":"e AB g h i"},D:{"1":"0 1 2 3 4 5 6 8 m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j","260":"k","772":"l"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W gB hB iB jB GB lB","260":"X","772":"Y"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Fetch"};
diff --git a/assets/node_modules/caniuse-lite/data/features/fieldset-disabled.js b/assets/node_modules/caniuse-lite/data/features/fieldset-disabled.js
deleted file mode 100644
index ed5a4b3..0000000
--- a/assets/node_modules/caniuse-lite/data/features/fieldset-disabled.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"16":"nB","132":"G E","388":"H D A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L","16":"N I J P"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z hB iB jB GB lB","16":"E gB"},G:{"1":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB"},H:{"388":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A","260":"B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"disabled attribute of the fieldset element"};
diff --git a/assets/node_modules/caniuse-lite/data/features/fileapi.js b/assets/node_modules/caniuse-lite/data/features/fileapi.js
deleted file mode 100644
index 7ec4653..0000000
--- a/assets/node_modules/caniuse-lite/data/features/fileapi.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","260":"A B"},B:{"1":"q","260":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB","260":"F O H D G E A B C K f L N I J P Q R S T U V W X dB"},D:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O","260":"K f L N I J P Q R S T U V W X Y Z a b c d e AB g h","388":"H D G E A B C"},E:{"1":"7 9 A B C K PB fB","2":"F O WB RB","260":"H D G E ZB aB bB","388":"YB"},F:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"E B gB hB iB jB","260":"7 9 C L N I J P Q R S T U GB lB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB","260":"G pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB 9B","2":"4B 5B 6B","260":"8B","388":"OB F 7B CB"},J:{"260":"A","388":"D"},K:{"1":"M","2":"A B","260":"7 9 C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A","260":"B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"File API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/filereader.js b/assets/node_modules/caniuse-lite/data/features/filereader.js
deleted file mode 100644
index 61d7ffc..0000000
--- a/assets/node_modules/caniuse-lite/data/features/filereader.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","132":"A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB dB","2":"kB OB eB"},D:{"1":"0 1 2 3 4 5 6 8 H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB"},F:{"1":"0 1 2 3 4 5 6 7 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z GB lB","2":"E B gB hB iB jB"},G:{"1":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB"},H:{"2":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","2":"4B 5B 6B"},J:{"1":"A","2":"D"},K:{"1":"7 9 C M GB","2":"A B"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"FileReader API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/filereadersync.js b/assets/node_modules/caniuse-lite/data/features/filereadersync.js
deleted file mode 100644
index 19ab0bf..0000000
--- a/assets/node_modules/caniuse-lite/data/features/filereadersync.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D eB dB"},D:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","2":"E gB hB","16":"7 B iB jB GB"},G:{"1":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"9 C M GB","2":"A","16":"7 B"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"FileReaderSync"};
diff --git a/assets/node_modules/caniuse-lite/data/features/filesystem.js b/assets/node_modules/caniuse-lite/data/features/filesystem.js
deleted file mode 100644
index 157c5fd..0000000
--- a/assets/node_modules/caniuse-lite/data/features/filesystem.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","33":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"F O H D","33":"0 1 2 3 4 5 6 8 K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","36":"G E A B C"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","33":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D","33":"A"},K:{"2":"7 9 A B C GB","33":"M"},L:{"33":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F","33":"BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"Filesystem & FileWriter API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/flac.js b/assets/node_modules/caniuse-lite/data/features/flac.js
deleted file mode 100644
index 77acde4..0000000
--- a/assets/node_modules/caniuse-lite/data/features/flac.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"N I J q","2":"C K f L"},C:{"1":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u eB dB"},D:{"1":"0 1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n","16":"o p M","388":"r s t u v w x y z"},E:{"2":"F O H D G E A WB RB YB ZB aB bB PB","516":"7 9 B C K fB"},F:{"1":"0 1 2 3 4 5 6 m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l gB hB iB jB GB lB"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB"},H:{"2":"3B"},I:{"1":"QB","2":"4B 5B 6B","16":"OB F 7B CB 8B 9B"},J:{"1":"A","2":"D"},K:{"1":"9","16":"7 A B C GB","129":"M"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","129":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:6,C:"FLAC audio format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/flexbox-gap.js b/assets/node_modules/caniuse-lite/data/features/flexbox-gap.js
deleted file mode 100644
index 96a65cf..0000000
--- a/assets/node_modules/caniuse-lite/data/features/flexbox-gap.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"1":"5 6 8 DB BB FB HB IB JB KB LB MB","2":"0 1 2 3 4 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"gap property for Flexbox"};
diff --git a/assets/node_modules/caniuse-lite/data/features/flexbox.js b/assets/node_modules/caniuse-lite/data/features/flexbox.js
deleted file mode 100644
index 31a6693..0000000
--- a/assets/node_modules/caniuse-lite/data/features/flexbox.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","1028":"B","1316":"A"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","164":"kB OB F O H D G E A B C K f L N I J P Q R eB dB","516":"S T U V W X"},D:{"1":"0 1 2 3 4 5 6 8 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","33":"R S T U V W X Y","164":"F O H D G E A B C K f L N I J P Q"},E:{"1":"7 9 E A B C K bB PB fB","33":"D G ZB aB","164":"F O H WB RB YB"},F:{"1":"0 1 2 3 4 5 6 9 I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B C gB hB iB jB GB lB","33":"L N"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","33":"G qB rB","164":"RB mB CB oB pB"},H:{"1":"3B"},I:{"1":"QB 8B 9B","164":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","164":"D"},K:{"1":"9 M","2":"7 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","292":"A"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS Flexible Box Layout Module"};
diff --git a/assets/node_modules/caniuse-lite/data/features/flow-root.js b/assets/node_modules/caniuse-lite/data/features/flow-root.js
deleted file mode 100644
index 958aaaa..0000000
--- a/assets/node_modules/caniuse-lite/data/features/flow-root.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w eB dB"},D:{"1":"2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},E:{"1":"K fB","2":"7 9 F O H D G E A B C WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"DC EC FC PB","2":"F BC CC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"display: flow-root"};
diff --git a/assets/node_modules/caniuse-lite/data/features/focusin-focusout-events.js b/assets/node_modules/caniuse-lite/data/features/focusin-focusout-events.js
deleted file mode 100644
index 3d34a32..0000000
--- a/assets/node_modules/caniuse-lite/data/features/focusin-focusout-events.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D G E A B","2":"nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v eB dB"},D:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","16":"F O WB RB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","2":"E gB hB iB jB","16":"7 B GB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"2":"3B"},I:{"1":"F QB 7B CB 8B 9B","2":"4B 5B 6B","16":"OB"},J:{"1":"D A"},K:{"1":"9 C M","2":"A","16":"7 B GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:5,C:"focusin & focusout events"};
diff --git a/assets/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js b/assets/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js
deleted file mode 100644
index fa30f46..0000000
--- a/assets/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"6 8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:1,C:"preventScroll support in focus"};
diff --git a/assets/node_modules/caniuse-lite/data/features/font-family-system-ui.js b/assets/node_modules/caniuse-lite/data/features/font-family-system-ui.js
deleted file mode 100644
index f482c96..0000000
--- a/assets/node_modules/caniuse-lite/data/features/font-family-system-ui.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m eB dB","132":"0 1 2 3 4 5 6 8 n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"0 1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w","260":"x y z"},E:{"1":"7 9 B C K fB","2":"F O H D G WB RB YB ZB aB","16":"E","132":"A bB PB"},F:{"1":"0 1 2 3 4 5 6 n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m gB hB iB jB GB lB"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB","132":"SB tB uB vB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"CC DC EC FC PB","2":"F BC"},Q:{"1":"GC"},R:{"2":"HC"},S:{"132":"IC"}},B:5,C:"system-ui value for font-family"};
diff --git a/assets/node_modules/caniuse-lite/data/features/font-feature.js b/assets/node_modules/caniuse-lite/data/features/font-feature.js
deleted file mode 100644
index 5ab6e0d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/font-feature.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","33":"L N I J P Q R S T U V W X Y Z a b c d","164":"F O H D G E A B C K f"},D:{"1":"0 1 2 3 4 5 6 8 s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L","33":"R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r","292":"N I J P Q"},E:{"1":"7 9 A B C K bB PB fB","2":"D G E WB RB ZB aB","4":"F O H YB"},F:{"1":"0 1 2 3 4 5 6 AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","33":"L N I J P Q R S T U V W X Y Z a b c d e"},G:{"1":"tB uB vB wB xB yB zB 0B 1B 2B","2":"G qB rB SB","4":"RB mB CB oB pB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB","33":"8B 9B"},J:{"2":"D","33":"A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","33":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS font-feature-settings"};
diff --git a/assets/node_modules/caniuse-lite/data/features/font-kerning.js b/assets/node_modules/caniuse-lite/data/features/font-kerning.js
deleted file mode 100644
index 96e0a95..0000000
--- a/assets/node_modules/caniuse-lite/data/features/font-kerning.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T eB dB","194":"U V W X Y Z a b c d"},D:{"1":"0 1 2 3 4 5 6 8 d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y","33":"Z a b c"},E:{"1":"7 9 A B C K bB PB fB","2":"F O H WB RB YB ZB","33":"D G E aB"},F:{"1":"0 1 2 3 4 5 6 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L gB hB iB jB GB lB","33":"N I J P"},G:{"2":"RB mB CB oB pB qB","33":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB 9B","2":"OB F 4B 5B 6B 7B CB","33":"8B"},J:{"2":"D","33":"A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS3 font-kerning"};
diff --git a/assets/node_modules/caniuse-lite/data/features/font-loading.js b/assets/node_modules/caniuse-lite/data/features/font-loading.js
deleted file mode 100644
index 82017bb..0000000
--- a/assets/node_modules/caniuse-lite/data/features/font-loading.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e eB dB","194":"AB g h i j k"},D:{"1":"0 1 2 3 4 5 6 8 AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e"},E:{"1":"7 9 A B C K PB fB","2":"F O H D G E WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R gB hB iB jB GB lB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"CSS Font Loading"};
diff --git a/assets/node_modules/caniuse-lite/data/features/font-size-adjust.js b/assets/node_modules/caniuse-lite/data/features/font-size-adjust.js
deleted file mode 100644
index bc8a990..0000000
--- a/assets/node_modules/caniuse-lite/data/features/font-size-adjust.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","194":"q"},C:{"1":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m","194":"0 1 2 3 4 5 6 8 n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z gB hB iB jB GB lB","194":"0 1 2 3 4 5 6 a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"258":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"194":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:4,C:"CSS font-size-adjust"};
diff --git a/assets/node_modules/caniuse-lite/data/features/font-smooth.js b/assets/node_modules/caniuse-lite/data/features/font-smooth.js
deleted file mode 100644
index 6d84489..0000000
--- a/assets/node_modules/caniuse-lite/data/features/font-smooth.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","676":"q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U eB dB","804":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"2":"F","676":"0 1 2 3 4 5 6 8 O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"WB RB","676":"7 9 F O H D G E A B C K YB ZB aB bB PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","676":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"804":"IC"}},B:7,C:"CSS font-smooth"};
diff --git a/assets/node_modules/caniuse-lite/data/features/font-unicode-range.js b/assets/node_modules/caniuse-lite/data/features/font-unicode-range.js
deleted file mode 100644
index 9bea2b9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/font-unicode-range.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","4":"E A B"},B:{"1":"I J q","4":"C K f L N"},C:{"1":"0 1 2 3 4 5 6 8 o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB eB dB","194":"g h i j k l m n"},D:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","4":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB"},E:{"1":"7 9 A B C K PB fB","4":"F O H D G E WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","4":"L N I J P Q R S"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","4":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB","4":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D","4":"A"},K:{"2":"7 9 A B C GB","4":"M"},L:{"1":"q"},M:{"1":"8"},N:{"4":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","4":"F"},Q:{"1":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:4,C:"Font unicode-range subsetting"};
diff --git a/assets/node_modules/caniuse-lite/data/features/font-variant-alternates.js b/assets/node_modules/caniuse-lite/data/features/font-variant-alternates.js
deleted file mode 100644
index b00dd9e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/font-variant-alternates.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","130":"A B"},B:{"130":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","130":"F O H D G E A B C K f L N I J P Q R S T","322":"U V W X Y Z a b c d"},D:{"2":"F O H D G E A B C K f L","130":"0 1 2 3 4 5 6 8 N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 A B C K bB PB fB","2":"D G E WB RB ZB aB","130":"F O H YB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","130":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"1":"tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB qB rB SB","130":"mB CB oB pB"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB","130":"QB 8B 9B"},J:{"2":"D","130":"A"},K:{"2":"7 9 A B C GB","130":"M"},L:{"130":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"130":"AC"},P:{"130":"F BC CC DC EC FC PB"},Q:{"130":"GC"},R:{"130":"HC"},S:{"1":"IC"}},B:4,C:"CSS font-variant-alternates"};
diff --git a/assets/node_modules/caniuse-lite/data/features/font-variant-east-asian.js b/assets/node_modules/caniuse-lite/data/features/font-variant-east-asian.js
deleted file mode 100644
index d7be51d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/font-variant-east-asian.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T eB dB","132":"U V W X Y Z a b c d"},D:{"1":"5 6 8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t gB hB iB jB GB lB"},G:{"2":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"132":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:4,C:"CSS font-variant-east-asian "};
diff --git a/assets/node_modules/caniuse-lite/data/features/font-variant-numeric.js b/assets/node_modules/caniuse-lite/data/features/font-variant-numeric.js
deleted file mode 100644
index 52e737e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/font-variant-numeric.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d eB dB"},D:{"1":"0 1 2 3 4 5 6 8 w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v"},E:{"1":"7 9 A B C K bB PB fB","2":"F O H D G E WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i gB hB iB jB GB lB"},G:{"1":"tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D","16":"A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"CC DC EC FC PB","2":"F BC"},Q:{"1":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:2,C:"CSS font-variant-numeric"};
diff --git a/assets/node_modules/caniuse-lite/data/features/fontface.js b/assets/node_modules/caniuse-lite/data/features/fontface.js
deleted file mode 100644
index f374bd1..0000000
--- a/assets/node_modules/caniuse-lite/data/features/fontface.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","132":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB OB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K RB YB ZB aB bB PB fB","2":"WB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z hB iB jB GB lB","2":"E gB"},G:{"1":"G CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","260":"RB mB"},H:{"2":"3B"},I:{"1":"F QB 7B CB 8B 9B","2":"4B","4":"OB 5B 6B"},J:{"1":"A","4":"D"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"@font-face Web fonts"};
diff --git a/assets/node_modules/caniuse-lite/data/features/form-attribute.js b/assets/node_modules/caniuse-lite/data/features/form-attribute.js
deleted file mode 100644
index 30905e2..0000000
--- a/assets/node_modules/caniuse-lite/data/features/form-attribute.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"N I J q","2":"C K f L"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB","16":"O"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","2":"E"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"1":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","2":"4B 5B 6B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Form attribute"};
diff --git a/assets/node_modules/caniuse-lite/data/features/form-submit-attributes.js b/assets/node_modules/caniuse-lite/data/features/form-submit-attributes.js
deleted file mode 100644
index 7069ba6..0000000
--- a/assets/node_modules/caniuse-lite/data/features/form-submit-attributes.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","2":"F O WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z jB GB lB","2":"E gB","16":"hB iB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"1":"3B"},I:{"1":"F QB 7B CB 8B 9B","2":"4B 5B 6B","16":"OB"},J:{"1":"A","2":"D"},K:{"1":"7 9 B C M GB","16":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Attributes for form submission"};
diff --git a/assets/node_modules/caniuse-lite/data/features/form-validation.js b/assets/node_modules/caniuse-lite/data/features/form-validation.js
deleted file mode 100644
index 9c95fbb..0000000
--- a/assets/node_modules/caniuse-lite/data/features/form-validation.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E"},E:{"1":"7 9 B C K PB fB","2":"F WB RB","132":"O H D G E A YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z hB iB jB GB lB","2":"E gB"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"RB","132":"G mB CB oB pB qB rB SB tB uB"},H:{"516":"3B"},I:{"1":"QB 9B","2":"OB 4B 5B 6B","132":"F 7B CB 8B"},J:{"1":"A","132":"D"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"260":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"132":"IC"}},B:1,C:"Form validation"};
diff --git a/assets/node_modules/caniuse-lite/data/features/forms.js b/assets/node_modules/caniuse-lite/data/features/forms.js
deleted file mode 100644
index 1161f09..0000000
--- a/assets/node_modules/caniuse-lite/data/features/forms.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"nB","4":"A B","8":"H D G E"},B:{"1":"N I J q","4":"C K f L"},C:{"4":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","8":"kB OB eB dB"},D:{"1":"4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","4":"0 1 2 3 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB"},E:{"4":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","8":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C w x y z gB hB iB jB GB lB","4":"L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v"},G:{"2":"RB","4":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB","4":"8B 9B"},J:{"2":"D","4":"A"},K:{"1":"7 9 A B C GB","4":"M"},L:{"1":"q"},M:{"4":"8"},N:{"4":"A B"},O:{"1":"AC"},P:{"1":"EC FC PB","4":"F BC CC DC"},Q:{"4":"GC"},R:{"4":"HC"},S:{"4":"IC"}},B:1,C:"HTML5 form features"};
diff --git a/assets/node_modules/caniuse-lite/data/features/fullscreen.js b/assets/node_modules/caniuse-lite/data/features/fullscreen.js
deleted file mode 100644
index 9bde030..0000000
--- a/assets/node_modules/caniuse-lite/data/features/fullscreen.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","548":"B"},B:{"1":"q","516":"C K f L N I J"},C:{"1":"6 8 DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E eB dB","676":"A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M","1700":"0 1 2 3 4 5 r s t u v w x y z EB NB"},D:{"1":"JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f","676":"L N I J P","804":"0 1 2 3 4 5 6 8 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB"},E:{"2":"F O WB RB","676":"YB","804":"7 9 H D G E A B C K ZB aB bB PB fB"},F:{"1":"6 9","2":"7 E B C gB hB iB jB GB lB","804":"0 1 2 3 4 5 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB","2052":"yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D","292":"A"},K:{"2":"7 9 A B C GB","804":"M"},L:{"804":"q"},M:{"1":"8"},N:{"2":"A","548":"B"},O:{"804":"AC"},P:{"1":"PB","804":"F BC CC DC EC FC"},Q:{"804":"GC"},R:{"804":"HC"},S:{"1":"IC"}},B:1,C:"Full Screen API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/gamepad.js b/assets/node_modules/caniuse-lite/data/features/gamepad.js
deleted file mode 100644
index b8df838..0000000
--- a/assets/node_modules/caniuse-lite/data/features/gamepad.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y eB dB"},D:{"1":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q","33":"R S T U"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T gB hB iB jB GB lB"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:5,C:"Gamepad API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/geolocation.js b/assets/node_modules/caniuse-lite/data/features/geolocation.js
deleted file mode 100644
index a19c8bd..0000000
--- a/assets/node_modules/caniuse-lite/data/features/geolocation.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"nB","8":"H D G"},B:{"1":"C K f L N I J","129":"q"},C:{"1":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y eB dB","8":"kB OB","129":"0 1 2 3 4 5 6 8 z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t","4":"F","129":"0 1 2 3 4 5 6 8 u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 O H D G E B C K YB ZB aB bB PB fB","8":"F WB RB","129":"A"},F:{"1":"7 9 B C N I J P Q R S T U V W X Y Z a b c d e AB g h i jB GB lB","2":"E L gB","8":"hB iB","129":"0 1 2 3 4 5 6 j k l m n o p M r s t u v w x y z"},G:{"1":"G RB mB CB oB pB qB rB SB tB","129":"uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F 4B 5B 6B 7B CB 8B 9B","129":"QB"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","8":"A"},L:{"129":"q"},M:{"129":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F","129":"BC CC DC EC FC PB"},Q:{"129":"GC"},R:{"129":"HC"},S:{"1":"IC"}},B:2,C:"Geolocation"};
diff --git a/assets/node_modules/caniuse-lite/data/features/getboundingclientrect.js b/assets/node_modules/caniuse-lite/data/features/getboundingclientrect.js
deleted file mode 100644
index 95a337b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/getboundingclientrect.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"644":"H D nB","2049":"E A B","2692":"G"},B:{"1":"q","2049":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB","260":"F O H D G E A B","1156":"OB","1284":"eB","1796":"dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","16":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z jB GB lB","16":"E gB","132":"hB iB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB"},H:{"1":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","132":"A"},L:{"1":"q"},M:{"1":"8"},N:{"2049":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"Element.getBoundingClientRect()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/getcomputedstyle.js b/assets/node_modules/caniuse-lite/data/features/getcomputedstyle.js
deleted file mode 100644
index 1f37ea3..0000000
--- a/assets/node_modules/caniuse-lite/data/features/getcomputedstyle.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB","132":"OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","260":"F O H D G E A"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","260":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z jB GB lB","260":"E gB hB iB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","260":"RB mB CB"},H:{"260":"3B"},I:{"1":"F QB 7B CB 8B 9B","260":"OB 4B 5B 6B"},J:{"1":"A","260":"D"},K:{"1":"7 9 B C M GB","260":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"getComputedStyle"};
diff --git a/assets/node_modules/caniuse-lite/data/features/getelementsbyclassname.js b/assets/node_modules/caniuse-lite/data/features/getelementsbyclassname.js
deleted file mode 100644
index c5eee2a..0000000
--- a/assets/node_modules/caniuse-lite/data/features/getelementsbyclassname.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"nB","8":"H D G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","8":"kB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","2":"E"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"getElementsByClassName"};
diff --git a/assets/node_modules/caniuse-lite/data/features/getrandomvalues.js b/assets/node_modules/caniuse-lite/data/features/getrandomvalues.js
deleted file mode 100644
index af5c722..0000000
--- a/assets/node_modules/caniuse-lite/data/features/getrandomvalues.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","33":"B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q eB dB"},D:{"1":"0 1 2 3 4 5 6 8 B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","2":"F O H WB RB YB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A","33":"B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"crypto.getRandomValues()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/gyroscope.js b/assets/node_modules/caniuse-lite/data/features/gyroscope.js
deleted file mode 100644
index 104dbdc..0000000
--- a/assets/node_modules/caniuse-lite/data/features/gyroscope.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"8 FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","194":"2 3 4 5 6 EB NB DB BB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:4,C:"Gyroscope"};
diff --git a/assets/node_modules/caniuse-lite/data/features/hardwareconcurrency.js b/assets/node_modules/caniuse-lite/data/features/hardwareconcurrency.js
deleted file mode 100644
index 3d8c797..0000000
--- a/assets/node_modules/caniuse-lite/data/features/hardwareconcurrency.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"L N I J q","2":"C K f"},C:{"1":"0 1 2 3 4 5 6 8 s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r eB dB"},D:{"1":"0 1 2 3 4 5 6 8 h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g"},E:{"2":"F O H D WB RB YB ZB aB","129":"7 9 B C K PB fB","194":"G E A bB"},F:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T gB hB iB jB GB lB"},G:{"2":"RB mB CB oB pB qB","129":"vB wB xB yB zB 0B 1B 2B","194":"G rB SB tB uB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"navigator.hardwareConcurrency"};
diff --git a/assets/node_modules/caniuse-lite/data/features/hashchange.js b/assets/node_modules/caniuse-lite/data/features/hashchange.js
deleted file mode 100644
index c10698d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/hashchange.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"G E A B","8":"H D nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB dB","8":"kB OB eB"},D:{"1":"0 1 2 3 4 5 6 8 O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","8":"F"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","8":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z jB GB lB","8":"E gB hB iB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB"},H:{"2":"3B"},I:{"1":"OB F QB 5B 6B 7B CB 8B 9B","2":"4B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","8":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Hashchange event"};
diff --git a/assets/node_modules/caniuse-lite/data/features/heif.js b/assets/node_modules/caniuse-lite/data/features/heif.js
deleted file mode 100644
index e0f355d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/heif.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O H D G E A WB RB YB ZB aB bB PB","130":"7 9 B C K fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB","130":"wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"HEIF/ISO Base Media File Format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/hevc.js b/assets/node_modules/caniuse-lite/data/features/hevc.js
deleted file mode 100644
index 0e15fe8..0000000
--- a/assets/node_modules/caniuse-lite/data/features/hevc.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","132":"B"},B:{"2":"q","132":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O H D G E A WB RB YB ZB aB bB PB","516":"7 9 B C K fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","258":"QB"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"258":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F","258":"BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"HEVC/H.265 video format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/hidden.js b/assets/node_modules/caniuse-lite/data/features/hidden.js
deleted file mode 100644
index a5f7581..0000000
--- a/assets/node_modules/caniuse-lite/data/features/hidden.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G E A nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","2":"F O WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z GB lB","2":"E B gB hB iB jB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"1":"3B"},I:{"1":"F QB 7B CB 8B 9B","2":"OB 4B 5B 6B"},J:{"1":"A","2":"D"},K:{"1":"7 9 C M GB","2":"A B"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","2":"A"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"hidden attribute"};
diff --git a/assets/node_modules/caniuse-lite/data/features/high-resolution-time.js b/assets/node_modules/caniuse-lite/data/features/high-resolution-time.js
deleted file mode 100644
index 331119d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/high-resolution-time.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f eB dB"},D:{"1":"0 1 2 3 4 5 6 8 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P","33":"Q R S T"},E:{"1":"7 9 G E A B C K bB PB fB","2":"F O H D WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"High Resolution Time API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/history.js b/assets/node_modules/caniuse-lite/data/features/history.js
deleted file mode 100644
index 6a1584d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/history.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F WB RB","4":"O YB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z GB lB","2":"7 E B gB hB iB jB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB","4":"CB"},H:{"2":"3B"},I:{"1":"QB 5B 6B CB 8B 9B","2":"OB F 4B 7B"},J:{"1":"D A"},K:{"1":"7 9 C M GB","2":"A B"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Session history management"};
diff --git a/assets/node_modules/caniuse-lite/data/features/html-media-capture.js b/assets/node_modules/caniuse-lite/data/features/html-media-capture.js
deleted file mode 100644
index db7215f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/html-media-capture.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"RB mB CB oB","129":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","2":"4B","257":"5B 6B"},J:{"1":"A","16":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"516":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"16":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:4,C:"HTML Media Capture"};
diff --git a/assets/node_modules/caniuse-lite/data/features/html5semantic.js b/assets/node_modules/caniuse-lite/data/features/html5semantic.js
deleted file mode 100644
index d598d0f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/html5semantic.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"nB","8":"H D G","260":"E A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB","132":"OB eB dB","260":"F O H D G E A B C K f L N I J P Q"},D:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","132":"F O","260":"H D G E A B C K f L N I J P Q R S T U V"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","132":"F WB RB","260":"O H YB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","132":"E B gB hB iB jB","260":"7 9 C GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","132":"RB","260":"mB CB oB pB"},H:{"132":"3B"},I:{"1":"QB 8B 9B","132":"4B","260":"OB F 5B 6B 7B CB"},J:{"260":"D A"},K:{"1":"M","132":"A","260":"7 9 B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"260":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"HTML5 semantic elements"};
diff --git a/assets/node_modules/caniuse-lite/data/features/http-live-streaming.js b/assets/node_modules/caniuse-lite/data/features/http-live-streaming.js
deleted file mode 100644
index efa4945..0000000
--- a/assets/node_modules/caniuse-lite/data/features/http-live-streaming.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J","2":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","2":"4B 5B 6B"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:7,C:"HTTP Live Streaming (HLS)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/http2.js b/assets/node_modules/caniuse-lite/data/features/http2.js
deleted file mode 100644
index 33610ad..0000000
--- a/assets/node_modules/caniuse-lite/data/features/http2.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","132":"B"},B:{"1":"C K f L N I J","513":"q"},C:{"1":"g h i j k l m n o p M r s t u v w","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB eB dB","513":"0 1 2 3 4 5 6 8 x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"l m n o p M r s t u","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k","513":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 B C K fB","2":"F O H D G WB RB YB ZB aB","260":"E A bB PB"},F:{"1":"Y Z a b c d e AB g h","2":"7 9 E B C L N I J P Q R S T U V W X gB hB iB jB GB lB","513":"0 1 2 3 4 5 6 i j k l m n o p M r s t u v w x y z"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","513":"QB"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"513":"q"},M:{"513":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F","513":"BC CC DC EC FC PB"},Q:{"513":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"HTTP/2 protocol"};
diff --git a/assets/node_modules/caniuse-lite/data/features/http3.js b/assets/node_modules/caniuse-lite/data/features/http3.js
deleted file mode 100644
index 10b9f54..0000000
--- a/assets/node_modules/caniuse-lite/data/features/http3.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB eB dB","194":"KB LB MB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB","322":"q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"HTTP/3 protocol"};
diff --git a/assets/node_modules/caniuse-lite/data/features/iframe-sandbox.js b/assets/node_modules/caniuse-lite/data/features/iframe-sandbox.js
deleted file mode 100644
index 9ccd05e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/iframe-sandbox.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N eB dB","4":"I J P Q R S T U V W X"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB"},H:{"2":"3B"},I:{"1":"OB F QB 5B 6B 7B CB 8B 9B","2":"4B"},J:{"1":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"sandbox attribute for iframes"};
diff --git a/assets/node_modules/caniuse-lite/data/features/iframe-seamless.js b/assets/node_modules/caniuse-lite/data/features/iframe-seamless.js
deleted file mode 100644
index f9c87b9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/iframe-seamless.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","66":"Q R S T U V W"},E:{"2":"7 9 F O H G E A B C K WB RB YB ZB bB PB fB","130":"D aB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB rB SB tB uB vB wB xB yB zB 0B 1B 2B","130":"qB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"seamless attribute for iframes"};
diff --git a/assets/node_modules/caniuse-lite/data/features/iframe-srcdoc.js b/assets/node_modules/caniuse-lite/data/features/iframe-srcdoc.js
deleted file mode 100644
index 629192f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/iframe-srcdoc.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"nB","8":"H D G E A B"},B:{"1":"q","8":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB","8":"OB F O H D G E A B C K f L N I J P Q R S T U eB dB"},D:{"1":"0 1 2 3 4 5 6 8 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K","8":"f L N I J P"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"WB RB","8":"F O YB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"E B gB hB iB jB","8":"7 9 C GB lB"},G:{"1":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB","8":"mB CB oB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","8":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","8":"D"},K:{"1":"M","2":"A B","8":"7 9 C GB"},L:{"1":"q"},M:{"1":"8"},N:{"8":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"srcdoc attribute for iframes"};
diff --git a/assets/node_modules/caniuse-lite/data/features/imagecapture.js b/assets/node_modules/caniuse-lite/data/features/imagecapture.js
deleted file mode 100644
index 5c1d44f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/imagecapture.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","322":"q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e eB dB","194":"0 1 2 3 4 5 6 8 AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w","322":"0 1 2 3 4 5 6 8 x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j gB hB iB jB GB lB","322":"0 1 2 3 4 5 6 k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"322":"GC"},R:{"1":"HC"},S:{"194":"IC"}},B:5,C:"ImageCapture API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/ime.js b/assets/node_modules/caniuse-lite/data/features/ime.js
deleted file mode 100644
index 3dd9913..0000000
--- a/assets/node_modules/caniuse-lite/data/features/ime.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","161":"B"},B:{"2":"q","161":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A","161":"B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"Input Method Editor API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js b/assets/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js
deleted file mode 100644
index c710508..0000000
--- a/assets/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"naturalWidth & naturalHeight image properties"};
diff --git a/assets/node_modules/caniuse-lite/data/features/imports.js b/assets/node_modules/caniuse-lite/data/features/imports.js
deleted file mode 100644
index cdfbc1e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/imports.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","8":"A B"},B:{"1":"q","8":"C K f L N I J"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z eB dB","8":"0 1 2 3 4 5 6 8 a b EB NB DB BB FB HB IB JB KB LB MB","72":"c d e AB g h i j k l m n o p M r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z sB UB VB","66":"a b c d e","72":"AB"},E:{"2":"F O WB RB YB","8":"7 9 H D G E A B C K ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N gB hB iB jB GB lB","66":"I J P Q R","72":"S"},G:{"2":"RB mB CB oB pB","8":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"8":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"HTML Imports"};
diff --git a/assets/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js b/assets/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js
deleted file mode 100644
index eb6cc84..0000000
--- a/assets/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D G E A B","16":"nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB dB","2":"kB OB","16":"eB"},D:{"1":"0 1 2 3 4 5 6 8 Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","2":"7 E B gB hB iB jB GB"},G:{"1":"zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"2":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"indeterminate checkbox"};
diff --git a/assets/node_modules/caniuse-lite/data/features/indexeddb.js b/assets/node_modules/caniuse-lite/data/features/indexeddb.js
deleted file mode 100644
index 94fef66..0000000
--- a/assets/node_modules/caniuse-lite/data/features/indexeddb.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","132":"A B"},B:{"1":"q","132":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","33":"A B C K f L","36":"F O H D G E"},D:{"1":"0 1 2 3 4 5 6 8 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"A","8":"F O H D G E","33":"T","36":"B C K f L N I J P Q R S"},E:{"1":"7 9 A B C K PB fB","8":"F O H D WB RB YB ZB","260":"G E aB bB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"E gB hB","8":"7 9 B C iB jB GB lB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","8":"RB mB CB oB pB qB","260":"G rB SB tB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","8":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","8":"D"},K:{"1":"M","2":"A","8":"7 9 B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"132":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"IndexedDB"};
diff --git a/assets/node_modules/caniuse-lite/data/features/indexeddb2.js b/assets/node_modules/caniuse-lite/data/features/indexeddb2.js
deleted file mode 100644
index 8d9a0b8..0000000
--- a/assets/node_modules/caniuse-lite/data/features/indexeddb2.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n eB dB","132":"o p M","260":"r s t u"},D:{"1":"2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r","132":"s t u v","260":"0 1 w x y z"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e gB hB iB jB GB lB","132":"AB g h i","260":"j k l m n o"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB","16":"uB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"DC EC FC PB","2":"F","260":"BC CC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"260":"IC"}},B:4,C:"IndexedDB 2.0"};
diff --git a/assets/node_modules/caniuse-lite/data/features/inline-block.js b/assets/node_modules/caniuse-lite/data/features/inline-block.js
deleted file mode 100644
index 5c1f2f8..0000000
--- a/assets/node_modules/caniuse-lite/data/features/inline-block.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"G E A B","4":"nB","132":"H D"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","36":"kB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"CSS inline-block"};
diff --git a/assets/node_modules/caniuse-lite/data/features/innertext.js b/assets/node_modules/caniuse-lite/data/features/innertext.js
deleted file mode 100644
index 0469ef0..0000000
--- a/assets/node_modules/caniuse-lite/data/features/innertext.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D G E A B","16":"nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K RB YB ZB aB bB PB fB","16":"WB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","16":"E"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB"},H:{"1":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"HTMLElement.innerText"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js b/assets/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js
deleted file mode 100644
index 58cd3eb..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D G E A nB","132":"B"},B:{"132":"C K f L N I J","260":"q"},C:{"1":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z eB dB","516":"0 1 2 3 4 5 6 8 a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"I J P Q R S T U V W","2":"F O H D G E A B C K f L N","132":"X Y Z a b c d e AB g h i j k","260":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"H YB ZB","2":"F O WB RB","2052":"7 9 D G E A B C K aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"RB mB CB","1025":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1025":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2052":"A B"},O:{"1025":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"260":"GC"},R:{"1":"HC"},S:{"516":"IC"}},B:1,C:"autocomplete attribute: on & off values"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-color.js b/assets/node_modules/caniuse-lite/data/features/input-color.js
deleted file mode 100644
index 4d6eb05..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-color.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"f L N I J q","2":"C K"},C:{"1":"0 1 2 3 4 5 6 8 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y eB dB"},D:{"1":"0 1 2 3 4 5 6 8 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P"},E:{"1":"9 K fB","2":"7 F O H D G E A B C WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z GB lB","2":"E L N gB hB iB jB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB","129":"zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:1,C:"Color input type"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-datetime.js b/assets/node_modules/caniuse-lite/data/features/input-datetime.js
deleted file mode 100644
index aec0603..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-datetime.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"K f L N I J q","132":"C"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w eB dB","1090":"0 x y z","2052":"1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P","2052":"Q R S T U"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"RB mB CB","260":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB 4B 5B 6B","514":"F 7B CB"},J:{"1":"A","2":"D"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2052":"IC"}},B:1,C:"Date and time input types"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-email-tel-url.js b/assets/node_modules/caniuse-lite/data/features/input-email-tel-url.js
deleted file mode 100644
index 4d880b8..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-email-tel-url.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","2":"E"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","132":"4B 5B 6B"},J:{"1":"A","132":"D"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Email, telephone & URL input types"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-event.js b/assets/node_modules/caniuse-lite/data/features/input-event.js
deleted file mode 100644
index fcc85d1..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-event.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","2561":"A B","2692":"E"},B:{"1":"q","2561":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","16":"kB","1537":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s dB","1796":"OB eB"},D:{"1":"8 BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f","1025":"0 1 2 3 4 5 6 AB g h i j k l m n o p M r s t u v w x y z EB NB DB","1537":"L N I J P Q R S T U V W X Y Z a b c d e"},E:{"16":"F O H WB RB","1025":"7 9 D G E A B C K ZB aB bB PB fB","1537":"YB"},F:{"1":"0 1 2 3 4 5 6 9 w x y z","16":"7 E B C gB hB iB jB GB","260":"lB","1025":"S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v","1537":"L N I J P Q R"},G:{"16":"RB mB CB","1025":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","1537":"oB pB qB"},H:{"2":"3B"},I:{"16":"4B 5B","1025":"QB 9B","1537":"OB F 6B 7B CB 8B"},J:{"1025":"A","1537":"D"},K:{"1":"7 9 A B C GB","1025":"M"},L:{"1":"q"},M:{"1537":"8"},N:{"2561":"A B"},O:{"1537":"AC"},P:{"1025":"F BC CC DC EC FC PB"},Q:{"1025":"GC"},R:{"1025":"HC"},S:{"1537":"IC"}},B:1,C:"input event"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-file-accept.js b/assets/node_modules/caniuse-lite/data/features/input-file-accept.js
deleted file mode 100644
index f5da945..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-file-accept.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","132":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g"},D:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F","16":"O H D G R S T U V","132":"E A B C K f L N I J P Q"},E:{"1":"7 9 C K fB","2":"F O WB RB YB","132":"H D G E A B ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"2":"pB qB","132":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","514":"RB mB CB oB"},H:{"2":"3B"},I:{"2":"4B 5B 6B","260":"OB F 7B CB","514":"QB 8B 9B"},J:{"132":"A","260":"D"},K:{"2":"7 9 A B C GB","260":"M"},L:{"260":"q"},M:{"2":"8"},N:{"514":"A","1028":"B"},O:{"2":"AC"},P:{"260":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"260":"HC"},S:{"1":"IC"}},B:1,C:"accept attribute for file input"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-file-directory.js b/assets/node_modules/caniuse-lite/data/features/input-file-directory.js
deleted file mode 100644
index 8f02d52..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-file-directory.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"f L N I J q","2":"C K"},C:{"1":"0 1 2 3 4 5 6 8 u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t eB dB"},D:{"1":"0 1 2 3 4 5 6 8 a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z"},E:{"1":"7 9 C K fB","2":"F O H D G E A B WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"Directory selection from file input"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-file-multiple.js b/assets/node_modules/caniuse-lite/data/features/input-file-multiple.js
deleted file mode 100644
index 6d4b43d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-file-multiple.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB dB","2":"kB OB eB"},D:{"1":"0 1 2 3 4 5 6 8 O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","2":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z jB GB lB","2":"E gB hB iB"},G:{"1":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB"},H:{"130":"3B"},I:{"130":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"130":"7 9 A B C M GB"},L:{"132":"q"},M:{"130":"8"},N:{"2":"A B"},O:{"130":"AC"},P:{"130":"F","132":"BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"132":"HC"},S:{"2":"IC"}},B:1,C:"Multiple file selection"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-inputmode.js b/assets/node_modules/caniuse-lite/data/features/input-inputmode.js
deleted file mode 100644
index 0620e0a..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-inputmode.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"kB OB F O H D G E A B C K f L N eB dB","4":"I J P Q","194":"0 1 2 3 4 5 6 8 R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"8 BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","66":"0 1 2 3 4 5 6 EB NB DB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m gB hB iB jB GB lB","66":"n o p M r s t u v w"},G:{"1":"zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"194":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"FC PB","2":"F BC CC DC EC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"194":"IC"}},B:1,C:"inputmode attribute"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-minlength.js b/assets/node_modules/caniuse-lite/data/features/input-minlength.js
deleted file mode 100644
index f1f8ba0..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-minlength.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"I J q","2":"C K f L N"},C:{"1":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u eB dB"},D:{"1":"0 1 2 3 4 5 6 8 k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W gB hB iB jB GB lB"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:1,C:"Minimum length attribute for input fields"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-number.js b/assets/node_modules/caniuse-lite/data/features/input-number.js
deleted file mode 100644
index b3069c7..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-number.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","129":"A B"},B:{"1":"q","129":"C K","1025":"f L N I J"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y eB dB","513":"0 1 2 3 4 5 6 8 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"0 1 2 3 4 5 6 8 H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"388":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB 4B 5B 6B","388":"F QB 7B CB 8B 9B"},J:{"2":"D","388":"A"},K:{"1":"7 9 A B C GB","388":"M"},L:{"388":"q"},M:{"641":"8"},N:{"388":"A B"},O:{"388":"AC"},P:{"388":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"388":"HC"},S:{"513":"IC"}},B:1,C:"Number input type"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-pattern.js b/assets/node_modules/caniuse-lite/data/features/input-pattern.js
deleted file mode 100644
index 4ecfb73..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-pattern.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E"},E:{"1":"7 9 B C K PB fB","2":"F WB RB","16":"O","388":"H D G E A YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","2":"E"},G:{"1":"vB wB xB yB zB 0B 1B 2B","16":"RB mB CB","388":"G oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"1":"QB 9B","2":"OB F 4B 5B 6B 7B CB 8B"},J:{"1":"A","2":"D"},K:{"1":"7 9 A B C GB","132":"M"},L:{"1":"q"},M:{"1":"8"},N:{"132":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Pattern attribute for input fields"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-placeholder.js b/assets/node_modules/caniuse-lite/data/features/input-placeholder.js
deleted file mode 100644
index e1863c6..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-placeholder.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","132":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z GB lB","2":"E gB hB iB jB","132":"7 B"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB QB 4B 5B 6B CB 8B 9B","4":"F 7B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"input placeholder attribute"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-range.js b/assets/node_modules/caniuse-lite/data/features/input-range.js
deleted file mode 100644
index c34a0c7..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-range.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"2":"3B"},I:{"1":"QB CB 8B 9B","4":"OB F 4B 5B 6B 7B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Range input type"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-search.js b/assets/node_modules/caniuse-lite/data/features/input-search.js
deleted file mode 100644
index 454ce73..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-search.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","129":"A B"},B:{"1":"q","129":"C K f L N I J"},C:{"2":"kB OB eB dB","129":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f R S T U V","129":"L N I J P Q"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","16":"F O WB RB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","2":"E gB hB iB jB","16":"7 B GB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB"},H:{"129":"3B"},I:{"1":"QB 8B 9B","16":"4B 5B","129":"OB F 6B 7B CB"},J:{"1":"D","129":"A"},K:{"1":"C","2":"A","16":"7 B GB","129":"9 M"},L:{"1":"q"},M:{"129":"8"},N:{"129":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"129":"IC"}},B:1,C:"Search input type"};
diff --git a/assets/node_modules/caniuse-lite/data/features/input-selection.js b/assets/node_modules/caniuse-lite/data/features/input-selection.js
deleted file mode 100644
index 92a2bb9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/input-selection.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","16":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z jB GB lB","16":"E gB hB iB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB"},H:{"2":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Selection controls for input & textarea"};
diff --git a/assets/node_modules/caniuse-lite/data/features/insert-adjacent.js b/assets/node_modules/caniuse-lite/data/features/insert-adjacent.js
deleted file mode 100644
index 7d4700b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/insert-adjacent.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D G E A B","16":"nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","16":"E"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Element.insertAdjacentElement() & Element.insertAdjacentText()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/insertadjacenthtml.js b/assets/node_modules/caniuse-lite/data/features/insertadjacenthtml.js
deleted file mode 100644
index 027eb60..0000000
--- a/assets/node_modules/caniuse-lite/data/features/insertadjacenthtml.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","16":"nB","132":"H D G E"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","2":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z hB iB jB GB lB","16":"E gB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB"},H:{"1":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"Element.insertAdjacentHTML()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/internationalization-plural-rul.js b/assets/node_modules/caniuse-lite/data/features/internationalization-plural-rul.js
deleted file mode 100644
index a8ff0cd..0000000
--- a/assets/node_modules/caniuse-lite/data/features/internationalization-plural-rul.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"L H G E A B jB"},B:{"1":"8","2":"C D e K I N","130":"J"},C:{"1":"1 2 3 9 KB JB CB DB EB O GB HB IB","2":"0 4 5 7 gB BB F L H G E A B C D e K I N J P Q R S T U V W X Y Z a b c d f g h i j k l m n o M q r s t u v w x y z aB ZB"},D:{"1":"8 JB CB DB EB O GB HB IB TB PB OB mB MB QB RB","2":"0 1 2 3 4 5 7 9 F L H G E A B C D e K I N J P Q R S T U V W X Y Z a b c d f g h i j k l m n o M q r s t u v w x y z KB"},E:{"2":"4 6 F L H G E A B C SB LB UB VB WB XB YB p","16":"D bB"},F:{"1":"0 1 2 3 t u v w x y z","2":"5 6 7 E B C K I N J P Q R S T U V W X Y Z a b c d f g h i j k l m n o M q r s cB dB eB fB p AB hB"},G:{"2":"G D LB iB FB kB lB NB nB oB pB qB rB sB tB uB vB"},H:{"2":"wB"},I:{"1":"O","2":"BB F xB yB zB 0B FB 1B 2B"},J:{"2":"H A"},K:{"2":"6 A B C M p AB"},L:{"1":"MB"},M:{"1":"O"},N:{"2":"A B"},O:{"2":"3B"},P:{"2":"F 4B 5B 6B 7B 8B"},Q:{"2":"9B"},R:{"2":"AC"},S:{"2":"BC"}},B:6,C:"Intl.PluralRules API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/internationalization.js b/assets/node_modules/caniuse-lite/data/features/internationalization.js
deleted file mode 100644
index 54e7dd4..0000000
--- a/assets/node_modules/caniuse-lite/data/features/internationalization.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G E A nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y eB dB"},D:{"1":"0 1 2 3 4 5 6 8 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T"},E:{"1":"7 9 A B C K PB fB","2":"F O H D G E WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","2":"A"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:6,C:"Internationalization API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/intersectionobserver.js b/assets/node_modules/caniuse-lite/data/features/intersectionobserver.js
deleted file mode 100644
index 86bd85a..0000000
--- a/assets/node_modules/caniuse-lite/data/features/intersectionobserver.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"N I J","2":"C K f","516":"L","1025":"q"},C:{"1":"0 1 2 3 4 5 6 8 z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v eB dB","194":"w x y"},D:{"1":"2 3 4 5 6 EB NB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u","516":"0 1 v w x y z","1025":"8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"9 K fB","2":"7 F O H D G E A B C WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h gB hB iB jB GB lB","516":"i j k l m n o","1025":"6"},G:{"1":"zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"516":"AC"},P:{"1":"DC EC FC PB","2":"F","516":"BC CC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"IntersectionObserver"};
diff --git a/assets/node_modules/caniuse-lite/data/features/intl-pluralrules.js b/assets/node_modules/caniuse-lite/data/features/intl-pluralrules.js
deleted file mode 100644
index b9e5bb3..0000000
--- a/assets/node_modules/caniuse-lite/data/features/intl-pluralrules.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I","130":"J"},C:{"1":"2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB","2":"0 1 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z eB dB"},D:{"1":"5 6 8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB"},E:{"1":"fB","2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"EC FC PB","2":"F BC CC DC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"Intl.PluralRules API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/intrinsic-width.js b/assets/node_modules/caniuse-lite/data/features/intrinsic-width.js
deleted file mode 100644
index 03b6029..0000000
--- a/assets/node_modules/caniuse-lite/data/features/intrinsic-width.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","1537":"q"},C:{"2":"kB","932":"0 1 2 3 4 5 6 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB eB dB","2308":"8 BB FB HB IB JB KB LB MB"},D:{"2":"F O H D G E A B C K f L N I J P Q R","545":"S T U V W X Y Z a b c d e AB g h i j k l m n o p","1537":"0 1 2 3 4 5 6 8 M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O H WB RB YB","516":"7 9 B C K fB","548":"E A bB PB","676":"D G ZB aB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","513":"e","545":"L N I J P Q R S T U V W X Y Z a b c","1537":"0 1 2 3 4 5 6 d AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"RB mB CB oB pB","548":"SB tB uB vB wB xB yB zB 0B 1B 2B","676":"G qB rB"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB","545":"8B 9B","1537":"QB"},J:{"2":"D","545":"A"},K:{"2":"7 9 A B C GB","1537":"M"},L:{"1537":"q"},M:{"2340":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"545":"F","1537":"BC CC DC EC FC PB"},Q:{"545":"GC"},R:{"1537":"HC"},S:{"932":"IC"}},B:5,C:"Intrinsic & Extrinsic Sizing"};
diff --git a/assets/node_modules/caniuse-lite/data/features/jpeg2000.js b/assets/node_modules/caniuse-lite/data/features/jpeg2000.js
deleted file mode 100644
index 5fd54ab..0000000
--- a/assets/node_modules/caniuse-lite/data/features/jpeg2000.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F WB RB","129":"O YB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"JPEG 2000 image format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/jpegxr.js b/assets/node_modules/caniuse-lite/data/features/jpegxr.js
deleted file mode 100644
index f1c7cf3..0000000
--- a/assets/node_modules/caniuse-lite/data/features/jpegxr.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J","2":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"1":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"JPEG XR image format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js b/assets/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js
deleted file mode 100644
index 8a72032..0000000
--- a/assets/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"4 5 6 8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"EC FC PB","2":"F BC CC DC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"Lookbehind in JS regular expressions"};
diff --git a/assets/node_modules/caniuse-lite/data/features/json.js b/assets/node_modules/caniuse-lite/data/features/json.js
deleted file mode 100644
index 4cddc0f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/json.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D nB","129":"G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB OB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","2":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","2":"E gB hB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"JSON parsing"};
diff --git a/assets/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js b/assets/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js
deleted file mode 100644
index fe52099..0000000
--- a/assets/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L","132":"N I J"},C:{"1":"0 1 2 3 4 5 6 8 w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v eB dB"},D:{"1":"3 4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","132":"1 2 EB"},E:{"1":"7 9 B C K fB","2":"F O H D G E A WB RB YB ZB aB bB","132":"PB"},F:{"1":"0 1 2 3 4 5 6 r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n gB hB iB jB GB lB","132":"o p M"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB","132":"vB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"132":"AC"},P:{"1":"EC FC PB","2":"F BC CC","132":"DC"},Q:{"132":"GC"},R:{"2":"HC"},S:{"132":"IC"}},B:5,C:"CSS justify-content: space-evenly"};
diff --git a/assets/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js b/assets/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js
deleted file mode 100644
index 6fad1f8..0000000
--- a/assets/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"J q","2":"C K f L N I"},C:{"1":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"4B 5B 6B","132":"OB F 7B CB"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:7,C:"High-quality kerning pairs & ligatures"};
diff --git a/assets/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js b/assets/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js
deleted file mode 100644
index 06e0952..0000000
--- a/assets/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","16":"kB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","16":"WB RB"},F:{"1":"0 1 2 3 4 5 6 9 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B gB hB iB jB GB lB","16":"C"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB"},H:{"2":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"9","2":"7 A B GB","16":"C","130":"M"},L:{"1":"q"},M:{"130":"8"},N:{"130":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:7,C:"KeyboardEvent.charCode"};
diff --git a/assets/node_modules/caniuse-lite/data/features/keyboardevent-code.js b/assets/node_modules/caniuse-lite/data/features/keyboardevent-code.js
deleted file mode 100644
index c56b54b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/keyboardevent-code.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h eB dB"},D:{"1":"0 1 2 3 4 5 6 8 s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l","194":"m n o p M r"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y gB hB iB jB GB lB","194":"Z a b c d e"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","194":"M"},L:{"194":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F","194":"BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"194":"HC"},S:{"1":"IC"}},B:5,C:"KeyboardEvent.code"};
diff --git a/assets/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js b/assets/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js
deleted file mode 100644
index 207c4d6..0000000
--- a/assets/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f eB dB"},D:{"1":"0 1 2 3 4 5 6 8 a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 9 I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B L N gB hB iB jB GB lB","16":"C"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"2":"D A"},K:{"1":"9 M","2":"7 A B GB","16":"C"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"KeyboardEvent.getModifierState()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/keyboardevent-key.js b/assets/node_modules/caniuse-lite/data/features/keyboardevent-key.js
deleted file mode 100644
index 351c6b6..0000000
--- a/assets/node_modules/caniuse-lite/data/features/keyboardevent-key.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","260":"E A B"},B:{"1":"q","260":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S eB dB","132":"T U V W X Y"},D:{"1":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 9 i j k l m n o p M r s t u v w x y z","2":"7 E B L N I J P Q R S T U V W X Y Z a b c d e AB g h gB hB iB jB GB lB","16":"C"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"9","2":"7 A B GB","16":"C M"},L:{"1":"q"},M:{"1":"8"},N:{"260":"A B"},O:{"2":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:5,C:"KeyboardEvent.key"};
diff --git a/assets/node_modules/caniuse-lite/data/features/keyboardevent-location.js b/assets/node_modules/caniuse-lite/data/features/keyboardevent-location.js
deleted file mode 100644
index 648317d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/keyboardevent-location.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f eB dB"},D:{"1":"0 1 2 3 4 5 6 8 a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","132":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","16":"H WB RB","132":"F O YB"},F:{"1":"0 1 2 3 4 5 6 9 I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B gB hB iB jB GB lB","16":"C","132":"L N"},G:{"1":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB","132":"oB pB qB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","16":"4B 5B","132":"OB F 6B 7B CB"},J:{"132":"D A"},K:{"1":"9 M","2":"7 A B GB","16":"C"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"KeyboardEvent.location"};
diff --git a/assets/node_modules/caniuse-lite/data/features/keyboardevent-which.js b/assets/node_modules/caniuse-lite/data/features/keyboardevent-which.js
deleted file mode 100644
index dc1e5c3..0000000
--- a/assets/node_modules/caniuse-lite/data/features/keyboardevent-which.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB","16":"O"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z hB iB jB GB lB","16":"E gB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB"},H:{"2":"3B"},I:{"1":"OB F QB 6B 7B CB","16":"4B 5B","132":"8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C GB","132":"M"},L:{"132":"q"},M:{"132":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"2":"F","132":"BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"132":"HC"},S:{"1":"IC"}},B:7,C:"KeyboardEvent.which"};
diff --git a/assets/node_modules/caniuse-lite/data/features/lazyload.js b/assets/node_modules/caniuse-lite/data/features/lazyload.js
deleted file mode 100644
index 217a3ed..0000000
--- a/assets/node_modules/caniuse-lite/data/features/lazyload.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G E A nB"},B:{"1":"C K f L N I J","2":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"1":"B","2":"A"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"Resource Hints: Lazyload"};
diff --git a/assets/node_modules/caniuse-lite/data/features/let.js b/assets/node_modules/caniuse-lite/data/features/let.js
deleted file mode 100644
index 582df85..0000000
--- a/assets/node_modules/caniuse-lite/data/features/let.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","2052":"B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","194":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n eB dB"},D:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J","322":"P Q R S T U V W X Y Z a b c d e AB g h i j k","516":"l m n o p M r s"},E:{"1":"7 9 B C K fB","2":"F O H D G E WB RB YB ZB aB bB","1028":"A PB"},F:{"1":"0 1 2 3 4 5 6 g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","322":"L N I J P Q R S T U V W X","516":"Y Z a b c d e AB"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB","1028":"uB vB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","2":"A"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","516":"F"},Q:{"2":"GC"},R:{"516":"HC"},S:{"1":"IC"}},B:6,C:"let"};
diff --git a/assets/node_modules/caniuse-lite/data/features/link-icon-png.js b/assets/node_modules/caniuse-lite/data/features/link-icon-png.js
deleted file mode 100644
index 56dd2ba..0000000
--- a/assets/node_modules/caniuse-lite/data/features/link-icon-png.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G E A nB"},B:{"1":"C K f L N I J","129":"q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"129":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"257":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"129":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","513":"7 9 E B C gB hB iB jB GB lB"},G:{"1026":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1026":"3B"},I:{"1":"OB F 4B 5B 6B 7B CB","513":"QB 8B 9B"},J:{"1":"D","1026":"A"},K:{"1026":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1026":"A B"},O:{"257":"AC"},P:{"1":"BC CC DC EC FC PB","513":"F"},Q:{"129":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"PNG favicons"};
diff --git a/assets/node_modules/caniuse-lite/data/features/link-icon-svg.js b/assets/node_modules/caniuse-lite/data/features/link-icon-svg.js
deleted file mode 100644
index 0e38699..0000000
--- a/assets/node_modules/caniuse-lite/data/features/link-icon-svg.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","16":"q"},C:{"2":"kB OB eB dB","260":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k","1025":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q","3073":"sB UB VB"},E:{"2":"F O H D G WB RB YB ZB aB","516":"7 9 E A B C K bB PB fB"},F:{"1":"o p M r s t u v w x","2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n y z gB hB iB jB GB lB"},G:{"130":"G RB mB CB oB pB qB rB","516":"SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"130":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D","130":"A"},K:{"130":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"130":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1025":"IC"}},B:1,C:"SVG favicons"};
diff --git a/assets/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js b/assets/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js
deleted file mode 100644
index 61ea308..0000000
--- a/assets/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G nB","132":"E"},B:{"1":"C K f L N I J q"},C:{"2":"kB OB","260":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"16":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"16":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"16":"D A"},K:{"16":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","2":"A"},O:{"16":"AC"},P:{"1":"BC CC DC EC FC PB","16":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"Resource Hints: dns-prefetch"};
diff --git a/assets/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js b/assets/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js
deleted file mode 100644
index 82f7c37..0000000
--- a/assets/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"8 BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"FC PB","2":"F BC CC DC EC"},Q:{"16":"GC"},R:{"16":"HC"},S:{"2":"IC"}},B:1,C:"Resource Hints: modulepreload"};
diff --git a/assets/node_modules/caniuse-lite/data/features/link-rel-preconnect.js b/assets/node_modules/caniuse-lite/data/features/link-rel-preconnect.js
deleted file mode 100644
index 45bce69..0000000
--- a/assets/node_modules/caniuse-lite/data/features/link-rel-preconnect.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f","260":"L N I J"},C:{"1":"0 1 2 3 4 5 6 8 k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i eB dB","129":"j"},D:{"1":"0 1 2 3 4 5 6 8 M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p"},E:{"1":"7 9 C K fB","2":"F O H D G E A B WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c gB hB iB jB GB lB"},G:{"1":"xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"16":"8"},N:{"2":"A B"},O:{"16":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"Resource Hints: preconnect"};
diff --git a/assets/node_modules/caniuse-lite/data/features/link-rel-prefetch.js b/assets/node_modules/caniuse-lite/data/features/link-rel-prefetch.js
deleted file mode 100644
index bb9b3b6..0000000
--- a/assets/node_modules/caniuse-lite/data/features/link-rel-prefetch.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G E A nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"F QB 8B 9B","2":"OB 4B 5B 6B 7B CB"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","2":"A"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"Resource Hints: prefetch"};
diff --git a/assets/node_modules/caniuse-lite/data/features/link-rel-preload.js b/assets/node_modules/caniuse-lite/data/features/link-rel-preload.js
deleted file mode 100644
index 6d3815b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/link-rel-preload.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N","1028":"I J"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z eB dB","132":"0","578":"1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"0 1 2 3 4 5 6 8 u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t"},E:{"1":"7 9 C K fB","2":"F O H D G E A WB RB YB ZB aB bB PB","322":"B"},F:{"1":"0 1 2 3 4 5 6 h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g gB hB iB jB GB lB"},G:{"1":"xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB","322":"wB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"578":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:4,C:"Resource Hints: preload"};
diff --git a/assets/node_modules/caniuse-lite/data/features/link-rel-prerender.js b/assets/node_modules/caniuse-lite/data/features/link-rel-prerender.js
deleted file mode 100644
index 28644cf..0000000
--- a/assets/node_modules/caniuse-lite/data/features/link-rel-prerender.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G E A nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"1":"B","2":"A"},O:{"2":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:5,C:"Resource Hints: prerender"};
diff --git a/assets/node_modules/caniuse-lite/data/features/loading-lazy-attr.js b/assets/node_modules/caniuse-lite/data/features/loading-lazy-attr.js
deleted file mode 100644
index cb8cc9e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/loading-lazy-attr.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","194":"cB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"6","2":"0 1 2 3 4 5 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"Lazy loading via attribute for images & iframes"};
diff --git a/assets/node_modules/caniuse-lite/data/features/localecompare.js b/assets/node_modules/caniuse-lite/data/features/localecompare.js
deleted file mode 100644
index 4e777c9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/localecompare.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","16":"nB","132":"H D G E A"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","132":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y eB dB"},D:{"1":"0 1 2 3 4 5 6 8 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","132":"F O H D G E A B C K f L N I J P Q R S T"},E:{"1":"7 9 A B C K PB fB","132":"F O H D G E WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","16":"7 E B C gB hB iB jB GB lB","132":"9"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","132":"G RB mB CB oB pB qB rB SB tB"},H:{"132":"3B"},I:{"1":"QB 8B 9B","132":"OB F 4B 5B 6B 7B CB"},J:{"132":"D A"},K:{"1":"M","16":"7 A B C GB","132":"9"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","132":"A"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","132":"F"},Q:{"132":"GC"},R:{"1":"HC"},S:{"4":"IC"}},B:6,C:"localeCompare()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/magnetometer.js b/assets/node_modules/caniuse-lite/data/features/magnetometer.js
deleted file mode 100644
index 848424c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/magnetometer.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"8 FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","194":"2 3 4 5 6 EB NB DB BB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"194":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:4,C:"Magnetometer"};
diff --git a/assets/node_modules/caniuse-lite/data/features/matchesselector.js b/assets/node_modules/caniuse-lite/data/features/matchesselector.js
deleted file mode 100644
index 544a99b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/matchesselector.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","36":"E A B"},B:{"1":"L N I J q","36":"C K f"},C:{"1":"0 1 2 3 4 5 6 8 e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB","36":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d dB"},D:{"1":"0 1 2 3 4 5 6 8 e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","36":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d"},E:{"1":"7 9 G E A B C K aB bB PB fB","2":"F WB RB","36":"O H D YB ZB"},F:{"1":"0 1 2 3 4 5 6 R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B gB hB iB jB","36":"9 C L N I J P Q GB lB"},G:{"1":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB","36":"mB CB oB pB qB"},H:{"2":"3B"},I:{"1":"QB","2":"4B","36":"OB F 5B 6B 7B CB 8B 9B"},J:{"36":"D A"},K:{"1":"M","2":"A B","36":"7 9 C GB"},L:{"1":"q"},M:{"1":"8"},N:{"36":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","36":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"matches() DOM method"};
diff --git a/assets/node_modules/caniuse-lite/data/features/matchmedia.js b/assets/node_modules/caniuse-lite/data/features/matchmedia.js
deleted file mode 100644
index b16f42e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/matchmedia.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O eB dB"},D:{"1":"0 1 2 3 4 5 6 8 E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","2":"F O WB RB"},F:{"1":"0 1 2 3 4 5 6 9 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B C gB hB iB jB GB lB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"1":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","2":"4B 5B 6B"},J:{"1":"A","2":"D"},K:{"1":"9 M","2":"7 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"matchMedia"};
diff --git a/assets/node_modules/caniuse-lite/data/features/mathml.js b/assets/node_modules/caniuse-lite/data/features/mathml.js
deleted file mode 100644
index d297f14..0000000
--- a/assets/node_modules/caniuse-lite/data/features/mathml.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"E A B nB","8":"H D G"},B:{"2":"C K f L N I J","8":"q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","129":"kB OB eB dB"},D:{"1":"U","8":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 A B C K PB fB","260":"F O H D G E WB RB YB ZB aB bB"},F:{"2":"E","4":"7 9 B C gB hB iB jB GB lB","8":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","8":"RB mB CB"},H:{"8":"3B"},I:{"8":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"A","8":"D"},K:{"8":"7 9 A B C M GB"},L:{"8":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"4":"AC"},P:{"8":"F BC CC DC EC FC PB"},Q:{"8":"GC"},R:{"8":"HC"},S:{"1":"IC"}},B:2,C:"MathML"};
diff --git a/assets/node_modules/caniuse-lite/data/features/maxlength.js b/assets/node_modules/caniuse-lite/data/features/maxlength.js
deleted file mode 100644
index 7de7565..0000000
--- a/assets/node_modules/caniuse-lite/data/features/maxlength.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","16":"nB","900":"H D G E"},B:{"1":"q","1025":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB","900":"kB OB eB dB","1025":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","16":"O WB","900":"F RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","16":"E","132":"7 9 B C gB hB iB jB GB lB"},G:{"1":"mB CB oB pB qB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB","2052":"G rB"},H:{"132":"3B"},I:{"1":"OB F 6B 7B CB 8B 9B","16":"4B 5B","4097":"QB"},J:{"1":"D A"},K:{"132":"7 9 A B C GB","4100":"M"},L:{"4097":"q"},M:{"4097":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"4097":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1025":"IC"}},B:1,C:"maxlength attribute for input and textarea elements"};
diff --git a/assets/node_modules/caniuse-lite/data/features/media-attribute.js b/assets/node_modules/caniuse-lite/data/features/media-attribute.js
deleted file mode 100644
index 8c44efc..0000000
--- a/assets/node_modules/caniuse-lite/data/features/media-attribute.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J","16":"q"},C:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f eB dB"},D:{"1":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d","2":"0 1 2 3 4 5 6 8 e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q","16":"sB UB VB"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","2":"F O WB RB"},F:{"1":"7 9 B C L N I J P Q R S T U hB iB jB GB lB","2":"0 1 2 3 4 5 6 E V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB"},H:{"16":"3B"},I:{"1":"F QB 7B CB 8B 9B","16":"OB 4B 5B 6B"},J:{"16":"D A"},K:{"1":"9 C M","16":"7 A B GB"},L:{"1":"q"},M:{"1":"8"},N:{"16":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Media attribute"};
diff --git a/assets/node_modules/caniuse-lite/data/features/media-fragments.js b/assets/node_modules/caniuse-lite/data/features/media-fragments.js
deleted file mode 100644
index 6b4a950..0000000
--- a/assets/node_modules/caniuse-lite/data/features/media-fragments.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","132":"q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d eB dB","132":"0 1 2 3 4 5 6 8 e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"2":"F O H D G E A B C K f L N I","132":"0 1 2 3 4 5 6 8 J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O WB RB YB","132":"7 9 H D G E A B C K ZB aB bB PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","132":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"RB mB CB oB pB qB","132":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB","132":"QB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"132":"q"},M:{"132":"8"},N:{"132":"A B"},O:{"2":"AC"},P:{"2":"F BC","132":"CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"132":"IC"}},B:2,C:"Media Fragments"};
diff --git a/assets/node_modules/caniuse-lite/data/features/media-session-api.js b/assets/node_modules/caniuse-lite/data/features/media-session-api.js
deleted file mode 100644
index 7b50528..0000000
--- a/assets/node_modules/caniuse-lite/data/features/media-session-api.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB","16":"fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"Media Session API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js b/assets/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js
deleted file mode 100644
index b4748cc..0000000
--- a/assets/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m eB dB","260":"0 1 2 3 4 5 6 8 n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"4 5 6 8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u","324":"0 1 2 3 v w x y z EB NB"},E:{"2":"F O H D G E A WB RB YB ZB aB bB PB","132":"7 9 B C K fB"},F:{"1":"0 1 2 3 4 5 6 s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB gB hB iB jB GB lB","324":"g h i j k l m n o p M r"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"260":"8"},N:{"2":"A B"},O:{"132":"AC"},P:{"1":"EC FC PB","2":"F","132":"BC CC DC"},Q:{"132":"GC"},R:{"2":"HC"},S:{"260":"IC"}},B:5,C:"Media Capture from DOM Elements API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/mediarecorder.js b/assets/node_modules/caniuse-lite/data/features/mediarecorder.js
deleted file mode 100644
index b43d429..0000000
--- a/assets/node_modules/caniuse-lite/data/features/mediarecorder.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y eB dB"},D:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M","194":"r s"},E:{"1":"fB","2":"7 F O H D G E A B C WB RB YB ZB aB bB PB","322":"9 K"},F:{"1":"0 1 2 3 4 5 6 g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d gB hB iB jB GB lB","194":"e AB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB","578":"yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:5,C:"MediaRecorder API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/mediasource.js b/assets/node_modules/caniuse-lite/data/features/mediasource.js
deleted file mode 100644
index 1c1d124..0000000
--- a/assets/node_modules/caniuse-lite/data/features/mediasource.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","260":"B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U eB dB","194":"V W X Y Z a b c d e AB g h i j k l"},D:{"1":"0 1 2 3 4 5 6 8 b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N","33":"T U V W X Y Z a","66":"I J P Q R S"},E:{"1":"7 9 G E A B C K bB PB fB","2":"F O H D WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB","1028":"0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB 9B","2":"OB F 4B 5B 6B 7B CB 8B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","2":"A"},O:{"1":"AC"},P:{"514":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"Media Source Extensions"};
diff --git a/assets/node_modules/caniuse-lite/data/features/menu.js b/assets/node_modules/caniuse-lite/data/features/menu.js
deleted file mode 100644
index a744346..0000000
--- a/assets/node_modules/caniuse-lite/data/features/menu.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","2114":"q"},C:{"2":"kB OB F O H D eB dB","132":"0 1 2 3 4 5 6 8 G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k","322":"s t u v","578":"l m n o p M r","2114":"0 1 2 3 4 5 6 8 w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e gB hB iB jB GB lB","322":"AB g h i","2114":"0 1 2 3 4 5 6 j k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"1156":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2114":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"Context menu item (menuitem element)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/meta-theme-color.js b/assets/node_modules/caniuse-lite/data/features/meta-theme-color.js
deleted file mode 100644
index ac7c403..0000000
--- a/assets/node_modules/caniuse-lite/data/features/meta-theme-color.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB","132":"LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"CC DC EC FC PB","2":"F","16":"BC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:1,C:"theme-color Meta Tag"};
diff --git a/assets/node_modules/caniuse-lite/data/features/meter.js b/assets/node_modules/caniuse-lite/data/features/meter.js
deleted file mode 100644
index ca0fe3e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/meter.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"K f L N I J q","2":"C"},C:{"1":"0 1 2 3 4 5 6 8 N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L eB dB"},D:{"1":"0 1 2 3 4 5 6 8 G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z GB lB","2":"E gB hB iB jB"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"1":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"meter element"};
diff --git a/assets/node_modules/caniuse-lite/data/features/midi.js b/assets/node_modules/caniuse-lite/data/features/midi.js
deleted file mode 100644
index c42e35c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/midi.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:5,C:"Web MIDI API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/minmaxwh.js b/assets/node_modules/caniuse-lite/data/features/minmaxwh.js
deleted file mode 100644
index eb514d0..0000000
--- a/assets/node_modules/caniuse-lite/data/features/minmaxwh.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","8":"H nB","129":"D","257":"G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"CSS min/max-width/height"};
diff --git a/assets/node_modules/caniuse-lite/data/features/mp3.js b/assets/node_modules/caniuse-lite/data/features/mp3.js
deleted file mode 100644
index 294009e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/mp3.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB","132":"F O H D G E A B C K f L N I J P Q R eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","2":"WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB"},H:{"2":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","2":"4B 5B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"MP3 audio format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/mpeg-dash.js b/assets/node_modules/caniuse-lite/data/features/mpeg-dash.js
deleted file mode 100644
index 3dd5f3d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/mpeg-dash.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J","2":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","386":"R S"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"Dynamic Adaptive Streaming over HTTP (MPEG-DASH)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/mpeg4.js b/assets/node_modules/caniuse-lite/data/features/mpeg4.js
deleted file mode 100644
index be28898..0000000
--- a/assets/node_modules/caniuse-lite/data/features/mpeg4.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q eB dB","4":"R S T U V W X Y Z a b c d e"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K RB YB ZB aB bB PB fB","2":"WB"},F:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB 8B 9B","4":"OB F 4B 5B 7B CB","132":"6B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"260":"8"},N:{"1":"A B"},O:{"4":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"MPEG-4/H.264 video format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/multibackgrounds.js b/assets/node_modules/caniuse-lite/data/features/multibackgrounds.js
deleted file mode 100644
index 009220f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/multibackgrounds.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB dB","2":"kB OB eB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","2":"E gB hB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS3 Multiple backgrounds"};
diff --git a/assets/node_modules/caniuse-lite/data/features/multicolumn.js b/assets/node_modules/caniuse-lite/data/features/multicolumn.js
deleted file mode 100644
index cda721b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/multicolumn.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J","516":"q"},C:{"132":"0 1 2 3 4 5 6 w x y z EB NB","164":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v eB dB","516":"8 DB BB FB HB IB JB KB LB MB"},D:{"420":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t","516":"0 1 2 3 4 5 6 8 u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 A B C K PB fB","132":"E bB","164":"D G aB","420":"F O H WB RB YB ZB"},F:{"1":"7 9 C GB lB","2":"E B gB hB iB jB","420":"L N I J P Q R S T U V W X Y Z a b c d e AB g","516":"0 1 2 3 4 5 6 h i j k l m n o p M r s t u v w x y z"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","132":"SB tB","164":"G qB rB","420":"RB mB CB oB pB"},H:{"1":"3B"},I:{"420":"OB F 4B 5B 6B 7B CB 8B 9B","516":"QB"},J:{"420":"D A"},K:{"1":"7 9 C GB","2":"A B","132":"M"},L:{"516":"q"},M:{"132":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","420":"F"},Q:{"132":"GC"},R:{"132":"HC"},S:{"164":"IC"}},B:4,C:"CSS3 Multiple column layout"};
diff --git a/assets/node_modules/caniuse-lite/data/features/mutation-events.js b/assets/node_modules/caniuse-lite/data/features/mutation-events.js
deleted file mode 100644
index 55f8c2d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/mutation-events.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","260":"E A B"},B:{"132":"q","260":"C K f L N I J"},C:{"2":"kB OB F O eB dB","260":"0 1 2 3 4 5 6 8 H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"16":"F O H D G E A B C K f","132":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"16":"WB RB","132":"7 9 F O H D G E A B C K YB ZB aB bB PB fB"},F:{"1":"9 C lB","2":"E gB hB iB jB","16":"7 B GB","132":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"16":"RB mB","132":"G CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"16":"4B 5B","132":"OB F QB 6B 7B CB 8B 9B"},J:{"132":"D A"},K:{"1":"9 C","2":"A","16":"7 B GB","132":"M"},L:{"132":"q"},M:{"260":"8"},N:{"260":"A B"},O:{"132":"AC"},P:{"132":"F BC CC DC EC FC PB"},Q:{"132":"GC"},R:{"132":"HC"},S:{"260":"IC"}},B:5,C:"Mutation events"};
diff --git a/assets/node_modules/caniuse-lite/data/features/mutationobserver.js b/assets/node_modules/caniuse-lite/data/features/mutationobserver.js
deleted file mode 100644
index 8198263..0000000
--- a/assets/node_modules/caniuse-lite/data/features/mutationobserver.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G nB","8":"E A"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K eB dB"},D:{"1":"0 1 2 3 4 5 6 8 X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I","33":"J P Q R S T U V W"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB","33":"H"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB","33":"pB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB 4B 5B 6B","8":"F 7B CB"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","8":"A"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Mutation Observer"};
diff --git a/assets/node_modules/caniuse-lite/data/features/namevalue-storage.js b/assets/node_modules/caniuse-lite/data/features/namevalue-storage.js
deleted file mode 100644
index 5c8b992..0000000
--- a/assets/node_modules/caniuse-lite/data/features/namevalue-storage.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"G E A B","2":"nB","8":"H D"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","4":"kB OB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","2":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","2":"E gB hB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Web Storage - name/value pairs"};
diff --git a/assets/node_modules/caniuse-lite/data/features/native-filesystem-api.js b/assets/node_modules/caniuse-lite/data/features/native-filesystem-api.js
deleted file mode 100644
index 03f6764..0000000
--- a/assets/node_modules/caniuse-lite/data/features/native-filesystem-api.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB","194":"QB XB q sB UB VB","450":"TB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"194":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"Native Filesystem API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/nav-timing.js b/assets/node_modules/caniuse-lite/data/features/nav-timing.js
deleted file mode 100644
index f18e1e4..0000000
--- a/assets/node_modules/caniuse-lite/data/features/nav-timing.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H eB dB"},D:{"1":"0 1 2 3 4 5 6 8 K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O","33":"H D G E A B C"},E:{"1":"7 9 G E A B C K bB PB fB","2":"F O H D WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"1":"F QB 7B CB 8B 9B","2":"OB 4B 5B 6B"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"Navigation Timing API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/navigator-language.js b/assets/node_modules/caniuse-lite/data/features/navigator-language.js
deleted file mode 100644
index 86c86ae..0000000
--- a/assets/node_modules/caniuse-lite/data/features/navigator-language.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"N I J q","2":"C K f L"},C:{"1":"0 1 2 3 4 5 6 8 c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b eB dB"},D:{"1":"0 1 2 3 4 5 6 8 h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g"},E:{"1":"7 9 A B C K PB fB","2":"F O H D G E WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T gB hB iB jB GB lB"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"16":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"16":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"16":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"16":"GC"},R:{"16":"HC"},S:{"1":"IC"}},B:2,C:"Navigator Language API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/netinfo.js b/assets/node_modules/caniuse-lite/data/features/netinfo.js
deleted file mode 100644
index 613849a..0000000
--- a/assets/node_modules/caniuse-lite/data/features/netinfo.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","1028":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB","1028":"4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r gB hB iB jB GB lB","1028":"0 1 2 3 4 5 6 s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"4B 8B 9B","132":"OB F 5B 6B 7B CB"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","516":"M"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"EC FC PB","132":"F","516":"BC CC DC"},Q:{"2":"GC"},R:{"516":"HC"},S:{"260":"IC"}},B:7,C:"Network Information API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/node-contains.js b/assets/node_modules/caniuse-lite/data/features/node-contains.js
deleted file mode 100644
index 2450a38..0000000
--- a/assets/node_modules/caniuse-lite/data/features/node-contains.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"16":"nB","644":"E A B","2308":"H D G"},B:{"1":"K f L N I J q","16":"C"},C:{"1":"0 1 2 3 4 5 6 8 E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G eB dB"},D:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f L N I J P Q R S T U V"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","16":"F O H WB RB","1668":"YB"},F:{"1":"0 1 2 3 4 5 6 9 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","16":"7 E B C gB hB iB jB GB","132":"lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB oB pB"},H:{"16":"3B"},I:{"1":"QB 8B 9B","16":"OB 4B 5B 6B","1668":"F 7B CB"},J:{"16":"D A"},K:{"16":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"16":"A B"},O:{"16":"AC"},P:{"1":"BC CC DC EC FC PB","16":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Node.contains()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/node-parentelement.js b/assets/node_modules/caniuse-lite/data/features/node-parentelement.js
deleted file mode 100644
index 646a7bc..0000000
--- a/assets/node_modules/caniuse-lite/data/features/node-parentelement.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"16":"nB","132":"E A B","260":"H D G"},B:{"1":"K f L N I J q","16":"C"},C:{"1":"0 1 2 3 4 5 6 8 E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G eB dB"},D:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f L N I J P Q R S T U V"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","16":"F O WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","16":"7 E B gB hB iB jB GB","132":"9 C lB"},G:{"1":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB oB"},H:{"16":"3B"},I:{"1":"F QB 7B CB 8B 9B","16":"OB 4B 5B 6B"},J:{"16":"D A"},K:{"16":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"16":"A B"},O:{"16":"AC"},P:{"1":"BC CC DC EC FC PB","16":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Node.parentElement"};
diff --git a/assets/node_modules/caniuse-lite/data/features/notifications.js b/assets/node_modules/caniuse-lite/data/features/notifications.js
deleted file mode 100644
index 73c2af1..0000000
--- a/assets/node_modules/caniuse-lite/data/features/notifications.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"f L N I J q","2":"C K"},C:{"1":"0 1 2 3 4 5 6 8 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R eB dB"},D:{"1":"0 1 2 3 4 5 6 8 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F","36":"O H D G E A B C K f L N I J P Q R"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB"},F:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB","36":"QB 8B 9B"},J:{"1":"A","2":"D"},K:{"2":"7 9 A B C GB","36":"M"},L:{"513":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"36":"F","258":"BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"258":"HC"},S:{"1":"IC"}},B:1,C:"Web Notifications"};
diff --git a/assets/node_modules/caniuse-lite/data/features/object-entries.js b/assets/node_modules/caniuse-lite/data/features/object-entries.js
deleted file mode 100644
index 6eebaba..0000000
--- a/assets/node_modules/caniuse-lite/data/features/object-entries.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"f L N I J q","2":"C K"},C:{"1":"0 1 2 3 4 5 6 8 r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M eB dB"},D:{"1":"0 1 2 3 4 5 6 8 y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k gB hB iB jB GB lB"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D","16":"A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"CC DC EC FC PB","2":"F BC"},Q:{"1":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:6,C:"Object.entries"};
diff --git a/assets/node_modules/caniuse-lite/data/features/object-fit.js b/assets/node_modules/caniuse-lite/data/features/object-fit.js
deleted file mode 100644
index 97b9f67..0000000
--- a/assets/node_modules/caniuse-lite/data/features/object-fit.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L","260":"N I J"},C:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a"},E:{"1":"7 9 A B C K PB fB","2":"F O H D WB RB YB ZB","132":"G E aB bB"},F:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"E L N I J gB hB iB","33":"7 9 B C jB GB lB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB qB","132":"G rB SB tB"},H:{"33":"3B"},I:{"1":"QB 9B","2":"OB F 4B 5B 6B 7B CB 8B"},J:{"2":"D A"},K:{"1":"M","2":"A","33":"7 9 B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS3 object-fit/object-position"};
diff --git a/assets/node_modules/caniuse-lite/data/features/object-observe.js b/assets/node_modules/caniuse-lite/data/features/object-observe.js
deleted file mode 100644
index 165ed36..0000000
--- a/assets/node_modules/caniuse-lite/data/features/object-observe.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"g h i j k l m n o p M r s t","2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"T U V W X Y Z a b c d e AB g","2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"F","2":"BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:7,C:"Object.observe data binding"};
diff --git a/assets/node_modules/caniuse-lite/data/features/object-values.js b/assets/node_modules/caniuse-lite/data/features/object-values.js
deleted file mode 100644
index c836bb8..0000000
--- a/assets/node_modules/caniuse-lite/data/features/object-values.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"8":"H D G E A B nB"},B:{"1":"f L N I J q","2":"C K"},C:{"1":"0 1 2 3 4 5 6 8 r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","8":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M eB dB"},D:{"1":"0 1 2 3 4 5 6 8 y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","8":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x"},E:{"1":"7 9 B C K PB fB","8":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 l m n o p M r s t u v w x y z","8":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k gB hB iB jB GB lB"},G:{"1":"vB wB xB yB zB 0B 1B 2B","8":"G RB mB CB oB pB qB rB SB tB uB"},H:{"8":"3B"},I:{"1":"QB","8":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"8":"D A"},K:{"1":"M","8":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"8":"A B"},O:{"1":"AC"},P:{"1":"CC DC EC FC PB","8":"F BC"},Q:{"1":"GC"},R:{"8":"HC"},S:{"1":"IC"}},B:6,C:"Object.values method"};
diff --git a/assets/node_modules/caniuse-lite/data/features/objectrtc.js b/assets/node_modules/caniuse-lite/data/features/objectrtc.js
deleted file mode 100644
index 7f35a81..0000000
--- a/assets/node_modules/caniuse-lite/data/features/objectrtc.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"K f L N I J","2":"C q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D","130":"A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"Object RTC (ORTC) API for WebRTC"};
diff --git a/assets/node_modules/caniuse-lite/data/features/offline-apps.js b/assets/node_modules/caniuse-lite/data/features/offline-apps.js
deleted file mode 100644
index 76ab503..0000000
--- a/assets/node_modules/caniuse-lite/data/features/offline-apps.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"E nB","8":"H D G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","4":"OB","8":"kB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","8":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z jB GB lB","2":"E gB","8":"hB iB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:7,C:"Offline web applications"};
diff --git a/assets/node_modules/caniuse-lite/data/features/offscreencanvas.js b/assets/node_modules/caniuse-lite/data/features/offscreencanvas.js
deleted file mode 100644
index 73bf825..0000000
--- a/assets/node_modules/caniuse-lite/data/features/offscreencanvas.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n eB dB","194":"0 1 2 3 4 5 6 8 o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","322":"2 3 4 5 6 8 EB NB DB BB FB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"6","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o gB hB iB jB GB lB","322":"0 1 2 3 4 5 p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"194":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"PB","2":"F BC CC DC EC FC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"194":"IC"}},B:1,C:"OffscreenCanvas"};
diff --git a/assets/node_modules/caniuse-lite/data/features/ogg-vorbis.js b/assets/node_modules/caniuse-lite/data/features/ogg-vorbis.js
deleted file mode 100644
index 66560d0..0000000
--- a/assets/node_modules/caniuse-lite/data/features/ogg-vorbis.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"I J q","2":"C K f L N"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB OB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","2":"E gB hB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"A","2":"D"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"Ogg Vorbis audio format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/ogv.js b/assets/node_modules/caniuse-lite/data/features/ogv.js
deleted file mode 100644
index 3b4bcfc..0000000
--- a/assets/node_modules/caniuse-lite/data/features/ogv.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","8":"E A B"},B:{"1":"I J q","8":"C K f L N"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB OB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","2":"E gB hB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"1":"8"},N:{"8":"A B"},O:{"1":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:6,C:"Ogg/Theora video format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/ol-reversed.js b/assets/node_modules/caniuse-lite/data/features/ol-reversed.js
deleted file mode 100644
index 26d2b30..0000000
--- a/assets/node_modules/caniuse-lite/data/features/ol-reversed.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I eB dB"},D:{"1":"0 1 2 3 4 5 6 8 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L","16":"N I J P"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB","16":"H"},F:{"1":"0 1 2 3 4 5 6 9 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B gB hB iB jB GB lB","16":"C"},G:{"1":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB"},H:{"1":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Reversed attribute of ordered lists"};
diff --git a/assets/node_modules/caniuse-lite/data/features/once-event-listener.js b/assets/node_modules/caniuse-lite/data/features/once-event-listener.js
deleted file mode 100644
index 9044733..0000000
--- a/assets/node_modules/caniuse-lite/data/features/once-event-listener.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"N I J q","2":"C K f L"},C:{"1":"0 1 2 3 4 5 6 8 u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t eB dB"},D:{"1":"0 1 2 3 4 5 6 8 z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y"},E:{"1":"7 9 A B C K PB fB","2":"F O H D G E WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l gB hB iB jB GB lB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"CC DC EC FC PB","2":"F BC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:1,C:"\"once\" event listener option"};
diff --git a/assets/node_modules/caniuse-lite/data/features/online-status.js b/assets/node_modules/caniuse-lite/data/features/online-status.js
deleted file mode 100644
index ee797c1..0000000
--- a/assets/node_modules/caniuse-lite/data/features/online-status.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D nB","260":"G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB OB","516":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k"},D:{"1":"0 1 2 3 4 5 6 8 f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B C gB hB iB jB GB lB","4":"9"},G:{"1":"G CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB"},H:{"2":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"A","132":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Online/offline status"};
diff --git a/assets/node_modules/caniuse-lite/data/features/opus.js b/assets/node_modules/caniuse-lite/data/features/opus.js
deleted file mode 100644
index 976f8e4..0000000
--- a/assets/node_modules/caniuse-lite/data/features/opus.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"f L N I J q","2":"C K"},C:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f eB dB"},D:{"1":"0 1 2 3 4 5 6 8 d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c"},E:{"2":"F O H D G E A WB RB YB ZB aB bB PB","132":"7 9 B C K fB"},F:{"1":"0 1 2 3 4 5 6 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB","132":"wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"Opus"};
diff --git a/assets/node_modules/caniuse-lite/data/features/orientation-sensor.js b/assets/node_modules/caniuse-lite/data/features/orientation-sensor.js
deleted file mode 100644
index 0cc100e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/orientation-sensor.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"8 FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","194":"2 3 4 5 6 EB NB DB BB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:4,C:"Orientation Sensor"};
diff --git a/assets/node_modules/caniuse-lite/data/features/outline.js b/assets/node_modules/caniuse-lite/data/features/outline.js
deleted file mode 100644
index f43dcb5..0000000
--- a/assets/node_modules/caniuse-lite/data/features/outline.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D nB","260":"G","388":"E A B"},B:{"1":"L N I J q","388":"C K f"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","129":"9","260":"7 E B gB hB iB jB GB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"9 C M","260":"7 A B GB"},L:{"1":"q"},M:{"1":"8"},N:{"388":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS outline properties"};
diff --git a/assets/node_modules/caniuse-lite/data/features/pad-start-end.js b/assets/node_modules/caniuse-lite/data/features/pad-start-end.js
deleted file mode 100644
index 7e57413..0000000
--- a/assets/node_modules/caniuse-lite/data/features/pad-start-end.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"L N I J q","2":"C K f"},C:{"1":"0 1 2 3 4 5 6 8 s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r eB dB"},D:{"1":"1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},E:{"1":"7 9 A B C K PB fB","2":"F O H D G E WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n gB hB iB jB GB lB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"DC EC FC PB","2":"F BC CC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:6,C:"String.prototype.padStart(), String.prototype.padEnd()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/page-transition-events.js b/assets/node_modules/caniuse-lite/data/features/page-transition-events.js
deleted file mode 100644
index 2bba31e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/page-transition-events.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G E A nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB"},H:{"2":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","2":"A"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"PageTransitionEvent"};
diff --git a/assets/node_modules/caniuse-lite/data/features/pagevisibility.js b/assets/node_modules/caniuse-lite/data/features/pagevisibility.js
deleted file mode 100644
index 2d3f338..0000000
--- a/assets/node_modules/caniuse-lite/data/features/pagevisibility.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E eB dB","33":"A B C K f L N I"},D:{"1":"0 1 2 3 4 5 6 8 d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K","33":"f L N I J P Q R S T U V W X Y Z a b c"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","2":"F O H WB RB YB"},F:{"1":"0 1 2 3 4 5 6 9 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B C gB hB iB jB GB lB","33":"L N I J P"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB","33":"8B 9B"},J:{"1":"A","2":"D"},K:{"1":"9 M","2":"7 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","33":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"Page Visibility"};
diff --git a/assets/node_modules/caniuse-lite/data/features/passive-event-listener.js b/assets/node_modules/caniuse-lite/data/features/passive-event-listener.js
deleted file mode 100644
index 911ea2b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/passive-event-listener.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"N I J q","2":"C K f L"},C:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s eB dB"},D:{"1":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u"},E:{"1":"7 9 A B C K PB fB","2":"F O H D G E WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h gB hB iB jB GB lB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:1,C:"Passive event listeners"};
diff --git a/assets/node_modules/caniuse-lite/data/features/passwordrules.js b/assets/node_modules/caniuse-lite/data/features/passwordrules.js
deleted file mode 100644
index 9952808..0000000
--- a/assets/node_modules/caniuse-lite/data/features/passwordrules.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","16":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB eB dB","16":"LB MB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q","16":"sB UB VB"},E:{"1":"9 C K","2":"7 F O H D G E A B WB RB YB ZB aB bB PB","16":"fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w gB hB iB jB GB lB","16":"0 1 2 3 4 5 6 x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"16":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","16":"QB"},J:{"2":"D","16":"A"},K:{"2":"7 9 A B C GB","16":"M"},L:{"16":"q"},M:{"16":"8"},N:{"2":"A","16":"B"},O:{"16":"AC"},P:{"2":"F BC CC","16":"DC EC FC PB"},Q:{"16":"GC"},R:{"16":"HC"},S:{"2":"IC"}},B:1,C:"Password Rules"};
diff --git a/assets/node_modules/caniuse-lite/data/features/path2d.js b/assets/node_modules/caniuse-lite/data/features/path2d.js
deleted file mode 100644
index e8cf8e3..0000000
--- a/assets/node_modules/caniuse-lite/data/features/path2d.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K","132":"f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a eB dB","132":"b c d e AB g h i j k l m n o p M r"},D:{"1":"8 HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB","132":"0 1 2 3 4 5 6 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB"},E:{"1":"7 9 A B C K bB PB fB","2":"F O H D WB RB YB ZB","132":"G E aB"},F:{"1":"0 1 2 3 4 5 6 z","2":"7 9 E B C L N I J P Q R S gB hB iB jB GB lB","132":"T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB qB","16":"G","132":"rB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"1":"A","2":"D"},K:{"2":"7 9 A B C GB","132":"M"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"132":"AC"},P:{"1":"PB","132":"F BC CC DC EC FC"},Q:{"132":"GC"},R:{"132":"HC"},S:{"1":"IC"}},B:1,C:"Path2D"};
diff --git a/assets/node_modules/caniuse-lite/data/features/payment-request.js b/assets/node_modules/caniuse-lite/data/features/payment-request.js
deleted file mode 100644
index 3e41927..0000000
--- a/assets/node_modules/caniuse-lite/data/features/payment-request.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K","322":"f","8196":"L N I J"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y eB dB","4162":"0 1 2 3 4 5 6 z EB NB DB","16452":"8 BB FB HB IB JB KB LB MB"},D:{"1":"TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w","194":"0 1 2 x y z","1090":"3 EB","8196":"4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB"},E:{"1":"9 K fB","2":"F O H D G E WB RB YB ZB aB bB","514":"A B PB","8196":"7 C"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j gB hB iB jB GB lB","194":"k l m n o p M r","8196":"0 1 2 3 4 5 6 s t u v w x y z"},G:{"1":"zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB","514":"uB vB wB","8196":"xB yB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2052":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F","8196":"BC CC DC EC FC PB"},Q:{"194":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:4,C:"Payment Request API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/permissions-api.js b/assets/node_modules/caniuse-lite/data/features/permissions-api.js
deleted file mode 100644
index 5d99d88..0000000
--- a/assets/node_modules/caniuse-lite/data/features/permissions-api.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p eB dB"},D:{"1":"0 1 2 3 4 5 6 8 n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:7,C:"Permissions API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/picture-in-picture.js b/assets/node_modules/caniuse-lite/data/features/picture-in-picture.js
deleted file mode 100644
index 4aa2935..0000000
--- a/assets/node_modules/caniuse-lite/data/features/picture-in-picture.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB eB dB","132":"KB LB MB","1090":"FB","1412":"JB","1668":"8 HB IB"},D:{"1":"IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB","2114":"HB"},E:{"1":"fB","2":"F O H D G E WB RB YB ZB aB bB","4100":"7 9 A B C K PB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g gB hB iB jB GB lB","8196":"0 1 2 3 4 5 6 h i j k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB","4100":"SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"16388":"q"},M:{"16388":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"Picture-in-Picture"};
diff --git a/assets/node_modules/caniuse-lite/data/features/picture.js b/assets/node_modules/caniuse-lite/data/features/picture.js
deleted file mode 100644
index 498357b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/picture.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"K f L N I J q","2":"C"},C:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d eB dB","578":"e AB g h"},D:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g","194":"h"},E:{"1":"7 9 A B C K bB PB fB","2":"F O H D G E WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T gB hB iB jB GB lB","322":"U"},G:{"1":"tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Picture element"};
diff --git a/assets/node_modules/caniuse-lite/data/features/ping.js b/assets/node_modules/caniuse-lite/data/features/ping.js
deleted file mode 100644
index 8085ea9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/ping.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"I J q","2":"C K f L N"},C:{"2":"kB","194":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"194":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"194":"IC"}},B:1,C:"Ping attribute"};
diff --git a/assets/node_modules/caniuse-lite/data/features/png-alpha.js b/assets/node_modules/caniuse-lite/data/features/png-alpha.js
deleted file mode 100644
index 4bae5d9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/png-alpha.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"D G E A B","2":"nB","8":"H"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"PNG alpha transparency"};
diff --git a/assets/node_modules/caniuse-lite/data/features/pointer-events.js b/assets/node_modules/caniuse-lite/data/features/pointer-events.js
deleted file mode 100644
index c1016ef..0000000
--- a/assets/node_modules/caniuse-lite/data/features/pointer-events.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G E A nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB dB","2":"kB OB eB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","2":"WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","2":"A"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:7,C:"CSS pointer-events (for HTML)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/pointer.js b/assets/node_modules/caniuse-lite/data/features/pointer.js
deleted file mode 100644
index a393ce5..0000000
--- a/assets/node_modules/caniuse-lite/data/features/pointer.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G E nB","164":"A"},B:{"1":"C K f L N I J q"},C:{"1":"3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O eB dB","8":"H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k","328":"0 1 2 l m n o p M r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 8 z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R","8":"S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v","584":"w x y"},E:{"1":"K fB","2":"F O H WB RB YB","8":"7 D G E A B C ZB aB bB PB","1096":"9"},F:{"1":"0 1 2 3 4 5 6 m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","8":"L N I J P Q R S T U V W X Y Z a b c d e AB g h i","584":"j k l"},G:{"1":"1B 2B","8":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB","6148":"0B"},H:{"2":"3B"},I:{"1":"QB","8":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"8":"D A"},K:{"1":"M","2":"A","8":"7 9 B C GB"},L:{"1":"q"},M:{"328":"8"},N:{"1":"B","36":"A"},O:{"8":"AC"},P:{"1":"CC DC EC FC PB","2":"BC","8":"F"},Q:{"584":"GC"},R:{"2":"HC"},S:{"328":"IC"}},B:2,C:"Pointer events"};
diff --git a/assets/node_modules/caniuse-lite/data/features/pointerlock.js b/assets/node_modules/caniuse-lite/data/features/pointerlock.js
deleted file mode 100644
index fd1712f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/pointerlock.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"K f L N I J q","2":"C"},C:{"1":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K eB dB","33":"f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k"},D:{"1":"0 1 2 3 4 5 6 8 h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L","33":"S T U V W X Y Z a b c d e AB g","66":"N I J P Q R"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","33":"L N I J P Q R S T"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:2,C:"Pointer Lock API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/prefers-color-scheme.js b/assets/node_modules/caniuse-lite/data/features/prefers-color-scheme.js
deleted file mode 100644
index 4d53a32..0000000
--- a/assets/node_modules/caniuse-lite/data/features/prefers-color-scheme.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"8 FB HB IB JB KB LB MB","2":"0 1 2 3 4 5 6 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB eB dB"},D:{"1":"QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB"},E:{"1":"9 K fB","2":"7 F O H D G E A B C WB RB YB ZB aB bB PB"},F:{"1":"4 5 6","2":"0 1 2 3 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"prefers-color-scheme media query"};
diff --git a/assets/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js b/assets/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js
deleted file mode 100644
index 40a3561..0000000
--- a/assets/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"5 6 8 DB BB FB HB IB JB KB LB MB","2":"0 1 2 3 4 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB eB dB"},D:{"1":"MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"6","2":"0 1 2 3 4 5 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"prefers-reduced-motion media query"};
diff --git a/assets/node_modules/caniuse-lite/data/features/private-class-fields.js b/assets/node_modules/caniuse-lite/data/features/private-class-fields.js
deleted file mode 100644
index 09f0117..0000000
--- a/assets/node_modules/caniuse-lite/data/features/private-class-fields.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"Private class fields"};
diff --git a/assets/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js b/assets/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js
deleted file mode 100644
index 02841b5..0000000
--- a/assets/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"Public class fields"};
diff --git a/assets/node_modules/caniuse-lite/data/features/progress.js b/assets/node_modules/caniuse-lite/data/features/progress.js
deleted file mode 100644
index eeb5277..0000000
--- a/assets/node_modules/caniuse-lite/data/features/progress.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O eB dB"},D:{"1":"0 1 2 3 4 5 6 8 G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z GB lB","2":"E gB hB iB jB"},G:{"2":"RB mB CB oB pB","132":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"progress element"};
diff --git a/assets/node_modules/caniuse-lite/data/features/promise-finally.js b/assets/node_modules/caniuse-lite/data/features/promise-finally.js
deleted file mode 100644
index 2b1d299..0000000
--- a/assets/node_modules/caniuse-lite/data/features/promise-finally.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"J q","2":"C K f L N I"},C:{"1":"2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB","2":"0 1 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z eB dB"},D:{"1":"5 6 8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB"},E:{"1":"7 9 C K fB","2":"F O H D G E A B WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t gB hB iB jB GB lB"},G:{"1":"xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"EC FC PB","2":"F BC CC DC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"Promise.prototype.finally"};
diff --git a/assets/node_modules/caniuse-lite/data/features/promises.js b/assets/node_modules/caniuse-lite/data/features/promises.js
deleted file mode 100644
index 882903d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/promises.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"8":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","4":"X Y","8":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W eB dB"},D:{"1":"0 1 2 3 4 5 6 8 d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","4":"c","8":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b"},E:{"1":"7 9 G E A B C K aB bB PB fB","8":"F O H D WB RB YB ZB"},F:{"1":"0 1 2 3 4 5 6 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","4":"P","8":"7 9 E B C L N I J gB hB iB jB GB lB"},G:{"1":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","8":"RB mB CB oB pB qB"},H:{"8":"3B"},I:{"1":"QB 9B","8":"OB F 4B 5B 6B 7B CB 8B"},J:{"8":"D A"},K:{"1":"M","8":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"8":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"Promises"};
diff --git a/assets/node_modules/caniuse-lite/data/features/proximity.js b/assets/node_modules/caniuse-lite/data/features/proximity.js
deleted file mode 100644
index efa6f5c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/proximity.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:4,C:"Proximity API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/proxy.js b/assets/node_modules/caniuse-lite/data/features/proxy.js
deleted file mode 100644
index 08e67aa..0000000
--- a/assets/node_modules/caniuse-lite/data/features/proxy.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I eB dB"},D:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J i j k l m n o p M r s","66":"P Q R S T U V W X Y Z a b c d e AB g h"},E:{"1":"7 9 A B C K PB fB","2":"F O H D G E WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C V W X Y Z a b c d e AB gB hB iB jB GB lB","66":"L N I J P Q R S T U"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:6,C:"Proxy object"};
diff --git a/assets/node_modules/caniuse-lite/data/features/public-class-fields.js b/assets/node_modules/caniuse-lite/data/features/public-class-fields.js
deleted file mode 100644
index b94e5f7..0000000
--- a/assets/node_modules/caniuse-lite/data/features/public-class-fields.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"Public class fields"};
diff --git a/assets/node_modules/caniuse-lite/data/features/publickeypinning.js b/assets/node_modules/caniuse-lite/data/features/publickeypinning.js
deleted file mode 100644
index 4938a4c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/publickeypinning.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P gB hB iB jB GB lB","4":"T","16":"Q R S U"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"Public Key Pinning"};
diff --git a/assets/node_modules/caniuse-lite/data/features/push-api.js b/assets/node_modules/caniuse-lite/data/features/push-api.js
deleted file mode 100644
index 771fcf7..0000000
--- a/assets/node_modules/caniuse-lite/data/features/push-api.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"I J","2":"C K f L N","257":"q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n eB dB","257":"0 1 2 4 5 6 8 o M r s t u v x y z EB NB DB BB FB HB IB JB KB LB MB","1281":"3 p w"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n","257":"0 1 2 3 4 5 6 8 u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","388":"o p M r s t"},E:{"2":"F O H D G E WB RB YB ZB aB","514":"7 9 A B C K bB PB fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g gB hB iB jB GB lB","16":"h i j k l","257":"0 1 2 3 4 5 6 m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"2":"HC"},S:{"257":"IC"}},B:5,C:"Push API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/queryselector.js b/assets/node_modules/caniuse-lite/data/features/queryselector.js
deleted file mode 100644
index 048efbe..0000000
--- a/assets/node_modules/caniuse-lite/data/features/queryselector.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"nB","8":"H D","132":"G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","8":"kB OB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z hB iB jB GB lB","8":"E gB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"querySelector/querySelectorAll"};
diff --git a/assets/node_modules/caniuse-lite/data/features/readonly-attr.js b/assets/node_modules/caniuse-lite/data/features/readonly-attr.js
deleted file mode 100644
index 262a8c7..0000000
--- a/assets/node_modules/caniuse-lite/data/features/readonly-attr.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D G E A B","16":"nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","16":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f L N I J P Q R S T U V"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","16":"F O WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","16":"E gB","132":"7 9 B C hB iB jB GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB oB pB"},H:{"1":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"M","132":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"257":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"readonly attribute of input and textarea elements"};
diff --git a/assets/node_modules/caniuse-lite/data/features/referrer-policy.js b/assets/node_modules/caniuse-lite/data/features/referrer-policy.js
deleted file mode 100644
index 9ed50d8..0000000
--- a/assets/node_modules/caniuse-lite/data/features/referrer-policy.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","132":"B"},B:{"1":"q","132":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB eB dB"},D:{"1":"4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q","260":"0 1 2 3 R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB"},E:{"1":"7 9 C K fB","2":"F O H D WB RB YB ZB","132":"G E A B aB bB PB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"2":"RB mB CB oB pB qB","132":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"Referrer Policy"};
diff --git a/assets/node_modules/caniuse-lite/data/features/registerprotocolhandler.js b/assets/node_modules/caniuse-lite/data/features/registerprotocolhandler.js
deleted file mode 100644
index ea0c07c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/registerprotocolhandler.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","129":"q"},C:{"1":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB"},D:{"2":"F O H D G E A B C","129":"0 1 2 3 4 5 6 8 K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 E B gB hB iB jB GB","129":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D","129":"A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:1,C:"Custom protocol handling"};
diff --git a/assets/node_modules/caniuse-lite/data/features/rel-noopener.js b/assets/node_modules/caniuse-lite/data/features/rel-noopener.js
deleted file mode 100644
index b5cbf6b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/rel-noopener.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v eB dB"},D:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB gB hB iB jB GB lB"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:1,C:"rel=noopener"};
diff --git a/assets/node_modules/caniuse-lite/data/features/rel-noreferrer.js b/assets/node_modules/caniuse-lite/data/features/rel-noreferrer.js
deleted file mode 100644
index 2bd4f0b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/rel-noreferrer.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","132":"B"},B:{"1":"K f L N I J q","16":"C"},C:{"1":"0 1 2 3 4 5 6 8 d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c eB dB"},D:{"1":"0 1 2 3 4 5 6 8 N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f L"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB"},H:{"2":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Link type \"noreferrer\""};
diff --git a/assets/node_modules/caniuse-lite/data/features/rellist.js b/assets/node_modules/caniuse-lite/data/features/rellist.js
deleted file mode 100644
index 950b94e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/rellist.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"J q","2":"C K f L N","132":"I"},C:{"1":"0 1 2 3 4 5 6 8 a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z eB dB"},D:{"1":"8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t","132":"0 1 2 3 4 5 6 u v w x y z EB NB"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D G WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g gB hB iB jB GB lB","132":"h i j k l m n o p M r s t u v"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"132":"AC"},P:{"1":"FC PB","2":"F","132":"BC CC DC EC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:1,C:"relList (DOMTokenList)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/rem.js b/assets/node_modules/caniuse-lite/data/features/rem.js
deleted file mode 100644
index c422ca9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/rem.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G nB","132":"E A"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB dB","2":"kB OB eB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","2":"7 E B gB hB iB jB GB"},G:{"1":"G mB CB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB","260":"oB"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"9 C M","2":"7 A B GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"rem (root em) units"};
diff --git a/assets/node_modules/caniuse-lite/data/features/replace-all.js b/assets/node_modules/caniuse-lite/data/features/replace-all.js
deleted file mode 100644
index 9fa8578..0000000
--- a/assets/node_modules/caniuse-lite/data/features/replace-all.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"1":"KB LB MB","2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"fB","2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB","16":"tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"16":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"16":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"16":"HC"},S:{"16":"IC"}},B:7,C:"String.prototype.replaceAll()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/requestanimationframe.js b/assets/node_modules/caniuse-lite/data/features/requestanimationframe.js
deleted file mode 100644
index ed66d2b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/requestanimationframe.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","33":"B C K f L N I J P Q R S","164":"F O H D G E A"},D:{"1":"0 1 2 3 4 5 6 8 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E","33":"S T","164":"J P Q R","420":"A B C K f L N I"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB","33":"H"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB","33":"pB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"requestAnimationFrame"};
diff --git a/assets/node_modules/caniuse-lite/data/features/requestidlecallback.js b/assets/node_modules/caniuse-lite/data/features/requestidlecallback.js
deleted file mode 100644
index b7a7b1f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/requestidlecallback.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w eB dB","194":"x y"},D:{"1":"0 1 2 3 4 5 6 8 r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:5,C:"requestIdleCallback"};
diff --git a/assets/node_modules/caniuse-lite/data/features/resizeobserver.js b/assets/node_modules/caniuse-lite/data/features/resizeobserver.js
deleted file mode 100644
index 8144ea1..0000000
--- a/assets/node_modules/caniuse-lite/data/features/resizeobserver.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"HB IB JB KB LB MB","2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB eB dB"},D:{"1":"6 8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x","194":"0 1 2 3 4 5 y z EB NB"},E:{"1":"fB","2":"7 9 F O H D G E A B C WB RB YB ZB aB bB PB","66":"K"},F:{"1":"0 1 2 3 4 5 6 w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k gB hB iB jB GB lB","194":"l m n o p M r s t u v"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"FC PB","2":"F BC CC DC EC"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"Resize Observer"};
diff --git a/assets/node_modules/caniuse-lite/data/features/resource-timing.js b/assets/node_modules/caniuse-lite/data/features/resource-timing.js
deleted file mode 100644
index 9fe62e9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/resource-timing.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a eB dB","194":"b c d e"},D:{"1":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U"},E:{"1":"7 9 C K fB","2":"F O H D G E A WB RB YB ZB aB bB PB","260":"B"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"Resource Timing"};
diff --git a/assets/node_modules/caniuse-lite/data/features/rest-parameters.js b/assets/node_modules/caniuse-lite/data/features/rest-parameters.js
deleted file mode 100644
index 741fc59..0000000
--- a/assets/node_modules/caniuse-lite/data/features/rest-parameters.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f eB dB"},D:{"1":"0 1 2 3 4 5 6 8 r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n","194":"o p M"},E:{"1":"7 9 A B C K PB fB","2":"F O H D G E WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a gB hB iB jB GB lB","194":"b c d"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"Rest parameters"};
diff --git a/assets/node_modules/caniuse-lite/data/features/rtcpeerconnection.js b/assets/node_modules/caniuse-lite/data/features/rtcpeerconnection.js
deleted file mode 100644
index cb12370..0000000
--- a/assets/node_modules/caniuse-lite/data/features/rtcpeerconnection.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f","516":"L N I J"},C:{"1":"0 1 2 3 4 5 6 8 o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R eB dB","33":"S T U V W X Y Z a b c d e AB g h i j k l m n"},D:{"1":"0 1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S","33":"T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},E:{"1":"7 9 B C K fB","2":"F O H D G E A WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 n o p M r s t u v w x y z","2":"7 9 E B C L N I gB hB iB jB GB lB","33":"J P Q R S T U V W X Y Z a b c d e AB g h i j k l m"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D","130":"A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"33":"F BC CC DC EC FC PB"},Q:{"33":"GC"},R:{"33":"HC"},S:{"1":"IC"}},B:5,C:"WebRTC Peer-to-peer connections"};
diff --git a/assets/node_modules/caniuse-lite/data/features/ruby.js b/assets/node_modules/caniuse-lite/data/features/ruby.js
deleted file mode 100644
index a30b14d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/ruby.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"4":"H D G E A B nB"},B:{"4":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","8":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h eB dB"},D:{"4":"0 1 2 3 4 5 6 8 O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","8":"F"},E:{"4":"7 9 O H D G E A B C K YB ZB aB bB PB fB","8":"F WB RB"},F:{"4":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","8":"7 9 E B C gB hB iB jB GB lB"},G:{"4":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","8":"RB mB CB"},H:{"8":"3B"},I:{"4":"OB F QB 7B CB 8B 9B","8":"4B 5B 6B"},J:{"4":"A","8":"D"},K:{"4":"M","8":"7 9 A B C GB"},L:{"4":"q"},M:{"1":"8"},N:{"4":"A B"},O:{"4":"AC"},P:{"4":"F BC CC DC EC FC PB"},Q:{"4":"GC"},R:{"4":"HC"},S:{"1":"IC"}},B:1,C:"Ruby annotation"};
diff --git a/assets/node_modules/caniuse-lite/data/features/run-in.js b/assets/node_modules/caniuse-lite/data/features/run-in.js
deleted file mode 100644
index 96b1b1e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/run-in.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"G E A B","2":"H D nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b","2":"0 1 2 3 4 5 6 8 c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"O H YB","2":"7 9 D G E A B C K aB bB PB fB","16":"ZB","129":"F WB RB"},F:{"1":"7 9 E B C L N I J gB hB iB jB GB lB","2":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"1":"mB CB oB pB qB","2":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","129":"RB"},H:{"1":"3B"},I:{"1":"OB F 4B 5B 6B 7B CB 8B","2":"QB 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C GB","2":"M"},L:{"2":"q"},M:{"2":"8"},N:{"1":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"display: run-in"};
diff --git a/assets/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js b/assets/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js
deleted file mode 100644
index 8618c83..0000000
--- a/assets/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","388":"B"},B:{"1":"J q","2":"C K f L","129":"N I"},C:{"1":"3 4 5 6 8 NB DB BB FB HB IB JB KB LB MB","2":"0 1 2 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u","513":"sB UB VB"},E:{"2":"7 F O H D G E A B WB RB YB ZB aB bB PB","2052":"fB","3076":"9 C K"},F:{"1":"0 1 2 3 4 5 6 j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i gB hB iB jB GB lB"},G:{"1":"0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB","2052":"yB zB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:6,C:"'SameSite' cookie attribute"};
diff --git a/assets/node_modules/caniuse-lite/data/features/screen-orientation.js b/assets/node_modules/caniuse-lite/data/features/screen-orientation.js
deleted file mode 100644
index 871a1d5..0000000
--- a/assets/node_modules/caniuse-lite/data/features/screen-orientation.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","164":"B"},B:{"1":"q","36":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I eB dB","36":"J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n"},D:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A","36":"B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","16":"F"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"Screen Orientation"};
diff --git a/assets/node_modules/caniuse-lite/data/features/script-async.js b/assets/node_modules/caniuse-lite/data/features/script-async.js
deleted file mode 100644
index 5221e47..0000000
--- a/assets/node_modules/caniuse-lite/data/features/script-async.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB dB","2":"kB OB eB"},D:{"1":"0 1 2 3 4 5 6 8 G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB","132":"O"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"2":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","2":"4B 5B 6B"},J:{"1":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"async attribute for external scripts"};
diff --git a/assets/node_modules/caniuse-lite/data/features/script-defer.js b/assets/node_modules/caniuse-lite/data/features/script-defer.js
deleted file mode 100644
index 373883f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/script-defer.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","132":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB","257":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a eB dB"},D:{"1":"0 1 2 3 4 5 6 8 G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","2":"F WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"2":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","2":"4B 5B 6B"},J:{"1":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"defer attribute for external scripts"};
diff --git a/assets/node_modules/caniuse-lite/data/features/scrollintoview.js b/assets/node_modules/caniuse-lite/data/features/scrollintoview.js
deleted file mode 100644
index c68fb9c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/scrollintoview.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D nB","132":"G E A B"},B:{"1":"q","132":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","132":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB eB dB"},D:{"1":"4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","132":"0 1 2 3 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB"},E:{"2":"F O WB RB","132":"7 9 H D G E A B C K YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 s t u v w x y z","2":"E gB hB iB jB","16":"7 B GB","132":"9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r lB"},G:{"16":"RB mB CB","132":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"16":"4B 5B","132":"OB F QB 6B 7B CB 8B 9B"},J:{"132":"D A"},K:{"132":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"132":"A B"},O:{"132":"AC"},P:{"132":"F BC CC DC EC FC PB"},Q:{"132":"GC"},R:{"132":"HC"},S:{"1":"IC"}},B:5,C:"scrollIntoView"};
diff --git a/assets/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js b/assets/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js
deleted file mode 100644
index 04d84d0..0000000
--- a/assets/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","16":"F O WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB"},H:{"2":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:7,C:"Element.scrollIntoViewIfNeeded()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/sdch.js b/assets/node_modules/caniuse-lite/data/features/sdch.js
deleted file mode 100644
index 4323ff1..0000000
--- a/assets/node_modules/caniuse-lite/data/features/sdch.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"SDCH Accept-Encoding/Content-Encoding"};
diff --git a/assets/node_modules/caniuse-lite/data/features/selection-api.js b/assets/node_modules/caniuse-lite/data/features/selection-api.js
deleted file mode 100644
index 9a5d10f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/selection-api.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","16":"nB","260":"H D G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 w x y z EB NB DB BB FB HB IB JB KB LB MB","132":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m eB dB","2180":"n o p M r s t u v"},D:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","16":"F O WB RB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","132":"7 9 E B C gB hB iB jB GB lB"},G:{"16":"CB","132":"RB mB","516":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB 8B 9B","16":"OB F 4B 5B 6B 7B","1025":"CB"},J:{"1":"A","16":"D"},K:{"1":"M","16":"7 A B C GB","132":"9"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","16":"A"},O:{"1025":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2180":"IC"}},B:5,C:"Selection API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/server-timing.js b/assets/node_modules/caniuse-lite/data/features/server-timing.js
deleted file mode 100644
index ebf8a1e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/server-timing.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"4 5 6 8 NB DB BB FB HB IB JB KB LB MB","2":"0 1 2 3 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB eB dB"},D:{"1":"8 DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB","196":"3 4 5 NB","324":"6"},E:{"2":"7 F O H D G E A B C WB RB YB ZB aB bB PB","516":"9 K fB"},F:{"1":"0 1 2 3 4 5 6 w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"Server Timing"};
diff --git a/assets/node_modules/caniuse-lite/data/features/serviceworkers.js b/assets/node_modules/caniuse-lite/data/features/serviceworkers.js
deleted file mode 100644
index a72812c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/serviceworkers.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"I J q","2":"C K f","322":"L N"},C:{"1":"0 1 2 4 5 6 8 o M r s t u v x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c eB dB","194":"d e AB g h i j k l m n","513":"3 p w"},D:{"1":"0 1 2 3 4 5 6 8 p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j","4":"k l m n o"},E:{"1":"7 9 C K fB","2":"F O H D G E A B WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W gB hB iB jB GB lB","4":"X Y Z a b"},G:{"1":"xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","4":"QB"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","4":"M"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"4":"GC"},R:{"4":"HC"},S:{"2":"IC"}},B:5,C:"Service Workers"};
diff --git a/assets/node_modules/caniuse-lite/data/features/setimmediate.js b/assets/node_modules/caniuse-lite/data/features/setimmediate.js
deleted file mode 100644
index 0f3e465..0000000
--- a/assets/node_modules/caniuse-lite/data/features/setimmediate.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J","2":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"1":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"Efficient Script Yielding: setImmediate()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/sha-2.js b/assets/node_modules/caniuse-lite/data/features/sha-2.js
deleted file mode 100644
index 9cd78ee..0000000
--- a/assets/node_modules/caniuse-lite/data/features/sha-2.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D G E A B","2":"nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","132":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"16":"3B"},I:{"1":"OB F QB 5B 6B 7B CB 8B 9B","260":"4B"},J:{"1":"D A"},K:{"16":"7 9 A B C M GB"},L:{"1":"q"},M:{"16":"8"},N:{"16":"A B"},O:{"16":"AC"},P:{"1":"BC CC DC EC FC PB","16":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"SHA-2 SSL certificates"};
diff --git a/assets/node_modules/caniuse-lite/data/features/shadowdom.js b/assets/node_modules/caniuse-lite/data/features/shadowdom.js
deleted file mode 100644
index 8621771..0000000
--- a/assets/node_modules/caniuse-lite/data/features/shadowdom.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y NB DB BB FB HB IB JB KB LB MB eB dB","66":"0 1 2 3 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB"},D:{"1":"0 1 2 3 4 5 6 8 AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q","2":"F O H D G E A B C K f L N I J P Q R S T U sB UB VB","33":"V W X Y Z a b c d e"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","33":"L N I J P Q R"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB","33":"8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","33":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:7,C:"Shadow DOM (deprecated V0 spec)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/shadowdomv1.js b/assets/node_modules/caniuse-lite/data/features/shadowdomv1.js
deleted file mode 100644
index 5db237d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/shadowdomv1.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"5 6 8 DB BB FB HB IB JB KB LB MB","2":"0 1 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z eB dB","322":"2","578":"3 4 EB NB"},D:{"1":"0 1 2 3 4 5 6 8 x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w"},E:{"2":"F O H D G E WB RB YB ZB aB bB","132":"7 9 A B C K PB fB"},F:{"1":"0 1 2 3 4 5 6 k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB","132":"uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"CC DC EC FC PB","2":"F","4":"BC"},Q:{"1":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"Shadow DOM (V1)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/sharedarraybuffer.js b/assets/node_modules/caniuse-lite/data/features/sharedarraybuffer.js
deleted file mode 100644
index e912b73..0000000
--- a/assets/node_modules/caniuse-lite/data/features/sharedarraybuffer.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L","194":"N I J"},C:{"2":"0 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z eB dB","194":"1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB","450":"MB"},D:{"1":"8 HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB","194":"3 4 5 6 NB DB BB FB"},E:{"2":"F O H D G E A WB RB YB ZB aB bB","194":"7 9 B C K PB fB"},F:{"1":"6","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M gB hB iB jB GB lB","194":"0 1 2 3 4 5 r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB","194":"vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"194":"q"},M:{"194":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"Shared Array Buffer"};
diff --git a/assets/node_modules/caniuse-lite/data/features/sharedworkers.js b/assets/node_modules/caniuse-lite/data/features/sharedworkers.js
deleted file mode 100644
index 9f7190f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/sharedworkers.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"O H YB","2":"7 9 F D G E A B C K WB RB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z jB GB lB","2":"E gB hB iB"},G:{"1":"oB pB","2":"G RB mB CB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 B C GB","2":"M","16":"A"},L:{"2":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"F","2":"BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:1,C:"Shared Web Workers"};
diff --git a/assets/node_modules/caniuse-lite/data/features/sni.js b/assets/node_modules/caniuse-lite/data/features/sni.js
deleted file mode 100644
index 47baa9c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/sni.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H nB","132":"D G"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB"},H:{"1":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","2":"4B 5B 6B"},J:{"1":"A","2":"D"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"Server Name Indication"};
diff --git a/assets/node_modules/caniuse-lite/data/features/spdy.js b/assets/node_modules/caniuse-lite/data/features/spdy.js
deleted file mode 100644
index 01e0d99..0000000
--- a/assets/node_modules/caniuse-lite/data/features/spdy.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G E A nB"},B:{"2":"C K f L N I J q"},C:{"1":"K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u","2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u","2":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 G E A B C bB PB","2":"F O H D WB RB YB ZB aB","129":"9 K fB"},F:{"1":"9 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j m o","2":"0 1 2 3 4 5 6 7 E B C k l n p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G rB SB tB uB vB wB xB yB","2":"RB mB CB oB pB qB","257":"zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F 7B CB 8B 9B","2":"QB 4B 5B 6B"},J:{"2":"D A"},K:{"1":"9","2":"7 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"1":"B","2":"A"},O:{"2":"AC"},P:{"1":"F","2":"BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"16":"HC"},S:{"1":"IC"}},B:7,C:"SPDY protocol"};
diff --git a/assets/node_modules/caniuse-lite/data/features/speech-recognition.js b/assets/node_modules/caniuse-lite/data/features/speech-recognition.js
deleted file mode 100644
index 5af21b9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/speech-recognition.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","164":"q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R eB dB","322":"0 1 2 3 4 5 6 8 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U","164":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W gB hB iB jB GB lB","1026":"0 1 2 3 4 5 6 X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"164":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"164":"F BC CC DC EC FC PB"},Q:{"164":"GC"},R:{"164":"HC"},S:{"322":"IC"}},B:7,C:"Speech Recognition API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/speech-synthesis.js b/assets/node_modules/caniuse-lite/data/features/speech-synthesis.js
deleted file mode 100644
index a88ea01..0000000
--- a/assets/node_modules/caniuse-lite/data/features/speech-synthesis.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"f L N I J","2":"C K","257":"q"},C:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a eB dB","194":"b c d e AB g h i j k l m n o p M r s"},D:{"1":"d e AB g h i j k l m n o p M r s t u v w x y","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c","257":"0 1 2 3 4 5 6 8 z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 D G E A B C K aB bB PB fB","2":"F O H WB RB YB ZB"},F:{"1":"0 1 2 3 4 5 X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W gB hB iB jB GB lB","257":"6"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"1":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:7,C:"Speech Synthesis API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/spellcheck-attribute.js b/assets/node_modules/caniuse-lite/data/features/spellcheck-attribute.js
deleted file mode 100644
index f28163b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/spellcheck-attribute.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","2":"F O WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","2":"E gB hB"},G:{"4":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"4":"3B"},I:{"4":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"A","4":"D"},K:{"4":"7 9 A B C M GB"},L:{"4":"q"},M:{"4":"8"},N:{"4":"A B"},O:{"4":"AC"},P:{"4":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"4":"HC"},S:{"2":"IC"}},B:1,C:"Spellcheck attribute"};
diff --git a/assets/node_modules/caniuse-lite/data/features/sql-storage.js b/assets/node_modules/caniuse-lite/data/features/sql-storage.js
deleted file mode 100644
index fb8cfef..0000000
--- a/assets/node_modules/caniuse-lite/data/features/sql-storage.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C WB RB YB ZB aB bB PB","2":"K fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","2":"E gB hB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB","2":"0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:7,C:"Web SQL Database"};
diff --git a/assets/node_modules/caniuse-lite/data/features/srcset.js b/assets/node_modules/caniuse-lite/data/features/srcset.js
deleted file mode 100644
index f9178af..0000000
--- a/assets/node_modules/caniuse-lite/data/features/srcset.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"N I J q","260":"C","514":"K f L"},C:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b eB dB","194":"c d e AB g h"},D:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d","260":"e AB g h"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D WB RB YB ZB","260":"G aB"},F:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q gB hB iB jB GB lB","260":"R S T U"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB qB","260":"G rB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Srcset and sizes attributes"};
diff --git a/assets/node_modules/caniuse-lite/data/features/stopimmediatepropagation.js b/assets/node_modules/caniuse-lite/data/features/stopimmediatepropagation.js
deleted file mode 100644
index 73da365..0000000
--- a/assets/node_modules/caniuse-lite/data/features/stopimmediatepropagation.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E eB dB"},D:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f L N I J P Q R S T U V"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","16":"F O WB RB"},F:{"1":"0 1 2 3 4 5 6 9 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B gB hB iB jB GB lB","16":"C"},G:{"1":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB oB"},H:{"16":"3B"},I:{"1":"F QB 7B CB 8B 9B","16":"OB 4B 5B 6B"},J:{"16":"D A"},K:{"16":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"16":"A B"},O:{"16":"AC"},P:{"1":"BC CC DC EC FC PB","16":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Event.stopImmediatePropagation()"};
diff --git a/assets/node_modules/caniuse-lite/data/features/stream.js b/assets/node_modules/caniuse-lite/data/features/stream.js
deleted file mode 100644
index 76cdf16..0000000
--- a/assets/node_modules/caniuse-lite/data/features/stream.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N eB dB","129":"g h i j k l","420":"I J P Q R S T U V W X Y Z a b c d e AB"},D:{"1":"0 1 2 3 4 5 6 8 x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q","420":"R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w"},E:{"1":"7 9 B C K fB","2":"F O H D G E A WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 k l m n o p M r s t u v w x y z","2":"7 E B L N I gB hB iB jB GB lB","420":"9 C J P Q R S T U V W X Y Z a b c d e AB g h i j"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB","513":"wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D","420":"A"},K:{"1":"M","2":"7 A B GB","420":"9 C"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"CC DC EC FC PB","420":"F BC"},Q:{"420":"GC"},R:{"420":"HC"},S:{"2":"IC"}},B:4,C:"getUserMedia/Stream API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/streams.js b/assets/node_modules/caniuse-lite/data/features/streams.js
deleted file mode 100644
index 5be86b4..0000000
--- a/assets/node_modules/caniuse-lite/data/features/streams.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","130":"B"},B:{"16":"C K","260":"f L","1028":"q","5124":"N I J"},C:{"2":"0 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z eB dB","6148":"8 DB BB FB HB IB JB KB LB MB","6722":"1 2 3 4 5 6 EB NB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v","260":"0 1 2 w x y z","1028":"3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O H D G E WB RB YB ZB aB bB","3076":"7 9 A B C K PB fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i gB hB iB jB GB lB","260":"j k l m n o p","1028":"0 1 2 3 4 5 6 M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB","16":"uB","1028":"vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","260":"QB"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","1028":"M"},L:{"1028":"q"},M:{"2626":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC","1028":"DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:1,C:"Streams"};
diff --git a/assets/node_modules/caniuse-lite/data/features/stricttransportsecurity.js b/assets/node_modules/caniuse-lite/data/features/stricttransportsecurity.js
deleted file mode 100644
index 00c48ff..0000000
--- a/assets/node_modules/caniuse-lite/data/features/stricttransportsecurity.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A nB","129":"B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 D G E A B C K aB bB PB fB","2":"F O H WB RB YB ZB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B gB hB iB jB GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"Strict Transport Security"};
diff --git a/assets/node_modules/caniuse-lite/data/features/style-scoped.js b/assets/node_modules/caniuse-lite/data/features/style-scoped.js
deleted file mode 100644
index 52b762e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/style-scoped.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"1":"R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y","2":"4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q NB DB BB FB HB IB JB KB LB MB eB dB","322":"0 1 2 3 z EB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","194":"Q R S T U V W X Y Z a b c d e AB g"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"322":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:7,C:"Scoped CSS"};
diff --git a/assets/node_modules/caniuse-lite/data/features/subresource-integrity.js b/assets/node_modules/caniuse-lite/data/features/subresource-integrity.js
deleted file mode 100644
index 7b5f49b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/subresource-integrity.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"I J q","2":"C K f L N"},C:{"1":"0 1 2 3 4 5 6 8 n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m eB dB"},D:{"1":"0 1 2 3 4 5 6 8 p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o"},E:{"1":"7 9 B C K fB","2":"F O H D G E A WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b gB hB iB jB GB lB"},G:{"1":"xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB","194":"wB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"Subresource Integrity"};
diff --git a/assets/node_modules/caniuse-lite/data/features/svg-css.js b/assets/node_modules/caniuse-lite/data/features/svg-css.js
deleted file mode 100644
index c4d65da..0000000
--- a/assets/node_modules/caniuse-lite/data/features/svg-css.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"N I J q","516":"C K f L"},C:{"1":"0 1 2 3 4 5 6 8 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","260":"F O H D G E A B C K f L N I J P Q R S T"},D:{"1":"0 1 2 3 4 5 6 8 O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","4":"F"},E:{"1":"7 9 O H D G E A B C K YB ZB aB bB PB fB","2":"WB","132":"F RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","2":"E"},G:{"1":"G CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","132":"RB mB"},H:{"260":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","2":"4B 5B 6B"},J:{"1":"D A"},K:{"1":"M","260":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"SVG in CSS backgrounds"};
diff --git a/assets/node_modules/caniuse-lite/data/features/svg-filters.js b/assets/node_modules/caniuse-lite/data/features/svg-filters.js
deleted file mode 100644
index f5f24bc..0000000
--- a/assets/node_modules/caniuse-lite/data/features/svg-filters.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB"},D:{"1":"0 1 2 3 4 5 6 8 G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F","4":"O H D"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB"},H:{"1":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"SVG filters"};
diff --git a/assets/node_modules/caniuse-lite/data/features/svg-fonts.js b/assets/node_modules/caniuse-lite/data/features/svg-fonts.js
deleted file mode 100644
index c1b803b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/svg-fonts.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"E A B nB","8":"H D G"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h","2":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","130":"i j k l m n o p M r s t u"},E:{"1":"7 9 F O H D G E A B C K RB YB ZB aB bB PB fB","2":"WB"},F:{"1":"7 9 E B C L N I J P Q R S T U gB hB iB jB GB lB","2":"0 1 2 3 4 5 6 h i j k l m n o p M r s t u v w x y z","130":"V W X Y Z a b c d e AB g"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"258":"3B"},I:{"1":"OB F 7B CB 8B 9B","2":"QB 4B 5B 6B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"130":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"F","130":"BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"130":"HC"},S:{"2":"IC"}},B:2,C:"SVG fonts"};
diff --git a/assets/node_modules/caniuse-lite/data/features/svg-fragment.js b/assets/node_modules/caniuse-lite/data/features/svg-fragment.js
deleted file mode 100644
index ed79ecc..0000000
--- a/assets/node_modules/caniuse-lite/data/features/svg-fragment.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","260":"E A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f eB dB"},D:{"1":"0 1 2 3 4 5 6 8 u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB","132":"g h i j k l m n o p M r s t"},E:{"1":"7 9 C K fB","2":"F O H D E A B WB RB YB ZB bB PB","132":"G aB"},F:{"1":"0 1 2 3 4 5 6 9 h i j k l m n o p M r s t u v w x y z","2":"L N I J P Q R S","4":"7 B C hB iB jB GB lB","16":"E gB","132":"T U V W X Y Z a b c d e AB g"},G:{"1":"xB yB zB 0B 1B 2B","2":"RB mB CB oB pB qB SB tB uB vB wB","132":"G rB"},H:{"1":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D","132":"A"},K:{"1":"9 M","4":"7 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","132":"F"},Q:{"132":"GC"},R:{"132":"HC"},S:{"1":"IC"}},B:4,C:"SVG fragment identifiers"};
diff --git a/assets/node_modules/caniuse-lite/data/features/svg-html.js b/assets/node_modules/caniuse-lite/data/features/svg-html.js
deleted file mode 100644
index fa70cae..0000000
--- a/assets/node_modules/caniuse-lite/data/features/svg-html.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","388":"E A B"},B:{"4":"q","260":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB","4":"OB"},D:{"4":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"WB RB","4":"7 9 F O H D G E A B C K YB ZB aB bB PB fB"},F:{"4":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"4":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB","4":"QB 8B 9B"},J:{"1":"A","2":"D"},K:{"4":"7 9 A B C M GB"},L:{"4":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"4":"F BC CC DC EC FC PB"},Q:{"4":"GC"},R:{"4":"HC"},S:{"1":"IC"}},B:2,C:"SVG effects for HTML"};
diff --git a/assets/node_modules/caniuse-lite/data/features/svg-html5.js b/assets/node_modules/caniuse-lite/data/features/svg-html5.js
deleted file mode 100644
index 3046448..0000000
--- a/assets/node_modules/caniuse-lite/data/features/svg-html5.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"nB","8":"H D G","129":"E A B"},B:{"1":"I J q","129":"C K f L N"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","8":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","8":"F O H"},E:{"1":"7 9 E A B C K bB PB fB","8":"F O WB RB","129":"H D G YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","2":"7 B jB GB","8":"E gB hB iB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","8":"RB mB CB","129":"G oB pB qB rB"},H:{"1":"3B"},I:{"1":"QB 8B 9B","2":"4B 5B 6B","129":"OB F 7B CB"},J:{"1":"A","129":"D"},K:{"1":"9 C M","8":"7 A B GB"},L:{"1":"q"},M:{"1":"8"},N:{"129":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Inline SVG in HTML5"};
diff --git a/assets/node_modules/caniuse-lite/data/features/svg-img.js b/assets/node_modules/caniuse-lite/data/features/svg-img.js
deleted file mode 100644
index 2c597b2..0000000
--- a/assets/node_modules/caniuse-lite/data/features/svg-img.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","132":"F O H D G E A B C K f L N I J P Q R S T U V W X"},E:{"1":"7 9 E A B C K bB PB fB","2":"WB","4":"RB","132":"F O H D G YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","132":"G RB mB CB oB pB qB rB"},H:{"1":"3B"},I:{"1":"QB 8B 9B","2":"4B 5B 6B","132":"OB F 7B CB"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"SVG in HTML img element"};
diff --git a/assets/node_modules/caniuse-lite/data/features/svg-smil.js b/assets/node_modules/caniuse-lite/data/features/svg-smil.js
deleted file mode 100644
index 193a5ed..0000000
--- a/assets/node_modules/caniuse-lite/data/features/svg-smil.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"nB","8":"H D G E A B"},B:{"1":"q","8":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","8":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","4":"F"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","8":"WB RB","132":"F O YB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","132":"RB mB CB oB"},H:{"2":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","2":"4B 5B 6B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"8":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"SVG SMIL animation"};
diff --git a/assets/node_modules/caniuse-lite/data/features/svg.js b/assets/node_modules/caniuse-lite/data/features/svg.js
deleted file mode 100644
index 0f9c790..0000000
--- a/assets/node_modules/caniuse-lite/data/features/svg.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"nB","8":"H D G","772":"E A B"},B:{"1":"q","513":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","4":"kB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K RB YB ZB aB bB PB fB","4":"WB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"QB 8B 9B","2":"4B 5B 6B","132":"OB F 7B CB"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"257":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"SVG (basic support)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/sxg.js b/assets/node_modules/caniuse-lite/data/features/sxg.js
deleted file mode 100644
index 2297117..0000000
--- a/assets/node_modules/caniuse-lite/data/features/sxg.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB","132":"JB KB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"Signed HTTP Exchanges (SXG)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/symbols.js b/assets/node_modules/caniuse-lite/data/features/symbols.js
deleted file mode 100644
index 229767a..0000000
--- a/assets/node_modules/caniuse-lite/data/features/symbols.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h"},E:{"1":"7 9 E A B C K WB RB YB ZB aB bB PB fB","2":"F O H D G"},F:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U gB hB iB jB GB lB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"16":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"16":"AC"},P:{"16":"F BC CC DC EC FC PB"},Q:{"16":"GC"},R:{"16":"HC"},S:{"1":"IC"}},B:6,C:"Symbols"};
diff --git a/assets/node_modules/caniuse-lite/data/features/tabindex-attr.js b/assets/node_modules/caniuse-lite/data/features/tabindex-attr.js
deleted file mode 100644
index 9dd32bc..0000000
--- a/assets/node_modules/caniuse-lite/data/features/tabindex-attr.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"D G E A B","16":"H nB"},B:{"1":"C K f L N I J q"},C:{"16":"kB OB eB dB","129":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f"},E:{"16":"F O WB RB","257":"7 9 H D G E A B C K YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","16":"E"},G:{"769":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"16":"3B"},I:{"16":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"16":"D A"},K:{"16":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"16":"A B"},O:{"16":"AC"},P:{"16":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"16":"HC"},S:{"129":"IC"}},B:1,C:"tabindex global attribute"};
diff --git a/assets/node_modules/caniuse-lite/data/features/template-literals.js b/assets/node_modules/caniuse-lite/data/features/template-literals.js
deleted file mode 100644
index bf314a3..0000000
--- a/assets/node_modules/caniuse-lite/data/features/template-literals.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"K f L N I J q","16":"C"},C:{"1":"0 1 2 3 4 5 6 8 e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d eB dB"},D:{"1":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k"},E:{"1":"7 9 A B K bB PB fB","2":"F O H D G E WB RB YB ZB aB","129":"C"},F:{"1":"0 1 2 3 4 5 6 Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y gB hB iB jB GB lB"},G:{"1":"SB tB uB vB wB xB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB","129":"yB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"ES6 Template Literals (Template Strings)"};
diff --git a/assets/node_modules/caniuse-lite/data/features/template.js b/assets/node_modules/caniuse-lite/data/features/template.js
deleted file mode 100644
index 2953a50..0000000
--- a/assets/node_modules/caniuse-lite/data/features/template.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"L N I J q","2":"C","388":"K f"},C:{"1":"0 1 2 3 4 5 6 8 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R eB dB"},D:{"1":"0 1 2 3 4 5 6 8 AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V","132":"W X Y Z a b c d e"},E:{"1":"7 9 E A B C K bB PB fB","2":"F O H D WB RB YB","388":"G aB","514":"ZB"},F:{"1":"0 1 2 3 4 5 6 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","132":"L N I J P Q R"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB qB","388":"G rB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"HTML templates"};
diff --git a/assets/node_modules/caniuse-lite/data/features/testfeat.js b/assets/node_modules/caniuse-lite/data/features/testfeat.js
deleted file mode 100644
index 7a39200..0000000
--- a/assets/node_modules/caniuse-lite/data/features/testfeat.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G A B nB","16":"E"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","16":"F O"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"B C"},E:{"2":"F H WB RB YB","16":"7 9 O D G E A B C K ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","16":"7"},G:{"2":"RB mB CB oB pB","16":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 7B CB 8B 9B","16":"6B"},J:{"2":"A","16":"D"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"Test feature - updated"};
diff --git a/assets/node_modules/caniuse-lite/data/features/text-decoration.js b/assets/node_modules/caniuse-lite/data/features/text-decoration.js
deleted file mode 100644
index 2faf43d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/text-decoration.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","2052":"q"},C:{"2":"kB OB F O eB dB","1028":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","1060":"H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V","226":"0 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2052":"1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O H D WB RB YB ZB","772":"9 K fB","804":"7 G E A B C bB PB","1316":"aB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e gB hB iB jB GB lB","226":"AB g h i j k l m n","2052":"0 1 2 3 4 5 6 o p M r s t u v w x y z"},G:{"2":"RB mB CB oB pB qB","292":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","2052":"M"},L:{"2052":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2052":"AC"},P:{"2":"F BC CC","2052":"DC EC FC PB"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1028":"IC"}},B:4,C:"text-decoration styling"};
diff --git a/assets/node_modules/caniuse-lite/data/features/text-emphasis.js b/assets/node_modules/caniuse-lite/data/features/text-emphasis.js
deleted file mode 100644
index 5df66ab..0000000
--- a/assets/node_modules/caniuse-lite/data/features/text-emphasis.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","164":"q"},C:{"1":"0 1 2 3 4 5 6 8 M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o eB dB","322":"p"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U","164":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 G E A B C K aB bB PB fB","2":"F O H WB RB YB","164":"D ZB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","164":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB","164":"QB 8B 9B"},J:{"2":"D","164":"A"},K:{"2":"7 9 A B C GB","164":"M"},L:{"164":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"164":"AC"},P:{"164":"F BC CC DC EC FC PB"},Q:{"164":"GC"},R:{"164":"HC"},S:{"1":"IC"}},B:4,C:"text-emphasis styling"};
diff --git a/assets/node_modules/caniuse-lite/data/features/text-overflow.js b/assets/node_modules/caniuse-lite/data/features/text-overflow.js
deleted file mode 100644
index 45fc150..0000000
--- a/assets/node_modules/caniuse-lite/data/features/text-overflow.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D G E A B","2":"nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","8":"kB OB F O H eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z GB lB","33":"E gB hB iB jB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"9 M","33":"7 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"CSS3 Text-overflow"};
diff --git a/assets/node_modules/caniuse-lite/data/features/text-size-adjust.js b/assets/node_modules/caniuse-lite/data/features/text-size-adjust.js
deleted file mode 100644
index e7694f4..0000000
--- a/assets/node_modules/caniuse-lite/data/features/text-size-adjust.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","33":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x","258":"W"},E:{"2":"7 9 F O H D G E A B C K WB RB ZB aB bB PB fB","258":"YB"},F:{"1":"0 1 2 3 4 5 6 n p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m o gB hB iB jB GB lB"},G:{"2":"RB mB CB","33":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"33":"8"},N:{"161":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"CSS text-size-adjust"};
diff --git a/assets/node_modules/caniuse-lite/data/features/text-stroke.js b/assets/node_modules/caniuse-lite/data/features/text-stroke.js
deleted file mode 100644
index 16e5a05..0000000
--- a/assets/node_modules/caniuse-lite/data/features/text-stroke.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f","33":"q","161":"L N I J"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r eB dB","161":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","450":"s"},D:{"33":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"33":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C gB hB iB jB GB lB","33":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"33":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","36":"RB"},H:{"2":"3B"},I:{"2":"OB","33":"F QB 4B 5B 6B 7B CB 8B 9B"},J:{"33":"D A"},K:{"2":"7 9 A B C GB","33":"M"},L:{"33":"q"},M:{"161":"8"},N:{"2":"A B"},O:{"33":"AC"},P:{"33":"F BC CC DC EC FC PB"},Q:{"33":"GC"},R:{"33":"HC"},S:{"161":"IC"}},B:7,C:"CSS text-stroke and text-fill"};
diff --git a/assets/node_modules/caniuse-lite/data/features/text-underline-offset.js b/assets/node_modules/caniuse-lite/data/features/text-underline-offset.js
deleted file mode 100644
index 94e249f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/text-underline-offset.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"1":"IB JB KB LB MB","2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB eB dB","130":"HB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"9 K fB","2":"7 F O H D G E A B C WB RB YB ZB aB bB PB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"text-underline-offset"};
diff --git a/assets/node_modules/caniuse-lite/data/features/textcontent.js b/assets/node_modules/caniuse-lite/data/features/textcontent.js
deleted file mode 100644
index 6cb56bf..0000000
--- a/assets/node_modules/caniuse-lite/data/features/textcontent.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K RB YB ZB aB bB PB fB","16":"WB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","16":"E"},G:{"1":"G mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB"},H:{"1":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Node.textContent"};
diff --git a/assets/node_modules/caniuse-lite/data/features/textencoder.js b/assets/node_modules/caniuse-lite/data/features/textencoder.js
deleted file mode 100644
index 7d4aa7d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/textencoder.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J eB dB","132":"P"},D:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U gB hB iB jB GB lB"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"TextEncoder & TextDecoder"};
diff --git a/assets/node_modules/caniuse-lite/data/features/tls1-1.js b/assets/node_modules/caniuse-lite/data/features/tls1-1.js
deleted file mode 100644
index 18d96c6..0000000
--- a/assets/node_modules/caniuse-lite/data/features/tls1-1.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D nB","66":"G E A"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB","2":"kB OB F O H D G E A B C K f L N I J P Q R S MB eB dB","66":"T"},D:{"1":"0 1 2 3 4 5 6 8 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB","2":"F O H D G E A B C K f L N I J P Q R UB VB"},E:{"1":"7 9 D G E A B C K aB bB PB","2":"F O H WB RB YB ZB fB"},F:{"1":"0 1 2 3 4 5 6 9 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B C gB hB iB jB GB lB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"1":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"1":"A","2":"D"},K:{"1":"9 M","2":"7 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","66":"A"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"TLS 1.1"};
diff --git a/assets/node_modules/caniuse-lite/data/features/tls1-2.js b/assets/node_modules/caniuse-lite/data/features/tls1-2.js
deleted file mode 100644
index d4bbf9e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/tls1-2.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D nB","66":"G E A"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T eB dB","66":"U V W"},D:{"1":"0 1 2 3 4 5 6 8 a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z"},E:{"1":"7 9 D G E A B C K aB bB PB fB","2":"F O H WB RB YB ZB"},F:{"1":"0 1 2 3 4 5 6 9 I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"E L N gB","66":"7 B C hB iB jB GB lB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"1":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"1":"A","2":"D"},K:{"1":"9 M","2":"7 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","66":"A"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"TLS 1.2"};
diff --git a/assets/node_modules/caniuse-lite/data/features/tls1-3.js b/assets/node_modules/caniuse-lite/data/features/tls1-3.js
deleted file mode 100644
index edbf9ff..0000000
--- a/assets/node_modules/caniuse-lite/data/features/tls1-3.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"5 6 8 DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u eB dB","132":"3 4 NB","834":"0 1 2 v w x y z EB"},D:{"1":"IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x","1602":"0 1 2 3 4 5 6 8 y z EB NB DB BB FB HB"},E:{"2":"7 F O H D G E A B C WB RB YB ZB aB bB PB","2052":"9 K fB"},F:{"1":"1 2 3 4 5 6","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x gB hB iB jB GB lB","1602":"0 y z"},G:{"1":"zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:6,C:"TLS 1.3"};
diff --git a/assets/node_modules/caniuse-lite/data/features/token-binding.js b/assets/node_modules/caniuse-lite/data/features/token-binding.js
deleted file mode 100644
index dfa556a..0000000
--- a/assets/node_modules/caniuse-lite/data/features/token-binding.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f","194":"q","257":"L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB eB dB","16":"LB MB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i","16":"0 1 j k l m n o p M r s t u v w x y z","194":"2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O H D G WB RB YB ZB aB","16":"7 9 E A B C K bB PB fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z gB hB iB jB GB lB","16":"0 1 2 3 4 5 6 a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB","16":"SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"16":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","16":"QB"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","16":"M"},L:{"16":"q"},M:{"16":"8"},N:{"2":"A","16":"B"},O:{"16":"AC"},P:{"16":"F BC CC DC EC FC PB"},Q:{"16":"GC"},R:{"16":"HC"},S:{"2":"IC"}},B:6,C:"Token Binding"};
diff --git a/assets/node_modules/caniuse-lite/data/features/touch.js b/assets/node_modules/caniuse-lite/data/features/touch.js
deleted file mode 100644
index 7f93b1d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/touch.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","8":"A B"},B:{"1":"q","578":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 J P Q R S T U w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","4":"F O H D G E A B C K f L N I","194":"V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v"},D:{"1":"0 1 2 3 4 5 6 8 S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"8":"A","260":"B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"2":"IC"}},B:2,C:"Touch events"};
diff --git a/assets/node_modules/caniuse-lite/data/features/transforms2d.js b/assets/node_modules/caniuse-lite/data/features/transforms2d.js
deleted file mode 100644
index a2645d2..0000000
--- a/assets/node_modules/caniuse-lite/data/features/transforms2d.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"nB","8":"H D G","129":"A B","161":"E"},B:{"1":"I J q","129":"C K f L N"},C:{"1":"0 1 2 3 4 5 6 8 N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB","33":"F O H D G E A B C K f L eB dB"},D:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","33":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB"},E:{"1":"7 9 E A B C K bB PB fB","33":"F O H D G WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 9 T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"E gB hB","33":"7 B C L N I J P Q R S iB jB GB lB"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","33":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"1":"QB","33":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"33":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"CSS3 2D Transforms"};
diff --git a/assets/node_modules/caniuse-lite/data/features/transforms3d.js b/assets/node_modules/caniuse-lite/data/features/transforms3d.js
deleted file mode 100644
index 473e62a..0000000
--- a/assets/node_modules/caniuse-lite/data/features/transforms3d.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","132":"A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E eB dB","33":"A B C K f L"},D:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B","33":"C K f L N I J P Q R S T U V W X Y Z a b c d e AB"},E:{"2":"WB RB","33":"F O H D G YB ZB aB","257":"7 9 E A B C K bB PB fB"},F:{"1":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","33":"L N I J P Q R S"},G:{"33":"G RB mB CB oB pB qB rB","257":"SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"4B 5B 6B","33":"OB F 7B CB 8B 9B"},J:{"33":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"132":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"CSS3 3D Transforms"};
diff --git a/assets/node_modules/caniuse-lite/data/features/ttf.js b/assets/node_modules/caniuse-lite/data/features/ttf.js
deleted file mode 100644
index cffc0d5..0000000
--- a/assets/node_modules/caniuse-lite/data/features/ttf.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","132":"E A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB OB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z hB iB jB GB lB","2":"E gB"},G:{"1":"G CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB"},H:{"2":"3B"},I:{"1":"OB F QB 5B 6B 7B CB 8B 9B","2":"4B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"132":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"TTF/OTF - TrueType and OpenType font support"};
diff --git a/assets/node_modules/caniuse-lite/data/features/typedarrays.js b/assets/node_modules/caniuse-lite/data/features/typedarrays.js
deleted file mode 100644
index 494fefd..0000000
--- a/assets/node_modules/caniuse-lite/data/features/typedarrays.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"B","2":"H D G E nB","132":"A"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F O WB RB","260":"YB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","2":"7 E B gB hB iB jB GB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB","260":"CB"},H:{"1":"3B"},I:{"1":"F QB 7B CB 8B 9B","2":"OB 4B 5B 6B"},J:{"1":"A","2":"D"},K:{"1":"9 C M","2":"7 A B GB"},L:{"1":"q"},M:{"1":"8"},N:{"132":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"Typed Arrays"};
diff --git a/assets/node_modules/caniuse-lite/data/features/u2f.js b/assets/node_modules/caniuse-lite/data/features/u2f.js
deleted file mode 100644
index 7bc6e0f..0000000
--- a/assets/node_modules/caniuse-lite/data/features/u2f.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","513":"q"},C:{"1":"8 FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M eB dB","322":"0 1 2 3 4 5 6 r s t u v w x y z EB NB DB BB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h","130":"i j k","513":"0 1 2 3 4 5 6 8 l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"K fB","2":"7 9 F O H D G E A B C WB RB YB ZB aB bB PB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j l gB hB iB jB GB lB","513":"0 1 2 3 4 5 6 k m n o p M r s t u v w x y z"},G:{"1":"2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"322":"IC"}},B:6,C:"FIDO U2F API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/unhandledrejection.js b/assets/node_modules/caniuse-lite/data/features/unhandledrejection.js
deleted file mode 100644
index f922529..0000000
--- a/assets/node_modules/caniuse-lite/data/features/unhandledrejection.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"HB IB JB KB LB MB","2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s"},E:{"1":"7 9 B C K fB","2":"F O H D G E A WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB gB hB iB jB GB lB"},G:{"1":"xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB","16":"wB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:1,C:"unhandledrejection/rejectionhandled events"};
diff --git a/assets/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js b/assets/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js
deleted file mode 100644
index 792e4cd..0000000
--- a/assets/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"I J q","2":"C K f L N"},C:{"1":"0 1 2 3 4 5 6 8 m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l eB dB"},D:{"1":"0 1 2 3 4 5 6 8 n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z gB hB iB jB GB lB"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"Upgrade Insecure Requests"};
diff --git a/assets/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js b/assets/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js
deleted file mode 100644
index be55f09..0000000
--- a/assets/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"sB UB VB","2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB","66":"MB cB QB XB TB q"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"66":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"URL Scroll-To-Text Fragment"};
diff --git a/assets/node_modules/caniuse-lite/data/features/url.js b/assets/node_modules/caniuse-lite/data/features/url.js
deleted file mode 100644
index 09f917e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/url.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V eB dB"},D:{"1":"0 1 2 3 4 5 6 8 c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S","130":"T U V W X Y Z a b"},E:{"1":"7 9 G E A B C K aB bB PB fB","2":"F O H WB RB YB ZB","130":"D"},F:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","130":"L N I J"},G:{"1":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB","130":"qB"},H:{"2":"3B"},I:{"1":"QB 9B","2":"OB F 4B 5B 6B 7B CB","130":"8B"},J:{"2":"D","130":"A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"URL API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/urlsearchparams.js b/assets/node_modules/caniuse-lite/data/features/urlsearchparams.js
deleted file mode 100644
index b68e8a7..0000000
--- a/assets/node_modules/caniuse-lite/data/features/urlsearchparams.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"I J q","2":"C K f L N"},C:{"1":"0 1 2 3 4 5 6 8 o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y eB dB","132":"Z a b c d e AB g h i j k l m n"},D:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s"},E:{"1":"7 9 B C K PB fB","2":"F O H D G E A WB RB YB ZB aB bB"},F:{"1":"0 1 2 3 4 5 6 g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB gB hB iB jB GB lB"},G:{"1":"vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","2":"F"},Q:{"2":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:1,C:"URLSearchParams"};
diff --git a/assets/node_modules/caniuse-lite/data/features/use-strict.js b/assets/node_modules/caniuse-lite/data/features/use-strict.js
deleted file mode 100644
index adbff59..0000000
--- a/assets/node_modules/caniuse-lite/data/features/use-strict.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F WB RB","132":"O YB"},F:{"1":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","2":"7 E B gB hB iB jB GB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"1":"3B"},I:{"1":"OB F QB 7B CB 8B 9B","2":"4B 5B 6B"},J:{"1":"D A"},K:{"1":"9 C M GB","2":"7 A B"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"ECMAScript 5 Strict Mode"};
diff --git a/assets/node_modules/caniuse-lite/data/features/user-select-none.js b/assets/node_modules/caniuse-lite/data/features/user-select-none.js
deleted file mode 100644
index e8784e6..0000000
--- a/assets/node_modules/caniuse-lite/data/features/user-select-none.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","33":"A B"},B:{"1":"q","33":"C K f L N I J"},C:{"1":"HB IB JB KB LB MB","33":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","33":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x"},E:{"33":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","33":"L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k"},G:{"33":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","33":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"33":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"33":"8"},N:{"33":"A B"},O:{"2":"AC"},P:{"33":"F BC CC DC EC FC PB"},Q:{"33":"GC"},R:{"2":"HC"},S:{"33":"IC"}},B:5,C:"CSS user-select: none"};
diff --git a/assets/node_modules/caniuse-lite/data/features/user-timing.js b/assets/node_modules/caniuse-lite/data/features/user-timing.js
deleted file mode 100644
index 7f31263..0000000
--- a/assets/node_modules/caniuse-lite/data/features/user-timing.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h eB dB"},D:{"1":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U"},E:{"1":"7 9 B C K fB","2":"F O H D G E A WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"User Timing API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/variable-fonts.js b/assets/node_modules/caniuse-lite/data/features/variable-fonts.js
deleted file mode 100644
index 368a597..0000000
--- a/assets/node_modules/caniuse-lite/data/features/variable-fonts.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"I J q","2":"C K f L N"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w eB dB","4609":"4 5 6 8 DB BB FB HB IB JB KB LB MB","4674":"NB","5698":"3","7490":"0 1 x y z","7746":"2 EB"},D:{"1":"8 FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","4097":"BB","4290":"3 EB NB","6148":"4 5 6 DB"},E:{"2":"F O H D G E A WB RB YB ZB aB bB PB","4609":"7 9 B C K fB"},F:{"1":"0 1 2 3 4 5 6 y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s gB hB iB jB GB lB","4097":"x","6148":"t u v w"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB","4097":"wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"4097":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC","4097":"EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"Variable fonts"};
diff --git a/assets/node_modules/caniuse-lite/data/features/vibration.js b/assets/node_modules/caniuse-lite/data/features/vibration.js
deleted file mode 100644
index 2579850..0000000
--- a/assets/node_modules/caniuse-lite/data/features/vibration.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A eB dB","33":"B C K f L"},D:{"1":"0 1 2 3 4 5 6 8 a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"Vibration API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/video.js b/assets/node_modules/caniuse-lite/data/features/video.js
deleted file mode 100644
index 1710f80..0000000
--- a/assets/node_modules/caniuse-lite/data/features/video.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB","260":"F O H D G E A B C K f L N I J P eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"F O H D G E A YB ZB aB bB PB","2":"WB RB","513":"7 9 B C K fB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","2":"E gB hB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB","513":"wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","132":"4B 5B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Video element"};
diff --git a/assets/node_modules/caniuse-lite/data/features/videotracks.js b/assets/node_modules/caniuse-lite/data/features/videotracks.js
deleted file mode 100644
index 6fa70df..0000000
--- a/assets/node_modules/caniuse-lite/data/features/videotracks.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J","322":"q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c eB dB","194":"0 1 2 3 4 5 6 8 d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o","322":"0 1 2 3 4 5 6 8 p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","2":"F O H WB RB YB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b gB hB iB jB GB lB","322":"0 1 2 3 4 5 6 c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","322":"M"},L:{"322":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"194":"IC"}},B:1,C:"Video Tracks"};
diff --git a/assets/node_modules/caniuse-lite/data/features/viewport-units.js b/assets/node_modules/caniuse-lite/data/features/viewport-units.js
deleted file mode 100644
index 2aaaf78..0000000
--- a/assets/node_modules/caniuse-lite/data/features/viewport-units.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","132":"E","260":"A B"},B:{"1":"N I J q","260":"C K f L"},C:{"1":"0 1 2 3 4 5 6 8 P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J eB dB"},D:{"1":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P","260":"Q R S T U V"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB","260":"H"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB","516":"qB","772":"pB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"260":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"Viewport units: vw, vh, vmin, vmax"};
diff --git a/assets/node_modules/caniuse-lite/data/features/wai-aria.js b/assets/node_modules/caniuse-lite/data/features/wai-aria.js
deleted file mode 100644
index 761aaba..0000000
--- a/assets/node_modules/caniuse-lite/data/features/wai-aria.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D nB","4":"G E A B"},B:{"4":"C K f L N I J q"},C:{"4":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"4":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"WB RB","4":"7 9 F O H D G E A B C K YB ZB aB bB PB fB"},F:{"2":"E","4":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"4":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"4":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB","4":"QB 8B 9B"},J:{"2":"D A"},K:{"4":"7 9 A B C M GB"},L:{"4":"q"},M:{"4":"8"},N:{"4":"A B"},O:{"2":"AC"},P:{"4":"F BC CC DC EC FC PB"},Q:{"4":"GC"},R:{"4":"HC"},S:{"4":"IC"}},B:2,C:"WAI-ARIA Accessibility features"};
diff --git a/assets/node_modules/caniuse-lite/data/features/wasm.js b/assets/node_modules/caniuse-lite/data/features/wasm.js
deleted file mode 100644
index 7bcb0b5..0000000
--- a/assets/node_modules/caniuse-lite/data/features/wasm.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"N I J q","2":"C K f","578":"L"},C:{"1":"0 1 2 3 4 5 6 8 x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M eB dB","194":"r s t u v","1025":"w"},D:{"1":"1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u","322":"0 v w x y z"},E:{"1":"7 9 B C K fB","2":"F O H D G E A WB RB YB ZB aB bB PB"},F:{"1":"0 1 2 3 4 5 6 o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h gB hB iB jB GB lB","322":"i j k l m n"},G:{"1":"wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"DC EC FC PB","2":"F BC CC"},Q:{"322":"GC"},R:{"2":"HC"},S:{"194":"IC"}},B:6,C:"WebAssembly"};
diff --git a/assets/node_modules/caniuse-lite/data/features/wav.js b/assets/node_modules/caniuse-lite/data/features/wav.js
deleted file mode 100644
index 16212c0..0000000
--- a/assets/node_modules/caniuse-lite/data/features/wav.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB OB"},D:{"1":"0 1 2 3 4 5 6 8 G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","2":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z iB jB GB lB","2":"E gB hB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","16":"A"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"Wav audio format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/wbr-element.js b/assets/node_modules/caniuse-lite/data/features/wbr-element.js
deleted file mode 100644
index 2315cb0..0000000
--- a/assets/node_modules/caniuse-lite/data/features/wbr-element.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D nB","2":"G E A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K RB YB ZB aB bB PB fB","16":"WB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","16":"E"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB"},H:{"1":"3B"},I:{"1":"OB F QB 6B 7B CB 8B 9B","16":"4B 5B"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"wbr (word break opportunity) element"};
diff --git a/assets/node_modules/caniuse-lite/data/features/web-animation.js b/assets/node_modules/caniuse-lite/data/features/web-animation.js
deleted file mode 100644
index 52e2f13..0000000
--- a/assets/node_modules/caniuse-lite/data/features/web-animation.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","260":"q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c eB dB","260":"3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB","516":"0 1 2 r s t u v w x y z","580":"d e AB g h i j k l m n o p M"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB","132":"g h i","260":"0 1 2 3 4 5 6 8 j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"F O H D G E A WB RB YB ZB aB bB PB","4":"fB","1090":"7 9 B C K"},F:{"2":"7 9 E B C L N I J P Q R S gB hB iB jB GB lB","132":"T U V","260":"0 1 2 3 4 5 6 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB","4":"zB 0B 1B 2B","1090":"wB xB yB"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","260":"QB"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","260":"M"},L:{"260":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"260":"AC"},P:{"260":"F BC CC DC EC FC PB"},Q:{"260":"GC"},R:{"260":"HC"},S:{"516":"IC"}},B:5,C:"Web Animations API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/web-app-manifest.js b/assets/node_modules/caniuse-lite/data/features/web-app-manifest.js
deleted file mode 100644
index 417830d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/web-app-manifest.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N","514":"I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i","132":"0 1 2 3 4 5 6 j k l m n o p M r s t u v w x y z EB NB DB BB","260":"8 FB HB IB JB KB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB","132":"xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","132":"M"},L:{"1":"q"},M:{"132":"8"},N:{"2":"A B"},O:{"132":"AC"},P:{"132":"F BC CC DC EC FC PB"},Q:{"132":"GC"},R:{"132":"HC"},S:{"2":"IC"}},B:5,C:"Web App Manifest"};
diff --git a/assets/node_modules/caniuse-lite/data/features/web-bluetooth.js b/assets/node_modules/caniuse-lite/data/features/web-bluetooth.js
deleted file mode 100644
index 0a87250..0000000
--- a/assets/node_modules/caniuse-lite/data/features/web-bluetooth.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","1025":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o","194":"p M r s t u v w","706":"x y z","1025":"0 1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB gB hB iB jB GB lB","450":"g h i j","706":"k l m","1025":"0 1 2 3 4 5 6 n o p M r s t u v w x y z"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B 9B","1025":"QB"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1025":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1":"CC DC EC FC PB","2":"F BC"},Q:{"706":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"Web Bluetooth"};
diff --git a/assets/node_modules/caniuse-lite/data/features/web-share.js b/assets/node_modules/caniuse-lite/data/features/web-share.js
deleted file mode 100644
index 83f3e05..0000000
--- a/assets/node_modules/caniuse-lite/data/features/web-share.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","258":"J P Q R S T U"},E:{"1":"9 K fB","2":"7 F O H D G E A B C WB RB YB aB bB PB","16":"ZB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB"},H:{"2":"3B"},I:{"2":"OB F 4B 5B 6B 7B CB 8B","514":"QB 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"514":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F","514":"BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"16":"HC"},S:{"2":"IC"}},B:7,C:"Web Share API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/webauthn.js b/assets/node_modules/caniuse-lite/data/features/webauthn.js
deleted file mode 100644
index 0f95e9b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/webauthn.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"J q","2":"C","226":"K f L N I"},C:{"1":"3 4 5 6 8 NB DB BB FB HB IB JB KB LB MB","2":"0 1 2 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB eB dB"},D:{"1":"8 FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"0 1 2 3 4 5 6 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB"},E:{"1":"K fB","2":"7 F O H D G E A B C WB RB YB ZB aB bB PB","322":"9"},F:{"1":"0 1 2 3 4 5 6 y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x gB hB iB jB GB lB"},G:{"1":"2B","2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B","578":"1B"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:2,C:"Web Authentication API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/webgl.js b/assets/node_modules/caniuse-lite/data/features/webgl.js
deleted file mode 100644
index a7bdd88..0000000
--- a/assets/node_modules/caniuse-lite/data/features/webgl.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"nB","8":"H D G E A","129":"B"},B:{"1":"q","129":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","129":"F O H D G E A B C K f L N I J P Q R S T"},D:{"1":"0 1 2 3 4 5 6 8 d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D","129":"G E A B C K f L N I J P Q R S T U V W X Y Z a b c"},E:{"1":"7 9 G E A B C K bB PB fB","2":"F O WB RB","129":"H D YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B gB hB iB jB GB lB","129":"9 C L N I J"},G:{"1":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB qB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"1":"A","2":"D"},K:{"1":"9 C M","2":"7 A B GB"},L:{"1":"q"},M:{"1":"8"},N:{"8":"A","129":"B"},O:{"129":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"129":"IC"}},B:6,C:"WebGL - 3D Canvas graphics"};
diff --git a/assets/node_modules/caniuse-lite/data/features/webgl2.js b/assets/node_modules/caniuse-lite/data/features/webgl2.js
deleted file mode 100644
index 439dc0c..0000000
--- a/assets/node_modules/caniuse-lite/data/features/webgl2.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U eB dB","194":"m n o","450":"V W X Y Z a b c d e AB g h i j k l","2242":"p M r s t u"},D:{"1":"0 1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m","578":"n o p M r s t u v w x y z"},E:{"2":"F O H D G E A WB RB YB ZB aB bB","1090":"7 9 B C K PB fB"},F:{"1":"0 1 2 3 4 5 6 n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB","1090":"yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"DC EC FC PB","2":"F BC CC"},Q:{"578":"GC"},R:{"2":"HC"},S:{"2242":"IC"}},B:6,C:"WebGL 2.0"};
diff --git a/assets/node_modules/caniuse-lite/data/features/webhid.js b/assets/node_modules/caniuse-lite/data/features/webhid.js
deleted file mode 100644
index 3079074..0000000
--- a/assets/node_modules/caniuse-lite/data/features/webhid.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB","194":"TB q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"WebHID API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/webm.js b/assets/node_modules/caniuse-lite/data/features/webm.js
deleted file mode 100644
index 6016724..0000000
--- a/assets/node_modules/caniuse-lite/data/features/webm.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G nB","8":"E A B"},B:{"1":"q","4":"f L N I J","8":"C K"},C:{"1":"0 1 2 3 4 5 6 8 Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","4":"F O H D G E A B C K f L N I J P Q R S T U V W X"},D:{"1":"0 1 2 3 4 5 6 8 V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O","4":"H D G E A B C K f L N I J P Q R S T U"},E:{"2":"WB","8":"7 F O H D G E A B C RB YB ZB aB bB PB","132":"9 K fB"},F:{"1":"0 1 2 3 4 5 6 N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"E gB hB iB","4":"7 9 B C L jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB","132":"zB 0B 1B 2B"},H:{"2":"3B"},I:{"1":"QB","2":"4B 5B","4":"OB F 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C GB","4":"M"},L:{"1":"q"},M:{"1":"8"},N:{"8":"A B"},O:{"1":"AC"},P:{"1":"BC CC DC EC FC PB","4":"F"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:6,C:"WebM video format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/webp.js b/assets/node_modules/caniuse-lite/data/features/webp.js
deleted file mode 100644
index fe2978b..0000000
--- a/assets/node_modules/caniuse-lite/data/features/webp.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"J q","2":"C K f L N I"},C:{"1":"8 DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","8":"0 1 2 3 4 5 6 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB"},D:{"1":"0 1 2 3 4 5 6 8 c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O","8":"H D G","132":"E A B C K f L N I J P Q R S","260":"T U V W X Y Z a b"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"E gB hB iB","8":"B jB","132":"7 GB lB","260":"9 C L N I J"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"QB CB 8B 9B","2":"OB 4B 5B 6B","132":"F 7B"},J:{"2":"D A"},K:{"1":"7 9 C M GB","2":"A","132":"B"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"8":"IC"}},B:7,C:"WebP image format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/websockets.js b/assets/node_modules/caniuse-lite/data/features/websockets.js
deleted file mode 100644
index 366ad17..0000000
--- a/assets/node_modules/caniuse-lite/data/features/websockets.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB eB dB","132":"F O","292":"H D G E A"},D:{"1":"0 1 2 3 4 5 6 8 N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","132":"F O H D G E A B C K f","260":"L"},E:{"1":"7 9 D G E A B C K aB bB PB fB","2":"F WB RB","132":"O YB","260":"H ZB"},F:{"1":"0 1 2 3 4 5 6 9 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"E gB hB iB jB","132":"7 B C GB lB"},G:{"1":"G pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB","132":"CB oB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","129":"D"},K:{"1":"9 M","2":"A","132":"7 B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Web Sockets"};
diff --git a/assets/node_modules/caniuse-lite/data/features/webusb.js b/assets/node_modules/caniuse-lite/data/features/webusb.js
deleted file mode 100644
index 9cc1ddd..0000000
--- a/assets/node_modules/caniuse-lite/data/features/webusb.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"4 5 6 8 NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x","66":"0 1 2 3 y z EB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 s t u v w x y z","2":"7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k gB hB iB jB GB lB","66":"l m n o p M r"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"1":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:7,C:"WebUSB"};
diff --git a/assets/node_modules/caniuse-lite/data/features/webvr.js b/assets/node_modules/caniuse-lite/data/features/webvr.js
deleted file mode 100644
index d0ac8f0..0000000
--- a/assets/node_modules/caniuse-lite/data/features/webvr.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f","322":"q","513":"L N I J"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x eB dB","129":"0 1 2 3 4 5 6 8 z EB NB DB BB FB HB IB JB KB LB MB","194":"y"},D:{"2":"0 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z sB UB VB","322":"1 2 3 4 5 6 8 EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"2049":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"1025":"F","1028":"BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"322":"HC"},S:{"2":"IC"}},B:7,C:"WebVR API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/webvtt.js b/assets/node_modules/caniuse-lite/data/features/webvtt.js
deleted file mode 100644
index 01f3416..0000000
--- a/assets/node_modules/caniuse-lite/data/features/webvtt.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"2":"kB OB F O H D G E A B C K f L N I J P Q R S T eB dB","66":"U V W X Y Z a","129":"0 1 2 3 4 5 6 8 b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB"},D:{"1":"0 1 2 3 4 5 6 8 J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I"},E:{"1":"7 9 H D G E A B C K ZB aB bB PB fB","2":"F O WB RB YB"},F:{"1":"0 1 2 3 4 5 6 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB oB pB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","2":"D"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"B","2":"A"},O:{"2":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"129":"IC"}},B:5,C:"WebVTT - Web Video Text Tracks"};
diff --git a/assets/node_modules/caniuse-lite/data/features/webworkers.js b/assets/node_modules/caniuse-lite/data/features/webworkers.js
deleted file mode 100644
index 0943c00..0000000
--- a/assets/node_modules/caniuse-lite/data/features/webworkers.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","2":"nB","8":"H D G E"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","8":"kB OB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","8":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z jB GB lB","2":"E gB","8":"hB iB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"2":"3B"},I:{"1":"QB 4B 8B 9B","2":"OB F 5B 6B 7B CB"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","8":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Web Workers"};
diff --git a/assets/node_modules/caniuse-lite/data/features/webxr.js b/assets/node_modules/caniuse-lite/data/features/webxr.js
deleted file mode 100644
index 21ce150..0000000
--- a/assets/node_modules/caniuse-lite/data/features/webxr.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"2":"C K f L N I J","132":"q"},C:{"2":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"2":"0 1 2 3 4 5 6 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB","66":"8 BB FB HB IB JB KB LB MB cB QB XB TB","132":"q sB UB VB"},E:{"2":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"2":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"2":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"2":"3B"},I:{"2":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"2":"7 9 A B C M GB"},L:{"132":"q"},M:{"2":"8"},N:{"2":"A B"},O:{"2":"AC"},P:{"2":"F BC CC DC EC FC PB"},Q:{"2":"GC"},R:{"2":"HC"},S:{"2":"IC"}},B:5,C:"WebXR Device API"};
diff --git a/assets/node_modules/caniuse-lite/data/features/will-change.js b/assets/node_modules/caniuse-lite/data/features/will-change.js
deleted file mode 100644
index a1a6fa3..0000000
--- a/assets/node_modules/caniuse-lite/data/features/will-change.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"q","2":"C K f L N I J"},C:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y eB dB","194":"Z a b c d e AB"},D:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB"},E:{"1":"7 9 A B C K bB PB fB","2":"F O H D G E WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S T gB hB iB jB GB lB"},G:{"1":"tB uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"CSS will-change property"};
diff --git a/assets/node_modules/caniuse-lite/data/features/woff.js b/assets/node_modules/caniuse-lite/data/features/woff.js
deleted file mode 100644
index 1a7aa02..0000000
--- a/assets/node_modules/caniuse-lite/data/features/woff.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB dB","2":"kB OB eB"},D:{"1":"0 1 2 3 4 5 6 8 O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F"},E:{"1":"7 9 H D G E A B C K YB ZB aB bB PB fB","2":"F O WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z GB lB","2":"E B gB hB iB jB"},G:{"1":"G oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB"},H:{"2":"3B"},I:{"1":"QB 8B 9B","2":"OB 4B 5B 6B 7B CB","130":"F"},J:{"1":"D A"},K:{"1":"7 9 B C M GB","2":"A"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:2,C:"WOFF - Web Open Font Format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/woff2.js b/assets/node_modules/caniuse-lite/data/features/woff2.js
deleted file mode 100644
index a7b7cb9..0000000
--- a/assets/node_modules/caniuse-lite/data/features/woff2.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E A B nB"},B:{"1":"f L N I J q","2":"C K"},C:{"1":"0 1 2 3 4 5 6 8 j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i eB dB"},D:{"1":"0 1 2 3 4 5 6 8 g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","2":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB"},E:{"1":"9 C K fB","2":"F O H D G E WB RB YB ZB aB bB","132":"7 A B PB"},F:{"1":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C L N I J P Q R S gB hB iB jB GB lB"},G:{"1":"uB vB wB xB yB zB 0B 1B 2B","2":"G RB mB CB oB pB qB rB SB tB"},H:{"2":"3B"},I:{"1":"QB","2":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"2":"D A"},K:{"1":"M","2":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"2":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"WOFF 2.0 - Web Open Font Format"};
diff --git a/assets/node_modules/caniuse-lite/data/features/word-break.js b/assets/node_modules/caniuse-lite/data/features/word-break.js
deleted file mode 100644
index c363e1e..0000000
--- a/assets/node_modules/caniuse-lite/data/features/word-break.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"H D G E A B nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB F O H D G E A B C K f eB dB"},D:{"1":"0 1 2 3 4 5 6 8 o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","4":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n"},E:{"1":"7 9 E A B C K bB PB fB","4":"F O H D G WB RB YB ZB aB"},F:{"1":"0 1 2 3 4 5 6 b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 9 E B C gB hB iB jB GB lB","4":"L N I J P Q R S T U V W X Y Z a"},G:{"1":"SB tB uB vB wB xB yB zB 0B 1B 2B","4":"G RB mB CB oB pB qB rB"},H:{"2":"3B"},I:{"1":"QB","4":"OB F 4B 5B 6B 7B CB 8B 9B"},J:{"4":"D A"},K:{"2":"7 9 A B C GB","4":"M"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"4":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"4":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:5,C:"CSS3 word-break"};
diff --git a/assets/node_modules/caniuse-lite/data/features/wordwrap.js b/assets/node_modules/caniuse-lite/data/features/wordwrap.js
deleted file mode 100644
index f5e5147..0000000
--- a/assets/node_modules/caniuse-lite/data/features/wordwrap.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"4":"H D G E A B nB"},B:{"1":"J q","4":"C K f L N I"},C:{"1":"0 1 2 3 4 5 6 8 t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB","4":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s eB dB"},D:{"1":"0 1 2 3 4 5 6 8 T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","4":"F O H D G E A B C K f L N I J P Q R S"},E:{"1":"7 9 D G E A B C K ZB aB bB PB fB","4":"F O H WB RB YB"},F:{"1":"0 1 2 3 4 5 6 9 L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"E gB hB","4":"7 B C iB jB GB lB"},G:{"1":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","4":"RB mB CB oB pB"},H:{"4":"3B"},I:{"1":"QB 8B 9B","4":"OB F 4B 5B 6B 7B CB"},J:{"1":"A","4":"D"},K:{"1":"M","4":"7 9 A B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"4":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"4":"IC"}},B:5,C:"CSS3 Overflow-wrap"};
diff --git a/assets/node_modules/caniuse-lite/data/features/x-doc-messaging.js b/assets/node_modules/caniuse-lite/data/features/x-doc-messaging.js
deleted file mode 100644
index a924ea7..0000000
--- a/assets/node_modules/caniuse-lite/data/features/x-doc-messaging.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D nB","132":"G E","260":"A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB","2":"kB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K YB ZB aB bB PB fB","2":"WB RB"},F:{"1":"0 1 2 3 4 5 6 7 9 B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB","2":"E"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"4":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"Cross-document messaging"};
diff --git a/assets/node_modules/caniuse-lite/data/features/x-frame-options.js b/assets/node_modules/caniuse-lite/data/features/x-frame-options.js
deleted file mode 100644
index 7d2d655..0000000
--- a/assets/node_modules/caniuse-lite/data/features/x-frame-options.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"G E A B","2":"H D nB"},B:{"1":"C K f L N I J","4":"q"},C:{"1":"0 1 2 3 4 5 6 8 J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB","4":"F O H D G E A B C K f L N I IB JB KB LB MB","16":"kB OB eB dB"},D:{"4":"0 1 2 3 4 5 6 8 W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H D G E A B C K f L N I J P Q R S T U V"},E:{"4":"7 9 H D G E A B C K YB ZB aB bB PB fB","16":"F O WB RB"},F:{"4":"0 1 2 3 4 5 6 9 C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z lB","16":"7 E B gB hB iB jB GB"},G:{"4":"G qB rB SB tB uB vB wB xB yB zB 0B 1B 2B","16":"RB mB CB oB pB"},H:{"2":"3B"},I:{"4":"F QB 7B CB 8B 9B","16":"OB 4B 5B 6B"},J:{"4":"D A"},K:{"4":"9 M","16":"7 A B C GB"},L:{"4":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"4":"AC"},P:{"4":"F BC CC DC EC FC PB"},Q:{"4":"GC"},R:{"4":"HC"},S:{"1":"IC"}},B:6,C:"X-Frame-Options HTTP header"};
diff --git a/assets/node_modules/caniuse-lite/data/features/xhr2.js b/assets/node_modules/caniuse-lite/data/features/xhr2.js
deleted file mode 100644
index f86f72d..0000000
--- a/assets/node_modules/caniuse-lite/data/features/xhr2.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"H D G E nB","132":"A B"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","2":"kB OB","260":"A B","388":"H D G E","900":"F O eB dB"},D:{"1":"0 1 2 3 4 5 6 8 b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","16":"F O H","132":"Z a","388":"D G E A B C K f L N I J P Q R S T U V W X Y"},E:{"1":"7 9 G E A B C K aB bB PB fB","2":"F WB RB","132":"D ZB","388":"O H YB"},F:{"1":"0 1 2 3 4 5 6 9 C J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","2":"7 E B gB hB iB jB GB lB","132":"L N I"},G:{"1":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","2":"RB mB CB","132":"qB","388":"oB pB"},H:{"2":"3B"},I:{"1":"QB 9B","2":"4B 5B 6B","388":"8B","900":"OB F 7B CB"},J:{"132":"A","388":"D"},K:{"1":"9 C M","2":"7 A B GB"},L:{"1":"q"},M:{"1":"8"},N:{"132":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:1,C:"XMLHttpRequest advanced features"};
diff --git a/assets/node_modules/caniuse-lite/data/features/xhtml.js b/assets/node_modules/caniuse-lite/data/features/xhtml.js
deleted file mode 100644
index 59ef8c0..0000000
--- a/assets/node_modules/caniuse-lite/data/features/xhtml.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"E A B","2":"H D G nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"1":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"1":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"1":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"1":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"1":"3B"},I:{"1":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"1":"D A"},K:{"1":"7 9 A B C M GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"2":"HC"},S:{"1":"IC"}},B:1,C:"XHTML served as application/xhtml+xml"};
diff --git a/assets/node_modules/caniuse-lite/data/features/xhtmlsmil.js b/assets/node_modules/caniuse-lite/data/features/xhtmlsmil.js
deleted file mode 100644
index 748e645..0000000
--- a/assets/node_modules/caniuse-lite/data/features/xhtmlsmil.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"2":"E A B nB","4":"H D G"},B:{"2":"C K f L N I J","8":"q"},C:{"8":"0 1 2 3 4 5 6 8 kB OB F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB eB dB"},D:{"8":"0 1 2 3 4 5 6 8 F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB"},E:{"8":"7 9 F O H D G E A B C K WB RB YB ZB aB bB PB fB"},F:{"8":"0 1 2 3 4 5 6 7 9 E B C L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z gB hB iB jB GB lB"},G:{"8":"G RB mB CB oB pB qB rB SB tB uB vB wB xB yB zB 0B 1B 2B"},H:{"8":"3B"},I:{"8":"OB F QB 4B 5B 6B 7B CB 8B 9B"},J:{"8":"D A"},K:{"8":"7 9 A B C M GB"},L:{"8":"q"},M:{"8":"8"},N:{"2":"A B"},O:{"8":"AC"},P:{"8":"F BC CC DC EC FC PB"},Q:{"8":"GC"},R:{"8":"HC"},S:{"8":"IC"}},B:7,C:"XHTML+SMIL animation"};
diff --git a/assets/node_modules/caniuse-lite/data/features/xml-serializer.js b/assets/node_modules/caniuse-lite/data/features/xml-serializer.js
deleted file mode 100644
index 1d3a9b7..0000000
--- a/assets/node_modules/caniuse-lite/data/features/xml-serializer.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={A:{A:{"1":"A B","260":"H D G E nB"},B:{"1":"C K f L N I J q"},C:{"1":"0 1 2 3 4 5 6 8 C K f L N I J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB","132":"B","260":"kB OB F O H D eB dB","516":"G E A"},D:{"1":"0 1 2 3 4 5 6 8 b c d e AB g h i j k l m n o p M r s t u v w x y z EB NB DB BB FB HB IB JB KB LB MB cB QB XB TB q sB UB VB","132":"F O H D G E A B C K f L N I J P Q R S T U V W X Y Z a"},E:{"1":"7 9 G E A B C K aB bB PB fB","132":"F O H D WB RB YB ZB"},F:{"1":"0 1 2 3 4 5 6 J P Q R S T U V W X Y Z a b c d e AB g h i j k l m n o p M r s t u v w x y z","16":"E gB","132":"7 9 B C L N I hB iB jB GB lB"},G:{"1":"G rB SB tB uB vB wB xB yB zB 0B 1B 2B","132":"RB mB CB oB pB qB"},H:{"132":"3B"},I:{"1":"QB 8B 9B","132":"OB F 4B 5B 6B 7B CB"},J:{"132":"D A"},K:{"1":"M","16":"A","132":"7 9 B C GB"},L:{"1":"q"},M:{"1":"8"},N:{"1":"A B"},O:{"1":"AC"},P:{"1":"F BC CC DC EC FC PB"},Q:{"1":"GC"},R:{"1":"HC"},S:{"1":"IC"}},B:4,C:"DOM Parsing and Serialization"};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AD.js b/assets/node_modules/caniuse-lite/data/regions/AD.js
deleted file mode 100644
index d959e70..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AD.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.005564,"41":0,"42":0,"43":0,"44":0.005564,"45":0.005564,"46":0.005564,"47":0.005564,"48":0,"49":0.105716,"50":0.005564,"51":0.005564,"52":0,"53":0.005564,"54":0,"55":0.005564,"56":0,"57":0.011128,"58":0.011128,"59":0.011128,"60":0.005564,"61":0.005564,"62":0,"63":0.005564,"64":0,"65":0.005564,"66":0.005564,"67":0.005564,"68":0,"69":0.011128,"70":0.02782,"71":0.011128,"72":0.022256,"73":0.506324,"74":0.05564,"75":0.08346,"76":0.022256,"77":0.100152,"78":0.36166,"79":15.768376,"80":0.011128,"81":0.005564,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.011128,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0.005564,"42":0,"43":0,"44":0,"45":0.005564,"46":0,"47":0.005564,"48":0.016692,"49":0,"50":0,"51":0.005564,"52":0.022256,"53":0.005564,"54":0.005564,"55":0.005564,"56":0.005564,"57":0.005564,"58":0,"59":0,"60":0.005564,"61":0,"62":0.016692,"63":0,"64":0,"65":0,"66":0.005564,"67":0,"68":0.100152,"69":0.005564,"70":0.022256,"71":1.046032,"72":3.037944,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005564,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.005564,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.005564},E:{"4":0,"5":0,"6":0,"7":0,"8":0.016692,"9":0,"10":0,"11":0.005564,"12":0.100152,"13":4.334356,_:"0","3.1":0,"3.2":0,"5.1":0.011128,"6.1":0.08346,"7.1":0,"9.1":0.016692,"10.1":0.50076,"11.1":0.344968,"12.1":0.395044},G:{"8":0.0024672821846554,"3.2":0.0024672821846554,"4.0-4.1":0.0049345643693108,"4.2-4.3":0,"5.0-5.1":0.014803693107932,"6.0-6.1":0.0074018465539662,"7.0-7.1":0.019738257477243,"8.1-8.4":0.037009232769831,"9.0-9.2":0.03207466840052,"9.3":0.30594299089727,"10.0-10.2":0.09622400520156,"10.3":0.33801765929779,"11.0-11.2":0.27140104031209,"11.3-11.4":0.46138176853056,"12.0-12.1":0.62175511053316,"12.2-12.4":3.715726970091,"13.0-13.1":1.7172284005202,"13.2":0.72291368010403,"13.3":16.293931547464},I:{"3":0.00050501712779974,"4":0.0050501712779974,_:"76","2.1":0,"2.2":0.0015150513833992,"2.3":0.00050501712779974,"4.1":0.0085852911725955,"4.2-4.3":0.22321757048748,"4.4":0,"4.4.3-4.4.4":0.14392988142292},B:{"12":0,"13":0,"14":0.005564,"15":0.005564,"16":0.033384,"17":0.044512,"18":1.201824,_:"79"},A:{"6":0,"7":0,"8":0.011128,"9":0.016692,"10":0.011128,"11":0.461812,"5.5":0},P:{"4":0.14772911627907,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0,"8.2":0,"9.2":0.010552079734219,"10.1":2.9862385647841},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01109,"11":0.01109},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.128644},O:{"0":0.004436},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.037797463917526},L:{"0":40.023312}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AE.js b/assets/node_modules/caniuse-lite/data/regions/AE.js
deleted file mode 100644
index 318b2db..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AE.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0.004429,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.004429,"35":0,"36":0,"37":0,"38":0.013287,"39":0,"40":0,"41":0,"42":0,"43":0.004429,"44":0,"45":0,"46":0,"47":0,"48":0.004429,"49":0.199305,"50":0,"51":0.004429,"52":0.004429,"53":0.004429,"54":0,"55":0.004429,"56":0.004429,"57":0.004429,"58":0.008858,"59":0,"60":0.004429,"61":0.008858,"62":0.004429,"63":0.04429,"64":0.004429,"65":0.022145,"66":0.004429,"67":0.022145,"68":0.004429,"69":0.057577,"70":0.031003,"71":0.031003,"72":0.04429,"73":0.035432,"74":0.084151,"75":0.110725,"76":0.08858,"77":0.128441,"78":0.345462,"79":13.074408,"80":0.031003,"81":0.022145,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.008858,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.004429,"46":0,"47":0.004429,"48":0.008858,"49":0,"50":0,"51":0,"52":0.013287,"53":0,"54":0,"55":0,"56":0.004429,"57":0.004429,"58":0,"59":0,"60":0.004429,"61":0.004429,"62":0,"63":0.008858,"64":0.004429,"65":0.004429,"66":0.013287,"67":0.017716,"68":0.079722,"69":0.013287,"70":0.013287,"71":0.239166,"72":0.518193,"73":0.017716,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.004429,"36":0,"37":0.004429,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.004429,"46":0.057577,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.004429,"57":0,"58":0,"60":0,"62":0,"63":0.004429,"64":0.013287,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.017716,"9":0.048719,"10":0.013287,"11":0.039861,"12":0.128441,"13":1.386277,_:"0","3.1":0,"3.2":0,"5.1":0.186018,"6.1":0,"7.1":0,"9.1":0.008858,"10.1":0.04429,"11.1":0.079722,"12.1":0.261311},G:{"8":0.0018198277483245,"3.2":0.0018198277483245,"4.0-4.1":0.003639655496649,"4.2-4.3":0,"5.0-5.1":0.010918966489947,"6.0-6.1":0.0054594832449735,"7.0-7.1":0.014558621986596,"8.1-8.4":0.027297416224867,"9.0-9.2":0.023657760728218,"9.3":0.22565864079224,"10.0-10.2":0.070973282184655,"10.3":0.24931640152046,"11.0-11.2":0.20018105231569,"11.3-11.4":0.34030778893668,"12.0-12.1":0.45859659257777,"12.2-12.4":2.7406605889767,"13.0-13.1":1.2666001128339,"13.2":0.53320953025908,"13.3":12.018142449935},I:{"3":0.00024016337285903,"4":0.0024016337285903,_:"76","2.1":0,"2.2":0.00072049011857708,"2.3":0.00024016337285903,"4.1":0.0040827773386034,"4.2-4.3":0.10615221080369,"4.4":0,"4.4.3-4.4.4":0.068446561264822},B:{"12":0.004429,"13":0.004429,"14":0.008858,"15":0.008858,"16":0.017716,"17":0.070864,"18":0.606773,_:"79"},A:{"6":0,"7":0,"8":0.013451037037037,"9":0,"10":0.0089673580246914,"11":0.34075960493827,"5.5":0},P:{"4":0.25369476923077,"5.0-5.4":0.030443372307692,"6.2-6.4":0.040591163076923,"7.2-7.4":0.081182326153846,"8.2":0.050738953846154,"9.2":0.25369476923077,"10.1":2.4151742030769},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.011142},J:{"7":0,"10":0.011142},R:{_:"0"},M:{"0":0.150417},O:{"0":7.40943},Q:{"1.2":0.027855},S:{"2.5":0},H:{"0":2.2521102525773},L:{"0":43.30179}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AF.js b/assets/node_modules/caniuse-lite/data/regions/AF.js
deleted file mode 100644
index 6a00be5..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AF.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0.02298,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.002298,"31":0,"32":0,"33":0.002298,"34":0.002298,"35":0,"36":0.004596,"37":0.002298,"38":0.002298,"39":0.004596,"40":0.002298,"41":0,"42":0,"43":0.018384,"44":0.002298,"45":0.002298,"46":0.002298,"47":0.002298,"48":0.002298,"49":0.01149,"50":0,"51":0.002298,"52":0.03447,"53":0,"54":0.002298,"55":0.004596,"56":0.002298,"57":0.002298,"58":0.002298,"59":0.006894,"60":0.002298,"61":0.002298,"62":0.01149,"63":0.016086,"64":0.006894,"65":0.004596,"66":0.002298,"67":0.009192,"68":0.002298,"69":0.048258,"70":0.004596,"71":0.01149,"72":0.01149,"73":0.013788,"74":0.027576,"75":0.02298,"76":0.016086,"77":0.03447,"78":0.048258,"79":2.90697,"80":0.016086,"81":0.002298,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.002298,"30":0,"31":0,"32":0,"33":0.002298,"34":0,"35":0,"36":0,"37":0,"38":0.002298,"39":0,"40":0,"41":0.002298,"42":0,"43":0.004596,"44":0.002298,"45":0,"46":0,"47":0.004596,"48":0.004596,"49":0.002298,"50":0.002298,"51":0,"52":0.004596,"53":0,"54":0,"55":0,"56":0.006894,"57":0.002298,"58":0.002298,"59":0.002298,"60":0.004596,"61":0.002298,"62":0,"63":0,"64":0.006894,"65":0.004596,"66":0.004596,"67":0.006894,"68":0.027576,"69":0.013788,"70":0.016086,"71":0.121794,"72":0.326316,"73":0.211416,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.002298,"36":0,"37":0.002298,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.002298,"44":0,"45":0,"46":0.01149,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.004596,"54":0.002298,"55":0,"56":0.004596,"57":0.016086,"58":0,"60":0,"62":0,"63":0.002298,"64":0.002298,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.002298},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.002298,"11":0.002298,"12":0.002298,"13":0.121794,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0,"11.1":0.002298,"12.1":0.016086},G:{"8":0.00061304231269381,"3.2":0.00061304231269381,"4.0-4.1":0.0012260846253876,"4.2-4.3":0,"5.0-5.1":0.0036782538761628,"6.0-6.1":0.0018391269380814,"7.0-7.1":0.0049043385015505,"8.1-8.4":0.0091956346904071,"9.0-9.2":0.0079695500650195,"9.3":0.076017246774032,"10.0-10.2":0.023908650195059,"10.3":0.083986796839052,"11.0-11.2":0.067434654396319,"11.3-11.4":0.11463891247374,"12.0-12.1":0.15448666279884,"12.2-12.4":0.92324172291688,"13.0-13.1":0.42667744963489,"13.2":0.17962139761929,"13.3":4.0485314330299},I:{"3":0.0011003320158103,"4":0.011003320158103,_:"76","2.1":0,"2.2":0.0033009960474308,"2.3":0.0011003320158103,"4.1":0.018705644268775,"4.2-4.3":0.48634675098814,"4.4":0,"4.4.3-4.4.4":0.31359462450593},B:{"12":0.009192,"13":0.009192,"14":0.006894,"15":0.004596,"16":0.029874,"17":0.036768,"18":0.117198,_:"79"},A:{"6":0.0023397818181818,"7":0,"8":0.0257376,"9":0.0023397818181818,"10":0.011698909090909,"11":0.21525992727273,"5.5":0},P:{"4":2.0232840125392,"5.0-5.4":0.4957045830721,"6.2-6.4":0.2427940815047,"7.2-7.4":0.70814940438871,"8.2":0.17197914106583,"9.2":0.85989570532915,"10.1":1.9018869717868},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.015404},J:{"7":0,"10":0.007702},R:{_:"0"},M:{"0":0.11553},O:{"0":3.851},Q:{"1.2":0},S:{"2.5":0},H:{"0":1.8375225154639},L:{"0":72.685394}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AG.js b/assets/node_modules/caniuse-lite/data/regions/AG.js
deleted file mode 100644
index aa679b2..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AG.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0.004486,"19":0,"20":0,"21":0,"22":0.004486,"23":0.004486,"24":0.004486,"25":0,"26":0.004486,"27":0,"28":0.004486,"29":0,"30":0.004486,"31":0,"32":0,"33":0.004486,"34":0,"35":0,"36":0.008972,"37":0.004486,"38":0.004486,"39":0.008972,"40":0.004486,"41":0.053832,"42":0.008972,"43":0.008972,"44":0.013458,"45":0.008972,"46":0.017944,"47":0.013458,"48":0.017944,"49":0.040374,"50":0.013458,"51":0.02243,"52":0.017944,"53":0.017944,"54":0.013458,"55":0.008972,"56":0.013458,"57":0.008972,"58":0.017944,"59":0.013458,"60":0.013458,"61":0.008972,"62":0.017944,"63":0.017944,"64":0.013458,"65":0.026916,"66":0,"67":0.017944,"68":0.004486,"69":0.017944,"70":0.026916,"71":0.02243,"72":0.008972,"73":0.02243,"74":0.058318,"75":0.026916,"76":0.094206,"77":0.174954,"78":0.237758,"79":9.73462,"80":0.035888,"81":0.004486,"82":0},C:{"2":0,"3":0.004486,"4":0.004486,"5":0,"6":0.004486,"7":0.004486,"8":0.004486,"9":0,"10":0.004486,"11":0.004486,"12":0.004486,"13":0,"14":0.004486,"15":0.004486,"16":0.004486,"17":0.008972,"18":0.004486,"19":0.008972,"20":0.008972,"21":0.035888,"22":0,"23":0,"24":0.004486,"25":0,"26":0,"27":0,"28":0.004486,"29":0.004486,"30":0,"31":0.008972,"32":0,"33":0,"34":0,"35":0.004486,"36":0.004486,"37":0,"38":0.008972,"39":0.008972,"40":0.008972,"41":0.008972,"42":0.013458,"43":0.017944,"44":0.017944,"45":0.02243,"46":0.008972,"47":0.013458,"48":0.017944,"49":0.013458,"50":0.013458,"51":0.04486,"52":0.053832,"53":0.04486,"54":0.02243,"55":0.017944,"56":0.026916,"57":0.017944,"58":0.017944,"59":0.004486,"60":0,"61":0.004486,"62":0.008972,"63":0,"64":0,"65":0.004486,"66":0.017944,"67":0,"68":0.094206,"69":0.080748,"70":0.008972,"71":0.349908,"72":0.794022,"73":0.013458,"74":0,"3.5":0,"3.6":0.004486},F:{"9":0,"11":0.004486,"12":0.008972,"15":0.008972,"16":0,"17":0,"18":0,"19":0.004486,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.004486,"27":0,"28":0,"29":0.004486,"30":0,"31":0,"32":0.008972,"33":0,"34":0.004486,"35":0.004486,"36":0.004486,"37":0.004486,"38":0,"39":0,"40":0,"41":0.004486,"42":0.004486,"43":0,"44":0.004486,"45":0.004486,"46":0.004486,"47":0,"48":0,"49":0,"50":0,"51":0.004486,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0.008972,"62":0,"63":0,"64":0.02243,"9.5-9.6":0,"10.0-10.1":0.004486,"10.5":0,"10.6":0.004486,"11.1":0.004486,"11.5":0,"11.6":0.008972,"12.1":0.026916},E:{"4":0,"5":0.004486,"6":0.004486,"7":0,"8":0.008972,"9":0.008972,"10":0.013458,"11":0.008972,"12":0.053832,"13":1.45795,_:"0","3.1":0,"3.2":0,"5.1":0.008972,"6.1":0,"7.1":0.004486,"9.1":0.008972,"10.1":0.02243,"11.1":0.08972,"12.1":0.49346},G:{"8":0.0018357081124337,"3.2":0.0018357081124337,"4.0-4.1":0.0036714162248675,"4.2-4.3":0,"5.0-5.1":0.011014248674602,"6.0-6.1":0.0055071243373012,"7.0-7.1":0.01468566489947,"8.1-8.4":0.027535621686506,"9.0-9.2":0.023864205461638,"9.3":0.22762780594178,"10.0-10.2":0.071592616384915,"10.3":0.25149201140342,"11.0-11.2":0.20192789236771,"11.3-11.4":0.34327741702511,"12.0-12.1":0.4625984443333,"12.2-12.4":2.7645764173252,"13.0-13.1":1.2776528462539,"13.2":0.53786247694308,"13.3":12.123016374512},I:{"3":0.0013593913043478,"4":0.013593913043478,_:"76","2.1":0,"2.2":0.0040781739130435,"2.3":0.0013593913043478,"4.1":0.023109652173913,"4.2-4.3":0.60085095652174,"4.4":0,"4.4.3-4.4.4":0.38742652173913},B:{"12":0.008972,"13":0.02243,"14":0.062804,"15":0.026916,"16":0.02243,"17":0.152524,"18":2.014214,_:"79"},A:{"6":0,"7":0,"8":0.06729,"9":0.103178,"10":0.049346,"11":0.529348,"5.5":0},P:{"4":0.49183270072993,"5.0-5.4":0.010464525547445,"6.2-6.4":0.020929051094891,"7.2-7.4":0.16743240875912,"8.2":0.020929051094891,"9.2":0.15696788321168,"10.1":4.6462493430657},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.10131975,"11":0.24606225},J:{"7":0,"10":0.005514},R:{_:"0"},M:{"0":0.176448},O:{"0":0.066168},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.12528717525773},L:{"0":52.632282}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AI.js b/assets/node_modules/caniuse-lite/data/regions/AI.js
deleted file mode 100644
index d7095e3..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AI.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.016332,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.016332,"57":0,"58":0.005444,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0.005444,"68":0.642392,"69":0.010888,"70":0,"71":0,"72":0.005444,"73":0.010888,"74":0.016332,"75":0.043552,"76":0.070772,"77":0.141544,"78":0.125212,"79":14.404824,"80":0,"81":0.032664,"82":0},C:{"2":0,"3":0,"4":0.005444,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.02722,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.005444,"49":0,"50":0,"51":0.005444,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0.038108,"61":0,"62":0,"63":0,"64":0,"65":0.059884,"66":0.005444,"67":0,"68":0.02722,"69":0,"70":0.005444,"71":0.16332,"72":0.35386,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005444,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.016332,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0.010888,"6":0.038108,"7":0,"8":0.05444,"9":0.005444,"10":0.005444,"11":0,"12":0.021776,"13":3.968676,_:"0","3.1":0,"3.2":0,"5.1":0.010888,"6.1":0,"7.1":0,"9.1":0.310308,"10.1":0.234092,"11.1":0.021776,"12.1":0.424632},G:{"8":0.0022711313394018,"3.2":0.0022711313394018,"4.0-4.1":0.0045422626788036,"4.2-4.3":0,"5.0-5.1":0.013626788036411,"6.0-6.1":0.0068133940182055,"7.0-7.1":0.018169050715215,"8.1-8.4":0.034066970091027,"9.0-9.2":0.029524707412224,"9.3":0.28162028608583,"10.0-10.2":0.088574122236671,"10.3":0.31114499349805,"11.0-11.2":0.2498244473342,"11.3-11.4":0.42470156046814,"12.0-12.1":0.57232509752926,"12.2-12.4":3.4203237971391,"13.0-13.1":1.5807074122237,"13.2":0.66544148244473,"13.3":14.99855136541},I:{"3":0.0016915625823452,"4":0.016915625823452,_:"76","2.1":0,"2.2":0.0050746877470356,"2.3":0.0016915625823452,"4.1":0.028756563899868,"4.2-4.3":0.74767066139657,"4.4":0,"4.4.3-4.4.4":0.48209533596838},B:{"12":0.016332,"13":0.005444,"14":0.005444,"15":0.010888,"16":0.016332,"17":0.35386,"18":2.896208,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.78938,"5.5":0},P:{"4":0.0214132,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0.0642396,"8.2":0.0214132,"9.2":0.374731,"10.1":4.1969872},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.004556},J:{"7":0,"10":0.678844},R:{_:"0"},M:{"0":0.041004},O:{"0":0.02278},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.043133264604811},L:{"0":41.65742}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AL.js b/assets/node_modules/caniuse-lite/data/regions/AL.js
deleted file mode 100644
index 212678d..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AL.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.002939,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.002939,"37":0,"38":0.002939,"39":0,"40":0,"41":0,"42":0.002939,"43":0,"44":0,"45":0,"46":0.002939,"47":0,"48":0,"49":0.217486,"50":0.002939,"51":0,"52":0.002939,"53":0.011756,"54":0.002939,"55":0.005878,"56":0.005878,"57":0.005878,"58":0.005878,"59":0.002939,"60":0.005878,"61":0.005878,"62":0.002939,"63":0.008817,"64":0.002939,"65":0.005878,"66":0.002939,"67":0.005878,"68":0.005878,"69":0.023512,"70":0.047024,"71":0.073475,"72":0.035268,"73":0.02939,"74":0.023512,"75":0.052902,"76":0.041146,"77":0.044085,"78":0.11756,"79":6.330606,"80":0.008817,"81":0.005878,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005878,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.002939,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.002939,"44":0,"45":0,"46":0,"47":0,"48":0.002939,"49":0,"50":0,"51":0,"52":0.020573,"53":0,"54":0.005878,"55":0,"56":0,"57":0,"58":0,"59":0.002939,"60":0.005878,"61":0,"62":0.002939,"63":0.011756,"64":0.005878,"65":0.005878,"66":0.008817,"67":0.002939,"68":0.044085,"69":0.005878,"70":0.005878,"71":0.091109,"72":0.282144,"73":0.002939,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.005878,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.002939,"57":0.005878,"58":0.005878,"60":0,"62":0,"63":0,"64":0.002939,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.002939},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.002939,"12":0.005878,"13":0.167523,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0.008817,"11.1":0.008817,"12.1":0.035268},G:{"8":0.0027201396418926,"3.2":0.0027201396418926,"4.0-4.1":0.0054402792837851,"4.2-4.3":0,"5.0-5.1":0.016320837851355,"6.0-6.1":0.0081604189256777,"7.0-7.1":0.021761117135141,"8.1-8.4":0.040802094628389,"9.0-9.2":0.035361815344603,"9.3":0.33729731559468,"10.0-10.2":0.10608544603381,"10.3":0.37265913093928,"11.0-11.2":0.29921536060818,"11.3-11.4":0.50866611303391,"12.0-12.1":0.68547518975693,"12.2-12.4":4.0965303006902,"13.0-13.1":1.8932171907572,"13.2":0.79700091507452,"13.3":17.963802195059},I:{"3":0.00023016469038208,"4":0.0023016469038208,_:"76","2.1":0,"2.2":0.00069049407114624,"2.3":0.00023016469038208,"4.1":0.0039127997364954,"4.2-4.3":0.10173279314888,"4.4":0,"4.4.3-4.4.4":0.065596936758893},B:{"12":0.002939,"13":0.002939,"14":0.008817,"15":0.005878,"16":0.002939,"17":0.011756,"18":0.11756,_:"79"},A:{"6":0.0030338064516129,"7":0.0060676129032258,"8":0.024270451612903,"9":0.0060676129032258,"10":0.0030338064516129,"11":0.051574709677419,"5.5":0},P:{"4":0.29359447162162,"5.0-5.4":0.020247894594595,"6.2-6.4":0.060743683783784,"7.2-7.4":0.13161131486486,"8.2":0.080991578378378,"9.2":0.44545368108108,"10.1":6.2464754824324},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.084732},J:{"7":0,"10":0.056488},R:{_:"0"},M:{"0":0.14122},O:{"0":0.063549},Q:{"1.2":0.007061},S:{"2.5":0},H:{"0":0.20054695876289},L:{"0":53.746935}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AM.js b/assets/node_modules/caniuse-lite/data/regions/AM.js
deleted file mode 100644
index b70e2ff..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AM.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.024393,"37":0,"38":0.008131,"39":0,"40":0.008131,"41":0,"42":0,"43":0.008131,"44":0.008131,"45":0,"46":0.008131,"47":0,"48":0,"49":0.902541,"50":0,"51":0.016262,"52":0,"53":0,"54":0,"55":0.008131,"56":0.008131,"57":0.008131,"58":0.032524,"59":0.008131,"60":0.024393,"61":0.008131,"62":0.008131,"63":0.032524,"64":0.008131,"65":0.008131,"66":0.016262,"67":0.024393,"68":0.008131,"69":0.048786,"70":0.138227,"71":0.065048,"72":0.113834,"73":0.089441,"74":0.08131,"75":0.146358,"76":0.113834,"77":0.211406,"78":0.577301,"79":29.694412,"80":0.056917,"81":0.065048,"82":0},C:{"2":0,"3":0,"4":0.008131,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0.008131,"43":0.008131,"44":0,"45":0.065048,"46":0,"47":0,"48":0,"49":0,"50":0.008131,"51":0,"52":27.580352,"53":0.008131,"54":0,"55":0,"56":0.008131,"57":0.008131,"58":0,"59":0,"60":0.008131,"61":0.008131,"62":0.073179,"63":0,"64":0,"65":0.016262,"66":0.008131,"67":0,"68":0.040655,"69":0.040655,"70":0.016262,"71":0.284585,"72":0.935065,"73":0.008131,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.008131,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.016262,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.008131,"57":0,"58":0,"60":0.008131,"62":0,"63":0,"64":0.032524,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.008131,"12":0.024393,"13":0.821231,_:"0","3.1":0,"3.2":0,"5.1":0.024393,"6.1":0,"7.1":0,"9.1":0.008131,"10.1":0.016262,"11.1":0.048786,"12.1":0.105703},G:{"8":0.00074517095128539,"3.2":0.00074517095128539,"4.0-4.1":0.0014903419025708,"4.2-4.3":0,"5.0-5.1":0.0044710257077123,"6.0-6.1":0.0022355128538562,"7.0-7.1":0.0059613676102831,"8.1-8.4":0.011177564269281,"9.0-9.2":0.00968722236671,"9.3":0.092401197959388,"10.0-10.2":0.02906166710013,"10.3":0.1020884203261,"11.0-11.2":0.081968804641392,"11.3-11.4":0.13934696789037,"12.0-12.1":0.18778307972392,"12.2-12.4":1.1222274526358,"13.0-13.1":0.51863898209463,"13.2":0.21833508872662,"13.3":4.9211089622887},I:{"3":0.00020648880105402,"4":0.0020648880105402,_:"76","2.1":0,"2.2":0.00061946640316206,"2.3":0.00020648880105402,"4.1":0.0035103096179183,"4.2-4.3":0.091268050065876,"4.4":0,"4.4.3-4.4.4":0.058849308300395},B:{"12":0,"13":0.008131,"14":0.008131,"15":0.008131,"16":0.024393,"17":0.040655,"18":0.40655,_:"79"},A:{"6":0.016262,"7":0.008131,"8":0.024393,"9":0.016262,"10":0.008131,"11":0.097572,"5.5":0},P:{"4":0.091902814569536,"5.0-5.4":0.01021142384106,"6.2-6.4":0.01021142384106,"7.2-7.4":0.051057119205298,"8.2":0.020422847682119,"9.2":0.15317135761589,"10.1":1.1845251655629},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.028035},J:{"7":0,"10":0.022428},R:{_:"0"},M:{"0":0.046725},O:{"0":0.214935},Q:{"1.2":0.022428},S:{"2.5":0},H:{"0":0.21587271134021},L:{"0":22.718382}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AN.js b/assets/node_modules/caniuse-lite/data/regions/AN.js
deleted file mode 100644
index 9ce90e4..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AN.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"11":0.080201,"21":0.051037,"22":0.080201,"24":0.029164,"26":0.131238,"28":0.102074,"31":0.51037,"32":0.306222,"33":2.223755,"34":0.204148,"35":1.407163,"36":28.87236,"38":0.080201,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 23 25 27 29 30 37 39 40"},C:{"10":0.029164,"12":0.051037,"21":0.029164,"26":0.051037,"27":0.029164,"29":0.029164,"30":4.031923,"31":10.827135,"32":0.051037,_:"2 3 4 5 6 7 8 9 11 13 14 15 16 17 18 19 20 22 23 24 25 28 33 34 3.5 3.6"},F:{"21":0.051037,"23":0.051037,"24":0.051037,_:"9 11 12 15 16 17 18 19 20 22 25 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.539534},E:{"4":0,"5":0.233312,"6":0.102074,"7":6.05153,"8":0.029164,_:"3.1 3.2","5.1":0.765555,"6.1":0.561407},I:{"3":0,"4":0.648893454545,"2.1":0.00612163636364,"2.2":0.0428514545455,"2.3":0.832542545455,"4.1":1.62223363636,"4.2-4.3":1.69569327273,"4.4":1.279422,_:"4.4.3"},K:{"10":0,"11":0,"12":0.0000648307692308,_:"0","11.1":0,"11.5":0,"12.1":0.000356569230769},A:{"8":1.4582,"9":2.47894,"10":1.633184,"11":9.471009,_:"6 7 5.5"},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0939043474576,"6.0-6.1":0.473354567797,"7.0-7.1":8.93049508475},J:{"7":0.40838175,_:"10"},M:{"0":0.051471},N:{"10":0.09419193},H:{"5.0-7.0":0.0239596},L:{"0":8.88552}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AO.js b/assets/node_modules/caniuse-lite/data/regions/AO.js
deleted file mode 100644
index 27f87c1..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AO.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.00889,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.004445,"26":0.013335,"27":0,"28":0.004445,"29":0,"30":0,"31":0,"32":0,"33":0.031115,"34":0,"35":0.00889,"36":0.01778,"37":0.004445,"38":0.004445,"39":0,"40":0.03556,"41":0,"42":0.013335,"43":0.0889,"44":0,"45":0.004445,"46":0.01778,"47":0.013335,"48":0.004445,"49":0.08001,"50":0.00889,"51":0.004445,"52":0.004445,"53":0.004445,"54":0.004445,"55":0.00889,"56":0.00889,"57":0.013335,"58":0.013335,"59":0.013335,"60":0.01778,"61":0.00889,"62":0.022225,"63":0.29337,"64":0.00889,"65":0.022225,"66":0.01778,"67":0.048895,"68":0.01778,"69":0.191135,"70":0.075565,"71":0.040005,"72":0.01778,"73":0.040005,"74":0.066675,"75":0.111125,"76":0.084455,"77":0.155575,"78":0.208915,"79":9.561195,"80":0.04445,"81":0.00889,"82":0},C:{"2":0,"3":0.004445,"4":0,"5":0,"6":0.004445,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.00889,"22":0,"23":0.004445,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.004445,"38":0.004445,"39":0.004445,"40":0.004445,"41":0.013335,"42":0,"43":0.01778,"44":0.004445,"45":0.004445,"46":0.004445,"47":0.013335,"48":0.004445,"49":0.004445,"50":0,"51":0,"52":0.02667,"53":0,"54":0.004445,"55":0.004445,"56":0.00889,"57":0.004445,"58":0.004445,"59":0.004445,"60":0.004445,"61":0.004445,"62":0.004445,"63":0.00889,"64":0.004445,"65":0.040005,"66":0.02667,"67":0.00889,"68":0.057785,"69":0.013335,"70":0.02667,"71":0.34671,"72":0.724535,"73":0.00889,"74":0,"3.5":0,"3.6":0.022225},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.013335,"21":0,"22":0,"23":0.013335,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.00889,"35":0,"36":0.004445,"37":0.004445,"38":0,"39":0,"40":0,"41":0,"42":0.013335,"43":0,"44":0,"45":0.004445,"46":0.022225,"47":0,"48":0,"49":0.022225,"50":0,"51":0.004445,"52":0,"53":0.004445,"54":0.004445,"55":0.004445,"56":0.004445,"57":0.004445,"58":0,"60":0.004445,"62":0.004445,"63":0.013335,"64":0.02667,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.02667},E:{"4":0,"5":0,"6":0,"7":0,"8":0.02667,"9":0,"10":0.004445,"11":0.022225,"12":0.04445,"13":0.920115,_:"0","3.1":0,"3.2":0,"5.1":0.01778,"6.1":0,"7.1":0,"9.1":0.00889,"10.1":0.066675,"11.1":0.09779,"12.1":0.280035},G:{"8":0.00082511603481044,"3.2":0.00082511603481044,"4.0-4.1":0.0016502320696209,"4.2-4.3":0,"5.0-5.1":0.0049506962088627,"6.0-6.1":0.0024753481044313,"7.0-7.1":0.0066009282784835,"8.1-8.4":0.012376740522157,"9.0-9.2":0.010726508452536,"9.3":0.10231438831649,"10.0-10.2":0.032179525357607,"10.3":0.11304089676903,"11.0-11.2":0.090762763829149,"11.3-11.4":0.15429669850955,"12.0-12.1":0.20792924077223,"12.2-12.4":1.2426247484245,"13.0-13.1":0.57428076022807,"13.2":0.24175899819946,"13.3":5.4490662938882},I:{"3":0.0029497167325428,"4":0.029497167325428,_:"76","2.1":0,"2.2":0.0088491501976285,"2.3":0.0029497167325428,"4.1":0.050145184453228,"4.2-4.3":1.3037747957839,"4.4":0,"4.4.3-4.4.4":0.8406692687747},B:{"12":0.13335,"13":0.040005,"14":0.04445,"15":0.02667,"16":0.05334,"17":0.20447,"18":1.177925,_:"79"},A:{"6":0,"7":0,"8":0.063496308139535,"9":0.0048843313953488,"10":0.068380639534884,"11":0.70334372093023,"5.5":0},P:{"4":0.90138705202312,"5.0-5.4":0.081944277456647,"6.2-6.4":0.081944277456647,"7.2-7.4":0.18437462427746,"8.2":0.081944277456647,"9.2":0.30729104046243,"10.1":1.8335032080925},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.0472175,"11":0.0472175},J:{"7":0,"10":0.02222},R:{_:"0"},M:{"0":0.105545},O:{"0":0.75548},Q:{"1.2":0.116655},S:{"2.5":0},H:{"0":6.0479823883162},L:{"0":55.13625}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AR.js b/assets/node_modules/caniuse-lite/data/regions/AR.js
deleted file mode 100644
index ffd7c0f..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AR.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.004546,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.004546,"35":0,"36":0.004546,"37":0,"38":0.013638,"39":0,"40":0,"41":0,"42":0,"43":0.004546,"44":0,"45":0,"46":0.004546,"47":0.004546,"48":0.004546,"49":0.413686,"50":0.004546,"51":0.004546,"52":0,"53":0.004546,"54":0,"55":0.004546,"56":0.004546,"57":0.004546,"58":0.02273,"59":0.004546,"60":0.004546,"61":0.009092,"62":0.009092,"63":0.018184,"64":0.004546,"65":0.018184,"66":0.027276,"67":0.02273,"68":0.02273,"69":0.02273,"70":0.040914,"71":0.04546,"72":0.04546,"73":0.054552,"74":0.04546,"75":0.059098,"76":0.077282,"77":0.095466,"78":0.259122,"79":15.43367,"80":0.018184,"81":0.009092,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.004546,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.004546,"48":0.009092,"49":0,"50":0,"51":0,"52":0.059098,"53":0.004546,"54":0.004546,"55":0,"56":0.013638,"57":0.004546,"58":0,"59":0.004546,"60":0.009092,"61":0.004546,"62":0,"63":0.004546,"64":0.004546,"65":0.004546,"66":0.009092,"67":0.004546,"68":0.059098,"69":0.009092,"70":0.018184,"71":0.281852,"72":0.718268,"73":0.009092,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.004546,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.004546,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.050006,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.004546,"10":0.004546,"11":0.009092,"12":0.027276,"13":0.38641,_:"0","3.1":0,"3.2":0,"5.1":0.47733,"6.1":0,"7.1":0,"9.1":0.004546,"10.1":0.02273,"11.1":0.050006,"12.1":0.086374},G:{"8":0.00045903731119336,"3.2":0.00045903731119336,"4.0-4.1":0.00091807462238672,"4.2-4.3":0,"5.0-5.1":0.0027542238671601,"6.0-6.1":0.0013771119335801,"7.0-7.1":0.0036722984895469,"8.1-8.4":0.0068855596679004,"9.0-9.2":0.0059674850455137,"9.3":0.056920626587976,"10.0-10.2":0.017902455136541,"10.3":0.06288811163349,"11.0-11.2":0.050494104231269,"11.3-11.4":0.085839977193158,"12.0-12.1":0.11567740242073,"12.2-12.4":0.6913101906572,"13.0-13.1":0.31948996859058,"13.2":0.13449793217965,"13.3":3.0314824031209},I:{"3":0.00020601844532279,"4":0.0020601844532279,_:"76","2.1":0,"2.2":0.00061805533596838,"2.3":0.00020601844532279,"4.1":0.0035023135704875,"4.2-4.3":0.091060152832675,"4.4":0,"4.4.3-4.4.4":0.058715256916996},B:{"12":0.004546,"13":0.004546,"14":0.013638,"15":0.027276,"16":0.004546,"17":0.036368,"18":0.309128,_:"79"},A:{"6":0,"7":0,"8":0.036368,"9":0.004546,"10":0.004546,"11":0.20457,"5.5":0},P:{"4":0.30276141732283,"5.0-5.4":0.020184094488189,"6.2-6.4":0.030276141732283,"7.2-7.4":0.10092047244094,"8.2":0.050460236220472,"9.2":0.15138070866142,"10.1":1.8872128346457},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.24543},J:{"7":0,"10":0.005454},R:{_:"0"},M:{"0":0.092718},O:{"0":0.043632},Q:{"1.2":0.005454},S:{"2.5":0},H:{"0":0.2375207628866},L:{"0":70.215994}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AS.js b/assets/node_modules/caniuse-lite/data/regions/AS.js
deleted file mode 100644
index 68c86bb..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AS.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0.005931,"45":0,"46":0.302481,"47":0.005931,"48":0,"49":0.782892,"50":0,"51":0.005931,"52":0,"53":0.035586,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0.011862,"62":0,"63":0.029655,"64":0,"65":0.130482,"66":0.035586,"67":0.504135,"68":0,"69":0.539721,"70":0.083034,"71":0.011862,"72":0.023724,"73":0.005931,"74":0.065241,"75":0.029655,"76":0.266895,"77":0.017793,"78":1.180269,"79":20.716983,"80":0.005931,"81":0.005931,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005931,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0.005931,"45":0.017793,"46":0,"47":0.029655,"48":0.017793,"49":0.017793,"50":0,"51":0,"52":0.017793,"53":0,"54":0,"55":0,"56":0,"57":0.023724,"58":0,"59":0,"60":0.005931,"61":0.005931,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0.005931,"68":0,"69":0.005931,"70":0.011862,"71":0.302481,"72":1.168407,"73":0.071172,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.011862,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.005931,"9":0.011862,"10":0,"11":0.017793,"12":0.029655,"13":1.927575,_:"0","3.1":0,"3.2":0,"5.1":0.005931,"6.1":0,"7.1":0,"9.1":0.011862,"10.1":0.017793,"11.1":0.094896,"12.1":0.664272},G:{"8":0.0021939533860158,"3.2":0.0021939533860158,"4.0-4.1":0.0043879067720316,"4.2-4.3":0,"5.0-5.1":0.013163720316095,"6.0-6.1":0.0065818601580474,"7.0-7.1":0.017551627088126,"8.1-8.4":0.032909300790237,"9.0-9.2":0.028521394018205,"9.3":0.27205021986596,"10.0-10.2":0.085564182054616,"10.3":0.30057161388417,"11.0-11.2":0.24133487246174,"11.3-11.4":0.41026928318496,"12.0-12.1":0.55287625327598,"12.2-12.4":3.3040937993398,"13.0-13.1":1.526991556667,"13.2":0.64282834210263,"13.3":14.488868161248},I:{"3":0.00090917786561265,"4":0.0090917786561265,_:"76","2.1":0,"2.2":0.0027275335968379,"2.3":0.00090917786561265,"4.1":0.015456023715415,"4.2-4.3":0.40185661660079,"4.4":0,"4.4.3-4.4.4":0.2591156916996},B:{"12":0.005931,"13":0.023724,"14":0.029655,"15":0.011862,"16":0.017793,"17":0.183861,"18":1.595439,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.397377,"5.5":0},P:{"4":0.084167602209945,"5.0-5.4":0.010520950276243,"6.2-6.4":0,"7.2-7.4":0.12625140331492,"8.2":0.042083801104972,"9.2":0.13677235359116,"10.1":1.4834539889503},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.028483},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.016276},O:{"0":0.24414},Q:{"1.2":0},S:{"2.5":0.028483},H:{"0":0.065488527491409},L:{"0":41.713225}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AT.js b/assets/node_modules/caniuse-lite/data/regions/AT.js
deleted file mode 100644
index 669ead0..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AT.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.005365,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.005365,"35":0,"36":0,"37":0,"38":0.03219,"39":0,"40":0.005365,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.20387,"50":0,"51":0.005365,"52":0,"53":0.026825,"54":0.005365,"55":0.005365,"56":0.01073,"57":0.005365,"58":0.01073,"59":0.005365,"60":0.005365,"61":0.005365,"62":0.01073,"63":0.048285,"64":0.005365,"65":0.01073,"66":0.005365,"67":0.016095,"68":0.01073,"69":0.026825,"70":0.037555,"71":0.048285,"72":0.059015,"73":0.2146,"74":0.037555,"75":0.080475,"76":0.07511,"77":0.08584,"78":0.40774,"79":11.56694,"80":0.016095,"81":0.01073,"82":0},C:{"2":0,"3":0.005365,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.037555,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.005365,"32":0,"33":0,"34":0,"35":0,"36":0.005365,"37":0,"38":0.005365,"39":0.005365,"40":0,"41":0,"42":0,"43":0.005365,"44":0,"45":0.016095,"46":0,"47":0.005365,"48":0.026825,"49":0.005365,"50":0.005365,"51":0.005365,"52":0.12876,"53":0.005365,"54":0.01073,"55":0.005365,"56":0.016095,"57":0.01073,"58":0.005365,"59":0.005365,"60":0.080475,"61":0.01073,"62":0.016095,"63":0.01073,"64":0.01073,"65":0.04292,"66":0.037555,"67":0.02146,"68":0.61161,"69":0.07511,"70":0.07511,"71":1.368075,"72":3.288745,"73":0.02146,"74":0,"3.5":0,"3.6":0.005365},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005365,"37":0,"38":0,"39":0,"40":0.005365,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.01073,"47":0,"48":0,"49":0.005365,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.005365,"60":0,"62":0,"63":0.005365,"64":0.037555,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0.005365,"6":0,"7":0,"8":0.005365,"9":0.005365,"10":0.01073,"11":0.026825,"12":0.144855,"13":2.52155,_:"0","3.1":0,"3.2":0,"5.1":0.08584,"6.1":0,"7.1":0,"9.1":0.03219,"10.1":0.16095,"11.1":0.198505,"12.1":0.36482},G:{"8":0.0022609212763829,"3.2":0.0022609212763829,"4.0-4.1":0.0045218425527658,"4.2-4.3":0,"5.0-5.1":0.013565527658297,"6.0-6.1":0.0067827638291487,"7.0-7.1":0.018087370211063,"8.1-8.4":0.033913819145744,"9.0-9.2":0.029391976592978,"9.3":0.28035423827148,"10.0-10.2":0.088175929778934,"10.3":0.30974621486446,"11.0-11.2":0.24870134040212,"11.3-11.4":0.42279227868361,"12.0-12.1":0.56975216164849,"12.2-12.4":3.4049474422327,"13.0-13.1":1.5736012083625,"13.2":0.66244993398019,"13.3":14.931124109233},I:{"3":0.00042930171277997,"4":0.0042930171277997,_:"76","2.1":0,"2.2":0.0012879051383399,"2.3":0.00042930171277997,"4.1":0.0072981291172596,"4.2-4.3":0.18975135704875,"4.4":0,"4.4.3-4.4.4":0.12235098814229},B:{"12":0,"13":0.005365,"14":0.01073,"15":0.02146,"16":0.04292,"17":0.144855,"18":2.108445,_:"79"},A:{"6":0,"7":0,"8":0.016194351851852,"9":0,"10":0.016194351851852,"11":1.7166012962963,"5.5":0},P:{"4":0.34465094746717,"5.0-5.4":0.031331904315197,"6.2-6.4":0.031331904315197,"7.2-7.4":0.083551744840525,"8.2":0.041775872420263,"9.2":0.26109920262664,"10.1":4.5744580300188},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.01854},J:{"7":0,"10":0.004635},R:{_:"0"},M:{"0":0.449595},O:{"0":0.088065},Q:{"1.2":0.00927},S:{"2.5":0},H:{"0":0.19746533505155},L:{"0":39.60354}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AU.js b/assets/node_modules/caniuse-lite/data/regions/AU.js
deleted file mode 100644
index 2e01521..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AU.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.004869,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.004869,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.004869,"35":0,"36":0,"37":0,"38":0.014607,"39":0,"40":0.014607,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.004869,"49":0.19476,"50":0.004869,"51":0,"52":0.004869,"53":0.014607,"54":0.004869,"55":0.019476,"56":0.009738,"57":0.014607,"58":0.009738,"59":0.019476,"60":0.019476,"61":0.009738,"62":0.009738,"63":0.214236,"64":0.009738,"65":0.038952,"66":0.019476,"67":0.043821,"68":0.034083,"69":0.09738,"70":0.058428,"71":0.053559,"72":0.077904,"73":0.14607,"74":0.102249,"75":0.136332,"76":0.136332,"77":0.199629,"78":0.657315,"79":11.427543,"80":0.024345,"81":0.009738,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.038952,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.004869,"46":0,"47":0.004869,"48":0.009738,"49":0,"50":0.009738,"51":0,"52":0.034083,"53":0,"54":0.004869,"55":0,"56":0.009738,"57":0.004869,"58":0.019476,"59":0,"60":0.014607,"61":0.004869,"62":0.004869,"63":0.004869,"64":0.004869,"65":0.009738,"66":0.019476,"67":0.009738,"68":0.160677,"69":0.024345,"70":0.034083,"71":0.447948,"72":0.954324,"73":0.019476,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.004869,"37":0.024345,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0.004869,"63":0,"64":0.009738,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.004869},E:{"4":0,"5":0,"6":0,"7":0,"8":0.014607,"9":0.014607,"10":0.014607,"11":0.029214,"12":0.087642,"13":2.619522,_:"0","3.1":0,"3.2":0,"5.1":0.009738,"6.1":0.004869,"7.1":0,"9.1":0.034083,"10.1":0.077904,"11.1":0.150939,"12.1":0.29214},G:{"8":0.0040799567870361,"3.2":0.0040799567870361,"4.0-4.1":0.0081599135740722,"4.2-4.3":0,"5.0-5.1":0.024479740722217,"6.0-6.1":0.012239870361108,"7.0-7.1":0.032639654296289,"8.1-8.4":0.061199351805542,"9.0-9.2":0.053039438231469,"9.3":0.50591464159248,"10.0-10.2":0.15911831469441,"10.3":0.55895407982395,"11.0-11.2":0.44879524657397,"11.3-11.4":0.76295191917575,"12.0-12.1":1.0281491103331,"12.2-12.4":6.1444149212764,"13.0-13.1":2.8396499237771,"13.2":1.1954273386016,"13.3":26.944034621586},I:{"3":0.00043547299077734,"4":0.0043547299077734,_:"76","2.1":0,"2.2":0.001306418972332,"2.3":0.00043547299077734,"4.1":0.0074030408432148,"4.2-4.3":0.19247906192358,"4.4":0,"4.4.3-4.4.4":0.12410980237154},B:{"12":0.004869,"13":0.004869,"14":0.009738,"15":0.014607,"16":0.024345,"17":0.087642,"18":1.538604,_:"79"},A:{"6":0,"7":0,"8":0.0051504450867052,"9":0.01030089017341,"10":0.0051504450867052,"11":0.87042521965318,"5.5":0},P:{"4":0.14983070241287,"5.0-5.4":0.032106579088472,"6.2-6.4":0.032106579088472,"7.2-7.4":0.053510965147453,"8.2":0.042808772117962,"9.2":0.2247460536193,"10.1":3.2641688739946},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.015393},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.338646},O:{"0":0.25655},Q:{"1.2":0.10262},S:{"2.5":0},H:{"0":0.30603505670103},L:{"0":29.510231}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AW.js b/assets/node_modules/caniuse-lite/data/regions/AW.js
deleted file mode 100644
index a589852..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AW.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.007442,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.18605,"50":0,"51":0,"52":0,"53":0.007442,"54":0.011163,"55":0,"56":0,"57":0,"58":0,"59":0.003721,"60":0.003721,"61":0,"62":0,"63":0.003721,"64":0,"65":0.003721,"66":0.018605,"67":0.007442,"68":0.007442,"69":0.018605,"70":0.033489,"71":0.003721,"72":0.081862,"73":0.011163,"74":0.014884,"75":0.03721,"76":0.022326,"77":0.03721,"78":0.141398,"79":6.668032,"80":0.018605,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.011163,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.003721,"49":0,"50":0,"51":0,"52":0.018605,"53":0,"54":0,"55":0,"56":0,"57":0.007442,"58":0,"59":0,"60":0.007442,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0.003721,"68":0.052094,"69":0.007442,"70":0.011163,"71":0.152561,"72":0.453962,"73":0.003721,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.007442,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.003721,"10":0.014884,"11":0.014884,"12":0.018605,"13":1.216767,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.018605,"10.1":0.029768,"11.1":0.089304,"12.1":0.219539},G:{"8":0.0024067871361408,"3.2":0.0024067871361408,"4.0-4.1":0.0048135742722817,"4.2-4.3":0,"5.0-5.1":0.014440722816845,"6.0-6.1":0.0072203614084225,"7.0-7.1":0.019254297089127,"8.1-8.4":0.036101807042113,"9.0-9.2":0.031288232769831,"9.3":0.29844160488146,"10.0-10.2":0.093864698309493,"10.3":0.3297298376513,"11.0-11.2":0.26474658497549,"11.3-11.4":0.45006919445834,"12.0-12.1":0.60651035830749,"12.2-12.4":3.6246214270281,"13.0-13.1":1.675123846754,"13.2":0.70518863088927,"13.3":15.894422247074},I:{"3":0.00030640447957839,"4":0.0030640447957839,_:"76","2.1":0,"2.2":0.00091921343873518,"2.3":0.00030640447957839,"4.1":0.0052088761528327,"4.2-4.3":0.13543077997365,"4.4":0,"4.4.3-4.4.4":0.087325276679842},B:{"12":0,"13":0.003721,"14":0.011163,"15":0.022326,"16":0.044652,"17":0.07442,"18":1.52561,_:"79"},A:{"6":0,"7":0,"8":0.003721,"9":0,"10":0.018605,"11":1.309792,"5.5":0},P:{"4":0.14725597759674,"5.0-5.4":0.063109704684318,"6.2-6.4":0.031554852342159,"7.2-7.4":0.073627988798371,"8.2":0.094664557026477,"9.2":0.68368846741344,"10.1":8.9931329175153},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.131859},O:{"0":0.075348},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.029722757731959},L:{"0":48.41985}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AX.js b/assets/node_modules/caniuse-lite/data/regions/AX.js
deleted file mode 100644
index 304aa4f..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AX.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.006732,"47":0,"48":0,"49":0.121176,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.006732,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0.013464,"68":0.006732,"69":0.026928,"70":0.006732,"71":0,"72":0.006732,"73":0.006732,"74":0.107712,"75":0.208692,"76":0.114444,"77":0.047124,"78":0.552024,"79":26.69238,"80":0.013464,"81":0.30294,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.70686,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.020196,"49":0,"50":0,"51":0,"52":0.296208,"53":0,"54":0,"55":0.006732,"56":0,"57":0.013464,"58":0,"59":0,"60":0,"61":0.006732,"62":0,"63":0,"64":0,"65":0.006732,"66":0.026928,"67":0,"68":0.424116,"69":0.03366,"70":0.013464,"71":0.80784,"72":1.88496,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.006732,"37":0.080784,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.006732,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.060588,"13":3.621816,_:"0","3.1":0,"3.2":0,"5.1":0.006732,"6.1":0,"7.1":0,"9.1":0.047124,"10.1":0.276012,"11.1":0.249084,"12.1":0.195228},G:{"8":0.0022282604781434,"3.2":0.0022282604781434,"4.0-4.1":0.0044565209562869,"4.2-4.3":0,"5.0-5.1":0.013369562868861,"6.0-6.1":0.0066847814344303,"7.0-7.1":0.017826083825148,"8.1-8.4":0.033423907172152,"9.0-9.2":0.028967386215865,"9.3":0.27630429928979,"10.0-10.2":0.086902158647594,"10.3":0.30527168550565,"11.0-11.2":0.24510865259578,"11.3-11.4":0.41668470941282,"12.0-12.1":0.56152164049215,"12.2-12.4":3.355760280084,"13.0-13.1":1.5508692927878,"13.2":0.65288032009603,"13.3":14.715432197659},I:{"3":0.00018014756258235,"4":0.0018014756258235,_:"76","2.1":0,"2.2":0.00054044268774704,"2.3":0.00018014756258235,"4.1":0.0030625085638999,"4.2-4.3":0.079625222661397,"4.4":0,"4.4.3-4.4.4":0.051342055335968},B:{"12":0,"13":0.013464,"14":0.013464,"15":0,"16":0,"17":0.10098,"18":2.450448,_:"79"},A:{"6":0,"7":0,"8":0.060588,"9":0,"10":0.013464,"11":1.507968,"5.5":0},P:{"4":0.066888580645161,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0.022296193548387,"8.2":0.011148096774194,"9.2":0.13377716129032,"10.1":2.4971736774194},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.019608},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.699352},O:{"0":0.447716},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.43624430927835},L:{"0":29.171928}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/AZ.js b/assets/node_modules/caniuse-lite/data/regions/AZ.js
deleted file mode 100644
index 4974b26..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/AZ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0.004399,"23":0,"24":0,"25":0,"26":0.008798,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.008798,"35":0,"36":0.004399,"37":0.004399,"38":0.017596,"39":0.008798,"40":0.008798,"41":0.008798,"42":0.004399,"43":0.008798,"44":0.004399,"45":0.008798,"46":0.008798,"47":0.008798,"48":0.008798,"49":0.268339,"50":0.008798,"51":0.013197,"52":0.004399,"53":0.039591,"54":0.008798,"55":0.008798,"56":0.008798,"57":0.013197,"58":0.035192,"59":0.013197,"60":0.017596,"61":0.035192,"62":0.057187,"63":0.057187,"64":0.008798,"65":0.013197,"66":0.008798,"67":0.021995,"68":0.008798,"69":0.026394,"70":0.04399,"71":0.070384,"72":0.04399,"73":0.070384,"74":0.048389,"75":0.079182,"76":0.118773,"77":0.123172,"78":0.202354,"79":12.026866,"80":0.017596,"81":0.017596,"82":0},C:{"2":0,"3":0.004399,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0.004399,"19":0.004399,"20":0.004399,"21":0,"22":0,"23":0,"24":0.004399,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.004399,"32":0,"33":0,"34":0,"35":0.004399,"36":0,"37":0,"38":0.004399,"39":0.004399,"40":0.004399,"41":0.004399,"42":0.004399,"43":0.004399,"44":0.004399,"45":0.008798,"46":0.004399,"47":0.004399,"48":0.035192,"49":0.004399,"50":0.008798,"51":0.013197,"52":0.035192,"53":0.017596,"54":0.008798,"55":0.008798,"56":0.035192,"57":0.026394,"58":0.008798,"59":0.004399,"60":0.004399,"61":0.004399,"62":0,"63":0,"64":0.004399,"65":0.004399,"66":0.008798,"67":0.004399,"68":0.048389,"69":0.008798,"70":0.008798,"71":0.070384,"72":0.197955,"73":0.004399,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0.004399,"15":0.008798,"16":0,"17":0,"18":0,"19":0.004399,"20":0.004399,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.004399,"33":0,"34":0,"35":0,"36":0.008798,"37":0.004399,"38":0,"39":0,"40":0.004399,"41":0.004399,"42":0.004399,"43":0,"44":0,"45":0.004399,"46":0.017596,"47":0,"48":0.004399,"49":0.004399,"50":0,"51":0,"52":0,"53":0.004399,"54":0,"55":0,"56":0.008798,"57":0,"58":0.004399,"60":0,"62":0,"63":0.004399,"64":0.039591,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.017596},E:{"4":0,"5":0,"6":0,"7":0.008798,"8":0.008798,"9":0.008798,"10":0.004399,"11":0.017596,"12":0.048389,"13":0.259541,_:"0","3.1":0,"3.2":0,"5.1":1.3197,"6.1":0,"7.1":0,"9.1":0.013197,"10.1":0.017596,"11.1":0.013197,"12.1":0.114374},G:{"8":0.00087517235170551,"3.2":0.00087517235170551,"4.0-4.1":0.001750344703411,"4.2-4.3":0,"5.0-5.1":0.0052510341102331,"6.0-6.1":0.0026255170551165,"7.0-7.1":0.0070013788136441,"8.1-8.4":0.013127585275583,"9.0-9.2":0.011377240572172,"9.3":0.10852137161148,"10.0-10.2":0.034131721716515,"10.3":0.11989861218366,"11.0-11.2":0.096268958687606,"11.3-11.4":0.16365722976893,"12.0-12.1":0.22054343262979,"12.2-12.4":1.3180095616685,"13.0-13.1":0.60911995678704,"13.2":0.25642549904971,"13.3":5.7796382106632},I:{"3":0.00074943741765481,"4":0.0074943741765481,_:"76","2.1":0,"2.2":0.0022483122529644,"2.3":0.00074943741765481,"4.1":0.012740436100132,"4.2-4.3":0.33125133860343,"4.4":0,"4.4.3-4.4.4":0.21358966403162},B:{"12":0.004399,"13":0.008798,"14":0.008798,"15":0.004399,"16":0.004399,"17":0.013197,"18":0.149566,_:"79"},A:{"6":0.0092237096774194,"7":0.0046118548387097,"8":0.096848951612903,"9":0.050730403225806,"10":0.027671129032258,"11":0.096848951612903,"5.5":0},P:{"4":1.079083748232,"5.0-5.4":0.020360070721358,"6.2-6.4":0.12216042432815,"7.2-7.4":0.20360070721358,"8.2":0.081440282885431,"9.2":0.5293618387553,"10.1":5.1103777510608},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.038548058823529,"11":0.17989094117647},J:{"7":0,"10":0.016803},R:{_:"0"},M:{"0":0.050409},O:{"0":0.476085},Q:{"1.2":0.011202},S:{"2.5":0.005601},H:{"0":2.1793952938144},L:{"0":56.804327}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BA.js b/assets/node_modules/caniuse-lite/data/regions/BA.js
deleted file mode 100644
index ce1f826..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BA.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.003089,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.386125,"34":0.003089,"35":0,"36":0,"37":0,"38":0.006178,"39":0,"40":0,"41":0,"42":0.003089,"43":0.003089,"44":0,"45":0,"46":0,"47":0.003089,"48":0,"49":0.09267,"50":0.003089,"51":0,"52":0,"53":0.006178,"54":0,"55":0.003089,"56":0.003089,"57":0.003089,"58":0.003089,"59":0.003089,"60":0.003089,"61":0.015445,"62":0.009267,"63":0.009267,"64":0.003089,"65":0.003089,"66":0.006178,"67":0.015445,"68":0.009267,"69":0.033979,"70":0.021623,"71":0.015445,"72":0.012356,"73":0.018534,"74":0.012356,"75":0.027801,"76":0.027801,"77":0.033979,"78":0.108115,"79":5.955592,"80":0.009267,"81":0.006178,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0.003089,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.003089,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.003089,"41":0,"42":0,"43":0.003089,"44":0,"45":0.027801,"46":0.003089,"47":0.003089,"48":0.003089,"49":0,"50":0,"51":0.006178,"52":0.071047,"53":0,"54":0.003089,"55":0,"56":0.003089,"57":0.003089,"58":0,"59":0,"60":0.003089,"61":0,"62":0,"63":0.003089,"64":0,"65":0.003089,"66":0.006178,"67":0.003089,"68":0.067958,"69":0.009267,"70":0.012356,"71":0.234764,"72":0.673402,"73":0.012356,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.003089,"37":0,"38":0,"39":0,"40":0.003089,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.003089,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.003089,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.009267,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0.006178,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.006178,"13":0.135916,_:"0","3.1":0,"3.2":0,"5.1":0.003089,"6.1":0,"7.1":0,"9.1":0.003089,"10.1":0.009267,"11.1":0.012356,"12.1":0.015445},G:{"8":0.00061601210363109,"3.2":0.00061601210363109,"4.0-4.1":0.0012320242072622,"4.2-4.3":0,"5.0-5.1":0.0036960726217865,"6.0-6.1":0.0018480363108933,"7.0-7.1":0.0049280968290487,"8.1-8.4":0.0092401815544663,"9.0-9.2":0.0080081573472042,"9.3":0.076385500850255,"10.0-10.2":0.024024472041612,"10.3":0.084393658197459,"11.0-11.2":0.06776133139942,"11.3-11.4":0.11519426337901,"12.0-12.1":0.15523505011503,"12.2-12.4":0.92771422806842,"13.0-13.1":0.42874442412724,"13.2":0.18049154636391,"13.3":4.0681439323797},I:{"3":0.00037745981554677,"4":0.0037745981554677,_:"76","2.1":0,"2.2":0.0011323794466403,"2.3":0.00037745981554677,"4.1":0.0064168168642951,"4.2-4.3":0.16683723847167,"4.4":0,"4.4.3-4.4.4":0.10757604743083},B:{"12":0.003089,"13":0.003089,"14":0.006178,"15":0.024712,"16":0.006178,"17":0.03089,"18":0.191518,_:"79"},A:{"6":0,"7":0,"8":0.003089,"9":0,"10":0.003089,"11":0.176073,"5.5":0},P:{"4":0.16288695384615,"5.0-5.4":0.020360869230769,"6.2-6.4":0.030541303846154,"7.2-7.4":0.050902173076923,"8.2":0.050902173076923,"9.2":0.30541303846154,"10.1":4.5811955769231},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.055288},J:{"7":0,"10":0.006911},R:{_:"0"},M:{"0":0.158953},O:{"0":0.020733},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.18974376116838},L:{"0":76.998233}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BB.js b/assets/node_modules/caniuse-lite/data/regions/BB.js
deleted file mode 100644
index 6211bdd..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BB.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.005219,"39":0.005219,"40":0.020876,"41":0,"42":0,"43":0.005219,"44":0.005219,"45":0.005219,"46":0.005219,"47":0.005219,"48":0.005219,"49":0.161789,"50":0.005219,"51":0.005219,"52":0,"53":0.005219,"54":0.05219,"55":0.010438,"56":0.010438,"57":0.005219,"58":0.015657,"59":0.005219,"60":0.010438,"61":0.005219,"62":0.010438,"63":0.067847,"64":0.005219,"65":0.046971,"66":0,"67":0.005219,"68":0.005219,"69":0.177446,"70":0.026095,"71":0.182665,"72":0.05219,"73":0.041752,"74":0.031314,"75":0.041752,"76":0.062628,"77":0.083504,"78":0.281826,"79":13.966044,"80":0.015657,"81":0.015657,"82":0},C:{"2":0,"3":0.010438,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.010438,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.005219,"44":0.005219,"45":0.005219,"46":0,"47":0.005219,"48":0.015657,"49":0,"50":0.005219,"51":0.005219,"52":0.026095,"53":0.005219,"54":0.010438,"55":0.010438,"56":0.026095,"57":0.005219,"58":0.005219,"59":0.005219,"60":0.005219,"61":0,"62":0,"63":0,"64":0,"65":0.005219,"66":0.146132,"67":0,"68":0.130475,"69":0.026095,"70":0.015657,"71":0.495805,"72":1.570919,"73":0.010438,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0.005219,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.005219,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.010438,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005219,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.005219,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.005219},E:{"4":0.005219,"5":0,"6":0,"7":0,"8":0.005219,"9":0.005219,"10":0.005219,"11":0.005219,"12":0.099161,"13":2.082381,_:"0","3.1":0,"3.2":0,"5.1":0.083504,"6.1":0,"7.1":0,"9.1":0.015657,"10.1":0.036533,"11.1":0.187884,"12.1":0.255731},G:{"8":0.0017435465639692,"3.2":0.0017435465639692,"4.0-4.1":0.0034870931279384,"4.2-4.3":0,"5.0-5.1":0.010461279383815,"6.0-6.1":0.0052306396919076,"7.0-7.1":0.013948372511754,"8.1-8.4":0.026153198459538,"9.0-9.2":0.022666105331599,"9.3":0.21619977393218,"10.0-10.2":0.067998315994798,"10.3":0.23886587926378,"11.0-11.2":0.19179012203661,"11.3-11.4":0.32604320746224,"12.0-12.1":0.43937373412024,"12.2-12.4":2.6257811253376,"13.0-13.1":1.2135084085226,"13.2":0.51085914324297,"13.3":11.514381508453},I:{"3":0.0024065559947299,"4":0.024065559947299,_:"76","2.1":0,"2.2":0.0072196679841897,"2.3":0.0024065559947299,"4.1":0.040911451910408,"4.2-4.3":1.0636977496706,"4.4":0,"4.4.3-4.4.4":0.68586845849802},B:{"12":0.010438,"13":0.010438,"14":0.010438,"15":0.114818,"16":0.026095,"17":0.182665,"18":2.34855,_:"79"},A:{"6":0,"7":0,"8":0.015657,"9":0.015657,"10":0.010438,"11":0.448834,"5.5":0},P:{"4":0.37998315280464,"5.0-5.4":0.021713323017408,"6.2-6.4":0.021713323017408,"7.2-7.4":0.18456324564797,"8.2":0.021713323017408,"9.2":0.31484318375242,"10.1":4.5597978336557},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01314775,"11":0.03944325},J:{"7":0,"10":0.009562},R:{_:"0"},M:{"0":0.229488},O:{"0":0.181678},Q:{"1.2":0.004781},S:{"2.5":0},H:{"0":0.15389562542955},L:{"0":46.42978}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BD.js b/assets/node_modules/caniuse-lite/data/regions/BD.js
deleted file mode 100644
index 3888d5b..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BD.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.003793,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.003793,"29":0.003793,"30":0.003793,"31":0.015172,"32":0,"33":0.011379,"34":0,"35":0,"36":0.007586,"37":0.003793,"38":0,"39":0,"40":0.003793,"41":0.003793,"42":0,"43":0.003793,"44":0,"45":0,"46":0.003793,"47":0,"48":0.003793,"49":0.132755,"50":0,"51":0,"52":0,"53":0.003793,"54":0,"55":0.003793,"56":0.003793,"57":0.003793,"58":0.007586,"59":0,"60":0.003793,"61":0.015172,"62":0.003793,"63":0.022758,"64":0.007586,"65":0.007586,"66":0,"67":0.007586,"68":0.003793,"69":0.026551,"70":0.018965,"71":0.03793,"72":0.026551,"73":0.034137,"74":0.03793,"75":0.030344,"76":0.045516,"77":0.060688,"78":0.136548,"79":8.340807,"80":0.045516,"81":0.030344,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.003793,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.003793,"30":0.003793,"31":0,"32":0,"33":0.003793,"34":0,"35":0,"36":0.003793,"37":0,"38":0.003793,"39":0.003793,"40":0.011379,"41":0.003793,"42":0.003793,"43":0.022758,"44":0.007586,"45":0.003793,"46":0.003793,"47":0.026551,"48":0.022758,"49":0.007586,"50":0.007586,"51":0.007586,"52":0.07586,"53":0.003793,"54":0,"55":0.003793,"56":0.015172,"57":0.003793,"58":0.003793,"59":0.003793,"60":0.007586,"61":0.003793,"62":0.011379,"63":0.003793,"64":0.011379,"65":0.007586,"66":0.007586,"67":0.007586,"68":0.109997,"69":0.015172,"70":0.026551,"71":0.56895,"72":1.547544,"73":0.288268,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0.003793,"16":0,"17":0,"18":0.003793,"19":0.003793,"20":0.003793,"21":0,"22":0,"23":0,"24":0.003793,"25":0,"26":0.007586,"27":0.007586,"28":0.026551,"29":0.003793,"30":0.007586,"31":0.003793,"32":0.015172,"33":0.007586,"34":0,"35":0.003793,"36":0.003793,"37":0.03793,"38":0.022758,"39":0,"40":0,"41":0.003793,"42":0.015172,"43":0,"44":0.003793,"45":0.109997,"46":0.902734,"47":0.007586,"48":0,"49":0,"50":0.003793,"51":0,"52":0,"53":0.015172,"54":0.011379,"55":0.003793,"56":0.018965,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.015172,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.015172},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.007586,"12":0.003793,"13":0.045516,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0.003793,"11.1":0.007586,"12.1":0.015172},G:{"8":0.00014952795838752,"3.2":0.00014952795838752,"4.0-4.1":0.00029905591677503,"4.2-4.3":0,"5.0-5.1":0.0008971677503251,"6.0-6.1":0.00044858387516255,"7.0-7.1":0.0011962236671001,"8.1-8.4":0.0022429193758127,"9.0-9.2":0.0019438634590377,"9.3":0.018541466840052,"10.0-10.2":0.0058315903771131,"10.3":0.02048533029909,"11.0-11.2":0.016448075422627,"11.3-11.4":0.027961728218466,"12.0-12.1":0.037681045513654,"12.2-12.4":0.2251891053316,"13.0-13.1":0.10407145903771,"13.2":0.043811691807542,"13.3":0.98748263719116},I:{"3":0.00079687483530962,"4":0.0079687483530962,_:"76","2.1":0,"2.2":0.0023906245059289,"2.3":0.00079687483530962,"4.1":0.013546872200264,"4.2-4.3":0.35221867720685,"4.4":0,"4.4.3-4.4.4":0.22710932806324},B:{"12":0.015172,"13":0.011379,"14":0.015172,"15":0.007586,"16":0.011379,"17":0.03793,"18":0.140341,_:"79"},A:{"6":0,"7":0,"8":0.042306538461538,"9":0.0042306538461538,"10":0.0042306538461538,"11":0.059229153846154,"5.5":0},P:{"4":0.67968107042254,"5.0-5.4":0.01999061971831,"6.2-6.4":0.049976549295775,"7.2-7.4":0.16992026760563,"8.2":0.069967169014085,"9.2":0.1999061971831,"10.1":0.91956850704225},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.0111726,"11":0.1005534},J:{"7":0,"10":0.012414},R:{_:"0"},M:{"0":0.223452},O:{"0":6.498729},Q:{"1.2":0.012414},S:{"2.5":0},H:{"0":8.6089063659794},L:{"0":59.549208}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BE.js b/assets/node_modules/caniuse-lite/data/regions/BE.js
deleted file mode 100644
index c995efb..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BE.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.01261,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.01261,"39":0,"40":0.018915,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.006305,"49":0.523315,"50":0,"51":0,"52":0,"53":0.01261,"54":0.006305,"55":0.006305,"56":0.006305,"57":0.01261,"58":0.006305,"59":0.031525,"60":0.006305,"61":0.006305,"62":0.01261,"63":0.03783,"64":0.006305,"65":0.02522,"66":0.03783,"67":0.031525,"68":0.02522,"69":0.06305,"70":0.02522,"71":0.044135,"72":0.07566,"73":0.056745,"74":0.06305,"75":0.145015,"76":0.132405,"77":0.1261,"78":0.586365,"79":20.39037,"80":0.02522,"81":0.018915,"82":0},C:{"2":0,"3":0.006305,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.031525,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.006305,"46":0,"47":0,"48":0.02522,"49":0,"50":0.02522,"51":0,"52":0.056745,"53":0,"54":0.07566,"55":0,"56":0.02522,"57":0.006305,"58":0.06305,"59":0.006305,"60":0.05044,"61":0.006305,"62":0.006305,"63":0.006305,"64":0.006305,"65":0.031525,"66":0.01261,"67":0.01261,"68":0.271115,"69":0.031525,"70":0.05044,"71":0.952055,"72":2.339155,"73":0.018915,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.006305,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.006305,"47":0,"48":0,"49":0,"50":0,"51":0.006305,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.006305,"60":0,"62":0,"63":0,"64":0.05044,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.006305},E:{"4":0.006305,"5":0,"6":0,"7":0,"8":0.01261,"9":0.06305,"10":0.018915,"11":0.044135,"12":0.182845,"13":3.6569,_:"0","3.1":0,"3.2":0,"5.1":0.06305,"6.1":0,"7.1":0,"9.1":0.03783,"10.1":0.13871,"11.1":0.220675,"12.1":0.548535},G:{"8":0.0021499414824447,"3.2":0.0021499414824447,"4.0-4.1":0.0042998829648895,"4.2-4.3":0,"5.0-5.1":0.012899648894668,"6.0-6.1":0.0064498244473342,"7.0-7.1":0.017199531859558,"8.1-8.4":0.032249122236671,"9.0-9.2":0.027949239271782,"9.3":0.26659274382315,"10.0-10.2":0.083847717815345,"10.3":0.29454198309493,"11.0-11.2":0.23649356306892,"11.3-11.4":0.40203905721717,"12.0-12.1":0.54178525357607,"12.2-12.4":3.2378118725618,"13.0-13.1":1.4963592717815,"13.2":0.62993285435631,"13.3":14.198213550065},I:{"3":0.00047488801054018,"4":0.0047488801054018,_:"76","2.1":0,"2.2":0.0014246640316206,"2.3":0.00047488801054018,"4.1":0.0080730961791831,"4.2-4.3":0.20990050065876,"4.4":0,"4.4.3-4.4.4":0.13534308300395},B:{"12":0.006305,"13":0.006305,"14":0.018915,"15":0.02522,"16":0.107185,"17":0.15132,"18":2.906605,_:"79"},A:{"6":0,"7":0,"8":0.084945545454545,"9":0.019602818181818,"10":0.052274181818182,"11":1.9994874545455,"5.5":0},P:{"4":0.12524681481481,"5.0-5.4":0.010437234567901,"6.2-6.4":0.020874469135802,"7.2-7.4":0.031311703703704,"8.2":0.020874469135802,"9.2":0.13568404938272,"10.1":3.7678416790123},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.033255},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.203225},O:{"0":0.040645},Q:{"1.2":0.00739},S:{"2.5":0},H:{"0":0.10144743127148},L:{"0":32.6008}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BF.js b/assets/node_modules/caniuse-lite/data/regions/BF.js
deleted file mode 100644
index 74ae1c7..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BF.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.002126,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.006378,"27":0.002126,"28":0,"29":0.006378,"30":0,"31":0.008504,"32":0,"33":0.01063,"34":0,"35":0,"36":0,"37":0.002126,"38":0,"39":0,"40":0.002126,"41":0,"42":0,"43":0.002126,"44":0,"45":0,"46":0,"47":0,"48":0.002126,"49":0.023386,"50":0,"51":0,"52":0,"53":0.002126,"54":0,"55":0.002126,"56":0.002126,"57":0,"58":0.002126,"59":0,"60":0,"61":0,"62":0,"63":0.023386,"64":0.002126,"65":0.006378,"66":0,"67":0.02126,"68":0.002126,"69":0.07441,"70":0.004252,"71":0.006378,"72":0.002126,"73":0.006378,"74":0.027638,"75":0.014882,"76":0.006378,"77":0.038268,"78":0.038268,"79":1.315994,"80":0.004252,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.002126,"22":0.006378,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.002126,"31":0.002126,"32":0.002126,"33":0,"34":0.002126,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.002126,"41":0.002126,"42":0.002126,"43":0.004252,"44":0.002126,"45":0.002126,"46":0,"47":0.008504,"48":0.004252,"49":0,"50":0.002126,"51":0,"52":0.01063,"53":0,"54":0,"55":0,"56":0.004252,"57":0,"58":0,"59":0,"60":0.002126,"61":0.004252,"62":0.002126,"63":0.002126,"64":0.008504,"65":0.008504,"66":0.002126,"67":0.004252,"68":0.068032,"69":0.017008,"70":0.012756,"71":0.261498,"72":0.661186,"73":0.038268,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.002126,"21":0,"22":0,"23":0.004252,"24":0,"25":0,"26":0,"27":0,"28":0.004252,"29":0,"30":0.004252,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.004252,"46":0.014882,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.008504,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.002126,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.025512},E:{"4":0,"5":0,"6":0,"7":0.002126,"8":0.004252,"9":0,"10":0.014882,"11":0.004252,"12":0.036142,"13":0.121182,_:"0","3.1":0,"3.2":0,"5.1":0.344412,"6.1":0,"7.1":0,"9.1":0.002126,"10.1":0.029764,"11.1":0.017008,"12.1":0.025512},G:{"8":0.0002860700210063,"3.2":0.0002860700210063,"4.0-4.1":0.0005721400420126,"4.2-4.3":0,"5.0-5.1":0.0017164201260378,"6.0-6.1":0.00085821006301891,"7.0-7.1":0.0022885601680504,"8.1-8.4":0.0042910503150945,"9.0-9.2":0.0037189102730819,"9.3":0.035472682604781,"10.0-10.2":0.011156730819246,"10.3":0.039191592877863,"11.0-11.2":0.031467702310693,"11.3-11.4":0.053495093928178,"12.0-12.1":0.072089645293588,"12.2-12.4":0.43082145163549,"13.0-13.1":0.19910473462039,"13.2":0.083818516154846,"13.3":1.8892064187256},I:{"3":0.00059620553359684,"4":0.0059620553359684,_:"76","2.1":0,"2.2":0.0017886166007905,"2.3":0.00059620553359684,"4.1":0.010135494071146,"4.2-4.3":0.2635228458498,"4.4":0,"4.4.3-4.4.4":0.1699185770751},B:{"12":0.029764,"13":0.004252,"14":0.008504,"15":0.012756,"16":0.006378,"17":0.017008,"18":0.150946,_:"79"},A:{"6":0,"7":0,"8":0.008504,"9":0,"10":0.004252,"11":0.08504,"5.5":0},P:{"4":0.23460940909091,"5.0-5.4":0.040801636363636,"6.2-6.4":0.020400818181818,"7.2-7.4":0.20400818181818,"8.2":0.051002045454545,"9.2":0.17340695454545,"10.1":0.61202454545455},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.0094488,"11":0.0377952},J:{"7":0,"10":0.031496},R:{_:"0"},M:{"0":0.19685},O:{"0":1.881886},Q:{"1.2":0.031496},S:{"2.5":0.023622},H:{"0":19.35212732646},L:{"0":63.55132}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BG.js b/assets/node_modules/caniuse-lite/data/regions/BG.js
deleted file mode 100644
index b263905..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BG.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.005287,"27":0,"28":0,"29":0,"30":0,"31":0.005287,"32":0,"33":0,"34":0.005287,"35":0,"36":0.005287,"37":0,"38":0.010574,"39":0,"40":0.010574,"41":0.005287,"42":0.010574,"43":0.005287,"44":0,"45":0,"46":0.005287,"47":0,"48":0,"49":0.63444,"50":0.005287,"51":0.005287,"52":0.005287,"53":0.015861,"54":0.005287,"55":0.010574,"56":0.010574,"57":0.021148,"58":0.026435,"59":0.021148,"60":0.005287,"61":0.05287,"62":0.015861,"63":0.05287,"64":0.010574,"65":0.010574,"66":0.031722,"67":0.015861,"68":0.021148,"69":0.05287,"70":0.047583,"71":0.063444,"72":0.037009,"73":0.058157,"74":0.037009,"75":0.095166,"76":0.068731,"77":0.089879,"78":0.301359,"79":16.379126,"80":0.021148,"81":0.031722,"82":0},C:{"2":0.010574,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005287,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.005287,"39":0,"40":0.005287,"41":0,"42":0,"43":0.010574,"44":0,"45":0.005287,"46":0,"47":0.015861,"48":0.015861,"49":0.005287,"50":0.037009,"51":0.005287,"52":0.333081,"53":0.005287,"54":0.005287,"55":0.005287,"56":0.031722,"57":0.010574,"58":0.079305,"59":0.005287,"60":0.10574,"61":0.010574,"62":0.015861,"63":0.015861,"64":0.015861,"65":0.015861,"66":0.026435,"67":0.021148,"68":0.296072,"69":0.116314,"70":0.068731,"71":1.242445,"72":3.034738,"73":0.026435,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.005287,"33":0,"34":0,"35":0,"36":0.021148,"37":0,"38":0,"39":0,"40":0.005287,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.015861,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.005287,"57":0.005287,"58":0,"60":0,"62":0.010574,"63":0,"64":0.031722,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.005287,"10":0,"11":0.015861,"12":0.015861,"13":0.407099,_:"0","3.1":0,"3.2":0,"5.1":0.142749,"6.1":0,"7.1":0,"9.1":0,"10.1":0.010574,"11.1":0.026435,"12.1":0.058157},G:{"8":0.00086146133840152,"3.2":0.00086146133840152,"4.0-4.1":0.001722922676803,"4.2-4.3":0,"5.0-5.1":0.0051687680304091,"6.0-6.1":0.0025843840152046,"7.0-7.1":0.0068916907072122,"8.1-8.4":0.012921920076023,"9.0-9.2":0.01119899739922,"9.3":0.10682120596179,"10.0-10.2":0.033596992197659,"10.3":0.11802020336101,"11.0-11.2":0.094760747224167,"11.3-11.4":0.16109327028108,"12.0-12.1":0.21708825727718,"12.2-12.4":1.2973607756327,"13.0-13.1":0.59957709152746,"13.2":0.25240817215165,"13.3":5.6890906788036},I:{"3":0.00062074835309618,"4":0.0062074835309618,_:"76","2.1":0,"2.2":0.0018622450592885,"2.3":0.00062074835309618,"4.1":0.010552722002635,"4.2-4.3":0.27437077206851,"4.4":0,"4.4.3-4.4.4":0.17691328063241},B:{"12":0.005287,"13":0.005287,"14":0.010574,"15":0.021148,"16":0.015861,"17":0.068731,"18":0.645014,_:"79"},A:{"6":0,"7":0,"8":0.026679768518519,"9":0.0053359537037037,"10":0.016007861111111,"11":1.1045424166667,"5.5":0},P:{"4":0.16509592026578,"5.0-5.4":0.010318495016611,"6.2-6.4":0.010318495016611,"7.2-7.4":0.041273980066445,"8.2":0.030955485049834,"9.2":0.16509592026578,"10.1":2.6105792392027},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.009426,"11":0.037704},J:{"7":0,"10":0.004713},R:{_:"0"},M:{"0":0.197946},O:{"0":0.065982},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.21417426804124},L:{"0":57.640371}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BH.js b/assets/node_modules/caniuse-lite/data/regions/BH.js
deleted file mode 100644
index 51bb842..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BH.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.004812,"33":0,"34":0,"35":0,"36":0.004812,"37":0,"38":0.014436,"39":0,"40":0,"41":0,"42":0.004812,"43":0.004812,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.09624,"50":0,"51":0,"52":0,"53":0.004812,"54":0,"55":0.004812,"56":0.004812,"57":0,"58":0.004812,"59":0.004812,"60":0.004812,"61":0.004812,"62":0.004812,"63":0.033684,"64":0.009624,"65":0.043308,"66":0.009624,"67":0.081804,"68":0.004812,"69":0.04812,"70":0.014436,"71":0.019248,"72":0.009624,"73":0.038496,"74":0.043308,"75":0.057744,"76":0.052932,"77":0.139548,"78":0.322404,"79":14.354196,"80":0.033684,"81":0.009624,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.004812,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.033684,"49":0,"50":0,"51":0,"52":0.028872,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0.038496,"60":0.02406,"61":0,"62":0.004812,"63":0.004812,"64":0,"65":0.004812,"66":0,"67":0.009624,"68":0.052932,"69":0.004812,"70":0.019248,"71":0.346464,"72":0.67368,"73":0.019248,"74":0,"3.5":0.004812,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.004812,"37":0.004812,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.004812,"46":0.038496,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.004812,"54":0,"55":0.004812,"56":0.004812,"57":0,"58":0,"60":0,"62":0.004812,"63":0.009624,"64":0.014436,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.004812},E:{"4":0,"5":0,"6":0,"7":0,"8":0.009624,"9":0.043308,"10":0.04812,"11":0.057744,"12":0.149172,"13":2.256828,_:"0","3.1":0,"3.2":0,"5.1":0.423456,"6.1":0,"7.1":0,"9.1":0.019248,"10.1":0.202104,"11.1":0.274284,"12.1":0.620748},G:{"8":0.0018446389916975,"3.2":0.0018446389916975,"4.0-4.1":0.003689277983395,"4.2-4.3":0,"5.0-5.1":0.011067833950185,"6.0-6.1":0.0055339169750925,"7.0-7.1":0.01475711193358,"8.1-8.4":0.027669584875463,"9.0-9.2":0.023980306892068,"9.3":0.22873523497049,"10.0-10.2":0.071940920676203,"10.3":0.25271554186256,"11.0-11.2":0.20291028908673,"11.3-11.4":0.34494749144743,"12.0-12.1":0.46484902590777,"12.2-12.4":2.7780263214964,"13.0-13.1":1.2838687382215,"13.2":0.54047922456737,"13.3":12.18199590117},I:{"3":0.00011075098814229,"4":0.0011075098814229,_:"76","2.1":0,"2.2":0.00033225296442688,"2.3":0.00011075098814229,"4.1":0.001882766798419,"4.2-4.3":0.048951936758893,"4.4":0,"4.4.3-4.4.4":0.031564031620553},B:{"12":0.004812,"13":0.009624,"14":0.009624,"15":0.019248,"16":0.028872,"17":0.09624,"18":1.05864,_:"79"},A:{"6":0,"7":0,"8":0.014436,"9":0,"10":0.004812,"11":0.399396,"5.5":0},P:{"4":0.29296557788945,"5.0-5.4":0.040409045226131,"6.2-6.4":0.020204522613065,"7.2-7.4":0.13132939698492,"8.2":0.18184070351759,"9.2":0.35357914572864,"10.1":2.8286331658291},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0.005188},R:{_:"0"},M:{"0":0.088196},O:{"0":5.405896},Q:{"1.2":0.005188},S:{"2.5":0},H:{"0":1.0314492783505},L:{"0":42.52888}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BI.js b/assets/node_modules/caniuse-lite/data/regions/BI.js
deleted file mode 100644
index e4867c0..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BI.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.008408,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.004204,"26":0.008408,"27":0,"28":0,"29":0,"30":0.004204,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.004204,"37":0,"38":0.004204,"39":0,"40":0.008408,"41":0,"42":0,"43":0.025224,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.029428,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.008408,"56":0,"57":0,"58":0.004204,"59":0,"60":0.008408,"61":0,"62":0,"63":0.033632,"64":0.004204,"65":0.004204,"66":0.004204,"67":0.033632,"68":0.004204,"69":0.176568,"70":0.008408,"71":0.02102,"72":0.008408,"73":0.088284,"74":0.016816,"75":0.016816,"76":0.02102,"77":0.079876,"78":0.071468,"79":4.376364,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0.004204,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.004204,"22":0,"23":0,"24":0.008408,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.012612,"32":0,"33":0,"34":0.004204,"35":0,"36":0.004204,"37":0.004204,"38":0,"39":0,"40":0.004204,"41":0,"42":0.004204,"43":0.008408,"44":0,"45":0.004204,"46":0,"47":0.02102,"48":0.02102,"49":0.004204,"50":0,"51":0.004204,"52":0.037836,"53":0,"54":0.004204,"55":0,"56":0.012612,"57":0.004204,"58":0,"59":0.004204,"60":0.004204,"61":0.004204,"62":0,"63":0,"64":0.004204,"65":0.004204,"66":0.004204,"67":0,"68":0.054652,"69":0.02102,"70":0.029428,"71":0.466644,"72":1.13508,"73":0.071468,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0.004204,"15":0,"16":0,"17":0,"18":0,"19":0.004204,"20":0.025224,"21":0,"22":0,"23":0.033632,"24":0,"25":0,"26":0,"27":0,"28":0.004204,"29":0,"30":0.004204,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.004204,"38":0.004204,"39":0,"40":0.004204,"41":0,"42":0,"43":0,"44":0,"45":0.008408,"46":0.054652,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.012612,"54":0.008408,"55":0.004204,"56":0.016816,"57":0,"58":0,"60":0,"62":0.004204,"63":0.012612,"64":0.025224,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.029428},E:{"4":0,"5":0,"6":0,"7":0,"8":0.004204,"9":0,"10":0,"11":0.218608,"12":0.004204,"13":0.298484,_:"0","3.1":0,"3.2":0,"5.1":7.533568,"6.1":0,"7.1":0,"9.1":0.012612,"10.1":0,"11.1":0.025224,"12.1":0.08408},G:{"8":0.00021363609082725,"3.2":0.00021363609082725,"4.0-4.1":0.0004272721816545,"4.2-4.3":0,"5.0-5.1":0.0012818165449635,"6.0-6.1":0.00064090827248174,"7.0-7.1":0.001709088726618,"8.1-8.4":0.0032045413624087,"9.0-9.2":0.0027772691807542,"9.3":0.026490875262579,"10.0-10.2":0.0083318075422627,"10.3":0.029268144443333,"11.0-11.2":0.023499969990997,"11.3-11.4":0.039949948984695,"12.0-12.1":0.053836294888467,"12.2-12.4":0.32173595278584,"13.0-13.1":0.14869071921576,"13.2":0.062595374612384,"13.3":1.4108527438231},I:{"3":0.00056804216073781,"4":0.0056804216073781,_:"76","2.1":0,"2.2":0.0017041264822134,"2.3":0.00056804216073781,"4.1":0.0096567167325428,"4.2-4.3":0.25107463504611,"4.4":0,"4.4.3-4.4.4":0.16189201581028},B:{"12":0.046244,"13":0.02102,"14":0.02102,"15":0.04204,"16":0.012612,"17":0.071468,"18":0.323708,_:"79"},A:{"6":0.004204,"7":0,"8":0.14714,"9":0,"10":0.02102,"11":0.172364,"5.5":0},P:{"4":0.23690277108434,"5.0-5.4":0.030900361445783,"6.2-6.4":0.020600240963855,"7.2-7.4":0.54590638554217,"8.2":0.020600240963855,"9.2":0.30900361445783,"10.1":0.54590638554217},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.009936,"11":0.059616},J:{"7":0,"10":0.005796},R:{_:"0"},M:{"0":0.081144},O:{"0":1.315692},Q:{"1.2":0.005796},S:{"2.5":0.005796},H:{"0":26.860227525773},L:{"0":35.57442}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BJ.js b/assets/node_modules/caniuse-lite/data/regions/BJ.js
deleted file mode 100644
index 9716698..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BJ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.004781,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.004781,"26":0,"27":0,"28":0.004781,"29":0,"30":0,"31":0.014343,"32":0,"33":0.023905,"34":0,"35":0.004781,"36":0.009562,"37":0.062153,"38":0,"39":0,"40":0.009562,"41":0.004781,"42":0,"43":0.009562,"44":0.004781,"45":0.004781,"46":0.004781,"47":0.009562,"48":0.009562,"49":0.076496,"50":0.009562,"51":0,"52":0,"53":0,"54":0,"55":0.014343,"56":0.004781,"57":0.004781,"58":0.071715,"59":0.004781,"60":0.004781,"61":0.004781,"62":0.028686,"63":0.210364,"64":0.009562,"65":0.009562,"66":0.004781,"67":0.023905,"68":0.009562,"69":0.109963,"70":0.019124,"71":0.086058,"72":0.114744,"73":0.052591,"74":0.081277,"75":0.071715,"76":0.157773,"77":0.277298,"78":0.282079,"79":11.61783,"80":0.019124,"81":0.014343,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.004781,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0.004781,"28":0.215145,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.004781,"36":0,"37":0,"38":0,"39":0.004781,"40":0,"41":0.004781,"42":0,"43":0.014343,"44":0.004781,"45":0.004781,"46":0,"47":0.014343,"48":0.004781,"49":0,"50":0.004781,"51":0.004781,"52":0.019124,"53":0,"54":0,"55":0,"56":0.019124,"57":0.004781,"58":0,"59":0.004781,"60":0.019124,"61":0.004781,"62":0.004781,"63":0.004781,"64":0,"65":0.014343,"66":0.014343,"67":0.009562,"68":0.086058,"69":0.081277,"70":0.062153,"71":0.817551,"72":2.00802,"73":0.043029,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0.004781,"12":0,"15":0,"16":0.009562,"17":0,"18":0,"19":0,"20":0.014343,"21":0,"22":0.004781,"23":0.019124,"24":0,"25":0,"26":0,"27":0,"28":0.009562,"29":0,"30":0.004781,"31":0,"32":0.004781,"33":0,"34":0,"35":0,"36":0.004781,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0.023905,"43":0,"44":0,"45":0.009562,"46":0.081277,"47":0,"48":0,"49":0.004781,"50":0,"51":0.004781,"52":0,"53":0.028686,"54":0,"55":0.004781,"56":0.004781,"57":0,"58":0.019124,"60":0.009562,"62":0,"63":0.009562,"64":0.019124,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.119525},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.004781,"12":0.076496,"13":0.597625,_:"0","3.1":0,"3.2":0,"5.1":1.276527,"6.1":0,"7.1":0,"9.1":0.014343,"10.1":0.014343,"11.1":0.071715,"12.1":0.119525},G:{"8":0.0003369955986796,"3.2":0.0003369955986796,"4.0-4.1":0.00067399119735921,"4.2-4.3":0,"5.0-5.1":0.0020219735920776,"6.0-6.1":0.0010109867960388,"7.0-7.1":0.0026959647894368,"8.1-8.4":0.0050549339801941,"9.0-9.2":0.0043809427828349,"9.3":0.041787454236271,"10.0-10.2":0.013142828348505,"10.3":0.046168397019106,"11.0-11.2":0.037069515854756,"11.3-11.4":0.063018176953086,"12.0-12.1":0.08492289086726,"12.2-12.4":0.50751537161148,"13.0-13.1":0.234548936681,"13.2":0.098739710413124,"13.3":2.2255189336801},I:{"3":0.00044968906455863,"4":0.0044968906455863,_:"76","2.1":0,"2.2":0.0013490671936759,"2.3":0.00044968906455863,"4.1":0.0076447140974967,"4.2-4.3":0.19876256653491,"4.4":0,"4.4.3-4.4.4":0.12816138339921},B:{"12":0.033467,"13":0.023905,"14":0.023905,"15":0.009562,"16":0.004781,"17":0.086058,"18":0.492443,_:"79"},A:{"6":0,"7":0,"8":0.052591,"9":0,"10":0.009562,"11":0.09562,"5.5":0},P:{"4":0.13363803030303,"5.0-5.4":0,"6.2-6.4":0.010279848484848,"7.2-7.4":0.020559696969697,"8.2":0.041119393939394,"9.2":0.11307833333333,"10.1":0.34951484848485},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.011386909090909,"11":0.11386909090909},J:{"7":0,"10":0.026095},R:{_:"0"},M:{"0":0.151351},O:{"0":1.398692},Q:{"1.2":0.005219},S:{"2.5":0.005219},H:{"0":14.373403987973},L:{"0":48.501812}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BM.js b/assets/node_modules/caniuse-lite/data/regions/BM.js
deleted file mode 100644
index 0b55286..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BM.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.044205,"46":0,"47":0,"48":0,"49":0.238707,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.008841,"56":0,"57":0.035364,"58":0.008841,"59":0.008841,"60":0,"61":0.053046,"62":0,"63":0.017682,"64":0.008841,"65":0.053046,"66":0.053046,"67":0.123774,"68":0.17682,"69":0.026523,"70":0.123774,"71":0.044205,"72":0.053046,"73":0.380163,"74":0.159138,"75":0.167979,"76":0.309435,"77":2.316342,"78":0.954828,"79":33.542754,"80":0.08841,"81":0.035364,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.017682,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.026523,"49":0,"50":0,"51":0,"52":0.053046,"53":0,"54":0,"55":0.008841,"56":0.008841,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0.008841,"63":0.008841,"64":0.008841,"65":0.017682,"66":0,"67":0.044205,"68":0.141456,"69":0.070728,"70":0.053046,"71":0.831054,"72":1.962702,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.035364,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0.008841,"64":0.008841,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.017682,"10":0.017682,"11":0.114933,"12":0.123774,"13":8.805636,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0.008841,"7.1":0,"9.1":0.114933,"10.1":0.185661,"11.1":0.521619,"12.1":0.733803},G:{"8":0.0016381700510153,"3.2":0.0016381700510153,"4.0-4.1":0.0032763401020306,"4.2-4.3":0,"5.0-5.1":0.0098290203060918,"6.0-6.1":0.0049145101530459,"7.0-7.1":0.013105360408122,"8.1-8.4":0.02457255076523,"9.0-9.2":0.021296210663199,"9.3":0.2031330863259,"10.0-10.2":0.063888631989597,"10.3":0.2244292969891,"11.0-11.2":0.18019870561168,"11.3-11.4":0.30633779953986,"12.0-12.1":0.41281885285586,"12.2-12.4":2.467084096829,"13.0-13.1":1.1401663555067,"13.2":0.47998382494748,"13.3":10.818475016905},I:{"3":0.00055566930171278,"4":0.0055566930171278,_:"76","2.1":0,"2.2":0.0016670079051383,"2.3":0.00055566930171278,"4.1":0.0094463781291173,"4.2-4.3":0.24560583135705,"4.4":0,"4.4.3-4.4.4":0.15836575098814},B:{"12":0.017682,"13":0.035364,"14":0.061887,"15":0.123774,"16":0.477414,"17":0.680757,"18":7.815444,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0.017682,"11":10.184832,"5.5":0},P:{"4":0.021797578313253,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0.021797578313253,"8.2":0.021797578313253,"9.2":0.03269636746988,"10.1":1.5803244277108},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0.039406},R:{_:"0"},M:{"0":0.04636},O:{"0":0.004636},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.0076808642611684},L:{"0":7.013552}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BN.js b/assets/node_modules/caniuse-lite/data/regions/BN.js
deleted file mode 100644
index 3674d27..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BN.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.005056,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0.010112,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.045504,"34":0,"35":0,"36":0,"37":0,"38":0.02528,"39":0,"40":0.010112,"41":0.005056,"42":0,"43":0,"44":0,"45":0,"46":0.005056,"47":0,"48":0.005056,"49":0.141568,"50":0.005056,"51":0.005056,"52":0,"53":0.015168,"54":0,"55":0.020224,"56":0.02528,"57":0.015168,"58":0.010112,"59":0.005056,"60":0.005056,"61":0,"62":0.020224,"63":0.171904,"64":0.005056,"65":0.030336,"66":0.010112,"67":0.111232,"68":0.005056,"69":0.065728,"70":0.015168,"71":0.030336,"72":0.02528,"73":0.055616,"74":0.020224,"75":0.070784,"76":0.040448,"77":0.1264,"78":0.318528,"79":16.33088,"80":0.045504,"81":0.02528,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0.005056,"17":0,"18":0,"19":0,"20":0,"21":0.015168,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.020224,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.005056,"44":0,"45":0.035392,"46":0,"47":0.010112,"48":0.040448,"49":0.005056,"50":0,"51":0,"52":0.060672,"53":0.005056,"54":0.005056,"55":0.005056,"56":0.005056,"57":0.005056,"58":0.005056,"59":0,"60":0.005056,"61":0.010112,"62":0.010112,"63":0.005056,"64":0.005056,"65":0.005056,"66":0.005056,"67":0.005056,"68":0.096064,"69":0.015168,"70":0.07584,"71":0.586496,"72":1.258944,"73":0.096064,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.040448,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.080896,"47":0,"48":0,"49":0.005056,"50":0,"51":0,"52":0,"53":0.010112,"54":0,"55":0.005056,"56":0.005056,"57":0,"58":0,"60":0,"62":0,"63":0.005056,"64":0.010112,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.010112},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.010112,"10":0.015168,"11":0.02528,"12":0.15168,"13":1.294336,_:"0","3.1":0,"3.2":0,"5.1":0.030336,"6.1":0,"7.1":0,"9.1":0.015168,"10.1":0.15168,"11.1":0.22752,"12.1":0.546048},G:{"8":0.0018385899769931,"3.2":0.0018385899769931,"4.0-4.1":0.0036771799539862,"4.2-4.3":0,"5.0-5.1":0.011031539861959,"6.0-6.1":0.0055157699309793,"7.0-7.1":0.014708719815945,"8.1-8.4":0.027578849654896,"9.0-9.2":0.02390166970091,"9.3":0.22798515714714,"10.0-10.2":0.071705009102731,"10.3":0.25188682684805,"11.0-11.2":0.20224489746924,"11.3-11.4":0.34381632569771,"12.0-12.1":0.46332467420226,"12.2-12.4":2.7689165053516,"13.0-13.1":1.2796586239872,"13.2":0.53870686325898,"13.3":12.142048208062},I:{"3":0.00037497760210804,"4":0.0037497760210804,_:"76","2.1":0,"2.2":0.0011249328063241,"2.3":0.00037497760210804,"4.1":0.0063746192358366,"4.2-4.3":0.16574010013175,"4.4":0,"4.4.3-4.4.4":0.10686861660079},B:{"12":0.005056,"13":0.005056,"14":0.005056,"15":0.005056,"16":0.060672,"17":0.07584,"18":0.525824,_:"79"},A:{"6":0,"7":0,"8":0.0128,"9":0.0064,"10":0.0192,"11":0.4672,"5.5":0},P:{"4":0.60458551048951,"5.0-5.4":0.020847776223776,"6.2-6.4":0.052119440559441,"7.2-7.4":0.072967216783217,"8.2":0.031271664335664,"9.2":0.20847776223776,"10.1":1.9701148531469},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.014832},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.17304},O:{"0":2.180304},Q:{"1.2":0.02472},S:{"2.5":0},H:{"0":3.2671005360825},L:{"0":43.421328}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BO.js b/assets/node_modules/caniuse-lite/data/regions/BO.js
deleted file mode 100644
index ccecee3..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BO.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.012024,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.006012,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.024048,"34":0.006012,"35":0,"36":0.006012,"37":0,"38":0.012024,"39":0,"40":0.006012,"41":0,"42":0,"43":0,"44":0.006012,"45":0.006012,"46":0.006012,"47":0.012024,"48":0.006012,"49":0.366732,"50":0.006012,"51":0.006012,"52":0.006012,"53":0.018036,"54":0,"55":0.006012,"56":0.012024,"57":0.006012,"58":0.012024,"59":0.006012,"60":0.006012,"61":0.018036,"62":0.024048,"63":0.048096,"64":0.012024,"65":0.078156,"66":0.018036,"67":0.072144,"68":0.018036,"69":0.042084,"70":0.096192,"71":0.084168,"72":0.054108,"73":0.12024,"74":0.144288,"75":0.198396,"76":0.156312,"77":0.186372,"78":0.336672,"79":23.35662,"80":0.012024,"81":0.012024,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0.006012,"19":0,"20":0,"21":0.006012,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.03006,"39":0,"40":0,"41":0,"42":0,"43":0.006012,"44":0,"45":0,"46":0,"47":0.012024,"48":0.072144,"49":0,"50":0.006012,"51":0.006012,"52":0.048096,"53":0.012024,"54":0.006012,"55":0.006012,"56":0.024048,"57":0.006012,"58":0.006012,"59":0.012024,"60":0.006012,"61":0.006012,"62":0.006012,"63":0.024048,"64":0.018036,"65":0.018036,"66":0.024048,"67":0.012024,"68":0.126252,"69":0.042084,"70":0.078156,"71":0.925848,"72":2.356704,"73":0.024048,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.006012,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.012024,"47":0.006012,"48":0,"49":0.012024,"50":0,"51":0,"52":0,"53":0.006012,"54":0,"55":0,"56":0.006012,"57":0.012024,"58":0.006012,"60":0,"62":0,"63":0.012024,"64":0.072144,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.012024},E:{"4":0,"5":0,"6":0,"7":0,"8":0.024048,"9":0,"10":0.018036,"11":0.03006,"12":0.144288,"13":0.817632,_:"0","3.1":0,"3.2":0,"5.1":2.302596,"6.1":0,"7.1":0,"9.1":0.018036,"10.1":0.096192,"11.1":0.186372,"12.1":0.276552},G:{"8":0.00030521436430929,"3.2":0.00030521436430929,"4.0-4.1":0.00061042872861859,"4.2-4.3":0,"5.0-5.1":0.0018312861858558,"6.0-6.1":0.00091564309292788,"7.0-7.1":0.0024417149144743,"8.1-8.4":0.0045782154646394,"9.0-9.2":0.0039677867360208,"9.3":0.037846581174352,"10.0-10.2":0.011903360208062,"10.3":0.041814367910373,"11.0-11.2":0.033573580074022,"11.3-11.4":0.057075086125838,"12.0-12.1":0.076914019805942,"12.2-12.4":0.4596528326498,"13.0-13.1":0.21242919755927,"13.2":0.089427808742623,"13.3":2.0156356618986},I:{"3":0.00042137022397892,"4":0.0042137022397892,_:"76","2.1":0,"2.2":0.0012641106719368,"2.3":0.00042137022397892,"4.1":0.0071632938076416,"4.2-4.3":0.18624563899868,"4.4":0,"4.4.3-4.4.4":0.12009051383399},B:{"12":0.006012,"13":0.006012,"14":0.006012,"15":0.012024,"16":0.012024,"17":0.066132,"18":0.342684,_:"79"},A:{"6":0,"7":0,"8":0.030895,"9":0.012358,"10":0.012358,"11":0.166833,"5.5":0},P:{"4":0.74554610526316,"5.0-5.4":0.030224842105263,"6.2-6.4":0.060449684210526,"7.2-7.4":0.23172378947368,"8.2":0.10074947368421,"9.2":0.33247326315789,"10.1":1.7328909473684},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.00997,"11":0.02991},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.111664},O:{"0":0.295112},Q:{"1.2":0.003988},S:{"2.5":0},H:{"0":0.50970340206186},L:{"0":54.291904}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BR.js b/assets/node_modules/caniuse-lite/data/regions/BR.js
deleted file mode 100644
index 0c06315..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BR.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.01401,"37":0,"38":0.007005,"39":0,"40":0,"41":0.007005,"42":0,"43":0.007005,"44":0,"45":0,"46":0,"47":0,"48":0.007005,"49":0.26619,"50":0.007005,"51":0.01401,"52":0,"53":0.007005,"54":0.01401,"55":0.007005,"56":0.007005,"57":0.007005,"58":0.02802,"59":0.007005,"60":0.007005,"61":0.021015,"62":0.01401,"63":0.049035,"64":0.007005,"65":0.021015,"66":0.01401,"67":0.049035,"68":0.021015,"69":0.05604,"70":0.11208,"71":0.147105,"72":0.133095,"73":0.11208,"74":0.09807,"75":0.12609,"76":0.133095,"77":0.19614,"78":0.581415,"79":38.54151,"80":0.147105,"81":0.049035,"82":0},C:{"2":0,"3":0.007005,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.007005,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.007005,"46":0,"47":0.007005,"48":0.007005,"49":0,"50":0,"51":0.007005,"52":0.04203,"53":0,"54":0.007005,"55":0.007005,"56":0.007005,"57":0.007005,"58":0.007005,"59":0,"60":0.035025,"61":0.007005,"62":0.007005,"63":0.01401,"64":0.01401,"65":0.021015,"66":0.01401,"67":0.007005,"68":0.119085,"69":0.021015,"70":0.035025,"71":0.553395,"72":1.61115,"73":0.021015,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.01401,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.007005,"57":0.007005,"58":0.007005,"60":0,"62":0,"63":0.007005,"64":0.287205,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.007005,"10":0.007005,"11":0.01401,"12":0.04203,"13":0.889635,_:"0","3.1":0,"3.2":0,"5.1":0.007005,"6.1":0,"7.1":0,"9.1":0.007005,"10.1":0.02802,"11.1":0.07005,"12.1":0.161115},G:{"8":0.00060841652495749,"3.2":0.00060841652495749,"4.0-4.1":0.001216833049915,"4.2-4.3":0,"5.0-5.1":0.0036504991497449,"6.0-6.1":0.0018252495748725,"7.0-7.1":0.0048673321996599,"8.1-8.4":0.0091262478743623,"9.0-9.2":0.0079094148244473,"9.3":0.075443649094728,"10.0-10.2":0.023728244473342,"10.3":0.083353063919176,"11.0-11.2":0.066925817745324,"11.3-11.4":0.11377389016705,"12.0-12.1":0.15332096428929,"12.2-12.4":0.91627528658598,"13.0-13.1":0.42345790137041,"13.2":0.17826604181254,"13.3":4.0179827308192},I:{"3":0.00015148221343874,"4":0.0015148221343874,_:"76","2.1":0,"2.2":0.00045444664031621,"2.3":0.00015148221343874,"4.1":0.0025751976284585,"4.2-4.3":0.066955138339921,"4.4":0,"4.4.3-4.4.4":0.04317243083004},B:{"12":0.007005,"13":0,"14":0.007005,"15":0.01401,"16":0.01401,"17":0.05604,"18":0.72852,_:"79"},A:{"6":0,"7":0,"8":0.058441714285714,"9":0.0073052142857143,"10":0.0073052142857143,"11":0.43831285714286,"5.5":0},P:{"4":0.091587430939227,"5.0-5.4":0,"6.2-6.4":0.01017638121547,"7.2-7.4":0.091587430939227,"8.2":0.01017638121547,"9.2":0.081411049723757,"10.1":1.5366335635359},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.032945},J:{"7":0,"10":0.002995},R:{_:"0"},M:{"0":0.086855},O:{"0":0.1198},Q:{"1.2":0.002995},S:{"2.5":0},H:{"0":0.1275962628866},L:{"0":41.22972}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BS.js b/assets/node_modules/caniuse-lite/data/regions/BS.js
deleted file mode 100644
index ef41f0a..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BS.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.004467,"29":0,"30":0,"31":0,"32":0,"33":0.004467,"34":0,"35":0,"36":0.004467,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.004467,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.075939,"50":0,"51":0,"52":0,"53":0.004467,"54":0,"55":0,"56":0,"57":0,"58":0.004467,"59":0.004467,"60":0,"61":0,"62":0.013401,"63":0.102741,"64":0,"65":0.035736,"66":0.013401,"67":0.049137,"68":0.004467,"69":0.084873,"70":0.008934,"71":0.035736,"72":0.026802,"73":0.022335,"74":0.031269,"75":0.049137,"76":0.294822,"77":0.120609,"78":0.361827,"79":9.487908,"80":0.013401,"81":0.004467,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.022335,"22":0.004467,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.013401,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.026802,"49":0,"50":0,"51":0,"52":0.008934,"53":0,"54":0,"55":0,"56":0.004467,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0.004467,"64":0,"65":0,"66":0,"67":0,"68":0.058071,"69":0.004467,"70":0.008934,"71":0.406497,"72":0.598578,"73":0.004467,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.004467,"9":0.004467,"10":0.008934,"11":0.004467,"12":0.067005,"13":1.961013,_:"0","3.1":0,"3.2":0,"5.1":0.017868,"6.1":0,"7.1":0,"9.1":0.008934,"10.1":0.04467,"11.1":0.111675,"12.1":0.201015},G:{"8":0.0024570625187556,"3.2":0.0024570625187556,"4.0-4.1":0.0049141250375113,"4.2-4.3":0,"5.0-5.1":0.014742375112534,"6.0-6.1":0.0073711875562669,"7.0-7.1":0.019656500150045,"8.1-8.4":0.036855937781334,"9.0-9.2":0.031941812743823,"9.3":0.3046757523257,"10.0-10.2":0.095825438231469,"10.3":0.33661756506952,"11.0-11.2":0.27027687706312,"11.3-11.4":0.4594706910073,"12.0-12.1":0.61917975472642,"12.2-12.4":3.700336153246,"13.0-13.1":1.7101155130539,"13.2":0.7199193179954,"13.3":16.226440873862},I:{"3":0.00089404216073781,"4":0.0089404216073781,_:"76","2.1":0,"2.2":0.0026821264822134,"2.3":0.00089404216073781,"4.1":0.015198716732543,"4.2-4.3":0.39516663504611,"4.4":0,"4.4.3-4.4.4":0.25480201581028},B:{"12":0.008934,"13":0.071472,"14":0.017868,"15":0.080406,"16":0.080406,"17":0.165279,"18":2.179896,_:"79"},A:{"6":0,"7":0,"8":0.008934,"9":0,"10":0.008934,"11":0.911268,"5.5":0},P:{"4":0.13622037768817,"5.0-5.4":0.031435471774194,"6.2-6.4":0.031435471774194,"7.2-7.4":0.29339773655914,"8.2":0.031435471774194,"9.2":0.53440302016129,"10.1":6.5490566196237},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.022132},J:{"7":0,"10":0.005533},R:{_:"0"},M:{"0":0.121726},O:{"0":0.094061},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.052382869415808},L:{"0":44.984175}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BT.js b/assets/node_modules/caniuse-lite/data/regions/BT.js
deleted file mode 100644
index e7d3048..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BT.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0.005098,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.002549,"32":0,"33":0,"34":0,"35":0,"36":0.005098,"37":0,"38":0,"39":0,"40":0.005098,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.002549,"47":0,"48":0,"49":0.010196,"50":0.002549,"51":0,"52":0,"53":0.002549,"54":0,"55":0.002549,"56":0,"57":0,"58":0.002549,"59":0,"60":0.010196,"61":0.007647,"62":0.005098,"63":0.028039,"64":0.002549,"65":0.002549,"66":0.002549,"67":0.017843,"68":0.002549,"69":0.096862,"70":0.010196,"71":0.007647,"72":0.005098,"73":0.007647,"74":0.033137,"75":0.02549,"76":0.017843,"77":0.035686,"78":0.089215,"79":4.695258,"80":0.022941,"81":0.028039,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.002549,"44":0,"45":0,"46":0,"47":0.005098,"48":0.002549,"49":0,"50":0,"51":0,"52":0.002549,"53":0.007647,"54":0,"55":0.005098,"56":0.005098,"57":0,"58":0,"59":0,"60":0.005098,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0.028039,"69":0.002549,"70":0.007647,"71":0.129999,"72":0.231959,"73":0.030588,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0.002549,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.020392,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005098,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.002549,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.002549,"12":0.005098,"13":0.259998,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0.007647,"11.1":0.007647,"12.1":0.020392},G:{"8":0.0010186195858758,"3.2":0.0010186195858758,"4.0-4.1":0.0020372391717515,"4.2-4.3":0,"5.0-5.1":0.0061117175152546,"6.0-6.1":0.0030558587576273,"7.0-7.1":0.0081489566870061,"8.1-8.4":0.015279293788136,"9.0-9.2":0.013242054616385,"9.3":0.12630882864859,"10.0-10.2":0.039726163849155,"10.3":0.13955088326498,"11.0-11.2":0.11204815444633,"11.3-11.4":0.19048186255877,"12.0-12.1":0.25669213564069,"12.2-12.4":1.5340410963289,"13.0-13.1":0.70895923176953,"13.2":0.2984555386616,"13.3":6.7269637451235},I:{"3":0.00022501185770751,"4":0.0022501185770751,_:"76","2.1":0,"2.2":0.00067503557312253,"2.3":0.00022501185770751,"4.1":0.0038252015810277,"4.2-4.3":0.099455241106719,"4.4":0,"4.4.3-4.4.4":0.06412837944664},B:{"12":0.007647,"13":0.005098,"14":0.002549,"15":0.005098,"16":0.005098,"17":0.022941,"18":0.145293,_:"79"},A:{"6":0,"7":0,"8":0.010196,"9":0,"10":0,"11":0.048431,"5.5":0},P:{"4":2.5797143025719,"5.0-5.4":0.081250844175492,"6.2-6.4":0.16250168835098,"7.2-7.4":1.0156355521936,"8.2":0.19297075491679,"9.2":0.72110124205749,"10.1":1.9601766157337},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.081961},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.104314},O:{"0":3.807461},Q:{"1.2":0.044706},S:{"2.5":0},H:{"0":1.389662709622},L:{"0":67.992783}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BW.js b/assets/node_modules/caniuse-lite/data/regions/BW.js
deleted file mode 100644
index c115c4c..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BW.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.04228,"29":0.00604,"30":0.00604,"31":0,"32":0,"33":0.00604,"34":0.01812,"35":0,"36":0.01208,"37":0.01208,"38":0.00604,"39":0,"40":0.0604,"41":0.00604,"42":0.01208,"43":0.03624,"44":0.00604,"45":0.01208,"46":0.01208,"47":0,"48":0.00604,"49":0.13892,"50":0.00604,"51":0.00604,"52":0.00604,"53":0.00604,"54":0,"55":0.00604,"56":0.00604,"57":0.00604,"58":0.0302,"59":0,"60":0.03624,"61":0.01208,"62":0.01208,"63":0.22952,"64":0.00604,"65":0.22348,"66":0.01812,"67":0.07852,"68":0.04228,"69":0.22952,"70":0.0302,"71":0.04228,"72":0.0604,"73":0.07248,"74":0.16912,"75":0.09664,"76":0.24764,"77":0.39864,"78":0.53152,"79":16.52544,"80":0.02416,"81":0.07248,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0.01208,"19":0,"20":0,"21":0.00604,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.00604,"30":0,"31":0,"32":0.01208,"33":0.00604,"34":0.00604,"35":0.00604,"36":0.00604,"37":0.00604,"38":0.00604,"39":0.00604,"40":0.01208,"41":0,"42":0,"43":0.08456,"44":0.01208,"45":0.00604,"46":0,"47":0.05436,"48":0.0302,"49":0.0906,"50":0.00604,"51":0.00604,"52":0.07248,"53":0,"54":0.00604,"55":0,"56":0.10872,"57":0,"58":0,"59":0,"60":0.04228,"61":0.00604,"62":0.00604,"63":0,"64":0.0302,"65":0.00604,"66":0.05436,"67":0.01812,"68":0.30804,"69":0.02416,"70":0.06644,"71":0.80936,"72":2.82068,"73":0.19932,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0.00604,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.00604,"34":0,"35":0,"36":0.00604,"37":0,"38":0,"39":0,"40":0.00604,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.0302,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.00604,"54":0,"55":0,"56":0.01208,"57":0,"58":0.00604,"60":0.01812,"62":0.00604,"63":0.01208,"64":0.01812,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.01208},E:{"4":0,"5":0,"6":0,"7":0,"8":0.56776,"9":0.00604,"10":0.01812,"11":0.04832,"12":0.05436,"13":1.64892,_:"0","3.1":0,"3.2":0,"5.1":0.36844,"6.1":0,"7.1":0,"9.1":0.02416,"10.1":0.06644,"11.1":0.13892,"12.1":0.41072},G:{"8":0.00071445433630089,"3.2":0.00071445433630089,"4.0-4.1":0.0014289086726018,"4.2-4.3":0,"5.0-5.1":0.0042867260178053,"6.0-6.1":0.0021433630089027,"7.0-7.1":0.0057156346904071,"8.1-8.4":0.010716815044513,"9.0-9.2":0.0092879063719116,"9.3":0.08859233770131,"10.0-10.2":0.027863719115735,"10.3":0.097880244073222,"11.0-11.2":0.078589976993098,"11.3-11.4":0.13360296088827,"12.0-12.1":0.18004249274782,"12.2-12.4":1.0759682304691,"13.0-13.1":0.49726021806542,"13.2":0.20933512053616,"13.3":4.7182564369311},I:{"3":0.00077602108036891,"4":0.0077602108036891,_:"76","2.1":0,"2.2":0.0023280632411067,"2.3":0.00077602108036891,"4.1":0.013192358366271,"4.2-4.3":0.34300131752306,"4.4":0,"4.4.3-4.4.4":0.22116600790514},B:{"12":0.10268,"13":0.16912,"14":0.07248,"15":0.10872,"16":0.08456,"17":1.40732,"18":1.68516,_:"79"},A:{"6":0.018721771217712,"7":0.0062405904059041,"8":0.049924723247232,"9":0.018721771217712,"10":0.056165313653137,"11":1.5414258302583,"5.5":0},P:{"4":0.47834579439252,"5.0-5.4":0.020355140186916,"6.2-6.4":0.040710280373832,"7.2-7.4":0.25443925233645,"8.2":0.11195327102804,"9.2":0.16284112149533,"10.1":2.1678224299065},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01188,"11":0.09504},J:{"7":0,"10":0.06732},R:{_:"0"},M:{"0":0.19008},O:{"0":0.96624},Q:{"1.2":0.05148},S:{"2.5":0.00396},H:{"0":1.6083519587629},L:{"0":47.42712}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BY.js b/assets/node_modules/caniuse-lite/data/regions/BY.js
deleted file mode 100644
index e940984..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BY.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.007389,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.029556,"37":0.007389,"38":0.014778,"39":0,"40":0.044334,"41":0,"42":0,"43":0,"44":0,"45":0.014778,"46":0,"47":0,"48":0,"49":0.598509,"50":0.007389,"51":0.014778,"52":0,"53":0.014778,"54":0,"55":0.007389,"56":0.022167,"57":0.022167,"58":0.066501,"59":0.140391,"60":0.007389,"61":0.051723,"62":0.014778,"63":0.103446,"64":0.014778,"65":0.044334,"66":0.036945,"67":0.029556,"68":0.059112,"69":0.059112,"70":0.081279,"71":0.155169,"72":0.199503,"73":0.192114,"74":0.133002,"75":0.184725,"76":0.22167,"77":0.229059,"78":0.532008,"79":33.087942,"80":0.029556,"81":0.059112,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.007389,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0.007389,"28":0.007389,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.007389,"48":0.007389,"49":0,"50":0.066501,"51":0.066501,"52":0.288171,"53":0.014778,"54":0.051723,"55":0.007389,"56":0.044334,"57":0.036945,"58":0.133002,"59":0.007389,"60":0.029556,"61":0.014778,"62":0.022167,"63":0.029556,"64":0.036945,"65":0.059112,"66":0.066501,"67":0.014778,"68":0.118224,"69":0.051723,"70":0.044334,"71":0.650232,"72":1.891584,"73":0.036945,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0.007389,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.007389,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.007389,"32":0,"33":0,"34":0.007389,"35":0.007389,"36":0.177336,"37":0.022167,"38":0.022167,"39":0,"40":0,"41":0,"42":0.007389,"43":0.007389,"44":0,"45":0.014778,"46":0.066501,"47":0,"48":0,"49":0,"50":0,"51":0.007389,"52":0,"53":0.007389,"54":0.007389,"55":0.014778,"56":0.014778,"57":0.022167,"58":0.007389,"60":0.014778,"62":0.014778,"63":0.022167,"64":0.14778,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0.007389,"12.1":0.036945},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.007389,"12":0.125613,"13":1.721637,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.007389,"10.1":0.022167,"11.1":0.066501,"12.1":0.399006},G:{"8":0.00059597529258778,"3.2":0.00059597529258778,"4.0-4.1":0.0011919505851756,"4.2-4.3":0,"5.0-5.1":0.0035758517555267,"6.0-6.1":0.0017879258777633,"7.0-7.1":0.0047678023407022,"8.1-8.4":0.0089396293888166,"9.0-9.2":0.0077476788036411,"9.3":0.073900936280884,"10.0-10.2":0.023243036410923,"10.3":0.081648615084525,"11.0-11.2":0.065557282184655,"11.3-11.4":0.11144737971391,"12.0-12.1":0.15018577373212,"12.2-12.4":0.89753879063719,"13.0-13.1":0.41479880364109,"13.2":0.17462076072822,"13.3":3.9358208322497},I:{"3":0.00023605401844532,"4":0.0023605401844532,_:"76","2.1":0,"2.2":0.00070816205533597,"2.3":0.00023605401844532,"4.1":0.0040129183135705,"4.2-4.3":0.10433587615283,"4.4":0,"4.4.3-4.4.4":0.067275395256917},B:{"12":0,"13":0,"14":0.014778,"15":0.029556,"16":0.007389,"17":0.051723,"18":0.59112,_:"79"},A:{"6":0.007389,"7":0.007389,"8":0.059112,"9":0.007389,"10":0.014778,"11":0.266004,"5.5":0},P:{"4":0.081423286624204,"5.0-5.4":0.010177910828025,"6.2-6.4":0.010177910828025,"7.2-7.4":0.020355821656051,"8.2":0.020355821656051,"9.2":0.081423286624204,"10.1":0.77352122292994},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.044387},J:{"7":0,"10":0.007833},R:{_:"0"},M:{"0":0.062664},O:{"0":0.195825},Q:{"1.2":0.013055},S:{"2.5":0},H:{"0":0.74652168728522},L:{"0":33.694284}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/BZ.js b/assets/node_modules/caniuse-lite/data/regions/BZ.js
deleted file mode 100644
index cfb8301..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/BZ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0.055088,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.005008,"36":0.005008,"37":0.005008,"38":0.015024,"39":0.005008,"40":0.005008,"41":0.005008,"42":0.160256,"43":0.005008,"44":0.005008,"45":0.005008,"46":0.010016,"47":0.005008,"48":0.005008,"49":0.045072,"50":0.010016,"51":0.010016,"52":0.005008,"53":0.015024,"54":0.010016,"55":0.070112,"56":0.005008,"57":0.010016,"58":0.010016,"59":0.010016,"60":0.015024,"61":0.020032,"62":0.010016,"63":0.035056,"64":0.010016,"65":0.015024,"66":0.005008,"67":0.020032,"68":0.010016,"69":0.030048,"70":0.040064,"71":0.095152,"72":0.010016,"73":0.07512,"74":0.030048,"75":0.055088,"76":0.055088,"77":0.230368,"78":0.310496,"79":12.675248,"80":0.02504,"81":0,"82":0},C:{"2":0,"3":0.040064,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.005008,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.005008,"21":0.010016,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.005008,"41":0,"42":0.005008,"43":0.005008,"44":0,"45":0.005008,"46":0,"47":0.005008,"48":0.005008,"49":0.005008,"50":0.005008,"51":0.010016,"52":0.020032,"53":0.010016,"54":0.010016,"55":0.010016,"56":0.010016,"57":0.010016,"58":0.005008,"59":0.005008,"60":0.010016,"61":0,"62":0,"63":0,"64":0.055088,"65":0.005008,"66":0.010016,"67":0.02504,"68":0.15024,"69":0.070112,"70":0.02504,"71":0.671072,"72":1.567504,"73":0.030048,"74":0,"3.5":0.085136,"3.6":0},F:{"9":0,"11":0,"12":0.005008,"15":0.005008,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.005008,"33":0,"34":0,"35":0,"36":0,"37":0.015024,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005008,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.015024,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.02504},E:{"4":0,"5":0,"6":0.005008,"7":0,"8":0.005008,"9":0.005008,"10":0.005008,"11":0.17528,"12":0.035056,"13":2.018224,_:"0","3.1":0,"3.2":0,"5.1":0.440704,"6.1":0,"7.1":0,"9.1":0.030048,"10.1":0.035056,"11.1":0.065104,"12.1":0.135216},G:{"8":0.0017174288286486,"3.2":0.0017174288286486,"4.0-4.1":0.0034348576572972,"4.2-4.3":0,"5.0-5.1":0.010304572971892,"6.0-6.1":0.0051522864859458,"7.0-7.1":0.013739430629189,"8.1-8.4":0.025761432429729,"9.0-9.2":0.022326574772432,"9.3":0.21296117475243,"10.0-10.2":0.066979724317295,"10.3":0.23528774952486,"11.0-11.2":0.18891717115135,"11.3-11.4":0.32115919095729,"12.0-12.1":0.43279206481945,"12.2-12.4":2.5864478159448,"13.0-13.1":1.1953304647394,"13.2":0.50320664679404,"13.3":11.341899984395},I:{"3":0.0015764110671937,"4":0.015764110671937,_:"76","2.1":0,"2.2":0.004729233201581,"2.3":0.0015764110671937,"4.1":0.026798988142292,"4.2-4.3":0.6967736916996,"4.4":0,"4.4.3-4.4.4":0.4492771541502},B:{"12":0.010016,"13":0.015024,"14":0.020032,"15":0.035056,"16":0.020032,"17":0.135216,"18":1.607568,_:"79"},A:{"6":0,"7":0,"8":0.030048,"9":0.030048,"10":0.010016,"11":0.265424,"5.5":0},P:{"4":0.37748148148148,"5.0-5.4":0,"6.2-6.4":0.010785185185185,"7.2-7.4":0.12942222222222,"8.2":0.064711111111111,"9.2":0.19413333333333,"10.1":3.4512592592593},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.048493714285714,"11":0.036370285714286},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.264576},O:{"0":0.419328},Q:{"1.2":0.004992},S:{"2.5":0},H:{"0":0.28829228865979},L:{"0":50.717696}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CA.js b/assets/node_modules/caniuse-lite/data/regions/CA.js
deleted file mode 100644
index d9cb713..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CA.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.011234,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.005617,"35":0,"36":0,"37":0,"38":0.005617,"39":0,"40":0.011234,"41":0.005617,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.005617,"48":0.050553,"49":0.269616,"50":0,"51":0.005617,"52":0,"53":0.016851,"54":0.005617,"55":0.005617,"56":0.011234,"57":0.011234,"58":0.011234,"59":0.016851,"60":0.011234,"61":0.011234,"62":0.011234,"63":0.129191,"64":0.011234,"65":0.044936,"66":0.016851,"67":0.050553,"68":0.022468,"69":0.061787,"70":0.05617,"71":0.05617,"72":0.061787,"73":0.095489,"74":0.084255,"75":0.157276,"76":0.162893,"77":0.190978,"78":0.780763,"79":15.424282,"80":0.033702,"81":0.011234,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.005617,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.044936,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.005617,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.005617,"39":0,"40":0,"41":0,"42":0,"43":0.005617,"44":0.016851,"45":0.011234,"46":0,"47":0.005617,"48":0.028085,"49":0.011234,"50":0.011234,"51":0.005617,"52":0.061787,"53":0,"54":0.005617,"55":0,"56":0.011234,"57":0.005617,"58":0.033702,"59":0.022468,"60":0.016851,"61":0.016851,"62":0.005617,"63":0.005617,"64":0.011234,"65":0.033702,"66":0.016851,"67":0.016851,"68":0.22468,"69":0.028085,"70":0.044936,"71":0.685274,"72":1.527824,"73":0.011234,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005617,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.011234,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.011234,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0.005617,"6":0,"7":0,"8":0.016851,"9":0.011234,"10":0.011234,"11":0.028085,"12":0.084255,"13":3.061265,_:"0","3.1":0,"3.2":0,"5.1":0.016851,"6.1":0.005617,"7.1":0,"9.1":0.044936,"10.1":0.106723,"11.1":0.190978,"12.1":0.348254},G:{"8":0.0035401561468441,"3.2":0.0035401561468441,"4.0-4.1":0.0070803122936881,"4.2-4.3":0,"5.0-5.1":0.021240936881064,"6.0-6.1":0.010620468440532,"7.0-7.1":0.028321249174752,"8.1-8.4":0.053102342202661,"9.0-9.2":0.046022029908973,"9.3":0.43897936220866,"10.0-10.2":0.13806608972692,"10.3":0.48500139211764,"11.0-11.2":0.38941717615285,"11.3-11.4":0.66200919945984,"12.0-12.1":0.8921193490047,"12.2-12.4":5.3314751571471,"13.0-13.1":2.4639486782035,"13.2":1.0372657510253,"13.3":23.379191193758},I:{"3":0.00059849143610013,"4":0.0059849143610013,_:"76","2.1":0,"2.2":0.0017954743083004,"2.3":0.00059849143610013,"4.1":0.010174354413702,"4.2-4.3":0.26453321475626,"4.4":0,"4.4.3-4.4.4":0.17057005928854},B:{"12":0.005617,"13":0.005617,"14":0.011234,"15":0.011234,"16":0.044936,"17":0.095489,"18":2.2468,_:"79"},A:{"6":0.057282277227723,"7":0,"8":0.028641138613861,"9":0.028641138613861,"10":0.011456455445545,"11":1.609631990099,"5.5":0},P:{"4":0.140073375,"5.0-5.4":0.010774875,"6.2-6.4":0,"7.2-7.4":0.032324625,"8.2":0.010774875,"9.2":0.10774875,"10.1":3.307886625},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.008766},J:{"7":0,"10":0.039447},R:{_:"0"},M:{"0":0.311193},O:{"0":0.245448},Q:{"1.2":0.035064},S:{"2.5":0.004383},H:{"0":0.11203761340206},L:{"0":27.081412}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CD.js b/assets/node_modules/caniuse-lite/data/regions/CD.js
deleted file mode 100644
index 560235e..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CD.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"11":0.003782,"25":0.003782,"26":0.011346,"29":0.003782,"33":0.024583,"34":0.001891,"36":0.007564,"38":0.007564,"40":0.030256,"43":0.035929,"49":0.085095,"50":0.009455,"51":0.001891,"53":0.003782,"55":0.013237,"56":0.015128,"57":0.003782,"58":0.005673,"59":0.001891,"60":0.005673,"62":0.001891,"63":0.22692,"64":0.007564,"65":0.051057,"66":0.001891,"67":0.01891,"69":0.24583,"70":0.01891,"71":0.011346,"72":0.003782,"73":0.01891,"74":0.032147,"75":0.034038,"76":0.03782,"77":0.083204,"78":0.251503,"79":5.493355,"80":0.013237,"81":0.001891,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 27 28 30 31 32 35 37 39 41 42 44 45 46 47 48 52 54 61 68 82"},C:{"3":0.003782,"4":0.003782,"24":0.015128,"27":0.003782,"30":0.005673,"31":0.001891,"32":0.003782,"33":0.001891,"37":0.001891,"38":0.005673,"39":0.003782,"41":0.003782,"43":0.024583,"45":0.007564,"46":0.003782,"47":0.011346,"48":0.026474,"49":0.003782,"50":0.001891,"51":0.003782,"52":0.049166,"56":0.007564,"57":0.009455,"58":0.007564,"59":0.003782,"60":0.024583,"61":0.003782,"62":0.001891,"63":0.001891,"64":0.001891,"65":0.003782,"66":0.028365,"67":0.007564,"68":0.185318,"69":0.015128,"70":0.088877,"71":0.894443,"72":1.87209,"73":0.039711,_:"2 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 28 29 34 35 36 40 42 44 53 54 55 74 3.5 3.6"},F:{"18":0.001891,"20":0.005673,"22":0.001891,"30":0.001891,"34":0.005673,"36":0.01891,"37":0.009455,"40":0.001891,"42":0.013237,"46":0.001891,"48":0.001891,"51":0.001891,"53":0.005673,"54":0.001891,"55":0.001891,"57":0.003782,"58":0.001891,"60":0.001891,"62":0.015128,"63":0.024583,"64":0.020801,_:"9 11 12 15 16 17 19 21 23 24 25 26 27 28 29 31 32 33 35 38 39 41 43 44 45 47 49 50 52 56 9.5-9.6 10.5 10.6 11.1 11.5","10.0-10.1":0,"11.6":0.001891,"12.1":0.001891},E:{"4":0,"7":0.001891,"8":0.001891,"9":0.007564,"10":0.03782,"11":0.153171,"12":0.17019,"13":0.627812,_:"0 5 6 3.1 3.2 6.1 7.1","5.1":1.741611,"9.1":0.028365,"10.1":0.071858,"11.1":0.155062,"12.1":0.230702},G:{"8":0.00024739871961588,"3.2":0.00024739871961588,"4.0-4.1":0.00049479743923177,"4.2-4.3":0,"5.0-5.1":0.0014843923176953,"6.0-6.1":0.00074219615884765,"7.0-7.1":0.0019791897569271,"8.1-8.4":0.0037109807942383,"9.0-9.2":0.0032161833550065,"9.3":0.03067744123237,"10.0-10.2":0.0096485500650195,"10.3":0.033893624587376,"11.0-11.2":0.027213859157747,"11.3-11.4":0.04626356056817,"12.0-12.1":0.062344477343203,"12.2-12.4":0.37258247174152,"13.0-13.1":0.17218950885266,"13.2":0.072487824847454,"13.3":1.6338211443433},I:{"3":0.00076923320158103,"4":0.0076923320158103,_:"76","2.1":0,"2.2":0.0023076996047431,"2.3":0.00076923320158103,"4.1":0.013076964426877,"4.2-4.3":0.34000107509881,"4.4":0,"4.4.3-4.4.4":0.21923146245059},B:{"12":0.092659,"13":0.030256,"14":0.066185,"15":0.066185,"16":0.03782,"17":0.17019,"18":0.659959,_:"79"},A:{"8":0.25035169716088,"10":0.10465521766562,"11":0.2954970851735,_:"6 7 9 5.5"},P:{"4":0.35476875,"5.0-5.4":0.0608175,"6.2-6.4":0.07095375,"7.2-7.4":0.1419075,"8.2":0.0202725,"9.2":0.2229975,"10.1":0.78049125},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.0210834,"11":0.0843336},J:{"7":0,"10":0.056763},R:{_:"0"},M:{"0":0.283815},O:{"0":1.524492},Q:{"1.2":0.08109},S:{"2.5":0.048654},H:{"0":49.778169340206},L:{"0":23.155399}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CF.js b/assets/node_modules/caniuse-lite/data/regions/CF.js
deleted file mode 100644
index 842d64e..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CF.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.008724,"27":0,"28":0,"29":0,"30":0,"31":0.004362,"32":0,"33":0,"34":0,"35":0.004362,"36":0,"37":0,"38":0,"39":0,"40":0.002181,"41":0,"42":0,"43":0.006543,"44":0,"45":0,"46":0.004362,"47":0,"48":0.002181,"49":0.013086,"50":0.004362,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0.002181,"58":0.006543,"59":0,"60":0,"61":0,"62":0.004362,"63":0.157032,"64":0.002181,"65":0.002181,"66":0,"67":0,"68":0.010905,"69":0.004362,"70":0.002181,"71":0.004362,"72":0,"73":0,"74":0.004362,"75":0,"76":0.004362,"77":0.017448,"78":0.032715,"79":1.5267,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.002181,"26":0,"27":0,"28":0,"29":0,"30":0.002181,"31":0,"32":0,"33":0,"34":0,"35":0.008724,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0.002181,"42":0,"43":0.002181,"44":0.004362,"45":0.002181,"46":0,"47":0.006543,"48":0.002181,"49":0,"50":0,"51":0,"52":0.034896,"53":0,"54":0,"55":0.002181,"56":0.002181,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0.006543,"63":0,"64":0,"65":0.002181,"66":0,"67":0.006543,"68":0.551793,"69":0.008724,"70":0.013086,"71":0.242091,"72":0.453648,"73":0.006543,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0.002181,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.015267,"33":0,"34":0,"35":0,"36":0,"37":0.013086,"38":0,"39":0.002181,"40":0,"41":0,"42":0.006543,"43":0,"44":0.002181,"45":0.023991,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.002181,"53":0.02181,"54":0.013086,"55":0,"56":0.004362,"57":0.013086,"58":0,"60":0.002181,"62":0.013086,"63":0.002181,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.019629},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.002181,"12":0,"13":0.041439,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0.004362,"11.1":0,"12.1":0.008724},G:{"8":0.00027935980794238,"3.2":0.00027935980794238,"4.0-4.1":0.00055871961588477,"4.2-4.3":0,"5.0-5.1":0.0016761588476543,"6.0-6.1":0.00083807942382715,"7.0-7.1":0.0022348784635391,"8.1-8.4":0.0041903971191357,"9.0-9.2":0.003631677503251,"9.3":0.034640616184855,"10.0-10.2":0.010895032509753,"10.3":0.038272293688106,"11.0-11.2":0.030729578873662,"11.3-11.4":0.052240284085226,"12.0-12.1":0.07039867160148,"12.2-12.4":0.42071587076123,"13.0-13.1":0.1944344263279,"13.2":0.081852423727118,"13.3":1.8448921716515},I:{"3":0.00088799868247694,"4":0.0088799868247694,_:"76","2.1":0,"2.2":0.0026639960474308,"2.3":0.00088799868247694,"4.1":0.015095977602108,"4.2-4.3":0.39249541765481,"4.4":0,"4.4.3-4.4.4":0.25307962450593},B:{"12":0.078516,"13":0.019629,"14":0.006543,"15":0.071973,"16":0.013086,"17":0.028353,"18":0.089421,_:"79"},A:{"6":0,"7":0,"8":0.045801,"9":0,"10":0.004362,"11":0.106869,"5.5":0},P:{"4":0.53920387070376,"5.0-5.4":0.020347315875614,"6.2-6.4":0.10173657937807,"7.2-7.4":0.081389263502455,"8.2":0.010173657937807,"9.2":0.39677265957447,"10.1":5.005439705401},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.07819},J:{"7":0,"10":0.007819},R:{_:"0"},M:{"0":2.306605},O:{"0":1.40742},Q:{"1.2":0.007819},S:{"2.5":0.046914},H:{"0":9.8823696134021},L:{"0":68.028258}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CG.js b/assets/node_modules/caniuse-lite/data/regions/CG.js
deleted file mode 100644
index 93ab999..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CG.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"25":0.099816,"30":0.016636,"33":0.029113,"36":0.008318,"40":0.187155,"43":0.020795,"47":0.008318,"49":0.066544,"50":0.004159,"53":0.004159,"56":0.024954,"57":0.045749,"58":0.012477,"59":0.008318,"62":0.020795,"63":0.544829,"64":0.008318,"65":0.212109,"66":0.174678,"67":0.286971,"69":0.232904,"70":0.012477,"71":0.012477,"72":1.031432,"73":0.004159,"74":0.128929,"75":0.066544,"76":0.16636,"77":0.811005,"78":0.341038,"79":16.103648,"80":0.016636,"81":0.004159,_:"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 31 32 34 35 37 38 39 41 42 44 45 46 48 51 52 54 55 60 61 68 82"},C:{"4":0.004159,"5":0.004159,"31":0.008318,"38":0.024954,"39":0.345197,"43":0.008318,"44":0.004159,"45":0.008318,"47":0.012477,"48":0.008318,"50":0.008318,"52":0.062385,"56":0.153883,"58":0.116452,"60":0.054067,"61":0.270335,"62":0.004159,"63":0.008318,"65":0.004159,"66":0.045749,"68":0.345197,"69":0.087339,"70":0.511557,"71":1.879868,"72":3.206589,"73":0.066544,"74":0.008318,_:"2 3 6 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 37 40 41 42 46 49 51 53 54 55 57 59 64 67 3.5 3.6"},F:{"11":0.004159,"36":0.008318,"37":0.012477,"40":0.004159,"42":0.004159,"63":0.008318,"64":0.020795,_:"9 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 38 39 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.008318},E:{"4":0,"8":0.04159,"11":0.428377,"12":0.020795,"13":0.295289,_:"0 5 6 7 9 10 3.1 3.2 6.1","5.1":0.241222,"7.1":0.004159,"9.1":0.008318,"10.1":0.20795,"11.1":0.079021,"12.1":0.162201},G:{"8":0.00039555436630989,"3.2":0.00039555436630989,"4.0-4.1":0.00079110873261979,"4.2-4.3":0,"5.0-5.1":0.0023733261978594,"6.0-6.1":0.0011866630989297,"7.0-7.1":0.0031644349304791,"8.1-8.4":0.0059333154946484,"9.0-9.2":0.0051422067620286,"9.3":0.049048741422427,"10.0-10.2":0.015426620286086,"10.3":0.054190948184455,"11.0-11.2":0.043510980294088,"11.3-11.4":0.07396866649995,"12.0-12.1":0.099679700310093,"12.2-12.4":0.5957048756627,"13.0-13.1":0.27530583895169,"13.2":0.1158974293288,"13.3":2.6122410351105},I:{"3":0.0021009130434783,"4":0.021009130434783,_:"76","2.1":0,"2.2":0.0063027391304348,"2.3":0.0021009130434783,"4.1":0.03571552173913,"4.2-4.3":0.92860356521739,"4.4":0,"4.4.3-4.4.4":0.5987602173913},B:{"12":0.074862,"13":0.029113,"14":0.04159,"15":0.016636,"16":0.120611,"17":0.8318,"18":2.191793,_:"79"},A:{"8":0.212109,"10":0.058226,"11":1.243541,_:"6 7 9 5.5"},P:{"4":0.689304375,"5.0-5.4":0.072016875,"6.2-6.4":0.051440625,"7.2-7.4":0.16461,"8.2":0.0411525,"9.2":0.411525,"10.1":1.286015625},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.0210834,"11":0.093456},J:{"7":0,"10":0.163548},R:{_:"0"},M:{"0":0.192753},O:{"0":1.86912},Q:{"1.2":0.151866},S:{"2.5":0.280368},H:{"0":8.6653242216495},L:{"0":41.646085}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CH.js b/assets/node_modules/caniuse-lite/data/regions/CH.js
deleted file mode 100644
index 43d0a17..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CH.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.012094,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.006047,"35":0,"36":0,"37":0,"38":0.012094,"39":0,"40":0.006047,"41":0.012094,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.223739,"50":0,"51":0,"52":0,"53":0.012094,"54":0,"55":0.006047,"56":0.006047,"57":0.012094,"58":0.006047,"59":0.006047,"60":0.066517,"61":0.006047,"62":0.006047,"63":0.030235,"64":0.006047,"65":0.018141,"66":0.036282,"67":0.042329,"68":0.018141,"69":0.030235,"70":0.048376,"71":0.048376,"72":0.048376,"73":0.139081,"74":0.06047,"75":0.102799,"76":0.151175,"77":0.139081,"78":0.72564,"79":13.267118,"80":0.024188,"81":0.018141,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0.006047,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.078611,"22":0.006047,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.006047,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.006047,"46":0,"47":0.006047,"48":0.054423,"49":0,"50":0.006047,"51":0,"52":0.072564,"53":0.006047,"54":0.006047,"55":0,"56":0.018141,"57":0.012094,"58":0.012094,"59":0.012094,"60":0.090705,"61":0.012094,"62":0.012094,"63":0.012094,"64":0.012094,"65":0.042329,"66":0.042329,"67":0.018141,"68":0.526089,"69":0.048376,"70":0.108846,"71":1.499656,"72":3.20491,"73":0.024188,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.006047,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.006047,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.006047,"60":0,"62":0,"63":0.006047,"64":0.024188,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0.006047,"8":0.012094,"9":0.012094,"10":0.018141,"11":0.06047,"12":0.199551,"13":4.946446,_:"0","3.1":0,"3.2":0,"5.1":0.078611,"6.1":0.006047,"7.1":0,"9.1":0.06047,"10.1":0.187457,"11.1":0.368867,"12.1":0.743781},G:{"8":0.0032734842452736,"3.2":0.0032734842452736,"4.0-4.1":0.0065469684905472,"4.2-4.3":0,"5.0-5.1":0.019640905471641,"6.0-6.1":0.0098204527358207,"7.0-7.1":0.026187873962189,"8.1-8.4":0.049102263679104,"9.0-9.2":0.042555295188557,"9.3":0.40591204641392,"10.0-10.2":0.12766588556567,"10.3":0.44846734160248,"11.0-11.2":0.36008326698009,"11.3-11.4":0.61214155386616,"12.0-12.1":0.82491802980894,"12.2-12.4":4.929867273382,"13.0-13.1":2.2783450347104,"13.2":0.95913088386516,"13.3":21.618089955787},I:{"3":0.00027943873517787,"4":0.0027943873517787,_:"76","2.1":0,"2.2":0.0008383162055336,"2.3":0.00027943873517787,"4.1":0.0047504584980237,"4.2-4.3":0.12351192094862,"4.4":0,"4.4.3-4.4.4":0.079640039525692},B:{"12":0,"13":0.006047,"14":0.018141,"15":0.018141,"16":0.078611,"17":0.266068,"18":3.114205,_:"79"},A:{"6":0,"7":0,"8":0.0060617128953771,"9":0,"10":0.0060617128953771,"11":2.4792405742092,"5.5":0},P:{"4":0.15945921728972,"5.0-5.4":0.010630614485981,"6.2-6.4":0.010630614485981,"7.2-7.4":0.053153072429907,"8.2":0.031891843457944,"9.2":0.24450413317757,"10.1":3.7951293714953},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.011859},J:{"7":0,"10":0.003953},R:{_:"0"},M:{"0":0.478313},O:{"0":0.098825},Q:{"1.2":0.019765},S:{"2.5":0},H:{"0":0.16466758075601},L:{"0":23.877477}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CI.js b/assets/node_modules/caniuse-lite/data/regions/CI.js
deleted file mode 100644
index 24bdf20..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CI.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0.00469,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.00469,"30":0.00469,"31":0.00469,"32":0.00938,"33":0.00469,"34":0,"35":0,"36":0.00938,"37":0.00469,"38":0.00469,"39":0,"40":0.00469,"41":0,"42":0,"43":0.02345,"44":0,"45":0.00469,"46":0.00469,"47":0,"48":0.00469,"49":0.41272,"50":0.00469,"51":0.00469,"52":0,"53":0,"54":0,"55":0.00469,"56":0.00469,"57":0.00469,"58":0.00938,"59":0.00469,"60":0.00469,"61":0.00469,"62":0.01876,"63":0.10787,"64":0.01407,"65":0.05159,"66":0.01407,"67":0.08442,"68":0.01407,"69":0.26264,"70":0.03752,"71":0.03752,"72":0.03283,"73":0.07504,"74":0.13601,"75":0.17353,"76":0.12194,"77":0.34237,"78":0.33768,"79":12.07675,"80":0.01407,"81":0.03283,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.00469,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.00469,"29":0,"30":0,"31":0,"32":0.00938,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.00469,"44":0,"45":0.00469,"46":0.00469,"47":0.00938,"48":0.05159,"49":0.00469,"50":0,"51":0.00938,"52":0.0469,"53":0,"54":0,"55":0,"56":0.00938,"57":0.00469,"58":0,"59":0,"60":0.00938,"61":0,"62":0,"63":0.00469,"64":0.00469,"65":0.01407,"66":0.00938,"67":0.00469,"68":0.10318,"69":0.03283,"70":0.02814,"71":0.61439,"72":1.74468,"73":0.0469,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.00469,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.00469,"46":0.01876,"47":0,"48":0.00469,"49":0.00469,"50":0,"51":0,"52":0,"53":0.00469,"54":0,"55":0,"56":0,"57":0,"58":0.00469,"60":0.00938,"62":0,"63":0.02345,"64":0.01407,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.00938},E:{"4":0,"5":0,"6":0,"7":0.00469,"8":0.02345,"9":0,"10":0.00469,"11":0.06566,"12":0.07973,"13":0.74102,_:"0","3.1":0,"3.2":0,"5.1":0.52528,"6.1":0,"7.1":0,"9.1":0.03283,"10.1":0.05159,"11.1":0.06566,"12.1":0.22512},G:{"8":0.00069534960488146,"3.2":0.00069534960488146,"4.0-4.1":0.0013906992097629,"4.2-4.3":0,"5.0-5.1":0.0041720976292888,"6.0-6.1":0.0020860488146444,"7.0-7.1":0.0055627968390517,"8.1-8.4":0.010430244073222,"9.0-9.2":0.009039544863459,"9.3":0.086223351005302,"10.0-10.2":0.027118634590377,"10.3":0.095262895868761,"11.0-11.2":0.076488456536961,"11.3-11.4":0.13003037611283,"12.0-12.1":0.17522810043013,"12.2-12.4":1.0471965049515,"13.0-13.1":0.4839633249975,"13.2":0.20373743423027,"13.3":4.5920887906372},I:{"3":0.00063404479578393,"4":0.0063404479578393,_:"76","2.1":0,"2.2":0.0019021343873518,"2.3":0.00063404479578393,"4.1":0.010778761528327,"4.2-4.3":0.2802477997365,"4.4":0,"4.4.3-4.4.4":0.18070276679842},B:{"12":0.01407,"13":0.01407,"14":0.01876,"15":0.02345,"16":0.01407,"17":0.08442,"18":0.44086,_:"79"},A:{"6":0,"7":0,"8":0.024469565217391,"9":0,"10":0.0048939130434783,"11":0.08319652173913,"5.5":0},P:{"4":0.19538556338028,"5.0-5.4":0.020566901408451,"6.2-6.4":0.071984154929577,"7.2-7.4":0.13368485915493,"8.2":0.020566901408451,"9.2":0.22623591549296,"10.1":0.7712588028169},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.05841},J:{"7":0,"10":0.04248},R:{_:"0"},M:{"0":0.17523},O:{"0":0.57348},Q:{"1.2":0.03186},S:{"2.5":0.01062},H:{"0":6.2789290206186},L:{"0":58.23664}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CK.js b/assets/node_modules/caniuse-lite/data/regions/CK.js
deleted file mode 100644
index de4589e..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CK.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.28469,"50":0,"51":0,"52":0,"53":0.069139,"54":0,"55":0,"56":0,"57":0,"58":0.004067,"59":0,"60":0,"61":0,"62":0,"63":0.008134,"64":0,"65":0.012201,"66":0,"67":0.012201,"68":0,"69":0,"70":0,"71":0.004067,"72":0,"73":0.004067,"74":0.012201,"75":0.008134,"76":0.048804,"77":0.012201,"78":0.056938,"79":6.38519,"80":0.073206,"81":0.012201,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.004067,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.020335,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0.008134,"66":0,"67":0.008134,"68":0.08134,"69":0,"70":0.004067,"71":0.296891,"72":0.646653,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.032536,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.016268,"13":0.44737,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.004067,"10.1":0.012201,"11.1":0.032536,"12.1":0.126077},G:{"8":0.0031984026207862,"3.2":0.0031984026207862,"4.0-4.1":0.0063968052415725,"4.2-4.3":0,"5.0-5.1":0.019190415724717,"6.0-6.1":0.0095952078623587,"7.0-7.1":0.02558722096629,"8.1-8.4":0.047976039311794,"9.0-9.2":0.041579234070221,"9.3":0.39660192497749,"10.0-10.2":0.12473770221066,"10.3":0.43818115904771,"11.0-11.2":0.35182428828649,"11.3-11.4":0.59810129008703,"12.0-12.1":0.80599746043813,"12.2-12.4":4.8167943469041,"13.0-13.1":2.2260882240672,"13.2":0.93713196789037,"13.3":21.122250907672},I:{"3":0.00025568774703557,"4":0.0025568774703557,_:"76","2.1":0,"2.2":0.00076706324110672,"2.3":0.00025568774703557,"4.1":0.0043466916996047,"4.2-4.3":0.11301398418972,"4.4":0,"4.4.3-4.4.4":0.072871007905138},B:{"12":0.016268,"13":0.04067,"14":0.020335,"15":0.008134,"16":0.024402,"17":0.028469,"18":0.451437,_:"79"},A:{"6":0,"7":0,"8":6.368922,"9":0,"10":0,"11":0.170814,"5.5":0},P:{"4":0.23645050862069,"5.0-5.4":0.020560913793103,"6.2-6.4":0.10280456896552,"7.2-7.4":0.16448731034483,"8.2":0.071963198275862,"9.2":0.34953553448276,"10.1":4.9963020517241},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0.005933},R:{_:"0"},M:{"0":0.207655},O:{"0":0.628898},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.29208301718213},L:{"0":42.026573}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CL.js b/assets/node_modules/caniuse-lite/data/regions/CL.js
deleted file mode 100644
index fd6ac1f..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CL.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.005582,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.005582,"35":0,"36":0.005582,"37":0,"38":0.039074,"39":0,"40":0.011164,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005582,"47":0,"48":0,"49":0.284682,"50":0,"51":0.005582,"52":0,"53":0.033492,"54":0,"55":0.005582,"56":0.005582,"57":0.005582,"58":0.011164,"59":0.011164,"60":0.005582,"61":0.005582,"62":0.011164,"63":0.022328,"64":0.011164,"65":0.039074,"66":0.011164,"67":0.08373,"68":0.011164,"69":0.02791,"70":0.072566,"71":0.08373,"72":0.066984,"73":0.08373,"74":0.061402,"75":0.100476,"76":0.094894,"77":0.128386,"78":0.50238,"79":22.701994,"80":0.011164,"81":0.011164,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005582,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.016746,"48":0.022328,"49":0,"50":0,"51":0,"52":0.02791,"53":0,"54":0,"55":0,"56":0.005582,"57":0,"58":0.02791,"59":0,"60":0.011164,"61":0.005582,"62":0,"63":0.005582,"64":0.005582,"65":0.005582,"66":0.011164,"67":0.005582,"68":0.11164,"69":0.016746,"70":0.033492,"71":0.491216,"72":1.166638,"73":0.011164,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005582,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.005582,"50":0,"51":0,"52":0,"53":0.005582,"54":0,"55":0,"56":0,"57":0,"58":0.011164,"60":0,"62":0,"63":0.005582,"64":0.150714,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.005582,"9":0.005582,"10":0.005582,"11":0.050238,"12":0.133968,"13":1.434574,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.022328,"10.1":0.094894,"11.1":0.173042,"12.1":0.396322},G:{"8":0.00095236310893268,"3.2":0.00095236310893268,"4.0-4.1":0.0019047262178654,"4.2-4.3":0,"5.0-5.1":0.0057141786535961,"6.0-6.1":0.002857089326798,"7.0-7.1":0.0076189048714614,"8.1-8.4":0.01428544663399,"9.0-9.2":0.012380720416125,"9.3":0.11809302550765,"10.0-10.2":0.037142161248375,"10.3":0.13047374592378,"11.0-11.2":0.10475994198259,"11.3-11.4":0.17809190137041,"12.0-12.1":0.23999550345104,"12.2-12.4":1.4342588420526,"13.0-13.1":0.66284472381715,"13.2":0.27904239091728,"13.3":6.2894059713914},I:{"3":0.0001755652173913,"4":0.001755652173913,_:"76","2.1":0,"2.2":0.00052669565217391,"2.3":0.0001755652173913,"4.1":0.0029846086956522,"4.2-4.3":0.077599826086957,"4.4":0,"4.4.3-4.4.4":0.050036086956522},B:{"12":0,"13":0.005582,"14":0.005582,"15":0.005582,"16":0.005582,"17":0.050238,"18":0.413068,_:"79"},A:{"6":0,"7":0,"8":0.016746,"9":0,"10":0.005582,"11":0.200952,"5.5":0},P:{"4":0.20357450980392,"5.0-5.4":0,"6.2-6.4":0.020357450980392,"7.2-7.4":0.061072352941176,"8.2":0.030536176470588,"9.2":0.18321705882353,"10.1":1.5471662745098},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.008836},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.11045},O:{"0":0.026508},Q:{"1.2":0.004418},S:{"2.5":0},H:{"0":0.12129763230241},L:{"0":55.95981}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CM.js b/assets/node_modules/caniuse-lite/data/regions/CM.js
deleted file mode 100644
index 4a3607e..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CM.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.003722,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.003722,"29":0,"30":0,"31":0,"32":0,"33":0.022332,"34":0,"35":0.003722,"36":0.003722,"37":0.003722,"38":0.003722,"39":0.003722,"40":0.007444,"41":0,"42":0.003722,"43":0.014888,"44":0.003722,"45":0,"46":0.003722,"47":0,"48":0.003722,"49":0.09305,"50":0.007444,"51":0,"52":0,"53":0,"54":0,"55":0.007444,"56":0.014888,"57":0.003722,"58":0.014888,"59":0,"60":0.003722,"61":0.003722,"62":0.01861,"63":0.05583,"64":0.007444,"65":0.01861,"66":0.003722,"67":0.029776,"68":0.007444,"69":0.100494,"70":0.022332,"71":0.011166,"72":0.01861,"73":0.03722,"74":0.063274,"75":0.026054,"76":0.104216,"77":0.085606,"78":0.14888,"79":4.927928,"80":0.022332,"81":0.007444,"82":0},C:{"2":0,"3":0.003722,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.007444,"22":0,"23":0.003722,"24":0,"25":0,"26":0.003722,"27":0,"28":0,"29":0,"30":0,"31":0.003722,"32":0.003722,"33":0,"34":0.003722,"35":0.003722,"36":0,"37":0,"38":0.003722,"39":0.003722,"40":0.003722,"41":0.003722,"42":0.003722,"43":0.014888,"44":0.003722,"45":0.003722,"46":0.003722,"47":0.033498,"48":0.07444,"49":0.011166,"50":0.003722,"51":0.003722,"52":0.11166,"53":0.003722,"54":0.003722,"55":0.003722,"56":0.011166,"57":0.007444,"58":0.003722,"59":0.003722,"60":0.022332,"61":0.007444,"62":0.007444,"63":0.007444,"64":0.003722,"65":0.011166,"66":0.014888,"67":0.01861,"68":0.1861,"69":0.059552,"70":0.063274,"71":0.766732,"72":1.779116,"73":0.059552,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0.003722,"20":0.007444,"21":0,"22":0,"23":0.011166,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.003722,"35":0,"36":0.003722,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0.003722,"43":0,"44":0,"45":0.003722,"46":0.014888,"47":0.003722,"48":0,"49":0,"50":0,"51":0.003722,"52":0,"53":0.003722,"54":0,"55":0.003722,"56":0.003722,"57":0,"58":0.003722,"60":0,"62":0.003722,"63":0.01861,"64":0.01861,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.052108},E:{"4":0,"5":0,"6":0,"7":0,"8":0.003722,"9":0.011166,"10":0.007444,"11":0.026054,"12":0.003722,"13":0.122826,_:"0","3.1":0,"3.2":0,"5.1":0.699736,"6.1":0,"7.1":0,"9.1":0.007444,"10.1":0.007444,"11.1":0.01861,"12.1":0.063274},G:{"8":0.00036909692907872,"3.2":0.00036909692907872,"4.0-4.1":0.00073819385815745,"4.2-4.3":0,"5.0-5.1":0.0022145815744723,"6.0-6.1":0.0011072907872362,"7.0-7.1":0.0029527754326298,"8.1-8.4":0.0055364539361809,"9.0-9.2":0.0047982600780234,"9.3":0.045768019205762,"10.0-10.2":0.01439478023407,"10.3":0.050566279283785,"11.0-11.2":0.04060066219866,"11.3-11.4":0.069021125737721,"12.0-12.1":0.093012426127838,"12.2-12.4":0.55585997519256,"13.0-13.1":0.25689146263879,"13.2":0.10814540022007,"13.3":2.4375161196359},I:{"3":0.00088734914361001,"4":0.0088734914361001,_:"76","2.1":0,"2.2":0.00266204743083,"2.3":0.00088734914361001,"4.1":0.01508493544137,"4.2-4.3":0.39220832147563,"4.4":0,"4.4.3-4.4.4":0.25289450592885},B:{"12":0.033498,"13":0.026054,"14":0.044664,"15":0.070718,"16":0.033498,"17":0.066996,"18":0.24193,_:"79"},A:{"6":0,"7":0,"8":0.081004254545455,"9":0,"10":0.0077146909090909,"11":0.12343505454545,"5.5":0},P:{"4":0.52692150857143,"5.0-5.4":0.11364973714286,"6.2-6.4":0.030995382857143,"7.2-7.4":0.10331794285714,"8.2":0.030995382857143,"9.2":0.24796306285714,"10.1":0.75422098285714},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.034304785714286,"11":0.28587321428571},J:{"7":0,"10":0.043946},R:{_:"0"},M:{"0":0.34529},O:{"0":1.745284},Q:{"1.2":0.037668},S:{"2.5":0.150672},H:{"0":10.234887484536},L:{"0":62.298102}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CN.js b/assets/node_modules/caniuse-lite/data/regions/CN.js
deleted file mode 100644
index b63ec71..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CN.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.0071,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0.00355,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0.01065,"28":0,"29":0,"30":0,"31":0.01065,"32":0,"33":0.00355,"34":0.00355,"35":0,"36":0.00355,"37":0,"38":0,"39":0.00355,"40":0.0355,"41":0.01065,"42":0.0071,"43":0.00355,"44":0,"45":0.0426,"46":0,"47":0.0355,"48":0.08165,"49":0.09585,"50":0.01065,"51":0.00355,"52":0,"53":0.00355,"54":0.01775,"55":0.2485,"56":0.0284,"57":0.16685,"58":0.0142,"59":0.0142,"60":0.0142,"61":0.0142,"62":0.13135,"63":2.28265,"64":0.0071,"65":0.05325,"66":0.0142,"67":0.01775,"68":0.02485,"69":1.1573,"70":0.0497,"71":0.07455,"72":0.3621,"73":0.08875,"74":0.81295,"75":0.2911,"76":0.1136,"77":0.1349,"78":0.30885,"79":1.5407,"80":0.0213,"81":0.0071,"82":0},C:{"2":0,"3":0.00355,"4":0.00355,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0.0213,"18":0,"19":0,"20":0,"21":0.0071,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.04615,"34":0,"35":0,"36":0.0213,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.01775,"44":0,"45":0.00355,"46":0,"47":0.00355,"48":0.00355,"49":0,"50":0.00355,"51":0,"52":0.01775,"53":0.00355,"54":0.0071,"55":0.0071,"56":0.0071,"57":0.0071,"58":0.00355,"59":0.00355,"60":0.00355,"61":0.00355,"62":0.00355,"63":0.00355,"64":0.0071,"65":0.00355,"66":0.0071,"67":0.0071,"68":0.03195,"69":0.0071,"70":0.0071,"71":0.20235,"72":0.18815,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.0071},E:{"4":0.01065,"5":0.0071,"6":0.0213,"7":0,"8":0.00355,"9":0.00355,"10":0.00355,"11":0.01065,"12":0.03195,"13":0.2556,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.00355,"10.1":0.01065,"11.1":0.0213,"12.1":0.0639},G:{"8":0.00090587676302891,"3.2":0.00090587676302891,"4.0-4.1":0.0018117535260578,"4.2-4.3":0,"5.0-5.1":0.0054352605781735,"6.0-6.1":0.0027176302890867,"7.0-7.1":0.0072470141042313,"8.1-8.4":0.013588151445434,"9.0-9.2":0.011776397919376,"9.3":0.11232871861558,"10.0-10.2":0.035329193758127,"10.3":0.12410511653496,"11.0-11.2":0.09964644393318,"11.3-11.4":0.16939895468641,"12.0-12.1":0.22828094428328,"12.2-12.4":1.3642504051215,"13.0-13.1":0.63049022706812,"13.2":0.26542189156747,"13.3":5.9824101430429},I:{"3":0.0035205533596838,"4":0.035205533596838,_:"76","2.1":0,"2.2":0.010561660079051,"2.3":0.0035205533596838,"4.1":0.059849407114625,"4.2-4.3":1.5560845849802,"4.4":0,"4.4.3-4.4.4":1.0033577075099},B:{"12":0,"13":0.0071,"14":0.00355,"15":0.00355,"16":0.01065,"17":0.04615,"18":0.42955,_:"79"},A:{"6":0.0068269230769231,"7":0.0068269230769231,"8":0.22528846153846,"9":0.081923076923077,"10":0.068269230769231,"11":0.76461538461538,"5.5":0},P:{"4":0.03053,"5.0-5.4":0.010176666666667,"6.2-6.4":0,"7.2-7.4":0,"8.2":0.010176666666667,"9.2":0.17300333333333,"10.1":0.20353333333333},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.1032},O:{"0":11.5584},Q:{"1.2":7.24335},S:{"2.5":0},H:{"0":0.079383762886598},L:{"0":49.5538}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CO.js b/assets/node_modules/caniuse-lite/data/regions/CO.js
deleted file mode 100644
index 8c66ae8..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CO.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.006969,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.006969,"35":0,"36":0.006969,"37":0,"38":0.034845,"39":0.006969,"40":0,"41":0,"42":0.006969,"43":0,"44":0,"45":0,"46":0.006969,"47":0,"48":0,"49":0.188163,"50":0.006969,"51":0.006969,"52":0,"53":0.048783,"54":0.006969,"55":0.006969,"56":0.013938,"57":0.006969,"58":0.027876,"59":0.006969,"60":0.013938,"61":0.006969,"62":0.020907,"63":0.041814,"64":0.013938,"65":0.055752,"66":0.055752,"67":0.090597,"68":0.034845,"69":0.062721,"70":0.118473,"71":0.146349,"72":0.125442,"73":0.174225,"74":0.160287,"75":0.20907,"76":0.223008,"77":0.285729,"78":0.682962,"79":38.650074,"80":0.034845,"81":0.013938,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.006969,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.041814,"41":0,"42":0,"43":0.006969,"44":0,"45":0.006969,"46":0,"47":0.027876,"48":0.013938,"49":0,"50":0.285729,"51":0.006969,"52":0.020907,"53":0,"54":0,"55":0,"56":0.006969,"57":0,"58":0,"59":0.006969,"60":0.013938,"61":0,"62":0,"63":0.006969,"64":0.006969,"65":0.034845,"66":0.013938,"67":0.006969,"68":0.06969,"69":0.020907,"70":0.020907,"71":0.306636,"72":1.18473,"73":0.020907,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.006969,"57":0.006969,"58":0.006969,"60":0,"62":0,"63":0.006969,"64":0.090597,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.020907,"9":0.006969,"10":0.013938,"11":0.034845,"12":0.13938,"13":1.477428,_:"0","3.1":0,"3.2":0,"5.1":0.020907,"6.1":0,"7.1":0,"9.1":0.013938,"10.1":0.083628,"11.1":0.188163,"12.1":0.432078},G:{"8":0.00047290657197159,"3.2":0.00047290657197159,"4.0-4.1":0.00094581314394318,"4.2-4.3":0,"5.0-5.1":0.0028374394318295,"6.0-6.1":0.0014187197159148,"7.0-7.1":0.0037832525757727,"8.1-8.4":0.0070935985795739,"9.0-9.2":0.0061477854356307,"9.3":0.058640414924477,"10.0-10.2":0.018443356306892,"10.3":0.064788200360108,"11.0-11.2":0.052019722916875,"11.3-11.4":0.088433528958688,"12.0-12.1":0.11917245613684,"12.2-12.4":0.71219729738922,"13.0-13.1":0.32914297409223,"13.2":0.13856162558768,"13.3":3.1230750013004},I:{"3":0.00024275098814229,"4":0.0024275098814229,_:"76","2.1":0,"2.2":0.00072825296442688,"2.3":0.00024275098814229,"4.1":0.004126766798419,"4.2-4.3":0.10729593675889,"4.4":0,"4.4.3-4.4.4":0.069184031620553},B:{"12":0,"13":0,"14":0.006969,"15":0.006969,"16":0.006969,"17":0.048783,"18":0.383295,_:"79"},A:{"6":0,"7":0,"8":0.020907,"9":0.006969,"10":0.006969,"11":0.125442,"5.5":0},P:{"4":0.22390469724771,"5.0-5.4":0,"6.2-6.4":0.010177486238532,"7.2-7.4":0.040709944954128,"8.2":0.010177486238532,"9.2":0.050887431192661,"10.1":0.76331146788991},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.03031},J:{"7":0,"10":0.006062},R:{_:"0"},M:{"0":0.066682},O:{"0":0.036372},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.065999764604811},L:{"0":44.932372}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CR.js b/assets/node_modules/caniuse-lite/data/regions/CR.js
deleted file mode 100644
index d35442f..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CR.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.006538,"32":0,"33":0,"34":0,"35":0,"36":0.006538,"37":0,"38":0.006538,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.006538,"49":0.22883,"50":0,"51":0,"52":0,"53":0.006538,"54":0.006538,"55":0,"56":0,"57":0,"58":0.006538,"59":0,"60":0.006538,"61":0,"62":0.006538,"63":0.039228,"64":0.006538,"65":0.039228,"66":0.013076,"67":0.06538,"68":0.013076,"69":0.039228,"70":0.026152,"71":0.052304,"72":0.039228,"73":0.071918,"74":0.06538,"75":0.117684,"76":0.143836,"77":0.143836,"78":0.568806,"79":28.106862,"80":0.045766,"81":0.019614,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.013076,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.026152,"49":0.006538,"50":0,"51":0,"52":0.039228,"53":0,"54":0,"55":0,"56":0.006538,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0.006538,"65":0.006538,"66":0.026152,"67":0.039228,"68":0.124222,"69":0.019614,"70":0.026152,"71":0.78456,"72":2.32099,"73":0.039228,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.006538,"60":0,"62":0,"63":0,"64":0.06538,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.006538,"9":0,"10":0.013076,"11":0.071918,"12":0.320362,"13":3.877034,_:"0","3.1":0,"3.2":0,"5.1":0.444584,"6.1":0,"7.1":0,"9.1":0.039228,"10.1":0.143836,"11.1":0.418432,"12.1":0.934934},G:{"8":0.001122155446634,"3.2":0.001122155446634,"4.0-4.1":0.002244310893268,"4.2-4.3":0,"5.0-5.1":0.0067329326798039,"6.0-6.1":0.003366466339902,"7.0-7.1":0.0089772435730719,"8.1-8.4":0.01683233169951,"9.0-9.2":0.014588020806242,"9.3":0.13914727538261,"10.0-10.2":0.043764062418726,"10.3":0.15373529618886,"11.0-11.2":0.12343709912974,"11.3-11.4":0.20984306852056,"12.0-12.1":0.28278317255177,"12.2-12.4":1.6899661026308,"13.0-13.1":0.78102019085726,"13.2":0.32879154586376,"13.3":7.4107145695709},I:{"3":0.00039880105401845,"4":0.0039880105401845,_:"76","2.1":0,"2.2":0.0011964031620553,"2.3":0.00039880105401845,"4.1":0.0067796179183136,"4.2-4.3":0.17627006587615,"4.4":0,"4.4.3-4.4.4":0.11365830039526},B:{"12":0,"13":0.006538,"14":0.006538,"15":0.006538,"16":0.019614,"17":0.09807,"18":0.725718,_:"79"},A:{"6":0,"7":0,"8":0.046568912280702,"9":0,"10":0.006652701754386,"11":0.32598238596491,"5.5":0},P:{"4":0.14198775330396,"5.0-5.4":0.010141982378855,"6.2-6.4":0.020283964757709,"7.2-7.4":0.070993876651982,"8.2":0.020283964757709,"9.2":0.19269766519824,"10.1":1.7951308810573},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.152328},O:{"0":0.031158},Q:{"1.2":0.003462},S:{"2.5":0},H:{"0":0.17043509278351},L:{"0":42.284138}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CU.js b/assets/node_modules/caniuse-lite/data/regions/CU.js
deleted file mode 100644
index 6dcaecd..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CU.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.005093,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.005093,"26":0,"27":0,"28":0,"29":0,"30":0.005093,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005093,"37":0,"38":0.005093,"39":0,"40":0.035651,"41":0.005093,"42":0,"43":0.005093,"44":0.005093,"45":0,"46":0.005093,"47":0,"48":0.010186,"49":0.030558,"50":0.005093,"51":0.005093,"52":0.005093,"53":0.010186,"54":0.015279,"55":0.015279,"56":0.005093,"57":0,"58":0.015279,"59":0,"60":0.010186,"61":0.005093,"62":0.020372,"63":0.056023,"64":0.010186,"65":0.005093,"66":0.010186,"67":0.025465,"68":0.030558,"69":0.015279,"70":0.035651,"71":0.05093,"72":0.061116,"73":0.056023,"74":0.086581,"75":0.061116,"76":0.091674,"77":0.229185,"78":0.249557,"79":4.369794,"80":0,"81":0.005093,"82":0},C:{"2":0,"3":0.005093,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0.005093,"16":0,"17":0.010186,"18":0.010186,"19":0.005093,"20":0.005093,"21":0.035651,"22":0,"23":0.010186,"24":0.005093,"25":0.010186,"26":0.025465,"27":0.010186,"28":0.005093,"29":0.005093,"30":0.035651,"31":0.020372,"32":0.010186,"33":0.030558,"34":0.112046,"35":0.025465,"36":0.015279,"37":0.030558,"38":0.071302,"39":0.045837,"40":0.096767,"41":0.066209,"42":0.040744,"43":0.112046,"44":0.030558,"45":0.213906,"46":0.091674,"47":0.168069,"48":0.086581,"49":0.086581,"50":0.259743,"51":0.086581,"52":0.463463,"53":0.127325,"54":0.896368,"55":0.091674,"56":0.193534,"57":0.519486,"58":0.168069,"59":0.20372,"60":0.45837,"61":0.244464,"62":0.280115,"63":0.15279,"64":0.259743,"65":0.290301,"66":0.417626,"67":0.361603,"68":0.988042,"69":0.570416,"70":1.003321,"71":3.152567,"72":4.695746,"73":0.142604,"74":0.015279,"3.5":0.005093,"3.6":0.005093},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0.005093,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.005093,"34":0,"35":0,"36":0.005093,"37":0.005093,"38":0.005093,"39":0,"40":0,"41":0,"42":0.005093,"43":0.005093,"44":0,"45":0.010186,"46":0.020372,"47":0,"48":0,"49":0.020372,"50":0,"51":0,"52":0,"53":0.005093,"54":0,"55":0.035651,"56":0,"57":0.005093,"58":0.005093,"60":0.005093,"62":0.005093,"63":0.015279,"64":0.040744,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0.015279,"12.1":0.010186},E:{"4":0,"5":0,"6":0,"7":0,"8":0.005093,"9":0,"10":0.005093,"11":0.010186,"12":0.040744,"13":0.234278,_:"0","3.1":0,"3.2":0,"5.1":0.585695,"6.1":0,"7.1":0,"9.1":0.005093,"10.1":0.020372,"11.1":0.005093,"12.1":0.025465},G:{"8":0.00099120806241873,"3.2":0.00099120806241873,"4.0-4.1":0.0019824161248375,"4.2-4.3":0,"5.0-5.1":0.0059472483745124,"6.0-6.1":0.0029736241872562,"7.0-7.1":0.0079296644993498,"8.1-8.4":0.014868120936281,"9.0-9.2":0.012885704811443,"9.3":0.12290979973992,"10.0-10.2":0.03865711443433,"10.3":0.13579550455137,"11.0-11.2":0.10903288686606,"11.3-11.4":0.1853559076723,"12.0-12.1":0.24978443172952,"12.2-12.4":1.4927593420026,"13.0-13.1":0.68988081144343,"13.2":0.29042396228869,"13.3":6.5459380442133},I:{"3":0.00078830830039526,"4":0.0078830830039526,_:"76","2.1":0,"2.2":0.0023649249011858,"2.3":0.00078830830039526,"4.1":0.013401241106719,"4.2-4.3":0.3484322687747,"4.4":0,"4.4.3-4.4.4":0.22466786561265},B:{"12":0.020372,"13":0.025465,"14":0.030558,"15":0.030558,"16":0.020372,"17":0.076395,"18":0.162976,_:"79"},A:{"6":0.005093,"7":0,"8":0.056023,"9":0,"10":0.076395,"11":0.249557,"5.5":0},P:{"4":0.62013192332268,"5.0-5.4":0.1100234057508,"6.2-6.4":0.090019150159744,"7.2-7.4":0.42008936741214,"8.2":0.14002978913738,"9.2":0.57012128434505,"10.1":1.1502446964856},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.013085333333333,"11":0.026170666666667},J:{"7":0,"10":0.009814},R:{_:"0"},M:{"0":1.27582},O:{"0":0.328769},Q:{"1.2":0.029442},S:{"2.5":0},H:{"0":0.94770863917526},L:{"0":55.455156}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CV.js b/assets/node_modules/caniuse-lite/data/regions/CV.js
deleted file mode 100644
index b7bc461..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CV.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.004895,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.004895,"36":0.004895,"37":0,"38":0,"39":0,"40":0.03916,"41":0,"42":0.00979,"43":0.06853,"44":0,"45":0,"46":0.004895,"47":0,"48":0.004895,"49":0.112585,"50":0,"51":0,"52":0.004895,"53":0.004895,"54":0,"55":0.04895,"56":0,"57":0,"58":0.00979,"59":0,"60":0.014685,"61":0.004895,"62":0,"63":0.044055,"64":0.02937,"65":0.014685,"66":0.004895,"67":0.03916,"68":0.00979,"69":0.16643,"70":0.034265,"71":0.06853,"72":0.210485,"73":0.034265,"74":0.13706,"75":0.053845,"76":0.14685,"77":0.16643,"78":0.327965,"79":14.08781,"80":0.01958,"81":0.00979,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.00979,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0.004895,"51":0,"52":0.00979,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0.004895,"65":0,"66":0.014685,"67":0,"68":0.122375,"69":0.004895,"70":0.00979,"71":0.425865,"72":0.96921,"73":0.00979,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.004895,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.034265,"57":0,"58":0,"60":0,"62":0,"63":0.004895,"64":0.00979,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0.004895,"5":0,"6":0,"7":0,"8":0.06853,"9":0,"10":0,"11":0.004895,"12":0.07832,"13":1.55661,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.004895,"10.1":0.044055,"11.1":0.053845,"12.1":0.70488},G:{"8":0.00094164399319796,"3.2":0.00094164399319796,"4.0-4.1":0.0018832879863959,"4.2-4.3":0,"5.0-5.1":0.0056498639591878,"6.0-6.1":0.0028249319795939,"7.0-7.1":0.0075331519455837,"8.1-8.4":0.014124659897969,"9.0-9.2":0.012241371911573,"9.3":0.11676385515655,"10.0-10.2":0.03672411573472,"10.3":0.12900522706812,"11.0-11.2":0.10358083925178,"11.3-11.4":0.17608742672802,"12.0-12.1":0.23729428628589,"12.2-12.4":1.4181158537561,"13.0-13.1":0.65538421926578,"13.2":0.275901690007,"13.3":6.2186169310793},I:{"3":0.00060274044795784,"4":0.0060274044795784,_:"76","2.1":0,"2.2":0.0018082213438735,"2.3":0.00060274044795784,"4.1":0.010246587615283,"4.2-4.3":0.26641127799736,"4.4":0,"4.4.3-4.4.4":0.17178102766798},B:{"12":0.01958,"13":0.034265,"14":0.02937,"15":0.06853,"16":0.03916,"17":0.51887,"18":0.79299,_:"79"},A:{"6":0.0049594078947368,"7":0,"8":0.019837631578947,"9":0,"10":0.0049594078947368,"11":0.34715855263158,"5.5":0},P:{"4":0.28821371428571,"5.0-5.4":0.051466734693878,"6.2-6.4":0.030880040816327,"7.2-7.4":0.25733367346939,"8.2":0.030880040816327,"9.2":0.34997379591837,"10.1":1.4925353061224},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.0093591666666667,"11":0.046795833333333},J:{"7":0,"10":0.01021},R:{_:"0"},M:{"0":0.13273},O:{"0":0.239935},Q:{"1.2":0.005105},S:{"2.5":0},H:{"0":0.31415047250859},L:{"0":62.352505}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CX.js b/assets/node_modules/caniuse-lite/data/regions/CX.js
deleted file mode 100644
index 5abab6c..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CX.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":25.950764,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":37.929514,"72":1.993264,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0,"11.1":0,"12.1":0},G:{"8":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.4":0,"13.0-13.1":0,"13.2":0,"13.3":0},I:{"3":0,"4":0,_:"76","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},B:{"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":21.964236,"5.5":0},P:{"4":0,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0,"8.2":0,"9.2":0,"10.1":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0},O:{"0":0},Q:{"1.2":0},S:{"2.5":0},H:{"0":0},L:{"0":0}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CY.js b/assets/node_modules/caniuse-lite/data/regions/CY.js
deleted file mode 100644
index a57bfda..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CY.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005697,"37":0,"38":0.017091,"39":0,"40":0.034182,"41":0,"42":0.717822,"43":0,"44":0,"45":0,"46":0,"47":0.005697,"48":0,"49":0.279153,"50":0,"51":0,"52":0.005697,"53":0.028485,"54":0.011394,"55":0.005697,"56":0.005697,"57":0.005697,"58":0.011394,"59":0.102546,"60":0,"61":0.005697,"62":0.011394,"63":0.529821,"64":0.005697,"65":0.011394,"66":0.005697,"67":0.017091,"68":0.011394,"69":0.028485,"70":0.883035,"71":0.017091,"72":0.051273,"73":0.022788,"74":0.034182,"75":0.022788,"76":0.068364,"77":0.05697,"78":0.478548,"79":20.002167,"80":0.017091,"81":0.011394,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.011394,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.005697,"44":0,"45":0.005697,"46":0,"47":0.005697,"48":0.017091,"49":0,"50":0.159516,"51":0,"52":0.05697,"53":0,"54":0,"55":0,"56":0.011394,"57":0,"58":0.461457,"59":0,"60":0.022788,"61":0,"62":0,"63":0.005697,"64":0.005697,"65":0.011394,"66":0,"67":0.005697,"68":0.096849,"69":0.011394,"70":0.011394,"71":0.575397,"72":1.788858,"73":0.017091,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.05697,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.005697,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.011394,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0.028485,"8":0,"9":0.017091,"10":0,"11":0.034182,"12":0.11394,"13":1.526796,_:"0","3.1":0,"3.2":0,"5.1":0.045576,"6.1":0,"7.1":0,"9.1":0.017091,"10.1":0.159516,"11.1":0.085455,"12.1":0.370305},G:{"8":0.0014455216564969,"3.2":0.0014455216564969,"4.0-4.1":0.0028910433129939,"4.2-4.3":0,"5.0-5.1":0.0086731299389817,"6.0-6.1":0.0043365649694908,"7.0-7.1":0.011564173251976,"8.1-8.4":0.021682824847454,"9.0-9.2":0.01879178153446,"9.3":0.17924468540562,"10.0-10.2":0.056375344603381,"10.3":0.19803646694008,"11.0-11.2":0.15900738221466,"11.3-11.4":0.27031254976493,"12.0-12.1":0.36427145743723,"12.2-12.4":2.1769556146844,"13.0-13.1":1.0060830729219,"13.2":0.42353784535361,"13.3":9.5462250195059},I:{"3":0.0005171884057971,"4":0.005171884057971,_:"76","2.1":0,"2.2":0.0015515652173913,"2.3":0.0005171884057971,"4.1":0.0087922028985507,"4.2-4.3":0.22859727536232,"4.4":0,"4.4.3-4.4.4":0.14739869565217},B:{"12":0.017091,"13":0.005697,"14":0.005697,"15":0.017091,"16":0.017091,"17":0.05697,"18":0.996975,_:"79"},A:{"6":0,"7":0,"8":0.045576,"9":0,"10":0.005697,"11":0.655155,"5.5":0},P:{"4":0.093435015189873,"5.0-5.4":0,"6.2-6.4":0.01038166835443,"7.2-7.4":0.020763336708861,"8.2":0.031145005063291,"9.2":0.093435015189873,"10.1":3.7270189392405},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.008606},J:{"7":0,"10":0.004303},R:{_:"0"},M:{"0":0.111878},O:{"0":1.312415},Q:{"1.2":0.008606},S:{"2.5":0},H:{"0":0.2485019467354},L:{"0":44.387339}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/CZ.js b/assets/node_modules/caniuse-lite/data/regions/CZ.js
deleted file mode 100644
index 77d8627..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/CZ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.013574,"34":0.006787,"35":0,"36":0.006787,"37":0,"38":0.006787,"39":0,"40":0.040722,"41":0.006787,"42":0,"43":0.006787,"44":0,"45":0.006787,"46":0.006787,"47":0.006787,"48":0.006787,"49":1.133429,"50":0.006787,"51":0.006787,"52":0.006787,"53":0.027148,"54":0.006787,"55":0.006787,"56":0.020361,"57":0.006787,"58":0.013574,"59":0.054296,"60":0.020361,"61":0.047509,"62":0.013574,"63":0.047509,"64":0.013574,"65":0.013574,"66":0.013574,"67":0.040722,"68":0.027148,"69":0.054296,"70":0.074657,"71":0.142527,"72":0.149314,"73":0.081444,"74":0.054296,"75":0.169675,"76":0.122166,"77":0.420794,"78":0.529386,"79":24.324608,"80":0.06787,"81":0.027148,"82":0},C:{"2":0,"3":0.006787,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.027148,"22":0,"23":0,"24":0.006787,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.006787,"39":0,"40":0,"41":0,"42":0.006787,"43":0.006787,"44":0,"45":0.006787,"46":0,"47":0.006787,"48":0.027148,"49":0,"50":0.027148,"51":0.013574,"52":0.196823,"53":0.006787,"54":0.006787,"55":0.013574,"56":0.054296,"57":0.020361,"58":0.13574,"59":0.006787,"60":0.061083,"61":0.006787,"62":0.013574,"63":0.013574,"64":0.027148,"65":0.074657,"66":0.033935,"67":0.047509,"68":0.40722,"69":0.040722,"70":0.115379,"71":1.723898,"72":4.0722,"73":0.020361,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0.006787,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.020361,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.040722,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.006787,"53":0.040722,"54":0,"55":0,"56":0.006787,"57":0,"58":0.006787,"60":0,"62":0.006787,"63":0.006787,"64":0.095018,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.040722},E:{"4":0,"5":0,"6":0,"7":0,"8":0.006787,"9":0.006787,"10":0.006787,"11":0.020361,"12":0.074657,"13":2.022526,_:"0","3.1":0,"3.2":0,"5.1":0.332563,"6.1":0,"7.1":0,"9.1":0.027148,"10.1":0.054296,"11.1":0.122166,"12.1":0.27148},G:{"8":0.0011100410123037,"3.2":0.0011100410123037,"4.0-4.1":0.0022200820246074,"4.2-4.3":0,"5.0-5.1":0.0066602460738221,"6.0-6.1":0.0033301230369111,"7.0-7.1":0.0088803280984295,"8.1-8.4":0.016650615184555,"9.0-9.2":0.014430533159948,"9.3":0.13764508552566,"10.0-10.2":0.043291599479844,"10.3":0.15207561868561,"11.0-11.2":0.12210451135341,"11.3-11.4":0.20757766930079,"12.0-12.1":0.27973033510053,"12.2-12.4":1.6717217645294,"13.0-13.1":0.77258854456337,"13.2":0.32524201660498,"13.3":7.3307108452536},I:{"3":0.00049309617918314,"4":0.0049309617918314,_:"76","2.1":0,"2.2":0.0014792885375494,"2.3":0.00049309617918314,"4.1":0.0083826350461133,"4.2-4.3":0.21794851119895,"4.4":0,"4.4.3-4.4.4":0.14053241106719},B:{"12":0.006787,"13":0.013574,"14":0.027148,"15":0.033935,"16":0.054296,"17":0.196823,"18":2.382237,_:"79"},A:{"6":0.0068394092664093,"7":0,"8":0.034197046332046,"9":0.013678818532819,"10":0.041036455598456,"11":1.6756552702703,"5.5":0},P:{"4":0.09195606,"5.0-5.4":0.01021734,"6.2-6.4":0.01021734,"7.2-7.4":0.02043468,"8.2":0.02043468,"9.2":0.09195606,"10.1":1.70629578},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.041769},J:{"7":0,"10":0.016065},R:{_:"0"},M:{"0":0.25704},O:{"0":0.372708},Q:{"1.2":0.012852},S:{"2.5":0},H:{"0":0.45627912371134},L:{"0":37.701353}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/DE.js b/assets/node_modules/caniuse-lite/data/regions/DE.js
deleted file mode 100644
index 9191094..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/DE.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0.01119,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.005595,"30":0,"31":0,"32":0,"33":0,"34":0.005595,"35":0,"36":0,"37":0,"38":0.01119,"39":0.005595,"40":0.005595,"41":0.005595,"42":0.005595,"43":0.005595,"44":0,"45":0,"46":0.016785,"47":0.005595,"48":0.01119,"49":0.430815,"50":0.005595,"51":0.01119,"52":0.005595,"53":0.016785,"54":0.005595,"55":0.01119,"56":0.01119,"57":0.01119,"58":0.016785,"59":0.005595,"60":0.027975,"61":0.016785,"62":0.01119,"63":0.10071,"64":0.01119,"65":0.10071,"66":0.039165,"67":0.027975,"68":0.016785,"69":0.03357,"70":0.195825,"71":0.229395,"72":0.195825,"73":0.184635,"74":0.050355,"75":0.12309,"76":0.2238,"77":0.128685,"78":0.386055,"79":10.55217,"80":0.02238,"81":0.01119,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.05595,"22":0.005595,"23":0,"24":0.005595,"25":0,"26":0.039165,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.139875,"39":0,"40":0.005595,"41":0.005595,"42":0.005595,"43":0.005595,"44":0,"45":0.016785,"46":0,"47":0.01119,"48":0.03357,"49":0.005595,"50":0.005595,"51":0.016785,"52":0.162255,"53":0.005595,"54":0.01119,"55":0.01119,"56":0.027975,"57":0.01119,"58":0.005595,"59":0.01119,"60":0.10071,"61":0.016785,"62":0.016785,"63":0.027975,"64":0.027975,"65":0.04476,"66":0.050355,"67":0.03357,"68":0.70497,"69":0.072735,"70":0.184635,"71":1.874325,"72":4.134705,"73":0.02238,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.01119,"37":0,"38":0,"39":0,"40":0.005595,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.02238,"47":0.005595,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.005595,"54":0,"55":0,"56":0.01119,"57":0.01119,"58":0.016785,"60":0,"62":0.005595,"63":0.005595,"64":0.06714,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.01119},E:{"4":0,"5":0.005595,"6":0,"7":0.005595,"8":0.01119,"9":0.005595,"10":0.01119,"11":0.02238,"12":0.10071,"13":2.4618,_:"0","3.1":0,"3.2":0,"5.1":0.13428,"6.1":0.005595,"7.1":0,"9.1":0.027975,"10.1":0.06714,"11.1":0.14547,"12.1":0.296535},G:{"8":0.0020130284085226,"3.2":0.0020130284085226,"4.0-4.1":0.0040260568170451,"4.2-4.3":0,"5.0-5.1":0.012078170451135,"6.0-6.1":0.0060390852255677,"7.0-7.1":0.01610422726818,"8.1-8.4":0.030195426127838,"9.0-9.2":0.026169369310793,"9.3":0.2496155226568,"10.0-10.2":0.07850810793238,"10.3":0.27578489196759,"11.0-11.2":0.22143312493748,"11.3-11.4":0.37643631239372,"12.0-12.1":0.50728315894768,"12.2-12.4":3.031620783235,"13.0-13.1":1.4010677723317,"13.2":0.58981732369711,"13.3":13.294039609883},I:{"3":0.00067867588932806,"4":0.0067867588932806,_:"76","2.1":0,"2.2":0.0020360276679842,"2.3":0.00067867588932806,"4.1":0.011537490118577,"4.2-4.3":0.299974743083,"4.4":0,"4.4.3-4.4.4":0.1934226284585},B:{"12":0.005595,"13":0.005595,"14":0.016785,"15":0.02238,"16":0.05595,"17":0.162255,"18":2.210025,_:"79"},A:{"6":0.022693006993007,"7":0.03403951048951,"8":0.039712762237762,"9":0.0056732517482517,"10":0.022693006993007,"11":1.4977384615385,"5.5":0},P:{"4":0.30593844915254,"5.0-5.4":0.031648805084746,"6.2-6.4":0.010549601694915,"7.2-7.4":0.073847211864407,"8.2":0.042198406779661,"9.2":0.24264083898305,"10.1":5.2537016440678},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.039645},J:{"7":0,"10":0.00881},R:{_:"0"},M:{"0":0.60789},O:{"0":0.259895},Q:{"1.2":0.01762},S:{"2.5":0},H:{"0":0.35448140034364},L:{"0":37.673225}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/DJ.js b/assets/node_modules/caniuse-lite/data/regions/DJ.js
deleted file mode 100644
index 74b9b04..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/DJ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0.003678,"40":0,"41":0,"42":0,"43":0.003678,"44":0,"45":0,"46":0.003678,"47":0,"48":0,"49":0.014712,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.058848,"59":0,"60":0,"61":0,"62":0.05517,"63":0.05517,"64":0,"65":0.003678,"66":0.025746,"67":0,"68":0.003678,"69":0.047814,"70":0.003678,"71":0.003678,"72":0.007356,"73":0.007356,"74":0.102984,"75":0.007356,"76":0.058848,"77":0.062526,"78":0.158154,"79":8.249754,"80":0.253782,"81":0.044136,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.003678,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0.003678,"45":0,"46":0,"47":0.007356,"48":0,"49":0,"50":0,"51":0,"52":0.003678,"53":0,"54":0,"55":0,"56":0.007356,"57":0,"58":0,"59":0,"60":0.077238,"61":0,"62":0.003678,"63":0,"64":0,"65":0,"66":0.003678,"67":0,"68":0.047814,"69":0.047814,"70":0.007356,"71":0.691464,"72":1.073976,"73":0.011034,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.003678,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0.003678,"45":0.003678,"46":0.07356,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0.003678,"64":0.003678,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.003678},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.003678,"13":0.334698,_:"0","3.1":0,"3.2":0,"5.1":0.209646,"6.1":0,"7.1":0,"9.1":0,"10.1":0.022068,"11.1":0.029424,"12.1":0.066204},G:{"8":0.00060678303491047,"3.2":0.00060678303491047,"4.0-4.1":0.0012135660698209,"4.2-4.3":0,"5.0-5.1":0.0036406982094628,"6.0-6.1":0.0018203491047314,"7.0-7.1":0.0048542642792838,"8.1-8.4":0.0091017455236571,"9.0-9.2":0.0078881794538362,"9.3":0.075241096328899,"10.0-10.2":0.023664538361508,"10.3":0.083129275782735,"11.0-11.2":0.066746133840152,"11.3-11.4":0.11346842752826,"12.0-12.1":0.15290932479744,"12.2-12.4":0.91381525057517,"13.0-13.1":0.42232099229769,"13.2":0.17778742922877,"13.3":4.0071951625488},I:{"3":0.00075507509881423,"4":0.0075507509881423,_:"76","2.1":0,"2.2":0.0022652252964427,"2.3":0.00075507509881423,"4.1":0.012836276679842,"4.2-4.3":0.33374319367589,"4.4":0,"4.4.3-4.4.4":0.21519640316206},B:{"12":0.011034,"13":0,"14":0.003678,"15":0.003678,"16":0.003678,"17":0.025746,"18":0.58848,_:"79"},A:{"6":0,"7":0,"8":0.025746,"9":0,"10":0.003678,"11":0.172866,"5.5":0},P:{"4":1.8552071761518,"5.0-5.4":0.10082647696477,"6.2-6.4":0.22181824932249,"7.2-7.4":1.4216533252033,"8.2":0.080661181571816,"9.2":0.45371914634146,"10.1":3.2869431490515},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.113796},O:{"0":1.365552},Q:{"1.2":2.162124},S:{"2.5":0},H:{"0":1.430477419244},L:{"0":62.82974}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/DK.js b/assets/node_modules/caniuse-lite/data/regions/DK.js
deleted file mode 100644
index 84f55c1..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/DK.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.013858,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.152438,"50":0,"51":0,"52":0,"53":0.013858,"54":0.006929,"55":0.006929,"56":0.006929,"57":0.013858,"58":0.006929,"59":0.020787,"60":0.055432,"61":0.006929,"62":0.020787,"63":0.027716,"64":0.006929,"65":0.027716,"66":0.013858,"67":0.034645,"68":0.013858,"69":0.062361,"70":0.034645,"71":0.048503,"72":0.06929,"73":0.041574,"74":0.076219,"75":0.103935,"76":0.284089,"77":0.256373,"78":1.843114,"79":28.33961,"80":0.034645,"81":0.013858,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.034645,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.006929,"49":0,"50":0,"51":0,"52":0.027716,"53":0,"54":0,"55":0,"56":0.041574,"57":0,"58":0,"59":0,"60":0.006929,"61":0,"62":0,"63":0,"64":0,"65":0.006929,"66":0.013858,"67":0.006929,"68":0.145509,"69":0.013858,"70":0.034645,"71":0.630539,"72":1.371942,"73":0.006929,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.006929,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.013858,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.006929,"9":0.013858,"10":0.006929,"11":0.062361,"12":0.242515,"13":5.771857,_:"0","3.1":0,"3.2":0,"5.1":0.034645,"6.1":0.006929,"7.1":0,"9.1":0.041574,"10.1":0.131651,"11.1":0.297947,"12.1":0.824551},G:{"8":0.0028868452535761,"3.2":0.0028868452535761,"4.0-4.1":0.0057736905071521,"4.2-4.3":0,"5.0-5.1":0.017321071521456,"6.0-6.1":0.0086605357607282,"7.0-7.1":0.023094762028609,"8.1-8.4":0.043302678803641,"9.0-9.2":0.037528988296489,"9.3":0.35796881144343,"10.0-10.2":0.11258696488947,"10.3":0.39549779973992,"11.0-11.2":0.31755297789337,"11.3-11.4":0.53984006241873,"12.0-12.1":0.72748500390117,"12.2-12.4":4.3475889518856,"13.0-13.1":2.0092442964889,"13.2":0.84584565929779,"13.3":19.064726054616},I:{"3":0.0001864255599473,"4":0.001864255599473,_:"76","2.1":0,"2.2":0.0005592766798419,"2.3":0.0001864255599473,"4.1":0.0031692345191041,"4.2-4.3":0.082400097496706,"4.4":0,"4.4.3-4.4.4":0.05313128458498},B:{"12":0,"13":0.006929,"14":0.006929,"15":0.013858,"16":0.034645,"17":0.131651,"18":2.348931,_:"79"},A:{"6":0,"7":0.027716,"8":0.006929,"9":0.006929,"10":0.020787,"11":1.52438,"5.5":0},P:{"4":0.063548761363636,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0.021182920454545,"8.2":0.010591460227273,"9.2":0.095323142045455,"10.1":1.5781275738636},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.015355},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.211899},O:{"0":0.046065},Q:{"1.2":0.009213},S:{"2.5":0},H:{"0":0.072685609965636},L:{"0":21.142367}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/DM.js b/assets/node_modules/caniuse-lite/data/regions/DM.js
deleted file mode 100644
index 1579a71..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/DM.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0.004354,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.017416,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":2.599338,"50":0,"51":0,"52":0,"53":0.004354,"54":0,"55":0,"56":0.008708,"57":0.004354,"58":0.004354,"59":0,"60":0,"61":0,"62":0.026124,"63":0.265594,"64":0.017416,"65":0.017416,"66":0.004354,"67":0.008708,"68":0.004354,"69":0.026124,"70":0.056602,"71":0.104496,"72":0.169806,"73":0.121912,"74":0.008708,"75":0.06531,"76":0.222054,"77":0.02177,"78":0.278656,"79":9.178232,"80":0.078372,"81":0.026124,"82":0},C:{"2":0,"3":0.004354,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.004354,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.017416,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.017416,"53":0,"54":0,"55":0,"56":0.004354,"57":0.026124,"58":0,"59":0,"60":0.017416,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0.026124,"67":0.030478,"68":0.082726,"69":0,"70":0.008708,"71":0.117558,"72":0.309134,"73":0.008708,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.004354,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.008708,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.004354,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.004354,"9":0,"10":0,"11":0,"12":0.004354,"13":0.613914,_:"0","3.1":0,"3.2":0,"5.1":0.374444,"6.1":0,"7.1":0,"9.1":0,"10.1":0.008708,"11.1":0.02177,"12.1":0.034832},G:{"8":0.0009285577673302,"3.2":0.0009285577673302,"4.0-4.1":0.0018571155346604,"4.2-4.3":0,"5.0-5.1":0.0055713466039812,"6.0-6.1":0.0027856733019906,"7.0-7.1":0.0074284621386416,"8.1-8.4":0.013928366509953,"9.0-9.2":0.012071250975293,"9.3":0.11514116314894,"10.0-10.2":0.036213752925878,"10.3":0.12721241412424,"11.0-11.2":0.10214135440632,"11.3-11.4":0.17364030249075,"12.0-12.1":0.23399655736721,"12.2-12.4":1.3984079975993,"13.0-13.1":0.64627620606182,"13.2":0.27206742582775,"13.3":6.1321954954486},I:{"3":0.00095717786561265,"4":0.0095717786561265,_:"76","2.1":0,"2.2":0.0028715335968379,"2.3":0.00095717786561265,"4.1":0.016272023715415,"4.2-4.3":0.42307261660079,"4.4":0,"4.4.3-4.4.4":0.2727956916996},B:{"12":0.004354,"13":0.004354,"14":0.008708,"15":0.013062,"16":0.034832,"17":0.100142,"18":0.93611,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0.013062,"11":0.243824,"5.5":0},P:{"4":0.13558612363636,"5.0-5.4":0.010429701818182,"6.2-6.4":0.083437614545455,"7.2-7.4":0.17730493090909,"8.2":0.010429701818182,"9.2":0.26074254545455,"10.1":4.9958271709091},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.079044},J:{"7":0,"10":0.079044},R:{_:"0"},M:{"0":0.101628},O:{"0":0.321822},Q:{"1.2":0.005646},S:{"2.5":0},H:{"0":0.28329920618557},L:{"0":63.25295}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/DO.js b/assets/node_modules/caniuse-lite/data/regions/DO.js
deleted file mode 100644
index 6c13056..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/DO.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.012706,"37":0,"38":0.006353,"39":0,"40":0,"41":0.006353,"42":0,"43":0.006353,"44":0,"45":0.012706,"46":0,"47":0,"48":0.006353,"49":0.476475,"50":0,"51":0,"52":0.006353,"53":0.012706,"54":0,"55":0.006353,"56":0.012706,"57":0.006353,"58":0.019059,"59":0.012706,"60":0.006353,"61":0.006353,"62":0.012706,"63":0.044471,"64":0.006353,"65":0.06353,"66":0.019059,"67":0.06353,"68":0.019059,"69":0.044471,"70":0.203296,"71":0.336709,"72":0.266826,"73":0.228708,"74":0.088942,"75":0.184237,"76":0.158825,"77":0.19059,"78":0.578123,"79":25.85671,"80":0.031765,"81":0.031765,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.006353,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.012706,"48":0.006353,"49":0,"50":0,"51":0,"52":0.044471,"53":0.006353,"54":0,"55":0.006353,"56":0.012706,"57":0.006353,"58":0,"59":0,"60":0.006353,"61":0,"62":0,"63":0.019059,"64":0.038118,"65":0.031765,"66":0.025412,"67":0.006353,"68":0.101648,"69":0.025412,"70":0.031765,"71":0.387533,"72":0.95295,"73":0.006353,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.006353,"47":0,"48":0.006353,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.006353,"57":0.006353,"58":0.012706,"60":0,"62":0,"63":0,"64":0.082589,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.012706,"9":0,"10":0.012706,"11":0.038118,"12":0.184237,"13":1.791546,_:"0","3.1":0,"3.2":0,"5.1":3.328972,"6.1":0,"7.1":0,"9.1":0.012706,"10.1":0.057177,"11.1":0.184237,"12.1":0.514593},G:{"8":0.0014725278583575,"3.2":0.0014725278583575,"4.0-4.1":0.002945055716715,"4.2-4.3":0,"5.0-5.1":0.008835167150145,"6.0-6.1":0.0044175835750725,"7.0-7.1":0.01178022286686,"8.1-8.4":0.022087917875363,"9.0-9.2":0.019142862158648,"9.3":0.18259345443633,"10.0-10.2":0.057428586475943,"10.3":0.20173631659498,"11.0-11.2":0.16197806441933,"11.3-11.4":0.27536270951285,"12.0-12.1":0.37107702030609,"12.2-12.4":2.2176269546864,"13.0-13.1":1.0248793894168,"13.2":0.43145066249875,"13.3":9.724573976593},I:{"3":0.0009103372859025,"4":0.009103372859025,_:"76","2.1":0,"2.2":0.0027310118577075,"2.3":0.0009103372859025,"4.1":0.015475733860343,"4.2-4.3":0.40236908036891,"4.4":0,"4.4.3-4.4.4":0.25944612648221},B:{"12":0.006353,"13":0.006353,"14":0.012706,"15":0.006353,"16":0.019059,"17":0.114354,"18":0.6353,_:"79"},A:{"6":0,"7":0,"8":0.047806325,"9":0.01365895,"10":0.01365895,"11":0.198054775,"5.5":0},P:{"4":0.1218046993007,"5.0-5.4":0.020300783216783,"6.2-6.4":0.030451174825175,"7.2-7.4":0.040601566433566,"8.2":0.020300783216783,"9.2":0.13195509090909,"10.1":1.0556407272727},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.0091175,"11":0.0273525},J:{"7":0,"10":0.003647},R:{_:"0"},M:{"0":0.098469},O:{"0":0.07294},Q:{"1.2":0.003647},S:{"2.5":0},H:{"0":0.086318599656357},L:{"0":42.477497}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/DZ.js b/assets/node_modules/caniuse-lite/data/regions/DZ.js
deleted file mode 100644
index 4816d6d..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/DZ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.004497,"12":0,"13":0.008994,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.004497,"26":0.008994,"27":0,"28":0.004497,"29":0.004497,"30":0.008994,"31":0.026982,"32":0.004497,"33":0.026982,"34":0.004497,"35":0.004497,"36":0.004497,"37":0,"38":0.008994,"39":0.004497,"40":0.031479,"41":0,"42":0.004497,"43":0.238341,"44":0.004497,"45":0.004497,"46":0.008994,"47":0.004497,"48":0.008994,"49":0.350766,"50":0.013491,"51":0.008994,"52":0.004497,"53":0.008994,"54":0.004497,"55":0.008994,"56":0.013491,"57":0.008994,"58":0.026982,"59":0.004497,"60":0.013491,"61":0.053964,"62":0.013491,"63":0.130413,"64":0.008994,"65":0.026982,"66":0.013491,"67":0.031479,"68":0.013491,"69":0.080946,"70":0.049467,"71":0.080946,"72":0.107928,"73":0.067455,"74":0.103431,"75":0.080946,"76":0.107928,"77":0.112425,"78":0.265323,"79":10.977177,"80":0.017988,"81":0.026982,"82":0},C:{"2":0,"3":0.004497,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0.004497,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.004497,"31":0.004497,"32":0.008994,"33":0.004497,"34":0,"35":0,"36":0,"37":0,"38":0.004497,"39":0,"40":0.004497,"41":0.004497,"42":0.004497,"43":0.017988,"44":0.004497,"45":0.004497,"46":0,"47":0.022485,"48":0.013491,"49":0.004497,"50":0.004497,"51":0.004497,"52":0.107928,"53":0,"54":0.004497,"55":0.004497,"56":0.013491,"57":0.008994,"58":0.004497,"59":0.004497,"60":0.008994,"61":0.004497,"62":0.004497,"63":0.008994,"64":0.017988,"65":0.013491,"66":0.013491,"67":0.017988,"68":0.121419,"69":0.017988,"70":0.035976,"71":0.566622,"72":1.299633,"73":0.026982,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.004497,"37":0.022485,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.004497,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.008994,"57":0,"58":0.004497,"60":0.004497,"62":0.004497,"63":0.008994,"64":0.058461,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.004497},E:{"4":0,"5":0,"6":0,"7":0.026982,"8":0.022485,"9":0,"10":0.004497,"11":0.008994,"12":0.040473,"13":0.143904,_:"0","3.1":0,"3.2":0,"5.1":0.197868,"6.1":0,"7.1":0,"9.1":0.013491,"10.1":0.035976,"11.1":0.04497,"12.1":0.094437},G:{"8":0.0002160355106532,"3.2":0.0002160355106532,"4.0-4.1":0.00043207102130639,"4.2-4.3":0,"5.0-5.1":0.0012962130639192,"6.0-6.1":0.00064810653195959,"7.0-7.1":0.0017282840852256,"8.1-8.4":0.0032405326597979,"9.0-9.2":0.0028084616384915,"9.3":0.026788403320996,"10.0-10.2":0.0084253849154746,"10.3":0.029596864959488,"11.0-11.2":0.023763906171852,"11.3-11.4":0.040398640492148,"12.0-12.1":0.054440948684605,"12.2-12.4":0.32534947904371,"13.0-13.1":0.15036071541462,"13.2":0.063298404621386,"13.3":1.4266985123537},I:{"3":0.00087673649538867,"4":0.0087673649538867,_:"76","2.1":0,"2.2":0.002630209486166,"2.3":0.00087673649538867,"4.1":0.014904520421607,"4.2-4.3":0.38751753096179,"4.4":0,"4.4.3-4.4.4":0.24986990118577},B:{"12":0.008994,"13":0.004497,"14":0.008994,"15":0.008994,"16":0.013491,"17":0.031479,"18":0.152898,_:"79"},A:{"6":0,"7":0.005059125,"8":0.086005125,"9":0.005059125,"10":0.01011825,"11":0.177069375,"5.5":0},P:{"4":0.37835178358209,"5.0-5.4":0.051128619402985,"6.2-6.4":0.061354343283582,"7.2-7.4":0.21474020149254,"8.2":0.061354343283582,"9.2":0.3579003358209,"10.1":1.5747614776119},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.010318125,"11":0.072226875},J:{"7":0,"10":0.005503},R:{_:"0"},M:{"0":0.159587},O:{"0":0.808941},Q:{"1.2":0.033018},S:{"2.5":0},H:{"0":0.65644549484536},L:{"0":72.393758}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/EC.js b/assets/node_modules/caniuse-lite/data/regions/EC.js
deleted file mode 100644
index 3f628cc..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/EC.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.007635,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.007635,"37":0,"38":0.06108,"39":0,"40":0.007635,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.007635,"48":0.007635,"49":0.404655,"50":0,"51":0,"52":0,"53":0.053445,"54":0.007635,"55":0.01527,"56":0.007635,"57":0.007635,"58":0.022905,"59":0.007635,"60":0.007635,"61":0.01527,"62":0.007635,"63":0.07635,"64":0.007635,"65":0.083985,"66":0.022905,"67":0.145065,"68":0.04581,"69":0.07635,"70":0.129795,"71":0.13743,"72":0.129795,"73":0.1527,"74":0.21378,"75":0.19851,"76":0.21378,"77":0.22905,"78":0.633705,"79":40.167735,"80":0.03054,"81":0.01527,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.007635,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.007635,"44":0.007635,"45":0.007635,"46":0,"47":0.007635,"48":0.038175,"49":0.007635,"50":0.007635,"51":0.007635,"52":0.038175,"53":0.007635,"54":0.007635,"55":0,"56":0.022905,"57":0.007635,"58":0,"59":0.007635,"60":0.03054,"61":0.022905,"62":0.007635,"63":0.01527,"64":0.022905,"65":0.03054,"66":0.04581,"67":0.022905,"68":0.114525,"69":0.06108,"70":0.09162,"71":1.244505,"72":3.57318,"73":0.038175,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.007635,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.007635,"57":0,"58":0,"60":0,"62":0,"63":0.007635,"64":0.12216,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.083985,"9":0.01527,"10":0.053445,"11":0.07635,"12":0.297765,"13":2.65698,_:"0","3.1":0,"3.2":0,"5.1":1.72551,"6.1":0,"7.1":0,"9.1":0.04581,"10.1":0.19851,"11.1":0.36648,"12.1":0.80931},G:{"8":0.00048772431729519,"3.2":0.00048772431729519,"4.0-4.1":0.00097544863459038,"4.2-4.3":0,"5.0-5.1":0.0029263459037711,"6.0-6.1":0.0014631729518856,"7.0-7.1":0.0039017945383615,"8.1-8.4":0.0073158647594278,"9.0-9.2":0.0063404161248375,"9.3":0.060477815344603,"10.0-10.2":0.019021248374512,"10.3":0.066818231469441,"11.0-11.2":0.053649674902471,"11.3-11.4":0.0912044473342,"12.0-12.1":0.12290652795839,"12.2-12.4":0.73451282184655,"13.0-13.1":0.33945612483745,"13.2":0.14290322496749,"13.3":3.2209313914174},I:{"3":0.00035288537549407,"4":0.0035288537549407,_:"76","2.1":0,"2.2":0.0010586561264822,"2.3":0.00035288537549407,"4.1":0.0059990513833992,"4.2-4.3":0.15597533596838,"4.4":0,"4.4.3-4.4.4":0.10057233201581},B:{"12":0.007635,"13":0.007635,"14":0.007635,"15":0.007635,"16":0.007635,"17":0.053445,"18":0.572625,_:"79"},A:{"6":0,"7":0,"8":0.01527,"9":0.007635,"10":0.007635,"11":0.18324,"5.5":0},P:{"4":0.2140325,"5.0-5.4":0,"6.2-6.4":0.010192023809524,"7.2-7.4":0.040768095238095,"8.2":0.010192023809524,"9.2":0.11211226190476,"10.1":1.304579047619},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.044935},J:{"7":0,"10":0.00473},R:{_:"0"},M:{"0":0.087505},O:{"0":0.044935},Q:{"1.2":0.016555},S:{"2.5":0},H:{"0":0.082844080756014},L:{"0":33.497785}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/EE.js b/assets/node_modules/caniuse-lite/data/regions/EE.js
deleted file mode 100644
index c0af6ec..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/EE.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0.007021,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.007021,"37":0,"38":0.007021,"39":0.021063,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.014042,"49":0.301903,"50":0,"51":0.007021,"52":0,"53":0.014042,"54":0,"55":0.007021,"56":0.007021,"57":0.007021,"58":0.028084,"59":0.007021,"60":0.021063,"61":0.007021,"62":0.007021,"63":0.063189,"64":0.014042,"65":0.028084,"66":0.014042,"67":0.021063,"68":0.035105,"69":0.154462,"70":0.084252,"71":0.056168,"72":0.133399,"73":0.133399,"74":0.056168,"75":0.105315,"76":0.133399,"77":7.147378,"78":0.821457,"79":26.223435,"80":0.056168,"81":0.014042,"82":0},C:{"2":0,"3":0.007021,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0.007021,"18":0,"19":0,"20":0,"21":0.021063,"22":0.007021,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.007021,"32":0.007021,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0.007021,"42":0,"43":0,"44":0.007021,"45":0.007021,"46":0,"47":0.007021,"48":0.007021,"49":0,"50":0.007021,"51":0,"52":0.161483,"53":0.007021,"54":0,"55":0.007021,"56":0.042126,"57":0.007021,"58":0.007021,"59":0,"60":0.098294,"61":0,"62":0.007021,"63":0.007021,"64":0.021063,"65":0.014042,"66":0.049147,"67":0.042126,"68":0.259777,"69":0.042126,"70":0.056168,"71":1.200591,"72":2.429266,"73":0.014042,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.014042,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.007021,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0.007021,"55":0.007021,"56":0,"57":0,"58":0.049147,"60":0.007021,"62":0.007021,"63":0,"64":0.077231,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.007021},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.007021,"11":0.021063,"12":0.119357,"13":2.632875,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.007021,"10.1":0.07021,"11.1":0.133399,"12.1":0.449344},G:{"8":0.0016201364409323,"3.2":0.0016201364409323,"4.0-4.1":0.0032402728818646,"4.2-4.3":0,"5.0-5.1":0.0097208186455937,"6.0-6.1":0.0048604093227968,"7.0-7.1":0.012961091527458,"8.1-8.4":0.024302046613984,"9.0-9.2":0.02106177373212,"9.3":0.2008969186756,"10.0-10.2":0.063185321196359,"10.3":0.22195869240772,"11.0-11.2":0.17821500850255,"11.3-11.4":0.30296551445434,"12.0-12.1":0.40827438311493,"12.2-12.4":2.439925480044,"13.0-13.1":1.1276149628889,"13.2":0.47469997719316,"13.3":10.699381055917},I:{"3":0.00020015283267457,"4":0.0020015283267457,_:"76","2.1":0,"2.2":0.00060045849802372,"2.3":0.00020015283267457,"4.1":0.0034025981554677,"4.2-4.3":0.088467552042161,"4.4":0,"4.4.3-4.4.4":0.057043557312253},B:{"12":0,"13":0.007021,"14":0.014042,"15":0.014042,"16":0.014042,"17":0.105315,"18":1.4042,_:"79"},A:{"6":0.0071098734177215,"7":0.0071098734177215,"8":0.042659240506329,"9":0.0071098734177215,"10":0.014219746835443,"11":1.6068313924051,"5.5":0},P:{"4":0.071898567567568,"5.0-5.4":0.010271223938224,"6.2-6.4":0.010271223938224,"7.2-7.4":0.030813671814672,"8.2":0.041084895752896,"9.2":0.16433958301158,"10.1":2.2185843706564},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.008937},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.184698},O:{"0":0.014895},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.14383656185567},L:{"0":29.837115}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/EG.js b/assets/node_modules/caniuse-lite/data/regions/EG.js
deleted file mode 100644
index 0cc9615..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/EG.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.004786,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0.009572,"20":0,"21":0,"22":0,"23":0,"24":0.028716,"25":0.004786,"26":0.062218,"27":0.004786,"28":0.004786,"29":0.004786,"30":0.014358,"31":0.014358,"32":0.004786,"33":0.09572,"34":0.004786,"35":0.02393,"36":0.014358,"37":0.004786,"38":0.009572,"39":0.004786,"40":0.043074,"41":0.004786,"42":0.004786,"43":0.31109,"44":0.009572,"45":0.009572,"46":0.019144,"47":0.014358,"48":0.014358,"49":0.272802,"50":0.009572,"51":0.02393,"52":0.009572,"53":0.02393,"54":0.019144,"55":0.019144,"56":0.052646,"57":0.014358,"58":0.02393,"59":0.014358,"60":0.033502,"61":0.028716,"62":0.028716,"63":0.062218,"64":0.014358,"65":0.019144,"66":0.009572,"67":0.019144,"68":0.009572,"69":0.090934,"70":0.038288,"71":0.086148,"72":0.04786,"73":0.076576,"74":0.16751,"75":0.110078,"76":0.172296,"77":0.153152,"78":0.291946,"79":14.396288,"80":0.019144,"81":0.02393,"82":0},C:{"2":0.009572,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0.009572,"16":0,"17":0,"18":0.009572,"19":0,"20":0,"21":0.014358,"22":0,"23":0.009572,"24":0,"25":0.019144,"26":0,"27":0,"28":0,"29":0,"30":0.009572,"31":0.004786,"32":0,"33":0,"34":0,"35":0,"36":0.004786,"37":0,"38":0.004786,"39":0.004786,"40":0.004786,"41":0.004786,"42":0.004786,"43":0.014358,"44":0.004786,"45":0.004786,"46":0.004786,"47":0.019144,"48":0.033502,"49":0.004786,"50":0.009572,"51":0.019144,"52":0.157938,"53":0.014358,"54":0.009572,"55":0.014358,"56":0.02393,"57":0.019144,"58":0.009572,"59":0.004786,"60":0.009572,"61":0.004786,"62":0.009572,"63":0.009572,"64":0.009572,"65":0.009572,"66":0.014358,"67":0.009572,"68":0.110078,"69":0.019144,"70":0.028716,"71":0.521674,"72":1.397512,"73":0.052646,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0.004786,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.004786,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.004786,"37":0.009572,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.009572,"44":0,"45":0,"46":0.004786,"47":0,"48":0,"49":0.009572,"50":0,"51":0.004786,"52":0.004786,"53":0.004786,"54":0,"55":0.004786,"56":0.02393,"57":0.004786,"58":0.004786,"60":0.004786,"62":0.028716,"63":0.100506,"64":0.100506,"9.5-9.6":0,"10.0-10.1":0.009572,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.004786},E:{"4":0,"5":0.009572,"6":0,"7":0.014358,"8":0.009572,"9":0.004786,"10":0.009572,"11":0.019144,"12":0.038288,"13":0.368522,_:"0","3.1":0,"3.2":0,"5.1":0.435526,"6.1":0,"7.1":0,"9.1":0.009572,"10.1":0.033502,"11.1":0.043074,"12.1":0.100506},G:{"8":0.0008031511453436,"3.2":0.0008031511453436,"4.0-4.1":0.0016063022906872,"4.2-4.3":0,"5.0-5.1":0.0048189068720616,"6.0-6.1":0.0024094534360308,"7.0-7.1":0.0064252091627488,"8.1-8.4":0.012047267180154,"9.0-9.2":0.010440964889467,"9.3":0.099590742022607,"10.0-10.2":0.031322894668401,"10.3":0.11003170691207,"11.0-11.2":0.088346625987796,"11.3-11.4":0.15018926417925,"12.0-12.1":0.20239408862659,"12.2-12.4":1.2095456248875,"13.0-13.1":0.55899319715915,"13.2":0.23532328558568,"13.3":5.3040101638492},I:{"3":0.001121022397892,"4":0.01121022397892,_:"76","2.1":0,"2.2":0.0033630671936759,"2.3":0.001121022397892,"4.1":0.019057380764163,"4.2-4.3":0.49549189986825,"4.4":0,"4.4.3-4.4.4":0.31949138339921},B:{"12":0.004786,"13":0.009572,"14":0.014358,"15":0.009572,"16":0.014358,"17":0.043074,"18":0.277588,_:"79"},A:{"6":0,"7":0,"8":0.11177150769231,"9":0.048596307692308,"10":0.029157784615385,"11":0.1263504,"5.5":0},P:{"4":0.34866731950207,"5.0-5.4":0.020509842323651,"6.2-6.4":0.030764763485477,"7.2-7.4":0.082039369294606,"8.2":0.030764763485477,"9.2":0.22560826556017,"10.1":1.6920619917012},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.014773,"11":0.073865},J:{"7":0,"10":0.005214},R:{_:"0"},M:{"0":0.135564},O:{"0":0.62568},Q:{"1.2":0.005214},S:{"2.5":0},H:{"0":0.52324550515464},L:{"0":62.77709}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/ER.js b/assets/node_modules/caniuse-lite/data/regions/ER.js
deleted file mode 100644
index 7b1e32e..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/ER.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.035164,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.061537,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.017582,"50":0.386804,"51":0,"52":0,"53":0,"54":0.035164,"55":0.043955,"56":0.096701,"57":0,"58":0,"59":0.668116,"60":0,"61":0.123074,"62":0,"63":0.421968,"64":0.246148,"65":0,"66":0,"67":0.061537,"68":0,"69":0.123074,"70":0,"71":0,"72":0.035164,"73":0.140656,"74":1.380187,"75":0.140656,"76":0.26373,"77":0.281312,"78":0.606579,"79":4.166934,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":1.336232,"5":0.017582,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0.017582,"18":0,"19":0.017582,"20":0,"21":0,"22":0,"23":0.079119,"24":0,"25":0.035164,"26":0.035164,"27":0.061537,"28":0,"29":0,"30":0.712071,"31":0.158238,"32":0.043955,"33":0.26373,"34":0.061537,"35":0.079119,"36":0.167029,"37":0.017582,"38":0.035164,"39":0.509878,"40":1.134039,"41":0.219775,"42":3.903204,"43":2.320824,"44":0.123074,"45":0.369222,"46":0.061537,"47":2.28566,"48":0.237357,"49":0.184611,"50":0.483505,"51":0.043955,"52":1.072502,"53":4.808677,"54":0.079119,"55":0.061537,"56":0.501087,"57":3.032895,"58":0.167029,"59":0.43955,"60":0.096701,"61":6.347102,"62":1.696663,"63":0.096701,"64":0.123074,"65":0.298894,"66":20.764342,"67":0.167029,"68":2.408734,"69":1.775782,"70":1.213158,"71":1.652708,"72":2.997731,"73":0.184611,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.035164,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.017582,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.035164,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0.043955,"8":0,"9":0,"10":0.017582,"11":0,"12":0,"13":0.035164,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0,"11.1":0,"12.1":0.017582},G:{"8":0.00023470691207362,"3.2":0.00023470691207362,"4.0-4.1":0.00046941382414724,"4.2-4.3":0,"5.0-5.1":0.0014082414724417,"6.0-6.1":0.00070412073622087,"7.0-7.1":0.001877655296589,"8.1-8.4":0.0035206036811043,"9.0-9.2":0.0030511898569571,"9.3":0.029103657097129,"10.0-10.2":0.0091535695708713,"10.3":0.032154846954086,"11.0-11.2":0.025817760328098,"11.3-11.4":0.043890192557767,"12.0-12.1":0.059146141842553,"12.2-12.4":0.35346860958287,"13.0-13.1":0.16335601080324,"13.2":0.068769125237571,"13.3":1.5500044473342},I:{"3":0.00012799868247694,"4":0.0012799868247694,_:"76","2.1":0,"2.2":0.00038399604743083,"2.3":0.00012799868247694,"4.1":0.002175977602108,"4.2-4.3":0.056575417654809,"4.4":0,"4.4.3-4.4.4":0.036479624505929},B:{"12":0.202193,"13":0,"14":0.035164,"15":0.017582,"16":0.167029,"17":0.079119,"18":0.158238,_:"79"},A:{"6":0,"7":0,"8":0.065338513513514,"9":0,"10":0,"11":0.41816648648649,"5.5":0},P:{"4":0.32815804712042,"5.0-5.4":0.10938601570681,"6.2-6.4":0.72592537696335,"7.2-7.4":0.2983254973822,"8.2":0.039776732984293,"9.2":0.11933019895288,"10.1":0.27843713089005},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.249054},O:{"0":0.87048},Q:{"1.2":1.952535},S:{"2.5":0},H:{"0":0.083556025773196},L:{"0":10.968532}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/ES.js b/assets/node_modules/caniuse-lite/data/regions/ES.js
deleted file mode 100644
index a4df41c..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/ES.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.00497,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.00994,"39":0,"40":0.00497,"41":0,"42":0,"43":0.00497,"44":0,"45":0,"46":0.00497,"47":0.00497,"48":0.00497,"49":0.3479,"50":0,"51":0.00497,"52":0.00497,"53":0.01491,"54":0.01988,"55":0.00497,"56":0.00994,"57":0.00994,"58":0.01491,"59":0.00497,"60":0.00497,"61":0.01988,"62":0.00497,"63":0.02982,"64":0.00994,"65":0.02485,"66":0.01491,"67":0.03479,"68":0.01491,"69":0.03479,"70":0.05964,"71":0.05964,"72":0.05964,"73":0.05467,"74":0.0497,"75":0.10437,"76":0.08449,"77":0.10934,"78":0.34293,"79":14.89012,"80":0.01491,"81":0.00994,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.01491,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.00497,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.00994,"46":0,"47":0.00497,"48":0.02982,"49":0.00497,"50":0.00497,"51":0.00497,"52":0.09443,"53":0.00497,"54":0.00497,"55":0.01988,"56":0.01491,"57":0.00497,"58":0.00497,"59":0.00497,"60":0.03479,"61":0.00497,"62":0.00497,"63":0.00994,"64":0.01491,"65":0.01491,"66":0.01988,"67":0.02485,"68":0.18886,"69":0.03479,"70":0.04473,"71":0.58149,"72":1.57549,"73":0.00994,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.00497,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.00994,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.00497,"56":0.00497,"57":0,"58":0.00497,"60":0,"62":0.00497,"63":0,"64":0.02982,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.00994,"9":0.00497,"10":0.00994,"11":0.01988,"12":0.07952,"13":1.60034,_:"0","3.1":0,"3.2":0,"5.1":0.05964,"6.1":0,"7.1":0,"9.1":0.01988,"10.1":0.0497,"11.1":0.11928,"12.1":0.2485},G:{"8":0.001484689406822,"3.2":0.001484689406822,"4.0-4.1":0.0029693788136441,"4.2-4.3":0,"5.0-5.1":0.0089081364409323,"6.0-6.1":0.0044540682204661,"7.0-7.1":0.011877515254576,"8.1-8.4":0.022270341102331,"9.0-9.2":0.019300962288687,"9.3":0.18410148644593,"10.0-10.2":0.05790288686606,"10.3":0.20340244873462,"11.0-11.2":0.16331583475043,"11.3-11.4":0.27763691907572,"12.0-12.1":0.37414173051916,"12.2-12.4":2.235942246674,"13.0-13.1":1.0333438271481,"13.2":0.43501399619886,"13.3":9.8048888426528},I:{"3":0.0004668906455863,"4":0.004668906455863,_:"76","2.1":0,"2.2":0.0014006719367589,"2.3":0.0004668906455863,"4.1":0.0079371409749671,"4.2-4.3":0.20636566534914,"4.4":0,"4.4.3-4.4.4":0.13306383399209},B:{"12":0,"13":0.00497,"14":0.00497,"15":0.00994,"16":0.00994,"17":0.05964,"18":0.994,_:"79"},A:{"6":0,"7":0,"8":0.025205,"9":0.005041,"10":0.010082,"11":0.665412,"5.5":0},P:{"4":0.12432717131474,"5.0-5.4":0.010360597609562,"6.2-6.4":0.010360597609562,"7.2-7.4":0.031081792828685,"8.2":0.020721195219124,"9.2":0.12432717131474,"10.1":2.2068072908367},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.01509},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.2515},O:{"0":0.06539},Q:{"1.2":0.01509},S:{"2.5":0},H:{"0":0.18572108247423},L:{"0":56.20214}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/ET.js b/assets/node_modules/caniuse-lite/data/regions/ET.js
deleted file mode 100644
index 32d3fbf..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/ET.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.020745,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.004149,"26":0.016596,"27":0,"28":0.004149,"29":0,"30":0,"31":0.012447,"32":0.004149,"33":0.099576,"34":0,"35":0.004149,"36":0.012447,"37":0.004149,"38":0.004149,"39":0,"40":0.116172,"41":0,"42":0.004149,"43":0.531072,"44":0.004149,"45":0,"46":0.008298,"47":0.004149,"48":0,"49":0.037341,"50":0.008298,"51":0.008298,"52":0.004149,"53":0.024894,"54":0.004149,"55":0.024894,"56":0.008298,"57":0.008298,"58":0.029043,"59":0.004149,"60":0.078831,"61":0.04149,"62":0.004149,"63":0.132768,"64":0.008298,"65":0.020745,"66":0.004149,"67":0.029043,"68":0.008298,"69":0.161811,"70":0.049788,"71":0.020745,"72":0.024894,"73":0.04149,"74":0.099576,"75":0.074682,"76":0.062235,"77":0.149364,"78":0.211599,"79":7.0533,"80":0.04149,"81":0.020745,"82":0},C:{"2":0,"3":0,"4":0.004149,"5":0.004149,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.004149,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0.004149,"20":0.024894,"21":0,"22":0,"23":0,"24":0.004149,"25":0.004149,"26":0.004149,"27":0.008298,"28":0.004149,"29":0.008298,"30":0.008298,"31":0.008298,"32":0.004149,"33":0.008298,"34":0.016596,"35":0.016596,"36":0.008298,"37":0.016596,"38":0.008298,"39":0.012447,"40":0.016596,"41":0.004149,"42":0.012447,"43":0.04149,"44":0.033192,"45":0.012447,"46":0.008298,"47":0.087129,"48":0.058086,"49":0.012447,"50":0.004149,"51":0.004149,"52":0.132768,"53":0.012447,"54":0.008298,"55":0.004149,"56":0.033192,"57":0.016596,"58":0.012447,"59":0.008298,"60":0.016596,"61":0.037341,"62":0.020745,"63":0.008298,"64":0.008298,"65":0.020745,"66":0.029043,"67":0.020745,"68":0.157662,"69":0.037341,"70":0.070533,"71":0.759267,"72":1.564173,"73":0.282132,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0.004149,"15":0.004149,"16":0.004149,"17":0.004149,"18":0.004149,"19":0.008298,"20":0.049788,"21":0.004149,"22":0.004149,"23":0.029043,"24":0,"25":0,"26":0,"27":0,"28":0.016596,"29":0.004149,"30":0.012447,"31":0,"32":0.008298,"33":0.004149,"34":0.004149,"35":0.004149,"36":0.004149,"37":0.004149,"38":0.008298,"39":0,"40":0.004149,"41":0,"42":0.008298,"43":0,"44":0,"45":0.012447,"46":0.066384,"47":0,"48":0,"49":0,"50":0.004149,"51":0,"52":0,"53":0.024894,"54":0.008298,"55":0.004149,"56":0.012447,"57":0.004149,"58":0.008298,"60":0.004149,"62":0.004149,"63":0.016596,"64":0.058086,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.128619},E:{"4":0,"5":0,"6":0,"7":0.012447,"8":0.024894,"9":0.008298,"10":0.008298,"11":0.004149,"12":0.024894,"13":0.199152,_:"0","3.1":0,"3.2":0,"5.1":0.016596,"6.1":0,"7.1":0,"9.1":0.004149,"10.1":0.012447,"11.1":0.016596,"12.1":0.053937},G:{"8":0.00032264919475843,"3.2":0.00032264919475843,"4.0-4.1":0.00064529838951686,"4.2-4.3":0,"5.0-5.1":0.0019358951685506,"6.0-6.1":0.00096794758427528,"7.0-7.1":0.0025811935580674,"8.1-8.4":0.0048397379213764,"9.0-9.2":0.0041944395318596,"9.3":0.040008500150045,"10.0-10.2":0.012583318595579,"10.3":0.044202939681905,"11.0-11.2":0.035491411423427,"11.3-11.4":0.060335399419826,"12.0-12.1":0.081307597079124,"12.2-12.4":0.48590968730619,"13.0-13.1":0.22456383955187,"13.2":0.094536214064219,"13.3":2.1307752821847},I:{"3":0.0012380487483531,"4":0.012380487483531,_:"76","2.1":0,"2.2":0.0037141462450593,"2.3":0.0012380487483531,"4.1":0.021046828722003,"4.2-4.3":0.54721754677207,"4.4":0,"4.4.3-4.4.4":0.35284389328063},B:{"12":0.112023,"13":0.049788,"14":0.020745,"15":0.024894,"16":0.033192,"17":0.128619,"18":0.423198,_:"79"},A:{"6":0,"7":0,"8":0.056416862068966,"9":0,"10":0.013019275862069,"11":0.30812286206897,"5.5":0},P:{"4":0.78576165748031,"5.0-5.4":0.11225166535433,"6.2-6.4":0.08163757480315,"7.2-7.4":0.36736908661417,"8.2":0.051023484251968,"9.2":0.40818787401575,"10.1":0.76535226377953},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.040957,"11":0.081914},J:{"7":0,"10":0.005851},R:{_:"0"},M:{"0":0.157977},O:{"0":3.662726},Q:{"1.2":0.046808},S:{"2.5":0},H:{"0":22.606082441581},L:{"0":35.629256}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/FI.js b/assets/node_modules/caniuse-lite/data/regions/FI.js
deleted file mode 100644
index ea84d05..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/FI.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.005848,"30":0,"31":0,"32":0,"33":0,"34":0.005848,"35":0,"36":0,"37":0,"38":0.017544,"39":0,"40":0.005848,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005848,"47":0,"48":0,"49":0.450296,"50":0,"51":0,"52":0,"53":0.017544,"54":0.005848,"55":0.005848,"56":0.046784,"57":0.011696,"58":0.011696,"59":0.064328,"60":0.134504,"61":0.005848,"62":0.005848,"63":0.035088,"64":0.023392,"65":0.017544,"66":0.046784,"67":0.035088,"68":0.017544,"69":0.046784,"70":0.11696,"71":0.245616,"72":0.20468,"73":0.093568,"74":0.035088,"75":0.064328,"76":0.953224,"77":0.169592,"78":0.713456,"79":16.789608,"80":0.035088,"81":0.017544,"82":0},C:{"2":0,"3":0.005848,"4":0.005848,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.040936,"22":0.005848,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.02924,"38":0,"39":0,"40":0,"41":0,"42":0.005848,"43":0.005848,"44":0,"45":0,"46":0,"47":0.005848,"48":0.017544,"49":0,"50":0.081872,"51":0.005848,"52":0.105264,"53":0,"54":0.005848,"55":0.005848,"56":0.02924,"57":0,"58":0.192984,"59":0.011696,"60":0.040936,"61":0,"62":0.005848,"63":0.052632,"64":0.040936,"65":0.052632,"66":0.035088,"67":0.046784,"68":0.514624,"69":0.023392,"70":0.070176,"71":1.368432,"72":3.228096,"73":0.02924,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005848,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0.005848,"45":0,"46":0.011696,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.005848,"54":0,"55":0,"56":0.011696,"57":0.005848,"58":0.017544,"60":0,"62":0,"63":0,"64":0.023392,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.005848,"9":0.011696,"10":0.011696,"11":0.023392,"12":0.081872,"13":2.286568,_:"0","3.1":0,"3.2":0,"5.1":0.005848,"6.1":0.005848,"7.1":0,"9.1":0.023392,"10.1":0.076024,"11.1":0.134504,"12.1":0.2924},G:{"8":0.0017878467540262,"3.2":0.0017878467540262,"4.0-4.1":0.0035756935080524,"4.2-4.3":0,"5.0-5.1":0.010727080524157,"6.0-6.1":0.0053635402620786,"7.0-7.1":0.01430277403221,"8.1-8.4":0.026817701310393,"9.0-9.2":0.023242007802341,"9.3":0.22169299749925,"10.0-10.2":0.069726023407022,"10.3":0.24493500530159,"11.0-11.2":0.19666314294288,"11.3-11.4":0.3343273430029,"12.0-12.1":0.4505373820146,"12.2-12.4":2.6924972115635,"13.0-13.1":1.2443413408022,"13.2":0.52383909892968,"13.3":11.806939963589},I:{"3":0.00029632674571805,"4":0.0029632674571805,_:"76","2.1":0,"2.2":0.00088898023715415,"2.3":0.00029632674571805,"4.1":0.0050375546772069,"4.2-4.3":0.13097642160738,"4.4":0,"4.4.3-4.4.4":0.084453122529644},B:{"12":0,"13":0.005848,"14":0.023392,"15":0.011696,"16":0.040936,"17":0.105264,"18":1.573112,_:"79"},A:{"6":0.0059864142011834,"7":0,"8":0.047891313609467,"9":0.0059864142011834,"10":0.011972828402367,"11":0.9398670295858,"5.5":0},P:{"4":0.10440077170418,"5.0-5.4":0.031320231511254,"6.2-6.4":0.020880154340836,"7.2-7.4":0.10440077170418,"8.2":0.05220038585209,"9.2":0.34452254662379,"10.1":2.4742982893891},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.037368},J:{"7":0,"10":0.004152},R:{_:"0"},M:{"0":0.452568},O:{"0":0.2076},Q:{"1.2":0.008304},S:{"2.5":0},H:{"0":0.36163777319588},L:{"0":41.969528}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/FJ.js b/assets/node_modules/caniuse-lite/data/regions/FJ.js
deleted file mode 100644
index 08816e4..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/FJ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0.056895,"40":0.003793,"41":0,"42":0,"43":0.003793,"44":0,"45":0,"46":0,"47":0,"48":0.011379,"49":0.049309,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.003793,"56":0,"57":0,"58":0.018965,"59":0,"60":0.003793,"61":0.003793,"62":0,"63":0.242752,"64":0.003793,"65":0.041723,"66":0.003793,"67":0.003793,"68":0.007586,"69":0.22758,"70":0.018965,"71":0.003793,"72":0.018965,"73":0.034137,"74":0.022758,"75":0.030344,"76":0.03793,"77":0.064481,"78":0.201029,"79":7.938749,"80":0.007586,"81":0.003793,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.007586,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0.003793,"45":0,"46":0,"47":0.026551,"48":0.060688,"49":0,"50":0,"51":0,"52":0.026551,"53":0,"54":0.007586,"55":0,"56":0.015172,"57":0.003793,"58":0.011379,"59":0,"60":0.011379,"61":0.003793,"62":0.003793,"63":0,"64":0.003793,"65":0.011379,"66":0.018965,"67":0.03793,"68":0.109997,"69":0.144134,"70":0.022758,"71":0.326198,"72":1.031696,"73":0.068274,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.003793,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.003793,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.003793,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.003793,"11":0.049309,"12":0.147927,"13":0.694119,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.011379,"10.1":0.022758,"11.1":0.068274,"12.1":0.147927},G:{"8":0.0008035533660098,"3.2":0.0008035533660098,"4.0-4.1":0.0016071067320196,"4.2-4.3":0,"5.0-5.1":0.0048213201960588,"6.0-6.1":0.0024106600980294,"7.0-7.1":0.0064284269280784,"8.1-8.4":0.012053300490147,"9.0-9.2":0.010446193758127,"9.3":0.099640617385216,"10.0-10.2":0.031338581274382,"10.3":0.11008681114334,"11.0-11.2":0.088390870261078,"11.3-11.4":0.15026447944383,"12.0-12.1":0.20249544823447,"12.2-12.4":1.2101513692108,"13.0-13.1":0.55927314274282,"13.2":0.23544113624087,"13.3":5.3066664291287},I:{"3":0.00053382345191041,"4":0.0053382345191041,_:"76","2.1":0,"2.2":0.0016014703557312,"2.3":0.00053382345191041,"4.1":0.0090749986824769,"4.2-4.3":0.2359499657444,"4.4":0,"4.4.3-4.4.4":0.15213968379447},B:{"12":0.003793,"13":0.015172,"14":0.007586,"15":0.015172,"16":0.026551,"17":0.091032,"18":0.663775,_:"79"},A:{"6":0,"7":0,"8":0.0082181666666667,"9":0,"10":0.0082181666666667,"11":0.32872666666667,"5.5":0},P:{"4":1.5351480155306,"5.0-5.4":0.04093728041415,"6.2-6.4":0.23538936238136,"7.2-7.4":1.217884092321,"8.2":0.13304616134599,"9.2":1.8114746583261,"10.1":6.8569944693701},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.010345,"11":0.02069},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.18621},O:{"0":1.495887},Q:{"1.2":0.043449},S:{"2.5":0},H:{"0":0.50536924742268},L:{"0":58.561637}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/FK.js b/assets/node_modules/caniuse-lite/data/regions/FK.js
deleted file mode 100644
index d98aacd..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/FK.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.421895,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0.04441,"72":0.04441,"73":0,"74":0,"75":0,"76":0,"77":0.848231,"78":0.421895,"79":6.053083,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.022205,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0.062174,"72":4.760752,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.275342,"9":0.337516,"10":0.04441,"11":0,"12":0,"13":1.585437,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.315311,"10.1":0,"11.1":0,"12.1":0.146553},G:{"8":0.0018548199459838,"3.2":0.0018548199459838,"4.0-4.1":0.0037096398919676,"4.2-4.3":0,"5.0-5.1":0.011128919675903,"6.0-6.1":0.0055644598379514,"7.0-7.1":0.01483855956787,"8.1-8.4":0.027822299189757,"9.0-9.2":0.024112659297789,"9.3":0.22999767330199,"10.0-10.2":0.072337977893368,"10.3":0.25411033259978,"11.0-11.2":0.20403019405822,"11.3-11.4":0.34685132989897,"12.0-12.1":0.46741462638792,"12.2-12.4":2.7933588386516,"13.0-13.1":1.2909546824047,"13.2":0.54346224417325,"13.3":12.249230923277},I:{"3":0.0015244005270092,"4":0.015244005270092,_:"76","2.1":0,"2.2":0.0045732015810277,"2.3":0.0015244005270092,"4.1":0.025914808959157,"4.2-4.3":0.67378503293808,"4.4":0,"4.4.3-4.4.4":0.43445415019763},B:{"12":0,"13":0.022205,"14":0,"15":0,"16":0.022205,"17":0,"18":1.736431,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.994784,"5.5":0},P:{"4":0.05328454333644,"5.0-5.4":0.14919672134203,"6.2-6.4":0,"7.2-7.4":0.10656908667288,"8.2":0,"9.2":5.1259730689655,"10.1":5.9465550363467},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0},O:{"0":0},Q:{"1.2":0},S:{"2.5":0},H:{"0":0},L:{"0":45.590201}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/FM.js b/assets/node_modules/caniuse-lite/data/regions/FM.js
deleted file mode 100644
index 2447b05..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/FM.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"26":0.134596,"40":0.009614,"49":0.201894,"50":0.024035,"54":0.086526,"55":0.745085,"60":0.009614,"63":0.009614,"65":0.009614,"67":0.014421,"69":0.024035,"70":0.057684,"71":0.76912,"72":0.028842,"73":0.067298,"74":0.105754,"75":0.028842,"76":0.100947,"77":0.264385,"78":3.297602,"79":25.356925,"80":0.009614,_:"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 38 39 41 42 43 44 45 46 47 48 51 52 53 56 57 58 59 61 62 64 66 68 81 82"},C:{"3":0.014421,"27":0.009614,"47":0.014421,"48":0.043263,"49":0.009614,"52":0.014421,"59":0.153824,"62":0.038456,"63":0.024035,"66":0.019228,"67":0.028842,"69":0.009614,"70":0.110561,"71":0.687401,"72":2.845744,"73":0.245157,_:"2 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 50 51 53 54 55 56 57 58 60 61 64 65 68 74 3.5 3.6"},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 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},E:{"4":0,"9":0.014421,"10":0.009614,"11":0.120175,"13":1.321925,_:"0 5 6 7 8 12 3.1 3.2 5.1 6.1 7.1","9.1":0.014421,"10.1":0.038456,"11.1":0.043263,"12.1":0.086526},G:{"8":0.00085953386015805,"3.2":0.00085953386015805,"4.0-4.1":0.0017190677203161,"4.2-4.3":0,"5.0-5.1":0.0051572031609483,"6.0-6.1":0.0025786015804741,"7.0-7.1":0.0068762708812644,"8.1-8.4":0.012893007902371,"9.0-9.2":0.011173940182055,"9.3":0.1065821986596,"10.0-10.2":0.033521820546164,"10.3":0.11775613884165,"11.0-11.2":0.094548724617385,"11.3-11.4":0.16073283184955,"12.0-12.1":0.21660253275983,"12.2-12.4":1.294457993398,"13.0-13.1":0.59823556667,"13.2":0.25184342102631,"13.3":5.6763616124837},I:{"3":0.00012313043478261,"4":0.0012313043478261,_:"76","2.1":0,"2.2":0.00036939130434783,"2.3":0.00012313043478261,"4.1":0.0020932173913043,"4.2-4.3":0.054423652173913,"4.4":0,"4.4.3-4.4.4":0.035092173913043},B:{"12":0.076912,"13":0.076912,"14":0.033649,"15":0.062491,"16":0.038456,"17":0.206701,"18":2.21122,_:"79"},A:{"10":0.009614,"11":2.312167,_:"6 7 8 9 5.5"},P:{"4":0.60168237223975,"5.0-5.4":0.02148865615142,"6.2-6.4":0.01008192,"7.2-7.4":0.39754013880126,"8.2":0.02148865615142,"9.2":0.096698952681388,"10.1":2.2563088958991},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.020768},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.020768},O:{"0":0.649},Q:{_:"1.2"},S:{_:"2.5"},H:{"0":0.88478103092784},L:{"0":43.158753}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/FO.js b/assets/node_modules/caniuse-lite/data/regions/FO.js
deleted file mode 100644
index 35bd002..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/FO.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.015921,"34":0.010614,"35":0,"36":0,"37":0,"38":0.010614,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.291885,"50":0,"51":0,"52":0,"53":0.010614,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0.005307,"61":0.010614,"62":0,"63":0,"64":0,"65":0.005307,"66":0.058377,"67":0.05307,"68":0,"69":0.010614,"70":0.005307,"71":0.015921,"72":0,"73":0.005307,"74":0,"75":0.148596,"76":0.015921,"77":0.122061,"78":0.244122,"79":10.497246,"80":0.021228,"81":0.005307,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.026535,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.005307,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.015921,"49":0,"50":0.010614,"51":0,"52":0.015921,"53":0,"54":0,"55":0,"56":0,"57":0.005307,"58":0,"59":0,"60":0.005307,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0.307806,"69":0.021228,"70":0.015921,"71":0.467016,"72":1.209996,"73":0.005307,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.005307,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.005307,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.010614,"9":0,"10":0.005307,"11":0.010614,"12":0.037149,"13":3.959022,_:"0","3.1":0,"3.2":0,"5.1":0.005307,"6.1":0.005307,"7.1":0,"9.1":0.079605,"10.1":0.143289,"11.1":0.164517,"12.1":0.137982},G:{"8":0.0045104052215665,"3.2":0.0045104052215665,"4.0-4.1":0.0090208104431329,"4.2-4.3":0,"5.0-5.1":0.027062431329399,"6.0-6.1":0.013531215664699,"7.0-7.1":0.036083241772532,"8.1-8.4":0.067656078323497,"9.0-9.2":0.058635267880364,"9.3":0.55929024747424,"10.0-10.2":0.17590580364109,"10.3":0.61792551535461,"11.0-11.2":0.49614457437231,"11.3-11.4":0.84344577643293,"12.0-12.1":1.1366221158348,"12.2-12.4":6.7926702636791,"13.0-13.1":3.1392420342103,"13.2":1.321548729919,"13.3":29.786716083225},I:{"3":0.000072868247694335,"4":0.00072868247694335,_:"76","2.1":0,"2.2":0.000218604743083,"2.3":0.000072868247694335,"4.1":0.0012387602108037,"4.2-4.3":0.032207765480896,"4.4":0,"4.4.3-4.4.4":0.020767450592885},B:{"12":0,"13":0,"14":0.021228,"15":0.031842,"16":0.015921,"17":0.116754,"18":3.492006,_:"79"},A:{"6":0,"7":0.015921,"8":0.015921,"9":0,"10":0.010614,"11":3.019683,"5.5":0},P:{"4":0.12437665803109,"5.0-5.4":0.011306968911917,"6.2-6.4":0.033920906735751,"7.2-7.4":0.067841813471503,"8.2":0.022613937823834,"9.2":0.30528816062176,"10.1":5.8117820207254},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.042237},J:{"7":0,"10":0.004693},R:{_:"0"},M:{"0":0.253422},O:{"0":0},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.062202408934708},L:{"0":19.587529}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/FR.js b/assets/node_modules/caniuse-lite/data/regions/FR.js
deleted file mode 100644
index 3a0f769..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/FR.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.006109,"29":0.006109,"30":0.006109,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.006109,"37":0,"38":0.006109,"39":0,"40":0.006109,"41":0,"42":0,"43":0.006109,"44":0,"45":0.006109,"46":0.006109,"47":0.006109,"48":0.012218,"49":1.215691,"50":0.006109,"51":0.006109,"52":0.006109,"53":0.006109,"54":0.177161,"55":0.012218,"56":0.012218,"57":0.012218,"58":0.018327,"59":0.006109,"60":0.024436,"61":0.024436,"62":0.024436,"63":0.054981,"64":0.018327,"65":0.030545,"66":0.036654,"67":0.06109,"68":0.042763,"69":0.054981,"70":0.226033,"71":0.348213,"72":0.348213,"73":0.18327,"74":0.054981,"75":0.140507,"76":0.140507,"77":0.213815,"78":0.464284,"79":16.060561,"80":0.018327,"81":0.012218,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.054981,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.030545,"22":0,"23":0,"24":0.006109,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.006109,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.006109,"39":0,"40":0,"41":0,"42":0,"43":0.006109,"44":0,"45":0.030545,"46":0.006109,"47":0.012218,"48":0.067199,"49":0.006109,"50":0.012218,"51":0.006109,"52":0.164943,"53":0.012218,"54":0.006109,"55":0.024436,"56":0.042763,"57":0.012218,"58":0.006109,"59":0.012218,"60":0.140507,"61":0.012218,"62":0.012218,"63":0.036654,"64":0.042763,"65":0.054981,"66":0.042763,"67":0.030545,"68":0.433739,"69":0.128289,"70":0.067199,"71":1.258454,"72":3.091154,"73":0.018327,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.006109,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.018327,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.006109,"54":0,"55":0,"56":0.012218,"57":0.024436,"58":0.024436,"60":0,"62":0.006109,"63":0.006109,"64":0.036654,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.006109},E:{"4":0.006109,"5":0.006109,"6":0,"7":0,"8":0.006109,"9":0.006109,"10":0.012218,"11":0.042763,"12":0.171052,"13":2.651306,_:"0","3.1":0,"3.2":0,"5.1":0.262687,"6.1":0.006109,"7.1":0,"9.1":0.030545,"10.1":0.103853,"11.1":0.238251,"12.1":0.555919},G:{"8":0.0018255208562569,"3.2":0.0018255208562569,"4.0-4.1":0.0036510417125138,"4.2-4.3":0,"5.0-5.1":0.010953125137541,"6.0-6.1":0.0054765625687706,"7.0-7.1":0.014604166850055,"8.1-8.4":0.027382812843853,"9.0-9.2":0.023731771131339,"9.3":0.22636458617585,"10.0-10.2":0.071195313394018,"10.3":0.25009635730719,"11.0-11.2":0.20080729418826,"11.3-11.4":0.34137240012004,"12.0-12.1":0.46003125577673,"12.2-12.4":2.7492344095229,"13.0-13.1":1.2705625159548,"13.2":0.53487761088327,"13.3":12.05573973472},I:{"3":0.00056284453227931,"4":0.0056284453227931,_:"76","2.1":0,"2.2":0.0016885335968379,"2.3":0.00056284453227931,"4.1":0.0095683570487484,"4.2-4.3":0.24877728326746,"4.4":0,"4.4.3-4.4.4":0.1604106916996},B:{"12":0.006109,"13":0.006109,"14":0.018327,"15":0.018327,"16":0.036654,"17":0.134398,"18":1.686084,_:"79"},A:{"6":0.0061890305676856,"7":0.0061890305676856,"8":0.068079336244541,"9":0.037134183406114,"10":0.024756122270742,"11":2.6922282969432,"5.5":0},P:{"4":0.12515229113924,"5.0-5.4":0.052146787974684,"6.2-6.4":0.020858715189873,"7.2-7.4":0.073005503164557,"8.2":0.052146787974684,"9.2":0.25030458227848,"10.1":2.638627471519},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01070025,"11":0.03210075},J:{"7":0,"10":0.023346},R:{_:"0"},M:{"0":0.303498},O:{"0":0.618669},Q:{"1.2":0.027237},S:{"2.5":0},H:{"0":0.29101604639175},L:{"0":37.996624}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GA.js b/assets/node_modules/caniuse-lite/data/regions/GA.js
deleted file mode 100644
index f7f4af2..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GA.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.04735,"32":0,"33":0.004735,"34":0,"35":0,"36":0.004735,"37":0,"38":0.004735,"39":0,"40":0.004735,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.004735,"47":0,"48":0.004735,"49":0.20834,"50":0.00947,"51":0,"52":0,"53":0.004735,"54":0,"55":0.004735,"56":0.004735,"57":0,"58":0.023675,"59":0,"60":0.014205,"61":0,"62":0,"63":0.156255,"64":0.004735,"65":0.08523,"66":0,"67":0.00947,"68":0,"69":0.40721,"70":0.004735,"71":0.00947,"72":0.14205,"73":0.04735,"74":0.14205,"75":0.03788,"76":0.042615,"77":0.17046,"78":0.336185,"79":9.304275,"80":0.004735,"81":0.014205,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.004735,"22":0,"23":0,"24":0,"25":0,"26":0.00947,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.004735,"44":0,"45":0,"46":0,"47":0.00947,"48":0.27463,"49":0,"50":0,"51":0,"52":0.05682,"53":0.033145,"54":0,"55":0.004735,"56":0.004735,"57":0.004735,"58":0.00947,"59":0,"60":0.014205,"61":0,"62":0.004735,"63":0,"64":0.004735,"65":0,"66":0.004735,"67":0.01894,"68":0.080495,"69":0.023675,"70":0.16099,"71":0.82389,"72":2.18757,"73":0.033145,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.004735,"21":0,"22":0,"23":0.004735,"24":0,"25":0,"26":0,"27":0,"28":0.004735,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0.004735,"43":0,"44":0,"45":0.01894,"46":0.04735,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.004735,"54":0,"55":0.004735,"56":0.004735,"57":0,"58":0,"60":0,"62":0,"63":0.00947,"64":0.042615,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.04735},E:{"4":0,"5":0,"6":0,"7":0,"8":0.733925,"9":0,"10":0,"11":0.02841,"12":0.01894,"13":1.2311,_:"0","3.1":0,"3.2":0,"5.1":1.179015,"6.1":0,"7.1":0.004735,"9.1":0,"10.1":0.17046,"11.1":0.07576,"12.1":0.32198},G:{"8":0.00042184705411623,"3.2":0.00042184705411623,"4.0-4.1":0.00084369410823247,"4.2-4.3":0,"5.0-5.1":0.0025310823246974,"6.0-6.1":0.0012655411623487,"7.0-7.1":0.0033747764329299,"8.1-8.4":0.0063277058117435,"9.0-9.2":0.0054840117035111,"9.3":0.052309034710413,"10.0-10.2":0.016452035110533,"10.3":0.057793046413924,"11.0-11.2":0.046403175952786,"11.3-11.4":0.078885399119736,"12.0-12.1":0.10630545763729,"12.2-12.4":0.63530166349905,"13.0-13.1":0.2936055496649,"13.2":0.12360118685606,"13.3":2.7858779453836},I:{"3":0.00089731225296443,"4":0.0089731225296443,_:"76","2.1":0,"2.2":0.0026919367588933,"2.3":0.00089731225296443,"4.1":0.015254308300395,"4.2-4.3":0.39661201581028,"4.4":0,"4.4.3-4.4.4":0.25573399209486},B:{"12":0.014205,"13":0.01894,"14":0.023675,"15":0.042615,"16":0.00947,"17":0.21781,"18":0.71025,_:"79"},A:{"6":0,"7":0,"8":0.053526086956522,"9":0,"10":0.021410434782609,"11":0.29439347826087,"5.5":0},P:{"4":0.81478032786885,"5.0-5.4":0.030554262295082,"6.2-6.4":0.081478032786885,"7.2-7.4":0.46849868852459,"8.2":0.11203229508197,"9.2":0.41757491803279,"10.1":2.3934172131148},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.03504515625,"11":0.33876984375},J:{"7":0,"10":0.184275},R:{_:"0"},M:{"0":0.11583},O:{"0":0.773955},Q:{"1.2":0.11583},S:{"2.5":0},H:{"0":6.4849149742268},L:{"0":54.654255}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GB.js b/assets/node_modules/caniuse-lite/data/regions/GB.js
deleted file mode 100644
index 212c75b..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GB.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.00489,"35":0.00489,"36":0,"37":0,"38":0.00978,"39":0,"40":0.05868,"41":0,"42":0,"43":0.00489,"44":0,"45":0,"46":0.00489,"47":0,"48":0.00489,"49":0.20049,"50":0.00489,"51":0.00489,"52":0,"53":0.00978,"54":0.00489,"55":0.00489,"56":0.01467,"57":0.00489,"58":0.00978,"59":0.00489,"60":0.01467,"61":0.01467,"62":0.00489,"63":0.0489,"64":0.00489,"65":0.03912,"66":0.02934,"67":0.02445,"68":0.01467,"69":0.06357,"70":0.05868,"71":0.04401,"72":0.05379,"73":0.0489,"74":0.05868,"75":0.09291,"76":0.11247,"77":0.12225,"78":0.47922,"79":11.66754,"80":0.01956,"81":0.00978,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.02934,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.01956,"46":0,"47":0.00489,"48":0.00978,"49":0.00489,"50":0.00489,"51":0.02934,"52":0.03912,"53":0.00489,"54":0,"55":0.00489,"56":0.00978,"57":0,"58":0.00978,"59":0.00489,"60":0.09291,"61":0.00489,"62":0.00489,"63":0.00978,"64":0.00978,"65":0.00978,"66":0.00978,"67":0.00978,"68":0.15648,"69":0.01467,"70":0.02445,"71":0.40587,"72":0.95355,"73":0.01467,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.00489,"37":0,"38":0,"39":0,"40":0.00489,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.01467,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0.00489,"64":0.01956,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.00489},E:{"4":0,"5":0,"6":0,"7":0,"8":0.00489,"9":0.00489,"10":0.00978,"11":0.01956,"12":0.09291,"13":2.58681,_:"0","3.1":0,"3.2":0,"5.1":0.06357,"6.1":0,"7.1":0,"9.1":0.02445,"10.1":0.06846,"11.1":0.13692,"12.1":0.29829},G:{"8":0.0038107032109633,"3.2":0.0038107032109633,"4.0-4.1":0.0076214064219266,"4.2-4.3":0,"5.0-5.1":0.02286421926578,"6.0-6.1":0.01143210963289,"7.0-7.1":0.030485625687706,"8.1-8.4":0.057160548164449,"9.0-9.2":0.049539141742523,"9.3":0.47252719815945,"10.0-10.2":0.14861742522757,"10.3":0.52206633990197,"11.0-11.2":0.41917735320596,"11.3-11.4":0.71260150045014,"12.0-12.1":0.96029720916275,"12.2-12.4":5.7389190357107,"13.0-13.1":2.6522494348304,"13.2":1.1165360408122,"13.3":25.165884005202},I:{"3":0.00087671936758893,"4":0.0087671936758893,_:"76","2.1":0,"2.2":0.0026301581027668,"2.3":0.00087671936758893,"4.1":0.014904229249012,"4.2-4.3":0.38750996047431,"4.4":0,"4.4.3-4.4.4":0.24986501976285},B:{"12":0.00489,"13":0.00978,"14":0.01467,"15":0.02934,"16":0.0489,"17":0.13692,"18":1.92666,_:"79"},A:{"6":0,"7":0,"8":0.034696772727273,"9":0.0099133636363636,"10":0.0099133636363636,"11":1.0359465,"5.5":0},P:{"4":0.10761612903226,"5.0-5.4":0.010761612903226,"6.2-6.4":0.010761612903226,"7.2-7.4":0.032284838709677,"8.2":0.021523225806452,"9.2":0.15066258064516,"10.1":4.0678896774194},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.05621},J:{"7":0,"10":0.01022},R:{_:"0"},M:{"0":0.26572},O:{"0":0.30149},Q:{"1.2":0.01533},S:{"2.5":0},H:{"0":0.1838370790378},L:{"0":30.6943}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GD.js b/assets/node_modules/caniuse-lite/data/regions/GD.js
deleted file mode 100644
index be20437..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GD.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.108186,"50":0,"51":0,"52":0,"53":0.002847,"54":0,"55":0,"56":0.002847,"57":0.008541,"58":0.005694,"59":0,"60":0,"61":0,"62":0.002847,"63":0.059787,"64":0,"65":0.002847,"66":0.002847,"67":0,"68":0.002847,"69":0.011388,"70":0.005694,"71":0.002847,"72":0.005694,"73":0.025623,"74":0.008541,"75":0.008541,"76":0.019929,"77":0.02847,"78":0.079716,"79":4.335981,"80":0.037011,"81":0.002847,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.002847,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.005694,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.019929,"54":0,"55":0,"56":0,"57":0.002847,"58":0,"59":0,"60":0.005694,"61":0,"62":0,"63":0,"64":0,"65":0.048399,"66":0.002847,"67":0,"68":0.022776,"69":0,"70":0,"71":0.119574,"72":0.298935,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.002847,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.002847,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.002847,"10":0.017082,"11":0.002847,"12":0.011388,"13":0.472602,_:"0","3.1":0,"3.2":0,"5.1":0.159432,"6.1":0,"7.1":0,"9.1":0.002847,"10.1":0.014235,"11.1":0.011388,"12.1":0.045552},G:{"8":0.0012652865859758,"3.2":0.0012652865859758,"4.0-4.1":0.0025305731719516,"4.2-4.3":0,"5.0-5.1":0.0075917195158548,"6.0-6.1":0.0037958597579274,"7.0-7.1":0.010122292687806,"8.1-8.4":0.018979298789637,"9.0-9.2":0.016448725617685,"9.3":0.156895536661,"10.0-10.2":0.049346176853056,"10.3":0.17334426227868,"11.0-11.2":0.13918152445734,"11.3-11.4":0.23660859157747,"12.0-12.1":0.3188522196659,"12.2-12.4":1.9055215984795,"13.0-13.1":0.88063946383915,"13.2":0.37072896969091,"13.3":8.3559526137841},I:{"3":0.00097820816864295,"4":0.0097820816864295,_:"76","2.1":0,"2.2":0.0029346245059289,"2.3":0.00097820816864295,"4.1":0.01662953886693,"4.2-4.3":0.43236801054018,"4.4":0,"4.4.3-4.4.4":0.27878932806324},B:{"12":0.008541,"13":0.011388,"14":0.002847,"15":0.014235,"16":0.005694,"17":0.037011,"18":0.774384,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0.0028940578512397,"11":0.34728694214876,"5.5":0},P:{"4":0.073907194610778,"5.0-5.4":0,"6.2-6.4":0.010558170658683,"7.2-7.4":0.32730329041916,"8.2":0.010558170658683,"9.2":0.14781438922156,"10.1":2.8823805898204},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.021459},J:{"7":0,"10":0.007153},R:{_:"0"},M:{"0":0.07153},O:{"0":0.057224},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.14221196391753},L:{"0":74.324353}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GE.js b/assets/node_modules/caniuse-lite/data/regions/GE.js
deleted file mode 100644
index ff7f123..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GE.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.006704,"27":0,"28":0,"29":0,"30":0,"31":0.006704,"32":0,"33":0,"34":0.006704,"35":0,"36":0.020112,"37":0,"38":0.006704,"39":0.006704,"40":0.006704,"41":0.006704,"42":0,"43":0.006704,"44":0,"45":0.006704,"46":0.006704,"47":0.006704,"48":0.006704,"49":0.40224,"50":0.006704,"51":0.006704,"52":0.006704,"53":0.013408,"54":0.006704,"55":0.013408,"56":0.013408,"57":0.013408,"58":0.046928,"59":0.046928,"60":0.013408,"61":0.026816,"62":0.013408,"63":0.13408,"64":0.013408,"65":0.026816,"66":0.020112,"67":0.020112,"68":0.046928,"69":0.080448,"70":0.060336,"71":0.147488,"72":0.06704,"73":0.093856,"74":0.120672,"75":0.181008,"76":0.160896,"77":0.254752,"78":1.10616,"79":29.859616,"80":0.053632,"81":0.040224,"82":0},C:{"2":0,"3":0.006704,"4":0.006704,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.006704,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.006704,"49":0,"50":0.006704,"51":0,"52":0.03352,"53":0,"54":0.006704,"55":0.013408,"56":0.006704,"57":0.006704,"58":0.006704,"59":0,"60":0.013408,"61":0.006704,"62":0.006704,"63":0.053632,"64":0,"65":0.040224,"66":0.006704,"67":0.006704,"68":0.087152,"69":0.006704,"70":0.020112,"71":0.36872,"72":1.019008,"73":0.013408,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0.006704,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.03352,"37":0.006704,"38":0.006704,"39":0,"40":0.006704,"41":0,"42":0.006704,"43":0,"44":0,"45":0.006704,"46":0.006704,"47":0,"48":0.006704,"49":0,"50":0,"51":0,"52":0,"53":0.006704,"54":0,"55":0,"56":0.006704,"57":0,"58":0.006704,"60":0.006704,"62":0.006704,"63":0.020112,"64":0.13408,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.006704},E:{"4":0,"5":0,"6":0,"7":0,"8":0.006704,"9":0,"10":0.006704,"11":0.006704,"12":0.10056,"13":0.724032,_:"0","3.1":0,"3.2":0,"5.1":0.040224,"6.1":0,"7.1":0,"9.1":0.006704,"10.1":0.026816,"11.1":0.120672,"12.1":0.140784},G:{"8":0.0010658237471241,"3.2":0.0010658237471241,"4.0-4.1":0.0021316474942483,"4.2-4.3":0,"5.0-5.1":0.0063949424827448,"6.0-6.1":0.0031974712413724,"7.0-7.1":0.0085265899769931,"8.1-8.4":0.015987356206862,"9.0-9.2":0.013855708712614,"9.3":0.13216214464339,"10.0-10.2":0.041567126137841,"10.3":0.14601785335601,"11.0-11.2":0.11724061218366,"11.3-11.4":0.19930904071221,"12.0-12.1":0.26858758427528,"12.2-12.4":1.605130563169,"13.0-13.1":0.7418133279984,"13.2":0.31228635790737,"13.3":7.0387000260078},I:{"3":0.0009071093544137,"4":0.009071093544137,_:"76","2.1":0,"2.2":0.0027213280632411,"2.3":0.0009071093544137,"4.1":0.015420859025033,"4.2-4.3":0.40094233465086,"4.4":0,"4.4.3-4.4.4":0.25852616600791},B:{"12":0.020112,"13":0.315088,"14":0.549728,"15":0.040224,"16":0.449168,"17":0.13408,"18":1.528512,_:"79"},A:{"6":0.013408,"7":0,"8":0.060336,"9":0.013408,"10":0.006704,"11":0.40224,"5.5":0},P:{"4":0.34660502654867,"5.0-5.4":0.010194265486726,"6.2-6.4":0.020388530973451,"7.2-7.4":0.11213692035398,"8.2":0.030582796460177,"9.2":0.17330251327434,"10.1":1.5699168849558},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.012085333333333,"11":0.060426666666667},J:{"7":0,"10":0.019776},R:{_:"0"},M:{"0":0.118656},O:{"0":0.234016},Q:{"1.2":0.006592},S:{"2.5":0},H:{"0":0.37133234364261},L:{"0":38.978784}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GF.js b/assets/node_modules/caniuse-lite/data/regions/GF.js
deleted file mode 100644
index bb262c7..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GF.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005315,"37":0,"38":0,"39":0,"40":0.005315,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.696265,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.037205,"56":0,"57":0.06378,"58":0.015945,"59":0.01063,"60":0,"61":0.09567,"62":0,"63":0.175395,"64":0.005315,"65":0.01063,"66":0,"67":0.015945,"68":0,"69":0.015945,"70":0.324215,"71":0.249805,"72":0.49961,"73":0.005315,"74":0.079725,"75":0.037205,"76":0.015945,"77":0.015945,"78":0.483665,"79":13.484155,"80":0.005315,"81":0.005315,"82":0},C:{"2":0,"3":0.005315,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.015945,"22":0,"23":0,"24":0,"25":0,"26":0.015945,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.03189,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.01063,"46":0,"47":0,"48":0.037205,"49":0.02126,"50":0.02126,"51":0.005315,"52":0.079725,"53":0,"54":0,"55":0,"56":0.005315,"57":0.01063,"58":0,"59":0,"60":0.026575,"61":0,"62":0.01063,"63":0.01063,"64":0.005315,"65":0,"66":0.005315,"67":0.01063,"68":0.154135,"69":0.015945,"70":0.49961,"71":0.770675,"72":2.91262,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.01063,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.01063,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.005315},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.005315,"10":0,"11":0,"12":0.04252,"13":1.142725,_:"0","3.1":0,"3.2":0,"5.1":0.55276,"6.1":0.01063,"7.1":0,"9.1":0.005315,"10.1":0.06378,"11.1":0.228545,"12.1":0.611225},G:{"8":0.0013853025907772,"3.2":0.0013853025907772,"4.0-4.1":0.0027706051815545,"4.2-4.3":0,"5.0-5.1":0.0083118155446634,"6.0-6.1":0.0041559077723317,"7.0-7.1":0.011082420726218,"8.1-8.4":0.020779538861658,"9.0-9.2":0.018008933680104,"9.3":0.17177752125638,"10.0-10.2":0.054026801040312,"10.3":0.18978645493648,"11.0-11.2":0.1523832849855,"11.3-11.4":0.25905158447534,"12.0-12.1":0.34909625287586,"12.2-12.4":2.0862657017105,"13.0-13.1":0.96417060318095,"13.2":0.40589365909773,"13.3":9.1485383094928},I:{"3":0.00083325428194993,"4":0.0083325428194993,_:"76","2.1":0,"2.2":0.0024997628458498,"2.3":0.00083325428194993,"4.1":0.014165322793149,"4.2-4.3":0.36829839262187,"4.4":0,"4.4.3-4.4.4":0.23747747035573},B:{"12":0,"13":0.005315,"14":0.01063,"15":0.015945,"16":0.015945,"17":0.100985,"18":1.39253,_:"79"},A:{"6":0,"7":0,"8":0.005315,"9":0.005315,"10":0,"11":0.823825,"5.5":0},P:{"4":0.073914113149847,"5.0-5.4":0.010559159021407,"6.2-6.4":0,"7.2-7.4":0.16894654434251,"8.2":0.1583873853211,"9.2":0.21118318042813,"10.1":2.7348221865443},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.089015},O:{"0":0.25299},Q:{"1.2":0.4685},S:{"2.5":0},H:{"0":0.22177276632302},L:{"0":52.372335}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GG.js b/assets/node_modules/caniuse-lite/data/regions/GG.js
deleted file mode 100644
index 8117bb0..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GG.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.006009,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.12018,"50":0,"51":0,"52":0,"53":0.012018,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0.006009,"61":0,"62":0,"63":0.006009,"64":0,"65":0.024036,"66":0,"67":0.048072,"68":0.006009,"69":0.012018,"70":0.006009,"71":0.006009,"72":0.012018,"73":0.012018,"74":0.030045,"75":0.072108,"76":0.384576,"77":0.228342,"78":0.763143,"79":13.634421,"80":0.030045,"81":0.012018,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.096144,"22":0.006009,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.06009,"46":0,"47":0,"48":0.126189,"49":0,"50":0.030045,"51":0,"52":0.030045,"53":0,"54":0,"55":0,"56":0,"57":0.006009,"58":0.012018,"59":0,"60":0,"61":0.006009,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0.204306,"69":0.024036,"70":0.084126,"71":0.468702,"72":1.075611,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.006009,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.006009,"9":0.018027,"10":0.006009,"11":0.006009,"12":0.084126,"13":6.73008,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.024036,"10.1":0.096144,"11.1":0.486729,"12.1":0.516774},G:{"8":0.0043883877163149,"3.2":0.0043883877163149,"4.0-4.1":0.0087767754326298,"4.2-4.3":0,"5.0-5.1":0.026330326297889,"6.0-6.1":0.013165163148945,"7.0-7.1":0.035107101730519,"8.1-8.4":0.065825815744723,"9.0-9.2":0.057049040312094,"9.3":0.54416007682305,"10.0-10.2":0.17114712093628,"10.3":0.60120911713514,"11.0-11.2":0.48272264879464,"11.3-11.4":0.82062850295089,"12.0-12.1":1.1058737045114,"12.2-12.4":6.6089119007702,"13.0-13.1":3.0543178505552,"13.2":1.2857976008803,"13.3":28.980912478544},I:{"3":0.0012429090909091,"4":0.012429090909091,_:"76","2.1":0,"2.2":0.0037287272727273,"2.3":0.0012429090909091,"4.1":0.021129454545455,"4.2-4.3":0.54936581818182,"4.4":0,"4.4.3-4.4.4":0.35422909090909},B:{"12":0,"13":0,"14":0.018027,"15":0.012018,"16":0.030045,"17":0.162243,"18":2.277411,_:"79"},A:{"6":0,"7":0,"8":0.006009,"9":0,"10":0,"11":3.310959,"5.5":0},P:{"4":0.022891773584906,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0,"8.2":0.011445886792453,"9.2":0.13735064150943,"10.1":3.0903894339623},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.019955},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.371163},O:{"0":0},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.083125261168385},L:{"0":17.146493}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GH.js b/assets/node_modules/caniuse-lite/data/regions/GH.js
deleted file mode 100644
index ac1f69b..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GH.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.002401,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.004802,"34":0,"35":0,"36":0.002401,"37":0.002401,"38":0.002401,"39":0.002401,"40":0.004802,"41":0.002401,"42":0.002401,"43":0.004802,"44":0.002401,"45":0.002401,"46":0.004802,"47":0.002401,"48":0.002401,"49":0.019208,"50":0.007203,"51":0.004802,"52":0.002401,"53":0.002401,"54":0.004802,"55":0.007203,"56":0.002401,"57":0.002401,"58":0.007203,"59":0.004802,"60":0.004802,"61":0.012005,"62":0.016807,"63":0.036015,"64":0.007203,"65":0.009604,"66":0.002401,"67":0.009604,"68":0.004802,"69":0.07203,"70":0.014406,"71":0.014406,"72":0.009604,"73":0.014406,"74":0.050421,"75":0.028812,"76":0.028812,"77":0.050421,"78":0.091238,"79":2.242534,"80":0.014406,"81":0.009604,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0.002401,"18":0.002401,"19":0.002401,"20":0.002401,"21":0.007203,"22":0,"23":0.002401,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.002401,"30":0.002401,"31":0.002401,"32":0,"33":0,"34":0.002401,"35":0.002401,"36":0.002401,"37":0,"38":0.002401,"39":0.002401,"40":0.002401,"41":0.002401,"42":0.002401,"43":0.007203,"44":0.007203,"45":0.004802,"46":0.002401,"47":0.012005,"48":0.009604,"49":0.002401,"50":0.002401,"51":0.004802,"52":0.019208,"53":0.004802,"54":0.004802,"55":0.004802,"56":0.014406,"57":0.009604,"58":0.004802,"59":0.002401,"60":0.004802,"61":0.002401,"62":0.002401,"63":0.002401,"64":0.007203,"65":0.002401,"66":0.007203,"67":0.009604,"68":0.076832,"69":0.02401,"70":0.02401,"71":0.199283,"72":0.4802,"73":0.07203,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0.002401,"12":0.002401,"15":0.002401,"16":0.004802,"17":0,"18":0.002401,"19":0.004802,"20":0.019208,"21":0.002401,"22":0.002401,"23":0.02401,"24":0,"25":0,"26":0.002401,"27":0.002401,"28":0.004802,"29":0.002401,"30":0.004802,"31":0,"32":0.002401,"33":0.002401,"34":0.002401,"35":0.002401,"36":0.002401,"37":0.002401,"38":0.004802,"39":0,"40":0,"41":0,"42":0.007203,"43":0,"44":0.002401,"45":0.016807,"46":0.088837,"47":0.002401,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.007203,"54":0.007203,"55":0.004802,"56":0.009604,"57":0,"58":0.002401,"60":0.002401,"62":0.002401,"63":0.004802,"64":0.007203,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0.002401,"12.1":0.036015},E:{"4":0,"5":0,"6":0,"7":0,"8":0.004802,"9":0.004802,"10":0.004802,"11":0.009604,"12":0.026411,"13":0.16807,_:"0","3.1":0,"3.2":0,"5.1":0.136857,"6.1":0,"7.1":0,"9.1":0.007203,"10.1":0.007203,"11.1":0.02401,"12.1":0.043218},G:{"8":0.00070091807542263,"3.2":0.00070091807542263,"4.0-4.1":0.0014018361508453,"4.2-4.3":0,"5.0-5.1":0.0042055084525358,"6.0-6.1":0.0021027542262679,"7.0-7.1":0.005607344603381,"8.1-8.4":0.010513771131339,"9.0-9.2":0.0091119349804941,"9.3":0.086913841352406,"10.0-10.2":0.027335804941482,"10.3":0.0960257763329,"11.0-11.2":0.077100988296489,"11.3-11.4":0.13107168010403,"12.0-12.1":0.1766313550065,"12.2-12.4":1.0555826215865,"13.0-13.1":0.48783898049415,"13.2":0.20536899609883,"13.3":4.628862970091},I:{"3":0.00033782740447958,"4":0.0033782740447958,_:"76","2.1":0,"2.2":0.0010134822134387,"2.3":0.00033782740447958,"4.1":0.0057430658761528,"4.2-4.3":0.14931971277997,"4.4":0,"4.4.3-4.4.4":0.09628081027668},B:{"12":0.014406,"13":0.014406,"14":0.014406,"15":0.026411,"16":0.007203,"17":0.028812,"18":0.170471,_:"79"},A:{"6":0,"7":0,"8":0.026411,"9":0.012005,"10":0.012005,"11":0.040817,"5.5":0},P:{"4":0.48343914364641,"5.0-5.4":0.072001574585635,"6.2-6.4":0.041143756906077,"7.2-7.4":0.14400314917127,"8.2":0.020571878453039,"9.2":0.27772035911602,"10.1":0.80230325966851},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.034738285714286,"11":0.45159771428571},J:{"7":0,"10":0.068391},R:{_:"0"},M:{"0":0.311559},O:{"0":3.670317},Q:{"1.2":0.022797},S:{"2.5":0.015198},H:{"0":32.546752020619},L:{"0":36.604027}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GI.js b/assets/node_modules/caniuse-lite/data/regions/GI.js
deleted file mode 100644
index 6cbb2c0..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GI.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.575695,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.017805,"59":0,"60":0.029675,"61":0,"62":0.005935,"63":0.089025,"64":0.01187,"65":0,"66":0.005935,"67":0.005935,"68":0.005935,"69":0,"70":0.005935,"71":0,"72":0.01187,"73":0.017805,"74":0.10683,"75":0.124635,"76":0.053415,"77":0.065285,"78":0.255205,"79":18.570615,"80":0.053415,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.01187,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.053415,"49":0,"50":0,"51":0,"52":0.10683,"53":0,"54":0,"55":0,"56":0,"57":0.005935,"58":0,"59":0,"60":0,"61":0.02374,"62":0.005935,"63":0,"64":0.017805,"65":0,"66":0.09496,"67":0,"68":0.302685,"69":0.02374,"70":0.017805,"71":0.587565,"72":1.181065,"73":0.02374,"74":0,"3.5":0,"3.6":0.005935},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0.041545,"63":0,"64":0.005935,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.01187,"11":0.005935,"12":0.029675,"13":4.00019,_:"0","3.1":0,"3.2":0,"5.1":0.005935,"6.1":0,"7.1":0,"9.1":0,"10.1":0.124635,"11.1":0.16618,"12.1":0.255205},G:{"8":0.0031496428928679,"3.2":0.0031496428928679,"4.0-4.1":0.0062992857857357,"4.2-4.3":0,"5.0-5.1":0.018897857357207,"6.0-6.1":0.0094489286786036,"7.0-7.1":0.025197143142943,"8.1-8.4":0.047244643393018,"9.0-9.2":0.040945357607282,"9.3":0.39055571871561,"10.0-10.2":0.12283607282185,"10.3":0.4315010763229,"11.0-11.2":0.34646071821546,"11.3-11.4":0.58898322096629,"12.0-12.1":0.7937100090027,"12.2-12.4":4.743362196659,"13.0-13.1":2.192151453436,"13.2":0.92284536761028,"13.3":20.800241664499},I:{"3":0.00045974308300395,"4":0.0045974308300395,_:"76","2.1":0,"2.2":0.0013792292490119,"2.3":0.00045974308300395,"4.1":0.0078156324110672,"4.2-4.3":0.20320644268775,"4.4":0,"4.4.3-4.4.4":0.13102677865613},B:{"12":0,"13":0,"14":0.005935,"15":0.017805,"16":0.017805,"17":0.053415,"18":3.2049,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":2.807255,"5.5":0},P:{"4":0.063542368421053,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0,"8.2":0,"9.2":0.021180789473684,"10.1":4.5750505263158},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.69105},O:{"0":0.191055},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.12315134020619},L:{"0":25.69933}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GL.js b/assets/node_modules/caniuse-lite/data/regions/GL.js
deleted file mode 100644
index 055f278..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GL.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.024024,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":1.249248,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.006006,"59":0,"60":0,"61":0,"62":0,"63":0.006006,"64":0,"65":0,"66":0.006006,"67":0.012012,"68":0,"69":0.048048,"70":0.006006,"71":0.012012,"72":0,"73":0.024024,"74":0.006006,"75":0.012012,"76":0.054054,"77":0.06006,"78":0.384384,"79":17.159142,"80":0.006006,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.006006,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.042042,"53":0.006006,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0.03003,"61":0,"62":0,"63":0,"64":0,"65":0.012012,"66":0,"67":0,"68":0.084084,"69":0.018018,"70":0.018018,"71":0.492492,"72":1.057056,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0.414414,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0.024024,"6":0,"7":0,"8":0.006006,"9":0.006006,"10":0,"11":0.012012,"12":0.018018,"13":4.74474,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.09009,"10.1":0.072072,"11.1":0.174174,"12.1":0.57057},G:{"8":0.0031298651595479,"3.2":0.0031298651595479,"4.0-4.1":0.0062597303190957,"4.2-4.3":0,"5.0-5.1":0.018779190957287,"6.0-6.1":0.0093895954786436,"7.0-7.1":0.025038921276383,"8.1-8.4":0.046947977393218,"9.0-9.2":0.040688247074122,"9.3":0.38810327978394,"10.0-10.2":0.12206474122237,"10.3":0.42879152685806,"11.0-11.2":0.34428516755027,"11.3-11.4":0.58528478483545,"12.0-12.1":0.78872602020606,"12.2-12.4":4.7135769302791,"13.0-13.1":2.1783861510453,"13.2":0.91705049174752,"13.3":20.669629513654},I:{"3":0.00005270092226614,"4":0.0005270092226614,_:"76","2.1":0,"2.2":0.00015810276679842,"2.3":0.00005270092226614,"4.1":0.00089591567852437,"4.2-4.3":0.023293807641634,"4.4":0,"4.4.3-4.4.4":0.01501976284585},B:{"12":0.168168,"13":0.012012,"14":0.684684,"15":0.372372,"16":0.048048,"17":0.078078,"18":2.666664,_:"79"},A:{"6":0,"7":0,"8":0.012012,"9":0,"10":0,"11":1.825824,"5.5":0},P:{"4":0.1282816819407,"5.0-5.4":0.010690140161725,"6.2-6.4":0,"7.2-7.4":0,"8.2":0,"9.2":0.085521121293801,"10.1":3.5811969541779},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.103844},O:{"0":0.243634},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.23821945360825},L:{"0":28.009596}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GM.js b/assets/node_modules/caniuse-lite/data/regions/GM.js
deleted file mode 100644
index 8293b04..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GM.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0.003539,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.007078,"26":0.003539,"27":0,"28":0,"29":0,"30":0.003539,"31":0.003539,"32":0,"33":0.003539,"34":0.003539,"35":0,"36":0.014156,"37":0,"38":0.003539,"39":0.003539,"40":0.003539,"41":0,"42":0,"43":0.003539,"44":0,"45":0,"46":0.003539,"47":0,"48":0.003539,"49":0.021234,"50":0,"51":0,"52":0.003539,"53":0.003539,"54":0.003539,"55":0.021234,"56":0.003539,"57":0.007078,"58":0.007078,"59":0,"60":0.077858,"61":0,"62":0,"63":0.056624,"64":0,"65":0.017695,"66":0.003539,"67":0.003539,"68":0.007078,"69":0.31851,"70":0.014156,"71":0.014156,"72":0.067241,"73":0.010617,"74":0.024773,"75":0.024773,"76":0.028312,"77":0.038929,"78":0.152177,"79":4.356509,"80":0.014156,"81":0.024773,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.003539,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.007078,"31":0.003539,"32":0,"33":0,"34":0.003539,"35":0,"36":0.003539,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0.03539,"43":0.010617,"44":0.007078,"45":0,"46":0.003539,"47":0.003539,"48":0.03539,"49":0,"50":0.010617,"51":0.007078,"52":0.017695,"53":0,"54":0,"55":0,"56":0.010617,"57":0.003539,"58":0.014156,"59":0,"60":0,"61":0.003539,"62":0.003539,"63":0,"64":0.003539,"65":0.010617,"66":0.028312,"67":0.014156,"68":0.046007,"69":0.007078,"70":0.024773,"71":0.612247,"72":1.578394,"73":0.307893,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0.003539,"17":0,"18":0,"19":0,"20":0.031851,"21":0,"22":0,"23":0.003539,"24":0,"25":0,"26":0,"27":0,"28":0.003539,"29":0.003539,"30":0,"31":0,"32":0.003539,"33":0,"34":0,"35":0,"36":0.010617,"37":0.003539,"38":0.003539,"39":0,"40":0,"41":0,"42":0.003539,"43":0,"44":0,"45":0,"46":0.03539,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.03539,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.014156,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.07078},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.014156,"12":0.031851,"13":0.286659,_:"0","3.1":0,"3.2":0,"5.1":1.624401,"6.1":0,"7.1":0.007078,"9.1":0.010617,"10.1":0.007078,"11.1":0.021234,"12.1":0.102631},G:{"8":0.0010503593077923,"3.2":0.0010503593077923,"4.0-4.1":0.0021007186155847,"4.2-4.3":0,"5.0-5.1":0.006302155846754,"6.0-6.1":0.003151077923377,"7.0-7.1":0.0084028744623387,"8.1-8.4":0.015755389616885,"9.0-9.2":0.0136546710013,"9.3":0.13024455416625,"10.0-10.2":0.040964013003901,"10.3":0.14389922516755,"11.0-11.2":0.11553952385716,"11.3-11.4":0.19641719055717,"12.0-12.1":0.26469054556367,"12.2-12.4":1.5818411175353,"13.0-13.1":0.73105007822347,"13.2":0.30775527718315,"13.3":6.9365728686606},I:{"3":0.0011038972332016,"4":0.011038972332016,_:"76","2.1":0,"2.2":0.0033116916996047,"2.3":0.0011038972332016,"4.1":0.018766252964427,"4.2-4.3":0.4879225770751,"4.4":0,"4.4.3-4.4.4":0.31461071146245},B:{"12":0.024773,"13":0.024773,"14":0.017695,"15":0.077858,"16":0.03539,"17":0.049546,"18":0.414063,_:"79"},A:{"6":0,"7":0,"8":0.021234,"9":0,"10":0.003539,"11":0.187567,"5.5":0},P:{"4":1.1022034420432,"5.0-5.4":0.1939061611002,"6.2-6.4":0.1939061611002,"7.2-7.4":0.36740114734774,"8.2":0.030616762278978,"9.2":0.34698997249509,"10.1":2.9187980039293},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.0109029375,"11":0.3379910625},J:{"7":0,"10":0.038766},R:{_:"0"},M:{"0":0.167986},O:{"0":1.847846},Q:{"1.2":0.006461},S:{"2.5":0},H:{"0":9.9276595412371},L:{"0":52.002291}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GN.js b/assets/node_modules/caniuse-lite/data/regions/GN.js
deleted file mode 100644
index 5ea9856..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GN.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.001187,"29":0,"30":0,"31":0,"32":0,"33":0.001187,"34":0,"35":0,"36":0,"37":0.001187,"38":0.001187,"39":0,"40":0.01187,"41":0,"42":0,"43":0.002374,"44":0,"45":0,"46":0,"47":0,"48":0.001187,"49":0.003561,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.007122,"56":0.015431,"57":0,"58":0,"59":0,"60":0.001187,"61":0,"62":0,"63":0.024927,"64":0.003561,"65":0.003561,"66":0,"67":0.001187,"68":0.001187,"69":0.024927,"70":0,"71":0.001187,"72":0.008309,"73":0.002374,"74":0.002374,"75":0.002374,"76":0.032049,"77":0.007122,"78":0.027301,"79":0.576882,"80":0,"81":0.001187,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.001187,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.001187,"33":0,"34":0,"35":0.003561,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0.001187,"42":0,"43":0,"44":0,"45":0.001187,"46":0.001187,"47":0.001187,"48":0,"49":0.001187,"50":0.001187,"51":0,"52":0.002374,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0.003561,"60":0,"61":0,"62":0.007122,"63":0,"64":0,"65":0,"66":0,"67":0.001187,"68":0.008309,"69":0.001187,"70":0.003561,"71":0.04748,"72":0.146001,"73":0.001187,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0.003561,"17":0,"18":0,"19":0,"20":0.004748,"21":0,"22":0,"23":0.018992,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.001187,"31":0,"32":0.001187,"33":0.001187,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.001187,"46":0.004748,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.002374,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.001187,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.017805},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.002374,"12":0.009496,"13":0.024927,_:"0","3.1":0,"3.2":0,"5.1":0.002374,"6.1":0,"7.1":0,"9.1":0.005935,"10.1":0.003561,"11.1":0.014244,"12.1":0.007122},G:{"8":0.00025870691207362,"3.2":0.00025870691207362,"4.0-4.1":0.00051741382414724,"4.2-4.3":0,"5.0-5.1":0.0015522414724417,"6.0-6.1":0.00077612073622087,"7.0-7.1":0.002069655296589,"8.1-8.4":0.0038806036811043,"9.0-9.2":0.0033631898569571,"9.3":0.032079657097129,"10.0-10.2":0.010089569570871,"10.3":0.035442846954086,"11.0-11.2":0.028457760328098,"11.3-11.4":0.048378192557767,"12.0-12.1":0.065194141842553,"12.2-12.4":0.38961260958287,"13.0-13.1":0.18006001080324,"13.2":0.075801125237571,"13.3":1.7085004473342},I:{"3":0.00056364295125165,"4":0.0056364295125165,_:"76","2.1":0,"2.2":0.0016909288537549,"2.3":0.00056364295125165,"4.1":0.009581930171278,"4.2-4.3":0.24913018445323,"4.4":0,"4.4.3-4.4.4":0.16063824110672},B:{"12":0.004748,"13":0.003561,"14":0.002374,"15":0.002374,"16":0.002374,"17":0.014244,"18":0.054602,_:"79"},A:{"6":0,"7":0,"8":0.005935,"9":0,"10":0.007122,"11":0.027301,"5.5":0},P:{"4":0.3445883,"5.0-5.4":0.09121455,"6.2-6.4":0.05067475,"7.2-7.4":0.15202425,"8.2":0.0202699,"9.2":0.3851281,"10.1":0.5675572},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.07711375,"11":0.05508125},J:{"7":0,"10":0.008813},R:{_:"0"},M:{"0":0.061691},O:{"0":1.621592},Q:{"1.2":0.26439},S:{"2.5":0.061691},H:{"0":40.165989487973},L:{"0":44.002289}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GP.js b/assets/node_modules/caniuse-lite/data/regions/GP.js
deleted file mode 100644
index 175ec89..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GP.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.005426,"32":0,"33":0,"34":0,"35":0,"36":0.016278,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.46121,"50":0,"51":0,"52":0,"53":0.005426,"54":0,"55":0,"56":0,"57":0,"58":0.005426,"59":0,"60":0.005426,"61":0.005426,"62":0,"63":0.010852,"64":0.032556,"65":0.092242,"66":0.005426,"67":0.010852,"68":0.016278,"69":0.010852,"70":0.059686,"71":0.016278,"72":0.010852,"73":0.016278,"74":0.02713,"75":0.032556,"76":0.075964,"77":0.075964,"78":0.24417,"79":13.065808,"80":0.103094,"81":0.043408,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.02713,"22":0,"23":0,"24":0,"25":0.005426,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.021704,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.086816,"49":0,"50":0,"51":0,"52":0.048834,"53":0.010852,"54":0,"55":0,"56":0.010852,"57":0.005426,"58":0,"59":0,"60":0.037982,"61":0,"62":0,"63":0,"64":0.005426,"65":0,"66":0.005426,"67":0.005426,"68":0.249596,"69":0.021704,"70":0.146502,"71":0.987532,"72":2.864928,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.032556,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.075964,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.113946,"9":0.005426,"10":0.13565,"11":0.021704,"12":0.168206,"13":2.68587,_:"0","3.1":0,"3.2":0,"5.1":0.05426,"6.1":0.010852,"7.1":0,"9.1":0.021704,"10.1":0.097668,"11.1":0.35269,"12.1":1.117756},G:{"8":0.0020326467940382,"3.2":0.0020326467940382,"4.0-4.1":0.0040652935880764,"4.2-4.3":0,"5.0-5.1":0.012195880764229,"6.0-6.1":0.0060979403821146,"7.0-7.1":0.016261174352306,"8.1-8.4":0.030489701910573,"9.0-9.2":0.026424408322497,"9.3":0.25204820246074,"10.0-10.2":0.07927322496749,"10.3":0.27847261078323,"11.0-11.2":0.2235911473442,"11.3-11.4":0.38010495048515,"12.0-12.1":0.51222699209763,"12.2-12.4":3.0611660718215,"13.0-13.1":1.4147221686506,"13.2":0.5955655106532,"13.3":13.423599427828},I:{"3":0.00040831357048748,"4":0.0040831357048748,_:"76","2.1":0,"2.2":0.0012249407114625,"2.3":0.00040831357048748,"4.1":0.0069413306982872,"4.2-4.3":0.18047459815547,"4.4":0,"4.4.3-4.4.4":0.11636936758893},B:{"12":0.005426,"13":0.005426,"14":0.010852,"15":0.02713,"16":0.02713,"17":0.146502,"18":1.57354,_:"79"},A:{"6":0,"7":0,"8":1.43789,"9":0.005426,"10":0,"11":0.450358,"5.5":0},P:{"4":0.12525417787419,"5.0-5.4":0.020875696312364,"6.2-6.4":0.020875696312364,"7.2-7.4":0.083502785249458,"8.2":0.020875696312364,"9.2":0.26094620390456,"10.1":4.2168906550976},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.013722},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.260718},O:{"0":0.054888},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.160223604811},L:{"0":43.288146}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GQ.js b/assets/node_modules/caniuse-lite/data/regions/GQ.js
deleted file mode 100644
index d16b790..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GQ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.006217,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.006217,"31":0,"32":0,"33":0.484926,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0.006217,"40":0.006217,"41":0.006217,"42":0,"43":0.006217,"44":0,"45":1.013371,"46":0.006217,"47":0,"48":0.031085,"49":0.329501,"50":0,"51":0.012434,"52":0,"53":0.080821,"54":0,"55":0,"56":0,"57":0.006217,"58":0.006217,"59":0.012434,"60":0.049736,"61":0,"62":0.012434,"63":0.571964,"64":0.006217,"65":0.012434,"66":0.055953,"67":0.018651,"68":0.012434,"69":0.043519,"70":0.018651,"71":0.006217,"72":0.068387,"73":1.392608,"74":0.031085,"75":0.049736,"76":0.012434,"77":0.223812,"78":0.410322,"79":14.162326,"80":0.006217,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.006217,"22":0,"23":0.223812,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.018651,"31":0,"32":0,"33":0.037302,"34":0.006217,"35":0,"36":0,"37":0,"38":0,"39":0.012434,"40":0,"41":0.037302,"42":0,"43":0.031085,"44":0,"45":0,"46":0.012434,"47":0.037302,"48":0.018651,"49":0.006217,"50":0.012434,"51":0,"52":0.298416,"53":0,"54":0.006217,"55":0.018651,"56":0.043519,"57":0.024868,"58":0,"59":0.068387,"60":0.018651,"61":0.024868,"62":0.049736,"63":0.006217,"64":0.018651,"65":0.006217,"66":0,"67":0.018651,"68":0.223812,"69":0.043519,"70":0.080821,"71":1.299353,"72":2.853603,"73":0.068387,"74":0.006217,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0.006217,"17":0,"18":0.006217,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.012434,"33":0,"34":0.006217,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.043519,"41":0,"42":0,"43":0,"44":0,"45":0.006217,"46":0.012434,"47":0,"48":0,"49":0,"50":0.031085,"51":0.118123,"52":0,"53":0.024868,"54":0,"55":0.06217,"56":0.012434,"57":0.031085,"58":0.012434,"60":0.012434,"62":0,"63":0.012434,"64":0.006217,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.006217},E:{"4":0,"5":0,"6":0.055953,"7":0.006217,"8":0,"9":0,"10":0.006217,"11":0.006217,"12":0.006217,"13":0.335718,_:"0","3.1":0,"3.2":0,"5.1":5.700989,"6.1":0.006217,"7.1":0,"9.1":0,"10.1":0.845512,"11.1":0.105689,"12.1":0.118123},G:{"8":0.00055902150645194,"3.2":0.00055902150645194,"4.0-4.1":0.0011180430129039,"4.2-4.3":0,"5.0-5.1":0.0033541290387116,"6.0-6.1":0.0016770645193558,"7.0-7.1":0.0044721720516155,"8.1-8.4":0.008385322596779,"9.0-9.2":0.0072672795838752,"9.3":0.06931866680004,"10.0-10.2":0.021801838751625,"10.3":0.076585946383915,"11.0-11.2":0.061492365709713,"11.3-11.4":0.10453702170651,"12.0-12.1":0.14087341962589,"12.2-12.4":0.84188638871662,"13.0-13.1":0.38907896849055,"13.2":0.16379330139042,"13.3":3.6917780286086},I:{"3":0.0011707417654809,"4":0.011707417654809,_:"76","2.1":0,"2.2":0.0035122252964427,"2.3":0.0011707417654809,"4.1":0.019902610013175,"4.2-4.3":0.51746786034256,"4.4":0,"4.4.3-4.4.4":0.33366140316206},B:{"12":0.06217,"13":0.12434,"14":0.006217,"15":0.012434,"16":0.024868,"17":0.18651,"18":2.244337,_:"79"},A:{"6":0,"7":0,"8":0.12151177459016,"9":0,"10":0.012790713114754,"11":1.4261645122951,"5.5":0},P:{"4":0.85856267676768,"5.0-5.4":0.20201474747475,"6.2-6.4":0.010100737373737,"7.2-7.4":0.23231695959596,"8.2":0.020201474747475,"9.2":0.15151106060606,"10.1":1.5151106060606},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.018915},J:{"7":0,"10":0.003783},R:{_:"0"},M:{"0":0.242112},O:{"0":0.817128},Q:{"1.2":0.427479},S:{"2.5":0},H:{"0":0.580203},L:{"0":47.505612}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GR.js b/assets/node_modules/caniuse-lite/data/regions/GR.js
deleted file mode 100644
index 77132ce..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GR.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.017604,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.011736,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.02934,"35":0.005868,"36":0,"37":0,"38":0.046944,"39":0,"40":0.005868,"41":0,"42":0,"43":0.011736,"44":0,"45":0,"46":0.005868,"47":0.005868,"48":0.011736,"49":1.273356,"50":0.005868,"51":0.005868,"52":0.005868,"53":0.017604,"54":0.02934,"55":0.005868,"56":0.017604,"57":0.011736,"58":0.035208,"59":0.005868,"60":0.005868,"61":0.035208,"62":0.02934,"63":0.017604,"64":0.023472,"65":0.017604,"66":0.023472,"67":0.035208,"68":0.011736,"69":0.02934,"70":0.070416,"71":0.05868,"72":0.11736,"73":0.1467,"74":0.105624,"75":0.093888,"76":1.537416,"77":0.17604,"78":0.246456,"79":17.322336,"80":0.023472,"81":0.011736,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.011736,"21":0.005868,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005868,"37":0,"38":0.005868,"39":0,"40":0,"41":0.005868,"42":0,"43":0.017604,"44":0,"45":0.011736,"46":0,"47":0.017604,"48":0.02934,"49":0.005868,"50":0.005868,"51":0.017604,"52":0.698292,"53":0,"54":0,"55":0.005868,"56":0.017604,"57":0.005868,"58":0.005868,"59":0.005868,"60":0.076284,"61":0.005868,"62":0.005868,"63":0.011736,"64":0.011736,"65":0.017604,"66":0.035208,"67":0.035208,"68":1.830816,"69":0.041076,"70":0.064548,"71":0.927144,"72":3.450384,"73":0.011736,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0.017604,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.017604,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.275796,"32":0,"33":0,"34":0,"35":0,"36":0.052812,"37":0,"38":0,"39":0,"40":0.140832,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.011736,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.005868,"54":0,"55":0,"56":0.005868,"57":0,"58":0,"60":0,"62":0.023472,"63":0.005868,"64":0.017604,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.005868},E:{"4":0,"5":0,"6":0,"7":0,"8":0.005868,"9":0,"10":0.005868,"11":0.005868,"12":0.023472,"13":0.545724,_:"0","3.1":0,"3.2":0,"5.1":0.005868,"6.1":0,"7.1":0,"9.1":0.005868,"10.1":0.041076,"11.1":0.052812,"12.1":0.064548},G:{"8":0.00075525697709313,"3.2":0.00075525697709313,"4.0-4.1":0.0015105139541863,"4.2-4.3":0,"5.0-5.1":0.0045315418625588,"6.0-6.1":0.0022657709312794,"7.0-7.1":0.006042055816745,"8.1-8.4":0.011328854656397,"9.0-9.2":0.0098183407022107,"9.3":0.093651865159548,"10.0-10.2":0.029455022106632,"10.3":0.10347020586176,"11.0-11.2":0.083078267480244,"11.3-11.4":0.14123305471641,"12.0-12.1":0.19032475822747,"12.2-12.4":1.1374170075023,"13.0-13.1":0.52565885605682,"13.2":0.22129029428829,"13.3":4.987717076723},I:{"3":0.0020139393939394,"4":0.020139393939394,_:"76","2.1":0,"2.2":0.0060418181818182,"2.3":0.0020139393939394,"4.1":0.03423696969697,"4.2-4.3":0.89016121212121,"4.4":0,"4.4.3-4.4.4":0.57397272727273},B:{"12":0.005868,"13":0.023472,"14":0.011736,"15":0.017604,"16":0.017604,"17":0.076284,"18":0.82152,_:"79"},A:{"6":0.005868,"7":0,"8":0.035208,"9":0,"10":0.023472,"11":0.903672,"5.5":0},P:{"4":0.38498512211221,"5.0-5.4":0,"6.2-6.4":0.04162001320132,"7.2-7.4":0.03121500990099,"8.2":0.02081000660066,"9.2":0.46822514851485,"10.1":2.1538356831683},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.210732},J:{"7":0,"10":0.004132},R:{_:"0"},M:{"0":0.223128},O:{"0":0.06198},Q:{"1.2":0.004132},S:{"2.5":0},H:{"0":0.40292679725086},L:{"0":51.097544}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GT.js b/assets/node_modules/caniuse-lite/data/regions/GT.js
deleted file mode 100644
index 4f97197..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GT.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.005836,"36":0,"37":0,"38":0.017508,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0.005836,"45":0,"46":0,"47":0,"48":0,"49":0.297636,"50":0,"51":0,"52":0,"53":0.017508,"54":0,"55":0.017508,"56":0.011672,"57":0,"58":0.005836,"59":0.005836,"60":0,"61":0,"62":0.005836,"63":0.023344,"64":0.011672,"65":0.035016,"66":0.023344,"67":0.064196,"68":0.017508,"69":0.02918,"70":0.035016,"71":0.02918,"72":0.157572,"73":0.02918,"74":0.099212,"75":0.093376,"76":0.105048,"77":0.163408,"78":0.402684,"79":23.419868,"80":0.011672,"81":0.011672,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005836,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.005836,"46":0,"47":0.005836,"48":0.023344,"49":0,"50":0,"51":0,"52":0.093376,"53":0,"54":0.005836,"55":0.005836,"56":0,"57":0.005836,"58":0,"59":0,"60":0.005836,"61":0.005836,"62":0.005836,"63":0.005836,"64":0.005836,"65":0.005836,"66":0.017508,"67":0.005836,"68":0.105048,"69":0.023344,"70":0.040852,"71":1.097168,"72":1.709948,"73":0.02918,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005836,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005836,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.005836,"54":0.005836,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.08754,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.005836},E:{"4":0,"5":0,"6":0,"7":0,"8":0.005836,"9":0.017508,"10":0.017508,"11":0.052524,"12":0.169244,"13":1.844176,_:"0","3.1":0,"3.2":0,"5.1":0.075868,"6.1":0,"7.1":0,"9.1":0.005836,"10.1":0.08754,"11.1":0.280128,"12.1":0.420192},G:{"8":0.00072157407222167,"3.2":0.00072157407222167,"4.0-4.1":0.0014431481444433,"4.2-4.3":0,"5.0-5.1":0.00432944443333,"6.0-6.1":0.002164722216665,"7.0-7.1":0.0057725925777733,"8.1-8.4":0.010823611083325,"9.0-9.2":0.0093804629388817,"9.3":0.089475184955487,"10.0-10.2":0.028141388816645,"10.3":0.098855647894368,"11.0-11.2":0.079373147944383,"11.3-11.4":0.13493435150545,"12.0-12.1":0.18183666619986,"12.2-12.4":1.0866905527658,"13.0-13.1":0.50221555426628,"13.2":0.21142120316095,"13.3":4.7652751729519},I:{"3":0.00024704611330698,"4":0.0024704611330698,_:"76","2.1":0,"2.2":0.00074113833992095,"2.3":0.00024704611330698,"4.1":0.0041997839262187,"4.2-4.3":0.10919438208169,"4.4":0,"4.4.3-4.4.4":0.07040814229249},B:{"12":0.005836,"13":0.005836,"14":0.005836,"15":0.011672,"16":0.011672,"17":0.081704,"18":0.420192,_:"79"},A:{"6":0.005836,"7":0,"8":0.017508,"9":0,"10":0.011672,"11":0.239276,"5.5":0},P:{"4":0.30460565217391,"5.0-5.4":0.020307043478261,"6.2-6.4":0.020307043478261,"7.2-7.4":0.16245634782609,"8.2":0.091381695652174,"9.2":0.28429860869565,"10.1":1.8479409565217},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.016656},J:{"7":0,"10":0.004164},R:{_:"0"},M:{"0":0.174888},O:{"0":0.095772},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.27595443298969},L:{"0":54.339352}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GU.js b/assets/node_modules/caniuse-lite/data/regions/GU.js
deleted file mode 100644
index 6771947..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GU.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.004572,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.077724,"50":0,"51":0,"52":0,"53":0.04572,"54":0.013716,"55":0.009144,"56":0.009144,"57":0.004572,"58":0,"59":0,"60":0,"61":0,"62":0.009144,"63":0.096012,"64":0,"65":0.036576,"66":0.004572,"67":0.04572,"68":0,"69":0.041148,"70":0.032004,"71":0,"72":0.009144,"73":0.013716,"74":0.050292,"75":0.054864,"76":0.242316,"77":0.04572,"78":0.201168,"79":11.38428,"80":0.004572,"81":0.009144,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.032004,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.009144,"48":0.06858,"49":0,"50":0,"51":0,"52":0.009144,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0.004572,"67":0.036576,"68":0.109728,"69":0.018288,"70":0.018288,"71":0.237744,"72":0.75438,"73":0.032004,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.004572,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.004572,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.004572,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.004572,"11":0.018288,"12":0.1143,"13":2.203704,_:"0","3.1":0,"3.2":0,"5.1":0.004572,"6.1":0,"7.1":0,"9.1":0.009144,"10.1":0.06858,"11.1":0.082296,"12.1":0.406908},G:{"8":0.0036348856656997,"3.2":0.0036348856656997,"4.0-4.1":0.0072697713313994,"4.2-4.3":0,"5.0-5.1":0.021809313994198,"6.0-6.1":0.010904656997099,"7.0-7.1":0.029079085325598,"8.1-8.4":0.054523284985496,"9.0-9.2":0.047253513654096,"9.3":0.45072582254676,"10.0-10.2":0.14176054096229,"10.3":0.49797933620086,"11.0-11.2":0.39983742322697,"11.3-11.4":0.67972361948585,"12.0-12.1":0.91599118775633,"12.2-12.4":5.4741378125438,"13.0-13.1":2.529880423327,"13.2":1.06502150005,"13.3":24.004784936281},I:{"3":0.0004615441370224,"4":0.004615441370224,_:"76","2.1":0,"2.2":0.0013846324110672,"2.3":0.0004615441370224,"4.1":0.0078462503293808,"4.2-4.3":0.2040025085639,"4.4":0,"4.4.3-4.4.4":0.13154007905138},B:{"12":0.004572,"13":0.004572,"14":0.004572,"15":0.004572,"16":0.02286,"17":0.06858,"18":2.052828,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0.0046966909090909,"11":0.51193930909091,"5.5":0},P:{"4":0.11733824908425,"5.0-5.4":0.021334227106227,"6.2-6.4":0.010667113553114,"7.2-7.4":0.053335567765568,"8.2":0.11733824908425,"9.2":0.38401608791209,"10.1":4.0001675824176},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.276828},O:{"0":0.097704},Q:{"1.2":0.016284},S:{"2.5":0},H:{"0":0.082222075601375},L:{"0":33.958196}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GW.js b/assets/node_modules/caniuse-lite/data/regions/GW.js
deleted file mode 100644
index 0e7bdf9..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GW.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.00239,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.00478,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.13862,"34":0,"35":0.00239,"36":0,"37":0.00239,"38":0,"39":0,"40":0.01673,"41":0,"42":0,"43":0.09799,"44":0,"45":0,"46":0.00239,"47":0,"48":0,"49":0.00478,"50":0.00239,"51":0.00239,"52":0.00239,"53":0,"54":0,"55":0.00239,"56":0,"57":0,"58":0.00239,"59":0.00239,"60":0,"61":0,"62":0.00239,"63":0.00478,"64":0.00717,"65":0.00478,"66":0,"67":0,"68":0,"69":0.00478,"70":0.04063,"71":0.00239,"72":0.0239,"73":0.00239,"74":0.00956,"75":0.00239,"76":0.02629,"77":0.0239,"78":0.05497,"79":2.09364,"80":0,"81":0.00478,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.00239,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.00239,"30":0.00239,"31":0,"32":0.00239,"33":0,"34":0,"35":0,"36":0.00239,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.01195,"44":0,"45":0.00478,"46":0,"47":0,"48":0,"49":0.00478,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0.00239,"61":0.01195,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0.10038,"69":0.00478,"70":0,"71":0.12667,"72":0.36089,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.00478,"21":0,"22":0,"23":0.00239,"24":0,"25":0,"26":0,"27":0,"28":0.00239,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.00239,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.00239,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.00239},E:{"4":0,"5":0,"6":0,"7":0.00717,"8":0,"9":0,"10":0,"11":0,"12":0.00239,"13":0.10277,_:"0","3.1":0,"3.2":0,"5.1":0.95122,"6.1":0,"7.1":0,"9.1":0,"10.1":0.01195,"11.1":0,"12.1":0.00478},G:{"8":0.00018599279783935,"3.2":0.00018599279783935,"4.0-4.1":0.0003719855956787,"4.2-4.3":0,"5.0-5.1":0.0011159567870361,"6.0-6.1":0.00055797839351806,"7.0-7.1":0.0014879423827148,"8.1-8.4":0.0027898919675903,"9.0-9.2":0.0024179063719116,"9.3":0.02306310693208,"10.0-10.2":0.0072537191157347,"10.3":0.025481013303991,"11.0-11.2":0.020459207762329,"11.3-11.4":0.034780653195959,"12.0-12.1":0.046870185055517,"12.2-12.4":0.28010515354606,"13.0-13.1":0.12945098729619,"13.2":0.05449588976693,"13.3":1.2282964369311},I:{"3":0.0011701185770751,"4":0.011701185770751,_:"76","2.1":0,"2.2":0.0035103557312253,"2.3":0.0011701185770751,"4.1":0.019892015810277,"4.2-4.3":0.51719241106719,"4.4":0,"4.4.3-4.4.4":0.3334837944664},B:{"12":0.02868,"13":0.00239,"14":0.00717,"15":0.0478,"16":0.00239,"17":0.01912,"18":0.20793,_:"79"},A:{"6":0,"7":0,"8":0.02629,"9":0,"10":0.00478,"11":0.05975,"5.5":0},P:{"4":2.1341843710292,"5.0-5.4":0.071139479034307,"6.2-6.4":0.081302261753494,"7.2-7.4":0.79269705209657,"8.2":0.03048834815756,"9.2":0.46748800508259,"10.1":4.4106477001271},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.04566},J:{"7":0,"10":0.00761},R:{_:"0"},M:{"0":0.41094},O:{"0":1.68181},Q:{"1.2":0},S:{"2.5":0},H:{"0":12.788265034364},L:{"0":62.92111}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/GY.js b/assets/node_modules/caniuse-lite/data/regions/GY.js
deleted file mode 100644
index d828d65..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/GY.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0.004343,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.008686,"37":0,"38":0.008686,"39":0,"40":0.104232,"41":0,"42":0,"43":0.008686,"44":0,"45":0.004343,"46":0.004343,"47":0,"48":0,"49":0.021715,"50":0.004343,"51":0.004343,"52":0,"53":0.008686,"54":0,"55":0.021715,"56":0.008686,"57":0,"58":0.008686,"59":0,"60":0.008686,"61":0.004343,"62":0.004343,"63":0.052116,"64":0.008686,"65":0.026058,"66":0.004343,"67":0.008686,"68":0.004343,"69":0.112918,"70":0.039087,"71":1.194325,"72":0.026058,"73":0.008686,"74":0.026058,"75":0.034744,"76":0.099889,"77":0.052116,"78":0.82517,"79":10.062731,"80":0.008686,"81":0.004343,"82":0},C:{"2":0,"3":0.004343,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.017372,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.004343,"48":0.004343,"49":0,"50":0,"51":0,"52":0.008686,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0.004343,"68":0.073831,"69":0.008686,"70":0.008686,"71":0.26058,"72":0.655793,"73":0.021715,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0.004343,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.004343,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.021715,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0.013029,"64":0.013029,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.004343,"11":0,"12":0.004343,"13":0.460358,_:"0","3.1":0,"3.2":0,"5.1":0.047773,"6.1":0,"7.1":0,"9.1":0.004343,"10.1":0.008686,"11.1":0.039087,"12.1":0.034744},G:{"8":0.0010709954986496,"3.2":0.0010709954986496,"4.0-4.1":0.0021419909972992,"4.2-4.3":0,"5.0-5.1":0.0064259729918976,"6.0-6.1":0.0032129864959488,"7.0-7.1":0.0085679639891968,"8.1-8.4":0.016064932479744,"9.0-9.2":0.013922941482445,"9.3":0.13280344183255,"10.0-10.2":0.041768824447334,"10.3":0.14672638331499,"11.0-11.2":0.11780950485146,"11.3-11.4":0.20027615824747,"12.0-12.1":0.2698908656597,"12.2-12.4":1.6129192209663,"13.0-13.1":0.74541286706012,"13.2":0.31380168110433,"13.3":7.0728542730819},I:{"3":0.0026488155467721,"4":0.026488155467721,_:"76","2.1":0,"2.2":0.0079464466403162,"2.3":0.0026488155467721,"4.1":0.045029864295125,"4.2-4.3":1.1707764716733,"4.4":0,"4.4.3-4.4.4":0.75491243083004},B:{"12":0.013029,"13":0.021715,"14":0.008686,"15":0.082517,"16":0.030401,"17":0.138976,"18":1.016262,_:"79"},A:{"6":0.004343,"7":0,"8":0.004343,"9":0,"10":0.008686,"11":0.152005,"5.5":0},P:{"4":0.31002947401247,"5.0-5.4":0.032072014553015,"6.2-6.4":0.032072014553015,"7.2-7.4":0.23519477338877,"8.2":0.032072014553015,"9.2":0.39555484615385,"10.1":4.0090018191268},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.022628},J:{"7":0,"10":0.028285},R:{_:"0"},M:{"0":0.181024},O:{"0":0.967347},Q:{"1.2":0.016971},S:{"2.5":0.005657},H:{"0":0.78728527319588},L:{"0":60.59298}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/HK.js b/assets/node_modules/caniuse-lite/data/regions/HK.js
deleted file mode 100644
index 6ab21e0..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/HK.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.006146,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.006146,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.03073,"35":0,"36":0.006146,"37":0,"38":0.067606,"39":0,"40":0.006146,"41":0,"42":0,"43":0,"44":0,"45":0.006146,"46":0,"47":0.006146,"48":0.018438,"49":0.258132,"50":0.006146,"51":0.006146,"52":0.006146,"53":0.06146,"54":0.012292,"55":0.03073,"56":0.018438,"57":0.043022,"58":0.018438,"59":0.012292,"60":0.018438,"61":0.012292,"62":0.06146,"63":0.485534,"64":0.018438,"65":0.073752,"66":0.036876,"67":0.104482,"68":0.073752,"69":0.258132,"70":0.116774,"71":0.09219,"72":0.129066,"73":0.227402,"74":0.18438,"75":0.27657,"76":0.27657,"77":0.331884,"78":1.001798,"79":21.05005,"80":0.06146,"81":0.067606,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.03073,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.006146,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.006146,"46":0,"47":0.006146,"48":0.024584,"49":0,"50":0,"51":0.006146,"52":0.043022,"53":0.006146,"54":0,"55":0.006146,"56":0.018438,"57":0.006146,"58":0,"59":0.006146,"60":0.024584,"61":0,"62":0.006146,"63":0.006146,"64":0.006146,"65":0.006146,"66":0.018438,"67":0.018438,"68":0.135212,"69":0.018438,"70":0.043022,"71":0.651476,"72":1.487332,"73":0.006146,"74":0.006146,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.006146,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.006146,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.006146},E:{"4":0,"5":0,"6":0,"7":0,"8":0.03073,"9":0.012292,"10":0.024584,"11":0.055314,"12":0.178234,"13":2.814868,_:"0","3.1":0,"3.2":0,"5.1":0.006146,"6.1":0,"7.1":0,"9.1":0.03073,"10.1":0.09219,"11.1":0.178234,"12.1":0.55314},G:{"8":0.0027724755426628,"3.2":0.0027724755426628,"4.0-4.1":0.0055449510853256,"4.2-4.3":0,"5.0-5.1":0.016634853255977,"6.0-6.1":0.0083174266279884,"7.0-7.1":0.022179804341302,"8.1-8.4":0.041587133139942,"9.0-9.2":0.036042182054616,"9.3":0.34378696729019,"10.0-10.2":0.10812654616385,"10.3":0.3798291493448,"11.0-11.2":0.30497230969291,"11.3-11.4":0.51845292647794,"12.0-12.1":0.69866383675103,"12.2-12.4":4.1753481672502,"13.0-13.1":1.9296429776933,"13.2":0.8123353340002,"13.3":18.309428483745},I:{"3":0.00051204479578393,"4":0.0051204479578393,_:"76","2.1":0,"2.2":0.0015361343873518,"2.3":0.00051204479578393,"4.1":0.0087047615283267,"4.2-4.3":0.2263237997365,"4.4":0,"4.4.3-4.4.4":0.14593276679842},B:{"12":0.006146,"13":0,"14":0.006146,"15":0.018438,"16":0.024584,"17":0.067606,"18":1.272222,_:"79"},A:{"6":0,"7":0,"8":0.033681468926554,"9":0.020208881355932,"10":0.013472587570621,"11":1.1249610621469,"5.5":0},P:{"4":0.30582125274725,"5.0-5.4":0.021091120879121,"6.2-6.4":0.021091120879121,"7.2-7.4":0.063273362637363,"8.2":0.042182241758242,"9.2":0.22145676923077,"10.1":3.0371214065934},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.015416},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.200408},O:{"0":0.608932},Q:{"1.2":0.1927},S:{"2.5":0},H:{"0":0.094866673539519},L:{"0":28.510556}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/HN.js b/assets/node_modules/caniuse-lite/data/regions/HN.js
deleted file mode 100644
index 14d08e9..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/HN.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.013686,"37":0,"38":0.020529,"39":0,"40":0.013686,"41":0.013686,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.006843,"49":0.6843,"50":0.006843,"51":0.006843,"52":0.006843,"53":0.047901,"54":0,"55":0.006843,"56":0,"57":0.013686,"58":0.020529,"59":0.006843,"60":0.041058,"61":0,"62":0.006843,"63":0.034215,"64":0.013686,"65":0.082116,"66":0.013686,"67":0.034215,"68":0.013686,"69":0.143703,"70":0.088959,"71":0.061587,"72":0.034215,"73":0.082116,"74":0.13686,"75":0.157389,"76":0.198447,"77":0.27372,"78":0.472167,"79":28.460037,"80":0.047901,"81":0.020529,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.013686,"13":0.006843,"14":0,"15":0,"16":0.013686,"17":0.006843,"18":0,"19":0.013686,"20":0.006843,"21":0.027372,"22":0.013686,"23":0.006843,"24":0.013686,"25":0.013686,"26":0.020529,"27":0.020529,"28":0.020529,"29":0.013686,"30":0.013686,"31":0.034215,"32":0.034215,"33":0.006843,"34":0.006843,"35":0.006843,"36":0.006843,"37":0.006843,"38":0.006843,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.006843,"48":0.006843,"49":0,"50":0.034215,"51":0,"52":0.06843,"53":0,"54":0.006843,"55":0.006843,"56":0.006843,"57":0,"58":0,"59":0,"60":0.006843,"61":0.006843,"62":0.006843,"63":0,"64":0.020529,"65":0.006843,"66":0.006843,"67":0.006843,"68":0.123174,"69":0.013686,"70":0.061587,"71":0.711672,"72":2.18976,"73":0.020529,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0.006843,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.006843,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.006843,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0.006843,"64":0.102645,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.006843},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.020529,"11":0.109488,"12":0.130017,"13":1.929726,_:"0","3.1":0,"3.2":0,"5.1":4.406892,"6.1":0,"7.1":0,"9.1":0.006843,"10.1":0.102645,"11.1":0.171075,"12.1":0.526911},G:{"8":0.00081711233370011,"3.2":0.00081711233370011,"4.0-4.1":0.0016342246674002,"4.2-4.3":0,"5.0-5.1":0.0049026740022007,"6.0-6.1":0.0024513370011003,"7.0-7.1":0.0065368986696009,"8.1-8.4":0.012256685005502,"9.0-9.2":0.010622460338101,"9.3":0.10132192937881,"10.0-10.2":0.031867381014304,"10.3":0.11194438971692,"11.0-11.2":0.089882356707012,"11.3-11.4":0.15280000640192,"12.0-12.1":0.20591230809243,"12.2-12.4":1.2305711745524,"13.0-13.1":0.56871018425528,"13.2":0.23941391377413,"13.3":5.3962098517555},I:{"3":0.00060259815546772,"4":0.0060259815546772,_:"76","2.1":0,"2.2":0.0018077944664032,"2.3":0.00060259815546772,"4.1":0.010244168642951,"4.2-4.3":0.26634838471673,"4.4":0,"4.4.3-4.4.4":0.1717404743083},B:{"12":0.006843,"13":0.027372,"14":0.047901,"15":0.020529,"16":0.013686,"17":0.116331,"18":0.670614,_:"79"},A:{"6":0.0071909491525424,"7":0,"8":0.13662803389831,"9":0.035954745762712,"10":0.028763796610169,"11":0.21572847457627,"5.5":0},P:{"4":0.24164842718447,"5.0-5.4":0.060412106796116,"6.2-6.4":0.040274737864078,"7.2-7.4":0.080549475728155,"8.2":0.020137368932039,"9.2":0.15103026699029,"10.1":1.4599592475728},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.009471,"11":0.028413},J:{"7":0,"10":0.015785},R:{_:"0"},M:{"0":0.113652},O:{"0":0.12628},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.21519674226804},L:{"0":41.71698}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/HR.js b/assets/node_modules/caniuse-lite/data/regions/HR.js
deleted file mode 100644
index 413bbdf..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/HR.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.004309,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.004309,"35":0,"36":0,"37":0,"38":0.008618,"39":0,"40":0,"41":0,"42":0,"43":0.021545,"44":0,"45":0,"46":0,"47":0.004309,"48":0,"49":0.331793,"50":0.004309,"51":0.004309,"52":0.004309,"53":0.021545,"54":0.004309,"55":0.004309,"56":0.004309,"57":0.004309,"58":0.008618,"59":0.004309,"60":0.004309,"61":0.094798,"62":0.008618,"63":0.017236,"64":0.008618,"65":0.008618,"66":0.004309,"67":0.012927,"68":0.008618,"69":0.021545,"70":0.047399,"71":0.056017,"72":0.04309,"73":0.047399,"74":0.094798,"75":0.04309,"76":0.060326,"77":0.090489,"78":0.202523,"79":11.104293,"80":0.012927,"81":0.017236,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.004309,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.004309,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.004309,"44":0,"45":0,"46":0,"47":0.004309,"48":0.012927,"49":0,"50":0.004309,"51":0,"52":0.090489,"53":0,"54":0,"55":0,"56":0.004309,"57":0,"58":0.004309,"59":0.008618,"60":0.012927,"61":0.004309,"62":0,"63":0.004309,"64":0.012927,"65":0.008618,"66":0.017236,"67":0.008618,"68":0.12927,"69":0.021545,"70":0.030163,"71":0.60326,"72":1.641729,"73":0.017236,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.004309,"33":0,"34":0,"35":0.004309,"36":0.008618,"37":0,"38":0,"39":0,"40":0.017236,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.021545,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0.012927,"58":0,"60":0,"62":0,"63":0,"64":0.021545,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.004309},E:{"4":0,"5":0,"6":0,"7":0,"8":0.004309,"9":0,"10":0.004309,"11":0.004309,"12":0.017236,"13":0.435209,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.004309,"10.1":0.017236,"11.1":0.038781,"12.1":0.081871},G:{"8":0.00070783675102531,"3.2":0.00070783675102531,"4.0-4.1":0.0014156735020506,"4.2-4.3":0,"5.0-5.1":0.0042470205061518,"6.0-6.1":0.0021235102530759,"7.0-7.1":0.0056626940082025,"8.1-8.4":0.01061755126538,"9.0-9.2":0.009201877763329,"9.3":0.087771757127138,"10.0-10.2":0.027605633289987,"10.3":0.096973634890467,"11.0-11.2":0.077862042612784,"11.3-11.4":0.13236547244173,"12.0-12.1":0.17837486125838,"12.2-12.4":1.0660021470441,"13.0-13.1":0.49265437871361,"13.2":0.20739616805042,"13.3":4.6745539037711},I:{"3":0.00018670355731225,"4":0.0018670355731225,_:"76","2.1":0,"2.2":0.00056011067193676,"2.3":0.00018670355731225,"4.1":0.0031739604743083,"4.2-4.3":0.082522972332016,"4.4":0,"4.4.3-4.4.4":0.053210513833992},B:{"12":0.004309,"13":0.008618,"14":0.008618,"15":0.021545,"16":0.012927,"17":0.077562,"18":0.538625,_:"79"},A:{"6":0,"7":0,"8":0.16479162820513,"9":0,"10":0.0043366217948718,"11":0.50738475,"5.5":0},P:{"4":0.2153095,"5.0-5.4":0.020505666666667,"6.2-6.4":0.041011333333333,"7.2-7.4":0.123034,"8.2":0.051264166666667,"9.2":0.42036616666667,"10.1":5.4852658333333},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.051219},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.199185},O:{"0":0.05691},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.25322994329897},L:{"0":64.943553}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/HT.js b/assets/node_modules/caniuse-lite/data/regions/HT.js
deleted file mode 100644
index a27582a..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/HT.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.003583,"36":0.003583,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0.003583,"43":0.003583,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.021498,"50":0.003583,"51":0,"52":0,"53":0,"54":0,"55":0.003583,"56":0.003583,"57":0.003583,"58":0.010749,"59":0,"60":0.003583,"61":0,"62":0.003583,"63":0.017915,"64":0.003583,"65":0.010749,"66":0.003583,"67":0.003583,"68":0.003583,"69":0.111073,"70":0.010749,"71":0.010749,"72":0.007166,"73":0.014332,"74":0.017915,"75":0.017915,"76":0.039413,"77":0.032247,"78":0.114656,"79":3.239032,"80":0.014332,"81":0.007166,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.003583,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.007166,"44":0,"45":0,"46":0,"47":0.003583,"48":0.003583,"49":0,"50":0.003583,"51":0,"52":0.003583,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0.007166,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0.050162,"69":0.007166,"70":0.003583,"71":0.136154,"72":0.343968,"73":0.014332,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0.003583,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.003583,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.003583,"46":0.017915,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.003583,"53":0.007166,"54":0,"55":0,"56":0.003583,"57":0,"58":0,"60":0,"62":0.003583,"63":0.028664,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.007166},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.003583,"11":0.017915,"12":0.032247,"13":0.562531,_:"0","3.1":0,"3.2":0,"5.1":6.051687,"6.1":0,"7.1":0,"9.1":0.017915,"10.1":0.007166,"11.1":0.025081,"12.1":0.082409},G:{"8":0.00060016174852456,"3.2":0.00060016174852456,"4.0-4.1":0.0012003234970491,"4.2-4.3":0,"5.0-5.1":0.0036009704911473,"6.0-6.1":0.0018004852455737,"7.0-7.1":0.0048012939881965,"8.1-8.4":0.0090024262278684,"9.0-9.2":0.0078021027308192,"9.3":0.074420056817045,"10.0-10.2":0.023406308192458,"10.3":0.082222159547864,"11.0-11.2":0.066017792337701,"11.3-11.4":0.11223024697409,"12.0-12.1":0.15124076062819,"12.2-12.4":0.90384359327798,"13.0-13.1":0.41771257697309,"13.2":0.1758473923177,"13.3":3.9634681872562},I:{"3":0.00038426877470356,"4":0.0038426877470356,_:"76","2.1":0,"2.2":0.0011528063241107,"2.3":0.00038426877470356,"4.1":0.0065325691699605,"4.2-4.3":0.16984679841897,"4.4":0,"4.4.3-4.4.4":0.10951660079051},B:{"12":0.017915,"13":0.025081,"14":0.007166,"15":0.021498,"16":0.032247,"17":0.032247,"18":0.3583,_:"79"},A:{"6":0,"7":0,"8":0.014332,"9":0.003583,"10":0.007166,"11":0.111073,"5.5":0},P:{"4":0.37413054545455,"5.0-5.4":0.16178618181818,"6.2-6.4":0.050558181818182,"7.2-7.4":0.19212109090909,"8.2":0.060669818181818,"9.2":0.17189781818182,"10.1":0.98082872727273},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.02139,"11":0.04278},J:{"7":0,"10":0.019251},R:{_:"0"},M:{"0":0.121923},O:{"0":0.359352},Q:{"1.2":0.006417},S:{"2.5":0},H:{"0":2.612336443299},L:{"0":74.187478}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/HU.js b/assets/node_modules/caniuse-lite/data/regions/HU.js
deleted file mode 100644
index dfb967e..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/HU.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.011468,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.02867,"35":0,"36":0,"37":0,"38":0.074542,"39":0,"40":0,"41":0,"42":0,"43":0.005734,"44":0,"45":0,"46":0.005734,"47":0,"48":0.005734,"49":0.395646,"50":0.005734,"51":0.005734,"52":0,"53":0.074542,"54":0.005734,"55":0.005734,"56":0.005734,"57":0.005734,"58":0.022936,"59":0.005734,"60":0.005734,"61":0.005734,"62":0.005734,"63":0.137616,"64":0.005734,"65":0.011468,"66":0.017202,"67":0.017202,"68":0.011468,"69":0.034404,"70":0.02867,"71":0.051606,"72":0.034404,"73":0.045872,"74":0.040138,"75":0.063074,"76":0.05734,"77":0.08601,"78":0.366976,"79":20.315562,"80":0.022936,"81":0.011468,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.017202,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0.005734,"42":0,"43":0,"44":0,"45":0.005734,"46":0,"47":0.005734,"48":0.011468,"49":0,"50":0.005734,"51":0.005734,"52":0.154818,"53":0.005734,"54":0.005734,"55":0.011468,"56":0.022936,"57":0.011468,"58":0.005734,"59":0.005734,"60":0.017202,"61":0.005734,"62":0.005734,"63":0.011468,"64":0.005734,"65":0.011468,"66":0.022936,"67":0.017202,"68":0.25803,"69":0.02867,"70":0.131882,"71":1.60552,"72":3.428932,"73":0.005734,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.011468,"37":0,"38":0,"39":0,"40":0.005734,"41":0,"42":0,"43":0,"44":0,"45":0.005734,"46":0.040138,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.005734,"57":0,"58":0,"60":0,"62":0,"63":0.005734,"64":0.091744,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.005734},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.005734,"12":0.034404,"13":0.8601,_:"0","3.1":0,"3.2":0,"5.1":0.022936,"6.1":0,"7.1":0,"9.1":0.005734,"10.1":0.017202,"11.1":0.05734,"12.1":0.108946},G:{"8":0.0011990249074722,"3.2":0.0011990249074722,"4.0-4.1":0.0023980498149445,"4.2-4.3":0,"5.0-5.1":0.0071941494448334,"6.0-6.1":0.0035970747224167,"7.0-7.1":0.0095921992597779,"8.1-8.4":0.017985373612084,"9.0-9.2":0.015587323797139,"9.3":0.14867908852656,"10.0-10.2":0.046761971391417,"10.3":0.1642664123237,"11.0-11.2":0.13189273982195,"11.3-11.4":0.22421765769731,"12.0-12.1":0.302154276683,"12.2-12.4":1.8057315106532,"13.0-13.1":0.83452133560068,"13.2":0.35131429788937,"13.3":7.9183604889467},I:{"3":0.00053087747035573,"4":0.0053087747035573,_:"76","2.1":0,"2.2":0.0015926324110672,"2.3":0.00053087747035573,"4.1":0.0090249169960474,"4.2-4.3":0.23464784189723,"4.4":0,"4.4.3-4.4.4":0.15130007905138},B:{"12":0,"13":0.005734,"14":0.011468,"15":0.022936,"16":0.017202,"17":0.091744,"18":1.123864,_:"79"},A:{"6":0,"7":0,"8":0.011468,"9":0,"10":0.005734,"11":0.43005,"5.5":0},P:{"4":0.53585392207792,"5.0-5.4":0,"6.2-6.4":0.020609766233766,"7.2-7.4":0.030914649350649,"8.2":0.020609766233766,"9.2":0.1236585974026,"10.1":2.3289035844156},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.059724},J:{"7":0,"10":0.008532},R:{_:"0"},M:{"0":0.273024},O:{"0":0.059724},Q:{"1.2":0.004266},S:{"2.5":0},H:{"0":0.35945081443299},L:{"0":49.11784}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/ID.js b/assets/node_modules/caniuse-lite/data/regions/ID.js
deleted file mode 100644
index 0973afc..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/ID.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.0094,"30":0.0047,"31":0.0188,"32":0.0047,"33":0.0094,"34":0,"35":0,"36":0.0141,"37":0,"38":0.0047,"39":0,"40":0,"41":0.0047,"42":0,"43":0.0094,"44":0,"45":0,"46":0.0047,"47":0,"48":0.0047,"49":0.1034,"50":0.0047,"51":0.0094,"52":0,"53":0.0094,"54":0.0047,"55":0.0094,"56":0.0047,"57":0.0047,"58":0.0517,"59":0.0047,"60":0.0094,"61":0.0188,"62":0.0141,"63":0.0611,"64":0.0094,"65":0.0188,"66":0.0141,"67":0.0282,"68":0.0141,"69":0.0282,"70":0.047,"71":0.0705,"72":0.0564,"73":0.0799,"74":0.1222,"75":0.1128,"76":0.1269,"77":0.1457,"78":0.3102,"79":13.6629,"80":0.0188,"81":0.0188,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.0047,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.0141,"37":0,"38":0,"39":0,"40":0.0047,"41":0.0047,"42":0.0047,"43":0.0094,"44":0.0047,"45":0.0047,"46":0.0047,"47":0.0188,"48":0.0188,"49":0.0047,"50":0.0047,"51":0.0047,"52":0.0611,"53":0.0047,"54":0.0094,"55":0.0047,"56":0.0282,"57":0.0094,"58":0.0094,"59":0.0047,"60":0.0141,"61":0.0141,"62":0.0141,"63":0.0094,"64":0.0141,"65":0.0141,"66":0.0235,"67":0.0235,"68":0.1081,"69":0.0517,"70":0.0799,"71":0.8507,"72":2.1996,"73":0.1222,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.0047,"29":0,"30":0,"31":0,"32":0.0047,"33":0.0047,"34":0.0047,"35":0,"36":0,"37":0.094,"38":0.0047,"39":0,"40":0,"41":0,"42":0.0047,"43":0,"44":0,"45":0.0564,"46":0.2961,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.0047,"54":0,"55":0.0047,"56":0.0047,"57":0.0047,"58":0,"60":0,"62":0.0047,"63":0,"64":0.0235,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.0047},E:{"4":0,"5":0,"6":0,"7":0,"8":0.0047,"9":0.0047,"10":0.0094,"11":0.0235,"12":0.0658,"13":0.4183,_:"0","3.1":0,"3.2":0,"5.1":0.4277,"6.1":0,"7.1":0,"9.1":0.0047,"10.1":0.0282,"11.1":0.0658,"12.1":0.1504},G:{"8":0.00048816644993498,"3.2":0.00048816644993498,"4.0-4.1":0.00097633289986996,"4.2-4.3":0,"5.0-5.1":0.0029289986996099,"6.0-6.1":0.0014644993498049,"7.0-7.1":0.0039053315994798,"8.1-8.4":0.0073224967490247,"9.0-9.2":0.0063461638491547,"9.3":0.060532639791938,"10.0-10.2":0.019038491547464,"10.3":0.066878803641092,"11.0-11.2":0.053698309492848,"11.3-11.4":0.091287126137841,"12.0-12.1":0.12301794538362,"12.2-12.4":0.73517867360208,"13.0-13.1":0.33976384915475,"13.2":0.14303276983095,"13.3":3.2238512353706},I:{"3":0.0014264822134387,"4":0.014264822134387,_:"76","2.1":0,"2.2":0.0042794466403162,"2.3":0.0014264822134387,"4.1":0.024250197628458,"4.2-4.3":0.63050513833992,"4.4":0,"4.4.3-4.4.4":0.40654743083004},B:{"12":0.0047,"13":0.0047,"14":0.0047,"15":0.0047,"16":0.0047,"17":0.0423,"18":0.2726,_:"79"},A:{"6":0,"7":0,"8":0.0376,"9":0.0047,"10":0.0047,"11":0.0423,"5.5":0},P:{"4":0.65043656716418,"5.0-5.4":0.020013432835821,"6.2-6.4":0.060040298507463,"7.2-7.4":0.13008731343284,"8.2":0.090060447761194,"9.2":0.33022164179104,"10.1":1.3709201492537},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.0106},J:{"7":0,"10":0.0106},R:{_:"0"},M:{"0":0.1166},O:{"0":3.3549},Q:{"1.2":0.0053},S:{"2.5":0},H:{"0":2.1525922680412},L:{"0":59.2348}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/IE.js b/assets/node_modules/caniuse-lite/data/regions/IE.js
deleted file mode 100644
index bc1a427..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/IE.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.007862,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.003931,"39":0,"40":0.003931,"41":0,"42":0,"43":0,"44":0,"45":0.007862,"46":0,"47":0.015724,"48":0.192619,"49":0.192619,"50":0,"51":0.003931,"52":0,"53":0.011793,"54":0,"55":0.007862,"56":0.003931,"57":0.007862,"58":0.003931,"59":0.023586,"60":0.011793,"61":0.011793,"62":0.003931,"63":0.03931,"64":0.003931,"65":0.019655,"66":0.003931,"67":0.019655,"68":0.011793,"69":0.027517,"70":0.023586,"71":0.047172,"72":0.03931,"73":0.031448,"74":0.035379,"75":0.094344,"76":0.090413,"77":0.066827,"78":0.361652,"79":8.211859,"80":0.011793,"81":0.003931,"82":0},C:{"2":0,"3":0.019655,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.007862,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.015724,"39":0,"40":0,"41":0,"42":0,"43":0.015724,"44":0.074689,"45":0.019655,"46":0.03931,"47":0.003931,"48":0.011793,"49":0,"50":0.019655,"51":0,"52":0.035379,"53":0,"54":0,"55":0.003931,"56":0.003931,"57":0,"58":0.070758,"59":0,"60":0.011793,"61":0.007862,"62":0,"63":0.007862,"64":0.003931,"65":0.023586,"66":0.015724,"67":0.011793,"68":0.121861,"69":0.007862,"70":0.011793,"71":0.216205,"72":0.522823,"73":0.007862,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.007862,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0.003931,"63":0,"64":0.003931,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0.007862,"5":0.003931,"6":0,"7":0,"8":0.011793,"9":0.031448,"10":0.019655,"11":0.011793,"12":0.027517,"13":1.438746,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.015724,"10.1":0.035379,"11.1":0.062896,"12.1":0.129723},G:{"8":0.0036627928378514,"3.2":0.0036627928378514,"4.0-4.1":0.0073255856757027,"4.2-4.3":0,"5.0-5.1":0.021976757027108,"6.0-6.1":0.010988378513554,"7.0-7.1":0.029302342702811,"8.1-8.4":0.05494189256777,"9.0-9.2":0.047616306892068,"9.3":0.45418631189357,"10.0-10.2":0.1428489206762,"10.3":0.50180261878564,"11.0-11.2":0.40290721216365,"11.3-11.4":0.6849422606782,"12.0-12.1":0.92302379513854,"12.2-12.4":5.5161660138041,"13.0-13.1":2.5493038151445,"13.2":1.0731983014904,"13.3":24.18908390117},I:{"3":0.00050311067193676,"4":0.0050311067193676,_:"76","2.1":0,"2.2":0.0015093320158103,"2.3":0.00050311067193676,"4.1":0.0085528814229249,"4.2-4.3":0.22237491699605,"4.4":0,"4.4.3-4.4.4":0.14338654150198},B:{"12":0.007862,"13":0.011793,"14":0.007862,"15":0.011793,"16":0.023586,"17":0.086482,"18":0.794062,_:"79"},A:{"6":0,"7":0,"8":0.050355386503067,"9":0.096514490797546,"10":0.020981411042945,"11":0.51614271165644,"5.5":0},P:{"4":0.063401025380711,"5.0-5.4":0.010566837563452,"6.2-6.4":0.021133675126904,"7.2-7.4":0.052834187817259,"8.2":0.021133675126904,"9.2":0.20076991370558,"10.1":3.6561257969543},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.036414},J:{"7":0,"10":0.006069},R:{_:"0"},M:{"0":0.236691},O:{"0":0.072828},Q:{"1.2":0.042483},S:{"2.5":0},H:{"0":0.13789769072165},L:{"0":41.598005}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/IL.js b/assets/node_modules/caniuse-lite/data/regions/IL.js
deleted file mode 100644
index 010f4d3..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/IL.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.034374,"32":0.005729,"33":0,"34":0.005729,"35":0,"36":0.005729,"37":0,"38":0.017187,"39":0,"40":0.022916,"41":0.005729,"42":0,"43":0.005729,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.326553,"50":0,"51":0,"52":0,"53":0.017187,"54":0,"55":0.005729,"56":0.011458,"57":0.005729,"58":0.005729,"59":0.017187,"60":0.005729,"61":0.017187,"62":0.011458,"63":0.017187,"64":0.011458,"65":0.022916,"66":0.017187,"67":0.091664,"68":0.022916,"69":0.028645,"70":0.068748,"71":0.068748,"72":0.080206,"73":0.091664,"74":0.05729,"75":0.120309,"76":0.11458,"77":0.166141,"78":0.555713,"79":24.525849,"80":0.040103,"81":0.028645,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.011458,"22":0,"23":0,"24":0.005729,"25":0.011458,"26":0.028645,"27":0.005729,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005729,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.028645,"49":0,"50":0.017187,"51":0,"52":0.040103,"53":0,"54":0,"55":0,"56":0.028645,"57":0,"58":0.103122,"59":0,"60":0.017187,"61":0,"62":0,"63":0.005729,"64":0,"65":0.005729,"66":0.097393,"67":0.005729,"68":0.085935,"69":0.011458,"70":0.022916,"71":0.395301,"72":0.784873,"73":0.011458,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.005729,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.028645,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0.005729,"8":0.120309,"9":0,"10":0.005729,"11":0.011458,"12":0.034374,"13":0.830705,_:"0","3.1":0,"3.2":0,"5.1":0.017187,"6.1":0.011458,"7.1":0,"9.1":0.028645,"10.1":0.034374,"11.1":0.080206,"12.1":0.166141},G:{"8":0.001526278183455,"3.2":0.001526278183455,"4.0-4.1":0.0030525563669101,"4.2-4.3":0,"5.0-5.1":0.0091576691007302,"6.0-6.1":0.0045788345503651,"7.0-7.1":0.01221022546764,"8.1-8.4":0.022894172751826,"9.0-9.2":0.019841616384915,"9.3":0.18925849474842,"10.0-10.2":0.059524849154746,"10.3":0.20910011113334,"11.0-11.2":0.16789060018005,"11.3-11.4":0.28541402030609,"12.0-12.1":0.38462210223067,"12.2-12.4":2.2985749442833,"13.0-13.1":1.0622896156847,"13.2":0.44719950775233,"13.3":10.079541123537},I:{"3":0.00018266798418972,"4":0.0018266798418972,_:"76","2.1":0,"2.2":0.00054800395256917,"2.3":0.00018266798418972,"4.1":0.0031053557312253,"4.2-4.3":0.080739249011858,"4.4":0,"4.4.3-4.4.4":0.052060375494071},B:{"12":0,"13":0.005729,"14":0.017187,"15":0.005729,"16":0.017187,"17":0.085935,"18":0.933827,_:"79"},A:{"6":0,"7":0,"8":0.017277457894737,"9":0.0057591526315789,"10":0.017277457894737,"11":1.0539249315789,"5.5":0},P:{"4":0.12194785214008,"5.0-5.4":0.030486963035019,"6.2-6.4":0.020324642023346,"7.2-7.4":0.10162321011673,"8.2":0.071136247081712,"9.2":0.54876533463035,"10.1":4.0852530466926},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.123859},O:{"0":0.038439},Q:{"1.2":0.004271},S:{"2.5":0.004271},H:{"0":0.11321819243986},L:{"0":43.518239}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/IM.js b/assets/node_modules/caniuse-lite/data/regions/IM.js
deleted file mode 100644
index a0588b7..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/IM.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.006759,"48":0,"49":0.06759,"50":0,"51":0,"52":0.013518,"53":0.020277,"54":0,"55":0.006759,"56":0.040554,"57":0,"58":0.006759,"59":0.006759,"60":0,"61":0,"62":0,"63":0.141939,"64":0.006759,"65":0.006759,"66":0.006759,"67":0.087867,"68":0.006759,"69":0.020277,"70":0.027036,"71":0.006759,"72":0.560997,"73":0.020277,"74":0.006759,"75":0.060831,"76":0.020277,"77":0.087867,"78":11.618721,"79":19.790352,"80":0.047313,"81":0.020277,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.040554,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.020277,"49":0,"50":0,"51":0,"52":0.040554,"53":0,"54":0,"55":0,"56":0.094626,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0.006759,"67":0.006759,"68":0.182493,"69":0.006759,"70":0.006759,"71":0.33795,"72":0.817839,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.013518,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.006759,"10":0.006759,"11":0.027036,"12":0.141939,"13":2.663046,_:"0","3.1":0,"3.2":0,"5.1":0.020277,"6.1":0,"7.1":0,"9.1":0.020277,"10.1":0.108144,"11.1":0.256842,"12.1":0.27036},G:{"8":0.0032165946784035,"3.2":0.0032165946784035,"4.0-4.1":0.006433189356807,"4.2-4.3":0,"5.0-5.1":0.019299568070421,"6.0-6.1":0.0096497840352106,"7.0-7.1":0.025732757427228,"8.1-8.4":0.048248920176053,"9.0-9.2":0.041815730819246,"9.3":0.39885774012204,"10.0-10.2":0.12544719245774,"10.3":0.44067347094128,"11.0-11.2":0.35382541462439,"11.3-11.4":0.60150320486146,"12.0-12.1":0.81058185895769,"12.2-12.4":4.8441915856757,"13.0-13.1":2.2387498961689,"13.2":0.94246224077223,"13.3":21.242391256177},I:{"3":0.00077292226613966,"4":0.0077292226613966,_:"76","2.1":0,"2.2":0.002318766798419,"2.3":0.00077292226613966,"4.1":0.013139678524374,"4.2-4.3":0.34163164163373,"4.4":0,"4.4.3-4.4.4":0.2202828458498},B:{"12":0,"13":0,"14":0.020277,"15":0.648864,"16":0.020277,"17":0.128421,"18":2.50083,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0.0068729157303371,"11":1.2165060842697,"5.5":0},P:{"4":0.03214185971223,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0.01071395323741,"8.2":0.02142790647482,"9.2":0.23570697122302,"10.1":2.6463464496403},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.029169},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.197701},O:{"0":0.019446},Q:{"1.2":0.003241},S:{"2.5":0},H:{"0":0.052162280068729},L:{"0":17.319203}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/IN.js b/assets/node_modules/caniuse-lite/data/regions/IN.js
deleted file mode 100644
index 6f87cbe..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/IN.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.002672,"32":0,"33":0.002672,"34":0,"35":0,"36":0.002672,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.002672,"47":0,"48":0.010688,"49":0.056112,"50":0.002672,"51":0.002672,"52":0,"53":0,"54":0,"55":0.005344,"56":0.002672,"57":0.002672,"58":0.005344,"59":0,"60":0.002672,"61":0.002672,"62":0.002672,"63":0.01336,"64":0.002672,"65":0.005344,"66":0.005344,"67":0.005344,"68":0.005344,"69":0.010688,"70":0.01336,"71":0.029392,"72":0.018704,"73":0.018704,"74":0.037408,"75":0.029392,"76":0.02672,"77":0.037408,"78":0.098864,"79":5.095504,"80":0.016032,"81":0.010688,"82":0},C:{"2":0,"3":0,"4":0.002672,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.002672,"32":0,"33":0,"34":0,"35":0.029392,"36":0,"37":0,"38":0,"39":0,"40":0.002672,"41":0,"42":0,"43":0.002672,"44":0.002672,"45":0,"46":0,"47":0.016032,"48":0.002672,"49":0.002672,"50":0,"51":0,"52":0.016032,"53":0,"54":0,"55":0,"56":0.005344,"57":0.002672,"58":0.002672,"59":0.005344,"60":0.002672,"61":0.002672,"62":0.002672,"63":0.002672,"64":0.002672,"65":0.0668,"66":0.045424,"67":0.002672,"68":0.04008,"69":0.005344,"70":0.010688,"71":0.1336,"72":0.317968,"73":0.034736,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.016032,"38":0.002672,"39":0,"40":0,"41":0,"42":0.002672,"43":0,"44":0,"45":0.02672,"46":0.144288,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.005344,"54":0.002672,"55":0.002672,"56":0.002672,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.002672,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.008016},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.002672,"12":0.008016,"13":0.098864,_:"0","3.1":0,"3.2":0,"5.1":0.029392,"6.1":0,"7.1":0,"9.1":0,"10.1":0.005344,"11.1":0.008016,"12.1":0.024048},G:{"8":0.00023425267580274,"3.2":0.00023425267580274,"4.0-4.1":0.00046850535160548,"4.2-4.3":0,"5.0-5.1":0.0014055160548164,"6.0-6.1":0.00070275802740822,"7.0-7.1":0.0018740214064219,"8.1-8.4":0.0035137901370411,"9.0-9.2":0.0030452847854356,"9.3":0.02904733179954,"10.0-10.2":0.0091358543563069,"10.3":0.032092616584975,"11.0-11.2":0.025767794338301,"11.3-11.4":0.043805250375113,"12.0-12.1":0.059031674302291,"12.2-12.4":0.35278452975893,"13.0-13.1":0.16303986235871,"13.2":0.068636034010203,"13.3":1.5470046710013},I:{"3":0.00019762845849802,"4":0.0019762845849802,_:"76","2.1":0,"2.2":0.00059288537549407,"2.3":0.00019762845849802,"4.1":0.0033596837944664,"4.2-4.3":0.087351778656126,"4.4":0,"4.4.3-4.4.4":0.056324110671937},B:{"12":0.002672,"13":0.002672,"14":0.002672,"15":0.002672,"16":0.002672,"17":0.01336,"18":0.09352,_:"79"},A:{"6":0,"7":0,"8":0.008016,"9":0,"10":0,"11":0.042752,"5.5":0},P:{"4":0.48175980368098,"5.0-5.4":0.020500417177914,"6.2-6.4":0.041000834355828,"7.2-7.4":0.13325271165644,"8.2":0.051251042944785,"9.2":0.26650542331288,"10.1":0.64576314110429},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.051296},J:{"7":0,"10":0.007328},R:{_:"0"},M:{"0":0.10992},O:{"0":15.31552},Q:{"1.2":0},S:{"2.5":0.996608},H:{"0":2.7542577594502},L:{"0":63.67368}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/IQ.js b/assets/node_modules/caniuse-lite/data/regions/IQ.js
deleted file mode 100644
index 16ef262..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/IQ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.002501,"27":0,"28":0,"29":0,"30":0.002501,"31":0.002501,"32":0.002501,"33":0.007503,"34":0,"35":0,"36":0.002501,"37":0,"38":0.007503,"39":0,"40":0.007503,"41":0,"42":0.002501,"43":0.05002,"44":0,"45":0,"46":0,"47":0.002501,"48":0,"49":0.035014,"50":0.002501,"51":0,"52":0.002501,"53":0.002501,"54":0,"55":0.002501,"56":0.002501,"57":0.002501,"58":0.002501,"59":0,"60":0.002501,"61":0.002501,"62":0.002501,"63":0.040016,"64":0.002501,"65":0.005002,"66":0.002501,"67":0.002501,"68":0.005002,"69":0.110044,"70":0.010004,"71":0.012505,"72":0.010004,"73":0.012505,"74":0.032513,"75":0.017507,"76":0.02501,"77":0.035014,"78":0.062525,"79":3.929071,"80":0.007503,"81":0.005002,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005002,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.002501,"48":0,"49":0,"50":0,"51":0,"52":0.002501,"53":0,"54":0,"55":0,"56":0.002501,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0.002501,"65":0.002501,"66":0,"67":0.002501,"68":0.032513,"69":0.002501,"70":0.002501,"71":0.117547,"72":0.270108,"73":0.007503,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005002,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.012505,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.005002,"13":0.177571,_:"0","3.1":0,"3.2":0,"5.1":0.392657,"6.1":0,"7.1":0,"9.1":0,"10.1":0.002501,"11.1":0.005002,"12.1":0.015006},G:{"8":0.0012325982794838,"3.2":0.0012325982794838,"4.0-4.1":0.0024651965589677,"4.2-4.3":0,"5.0-5.1":0.0073955896769031,"6.0-6.1":0.0036977948384515,"7.0-7.1":0.0098607862358708,"8.1-8.4":0.018488974192258,"9.0-9.2":0.01602377763329,"9.3":0.152842186656,"10.0-10.2":0.04807133289987,"10.3":0.16886596428929,"11.0-11.2":0.13558581074322,"11.3-11.4":0.23049587826348,"12.0-12.1":0.31061476642993,"12.2-12.4":1.8562930089027,"13.0-13.1":0.85788840252076,"13.2":0.36115129588877,"13.3":8.1400790377113},I:{"3":0.000415069828722,"4":0.00415069828722,_:"76","2.1":0,"2.2":0.001245209486166,"2.3":0.000415069828722,"4.1":0.007056187088274,"4.2-4.3":0.18346086429513,"4.4":0,"4.4.3-4.4.4":0.11829490118577},B:{"12":0.002501,"13":0.002501,"14":0.002501,"15":0.002501,"16":0.005002,"17":0.015006,"18":0.157563,_:"79"},A:{"6":0,"7":0,"8":0.020008,"9":0.002501,"10":0.002501,"11":0.055022,"5.5":0},P:{"4":0.33780199742931,"5.0-5.4":0.030709272493573,"6.2-6.4":0.061418544987147,"7.2-7.4":0.25591060411311,"8.2":0.081891393316195,"9.2":0.57323975321337,"10.1":6.5206021928021},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.007499},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.112485},O:{"0":0.517431},Q:{"1.2":0.014998},S:{"2.5":0},H:{"0":0.28398274914089},L:{"0":70.030549}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/IR.js b/assets/node_modules/caniuse-lite/data/regions/IR.js
deleted file mode 100644
index c631678..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/IR.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"11":0.004898,"13":0.680822,"29":0.004898,"30":0.009796,"31":0.014694,"32":0.009796,"34":0.009796,"35":0.014694,"36":0.004898,"38":0.02449,"39":0.004898,"45":0.004898,"46":0.004898,"47":0.009796,"48":0.009796,"49":0.39184,"50":0.004898,"51":0.019592,"52":0.009796,"53":0.014694,"54":0.014694,"55":0.014694,"56":0.014694,"57":0.009796,"58":0.02449,"59":0.009796,"60":0.02449,"61":0.014694,"62":0.029388,"63":0.093062,"64":0.009796,"65":0.009796,"66":0.019592,"67":0.029388,"68":0.02449,"69":0.044082,"70":0.142042,"71":0.225308,"72":0.156736,"73":0.112654,"74":0.083266,"75":0.156736,"76":0.22041,"77":0.19592,"78":0.323268,"79":24.93082,"80":0.019592,"81":0.014694,_:"4 5 6 7 8 9 10 12 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 33 37 40 41 42 43 44 82"},C:{"31":0.004898,"33":0.004898,"37":0.009796,"41":0.004898,"43":0.029388,"44":0.004898,"45":0.019592,"47":0.058776,"48":0.019592,"49":0.019592,"50":0.009796,"51":0.009796,"52":0.817966,"53":0.009796,"54":0.014694,"55":0.019592,"56":0.117552,"57":0.019592,"58":0.014694,"59":0.019592,"60":0.04898,"61":0.019592,"62":0.039184,"63":0.029388,"64":0.029388,"65":0.034286,"66":0.039184,"67":0.034286,"68":0.377146,"69":0.083266,"70":0.117552,"71":2.79186,"72":6.690668,"73":0.14694,"74":0.004898,_:"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 34 35 36 38 39 40 42 46 3.5 3.6"},F:{"56":0.009796,"57":0.009796,"58":0.014694,"62":0.009796,"64":0.044082,_:"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 60 63 9.5-9.6 10.5 10.6 11.1 11.5 12.1","10.0-10.1":0,"11.6":0.009796},E:{"4":0,"8":0.009796,"9":0.009796,"10":0.014694,"11":0.019592,"12":0.053878,"13":0.455514,_:"0 5 6 7 3.1 3.2 6.1 7.1","5.1":0.137144,"9.1":0.004898,"10.1":0.029388,"11.1":0.063674,"12.1":0.127348},G:{"8":0.00056966569970991,"3.2":0.00056966569970991,"4.0-4.1":0.0011393313994198,"4.2-4.3":0,"5.0-5.1":0.0034179941982595,"6.0-6.1":0.0017089970991297,"7.0-7.1":0.0045573255976793,"8.1-8.4":0.0085449854956487,"9.0-9.2":0.0074056540962289,"9.3":0.070638546764029,"10.0-10.2":0.022216962288687,"10.3":0.078044200860258,"11.0-11.2":0.06266322696809,"11.3-11.4":0.10652748584575,"12.0-12.1":0.1435557563269,"12.2-12.4":0.85791654376313,"13.0-13.1":0.3964873269981,"13.2":0.166912050015,"13.3":3.7620722808843},I:{"3":0.00034288932806324,"4":0.0034288932806324,_:"76","2.1":0,"2.2":0.0010286679841897,"2.3":0.00034288932806324,"4.1":0.0058291185770751,"4.2-4.3":0.15155708300395,"4.4":0,"4.4.3-4.4.4":0.097723458498024},B:{"12":0.014694,"13":0.019592,"14":0.029388,"15":0.019592,"16":0.02449,"17":0.215512,"18":0.577964,_:"79"},A:{"6":0.04929,"7":0.14787,"8":1.306185,"9":0.014787,"10":0.330243,"11":3.603099,_:"5.5"},P:{"4":1.5683340394338,"5.0-5.4":0.27319367138524,"6.2-6.4":0.18212911425683,"7.2-7.4":0.64757018402427,"8.2":0.37437651263903,"9.2":1.8617642790698,"10.1":5.0186689261881},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.030618},J:{"7":0,"10":0.015309},R:{_:"0"},M:{"0":0.826686},O:{"0":0.142884},Q:{_:"1.2"},S:{_:"2.5"},H:{"0":0.73434098969072},L:{"0":33.554004}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/IS.js b/assets/node_modules/caniuse-lite/data/regions/IS.js
deleted file mode 100644
index 219ed38..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/IS.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0.006299,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.018897,"35":0,"36":0,"37":0,"38":0.006299,"39":0,"40":0.025196,"41":0.006299,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.119681,"50":0,"51":0,"52":0.006299,"53":0.012598,"54":0.006299,"55":0,"56":0,"57":0.006299,"58":0.025196,"59":0.384239,"60":0.006299,"61":0.018897,"62":0,"63":0.006299,"64":0,"65":0.031495,"66":0.012598,"67":0.044093,"68":0.012598,"69":0.012598,"70":0.069289,"71":0.031495,"72":0.025196,"73":0.207867,"74":0.018897,"75":0.056691,"76":0.094485,"77":0.132279,"78":1.089727,"79":21.126846,"80":0.037794,"81":0.037794,"82":0},C:{"2":0,"3":0.006299,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.031495,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.006299,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.006299,"46":0,"47":0,"48":0.012598,"49":0,"50":0.384239,"51":0,"52":0.031495,"53":0,"54":0,"55":0,"56":0.012598,"57":0,"58":1.429873,"59":0,"60":0.025196,"61":0,"62":0.006299,"63":0.510219,"64":0.006299,"65":0.006299,"66":0.006299,"67":0.012598,"68":0.233063,"69":0.031495,"70":0.031495,"71":0.743282,"72":1.549554,"73":0.018897,"74":0,"3.5":0,"3.6":0.012598},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.151176,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.012598,"60":0,"62":0,"63":0,"64":0.050392,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.006299,"9":0,"10":0.012598,"11":0.025196,"12":0.163774,"13":3.917978,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.157475,"10.1":0.12598,"11.1":0.277156,"12.1":0.485023},G:{"8":0.002824133740122,"3.2":0.002824133740122,"4.0-4.1":0.0056482674802441,"4.2-4.3":0,"5.0-5.1":0.016944802440732,"6.0-6.1":0.0084724012203661,"7.0-7.1":0.022593069920976,"8.1-8.4":0.042362006101831,"9.0-9.2":0.036713738621586,"9.3":0.35019258377513,"10.0-10.2":0.11014121586476,"10.3":0.38690632239672,"11.0-11.2":0.31065471141342,"11.3-11.4":0.52811300940282,"12.0-12.1":0.71168170251075,"12.2-12.4":4.2531454126238,"13.0-13.1":1.9655970831249,"13.2":0.82747118585576,"13.3":18.650579219766},I:{"3":0.00021277338603426,"4":0.0021277338603426,_:"76","2.1":0,"2.2":0.00063832015810277,"2.3":0.00021277338603426,"4.1":0.0036171475625823,"4.2-4.3":0.094045836627141,"4.4":0,"4.4.3-4.4.4":0.060640415019763},B:{"12":0,"13":0.006299,"14":0.012598,"15":0.006299,"16":0.006299,"17":0.075588,"18":1.984185,_:"79"},A:{"6":0,"7":0,"8":0.05191903030303,"9":0.0064898787878788,"10":0,"11":0.79825509090909,"5.5":0},P:{"4":0.031463461126005,"5.0-5.4":0,"6.2-6.4":0.010487820375335,"7.2-7.4":0.031463461126005,"8.2":0.010487820375335,"9.2":0.15731730563003,"10.1":3.4609807238606},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.273874},O:{"0":0.029608},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.07007735395189},L:{"0":26.591724}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/IT.js b/assets/node_modules/caniuse-lite/data/regions/IT.js
deleted file mode 100644
index 0a6403d..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/IT.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.006008,"35":0,"36":0.006008,"37":0.006008,"38":0.012016,"39":0,"40":0.006008,"41":0,"42":0,"43":0,"44":0,"45":0.006008,"46":0.006008,"47":0.006008,"48":0.006008,"49":0.684912,"50":0.012016,"51":0.006008,"52":0,"53":0.024032,"54":0.006008,"55":0.018024,"56":0.006008,"57":0.006008,"58":0.012016,"59":0.006008,"60":0.006008,"61":0.03004,"62":0.012016,"63":0.06008,"64":0.012016,"65":0.036048,"66":0.054072,"67":0.06008,"68":0.03004,"69":0.036048,"70":0.072096,"71":0.072096,"72":0.06008,"73":0.066088,"74":0.06008,"75":0.096128,"76":0.078104,"77":0.126168,"78":0.366488,"79":19.273664,"80":0.024032,"81":0.018024,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.024032,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.006008,"39":0,"40":0,"41":0,"42":0,"43":0.006008,"44":0,"45":0.012016,"46":0,"47":0.006008,"48":0.078104,"49":0.006008,"50":0.006008,"51":0.006008,"52":0.114152,"53":0.006008,"54":0.006008,"55":0.006008,"56":0.042056,"57":0.006008,"58":0.006008,"59":0.012016,"60":0.024032,"61":0.006008,"62":0.006008,"63":0.012016,"64":0.018024,"65":0.012016,"66":0.03004,"67":0.018024,"68":0.192256,"69":0.042056,"70":0.048064,"71":0.883176,"72":2.409208,"73":0.018024,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.012016,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.006008,"46":0.006008,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.006008,"60":0,"62":0,"63":0,"64":0.018024,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0.006008,"6":0,"7":0.006008,"8":0.024032,"9":0.006008,"10":0.018024,"11":0.048064,"12":0.1502,"13":3.03404,_:"0","3.1":0,"3.2":0,"5.1":0.042056,"6.1":0.006008,"7.1":0,"9.1":0.036048,"10.1":0.126168,"11.1":0.276368,"12.1":0.564752},G:{"8":0.0016220634190257,"3.2":0.0016220634190257,"4.0-4.1":0.0032441268380514,"4.2-4.3":0,"5.0-5.1":0.0097323805141542,"6.0-6.1":0.0048661902570771,"7.0-7.1":0.012976507352206,"8.1-8.4":0.024330951285386,"9.0-9.2":0.021086824447334,"9.3":0.20113586395919,"10.0-10.2":0.063260473342003,"10.3":0.22222268840652,"11.0-11.2":0.17842697609283,"11.3-11.4":0.30332585935781,"12.0-12.1":0.40875998159448,"12.2-12.4":2.4428275090527,"13.0-13.1":1.1289561396419,"13.2":0.47526458177453,"13.3":10.712106819246},I:{"3":0.00032412121212121,"4":0.0032412121212121,_:"76","2.1":0,"2.2":0.00097236363636364,"2.3":0.00032412121212121,"4.1":0.0055100606060606,"4.2-4.3":0.14326157575758,"4.4":0,"4.4.3-4.4.4":0.092374545454545},B:{"12":0.006008,"13":0.006008,"14":0.012016,"15":0.018024,"16":0.024032,"17":0.09012,"18":1.32176,_:"79"},A:{"6":0,"7":0,"8":0.048366289308176,"9":0.012091572327044,"10":0.024183144654088,"11":2.7991989937107,"5.5":0},P:{"4":0.12494705732484,"5.0-5.4":0.02082450955414,"6.2-6.4":0.02082450955414,"7.2-7.4":0.06247352866242,"8.2":0.04164901910828,"9.2":0.23948185987261,"10.1":2.6655372229299},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.05988},J:{"7":0,"10":0.003992},R:{_:"0"},M:{"0":0.203592},O:{"0":0.1996},Q:{"1.2":0.043912},S:{"2.5":0},H:{"0":0.14361597250859},L:{"0":42.104408}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/JE.js b/assets/node_modules/caniuse-lite/data/regions/JE.js
deleted file mode 100644
index db6b3f7..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/JE.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.005007,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0.010014,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.415581,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.005007,"56":0,"57":0,"58":0.005007,"59":0,"60":0,"61":0,"62":0,"63":0.005007,"64":0,"65":0.110154,"66":0.005007,"67":0.095133,"68":0.005007,"69":0,"70":0.005007,"71":0.005007,"72":0.020028,"73":0.140196,"74":0,"75":0.210294,"76":0.015021,"77":0.140196,"78":0.35049,"79":10.254336,"80":0.020028,"81":0.005007,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.025035,"22":0.005007,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.015021,"46":0,"47":0,"48":0.010014,"49":0,"50":0,"51":0,"52":0.020028,"53":0,"54":0.005007,"55":0,"56":0,"57":0,"58":0.005007,"59":0,"60":0.020028,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0.120168,"69":0.015021,"70":0.035049,"71":0.290406,"72":0.726015,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005007,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.005007,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0.005007,"6":0,"7":0,"8":0.020028,"9":0,"10":0.015021,"11":0.020028,"12":0.110154,"13":4.130775,_:"0","3.1":0,"3.2":0,"5.1":0.025035,"6.1":0,"7.1":0,"9.1":0.065091,"10.1":0.085119,"11.1":0.210294,"12.1":0.921288},G:{"8":0.0049717261178354,"3.2":0.0049717261178354,"4.0-4.1":0.0099434522356707,"4.2-4.3":0,"5.0-5.1":0.029830356707012,"6.0-6.1":0.014915178353506,"7.0-7.1":0.039773808942683,"8.1-8.4":0.07457589176753,"9.0-9.2":0.06463243953186,"9.3":0.61649403861158,"10.0-10.2":0.19389731859558,"10.3":0.68112647814344,"11.0-11.2":0.54688987296189,"11.3-11.4":0.92971278403521,"12.0-12.1":1.2528749816945,"12.2-12.4":7.48741953346,"13.0-13.1":3.4603213780134,"13.2":1.4567157525258,"13.3":32.833279282185},I:{"3":0.00045514492753623,"4":0.0045514492753623,_:"76","2.1":0,"2.2":0.0013654347826087,"2.3":0.00045514492753623,"4.1":0.0077374637681159,"4.2-4.3":0.20117405797101,"4.4":0,"4.4.3-4.4.4":0.12971630434783},B:{"12":0,"13":0.005007,"14":0.015021,"15":0.040056,"16":0.030042,"17":0.095133,"18":1.627275,_:"79"},A:{"6":0,"7":0,"8":0.025281044226044,"9":0.0050562088452088,"10":0.020224835380835,"11":2.0073149115479,"5.5":0},P:{"4":0.18583280266667,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0.021862682666667,"8.2":0,"9.2":0.098382072,"10.1":3.5964112986667},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.04993},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.229678},O:{"0":0.054923},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.056724597938144},L:{"0":20.328436}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/JM.js b/assets/node_modules/caniuse-lite/data/regions/JM.js
deleted file mode 100644
index 5290c47..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/JM.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.004335,"32":0,"33":0.00867,"34":0,"35":0,"36":0.004335,"37":0,"38":0.004335,"39":0,"40":0,"41":0.004335,"42":0.004335,"43":0.004335,"44":0,"45":0,"46":0.004335,"47":0,"48":0,"49":0.14739,"50":0.004335,"51":0.004335,"52":0.004335,"53":0.004335,"54":0,"55":0.004335,"56":0.004335,"57":0.004335,"58":0.00867,"59":0.004335,"60":0.00867,"61":0.004335,"62":0.004335,"63":0.02601,"64":0.004335,"65":0.021675,"66":0.013005,"67":0.01734,"68":0.004335,"69":0.108375,"70":0.013005,"71":0.06936,"72":0.02601,"73":0.021675,"74":0.065025,"75":0.039015,"76":0.06069,"77":0.07803,"78":0.2601,"79":10.876515,"80":0.03468,"81":0.04335,"82":0},C:{"2":0,"3":0.004335,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.00867,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.04335,"48":0.013005,"49":0,"50":0,"51":0.004335,"52":0.013005,"53":0.004335,"54":0,"55":0,"56":0.004335,"57":0.01734,"58":0,"59":0.004335,"60":0,"61":0.00867,"62":0,"63":0,"64":0,"65":0,"66":0.004335,"67":0.030345,"68":0.099705,"69":0.01734,"70":0.00867,"71":0.2601,"72":0.52887,"73":0.01734,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0.004335,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.004335,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.004335,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.013005,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.013005,"12":0.04335,"13":1.32651,_:"0","3.1":0,"3.2":0,"5.1":0.12138,"6.1":0,"7.1":0,"9.1":0.004335,"10.1":0.03468,"11.1":0.065025,"12.1":0.1734},G:{"8":0.0016516860058017,"3.2":0.0016516860058017,"4.0-4.1":0.0033033720116035,"4.2-4.3":0,"5.0-5.1":0.0099101160348104,"6.0-6.1":0.0049550580174052,"7.0-7.1":0.013213488046414,"8.1-8.4":0.024775290087026,"9.0-9.2":0.021471918075423,"9.3":0.20480906471942,"10.0-10.2":0.064415754226268,"10.3":0.22628098279484,"11.0-11.2":0.18168546063819,"11.3-11.4":0.30886528308493,"12.0-12.1":0.41622487346204,"12.2-12.4":2.4874391247374,"13.0-13.1":1.149573460038,"13.2":0.48394399969991,"13.3":10.907734382315},I:{"3":0.0011456653491436,"4":0.011456653491436,_:"76","2.1":0,"2.2":0.0034369960474308,"2.3":0.0011456653491436,"4.1":0.019476310935441,"4.2-4.3":0.50638408432148,"4.4":0,"4.4.3-4.4.4":0.32651462450593},B:{"12":0.00867,"13":0.01734,"14":0.01734,"15":0.030345,"16":0.06069,"17":0.108375,"18":0.932025,_:"79"},A:{"6":0,"7":0,"8":0.037157142857143,"9":0.0046446428571429,"10":0.0092892857142857,"11":0.20900892857143,"5.5":0},P:{"4":0.17702015665796,"5.0-5.4":0.031238851174935,"6.2-6.4":0.031238851174935,"7.2-7.4":0.14578130548303,"8.2":0.02082590078329,"9.2":0.17702015665796,"10.1":3.2280146214099},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.04532},J:{"7":0,"10":0.016995},R:{_:"0"},M:{"0":0.2266},O:{"0":0.60049},Q:{"1.2":0.02266},S:{"2.5":0},H:{"0":0.31106884879725},L:{"0":58.311455}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/JO.js b/assets/node_modules/caniuse-lite/data/regions/JO.js
deleted file mode 100644
index 550319d..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/JO.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.003633,"34":0,"35":0,"36":0.003633,"37":0,"38":0.003633,"39":0,"40":0.003633,"41":0,"42":0,"43":0.007266,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.159852,"50":0,"51":0,"52":0,"53":0.003633,"54":0,"55":0.003633,"56":0.003633,"57":0,"58":0.014532,"59":0,"60":0.003633,"61":0,"62":0.003633,"63":0.018165,"64":0,"65":0.014532,"66":0.018165,"67":0.03633,"68":0.003633,"69":0.029064,"70":0.03633,"71":0.021798,"72":0.025431,"73":0.025431,"74":0.029064,"75":0.043596,"76":0.058128,"77":0.061761,"78":0.134421,"79":8.991675,"80":0.018165,"81":0.007266,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0.003633,"45":0,"46":0,"47":0,"48":0.003633,"49":0,"50":0,"51":0,"52":0.007266,"53":0,"54":0,"55":0,"56":0.003633,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0.021798,"64":0,"65":0.007266,"66":0,"67":0.003633,"68":0.039963,"69":0.003633,"70":0.010899,"71":0.21798,"72":0.486822,"73":0.007266,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.003633,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.032697,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.007266,"9":0.014532,"10":0.003633,"11":0.007266,"12":0.061761,"13":0.475923,_:"0","3.1":0,"3.2":0,"5.1":0.79926,"6.1":0,"7.1":0,"9.1":0.007266,"10.1":0.050862,"11.1":0.07266,"12.1":0.141687},G:{"8":0.0012155840752226,"3.2":0.0012155840752226,"4.0-4.1":0.0024311681504451,"4.2-4.3":0,"5.0-5.1":0.0072935044513354,"6.0-6.1":0.0036467522256677,"7.0-7.1":0.0097246726017805,"8.1-8.4":0.018233761128339,"9.0-9.2":0.015802592977893,"9.3":0.1507324253276,"10.0-10.2":0.04740777893368,"10.3":0.16653501830549,"11.0-11.2":0.13371424827448,"11.3-11.4":0.22731422206662,"12.0-12.1":0.30632718695609,"12.2-12.4":1.8306696172852,"13.0-13.1":0.84604651635491,"13.2":0.35616613404021,"13.3":8.0277172327698},I:{"3":0.00015810276679842,"4":0.0015810276679842,_:"76","2.1":0,"2.2":0.00047430830039526,"2.3":0.00015810276679842,"4.1":0.0026877470355731,"4.2-4.3":0.069881422924901,"4.4":0,"4.4.3-4.4.4":0.045059288537549},B:{"12":0.003633,"13":0.003633,"14":0.003633,"15":0.007266,"16":0.007266,"17":0.050862,"18":0.334236,_:"79"},A:{"6":0,"7":0,"8":0.01511328,"9":0.00377832,"10":0.00377832,"11":0.07178808,"5.5":0},P:{"4":0.24330594174757,"5.0-5.4":0.020275495145631,"6.2-6.4":0.030413242718447,"7.2-7.4":0.14192846601942,"8.2":0.070964233009709,"9.2":0.41564765048544,"10.1":2.1086514951456},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.019101},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.108239},O:{"0":0.413855},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.23508670618557},L:{"0":69.236431}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/JP.js b/assets/node_modules/caniuse-lite/data/regions/JP.js
deleted file mode 100644
index d8fda37..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/JP.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.012388,"36":0,"37":0,"38":0,"39":0,"40":0.012388,"41":0,"42":0,"43":0.006194,"44":0,"45":0,"46":0.006194,"47":0,"48":0.006194,"49":0.613206,"50":0.006194,"51":0,"52":0.006194,"53":0.006194,"54":0.006194,"55":0.018582,"56":0.012388,"57":0.018582,"58":0.012388,"59":0.012388,"60":0.018582,"61":0.012388,"62":0.024776,"63":0.210596,"64":0.012388,"65":0.049552,"66":0.012388,"67":0.080522,"68":0.037164,"69":0.105298,"70":0.049552,"71":0.055746,"72":0.055746,"73":0.068134,"74":0.068134,"75":0.111492,"76":0.12388,"77":0.130074,"78":0.445968,"79":15.899998,"80":0.024776,"81":0.03097,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.03097,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.006194,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.006194,"46":0,"47":0.006194,"48":0.068134,"49":0,"50":0.012388,"51":0.006194,"52":0.068134,"53":0.006194,"54":0,"55":0.006194,"56":0.055746,"57":0.012388,"58":0.043358,"59":0.012388,"60":0.024776,"61":0.006194,"62":0.006194,"63":0.006194,"64":0.006194,"65":0.018582,"66":0.024776,"67":0.012388,"68":0.167238,"69":0.037164,"70":0.037164,"71":0.724698,"72":1.852006,"73":0.018582,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.006194,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.006194,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.006194,"57":0,"58":0,"60":0,"62":0.006194,"63":0,"64":0.006194,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.006194},E:{"4":0,"5":0.006194,"6":0,"7":0,"8":0.006194,"9":0.006194,"10":0.018582,"11":0.055746,"12":0.136268,"13":2.551928,_:"0","3.1":0,"3.2":0,"5.1":0.012388,"6.1":0.006194,"7.1":0,"9.1":0.06194,"10.1":0.130074,"11.1":0.253954,"12.1":0.538878},G:{"8":0.0040271741522457,"3.2":0.0040271741522457,"4.0-4.1":0.0080543483044913,"4.2-4.3":0,"5.0-5.1":0.024163044913474,"6.0-6.1":0.012081522456737,"7.0-7.1":0.032217393217965,"8.1-8.4":0.060407612283685,"9.0-9.2":0.052353263979194,"9.3":0.49936959487846,"10.0-10.2":0.15705979193758,"10.3":0.55172285885766,"11.0-11.2":0.44298915674702,"11.3-11.4":0.75308156646994,"12.0-12.1":1.0148478863659,"12.2-12.4":6.064924273282,"13.0-13.1":2.802913209963,"13.2":1.179962026608,"13.3":26.59545810143},I:{"3":0.00079926482213439,"4":0.0079926482213439,_:"76","2.1":0,"2.2":0.0023977944664032,"2.3":0.00079926482213439,"4.1":0.013587501976285,"4.2-4.3":0.3532750513834,"4.4":0,"4.4.3-4.4.4":0.2277904743083},B:{"12":0,"13":0.006194,"14":0.012388,"15":0.006194,"16":0.03097,"17":0.130074,"18":3.332372,_:"79"},A:{"6":0,"7":0.0062693324324324,"8":0.037615994594595,"9":0.018807997297297,"10":0.02507732972973,"11":4.5515353459459,"5.5":0},P:{"4":0.021190162162162,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0.021190162162162,"8.2":0.010595081081081,"9.2":0.10595081081081,"10.1":0.98534254054054},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.17127},O:{"0":0.293062},Q:{"1.2":0.091344},S:{"2.5":0},H:{"0":0.11170152233677},L:{"0":21.611092}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/KE.js b/assets/node_modules/caniuse-lite/data/regions/KE.js
deleted file mode 100644
index db888e4..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/KE.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.003413,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0.003413,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.006826,"37":0,"38":0.003413,"39":0.003413,"40":0.003413,"41":0,"42":0,"43":0.003413,"44":0,"45":0,"46":0.003413,"47":0.003413,"48":0,"49":0.071673,"50":0.006826,"51":0.003413,"52":0.003413,"53":0.003413,"54":0.003413,"55":0.003413,"56":0.003413,"57":0.003413,"58":0.006826,"59":0.003413,"60":0.006826,"61":0.006826,"62":0.006826,"63":0.030717,"64":0.003413,"65":0.010239,"66":0.006826,"67":0.013652,"68":0.010239,"69":0.051195,"70":0.013652,"71":0.023891,"72":0.017065,"73":0.020478,"74":0.061434,"75":0.030717,"76":0.040956,"77":0.058021,"78":0.197954,"79":5.849882,"80":0.027304,"81":0.006826,"82":0},C:{"2":0,"3":0,"4":0.003413,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.003413,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.003413,"31":0,"32":0.003413,"33":0.003413,"34":0.003413,"35":0,"36":0,"37":0,"38":0.003413,"39":0.003413,"40":0.003413,"41":0,"42":0.003413,"43":0.006826,"44":0.003413,"45":0.003413,"46":0.003413,"47":0.013652,"48":0.013652,"49":0.003413,"50":0.003413,"51":0.003413,"52":0.040956,"53":0.003413,"54":0.003413,"55":0.003413,"56":0.006826,"57":0.003413,"58":0.003413,"59":0.003413,"60":0.013652,"61":0.003413,"62":0.006826,"63":0.003413,"64":0.003413,"65":0.006826,"66":0.013652,"67":0.010239,"68":0.092151,"69":0.017065,"70":0.030717,"71":0.358365,"72":1.017074,"73":0.10239,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0.003413,"15":0.010239,"16":0.017065,"17":0,"18":0.003413,"19":0.006826,"20":0.023891,"21":0,"22":0,"23":0.03413,"24":0.003413,"25":0,"26":0.003413,"27":0.003413,"28":0.006826,"29":0.003413,"30":0.003413,"31":0,"32":0.003413,"33":0.006826,"34":0,"35":0.003413,"36":0.003413,"37":0.010239,"38":0.003413,"39":0,"40":0,"41":0,"42":0.003413,"43":0,"44":0,"45":0.017065,"46":0.075086,"47":0,"48":0.003413,"49":0,"50":0,"51":0,"52":0,"53":0.020478,"54":0.020478,"55":0.010239,"56":0.017065,"57":0,"58":0.003413,"60":0.003413,"62":0,"63":0.003413,"64":0.017065,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.150172},E:{"4":0,"5":0,"6":0,"7":0,"8":0.003413,"9":0,"10":0,"11":0.006826,"12":0.023891,"13":0.351539,_:"0","3.1":0,"3.2":0,"5.1":0.27304,"6.1":0,"7.1":0,"9.1":0.003413,"10.1":0.023891,"11.1":0.040956,"12.1":0.088738},G:{"8":0.00030014454336301,"3.2":0.00030014454336301,"4.0-4.1":0.00060028908672602,"4.2-4.3":0,"5.0-5.1":0.0018008672601781,"6.0-6.1":0.00090043363008903,"7.0-7.1":0.0024011563469041,"8.1-8.4":0.0045021681504451,"9.0-9.2":0.0039018790637191,"9.3":0.037217923377013,"10.0-10.2":0.011705637191157,"10.3":0.041119802440732,"11.0-11.2":0.033015899769931,"11.3-11.4":0.056127029608883,"12.0-12.1":0.075636424927478,"12.2-12.4":0.45201768230469,"13.0-13.1":0.20890060218065,"13.2":0.087942351205362,"13.3":1.9821545643693},I:{"3":0.00048330171277997,"4":0.0048330171277997,_:"76","2.1":0,"2.2":0.0014499051383399,"2.3":0.00048330171277997,"4.1":0.0082161291172596,"4.2-4.3":0.21361935704875,"4.4":0,"4.4.3-4.4.4":0.13774098814229},B:{"12":0.013652,"13":0.010239,"14":0.013652,"15":0.010239,"16":0.010239,"17":0.044369,"18":0.300344,_:"79"},A:{"6":0.0037055428571429,"7":0.0037055428571429,"8":0.014822171428571,"9":0.0074110857142857,"10":0.0074110857142857,"11":0.092638571428571,"5.5":0},P:{"4":0.28087876551724,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0.041611668965517,"8.2":0.020805834482759,"9.2":0.12483500689655,"10.1":0.99868005517241},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.05646,"11":0.180672},J:{"7":0,"10":0.046109},R:{_:"0"},M:{"0":0.210784},O:{"0":0.961702},Q:{"1.2":0.013174},S:{"2.5":0},H:{"0":25.20650232646},L:{"0":46.23115}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/KG.js b/assets/node_modules/caniuse-lite/data/regions/KG.js
deleted file mode 100644
index 8bdb642..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/KG.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.007165,"36":0,"37":0,"38":0.007165,"39":0,"40":0.007165,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.250775,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.01433,"56":0.150465,"57":0.007165,"58":0.007165,"59":0.04299,"60":0.021495,"61":0.02866,"62":0.007165,"63":0.064485,"64":0,"65":0.05732,"66":0.035825,"67":0.07165,"68":0.050155,"69":0.021495,"70":0.10031,"71":0.04299,"72":0.164795,"73":0.035825,"74":0.22928,"75":0.179125,"76":0.293765,"77":0.18629,"78":0.48722,"79":39.00626,"80":0.01433,"81":0.021495,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.01433,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0.007165,"51":0,"52":0.04299,"53":0,"54":0,"55":0,"56":0.007165,"57":0.007165,"58":0,"59":0,"60":0.007165,"61":0.007165,"62":0,"63":0,"64":0.007165,"65":0.07165,"66":0.007165,"67":0.04299,"68":0.050155,"69":0.007165,"70":0.02866,"71":0.22928,"72":0.952945,"73":0.02866,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.01433,"37":0.007165,"38":0.021495,"39":0,"40":0,"41":0,"42":0.01433,"43":0,"44":0,"45":0,"46":0.007165,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.007165,"60":0,"62":0.007165,"63":0,"64":0.31526,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.02866},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.007165,"11":0.050155,"12":0.035825,"13":1.053255,_:"0","3.1":0,"3.2":0,"5.1":0.050155,"6.1":0,"7.1":0,"9.1":0,"10.1":0.007165,"11.1":0.021495,"12.1":0.08598},G:{"8":0.00051386215864759,"3.2":0.00051386215864759,"4.0-4.1":0.0010277243172952,"4.2-4.3":0,"5.0-5.1":0.0030831729518856,"6.0-6.1":0.0015415864759428,"7.0-7.1":0.0041108972691808,"8.1-8.4":0.0077079323797139,"9.0-9.2":0.0066802080624187,"9.3":0.063718907672302,"10.0-10.2":0.020040624187256,"10.3":0.07039911573472,"11.0-11.2":0.056524837451235,"11.3-11.4":0.0960922236671,"12.0-12.1":0.12949326397919,"12.2-12.4":0.77387641092328,"13.0-13.1":0.35764806241873,"13.2":0.15056161248375,"13.3":3.3935456957087},I:{"3":0.00018601449275362,"4":0.0018601449275362,_:"76","2.1":0,"2.2":0.00055804347826087,"2.3":0.00018601449275362,"4.1":0.0031622463768116,"4.2-4.3":0.082218405797101,"4.4":0,"4.4.3-4.4.4":0.053014130434783},B:{"12":0,"13":0.007165,"14":0.007165,"15":0.007165,"16":0.007165,"17":0.021495,"18":0.51588,_:"79"},A:{"6":0,"7":0,"8":0.007165,"9":0,"10":0,"11":0.236445,"5.5":0},P:{"4":0.6302772,"5.0-5.4":0.050022,"6.2-6.4":0.0900396,"7.2-7.4":0.1900836,"8.2":0.050022,"9.2":0.2301012,"10.1":0.9904356},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.01134},J:{"7":0,"10":0.002835},R:{_:"0"},M:{"0":0.03402},O:{"0":1.165185},Q:{"1.2":0.008505},S:{"2.5":0},H:{"0":0.44017515463918},L:{"0":36.57931}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/KH.js b/assets/node_modules/caniuse-lite/data/regions/KH.js
deleted file mode 100644
index 979cd5f..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/KH.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.007097,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.035485,"34":0,"35":0,"36":0.014194,"37":0,"38":0.007097,"39":0,"40":0.035485,"41":0.007097,"42":0,"43":0.028388,"44":0,"45":0.007097,"46":0.007097,"47":0.007097,"48":0.021291,"49":0.156134,"50":0.014194,"51":0.035485,"52":0.007097,"53":0.021291,"54":0.021291,"55":0.014194,"56":0.014194,"57":0.007097,"58":0.028388,"59":0.007097,"60":0.021291,"61":0.014194,"62":0.042582,"63":0.149037,"64":0.014194,"65":0.021291,"66":0.014194,"67":0.063873,"68":0.014194,"69":0.276783,"70":0.227104,"71":0.397432,"72":0.49679,"73":0.269686,"74":0.269686,"75":0.156134,"76":0.163231,"77":0.191619,"78":0.418723,"79":32.816528,"80":0.149037,"81":0.170328,"82":0},C:{"2":0,"3":0,"4":0.007097,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.007097,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.007097,"36":0,"37":0,"38":0.007097,"39":0,"40":0.007097,"41":0.007097,"42":0.007097,"43":0.007097,"44":0.007097,"45":0.007097,"46":0,"47":0.014194,"48":0.042582,"49":0.028388,"50":0.007097,"51":0.014194,"52":0.028388,"53":0.007097,"54":0.014194,"55":0.028388,"56":0.028388,"57":0.021291,"58":0.014194,"59":0.021291,"60":0.021291,"61":0.014194,"62":0.014194,"63":0.063873,"64":0.106455,"65":0.049679,"66":0.078067,"67":0.191619,"68":0.113552,"69":0.092261,"70":0.163231,"71":1.618116,"72":4.023999,"73":0.21291,"74":0,"3.5":0,"3.6":0.007097},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.007097,"37":0.035485,"38":0,"39":0,"40":0,"41":0,"42":0.007097,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.049679,"57":0.007097,"58":0.028388,"60":0,"62":0,"63":0,"64":0.078067,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.007097,"10":0.007097,"11":0.056776,"12":0.177425,"13":1.611019,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.014194,"10.1":0.056776,"11.1":0.127746,"12.1":0.610342},G:{"8":0.0018803811143343,"3.2":0.0018803811143343,"4.0-4.1":0.0037607622286686,"4.2-4.3":0,"5.0-5.1":0.011282286686006,"6.0-6.1":0.0056411433430029,"7.0-7.1":0.015043048914674,"8.1-8.4":0.028205716715015,"9.0-9.2":0.024444954486346,"9.3":0.23316725817745,"10.0-10.2":0.073334863459038,"10.3":0.2576122126638,"11.0-11.2":0.20684192257677,"11.3-11.4":0.35163126838051,"12.0-12.1":0.47385604081224,"12.2-12.4":2.8318539581875,"13.0-13.1":1.3087452555767,"13.2":0.55095166649995,"13.3":12.418036879064},I:{"3":0.00037654677206851,"4":0.0037654677206851,_:"76","2.1":0,"2.2":0.0011296403162055,"2.3":0.00037654677206851,"4.1":0.0064012951251647,"4.2-4.3":0.16643367325428,"4.4":0,"4.4.3-4.4.4":0.10731583003953},B:{"12":0.007097,"13":0.014194,"14":0.007097,"15":0.035485,"16":0.014194,"17":0.170328,"18":0.85164,_:"79"},A:{"6":0.0074912777777778,"7":0.0074912777777778,"8":0.029965111111111,"9":0.022473833333333,"10":0.0074912777777778,"11":0.19477322222222,"5.5":0},P:{"4":0.23629288961039,"5.0-5.4":0.030820811688312,"6.2-6.4":0.020547207792208,"7.2-7.4":0.071915227272727,"8.2":0.030820811688312,"9.2":0.13355685064935,"10.1":1.0068131818182},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.0130635,"11":0.0130635},J:{"7":0,"10":0.014515},R:{_:"0"},M:{"0":0.107411},O:{"0":0.63866},Q:{"1.2":0.089993},S:{"2.5":0},H:{"0":0.64586762027491},L:{"0":25.958183}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/KI.js b/assets/node_modules/caniuse-lite/data/regions/KI.js
deleted file mode 100644
index ab2cb0b..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/KI.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.00311,"41":0,"42":0.00622,"43":0,"44":0.00622,"45":0,"46":0,"47":0,"48":0,"49":0.00311,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.01555,"56":0,"57":0.00311,"58":0.02799,"59":0,"60":0,"61":0,"62":0,"63":0.02177,"64":0,"65":0.03421,"66":0,"67":0.19904,"68":0.00933,"69":0.04043,"70":0,"71":0.02177,"72":0,"73":0.04665,"74":0.00622,"75":0.00311,"76":0.0622,"77":0.21148,"78":0.08708,"79":3.22507,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.00311,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.07464,"34":0,"35":0,"36":0,"37":0.00622,"38":0.00622,"39":0,"40":0,"41":0,"42":0,"43":0.00622,"44":0,"45":0.00311,"46":0,"47":0.00622,"48":0,"49":0,"50":0,"51":0,"52":0.00933,"53":0,"54":0,"55":0,"56":0.0933,"57":0.01244,"58":0,"59":0,"60":0.07153,"61":0.00622,"62":0.00311,"63":0.08397,"64":0.00622,"65":0.00622,"66":0.00622,"67":0,"68":0.01866,"69":0.03421,"70":0.04665,"71":0.09641,"72":0.61889,"73":0.02488,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.04665,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0.01555,"43":0,"44":0,"45":0,"46":0.01866,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.00622,"12":0.00311,"13":1.45859,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0.00311,"11.1":0.01244,"12.1":0.04354},G:{"8":0.00073223467040112,"3.2":0.00073223467040112,"4.0-4.1":0.0014644693408022,"4.2-4.3":0,"5.0-5.1":0.0043934080224067,"6.0-6.1":0.0021967040112034,"7.0-7.1":0.005857877363209,"8.1-8.4":0.010983520056017,"9.0-9.2":0.0095190507152146,"9.3":0.090797099129739,"10.0-10.2":0.028557152145644,"10.3":0.10031614984495,"11.0-11.2":0.080545813744123,"11.3-11.4":0.13692788336501,"12.0-12.1":0.18452313694108,"12.2-12.4":1.1027454136241,"13.0-13.1":0.50963533059918,"13.2":0.21454475842753,"13.3":4.835677763329},I:{"3":0.0025179183135705,"4":0.025179183135705,_:"76","2.1":0,"2.2":0.0075537549407115,"2.3":0.0025179183135705,"4.1":0.042804611330698,"4.2-4.3":1.1129198945982,"4.4":0,"4.4.3-4.4.4":0.71760671936759},B:{"12":0.02177,"13":0.00622,"14":0.01866,"15":0.08708,"16":0.25191,"17":0.34521,"18":0.20526,_:"79"},A:{"6":0,"7":0,"8":0.00933,"9":0,"10":0,"11":0.10263,"5.5":0},P:{"4":2.3394946478873,"5.0-5.4":0.29243683098592,"6.2-6.4":0.32376934859155,"7.2-7.4":1.0548614260563,"8.2":0.020888345070423,"9.2":1.3264099119718,"10.1":0.57442948943662},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.03445},O:{"0":0.9646},Q:{"1.2":0.02756},S:{"2.5":0},H:{"0":1.3633084364261},L:{"0":71.67498}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/KM.js b/assets/node_modules/caniuse-lite/data/regions/KM.js
deleted file mode 100644
index 6f34c29..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/KM.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.010336,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.002584,"41":0,"42":0,"43":0.046512,"44":0,"45":0.007752,"46":0,"47":0,"48":0,"49":0.005168,"50":0,"51":0.002584,"52":0,"53":0,"54":0,"55":0.002584,"56":0.002584,"57":0,"58":0.010336,"59":0.005168,"60":0,"61":0.002584,"62":0.002584,"63":0.01292,"64":0,"65":0.085272,"66":0.002584,"67":0.002584,"68":0,"69":0.126616,"70":0.002584,"71":0,"72":0.01292,"73":0,"74":0.010336,"75":0.010336,"76":0.007752,"77":0.015504,"78":0.02584,"79":2.878576,"80":0.005168,"81":0,"82":0},C:{"2":0,"3":0.018088,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0.002584,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.002584,"33":0,"34":0.010336,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.007752,"41":0,"42":0,"43":0,"44":0.002584,"45":0.005168,"46":0,"47":0.002584,"48":0,"49":0,"50":0,"51":0.002584,"52":0.005168,"53":0,"54":0.002584,"55":0,"56":0.007752,"57":0,"58":0,"59":0,"60":0.002584,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0.015504,"68":0.046512,"69":0.005168,"70":0.018088,"71":0.240312,"72":0.76228,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0.007752,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.002584,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.002584,"44":0,"45":0,"46":0.410856,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0.005168,"63":0,"64":0.002584,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0.002584,"11.1":0,"11.5":0,"11.6":0,"12.1":0.031008},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.005168,"11":0.002584,"12":0.002584,"13":0.074936,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0,"11.1":0,"12.1":0.036176},G:{"8":0.00034927518255477,"3.2":0.00034927518255477,"4.0-4.1":0.00069855036510953,"4.2-4.3":0,"5.0-5.1":0.0020956510953286,"6.0-6.1":0.0010478255476643,"7.0-7.1":0.0027942014604381,"8.1-8.4":0.0052391277383215,"9.0-9.2":0.004540577373212,"9.3":0.043310122636791,"10.0-10.2":0.013621732119636,"10.3":0.047850700010003,"11.0-11.2":0.038420270081024,"11.3-11.4":0.065314459137741,"12.0-12.1":0.088017346003801,"12.2-12.4":0.52600842492748,"13.0-13.1":0.24309552705812,"13.2":0.10233762848855,"13.3":2.3066133055917},I:{"3":0.002215209486166,"4":0.02215209486166,_:"76","2.1":0,"2.2":0.006645628458498,"2.3":0.002215209486166,"4.1":0.037658561264822,"4.2-4.3":0.97912259288538,"4.4":0,"4.4.3-4.4.4":0.63133470355731},B:{"12":0.007752,"13":0.007752,"14":0.010336,"15":0.020672,"16":0.018088,"17":0.041344,"18":0.186048,_:"79"},A:{"6":0,"7":0,"8":0.056848,"9":0,"10":0.007752,"11":0.067184,"5.5":0},P:{"4":0.80849232,"5.0-5.4":0.06140448,"6.2-6.4":0.08187264,"7.2-7.4":0.27632016,"8.2":0.18421344,"9.2":0.3581928,"10.1":0.78802416},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.088992},J:{"7":0,"10":0.11124},R:{_:"0"},M:{"0":0.170568},O:{"0":2.781},Q:{"1.2":0.03708},S:{"2.5":0},H:{"0":3.7702714639175},L:{"0":77.139552}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/KN.js b/assets/node_modules/caniuse-lite/data/regions/KN.js
deleted file mode 100644
index cc990fa..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/KN.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005175,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.01035,"44":0,"45":0,"46":0,"47":0.015525,"48":0,"49":0.067275,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.0207,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0.005175,"66":0,"67":0.01035,"68":0,"69":0.01035,"70":0.01035,"71":0.01035,"72":0,"73":0.01035,"74":0.03105,"75":0.0207,"76":0.077625,"77":0.025875,"78":0.2898,"79":12.394125,"80":0.05175,"81":0.005175,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005175,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.005175,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0.1863,"69":0,"70":0.005175,"71":0.222525,"72":0.4554,"73":0.005175,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.03105,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.01035,"10":0,"11":0.005175,"12":0.036225,"13":2.90835,_:"0","3.1":0,"3.2":0,"5.1":0.01035,"6.1":0,"7.1":0,"9.1":0,"10.1":0.13455,"11.1":0.036225,"12.1":0.212175},G:{"8":0.0019418450535161,"3.2":0.0019418450535161,"4.0-4.1":0.0038836901070321,"4.2-4.3":0,"5.0-5.1":0.011651070321096,"6.0-6.1":0.0058255351605482,"7.0-7.1":0.015534760428128,"8.1-8.4":0.029127675802741,"9.0-9.2":0.025243985695709,"9.3":0.24078878663599,"10.0-10.2":0.075731957087126,"10.3":0.2660327723317,"11.0-11.2":0.21360295588677,"11.3-11.4":0.3631250250075,"12.0-12.1":0.48934495348605,"12.2-12.4":2.9244186505952,"13.0-13.1":1.3515241572472,"13.2":0.5689606006802,"13.3":12.82394473342},I:{"3":0.0014981554677207,"4":0.014981554677207,_:"76","2.1":0,"2.2":0.0044944664031621,"2.3":0.0014981554677207,"4.1":0.025468642951252,"4.2-4.3":0.66218471673254,"4.4":0,"4.4.3-4.4.4":0.4269743083004},B:{"12":0.01035,"13":0.015525,"14":0.046575,"15":0.005175,"16":0.025875,"17":0.09315,"18":2.044125,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":4.962825,"5.5":0},P:{"4":0.085326315789474,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0.053328947368421,"8.2":0.063994736842105,"9.2":0.13865526315789,"10.1":2.9650894736842},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.00965},J:{"7":0,"10":0.4246},R:{_:"0"},M:{"0":0.3667},O:{"0":0.04825},Q:{"1.2":0},S:{"2.5":0},H:{"0":1.1602715635739},L:{"0":46.254925}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/KP.js b/assets/node_modules/caniuse-lite/data/regions/KP.js
deleted file mode 100644
index faead73..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/KP.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"39":0.8786,"50":0.17572,"57":0.17572,"68":0.70288,"69":0.17572,"77":1.84888,"78":1.93674,"79":5.27924,_:"4 5 6 7 8 9 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 51 52 53 54 55 56 58 59 60 61 62 63 64 65 66 67 70 71 72 73 74 75 76 80 81 82"},C:{"58":0.70288,"70":0.4393,"71":4.40064,"72":10.47444,_:"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 59 60 61 62 63 64 65 66 67 68 69 73 74 3.5 3.6"},F:{"56":0.17572,"58":1.05432,_:"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 57 60 62 63 64 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},E:{"4":0,"13":4.9278,_:"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.4393},G:{"8":0.00027694708412524,"3.2":0.00027694708412524,"4.0-4.1":0.00055389416825048,"4.2-4.3":0,"5.0-5.1":0.0016616825047514,"6.0-6.1":0.00083084125237571,"7.0-7.1":0.0022155766730019,"8.1-8.4":0.0041542062618786,"9.0-9.2":0.0036003120936281,"9.3":0.034341438431529,"10.0-10.2":0.010800936280884,"10.3":0.037941750525158,"11.0-11.2":0.030464179253776,"11.3-11.4":0.051789104731419,"12.0-12.1":0.06979066519956,"12.2-12.4":0.41708230869261,"13.0-13.1":0.19275517055117,"13.2":0.081145495648695,"13.3":1.8289585435631},I:{"3":0,"4":0,_:"76","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},B:{"13":0.70288,"18":0.4393,_:"12 14 15 16 17 79"},A:{"11":0.17572,_:"6 7 8 9 10 5.5"},P:{"4":2.3394946478873,"5.0-5.4":0.29243683098592,"6.2-6.4":0.17865818181818,"7.2-7.4":1.0548614260563,"8.2":0.26798727272727,"9.2":0.26798727272727,"10.1":0.26798727272727},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{_:"0"},O:{"0":3.48552},Q:{"1.2":5.09232},S:{_:"2.5"},H:{"0":1.0121926804124},L:{"0":48.40176}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/KR.js b/assets/node_modules/caniuse-lite/data/regions/KR.js
deleted file mode 100644
index e6964ae..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/KR.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"23":0.010248,"31":0.394548,"36":0.005124,"40":0.015372,"42":0.030744,"48":0.005124,"49":0.251076,"53":0.005124,"55":0.005124,"56":0.010248,"58":0.005124,"59":0.184464,"61":0.015372,"62":0.010248,"63":0.071736,"65":0.020496,"66":0.015372,"67":0.046116,"68":0.020496,"69":0.056364,"70":0.143472,"71":0.17934,"72":0.148596,"73":0.112728,"74":0.05124,"75":0.07686,"76":0.081984,"77":0.1281,"78":0.276696,"79":33.239388,"80":0.02562,"81":0.02562,_:"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 32 33 34 35 37 38 39 41 43 44 45 46 47 50 51 52 54 57 60 64 82"},C:{"48":0.005124,"50":0.010248,"52":0.020496,"55":0.005124,"56":0.010248,"58":0.020496,"60":0.005124,"63":0.020496,"64":0.02562,"65":0.020496,"66":0.010248,"68":0.010248,"70":0.010248,"71":0.199836,"72":0.415044,"73":0.010248,"74":0.005124,_:"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 53 54 57 59 61 62 67 69 3.5 3.6"},F:{"56":0.005124,"57":0.015372,"58":0.030744,_:"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 60 62 63 64 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},E:{"4":0,"8":0.015372,"10":0.005124,"11":0.020496,"12":0.07686,"13":1.1529,_:"0 5 6 7 9 3.1 3.2 5.1 6.1 7.1","9.1":0.030744,"10.1":0.061488,"11.1":0.092232,"12.1":0.245952},G:{"8":0.0010193898169451,"3.2":0.0010193898169451,"4.0-4.1":0.0020387796338902,"4.2-4.3":0,"5.0-5.1":0.0061163389016705,"6.0-6.1":0.0030581694508353,"7.0-7.1":0.0081551185355607,"8.1-8.4":0.015290847254176,"9.0-9.2":0.013252067620286,"9.3":0.12640433730119,"10.0-10.2":0.039756202860858,"10.3":0.13965640492148,"11.0-11.2":0.11213287986396,"11.3-11.4":0.19062589576873,"12.0-12.1":0.25688623387016,"12.2-12.4":1.5352010643193,"13.0-13.1":0.70949531259378,"13.2":0.29868121636491,"13.3":6.7320503511053},I:{"3":0.000044969696969697,"4":0.00044969696969697,_:"76","2.1":0,"2.2":0.00013490909090909,"2.3":0.000044969696969697,"4.1":0.00076448484848485,"4.2-4.3":0.019876606060606,"4.4":0,"4.4.3-4.4.4":0.012816363636364},B:{"13":0.005124,"14":0.010248,"15":0.010248,"16":0.015372,"17":0.122976,"18":2.213568,_:"12 79"},A:{"8":0.05659312195122,"9":0.010289658536585,"10":0.066882780487805,"11":7.4600024390244,_:"6 7 5.5"},P:{"4":0.070822494233937,"5.0-5.4":0.080939993410214,"6.2-6.4":0.020234998352554,"7.2-7.4":0.091057492586491,"8.2":0.14164498846787,"9.2":0.5665799538715,"10.1":10.765019123558},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.136528},O:{"0":0.102396},Q:{"1.2":0.02438},S:{_:"2.5"},H:{"0":0.13848845360825},L:{"0":20.007476}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/KW.js b/assets/node_modules/caniuse-lite/data/regions/KW.js
deleted file mode 100644
index 6a6e099..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/KW.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.003539,"37":0,"38":0.007078,"39":0,"40":0,"41":0,"42":0,"43":0.003539,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.116787,"50":0,"51":0,"52":0,"53":0,"54":0.007078,"55":0.007078,"56":0.003539,"57":0.003539,"58":0.007078,"59":0,"60":0,"61":0.003539,"62":0.003539,"63":0.024773,"64":0.007078,"65":0.021234,"66":0.003539,"67":0.014156,"68":0.007078,"69":0.038929,"70":0.038929,"71":0.021234,"72":0.014156,"73":0.028312,"74":0.038929,"75":0.031851,"76":0.056624,"77":0.049546,"78":0.191106,"79":7.350503,"80":0.010617,"81":0.007078,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.007078,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.003539,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.003539,"46":0,"47":0.007078,"48":0.028312,"49":0.007078,"50":0.003539,"51":0,"52":0.049546,"53":0,"54":0,"55":0,"56":0.003539,"57":0.003539,"58":0,"59":0,"60":0.007078,"61":0,"62":0,"63":0,"64":0.003539,"65":0.007078,"66":0.003539,"67":0.007078,"68":0.07078,"69":0.003539,"70":0.010617,"71":0.222957,"72":0.498999,"73":0.007078,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.003539,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.003539,"46":0.031851,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.003539,"54":0,"55":0.003539,"56":0.003539,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.014156,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.031851,"9":0.007078,"10":0.014156,"11":0.031851,"12":0.10617,"13":1.001537,_:"0","3.1":0,"3.2":0,"5.1":0.077858,"6.1":0,"7.1":0,"9.1":0.017695,"10.1":0.060163,"11.1":0.130943,"12.1":0.226496},G:{"8":0.002657121836551,"3.2":0.002657121836551,"4.0-4.1":0.0053142436731019,"4.2-4.3":0,"5.0-5.1":0.015942731019306,"6.0-6.1":0.0079713655096529,"7.0-7.1":0.021256974692408,"8.1-8.4":0.039856827548264,"9.0-9.2":0.034542583875163,"9.3":0.32948310773232,"10.0-10.2":0.10362775162549,"10.3":0.36402569160748,"11.0-11.2":0.29228340202061,"11.3-11.4":0.49688178343503,"12.0-12.1":0.66959470281084,"12.2-12.4":4.0016254858458,"13.0-13.1":1.8493567982395,"13.2":0.77853669810943,"13.3":17.547632608583},I:{"3":0.00014107773386034,"4":0.0014107773386034,_:"76","2.1":0,"2.2":0.00042323320158103,"2.3":0.00014107773386034,"4.1":0.0023983214756258,"4.2-4.3":0.062356358366271,"4.4":0,"4.4.3-4.4.4":0.040207154150198},B:{"12":0.003539,"13":0.007078,"14":0.007078,"15":0.007078,"16":0.014156,"17":0.053085,"18":0.537928,_:"79"},A:{"6":0,"7":0,"8":0.096918042857143,"9":0,"10":0.0071791142857143,"11":0.39844084285714,"5.5":0},P:{"4":0.37605085159817,"5.0-5.4":0.020327073059361,"6.2-6.4":0.050817682648402,"7.2-7.4":0.16261658447489,"8.2":0.12196243835616,"9.2":0.53866743607306,"10.1":2.9067714474886},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.155064},O:{"0":5.466006},Q:{"1.2":0.012922},S:{"2.5":0},H:{"0":2.0919652268041},L:{"0":44.19051}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/KY.js b/assets/node_modules/caniuse-lite/data/regions/KY.js
deleted file mode 100644
index 7ae4e61..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/KY.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.015789,"34":0.005263,"35":0,"36":0.010526,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.031578,"50":0,"51":0.005263,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0.005263,"61":0,"62":0,"63":0,"64":0,"65":0.005263,"66":0,"67":0.015789,"68":0.010526,"69":0.005263,"70":0.05263,"71":0.068419,"72":0.031578,"73":0.05263,"74":0.015789,"75":0.047367,"76":0.05263,"77":0.078945,"78":0.47367,"79":14.852186,"80":0.010526,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.047367,"22":0.005263,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0.005263,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.010526,"53":0,"54":0,"55":0,"56":0.005263,"57":0,"58":0,"59":0,"60":0.005263,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0.005263,"68":0.063156,"69":0.010526,"70":0.005263,"71":0.457881,"72":0.942077,"73":0.036841,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.021052,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.005263,"12":0.078945,"13":3.963039,_:"0","3.1":0,"3.2":0,"5.1":0.021052,"6.1":0,"7.1":0,"9.1":0.005263,"10.1":0.063156,"11.1":0.078945,"12.1":0.794713},G:{"8":0.003368355206562,"3.2":0.003368355206562,"4.0-4.1":0.0067367104131239,"4.2-4.3":0,"5.0-5.1":0.020210131239372,"6.0-6.1":0.010105065619686,"7.0-7.1":0.026946841652496,"8.1-8.4":0.05052532809843,"9.0-9.2":0.043788617685306,"9.3":0.41767604561368,"10.0-10.2":0.13136585305592,"10.3":0.46146466329899,"11.0-11.2":0.37051907272182,"11.3-11.4":0.62988242362709,"12.0-12.1":0.84882551205362,"12.2-12.4":5.0727429410823,"13.0-13.1":2.3443752237671,"13.2":0.98692807552266,"13.3":22.244617784135},I:{"3":0.0006975744400527,"4":0.006975744400527,_:"76","2.1":0,"2.2":0.0020927233201581,"2.3":0.0006975744400527,"4.1":0.011858765480896,"4.2-4.3":0.30832790250329,"4.4":0,"4.4.3-4.4.4":0.19880871541502},B:{"12":0,"13":0.010526,"14":0.073682,"15":0.015789,"16":0.068419,"17":0.221046,"18":1.920995,_:"79"},A:{"6":0,"7":0,"8":0.010526,"9":0,"10":0,"11":1.031548,"5.5":0},P:{"4":0.021311988571429,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0.031967982857143,"8.2":0,"9.2":0.18115190285714,"10.1":5.1894692171429},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.227376},O:{"0":0.71055},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.24217302061856},L:{"0":29.634063}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/KZ.js b/assets/node_modules/caniuse-lite/data/regions/KZ.js
deleted file mode 100644
index dc37fe6..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/KZ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.007194,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.007194,"35":0,"36":0.028776,"37":0,"38":0,"39":0,"40":0.014388,"41":0,"42":0,"43":0.007194,"44":0,"45":0.014388,"46":0.007194,"47":0,"48":0.007194,"49":0.294954,"50":0.007194,"51":0.014388,"52":0,"53":0.007194,"54":0.007194,"55":0.028776,"56":0.03597,"57":0.043164,"58":0.043164,"59":0.014388,"60":0.021582,"61":0.021582,"62":0.007194,"63":0.223014,"64":0.064746,"65":0.03597,"66":0.028776,"67":0.050358,"68":0.043164,"69":0.064746,"70":0.151074,"71":0.122298,"72":0.136686,"73":0.21582,"74":0.194238,"75":0.194238,"76":0.309342,"77":0.446028,"78":0.496386,"79":31.560078,"80":0.007194,"81":0.043164,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.007194,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.007194,"41":0.007194,"42":0.007194,"43":0.014388,"44":0,"45":0.007194,"46":0,"47":0.007194,"48":0.244596,"49":0.007194,"50":0.007194,"51":0.007194,"52":0.14388,"53":0.007194,"54":0.007194,"55":0.007194,"56":0.03597,"57":0.028776,"58":0.007194,"59":0.007194,"60":0.014388,"61":0.021582,"62":0.03597,"63":0.014388,"64":0.021582,"65":0.014388,"66":0.021582,"67":0.03597,"68":0.230208,"69":0.028776,"70":0.043164,"71":0.525162,"72":1.640232,"73":0.021582,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0.007194,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.021582,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.093522,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.007194,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.007194,"54":0.007194,"55":0,"56":0.007194,"57":0.007194,"58":0.007194,"60":0,"62":0.007194,"63":0.007194,"64":0.208626,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0.244596,"12.1":0.014388},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.021582,"12":0.064746,"13":1.208592,_:"0","3.1":0,"3.2":0,"5.1":0.03597,"6.1":0,"7.1":0,"9.1":0.007194,"10.1":0.021582,"11.1":0.07194,"12.1":0.294954},G:{"8":0.00087844313293988,"3.2":0.00087844313293988,"4.0-4.1":0.0017568862658798,"4.2-4.3":0,"5.0-5.1":0.0052706587976393,"6.0-6.1":0.0026353293988196,"7.0-7.1":0.0070275450635191,"8.1-8.4":0.013176646994098,"9.0-9.2":0.011419760728218,"9.3":0.10892694848455,"10.0-10.2":0.034259282184655,"10.3":0.12034670921276,"11.0-11.2":0.096628744623387,"11.3-11.4":0.16426886585976,"12.0-12.1":0.22136766950085,"12.2-12.4":1.3229353582075,"13.0-13.1":0.61139642052616,"13.2":0.25738383795139,"13.3":5.801238449935},I:{"3":0.00036863241106719,"4":0.0036863241106719,_:"76","2.1":0,"2.2":0.0011058972332016,"2.3":0.00036863241106719,"4.1":0.0062667509881423,"4.2-4.3":0.1629355256917,"4.4":0,"4.4.3-4.4.4":0.10506023715415},B:{"12":0.007194,"13":0.007194,"14":0.014388,"15":0.014388,"16":0.028776,"17":0.064746,"18":0.633072,_:"79"},A:{"6":0.0074979718309859,"7":0,"8":0.029991887323944,"9":0.014995943661972,"10":0.029991887323944,"11":0.44987830985915,"5.5":0},P:{"4":0.21175797609562,"5.0-5.4":0.020167426294821,"6.2-6.4":0.040334852589641,"7.2-7.4":0.1008371314741,"8.2":0.050418565737052,"9.2":0.34284624701195,"10.1":1.7343986613546},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.016836},J:{"7":0,"10":0.005612},R:{_:"0"},M:{"0":0.08418},O:{"0":0.57523},Q:{"1.2":0.019642},S:{"2.5":0.002806},H:{"0":0.32144128178694},L:{"0":32.214412}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/LA.js b/assets/node_modules/caniuse-lite/data/regions/LA.js
deleted file mode 100644
index 93abda6..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/LA.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.014634,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0.004878,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.004878,"26":0.004878,"27":0,"28":0.004878,"29":0,"30":0.004878,"31":0,"32":0,"33":0.029268,"34":0,"35":0,"36":0.009756,"37":0.004878,"38":0.009756,"39":0.014634,"40":0.029268,"41":0.009756,"42":0.009756,"43":0.131706,"44":0.014634,"45":0.014634,"46":0.019512,"47":0.019512,"48":0.034146,"49":0.199998,"50":0.02439,"51":0.034146,"52":0.019512,"53":0.019512,"54":0.019512,"55":0.019512,"56":0.019512,"57":0.014634,"58":0.029268,"59":0.02439,"60":0.02439,"61":0.034146,"62":0.04878,"63":0.141462,"64":0.009756,"65":0.009756,"66":0.009756,"67":0.009756,"68":0.014634,"69":0.058536,"70":0.107316,"71":0.209754,"72":0.07317,"73":0.063414,"74":0.234144,"75":0.126828,"76":0.102438,"77":0.204876,"78":0.175608,"79":14.399856,"80":0.078048,"81":0.014634,"82":0},C:{"2":0,"3":0.004878,"4":0,"5":0,"6":0,"7":0.004878,"8":0,"9":0,"10":0.004878,"11":0,"12":0.004878,"13":0,"14":0.004878,"15":0.004878,"16":0.004878,"17":0.004878,"18":0.004878,"19":0.004878,"20":0.004878,"21":0.009756,"22":0,"23":0,"24":0.004878,"25":0,"26":0,"27":0,"28":0,"29":0.004878,"30":0.004878,"31":0.009756,"32":0,"33":0,"34":0.004878,"35":0.004878,"36":0.004878,"37":0,"38":0.009756,"39":0.009756,"40":0.009756,"41":0.009756,"42":0.009756,"43":0.014634,"44":0.009756,"45":0.014634,"46":0.004878,"47":0.02439,"48":0.029268,"49":0.009756,"50":0.009756,"51":0.029268,"52":0.04878,"53":0.029268,"54":0.019512,"55":0.02439,"56":0.034146,"57":0.029268,"58":0.009756,"59":0.004878,"60":0.009756,"61":0.004878,"62":0,"63":0.004878,"64":0.004878,"65":0.004878,"66":0.004878,"67":0.034146,"68":0.087804,"69":0.014634,"70":0.019512,"71":0.526824,"72":1.507302,"73":0.112194,"74":0,"3.5":0,"3.6":0.004878},F:{"9":0,"11":0.004878,"12":0.004878,"15":0.009756,"16":0,"17":0.004878,"18":0,"19":0.004878,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.004878,"27":0,"28":0,"29":0.004878,"30":0.004878,"31":0.004878,"32":0.004878,"33":0.004878,"34":0.004878,"35":0,"36":0.004878,"37":0.02439,"38":0,"39":0.004878,"40":0,"41":0.004878,"42":0.004878,"43":0,"44":0.004878,"45":0.004878,"46":0.009756,"47":0,"48":0.004878,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0.004878,"63":0,"64":0.009756,"9.5-9.6":0,"10.0-10.1":0.004878,"10.5":0,"10.6":0,"11.1":0.004878,"11.5":0,"11.6":0.004878,"12.1":0.019512},E:{"4":0,"5":0.004878,"6":0.004878,"7":0,"8":0.009756,"9":0.004878,"10":0.009756,"11":0.039024,"12":0.092682,"13":0.541458,_:"0","3.1":0,"3.2":0,"5.1":0.009756,"6.1":0,"7.1":0,"9.1":0.009756,"10.1":0.078048,"11.1":0.107316,"12.1":0.141462},G:{"8":0.001459344003201,"3.2":0.001459344003201,"4.0-4.1":0.0029186880064019,"4.2-4.3":0,"5.0-5.1":0.0087560640192058,"6.0-6.1":0.0043780320096029,"7.0-7.1":0.011674752025608,"8.1-8.4":0.021890160048014,"9.0-9.2":0.018971472041612,"9.3":0.18095865639692,"10.0-10.2":0.056914416124837,"10.3":0.19993012843853,"11.0-11.2":0.16052784035211,"11.3-11.4":0.27289732859858,"12.0-12.1":0.36775468880664,"12.2-12.4":2.1977720688206,"13.0-13.1":1.0157034262279,"13.2":0.42758779293788,"13.3":9.6375077971391},I:{"3":0.00095440316205534,"4":0.0095440316205534,_:"76","2.1":0,"2.2":0.002863209486166,"2.3":0.00095440316205534,"4.1":0.016224853754941,"4.2-4.3":0.42184619762846,"4.4":0,"4.4.3-4.4.4":0.27200490118577},B:{"12":0.014634,"13":0.014634,"14":0.019512,"15":0.014634,"16":0.019512,"17":0.043902,"18":0.770724,_:"79"},A:{"6":0,"7":0,"8":0.18742776923077,"9":0.070918615384615,"10":0.025328076923077,"11":0.24314953846154,"5.5":0},P:{"4":2.1037671473684,"5.0-5.4":0.040652505263158,"6.2-6.4":0.091468136842105,"7.2-7.4":0.43701443157895,"8.2":0.14228376842105,"9.2":0.70125571578947,"10.1":2.2358877894737},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.068293333333333,"11":0.17756266666667},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.107562},O:{"0":0.604396},Q:{"1.2":0.297076},S:{"2.5":0},H:{"0":0.52856047766323},L:{"0":49.977474}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/LB.js b/assets/node_modules/caniuse-lite/data/regions/LB.js
deleted file mode 100644
index 8bececd..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/LB.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.005654,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.005654,"39":0,"40":0,"41":0,"42":0,"43":0.005654,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.130042,"50":0,"51":0,"52":0,"53":0.011308,"54":0,"55":0,"56":0.005654,"57":0.005654,"58":0.011308,"59":0.02827,"60":0.005654,"61":0,"62":0.011308,"63":0.033924,"64":0.005654,"65":0.022616,"66":0.02827,"67":0.045232,"68":0.016962,"69":0.033924,"70":0.101772,"71":0.045232,"72":0.045232,"73":0.118734,"74":0.11308,"75":0.050886,"76":0.096118,"77":0.090464,"78":0.378818,"79":17.278624,"80":0.050886,"81":0.005654,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005654,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.005654,"44":0,"45":0,"46":0,"47":0.005654,"48":0.033924,"49":0.005654,"50":0,"51":0,"52":0.022616,"53":0,"54":0,"55":0,"56":0.005654,"57":0.005654,"58":0.005654,"59":0,"60":0.011308,"61":0.005654,"62":0,"63":0.005654,"64":0.011308,"65":0.005654,"66":0.005654,"67":0.02827,"68":0.107426,"69":0.033924,"70":0.039578,"71":0.5654,"72":1.238226,"73":0.02827,"74":0.005654,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.011308,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.011308,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0.005654,"64":0.016962,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0.005654,"6":0,"7":0,"8":0.096118,"9":0.005654,"10":0.062194,"11":0.079156,"12":0.175274,"13":1.21561,_:"0","3.1":0,"3.2":0,"5.1":5.998894,"6.1":0,"7.1":0,"9.1":0.033924,"10.1":0.147004,"11.1":0.299662,"12.1":0.514514},G:{"8":0.001288433730119,"3.2":0.001288433730119,"4.0-4.1":0.0025768674602381,"4.2-4.3":0,"5.0-5.1":0.0077306023807142,"6.0-6.1":0.0038653011903571,"7.0-7.1":0.010307469840952,"8.1-8.4":0.019326505951786,"9.0-9.2":0.016749638491547,"9.3":0.15976578253476,"10.0-10.2":0.050248915474642,"10.3":0.17651542102631,"11.0-11.2":0.14172771031309,"11.3-11.4":0.24093710753226,"12.0-12.1":0.32468529999,"12.2-12.4":1.9403811975593,"13.0-13.1":0.89674987616285,"13.2":0.37751108292488,"13.3":8.5088163537061},I:{"3":0.00026978656126482,"4":0.0026978656126482,_:"76","2.1":0,"2.2":0.00080935968379447,"2.3":0.00026978656126482,"4.1":0.004586371541502,"4.2-4.3":0.11924566007905,"4.4":0,"4.4.3-4.4.4":0.076889169960474},B:{"12":0.016962,"13":0.005654,"14":0.011308,"15":0.02827,"16":0.045232,"17":0.192236,"18":0.87637,_:"79"},A:{"6":0.0057936049382716,"7":0,"8":0.040555234567901,"9":0.0057936049382716,"10":0.017380814814815,"11":0.39975874074074,"5.5":0},P:{"4":0.28442737349398,"5.0-5.4":0.030474361445783,"6.2-6.4":0.050790602409639,"7.2-7.4":0.21332053012048,"8.2":0.060948722891566,"9.2":0.41648293975904,"10.1":4.7235260240964},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0.004346},R:{_:"0"},M:{"0":0.099958},O:{"0":0.52152},Q:{"1.2":0.004346},S:{"2.5":0},H:{"0":0.34561901030928},L:{"0":44.437078}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/LC.js b/assets/node_modules/caniuse-lite/data/regions/LC.js
deleted file mode 100644
index 8ab56e8..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/LC.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.00879,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.083505,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.013185,"56":0,"57":0,"58":0.004395,"59":0,"60":0.004395,"61":0,"62":0.004395,"63":0.04395,"64":0,"65":0.021975,"66":0.004395,"67":0.004395,"68":0.004395,"69":0.04395,"70":0.021975,"71":0.14064,"72":0.021975,"73":0.04395,"74":0.02637,"75":0.05274,"76":0.074715,"77":0.48345,"78":0.329625,"79":11.01387,"80":0.00879,"81":0.00879,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0.00879,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.004395,"49":0.00879,"50":0,"51":0,"52":0.00879,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0.013185,"61":0.004395,"62":0,"63":0,"64":0.039555,"65":0.004395,"66":0.004395,"67":0,"68":0.074715,"69":0.004395,"70":0.01758,"71":0.29007,"72":0.531795,"73":0.00879,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.004395,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.013185,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.013185},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.00879,"12":0.01758,"13":0.94053,_:"0","3.1":0,"3.2":0,"5.1":0.01758,"6.1":0,"7.1":0,"9.1":0.00879,"10.1":0.00879,"11.1":0.030765,"12.1":0.31644},G:{"8":0.0010926042812844,"3.2":0.0010926042812844,"4.0-4.1":0.0021852085625688,"4.2-4.3":0,"5.0-5.1":0.0065556256877063,"6.0-6.1":0.0032778128438532,"7.0-7.1":0.0087408342502751,"8.1-8.4":0.016389064219266,"9.0-9.2":0.014203855656697,"9.3":0.13548293087926,"10.0-10.2":0.042611566970091,"10.3":0.14968678653596,"11.0-11.2":0.12018647094128,"11.3-11.4":0.20431700060018,"12.0-12.1":0.27533627888367,"12.2-12.4":1.6454620476143,"13.0-13.1":0.76045257977393,"13.2":0.32013305441632,"13.3":7.2155586736021},I:{"3":0.0015174440052701,"4":0.015174440052701,_:"76","2.1":0,"2.2":0.0045523320158103,"2.3":0.0015174440052701,"4.1":0.025796548089592,"4.2-4.3":0.67071025032938,"4.4":0,"4.4.3-4.4.4":0.43247154150198},B:{"12":0.00879,"13":0.013185,"14":0.013185,"15":0.01758,"16":0.065925,"17":0.07032,"18":1.041615,_:"79"},A:{"6":0,"7":0,"8":0.004395,"9":0,"10":0,"11":0.32523,"5.5":0},P:{"4":0.1385838704028,"5.0-5.4":0.031980893169877,"6.2-6.4":0,"7.2-7.4":0.17056476357268,"8.2":0.031980893169877,"9.2":0.22386625218914,"10.1":5.4474121366025},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.00980875,"11":0.06866125},J:{"7":0,"10":0.005605},R:{_:"0"},M:{"0":0.173755},O:{"0":0.12331},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.20695162371134},L:{"0":61.76283}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/LI.js b/assets/node_modules/caniuse-lite/data/regions/LI.js
deleted file mode 100644
index 4aa2002..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/LI.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.00712,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.0712,"50":0,"51":0,"52":0,"53":0.02136,"54":0,"55":0,"56":0.01424,"57":0,"58":0,"59":0,"60":0.02848,"61":0,"62":0,"63":0.00712,"64":0,"65":0,"66":0,"67":0.02848,"68":0,"69":0.02848,"70":0.02136,"71":0.06408,"72":0.22072,"73":0.29904,"74":0.02848,"75":0.61232,"76":1.29584,"77":0.15664,"78":1.45248,"79":18.09904,"80":0.00712,"81":0.01424,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.02136,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.02136,"49":0.00712,"50":0,"51":0,"52":0.09256,"53":0,"54":0.00712,"55":0.00712,"56":0.00712,"57":0,"58":0,"59":0.00712,"60":0.19936,"61":0,"62":0,"63":0.00712,"64":0.00712,"65":0.01424,"66":0.04984,"67":0.05696,"68":0.25632,"69":0.02136,"70":0.16376,"71":1.50232,"72":3.36064,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0.00712,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0.00712,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.02136,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.01424,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.01424,"12":0.9968,"13":6.07336,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.1424,"10.1":0.07832,"11.1":0.66216,"12.1":0.48416},G:{"8":0.0026357827348204,"3.2":0.0026357827348204,"4.0-4.1":0.0052715654696409,"4.2-4.3":0,"5.0-5.1":0.015814696408923,"6.0-6.1":0.0079073482044613,"7.0-7.1":0.021086261878564,"8.1-8.4":0.039536741022307,"9.0-9.2":0.034265175552666,"9.3":0.32683705911774,"10.0-10.2":0.102795526658,"10.3":0.3611022346704,"11.0-11.2":0.28993610083025,"11.3-11.4":0.49289137141142,"12.0-12.1":0.66421724917475,"12.2-12.4":3.9694887986396,"13.0-13.1":1.834504783435,"13.2":0.77228434130239,"13.3":17.406709180754},I:{"3":0.00031198945981555,"4":0.0031198945981555,_:"76","2.1":0,"2.2":0.00093596837944664,"2.3":0.00031198945981555,"4.1":0.0053038208168643,"4.2-4.3":0.13789934123847,"4.4":0,"4.4.3-4.4.4":0.088916996047431},B:{"12":0,"13":0.01424,"14":0.01424,"15":0.00712,"16":0.06408,"17":0.20648,"18":4.3788,_:"79"},A:{"6":0,"7":0,"8":0.028519067215364,"9":0.0071297668038409,"10":0,"11":5.1619511659808,"5.5":0},P:{"4":0.12707446153846,"5.0-5.4":0.010589538461538,"6.2-6.4":0,"7.2-7.4":0,"8.2":0.010589538461538,"9.2":0.010589538461538,"10.1":4.4581956923077},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.04896},J:{"7":0,"10":0.00576},R:{_:"0"},M:{"0":0.16416},O:{"0":0},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.040898969072165},L:{"0":16.75096}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/LK.js b/assets/node_modules/caniuse-lite/data/regions/LK.js
deleted file mode 100644
index 6e82270..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/LK.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.003859,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.003859,"30":0.003859,"31":0.003859,"32":0.003859,"33":0.003859,"34":0,"35":0.003859,"36":0.007718,"37":0,"38":0.003859,"39":0,"40":0.015436,"41":0,"42":0.003859,"43":0.003859,"44":0,"45":0,"46":0.003859,"47":0,"48":0,"49":0.100334,"50":0,"51":0.003859,"52":0,"53":0.003859,"54":0,"55":0.007718,"56":0.003859,"57":0,"58":0.011577,"59":0.003859,"60":0.007718,"61":0.003859,"62":0.003859,"63":0.042449,"64":0.007718,"65":0.011577,"66":0.007718,"67":0.011577,"68":0.003859,"69":0.069462,"70":0.019295,"71":0.030872,"72":0.030872,"73":0.034731,"74":0.073321,"75":0.042449,"76":0.065603,"77":0.081039,"78":0.15436,"79":10.318966,"80":0.027013,"81":0.011577,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.003859,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.007718,"44":0,"45":0,"46":0,"47":0.007718,"48":0.007718,"49":0,"50":0.003859,"51":0,"52":0.019295,"53":0,"54":0,"55":0,"56":0.007718,"57":0.003859,"58":0,"59":0,"60":0.007718,"61":0,"62":0.003859,"63":0.003859,"64":0.003859,"65":0.003859,"66":0.007718,"67":0.007718,"68":0.065603,"69":0.019295,"70":0.027013,"71":0.389759,"72":0.868275,"73":0.03859,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0.003859,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.007718,"35":0,"36":0,"37":0.034731,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.003859,"46":0.015436,"47":0,"48":0.003859,"49":0,"50":0,"51":0,"52":0,"53":0.011577,"54":0.007718,"55":0.003859,"56":0.007718,"57":0,"58":0,"60":0,"62":0,"63":0.003859,"64":0.015436,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.003859},E:{"4":0,"5":0,"6":0,"7":0.003859,"8":0,"9":0,"10":0.003859,"11":0.007718,"12":0.030872,"13":0.312579,_:"0","3.1":0,"3.2":0,"5.1":0.019295,"6.1":0,"7.1":0,"9.1":0.007718,"10.1":0.019295,"11.1":0.019295,"12.1":0.096475},G:{"8":0.00072517855356607,"3.2":0.00072517855356607,"4.0-4.1":0.0014503571071321,"4.2-4.3":0,"5.0-5.1":0.0043510713213964,"6.0-6.1":0.0021755356606982,"7.0-7.1":0.0058014284285286,"8.1-8.4":0.010877678303491,"9.0-9.2":0.0094273211963589,"9.3":0.089922140642193,"10.0-10.2":0.028281963589077,"10.3":0.099349461838552,"11.0-11.2":0.079769640892268,"11.3-11.4":0.13560838951686,"12.0-12.1":0.18274499549865,"12.2-12.4":1.0921189016705,"13.0-13.1":0.50472427328198,"13.2":0.21247731619486,"13.3":4.7890791677503},I:{"3":0.00063126218708827,"4":0.0063126218708827,_:"76","2.1":0,"2.2":0.0018937865612648,"2.3":0.00063126218708827,"4.1":0.010731457180501,"4.2-4.3":0.27901788669302,"4.4":0,"4.4.3-4.4.4":0.17990972332016},B:{"12":0.011577,"13":0.011577,"14":0.023154,"15":0.030872,"16":0.011577,"17":0.042449,"18":0.328015,_:"79"},A:{"6":0,"7":0,"8":0.03178,"9":0.0039725,"10":0.0039725,"11":0.09534,"5.5":0},P:{"4":2.171728220339,"5.0-5.4":0.081186101694915,"6.2-6.4":0.1420756779661,"7.2-7.4":0.49726487288136,"8.2":0.21311351694915,"9.2":0.95393669491525,"10.1":1.8774286016949},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.010886318181818,"11":0.22861268181818},J:{"7":0,"10":0.012282},R:{_:"0"},M:{"0":0.12282},O:{"0":3.211743},Q:{"1.2":0.006141},S:{"2.5":0},H:{"0":3.2732268608247},L:{"0":59.425802}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/LR.js b/assets/node_modules/caniuse-lite/data/regions/LR.js
deleted file mode 100644
index 34a3cbe..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/LR.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.002894,"30":0.002894,"31":0,"32":0,"33":0,"34":0,"35":0.002894,"36":0.002894,"37":0.005788,"38":0.002894,"39":0,"40":0.005788,"41":0,"42":0,"43":0.01447,"44":0,"45":0,"46":0.002894,"47":0,"48":0,"49":0.020258,"50":0.011576,"51":0,"52":0,"53":0.005788,"54":0,"55":0.008682,"56":0.002894,"57":0,"58":0.017364,"59":0,"60":0.017364,"61":0,"62":0.002894,"63":0.034728,"64":0.026046,"65":0.01447,"66":0.005788,"67":0.005788,"68":0.002894,"69":0.075244,"70":0.011576,"71":0.01447,"72":0.002894,"73":0.023152,"74":0.031834,"75":0.017364,"76":0.02894,"77":0.046304,"78":0.124442,"79":2.998184,"80":0.020258,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0.002894,"18":0,"19":0,"20":0,"21":0.008682,"22":0,"23":0,"24":0.008682,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.002894,"31":0,"32":0,"33":0.002894,"34":0.002894,"35":0,"36":0,"37":0.002894,"38":0,"39":0,"40":0,"41":0,"42":0.005788,"43":0.005788,"44":0.002894,"45":0.002894,"46":0,"47":0.023152,"48":0.005788,"49":0.002894,"50":0.017364,"51":0.002894,"52":0.005788,"53":0,"54":0,"55":0,"56":0.164958,"57":0.002894,"58":0.002894,"59":0.002894,"60":0.002894,"61":0,"62":0,"63":0,"64":0.005788,"65":0.002894,"66":0,"67":0.002894,"68":0.040516,"69":0.005788,"70":0.011576,"71":0.272036,"72":0.581694,"73":0.049198,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0.002894,"15":0,"16":0.002894,"17":0.002894,"18":0,"19":0,"20":0.023152,"21":0.01447,"22":0,"23":0.037622,"24":0,"25":0,"26":0,"27":0,"28":0.002894,"29":0.002894,"30":0,"31":0,"32":0,"33":0.002894,"34":0,"35":0,"36":0,"37":0.017364,"38":0.002894,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.005788,"46":0.017364,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.005788,"54":0.008682,"55":0.002894,"56":0.002894,"57":0,"58":0,"60":0,"62":0.002894,"63":0.020258,"64":0.005788,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.162064},E:{"4":0,"5":0,"6":0,"7":0,"8":0.002894,"9":0,"10":0,"11":0,"12":0.008682,"13":0.272036,_:"0","3.1":0,"3.2":0,"5.1":0.020258,"6.1":0,"7.1":0,"9.1":0.002894,"10.1":0.005788,"11.1":0.023152,"12.1":0.011576},G:{"8":0.00037300870261078,"3.2":0.00037300870261078,"4.0-4.1":0.00074601740522157,"4.2-4.3":0,"5.0-5.1":0.0022380522156647,"6.0-6.1":0.0011190261078323,"7.0-7.1":0.0029840696208863,"8.1-8.4":0.0055951305391617,"9.0-9.2":0.0048491131339402,"9.3":0.046253079123737,"10.0-10.2":0.014547339401821,"10.3":0.051102192257677,"11.0-11.2":0.041030957287186,"11.3-11.4":0.069752627388216,"12.0-12.1":0.093998193057917,"12.2-12.4":0.56175110613184,"13.0-13.1":0.25961405701711,"13.2":0.10929154986496,"13.3":2.4633494720416},I:{"3":0.00080852173913043,"4":0.0080852173913043,_:"76","2.1":0,"2.2":0.0024255652173913,"2.3":0.00080852173913043,"4.1":0.013744869565217,"4.2-4.3":0.35736660869565,"4.4":0,"4.4.3-4.4.4":0.23042869565217},B:{"12":0.049198,"13":0.02894,"14":0.011576,"15":0.017364,"16":0.034728,"17":0.054986,"18":0.410948,_:"79"},A:{"6":0.002894,"7":0.002894,"8":0.011576,"9":0,"10":0.026046,"11":0.33281,"5.5":0},P:{"4":0.48145457142857,"5.0-5.4":0.13316828571429,"6.2-6.4":0.061462285714286,"7.2-7.4":0.19463057142857,"8.2":0.10243714285714,"9.2":0.25609285714286,"10.1":1.1268085714286},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.043928,"11":0.076874},J:{"7":0,"10":0.007106},R:{_:"0"},M:{"0":0.170544},O:{"0":4.320448},Q:{"1.2":0.03553},S:{"2.5":0.198968},H:{"0":12.250780628866},L:{"0":62.905018}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/LS.js b/assets/node_modules/caniuse-lite/data/regions/LS.js
deleted file mode 100644
index 414ffff..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/LS.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.003752,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.026264,"35":0,"36":0.003752,"37":0,"38":0,"39":0,"40":0.048776,"41":0.003752,"42":0,"43":0.052528,"44":0,"45":0,"46":0.048776,"47":0,"48":0.011256,"49":0.060032,"50":0.003752,"51":0,"52":0,"53":0.011256,"54":0,"55":0.03752,"56":0.022512,"57":0,"58":0.01876,"59":0.003752,"60":0.015008,"61":0,"62":0,"63":0.030016,"64":0,"65":0.030016,"66":0.015008,"67":0.003752,"68":0.007504,"69":0.082544,"70":0.030016,"71":0.026264,"72":0.01876,"73":0.011256,"74":0.041272,"75":0.086296,"76":0.052528,"77":0.048776,"78":0.11256,"79":4.67124,"80":0.003752,"81":0.003752,"82":0},C:{"2":0,"3":0,"4":0.003752,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.007504,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.003752,"38":0,"39":0.007504,"40":0,"41":0,"42":0.003752,"43":0.003752,"44":0.030016,"45":0.007504,"46":0,"47":0.007504,"48":0,"49":0,"50":0,"51":0.003752,"52":0.015008,"53":0,"54":0.003752,"55":0.003752,"56":0.015008,"57":0,"58":0,"59":0,"60":0.003752,"61":0.007504,"62":0,"63":0,"64":0,"65":0,"66":0.003752,"67":0.003752,"68":0.05628,"69":0.07504,"70":0.015008,"71":0.236376,"72":0.896728,"73":0.03752,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0.003752,"18":0,"19":0.003752,"20":0,"21":0.003752,"22":0.003752,"23":0,"24":0,"25":0,"26":0.026264,"27":0,"28":0.011256,"29":0,"30":0.003752,"31":0,"32":0.007504,"33":0,"34":0,"35":0.048776,"36":0.022512,"37":0,"38":0.003752,"39":0,"40":0,"41":0.003752,"42":0,"43":0,"44":0,"45":0.01876,"46":0.07504,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.007504,"54":0.003752,"55":0.05628,"56":0.003752,"57":0,"58":0.003752,"60":0,"62":0,"63":0.011256,"64":0.011256,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.116312},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.003752,"12":0.015008,"13":0.086296,_:"0","3.1":0,"3.2":0,"5.1":1.245664,"6.1":0,"7.1":0.003752,"9.1":0,"10.1":0.01876,"11.1":0.015008,"12.1":0.041272},G:{"8":0.00029032229668901,"3.2":0.00029032229668901,"4.0-4.1":0.00058064459337801,"4.2-4.3":0,"5.0-5.1":0.001741933780134,"6.0-6.1":0.00087096689006702,"7.0-7.1":0.0023225783735121,"8.1-8.4":0.0043548344503351,"9.0-9.2":0.0037741898569571,"9.3":0.035999964789437,"10.0-10.2":0.011322569570871,"10.3":0.039774154646394,"11.0-11.2":0.031935452635791,"11.3-11.4":0.054290269480844,"12.0-12.1":0.07316121876563,"12.2-12.4":0.43722537881364,"13.0-13.1":0.20206431849555,"13.2":0.085064432929879,"13.3":1.9172884473342},I:{"3":0.00088605006587615,"4":0.0088605006587615,_:"76","2.1":0,"2.2":0.0026581501976285,"2.3":0.00088605006587615,"4.1":0.015062851119895,"4.2-4.3":0.39163412911726,"4.4":0,"4.4.3-4.4.4":0.2525242687747},B:{"12":0.033768,"13":0.01876,"14":0.03752,"15":0.015008,"16":0.05628,"17":0.153832,"18":0.709128,_:"79"},A:{"6":0,"7":0,"8":0.01876,"9":0,"10":0.015008,"11":0.31892,"5.5":0},P:{"4":1.5968860931507,"5.0-5.4":0.020472898630137,"6.2-6.4":0.071655145205479,"7.2-7.4":0.57324116164384,"8.2":0.092128043835616,"9.2":0.41969442191781,"10.1":0.96222623561644},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.053031804878049,"11":0.49054419512195},J:{"7":0,"10":0.09372},R:{_:"0"},M:{"0":0.12496},O:{"0":3.017784},Q:{"1.2":0.06248},S:{"2.5":0},H:{"0":14.084097745704},L:{"0":54.7596}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/LT.js b/assets/node_modules/caniuse-lite/data/regions/LT.js
deleted file mode 100644
index 7ac5f9c..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/LT.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.045738,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.006534,"37":0,"38":0.006534,"39":0,"40":0.006534,"41":0.006534,"42":0,"43":0.013068,"44":0,"45":0,"46":0.013068,"47":0,"48":0.045738,"49":0.810216,"50":0.006534,"51":0.006534,"52":0.006534,"53":0.013068,"54":0.006534,"55":0.006534,"56":0.013068,"57":0.006534,"58":0.026136,"59":0.006534,"60":0.006534,"61":0.124146,"62":0.019602,"63":0.045738,"64":0.052272,"65":0.019602,"66":0.013068,"67":0.026136,"68":0.052272,"69":0.071874,"70":0.215622,"71":0.078408,"72":0.091476,"73":0.09801,"74":0.052272,"75":0.124146,"76":0.280962,"77":0.150282,"78":0.516186,"79":24.678918,"80":0.03267,"81":0.019602,"82":0},C:{"2":0,"3":0.019602,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.019602,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.013068,"44":0,"45":0.006534,"46":0,"47":0.006534,"48":0.03267,"49":0.006534,"50":0.013068,"51":0.03267,"52":0.182952,"53":0.006534,"54":0.006534,"55":0.013068,"56":0.045738,"57":0.013068,"58":0.006534,"59":0.006534,"60":0.039204,"61":0.013068,"62":0.019602,"63":0.013068,"64":0.013068,"65":0.026136,"66":0.03267,"67":0.026136,"68":0.267894,"69":0.045738,"70":0.052272,"71":1.489752,"72":3.65904,"73":0.039204,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.013068,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.013068,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.006534,"54":0,"55":0.006534,"56":0,"57":0.006534,"58":0.006534,"60":0,"62":0.006534,"63":0,"64":0.084942,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.006534},E:{"4":0.026136,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.006534,"11":0.013068,"12":0.13068,"13":1.555092,_:"0","3.1":0,"3.2":0,"5.1":0.078408,"6.1":0,"7.1":0,"9.1":0.006534,"10.1":0.039204,"11.1":0.09801,"12.1":0.307098},G:{"8":0.0011230745223567,"3.2":0.0011230745223567,"4.0-4.1":0.0022461490447134,"4.2-4.3":0,"5.0-5.1":0.0067384471341402,"6.0-6.1":0.0033692235670701,"7.0-7.1":0.0089845961788537,"8.1-8.4":0.016846117835351,"9.0-9.2":0.014599968790637,"9.3":0.13926124077223,"10.0-10.2":0.043799906371912,"10.3":0.15386120956287,"11.0-11.2":0.12353819745924,"11.3-11.4":0.2100149356807,"12.0-12.1":0.28301477963389,"12.2-12.4":1.6913502306692,"13.0-13.1":0.78165986756027,"13.2":0.32906083505052,"13.3":7.4167841456437},I:{"3":0.00040244532279315,"4":0.0040244532279315,_:"76","2.1":0,"2.2":0.0012073359683794,"2.3":0.00040244532279315,"4.1":0.0068415704874835,"4.2-4.3":0.17788083267457,"4.4":0,"4.4.3-4.4.4":0.11469691699605},B:{"12":0,"13":0.006534,"14":0.026136,"15":0.026136,"16":0.03267,"17":0.13068,"18":1.724976,_:"79"},A:{"6":0,"7":0,"8":0.45991971731449,"9":0.099649272084806,"10":0.17630255830389,"11":1.4334164522968,"5.5":0},P:{"4":0.13263040322581,"5.0-5.4":0.04080935483871,"6.2-6.4":0.010202338709677,"7.2-7.4":0.051011693548387,"8.2":0.04080935483871,"9.2":0.21424911290323,"10.1":3.193332016129},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.0098203333333333,"11":0.049101666666667},J:{"7":0,"10":0.006932},R:{_:"0"},M:{"0":0.221824},O:{"0":0.110912},Q:{"1.2":0.003466},S:{"2.5":0},H:{"0":0.21985278694158},L:{"0":38.712622}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/LU.js b/assets/node_modules/caniuse-lite/data/regions/LU.js
deleted file mode 100644
index 9d3cdc5..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/LU.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0.011398,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.005699,"36":0,"37":0,"38":0.011398,"39":0,"40":0.250756,"41":0.005699,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.290649,"50":0,"51":0,"52":0.005699,"53":0.005699,"54":0,"55":0.005699,"56":0,"57":0.005699,"58":0.005699,"59":0.256455,"60":0.022796,"61":0.005699,"62":0.034194,"63":0.039893,"64":0.005699,"65":0.017097,"66":0.005699,"67":0.022796,"68":0.011398,"69":0.039893,"70":0.125378,"71":0.028495,"72":0.153873,"73":0.917539,"74":0.11398,"75":0.359037,"76":0.159572,"77":0.22796,"78":0.433124,"79":10.725518,"80":0.022796,"81":0.011398,"82":0},C:{"2":0.005699,"3":0.005699,"4":0.005699,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0.005699,"18":0,"19":0,"20":0,"21":0.11398,"22":0.005699,"23":0,"24":0.005699,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.05699,"39":0,"40":0,"41":0,"42":0,"43":0.005699,"44":0,"45":0.045592,"46":0,"47":0.005699,"48":0.022796,"49":0,"50":0.245057,"51":0.005699,"52":0.153873,"53":0,"54":0.005699,"55":0.022796,"56":0.011398,"57":0,"58":0.695278,"59":0,"60":0.262154,"61":0.005699,"62":0.005699,"63":0.017097,"64":0.005699,"65":0.245057,"66":0.034194,"67":0.102582,"68":0.91184,"69":0.062689,"70":0.068388,"71":1.037218,"72":2.45057,"73":0.028495,"74":0,"3.5":0,"3.6":0.005699},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.017097,"37":0.005699,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.017097,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.005699,"54":0,"55":0,"56":0.005699,"57":0,"58":0,"60":0,"62":0.017097,"63":0.005699,"64":0.011398,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0.017097,"5":0,"6":0,"7":0,"8":0.005699,"9":0,"10":0.005699,"11":0.028495,"12":0.148174,"13":3.858223,_:"0","3.1":0,"3.2":0,"5.1":1.168295,"6.1":0,"7.1":0,"9.1":0.193766,"10.1":0.193766,"11.1":0.262154,"12.1":0.495813},G:{"8":0.00250655606682,"3.2":0.00250655606682,"4.0-4.1":0.0050131121336401,"4.2-4.3":0,"5.0-5.1":0.01503933640092,"6.0-6.1":0.0075196682004601,"7.0-7.1":0.02005244853456,"8.1-8.4":0.037598341002301,"9.0-9.2":0.032585228868661,"9.3":0.31081295228569,"10.0-10.2":0.097755686605982,"10.3":0.34339818115435,"11.0-11.2":0.27572116735021,"11.3-11.4":0.46872598449535,"12.0-12.1":0.63165212883865,"12.2-12.4":3.774873436631,"13.0-13.1":1.7445630225068,"13.2":0.73442092757827,"13.3":16.55329626528},I:{"3":0.00040474835309618,"4":0.0040474835309618,_:"76","2.1":0,"2.2":0.0012142450592885,"2.3":0.00040474835309618,"4.1":0.006880722002635,"4.2-4.3":0.17889877206851,"4.4":0,"4.4.3-4.4.4":0.11535328063241},B:{"12":0,"13":0.005699,"14":0.028495,"15":0.028495,"16":0.034194,"17":0.136776,"18":1.629914,_:"79"},A:{"6":0.022796,"7":0.131077,"8":0.262154,"9":0.011398,"10":0.011398,"11":1.1398,"5.5":0},P:{"4":0.37478086192469,"5.0-5.4":0.05205289748954,"6.2-6.4":0.031231738493724,"7.2-7.4":0.11451637447699,"8.2":0.062463476987448,"9.2":0.42683375941423,"10.1":3.6541134037657},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0.04301},R:{_:"0"},M:{"0":0.632247},O:{"0":0.713966},Q:{"1.2":0.004301},S:{"2.5":0},H:{"0":0.59042679553265},L:{"0":32.261081}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/LV.js b/assets/node_modules/caniuse-lite/data/regions/LV.js
deleted file mode 100644
index 5f9af02..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/LV.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0.013554,"25":0,"26":0.006777,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.006777,"35":0,"36":0.013554,"37":0,"38":0.027108,"39":0,"40":0.149094,"41":0,"42":0,"43":0,"44":0,"45":0.006777,"46":0.020331,"47":0,"48":0.006777,"49":0.548937,"50":0.006777,"51":0.027108,"52":0.013554,"53":0.027108,"54":0.006777,"55":0.020331,"56":0.013554,"57":0.033885,"58":0.020331,"59":0.189756,"60":0.088101,"61":0.040662,"62":0.013554,"63":0.027108,"64":0.006777,"65":0.013554,"66":0.040662,"67":0.047439,"68":0.027108,"69":0.094878,"70":0.074547,"71":0.054216,"72":0.081324,"73":0.047439,"74":0.060993,"75":0.128763,"76":0.155871,"77":0.142317,"78":0.576045,"79":27.277425,"80":0.047439,"81":0.020331,"82":0},C:{"2":0,"3":0.006777,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.027108,"13":0.013554,"14":0,"15":0,"16":0.033885,"17":0.013554,"18":0,"19":0.020331,"20":0.013554,"21":0.060993,"22":0.033885,"23":0.020331,"24":0.020331,"25":0.033885,"26":0.033885,"27":0.033885,"28":0.033885,"29":0.033885,"30":0.047439,"31":0.06777,"32":0.06777,"33":0.013554,"34":0.013554,"35":0.013554,"36":0.013554,"37":0.027108,"38":0.013554,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.006777,"46":0,"47":0.006777,"48":0.027108,"49":0.013554,"50":0.20331,"51":0,"52":0.223641,"53":0,"54":0.006777,"55":0.013554,"56":0.033885,"57":0.006777,"58":0.40662,"59":0,"60":0.033885,"61":0.006777,"62":0.006777,"63":0.013554,"64":0.013554,"65":0.027108,"66":0.033885,"67":0.047439,"68":0.298188,"69":0.033885,"70":0.060993,"71":1.565487,"72":3.45627,"73":0.027108,"74":0.006777,"3.5":0,"3.6":0.006777},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0.013554,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.013554,"37":0.013554,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.006777,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.006777,"57":0,"58":0.006777,"60":0,"62":0.006777,"63":0,"64":0.094878,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.013554},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.027108,"10":0.006777,"11":0.020331,"12":0.081324,"13":2.10087,_:"0","3.1":0,"3.2":0,"5.1":0.006777,"6.1":0,"7.1":0,"9.1":0.108432,"10.1":0.040662,"11.1":0.162648,"12.1":0.318519},G:{"8":0.0013623133940182,"3.2":0.0013623133940182,"4.0-4.1":0.0027246267880364,"4.2-4.3":0,"5.0-5.1":0.0081738803641092,"6.0-6.1":0.0040869401820546,"7.0-7.1":0.010898507152146,"8.1-8.4":0.020434700910273,"9.0-9.2":0.017710074122237,"9.3":0.16892686085826,"10.0-10.2":0.05313022236671,"10.3":0.18663693498049,"11.0-11.2":0.149854473342,"11.3-11.4":0.2547526046814,"12.0-12.1":0.34330297529259,"12.2-12.4":2.0516439713914,"13.0-13.1":0.94817012223667,"13.2":0.39915782444733,"13.3":8.9967176540962},I:{"3":0.00048018445322793,"4":0.0048018445322793,_:"76","2.1":0,"2.2":0.0014405533596838,"2.3":0.00048018445322793,"4.1":0.0081631357048748,"4.2-4.3":0.21224152832675,"4.4":0,"4.4.3-4.4.4":0.13685256916996},B:{"12":0,"13":0.040662,"14":0.074547,"15":0.013554,"16":0.027108,"17":0.081324,"18":1.246968,_:"79"},A:{"6":0.013554,"7":0,"8":0.060993,"9":0.06777,"10":0.040662,"11":0.711585,"5.5":0},P:{"4":0.092364394736842,"5.0-5.4":0.061576263157895,"6.2-6.4":0.010262710526316,"7.2-7.4":0.041050842105263,"8.2":0.030788131578947,"9.2":0.15394065789474,"10.1":2.5964657631579},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.041899},J:{"7":0,"10":0.003223},R:{_:"0"},M:{"0":0.219164},O:{"0":0.09669},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.30208148969072},L:{"0":34.540799}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/LY.js b/assets/node_modules/caniuse-lite/data/regions/LY.js
deleted file mode 100644
index 791e005..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/LY.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.003283,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.006566,"32":0,"33":0.013132,"34":0,"35":0,"36":0,"37":0.003283,"38":0.003283,"39":0,"40":0.006566,"41":0,"42":0,"43":0.019698,"44":0,"45":0,"46":0,"47":0.003283,"48":0,"49":0.036113,"50":0.003283,"51":0.003283,"52":0,"53":0.003283,"54":0,"55":0.003283,"56":0.003283,"57":0,"58":0.009849,"59":0.003283,"60":0.026264,"61":0.003283,"62":0,"63":0.016415,"64":0.006566,"65":0.006566,"66":0.006566,"67":0.003283,"68":0.003283,"69":0.039396,"70":0.022981,"71":0.013132,"72":0.009849,"73":0.022981,"74":0.045962,"75":0.026264,"76":0.036113,"77":0.052528,"78":0.078792,"79":4.602766,"80":0.003283,"81":0.003283,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.003283,"44":0,"45":0.003283,"46":0,"47":0.009849,"48":0,"49":0,"50":0,"51":0,"52":0.009849,"53":0,"54":0.003283,"55":0,"56":0,"57":0,"58":0,"59":0.003283,"60":0.019698,"61":0.003283,"62":0,"63":0,"64":0,"65":0.003283,"66":0.009849,"67":0,"68":0.03283,"69":0.019698,"70":0.016415,"71":0.160867,"72":0.370979,"73":0.013132,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0.003283,"18":0,"19":0,"20":0,"21":0.003283,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.003283,"34":0,"35":0,"36":0,"37":0.003283,"38":0,"39":0,"40":0,"41":0.003283,"42":0,"43":0,"44":0,"45":0.006566,"46":0.049245,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.003283,"54":0.016415,"55":0.003283,"56":0.003283,"57":0,"58":0,"60":0,"62":0,"63":0.009849,"64":0.022981,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.013132},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.003283,"11":0.003283,"12":0.003283,"13":0.111622,_:"0","3.1":0,"3.2":0,"5.1":3.844393,"6.1":0,"7.1":0,"9.1":0,"10.1":0.003283,"11.1":0.006566,"12.1":0.036113},G:{"8":0.00051013063919176,"3.2":0.00051013063919176,"4.0-4.1":0.0010202612783835,"4.2-4.3":0,"5.0-5.1":0.0030607838351505,"6.0-6.1":0.0015303919175753,"7.0-7.1":0.0040810451135341,"8.1-8.4":0.0076519595878764,"9.0-9.2":0.0066316983094928,"9.3":0.063256199259778,"10.0-10.2":0.019895094928479,"10.3":0.069887897569271,"11.0-11.2":0.056114370311093,"11.3-11.4":0.095394429528859,"12.0-12.1":0.12855292107632,"12.2-12.4":0.76825674262279,"13.0-13.1":0.35505092487746,"13.2":0.14946827728318,"13.3":3.3689027412224},I:{"3":0.00024088274044796,"4":0.0024088274044796,_:"76","2.1":0,"2.2":0.00072264822134387,"2.3":0.00024088274044796,"4.1":0.0040950065876153,"4.2-4.3":0.106470171278,"4.4":0,"4.4.3-4.4.4":0.068651581027668},B:{"12":0.003283,"13":0,"14":0.009849,"15":0.006566,"16":0.003283,"17":0.036113,"18":0.160867,_:"79"},A:{"6":0,"7":0,"8":0.036113,"9":0,"10":0.003283,"11":0.068943,"5.5":0},P:{"4":0.59814676397516,"5.0-5.4":0.030414242236025,"6.2-6.4":0.15207121118012,"7.2-7.4":0.55759444099379,"8.2":0.1216569689441,"9.2":0.75021797515528,"10.1":2.6156248322981},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0.006717},R:{_:"0"},M:{"0":0.120906},O:{"0":0.591096},Q:{"1.2":0},S:{"2.5":0},H:{"0":4.515047371134},L:{"0":70.188238}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MA.js b/assets/node_modules/caniuse-lite/data/regions/MA.js
deleted file mode 100644
index 58e6cbb..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MA.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0.15584,"20":0,"21":0,"22":0,"23":0,"24":0.43343,"25":0,"26":0,"27":0,"28":0,"29":0.00487,"30":0.14123,"31":0.00487,"32":0.00487,"33":0.15097,"34":0,"35":0.2922,"36":0.00487,"37":0,"38":0.00487,"39":0.00487,"40":0.00487,"41":0,"42":0,"43":0.02922,"44":0,"45":0,"46":0.00487,"47":0,"48":0.00487,"49":0.36038,"50":0.00487,"51":0.00487,"52":0,"53":0.00487,"54":0.14123,"55":0.14123,"56":0.69154,"57":0.00487,"58":0.00974,"59":0.00487,"60":0.00487,"61":0.01461,"62":0.00974,"63":0.02922,"64":0.00487,"65":0.02922,"66":0.00974,"67":0.04383,"68":0.00974,"69":0.02922,"70":0.08279,"71":0.10227,"72":0.08279,"73":0.06331,"74":0.06331,"75":0.11201,"76":0.11688,"77":0.0974,"78":0.25811,"79":10.45589,"80":0.01948,"81":0.01461,"82":0},C:{"2":0.13636,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0.14123,"16":0,"17":0,"18":0.1461,"19":0,"20":0,"21":0.13636,"22":0,"23":0.15097,"24":0,"25":0.30681,"26":0,"27":0,"28":0,"29":0,"30":0.14123,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0.00487,"43":0.00487,"44":0,"45":0.00487,"46":0,"47":0.00974,"48":0.02922,"49":0,"50":0.00487,"51":0.13636,"52":0.05844,"53":0,"54":0,"55":0.00974,"56":0.00974,"57":0,"58":0,"59":0,"60":0.00974,"61":0,"62":0,"63":0.01461,"64":0.00974,"65":0.00974,"66":0.01461,"67":0.00974,"68":0.12175,"69":0.02435,"70":0.01948,"71":0.45291,"72":0.93504,"73":0.01948,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.00487,"37":0.00487,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.12662,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.00487,"57":0.00487,"58":0.00974,"60":0,"62":0.00487,"63":0.00487,"64":0.03896,"9.5-9.6":0,"10.0-10.1":0.14123,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0.15097,"6":0,"7":0,"8":0.01948,"9":0.00487,"10":0.01461,"11":0.02435,"12":0.06331,"13":0.36525,_:"0","3.1":0,"3.2":0,"5.1":0.3409,"6.1":0,"7.1":0,"9.1":0.01461,"10.1":0.05357,"11.1":0.06331,"12.1":0.16558},G:{"8":0.0023171151345404,"3.2":0.0023171151345404,"4.0-4.1":0.0046342302690807,"4.2-4.3":0,"5.0-5.1":0.013902690807242,"6.0-6.1":0.0069513454036211,"7.0-7.1":0.018536921076323,"8.1-8.4":0.034756727018105,"9.0-9.2":0.030122496749025,"9.3":0.287322276683,"10.0-10.2":0.090367490247074,"10.3":0.31744477343203,"11.0-11.2":0.25488266479944,"11.3-11.4":0.43330053015905,"12.0-12.1":0.58391301390417,"12.2-12.4":3.4895753926178,"13.0-13.1":1.6127121336401,"13.2":0.67891473442033,"13.3":15.302228348505},I:{"3":0.0032467193675889,"4":0.032467193675889,_:"76","2.1":0,"2.2":0.0097401581027668,"2.3":0.0032467193675889,"4.1":0.055194229249012,"4.2-4.3":1.4350499604743,"4.4":0,"4.4.3-4.4.4":0.92531501976285},B:{"12":0.00487,"13":0.00487,"14":0.00487,"15":0.00974,"16":0.00487,"17":0.02922,"18":0.1948,_:"79"},A:{"6":0,"7":0,"8":0.33605399014778,"9":0.28169231527094,"10":0.29651822660099,"11":0.088955467980296,"5.5":0},P:{"4":0.52183311258278,"5.0-5.4":0.043486092715232,"6.2-6.4":0.065229139072848,"7.2-7.4":0.19568741721854,"8.2":0.05435761589404,"9.2":0.25004503311258,"10.1":2.1199470198675},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.05643},J:{"7":0,"10":0.01026},R:{_:"0"},M:{"0":0.18981},O:{"0":0.12312},Q:{"1.2":0.00513},S:{"2.5":0},H:{"0":0.30597541237113},L:{"0":46.90388}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MC.js b/assets/node_modules/caniuse-lite/data/regions/MC.js
deleted file mode 100644
index 77297db..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MC.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.47232,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.377856,"49":0.07872,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.007872,"57":0.015744,"58":0.007872,"59":0,"60":0,"61":0,"62":0,"63":0.007872,"64":0,"65":0.007872,"66":0.007872,"67":0.543168,"68":0.007872,"69":0.015744,"70":0.43296,"71":1.912896,"72":2.212032,"73":0.70848,"74":0.015744,"75":0.779328,"76":0.425088,"77":0.086592,"78":0.645504,"79":23.466432,"80":0.228288,"81":0,"82":0},C:{"2":0,"3":0.031488,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.015744,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.15744,"46":0,"47":0,"48":0.023616,"49":0,"50":0,"51":0,"52":0.149568,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0.1968,"61":0,"62":0.007872,"63":0.031488,"64":0.598272,"65":0.133824,"66":0.456576,"67":0.062976,"68":0.614016,"69":0.015744,"70":0.102336,"71":1.487808,"72":3.597504,"73":0.007872,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.015744,"57":0.007872,"58":0,"60":0,"62":0.110208,"63":0,"64":0.007872,"9.5-9.6":0.007872,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0.047232,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.015744,"11":0.03936,"12":0.330624,"13":8.22624,_:"0","3.1":0,"3.2":0,"5.1":0.125952,"6.1":0.007872,"7.1":0,"9.1":0.015744,"10.1":0.1968,"11.1":0.810816,"12.1":1.448448},G:{"8":0.002470377913374,"3.2":0.002470377913374,"4.0-4.1":0.004940755826748,"4.2-4.3":0,"5.0-5.1":0.014822267480244,"6.0-6.1":0.007411133740122,"7.0-7.1":0.019763023306992,"8.1-8.4":0.03705566870061,"9.0-9.2":0.032114912873862,"9.3":0.30632686125838,"10.0-10.2":0.096344738621586,"10.3":0.33844177413224,"11.0-11.2":0.27174157047114,"11.3-11.4":0.46196066980094,"12.0-12.1":0.62253523417025,"12.2-12.4":3.7203891375413,"13.0-13.1":1.7193830277083,"13.2":0.72382072861859,"13.3":16.314375739922},I:{"3":0.00012391040843215,"4":0.0012391040843215,_:"76","2.1":0,"2.2":0.00037173122529644,"2.3":0.00012391040843215,"4.1":0.0021064769433465,"4.2-4.3":0.054768400527009,"4.4":0,"4.4.3-4.4.4":0.035314466403162},B:{"12":0,"13":0,"14":0,"15":0.015744,"16":0.11808,"17":0.15744,"18":3.416448,_:"79"},A:{"6":0.12805418181818,"7":0.15549436363636,"8":0.57624381818182,"9":0.13720090909091,"10":0.29269527272727,"11":1.9299594545455,"5.5":0},P:{"4":0.31403647058824,"5.0-5.4":0.052339411764706,"6.2-6.4":0,"7.2-7.4":0.010467882352941,"8.2":0.031403647058824,"9.2":0.020935764705882,"10.1":0.96304517647059},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.023408,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.214928},O:{"0":0.029792},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.17728945704467},L:{"0":11.57896}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MD.js b/assets/node_modules/caniuse-lite/data/regions/MD.js
deleted file mode 100644
index a5465e9..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MD.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"13":0.010978,"33":0.005489,"36":0.038423,"38":0.027445,"40":0.203093,"41":0.038423,"43":0.005489,"45":0.005489,"46":0.005489,"47":0.010978,"48":0.010978,"49":0.636724,"50":0.005489,"51":0.016467,"52":0.005489,"53":0.065868,"54":0.016467,"55":0.005489,"56":0.021956,"57":0.021956,"58":0.027445,"59":0.098802,"60":0.038423,"61":0.005489,"62":0.016467,"63":0.065868,"64":0.005489,"65":0.027445,"66":0.016467,"67":0.038423,"68":0.043912,"69":0.10978,"70":0.131736,"71":0.142714,"72":0.093313,"73":0.592812,"74":0.137225,"75":0.252494,"76":0.230538,"77":0.225049,"78":0.675147,"79":35.771813,"80":0.05489,"81":0.027445,_:"4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 37 39 42 44 82"},C:{"3":0.005489,"21":0.005489,"31":0.005489,"35":0.010978,"38":0.005489,"42":0.005489,"43":0.016467,"45":0.010978,"47":0.016467,"48":0.010978,"49":0.005489,"50":0.093313,"51":0.010978,"52":0.131736,"53":0.005489,"54":0.005489,"55":0.010978,"56":0.021956,"57":0.021956,"58":0.241516,"59":0.05489,"60":0.049401,"61":0.027445,"62":0.005489,"63":0.027445,"64":0.010978,"65":0.016467,"66":0.043912,"67":0.038423,"68":0.247005,"69":0.032934,"70":0.071357,"71":0.653191,"72":1.948595,"73":0.032934,_:"2 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 36 37 39 40 41 44 46 74 3.5","3.6":0.032934},F:{"36":0.065868,"57":0.005489,"64":0.082335,_:"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 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.005489},E:{"4":0,"8":0.005489,"11":0.076846,"12":0.060379,"13":1.311871,_:"0 5 6 7 9 10 3.1 3.2 6.1 7.1","5.1":2.618253,"9.1":0.137225,"10.1":0.049401,"11.1":0.115269,"12.1":0.32934},G:{"8":0.00046241372411724,"3.2":0.00046241372411724,"4.0-4.1":0.00092482744823447,"4.2-4.3":0,"5.0-5.1":0.0027744823447034,"6.0-6.1":0.0013872411723517,"7.0-7.1":0.0036993097929379,"8.1-8.4":0.0069362058617585,"9.0-9.2":0.0060113784135241,"9.3":0.057339301790537,"10.0-10.2":0.018034135240572,"10.3":0.063350680204061,"11.0-11.2":0.050865509652896,"11.3-11.4":0.086471366409923,"12.0-12.1":0.11652825847754,"12.2-12.4":0.69639506852056,"13.0-13.1":0.3218399519856,"13.2":0.13548722116635,"13.3":3.0537802340702},I:{"3":0.00042188405797101,"4":0.0042188405797101,_:"76","2.1":0,"2.2":0.001265652173913,"2.3":0.00042188405797101,"4.1":0.0071720289855072,"4.2-4.3":0.18647275362319,"4.4":0,"4.4.3-4.4.4":0.12023695652174},B:{"14":0.010978,"15":0.010978,"16":0.060379,"17":0.082335,"18":0.719059,_:"12 13 79"},A:{"6":0.017088396226415,"7":0.017088396226415,"8":0.056961320754717,"9":0.051265188679245,"10":0.017088396226415,"11":0.44429830188679,_:"5.5"},P:{"4":0.23806357142857,"5.0-5.4":0.020701180124224,"6.2-6.4":0.010350590062112,"7.2-7.4":0.051752950310559,"8.2":0.020701180124224,"9.2":0.27946593167702,"10.1":2.6601016459627},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.0451},J:{"7":0,"10":0.01804},R:{_:"0"},M:{"0":0.15785},O:{"0":2.11519},Q:{"1.2":0.01353},S:{_:"2.5"},H:{"0":0.63619671821306},L:{"0":34.391874}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/ME.js b/assets/node_modules/caniuse-lite/data/regions/ME.js
deleted file mode 100644
index 8d5ba97..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/ME.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.006636,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.003318,"34":0.006636,"35":0,"36":0,"37":0,"38":0.013272,"39":0,"40":0.003318,"41":0,"42":0,"43":0.003318,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.126084,"50":0.003318,"51":0,"52":0,"53":0.029862,"54":0.006636,"55":0.003318,"56":0.003318,"57":0.003318,"58":0.01659,"59":0.003318,"60":0.003318,"61":0.04977,"62":0.003318,"63":0.013272,"64":0,"65":0.003318,"66":0.009954,"67":0.003318,"68":0.003318,"69":0.006636,"70":0.023226,"71":0.01659,"72":0.009954,"73":0.053088,"74":0.026544,"75":0.029862,"76":0.029862,"77":0.079632,"78":0.096222,"79":6.543096,"80":0.009954,"81":0.006636,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.003318,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.003318,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.003318,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.003318,"49":0.003318,"50":0,"51":0,"52":0.079632,"53":0,"54":0,"55":0,"56":0.003318,"57":0,"58":0,"59":0,"60":0.003318,"61":0,"62":0.003318,"63":0.009954,"64":0,"65":0,"66":0.009954,"67":0.013272,"68":0.059724,"69":0.006636,"70":0.013272,"71":0.218988,"72":0.706734,"73":0.013272,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.006636,"32":0,"33":0,"34":0,"35":0,"36":0.009954,"37":0,"38":0,"39":0,"40":0.009954,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0.003318,"63":0.003318,"64":0.006636,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.003318,"10":0.009954,"11":0.003318,"12":0.006636,"13":0.205716,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0.003318,"11.1":0.01659,"12.1":0.039816},G:{"8":0.001037066119836,"3.2":0.001037066119836,"4.0-4.1":0.0020741322396719,"4.2-4.3":0,"5.0-5.1":0.0062223967190157,"6.0-6.1":0.0031111983595079,"7.0-7.1":0.0082965289586876,"8.1-8.4":0.015555991797539,"9.0-9.2":0.013481859557867,"9.3":0.12859619885966,"10.0-10.2":0.040445578673602,"10.3":0.14207805841753,"11.0-11.2":0.11407727318195,"11.3-11.4":0.19393136440932,"12.0-12.1":0.26134066219866,"12.2-12.4":1.5618215764729,"13.0-13.1":0.72179801940582,"13.2":0.30386037311193,"13.3":6.8487846553966},I:{"3":0.00018421080368906,"4":0.0018421080368906,_:"76","2.1":0,"2.2":0.00055263241106719,"2.3":0.00018421080368906,"4.1":0.0031315836627141,"4.2-4.3":0.081421175230567,"4.4":0,"4.4.3-4.4.4":0.052500079051383},B:{"12":0,"13":0.003318,"14":0,"15":0.019908,"16":0.003318,"17":0.019908,"18":0.136038,_:"79"},A:{"6":0,"7":0,"8":0.020619,"9":0,"10":0.0034365,"11":0.0721665,"5.5":0},P:{"4":0.37585979254457,"5.0-5.4":0,"6.2-6.4":0.060950236628849,"7.2-7.4":0.15237559157212,"8.2":0.081266982171799,"9.2":0.39617653808752,"10.1":5.1299782495948},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.026728},J:{"7":0,"10":0.006682},R:{_:"0"},M:{"0":0.126958},O:{"0":0.026728},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.24039126460481},L:{"0":69.909054}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MG.js b/assets/node_modules/caniuse-lite/data/regions/MG.js
deleted file mode 100644
index 92757db..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MG.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.005109,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.005109,"26":0,"27":0,"28":0,"29":0,"30":0.005109,"31":0,"32":0.010218,"33":0,"34":0.005109,"35":0.005109,"36":0.015327,"37":0,"38":0.005109,"39":0,"40":0.025545,"41":0,"42":0.005109,"43":0.020436,"44":0,"45":0,"46":0.005109,"47":0,"48":0.005109,"49":0.25545,"50":0.005109,"51":0.005109,"52":0,"53":0,"54":0,"55":0.045981,"56":0.015327,"57":0.005109,"58":0.015327,"59":0.005109,"60":0.010218,"61":0,"62":0.035763,"63":0.086853,"64":0.005109,"65":0.020436,"66":0.005109,"67":0.020436,"68":0.071526,"69":0.10218,"70":0.035763,"71":0.040872,"72":0.045981,"73":0.040872,"74":0.081744,"75":0.097071,"76":0.112398,"77":0.25545,"78":0.326976,"79":12.082785,"80":0.020436,"81":0.025545,"82":0},C:{"2":0,"3":0.010218,"4":0.005109,"5":0,"6":0.005109,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005109,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0.005109,"28":0.005109,"29":0,"30":0.005109,"31":0.005109,"32":0.010218,"33":0.005109,"34":0,"35":0,"36":0.030654,"37":0,"38":0.005109,"39":0.005109,"40":0.005109,"41":0.005109,"42":0.005109,"43":0.035763,"44":0.005109,"45":0.005109,"46":0.005109,"47":0.045981,"48":0.071526,"49":0.015327,"50":0.015327,"51":0.005109,"52":0.137943,"53":0.005109,"54":0.005109,"55":0.010218,"56":0.045981,"57":0.035763,"58":0.015327,"59":0.010218,"60":0.025545,"61":0.030654,"62":0.010218,"63":0.030654,"64":0.015327,"65":0.025545,"66":0.061308,"67":0.045981,"68":0.219687,"69":0.107289,"70":0.15327,"71":1.287468,"72":3.826641,"73":0.076635,"74":0,"3.5":0.005109,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0.005109,"17":0.005109,"18":0.010218,"19":0.005109,"20":0.010218,"21":0,"22":0.005109,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005109,"37":0.010218,"38":0.005109,"39":0,"40":0,"41":0,"42":0,"43":0.005109,"44":0,"45":0.005109,"46":0.025545,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.05109,"54":0,"55":0.005109,"56":0.132834,"57":0.005109,"58":0.005109,"60":0,"62":0.005109,"63":0.010218,"64":0.066417,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.10218},E:{"4":0,"5":0,"6":0.005109,"7":0.010218,"8":0.005109,"9":0,"10":0.010218,"11":0.066417,"12":0.030654,"13":0.623298,_:"0","3.1":0,"3.2":0,"5.1":0.005109,"6.1":0,"7.1":0,"9.1":0.005109,"10.1":0.010218,"11.1":0.045981,"12.1":0.091962},G:{"8":0.0003346711013304,"3.2":0.0003346711013304,"4.0-4.1":0.0006693422026608,"4.2-4.3":0,"5.0-5.1":0.0020080266079824,"6.0-6.1":0.0010040133039912,"7.0-7.1":0.0026773688106432,"8.1-8.4":0.005020066519956,"9.0-9.2":0.0043507243172952,"9.3":0.041499216564969,"10.0-10.2":0.013052172951886,"10.3":0.045849940882265,"11.0-11.2":0.036813821146344,"11.3-11.4":0.062583495948785,"12.0-12.1":0.084337117535261,"12.2-12.4":0.50401467860358,"13.0-13.1":0.23293108652596,"13.2":0.098058632689807,"13.3":2.210167953186},I:{"3":0.002351023715415,"4":0.02351023715415,_:"76","2.1":0,"2.2":0.0070530711462451,"2.3":0.002351023715415,"4.1":0.039967403162055,"4.2-4.3":1.0391524822134,"4.4":0,"4.4.3-4.4.4":0.67004175889328},B:{"12":0.010218,"13":0.025545,"14":0.040872,"15":0.040872,"16":0.015327,"17":0.061308,"18":0.669279,_:"79"},A:{"6":0,"7":0,"8":0.24215794067797,"9":0.0051522966101695,"10":0.010304593220339,"11":0.35035616949153,"5.5":0},P:{"4":0.1540665,"5.0-5.4":0.0205422,"6.2-6.4":0.0102711,"7.2-7.4":0.0410844,"8.2":0.0205422,"9.2":0.0821688,"10.1":0.6676215},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.022358857142857,"11":0.21240914285714},J:{"7":0,"10":0.029346},R:{_:"0"},M:{"0":0.19564},O:{"0":6.392537},Q:{"1.2":0.102711},S:{"2.5":0.156512},H:{"0":21.675290070447},L:{"0":21.76683}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MH.js b/assets/node_modules/caniuse-lite/data/regions/MH.js
deleted file mode 100644
index 9da195e..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MH.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.13676,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.00526,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.2367,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.01052,"59":0,"60":0,"61":0,"62":0,"63":0.48918,"64":0,"65":0.00526,"66":0,"67":0.01052,"68":0.00526,"69":0.0526,"70":0,"71":0,"72":0.02104,"73":0.18936,"74":0.0263,"75":0.00526,"76":0.09468,"77":0.01578,"78":0.48918,"79":15.78526,"80":0.00526,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0.00526,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.00526,"53":0,"54":0,"55":0,"56":0,"57":0.00526,"58":0,"59":0,"60":0,"61":0.00526,"62":0,"63":0,"64":0.01052,"65":0,"66":0.00526,"67":0.01052,"68":0.09468,"69":0.01052,"70":0.02104,"71":0.41554,"72":1.22032,"73":0.01578,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.00526,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0.7627,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.04208,"10.1":0.00526,"11.1":0.0263,"12.1":0.22618},G:{"8":0.0035814264279284,"3.2":0.0035814264279284,"4.0-4.1":0.0071628528558568,"4.2-4.3":0,"5.0-5.1":0.02148855856757,"6.0-6.1":0.010744279283785,"7.0-7.1":0.028651411423427,"8.1-8.4":0.053721396418926,"9.0-9.2":0.046558543563069,"9.3":0.44409687706312,"10.0-10.2":0.13967563068921,"10.3":0.49065542062619,"11.0-11.2":0.39395690707212,"11.3-11.4":0.66972674202261,"12.0-12.1":0.90251945983795,"12.2-12.4":5.3936282004601,"13.0-13.1":2.4926727938382,"13.2":1.049357943383,"13.3":23.651740130039},I:{"3":0.0010605533596838,"4":0.010605533596838,_:"76","2.1":0,"2.2":0.0031816600790514,"2.3":0.0010605533596838,"4.1":0.018029407114625,"4.2-4.3":0.46876458498024,"4.4":0,"4.4.3-4.4.4":0.30225770750988},B:{"12":0.02104,"13":0,"14":0,"15":0,"16":0.00526,"17":0.1578,"18":0.7627,_:"79"},A:{"6":0,"7":0,"8":0.01578,"9":0,"10":0.01052,"11":0.31034,"5.5":0},P:{"4":0.062555102040816,"5.0-5.4":0.012511020408163,"6.2-6.4":0.025022040816327,"7.2-7.4":0.087577142857143,"8.2":0,"9.2":0.21268734693878,"10.1":1.2761240816327},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.03792},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.1896},O:{"0":1.88652},Q:{"1.2":0.11376},S:{"2.5":0},H:{"0":0.098725567010309},L:{"0":35.29378}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MK.js b/assets/node_modules/caniuse-lite/data/regions/MK.js
deleted file mode 100644
index cf68452..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MK.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.00545,"27":0,"28":0,"29":0,"30":0,"31":0.04905,"32":0,"33":0,"34":0.00545,"35":0,"36":0.00545,"37":0,"38":0.01635,"39":0.00545,"40":0,"41":0.00545,"42":0,"43":0.0109,"44":0,"45":0,"46":0,"47":0.00545,"48":0.02725,"49":0.5668,"50":0.0109,"51":0.00545,"52":0.00545,"53":0.0218,"54":0.00545,"55":0.0109,"56":0.01635,"57":0.0109,"58":0.0218,"59":0.00545,"60":0.00545,"61":0.0654,"62":0.05995,"63":0.0654,"64":0.0218,"65":0.0109,"66":0.00545,"67":0.0218,"68":0.02725,"69":0.0654,"70":0.5341,"71":0.56135,"72":0.48505,"73":0.28885,"74":0.5886,"75":1.0246,"76":0.09265,"77":0.1417,"78":0.21255,"79":17.53265,"80":0.02725,"81":0.0218,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0.00545,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.00545,"39":0,"40":0,"41":0,"42":0,"43":0.00545,"44":0,"45":0.03815,"46":0,"47":0.00545,"48":0.00545,"49":0.0109,"50":0.00545,"51":0.0327,"52":0.15805,"53":0,"54":0.00545,"55":0.03815,"56":0.0109,"57":0.00545,"58":0,"59":0,"60":0.13625,"61":0,"62":0.00545,"63":0.04905,"64":0.02725,"65":0.0654,"66":0.0654,"67":0.2616,"68":0.3815,"69":0.04905,"70":0.0109,"71":0.55045,"72":1.4061,"73":0.02725,"74":0,"3.5":0,"3.6":0.00545},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.0109,"31":0.01635,"32":0,"33":0,"34":0,"35":0,"36":0.0109,"37":0.00545,"38":0,"39":0,"40":0.0109,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.0218,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.0218,"57":0.0327,"58":0.0654,"60":0,"62":0.03815,"63":0,"64":0.01635,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.00545,"10":0.00545,"11":0.00545,"12":0.0436,"13":0.4142,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0.00545,"11.1":0.0545,"12.1":0.2616},G:{"8":0.000927833350005,"3.2":0.000927833350005,"4.0-4.1":0.00185566670001,"4.2-4.3":0,"5.0-5.1":0.00556700010003,"6.0-6.1":0.002783500050015,"7.0-7.1":0.00742266680004,"8.1-8.4":0.013917500250075,"9.0-9.2":0.012061833550065,"9.3":0.11505133540062,"10.0-10.2":0.036185500650195,"10.3":0.12711316895069,"11.0-11.2":0.10206166850055,"11.3-11.4":0.17350483645094,"12.0-12.1":0.23381400420126,"12.2-12.4":1.3973170251075,"13.0-13.1":0.64577201160348,"13.2":0.27185517155147,"13.3":6.127411443433},I:{"3":0.00046837944664032,"4":0.0046837944664032,_:"76","2.1":0,"2.2":0.0014051383399209,"2.3":0.00046837944664032,"4.1":0.0079624505928854,"4.2-4.3":0.20702371541502,"4.4":0,"4.4.3-4.4.4":0.13348814229249},B:{"12":0,"13":0.00545,"14":0.00545,"15":0.0218,"16":0.00545,"17":0.12535,"18":0.4905,_:"79"},A:{"6":0,"7":0.00545,"8":0.03815,"9":0,"10":0.0109,"11":0.29975,"5.5":0},P:{"4":0.12142093862816,"5.0-5.4":0.010118411552347,"6.2-6.4":0.020236823104693,"7.2-7.4":0.070828880866426,"8.2":0.03035523465704,"9.2":0.19224981949458,"10.1":2.2564057761733},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.04095},J:{"7":0,"10":0.00455},R:{_:"0"},M:{"0":0.10465},O:{"0":0.0364},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.14645996563574},L:{"0":56.32145}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/ML.js b/assets/node_modules/caniuse-lite/data/regions/ML.js
deleted file mode 100644
index 2f87a34..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/ML.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.002667,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.02667,"31":0,"32":0.010668,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.002667,"39":0,"40":0.002667,"41":0,"42":0,"43":0.008001,"44":0,"45":0,"46":0,"47":0,"48":0.002667,"49":0.021336,"50":0.002667,"51":0,"52":0,"53":0,"54":0,"55":0.005334,"56":0,"57":0,"58":0,"59":0,"60":0.002667,"61":0,"62":0,"63":0.024003,"64":0.002667,"65":0.002667,"66":0,"67":0.005334,"68":0.002667,"69":0.029337,"70":0.005334,"71":0.010668,"72":0.005334,"73":0.002667,"74":0.013335,"75":0.010668,"76":0.024003,"77":0.024003,"78":0.061341,"79":2.715006,"80":0.005334,"81":0.008001,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.005334,"30":0,"31":0,"32":0.005334,"33":0,"34":0.002667,"35":0.005334,"36":0,"37":0.002667,"38":0.002667,"39":0,"40":0.002667,"41":0,"42":0.002667,"43":0.002667,"44":0,"45":0,"46":0,"47":0.010668,"48":0.002667,"49":0.002667,"50":0,"51":0,"52":0.005334,"53":0,"54":0,"55":0,"56":0.016002,"57":0,"58":0.002667,"59":0,"60":0.010668,"61":0,"62":0.002667,"63":0.002667,"64":0.005334,"65":0.002667,"66":0.002667,"67":0.010668,"68":0.034671,"69":0.008001,"70":0.024003,"71":0.437388,"72":1.088136,"73":0.010668,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0.002667,"16":0.002667,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0.008001,"24":0.002667,"25":0,"26":0,"27":0,"28":0.013335,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.010668,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.002667,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.005334,"54":0,"55":0,"56":0.002667,"57":0,"58":0.002667,"60":0.018669,"62":0,"63":0.002667,"64":0.005334,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.005334},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.008001,"11":0.008001,"12":0.016002,"13":0.232029,_:"0","3.1":0,"3.2":0,"5.1":0.378714,"6.1":0,"7.1":0,"9.1":0.018669,"10.1":0.056007,"11.1":0.050673,"12.1":0.098679},G:{"8":0.00054095838751625,"3.2":0.00054095838751625,"4.0-4.1":0.0010819167750325,"4.2-4.3":0,"5.0-5.1":0.0032457503250975,"6.0-6.1":0.0016228751625488,"7.0-7.1":0.00432766710013,"8.1-8.4":0.0081143758127438,"9.0-9.2":0.0070324590377113,"9.3":0.067078840052016,"10.0-10.2":0.021097377113134,"10.3":0.074111299089727,"11.0-11.2":0.059505422626788,"11.3-11.4":0.10115921846554,"12.0-12.1":0.1363215136541,"12.2-12.4":0.81468333159948,"13.0-13.1":0.37650703771131,"13.2":0.15850080754226,"13.3":3.5724891911573},I:{"3":0.00069477338603426,"4":0.0069477338603426,_:"76","2.1":0,"2.2":0.0020843201581028,"2.3":0.00069477338603426,"4.1":0.011811147562582,"4.2-4.3":0.30708983662714,"4.4":0,"4.4.3-4.4.4":0.19801041501976},B:{"12":0.013335,"13":0.045339,"14":0.008001,"15":0.008001,"16":0.034671,"17":0.048006,"18":0.269367,_:"79"},A:{"6":0,"7":0,"8":0.0146685,"9":0,"10":0.0557403,"11":0.1642872,"5.5":0},P:{"4":0.54207244660194,"5.0-5.4":0.070268650485437,"6.2-6.4":0.09034540776699,"7.2-7.4":0.29111298058252,"8.2":0.050191893203883,"9.2":0.62237947572816,"10.1":1.4154113883495},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.070580125,"11":0.171408875},J:{"7":0,"10":0.058664},R:{_:"0"},M:{"0":0.117328},O:{"0":2.427223},Q:{"1.2":0.051331},S:{"2.5":0.014666},H:{"0":6.0051852147766},L:{"0":71.470043}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MM.js b/assets/node_modules/caniuse-lite/data/regions/MM.js
deleted file mode 100644
index 717d96a..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MM.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.00467,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0.02802,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.00934,"30":0,"31":0.03269,"32":0.02335,"33":0.03736,"34":0,"35":0,"36":0.00467,"37":0.04203,"38":0.00467,"39":0,"40":0.00934,"41":0,"42":0.01401,"43":0,"44":0,"45":0,"46":0.00467,"47":0,"48":0.00467,"49":0.01401,"50":0,"51":0,"52":0,"53":0.01401,"54":0,"55":0.00467,"56":0,"57":0.00467,"58":0.01401,"59":0,"60":0.00467,"61":0.01401,"62":0.01868,"63":0.0934,"64":0.00467,"65":0.00467,"66":0.02335,"67":0.00934,"68":0.00467,"69":0.01401,"70":0.01401,"71":0.08406,"72":0.03736,"73":0.0467,"74":0.08406,"75":0.05604,"76":0.17279,"77":0.07939,"78":0.1401,"79":11.7684,"80":0.01868,"81":0.00934,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.00934,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0.00467,"28":0,"29":0.00467,"30":0.00467,"31":0,"32":0,"33":0.00467,"34":0.00467,"35":0,"36":0.00467,"37":0.00467,"38":0.00467,"39":0.00467,"40":0.00467,"41":0.00934,"42":0.01401,"43":0.01868,"44":0.00467,"45":0.00467,"46":0,"47":0.02802,"48":0.01868,"49":0.00934,"50":0.01401,"51":0,"52":0.01868,"53":0,"54":0.00467,"55":0.00467,"56":0.06538,"57":0.05604,"58":0.00934,"59":0.00934,"60":0.07939,"61":0.02335,"62":0.03736,"63":0.00934,"64":0.01401,"65":0.05137,"66":0.06538,"67":0.07005,"68":0.1868,"69":0.11675,"70":0.07939,"71":1.22821,"72":3.35773,"73":0.49969,"74":0.00934,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.00467,"35":0,"36":0,"37":0.0467,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.00467,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0.00467,"64":0.01868,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.00467},E:{"4":0,"5":0,"6":0,"7":0,"8":0.00467,"9":0,"10":0.00467,"11":0.04203,"12":0.08406,"13":0.82192,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.00934,"10.1":0.0467,"11.1":0.07472,"12.1":0.18213},G:{"8":0.00081358607582275,"3.2":0.00081358607582275,"4.0-4.1":0.0016271721516455,"4.2-4.3":0,"5.0-5.1":0.0048815164549365,"6.0-6.1":0.0024407582274682,"7.0-7.1":0.006508688606582,"8.1-8.4":0.012203791137341,"9.0-9.2":0.010576618985696,"9.3":0.10088467340202,"10.0-10.2":0.031729856957087,"10.3":0.11146129238772,"11.0-11.2":0.089494468340502,"11.3-11.4":0.15214059617885,"12.0-12.1":0.20502369110733,"12.2-12.4":1.2252606301891,"13.0-13.1":0.56625590877263,"13.2":0.23838072021606,"13.3":5.3729224447334},I:{"3":0.0020374835309618,"4":0.020374835309618,_:"76","2.1":0,"2.2":0.0061124505928854,"2.3":0.0020374835309618,"4.1":0.03463722002635,"4.2-4.3":0.90056772068511,"4.4":0,"4.4.3-4.4.4":0.58068280632411},B:{"12":0.00934,"13":0.00467,"14":0.00467,"15":0.00467,"16":0.01868,"17":0.05137,"18":0.41096,_:"79"},A:{"6":0,"7":0,"8":0.019569523809524,"9":0,"10":0.004892380952381,"11":0.078278095238095,"5.5":0},P:{"4":0.3831178313253,"5.0-5.4":0.020164096385542,"6.2-6.4":0.030246144578313,"7.2-7.4":0.080656385542169,"8.2":0.040328192771084,"9.2":0.18147686746988,"10.1":0.89730228915663},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.33579},O:{"0":2.10535},Q:{"1.2":0.06396},S:{"2.5":0},H:{"0":0.69636175257732},L:{"0":61.65765}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MN.js b/assets/node_modules/caniuse-lite/data/regions/MN.js
deleted file mode 100644
index ecd1073..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MN.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0.004161,"28":0,"29":0,"30":0.004161,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.004161,"37":0,"38":0,"39":0,"40":0.004161,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.058254,"50":0.004161,"51":0.004161,"52":0.004161,"53":0.004161,"54":0.004161,"55":0.004161,"56":0.004161,"57":0.004161,"58":0.008322,"59":0.004161,"60":0.008322,"61":0,"62":0.004161,"63":0.04161,"64":0,"65":0.016644,"66":0.004161,"67":0.008322,"68":0.008322,"69":0.108186,"70":0.016644,"71":0.024966,"72":0.029127,"73":0.020805,"74":0.087381,"75":0.058254,"76":0.12483,"77":0.170601,"78":0.162279,"79":13.327683,"80":0.024966,"81":0.012483,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.004161,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.004161,"48":0,"49":0,"50":0,"51":0,"52":0.012483,"53":0,"54":0,"55":0,"56":0.004161,"57":0,"58":0,"59":0,"60":0.008322,"61":0,"62":0,"63":0,"64":0.004161,"65":0,"66":0,"67":0.004161,"68":0.058254,"69":0.008322,"70":0.012483,"71":0.312075,"72":0.765624,"73":0.033288,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.004161,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0.008322,"64":0.066576,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.004161,"10":0,"11":0,"12":0.020805,"13":0.199728,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.004161,"10.1":0.008322,"11.1":0.012483,"12.1":0.066576},G:{"8":0.0016694054216265,"3.2":0.0016694054216265,"4.0-4.1":0.003338810843253,"4.2-4.3":0,"5.0-5.1":0.010016432529759,"6.0-6.1":0.0050082162648795,"7.0-7.1":0.013355243373012,"8.1-8.4":0.025041081324397,"9.0-9.2":0.021702270481144,"9.3":0.20700627228168,"10.0-10.2":0.065106811443433,"10.3":0.22870854276283,"11.0-11.2":0.18363459637891,"11.3-11.4":0.31217881384415,"12.0-12.1":0.42069016624987,"12.2-12.4":2.5141245649695,"13.0-13.1":1.161906173452,"13.2":0.48913578853656,"13.3":11.024753404421},I:{"3":0.00037659947299078,"4":0.0037659947299078,_:"76","2.1":0,"2.2":0.0011297984189723,"2.3":0.00037659947299078,"4.1":0.0064021910408432,"4.2-4.3":0.16645696706192,"4.4":0,"4.4.3-4.4.4":0.10733084980237},B:{"12":0.004161,"13":0,"14":0.004161,"15":0.004161,"16":0.008322,"17":0.016644,"18":0.245499,_:"79"},A:{"6":0,"7":0,"8":0.0096023076923077,"9":0,"10":0,"11":0.052812692307692,"5.5":0},P:{"4":0.35355707988981,"5.0-5.4":0.10101630853994,"6.2-6.4":0.050508154269972,"7.2-7.4":0.11111793939394,"8.2":0.050508154269972,"9.2":0.27274403305785,"10.1":2.7072370688705},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0.005839},R:{_:"0"},M:{"0":0.093424},O:{"0":0.140136},Q:{"1.2":0.029195},S:{"2.5":0},H:{"0":0.07739183161512},L:{"0":60.361501}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MO.js b/assets/node_modules/caniuse-lite/data/regions/MO.js
deleted file mode 100644
index 38a1f5d..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MO.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.021808,"27":0,"28":0,"29":0,"30":0.005452,"31":0,"32":0,"33":0,"34":0.02726,"35":0,"36":0,"37":0,"38":0.043616,"39":0,"40":0.05452,"41":0,"42":0,"43":0,"44":0,"45":0.016356,"46":0,"47":0,"48":0,"49":0.169012,"50":0,"51":0.010904,"52":0.005452,"53":0.049068,"54":0.010904,"55":0.049068,"56":0.038164,"57":0.016356,"58":0.02726,"59":0.010904,"60":0.010904,"61":0.010904,"62":0.032712,"63":0.610624,"64":0.05452,"65":0.038164,"66":0.032712,"67":0.070876,"68":0.065424,"69":0.343476,"70":0.103588,"71":0.147204,"72":0.070876,"73":0.387092,"74":0.305312,"75":0.261696,"76":0.223532,"77":0.305312,"78":0.883224,"79":15.162012,"80":0.05452,"81":0.010904,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.043616,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.005452,"44":0,"45":0,"46":0,"47":0,"48":0.005452,"49":0,"50":0,"51":0,"52":0.010904,"53":0,"54":0,"55":0,"56":0.010904,"57":0,"58":0,"59":0,"60":0.010904,"61":0,"62":0,"63":0.005452,"64":0.005452,"65":0.005452,"66":0.005452,"67":0.010904,"68":0.070876,"69":0.005452,"70":0.059972,"71":0.370736,"72":0.719664,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.021808,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.016356,"9":0.010904,"10":0.016356,"11":0.158108,"12":0.21808,"13":2.94408,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.05452,"10.1":0.10904,"11.1":0.152656,"12.1":0.51794},G:{"8":0.0042259405821747,"3.2":0.0042259405821747,"4.0-4.1":0.0084518811643493,"4.2-4.3":0,"5.0-5.1":0.025355643493048,"6.0-6.1":0.012677821746524,"7.0-7.1":0.033807524657397,"8.1-8.4":0.06338910873262,"9.0-9.2":0.05493722756827,"9.3":0.52401663218966,"10.0-10.2":0.16481168270481,"10.3":0.57895385975793,"11.0-11.2":0.46485346403921,"11.3-11.4":0.79025088886666,"12.0-12.1":1.064937026708,"12.2-12.4":6.364266516755,"13.0-13.1":2.9412546451936,"13.2":1.2382005905772,"13.3":27.908111604681},I:{"3":0.00070077997364954,"4":0.0070077997364954,_:"76","2.1":0,"2.2":0.0021023399209486,"2.3":0.00070077997364954,"4.1":0.011913259552042,"4.2-4.3":0.3097447483531,"4.4":0,"4.4.3-4.4.4":0.19972229249012},B:{"12":0,"13":0,"14":0,"15":0.010904,"16":0.038164,"17":0.076328,"18":0.725116,_:"79"},A:{"6":0,"7":0,"8":0.06237088,"9":0,"10":0.03118544,"11":0.68607968,"5.5":0},P:{"4":0.31299743283582,"5.0-5.4":0.010793014925373,"6.2-6.4":0,"7.2-7.4":0.010793014925373,"8.2":0.021586029850746,"9.2":0.12951617910448,"10.1":1.4786430447761},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.200112},O:{"0":0.732228},Q:{"1.2":0.400224},S:{"2.5":0},H:{"0":0.047363278350515},L:{"0":24.482068}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MP.js b/assets/node_modules/caniuse-lite/data/regions/MP.js
deleted file mode 100644
index c54d415..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MP.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.06375,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.102,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0.146625,"62":0,"63":0,"64":0,"65":0,"66":0.01275,"67":0.044625,"68":0,"69":0.006375,"70":0,"71":0,"72":0.006375,"73":0,"74":0.01275,"75":0.08925,"76":0.031875,"77":0.06375,"78":0.376125,"79":24.174,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0.006375,"20":0,"21":0.121125,"22":0.01275,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.146625,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0.133875,"69":0.006375,"70":0.01275,"71":0.4335,"72":1.51725,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.01275,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.0765,"12":0.044625,"13":7.324875,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.0255,"10.1":0.03825,"11.1":0.248625,"12.1":0.24225},G:{"8":0.0016274882464739,"3.2":0.0016274882464739,"4.0-4.1":0.0032549764929479,"4.2-4.3":0,"5.0-5.1":0.0097649294788437,"6.0-6.1":0.0048824647394218,"7.0-7.1":0.013019905971792,"8.1-8.4":0.024412323697109,"9.0-9.2":0.021157347204161,"9.3":0.20180854256277,"10.0-10.2":0.063472041612484,"10.3":0.22296588976693,"11.0-11.2":0.17902370711213,"11.3-11.4":0.30434030209063,"12.0-12.1":0.41012703811143,"12.2-12.4":2.4509972991898,"13.0-13.1":1.1327318195459,"13.2":0.47685405621687,"13.3":10.747932379714},I:{"3":0.00020158102766798,"4":0.0020158102766798,_:"76","2.1":0,"2.2":0.00060474308300395,"2.3":0.00020158102766798,"4.1":0.0034268774703557,"4.2-4.3":0.089098814229249,"4.4":0,"4.4.3-4.4.4":0.057450592885375},B:{"12":0.006375,"13":0,"14":0.019125,"15":0.01275,"16":0,"17":0.08925,"18":2.856,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.631125,"5.5":0},P:{"4":0.19506879194631,"5.0-5.4":0.05133389261745,"6.2-6.4":0.28746979865772,"7.2-7.4":0.43120469798658,"8.2":0,"9.2":0.06160067114094,"10.1":1.7145520134228},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.42775},O:{"0":0.1305},Q:{"1.2":0.00725},S:{"2.5":0},H:{"0":0.037751073883162},L:{"0":37.922625}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MQ.js b/assets/node_modules/caniuse-lite/data/regions/MQ.js
deleted file mode 100644
index 36fc6ba..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MQ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.004767,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.252651,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.028602,"56":0,"57":0,"58":0.004767,"59":0,"60":0,"61":0,"62":0,"63":0.14301,"64":0,"65":0.004767,"66":0,"67":0.004767,"68":0.004767,"69":0.004767,"70":0.019068,"71":0.014301,"72":0.019068,"73":0.061971,"74":0.014301,"75":0.028602,"76":0.104874,"77":0.023835,"78":0.295554,"79":11.021304,"80":0.004767,"81":0.028602,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.004767,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.004767,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.028602,"49":0,"50":0.009534,"51":0,"52":0.019068,"53":0,"54":0.004767,"55":0,"56":0.019068,"57":0,"58":0,"59":0,"60":0.014301,"61":0.004767,"62":0,"63":0,"64":0.009534,"65":0,"66":0.009534,"67":0.057204,"68":0.176379,"69":0.014301,"70":0.028602,"71":0.76272,"72":1.959237,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.014301,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0.042903,"8":0,"9":0.004767,"10":0,"11":0.004767,"12":0.195447,"13":2.24049,_:"0","3.1":0,"3.2":0,"5.1":0.04767,"6.1":0,"7.1":0,"9.1":0.019068,"10.1":0.033369,"11.1":0.219282,"12.1":0.562506},G:{"8":0.0016088896669001,"3.2":0.0016088896669001,"4.0-4.1":0.0032177793338001,"4.2-4.3":0,"5.0-5.1":0.0096533380014004,"6.0-6.1":0.0048266690007002,"7.0-7.1":0.012871117335201,"8.1-8.4":0.024133345003501,"9.0-9.2":0.020915565669701,"9.3":0.19950231869561,"10.0-10.2":0.062746697009103,"10.3":0.22041788436531,"11.0-11.2":0.17697786335901,"11.3-11.4":0.30086236771031,"12.0-12.1":0.40544019605882,"12.2-12.4":2.4229878383515,"13.0-13.1":1.1197872081624,"13.2":0.47140467240172,"13.3":10.625107360208},I:{"3":0.00035771409749671,"4":0.0035771409749671,_:"76","2.1":0,"2.2":0.0010731422924901,"2.3":0.00035771409749671,"4.1":0.006081139657444,"4.2-4.3":0.15810963109354,"4.4":0,"4.4.3-4.4.4":0.10194851778656},B:{"12":0,"13":0.004767,"14":0.009534,"15":0.028602,"16":0.04767,"17":0.176379,"18":1.768557,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.424263,"5.5":0},P:{"4":0.362793424,"5.0-5.4":0.0207310528,"6.2-6.4":0.0310965792,"7.2-7.4":0.103655264,"8.2":0.0621931584,"9.2":1.347518432,"10.1":4.4986384576},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.026165},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.26165},O:{"0":0.015699},Q:{"1.2":0.010466},S:{"2.5":0.010466},H:{"0":0.1436737233677},L:{"0":51.836601}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MR.js b/assets/node_modules/caniuse-lite/data/regions/MR.js
deleted file mode 100644
index 3247627..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MR.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0.00707,"5":0,"6":0,"7":0,"8":0,"9":0.003535,"10":0,"11":0.003535,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.00707,"26":0,"27":0,"28":0,"29":0.003535,"30":0,"31":0.003535,"32":0,"33":0.01414,"34":0,"35":0,"36":0.01414,"37":0.003535,"38":0,"39":0.00707,"40":0.017675,"41":0,"42":0,"43":0.07777,"44":0.003535,"45":0.003535,"46":0.003535,"47":0,"48":0.003535,"49":0.505505,"50":0.003535,"51":0,"52":0,"53":0.003535,"54":0,"55":0.003535,"56":0.003535,"57":0,"58":0.003535,"59":0,"60":0.003535,"61":0,"62":0.003535,"63":0.03535,"64":0.00707,"65":0.003535,"66":0,"67":0.003535,"68":0,"69":0.095445,"70":0.024745,"71":0.00707,"72":0.02828,"73":0.04242,"74":0.010605,"75":0.04949,"76":0.045955,"77":0.060095,"78":0.0707,"79":3.771845,"80":0.003535,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.003535,"35":0.003535,"36":0.003535,"37":0,"38":0.003535,"39":0,"40":0,"41":0.01414,"42":0,"43":0.003535,"44":0,"45":0.00707,"46":0,"47":0.010605,"48":0.00707,"49":0,"50":0,"51":0,"52":0.02121,"53":0,"54":0,"55":0.01414,"56":0.003535,"57":0,"58":0,"59":0,"60":0.031815,"61":0,"62":0,"63":0,"64":0.00707,"65":0,"66":0,"67":0,"68":0.12019,"69":0.003535,"70":0.04242,"71":0.286335,"72":0.604485,"73":0.010605,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0.00707,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0.003535,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.02121,"46":0.00707,"47":0.003535,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0.003535,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.003535,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.04949},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.01414,"12":0.038885,"13":0.09898,_:"0","3.1":0,"3.2":0,"5.1":5.28836,"6.1":0,"7.1":0,"9.1":0,"10.1":0.003535,"11.1":0.010605,"12.1":0.024745},G:{"8":0.00070455286585976,"3.2":0.00070455286585976,"4.0-4.1":0.0014091057317195,"4.2-4.3":0,"5.0-5.1":0.0042273171951585,"6.0-6.1":0.0021136585975793,"7.0-7.1":0.0056364229268781,"8.1-8.4":0.010568292987896,"9.0-9.2":0.0091591872561769,"9.3":0.08736455536661,"10.0-10.2":0.027477561768531,"10.3":0.096523742622787,"11.0-11.2":0.077500815244573,"11.3-11.4":0.13175138591577,"12.0-12.1":0.17754732219666,"12.2-12.4":1.0610566159848,"13.0-13.1":0.49036879463839,"13.2":0.20643398969691,"13.3":4.6528671261378},I:{"3":0.00048987483530962,"4":0.0048987483530962,_:"76","2.1":0,"2.2":0.0014696245059289,"2.3":0.00048987483530962,"4.1":0.0083278722002635,"4.2-4.3":0.21652467720685,"4.4":0,"4.4.3-4.4.4":0.13961432806324},B:{"12":0.003535,"13":0.00707,"14":0.01414,"15":0.00707,"16":0.003535,"17":0.01414,"18":0.060095,_:"79"},A:{"6":0,"7":0,"8":0.025844777777778,"9":0.0036921111111111,"10":0.018460555555556,"11":0.11814755555556,"5.5":0},P:{"4":1.6991665252855,"5.0-5.4":0.10114086460033,"6.2-6.4":0.24273807504078,"7.2-7.4":1.1125495106036,"8.2":0.12136903752039,"9.2":0.94061004078303,"10.1":1.9621327732463},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.03879},J:{"7":0,"10":0.006465},R:{_:"0"},M:{"0":0.20688},O:{"0":0.898635},Q:{"1.2":0.02586},S:{"2.5":0},H:{"0":3.0113570103093},L:{"0":66.19607}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MS.js b/assets/node_modules/caniuse-lite/data/regions/MS.js
deleted file mode 100644
index fc3d36e..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MS.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.003478,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.024346,"49":0,"50":0.003478,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.010434,"57":0.003478,"58":0.003478,"59":0,"60":0,"61":0,"62":0.003478,"63":0.08695,"64":0,"65":0,"66":0,"67":0.006956,"68":0,"69":0.003478,"70":0.003478,"71":0.003478,"72":0.006956,"73":0,"74":0.003478,"75":0.006956,"76":0.08695,"77":0.010434,"78":0.125208,"79":5.046578,"80":0,"81":0,"82":0},C:{"2":0,"3":0.003478,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.024346,"22":0.003478,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0.010434,"67":0,"68":0.024346,"69":0,"70":0,"71":0.142598,"72":0.264328,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0.003478,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.013912,"13":1.87812,_:"0","3.1":0,"3.2":0,"5.1":0.003478,"6.1":0,"7.1":0,"9.1":0.003478,"10.1":0.010434,"11.1":0.079994,"12.1":0.142598},G:{"8":0.0015396474942483,"3.2":0.0015396474942483,"4.0-4.1":0.0030792949884965,"4.2-4.3":0,"5.0-5.1":0.0092378849654896,"6.0-6.1":0.0046189424827448,"7.0-7.1":0.012317179953986,"8.1-8.4":0.023094712413724,"9.0-9.2":0.020015417425228,"9.3":0.19091628928679,"10.0-10.2":0.060046252275683,"10.3":0.21093170671201,"11.0-11.2":0.16936122436731,"11.3-11.4":0.28791408142443,"12.0-12.1":0.38799116855057,"12.2-12.4":2.3187091263379,"13.0-13.1":1.0715946559968,"13.2":0.45111671581474,"13.3":10.167832052016},I:{"3":0.00068793148880105,"4":0.0068793148880105,_:"76","2.1":0,"2.2":0.0020637944664032,"2.3":0.00068793148880105,"4.1":0.011694835309618,"4.2-4.3":0.30406571805007,"4.4":0,"4.4.3-4.4.4":0.1960604743083},B:{"12":0,"13":0.031302,"14":0.003478,"15":0.006956,"16":0.045214,"17":0.020868,"18":0.525178,_:"79"},A:{"6":0.0075626279069767,"7":0.015125255813953,"8":0.060501023255814,"9":0.0075626279069767,"10":0.026469197674419,"11":0.53316526744186,"5.5":0},P:{"4":0.94469881458967,"5.0-5.4":0,"6.2-6.4":0.052483267477204,"7.2-7.4":0.64029586322188,"8.2":0.041986613981763,"9.2":0.50383936778116,"10.1":4.6080308844985},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.06522},J:{"7":0,"10":0.039132},R:{_:"0"},M:{"0":0.13044},O:{"0":0.123918},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.20376207216495},L:{"0":64.66573}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MT.js b/assets/node_modules/caniuse-lite/data/regions/MT.js
deleted file mode 100644
index 63bd646..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MT.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.006125,"37":0,"38":0.018375,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.0245,"49":0.888125,"50":0,"51":0,"52":0,"53":0.006125,"54":0,"55":0,"56":0.006125,"57":0.006125,"58":0.006125,"59":0,"60":0,"61":0.006125,"62":0.018375,"63":0.006125,"64":0.018375,"65":0.0245,"66":0.006125,"67":0.049,"68":0.03675,"69":0.091875,"70":0.1225,"71":0.0735,"72":0.091875,"73":0.03675,"74":0.08575,"75":0.13475,"76":0.104125,"77":0.1715,"78":0.60025,"79":25.333,"80":0.0245,"81":0.0245,"82":0},C:{"2":0,"3":0.006125,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.006125,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.018375,"49":0,"50":0,"51":0,"52":0.03675,"53":0,"54":0,"55":0.01225,"56":0.104125,"57":0,"58":0,"59":0,"60":0,"61":0.006125,"62":0,"63":0,"64":0.06125,"65":0.030625,"66":0.01225,"67":0.01225,"68":0.177625,"69":0.0245,"70":0.018375,"71":0.37975,"72":0.931,"73":0.006125,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.006125,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.030625,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.006125,"57":0,"58":0.03675,"60":0,"62":0.01225,"63":0,"64":0.049,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0.006125,"8":0,"9":0.030625,"10":0,"11":0.042875,"12":0.0735,"13":2.16825,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0.018375,"7.1":0,"9.1":0.030625,"10.1":0.098,"11.1":0.13475,"12.1":0.336875},G:{"8":0.0016231244373312,"3.2":0.0016231244373312,"4.0-4.1":0.0032462488746624,"4.2-4.3":0,"5.0-5.1":0.0097387466239872,"6.0-6.1":0.0048693733119936,"7.0-7.1":0.01298499549865,"8.1-8.4":0.024346866559968,"9.0-9.2":0.021100617685306,"9.3":0.20126743022907,"10.0-10.2":0.063301853055917,"10.3":0.22236804791437,"11.0-11.2":0.17854368810643,"11.3-11.4":0.30352426978093,"12.0-12.1":0.40902735820746,"12.2-12.4":2.4444254026208,"13.0-13.1":1.1296946083825,"13.2":0.47557546013804,"13.3":10.719113784135},I:{"3":0.00057707509881423,"4":0.0057707509881423,_:"76","2.1":0,"2.2":0.0017312252964427,"2.3":0.00057707509881423,"4.1":0.0098102766798419,"4.2-4.3":0.25506719367589,"4.4":0,"4.4.3-4.4.4":0.16446640316206},B:{"12":0,"13":0.006125,"14":0.006125,"15":0.0245,"16":0.030625,"17":0.20825,"18":1.50675,_:"79"},A:{"6":0.0065998062015504,"7":0.0065998062015504,"8":0.032999031007752,"9":0.0065998062015504,"10":0.019799418604651,"11":0.77877713178295,"5.5":0},P:{"4":0.10373697916667,"5.0-5.4":0,"6.2-6.4":0.010373697916667,"7.2-7.4":0.051868489583333,"8.2":0.010373697916667,"9.2":0.072615885416667,"10.1":2.6867877604167},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.0155},J:{"7":0,"10":0.003875},R:{_:"0"},M:{"0":0.06975},O:{"0":0.2945},Q:{"1.2":0.003875},S:{"2.5":0},H:{"0":0.15408118556701},L:{"0":41.237125}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MU.js b/assets/node_modules/caniuse-lite/data/regions/MU.js
deleted file mode 100644
index 89a1b4a..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MU.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.004194,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.004194,"27":0,"28":0,"29":0,"30":0,"31":0.012582,"32":0,"33":0,"34":0.004194,"35":0,"36":0.004194,"37":0,"38":0.02097,"39":0.008388,"40":0.008388,"41":0.004194,"42":0.004194,"43":0.008388,"44":0,"45":0,"46":0.004194,"47":0,"48":0.004194,"49":0.201312,"50":0.008388,"51":0.008388,"52":0,"53":0.016776,"54":0.004194,"55":0.008388,"56":0.004194,"57":0.004194,"58":0.008388,"59":0.004194,"60":0.004194,"61":0.109044,"62":0.008388,"63":0.016776,"64":0.004194,"65":0.012582,"66":0.004194,"67":0.012582,"68":0.004194,"69":0.08388,"70":0.029358,"71":0.016776,"72":0.016776,"73":0.016776,"74":0.046134,"75":0.033552,"76":0.06291,"77":0.067104,"78":0.247446,"79":10.157868,"80":0.025164,"81":0.025164,"82":0},C:{"2":0,"3":0,"4":0.008388,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.075492,"22":0.004194,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.004194,"35":0,"36":0.004194,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0.004194,"43":0,"44":0,"45":0.004194,"46":0,"47":0.004194,"48":0.025164,"49":0.004194,"50":0,"51":0.008388,"52":0.033552,"53":0.004194,"54":0.004194,"55":0.004194,"56":0.008388,"57":0.008388,"58":0.004194,"59":0.004194,"60":0.004194,"61":0,"62":0.004194,"63":0.004194,"64":0.004194,"65":0.004194,"66":0.012582,"67":0.008388,"68":0.142596,"69":0.029358,"70":0.016776,"71":0.478116,"72":1.115604,"73":0.037746,"74":0,"3.5":0,"3.6":0.004194},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.004194,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.004194,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.012582,"46":0.016776,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.004194,"57":0,"58":0.008388,"60":0.004194,"62":0,"63":0.004194,"64":0.008388,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.004194},E:{"4":0,"5":0,"6":0,"7":0,"8":0.04194,"9":0,"10":0.008388,"11":0.012582,"12":0.100656,"13":1.157544,_:"0","3.1":0,"3.2":0,"5.1":0.046134,"6.1":0,"7.1":0,"9.1":0.016776,"10.1":0.067104,"11.1":0.306162,"12.1":0.327132},G:{"8":0.00079042132639792,"3.2":0.00079042132639792,"4.0-4.1":0.0015808426527958,"4.2-4.3":0,"5.0-5.1":0.0047425279583875,"6.0-6.1":0.0023712639791938,"7.0-7.1":0.0063233706111834,"8.1-8.4":0.011856319895969,"9.0-9.2":0.010275477243173,"9.3":0.098012244473342,"10.0-10.2":0.030826431729519,"10.3":0.10828772171651,"11.0-11.2":0.086946345903771,"11.3-11.4":0.14780878803641,"12.0-12.1":0.19918617425228,"12.2-12.4":1.1903745175553,"13.0-13.1":0.55013324317295,"13.2":0.23159344863459,"13.3":5.2199424395319},I:{"3":0.00044158629776021,"4":0.0044158629776021,_:"76","2.1":0,"2.2":0.0013247588932806,"2.3":0.00044158629776021,"4.1":0.0075069670619236,"4.2-4.3":0.19518114361001,"4.4":0,"4.4.3-4.4.4":0.12585209486166},B:{"12":0.016776,"13":0.008388,"14":0.012582,"15":0.016776,"16":0.029358,"17":0.096462,"18":0.717174,_:"79"},A:{"6":0,"7":0,"8":0.012582,"9":0.008388,"10":0.008388,"11":0.37746,"5.5":0},P:{"4":0.42239138720539,"5.0-5.4":0.020604457912458,"6.2-6.4":0.051511144781145,"7.2-7.4":0.20604457912458,"8.2":0.041208915824916,"9.2":0.45329807407407,"10.1":4.8008386936027},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.05806},J:{"7":0,"10":0.005806},R:{_:"0"},M:{"0":0.272882},O:{"0":0.975408},Q:{"1.2":0.31933},S:{"2.5":0},H:{"0":1.1433231065292},L:{"0":61.655634}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MV.js b/assets/node_modules/caniuse-lite/data/regions/MV.js
deleted file mode 100644
index f0ff95a..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MV.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.003869,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.003869,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.015476,"48":0,"49":0.069642,"50":0,"51":0.003869,"52":0.003869,"53":0,"54":0.003869,"55":0.003869,"56":0.007738,"57":0.003869,"58":0.007738,"59":0.003869,"60":0.003869,"61":0.003869,"62":0.003869,"63":0.011607,"64":0.011607,"65":0.007738,"66":0,"67":0,"68":0.003869,"69":0.108332,"70":0.007738,"71":0.011607,"72":0.096725,"73":0.034821,"74":0.065773,"75":0.027083,"76":0.027083,"77":0.03869,"78":0.185712,"79":10.852545,"80":0.019345,"81":0.015476,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.023214,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0.003869,"45":0,"46":0,"47":0.003869,"48":0.003869,"49":0,"50":0.003869,"51":0.003869,"52":0.023214,"53":0.003869,"54":0.003869,"55":0.003869,"56":0.015476,"57":0.003869,"58":0.003869,"59":0.003869,"60":0.003869,"61":0,"62":0.003869,"63":0,"64":0.003869,"65":0.003869,"66":0.015476,"67":0.03869,"68":0.081249,"69":0.019345,"70":0.034821,"71":0.34821,"72":0.677075,"73":0.081249,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.007738,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.011607,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.003869,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.003869},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.003869,"10":0.003869,"11":0.003869,"12":0.030952,"13":0.607433,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.007738,"10.1":0.023214,"11.1":0.027083,"12.1":0.11607},G:{"8":0.0020899751925578,"3.2":0.0020899751925578,"4.0-4.1":0.0041799503851155,"4.2-4.3":0,"5.0-5.1":0.012539851155347,"6.0-6.1":0.0062699255776733,"7.0-7.1":0.016719801540462,"8.1-8.4":0.031349627888367,"9.0-9.2":0.027169677503251,"9.3":0.25915692387716,"10.0-10.2":0.081509032509753,"10.3":0.28632660138041,"11.0-11.2":0.22989727118135,"11.3-11.4":0.3908253610083,"12.0-12.1":0.52667374852456,"12.2-12.4":3.147502639992,"13.0-13.1":1.4546227340202,"13.2":0.61236273141943,"13.3":13.802196171651},I:{"3":0.00033534123847167,"4":0.0033534123847167,_:"76","2.1":0,"2.2":0.001006023715415,"2.3":0.00033534123847167,"4.1":0.0057008010540184,"4.2-4.3":0.14822082740448,"4.4":0,"4.4.3-4.4.4":0.095572252964427},B:{"12":0.007738,"13":0.003869,"14":0.007738,"15":0.019345,"16":0.050297,"17":0.042559,"18":0.247616,_:"79"},A:{"6":0,"7":0,"8":0.0039938064516129,"9":0.0079876129032258,"10":0,"11":0.11182658064516,"5.5":0},P:{"4":0.23518775971731,"5.0-5.4":0.010225554770318,"6.2-6.4":0.010225554770318,"7.2-7.4":0.10225554770318,"8.2":0.05112777385159,"9.2":0.27608997879859,"10.1":2.1166898374558},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.024524},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.239109},O:{"0":1.796383},Q:{"1.2":0.042917},S:{"2.5":0},H:{"0":0.62687894845361},L:{"0":56.441263}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MW.js b/assets/node_modules/caniuse-lite/data/regions/MW.js
deleted file mode 100644
index a6afb6e..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MW.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.00674,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.00337,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.01348,"41":0,"42":0,"43":0.00337,"44":0,"45":0,"46":0.01011,"47":0.00674,"48":0.00337,"49":0.02022,"50":0.00337,"51":0.00337,"52":0,"53":0,"54":0,"55":0.01348,"56":0.00337,"57":0.00337,"58":0.00337,"59":0.00337,"60":0.01011,"61":0.00674,"62":0.01348,"63":0.03707,"64":0.01011,"65":0.01011,"66":0.00337,"67":0.01011,"68":0.00337,"69":0.03707,"70":0.02696,"71":0.01011,"72":0.03033,"73":0.01011,"74":0.0674,"75":0.03707,"76":0.04718,"77":0.0674,"78":0.14491,"79":3.82832,"80":0.02022,"81":0.00674,"82":0},C:{"2":0.00337,"3":0,"4":0.00674,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0.00337,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.00337,"34":0.00337,"35":0.00337,"36":0.00337,"37":0.00337,"38":0,"39":0.00337,"40":0,"41":0,"42":0,"43":0.00674,"44":0.00337,"45":0.00337,"46":0.00337,"47":0.01348,"48":0.01348,"49":0.00337,"50":0,"51":0,"52":0.02022,"53":0.00337,"54":0.00337,"55":0.00337,"56":0.02696,"57":0.05729,"58":0.01011,"59":0.00337,"60":0.02022,"61":0.01685,"62":0.00337,"63":0,"64":0.00337,"65":0.01011,"66":0.02022,"67":0.00674,"68":0.08088,"69":0.02359,"70":0.04044,"71":0.33363,"72":0.82228,"73":0.08762,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0.00337,"15":0,"16":0,"17":0,"18":0.01011,"19":0,"20":0.00674,"21":0,"22":0,"23":0.01685,"24":0,"25":0,"26":0.00337,"27":0,"28":0.00674,"29":0,"30":0.00337,"31":0,"32":0.00674,"33":0.00337,"34":0.00674,"35":0.00337,"36":0.00674,"37":0.00337,"38":0.00337,"39":0,"40":0,"41":0,"42":0.01011,"43":0.00337,"44":0.00674,"45":0.02022,"46":0.06066,"47":0,"48":0,"49":0,"50":0,"51":0.00674,"52":0,"53":0.00674,"54":0.00674,"55":0.01348,"56":0.01011,"57":0,"58":0,"60":0.00337,"62":0,"63":0.00674,"64":0.00674,"9.5-9.6":0,"10.0-10.1":0,"10.5":0.00337,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.08425},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.00337,"10":0.00337,"11":0.02696,"12":0.01685,"13":0.19209,_:"0","3.1":0,"3.2":0,"5.1":1.88383,"6.1":0,"7.1":0,"9.1":0.00337,"10.1":0.02022,"11.1":0.14828,"12.1":0.03707},G:{"8":0.00039238471541462,"3.2":0.00039238471541462,"4.0-4.1":0.00078476943082925,"4.2-4.3":0,"5.0-5.1":0.0023543082924877,"6.0-6.1":0.0011771541462439,"7.0-7.1":0.003139077723317,"8.1-8.4":0.0058857707312194,"9.0-9.2":0.0051010013003901,"9.3":0.048655704711413,"10.0-10.2":0.01530300390117,"10.3":0.053756706011804,"11.0-11.2":0.043162318695609,"11.3-11.4":0.073375941782535,"12.0-12.1":0.098880948284485,"12.2-12.4":0.59093138141442,"13.0-13.1":0.27309976192858,"13.2":0.11496872161648,"13.3":2.5913086605982},I:{"3":0.0011853359683794,"4":0.011853359683794,_:"76","2.1":0,"2.2":0.0035560079051383,"2.3":0.0011853359683794,"4.1":0.020150711462451,"4.2-4.3":0.52391849802372,"4.4":0,"4.4.3-4.4.4":0.33782075098814},B:{"12":0.06403,"13":0.0337,"14":0.03033,"15":0.03707,"16":0.05055,"17":0.16176,"18":0.61671,_:"79"},A:{"6":0.00337,"7":0,"8":0.04381,"9":0.00674,"10":0.04718,"11":0.29319,"5.5":0},P:{"4":2.5104021428571,"5.0-5.4":1.1843429464286,"6.2-6.4":0.51625205357143,"7.2-7.4":0.15183883928571,"8.2":0.14171625,"9.2":0.41502616071429,"10.1":1.8625564285714},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.032700508474576,"11":0.61040949152542},J:{"7":0,"10":0.57018},R:{_:"0"},M:{"0":0.2652},O:{"0":5.42334},Q:{"1.2":0.11934},S:{"2.5":0},H:{"0":12.924045824742},L:{"0":47.71778}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MX.js b/assets/node_modules/caniuse-lite/data/regions/MX.js
deleted file mode 100644
index 918abb6..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MX.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005728,"37":0,"38":0.011456,"39":0,"40":0.005728,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005728,"47":0.005728,"48":0.005728,"49":0.274944,"50":0.005728,"51":0.005728,"52":0,"53":0.011456,"54":0,"55":0.005728,"56":0.005728,"57":0.005728,"58":0.011456,"59":0.005728,"60":0.011456,"61":0.011456,"62":0.005728,"63":0.022912,"64":0.005728,"65":0.045824,"66":0.017184,"67":0.080192,"68":0.017184,"69":0.034368,"70":0.040096,"71":0.051552,"72":0.045824,"73":0.063008,"74":0.063008,"75":0.103104,"76":0.11456,"77":0.154656,"78":0.412416,"79":22.574048,"80":0.017184,"81":0.011456,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005728,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.005728,"48":0.017184,"49":0,"50":0.005728,"51":0,"52":0.02864,"53":0,"54":0,"55":0,"56":0.005728,"57":0.005728,"58":0,"59":0,"60":0.005728,"61":0.005728,"62":0.005728,"63":0.005728,"64":0.005728,"65":0.011456,"66":0.017184,"67":0.011456,"68":0.074464,"69":0.017184,"70":0.02864,"71":0.4296,"72":1.294528,"73":0.017184,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005728,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0.005728,"64":0.051552,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.154656,"9":0.017184,"10":0.017184,"11":0.040096,"12":0.160384,"13":1.884512,_:"0","3.1":0,"3.2":0,"5.1":0.303584,"6.1":0,"7.1":0,"9.1":0.022912,"10.1":0.108832,"11.1":0.194752,"12.1":0.469696},G:{"8":0.00095452955886766,"3.2":0.00095452955886766,"4.0-4.1":0.0019090591177353,"4.2-4.3":0,"5.0-5.1":0.005727177353206,"6.0-6.1":0.002863588676603,"7.0-7.1":0.0076362364709413,"8.1-8.4":0.014317943383015,"9.0-9.2":0.01240888426528,"9.3":0.11836166529959,"10.0-10.2":0.037226652795839,"10.3":0.13077054956487,"11.0-11.2":0.10499825147544,"11.3-11.4":0.17849702750825,"12.0-12.1":0.24054144883465,"12.2-12.4":1.4375215156547,"13.0-13.1":0.66435257297189,"13.2":0.27967716074822,"13.3":6.303713206762},I:{"3":0.00027859815546772,"4":0.0027859815546772,_:"76","2.1":0,"2.2":0.00083579446640316,"2.3":0.00027859815546772,"4.1":0.0047361686429513,"4.2-4.3":0.12314038471673,"4.4":0,"4.4.3-4.4.4":0.0794004743083},B:{"12":0.005728,"13":0.005728,"14":0.011456,"15":0.017184,"16":0.017184,"17":0.091648,"18":0.824832,_:"79"},A:{"6":0,"7":0,"8":0.023209558441558,"9":0.0058023896103896,"10":0.011604779220779,"11":0.40616727272727,"5.5":0},P:{"4":0.14114688,"5.0-5.4":0.01008192,"6.2-6.4":0.01008192,"7.2-7.4":0.03024576,"8.2":0.02016384,"9.2":0.09073728,"10.1":0.92753664},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.046992},J:{"7":0,"10":0.004272},R:{_:"0"},M:{"0":0.102528},O:{"0":0.059808},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.14155587628866},L:{"0":55.803152}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MY.js b/assets/node_modules/caniuse-lite/data/regions/MY.js
deleted file mode 100644
index 5d65790..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MY.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.009332,"35":0,"36":0.004666,"37":0,"38":0.037328,"39":0,"40":0,"41":0,"42":0,"43":0.004666,"44":0,"45":0,"46":0.004666,"47":0,"48":0.004666,"49":0.200638,"50":0.004666,"51":0.009332,"52":0.004666,"53":0.055992,"54":0.004666,"55":0.02333,"56":0.009332,"57":0.009332,"58":0.02333,"59":0.018664,"60":0.004666,"61":0.009332,"62":0.013998,"63":0.051326,"64":0.009332,"65":0.037328,"66":0.018664,"67":0.04666,"68":0.018664,"69":0.065324,"70":0.060658,"71":0.06999,"72":0.060658,"73":0.340618,"74":0.11665,"75":0.102652,"76":0.102652,"77":0.125982,"78":0.298624,"79":15.155168,"80":0.027996,"81":0.032662,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.009332,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0.004666,"40":0,"41":0,"42":0,"43":0.004666,"44":0,"45":0,"46":0,"47":0.004666,"48":0.013998,"49":0,"50":0,"51":0,"52":0.041994,"53":0.004666,"54":0,"55":0,"56":0.004666,"57":0.004666,"58":0,"59":0.004666,"60":0.013998,"61":0.004666,"62":0.004666,"63":0.004666,"64":0.004666,"65":0.004666,"66":0.009332,"67":0.009332,"68":0.083988,"69":0.013998,"70":0.018664,"71":0.391944,"72":0.835214,"73":0.037328,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.009332,"37":0.051326,"38":0,"39":0,"40":0.004666,"41":0,"42":0,"43":0,"44":0,"45":0.004666,"46":0.013998,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.004666,"54":0,"55":0,"56":0.004666,"57":0,"58":0.004666,"60":0,"62":0,"63":0,"64":0.009332,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.013998,"9":0.009332,"10":0.004666,"11":0.018664,"12":0.060658,"13":0.797886,_:"0","3.1":0,"3.2":0,"5.1":0.027996,"6.1":0,"7.1":0,"9.1":0.009332,"10.1":0.04666,"11.1":0.083988,"12.1":0.177308},G:{"8":0.0013311651495449,"3.2":0.0013311651495449,"4.0-4.1":0.0026623302990897,"4.2-4.3":0,"5.0-5.1":0.0079869908972692,"6.0-6.1":0.0039934954486346,"7.0-7.1":0.010649321196359,"8.1-8.4":0.019967477243173,"9.0-9.2":0.017305146944083,"9.3":0.16506447854356,"10.0-10.2":0.05191544083225,"10.3":0.18236962548765,"11.0-11.2":0.14642816644993,"11.3-11.4":0.24892788296489,"12.0-12.1":0.33545361768531,"12.2-12.4":2.0047347152146,"13.0-13.1":0.92649094408322,"13.2":0.39003138881665,"13.3":8.7910146475943},I:{"3":0.00032938076416337,"4":0.0032938076416337,_:"76","2.1":0,"2.2":0.00098814229249012,"2.3":0.00032938076416337,"4.1":0.0055994729907773,"4.2-4.3":0.14558629776021,"4.4":0,"4.4.3-4.4.4":0.093873517786561},B:{"12":0,"13":0.004666,"14":0.004666,"15":0.004666,"16":0.009332,"17":0.037328,"18":0.312622,_:"79"},A:{"6":0,"7":0,"8":0.018997285714286,"9":0.0047493214285714,"10":0.0094986428571429,"11":0.23271675,"5.5":0},P:{"4":0.57241682868526,"5.0-5.4":0.020443458167331,"6.2-6.4":0.051108645418327,"7.2-7.4":0.071552103585657,"8.2":0.051108645418327,"9.2":0.24532149800797,"10.1":1.4719289880478},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.005334},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.16002},O:{"0":1.765554},Q:{"1.2":0.010668},S:{"2.5":0},H:{"0":1.2725714226804},L:{"0":56.637654}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/MZ.js b/assets/node_modules/caniuse-lite/data/regions/MZ.js
deleted file mode 100644
index 08177fb..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/MZ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.003038,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.003038,"27":0,"28":0,"29":0,"30":0.003038,"31":0,"32":0,"33":0.021266,"34":0,"35":0,"36":0.006076,"37":0,"38":0.003038,"39":0,"40":0.024304,"41":0,"42":0.006076,"43":0.115444,"44":0,"45":0,"46":0.003038,"47":0,"48":0,"49":0.036456,"50":0.003038,"51":0.006076,"52":0,"53":0,"54":0,"55":0.021266,"56":0,"57":0,"58":0.009114,"59":0,"60":0.006076,"61":0.021266,"62":0.003038,"63":0.072912,"64":0.003038,"65":0.01519,"66":0.006076,"67":0.009114,"68":0.006076,"69":0.082026,"70":0.018228,"71":0.021266,"72":0.01519,"73":0.03038,"74":0.036456,"75":0.024304,"76":0.039494,"77":0.057722,"78":0.103292,"79":3.724588,"80":0.009114,"81":0.009114,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.003038,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.003038,"29":0,"30":0,"31":0,"32":0.003038,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0.003038,"42":0,"43":0.003038,"44":0,"45":0.003038,"46":0,"47":0.006076,"48":0.003038,"49":0,"50":0,"51":0,"52":0.024304,"53":0.003038,"54":0,"55":0,"56":0.006076,"57":0.003038,"58":0,"59":0.006076,"60":0.006076,"61":0,"62":0.003038,"63":0.003038,"64":0.003038,"65":0,"66":0.006076,"67":0.003038,"68":0.042532,"69":0.012152,"70":0.018228,"71":0.170128,"72":0.507346,"73":0.024304,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0.003038,"16":0,"17":0,"18":0.003038,"19":0,"20":0.006076,"21":0.003038,"22":0,"23":0.012152,"24":0,"25":0,"26":0.006076,"27":0,"28":0.003038,"29":0,"30":0.003038,"31":0,"32":0.003038,"33":0,"34":0,"35":0.012152,"36":0,"37":0,"38":0.006076,"39":0,"40":0,"41":0,"42":0.006076,"43":0,"44":0,"45":0.009114,"46":0.036456,"47":0,"48":0,"49":0,"50":0,"51":0.003038,"52":0,"53":0.006076,"54":0.009114,"55":0.003038,"56":0.003038,"57":0.003038,"58":0,"60":0,"62":0,"63":0.003038,"64":0.018228,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0.003038,"12.1":0.027342},E:{"4":0,"5":0,"6":0,"7":0,"8":0.003038,"9":0,"10":0.009114,"11":0.024304,"12":0.042532,"13":0.252154,_:"0","3.1":0,"3.2":0,"5.1":0.388864,"6.1":0,"7.1":0,"9.1":0.003038,"10.1":0.003038,"11.1":0.018228,"12.1":0.066836},G:{"8":0.00040817285185556,"3.2":0.00040817285185556,"4.0-4.1":0.00081634570371111,"4.2-4.3":0,"5.0-5.1":0.0024490371111333,"6.0-6.1":0.0012245185555667,"7.0-7.1":0.0032653828148445,"8.1-8.4":0.0061225927778334,"9.0-9.2":0.0053062470741222,"9.3":0.050613433630089,"10.0-10.2":0.015918741222367,"10.3":0.055919680704211,"11.0-11.2":0.044899013704111,"11.3-11.4":0.076328323296989,"12.0-12.1":0.1028595586676,"12.2-12.4":0.61470831489447,"13.0-13.1":0.28408830489147,"13.2":0.11959464559368,"13.3":2.6955735136541},I:{"3":0.00049548880105402,"4":0.0049548880105402,_:"76","2.1":0,"2.2":0.0014864664031621,"2.3":0.00049548880105402,"4.1":0.0084233096179183,"4.2-4.3":0.21900605006588,"4.4":0,"4.4.3-4.4.4":0.1412143083004},B:{"12":0.01519,"13":0.021266,"14":0.009114,"15":0.009114,"16":0.01519,"17":0.051646,"18":0.297724,_:"79"},A:{"6":0,"7":0,"8":0.044533505882353,"9":0,"10":0.0063619294117647,"11":0.21948656470588,"5.5":0},P:{"4":1.5581074334278,"5.0-5.4":0.05058790368272,"6.2-6.4":0.070823065155807,"7.2-7.4":0.29340984135977,"8.2":0.05058790368272,"9.2":0.29340984135977,"10.1":1.2242272691218},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.03219925,"11":0.22539475},J:{"7":0,"10":0.097468},R:{_:"0"},M:{"0":0.097468},O:{"0":0.80063},Q:{"1.2":0.06962},S:{"2.5":0},H:{"0":20.920379360825},L:{"0":52.24364}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/NA.js b/assets/node_modules/caniuse-lite/data/regions/NA.js
deleted file mode 100644
index 1613343..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/NA.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.009528,"37":0,"38":0.052404,"39":0.004764,"40":0.004764,"41":0,"42":0,"43":0.009528,"44":0.004764,"45":0,"46":0,"47":0.042876,"48":0,"49":0.061932,"50":0,"51":0.004764,"52":0,"53":0,"54":0,"55":0.004764,"56":0.004764,"57":0.033348,"58":0.009528,"59":0.004764,"60":0.028584,"61":0,"62":0.004764,"63":0.181032,"64":0.004764,"65":0.038112,"66":0.004764,"67":0.004764,"68":0.004764,"69":0.090516,"70":0.014292,"71":0.009528,"72":0.009528,"73":0.066696,"74":0.038112,"75":0.066696,"76":0.085752,"77":0.085752,"78":0.290604,"79":10.285476,"80":0.019056,"81":0.004764,"82":0},C:{"2":0,"3":0.004764,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.009528,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.004764,"33":0,"34":0,"35":0.009528,"36":0,"37":0,"38":0.009528,"39":0,"40":0,"41":0,"42":0,"43":0.004764,"44":0,"45":0,"46":0,"47":0.042876,"48":0.004764,"49":0.004764,"50":0,"51":0.004764,"52":0.02382,"53":0,"54":0,"55":0,"56":0.014292,"57":0.02382,"58":0.009528,"59":0,"60":0.009528,"61":0,"62":0,"63":0.004764,"64":0.004764,"65":0.004764,"66":0.004764,"67":0.004764,"68":0.209616,"69":0.019056,"70":0.061932,"71":0.485928,"72":1.59594,"73":0.033348,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.004764,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.02382,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.004764,"54":0,"55":0,"56":0.009528,"57":0,"58":0,"60":0,"62":0,"63":0.004764,"64":0.019056,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.009528},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.004764,"10":0.004764,"11":0.014292,"12":0.090516,"13":1.543536,_:"0","3.1":0,"3.2":0,"5.1":0.033348,"6.1":0,"7.1":0,"9.1":0.009528,"10.1":0.02382,"11.1":0.080988,"12.1":0.204852},G:{"8":0.0010116150845254,"3.2":0.0010116150845254,"4.0-4.1":0.0020232301690507,"4.2-4.3":0,"5.0-5.1":0.0060696905071521,"6.0-6.1":0.0030348452535761,"7.0-7.1":0.0080929206762029,"8.1-8.4":0.01517422626788,"9.0-9.2":0.01315099609883,"9.3":0.12544027048114,"10.0-10.2":0.039452988296489,"10.3":0.13859126657997,"11.0-11.2":0.11127765929779,"11.3-11.4":0.18917202080624,"12.0-12.1":0.25492700130039,"12.2-12.4":1.5234923172952,"13.0-13.1":0.70408409882965,"13.2":0.29640321976593,"13.3":6.6807060182055},I:{"3":0.00060108563899868,"4":0.0060108563899868,_:"76","2.1":0,"2.2":0.001803256916996,"2.3":0.00060108563899868,"4.1":0.010218455862978,"4.2-4.3":0.26567985243742,"4.4":0,"4.4.3-4.4.4":0.17130940711462},B:{"12":0.038112,"13":0.033348,"14":0.042876,"15":0.028584,"16":0.04764,"17":0.195324,"18":1.681692,_:"79"},A:{"6":0,"7":0,"8":0.1261835505618,"9":0.0048532134831461,"10":0.014559640449438,"11":1.1502115955056,"5.5":0},P:{"4":0.73212341356674,"5.0-5.4":0.010311597374179,"6.2-6.4":0.030934792122538,"7.2-7.4":0.43308708971554,"8.2":0.041246389496718,"9.2":0.43308708971554,"10.1":3.0006748358862},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.045815,"11":0.137445},J:{"7":0,"10":0.015708},R:{_:"0"},M:{"0":0.376992},O:{"0":1.057672},Q:{"1.2":0.036652},S:{"2.5":0},H:{"0":3.0882773676976},L:{"0":54.445332}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/NC.js b/assets/node_modules/caniuse-lite/data/regions/NC.js
deleted file mode 100644
index a8b8783..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/NC.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.012854,"37":0,"38":0.006427,"39":0,"40":0.006427,"41":0.006427,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.314923,"50":0,"51":0,"52":0,"53":0.025708,"54":0,"55":0,"56":0.032135,"57":0,"58":0.006427,"59":0,"60":0,"61":0,"62":0,"63":0.012854,"64":0,"65":0.199237,"66":0.032135,"67":0.231372,"68":0.006427,"69":0.019281,"70":0.012854,"71":0.012854,"72":0.019281,"73":0.019281,"74":0.874072,"75":0.051416,"76":0.051416,"77":0.392047,"78":0.57843,"79":18.548322,"80":0.019281,"81":0.006427,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.025708,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.006427,"44":0,"45":0.083551,"46":0,"47":0,"48":0.038562,"49":0,"50":0,"51":0.025708,"52":0.212091,"53":0,"54":0,"55":0.019281,"56":0.006427,"57":0.006427,"58":0,"59":0.006427,"60":0.334204,"61":0.006427,"62":0,"63":0,"64":0,"65":0.006427,"66":0.032135,"67":0.083551,"68":0.38562,"69":0.032135,"70":0.019281,"71":1.915246,"72":4.492473,"73":0.012854,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.025708,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.019281,"12":0.102832,"13":3.252062,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.025708,"10.1":0.134967,"11.1":0.462744,"12.1":0.886926},G:{"8":0.0016514190257077,"3.2":0.0016514190257077,"4.0-4.1":0.0033028380514154,"4.2-4.3":0,"5.0-5.1":0.0099085141542463,"6.0-6.1":0.0049542570771231,"7.0-7.1":0.013211352205662,"8.1-8.4":0.024771285385616,"9.0-9.2":0.0214684473342,"9.3":0.20477595918776,"10.0-10.2":0.064405342002601,"10.3":0.22624440652196,"11.0-11.2":0.18165609282785,"11.3-11.4":0.30881535780734,"12.0-12.1":0.41615759447834,"12.2-12.4":2.4870370527158,"13.0-13.1":1.1493876418926,"13.2":0.48386577453236,"13.3":10.905971245774},I:{"3":0.00055706192358366,"4":0.0055706192358366,_:"76","2.1":0,"2.2":0.001671185770751,"2.3":0.00055706192358366,"4.1":0.0094700527009223,"4.2-4.3":0.24622137022398,"4.4":0,"4.4.3-4.4.4":0.15876264822134},B:{"12":0,"13":0,"14":0.019281,"15":0.006427,"16":0.012854,"17":0.179956,"18":1.651739,_:"79"},A:{"6":0,"7":0,"8":0.019281,"9":0.006427,"10":0,"11":0.687689,"5.5":0},P:{"4":0.289413,"5.0-5.4":0.010719,"6.2-6.4":0.032157,"7.2-7.4":0.171504,"8.2":0.010719,"9.2":0.192942,"10.1":3.301452},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.017865},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.407322},O:{"0":0.03573},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.020296113402062},L:{"0":37.170166}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/NE.js b/assets/node_modules/caniuse-lite/data/regions/NE.js
deleted file mode 100644
index 31e97a2..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/NE.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.003899,"31":0,"32":0,"33":0.003899,"34":0,"35":0,"36":0.003899,"37":0,"38":0.003899,"39":0,"40":0,"41":0,"42":0,"43":0.007798,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.027293,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.085778,"56":0.003899,"57":0.003899,"58":0.019495,"59":0,"60":0,"61":0.003899,"62":0.011697,"63":0.85778,"64":0.003899,"65":0.003899,"66":0,"67":0,"68":0,"69":0.269031,"70":0.007798,"71":0.003899,"72":0.003899,"73":0.011697,"74":0.019495,"75":0.027293,"76":0.222243,"77":0.023394,"78":0.054586,"79":1.953399,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.011697,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.003899,"31":0,"32":0.011697,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.015596,"44":0,"45":0.003899,"46":0,"47":0.007798,"48":0.019495,"49":0,"50":0,"51":0,"52":0.023394,"53":0,"54":0.003899,"55":0,"56":0.003899,"57":0,"58":0,"59":0.003899,"60":0.007798,"61":0.003899,"62":0,"63":0.003899,"64":0,"65":0.007798,"66":0.031192,"67":0.011697,"68":0.159859,"69":0.007798,"70":0.03899,"71":0.23394,"72":0.627739,"73":0.007798,"74":0.003899,"3.5":0,"3.6":0.003899},F:{"9":0,"11":0.003899,"12":0,"15":0.007798,"16":0.011697,"17":0.003899,"18":0,"19":0,"20":0.019495,"21":0,"22":0,"23":0.015596,"24":0,"25":0,"26":0,"27":0.003899,"28":0.015596,"29":0,"30":0.003899,"31":0,"32":0.003899,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0.003899,"43":0,"44":0,"45":0.007798,"46":0.027293,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.023394,"57":0,"58":0.003899,"60":0.003899,"62":0,"63":0,"64":0.007798,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.046788},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.027293,"10":0.035091,"11":0.003899,"12":0.003899,"13":0.07798,_:"0","3.1":0,"3.2":0,"5.1":8.246385,"6.1":0,"7.1":0,"9.1":0,"10.1":0.003899,"11.1":0.050687,"12.1":0.035091},G:{"8":0.00026047804341302,"3.2":0.00026047804341302,"4.0-4.1":0.00052095608682605,"4.2-4.3":0,"5.0-5.1":0.0015628682604781,"6.0-6.1":0.00078143413023907,"7.0-7.1":0.0020838243473042,"8.1-8.4":0.0039071706511954,"9.0-9.2":0.0033862145643693,"9.3":0.032299277383215,"10.0-10.2":0.010158643693108,"10.3":0.035685491947584,"11.0-11.2":0.028652584775433,"11.3-11.4":0.048709394118235,"12.0-12.1":0.065640466940082,"12.2-12.4":0.39227993338001,"13.0-13.1":0.18129271821546,"13.2":0.076320066720016,"13.3":1.7201969986996},I:{"3":0.0026106376811594,"4":0.026106376811594,_:"76","2.1":0,"2.2":0.0078319130434783,"2.3":0.0026106376811594,"4.1":0.04438084057971,"4.2-4.3":1.1539018550725,"4.4":0,"4.4.3-4.4.4":0.74403173913043},B:{"12":0.015596,"13":0.003899,"14":0.007798,"15":0.007798,"16":0.007798,"17":0.050687,"18":0.210546,_:"79"},A:{"6":0,"7":0,"8":0.032508545454545,"9":0.0054180909090909,"10":0.010836181818182,"11":0.36843018181818,"5.5":0},P:{"4":0.17905108695652,"5.0-5.4":0.039789130434783,"6.2-6.4":0.029841847826087,"7.2-7.4":0.079578260869565,"8.2":0.0099472826086957,"9.2":0.2387347826087,"10.1":0.32826032608696},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.034318125,"11":0.057196875},J:{"7":0,"10":0.140323},R:{_:"0"},M:{"0":0.164727},O:{"0":4.313407},Q:{"1.2":0.091515},S:{"2.5":0.012202},H:{"0":10.194697620275},L:{"0":58.026763}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/NF.js b/assets/node_modules/caniuse-lite/data/regions/NF.js
deleted file mode 100644
index 17283ca..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/NF.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.02787,"29":0,"30":0.02787,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0.061314,"40":0.02787,"41":0.089184,"42":0,"43":0,"44":0,"45":0.089184,"46":0.061314,"47":0.02787,"48":0,"49":0.423624,"50":0.02787,"51":0.239682,"52":0.061314,"53":0.02787,"54":0.089184,"55":0,"56":0,"57":0.061314,"58":0.122628,"59":0,"60":0,"61":0.239682,"62":0.300996,"63":0.02787,"64":0.089184,"65":0.122628,"66":0,"67":0.02787,"68":0.02787,"69":0,"70":0.122628,"71":0.875118,"72":0,"73":0.178368,"74":0.122628,"75":0.02787,"76":0.122628,"77":0,"78":0.150498,"79":8.489202,"80":0,"81":0,"82":0},C:{"2":0.061314,"3":0.061314,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.02787,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0.02787,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0.02787,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.150498,"37":0,"38":0.02787,"39":0,"40":0,"41":0.122628,"42":0.089184,"43":0.02787,"44":0.02787,"45":0.122628,"46":0,"47":0,"48":0,"49":0.089184,"50":0.061314,"51":0.300996,"52":0.36231,"53":0.089184,"54":0.239682,"55":0.239682,"56":0.089184,"57":0.211812,"58":0.150498,"59":0.150498,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0.211812,"68":0.061314,"69":0.122628,"70":0.02787,"71":0.629862,"72":2.168286,"73":0,"74":0,"3.5":0,"3.6":0.150498},F:{"9":0,"11":0.061314,"12":0,"15":0.061314,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.061314,"27":0.061314,"28":0,"29":0,"30":0.02787,"31":0,"32":0,"33":0,"34":0.02787,"35":0,"36":0,"37":0.061314,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.061314,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0.061314,"58":0,"60":0.02787,"62":0,"63":0.02787,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.150498},E:{"4":0,"5":0,"6":0.02787,"7":0,"8":0.061314,"9":0.02787,"10":0,"11":1.382352,"12":2.2296,"13":0.663306,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0,"11.1":0.061314,"12.1":0.061314},G:{"8":0.0043964579373812,"3.2":0.0043964579373812,"4.0-4.1":0.0087929158747624,"4.2-4.3":0,"5.0-5.1":0.026378747624287,"6.0-6.1":0.013189373812144,"7.0-7.1":0.03517166349905,"8.1-8.4":0.065946869060718,"9.0-9.2":0.057153953185956,"9.3":0.54516078423527,"10.0-10.2":0.17146185955787,"10.3":0.60231473742123,"11.0-11.2":0.48361037311193,"11.3-11.4":0.82213763429029,"12.0-12.1":1.1079074002201,"12.2-12.4":6.6210656536961,"13.0-13.1":3.0599347244173,"13.2":1.2881621756527,"13.3":29.034208218466},I:{"3":0.000036719367588933,"4":0.00036719367588933,_:"76","2.1":0,"2.2":0.0001101581027668,"2.3":0.000036719367588933,"4.1":0.00062422924901186,"4.2-4.3":0.016229960474308,"4.4":0,"4.4.3-4.4.4":0.010465019762846},B:{"12":0,"13":0.150498,"14":0,"15":0,"16":0,"17":0,"18":0.663306,_:"79"},A:{"6":0,"7":0,"8":0.328866,"9":0.36231,"10":0.089184,"11":0.930858,"5.5":0},P:{"4":0,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0,"8.2":0,"9.2":0,"10.1":2.031534},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.389488,"11":0.389488},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0},O:{"0":0.181466},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.058663512027491},L:{"0":24.551876}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/NG.js b/assets/node_modules/caniuse-lite/data/regions/NG.js
deleted file mode 100644
index 8d62321..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/NG.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.002511,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.002511,"37":0.002511,"38":0,"39":0,"40":0.007533,"41":0,"42":0,"43":0.002511,"44":0,"45":0,"46":0,"47":0.022599,"48":0,"49":0.017577,"50":0.005022,"51":0.002511,"52":0,"53":0,"54":0,"55":0.007533,"56":0.005022,"57":0.005022,"58":0.015066,"59":0,"60":0.002511,"61":0.002511,"62":0.007533,"63":0.037665,"64":0.012555,"65":0.005022,"66":0.007533,"67":0.005022,"68":0.007533,"69":0.045198,"70":0.027621,"71":0.037665,"72":0.02511,"73":0.02511,"74":0.032643,"75":0.027621,"76":0.040176,"77":0.060264,"78":0.112995,"79":2.875095,"80":0.012555,"81":0.005022,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0.002511,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.002511,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.032643,"44":0.002511,"45":0.005022,"46":0,"47":0.012555,"48":0.005022,"49":0.002511,"50":0.002511,"51":0,"52":0.015066,"53":0.002511,"54":0.002511,"55":0.002511,"56":0.010044,"57":0.002511,"58":0.002511,"59":0.005022,"60":0.002511,"61":0.005022,"62":0.005022,"63":0.007533,"64":0.007533,"65":0.010044,"66":0.010044,"67":0.010044,"68":0.092907,"69":0.010044,"70":0.017577,"71":0.20088,"72":0.484623,"73":0.047709,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0.002511,"15":0.002511,"16":0.007533,"17":0,"18":0,"19":0.005022,"20":0.017577,"21":0,"22":0,"23":0.030132,"24":0.015066,"25":0,"26":0.010044,"27":0.022599,"28":0.022599,"29":0.005022,"30":0.020088,"31":0.005022,"32":0.015066,"33":0.010044,"34":0,"35":0.002511,"36":0.005022,"37":0.002511,"38":0.012555,"39":0,"40":0,"41":0,"42":0.012555,"43":0.002511,"44":0.002511,"45":0.042687,"46":0.17577,"47":0,"48":0.002511,"49":0.002511,"50":0.002511,"51":0.002511,"52":0,"53":0.030132,"54":0.012555,"55":0.007533,"56":0.007533,"57":0.002511,"58":0.002511,"60":0.002511,"62":0,"63":0.002511,"64":0.005022,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.193347},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.002511,"11":0.005022,"12":0.020088,"13":0.10044,_:"0","3.1":0,"3.2":0,"5.1":0.115506,"6.1":0,"7.1":0.002511,"9.1":0,"10.1":0.007533,"11.1":0.010044,"12.1":0.035154},G:{"8":0.00049184365309593,"3.2":0.00049184365309593,"4.0-4.1":0.00098368730619186,"4.2-4.3":0,"5.0-5.1":0.0029510619185756,"6.0-6.1":0.0014755309592878,"7.0-7.1":0.0039347492247674,"8.1-8.4":0.0073776547964389,"9.0-9.2":0.0063939674902471,"9.3":0.060988612983895,"10.0-10.2":0.019181902470741,"10.3":0.067382580474142,"11.0-11.2":0.054102801840552,"11.3-11.4":0.091974763128939,"12.0-12.1":0.12394460058017,"12.2-12.4":0.74071654156247,"13.0-13.1":0.34232318255477,"13.2":0.14411019035711,"13.3":3.2481354850455},I:{"3":0.00033280500658762,"4":0.0033280500658762,_:"76","2.1":0,"2.2":0.00099841501976285,"2.3":0.00033280500658762,"4.1":0.0056576851119895,"4.2-4.3":0.14709981291173,"4.4":0,"4.4.3-4.4.4":0.09484942687747},B:{"12":0.010044,"13":0.005022,"14":0.005022,"15":0.007533,"16":0.012555,"17":0.020088,"18":0.135594,_:"79"},A:{"6":0,"7":0,"8":0.035154,"9":0.005859,"10":0.0087885,"11":0.0556605,"5.5":0},P:{"4":0.1210933220339,"5.0-5.4":0.030273330508475,"6.2-6.4":0.030273330508475,"7.2-7.4":0.10091110169492,"8.2":0.030273330508475,"9.2":0.23209553389831,"10.1":0.62564883050847},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.022467,"11":0.157269},J:{"7":0,"10":0.142291},R:{_:"0"},M:{"0":0.501763},O:{"0":3.272693},Q:{"1.2":0.022467},S:{"2.5":0.029956},H:{"0":26.871484209622},L:{"0":46.898956}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/NI.js b/assets/node_modules/caniuse-lite/data/regions/NI.js
deleted file mode 100644
index 9dde87e..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/NI.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.006544,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.013088,"39":0,"40":0.006544,"41":0.006544,"42":0.013088,"43":0.006544,"44":0,"45":0,"46":0.006544,"47":0,"48":0.006544,"49":0.222496,"50":0,"51":0,"52":0,"53":0.019632,"54":0,"55":0.006544,"56":0.006544,"57":0,"58":0.013088,"59":0,"60":0.013088,"61":0.006544,"62":0.006544,"63":0.045808,"64":0.019632,"65":0.013088,"66":0.013088,"67":0.045808,"68":0.039264,"69":0.039264,"70":0.045808,"71":0.045808,"72":0.071984,"73":0.071984,"74":0.170144,"75":0.562784,"76":0.117792,"77":0.1636,"78":0.857264,"79":29.428368,"80":0.019632,"81":0.013088,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.006544,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.013088,"44":0,"45":0.006544,"46":0,"47":0.006544,"48":0.026176,"49":0.006544,"50":0,"51":0.006544,"52":0.019632,"53":0.006544,"54":0.006544,"55":0,"56":0.026176,"57":0.006544,"58":0.013088,"59":0,"60":0.006544,"61":0,"62":0,"63":0,"64":0.006544,"65":0.006544,"66":0.019632,"67":0.006544,"68":0.09816,"69":0.045808,"70":0.078528,"71":0.634768,"72":1.7996,"73":0.019632,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0.006544,"18":0,"19":0,"20":0,"21":0,"22":0.006544,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.006544,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.006544,"37":0.006544,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.006544,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0.045808,"58":0,"60":0.444992,"62":0,"63":0.026176,"64":0.215952,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.006544},E:{"4":0,"5":0,"6":0,"7":0.013088,"8":0,"9":0,"10":0.006544,"11":0.006544,"12":0.104704,"13":1.01432,_:"0","3.1":0,"3.2":0,"5.1":1.923936,"6.1":0,"7.1":0,"9.1":0.006544,"10.1":0.03272,"11.1":0.104704,"12.1":0.340288},G:{"8":0.00046273241972592,"3.2":0.00046273241972592,"4.0-4.1":0.00092546483945184,"4.2-4.3":0,"5.0-5.1":0.0027763945183555,"6.0-6.1":0.0013881972591778,"7.0-7.1":0.0037018593578073,"8.1-8.4":0.0069409862958888,"9.0-9.2":0.0060155214564369,"9.3":0.057378820046014,"10.0-10.2":0.018046564369311,"10.3":0.063394341502451,"11.0-11.2":0.050900566169851,"11.3-11.4":0.086530962488747,"12.0-12.1":0.11660856977093,"12.2-12.4":0.69687502410723,"13.0-13.1":0.32206176412924,"13.2":0.13558059897969,"13.3":3.05588489987},I:{"3":0.00041395520421607,"4":0.0041395520421607,_:"76","2.1":0,"2.2":0.0012418656126482,"2.3":0.00041395520421607,"4.1":0.0070372384716733,"4.2-4.3":0.1829682002635,"4.4":0,"4.4.3-4.4.4":0.11797723320158},B:{"12":0.006544,"13":0,"14":0.006544,"15":0.013088,"16":0.006544,"17":0.071984,"18":0.484256,_:"79"},A:{"6":0,"7":0,"8":0.028357333333333,"9":0.0070893333333333,"10":0.0070893333333333,"11":0.127608,"5.5":0},P:{"4":0.30575435294118,"5.0-5.4":0.030575435294118,"6.2-6.4":0.040767247058824,"7.2-7.4":0.18345261176471,"8.2":0.040767247058824,"9.2":0.27517891764706,"10.1":1.7020325647059},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.058752},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.072576},O:{"0":0.200448},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.46461228865979},L:{"0":48.079728}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/NL.js b/assets/node_modules/caniuse-lite/data/regions/NL.js
deleted file mode 100644
index fcb39b2..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/NL.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0.005777,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.005777,"38":0.005777,"39":0,"40":0.005777,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.011554,"49":0.398613,"50":0,"51":0.005777,"52":0,"53":0.011554,"54":0,"55":0.005777,"56":0.005777,"57":0.005777,"58":0.005777,"59":0.011554,"60":0.028885,"61":0.028885,"62":0.005777,"63":0.028885,"64":0.005777,"65":0.017331,"66":0.017331,"67":0.028885,"68":0.017331,"69":0.034662,"70":0.080878,"71":0.086655,"72":0.080878,"73":0.109763,"74":0.063547,"75":0.121317,"76":0.132871,"77":0.179087,"78":0.791449,"79":17.140359,"80":0.034662,"81":0.011554,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.028885,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0.011554,"42":0,"43":0,"44":0,"45":0.011554,"46":0,"47":0.005777,"48":0.017331,"49":0.005777,"50":0.011554,"51":0,"52":0.040439,"53":0,"54":0,"55":0,"56":0.023108,"57":0.005777,"58":0.028885,"59":0,"60":0.023108,"61":0,"62":0.005777,"63":0.011554,"64":0.017331,"65":0.005777,"66":0.023108,"67":0.017331,"68":0.219526,"69":0.023108,"70":0.040439,"71":0.652801,"72":1.380703,"73":0.017331,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005777,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.017331,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.005777,"57":0.005777,"58":0.005777,"60":0,"62":0.005777,"63":0,"64":0.011554,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0.005777,"8":0,"9":0.005777,"10":0.005777,"11":0.023108,"12":0.121317,"13":3.789712,_:"0","3.1":0,"3.2":0,"5.1":0.381282,"6.1":0,"7.1":0,"9.1":0.017331,"10.1":0.063547,"11.1":0.144425,"12.1":0.387059},G:{"8":0.0026262623787136,"3.2":0.0026262623787136,"4.0-4.1":0.0052525247574272,"4.2-4.3":0,"5.0-5.1":0.015757574272282,"6.0-6.1":0.0078787871361408,"7.0-7.1":0.021010099029709,"8.1-8.4":0.039393935680704,"9.0-9.2":0.034141410923277,"9.3":0.32565653496049,"10.0-10.2":0.10242423276983,"10.3":0.35979794588377,"11.0-11.2":0.2888888616585,"11.3-11.4":0.49111106481945,"12.0-12.1":0.66181811943583,"12.2-12.4":3.9551511423427,"13.0-13.1":1.8278786155847,"13.2":0.76949487696309,"13.3":17.343836749025},I:{"3":0.00039231884057971,"4":0.0039231884057971,_:"76","2.1":0,"2.2":0.0011769565217391,"2.3":0.00039231884057971,"4.1":0.0066694202898551,"4.2-4.3":0.17340492753623,"4.4":0,"4.4.3-4.4.4":0.11181086956522},B:{"12":0,"13":0.005777,"14":0.011554,"15":0.011554,"16":0.028885,"17":0.150202,"18":2.3108,_:"79"},A:{"6":0.0061380625,"7":0,"8":0.0429664375,"9":0.036828375,"10":0.0184141875,"11":1.4669969375,"5.5":0},P:{"4":0.10481788844622,"5.0-5.4":0.010481788844622,"6.2-6.4":0.010481788844622,"7.2-7.4":0.041927155378486,"8.2":0.020963577689243,"9.2":0.17819041035857,"10.1":4.653914247012},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.012669},J:{"7":0,"10":0.004223},R:{_:"0"},M:{"0":0.274495},O:{"0":0.443415},Q:{"1.2":0.012669},S:{"2.5":0},H:{"0":0.20789930584192},L:{"0":31.5044}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/NO.js b/assets/node_modules/caniuse-lite/data/regions/NO.js
deleted file mode 100644
index e854a40..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/NO.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.005991,"35":0,"36":0,"37":0,"38":0.005991,"39":0,"40":0.029955,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.101847,"50":0,"51":0,"52":0,"53":0.005991,"54":0,"55":0,"56":0.065901,"57":0.005991,"58":0.005991,"59":0.035946,"60":0,"61":0.011982,"62":0.023964,"63":0.023964,"64":0.005991,"65":0.017973,"66":0.11982,"67":0.047928,"68":0.041937,"69":0.041937,"70":0.053919,"71":0.047928,"72":0.077883,"73":0.095856,"74":0.035946,"75":0.101847,"76":0.161757,"77":0.287568,"78":1.683471,"79":19.165209,"80":0.029955,"81":0.011982,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.011982,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.023964,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.005991,"49":0,"50":0.017973,"51":0,"52":0.011982,"53":0,"54":0,"55":0,"56":0.005991,"57":0,"58":0.077883,"59":0.017973,"60":0.005991,"61":0,"62":0,"63":0,"64":0.005991,"65":0,"66":0.005991,"67":0.005991,"68":0.155766,"69":0.017973,"70":0.047928,"71":0.545181,"72":1.090362,"73":0.005991,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005991,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.011982,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.005991,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.041937,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.005991,"9":0,"10":0.011982,"11":0.023964,"12":0.113829,"13":4.589106,_:"0","3.1":0,"3.2":0,"5.1":0.023964,"6.1":0,"7.1":0,"9.1":0.041937,"10.1":0.089865,"11.1":0.167748,"12.1":0.461307},G:{"8":0.0035236492947884,"3.2":0.0035236492947884,"4.0-4.1":0.0070472985895769,"4.2-4.3":0,"5.0-5.1":0.021141895768731,"6.0-6.1":0.010570947884365,"7.0-7.1":0.028189194358307,"8.1-8.4":0.052854739421827,"9.0-9.2":0.04580744083225,"9.3":0.43693251255377,"10.0-10.2":0.13742232249675,"10.3":0.48273995338602,"11.0-11.2":0.38760142242673,"11.3-11.4":0.65892241812544,"12.0-12.1":0.88795962228669,"12.2-12.4":5.3066158379514,"13.0-13.1":2.4524599091728,"13.2":1.032429243373,"13.3":23.270179942783},I:{"3":0.00018451251646904,"4":0.0018451251646904,_:"76","2.1":0,"2.2":0.00055353754940711,"2.3":0.00018451251646904,"4.1":0.0031367127799736,"4.2-4.3":0.081554532279315,"4.4":0,"4.4.3-4.4.4":0.052586067193676},B:{"12":0,"13":0.005991,"14":0.011982,"15":0.017973,"16":0.047928,"17":0.209685,"18":1.953066,_:"79"},A:{"6":0,"7":0,"8":0.0060198028846154,"9":0,"10":0.0060198028846154,"11":1.2400793942308,"5.5":0},P:{"4":0.062910461538462,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0.031455230769231,"8.2":0.010485076923077,"9.2":0.094365692307692,"10.1":3.0511573846154},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.196441},O:{"0":0.044099},Q:{"1.2":0},S:{"2.5":0.004009},H:{"0":0.20115949656357},L:{"0":23.864122}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/NP.js b/assets/node_modules/caniuse-lite/data/regions/NP.js
deleted file mode 100644
index 52ffa6f..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/NP.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0.003289,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.003289,"31":0.016445,"32":0.009867,"33":0.009867,"34":0,"35":0,"36":0.003289,"37":0,"38":0,"39":0,"40":0.003289,"41":0,"42":0,"43":0.003289,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.019734,"50":0,"51":0.003289,"52":0,"53":0.003289,"54":0,"55":0.003289,"56":0,"57":0,"58":0.006578,"59":0,"60":0.003289,"61":0.003289,"62":0.003289,"63":0.016445,"64":0.003289,"65":0.003289,"66":0.003289,"67":0.006578,"68":0.003289,"69":0.03289,"70":0.009867,"71":0.013156,"72":0.009867,"73":0.019734,"74":0.026312,"75":0.029601,"76":0.029601,"77":0.042757,"78":0.09867,"79":8.202766,"80":0.029601,"81":0.029601,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.003289,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0.003289,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.003289,"44":0.003289,"45":0,"46":0,"47":0.009867,"48":0.003289,"49":0,"50":0,"51":0,"52":0.036179,"53":0,"54":0,"55":0,"56":0.006578,"57":0.003289,"58":0.003289,"59":0,"60":0.003289,"61":0,"62":0,"63":0,"64":0.003289,"65":0,"66":0.003289,"67":0.003289,"68":0.036179,"69":0.009867,"70":0.009867,"71":0.23023,"72":0.542685,"73":0.069069,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.006578,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.003289,"46":0.019734,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.003289,"54":0,"55":0,"56":0.006578,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.006578,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.009867},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.003289,"12":0.009867,"13":0.082225,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0.006578,"11.1":0.003289,"12.1":0.016445},G:{"8":0.00044283415024507,"3.2":0.00044283415024507,"4.0-4.1":0.00088566830049015,"4.2-4.3":0,"5.0-5.1":0.0026570049014704,"6.0-6.1":0.0013285024507352,"7.0-7.1":0.0035426732019606,"8.1-8.4":0.0066425122536761,"9.0-9.2":0.005756843953186,"9.3":0.054911434630389,"10.0-10.2":0.017270531859558,"10.3":0.060668278583575,"11.0-11.2":0.048711756526958,"11.3-11.4":0.082809986095829,"12.0-12.1":0.11159420586176,"12.2-12.4":0.66690823026908,"13.0-13.1":0.30821256857057,"13.2":0.12975040602181,"13.3":2.9244767282185},I:{"3":0.00042038076416337,"4":0.0042038076416337,_:"76","2.1":0,"2.2":0.0012611422924901,"2.3":0.00042038076416337,"4.1":0.0071464729907773,"4.2-4.3":0.18580829776021,"4.4":0,"4.4.3-4.4.4":0.11980851778656},B:{"12":0.006578,"13":0.006578,"14":0.003289,"15":0.006578,"16":0.006578,"17":0.023023,"18":0.151294,_:"79"},A:{"6":0,"7":0,"8":0.006578,"9":0.003289,"10":0.003289,"11":0.03289,"5.5":0},P:{"4":0.48614730275229,"5.0-5.4":0.010128068807339,"6.2-6.4":0.030384206422018,"7.2-7.4":0.12153682568807,"8.2":0.050640344036697,"9.2":0.16204910091743,"10.1":1.3166489449541},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.020133},J:{"7":0,"10":0.006711},R:{_:"0"},M:{"0":0.06711},O:{"0":2.838753},Q:{"1.2":0.006711},S:{"2.5":0},H:{"0":3.0624068762887},L:{"0":73.560498}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/NR.js b/assets/node_modules/caniuse-lite/data/regions/NR.js
deleted file mode 100644
index 08d4e9a..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/NR.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.001836,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.01836,"59":0,"60":0,"61":0,"62":0,"63":0.176256,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0.152388,"70":0.003672,"71":0,"72":0,"73":0.016524,"74":0,"75":0,"76":0,"77":0.040392,"78":0.012852,"79":1.301724,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.001836,"53":0,"54":0,"55":0,"56":0.001836,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0.001836,"64":0,"65":0,"66":0,"67":0,"68":0.01836,"69":0,"70":0,"71":0.014688,"72":0.01836,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.01836,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.01836,"47":0,"48":0,"49":0.003672,"50":0,"51":0,"52":0,"53":0.104652,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.001836,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.001836},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0.499392,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0,"11.1":0,"12.1":0},G:{"8":0.00049258097429229,"3.2":0.00049258097429229,"4.0-4.1":0.00098516194858458,"4.2-4.3":0,"5.0-5.1":0.0029554858457537,"6.0-6.1":0.0014777429228769,"7.0-7.1":0.0039406477943383,"8.1-8.4":0.0073887146143843,"9.0-9.2":0.0064035526657997,"9.3":0.061080040812244,"10.0-10.2":0.019210657997399,"10.3":0.067483593478043,"11.0-11.2":0.054183907172152,"11.3-11.4":0.092112642192658,"12.0-12.1":0.12413040552166,"12.2-12.4":0.74182694728419,"13.0-13.1":0.34283635810743,"13.2":0.14432622546764,"13.3":3.2530047542263},I:{"3":0.000043541501976285,"4":0.00043541501976285,_:"76","2.1":0,"2.2":0.00013062450592885,"2.3":0.000043541501976285,"4.1":0.00074020553359684,"4.2-4.3":0.019245343873518,"4.4":0,"4.4.3-4.4.4":0.012409328063241},B:{"12":0,"13":0,"14":0.005508,"15":0.001836,"16":0.020196,"17":0.023868,"18":0.185436,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0.001836,"11":0.242352,"5.5":0},P:{"4":6.2480823757576,"5.0-5.4":0.34654943030303,"6.2-6.4":0.01019263030303,"7.2-7.4":0.74406201212121,"8.2":0.01019263030303,"9.2":1.7327471515152,"10.1":2.6704691393939},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.114296},O:{"0":3.339076},Q:{"1.2":0},S:{"2.5":0},H:{"0":3.0839299587629},L:{"0":70.376692}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/NU.js b/assets/node_modules/caniuse-lite/data/regions/NU.js
deleted file mode 100644
index 0220d4c..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/NU.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.980635,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.703352,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0.142023,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0.419306,"74":0,"75":0,"76":0,"77":0,"78":0.277283,"79":23.386454,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0.561329,"69":0,"70":0,"71":1.541964,"72":2.657859,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0.277283,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.277283},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0.142023,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0,"11.1":0.142023,"12.1":0},G:{"8":0.00044000510153046,"3.2":0.00044000510153046,"4.0-4.1":0.00088001020306092,"4.2-4.3":0,"5.0-5.1":0.0026400306091828,"6.0-6.1":0.0013200153045914,"7.0-7.1":0.0035200408122437,"8.1-8.4":0.0066000765229569,"9.0-9.2":0.005720066319896,"9.3":0.054560632589777,"10.0-10.2":0.017160198959688,"10.3":0.060280698909673,"11.0-11.2":0.048400561168351,"11.3-11.4":0.082280953986196,"12.0-12.1":0.11088128558568,"12.2-12.4":0.66264768290487,"13.0-13.1":0.3062435506652,"13.2":0.12892149474842,"13.3":2.9057936905072},I:{"3":0.003501790513834,"4":0.03501790513834,_:"76","2.1":0,"2.2":0.010505371541502,"2.3":0.003501790513834,"4.1":0.059530438735178,"4.2-4.3":1.5477914071146,"4.4":0,"4.4.3-4.4.4":0.99801029644269},B:{"12":0,"13":4.483869,"14":0,"15":0,"16":0.142023,"17":0,"18":0.980635,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":1.122658,"5.5":0},P:{"4":0,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0,"8.2":0,"9.2":0,"10.1":4.211337},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.886938},O:{"0":0},Q:{"1.2":0},S:{"2.5":0},H:{"0":0},L:{"0":46.256211}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/NZ.js b/assets/node_modules/caniuse-lite/data/regions/NZ.js
deleted file mode 100644
index 23ba89c..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/NZ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.005155,"35":0,"36":0,"37":0,"38":0.01031,"39":0,"40":0.07217,"41":0,"42":0.005155,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.005155,"49":0.24744,"50":0.005155,"51":0,"52":0.005155,"53":0.015465,"54":0.015465,"55":0.02062,"56":0.005155,"57":0.03093,"58":0.01031,"59":0.025775,"60":0.015465,"61":0.02062,"62":0.025775,"63":0.366005,"64":0.03093,"65":0.03093,"66":0.01031,"67":0.036085,"68":0.05155,"69":0.14434,"70":0.07217,"71":0.06186,"72":0.067015,"73":0.16496,"74":0.128875,"75":0.180425,"76":0.180425,"77":0.2062,"78":0.706235,"79":13.34114,"80":0.025775,"81":0.015465,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.036085,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.005155,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.01031,"49":0,"50":0.03093,"51":0,"52":0.046395,"53":0,"54":0.005155,"55":0,"56":0.005155,"57":0.005155,"58":0.067015,"59":0.01031,"60":0.02062,"61":0,"62":0.005155,"63":0.005155,"64":0.005155,"65":0.03093,"66":0.01031,"67":0.056705,"68":0.23713,"69":0.01031,"70":0.025775,"71":0.530965,"72":1.28875,"73":0.01031,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005155,"37":0.01031,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.005155,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0.005155,"63":0.005155,"64":0.01031,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.01031,"9":0.005155,"10":0.01031,"11":0.025775,"12":0.05155,"13":2.469245,_:"0","3.1":0,"3.2":0,"5.1":0.01031,"6.1":0.005155,"7.1":0,"9.1":0.046395,"10.1":0.06186,"11.1":0.108255,"12.1":0.262905},G:{"8":0.003035311593478,"3.2":0.003035311593478,"4.0-4.1":0.0060706231869561,"4.2-4.3":0,"5.0-5.1":0.018211869560868,"6.0-6.1":0.0091059347804341,"7.0-7.1":0.024282492747824,"8.1-8.4":0.045529673902171,"9.0-9.2":0.039459050715215,"9.3":0.37637863759128,"10.0-10.2":0.11837715214564,"10.3":0.41583768830649,"11.0-11.2":0.33388427528258,"11.3-11.4":0.56760326798039,"12.0-12.1":0.76489852155647,"12.2-12.4":4.5711792597779,"13.0-13.1":2.1125768690607,"13.2":0.88934629688907,"13.3":20.045197763329},I:{"3":0.00075967061923584,"4":0.0075967061923584,_:"76","2.1":0,"2.2":0.0022790118577075,"2.3":0.00075967061923584,"4.1":0.012914400527009,"4.2-4.3":0.33577441370224,"4.4":0,"4.4.3-4.4.4":0.21650612648221},B:{"12":0,"13":0.005155,"14":0.005155,"15":0.015465,"16":0.03093,"17":0.09279,"18":1.438245,_:"79"},A:{"6":0,"7":0,"8":0.0054004761904762,"9":0,"10":0.0054004761904762,"11":0.89647904761905,"5.5":0},P:{"4":0.1186724068323,"5.0-5.4":0.010788400621118,"6.2-6.4":0,"7.2-7.4":0.032365201863354,"8.2":0.021576801242236,"9.2":0.10788400621118,"10.1":3.0854825776398},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.01938},J:{"7":0,"10":0.004845},R:{_:"0"},M:{"0":0.392445},O:{"0":0.411825},Q:{"1.2":0.15504},S:{"2.5":0},H:{"0":0.22017278350515},L:{"0":37.18755}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/OM.js b/assets/node_modules/caniuse-lite/data/regions/OM.js
deleted file mode 100644
index c43a269..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/OM.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.002387,"12":0,"13":0.004774,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.002387,"32":0,"33":0.007161,"34":0,"35":0,"36":0,"37":0,"38":0.004774,"39":0,"40":0,"41":0,"42":0,"43":0.002387,"44":0,"45":0,"46":0.002387,"47":0.002387,"48":0,"49":0.045353,"50":0,"51":0.002387,"52":0,"53":0.002387,"54":0,"55":0.002387,"56":0.002387,"57":0.002387,"58":0.002387,"59":0.002387,"60":0.002387,"61":0.002387,"62":0.002387,"63":0.007161,"64":0.002387,"65":0.007161,"66":0,"67":0.004774,"68":0,"69":0.009548,"70":0.004774,"71":0.007161,"72":0.007161,"73":0.009548,"74":0.011935,"75":0.009548,"76":0.021483,"77":0.019096,"78":0.050127,"79":2.773694,"80":0.02387,"81":0.004774,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.002387,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.002387,"46":0,"47":0.002387,"48":0.002387,"49":0,"50":0,"51":0.002387,"52":0.002387,"53":0.002387,"54":0,"55":0.002387,"56":0.011935,"57":0.002387,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0.002387,"65":0,"66":0,"67":0,"68":0.028644,"69":0.002387,"70":0.007161,"71":0.069223,"72":0.14322,"73":0.009548,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.002387,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.002387,"44":0,"45":0.004774,"46":0.033418,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.002387,"57":0,"58":0,"60":0.002387,"62":0,"63":0.002387,"64":0.002387,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0.002387,"8":0.009548,"9":0,"10":0.002387,"11":0.014322,"12":0.02387,"13":0.401016,_:"0","3.1":0,"3.2":0,"5.1":0.424886,"6.1":0,"7.1":0,"9.1":0.007161,"10.1":0.038192,"11.1":0.042966,"12.1":0.112189},G:{"8":0.00098210263078924,"3.2":0.00098210263078924,"4.0-4.1":0.0019642052615785,"4.2-4.3":0,"5.0-5.1":0.0058926157847354,"6.0-6.1":0.0029463078923677,"7.0-7.1":0.0078568210463139,"8.1-8.4":0.014731539461839,"9.0-9.2":0.01276733420026,"9.3":0.12178072621787,"10.0-10.2":0.03830200260078,"10.3":0.13454806041813,"11.0-11.2":0.10803128938682,"11.3-11.4":0.18365319195759,"12.0-12.1":0.24748986295889,"12.2-12.4":1.4790465619686,"13.0-13.1":0.68354343102931,"13.2":0.28775607082125,"13.3":6.4858057737321},I:{"3":0.00023026877470356,"4":0.0023026877470356,_:"76","2.1":0,"2.2":0.00069080632411067,"2.3":0.00023026877470356,"4.1":0.0039145691699605,"4.2-4.3":0.10177879841897,"4.4":0,"4.4.3-4.4.4":0.065626600790514},B:{"12":0.007161,"13":0.009548,"14":0.004774,"15":0.004774,"16":0.011935,"17":0.040579,"18":0.257796,_:"79"},A:{"6":0,"7":0,"8":0.0071861263157895,"9":0.004790750877193,"10":0.0071861263157895,"11":0.66351899649123,"5.5":0},P:{"4":0.3647447732342,"5.0-5.4":0.050658996282528,"6.2-6.4":0.050658996282528,"7.2-7.4":0.19250418587361,"8.2":0.12158159107807,"9.2":0.5471171598513,"10.1":3.9716653085502},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.038065},J:{"7":0,"10":0.007613},R:{_:"0"},M:{"0":0.098969},O:{"0":0.502458},Q:{"1.2":0.114195},S:{"2.5":0},H:{"0":0.36037482817869},L:{"0":76.227158}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/PA.js b/assets/node_modules/caniuse-lite/data/regions/PA.js
deleted file mode 100644
index 6cf27eb..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/PA.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0.006412,"9":0,"10":0,"11":0.006412,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.006412,"32":0,"33":0,"34":0.006412,"35":0,"36":0.006412,"37":0,"38":0.012824,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.455252,"50":0,"51":0,"52":0,"53":0.025648,"54":0,"55":0.006412,"56":0.006412,"57":0.006412,"58":0.012824,"59":0.006412,"60":0.006412,"61":0.012824,"62":0.012824,"63":0.051296,"64":0.006412,"65":0.03206,"66":0.006412,"67":0.153888,"68":0.006412,"69":0.044884,"70":0.06412,"71":0.076944,"72":0.089768,"73":0.102592,"74":0.076944,"75":0.089768,"76":0.153888,"77":0.12824,"78":0.519372,"79":25.282516,"80":0.012824,"81":0.012824,"82":0},C:{"2":0,"3":0.012824,"4":0.006412,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.012824,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.019236,"49":0,"50":0,"51":0,"52":0.044884,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0.019236,"64":0.019236,"65":0.019236,"66":0.121828,"67":0,"68":0.083356,"69":0.006412,"70":0.025648,"71":0.506548,"72":1.327284,"73":0.019236,"74":0,"3.5":0.012824,"3.6":0.012824},F:{"9":0,"11":0.006412,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.006412,"47":0,"48":0,"49":0,"50":0.006412,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0.012824,"64":0.044884,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0.006412,"5":0,"6":0,"7":0,"8":0.06412,"9":0,"10":0.025648,"11":0.051296,"12":0.1603,"13":3.282944,_:"0","3.1":0,"3.2":0,"5.1":3.353476,"6.1":0.006412,"7.1":0,"9.1":0.019236,"10.1":0.22442,"11.1":0.35266,"12.1":1.006684},G:{"8":0.00086600100030009,"3.2":0.00086600100030009,"4.0-4.1":0.0017320020006002,"4.2-4.3":0,"5.0-5.1":0.0051960060018005,"6.0-6.1":0.0025980030009003,"7.0-7.1":0.0069280080024007,"8.1-8.4":0.012990015004501,"9.0-9.2":0.011258013003901,"9.3":0.10738412403721,"10.0-10.2":0.033774039011704,"10.3":0.11864213704111,"11.0-11.2":0.09526011003301,"11.3-11.4":0.16194218705612,"12.0-12.1":0.21823225207562,"12.2-12.4":1.3041975064519,"13.0-13.1":0.60273669620886,"13.2":0.25373829308793,"13.3":5.7190706059818},I:{"3":0.00030473781291173,"4":0.0030473781291173,_:"76","2.1":0,"2.2":0.00091421343873518,"2.3":0.00030473781291173,"4.1":0.0051805428194993,"4.2-4.3":0.13469411330698,"4.4":0,"4.4.3-4.4.4":0.086850276679842},B:{"12":0,"13":0.019236,"14":0.006412,"15":0.012824,"16":0.057708,"17":0.076944,"18":0.750204,_:"79"},A:{"6":0,"7":0.006412,"8":0.03206,"9":0,"10":0.006412,"11":0.28854,"5.5":0},P:{"4":0.27339239263804,"5.0-5.4":0,"6.2-6.4":0.030376932515337,"7.2-7.4":0.20251288343558,"8.2":0.040502576687117,"9.2":0.30376932515337,"10.1":2.3997776687117},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0.003588},R:{_:"0"},M:{"0":0.23322},O:{"0":0.093288},Q:{"1.2":0.007176},S:{"2.5":0},H:{"0":0.16305055670103},L:{"0":44.535156}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/PE.js b/assets/node_modules/caniuse-lite/data/regions/PE.js
deleted file mode 100644
index 5fd9ce0..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/PE.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.007368,"27":0,"28":0,"29":0.007368,"30":0,"31":0,"32":0,"33":0.007368,"34":0.014736,"35":0,"36":0.007368,"37":0,"38":0.081048,"39":0.007368,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.397872,"50":0.007368,"51":0.007368,"52":0,"53":0.07368,"54":0.007368,"55":0.007368,"56":0.007368,"57":0.007368,"58":0.022104,"59":0.007368,"60":0.007368,"61":0.044208,"62":0.014736,"63":0.03684,"64":0.007368,"65":0.044208,"66":0.029472,"67":0.081048,"68":0.029472,"69":0.058944,"70":0.088416,"71":0.125256,"72":0.125256,"73":0.154728,"74":0.176832,"75":0.206304,"76":0.243144,"77":0.302088,"78":0.685224,"79":45.040584,"80":0.03684,"81":0.022104,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.007368,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.014736,"49":0,"50":0,"51":0.007368,"52":0.022104,"53":0,"54":0,"55":0,"56":0.007368,"57":0.007368,"58":0,"59":0,"60":0.007368,"61":0,"62":0,"63":0.007368,"64":0.014736,"65":0.014736,"66":0.014736,"67":0.007368,"68":0.058944,"69":0.014736,"70":0.029472,"71":0.434712,"72":1.097832,"73":0.014736,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.007368,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.007368,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0.007368,"58":0.007368,"60":0,"62":0,"63":0,"64":0.139992,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.022104,"9":0,"10":0.022104,"11":0.058944,"12":0.088416,"13":0.869424,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.014736,"10.1":0.044208,"11.1":0.103152,"12.1":0.279984},G:{"8":0.00035897009102731,"3.2":0.00035897009102731,"4.0-4.1":0.00071794018205462,"4.2-4.3":0,"5.0-5.1":0.0021538205461638,"6.0-6.1":0.0010769102730819,"7.0-7.1":0.0028717607282185,"8.1-8.4":0.0053845513654096,"9.0-9.2":0.004666611183355,"9.3":0.044512291287386,"10.0-10.2":0.013999833550065,"10.3":0.049178902470741,"11.0-11.2":0.039486710013004,"11.3-11.4":0.067127407022107,"12.0-12.1":0.090460462938882,"12.2-12.4":0.54060895708713,"13.0-13.1":0.24984318335501,"13.2":0.105178236671,"13.3":2.3706384811443},I:{"3":0.00023646903820817,"4":0.0023646903820817,_:"76","2.1":0,"2.2":0.00070940711462451,"2.3":0.00023646903820817,"4.1":0.0040199736495389,"4.2-4.3":0.10451931488801,"4.4":0,"4.4.3-4.4.4":0.067393675889328},B:{"12":0.007368,"13":0.007368,"14":0.007368,"15":0.007368,"16":0.014736,"17":0.044208,"18":0.456816,_:"79"},A:{"6":0,"7":0,"8":0.022104,"9":0,"10":0.007368,"11":0.206304,"5.5":0},P:{"4":0.25277623762376,"5.0-5.4":0.01011104950495,"6.2-6.4":0.01011104950495,"7.2-7.4":0.040444198019802,"8.2":0.01011104950495,"9.2":0.12133259405941,"10.1":0.56621877227723},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.042112},J:{"7":0,"10":0.002632},R:{_:"0"},M:{"0":0.060536},O:{"0":0.023688},Q:{"1.2":0.005264},S:{"2.5":0},H:{"0":0.11462314776632},L:{"0":40.400064}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/PF.js b/assets/node_modules/caniuse-lite/data/regions/PF.js
deleted file mode 100644
index 42e0eb3..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/PF.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.005958,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.005958,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005958,"47":0,"48":0,"49":0.083412,"50":0,"51":0,"52":0,"53":0.005958,"54":0,"55":0,"56":0,"57":0,"58":0.011916,"59":0,"60":0,"61":0,"62":0,"63":0.041706,"64":0,"65":0.011916,"66":0,"67":0.083412,"68":0.005958,"69":0.017874,"70":0.011916,"71":0.023832,"72":0.02979,"73":0.053622,"74":0.071496,"75":0.166824,"76":0.137034,"77":0.05958,"78":0.321732,"79":15.752952,"80":0.005958,"81":0.005958,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005958,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.08937,"39":0,"40":0,"41":0.05958,"42":0.095328,"43":0.023832,"44":0,"45":0.005958,"46":0,"47":0.280026,"48":0.035748,"49":0.005958,"50":0,"51":0,"52":0.113202,"53":0,"54":0,"55":0,"56":0.02979,"57":0.005958,"58":0,"59":0.083412,"60":0.869868,"61":0.44685,"62":0.065538,"63":0.065538,"64":0,"65":0.005958,"66":0.023832,"67":0.041706,"68":0.41706,"69":0.035748,"70":0.041706,"71":1.912518,"72":4.152726,"73":0.011916,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.005958,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.005958,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.02979,"11":0.035748,"12":0.256194,"13":3.51522,_:"0","3.1":0,"3.2":0,"5.1":0.005958,"6.1":0,"7.1":0,"9.1":0.02979,"10.1":0.053622,"11.1":0.41706,"12.1":0.53622},G:{"8":0.0019403517055117,"3.2":0.0019403517055117,"4.0-4.1":0.0038807034110233,"4.2-4.3":0,"5.0-5.1":0.01164211023307,"6.0-6.1":0.005821055116535,"7.0-7.1":0.015522813644093,"8.1-8.4":0.029105275582675,"9.0-9.2":0.025224572171651,"9.3":0.24060361148345,"10.0-10.2":0.075673716514954,"10.3":0.2658281836551,"11.0-11.2":0.21343868760628,"11.3-11.4":0.36284576893068,"12.0-12.1":0.48896862978894,"12.2-12.4":2.9221696685006,"13.0-13.1":1.3504847870361,"13.2":0.56852304971491,"13.3":12.814082663199},I:{"3":0.00036555204216074,"4":0.0036555204216074,_:"76","2.1":0,"2.2":0.0010966561264822,"2.3":0.00036555204216074,"4.1":0.0062143847167325,"4.2-4.3":0.16157400263505,"4.4":0,"4.4.3-4.4.4":0.10418233201581},B:{"12":0.011916,"13":0.011916,"14":0.011916,"15":0.023832,"16":0.011916,"17":0.08937,"18":1.155852,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.86391,"5.5":0},P:{"4":0.085214870588235,"5.0-5.4":0.021303717647059,"6.2-6.4":0.021303717647059,"7.2-7.4":0.20238531764706,"8.2":0.021303717647059,"9.2":0.24499275294118,"10.1":2.9292611764706},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.008084},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.388032},O:{"0":0.460788},Q:{"1.2":0.044462},S:{"2.5":0},H:{"0":0.091840907216495},L:{"0":39.773852}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/PG.js b/assets/node_modules/caniuse-lite/data/regions/PG.js
deleted file mode 100644
index 9e5d0d4..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/PG.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.006982,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.003491,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.003491,"27":0,"28":0.003491,"29":0.003491,"30":0,"31":0,"32":0,"33":0.003491,"34":0,"35":0.003491,"36":0,"37":0,"38":0,"39":0,"40":0.027928,"41":0.003491,"42":0.003491,"43":0,"44":0,"45":0,"46":0.010473,"47":0,"48":0.003491,"49":0.048874,"50":0.006982,"51":0.003491,"52":0,"53":0.125676,"54":0,"55":0.024437,"56":0.003491,"57":0.003491,"58":0.013964,"59":0.006982,"60":0.006982,"61":0.006982,"62":0.003491,"63":0.045383,"64":0.010473,"65":0.010473,"66":0.017455,"67":0.020946,"68":0.006982,"69":0.090766,"70":0.076802,"71":0.031419,"72":0.066329,"73":0.013964,"74":0.031419,"75":0.027928,"76":0.041892,"77":0.080293,"78":0.171059,"79":5.072423,"80":0.006982,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0.003491,"17":0,"18":0,"19":0,"20":0.003491,"21":0.010473,"22":0,"23":0.003491,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.003491,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0.003491,"40":0,"41":0,"42":0,"43":0.006982,"44":0.010473,"45":0.003491,"46":0,"47":0.003491,"48":0.010473,"49":0,"50":0,"51":0,"52":0.006982,"53":0,"54":0,"55":0.027928,"56":0.006982,"57":0.006982,"58":0.006982,"59":0.010473,"60":0.017455,"61":0.006982,"62":0.006982,"63":0.003491,"64":0.003491,"65":0.006982,"66":0.010473,"67":0.003491,"68":0.087275,"69":0.013964,"70":0.027928,"71":0.261825,"72":0.464303,"73":0.013964,"74":0,"3.5":0,"3.6":0.003491},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.003491,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.003491,"36":0,"37":0.052365,"38":0,"39":0,"40":0,"41":0,"42":0.006982,"43":0,"44":0,"45":0.006982,"46":0.020946,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0.003491,"55":0,"56":0.003491,"57":0,"58":0.003491,"60":0,"62":0.003491,"63":0.020946,"64":0.003491,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.013964},E:{"4":0,"5":0,"6":0,"7":0,"8":0.006982,"9":0,"10":0.006982,"11":0.003491,"12":0.045383,"13":0.157095,_:"0","3.1":0,"3.2":0,"5.1":0.003491,"6.1":0,"7.1":0,"9.1":0.003491,"10.1":0.013964,"11.1":0.041892,"12.1":0.059347},G:{"8":0.00033568170451135,"3.2":0.00033568170451135,"4.0-4.1":0.00067136340902271,"4.2-4.3":0,"5.0-5.1":0.0020140902270681,"6.0-6.1":0.0010070451135341,"7.0-7.1":0.0026854536360908,"8.1-8.4":0.0050352255676703,"9.0-9.2":0.0043638621586476,"9.3":0.041624531359408,"10.0-10.2":0.013091586475943,"10.3":0.045988393518055,"11.0-11.2":0.036924987496249,"11.3-11.4":0.062772478743623,"12.0-12.1":0.084591789536861,"12.2-12.4":0.5055366469941,"13.0-13.1":0.2336344663399,"13.2":0.098354739421827,"13.3":2.216841976593},I:{"3":0.0032418181818182,"4":0.032418181818182,_:"76","2.1":0,"2.2":0.0097254545454545,"2.3":0.0032418181818182,"4.1":0.055110909090909,"4.2-4.3":1.4328836363636,"4.4":0,"4.4.3-4.4.4":0.92391818181818},B:{"12":0.038401,"13":0.118694,"14":0.031419,"15":0.052365,"16":0.111712,"17":0.178041,"18":0.579506,_:"79"},A:{"6":0,"7":0,"8":0.0509686,"9":0,"10":0.043687371428571,"11":0.66987302857143,"5.5":0},P:{"4":1.0693835592841,"5.0-5.4":0.041529458612975,"6.2-6.4":0.11420601118568,"7.2-7.4":0.57103005592841,"8.2":0.041529458612975,"9.2":0.91364808948546,"10.1":1.8792080022371},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.0097635,"11":0.0488175},J:{"7":0,"10":0.006509},R:{_:"0"},M:{"0":0.318941},O:{"0":2.961595},Q:{"1.2":0.371013},S:{"2.5":0},H:{"0":3.0996372457045},L:{"0":68.19836}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/PH.js b/assets/node_modules/caniuse-lite/data/regions/PH.js
deleted file mode 100644
index c9c3763..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/PH.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.004757,"31":0.009514,"32":0,"33":0.014271,"34":0.004757,"35":0,"36":0.009514,"37":0,"38":0.009514,"39":0,"40":0.004757,"41":0,"42":0.004757,"43":0.004757,"44":0,"45":0,"46":0.004757,"47":0.004757,"48":0.004757,"49":0.180766,"50":0.004757,"51":0.009514,"52":0.004757,"53":0.014271,"54":0.004757,"55":0.004757,"56":0.009514,"57":0.009514,"58":0.028542,"59":0.014271,"60":0.014271,"61":0.019028,"62":0.014271,"63":0.066598,"64":0.023785,"65":0.028542,"66":0.028542,"67":0.057084,"68":0.028542,"69":0.090383,"70":0.061841,"71":0.080869,"72":0.076112,"73":0.099897,"74":0.156981,"75":0.176009,"76":0.195037,"77":0.252121,"78":0.480457,"79":15.926436,"80":0.061841,"81":0.038056,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.004757,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.004757,"44":0,"45":0,"46":0,"47":0.019028,"48":0.004757,"49":0,"50":0,"51":0.004757,"52":0.019028,"53":0,"54":0,"55":0,"56":0.090383,"57":0.004757,"58":0.004757,"59":0,"60":0.009514,"61":0.004757,"62":0.004757,"63":0.004757,"64":0.004757,"65":0.004757,"66":0.009514,"67":0.009514,"68":0.061841,"69":0.019028,"70":0.028542,"71":0.299691,"72":0.784905,"73":0.028542,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.033299,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.009514,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.038056,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.004757},E:{"4":0,"5":0,"6":0,"7":0,"8":0.004757,"9":0.004757,"10":0.004757,"11":0.014271,"12":0.04757,"13":0.566083,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.004757,"10.1":0.023785,"11.1":0.066598,"12.1":0.123682},G:{"8":0.0012045599679904,"3.2":0.0012045599679904,"4.0-4.1":0.0024091199359808,"4.2-4.3":0,"5.0-5.1":0.0072273598079424,"6.0-6.1":0.0036136799039712,"7.0-7.1":0.0096364797439232,"8.1-8.4":0.018068399519856,"9.0-9.2":0.015659279583875,"9.3":0.14936543603081,"10.0-10.2":0.046977838751625,"10.3":0.16502471561468,"11.0-11.2":0.13250159647894,"11.3-11.4":0.2252527140142,"12.0-12.1":0.30354911193358,"12.2-12.4":1.8140673117935,"13.0-13.1":0.83837373772132,"13.2":0.35293607062119,"13.3":7.9549140286086},I:{"3":0.00045152832674572,"4":0.0045152832674572,_:"76","2.1":0,"2.2":0.0013545849802372,"2.3":0.00045152832674572,"4.1":0.0076759815546772,"4.2-4.3":0.19957552042161,"4.4":0,"4.4.3-4.4.4":0.12868557312253},B:{"12":0.004757,"13":0.004757,"14":0.004757,"15":0.009514,"16":0.014271,"17":0.052327,"18":0.375803,_:"79"},A:{"6":0,"7":0,"8":0.015063833333333,"9":0,"10":0.0050212777777778,"11":0.16068088888889,"5.5":0},P:{"4":0.24675348292683,"5.0-5.4":0.010281395121951,"6.2-6.4":0.030844185365854,"7.2-7.4":0.061688370731707,"8.2":0.030844185365854,"9.2":0.22619069268293,"10.1":1.4393953170732},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.015729},J:{"7":0,"10":0.005243},R:{_:"0"},M:{"0":0.10486},O:{"0":0.896553},Q:{"1.2":0.015729},S:{"2.5":0},H:{"0":0.95303686597938},L:{"0":59.358894}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/PK.js b/assets/node_modules/caniuse-lite/data/regions/PK.js
deleted file mode 100644
index a987a00..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/PK.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.002578,"27":0,"28":0,"29":0.002578,"30":0,"31":0.002578,"32":0.002578,"33":0.007734,"34":0.002578,"35":0,"36":0.007734,"37":0,"38":0.002578,"39":0,"40":0.007734,"41":0.002578,"42":0.002578,"43":0.028358,"44":0.002578,"45":0,"46":0.002578,"47":0.002578,"48":0.005156,"49":0.06445,"50":0.002578,"51":0,"52":0,"53":0.002578,"54":0.002578,"55":0.002578,"56":0.002578,"57":0.002578,"58":0.005156,"59":0.002578,"60":0.002578,"61":0.010312,"62":0.002578,"63":0.02578,"64":0.002578,"65":0.005156,"66":0.002578,"67":0.005156,"68":0.005156,"69":0.020624,"70":0.023202,"71":0.030936,"72":0.02578,"73":0.028358,"74":0.036092,"75":0.02578,"76":0.028358,"77":0.041248,"78":0.082496,"79":4.361976,"80":0.020624,"81":0.018046,"82":0},C:{"2":0,"3":0,"4":0.002578,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.002578,"41":0,"42":0,"43":0.005156,"44":0.002578,"45":0.002578,"46":0,"47":0.005156,"48":0.005156,"49":0,"50":0.002578,"51":0,"52":0.018046,"53":0,"54":0.002578,"55":0,"56":0.005156,"57":0,"58":0,"59":0,"60":0.002578,"61":0,"62":0,"63":0.010312,"64":0.005156,"65":0.002578,"66":0.010312,"67":0.002578,"68":0.023202,"69":0.005156,"70":0.005156,"71":0.09023,"72":0.221708,"73":0.023202,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0.007734,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.002578,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.018046,"38":0.002578,"39":0,"40":0,"41":0,"42":0.002578,"43":0,"44":0,"45":0.020624,"46":0.24491,"47":0.002578,"48":0,"49":0.002578,"50":0,"51":0,"52":0,"53":0.002578,"54":0.002578,"55":0,"56":0.005156,"57":0.002578,"58":0.002578,"60":0,"62":0,"63":0,"64":0.005156,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.005156},E:{"4":0,"5":0,"6":0,"7":0,"8":0.002578,"9":0,"10":0.002578,"11":0.002578,"12":0.005156,"13":0.056716,_:"0","3.1":0,"3.2":0,"5.1":0.06445,"6.1":0,"7.1":0,"9.1":0,"10.1":0.005156,"11.1":0.005156,"12.1":0.015468},G:{"8":0.00032007302190657,"3.2":0.00032007302190657,"4.0-4.1":0.00064014604381314,"4.2-4.3":0,"5.0-5.1":0.0019204381314394,"6.0-6.1":0.00096021906571972,"7.0-7.1":0.0025605841752526,"8.1-8.4":0.0048010953285986,"9.0-9.2":0.0041609492847854,"9.3":0.039689054716415,"10.0-10.2":0.012482847854356,"10.3":0.0438500040012,"11.0-11.2":0.035208032409723,"11.3-11.4":0.059853655096529,"12.0-12.1":0.080658401520456,"12.2-12.4":0.4820299709913,"13.0-13.1":0.22277082324697,"13.2":0.093781395418626,"13.3":2.113762236671},I:{"3":0.00077857180500659,"4":0.0077857180500659,_:"76","2.1":0,"2.2":0.0023357154150198,"2.3":0.00077857180500659,"4.1":0.013235720685112,"4.2-4.3":0.34412873781291,"4.4":0,"4.4.3-4.4.4":0.22189296442688},B:{"12":0.005156,"13":0.002578,"14":0.007734,"15":0.005156,"16":0.002578,"17":0.015468,"18":0.085074,_:"79"},A:{"6":0,"7":0,"8":0.0498843,"9":0.00277135,"10":0.00831405,"11":0.0498843,"5.5":0},P:{"4":0.8295355890411,"5.0-5.4":0.07081401369863,"6.2-6.4":0.060697726027397,"7.2-7.4":0.14162802739726,"8.2":0.050581438356164,"9.2":0.26302347945205,"10.1":1.5174431506849},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.010795636363636,"11":0.10795636363636},J:{"7":0,"10":0.014844},R:{_:"0"},M:{"0":0.059376},O:{"0":9.225546},Q:{"1.2":0.007422},S:{"2.5":0.007422},H:{"0":3.1971348969072},L:{"0":70.08515}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/PL.js b/assets/node_modules/caniuse-lite/data/regions/PL.js
deleted file mode 100644
index cdbd247..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/PL.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.004277,"27":0,"28":0,"29":0,"30":0,"31":0.004277,"32":0,"33":0,"34":0.004277,"35":0,"36":0,"37":0,"38":0.004277,"39":0,"40":0.004277,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.004277,"47":0,"48":0,"49":0.218127,"50":0.004277,"51":0,"52":0,"53":0.004277,"54":0,"55":0.004277,"56":0.004277,"57":0.004277,"58":0.017108,"59":0.004277,"60":0.004277,"61":0.008554,"62":0.008554,"63":0.029939,"64":0.012831,"65":0.008554,"66":0.008554,"67":0.008554,"68":0.012831,"69":0.012831,"70":0.021385,"71":0.029939,"72":0.021385,"73":0.029939,"74":0.051324,"75":0.059878,"76":0.051324,"77":0.068432,"78":0.218127,"79":9.405123,"80":0.008554,"81":0.008554,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.004277,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.004277,"44":0,"45":0.004277,"46":0,"47":0.008554,"48":0.008554,"49":0.004277,"50":0.004277,"51":0.004277,"52":0.235235,"53":0.004277,"54":0.004277,"55":0.004277,"56":0.012831,"57":0.004277,"58":0.004277,"59":0.004277,"60":0.021385,"61":0.004277,"62":0.004277,"63":0.008554,"64":0.008554,"65":0.012831,"66":0.017108,"67":0.017108,"68":0.179634,"69":0.029939,"70":0.051324,"71":0.953771,"72":2.48066,"73":0.008554,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.004277,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.029939,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.004277,"46":0.055601,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.008554,"54":0,"55":0,"56":0.004277,"57":0,"58":0.004277,"60":0,"62":0.004277,"63":0.008554,"64":0.205296,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.004277},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.004277,"12":0.017108,"13":0.372099,_:"0","3.1":0,"3.2":0,"5.1":0.012831,"6.1":0,"7.1":0,"9.1":0.004277,"10.1":0.008554,"11.1":0.025662,"12.1":0.059878},G:{"8":0.00033949474842453,"3.2":0.00033949474842453,"4.0-4.1":0.00067898949684905,"4.2-4.3":0,"5.0-5.1":0.0020369684905472,"6.0-6.1":0.0010184842452736,"7.0-7.1":0.0027159579873962,"8.1-8.4":0.0050924212263679,"9.0-9.2":0.0044134317295189,"9.3":0.042097348804641,"10.0-10.2":0.013240295188557,"10.3":0.04651078053416,"11.0-11.2":0.037344422326698,"11.3-11.4":0.063485517955387,"12.0-12.1":0.085552676602981,"12.2-12.4":0.51127909112734,"13.0-13.1":0.23628834490347,"13.2":0.099471961288387,"13.3":2.2420233185956},I:{"3":0.00054034519104084,"4":0.0054034519104084,_:"76","2.1":0,"2.2":0.0016210355731225,"2.3":0.00054034519104084,"4.1":0.0091858682476943,"4.2-4.3":0.23883257444005,"4.4":0,"4.4.3-4.4.4":0.15399837944664},B:{"12":0.004277,"13":0.004277,"14":0.017108,"15":0.038493,"16":0.017108,"17":0.068432,"18":0.731367,_:"79"},A:{"6":0,"7":0,"8":0.021385,"9":0,"10":0.004277,"11":0.333606,"5.5":0},P:{"4":0.2532072234763,"5.0-5.4":0.040513155756208,"6.2-6.4":0.040513155756208,"7.2-7.4":0.13166775620767,"8.2":0.060769733634312,"9.2":0.49628615801354,"10.1":3.4031050835214},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.268981},J:{"7":0,"10":0.017169},R:{_:"0"},M:{"0":0.240366},O:{"0":0.034338},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.93734283333333},L:{"0":69.421354}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/PM.js b/assets/node_modules/caniuse-lite/data/regions/PM.js
deleted file mode 100644
index 3e5b524..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/PM.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.131238,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0.007291,"62":0,"63":0,"64":0,"65":0.007291,"66":0,"67":0.014582,"68":0.014582,"69":0,"70":0,"71":0,"72":0,"73":0.014582,"74":0,"75":0.007291,"76":0,"77":0,"78":1.013449,"79":19.940885,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.007291,"53":0,"54":0,"55":0,"56":0.014582,"57":0,"58":0,"59":0,"60":0.007291,"61":0,"62":0,"63":0.051037,"64":0,"65":0,"66":0.153111,"67":0.014582,"68":0.597862,"69":0.021873,"70":0.102074,"71":1.691512,"72":4.535002,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.007291,"12":0.021873,"13":5.059954,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.087492,"10.1":0.065619,"11.1":0.065619,"12.1":0.036455},G:{"8":0.0019954077223167,"3.2":0.0019954077223167,"4.0-4.1":0.0039908154446334,"4.2-4.3":0,"5.0-5.1":0.0119724463339,"6.0-6.1":0.0059862231669501,"7.0-7.1":0.015963261778534,"8.1-8.4":0.02993111583475,"9.0-9.2":0.025940300390117,"9.3":0.24743055756727,"10.0-10.2":0.077820901170351,"10.3":0.27337085795739,"11.0-11.2":0.21949484945484,"11.3-11.4":0.37314124407322,"12.0-12.1":0.50284274602381,"12.2-12.4":3.0050840298089,"13.0-13.1":1.3888037747324,"13.2":0.58465446263879,"13.3":13.177672598179},I:{"3":0.00043478260869565,"4":0.0043478260869565,_:"76","2.1":0,"2.2":0.001304347826087,"2.3":0.00043478260869565,"4.1":0.0073913043478261,"4.2-4.3":0.19217391304348,"4.4":0,"4.4.3-4.4.4":0.12391304347826},B:{"12":0,"13":0,"14":0,"15":0,"16":0,"17":0.080201,"18":1.436327,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.189566,"5.5":0},P:{"4":0.0109935,"5.0-5.4":0,"6.2-6.4":0.0109935,"7.2-7.4":0,"8.2":0,"9.2":0.0109935,"10.1":0.901467},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.021672},O:{"0":0.008127},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.02564706185567},L:{"0":30.259011}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/PN.js b/assets/node_modules/caniuse-lite/data/regions/PN.js
deleted file mode 100644
index 356faa7..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/PN.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":3.078205,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":3.078205,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0,"11.1":0,"12.1":0},G:{"8":0.00061536410923277,"3.2":0.00061536410923277,"4.0-4.1":0.0012307282184655,"4.2-4.3":0,"5.0-5.1":0.0036921846553966,"6.0-6.1":0.0018460923276983,"7.0-7.1":0.0049229128738622,"8.1-8.4":0.0092304616384915,"9.0-9.2":0.007999733420026,"9.3":0.076305149544863,"10.0-10.2":0.023999200260078,"10.3":0.084304882964889,"11.0-11.2":0.067690052015605,"11.3-11.4":0.11507308842653,"12.0-12.1":0.15507175552666,"12.2-12.4":0.92673834850455,"13.0-13.1":0.42829342002601,"13.2":0.1803016840052,"13.3":4.0638645773732},I:{"3":0,"4":0,_:"76","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},B:{"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":9.23,"5.5":0},P:{"4":0,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0,"8.2":0,"9.2":0,"10.1":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0},O:{"0":15.384945},Q:{"1.2":0},S:{"2.5":0},H:{"0":0},L:{"0":53.84685}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/PR.js b/assets/node_modules/caniuse-lite/data/regions/PR.js
deleted file mode 100644
index 2a2df8a..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/PR.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.002532,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.070896,"50":0,"51":0,"52":0,"53":0.002532,"54":0,"55":0,"56":0,"57":0.002532,"58":0.005064,"59":0,"60":0.002532,"61":0,"62":0,"63":0.005064,"64":0,"65":0.005064,"66":0,"67":0.010128,"68":0.002532,"69":0.007596,"70":0.002532,"71":0.005064,"72":0.005064,"73":0.005064,"74":0.010128,"75":0.02532,"76":0.027852,"77":0.015192,"78":0.091152,"79":3.238428,"80":0.005064,"81":0.002532,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.01266,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.005064,"49":0.002532,"50":0,"51":0,"52":0.017724,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0.002532,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0.015192,"67":0.002532,"68":0.060768,"69":0.005064,"70":0.005064,"71":0.093684,"72":0.288648,"73":0.002532,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.002532,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.005064,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.002532,"9":0.002532,"10":0.005064,"11":0.007596,"12":0.043044,"13":0.8862,_:"0","3.1":0,"3.2":0,"5.1":0.007596,"6.1":0,"7.1":0,"9.1":0.002532,"10.1":0.022788,"11.1":0.060768,"12.1":0.141792},G:{"8":0.0031025015504651,"3.2":0.0031025015504651,"4.0-4.1":0.0062050031009303,"4.2-4.3":0,"5.0-5.1":0.018615009302791,"6.0-6.1":0.0093075046513954,"7.0-7.1":0.024820012403721,"8.1-8.4":0.046537523256977,"9.0-9.2":0.040332520156047,"9.3":0.38471019225768,"10.0-10.2":0.12099756046814,"10.3":0.42504271241372,"11.0-11.2":0.34127517055117,"11.3-11.4":0.58016778993698,"12.0-12.1":0.78183039071722,"12.2-12.4":4.6723673350005,"13.0-13.1":2.1593410791237,"13.2":0.90903295428629,"13.3":20.488920239272},I:{"3":0.00029187878787879,"4":0.0029187878787879,_:"76","2.1":0,"2.2":0.00087563636363636,"2.3":0.00029187878787879,"4.1":0.0049619393939394,"4.2-4.3":0.12901042424242,"4.4":0,"4.4.3-4.4.4":0.083185454545455},B:{"12":0.002532,"13":0.002532,"14":0.002532,"15":0.005064,"16":0.007596,"17":0.027852,"18":0.564636,_:"79"},A:{"6":0,"7":0,"8":0.002532,"9":0,"10":0,"11":0.17724,"5.5":0},P:{"4":0.12287349333333,"5.0-5.4":0.020478915555556,"6.2-6.4":0.030718373333333,"7.2-7.4":0.12287349333333,"8.2":0.061436746666667,"9.2":0.49149397333333,"10.1":3.3892605244444},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.022404},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.29872},O:{"0":0.059744},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.21210659793814},L:{"0":55.893736}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/PS.js b/assets/node_modules/caniuse-lite/data/regions/PS.js
deleted file mode 100644
index 68e036e..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/PS.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.006528,"32":0.026112,"33":0.006528,"34":0.006528,"35":0,"36":0.013056,"37":0,"38":0.013056,"39":0,"40":0.006528,"41":0.006528,"42":0,"43":0.013056,"44":0,"45":0,"46":0.006528,"47":0.006528,"48":0,"49":0.45696,"50":0,"51":0,"52":0,"53":0.039168,"54":0,"55":0,"56":0.006528,"57":0,"58":0.026112,"59":0.006528,"60":0.006528,"61":0.058752,"62":0.006528,"63":0.045696,"64":0.006528,"65":0.03264,"66":0.019584,"67":0.03264,"68":0.013056,"69":0.104448,"70":0.078336,"71":0.13056,"72":0.150144,"73":0.117504,"74":0.208896,"75":0.13056,"76":0.19584,"77":0.208896,"78":0.541824,"79":31.46496,"80":0.058752,"81":0.026112,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0.006528,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.006528,"48":0,"49":0,"50":0,"51":0,"52":0.026112,"53":0,"54":0.006528,"55":0,"56":0.006528,"57":0,"58":0,"59":0.013056,"60":0.006528,"61":0,"62":0.013056,"63":0,"64":0.013056,"65":0.03264,"66":0.013056,"67":0.006528,"68":0.091392,"69":0.006528,"70":0.013056,"71":0.548352,"72":1.331712,"73":0.013056,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.006528,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.006528,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.019584,"57":0,"58":0.006528,"60":0,"62":0.006528,"63":0,"64":0.052224,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.026112,"10":0,"11":0.013056,"12":0.078336,"13":1.651584,_:"0","3.1":0,"3.2":0,"5.1":0.332928,"6.1":0,"7.1":0,"9.1":0.006528,"10.1":0.052224,"11.1":0.137088,"12.1":0.639744},G:{"8":0.00058906792037611,"3.2":0.00058906792037611,"4.0-4.1":0.0011781358407522,"4.2-4.3":0,"5.0-5.1":0.0035344075222567,"6.0-6.1":0.0017672037611283,"7.0-7.1":0.0047125433630089,"8.1-8.4":0.0088360188056417,"9.0-9.2":0.0076578829648895,"9.3":0.073044422126638,"10.0-10.2":0.022973648894668,"10.3":0.080702305091527,"11.0-11.2":0.064797471241372,"11.3-11.4":0.11015570111033,"12.0-12.1":0.14844511593478,"12.2-12.4":0.88713628808643,"13.0-13.1":0.40999127258177,"13.2":0.1725969006702,"13.3":3.8902045461638},I:{"3":0.00063093544137022,"4":0.0063093544137022,_:"76","2.1":0,"2.2":0.0018928063241107,"2.3":0.00063093544137022,"4.1":0.010725902503294,"4.2-4.3":0.27887346508564,"4.4":0,"4.4.3-4.4.4":0.17981660079051},B:{"12":0.006528,"13":0.013056,"14":0.006528,"15":0.006528,"16":0.019584,"17":0.06528,"18":0.705024,_:"79"},A:{"6":0,"7":0,"8":0.11960228571429,"9":0,"10":0.0066445714285714,"11":0.24584914285714,"5.5":0},P:{"4":0.16171365124555,"5.0-5.4":0.010107103202847,"6.2-6.4":0.040428412811388,"7.2-7.4":0.11117813523132,"8.2":0.050535516014235,"9.2":0.19203496085409,"10.1":2.2235627046263},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0.003472},R:{_:"0"},M:{"0":0.093744},O:{"0":0.111104},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.63440360137457},L:{"0":44.864528}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/PT.js b/assets/node_modules/caniuse-lite/data/regions/PT.js
deleted file mode 100644
index 935b38f..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/PT.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.006924,"36":0.006924,"37":0,"38":0.013848,"39":0,"40":0.03462,"41":0,"42":0,"43":0.124632,"44":0,"45":0,"46":0,"47":0,"48":0.006924,"49":0.595464,"50":0.006924,"51":0.006924,"52":0.006924,"53":0.013848,"54":0.006924,"55":0.006924,"56":0.013848,"57":0.006924,"58":0.013848,"59":0.027696,"60":0.006924,"61":0.03462,"62":0.020772,"63":0.03462,"64":0.020772,"65":0.03462,"66":0.020772,"67":0.048468,"68":0.013848,"69":0.041544,"70":0.055392,"71":0.083088,"72":0.06924,"73":0.13848,"74":0.055392,"75":0.131556,"76":0.193872,"77":0.186948,"78":0.463908,"79":32.141208,"80":0.062316,"81":0.020772,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.013848,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0.006924,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.006924,"48":0.03462,"49":0,"50":0.013848,"51":0.006924,"52":0.110784,"53":0.006924,"54":0.013848,"55":0,"56":0.013848,"57":0,"58":0.062316,"59":0,"60":0.013848,"61":0,"62":0.006924,"63":0.006924,"64":0.006924,"65":0.006924,"66":0.013848,"67":0.006924,"68":0.159252,"69":0.152328,"70":0.03462,"71":0.879348,"72":2.312616,"73":0.020772,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.006924,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.013848,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.006924,"60":0,"62":0,"63":0.006924,"64":0.13848,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0.006924,"8":0,"9":0,"10":0.006924,"11":0.027696,"12":0.159252,"13":2.790372,_:"0","3.1":0,"3.2":0,"5.1":0.020772,"6.1":0,"7.1":0,"9.1":0.041544,"10.1":0.090012,"11.1":0.186948,"12.1":0.48468},G:{"8":0.0011459185755727,"3.2":0.0011459185755727,"4.0-4.1":0.0022918371511453,"4.2-4.3":0,"5.0-5.1":0.006875511453436,"6.0-6.1":0.003437755726718,"7.0-7.1":0.0091673486045814,"8.1-8.4":0.01718877863359,"9.0-9.2":0.014896941482445,"9.3":0.14209390337101,"10.0-10.2":0.044690824447334,"10.3":0.15699084485346,"11.0-11.2":0.12605104331299,"11.3-11.4":0.21428677363209,"12.0-12.1":0.28877148104431,"12.2-12.4":1.7257533748124,"13.0-13.1":0.79755932859858,"13.2":0.33575414264279,"13.3":7.5676462730819},I:{"3":0.00034153886693017,"4":0.0034153886693017,_:"76","2.1":0,"2.2":0.0010246166007905,"2.3":0.00034153886693017,"4.1":0.0058061607378129,"4.2-4.3":0.15096017918314,"4.4":0,"4.4.3-4.4.4":0.097338577075099},B:{"12":0.006924,"13":0.006924,"14":0.013848,"15":0.020772,"16":0.027696,"17":0.10386,"18":1.675608,_:"79"},A:{"6":0,"7":0.0070406966292135,"8":0.035203483146067,"9":0.0070406966292135,"10":0.014081393258427,"11":1.1898777303371,"5.5":0},P:{"4":0.051196438356164,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0.010239287671233,"8.2":0.010239287671233,"9.2":0.061435726027397,"10.1":1.3003895342466},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.018456},J:{"7":0,"10":0.003076},R:{_:"0"},M:{"0":0.126116},O:{"0":0.301448},Q:{"1.2":0.012304},S:{"2.5":0},H:{"0":0.11357416494845},L:{"0":37.921544}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/PW.js b/assets/node_modules/caniuse-lite/data/regions/PW.js
deleted file mode 100644
index 41a6889..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/PW.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0.012534,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.012534,"34":0,"35":0,"36":0,"37":0.004178,"38":0.004178,"39":0,"40":0.931694,"41":0.004178,"42":0,"43":0,"44":0,"45":0.016712,"46":0,"47":0,"48":0,"49":0.025068,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0.016712,"58":0.004178,"59":0.008356,"60":0,"61":0,"62":0.016712,"63":0.008356,"64":0.033424,"65":0.037602,"66":0.004178,"67":0,"68":0.037602,"69":0.02089,"70":0.12534,"71":0.025068,"72":0.008356,"73":0.116984,"74":0.071026,"75":0.025068,"76":0.008356,"77":0.025068,"78":0.233968,"79":10.745816,"80":0.02089,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0.004178,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.004178,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0.016712,"67":0.004178,"68":0.054314,"69":0.045958,"70":0.008356,"71":0.321706,"72":0.384376,"73":0.016712,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.008356,"12":0.029246,"13":1.08628,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0.037602,"11.1":0.066848,"12.1":0.175476},G:{"8":0.001712833850155,"3.2":0.001712833850155,"4.0-4.1":0.0034256677003101,"4.2-4.3":0,"5.0-5.1":0.01027700310093,"6.0-6.1":0.0051385015504651,"7.0-7.1":0.01370267080124,"8.1-8.4":0.025692507752326,"9.0-9.2":0.022266840052016,"9.3":0.21239139741923,"10.0-10.2":0.066800520156047,"10.3":0.23465823747124,"11.0-11.2":0.18841172351706,"11.3-11.4":0.32029992997899,"12.0-12.1":0.43163413023907,"12.2-12.4":2.5795277783335,"13.0-13.1":1.1921323597079,"13.2":0.50186031809543,"13.3":11.311554746424},I:{"3":0.00047150724637681,"4":0.0047150724637681,_:"76","2.1":0,"2.2":0.0014145217391304,"2.3":0.00047150724637681,"4.1":0.0080156231884058,"4.2-4.3":0.20840620289855,"4.4":0,"4.4.3-4.4.4":0.13437956521739},B:{"12":0,"13":0.004178,"14":0.008356,"15":0,"16":0,"17":0.066848,"18":0.885736,_:"79"},A:{"6":0,"7":0,"8":0.066848,"9":0,"10":0,"11":0.885736,"5.5":0},P:{"4":0.19062031034483,"5.0-5.4":0.074130120689655,"6.2-6.4":0.010590017241379,"7.2-7.4":0.16944027586207,"8.2":0.010590017241379,"9.2":0.65658106896552,"10.1":2.5521941551724},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.005822},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.046576},O:{"0":1.554474},Q:{"1.2":0.139728},S:{"2.5":0},H:{"0":0.088190295532646},L:{"0":57.35574}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/PY.js b/assets/node_modules/caniuse-lite/data/regions/PY.js
deleted file mode 100644
index 4cf4be6..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/PY.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.03938,"50":0,"51":0,"52":0.00358,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.00358,"59":0.00358,"60":0.00358,"61":0.00358,"62":0.00358,"63":0.00358,"64":0.00358,"65":0.00716,"66":0.00358,"67":0.00716,"68":0.0179,"69":0.00716,"70":0.02148,"71":0.02864,"72":0.02506,"73":0.02506,"74":0.02864,"75":0.03222,"76":0.0537,"77":0.04654,"78":0.11814,"79":8.33066,"80":0.00716,"81":0.00358,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0.00358,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.00358,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.00358,"48":0.00358,"49":0,"50":0,"51":0,"52":0.03938,"53":0,"54":0,"55":0,"56":0.00358,"57":0.00358,"58":0,"59":0.00358,"60":0.00358,"61":0.00358,"62":0,"63":0.00358,"64":0.00358,"65":0.00716,"66":0.00358,"67":0.00358,"68":0.02864,"69":0.00716,"70":0.01074,"71":0.18974,"72":0.47972,"73":0.00358,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.02148,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.00358,"11":0.00716,"12":0.01074,"13":0.21838,_:"0","3.1":0,"3.2":0,"5.1":2.2196,"6.1":0,"7.1":0,"9.1":0,"10.1":0.0179,"11.1":0.01074,"12.1":0.0537},G:{"8":0.00031886365909773,"3.2":0.00031886365909773,"4.0-4.1":0.00063772731819546,"4.2-4.3":0,"5.0-5.1":0.0019131819545864,"6.0-6.1":0.00095659097729319,"7.0-7.1":0.0025509092727818,"8.1-8.4":0.0047829548864659,"9.0-9.2":0.0041452275682705,"9.3":0.039539093728118,"10.0-10.2":0.012435682704811,"10.3":0.043684321296389,"11.0-11.2":0.03507500250075,"11.3-11.4":0.059627504251275,"12.0-12.1":0.080353642092628,"12.2-12.4":0.48020867060118,"13.0-13.1":0.22192910673202,"13.2":0.093427052115635,"13.3":2.1057756046814},I:{"3":0.00023341238471673,"4":0.0023341238471673,_:"76","2.1":0,"2.2":0.0007002371541502,"2.3":0.00023341238471673,"4.1":0.0039680105401845,"4.2-4.3":0.1031682740448,"4.4":0,"4.4.3-4.4.4":0.066522529644269},B:{"12":0,"13":0,"14":0.00358,"15":0.00358,"16":0.00358,"17":0.02148,"18":0.1253,_:"79"},A:{"6":0,"7":0,"8":0.00716,"9":0,"10":0,"11":0.0358,"5.5":0},P:{"4":0.7867496,"5.0-5.4":0.0605192,"6.2-6.4":0.0907788,"7.2-7.4":0.35302866666667,"8.2":0.13112493333333,"9.2":0.53458626666667,"10.1":2.5619794666667},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.0321},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.05778},O:{"0":0.04494},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.2248875257732},L:{"0":77.30658}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/QA.js b/assets/node_modules/caniuse-lite/data/regions/QA.js
deleted file mode 100644
index 248ba17..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/QA.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.003525,"34":0,"35":0,"36":0,"37":0,"38":0.017625,"39":0,"40":0,"41":0,"42":0,"43":0.003525,"44":0,"45":0,"46":0,"47":0,"48":0.003525,"49":0.0987,"50":0,"51":0,"52":0,"53":0.010575,"54":0,"55":0.003525,"56":0,"57":0.003525,"58":0.0141,"59":0.003525,"60":0.003525,"61":0.045825,"62":0.003525,"63":0.02115,"64":0,"65":0.017625,"66":0.0141,"67":0.010575,"68":0.00705,"69":0.03525,"70":0.031725,"71":0.031725,"72":0.02115,"73":0.02115,"74":0.052875,"75":0.02115,"76":0.052875,"77":0.074025,"78":0.271425,"79":8.0793,"80":0.0141,"81":0.00705,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.00705,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.0282,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.003525,"49":0,"50":0,"51":0,"52":0.00705,"53":0,"54":0,"55":0.003525,"56":0.003525,"57":0,"58":0,"59":0,"60":0.003525,"61":0,"62":0.003525,"63":0,"64":0.003525,"65":0.00705,"66":0,"67":0,"68":0.04935,"69":0.003525,"70":0.00705,"71":0.141,"72":0.334875,"73":0.00705,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.003525,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.00705,"46":0.09165,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.010575,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.003525,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.003525,"9":0,"10":0.003525,"11":0.0141,"12":0.03525,"13":0.78255,_:"0","3.1":0,"3.2":0,"5.1":0.074025,"6.1":0,"7.1":0,"9.1":0.003525,"10.1":0.0423,"11.1":0.04935,"12.1":0.1692},G:{"8":0.0014654396318896,"3.2":0.0014654396318896,"4.0-4.1":0.0029308792637791,"4.2-4.3":0,"5.0-5.1":0.0087926377913374,"6.0-6.1":0.0043963188956687,"7.0-7.1":0.011723517055117,"8.1-8.4":0.021981594478344,"9.0-9.2":0.019050715214564,"9.3":0.18171451435431,"10.0-10.2":0.057152145643693,"10.3":0.20076522956887,"11.0-11.2":0.16119835950785,"11.3-11.4":0.27403721116335,"12.0-12.1":0.36929078723617,"12.2-12.4":2.2069520856257,"13.0-13.1":1.0199459837951,"13.2":0.42937381214364,"13.3":9.6777633289987},I:{"3":0.00014957180500659,"4":0.0014957180500659,_:"76","2.1":0,"2.2":0.00044871541501976,"2.3":0.00014957180500659,"4.1":0.002542720685112,"4.2-4.3":0.066110737812912,"4.4":0,"4.4.3-4.4.4":0.042627964426877},B:{"12":0.003525,"13":0.00705,"14":0.0141,"15":0.010575,"16":0.0141,"17":0.07755,"18":0.497025,_:"79"},A:{"6":0,"7":0,"8":0.018008152173913,"9":0.0036016304347826,"10":0.0072032608695652,"11":0.46821195652174,"5.5":0},P:{"4":0.24393649851632,"5.0-5.4":0.010164020771513,"6.2-6.4":0.010164020771513,"7.2-7.4":0.09147618694362,"8.2":0.06098412462908,"9.2":0.3049206231454,"10.1":2.5410051928783},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.006475},J:{"7":0,"10":0.019425},R:{_:"0"},M:{"0":0.0777},O:{"0":11.117575},Q:{"1.2":0},S:{"2.5":0},H:{"0":1.2260223367698},L:{"0":51.490175}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/RE.js b/assets/node_modules/caniuse-lite/data/regions/RE.js
deleted file mode 100644
index 81fbeff..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/RE.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.024755,"35":0,"36":0.009902,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.014853,"49":0.222795,"50":0.009902,"51":0,"52":0,"53":0,"54":0.024755,"55":0,"56":0.019804,"57":0.004951,"58":0.019804,"59":0.004951,"60":0,"61":0.024755,"62":0.024755,"63":0.024755,"64":0.004951,"65":0.019804,"66":0.004951,"67":0.014853,"68":0.009902,"69":0.024755,"70":0.024755,"71":0.019804,"72":0.014853,"73":0.004951,"74":0.034657,"75":0.089118,"76":0.108922,"77":0.079216,"78":0.232697,"79":11.629899,"80":0.019804,"81":0.004951,"82":0},C:{"2":0,"3":0.004951,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.029706,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.009902,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.004951,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.004951,"44":0.004951,"45":0.009902,"46":0,"47":0.009902,"48":0.019804,"49":0.029706,"50":0.004951,"51":0,"52":0.084167,"53":0,"54":0.009902,"55":0.029706,"56":0.044559,"57":0.009902,"58":0.004951,"59":0.004951,"60":0.29706,"61":0.009902,"62":0.014853,"63":0.004951,"64":0.004951,"65":0.014853,"66":0.019804,"67":0.024755,"68":0.252501,"69":0.054461,"70":0.084167,"71":0.945641,"72":2.218048,"73":0.014853,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0.004951,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0.004951,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0.009902,"63":0.004951,"64":0.024755,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0.004951,"8":0.029706,"9":0.004951,"10":0.009902,"11":0.004951,"12":0.079216,"13":2.262607,_:"0","3.1":0,"3.2":0,"5.1":0.009902,"6.1":0,"7.1":0,"9.1":0.04951,"10.1":0.064363,"11.1":0.267354,"12.1":0.470345},G:{"8":0.0014711457437231,"3.2":0.0014711457437231,"4.0-4.1":0.0029422914874462,"4.2-4.3":0,"5.0-5.1":0.0088268744623387,"6.0-6.1":0.0044134372311694,"7.0-7.1":0.011769165949785,"8.1-8.4":0.022067186155847,"9.0-9.2":0.019124894668401,"9.3":0.18242207222167,"10.0-10.2":0.057374684005202,"10.3":0.20154696689007,"11.0-11.2":0.16182603180954,"11.3-11.4":0.27510425407622,"12.0-12.1":0.37072872741823,"12.2-12.4":2.215545490047,"13.0-13.1":1.0239174376313,"13.2":0.43104570291087,"13.3":9.7154464915475},I:{"3":0.00022294598155468,"4":0.0022294598155468,_:"76","2.1":0,"2.2":0.00066883794466403,"2.3":0.00022294598155468,"4.1":0.0037900816864295,"4.2-4.3":0.098542123847167,"4.4":0,"4.4.3-4.4.4":0.063539604743083},B:{"12":0.004951,"13":0.009902,"14":0.009902,"15":0.024755,"16":0.029706,"17":0.084167,"18":1.519957,_:"79"},A:{"6":0,"7":0,"8":0.004951,"9":0,"10":0.004951,"11":0.306962,"5.5":0},P:{"4":0.2483760458891,"5.0-5.4":0.020698003824092,"6.2-6.4":0.051745009560229,"7.2-7.4":0.16558403059273,"8.2":0.020698003824092,"9.2":0.52779909751434,"10.1":4.3051847954111},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.186813},O:{"0":0.136323},Q:{"1.2":0.005049},S:{"2.5":0},H:{"0":0.11950167525773},L:{"0":53.282288}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/RO.js b/assets/node_modules/caniuse-lite/data/regions/RO.js
deleted file mode 100644
index cd1ed2e..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/RO.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.004988,"35":0,"36":0.004988,"37":0,"38":0.009976,"39":0.004988,"40":0.034916,"41":0.004988,"42":0,"43":0.004988,"44":0,"45":0,"46":0.004988,"47":0,"48":0.004988,"49":0.453908,"50":0.004988,"51":0.004988,"52":0.004988,"53":0.019952,"54":0,"55":0.009976,"56":0.004988,"57":0.004988,"58":0.019952,"59":0.034916,"60":0.064844,"61":0.07482,"62":0.009976,"63":0.029928,"64":0.009976,"65":0.009976,"66":0.009976,"67":0.029928,"68":0.014964,"69":0.034916,"70":0.079808,"71":0.094772,"72":0.07482,"73":0.064844,"74":0.039904,"75":0.079808,"76":0.084796,"77":0.094772,"78":0.264364,"79":15.672296,"80":0.02494,"81":0.014964,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.019952,"22":0,"23":0,"24":0,"25":0.004988,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.004988,"41":0,"42":0,"43":0.004988,"44":0,"45":0.009976,"46":0,"47":0.004988,"48":0.009976,"49":0.004988,"50":0.044892,"51":0.004988,"52":0.144652,"53":0.004988,"54":0.004988,"55":0.004988,"56":0.014964,"57":0.004988,"58":0.119712,"59":0.004988,"60":0.019952,"61":0.004988,"62":0.004988,"63":0.009976,"64":0.014964,"65":0.029928,"66":0.019952,"67":0.014964,"68":0.184556,"69":0.019952,"70":0.034916,"71":0.693332,"72":1.810644,"73":0.014964,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.014964,"37":0,"38":0,"39":0,"40":0.004988,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.004988,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.004988,"53":0.004988,"54":0,"55":0,"56":0.004988,"57":0.004988,"58":0.009976,"60":0,"62":0.004988,"63":0.004988,"64":0.07482,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.004988,"12":0.019952,"13":0.463884,_:"0","3.1":0,"3.2":0,"5.1":0.084796,"6.1":0,"7.1":0,"9.1":0.029928,"10.1":0.009976,"11.1":0.02494,"12.1":0.064844},G:{"8":0.001236189256777,"3.2":0.001236189256777,"4.0-4.1":0.0024723785135541,"4.2-4.3":0,"5.0-5.1":0.0074171355406622,"6.0-6.1":0.0037085677703311,"7.0-7.1":0.0098895140542163,"8.1-8.4":0.018542838851655,"9.0-9.2":0.016070460338101,"9.3":0.15328746784035,"10.0-10.2":0.048211381014304,"10.3":0.16935792817845,"11.0-11.2":0.13598081824547,"11.3-11.4":0.23116739101731,"12.0-12.1":0.31151969270781,"12.2-12.4":1.8617010207062,"13.0-13.1":0.86038772271682,"13.2":0.36220345223567,"13.3":8.1637938517555},I:{"3":0.00036227140974967,"4":0.0036227140974967,_:"76","2.1":0,"2.2":0.001086814229249,"2.3":0.00036227140974967,"4.1":0.0061586139657444,"4.2-4.3":0.16012396310935,"4.4":0,"4.4.3-4.4.4":0.10324735177866},B:{"12":0.004988,"13":0.004988,"14":0.009976,"15":0.014964,"16":0.009976,"17":0.07482,"18":0.728248,_:"79"},A:{"6":0,"7":0,"8":0.04024505982906,"9":0.0050306324786325,"10":0.010061264957265,"11":0.53324704273504,"5.5":0},P:{"4":0.32438568421053,"5.0-5.4":0.030411157894737,"6.2-6.4":0.040548210526316,"7.2-7.4":0.12164463157895,"8.2":0.060822315789474,"9.2":0.42575621052632,"10.1":4.237288},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.05012},J:{"7":0,"10":0.015036},R:{_:"0"},M:{"0":0.280672},O:{"0":0.245588},Q:{"1.2":0.005012},S:{"2.5":0},H:{"0":0.34164272164948},L:{"0":53.492528}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/RS.js b/assets/node_modules/caniuse-lite/data/regions/RS.js
deleted file mode 100644
index 5e8a789..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/RS.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0.004907,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.009814,"27":0,"28":0,"29":0,"30":0,"31":0.004907,"32":0,"33":0.004907,"34":0.009814,"35":0,"36":0.004907,"37":0,"38":0.019628,"39":0,"40":0.004907,"41":0,"42":0.004907,"43":0.004907,"44":0,"45":0,"46":0.004907,"47":0.004907,"48":0.004907,"49":0.436723,"50":0.004907,"51":0.004907,"52":0.004907,"53":0.024535,"54":0,"55":0.004907,"56":0.009814,"57":0.004907,"58":0.039256,"59":0.004907,"60":0.004907,"61":0.034349,"62":0.009814,"63":0.024535,"64":0.014721,"65":0.014721,"66":0.009814,"67":0.024535,"68":0.019628,"69":0.039256,"70":0.073605,"71":0.093233,"72":0.063791,"73":0.068698,"74":0.053977,"75":0.078512,"76":0.093233,"77":0.088326,"78":0.24535,"79":15.000699,"80":0.034349,"81":0.014721,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.004907,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.004907,"35":0,"36":0,"37":0,"38":0.004907,"39":0,"40":0.004907,"41":0,"42":0.004907,"43":0.009814,"44":0,"45":0.004907,"46":0,"47":0.009814,"48":0.019628,"49":0.004907,"50":0.029442,"51":0.004907,"52":0.206094,"53":0.004907,"54":0.004907,"55":0.004907,"56":0.014721,"57":0.004907,"58":0.004907,"59":0.004907,"60":0.009814,"61":0.004907,"62":0.009814,"63":0.014721,"64":0.014721,"65":0.029442,"66":0.019628,"67":0.014721,"68":0.127582,"69":0.029442,"70":0.039256,"71":0.848911,"72":2.232685,"73":0.044163,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.029442,"37":0,"38":0,"39":0,"40":0.009814,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.004907,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.004907,"54":0,"55":0.004907,"56":0.014721,"57":0.009814,"58":0.004907,"60":0,"62":0.004907,"63":0,"64":0.029442,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.009814},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.004907,"12":0.014721,"13":0.323862,_:"0","3.1":0,"3.2":0,"5.1":0.004907,"6.1":0,"7.1":0,"9.1":0,"10.1":0.014721,"11.1":0.029442,"12.1":0.04907},G:{"8":0.00072922486746024,"3.2":0.00072922486746024,"4.0-4.1":0.0014584497349205,"4.2-4.3":0,"5.0-5.1":0.0043753492047614,"6.0-6.1":0.0021876746023807,"7.0-7.1":0.0058337989396819,"8.1-8.4":0.010938373011904,"9.0-9.2":0.0094799232769831,"9.3":0.09042388356507,"10.0-10.2":0.028439769830949,"10.3":0.099903806842053,"11.0-11.2":0.080214735420626,"11.3-11.4":0.13636505021506,"12.0-12.1":0.18376466659998,"12.2-12.4":1.0982126503951,"13.0-13.1":0.50754050775233,"13.2":0.21366288616585,"13.3":4.8158010247074},I:{"3":0.00037439130434783,"4":0.0037439130434783,_:"76","2.1":0,"2.2":0.0011231739130435,"2.3":0.00037439130434783,"4.1":0.006364652173913,"4.2-4.3":0.16548095652174,"4.4":0,"4.4.3-4.4.4":0.10670152173913},B:{"12":0,"13":0.004907,"14":0.019628,"15":0.044163,"16":0.009814,"17":0.04907,"18":0.387653,_:"79"},A:{"6":0,"7":0,"8":0.0255865,"9":0.0051173,"10":0.0102346,"11":0.3172726,"5.5":0},P:{"4":0.18452936597938,"5.0-5.4":0,"6.2-6.4":0.020503262886598,"7.2-7.4":0.061509788659794,"8.2":0.030754894329897,"9.2":0.21528426030928,"10.1":3.393290007732},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.132418},J:{"7":0,"10":0.015279},R:{_:"0"},M:{"0":0.162976},O:{"0":0.035651},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.42913337972509},L:{"0":61.677607}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/RU.js b/assets/node_modules/caniuse-lite/data/regions/RU.js
deleted file mode 100644
index 696cd38..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/RU.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.007384,"27":0,"28":0.007384,"29":0,"30":0,"31":0,"32":0.007384,"33":0.014768,"34":0,"35":0,"36":0.022152,"37":0,"38":0.007384,"39":0.007384,"40":0.029536,"41":0.014768,"42":0,"43":0.007384,"44":0.007384,"45":0.007384,"46":0.007384,"47":0.007384,"48":0.088608,"49":0.546416,"50":0.014768,"51":0.095992,"52":0.007384,"53":0.014768,"54":0.014768,"55":0.014768,"56":0.03692,"57":0.022152,"58":0.022152,"59":0.029536,"60":0.03692,"61":0.132912,"62":0.03692,"63":0.059072,"64":0.03692,"65":0.051688,"66":0.088608,"67":0.118144,"68":0.03692,"69":0.088608,"70":0.317512,"71":0.3692,"72":0.273208,"73":0.251056,"74":0.14768,"75":0.214136,"76":0.265824,"77":0.280592,"78":0.561184,"79":25.69632,"80":0.199368,"81":0.059072,"82":0},C:{"2":0.007384,"3":0.014768,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.007384,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.007384,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.007384,"31":0.007384,"32":0.007384,"33":0,"34":0,"35":0.007384,"36":0.007384,"37":0,"38":0.007384,"39":0,"40":0,"41":0,"42":0.007384,"43":0.007384,"44":0.007384,"45":0.03692,"46":0.014768,"47":0.022152,"48":0.044304,"49":0.022152,"50":0.044304,"51":0.029536,"52":0.243672,"53":0.029536,"54":0.029536,"55":0.029536,"56":0.088608,"57":0.014768,"58":0.007384,"59":0.014768,"60":0.051688,"61":0.014768,"62":0.014768,"63":0.03692,"64":0.044304,"65":0.044304,"66":0.059072,"67":0.03692,"68":0.236288,"69":0.059072,"70":0.066456,"71":0.62764,"72":2.089672,"73":0.029536,"74":0,"3.5":0,"3.6":0.007384},F:{"9":0,"11":0,"12":0.007384,"15":0,"16":0,"17":0,"18":0.007384,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.07384,"37":0.007384,"38":0,"39":0,"40":0,"41":0,"42":0.007384,"43":0.007384,"44":0,"45":0.007384,"46":0.029536,"47":0.007384,"48":0.007384,"49":0,"50":0,"51":0,"52":0,"53":0.014768,"54":0.007384,"55":0.007384,"56":0.022152,"57":0.022152,"58":0.03692,"60":0.014768,"62":0.014768,"63":0.022152,"64":0.236288,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.044304},E:{"4":0.014768,"5":0,"6":0,"7":0,"8":0.007384,"9":0,"10":0.007384,"11":0.022152,"12":0.118144,"13":1.912456,_:"0","3.1":0,"3.2":0,"5.1":0.051688,"6.1":0,"7.1":0,"9.1":0.007384,"10.1":0.044304,"11.1":0.11076,"12.1":0.391352},G:{"8":0.00095249214764429,"3.2":0.00095249214764429,"4.0-4.1":0.0019049842952886,"4.2-4.3":0,"5.0-5.1":0.0057149528858658,"6.0-6.1":0.0028574764429329,"7.0-7.1":0.0076199371811543,"8.1-8.4":0.014287382214664,"9.0-9.2":0.012382397919376,"9.3":0.11810902630789,"10.0-10.2":0.037147193758127,"10.3":0.13049142422727,"11.0-11.2":0.10477413624087,"11.3-11.4":0.17811603160948,"12.0-12.1":0.24002802120636,"12.2-12.4":1.4344531743523,"13.0-13.1":0.66293453476043,"13.2":0.27908019925978,"13.3":6.2902581430429},I:{"3":0.00039203162055336,"4":0.0039203162055336,_:"76","2.1":0,"2.2":0.0011760948616601,"2.3":0.00039203162055336,"4.1":0.0066645375494071,"4.2-4.3":0.17327797628459,"4.4":0,"4.4.3-4.4.4":0.11172901185771},B:{"12":0.007384,"13":0.014768,"14":0.051688,"15":0.014768,"16":0.029536,"17":0.103376,"18":0.863928,_:"79"},A:{"6":0.024875606557377,"7":0.033167475409836,"8":0.19900485245902,"9":0.066334950819672,"10":0.091210557377049,"11":0.59701455737705,"5.5":0},P:{"4":0.1032,"5.0-5.4":0.02064,"6.2-6.4":0.01032,"7.2-7.4":0.03096,"8.2":0.02064,"9.2":0.1032,"10.1":0.79464},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.012426,"11":0.037278},J:{"7":0,"10":0.007848},R:{_:"0"},M:{"0":0.10464},O:{"0":0.452568},Q:{"1.2":0.018312},S:{"2.5":0},H:{"0":0.37149896907216},L:{"0":28.969296}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/RW.js b/assets/node_modules/caniuse-lite/data/regions/RW.js
deleted file mode 100644
index a7979fc..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/RW.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.004621,"26":0,"27":0,"28":0.004621,"29":0,"30":0,"31":0,"32":0.004621,"33":0.004621,"34":0.004621,"35":0.004621,"36":0.023105,"37":0,"38":0,"39":0,"40":0.009242,"41":0.009242,"42":0,"43":0.027726,"44":0,"45":0,"46":0.004621,"47":0,"48":0,"49":0.036968,"50":0.004621,"51":0,"52":0,"53":0,"54":0,"55":0.032347,"56":0,"57":0.004621,"58":0.023105,"59":0,"60":0.055452,"61":0,"62":0.013863,"63":0.161735,"64":0.004621,"65":0.027726,"66":0.004621,"67":0.009242,"68":0.004621,"69":0.170977,"70":0.189461,"71":0.013863,"72":0.013863,"73":0.041589,"74":0.097041,"75":0.064694,"76":0.069315,"77":0.106283,"78":0.27726,"79":10.845487,"80":0.055452,"81":0.032347,"82":0},C:{"2":0,"3":0,"4":0.004621,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0.004621,"19":0,"20":0.004621,"21":0.009242,"22":0,"23":0.004621,"24":0,"25":0,"26":0,"27":0,"28":0.004621,"29":0.004621,"30":0,"31":0.004621,"32":0,"33":0,"34":0,"35":0,"36":0.004621,"37":0.004621,"38":0,"39":0,"40":0.018484,"41":0.004621,"42":0,"43":0.018484,"44":0.009242,"45":0.004621,"46":0.004621,"47":0.027726,"48":0.013863,"49":0.009242,"50":0.018484,"51":0,"52":0.027726,"53":0,"54":0.004621,"55":0,"56":0.013863,"57":0.013863,"58":0.004621,"59":0.018484,"60":0.009242,"61":0,"62":0.004621,"63":0.004621,"64":0.004621,"65":0.004621,"66":0.023105,"67":0.009242,"68":0.106283,"69":0.027726,"70":0.04621,"71":0.688529,"72":1.585003,"73":0.170977,"74":0,"3.5":0.004621,"3.6":0},F:{"9":0,"11":0,"12":0.004621,"15":0.004621,"16":0.013863,"17":0,"18":0,"19":0.018484,"20":0.04621,"21":0.004621,"22":0,"23":0.060073,"24":0,"25":0,"26":0,"27":0,"28":0.009242,"29":0,"30":0,"31":0,"32":0.004621,"33":0.004621,"34":0,"35":0,"36":0,"37":0.309607,"38":0.009242,"39":0,"40":0,"41":0,"42":0.004621,"43":0,"44":0,"45":0.018484,"46":0.078557,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.023105,"54":0.004621,"55":0.009242,"56":0.004621,"57":0,"58":0,"60":0.004621,"62":0,"63":0.013863,"64":0.018484,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.13863},E:{"4":0,"5":0,"6":0,"7":0,"8":0.036968,"9":0.004621,"10":0.018484,"11":0.041589,"12":0.078557,"13":0.707013,_:"0","3.1":0,"3.2":0,"5.1":0.50831,"6.1":0.009242,"7.1":0,"9.1":0,"10.1":0.083178,"11.1":0.087799,"12.1":0.212566},G:{"8":0.00049926037811343,"3.2":0.00049926037811343,"4.0-4.1":0.00099852075622687,"4.2-4.3":0,"5.0-5.1":0.0029955622686806,"6.0-6.1":0.0014977811343403,"7.0-7.1":0.0039940830249075,"8.1-8.4":0.0074889056717015,"9.0-9.2":0.0064903849154746,"9.3":0.061908286886066,"10.0-10.2":0.019471154746424,"10.3":0.06839867180154,"11.0-11.2":0.054918641592478,"11.3-11.4":0.093361690707212,"12.0-12.1":0.12581361528459,"12.2-12.4":0.75188612943883,"13.0-13.1":0.34748522316695,"13.2":0.14628329078724,"13.3":3.2971155370611},I:{"3":0.00067493280632411,"4":0.0067493280632411,_:"76","2.1":0,"2.2":0.0020247984189723,"2.3":0.00067493280632411,"4.1":0.01147385770751,"4.2-4.3":0.29832030039526,"4.4":0,"4.4.3-4.4.4":0.19235584980237},B:{"12":0.078557,"13":0.291123,"14":0.055452,"15":0.023105,"16":0.04621,"17":0.18484,"18":0.887232,_:"79"},A:{"6":0,"7":0,"8":0.053471571428571,"9":0,"10":0.014583155844156,"11":0.30138522077922,"5.5":0},P:{"4":0.51412541436464,"5.0-5.4":0.030847524861878,"6.2-6.4":0.010282508287293,"7.2-7.4":0.12339009944751,"8.2":0.030847524861878,"9.2":0.2879102320442,"10.1":0.8534481878453},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.010758,"11":0.086064},J:{"7":0,"10":0.048411},R:{_:"0"},M:{"0":0.134475},O:{"0":2.780943},Q:{"1.2":0.05379},S:{"2.5":0.311982},H:{"0":17.482517108247},L:{"0":39.298101}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SA.js b/assets/node_modules/caniuse-lite/data/regions/SA.js
deleted file mode 100644
index 58d7ae6..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SA.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.003631,"31":0,"32":0,"33":0.007262,"34":0.007262,"35":0,"36":0.003631,"37":0,"38":0.003631,"39":0,"40":0.003631,"41":0,"42":0,"43":0.010893,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.094406,"50":0,"51":0,"52":0.010893,"53":0.007262,"54":0,"55":0.007262,"56":0.003631,"57":0,"58":0.003631,"59":0,"60":0,"61":0.003631,"62":0.003631,"63":0.025417,"64":0.003631,"65":0.007262,"66":0.003631,"67":0.010893,"68":0.003631,"69":0.039941,"70":0.018155,"71":0.021786,"72":0.014524,"73":0.021786,"74":0.043572,"75":0.032679,"76":0.039941,"77":0.058096,"78":0.203336,"79":8.594577,"80":0.014524,"81":0.014524,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.007262,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.003631,"48":0.007262,"49":0,"50":0,"51":0,"52":0.014524,"53":0.003631,"54":0,"55":0,"56":0.007262,"57":0,"58":0,"59":0,"60":0.003631,"61":0,"62":0,"63":0.003631,"64":0.003631,"65":0,"66":0.003631,"67":0.003631,"68":0.039941,"69":0.007262,"70":0.010893,"71":0.228753,"72":0.468399,"73":0.010893,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.010893,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0.003631,"55":0,"56":0.007262,"57":0.003631,"58":0.003631,"60":0.003631,"62":0.007262,"63":0.007262,"64":0.018155,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.010893,"9":0.010893,"10":0.007262,"11":0.014524,"12":0.068989,"13":0.864178,_:"0","3.1":0,"3.2":0,"5.1":0.54465,"6.1":0,"7.1":0,"9.1":0.003631,"10.1":0.025417,"11.1":0.07262,"12.1":0.203336},G:{"8":0.0023381380414124,"3.2":0.0023381380414124,"4.0-4.1":0.0046762760828248,"4.2-4.3":0,"5.0-5.1":0.014028828248475,"6.0-6.1":0.0070144141242373,"7.0-7.1":0.018705104331299,"8.1-8.4":0.035072070621186,"9.0-9.2":0.030395794538362,"9.3":0.28992911713514,"10.0-10.2":0.091187383615085,"10.3":0.3203249116735,"11.0-11.2":0.25719518455537,"11.3-11.4":0.43723181374412,"12.0-12.1":0.58921078643593,"12.2-12.4":3.5212358903671,"13.0-13.1":1.627344076823,"13.2":0.68507444613384,"13.3":15.441063625488},I:{"3":0.00021080368906456,"4":0.0021080368906456,_:"76","2.1":0,"2.2":0.00063241106719368,"2.3":0.00021080368906456,"4.1":0.0035836627140975,"4.2-4.3":0.093175230566535,"4.4":0,"4.4.3-4.4.4":0.060079051383399},B:{"12":0.003631,"13":0.003631,"14":0.007262,"15":0.007262,"16":0.014524,"17":0.047203,"18":0.43572,_:"79"},A:{"6":0,"7":0,"8":0.011195583333333,"9":0.0037318611111111,"10":0.0037318611111111,"11":0.25003469444444,"5.5":0},P:{"4":0.23669893548387,"5.0-5.4":0.020582516129032,"6.2-6.4":0.041165032258065,"7.2-7.4":0.16466012903226,"8.2":0.061747548387097,"9.2":0.36019403225806,"10.1":2.4801931935484},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.108273},O:{"0":2.350161},Q:{"1.2":0.006369},S:{"2.5":0},H:{"0":0.22913079381443},L:{"0":54.821017}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SB.js b/assets/node_modules/caniuse-lite/data/regions/SB.js
deleted file mode 100644
index c360245..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SB.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0.005098,"9":0,"10":0,"11":0.005098,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.002549,"30":0.002549,"31":0,"32":0,"33":0,"34":0,"35":0.002549,"36":0,"37":0.002549,"38":0,"39":0,"40":0.005098,"41":0,"42":0,"43":0.017843,"44":0,"45":0,"46":0.002549,"47":0,"48":0,"49":0.053529,"50":0,"51":0,"52":0.002549,"53":0,"54":0.002549,"55":0.002549,"56":0.002549,"57":0,"58":0.002549,"59":0.002549,"60":0.007647,"61":0.002549,"62":0.010196,"63":0.066274,"64":0,"65":0.010196,"66":0,"67":0,"68":0,"69":0.015294,"70":0,"71":0.002549,"72":0.005098,"73":0.002549,"74":0.005098,"75":0.017843,"76":0.012745,"77":0.017843,"78":0.089215,"79":2.434295,"80":0.005098,"81":0.002549,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.002549,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.005098,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0.007647,"42":0,"43":0.002549,"44":0,"45":0,"46":0.007647,"47":0.005098,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.002549,"56":0.005098,"57":0,"58":0.002549,"59":0.002549,"60":0.002549,"61":0.002549,"62":0,"63":0,"64":0.002549,"65":0,"66":0.022941,"67":0.002549,"68":0.02549,"69":0.002549,"70":0.002549,"71":0.135097,"72":0.392546,"73":0.020392,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0.002549,"15":0,"16":0,"17":0.010196,"18":0,"19":0.002549,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.002549,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.010196,"38":0.002549,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.007647,"46":0.017843,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.056078,"54":0,"55":0,"56":0.002549,"57":0,"58":0.002549,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.033137},E:{"4":0,"5":0,"6":0.007647,"7":0,"8":0,"9":0,"10":0.010196,"11":0.028039,"12":0.005098,"13":0.168234,_:"0","3.1":0,"3.2":0,"5.1":0.005098,"6.1":0,"7.1":0,"9.1":0,"10.1":0.002549,"11.1":0.104509,"12.1":0.002549},G:{"8":0.00042899159747924,"3.2":0.00042899159747924,"4.0-4.1":0.00085798319495849,"4.2-4.3":0,"5.0-5.1":0.0025739495848755,"6.0-6.1":0.0012869747924377,"7.0-7.1":0.003431932779834,"8.1-8.4":0.0064348739621887,"9.0-9.2":0.0055768907672302,"9.3":0.053194958087426,"10.0-10.2":0.016730672301691,"10.3":0.058771848854656,"11.0-11.2":0.047189075722717,"11.3-11.4":0.080221428728619,"12.0-12.1":0.10810588256477,"12.2-12.4":0.64606134580374,"13.0-13.1":0.29857815184555,"13.2":0.12569453806142,"13.3":2.8330605097529},I:{"3":0.0011648445322793,"4":0.011648445322793,_:"76","2.1":0,"2.2":0.0034945335968379,"2.3":0.0011648445322793,"4.1":0.019802357048748,"4.2-4.3":0.51486128326746,"4.4":0,"4.4.3-4.4.4":0.3319806916996},B:{"12":0.010196,"13":0.030588,"14":0.022941,"15":0.099411,"16":0.038235,"17":0.091764,"18":0.224312,_:"79"},A:{"6":0,"7":0,"8":0.030588,"9":0,"10":0.007647,"11":0.84117,"5.5":0},P:{"4":1.4727282208029,"5.0-5.4":0.1726646879562,"6.2-6.4":0.27423215145985,"7.2-7.4":1.1984960693431,"8.2":0.12188095620438,"9.2":0.87348018613139,"10.1":1.0461448740876},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.07451},J:{"7":0,"10":0.014902},R:{_:"0"},M:{"0":0.096863},O:{"0":7.100803},Q:{"1.2":0.134118},S:{"2.5":0},H:{"0":5.622137967354},L:{"0":65.536695}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SC.js b/assets/node_modules/caniuse-lite/data/regions/SC.js
deleted file mode 100644
index 9015ef6..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SC.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0.02929,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.011716,"39":0,"40":0,"41":0.005858,"42":0,"43":0.011716,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.480356,"50":0.005858,"51":0,"52":0,"53":0,"54":0,"55":0.017574,"56":0.005858,"57":0,"58":0.011716,"59":0,"60":0.017574,"61":0.023432,"62":0.017574,"63":0.046864,"64":0.023432,"65":0.005858,"66":0.005858,"67":0.005858,"68":0.011716,"69":0.105444,"70":0.152308,"71":0.076154,"72":0.158166,"73":0.990002,"74":0.046864,"75":0.164024,"76":0.872842,"77":0.187456,"78":0.2929,"79":14.252514,"80":0.017574,"81":0.017574,"82":0},C:{"2":0,"3":0.011716,"4":0.005858,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.02929,"22":0.005858,"23":0,"24":0,"25":0.005858,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.005858,"39":0,"40":0,"41":0,"42":0,"43":0.005858,"44":0,"45":0.02929,"46":0.005858,"47":0.005858,"48":0,"49":0.005858,"50":0.023432,"51":0,"52":0.082012,"53":0,"54":0,"55":0,"56":0.017574,"57":0,"58":0,"59":0,"60":0.082012,"61":0.005858,"62":0.005858,"63":0.041006,"64":0.017574,"65":0,"66":0.011716,"67":0.011716,"68":0.831836,"69":0.128876,"70":0.08787,"71":1.599234,"72":3.731546,"73":0.08787,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.017574,"46":0.005858,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.005858,"54":0,"55":0.005858,"56":0.005858,"57":0.02929,"58":0.005858,"60":0,"62":0,"63":0.005858,"64":0.046864,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.005858,"10":0,"11":0.064438,"12":0.111302,"13":1.388346,_:"0","3.1":0,"3.2":0,"5.1":0.017574,"6.1":0,"7.1":0,"9.1":0.005858,"10.1":0.011716,"11.1":0.076154,"12.1":0.275326},G:{"8":0.00078673241972592,"3.2":0.00078673241972592,"4.0-4.1":0.0015734648394518,"4.2-4.3":0,"5.0-5.1":0.0047203945183555,"6.0-6.1":0.0023601972591778,"7.0-7.1":0.0062938593578073,"8.1-8.4":0.011800986295889,"9.0-9.2":0.010227521456437,"9.3":0.097554820046014,"10.0-10.2":0.030682564369311,"10.3":0.10778234150245,"11.0-11.2":0.086540566169851,"11.3-11.4":0.14711896248875,"12.0-12.1":0.19825656977093,"12.2-12.4":1.1848190241072,"13.0-13.1":0.54756576412924,"13.2":0.23051259897969,"13.3":5.19558089987},I:{"3":0.00021345454545455,"4":0.0021345454545455,_:"76","2.1":0,"2.2":0.00064036363636364,"2.3":0.00021345454545455,"4.1":0.0036287272727273,"4.2-4.3":0.094346909090909,"4.4":0,"4.4.3-4.4.4":0.060834545454545},B:{"12":0.023432,"13":0.064438,"14":0.064438,"15":0.02929,"16":0.093728,"17":0.128876,"18":0.902132,_:"79"},A:{"6":0,"7":0,"8":0.085049481481481,"9":0,"10":0.006074962962963,"11":0.56497155555556,"5.5":0},P:{"4":0.29356933595285,"5.0-5.4":0.030369241650295,"6.2-6.4":0.030369241650295,"7.2-7.4":0.12147696660118,"8.2":0.070861563850688,"9.2":0.48590786640472,"10.1":3.6645551591356},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.02071},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.654436},O:{"0":2.013012},Q:{"1.2":0.202958},S:{"2.5":0},H:{"0":0.58428532302406},L:{"0":44.471432}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SD.js b/assets/node_modules/caniuse-lite/data/regions/SD.js
deleted file mode 100644
index 8622be7..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SD.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.006616,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0.003308,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.003308,"27":0,"28":0,"29":0.01654,"30":0,"31":0.003308,"32":0,"33":0.023156,"34":0,"35":0,"36":0.003308,"37":0,"38":0.003308,"39":0,"40":0.01654,"41":0,"42":0,"43":0.046312,"44":0,"45":0.003308,"46":0.009924,"47":0,"48":0.013232,"49":0.009924,"50":0.003308,"51":0.006616,"52":0.003308,"53":0.009924,"54":0,"55":0.013232,"56":0.003308,"57":0.009924,"58":0.006616,"59":0,"60":0.003308,"61":0,"62":0.006616,"63":0.04962,"64":0.003308,"65":0.006616,"66":0.003308,"67":0.003308,"68":0.006616,"69":0.03308,"70":0.01654,"71":0.009924,"72":0.006616,"73":0.006616,"74":0.01654,"75":0.013232,"76":0.023156,"77":0.026464,"78":0.06616,"79":1.693696,"80":0.009924,"81":0.003308,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.003308,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.003308,"36":0,"37":0,"38":0.006616,"39":0,"40":0.003308,"41":0,"42":0,"43":0.009924,"44":0.003308,"45":0.003308,"46":0,"47":0.023156,"48":0.019848,"49":0.003308,"50":0.003308,"51":0.003308,"52":0.026464,"53":0,"54":0.003308,"55":0.003308,"56":0.006616,"57":0.003308,"58":0,"59":0.003308,"60":0.003308,"61":0.003308,"62":0.006616,"63":0.003308,"64":0.003308,"65":0.006616,"66":0.009924,"67":0.003308,"68":0.076084,"69":0.026464,"70":0.019848,"71":0.334108,"72":0.79392,"73":0.029772,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0.006616,"16":0.006616,"17":0,"18":0,"19":0.006616,"20":0.023156,"21":0,"22":0,"23":0.01654,"24":0,"25":0,"26":0,"27":0,"28":0.003308,"29":0.003308,"30":0.003308,"31":0,"32":0,"33":0.003308,"34":0,"35":0.003308,"36":0.003308,"37":0.006616,"38":0,"39":0,"40":0,"41":0,"42":0.003308,"43":0,"44":0,"45":0.003308,"46":0.013232,"47":0,"48":0,"49":0,"50":0,"51":0.003308,"52":0,"53":0.056236,"54":0.026464,"55":0.029772,"56":0.019848,"57":0,"58":0,"60":0,"62":0,"63":0.003308,"64":0.009924,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0.006616,"11.6":0,"12.1":0.029772},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.013232,"11":0.009924,"12":0.006616,"13":0.102548,_:"0","3.1":0,"3.2":0,"5.1":5.759228,"6.1":0,"7.1":0,"9.1":0.023156,"10.1":0.03308,"11.1":0.04962,"12.1":0.09924},G:{"8":0.00031004341302391,"3.2":0.00031004341302391,"4.0-4.1":0.00062008682604781,"4.2-4.3":0,"5.0-5.1":0.0018602604781434,"6.0-6.1":0.00093013023907172,"7.0-7.1":0.0024803473041913,"8.1-8.4":0.0046506511953586,"9.0-9.2":0.0040305643693108,"9.3":0.038445383214964,"10.0-10.2":0.012091693107932,"10.3":0.042475947584275,"11.0-11.2":0.03410477543263,"11.3-11.4":0.057978118235471,"12.0-12.1":0.078130940082025,"12.2-12.4":0.466925380014,"13.0-13.1":0.21579021546464,"13.2":0.090842720016005,"13.3":2.0475266996099},I:{"3":0.001081069828722,"4":0.01081069828722,_:"76","2.1":0,"2.2":0.003243209486166,"2.3":0.001081069828722,"4.1":0.018378187088274,"4.2-4.3":0.47783286429513,"4.4":0,"4.4.3-4.4.4":0.30810490118577},B:{"12":0.009924,"13":0.009924,"14":0.006616,"15":0.006616,"16":0.006616,"17":0.062852,"18":0.162092,_:"79"},A:{"6":0,"7":0,"8":0.034917777777778,"9":0.0034917777777778,"10":0.0034917777777778,"11":0.14665466666667,"5.5":0},P:{"4":2.0648554715262,"5.0-5.4":0.12146208656036,"6.2-6.4":0.15182760820046,"7.2-7.4":0.42511730296128,"8.2":0.070852883826879,"9.2":0.54657938952164,"10.1":1.0425495763098},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.03346},J:{"7":0,"10":0.013384},R:{_:"0"},M:{"0":0.180684},O:{"0":6.718768},Q:{"1.2":0.026768},S:{"2.5":0.013384},H:{"0":12.290973333333},L:{"0":52.555636}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SE.js b/assets/node_modules/caniuse-lite/data/regions/SE.js
deleted file mode 100644
index 2fd1f7d..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SE.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.011048,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005524,"47":0,"48":0.005524,"49":0.19334,"50":0,"51":0.005524,"52":0,"53":0.011048,"54":0,"55":0.005524,"56":0.005524,"57":0.005524,"58":0.005524,"59":0.005524,"60":0.005524,"61":0.066288,"62":0.005524,"63":0.022096,"64":0.005524,"65":0.016572,"66":0.022096,"67":0.033144,"68":0.011048,"69":0.033144,"70":0.049716,"71":0.132576,"72":0.033144,"73":0.071812,"74":0.033144,"75":0.08286,"76":0.154672,"77":0.176768,"78":1.568816,"79":16.152176,"80":0.049716,"81":0.011048,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.038668,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0.011048,"42":0,"43":0,"44":0,"45":0.005524,"46":0,"47":0,"48":0.016572,"49":0,"50":0,"51":0,"52":0.033144,"53":0,"54":0,"55":0,"56":0.022096,"57":0,"58":0,"59":0.005524,"60":0.011048,"61":0,"62":0.005524,"63":0.005524,"64":0.005524,"65":0.005524,"66":0.016572,"67":0.005524,"68":0.198864,"69":0.016572,"70":0.038668,"71":0.530304,"72":1.171088,"73":0.011048,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005524,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.016572,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.005524,"9":0,"10":0.005524,"11":0.016572,"12":0.099432,"13":3.198396,_:"0","3.1":0,"3.2":0,"5.1":0.077336,"6.1":0,"7.1":0,"9.1":0.016572,"10.1":0.088384,"11.1":0.132576,"12.1":0.325916},G:{"8":0.0035113061918576,"3.2":0.0035113061918576,"4.0-4.1":0.0070226123837151,"4.2-4.3":0,"5.0-5.1":0.021067837151145,"6.0-6.1":0.010533918575573,"7.0-7.1":0.02809044953486,"8.1-8.4":0.052669592877863,"9.0-9.2":0.045646980494148,"9.3":0.43540196779034,"10.0-10.2":0.13694094148244,"10.3":0.48104894828449,"11.0-11.2":0.38624368110433,"11.3-11.4":0.65661425787736,"12.0-12.1":0.8848491603481,"12.2-12.4":5.2880271249375,"13.0-13.1":2.4438691095329,"13.2":1.0288127142143,"13.3":23.188666091027},I:{"3":0.0002035256916996,"4":0.002035256916996,_:"76","2.1":0,"2.2":0.00061057707509881,"2.3":0.0002035256916996,"4.1":0.0034599367588933,"4.2-4.3":0.089958355731225,"4.4":0,"4.4.3-4.4.4":0.058004822134387},B:{"12":0,"13":0.005524,"14":0.016572,"15":0.016572,"16":0.099432,"17":0.187816,"18":2.04388,_:"79"},A:{"6":0,"7":0,"8":0.011048,"9":0,"10":0.005524,"11":1.18766,"5.5":0},P:{"4":0.095190317307692,"5.0-5.4":0.021153403846154,"6.2-6.4":0.010576701923077,"7.2-7.4":0.031730105769231,"8.2":0.031730105769231,"9.2":0.17980393269231,"10.1":3.7758825865385},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.008952},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.299892},O:{"0":0.080568},Q:{"1.2":0.004476},S:{"2.5":0},H:{"0":0.13136521649485},L:{"0":28.078972}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SG.js b/assets/node_modules/caniuse-lite/data/regions/SG.js
deleted file mode 100644
index 8e9e732..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SG.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.004068,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.004068,"34":0.024408,"35":0,"36":0,"37":0,"38":0.052884,"39":0,"40":0.008136,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.004068,"49":0.150516,"50":0,"51":0,"52":0,"53":0.056952,"54":0.004068,"55":0.008136,"56":0.004068,"57":0.008136,"58":0.008136,"59":0.004068,"60":0.012204,"61":0.016272,"62":0.012204,"63":0.089496,"64":0.004068,"65":0.024408,"66":0.02034,"67":0.032544,"68":0.02034,"69":0.048816,"70":0.06102,"71":0.048816,"72":0.04068,"73":0.069156,"74":0.056952,"75":0.093564,"76":0.077292,"77":0.117972,"78":0.44748,"79":9.82422,"80":0.02034,"81":0.008136,"82":0},C:{"2":0.004068,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.052884,"22":0.004068,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.004068,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.004068,"46":0,"47":0,"48":0.008136,"49":0,"50":0,"51":0,"52":0.012204,"53":0,"54":0,"55":0.004068,"56":0.008136,"57":0,"58":0.004068,"59":0,"60":0.004068,"61":0.004068,"62":0,"63":0.004068,"64":0.008136,"65":0.004068,"66":0.008136,"67":0.008136,"68":0.150516,"69":0.012204,"70":0.016272,"71":0.256284,"72":0.541044,"73":0.004068,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.004068,"37":0.044748,"38":0,"39":0,"40":0.004068,"41":0,"42":0,"43":0,"44":0,"45":0.004068,"46":0.077292,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0.004068,"58":0.004068,"60":0,"62":0,"63":0,"64":0.004068,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.056952},E:{"4":0,"5":0,"6":0,"7":0.004068,"8":0.012204,"9":0,"10":0.004068,"11":0.02034,"12":0.056952,"13":1.289556,_:"0","3.1":0,"3.2":0,"5.1":0.02034,"6.1":0,"7.1":0,"9.1":0.012204,"10.1":0.044748,"11.1":0.065088,"12.1":0.191196},G:{"8":0.0026134460338101,"3.2":0.0026134460338101,"4.0-4.1":0.0052268920676203,"4.2-4.3":0,"5.0-5.1":0.015680676202861,"6.0-6.1":0.0078403381014304,"7.0-7.1":0.020907568270481,"8.1-8.4":0.039201690507152,"9.0-9.2":0.033974798439532,"9.3":0.32406730819246,"10.0-10.2":0.1019243953186,"10.3":0.35804210663199,"11.0-11.2":0.28747906371912,"11.3-11.4":0.4887144083225,"12.0-12.1":0.65858840052016,"12.2-12.4":3.9358497269181,"13.0-13.1":1.8189584395319,"13.2":0.76573968790637,"13.3":17.259197607282},I:{"3":0.00025814492753623,"4":0.0025814492753623,_:"76","2.1":0,"2.2":0.0007744347826087,"2.3":0.00025814492753623,"4.1":0.0043884637681159,"4.2-4.3":0.11410005797101,"4.4":0,"4.4.3-4.4.4":0.073571304347826},B:{"12":0,"13":0.004068,"14":0.004068,"15":0.004068,"16":0.016272,"17":0.048816,"18":0.577656,_:"79"},A:{"6":0,"7":0,"8":0.0083651830985915,"9":0.012547774647887,"10":0.0083651830985915,"11":0.56464985915493,"5.5":0},P:{"4":0.31236335664336,"5.0-5.4":0.031236335664336,"6.2-6.4":0.010412111888112,"7.2-7.4":0.020824223776224,"8.2":0.031236335664336,"9.2":0.14576956643357,"10.1":3.904541958042},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0.005932},R:{_:"0"},M:{"0":0.427104},O:{"0":1.518592},Q:{"1.2":0.136436},S:{"2.5":0},H:{"0":1.0165022199313},L:{"0":38.68584}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SH.js b/assets/node_modules/caniuse-lite/data/regions/SH.js
deleted file mode 100644
index 8b85423..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SH.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.59655,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0.047724,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0.047724,"76":2.075994,"77":0.461332,"78":2.441878,"79":40.509722,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.095448,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0.230666,"72":0.365884,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0.095448,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.182942,"9":0,"10":0,"11":0,"12":0,"13":0.047724,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0,"11.1":0,"12.1":0},G:{"8":0.00015851475442633,"3.2":0.00015851475442633,"4.0-4.1":0.00031702950885266,"4.2-4.3":0,"5.0-5.1":0.00095108852655797,"6.0-6.1":0.00047554426327898,"7.0-7.1":0.0012681180354106,"8.1-8.4":0.0023777213163949,"9.0-9.2":0.0020606918075423,"9.3":0.019655829548865,"10.0-10.2":0.0061820754226268,"10.3":0.021716521356407,"11.0-11.2":0.017436622986896,"11.3-11.4":0.029642259077723,"12.0-12.1":0.039945718115435,"12.2-12.4":0.23872322016605,"13.0-13.1":0.11032626908072,"13.2":0.046444823046914,"13.3":1.0468314382315},I:{"3":0.00012575494071146,"4":0.0012575494071146,_:"76","2.1":0,"2.2":0.00037726482213439,"2.3":0.00012575494071146,"4.1":0.0021378339920949,"4.2-4.3":0.055583683794466,"4.4":0,"4.4.3-4.4.4":0.035840158102767},B:{"12":0,"13":0.59655,"14":0,"15":0.182942,"16":0.135218,"17":0.047724,"18":2.577096,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0.047724,"11":11.246956,"5.5":0},P:{"4":0.060401706940874,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":1.1073646272494,"8.2":0.060401706940874,"9.2":0.99662816452442,"10.1":1.6912477943445},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0},O:{"0":0},Q:{"1.2":0},S:{"2.5":0},H:{"0":0},L:{"0":28.839014}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SI.js b/assets/node_modules/caniuse-lite/data/regions/SI.js
deleted file mode 100644
index 1f31141..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SI.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.094725,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.006315,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.094725,"47":0,"48":0.006315,"49":0.32838,"50":0.006315,"51":0.006315,"52":0,"53":0.006315,"54":0.006315,"55":0.006315,"56":0.018945,"57":0.01263,"58":0.018945,"59":0,"60":0.006315,"61":0.183135,"62":0.044205,"63":0.01263,"64":0.006315,"65":0.01263,"66":0.006315,"67":0.031575,"68":0.01263,"69":0.044205,"70":0.05052,"71":0.069465,"72":0.056835,"73":0.056835,"74":0.07578,"75":0.056835,"76":0.082095,"77":0.157875,"78":0.60624,"79":22.58244,"80":0.056835,"81":0.018945,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.01263,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.006315,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.006315,"44":0,"45":0.006315,"46":0,"47":0.006315,"48":0.01263,"49":0,"50":0.01263,"51":0.006315,"52":0.157875,"53":0.006315,"54":0.006315,"55":0.006315,"56":0.018945,"57":0.02526,"58":0.006315,"59":0.006315,"60":0.094725,"61":0.006315,"62":0.006315,"63":0.006315,"64":0.031575,"65":0.006315,"66":0.02526,"67":0.01263,"68":0.32838,"69":0.044205,"70":0.05052,"71":1.698735,"72":4.123695,"73":0.05052,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.006315,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.006315,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.056835,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.006315,"11":0.018945,"12":0.082095,"13":1.70505,_:"0","3.1":0,"3.2":0,"5.1":0.006315,"6.1":0,"7.1":0,"9.1":0.01263,"10.1":0.044205,"11.1":0.107355,"12.1":0.2526},G:{"8":0.001045755726718,"3.2":0.001045755726718,"4.0-4.1":0.002091511453436,"4.2-4.3":0,"5.0-5.1":0.0062745343603081,"6.0-6.1":0.003137267180154,"7.0-7.1":0.0083660458137441,"8.1-8.4":0.01568633590077,"9.0-9.2":0.013594824447334,"9.3":0.12967371011303,"10.0-10.2":0.040784473342003,"10.3":0.14326853456037,"11.0-11.2":0.11503312993898,"11.3-11.4":0.19555632089627,"12.0-12.1":0.26353044313294,"12.2-12.4":1.5749081244373,"13.0-13.1":0.72784598579574,"13.2":0.30640642792838,"13.3":6.9061708192458},I:{"3":0.0002565744400527,"4":0.002565744400527,_:"76","2.1":0,"2.2":0.0007697233201581,"2.3":0.0002565744400527,"4.1":0.0043617654808959,"4.2-4.3":0.11340590250329,"4.4":0,"4.4.3-4.4.4":0.07312371541502},B:{"12":0,"13":0.006315,"14":0.01263,"15":0.018945,"16":0.02526,"17":0.107355,"18":2.178675,_:"79"},A:{"6":0,"7":0,"8":0.031897193877551,"9":0.019138316326531,"10":0.01275887755102,"11":1.8117606122449,"5.5":0},P:{"4":0.12278825688073,"5.0-5.4":0.010232354740061,"6.2-6.4":0,"7.2-7.4":0.081858837920489,"8.2":0.020464709480122,"9.2":0.21487944954128,"10.1":2.7525034250765},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.02948},J:{"7":0,"10":0.003685},R:{_:"0"},M:{"0":0.276375},O:{"0":0.018425},Q:{"1.2":0.003685},S:{"2.5":0.003685},H:{"0":0.20583447594502},L:{"0":43.890435}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SK.js b/assets/node_modules/caniuse-lite/data/regions/SK.js
deleted file mode 100644
index fab554c..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SK.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"26":0.012272,"34":0.018408,"36":0.012272,"38":0.067496,"40":0.1534,"43":0.018408,"44":0.006136,"46":0.006136,"47":0.006136,"48":0.03068,"49":0.969488,"51":0.006136,"53":0.085904,"56":0.006136,"57":0.006136,"58":0.024544,"59":0.049088,"60":0.018408,"61":0.09204,"62":0.012272,"63":0.09204,"64":0.006136,"65":0.012272,"66":0.018408,"67":0.042952,"68":0.012272,"69":0.116584,"70":0.067496,"71":0.079768,"72":0.085904,"73":0.079768,"74":0.073632,"75":0.220896,"76":0.110448,"77":0.159536,"78":0.70564,"79":35.410856,"80":0.049088,"81":0.024544,_:"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 35 37 39 41 42 45 50 52 54 55 82"},C:{"33":0.012272,"38":0.006136,"39":0.006136,"43":0.006136,"45":0.006136,"47":0.018408,"48":0.018408,"49":0.006136,"50":0.12272,"52":0.288392,"54":0.012272,"56":0.03068,"57":0.018408,"58":0.374296,"59":0.006136,"60":0.036816,"61":0.018408,"62":0.012272,"63":0.03068,"64":0.018408,"65":0.012272,"66":0.036816,"67":0.018408,"68":0.202488,"69":0.06136,"70":0.12272,"71":2.33168,"72":5.632848,"73":0.03068,_:"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 40 41 42 44 46 51 53 55 74 3.5 3.6"},F:{"36":0.036816,"58":0.012272,"64":0.141128,_:"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 60 62 63 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.012272},E:{"4":0,"11":0.012272,"12":0.165672,"13":2.896192,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 7.1","5.1":0.202488,"9.1":0.165672,"10.1":0.079768,"11.1":0.165672,"12.1":0.404976},G:{"8":0.00066016925077523,"3.2":0.00066016925077523,"4.0-4.1":0.0013203385015505,"4.2-4.3":0,"5.0-5.1":0.0039610155046514,"6.0-6.1":0.0019805077523257,"7.0-7.1":0.0052813540062019,"8.1-8.4":0.0099025387616285,"9.0-9.2":0.008582200260078,"9.3":0.081860987096129,"10.0-10.2":0.025746600780234,"10.3":0.090443187356207,"11.0-11.2":0.072618617585276,"11.3-11.4":0.12345164989497,"12.0-12.1":0.16636265119536,"12.2-12.4":0.9942148916675,"13.0-13.1":0.45947779853956,"13.2":0.19342959047714,"13.3":4.3597577321196},I:{"3":0.00033090909090909,"4":0.0033090909090909,_:"76","2.1":0,"2.2":0.00099272727272727,"2.3":0.00033090909090909,"4.1":0.0056254545454545,"4.2-4.3":0.14626181818182,"4.4":0,"4.4.3-4.4.4":0.094309090909091},B:{"12":0.012272,"13":0.012272,"14":0.03068,"15":0.024544,"16":0.042952,"17":0.159536,"18":2.184416,_:"79"},A:{"6":0.024639501945525,"7":0.0061598754863813,"8":0.036959252918288,"9":0.030799377431907,"10":0.018479626459144,"11":1.4660503657588,_:"5.5"},P:{"4":0.42885871875,"5.0-5.4":0.031236335664336,"6.2-6.4":0.010412111888112,"7.2-7.4":0.020824223776224,"8.2":0.03137990625,"9.2":0.1045996875,"10.1":2.01877396875},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.023184},J:{"7":0,"10":0.030912},R:{_:"0"},M:{"0":0.258888},O:{"0":0.061824},Q:{"1.2":0.003864},S:{_:"2.5"},H:{"0":0.3914258556701},L:{"0":28.794216}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SL.js b/assets/node_modules/caniuse-lite/data/regions/SL.js
deleted file mode 100644
index 41237e6..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SL.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.003252,"27":0,"28":0,"29":0.003252,"30":0.003252,"31":0,"32":0,"33":0.029268,"34":0,"35":0,"36":0.003252,"37":0,"38":0.003252,"39":0.003252,"40":0.003252,"41":0,"42":0,"43":0.01626,"44":0,"45":0,"46":0.003252,"47":0,"48":0,"49":0.013008,"50":0.006504,"51":0,"52":0.003252,"53":0,"54":0,"55":0.003252,"56":0,"57":0,"58":0.013008,"59":0,"60":0.026016,"61":0,"62":0,"63":0.169104,"64":0.003252,"65":0.006504,"66":0.003252,"67":0.006504,"68":0,"69":0.159348,"70":0.006504,"71":0.003252,"72":0.006504,"73":0.003252,"74":0.042276,"75":0.019512,"76":0.035772,"77":0.152844,"78":0.084552,"79":3.320292,"80":0.013008,"81":0.003252,"82":0},C:{"2":0,"3":0,"4":0.003252,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.003252,"33":0,"34":0,"35":0.009756,"36":0,"37":0,"38":0.003252,"39":0,"40":0,"41":0,"42":0,"43":0.01626,"44":0.006504,"45":0.003252,"46":0.003252,"47":0.006504,"48":0.006504,"49":0,"50":0.003252,"51":0,"52":0.003252,"53":0,"54":0.006504,"55":0.003252,"56":0.003252,"57":0.003252,"58":0.003252,"59":0,"60":0.003252,"61":0.003252,"62":0.003252,"63":0,"64":0,"65":0.003252,"66":0.003252,"67":0.022764,"68":0.04878,"69":0.006504,"70":0.009756,"71":0.214632,"72":0.549588,"73":0.058536,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0.003252,"12":0.003252,"15":0,"16":0.013008,"17":0,"18":0.003252,"19":0.003252,"20":0.071544,"21":0.003252,"22":0,"23":0.104064,"24":0.003252,"25":0,"26":0,"27":0,"28":0.006504,"29":0.003252,"30":0.003252,"31":0,"32":0.003252,"33":0.006504,"34":0.003252,"35":0,"36":0,"37":0.006504,"38":0.003252,"39":0,"40":0,"41":0,"42":0.006504,"43":0.003252,"44":0,"45":0.013008,"46":0.039024,"47":0,"48":0,"49":0,"50":0,"51":0.003252,"52":0,"53":0.009756,"54":0.009756,"55":0.006504,"56":0.006504,"57":0.003252,"58":0.003252,"60":0,"62":0.003252,"63":0.01626,"64":0.006504,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0.003252,"11.6":0.003252,"12.1":0.71544},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.01626,"12":0.006504,"13":0.234144,_:"0","3.1":0,"3.2":0,"5.1":1.395108,"6.1":0,"7.1":0,"9.1":0.009756,"10.1":0.006504,"11.1":0.013008,"12.1":0.013008},G:{"8":0.00033768690607182,"3.2":0.00033768690607182,"4.0-4.1":0.00067537381214364,"4.2-4.3":0,"5.0-5.1":0.0020261214364309,"6.0-6.1":0.0010130607182155,"7.0-7.1":0.0027014952485746,"8.1-8.4":0.0050653035910773,"9.0-9.2":0.0043899297789337,"9.3":0.041873176352906,"10.0-10.2":0.013169789336801,"10.3":0.04626310613184,"11.0-11.2":0.0371455596679,"11.3-11.4":0.063147451435431,"12.0-12.1":0.085097100330099,"12.2-12.4":0.50855648054416,"13.0-13.1":0.23503008662599,"13.2":0.098942263479044,"13.3":2.2300843276983},I:{"3":0.00075527272727273,"4":0.0075527272727273,_:"76","2.1":0,"2.2":0.0022658181818182,"2.3":0.00075527272727273,"4.1":0.012839636363636,"4.2-4.3":0.33383054545455,"4.4":0,"4.4.3-4.4.4":0.21525272727273},B:{"12":0.039024,"13":0.029268,"14":0.01626,"15":0.022764,"16":0.019512,"17":0.039024,"18":1.908924,_:"79"},A:{"6":0.0033020307692308,"7":0,"8":0.046228430769231,"9":0,"10":0.013208123076923,"11":0.15189341538462,"5.5":0},P:{"4":0.21215243930636,"5.0-5.4":0.03030749132948,"6.2-6.4":0.010102497109827,"7.2-7.4":0.080819976878613,"8.2":0.010102497109827,"9.2":0.21215243930636,"10.1":1.1819921618497},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.021208,"11":0.127248},J:{"7":0,"10":0.03374},R:{_:"0"},M:{"0":0.121464},O:{"0":3.367252},Q:{"1.2":0.121464},S:{"2.5":0},H:{"0":32.26866932646},L:{"0":33.421092}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SM.js b/assets/node_modules/caniuse-lite/data/regions/SM.js
deleted file mode 100644
index bec85c4..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SM.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.055188,"37":0,"38":0.007884,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.543996,"50":0,"51":0,"52":0,"53":0.070956,"54":0,"55":0,"56":0.007884,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0.007884,"64":0,"65":0.015768,"66":0,"67":0.007884,"68":6.26778,"69":0.007884,"70":0.007884,"71":0.047304,"72":0,"73":0.007884,"74":0.323244,"75":0.646488,"76":0.149796,"77":0.055188,"78":0.567648,"79":32.868396,"80":0.007884,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.031536,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.007884,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.03942,"53":0,"54":0,"55":0,"56":0.015768,"57":0,"58":0,"59":0,"60":0.023652,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0.007884,"67":0,"68":0.055188,"69":0.055188,"70":0.015768,"71":1.26144,"72":3.437424,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.031536,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.007884,"9":0,"10":0,"11":0.23652,"12":0.204984,"13":7.205976,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.070956,"10.1":0.03942,"11.1":0.27594,"12.1":1.087992},G:{"8":0.0014257681304391,"3.2":0.0014257681304391,"4.0-4.1":0.0028515362608783,"4.2-4.3":0,"5.0-5.1":0.0085546087826348,"6.0-6.1":0.0042773043913174,"7.0-7.1":0.011406145043513,"8.1-8.4":0.021386521956587,"9.0-9.2":0.018534985695709,"9.3":0.17679524817445,"10.0-10.2":0.055604957087126,"10.3":0.19533023387016,"11.0-11.2":0.1568344943483,"11.3-11.4":0.26661864039212,"12.0-12.1":0.35929356887066,"12.2-12.4":2.1472068044413,"13.0-13.1":0.99233461878564,"13.2":0.41775006221867,"13.3":9.41577273342},I:{"3":0.00016367852437418,"4":0.0016367852437418,_:"76","2.1":0,"2.2":0.00049103557312253,"2.3":0.00016367852437418,"4.1":0.002782534914361,"4.2-4.3":0.072345907773386,"4.4":0,"4.4.3-4.4.4":0.04664837944664},B:{"12":0,"13":0,"14":0.015768,"15":0.007884,"16":0.007884,"17":0.031536,"18":4.273128,_:"79"},A:{"6":0,"7":0,"8":0.031536,"9":0,"10":0.015768,"11":0.339012,"5.5":0},P:{"4":0.041211619047619,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0,"8.2":0,"9.2":0.030908714285714,"10.1":0.77271785714286},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.078292},O:{"0":0.002116},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.064105347079038},L:{"0":23.01476}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SN.js b/assets/node_modules/caniuse-lite/data/regions/SN.js
deleted file mode 100644
index 9a82478..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SN.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.005172,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.005172,"31":0.005172,"32":0.005172,"33":0.005172,"34":0.005172,"35":0,"36":0.005172,"37":0.010344,"38":0,"39":0,"40":0.005172,"41":0,"42":0,"43":0.015516,"44":0,"45":0,"46":0,"47":0.010344,"48":0,"49":0.418932,"50":0.041376,"51":0,"52":0,"53":0.005172,"54":0,"55":0.020688,"56":0.020688,"57":0,"58":0.005172,"59":0.005172,"60":0.046548,"61":0.02586,"62":0.010344,"63":0.165504,"64":0.010344,"65":0.1293,"66":0.02586,"67":0.10344,"68":0.02586,"69":0.294804,"70":0.05172,"71":0.07758,"72":0.041376,"73":0.305148,"74":0.222396,"75":0.372384,"76":0.134472,"77":0.191364,"78":0.299976,"79":10.592256,"80":0.015516,"81":0.02586,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005172,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.010344,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.010344,"44":0,"45":0.005172,"46":0,"47":0.015516,"48":0.031032,"49":0,"50":0,"51":0,"52":0.010344,"53":0,"54":0,"55":0.010344,"56":0.015516,"57":0.010344,"58":0,"59":0,"60":0.020688,"61":0,"62":0,"63":0.005172,"64":0.005172,"65":0.015516,"66":0.015516,"67":0.031032,"68":0.093096,"69":0.02586,"70":0.036204,"71":0.558576,"72":1.360236,"73":0.020688,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005172,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.005172,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0.02586,"62":0.005172,"63":0.010344,"64":0.010344,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.015516},E:{"4":0,"5":0,"6":0,"7":0,"8":0.020688,"9":0.108612,"10":0.05172,"11":0.067236,"12":0.087924,"13":0.863724,_:"0","3.1":0,"3.2":0,"5.1":5.415084,"6.1":0.005172,"7.1":0,"9.1":0.031032,"10.1":0.20688,"11.1":0.222396,"12.1":0.382728},G:{"8":0.00068108352505752,"3.2":0.00068108352505752,"4.0-4.1":0.001362167050115,"4.2-4.3":0,"5.0-5.1":0.0040865011503451,"6.0-6.1":0.0020432505751726,"7.0-7.1":0.0054486682004601,"8.1-8.4":0.010216252875863,"9.0-9.2":0.0088540858257477,"9.3":0.084454357107132,"10.0-10.2":0.026562257477243,"10.3":0.09330844293288,"11.0-11.2":0.074919187756327,"11.3-11.4":0.12736261918576,"12.0-12.1":0.17163304831449,"12.2-12.4":1.0257117887366,"13.0-13.1":0.47403413344003,"13.2":0.19955747284185,"13.3":4.4978755994798},I:{"3":0.00087275362318841,"4":0.0087275362318841,_:"76","2.1":0,"2.2":0.0026182608695652,"2.3":0.00087275362318841,"4.1":0.014836811594203,"4.2-4.3":0.38575710144928,"4.4":0,"4.4.3-4.4.4":0.2487347826087},B:{"12":0.041376,"13":0.036204,"14":0.010344,"15":0.020688,"16":0.010344,"17":0.093096,"18":0.605124,_:"79"},A:{"6":0,"7":0,"8":0.020688,"9":0,"10":0.010344,"11":0.144816,"5.5":0},P:{"4":0.69921112087912,"5.0-5.4":0.040533978021978,"6.2-6.4":0.050667472527473,"7.2-7.4":0.28373784615385,"8.2":0.050667472527473,"9.2":0.39520628571429,"10.1":1.2362863296703},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.011644,"11":0.186304},J:{"7":0,"10":0.019312},R:{_:"0"},M:{"0":0.149668},O:{"0":0.405552},Q:{"1.2":0.009656},S:{"2.5":0},H:{"0":1.2706930996564},L:{"0":59.487504}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SO.js b/assets/node_modules/caniuse-lite/data/regions/SO.js
deleted file mode 100644
index 9a6751e..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SO.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.003136,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.006272,"27":0,"28":0,"29":0.003136,"30":0.028224,"31":0.037632,"32":0,"33":0.043904,"34":0,"35":0.003136,"36":0.003136,"37":0,"38":0,"39":0,"40":0.003136,"41":0.003136,"42":0,"43":0.090944,"44":0,"45":0.006272,"46":0.003136,"47":0,"48":0,"49":0.012544,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.003136,"56":0,"57":0,"58":0.003136,"59":0,"60":0.003136,"61":0,"62":0.056448,"63":0.037632,"64":0.006272,"65":0.003136,"66":0,"67":0.003136,"68":0.003136,"69":0.059584,"70":0.006272,"71":0.003136,"72":0.003136,"73":0.021952,"74":0.043904,"75":0.059584,"76":0.028224,"77":0.065856,"78":0.103488,"79":6.425664,"80":0.034496,"81":0.01568,"82":0},C:{"2":0,"3":0,"4":0,"5":0.003136,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.006272,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.003136,"44":0,"45":0,"46":0.003136,"47":0,"48":0.006272,"49":0,"50":0,"51":0.003136,"52":0.003136,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0.050176,"69":0,"70":0.018816,"71":0.116032,"72":0.291648,"73":0.050176,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0.003136,"15":0,"16":0.006272,"17":0,"18":0,"19":0.006272,"20":0.012544,"21":0,"22":0,"23":0.003136,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.003136,"37":0.003136,"38":0,"39":0,"40":0,"41":0,"42":0.003136,"43":0,"44":0,"45":0.003136,"46":0.06272,"47":0.003136,"48":0,"49":0,"50":0,"51":0.003136,"52":0,"53":0.003136,"54":0.003136,"55":0.003136,"56":0.018816,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.003136,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.018816},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.003136,"13":0.178752,_:"0","3.1":0,"3.2":0,"5.1":0.567616,"6.1":0,"7.1":0,"9.1":0.003136,"10.1":0.021952,"11.1":0.003136,"12.1":0.025088},G:{"8":0.0004310877263179,"3.2":0.0004310877263179,"4.0-4.1":0.00086217545263579,"4.2-4.3":0,"5.0-5.1":0.0025865263579074,"6.0-6.1":0.0012932631789537,"7.0-7.1":0.0034487018105432,"8.1-8.4":0.0064663158947684,"9.0-9.2":0.0056041404421326,"9.3":0.053454878063419,"10.0-10.2":0.016812421326398,"10.3":0.059059018505552,"11.0-11.2":0.047419649894968,"11.3-11.4":0.080613404821446,"12.0-12.1":0.10863410703211,"12.2-12.4":0.64921811583475,"13.0-13.1":0.30003705751726,"13.2":0.12630870381114,"13.3":2.8469033446034},I:{"3":0.00042753096179183,"4":0.0042753096179183,_:"76","2.1":0,"2.2":0.0012825928853755,"2.3":0.00042753096179183,"4.1":0.0072680263504611,"4.2-4.3":0.18896868511199,"4.4":0,"4.4.3-4.4.4":0.12184632411067},B:{"12":0.021952,"13":0.006272,"14":0.012544,"15":0.003136,"16":0.009408,"17":0.028224,"18":0.34496,_:"79"},A:{"6":0.003136,"7":0,"8":0.003136,"9":0,"10":0.003136,"11":0.037632,"5.5":0},P:{"4":0.79195840700219,"5.0-5.4":0.060919877461707,"6.2-6.4":0.10153312910284,"7.2-7.4":0.50766564551422,"8.2":0.040613251641138,"9.2":0.55843221006565,"10.1":2.568788166302},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.082368},J:{"7":0,"10":0.006864},R:{_:"0"},M:{"0":0.1716},O:{"0":7.365072},Q:{"1.2":0},S:{"2.5":0},H:{"0":12.100005443299},L:{"0":52.949056}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SR.js b/assets/node_modules/caniuse-lite/data/regions/SR.js
deleted file mode 100644
index f99ea8f..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SR.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.008882,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.008882,"37":0,"38":0,"39":0,"40":0.004441,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.17764,"50":0,"51":0,"52":0.004441,"53":0,"54":0.004441,"55":0,"56":0,"57":0.004441,"58":0,"59":0.004441,"60":0,"61":0,"62":0,"63":0.053292,"64":0,"65":0,"66":0.048851,"67":0.022205,"68":0,"69":0.102143,"70":0.146553,"71":0.146553,"72":0.022205,"73":0.013323,"74":0.102143,"75":0.062174,"76":0.035528,"77":0.071056,"78":0.26646,"79":11.670948,"80":0.026646,"81":0.004441,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.008882,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0.004441,"53":0,"54":0,"55":0,"56":0,"57":0.004441,"58":0,"59":0,"60":0,"61":0.004441,"62":0,"63":0,"64":0,"65":0.017764,"66":0.066615,"67":0,"68":0.071056,"69":0.004441,"70":0.008882,"71":0.435218,"72":1.323418,"73":0.297547,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0.004441,"18":0,"19":0,"20":0,"21":0,"22":0.004441,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.004441,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.004441,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.071056,"10":0,"11":0,"12":0.013323,"13":0.501833,_:"0","3.1":0,"3.2":0,"5.1":0.590653,"6.1":0,"7.1":0,"9.1":0.017764,"10.1":0.008882,"11.1":0.035528,"12.1":0.111025},G:{"8":0.0012304340302091,"3.2":0.0012304340302091,"4.0-4.1":0.0024608680604181,"4.2-4.3":0,"5.0-5.1":0.0073826041812544,"6.0-6.1":0.0036913020906272,"7.0-7.1":0.0098434722416725,"8.1-8.4":0.018456510453136,"9.0-9.2":0.015995642392718,"9.3":0.15257381974592,"10.0-10.2":0.047986927178153,"10.3":0.16856946213864,"11.0-11.2":0.135347743323,"11.3-11.4":0.23009116364909,"12.0-12.1":0.31006937561268,"12.2-12.4":1.8530336494948,"13.0-13.1":0.85638208502551,"13.2":0.36051717085126,"13.3":8.1257863355007},I:{"3":0.00053560210803689,"4":0.0053560210803689,_:"76","2.1":0,"2.2":0.0016068063241107,"2.3":0.00053560210803689,"4.1":0.0091052358366271,"4.2-4.3":0.23673613175231,"4.4":0,"4.4.3-4.4.4":0.15264660079051},B:{"12":0.017764,"13":0.035528,"14":0.008882,"15":0.013323,"16":0.039969,"17":0.164317,"18":0.861554,_:"79"},A:{"6":0,"7":0,"8":0.008882,"9":0,"10":0.004441,"11":0.510715,"5.5":0},P:{"4":0.78079914412417,"5.0-5.4":0.030821018847007,"6.2-6.4":0.061642037694013,"7.2-7.4":0.41094691796009,"8.2":0.11301040243902,"9.2":0.64724139578714,"10.1":6.8628135299335},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.033354},J:{"7":0,"10":0.022236},R:{_:"0"},M:{"0":0.133416},O:{"0":0.794937},Q:{"1.2":0.094503},S:{"2.5":0},H:{"0":0.29998541752577},L:{"0":53.147653}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/ST.js b/assets/node_modules/caniuse-lite/data/regions/ST.js
deleted file mode 100644
index 67ce539..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/ST.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.009566,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.014349,"36":0,"37":0,"38":0,"39":0,"40":0.04783,"41":0,"42":0,"43":0.640922,"44":0.009566,"45":0,"46":0.052613,"47":0,"48":0,"49":0.090877,"50":0,"51":0,"52":0,"53":0.009566,"54":0.009566,"55":0.028698,"56":0,"57":0,"58":0.066962,"59":0,"60":0.023915,"61":0.009566,"62":0.009566,"63":0.248716,"64":0,"65":0.009566,"66":0,"67":0.004783,"68":0.387423,"69":0.425687,"70":0.019132,"71":0.019132,"72":0.023915,"73":0.023915,"74":0.023915,"75":0.043047,"76":0.511781,"77":0.105226,"78":0.248716,"79":11.617907,"80":0.014349,"81":0.033481,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.009566,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.004783,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.028698,"48":0,"49":0.014349,"50":0,"51":0,"52":0.033481,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0.028698,"62":0,"63":0,"64":0,"65":0.004783,"66":0.004783,"67":0.009566,"68":0.04783,"69":0,"70":0.009566,"71":0.416121,"72":0.698318,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.019132,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.004783,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.023915},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.009566,"13":0.310895,_:"0","3.1":0,"3.2":0,"5.1":0.014349,"6.1":0,"7.1":0,"9.1":0,"10.1":0.033481,"11.1":0,"12.1":0.172188},G:{"8":0.00087355506651996,"3.2":0.00087355506651996,"4.0-4.1":0.0017471101330399,"4.2-4.3":0,"5.0-5.1":0.0052413303991197,"6.0-6.1":0.0026206651995599,"7.0-7.1":0.0069884405321596,"8.1-8.4":0.013103325997799,"9.0-9.2":0.011356215864759,"9.3":0.10832082824847,"10.0-10.2":0.034068647594278,"10.3":0.11967704411323,"11.0-11.2":0.096091057317195,"11.3-11.4":0.16335479743923,"12.0-12.1":0.22013587676303,"12.2-12.4":1.3155739301791,"13.0-13.1":0.60799432629789,"13.2":0.25595163449035,"13.3":5.7689576592978},I:{"3":0.0012035322793149,"4":0.012035322793149,_:"76","2.1":0,"2.2":0.0036105968379447,"2.3":0.0012035322793149,"4.1":0.020460048748353,"4.2-4.3":0.53196126745718,"4.4":0,"4.4.3-4.4.4":0.34300669960474},B:{"12":0.014349,"13":0.004783,"14":0.019132,"15":0.023915,"16":0,"17":0.04783,"18":1.114439,_:"79"},A:{"6":0,"7":0,"8":0.053058872881356,"9":0,"10":0,"11":0.51611812711864,"5.5":0},P:{"4":0.31302,"5.0-5.4":0,"6.2-6.4":0.114774,"7.2-7.4":0.041736,"8.2":0.020868,"9.2":0.062604,"10.1":1.25208},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.041736},J:{"7":0,"10":0.005217},R:{_:"0"},M:{"0":0.119991},O:{"0":7.335102},Q:{"1.2":0.015651},S:{"2.5":0},H:{"0":2.3065683659794},L:{"0":51.695322}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SV.js b/assets/node_modules/caniuse-lite/data/regions/SV.js
deleted file mode 100644
index f6944d2..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SV.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.006957,"37":0,"38":0.020871,"39":0,"40":0,"41":0,"42":0,"43":0.006957,"44":0,"45":0,"46":0,"47":0,"48":0.020871,"49":0.354807,"50":0,"51":0,"52":0,"53":0.027828,"54":0,"55":0,"56":0.006957,"57":0.020871,"58":0.020871,"59":0.006957,"60":0.006957,"61":0.006957,"62":0.006957,"63":0.076527,"64":0.006957,"65":0.055656,"66":0.020871,"67":0.055656,"68":0.006957,"69":0.034785,"70":0.146097,"71":0.076527,"72":0.132183,"73":0.132183,"74":0.111312,"75":0.146097,"76":0.132183,"77":0.166968,"78":0.570474,"79":32.663115,"80":0.020871,"81":0.027828,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.013914,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.041742,"48":0.062613,"49":0,"50":0,"51":0.006957,"52":0.097398,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0.013914,"61":0,"62":0.006957,"63":0.006957,"64":0.006957,"65":0.041742,"66":0.132183,"67":0.020871,"68":1.029636,"69":0.027828,"70":0.034785,"71":0.897453,"72":2.379294,"73":0.020871,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.006957,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.006957,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.006957,"54":0,"55":0,"56":0.006957,"57":0.013914,"58":0,"60":0,"62":0.006957,"63":0.006957,"64":0.104355,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.013914,"11":0.062613,"12":0.111312,"13":1.683594,_:"0","3.1":0,"3.2":0,"5.1":1.683594,"6.1":0,"7.1":0,"9.1":0.006957,"10.1":0.090441,"11.1":0.201753,"12.1":0.480033},G:{"8":0.00046994148244473,"3.2":0.00046994148244473,"4.0-4.1":0.00093988296488947,"4.2-4.3":0,"5.0-5.1":0.0028196488946684,"6.0-6.1":0.0014098244473342,"7.0-7.1":0.0037595318595579,"8.1-8.4":0.007049122236671,"9.0-9.2":0.0061092392717815,"9.3":0.058272743823147,"10.0-10.2":0.018327717815345,"10.3":0.064381983094928,"11.0-11.2":0.051693563068921,"11.3-11.4":0.087879057217165,"12.0-12.1":0.11842525357607,"12.2-12.4":0.70773187256177,"13.0-13.1":0.32707927178153,"13.2":0.13769285435631,"13.3":3.103493550065},I:{"3":0.00038895256916996,"4":0.0038895256916996,_:"76","2.1":0,"2.2":0.0011668577075099,"2.3":0.00038895256916996,"4.1":0.0066121936758893,"4.2-4.3":0.17191703557312,"4.4":0,"4.4.3-4.4.4":0.11085148221344},B:{"12":0.006957,"13":0.006957,"14":0.006957,"15":0.013914,"16":0.027828,"17":0.055656,"18":0.619173,_:"79"},A:{"6":0,"7":0,"8":0.042649434782609,"9":0.0071082391304348,"10":0.021324717391304,"11":0.25589660869565,"5.5":0},P:{"4":0.21161321311475,"5.0-5.4":0.020153639344262,"6.2-6.4":0.020153639344262,"7.2-7.4":0.12092183606557,"8.2":0.030230459016393,"9.2":0.1612291147541,"10.1":1.2394488196721},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.018258},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.130849},O:{"0":0.136935},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.20454502233677},L:{"0":44.307746}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SY.js b/assets/node_modules/caniuse-lite/data/regions/SY.js
deleted file mode 100644
index 06caf82..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SY.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.007371,"34":0,"35":0,"36":0.007371,"37":0,"38":0.014742,"39":0,"40":0.007371,"41":0,"42":0.007371,"43":0.029484,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.051597,"50":0,"51":0,"52":0,"53":0.007371,"54":0,"55":0.007371,"56":0,"57":0,"58":0.007371,"59":0.007371,"60":0.014742,"61":0.007371,"62":0,"63":0.036855,"64":0,"65":0.014742,"66":0.007371,"67":0.014742,"68":0.007371,"69":0.036855,"70":0.051597,"71":0.029484,"72":0.036855,"73":0.036855,"74":0.058968,"75":0.051597,"76":0.07371,"77":0.051597,"78":0.154791,"79":7.29729,"80":0.007371,"81":0.007371,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0.007371,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.007371,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.007371,"44":0,"45":0,"46":0,"47":0.014742,"48":0.014742,"49":0,"50":0,"51":0,"52":0.058968,"53":0,"54":0,"55":0,"56":0.007371,"57":0,"58":0.007371,"59":0,"60":0.007371,"61":0,"62":0.022113,"63":0.007371,"64":0.007371,"65":0.007371,"66":0.022113,"67":0.029484,"68":0.058968,"69":0.014742,"70":0.029484,"71":0.58968,"72":1.385748,"73":0.036855,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0.007371,"46":0.022113,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0.014742,"64":0.014742,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.007371},E:{"4":0,"5":0,"6":0,"7":0,"8":0.007371,"9":0,"10":0,"11":0.007371,"12":0.022113,"13":0.191646,_:"0","3.1":0,"3.2":0,"5.1":42.272685,"6.1":0,"7.1":0,"9.1":0,"10.1":0.007371,"11.1":0.022113,"12.1":0.058968},G:{"8":0.00012635990797239,"3.2":0.00012635990797239,"4.0-4.1":0.00025271981594478,"4.2-4.3":0,"5.0-5.1":0.00075815944783435,"6.0-6.1":0.00037907972391718,"7.0-7.1":0.0010108792637791,"8.1-8.4":0.0018953986195859,"9.0-9.2":0.0016426788036411,"9.3":0.015668628588577,"10.0-10.2":0.0049280364109233,"10.3":0.017311307392218,"11.0-11.2":0.013899589876963,"11.3-11.4":0.023629302790837,"12.0-12.1":0.031842696809043,"12.2-12.4":0.19029802140642,"13.0-13.1":0.087946495948785,"13.2":0.037023453035911,"13.3":0.83448083224967},I:{"3":0.0016067971014493,"4":0.016067971014493,_:"76","2.1":0,"2.2":0.0048203913043478,"2.3":0.0016067971014493,"4.1":0.027315550724638,"4.2-4.3":0.71020431884058,"4.4":0,"4.4.3-4.4.4":0.45793717391304},B:{"12":0,"13":0,"14":0.007371,"15":0.007371,"16":0.007371,"17":0.058968,"18":0.250614,_:"79"},A:{"6":0,"7":0,"8":0.066339,"9":0.007371,"10":0.007371,"11":0.058968,"5.5":0},P:{"4":0.84174438176638,"5.0-5.4":0.030424495726496,"6.2-6.4":0.081131988603989,"7.2-7.4":0.16226397720798,"8.2":0.060848991452991,"9.2":0.35495245014245,"10.1":2.0080167179487},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.007887},J:{"7":0,"10":0.010516},R:{_:"0"},M:{"0":0.073612},O:{"0":0.638847},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.91345101890034},L:{"0":34.197387}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/SZ.js b/assets/node_modules/caniuse-lite/data/regions/SZ.js
deleted file mode 100644
index 266fb7f..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/SZ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.002891,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.002891,"27":0,"28":0,"29":0.002891,"30":0,"31":0,"32":0,"33":0.002891,"34":0,"35":0,"36":0.002891,"37":0,"38":0,"39":0,"40":0.017346,"41":0,"42":0.002891,"43":0,"44":0,"45":0.008673,"46":0,"47":0,"48":0,"49":0.017346,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.005782,"56":0.002891,"57":0,"58":0.005782,"59":0.002891,"60":0.005782,"61":0,"62":0,"63":0.017346,"64":0.011564,"65":0.002891,"66":0.002891,"67":0.005782,"68":0.008673,"69":0.020237,"70":0.023128,"71":0.008673,"72":0.008673,"73":0.014455,"74":0.046256,"75":0.017346,"76":0.017346,"77":0.054929,"78":0.132986,"79":3.975125,"80":0.005782,"81":0.002891,"82":0},C:{"2":0,"3":0,"4":0.002891,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.002891,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0.008673,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.002891,"34":0.002891,"35":0,"36":0,"37":0.005782,"38":0.002891,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.005782,"49":0.002891,"50":0,"51":0,"52":0.008673,"53":0,"54":0.002891,"55":0,"56":0.005782,"57":0.002891,"58":0.002891,"59":0,"60":0.040474,"61":0.002891,"62":0,"63":0.002891,"64":0,"65":0.002891,"66":0.005782,"67":0.002891,"68":0.054929,"69":0.005782,"70":0.014455,"71":0.185024,"72":0.344029,"73":0.031801,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0.002891,"17":0.005782,"18":0.002891,"19":0.002891,"20":0.002891,"21":0.002891,"22":0,"23":0.002891,"24":0,"25":0,"26":0.005782,"27":0,"28":0.008673,"29":0.005782,"30":0.002891,"31":0,"32":0.017346,"33":0.002891,"34":0,"35":0.011564,"36":0,"37":0.002891,"38":0.002891,"39":0,"40":0,"41":0,"42":0.002891,"43":0,"44":0.002891,"45":0.014455,"46":0.106967,"47":0,"48":0.002891,"49":0,"50":0,"51":0.002891,"52":0,"53":0.011564,"54":0.008673,"55":0.002891,"56":0.005782,"57":0,"58":0,"60":0.002891,"62":0.002891,"63":0.002891,"64":0.017346,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.283318},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.002891,"13":0.147441,_:"0","3.1":0,"3.2":0,"5.1":0.653366,"6.1":0,"7.1":0,"9.1":0,"10.1":0.002891,"11.1":0.054929,"12.1":0.104076},G:{"8":0.00036347394218265,"3.2":0.00036347394218265,"4.0-4.1":0.00072694788436531,"4.2-4.3":0,"5.0-5.1":0.0021808436530959,"6.0-6.1":0.001090421826548,"7.0-7.1":0.0029077915374612,"8.1-8.4":0.0054521091327398,"9.0-9.2":0.0047251612483745,"9.3":0.045070768830649,"10.0-10.2":0.014175483745124,"10.3":0.049795930079024,"11.0-11.2":0.039982133640092,"11.3-11.4":0.067969627188156,"12.0-12.1":0.091595433430029,"12.2-12.4":0.54739175692708,"13.0-13.1":0.25297786375913,"13.2":0.10649786505952,"13.3":2.4003819141743},I:{"3":0.00066463109354414,"4":0.0066463109354414,_:"76","2.1":0,"2.2":0.0019938932806324,"2.3":0.00066463109354414,"4.1":0.01129872859025,"4.2-4.3":0.29376694334651,"4.4":0,"4.4.3-4.4.4":0.18941986166008},B:{"12":0.037583,"13":0.02891,"14":0.014455,"15":0.017346,"16":0.017346,"17":0.08673,"18":0.381612,_:"79"},A:{"6":0,"7":0,"8":0.020237,"9":0.002891,"10":0.034692,"11":0.283318,"5.5":0},P:{"4":0.79770463157895,"5.0-5.4":0,"6.2-6.4":0.01022698245614,"7.2-7.4":0.27612852631579,"8.2":0.13295077192982,"9.2":0.39885231578947,"10.1":1.8613108070175},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.0319905,"11":0.0746445},J:{"7":0,"10":0.035545},R:{_:"0"},M:{"0":0.177725},O:{"0":1.20853},Q:{"1.2":0},S:{"2.5":0.106635},H:{"0":25.723366835052},L:{"0":46.389425}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/TC.js b/assets/node_modules/caniuse-lite/data/regions/TC.js
deleted file mode 100644
index af0b15f..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/TC.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.005152,"39":0,"40":0.010304,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.159712,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0.005152,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0.005152,"66":0.005152,"67":0.005152,"68":0,"69":0.005152,"70":0.005152,"71":0.010304,"72":0.005152,"73":0.020608,"74":0,"75":0.144256,"76":0.133952,"77":0.030912,"78":0.1288,"79":9.86608,"80":0.020608,"81":0.005152,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0.015456,"66":0.041216,"67":0.005152,"68":0.5152,"69":0,"70":0.005152,"71":0.736736,"72":1.772288,"73":0.005152,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0.030912,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.005152,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.005152,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.005152,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.005152,"9":0,"10":0,"11":0.005152,"12":0.030912,"13":3.961888,_:"0","3.1":0,"3.2":0,"5.1":2.797536,"6.1":0,"7.1":0,"9.1":0.005152,"10.1":0.10304,"11.1":0.139104,"12.1":0.448224},G:{"8":0.0036386291887566,"3.2":0.0036386291887566,"4.0-4.1":0.0072772583775133,"4.2-4.3":0,"5.0-5.1":0.02183177513254,"6.0-6.1":0.01091588756627,"7.0-7.1":0.029109033510053,"8.1-8.4":0.054579437831349,"9.0-9.2":0.047302179453836,"9.3":0.45119001940582,"10.0-10.2":0.14190653836151,"10.3":0.49849219885966,"11.0-11.2":0.40024921076323,"11.3-11.4":0.68042365829749,"12.0-12.1":0.91693455556667,"12.2-12.4":5.4797755582675,"13.0-13.1":2.5324859153746,"13.2":1.0661183523057,"13.3":24.029507162549},I:{"3":0.0010512990777339,"4":0.010512990777339,_:"76","2.1":0,"2.2":0.0031538972332016,"2.3":0.0010512990777339,"4.1":0.017872084321476,"4.2-4.3":0.46467419235837,"4.4":0,"4.4.3-4.4.4":0.29962023715415},B:{"12":0.005152,"13":0.05152,"14":0.010304,"15":0.020608,"16":0.020608,"17":0.1288,"18":1.82896,_:"79"},A:{"6":0,"7":0,"8":0.010304,"9":0,"10":0.005152,"11":1.117984,"5.5":0},P:{"4":0.031781333333333,"5.0-5.4":0,"6.2-6.4":0.010593777777778,"7.2-7.4":0.021187555555556,"8.2":0.021187555555556,"9.2":0.39196977777778,"10.1":2.7543822222222},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.014544},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.140592},O:{"0":0.033936},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.059667051546392},L:{"0":32.589712}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/TD.js b/assets/node_modules/caniuse-lite/data/regions/TD.js
deleted file mode 100644
index 66fddea..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/TD.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0.002106,"9":0,"10":0,"11":0.002106,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.002106,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.002106,"33":0,"34":0,"35":0,"36":0.002106,"37":0.002106,"38":0.002106,"39":0,"40":0.01053,"41":0,"42":0,"43":0.004212,"44":0,"45":0.002106,"46":0,"47":0,"48":0.002106,"49":0.033696,"50":0,"51":0,"52":0,"53":0,"54":0.008424,"55":0.01053,"56":0.002106,"57":0,"58":0.004212,"59":0.002106,"60":0,"61":0,"62":0,"63":0.353808,"64":0.002106,"65":0,"66":0.002106,"67":0.014742,"68":0.002106,"69":0.153738,"70":0.006318,"71":0,"72":0.004212,"73":0.002106,"74":0.080028,"75":0.014742,"76":0.120042,"77":0.027378,"78":0.029484,"79":1.25307,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0.002106,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0.002106,"17":0,"18":0.002106,"19":0,"20":0,"21":0,"22":0.004212,"23":0,"24":0,"25":0,"26":0,"27":0.002106,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.002106,"34":0,"35":0.002106,"36":0.002106,"37":0,"38":0.004212,"39":0,"40":0,"41":0,"42":0,"43":0.002106,"44":0,"45":0.004212,"46":0,"47":0.004212,"48":0,"49":0.002106,"50":0,"51":0,"52":0.004212,"53":0,"54":0,"55":0,"56":0.002106,"57":0,"58":0,"59":0,"60":0.002106,"61":0,"62":0,"63":0,"64":0.002106,"65":0.002106,"66":0.002106,"67":0.004212,"68":0.069498,"69":0.014742,"70":0.004212,"71":0.181116,"72":0.311688,"73":0.077922,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0.002106,"12":0,"15":0,"16":0.01053,"17":0,"18":0,"19":0.002106,"20":0.035802,"21":0,"22":0,"23":0.023166,"24":0.002106,"25":0,"26":0.004212,"27":0,"28":0.008424,"29":0.008424,"30":0.035802,"31":0,"32":0.002106,"33":0,"34":0.002106,"35":0,"36":0,"37":0.002106,"38":0.025272,"39":0.002106,"40":0.002106,"41":0.006318,"42":0.012636,"43":0,"44":0.002106,"45":0.02106,"46":0.1053,"47":0,"48":0,"49":0,"50":0,"51":0.002106,"52":0.002106,"53":0.012636,"54":0.012636,"55":0,"56":0.002106,"57":0,"58":0,"60":0,"62":0,"63":0.002106,"64":0.006318,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.061074},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.054756,"12":0.002106,"13":0.035802,_:"0","3.1":0,"3.2":0,"5.1":0.181116,"6.1":0,"7.1":0,"9.1":0.002106,"10.1":0.035802,"11.1":0.002106,"12.1":0.044226},G:{"8":0.00031861858557567,"3.2":0.00031861858557567,"4.0-4.1":0.00063723717115135,"4.2-4.3":0,"5.0-5.1":0.001911711513454,"6.0-6.1":0.00095585575672702,"7.0-7.1":0.0025489486846054,"8.1-8.4":0.0047792787836351,"9.0-9.2":0.0041420416124837,"9.3":0.039508704611383,"10.0-10.2":0.012426124837451,"10.3":0.043650746223867,"11.0-11.2":0.035048044413324,"11.3-11.4":0.059581675502651,"12.0-12.1":0.08029188356507,"12.2-12.4":0.47983958987696,"13.0-13.1":0.22175853556067,"13.2":0.093355245573672,"13.3":2.1041571391417},I:{"3":0.0010560948616601,"4":0.010560948616601,_:"76","2.1":0,"2.2":0.0031682845849802,"2.3":0.0010560948616601,"4.1":0.017953612648221,"4.2-4.3":0.46679392885376,"4.4":0,"4.4.3-4.4.4":0.30098703557312},B:{"12":0.012636,"13":0.004212,"14":0.006318,"15":0.004212,"16":0.071604,"17":0.018954,"18":0.256932,_:"79"},A:{"6":0.0046490943396226,"7":0,"8":0.018596377358491,"9":0.013947283018868,"10":0.0092981886792453,"11":0.19991105660377,"5.5":0},P:{"4":0.67569417959184,"5.0-5.4":0.090764889795918,"6.2-6.4":0.10084987755102,"7.2-7.4":0.28237965714286,"8.2":0.05042493877551,"9.2":0.53450435102041,"10.1":0.71603413061224},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.015788,"11":0.031576},J:{"7":0,"10":0.047364},R:{_:"0"},M:{"0":0.213138},O:{"0":3.694392},Q:{"1.2":1.152524},S:{"2.5":0.015788},H:{"0":22.315958219931},L:{"0":54.045018}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/TG.js b/assets/node_modules/caniuse-lite/data/regions/TG.js
deleted file mode 100644
index 1d90fc1..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/TG.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.005524,"10":0,"11":0.005524,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.016572,"27":0,"28":0,"29":0.005524,"30":0,"31":0.016572,"32":0.005524,"33":0.038668,"34":0.011048,"35":0,"36":0.005524,"37":0,"38":0,"39":0,"40":0.011048,"41":0,"42":0,"43":0.099432,"44":0,"45":0.02762,"46":0.005524,"47":0.005524,"48":0.005524,"49":0.127052,"50":0.005524,"51":0.005524,"52":0,"53":0,"54":0,"55":0.005524,"56":0,"57":0,"58":0.022096,"59":0.022096,"60":0.005524,"61":0,"62":0.005524,"63":0.22096,"64":0.022096,"65":0.005524,"66":0,"67":0.005524,"68":0.127052,"69":0.348012,"70":0.011048,"71":0.049716,"72":0.132576,"73":0.11048,"74":0.281724,"75":0.099432,"76":0.171244,"77":0.232008,"78":0.502684,"79":10.41274,"80":0.011048,"81":0.011048,"82":0},C:{"2":0,"3":0.005524,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.011048,"22":0,"23":0,"24":0.005524,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.011048,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0.005524,"41":0.005524,"42":0.005524,"43":0.033144,"44":0.005524,"45":0.005524,"46":0,"47":0.02762,"48":0.005524,"49":0.016572,"50":0.011048,"51":0.011048,"52":0.1381,"53":0,"54":0.005524,"55":0.016572,"56":0.016572,"57":0.016572,"58":0.011048,"59":0.005524,"60":0.033144,"61":0.011048,"62":0.005524,"63":0.005524,"64":0.011048,"65":0.033144,"66":0.016572,"67":0.05524,"68":0.408776,"69":0.066288,"70":0.116004,"71":1.673772,"72":4.535204,"73":0.132576,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0.005524,"17":0,"18":0,"19":0,"20":0.005524,"21":0,"22":0,"23":0.005524,"24":0,"25":0,"26":0,"27":0,"28":0.005524,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.005524,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0.005524,"43":0,"44":0.005524,"45":0.005524,"46":0.049716,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.005524,"54":0.005524,"55":0,"56":0.005524,"57":0,"58":0,"60":0.005524,"62":0.038668,"63":0.011048,"64":0.022096,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.05524},E:{"4":0,"5":0,"6":0,"7":0,"8":0.077336,"9":0,"10":0,"11":0.033144,"12":0.127052,"13":0.348012,_:"0","3.1":0,"3.2":0,"5.1":4.071188,"6.1":0,"7.1":0.005524,"9.1":0,"10.1":0.011048,"11.1":0.143624,"12.1":0.121528},G:{"8":0.0002779177753326,"3.2":0.0002779177753326,"4.0-4.1":0.0005558355506652,"4.2-4.3":0,"5.0-5.1":0.0016675066519956,"6.0-6.1":0.0008337533259978,"7.0-7.1":0.0022233422026608,"8.1-8.4":0.004168766629989,"9.0-9.2":0.0036129310793238,"9.3":0.034461804141242,"10.0-10.2":0.010838793237971,"10.3":0.038074735220566,"11.0-11.2":0.030570955286586,"11.3-11.4":0.051970623987196,"12.0-12.1":0.070035279383815,"12.2-12.4":0.4185441696509,"13.0-13.1":0.19343077163149,"13.2":0.081429908172452,"13.3":1.8353689882965},I:{"3":0.001222534914361,"4":0.01222534914361,_:"76","2.1":0,"2.2":0.003667604743083,"2.3":0.001222534914361,"4.1":0.020783093544137,"4.2-4.3":0.54036043214756,"4.4":0,"4.4.3-4.4.4":0.34842245059289},B:{"12":0.044192,"13":0.016572,"14":0.033144,"15":0.077336,"16":0.016572,"17":0.08286,"18":0.784408,_:"79"},A:{"6":0,"7":0,"8":0.062210761904762,"9":0,"10":0.033933142857143,"11":0.1413880952381,"5.5":0},P:{"4":0.1316576969697,"5.0-5.4":0.010127515151515,"6.2-6.4":0.010127515151515,"7.2-7.4":0.040510060606061,"8.2":0.02025503030303,"9.2":0.10127515151515,"10.1":0.668416},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.010804137931034,"11":0.30251586206897},J:{"7":0,"10":0.058188},R:{_:"0"},M:{"0":0.26856},O:{"0":1.360704},Q:{"1.2":0.008952},S:{"2.5":0},H:{"0":9.8862919381443},L:{"0":45.867352}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/TH.js b/assets/node_modules/caniuse-lite/data/regions/TH.js
deleted file mode 100644
index d76c008..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/TH.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.005518,"32":0,"33":0.005518,"34":0,"35":0,"36":0.011036,"37":0,"38":0.005518,"39":0.005518,"40":0.005518,"41":0,"42":0,"43":0.022072,"44":0.005518,"45":0.005518,"46":0.005518,"47":0.005518,"48":0.005518,"49":0.33108,"50":0.005518,"51":0.005518,"52":0.005518,"53":0.011036,"54":0.005518,"55":0.005518,"56":0.011036,"57":0.016554,"58":0.02759,"59":0.016554,"60":0.011036,"61":0.016554,"62":0.016554,"63":0.033108,"64":0.011036,"65":0.022072,"66":0.022072,"67":0.044144,"68":0.022072,"69":0.049662,"70":0.066216,"71":0.077252,"72":0.060698,"73":0.088288,"74":0.115878,"75":0.148986,"76":0.104842,"77":0.13795,"78":0.297972,"79":22.022338,"80":0.088288,"81":0.038626,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0.005518,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005518,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.005518,"44":0,"45":0,"46":0,"47":0.005518,"48":0.011036,"49":0.005518,"50":0.005518,"51":0.005518,"52":0.038626,"53":0.005518,"54":0.005518,"55":0.02759,"56":0.08277,"57":0.005518,"58":0.022072,"59":0,"60":0.005518,"61":0.005518,"62":0.005518,"63":0.005518,"64":0.005518,"65":0.005518,"66":0.005518,"67":0.005518,"68":0.05518,"69":0.011036,"70":0.016554,"71":0.320044,"72":0.833218,"73":0.016554,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.038626,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.005518,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.02759,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.005518},E:{"4":0,"5":0,"6":0,"7":0,"8":0.011036,"9":0.005518,"10":0.011036,"11":0.02759,"12":0.08277,"13":1.495378,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.011036,"10.1":0.05518,"11.1":0.104842,"12.1":0.314526},G:{"8":0.0016920140042013,"3.2":0.0016920140042013,"4.0-4.1":0.0033840280084025,"4.2-4.3":0,"5.0-5.1":0.010152084025208,"6.0-6.1":0.0050760420126038,"7.0-7.1":0.01353611203361,"8.1-8.4":0.025380210063019,"9.0-9.2":0.021996182054616,"9.3":0.20980973652096,"10.0-10.2":0.065988546163849,"10.3":0.23180591857557,"11.0-11.2":0.18612154046214,"11.3-11.4":0.31640661878564,"12.0-12.1":0.42638752905872,"12.2-12.4":2.5481730903271,"13.0-13.1":1.1776417469241,"13.2":0.49576010323097,"13.3":11.174060483745},I:{"3":0.00015946772068511,"4":0.0015946772068511,_:"76","2.1":0,"2.2":0.00047840316205534,"2.3":0.00015946772068511,"4.1":0.0027109512516469,"4.2-4.3":0.07048473254282,"4.4":0,"4.4.3-4.4.4":0.045448300395257},B:{"12":0,"13":0.005518,"14":0.005518,"15":0.005518,"16":0.011036,"17":0.044144,"18":0.435922,_:"79"},A:{"6":0,"7":0,"8":0.083237627118644,"9":0.016647525423729,"10":0.016647525423729,"11":0.8656713220339,"5.5":0},P:{"4":0.18327151698113,"5.0-5.4":0.020363501886792,"6.2-6.4":0.020363501886792,"7.2-7.4":0.08145400754717,"8.2":0.050908754716981,"9.2":0.25454377358491,"10.1":1.9854414339623},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.013446,"11":0.026892},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.08964},O:{"0":0.161352},Q:{"1.2":0.008964},S:{"2.5":0},H:{"0":0.38613739175258},L:{"0":48.006714}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/TJ.js b/assets/node_modules/caniuse-lite/data/regions/TJ.js
deleted file mode 100644
index 75eedd1..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/TJ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.01081,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.005405,"36":0,"37":0,"38":0.005405,"39":0,"40":0.03243,"41":0,"42":0,"43":0,"44":0.05405,"45":0,"46":0.005405,"47":0.02162,"48":0,"49":0.264845,"50":0.005405,"51":0.005405,"52":0,"53":0,"54":0.005405,"55":0.01081,"56":0.005405,"57":0.01081,"58":0.01081,"59":0.016215,"60":0.016215,"61":0,"62":0.01081,"63":0.57293,"64":0.005405,"65":0.005405,"66":0,"67":0.02162,"68":0.01081,"69":0.016215,"70":0.016215,"71":0.102695,"72":0.048645,"73":0.02162,"74":0.15134,"75":0.05405,"76":0.16215,"77":0.135125,"78":0.39997,"79":17.971625,"80":0,"81":0.01081,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0.005405,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.01081,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.005405,"44":0,"45":0,"46":0,"47":0.005405,"48":0,"49":0,"50":0,"51":0,"52":0.059455,"53":0,"54":0,"55":0,"56":0,"57":0.005405,"58":0,"59":0.005405,"60":0.037835,"61":0.005405,"62":0,"63":0,"64":0,"65":0.005405,"66":0.01081,"67":0.005405,"68":0.243225,"69":0.01081,"70":0.016215,"71":0.33511,"72":0.837775,"73":0.005405,"74":0,"3.5":0,"3.6":0.005405},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0.005405,"20":0.005405,"21":0,"22":0.005405,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.005405,"29":0,"30":0.005405,"31":0,"32":0.01081,"33":0,"34":0,"35":0.01081,"36":0.01081,"37":0.005405,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.005405,"44":0,"45":0.01081,"46":0.016215,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.02162,"54":0.01081,"55":0.016215,"56":0.016215,"57":0,"58":0,"60":0.14053,"62":0,"63":0.01081,"64":0.394565,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0.005405,"12.1":0.06486},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0.24863,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0.005405,"11.1":0.005405,"12.1":0.03243},G:{"8":0.00052814544363309,"3.2":0.00052814544363309,"4.0-4.1":0.0010562908872662,"4.2-4.3":0,"5.0-5.1":0.0031688726617985,"6.0-6.1":0.0015844363308993,"7.0-7.1":0.0042251635490647,"8.1-8.4":0.0079221816544964,"9.0-9.2":0.0068658907672302,"9.3":0.065490035010503,"10.0-10.2":0.020597672301691,"10.3":0.072355925777733,"11.0-11.2":0.05809599879964,"11.3-11.4":0.098763197959388,"12.0-12.1":0.13309265179554,"12.2-12.4":0.79538703811143,"13.0-13.1":0.36758922876863,"13.2":0.1547466149845,"13.3":3.4878725097529},I:{"3":0.0010294729907773,"4":0.010294729907773,_:"76","2.1":0,"2.2":0.003088418972332,"2.3":0.0010294729907773,"4.1":0.017501040843215,"4.2-4.3":0.45502706192358,"4.4":0,"4.4.3-4.4.4":0.29339980237154},B:{"12":0.01081,"13":0.005405,"14":0.01081,"15":0.01081,"16":0.01081,"17":0.03243,"18":0.42159,_:"79"},A:{"6":0,"7":0,"8":0.037835,"9":0,"10":0.005405,"11":0.545905,"5.5":0},P:{"4":1.8188451990632,"5.0-5.4":0.23240799765808,"6.2-6.4":0.16167512880562,"7.2-7.4":0.42439721311475,"8.2":0.12125634660422,"9.2":0.59617703747073,"10.1":0.94984138173302},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.0099558333333333,"11":0.049779166666667},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.022975},O:{"0":2.761595},Q:{"1.2":0.16542},S:{"2.5":0},H:{"0":8.496036572165},L:{"0":39.39335}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/TK.js b/assets/node_modules/caniuse-lite/data/regions/TK.js
deleted file mode 100644
index eb215c9..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/TK.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"79":2.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 80 81 82"},C:{_:"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 3.5 3.6"},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 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},E:{"4":0,"10":1.39,_:"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"},G:{"8":0.00097207922376713,"3.2":0.00097207922376713,"4.0-4.1":0.0019441584475343,"4.2-4.3":0,"5.0-5.1":0.0058324753426028,"6.0-6.1":0.0029162376713014,"7.0-7.1":0.007776633790137,"8.1-8.4":0.014581188356507,"9.0-9.2":0.012637029908973,"9.3":0.12053782374712,"10.0-10.2":0.037911089726918,"10.3":0.1331748536561,"11.0-11.2":0.10692871461438,"11.3-11.4":0.18177881484445,"12.0-12.1":0.24496396438932,"12.2-12.4":1.4639513109933,"13.0-13.1":0.67656713974192,"13.2":0.28481921256377,"13.3":6.4196111937581},I:{"3":0,"4":0,_:"76","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},B:{_:"12 13 14 15 16 17 18 79"},A:{_:"6 7 8 9 10 11 5.5"},P:{"4":0.1316576969697,"5.0-5.4":0.010127515151515,"6.2-6.4":0.010127515151515,"7.2-7.4":1.388268,"8.2":0.02025503030303,"9.2":0.10127515151515,"10.1":1.388268},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.010804137931034,"11":0.30251586206897},J:{"7":0,"10":0},R:{_:"0"},M:{_:"0"},O:{_:"0"},Q:{_:"1.2"},S:{_:"2.5"},H:{"0":0},L:{"0":83.326144}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/TL.js b/assets/node_modules/caniuse-lite/data/regions/TL.js
deleted file mode 100644
index 444bf26..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/TL.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0.002664,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.005328,"26":0,"27":0.002664,"28":0.002664,"29":0,"30":0,"31":0.007992,"32":0,"33":0.002664,"34":0,"35":0.002664,"36":0,"37":0.002664,"38":0,"39":0,"40":0.01332,"41":0,"42":0.005328,"43":0.023976,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.101232,"50":0,"51":0.002664,"52":0,"53":0,"54":0,"55":0.007992,"56":0.002664,"57":0,"58":0.005328,"59":0.01332,"60":0.002664,"61":0,"62":0.005328,"63":0.034632,"64":0,"65":0.005328,"66":0.002664,"67":0.015984,"68":0.002664,"69":0.01332,"70":0.010656,"71":0.007992,"72":0.015984,"73":0.005328,"74":0.015984,"75":0.007992,"76":0.01332,"77":0.018648,"78":0.0666,"79":2.245752,"80":0.002664,"81":0.005328,"82":0},C:{"2":0,"3":0,"4":0.007992,"5":0.002664,"6":0.002664,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0.002664,"16":0,"17":0,"18":0.002664,"19":0.002664,"20":0.007992,"21":0.01332,"22":0,"23":0.002664,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.002664,"31":0.005328,"32":0.002664,"33":0,"34":0.005328,"35":0.010656,"36":0.002664,"37":0.010656,"38":0.002664,"39":0.002664,"40":0.002664,"41":0.021312,"42":0.002664,"43":0.031968,"44":0.005328,"45":0,"46":0.002664,"47":0.037296,"48":0.01332,"49":0.005328,"50":0,"51":0.002664,"52":0.021312,"53":0.002664,"54":0,"55":0.002664,"56":0.007992,"57":0.010656,"58":0.005328,"59":0.002664,"60":0,"61":0.002664,"62":0.005328,"63":0.002664,"64":0.002664,"65":0.005328,"66":0.021312,"67":0.042624,"68":0.045288,"69":0.055944,"70":0.03996,"71":0.402264,"72":0.81252,"73":0.165168,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.002664,"31":0,"32":0,"33":0,"34":0.002664,"35":0,"36":0,"37":0.082584,"38":0,"39":0,"40":0,"41":0,"42":0.005328,"43":0,"44":0,"45":0,"46":0.005328,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0.021312,"55":0,"56":0.002664,"57":0,"58":0.002664,"60":0.002664,"62":0.002664,"63":0.005328,"64":0.002664,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0.002664,"11.6":0,"12.1":0.007992},E:{"4":0,"5":0,"6":0,"7":0.002664,"8":0,"9":0.002664,"10":0.005328,"11":0.002664,"12":0.010656,"13":0.074592,_:"0","3.1":0,"3.2":0,"5.1":0.863136,"6.1":0,"7.1":0,"9.1":0.005328,"10.1":0.007992,"11.1":0.02664,"12.1":0.034632},G:{"8":0.00032238311493448,"3.2":0.00032238311493448,"4.0-4.1":0.00064476622986896,"4.2-4.3":0,"5.0-5.1":0.0019342986896069,"6.0-6.1":0.00096714934480344,"7.0-7.1":0.0025790649194758,"8.1-8.4":0.0048357467240172,"9.0-9.2":0.0041909804941482,"9.3":0.039975506251876,"10.0-10.2":0.012572941482445,"10.3":0.044166486746024,"11.0-11.2":0.035462142642793,"11.3-11.4":0.060285642492748,"12.0-12.1":0.081240544963489,"12.2-12.4":0.48550897109133,"13.0-13.1":0.2243786479944,"13.2":0.094458252675803,"13.3":2.1290180910273},I:{"3":0.00076762055335968,"4":0.0076762055335968,_:"76","2.1":0,"2.2":0.0023028616600791,"2.3":0.00076762055335968,"4.1":0.013049549407115,"4.2-4.3":0.33928828458498,"4.4":0,"4.4.3-4.4.4":0.21877185770751},B:{"12":0.010656,"13":0.007992,"14":0.002664,"15":0.021312,"16":0.010656,"17":0.018648,"18":0.210456,_:"79"},A:{"6":0.002664,"7":0,"8":0.015984,"9":0,"10":0.010656,"11":0.090576,"5.5":0},P:{"4":2.0756295,"5.0-5.4":0.070190369565217,"6.2-6.4":0.10027195652174,"7.2-7.4":0.4211422173913,"8.2":0.05013597826087,"9.2":0.33089745652174,"10.1":0.63171332608696},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0.007336},R:{_:"0"},M:{"0":0.088032},O:{"0":1.408512},Q:{"1.2":0.051352},S:{"2.5":0},H:{"0":3.7226544604811},L:{"0":78.321184}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/TM.js b/assets/node_modules/caniuse-lite/data/regions/TM.js
deleted file mode 100644
index 283dbab..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/TM.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0.003533,"9":0.003533,"10":0,"11":0.017665,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.003533,"27":0,"28":0.003533,"29":0.003533,"30":0,"31":0.014132,"32":0.003533,"33":0.007066,"34":0.007066,"35":0.003533,"36":0,"37":0,"38":0,"39":0.031797,"40":0.010599,"41":0.007066,"42":0.010599,"43":0.049462,"44":0.003533,"45":0.007066,"46":0.007066,"47":0.021198,"48":0,"49":0.275574,"50":0.007066,"51":0.003533,"52":0.007066,"53":0.007066,"54":0.003533,"55":0.007066,"56":0.007066,"57":0.007066,"58":0.003533,"59":0.007066,"60":0.003533,"61":0.028264,"62":0,"63":0.017665,"64":0.017665,"65":0.028264,"66":0.003533,"67":0.007066,"68":0,"69":0.03533,"70":0.017665,"71":0.14132,"72":0.098924,"73":0.084792,"74":0.045929,"75":0.208447,"76":0.21198,"77":0.10599,"78":0.229645,"79":5.698729,"80":0.024731,"81":0.003533,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0.003533,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.007066,"22":0,"23":0.003533,"24":0,"25":0,"26":0.003533,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0.003533,"42":0.003533,"43":0.003533,"44":0,"45":0,"46":0,"47":0.003533,"48":0.003533,"49":0,"50":0,"51":0.007066,"52":0.007066,"53":0.007066,"54":0,"55":0,"56":0,"57":0.003533,"58":0,"59":0,"60":0.003533,"61":0,"62":0.007066,"63":0.003533,"64":0.010599,"65":0.007066,"66":0.003533,"67":0.003533,"68":0.056528,"69":0,"70":0.028264,"71":0.021198,"72":0.017665,"73":0,"74":0,"3.5":0,"3.6":0.003533},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0.003533,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.003533,"34":0.010599,"35":0,"36":0.003533,"37":0.007066,"38":0.003533,"39":0,"40":0,"41":0,"42":0,"43":0.003533,"44":0,"45":0,"46":0.010599,"47":0,"48":0,"49":0,"50":0,"51":0.010599,"52":0,"53":0.03533,"54":0.003533,"55":0.003533,"56":0.03533,"57":0.007066,"58":0.003533,"60":0.010599,"62":0.007066,"63":0.003533,"64":0.007066,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0.003533,"11.1":0,"11.5":0,"11.6":0,"12.1":0.014132},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0.045929,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0,"11.1":0,"12.1":0.003533},G:{"8":0.00057886696008803,"3.2":0.00057886696008803,"4.0-4.1":0.0011577339201761,"4.2-4.3":0,"5.0-5.1":0.0034732017605282,"6.0-6.1":0.0017366008802641,"7.0-7.1":0.0046309356807042,"8.1-8.4":0.0086830044013204,"9.0-9.2":0.0075252704811443,"9.3":0.071779503050915,"10.0-10.2":0.022575811443433,"10.3":0.07930477353206,"11.0-11.2":0.063675365609683,"11.3-11.4":0.10824812153646,"12.0-12.1":0.14587447394218,"12.2-12.4":0.87177364189257,"13.0-13.1":0.40289140422127,"13.2":0.16960801930579,"13.3":3.8228374044213},I:{"3":0.0014746758893281,"4":0.014746758893281,_:"76","2.1":0,"2.2":0.0044240276679842,"2.3":0.0014746758893281,"4.1":0.025069490118577,"4.2-4.3":0.651806743083,"4.4":0,"4.4.3-4.4.4":0.4202826284585},B:{"12":0.021198,"13":0.024731,"14":0.014132,"15":0,"16":0.003533,"17":0.017665,"18":0.067127,_:"79"},A:{"6":0,"7":0,"8":0.083472280155642,"9":0.0072584591439689,"10":0.094359968871595,"11":0.74762129182879,"5.5":0},P:{"4":3.3363885112782,"5.0-5.4":0.15446243107769,"6.2-6.4":0.27803237593985,"7.2-7.4":0.96796456808688,"8.2":0.041189981620718,"9.2":0.84439462322473,"10.1":6.6727770225564},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.0291015,"11":0.0291015},J:{"7":0,"10":0.06467},R:{_:"0"},M:{"0":0.084071},O:{"0":1.965968},Q:{"1.2":0.058203},S:{"2.5":0},H:{"0":0.67960169587629},L:{"0":60.091055}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/TN.js b/assets/node_modules/caniuse-lite/data/regions/TN.js
deleted file mode 100644
index 9e2ff66..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/TN.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.014058,"31":0.007029,"32":0,"33":0,"34":0.007029,"35":0,"36":0.014058,"37":0,"38":0.007029,"39":0.007029,"40":0.007029,"41":0.007029,"42":0.007029,"43":0.014058,"44":0,"45":0,"46":0.007029,"47":0.007029,"48":0.014058,"49":1.117611,"50":0.007029,"51":0.007029,"52":0,"53":0.007029,"54":0.007029,"55":0,"56":0.014058,"57":0,"58":0.042174,"59":0.014058,"60":0.035145,"61":0.021087,"62":0.021087,"63":0.098406,"64":0.007029,"65":0.161667,"66":0.063261,"67":0.189783,"68":0.028116,"69":0.168696,"70":0.168696,"71":0.217899,"72":0.224928,"73":0.189783,"74":0.112464,"75":0.147609,"76":0.203841,"77":0.260073,"78":0.716958,"79":36.072828,"80":0.21087,"81":0.028116,"82":0},C:{"2":0,"3":0.007029,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.007029,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.007029,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.007029,"44":0,"45":0,"46":0,"47":0.007029,"48":0.056232,"49":0,"50":0.014058,"51":0,"52":0.056232,"53":0,"54":0,"55":0.021087,"56":0.007029,"57":0.007029,"58":0.014058,"59":0.007029,"60":0.014058,"61":0,"62":0.007029,"63":0.028116,"64":0.014058,"65":0.042174,"66":0.042174,"67":0.021087,"68":0.105435,"69":0.021087,"70":0.028116,"71":0.7029,"72":1.419858,"73":0.028116,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.007029,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.007029,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.007029,"54":0,"55":0,"56":0.028116,"57":0.021087,"58":0.014058,"60":0,"62":0.007029,"63":0.007029,"64":0.267102,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0.021087,"6":0,"7":0,"8":0,"9":0.007029,"10":0.035145,"11":0.042174,"12":0.133551,"13":0.520146,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.021087,"10.1":0.119493,"11.1":0.14058,"12.1":0.288189},G:{"8":0.00029597239171752,"3.2":0.00029597239171752,"4.0-4.1":0.00059194478343503,"4.2-4.3":0,"5.0-5.1":0.0017758343503051,"6.0-6.1":0.00088791717515255,"7.0-7.1":0.0023677791337401,"8.1-8.4":0.0044395858757627,"9.0-9.2":0.0038476410923277,"9.3":0.036700576572972,"10.0-10.2":0.011542923276983,"10.3":0.0405482176653,"11.0-11.2":0.032556963088927,"11.3-11.4":0.055346837251175,"12.0-12.1":0.074585042712814,"12.2-12.4":0.44573442192658,"13.0-13.1":0.20599678463539,"13.2":0.086719910773232,"13.3":1.9546016749025},I:{"3":0.00054619894598155,"4":0.0054619894598155,_:"76","2.1":0,"2.2":0.0016385968379447,"2.3":0.00054619894598155,"4.1":0.0092853820816864,"4.2-4.3":0.24141993412385,"4.4":0,"4.4.3-4.4.4":0.15566669960474},B:{"12":0.014058,"13":0.007029,"14":0.021087,"15":0.021087,"16":0.014058,"17":0.098406,"18":0.569349,_:"79"},A:{"6":0,"7":0,"8":0.0590436,"9":0.00738045,"10":0.00738045,"11":0.2214135,"5.5":0},P:{"4":0.35345974248927,"5.0-5.4":0.020197699570815,"6.2-6.4":0.020197699570815,"7.2-7.4":0.14138389699571,"8.2":0.030296549356223,"9.2":0.20197699570815,"10.1":1.5552228669528},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.053478},J:{"7":0,"10":0.005942},R:{_:"0"},M:{"0":0.074275},O:{"0":0.240651},Q:{"1.2":0.002971},S:{"2.5":0},H:{"0":0.30377709278351},L:{"0":43.147525}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/TO.js b/assets/node_modules/caniuse-lite/data/regions/TO.js
deleted file mode 100644
index 7b475e7..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/TO.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0.004146,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.004146,"36":0,"37":0.033168,"38":0,"39":0,"40":0.008292,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.012438,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.004146,"57":0.012438,"58":0.008292,"59":0,"60":0,"61":0,"62":0.004146,"63":0.219738,"64":0,"65":0.004146,"66":0.004146,"67":0.004146,"68":0.004146,"69":0.004146,"70":0,"71":0.008292,"72":0.012438,"73":0.012438,"74":0.049752,"75":0.016584,"76":0.008292,"77":0.045606,"78":0.140964,"79":8.772936,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.033168,"22":0,"23":0,"24":0,"25":0,"26":0.004146,"27":0.004146,"28":0,"29":0,"30":0,"31":0,"32":0.008292,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.004146,"49":0,"50":0.012438,"51":0,"52":0.402162,"53":0,"54":0.004146,"55":0,"56":0.016584,"57":0,"58":0,"59":0,"60":0,"61":0.004146,"62":0,"63":0.004146,"64":0,"65":0.045606,"66":0.008292,"67":0.008292,"68":0.058044,"69":0.024876,"70":0.053898,"71":0.169986,"72":0.480936,"73":0.053898,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.008292,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.004146,"54":0,"55":0,"56":0,"57":0.004146,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.04146,"11":0.008292,"12":0.008292,"13":0.49752,_:"0","3.1":0,"3.2":0,"5.1":0.008292,"6.1":0,"7.1":0,"9.1":0.037314,"10.1":0.004146,"11.1":0.024876,"12.1":0.033168},G:{"8":0.0013088432529759,"3.2":0.0013088432529759,"4.0-4.1":0.0026176865059518,"4.2-4.3":0,"5.0-5.1":0.0078530595178554,"6.0-6.1":0.0039265297589277,"7.0-7.1":0.010470746023807,"8.1-8.4":0.019632648794638,"9.0-9.2":0.017014962288687,"9.3":0.16229656336901,"10.0-10.2":0.05104488686606,"10.3":0.1793115256577,"11.0-11.2":0.14397275782735,"11.3-11.4":0.24475368830649,"12.0-12.1":0.32982849974993,"12.2-12.4":1.9711179389817,"13.0-13.1":0.91095490407122,"13.2":0.38349107312194,"13.3":8.6436008426528},I:{"3":0.00057103557312253,"4":0.0057103557312253,_:"76","2.1":0,"2.2":0.0017131067193676,"2.3":0.00057103557312253,"4.1":0.009707604743083,"4.2-4.3":0.25239772332016,"4.4":0,"4.4.3-4.4.4":0.16274513833992},B:{"12":0,"13":0.02073,"14":0.004146,"15":0.004146,"16":0.008292,"17":0.033168,"18":0.447768,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.261198,"5.5":0},P:{"4":0.55778439130435,"5.0-5.4":0.061976043478261,"6.2-6.4":0.25823351449275,"7.2-7.4":0.25823351449275,"8.2":0.11362274637681,"9.2":0.49580834782609,"10.1":1.105239442029},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.017562},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.169766},O:{"0":1.381544},Q:{"1.2":3.969012},S:{"2.5":0},H:{"0":1.0973534226804},L:{"0":60.844308}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/TR.js b/assets/node_modules/caniuse-lite/data/regions/TR.js
deleted file mode 100644
index f668f58..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/TR.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.005134,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.012835,"35":0,"36":0.002567,"37":0,"38":0.017969,"39":0,"40":0,"41":0,"42":0,"43":0.002567,"44":0,"45":0,"46":0.002567,"47":0.002567,"48":0.002567,"49":0.079577,"50":0,"51":0,"52":0,"53":0.010268,"54":0,"55":0.002567,"56":0.002567,"57":0.002567,"58":0.005134,"59":0.002567,"60":0.002567,"61":0.002567,"62":0.002567,"63":0.010268,"64":0.002567,"65":0.007701,"66":0.002567,"67":0.007701,"68":0.005134,"69":0.010268,"70":0.023103,"71":0.038505,"72":0.02567,"73":0.030804,"74":0.023103,"75":0.038505,"76":0.035938,"77":0.041072,"78":0.089845,"79":4.684775,"80":0.005134,"81":0.002567,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.002567,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.002567,"49":0,"50":0,"51":0,"52":0.005134,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0.002567,"61":0,"62":0,"63":0.002567,"64":0.010268,"65":0.002567,"66":0.002567,"67":0,"68":0.02567,"69":0.002567,"70":0.002567,"71":0.046206,"72":0.118082,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.005134,"32":0.002567,"33":0,"34":0,"35":0,"36":0.002567,"37":0,"38":0,"39":0,"40":0.007701,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.002567,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.002567,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.023103,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.002567,"12":0.007701,"13":0.133484,_:"0","3.1":0,"3.2":0,"5.1":0.056474,"6.1":0,"7.1":0,"9.1":0,"10.1":0.007701,"11.1":0.010268,"12.1":0.030804},G:{"8":0.0012655798739622,"3.2":0.0012655798739622,"4.0-4.1":0.0025311597479244,"4.2-4.3":0,"5.0-5.1":0.0075934792437731,"6.0-6.1":0.0037967396218866,"7.0-7.1":0.010124638991698,"8.1-8.4":0.018983698109433,"9.0-9.2":0.016452538361508,"9.3":0.15693190437131,"10.0-10.2":0.049357615084525,"10.3":0.17338444273282,"11.0-11.2":0.13921378613584,"11.3-11.4":0.23666343643093,"12.0-12.1":0.31892612823847,"12.2-12.4":1.9059632901871,"13.0-13.1":0.88084359227768,"13.2":0.37081490307092,"13.3":8.3578894876463},I:{"3":0.00022130303030303,"4":0.0022130303030303,_:"76","2.1":0,"2.2":0.00066390909090909,"2.3":0.00022130303030303,"4.1":0.0037621515151515,"4.2-4.3":0.097815939393939,"4.4":0,"4.4.3-4.4.4":0.063071363636364},B:{"12":0.002567,"13":0.002567,"14":0.002567,"15":0.002567,"16":0.002567,"17":0.015402,"18":0.133484,_:"79"},A:{"6":0,"7":0,"8":0.0078315254237288,"9":0,"10":0.0052210169491525,"11":0.14096745762712,"5.5":0},P:{"4":0.70063966239316,"5.0-5.4":0.071079386039886,"6.2-6.4":0.060925188034188,"7.2-7.4":0.34524273219373,"8.2":0.10154198005698,"9.2":0.5077099002849,"10.1":5.3106455569801},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.059464},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.111495},O:{"0":0.200691},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.57704090378007},L:{"0":70.001825}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/TT.js b/assets/node_modules/caniuse-lite/data/regions/TT.js
deleted file mode 100644
index 446338f..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/TT.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0.004879,"35":0,"36":0.004879,"37":0.004879,"38":0.009758,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0.004879,"45":0,"46":0,"47":0.004879,"48":0,"49":0.224434,"50":0.009758,"51":0,"52":0,"53":0.014637,"54":0,"55":0.009758,"56":0.009758,"57":0.004879,"58":0.009758,"59":0.004879,"60":0.004879,"61":0,"62":0.04879,"63":0.009758,"64":0.019516,"65":0.029274,"66":0.004879,"67":0.04879,"68":0,"69":0.102459,"70":0.009758,"71":0.024395,"72":0.019516,"73":0.034153,"74":0.063427,"75":0.078064,"76":0.058548,"77":0.14637,"78":0.351288,"79":13.226969,"80":0.029274,"81":0.029274,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.009758,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.004879,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.004879,"48":0.024395,"49":0,"50":0,"51":0,"52":0.034153,"53":0,"54":0.004879,"55":0.004879,"56":0.004879,"57":0,"58":0,"59":0,"60":0.009758,"61":0,"62":0,"63":0.004879,"64":0,"65":0.009758,"66":0.004879,"67":0.004879,"68":0.102459,"69":0.014637,"70":0.053669,"71":0.331772,"72":0.887978,"73":0.009758,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0.004879,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.004879,"57":0,"58":0,"60":0.004879,"62":0,"63":0,"64":0.029274,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.004879},E:{"4":0,"5":0,"6":0,"7":0,"8":0.034153,"9":0,"10":0.004879,"11":0.014637,"12":0.117096,"13":1.571038,_:"0","3.1":0,"3.2":0,"5.1":0.053669,"6.1":0,"7.1":0,"9.1":0.014637,"10.1":0.053669,"11.1":0.200039,"12.1":0.424473},G:{"8":0.0012248569570871,"3.2":0.0012248569570871,"4.0-4.1":0.0024497139141743,"4.2-4.3":0,"5.0-5.1":0.0073491417425228,"6.0-6.1":0.0036745708712614,"7.0-7.1":0.009798855656697,"8.1-8.4":0.018372854356307,"9.0-9.2":0.015923140442133,"9.3":0.1518822626788,"10.0-10.2":0.047769421326398,"10.3":0.16780540312094,"11.0-11.2":0.13473426527958,"11.3-11.4":0.22904825097529,"12.0-12.1":0.30866395318596,"12.2-12.4":1.8446345773732,"13.0-13.1":0.85250044213264,"13.2":0.35888308842653,"13.3":8.0889553446034},I:{"3":0.0014475678524374,"4":0.014475678524374,_:"76","2.1":0,"2.2":0.0043427035573123,"2.3":0.0014475678524374,"4.1":0.024608653491436,"4.2-4.3":0.63982499077734,"4.4":0,"4.4.3-4.4.4":0.41255683794466},B:{"12":0.004879,"13":0.014637,"14":0.014637,"15":0.019516,"16":0.034153,"17":0.136612,"18":1.263661,_:"79"},A:{"6":0,"7":0,"8":0.004879,"9":0.004879,"10":0.009758,"11":0.53669,"5.5":0},P:{"4":0.17064747692308,"5.0-5.4":0,"6.2-6.4":0.031996401923077,"7.2-7.4":0.138651075,"8.2":0.010665467307692,"9.2":0.42661869230769,"10.1":4.5648200076923},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.025605},J:{"7":0,"10":0.005121},R:{_:"0"},M:{"0":0.128025},O:{"0":0.163872},Q:{"1.2":0.010242},S:{"2.5":0},H:{"0":0.44118910824742},L:{"0":55.823336}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/TV.js b/assets/node_modules/caniuse-lite/data/regions/TV.js
deleted file mode 100644
index cacba44..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/TV.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0.016824,"64":0,"65":0.016824,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0.035751,"75":0,"76":0.016824,"77":0.016824,"78":0.107253,"79":2.496261,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0.302832,"69":0,"70":0,"71":0.052575,"72":0.143004,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0.088326,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0.016824,"11.1":0,"12.1":0.784419},G:{"8":0.00049632489746924,"3.2":0.00049632489746924,"4.0-4.1":0.00099264979493848,"4.2-4.3":0,"5.0-5.1":0.0029779493848154,"6.0-6.1":0.0014889746924077,"7.0-7.1":0.0039705991797539,"8.1-8.4":0.0074448734620386,"9.0-9.2":0.0064522236671001,"9.3":0.061544287286186,"10.0-10.2":0.0193566710013,"10.3":0.067996510953286,"11.0-11.2":0.054595738721616,"11.3-11.4":0.092812755826748,"12.0-12.1":0.12507387416225,"12.2-12.4":0.74746529558868,"13.0-13.1":0.34544212863859,"13.2":0.14542319495849,"13.3":3.2777296228869},I:{"3":0.00097915151515152,"4":0.0097915151515152,_:"76","2.1":0,"2.2":0.0029374545454545,"2.3":0.00097915151515152,"4.1":0.016645575757576,"4.2-4.3":0.43278496969697,"4.4":0,"4.4.3-4.4.4":0.27905818181818},B:{"12":0,"13":0.035751,"14":0,"15":0,"16":0.071502,"17":0,"18":0.107253,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"5.5":0},P:{"4":0.081671605263158,"5.0-5.4":0.42877592763158,"6.2-6.4":0,"7.2-7.4":0.34710432236842,"8.2":0.17355216118421,"9.2":0.17355216118421,"10.1":1.8988648223684},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":1.468842},O:{"0":0.260601},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.16448012714777},L:{"0":84.15284}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/TW.js b/assets/node_modules/caniuse-lite/data/regions/TW.js
deleted file mode 100644
index ffb1f93..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/TW.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.004883,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0.014649,"25":0,"26":0.004883,"27":0,"28":0,"29":0,"30":0.004883,"31":0,"32":0,"33":0,"34":0.014649,"35":0,"36":0,"37":0,"38":0.053713,"39":0.004883,"40":0.004883,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.004883,"47":0.004883,"48":0.009766,"49":0.24415,"50":0.004883,"51":0.004883,"52":0,"53":0.083011,"54":0.004883,"55":0.009766,"56":0.004883,"57":0.004883,"58":0.019532,"59":0.004883,"60":0.004883,"61":0.024415,"62":0.009766,"63":0.04883,"64":0.024415,"65":0.019532,"66":0.014649,"67":0.034181,"68":0.019532,"69":0.043947,"70":0.039064,"71":0.043947,"72":0.043947,"73":0.09766,"74":0.083011,"75":0.102543,"76":0.087894,"77":0.131841,"78":0.361342,"79":16.397114,"80":0.019532,"81":0.009766,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.014649,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.004883,"49":0,"50":0.004883,"51":0.004883,"52":0.034181,"53":0,"54":0,"55":0,"56":0.014649,"57":0.004883,"58":0.004883,"59":0,"60":0.004883,"61":0,"62":0.004883,"63":0,"64":0.004883,"65":0.004883,"66":0.009766,"67":0.009766,"68":0.058596,"69":0.009766,"70":0.014649,"71":0.283214,"72":0.58596,"73":0.004883,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.004883,"37":0.04883,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.004883,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.004883,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.004883,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0.004883,"8":0.004883,"9":0,"10":0.004883,"11":0.014649,"12":0.053713,"13":1.132856,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.014649,"10.1":0.039064,"11.1":0.04883,"12.1":0.166022},G:{"8":0.0033126342902871,"3.2":0.0033126342902871,"4.0-4.1":0.0066252685805742,"4.2-4.3":0,"5.0-5.1":0.019875805741723,"6.0-6.1":0.0099379028708613,"7.0-7.1":0.026501074322297,"8.1-8.4":0.049689514354306,"9.0-9.2":0.043064245773732,"9.3":0.4107666519956,"10.0-10.2":0.1291927373212,"10.3":0.45383089776933,"11.0-11.2":0.36438977193158,"11.3-11.4":0.61946261228369,"12.0-12.1":0.83478384115235,"12.2-12.4":4.9888272411724,"13.0-13.1":2.3055934660398,"13.2":0.97060184705412,"13.3":21.876636853056},I:{"3":0.00026932147562582,"4":0.0026932147562582,_:"76","2.1":0,"2.2":0.00080796442687747,"2.3":0.00026932147562582,"4.1":0.004578465085639,"4.2-4.3":0.11904009222661,"4.4":0,"4.4.3-4.4.4":0.07675662055336},B:{"12":0,"13":0,"14":0.004883,"15":0.004883,"16":0.004883,"17":0.039064,"18":0.600609,_:"79"},A:{"6":0,"7":0,"8":0.045001728,"9":0.005000192,"10":0.015000576,"11":0.560021504,"5.5":0},P:{"4":0.34342281879195,"5.0-5.4":0.021463926174497,"6.2-6.4":0.032195889261745,"7.2-7.4":0.10731963087248,"8.2":0.096587667785235,"9.2":0.40781459731544,"10.1":2.1141967281879},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.112574},O:{"0":0.10234},Q:{"1.2":0.015351},S:{"2.5":0},H:{"0":0.66853341237113},L:{"0":38.31239}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/TZ.js b/assets/node_modules/caniuse-lite/data/regions/TZ.js
deleted file mode 100644
index 2bac165..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/TZ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"11":0.006184,"21":0.006184,"25":0.006184,"27":0.003092,"28":0.006184,"29":0.009276,"31":0.006184,"32":0.012368,"33":0.009276,"36":0.012368,"37":0.006184,"38":0.003092,"40":0.009276,"42":0.009276,"43":0.037104,"46":0.003092,"47":0.003092,"49":0.10822,"50":0.043288,"55":0.027828,"56":0.003092,"57":0.071116,"58":0.024736,"60":0.043288,"61":0.006184,"62":0.01546,"63":0.173152,"64":0.01546,"65":0.027828,"66":0.006184,"67":0.021644,"68":0.012368,"69":0.395776,"70":0.021644,"71":0.03092,"72":0.04638,"73":0.052564,"74":0.120588,"75":0.074208,"76":0.132956,"77":0.182428,"78":0.361764,"79":13.144092,"80":0.064932,"81":0.052564,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 22 23 24 26 30 34 35 39 41 44 45 48 51 52 53 54 59 82"},C:{"3":0.003092,"4":0.01546,"5":0.003092,"6":0.009276,"10":0.003092,"15":0.003092,"16":0.003092,"17":0.003092,"18":0.003092,"19":0.009276,"20":0.006184,"21":0.009276,"22":0.003092,"23":0.018552,"25":0.003092,"26":0.009276,"28":0.006184,"29":0.006184,"30":0.009276,"31":0.003092,"32":0.009276,"33":0.009276,"34":0.009276,"35":0.009276,"36":0.006184,"37":0.009276,"38":0.012368,"39":0.006184,"40":0.01546,"41":0.009276,"42":0.009276,"43":0.049472,"44":0.043288,"45":0.012368,"46":0.012368,"47":0.074208,"48":0.049472,"49":0.034012,"50":0.003092,"51":0.006184,"52":0.04638,"53":0.006184,"54":0.006184,"55":0.006184,"56":0.018552,"57":0.012368,"58":0.009276,"59":0.006184,"60":0.024736,"61":0.006184,"62":0.009276,"63":0.009276,"64":0.01546,"65":0.009276,"66":0.012368,"67":0.027828,"68":0.086576,"69":0.068024,"70":0.114404,"71":1.354296,"72":3.101276,"73":0.321568,_:"2 7 8 9 11 12 13 14 24 27 74","3.5":0.003092,"3.6":0.003092},F:{"18":0.003092,"34":0.006184,"36":0.009276,"42":0.012368,"56":0.006184,"58":0.003092,"62":0.009276,"63":0.01546,"64":0.027828,_:"9 11 12 15 16 17 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 47 48 49 50 51 52 53 54 55 57 60 9.5-9.6 10.5 11.1 11.5","10.0-10.1":0,"10.6":0.003092,"11.6":0.006184,"12.1":0.003092},E:{"4":0.006184,"5":0.003092,"8":0.086576,"9":0.074208,"10":0.037104,"11":0.043288,"12":0.117496,"13":0.868852,_:"0 6 7 3.1 3.2 6.1 7.1","5.1":0.003092,"9.1":0.06184,"10.1":0.12368,"11.1":0.182428,"12.1":0.374132},G:{"8":0.00039393117935381,"3.2":0.00039393117935381,"4.0-4.1":0.00078786235870761,"4.2-4.3":0,"5.0-5.1":0.0023635870761228,"6.0-6.1":0.0011817935380614,"7.0-7.1":0.0031514494348304,"8.1-8.4":0.0059089676903071,"9.0-9.2":0.0051211053315995,"9.3":0.048847466239872,"10.0-10.2":0.015363315994798,"10.3":0.053968571571471,"11.0-11.2":0.043332429728919,"11.3-11.4":0.073665130539162,"12.0-12.1":0.099270657197159,"12.2-12.4":0.59326035610683,"13.0-13.1":0.27417610083025,"13.2":0.11542183555067,"13.3":2.6015215084525},I:{"3":0.00046424110671937,"4":0.0046424110671937,_:"76","2.1":0,"2.2":0.0013927233201581,"2.3":0.00046424110671937,"4.1":0.0078920988142293,"4.2-4.3":0.20519456916996,"4.4":0,"4.4.3-4.4.4":0.13230871541502},B:{"12":0.12368,"13":0.064932,"14":0.037104,"15":0.055656,"16":0.098944,"17":0.160784,"18":1.140948,_:"79"},A:{"8":0.21336385641026,"9":0.0073573743589744,"10":0.029429497435897,"11":0.46719327179487,_:"6 7 5.5"},P:{"4":0.59504755172414,"5.0-5.4":0.070598862068966,"6.2-6.4":0.030256655172414,"7.2-7.4":0.20171103448276,"8.2":0.060513310344828,"9.2":0.47402093103448,"10.1":1.169924},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.022701,"11":0.136206},J:{"7":0,"10":0.027636},R:{_:"0"},M:{"0":0.241815},O:{"0":3.330138},Q:{"1.2":0.027636},S:{"2.5":0.172725},H:{"0":17.104701520619},L:{"0":41.957532}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/UA.js b/assets/node_modules/caniuse-lite/data/regions/UA.js
deleted file mode 100644
index 6dfeb62..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/UA.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.01493,"37":0,"38":0.007465,"39":0,"40":0.022395,"41":0.007465,"42":0.007465,"43":0.007465,"44":0.007465,"45":0.007465,"46":0.007465,"47":0.007465,"48":0.007465,"49":0.70171,"50":0.007465,"51":0.01493,"52":0.007465,"53":0.01493,"54":0.007465,"55":0.01493,"56":0.02986,"57":0.022395,"58":0.037325,"59":0.022395,"60":0.022395,"61":0.186625,"62":0.02986,"63":0.052255,"64":0.022395,"65":0.022395,"66":0.02986,"67":0.05972,"68":0.02986,"69":0.097045,"70":0.156765,"71":0.291135,"72":0.23888,"73":0.22395,"74":0.216485,"75":0.26874,"76":0.25381,"77":0.2986,"78":0.843545,"79":35.555795,"80":0.037325,"81":0.052255,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.01493,"21":0.007465,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.007465,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.007465,"39":0,"40":0,"41":0,"42":0,"43":0.007465,"44":0,"45":0.052255,"46":0,"47":0.02986,"48":0.022395,"49":0.01493,"50":0.02986,"51":0.02986,"52":0.231415,"53":0.022395,"54":0.02986,"55":0.022395,"56":0.10451,"57":0.04479,"58":0.02986,"59":0.007465,"60":0.111975,"61":0.01493,"62":0.007465,"63":0.01493,"64":0.022395,"65":0.022395,"66":0.037325,"67":0.04479,"68":0.20902,"69":0.037325,"70":0.052255,"71":0.73157,"72":2.14992,"73":0.02986,"74":0.007465,"3.5":0,"3.6":0.007465},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0.007465,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.10451,"37":0.007465,"38":0,"39":0,"40":0,"41":0,"42":0.007465,"43":0.007465,"44":0,"45":0,"46":0.01493,"47":0,"48":0.007465,"49":0,"50":0,"51":0,"52":0,"53":0.022395,"54":0.007465,"55":0.007465,"56":0.01493,"57":0.01493,"58":0.022395,"60":0.01493,"62":0.01493,"63":0.01493,"64":0.141835,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.05972},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.007465,"11":0.022395,"12":0.126905,"13":1.67216,_:"0","3.1":0,"3.2":0,"5.1":0.007465,"6.1":0,"7.1":0,"9.1":0.01493,"10.1":0.02986,"11.1":0.097045,"12.1":0.38818},G:{"8":0.00079441182354706,"3.2":0.00079441182354706,"4.0-4.1":0.0015888236470941,"4.2-4.3":0,"5.0-5.1":0.0047664709412824,"6.0-6.1":0.0023832354706412,"7.0-7.1":0.0063552945883765,"8.1-8.4":0.011916177353206,"9.0-9.2":0.010327353706112,"9.3":0.098507066119836,"10.0-10.2":0.030982061118335,"10.3":0.10883441982595,"11.0-11.2":0.087385300590177,"11.3-11.4":0.1485550110033,"12.0-12.1":0.20019177953386,"12.2-12.4":1.1963842062619,"13.0-13.1":0.55291062918876,"13.2":0.23276266429929,"13.3":5.2462956827048},I:{"3":0.00031026350461133,"4":0.0031026350461133,_:"76","2.1":0,"2.2":0.00093079051383399,"2.3":0.00031026350461133,"4.1":0.0052744795783926,"4.2-4.3":0.13713646903821,"4.4":0,"4.4.3-4.4.4":0.088425098814229},B:{"12":0,"13":0.007465,"14":0.01493,"15":0.01493,"16":0.007465,"17":0.04479,"18":0.32846,_:"79"},A:{"6":0.007465,"7":0.007465,"8":0.037325,"9":0.01493,"10":0.01493,"11":0.873405,"5.5":0},P:{"4":0.11154,"5.0-5.4":0,"6.2-6.4":0.01014,"7.2-7.4":0.02028,"8.2":0.01014,"9.2":0.09126,"10.1":0.74022},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01077375,"11":0.03232125},J:{"7":0,"10":0.01014},R:{_:"0"},M:{"0":0.098865},O:{"0":0.34476},Q:{"1.2":0.012675},S:{"2.5":0},H:{"0":0.54239417525773},L:{"0":32.740245}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/UG.js b/assets/node_modules/caniuse-lite/data/regions/UG.js
deleted file mode 100644
index c9089e0..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/UG.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.003377,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.003377,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.003377,"34":0,"35":0,"36":0.003377,"37":0,"38":0.003377,"39":0,"40":0.006754,"41":0,"42":0,"43":0.003377,"44":0,"45":0,"46":0,"47":0.010131,"48":0,"49":0.043901,"50":0.003377,"51":0,"52":0,"53":0,"54":0,"55":0.003377,"56":0,"57":0.006754,"58":0.013508,"59":0.003377,"60":0.006754,"61":0.003377,"62":0.010131,"63":0.043901,"64":0.010131,"65":0.016885,"66":0.003377,"67":0.006754,"68":0.003377,"69":0.030393,"70":0.020262,"71":0.03377,"72":0.010131,"73":0.013508,"74":0.050655,"75":0.03377,"76":0.064163,"77":0.050655,"78":0.182358,"79":4.970944,"80":0.030393,"81":0.006754,"82":0},C:{"2":0,"3":0,"4":0.003377,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.006754,"22":0,"23":0,"24":0,"25":0.003377,"26":0.003377,"27":0,"28":0,"29":0,"30":0.003377,"31":0.003377,"32":0,"33":0,"34":0.003377,"35":0.003377,"36":0.003377,"37":0.003377,"38":0.003377,"39":0,"40":0.003377,"41":0.003377,"42":0.006754,"43":0.013508,"44":0.006754,"45":0.006754,"46":0.003377,"47":0.020262,"48":0.03377,"49":0.006754,"50":0.006754,"51":0,"52":0.070917,"53":0.003377,"54":0.003377,"55":0.006754,"56":0.013508,"57":0.006754,"58":0.003377,"59":0.003377,"60":0.013508,"61":0.010131,"62":0.003377,"63":0.010131,"64":0.010131,"65":0.030393,"66":0.010131,"67":0.010131,"68":0.104687,"69":0.030393,"70":0.054032,"71":0.570713,"72":1.431848,"73":0.189112,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0.006754,"15":0,"16":0.006754,"17":0,"18":0.003377,"19":0.006754,"20":0.016885,"21":0,"22":0,"23":0.023639,"24":0,"25":0,"26":0.006754,"27":0,"28":0.006754,"29":0.003377,"30":0.006754,"31":0,"32":0,"33":0.003377,"34":0,"35":0,"36":0,"37":0,"38":0.081048,"39":0,"40":0,"41":0.006754,"42":0.010131,"43":0,"44":0.003377,"45":0.047278,"46":0.276914,"47":0,"48":0,"49":0,"50":0,"51":0.006754,"52":0,"53":0.016885,"54":0.010131,"55":0.003377,"56":0.016885,"57":0,"58":0,"60":0.003377,"62":0,"63":0.003377,"64":0.013508,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.070917},E:{"4":0,"5":0,"6":0,"7":0,"8":0.006754,"9":0.003377,"10":0.010131,"11":0.020262,"12":0.06754,"13":0.276914,_:"0","3.1":0,"3.2":0,"5.1":0.094556,"6.1":0,"7.1":0,"9.1":0.016885,"10.1":0.043901,"11.1":0.027016,"12.1":0.091179},G:{"8":0.00034972501750525,"3.2":0.00034972501750525,"4.0-4.1":0.0006994500350105,"4.2-4.3":0,"5.0-5.1":0.0020983501050315,"6.0-6.1":0.0010491750525158,"7.0-7.1":0.002797800140042,"8.1-8.4":0.0052458752625788,"9.0-9.2":0.0045464252275683,"9.3":0.043365902170651,"10.0-10.2":0.013639275682705,"10.3":0.047912327398219,"11.0-11.2":0.038469751925578,"11.3-11.4":0.065398578273482,"12.0-12.1":0.088130704411323,"12.2-12.4":0.52668587636291,"13.0-13.1":0.24340861218366,"13.2":0.10246943012904,"13.3":2.3095840156047},I:{"3":0.0006763860342556,"4":0.006763860342556,_:"76","2.1":0,"2.2":0.0020291581027668,"2.3":0.0006763860342556,"4.1":0.011498562582345,"4.2-4.3":0.29896262714097,"4.4":0,"4.4.3-4.4.4":0.19277001976285},B:{"12":0.030393,"13":0.023639,"14":0.013508,"15":0.027016,"16":0.023639,"17":0.060786,"18":0.300553,_:"79"},A:{"6":0,"7":0,"8":0.03292575,"9":0,"10":0.01097525,"11":0.175604,"5.5":0},P:{"4":0.29817394405594,"5.0-5.4":0.02056372027972,"6.2-6.4":0.082254881118881,"7.2-7.4":0.11310046153846,"8.2":0.02056372027972,"9.2":0.2056372027972,"10.1":0.70944834965035},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.03496944,"11":0.25644256},J:{"7":0,"10":0.052984},R:{_:"0"},M:{"0":0.19869},O:{"0":3.318123},Q:{"1.2":0.019869},S:{"2.5":0.357642},H:{"0":26.397662079038},L:{"0":40.175373}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/US.js b/assets/node_modules/caniuse-lite/data/regions/US.js
deleted file mode 100644
index adc2b1e..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/US.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.004725,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.004725,"30":0,"31":0,"32":0,"33":0.004725,"34":0,"35":0.004725,"36":0,"37":0.004725,"38":0.004725,"39":0,"40":0.0189,"41":0.004725,"42":0,"43":0.004725,"44":0,"45":0,"46":0.004725,"47":0.004725,"48":0.023625,"49":0.203175,"50":0.004725,"51":0.004725,"52":0,"53":0.00945,"54":0.004725,"55":0.004725,"56":0.02835,"57":0.1134,"58":0.00945,"59":0.014175,"60":0.02835,"61":0.014175,"62":0.00945,"63":0.04725,"64":0.00945,"65":0.0378,"66":0.0189,"67":0.033075,"68":0.051975,"69":0.033075,"70":0.051975,"71":0.06615,"72":0.0945,"73":0.061425,"74":0.0945,"75":0.212625,"76":0.189,"77":0.19845,"78":0.817425,"79":10.1682,"80":0.02835,"81":0.02835,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.004725,"11":0.004725,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0.004725,"18":0,"19":0,"20":0,"21":0.0567,"22":0.004725,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.004725,"31":0.004725,"32":0.004725,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.004725,"39":0,"40":0,"41":0,"42":0,"43":0.004725,"44":0.00945,"45":0.004725,"46":0,"47":0.00945,"48":0.014175,"49":0,"50":0.00945,"51":0.004725,"52":0.0378,"53":0.004725,"54":0.014175,"55":0.004725,"56":0.004725,"57":0.00945,"58":0.02835,"59":0.004725,"60":0.023625,"61":0.004725,"62":0.004725,"63":0.00945,"64":0.00945,"65":0.014175,"66":0.014175,"67":0.014175,"68":0.193725,"69":0.0189,"70":0.033075,"71":0.4536,"72":0.97335,"73":0.004725,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.00945,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.004725,"57":0,"58":0.004725,"60":0,"62":0.004725,"63":0,"64":0.00945,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.004725},E:{"4":0,"5":0.004725,"6":0,"7":0,"8":0.023625,"9":0.00945,"10":0.004725,"11":0.0189,"12":0.061425,"13":2.310525,_:"0","3.1":0,"3.2":0,"5.1":0.051975,"6.1":0,"7.1":0,"9.1":0.051975,"10.1":0.06615,"11.1":0.127575,"12.1":0.250425},G:{"8":0.0043543012903871,"3.2":0.0043543012903871,"4.0-4.1":0.0087086025807742,"4.2-4.3":0,"5.0-5.1":0.026125807742323,"6.0-6.1":0.013062903871161,"7.0-7.1":0.034834410323097,"8.1-8.4":0.065314519355807,"9.0-9.2":0.056605916775033,"9.3":0.539933360008,"10.0-10.2":0.1698177503251,"10.3":0.59653927678303,"11.0-11.2":0.47897314194258,"11.3-11.4":0.81425434130239,"12.0-12.1":1.0972839251776,"12.2-12.4":6.557577743323,"13.0-13.1":3.0305936981094,"13.2":1.2758102780834,"13.3":28.755805721717},I:{"3":0.00079077733860343,"4":0.0079077733860343,_:"76","2.1":0,"2.2":0.0023723320158103,"2.3":0.00079077733860343,"4.1":0.013443214756258,"4.2-4.3":0.34952358366271,"4.4":0,"4.4.3-4.4.4":0.22537154150198},B:{"12":0.004725,"13":0.004725,"14":0.014175,"15":0.014175,"16":0.02835,"17":0.08505,"18":1.715175,_:"79"},A:{"6":0.0047965909090909,"7":0.0047965909090909,"8":0.067152272727273,"9":0.0527625,"10":0.019186363636364,"11":1.1176056818182,"5.5":0},P:{"4":0.063796470588235,"5.0-5.4":0.021265490196078,"6.2-6.4":0,"7.2-7.4":0.031898235294118,"8.2":0.021265490196078,"9.2":0.17012392156863,"10.1":2.0414870588235},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.0211},J:{"7":0,"10":0.005275},R:{_:"0"},M:{"0":0.34815},O:{"0":0.211},Q:{"1.2":0.0211},S:{"2.5":0.005275},H:{"0":0.12485073024055},L:{"0":29.42385}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/UY.js b/assets/node_modules/caniuse-lite/data/regions/UY.js
deleted file mode 100644
index bd7a575..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/UY.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0.005254,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.010508,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0.005254,"43":0.010508,"44":0,"45":0,"46":0.005254,"47":0,"48":0.021016,"49":0.357272,"50":0,"51":0.010508,"52":0.010508,"53":0.005254,"54":0,"55":0.005254,"56":0.005254,"57":0.005254,"58":0.010508,"59":0.005254,"60":0.005254,"61":0.005254,"62":0.031524,"63":0.021016,"64":0.005254,"65":0.021016,"66":0.005254,"67":0.010508,"68":0.015762,"69":0.036778,"70":0.057794,"71":0.136604,"72":0.042032,"73":0.05254,"74":0.094572,"75":0.110334,"76":0.5254,"77":0.76183,"78":0.42032,"79":19.119306,"80":0.042032,"81":0.015762,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005254,"22":0,"23":0,"24":0,"25":0.010508,"26":0,"27":0,"28":0.005254,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.005254,"44":0,"45":0.02627,"46":0,"47":0.005254,"48":0.010508,"49":0.005254,"50":0.010508,"51":0.005254,"52":0.110334,"53":0.005254,"54":0.010508,"55":0.021016,"56":0.005254,"57":0.015762,"58":0,"59":0,"60":0.010508,"61":0.005254,"62":0.005254,"63":0.015762,"64":0,"65":0.010508,"66":0.021016,"67":0.005254,"68":0.147112,"69":0.010508,"70":0.02627,"71":0.47286,"72":1.18215,"73":0.010508,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.005254,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.089318,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.005254,"11":0.021016,"12":0.068302,"13":0.640988,_:"0","3.1":0,"3.2":0,"5.1":0.21016,"6.1":0,"7.1":0,"9.1":0.005254,"10.1":0.015762,"11.1":0.073556,"12.1":0.189144},G:{"8":0.0010110793237971,"3.2":0.0010110793237971,"4.0-4.1":0.0020221586475943,"4.2-4.3":0,"5.0-5.1":0.0060664759427828,"6.0-6.1":0.0030332379713914,"7.0-7.1":0.0080886345903771,"8.1-8.4":0.015166189856957,"9.0-9.2":0.013144031209363,"9.3":0.12537383615085,"10.0-10.2":0.039432093628088,"10.3":0.13851786736021,"11.0-11.2":0.11121872561769,"11.3-11.4":0.18907183355007,"12.0-12.1":0.25479198959688,"12.2-12.4":1.5226854616385,"13.0-13.1":0.70371120936281,"13.2":0.29624624187256,"13.3":6.6771678543563},I:{"3":0.00020097496706192,"4":0.0020097496706192,_:"76","2.1":0,"2.2":0.00060292490118577,"2.3":0.00020097496706192,"4.1":0.0034165744400527,"4.2-4.3":0.08883093544137,"4.4":0,"4.4.3-4.4.4":0.057277865612648},B:{"12":0.005254,"13":0.005254,"14":0.010508,"15":0.015762,"16":0.015762,"17":0.031524,"18":0.409812,_:"79"},A:{"6":0,"7":0,"8":0.032001636363636,"9":0.0053336060606061,"10":0.010667212121212,"11":0.30401554545455,"5.5":0},P:{"4":0.14198991780822,"5.0-5.4":0,"6.2-6.4":0.030426410958904,"7.2-7.4":0.07099495890411,"8.2":0.030426410958904,"9.2":0.18255846575342,"10.1":1.7545896986301},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.123396},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.147126},O:{"0":0.014238},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.12580977319588},L:{"0":58.649658}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/UZ.js b/assets/node_modules/caniuse-lite/data/regions/UZ.js
deleted file mode 100644
index 121f94a..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/UZ.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0.005494,"28":0,"29":0,"30":0,"31":0.005494,"32":0,"33":0,"34":0,"35":0.005494,"36":0.005494,"37":0,"38":0.005494,"39":0.005494,"40":0.010988,"41":0.159326,"42":0,"43":0.005494,"44":0,"45":0,"46":0.005494,"47":0.005494,"48":0.115374,"49":0.296676,"50":0,"51":0.005494,"52":0,"53":0.010988,"54":0,"55":0.021976,"56":0.021976,"57":0.005494,"58":0.010988,"59":0.005494,"60":0.010988,"61":0.005494,"62":0.005494,"63":0.203278,"64":0.005494,"65":0.104386,"66":0.043952,"67":0.010988,"68":0.02747,"69":0.049446,"70":0.05494,"71":0.060434,"72":0.05494,"73":0.021976,"74":0.30217,"75":0.060434,"76":0.153832,"77":0.131856,"78":0.269206,"79":20.146498,"80":0.049446,"81":0.049446,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.005494,"31":0.087904,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.280194,"44":0,"45":0,"46":0.005494,"47":0.005494,"48":0,"49":0,"50":0.005494,"51":0,"52":0.060434,"53":0,"54":0,"55":0.005494,"56":0.005494,"57":0.005494,"58":0,"59":0,"60":0.005494,"61":0,"62":0,"63":0.016482,"64":0,"65":0,"66":0.032964,"67":0.005494,"68":0.093398,"69":0.016482,"70":0.016482,"71":0.318652,"72":0.802124,"73":0.032964,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005494,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.005494,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.016482,"37":0.005494,"38":0,"39":0,"40":0.005494,"41":0,"42":0.021976,"43":0.005494,"44":0.005494,"45":0.016482,"46":0.005494,"47":0.005494,"48":0.005494,"49":0.016482,"50":0.010988,"51":0.021976,"52":0.010988,"53":0.131856,"54":0.038458,"55":0.043952,"56":0.032964,"57":0.181302,"58":0.08241,"60":0.131856,"62":0.269206,"63":0.05494,"64":0.049446,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.104386},E:{"4":0,"5":0,"6":0,"7":0.032964,"8":0,"9":0,"10":0,"11":0,"12":0.010988,"13":0.313158,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0.005494,"10.1":0.005494,"11.1":0.02747,"12.1":0.093398},G:{"8":0.000586866659998,"3.2":0.000586866659998,"4.0-4.1":0.001173733319996,"4.2-4.3":0,"5.0-5.1":0.003521199959988,"6.0-6.1":0.001760599979994,"7.0-7.1":0.004694933279984,"8.1-8.4":0.00880299989997,"9.0-9.2":0.007629266579974,"9.3":0.072771465839752,"10.0-10.2":0.022887799739922,"10.3":0.080400732419726,"11.0-11.2":0.06455533259978,"11.3-11.4":0.10974406541963,"12.0-12.1":0.1478903983195,"12.2-12.4":0.88382118995699,"13.0-13.1":0.40845919535861,"13.2":0.17195193137941,"13.3":3.8756674226268},I:{"3":0.0012686297760211,"4":0.012686297760211,_:"76","2.1":0,"2.2":0.0038058893280632,"2.3":0.0012686297760211,"4.1":0.021566706192358,"4.2-4.3":0.56073436100132,"4.4":0,"4.4.3-4.4.4":0.36155948616601},B:{"12":0.005494,"13":0.005494,"14":0.010988,"15":0.010988,"16":0.021976,"17":0.016482,"18":0.24723,_:"79"},A:{"6":0,"7":0,"8":0.017749846153846,"9":0.011833230769231,"10":0.0059166153846154,"11":0.11833230769231,"5.5":0},P:{"4":2.0095292247557,"5.0-5.4":0.20196273615635,"6.2-6.4":0.39382733550489,"7.2-7.4":0.60588820846906,"8.2":0.12117764169381,"9.2":0.89873417589577,"10.1":1.9489404039088},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.012016,"11":0.024032},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.031542},O:{"0":5.303562},Q:{"1.2":0.076602},S:{"2.5":0},H:{"0":0.38820506185567},L:{"0":43.69534}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/VA.js b/assets/node_modules/caniuse-lite/data/regions/VA.js
deleted file mode 100644
index c9b5d0b..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/VA.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.19418,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0.708757,"67":0.213598,"68":0,"69":0,"70":0,"71":0,"72":0.019418,"73":0.310688,"74":0,"75":0.038836,"76":0.009709,"77":0.165053,"78":0.09709,"79":59.409371,"80":0.009709,"81":0.262143,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.09709,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.009709,"39":0,"40":0,"41":0,"42":0.009709,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0.009709,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0.038836,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0.009709,"66":0,"67":0.058254,"68":0,"69":0.019418,"70":0.514577,"71":1.74762,"72":7.08757,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.067963,"12":0.048545,"13":3.747674,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0.271852,"11.1":0.262143,"12.1":0.310688},G:{"8":0.00046349414824447,"3.2":0.00046349414824447,"4.0-4.1":0.00092698829648895,"4.2-4.3":0,"5.0-5.1":0.0027809648894668,"6.0-6.1":0.0013904824447334,"7.0-7.1":0.0037079531859558,"8.1-8.4":0.0069524122236671,"9.0-9.2":0.0060254239271782,"9.3":0.057473274382315,"10.0-10.2":0.018076271781534,"10.3":0.063498698309493,"11.0-11.2":0.050984356306892,"11.3-11.4":0.086673405721717,"12.0-12.1":0.11680052535761,"12.2-12.4":0.69802218725618,"13.0-13.1":0.32259192717815,"13.2":0.13580378543563,"13.3":3.0609153550065},I:{"3":0.00013903689064559,"4":0.0013903689064559,_:"76","2.1":0,"2.2":0.00041711067193676,"2.3":0.00013903689064559,"4.1":0.002363627140975,"4.2-4.3":0.061454305665349,"4.4":0,"4.4.3-4.4.4":0.039625513833992},B:{"12":0,"13":0.009709,"14":0,"15":0.019418,"16":0.019418,"17":0.106799,"18":4.242833,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":10.00027,"5.5":0},P:{"4":0,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0,"8.2":0,"9.2":0,"10.1":0.222906},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0},O:{"0":0.004365},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.0079895},L:{"0":3.206906}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/VC.js b/assets/node_modules/caniuse-lite/data/regions/VC.js
deleted file mode 100644
index 252726c..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/VC.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.00486,"29":0,"30":0,"31":0,"32":0,"33":0.00486,"34":0,"35":0,"36":0.01944,"37":0.00486,"38":0.00486,"39":0.00486,"40":0.00486,"41":0.00486,"42":0.00486,"43":0.00486,"44":0.00972,"45":0.00486,"46":0.00972,"47":0.00972,"48":0.00486,"49":0.43254,"50":0.0243,"51":0.00972,"52":0.00486,"53":0.00486,"54":0.00486,"55":0.01458,"56":0.00972,"57":0.00486,"58":0.0243,"59":0.00972,"60":0.00972,"61":0.01458,"62":0.0243,"63":0.0243,"64":0.00486,"65":0.00972,"66":0,"67":0.01944,"68":0.00486,"69":0.06804,"70":0.00972,"71":0.0243,"72":0.00486,"73":0.00972,"74":0.0243,"75":0.0972,"76":0.07776,"77":0.27702,"78":0.55404,"79":12.65544,"80":0.02916,"81":0.00972,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.00486,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0.00486,"21":0.00486,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.00486,"32":0,"33":0,"34":0,"35":0.00486,"36":0,"37":0,"38":0.00486,"39":0,"40":0,"41":0.00486,"42":0.00486,"43":0.00486,"44":0.00486,"45":0.00972,"46":0,"47":0.00972,"48":0.00486,"49":0.00486,"50":0.00486,"51":0.02916,"52":0.01944,"53":0.01458,"54":0.00486,"55":0.00972,"56":0.00972,"57":0.01458,"58":0.00486,"59":0.00486,"60":0.00486,"61":0.01458,"62":0,"63":0,"64":0,"65":0,"66":0.00486,"67":0.00486,"68":0.04374,"69":0.00972,"70":0.00972,"71":0.34992,"72":0.88938,"73":0.00486,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0.00486,"15":0,"16":0,"17":0,"18":0,"19":0.00486,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.00486,"30":0,"31":0.00486,"32":0,"33":0,"34":0.00486,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.00486,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.06318,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.00972},E:{"4":0,"5":0,"6":0,"7":0,"8":0.00486,"9":0,"10":0.00486,"11":0.01458,"12":0.17982,"13":1.51632,_:"0","3.1":0,"3.2":0,"5.1":0.01458,"6.1":0,"7.1":0,"9.1":0.04374,"10.1":0.0243,"11.1":0.05346,"12.1":0.08262},G:{"8":0.0010383815144543,"3.2":0.0010383815144543,"4.0-4.1":0.0020767630289087,"4.2-4.3":0,"5.0-5.1":0.006230289086726,"6.0-6.1":0.003115144543363,"7.0-7.1":0.0083070521156347,"8.1-8.4":0.015575722716815,"9.0-9.2":0.013498959687906,"9.3":0.12875930779234,"10.0-10.2":0.040496879063719,"10.3":0.14225826748024,"11.0-11.2":0.11422196658998,"11.3-11.4":0.19417734320296,"12.0-12.1":0.26167214164249,"12.2-12.4":1.5638025607682,"13.0-13.1":0.72271353406022,"13.2":0.30424578373512,"13.3":6.8574715214564},I:{"3":0.0023233465085639,"4":0.023233465085639,_:"76","2.1":0,"2.2":0.0069700395256917,"2.3":0.0023233465085639,"4.1":0.039496890645586,"4.2-4.3":1.0269191567852,"4.4":0,"4.4.3-4.4.4":0.66215375494071},B:{"12":0.00486,"13":0.01458,"14":0.01458,"15":0.0243,"16":0.0243,"17":0.18468,"18":1.03032,_:"79"},A:{"6":0,"7":0,"8":0.01944,"9":0.02916,"10":0.03402,"11":0.20898,"5.5":0},P:{"4":0.1975615037594,"5.0-5.4":0.032926917293233,"6.2-6.4":0,"7.2-7.4":0.23048842105263,"8.2":0.010975639097744,"9.2":0.12073203007519,"10.1":2.2719572932331},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.024104827586207,"11":0.32541517241379},J:{"7":0,"10":0.01542},R:{_:"0"},M:{"0":0.08738},O:{"0":0.3855},Q:{"1.2":0.00514},S:{"2.5":0},H:{"0":0.16545147766323},L:{"0":61.20526}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/VE.js b/assets/node_modules/caniuse-lite/data/regions/VE.js
deleted file mode 100644
index 2e2217a..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/VE.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.007113,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0.007113,"26":0,"27":0.007113,"28":0,"29":0.014226,"30":0,"31":0.007113,"32":0,"33":0.021339,"34":0,"35":0,"36":0.007113,"37":0.021339,"38":0,"39":0.007113,"40":0.007113,"41":0,"42":0.014226,"43":0.007113,"44":0.007113,"45":0.007113,"46":0.014226,"47":0.007113,"48":0.007113,"49":1.237662,"50":0.014226,"51":0.014226,"52":0.007113,"53":0.007113,"54":0.007113,"55":0.014226,"56":0.014226,"57":0.028452,"58":0.042678,"59":0.007113,"60":0.014226,"61":0.028452,"62":0.021339,"63":0.120921,"64":0.021339,"65":0.07113,"66":0.028452,"67":0.113808,"68":0.049791,"69":0.149373,"70":0.248955,"71":0.334311,"72":0.248955,"73":0.256068,"74":0.263181,"75":0.312972,"76":0.334311,"77":0.547701,"78":0.732639,"79":31.098036,"80":0.042678,"81":0.021339,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0.056904,"28":0.007113,"29":0,"30":0.007113,"31":0.007113,"32":0,"33":0,"34":0.007113,"35":0,"36":0,"37":0,"38":0.021339,"39":0.007113,"40":0.014226,"41":0.007113,"42":0.007113,"43":0.028452,"44":0.007113,"45":0.021339,"46":0,"47":0.028452,"48":0.092469,"49":0.007113,"50":0.014226,"51":0.007113,"52":0.810882,"53":0.007113,"54":0.007113,"55":0.028452,"56":0.028452,"57":0.021339,"58":0.007113,"59":0.014226,"60":0.064017,"61":0.021339,"62":0.021339,"63":0.042678,"64":0.064017,"65":0.042678,"66":0.056904,"67":0.042678,"68":0.256068,"69":0.056904,"70":0.099582,"71":1.017159,"72":2.823861,"73":0.042678,"74":0,"3.5":0,"3.6":0.007113},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.014226,"30":0,"31":0,"32":0,"33":0.007113,"34":0,"35":0,"36":0.007113,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.014226,"47":0,"48":0,"49":0.007113,"50":0,"51":0,"52":0,"53":0.007113,"54":0,"55":0,"56":0.014226,"57":0.014226,"58":0.007113,"60":0.007113,"62":0.007113,"63":0.014226,"64":0.14226,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.007113},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.007113,"10":0.014226,"11":0.028452,"12":0.056904,"13":0.433893,_:"0","3.1":0,"3.2":0,"5.1":0.625944,"6.1":0,"7.1":0,"9.1":0.007113,"10.1":0.035565,"11.1":0.113808,"12.1":0.248955},G:{"8":0.00038867170151045,"3.2":0.00038867170151045,"4.0-4.1":0.00077734340302091,"4.2-4.3":0,"5.0-5.1":0.0023320302090627,"6.0-6.1":0.0011660151045314,"7.0-7.1":0.0031093736120836,"8.1-8.4":0.0058300755226568,"9.0-9.2":0.0050527321196359,"9.3":0.048195290987296,"10.0-10.2":0.015158196358908,"10.3":0.053248023106932,"11.0-11.2":0.04275388716615,"11.3-11.4":0.072681608182455,"12.0-12.1":0.097945268780634,"12.2-12.4":0.58533958247474,"13.0-13.1":0.27051550425128,"13.2":0.11388080854256,"13.3":2.566787916775},I:{"3":0.0013577114624506,"4":0.013577114624506,_:"76","2.1":0,"2.2":0.0040731343873518,"2.3":0.0013577114624506,"4.1":0.02308109486166,"4.2-4.3":0.60010846640316,"4.4":0,"4.4.3-4.4.4":0.38694776679842},B:{"12":0.007113,"13":0.007113,"14":0.014226,"15":0.014226,"16":0.007113,"17":0.064017,"18":0.241842,_:"79"},A:{"6":0,"7":0,"8":0.1367004137931,"9":0.021584275862069,"10":0.0071947586206897,"11":0.46046455172414,"5.5":0},P:{"4":0.072955761006289,"5.0-5.4":0.010422251572327,"6.2-6.4":0.010422251572327,"7.2-7.4":0.093800264150943,"8.2":0.020844503144654,"9.2":0.12506701886792,"10.1":1.3132036981132},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.025983,"11":0.181881},J:{"7":0,"10":0.08661},R:{_:"0"},M:{"0":0.164559},O:{"0":0.049079},Q:{"1.2":0.002887},S:{"2.5":0.002887},H:{"0":0.75983657388316},L:{"0":42.968461}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/VG.js b/assets/node_modules/caniuse-lite/data/regions/VG.js
deleted file mode 100644
index d2a37a9..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/VG.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"48":0.639312,"49":0.02804,"50":0.207496,"53":0.005608,"58":0.022432,"60":0.011216,"67":0.016824,"68":0.92532,"69":0.005608,"70":3.95364,"71":0.790728,"72":0.297224,"73":2.529208,"75":0.011216,"76":0.061688,"77":0.078512,"78":1.519768,"79":20.463592,"80":0.033648,_:"4 5 6 7 8 9 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 51 52 54 55 56 57 59 61 62 63 64 65 66 74 81 82"},C:{"3":0.02804,"63":0.016824,"64":0.067296,"65":0.033648,"66":0.016824,"70":0.016824,"71":1.530984,"72":1.480512,_:"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 67 68 69 73 74 3.5 3.6"},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 10.5 10.6 11.1 11.5 11.6 12.1","9.5-9.6":0.005608,"10.0-10.1":0},E:{"4":0.100944,"8":0.067296,"12":0.033648,"13":6.987568,_:"0 5 6 7 9 10 11 3.1 3.2 6.1 7.1 9.1","5.1":0.185064,"10.1":0.173848,"11.1":0.162632,"12.1":0.471072},G:{"8":0.0013298573572072,"3.2":0.0013298573572072,"4.0-4.1":0.0026597147144143,"4.2-4.3":0,"5.0-5.1":0.007979144143243,"6.0-6.1":0.0039895720716215,"7.0-7.1":0.010638858857657,"8.1-8.4":0.019947860358107,"9.0-9.2":0.017288145643693,"9.3":0.16490231229369,"10.0-10.2":0.051864436931079,"10.3":0.18219045793738,"11.0-11.2":0.14628430929279,"11.3-11.4":0.24868332579774,"12.0-12.1":0.3351240540162,"12.2-12.4":2.002765179954,"13.0-13.1":0.92558072061618,"13.2":0.3896482056617,"13.3":8.7823779869961},I:{"3":0.000057865612648221,"4":0.00057865612648221,_:"76","2.1":0,"2.2":0.00017359683794466,"2.3":0.000057865612648221,"4.1":0.00098371541501976,"4.2-4.3":0.025576600790514,"4.4":0,"4.4.3-4.4.4":0.016491699604743},B:{"12":0.100944,"13":0.016824,"14":0.370128,"15":0.08412,"16":0.095336,"17":0.319656,"18":3.432096,_:"79"},A:{"6":0.10537937749401,"7":0.17976482043097,"8":0.71286049481245,"9":0.45251144453312,"10":0.42151750997606,"11":5.8950463527534,_:"5.5"},P:{"4":0.075081044510386,"5.0-5.4":0.11798449851632,"6.2-6.4":0.032177590504451,"7.2-7.4":0.042903454005935,"8.2":0.064355181008902,"9.2":0.18233967952522,"10.1":2.9388865994065},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.032945},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.052704},O:{"0":0.166896},Q:{_:"1.2"},S:{_:"2.5"},H:{"0":0.062370927835052},L:{"0":26.97828}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/VI.js b/assets/node_modules/caniuse-lite/data/regions/VI.js
deleted file mode 100644
index becf0eb..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/VI.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"39":0.008968,"49":0.20178,"53":0.008968,"58":0.02242,"63":0.031388,"65":0.017936,"67":0.013452,"68":0.004484,"69":0.058292,"70":0.013452,"71":0.013452,"72":0.017936,"73":0.017936,"74":0.058292,"75":0.125552,"76":0.062776,"77":0.125552,"78":0.596372,"79":19.222908,"80":0.04484,"81":0.02242,_:"4 5 6 7 8 9 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 59 60 61 62 64 66 82"},C:{"21":0.13452,"22":0.008968,"48":0.004484,"52":0.017936,"61":0.008968,"68":0.008968,"69":0.026904,"70":0.026904,"71":1.61424,"72":2.98186,"73":0.210748,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 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 62 63 64 65 66 67 74 3.5 3.6"},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 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},E:{"4":0,"8":0.013452,"9":0.013452,"10":0.013452,"11":0.017936,"12":0.161424,"13":6.954684,_:"0 5 6 7 3.1 3.2 5.1 6.1 7.1","9.1":0.02242,"10.1":0.1121,"11.1":0.125552,"12.1":0.569468},G:{"8":0.0025414320296089,"3.2":0.0025414320296089,"4.0-4.1":0.0050828640592178,"4.2-4.3":0,"5.0-5.1":0.015248592177653,"6.0-6.1":0.0076242960888266,"7.0-7.1":0.020331456236871,"8.1-8.4":0.038121480444133,"9.0-9.2":0.033038616384915,"9.3":0.3151375716715,"10.0-10.2":0.099115849154746,"10.3":0.34817618805642,"11.0-11.2":0.27955752325698,"11.3-11.4":0.47524778953686,"12.0-12.1":0.64044087146144,"12.2-12.4":3.827396636591,"13.0-13.1":1.7688366926078,"13.2":0.7446395846754,"13.3":16.783617123537},I:{"3":0.00010901185770751,"4":0.0010901185770751,_:"76","2.1":0,"2.2":0.00032703557312253,"2.3":0.00010901185770751,"4.1":0.0018532015810277,"4.2-4.3":0.048183241106719,"4.4":0,"4.4.3-4.4.4":0.03106837944664},B:{"12":0.008968,"13":0.02242,"14":0.188328,"15":0.008968,"16":0.06726,"17":0.26904,"18":5.690196,_:"79"},A:{"8":0.008968,"10":0.004484,"11":3.304708,_:"6 7 9 5.5"},P:{"4":0.021316670967742,"5.0-5.4":0,"6.2-6.4":0.02028540397351,"7.2-7.4":0.04057080794702,"8.2":0.010658335483871,"9.2":0.053291677419355,"10.1":6.0859095612903},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.027405,"11":0.137025},J:{"7":0,"10":0.005516},R:{_:"0"},M:{"0":0.341992},O:{"0":0.573664},Q:{_:"1.2"},S:{"2.5":0.011032},H:{"0":0.15144358075601},L:{"0":22.268592}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/VN.js b/assets/node_modules/caniuse-lite/data/regions/VN.js
deleted file mode 100644
index 8a160b3..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/VN.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.007651,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.007651,"36":0.030604,"37":0.007651,"38":0.015302,"39":0.007651,"40":0.007651,"41":0.022953,"42":0.007651,"43":0.015302,"44":0.015302,"45":0.015302,"46":0.030604,"47":0.015302,"48":0.022953,"49":1.032885,"50":0.022953,"51":0.030604,"52":0.015302,"53":0.022953,"54":0.038255,"55":0.022953,"56":0.022953,"57":0.084161,"58":0.107114,"59":0.022953,"60":0.022953,"61":0.061208,"62":0.022953,"63":0.061208,"64":0.030604,"65":0.038255,"66":0.030604,"67":0.061208,"68":0.030604,"69":0.07651,"70":0.298389,"71":0.512617,"72":0.252483,"73":0.275436,"74":0.160671,"75":0.175973,"76":0.198926,"77":0.244832,"78":0.428456,"79":35.707217,"80":0.084161,"81":0.038255,"82":0},C:{"2":0,"3":0.007651,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0.007651,"19":0.007651,"20":0.007651,"21":0.007651,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.007651,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0.007651,"39":0.007651,"40":0.007651,"41":0.007651,"42":0.007651,"43":0.007651,"44":0.007651,"45":0.015302,"46":0.007651,"47":0.015302,"48":0.007651,"49":0.007651,"50":0.015302,"51":0.022953,"52":0.068859,"53":0.022953,"54":0.015302,"55":0.030604,"56":0.022953,"57":0.015302,"58":0.015302,"59":0.007651,"60":0.015302,"61":0.007651,"62":0.007651,"63":0.030604,"64":0.022953,"65":0.045906,"66":0.030604,"67":0.030604,"68":0.114765,"69":0.015302,"70":0.030604,"71":0.512617,"72":0.7651,"73":0.030604,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0.007651,"15":0.007651,"16":0,"17":0,"18":0,"19":0.007651,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.007651,"33":0,"34":0.007651,"35":0,"36":0.007651,"37":0.045906,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.053557,"44":0,"45":0.007651,"46":0.007651,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.015302,"57":0.022953,"58":0.015302,"60":0,"62":0.007651,"63":0,"64":0.122416,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.015302},E:{"4":0,"5":0,"6":0,"7":0,"8":0.015302,"9":0.007651,"10":0.015302,"11":0.022953,"12":0.145369,"13":1.262415,_:"0","3.1":0,"3.2":0,"5.1":0.007651,"6.1":0,"7.1":0,"9.1":0.007651,"10.1":0.084161,"11.1":0.099463,"12.1":0.420805},G:{"8":0.0015118578573572,"3.2":0.0015118578573572,"4.0-4.1":0.0030237157147144,"4.2-4.3":0,"5.0-5.1":0.0090711471441432,"6.0-6.1":0.0045355735720716,"7.0-7.1":0.012094862858858,"8.1-8.4":0.022677867860358,"9.0-9.2":0.019654152145644,"9.3":0.18747037431229,"10.0-10.2":0.058962456436931,"10.3":0.20712452645794,"11.0-11.2":0.16630436430929,"11.3-11.4":0.2827174193258,"12.0-12.1":0.38098818005402,"12.2-12.4":2.27685793318,"13.0-13.1":1.0522530687206,"13.2":0.44297435220566,"13.3":9.984309289987},I:{"3":0.00050737944664032,"4":0.0050737944664032,_:"76","2.1":0,"2.2":0.0015221383399209,"2.3":0.00050737944664032,"4.1":0.0086254505928854,"4.2-4.3":0.22426171541502,"4.4":0,"4.4.3-4.4.4":0.14460314229249},B:{"12":0.007651,"13":0.007651,"14":0.022953,"15":0.007651,"16":0.007651,"17":0.061208,"18":0.367248,_:"79"},A:{"6":0,"7":0,"8":0.13471225,"9":0.0792425,"10":0.031697,"11":0.19810625,"5.5":0},P:{"4":0.17242593377483,"5.0-5.4":0,"6.2-6.4":0.02028540397351,"7.2-7.4":0.04057080794702,"8.2":0.030428105960265,"9.2":0.10142701986755,"10.1":1.1055545165563},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.027405,"11":0.137025},J:{"7":0,"10":0.021141},R:{_:"0"},M:{"0":0.056376},O:{"0":0.582552},Q:{"1.2":0.021141},S:{"2.5":0.002349},H:{"0":0.28465682474227},L:{"0":21.612107}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/VU.js b/assets/node_modules/caniuse-lite/data/regions/VU.js
deleted file mode 100644
index 8a803c3..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/VU.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.004115,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0.004115,"28":0,"29":0.004115,"30":0.004115,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0.004115,"40":0.111105,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.028805,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.00823,"57":0.514375,"58":0.00823,"59":0.004115,"60":0.00823,"61":0.004115,"62":0,"63":0.028805,"64":0,"65":0.004115,"66":0.004115,"67":0.01646,"68":0,"69":0.111105,"70":0.00823,"71":0,"72":0.102875,"73":0.01646,"74":0.135795,"75":0.012345,"76":0.03292,"77":0.03292,"78":0.563755,"79":7.583945,"80":0.012345,"81":0.00823,"82":0},C:{"2":0,"3":0.004115,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.02469,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.00823,"33":0,"34":0.01646,"35":0,"36":0,"37":0,"38":0.069955,"39":0,"40":0,"41":0,"42":0,"43":0.02469,"44":0,"45":0,"46":0,"47":0.004115,"48":0.004115,"49":0,"50":0.004115,"51":0.004115,"52":0,"53":0,"54":0,"55":0.004115,"56":0,"57":0.004115,"58":0.004115,"59":0,"60":0,"61":0.037035,"62":0,"63":0.004115,"64":0.004115,"65":0,"66":0.004115,"67":0.00823,"68":0.06584,"69":0.00823,"70":0.02469,"71":0.20575,"72":0.711895,"73":0.012345,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.045265,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0.004115,"9":0,"10":0.004115,"11":0,"12":0.004115,"13":0.99583,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0.01646,"11.1":0.111105,"12.1":0.078185},G:{"8":0.0011433450035011,"3.2":0.0011433450035011,"4.0-4.1":0.0022866900070021,"4.2-4.3":0,"5.0-5.1":0.0068600700210063,"6.0-6.1":0.0034300350105032,"7.0-7.1":0.0091467600280084,"8.1-8.4":0.017150175052516,"9.0-9.2":0.014863485045514,"9.3":0.14177478043413,"10.0-10.2":0.044590455136541,"10.3":0.15663826547964,"11.0-11.2":0.12576795038512,"11.3-11.4":0.2138055156547,"12.0-12.1":0.28812294088226,"12.2-12.4":1.7218775752726,"13.0-13.1":0.79576812243673,"13.2":0.33500008602581,"13.3":7.5506504031209},I:{"3":0.0038859354413702,"4":0.038859354413702,_:"76","2.1":0,"2.2":0.011657806324111,"2.3":0.0038859354413702,"4.1":0.066060902503294,"4.2-4.3":1.7175834650856,"4.4":0,"4.4.3-4.4.4":1.1074916007905},B:{"12":0.01646,"13":0.037035,"14":0.01646,"15":0.00823,"16":0.01646,"17":0.069955,"18":2.045155,_:"79"},A:{"6":0,"7":0,"8":0.0041733687943262,"9":0,"10":0,"11":0.58427163120567,"5.5":0},P:{"4":0.49243135135135,"5.0-5.4":0.061553918918919,"6.2-6.4":0.061553918918919,"7.2-7.4":0.3795825,"8.2":0.12310783783784,"9.2":0.41035945945946,"10.1":1.497812027027},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.01177},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.182435},O:{"0":1.029875},Q:{"1.2":0.147125},S:{"2.5":0},H:{"0":0.31200611683849},L:{"0":64.08862}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/WF.js b/assets/node_modules/caniuse-lite/data/regions/WF.js
deleted file mode 100644
index b594292..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/WF.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.077826,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.050358,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0.128184,"72":0,"73":0,"74":0,"75":0.050358,"76":0.105294,"77":0.128184,"78":0.027468,"79":6.08874,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0.077826,"61":0,"62":0,"63":0,"64":0.027468,"65":0,"66":0,"67":0,"68":0.466956,"69":0.027468,"70":0.416598,"71":0.933912,"72":4.014906,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.027468,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":6.139098,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0,"11.1":0,"12.1":0},G:{"8":0.0011888428528559,"3.2":0.0011888428528559,"4.0-4.1":0.0023776857057117,"4.2-4.3":0,"5.0-5.1":0.0071330571171351,"6.0-6.1":0.0035665285585676,"7.0-7.1":0.0095107428228469,"8.1-8.4":0.017832642792838,"9.0-9.2":0.015454957087126,"9.3":0.14741651375413,"10.0-10.2":0.046364871261378,"10.3":0.16287147084125,"11.0-11.2":0.13077271381414,"11.3-11.4":0.22231361348405,"12.0-12.1":0.29958839891968,"12.2-12.4":1.7903973364009,"13.0-13.1":0.82743462558768,"13.2":0.34833095588677,"13.3":7.8511182002601},I:{"3":0.00059083003952569,"4":0.0059083003952569,_:"76","2.1":0,"2.2":0.0017724901185771,"2.3":0.00059083003952569,"4.1":0.010044110671937,"4.2-4.3":0.26114687747036,"4.4":0,"4.4.3-4.4.4":0.16838656126482},B:{"12":0.050358,"13":0,"14":0,"15":0.077826,"16":0,"17":0.105294,"18":0.361662,_:"79"},A:{"6":0,"7":0,"8":0.027468,"9":0,"10":0,"11":0,"5.5":0},P:{"4":0,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0,"8.2":0,"9.2":0,"10.1":7.151618},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.292788},O:{"0":0.233146},Q:{"1.2":0},S:{"2.5":0},H:{"0":0},L:{"0":56.879402}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/WS.js b/assets/node_modules/caniuse-lite/data/regions/WS.js
deleted file mode 100644
index 3bb0b5c..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/WS.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.021282,"50":0,"51":0,"52":0,"53":0,"54":0.003547,"55":0,"56":0.003547,"57":0,"58":0.010641,"59":0,"60":0,"61":0.010641,"62":0,"63":0.099316,"64":0,"65":0,"66":0.007094,"67":0,"68":0.010641,"69":0.046111,"70":0.010641,"71":0,"72":0.017735,"73":0.024829,"74":0.007094,"75":0.010641,"76":0.014188,"77":0.046111,"78":0.067393,"79":5.327594,"80":0.007094,"81":0.021282,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.003547,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0.003547,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0.007094,"66":0.007094,"67":0,"68":0.021282,"69":0.007094,"70":0.010641,"71":0.219914,"72":0.56752,"73":0.017735,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0.007094,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.003547,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0.007094,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.003547},E:{"4":0,"5":0,"6":0,"7":0,"8":0.014188,"9":0,"10":0,"11":0,"12":0.031923,"13":0.198632,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0.003547,"11.1":0.007094,"12.1":0.007094},G:{"8":0.00071507362208663,"3.2":0.00071507362208663,"4.0-4.1":0.0014301472441733,"4.2-4.3":0,"5.0-5.1":0.0042904417325198,"6.0-6.1":0.0021452208662599,"7.0-7.1":0.005720588976693,"8.1-8.4":0.010726104331299,"9.0-9.2":0.0092959570871261,"9.3":0.088669129138742,"10.0-10.2":0.027887871261378,"10.3":0.097965086225868,"11.0-11.2":0.078658098429529,"11.3-11.4":0.1337187673302,"12.0-12.1":0.18019855276583,"12.2-12.4":1.0769008748625,"13.0-13.1":0.49769124097229,"13.2":0.20951657127138,"13.3":4.7223462002601},I:{"3":0.00027921343873518,"4":0.0027921343873518,_:"76","2.1":0,"2.2":0.00083764031620553,"2.3":0.00027921343873518,"4.1":0.004746628458498,"4.2-4.3":0.12341233992095,"4.4":0,"4.4.3-4.4.4":0.079575830039526},B:{"12":0.007094,"13":0.014188,"14":0.007094,"15":0.024829,"16":0.021282,"17":0.074487,"18":0.269572,_:"79"},A:{"6":0,"7":0,"8":0.028376,"9":0,"10":0.003547,"11":0.258931,"5.5":0},P:{"4":0.82633340101523,"5.0-5.4":0.29954585786802,"6.2-6.4":0.12395001015228,"7.2-7.4":0.51645837563452,"8.2":0.15493751269036,"9.2":1.1775250964467,"10.1":2.3963668629442},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.070983},O:{"0":2.555388},Q:{"1.2":0.032265},S:{"2.5":0},H:{"0":1.2340752680412},L:{"0":71.233688}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/YE.js b/assets/node_modules/caniuse-lite/data/regions/YE.js
deleted file mode 100644
index 23fd571..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/YE.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.002951,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0.002951,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0.005902,"31":0.002951,"32":0.041314,"33":0.050167,"34":0,"35":0.002951,"36":0.002951,"37":0,"38":0.002951,"39":0,"40":0.020657,"41":0,"42":0.002951,"43":0.017706,"44":0,"45":0,"46":0.002951,"47":0.002951,"48":0.002951,"49":0.023608,"50":0.002951,"51":0,"52":0.002951,"53":0.002951,"54":0.005902,"55":0.005902,"56":0.005902,"57":0.002951,"58":0.005902,"59":0.002951,"60":0.005902,"61":0.002951,"62":0.005902,"63":0.023608,"64":0.005902,"65":0.002951,"66":0.017706,"67":0.017706,"68":0.017706,"69":0.020657,"70":0.014755,"71":0.014755,"72":0.017706,"73":0.02951,"74":0.032461,"75":0.047216,"76":0.047216,"77":0.047216,"78":0.126893,"79":3.142815,"80":0.002951,"81":0.002951,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0.002951,"24":0.002951,"25":0.002951,"26":0,"27":0,"28":0,"29":0.002951,"30":0.002951,"31":0,"32":0.002951,"33":0,"34":0,"35":0,"36":0.002951,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.014755,"44":0.002951,"45":0,"46":0,"47":0.008853,"48":0.002951,"49":0.002951,"50":0.002951,"51":0.002951,"52":0.020657,"53":0,"54":0.017706,"55":0.002951,"56":0.008853,"57":0.002951,"58":0.002951,"59":0.005902,"60":0.008853,"61":0.005902,"62":0.002951,"63":0.002951,"64":0.002951,"65":0.002951,"66":0.008853,"67":0.008853,"68":0.067873,"69":0.023608,"70":0.02951,"71":0.348218,"72":0.315757,"73":0.005902,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0.002951,"30":0.002951,"31":0,"32":0,"33":0,"34":0.002951,"35":0.005902,"36":0.005902,"37":0.002951,"38":0,"39":0,"40":0,"41":0,"42":0.002951,"43":0.002951,"44":0,"45":0.002951,"46":0.017706,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0.008853,"54":0.005902,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.002951,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.032461},E:{"4":0,"5":0,"6":0,"7":0.002951,"8":0,"9":0,"10":0.005902,"11":0,"12":0,"13":0.020657,_:"0","3.1":0,"3.2":0,"5.1":2.195544,"6.1":0,"7.1":0,"9.1":0.005902,"10.1":0.008853,"11.1":0.002951,"12.1":0.020657},G:{"8":0.00023336400920276,"3.2":0.00023336400920276,"4.0-4.1":0.00046672801840552,"4.2-4.3":0,"5.0-5.1":0.0014001840552166,"6.0-6.1":0.00070009202760828,"7.0-7.1":0.0018669120736221,"8.1-8.4":0.0035004601380414,"9.0-9.2":0.0030337321196359,"9.3":0.028937137141142,"10.0-10.2":0.0091011963589077,"10.3":0.031970869260778,"11.0-11.2":0.025670041012304,"11.3-11.4":0.043639069720916,"12.0-12.1":0.058807730319096,"12.2-12.4":0.35144619785936,"13.0-13.1":0.16242135040512,"13.2":0.068375654696409,"13.3":1.541135916775},I:{"3":0.0045884137022398,"4":0.045884137022398,_:"76","2.1":0,"2.2":0.013765241106719,"2.3":0.0045884137022398,"4.1":0.078003032938076,"4.2-4.3":2.02807885639,"4.4":0,"4.4.3-4.4.4":1.3076979051383},B:{"12":0.002951,"13":0.008853,"14":0.002951,"15":0.017706,"16":0.017706,"17":0.023608,"18":0.103285,_:"79"},A:{"6":0,"7":0,"8":0.013115555555556,"9":0.0032788888888889,"10":0.0065577777777778,"11":0.065577777777778,"5.5":0},P:{"4":0.73041863501484,"5.0-5.4":0.13188114243323,"6.2-6.4":0.06086821958457,"7.2-7.4":0.14202584569733,"8.2":0.050723516320475,"9.2":0.41593283382789,"10.1":1.8767701038576},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.014098},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.253764},O:{"0":2.974678},Q:{"1.2":0},S:{"2.5":0},H:{"0":2.8562741786942},L:{"0":74.084236}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/YT.js b/assets/node_modules/caniuse-lite/data/regions/YT.js
deleted file mode 100644
index 405eed1..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/YT.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0.005426,"32":0,"33":0,"34":0,"35":0,"36":0.005426,"37":0,"38":0.005426,"39":0.005426,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0.537174,"50":0,"51":0.005426,"52":0,"53":0.184484,"54":0,"55":0,"56":0,"57":0,"58":0.02713,"59":0,"60":0,"61":0.010852,"62":0,"63":0.05426,"64":0.005426,"65":0.010852,"66":0,"67":0.016278,"68":0,"69":0.059686,"70":0.010852,"71":0,"72":0,"73":0.227892,"74":0.037982,"75":0.032556,"76":0.005426,"77":0.070538,"78":0.227892,"79":15.822216,"80":0.113946,"81":0,"82":0},C:{"2":0,"3":0.010852,"4":0.010852,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0.005426,"44":0,"45":0.016278,"46":0.010852,"47":0.021704,"48":0.005426,"49":0,"50":0,"51":0,"52":0.24417,"53":0,"54":0.021704,"55":0.037982,"56":0,"57":0.005426,"58":0,"59":0,"60":0.005426,"61":0,"62":0,"63":0.005426,"64":0,"65":0,"66":0,"67":0,"68":0.086816,"69":0.103094,"70":0.016278,"71":1.063496,"72":1.584392,"73":0.048834,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0.005426,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0.005426,"57":0,"58":0.021704,"60":0,"62":0.037982,"63":0,"64":0.021704,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.005426},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0.005426,"11":0,"12":0.065112,"13":1.893674,_:"0","3.1":0,"3.2":0,"5.1":0.021704,"6.1":0,"7.1":0,"9.1":0.048834,"10.1":0.168206,"11.1":0.575156,"12.1":0.097668},G:{"8":0.0010196921076323,"3.2":0.0010196921076323,"4.0-4.1":0.0020393842152646,"4.2-4.3":0,"5.0-5.1":0.0061181526457937,"6.0-6.1":0.0030590763228969,"7.0-7.1":0.0081575368610583,"8.1-8.4":0.015295381614484,"9.0-9.2":0.01325599739922,"9.3":0.1264418213464,"10.0-10.2":0.039767992197659,"10.3":0.13969781874562,"11.0-11.2":0.11216613183955,"11.3-11.4":0.19068242412724,"12.0-12.1":0.25696241112334,"12.2-12.4":1.5356563140942,"13.0-13.1":0.70970570691207,"13.2":0.29876978753626,"13.3":6.7340466788036},I:{"3":0.00026379973649539,"4":0.0026379973649539,_:"76","2.1":0,"2.2":0.00079139920948617,"2.3":0.00026379973649539,"4.1":0.0044845955204216,"4.2-4.3":0.11659948353096,"4.4":0,"4.4.3-4.4.4":0.075182924901186},B:{"12":0.005426,"13":0,"14":0.021704,"15":0.065112,"16":0.005426,"17":0.303856,"18":1.76345,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.179058,"5.5":0},P:{"4":0.092820152866242,"5.0-5.4":0.010313350318471,"6.2-6.4":0,"7.2-7.4":0.17532695541401,"8.2":0,"9.2":0.16501360509554,"10.1":2.7433511847134},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.013722},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.13722},O:{"0":0.599194},Q:{"1.2":0},S:{"2.5":0},H:{"0":0.19919691408935},L:{"0":54.980574}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/ZA.js b/assets/node_modules/caniuse-lite/data/regions/ZA.js
deleted file mode 100644
index 36040b3..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/ZA.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.008472,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.002824,"27":0,"28":0.002824,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0.002824,"37":0,"38":0,"39":0,"40":0.008472,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0.002824,"47":0,"48":0.002824,"49":0.05648,"50":0.002824,"51":0,"52":0,"53":0.002824,"54":0.002824,"55":0.011296,"56":0.002824,"57":0.002824,"58":0.005648,"59":0.002824,"60":0.002824,"61":0.002824,"62":0.005648,"63":0.01412,"64":0.002824,"65":0.005648,"66":0.002824,"67":0.008472,"68":0.005648,"69":0.025416,"70":0.008472,"71":0.01412,"72":0.01412,"73":0.01412,"74":0.019768,"75":0.02824,"76":0.031064,"77":0.039536,"78":0.121432,"79":3.781336,"80":0.005648,"81":0.005648,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.016944,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0.002824,"48":0.002824,"49":0,"50":0.002824,"51":0,"52":0.019768,"53":0,"54":0.002824,"55":0.002824,"56":0.005648,"57":0.008472,"58":0.008472,"59":0.002824,"60":0.016944,"61":0.002824,"62":0,"63":0.002824,"64":0.002824,"65":0.002824,"66":0.002824,"67":0.002824,"68":0.059304,"69":0.005648,"70":0.008472,"71":0.11296,"72":0.302168,"73":0.011296,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0.002824,"25":0.002824,"26":0.025416,"27":0.002824,"28":0.016944,"29":0.002824,"30":0.005648,"31":0.002824,"32":0.01412,"33":0.002824,"34":0,"35":0.053656,"36":0.002824,"37":0.002824,"38":0.011296,"39":0,"40":0,"41":0,"42":0.005648,"43":0,"44":0.005648,"45":0.039536,"46":0.223096,"47":0.002824,"48":0,"49":0.002824,"50":0,"51":0,"52":0,"53":0.011296,"54":0.002824,"55":0.002824,"56":0.01412,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0.005648,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0.031064},E:{"4":0,"5":0,"6":0,"7":0,"8":0.008472,"9":0,"10":0.002824,"11":0.005648,"12":0.031064,"13":0.398184,_:"0","3.1":0,"3.2":0,"5.1":0.124256,"6.1":0,"7.1":0,"9.1":0.002824,"10.1":0.016944,"11.1":0.025416,"12.1":0.0706},G:{"8":0.0012176492947884,"3.2":0.0012176492947884,"4.0-4.1":0.0024352985895769,"4.2-4.3":0,"5.0-5.1":0.0073058957687306,"6.0-6.1":0.0036529478843653,"7.0-7.1":0.0097411943583075,"8.1-8.4":0.018264739421827,"9.0-9.2":0.01582944083225,"9.3":0.15098851255377,"10.0-10.2":0.047488322496749,"10.3":0.16681795338602,"11.0-11.2":0.13394142242673,"11.3-11.4":0.22770041812544,"12.0-12.1":0.30684762228669,"12.2-12.4":1.8337798379514,"13.0-13.1":0.84748390917275,"13.2":0.35677124337301,"13.3":8.0413559427828},I:{"3":0.00030272463768116,"4":0.0030272463768116,_:"76","2.1":0,"2.2":0.00090817391304348,"2.3":0.00030272463768116,"4.1":0.0051463188405797,"4.2-4.3":0.13380428985507,"4.4":0,"4.4.3-4.4.4":0.08627652173913},B:{"12":0.008472,"13":0.011296,"14":0.01412,"15":0.01412,"16":0.022592,"17":0.05648,"18":0.398184,_:"79"},A:{"6":0,"7":0.002835296,"8":0.017011776,"9":0.002835296,"10":0.019847072,"11":0.66629456,"5.5":0},P:{"4":1.1558111784512,"5.0-5.4":0.092055757575758,"6.2-6.4":0.12274101010101,"7.2-7.4":0.5830197979798,"8.2":0.1738830976431,"9.2":0.80804498316498,"10.1":5.8506548148148},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.011661,"11":0.081627},J:{"7":0,"10":0.07176},R:{_:"0"},M:{"0":0.243984},O:{"0":0.631488},Q:{"1.2":0.021528},S:{"2.5":0.007176},H:{"0":4.5518280412371},L:{"0":61.134712}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/ZM.js b/assets/node_modules/caniuse-lite/data/regions/ZM.js
deleted file mode 100644
index 52e087e..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/ZM.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.002647,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.002647,"34":0,"35":0,"36":0.002647,"37":0.002647,"38":0,"39":0.013235,"40":0.002647,"41":0,"42":0.002647,"43":0.002647,"44":0,"45":0,"46":0.007941,"47":0,"48":0,"49":0.013235,"50":0.002647,"51":0.005294,"52":0,"53":0,"54":0,"55":0.007941,"56":0.005294,"57":0,"58":0.010588,"59":0.002647,"60":0.007941,"61":0.002647,"62":0.005294,"63":0.119115,"64":0.007941,"65":0.007941,"66":0.002647,"67":0.010588,"68":0.002647,"69":0.055587,"70":0.018529,"71":0.005294,"72":0.010588,"73":0.007941,"74":0.021176,"75":0.018529,"76":0.018529,"77":0.02647,"78":0.082057,"79":2.178481,"80":0.013235,"81":0.002647,"82":0},C:{"2":0,"3":0,"4":0.002647,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0.002647,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.002647,"22":0,"23":0.002647,"24":0,"25":0.002647,"26":0.002647,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.002647,"36":0,"37":0,"38":0.002647,"39":0,"40":0,"41":0.002647,"42":0,"43":0.005294,"44":0.002647,"45":0.002647,"46":0,"47":0.005294,"48":0.005294,"49":0.002647,"50":0,"51":0,"52":0.007941,"53":0,"54":0.005294,"55":0,"56":0.002647,"57":0.002647,"58":0,"59":0.002647,"60":0.005294,"61":0.002647,"62":0.002647,"63":0.002647,"64":0.002647,"65":0.002647,"66":0.007941,"67":0.005294,"68":0.058234,"69":0.010588,"70":0.010588,"71":0.148232,"72":0.407638,"73":0.031764,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0.010588,"15":0.002647,"16":0.005294,"17":0,"18":0,"19":0.005294,"20":0.018529,"21":0.002647,"22":0,"23":0.015882,"24":0,"25":0,"26":0.002647,"27":0,"28":0.007941,"29":0,"30":0.007941,"31":0,"32":0.002647,"33":0.002647,"34":0.002647,"35":0.005294,"36":0.005294,"37":0.002647,"38":0.007941,"39":0,"40":0.002647,"41":0,"42":0.007941,"43":0,"44":0.002647,"45":0.023823,"46":0.082057,"47":0,"48":0.002647,"49":0,"50":0.002647,"51":0.002647,"52":0.007941,"53":0.015882,"54":0.015882,"55":0.013235,"56":0.018529,"57":0,"58":0.002647,"60":0.002647,"62":0.002647,"63":0.007941,"64":0.010588,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0.002647,"12.1":0.179996},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.002647,"10":0.002647,"11":0.018529,"12":0.018529,"13":0.280582,_:"0","3.1":0,"3.2":0,"5.1":0.179996,"6.1":0,"7.1":0.002647,"9.1":0.002647,"10.1":0.023823,"11.1":0.010588,"12.1":0.092645},G:{"8":0.00045404831449435,"3.2":0.00045404831449435,"4.0-4.1":0.0009080966289887,"4.2-4.3":0,"5.0-5.1":0.0027242898869661,"6.0-6.1":0.001362144943483,"7.0-7.1":0.0036323865159548,"8.1-8.4":0.0068107247174152,"9.0-9.2":0.0059026280884265,"9.3":0.056301990997299,"10.0-10.2":0.01770788426528,"10.3":0.062204619085726,"11.0-11.2":0.049945314594378,"11.3-11.4":0.084907034810443,"12.0-12.1":0.11442017525258,"12.2-12.4":0.68379676162849,"13.0-13.1":0.31601762688807,"13.2":0.13303615614684,"13.3":2.9985350689207},I:{"3":0.0016085415019763,"4":0.016085415019763,_:"76","2.1":0,"2.2":0.0048256245059289,"2.3":0.0016085415019763,"4.1":0.027345205533597,"4.2-4.3":0.71097534387352,"4.4":0,"4.4.3-4.4.4":0.45843432806324},B:{"12":0.047646,"13":0.039705,"14":0.023823,"15":0.039705,"16":0.023823,"17":0.089998,"18":0.325581,_:"79"},A:{"6":0,"7":0,"8":0.069732795698925,"9":0.002789311827957,"10":0.025103806451613,"11":0.16178008602151,"5.5":0},P:{"4":1.1154086439169,"5.0-5.4":0.081864854599407,"6.2-6.4":0.12279728189911,"7.2-7.4":0.19442902967359,"8.2":0.071631747774481,"9.2":0.39909116617211,"10.1":1.4224018486647},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.066177,"11":0.595593},J:{"7":0,"10":0.154413},R:{_:"0"},M:{"0":0.213237},O:{"0":3.977973},Q:{"1.2":0.102942},S:{"2.5":0.051471},H:{"0":25.868359360825},L:{"0":42.418286}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/ZW.js b/assets/node_modules/caniuse-lite/data/regions/ZW.js
deleted file mode 100644
index 07102c7..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/ZW.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0.005461,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0.005461,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0.005461,"34":0,"35":0.005461,"36":0.038227,"37":0,"38":0,"39":0,"40":0.032766,"41":0,"42":0,"43":0.010922,"44":0,"45":0.005461,"46":0.016383,"47":0.005461,"48":0.005461,"49":0.098298,"50":0.005461,"51":0.005461,"52":0,"53":0.010922,"54":0,"55":0.043688,"56":0.005461,"57":0.005461,"58":0.021844,"59":0,"60":0.043688,"61":0.005461,"62":0.010922,"63":0.174752,"64":0.010922,"65":0.038227,"66":0.010922,"67":0.027305,"68":0.016383,"69":0.174752,"70":0.049149,"71":0.027305,"72":0.027305,"73":0.125603,"74":0.147447,"75":0.081915,"76":0.152908,"77":0.158369,"78":0.333121,"79":11.823065,"80":0.05461,"81":0.021844,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0.005461,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0.005461,"36":0.005461,"37":0,"38":0.005461,"39":0,"40":0.005461,"41":0.005461,"42":0,"43":0.005461,"44":0.005461,"45":0.016383,"46":0,"47":0.021844,"48":0.010922,"49":0.005461,"50":0,"51":0,"52":0.049149,"53":0.010922,"54":0.005461,"55":0,"56":0.016383,"57":0.010922,"58":0.010922,"59":0,"60":0.021844,"61":0.010922,"62":0.010922,"63":0.005461,"64":0.005461,"65":0.021844,"66":0.027305,"67":0.005461,"68":0.180213,"69":0.05461,"70":0.060071,"71":0.748157,"72":2.07518,"73":0.16383,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0.005461,"16":0,"17":0,"18":0,"19":0,"20":0.010922,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0.010922,"29":0.005461,"30":0.005461,"31":0,"32":0.005461,"33":0.005461,"34":0.005461,"35":0.010922,"36":0.010922,"37":0.005461,"38":0.005461,"39":0,"40":0,"41":0,"42":0.016383,"43":0,"44":0,"45":0.016383,"46":0.202057,"47":0.005461,"48":0.005461,"49":0,"50":0,"51":0.005461,"52":0,"53":0.016383,"54":0.021844,"55":0.005461,"56":0.016383,"57":0.005461,"58":0.010922,"60":0.005461,"62":0.016383,"63":0.021844,"64":0.049149,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0.005461,"12.1":0.354965},E:{"4":0,"5":0,"6":0,"7":0.005461,"8":0.027305,"9":0.027305,"10":0.010922,"11":0.021844,"12":0.283972,"13":1.327023,_:"0","3.1":0,"3.2":0,"5.1":3.587877,"6.1":0,"7.1":0,"9.1":0.005461,"10.1":0.049149,"11.1":0.141986,"12.1":0.16383},G:{"8":0.00063812733820146,"3.2":0.00063812733820146,"4.0-4.1":0.0012762546764029,"4.2-4.3":0,"5.0-5.1":0.0038287640292088,"6.0-6.1":0.0019143820146044,"7.0-7.1":0.0051050187056117,"8.1-8.4":0.0095719100730219,"9.0-9.2":0.008295655396619,"9.3":0.079127789936981,"10.0-10.2":0.024886966189857,"10.3":0.0874234453336,"11.0-11.2":0.070194007202161,"11.3-11.4":0.11932981224367,"12.0-12.1":0.16080808922677,"12.2-12.4":0.9610197713314,"13.0-13.1":0.44413662738822,"13.2":0.18697131009303,"13.3":4.2141929414824},I:{"3":0.001694277997365,"4":0.01694277997365,_:"76","2.1":0,"2.2":0.0050828339920949,"2.3":0.001694277997365,"4.1":0.028802725955204,"4.2-4.3":0.74887087483531,"4.4":0,"4.4.3-4.4.4":0.48286922924901},B:{"12":0.103759,"13":0.065532,"14":0.060071,"15":0.092837,"16":0.070993,"17":0.43688,"18":1.25603,_:"79"},A:{"6":0,"7":0,"8":0.0440293125,"9":0,"10":0.0385256484375,"11":0.6219140390625,"5.5":0},P:{"4":0.78307888659794,"5.0-5.4":0.030509567010309,"6.2-6.4":0.030509567010309,"7.2-7.4":0.15254783505155,"8.2":0.030509567010309,"9.2":0.20339711340206,"10.1":1.6576864742268},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.064744981132075,"11":0.50716901886792},J:{"7":0,"10":0.049929},R:{_:"0"},M:{"0":0.199716},O:{"0":1.674891},Q:{"1.2":0.018156},S:{"2.5":0},H:{"0":12.474864376289},L:{"0":35.049628}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/alt-af.js b/assets/node_modules/caniuse-lite/data/regions/alt-af.js
deleted file mode 100644
index 11e4d42..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/alt-af.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"11":0.00755,"19":0.041525,"24":0.124575,"26":0.033975,"28":0.00755,"29":0.00755,"30":0.0453,"31":0.0151,"32":0.003775,"33":0.09815,"34":0.003775,"35":0.086825,"36":0.011325,"37":0.003775,"38":0.011325,"39":0.00755,"40":0.0302,"41":0.00755,"42":0.003775,"43":0.2114,"44":0.00755,"45":0.00755,"46":0.0151,"47":0.018875,"48":0.0151,"49":0.419025,"50":0.0151,"51":0.018875,"52":0.00755,"53":0.018875,"54":0.049075,"55":0.056625,"56":0.207625,"57":0.0151,"58":0.033975,"59":0.011325,"60":0.0302,"61":0.033975,"62":0.0302,"63":0.1359,"64":0.018875,"65":0.0453,"66":0.018875,"67":0.049075,"68":0.018875,"69":0.17365,"70":0.08305,"71":0.1208,"72":0.09815,"73":0.109475,"74":0.177425,"75":0.15855,"76":0.200075,"77":0.222725,"78":0.4832,"79":19.898025,"80":0.049075,"81":0.033975,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 20 21 22 23 25 27 82"},C:{"2":0.041525,"15":0.041525,"18":0.041525,"21":0.0453,"23":0.0453,"25":0.086825,"30":0.041525,"36":0.003775,"38":0.003775,"39":0.003775,"40":0.00755,"41":0.003775,"42":0.00755,"43":0.0302,"44":0.00755,"45":0.011325,"46":0.003775,"47":0.033975,"48":0.0453,"49":0.00755,"50":0.00755,"51":0.049075,"52":0.151,"53":0.011325,"54":0.011325,"55":0.0151,"56":0.026425,"57":0.02265,"58":0.0151,"59":0.00755,"60":0.033975,"61":0.00755,"62":0.00755,"63":0.0151,"64":0.0151,"65":0.018875,"66":0.02265,"67":0.018875,"68":0.094375,"69":0.0453,"70":0.0604,"71":0.894675,"72":2.238575,"73":0.11325,_:"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 37 74 3.5 3.6"},F:{"36":0.00755,"42":0.003775,"43":0.03775,"49":0.003775,"51":0.003775,"53":0.003775,"56":0.018875,"57":0.003775,"58":0.00755,"60":0.00755,"62":0.018875,"63":0.056625,"64":0.0906,_:"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 44 45 46 47 48 50 52 54 55 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0.041525,"12.1":0.02265},E:{"4":0,"5":0.0453,"7":0.011325,"8":0.0302,"9":0.011325,"10":0.018875,"11":0.03775,"12":0.101925,"13":0.917325,_:"0 6 3.1 3.2 6.1 7.1","5.1":1.174025,"9.1":0.02265,"10.1":0.079275,"11.1":0.109475,"12.1":0.2567},G:{"8":0.00065133039911974,"3.2":0.00065133039911974,"4.0-4.1":0.0013026607982395,"4.2-4.3":0,"5.0-5.1":0.0039079823947184,"6.0-6.1":0.0019539911973592,"7.0-7.1":0.0052106431929579,"8.1-8.4":0.009769955986796,"9.0-9.2":0.0084672951885566,"9.3":0.080764969490847,"10.0-10.2":0.02540188556567,"10.3":0.089232264679404,"11.0-11.2":0.071646343903171,"11.3-11.4":0.12179878463539,"12.0-12.1":0.16413526057817,"12.2-12.4":0.98090358107432,"13.0-13.1":0.45332595778734,"13.2":0.19083980694208,"13.3":4.3013859557867},I:{"3":0.00048389328063241,"4":0.0048389328063241,_:"76","2.1":0,"2.2":0.0014516798418972,"2.3":0.00048389328063241,"4.1":0.008226185770751,"4.2-4.3":0.21388083003953,"4.4":0,"4.4.3-4.4.4":0.13790958498024},B:{"12":0.03775,"13":0.026425,"14":0.02265,"15":0.02265,"16":0.0453,"17":0.139675,"18":0.8607,_:"79"},A:{"8":0.20066222222222,"9":0.10419,"10":0.11962555555556,"11":0.79107222222222,_:"6 7 5.5"},P:{"4":0.61194389027431,"5.0-5.4":0.050995324189526,"6.2-6.4":0.061194389027431,"7.2-7.4":0.26517568578554,"8.2":0.061194389027431,"9.2":0.40796259351621,"10.1":2.5293680798005},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.0217875,"11":0.1089375},J:{"7":0,"10":0.043575},R:{_:"0"},M:{"0":0.2241},O:{"0":1.263675},Q:{"1.2":0.0249},S:{"2.5":0.01245},H:{"0":8.5395769329897},L:{"0":42.36285}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/alt-an.js b/assets/node_modules/caniuse-lite/data/regions/alt-an.js
deleted file mode 100644
index 2893202..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/alt-an.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0.399057,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0.098014,"79":21.192027,"80":0,"81":0,"82":0},C:{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0.504072,"69":0,"70":0,"71":1.204172,"72":1.505215,"73":0,"74":0,"3.5":0,"3.6":0},F:{"9":0,"11":0,"12":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"9.5-9.6":0,"10.0-10.1":0,"10.5":0,"10.6":0,"11.1":0,"11.5":0,"11.6":0,"12.1":0},E:{"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0.203029,"13":10.347478,_:"0","3.1":0,"3.2":0,"5.1":0,"6.1":0,"7.1":0,"9.1":0,"10.1":0,"11.1":0,"12.1":0.602086},G:{"8":0.0037880203060918,"3.2":0.0037880203060918,"4.0-4.1":0.0075760406121837,"4.2-4.3":0,"5.0-5.1":0.022728121836551,"6.0-6.1":0.011364060918275,"7.0-7.1":0.030304162448735,"8.1-8.4":0.056820304591377,"9.0-9.2":0.049244263979194,"9.3":0.46971451795539,"10.0-10.2":0.14773279193758,"10.3":0.51895878193458,"11.0-11.2":0.4166822336701,"11.3-11.4":0.70835979723917,"12.0-12.1":0.95458111713514,"12.2-12.4":5.7047585809743,"13.0-13.1":2.6364621330399,"13.2":1.1098899496849,"13.3":25.01608610143},I:{"3":0,"4":0,_:"76","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},B:{"12":0,"13":0,"14":1.309187,"15":0.098014,"16":0,"17":0.098014,"18":4.018574,_:"79"},A:{"6":0,"7":0,"8":0,"9":0,"10":0,"11":5.425775,"5.5":0},P:{"4":0,"5.0-5.4":0,"6.2-6.4":0,"7.2-7.4":0,"8.2":0,"9.2":0,"10.1":0.146951},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.146951},O:{"0":0},Q:{"1.2":0},S:{"2.5":0},H:{"0":0},L:{"0":13.775464}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/alt-as.js b/assets/node_modules/caniuse-lite/data/regions/alt-as.js
deleted file mode 100644
index 6efb9bb..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/alt-as.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"11":0.003691,"13":0.011073,"26":0.007382,"29":0.003691,"30":0.003691,"31":0.025837,"33":0.011073,"34":0.014764,"36":0.011073,"38":0.029528,"40":0.011073,"41":0.003691,"42":0.007382,"43":0.011073,"45":0.011073,"46":0.003691,"47":0.011073,"48":0.033219,"49":0.335881,"50":0.007382,"51":0.007382,"52":0.003691,"53":0.033219,"54":0.007382,"55":0.059056,"56":0.014764,"57":0.040601,"58":0.033219,"59":0.018455,"60":0.014764,"61":0.022146,"62":0.03691,"63":0.483521,"64":0.014764,"65":0.03691,"66":0.025837,"67":0.047983,"68":0.025837,"69":0.273134,"70":0.095966,"71":0.136567,"72":0.158713,"73":0.151331,"74":0.284207,"75":0.203005,"76":0.169786,"77":0.214078,"78":0.51674,"79":23.592872,"80":0.059056,"81":0.040601,_:"4 5 6 7 8 9 10 12 14 15 16 17 18 19 20 21 22 23 24 25 27 28 32 35 37 39 44 82"},C:{"17":0.003691,"33":0.007382,"35":0.029528,"36":0.007382,"40":0.003691,"43":0.011073,"44":0.003691,"45":0.003691,"47":0.025837,"48":0.018455,"49":0.003691,"50":0.007382,"51":0.003691,"52":0.114421,"53":0.003691,"54":0.007382,"55":0.007382,"56":0.033219,"57":0.007382,"58":0.011073,"59":0.007382,"60":0.014764,"61":0.007382,"62":0.007382,"63":0.011073,"64":0.014764,"65":0.077511,"66":0.062747,"67":0.014764,"68":0.055365,"69":0.029528,"70":0.044292,"71":0.645925,"72":1.502237,"73":0.088584,_:"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 34 37 38 39 41 42 46 74 3.5 3.6"},F:{"36":0.003691,"57":0.003691,"58":0.003691,"63":0.003691,"64":0.03691,_:"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 60 62 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.011073},E:{"4":0,"6":0.003691,"8":0.011073,"9":0.007382,"10":0.011073,"11":0.025837,"12":0.081202,"13":1.081463,_:"0 5 7 3.1 3.2 6.1 7.1","5.1":0.343263,"9.1":0.011073,"10.1":0.051674,"11.1":0.088584,"12.1":0.243606},G:{"8":0.0007396366910073,"3.2":0.0007396366910073,"4.0-4.1":0.0014792733820146,"4.2-4.3":0,"5.0-5.1":0.0044378201460438,"6.0-6.1":0.0022189100730219,"7.0-7.1":0.0059170935280584,"8.1-8.4":0.01109455036511,"9.0-9.2":0.0096152769830949,"9.3":0.091714949684905,"10.0-10.2":0.028845830949285,"10.3":0.101330226668,"11.0-11.2":0.081360036010803,"11.3-11.4":0.13831206121837,"12.0-12.1":0.18638844613384,"12.2-12.4":1.113892856657,"13.0-13.1":0.51478713694108,"13.2":0.21671355046514,"13.3":4.8845607074122},I:{"3":0.00038236363636364,"4":0.0038236363636364,_:"76","2.1":0,"2.2":0.0011470909090909,"2.3":0.00038236363636364,"4.1":0.0065001818181818,"4.2-4.3":0.16900472727273,"4.4":0,"4.4.3-4.4.4":0.10897363636364},B:{"12":0.007382,"13":0.007382,"14":0.011073,"15":0.011073,"16":0.018455,"17":0.084893,"18":0.819402,_:"79"},A:{"7":0.0040540491803279,"8":0.10540527868852,"9":0.016216196721311,"10":0.032432393442623,"11":1.0783770819672,_:"6 5.5"},P:{"4":0.48082596961326,"5.0-5.4":0.030691019337017,"6.2-6.4":0.040921359116022,"7.2-7.4":0.17391577624309,"8.2":0.051151698895028,"9.2":0.35806189226519,"10.1":2.4962029060773},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.044163},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.132489},O:{"0":5.968314},Q:{"1.2":0.466866},S:{"2.5":0.271287},H:{"0":1.5350490773196},L:{"0":43.341203}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/alt-eu.js b/assets/node_modules/caniuse-lite/data/regions/alt-eu.js
deleted file mode 100644
index 0ef5eb7..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/alt-eu.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"33":0.021164,"34":0.010582,"38":0.026455,"40":0.031746,"43":0.010582,"46":0.005291,"47":0.005291,"48":0.021164,"49":0.862433,"50":0.005291,"51":0.015873,"53":0.026455,"54":0.037037,"55":0.015873,"56":0.021164,"57":0.015873,"58":0.026455,"59":0.021164,"60":0.031746,"61":0.05291,"62":0.021164,"63":0.084656,"64":0.015873,"65":0.058201,"66":0.047619,"67":0.058201,"68":0.037037,"69":0.074074,"70":0.164021,"71":0.195767,"72":0.185185,"73":0.174603,"74":0.111111,"75":0.190476,"76":0.359788,"77":0.26455,"78":0.825396,"79":27.56611,"80":0.05291,"81":0.026455,_:"4 5 6 7 8 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 41 42 44 45 52 82"},C:{"11":0.005291,"21":0.015873,"26":0.005291,"38":0.031746,"43":0.010582,"45":0.026455,"46":0.005291,"47":0.015873,"48":0.047619,"49":0.010582,"50":0.021164,"51":0.021164,"52":0.291005,"53":0.010582,"54":0.010582,"55":0.015873,"56":0.037037,"57":0.010582,"58":0.042328,"59":0.010582,"60":0.10582,"61":0.010582,"62":0.010582,"63":0.026455,"64":0.026455,"65":0.037037,"66":0.047619,"67":0.037037,"68":0.412698,"69":0.079365,"70":0.111111,"71":1.64021,"72":4.121689,"73":0.031746,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 22 23 24 25 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 74 3.5 3.6"},F:{"31":0.031746,"36":0.031746,"56":0.005291,"57":0.010582,"58":0.010582,"62":0.010582,"63":0.010582,"64":0.116402,_:"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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 60 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.010582},E:{"4":0,"8":0.010582,"9":0.010582,"10":0.015873,"11":0.037037,"12":0.15873,"13":3.645499,_:"0 5 6 7 3.1 3.2 6.1 7.1","5.1":0.164021,"9.1":0.037037,"10.1":0.111111,"11.1":0.227513,"12.1":0.513227},G:{"8":0.0011922055616685,"3.2":0.0011922055616685,"4.0-4.1":0.002384411123337,"4.2-4.3":0,"5.0-5.1":0.007153233370011,"6.0-6.1":0.0035766166850055,"7.0-7.1":0.009537644493348,"8.1-8.4":0.017883083425028,"9.0-9.2":0.015498672301691,"9.3":0.14783348964689,"10.0-10.2":0.046496016905072,"10.3":0.16333216194858,"11.0-11.2":0.13114261178354,"11.3-11.4":0.22294244003201,"12.0-12.1":0.30043580154046,"12.2-12.4":1.7954615758728,"13.0-13.1":0.82977507092128,"13.2":0.34931622956887,"13.3":7.8733255292588},I:{"3":0.00024816864295125,"4":0.0024816864295125,_:"76","2.1":0,"2.2":0.00074450592885375,"2.3":0.00024816864295125,"4.1":0.0042188669301713,"4.2-4.3":0.10969054018445,"4.4":0,"4.4.3-4.4.4":0.070728063241107},B:{"12":0.005291,"13":0.010582,"14":0.021164,"15":0.021164,"16":0.058201,"17":0.201058,"18":2.6455,_:"79"},A:{"6":0.010758787589499,"7":0.010758787589499,"8":0.075311513126492,"9":0.021517575178998,"10":0.032276362768496,"11":2.103342973747,_:"5.5"},P:{"4":0.19864827088608,"5.0-5.4":0.020910344303797,"6.2-6.4":0.010455172151899,"7.2-7.4":0.062731032911392,"8.2":0.031365516455696,"9.2":0.24046895949367,"10.1":3.408386121519},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.075344},J:{"7":0,"10":0.009418},R:{_:"0"},M:{"0":0.291958},O:{"0":0.23545},Q:{"1.2":0.014127},S:{_:"2.5"},H:{"0":0.33882145017182},L:{"0":30.242837}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/alt-na.js b/assets/node_modules/caniuse-lite/data/regions/alt-na.js
deleted file mode 100644
index f2db831..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/alt-na.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"11":0.004739,"25":0.004739,"29":0.004739,"35":0.004739,"37":0.004739,"38":0.009478,"40":0.028434,"41":0.014217,"43":0.004739,"47":0.009478,"48":0.052129,"49":0.440727,"50":0.004739,"51":0.009478,"53":0.018956,"54":0.009478,"55":0.009478,"56":0.04739,"57":0.184821,"58":0.018956,"59":0.023695,"60":0.052129,"61":0.023695,"62":0.018956,"63":0.108997,"64":0.014217,"65":0.075824,"66":0.037912,"67":0.080563,"68":0.090041,"69":0.071085,"70":0.099519,"71":0.132692,"72":0.175343,"73":0.132692,"74":0.175343,"75":0.398076,"76":0.360164,"77":0.393337,"78":1.549653,"79":24.26368,"80":0.056868,"81":0.04739,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 30 31 32 33 34 36 39 42 44 45 46 52 82"},C:{"10":0.004739,"11":0.004739,"21":0.028434,"30":0.009478,"31":0.009478,"38":0.004739,"43":0.009478,"44":0.018956,"45":0.014217,"47":0.014217,"48":0.033173,"49":0.004739,"50":0.018956,"51":0.004739,"52":0.080563,"53":0.004739,"54":0.023695,"55":0.009478,"56":0.009478,"57":0.018956,"58":0.052129,"59":0.014217,"60":0.042651,"61":0.009478,"62":0.004739,"63":0.014217,"64":0.018956,"65":0.033173,"66":0.023695,"67":0.023695,"68":0.170604,"69":0.037912,"70":0.066346,"71":0.971495,"72":2.160984,"73":0.014217,_:"2 3 4 5 6 7 8 9 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29 32 33 34 35 36 37 39 40 41 42 46 74 3.5 3.6"},F:{"58":0.004739,"62":0.004739,"64":0.028434,_:"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 60 63 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.004739},E:{"4":0,"5":0.004739,"8":0.066346,"9":0.018956,"10":0.018956,"11":0.04739,"12":0.156387,"13":4.739,_:"0 6 7 3.1 3.2 7.1","5.1":0.241689,"6.1":0.004739,"9.1":0.09478,"10.1":0.146909,"11.1":0.289079,"12.1":0.582897},G:{"8":0.0025717847354206,"3.2":0.0025717847354206,"4.0-4.1":0.0051435694708413,"4.2-4.3":0,"5.0-5.1":0.015430708412524,"6.0-6.1":0.0077153542062619,"7.0-7.1":0.020574277883365,"8.1-8.4":0.038576771031309,"9.0-9.2":0.033433201560468,"9.3":0.31890130719216,"10.0-10.2":0.1002996046814,"10.3":0.35233450875263,"11.0-11.2":0.28289632089627,"11.3-11.4":0.48092374552366,"12.0-12.1":0.648089753326,"12.2-12.4":3.8731078115435,"13.0-13.1":1.7899621758528,"13.2":0.75353292747824,"13.3":16.984066392718},I:{"3":0.00018025296442688,"4":0.0018025296442688,_:"76","2.1":0,"2.2":0.00054075889328063,"2.3":0.00018025296442688,"4.1":0.0030643003952569,"4.2-4.3":0.07967181027668,"4.4":0,"4.4.3-4.4.4":0.05137209486166},B:{"12":0.014217,"13":0.014217,"14":0.023695,"15":0.023695,"16":0.061607,"17":0.175343,"18":3.374168,_:"79"},A:{"6":0.014469372781065,"8":0.12057810650888,"9":0.086816236686391,"10":0.03858499408284,"11":2.1848752899408,_:"7 5.5"},P:{"4":0.074360368421053,"5.0-5.4":0.010622909774436,"6.2-6.4":0.010455172151899,"7.2-7.4":0.031868729323308,"8.2":0.021245819548872,"9.2":0.16996655639098,"10.1":2.167073593985},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.021048},J:{"7":0,"10":0.010524},R:{_:"0"},M:{"0":0.326244},O:{"0":0.199956},Q:{"1.2":0.021048},S:{_:"2.5"},H:{"0":0.13948820618557},L:{"0":23.554601}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/alt-oc.js b/assets/node_modules/caniuse-lite/data/regions/alt-oc.js
deleted file mode 100644
index ecb1339..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/alt-oc.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"26":0.009204,"34":0.009204,"38":0.027612,"40":0.041418,"48":0.009204,"49":0.409578,"50":0.004602,"52":0.004602,"53":0.032214,"54":0.013806,"55":0.041418,"56":0.018408,"57":0.036816,"58":0.02301,"59":0.036816,"60":0.036816,"61":0.018408,"62":0.027612,"63":0.478608,"64":0.027612,"65":0.078234,"66":0.032214,"67":0.082836,"68":0.073632,"69":0.20709,"70":0.110448,"71":0.105846,"72":0.151866,"73":0.294528,"74":0.216294,"75":0.285324,"76":0.285324,"77":0.400374,"78":1.329978,"79":23.695698,"80":0.050622,"81":0.02301,_:"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 35 36 37 39 41 42 43 44 45 46 47 51 82"},C:{"21":0.02301,"45":0.009204,"47":0.009204,"48":0.02301,"50":0.02301,"52":0.078234,"54":0.009204,"56":0.013806,"57":0.013806,"58":0.050622,"59":0.004602,"60":0.036816,"61":0.004602,"63":0.009204,"64":0.009204,"65":0.02301,"66":0.036816,"67":0.027612,"68":0.09204,"69":0.04602,"70":0.064428,"71":0.94341,"72":2.066298,"73":0.032214,_:"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 33 34 35 36 37 38 39 40 41 42 43 44 46 49 51 53 55 62 74 3.5 3.6"},F:{"36":0.009204,"62":0.009204,"64":0.018408,_:"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 63 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},E:{"4":0,"8":0.027612,"9":0.027612,"10":0.02301,"11":0.055224,"12":0.170274,"13":5.250882,_:"0 5 6 7 3.1 3.2 7.1","5.1":0.018408,"6.1":0.009204,"9.1":0.073632,"10.1":0.156468,"11.1":0.289926,"12.1":0.584454},G:{"8":0.0025659638891667,"3.2":0.0025659638891667,"4.0-4.1":0.0051319277783335,"4.2-4.3":0,"5.0-5.1":0.015395783335,"6.0-6.1":0.0076978916675002,"7.0-7.1":0.020527711113334,"8.1-8.4":0.038489458337501,"9.0-9.2":0.033357530559168,"9.3":0.31817952225668,"10.0-10.2":0.1000725916775,"10.3":0.35153705281584,"11.0-11.2":0.28225602780834,"11.3-11.4":0.47983524727418,"12.0-12.1":0.64662290007002,"12.2-12.4":3.8643416170851,"13.0-13.1":1.7859108668601,"13.2":0.75182741952586,"13.3":16.945625524057},I:{"3":0.00029153754940711,"4":0.0029153754940711,_:"76","2.1":0,"2.2":0.00087461264822134,"2.3":0.00029153754940711,"4.1":0.0049561383399209,"4.2-4.3":0.12885959683794,"4.4":0,"4.4.3-4.4.4":0.083088201581028},B:{"12":0.004602,"13":0.009204,"14":0.018408,"15":0.018408,"16":0.055224,"17":0.179478,"18":3.087942,_:"79"},A:{"8":0.014589583783784,"9":0.019452778378378,"10":0.014589583783784,"11":1.7507500540541,_:"6 7 5.5"},P:{"4":0.16025785714286,"5.0-5.4":0.021367714285714,"6.2-6.4":0.021367714285714,"7.2-7.4":0.064103142857143,"8.2":0.042735428571429,"9.2":0.23504485714286,"10.1":3.4508858571429},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.021588},J:{"7":0,"10":0},R:{_:"0"},M:{"0":0.366996},O:{"0":0.318423},Q:{"1.2":0.118734},S:{_:"2.5"},H:{"0":0.32190044845361},L:{"0":23.431332}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/alt-sa.js b/assets/node_modules/caniuse-lite/data/regions/alt-sa.js
deleted file mode 100644
index 522dd95..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/alt-sa.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"36":0.012756,"38":0.03189,"43":0.006378,"48":0.006378,"49":0.529374,"51":0.012756,"53":0.03189,"54":0.012756,"55":0.006378,"56":0.012756,"57":0.006378,"58":0.038268,"59":0.012756,"60":0.012756,"61":0.025512,"62":0.019134,"63":0.06378,"64":0.012756,"65":0.051024,"66":0.038268,"67":0.089292,"68":0.038268,"69":0.076536,"70":0.146694,"71":0.19134,"72":0.165828,"73":0.172206,"74":0.15945,"75":0.204096,"76":0.229608,"77":0.312522,"78":0.803628,"79":49.168002,"80":0.114804,"81":0.044646,_:"4 5 6 7 8 9 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 39 40 41 42 44 45 46 47 50 52 82"},C:{"40":0.012756,"45":0.006378,"47":0.012756,"48":0.025512,"50":0.057402,"52":0.102048,"55":0.006378,"56":0.012756,"58":0.006378,"59":0.006378,"60":0.03189,"61":0.006378,"63":0.019134,"64":0.019134,"65":0.025512,"66":0.025512,"67":0.012756,"68":0.076536,"69":0.03189,"70":0.051024,"71":0.771738,"72":2.187654,"73":0.03189,_:"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 49 51 53 54 57 62 74 3.5 3.6"},F:{"57":0.006378,"58":0.006378,"64":0.261498,_:"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 60 62 63 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},E:{"4":0,"8":0.012756,"9":0.006378,"10":0.012756,"11":0.038268,"12":0.114804,"13":1.441428,_:"0 5 6 7 3.1 3.2 6.1 7.1","5.1":0.51024,"9.1":0.012756,"10.1":0.070158,"11.1":0.15945,"12.1":0.363546},G:{"8":0.00031810703210963,"3.2":0.00031810703210963,"4.0-4.1":0.00063621406421927,"4.2-4.3":0,"5.0-5.1":0.0019086421926578,"6.0-6.1":0.0009543210963289,"7.0-7.1":0.0025448562568771,"8.1-8.4":0.0047716054816445,"9.0-9.2":0.0041353914174252,"9.3":0.039445271981594,"10.0-10.2":0.012406174252276,"10.3":0.04358066339902,"11.0-11.2":0.03499177353206,"11.3-11.4":0.059486015004501,"12.0-12.1":0.080162972091627,"12.2-12.4":0.47906919035711,"13.0-13.1":0.2214024943483,"13.2":0.093205360408122,"13.3":2.100778840052},I:{"3":0.00009066930171278,"4":0.0009066930171278,_:"76","2.1":0,"2.2":0.00027200790513834,"2.3":0.00009066930171278,"4.1":0.0015413781291173,"4.2-4.3":0.040075831357049,"4.4":0,"4.4.3-4.4.4":0.025840750988142},B:{"14":0.006378,"15":0.006378,"16":0.012756,"17":0.076536,"18":0.803628,_:"12 13 79"},A:{"8":0.065298571428571,"9":0.0065298571428571,"10":0.013059714285714,"11":0.46361985714286,_:"6 7 5.5"},P:{"4":0.18617467379679,"5.0-5.4":0.021367714285714,"6.2-6.4":0.010343037433155,"7.2-7.4":0.082744299465241,"8.2":0.02068607486631,"9.2":0.12411644919786,"10.1":1.4893973903743},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0,"11":0.079684},J:{"7":0,"10":0.007244},R:{_:"0"},M:{"0":0.09055},O:{"0":0.079684},Q:{"1.2":0.003622},S:{_:"2.5"},H:{"0":0.16802470446735},L:{"0":31.144016}};
diff --git a/assets/node_modules/caniuse-lite/data/regions/alt-ww.js b/assets/node_modules/caniuse-lite/data/regions/alt-ww.js
deleted file mode 100644
index d987006..0000000
--- a/assets/node_modules/caniuse-lite/data/regions/alt-ww.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports={D:{"13":0.004532,"24":0.004532,"26":0.004532,"31":0.013596,"33":0.013596,"34":0.009064,"35":0.004532,"36":0.009064,"38":0.02266,"40":0.02266,"41":0.009064,"43":0.018128,"45":0.004532,"46":0.004532,"47":0.009064,"48":0.031724,"49":0.516648,"50":0.009064,"51":0.009064,"53":0.027192,"54":0.018128,"55":0.031724,"56":0.031724,"57":0.063448,"58":0.031724,"59":0.02266,"60":0.027192,"61":0.031724,"62":0.027192,"63":0.253792,"64":0.013596,"65":0.054384,"66":0.036256,"67":0.058916,"68":0.04532,"69":0.15862,"70":0.117832,"71":0.154088,"72":0.172216,"73":0.15862,"74":0.20394,"75":0.244728,"76":0.267388,"77":0.276452,"78":0.865612,"79":26.190428,"80":0.058916,"81":0.036256,_:"4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20 21 22 23 25 27 28 29 30 32 37 39 42 44 52 82"},C:{"21":0.013596,"33":0.004532,"35":0.013596,"38":0.009064,"43":0.009064,"44":0.009064,"45":0.013596,"47":0.018128,"48":0.031724,"49":0.004532,"50":0.018128,"51":0.009064,"52":0.149556,"53":0.004532,"54":0.013596,"55":0.009064,"56":0.027192,"57":0.013596,"58":0.031724,"59":0.009064,"60":0.049852,"61":0.009064,"62":0.009064,"63":0.018128,"64":0.018128,"65":0.049852,"66":0.04532,"67":0.02266,"68":0.185812,"69":0.04532,"70":0.06798,"71":0.992508,"72":2.392896,"73":0.054384,_:"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 36 37 39 40 41 42 46 74 3.5 3.6"},F:{"31":0.009064,"36":0.013596,"56":0.004532,"57":0.004532,"58":0.009064,"62":0.004532,"63":0.009064,"64":0.072512,_:"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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 60 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.009064},E:{"4":0,"5":0.004532,"8":0.027192,"9":0.013596,"10":0.013596,"11":0.036256,"12":0.122364,"13":2.646688,_:"0 6 7 3.1 3.2 6.1 7.1","5.1":0.312708,"9.1":0.040788,"10.1":0.09064,"11.1":0.18128,"12.1":0.403348},G:{"8":0.0012490375112534,"3.2":0.0012490375112534,"4.0-4.1":0.0024980750225068,"4.2-4.3":0,"5.0-5.1":0.0074942250675203,"6.0-6.1":0.0037471125337601,"7.0-7.1":0.009992300090027,"8.1-8.4":0.018735562668801,"9.0-9.2":0.016237487646294,"9.3":0.15488065139542,"10.0-10.2":0.048712462938882,"10.3":0.17111813904171,"11.0-11.2":0.13739412623787,"11.3-11.4":0.23357001460438,"12.0-12.1":0.31475745283585,"12.2-12.4":1.8810504919476,"13.0-13.1":0.86933010783235,"13.2":0.36596799079724,"13.3":8.2486437243173},I:{"3":0.00028811594202899,"4":0.0028811594202899,_:"76","2.1":0,"2.2":0.00086434782608696,"2.3":0.00028811594202899,"4.1":0.0048979710144928,"4.2-4.3":0.12734724637681,"4.4":0,"4.4.3-4.4.4":0.082113043478261},B:{"12":0.009064,"13":0.009064,"14":0.018128,"15":0.018128,"16":0.040788,"17":0.140492,"18":1.90344,_:"79"},A:{"6":0.009407891598916,"7":0.004703945799458,"8":0.098782861788618,"9":0.037631566395664,"10":0.032927620596206,"11":1.5523021138211,_:"5.5"},P:{"4":0.28116,"5.0-5.4":0.020826666666667,"6.2-6.4":0.020826666666667,"7.2-7.4":0.11454666666667,"8.2":0.041653333333333,"9.2":0.27074666666667,"10.1":2.59292},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.064744981132075,"11":0.049203},J:{"7":0,"10":0.010934},R:{_:"0"},M:{"0":0.21868},O:{"0":2.618693},Q:{"1.2":0.202279},S:{"2.5":0.114807},H:{"0":1.1076217147766},L:{"0":34.422267}};
diff --git a/assets/node_modules/caniuse-lite/dist/lib/statuses.js b/assets/node_modules/caniuse-lite/dist/lib/statuses.js
deleted file mode 100644
index c346e2b..0000000
--- a/assets/node_modules/caniuse-lite/dist/lib/statuses.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = {
- 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/assets/node_modules/caniuse-lite/dist/lib/supported.js b/assets/node_modules/caniuse-lite/dist/lib/supported.js
deleted file mode 100644
index 3523a87..0000000
--- a/assets/node_modules/caniuse-lite/dist/lib/supported.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = {
- y: 1 << 0,
- n: 1 << 1,
- a: 1 << 2,
- p: 1 << 3,
- u: 1 << 4,
- x: 1 << 5,
- d: 1 << 6
-};
diff --git a/assets/node_modules/caniuse-lite/dist/unpacker/agents.js b/assets/node_modules/caniuse-lite/dist/unpacker/agents.js
deleted file mode 100644
index 8dc5d49..0000000
--- a/assets/node_modules/caniuse-lite/dist/unpacker/agents.js
+++ /dev/null
@@ -1,51 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.agents = undefined;
-
-var _browsers = require('./browsers');
-
-var _browserVersions = require('./browserVersions');
-
-var agentsData = require('../../data/agents');
-
-function unpackBrowserVersions(versionsData) {
- return Object.keys(versionsData).reduce(function (usage, version) {
- usage[_browserVersions.browserVersions[version]] = versionsData[version];
- return usage;
- }, {});
-}
-
-var agents = exports.agents = Object.keys(agentsData).reduce(function (map, key) {
- var versionsData = agentsData[key];
- map[_browsers.browsers[key]] = Object.keys(versionsData).reduce(function (data, entry) {
- if (entry === 'A') {
- data.usage_global = unpackBrowserVersions(versionsData[entry]);
- } else if (entry === 'C') {
- data.versions = versionsData[entry].reduce(function (list, version) {
- if (version === '') {
- list.push(null);
- } else {
- list.push(_browserVersions.browserVersions[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(function (map, key) {
- map[_browserVersions.browserVersions[key]] = versionsData[entry][key];
- return map;
- }, {});
- } else {
- // entry is B
- data.prefix = versionsData[entry];
- }
- return data;
- }, {});
- return map;
-}, {}); \ No newline at end of file
diff --git a/assets/node_modules/caniuse-lite/dist/unpacker/browserVersions.js b/assets/node_modules/caniuse-lite/dist/unpacker/browserVersions.js
deleted file mode 100644
index f63d752..0000000
--- a/assets/node_modules/caniuse-lite/dist/unpacker/browserVersions.js
+++ /dev/null
@@ -1,6 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-var browserVersions = exports.browserVersions = require('../../data/browserVersions'); \ No newline at end of file
diff --git a/assets/node_modules/caniuse-lite/dist/unpacker/browsers.js b/assets/node_modules/caniuse-lite/dist/unpacker/browsers.js
deleted file mode 100644
index 4ef0082..0000000
--- a/assets/node_modules/caniuse-lite/dist/unpacker/browsers.js
+++ /dev/null
@@ -1,6 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-var browsers = exports.browsers = require('../../data/browsers'); \ No newline at end of file
diff --git a/assets/node_modules/caniuse-lite/dist/unpacker/feature.js b/assets/node_modules/caniuse-lite/dist/unpacker/feature.js
deleted file mode 100644
index d484a57..0000000
--- a/assets/node_modules/caniuse-lite/dist/unpacker/feature.js
+++ /dev/null
@@ -1,58 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = unpackFeature;
-
-var _statuses = require('../lib/statuses');
-
-var _statuses2 = _interopRequireDefault(_statuses);
-
-var _supported = require('../lib/supported');
-
-var _supported2 = _interopRequireDefault(_supported);
-
-var _browsers = require('./browsers');
-
-var _browserVersions = require('./browserVersions');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var MATH2LOG = Math.log(2);
-
-function unpackSupport(cipher) {
- // bit flags
- var stats = Object.keys(_supported2.default).reduce(function (list, support) {
- if (cipher & _supported2.default[support]) list.push(support);
- return list;
- }, []);
-
- // notes
- var notes = cipher >> 7;
- var notesArray = [];
- while (notes) {
- var 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) {
- var unpacked = { status: _statuses2.default[packed.B], title: packed.C };
- unpacked.stats = Object.keys(packed.A).reduce(function (browserStats, key) {
- var browser = packed.A[key];
- browserStats[_browsers.browsers[key]] = Object.keys(browser).reduce(function (stats, support) {
- var packedVersions = browser[support].split(' ');
- var unpacked = unpackSupport(support);
- packedVersions.forEach(function (v) {
- return stats[_browserVersions.browserVersions[v]] = unpacked;
- });
- return stats;
- }, {});
- return browserStats;
- }, {});
- return unpacked;
-} \ No newline at end of file
diff --git a/assets/node_modules/caniuse-lite/dist/unpacker/features.js b/assets/node_modules/caniuse-lite/dist/unpacker/features.js
deleted file mode 100644
index dec36e3..0000000
--- a/assets/node_modules/caniuse-lite/dist/unpacker/features.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-/*
- * Load this dynamically so that it
- * doesn't appear in the rollup bundle.
- */
-
-var features = exports.features = require('../../data/features'); \ No newline at end of file
diff --git a/assets/node_modules/caniuse-lite/dist/unpacker/index.js b/assets/node_modules/caniuse-lite/dist/unpacker/index.js
deleted file mode 100644
index 2cc2f05..0000000
--- a/assets/node_modules/caniuse-lite/dist/unpacker/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-
-var _agents = require('./agents');
-
-Object.defineProperty(exports, 'agents', {
- enumerable: true,
- get: function get() {
- return _agents.agents;
- }
-});
-
-var _feature = require('./feature');
-
-Object.defineProperty(exports, 'feature', {
- enumerable: true,
- get: function get() {
- return _interopRequireDefault(_feature).default;
- }
-});
-
-var _features = require('./features');
-
-Object.defineProperty(exports, 'features', {
- enumerable: true,
- get: function get() {
- return _features.features;
- }
-});
-
-var _region = require('./region');
-
-Object.defineProperty(exports, 'region', {
- enumerable: true,
- get: function get() {
- return _interopRequireDefault(_region).default;
- }
-});
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } \ No newline at end of file
diff --git a/assets/node_modules/caniuse-lite/dist/unpacker/region.js b/assets/node_modules/caniuse-lite/dist/unpacker/region.js
deleted file mode 100644
index e09ae36..0000000
--- a/assets/node_modules/caniuse-lite/dist/unpacker/region.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = unpackRegion;
-
-var _browsers = require('./browsers');
-
-function unpackRegion(packed) {
- return Object.keys(packed).reduce(function (list, browser) {
- var data = packed[browser];
- list[_browsers.browsers[browser]] = Object.keys(data).reduce(function (memo, key) {
- var stats = data[key];
- if (key === '_') {
- stats.split(' ').forEach(function (version) {
- return memo[version] = null;
- });
- } else {
- memo[key] = stats;
- }
- return memo;
- }, {});
- return list;
- }, {});
-} \ No newline at end of file
diff --git a/assets/node_modules/caniuse-lite/package.json b/assets/node_modules/caniuse-lite/package.json
deleted file mode 100644
index 14adfbb..0000000
--- a/assets/node_modules/caniuse-lite/package.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "caniuse-lite",
- "version": "1.0.30001025",
- "description": "A smaller version of caniuse-db, with only the essentials!",
- "main": "dist/unpacker/index.js",
- "scripts": {
- "prepublish": "del-cli dist && babel src/unpacker -d dist/unpacker && mkdir dist/lib && babel src/lib/statuses.js -o dist/lib/statuses.js && babel src/lib/supported.js -o dist/lib/supported.js"
- },
- "files": [
- "data",
- "dist"
- ],
- "keywords": [
- "support",
- "css",
- "js",
- "html5",
- "svg"
- ],
- "author": {
- "name": "Ben Briggs",
- "email": "beneb.info@gmail.com",
- "url": "http://beneb.info"
- },
- "repository": "ben-eb/caniuse-lite",
- "license": "CC-BY-4.0"
-}
diff --git a/assets/node_modules/ccount/index.js b/assets/node_modules/ccount/index.js
deleted file mode 100644
index 3051998..0000000
--- a/assets/node_modules/ccount/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict'
-
-module.exports = ccount
-
-function ccount(value, character) {
- var val = String(value)
- var count = 0
- var index
-
- if (typeof character !== 'string' || character.length !== 1) {
- throw new Error('Expected character')
- }
-
- index = val.indexOf(character)
-
- while (index !== -1) {
- count++
- index = val.indexOf(character, index + 1)
- }
-
- return count
-}
diff --git a/assets/node_modules/ccount/license b/assets/node_modules/ccount/license
deleted file mode 100644
index 32e7a3d..0000000
--- a/assets/node_modules/ccount/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/ccount/package.json b/assets/node_modules/ccount/package.json
deleted file mode 100644
index 75d6e4a..0000000
--- a/assets/node_modules/ccount/package.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "name": "ccount",
- "version": "1.0.5",
- "description": "Count characters",
- "license": "MIT",
- "keywords": [
- "character",
- "count",
- "char"
- ],
- "repository": "wooorm/ccount",
- "bugs": "https://github.com/wooorm/ccount/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 ccount -o ccount.js",
- "build-mangle": "browserify . -s ccount -p tinyify -o ccount.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"
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "prettier": {
- "tabWidth": 2,
- "useTabs": false,
- "singleQuote": true,
- "bracketSpacing": false,
- "semi": false,
- "trailingComma": "none"
- },
- "xo": {
- "prettier": true,
- "esnext": false,
- "ignores": [
- "ccount.js"
- ]
- },
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
- }
-}
diff --git a/assets/node_modules/ccount/readme.md b/assets/node_modules/ccount/readme.md
deleted file mode 100644
index f3e41a9..0000000
--- a/assets/node_modules/ccount/readme.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# ccount
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-Count characters.
-
-## Install
-
-[npm][]:
-
-```sh
-npm install ccount
-```
-
-## Use
-
-```js
-var ccount = require('ccount')
-
-ccount('foo(bar(baz)', '(') // => 2
-ccount('foo(bar(baz)', ')') // => 1
-```
-
-## API
-
-### `ccount(value, character)`
-
-Get the total count of `character` in `value`.
-
-###### Parameters
-
-* `value` (`string`) — Content, coerced to string
-* `character` (`string`) — Single character to look for
-
-###### Returns
-
-`number` — Number of times `character` occurred in `value`.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/wooorm/ccount.svg
-
-[build]: https://travis-ci.org/wooorm/ccount
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/ccount.svg
-
-[coverage]: https://codecov.io/github/wooorm/ccount
-
-[downloads-badge]: https://img.shields.io/npm/dm/ccount.svg
-
-[downloads]: https://www.npmjs.com/package/ccount
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/ccount.svg
-
-[size]: https://bundlephobia.com/result?p=ccount
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
diff --git a/assets/node_modules/chalk/index.js b/assets/node_modules/chalk/index.js
deleted file mode 100644
index 1cc5fa8..0000000
--- a/assets/node_modules/chalk/index.js
+++ /dev/null
@@ -1,228 +0,0 @@
-'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/assets/node_modules/chalk/index.js.flow b/assets/node_modules/chalk/index.js.flow
deleted file mode 100644
index 622caaa..0000000
--- a/assets/node_modules/chalk/index.js.flow
+++ /dev/null
@@ -1,93 +0,0 @@
-// @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/assets/node_modules/chalk/license b/assets/node_modules/chalk/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/chalk/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/chalk/package.json b/assets/node_modules/chalk/package.json
deleted file mode 100644
index bc32468..0000000
--- a/assets/node_modules/chalk/package.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "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/assets/node_modules/chalk/readme.md b/assets/node_modules/chalk/readme.md
deleted file mode 100644
index d298e2c..0000000
--- a/assets/node_modules/chalk/readme.md
+++ /dev/null
@@ -1,314 +0,0 @@
-<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/assets/node_modules/chalk/templates.js b/assets/node_modules/chalk/templates.js
deleted file mode 100644
index dbdf9b2..0000000
--- a/assets/node_modules/chalk/templates.js
+++ /dev/null
@@ -1,128 +0,0 @@
-'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/assets/node_modules/chalk/types/index.d.ts b/assets/node_modules/chalk/types/index.d.ts
deleted file mode 100644
index b4e4dc5..0000000
--- a/assets/node_modules/chalk/types/index.d.ts
+++ /dev/null
@@ -1,97 +0,0 @@
-// Type definitions for Chalk
-// Definitions by: Thomas Sauer <https://github.com/t-sauer>
-
-export const enum Level {
- None = 0,
- Basic = 1,
- Ansi256 = 2,
- TrueColor = 3
-}
-
-export interface ChalkOptions {
- enabled?: boolean;
- level?: Level;
-}
-
-export interface ChalkConstructor {
- new (options?: ChalkOptions): Chalk;
- (options?: ChalkOptions): Chalk;
-}
-
-export interface ColorSupport {
- level: Level;
- hasBasic: boolean;
- has256: boolean;
- has16m: boolean;
-}
-
-export interface Chalk {
- (...text: string[]): string;
- (text: TemplateStringsArray, ...placeholders: string[]): string;
- constructor: ChalkConstructor;
- enabled: boolean;
- level: Level;
- rgb(r: number, g: number, b: number): this;
- hsl(h: number, s: number, l: number): this;
- hsv(h: number, s: number, v: number): this;
- hwb(h: number, w: number, b: number): this;
- bgHex(color: string): this;
- bgKeyword(color: string): this;
- bgRgb(r: number, g: number, b: number): this;
- bgHsl(h: number, s: number, l: number): this;
- bgHsv(h: number, s: number, v: number): this;
- bgHwb(h: number, w: number, b: number): this;
- hex(color: string): this;
- keyword(color: string): this;
-
- readonly reset: this;
- readonly bold: this;
- readonly dim: this;
- readonly italic: this;
- readonly underline: this;
- readonly inverse: this;
- readonly hidden: this;
- readonly strikethrough: this;
-
- readonly visible: this;
-
- readonly black: this;
- readonly red: this;
- readonly green: this;
- readonly yellow: this;
- readonly blue: this;
- readonly magenta: this;
- readonly cyan: this;
- readonly white: this;
- readonly gray: this;
- readonly grey: this;
- readonly blackBright: this;
- readonly redBright: this;
- readonly greenBright: this;
- readonly yellowBright: this;
- readonly blueBright: this;
- readonly magentaBright: this;
- readonly cyanBright: this;
- readonly whiteBright: this;
-
- readonly bgBlack: this;
- readonly bgRed: this;
- readonly bgGreen: this;
- readonly bgYellow: this;
- readonly bgBlue: this;
- readonly bgMagenta: this;
- readonly bgCyan: this;
- readonly bgWhite: this;
- readonly bgBlackBright: this;
- readonly bgRedBright: this;
- readonly bgGreenBright: this;
- readonly bgYellowBright: this;
- readonly bgBlueBright: this;
- readonly bgMagentaBright: this;
- readonly bgCyanBright: this;
- readonly bgWhiteBright: this;
-}
-
-declare const chalk: Chalk & { supportsColor: ColorSupport };
-
-export default chalk
diff --git a/assets/node_modules/character-entities-html4/index.json b/assets/node_modules/character-entities-html4/index.json
deleted file mode 100644
index fa0d7bc..0000000
--- a/assets/node_modules/character-entities-html4/index.json
+++ /dev/null
@@ -1,254 +0,0 @@
-{
- "nbsp": " ",
- "iexcl": "¡",
- "cent": "¢",
- "pound": "£",
- "curren": "¤",
- "yen": "¥",
- "brvbar": "¦",
- "sect": "§",
- "uml": "¨",
- "copy": "©",
- "ordf": "ª",
- "laquo": "«",
- "not": "¬",
- "shy": "­",
- "reg": "®",
- "macr": "¯",
- "deg": "°",
- "plusmn": "±",
- "sup2": "²",
- "sup3": "³",
- "acute": "´",
- "micro": "µ",
- "para": "¶",
- "middot": "·",
- "cedil": "¸",
- "sup1": "¹",
- "ordm": "º",
- "raquo": "»",
- "frac14": "¼",
- "frac12": "½",
- "frac34": "¾",
- "iquest": "¿",
- "Agrave": "À",
- "Aacute": "Á",
- "Acirc": "Â",
- "Atilde": "Ã",
- "Auml": "Ä",
- "Aring": "Å",
- "AElig": "Æ",
- "Ccedil": "Ç",
- "Egrave": "È",
- "Eacute": "É",
- "Ecirc": "Ê",
- "Euml": "Ë",
- "Igrave": "Ì",
- "Iacute": "Í",
- "Icirc": "Î",
- "Iuml": "Ï",
- "ETH": "Ð",
- "Ntilde": "Ñ",
- "Ograve": "Ò",
- "Oacute": "Ó",
- "Ocirc": "Ô",
- "Otilde": "Õ",
- "Ouml": "Ö",
- "times": "×",
- "Oslash": "Ø",
- "Ugrave": "Ù",
- "Uacute": "Ú",
- "Ucirc": "Û",
- "Uuml": "Ü",
- "Yacute": "Ý",
- "THORN": "Þ",
- "szlig": "ß",
- "agrave": "à",
- "aacute": "á",
- "acirc": "â",
- "atilde": "ã",
- "auml": "ä",
- "aring": "å",
- "aelig": "æ",
- "ccedil": "ç",
- "egrave": "è",
- "eacute": "é",
- "ecirc": "ê",
- "euml": "ë",
- "igrave": "ì",
- "iacute": "í",
- "icirc": "î",
- "iuml": "ï",
- "eth": "ð",
- "ntilde": "ñ",
- "ograve": "ò",
- "oacute": "ó",
- "ocirc": "ô",
- "otilde": "õ",
- "ouml": "ö",
- "divide": "÷",
- "oslash": "ø",
- "ugrave": "ù",
- "uacute": "ú",
- "ucirc": "û",
- "uuml": "ü",
- "yacute": "ý",
- "thorn": "þ",
- "yuml": "ÿ",
- "fnof": "ƒ",
- "Alpha": "Α",
- "Beta": "Β",
- "Gamma": "Γ",
- "Delta": "Δ",
- "Epsilon": "Ε",
- "Zeta": "Ζ",
- "Eta": "Η",
- "Theta": "Θ",
- "Iota": "Ι",
- "Kappa": "Κ",
- "Lambda": "Λ",
- "Mu": "Μ",
- "Nu": "Ν",
- "Xi": "Ξ",
- "Omicron": "Ο",
- "Pi": "Π",
- "Rho": "Ρ",
- "Sigma": "Σ",
- "Tau": "Τ",
- "Upsilon": "Υ",
- "Phi": "Φ",
- "Chi": "Χ",
- "Psi": "Ψ",
- "Omega": "Ω",
- "alpha": "α",
- "beta": "β",
- "gamma": "γ",
- "delta": "δ",
- "epsilon": "ε",
- "zeta": "ζ",
- "eta": "η",
- "theta": "θ",
- "iota": "ι",
- "kappa": "κ",
- "lambda": "λ",
- "mu": "μ",
- "nu": "ν",
- "xi": "ξ",
- "omicron": "ο",
- "pi": "π",
- "rho": "ρ",
- "sigmaf": "ς",
- "sigma": "σ",
- "tau": "τ",
- "upsilon": "υ",
- "phi": "φ",
- "chi": "χ",
- "psi": "ψ",
- "omega": "ω",
- "thetasym": "ϑ",
- "upsih": "ϒ",
- "piv": "ϖ",
- "bull": "•",
- "hellip": "…",
- "prime": "′",
- "Prime": "″",
- "oline": "‾",
- "frasl": "⁄",
- "weierp": "℘",
- "image": "ℑ",
- "real": "ℜ",
- "trade": "™",
- "alefsym": "ℵ",
- "larr": "←",
- "uarr": "↑",
- "rarr": "→",
- "darr": "↓",
- "harr": "↔",
- "crarr": "↵",
- "lArr": "⇐",
- "uArr": "⇑",
- "rArr": "⇒",
- "dArr": "⇓",
- "hArr": "⇔",
- "forall": "∀",
- "part": "∂",
- "exist": "∃",
- "empty": "∅",
- "nabla": "∇",
- "isin": "∈",
- "notin": "∉",
- "ni": "∋",
- "prod": "∏",
- "sum": "∑",
- "minus": "−",
- "lowast": "∗",
- "radic": "√",
- "prop": "∝",
- "infin": "∞",
- "ang": "∠",
- "and": "∧",
- "or": "∨",
- "cap": "∩",
- "cup": "∪",
- "int": "∫",
- "there4": "∴",
- "sim": "∼",
- "cong": "≅",
- "asymp": "≈",
- "ne": "≠",
- "equiv": "≡",
- "le": "≤",
- "ge": "≥",
- "sub": "⊂",
- "sup": "⊃",
- "nsub": "⊄",
- "sube": "⊆",
- "supe": "⊇",
- "oplus": "⊕",
- "otimes": "⊗",
- "perp": "⊥",
- "sdot": "⋅",
- "lceil": "⌈",
- "rceil": "⌉",
- "lfloor": "⌊",
- "rfloor": "⌋",
- "lang": "〈",
- "rang": "〉",
- "loz": "◊",
- "spades": "♠",
- "clubs": "♣",
- "hearts": "♥",
- "diams": "♦",
- "quot": "\"",
- "amp": "&",
- "lt": "<",
- "gt": ">",
- "OElig": "Œ",
- "oelig": "œ",
- "Scaron": "Š",
- "scaron": "š",
- "Yuml": "Ÿ",
- "circ": "ˆ",
- "tilde": "˜",
- "ensp": " ",
- "emsp": " ",
- "thinsp": " ",
- "zwnj": "‌",
- "zwj": "‍",
- "lrm": "‎",
- "rlm": "‏",
- "ndash": "–",
- "mdash": "—",
- "lsquo": "‘",
- "rsquo": "’",
- "sbquo": "‚",
- "ldquo": "“",
- "rdquo": "”",
- "bdquo": "„",
- "dagger": "†",
- "Dagger": "‡",
- "permil": "‰",
- "lsaquo": "‹",
- "rsaquo": "›",
- "euro": "€"
-}
diff --git a/assets/node_modules/character-entities-html4/license b/assets/node_modules/character-entities-html4/license
deleted file mode 100644
index 32e7a3d..0000000
--- a/assets/node_modules/character-entities-html4/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/character-entities-html4/package.json b/assets/node_modules/character-entities-html4/package.json
deleted file mode 100644
index 116d768..0000000
--- a/assets/node_modules/character-entities-html4/package.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "character-entities-html4",
- "version": "1.1.4",
- "description": "HTML4 character entity information",
- "license": "MIT",
- "keywords": [
- "html",
- "html4",
- "entity",
- "entities",
- "character",
- "reference",
- "name",
- "replacement"
- ],
- "repository": "wooorm/character-entities-html4",
- "bugs": "https://github.com/wooorm/character-entities-html4/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.1",
- "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 characterEntitiesHTML4 -o character-entities-html4.js",
- "build-mangle": "browserify index.json -s characterEntitiesHTML4 -p tinyify -o character-entities-html4.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-html4.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/character-entities-html4/readme.md b/assets/node_modules/character-entities-html4/readme.md
deleted file mode 100644
index 85b0bba..0000000
--- a/assets/node_modules/character-entities-html4/readme.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# character-entities-html4
-
-[![Build][build-badge]][build]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-HTML4 character entity information.
-
-## Install
-
-[npm][]:
-
-```sh
-npm install character-entities-html4
-```
-
-## Use
-
-```js
-var characterEntities = require('character-entities-html4')
-
-console.log(characterEntities.AElig) // => 'Æ'
-console.log(characterEntities.aelig) // => 'æ'
-console.log(characterEntities.amp) // => '&'
-console.log(characterEntities.apos) // => undefined
-```
-
-## API
-
-### `characterEntitiesHTML4`
-
-Mapping between (case-sensitive) character entity names to replacements.
-
-## Support
-
-See [`w3.org`][html].
-
-## Related
-
-* [`character-entities`](https://github.com/wooorm/character-entities)
- — HTML 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-html4.svg
-
-[build]: https://travis-ci.org/wooorm/character-entities-html4
-
-[downloads-badge]: https://img.shields.io/npm/dm/character-entities-html4.svg
-
-[downloads]: https://www.npmjs.com/package/character-entities-html4
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/character-entities-html4.svg
-
-[size]: https://bundlephobia.com/result?p=character-entities-html4
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
-
-[html]: https://www.w3.org/TR/html4/sgml/entities.html
diff --git a/assets/node_modules/character-entities-legacy/index.json b/assets/node_modules/character-entities-legacy/index.json
deleted file mode 100644
index d83b752..0000000
--- a/assets/node_modules/character-entities-legacy/index.json
+++ /dev/null
@@ -1,108 +0,0 @@
-{
- "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/assets/node_modules/character-entities-legacy/license b/assets/node_modules/character-entities-legacy/license
deleted file mode 100644
index 32e7a3d..0000000
--- a/assets/node_modules/character-entities-legacy/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/character-entities-legacy/package.json b/assets/node_modules/character-entities-legacy/package.json
deleted file mode 100644
index e532b87..0000000
--- a/assets/node_modules/character-entities-legacy/package.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "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/assets/node_modules/character-entities-legacy/readme.md b/assets/node_modules/character-entities-legacy/readme.md
deleted file mode 100644
index 711a090..0000000
--- a/assets/node_modules/character-entities-legacy/readme.md
+++ /dev/null
@@ -1,74 +0,0 @@
-# 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/assets/node_modules/character-entities/index.json b/assets/node_modules/character-entities/index.json
deleted file mode 100644
index a63babe..0000000
--- a/assets/node_modules/character-entities/index.json
+++ /dev/null
@@ -1,2224 +0,0 @@
-{
- "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/assets/node_modules/character-entities/license b/assets/node_modules/character-entities/license
deleted file mode 100644
index 32e7a3d..0000000
--- a/assets/node_modules/character-entities/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/character-entities/package.json b/assets/node_modules/character-entities/package.json
deleted file mode 100644
index e1151d2..0000000
--- a/assets/node_modules/character-entities/package.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "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/assets/node_modules/character-entities/readme.md b/assets/node_modules/character-entities/readme.md
deleted file mode 100644
index b890e2a..0000000
--- a/assets/node_modules/character-entities/readme.md
+++ /dev/null
@@ -1,72 +0,0 @@
-# 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/assets/node_modules/character-reference-invalid/index.json b/assets/node_modules/character-reference-invalid/index.json
deleted file mode 100644
index 9337a85..0000000
--- a/assets/node_modules/character-reference-invalid/index.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "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/assets/node_modules/character-reference-invalid/license b/assets/node_modules/character-reference-invalid/license
deleted file mode 100644
index 32e7a3d..0000000
--- a/assets/node_modules/character-reference-invalid/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/character-reference-invalid/package.json b/assets/node_modules/character-reference-invalid/package.json
deleted file mode 100644
index 069dc4b..0000000
--- a/assets/node_modules/character-reference-invalid/package.json
+++ /dev/null
@@ -1,74 +0,0 @@
-{
- "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/assets/node_modules/character-reference-invalid/readme.md b/assets/node_modules/character-reference-invalid/readme.md
deleted file mode 100644
index e2e8f7a..0000000
--- a/assets/node_modules/character-reference-invalid/readme.md
+++ /dev/null
@@ -1,74 +0,0 @@
-# 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/assets/node_modules/chokidar/LICENSE b/assets/node_modules/chokidar/LICENSE
deleted file mode 100644
index fa9162b..0000000
--- a/assets/node_modules/chokidar/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2012-2019 Paul Miller (https://paulmillr.com), Elan Shanker
-
-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/assets/node_modules/chokidar/README.md b/assets/node_modules/chokidar/README.md
deleted file mode 100644
index b8c9ea7..0000000
--- a/assets/node_modules/chokidar/README.md
+++ /dev/null
@@ -1,300 +0,0 @@
-# Chokidar [![Weekly downloads](https://img.shields.io/npm/dw/chokidar.svg)](https://github.com/paulmillr/chokidar) [![Yearly downloads](https://img.shields.io/npm/dy/chokidar.svg)](https://github.com/paulmillr/chokidar)
-
-> A neat wrapper around Node.js fs.watch / fs.watchFile / FSEvents.
-
-[![NPM](https://nodei.co/npm/chokidar.png)](https://www.npmjs.com/package/chokidar)
-
-Version 3 is out! Check out our blog post about it: [Chokidar 3: How to save 32TB of traffic every week](https://paulmillr.com/posts/chokidar-3-save-32tb-of-traffic/)
-
-## Why?
-
-Node.js `fs.watch`:
-
-* Doesn't report filenames on MacOS.
-* Doesn't report events at all when using editors like Sublime on MacOS.
-* Often reports events twice.
-* Emits most changes as `rename`.
-* Does not provide an easy way to recursively watch file trees.
-
-Node.js `fs.watchFile`:
-
-* Almost as bad at event handling.
-* Also does not provide any recursive watching.
-* Results in high CPU utilization.
-
-Chokidar resolves these problems.
-
-Initially made for **[Brunch](https://brunch.io/)** (an ultra-swift web app build tool), it is now used in
-[Microsoft's Visual Studio Code](https://github.com/microsoft/vscode),
-[gulp](https://github.com/gulpjs/gulp/),
-[karma](https://karma-runner.github.io/),
-[PM2](https://github.com/Unitech/PM2),
-[browserify](http://browserify.org/),
-[webpack](https://webpack.github.io/),
-[BrowserSync](https://www.browsersync.io/),
-and [many others](https://www.npmjs.com/browse/depended/chokidar).
-It has proven itself in production environments.
-
-## How?
-
-Chokidar does still rely on the Node.js core `fs` module, but when using
-`fs.watch` and `fs.watchFile` for watching, it normalizes the events it
-receives, often checking for truth by getting file stats and/or dir contents.
-
-On MacOS, chokidar by default uses a native extension exposing the Darwin
-`FSEvents` API. This provides very efficient recursive watching compared with
-implementations like `kqueue` available on most \*nix platforms. Chokidar still
-does have to do some work to normalize the events received that way as well.
-
-On other platforms, the `fs.watch`-based implementation is the default, which
-avoids polling and keeps CPU usage down. Be advised that chokidar will initiate
-watchers recursively for everything within scope of the paths that have been
-specified, so be judicious about not wasting system resources by watching much
-more than needed.
-
-## Getting started
-
-Install with npm:
-
-```sh
-npm install chokidar
-```
-
-Then `require` and use it in your code:
-
-```javascript
-const chokidar = require('chokidar');
-
-// One-liner for current directory
-chokidar.watch('.').on('all', (event, path) => {
- console.log(event, path);
-});
-```
-
-## API
-
-```javascript
-// Example of a more typical implementation structure:
-
-// Initialize watcher.
-const watcher = chokidar.watch('file, dir, glob, or array', {
- ignored: /(^|[\/\\])\../, // ignore dotfiles
- persistent: true
-});
-
-// Something to use when events are received.
-const log = console.log.bind(console);
-// Add event listeners.
-watcher
- .on('add', path => log(`File ${path} has been added`))
- .on('change', path => log(`File ${path} has been changed`))
- .on('unlink', path => log(`File ${path} has been removed`));
-
-// More possible events.
-watcher
- .on('addDir', path => log(`Directory ${path} has been added`))
- .on('unlinkDir', path => log(`Directory ${path} has been removed`))
- .on('error', error => log(`Watcher error: ${error}`))
- .on('ready', () => log('Initial scan complete. Ready for changes'))
- .on('raw', (event, path, details) => { // internal
- log('Raw event info:', event, path, details);
- });
-
-// 'add', 'addDir' and 'change' events also receive stat() results as second
-// argument when available: https://nodejs.org/api/fs.html#fs_class_fs_stats
-watcher.on('change', (path, stats) => {
- if (stats) console.log(`File ${path} changed size to ${stats.size}`);
-});
-
-// Watch new files.
-watcher.add('new-file');
-watcher.add(['new-file-2', 'new-file-3', '**/other-file*']);
-
-// Get list of actual paths being watched on the filesystem
-var watchedPaths = watcher.getWatched();
-
-// Un-watch some files.
-watcher.unwatch('new-file*');
-
-// Stop watching.
-// The method is async!
-watcher.close().then(() => console.log('closed'));
-
-// Full list of options. See below for descriptions.
-// Do not use this example!
-chokidar.watch('file', {
- persistent: true,
-
- ignored: '*.txt',
- ignoreInitial: false,
- followSymlinks: true,
- cwd: '.',
- disableGlobbing: false,
-
- usePolling: false,
- interval: 100,
- binaryInterval: 300,
- alwaysStat: false,
- depth: 99,
- awaitWriteFinish: {
- stabilityThreshold: 2000,
- pollInterval: 100
- },
-
- ignorePermissionErrors: false,
- atomic: true // or a custom 'atomicity delay', in milliseconds (default 100)
-});
-
-```
-
-`chokidar.watch(paths, [options])`
-
-* `paths` (string or array of strings). Paths to files, dirs to be watched
-recursively, or glob patterns.
- - Note: globs must not contain windows separators (`\`),
- because that's how they work by the standard —
- you'll need to replace them with forward slashes (`/`).
- - Note 2: for additional glob documentation, check out low-level
- library: [picomatch](https://github.com/micromatch/picomatch).
-* `options` (object) Options object as defined below:
-
-#### Persistence
-
-* `persistent` (default: `true`). Indicates whether the process
-should continue to run as long as files are being watched. If set to
-`false` when using `fsevents` to watch, no more events will be emitted
-after `ready`, even if the process continues to run.
-
-#### Path filtering
-
-* `ignored` ([anymatch](https://github.com/es128/anymatch)-compatible definition)
-Defines files/paths to be ignored. The whole relative or absolute path is
-tested, not just filename. If a function with two arguments is provided, it
-gets called twice per path - once with a single argument (the path), second
-time with two arguments (the path and the
-[`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats)
-object of that path).
-* `ignoreInitial` (default: `false`). If set to `false` then `add`/`addDir` events are also emitted for matching paths while
-instantiating the watching as chokidar discovers these file paths (before the `ready` event).
-* `followSymlinks` (default: `true`). When `false`, only the
-symlinks themselves will be watched for changes instead of following
-the link references and bubbling events through the link's path.
-* `cwd` (no default). The base directory from which watch `paths` are to be
-derived. Paths emitted with events will be relative to this.
-* `disableGlobbing` (default: `false`). If set to `true` then the strings passed to `.watch()` and `.add()` are treated as
-literal path names, even if they look like globs.
-
-#### Performance
-
-* `usePolling` (default: `false`).
-Whether to use fs.watchFile (backed by polling), or fs.watch. If polling
-leads to high CPU utilization, consider setting this to `false`. It is
-typically necessary to **set this to `true` to successfully watch files over
-a network**, and it may be necessary to successfully watch files in other
-non-standard situations. Setting to `true` explicitly on MacOS overrides the
-`useFsEvents` default. You may also set the CHOKIDAR_USEPOLLING env variable
-to true (1) or false (0) in order to override this option.
-* _Polling-specific settings_ (effective when `usePolling: true`)
- * `interval` (default: `100`). Interval of file system polling, in milliseconds. You may also
- set the CHOKIDAR_INTERVAL env variable to override this option.
- * `binaryInterval` (default: `300`). Interval of file system
- polling for binary files.
- ([see list of binary extensions](https://github.com/sindresorhus/binary-extensions/blob/master/binary-extensions.json))
-* `useFsEvents` (default: `true` on MacOS). Whether to use the
-`fsevents` watching interface if available. When set to `true` explicitly
-and `fsevents` is available this supercedes the `usePolling` setting. When
-set to `false` on MacOS, `usePolling: true` becomes the default.
-* `alwaysStat` (default: `false`). If relying upon the
-[`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats)
-object that may get passed with `add`, `addDir`, and `change` events, set
-this to `true` to ensure it is provided even in cases where it wasn't
-already available from the underlying watch events.
-* `depth` (default: `undefined`). If set, limits how many levels of
-subdirectories will be traversed.
-* `awaitWriteFinish` (default: `false`).
-By default, the `add` event will fire when a file first appears on disk, before
-the entire file has been written. Furthermore, in some cases some `change`
-events will be emitted while the file is being written. In some cases,
-especially when watching for large files there will be a need to wait for the
-write operation to finish before responding to a file creation or modification.
-Setting `awaitWriteFinish` to `true` (or a truthy value) will poll file size,
-holding its `add` and `change` events until the size does not change for a
-configurable amount of time. The appropriate duration setting is heavily
-dependent on the OS and hardware. For accurate detection this parameter should
-be relatively high, making file watching much less responsive.
-Use with caution.
- * *`options.awaitWriteFinish` can be set to an object in order to adjust
- timing params:*
- * `awaitWriteFinish.stabilityThreshold` (default: 2000). Amount of time in
- milliseconds for a file size to remain constant before emitting its event.
- * `awaitWriteFinish.pollInterval` (default: 100). File size polling interval, in milliseconds.
-
-#### Errors
-
-* `ignorePermissionErrors` (default: `false`). Indicates whether to watch files
-that don't have read permissions if possible. If watching fails due to `EPERM`
-or `EACCES` with this set to `true`, the errors will be suppressed silently.
-* `atomic` (default: `true` if `useFsEvents` and `usePolling` are `false`).
-Automatically filters out artifacts that occur when using editors that use
-"atomic writes" instead of writing directly to the source file. If a file is
-re-added within 100 ms of being deleted, Chokidar emits a `change` event
-rather than `unlink` then `add`. If the default of 100 ms does not work well
-for you, you can override it by setting `atomic` to a custom value, in
-milliseconds.
-
-### Methods & Events
-
-`chokidar.watch()` produces an instance of `FSWatcher`. Methods of `FSWatcher`:
-
-* `.add(path / paths)`: Add files, directories, or glob patterns for tracking.
-Takes an array of strings or just one string.
-* `.on(event, callback)`: Listen for an FS event.
-Available events: `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `ready`,
-`raw`, `error`.
-Additionally `all` is available which gets emitted with the underlying event
-name and path for every event other than `ready`, `raw`, and `error`. `raw` is internal, use it carefully.
-* `.unwatch(path / paths)`: Stop watching files, directories, or glob patterns.
-Takes an array of strings or just one string.
-* `.close()`: Removes all listeners from watched files. Asynchronous, returns Promise.
-* `.getWatched()`: Returns an object representing all the paths on the file
-system being watched by this `FSWatcher` instance. The object's keys are all the
-directories (using absolute paths unless the `cwd` option was used), and the
-values are arrays of the names of the items contained in each directory.
-
-## CLI
-
-If you need a CLI interface for your file watching, check out
-[chokidar-cli](https://github.com/kimmobrunfeldt/chokidar-cli), allowing you to
-execute a command on each change, or get a stdio stream of change events.
-
-## Install Troubleshooting
-
-* `npm WARN optional dep failed, continuing fsevents@n.n.n`
- * This message is normal part of how `npm` handles optional dependencies and is
- not indicative of a problem. Even if accompanied by other related error messages,
- Chokidar should function properly.
-
-* `TypeError: fsevents is not a constructor`
- * Update chokidar by doing `rm -rf node_modules package-lock.json yarn.lock && npm install`, or update your dependency that uses chokidar.
-
-* Chokidar is producing `ENOSP` error on Linux, like this:
- * `bash: cannot set terminal process group (-1): Inappropriate ioctl for device bash: no job control in this shell`
- `Error: watch /home/ ENOSPC`
- * This means Chokidar ran out of file handles and you'll need to increase their count by executing the following command in Terminal:
- `echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p`
-
-## Changelog
-
-For more detailed changelog, see [`full_changelog.md`](.github/full_changelog.md).
-
-- **v3.3 (Nov 2, 2019):** `FSWatcher#close()` method became async.
-- **v3.2 (Oct 1, 2019):** Improve Linux RAM usage by 50%. Race condition fixes. Windows glob fixes. Improve stability by using tight range of dependency versions.
-- **v3.1 (Sep 16, 2019):** dotfiles are no longer filtered out by default. Use `ignored` option if needed. Improve initial Linux scan time by 50%.
-- **v3 (Apr 30, 2019):** massive CPU & RAM consumption improvements; reduces deps / package size by a factor of 17x and bumps Node.js requirement to v8.16 and higher.
-- **v2 (Dec 29, 2017):** Globs are now posix-style-only; without windows support. Tons of bugfixes.
-- **v1 (Apr 7, 2015):** Glob support, symlink support, tons of bugfixes. Node 0.8+ is supported
-- **v0.1 (Apr 20, 2012):** Initial release, extracted from [Brunch](https://github.com/brunch/brunch/blob/9847a065aea300da99bd0753f90354cde9de1261/src/helpers.coffee#L66)
-
-## License
-
-MIT (c) Paul Miller (<https://paulmillr.com>), see [LICENSE](LICENSE) file.
diff --git a/assets/node_modules/chokidar/index.js b/assets/node_modules/chokidar/index.js
deleted file mode 100644
index bc5e1c5..0000000
--- a/assets/node_modules/chokidar/index.js
+++ /dev/null
@@ -1,936 +0,0 @@
-'use strict';
-
-const { EventEmitter } = require('events');
-const fs = require('fs');
-const sysPath = require('path');
-const { promisify } = require('util');
-const readdirp = require('readdirp');
-const anymatch = require('anymatch').default;
-const globParent = require('glob-parent');
-const isGlob = require('is-glob');
-const braces = require('braces');
-const normalizePath = require('normalize-path');
-
-const NodeFsHandler = require('./lib/nodefs-handler');
-const FsEventsHandler = require('./lib/fsevents-handler');
-const {
- EV_ALL,
- EV_READY,
- EV_ADD,
- EV_CHANGE,
- EV_UNLINK,
- EV_ADD_DIR,
- EV_UNLINK_DIR,
- EV_RAW,
- EV_ERROR,
-
- STR_CLOSE,
- STR_END,
-
- BACK_SLASH_RE,
- DOUBLE_SLASH_RE,
- SLASH_OR_BACK_SLASH_RE,
- DOT_RE,
- REPLACER_RE,
-
- SLASH,
- BRACE_START,
- BANG,
- ONE_DOT,
- TWO_DOTS,
- GLOBSTAR,
- SLASH_GLOBSTAR,
- ANYMATCH_OPTS,
- STRING_TYPE,
- FUNCTION_TYPE,
- EMPTY_STR,
- EMPTY_FN,
-
- isWindows,
- isMacos
-} = require('./lib/constants');
-
-const stat = promisify(fs.stat);
-const readdir = promisify(fs.readdir);
-
-/**
- * @typedef {String} Path
- * @typedef {'all'|'add'|'addDir'|'change'|'unlink'|'unlinkDir'|'raw'|'error'|'ready'} EventName
- * @typedef {'readdir'|'watch'|'add'|'remove'|'change'} ThrottleType
- */
-
-/**
- *
- * @typedef {Object} WatchHelpers
- * @property {Boolean} followSymlinks
- * @property {'stat'|'lstat'} statMethod
- * @property {Path} path
- * @property {Path} watchPath
- * @property {Function} entryPath
- * @property {Boolean} hasGlob
- * @property {Object} globFilter
- * @property {Function} filterPath
- * @property {Function} filterDir
- */
-
-const arrify = (value = []) => Array.isArray(value) ? value : [value];
-const flatten = (list, result = []) => {
- list.forEach(item => {
- if (Array.isArray(item)) {
- flatten(item, result);
- } else {
- result.push(item);
- }
- });
- return result;
-};
-
-const unifyPaths = (paths_) => {
- /**
- * @type {Array<String>}
- */
- const paths = flatten(arrify(paths_));
- if (!paths.every(p => typeof p === STRING_TYPE)) {
- throw new TypeError(`Non-string provided as watch path: ${paths}`);
- }
- return paths.map(normalizePathToUnix);
-};
-
-const toUnix = (string) => {
- let str = string.replace(BACK_SLASH_RE, SLASH);
- while (str.match(DOUBLE_SLASH_RE)) {
- str = str.replace(DOUBLE_SLASH_RE, SLASH);
- }
- return str;
-};
-
-// Our version of upath.normalize
-// TODO: this is not equal to path-normalize module - investigate why
-const normalizePathToUnix = (path) => toUnix(sysPath.normalize(toUnix(path)));
-
-const normalizeIgnored = (cwd = EMPTY_STR) => (path) => {
- if (typeof path !== STRING_TYPE) return path;
- return normalizePathToUnix(sysPath.isAbsolute(path) ? path : sysPath.join(cwd, path));
-};
-
-const getAbsolutePath = (path, cwd) => {
- if (sysPath.isAbsolute(path)) {
- return path;
- }
- if (path.startsWith(BANG)) {
- return BANG + sysPath.join(cwd, path.slice(1));
- }
- return sysPath.join(cwd, path);
-};
-
-const undef = (opts, key) => opts[key] === undefined;
-
-/**
- * Directory entry.
- * @property {Path} path
- * @property {Set<Path>} items
- */
-class DirEntry {
- /**
- * @param {Path} dir
- * @param {Function} removeWatcher
- */
- constructor(dir, removeWatcher) {
- this.path = dir;
- this._removeWatcher = removeWatcher;
- /** @type {Set<Path>} */
- this.items = new Set();
- }
-
- add(item) {
- const {items} = this;
- if (!items) return;
- if (item !== ONE_DOT && item !== TWO_DOTS) items.add(item);
- }
-
- async remove(item) {
- const {items} = this;
- if (!items) return;
- items.delete(item);
-
- if (!items.size) {
- const dir = this.path;
- try {
- await readdir(dir);
- } catch (err) {
- this._removeWatcher(sysPath.dirname(dir), sysPath.basename(dir));
- }
- }
- }
-
- has(item) {
- const {items} = this;
- if (!items) return;
- return items.has(item);
- }
-
- /**
- * @returns {Array<String>}
- */
- getChildren() {
- const {items} = this;
- if (!items) return;
- return [...items.values()];
- }
-
- dispose() {
- this.items.clear();
- delete this.path;
- delete this._removeWatcher;
- delete this.items;
- Object.freeze(this);
- }
-}
-
-const STAT_METHOD_F = 'stat';
-const STAT_METHOD_L = 'lstat';
-class WatchHelper {
- constructor(path, watchPath, follow, fsw) {
- this.fsw = fsw;
- this.path = path = path.replace(REPLACER_RE, EMPTY_STR);
- this.watchPath = watchPath;
- this.fullWatchPath = sysPath.resolve(watchPath);
- this.hasGlob = watchPath !== path;
- /** @type {object|boolean} */
- if (path === EMPTY_STR) this.hasGlob = false;
- this.globSymlink = this.hasGlob && follow ? undefined : false;
- this.globFilter = this.hasGlob ? anymatch(path, undefined, ANYMATCH_OPTS) : false;
- this.dirParts = this.getDirParts(path);
- this.dirParts.forEach((parts) => {
- if (parts.length > 1) parts.pop();
- });
- this.followSymlinks = follow;
- this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L;
- }
-
- checkGlobSymlink(entry) {
- // only need to resolve once
- // first entry should always have entry.parentDir === EMPTY_STR
- if (this.globSymlink === undefined) {
- this.globSymlink = entry.fullParentDir === this.fullWatchPath ?
- false : {realPath: entry.fullParentDir, linkPath: this.fullWatchPath};
- }
-
- if (this.globSymlink) {
- return entry.fullPath.replace(this.globSymlink.realPath, this.globSymlink.linkPath);
- }
-
- return entry.fullPath;
- }
-
- entryPath(entry) {
- return sysPath.join(this.watchPath,
- sysPath.relative(this.watchPath, this.checkGlobSymlink(entry))
- );
- }
-
- filterPath(entry) {
- const {stats} = entry;
- if (stats && stats.isSymbolicLink()) return this.filterDir(entry);
- const resolvedPath = this.entryPath(entry);
- const matchesGlob = this.hasGlob && typeof this.globFilter === FUNCTION_TYPE ?
- this.globFilter(resolvedPath) : true;
- return matchesGlob &&
- this.fsw._isntIgnored(resolvedPath, stats) &&
- this.fsw._hasReadPermissions(stats);
- }
-
- getDirParts(path) {
- if (!this.hasGlob) return [];
- const parts = [];
- const expandedPath = path.includes(BRACE_START) ? braces.expand(path) : [path];
- expandedPath.forEach((path) => {
- parts.push(sysPath.relative(this.watchPath, path).split(SLASH_OR_BACK_SLASH_RE));
- });
- return parts;
- }
-
- filterDir(entry) {
- if (this.hasGlob) {
- const entryParts = this.getDirParts(this.checkGlobSymlink(entry));
- let globstar = false;
- this.unmatchedGlob = !this.dirParts.some((parts) => {
- return parts.every((part, i) => {
- if (part === GLOBSTAR) globstar = true;
- return globstar || !entryParts[0][i] || anymatch(part, entryParts[0][i], ANYMATCH_OPTS);
- });
- });
- }
- return !this.unmatchedGlob && this.fsw._isntIgnored(this.entryPath(entry), entry.stats);
- }
-}
-
-/**
- * Watches files & directories for changes. Emitted events:
- * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error`
- *
- * new FSWatcher()
- * .add(directories)
- * .on('add', path => log('File', path, 'was added'))
- */
-class FSWatcher extends EventEmitter {
-// Not indenting methods for history sake; for now.
-constructor(_opts) {
- super();
-
- const opts = {};
- if (_opts) Object.assign(opts, _opts); // for frozen objects
-
- /** @type {Map<String, DirEntry>} */
- this._watched = new Map();
- /** @type {Map<String, Array>} */
- this._closers = new Map();
- /** @type {Set<String>} */
- this._ignoredPaths = new Set();
-
- /** @type {Map<ThrottleType, Map>} */
- this._throttled = new Map();
-
- /** @type {Map<Path, String|Boolean>} */
- this._symlinkPaths = new Map();
-
- this._streams = new Set();
- this.closed = false;
-
- // Set up default options.
- if (undef(opts, 'persistent')) opts.persistent = true;
- if (undef(opts, 'ignoreInitial')) opts.ignoreInitial = false;
- if (undef(opts, 'ignorePermissionErrors')) opts.ignorePermissionErrors = false;
- if (undef(opts, 'interval')) opts.interval = 100;
- if (undef(opts, 'binaryInterval')) opts.binaryInterval = 300;
- if (undef(opts, 'disableGlobbing')) opts.disableGlobbing = false;
- opts.enableBinaryInterval = opts.binaryInterval !== opts.interval;
-
- // Enable fsevents on OS X when polling isn't explicitly enabled.
- if (undef(opts, 'useFsEvents')) opts.useFsEvents = !opts.usePolling;
-
- // If we can't use fsevents, ensure the options reflect it's disabled.
- const canUseFsEvents = FsEventsHandler.canUse();
- if (!canUseFsEvents) opts.useFsEvents = false;
-
- // Use polling on Mac if not using fsevents.
- // Other platforms use non-polling fs_watch.
- if (undef(opts, 'usePolling') && !opts.useFsEvents) {
- opts.usePolling = isMacos;
- }
-
- // Global override (useful for end-developers that need to force polling for all
- // instances of chokidar, regardless of usage/dependency depth)
- const envPoll = process.env.CHOKIDAR_USEPOLLING;
- if (envPoll !== undefined) {
- const envLower = envPoll.toLowerCase();
-
- if (envLower === 'false' || envLower === '0') {
- opts.usePolling = false;
- } else if (envLower === 'true' || envLower === '1') {
- opts.usePolling = true;
- } else {
- opts.usePolling = !!envLower;
- }
- }
- const envInterval = process.env.CHOKIDAR_INTERVAL;
- if (envInterval) {
- opts.interval = Number.parseInt(envInterval, 10);
- }
-
- // Editor atomic write normalization enabled by default with fs.watch
- if (undef(opts, 'atomic')) opts.atomic = !opts.usePolling && !opts.useFsEvents;
- if (opts.atomic) this._pendingUnlinks = new Map();
-
- if (undef(opts, 'followSymlinks')) opts.followSymlinks = true;
-
- if (undef(opts, 'awaitWriteFinish')) opts.awaitWriteFinish = false;
- if (opts.awaitWriteFinish === true) opts.awaitWriteFinish = {};
- const awf = opts.awaitWriteFinish;
- if (awf) {
- if (!awf.stabilityThreshold) awf.stabilityThreshold = 2000;
- if (!awf.pollInterval) awf.pollInterval = 100;
- this._pendingWrites = new Map();
- }
- if (opts.ignored) opts.ignored = arrify(opts.ignored);
-
- let readyCalls = 0;
- this._emitReady = () => {
- readyCalls++;
- if (readyCalls >= this._readyCount) {
- this._emitReady = EMPTY_FN;
- this._readyEmitted = true;
- // use process.nextTick to allow time for listener to be bound
- process.nextTick(() => this.emit(EV_READY));
- }
- };
- this._emitRaw = (...args) => this.emit(EV_RAW, ...args);
- this._readyEmitted = false;
- this.options = opts;
-
- // Initialize with proper watcher.
- if (opts.useFsEvents) {
- this._fsEventsHandler = new FsEventsHandler(this);
- } else {
- this._nodeFsHandler = new NodeFsHandler(this);
- }
-
- // You’re frozen when your heart’s not open.
- Object.freeze(opts);
-}
-
-// Public methods
-
-/**
- * Adds paths to be watched on an existing FSWatcher instance
- * @param {Path|Array<Path>} paths_
- * @param {String=} _origAdd private; for handling non-existent paths to be watched
- * @param {Boolean=} _internal private; indicates a non-user add
- * @returns {FSWatcher} for chaining
- */
-add(paths_, _origAdd, _internal) {
- const {cwd, disableGlobbing} = this.options;
- this.closed = false;
- let paths = unifyPaths(paths_);
- if (cwd) {
- paths = paths.map((path) => {
- const absPath = getAbsolutePath(path, cwd);
-
- // Check `path` instead of `absPath` because the cwd portion can't be a glob
- if (disableGlobbing || !isGlob(path)) {
- return absPath;
- }
- return normalizePath(absPath);
- });
- }
-
- // set aside negated glob strings
- paths = paths.filter((path) => {
- if (path.startsWith(BANG)) {
- this._ignoredPaths.add(path.slice(1));
- return false;
- }
-
- // if a path is being added that was previously ignored, stop ignoring it
- this._ignoredPaths.delete(path);
- this._ignoredPaths.delete(path + SLASH_GLOBSTAR);
-
- // reset the cached userIgnored anymatch fn
- // to make ignoredPaths changes effective
- this._userIgnored = undefined;
-
- return true;
- });
-
- if (this.options.useFsEvents && this._fsEventsHandler) {
- if (!this._readyCount) this._readyCount = paths.length;
- if (this.options.persistent) this._readyCount *= 2;
- paths.forEach((path) => this._fsEventsHandler._addToFsEvents(path));
- } else {
- if (!this._readyCount) this._readyCount = 0;
- this._readyCount += paths.length;
- Promise.all(
- paths.map(async path => {
- const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, 0, 0, _origAdd);
- if (res) this._emitReady();
- return res;
- })
- ).then(results => {
- if (this.closed) return;
- results.filter(item => item).forEach(item => {
- this.add(sysPath.dirname(item), sysPath.basename(_origAdd || item));
- });
- });
- }
-
- return this;
-}
-
-/**
- * Close watchers or start ignoring events from specified paths.
- * @param {Path|Array<Path>} paths_ - string or array of strings, file/directory paths and/or globs
- * @returns {FSWatcher} for chaining
-*/
-unwatch(paths_) {
- if (this.closed) return this;
- const paths = unifyPaths(paths_);
- const {cwd} = this.options;
-
- paths.forEach((path) => {
- // convert to absolute path unless relative path already matches
- if (!sysPath.isAbsolute(path) && !this._closers.has(path)) {
- if (cwd) path = sysPath.join(cwd, path);
- path = sysPath.resolve(path);
- }
-
- this._closePath(path);
-
- this._ignoredPaths.add(path);
- if (this._watched.has(path)) {
- this._ignoredPaths.add(path + SLASH_GLOBSTAR);
- }
-
- // reset the cached userIgnored anymatch fn
- // to make ignoredPaths changes effective
- this._userIgnored = undefined;
- });
-
- return this;
-}
-
-/**
- * Close watchers and remove all listeners from watched paths.
- * @returns {Promise<void>}.
-*/
-close() {
- if (this.closed) return this;
- this.closed = true;
-
- // Memory management.
- this.removeAllListeners();
- const closers = [];
- this._closers.forEach(closerList => closerList.forEach(closer => {
- const promise = closer();
- if (promise instanceof Promise) closers.push(promise);
- }));
- this._streams.forEach(stream => stream.destroy());
- this._userIgnored = undefined;
- this._readyCount = 0;
- this._readyEmitted = false;
- this._watched.forEach(dirent => dirent.dispose());
- ['closers', 'watched', 'streams', 'symlinkPaths', 'throttled'].forEach(key => {
- this[`_${key}`].clear();
- });
- return closers.length ? Promise.all(closers).then(() => undefined) : Promise.resolve();
-}
-
-/**
- * Expose list of watched paths
- * @returns {Object} for chaining
-*/
-getWatched() {
- const watchList = {};
- this._watched.forEach((entry, dir) => {
- const key = this.options.cwd ? sysPath.relative(this.options.cwd, dir) : dir;
- watchList[key || ONE_DOT] = entry.getChildren().sort();
- });
- return watchList;
-}
-
-emitWithAll(event, args) {
- this.emit(...args);
- if (event !== EV_ERROR) this.emit(EV_ALL, ...args);
-}
-
-// Common helpers
-// --------------
-
-/**
- * Normalize and emit events.
- * Calling _emit DOES NOT MEAN emit() would be called!
- * @param {EventName} event Type of event
- * @param {Path} path File or directory path
- * @param {*=} val1 arguments to be passed with event
- * @param {*=} val2
- * @param {*=} val3
- * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag
- */
-async _emit(event, path, val1, val2, val3) {
- if (this.closed) return;
-
- const opts = this.options;
- if (isWindows) path = sysPath.normalize(path);
- if (opts.cwd) path = sysPath.relative(opts.cwd, path);
- /** @type Array<any> */
- const args = [event, path];
- if (val3 !== undefined) args.push(val1, val2, val3);
- else if (val2 !== undefined) args.push(val1, val2);
- else if (val1 !== undefined) args.push(val1);
-
- const awf = opts.awaitWriteFinish;
- let pw;
- if (awf && (pw = this._pendingWrites.get(path))) {
- pw.lastChange = new Date();
- return this;
- }
-
- if (opts.atomic) {
- if (event === EV_UNLINK) {
- this._pendingUnlinks.set(path, args);
- setTimeout(() => {
- this._pendingUnlinks.forEach((entry, path) => {
- this.emit(...entry);
- this.emit(EV_ALL, ...entry);
- this._pendingUnlinks.delete(path);
- });
- }, typeof opts.atomic === 'number' ? opts.atomic : 100);
- return this;
- }
- if (event === EV_ADD && this._pendingUnlinks.has(path)) {
- event = args[0] = EV_CHANGE;
- this._pendingUnlinks.delete(path);
- }
- }
-
- if (awf && (event === EV_ADD || event === EV_CHANGE) && this._readyEmitted) {
- const awfEmit = (err, stats) => {
- if (err) {
- event = args[0] = EV_ERROR;
- args[1] = err;
- this.emitWithAll(event, args);
- } else if (stats) {
- // if stats doesn't exist the file must have been deleted
- if (args.length > 2) {
- args[2] = stats;
- } else {
- args.push(stats);
- }
- this.emitWithAll(event, args);
- }
- };
-
- this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit);
- return this;
- }
-
- if (event === EV_CHANGE) {
- const isThrottled = !this._throttle(EV_CHANGE, path, 50);
- if (isThrottled) return this;
- }
-
- if (opts.alwaysStat && val1 === undefined &&
- (event === EV_ADD || event === EV_ADD_DIR || event === EV_CHANGE)
- ) {
- const fullPath = opts.cwd ? sysPath.join(opts.cwd, path) : path;
- try {
- const stats = await stat(fullPath);
- // Suppress event when fs_stat fails, to avoid sending undefined 'stat'
- if (!stats) return;
- args.push(stats);
- this.emitWithAll(event, args);
- } catch (err) {}
- } else {
- this.emitWithAll(event, args);
- }
-
- return this;
-}
-
-/**
- * Common handler for errors
- * @param {Error} error
- * @returns {Error|Boolean} The error if defined, otherwise the value of the FSWatcher instance's `closed` flag
- */
-_handleError(error) {
- const code = error && error.code;
- if (error && code !== 'ENOENT' && code !== 'ENOTDIR' &&
- (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES'))
- ) {
- this.emit(EV_ERROR, error);
- }
- return error || this.closed;
-}
-
-/**
- * Helper utility for throttling
- * @param {ThrottleType} actionType type being throttled
- * @param {Path} path being acted upon
- * @param {Number} timeout duration of time to suppress duplicate actions
- * @returns {Object|false} tracking object or false if action should be suppressed
- */
-_throttle(actionType, path, timeout) {
- if (!this._throttled.has(actionType)) {
- this._throttled.set(actionType, new Map());
- }
-
- /** @type {Map<Path, Object>} */
- const action = this._throttled.get(actionType);
- /** @type {Object} */
- const actionPath = action.get(path);
-
- if (actionPath) {
- actionPath.count++;
- return false;
- }
-
- let timeoutObject;
- const clear = () => {
- const item = action.get(path);
- const count = item ? item.count : 0;
- action.delete(path);
- clearTimeout(timeoutObject);
- if (item) clearTimeout(item.timeoutObject);
- return count;
- };
- timeoutObject = setTimeout(clear, timeout);
- const thr = {timeoutObject, clear, count: 0};
- action.set(path, thr);
- return thr;
-}
-
-_incrReadyCount() {
- return this._readyCount++;
-}
-
-/**
- * Awaits write operation to finish.
- * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback.
- * @param {Path} path being acted upon
- * @param {Number} threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished
- * @param {EventName} event
- * @param {Function} awfEmit Callback to be called when ready for event to be emitted.
- */
-_awaitWriteFinish(path, threshold, event, awfEmit) {
- let timeoutHandler;
-
- let fullPath = path;
- if (this.options.cwd && !sysPath.isAbsolute(path)) {
- fullPath = sysPath.join(this.options.cwd, path);
- }
-
- const now = new Date();
-
- const awaitWriteFinish = (prevStat) => {
- fs.stat(fullPath, (err, curStat) => {
- if (err || !this._pendingWrites.has(path)) {
- if (err && err.code !== 'ENOENT') awfEmit(err);
- return;
- }
-
- const now = Number(new Date());
-
- if (prevStat && curStat.size !== prevStat.size) {
- this._pendingWrites.get(path).lastChange = now;
- }
- const pw = this._pendingWrites.get(path);
- const df = now - pw.lastChange;
-
- if (df >= threshold) {
- this._pendingWrites.delete(path);
- awfEmit(undefined, curStat);
- } else {
- timeoutHandler = setTimeout(
- awaitWriteFinish,
- this.options.awaitWriteFinish.pollInterval,
- curStat
- );
- }
- });
- };
-
- if (!this._pendingWrites.has(path)) {
- this._pendingWrites.set(path, {
- lastChange: now,
- cancelWait: () => {
- this._pendingWrites.delete(path);
- clearTimeout(timeoutHandler);
- return event;
- }
- });
- timeoutHandler = setTimeout(
- awaitWriteFinish,
- this.options.awaitWriteFinish.pollInterval
- );
- }
-}
-
-_getGlobIgnored() {
- return [...this._ignoredPaths.values()];
-}
-
-/**
- * Determines whether user has asked to ignore this path.
- * @param {Path} path filepath or dir
- * @param {fs.Stats=} stats result of fs.stat
- * @returns {Boolean}
- */
-_isIgnored(path, stats) {
- if (this.options.atomic && DOT_RE.test(path)) return true;
- if (!this._userIgnored) {
- const {cwd} = this.options;
- const ign = this.options.ignored;
-
- const ignored = ign && ign.map(normalizeIgnored(cwd));
- const paths = arrify(ignored)
- .filter((path) => typeof path === STRING_TYPE && !isGlob(path))
- .map((path) => path + SLASH_GLOBSTAR);
- const list = this._getGlobIgnored().map(normalizeIgnored(cwd)).concat(ignored, paths);
- this._userIgnored = anymatch(list, undefined, ANYMATCH_OPTS);
- }
-
- return this._userIgnored([path, stats]);
-}
-
-_isntIgnored(path, stat) {
- return !this._isIgnored(path, stat);
-}
-
-/**
- * Provides a set of common helpers and properties relating to symlink and glob handling.
- * @param {Path} path file, directory, or glob pattern being watched
- * @param {Number=} depth at any depth > 0, this isn't a glob
- * @returns {WatchHelper} object containing helpers for this path
- */
-_getWatchHelpers(path, depth) {
- const watchPath = depth || this.options.disableGlobbing || !isGlob(path) ? path : globParent(path);
- const follow = this.options.followSymlinks;
-
- return new WatchHelper(path, watchPath, follow, this);
-}
-
-// Directory helpers
-// -----------------
-
-/**
- * Provides directory tracking objects
- * @param {String} directory path of the directory
- * @returns {DirEntry} the directory's tracking object
- */
-_getWatchedDir(directory) {
- if (!this._boundRemove) this._boundRemove = this._remove.bind(this);
- const dir = sysPath.resolve(directory);
- if (!this._watched.has(dir)) this._watched.set(dir, new DirEntry(dir, this._boundRemove));
- return this._watched.get(dir);
-}
-
-// File helpers
-// ------------
-
-/**
- * Check for read permissions.
- * Based on this answer on SO: https://stackoverflow.com/a/11781404/1358405
- * @param {fs.Stats} stats - object, result of fs_stat
- * @returns {Boolean} indicates whether the file can be read
-*/
-_hasReadPermissions(stats) {
- if (this.options.ignorePermissionErrors) return true;
-
- // stats.mode may be bigint
- const md = stats && Number.parseInt(stats.mode, 10);
- const st = md & 0o777;
- const it = Number.parseInt(st.toString(8)[0], 10);
- return Boolean(4 & it);
-}
-
-/**
- * Handles emitting unlink events for
- * files and directories, and via recursion, for
- * files and directories within directories that are unlinked
- * @param {String} directory within which the following item is located
- * @param {String} item base path of item/directory
- * @returns {void}
-*/
-_remove(directory, item) {
- // if what is being deleted is a directory, get that directory's paths
- // for recursive deleting and cleaning of watched object
- // if it is not a directory, nestedDirectoryChildren will be empty array
- const path = sysPath.join(directory, item);
- const fullPath = sysPath.resolve(path);
- const isDirectory = this._watched.has(path) || this._watched.has(fullPath);
-
- // prevent duplicate handling in case of arriving here nearly simultaneously
- // via multiple paths (such as _handleFile and _handleDir)
- if (!this._throttle('remove', path, 100)) return;
-
- // if the only watched file is removed, watch for its return
- if (!isDirectory && !this.options.useFsEvents && this._watched.size === 1) {
- this.add(directory, item, true);
- }
-
- // This will create a new entry in the watched object in either case
- // so we got to do the directory check beforehand
- const wp = this._getWatchedDir(path);
- const nestedDirectoryChildren = wp.getChildren();
-
- // Recursively remove children directories / files.
- nestedDirectoryChildren.forEach(nested => this._remove(path, nested));
-
- // Check if item was on the watched list and remove it
- const parent = this._getWatchedDir(directory);
- const wasTracked = parent.has(item);
- parent.remove(item);
-
- // If we wait for this file to be fully written, cancel the wait.
- let relPath = path;
- if (this.options.cwd) relPath = sysPath.relative(this.options.cwd, path);
- if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) {
- const event = this._pendingWrites.get(relPath).cancelWait();
- if (event === EV_ADD) return;
- }
-
- // The Entry will either be a directory that just got removed
- // or a bogus entry to a file, in either case we have to remove it
- this._watched.delete(path);
- this._watched.delete(fullPath);
- const eventName = isDirectory ? EV_UNLINK_DIR : EV_UNLINK;
- if (wasTracked && !this._isIgnored(path)) this._emit(eventName, path);
-
- // Avoid conflicts if we later create another file with the same name
- if (!this.options.useFsEvents) {
- this._closePath(path);
- }
-}
-
-/**
- *
- * @param {Path} path
- */
-_closePath(path) {
- const closers = this._closers.get(path);
- if (!closers) return;
- closers.forEach(closer => closer());
- this._closers.delete(path);
- const dir = sysPath.dirname(path);
- this._getWatchedDir(dir).remove(sysPath.basename(path));
-}
-
-/**
- *
- * @param {Path} path
- * @param {Function} closer
- */
-_addPathCloser(path, closer) {
- if (!closer) return;
- let list = this._closers.get(path);
- if (!list) {
- list = [];
- this._closers.set(path, list);
- }
- list.push(closer);
-}
-
-_readdirp(root, opts) {
- if (this.closed) return;
- const options = {type: EV_ALL, alwaysStat: true, lstat: true, ...opts};
- let stream = readdirp(root, options);
- this._streams.add(stream);
- stream.once(STR_CLOSE, () => {
- stream = undefined;
- });
- stream.once(STR_END, () => {
- if (stream) {
- this._streams.delete(stream);
- stream = undefined;
- }
- });
- return stream;
-}
-
-}
-
-// Export FSWatcher class
-exports.FSWatcher = FSWatcher;
-
-/**
- * Instantiates watcher with paths to be tracked.
- * @param {String|Array<String>} paths file/directory paths and/or globs
- * @param {Object=} options chokidar opts
- * @returns an instance of FSWatcher for chaining.
- */
-const watch = (paths, options) => {
- const watcher = new FSWatcher(options);
- watcher.add(paths);
- return watcher;
-};
-
-exports.watch = watch;
diff --git a/assets/node_modules/chokidar/lib/constants.js b/assets/node_modules/chokidar/lib/constants.js
deleted file mode 100644
index f12924f..0000000
--- a/assets/node_modules/chokidar/lib/constants.js
+++ /dev/null
@@ -1,60 +0,0 @@
-'use strict';
-
-const {sep} = require('path');
-const {platform} = process;
-
-exports.EV_ALL = 'all';
-exports.EV_READY = 'ready';
-exports.EV_ADD = 'add';
-exports.EV_CHANGE = 'change';
-exports.EV_ADD_DIR = 'addDir';
-exports.EV_UNLINK = 'unlink';
-exports.EV_UNLINK_DIR = 'unlinkDir';
-exports.EV_RAW = 'raw';
-exports.EV_ERROR = 'error';
-
-exports.STR_DATA = 'data';
-exports.STR_END = 'end';
-exports.STR_CLOSE = 'close';
-
-exports.FSEVENT_CREATED = 'created';
-exports.FSEVENT_MODIFIED = 'modified';
-exports.FSEVENT_DELETED = 'deleted';
-exports.FSEVENT_MOVED = 'moved';
-exports.FSEVENT_CLONED = 'cloned';
-exports.FSEVENT_UNKNOWN = 'unknown';
-exports.FSEVENT_TYPE_DIRECTORY = 'directory';
-exports.FSEVENT_TYPE_SYMLINK = 'symlink';
-
-exports.KEY_LISTENERS = 'listeners';
-exports.KEY_ERR = 'errHandlers';
-exports.KEY_RAW = 'rawEmitters';
-exports.HANDLER_KEYS = [exports.KEY_LISTENERS, exports.KEY_ERR, exports.KEY_RAW];
-
-exports.DOT_SLASH = `.${sep}`;
-
-exports.BACK_SLASH_RE = /\\/g;
-exports.DOUBLE_SLASH_RE = /\/\//;
-exports.SLASH_OR_BACK_SLASH_RE = /[/\\]/;
-exports.DOT_RE = /\..*\.(sw[px])$|~$|\.subl.*\.tmp/;
-exports.REPLACER_RE = /^\.[/\\]/;
-
-exports.SLASH = '/';
-exports.BRACE_START = '{';
-exports.BANG = '!';
-exports.ONE_DOT = '.';
-exports.TWO_DOTS = '..';
-exports.STAR = '*';
-exports.GLOBSTAR = '**';
-exports.ROOT_GLOBSTAR = '/**/*';
-exports.SLASH_GLOBSTAR = '/**';
-exports.DIR_SUFFIX = 'Dir';
-exports.ANYMATCH_OPTS = {dot: true};
-exports.STRING_TYPE = 'string';
-exports.FUNCTION_TYPE = 'function';
-exports.EMPTY_STR = '';
-exports.EMPTY_FN = () => {};
-exports.IDENTITY_FN = val => val;
-
-exports.isWindows = platform === 'win32';
-exports.isMacos = platform === 'darwin';
diff --git a/assets/node_modules/chokidar/lib/fsevents-handler.js b/assets/node_modules/chokidar/lib/fsevents-handler.js
deleted file mode 100644
index 6492bb0..0000000
--- a/assets/node_modules/chokidar/lib/fsevents-handler.js
+++ /dev/null
@@ -1,516 +0,0 @@
-'use strict';
-
-const fs = require('fs');
-const sysPath = require('path');
-const { promisify } = require('util');
-
-let fsevents;
-try {
- fsevents = require('fsevents');
-} catch (error) {
- if (process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR) console.error(error);
-}
-
-if (fsevents) {
- // TODO: real check
- const mtch = process.version.match(/v(\d+)\.(\d+)/);
- if (mtch && mtch[1] && mtch[2]) {
- const maj = Number.parseInt(mtch[1], 10);
- const min = Number.parseInt(mtch[2], 10);
- if (maj === 8 && min < 16) {
- fsevents = undefined;
- }
- }
-}
-
-const {
- EV_ADD,
- EV_CHANGE,
- EV_ADD_DIR,
- EV_UNLINK,
- EV_ERROR,
- STR_DATA,
- STR_END,
- FSEVENT_CREATED,
- FSEVENT_MODIFIED,
- FSEVENT_DELETED,
- FSEVENT_MOVED,
- // FSEVENT_CLONED,
- FSEVENT_UNKNOWN,
- FSEVENT_TYPE_DIRECTORY,
- FSEVENT_TYPE_SYMLINK,
-
- ROOT_GLOBSTAR,
- DIR_SUFFIX,
- DOT_SLASH,
- FUNCTION_TYPE,
- EMPTY_FN,
- IDENTITY_FN
-} = require('./constants');
-const FS_MODE_READ = 'r';
-
-const Depth = (value) => isNaN(value) ? {} : {depth: value};
-
-const stat = promisify(fs.stat);
-const open = promisify(fs.open);
-const close = promisify(fs.close);
-const lstat = promisify(fs.lstat);
-const realpath = promisify(fs.realpath);
-
-const statMethods = { stat, lstat };
-
-/**
- * @typedef {String} Path
- */
-
-/**
- * @typedef {Object} FsEventsWatchContainer
- * @property {Set<Function>} listeners
- * @property {Function} rawEmitter
- * @property {{stop: Function}} watcher
- */
-
-// fsevents instance helper functions
-/**
- * Object to hold per-process fsevents instances (may be shared across chokidar FSWatcher instances)
- * @type {Map<Path,FsEventsWatchContainer>}
- */
-const FSEventsWatchers = new Map();
-
-// Threshold of duplicate path prefixes at which to start
-// consolidating going forward
-const consolidateThreshhold = 10;
-
-const wrongEventFlags = new Set([
- 69888, 70400, 71424, 72704, 73472, 131328, 131840, 262912
-]);
-
-/**
- * Instantiates the fsevents interface
- * @param {Path} path path to be watched
- * @param {Function} callback called when fsevents is bound and ready
- * @returns {{stop: Function}} new fsevents instance
- */
-const createFSEventsInstance = (path, callback) => {
- const stop = fsevents.watch(path, callback);
- return {stop};
-};
-
-/**
- * Instantiates the fsevents interface or binds listeners to an existing one covering
- * the same file tree.
- * @param {Path} path - to be watched
- * @param {Path} realPath - real path for symlinks
- * @param {Function} listener - called when fsevents emits events
- * @param {Function} rawEmitter - passes data to listeners of the 'raw' event
- * @returns {Function} closer
- */
-function setFSEventsListener(path, realPath, listener, rawEmitter, fsw) {
- let watchPath = sysPath.extname(path) ? sysPath.dirname(path) : path;
- const parentPath = sysPath.dirname(watchPath);
- let cont = FSEventsWatchers.get(watchPath);
-
- // If we've accumulated a substantial number of paths that
- // could have been consolidated by watching one directory
- // above the current one, create a watcher on the parent
- // path instead, so that we do consolidate going forward.
- if (couldConsolidate(parentPath)) {
- watchPath = parentPath;
- }
-
- const resolvedPath = sysPath.resolve(path);
- const hasSymlink = resolvedPath !== realPath;
-
- const filteredListener = (fullPath, flags, info) => {
- if (hasSymlink) fullPath = fullPath.replace(realPath, resolvedPath);
- if (
- fullPath === resolvedPath ||
- !fullPath.indexOf(resolvedPath + sysPath.sep)
- ) listener(fullPath, flags, info);
- };
-
- // check if there is already a watcher on a parent path
- // modifies `watchPath` to the parent path when it finds a match
- let watchedParent = false;
- for (const watchedPath of FSEventsWatchers.keys()) {
- if (realPath.indexOf(sysPath.resolve(watchedPath) + sysPath.sep) === 0) {
- watchPath = watchedPath;
- cont = FSEventsWatchers.get(watchPath);
- watchedParent = true;
- break;
- }
- }
-
- if (cont || watchedParent) {
- cont.listeners.add(filteredListener);
- } else {
- cont = {
- listeners: new Set([filteredListener]),
- rawEmitter,
- watcher: createFSEventsInstance(watchPath, (fullPath, flags) => {
- if (fsw.closed) return;
- const info = fsevents.getInfo(fullPath, flags);
- cont.listeners.forEach(list => {
- list(fullPath, flags, info);
- });
-
- cont.rawEmitter(info.event, fullPath, info);
- })
- };
- FSEventsWatchers.set(watchPath, cont);
- }
-
- // removes this instance's listeners and closes the underlying fsevents
- // instance if there are no more listeners left
- return () => {
- const lst = cont.listeners;
-
- lst.delete(filteredListener);
- if (!lst.size) {
- FSEventsWatchers.delete(watchPath);
- if (cont.watcher) return cont.watcher.stop().then(() => {
- cont.rawEmitter = cont.watcher = undefined;
- Object.freeze(cont);
- });
- }
- };
-}
-
-// Decide whether or not we should start a new higher-level
-// parent watcher
-const couldConsolidate = (path) => {
- let count = 0;
- for (const watchPath of FSEventsWatchers.keys()) {
- if (watchPath.indexOf(path) === 0) {
- count++;
- if (count >= consolidateThreshhold) {
- return true;
- }
- }
- }
-
- return false;
-};
-
-// returns boolean indicating whether fsevents can be used
-const canUse = () => fsevents && FSEventsWatchers.size < 128;
-
-// determines subdirectory traversal levels from root to path
-const calcDepth = (path, root) => {
- let i = 0;
- while (!path.indexOf(root) && (path = sysPath.dirname(path)) !== root) i++;
- return i;
-};
-
-/**
- * @mixin
- */
-class FsEventsHandler {
-
-/**
- * @param {import('../index').FSWatcher} fsw
- */
-constructor(fsw) {
- this.fsw = fsw;
-}
-checkIgnored(path, stats) {
- const ipaths = this.fsw._ignoredPaths;
- if (this.fsw._isIgnored(path, stats)) {
- ipaths.add(path);
- if (stats && stats.isDirectory()) {
- ipaths.add(path + ROOT_GLOBSTAR);
- }
- return true;
- }
-
- ipaths.delete(path);
- ipaths.delete(path + ROOT_GLOBSTAR);
-}
-
-addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts) {
- const event = watchedDir.has(item) ? EV_CHANGE : EV_ADD;
- this.handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts);
-}
-
-async checkFd(path, fullPath, realPath, parent, watchedDir, item, info, opts) {
- try {
- const fd = await open(path, FS_MODE_READ);
- if (this.fsw.closed) return;
- await close(fd);
- if (this.fsw.closed) return;
- this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);
- } catch (error) {
- if (error.code === 'EACCES') {
- this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);
- } else {
- this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);
- }
- }
-}
-
-handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts) {
- if (this.fsw.closed || this.checkIgnored(path)) return;
-
- if (event === EV_UNLINK) {
- // suppress unlink events on never before seen files
- if (info.type === FSEVENT_TYPE_DIRECTORY || watchedDir.has(item)) {
- this.fsw._remove(parent, item);
- }
- } else {
- if (event === EV_ADD) {
- // track new directories
- if (info.type === FSEVENT_TYPE_DIRECTORY) this.fsw._getWatchedDir(path);
-
- if (info.type === FSEVENT_TYPE_SYMLINK && opts.followSymlinks) {
- // push symlinks back to the top of the stack to get handled
- const curDepth = opts.depth === undefined ?
- undefined : calcDepth(fullPath, realPath) + 1;
- return this._addToFsEvents(path, false, true, curDepth);
- }
-
- // track new paths
- // (other than symlinks being followed, which will be tracked soon)
- this.fsw._getWatchedDir(parent).add(item);
- }
- /**
- * @type {'add'|'addDir'|'unlink'|'unlinkDir'}
- */
- const eventName = info.type === FSEVENT_TYPE_DIRECTORY ? event + DIR_SUFFIX : event;
- this.fsw._emit(eventName, path);
- if (eventName === EV_ADD_DIR) this._addToFsEvents(path, false, true);
- }
-}
-
-/**
- * Handle symlinks encountered during directory scan
- * @param {String} watchPath - file/dir path to be watched with fsevents
- * @param {String} realPath - real path (in case of symlinks)
- * @param {Function} transform - path transformer
- * @param {Function} globFilter - path filter in case a glob pattern was provided
- * @returns {Function} closer for the watcher instance
-*/
-_watchWithFsEvents(watchPath, realPath, transform, globFilter) {
- if (this.fsw.closed) return;
- if (this.fsw._isIgnored(watchPath)) return;
- const opts = this.fsw.options;
- const watchCallback = async (fullPath, flags, info) => {
- if (this.fsw.closed) return;
- if (
- opts.depth !== undefined &&
- calcDepth(fullPath, realPath) > opts.depth
- ) return;
- const path = transform(sysPath.join(
- watchPath, sysPath.relative(watchPath, fullPath)
- ));
- if (globFilter && !globFilter(path)) return;
- // ensure directories are tracked
- const parent = sysPath.dirname(path);
- const item = sysPath.basename(path);
- const watchedDir = this.fsw._getWatchedDir(
- info.type === FSEVENT_TYPE_DIRECTORY ? path : parent
- );
-
- // correct for wrong events emitted
- if (wrongEventFlags.has(flags) || info.event === FSEVENT_UNKNOWN) {
- if (typeof opts.ignored === FUNCTION_TYPE) {
- let stats;
- try {
- stats = await stat(path);
- } catch (error) {}
- if (this.fsw.closed) return;
- if (this.checkIgnored(path, stats)) return;
- if (stats) {
- this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);
- } else {
- this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);
- }
- } else {
- this.checkFd(path, fullPath, realPath, parent, watchedDir, item, info, opts);
- }
- } else {
- switch (info.event) {
- case FSEVENT_CREATED:
- case FSEVENT_MODIFIED:
- return this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);
- case FSEVENT_DELETED:
- case FSEVENT_MOVED:
- return this.checkFd(path, fullPath, realPath, parent, watchedDir, item, info, opts);
- }
- }
- };
-
- const closer = setFSEventsListener(
- watchPath,
- realPath,
- watchCallback,
- this.fsw._emitRaw,
- this.fsw
- );
-
- this.fsw._emitReady();
- return closer;
-}
-
-/**
- * Handle symlinks encountered during directory scan
- * @param {String} linkPath path to symlink
- * @param {String} fullPath absolute path to the symlink
- * @param {Function} transform pre-existing path transformer
- * @param {Number} curDepth level of subdirectories traversed to where symlink is
- * @returns {Promise<void>}
- */
-async _handleFsEventsSymlink(linkPath, fullPath, transform, curDepth) {
- // don't follow the same symlink more than once
- if (this.fsw.closed || this.fsw._symlinkPaths.has(fullPath)) return;
-
- this.fsw._symlinkPaths.set(fullPath, true);
- this.fsw._incrReadyCount();
-
- try {
- const linkTarget = await realpath(linkPath);
- if (this.fsw.closed) return;
- if (this.fsw._isIgnored(linkTarget)) {
- return this.fsw._emitReady();
- }
-
- this.fsw._incrReadyCount();
-
- // add the linkTarget for watching with a wrapper for transform
- // that causes emitted paths to incorporate the link's path
- this._addToFsEvents(linkTarget || linkPath, (path) => {
- let aliasedPath = linkPath;
- if (linkTarget && linkTarget !== DOT_SLASH) {
- aliasedPath = path.replace(linkTarget, linkPath);
- } else if (path !== DOT_SLASH) {
- aliasedPath = sysPath.join(linkPath, path);
- }
- return transform(aliasedPath);
- }, false, curDepth);
- } catch(error) {
- if (this.fsw._handleError(error)) {
- return this.fsw._emitReady();
- }
- }
-}
-
-/**
- *
- * @param {Path} newPath
- * @param {fs.Stats} stats
- */
-emitAdd(newPath, stats, processPath, opts, forceAdd) {
- const pp = processPath(newPath);
- const isDir = stats.isDirectory();
- const dirObj = this.fsw._getWatchedDir(sysPath.dirname(pp));
- const base = sysPath.basename(pp);
-
- // ensure empty dirs get tracked
- if (isDir) this.fsw._getWatchedDir(pp);
- if (dirObj.has(base)) return;
- dirObj.add(base);
-
- if (!opts.ignoreInitial || forceAdd === true) {
- this.fsw._emit(isDir ? EV_ADD_DIR : EV_ADD, pp, stats);
- }
-}
-
-initWatch(realPath, path, wh, processPath) {
- if (this.fsw.closed) return;
- const closer = this._watchWithFsEvents(
- wh.watchPath,
- sysPath.resolve(realPath || wh.watchPath),
- processPath,
- wh.globFilter
- );
- this.fsw._addPathCloser(path, closer);
-}
-
-/**
- * Handle added path with fsevents
- * @param {String} path file/dir path or glob pattern
- * @param {Function|Boolean=} transform converts working path to what the user expects
- * @param {Boolean=} forceAdd ensure add is emitted
- * @param {Number=} priorDepth Level of subdirectories already traversed.
- * @returns {Promise<void>}
- */
-async _addToFsEvents(path, transform, forceAdd, priorDepth) {
- if (this.fsw.closed) {
- return;
- }
- const opts = this.fsw.options;
- const processPath = typeof transform === FUNCTION_TYPE ? transform : IDENTITY_FN;
-
- const wh = this.fsw._getWatchHelpers(path);
-
- // evaluate what is at the path we're being asked to watch
- try {
- const stats = await statMethods[wh.statMethod](wh.watchPath);
- if (this.fsw.closed) return;
- if (this.fsw._isIgnored(wh.watchPath, stats)) {
- throw null;
- }
- if (stats.isDirectory()) {
- // emit addDir unless this is a glob parent
- if (!wh.globFilter) this.emitAdd(processPath(path), stats, processPath, opts, forceAdd);
-
- // don't recurse further if it would exceed depth setting
- if (priorDepth && priorDepth > opts.depth) return;
-
- // scan the contents of the dir
- this.fsw._readdirp(wh.watchPath, {
- fileFilter: entry => wh.filterPath(entry),
- directoryFilter: entry => wh.filterDir(entry),
- ...Depth(opts.depth - (priorDepth || 0))
- }).on(STR_DATA, (entry) => {
- // need to check filterPath on dirs b/c filterDir is less restrictive
- if (this.fsw.closed) {
- return;
- }
- if (entry.stats.isDirectory() && !wh.filterPath(entry)) return;
-
- const joinedPath = sysPath.join(wh.watchPath, entry.path);
- const {fullPath} = entry;
-
- if (wh.followSymlinks && entry.stats.isSymbolicLink()) {
- // preserve the current depth here since it can't be derived from
- // real paths past the symlink
- const curDepth = opts.depth === undefined ?
- undefined : calcDepth(joinedPath, sysPath.resolve(wh.watchPath)) + 1;
-
- this._handleFsEventsSymlink(joinedPath, fullPath, processPath, curDepth);
- } else {
- this.emitAdd(joinedPath, entry.stats, processPath, opts, forceAdd);
- }
- }).on(EV_ERROR, EMPTY_FN).on(STR_END, () => {
- this.fsw._emitReady();
- });
- } else {
- this.emitAdd(wh.watchPath, stats, processPath, opts, forceAdd);
- this.fsw._emitReady();
- }
- } catch (error) {
- if (!error || this.fsw._handleError(error)) {
- // TODO: Strange thing: "should not choke on an ignored watch path" will be failed without 2 ready calls -__-
- this.fsw._emitReady();
- this.fsw._emitReady();
- }
- }
-
- if (opts.persistent && forceAdd !== true) {
- if (typeof transform === FUNCTION_TYPE) {
- // realpath has already been resolved
- this.initWatch(undefined, path, wh, processPath);
- } else {
- let realPath;
- try {
- realPath = await realpath(wh.watchPath);
- } catch (e) {}
- this.initWatch(realPath, path, wh, processPath);
- }
- }
-}
-
-}
-
-module.exports = FsEventsHandler;
-module.exports.canUse = canUse;
diff --git a/assets/node_modules/chokidar/lib/nodefs-handler.js b/assets/node_modules/chokidar/lib/nodefs-handler.js
deleted file mode 100644
index 2a61c9f..0000000
--- a/assets/node_modules/chokidar/lib/nodefs-handler.js
+++ /dev/null
@@ -1,637 +0,0 @@
-'use strict';
-
-const fs = require('fs');
-const sysPath = require('path');
-const { promisify } = require('util');
-const isBinaryPath = require('is-binary-path');
-const {
- isWindows,
- EMPTY_FN,
- EMPTY_STR,
- KEY_LISTENERS,
- KEY_ERR,
- KEY_RAW,
- HANDLER_KEYS,
- EV_CHANGE,
- EV_ADD,
- EV_ADD_DIR,
- EV_ERROR,
- STR_DATA,
- STR_END,
- BRACE_START,
- STAR
-} = require('./constants');
-
-const THROTTLE_MODE_WATCH = 'watch';
-
-const open = promisify(fs.open);
-const stat = promisify(fs.stat);
-const lstat = promisify(fs.lstat);
-const close = promisify(fs.close);
-const fsrealpath = promisify(fs.realpath);
-
-const statMethods = { lstat, stat };
-
-// TODO: emit errors properly. Example: EMFILE on Macos.
-const foreach = (val, fn) => {
- if (val instanceof Set) {
- val.forEach(fn);
- } else {
- fn(val);
- }
-};
-
-const addAndConvert = (main, prop, item) => {
- let container = main[prop];
- if (!(container instanceof Set)) {
- main[prop] = container = new Set([container]);
- }
- container.add(item);
-};
-
-const clearItem = cont => key => {
- const set = cont[key];
- if (set instanceof Set) {
- set.clear();
- } else {
- delete cont[key];
- }
-};
-
-const delFromSet = (main, prop, item) => {
- const container = main[prop];
- if (container instanceof Set) {
- container.delete(item);
- } else if (container === item) {
- delete main[prop];
- }
-};
-
-const isEmptySet = (val) => val instanceof Set ? val.size === 0 : !val;
-
-/**
- * @typedef {String} Path
- */
-
-// fs_watch helpers
-
-// object to hold per-process fs_watch instances
-// (may be shared across chokidar FSWatcher instances)
-
-/**
- * @typedef {Object} FsWatchContainer
- * @property {Set} listeners
- * @property {Set} errHandlers
- * @property {Set} rawEmitters
- * @property {fs.FSWatcher=} watcher
- * @property {Boolean=} watcherUnusable
- */
-
-/**
- * @type {Map<String,FsWatchContainer>}
- */
-const FsWatchInstances = new Map();
-
-/**
- * Instantiates the fs_watch interface
- * @param {String} path to be watched
- * @param {Object} options to be passed to fs_watch
- * @param {Function} listener main event handler
- * @param {Function} errHandler emits info about errors
- * @param {Function} emitRaw emits raw event data
- * @returns {fs.FSWatcher} new fsevents instance
- */
-function createFsWatchInstance(path, options, listener, errHandler, emitRaw) {
- const handleEvent = (rawEvent, evPath) => {
- listener(path);
- emitRaw(rawEvent, evPath, {watchedPath: path});
-
- // emit based on events occurring for files from a directory's watcher in
- // case the file's watcher misses it (and rely on throttling to de-dupe)
- if (evPath && path !== evPath) {
- fsWatchBroadcast(
- sysPath.resolve(path, evPath), KEY_LISTENERS, sysPath.join(path, evPath)
- );
- }
- };
- try {
- return fs.watch(path, options, handleEvent);
- } catch (error) {
- errHandler(error);
- }
-}
-
-/**
- * Helper for passing fs_watch event data to a collection of listeners
- * @param {Path} fullPath absolute path bound to fs_watch instance
- * @param {String} type listener type
- * @param {*=} val1 arguments to be passed to listeners
- * @param {*=} val2
- * @param {*=} val3
- */
-const fsWatchBroadcast = (fullPath, type, val1, val2, val3) => {
- const cont = FsWatchInstances.get(fullPath);
- if (!cont) return;
- foreach(cont[type], (listener) => {
- listener(val1, val2, val3);
- });
-};
-
-/**
- * Instantiates the fs_watch interface or binds listeners
- * to an existing one covering the same file system entry
- * @param {String} path
- * @param {String} fullPath absolute path
- * @param {Object} options to be passed to fs_watch
- * @param {Object} handlers container for event listener functions
- */
-const setFsWatchListener = (path, fullPath, options, handlers) => {
- const {listener, errHandler, rawEmitter} = handlers;
- let cont = FsWatchInstances.get(fullPath);
-
- /** @type {fs.FSWatcher=} */
- let watcher;
- if (!options.persistent) {
- watcher = createFsWatchInstance(
- path, options, listener, errHandler, rawEmitter
- );
- return watcher.close.bind(watcher);
- }
- if (cont) {
- addAndConvert(cont, KEY_LISTENERS, listener);
- addAndConvert(cont, KEY_ERR, errHandler);
- addAndConvert(cont, KEY_RAW, rawEmitter);
- } else {
- watcher = createFsWatchInstance(
- path,
- options,
- fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS),
- errHandler, // no need to use broadcast here
- fsWatchBroadcast.bind(null, fullPath, KEY_RAW)
- );
- if (!watcher) return;
- watcher.on(EV_ERROR, async (error) => {
- const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR);
- cont.watcherUnusable = true; // documented since Node 10.4.1
- // Workaround for https://github.com/joyent/node/issues/4337
- if (isWindows && error.code === 'EPERM') {
- try {
- const fd = await open(path, 'r');
- await close(fd);
- broadcastErr(error);
- } catch (err) {}
- } else {
- broadcastErr(error);
- }
- });
- cont = {
- listeners: listener,
- errHandlers: errHandler,
- rawEmitters: rawEmitter,
- watcher
- };
- FsWatchInstances.set(fullPath, cont);
- }
- // const index = cont.listeners.indexOf(listener);
-
- // removes this instance's listeners and closes the underlying fs_watch
- // instance if there are no more listeners left
- return () => {
- delFromSet(cont, KEY_LISTENERS, listener);
- delFromSet(cont, KEY_ERR, errHandler);
- delFromSet(cont, KEY_RAW, rawEmitter);
- if (isEmptySet(cont.listeners)) {
- // Check to protect against issue gh-730.
- // if (cont.watcherUnusable) {
- cont.watcher.close();
- // }
- FsWatchInstances.delete(fullPath);
- HANDLER_KEYS.forEach(clearItem(cont));
- cont.watcher = undefined;
- Object.freeze(cont);
- }
- };
-};
-
-// fs_watchFile helpers
-
-// object to hold per-process fs_watchFile instances
-// (may be shared across chokidar FSWatcher instances)
-const FsWatchFileInstances = new Map();
-
-/**
- * Instantiates the fs_watchFile interface or binds listeners
- * to an existing one covering the same file system entry
- * @param {String} path to be watched
- * @param {String} fullPath absolute path
- * @param {Object} options options to be passed to fs_watchFile
- * @param {Object} handlers container for event listener functions
- * @returns {Function} closer
- */
-const setFsWatchFileListener = (path, fullPath, options, handlers) => {
- const {listener, rawEmitter} = handlers;
- let cont = FsWatchFileInstances.get(fullPath);
-
- /* eslint-disable no-unused-vars, prefer-destructuring */
- let listeners = new Set();
- let rawEmitters = new Set();
-
- const copts = cont && cont.options;
- if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) {
- // "Upgrade" the watcher to persistence or a quicker interval.
- // This creates some unlikely edge case issues if the user mixes
- // settings in a very weird way, but solving for those cases
- // doesn't seem worthwhile for the added complexity.
- listeners = cont.listeners;
- rawEmitters = cont.rawEmitters;
- fs.unwatchFile(fullPath);
- cont = undefined;
- }
-
- /* eslint-enable no-unused-vars, prefer-destructuring */
-
- if (cont) {
- addAndConvert(cont, KEY_LISTENERS, listener);
- addAndConvert(cont, KEY_RAW, rawEmitter);
- } else {
- // TODO
- // listeners.add(listener);
- // rawEmitters.add(rawEmitter);
- cont = {
- listeners: listener,
- rawEmitters: rawEmitter,
- options,
- watcher: fs.watchFile(fullPath, options, (curr, prev) => {
- foreach(cont.rawEmitters, (rawEmitter) => {
- rawEmitter(EV_CHANGE, fullPath, {curr, prev});
- });
- const currmtime = curr.mtimeMs;
- if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) {
- foreach(cont.listeners, (listener) => listener(path, curr));
- }
- })
- };
- FsWatchFileInstances.set(fullPath, cont);
- }
- // const index = cont.listeners.indexOf(listener);
-
- // Removes this instance's listeners and closes the underlying fs_watchFile
- // instance if there are no more listeners left.
- return () => {
- delFromSet(cont, KEY_LISTENERS, listener);
- delFromSet(cont, KEY_RAW, rawEmitter);
- if (isEmptySet(cont.listeners)) {
- FsWatchFileInstances.delete(fullPath);
- fs.unwatchFile(fullPath);
- cont.options = cont.watcher = undefined;
- Object.freeze(cont);
- }
- };
-};
-
-/**
- * @mixin
- */
-class NodeFsHandler {
-
-/**
- * @param {import("../index").FSWatcher} fsW
- */
-constructor(fsW) {
- this.fsw = fsW;
- this._boundHandleError = (error) => fsW._handleError(error);
-}
-
-/**
- * Watch file for changes with fs_watchFile or fs_watch.
- * @param {String} path to file or dir
- * @param {Function} listener on fs change
- * @returns {Function} closer for the watcher instance
- */
-_watchWithNodeFs(path, listener) {
- const opts = this.fsw.options;
- const directory = sysPath.dirname(path);
- const basename = sysPath.basename(path);
- const parent = this.fsw._getWatchedDir(directory);
- parent.add(basename);
- const absolutePath = sysPath.resolve(path);
- const options = {persistent: opts.persistent};
- if (!listener) listener = EMPTY_FN;
-
- let closer;
- if (opts.usePolling) {
- options.interval = opts.enableBinaryInterval && isBinaryPath(basename) ?
- opts.binaryInterval : opts.interval;
- closer = setFsWatchFileListener(path, absolutePath, options, {
- listener,
- rawEmitter: this.fsw._emitRaw
- });
- } else {
- closer = setFsWatchListener(path, absolutePath, options, {
- listener,
- errHandler: this._boundHandleError,
- rawEmitter: this.fsw._emitRaw
- });
- }
- return closer;
-}
-
-/**
- * Watch a file and emit add event if warranted.
- * @param {Path} file Path
- * @param {fs.Stats} stats result of fs_stat
- * @param {Boolean} initialAdd was the file added at watch instantiation?
- * @returns {Function} closer for the watcher instance
- */
-_handleFile(file, stats, initialAdd) {
- if (this.fsw.closed) {
- return;
- }
- const dirname = sysPath.dirname(file);
- const basename = sysPath.basename(file);
- const parent = this.fsw._getWatchedDir(dirname);
- // stats is always present
- let prevStats = stats;
-
- // if the file is already being watched, do nothing
- if (parent.has(basename)) return;
-
- // kick off the watcher
- const closer = this._watchWithNodeFs(file, async (path, newStats) => {
- if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return;
- if (!newStats || newStats.mtimeMs === 0) {
- try {
- const newStats = await stat(file);
- if (this.fsw.closed) return;
- // Check that change event was not fired because of changed only accessTime.
- const at = newStats.atimeMs;
- const mt = newStats.mtimeMs;
- if (!at || at <= mt || mt !== prevStats.mtimeMs) {
- this.fsw._emit(EV_CHANGE, file, newStats);
- }
- prevStats = newStats;
- } catch (error) {
- // Fix issues where mtime is null but file is still present
- this.fsw._remove(dirname, basename);
- }
- // add is about to be emitted if file not already tracked in parent
- } else if (parent.has(basename)) {
- // Check that change event was not fired because of changed only accessTime.
- const at = newStats.atimeMs;
- const mt = newStats.mtimeMs;
- if (!at || at <= mt || mt !== prevStats.mtimeMs) {
- this.fsw._emit(EV_CHANGE, file, newStats);
- }
- prevStats = newStats;
- }
- });
-
- // emit an add event if we're supposed to
- if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) {
- if (!this.fsw._throttle(EV_ADD, file, 0)) return;
- this.fsw._emit(EV_ADD, file, stats);
- }
-
- return closer;
-}
-
-/**
- * Handle symlinks encountered while reading a dir.
- * @param {Object} entry returned by readdirp
- * @param {String} directory path of dir being read
- * @param {String} path of this item
- * @param {String} item basename of this item
- * @returns {Promise<Boolean>} true if no more processing is needed for this entry.
- */
-async _handleSymlink(entry, directory, path, item) {
- if (this.fsw.closed) {
- return;
- }
- const full = entry.fullPath;
- const dir = this.fsw._getWatchedDir(directory);
-
- if (!this.fsw.options.followSymlinks) {
- // watch symlink directly (don't follow) and detect changes
- this.fsw._incrReadyCount();
- const linkPath = await fsrealpath(path);
- if (this.fsw.closed) return;
- if (dir.has(item)) {
- if (this.fsw._symlinkPaths.get(full) !== linkPath) {
- this.fsw._symlinkPaths.set(full, linkPath);
- this.fsw._emit(EV_CHANGE, path, entry.stats);
- }
- } else {
- dir.add(item);
- this.fsw._symlinkPaths.set(full, linkPath);
- this.fsw._emit(EV_ADD, path, entry.stats);
- }
- this.fsw._emitReady();
- return true;
- }
-
- // don't follow the same symlink more than once
- if (this.fsw._symlinkPaths.has(full)) {
- return true;
- }
-
- this.fsw._symlinkPaths.set(full, true);
-}
-
-_handleRead(directory, initialAdd, wh, target, dir, depth, throttler) {
- // Normalize the directory name on Windows
- directory = sysPath.join(directory, EMPTY_STR);
-
- if (!wh.hasGlob) {
- throttler = this.fsw._throttle('readdir', directory, 1000);
- if (!throttler) return;
- }
-
- const previous = this.fsw._getWatchedDir(wh.path);
- const current = new Set();
-
- let stream = this.fsw._readdirp(directory, {
- fileFilter: entry => wh.filterPath(entry),
- directoryFilter: entry => wh.filterDir(entry),
- depth: 0
- }).on(STR_DATA, async (entry) => {
- if (this.fsw.closed) {
- stream = undefined;
- return;
- }
- const item = entry.path;
- let path = sysPath.join(directory, item);
- current.add(item);
-
- if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path, item)) {
- return;
- }
-
- if (this.fsw.closed) {
- stream = undefined;
- return;
- }
- // Files that present in current directory snapshot
- // but absent in previous are added to watch list and
- // emit `add` event.
- if (item === target || !target && !previous.has(item)) {
- this.fsw._incrReadyCount();
-
- // ensure relativeness of path is preserved in case of watcher reuse
- path = sysPath.join(dir, sysPath.relative(dir, path));
-
- this._addToNodeFs(path, initialAdd, wh, depth + 1);
- }
- }).on(EV_ERROR, this._boundHandleError);
-
- return new Promise(resolve =>
- stream.once(STR_END, () => {
- if (this.fsw.closed) {
- stream = undefined;
- return;
- }
- const wasThrottled = throttler ? throttler.clear() : false;
-
- resolve();
-
- // Files that absent in current directory snapshot
- // but present in previous emit `remove` event
- // and are removed from @watched[directory].
- previous.getChildren().filter((item) => {
- return item !== directory &&
- !current.has(item) &&
- // in case of intersecting globs;
- // a path may have been filtered out of this readdir, but
- // shouldn't be removed because it matches a different glob
- (!wh.hasGlob || wh.filterPath({
- fullPath: sysPath.resolve(directory, item)
- }));
- }).forEach((item) => {
- this.fsw._remove(directory, item);
- });
-
- stream = undefined;
-
- // one more time for any missed in case changes came in extremely quickly
- if (wasThrottled) this._handleRead(directory, false, wh, target, dir, depth, throttler);
- })
- );
-}
-
-/**
- * Read directory to add / remove files from `@watched` list and re-read it on change.
- * @param {String} dir fs path
- * @param {fs.Stats} stats
- * @param {Boolean} initialAdd
- * @param {Number} depth relative to user-supplied path
- * @param {String} target child path targeted for watch
- * @param {Object} wh Common watch helpers for this path
- * @param {String} realpath
- * @returns {Promise<Function>} closer for the watcher instance.
- */
-async _handleDir(dir, stats, initialAdd, depth, target, wh, realpath) {
- const parentDir = this.fsw._getWatchedDir(sysPath.dirname(dir));
- const tracked = parentDir.has(sysPath.basename(dir));
- if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) {
- if (!wh.hasGlob || wh.globFilter(dir)) this.fsw._emit(EV_ADD_DIR, dir, stats);
- }
-
- // ensure dir is tracked (harmless if redundant)
- parentDir.add(sysPath.basename(dir));
- this.fsw._getWatchedDir(dir);
- let throttler;
- let closer;
-
- const oDepth = this.fsw.options.depth;
- if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath)) {
- if (!target) {
- await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler);
- if (this.fsw.closed) return;
- }
-
- closer = this._watchWithNodeFs(dir, (dirPath, stats) => {
- // if current directory is removed, do nothing
- if (stats && stats.mtimeMs === 0) return;
-
- this._handleRead(dirPath, false, wh, target, dir, depth, throttler);
- });
- }
- return closer;
-}
-
-/**
- * Handle added file, directory, or glob pattern.
- * Delegates call to _handleFile / _handleDir after checks.
- * @param {String} path to file or ir
- * @param {Boolean} initialAdd was the file added at watch instantiation?
- * @param {Object} priorWh depth relative to user-supplied path
- * @param {Number} depth Child path actually targeted for watch
- * @param {String=} target Child path actually targeted for watch
- * @returns {Promise}
- */
-async _addToNodeFs(path, initialAdd, priorWh, depth, target) {
- const ready = this.fsw._emitReady;
- if (this.fsw._isIgnored(path) || this.fsw.closed) {
- ready();
- return false;
- }
-
- const wh = this.fsw._getWatchHelpers(path, depth);
- if (!wh.hasGlob && priorWh) {
- wh.hasGlob = priorWh.hasGlob;
- wh.globFilter = priorWh.globFilter;
- wh.filterPath = entry => priorWh.filterPath(entry);
- wh.filterDir = entry => priorWh.filterDir(entry);
- }
-
- // evaluate what is at the path we're being asked to watch
- try {
- const stats = await statMethods[wh.statMethod](wh.watchPath);
- if (this.fsw.closed) return;
- if (this.fsw._isIgnored(wh.watchPath, stats)) {
- ready();
- return false;
- }
-
- const follow = this.fsw.options.followSymlinks && !path.includes(STAR) && !path.includes(BRACE_START);
- let closer;
- if (stats.isDirectory()) {
- const targetPath = follow ? await fsrealpath(path) : path;
- if (this.fsw.closed) return;
- closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath);
- if (this.fsw.closed) return;
- // preserve this symlink's target path
- if (path !== targetPath && targetPath !== undefined) {
- this.fsw._symlinkPaths.set(targetPath, true);
- }
- } else if (stats.isSymbolicLink()) {
- const targetPath = follow ? await fsrealpath(path) : path;
- if (this.fsw.closed) return;
- const parent = sysPath.dirname(wh.watchPath);
- this.fsw._getWatchedDir(parent).add(wh.watchPath);
- this.fsw._emit(EV_ADD, wh.watchPath, stats);
- closer = await this._handleDir(parent, stats, initialAdd, depth, path, wh, targetPath);
- if (this.fsw.closed) return;
-
- // preserve this symlink's target path
- if (targetPath !== undefined) {
- this.fsw._symlinkPaths.set(sysPath.resolve(path), targetPath);
- }
- } else {
- closer = this._handleFile(wh.watchPath, stats, initialAdd);
- }
- ready();
-
- this.fsw._addPathCloser(path, closer);
- return false;
-
- } catch (error) {
- if (this.fsw._handleError(error)) {
- ready();
- return path;
- }
- }
-}
-
-}
-
-module.exports = NodeFsHandler;
diff --git a/assets/node_modules/chokidar/package.json b/assets/node_modules/chokidar/package.json
deleted file mode 100644
index acd76d0..0000000
--- a/assets/node_modules/chokidar/package.json
+++ /dev/null
@@ -1,128 +0,0 @@
-{
- "name": "chokidar",
- "description": "A neat wrapper around node.js fs.watch / fs.watchFile / fsevents.",
- "version": "3.3.1",
- "homepage": "https://github.com/paulmillr/chokidar",
- "author": "Paul Miller (https://paulmillr.com)",
- "contributors": [
- "Paul Miller (https://paulmillr.com)",
- "Elan Shanker"
- ],
- "engines": {
- "node": ">= 8.10.0"
- },
- "main": "index.js",
- "dependencies": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.3.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.1.2"
- },
- "devDependencies": {
- "@types/node": "^12",
- "chai": "^4.2",
- "dtslint": "^2.0.0",
- "eslint": "^6.6.0",
- "mocha": "^6.2.2",
- "nyc": "^14.1.1",
- "rimraf": "^3.0.0",
- "sinon": "^7.5.0",
- "sinon-chai": "^3.3.0",
- "upath": "^1.2.0"
- },
- "files": [
- "index.js",
- "lib/*.js",
- "types/index.d.ts"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/paulmillr/chokidar.git"
- },
- "bugs": {
- "url": "https://github.com/paulmillr/chokidar/issues"
- },
- "license": "MIT",
- "scripts": {
- "dtslint": "dtslint types",
- "lint": "eslint --report-unused-disable-directives --ignore-path .gitignore .",
- "mocha": "mocha --exit --timeout 60000",
- "test": "npm run lint && npm run mocha"
- },
- "keywords": [
- "fs",
- "watch",
- "watchFile",
- "watcher",
- "watching",
- "file",
- "fsevents"
- ],
- "types": "./types/index.d.ts",
- "eslintConfig": {
- "extends": "eslint:recommended",
- "parserOptions": {
- "ecmaVersion": 9,
- "sourceType": "script"
- },
- "env": {
- "node": true,
- "es6": true
- },
- "rules": {
- "array-callback-return": "error",
- "no-empty": [
- "error",
- {
- "allowEmptyCatch": true
- }
- ],
- "no-lonely-if": "error",
- "no-var": "error",
- "object-shorthand": "error",
- "prefer-arrow-callback": [
- "error",
- {
- "allowNamedFunctions": true
- }
- ],
- "prefer-const": [
- "error",
- {
- "ignoreReadBeforeAssign": true
- }
- ],
- "prefer-destructuring": [
- "error",
- {
- "object": true,
- "array": false
- }
- ],
- "prefer-spread": "error",
- "prefer-template": "error",
- "radix": "error",
- "strict": "error",
- "quotes": [
- "error",
- "single"
- ]
- }
- },
- "nyc": {
- "include": [
- "index.js",
- "lib/*.js"
- ],
- "reporter": [
- "html",
- "text"
- ]
- }
-}
diff --git a/assets/node_modules/chokidar/types/index.d.ts b/assets/node_modules/chokidar/types/index.d.ts
deleted file mode 100644
index af0b558..0000000
--- a/assets/node_modules/chokidar/types/index.d.ts
+++ /dev/null
@@ -1,187 +0,0 @@
-// TypeScript Version: 3.0
-
-/// <reference types="node" />
-
-import * as fs from "fs";
-import { EventEmitter } from "events";
-
-export class FSWatcher extends EventEmitter implements fs.FSWatcher {
- options: WatchOptions;
-
- /**
- * Constructs a new FSWatcher instance with optional WatchOptions parameter.
- */
- constructor(options?: WatchOptions);
-
- /**
- * Add files, directories, or glob patterns for tracking. Takes an array of strings or just one
- * string.
- */
- add(paths: string | ReadonlyArray<string>): void;
-
- /**
- * Stop watching files, directories, or glob patterns. Takes an array of strings or just one
- * string.
- */
- unwatch(paths: string | ReadonlyArray<string>): void;
-
- /**
- * Returns an object representing all the paths on the file system being watched by this
- * `FSWatcher` instance. The object's keys are all the directories (using absolute paths unless
- * the `cwd` option was used), and the values are arrays of the names of the items contained in
- * each directory.
- */
- getWatched(): {
- [directory: string]: string[];
- };
-
- /**
- * Removes all listeners from watched files.
- */
- close(): Promise<void>;
-
- on(event: 'add'|'addDir'|'change', listener: (path: string, stats?: fs.Stats) => void): this;
-
- on(event: 'all', listener: (eventName: 'add'|'addDir'|'change'|'unlink'|'unlinkDir', path: string, stats?: fs.Stats) => void): this;
-
- /**
- * Error occurred
- */
- on(event: 'error', listener: (error: Error) => void): this;
-
- /**
- * Exposes the native Node `fs.FSWatcher events`
- */
- on(event: 'raw', listener: (eventName: string, path: string, details: any) => void): this;
-
- /**
- * Fires when the initial scan is complete
- */
- on(event: 'ready', listener: () => void): this;
-
- on(event: 'unlink'|'unlinkDir', listener: (path: string) => void): this;
-
- on(event: string, listener: (...args: any[]) => void): this;
-}
-
-export interface WatchOptions {
- /**
- * Indicates whether the process should continue to run as long as files are being watched. If
- * set to `false` when using `fsevents` to watch, no more events will be emitted after `ready`,
- * even if the process continues to run.
- */
- persistent?: boolean;
-
- /**
- * ([anymatch](https://github.com/micromatch/anymatch)-compatible definition) Defines files/paths to
- * be ignored. The whole relative or absolute path is tested, not just filename. If a function
- * with two arguments is provided, it gets called twice per path - once with a single argument
- * (the path), second time with two arguments (the path and the
- * [`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) object of that path).
- */
- ignored?: any;
-
- /**
- * If set to `false` then `add`/`addDir` events are also emitted for matching paths while
- * instantiating the watching as chokidar discovers these file paths (before the `ready` event).
- */
- ignoreInitial?: boolean;
-
- /**
- * When `false`, only the symlinks themselves will be watched for changes instead of following
- * the link references and bubbling events through the link's path.
- */
- followSymlinks?: boolean;
-
- /**
- * The base directory from which watch `paths` are to be derived. Paths emitted with events will
- * be relative to this.
- */
- cwd?: string;
-
- /**
- * If set to true then the strings passed to .watch() and .add() are treated as literal path
- * names, even if they look like globs. Default: false.
- */
- disableGlobbing?: boolean;
-
- /**
- * Whether to use fs.watchFile (backed by polling), or fs.watch. If polling leads to high CPU
- * utilization, consider setting this to `false`. It is typically necessary to **set this to
- * `true` to successfully watch files over a network**, and it may be necessary to successfully
- * watch files in other non-standard situations. Setting to `true` explicitly on OS X overrides
- * the `useFsEvents` default.
- */
- usePolling?: boolean;
-
- /**
- * Whether to use the `fsevents` watching interface if available. When set to `true` explicitly
- * and `fsevents` is available this supercedes the `usePolling` setting. When set to `false` on
- * OS X, `usePolling: true` becomes the default.
- */
- useFsEvents?: boolean;
-
- /**
- * If relying upon the [`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) object that
- * may get passed with `add`, `addDir`, and `change` events, set this to `true` to ensure it is
- * provided even in cases where it wasn't already available from the underlying watch events.
- */
- alwaysStat?: boolean;
-
- /**
- * If set, limits how many levels of subdirectories will be traversed.
- */
- depth?: number;
-
- /**
- * Interval of file system polling.
- */
- interval?: number;
-
- /**
- * Interval of file system polling for binary files. ([see list of binary extensions](https://gi
- * thub.com/sindresorhus/binary-extensions/blob/master/binary-extensions.json))
- */
- binaryInterval?: number;
-
- /**
- * Indicates whether to watch files that don't have read permissions if possible. If watching
- * fails due to `EPERM` or `EACCES` with this set to `true`, the errors will be suppressed
- * silently.
- */
- ignorePermissionErrors?: boolean;
-
- /**
- * `true` if `useFsEvents` and `usePolling` are `false`). Automatically filters out artifacts
- * that occur when using editors that use "atomic writes" instead of writing directly to the
- * source file. If a file is re-added within 100 ms of being deleted, Chokidar emits a `change`
- * event rather than `unlink` then `add`. If the default of 100 ms does not work well for you,
- * you can override it by setting `atomic` to a custom value, in milliseconds.
- */
- atomic?: boolean | number;
-
- /**
- * can be set to an object in order to adjust timing params:
- */
- awaitWriteFinish?: AwaitWriteFinishOptions | boolean;
-}
-
-export interface AwaitWriteFinishOptions {
- /**
- * Amount of time in milliseconds for a file size to remain constant before emitting its event.
- */
- stabilityThreshold?: number;
-
- /**
- * File size polling interval.
- */
- pollInterval?: number;
-}
-
-/**
- * produces an instance of `FSWatcher`.
- */
-export function watch(
- paths: string | ReadonlyArray<string>,
- options?: WatchOptions
-): FSWatcher;
diff --git a/assets/node_modules/clone-regexp/index.d.ts b/assets/node_modules/clone-regexp/index.d.ts
deleted file mode 100644
index 9005e81..0000000
--- a/assets/node_modules/clone-regexp/index.d.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-declare namespace cloneRegexp {
- interface Options {
- /**
- Modifies the [`source`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/source) property of the cloned `RegExp` instance.
- */
- source?: string;
-
- /**
- Modifies the [`global`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/global) property of the cloned `RegExp` instance.
- */
- global?: boolean;
-
- /**
- Modifies the [`ignoreCase`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase) property of the cloned `RegExp` instance.
- */
- ignoreCase?: boolean;
-
- /**
- Modifies the [`multiline`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/multiline) property of the cloned `RegExp` instance.
- */
- multiline?: boolean;
-
- /**
- Modifies the [`dotAll`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/dotAll) property of the cloned `RegExp` instance.
- */
- dotAll?: boolean;
-
- /**
- Modifies the [`sticky`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky) property of the cloned `RegExp` instance.
- */
- sticky?: boolean;
-
- /**
- Modifies the [`unicode`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/unicode) property of the cloned `RegExp` instance.
- */
- unicode?: boolean;
-
- /**
- Modifies the [`lastIndex`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex) property of the cloned `RegExp` instance.
- */
- lastIndex?: number;
- }
-}
-
-/**
-Clone and modify a [RegExp](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) instance.
-
-@param regexp - Regex to clone.
-
-@example
-```
-import cloneRegexp = require('clone-regexp');
-
-const regex = /[a-z]/gi;
-
-cloneRegexp(regex);
-//=> /[a-z]/gi
-
-cloneRegexp(regex) === regex;
-//=> false
-
-cloneRegexp(regex, {global: false});
-//=> /[a-z]/i
-
-cloneRegexp(regex, {multiline: true});
-//=> /[a-z]/gim
-
-cloneRegexp(regex, {source: 'unicorn'});
-//=> /unicorn/gi
-```
-*/
-declare function cloneRegexp(
- regexp: RegExp,
- options?: cloneRegexp.Options
-): RegExp;
-
-export = cloneRegexp;
diff --git a/assets/node_modules/clone-regexp/index.js b/assets/node_modules/clone-regexp/index.js
deleted file mode 100644
index 24edae6..0000000
--- a/assets/node_modules/clone-regexp/index.js
+++ /dev/null
@@ -1,29 +0,0 @@
-'use strict';
-const isRegexp = require('is-regexp');
-
-const flagMap = {
- global: 'g',
- ignoreCase: 'i',
- multiline: 'm',
- dotAll: 's',
- sticky: 'y',
- unicode: 'u'
-};
-
-module.exports = (regexp, options = {}) => {
- if (!isRegexp(regexp)) {
- throw new TypeError('Expected a RegExp instance');
- }
-
- const flags = Object.keys(flagMap).map(flag => (
- (typeof options[flag] === 'boolean' ? options[flag] : regexp[flag]) ? flagMap[flag] : ''
- )).join('');
-
- const clonedRegexp = new RegExp(options.source || regexp.source, flags);
-
- clonedRegexp.lastIndex = typeof options.lastIndex === 'number' ?
- options.lastIndex :
- regexp.lastIndex;
-
- return clonedRegexp;
-};
diff --git a/assets/node_modules/clone-regexp/license b/assets/node_modules/clone-regexp/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/clone-regexp/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/clone-regexp/package.json b/assets/node_modules/clone-regexp/package.json
deleted file mode 100644
index 761de6e..0000000
--- a/assets/node_modules/clone-regexp/package.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "name": "clone-regexp",
- "version": "2.2.0",
- "description": "Clone and modify a RegExp instance",
- "license": "MIT",
- "repository": "sindresorhus/clone-regexp",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "regexp",
- "regex",
- "re",
- "regular",
- "expression",
- "clone",
- "duplicate",
- "modify",
- "mutate"
- ],
- "dependencies": {
- "is-regexp": "^2.0.0"
- },
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/clone-regexp/readme.md b/assets/node_modules/clone-regexp/readme.md
deleted file mode 100644
index f749947..0000000
--- a/assets/node_modules/clone-regexp/readme.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# clone-regexp [![Build Status](https://travis-ci.org/sindresorhus/clone-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/clone-regexp)
-
-> Clone and modify a [RegExp](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) instance
-
-
-## Install
-
-```
-$ npm install clone-regexp
-```
-
-
-## Usage
-
-```js
-const cloneRegexp = require('clone-regexp');
-
-const regex = /[a-z]/gi;
-
-cloneRegexp(regex);
-//=> /[a-z]/gi
-
-cloneRegexp(regex) === regex;
-//=> false
-
-cloneRegexp(regex, {global: false});
-//=> /[a-z]/i
-
-cloneRegexp(regex, {multiline: true});
-//=> /[a-z]/gim
-
-cloneRegexp(regex, {source: 'unicorn'});
-//=> /unicorn/gi
-```
-
-
-## API
-
-### cloneRegexp(regexp, [options])
-
-#### regex
-
-Type: `RegExp`
-
-Regex to clone.
-
-
-#### options
-
-Type: `Object`<br>
-Properties: [`source`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/source) [`global`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/global) [`ignoreCase`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase) [`multiline`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/multiline) [`dotAll`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/dotAll) [`sticky`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky) [`unicode`](http://norbertlindenberg.com/2012/05/ecmascript-supplementary-characters/#RegExp) [`lastIndex`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex)
-
-Optionally modify the cloned `RegExp` instance.
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/collapse-white-space/index.js b/assets/node_modules/collapse-white-space/index.js
deleted file mode 100644
index 93d5466..0000000
--- a/assets/node_modules/collapse-white-space/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-'use strict'
-
-module.exports = collapse
-
-// `collapse(' \t\nbar \nbaz\t') // ' bar baz '`
-function collapse(value) {
- return String(value).replace(/\s+/g, ' ')
-}
diff --git a/assets/node_modules/collapse-white-space/license b/assets/node_modules/collapse-white-space/license
deleted file mode 100644
index 32e7a3d..0000000
--- a/assets/node_modules/collapse-white-space/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/collapse-white-space/package.json b/assets/node_modules/collapse-white-space/package.json
deleted file mode 100644
index 6c9e8f3..0000000
--- a/assets/node_modules/collapse-white-space/package.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "name": "collapse-white-space",
- "version": "1.0.6",
- "description": "Replace multiple white-space characters with a single space",
- "license": "MIT",
- "keywords": [
- "collapse",
- "white",
- "space"
- ],
- "repository": "wooorm/collapse-white-space",
- "bugs": "https://github.com/wooorm/collapse-white-space/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 collapseWhiteSpace -o collapse-white-space.js",
- "build-mangle": "browserify . -s collapseWhiteSpace -p tinyify -o collapse-white-space.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": [
- "collapse-white-space.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
- }
-}
diff --git a/assets/node_modules/collapse-white-space/readme.md b/assets/node_modules/collapse-white-space/readme.md
deleted file mode 100644
index 5154c9f..0000000
--- a/assets/node_modules/collapse-white-space/readme.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# collapse-white-space
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-Replace multiple whitespace characters with a single space.
-
-## Install
-
-[npm][]:
-
-```sh
-npm install collapse-white-space
-```
-
-## Use
-
-```js
-var collapse = require('collapse-white-space')
-
-collapse('\tfoo \n\tbar \t\r\nbaz') //=> ' foo bar baz'
-```
-
-## API
-
-### `collapse(value)`
-
-Replace multiple whitespace characters in value with a single space.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/wooorm/collapse-white-space.svg
-
-[build]: https://travis-ci.org/wooorm/collapse-white-space
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/collapse-white-space.svg
-
-[coverage]: https://codecov.io/github/wooorm/collapse-white-space
-
-[downloads-badge]: https://img.shields.io/npm/dm/collapse-white-space.svg
-
-[downloads]: https://www.npmjs.com/package/collapse-white-space
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/collapse-white-space.svg
-
-[size]: https://bundlephobia.com/result?p=collapse-white-space
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
diff --git a/assets/node_modules/color-convert/CHANGELOG.md b/assets/node_modules/color-convert/CHANGELOG.md
deleted file mode 100644
index 0a7bce4..0000000
--- a/assets/node_modules/color-convert/CHANGELOG.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# 1.0.0 - 2016-01-07
-
-- Removed: unused speed test
-- Added: Automatic routing between previously unsupported conversions
-([#27](https://github.com/Qix-/color-convert/pull/27))
-- Removed: `xxx2xxx()` and `xxx2xxxRaw()` functions
-([#27](https://github.com/Qix-/color-convert/pull/27))
-- Removed: `convert()` class
-([#27](https://github.com/Qix-/color-convert/pull/27))
-- Changed: all functions to lookup dictionary
-([#27](https://github.com/Qix-/color-convert/pull/27))
-- Changed: `ansi` to `ansi256`
-([#27](https://github.com/Qix-/color-convert/pull/27))
-- Fixed: argument grouping for functions requiring only one argument
-([#27](https://github.com/Qix-/color-convert/pull/27))
-
-# 0.6.0 - 2015-07-23
-
-- Added: methods to handle
-[ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) 16/256 colors:
- - rgb2ansi16
- - rgb2ansi
- - hsl2ansi16
- - hsl2ansi
- - hsv2ansi16
- - hsv2ansi
- - hwb2ansi16
- - hwb2ansi
- - cmyk2ansi16
- - cmyk2ansi
- - keyword2ansi16
- - keyword2ansi
- - ansi162rgb
- - ansi162hsl
- - ansi162hsv
- - ansi162hwb
- - ansi162cmyk
- - ansi162keyword
- - ansi2rgb
- - ansi2hsl
- - ansi2hsv
- - ansi2hwb
- - ansi2cmyk
- - ansi2keyword
-([#18](https://github.com/harthur/color-convert/pull/18))
-
-# 0.5.3 - 2015-06-02
-
-- Fixed: hsl2hsv does not return `NaN` anymore when using `[0,0,0]`
-([#15](https://github.com/harthur/color-convert/issues/15))
-
----
-
-Check out commit logs for older releases
diff --git a/assets/node_modules/color-convert/LICENSE b/assets/node_modules/color-convert/LICENSE
deleted file mode 100644
index 5b4c386..0000000
--- a/assets/node_modules/color-convert/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/color-convert/README.md b/assets/node_modules/color-convert/README.md
deleted file mode 100644
index d4b08fc..0000000
--- a/assets/node_modules/color-convert/README.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# 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/assets/node_modules/color-convert/conversions.js b/assets/node_modules/color-convert/conversions.js
deleted file mode 100644
index 3217200..0000000
--- a/assets/node_modules/color-convert/conversions.js
+++ /dev/null
@@ -1,868 +0,0 @@
-/* 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/assets/node_modules/color-convert/index.js b/assets/node_modules/color-convert/index.js
deleted file mode 100644
index e65b5d7..0000000
--- a/assets/node_modules/color-convert/index.js
+++ /dev/null
@@ -1,78 +0,0 @@
-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/assets/node_modules/color-convert/package.json b/assets/node_modules/color-convert/package.json
deleted file mode 100644
index dfbc471..0000000
--- a/assets/node_modules/color-convert/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "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/assets/node_modules/color-convert/route.js b/assets/node_modules/color-convert/route.js
deleted file mode 100644
index 0a1fdea..0000000
--- a/assets/node_modules/color-convert/route.js
+++ /dev/null
@@ -1,97 +0,0 @@
-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/assets/node_modules/color-name/.eslintrc.json b/assets/node_modules/color-name/.eslintrc.json
deleted file mode 100644
index c50c250..0000000
--- a/assets/node_modules/color-name/.eslintrc.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "env": {
- "browser": true,
- "node": true,
- "commonjs": true,
- "es6": true
- },
- "extends": "eslint:recommended",
- "rules": {
- "strict": 2,
- "indent": 0,
- "linebreak-style": 0,
- "quotes": 0,
- "semi": 0,
- "no-cond-assign": 1,
- "no-constant-condition": 1,
- "no-duplicate-case": 1,
- "no-empty": 1,
- "no-ex-assign": 1,
- "no-extra-boolean-cast": 1,
- "no-extra-semi": 1,
- "no-fallthrough": 1,
- "no-func-assign": 1,
- "no-global-assign": 1,
- "no-implicit-globals": 2,
- "no-inner-declarations": ["error", "functions"],
- "no-irregular-whitespace": 2,
- "no-loop-func": 1,
- "no-multi-str": 1,
- "no-mixed-spaces-and-tabs": 1,
- "no-proto": 1,
- "no-sequences": 1,
- "no-throw-literal": 1,
- "no-unmodified-loop-condition": 1,
- "no-useless-call": 1,
- "no-void": 1,
- "no-with": 2,
- "wrap-iife": 1,
- "no-redeclare": 1,
- "no-unused-vars": ["error", { "vars": "all", "args": "none" }],
- "no-sparse-arrays": 1
- }
-}
diff --git a/assets/node_modules/color-name/.npmignore b/assets/node_modules/color-name/.npmignore
deleted file mode 100644
index f9f2816..0000000
--- a/assets/node_modules/color-name/.npmignore
+++ /dev/null
@@ -1,107 +0,0 @@
-//this will affect all the git repos
-git config --global core.excludesfile ~/.gitignore
-
-
-//update files since .ignore won't if already tracked
-git rm --cached <file>
-
-# Compiled source #
-###################
-*.com
-*.class
-*.dll
-*.exe
-*.o
-*.so
-
-# Packages #
-############
-# it's better to unpack these files and commit the raw source
-# git has its own built in compression methods
-*.7z
-*.dmg
-*.gz
-*.iso
-*.jar
-*.rar
-*.tar
-*.zip
-
-# Logs and databases #
-######################
-*.log
-*.sql
-*.sqlite
-
-# OS generated files #
-######################
-.DS_Store
-.DS_Store?
-._*
-.Spotlight-V100
-.Trashes
-# Icon?
-ehthumbs.db
-Thumbs.db
-.cache
-.project
-.settings
-.tmproj
-*.esproj
-nbproject
-
-# Numerous always-ignore extensions #
-#####################################
-*.diff
-*.err
-*.orig
-*.rej
-*.swn
-*.swo
-*.swp
-*.vi
-*~
-*.sass-cache
-*.grunt
-*.tmp
-
-# Dreamweaver added files #
-###########################
-_notes
-dwsync.xml
-
-# Komodo #
-###########################
-*.komodoproject
-.komodotools
-
-# Node #
-#####################
-node_modules
-
-# Bower #
-#####################
-bower_components
-
-# Folders to ignore #
-#####################
-.hg
-.svn
-.CVS
-intermediate
-publish
-.idea
-.graphics
-_test
-_archive
-uploads
-tmp
-
-# Vim files to ignore #
-#######################
-.VimballRecord
-.netrwhist
-
-bundle.*
-
-_demo \ No newline at end of file
diff --git a/assets/node_modules/color-name/LICENSE b/assets/node_modules/color-name/LICENSE
deleted file mode 100644
index c6b1001..0000000
--- a/assets/node_modules/color-name/LICENSE
+++ /dev/null
@@ -1,8 +0,0 @@
-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/assets/node_modules/color-name/README.md b/assets/node_modules/color-name/README.md
deleted file mode 100644
index 932b979..0000000
--- a/assets/node_modules/color-name/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-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/assets/node_modules/color-name/index.js b/assets/node_modules/color-name/index.js
deleted file mode 100644
index b7c198a..0000000
--- a/assets/node_modules/color-name/index.js
+++ /dev/null
@@ -1,152 +0,0 @@
-'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/assets/node_modules/color-name/package.json b/assets/node_modules/color-name/package.json
deleted file mode 100644
index d061123..0000000
--- a/assets/node_modules/color-name/package.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "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/assets/node_modules/color-name/test.js b/assets/node_modules/color-name/test.js
deleted file mode 100644
index 6e6bf30..0000000
--- a/assets/node_modules/color-name/test.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-var names = require('./');
-var assert = require('assert');
-
-assert.deepEqual(names.red, [255,0,0]);
-assert.deepEqual(names.aliceblue, [240,248,255]);
diff --git a/assets/node_modules/concat-map/.travis.yml b/assets/node_modules/concat-map/.travis.yml
deleted file mode 100644
index f1d0f13..0000000
--- a/assets/node_modules/concat-map/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
- - 0.4
- - 0.6
diff --git a/assets/node_modules/concat-map/LICENSE b/assets/node_modules/concat-map/LICENSE
deleted file mode 100644
index ee27ba4..0000000
--- a/assets/node_modules/concat-map/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-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/assets/node_modules/concat-map/README.markdown b/assets/node_modules/concat-map/README.markdown
deleted file mode 100644
index 408f70a..0000000
--- a/assets/node_modules/concat-map/README.markdown
+++ /dev/null
@@ -1,62 +0,0 @@
-concat-map
-==========
-
-Concatenative mapdashery.
-
-[![browser support](http://ci.testling.com/substack/node-concat-map.png)](http://ci.testling.com/substack/node-concat-map)
-
-[![build status](https://secure.travis-ci.org/substack/node-concat-map.png)](http://travis-ci.org/substack/node-concat-map)
-
-example
-=======
-
-``` js
-var concatMap = require('concat-map');
-var xs = [ 1, 2, 3, 4, 5, 6 ];
-var ys = concatMap(xs, function (x) {
- return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
-});
-console.dir(ys);
-```
-
-***
-
-```
-[ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]
-```
-
-methods
-=======
-
-``` js
-var concatMap = require('concat-map')
-```
-
-concatMap(xs, fn)
------------------
-
-Return an array of concatenated elements by calling `fn(x, i)` for each element
-`x` and each index `i` in the array `xs`.
-
-When `fn(x, i)` returns an array, its result will be concatenated with the
-result array. If `fn(x, i)` returns anything else, that value will be pushed
-onto the end of the result array.
-
-install
-=======
-
-With [npm](http://npmjs.org) do:
-
-```
-npm install concat-map
-```
-
-license
-=======
-
-MIT
-
-notes
-=====
-
-This module was written while sitting high above the ground in a tree.
diff --git a/assets/node_modules/concat-map/example/map.js b/assets/node_modules/concat-map/example/map.js
deleted file mode 100644
index 3365621..0000000
--- a/assets/node_modules/concat-map/example/map.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var concatMap = require('../');
-var xs = [ 1, 2, 3, 4, 5, 6 ];
-var ys = concatMap(xs, function (x) {
- return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
-});
-console.dir(ys);
diff --git a/assets/node_modules/concat-map/index.js b/assets/node_modules/concat-map/index.js
deleted file mode 100644
index b29a781..0000000
--- a/assets/node_modules/concat-map/index.js
+++ /dev/null
@@ -1,13 +0,0 @@
-module.exports = function (xs, fn) {
- var res = [];
- for (var i = 0; i < xs.length; i++) {
- var x = fn(xs[i], i);
- if (isArray(x)) res.push.apply(res, x);
- else res.push(x);
- }
- return res;
-};
-
-var isArray = Array.isArray || function (xs) {
- return Object.prototype.toString.call(xs) === '[object Array]';
-};
diff --git a/assets/node_modules/concat-map/package.json b/assets/node_modules/concat-map/package.json
deleted file mode 100644
index d3640e6..0000000
--- a/assets/node_modules/concat-map/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name" : "concat-map",
- "description" : "concatenative mapdashery",
- "version" : "0.0.1",
- "repository" : {
- "type" : "git",
- "url" : "git://github.com/substack/node-concat-map.git"
- },
- "main" : "index.js",
- "keywords" : [
- "concat",
- "concatMap",
- "map",
- "functional",
- "higher-order"
- ],
- "directories" : {
- "example" : "example",
- "test" : "test"
- },
- "scripts" : {
- "test" : "tape test/*.js"
- },
- "devDependencies" : {
- "tape" : "~2.4.0"
- },
- "license" : "MIT",
- "author" : {
- "name" : "James Halliday",
- "email" : "mail@substack.net",
- "url" : "http://substack.net"
- },
- "testling" : {
- "files" : "test/*.js",
- "browsers" : {
- "ie" : [ 6, 7, 8, 9 ],
- "ff" : [ 3.5, 10, 15.0 ],
- "chrome" : [ 10, 22 ],
- "safari" : [ 5.1 ],
- "opera" : [ 12 ]
- }
- }
-}
diff --git a/assets/node_modules/concat-map/test/map.js b/assets/node_modules/concat-map/test/map.js
deleted file mode 100644
index fdbd702..0000000
--- a/assets/node_modules/concat-map/test/map.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var concatMap = require('../');
-var test = require('tape');
-
-test('empty or not', function (t) {
- var xs = [ 1, 2, 3, 4, 5, 6 ];
- var ixes = [];
- var ys = concatMap(xs, function (x, ix) {
- ixes.push(ix);
- return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
- });
- t.same(ys, [ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]);
- t.same(ixes, [ 0, 1, 2, 3, 4, 5 ]);
- t.end();
-});
-
-test('always something', function (t) {
- var xs = [ 'a', 'b', 'c', 'd' ];
- var ys = concatMap(xs, function (x) {
- return x === 'b' ? [ 'B', 'B', 'B' ] : [ x ];
- });
- t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]);
- t.end();
-});
-
-test('scalars', function (t) {
- var xs = [ 'a', 'b', 'c', 'd' ];
- var ys = concatMap(xs, function (x) {
- return x === 'b' ? [ 'B', 'B', 'B' ] : x;
- });
- t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]);
- t.end();
-});
-
-test('undefs', function (t) {
- var xs = [ 'a', 'b', 'c', 'd' ];
- var ys = concatMap(xs, function () {});
- t.same(ys, [ undefined, undefined, undefined, undefined ]);
- t.end();
-});
diff --git a/assets/node_modules/convert-source-map/LICENSE b/assets/node_modules/convert-source-map/LICENSE
deleted file mode 100644
index 41702c5..0000000
--- a/assets/node_modules/convert-source-map/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-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/assets/node_modules/convert-source-map/README.md b/assets/node_modules/convert-source-map/README.md
deleted file mode 100644
index 86b218e..0000000
--- a/assets/node_modules/convert-source-map/README.md
+++ /dev/null
@@ -1,125 +0,0 @@
-# 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)
-
-<a href="https://www.patreon.com/bePatron?u=8663953"><img alt="become a patron" src="https://c5.patreon.com/external/logo/become_a_patron_button.png" height="35px"></a>
-
-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.
-
-
-[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/thlorenz/convert-source-map/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
diff --git a/assets/node_modules/convert-source-map/index.js b/assets/node_modules/convert-source-map/index.js
deleted file mode 100644
index 3aeae10..0000000
--- a/assets/node_modules/convert-source-map/index.js
+++ /dev/null
@@ -1,136 +0,0 @@
-'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/assets/node_modules/convert-source-map/package.json b/assets/node_modules/convert-source-map/package.json
deleted file mode 100644
index c1a9592..0000000
--- a/assets/node_modules/convert-source-map/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "convert-source-map",
- "version": "1.7.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/assets/node_modules/cosmiconfig/CHANGELOG.md b/assets/node_modules/cosmiconfig/CHANGELOG.md
deleted file mode 100644
index aa7e9f3..0000000
--- a/assets/node_modules/cosmiconfig/CHANGELOG.md
+++ /dev/null
@@ -1,196 +0,0 @@
-# Changelog
-
-## 6.0.0
-
-- **Breaking change:** The package now has named exports. See examples below.
-- **Breaking change:** Separate async and sync APIs, accessible from different named exports. If you used `explorer.searchSync()` or `explorer.loadSync()`, you'll now create a sync explorer with `cosmiconfigSync()`, then use `explorerSync.search()` and `explorerSync.load()`.
-
- ```js
- // OLD: cosmiconfig v5
- import cosmiconfig from 'cosmiconfig';
-
- const explorer = cosmiconfig('example');
- const searchAsyncResult = await explorer.search();
- const loadAsyncResult = await explorer.load('./file/to/load');
- const searchSyncResult = explorer.searchSync();
- const loadSyncResult = explorer.loadSync('./file/to/load');
-
- // NEW: cosmiconfig v6
- import { cosmiconfig, cosmiconfigSync } from 'cosmiconfig';
-
- const explorer = cosmiconfig('example');
- const searchAsyncResult = await explorer.search();
- const loadAsyncResult = await explorer.load('./file/to/load');
-
- const explorerSync = cosmiconfigSync('example');
- const searchSyncResult = explorerSync.search();
- const loadSyncResult = explorerSync.load('./file/to/load');
- ```
-- **Breaking change:** Remove support for Node 4 and 6. Requires Node 8+.
-- **Breaking change:** Use npm package [yaml](https://www.npmjs.com/package/yaml) to parse YAML instead of npm package [js-yaml](https://www.npmjs.com/package/js-yaml).
-- **Breaking change:** Remove `cosmiconfig.loaders` and add named export `defaultLoaders` that exports the default loaders used for each extension.
-
- ```js
- import { defaultLoaders } from 'cosmiconfig';
-
- console.log(Object.entries(defaultLoaders))
- // [
- // [ '.js', [Function: loadJs] ],
- // [ '.json', [Function: loadJson] ],
- // [ '.yaml', [Function: loadYaml] ],
- // [ '.yml', [Function: loadYaml] ],
- // [ 'noExt', [Function: loadYaml] ]
- // ]
- ```
-- Migrate from Flowtype to Typescript.
-- Lazy load all default loaders.
-
-## 5.2.1
-
-- Chore: Upgrade `js-yaml` to avoid npm audit warning.
-
-## 5.2.0
-
-- Added: `packageProp` values can be arrays of strings, to allow for property names that include periods. (This was possible before, but not documented or deliberately supported.)
-- Chore: Replaced the `lodash.get` dependency with a locally defined function.
-- Chore: Upgrade `js-yaml` to avoid npm audit warning.
-
-## 5.1.0
-
-- Added: `packageProp` values can include periods to describe paths to nested objects within `package.json`.
-
-## 5.0.7
-
-- Fixed: JS loader bypasses Node's `require` cache, fixing a bug where updates to `.js` config files would not load even when Cosmiconfig was told not to cache.
-
-## 5.0.6
-
-- Fixed: Better error message if the end user tries an extension Cosmiconfig is not configured to understand.
-
-## 5.0.5
-
-- Fixed: `load` and `loadSync` work with paths relative to `process.cwd()`.
-
-## 5.0.4
-
-- Fixed: `rc` files with `.js` extensions included in default `searchPlaces`.
-
-## 5.0.3
-
-- Docs: Minor corrections to documentation. *Released to update package documentation on npm*.
-
-## 5.0.2
-
-- Fixed: Allow `searchSync` and `loadSync` to load JS configuration files whose export is a Promise.
-
-## 5.0.1
-
-The API has been completely revamped to increase clarity and enable a very wide range of new usage. **Please read the readme for all the details.**
-
-While the defaults remain just as useful as before — and you can still pass no options at all — now you can also do all kinds of wild and crazy things.
-
-- The `loaders` option allows you specify custom functions to derive config objects from files. Your loader functions could parse ES2015 modules or TypeScript, JSON5, even INI or XML. Whatever suits you.
-- The `searchPlaces` option allows you to specify exactly where cosmiconfig looks within each directory it searches.
-- The combination of `loaders` and `searchPlaces` means that you should be able to load pretty much any kind of configuration file you want, from wherever you want it to look.
-
-Additionally, the overloaded `load()` function has been split up into several clear and focused functions:
-
-- `search()` now searches up the directory tree, and `load()` loads a configuration file that you don't need to search for.
-- The `sync` option has been replaced with separate synchronous functions: `searchSync()` and `loadSync()`.
-- `clearFileCache()` and `clearDirectoryCache()` have been renamed to `clearLoadCache()` and `clearSearchPath()` respectively.
-
-More details:
-
-- The default JS loader uses `require`, instead of `require-from-string`. So you *could* use `require` hooks to control the loading of JS files (e.g. pass them through esm or Babel). In most cases it is probably preferable to use a custom loader.
-- The options `rc`, `js`, and `rcExtensions` have all been removed. You can accomplish the same and more with `searchPlaces`.
-- The default `searchPlaces` include `rc` files with extensions, e.g. `.thingrc.json`, `.thingrc.yaml`, `.thingrc.yml`. This is the equivalent of switching the default value of the old `rcExtensions` option to `true`.
-- The option `rcStrictJson` has been removed. To get the same effect, you can specify `noExt: cosmiconfig.loadJson` in your `loaders` object.
-- `packageProp` no longer accepts `false`. If you don't want to look in `package.json`, write a `searchPlaces` array that does not include it.
-- By default, empty files are ignored by `search()`. The new option `ignoreEmptySearchPlaces` allows you to load them, instead, in case you want to do something with empty files.
-- The option `configPath` has been removed. Just pass your filepaths directory to `load()`.
-- Removed the `format` option. Formats are now all handled via the file extensions specified in `loaders`.
-
-(If you're wondering with happened to 5.0.0 ... it was a silly publishing mistake.)
-
-## 4.0.0
-
-- Licensing improvement: updated `parse-json` from `3.0.0` to `4.0.0`(see [sindresorhus/parse-json#12][parse-json-pr-12]).
-- Changed: error message format for `JSON` parse errors(see [#101][pr-101]). If you were relying on the format of JSON-parsing error messages, this will be a breaking change for you.
-- Changed: set default for `searchPath` as `process.cwd()` in `explorer.load`.
-
-## 3.1.0
-
-- Added: infer format based on filePath
-
-## 3.0.1
-
-- Fixed: memory leak due to bug in `require-from-string`.
-- Added: for JSON files, append position to end of error message.
-
-## 3.0.0
-
-- Removed: support for loading config path using the `--config` flag. cosmiconfig will not parse command line arguments. Your application can parse command line arguments and pass them to cosmiconfig.
-- Removed: `argv` config option.
-- Removed: support for Node versions &lt; 4.
-- Added: `sync` option.
-- Fixed: Throw a clear error on getting empty config file.
-- Fixed: when a `options.configPath` is `package.json`, return the package prop, not the entire JSON file.
-
-## 2.2.2
-
-- Fixed: `options.configPath` and `--config` flag are respected.
-
-## 2.2.0, 2.2.1
-
-- 2.2.0 included a number of improvements but somehow broke stylelint. The changes were reverted in 2.2.1, to be restored later.
-
-## 2.1.3
-
-- Licensing improvement: switched from `json-parse-helpfulerror` to `parse-json`.
-
-## 2.1.2
-
-- Fixed: bug where an `ENOENT` error would be thrown is `searchPath` referenced a non-existent file.
-- Fixed: JSON parsing errors in Node v7.
-
-## 2.1.1
-
-- Fixed: swapped `graceful-fs` for regular `fs`, fixing a garbage collection problem.
-
-## 2.1.0
-
-- Added: Node 0.12 support.
-
-## 2.0.2
-
-- Fixed: Node version specified in `package.json`.
-
-## 2.0.1
-
-- Fixed: no more infinite loop in Windows.
-
-## 2.0.0
-
-- Changed: module now creates cosmiconfig instances with `load` methods (see README).
-- Added: caching (enabled by the change above).
-- Removed: support for Node versions &lt;4.
-
-## 1.1.0
-
-- Add `rcExtensions` option.
-
-## 1.0.2
-
-- Fix handling of `require()`'s within JS module configs.
-
-## 1.0.1
-
-- Switch Promise implementation to pinkie-promise.
-
-## 1.0.0
-
-- Initial release.
-
-[parse-json-pr-12]: https://github.com/sindresorhus/parse-json/pull/12
-
-[pr-101]: https://github.com/davidtheclark/cosmiconfig/pull/101
diff --git a/assets/node_modules/cosmiconfig/LICENSE b/assets/node_modules/cosmiconfig/LICENSE
deleted file mode 100644
index 6d347c0..0000000
--- a/assets/node_modules/cosmiconfig/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 David Clark
-
-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/assets/node_modules/cosmiconfig/README.md b/assets/node_modules/cosmiconfig/README.md
deleted file mode 100644
index 9cf2f20..0000000
--- a/assets/node_modules/cosmiconfig/README.md
+++ /dev/null
@@ -1,576 +0,0 @@
-# cosmiconfig
-
-[![Build Status](https://img.shields.io/travis/davidtheclark/cosmiconfig/master.svg?label=unix%20build)](https://travis-ci.org/davidtheclark/cosmiconfig) [![Build status](https://img.shields.io/appveyor/ci/davidtheclark/cosmiconfig/master.svg?label=windows%20build)](https://ci.appveyor.com/project/davidtheclark/cosmiconfig/branch/master)
-[![codecov](https://codecov.io/gh/davidtheclark/cosmiconfig/branch/master/graph/badge.svg)](https://codecov.io/gh/davidtheclark/cosmiconfig)
-
-Cosmiconfig searches for and loads configuration for your program.
-
-It features smart defaults based on conventional expectations in the JavaScript ecosystem.
-But it's also flexible enough to search wherever you'd like to search, and load whatever you'd like to load.
-
-By default, Cosmiconfig will start where you tell it to start and search up the directory tree for the following:
-
-- a `package.json` property
-- a JSON or YAML, extensionless "rc file"
-- an "rc file" with the extensions `.json`, `.yaml`, `.yml`, or `.js`.
-- a `.config.js` CommonJS module
-
-For example, if your module's name is "myapp", cosmiconfig will search up the directory tree for configuration in the following places:
-
-- a `myapp` property in `package.json`
-- a `.myapprc` file in JSON or YAML format
-- a `.myapprc.json` file
-- a `.myapprc.yaml`, `.myapprc.yml`, or `.myapprc.js` file
-- a `myapp.config.js` file exporting a JS object
-
-Cosmiconfig continues to search up the directory tree, checking each of these places in each directory, until it finds some acceptable configuration (or hits the home directory).
-
-👀 **Looking for the v5 docs?**
-v6 involves slight changes to Cosmiconfig's API, clarifying the difference between synchronous and asynchronous usage.
-If you have trouble switching from v5 to v6, please file an issue.
-If you are still using v5, those v5 docs are available [in the `5.x.x` tagged code](https://github.com/davidtheclark/cosmiconfig/tree/5.2.1).
-
-## Table of contents
-
-- [Installation](#installation)
-- [Usage](#usage)
-- [Result](#result)
-- [Asynchronous API](#asynchronous-api)
- - [cosmiconfig()](#cosmiconfig)
- - [explorer.search()](#explorersearch)
- - [explorer.load()](#explorerload)
- - [explorer.clearLoadCache()](#explorerclearloadcache)
- - [explorer.clearSearchCache()](#explorerclearsearchcache)
- - [explorer.clearCaches()](#explorerclearcaches)
-- [Synchronsous API](#synchronsous-api)
- - [cosmiconfigSync()](#cosmiconfigsync)
- - [explorerSync.search()](#explorersyncsearch)
- - [explorerSync.load()](#explorersyncload)
- - [explorerSync.clearLoadCache()](#explorersyncclearloadcache)
- - [explorerSync.clearSearchCache()](#explorersyncclearsearchcache)
- - [explorerSync.clearCaches()](#explorersyncclearcaches)
-- [cosmiconfigOptions](#cosmiconfigoptions)
- - [searchPlaces](#searchplaces)
- - [loaders](#loaders)
- - [packageProp](#packageprop)
- - [stopDir](#stopdir)
- - [cache](#cache)
- - [transform](#transform)
- - [ignoreEmptySearchPlaces](#ignoreemptysearchplaces)
-- [Caching](#caching)
-- [Differences from rc](#differences-from-rc)
-- [Contributing & Development](#contributing--development)
-
-## Installation
-
-```
-npm install cosmiconfig
-```
-
-Tested in Node 8+.
-
-## Usage
-
-Create a Cosmiconfig explorer, then either `search` for or directly `load` a configuration file.
-
-```js
-const { cosmiconfig, cosmiconfigSync } = require('cosmiconfig');
-// ...
-const explorer = cosmiconfig(moduleName);
-
-// Search for a configuration by walking up directories.
-// See documentation for search, below.
-explorer.search()
- .then((result) => {
- // result.config is the parsed configuration object.
- // result.filepath is the path to the config file that was found.
- // result.isEmpty is true if there was nothing to parse in the config file.
- })
- .catch((error) => {
- // Do something constructive.
- });
-
-// Load a configuration directly when you know where it should be.
-// The result object is the same as for search.
-// See documentation for load, below.
-explorer.load(pathToConfig).then(..);
-
-// You can also search and load synchronously.
-const explorerSync = cosmiconfigSync(moduleName);
-
-const searchedFor = explorerSync.search();
-const loaded = explorerSync.load(pathToConfig);
-```
-
-## Result
-
-The result object you get from `search` or `load` has the following properties:
-
-- **config:** The parsed configuration object. `undefined` if the file is empty.
-- **filepath:** The path to the configuration file that was found.
-- **isEmpty:** `true` if the configuration file is empty. This property will not be present if the configuration file is not empty.
-
-## Asynchronous API
-
-### cosmiconfig()
-
-```js
-const { cosmiconfig } = require('cosmiconfig');
-const explorer = cosmiconfig(moduleName[, cosmiconfigOptions])
-```
-
-Creates a cosmiconfig instance ("explorer") configured according to the arguments, and initializes its caches.
-
-#### moduleName
-
-Type: `string`. **Required.**
-
-Your module name. This is used to create the default [`searchPlaces`] and [`packageProp`].
-
-If your [`searchPlaces`] value will include files, as it does by default (e.g. `${moduleName}rc`), your `moduleName` must consist of characters allowed in filenames. That means you should not copy scoped package names, such as `@my-org/my-package`, directly into `moduleName`.
-
-**[`cosmiconfigOptions`] are documented below.**
-You may not need them, and should first read about the functions you'll use.
-
-### explorer.search()
-
-```js
-explorer.search([searchFrom]).then(result => {..})
-```
-
-Searches for a configuration file. Returns a Promise that resolves with a [result] or with `null`, if no configuration file is found.
-
-You can do the same thing synchronously with [`explorerSync.search()`].
-
-Let's say your module name is `goldengrahams` so you initialized with `const explorer = cosmiconfig('goldengrahams');`.
-Here's how your default [`search()`] will work:
-
-- Starting from `process.cwd()` (or some other directory defined by the `searchFrom` argument to [`search()`]), look for configuration objects in the following places:
- 1. A `goldengrahams` property in a `package.json` file.
- 2. A `.goldengrahamsrc` file with JSON or YAML syntax.
- 3. A `.goldengrahamsrc.json` file.
- 4. A `.goldengrahamsrc.yaml`, `.goldengrahamsrc.yml`, or `.goldengrahamsrc.js` file.
- 5. A `goldengrahams.config.js` JS file exporting the object.
-- If none of those searches reveal a configuration object, move up one directory level and try again.
- So the search continues in `./`, `../`, `../../`, `../../../`, etc., checking the same places in each directory.
-- Continue searching until arriving at your home directory (or some other directory defined by the cosmiconfig option [`stopDir`]).
-- If at any point a parsable configuration is found, the [`search()`] Promise resolves with its [result] \(or, with [`explorerSync.search()`], the [result] is returned).
-- If no configuration object is found, the [`search()`] Promise resolves with `null` (or, with [`explorerSync.search()`], `null` is returned).
-- If a configuration object is found *but is malformed* (causing a parsing error), the [`search()`] Promise rejects with that error (so you should `.catch()` it). (Or, with [`explorerSync.search()`], the error is thrown.)
-
-**If you know exactly where your configuration file should be, you can use [`load()`], instead.**
-
-**The search process is highly customizable.**
-Use the cosmiconfig options [`searchPlaces`] and [`loaders`] to precisely define where you want to look for configurations and how you want to load them.
-
-#### searchFrom
-
-Type: `string`.
-Default: `process.cwd()`.
-
-A filename.
-[`search()`] will start its search here.
-
-If the value is a directory, that's where the search starts.
-If it's a file, the search starts in that file's directory.
-
-### explorer.load()
-
-```js
-explorer.load(loadPath).then(result => {..})
-```
-
-Loads a configuration file. Returns a Promise that resolves with a [result] or rejects with an error (if the file does not exist or cannot be loaded).
-
-Use `load` if you already know where the configuration file is and you just need to load it.
-
-```js
-explorer.load('load/this/file.json'); // Tries to load load/this/file.json.
-```
-
-If you load a `package.json` file, the result will be derived from whatever property is specified as your [`packageProp`].
-
-You can do the same thing synchronously with [`explorerSync.load()`].
-
-### explorer.clearLoadCache()
-
-Clears the cache used in [`load()`].
-
-### explorer.clearSearchCache()
-
-Clears the cache used in [`search()`].
-
-### explorer.clearCaches()
-
-Performs both [`clearLoadCache()`] and [`clearSearchCache()`].
-
-## Synchronsous API
-
-### cosmiconfigSync()
-
-```js
-const { cosmiconfigSync } = require('cosmiconfig');
-const explorerSync = cosmiconfigSync(moduleName[, cosmiconfigOptions])
-```
-
-Creates a *synchronous* cosmiconfig instance ("explorerSync") configured according to the arguments, and initializes its caches.
-
-See [`cosmiconfig()`].
-
-### explorerSync.search()
-
-```js
-const result = explorerSync.search([searchFrom]);
-```
-
-Synchronous version of [`explorer.search()`].
-
-Returns a [result] or `null`.
-
-### explorerSync.load()
-
-```js
-const result = explorerSync.load(loadPath);
-```
-
-Synchronous version of [`explorer.load()`].
-
-Returns a [result].
-
-### explorerSync.clearLoadCache()
-
-Clears the cache used in [`load()`].
-
-### explorerSync.clearSearchCache()
-
-Clears the cache used in [`search()`].
-
-### explorerSync.clearCaches()
-
-Performs both [`clearLoadCache()`] and [`clearSearchCache()`].
-
-## cosmiconfigOptions
-
-Type: `Object`.
-
-Possible options are documented below.
-
-### searchPlaces
-
-Type: `Array<string>`.
-Default: See below.
-
-An array of places that [`search()`] will check in each directory as it moves up the directory tree.
-Each place is relative to the directory being searched, and the places are checked in the specified order.
-
-**Default `searchPlaces`:**
-
-```js
-[
- 'package.json',
- `.${moduleName}rc`,
- `.${moduleName}rc.json`,
- `.${moduleName}rc.yaml`,
- `.${moduleName}rc.yml`,
- `.${moduleName}rc.js`,
- `${moduleName}.config.js`,
-]
-```
-
-Create your own array to search more, fewer, or altogether different places.
-
-Every item in `searchPlaces` needs to have a loader in [`loaders`] that corresponds to its extension.
-(Common extensions are covered by default loaders.)
-Read more about [`loaders`] below.
-
-`package.json` is a special value: When it is included in `searchPlaces`, Cosmiconfig will always parse it as JSON and load a property within it, not the whole file.
-That property is defined with the [`packageProp`] option, and defaults to your module name.
-
-Examples, with a module named `porgy`:
-
-```js
-// Disallow extensions on rc files:
-[
- 'package.json',
- '.porgyrc',
- 'porgy.config.js'
-]
-
-// ESLint searches for configuration in these places:
-[
- '.eslintrc.js',
- '.eslintrc.yaml',
- '.eslintrc.yml',
- '.eslintrc.json',
- '.eslintrc',
- 'package.json'
-]
-
-// Babel looks in fewer places:
-[
- 'package.json',
- '.babelrc'
-]
-
-// Maybe you want to look for a wide variety of JS flavors:
-[
- 'porgy.config.js',
- 'porgy.config.mjs',
- 'porgy.config.ts',
- 'porgy.config.coffee'
-]
-// ^^ You will need to designate custom loaders to tell
-// Cosmiconfig how to handle these special JS flavors.
-
-// Look within a .config/ subdirectory of every searched directory:
-[
- 'package.json',
- '.porgyrc',
- '.config/.porgyrc',
- '.porgyrc.json',
- '.config/.porgyrc.json'
-]
-```
-
-### loaders
-
-Type: `Object`.
-Default: See below.
-
-An object that maps extensions to the loader functions responsible for loading and parsing files with those extensions.
-
-Cosmiconfig exposes its default loaders on a named export `defaultLoaders`.
-
-**Default `loaders`:**
-
-```js
-const { defaultLoaders } = require('cosmiconfig');
-
-console.log(Object.entries(defaultLoaders))
-// [
-// [ '.js', [Function: loadJs] ],
-// [ '.json', [Function: loadJson] ],
-// [ '.yaml', [Function: loadYaml] ],
-// [ '.yml', [Function: loadYaml] ],
-// [ 'noExt', [Function: loadYaml] ]
-// ]
-```
-
-(YAML is a superset of JSON; which means YAML parsers can parse JSON; which is how extensionless files can be either YAML *or* JSON with only one parser.)
-
-**If you provide a `loaders` object, your object will be *merged* with the defaults.**
-So you can override one or two without having to override them all.
-
-**Keys in `loaders`** are extensions (starting with a period), or `noExt` to specify the loader for files *without* extensions, like `.myapprc`.
-
-**Values in `loaders`** are a loader function (described below) whose values are loader functions.
-
-**The most common use case for custom loaders value is to load extensionless `rc` files as strict JSON**, instead of JSON *or* YAML (the default).
-To accomplish that, provide the following `loaders` value:
-
-```js
-{
- noExt: defaultLoaders['.json']
-}
-```
-
-If you want to load files that are not handled by the loader functions Cosmiconfig exposes, you can write a custom loader function or use one from NPM if it exists.
-
-**Third-party loaders:**
-
-- [@endemolshinegroup/cosmiconfig-typescript-loader](https://github.com/EndemolShineGroup/cosmiconfig-typescript-loader)
-
-**Use cases for custom loader function:**
-
-- Allow configuration syntaxes that aren't handled by Cosmiconfig's defaults, like JSON5, INI, or XML.
-- Allow ES2015 modules from `.mjs` configuration files.
-- Parse JS files with Babel before deriving the configuration.
-
-**Custom loader functions** have the following signature:
-
-```js
-// Sync
-(filepath: string, content: string) => Object | null
-
-// Async
-(filepath: string, content: string) => Object | null | Promise<Object | null>
-```
-
-Cosmiconfig reads the file when it checks whether the file exists, so it will provide you with both the file's path and its content.
-Do whatever you need to, and return either a configuration object or `null` (or, for async-only loaders, a Promise that resolves with one of those).
-`null` indicates that no real configuration was found and the search should continue.
-
-A few things to note:
-
-- If you use a custom loader, be aware of whether it's sync or async: you cannot use async customer loaders with the sync API ([`cosmiconfigSync()`]).
-- **Special JS syntax can also be handled by using a `require` hook**, because `defaultLoaders['.js']` just uses `require`.
- Whether you use custom loaders or a `require` hook is up to you.
-
-Examples:
-
-```js
-// Allow JSON5 syntax:
-{
- '.json': json5Loader
-}
-
-// Allow a special configuration syntax of your own creation:
-{
- '.special': specialLoader
-}
-
-// Allow many flavors of JS, using custom loaders:
-{
- '.mjs': esmLoader,
- '.ts': typeScriptLoader,
- '.coffee': coffeeScriptLoader
-}
-
-// Allow many flavors of JS but rely on require hooks:
-{
- '.mjs': defaultLoaders['.js'],
- '.ts': defaultLoaders['.js'],
- '.coffee': defaultLoaders['.js']
-}
-```
-
-### packageProp
-
-Type: `string | Array<string>`.
-Default: `` `${moduleName}` ``.
-
-Name of the property in `package.json` to look for.
-
-Use a period-delimited string or an array of strings to describe a path to nested properties.
-
-For example, the value `'configs.myPackage'` or `['configs', 'myPackage']` will get you the `"myPackage"` value in a `package.json` like this:
-
-```json
-{
- "configs": {
- "myPackage": {..}
- }
-}
-```
-
-If nested property names within the path include periods, you need to use an array of strings. For example, the value `['configs', 'foo.bar', 'baz']` will get you the `"baz"` value in a `package.json` like this:
-
-```json
-{
- "configs": {
- "foo.bar": {
- "baz": {..}
- }
- }
-}
-```
-
-If a string includes period but corresponds to a top-level property name, it will not be interpreted as a period-delimited path. For example, the value `'one.two'` will get you the `"three"` value in a `package.json` like this:
-
-```json
-{
- "one.two": "three",
- "one": {
- "two": "four"
- }
-}
-```
-
-### stopDir
-
-Type: `string`.
-Default: Absolute path to your home directory.
-
-Directory where the search will stop.
-
-### cache
-
-Type: `boolean`.
-Default: `true`.
-
-If `false`, no caches will be used.
-Read more about ["Caching"](#caching) below.
-
-### transform
-
-Type: `(Result) => Promise<Result> | Result`.
-
-A function that transforms the parsed configuration. Receives the [result].
-
-If using [`search()`] or [`load()`] \(which are async), the transform function can return the transformed result or return a Promise that resolves with the transformed result.
-If using `cosmiconfigSync`, [`search()`] or [`load()`], the function must be synchronous and return the transformed result.
-
-The reason you might use this option — instead of simply applying your transform function some other way — is that *the transformed result will be cached*. If your transformation involves additional filesystem I/O or other potentially slow processing, you can use this option to avoid repeating those steps every time a given configuration is searched or loaded.
-
-### ignoreEmptySearchPlaces
-
-Type: `boolean`.
-Default: `true`.
-
-By default, if [`search()`] encounters an empty file (containing nothing but whitespace) in one of the [`searchPlaces`], it will ignore the empty file and move on.
-If you'd like to load empty configuration files, instead, set this option to `false`.
-
-Why might you want to load empty configuration files?
-If you want to throw an error, or if an empty configuration file means something to your program.
-
-## Caching
-
-As of v2, cosmiconfig uses caching to reduce the need for repetitious reading of the filesystem or expensive transforms. Every new cosmiconfig instance (created with `cosmiconfig()`) has its own caches.
-
-To avoid or work around caching, you can do the following:
-
-- Set the `cosmiconfig` option [`cache`] to `false`.
-- Use the cache-clearing methods [`clearLoadCache()`], [`clearSearchCache()`], and [`clearCaches()`].
-- Create separate instances of cosmiconfig (separate "explorers").
-
-## Differences from [rc](https://github.com/dominictarr/rc)
-
-[rc](https://github.com/dominictarr/rc) serves its focused purpose well. cosmiconfig differs in a few key ways — making it more useful for some projects, less useful for others:
-
-- Looks for configuration in some different places: in a `package.json` property, an rc file, a `.config.js` file, and rc files with extensions.
-- Built-in support for JSON, YAML, and CommonJS formats.
-- Stops at the first configuration found, instead of finding all that can be found up the directory tree and merging them automatically.
-- Options.
-- Asynchronous by default (though can be run synchronously).
-
-## Contributing & Development
-
-Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.
-
-And please do participate!
-
-[result]: #result
-
-[`load()`]: #explorerload
-
-[`search()`]: #explorersearch
-
-[`clearloadcache()`]: #explorerclearloadcache
-
-[`clearsearchcache()`]: #explorerclearsearchcache
-
-[`cosmiconfig()`]: #cosmiconfig
-
-[`cosmiconfigSync()`]: #cosmiconfigsync
-
-[`clearcaches()`]: #explorerclearcaches
-
-[`packageprop`]: #packageprop
-
-[`cache`]: #cache
-
-[`stopdir`]: #stopdir
-
-[`searchplaces`]: #searchplaces
-
-[`loaders`]: #loaders
-
-[`cosmiconfigoptions`]: #cosmiconfigoptions
-
-[`explorerSync.search()`]: #explorersyncsearch
-
-[`explorerSync.load()`]: #explorersyncload
-
-[`explorer.search()`]: #explorersearch
-
-[`explorer.load()`]: #explorerload
diff --git a/assets/node_modules/cosmiconfig/dist/Explorer.d.ts b/assets/node_modules/cosmiconfig/dist/Explorer.d.ts
deleted file mode 100644
index ffc1719..0000000
--- a/assets/node_modules/cosmiconfig/dist/Explorer.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { ExplorerBase } from './ExplorerBase';
-import { CosmiconfigResult, ExplorerOptions } from './types';
-declare class Explorer extends ExplorerBase<ExplorerOptions> {
- constructor(options: ExplorerOptions);
- search(searchFrom?: string): Promise<CosmiconfigResult>;
- private searchFromDirectory;
- private searchDirectory;
- private loadSearchPlace;
- private loadFileContent;
- private createCosmiconfigResult;
- load(filepath: string): Promise<CosmiconfigResult>;
-}
-export { Explorer };
-//# sourceMappingURL=Explorer.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/Explorer.d.ts.map b/assets/node_modules/cosmiconfig/dist/Explorer.d.ts.map
deleted file mode 100644
index 2d62edc..0000000
--- a/assets/node_modules/cosmiconfig/dist/Explorer.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"Explorer.d.ts","sourceRoot":"","sources":["../src/Explorer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAC;AAEhF,cAAM,QAAS,SAAQ,YAAY,CAAC,eAAe,CAAC;gBAC/B,OAAO,EAAE,eAAe;IAI9B,MAAM,CACjB,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,iBAAiB,CAAC;YAOf,mBAAmB;YAuBnB,eAAe;YAaf,eAAe;YAYf,eAAe;YAef,uBAAuB;IAUxB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAyBhE;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/Explorer.js b/assets/node_modules/cosmiconfig/dist/Explorer.js
deleted file mode 100644
index 1755995..0000000
--- a/assets/node_modules/cosmiconfig/dist/Explorer.js
+++ /dev/null
@@ -1,141 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.Explorer = void 0;
-
-var _path = _interopRequireDefault(require("path"));
-
-var _ExplorerBase = require("./ExplorerBase");
-
-var _readFile = require("./readFile");
-
-var _cacheWrapper = require("./cacheWrapper");
-
-var _getDirectory = require("./getDirectory");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _asyncIterator(iterable) { var method; if (typeof Symbol !== "undefined") { if (Symbol.asyncIterator) { method = iterable[Symbol.asyncIterator]; if (method != null) return method.call(iterable); } if (Symbol.iterator) { method = iterable[Symbol.iterator]; if (method != null) return method.call(iterable); } } throw new TypeError("Object is not async iterable"); }
-
-class Explorer extends _ExplorerBase.ExplorerBase {
- constructor(options) {
- super(options);
- }
-
- async search(searchFrom = process.cwd()) {
- const startDirectory = await (0, _getDirectory.getDirectory)(searchFrom);
- const result = await this.searchFromDirectory(startDirectory);
- return result;
- }
-
- async searchFromDirectory(dir) {
- const absoluteDir = _path.default.resolve(process.cwd(), dir);
-
- const run = async () => {
- const result = await this.searchDirectory(absoluteDir);
- const nextDir = this.nextDirectoryToSearch(absoluteDir, result);
-
- if (nextDir) {
- return this.searchFromDirectory(nextDir);
- }
-
- const transformResult = await this.config.transform(result);
- return transformResult;
- };
-
- if (this.searchCache) {
- return (0, _cacheWrapper.cacheWrapper)(this.searchCache, absoluteDir, run);
- }
-
- return run();
- }
-
- async searchDirectory(dir) {
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
-
- var _iteratorError;
-
- try {
- for (var _iterator = _asyncIterator(this.config.searchPlaces), _step, _value; _step = await _iterator.next(), _iteratorNormalCompletion = _step.done, _value = await _step.value, !_iteratorNormalCompletion; _iteratorNormalCompletion = true) {
- const place = _value;
- const placeResult = await this.loadSearchPlace(dir, place);
-
- if (this.shouldSearchStopWithResult(placeResult) === true) {
- return placeResult;
- }
- } // config not found
-
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- await _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-
- return null;
- }
-
- async loadSearchPlace(dir, place) {
- const filepath = _path.default.join(dir, place);
-
- const fileContents = await (0, _readFile.readFile)(filepath);
- const result = await this.createCosmiconfigResult(filepath, fileContents);
- return result;
- }
-
- async loadFileContent(filepath, content) {
- if (content === null) {
- return null;
- }
-
- if (content.trim() === '') {
- return undefined;
- }
-
- const loader = this.getLoaderEntryForFile(filepath);
- const loaderResult = await loader(filepath, content);
- return loaderResult;
- }
-
- async createCosmiconfigResult(filepath, content) {
- const fileContent = await this.loadFileContent(filepath, content);
- const result = this.loadedContentToCosmiconfigResult(filepath, fileContent);
- return result;
- }
-
- async load(filepath) {
- this.validateFilePath(filepath);
-
- const absoluteFilePath = _path.default.resolve(process.cwd(), filepath);
-
- const runLoad = async () => {
- const fileContents = await (0, _readFile.readFile)(absoluteFilePath, {
- throwNotFound: true
- });
- const result = await this.createCosmiconfigResult(absoluteFilePath, fileContents);
- const transformResult = await this.config.transform(result);
- return transformResult;
- };
-
- if (this.loadCache) {
- return (0, _cacheWrapper.cacheWrapper)(this.loadCache, absoluteFilePath, runLoad);
- }
-
- return runLoad();
- }
-
-}
-
-exports.Explorer = Explorer;
-//# sourceMappingURL=Explorer.js.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/Explorer.js.map b/assets/node_modules/cosmiconfig/dist/Explorer.js.map
deleted file mode 100644
index c4f608f..0000000
--- a/assets/node_modules/cosmiconfig/dist/Explorer.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/Explorer.ts"],"names":["Explorer","ExplorerBase","constructor","options","search","searchFrom","process","cwd","startDirectory","result","searchFromDirectory","dir","absoluteDir","path","resolve","run","searchDirectory","nextDir","nextDirectoryToSearch","transformResult","config","transform","searchCache","searchPlaces","place","placeResult","loadSearchPlace","shouldSearchStopWithResult","filepath","join","fileContents","createCosmiconfigResult","loadFileContent","content","trim","undefined","loader","getLoaderEntryForFile","loaderResult","fileContent","loadedContentToCosmiconfigResult","load","validateFilePath","absoluteFilePath","runLoad","throwNotFound","loadCache"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;AAGA,MAAMA,QAAN,SAAuBC,0BAAvB,CAAqD;AAC5CC,EAAAA,WAAP,CAAmBC,OAAnB,EAA6C;AAC3C,UAAMA,OAAN;AACD;;AAED,QAAaC,MAAb,CACEC,UAAkB,GAAGC,OAAO,CAACC,GAAR,EADvB,EAE8B;AAC5B,UAAMC,cAAc,GAAG,MAAM,gCAAaH,UAAb,CAA7B;AACA,UAAMI,MAAM,GAAG,MAAM,KAAKC,mBAAL,CAAyBF,cAAzB,CAArB;AAEA,WAAOC,MAAP;AACD;;AAED,QAAcC,mBAAd,CAAkCC,GAAlC,EAA2E;AACzE,UAAMC,WAAW,GAAGC,cAAKC,OAAL,CAAaR,OAAO,CAACC,GAAR,EAAb,EAA4BI,GAA5B,CAApB;;AAEA,UAAMI,GAAG,GAAG,YAAwC;AAClD,YAAMN,MAAM,GAAG,MAAM,KAAKO,eAAL,CAAqBJ,WAArB,CAArB;AACA,YAAMK,OAAO,GAAG,KAAKC,qBAAL,CAA2BN,WAA3B,EAAwCH,MAAxC,CAAhB;;AAEA,UAAIQ,OAAJ,EAAa;AACX,eAAO,KAAKP,mBAAL,CAAyBO,OAAzB,CAAP;AACD;;AAED,YAAME,eAAe,GAAG,MAAM,KAAKC,MAAL,CAAYC,SAAZ,CAAsBZ,MAAtB,CAA9B;AAEA,aAAOU,eAAP;AACD,KAXD;;AAaA,QAAI,KAAKG,WAAT,EAAsB;AACpB,aAAO,gCAAa,KAAKA,WAAlB,EAA+BV,WAA/B,EAA4CG,GAA5C,CAAP;AACD;;AAED,WAAOA,GAAG,EAAV;AACD;;AAED,QAAcC,eAAd,CAA8BL,GAA9B,EAAuE;AAAA;AAAA;;AAAA;;AAAA;AACrE,0CAA0B,KAAKS,MAAL,CAAYG,YAAtC,oLAAoD;AAAA,cAAnCC,KAAmC;AAClD,cAAMC,WAAW,GAAG,MAAM,KAAKC,eAAL,CAAqBf,GAArB,EAA0Ba,KAA1B,CAA1B;;AAEA,YAAI,KAAKG,0BAAL,CAAgCF,WAAhC,MAAiD,IAArD,EAA2D;AACzD,iBAAOA,WAAP;AACD;AACF,OAPoE,CASrE;;AATqE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAUrE,WAAO,IAAP;AACD;;AAED,QAAcC,eAAd,CACEf,GADF,EAEEa,KAFF,EAG8B;AAC5B,UAAMI,QAAQ,GAAGf,cAAKgB,IAAL,CAAUlB,GAAV,EAAea,KAAf,CAAjB;;AACA,UAAMM,YAAY,GAAG,MAAM,wBAASF,QAAT,CAA3B;AAEA,UAAMnB,MAAM,GAAG,MAAM,KAAKsB,uBAAL,CAA6BH,QAA7B,EAAuCE,YAAvC,CAArB;AAEA,WAAOrB,MAAP;AACD;;AAED,QAAcuB,eAAd,CACEJ,QADF,EAEEK,OAFF,EAG8B;AAC5B,QAAIA,OAAO,KAAK,IAAhB,EAAsB;AACpB,aAAO,IAAP;AACD;;AACD,QAAIA,OAAO,CAACC,IAAR,OAAmB,EAAvB,EAA2B;AACzB,aAAOC,SAAP;AACD;;AACD,UAAMC,MAAM,GAAG,KAAKC,qBAAL,CAA2BT,QAA3B,CAAf;AACA,UAAMU,YAAY,GAAG,MAAMF,MAAM,CAACR,QAAD,EAAWK,OAAX,CAAjC;AACA,WAAOK,YAAP;AACD;;AAED,QAAcP,uBAAd,CACEH,QADF,EAEEK,OAFF,EAG8B;AAC5B,UAAMM,WAAW,GAAG,MAAM,KAAKP,eAAL,CAAqBJ,QAArB,EAA+BK,OAA/B,CAA1B;AACA,UAAMxB,MAAM,GAAG,KAAK+B,gCAAL,CAAsCZ,QAAtC,EAAgDW,WAAhD,CAAf;AAEA,WAAO9B,MAAP;AACD;;AAED,QAAagC,IAAb,CAAkBb,QAAlB,EAAgE;AAC9D,SAAKc,gBAAL,CAAsBd,QAAtB;;AACA,UAAMe,gBAAgB,GAAG9B,cAAKC,OAAL,CAAaR,OAAO,CAACC,GAAR,EAAb,EAA4BqB,QAA5B,CAAzB;;AAEA,UAAMgB,OAAO,GAAG,YAAwC;AACtD,YAAMd,YAAY,GAAG,MAAM,wBAASa,gBAAT,EAA2B;AACpDE,QAAAA,aAAa,EAAE;AADqC,OAA3B,CAA3B;AAIA,YAAMpC,MAAM,GAAG,MAAM,KAAKsB,uBAAL,CACnBY,gBADmB,EAEnBb,YAFmB,CAArB;AAKA,YAAMX,eAAe,GAAG,MAAM,KAAKC,MAAL,CAAYC,SAAZ,CAAsBZ,MAAtB,CAA9B;AAEA,aAAOU,eAAP;AACD,KAbD;;AAeA,QAAI,KAAK2B,SAAT,EAAoB;AAClB,aAAO,gCAAa,KAAKA,SAAlB,EAA6BH,gBAA7B,EAA+CC,OAA/C,CAAP;AACD;;AAED,WAAOA,OAAO,EAAd;AACD;;AA/GkD","sourcesContent":["import path from 'path';\nimport { ExplorerBase } from './ExplorerBase';\nimport { readFile } from './readFile';\nimport { cacheWrapper } from './cacheWrapper';\nimport { getDirectory } from './getDirectory';\nimport { CosmiconfigResult, ExplorerOptions, LoadedFileContent } from './types';\n\nclass Explorer extends ExplorerBase<ExplorerOptions> {\n public constructor(options: ExplorerOptions) {\n super(options);\n }\n\n public async search(\n searchFrom: string = process.cwd(),\n ): Promise<CosmiconfigResult> {\n const startDirectory = await getDirectory(searchFrom);\n const result = await this.searchFromDirectory(startDirectory);\n\n return result;\n }\n\n private async searchFromDirectory(dir: string): Promise<CosmiconfigResult> {\n const absoluteDir = path.resolve(process.cwd(), dir);\n\n const run = async (): Promise<CosmiconfigResult> => {\n const result = await this.searchDirectory(absoluteDir);\n const nextDir = this.nextDirectoryToSearch(absoluteDir, result);\n\n if (nextDir) {\n return this.searchFromDirectory(nextDir);\n }\n\n const transformResult = await this.config.transform(result);\n\n return transformResult;\n };\n\n if (this.searchCache) {\n return cacheWrapper(this.searchCache, absoluteDir, run);\n }\n\n return run();\n }\n\n private async searchDirectory(dir: string): Promise<CosmiconfigResult> {\n for await (const place of this.config.searchPlaces) {\n const placeResult = await this.loadSearchPlace(dir, place);\n\n if (this.shouldSearchStopWithResult(placeResult) === true) {\n return placeResult;\n }\n }\n\n // config not found\n return null;\n }\n\n private async loadSearchPlace(\n dir: string,\n place: string,\n ): Promise<CosmiconfigResult> {\n const filepath = path.join(dir, place);\n const fileContents = await readFile(filepath);\n\n const result = await this.createCosmiconfigResult(filepath, fileContents);\n\n return result;\n }\n\n private async loadFileContent(\n filepath: string,\n content: string | null,\n ): Promise<LoadedFileContent> {\n if (content === null) {\n return null;\n }\n if (content.trim() === '') {\n return undefined;\n }\n const loader = this.getLoaderEntryForFile(filepath);\n const loaderResult = await loader(filepath, content);\n return loaderResult;\n }\n\n private async createCosmiconfigResult(\n filepath: string,\n content: string | null,\n ): Promise<CosmiconfigResult> {\n const fileContent = await this.loadFileContent(filepath, content);\n const result = this.loadedContentToCosmiconfigResult(filepath, fileContent);\n\n return result;\n }\n\n public async load(filepath: string): Promise<CosmiconfigResult> {\n this.validateFilePath(filepath);\n const absoluteFilePath = path.resolve(process.cwd(), filepath);\n\n const runLoad = async (): Promise<CosmiconfigResult> => {\n const fileContents = await readFile(absoluteFilePath, {\n throwNotFound: true,\n });\n\n const result = await this.createCosmiconfigResult(\n absoluteFilePath,\n fileContents,\n );\n\n const transformResult = await this.config.transform(result);\n\n return transformResult;\n };\n\n if (this.loadCache) {\n return cacheWrapper(this.loadCache, absoluteFilePath, runLoad);\n }\n\n return runLoad();\n }\n}\n\nexport { Explorer };\n"],"file":"Explorer.js"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/ExplorerBase.d.ts b/assets/node_modules/cosmiconfig/dist/ExplorerBase.d.ts
deleted file mode 100644
index 7749703..0000000
--- a/assets/node_modules/cosmiconfig/dist/ExplorerBase.d.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { CosmiconfigResult, ExplorerOptions, ExplorerOptionsSync, Cache, LoadedFileContent } from './types';
-import { Loader } from './index';
-declare class ExplorerBase<T extends ExplorerOptions | ExplorerOptionsSync> {
- protected readonly loadCache?: Cache;
- protected readonly searchCache?: Cache;
- protected readonly config: T;
- constructor(options: T);
- clearLoadCache(): void;
- clearSearchCache(): void;
- clearCaches(): void;
- private validateConfig;
- protected shouldSearchStopWithResult(result: CosmiconfigResult): boolean;
- protected nextDirectoryToSearch(currentDir: string, currentResult: CosmiconfigResult): string | null;
- private loadPackageProp;
- protected getLoaderEntryForFile(filepath: string): Loader;
- protected loadedContentToCosmiconfigResult(filepath: string, loadedContent: LoadedFileContent): CosmiconfigResult;
- protected validateFilePath(filepath: string): void;
-}
-declare function getExtensionDescription(filepath: string): string;
-export { ExplorerBase, getExtensionDescription };
-//# sourceMappingURL=ExplorerBase.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/ExplorerBase.d.ts.map b/assets/node_modules/cosmiconfig/dist/ExplorerBase.d.ts.map
deleted file mode 100644
index a55e67f..0000000
--- a/assets/node_modules/cosmiconfig/dist/ExplorerBase.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"ExplorerBase.d.ts","sourceRoot":"","sources":["../src/ExplorerBase.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,KAAK,EACL,iBAAiB,EAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,cAAM,YAAY,CAAC,CAAC,SAAS,eAAe,GAAG,mBAAmB;IAChE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;IACvC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAEV,OAAO,EAAE,CAAC;IAUtB,cAAc,IAAI,IAAI;IAMtB,gBAAgB,IAAI,IAAI;IAMxB,WAAW,IAAI,IAAI;IAK1B,OAAO,CAAC,cAAc;IAwBtB,SAAS,CAAC,0BAA0B,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO;IAMxE,SAAS,CAAC,qBAAqB,CAC7B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,iBAAiB,GAC/B,MAAM,GAAG,IAAI;IAWhB,OAAO,CAAC,eAAe;IASvB,SAAS,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAmBzD,SAAS,CAAC,gCAAgC,CACxC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,iBAAiB,GAC/B,iBAAiB;IAUpB,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAKnD;AAMD,iBAAS,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/ExplorerBase.js b/assets/node_modules/cosmiconfig/dist/ExplorerBase.js
deleted file mode 100644
index 213d34c..0000000
--- a/assets/node_modules/cosmiconfig/dist/ExplorerBase.js
+++ /dev/null
@@ -1,142 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.getExtensionDescription = getExtensionDescription;
-exports.ExplorerBase = void 0;
-
-var _path = _interopRequireDefault(require("path"));
-
-var _loaders = require("./loaders");
-
-var _getPropertyByPath = require("./getPropertyByPath");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class ExplorerBase {
- constructor(options) {
- if (options.cache === true) {
- this.loadCache = new Map();
- this.searchCache = new Map();
- }
-
- this.config = options;
- this.validateConfig();
- }
-
- clearLoadCache() {
- if (this.loadCache) {
- this.loadCache.clear();
- }
- }
-
- clearSearchCache() {
- if (this.searchCache) {
- this.searchCache.clear();
- }
- }
-
- clearCaches() {
- this.clearLoadCache();
- this.clearSearchCache();
- }
-
- validateConfig() {
- const config = this.config;
- config.searchPlaces.forEach(place => {
- const loaderKey = _path.default.extname(place) || 'noExt';
- const loader = config.loaders[loaderKey];
-
- if (!loader) {
- throw new Error(`No loader specified for ${getExtensionDescription(place)}, so searchPlaces item "${place}" is invalid`);
- }
-
- if (typeof loader !== 'function') {
- throw new Error(`loader for ${getExtensionDescription(place)} is not a function (type provided: "${typeof loader}"), so searchPlaces item "${place}" is invalid`);
- }
- });
- }
-
- shouldSearchStopWithResult(result) {
- if (result === null) return false;
- if (result.isEmpty && this.config.ignoreEmptySearchPlaces) return false;
- return true;
- }
-
- nextDirectoryToSearch(currentDir, currentResult) {
- if (this.shouldSearchStopWithResult(currentResult)) {
- return null;
- }
-
- const nextDir = nextDirUp(currentDir);
-
- if (nextDir === currentDir || currentDir === this.config.stopDir) {
- return null;
- }
-
- return nextDir;
- }
-
- loadPackageProp(filepath, content) {
- const parsedContent = _loaders.loaders.loadJson(filepath, content);
-
- const packagePropValue = (0, _getPropertyByPath.getPropertyByPath)(parsedContent, this.config.packageProp);
- return packagePropValue || null;
- }
-
- getLoaderEntryForFile(filepath) {
- if (_path.default.basename(filepath) === 'package.json') {
- const loader = this.loadPackageProp.bind(this);
- return loader;
- }
-
- const loaderKey = _path.default.extname(filepath) || 'noExt';
- const loader = this.config.loaders[loaderKey];
-
- if (!loader) {
- throw new Error(`No loader specified for ${getExtensionDescription(filepath)}`);
- }
-
- return loader;
- }
-
- loadedContentToCosmiconfigResult(filepath, loadedContent) {
- if (loadedContent === null) {
- return null;
- }
-
- if (loadedContent === undefined) {
- return {
- filepath,
- config: undefined,
- isEmpty: true
- };
- }
-
- return {
- config: loadedContent,
- filepath
- };
- }
-
- validateFilePath(filepath) {
- if (!filepath) {
- throw new Error('load must pass a non-empty string');
- }
- }
-
-}
-
-exports.ExplorerBase = ExplorerBase;
-
-function nextDirUp(dir) {
- return _path.default.dirname(dir);
-}
-
-function getExtensionDescription(filepath) {
- const ext = _path.default.extname(filepath);
-
- return ext ? `extension "${ext}"` : 'files without extensions';
-}
-//# sourceMappingURL=ExplorerBase.js.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/ExplorerBase.js.map b/assets/node_modules/cosmiconfig/dist/ExplorerBase.js.map
deleted file mode 100644
index 90d7a54..0000000
--- a/assets/node_modules/cosmiconfig/dist/ExplorerBase.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/ExplorerBase.ts"],"names":["ExplorerBase","constructor","options","cache","loadCache","Map","searchCache","config","validateConfig","clearLoadCache","clear","clearSearchCache","clearCaches","searchPlaces","forEach","place","loaderKey","path","extname","loader","loaders","Error","getExtensionDescription","shouldSearchStopWithResult","result","isEmpty","ignoreEmptySearchPlaces","nextDirectoryToSearch","currentDir","currentResult","nextDir","nextDirUp","stopDir","loadPackageProp","filepath","content","parsedContent","loadJson","packagePropValue","packageProp","getLoaderEntryForFile","basename","bind","loadedContentToCosmiconfigResult","loadedContent","undefined","validateFilePath","dir","dirname","ext"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;;;AAUA,MAAMA,YAAN,CAAoE;AAK3DC,EAAAA,WAAP,CAAmBC,OAAnB,EAA+B;AAC7B,QAAIA,OAAO,CAACC,KAAR,KAAkB,IAAtB,EAA4B;AAC1B,WAAKC,SAAL,GAAiB,IAAIC,GAAJ,EAAjB;AACA,WAAKC,WAAL,GAAmB,IAAID,GAAJ,EAAnB;AACD;;AAED,SAAKE,MAAL,GAAcL,OAAd;AACA,SAAKM,cAAL;AACD;;AAEMC,EAAAA,cAAP,GAA8B;AAC5B,QAAI,KAAKL,SAAT,EAAoB;AAClB,WAAKA,SAAL,CAAeM,KAAf;AACD;AACF;;AAEMC,EAAAA,gBAAP,GAAgC;AAC9B,QAAI,KAAKL,WAAT,EAAsB;AACpB,WAAKA,WAAL,CAAiBI,KAAjB;AACD;AACF;;AAEME,EAAAA,WAAP,GAA2B;AACzB,SAAKH,cAAL;AACA,SAAKE,gBAAL;AACD;;AAEOH,EAAAA,cAAR,GAA+B;AAC7B,UAAMD,MAAM,GAAG,KAAKA,MAApB;AAEAA,IAAAA,MAAM,CAACM,YAAP,CAAoBC,OAApB,CAA6BC,KAAD,IAAiB;AAC3C,YAAMC,SAAS,GAAGC,cAAKC,OAAL,CAAaH,KAAb,KAAuB,OAAzC;AACA,YAAMI,MAAM,GAAGZ,MAAM,CAACa,OAAP,CAAeJ,SAAf,CAAf;;AACA,UAAI,CAACG,MAAL,EAAa;AACX,cAAM,IAAIE,KAAJ,CACH,2BAA0BC,uBAAuB,CAChDP,KADgD,CAEhD,2BAA0BA,KAAM,cAH9B,CAAN;AAKD;;AAED,UAAI,OAAOI,MAAP,KAAkB,UAAtB,EAAkC;AAChC,cAAM,IAAIE,KAAJ,CACH,cAAaC,uBAAuB,CACnCP,KADmC,CAEnC,uCAAsC,OAAOI,MAAO,6BAA4BJ,KAAM,cAHpF,CAAN;AAKD;AACF,KAlBD;AAmBD;;AAESQ,EAAAA,0BAAV,CAAqCC,MAArC,EAAyE;AACvE,QAAIA,MAAM,KAAK,IAAf,EAAqB,OAAO,KAAP;AACrB,QAAIA,MAAM,CAACC,OAAP,IAAkB,KAAKlB,MAAL,CAAYmB,uBAAlC,EAA2D,OAAO,KAAP;AAC3D,WAAO,IAAP;AACD;;AAESC,EAAAA,qBAAV,CACEC,UADF,EAEEC,aAFF,EAGiB;AACf,QAAI,KAAKN,0BAAL,CAAgCM,aAAhC,CAAJ,EAAoD;AAClD,aAAO,IAAP;AACD;;AACD,UAAMC,OAAO,GAAGC,SAAS,CAACH,UAAD,CAAzB;;AACA,QAAIE,OAAO,KAAKF,UAAZ,IAA0BA,UAAU,KAAK,KAAKrB,MAAL,CAAYyB,OAAzD,EAAkE;AAChE,aAAO,IAAP;AACD;;AACD,WAAOF,OAAP;AACD;;AAEOG,EAAAA,eAAR,CAAwBC,QAAxB,EAA0CC,OAA1C,EAAoE;AAClE,UAAMC,aAAa,GAAGhB,iBAAQiB,QAAR,CAAiBH,QAAjB,EAA2BC,OAA3B,CAAtB;;AACA,UAAMG,gBAAgB,GAAG,0CACvBF,aADuB,EAEvB,KAAK7B,MAAL,CAAYgC,WAFW,CAAzB;AAIA,WAAOD,gBAAgB,IAAI,IAA3B;AACD;;AAESE,EAAAA,qBAAV,CAAgCN,QAAhC,EAA0D;AACxD,QAAIjB,cAAKwB,QAAL,CAAcP,QAAd,MAA4B,cAAhC,EAAgD;AAC9C,YAAMf,MAAM,GAAG,KAAKc,eAAL,CAAqBS,IAArB,CAA0B,IAA1B,CAAf;AACA,aAAOvB,MAAP;AACD;;AAED,UAAMH,SAAS,GAAGC,cAAKC,OAAL,CAAagB,QAAb,KAA0B,OAA5C;AAEA,UAAMf,MAAM,GAAG,KAAKZ,MAAL,CAAYa,OAAZ,CAAoBJ,SAApB,CAAf;;AAEA,QAAI,CAACG,MAAL,EAAa;AACX,YAAM,IAAIE,KAAJ,CACH,2BAA0BC,uBAAuB,CAACY,QAAD,CAAW,EADzD,CAAN;AAGD;;AAED,WAAOf,MAAP;AACD;;AAESwB,EAAAA,gCAAV,CACET,QADF,EAEEU,aAFF,EAGqB;AACnB,QAAIA,aAAa,KAAK,IAAtB,EAA4B;AAC1B,aAAO,IAAP;AACD;;AACD,QAAIA,aAAa,KAAKC,SAAtB,EAAiC;AAC/B,aAAO;AAAEX,QAAAA,QAAF;AAAY3B,QAAAA,MAAM,EAAEsC,SAApB;AAA+BpB,QAAAA,OAAO,EAAE;AAAxC,OAAP;AACD;;AACD,WAAO;AAAElB,MAAAA,MAAM,EAAEqC,aAAV;AAAyBV,MAAAA;AAAzB,KAAP;AACD;;AAESY,EAAAA,gBAAV,CAA2BZ,QAA3B,EAAmD;AACjD,QAAI,CAACA,QAAL,EAAe;AACb,YAAM,IAAIb,KAAJ,CAAU,mCAAV,CAAN;AACD;AACF;;AAzHiE;;;;AA4HpE,SAASU,SAAT,CAAmBgB,GAAnB,EAAwC;AACtC,SAAO9B,cAAK+B,OAAL,CAAaD,GAAb,CAAP;AACD;;AAED,SAASzB,uBAAT,CAAiCY,QAAjC,EAA2D;AACzD,QAAMe,GAAG,GAAGhC,cAAKC,OAAL,CAAagB,QAAb,CAAZ;;AACA,SAAOe,GAAG,GAAI,cAAaA,GAAI,GAArB,GAA0B,0BAApC;AACD","sourcesContent":["import path from 'path';\nimport { loaders } from './loaders';\nimport { getPropertyByPath } from './getPropertyByPath';\nimport {\n CosmiconfigResult,\n ExplorerOptions,\n ExplorerOptionsSync,\n Cache,\n LoadedFileContent,\n} from './types';\nimport { Loader } from './index';\n\nclass ExplorerBase<T extends ExplorerOptions | ExplorerOptionsSync> {\n protected readonly loadCache?: Cache;\n protected readonly searchCache?: Cache;\n protected readonly config: T;\n\n public constructor(options: T) {\n if (options.cache === true) {\n this.loadCache = new Map();\n this.searchCache = new Map();\n }\n\n this.config = options;\n this.validateConfig();\n }\n\n public clearLoadCache(): void {\n if (this.loadCache) {\n this.loadCache.clear();\n }\n }\n\n public clearSearchCache(): void {\n if (this.searchCache) {\n this.searchCache.clear();\n }\n }\n\n public clearCaches(): void {\n this.clearLoadCache();\n this.clearSearchCache();\n }\n\n private validateConfig(): void {\n const config = this.config;\n\n config.searchPlaces.forEach((place): void => {\n const loaderKey = path.extname(place) || 'noExt';\n const loader = config.loaders[loaderKey];\n if (!loader) {\n throw new Error(\n `No loader specified for ${getExtensionDescription(\n place,\n )}, so searchPlaces item \"${place}\" is invalid`,\n );\n }\n\n if (typeof loader !== 'function') {\n throw new Error(\n `loader for ${getExtensionDescription(\n place,\n )} is not a function (type provided: \"${typeof loader}\"), so searchPlaces item \"${place}\" is invalid`,\n );\n }\n });\n }\n\n protected shouldSearchStopWithResult(result: CosmiconfigResult): boolean {\n if (result === null) return false;\n if (result.isEmpty && this.config.ignoreEmptySearchPlaces) return false;\n return true;\n }\n\n protected nextDirectoryToSearch(\n currentDir: string,\n currentResult: CosmiconfigResult,\n ): string | null {\n if (this.shouldSearchStopWithResult(currentResult)) {\n return null;\n }\n const nextDir = nextDirUp(currentDir);\n if (nextDir === currentDir || currentDir === this.config.stopDir) {\n return null;\n }\n return nextDir;\n }\n\n private loadPackageProp(filepath: string, content: string): unknown {\n const parsedContent = loaders.loadJson(filepath, content);\n const packagePropValue = getPropertyByPath(\n parsedContent,\n this.config.packageProp,\n );\n return packagePropValue || null;\n }\n\n protected getLoaderEntryForFile(filepath: string): Loader {\n if (path.basename(filepath) === 'package.json') {\n const loader = this.loadPackageProp.bind(this);\n return loader;\n }\n\n const loaderKey = path.extname(filepath) || 'noExt';\n\n const loader = this.config.loaders[loaderKey];\n\n if (!loader) {\n throw new Error(\n `No loader specified for ${getExtensionDescription(filepath)}`,\n );\n }\n\n return loader;\n }\n\n protected loadedContentToCosmiconfigResult(\n filepath: string,\n loadedContent: LoadedFileContent,\n ): CosmiconfigResult {\n if (loadedContent === null) {\n return null;\n }\n if (loadedContent === undefined) {\n return { filepath, config: undefined, isEmpty: true };\n }\n return { config: loadedContent, filepath };\n }\n\n protected validateFilePath(filepath: string): void {\n if (!filepath) {\n throw new Error('load must pass a non-empty string');\n }\n }\n}\n\nfunction nextDirUp(dir: string): string {\n return path.dirname(dir);\n}\n\nfunction getExtensionDescription(filepath: string): string {\n const ext = path.extname(filepath);\n return ext ? `extension \"${ext}\"` : 'files without extensions';\n}\n\nexport { ExplorerBase, getExtensionDescription };\n"],"file":"ExplorerBase.js"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/ExplorerSync.d.ts b/assets/node_modules/cosmiconfig/dist/ExplorerSync.d.ts
deleted file mode 100644
index 458fbc4..0000000
--- a/assets/node_modules/cosmiconfig/dist/ExplorerSync.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { ExplorerBase } from './ExplorerBase';
-import { CosmiconfigResult, ExplorerOptionsSync } from './types';
-declare class ExplorerSync extends ExplorerBase<ExplorerOptionsSync> {
- constructor(options: ExplorerOptionsSync);
- searchSync(searchFrom?: string): CosmiconfigResult;
- private searchFromDirectorySync;
- private searchDirectorySync;
- private loadSearchPlaceSync;
- private loadFileContentSync;
- private createCosmiconfigResultSync;
- loadSync(filepath: string): CosmiconfigResult;
-}
-export { ExplorerSync };
-//# sourceMappingURL=ExplorerSync.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/ExplorerSync.d.ts.map b/assets/node_modules/cosmiconfig/dist/ExplorerSync.d.ts.map
deleted file mode 100644
index c3dae5d..0000000
--- a/assets/node_modules/cosmiconfig/dist/ExplorerSync.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"ExplorerSync.d.ts","sourceRoot":"","sources":["../src/ExplorerSync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EAEpB,MAAM,SAAS,CAAC;AAEjB,cAAM,YAAa,SAAQ,YAAY,CAAC,mBAAmB,CAAC;gBACvC,OAAO,EAAE,mBAAmB;IAIxC,UAAU,CAAC,UAAU,GAAE,MAAsB,GAAG,iBAAiB;IAOxE,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,2BAA2B;IAU5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB;CAsBrD;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/ExplorerSync.js b/assets/node_modules/cosmiconfig/dist/ExplorerSync.js
deleted file mode 100644
index dd57ac4..0000000
--- a/assets/node_modules/cosmiconfig/dist/ExplorerSync.js
+++ /dev/null
@@ -1,118 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.ExplorerSync = void 0;
-
-var _path = _interopRequireDefault(require("path"));
-
-var _ExplorerBase = require("./ExplorerBase");
-
-var _readFile = require("./readFile");
-
-var _cacheWrapper = require("./cacheWrapper");
-
-var _getDirectory = require("./getDirectory");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class ExplorerSync extends _ExplorerBase.ExplorerBase {
- constructor(options) {
- super(options);
- }
-
- searchSync(searchFrom = process.cwd()) {
- const startDirectory = (0, _getDirectory.getDirectorySync)(searchFrom);
- const result = this.searchFromDirectorySync(startDirectory);
- return result;
- }
-
- searchFromDirectorySync(dir) {
- const absoluteDir = _path.default.resolve(process.cwd(), dir);
-
- const run = () => {
- const result = this.searchDirectorySync(absoluteDir);
- const nextDir = this.nextDirectoryToSearch(absoluteDir, result);
-
- if (nextDir) {
- return this.searchFromDirectorySync(nextDir);
- }
-
- const transformResult = this.config.transform(result);
- return transformResult;
- };
-
- if (this.searchCache) {
- return (0, _cacheWrapper.cacheWrapperSync)(this.searchCache, absoluteDir, run);
- }
-
- return run();
- }
-
- searchDirectorySync(dir) {
- for (const place of this.config.searchPlaces) {
- const placeResult = this.loadSearchPlaceSync(dir, place);
-
- if (this.shouldSearchStopWithResult(placeResult) === true) {
- return placeResult;
- }
- } // config not found
-
-
- return null;
- }
-
- loadSearchPlaceSync(dir, place) {
- const filepath = _path.default.join(dir, place);
-
- const content = (0, _readFile.readFileSync)(filepath);
- const result = this.createCosmiconfigResultSync(filepath, content);
- return result;
- }
-
- loadFileContentSync(filepath, content) {
- if (content === null) {
- return null;
- }
-
- if (content.trim() === '') {
- return undefined;
- }
-
- const loader = this.getLoaderEntryForFile(filepath);
- const loaderResult = loader(filepath, content);
- return loaderResult;
- }
-
- createCosmiconfigResultSync(filepath, content) {
- const fileContent = this.loadFileContentSync(filepath, content);
- const result = this.loadedContentToCosmiconfigResult(filepath, fileContent);
- return result;
- }
-
- loadSync(filepath) {
- this.validateFilePath(filepath);
-
- const absoluteFilePath = _path.default.resolve(process.cwd(), filepath);
-
- const runLoadSync = () => {
- const content = (0, _readFile.readFileSync)(absoluteFilePath, {
- throwNotFound: true
- });
- const cosmiconfigResult = this.createCosmiconfigResultSync(absoluteFilePath, content);
- const transformResult = this.config.transform(cosmiconfigResult);
- return transformResult;
- };
-
- if (this.loadCache) {
- return (0, _cacheWrapper.cacheWrapperSync)(this.loadCache, absoluteFilePath, runLoadSync);
- }
-
- return runLoadSync();
- }
-
-}
-
-exports.ExplorerSync = ExplorerSync;
-//# sourceMappingURL=ExplorerSync.js.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/ExplorerSync.js.map b/assets/node_modules/cosmiconfig/dist/ExplorerSync.js.map
deleted file mode 100644
index f9528e0..0000000
--- a/assets/node_modules/cosmiconfig/dist/ExplorerSync.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/ExplorerSync.ts"],"names":["ExplorerSync","ExplorerBase","constructor","options","searchSync","searchFrom","process","cwd","startDirectory","result","searchFromDirectorySync","dir","absoluteDir","path","resolve","run","searchDirectorySync","nextDir","nextDirectoryToSearch","transformResult","config","transform","searchCache","place","searchPlaces","placeResult","loadSearchPlaceSync","shouldSearchStopWithResult","filepath","join","content","createCosmiconfigResultSync","loadFileContentSync","trim","undefined","loader","getLoaderEntryForFile","loaderResult","fileContent","loadedContentToCosmiconfigResult","loadSync","validateFilePath","absoluteFilePath","runLoadSync","throwNotFound","cosmiconfigResult","loadCache"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;AAOA,MAAMA,YAAN,SAA2BC,0BAA3B,CAA6D;AACpDC,EAAAA,WAAP,CAAmBC,OAAnB,EAAiD;AAC/C,UAAMA,OAAN;AACD;;AAEMC,EAAAA,UAAP,CAAkBC,UAAkB,GAAGC,OAAO,CAACC,GAAR,EAAvC,EAAyE;AACvE,UAAMC,cAAc,GAAG,oCAAiBH,UAAjB,CAAvB;AACA,UAAMI,MAAM,GAAG,KAAKC,uBAAL,CAA6BF,cAA7B,CAAf;AAEA,WAAOC,MAAP;AACD;;AAEOC,EAAAA,uBAAR,CAAgCC,GAAhC,EAAgE;AAC9D,UAAMC,WAAW,GAAGC,cAAKC,OAAL,CAAaR,OAAO,CAACC,GAAR,EAAb,EAA4BI,GAA5B,CAApB;;AAEA,UAAMI,GAAG,GAAG,MAAyB;AACnC,YAAMN,MAAM,GAAG,KAAKO,mBAAL,CAAyBJ,WAAzB,CAAf;AACA,YAAMK,OAAO,GAAG,KAAKC,qBAAL,CAA2BN,WAA3B,EAAwCH,MAAxC,CAAhB;;AAEA,UAAIQ,OAAJ,EAAa;AACX,eAAO,KAAKP,uBAAL,CAA6BO,OAA7B,CAAP;AACD;;AAED,YAAME,eAAe,GAAG,KAAKC,MAAL,CAAYC,SAAZ,CAAsBZ,MAAtB,CAAxB;AAEA,aAAOU,eAAP;AACD,KAXD;;AAaA,QAAI,KAAKG,WAAT,EAAsB;AACpB,aAAO,oCAAiB,KAAKA,WAAtB,EAAmCV,WAAnC,EAAgDG,GAAhD,CAAP;AACD;;AAED,WAAOA,GAAG,EAAV;AACD;;AAEOC,EAAAA,mBAAR,CAA4BL,GAA5B,EAA4D;AAC1D,SAAK,MAAMY,KAAX,IAAoB,KAAKH,MAAL,CAAYI,YAAhC,EAA8C;AAC5C,YAAMC,WAAW,GAAG,KAAKC,mBAAL,CAAyBf,GAAzB,EAA8BY,KAA9B,CAApB;;AAEA,UAAI,KAAKI,0BAAL,CAAgCF,WAAhC,MAAiD,IAArD,EAA2D;AACzD,eAAOA,WAAP;AACD;AACF,KAPyD,CAS1D;;;AACA,WAAO,IAAP;AACD;;AAEOC,EAAAA,mBAAR,CAA4Bf,GAA5B,EAAyCY,KAAzC,EAA2E;AACzE,UAAMK,QAAQ,GAAGf,cAAKgB,IAAL,CAAUlB,GAAV,EAAeY,KAAf,CAAjB;;AACA,UAAMO,OAAO,GAAG,4BAAaF,QAAb,CAAhB;AAEA,UAAMnB,MAAM,GAAG,KAAKsB,2BAAL,CAAiCH,QAAjC,EAA2CE,OAA3C,CAAf;AAEA,WAAOrB,MAAP;AACD;;AAEOuB,EAAAA,mBAAR,CACEJ,QADF,EAEEE,OAFF,EAGqB;AACnB,QAAIA,OAAO,KAAK,IAAhB,EAAsB;AACpB,aAAO,IAAP;AACD;;AACD,QAAIA,OAAO,CAACG,IAAR,OAAmB,EAAvB,EAA2B;AACzB,aAAOC,SAAP;AACD;;AACD,UAAMC,MAAM,GAAG,KAAKC,qBAAL,CAA2BR,QAA3B,CAAf;AACA,UAAMS,YAAY,GAAGF,MAAM,CAACP,QAAD,EAAWE,OAAX,CAA3B;AAEA,WAAOO,YAAP;AACD;;AAEON,EAAAA,2BAAR,CACEH,QADF,EAEEE,OAFF,EAGqB;AACnB,UAAMQ,WAAW,GAAG,KAAKN,mBAAL,CAAyBJ,QAAzB,EAAmCE,OAAnC,CAApB;AACA,UAAMrB,MAAM,GAAG,KAAK8B,gCAAL,CAAsCX,QAAtC,EAAgDU,WAAhD,CAAf;AAEA,WAAO7B,MAAP;AACD;;AAEM+B,EAAAA,QAAP,CAAgBZ,QAAhB,EAAqD;AACnD,SAAKa,gBAAL,CAAsBb,QAAtB;;AACA,UAAMc,gBAAgB,GAAG7B,cAAKC,OAAL,CAAaR,OAAO,CAACC,GAAR,EAAb,EAA4BqB,QAA5B,CAAzB;;AAEA,UAAMe,WAAW,GAAG,MAAyB;AAC3C,YAAMb,OAAO,GAAG,4BAAaY,gBAAb,EAA+B;AAAEE,QAAAA,aAAa,EAAE;AAAjB,OAA/B,CAAhB;AACA,YAAMC,iBAAiB,GAAG,KAAKd,2BAAL,CACxBW,gBADwB,EAExBZ,OAFwB,CAA1B;AAKA,YAAMX,eAAe,GAAG,KAAKC,MAAL,CAAYC,SAAZ,CAAsBwB,iBAAtB,CAAxB;AAEA,aAAO1B,eAAP;AACD,KAVD;;AAYA,QAAI,KAAK2B,SAAT,EAAoB;AAClB,aAAO,oCAAiB,KAAKA,SAAtB,EAAiCJ,gBAAjC,EAAmDC,WAAnD,CAAP;AACD;;AAED,WAAOA,WAAW,EAAlB;AACD;;AAxG0D","sourcesContent":["import path from 'path';\nimport { ExplorerBase } from './ExplorerBase';\nimport { readFileSync } from './readFile';\nimport { cacheWrapperSync } from './cacheWrapper';\nimport { getDirectorySync } from './getDirectory';\nimport {\n CosmiconfigResult,\n ExplorerOptionsSync,\n LoadedFileContent,\n} from './types';\n\nclass ExplorerSync extends ExplorerBase<ExplorerOptionsSync> {\n public constructor(options: ExplorerOptionsSync) {\n super(options);\n }\n\n public searchSync(searchFrom: string = process.cwd()): CosmiconfigResult {\n const startDirectory = getDirectorySync(searchFrom);\n const result = this.searchFromDirectorySync(startDirectory);\n\n return result;\n }\n\n private searchFromDirectorySync(dir: string): CosmiconfigResult {\n const absoluteDir = path.resolve(process.cwd(), dir);\n\n const run = (): CosmiconfigResult => {\n const result = this.searchDirectorySync(absoluteDir);\n const nextDir = this.nextDirectoryToSearch(absoluteDir, result);\n\n if (nextDir) {\n return this.searchFromDirectorySync(nextDir);\n }\n\n const transformResult = this.config.transform(result);\n\n return transformResult;\n };\n\n if (this.searchCache) {\n return cacheWrapperSync(this.searchCache, absoluteDir, run);\n }\n\n return run();\n }\n\n private searchDirectorySync(dir: string): CosmiconfigResult {\n for (const place of this.config.searchPlaces) {\n const placeResult = this.loadSearchPlaceSync(dir, place);\n\n if (this.shouldSearchStopWithResult(placeResult) === true) {\n return placeResult;\n }\n }\n\n // config not found\n return null;\n }\n\n private loadSearchPlaceSync(dir: string, place: string): CosmiconfigResult {\n const filepath = path.join(dir, place);\n const content = readFileSync(filepath);\n\n const result = this.createCosmiconfigResultSync(filepath, content);\n\n return result;\n }\n\n private loadFileContentSync(\n filepath: string,\n content: string | null,\n ): LoadedFileContent {\n if (content === null) {\n return null;\n }\n if (content.trim() === '') {\n return undefined;\n }\n const loader = this.getLoaderEntryForFile(filepath);\n const loaderResult = loader(filepath, content);\n\n return loaderResult;\n }\n\n private createCosmiconfigResultSync(\n filepath: string,\n content: string | null,\n ): CosmiconfigResult {\n const fileContent = this.loadFileContentSync(filepath, content);\n const result = this.loadedContentToCosmiconfigResult(filepath, fileContent);\n\n return result;\n }\n\n public loadSync(filepath: string): CosmiconfigResult {\n this.validateFilePath(filepath);\n const absoluteFilePath = path.resolve(process.cwd(), filepath);\n\n const runLoadSync = (): CosmiconfigResult => {\n const content = readFileSync(absoluteFilePath, { throwNotFound: true });\n const cosmiconfigResult = this.createCosmiconfigResultSync(\n absoluteFilePath,\n content,\n );\n\n const transformResult = this.config.transform(cosmiconfigResult);\n\n return transformResult;\n };\n\n if (this.loadCache) {\n return cacheWrapperSync(this.loadCache, absoluteFilePath, runLoadSync);\n }\n\n return runLoadSync();\n }\n}\n\nexport { ExplorerSync };\n"],"file":"ExplorerSync.js"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/cacheWrapper.d.ts b/assets/node_modules/cosmiconfig/dist/cacheWrapper.d.ts
deleted file mode 100644
index adb569e..0000000
--- a/assets/node_modules/cosmiconfig/dist/cacheWrapper.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { Cache, CosmiconfigResult } from './types';
-declare function cacheWrapper(cache: Cache, key: string, fn: () => Promise<CosmiconfigResult>): Promise<CosmiconfigResult>;
-declare function cacheWrapperSync(cache: Cache, key: string, fn: () => CosmiconfigResult): CosmiconfigResult;
-export { cacheWrapper, cacheWrapperSync };
-//# sourceMappingURL=cacheWrapper.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/cacheWrapper.d.ts.map b/assets/node_modules/cosmiconfig/dist/cacheWrapper.d.ts.map
deleted file mode 100644
index dc7e73f..0000000
--- a/assets/node_modules/cosmiconfig/dist/cacheWrapper.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"cacheWrapper.d.ts","sourceRoot":"","sources":["../src/cacheWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEnD,iBAAe,YAAY,CACzB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,GACnC,OAAO,CAAC,iBAAiB,CAAC,CAS5B;AAED,iBAAS,gBAAgB,CACvB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,iBAAiB,GAC1B,iBAAiB,CASnB;AAED,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/cacheWrapper.js b/assets/node_modules/cosmiconfig/dist/cacheWrapper.js
deleted file mode 100644
index 712db92..0000000
--- a/assets/node_modules/cosmiconfig/dist/cacheWrapper.js
+++ /dev/null
@@ -1,32 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.cacheWrapper = cacheWrapper;
-exports.cacheWrapperSync = cacheWrapperSync;
-
-async function cacheWrapper(cache, key, fn) {
- const cached = cache.get(key);
-
- if (cached !== undefined) {
- return cached;
- }
-
- const result = await fn();
- cache.set(key, result);
- return result;
-}
-
-function cacheWrapperSync(cache, key, fn) {
- const cached = cache.get(key);
-
- if (cached !== undefined) {
- return cached;
- }
-
- const result = fn();
- cache.set(key, result);
- return result;
-}
-//# sourceMappingURL=cacheWrapper.js.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/cacheWrapper.js.map b/assets/node_modules/cosmiconfig/dist/cacheWrapper.js.map
deleted file mode 100644
index a9ead96..0000000
--- a/assets/node_modules/cosmiconfig/dist/cacheWrapper.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/cacheWrapper.ts"],"names":["cacheWrapper","cache","key","fn","cached","get","undefined","result","set","cacheWrapperSync"],"mappings":";;;;;;;;AAEA,eAAeA,YAAf,CACEC,KADF,EAEEC,GAFF,EAGEC,EAHF,EAI8B;AAC5B,QAAMC,MAAM,GAAGH,KAAK,CAACI,GAAN,CAAUH,GAAV,CAAf;;AACA,MAAIE,MAAM,KAAKE,SAAf,EAA0B;AACxB,WAAOF,MAAP;AACD;;AAED,QAAMG,MAAM,GAAG,MAAMJ,EAAE,EAAvB;AACAF,EAAAA,KAAK,CAACO,GAAN,CAAUN,GAAV,EAAeK,MAAf;AACA,SAAOA,MAAP;AACD;;AAED,SAASE,gBAAT,CACER,KADF,EAEEC,GAFF,EAGEC,EAHF,EAIqB;AACnB,QAAMC,MAAM,GAAGH,KAAK,CAACI,GAAN,CAAUH,GAAV,CAAf;;AACA,MAAIE,MAAM,KAAKE,SAAf,EAA0B;AACxB,WAAOF,MAAP;AACD;;AAED,QAAMG,MAAM,GAAGJ,EAAE,EAAjB;AACAF,EAAAA,KAAK,CAACO,GAAN,CAAUN,GAAV,EAAeK,MAAf;AACA,SAAOA,MAAP;AACD","sourcesContent":["import { Cache, CosmiconfigResult } from './types';\n\nasync function cacheWrapper(\n cache: Cache,\n key: string,\n fn: () => Promise<CosmiconfigResult>,\n): Promise<CosmiconfigResult> {\n const cached = cache.get(key);\n if (cached !== undefined) {\n return cached;\n }\n\n const result = await fn();\n cache.set(key, result);\n return result;\n}\n\nfunction cacheWrapperSync(\n cache: Cache,\n key: string,\n fn: () => CosmiconfigResult,\n): CosmiconfigResult {\n const cached = cache.get(key);\n if (cached !== undefined) {\n return cached;\n }\n\n const result = fn();\n cache.set(key, result);\n return result;\n}\n\nexport { cacheWrapper, cacheWrapperSync };\n"],"file":"cacheWrapper.js"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/getDirectory.d.ts b/assets/node_modules/cosmiconfig/dist/getDirectory.d.ts
deleted file mode 100644
index 3b53068..0000000
--- a/assets/node_modules/cosmiconfig/dist/getDirectory.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-declare function getDirectory(filepath: string): Promise<string>;
-declare function getDirectorySync(filepath: string): string;
-export { getDirectory, getDirectorySync };
-//# sourceMappingURL=getDirectory.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/getDirectory.d.ts.map b/assets/node_modules/cosmiconfig/dist/getDirectory.d.ts.map
deleted file mode 100644
index 37288a7..0000000
--- a/assets/node_modules/cosmiconfig/dist/getDirectory.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"getDirectory.d.ts","sourceRoot":"","sources":["../src/getDirectory.ts"],"names":[],"mappings":"AAGA,iBAAe,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU7D;AAED,iBAAS,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUlD;AAED,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/getDirectory.js b/assets/node_modules/cosmiconfig/dist/getDirectory.js
deleted file mode 100644
index e0f0a69..0000000
--- a/assets/node_modules/cosmiconfig/dist/getDirectory.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.getDirectory = getDirectory;
-exports.getDirectorySync = getDirectorySync;
-
-var _path = _interopRequireDefault(require("path"));
-
-var _pathType = require("path-type");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-async function getDirectory(filepath) {
- const filePathIsDirectory = await (0, _pathType.isDirectory)(filepath);
-
- if (filePathIsDirectory === true) {
- return filepath;
- }
-
- const directory = _path.default.dirname(filepath);
-
- return directory;
-}
-
-function getDirectorySync(filepath) {
- const filePathIsDirectory = (0, _pathType.isDirectorySync)(filepath);
-
- if (filePathIsDirectory === true) {
- return filepath;
- }
-
- const directory = _path.default.dirname(filepath);
-
- return directory;
-}
-//# sourceMappingURL=getDirectory.js.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/getDirectory.js.map b/assets/node_modules/cosmiconfig/dist/getDirectory.js.map
deleted file mode 100644
index 361d53a..0000000
--- a/assets/node_modules/cosmiconfig/dist/getDirectory.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/getDirectory.ts"],"names":["getDirectory","filepath","filePathIsDirectory","directory","path","dirname","getDirectorySync"],"mappings":";;;;;;;;AAAA;;AACA;;;;AAEA,eAAeA,YAAf,CAA4BC,QAA5B,EAA+D;AAC7D,QAAMC,mBAAmB,GAAG,MAAM,2BAAYD,QAAZ,CAAlC;;AAEA,MAAIC,mBAAmB,KAAK,IAA5B,EAAkC;AAChC,WAAOD,QAAP;AACD;;AAED,QAAME,SAAS,GAAGC,cAAKC,OAAL,CAAaJ,QAAb,CAAlB;;AAEA,SAAOE,SAAP;AACD;;AAED,SAASG,gBAAT,CAA0BL,QAA1B,EAAoD;AAClD,QAAMC,mBAAmB,GAAG,+BAAgBD,QAAhB,CAA5B;;AAEA,MAAIC,mBAAmB,KAAK,IAA5B,EAAkC;AAChC,WAAOD,QAAP;AACD;;AAED,QAAME,SAAS,GAAGC,cAAKC,OAAL,CAAaJ,QAAb,CAAlB;;AAEA,SAAOE,SAAP;AACD","sourcesContent":["import path from 'path';\nimport { isDirectory, isDirectorySync } from 'path-type';\n\nasync function getDirectory(filepath: string): Promise<string> {\n const filePathIsDirectory = await isDirectory(filepath);\n\n if (filePathIsDirectory === true) {\n return filepath;\n }\n\n const directory = path.dirname(filepath);\n\n return directory;\n}\n\nfunction getDirectorySync(filepath: string): string {\n const filePathIsDirectory = isDirectorySync(filepath);\n\n if (filePathIsDirectory === true) {\n return filepath;\n }\n\n const directory = path.dirname(filepath);\n\n return directory;\n}\n\nexport { getDirectory, getDirectorySync };\n"],"file":"getDirectory.js"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/getPropertyByPath.d.ts b/assets/node_modules/cosmiconfig/dist/getPropertyByPath.d.ts
deleted file mode 100644
index 0b89fa7..0000000
--- a/assets/node_modules/cosmiconfig/dist/getPropertyByPath.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-declare function getPropertyByPath(source: {
- [key: string]: unknown;
-}, path: string | Array<string>): unknown;
-export { getPropertyByPath };
-//# sourceMappingURL=getPropertyByPath.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/getPropertyByPath.d.ts.map b/assets/node_modules/cosmiconfig/dist/getPropertyByPath.d.ts.map
deleted file mode 100644
index cbb44eb..0000000
--- a/assets/node_modules/cosmiconfig/dist/getPropertyByPath.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"getPropertyByPath.d.ts","sourceRoot":"","sources":["../src/getPropertyByPath.ts"],"names":[],"mappings":"AAKA,iBAAS,iBAAiB,CACxB,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EAClC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAC3B,OAAO,CAgBT;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/getPropertyByPath.js b/assets/node_modules/cosmiconfig/dist/getPropertyByPath.js
deleted file mode 100644
index 564972c..0000000
--- a/assets/node_modules/cosmiconfig/dist/getPropertyByPath.js
+++ /dev/null
@@ -1,28 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.getPropertyByPath = getPropertyByPath;
-
-// Resolves property names or property paths defined with period-delimited
-// strings or arrays of strings. Property names that are found on the source
-// object are used directly (even if they include a period).
-// Nested property names that include periods, within a path, are only
-// understood in array paths.
-function getPropertyByPath(source, path) {
- if (typeof path === 'string' && Object.prototype.hasOwnProperty.call(source, path)) {
- return source[path];
- }
-
- const parsedPath = typeof path === 'string' ? path.split('.') : path; // eslint-disable-next-line @typescript-eslint/no-explicit-any
-
- return parsedPath.reduce((previous, key) => {
- if (previous === undefined) {
- return previous;
- }
-
- return previous[key];
- }, source);
-}
-//# sourceMappingURL=getPropertyByPath.js.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/getPropertyByPath.js.map b/assets/node_modules/cosmiconfig/dist/getPropertyByPath.js.map
deleted file mode 100644
index 0b96ff4..0000000
--- a/assets/node_modules/cosmiconfig/dist/getPropertyByPath.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/getPropertyByPath.ts"],"names":["getPropertyByPath","source","path","Object","prototype","hasOwnProperty","call","parsedPath","split","reduce","previous","key","undefined"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA,SAASA,iBAAT,CACEC,MADF,EAEEC,IAFF,EAGW;AACT,MACE,OAAOA,IAAP,KAAgB,QAAhB,IACAC,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCL,MAArC,EAA6CC,IAA7C,CAFF,EAGE;AACA,WAAOD,MAAM,CAACC,IAAD,CAAb;AACD;;AAED,QAAMK,UAAU,GAAG,OAAOL,IAAP,KAAgB,QAAhB,GAA2BA,IAAI,CAACM,KAAL,CAAW,GAAX,CAA3B,GAA6CN,IAAhE,CARS,CAST;;AACA,SAAOK,UAAU,CAACE,MAAX,CAAkB,CAACC,QAAD,EAAgBC,GAAhB,KAAiC;AACxD,QAAID,QAAQ,KAAKE,SAAjB,EAA4B;AAC1B,aAAOF,QAAP;AACD;;AACD,WAAOA,QAAQ,CAACC,GAAD,CAAf;AACD,GALM,EAKJV,MALI,CAAP;AAMD","sourcesContent":["// Resolves property names or property paths defined with period-delimited\n// strings or arrays of strings. Property names that are found on the source\n// object are used directly (even if they include a period).\n// Nested property names that include periods, within a path, are only\n// understood in array paths.\nfunction getPropertyByPath(\n source: { [key: string]: unknown },\n path: string | Array<string>,\n): unknown {\n if (\n typeof path === 'string' &&\n Object.prototype.hasOwnProperty.call(source, path)\n ) {\n return source[path];\n }\n\n const parsedPath = typeof path === 'string' ? path.split('.') : path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return parsedPath.reduce((previous: any, key): unknown => {\n if (previous === undefined) {\n return previous;\n }\n return previous[key];\n }, source);\n}\n\nexport { getPropertyByPath };\n"],"file":"getPropertyByPath.js"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/index.d.ts b/assets/node_modules/cosmiconfig/dist/index.d.ts
deleted file mode 100644
index 7c205f5..0000000
--- a/assets/node_modules/cosmiconfig/dist/index.d.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import { Config, CosmiconfigResult, Loaders, LoadersSync } from './types';
-declare type LoaderResult = Config | null;
-export declare type Loader = ((filepath: string, content: string) => Promise<LoaderResult>) | LoaderSync;
-export declare type LoaderSync = (filepath: string, content: string) => LoaderResult;
-export declare type Transform = ((CosmiconfigResult: CosmiconfigResult) => Promise<CosmiconfigResult>) | TransformSync;
-export declare type TransformSync = (CosmiconfigResult: CosmiconfigResult) => CosmiconfigResult;
-interface OptionsBase {
- packageProp?: string;
- searchPlaces?: Array<string>;
- ignoreEmptySearchPlaces?: boolean;
- stopDir?: string;
- cache?: boolean;
-}
-export interface Options extends OptionsBase {
- loaders?: Loaders;
- transform?: Transform;
-}
-export interface OptionsSync extends OptionsBase {
- loaders?: LoadersSync;
- transform?: TransformSync;
-}
-declare function cosmiconfig(moduleName: string, options?: Options): {
- readonly search: (searchFrom?: string) => Promise<CosmiconfigResult>;
- readonly load: (filepath: string) => Promise<CosmiconfigResult>;
- readonly clearLoadCache: () => void;
- readonly clearSearchCache: () => void;
- readonly clearCaches: () => void;
-};
-declare function cosmiconfigSync(moduleName: string, options?: OptionsSync): {
- readonly search: (searchFrom?: string) => CosmiconfigResult;
- readonly load: (filepath: string) => CosmiconfigResult;
- readonly clearLoadCache: () => void;
- readonly clearSearchCache: () => void;
- readonly clearCaches: () => void;
-};
-declare const defaultLoaders: Readonly<{
- readonly '.js': LoaderSync;
- readonly '.json': LoaderSync;
- readonly '.yaml': LoaderSync;
- readonly '.yml': LoaderSync;
- readonly noExt: LoaderSync;
-}>;
-export { cosmiconfig, cosmiconfigSync, defaultLoaders };
-//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/index.d.ts.map b/assets/node_modules/cosmiconfig/dist/index.d.ts.map
deleted file mode 100644
index 5385ad0..0000000
--- a/assets/node_modules/cosmiconfig/dist/index.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,MAAM,EACN,iBAAiB,EAGjB,OAAO,EACP,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,aAAK,YAAY,GAAG,MAAM,GAAG,IAAI,CAAC;AAClC,oBAAY,MAAM,GACd,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,GAC9D,UAAU,CAAC;AACf,oBAAY,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,YAAY,CAAC;AAE7E,oBAAY,SAAS,GACjB,CAAC,CAAC,iBAAiB,EAAE,iBAAiB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC,GACtE,aAAa,CAAC;AAElB,oBAAY,aAAa,GAAG,CAC1B,iBAAiB,EAAE,iBAAiB,KACjC,iBAAiB,CAAC;AAEvB,UAAU,WAAW;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,OAAQ,SAAQ,WAAW;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAGD,iBAAS,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,OAAY;;;;;;EAe7D;AAGD,iBAAS,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB;;;;;;EAerE;AAGD,QAAA,MAAM,cAAc;;;;;;EAMT,CAAC;AAgDZ,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/index.js b/assets/node_modules/cosmiconfig/dist/index.js
deleted file mode 100644
index 5f789cf..0000000
--- a/assets/node_modules/cosmiconfig/dist/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.cosmiconfig = cosmiconfig;
-exports.cosmiconfigSync = cosmiconfigSync;
-exports.defaultLoaders = void 0;
-
-var _os = _interopRequireDefault(require("os"));
-
-var _Explorer = require("./Explorer");
-
-var _ExplorerSync = require("./ExplorerSync");
-
-var _loaders = require("./loaders");
-
-var _types = require("./types");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
-function cosmiconfig(moduleName, options = {}) {
- const normalizedOptions = normalizeOptions(moduleName, options);
- const explorer = new _Explorer.Explorer(normalizedOptions);
- return {
- search: explorer.search.bind(explorer),
- load: explorer.load.bind(explorer),
- clearLoadCache: explorer.clearLoadCache.bind(explorer),
- clearSearchCache: explorer.clearSearchCache.bind(explorer),
- clearCaches: explorer.clearCaches.bind(explorer)
- };
-} // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
-
-
-function cosmiconfigSync(moduleName, options = {}) {
- const normalizedOptions = normalizeOptions(moduleName, options);
- const explorerSync = new _ExplorerSync.ExplorerSync(normalizedOptions);
- return {
- search: explorerSync.searchSync.bind(explorerSync),
- load: explorerSync.loadSync.bind(explorerSync),
- clearLoadCache: explorerSync.clearLoadCache.bind(explorerSync),
- clearSearchCache: explorerSync.clearSearchCache.bind(explorerSync),
- clearCaches: explorerSync.clearCaches.bind(explorerSync)
- };
-} // do not allow mutation of default loaders. Make sure it is set inside options
-
-
-const defaultLoaders = Object.freeze({
- '.js': _loaders.loaders.loadJs,
- '.json': _loaders.loaders.loadJson,
- '.yaml': _loaders.loaders.loadYaml,
- '.yml': _loaders.loaders.loadYaml,
- noExt: _loaders.loaders.loadYaml
-});
-exports.defaultLoaders = defaultLoaders;
-
-function normalizeOptions(moduleName, options) {
- const defaults = {
- packageProp: moduleName,
- searchPlaces: ['package.json', `.${moduleName}rc`, `.${moduleName}rc.json`, `.${moduleName}rc.yaml`, `.${moduleName}rc.yml`, `.${moduleName}rc.js`, `${moduleName}.config.js`],
- ignoreEmptySearchPlaces: true,
- stopDir: _os.default.homedir(),
- cache: true,
- transform: identity,
- loaders: defaultLoaders
- };
- const normalizedOptions = { ...defaults,
- ...options,
- loaders: { ...defaults.loaders,
- ...options.loaders
- }
- };
- return normalizedOptions;
-}
-
-const identity = function identity(x) {
- return x;
-};
-//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/index.js.map b/assets/node_modules/cosmiconfig/dist/index.js.map
deleted file mode 100644
index 502a090..0000000
--- a/assets/node_modules/cosmiconfig/dist/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/index.ts"],"names":["cosmiconfig","moduleName","options","normalizedOptions","normalizeOptions","explorer","Explorer","search","bind","load","clearLoadCache","clearSearchCache","clearCaches","cosmiconfigSync","explorerSync","ExplorerSync","searchSync","loadSync","defaultLoaders","Object","freeze","loaders","loadJs","loadJson","loadYaml","noExt","defaults","packageProp","searchPlaces","ignoreEmptySearchPlaces","stopDir","os","homedir","cache","transform","identity","x"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;AAyCA;AACA,SAASA,WAAT,CAAqBC,UAArB,EAAyCC,OAAgB,GAAG,EAA5D,EAAgE;AAC9D,QAAMC,iBAAkC,GAAGC,gBAAgB,CACzDH,UADyD,EAEzDC,OAFyD,CAA3D;AAKA,QAAMG,QAAQ,GAAG,IAAIC,kBAAJ,CAAaH,iBAAb,CAAjB;AAEA,SAAO;AACLI,IAAAA,MAAM,EAAEF,QAAQ,CAACE,MAAT,CAAgBC,IAAhB,CAAqBH,QAArB,CADH;AAELI,IAAAA,IAAI,EAAEJ,QAAQ,CAACI,IAAT,CAAcD,IAAd,CAAmBH,QAAnB,CAFD;AAGLK,IAAAA,cAAc,EAAEL,QAAQ,CAACK,cAAT,CAAwBF,IAAxB,CAA6BH,QAA7B,CAHX;AAILM,IAAAA,gBAAgB,EAAEN,QAAQ,CAACM,gBAAT,CAA0BH,IAA1B,CAA+BH,QAA/B,CAJb;AAKLO,IAAAA,WAAW,EAAEP,QAAQ,CAACO,WAAT,CAAqBJ,IAArB,CAA0BH,QAA1B;AALR,GAAP;AAOD,C,CAED;;;AACA,SAASQ,eAAT,CAAyBZ,UAAzB,EAA6CC,OAAoB,GAAG,EAApE,EAAwE;AACtE,QAAMC,iBAAsC,GAAGC,gBAAgB,CAC7DH,UAD6D,EAE7DC,OAF6D,CAA/D;AAKA,QAAMY,YAAY,GAAG,IAAIC,0BAAJ,CAAiBZ,iBAAjB,CAArB;AAEA,SAAO;AACLI,IAAAA,MAAM,EAAEO,YAAY,CAACE,UAAb,CAAwBR,IAAxB,CAA6BM,YAA7B,CADH;AAELL,IAAAA,IAAI,EAAEK,YAAY,CAACG,QAAb,CAAsBT,IAAtB,CAA2BM,YAA3B,CAFD;AAGLJ,IAAAA,cAAc,EAAEI,YAAY,CAACJ,cAAb,CAA4BF,IAA5B,CAAiCM,YAAjC,CAHX;AAILH,IAAAA,gBAAgB,EAAEG,YAAY,CAACH,gBAAb,CAA8BH,IAA9B,CAAmCM,YAAnC,CAJb;AAKLF,IAAAA,WAAW,EAAEE,YAAY,CAACF,WAAb,CAAyBJ,IAAzB,CAA8BM,YAA9B;AALR,GAAP;AAOD,C,CAED;;;AACA,MAAMI,cAAc,GAAGC,MAAM,CAACC,MAAP,CAAc;AACnC,SAAOC,iBAAQC,MADoB;AAEnC,WAASD,iBAAQE,QAFkB;AAGnC,WAASF,iBAAQG,QAHkB;AAInC,UAAQH,iBAAQG,QAJmB;AAKnCC,EAAAA,KAAK,EAAEJ,iBAAQG;AALoB,CAAd,CAAvB;;;AAgBA,SAASpB,gBAAT,CACEH,UADF,EAEEC,OAFF,EAGyC;AACvC,QAAMwB,QAA+C,GAAG;AACtDC,IAAAA,WAAW,EAAE1B,UADyC;AAEtD2B,IAAAA,YAAY,EAAE,CACZ,cADY,EAEX,IAAG3B,UAAW,IAFH,EAGX,IAAGA,UAAW,SAHH,EAIX,IAAGA,UAAW,SAJH,EAKX,IAAGA,UAAW,QALH,EAMX,IAAGA,UAAW,OANH,EAOX,GAAEA,UAAW,YAPF,CAFwC;AAWtD4B,IAAAA,uBAAuB,EAAE,IAX6B;AAYtDC,IAAAA,OAAO,EAAEC,YAAGC,OAAH,EAZ6C;AAatDC,IAAAA,KAAK,EAAE,IAb+C;AActDC,IAAAA,SAAS,EAAEC,QAd2C;AAetDd,IAAAA,OAAO,EAAEH;AAf6C,GAAxD;AAkBA,QAAMf,iBAAwD,GAAG,EAC/D,GAAGuB,QAD4D;AAE/D,OAAGxB,OAF4D;AAG/DmB,IAAAA,OAAO,EAAE,EACP,GAAGK,QAAQ,CAACL,OADL;AAEP,SAAGnB,OAAO,CAACmB;AAFJ;AAHsD,GAAjE;AASA,SAAOlB,iBAAP;AACD;;AAED,MAAMgC,QAAuB,GAAG,SAASA,QAAT,CAAkBC,CAAlB,EAAqB;AACnD,SAAOA,CAAP;AACD,CAFD","sourcesContent":["import os from 'os';\nimport { Explorer } from './Explorer';\nimport { ExplorerSync } from './ExplorerSync';\nimport { loaders } from './loaders';\nimport {\n Config,\n CosmiconfigResult,\n ExplorerOptions,\n ExplorerOptionsSync,\n Loaders,\n LoadersSync,\n} from './types';\n\ntype LoaderResult = Config | null;\nexport type Loader =\n | ((filepath: string, content: string) => Promise<LoaderResult>)\n | LoaderSync;\nexport type LoaderSync = (filepath: string, content: string) => LoaderResult;\n\nexport type Transform =\n | ((CosmiconfigResult: CosmiconfigResult) => Promise<CosmiconfigResult>)\n | TransformSync;\n\nexport type TransformSync = (\n CosmiconfigResult: CosmiconfigResult,\n) => CosmiconfigResult;\n\ninterface OptionsBase {\n packageProp?: string;\n searchPlaces?: Array<string>;\n ignoreEmptySearchPlaces?: boolean;\n stopDir?: string;\n cache?: boolean;\n}\n\nexport interface Options extends OptionsBase {\n loaders?: Loaders;\n transform?: Transform;\n}\n\nexport interface OptionsSync extends OptionsBase {\n loaders?: LoadersSync;\n transform?: TransformSync;\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nfunction cosmiconfig(moduleName: string, options: Options = {}) {\n const normalizedOptions: ExplorerOptions = normalizeOptions(\n moduleName,\n options,\n );\n\n const explorer = new Explorer(normalizedOptions);\n\n return {\n search: explorer.search.bind(explorer),\n load: explorer.load.bind(explorer),\n clearLoadCache: explorer.clearLoadCache.bind(explorer),\n clearSearchCache: explorer.clearSearchCache.bind(explorer),\n clearCaches: explorer.clearCaches.bind(explorer),\n } as const;\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nfunction cosmiconfigSync(moduleName: string, options: OptionsSync = {}) {\n const normalizedOptions: ExplorerOptionsSync = normalizeOptions(\n moduleName,\n options,\n );\n\n const explorerSync = new ExplorerSync(normalizedOptions);\n\n return {\n search: explorerSync.searchSync.bind(explorerSync),\n load: explorerSync.loadSync.bind(explorerSync),\n clearLoadCache: explorerSync.clearLoadCache.bind(explorerSync),\n clearSearchCache: explorerSync.clearSearchCache.bind(explorerSync),\n clearCaches: explorerSync.clearCaches.bind(explorerSync),\n } as const;\n}\n\n// do not allow mutation of default loaders. Make sure it is set inside options\nconst defaultLoaders = Object.freeze({\n '.js': loaders.loadJs,\n '.json': loaders.loadJson,\n '.yaml': loaders.loadYaml,\n '.yml': loaders.loadYaml,\n noExt: loaders.loadYaml,\n} as const);\n\nfunction normalizeOptions(\n moduleName: string,\n options: OptionsSync,\n): ExplorerOptionsSync;\nfunction normalizeOptions(\n moduleName: string,\n options: Options,\n): ExplorerOptions;\nfunction normalizeOptions(\n moduleName: string,\n options: Options | OptionsSync,\n): ExplorerOptions | ExplorerOptionsSync {\n const defaults: ExplorerOptions | ExplorerOptionsSync = {\n packageProp: moduleName,\n searchPlaces: [\n 'package.json',\n `.${moduleName}rc`,\n `.${moduleName}rc.json`,\n `.${moduleName}rc.yaml`,\n `.${moduleName}rc.yml`,\n `.${moduleName}rc.js`,\n `${moduleName}.config.js`,\n ],\n ignoreEmptySearchPlaces: true,\n stopDir: os.homedir(),\n cache: true,\n transform: identity,\n loaders: defaultLoaders,\n };\n\n const normalizedOptions: ExplorerOptions | ExplorerOptionsSync = {\n ...defaults,\n ...options,\n loaders: {\n ...defaults.loaders,\n ...options.loaders,\n },\n };\n\n return normalizedOptions;\n}\n\nconst identity: TransformSync = function identity(x) {\n return x;\n};\n\nexport { cosmiconfig, cosmiconfigSync, defaultLoaders };\n"],"file":"index.js"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/loaders.d.ts b/assets/node_modules/cosmiconfig/dist/loaders.d.ts
deleted file mode 100644
index 44f788f..0000000
--- a/assets/node_modules/cosmiconfig/dist/loaders.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import { LoadersSync } from './types';
-declare const loaders: LoadersSync;
-export { loaders };
-//# sourceMappingURL=loaders.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/loaders.d.ts.map b/assets/node_modules/cosmiconfig/dist/loaders.d.ts.map
deleted file mode 100644
index 6937f32..0000000
--- a/assets/node_modules/cosmiconfig/dist/loaders.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"loaders.d.ts","sourceRoot":"","sources":["../src/loaders.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA0CtC,QAAA,MAAM,OAAO,EAAE,WAA4C,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/loaders.js b/assets/node_modules/cosmiconfig/dist/loaders.js
deleted file mode 100644
index 43126af..0000000
--- a/assets/node_modules/cosmiconfig/dist/loaders.js
+++ /dev/null
@@ -1,60 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.loaders = void 0;
-
-/* eslint-disable @typescript-eslint/no-require-imports */
-let importFresh;
-
-const loadJs = function loadJs(filepath) {
- if (importFresh === undefined) {
- importFresh = require('import-fresh');
- }
-
- const result = importFresh(filepath);
- return result;
-};
-
-let parseJson;
-
-const loadJson = function loadJson(filepath, content) {
- if (parseJson === undefined) {
- parseJson = require('parse-json');
- }
-
- try {
- const result = parseJson(content);
- return result;
- } catch (error) {
- error.message = `JSON Error in ${filepath}:\n${error.message}`;
- throw error;
- }
-};
-
-let yaml;
-
-const loadYaml = function loadYaml(filepath, content) {
- if (yaml === undefined) {
- yaml = require('yaml');
- }
-
- try {
- const result = yaml.parse(content, {
- prettyErrors: true
- });
- return result;
- } catch (error) {
- error.message = `YAML Error in ${filepath}:\n${error.message}`;
- throw error;
- }
-};
-
-const loaders = {
- loadJs,
- loadJson,
- loadYaml
-};
-exports.loaders = loaders;
-//# sourceMappingURL=loaders.js.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/loaders.js.map b/assets/node_modules/cosmiconfig/dist/loaders.js.map
deleted file mode 100644
index 34110c4..0000000
--- a/assets/node_modules/cosmiconfig/dist/loaders.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/loaders.ts"],"names":["importFresh","loadJs","filepath","undefined","require","result","parseJson","loadJson","content","error","message","yaml","loadYaml","parse","prettyErrors","loaders"],"mappings":";;;;;;;AAAA;AAQA,IAAIA,WAAJ;;AACA,MAAMC,MAAkB,GAAG,SAASA,MAAT,CAAgBC,QAAhB,EAA0B;AACnD,MAAIF,WAAW,KAAKG,SAApB,EAA+B;AAC7BH,IAAAA,WAAW,GAAGI,OAAO,CAAC,cAAD,CAArB;AACD;;AAED,QAAMC,MAAM,GAAGL,WAAW,CAACE,QAAD,CAA1B;AACA,SAAOG,MAAP;AACD,CAPD;;AASA,IAAIC,SAAJ;;AACA,MAAMC,QAAoB,GAAG,SAASA,QAAT,CAAkBL,QAAlB,EAA4BM,OAA5B,EAAqC;AAChE,MAAIF,SAAS,KAAKH,SAAlB,EAA6B;AAC3BG,IAAAA,SAAS,GAAGF,OAAO,CAAC,YAAD,CAAnB;AACD;;AAED,MAAI;AACF,UAAMC,MAAM,GAAGC,SAAS,CAACE,OAAD,CAAxB;AACA,WAAOH,MAAP;AACD,GAHD,CAGE,OAAOI,KAAP,EAAc;AACdA,IAAAA,KAAK,CAACC,OAAN,GAAiB,iBAAgBR,QAAS,MAAKO,KAAK,CAACC,OAAQ,EAA7D;AACA,UAAMD,KAAN;AACD;AACF,CAZD;;AAcA,IAAIE,IAAJ;;AACA,MAAMC,QAAoB,GAAG,SAASA,QAAT,CAAkBV,QAAlB,EAA4BM,OAA5B,EAAqC;AAChE,MAAIG,IAAI,KAAKR,SAAb,EAAwB;AACtBQ,IAAAA,IAAI,GAAGP,OAAO,CAAC,MAAD,CAAd;AACD;;AAED,MAAI;AACF,UAAMC,MAAM,GAAGM,IAAI,CAACE,KAAL,CAAWL,OAAX,EAAoB;AAAEM,MAAAA,YAAY,EAAE;AAAhB,KAApB,CAAf;AACA,WAAOT,MAAP;AACD,GAHD,CAGE,OAAOI,KAAP,EAAc;AACdA,IAAAA,KAAK,CAACC,OAAN,GAAiB,iBAAgBR,QAAS,MAAKO,KAAK,CAACC,OAAQ,EAA7D;AACA,UAAMD,KAAN;AACD;AACF,CAZD;;AAcA,MAAMM,OAAoB,GAAG;AAAEd,EAAAA,MAAF;AAAUM,EAAAA,QAAV;AAAoBK,EAAAA;AAApB,CAA7B","sourcesContent":["/* eslint-disable @typescript-eslint/no-require-imports */\n\nimport parseJsonType from 'parse-json';\nimport yamlType from 'yaml';\nimport importFreshType from 'import-fresh';\nimport { LoaderSync } from './index';\nimport { LoadersSync } from './types';\n\nlet importFresh: typeof importFreshType;\nconst loadJs: LoaderSync = function loadJs(filepath) {\n if (importFresh === undefined) {\n importFresh = require('import-fresh');\n }\n\n const result = importFresh(filepath);\n return result;\n};\n\nlet parseJson: typeof parseJsonType;\nconst loadJson: LoaderSync = function loadJson(filepath, content) {\n if (parseJson === undefined) {\n parseJson = require('parse-json');\n }\n\n try {\n const result = parseJson(content);\n return result;\n } catch (error) {\n error.message = `JSON Error in ${filepath}:\\n${error.message}`;\n throw error;\n }\n};\n\nlet yaml: typeof yamlType;\nconst loadYaml: LoaderSync = function loadYaml(filepath, content) {\n if (yaml === undefined) {\n yaml = require('yaml');\n }\n\n try {\n const result = yaml.parse(content, { prettyErrors: true });\n return result;\n } catch (error) {\n error.message = `YAML Error in ${filepath}:\\n${error.message}`;\n throw error;\n }\n};\n\nconst loaders: LoadersSync = { loadJs, loadJson, loadYaml };\n\nexport { loaders };\n"],"file":"loaders.js"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/readFile.d.ts b/assets/node_modules/cosmiconfig/dist/readFile.d.ts
deleted file mode 100644
index c59e12e..0000000
--- a/assets/node_modules/cosmiconfig/dist/readFile.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-interface Options {
- throwNotFound?: boolean;
-}
-declare function readFile(filepath: string, options?: Options): Promise<string | null>;
-declare function readFileSync(filepath: string, options?: Options): string | null;
-export { readFile, readFileSync };
-//# sourceMappingURL=readFile.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/readFile.d.ts.map b/assets/node_modules/cosmiconfig/dist/readFile.d.ts.map
deleted file mode 100644
index 5bf4769..0000000
--- a/assets/node_modules/cosmiconfig/dist/readFile.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"readFile.d.ts","sourceRoot":"","sources":["../src/readFile.ts"],"names":[],"mappings":"AAkBA,UAAU,OAAO;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,iBAAe,QAAQ,CACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,OAAY,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcxB;AAED,iBAAS,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,OAAY,GAAG,MAAM,GAAG,IAAI,CAc5E;AAED,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/readFile.js b/assets/node_modules/cosmiconfig/dist/readFile.js
deleted file mode 100644
index d62129b..0000000
--- a/assets/node_modules/cosmiconfig/dist/readFile.js
+++ /dev/null
@@ -1,56 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.readFile = readFile;
-exports.readFileSync = readFileSync;
-
-var _fs = _interopRequireDefault(require("fs"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-async function fsReadFileAsync(pathname, encoding) {
- return new Promise((resolve, reject) => {
- _fs.default.readFile(pathname, encoding, (error, contents) => {
- if (error) {
- reject(error);
- return;
- }
-
- resolve(contents);
- });
- });
-}
-
-async function readFile(filepath, options = {}) {
- const throwNotFound = options.throwNotFound === true;
-
- try {
- const content = await fsReadFileAsync(filepath, 'utf8');
- return content;
- } catch (error) {
- if (throwNotFound === false && error.code === 'ENOENT') {
- return null;
- }
-
- throw error;
- }
-}
-
-function readFileSync(filepath, options = {}) {
- const throwNotFound = options.throwNotFound === true;
-
- try {
- const content = _fs.default.readFileSync(filepath, 'utf8');
-
- return content;
- } catch (error) {
- if (throwNotFound === false && error.code === 'ENOENT') {
- return null;
- }
-
- throw error;
- }
-}
-//# sourceMappingURL=readFile.js.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/readFile.js.map b/assets/node_modules/cosmiconfig/dist/readFile.js.map
deleted file mode 100644
index d1f54d0..0000000
--- a/assets/node_modules/cosmiconfig/dist/readFile.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/readFile.ts"],"names":["fsReadFileAsync","pathname","encoding","Promise","resolve","reject","fs","readFile","error","contents","filepath","options","throwNotFound","content","code","readFileSync"],"mappings":";;;;;;;;AAAA;;;;AAEA,eAAeA,eAAf,CACEC,QADF,EAEEC,QAFF,EAGmB;AACjB,SAAO,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAA2B;AAC5CC,gBAAGC,QAAH,CAAYN,QAAZ,EAAsBC,QAAtB,EAAgC,CAACM,KAAD,EAAQC,QAAR,KAA2B;AACzD,UAAID,KAAJ,EAAW;AACTH,QAAAA,MAAM,CAACG,KAAD,CAAN;AACA;AACD;;AAEDJ,MAAAA,OAAO,CAACK,QAAD,CAAP;AACD,KAPD;AAQD,GATM,CAAP;AAUD;;AAMD,eAAeF,QAAf,CACEG,QADF,EAEEC,OAAgB,GAAG,EAFrB,EAG0B;AACxB,QAAMC,aAAa,GAAGD,OAAO,CAACC,aAAR,KAA0B,IAAhD;;AAEA,MAAI;AACF,UAAMC,OAAO,GAAG,MAAMb,eAAe,CAACU,QAAD,EAAW,MAAX,CAArC;AAEA,WAAOG,OAAP;AACD,GAJD,CAIE,OAAOL,KAAP,EAAc;AACd,QAAII,aAAa,KAAK,KAAlB,IAA2BJ,KAAK,CAACM,IAAN,KAAe,QAA9C,EAAwD;AACtD,aAAO,IAAP;AACD;;AAED,UAAMN,KAAN;AACD;AACF;;AAED,SAASO,YAAT,CAAsBL,QAAtB,EAAwCC,OAAgB,GAAG,EAA3D,EAA8E;AAC5E,QAAMC,aAAa,GAAGD,OAAO,CAACC,aAAR,KAA0B,IAAhD;;AAEA,MAAI;AACF,UAAMC,OAAO,GAAGP,YAAGS,YAAH,CAAgBL,QAAhB,EAA0B,MAA1B,CAAhB;;AAEA,WAAOG,OAAP;AACD,GAJD,CAIE,OAAOL,KAAP,EAAc;AACd,QAAII,aAAa,KAAK,KAAlB,IAA2BJ,KAAK,CAACM,IAAN,KAAe,QAA9C,EAAwD;AACtD,aAAO,IAAP;AACD;;AAED,UAAMN,KAAN;AACD;AACF","sourcesContent":["import fs from 'fs';\n\nasync function fsReadFileAsync(\n pathname: string,\n encoding: string,\n): Promise<string> {\n return new Promise((resolve, reject): void => {\n fs.readFile(pathname, encoding, (error, contents): void => {\n if (error) {\n reject(error);\n return;\n }\n\n resolve(contents);\n });\n });\n}\n\ninterface Options {\n throwNotFound?: boolean;\n}\n\nasync function readFile(\n filepath: string,\n options: Options = {},\n): Promise<string | null> {\n const throwNotFound = options.throwNotFound === true;\n\n try {\n const content = await fsReadFileAsync(filepath, 'utf8');\n\n return content;\n } catch (error) {\n if (throwNotFound === false && error.code === 'ENOENT') {\n return null;\n }\n\n throw error;\n }\n}\n\nfunction readFileSync(filepath: string, options: Options = {}): string | null {\n const throwNotFound = options.throwNotFound === true;\n\n try {\n const content = fs.readFileSync(filepath, 'utf8');\n\n return content;\n } catch (error) {\n if (throwNotFound === false && error.code === 'ENOENT') {\n return null;\n }\n\n throw error;\n }\n}\n\nexport { readFile, readFileSync };\n"],"file":"readFile.js"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/types.d.ts b/assets/node_modules/cosmiconfig/dist/types.d.ts
deleted file mode 100644
index 9072615..0000000
--- a/assets/node_modules/cosmiconfig/dist/types.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { Loader, LoaderSync, Options, OptionsSync } from './index';
-export declare type Config = any;
-export declare type CosmiconfigResult = {
- config: Config;
- filepath: string;
- isEmpty?: boolean;
-} | null;
-export interface ExplorerOptions extends Required<Options> {
-}
-export interface ExplorerOptionsSync extends Required<OptionsSync> {
-}
-export declare type Cache = Map<string, CosmiconfigResult>;
-export declare type LoadedFileContent = Config | null | undefined;
-export interface Loaders {
- [key: string]: Loader;
-}
-export interface LoadersSync {
- [key: string]: LoaderSync;
-}
-//# sourceMappingURL=types.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/types.d.ts.map b/assets/node_modules/cosmiconfig/dist/types.d.ts.map
deleted file mode 100644
index dff2f98..0000000
--- a/assets/node_modules/cosmiconfig/dist/types.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGnE,oBAAY,MAAM,GAAG,GAAG,CAAC;AAEzB,oBAAY,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,IAAI,CAAC;AAIT,MAAM,WAAW,eAAgB,SAAQ,QAAQ,CAAC,OAAO,CAAC;CAAG;AAC7D,MAAM,WAAW,mBAAoB,SAAQ,QAAQ,CAAC,WAAW,CAAC;CAAG;AAGrE,oBAAY,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAMnD,oBAAY,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,OAAO;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;CAC3B"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/types.js b/assets/node_modules/cosmiconfig/dist/types.js
deleted file mode 100644
index 2f0e414..0000000
--- a/assets/node_modules/cosmiconfig/dist/types.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";
-//# sourceMappingURL=types.js.map \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/dist/types.js.map b/assets/node_modules/cosmiconfig/dist/types.js.map
deleted file mode 100644
index 036ac15..0000000
--- a/assets/node_modules/cosmiconfig/dist/types.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"} \ No newline at end of file
diff --git a/assets/node_modules/cosmiconfig/package.json b/assets/node_modules/cosmiconfig/package.json
deleted file mode 100644
index 4c365cd..0000000
--- a/assets/node_modules/cosmiconfig/package.json
+++ /dev/null
@@ -1,148 +0,0 @@
-{
- "name": "cosmiconfig",
- "version": "6.0.0",
- "description": "Find and load configuration from a package.json property, rc file, or CommonJS module",
- "main": "dist/index.js",
- "types": "dist/index.d.ts",
- "files": [
- "dist"
- ],
- "scripts": {
- "clean": "del-cli --dot=true \"./dist/**/*\"",
- "build": "npm run clean && npm run build:compile && npm run build:types",
- "build:compile": "cross-env NODE_ENV=production babel src -d dist --verbose --extensions .js,.ts --ignore \"**/**/*.test.js\",\"**/**/*.test.ts\" --source-maps",
- "build:types": "cross-env NODE_ENV=production tsc --project tsconfig.types.json",
- "dev": "npm run clean && npm run build:compile -- --watch",
- "lint": "eslint --ext .js,.ts . && npm run lint:md",
- "lint:fix": "eslint --ext .js,.ts . --fix",
- "lint:md": "remark-preset-davidtheclark",
- "format": "prettier \"**/*.{js,ts,json,yml,yaml}\" --write",
- "format:md": "remark-preset-davidtheclark --format",
- "format:check": "prettier \"**/*.{js,ts,json,yml,yaml}\" --check",
- "typescript": "tsc",
- "test": "jest --coverage",
- "test:watch": "jest --watch",
- "check:all": "npm run test && npm run typescript && npm run lint && npm run format:check",
- "prepublishOnly": "npm run check:all && npm run build"
- },
- "husky": {
- "hooks": {
- "pre-commit": "lint-staged && npm run typescript && npm run test",
- "pre-push": "npm run check:all"
- }
- },
- "lint-staged": {
- "*.{js,ts}": [
- "eslint --fix",
- "prettier --write",
- "git add"
- ],
- "*.{json,yml,yaml}": [
- "prettier --write",
- "git add"
- ],
- "*.md": [
- "remark-preset-davidtheclark",
- "remark-preset-davidtheclark --format",
- "git add"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/davidtheclark/cosmiconfig.git"
- },
- "keywords": [
- "load",
- "configuration",
- "config"
- ],
- "author": "David Clark <david.dave.clark@gmail.com>",
- "contributors": [
- "Bogdan Chadkin <trysound@yandex.ru>",
- "Suhas Karanth <sudo.suhas@gmail.com>"
- ],
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/davidtheclark/cosmiconfig/issues"
- },
- "homepage": "https://github.com/davidtheclark/cosmiconfig#readme",
- "prettier": {
- "trailingComma": "all",
- "arrowParens": "always",
- "singleQuote": true,
- "printWidth": 80,
- "tabWidth": 2
- },
- "jest": {
- "testEnvironment": "node",
- "collectCoverageFrom": [
- "src/**/*.{js,ts}"
- ],
- "coverageReporters": [
- "text",
- "html",
- "lcov"
- ],
- "coverageThreshold": {
- "global": {
- "branches": 100,
- "functions": 100,
- "lines": 100,
- "statements": 100
- }
- },
- "resetModules": true,
- "resetMocks": true,
- "restoreMocks": true
- },
- "babel": {
- "presets": [
- [
- "@babel/preset-env",
- {
- "targets": {
- "node": "8.9"
- }
- }
- ],
- "@babel/preset-typescript"
- ]
- },
- "dependencies": {
- "@types/parse-json": "^4.0.0",
- "import-fresh": "^3.1.0",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.7.2"
- },
- "devDependencies": {
- "@babel/cli": "^7.6.4",
- "@babel/core": "^7.6.4",
- "@babel/preset-env": "^7.6.3",
- "@babel/preset-typescript": "^7.6.0",
- "@types/jest": "^24.0.19",
- "@types/node": "^12.11.5",
- "@typescript-eslint/eslint-plugin": "^2.5.0",
- "@typescript-eslint/parser": "^2.5.0",
- "cross-env": "^6.0.3",
- "del": "^5.1.0",
- "del-cli": "^3.0.0",
- "eslint": "^6.5.1",
- "eslint-config-davidtheclark-node": "^0.2.2",
- "eslint-config-prettier": "^6.4.0",
- "eslint-plugin-import": "^2.18.2",
- "eslint-plugin-jest": "^22.20.0",
- "eslint-plugin-node": "^10.0.0",
- "husky": "^3.0.9",
- "jest": "^24.9.0",
- "lint-staged": "^9.4.2",
- "make-dir": "^3.0.0",
- "parent-module": "^2.0.0",
- "prettier": "^1.18.2",
- "remark-preset-davidtheclark": "^0.10.0",
- "typescript": "^3.6.4"
- },
- "engines": {
- "node": ">=8"
- }
-}
diff --git a/assets/node_modules/cssesc/LICENSE-MIT.txt b/assets/node_modules/cssesc/LICENSE-MIT.txt
deleted file mode 100644
index a41e0a7..0000000
--- a/assets/node_modules/cssesc/LICENSE-MIT.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-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/assets/node_modules/cssesc/README.md b/assets/node_modules/cssesc/README.md
deleted file mode 100644
index 58fb8fe..0000000
--- a/assets/node_modules/cssesc/README.md
+++ /dev/null
@@ -1,201 +0,0 @@
-# cssesc [![Build status](https://travis-ci.org/mathiasbynens/cssesc.svg?branch=master)](https://travis-ci.org/mathiasbynens/cssesc) [![Code coverage status](https://img.shields.io/codecov/c/github/mathiasbynens/cssesc.svg)](https://codecov.io/gh/mathiasbynens/cssesc)
-
-A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.
-
-This is a JavaScript library for [escaping text for use in CSS strings or identifiers](https://mathiasbynens.be/notes/css-escapes) while generating the shortest possible valid ASCII-only output. [Here’s an online demo.](https://mothereff.in/css-escapes)
-
-[A polyfill for the CSSOM `CSS.escape()` method is available in a separate repository.](https://mths.be/cssescape) (In comparison, _cssesc_ is much more powerful.)
-
-Feel free to fork if you see possible improvements!
-
-## Installation
-
-Via [npm](https://www.npmjs.com/):
-
-```bash
-npm install cssesc
-```
-
-In a browser:
-
-```html
-<script src="cssesc.js"></script>
-```
-
-In [Node.js](https://nodejs.org/):
-
-```js
-const cssesc = require('cssesc');
-```
-
-In Ruby using [the `ruby-cssesc` wrapper gem](https://github.com/borodean/ruby-cssesc):
-
-```bash
-gem install ruby-cssesc
-```
-
-```ruby
-require 'ruby-cssesc'
-CSSEsc.escape('I ♥ Ruby', is_identifier: true)
-```
-
-In Sass using [`sassy-escape`](https://github.com/borodean/sassy-escape):
-
-```bash
-gem install sassy-escape
-```
-
-```scss
-body {
- content: escape('I ♥ Sass', $is-identifier: true);
-}
-```
-
-## API
-
-### `cssesc(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 CSS strings or identifiers](https://mathiasbynens.be/notes/css-escapes).
-
-```js
-cssesc('Ich ♥ Bücher');
-// → 'Ich \\2665 B\\FC cher'
-
-cssesc('foo 𝌆 bar');
-// → 'foo \\1D306 bar'
-```
-
-By default, `cssesc` returns a string that can be used as part of a CSS string. If the target is a CSS identifier rather than a CSS string, use the `isIdentifier: true` setting (see below).
-
-The optional `options` argument accepts an object with the following options:
-
-#### `isIdentifier`
-
-The default value for the `isIdentifier` option is `false`. This means that the input text will be escaped for use in a CSS string literal. If you want to use the result as a CSS identifier instead (in a selector, for example), set this option to `true`.
-
-```js
-cssesc('123a2b');
-// → '123a2b'
-
-cssesc('123a2b', {
- 'isIdentifier': true
-});
-// → '\\31 23a2b'
-```
-
-#### `quotes`
-
-The default value for the `quotes` option is `'single'`. This means that any occurences of `'` in the input text will be escaped as `\'`, so that the output can be used in a CSS string literal wrapped in single quotes.
-
-```js
-cssesc('Lorem ipsum "dolor" sit \'amet\' etc.');
-// → 'Lorem ipsum "dolor" sit \\\'amet\\\' etc.'
-// → "Lorem ipsum \"dolor\" sit \\'amet\\' etc."
-
-cssesc('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 CSS string literal wrapped in double quotes, set the `quotes` option to `'double'`.
-
-```js
-cssesc('Lorem ipsum "dolor" sit \'amet\' etc.', {
- 'quotes': 'double'
-});
-// → 'Lorem ipsum \\"dolor\\" sit \'amet\' etc.'
-// → "Lorem ipsum \\\"dolor\\\" sit 'amet' etc."
-```
-
-#### `wrap`
-
-The `wrap` option takes a boolean value (`true` or `false`), and defaults to `false` (disabled). When enabled, the output will be a valid CSS string literal wrapped in quotes. The type of quotes can be specified through the `quotes` setting.
-
-```js
-cssesc('Lorem ipsum "dolor" sit \'amet\' etc.', {
- 'quotes': 'single',
- 'wrap': true
-});
-// → '\'Lorem ipsum "dolor" sit \\\'amet\\\' etc.\''
-// → "\'Lorem ipsum \"dolor\" sit \\\'amet\\\' etc.\'"
-
-cssesc('Lorem ipsum "dolor" sit \'amet\' etc.', {
- 'quotes': 'double',
- 'wrap': true
-});
-// → '"Lorem ipsum \\"dolor\\" sit \'amet\' etc."'
-// → "\"Lorem ipsum \\\"dolor\\\" sit \'amet\' etc.\""
-```
-
-#### `escapeEverything`
-
-The `escapeEverything` option takes a boolean value (`true` or `false`), and defaults to `false` (disabled). When enabled, all the symbols in the output will be escaped, even printable ASCII symbols.
-
-```js
-cssesc('lolwat"foo\'bar', {
- 'escapeEverything': true
-});
-// → '\\6C\\6F\\6C\\77\\61\\74\\"\\66\\6F\\6F\\\'\\62\\61\\72'
-// → "\\6C\\6F\\6C\\77\\61\\74\\\"\\66\\6F\\6F\\'\\62\\61\\72"
-```
-
-#### Overriding the default options globally
-
-The global default settings can be overridden by modifying the `css.options` object. This saves you from passing in an `options` object for every call to `encode` if you want to use the non-default setting.
-
-```js
-// Read the global default setting for `escapeEverything`:
-cssesc.options.escapeEverything;
-// → `false` by default
-
-// Override the global default setting for `escapeEverything`:
-cssesc.options.escapeEverything = true;
-
-// Using the global default setting for `escapeEverything`, which is now `true`:
-cssesc('foo © bar ≠ baz 𝌆 qux');
-// → '\\66\\6F\\6F\\ \\A9\\ \\62\\61\\72\\ \\2260\\ \\62\\61\\7A\\ \\1D306\\ \\71\\75\\78'
-```
-
-### `cssesc.version`
-
-A string representing the semantic version number.
-
-### Using the `cssesc` binary
-
-To use the `cssesc` binary in your shell, simply install cssesc globally using npm:
-
-```bash
-npm install -g cssesc
-```
-
-After that you will be able to escape text for use in CSS strings or identifiers from the command line:
-
-```bash
-$ cssesc 'föo ♥ bår 𝌆 baz'
-f\F6o \2665 b\E5r \1D306 baz
-```
-
-If the output needs to be a CSS identifier rather than part of a string literal, use the `-i`/`--identifier` option:
-
-```bash
-$ cssesc --identifier 'föo ♥ bår 𝌆 baz'
-f\F6o\ \2665\ b\E5r\ \1D306\ baz
-```
-
-See `cssesc --help` for the full list of options.
-
-## Support
-
-This library supports the Node.js and browser versions mentioned in [`.babelrc`](https://github.com/mathiasbynens/cssesc/blob/master/.babelrc). For a version that supports a wider variety of legacy browsers and environments out-of-the-box, [see v0.1.0](https://github.com/mathiasbynens/cssesc/releases/tag/v0.1.0).
-
-## 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/assets/node_modules/cssesc/bin/cssesc b/assets/node_modules/cssesc/bin/cssesc
deleted file mode 100755
index 188c034..0000000
--- a/assets/node_modules/cssesc/bin/cssesc
+++ /dev/null
@@ -1,116 +0,0 @@
-#!/usr/bin/env node
-const fs = require('fs');
-const cssesc = require('../cssesc.js');
-const strings = process.argv.splice(2);
-const stdin = process.stdin;
-const options = {};
-const log = console.log;
-
-const main = function() {
- const option = strings[0];
-
- if (/^(?:-h|--help|undefined)$/.test(option)) {
- log(
- 'cssesc v%s - https://mths.be/cssesc',
- cssesc.version
- );
- log([
- '\nUsage:\n',
- '\tcssesc [string]',
- '\tcssesc [-i | --identifier] [string]',
- '\tcssesc [-s | --single-quotes] [string]',
- '\tcssesc [-d | --double-quotes] [string]',
- '\tcssesc [-w | --wrap] [string]',
- '\tcssesc [-e | --escape-everything] [string]',
- '\tcssesc [-v | --version]',
- '\tcssesc [-h | --help]',
- '\nExamples:\n',
- '\tcssesc \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'',
- '\tcssesc --identifier \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'',
- '\tcssesc --escape-everything \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'',
- '\tcssesc --double-quotes --wrap \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'',
- '\techo \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\' | cssesc'
- ].join('\n'));
- return process.exit(1);
- }
-
- if (/^(?:-v|--version)$/.test(option)) {
- log('v%s', cssesc.version);
- return process.exit(1);
- }
-
- strings.forEach(function(string) {
- // Process options
- if (/^(?:-i|--identifier)$/.test(string)) {
- options.isIdentifier = true;
- return;
- }
- 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;
- }
-
- // Process string(s)
- let result;
- try {
- result = cssesc(string, options);
- log(result);
- } catch (exception) {
- log(exception.message + '\n');
- log('Error: failed to escape.');
- log('If you think this is a bug in cssesc, please report it:');
- log('https://github.com/mathiasbynens/cssesc/issues/new');
- log(
- '\nStack trace using cssesc@%s:\n',
- cssesc.version
- );
- log(exception.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 {
- let timeout;
- // Either the script is called from within a non-TTY context, or `stdin`
- // content is being piped in.
- if (!process.stdout.isTTY) {
- // The script was called from a non-TTY context. This is a rather uncommon
- // use case we don’t actively support. However, we don’t want the script
- // to wait forever in such cases, so…
- timeout = setTimeout(function() {
- // …if no piped data arrived after a whole minute, handle shell
- // arguments instead.
- main();
- }, 60000);
- }
- let data = '';
- stdin.on('data', function(chunk) {
- clearTimeout(timeout);
- data += chunk;
- });
- stdin.on('end', function() {
- strings.push(data.trim());
- main();
- });
- stdin.resume();
-}
diff --git a/assets/node_modules/cssesc/cssesc.js b/assets/node_modules/cssesc/cssesc.js
deleted file mode 100644
index 1c0928e..0000000
--- a/assets/node_modules/cssesc/cssesc.js
+++ /dev/null
@@ -1,110 +0,0 @@
-/*! https://mths.be/cssesc v3.0.0 by @mathias */
-'use strict';
-
-var object = {};
-var hasOwnProperty = object.hasOwnProperty;
-var merge = function merge(options, defaults) {
- if (!options) {
- return defaults;
- }
- var result = {};
- for (var key in defaults) {
- // `if (defaults.hasOwnProperty(key) { … }` is not needed here, since
- // only recognized option names are used.
- result[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key];
- }
- return result;
-};
-
-var regexAnySingleEscape = /[ -,\.\/:-@\[-\^`\{-~]/;
-var regexSingleEscape = /[ -,\.\/:-@\[\]\^`\{-~]/;
-var regexAlwaysEscape = /['"\\]/;
-var regexExcessiveSpaces = /(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g;
-
-// https://mathiasbynens.be/notes/css-escapes#css
-var cssesc = function cssesc(string, options) {
- options = merge(options, cssesc.options);
- if (options.quotes != 'single' && options.quotes != 'double') {
- options.quotes = 'single';
- }
- var quote = options.quotes == 'double' ? '"' : '\'';
- var isIdentifier = options.isIdentifier;
-
- var firstChar = string.charAt(0);
- var output = '';
- var counter = 0;
- var length = string.length;
- while (counter < length) {
- var character = string.charAt(counter++);
- var codePoint = character.charCodeAt();
- var value = void 0;
- // If it’s not a printable ASCII character…
- if (codePoint < 0x20 || codePoint > 0x7E) {
- if (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) {
- // It’s a high surrogate, and there is a next character.
- var extra = string.charCodeAt(counter++);
- if ((extra & 0xFC00) == 0xDC00) {
- // next character is low surrogate
- codePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000;
- } else {
- // It’s an unmatched surrogate; only append this code unit, in case
- // the next code unit is the high surrogate of a surrogate pair.
- counter--;
- }
- }
- value = '\\' + codePoint.toString(16).toUpperCase() + ' ';
- } else {
- if (options.escapeEverything) {
- if (regexAnySingleEscape.test(character)) {
- value = '\\' + character;
- } else {
- value = '\\' + codePoint.toString(16).toUpperCase() + ' ';
- }
- } else if (/[\t\n\f\r\x0B]/.test(character)) {
- value = '\\' + codePoint.toString(16).toUpperCase() + ' ';
- } else if (character == '\\' || !isIdentifier && (character == '"' && quote == character || character == '\'' && quote == character) || isIdentifier && regexSingleEscape.test(character)) {
- value = '\\' + character;
- } else {
- value = character;
- }
- }
- output += value;
- }
-
- if (isIdentifier) {
- if (/^-[-\d]/.test(output)) {
- output = '\\-' + output.slice(1);
- } else if (/\d/.test(firstChar)) {
- output = '\\3' + firstChar + ' ' + output.slice(1);
- }
- }
-
- // Remove spaces after `\HEX` escapes that are not followed by a hex digit,
- // since they’re redundant. Note that this is only possible if the escape
- // sequence isn’t preceded by an odd number of backslashes.
- output = output.replace(regexExcessiveSpaces, function ($0, $1, $2) {
- if ($1 && $1.length % 2) {
- // It’s not safe to remove the space, so don’t.
- return $0;
- }
- // Strip the space.
- return ($1 || '') + $2;
- });
-
- if (!isIdentifier && options.wrap) {
- return quote + output + quote;
- }
- return output;
-};
-
-// Expose default options (so they can be overridden globally).
-cssesc.options = {
- 'escapeEverything': false,
- 'isIdentifier': false,
- 'quotes': 'single',
- 'wrap': false
-};
-
-cssesc.version = '3.0.0';
-
-module.exports = cssesc;
diff --git a/assets/node_modules/cssesc/man/cssesc.1 b/assets/node_modules/cssesc/man/cssesc.1
deleted file mode 100644
index eee4996..0000000
--- a/assets/node_modules/cssesc/man/cssesc.1
+++ /dev/null
@@ -1,70 +0,0 @@
-.Dd August 9, 2013
-.Dt cssesc 1
-.Sh NAME
-.Nm cssesc
-.Nd escape text for use in CSS string literals or identifiers
-.Sh SYNOPSIS
-.Nm
-.Op Fl i | -identifier Ar string
-.br
-.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 v | -version
-.br
-.Op Fl h | -help
-.Sh DESCRIPTION
-.Nm
-escapes strings for use in CSS string literals or identifiers while generating the shortest possible valid ASCII-only output.
-.Sh OPTIONS
-.Bl -ohang -offset
-.It Sy "-s, --single-quotes"
-Escape any occurences of ' in the input string as \\', so that the output can be used in a CSS string literal wrapped in single quotes.
-.It Sy "-d, --double-quotes"
-Escape any occurences of " in the input string as \\", so that the output can be used in a CSS string literal wrapped in double quotes.
-.It Sy "-w, --wrap"
-Make sure the output is a valid CSS 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 "-e, --escape-everything"
-Escape all the symbols in the output, even printable ASCII symbols.
-.It Sy "-v, --version"
-Print cssesc's version.
-.It Sy "-h, --help"
-Show the help screen.
-.El
-.Sh EXIT STATUS
-The
-.Nm cssesc
-utility exits with one of the following values:
-.Pp
-.Bl -tag -width flag -compact
-.It Li 0
-.Nm
-successfully escaped the given text 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 "cssesc 'foo bar baz'"
-Print an escaped version of the given text.
-.It Sy echo\ 'foo bar baz'\ |\ cssesc
-Print an escaped version of the text that gets piped in.
-.El
-.Sh BUGS
-cssesc's bug tracker is located at <https://github.com/mathiasbynens/cssesc/issues>.
-.Sh AUTHOR
-Mathias Bynens <https://mathiasbynens.be/>
-.Sh WWW
-<https://mths.be/cssesc>
diff --git a/assets/node_modules/cssesc/package.json b/assets/node_modules/cssesc/package.json
deleted file mode 100644
index 076c84d..0000000
--- a/assets/node_modules/cssesc/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "name": "cssesc",
- "version": "3.0.0",
- "description": "A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.",
- "homepage": "https://mths.be/cssesc",
- "engines": {
- "node": ">=4"
- },
- "main": "cssesc.js",
- "bin": "bin/cssesc",
- "man": "man/cssesc.1",
- "keywords": [
- "css",
- "escape",
- "identifier",
- "string",
- "tool"
- ],
- "license": "MIT",
- "author": {
- "name": "Mathias Bynens",
- "url": "https://mathiasbynens.be/"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/mathiasbynens/cssesc.git"
- },
- "bugs": "https://github.com/mathiasbynens/cssesc/issues",
- "files": [
- "LICENSE-MIT.txt",
- "cssesc.js",
- "bin/",
- "man/"
- ],
- "scripts": {
- "build": "grunt template && babel cssesc.js -o cssesc.js",
- "test": "mocha tests",
- "cover": "istanbul cover --report html node_modules/.bin/_mocha tests -- -u exports -R spec"
- },
- "devDependencies": {
- "babel-cli": "^6.26.0",
- "babel-preset-env": "^1.6.1",
- "codecov": "^1.0.1",
- "grunt": "^1.0.1",
- "grunt-template": "^1.0.0",
- "istanbul": "^0.4.4",
- "mocha": "^2.5.3",
- "regenerate": "^1.2.1",
- "requirejs": "^2.1.16"
- }
-}
diff --git a/assets/node_modules/debug/CHANGELOG.md b/assets/node_modules/debug/CHANGELOG.md
deleted file mode 100644
index 820d21e..0000000
--- a/assets/node_modules/debug/CHANGELOG.md
+++ /dev/null
@@ -1,395 +0,0 @@
-
-3.1.0 / 2017-09-26
-==================
-
- * Add `DEBUG_HIDE_DATE` env var (#486)
- * Remove ReDoS regexp in %o formatter (#504)
- * Remove "component" from package.json
- * Remove `component.json`
- * Ignore package-lock.json
- * Examples: fix colors printout
- * Fix: browser detection
- * Fix: spelling mistake (#496, @EdwardBetts)
-
-3.0.1 / 2017-08-24
-==================
-
- * Fix: Disable colors in Edge and Internet Explorer (#489)
-
-3.0.0 / 2017-08-08
-==================
-
- * Breaking: Remove DEBUG_FD (#406)
- * Breaking: Use `Date#toISOString()` instead to `Date#toUTCString()` when output is not a TTY (#418)
- * Breaking: Make millisecond timer namespace specific and allow 'always enabled' output (#408)
- * Addition: document `enabled` flag (#465)
- * Addition: add 256 colors mode (#481)
- * Addition: `enabled()` updates existing debug instances, add `destroy()` function (#440)
- * Update: component: update "ms" to v2.0.0
- * Update: separate the Node and Browser tests in Travis-CI
- * Update: refactor Readme, fixed documentation, added "Namespace Colors" section, redid screenshots
- * Update: separate Node.js and web browser examples for organization
- * Update: update "browserify" to v14.4.0
- * Fix: fix Readme typo (#473)
-
-2.6.9 / 2017-09-22
-==================
-
- * remove ReDoS regexp in %o formatter (#504)
-
-2.6.8 / 2017-05-18
-==================
-
- * Fix: Check for undefined on browser globals (#462, @marbemac)
-
-2.6.7 / 2017-05-16
-==================
-
- * Fix: Update ms to 2.0.0 to fix regular expression denial of service vulnerability (#458, @hubdotcom)
- * Fix: Inline extend function in node implementation (#452, @dougwilson)
- * Docs: Fix typo (#455, @msasad)
-
-2.6.5 / 2017-04-27
-==================
-
- * Fix: null reference check on window.documentElement.style.WebkitAppearance (#447, @thebigredgeek)
- * Misc: clean up browser reference checks (#447, @thebigredgeek)
- * Misc: add npm-debug.log to .gitignore (@thebigredgeek)
-
-
-2.6.4 / 2017-04-20
-==================
-
- * Fix: bug that would occur if process.env.DEBUG is a non-string value. (#444, @LucianBuzzo)
- * Chore: ignore bower.json in npm installations. (#437, @joaovieira)
- * Misc: update "ms" to v0.7.3 (@tootallnate)
-
-2.6.3 / 2017-03-13
-==================
-
- * Fix: Electron reference to `process.env.DEBUG` (#431, @paulcbetts)
- * Docs: Changelog fix (@thebigredgeek)
-
-2.6.2 / 2017-03-10
-==================
-
- * Fix: DEBUG_MAX_ARRAY_LENGTH (#420, @slavaGanzin)
- * Docs: Add backers and sponsors from Open Collective (#422, @piamancini)
- * Docs: Add Slackin invite badge (@tootallnate)
-
-2.6.1 / 2017-02-10
-==================
-
- * Fix: Module's `export default` syntax fix for IE8 `Expected identifier` error
- * Fix: Whitelist DEBUG_FD for values 1 and 2 only (#415, @pi0)
- * Fix: IE8 "Expected identifier" error (#414, @vgoma)
- * Fix: Namespaces would not disable once enabled (#409, @musikov)
-
-2.6.0 / 2016-12-28
-==================
-
- * Fix: added better null pointer checks for browser useColors (@thebigredgeek)
- * Improvement: removed explicit `window.debug` export (#404, @tootallnate)
- * Improvement: deprecated `DEBUG_FD` environment variable (#405, @tootallnate)
-
-2.5.2 / 2016-12-25
-==================
-
- * Fix: reference error on window within webworkers (#393, @KlausTrainer)
- * Docs: fixed README typo (#391, @lurch)
- * Docs: added notice about v3 api discussion (@thebigredgeek)
-
-2.5.1 / 2016-12-20
-==================
-
- * Fix: babel-core compatibility
-
-2.5.0 / 2016-12-20
-==================
-
- * Fix: wrong reference in bower file (@thebigredgeek)
- * Fix: webworker compatibility (@thebigredgeek)
- * Fix: output formatting issue (#388, @kribblo)
- * Fix: babel-loader compatibility (#383, @escwald)
- * Misc: removed built asset from repo and publications (@thebigredgeek)
- * Misc: moved source files to /src (#378, @yamikuronue)
- * Test: added karma integration and replaced babel with browserify for browser tests (#378, @yamikuronue)
- * Test: coveralls integration (#378, @yamikuronue)
- * Docs: simplified language in the opening paragraph (#373, @yamikuronue)
-
-2.4.5 / 2016-12-17
-==================
-
- * Fix: `navigator` undefined in Rhino (#376, @jochenberger)
- * Fix: custom log function (#379, @hsiliev)
- * Improvement: bit of cleanup + linting fixes (@thebigredgeek)
- * Improvement: rm non-maintainted `dist/` dir (#375, @freewil)
- * Docs: simplified language in the opening paragraph. (#373, @yamikuronue)
-
-2.4.4 / 2016-12-14
-==================
-
- * Fix: work around debug being loaded in preload scripts for electron (#368, @paulcbetts)
-
-2.4.3 / 2016-12-14
-==================
-
- * Fix: navigation.userAgent error for react native (#364, @escwald)
-
-2.4.2 / 2016-12-14
-==================
-
- * Fix: browser colors (#367, @tootallnate)
- * Misc: travis ci integration (@thebigredgeek)
- * Misc: added linting and testing boilerplate with sanity check (@thebigredgeek)
-
-2.4.1 / 2016-12-13
-==================
-
- * Fix: typo that broke the package (#356)
-
-2.4.0 / 2016-12-13
-==================
-
- * Fix: bower.json references unbuilt src entry point (#342, @justmatt)
- * Fix: revert "handle regex special characters" (@tootallnate)
- * Feature: configurable util.inspect()`options for NodeJS (#327, @tootallnate)
- * Feature: %O`(big O) pretty-prints objects (#322, @tootallnate)
- * Improvement: allow colors in workers (#335, @botverse)
- * Improvement: use same color for same namespace. (#338, @lchenay)
-
-2.3.3 / 2016-11-09
-==================
-
- * Fix: Catch `JSON.stringify()` errors (#195, Jovan Alleyne)
- * Fix: Returning `localStorage` saved values (#331, Levi Thomason)
- * Improvement: Don't create an empty object when no `process` (Nathan Rajlich)
-
-2.3.2 / 2016-11-09
-==================
-
- * Fix: be super-safe in index.js as well (@TooTallNate)
- * Fix: should check whether process exists (Tom Newby)
-
-2.3.1 / 2016-11-09
-==================
-
- * Fix: Added electron compatibility (#324, @paulcbetts)
- * Improvement: Added performance optimizations (@tootallnate)
- * Readme: Corrected PowerShell environment variable example (#252, @gimre)
- * Misc: Removed yarn lock file from source control (#321, @fengmk2)
-
-2.3.0 / 2016-11-07
-==================
-
- * Fix: Consistent placement of ms diff at end of output (#215, @gorangajic)
- * Fix: Escaping of regex special characters in namespace strings (#250, @zacronos)
- * Fix: Fixed bug causing crash on react-native (#282, @vkarpov15)
- * Feature: Enabled ES6+ compatible import via default export (#212 @bucaran)
- * Feature: Added %O formatter to reflect Chrome's console.log capability (#279, @oncletom)
- * Package: Update "ms" to 0.7.2 (#315, @DevSide)
- * Package: removed superfluous version property from bower.json (#207 @kkirsche)
- * Readme: fix USE_COLORS to DEBUG_COLORS
- * Readme: Doc fixes for format string sugar (#269, @mlucool)
- * Readme: Updated docs for DEBUG_FD and DEBUG_COLORS environment variables (#232, @mattlyons0)
- * Readme: doc fixes for PowerShell (#271 #243, @exoticknight @unreadable)
- * Readme: better docs for browser support (#224, @matthewmueller)
- * Tooling: Added yarn integration for development (#317, @thebigredgeek)
- * Misc: Renamed History.md to CHANGELOG.md (@thebigredgeek)
- * Misc: Added license file (#226 #274, @CantemoInternal @sdaitzman)
- * Misc: Updated contributors (@thebigredgeek)
-
-2.2.0 / 2015-05-09
-==================
-
- * package: update "ms" to v0.7.1 (#202, @dougwilson)
- * README: add logging to file example (#193, @DanielOchoa)
- * README: fixed a typo (#191, @amir-s)
- * browser: expose `storage` (#190, @stephenmathieson)
- * Makefile: add a `distclean` target (#189, @stephenmathieson)
-
-2.1.3 / 2015-03-13
-==================
-
- * Updated stdout/stderr example (#186)
- * Updated example/stdout.js to match debug current behaviour
- * Renamed example/stderr.js to stdout.js
- * Update Readme.md (#184)
- * replace high intensity foreground color for bold (#182, #183)
-
-2.1.2 / 2015-03-01
-==================
-
- * dist: recompile
- * update "ms" to v0.7.0
- * package: update "browserify" to v9.0.3
- * component: fix "ms.js" repo location
- * changed bower package name
- * updated documentation about using debug in a browser
- * fix: security error on safari (#167, #168, @yields)
-
-2.1.1 / 2014-12-29
-==================
-
- * browser: use `typeof` to check for `console` existence
- * browser: check for `console.log` truthiness (fix IE 8/9)
- * browser: add support for Chrome apps
- * Readme: added Windows usage remarks
- * Add `bower.json` to properly support bower install
-
-2.1.0 / 2014-10-15
-==================
-
- * node: implement `DEBUG_FD` env variable support
- * package: update "browserify" to v6.1.0
- * package: add "license" field to package.json (#135, @panuhorsmalahti)
-
-2.0.0 / 2014-09-01
-==================
-
- * package: update "browserify" to v5.11.0
- * node: use stderr rather than stdout for logging (#29, @stephenmathieson)
-
-1.0.4 / 2014-07-15
-==================
-
- * dist: recompile
- * example: remove `console.info()` log usage
- * example: add "Content-Type" UTF-8 header to browser example
- * browser: place %c marker after the space character
- * browser: reset the "content" color via `color: inherit`
- * browser: add colors support for Firefox >= v31
- * debug: prefer an instance `log()` function over the global one (#119)
- * Readme: update documentation about styled console logs for FF v31 (#116, @wryk)
-
-1.0.3 / 2014-07-09
-==================
-
- * Add support for multiple wildcards in namespaces (#122, @seegno)
- * browser: fix lint
-
-1.0.2 / 2014-06-10
-==================
-
- * browser: update color palette (#113, @gscottolson)
- * common: make console logging function configurable (#108, @timoxley)
- * node: fix %o colors on old node <= 0.8.x
- * Makefile: find node path using shell/which (#109, @timoxley)
-
-1.0.1 / 2014-06-06
-==================
-
- * browser: use `removeItem()` to clear localStorage
- * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777)
- * package: add "contributors" section
- * node: fix comment typo
- * README: list authors
-
-1.0.0 / 2014-06-04
-==================
-
- * make ms diff be global, not be scope
- * debug: ignore empty strings in enable()
- * node: make DEBUG_COLORS able to disable coloring
- * *: export the `colors` array
- * npmignore: don't publish the `dist` dir
- * Makefile: refactor to use browserify
- * package: add "browserify" as a dev dependency
- * Readme: add Web Inspector Colors section
- * node: reset terminal color for the debug content
- * node: map "%o" to `util.inspect()`
- * browser: map "%j" to `JSON.stringify()`
- * debug: add custom "formatters"
- * debug: use "ms" module for humanizing the diff
- * Readme: add "bash" syntax highlighting
- * browser: add Firebug color support
- * browser: add colors for WebKit browsers
- * node: apply log to `console`
- * rewrite: abstract common logic for Node & browsers
- * add .jshintrc file
-
-0.8.1 / 2014-04-14
-==================
-
- * package: re-add the "component" section
-
-0.8.0 / 2014-03-30
-==================
-
- * add `enable()` method for nodejs. Closes #27
- * change from stderr to stdout
- * remove unnecessary index.js file
-
-0.7.4 / 2013-11-13
-==================
-
- * remove "browserify" key from package.json (fixes something in browserify)
-
-0.7.3 / 2013-10-30
-==================
-
- * fix: catch localStorage security error when cookies are blocked (Chrome)
- * add debug(err) support. Closes #46
- * add .browser prop to package.json. Closes #42
-
-0.7.2 / 2013-02-06
-==================
-
- * fix package.json
- * fix: Mobile Safari (private mode) is broken with debug
- * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript
-
-0.7.1 / 2013-02-05
-==================
-
- * add repository URL to package.json
- * add DEBUG_COLORED to force colored output
- * add browserify support
- * fix component. Closes #24
-
-0.7.0 / 2012-05-04
-==================
-
- * Added .component to package.json
- * Added debug.component.js build
-
-0.6.0 / 2012-03-16
-==================
-
- * Added support for "-" prefix in DEBUG [Vinay Pulim]
- * Added `.enabled` flag to the node version [TooTallNate]
-
-0.5.0 / 2012-02-02
-==================
-
- * Added: humanize diffs. Closes #8
- * Added `debug.disable()` to the CS variant
- * Removed padding. Closes #10
- * Fixed: persist client-side variant again. Closes #9
-
-0.4.0 / 2012-02-01
-==================
-
- * Added browser variant support for older browsers [TooTallNate]
- * Added `debug.enable('project:*')` to browser variant [TooTallNate]
- * Added padding to diff (moved it to the right)
-
-0.3.0 / 2012-01-26
-==================
-
- * Added millisecond diff when isatty, otherwise UTC string
-
-0.2.0 / 2012-01-22
-==================
-
- * Added wildcard support
-
-0.1.0 / 2011-12-02
-==================
-
- * Added: remove colors unless stderr isatty [TooTallNate]
-
-0.0.1 / 2010-01-03
-==================
-
- * Initial release
diff --git a/assets/node_modules/debug/LICENSE b/assets/node_modules/debug/LICENSE
deleted file mode 100644
index 658c933..0000000
--- a/assets/node_modules/debug/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2014 TJ Holowaychuk <tj@vision-media.ca>
-
-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/assets/node_modules/debug/README.md b/assets/node_modules/debug/README.md
deleted file mode 100644
index 88dae35..0000000
--- a/assets/node_modules/debug/README.md
+++ /dev/null
@@ -1,455 +0,0 @@
-# debug
-[![Build Status](https://travis-ci.org/visionmedia/debug.svg?branch=master)](https://travis-ci.org/visionmedia/debug) [![Coverage Status](https://coveralls.io/repos/github/visionmedia/debug/badge.svg?branch=master)](https://coveralls.io/github/visionmedia/debug?branch=master) [![Slack](https://visionmedia-community-slackin.now.sh/badge.svg)](https://visionmedia-community-slackin.now.sh/) [![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers)
-[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors)
-
-<img width="647" src="https://user-images.githubusercontent.com/71256/29091486-fa38524c-7c37-11e7-895f-e7ec8e1039b6.png">
-
-A tiny JavaScript debugging utility modelled after Node.js core's debugging
-technique. Works in Node.js and web browsers.
-
-## Installation
-
-```bash
-$ npm install debug
-```
-
-## Usage
-
-`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole.
-
-Example [_app.js_](./examples/node/app.js):
-
-```js
-var debug = require('debug')('http')
- , http = require('http')
- , name = 'My App';
-
-// fake app
-
-debug('booting %o', name);
-
-http.createServer(function(req, res){
- debug(req.method + ' ' + req.url);
- res.end('hello\n');
-}).listen(3000, function(){
- debug('listening');
-});
-
-// fake worker of some kind
-
-require('./worker');
-```
-
-Example [_worker.js_](./examples/node/worker.js):
-
-```js
-var a = require('debug')('worker:a')
- , b = require('debug')('worker:b');
-
-function work() {
- a('doing lots of uninteresting work');
- setTimeout(work, Math.random() * 1000);
-}
-
-work();
-
-function workb() {
- b('doing some work');
- setTimeout(workb, Math.random() * 2000);
-}
-
-workb();
-```
-
-The `DEBUG` environment variable is then used to enable these based on space or
-comma-delimited names.
-
-Here are some examples:
-
-<img width="647" alt="screen shot 2017-08-08 at 12 53 04 pm" src="https://user-images.githubusercontent.com/71256/29091703-a6302cdc-7c38-11e7-8304-7c0b3bc600cd.png">
-<img width="647" alt="screen shot 2017-08-08 at 12 53 38 pm" src="https://user-images.githubusercontent.com/71256/29091700-a62a6888-7c38-11e7-800b-db911291ca2b.png">
-<img width="647" alt="screen shot 2017-08-08 at 12 53 25 pm" src="https://user-images.githubusercontent.com/71256/29091701-a62ea114-7c38-11e7-826a-2692bedca740.png">
-
-#### Windows command prompt notes
-
-##### CMD
-
-On Windows the environment variable is set using the `set` command.
-
-```cmd
-set DEBUG=*,-not_this
-```
-
-Example:
-
-```cmd
-set DEBUG=* & node app.js
-```
-
-##### PowerShell (VS Code default)
-
-PowerShell uses different syntax to set environment variables.
-
-```cmd
-$env:DEBUG = "*,-not_this"
-```
-
-Example:
-
-```cmd
-$env:DEBUG='app';node app.js
-```
-
-Then, run the program to be debugged as usual.
-
-npm script example:
-```js
- "windowsDebug": "@powershell -Command $env:DEBUG='*';node app.js",
-```
-
-## Namespace Colors
-
-Every debug instance has a color generated for it based on its namespace name.
-This helps when visually parsing the debug output to identify which debug instance
-a debug line belongs to.
-
-#### Node.js
-
-In Node.js, colors are enabled when stderr is a TTY. You also _should_ install
-the [`supports-color`](https://npmjs.org/supports-color) module alongside debug,
-otherwise debug will only use a small handful of basic colors.
-
-<img width="521" src="https://user-images.githubusercontent.com/71256/29092181-47f6a9e6-7c3a-11e7-9a14-1928d8a711cd.png">
-
-#### Web Browser
-
-Colors are also enabled on "Web Inspectors" that understand the `%c` formatting
-option. These are WebKit web inspectors, Firefox ([since version
-31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/))
-and the Firebug plugin for Firefox (any version).
-
-<img width="524" src="https://user-images.githubusercontent.com/71256/29092033-b65f9f2e-7c39-11e7-8e32-f6f0d8e865c1.png">
-
-
-## Millisecond diff
-
-When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls.
-
-<img width="647" src="https://user-images.githubusercontent.com/71256/29091486-fa38524c-7c37-11e7-895f-e7ec8e1039b6.png">
-
-When stdout is not a TTY, `Date#toISOString()` is used, making it more useful for logging the debug information as shown below:
-
-<img width="647" src="https://user-images.githubusercontent.com/71256/29091956-6bd78372-7c39-11e7-8c55-c948396d6edd.png">
-
-
-## Conventions
-
-If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". If you append a "*" to the end of your name, it will always be enabled regardless of the setting of the DEBUG environment variable. You can then use it for normal output as well as debug output.
-
-## Wildcards
-
-The `*` character may be used as a wildcard. Suppose for example your library has
-debuggers named "connect:bodyParser", "connect:compress", "connect:session",
-instead of listing all three with
-`DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do
-`DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.
-
-You can also exclude specific debuggers by prefixing them with a "-" character.
-For example, `DEBUG=*,-connect:*` would include all debuggers except those
-starting with "connect:".
-
-## Environment Variables
-
-When running through Node.js, you can set a few environment variables that will
-change the behavior of the debug logging:
-
-| Name | Purpose |
-|-----------|-------------------------------------------------|
-| `DEBUG` | Enables/disables specific debugging namespaces. |
-| `DEBUG_HIDE_DATE` | Hide date from debug output (non-TTY). |
-| `DEBUG_COLORS`| Whether or not to use colors in the debug output. |
-| `DEBUG_DEPTH` | Object inspection depth. |
-| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. |
-
-
-__Note:__ The environment variables beginning with `DEBUG_` end up being
-converted into an Options object that gets used with `%o`/`%O` formatters.
-See the Node.js documentation for
-[`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options)
-for the complete list.
-
-## Formatters
-
-Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting.
-Below are the officially supported formatters:
-
-| Formatter | Representation |
-|-----------|----------------|
-| `%O` | Pretty-print an Object on multiple lines. |
-| `%o` | Pretty-print an Object all on a single line. |
-| `%s` | String. |
-| `%d` | Number (both integer and float). |
-| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. |
-| `%%` | Single percent sign ('%'). This does not consume an argument. |
-
-
-### Custom formatters
-
-You can add custom formatters by extending the `debug.formatters` object.
-For example, if you wanted to add support for rendering a Buffer as hex with
-`%h`, you could do something like:
-
-```js
-const createDebug = require('debug')
-createDebug.formatters.h = (v) => {
- return v.toString('hex')
-}
-
-// …elsewhere
-const debug = createDebug('foo')
-debug('this is hex: %h', new Buffer('hello world'))
-// foo this is hex: 68656c6c6f20776f726c6421 +0ms
-```
-
-
-## Browser Support
-
-You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify),
-or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest),
-if you don't want to build it yourself.
-
-Debug's enable state is currently persisted by `localStorage`.
-Consider the situation shown below where you have `worker:a` and `worker:b`,
-and wish to debug both. You can enable this using `localStorage.debug`:
-
-```js
-localStorage.debug = 'worker:*'
-```
-
-And then refresh the page.
-
-```js
-a = debug('worker:a');
-b = debug('worker:b');
-
-setInterval(function(){
- a('doing some work');
-}, 1000);
-
-setInterval(function(){
- b('doing some work');
-}, 1200);
-```
-
-
-## Output streams
-
- By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method:
-
-Example [_stdout.js_](./examples/node/stdout.js):
-
-```js
-var debug = require('debug');
-var error = debug('app:error');
-
-// by default stderr is used
-error('goes to stderr!');
-
-var log = debug('app:log');
-// set this namespace to log via console.log
-log.log = console.log.bind(console); // don't forget to bind to console!
-log('goes to stdout');
-error('still goes to stderr!');
-
-// set all output to go via console.info
-// overrides all per-namespace log settings
-debug.log = console.info.bind(console);
-error('now goes to stdout via console.info');
-log('still goes to stdout, but via console.info now');
-```
-
-## Extend
-You can simply extend debugger
-```js
-const log = require('debug')('auth');
-
-//creates new debug instance with extended namespace
-const logSign = log.extend('sign');
-const logLogin = log.extend('login');
-
-log('hello'); // auth hello
-logSign('hello'); //auth:sign hello
-logLogin('hello'); //auth:login hello
-```
-
-## Set dynamically
-
-You can also enable debug dynamically by calling the `enable()` method :
-
-```js
-let debug = require('debug');
-
-console.log(1, debug.enabled('test'));
-
-debug.enable('test');
-console.log(2, debug.enabled('test'));
-
-debug.disable();
-console.log(3, debug.enabled('test'));
-
-```
-
-print :
-```
-1 false
-2 true
-3 false
-```
-
-Usage :
-`enable(namespaces)`
-`namespaces` can include modes separated by a colon and wildcards.
-
-Note that calling `enable()` completely overrides previously set DEBUG variable :
-
-```
-$ DEBUG=foo node -e 'var dbg = require("debug"); dbg.enable("bar"); console.log(dbg.enabled("foo"))'
-=> false
-```
-
-`disable()`
-
-Will disable all namespaces. The functions returns the namespaces currently
-enabled (and skipped). This can be useful if you want to disable debugging
-temporarily without knowing what was enabled to begin with.
-
-For example:
-
-```js
-let debug = require('debug');
-debug.enable('foo:*,-foo:bar');
-let namespaces = debug.disable();
-debug.enable(namespaces);
-```
-
-Note: There is no guarantee that the string will be identical to the initial
-enable string, but semantically they will be identical.
-
-## Checking whether a debug target is enabled
-
-After you've created a debug instance, you can determine whether or not it is
-enabled by checking the `enabled` property:
-
-```javascript
-const debug = require('debug')('http');
-
-if (debug.enabled) {
- // do stuff...
-}
-```
-
-You can also manually toggle this property to force the debug instance to be
-enabled or disabled.
-
-
-## Authors
-
- - TJ Holowaychuk
- - Nathan Rajlich
- - Andrew Rhyne
-
-## Backers
-
-Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)]
-
-<a href="https://opencollective.com/debug/backer/0/website" target="_blank"><img src="https://opencollective.com/debug/backer/0/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/1/website" target="_blank"><img src="https://opencollective.com/debug/backer/1/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/2/website" target="_blank"><img src="https://opencollective.com/debug/backer/2/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/3/website" target="_blank"><img src="https://opencollective.com/debug/backer/3/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/4/website" target="_blank"><img src="https://opencollective.com/debug/backer/4/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/5/website" target="_blank"><img src="https://opencollective.com/debug/backer/5/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/6/website" target="_blank"><img src="https://opencollective.com/debug/backer/6/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/7/website" target="_blank"><img src="https://opencollective.com/debug/backer/7/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/8/website" target="_blank"><img src="https://opencollective.com/debug/backer/8/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/9/website" target="_blank"><img src="https://opencollective.com/debug/backer/9/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/10/website" target="_blank"><img src="https://opencollective.com/debug/backer/10/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/11/website" target="_blank"><img src="https://opencollective.com/debug/backer/11/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/12/website" target="_blank"><img src="https://opencollective.com/debug/backer/12/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/13/website" target="_blank"><img src="https://opencollective.com/debug/backer/13/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/14/website" target="_blank"><img src="https://opencollective.com/debug/backer/14/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/15/website" target="_blank"><img src="https://opencollective.com/debug/backer/15/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/16/website" target="_blank"><img src="https://opencollective.com/debug/backer/16/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/17/website" target="_blank"><img src="https://opencollective.com/debug/backer/17/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/18/website" target="_blank"><img src="https://opencollective.com/debug/backer/18/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/19/website" target="_blank"><img src="https://opencollective.com/debug/backer/19/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/20/website" target="_blank"><img src="https://opencollective.com/debug/backer/20/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/21/website" target="_blank"><img src="https://opencollective.com/debug/backer/21/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/22/website" target="_blank"><img src="https://opencollective.com/debug/backer/22/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/23/website" target="_blank"><img src="https://opencollective.com/debug/backer/23/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/24/website" target="_blank"><img src="https://opencollective.com/debug/backer/24/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/25/website" target="_blank"><img src="https://opencollective.com/debug/backer/25/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/26/website" target="_blank"><img src="https://opencollective.com/debug/backer/26/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/27/website" target="_blank"><img src="https://opencollective.com/debug/backer/27/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/28/website" target="_blank"><img src="https://opencollective.com/debug/backer/28/avatar.svg"></a>
-<a href="https://opencollective.com/debug/backer/29/website" target="_blank"><img src="https://opencollective.com/debug/backer/29/avatar.svg"></a>
-
-
-## Sponsors
-
-Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)]
-
-<a href="https://opencollective.com/debug/sponsor/0/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/0/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/1/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/1/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/2/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/2/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/3/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/3/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/4/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/4/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/5/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/5/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/6/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/6/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/7/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/7/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/8/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/8/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/9/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/9/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/10/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/10/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/11/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/11/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/12/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/12/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/13/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/13/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/14/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/14/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/15/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/15/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/16/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/16/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/17/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/17/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/18/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/18/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/19/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/19/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/20/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/20/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/21/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/21/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/22/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/22/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/23/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/23/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/24/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/24/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/25/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/25/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/26/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/26/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/27/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/27/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/28/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/28/avatar.svg"></a>
-<a href="https://opencollective.com/debug/sponsor/29/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/29/avatar.svg"></a>
-
-## License
-
-(The MIT License)
-
-Copyright (c) 2014-2017 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
-
-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/assets/node_modules/debug/dist/debug.js b/assets/node_modules/debug/dist/debug.js
deleted file mode 100644
index 89ad0c2..0000000
--- a/assets/node_modules/debug/dist/debug.js
+++ /dev/null
@@ -1,912 +0,0 @@
-"use strict";
-
-function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
-
-function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
-
-function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
-
-function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
-
-function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
-
-(function (f) {
- if ((typeof exports === "undefined" ? "undefined" : _typeof(exports)) === "object" && typeof module !== "undefined") {
- module.exports = f();
- } else if (typeof define === "function" && define.amd) {
- define([], f);
- } else {
- var g;
-
- if (typeof window !== "undefined") {
- g = window;
- } else if (typeof global !== "undefined") {
- g = global;
- } else if (typeof self !== "undefined") {
- g = self;
- } else {
- g = this;
- }
-
- g.debug = f();
- }
-})(function () {
- var define, module, exports;
- return function () {
- function r(e, n, t) {
- function o(i, f) {
- if (!n[i]) {
- if (!e[i]) {
- var c = "function" == typeof require && require;
- if (!f && c) return c(i, !0);
- if (u) return u(i, !0);
- var a = new Error("Cannot find module '" + i + "'");
- throw a.code = "MODULE_NOT_FOUND", a;
- }
-
- var p = n[i] = {
- exports: {}
- };
- e[i][0].call(p.exports, function (r) {
- var n = e[i][1][r];
- return o(n || r);
- }, p, p.exports, r, e, n, t);
- }
-
- return n[i].exports;
- }
-
- for (var u = "function" == typeof require && require, i = 0; i < t.length; i++) {
- o(t[i]);
- }
-
- return o;
- }
-
- return r;
- }()({
- 1: [function (require, module, exports) {
- /**
- * Helpers.
- */
- var s = 1000;
- var m = s * 60;
- var h = m * 60;
- var d = h * 24;
- var w = d * 7;
- var y = d * 365.25;
- /**
- * Parse or format the given `val`.
- *
- * Options:
- *
- * - `long` verbose formatting [false]
- *
- * @param {String|Number} val
- * @param {Object} [options]
- * @throws {Error} throw an error if val is not a non-empty string or a number
- * @return {String|Number}
- * @api public
- */
-
- module.exports = function (val, options) {
- options = options || {};
-
- var type = _typeof(val);
-
- if (type === 'string' && val.length > 0) {
- return parse(val);
- } else if (type === 'number' && isNaN(val) === false) {
- return options.long ? fmtLong(val) : fmtShort(val);
- }
-
- throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val));
- };
- /**
- * Parse the given `str` and return milliseconds.
- *
- * @param {String} str
- * @return {Number}
- * @api private
- */
-
-
- function parse(str) {
- str = String(str);
-
- if (str.length > 100) {
- return;
- }
-
- var match = /^((?:\d+)?\-?\d?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);
-
- if (!match) {
- return;
- }
-
- var n = parseFloat(match[1]);
- var type = (match[2] || 'ms').toLowerCase();
-
- switch (type) {
- case 'years':
- case 'year':
- case 'yrs':
- case 'yr':
- case 'y':
- return n * y;
-
- case 'weeks':
- case 'week':
- case 'w':
- return n * w;
-
- case 'days':
- case 'day':
- case 'd':
- return n * d;
-
- case 'hours':
- case 'hour':
- case 'hrs':
- case 'hr':
- case 'h':
- return n * h;
-
- case 'minutes':
- case 'minute':
- case 'mins':
- case 'min':
- case 'm':
- return n * m;
-
- case 'seconds':
- case 'second':
- case 'secs':
- case 'sec':
- case 's':
- return n * s;
-
- case 'milliseconds':
- case 'millisecond':
- case 'msecs':
- case 'msec':
- case 'ms':
- return n;
-
- default:
- return undefined;
- }
- }
- /**
- * Short format for `ms`.
- *
- * @param {Number} ms
- * @return {String}
- * @api private
- */
-
-
- function fmtShort(ms) {
- var msAbs = Math.abs(ms);
-
- if (msAbs >= d) {
- return Math.round(ms / d) + 'd';
- }
-
- if (msAbs >= h) {
- return Math.round(ms / h) + 'h';
- }
-
- if (msAbs >= m) {
- return Math.round(ms / m) + 'm';
- }
-
- if (msAbs >= s) {
- return Math.round(ms / s) + 's';
- }
-
- return ms + 'ms';
- }
- /**
- * Long format for `ms`.
- *
- * @param {Number} ms
- * @return {String}
- * @api private
- */
-
-
- function fmtLong(ms) {
- var msAbs = Math.abs(ms);
-
- if (msAbs >= d) {
- return plural(ms, msAbs, d, 'day');
- }
-
- if (msAbs >= h) {
- return plural(ms, msAbs, h, 'hour');
- }
-
- if (msAbs >= m) {
- return plural(ms, msAbs, m, 'minute');
- }
-
- if (msAbs >= s) {
- return plural(ms, msAbs, s, 'second');
- }
-
- return ms + ' ms';
- }
- /**
- * Pluralization helper.
- */
-
-
- function plural(ms, msAbs, n, name) {
- var isPlural = msAbs >= n * 1.5;
- return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
- }
- }, {}],
- 2: [function (require, module, exports) {
- // shim for using process in browser
- var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it
- // don't break things. But we need to wrap it in a try catch in case it is
- // wrapped in strict mode code which doesn't define any globals. It's inside a
- // function because try/catches deoptimize in certain engines.
-
- var cachedSetTimeout;
- var cachedClearTimeout;
-
- function defaultSetTimout() {
- throw new Error('setTimeout has not been defined');
- }
-
- function defaultClearTimeout() {
- throw new Error('clearTimeout has not been defined');
- }
-
- (function () {
- try {
- if (typeof setTimeout === 'function') {
- cachedSetTimeout = setTimeout;
- } else {
- cachedSetTimeout = defaultSetTimout;
- }
- } catch (e) {
- cachedSetTimeout = defaultSetTimout;
- }
-
- try {
- if (typeof clearTimeout === 'function') {
- cachedClearTimeout = clearTimeout;
- } else {
- cachedClearTimeout = defaultClearTimeout;
- }
- } catch (e) {
- cachedClearTimeout = defaultClearTimeout;
- }
- })();
-
- function runTimeout(fun) {
- if (cachedSetTimeout === setTimeout) {
- //normal enviroments in sane situations
- return setTimeout(fun, 0);
- } // if setTimeout wasn't available but was latter defined
-
-
- if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
- cachedSetTimeout = setTimeout;
- return setTimeout(fun, 0);
- }
-
- try {
- // when when somebody has screwed with setTimeout but no I.E. maddness
- return cachedSetTimeout(fun, 0);
- } catch (e) {
- try {
- // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
- return cachedSetTimeout.call(null, fun, 0);
- } catch (e) {
- // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
- return cachedSetTimeout.call(this, fun, 0);
- }
- }
- }
-
- function runClearTimeout(marker) {
- if (cachedClearTimeout === clearTimeout) {
- //normal enviroments in sane situations
- return clearTimeout(marker);
- } // if clearTimeout wasn't available but was latter defined
-
-
- if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
- cachedClearTimeout = clearTimeout;
- return clearTimeout(marker);
- }
-
- try {
- // when when somebody has screwed with setTimeout but no I.E. maddness
- return cachedClearTimeout(marker);
- } catch (e) {
- try {
- // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
- return cachedClearTimeout.call(null, marker);
- } catch (e) {
- // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
- // Some versions of I.E. have different rules for clearTimeout vs setTimeout
- return cachedClearTimeout.call(this, marker);
- }
- }
- }
-
- var queue = [];
- var draining = false;
- var currentQueue;
- var queueIndex = -1;
-
- function cleanUpNextTick() {
- if (!draining || !currentQueue) {
- return;
- }
-
- draining = false;
-
- if (currentQueue.length) {
- queue = currentQueue.concat(queue);
- } else {
- queueIndex = -1;
- }
-
- if (queue.length) {
- drainQueue();
- }
- }
-
- function drainQueue() {
- if (draining) {
- return;
- }
-
- var timeout = runTimeout(cleanUpNextTick);
- draining = true;
- var len = queue.length;
-
- while (len) {
- currentQueue = queue;
- queue = [];
-
- while (++queueIndex < len) {
- if (currentQueue) {
- currentQueue[queueIndex].run();
- }
- }
-
- queueIndex = -1;
- len = queue.length;
- }
-
- currentQueue = null;
- draining = false;
- runClearTimeout(timeout);
- }
-
- process.nextTick = function (fun) {
- var args = new Array(arguments.length - 1);
-
- if (arguments.length > 1) {
- for (var i = 1; i < arguments.length; i++) {
- args[i - 1] = arguments[i];
- }
- }
-
- queue.push(new Item(fun, args));
-
- if (queue.length === 1 && !draining) {
- runTimeout(drainQueue);
- }
- }; // v8 likes predictible objects
-
-
- function Item(fun, array) {
- this.fun = fun;
- this.array = array;
- }
-
- Item.prototype.run = function () {
- this.fun.apply(null, this.array);
- };
-
- process.title = 'browser';
- process.browser = true;
- process.env = {};
- process.argv = [];
- process.version = ''; // empty string to avoid regexp issues
-
- process.versions = {};
-
- function noop() {}
-
- process.on = noop;
- process.addListener = noop;
- process.once = noop;
- process.off = noop;
- process.removeListener = noop;
- process.removeAllListeners = noop;
- process.emit = noop;
- process.prependListener = noop;
- process.prependOnceListener = noop;
-
- process.listeners = function (name) {
- return [];
- };
-
- process.binding = function (name) {
- throw new Error('process.binding is not supported');
- };
-
- process.cwd = function () {
- return '/';
- };
-
- process.chdir = function (dir) {
- throw new Error('process.chdir is not supported');
- };
-
- process.umask = function () {
- return 0;
- };
- }, {}],
- 3: [function (require, module, exports) {
- /**
- * This is the common logic for both the Node.js and web browser
- * implementations of `debug()`.
- */
- function setup(env) {
- createDebug.debug = createDebug;
- createDebug.default = createDebug;
- createDebug.coerce = coerce;
- createDebug.disable = disable;
- createDebug.enable = enable;
- createDebug.enabled = enabled;
- createDebug.humanize = require('ms');
- Object.keys(env).forEach(function (key) {
- createDebug[key] = env[key];
- });
- /**
- * Active `debug` instances.
- */
-
- createDebug.instances = [];
- /**
- * The currently active debug mode names, and names to skip.
- */
-
- createDebug.names = [];
- createDebug.skips = [];
- /**
- * Map of special "%n" handling functions, for the debug "format" argument.
- *
- * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
- */
-
- createDebug.formatters = {};
- /**
- * Selects a color for a debug namespace
- * @param {String} namespace The namespace string for the for the debug instance to be colored
- * @return {Number|String} An ANSI color code for the given namespace
- * @api private
- */
-
- function selectColor(namespace) {
- var hash = 0;
-
- for (var i = 0; i < namespace.length; i++) {
- hash = (hash << 5) - hash + namespace.charCodeAt(i);
- hash |= 0; // Convert to 32bit integer
- }
-
- return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
- }
-
- createDebug.selectColor = selectColor;
- /**
- * Create a debugger with the given `namespace`.
- *
- * @param {String} namespace
- * @return {Function}
- * @api public
- */
-
- function createDebug(namespace) {
- var prevTime;
-
- function debug() {
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
-
- // Disabled?
- if (!debug.enabled) {
- return;
- }
-
- var self = debug; // Set `diff` timestamp
-
- var curr = Number(new Date());
- var ms = curr - (prevTime || curr);
- self.diff = ms;
- self.prev = prevTime;
- self.curr = curr;
- prevTime = curr;
- args[0] = createDebug.coerce(args[0]);
-
- if (typeof args[0] !== 'string') {
- // Anything else let's inspect with %O
- args.unshift('%O');
- } // Apply any `formatters` transformations
-
-
- var index = 0;
- args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {
- // If we encounter an escaped % then don't increase the array index
- if (match === '%%') {
- return match;
- }
-
- index++;
- var formatter = createDebug.formatters[format];
-
- if (typeof formatter === 'function') {
- var val = args[index];
- match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`
-
- args.splice(index, 1);
- index--;
- }
-
- return match;
- }); // Apply env-specific formatting (colors, etc.)
-
- createDebug.formatArgs.call(self, args);
- var logFn = self.log || createDebug.log;
- logFn.apply(self, args);
- }
-
- debug.namespace = namespace;
- debug.enabled = createDebug.enabled(namespace);
- debug.useColors = createDebug.useColors();
- debug.color = selectColor(namespace);
- debug.destroy = destroy;
- debug.extend = extend; // Debug.formatArgs = formatArgs;
- // debug.rawLog = rawLog;
- // env-specific initialization logic for debug instances
-
- if (typeof createDebug.init === 'function') {
- createDebug.init(debug);
- }
-
- createDebug.instances.push(debug);
- return debug;
- }
-
- function destroy() {
- var index = createDebug.instances.indexOf(this);
-
- if (index !== -1) {
- createDebug.instances.splice(index, 1);
- return true;
- }
-
- return false;
- }
-
- function extend(namespace, delimiter) {
- var newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);
- newDebug.log = this.log;
- return newDebug;
- }
- /**
- * Enables a debug mode by namespaces. This can include modes
- * separated by a colon and wildcards.
- *
- * @param {String} namespaces
- * @api public
- */
-
-
- function enable(namespaces) {
- createDebug.save(namespaces);
- createDebug.names = [];
- createDebug.skips = [];
- var i;
- var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
- var len = split.length;
-
- for (i = 0; i < len; i++) {
- if (!split[i]) {
- // ignore empty strings
- continue;
- }
-
- namespaces = split[i].replace(/\*/g, '.*?');
-
- if (namespaces[0] === '-') {
- createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
- } else {
- createDebug.names.push(new RegExp('^' + namespaces + '$'));
- }
- }
-
- for (i = 0; i < createDebug.instances.length; i++) {
- var instance = createDebug.instances[i];
- instance.enabled = createDebug.enabled(instance.namespace);
- }
- }
- /**
- * Disable debug output.
- *
- * @return {String} namespaces
- * @api public
- */
-
-
- function disable() {
- var namespaces = [].concat(_toConsumableArray(createDebug.names.map(toNamespace)), _toConsumableArray(createDebug.skips.map(toNamespace).map(function (namespace) {
- return '-' + namespace;
- }))).join(',');
- createDebug.enable('');
- return namespaces;
- }
- /**
- * Returns true if the given mode name is enabled, false otherwise.
- *
- * @param {String} name
- * @return {Boolean}
- * @api public
- */
-
-
- function enabled(name) {
- if (name[name.length - 1] === '*') {
- return true;
- }
-
- var i;
- var len;
-
- for (i = 0, len = createDebug.skips.length; i < len; i++) {
- if (createDebug.skips[i].test(name)) {
- return false;
- }
- }
-
- for (i = 0, len = createDebug.names.length; i < len; i++) {
- if (createDebug.names[i].test(name)) {
- return true;
- }
- }
-
- return false;
- }
- /**
- * Convert regexp to namespace
- *
- * @param {RegExp} regxep
- * @return {String} namespace
- * @api private
- */
-
-
- function toNamespace(regexp) {
- return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, '*');
- }
- /**
- * Coerce `val`.
- *
- * @param {Mixed} val
- * @return {Mixed}
- * @api private
- */
-
-
- function coerce(val) {
- if (val instanceof Error) {
- return val.stack || val.message;
- }
-
- return val;
- }
-
- createDebug.enable(createDebug.load());
- return createDebug;
- }
-
- module.exports = setup;
- }, {
- "ms": 1
- }],
- 4: [function (require, module, exports) {
- (function (process) {
- /* eslint-env browser */
-
- /**
- * This is the web browser implementation of `debug()`.
- */
- exports.log = log;
- exports.formatArgs = formatArgs;
- exports.save = save;
- exports.load = load;
- exports.useColors = useColors;
- exports.storage = localstorage();
- /**
- * Colors.
- */
-
- exports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];
- /**
- * Currently only WebKit-based Web Inspectors, Firefox >= v31,
- * and the Firebug extension (any Firefox version) are known
- * to support "%c" CSS customizations.
- *
- * TODO: add a `localStorage` variable to explicitly enable/disable colors
- */
- // eslint-disable-next-line complexity
-
- function useColors() {
- // NB: In an Electron preload script, document will be defined but not fully
- // initialized. Since we know we're in Chrome, we'll just detect this case
- // explicitly
- if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {
- return true;
- } // Internet Explorer and Edge do not support colors.
-
-
- if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
- return false;
- } // Is webkit? http://stackoverflow.com/a/16459606/376773
- // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
-
-
- return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773
- typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?
- // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
- typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker
- typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
- }
- /**
- * Colorize log arguments if enabled.
- *
- * @api public
- */
-
-
- function formatArgs(args) {
- args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);
-
- if (!this.useColors) {
- return;
- }
-
- var c = 'color: ' + this.color;
- args.splice(1, 0, c, 'color: inherit'); // The final "%c" is somewhat tricky, because there could be other
- // arguments passed either before or after the %c, so we need to
- // figure out the correct index to insert the CSS into
-
- var index = 0;
- var lastC = 0;
- args[0].replace(/%[a-zA-Z%]/g, function (match) {
- if (match === '%%') {
- return;
- }
-
- index++;
-
- if (match === '%c') {
- // We only are interested in the *last* %c
- // (the user may have provided their own)
- lastC = index;
- }
- });
- args.splice(lastC, 0, c);
- }
- /**
- * Invokes `console.log()` when available.
- * No-op when `console.log` is not a "function".
- *
- * @api public
- */
-
-
- function log() {
- var _console;
-
- // This hackery is required for IE8/9, where
- // the `console.log` function doesn't have 'apply'
- return (typeof console === "undefined" ? "undefined" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);
- }
- /**
- * Save `namespaces`.
- *
- * @param {String} namespaces
- * @api private
- */
-
-
- function save(namespaces) {
- try {
- if (namespaces) {
- exports.storage.setItem('debug', namespaces);
- } else {
- exports.storage.removeItem('debug');
- }
- } catch (error) {// Swallow
- // XXX (@Qix-) should we be logging these?
- }
- }
- /**
- * Load `namespaces`.
- *
- * @return {String} returns the previously persisted debug modes
- * @api private
- */
-
-
- function load() {
- var r;
-
- try {
- r = exports.storage.getItem('debug');
- } catch (error) {} // Swallow
- // XXX (@Qix-) should we be logging these?
- // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
-
-
- if (!r && typeof process !== 'undefined' && 'env' in process) {
- r = process.env.DEBUG;
- }
-
- return r;
- }
- /**
- * Localstorage attempts to return the localstorage.
- *
- * This is necessary because safari throws
- * when a user disables cookies/localstorage
- * and you attempt to access it.
- *
- * @return {LocalStorage}
- * @api private
- */
-
-
- function localstorage() {
- try {
- // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context
- // The Browser also has localStorage in the global context.
- return localStorage;
- } catch (error) {// Swallow
- // XXX (@Qix-) should we be logging these?
- }
- }
-
- module.exports = require('./common')(exports);
- var formatters = module.exports.formatters;
- /**
- * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
- */
-
- formatters.j = function (v) {
- try {
- return JSON.stringify(v);
- } catch (error) {
- return '[UnexpectedJSONParseError]: ' + error.message;
- }
- };
- }).call(this, require('_process'));
- }, {
- "./common": 3,
- "_process": 2
- }]
- }, {}, [4])(4);
-});
diff --git a/assets/node_modules/debug/package.json b/assets/node_modules/debug/package.json
deleted file mode 100644
index 8671315..0000000
--- a/assets/node_modules/debug/package.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "name": "debug",
- "version": "4.1.1",
- "repository": {
- "type": "git",
- "url": "git://github.com/visionmedia/debug.git"
- },
- "description": "small debugging utility",
- "keywords": [
- "debug",
- "log",
- "debugger"
- ],
- "files": [
- "src",
- "dist/debug.js",
- "LICENSE",
- "README.md"
- ],
- "author": "TJ Holowaychuk <tj@vision-media.ca>",
- "contributors": [
- "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io)",
- "Andrew Rhyne <rhyneandrew@gmail.com>"
- ],
- "license": "MIT",
- "scripts": {
- "lint": "xo",
- "test": "npm run test:node && npm run test:browser",
- "test:node": "istanbul cover _mocha -- test.js",
- "pretest:browser": "npm run build",
- "test:browser": "karma start --single-run",
- "prebuild:debug": "mkdir -p dist && browserify --standalone debug -o dist/debug.es6.js .",
- "build:debug": "babel -o dist/debug.js dist/debug.es6.js > dist/debug.js",
- "build:test": "babel -d dist test.js",
- "build": "npm run build:debug && npm run build:test",
- "clean": "rimraf dist coverage",
- "test:coverage": "cat ./coverage/lcov.info | coveralls"
- },
- "dependencies": {
- "ms": "^2.1.1"
- },
- "devDependencies": {
- "@babel/cli": "^7.0.0",
- "@babel/core": "^7.0.0",
- "@babel/preset-env": "^7.0.0",
- "browserify": "14.4.0",
- "chai": "^3.5.0",
- "concurrently": "^3.1.0",
- "coveralls": "^3.0.2",
- "istanbul": "^0.4.5",
- "karma": "^3.0.0",
- "karma-chai": "^0.1.0",
- "karma-mocha": "^1.3.0",
- "karma-phantomjs-launcher": "^1.0.2",
- "mocha": "^5.2.0",
- "mocha-lcov-reporter": "^1.2.0",
- "rimraf": "^2.5.4",
- "xo": "^0.23.0"
- },
- "main": "./src/index.js",
- "browser": "./src/browser.js",
- "unpkg": "./dist/debug.js"
-}
diff --git a/assets/node_modules/debug/src/browser.js b/assets/node_modules/debug/src/browser.js
deleted file mode 100644
index 5f34c0d..0000000
--- a/assets/node_modules/debug/src/browser.js
+++ /dev/null
@@ -1,264 +0,0 @@
-/* eslint-env browser */
-
-/**
- * This is the web browser implementation of `debug()`.
- */
-
-exports.log = log;
-exports.formatArgs = formatArgs;
-exports.save = save;
-exports.load = load;
-exports.useColors = useColors;
-exports.storage = localstorage();
-
-/**
- * Colors.
- */
-
-exports.colors = [
- '#0000CC',
- '#0000FF',
- '#0033CC',
- '#0033FF',
- '#0066CC',
- '#0066FF',
- '#0099CC',
- '#0099FF',
- '#00CC00',
- '#00CC33',
- '#00CC66',
- '#00CC99',
- '#00CCCC',
- '#00CCFF',
- '#3300CC',
- '#3300FF',
- '#3333CC',
- '#3333FF',
- '#3366CC',
- '#3366FF',
- '#3399CC',
- '#3399FF',
- '#33CC00',
- '#33CC33',
- '#33CC66',
- '#33CC99',
- '#33CCCC',
- '#33CCFF',
- '#6600CC',
- '#6600FF',
- '#6633CC',
- '#6633FF',
- '#66CC00',
- '#66CC33',
- '#9900CC',
- '#9900FF',
- '#9933CC',
- '#9933FF',
- '#99CC00',
- '#99CC33',
- '#CC0000',
- '#CC0033',
- '#CC0066',
- '#CC0099',
- '#CC00CC',
- '#CC00FF',
- '#CC3300',
- '#CC3333',
- '#CC3366',
- '#CC3399',
- '#CC33CC',
- '#CC33FF',
- '#CC6600',
- '#CC6633',
- '#CC9900',
- '#CC9933',
- '#CCCC00',
- '#CCCC33',
- '#FF0000',
- '#FF0033',
- '#FF0066',
- '#FF0099',
- '#FF00CC',
- '#FF00FF',
- '#FF3300',
- '#FF3333',
- '#FF3366',
- '#FF3399',
- '#FF33CC',
- '#FF33FF',
- '#FF6600',
- '#FF6633',
- '#FF9900',
- '#FF9933',
- '#FFCC00',
- '#FFCC33'
-];
-
-/**
- * Currently only WebKit-based Web Inspectors, Firefox >= v31,
- * and the Firebug extension (any Firefox version) are known
- * to support "%c" CSS customizations.
- *
- * TODO: add a `localStorage` variable to explicitly enable/disable colors
- */
-
-// eslint-disable-next-line complexity
-function useColors() {
- // NB: In an Electron preload script, document will be defined but not fully
- // initialized. Since we know we're in Chrome, we'll just detect this case
- // explicitly
- if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {
- return true;
- }
-
- // Internet Explorer and Edge do not support colors.
- if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
- return false;
- }
-
- // Is webkit? http://stackoverflow.com/a/16459606/376773
- // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
- return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
- // Is firebug? http://stackoverflow.com/a/398120/376773
- (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
- // Is firefox >= v31?
- // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
- (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
- // Double check webkit in userAgent just in case we are in a worker
- (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
-}
-
-/**
- * Colorize log arguments if enabled.
- *
- * @api public
- */
-
-function formatArgs(args) {
- args[0] = (this.useColors ? '%c' : '') +
- this.namespace +
- (this.useColors ? ' %c' : ' ') +
- args[0] +
- (this.useColors ? '%c ' : ' ') +
- '+' + module.exports.humanize(this.diff);
-
- if (!this.useColors) {
- return;
- }
-
- const c = 'color: ' + this.color;
- args.splice(1, 0, c, 'color: inherit');
-
- // The final "%c" is somewhat tricky, because there could be other
- // arguments passed either before or after the %c, so we need to
- // figure out the correct index to insert the CSS into
- let index = 0;
- let lastC = 0;
- args[0].replace(/%[a-zA-Z%]/g, match => {
- if (match === '%%') {
- return;
- }
- index++;
- if (match === '%c') {
- // We only are interested in the *last* %c
- // (the user may have provided their own)
- lastC = index;
- }
- });
-
- args.splice(lastC, 0, c);
-}
-
-/**
- * Invokes `console.log()` when available.
- * No-op when `console.log` is not a "function".
- *
- * @api public
- */
-function log(...args) {
- // This hackery is required for IE8/9, where
- // the `console.log` function doesn't have 'apply'
- return typeof console === 'object' &&
- console.log &&
- console.log(...args);
-}
-
-/**
- * Save `namespaces`.
- *
- * @param {String} namespaces
- * @api private
- */
-function save(namespaces) {
- try {
- if (namespaces) {
- exports.storage.setItem('debug', namespaces);
- } else {
- exports.storage.removeItem('debug');
- }
- } catch (error) {
- // Swallow
- // XXX (@Qix-) should we be logging these?
- }
-}
-
-/**
- * Load `namespaces`.
- *
- * @return {String} returns the previously persisted debug modes
- * @api private
- */
-function load() {
- let r;
- try {
- r = exports.storage.getItem('debug');
- } catch (error) {
- // Swallow
- // XXX (@Qix-) should we be logging these?
- }
-
- // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
- if (!r && typeof process !== 'undefined' && 'env' in process) {
- r = process.env.DEBUG;
- }
-
- return r;
-}
-
-/**
- * Localstorage attempts to return the localstorage.
- *
- * This is necessary because safari throws
- * when a user disables cookies/localstorage
- * and you attempt to access it.
- *
- * @return {LocalStorage}
- * @api private
- */
-
-function localstorage() {
- try {
- // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context
- // The Browser also has localStorage in the global context.
- return localStorage;
- } catch (error) {
- // Swallow
- // XXX (@Qix-) should we be logging these?
- }
-}
-
-module.exports = require('./common')(exports);
-
-const {formatters} = module.exports;
-
-/**
- * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
- */
-
-formatters.j = function (v) {
- try {
- return JSON.stringify(v);
- } catch (error) {
- return '[UnexpectedJSONParseError]: ' + error.message;
- }
-};
diff --git a/assets/node_modules/debug/src/common.js b/assets/node_modules/debug/src/common.js
deleted file mode 100644
index 2f82b8d..0000000
--- a/assets/node_modules/debug/src/common.js
+++ /dev/null
@@ -1,266 +0,0 @@
-
-/**
- * This is the common logic for both the Node.js and web browser
- * implementations of `debug()`.
- */
-
-function setup(env) {
- createDebug.debug = createDebug;
- createDebug.default = createDebug;
- createDebug.coerce = coerce;
- createDebug.disable = disable;
- createDebug.enable = enable;
- createDebug.enabled = enabled;
- createDebug.humanize = require('ms');
-
- Object.keys(env).forEach(key => {
- createDebug[key] = env[key];
- });
-
- /**
- * Active `debug` instances.
- */
- createDebug.instances = [];
-
- /**
- * The currently active debug mode names, and names to skip.
- */
-
- createDebug.names = [];
- createDebug.skips = [];
-
- /**
- * Map of special "%n" handling functions, for the debug "format" argument.
- *
- * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
- */
- createDebug.formatters = {};
-
- /**
- * Selects a color for a debug namespace
- * @param {String} namespace The namespace string for the for the debug instance to be colored
- * @return {Number|String} An ANSI color code for the given namespace
- * @api private
- */
- function selectColor(namespace) {
- let hash = 0;
-
- for (let i = 0; i < namespace.length; i++) {
- hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
- hash |= 0; // Convert to 32bit integer
- }
-
- return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
- }
- createDebug.selectColor = selectColor;
-
- /**
- * Create a debugger with the given `namespace`.
- *
- * @param {String} namespace
- * @return {Function}
- * @api public
- */
- function createDebug(namespace) {
- let prevTime;
-
- function debug(...args) {
- // Disabled?
- if (!debug.enabled) {
- return;
- }
-
- const self = debug;
-
- // Set `diff` timestamp
- const curr = Number(new Date());
- const ms = curr - (prevTime || curr);
- self.diff = ms;
- self.prev = prevTime;
- self.curr = curr;
- prevTime = curr;
-
- args[0] = createDebug.coerce(args[0]);
-
- if (typeof args[0] !== 'string') {
- // Anything else let's inspect with %O
- args.unshift('%O');
- }
-
- // Apply any `formatters` transformations
- let index = 0;
- args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {
- // If we encounter an escaped % then don't increase the array index
- if (match === '%%') {
- return match;
- }
- index++;
- const formatter = createDebug.formatters[format];
- if (typeof formatter === 'function') {
- const val = args[index];
- match = formatter.call(self, val);
-
- // Now we need to remove `args[index]` since it's inlined in the `format`
- args.splice(index, 1);
- index--;
- }
- return match;
- });
-
- // Apply env-specific formatting (colors, etc.)
- createDebug.formatArgs.call(self, args);
-
- const logFn = self.log || createDebug.log;
- logFn.apply(self, args);
- }
-
- debug.namespace = namespace;
- debug.enabled = createDebug.enabled(namespace);
- debug.useColors = createDebug.useColors();
- debug.color = selectColor(namespace);
- debug.destroy = destroy;
- debug.extend = extend;
- // Debug.formatArgs = formatArgs;
- // debug.rawLog = rawLog;
-
- // env-specific initialization logic for debug instances
- if (typeof createDebug.init === 'function') {
- createDebug.init(debug);
- }
-
- createDebug.instances.push(debug);
-
- return debug;
- }
-
- function destroy() {
- const index = createDebug.instances.indexOf(this);
- if (index !== -1) {
- createDebug.instances.splice(index, 1);
- return true;
- }
- return false;
- }
-
- function extend(namespace, delimiter) {
- const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);
- newDebug.log = this.log;
- return newDebug;
- }
-
- /**
- * Enables a debug mode by namespaces. This can include modes
- * separated by a colon and wildcards.
- *
- * @param {String} namespaces
- * @api public
- */
- function enable(namespaces) {
- createDebug.save(namespaces);
-
- createDebug.names = [];
- createDebug.skips = [];
-
- let i;
- const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
- const len = split.length;
-
- for (i = 0; i < len; i++) {
- if (!split[i]) {
- // ignore empty strings
- continue;
- }
-
- namespaces = split[i].replace(/\*/g, '.*?');
-
- if (namespaces[0] === '-') {
- createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
- } else {
- createDebug.names.push(new RegExp('^' + namespaces + '$'));
- }
- }
-
- for (i = 0; i < createDebug.instances.length; i++) {
- const instance = createDebug.instances[i];
- instance.enabled = createDebug.enabled(instance.namespace);
- }
- }
-
- /**
- * Disable debug output.
- *
- * @return {String} namespaces
- * @api public
- */
- function disable() {
- const namespaces = [
- ...createDebug.names.map(toNamespace),
- ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)
- ].join(',');
- createDebug.enable('');
- return namespaces;
- }
-
- /**
- * Returns true if the given mode name is enabled, false otherwise.
- *
- * @param {String} name
- * @return {Boolean}
- * @api public
- */
- function enabled(name) {
- if (name[name.length - 1] === '*') {
- return true;
- }
-
- let i;
- let len;
-
- for (i = 0, len = createDebug.skips.length; i < len; i++) {
- if (createDebug.skips[i].test(name)) {
- return false;
- }
- }
-
- for (i = 0, len = createDebug.names.length; i < len; i++) {
- if (createDebug.names[i].test(name)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Convert regexp to namespace
- *
- * @param {RegExp} regxep
- * @return {String} namespace
- * @api private
- */
- function toNamespace(regexp) {
- return regexp.toString()
- .substring(2, regexp.toString().length - 2)
- .replace(/\.\*\?$/, '*');
- }
-
- /**
- * Coerce `val`.
- *
- * @param {Mixed} val
- * @return {Mixed}
- * @api private
- */
- function coerce(val) {
- if (val instanceof Error) {
- return val.stack || val.message;
- }
- return val;
- }
-
- createDebug.enable(createDebug.load());
-
- return createDebug;
-}
-
-module.exports = setup;
diff --git a/assets/node_modules/debug/src/index.js b/assets/node_modules/debug/src/index.js
deleted file mode 100644
index bf4c57f..0000000
--- a/assets/node_modules/debug/src/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * Detect Electron renderer / nwjs process, which is node, but we should
- * treat as a browser.
- */
-
-if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {
- module.exports = require('./browser.js');
-} else {
- module.exports = require('./node.js');
-}
diff --git a/assets/node_modules/debug/src/node.js b/assets/node_modules/debug/src/node.js
deleted file mode 100644
index 5e1f154..0000000
--- a/assets/node_modules/debug/src/node.js
+++ /dev/null
@@ -1,257 +0,0 @@
-/**
- * Module dependencies.
- */
-
-const tty = require('tty');
-const util = require('util');
-
-/**
- * This is the Node.js implementation of `debug()`.
- */
-
-exports.init = init;
-exports.log = log;
-exports.formatArgs = formatArgs;
-exports.save = save;
-exports.load = load;
-exports.useColors = useColors;
-
-/**
- * Colors.
- */
-
-exports.colors = [6, 2, 3, 4, 5, 1];
-
-try {
- // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)
- // eslint-disable-next-line import/no-extraneous-dependencies
- const supportsColor = require('supports-color');
-
- if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {
- exports.colors = [
- 20,
- 21,
- 26,
- 27,
- 32,
- 33,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 56,
- 57,
- 62,
- 63,
- 68,
- 69,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 92,
- 93,
- 98,
- 99,
- 112,
- 113,
- 128,
- 129,
- 134,
- 135,
- 148,
- 149,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 178,
- 179,
- 184,
- 185,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 214,
- 215,
- 220,
- 221
- ];
- }
-} catch (error) {
- // Swallow - we only care if `supports-color` is available; it doesn't have to be.
-}
-
-/**
- * Build up the default `inspectOpts` object from the environment variables.
- *
- * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js
- */
-
-exports.inspectOpts = Object.keys(process.env).filter(key => {
- return /^debug_/i.test(key);
-}).reduce((obj, key) => {
- // Camel-case
- const prop = key
- .substring(6)
- .toLowerCase()
- .replace(/_([a-z])/g, (_, k) => {
- return k.toUpperCase();
- });
-
- // Coerce string value into JS value
- let val = process.env[key];
- if (/^(yes|on|true|enabled)$/i.test(val)) {
- val = true;
- } else if (/^(no|off|false|disabled)$/i.test(val)) {
- val = false;
- } else if (val === 'null') {
- val = null;
- } else {
- val = Number(val);
- }
-
- obj[prop] = val;
- return obj;
-}, {});
-
-/**
- * Is stdout a TTY? Colored output is enabled when `true`.
- */
-
-function useColors() {
- return 'colors' in exports.inspectOpts ?
- Boolean(exports.inspectOpts.colors) :
- tty.isatty(process.stderr.fd);
-}
-
-/**
- * Adds ANSI color escape codes if enabled.
- *
- * @api public
- */
-
-function formatArgs(args) {
- const {namespace: name, useColors} = this;
-
- if (useColors) {
- const c = this.color;
- const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c);
- const prefix = ` ${colorCode};1m${name} \u001B[0m`;
-
- args[0] = prefix + args[0].split('\n').join('\n' + prefix);
- args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m');
- } else {
- args[0] = getDate() + name + ' ' + args[0];
- }
-}
-
-function getDate() {
- if (exports.inspectOpts.hideDate) {
- return '';
- }
- return new Date().toISOString() + ' ';
-}
-
-/**
- * Invokes `util.format()` with the specified arguments and writes to stderr.
- */
-
-function log(...args) {
- return process.stderr.write(util.format(...args) + '\n');
-}
-
-/**
- * Save `namespaces`.
- *
- * @param {String} namespaces
- * @api private
- */
-function save(namespaces) {
- if (namespaces) {
- process.env.DEBUG = namespaces;
- } else {
- // If you set a process.env field to null or undefined, it gets cast to the
- // string 'null' or 'undefined'. Just delete instead.
- delete process.env.DEBUG;
- }
-}
-
-/**
- * Load `namespaces`.
- *
- * @return {String} returns the previously persisted debug modes
- * @api private
- */
-
-function load() {
- return process.env.DEBUG;
-}
-
-/**
- * Init logic for `debug` instances.
- *
- * Create a new `inspectOpts` object in case `useColors` is set
- * differently for a particular `debug` instance.
- */
-
-function init(debug) {
- debug.inspectOpts = {};
-
- const keys = Object.keys(exports.inspectOpts);
- for (let i = 0; i < keys.length; i++) {
- debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
- }
-}
-
-module.exports = require('./common')(exports);
-
-const {formatters} = module.exports;
-
-/**
- * Map %o to `util.inspect()`, all on a single line.
- */
-
-formatters.o = function (v) {
- this.inspectOpts.colors = this.useColors;
- return util.inspect(v, this.inspectOpts)
- .replace(/\s*\n\s*/g, ' ');
-};
-
-/**
- * Map %O to `util.inspect()`, allowing multiple lines if needed.
- */
-
-formatters.O = function (v) {
- this.inspectOpts.colors = this.useColors;
- return util.inspect(v, this.inspectOpts);
-};
diff --git a/assets/node_modules/decamelize-keys/index.js b/assets/node_modules/decamelize-keys/index.js
deleted file mode 100644
index f731ca0..0000000
--- a/assets/node_modules/decamelize-keys/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict';
-var mapObj = require('map-obj');
-var decamelize = require('decamelize');
-
-module.exports = function (input, separator, options) {
- if (typeof separator !== 'string') {
- options = separator;
- separator = null;
- }
-
- options = options || {};
- separator = separator || options.separator;
- var exclude = options.exclude || [];
-
- return mapObj(input, function (key, val) {
- key = exclude.indexOf(key) === -1 ? decamelize(key, separator) : key;
- return [key, val];
- });
-};
diff --git a/assets/node_modules/decamelize-keys/license b/assets/node_modules/decamelize-keys/license
deleted file mode 100644
index 878ece4..0000000
--- a/assets/node_modules/decamelize-keys/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com), Dmirty Sobolev <disobolev@icloud.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/assets/node_modules/decamelize-keys/package.json b/assets/node_modules/decamelize-keys/package.json
deleted file mode 100644
index f8a9707..0000000
--- a/assets/node_modules/decamelize-keys/package.json
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- "name": "decamelize-keys",
- "version": "1.1.0",
- "description": "Convert object keys from camelCase to lowercase with a custom separator",
- "license": "MIT",
- "repository": "dsblv/decamelize-keys",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
- },
- "contributors": [
- {
- "name": "Dmirty Sobolev",
- "email": "disobolev@icloud.com",
- "url": "https://github.com/dsblv"
- }
- ],
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "map",
- "obj",
- "object",
- "key",
- "keys",
- "value",
- "values",
- "val",
- "iterate",
- "decamelize",
- "decamelcase",
- "lowercase",
- "camelcase",
- "camel-case",
- "camel",
- "case",
- "dash",
- "hyphen",
- "dot",
- "underscore",
- "separator",
- "string",
- "text",
- "convert"
- ],
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- },
- "dependencies": {
- "decamelize": "^1.1.0",
- "map-obj": "^1.0.0"
- }
-}
diff --git a/assets/node_modules/decamelize-keys/readme.md b/assets/node_modules/decamelize-keys/readme.md
deleted file mode 100644
index 7602a87..0000000
--- a/assets/node_modules/decamelize-keys/readme.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# decamelize-keys [![Build Status](https://travis-ci.org/dsblv/decamelize-keys.svg?branch=master)](https://travis-ci.org/dsblv/decamelize-keys)
-
-> Convert object keys from camelCase to lowercase with a custom separator using [`decamelize`](https://github.com/sindresorhus/decamelize)
-
-*This project was forked from [`camelcase-keys`](https://github.com/sindresorhus/camelcase-keys) and converted to do the opposite*
-
-
-## Install
-
-```sh
-$ npm install --save decamelize-keys
-```
-
-
-## Usage
-
-```js
-const decamelizeKeys = require('decamelize-keys');
-
-decamelizeKeys({fooBar: true}, '-');
-//=> {'foo-bar': true}
-```
-
-
-## API
-
-### decamelizeKeys(input, [separator], [options])
-
-### input
-
-Type: `object`
-*Required*
-
-Object to decamelize.
-
-### separator
-
-Type: `string`
-Default: `_`
-
-A string to insert between words.
-
-### options
-
-Type: `object`
-
-#### separator
-
-Type: `string`
-Default: `_`
-
-Alternative way to specify [separator](#separator).
-
-#### exclude
-
-Type: `array`
-Default: `[]`
-
-Exclude keys from being decamelized.
-
-
-## Related
-
-See [`camelcase-keys`](https://github.com/sindresorhus/camelcase-keys) for the inverse.
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com), [Dmirty Sobolev](https://github.com/dsblv)
diff --git a/assets/node_modules/decamelize/index.js b/assets/node_modules/decamelize/index.js
deleted file mode 100644
index 8d5bab7..0000000
--- a/assets/node_modules/decamelize/index.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict';
-module.exports = function (str, sep) {
- if (typeof str !== 'string') {
- throw new TypeError('Expected a string');
- }
-
- sep = typeof sep === 'undefined' ? '_' : sep;
-
- return str
- .replace(/([a-z\d])([A-Z])/g, '$1' + sep + '$2')
- .replace(/([A-Z]+)([A-Z][a-z\d]+)/g, '$1' + sep + '$2')
- .toLowerCase();
-};
diff --git a/assets/node_modules/decamelize/license b/assets/node_modules/decamelize/license
deleted file mode 100644
index 654d0bf..0000000
--- a/assets/node_modules/decamelize/license
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/decamelize/package.json b/assets/node_modules/decamelize/package.json
deleted file mode 100644
index ca35790..0000000
--- a/assets/node_modules/decamelize/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "decamelize",
- "version": "1.2.0",
- "description": "Convert a camelized string into a lowercased one with a custom separator: unicornRainbow → unicorn_rainbow",
- "license": "MIT",
- "repository": "sindresorhus/decamelize",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "decamelize",
- "decamelcase",
- "camelcase",
- "lowercase",
- "case",
- "dash",
- "hyphen",
- "string",
- "str",
- "text",
- "convert"
- ],
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- }
-}
diff --git a/assets/node_modules/decamelize/readme.md b/assets/node_modules/decamelize/readme.md
deleted file mode 100644
index 624c7ee..0000000
--- a/assets/node_modules/decamelize/readme.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# decamelize [![Build Status](https://travis-ci.org/sindresorhus/decamelize.svg?branch=master)](https://travis-ci.org/sindresorhus/decamelize)
-
-> Convert a camelized string into a lowercased one with a custom separator<br>
-> Example: `unicornRainbow` → `unicorn_rainbow`
-
-
-## Install
-
-```
-$ npm install --save decamelize
-```
-
-
-## Usage
-
-```js
-const decamelize = require('decamelize');
-
-decamelize('unicornRainbow');
-//=> 'unicorn_rainbow'
-
-decamelize('unicornRainbow', '-');
-//=> 'unicorn-rainbow'
-```
-
-
-## API
-
-### decamelize(input, [separator])
-
-#### input
-
-Type: `string`
-
-#### separator
-
-Type: `string`<br>
-Default: `_`
-
-
-## Related
-
-See [`camelcase`](https://github.com/sindresorhus/camelcase) for the inverse.
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/dir-glob/index.js b/assets/node_modules/dir-glob/index.js
deleted file mode 100644
index c21cdf3..0000000
--- a/assets/node_modules/dir-glob/index.js
+++ /dev/null
@@ -1,75 +0,0 @@
-'use strict';
-const path = require('path');
-const pathType = require('path-type');
-
-const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0];
-
-const getPath = (filepath, cwd) => {
- const pth = filepath[0] === '!' ? filepath.slice(1) : filepath;
- return path.isAbsolute(pth) ? pth : path.join(cwd, pth);
-};
-
-const addExtensions = (file, extensions) => {
- if (path.extname(file)) {
- return `**/${file}`;
- }
-
- return `**/${file}.${getExtensions(extensions)}`;
-};
-
-const getGlob = (directory, options) => {
- if (options.files && !Array.isArray(options.files)) {
- throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof options.files}\``);
- }
-
- if (options.extensions && !Array.isArray(options.extensions)) {
- throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof options.extensions}\``);
- }
-
- if (options.files && options.extensions) {
- return options.files.map(x => path.posix.join(directory, addExtensions(x, options.extensions)));
- }
-
- if (options.files) {
- return options.files.map(x => path.posix.join(directory, `**/${x}`));
- }
-
- if (options.extensions) {
- return [path.posix.join(directory, `**/*.${getExtensions(options.extensions)}`)];
- }
-
- return [path.posix.join(directory, '**')];
-};
-
-module.exports = async (input, options) => {
- options = {
- cwd: process.cwd(),
- ...options
- };
-
- if (typeof options.cwd !== 'string') {
- throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof options.cwd}\``);
- }
-
- const globs = await Promise.all([].concat(input).map(async x => {
- const isDirectory = await pathType.isDirectory(getPath(x, options.cwd));
- return isDirectory ? getGlob(x, options) : x;
- }));
-
- return [].concat.apply([], globs); // eslint-disable-line prefer-spread
-};
-
-module.exports.sync = (input, options) => {
- options = {
- cwd: process.cwd(),
- ...options
- };
-
- if (typeof options.cwd !== 'string') {
- throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof options.cwd}\``);
- }
-
- const globs = [].concat(input).map(x => pathType.isDirectorySync(getPath(x, options.cwd)) ? getGlob(x, options) : x);
-
- return [].concat.apply([], globs); // eslint-disable-line prefer-spread
-};
diff --git a/assets/node_modules/dir-glob/license b/assets/node_modules/dir-glob/license
deleted file mode 100644
index db6bc32..0000000
--- a/assets/node_modules/dir-glob/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) Kevin Mårtensson <kevinmartensson@gmail.com> (github.com/kevva)
-
-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/assets/node_modules/dir-glob/package.json b/assets/node_modules/dir-glob/package.json
deleted file mode 100644
index b0a397e..0000000
--- a/assets/node_modules/dir-glob/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "dir-glob",
- "version": "3.0.1",
- "description": "Convert directories to glob compatible strings",
- "license": "MIT",
- "repository": "kevva/dir-glob",
- "author": {
- "name": "Kevin Mårtensson",
- "email": "kevinmartensson@gmail.com",
- "url": "github.com/kevva"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "convert",
- "directory",
- "extensions",
- "files",
- "glob"
- ],
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "devDependencies": {
- "ava": "^2.1.0",
- "del": "^4.1.1",
- "make-dir": "^3.0.0",
- "rimraf": "^2.5.0",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/dir-glob/readme.md b/assets/node_modules/dir-glob/readme.md
deleted file mode 100644
index cb7313f..0000000
--- a/assets/node_modules/dir-glob/readme.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# dir-glob [![Build Status](https://travis-ci.org/kevva/dir-glob.svg?branch=master)](https://travis-ci.org/kevva/dir-glob)
-
-> Convert directories to glob compatible strings
-
-
-## Install
-
-```
-$ npm install dir-glob
-```
-
-
-## Usage
-
-```js
-const dirGlob = require('dir-glob');
-
-(async () => {
- console.log(await dirGlob(['index.js', 'test.js', 'fixtures']));
- //=> ['index.js', 'test.js', 'fixtures/**']
-
- console.log(await dirGlob(['index.js', 'inner_folder'], {cwd: 'fixtures'}));
- //=> ['index.js', 'inner_folder/**']
-
- console.log(await dirGlob(['lib/**', 'fixtures'], {
- files: ['test', 'unicorn']
- extensions: ['js']
- }));
- //=> ['lib/**', 'fixtures/**/test.js', 'fixtures/**/unicorn.js']
-
- console.log(await dirGlob(['lib/**', 'fixtures'], {
- files: ['test', 'unicorn', '*.jsx'],
- extensions: ['js', 'png']
- }));
- //=> ['lib/**', 'fixtures/**/test.{js,png}', 'fixtures/**/unicorn.{js,png}', 'fixtures/**/*.jsx']
-})();
-```
-
-
-## API
-
-### dirGlob(input, options?)
-
-Returns a `Promise<string[]>` with globs.
-
-### dirGlob.sync(input, options?)
-
-Returns a `string[]` with globs.
-
-#### input
-
-Type: `string | string[]`
-
-Paths.
-
-#### options
-
-Type: `object`
-
-##### extensions
-
-Type: `string[]`
-
-Append extensions to the end of your globs.
-
-##### files
-
-Type: `string[]`
-
-Only glob for certain files.
-
-##### cwd
-
-Type: `string[]`
-
-Test in specific directory.
diff --git a/assets/node_modules/dom-serializer/LICENSE b/assets/node_modules/dom-serializer/LICENSE
deleted file mode 100644
index 3d241a8..0000000
--- a/assets/node_modules/dom-serializer/LICENSE
+++ /dev/null
@@ -1,11 +0,0 @@
-License
-
-(The MIT License)
-
-Copyright (c) 2014 The cheeriojs 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/assets/node_modules/dom-serializer/README.md b/assets/node_modules/dom-serializer/README.md
deleted file mode 100644
index 45fde0c..0000000
--- a/assets/node_modules/dom-serializer/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Renders a DOM node or an array of DOM nodes to a string.
diff --git a/assets/node_modules/dom-serializer/foreignNames.json b/assets/node_modules/dom-serializer/foreignNames.json
deleted file mode 100644
index aada7c7..0000000
--- a/assets/node_modules/dom-serializer/foreignNames.json
+++ /dev/null
@@ -1,102 +0,0 @@
-{
- "elementNames" : {
-"altglyph" : "altGlyph",
-"altglyphdef" : "altGlyphDef",
-"altglyphitem" : "altGlyphItem",
-"animatecolor" : "animateColor",
-"animatemotion" : "animateMotion",
-"animatetransform" : "animateTransform",
-"clippath" : "clipPath",
-"feblend" : "feBlend",
-"fecolormatrix" : "feColorMatrix",
-"fecomponenttransfer" : "feComponentTransfer",
-"fecomposite" : "feComposite",
-"feconvolvematrix" : "feConvolveMatrix",
-"fediffuselighting" : "feDiffuseLighting",
-"fedisplacementmap" : "feDisplacementMap",
-"fedistantlight" : "feDistantLight",
-"fedropshadow" : "feDropShadow",
-"feflood" : "feFlood",
-"fefunca" : "feFuncA",
-"fefuncb" : "feFuncB",
-"fefuncg" : "feFuncG",
-"fefuncr" : "feFuncR",
-"fegaussianblur" : "feGaussianBlur",
-"feimage" : "feImage",
-"femerge" : "feMerge",
-"femergenode" : "feMergeNode",
-"femorphology" : "feMorphology",
-"feoffset" : "feOffset",
-"fepointlight" : "fePointLight",
-"fespecularlighting" : "feSpecularLighting",
-"fespotlight" : "feSpotLight",
-"fetile" : "feTile",
-"feturbulence" : "feTurbulence",
-"foreignobject" : "foreignObject",
-"glyphref" : "glyphRef",
-"lineargradient" : "linearGradient",
-"radialgradient" : "radialGradient",
-"textpath" : "textPath"
- },
- "attributeNames" : {
-"definitionurl" : "definitionURL",
-"attributename" : "attributeName",
-"attributetype" : "attributeType",
-"basefrequency" : "baseFrequency",
-"baseprofile" : "baseProfile",
-"calcmode" : "calcMode",
-"clippathunits" : "clipPathUnits",
-"diffuseconstant" : "diffuseConstant",
-"edgemode" : "edgeMode",
-"filterunits" : "filterUnits",
-"glyphref" : "glyphRef",
-"gradienttransform" : "gradientTransform",
-"gradientunits" : "gradientUnits",
-"kernelmatrix" : "kernelMatrix",
-"kernelunitlength" : "kernelUnitLength",
-"keypoints" : "keyPoints",
-"keysplines" : "keySplines",
-"keytimes" : "keyTimes",
-"lengthadjust" : "lengthAdjust",
-"limitingconeangle" : "limitingConeAngle",
-"markerheight" : "markerHeight",
-"markerunits" : "markerUnits",
-"markerwidth" : "markerWidth",
-"maskcontentunits" : "maskContentUnits",
-"maskunits" : "maskUnits",
-"numoctaves" : "numOctaves",
-"pathlength" : "pathLength",
-"patterncontentunits" : "patternContentUnits",
-"patterntransform" : "patternTransform",
-"patternunits" : "patternUnits",
-"pointsatx" : "pointsAtX",
-"pointsaty" : "pointsAtY",
-"pointsatz" : "pointsAtZ",
-"preservealpha" : "preserveAlpha",
-"preserveaspectratio" : "preserveAspectRatio",
-"primitiveunits" : "primitiveUnits",
-"refx" : "refX",
-"refy" : "refY",
-"repeatcount" : "repeatCount",
-"repeatdur" : "repeatDur",
-"requiredextensions" : "requiredExtensions",
-"requiredfeatures" : "requiredFeatures",
-"specularconstant" : "specularConstant",
-"specularexponent" : "specularExponent",
-"spreadmethod" : "spreadMethod",
-"startoffset" : "startOffset",
-"stddeviation" : "stdDeviation",
-"stitchtiles" : "stitchTiles",
-"surfacescale" : "surfaceScale",
-"systemlanguage" : "systemLanguage",
-"tablevalues" : "tableValues",
-"targetx" : "targetX",
-"targety" : "targetY",
-"textlength" : "textLength",
-"viewbox" : "viewBox",
-"viewtarget" : "viewTarget",
-"xchannelselector" : "xChannelSelector",
-"ychannelselector" : "yChannelSelector",
-"zoomandpan" : "zoomAndPan"
- }
-}
diff --git a/assets/node_modules/dom-serializer/index.d.ts b/assets/node_modules/dom-serializer/index.d.ts
deleted file mode 100644
index 4499daf..0000000
--- a/assets/node_modules/dom-serializer/index.d.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-export interface DomSerializerOptions {
- xmlMode?: boolean | 'foreign';
- decodeEntities?: boolean;
-}
-
-/**
- * Renders a DOM node or an array of DOM nodes to a string.
- *
- * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).
- *
- * @param nodes Nodes to be rendered.
- * @param options Changes serialization behavior
- */
-export default function render(
- nodes: {} | {}[],
- options?: DomSerializerOptions
-): string;
diff --git a/assets/node_modules/dom-serializer/index.js b/assets/node_modules/dom-serializer/index.js
deleted file mode 100644
index d79729a..0000000
--- a/assets/node_modules/dom-serializer/index.js
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- Module dependencies
-*/
-var ElementType = require('domelementtype');
-var entities = require('entities');
-
-/* mixed-case SVG and MathML tags & attributes
- recognized by the HTML parser, see
- https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign
-*/
-var foreignNames = require('./foreignNames.json');
-foreignNames.elementNames.__proto__ = null; /* use as a simple dictionary */
-foreignNames.attributeNames.__proto__ = null;
-
-var unencodedElements = {
- __proto__: null,
- style: true,
- script: true,
- xmp: true,
- iframe: true,
- noembed: true,
- noframes: true,
- plaintext: true,
- noscript: true
-};
-
-/*
- Format attributes
-*/
-function formatAttrs(attributes, opts) {
- if (!attributes) return;
-
- var output = '';
- var value;
-
- // Loop through the attributes
- for (var key in attributes) {
- value = attributes[key];
- if (output) {
- output += ' ';
- }
-
- if (opts.xmlMode === 'foreign') {
- /* fix up mixed-case attribute names */
- key = foreignNames.attributeNames[key] || key;
- }
- output += key;
- if ((value !== null && value !== '') || opts.xmlMode) {
- output +=
- '="' +
- (opts.decodeEntities
- ? entities.encodeXML(value)
- : value.replace(/\"/g, '&quot;')) +
- '"';
- }
- }
-
- return output;
-}
-
-/*
- Self-enclosing tags (stolen from node-htmlparser)
-*/
-var singleTag = {
- __proto__: null,
- area: true,
- base: true,
- basefont: true,
- br: true,
- col: true,
- command: true,
- embed: true,
- frame: true,
- hr: true,
- img: true,
- input: true,
- isindex: true,
- keygen: true,
- link: true,
- meta: true,
- param: true,
- source: true,
- track: true,
- wbr: true
-};
-
-var render = (module.exports = function(dom, opts) {
- if (!Array.isArray(dom) && !dom.cheerio) dom = [dom];
- opts = opts || {};
-
- var output = '';
-
- for (var i = 0; i < dom.length; i++) {
- var elem = dom[i];
-
- if (elem.type === 'root') output += render(elem.children, opts);
- else if (ElementType.isTag(elem)) output += renderTag(elem, opts);
- else if (elem.type === ElementType.Directive)
- output += renderDirective(elem);
- else if (elem.type === ElementType.Comment) output += renderComment(elem);
- else if (elem.type === ElementType.CDATA) output += renderCdata(elem);
- else output += renderText(elem, opts);
- }
-
- return output;
-});
-
-var foreignModeIntegrationPoints = [
- 'mi',
- 'mo',
- 'mn',
- 'ms',
- 'mtext',
- 'annotation-xml',
- 'foreignObject',
- 'desc',
- 'title'
-];
-
-function renderTag(elem, opts) {
- // Handle SVG / MathML in HTML
- if (opts.xmlMode === 'foreign') {
- /* fix up mixed-case element names */
- elem.name = foreignNames.elementNames[elem.name] || elem.name;
- /* exit foreign mode at integration points */
- if (
- elem.parent &&
- foreignModeIntegrationPoints.indexOf(elem.parent.name) >= 0
- )
- opts = Object.assign({}, opts, { xmlMode: false });
- }
- if (!opts.xmlMode && ['svg', 'math'].indexOf(elem.name) >= 0) {
- opts = Object.assign({}, opts, { xmlMode: 'foreign' });
- }
-
- var tag = '<' + elem.name;
- var attribs = formatAttrs(elem.attribs, opts);
-
- if (attribs) {
- tag += ' ' + attribs;
- }
-
- if (opts.xmlMode && (!elem.children || elem.children.length === 0)) {
- tag += '/>';
- } else {
- tag += '>';
- if (elem.children) {
- tag += render(elem.children, opts);
- }
-
- if (!singleTag[elem.name] || opts.xmlMode) {
- tag += '</' + elem.name + '>';
- }
- }
-
- return tag;
-}
-
-function renderDirective(elem) {
- return '<' + elem.data + '>';
-}
-
-function renderText(elem, opts) {
- var data = elem.data || '';
-
- // if entities weren't decoded, no need to encode them back
- if (
- opts.decodeEntities &&
- !(elem.parent && elem.parent.name in unencodedElements)
- ) {
- data = entities.encodeXML(data);
- }
-
- return data;
-}
-
-function renderCdata(elem) {
- return '<![CDATA[' + elem.children[0].data + ']]>';
-}
-
-function renderComment(elem) {
- return '<!--' + elem.data + '-->';
-}
diff --git a/assets/node_modules/dom-serializer/node_modules/domelementtype/LICENSE b/assets/node_modules/dom-serializer/node_modules/domelementtype/LICENSE
deleted file mode 100644
index c464f86..0000000
--- a/assets/node_modules/dom-serializer/node_modules/domelementtype/LICENSE
+++ /dev/null
@@ -1,11 +0,0 @@
-Copyright (c) Felix Böhm
-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.
-
-THIS 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,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/assets/node_modules/dom-serializer/node_modules/domelementtype/README.md b/assets/node_modules/dom-serializer/node_modules/domelementtype/README.md
deleted file mode 100644
index 4eadc07..0000000
--- a/assets/node_modules/dom-serializer/node_modules/domelementtype/README.md
+++ /dev/null
@@ -1 +0,0 @@
-All the types of nodes in htmlparser2's DOM.
diff --git a/assets/node_modules/dom-serializer/node_modules/domelementtype/lib/index.d.ts b/assets/node_modules/dom-serializer/node_modules/domelementtype/lib/index.d.ts
deleted file mode 100644
index a61d346..0000000
--- a/assets/node_modules/dom-serializer/node_modules/domelementtype/lib/index.d.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/** Types of elements found in the DOM */
-export declare const enum ElementType {
- Text = "text",
- Directive = "directive",
- Comment = "comment",
- Script = "script",
- Style = "style",
- Tag = "tag",
- CDATA = "cdata",
- Doctype = "doctype"
-}
-/**
- * Tests whether an element is a tag or not.
- *
- * @param elem Element to test
- */
-export declare function isTag(elem: {
- type: ElementType;
-}): boolean;
-export declare const Text = ElementType.Text;
-export declare const Directive = ElementType.Directive;
-export declare const Comment = ElementType.Comment;
-export declare const Script = ElementType.Script;
-export declare const Style = ElementType.Style;
-export declare const Tag = ElementType.Tag;
-export declare const CDATA = ElementType.CDATA;
-export declare const Doctype = ElementType.Doctype;
-//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/domelementtype/lib/index.d.ts.map b/assets/node_modules/dom-serializer/node_modules/domelementtype/lib/index.d.ts.map
deleted file mode 100644
index d9398e3..0000000
--- a/assets/node_modules/dom-serializer/node_modules/domelementtype/lib/index.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,0BAAkB,WAAW;IACzB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,OAAO,YAAY;CACtB;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAM1D;AAGD,eAAO,MAAM,IAAI,mBAAmB,CAAC;AACrC,eAAO,MAAM,SAAS,wBAAwB,CAAC;AAC/C,eAAO,MAAM,OAAO,sBAAsB,CAAC;AAC3C,eAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,eAAO,MAAM,KAAK,oBAAoB,CAAC;AACvC,eAAO,MAAM,GAAG,kBAAkB,CAAC;AACnC,eAAO,MAAM,KAAK,oBAAoB,CAAC;AACvC,eAAO,MAAM,OAAO,sBAAsB,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/domelementtype/lib/index.js b/assets/node_modules/dom-serializer/node_modules/domelementtype/lib/index.js
deleted file mode 100644
index 1908ef7..0000000
--- a/assets/node_modules/dom-serializer/node_modules/domelementtype/lib/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-/**
- * Tests whether an element is a tag or not.
- *
- * @param elem Element to test
- */
-function isTag(elem) {
- return (elem.type === "tag" /* Tag */ ||
- elem.type === "script" /* Script */ ||
- elem.type === "style" /* Style */);
-}
-exports.isTag = isTag;
-// Exports for backwards compatibility
-exports.Text = "text" /* Text */; //Text
-exports.Directive = "directive" /* Directive */; //<? ... ?>
-exports.Comment = "comment" /* Comment */; //<!-- ... -->
-exports.Script = "script" /* Script */; //<script> tags
-exports.Style = "style" /* Style */; //<style> tags
-exports.Tag = "tag" /* Tag */; //Any tag
-exports.CDATA = "cdata" /* CDATA */; //<![CDATA[ ... ]]>
-exports.Doctype = "doctype" /* Doctype */;
diff --git a/assets/node_modules/dom-serializer/node_modules/domelementtype/package.json b/assets/node_modules/dom-serializer/node_modules/domelementtype/package.json
deleted file mode 100644
index f3e94b7..0000000
--- a/assets/node_modules/dom-serializer/node_modules/domelementtype/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "domelementtype",
- "version": "2.0.1",
- "description": "all the types of nodes in htmlparser2's dom",
- "main": "lib/index.js",
- "types": "lib/index.d.ts",
- "files": [
- "lib/**/*"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/fb55/domelementtype.git"
- },
- "keywords": [
- "dom",
- "htmlparser2"
- ],
- "scripts": {
- "test": "npm run lint && prettier --check **/*.{ts,json,md}",
- "lint": "eslint **/*.ts",
- "format": "prettier --write **/*.{ts,json,md}",
- "build": "tsc",
- "prepare": "npm run build"
- },
- "author": "Felix Boehm <me@feedic.com>",
- "license": "BSD-2-Clause",
- "prettier": {
- "tabWidth": 4
- },
- "devDependencies": {
- "@typescript-eslint/eslint-plugin": "^1.13.0",
- "@typescript-eslint/parser": "^1.13.0",
- "eslint": "^6.1.0",
- "eslint-config-prettier": "^6.0.0",
- "prettier": "^1.18.2",
- "typescript": "^3.5.3"
- }
-}
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/LICENSE b/assets/node_modules/dom-serializer/node_modules/entities/LICENSE
deleted file mode 100644
index c464f86..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/LICENSE
+++ /dev/null
@@ -1,11 +0,0 @@
-Copyright (c) Felix Böhm
-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.
-
-THIS 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,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/README.md b/assets/node_modules/dom-serializer/node_modules/entities/README.md
deleted file mode 100644
index 3091cc3..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# entities [![NPM version](http://img.shields.io/npm/v/entities.svg)](https://npmjs.org/package/entities) [![Downloads](https://img.shields.io/npm/dm/entities.svg)](https://npmjs.org/package/entities) [![Build Status](http://img.shields.io/travis/fb55/entities.svg)](http://travis-ci.org/fb55/entities) [![Coverage](http://img.shields.io/coveralls/fb55/entities.svg)](https://coveralls.io/r/fb55/entities)
-
-En- & decoder for XML/HTML entities.
-
-## How to…
-
-### …install `entities`
-
- npm i entities
-
-### …use `entities`
-
-```javascript
-const entities = require("entities");
-//encoding
-entities.escape("&#38;"); // "&#x26;#38;"
-entities.encodeXML("&#38;"); // "&amp;#38;"
-entities.encodeHTML("&#38;"); // "&amp;&num;38&semi;"
-//decoding
-entities.decodeXML("asdf &amp; &#xFF; &#xFC; &apos;"); // "asdf & ÿ ü '"
-entities.decodeHTML("asdf &amp; &yuml; &uuml; &apos;"); // "asdf & ÿ ü '"
-```
-
----
-
-License: BSD-2-Clause
-
-[Get supported entities with the Tidelift Subscription](https://tidelift.com/subscription/pkg/npm-entities?utm_source=npm-entities&utm_medium=referral&utm_campaign=readme)
-
-## 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/assets/node_modules/dom-serializer/node_modules/entities/lib/decode.d.ts b/assets/node_modules/dom-serializer/node_modules/entities/lib/decode.d.ts
deleted file mode 100644
index 0988b73..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/decode.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export declare const decodeXML: (str: string) => string;
-export declare const decodeHTMLStrict: (str: string) => string;
-export interface MapType {
- [key: string]: string;
-}
-export declare const decodeHTML: (str: string) => string;
-//# sourceMappingURL=decode.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/decode.d.ts.map b/assets/node_modules/dom-serializer/node_modules/entities/lib/decode.d.ts.map
deleted file mode 100644
index 0799d05..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/decode.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../src/decode.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,yBAA2B,CAAC;AAClD,eAAO,MAAM,gBAAgB,yBAA8B,CAAC;AAE5D,MAAM,WAAW,OAAO;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAeD,eAAO,MAAM,UAAU,yBA4BnB,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/decode.js b/assets/node_modules/dom-serializer/node_modules/entities/lib/decode.js
deleted file mode 100644
index 83e7f83..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/decode.js
+++ /dev/null
@@ -1,54 +0,0 @@
-"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var entities_json_1 = __importDefault(require("./maps/entities.json"));
-var legacy_json_1 = __importDefault(require("./maps/legacy.json"));
-var xml_json_1 = __importDefault(require("./maps/xml.json"));
-var decode_codepoint_1 = __importDefault(require("./decode_codepoint"));
-exports.decodeXML = getStrictDecoder(xml_json_1.default);
-exports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);
-function getStrictDecoder(map) {
- var keys = Object.keys(map).join("|");
- var replace = getReplacer(map);
- keys += "|#[xX][\\da-fA-F]+|#\\d+";
- var re = new RegExp("&(?:" + keys + ");", "g");
- return function (str) { return String(str).replace(re, replace); };
-}
-var sorter = function (a, b) { return (a < b ? 1 : -1); };
-exports.decodeHTML = (function () {
- var legacy = Object.keys(legacy_json_1.default).sort(sorter);
- var keys = Object.keys(entities_json_1.default).sort(sorter);
- for (var i = 0, j = 0; i < keys.length; i++) {
- if (legacy[j] === keys[i]) {
- keys[i] += ";?";
- j++;
- }
- else {
- keys[i] += ";";
- }
- }
- var re = new RegExp("&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g");
- var replace = getReplacer(entities_json_1.default);
- function replacer(str) {
- if (str.substr(-1) !== ";")
- str += ";";
- return replace(str);
- }
- //TODO consider creating a merged map
- return function (str) {
- return String(str).replace(re, replacer);
- };
-})();
-function getReplacer(map) {
- return function replace(str) {
- if (str.charAt(1) === "#") {
- if (str.charAt(2) === "X" || str.charAt(2) === "x") {
- return decode_codepoint_1.default(parseInt(str.substr(3), 16));
- }
- return decode_codepoint_1.default(parseInt(str.substr(2), 10));
- }
- return map[str.slice(1, -1)];
- };
-}
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.d.ts b/assets/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.d.ts
deleted file mode 100644
index 6b72eaa..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export default function decodeCodePoint(codePoint: number): string;
-//# sourceMappingURL=decode_codepoint.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.d.ts.map b/assets/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.d.ts.map
deleted file mode 100644
index cbefd18..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"decode_codepoint.d.ts","sourceRoot":"","sources":["../src/decode_codepoint.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,SAAS,EAAE,MAAM,UAoBxD"} \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js b/assets/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js
deleted file mode 100644
index dda95a1..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js
+++ /dev/null
@@ -1,25 +0,0 @@
-"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var decode_json_1 = __importDefault(require("./maps/decode.json"));
-// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119
-function decodeCodePoint(codePoint) {
- if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
- return "\uFFFD";
- }
- if (codePoint in decode_json_1.default) {
- // @ts-ignore
- codePoint = decode_json_1.default[codePoint];
- }
- var output = "";
- if (codePoint > 0xffff) {
- codePoint -= 0x10000;
- output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
- codePoint = 0xdc00 | (codePoint & 0x3ff);
- }
- output += String.fromCharCode(codePoint);
- return output;
-}
-exports.default = decodeCodePoint;
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/encode.d.ts b/assets/node_modules/dom-serializer/node_modules/entities/lib/encode.d.ts
deleted file mode 100644
index 613c30e..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/encode.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export declare const encodeXML: (data: string) => string;
-export declare const encodeHTML: (data: string) => string;
-export declare function escape(data: string): string;
-//# sourceMappingURL=encode.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/encode.d.ts.map b/assets/node_modules/dom-serializer/node_modules/entities/lib/encode.d.ts.map
deleted file mode 100644
index cebe1ac..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/encode.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../src/encode.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,0BAAsC,CAAC;AAO7D,eAAO,MAAM,UAAU,0BAAwC,CAAC;AA4DhE,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,UAKlC"} \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/encode.js b/assets/node_modules/dom-serializer/node_modules/entities/lib/encode.js
deleted file mode 100644
index e3b2fb6..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/encode.js
+++ /dev/null
@@ -1,67 +0,0 @@
-"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var xml_json_1 = __importDefault(require("./maps/xml.json"));
-var inverseXML = getInverseObj(xml_json_1.default);
-var xmlReplacer = getInverseReplacer(inverseXML);
-exports.encodeXML = getInverse(inverseXML, xmlReplacer);
-var entities_json_1 = __importDefault(require("./maps/entities.json"));
-var inverseHTML = getInverseObj(entities_json_1.default);
-var htmlReplacer = getInverseReplacer(inverseHTML);
-exports.encodeHTML = getInverse(inverseHTML, htmlReplacer);
-function getInverseObj(obj) {
- return Object.keys(obj)
- .sort()
- .reduce(function (inverse, name) {
- inverse[obj[name]] = "&" + name + ";";
- return inverse;
- }, {});
-}
-function getInverseReplacer(inverse) {
- var single = [];
- var multiple = [];
- Object.keys(inverse).forEach(function (k) {
- return k.length === 1
- ? // Add value to single array
- single.push("\\" + k)
- : // Add value to multiple array
- multiple.push(k);
- });
- //TODO add ranges
- multiple.unshift("[" + single.join("") + "]");
- return new RegExp(multiple.join("|"), "g");
-}
-var reNonASCII = /[^\0-\x7F]/g;
-var reAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
-function singleCharReplacer(c) {
- return "&#x" + c
- .charCodeAt(0)
- .toString(16)
- .toUpperCase() + ";";
-}
-// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
-function astralReplacer(c, _) {
- // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
- var high = c.charCodeAt(0);
- var low = c.charCodeAt(1);
- var codePoint = (high - 0xd800) * 0x400 + low - 0xdc00 + 0x10000;
- return "&#x" + codePoint.toString(16).toUpperCase() + ";";
-}
-function getInverse(inverse, re) {
- return function (data) {
- return data
- .replace(re, function (name) { return inverse[name]; })
- .replace(reAstralSymbols, astralReplacer)
- .replace(reNonASCII, singleCharReplacer);
- };
-}
-var reXmlChars = getInverseReplacer(inverseXML);
-function escape(data) {
- return data
- .replace(reXmlChars, singleCharReplacer)
- .replace(reAstralSymbols, astralReplacer)
- .replace(reNonASCII, singleCharReplacer);
-}
-exports.escape = escape;
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/index.d.ts b/assets/node_modules/dom-serializer/node_modules/entities/lib/index.d.ts
deleted file mode 100644
index 90f6884..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/index.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export declare function decode(data: string, level?: number): string;
-export declare function decodeStrict(data: string, level?: number): string;
-export declare function encode(data: string, level?: number): string;
-export { encodeXML, encodeHTML, escape, encodeHTML as encodeHTML4, encodeHTML as encodeHTML5 } from "./encode";
-export { decodeXML, decodeHTML, decodeHTMLStrict, decodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict } from "./decode";
-//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/index.d.ts.map b/assets/node_modules/dom-serializer/node_modules/entities/lib/index.d.ts.map
deleted file mode 100644
index 44cddef..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/index.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,OAAO,EACH,SAAS,EACT,UAAU,EACV,MAAM,EAEN,UAAU,IAAI,WAAW,EACzB,UAAU,IAAI,WAAW,EAC5B,MAAM,UAAU,CAAC;AAElB,OAAO,EACH,SAAS,EACT,UAAU,EACV,gBAAgB,EAEhB,UAAU,IAAI,WAAW,EACzB,UAAU,IAAI,WAAW,EACzB,gBAAgB,IAAI,iBAAiB,EACrC,gBAAgB,IAAI,iBAAiB,EACrC,SAAS,IAAI,eAAe,EAC/B,MAAM,UAAU,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/index.js b/assets/node_modules/dom-serializer/node_modules/entities/lib/index.js
deleted file mode 100644
index f1afb52..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-var decode_1 = require("./decode");
-var encode_1 = require("./encode");
-function decode(data, level) {
- return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);
-}
-exports.decode = decode;
-function decodeStrict(data, level) {
- return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);
-}
-exports.decodeStrict = decodeStrict;
-function encode(data, level) {
- return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);
-}
-exports.encode = encode;
-var encode_2 = require("./encode");
-exports.encodeXML = encode_2.encodeXML;
-exports.encodeHTML = encode_2.encodeHTML;
-exports.escape = encode_2.escape;
-// Legacy aliases
-exports.encodeHTML4 = encode_2.encodeHTML;
-exports.encodeHTML5 = encode_2.encodeHTML;
-var decode_2 = require("./decode");
-exports.decodeXML = decode_2.decodeXML;
-exports.decodeHTML = decode_2.decodeHTML;
-exports.decodeHTMLStrict = decode_2.decodeHTMLStrict;
-// Legacy aliases
-exports.decodeHTML4 = decode_2.decodeHTML;
-exports.decodeHTML5 = decode_2.decodeHTML;
-exports.decodeHTML4Strict = decode_2.decodeHTMLStrict;
-exports.decodeHTML5Strict = decode_2.decodeHTMLStrict;
-exports.decodeXMLStrict = decode_2.decodeXML;
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/maps/decode.json b/assets/node_modules/dom-serializer/node_modules/entities/lib/maps/decode.json
deleted file mode 100644
index 309c2b8..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/maps/decode.json
+++ /dev/null
@@ -1 +0,0 @@
-{ "0": 65533, "128": 8364, "130": 8218, "131": 402, "132": 8222, "133": 8230, "134": 8224, "135": 8225, "136": 710, "137": 8240, "138": 352, "139": 8249, "140": 338, "142": 381, "145": 8216, "146": 8217, "147": 8220, "148": 8221, "149": 8226, "150": 8211, "151": 8212, "152": 732, "153": 8482, "154": 353, "155": 8250, "156": 339, "158": 382, "159": 376 }
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/maps/entities.json b/assets/node_modules/dom-serializer/node_modules/entities/lib/maps/entities.json
deleted file mode 100644
index e5fa29f..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/maps/entities.json
+++ /dev/null
@@ -1 +0,0 @@
-{ "Aacute": "\u00C1", "aacute": "\u00E1", "Abreve": "\u0102", "abreve": "\u0103", "ac": "\u223E", "acd": "\u223F", "acE": "\u223E\u0333", "Acirc": "\u00C2", "acirc": "\u00E2", "acute": "\u00B4", "Acy": "\u0410", "acy": "\u0430", "AElig": "\u00C6", "aelig": "\u00E6", "af": "\u2061", "Afr": "\uD835\uDD04", "afr": "\uD835\uDD1E", "Agrave": "\u00C0", "agrave": "\u00E0", "alefsym": "\u2135", "aleph": "\u2135", "Alpha": "\u0391", "alpha": "\u03B1", "Amacr": "\u0100", "amacr": "\u0101", "amalg": "\u2A3F", "amp": "&", "AMP": "&", "andand": "\u2A55", "And": "\u2A53", "and": "\u2227", "andd": "\u2A5C", "andslope": "\u2A58", "andv": "\u2A5A", "ang": "\u2220", "ange": "\u29A4", "angle": "\u2220", "angmsdaa": "\u29A8", "angmsdab": "\u29A9", "angmsdac": "\u29AA", "angmsdad": "\u29AB", "angmsdae": "\u29AC", "angmsdaf": "\u29AD", "angmsdag": "\u29AE", "angmsdah": "\u29AF", "angmsd": "\u2221", "angrt": "\u221F", "angrtvb": "\u22BE", "angrtvbd": "\u299D", "angsph": "\u2222", "angst": "\u00C5", "angzarr": "\u237C", "Aogon": "\u0104", "aogon": "\u0105", "Aopf": "\uD835\uDD38", "aopf": "\uD835\uDD52", "apacir": "\u2A6F", "ap": "\u2248", "apE": "\u2A70", "ape": "\u224A", "apid": "\u224B", "apos": "'", "ApplyFunction": "\u2061", "approx": "\u2248", "approxeq": "\u224A", "Aring": "\u00C5", "aring": "\u00E5", "Ascr": "\uD835\uDC9C", "ascr": "\uD835\uDCB6", "Assign": "\u2254", "ast": "*", "asymp": "\u2248", "asympeq": "\u224D", "Atilde": "\u00C3", "atilde": "\u00E3", "Auml": "\u00C4", "auml": "\u00E4", "awconint": "\u2233", "awint": "\u2A11", "backcong": "\u224C", "backepsilon": "\u03F6", "backprime": "\u2035", "backsim": "\u223D", "backsimeq": "\u22CD", "Backslash": "\u2216", "Barv": "\u2AE7", "barvee": "\u22BD", "barwed": "\u2305", "Barwed": "\u2306", "barwedge": "\u2305", "bbrk": "\u23B5", "bbrktbrk": "\u23B6", "bcong": "\u224C", "Bcy": "\u0411", "bcy": "\u0431", "bdquo": "\u201E", "becaus": "\u2235", "because": "\u2235", "Because": "\u2235", "bemptyv": "\u29B0", "bepsi": "\u03F6", "bernou": "\u212C", "Bernoullis": "\u212C", "Beta": "\u0392", "beta": "\u03B2", "beth": "\u2136", "between": "\u226C", "Bfr": "\uD835\uDD05", "bfr": "\uD835\uDD1F", "bigcap": "\u22C2", "bigcirc": "\u25EF", "bigcup": "\u22C3", "bigodot": "\u2A00", "bigoplus": "\u2A01", "bigotimes": "\u2A02", "bigsqcup": "\u2A06", "bigstar": "\u2605", "bigtriangledown": "\u25BD", "bigtriangleup": "\u25B3", "biguplus": "\u2A04", "bigvee": "\u22C1", "bigwedge": "\u22C0", "bkarow": "\u290D", "blacklozenge": "\u29EB", "blacksquare": "\u25AA", "blacktriangle": "\u25B4", "blacktriangledown": "\u25BE", "blacktriangleleft": "\u25C2", "blacktriangleright": "\u25B8", "blank": "\u2423", "blk12": "\u2592", "blk14": "\u2591", "blk34": "\u2593", "block": "\u2588", "bne": "=\u20E5", "bnequiv": "\u2261\u20E5", "bNot": "\u2AED", "bnot": "\u2310", "Bopf": "\uD835\uDD39", "bopf": "\uD835\uDD53", "bot": "\u22A5", "bottom": "\u22A5", "bowtie": "\u22C8", "boxbox": "\u29C9", "boxdl": "\u2510", "boxdL": "\u2555", "boxDl": "\u2556", "boxDL": "\u2557", "boxdr": "\u250C", "boxdR": "\u2552", "boxDr": "\u2553", "boxDR": "\u2554", "boxh": "\u2500", "boxH": "\u2550", "boxhd": "\u252C", "boxHd": "\u2564", "boxhD": "\u2565", "boxHD": "\u2566", "boxhu": "\u2534", "boxHu": "\u2567", "boxhU": "\u2568", "boxHU": "\u2569", "boxminus": "\u229F", "boxplus": "\u229E", "boxtimes": "\u22A0", "boxul": "\u2518", "boxuL": "\u255B", "boxUl": "\u255C", "boxUL": "\u255D", "boxur": "\u2514", "boxuR": "\u2558", "boxUr": "\u2559", "boxUR": "\u255A", "boxv": "\u2502", "boxV": "\u2551", "boxvh": "\u253C", "boxvH": "\u256A", "boxVh": "\u256B", "boxVH": "\u256C", "boxvl": "\u2524", "boxvL": "\u2561", "boxVl": "\u2562", "boxVL": "\u2563", "boxvr": "\u251C", "boxvR": "\u255E", "boxVr": "\u255F", "boxVR": "\u2560", "bprime": "\u2035", "breve": "\u02D8", "Breve": "\u02D8", "brvbar": "\u00A6", "bscr": "\uD835\uDCB7", "Bscr": "\u212C", "bsemi": "\u204F", "bsim": "\u223D", "bsime": "\u22CD", "bsolb": "\u29C5", "bsol": "\\", "bsolhsub": "\u27C8", "bull": "\u2022", "bullet": "\u2022", "bump": "\u224E", "bumpE": "\u2AAE", "bumpe": "\u224F", "Bumpeq": "\u224E", "bumpeq": "\u224F", "Cacute": "\u0106", "cacute": "\u0107", "capand": "\u2A44", "capbrcup": "\u2A49", "capcap": "\u2A4B", "cap": "\u2229", "Cap": "\u22D2", "capcup": "\u2A47", "capdot": "\u2A40", "CapitalDifferentialD": "\u2145", "caps": "\u2229\uFE00", "caret": "\u2041", "caron": "\u02C7", "Cayleys": "\u212D", "ccaps": "\u2A4D", "Ccaron": "\u010C", "ccaron": "\u010D", "Ccedil": "\u00C7", "ccedil": "\u00E7", "Ccirc": "\u0108", "ccirc": "\u0109", "Cconint": "\u2230", "ccups": "\u2A4C", "ccupssm": "\u2A50", "Cdot": "\u010A", "cdot": "\u010B", "cedil": "\u00B8", "Cedilla": "\u00B8", "cemptyv": "\u29B2", "cent": "\u00A2", "centerdot": "\u00B7", "CenterDot": "\u00B7", "cfr": "\uD835\uDD20", "Cfr": "\u212D", "CHcy": "\u0427", "chcy": "\u0447", "check": "\u2713", "checkmark": "\u2713", "Chi": "\u03A7", "chi": "\u03C7", "circ": "\u02C6", "circeq": "\u2257", "circlearrowleft": "\u21BA", "circlearrowright": "\u21BB", "circledast": "\u229B", "circledcirc": "\u229A", "circleddash": "\u229D", "CircleDot": "\u2299", "circledR": "\u00AE", "circledS": "\u24C8", "CircleMinus": "\u2296", "CirclePlus": "\u2295", "CircleTimes": "\u2297", "cir": "\u25CB", "cirE": "\u29C3", "cire": "\u2257", "cirfnint": "\u2A10", "cirmid": "\u2AEF", "cirscir": "\u29C2", "ClockwiseContourIntegral": "\u2232", "CloseCurlyDoubleQuote": "\u201D", "CloseCurlyQuote": "\u2019", "clubs": "\u2663", "clubsuit": "\u2663", "colon": ":", "Colon": "\u2237", "Colone": "\u2A74", "colone": "\u2254", "coloneq": "\u2254", "comma": ",", "commat": "@", "comp": "\u2201", "compfn": "\u2218", "complement": "\u2201", "complexes": "\u2102", "cong": "\u2245", "congdot": "\u2A6D", "Congruent": "\u2261", "conint": "\u222E", "Conint": "\u222F", "ContourIntegral": "\u222E", "copf": "\uD835\uDD54", "Copf": "\u2102", "coprod": "\u2210", "Coproduct": "\u2210", "copy": "\u00A9", "COPY": "\u00A9", "copysr": "\u2117", "CounterClockwiseContourIntegral": "\u2233", "crarr": "\u21B5", "cross": "\u2717", "Cross": "\u2A2F", "Cscr": "\uD835\uDC9E", "cscr": "\uD835\uDCB8", "csub": "\u2ACF", "csube": "\u2AD1", "csup": "\u2AD0", "csupe": "\u2AD2", "ctdot": "\u22EF", "cudarrl": "\u2938", "cudarrr": "\u2935", "cuepr": "\u22DE", "cuesc": "\u22DF", "cularr": "\u21B6", "cularrp": "\u293D", "cupbrcap": "\u2A48", "cupcap": "\u2A46", "CupCap": "\u224D", "cup": "\u222A", "Cup": "\u22D3", "cupcup": "\u2A4A", "cupdot": "\u228D", "cupor": "\u2A45", "cups": "\u222A\uFE00", "curarr": "\u21B7", "curarrm": "\u293C", "curlyeqprec": "\u22DE", "curlyeqsucc": "\u22DF", "curlyvee": "\u22CE", "curlywedge": "\u22CF", "curren": "\u00A4", "curvearrowleft": "\u21B6", "curvearrowright": "\u21B7", "cuvee": "\u22CE", "cuwed": "\u22CF", "cwconint": "\u2232", "cwint": "\u2231", "cylcty": "\u232D", "dagger": "\u2020", "Dagger": "\u2021", "daleth": "\u2138", "darr": "\u2193", "Darr": "\u21A1", "dArr": "\u21D3", "dash": "\u2010", "Dashv": "\u2AE4", "dashv": "\u22A3", "dbkarow": "\u290F", "dblac": "\u02DD", "Dcaron": "\u010E", "dcaron": "\u010F", "Dcy": "\u0414", "dcy": "\u0434", "ddagger": "\u2021", "ddarr": "\u21CA", "DD": "\u2145", "dd": "\u2146", "DDotrahd": "\u2911", "ddotseq": "\u2A77", "deg": "\u00B0", "Del": "\u2207", "Delta": "\u0394", "delta": "\u03B4", "demptyv": "\u29B1", "dfisht": "\u297F", "Dfr": "\uD835\uDD07", "dfr": "\uD835\uDD21", "dHar": "\u2965", "dharl": "\u21C3", "dharr": "\u21C2", "DiacriticalAcute": "\u00B4", "DiacriticalDot": "\u02D9", "DiacriticalDoubleAcute": "\u02DD", "DiacriticalGrave": "`", "DiacriticalTilde": "\u02DC", "diam": "\u22C4", "diamond": "\u22C4", "Diamond": "\u22C4", "diamondsuit": "\u2666", "diams": "\u2666", "die": "\u00A8", "DifferentialD": "\u2146", "digamma": "\u03DD", "disin": "\u22F2", "div": "\u00F7", "divide": "\u00F7", "divideontimes": "\u22C7", "divonx": "\u22C7", "DJcy": "\u0402", "djcy": "\u0452", "dlcorn": "\u231E", "dlcrop": "\u230D", "dollar": "$", "Dopf": "\uD835\uDD3B", "dopf": "\uD835\uDD55", "Dot": "\u00A8", "dot": "\u02D9", "DotDot": "\u20DC", "doteq": "\u2250", "doteqdot": "\u2251", "DotEqual": "\u2250", "dotminus": "\u2238", "dotplus": "\u2214", "dotsquare": "\u22A1", "doublebarwedge": "\u2306", "DoubleContourIntegral": "\u222F", "DoubleDot": "\u00A8", "DoubleDownArrow": "\u21D3", "DoubleLeftArrow": "\u21D0", "DoubleLeftRightArrow": "\u21D4", "DoubleLeftTee": "\u2AE4", "DoubleLongLeftArrow": "\u27F8", "DoubleLongLeftRightArrow": "\u27FA", "DoubleLongRightArrow": "\u27F9", "DoubleRightArrow": "\u21D2", "DoubleRightTee": "\u22A8", "DoubleUpArrow": "\u21D1", "DoubleUpDownArrow": "\u21D5", "DoubleVerticalBar": "\u2225", "DownArrowBar": "\u2913", "downarrow": "\u2193", "DownArrow": "\u2193", "Downarrow": "\u21D3", "DownArrowUpArrow": "\u21F5", "DownBreve": "\u0311", "downdownarrows": "\u21CA", "downharpoonleft": "\u21C3", "downharpoonright": "\u21C2", "DownLeftRightVector": "\u2950", "DownLeftTeeVector": "\u295E", "DownLeftVectorBar": "\u2956", "DownLeftVector": "\u21BD", "DownRightTeeVector": "\u295F", "DownRightVectorBar": "\u2957", "DownRightVector": "\u21C1", "DownTeeArrow": "\u21A7", "DownTee": "\u22A4", "drbkarow": "\u2910", "drcorn": "\u231F", "drcrop": "\u230C", "Dscr": "\uD835\uDC9F", "dscr": "\uD835\uDCB9", "DScy": "\u0405", "dscy": "\u0455", "dsol": "\u29F6", "Dstrok": "\u0110", "dstrok": "\u0111", "dtdot": "\u22F1", "dtri": "\u25BF", "dtrif": "\u25BE", "duarr": "\u21F5", "duhar": "\u296F", "dwangle": "\u29A6", "DZcy": "\u040F", "dzcy": "\u045F", "dzigrarr": "\u27FF", "Eacute": "\u00C9", "eacute": "\u00E9", "easter": "\u2A6E", "Ecaron": "\u011A", "ecaron": "\u011B", "Ecirc": "\u00CA", "ecirc": "\u00EA", "ecir": "\u2256", "ecolon": "\u2255", "Ecy": "\u042D", "ecy": "\u044D", "eDDot": "\u2A77", "Edot": "\u0116", "edot": "\u0117", "eDot": "\u2251", "ee": "\u2147", "efDot": "\u2252", "Efr": "\uD835\uDD08", "efr": "\uD835\uDD22", "eg": "\u2A9A", "Egrave": "\u00C8", "egrave": "\u00E8", "egs": "\u2A96", "egsdot": "\u2A98", "el": "\u2A99", "Element": "\u2208", "elinters": "\u23E7", "ell": "\u2113", "els": "\u2A95", "elsdot": "\u2A97", "Emacr": "\u0112", "emacr": "\u0113", "empty": "\u2205", "emptyset": "\u2205", "EmptySmallSquare": "\u25FB", "emptyv": "\u2205", "EmptyVerySmallSquare": "\u25AB", "emsp13": "\u2004", "emsp14": "\u2005", "emsp": "\u2003", "ENG": "\u014A", "eng": "\u014B", "ensp": "\u2002", "Eogon": "\u0118", "eogon": "\u0119", "Eopf": "\uD835\uDD3C", "eopf": "\uD835\uDD56", "epar": "\u22D5", "eparsl": "\u29E3", "eplus": "\u2A71", "epsi": "\u03B5", "Epsilon": "\u0395", "epsilon": "\u03B5", "epsiv": "\u03F5", "eqcirc": "\u2256", "eqcolon": "\u2255", "eqsim": "\u2242", "eqslantgtr": "\u2A96", "eqslantless": "\u2A95", "Equal": "\u2A75", "equals": "=", "EqualTilde": "\u2242", "equest": "\u225F", "Equilibrium": "\u21CC", "equiv": "\u2261", "equivDD": "\u2A78", "eqvparsl": "\u29E5", "erarr": "\u2971", "erDot": "\u2253", "escr": "\u212F", "Escr": "\u2130", "esdot": "\u2250", "Esim": "\u2A73", "esim": "\u2242", "Eta": "\u0397", "eta": "\u03B7", "ETH": "\u00D0", "eth": "\u00F0", "Euml": "\u00CB", "euml": "\u00EB", "euro": "\u20AC", "excl": "!", "exist": "\u2203", "Exists": "\u2203", "expectation": "\u2130", "exponentiale": "\u2147", "ExponentialE": "\u2147", "fallingdotseq": "\u2252", "Fcy": "\u0424", "fcy": "\u0444", "female": "\u2640", "ffilig": "\uFB03", "fflig": "\uFB00", "ffllig": "\uFB04", "Ffr": "\uD835\uDD09", "ffr": "\uD835\uDD23", "filig": "\uFB01", "FilledSmallSquare": "\u25FC", "FilledVerySmallSquare": "\u25AA", "fjlig": "fj", "flat": "\u266D", "fllig": "\uFB02", "fltns": "\u25B1", "fnof": "\u0192", "Fopf": "\uD835\uDD3D", "fopf": "\uD835\uDD57", "forall": "\u2200", "ForAll": "\u2200", "fork": "\u22D4", "forkv": "\u2AD9", "Fouriertrf": "\u2131", "fpartint": "\u2A0D", "frac12": "\u00BD", "frac13": "\u2153", "frac14": "\u00BC", "frac15": "\u2155", "frac16": "\u2159", "frac18": "\u215B", "frac23": "\u2154", "frac25": "\u2156", "frac34": "\u00BE", "frac35": "\u2157", "frac38": "\u215C", "frac45": "\u2158", "frac56": "\u215A", "frac58": "\u215D", "frac78": "\u215E", "frasl": "\u2044", "frown": "\u2322", "fscr": "\uD835\uDCBB", "Fscr": "\u2131", "gacute": "\u01F5", "Gamma": "\u0393", "gamma": "\u03B3", "Gammad": "\u03DC", "gammad": "\u03DD", "gap": "\u2A86", "Gbreve": "\u011E", "gbreve": "\u011F", "Gcedil": "\u0122", "Gcirc": "\u011C", "gcirc": "\u011D", "Gcy": "\u0413", "gcy": "\u0433", "Gdot": "\u0120", "gdot": "\u0121", "ge": "\u2265", "gE": "\u2267", "gEl": "\u2A8C", "gel": "\u22DB", "geq": "\u2265", "geqq": "\u2267", "geqslant": "\u2A7E", "gescc": "\u2AA9", "ges": "\u2A7E", "gesdot": "\u2A80", "gesdoto": "\u2A82", "gesdotol": "\u2A84", "gesl": "\u22DB\uFE00", "gesles": "\u2A94", "Gfr": "\uD835\uDD0A", "gfr": "\uD835\uDD24", "gg": "\u226B", "Gg": "\u22D9", "ggg": "\u22D9", "gimel": "\u2137", "GJcy": "\u0403", "gjcy": "\u0453", "gla": "\u2AA5", "gl": "\u2277", "glE": "\u2A92", "glj": "\u2AA4", "gnap": "\u2A8A", "gnapprox": "\u2A8A", "gne": "\u2A88", "gnE": "\u2269", "gneq": "\u2A88", "gneqq": "\u2269", "gnsim": "\u22E7", "Gopf": "\uD835\uDD3E", "gopf": "\uD835\uDD58", "grave": "`", "GreaterEqual": "\u2265", "GreaterEqualLess": "\u22DB", "GreaterFullEqual": "\u2267", "GreaterGreater": "\u2AA2", "GreaterLess": "\u2277", "GreaterSlantEqual": "\u2A7E", "GreaterTilde": "\u2273", "Gscr": "\uD835\uDCA2", "gscr": "\u210A", "gsim": "\u2273", "gsime": "\u2A8E", "gsiml": "\u2A90", "gtcc": "\u2AA7", "gtcir": "\u2A7A", "gt": ">", "GT": ">", "Gt": "\u226B", "gtdot": "\u22D7", "gtlPar": "\u2995", "gtquest": "\u2A7C", "gtrapprox": "\u2A86", "gtrarr": "\u2978", "gtrdot": "\u22D7", "gtreqless": "\u22DB", "gtreqqless": "\u2A8C", "gtrless": "\u2277", "gtrsim": "\u2273", "gvertneqq": "\u2269\uFE00", "gvnE": "\u2269\uFE00", "Hacek": "\u02C7", "hairsp": "\u200A", "half": "\u00BD", "hamilt": "\u210B", "HARDcy": "\u042A", "hardcy": "\u044A", "harrcir": "\u2948", "harr": "\u2194", "hArr": "\u21D4", "harrw": "\u21AD", "Hat": "^", "hbar": "\u210F", "Hcirc": "\u0124", "hcirc": "\u0125", "hearts": "\u2665", "heartsuit": "\u2665", "hellip": "\u2026", "hercon": "\u22B9", "hfr": "\uD835\uDD25", "Hfr": "\u210C", "HilbertSpace": "\u210B", "hksearow": "\u2925", "hkswarow": "\u2926", "hoarr": "\u21FF", "homtht": "\u223B", "hookleftarrow": "\u21A9", "hookrightarrow": "\u21AA", "hopf": "\uD835\uDD59", "Hopf": "\u210D", "horbar": "\u2015", "HorizontalLine": "\u2500", "hscr": "\uD835\uDCBD", "Hscr": "\u210B", "hslash": "\u210F", "Hstrok": "\u0126", "hstrok": "\u0127", "HumpDownHump": "\u224E", "HumpEqual": "\u224F", "hybull": "\u2043", "hyphen": "\u2010", "Iacute": "\u00CD", "iacute": "\u00ED", "ic": "\u2063", "Icirc": "\u00CE", "icirc": "\u00EE", "Icy": "\u0418", "icy": "\u0438", "Idot": "\u0130", "IEcy": "\u0415", "iecy": "\u0435", "iexcl": "\u00A1", "iff": "\u21D4", "ifr": "\uD835\uDD26", "Ifr": "\u2111", "Igrave": "\u00CC", "igrave": "\u00EC", "ii": "\u2148", "iiiint": "\u2A0C", "iiint": "\u222D", "iinfin": "\u29DC", "iiota": "\u2129", "IJlig": "\u0132", "ijlig": "\u0133", "Imacr": "\u012A", "imacr": "\u012B", "image": "\u2111", "ImaginaryI": "\u2148", "imagline": "\u2110", "imagpart": "\u2111", "imath": "\u0131", "Im": "\u2111", "imof": "\u22B7", "imped": "\u01B5", "Implies": "\u21D2", "incare": "\u2105", "in": "\u2208", "infin": "\u221E", "infintie": "\u29DD", "inodot": "\u0131", "intcal": "\u22BA", "int": "\u222B", "Int": "\u222C", "integers": "\u2124", "Integral": "\u222B", "intercal": "\u22BA", "Intersection": "\u22C2", "intlarhk": "\u2A17", "intprod": "\u2A3C", "InvisibleComma": "\u2063", "InvisibleTimes": "\u2062", "IOcy": "\u0401", "iocy": "\u0451", "Iogon": "\u012E", "iogon": "\u012F", "Iopf": "\uD835\uDD40", "iopf": "\uD835\uDD5A", "Iota": "\u0399", "iota": "\u03B9", "iprod": "\u2A3C", "iquest": "\u00BF", "iscr": "\uD835\uDCBE", "Iscr": "\u2110", "isin": "\u2208", "isindot": "\u22F5", "isinE": "\u22F9", "isins": "\u22F4", "isinsv": "\u22F3", "isinv": "\u2208", "it": "\u2062", "Itilde": "\u0128", "itilde": "\u0129", "Iukcy": "\u0406", "iukcy": "\u0456", "Iuml": "\u00CF", "iuml": "\u00EF", "Jcirc": "\u0134", "jcirc": "\u0135", "Jcy": "\u0419", "jcy": "\u0439", "Jfr": "\uD835\uDD0D", "jfr": "\uD835\uDD27", "jmath": "\u0237", "Jopf": "\uD835\uDD41", "jopf": "\uD835\uDD5B", "Jscr": "\uD835\uDCA5", "jscr": "\uD835\uDCBF", "Jsercy": "\u0408", "jsercy": "\u0458", "Jukcy": "\u0404", "jukcy": "\u0454", "Kappa": "\u039A", "kappa": "\u03BA", "kappav": "\u03F0", "Kcedil": "\u0136", "kcedil": "\u0137", "Kcy": "\u041A", "kcy": "\u043A", "Kfr": "\uD835\uDD0E", "kfr": "\uD835\uDD28", "kgreen": "\u0138", "KHcy": "\u0425", "khcy": "\u0445", "KJcy": "\u040C", "kjcy": "\u045C", "Kopf": "\uD835\uDD42", "kopf": "\uD835\uDD5C", "Kscr": "\uD835\uDCA6", "kscr": "\uD835\uDCC0", "lAarr": "\u21DA", "Lacute": "\u0139", "lacute": "\u013A", "laemptyv": "\u29B4", "lagran": "\u2112", "Lambda": "\u039B", "lambda": "\u03BB", "lang": "\u27E8", "Lang": "\u27EA", "langd": "\u2991", "langle": "\u27E8", "lap": "\u2A85", "Laplacetrf": "\u2112", "laquo": "\u00AB", "larrb": "\u21E4", "larrbfs": "\u291F", "larr": "\u2190", "Larr": "\u219E", "lArr": "\u21D0", "larrfs": "\u291D", "larrhk": "\u21A9", "larrlp": "\u21AB", "larrpl": "\u2939", "larrsim": "\u2973", "larrtl": "\u21A2", "latail": "\u2919", "lAtail": "\u291B", "lat": "\u2AAB", "late": "\u2AAD", "lates": "\u2AAD\uFE00", "lbarr": "\u290C", "lBarr": "\u290E", "lbbrk": "\u2772", "lbrace": "{", "lbrack": "[", "lbrke": "\u298B", "lbrksld": "\u298F", "lbrkslu": "\u298D", "Lcaron": "\u013D", "lcaron": "\u013E", "Lcedil": "\u013B", "lcedil": "\u013C", "lceil": "\u2308", "lcub": "{", "Lcy": "\u041B", "lcy": "\u043B", "ldca": "\u2936", "ldquo": "\u201C", "ldquor": "\u201E", "ldrdhar": "\u2967", "ldrushar": "\u294B", "ldsh": "\u21B2", "le": "\u2264", "lE": "\u2266", "LeftAngleBracket": "\u27E8", "LeftArrowBar": "\u21E4", "leftarrow": "\u2190", "LeftArrow": "\u2190", "Leftarrow": "\u21D0", "LeftArrowRightArrow": "\u21C6", "leftarrowtail": "\u21A2", "LeftCeiling": "\u2308", "LeftDoubleBracket": "\u27E6", "LeftDownTeeVector": "\u2961", "LeftDownVectorBar": "\u2959", "LeftDownVector": "\u21C3", "LeftFloor": "\u230A", "leftharpoondown": "\u21BD", "leftharpoonup": "\u21BC", "leftleftarrows": "\u21C7", "leftrightarrow": "\u2194", "LeftRightArrow": "\u2194", "Leftrightarrow": "\u21D4", "leftrightarrows": "\u21C6", "leftrightharpoons": "\u21CB", "leftrightsquigarrow": "\u21AD", "LeftRightVector": "\u294E", "LeftTeeArrow": "\u21A4", "LeftTee": "\u22A3", "LeftTeeVector": "\u295A", "leftthreetimes": "\u22CB", "LeftTriangleBar": "\u29CF", "LeftTriangle": "\u22B2", "LeftTriangleEqual": "\u22B4", "LeftUpDownVector": "\u2951", "LeftUpTeeVector": "\u2960", "LeftUpVectorBar": "\u2958", "LeftUpVector": "\u21BF", "LeftVectorBar": "\u2952", "LeftVector": "\u21BC", "lEg": "\u2A8B", "leg": "\u22DA", "leq": "\u2264", "leqq": "\u2266", "leqslant": "\u2A7D", "lescc": "\u2AA8", "les": "\u2A7D", "lesdot": "\u2A7F", "lesdoto": "\u2A81", "lesdotor": "\u2A83", "lesg": "\u22DA\uFE00", "lesges": "\u2A93", "lessapprox": "\u2A85", "lessdot": "\u22D6", "lesseqgtr": "\u22DA", "lesseqqgtr": "\u2A8B", "LessEqualGreater": "\u22DA", "LessFullEqual": "\u2266", "LessGreater": "\u2276", "lessgtr": "\u2276", "LessLess": "\u2AA1", "lesssim": "\u2272", "LessSlantEqual": "\u2A7D", "LessTilde": "\u2272", "lfisht": "\u297C", "lfloor": "\u230A", "Lfr": "\uD835\uDD0F", "lfr": "\uD835\uDD29", "lg": "\u2276", "lgE": "\u2A91", "lHar": "\u2962", "lhard": "\u21BD", "lharu": "\u21BC", "lharul": "\u296A", "lhblk": "\u2584", "LJcy": "\u0409", "ljcy": "\u0459", "llarr": "\u21C7", "ll": "\u226A", "Ll": "\u22D8", "llcorner": "\u231E", "Lleftarrow": "\u21DA", "llhard": "\u296B", "lltri": "\u25FA", "Lmidot": "\u013F", "lmidot": "\u0140", "lmoustache": "\u23B0", "lmoust": "\u23B0", "lnap": "\u2A89", "lnapprox": "\u2A89", "lne": "\u2A87", "lnE": "\u2268", "lneq": "\u2A87", "lneqq": "\u2268", "lnsim": "\u22E6", "loang": "\u27EC", "loarr": "\u21FD", "lobrk": "\u27E6", "longleftarrow": "\u27F5", "LongLeftArrow": "\u27F5", "Longleftarrow": "\u27F8", "longleftrightarrow": "\u27F7", "LongLeftRightArrow": "\u27F7", "Longleftrightarrow": "\u27FA", "longmapsto": "\u27FC", "longrightarrow": "\u27F6", "LongRightArrow": "\u27F6", "Longrightarrow": "\u27F9", "looparrowleft": "\u21AB", "looparrowright": "\u21AC", "lopar": "\u2985", "Lopf": "\uD835\uDD43", "lopf": "\uD835\uDD5D", "loplus": "\u2A2D", "lotimes": "\u2A34", "lowast": "\u2217", "lowbar": "_", "LowerLeftArrow": "\u2199", "LowerRightArrow": "\u2198", "loz": "\u25CA", "lozenge": "\u25CA", "lozf": "\u29EB", "lpar": "(", "lparlt": "\u2993", "lrarr": "\u21C6", "lrcorner": "\u231F", "lrhar": "\u21CB", "lrhard": "\u296D", "lrm": "\u200E", "lrtri": "\u22BF", "lsaquo": "\u2039", "lscr": "\uD835\uDCC1", "Lscr": "\u2112", "lsh": "\u21B0", "Lsh": "\u21B0", "lsim": "\u2272", "lsime": "\u2A8D", "lsimg": "\u2A8F", "lsqb": "[", "lsquo": "\u2018", "lsquor": "\u201A", "Lstrok": "\u0141", "lstrok": "\u0142", "ltcc": "\u2AA6", "ltcir": "\u2A79", "lt": "<", "LT": "<", "Lt": "\u226A", "ltdot": "\u22D6", "lthree": "\u22CB", "ltimes": "\u22C9", "ltlarr": "\u2976", "ltquest": "\u2A7B", "ltri": "\u25C3", "ltrie": "\u22B4", "ltrif": "\u25C2", "ltrPar": "\u2996", "lurdshar": "\u294A", "luruhar": "\u2966", "lvertneqq": "\u2268\uFE00", "lvnE": "\u2268\uFE00", "macr": "\u00AF", "male": "\u2642", "malt": "\u2720", "maltese": "\u2720", "Map": "\u2905", "map": "\u21A6", "mapsto": "\u21A6", "mapstodown": "\u21A7", "mapstoleft": "\u21A4", "mapstoup": "\u21A5", "marker": "\u25AE", "mcomma": "\u2A29", "Mcy": "\u041C", "mcy": "\u043C", "mdash": "\u2014", "mDDot": "\u223A", "measuredangle": "\u2221", "MediumSpace": "\u205F", "Mellintrf": "\u2133", "Mfr": "\uD835\uDD10", "mfr": "\uD835\uDD2A", "mho": "\u2127", "micro": "\u00B5", "midast": "*", "midcir": "\u2AF0", "mid": "\u2223", "middot": "\u00B7", "minusb": "\u229F", "minus": "\u2212", "minusd": "\u2238", "minusdu": "\u2A2A", "MinusPlus": "\u2213", "mlcp": "\u2ADB", "mldr": "\u2026", "mnplus": "\u2213", "models": "\u22A7", "Mopf": "\uD835\uDD44", "mopf": "\uD835\uDD5E", "mp": "\u2213", "mscr": "\uD835\uDCC2", "Mscr": "\u2133", "mstpos": "\u223E", "Mu": "\u039C", "mu": "\u03BC", "multimap": "\u22B8", "mumap": "\u22B8", "nabla": "\u2207", "Nacute": "\u0143", "nacute": "\u0144", "nang": "\u2220\u20D2", "nap": "\u2249", "napE": "\u2A70\u0338", "napid": "\u224B\u0338", "napos": "\u0149", "napprox": "\u2249", "natural": "\u266E", "naturals": "\u2115", "natur": "\u266E", "nbsp": "\u00A0", "nbump": "\u224E\u0338", "nbumpe": "\u224F\u0338", "ncap": "\u2A43", "Ncaron": "\u0147", "ncaron": "\u0148", "Ncedil": "\u0145", "ncedil": "\u0146", "ncong": "\u2247", "ncongdot": "\u2A6D\u0338", "ncup": "\u2A42", "Ncy": "\u041D", "ncy": "\u043D", "ndash": "\u2013", "nearhk": "\u2924", "nearr": "\u2197", "neArr": "\u21D7", "nearrow": "\u2197", "ne": "\u2260", "nedot": "\u2250\u0338", "NegativeMediumSpace": "\u200B", "NegativeThickSpace": "\u200B", "NegativeThinSpace": "\u200B", "NegativeVeryThinSpace": "\u200B", "nequiv": "\u2262", "nesear": "\u2928", "nesim": "\u2242\u0338", "NestedGreaterGreater": "\u226B", "NestedLessLess": "\u226A", "NewLine": "\n", "nexist": "\u2204", "nexists": "\u2204", "Nfr": "\uD835\uDD11", "nfr": "\uD835\uDD2B", "ngE": "\u2267\u0338", "nge": "\u2271", "ngeq": "\u2271", "ngeqq": "\u2267\u0338", "ngeqslant": "\u2A7E\u0338", "nges": "\u2A7E\u0338", "nGg": "\u22D9\u0338", "ngsim": "\u2275", "nGt": "\u226B\u20D2", "ngt": "\u226F", "ngtr": "\u226F", "nGtv": "\u226B\u0338", "nharr": "\u21AE", "nhArr": "\u21CE", "nhpar": "\u2AF2", "ni": "\u220B", "nis": "\u22FC", "nisd": "\u22FA", "niv": "\u220B", "NJcy": "\u040A", "njcy": "\u045A", "nlarr": "\u219A", "nlArr": "\u21CD", "nldr": "\u2025", "nlE": "\u2266\u0338", "nle": "\u2270", "nleftarrow": "\u219A", "nLeftarrow": "\u21CD", "nleftrightarrow": "\u21AE", "nLeftrightarrow": "\u21CE", "nleq": "\u2270", "nleqq": "\u2266\u0338", "nleqslant": "\u2A7D\u0338", "nles": "\u2A7D\u0338", "nless": "\u226E", "nLl": "\u22D8\u0338", "nlsim": "\u2274", "nLt": "\u226A\u20D2", "nlt": "\u226E", "nltri": "\u22EA", "nltrie": "\u22EC", "nLtv": "\u226A\u0338", "nmid": "\u2224", "NoBreak": "\u2060", "NonBreakingSpace": "\u00A0", "nopf": "\uD835\uDD5F", "Nopf": "\u2115", "Not": "\u2AEC", "not": "\u00AC", "NotCongruent": "\u2262", "NotCupCap": "\u226D", "NotDoubleVerticalBar": "\u2226", "NotElement": "\u2209", "NotEqual": "\u2260", "NotEqualTilde": "\u2242\u0338", "NotExists": "\u2204", "NotGreater": "\u226F", "NotGreaterEqual": "\u2271", "NotGreaterFullEqual": "\u2267\u0338", "NotGreaterGreater": "\u226B\u0338", "NotGreaterLess": "\u2279", "NotGreaterSlantEqual": "\u2A7E\u0338", "NotGreaterTilde": "\u2275", "NotHumpDownHump": "\u224E\u0338", "NotHumpEqual": "\u224F\u0338", "notin": "\u2209", "notindot": "\u22F5\u0338", "notinE": "\u22F9\u0338", "notinva": "\u2209", "notinvb": "\u22F7", "notinvc": "\u22F6", "NotLeftTriangleBar": "\u29CF\u0338", "NotLeftTriangle": "\u22EA", "NotLeftTriangleEqual": "\u22EC", "NotLess": "\u226E", "NotLessEqual": "\u2270", "NotLessGreater": "\u2278", "NotLessLess": "\u226A\u0338", "NotLessSlantEqual": "\u2A7D\u0338", "NotLessTilde": "\u2274", "NotNestedGreaterGreater": "\u2AA2\u0338", "NotNestedLessLess": "\u2AA1\u0338", "notni": "\u220C", "notniva": "\u220C", "notnivb": "\u22FE", "notnivc": "\u22FD", "NotPrecedes": "\u2280", "NotPrecedesEqual": "\u2AAF\u0338", "NotPrecedesSlantEqual": "\u22E0", "NotReverseElement": "\u220C", "NotRightTriangleBar": "\u29D0\u0338", "NotRightTriangle": "\u22EB", "NotRightTriangleEqual": "\u22ED", "NotSquareSubset": "\u228F\u0338", "NotSquareSubsetEqual": "\u22E2", "NotSquareSuperset": "\u2290\u0338", "NotSquareSupersetEqual": "\u22E3", "NotSubset": "\u2282\u20D2", "NotSubsetEqual": "\u2288", "NotSucceeds": "\u2281", "NotSucceedsEqual": "\u2AB0\u0338", "NotSucceedsSlantEqual": "\u22E1", "NotSucceedsTilde": "\u227F\u0338", "NotSuperset": "\u2283\u20D2", "NotSupersetEqual": "\u2289", "NotTilde": "\u2241", "NotTildeEqual": "\u2244", "NotTildeFullEqual": "\u2247", "NotTildeTilde": "\u2249", "NotVerticalBar": "\u2224", "nparallel": "\u2226", "npar": "\u2226", "nparsl": "\u2AFD\u20E5", "npart": "\u2202\u0338", "npolint": "\u2A14", "npr": "\u2280", "nprcue": "\u22E0", "nprec": "\u2280", "npreceq": "\u2AAF\u0338", "npre": "\u2AAF\u0338", "nrarrc": "\u2933\u0338", "nrarr": "\u219B", "nrArr": "\u21CF", "nrarrw": "\u219D\u0338", "nrightarrow": "\u219B", "nRightarrow": "\u21CF", "nrtri": "\u22EB", "nrtrie": "\u22ED", "nsc": "\u2281", "nsccue": "\u22E1", "nsce": "\u2AB0\u0338", "Nscr": "\uD835\uDCA9", "nscr": "\uD835\uDCC3", "nshortmid": "\u2224", "nshortparallel": "\u2226", "nsim": "\u2241", "nsime": "\u2244", "nsimeq": "\u2244", "nsmid": "\u2224", "nspar": "\u2226", "nsqsube": "\u22E2", "nsqsupe": "\u22E3", "nsub": "\u2284", "nsubE": "\u2AC5\u0338", "nsube": "\u2288", "nsubset": "\u2282\u20D2", "nsubseteq": "\u2288", "nsubseteqq": "\u2AC5\u0338", "nsucc": "\u2281", "nsucceq": "\u2AB0\u0338", "nsup": "\u2285", "nsupE": "\u2AC6\u0338", "nsupe": "\u2289", "nsupset": "\u2283\u20D2", "nsupseteq": "\u2289", "nsupseteqq": "\u2AC6\u0338", "ntgl": "\u2279", "Ntilde": "\u00D1", "ntilde": "\u00F1", "ntlg": "\u2278", "ntriangleleft": "\u22EA", "ntrianglelefteq": "\u22EC", "ntriangleright": "\u22EB", "ntrianglerighteq": "\u22ED", "Nu": "\u039D", "nu": "\u03BD", "num": "#", "numero": "\u2116", "numsp": "\u2007", "nvap": "\u224D\u20D2", "nvdash": "\u22AC", "nvDash": "\u22AD", "nVdash": "\u22AE", "nVDash": "\u22AF", "nvge": "\u2265\u20D2", "nvgt": ">\u20D2", "nvHarr": "\u2904", "nvinfin": "\u29DE", "nvlArr": "\u2902", "nvle": "\u2264\u20D2", "nvlt": "<\u20D2", "nvltrie": "\u22B4\u20D2", "nvrArr": "\u2903", "nvrtrie": "\u22B5\u20D2", "nvsim": "\u223C\u20D2", "nwarhk": "\u2923", "nwarr": "\u2196", "nwArr": "\u21D6", "nwarrow": "\u2196", "nwnear": "\u2927", "Oacute": "\u00D3", "oacute": "\u00F3", "oast": "\u229B", "Ocirc": "\u00D4", "ocirc": "\u00F4", "ocir": "\u229A", "Ocy": "\u041E", "ocy": "\u043E", "odash": "\u229D", "Odblac": "\u0150", "odblac": "\u0151", "odiv": "\u2A38", "odot": "\u2299", "odsold": "\u29BC", "OElig": "\u0152", "oelig": "\u0153", "ofcir": "\u29BF", "Ofr": "\uD835\uDD12", "ofr": "\uD835\uDD2C", "ogon": "\u02DB", "Ograve": "\u00D2", "ograve": "\u00F2", "ogt": "\u29C1", "ohbar": "\u29B5", "ohm": "\u03A9", "oint": "\u222E", "olarr": "\u21BA", "olcir": "\u29BE", "olcross": "\u29BB", "oline": "\u203E", "olt": "\u29C0", "Omacr": "\u014C", "omacr": "\u014D", "Omega": "\u03A9", "omega": "\u03C9", "Omicron": "\u039F", "omicron": "\u03BF", "omid": "\u29B6", "ominus": "\u2296", "Oopf": "\uD835\uDD46", "oopf": "\uD835\uDD60", "opar": "\u29B7", "OpenCurlyDoubleQuote": "\u201C", "OpenCurlyQuote": "\u2018", "operp": "\u29B9", "oplus": "\u2295", "orarr": "\u21BB", "Or": "\u2A54", "or": "\u2228", "ord": "\u2A5D", "order": "\u2134", "orderof": "\u2134", "ordf": "\u00AA", "ordm": "\u00BA", "origof": "\u22B6", "oror": "\u2A56", "orslope": "\u2A57", "orv": "\u2A5B", "oS": "\u24C8", "Oscr": "\uD835\uDCAA", "oscr": "\u2134", "Oslash": "\u00D8", "oslash": "\u00F8", "osol": "\u2298", "Otilde": "\u00D5", "otilde": "\u00F5", "otimesas": "\u2A36", "Otimes": "\u2A37", "otimes": "\u2297", "Ouml": "\u00D6", "ouml": "\u00F6", "ovbar": "\u233D", "OverBar": "\u203E", "OverBrace": "\u23DE", "OverBracket": "\u23B4", "OverParenthesis": "\u23DC", "para": "\u00B6", "parallel": "\u2225", "par": "\u2225", "parsim": "\u2AF3", "parsl": "\u2AFD", "part": "\u2202", "PartialD": "\u2202", "Pcy": "\u041F", "pcy": "\u043F", "percnt": "%", "period": ".", "permil": "\u2030", "perp": "\u22A5", "pertenk": "\u2031", "Pfr": "\uD835\uDD13", "pfr": "\uD835\uDD2D", "Phi": "\u03A6", "phi": "\u03C6", "phiv": "\u03D5", "phmmat": "\u2133", "phone": "\u260E", "Pi": "\u03A0", "pi": "\u03C0", "pitchfork": "\u22D4", "piv": "\u03D6", "planck": "\u210F", "planckh": "\u210E", "plankv": "\u210F", "plusacir": "\u2A23", "plusb": "\u229E", "pluscir": "\u2A22", "plus": "+", "plusdo": "\u2214", "plusdu": "\u2A25", "pluse": "\u2A72", "PlusMinus": "\u00B1", "plusmn": "\u00B1", "plussim": "\u2A26", "plustwo": "\u2A27", "pm": "\u00B1", "Poincareplane": "\u210C", "pointint": "\u2A15", "popf": "\uD835\uDD61", "Popf": "\u2119", "pound": "\u00A3", "prap": "\u2AB7", "Pr": "\u2ABB", "pr": "\u227A", "prcue": "\u227C", "precapprox": "\u2AB7", "prec": "\u227A", "preccurlyeq": "\u227C", "Precedes": "\u227A", "PrecedesEqual": "\u2AAF", "PrecedesSlantEqual": "\u227C", "PrecedesTilde": "\u227E", "preceq": "\u2AAF", "precnapprox": "\u2AB9", "precneqq": "\u2AB5", "precnsim": "\u22E8", "pre": "\u2AAF", "prE": "\u2AB3", "precsim": "\u227E", "prime": "\u2032", "Prime": "\u2033", "primes": "\u2119", "prnap": "\u2AB9", "prnE": "\u2AB5", "prnsim": "\u22E8", "prod": "\u220F", "Product": "\u220F", "profalar": "\u232E", "profline": "\u2312", "profsurf": "\u2313", "prop": "\u221D", "Proportional": "\u221D", "Proportion": "\u2237", "propto": "\u221D", "prsim": "\u227E", "prurel": "\u22B0", "Pscr": "\uD835\uDCAB", "pscr": "\uD835\uDCC5", "Psi": "\u03A8", "psi": "\u03C8", "puncsp": "\u2008", "Qfr": "\uD835\uDD14", "qfr": "\uD835\uDD2E", "qint": "\u2A0C", "qopf": "\uD835\uDD62", "Qopf": "\u211A", "qprime": "\u2057", "Qscr": "\uD835\uDCAC", "qscr": "\uD835\uDCC6", "quaternions": "\u210D", "quatint": "\u2A16", "quest": "?", "questeq": "\u225F", "quot": "\"", "QUOT": "\"", "rAarr": "\u21DB", "race": "\u223D\u0331", "Racute": "\u0154", "racute": "\u0155", "radic": "\u221A", "raemptyv": "\u29B3", "rang": "\u27E9", "Rang": "\u27EB", "rangd": "\u2992", "range": "\u29A5", "rangle": "\u27E9", "raquo": "\u00BB", "rarrap": "\u2975", "rarrb": "\u21E5", "rarrbfs": "\u2920", "rarrc": "\u2933", "rarr": "\u2192", "Rarr": "\u21A0", "rArr": "\u21D2", "rarrfs": "\u291E", "rarrhk": "\u21AA", "rarrlp": "\u21AC", "rarrpl": "\u2945", "rarrsim": "\u2974", "Rarrtl": "\u2916", "rarrtl": "\u21A3", "rarrw": "\u219D", "ratail": "\u291A", "rAtail": "\u291C", "ratio": "\u2236", "rationals": "\u211A", "rbarr": "\u290D", "rBarr": "\u290F", "RBarr": "\u2910", "rbbrk": "\u2773", "rbrace": "}", "rbrack": "]", "rbrke": "\u298C", "rbrksld": "\u298E", "rbrkslu": "\u2990", "Rcaron": "\u0158", "rcaron": "\u0159", "Rcedil": "\u0156", "rcedil": "\u0157", "rceil": "\u2309", "rcub": "}", "Rcy": "\u0420", "rcy": "\u0440", "rdca": "\u2937", "rdldhar": "\u2969", "rdquo": "\u201D", "rdquor": "\u201D", "rdsh": "\u21B3", "real": "\u211C", "realine": "\u211B", "realpart": "\u211C", "reals": "\u211D", "Re": "\u211C", "rect": "\u25AD", "reg": "\u00AE", "REG": "\u00AE", "ReverseElement": "\u220B", "ReverseEquilibrium": "\u21CB", "ReverseUpEquilibrium": "\u296F", "rfisht": "\u297D", "rfloor": "\u230B", "rfr": "\uD835\uDD2F", "Rfr": "\u211C", "rHar": "\u2964", "rhard": "\u21C1", "rharu": "\u21C0", "rharul": "\u296C", "Rho": "\u03A1", "rho": "\u03C1", "rhov": "\u03F1", "RightAngleBracket": "\u27E9", "RightArrowBar": "\u21E5", "rightarrow": "\u2192", "RightArrow": "\u2192", "Rightarrow": "\u21D2", "RightArrowLeftArrow": "\u21C4", "rightarrowtail": "\u21A3", "RightCeiling": "\u2309", "RightDoubleBracket": "\u27E7", "RightDownTeeVector": "\u295D", "RightDownVectorBar": "\u2955", "RightDownVector": "\u21C2", "RightFloor": "\u230B", "rightharpoondown": "\u21C1", "rightharpoonup": "\u21C0", "rightleftarrows": "\u21C4", "rightleftharpoons": "\u21CC", "rightrightarrows": "\u21C9", "rightsquigarrow": "\u219D", "RightTeeArrow": "\u21A6", "RightTee": "\u22A2", "RightTeeVector": "\u295B", "rightthreetimes": "\u22CC", "RightTriangleBar": "\u29D0", "RightTriangle": "\u22B3", "RightTriangleEqual": "\u22B5", "RightUpDownVector": "\u294F", "RightUpTeeVector": "\u295C", "RightUpVectorBar": "\u2954", "RightUpVector": "\u21BE", "RightVectorBar": "\u2953", "RightVector": "\u21C0", "ring": "\u02DA", "risingdotseq": "\u2253", "rlarr": "\u21C4", "rlhar": "\u21CC", "rlm": "\u200F", "rmoustache": "\u23B1", "rmoust": "\u23B1", "rnmid": "\u2AEE", "roang": "\u27ED", "roarr": "\u21FE", "robrk": "\u27E7", "ropar": "\u2986", "ropf": "\uD835\uDD63", "Ropf": "\u211D", "roplus": "\u2A2E", "rotimes": "\u2A35", "RoundImplies": "\u2970", "rpar": ")", "rpargt": "\u2994", "rppolint": "\u2A12", "rrarr": "\u21C9", "Rrightarrow": "\u21DB", "rsaquo": "\u203A", "rscr": "\uD835\uDCC7", "Rscr": "\u211B", "rsh": "\u21B1", "Rsh": "\u21B1", "rsqb": "]", "rsquo": "\u2019", "rsquor": "\u2019", "rthree": "\u22CC", "rtimes": "\u22CA", "rtri": "\u25B9", "rtrie": "\u22B5", "rtrif": "\u25B8", "rtriltri": "\u29CE", "RuleDelayed": "\u29F4", "ruluhar": "\u2968", "rx": "\u211E", "Sacute": "\u015A", "sacute": "\u015B", "sbquo": "\u201A", "scap": "\u2AB8", "Scaron": "\u0160", "scaron": "\u0161", "Sc": "\u2ABC", "sc": "\u227B", "sccue": "\u227D", "sce": "\u2AB0", "scE": "\u2AB4", "Scedil": "\u015E", "scedil": "\u015F", "Scirc": "\u015C", "scirc": "\u015D", "scnap": "\u2ABA", "scnE": "\u2AB6", "scnsim": "\u22E9", "scpolint": "\u2A13", "scsim": "\u227F", "Scy": "\u0421", "scy": "\u0441", "sdotb": "\u22A1", "sdot": "\u22C5", "sdote": "\u2A66", "searhk": "\u2925", "searr": "\u2198", "seArr": "\u21D8", "searrow": "\u2198", "sect": "\u00A7", "semi": ";", "seswar": "\u2929", "setminus": "\u2216", "setmn": "\u2216", "sext": "\u2736", "Sfr": "\uD835\uDD16", "sfr": "\uD835\uDD30", "sfrown": "\u2322", "sharp": "\u266F", "SHCHcy": "\u0429", "shchcy": "\u0449", "SHcy": "\u0428", "shcy": "\u0448", "ShortDownArrow": "\u2193", "ShortLeftArrow": "\u2190", "shortmid": "\u2223", "shortparallel": "\u2225", "ShortRightArrow": "\u2192", "ShortUpArrow": "\u2191", "shy": "\u00AD", "Sigma": "\u03A3", "sigma": "\u03C3", "sigmaf": "\u03C2", "sigmav": "\u03C2", "sim": "\u223C", "simdot": "\u2A6A", "sime": "\u2243", "simeq": "\u2243", "simg": "\u2A9E", "simgE": "\u2AA0", "siml": "\u2A9D", "simlE": "\u2A9F", "simne": "\u2246", "simplus": "\u2A24", "simrarr": "\u2972", "slarr": "\u2190", "SmallCircle": "\u2218", "smallsetminus": "\u2216", "smashp": "\u2A33", "smeparsl": "\u29E4", "smid": "\u2223", "smile": "\u2323", "smt": "\u2AAA", "smte": "\u2AAC", "smtes": "\u2AAC\uFE00", "SOFTcy": "\u042C", "softcy": "\u044C", "solbar": "\u233F", "solb": "\u29C4", "sol": "/", "Sopf": "\uD835\uDD4A", "sopf": "\uD835\uDD64", "spades": "\u2660", "spadesuit": "\u2660", "spar": "\u2225", "sqcap": "\u2293", "sqcaps": "\u2293\uFE00", "sqcup": "\u2294", "sqcups": "\u2294\uFE00", "Sqrt": "\u221A", "sqsub": "\u228F", "sqsube": "\u2291", "sqsubset": "\u228F", "sqsubseteq": "\u2291", "sqsup": "\u2290", "sqsupe": "\u2292", "sqsupset": "\u2290", "sqsupseteq": "\u2292", "square": "\u25A1", "Square": "\u25A1", "SquareIntersection": "\u2293", "SquareSubset": "\u228F", "SquareSubsetEqual": "\u2291", "SquareSuperset": "\u2290", "SquareSupersetEqual": "\u2292", "SquareUnion": "\u2294", "squarf": "\u25AA", "squ": "\u25A1", "squf": "\u25AA", "srarr": "\u2192", "Sscr": "\uD835\uDCAE", "sscr": "\uD835\uDCC8", "ssetmn": "\u2216", "ssmile": "\u2323", "sstarf": "\u22C6", "Star": "\u22C6", "star": "\u2606", "starf": "\u2605", "straightepsilon": "\u03F5", "straightphi": "\u03D5", "strns": "\u00AF", "sub": "\u2282", "Sub": "\u22D0", "subdot": "\u2ABD", "subE": "\u2AC5", "sube": "\u2286", "subedot": "\u2AC3", "submult": "\u2AC1", "subnE": "\u2ACB", "subne": "\u228A", "subplus": "\u2ABF", "subrarr": "\u2979", "subset": "\u2282", "Subset": "\u22D0", "subseteq": "\u2286", "subseteqq": "\u2AC5", "SubsetEqual": "\u2286", "subsetneq": "\u228A", "subsetneqq": "\u2ACB", "subsim": "\u2AC7", "subsub": "\u2AD5", "subsup": "\u2AD3", "succapprox": "\u2AB8", "succ": "\u227B", "succcurlyeq": "\u227D", "Succeeds": "\u227B", "SucceedsEqual": "\u2AB0", "SucceedsSlantEqual": "\u227D", "SucceedsTilde": "\u227F", "succeq": "\u2AB0", "succnapprox": "\u2ABA", "succneqq": "\u2AB6", "succnsim": "\u22E9", "succsim": "\u227F", "SuchThat": "\u220B", "sum": "\u2211", "Sum": "\u2211", "sung": "\u266A", "sup1": "\u00B9", "sup2": "\u00B2", "sup3": "\u00B3", "sup": "\u2283", "Sup": "\u22D1", "supdot": "\u2ABE", "supdsub": "\u2AD8", "supE": "\u2AC6", "supe": "\u2287", "supedot": "\u2AC4", "Superset": "\u2283", "SupersetEqual": "\u2287", "suphsol": "\u27C9", "suphsub": "\u2AD7", "suplarr": "\u297B", "supmult": "\u2AC2", "supnE": "\u2ACC", "supne": "\u228B", "supplus": "\u2AC0", "supset": "\u2283", "Supset": "\u22D1", "supseteq": "\u2287", "supseteqq": "\u2AC6", "supsetneq": "\u228B", "supsetneqq": "\u2ACC", "supsim": "\u2AC8", "supsub": "\u2AD4", "supsup": "\u2AD6", "swarhk": "\u2926", "swarr": "\u2199", "swArr": "\u21D9", "swarrow": "\u2199", "swnwar": "\u292A", "szlig": "\u00DF", "Tab": "\t", "target": "\u2316", "Tau": "\u03A4", "tau": "\u03C4", "tbrk": "\u23B4", "Tcaron": "\u0164", "tcaron": "\u0165", "Tcedil": "\u0162", "tcedil": "\u0163", "Tcy": "\u0422", "tcy": "\u0442", "tdot": "\u20DB", "telrec": "\u2315", "Tfr": "\uD835\uDD17", "tfr": "\uD835\uDD31", "there4": "\u2234", "therefore": "\u2234", "Therefore": "\u2234", "Theta": "\u0398", "theta": "\u03B8", "thetasym": "\u03D1", "thetav": "\u03D1", "thickapprox": "\u2248", "thicksim": "\u223C", "ThickSpace": "\u205F\u200A", "ThinSpace": "\u2009", "thinsp": "\u2009", "thkap": "\u2248", "thksim": "\u223C", "THORN": "\u00DE", "thorn": "\u00FE", "tilde": "\u02DC", "Tilde": "\u223C", "TildeEqual": "\u2243", "TildeFullEqual": "\u2245", "TildeTilde": "\u2248", "timesbar": "\u2A31", "timesb": "\u22A0", "times": "\u00D7", "timesd": "\u2A30", "tint": "\u222D", "toea": "\u2928", "topbot": "\u2336", "topcir": "\u2AF1", "top": "\u22A4", "Topf": "\uD835\uDD4B", "topf": "\uD835\uDD65", "topfork": "\u2ADA", "tosa": "\u2929", "tprime": "\u2034", "trade": "\u2122", "TRADE": "\u2122", "triangle": "\u25B5", "triangledown": "\u25BF", "triangleleft": "\u25C3", "trianglelefteq": "\u22B4", "triangleq": "\u225C", "triangleright": "\u25B9", "trianglerighteq": "\u22B5", "tridot": "\u25EC", "trie": "\u225C", "triminus": "\u2A3A", "TripleDot": "\u20DB", "triplus": "\u2A39", "trisb": "\u29CD", "tritime": "\u2A3B", "trpezium": "\u23E2", "Tscr": "\uD835\uDCAF", "tscr": "\uD835\uDCC9", "TScy": "\u0426", "tscy": "\u0446", "TSHcy": "\u040B", "tshcy": "\u045B", "Tstrok": "\u0166", "tstrok": "\u0167", "twixt": "\u226C", "twoheadleftarrow": "\u219E", "twoheadrightarrow": "\u21A0", "Uacute": "\u00DA", "uacute": "\u00FA", "uarr": "\u2191", "Uarr": "\u219F", "uArr": "\u21D1", "Uarrocir": "\u2949", "Ubrcy": "\u040E", "ubrcy": "\u045E", "Ubreve": "\u016C", "ubreve": "\u016D", "Ucirc": "\u00DB", "ucirc": "\u00FB", "Ucy": "\u0423", "ucy": "\u0443", "udarr": "\u21C5", "Udblac": "\u0170", "udblac": "\u0171", "udhar": "\u296E", "ufisht": "\u297E", "Ufr": "\uD835\uDD18", "ufr": "\uD835\uDD32", "Ugrave": "\u00D9", "ugrave": "\u00F9", "uHar": "\u2963", "uharl": "\u21BF", "uharr": "\u21BE", "uhblk": "\u2580", "ulcorn": "\u231C", "ulcorner": "\u231C", "ulcrop": "\u230F", "ultri": "\u25F8", "Umacr": "\u016A", "umacr": "\u016B", "uml": "\u00A8", "UnderBar": "_", "UnderBrace": "\u23DF", "UnderBracket": "\u23B5", "UnderParenthesis": "\u23DD", "Union": "\u22C3", "UnionPlus": "\u228E", "Uogon": "\u0172", "uogon": "\u0173", "Uopf": "\uD835\uDD4C", "uopf": "\uD835\uDD66", "UpArrowBar": "\u2912", "uparrow": "\u2191", "UpArrow": "\u2191", "Uparrow": "\u21D1", "UpArrowDownArrow": "\u21C5", "updownarrow": "\u2195", "UpDownArrow": "\u2195", "Updownarrow": "\u21D5", "UpEquilibrium": "\u296E", "upharpoonleft": "\u21BF", "upharpoonright": "\u21BE", "uplus": "\u228E", "UpperLeftArrow": "\u2196", "UpperRightArrow": "\u2197", "upsi": "\u03C5", "Upsi": "\u03D2", "upsih": "\u03D2", "Upsilon": "\u03A5", "upsilon": "\u03C5", "UpTeeArrow": "\u21A5", "UpTee": "\u22A5", "upuparrows": "\u21C8", "urcorn": "\u231D", "urcorner": "\u231D", "urcrop": "\u230E", "Uring": "\u016E", "uring": "\u016F", "urtri": "\u25F9", "Uscr": "\uD835\uDCB0", "uscr": "\uD835\uDCCA", "utdot": "\u22F0", "Utilde": "\u0168", "utilde": "\u0169", "utri": "\u25B5", "utrif": "\u25B4", "uuarr": "\u21C8", "Uuml": "\u00DC", "uuml": "\u00FC", "uwangle": "\u29A7", "vangrt": "\u299C", "varepsilon": "\u03F5", "varkappa": "\u03F0", "varnothing": "\u2205", "varphi": "\u03D5", "varpi": "\u03D6", "varpropto": "\u221D", "varr": "\u2195", "vArr": "\u21D5", "varrho": "\u03F1", "varsigma": "\u03C2", "varsubsetneq": "\u228A\uFE00", "varsubsetneqq": "\u2ACB\uFE00", "varsupsetneq": "\u228B\uFE00", "varsupsetneqq": "\u2ACC\uFE00", "vartheta": "\u03D1", "vartriangleleft": "\u22B2", "vartriangleright": "\u22B3", "vBar": "\u2AE8", "Vbar": "\u2AEB", "vBarv": "\u2AE9", "Vcy": "\u0412", "vcy": "\u0432", "vdash": "\u22A2", "vDash": "\u22A8", "Vdash": "\u22A9", "VDash": "\u22AB", "Vdashl": "\u2AE6", "veebar": "\u22BB", "vee": "\u2228", "Vee": "\u22C1", "veeeq": "\u225A", "vellip": "\u22EE", "verbar": "|", "Verbar": "\u2016", "vert": "|", "Vert": "\u2016", "VerticalBar": "\u2223", "VerticalLine": "|", "VerticalSeparator": "\u2758", "VerticalTilde": "\u2240", "VeryThinSpace": "\u200A", "Vfr": "\uD835\uDD19", "vfr": "\uD835\uDD33", "vltri": "\u22B2", "vnsub": "\u2282\u20D2", "vnsup": "\u2283\u20D2", "Vopf": "\uD835\uDD4D", "vopf": "\uD835\uDD67", "vprop": "\u221D", "vrtri": "\u22B3", "Vscr": "\uD835\uDCB1", "vscr": "\uD835\uDCCB", "vsubnE": "\u2ACB\uFE00", "vsubne": "\u228A\uFE00", "vsupnE": "\u2ACC\uFE00", "vsupne": "\u228B\uFE00", "Vvdash": "\u22AA", "vzigzag": "\u299A", "Wcirc": "\u0174", "wcirc": "\u0175", "wedbar": "\u2A5F", "wedge": "\u2227", "Wedge": "\u22C0", "wedgeq": "\u2259", "weierp": "\u2118", "Wfr": "\uD835\uDD1A", "wfr": "\uD835\uDD34", "Wopf": "\uD835\uDD4E", "wopf": "\uD835\uDD68", "wp": "\u2118", "wr": "\u2240", "wreath": "\u2240", "Wscr": "\uD835\uDCB2", "wscr": "\uD835\uDCCC", "xcap": "\u22C2", "xcirc": "\u25EF", "xcup": "\u22C3", "xdtri": "\u25BD", "Xfr": "\uD835\uDD1B", "xfr": "\uD835\uDD35", "xharr": "\u27F7", "xhArr": "\u27FA", "Xi": "\u039E", "xi": "\u03BE", "xlarr": "\u27F5", "xlArr": "\u27F8", "xmap": "\u27FC", "xnis": "\u22FB", "xodot": "\u2A00", "Xopf": "\uD835\uDD4F", "xopf": "\uD835\uDD69", "xoplus": "\u2A01", "xotime": "\u2A02", "xrarr": "\u27F6", "xrArr": "\u27F9", "Xscr": "\uD835\uDCB3", "xscr": "\uD835\uDCCD", "xsqcup": "\u2A06", "xuplus": "\u2A04", "xutri": "\u25B3", "xvee": "\u22C1", "xwedge": "\u22C0", "Yacute": "\u00DD", "yacute": "\u00FD", "YAcy": "\u042F", "yacy": "\u044F", "Ycirc": "\u0176", "ycirc": "\u0177", "Ycy": "\u042B", "ycy": "\u044B", "yen": "\u00A5", "Yfr": "\uD835\uDD1C", "yfr": "\uD835\uDD36", "YIcy": "\u0407", "yicy": "\u0457", "Yopf": "\uD835\uDD50", "yopf": "\uD835\uDD6A", "Yscr": "\uD835\uDCB4", "yscr": "\uD835\uDCCE", "YUcy": "\u042E", "yucy": "\u044E", "yuml": "\u00FF", "Yuml": "\u0178", "Zacute": "\u0179", "zacute": "\u017A", "Zcaron": "\u017D", "zcaron": "\u017E", "Zcy": "\u0417", "zcy": "\u0437", "Zdot": "\u017B", "zdot": "\u017C", "zeetrf": "\u2128", "ZeroWidthSpace": "\u200B", "Zeta": "\u0396", "zeta": "\u03B6", "zfr": "\uD835\uDD37", "Zfr": "\u2128", "ZHcy": "\u0416", "zhcy": "\u0436", "zigrarr": "\u21DD", "zopf": "\uD835\uDD6B", "Zopf": "\u2124", "Zscr": "\uD835\uDCB5", "zscr": "\uD835\uDCCF", "zwj": "\u200D", "zwnj": "\u200C" }
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/maps/legacy.json b/assets/node_modules/dom-serializer/node_modules/entities/lib/maps/legacy.json
deleted file mode 100644
index 5f67784..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/maps/legacy.json
+++ /dev/null
@@ -1 +0,0 @@
-{ "Aacute": "\u00C1", "aacute": "\u00E1", "Acirc": "\u00C2", "acirc": "\u00E2", "acute": "\u00B4", "AElig": "\u00C6", "aelig": "\u00E6", "Agrave": "\u00C0", "agrave": "\u00E0", "amp": "&", "AMP": "&", "Aring": "\u00C5", "aring": "\u00E5", "Atilde": "\u00C3", "atilde": "\u00E3", "Auml": "\u00C4", "auml": "\u00E4", "brvbar": "\u00A6", "Ccedil": "\u00C7", "ccedil": "\u00E7", "cedil": "\u00B8", "cent": "\u00A2", "copy": "\u00A9", "COPY": "\u00A9", "curren": "\u00A4", "deg": "\u00B0", "divide": "\u00F7", "Eacute": "\u00C9", "eacute": "\u00E9", "Ecirc": "\u00CA", "ecirc": "\u00EA", "Egrave": "\u00C8", "egrave": "\u00E8", "ETH": "\u00D0", "eth": "\u00F0", "Euml": "\u00CB", "euml": "\u00EB", "frac12": "\u00BD", "frac14": "\u00BC", "frac34": "\u00BE", "gt": ">", "GT": ">", "Iacute": "\u00CD", "iacute": "\u00ED", "Icirc": "\u00CE", "icirc": "\u00EE", "iexcl": "\u00A1", "Igrave": "\u00CC", "igrave": "\u00EC", "iquest": "\u00BF", "Iuml": "\u00CF", "iuml": "\u00EF", "laquo": "\u00AB", "lt": "<", "LT": "<", "macr": "\u00AF", "micro": "\u00B5", "middot": "\u00B7", "nbsp": "\u00A0", "not": "\u00AC", "Ntilde": "\u00D1", "ntilde": "\u00F1", "Oacute": "\u00D3", "oacute": "\u00F3", "Ocirc": "\u00D4", "ocirc": "\u00F4", "Ograve": "\u00D2", "ograve": "\u00F2", "ordf": "\u00AA", "ordm": "\u00BA", "Oslash": "\u00D8", "oslash": "\u00F8", "Otilde": "\u00D5", "otilde": "\u00F5", "Ouml": "\u00D6", "ouml": "\u00F6", "para": "\u00B6", "plusmn": "\u00B1", "pound": "\u00A3", "quot": "\"", "QUOT": "\"", "raquo": "\u00BB", "reg": "\u00AE", "REG": "\u00AE", "sect": "\u00A7", "shy": "\u00AD", "sup1": "\u00B9", "sup2": "\u00B2", "sup3": "\u00B3", "szlig": "\u00DF", "THORN": "\u00DE", "thorn": "\u00FE", "times": "\u00D7", "Uacute": "\u00DA", "uacute": "\u00FA", "Ucirc": "\u00DB", "ucirc": "\u00FB", "Ugrave": "\u00D9", "ugrave": "\u00F9", "uml": "\u00A8", "Uuml": "\u00DC", "uuml": "\u00FC", "Yacute": "\u00DD", "yacute": "\u00FD", "yen": "\u00A5", "yuml": "\u00FF" }
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/maps/xml.json b/assets/node_modules/dom-serializer/node_modules/entities/lib/maps/xml.json
deleted file mode 100644
index e9612c7..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/maps/xml.json
+++ /dev/null
@@ -1 +0,0 @@
-{ "amp": "&", "apos": "'", "gt": ">", "lt": "<", "quot": "\"" }
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode.d.ts b/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode.d.ts
deleted file mode 100644
index 0988b73..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export declare const decodeXML: (str: string) => string;
-export declare const decodeHTMLStrict: (str: string) => string;
-export interface MapType {
- [key: string]: string;
-}
-export declare const decodeHTML: (str: string) => string;
-//# sourceMappingURL=decode.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode.d.ts.map b/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode.d.ts.map
deleted file mode 100644
index 6ece098..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../src/decode.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,yBAA2B,CAAC;AAClD,eAAO,MAAM,gBAAgB,yBAA8B,CAAC;AAE5D,MAAM,WAAW,OAAO;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAeD,eAAO,MAAM,UAAU,yBA4BnB,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode.js b/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode.js
deleted file mode 100644
index d7f243a..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode.js
+++ /dev/null
@@ -1,54 +0,0 @@
-"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var entities_json_1 = __importDefault(require("../maps/entities.json"));
-var legacy_json_1 = __importDefault(require("../maps/legacy.json"));
-var xml_json_1 = __importDefault(require("../maps/xml.json"));
-var decode_codepoint_1 = __importDefault(require("./decode_codepoint"));
-exports.decodeXML = getStrictDecoder(xml_json_1.default);
-exports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);
-function getStrictDecoder(map) {
- var keys = Object.keys(map).join("|");
- var replace = getReplacer(map);
- keys += "|#[xX][\\da-fA-F]+|#\\d+";
- var re = new RegExp("&(?:" + keys + ");", "g");
- return function (str) { return String(str).replace(re, replace); };
-}
-var sorter = function (a, b) { return (a < b ? 1 : -1); };
-exports.decodeHTML = (function () {
- var legacy = Object.keys(legacy_json_1.default).sort(sorter);
- var keys = Object.keys(entities_json_1.default).sort(sorter);
- for (var i = 0, j = 0; i < keys.length; i++) {
- if (legacy[j] === keys[i]) {
- keys[i] += ";?";
- j++;
- }
- else {
- keys[i] += ";";
- }
- }
- var re = new RegExp("&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g");
- var replace = getReplacer(entities_json_1.default);
- function replacer(str) {
- if (str.substr(-1) !== ";")
- str += ";";
- return replace(str);
- }
- //TODO consider creating a merged map
- return function (str) {
- return String(str).replace(re, replacer);
- };
-})();
-function getReplacer(map) {
- return function replace(str) {
- if (str.charAt(1) === "#") {
- if (str.charAt(2) === "X" || str.charAt(2) === "x") {
- return decode_codepoint_1.default(parseInt(str.substr(3), 16));
- }
- return decode_codepoint_1.default(parseInt(str.substr(2), 10));
- }
- return map[str.slice(1, -1)];
- };
-}
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode_codepoint.d.ts b/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode_codepoint.d.ts
deleted file mode 100644
index 6b72eaa..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode_codepoint.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export default function decodeCodePoint(codePoint: number): string;
-//# sourceMappingURL=decode_codepoint.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode_codepoint.d.ts.map b/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode_codepoint.d.ts.map
deleted file mode 100644
index 8a47af4..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode_codepoint.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"decode_codepoint.d.ts","sourceRoot":"","sources":["../../src/decode_codepoint.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,SAAS,EAAE,MAAM,UAoBxD"} \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode_codepoint.js b/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode_codepoint.js
deleted file mode 100644
index 855a1b3..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/decode_codepoint.js
+++ /dev/null
@@ -1,25 +0,0 @@
-"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var decode_json_1 = __importDefault(require("../maps/decode.json"));
-// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119
-function decodeCodePoint(codePoint) {
- if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
- return "\uFFFD";
- }
- if (codePoint in decode_json_1.default) {
- // @ts-ignore
- codePoint = decode_json_1.default[codePoint];
- }
- var output = "";
- if (codePoint > 0xffff) {
- codePoint -= 0x10000;
- output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
- codePoint = 0xdc00 | (codePoint & 0x3ff);
- }
- output += String.fromCharCode(codePoint);
- return output;
-}
-exports.default = decodeCodePoint;
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/encode.d.ts b/assets/node_modules/dom-serializer/node_modules/entities/lib/src/encode.d.ts
deleted file mode 100644
index 613c30e..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/encode.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export declare const encodeXML: (data: string) => string;
-export declare const encodeHTML: (data: string) => string;
-export declare function escape(data: string): string;
-//# sourceMappingURL=encode.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/encode.d.ts.map b/assets/node_modules/dom-serializer/node_modules/entities/lib/src/encode.d.ts.map
deleted file mode 100644
index 2851e21..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/encode.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../src/encode.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,0BAAsC,CAAC;AAO7D,eAAO,MAAM,UAAU,0BAAwC,CAAC;AA4DhE,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,UAKlC"} \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/encode.js b/assets/node_modules/dom-serializer/node_modules/entities/lib/src/encode.js
deleted file mode 100644
index e7918c1..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/encode.js
+++ /dev/null
@@ -1,67 +0,0 @@
-"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var xml_json_1 = __importDefault(require("../maps/xml.json"));
-var inverseXML = getInverseObj(xml_json_1.default);
-var xmlReplacer = getInverseReplacer(inverseXML);
-exports.encodeXML = getInverse(inverseXML, xmlReplacer);
-var entities_json_1 = __importDefault(require("../maps/entities.json"));
-var inverseHTML = getInverseObj(entities_json_1.default);
-var htmlReplacer = getInverseReplacer(inverseHTML);
-exports.encodeHTML = getInverse(inverseHTML, htmlReplacer);
-function getInverseObj(obj) {
- return Object.keys(obj)
- .sort()
- .reduce(function (inverse, name) {
- inverse[obj[name]] = "&" + name + ";";
- return inverse;
- }, {});
-}
-function getInverseReplacer(inverse) {
- var single = [];
- var multiple = [];
- Object.keys(inverse).forEach(function (k) {
- return k.length === 1
- ? // Add value to single array
- single.push("\\" + k)
- : // Add value to multiple array
- multiple.push(k);
- });
- //TODO add ranges
- multiple.unshift("[" + single.join("") + "]");
- return new RegExp(multiple.join("|"), "g");
-}
-var reNonASCII = /[^\0-\x7F]/g;
-var reAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
-function singleCharReplacer(c) {
- return "&#x" + c
- .charCodeAt(0)
- .toString(16)
- .toUpperCase() + ";";
-}
-// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
-function astralReplacer(c, _) {
- // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
- var high = c.charCodeAt(0);
- var low = c.charCodeAt(1);
- var codePoint = (high - 0xd800) * 0x400 + low - 0xdc00 + 0x10000;
- return "&#x" + codePoint.toString(16).toUpperCase() + ";";
-}
-function getInverse(inverse, re) {
- return function (data) {
- return data
- .replace(re, function (name) { return inverse[name]; })
- .replace(reAstralSymbols, astralReplacer)
- .replace(reNonASCII, singleCharReplacer);
- };
-}
-var reXmlChars = getInverseReplacer(inverseXML);
-function escape(data) {
- return data
- .replace(reXmlChars, singleCharReplacer)
- .replace(reAstralSymbols, astralReplacer)
- .replace(reNonASCII, singleCharReplacer);
-}
-exports.escape = escape;
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/index.d.ts b/assets/node_modules/dom-serializer/node_modules/entities/lib/src/index.d.ts
deleted file mode 100644
index 90f6884..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/index.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export declare function decode(data: string, level?: number): string;
-export declare function decodeStrict(data: string, level?: number): string;
-export declare function encode(data: string, level?: number): string;
-export { encodeXML, encodeHTML, escape, encodeHTML as encodeHTML4, encodeHTML as encodeHTML5 } from "./encode";
-export { decodeXML, decodeHTML, decodeHTMLStrict, decodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict } from "./decode";
-//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/index.d.ts.map b/assets/node_modules/dom-serializer/node_modules/entities/lib/src/index.d.ts.map
deleted file mode 100644
index de035b7..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/index.d.ts.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjE;AAGD,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,OAAO,EACH,SAAS,EACT,UAAU,EACV,MAAM,EAEN,UAAU,IAAI,WAAW,EACzB,UAAU,IAAI,WAAW,EAC5B,MAAM,UAAU,CAAC;AAElB,OAAO,EACH,SAAS,EACT,UAAU,EACV,gBAAgB,EAEhB,UAAU,IAAI,WAAW,EACzB,UAAU,IAAI,WAAW,EACzB,gBAAgB,IAAI,iBAAiB,EACrC,gBAAgB,IAAI,iBAAiB,EACrC,SAAS,IAAI,eAAe,EAC/B,MAAM,UAAU,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/index.js b/assets/node_modules/dom-serializer/node_modules/entities/lib/src/index.js
deleted file mode 100644
index cc71c96..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/lib/src/index.js
+++ /dev/null
@@ -1,36 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-var decode_1 = require("./decode");
-var encode_1 = require("./encode");
-// Note: Deprecated
-function decode(data, level) {
- return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);
-}
-exports.decode = decode;
-// Note: Deprecated
-function decodeStrict(data, level) {
- return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);
-}
-exports.decodeStrict = decodeStrict;
-// Note: Deprecated
-function encode(data, level) {
- return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);
-}
-exports.encode = encode;
-var encode_2 = require("./encode");
-exports.encodeXML = encode_2.encodeXML;
-exports.encodeHTML = encode_2.encodeHTML;
-exports.escape = encode_2.escape;
-// Legacy aliases
-exports.encodeHTML4 = encode_2.encodeHTML;
-exports.encodeHTML5 = encode_2.encodeHTML;
-var decode_2 = require("./decode");
-exports.decodeXML = decode_2.decodeXML;
-exports.decodeHTML = decode_2.decodeHTML;
-exports.decodeHTMLStrict = decode_2.decodeHTMLStrict;
-// Legacy aliases
-exports.decodeHTML4 = decode_2.decodeHTML;
-exports.decodeHTML5 = decode_2.decodeHTML;
-exports.decodeHTML4Strict = decode_2.decodeHTMLStrict;
-exports.decodeHTML5Strict = decode_2.decodeHTMLStrict;
-exports.decodeXMLStrict = decode_2.decodeXML;
diff --git a/assets/node_modules/dom-serializer/node_modules/entities/package.json b/assets/node_modules/dom-serializer/node_modules/entities/package.json
deleted file mode 100644
index 64d12a3..0000000
--- a/assets/node_modules/dom-serializer/node_modules/entities/package.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "name": "entities",
- "version": "2.0.0",
- "description": "Encode & decode XML/HTML entities with ease",
- "author": "Felix Boehm <me@feedic.com>",
- "keywords": [
- "html",
- "xml",
- "entity",
- "decoding",
- "encoding"
- ],
- "main": "lib/index.js",
- "directories": {
- "test": "test"
- },
- "files": [
- "lib/**/*"
- ],
- "devDependencies": {
- "@types/mocha": "^5.2.7",
- "@types/node": "^12.6.8",
- "@typescript-eslint/eslint-plugin": "^1.12.0",
- "@typescript-eslint/parser": "^1.12.0",
- "coveralls": "*",
- "eslint": "^6.0.1",
- "eslint-config-prettier": "^6.0.0",
- "mocha": "^6.1.4",
- "mocha-lcov-reporter": "*",
- "nyc": "^14.1.1",
- "prettier": "^1.18.2",
- "source-map-support": "^0.5.12",
- "ts-node": "^8.3.0",
- "typescript": "^3.5.3"
- },
- "scripts": {
- "test": "nyc mocha && npm run eslint",
- "coverage": "nyc report --reporter=text-lcov | coveralls",
- "eslint": "eslint '**/*.ts'",
- "format": "prettier --write **/*.{ts,md}",
- "build": "tsc",
- "prepare": "npm run build"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/fb55/entities.git"
- },
- "license": "BSD-2-Clause",
- "nyc": {
- "extension": [
- ".ts",
- ".tsx"
- ],
- "exclude": [
- "**/*.d.ts"
- ],
- "reporter": [
- "html",
- "text"
- ],
- "all": true
- },
- "prettier": {
- "tabWidth": 4
- }
-}
diff --git a/assets/node_modules/dom-serializer/package.json b/assets/node_modules/dom-serializer/package.json
deleted file mode 100644
index 0ee1437..0000000
--- a/assets/node_modules/dom-serializer/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "dom-serializer",
- "version": "0.2.2",
- "description": "render dom nodes to string",
- "author": "Felix Boehm <me@feedic.com>",
- "keywords": [
- "html",
- "xml",
- "render"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/cheeriojs/dom-renderer.git"
- },
- "main": "./index.js",
- "files": [
- "index.js",
- "index.d.ts",
- "foreignNames.json"
- ],
- "dependencies": {
- "domelementtype": "^2.0.1",
- "entities": "^2.0.0"
- },
- "devDependencies": {
- "cheerio": "^1.0.0-rc.2",
- "expect.js": "~0.3.1",
- "htmlparser2": "^3.10.0",
- "lodash": "^4.17.11",
- "mocha": "^6.2.0",
- "xyz": "^3.0.0"
- },
- "scripts": {
- "test": "mocha test.js"
- },
- "prettier": {
- "singleQuote": true
- },
- "license": "MIT"
-}
diff --git a/assets/node_modules/domelementtype/LICENSE b/assets/node_modules/domelementtype/LICENSE
deleted file mode 100644
index c464f86..0000000
--- a/assets/node_modules/domelementtype/LICENSE
+++ /dev/null
@@ -1,11 +0,0 @@
-Copyright (c) Felix Böhm
-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.
-
-THIS 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,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/assets/node_modules/domelementtype/index.js b/assets/node_modules/domelementtype/index.js
deleted file mode 100644
index ab15b0f..0000000
--- a/assets/node_modules/domelementtype/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-//Types of elements found in the DOM
-module.exports = {
- Text: "text", //Text
- Directive: "directive", //<? ... ?>
- Comment: "comment", //<!-- ... -->
- Script: "script", //<script> tags
- Style: "style", //<style> tags
- Tag: "tag", //Any tag
- CDATA: "cdata", //<![CDATA[ ... ]]>
- Doctype: "doctype",
-
- isTag: function(elem){
- return elem.type === "tag" || elem.type === "script" || elem.type === "style";
- }
-};
diff --git a/assets/node_modules/domelementtype/package.json b/assets/node_modules/domelementtype/package.json
deleted file mode 100644
index 21f3c23..0000000
--- a/assets/node_modules/domelementtype/package.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "domelementtype",
- "version": "1.3.1",
- "description": "all the types of nodes in htmlparser2's dom",
- "main": "index.js",
- "repository": {
- "type": "git",
- "url": "git://github.com/fb55/domelementtype.git"
- },
- "keywords": [
- "dom",
- "htmlparser2"
- ],
- "author": "Felix Boehm <me@feedic.com>",
- "license": "BSD-2-Clause"
-}
diff --git a/assets/node_modules/domelementtype/readme.md b/assets/node_modules/domelementtype/readme.md
deleted file mode 100644
index cbb43db..0000000
--- a/assets/node_modules/domelementtype/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-all the types of nodes in htmlparser2's dom
diff --git a/assets/node_modules/domhandler/.travis.yml b/assets/node_modules/domhandler/.travis.yml
deleted file mode 100644
index 5d75cce..0000000
--- a/assets/node_modules/domhandler/.travis.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-before_install:
- - '[ "${TRAVIS_NODE_VERSION}" != "0.8" ] || npm install -g npm@1.4.28'
- - npm install -g npm@latest
-language: node_js
-node_js:
- - 8
diff --git a/assets/node_modules/domhandler/LICENSE b/assets/node_modules/domhandler/LICENSE
deleted file mode 100644
index c464f86..0000000
--- a/assets/node_modules/domhandler/LICENSE
+++ /dev/null
@@ -1,11 +0,0 @@
-Copyright (c) Felix Böhm
-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.
-
-THIS 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,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/assets/node_modules/domhandler/index.js b/assets/node_modules/domhandler/index.js
deleted file mode 100644
index e78efc3..0000000
--- a/assets/node_modules/domhandler/index.js
+++ /dev/null
@@ -1,217 +0,0 @@
-var ElementType = require("domelementtype");
-
-var re_whitespace = /\s+/g;
-var NodePrototype = require("./lib/node");
-var ElementPrototype = require("./lib/element");
-
-function DomHandler(callback, options, elementCB){
- if(typeof callback === "object"){
- elementCB = options;
- options = callback;
- callback = null;
- } else if(typeof options === "function"){
- elementCB = options;
- options = defaultOpts;
- }
- this._callback = callback;
- this._options = options || defaultOpts;
- this._elementCB = elementCB;
- this.dom = [];
- this._done = false;
- this._tagStack = [];
- this._parser = this._parser || null;
-}
-
-//default options
-var defaultOpts = {
- normalizeWhitespace: false, //Replace all whitespace with single spaces
- withStartIndices: false, //Add startIndex properties to nodes
- withEndIndices: false, //Add endIndex properties to nodes
-};
-
-DomHandler.prototype.onparserinit = function(parser){
- this._parser = parser;
-};
-
-//Resets the handler back to starting state
-DomHandler.prototype.onreset = function(){
- DomHandler.call(this, this._callback, this._options, this._elementCB);
-};
-
-//Signals the handler that parsing is done
-DomHandler.prototype.onend = function(){
- if(this._done) return;
- this._done = true;
- this._parser = null;
- this._handleCallback(null);
-};
-
-DomHandler.prototype._handleCallback =
-DomHandler.prototype.onerror = function(error){
- if(typeof this._callback === "function"){
- this._callback(error, this.dom);
- } else {
- if(error) throw error;
- }
-};
-
-DomHandler.prototype.onclosetag = function(){
- //if(this._tagStack.pop().name !== name) this._handleCallback(Error("Tagname didn't match!"));
-
- var elem = this._tagStack.pop();
-
- if(this._options.withEndIndices && elem){
- elem.endIndex = this._parser.endIndex;
- }
-
- if(this._elementCB) this._elementCB(elem);
-};
-
-DomHandler.prototype._createDomElement = function(properties){
- if (!this._options.withDomLvl1) return properties;
-
- var element;
- if (properties.type === "tag") {
- element = Object.create(ElementPrototype);
- } else {
- element = Object.create(NodePrototype);
- }
-
- for (var key in properties) {
- if (properties.hasOwnProperty(key)) {
- element[key] = properties[key];
- }
- }
-
- return element;
-};
-
-DomHandler.prototype._addDomElement = function(element){
- var parent = this._tagStack[this._tagStack.length - 1];
- var siblings = parent ? parent.children : this.dom;
- var previousSibling = siblings[siblings.length - 1];
-
- element.next = null;
-
- if(this._options.withStartIndices){
- element.startIndex = this._parser.startIndex;
- }
- if(this._options.withEndIndices){
- element.endIndex = this._parser.endIndex;
- }
-
- if(previousSibling){
- element.prev = previousSibling;
- previousSibling.next = element;
- } else {
- element.prev = null;
- }
-
- siblings.push(element);
- element.parent = parent || null;
-};
-
-DomHandler.prototype.onopentag = function(name, attribs){
- var properties = {
- type: name === "script" ? ElementType.Script : name === "style" ? ElementType.Style : ElementType.Tag,
- name: name,
- attribs: attribs,
- children: []
- };
-
- var element = this._createDomElement(properties);
-
- this._addDomElement(element);
-
- this._tagStack.push(element);
-};
-
-DomHandler.prototype.ontext = function(data){
- //the ignoreWhitespace is officially dropped, but for now,
- //it's an alias for normalizeWhitespace
- var normalize = this._options.normalizeWhitespace || this._options.ignoreWhitespace;
-
- var lastTag;
-
- if(!this._tagStack.length && this.dom.length && (lastTag = this.dom[this.dom.length-1]).type === ElementType.Text){
- if(normalize){
- lastTag.data = (lastTag.data + data).replace(re_whitespace, " ");
- } else {
- lastTag.data += data;
- }
- } else {
- if(
- this._tagStack.length &&
- (lastTag = this._tagStack[this._tagStack.length - 1]) &&
- (lastTag = lastTag.children[lastTag.children.length - 1]) &&
- lastTag.type === ElementType.Text
- ){
- if(normalize){
- lastTag.data = (lastTag.data + data).replace(re_whitespace, " ");
- } else {
- lastTag.data += data;
- }
- } else {
- if(normalize){
- data = data.replace(re_whitespace, " ");
- }
-
- var element = this._createDomElement({
- data: data,
- type: ElementType.Text
- });
-
- this._addDomElement(element);
- }
- }
-};
-
-DomHandler.prototype.oncomment = function(data){
- var lastTag = this._tagStack[this._tagStack.length - 1];
-
- if(lastTag && lastTag.type === ElementType.Comment){
- lastTag.data += data;
- return;
- }
-
- var properties = {
- data: data,
- type: ElementType.Comment
- };
-
- var element = this._createDomElement(properties);
-
- this._addDomElement(element);
- this._tagStack.push(element);
-};
-
-DomHandler.prototype.oncdatastart = function(){
- var properties = {
- children: [{
- data: "",
- type: ElementType.Text
- }],
- type: ElementType.CDATA
- };
-
- var element = this._createDomElement(properties);
-
- this._addDomElement(element);
- this._tagStack.push(element);
-};
-
-DomHandler.prototype.oncommentend = DomHandler.prototype.oncdataend = function(){
- this._tagStack.pop();
-};
-
-DomHandler.prototype.onprocessinginstruction = function(name, data){
- var element = this._createDomElement({
- name: name,
- data: data,
- type: ElementType.Directive
- });
-
- this._addDomElement(element);
-};
-
-module.exports = DomHandler;
diff --git a/assets/node_modules/domhandler/lib/element.js b/assets/node_modules/domhandler/lib/element.js
deleted file mode 100644
index e147215..0000000
--- a/assets/node_modules/domhandler/lib/element.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// DOM-Level-1-compliant structure
-var NodePrototype = require('./node');
-var ElementPrototype = module.exports = Object.create(NodePrototype);
-
-var domLvl1 = {
- tagName: "name"
-};
-
-Object.keys(domLvl1).forEach(function(key) {
- var shorthand = domLvl1[key];
- Object.defineProperty(ElementPrototype, key, {
- get: function() {
- return this[shorthand] || null;
- },
- set: function(val) {
- this[shorthand] = val;
- return val;
- }
- });
-});
diff --git a/assets/node_modules/domhandler/lib/node.js b/assets/node_modules/domhandler/lib/node.js
deleted file mode 100644
index 7a36a9a..0000000
--- a/assets/node_modules/domhandler/lib/node.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// This object will be used as the prototype for Nodes when creating a
-// DOM-Level-1-compliant structure.
-var NodePrototype = module.exports = {
- get firstChild() {
- var children = this.children;
- return children && children[0] || null;
- },
- get lastChild() {
- var children = this.children;
- return children && children[children.length - 1] || null;
- },
- get nodeType() {
- return nodeTypes[this.type] || nodeTypes.element;
- }
-};
-
-var domLvl1 = {
- tagName: "name",
- childNodes: "children",
- parentNode: "parent",
- previousSibling: "prev",
- nextSibling: "next",
- nodeValue: "data"
-};
-
-var nodeTypes = {
- element: 1,
- text: 3,
- cdata: 4,
- comment: 8
-};
-
-Object.keys(domLvl1).forEach(function(key) {
- var shorthand = domLvl1[key];
- Object.defineProperty(NodePrototype, key, {
- get: function() {
- return this[shorthand] || null;
- },
- set: function(val) {
- this[shorthand] = val;
- return val;
- }
- });
-});
diff --git a/assets/node_modules/domhandler/package.json b/assets/node_modules/domhandler/package.json
deleted file mode 100644
index 55aab99..0000000
--- a/assets/node_modules/domhandler/package.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "name": "domhandler",
- "version": "2.4.2",
- "description": "handler for htmlparser2 that turns pages into a dom",
- "main": "index.js",
- "directories": {
- "test": "tests"
- },
- "scripts": {
- "test": "mocha -R list && jshint index.js test/"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/fb55/DomHandler.git"
- },
- "keywords": [
- "dom",
- "htmlparser2"
- ],
- "dependencies": {
- "domelementtype": "1"
- },
- "devDependencies": {
- "htmlparser2": "^3.9.0",
- "mocha": "^3.0.2",
- "jshint": "^2.9.1"
- },
- "author": "Felix Boehm <me@feedic.com>",
- "license": "BSD-2-Clause",
- "jshintConfig": {
- "quotmark": "double",
- "trailing": true,
- "unused": true,
- "undef": true,
- "node": true,
- "proto": true,
- "globals": {
- "it": true
- }
- }
-}
diff --git a/assets/node_modules/domhandler/readme.md b/assets/node_modules/domhandler/readme.md
deleted file mode 100644
index edff2ee..0000000
--- a/assets/node_modules/domhandler/readme.md
+++ /dev/null
@@ -1,116 +0,0 @@
-# domhandler [![Build Status](https://travis-ci.org/fb55/domhandler.svg?branch=master)](https://travis-ci.org/fb55/domhandler)
-
-The DOM handler (formally known as DefaultHandler) creates a tree containing all nodes of a page. The tree may be manipulated using the [domutils](https://github.com/fb55/domutils) library.
-
-## Usage
-```javascript
-var handler = new DomHandler([ <func> callback(err, dom), ] [ <obj> options ]);
-// var parser = new Parser(handler[, options]);
-```
-
-Available options are described below.
-
-## Example
-```javascript
-var htmlparser = require("htmlparser2");
-var rawHtml = "Xyz <script language= javascript>var foo = '<<bar>>';< / script><!--<!-- Waah! -- -->";
-var handler = new htmlparser.DomHandler(function (error, dom) {
- if (error)
- [...do something for errors...]
- else
- [...parsing done, do something...]
- console.log(dom);
-});
-var parser = new htmlparser.Parser(handler);
-parser.write(rawHtml);
-parser.end();
-```
-
-Output:
-
-```javascript
-[{
- data: 'Xyz ',
- type: 'text'
-}, {
- type: 'script',
- name: 'script',
- attribs: {
- language: 'javascript'
- },
- children: [{
- data: 'var foo = \'<bar>\';<',
- type: 'text'
- }]
-}, {
- data: '<!-- Waah! -- ',
- type: 'comment'
-}]
-```
-
-## Option: normalizeWhitespace
-Indicates whether the whitespace in text nodes should be normalized (= all whitespace should be replaced with single spaces). The default value is "false".
-
-The following HTML will be used:
-
-```html
-<font>
- <br>this is the text
-<font>
-```
-
-### Example: true
-
-```javascript
-[{
- type: 'tag',
- name: 'font',
- children: [{
- data: ' ',
- type: 'text'
- }, {
- type: 'tag',
- name: 'br'
- }, {
- data: 'this is the text ',
- type: 'text'
- }, {
- type: 'tag',
- name: 'font'
- }]
-}]
-```
-
-### Example: false
-
-```javascript
-[{
- type: 'tag',
- name: 'font',
- children: [{
- data: '\n\t',
- type: 'text'
- }, {
- type: 'tag',
- name: 'br'
- }, {
- data: 'this is the text\n',
- type: 'text'
- }, {
- type: 'tag',
- name: 'font'
- }]
-}]
-```
-
-## Option: withDomLvl1
-
-Adds DOM level 1 properties to all elements.
-
-<!-- TODO: description -->
-
-## Option: withStartIndices
-Indicates whether a `startIndex` property will be added to nodes. When the parser is used in a non-streaming fashion, `startIndex` is an integer indicating the position of the start of the node in the document. The default value is "false".
-
-## Option: withEndIndices
-Indicates whether a `endIndex` property will be added to nodes. When the parser is used in a non-streaming fashion, `endIndex` is an integer indicating the position of the end of the node in the document. The default value is "false".
diff --git a/assets/node_modules/domhandler/test/cases/01-basic.json b/assets/node_modules/domhandler/test/cases/01-basic.json
deleted file mode 100644
index 61759fd..0000000
--- a/assets/node_modules/domhandler/test/cases/01-basic.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "name": "Basic test",
- "options": {},
- "html": "<!DOCTYPE html><html><title>The Title</title><body>Hello world</body></html>",
- "expected": [
- {
- "name": "!doctype",
- "data": "!DOCTYPE html",
- "type": "directive"
- },
- {
- "type": "tag",
- "name": "html",
- "attribs": {},
- "parent": null,
- "children": [
- {
- "type": "tag",
- "name": "title",
- "attribs": {},
- "parent": {
- "type": "tag",
- "name": "html",
- "attribs": {}
- },
- "children": [
- {
- "data": "The Title",
- "type": "text",
- "parent": {
- "type": "tag",
- "name": "title",
- "attribs": {}
- }
- }
- ]
- },
- {
- "type": "tag",
- "name": "body",
- "attribs": {},
- "children": [
- {
- "data": "Hello world",
- "type": "text"
- }
- ],
- "prev": {
- "type": "tag",
- "name": "title",
- "attribs": {}
- }
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/02-single_tag_1.json b/assets/node_modules/domhandler/test/cases/02-single_tag_1.json
deleted file mode 100644
index 51ff845..0000000
--- a/assets/node_modules/domhandler/test/cases/02-single_tag_1.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "Single Tag 1",
- "options": {},
- "html": "<br>text</br>",
- "expected": [
- {
- "type": "tag",
- "name": "br",
- "attribs": {}
- },
- {
- "data": "text",
- "type": "text"
- },
- {
- "type": "tag",
- "name": "br",
- "attribs": {}
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/03-single_tag_2.json b/assets/node_modules/domhandler/test/cases/03-single_tag_2.json
deleted file mode 100644
index 1c56dc9..0000000
--- a/assets/node_modules/domhandler/test/cases/03-single_tag_2.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "Single Tag 2",
- "options": {},
- "html": "<br>text<br>",
- "expected": [
- {
- "type": "tag",
- "name": "br",
- "attribs": {}
- },
- {
- "data": "text",
- "type": "text"
- },
- {
- "type": "tag",
- "name": "br",
- "attribs": {}
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/04-unescaped_in_script.json b/assets/node_modules/domhandler/test/cases/04-unescaped_in_script.json
deleted file mode 100644
index f31f5fa..0000000
--- a/assets/node_modules/domhandler/test/cases/04-unescaped_in_script.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "Unescaped chars in script",
- "options": {},
- "html": "<head><script language=\"Javascript\">var foo = \"<bar>\"; alert(2 > foo); var baz = 10 << 2; var zip = 10 >> 1; var yap = \"<<>>>><<\";</script></head>",
- "expected": [
- {
- "type": "tag",
- "name": "head",
- "attribs": {},
- "children": [
- {
- "type": "script",
- "name": "script",
- "attribs": {
- "language": "Javascript"
- },
- "children": [
- {
- "data": "var foo = \"<bar>\"; alert(2 > foo); var baz = 10 << 2; var zip = 10 >> 1; var yap = \"<<>>>><<\";",
- "type": "text"
- }
- ]
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/05-tags_in_comment.json b/assets/node_modules/domhandler/test/cases/05-tags_in_comment.json
deleted file mode 100644
index 2d22d9e..0000000
--- a/assets/node_modules/domhandler/test/cases/05-tags_in_comment.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "Special char in comment",
- "options": {},
- "html": "<head><!-- commented out tags <title>Test</title>--></head>",
- "expected": [
- {
- "type": "tag",
- "name": "head",
- "attribs": {},
- "children": [
- {
- "data": " commented out tags <title>Test</title>",
- "type": "comment"
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/06-comment_in_script.json b/assets/node_modules/domhandler/test/cases/06-comment_in_script.json
deleted file mode 100644
index 9a21cda..0000000
--- a/assets/node_modules/domhandler/test/cases/06-comment_in_script.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "Script source in comment",
- "options": {},
- "html": "<script><!--var foo = 1;--></script>",
- "expected": [
- {
- "type": "script",
- "name": "script",
- "attribs": {},
- "children": [
- {
- "data": "<!--var foo = 1;-->",
- "type": "text"
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/07-unescaped_in_style.json b/assets/node_modules/domhandler/test/cases/07-unescaped_in_style.json
deleted file mode 100644
index 77438fd..0000000
--- a/assets/node_modules/domhandler/test/cases/07-unescaped_in_style.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Unescaped chars in style",
- "options": {},
- "html": "<style type=\"text/css\">\n body > p\n\t{ font-weight: bold; }</style>",
- "expected": [
- {
- "type": "style",
- "name": "style",
- "attribs": {
- "type": "text/css"
- },
- "children": [
- {
- "data": "\n body > p\n\t{ font-weight: bold; }",
- "type": "text"
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json b/assets/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json
deleted file mode 100644
index 5c2492e..0000000
--- a/assets/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Extra spaces in tag",
- "options": {},
- "html": "<font\t\n size='14' \n>the text</\t\nfont\t \n>",
- "expected": [
- {
- "type": "tag",
- "name": "font",
- "attribs": {
- "size": "14"
- },
- "children": [
- {
- "data": "the text",
- "type": "text"
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/09-unquoted_attrib.json b/assets/node_modules/domhandler/test/cases/09-unquoted_attrib.json
deleted file mode 100644
index 543ccee..0000000
--- a/assets/node_modules/domhandler/test/cases/09-unquoted_attrib.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Unquoted attributes",
- "options": {},
- "html": "<font size= 14>the text</font>",
- "expected": [
- {
- "type": "tag",
- "name": "font",
- "attribs": {
- "size": "14"
- },
- "children": [
- {
- "data": "the text",
- "type": "text"
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/10-singular_attribute.json b/assets/node_modules/domhandler/test/cases/10-singular_attribute.json
deleted file mode 100644
index 544636e..0000000
--- a/assets/node_modules/domhandler/test/cases/10-singular_attribute.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "Singular attribute",
- "options": {},
- "html": "<option value='foo' selected>",
- "expected": [
- {
- "type": "tag",
- "name": "option",
- "attribs": {
- "value": "foo",
- "selected": ""
- }
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/11-text_outside_tags.json b/assets/node_modules/domhandler/test/cases/11-text_outside_tags.json
deleted file mode 100644
index d328572..0000000
--- a/assets/node_modules/domhandler/test/cases/11-text_outside_tags.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "Text outside tags",
- "options": {},
- "html": "Line one\n<br>\nline two",
- "expected": [
- {
- "data": "Line one\n",
- "type": "text",
- "prev": null,
- "next": {
- "type": "tag",
- "name": "br",
- "attribs": {}
- }
- },
- {
- "type": "tag",
- "name": "br",
- "attribs": {},
- "prev": {
- "data": "Line one\n",
- "type": "text"
- },
- "next": {
- "data": "\nline two",
- "type": "text"
- }
- },
- {
- "data": "\nline two",
- "type": "text",
- "prev": {
- "type": "tag",
- "name": "br",
- "attribs": {}
- },
- "next": null
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/12-text_only.json b/assets/node_modules/domhandler/test/cases/12-text_only.json
deleted file mode 100644
index 342dc45..0000000
--- a/assets/node_modules/domhandler/test/cases/12-text_only.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "name": "Only text",
- "options": {},
- "html": "this is the text",
- "expected": [
- {
- "data": "this is the text",
- "type": "text"
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/13-comment_in_text.json b/assets/node_modules/domhandler/test/cases/13-comment_in_text.json
deleted file mode 100644
index 672dbbe..0000000
--- a/assets/node_modules/domhandler/test/cases/13-comment_in_text.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "Comment within text",
- "options": {},
- "html": "this is <!-- the comment --> the text",
- "expected": [
- {
- "data": "this is ",
- "type": "text"
- },
- {
- "data": " the comment ",
- "type": "comment"
- },
- {
- "data": " the text",
- "type": "text"
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/14-comment_in_text_in_script.json b/assets/node_modules/domhandler/test/cases/14-comment_in_text_in_script.json
deleted file mode 100644
index b69d04b..0000000
--- a/assets/node_modules/domhandler/test/cases/14-comment_in_text_in_script.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "Comment within text within script",
- "options": {},
- "html": "<script>this is <!-- the comment --> the text</script>",
- "expected": [
- {
- "type": "script",
- "name": "script",
- "attribs": {},
- "children": [
- {
- "data": "this is <!-- the comment --> the text",
- "type": "text"
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/15-non-verbose.json b/assets/node_modules/domhandler/test/cases/15-non-verbose.json
deleted file mode 100644
index 069db84..0000000
--- a/assets/node_modules/domhandler/test/cases/15-non-verbose.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "Option 'verbose' set to 'false'",
- "options": {
- "verbose": false
- },
- "html": "<font\t\n size='14' \n>the text</\t\nfont\t \n>",
- "expected": [
- {
- "type": "tag",
- "name": "font",
- "attribs": {
- "size": "14"
- },
- "children": [
- {
- "data": "the text",
- "type": "text"
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/16-normalize_whitespace.json b/assets/node_modules/domhandler/test/cases/16-normalize_whitespace.json
deleted file mode 100644
index d4490af..0000000
--- a/assets/node_modules/domhandler/test/cases/16-normalize_whitespace.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "name": "Normalize whitespace",
- "options": {
- "normalizeWhitespace": true
- },
- "html": "Line one\n<br>\t \r\n\f <br>\nline two<font><br> x </font>",
- "expected": [
- {
- "data": "Line one ",
- "type": "text"
- },
- {
- "type": "tag",
- "name": "br",
- "attribs": {}
- },
- {
- "data": " ",
- "type": "text"
- },
- {
- "type": "tag",
- "name": "br",
- "attribs": {}
- },
- {
- "data": " line two",
- "type": "text"
- },
- {
- "type": "tag",
- "name": "font",
- "attribs": {},
- "children": [
- {
- "type": "tag",
- "name": "br",
- "attribs": {}
- },
- {
- "data": " x ",
- "type": "text"
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/17-xml_namespace.json b/assets/node_modules/domhandler/test/cases/17-xml_namespace.json
deleted file mode 100644
index 2171c49..0000000
--- a/assets/node_modules/domhandler/test/cases/17-xml_namespace.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "XML Namespace",
- "options": {},
- "html": "<ns:tag>text</ns:tag>",
- "expected": [
- {
- "type": "tag",
- "name": "ns:tag",
- "attribs": {},
- "children": [
- {
- "data": "text",
- "type": "text"
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/18-enforce_empty_tags.json b/assets/node_modules/domhandler/test/cases/18-enforce_empty_tags.json
deleted file mode 100644
index ce6c455..0000000
--- a/assets/node_modules/domhandler/test/cases/18-enforce_empty_tags.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "Enforce empty tags",
- "options": {},
- "html": "<link>text</link>",
- "expected": [
- {
- "type": "tag",
- "name": "link",
- "attribs": {}
- },
- {
- "data": "text",
- "type": "text"
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/19-ignore_empty_tags.json b/assets/node_modules/domhandler/test/cases/19-ignore_empty_tags.json
deleted file mode 100644
index fe59cf9..0000000
--- a/assets/node_modules/domhandler/test/cases/19-ignore_empty_tags.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Ignore empty tags (xml mode)",
- "options": {
- "xmlMode": true
- },
- "html": "<link>text</link>",
- "expected": [
- {
- "type": "tag",
- "name": "link",
- "attribs": {},
- "children": [
- {
- "data": "text",
- "type": "text"
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/20-template_script_tags.json b/assets/node_modules/domhandler/test/cases/20-template_script_tags.json
deleted file mode 100644
index dae5f1f..0000000
--- a/assets/node_modules/domhandler/test/cases/20-template_script_tags.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Template script tags",
- "options": {},
- "html": "<script type=\"text/template\"><h1>Heading1</h1></script>",
- "expected": [
- {
- "type": "script",
- "name": "script",
- "attribs": {
- "type": "text/template"
- },
- "children": [
- {
- "data": "<h1>Heading1</h1>",
- "type": "text"
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/21-conditional_comments.json b/assets/node_modules/domhandler/test/cases/21-conditional_comments.json
deleted file mode 100644
index c034acd..0000000
--- a/assets/node_modules/domhandler/test/cases/21-conditional_comments.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "Conditional comments",
- "options": {},
- "html": "<!--[if lt IE 7]> <html class='no-js ie6 oldie' lang='en'> <![endif]--><!--[if lt IE 7]> <html class='no-js ie6 oldie' lang='en'> <![endif]-->",
- "expected": [
- {
- "data": "[if lt IE 7]> <html class='no-js ie6 oldie' lang='en'> <![endif]",
- "type": "comment"
- },
- {
- "data": "[if lt IE 7]> <html class='no-js ie6 oldie' lang='en'> <![endif]",
- "type": "comment"
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/22-lowercase_tags.json b/assets/node_modules/domhandler/test/cases/22-lowercase_tags.json
deleted file mode 100644
index b3d70e4..0000000
--- a/assets/node_modules/domhandler/test/cases/22-lowercase_tags.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "name": "lowercase tags",
- "options": {},
- "html": "<!DOCTYPE html><HTML><TITLE>The Title</title><BODY>Hello world</body></html>",
- "expected": [
- {
- "name": "!doctype",
- "data": "!DOCTYPE html",
- "type": "directive"
- },
- {
- "type": "tag",
- "name": "html",
- "attribs": {},
- "children": [
- {
- "type": "tag",
- "name": "title",
- "attribs": {},
- "children": [
- {
- "data": "The Title",
- "type": "text"
- }
- ]
- },
- {
- "type": "tag",
- "name": "body",
- "attribs": {},
- "children": [
- {
- "data": "Hello world",
- "type": "text"
- }
- ]
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/23-dom-lvl1.json b/assets/node_modules/domhandler/test/cases/23-dom-lvl1.json
deleted file mode 100644
index ab25d88..0000000
--- a/assets/node_modules/domhandler/test/cases/23-dom-lvl1.json
+++ /dev/null
@@ -1,131 +0,0 @@
-{
- "name": "DOM level 1",
- "options": { "withDomLvl1": true },
- "html": "<div>some stray text<h1>Hello, world.</h1><!-- comment node -->more stray text</div>",
- "expected": [
- {
- "type": "tag",
- "nodeType": 1,
- "name": "div",
- "tagName": "div",
- "attribs": {},
- "nodeValue": null,
- "children": [
- {
- "type": "text",
- "nodeType": 3,
- "tagName": null,
- "data": "some stray text",
- "nodeValue": "some stray text",
- "childNodes": null,
- "firstChild": null,
- "lastChild": null
- },
- {
- "type": "tag",
- "nodeType": 1,
- "name": "h1",
- "tagName": "h1",
- "nodeValue": null,
- "attribs": {},
- "children": [
- {
- "type": "text",
- "nodeType": 3,
- "tagName": null,
- "data": "Hello, world.",
- "nodeValue": "Hello, world.",
- "childNodes": null,
- "firstChild": null,
- "lastChild": null
- }
- ],
- "firstChild": {
- "type": "text",
- "nodeType": 3,
- "tagName": null,
- "data": "Hello, world.",
- "nodeValue": "Hello, world.",
- "childNodes": null,
- "firstChild": null,
- "lastChild": null
- },
- "lastChild": {
- "type": "text",
- "nodeType": 3,
- "tagName": null,
- "data": "Hello, world.",
- "nodeValue": "Hello, world.",
- "childNodes": null,
- "firstChild": null,
- "lastChild": null
- }
- },
- {
- "type": "comment",
- "nodeType": 8,
- "tagName": null,
- "data": " comment node ",
- "nodeValue": " comment node ",
- "childNodes": null,
- "firstChild": null,
- "lastChild": null,
- "prev": {
- "type": "tag",
- "name": "h1",
- "nodeValue": null,
- "attribs": {}
- },
- "previousSibling": {
- "type": "tag",
- "name": "h1",
- "nodeValue": null,
- "attribs": {}
- },
- "next": {
- "type": "text",
- "tagName": null,
- "data": "more stray text"
- },
- "nextSibling": {
- "type": "text",
- "tagName": null,
- "data": "more stray text"
- }
- },
- {
- "type": "text",
- "nodeType": 3,
- "tagName": null,
- "data": "more stray text",
- "nodeValue": "more stray text",
- "childNodes": null,
- "firstChild": null,
- "lastChild": null,
- "next": null,
- "nextSibling": null
- }
- ],
- "firstChild": {
- "type": "text",
- "nodeType": 3,
- "tagName": null,
- "data": "some stray text",
- "nodeValue": "some stray text",
- "childNodes": null,
- "firstChild": null,
- "lastChild": null
- },
- "lastChild": {
- "type": "text",
- "nodeType": 3,
- "tagName": null,
- "data": "more stray text",
- "nodeValue": "more stray text",
- "childNodes": null,
- "firstChild": null,
- "lastChild": null
- }
- }
- ]
-}
diff --git a/assets/node_modules/domhandler/test/cases/24-with-start-indices.json b/assets/node_modules/domhandler/test/cases/24-with-start-indices.json
deleted file mode 100644
index 02228f1..0000000
--- a/assets/node_modules/domhandler/test/cases/24-with-start-indices.json
+++ /dev/null
@@ -1,85 +0,0 @@
-{
- "name": "withStartIndices adds correct startIndex properties",
- "options": {"withStartIndices": true},
- "streaming": false,
- "html": "<!DOCTYPE html> <html> <title>The Title</title> <body class='foo'>Hello world <p></p></body> <!-- the comment --> </html> ",
- "expected": [
- {
- "startIndex": 0,
- "name": "!doctype",
- "data": "!DOCTYPE html",
- "type": "directive"
- },
- {
- "type": "text",
- "data": " "
- },
- {
- "startIndex": 16,
- "type": "tag",
- "name": "html",
- "attribs": {},
- "parent": null,
- "children": [
- {
- "startIndex": 22,
- "type": "text",
- "data": " "
- },
- {
- "startIndex": 23,
- "type": "tag",
- "name": "title",
- "attribs": {},
- "children": [
- {
- "startIndex": 30,
- "data": "The Title",
- "type": "text"
- }
- ]
- },
- {
- "startIndex": 47,
- "type": "text",
- "data": " "
- },
- {
- "startIndex": 48,
- "type": "tag",
- "name": "body",
- "attribs": {"class": "foo"},
- "children": [
- {
- "startIndex": 66,
- "data": "Hello world ",
- "type": "text"
- },
- {
- "startIndex": 78,
- "type": "tag",
- "name": "p",
- "attribs": {},
- "children": []
- }
- ]
- },
- {
- "startIndex": 92,
- "type": "text",
- "data": " "
- },
- {
- "startIndex": 93,
- "type": "comment",
- "data": " the comment "
- },
- {
- "startIndex": 113,
- "type": "text",
- "data": " "
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/cases/25-with-end-indices.json b/assets/node_modules/domhandler/test/cases/25-with-end-indices.json
deleted file mode 100644
index efd62f4..0000000
--- a/assets/node_modules/domhandler/test/cases/25-with-end-indices.json
+++ /dev/null
@@ -1,86 +0,0 @@
-{
- "name": "withEndIndices adds correct endIndex properties",
- "options": {"withStartIndices": true,"withEndIndices": true},
- "streaming": false,
- "html": "<!DOCTYPE html> <html> <title>The Title</title> <body class='foo'>Hello world <p></p></body> <!-- the comment --> </html> ",
- "expected": [
- {
- "endIndex": null,
- "name": "!doctype",
- "data": "!DOCTYPE html",
- "type": "directive"
- },
- {
- "type": "text",
- "data": " ",
- "endIndex": 15
- },
- {
- "endIndex": 120,
- "type": "tag",
- "name": "html",
- "attribs": {},
- "parent": null,
- "children": [
- {
- "endIndex": 22,
- "type": "text",
- "data": " "
- },
- {
- "endIndex": 46,
- "type": "tag",
- "name": "title",
- "attribs": {},
- "children": [
- {
- "endIndex": 38,
- "data": "The Title",
- "type": "text"
- }
- ]
- },
- {
- "endIndex": 47,
- "type": "text",
- "data": " "
- },
- {
- "endIndex": 91,
- "type": "tag",
- "name": "body",
- "attribs": {"class": "foo"},
- "children": [
- {
- "endIndex": 77,
- "data": "Hello world ",
- "type": "text"
- },
- {
- "endIndex": 84,
- "type": "tag",
- "name": "p",
- "attribs": {},
- "children": []
- }
- ]
- },
- {
- "endIndex": 92,
- "type": "text",
- "data": " "
- },
- {
- "endIndex": 112,
- "type": "comment",
- "data": " the comment "
- },
- {
- "endIndex": 113,
- "type": "text",
- "data": " "
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/domhandler/test/tests.js b/assets/node_modules/domhandler/test/tests.js
deleted file mode 100644
index 6dc96a2..0000000
--- a/assets/node_modules/domhandler/test/tests.js
+++ /dev/null
@@ -1,60 +0,0 @@
-var fs = require("fs"),
- path = require("path"),
- assert = require("assert"),
- util = require("util"),
- Parser = require("htmlparser2").Parser,
- Handler = require("../");
-
-var basePath = path.resolve(__dirname, "cases"),
- inspectOpts = { showHidden: true, depth: null };
-
-fs
-.readdirSync(basePath)
-.filter(RegExp.prototype.test, /\.json$/) //only allow .json files
-.map(function(name){
- return path.resolve(basePath, name);
-})
-.map(require)
-.forEach(function(test){
- it(test.name, function(){
- var expected = test.expected;
-
- var handler = new Handler(function(err, actual){
- assert.ifError(err);
- try {
- compare(expected, actual);
- } catch(e){
- e.expected = util.inspect(expected, inspectOpts);
- e.actual = util.inspect(actual, inspectOpts);
- throw e;
- }
- }, test.options);
-
- var data = test.html;
-
- var parser = new Parser(handler, test.options);
-
- //first, try to run the test via chunks
- if (test.streaming || test.streaming === undefined){
- for(var i = 0; i < data.length; i++){
- parser.write(data.charAt(i));
- }
- parser.done();
- }
-
- //then parse everything
- parser.parseComplete(data);
- });
-});
-
-function compare(expected, result){
- assert.equal(typeof expected, typeof result, "types didn't match");
- if(typeof expected !== "object" || expected === null){
- assert.strictEqual(expected, result, "result doesn't equal expected");
- } else {
- for(var prop in expected){
- assert.ok(prop in result, "result didn't contain property " + prop);
- compare(expected[prop], result[prop]);
- }
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/domutils/.travis.yml b/assets/node_modules/domutils/.travis.yml
deleted file mode 100644
index 0c9ab0e..0000000
--- a/assets/node_modules/domutils/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-sudo: true
-language: node_js
-node_js:
- - 8
-
diff --git a/assets/node_modules/domutils/LICENSE b/assets/node_modules/domutils/LICENSE
deleted file mode 100644
index c464f86..0000000
--- a/assets/node_modules/domutils/LICENSE
+++ /dev/null
@@ -1,11 +0,0 @@
-Copyright (c) Felix Böhm
-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.
-
-THIS 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,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/assets/node_modules/domutils/index.js b/assets/node_modules/domutils/index.js
deleted file mode 100644
index 13f3344..0000000
--- a/assets/node_modules/domutils/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var DomUtils = module.exports;
-
-[
- require("./lib/stringify"),
- require("./lib/traversal"),
- require("./lib/manipulation"),
- require("./lib/querying"),
- require("./lib/legacy"),
- require("./lib/helpers")
-].forEach(function(ext){
- Object.keys(ext).forEach(function(key){
- DomUtils[key] = ext[key].bind(DomUtils);
- });
-});
diff --git a/assets/node_modules/domutils/lib/helpers.js b/assets/node_modules/domutils/lib/helpers.js
deleted file mode 100644
index 57056f6..0000000
--- a/assets/node_modules/domutils/lib/helpers.js
+++ /dev/null
@@ -1,141 +0,0 @@
-// removeSubsets
-// Given an array of nodes, remove any member that is contained by another.
-exports.removeSubsets = function(nodes) {
- var idx = nodes.length, node, ancestor, replace;
-
- // Check if each node (or one of its ancestors) is already contained in the
- // array.
- while (--idx > -1) {
- node = ancestor = nodes[idx];
-
- // Temporarily remove the node under consideration
- nodes[idx] = null;
- replace = true;
-
- while (ancestor) {
- if (nodes.indexOf(ancestor) > -1) {
- replace = false;
- nodes.splice(idx, 1);
- break;
- }
- ancestor = ancestor.parent;
- }
-
- // If the node has been found to be unique, re-insert it.
- if (replace) {
- nodes[idx] = node;
- }
- }
-
- return nodes;
-};
-
-// Source: http://dom.spec.whatwg.org/#dom-node-comparedocumentposition
-var POSITION = {
- DISCONNECTED: 1,
- PRECEDING: 2,
- FOLLOWING: 4,
- CONTAINS: 8,
- CONTAINED_BY: 16
-};
-
-// Compare the position of one node against another node in any other document.
-// The return value is a bitmask with the following values:
-//
-// document order:
-// > There is an ordering, document order, defined on all the nodes in the
-// > document corresponding to the order in which the first character of the
-// > XML representation of each node occurs in the XML representation of the
-// > document after expansion of general entities. Thus, the document element
-// > node will be the first node. Element nodes occur before their children.
-// > Thus, document order orders element nodes in order of the occurrence of
-// > their start-tag in the XML (after expansion of entities). The attribute
-// > nodes of an element occur after the element and before its children. The
-// > relative order of attribute nodes is implementation-dependent./
-// Source:
-// http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order
-//
-// @argument {Node} nodaA The first node to use in the comparison
-// @argument {Node} nodeB The second node to use in the comparison
-//
-// @return {Number} A bitmask describing the input nodes' relative position.
-// See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for
-// a description of these values.
-var comparePos = exports.compareDocumentPosition = function(nodeA, nodeB) {
- var aParents = [];
- var bParents = [];
- var current, sharedParent, siblings, aSibling, bSibling, idx;
-
- if (nodeA === nodeB) {
- return 0;
- }
-
- current = nodeA;
- while (current) {
- aParents.unshift(current);
- current = current.parent;
- }
- current = nodeB;
- while (current) {
- bParents.unshift(current);
- current = current.parent;
- }
-
- idx = 0;
- while (aParents[idx] === bParents[idx]) {
- idx++;
- }
-
- if (idx === 0) {
- return POSITION.DISCONNECTED;
- }
-
- sharedParent = aParents[idx - 1];
- siblings = sharedParent.children;
- aSibling = aParents[idx];
- bSibling = bParents[idx];
-
- if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {
- if (sharedParent === nodeB) {
- return POSITION.FOLLOWING | POSITION.CONTAINED_BY;
- }
- return POSITION.FOLLOWING;
- } else {
- if (sharedParent === nodeA) {
- return POSITION.PRECEDING | POSITION.CONTAINS;
- }
- return POSITION.PRECEDING;
- }
-};
-
-// Sort an array of nodes based on their relative position in the document and
-// remove any duplicate nodes. If the array contains nodes that do not belong
-// to the same document, sort order is unspecified.
-//
-// @argument {Array} nodes Array of DOM nodes
-//
-// @returns {Array} collection of unique nodes, sorted in document order
-exports.uniqueSort = function(nodes) {
- var idx = nodes.length, node, position;
-
- nodes = nodes.slice();
-
- while (--idx > -1) {
- node = nodes[idx];
- position = nodes.indexOf(node);
- if (position > -1 && position < idx) {
- nodes.splice(idx, 1);
- }
- }
- nodes.sort(function(a, b) {
- var relative = comparePos(a, b);
- if (relative & POSITION.PRECEDING) {
- return -1;
- } else if (relative & POSITION.FOLLOWING) {
- return 1;
- }
- return 0;
- });
-
- return nodes;
-};
diff --git a/assets/node_modules/domutils/lib/legacy.js b/assets/node_modules/domutils/lib/legacy.js
deleted file mode 100644
index 43bd446..0000000
--- a/assets/node_modules/domutils/lib/legacy.js
+++ /dev/null
@@ -1,87 +0,0 @@
-var ElementType = require("domelementtype");
-var isTag = exports.isTag = ElementType.isTag;
-
-exports.testElement = function(options, element){
- for(var key in options){
- if(!options.hasOwnProperty(key));
- else if(key === "tag_name"){
- if(!isTag(element) || !options.tag_name(element.name)){
- return false;
- }
- } else if(key === "tag_type"){
- if(!options.tag_type(element.type)) return false;
- } else if(key === "tag_contains"){
- if(isTag(element) || !options.tag_contains(element.data)){
- return false;
- }
- } else if(!element.attribs || !options[key](element.attribs[key])){
- return false;
- }
- }
- return true;
-};
-
-var Checks = {
- tag_name: function(name){
- if(typeof name === "function"){
- return function(elem){ return isTag(elem) && name(elem.name); };
- } else if(name === "*"){
- return isTag;
- } else {
- return function(elem){ return isTag(elem) && elem.name === name; };
- }
- },
- tag_type: function(type){
- if(typeof type === "function"){
- return function(elem){ return type(elem.type); };
- } else {
- return function(elem){ return elem.type === type; };
- }
- },
- tag_contains: function(data){
- if(typeof data === "function"){
- return function(elem){ return !isTag(elem) && data(elem.data); };
- } else {
- return function(elem){ return !isTag(elem) && elem.data === data; };
- }
- }
-};
-
-function getAttribCheck(attrib, value){
- if(typeof value === "function"){
- return function(elem){ return elem.attribs && value(elem.attribs[attrib]); };
- } else {
- return function(elem){ return elem.attribs && elem.attribs[attrib] === value; };
- }
-}
-
-function combineFuncs(a, b){
- return function(elem){
- return a(elem) || b(elem);
- };
-}
-
-exports.getElements = function(options, element, recurse, limit){
- var funcs = Object.keys(options).map(function(key){
- var value = options[key];
- return key in Checks ? Checks[key](value) : getAttribCheck(key, value);
- });
-
- return funcs.length === 0 ? [] : this.filter(
- funcs.reduce(combineFuncs),
- element, recurse, limit
- );
-};
-
-exports.getElementById = function(id, element, recurse){
- if(!Array.isArray(element)) element = [element];
- return this.findOne(getAttribCheck("id", id), element, recurse !== false);
-};
-
-exports.getElementsByTagName = function(name, element, recurse, limit){
- return this.filter(Checks.tag_name(name), element, recurse, limit);
-};
-
-exports.getElementsByTagType = function(type, element, recurse, limit){
- return this.filter(Checks.tag_type(type), element, recurse, limit);
-};
diff --git a/assets/node_modules/domutils/lib/manipulation.js b/assets/node_modules/domutils/lib/manipulation.js
deleted file mode 100644
index 6b44cbc..0000000
--- a/assets/node_modules/domutils/lib/manipulation.js
+++ /dev/null
@@ -1,77 +0,0 @@
-exports.removeElement = function(elem){
- if(elem.prev) elem.prev.next = elem.next;
- if(elem.next) elem.next.prev = elem.prev;
-
- if(elem.parent){
- var childs = elem.parent.children;
- childs.splice(childs.lastIndexOf(elem), 1);
- }
-};
-
-exports.replaceElement = function(elem, replacement){
- var prev = replacement.prev = elem.prev;
- if(prev){
- prev.next = replacement;
- }
-
- var next = replacement.next = elem.next;
- if(next){
- next.prev = replacement;
- }
-
- var parent = replacement.parent = elem.parent;
- if(parent){
- var childs = parent.children;
- childs[childs.lastIndexOf(elem)] = replacement;
- }
-};
-
-exports.appendChild = function(elem, child){
- child.parent = elem;
-
- if(elem.children.push(child) !== 1){
- var sibling = elem.children[elem.children.length - 2];
- sibling.next = child;
- child.prev = sibling;
- child.next = null;
- }
-};
-
-exports.append = function(elem, next){
- var parent = elem.parent,
- currNext = elem.next;
-
- next.next = currNext;
- next.prev = elem;
- elem.next = next;
- next.parent = parent;
-
- if(currNext){
- currNext.prev = next;
- if(parent){
- var childs = parent.children;
- childs.splice(childs.lastIndexOf(currNext), 0, next);
- }
- } else if(parent){
- parent.children.push(next);
- }
-};
-
-exports.prepend = function(elem, prev){
- var parent = elem.parent;
- if(parent){
- var childs = parent.children;
- childs.splice(childs.lastIndexOf(elem), 0, prev);
- }
-
- if(elem.prev){
- elem.prev.next = prev;
- }
-
- prev.parent = parent;
- prev.prev = elem.prev;
- prev.next = elem;
- elem.prev = prev;
-};
-
-
diff --git a/assets/node_modules/domutils/lib/querying.js b/assets/node_modules/domutils/lib/querying.js
deleted file mode 100644
index dbc3cde..0000000
--- a/assets/node_modules/domutils/lib/querying.js
+++ /dev/null
@@ -1,95 +0,0 @@
-var isTag = require("domelementtype").isTag;
-
-module.exports = {
- filter: filter,
- find: find,
- findOneChild: findOneChild,
- findOne: findOne,
- existsOne: existsOne,
- findAll: findAll
-};
-
-function filter(test, element, recurse, limit){
- if(!Array.isArray(element)) element = [element];
-
- if(typeof limit !== "number" || !isFinite(limit)){
- limit = Infinity;
- }
- return find(test, element, recurse !== false, limit);
-}
-
-function find(test, elems, recurse, limit){
- var result = [], childs;
-
- for(var i = 0, j = elems.length; i < j; i++){
- if(test(elems[i])){
- result.push(elems[i]);
- if(--limit <= 0) break;
- }
-
- childs = elems[i].children;
- if(recurse && childs && childs.length > 0){
- childs = find(test, childs, recurse, limit);
- result = result.concat(childs);
- limit -= childs.length;
- if(limit <= 0) break;
- }
- }
-
- return result;
-}
-
-function findOneChild(test, elems){
- for(var i = 0, l = elems.length; i < l; i++){
- if(test(elems[i])) return elems[i];
- }
-
- return null;
-}
-
-function findOne(test, elems){
- var elem = null;
-
- for(var i = 0, l = elems.length; i < l && !elem; i++){
- if(!isTag(elems[i])){
- continue;
- } else if(test(elems[i])){
- elem = elems[i];
- } else if(elems[i].children.length > 0){
- elem = findOne(test, elems[i].children);
- }
- }
-
- return elem;
-}
-
-function existsOne(test, elems){
- for(var i = 0, l = elems.length; i < l; i++){
- if(
- isTag(elems[i]) && (
- test(elems[i]) || (
- elems[i].children.length > 0 &&
- existsOne(test, elems[i].children)
- )
- )
- ){
- return true;
- }
- }
-
- return false;
-}
-
-function findAll(test, rootElems){
- var result = [];
- var stack = rootElems.slice();
- while(stack.length){
- var elem = stack.shift();
- if(!isTag(elem)) continue;
- if (elem.children && elem.children.length > 0) {
- stack.unshift.apply(stack, elem.children);
- }
- if(test(elem)) result.push(elem);
- }
- return result;
-}
diff --git a/assets/node_modules/domutils/lib/stringify.js b/assets/node_modules/domutils/lib/stringify.js
deleted file mode 100644
index e59cb72..0000000
--- a/assets/node_modules/domutils/lib/stringify.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var ElementType = require("domelementtype"),
- getOuterHTML = require("dom-serializer"),
- isTag = ElementType.isTag;
-
-module.exports = {
- getInnerHTML: getInnerHTML,
- getOuterHTML: getOuterHTML,
- getText: getText
-};
-
-function getInnerHTML(elem, opts){
- return elem.children ? elem.children.map(function(elem){
- return getOuterHTML(elem, opts);
- }).join("") : "";
-}
-
-function getText(elem){
- if(Array.isArray(elem)) return elem.map(getText).join("");
- if(isTag(elem)) return elem.name === "br" ? "\n" : getText(elem.children);
- if(elem.type === ElementType.CDATA) return getText(elem.children);
- if(elem.type === ElementType.Text) return elem.data;
- return "";
-}
diff --git a/assets/node_modules/domutils/lib/traversal.js b/assets/node_modules/domutils/lib/traversal.js
deleted file mode 100644
index ffdfeb6..0000000
--- a/assets/node_modules/domutils/lib/traversal.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var getChildren = exports.getChildren = function(elem){
- return elem.children;
-};
-
-var getParent = exports.getParent = function(elem){
- return elem.parent;
-};
-
-exports.getSiblings = function(elem){
- var parent = getParent(elem);
- return parent ? getChildren(parent) : [elem];
-};
-
-exports.getAttributeValue = function(elem, name){
- return elem.attribs && elem.attribs[name];
-};
-
-exports.hasAttrib = function(elem, name){
- return !!elem.attribs && hasOwnProperty.call(elem.attribs, name);
-};
-
-exports.getName = function(elem){
- return elem.name;
-};
diff --git a/assets/node_modules/domutils/package.json b/assets/node_modules/domutils/package.json
deleted file mode 100644
index 0267af9..0000000
--- a/assets/node_modules/domutils/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "name": "domutils",
- "version": "1.7.0",
- "description": "utilities for working with htmlparser2's dom",
- "main": "index.js",
- "directories": {
- "test": "tests"
- },
- "scripts": {
- "test": "mocha test/tests/**.js && jshint index.js test/**/*.js lib/*.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/FB55/domutils.git"
- },
- "keywords": [
- "dom",
- "htmlparser2"
- ],
- "dependencies": {
- "dom-serializer": "0",
- "domelementtype": "1"
- },
- "devDependencies": {
- "htmlparser2": "~3.9.2",
- "domhandler": "2",
- "jshint": "~2.9.4",
- "mocha": "~3.2.0"
- },
- "author": "Felix Boehm <me@feedic.com>",
- "license": "BSD-2-Clause",
- "jshintConfig": {
- "proto": true,
- "unused": true,
- "eqnull": true,
- "undef": true,
- "quotmark": "double",
- "eqeqeq": true,
- "trailing": true,
- "node": true,
- "globals": {
- "describe": true,
- "it": true,
- "beforeEach": true
- }
- }
-}
diff --git a/assets/node_modules/domutils/readme.md b/assets/node_modules/domutils/readme.md
deleted file mode 100644
index 6f0b488..0000000
--- a/assets/node_modules/domutils/readme.md
+++ /dev/null
@@ -1,3 +0,0 @@
-Utilities for working with htmlparser2's dom
-
-[![Build Status](https://travis-ci.org/fb55/domutils.svg?branch=master)](https://travis-ci.org/fb55/domutils)
diff --git a/assets/node_modules/domutils/test/fixture.js b/assets/node_modules/domutils/test/fixture.js
deleted file mode 100644
index 9bd791b..0000000
--- a/assets/node_modules/domutils/test/fixture.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var makeDom = require("./utils").makeDom;
-var markup = Array(21).join(
- "<?xml><tag1 id='asdf'> <script>text</script> <!-- comment --> <tag2> text </tag1>"
-);
-
-module.exports = makeDom(markup);
diff --git a/assets/node_modules/domutils/test/tests/helpers.js b/assets/node_modules/domutils/test/tests/helpers.js
deleted file mode 100644
index 2e30afb..0000000
--- a/assets/node_modules/domutils/test/tests/helpers.js
+++ /dev/null
@@ -1,89 +0,0 @@
-var makeDom = require("../utils").makeDom;
-var helpers = require("../..");
-var assert = require("assert");
-
-describe("helpers", function() {
- describe("removeSubsets", function() {
- var removeSubsets = helpers.removeSubsets;
- var dom = makeDom("<div><p><span></span></p><p></p></div>")[0];
-
- it("removes identical trees", function() {
- var matches = removeSubsets([dom, dom]);
- assert.equal(matches.length, 1);
- });
-
- it("Removes subsets found first", function() {
- var matches = removeSubsets([dom, dom.children[0].children[0]]);
- assert.equal(matches.length, 1);
- });
-
- it("Removes subsets found last", function() {
- var matches = removeSubsets([dom.children[0], dom]);
- assert.equal(matches.length, 1);
- });
-
- it("Does not remove unique trees", function() {
- var matches = removeSubsets([dom.children[0], dom.children[1]]);
- assert.equal(matches.length, 2);
- });
- });
-
- describe("compareDocumentPosition", function() {
- var compareDocumentPosition = helpers.compareDocumentPosition;
- var markup = "<div><p><span></span></p><a></a></div>";
- var dom = makeDom(markup)[0];
- var p = dom.children[0];
- var span = p.children[0];
- var a = dom.children[1];
-
- it("reports when the first node occurs before the second indirectly", function() {
- assert.equal(compareDocumentPosition(span, a), 2);
- });
-
- it("reports when the first node contains the second", function() {
- assert.equal(compareDocumentPosition(p, span), 10);
- });
-
- it("reports when the first node occurs after the second indirectly", function() {
- assert.equal(compareDocumentPosition(a, span), 4);
- });
-
- it("reports when the first node is contained by the second", function() {
- assert.equal(compareDocumentPosition(span, p), 20);
- });
-
- it("reports when the nodes belong to separate documents", function() {
- var other = makeDom(markup)[0].children[0].children[0];
-
- assert.equal(compareDocumentPosition(span, other), 1);
- });
-
- it("reports when the nodes are identical", function() {
- assert.equal(compareDocumentPosition(span, span), 0);
- });
- });
-
- describe("uniqueSort", function() {
- var uniqueSort = helpers.uniqueSort;
- var dom, p, span, a;
-
- beforeEach(function() {
- dom = makeDom("<div><p><span></span></p><a></a></div>")[0];
- p = dom.children[0];
- span = p.children[0];
- a = dom.children[1];
- });
-
- it("leaves unique elements untouched", function() {
- assert.deepEqual(uniqueSort([p, a]), [p, a]);
- });
-
- it("removes duplicate elements", function() {
- assert.deepEqual(uniqueSort([p, a, p]), [p, a]);
- });
-
- it("sorts nodes in document order", function() {
- assert.deepEqual(uniqueSort([a, dom, span, p]), [dom, p, span, a]);
- });
- });
-});
diff --git a/assets/node_modules/domutils/test/tests/legacy.js b/assets/node_modules/domutils/test/tests/legacy.js
deleted file mode 100644
index 87fabfa..0000000
--- a/assets/node_modules/domutils/test/tests/legacy.js
+++ /dev/null
@@ -1,119 +0,0 @@
-var DomUtils = require("../..");
-var fixture = require("../fixture");
-var assert = require("assert");
-
-// Set up expected structures
-var expected = {
- idAsdf: fixture[1],
- tag2: [],
- typeScript: []
-};
-for (var idx = 0; idx < 20; ++idx) {
- expected.tag2.push(fixture[idx*2 + 1].children[5]);
- expected.typeScript.push(fixture[idx*2 + 1].children[1]);
-}
-
-describe("legacy", function() {
- describe("getElements", function() {
- var getElements = DomUtils.getElements;
- it("returns the node with the specified ID", function() {
- assert.deepEqual(
- getElements({ id: "asdf" }, fixture, true, 1),
- [expected.idAsdf]
- );
- });
- it("returns empty array for unknown IDs", function() {
- assert.deepEqual(getElements({ id: "asdfs" }, fixture, true), []);
- });
- it("returns the nodes with the specified tag name", function() {
- assert.deepEqual(
- getElements({ tag_name:"tag2" }, fixture, true),
- expected.tag2
- );
- });
- it("returns empty array for unknown tag names", function() {
- assert.deepEqual(
- getElements({ tag_name : "asdfs" }, fixture, true),
- []
- );
- });
- it("returns the nodes with the specified tag type", function() {
- assert.deepEqual(
- getElements({ tag_type: "script" }, fixture, true),
- expected.typeScript
- );
- });
- it("returns empty array for unknown tag types", function() {
- assert.deepEqual(
- getElements({ tag_type: "video" }, fixture, true),
- []
- );
- });
- });
-
- describe("getElementById", function() {
- var getElementById = DomUtils.getElementById;
- it("returns the specified node", function() {
- assert.equal(
- expected.idAsdf,
- getElementById("asdf", fixture, true)
- );
- });
- it("returns `null` for unknown IDs", function() {
- assert.equal(null, getElementById("asdfs", fixture, true));
- });
- });
-
- describe("getElementsByTagName", function() {
- var getElementsByTagName = DomUtils.getElementsByTagName;
- it("returns the specified nodes", function() {
- assert.deepEqual(
- getElementsByTagName("tag2", fixture, true),
- expected.tag2
- );
- });
- it("returns empty array for unknown tag names", function() {
- assert.deepEqual(
- getElementsByTagName("tag23", fixture, true),
- []
- );
- });
- });
-
- describe("getElementsByTagType", function() {
- var getElementsByTagType = DomUtils.getElementsByTagType;
- it("returns the specified nodes", function() {
- assert.deepEqual(
- getElementsByTagType("script", fixture, true),
- expected.typeScript
- );
- });
- it("returns empty array for unknown tag types", function() {
- assert.deepEqual(
- getElementsByTagType("video", fixture, true),
- []
- );
- });
- });
-
- describe("getOuterHTML", function() {
- var getOuterHTML = DomUtils.getOuterHTML;
- it("Correctly renders the outer HTML", function() {
- assert.equal(
- getOuterHTML(fixture[1]),
- "<tag1 id=\"asdf\"> <script>text</script> <!-- comment --> <tag2> text </tag2></tag1>"
- );
- });
- });
-
- describe("getInnerHTML", function() {
- var getInnerHTML = DomUtils.getInnerHTML;
- it("Correctly renders the inner HTML", function() {
- assert.equal(
- getInnerHTML(fixture[1]),
- " <script>text</script> <!-- comment --> <tag2> text </tag2>"
- );
- });
- });
-
-});
diff --git a/assets/node_modules/domutils/test/tests/traversal.js b/assets/node_modules/domutils/test/tests/traversal.js
deleted file mode 100644
index f500e08..0000000
--- a/assets/node_modules/domutils/test/tests/traversal.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var makeDom = require("../utils").makeDom;
-var traversal = require("../..");
-var assert = require("assert");
-
-describe("traversal", function() {
- describe("hasAttrib", function() {
- var hasAttrib = traversal.hasAttrib;
-
- it("doesn't throw on text nodes", function() {
- var dom = makeDom("textnode");
- assert.doesNotThrow(function() {
- hasAttrib(dom[0], "some-attrib");
- });
- });
-
- });
-});
diff --git a/assets/node_modules/domutils/test/utils.js b/assets/node_modules/domutils/test/utils.js
deleted file mode 100644
index 676e8f6..0000000
--- a/assets/node_modules/domutils/test/utils.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var htmlparser = require("htmlparser2");
-
-exports.makeDom = function(markup) {
- var handler = new htmlparser.DomHandler(),
- parser = new htmlparser.Parser(handler);
- parser.write(markup);
- parser.done();
- return handler.dom;
-};
diff --git a/assets/node_modules/dot-prop/index.js b/assets/node_modules/dot-prop/index.js
deleted file mode 100644
index 15282bb..0000000
--- a/assets/node_modules/dot-prop/index.js
+++ /dev/null
@@ -1,123 +0,0 @@
-'use strict';
-const isObj = require('is-obj');
-
-function getPathSegments(path) {
- const pathArr = path.split('.');
- const parts = [];
-
- for (let i = 0; i < pathArr.length; i++) {
- let p = pathArr[i];
-
- while (p[p.length - 1] === '\\' && pathArr[i + 1] !== undefined) {
- p = p.slice(0, -1) + '.';
- p += pathArr[++i];
- }
-
- parts.push(p);
- }
-
- return parts;
-}
-
-module.exports = {
- get(obj, path, value) {
- if (!isObj(obj) || typeof path !== 'string') {
- return value === undefined ? obj : value;
- }
-
- const pathArr = getPathSegments(path);
-
- for (let i = 0; i < pathArr.length; i++) {
- if (!Object.prototype.propertyIsEnumerable.call(obj, pathArr[i])) {
- return value;
- }
-
- obj = obj[pathArr[i]];
-
- if (obj === undefined || obj === null) {
- // `obj` is either `undefined` or `null` so we want to stop the loop, and
- // if this is not the last bit of the path, and
- // if it did't return `undefined`
- // it would return `null` if `obj` is `null`
- // but we want `get({foo: null}, 'foo.bar')` to equal `undefined`, or the supplied value, not `null`
- if (i !== pathArr.length - 1) {
- return value;
- }
-
- break;
- }
- }
-
- return obj;
- },
-
- set(obj, path, value) {
- if (!isObj(obj) || typeof path !== 'string') {
- return obj;
- }
-
- const root = obj;
- const pathArr = getPathSegments(path);
-
- for (let i = 0; i < pathArr.length; i++) {
- const p = pathArr[i];
-
- if (!isObj(obj[p])) {
- obj[p] = {};
- }
-
- if (i === pathArr.length - 1) {
- obj[p] = value;
- }
-
- obj = obj[p];
- }
-
- return root;
- },
-
- delete(obj, path) {
- if (!isObj(obj) || typeof path !== 'string') {
- return;
- }
-
- const pathArr = getPathSegments(path);
-
- for (let i = 0; i < pathArr.length; i++) {
- const p = pathArr[i];
-
- if (i === pathArr.length - 1) {
- delete obj[p];
- return;
- }
-
- obj = obj[p];
-
- if (!isObj(obj)) {
- return;
- }
- }
- },
-
- has(obj, path) {
- if (!isObj(obj) || typeof path !== 'string') {
- return false;
- }
-
- const pathArr = getPathSegments(path);
-
- for (let i = 0; i < pathArr.length; i++) {
- if (isObj(obj)) {
- if (!(pathArr[i] in obj)) {
- return false;
- }
-
- obj = obj[pathArr[i]];
- } else {
- return false;
- }
- }
-
- return true;
- }
-};
diff --git a/assets/node_modules/dot-prop/license b/assets/node_modules/dot-prop/license
deleted file mode 100644
index 654d0bf..0000000
--- a/assets/node_modules/dot-prop/license
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/dot-prop/package.json b/assets/node_modules/dot-prop/package.json
deleted file mode 100644
index 384734a..0000000
--- a/assets/node_modules/dot-prop/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "dot-prop",
- "version": "4.2.0",
- "description": "Get, set, or delete a property from a nested object using a dot path",
- "license": "MIT",
- "repository": "sindresorhus/dot-prop",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava",
- "bench": "matcha bench.js"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "obj",
- "object",
- "prop",
- "property",
- "dot",
- "path",
- "get",
- "set",
- "delete",
- "del",
- "access",
- "notation",
- "dotty"
- ],
- "dependencies": {
- "is-obj": "^1.0.0"
- },
- "devDependencies": {
- "ava": "*",
- "matcha": "^0.7.0",
- "xo": "*"
- },
- "xo": {
- "esnext": true
- }
-}
diff --git a/assets/node_modules/dot-prop/readme.md b/assets/node_modules/dot-prop/readme.md
deleted file mode 100644
index fab3b7a..0000000
--- a/assets/node_modules/dot-prop/readme.md
+++ /dev/null
@@ -1,103 +0,0 @@
-# dot-prop [![Build Status](https://travis-ci.org/sindresorhus/dot-prop.svg?branch=master)](https://travis-ci.org/sindresorhus/dot-prop)
-
-> Get, set, or delete a property from a nested object using a dot path
-
-
-## Install
-
-```
-$ npm install --save dot-prop
-```
-
-
-## Usage
-
-```js
-const dotProp = require('dot-prop');
-
-// getter
-dotProp.get({foo: {bar: 'unicorn'}}, 'foo.bar');
-//=> 'unicorn'
-
-dotProp.get({foo: {bar: 'a'}}, 'foo.notDefined.deep');
-//=> undefined
-
-dotProp.get({foo: {bar: 'a'}}, 'foo.notDefined.deep', 'default value');
-//=> 'default value'
-
-dotProp.get({foo: {'dot.dot': 'unicorn'}}, 'foo.dot\\.dot');
-//=> 'unicorn'
-
-// setter
-const obj = {foo: {bar: 'a'}};
-dotProp.set(obj, 'foo.bar', 'b');
-console.log(obj);
-//=> {foo: {bar: 'b'}}
-
-const foo = dotProp.set({}, 'foo.bar', 'c');
-console.log(foo);
-//=> {foo: {bar: 'c'}}
-
-dotProp.set(obj, 'foo.baz', 'x');
-console.log(obj);
-//=> {foo: {bar: 'b', baz: 'x'}}
-
-// has
-dotProp.has({foo: {bar: 'unicorn'}}, 'foo.bar');
-//=> true
-
-// deleter
-const obj = {foo: {bar: 'a'}};
-dotProp.delete(obj, 'foo.bar');
-console.log(obj);
-//=> {foo: {}}
-
-obj.foo.bar = {x: 'y', y: 'x'};
-dotProp.delete(obj, 'foo.bar.x');
-console.log(obj);
-//=> {foo: {bar: {y: 'x'}}}
-```
-
-
-## API
-
-### get(obj, path, [defaultValue])
-
-### set(obj, path, value)
-
-Returns the object.
-
-### has(obj, path)
-
-### delete(obj, path)
-
-#### obj
-
-Type: `Object`
-
-Object to get, set, or delete the `path` value.
-
-#### path
-
-Type: `string`
-
-Path of the property in the object, using `.` to separate each nested key.
-
-Use `\\.` if you have a `.` in the key.
-
-#### value
-
-Type: `any`
-
-Value to set at `path`.
-
-#### defaultValue
-
-Type: `any`
-
-Default value.
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/electron-to-chromium/CHANGELOG.md b/assets/node_modules/electron-to-chromium/CHANGELOG.md
deleted file mode 100644
index 1669c34..0000000
--- a/assets/node_modules/electron-to-chromium/CHANGELOG.md
+++ /dev/null
@@ -1,14 +0,0 @@
-v1.3.0
- * Additionally include chromium to electron mappings
-
-v1.2.0
- * versions and full-versions are now separately importable.
-
-v1.1.0
- * Both electronToChromium and electronToBrowserList now can accept strings as well as numbers.
-
-v1.0.1
- Update documentation
-
-v1.0.0
- Inititial release
diff --git a/assets/node_modules/electron-to-chromium/LICENSE b/assets/node_modules/electron-to-chromium/LICENSE
deleted file mode 100644
index 6c7b614..0000000
--- a/assets/node_modules/electron-to-chromium/LICENSE
+++ /dev/null
@@ -1,5 +0,0 @@
-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/assets/node_modules/electron-to-chromium/README.md b/assets/node_modules/electron-to-chromium/README.md
deleted file mode 100644
index 4d630c8..0000000
--- a/assets/node_modules/electron-to-chromium/README.md
+++ /dev/null
@@ -1,180 +0,0 @@
-### 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).
-
-## 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');
-// chromeVersion 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/assets/node_modules/electron-to-chromium/chromium-versions.js b/assets/node_modules/electron-to-chromium/chromium-versions.js
deleted file mode 100644
index 7ce7437..0000000
--- a/assets/node_modules/electron-to-chromium/chromium-versions.js
+++ /dev/null
@@ -1,28 +0,0 @@
-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"
-}; \ No newline at end of file
diff --git a/assets/node_modules/electron-to-chromium/full-chromium-versions.js b/assets/node_modules/electron-to-chromium/full-chromium-versions.js
deleted file mode 100644
index 27aba44..0000000
--- a/assets/node_modules/electron-to-chromium/full-chromium-versions.js
+++ /dev/null
@@ -1,724 +0,0 @@
-module.exports = {
- "81.0.4030.0": [
- "9.0.0-nightly.20200121",
- "9.0.0-nightly.20200119"
- ],
- "81.0.3994.0": [
- "9.0.0-nightly.20200117",
- "9.0.0-nightly.20200116",
- "9.0.0-nightly.20200115",
- "9.0.0-nightly.20200113",
- "9.0.0-nightly.20200111",
- "9.0.0-nightly.20200110",
- "9.0.0-nightly.20200109",
- "9.0.0-nightly.20200108",
- "9.0.0-nightly.20200106",
- "9.0.0-nightly.20200105",
- "9.0.0-nightly.20200104",
- "9.0.0-nightly.20200103",
- "9.0.0-nightly.20200101",
- "9.0.0-nightly.20191231",
- "9.0.0-nightly.20191230",
- "9.0.0-nightly.20191229",
- "9.0.0-nightly.20191228",
- "9.0.0-nightly.20191226",
- "9.0.0-nightly.20191225",
- "9.0.0-nightly.20191224",
- "9.0.0-nightly.20191223",
- "9.0.0-nightly.20191222",
- "9.0.0-nightly.20191221",
- "9.0.0-nightly.20191220"
- ],
- "80.0.3954.0": [
- "9.0.0-nightly.20191210",
- "9.0.0-nightly.20191204",
- "9.0.0-nightly.20191203",
- "9.0.0-nightly.20191202",
- "9.0.0-nightly.20191201",
- "9.0.0-nightly.20191130",
- "9.0.0-nightly.20191129",
- "9.0.0-nightly.20191124",
- "9.0.0-nightly.20191123",
- "9.0.0-nightly.20191122",
- "9.0.0-nightly.20191121"
- ],
- "80.0.3987.86": [
- "8.0.0"
- ],
- "80.0.3952.0": [
- "8.0.0-nightly.20191105",
- "8.0.0-nightly.20191101"
- ],
- "79.0.3931.0": [
- "8.0.0-nightly.20191023",
- "8.0.0-nightly.20191021",
- "8.0.0-nightly.20191020",
- "8.0.0-nightly.20191019",
- "8.0.0-beta.2",
- "8.0.0-beta.1"
- ],
- "79.0.3919.0": [
- "8.0.0-nightly.20191017",
- "8.0.0-nightly.20191012",
- "8.0.0-nightly.20191011",
- "8.0.0-nightly.20191009",
- "8.0.0-nightly.20191006",
- "8.0.0-nightly.20191005",
- "8.0.0-nightly.20191004",
- "8.0.0-nightly.20191001",
- "8.0.0-nightly.20190930",
- "8.0.0-nightly.20190929",
- "8.0.0-nightly.20190926",
- "8.0.0-nightly.20190924",
- "8.0.0-nightly.20190923"
- ],
- "79.0.3915.0": [
- "8.0.0-nightly.20190920",
- "8.0.0-nightly.20190919"
- ],
- "78.0.3892.0": [
- "8.0.0-nightly.20190917",
- "8.0.0-nightly.20190915",
- "8.0.0-nightly.20190914",
- "8.0.0-nightly.20190913",
- "8.0.0-nightly.20190911",
- "8.0.0-nightly.20190910",
- "8.0.0-nightly.20190909",
- "8.0.0-nightly.20190907",
- "8.0.0-nightly.20190902",
- "8.0.0-nightly.20190901",
- "8.0.0-nightly.20190830",
- "8.0.0-nightly.20190828",
- "8.0.0-nightly.20190827",
- "8.0.0-nightly.20190825",
- "8.0.0-nightly.20190824"
- ],
- "78.0.3881.0": [
- "8.0.0-nightly.20190820",
- "8.0.0-nightly.20190819",
- "8.0.0-nightly.20190818",
- "8.0.0-nightly.20190817",
- "8.0.0-nightly.20190816"
- ],
- "78.0.3871.0": [
- "8.0.0-nightly.20190815",
- "8.0.0-nightly.20190814",
- "8.0.0-nightly.20190813",
- "8.0.0-nightly.20190812",
- "8.0.0-nightly.20190811",
- "8.0.0-nightly.20190810",
- "8.0.0-nightly.20190809",
- "8.0.0-nightly.20190808",
- "8.0.0-nightly.20190807",
- "8.0.0-nightly.20190806",
- "8.0.0-nightly.20190803"
- ],
- "78.0.3866.0": [
- "8.0.0-nightly.20190802",
- "8.0.0-nightly.20190801",
- "7.0.0-nightly.20190731",
- "7.0.0-nightly.20190730",
- "7.0.0-nightly.20190729",
- "7.0.0-nightly.20190728",
- "7.0.0-nightly.20190727",
- "7.0.0-beta.3",
- "7.0.0-beta.2",
- "7.0.0-beta.1"
- ],
- "80.0.3987.75": [
- "8.0.0-beta.9",
- "8.0.0-beta.8"
- ],
- "80.0.3987.59": [
- "8.0.0-beta.7"
- ],
- "80.0.3987.51": [
- "8.0.0-beta.6"
- ],
- "80.0.3987.14": [
- "8.0.0-beta.5"
- ],
- "80.0.3955.0": [
- "8.0.0-beta.4",
- "8.0.0-beta.3"
- ],
- "78.0.3904.130": [
- "7.1.11",
- "7.1.10",
- "7.1.9",
- "7.1.8",
- "7.1.7",
- "7.1.6",
- "7.1.5",
- "7.1.4"
- ],
- "78.0.3904.126": [
- "7.1.3"
- ],
- "78.0.3904.113": [
- "7.1.2"
- ],
- "78.0.3904.99": [
- "7.1.1"
- ],
- "78.0.3904.94": [
- "7.1.0"
- ],
- "78.0.3904.92": [
- "7.0.1"
- ],
- "78.0.3905.1": [
- "7.0.0",
- "7.0.0-beta.7",
- "7.0.0-beta.6",
- "7.0.0-beta.5"
- ],
- "77.0.3864.0": [
- "7.0.0-nightly.20190726"
- ],
- "77.0.3848.0": [
- "7.0.0-nightly.20190721",
- "7.0.0-nightly.20190720",
- "7.0.0-nightly.20190719"
- ],
- "77.0.3843.0": [
- "7.0.0-nightly.20190705",
- "7.0.0-nightly.20190704"
- ],
- "77.0.3815.0": [
- "7.0.0-nightly.20190702",
- "7.0.0-nightly.20190701",
- "7.0.0-nightly.20190630",
- "7.0.0-nightly.20190629",
- "7.0.0-nightly.20190627",
- "7.0.0-nightly.20190624",
- "7.0.0-nightly.20190623",
- "7.0.0-nightly.20190622",
- "7.0.0-nightly.20190619",
- "7.0.0-nightly.20190618",
- "7.0.0-nightly.20190616",
- "7.0.0-nightly.20190615",
- "7.0.0-nightly.20190613",
- "7.0.0-nightly.20190612",
- "7.0.0-nightly.20190611",
- "7.0.0-nightly.20190609",
- "7.0.0-nightly.20190608",
- "7.0.0-nightly.20190607",
- "7.0.0-nightly.20190606",
- "7.0.0-nightly.20190605"
- ],
- "77.0.3814.0": [
- "7.0.0-nightly.20190604"
- ],
- "76.0.3806.0": [
- "7.0.0-nightly.20190603",
- "7.0.0-nightly.20190602",
- "7.0.0-nightly.20190531",
- "7.0.0-nightly.20190530",
- "7.0.0-nightly.20190529"
- ],
- "76.0.3784.0": [
- "7.0.0-nightly.20190521"
- ],
- "78.0.3896.6": [
- "7.0.0-beta.4"
- ],
- "76.0.3809.146": [
- "6.1.7",
- "6.1.6",
- "6.1.5",
- "6.1.4",
- "6.1.3",
- "6.1.2",
- "6.1.1",
- "6.1.0",
- "6.0.12",
- "6.0.11",
- "6.0.10",
- "6.0.9",
- "6.0.8"
- ],
- "76.0.3809.139": [
- "6.0.7"
- ],
- "76.0.3809.138": [
- "6.0.6"
- ],
- "76.0.3809.136": [
- "6.0.5"
- ],
- "76.0.3809.131": [
- "6.0.4"
- ],
- "76.0.3809.126": [
- "6.0.3"
- ],
- "76.0.3809.110": [
- "6.0.2"
- ],
- "76.0.3809.102": [
- "6.0.1"
- ],
- "76.0.3809.88": [
- "6.0.0"
- ],
- "74.0.3724.8": [
- "6.0.0-nightly.20190311"
- ],
- "72.0.3626.110": [
- "6.0.0-nightly.20190213"
- ],
- "72.0.3626.107": [
- "6.0.0-nightly.20190212"
- ],
- "76.0.3809.74": [
- "6.0.0-beta.15"
- ],
- "76.0.3809.68": [
- "6.0.0-beta.14"
- ],
- "76.0.3809.60": [
- "6.0.0-beta.13"
- ],
- "76.0.3809.54": [
- "6.0.0-beta.12"
- ],
- "76.0.3809.42": [
- "6.0.0-beta.11"
- ],
- "76.0.3809.37": [
- "6.0.0-beta.10"
- ],
- "76.0.3809.26": [
- "6.0.0-beta.9",
- "6.0.0-beta.8"
- ],
- "76.0.3809.22": [
- "6.0.0-beta.7"
- ],
- "76.0.3809.3": [
- "6.0.0-beta.6"
- ],
- "76.0.3805.4": [
- "6.0.0-beta.5"
- ],
- "76.0.3783.1": [
- "6.0.0-beta.4",
- "6.0.0-beta.3",
- "6.0.0-beta.2"
- ],
- "76.0.3774.1": [
- "6.0.0-beta.1"
- ],
- "73.0.3683.121": [
- "5.0.13",
- "5.0.12",
- "5.0.11",
- "5.0.10",
- "5.0.9",
- "5.0.8",
- "5.0.7",
- "5.0.6",
- "5.0.5",
- "5.0.4",
- "5.0.3",
- "5.0.2",
- "5.0.1"
- ],
- "73.0.3683.119": [
- "5.0.0"
- ],
- "71.0.3578.98": [
- "5.0.0-nightly.20190122",
- "5.0.0-nightly.20190121"
- ],
- "70.0.3538.110": [
- "5.0.0-nightly.20190107"
- ],
- "73.0.3683.117": [
- "5.0.0-beta.9"
- ],
- "73.0.3683.104": [
- "5.0.0-beta.8"
- ],
- "73.0.3683.94": [
- "5.0.0-beta.7"
- ],
- "73.0.3683.84": [
- "5.0.0-beta.6"
- ],
- "73.0.3683.61": [
- "5.0.0-beta.5"
- ],
- "73.0.3683.54": [
- "5.0.0-beta.4"
- ],
- "73.0.3683.27": [
- "5.0.0-beta.3"
- ],
- "72.0.3626.52": [
- "5.0.0-beta.2",
- "5.0.0-beta.1"
- ],
- "69.0.3497.128": [
- "4.2.12",
- "4.2.11",
- "4.2.10",
- "4.2.9",
- "4.2.8",
- "4.2.7",
- "4.2.6",
- "4.2.5",
- "4.2.4",
- "4.2.3",
- "4.2.2",
- "4.2.1",
- "4.2.0",
- "4.1.5",
- "4.1.4",
- "4.1.3",
- "4.1.2",
- "4.1.1",
- "4.1.0",
- "4.0.8",
- "4.0.7"
- ],
- "69.0.3497.106": [
- "4.0.6",
- "4.0.5",
- "4.0.4",
- "4.0.3",
- "4.0.2",
- "4.0.1",
- "4.0.0",
- "4.0.0-nightly.20181010",
- "4.0.0-beta.11",
- "4.0.0-beta.10",
- "4.0.0-beta.9",
- "4.0.0-beta.8",
- "4.0.0-beta.7",
- "4.0.0-beta.6",
- "4.0.0-beta.5",
- "4.0.0-beta.4",
- "4.0.0-beta.3",
- "4.0.0-beta.2",
- "4.0.0-beta.1"
- ],
- "68.0.3440.128": [
- "4.0.0-nightly.20181006"
- ],
- "67.0.3396.99": [
- "4.0.0-nightly.20180929"
- ],
- "66.0.3359.181": [
- "4.0.0-nightly.20180821",
- "4.0.0-nightly.20180819",
- "4.0.0-nightly.20180817",
- "3.1.13",
- "3.1.12",
- "3.1.11",
- "3.1.10",
- "3.1.9",
- "3.1.8",
- "3.1.7",
- "3.1.6",
- "3.1.5",
- "3.1.4",
- "3.1.3",
- "3.1.2",
- "3.1.1",
- "3.1.0",
- "3.1.0-beta.5",
- "3.1.0-beta.4",
- "3.1.0-beta.3",
- "3.1.0-beta.2",
- "3.1.0-beta.1",
- "3.0.16",
- "3.0.15",
- "3.0.14",
- "3.0.13",
- "3.0.12",
- "3.0.11",
- "3.0.10",
- "3.0.9",
- "3.0.8",
- "3.0.7",
- "3.0.6",
- "3.0.5",
- "3.0.4",
- "3.0.3",
- "3.0.2",
- "3.0.1",
- "3.0.0",
- "3.0.0-nightly.20180904",
- "3.0.0-nightly.20180823",
- "3.0.0-nightly.20180821",
- "3.0.0-nightly.20180818",
- "3.0.0-beta.13",
- "3.0.0-beta.12",
- "3.0.0-beta.11",
- "3.0.0-beta.10",
- "3.0.0-beta.9",
- "3.0.0-beta.8",
- "3.0.0-beta.7",
- "3.0.0-beta.6",
- "3.0.0-beta.5",
- "3.0.0-beta.4",
- "3.0.0-beta.3",
- "3.0.0-beta.2",
- "3.0.0-beta.1"
- ],
- "61.0.3163.100": [
- "2.1.0-unsupported.20180809",
- "2.0.18",
- "2.0.17",
- "2.0.16",
- "2.0.15",
- "2.0.14",
- "2.0.13",
- "2.0.12",
- "2.0.11",
- "2.0.10",
- "2.0.9",
- "2.0.8",
- "2.0.8-nightly.20180820",
- "2.0.8-nightly.20180819",
- "2.0.7",
- "2.0.6",
- "2.0.5",
- "2.0.4",
- "2.0.3",
- "2.0.2",
- "2.0.1",
- "2.0.0",
- "2.0.0-beta.8",
- "2.0.0-beta.7",
- "2.0.0-beta.6",
- "2.0.0-beta.5",
- "2.0.0-beta.4",
- "2.0.0-beta.3",
- "2.0.0-beta.2",
- "2.0.0-beta.1"
- ],
- "59.0.3071.115": [
- "1.8.8",
- "1.8.7",
- "1.8.6",
- "1.8.5",
- "1.8.4",
- "1.8.3",
- "1.8.2",
- "1.8.2-beta.5",
- "1.8.2-beta.4",
- "1.8.2-beta.3",
- "1.8.2-beta.2",
- "1.8.2-beta.1",
- "1.8.1",
- "1.8.0"
- ],
- "58.0.3029.110": [
- "1.7.16",
- "1.7.15",
- "1.7.14",
- "1.7.13",
- "1.7.12",
- "1.7.11",
- "1.7.10",
- "1.7.9",
- "1.7.8",
- "1.7.7",
- "1.7.6",
- "1.7.5",
- "1.7.4",
- "1.7.3",
- "1.7.2",
- "1.7.1",
- "1.7.0"
- ],
- "56.0.2924.87": [
- "1.6.18",
- "1.6.17",
- "1.6.16",
- "1.6.15",
- "1.6.14",
- "1.6.13",
- "1.6.12",
- "1.6.11",
- "1.6.10",
- "1.6.9",
- "1.6.8",
- "1.6.7",
- "1.6.6",
- "1.6.5",
- "1.6.4",
- "1.6.3",
- "1.6.2",
- "1.6.1",
- "1.6.0"
- ],
- "54.0.2840.101": [
- "1.5.1",
- "1.5.0"
- ],
- "53.0.2785.143": [
- "1.4.16",
- "1.4.15",
- "1.4.14",
- "1.4.13",
- "1.4.11",
- "1.4.10",
- "1.4.8",
- "1.4.7",
- "1.4.6"
- ],
- "54.0.2840.51": [
- "1.4.12"
- ],
- "53.0.2785.113": [
- "1.4.5",
- "1.4.4",
- "1.4.3",
- "1.4.2",
- "1.4.1",
- "1.4.0"
- ],
- "52.0.2743.82": [
- "1.3.15",
- "1.3.14",
- "1.3.13",
- "1.3.10",
- "1.3.9",
- "1.3.7",
- "1.3.6",
- "1.3.5",
- "1.3.4",
- "1.3.3",
- "1.3.2",
- "1.3.1",
- "1.3.0"
- ],
- "51.0.2704.106": [
- "1.2.8",
- "1.2.7",
- "1.2.6"
- ],
- "51.0.2704.103": [
- "1.2.5",
- "1.2.4"
- ],
- "51.0.2704.84": [
- "1.2.3",
- "1.2.2"
- ],
- "51.0.2704.63": [
- "1.2.1",
- "1.2.0"
- ],
- "50.0.2661.102": [
- "1.1.3",
- "1.1.2",
- "1.1.1",
- "1.1.0"
- ],
- "49.0.2623.75": [
- "1.0.2",
- "1.0.1",
- "1.0.0",
- "0.37.8",
- "0.37.7",
- "0.37.6",
- "0.37.5",
- "0.37.4",
- "0.37.3",
- "0.37.1",
- "0.37.0"
- ],
- "47.0.2526.110": [
- "0.36.12",
- "0.36.11",
- "0.36.10",
- "0.36.9",
- "0.36.8",
- "0.36.7",
- "0.36.6",
- "0.36.5"
- ],
- "47.0.2526.73": [
- "0.36.4",
- "0.36.3",
- "0.36.2",
- "0.36.0"
- ],
- "45.0.2454.85": [
- "0.35.5",
- "0.35.4",
- "0.35.3",
- "0.35.2",
- "0.35.1",
- "0.34.4",
- "0.34.3",
- "0.34.2",
- "0.34.1",
- "0.34.0",
- "0.33.9",
- "0.33.8",
- "0.33.7",
- "0.33.6",
- "0.33.4",
- "0.33.3",
- "0.33.2",
- "0.33.1",
- "0.33.0",
- "0.32.3",
- "0.32.2",
- "0.31.2"
- ],
- "44.0.2403.125": [
- "0.31.0",
- "0.30.4"
- ],
- "43.0.2357.65": [
- "0.29.2",
- "0.29.1",
- "0.28.3",
- "0.28.2",
- "0.28.1",
- "0.28.0",
- "0.27.3",
- "0.27.2"
- ],
- "42.0.2311.107": [
- "0.27.1",
- "0.27.0",
- "0.26.1",
- "0.26.0",
- "0.25.3",
- "0.25.2",
- "0.25.1",
- "0.25.0"
- ],
- "41.0.2272.76": [
- "0.24.0",
- "0.23.0",
- "0.22.3",
- "0.22.2",
- "0.22.1",
- "0.21.3"
- ],
- "40.0.2214.91": [
- "0.21.2",
- "0.21.1",
- "0.21.0"
- ],
- "39.0.2171.65": [
- "0.20.8",
- "0.20.7",
- "0.20.6",
- "0.20.5",
- "0.20.4",
- "0.20.3",
- "0.20.2",
- "0.20.1",
- "0.20.0"
- ]
-}; \ No newline at end of file
diff --git a/assets/node_modules/electron-to-chromium/full-versions.js b/assets/node_modules/electron-to-chromium/full-versions.js
deleted file mode 100644
index 62d1ad7..0000000
--- a/assets/node_modules/electron-to-chromium/full-versions.js
+++ /dev/null
@@ -1,530 +0,0 @@
-module.exports = {
- "9.0.0-nightly.20200121": "81.0.4030.0",
- "9.0.0-nightly.20200119": "81.0.4030.0",
- "9.0.0-nightly.20200117": "81.0.3994.0",
- "9.0.0-nightly.20200116": "81.0.3994.0",
- "9.0.0-nightly.20200115": "81.0.3994.0",
- "9.0.0-nightly.20200113": "81.0.3994.0",
- "9.0.0-nightly.20200111": "81.0.3994.0",
- "9.0.0-nightly.20200110": "81.0.3994.0",
- "9.0.0-nightly.20200109": "81.0.3994.0",
- "9.0.0-nightly.20200108": "81.0.3994.0",
- "9.0.0-nightly.20200106": "81.0.3994.0",
- "9.0.0-nightly.20200105": "81.0.3994.0",
- "9.0.0-nightly.20200104": "81.0.3994.0",
- "9.0.0-nightly.20200103": "81.0.3994.0",
- "9.0.0-nightly.20200101": "81.0.3994.0",
- "9.0.0-nightly.20191231": "81.0.3994.0",
- "9.0.0-nightly.20191230": "81.0.3994.0",
- "9.0.0-nightly.20191229": "81.0.3994.0",
- "9.0.0-nightly.20191228": "81.0.3994.0",
- "9.0.0-nightly.20191226": "81.0.3994.0",
- "9.0.0-nightly.20191225": "81.0.3994.0",
- "9.0.0-nightly.20191224": "81.0.3994.0",
- "9.0.0-nightly.20191223": "81.0.3994.0",
- "9.0.0-nightly.20191222": "81.0.3994.0",
- "9.0.0-nightly.20191221": "81.0.3994.0",
- "9.0.0-nightly.20191220": "81.0.3994.0",
- "9.0.0-nightly.20191210": "80.0.3954.0",
- "9.0.0-nightly.20191204": "80.0.3954.0",
- "9.0.0-nightly.20191203": "80.0.3954.0",
- "9.0.0-nightly.20191202": "80.0.3954.0",
- "9.0.0-nightly.20191201": "80.0.3954.0",
- "9.0.0-nightly.20191130": "80.0.3954.0",
- "9.0.0-nightly.20191129": "80.0.3954.0",
- "9.0.0-nightly.20191124": "80.0.3954.0",
- "9.0.0-nightly.20191123": "80.0.3954.0",
- "9.0.0-nightly.20191122": "80.0.3954.0",
- "9.0.0-nightly.20191121": "80.0.3954.0",
- "8.0.0": "80.0.3987.86",
- "8.0.0-nightly.20191105": "80.0.3952.0",
- "8.0.0-nightly.20191101": "80.0.3952.0",
- "8.0.0-nightly.20191023": "79.0.3931.0",
- "8.0.0-nightly.20191021": "79.0.3931.0",
- "8.0.0-nightly.20191020": "79.0.3931.0",
- "8.0.0-nightly.20191019": "79.0.3931.0",
- "8.0.0-nightly.20191017": "79.0.3919.0",
- "8.0.0-nightly.20191012": "79.0.3919.0",
- "8.0.0-nightly.20191011": "79.0.3919.0",
- "8.0.0-nightly.20191009": "79.0.3919.0",
- "8.0.0-nightly.20191006": "79.0.3919.0",
- "8.0.0-nightly.20191005": "79.0.3919.0",
- "8.0.0-nightly.20191004": "79.0.3919.0",
- "8.0.0-nightly.20191001": "79.0.3919.0",
- "8.0.0-nightly.20190930": "79.0.3919.0",
- "8.0.0-nightly.20190929": "79.0.3919.0",
- "8.0.0-nightly.20190926": "79.0.3919.0",
- "8.0.0-nightly.20190924": "79.0.3919.0",
- "8.0.0-nightly.20190923": "79.0.3919.0",
- "8.0.0-nightly.20190920": "79.0.3915.0",
- "8.0.0-nightly.20190919": "79.0.3915.0",
- "8.0.0-nightly.20190917": "78.0.3892.0",
- "8.0.0-nightly.20190915": "78.0.3892.0",
- "8.0.0-nightly.20190914": "78.0.3892.0",
- "8.0.0-nightly.20190913": "78.0.3892.0",
- "8.0.0-nightly.20190911": "78.0.3892.0",
- "8.0.0-nightly.20190910": "78.0.3892.0",
- "8.0.0-nightly.20190909": "78.0.3892.0",
- "8.0.0-nightly.20190907": "78.0.3892.0",
- "8.0.0-nightly.20190902": "78.0.3892.0",
- "8.0.0-nightly.20190901": "78.0.3892.0",
- "8.0.0-nightly.20190830": "78.0.3892.0",
- "8.0.0-nightly.20190828": "78.0.3892.0",
- "8.0.0-nightly.20190827": "78.0.3892.0",
- "8.0.0-nightly.20190825": "78.0.3892.0",
- "8.0.0-nightly.20190824": "78.0.3892.0",
- "8.0.0-nightly.20190820": "78.0.3881.0",
- "8.0.0-nightly.20190819": "78.0.3881.0",
- "8.0.0-nightly.20190818": "78.0.3881.0",
- "8.0.0-nightly.20190817": "78.0.3881.0",
- "8.0.0-nightly.20190816": "78.0.3881.0",
- "8.0.0-nightly.20190815": "78.0.3871.0",
- "8.0.0-nightly.20190814": "78.0.3871.0",
- "8.0.0-nightly.20190813": "78.0.3871.0",
- "8.0.0-nightly.20190812": "78.0.3871.0",
- "8.0.0-nightly.20190811": "78.0.3871.0",
- "8.0.0-nightly.20190810": "78.0.3871.0",
- "8.0.0-nightly.20190809": "78.0.3871.0",
- "8.0.0-nightly.20190808": "78.0.3871.0",
- "8.0.0-nightly.20190807": "78.0.3871.0",
- "8.0.0-nightly.20190806": "78.0.3871.0",
- "8.0.0-nightly.20190803": "78.0.3871.0",
- "8.0.0-nightly.20190802": "78.0.3866.0",
- "8.0.0-nightly.20190801": "78.0.3866.0",
- "8.0.0-beta.9": "80.0.3987.75",
- "8.0.0-beta.8": "80.0.3987.75",
- "8.0.0-beta.7": "80.0.3987.59",
- "8.0.0-beta.6": "80.0.3987.51",
- "8.0.0-beta.5": "80.0.3987.14",
- "8.0.0-beta.4": "80.0.3955.0",
- "8.0.0-beta.3": "80.0.3955.0",
- "8.0.0-beta.2": "79.0.3931.0",
- "8.0.0-beta.1": "79.0.3931.0",
- "7.1.11": "78.0.3904.130",
- "7.1.10": "78.0.3904.130",
- "7.1.9": "78.0.3904.130",
- "7.1.8": "78.0.3904.130",
- "7.1.7": "78.0.3904.130",
- "7.1.6": "78.0.3904.130",
- "7.1.5": "78.0.3904.130",
- "7.1.4": "78.0.3904.130",
- "7.1.3": "78.0.3904.126",
- "7.1.2": "78.0.3904.113",
- "7.1.1": "78.0.3904.99",
- "7.1.0": "78.0.3904.94",
- "7.0.1": "78.0.3904.92",
- "7.0.0": "78.0.3905.1",
- "7.0.0-nightly.20190731": "78.0.3866.0",
- "7.0.0-nightly.20190730": "78.0.3866.0",
- "7.0.0-nightly.20190729": "78.0.3866.0",
- "7.0.0-nightly.20190728": "78.0.3866.0",
- "7.0.0-nightly.20190727": "78.0.3866.0",
- "7.0.0-nightly.20190726": "77.0.3864.0",
- "7.0.0-nightly.20190721": "77.0.3848.0",
- "7.0.0-nightly.20190720": "77.0.3848.0",
- "7.0.0-nightly.20190719": "77.0.3848.0",
- "7.0.0-nightly.20190705": "77.0.3843.0",
- "7.0.0-nightly.20190704": "77.0.3843.0",
- "7.0.0-nightly.20190702": "77.0.3815.0",
- "7.0.0-nightly.20190701": "77.0.3815.0",
- "7.0.0-nightly.20190630": "77.0.3815.0",
- "7.0.0-nightly.20190629": "77.0.3815.0",
- "7.0.0-nightly.20190627": "77.0.3815.0",
- "7.0.0-nightly.20190624": "77.0.3815.0",
- "7.0.0-nightly.20190623": "77.0.3815.0",
- "7.0.0-nightly.20190622": "77.0.3815.0",
- "7.0.0-nightly.20190619": "77.0.3815.0",
- "7.0.0-nightly.20190618": "77.0.3815.0",
- "7.0.0-nightly.20190616": "77.0.3815.0",
- "7.0.0-nightly.20190615": "77.0.3815.0",
- "7.0.0-nightly.20190613": "77.0.3815.0",
- "7.0.0-nightly.20190612": "77.0.3815.0",
- "7.0.0-nightly.20190611": "77.0.3815.0",
- "7.0.0-nightly.20190609": "77.0.3815.0",
- "7.0.0-nightly.20190608": "77.0.3815.0",
- "7.0.0-nightly.20190607": "77.0.3815.0",
- "7.0.0-nightly.20190606": "77.0.3815.0",
- "7.0.0-nightly.20190605": "77.0.3815.0",
- "7.0.0-nightly.20190604": "77.0.3814.0",
- "7.0.0-nightly.20190603": "76.0.3806.0",
- "7.0.0-nightly.20190602": "76.0.3806.0",
- "7.0.0-nightly.20190531": "76.0.3806.0",
- "7.0.0-nightly.20190530": "76.0.3806.0",
- "7.0.0-nightly.20190529": "76.0.3806.0",
- "7.0.0-nightly.20190521": "76.0.3784.0",
- "7.0.0-beta.7": "78.0.3905.1",
- "7.0.0-beta.6": "78.0.3905.1",
- "7.0.0-beta.5": "78.0.3905.1",
- "7.0.0-beta.4": "78.0.3896.6",
- "7.0.0-beta.3": "78.0.3866.0",
- "7.0.0-beta.2": "78.0.3866.0",
- "7.0.0-beta.1": "78.0.3866.0",
- "6.1.7": "76.0.3809.146",
- "6.1.6": "76.0.3809.146",
- "6.1.5": "76.0.3809.146",
- "6.1.4": "76.0.3809.146",
- "6.1.3": "76.0.3809.146",
- "6.1.2": "76.0.3809.146",
- "6.1.1": "76.0.3809.146",
- "6.1.0": "76.0.3809.146",
- "6.0.12": "76.0.3809.146",
- "6.0.11": "76.0.3809.146",
- "6.0.10": "76.0.3809.146",
- "6.0.9": "76.0.3809.146",
- "6.0.8": "76.0.3809.146",
- "6.0.7": "76.0.3809.139",
- "6.0.6": "76.0.3809.138",
- "6.0.5": "76.0.3809.136",
- "6.0.4": "76.0.3809.131",
- "6.0.3": "76.0.3809.126",
- "6.0.2": "76.0.3809.110",
- "6.0.1": "76.0.3809.102",
- "6.0.0": "76.0.3809.88",
- "6.0.0-nightly.20190311": "74.0.3724.8",
- "6.0.0-nightly.20190213": "72.0.3626.110",
- "6.0.0-nightly.20190212": "72.0.3626.107",
- "6.0.0-beta.15": "76.0.3809.74",
- "6.0.0-beta.14": "76.0.3809.68",
- "6.0.0-beta.13": "76.0.3809.60",
- "6.0.0-beta.12": "76.0.3809.54",
- "6.0.0-beta.11": "76.0.3809.42",
- "6.0.0-beta.10": "76.0.3809.37",
- "6.0.0-beta.9": "76.0.3809.26",
- "6.0.0-beta.8": "76.0.3809.26",
- "6.0.0-beta.7": "76.0.3809.22",
- "6.0.0-beta.6": "76.0.3809.3",
- "6.0.0-beta.5": "76.0.3805.4",
- "6.0.0-beta.4": "76.0.3783.1",
- "6.0.0-beta.3": "76.0.3783.1",
- "6.0.0-beta.2": "76.0.3783.1",
- "6.0.0-beta.1": "76.0.3774.1",
- "5.0.13": "73.0.3683.121",
- "5.0.12": "73.0.3683.121",
- "5.0.11": "73.0.3683.121",
- "5.0.10": "73.0.3683.121",
- "5.0.9": "73.0.3683.121",
- "5.0.8": "73.0.3683.121",
- "5.0.7": "73.0.3683.121",
- "5.0.6": "73.0.3683.121",
- "5.0.5": "73.0.3683.121",
- "5.0.4": "73.0.3683.121",
- "5.0.3": "73.0.3683.121",
- "5.0.2": "73.0.3683.121",
- "5.0.1": "73.0.3683.121",
- "5.0.0": "73.0.3683.119",
- "5.0.0-nightly.20190122": "71.0.3578.98",
- "5.0.0-nightly.20190121": "71.0.3578.98",
- "5.0.0-nightly.20190107": "70.0.3538.110",
- "5.0.0-beta.9": "73.0.3683.117",
- "5.0.0-beta.8": "73.0.3683.104",
- "5.0.0-beta.7": "73.0.3683.94",
- "5.0.0-beta.6": "73.0.3683.84",
- "5.0.0-beta.5": "73.0.3683.61",
- "5.0.0-beta.4": "73.0.3683.54",
- "5.0.0-beta.3": "73.0.3683.27",
- "5.0.0-beta.2": "72.0.3626.52",
- "5.0.0-beta.1": "72.0.3626.52",
- "4.2.12": "69.0.3497.128",
- "4.2.11": "69.0.3497.128",
- "4.2.10": "69.0.3497.128",
- "4.2.9": "69.0.3497.128",
- "4.2.8": "69.0.3497.128",
- "4.2.7": "69.0.3497.128",
- "4.2.6": "69.0.3497.128",
- "4.2.5": "69.0.3497.128",
- "4.2.4": "69.0.3497.128",
- "4.2.3": "69.0.3497.128",
- "4.2.2": "69.0.3497.128",
- "4.2.1": "69.0.3497.128",
- "4.2.0": "69.0.3497.128",
- "4.1.5": "69.0.3497.128",
- "4.1.4": "69.0.3497.128",
- "4.1.3": "69.0.3497.128",
- "4.1.2": "69.0.3497.128",
- "4.1.1": "69.0.3497.128",
- "4.1.0": "69.0.3497.128",
- "4.0.8": "69.0.3497.128",
- "4.0.7": "69.0.3497.128",
- "4.0.6": "69.0.3497.106",
- "4.0.5": "69.0.3497.106",
- "4.0.4": "69.0.3497.106",
- "4.0.3": "69.0.3497.106",
- "4.0.2": "69.0.3497.106",
- "4.0.1": "69.0.3497.106",
- "4.0.0": "69.0.3497.106",
- "4.0.0-nightly.20181010": "69.0.3497.106",
- "4.0.0-nightly.20181006": "68.0.3440.128",
- "4.0.0-nightly.20180929": "67.0.3396.99",
- "4.0.0-nightly.20180821": "66.0.3359.181",
- "4.0.0-nightly.20180819": "66.0.3359.181",
- "4.0.0-nightly.20180817": "66.0.3359.181",
- "4.0.0-beta.11": "69.0.3497.106",
- "4.0.0-beta.10": "69.0.3497.106",
- "4.0.0-beta.9": "69.0.3497.106",
- "4.0.0-beta.8": "69.0.3497.106",
- "4.0.0-beta.7": "69.0.3497.106",
- "4.0.0-beta.6": "69.0.3497.106",
- "4.0.0-beta.5": "69.0.3497.106",
- "4.0.0-beta.4": "69.0.3497.106",
- "4.0.0-beta.3": "69.0.3497.106",
- "4.0.0-beta.2": "69.0.3497.106",
- "4.0.0-beta.1": "69.0.3497.106",
- "3.1.13": "66.0.3359.181",
- "3.1.12": "66.0.3359.181",
- "3.1.11": "66.0.3359.181",
- "3.1.10": "66.0.3359.181",
- "3.1.9": "66.0.3359.181",
- "3.1.8": "66.0.3359.181",
- "3.1.7": "66.0.3359.181",
- "3.1.6": "66.0.3359.181",
- "3.1.5": "66.0.3359.181",
- "3.1.4": "66.0.3359.181",
- "3.1.3": "66.0.3359.181",
- "3.1.2": "66.0.3359.181",
- "3.1.1": "66.0.3359.181",
- "3.1.0": "66.0.3359.181",
- "3.1.0-beta.5": "66.0.3359.181",
- "3.1.0-beta.4": "66.0.3359.181",
- "3.1.0-beta.3": "66.0.3359.181",
- "3.1.0-beta.2": "66.0.3359.181",
- "3.1.0-beta.1": "66.0.3359.181",
- "3.0.16": "66.0.3359.181",
- "3.0.15": "66.0.3359.181",
- "3.0.14": "66.0.3359.181",
- "3.0.13": "66.0.3359.181",
- "3.0.12": "66.0.3359.181",
- "3.0.11": "66.0.3359.181",
- "3.0.10": "66.0.3359.181",
- "3.0.9": "66.0.3359.181",
- "3.0.8": "66.0.3359.181",
- "3.0.7": "66.0.3359.181",
- "3.0.6": "66.0.3359.181",
- "3.0.5": "66.0.3359.181",
- "3.0.4": "66.0.3359.181",
- "3.0.3": "66.0.3359.181",
- "3.0.2": "66.0.3359.181",
- "3.0.1": "66.0.3359.181",
- "3.0.0": "66.0.3359.181",
- "3.0.0-nightly.20180904": "66.0.3359.181",
- "3.0.0-nightly.20180823": "66.0.3359.181",
- "3.0.0-nightly.20180821": "66.0.3359.181",
- "3.0.0-nightly.20180818": "66.0.3359.181",
- "3.0.0-beta.13": "66.0.3359.181",
- "3.0.0-beta.12": "66.0.3359.181",
- "3.0.0-beta.11": "66.0.3359.181",
- "3.0.0-beta.10": "66.0.3359.181",
- "3.0.0-beta.9": "66.0.3359.181",
- "3.0.0-beta.8": "66.0.3359.181",
- "3.0.0-beta.7": "66.0.3359.181",
- "3.0.0-beta.6": "66.0.3359.181",
- "3.0.0-beta.5": "66.0.3359.181",
- "3.0.0-beta.4": "66.0.3359.181",
- "3.0.0-beta.3": "66.0.3359.181",
- "3.0.0-beta.2": "66.0.3359.181",
- "3.0.0-beta.1": "66.0.3359.181",
- "2.1.0-unsupported.20180809": "61.0.3163.100",
- "2.0.18": "61.0.3163.100",
- "2.0.17": "61.0.3163.100",
- "2.0.16": "61.0.3163.100",
- "2.0.15": "61.0.3163.100",
- "2.0.14": "61.0.3163.100",
- "2.0.13": "61.0.3163.100",
- "2.0.12": "61.0.3163.100",
- "2.0.11": "61.0.3163.100",
- "2.0.10": "61.0.3163.100",
- "2.0.9": "61.0.3163.100",
- "2.0.8": "61.0.3163.100",
- "2.0.8-nightly.20180820": "61.0.3163.100",
- "2.0.8-nightly.20180819": "61.0.3163.100",
- "2.0.7": "61.0.3163.100",
- "2.0.6": "61.0.3163.100",
- "2.0.5": "61.0.3163.100",
- "2.0.4": "61.0.3163.100",
- "2.0.3": "61.0.3163.100",
- "2.0.2": "61.0.3163.100",
- "2.0.1": "61.0.3163.100",
- "2.0.0": "61.0.3163.100",
- "2.0.0-beta.8": "61.0.3163.100",
- "2.0.0-beta.7": "61.0.3163.100",
- "2.0.0-beta.6": "61.0.3163.100",
- "2.0.0-beta.5": "61.0.3163.100",
- "2.0.0-beta.4": "61.0.3163.100",
- "2.0.0-beta.3": "61.0.3163.100",
- "2.0.0-beta.2": "61.0.3163.100",
- "2.0.0-beta.1": "61.0.3163.100",
- "1.8.8": "59.0.3071.115",
- "1.8.7": "59.0.3071.115",
- "1.8.6": "59.0.3071.115",
- "1.8.5": "59.0.3071.115",
- "1.8.4": "59.0.3071.115",
- "1.8.3": "59.0.3071.115",
- "1.8.2": "59.0.3071.115",
- "1.8.2-beta.5": "59.0.3071.115",
- "1.8.2-beta.4": "59.0.3071.115",
- "1.8.2-beta.3": "59.0.3071.115",
- "1.8.2-beta.2": "59.0.3071.115",
- "1.8.2-beta.1": "59.0.3071.115",
- "1.8.1": "59.0.3071.115",
- "1.8.0": "59.0.3071.115",
- "1.7.16": "58.0.3029.110",
- "1.7.15": "58.0.3029.110",
- "1.7.14": "58.0.3029.110",
- "1.7.13": "58.0.3029.110",
- "1.7.12": "58.0.3029.110",
- "1.7.11": "58.0.3029.110",
- "1.7.10": "58.0.3029.110",
- "1.7.9": "58.0.3029.110",
- "1.7.8": "58.0.3029.110",
- "1.7.7": "58.0.3029.110",
- "1.7.6": "58.0.3029.110",
- "1.7.5": "58.0.3029.110",
- "1.7.4": "58.0.3029.110",
- "1.7.3": "58.0.3029.110",
- "1.7.2": "58.0.3029.110",
- "1.7.1": "58.0.3029.110",
- "1.7.0": "58.0.3029.110",
- "1.6.18": "56.0.2924.87",
- "1.6.17": "56.0.2924.87",
- "1.6.16": "56.0.2924.87",
- "1.6.15": "56.0.2924.87",
- "1.6.14": "56.0.2924.87",
- "1.6.13": "56.0.2924.87",
- "1.6.12": "56.0.2924.87",
- "1.6.11": "56.0.2924.87",
- "1.6.10": "56.0.2924.87",
- "1.6.9": "56.0.2924.87",
- "1.6.8": "56.0.2924.87",
- "1.6.7": "56.0.2924.87",
- "1.6.6": "56.0.2924.87",
- "1.6.5": "56.0.2924.87",
- "1.6.4": "56.0.2924.87",
- "1.6.3": "56.0.2924.87",
- "1.6.2": "56.0.2924.87",
- "1.6.1": "56.0.2924.87",
- "1.6.0": "56.0.2924.87",
- "1.5.1": "54.0.2840.101",
- "1.5.0": "54.0.2840.101",
- "1.4.16": "53.0.2785.143",
- "1.4.15": "53.0.2785.143",
- "1.4.14": "53.0.2785.143",
- "1.4.13": "53.0.2785.143",
- "1.4.12": "54.0.2840.51",
- "1.4.11": "53.0.2785.143",
- "1.4.10": "53.0.2785.143",
- "1.4.8": "53.0.2785.143",
- "1.4.7": "53.0.2785.143",
- "1.4.6": "53.0.2785.143",
- "1.4.5": "53.0.2785.113",
- "1.4.4": "53.0.2785.113",
- "1.4.3": "53.0.2785.113",
- "1.4.2": "53.0.2785.113",
- "1.4.1": "53.0.2785.113",
- "1.4.0": "53.0.2785.113",
- "1.3.15": "52.0.2743.82",
- "1.3.14": "52.0.2743.82",
- "1.3.13": "52.0.2743.82",
- "1.3.10": "52.0.2743.82",
- "1.3.9": "52.0.2743.82",
- "1.3.7": "52.0.2743.82",
- "1.3.6": "52.0.2743.82",
- "1.3.5": "52.0.2743.82",
- "1.3.4": "52.0.2743.82",
- "1.3.3": "52.0.2743.82",
- "1.3.2": "52.0.2743.82",
- "1.3.1": "52.0.2743.82",
- "1.3.0": "52.0.2743.82",
- "1.2.8": "51.0.2704.106",
- "1.2.7": "51.0.2704.106",
- "1.2.6": "51.0.2704.106",
- "1.2.5": "51.0.2704.103",
- "1.2.4": "51.0.2704.103",
- "1.2.3": "51.0.2704.84",
- "1.2.2": "51.0.2704.84",
- "1.2.1": "51.0.2704.63",
- "1.2.0": "51.0.2704.63",
- "1.1.3": "50.0.2661.102",
- "1.1.2": "50.0.2661.102",
- "1.1.1": "50.0.2661.102",
- "1.1.0": "50.0.2661.102",
- "1.0.2": "49.0.2623.75",
- "1.0.1": "49.0.2623.75",
- "1.0.0": "49.0.2623.75",
- "0.37.8": "49.0.2623.75",
- "0.37.7": "49.0.2623.75",
- "0.37.6": "49.0.2623.75",
- "0.37.5": "49.0.2623.75",
- "0.37.4": "49.0.2623.75",
- "0.37.3": "49.0.2623.75",
- "0.37.1": "49.0.2623.75",
- "0.37.0": "49.0.2623.75",
- "0.36.12": "47.0.2526.110",
- "0.36.11": "47.0.2526.110",
- "0.36.10": "47.0.2526.110",
- "0.36.9": "47.0.2526.110",
- "0.36.8": "47.0.2526.110",
- "0.36.7": "47.0.2526.110",
- "0.36.6": "47.0.2526.110",
- "0.36.5": "47.0.2526.110",
- "0.36.4": "47.0.2526.73",
- "0.36.3": "47.0.2526.73",
- "0.36.2": "47.0.2526.73",
- "0.36.0": "47.0.2526.73",
- "0.35.5": "45.0.2454.85",
- "0.35.4": "45.0.2454.85",
- "0.35.3": "45.0.2454.85",
- "0.35.2": "45.0.2454.85",
- "0.35.1": "45.0.2454.85",
- "0.34.4": "45.0.2454.85",
- "0.34.3": "45.0.2454.85",
- "0.34.2": "45.0.2454.85",
- "0.34.1": "45.0.2454.85",
- "0.34.0": "45.0.2454.85",
- "0.33.9": "45.0.2454.85",
- "0.33.8": "45.0.2454.85",
- "0.33.7": "45.0.2454.85",
- "0.33.6": "45.0.2454.85",
- "0.33.4": "45.0.2454.85",
- "0.33.3": "45.0.2454.85",
- "0.33.2": "45.0.2454.85",
- "0.33.1": "45.0.2454.85",
- "0.33.0": "45.0.2454.85",
- "0.32.3": "45.0.2454.85",
- "0.32.2": "45.0.2454.85",
- "0.31.2": "45.0.2454.85",
- "0.31.0": "44.0.2403.125",
- "0.30.4": "44.0.2403.125",
- "0.29.2": "43.0.2357.65",
- "0.29.1": "43.0.2357.65",
- "0.28.3": "43.0.2357.65",
- "0.28.2": "43.0.2357.65",
- "0.28.1": "43.0.2357.65",
- "0.28.0": "43.0.2357.65",
- "0.27.3": "43.0.2357.65",
- "0.27.2": "43.0.2357.65",
- "0.27.1": "42.0.2311.107",
- "0.27.0": "42.0.2311.107",
- "0.26.1": "42.0.2311.107",
- "0.26.0": "42.0.2311.107",
- "0.25.3": "42.0.2311.107",
- "0.25.2": "42.0.2311.107",
- "0.25.1": "42.0.2311.107",
- "0.25.0": "42.0.2311.107",
- "0.24.0": "41.0.2272.76",
- "0.23.0": "41.0.2272.76",
- "0.22.3": "41.0.2272.76",
- "0.22.2": "41.0.2272.76",
- "0.22.1": "41.0.2272.76",
- "0.21.3": "41.0.2272.76",
- "0.21.2": "40.0.2214.91",
- "0.21.1": "40.0.2214.91",
- "0.21.0": "40.0.2214.91",
- "0.20.8": "39.0.2171.65",
- "0.20.7": "39.0.2171.65",
- "0.20.6": "39.0.2171.65",
- "0.20.5": "39.0.2171.65",
- "0.20.4": "39.0.2171.65",
- "0.20.3": "39.0.2171.65",
- "0.20.2": "39.0.2171.65",
- "0.20.1": "39.0.2171.65",
- "0.20.0": "39.0.2171.65"
-}; \ No newline at end of file
diff --git a/assets/node_modules/electron-to-chromium/index.js b/assets/node_modules/electron-to-chromium/index.js
deleted file mode 100644
index 1818281..0000000
--- a/assets/node_modules/electron-to-chromium/index.js
+++ /dev/null
@@ -1,36 +0,0 @@
-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/assets/node_modules/electron-to-chromium/package.json b/assets/node_modules/electron-to-chromium/package.json
deleted file mode 100644
index 0944b49..0000000
--- a/assets/node_modules/electron-to-chromium/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "electron-to-chromium",
- "version": "1.3.345",
- "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",
- "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": "^1.1.0",
- "codecov": "^3.1.0",
- "electron-releases": "^3.340.0",
- "nyc": "^13.3.0",
- "request": "^2.88.0",
- "shelljs": "^0.7.6"
- }
-}
diff --git a/assets/node_modules/electron-to-chromium/versions.js b/assets/node_modules/electron-to-chromium/versions.js
deleted file mode 100644
index e384983..0000000
--- a/assets/node_modules/electron-to-chromium/versions.js
+++ /dev/null
@@ -1,42 +0,0 @@
-module.exports = {
- "8.0": "79",
- "7.1": "78",
- "7.0": "78",
- "6.1": "76",
- "6.0": "76",
- "5.0": "72",
- "4.2": "69",
- "4.1": "69",
- "4.0": "69",
- "3.1": "66",
- "3.0": "66",
- "2.1": "61",
- "2.0": "61",
- "1.8": "59",
- "1.7": "58",
- "1.6": "56",
- "1.5": "54",
- "1.4": "53",
- "1.3": "52",
- "1.2": "51",
- "1.1": "50",
- "1.0": "49",
- "0.37": "49",
- "0.36": "47",
- "0.35": "45",
- "0.34": "45",
- "0.33": "45",
- "0.32": "45",
- "0.31": "44",
- "0.30": "44",
- "0.29": "43",
- "0.28": "43",
- "0.27": "42",
- "0.26": "42",
- "0.25": "42",
- "0.24": "41",
- "0.23": "41",
- "0.22": "41",
- "0.21": "40",
- "0.20": "39"
-}; \ No newline at end of file
diff --git a/assets/node_modules/emoji-regex/LICENSE-MIT.txt b/assets/node_modules/emoji-regex/LICENSE-MIT.txt
deleted file mode 100644
index a41e0a7..0000000
--- a/assets/node_modules/emoji-regex/LICENSE-MIT.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-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/assets/node_modules/emoji-regex/README.md b/assets/node_modules/emoji-regex/README.md
deleted file mode 100644
index f10e173..0000000
--- a/assets/node_modules/emoji-regex/README.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# emoji-regex [![Build status](https://travis-ci.org/mathiasbynens/emoji-regex.svg?branch=master)](https://travis-ci.org/mathiasbynens/emoji-regex)
-
-_emoji-regex_ offers a regular expression to match all emoji symbols (including textual representations of emoji) as per the Unicode Standard.
-
-This repository contains a script that generates this regular expression based on [the data from Unicode v12](https://github.com/mathiasbynens/unicode-12.0.0). Because of this, the regular expression can easily be updated whenever new emoji are added to the Unicode standard.
-
-## Installation
-
-Via [npm](https://www.npmjs.com/):
-
-```bash
-npm install emoji-regex
-```
-
-In [Node.js](https://nodejs.org/):
-
-```js
-const emojiRegex = require('emoji-regex');
-// Note: because the regular expression has the global flag set, this module
-// exports a function that returns the regex rather than exporting the regular
-// expression itself, to make it impossible to (accidentally) mutate the
-// original regular expression.
-
-const text = `
-\u{231A}: ⌚ default emoji presentation character (Emoji_Presentation)
-\u{2194}\u{FE0F}: ↔️ default text presentation character rendered as emoji
-\u{1F469}: 👩 emoji modifier base (Emoji_Modifier_Base)
-\u{1F469}\u{1F3FF}: 👩🏿 emoji modifier base followed by a modifier
-`;
-
-const regex = emojiRegex();
-let match;
-while (match = regex.exec(text)) {
- const emoji = match[0];
- console.log(`Matched sequence ${ emoji } — code points: ${ [...emoji].length }`);
-}
-```
-
-Console output:
-
-```
-Matched sequence ⌚ — code points: 1
-Matched sequence ⌚ — code points: 1
-Matched sequence ↔️ — code points: 2
-Matched sequence ↔️ — code points: 2
-Matched sequence 👩 — code points: 1
-Matched sequence 👩 — code points: 1
-Matched sequence 👩🏿 — code points: 2
-Matched sequence 👩🏿 — code points: 2
-```
-
-To match emoji in their textual representation as well (i.e. emoji that are not `Emoji_Presentation` symbols and that aren’t forced to render as emoji by a variation selector), `require` the other regex:
-
-```js
-const emojiRegex = require('emoji-regex/text.js');
-```
-
-Additionally, in environments which support ES2015 Unicode escapes, you may `require` ES2015-style versions of the regexes:
-
-```js
-const emojiRegex = require('emoji-regex/es2015/index.js');
-const emojiRegexText = require('emoji-regex/es2015/text.js');
-```
-
-## Author
-
-| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") |
-|---|
-| [Mathias Bynens](https://mathiasbynens.be/) |
-
-## License
-
-_emoji-regex_ is available under the [MIT](https://mths.be/mit) license.
diff --git a/assets/node_modules/emoji-regex/es2015/index.js b/assets/node_modules/emoji-regex/es2015/index.js
deleted file mode 100644
index b4cf3dc..0000000
--- a/assets/node_modules/emoji-regex/es2015/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-"use strict";
-
-module.exports = () => {
- // https://mths.be/emoji
- return /\u{1F3F4}\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0073}\u{E0063}\u{E0074}|\u{E0077}\u{E006C}\u{E0073})\u{E007F}|\u{1F468}(?:\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}\u{1F3FB}|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FE}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u2695\u2696\u2708]\uFE0F|[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|(?:\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F3FB}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}]|[\u{1F3FB}-\u{1F3FF}])|(?:\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469})\u{1F3FB}|\u{1F9D1}(?:\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u200D\u{1F91D}\u200D\u{1F9D1})|(?:\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D[\u{1F468}\u{1F469}])[\u{1F3FB}-\u{1F3FE}]|(?:\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}\u{1F3FC}]|\u{1F469}(?:\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FD}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FB}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FC}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}\u{1F3FE}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|(?:\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}-\u{1F3FD}]|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}(?:\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708]|\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F3F4}\u200D\u2620)\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F415}\u200D\u{1F9BA}|\u{1F469}\u200D\u{1F466}|\u{1F469}\u200D\u{1F467}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F1F6}\u{1F1E6}|[#\*0-9]\uFE0F\u20E3|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F46B}-\u{1F46D}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9BB}\u{1F9D2}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6D5}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6D5}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]\uFE0F|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F48F}\u{1F491}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93C}-\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9BB}\u{1F9CD}-\u{1F9CF}\u{1F9D1}-\u{1F9DD}]/gu;
-};
diff --git a/assets/node_modules/emoji-regex/es2015/text.js b/assets/node_modules/emoji-regex/es2015/text.js
deleted file mode 100644
index 780309d..0000000
--- a/assets/node_modules/emoji-regex/es2015/text.js
+++ /dev/null
@@ -1,6 +0,0 @@
-"use strict";
-
-module.exports = () => {
- // https://mths.be/emoji
- return /\u{1F3F4}\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0073}\u{E0063}\u{E0074}|\u{E0077}\u{E006C}\u{E0073})\u{E007F}|\u{1F468}(?:\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}\u{1F3FB}|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FE}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u2695\u2696\u2708]\uFE0F|[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|(?:\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F3FB}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}]|[\u{1F3FB}-\u{1F3FF}])|(?:\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469})\u{1F3FB}|\u{1F9D1}(?:\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u200D\u{1F91D}\u200D\u{1F9D1})|(?:\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D[\u{1F468}\u{1F469}])[\u{1F3FB}-\u{1F3FE}]|(?:\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}\u{1F3FC}]|\u{1F469}(?:\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FD}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FB}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FC}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}\u{1F3FE}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|(?:\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}-\u{1F3FD}]|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}(?:\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708]|\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F3F4}\u200D\u2620)\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F415}\u200D\u{1F9BA}|\u{1F469}\u200D\u{1F466}|\u{1F469}\u200D\u{1F467}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F1F6}\u{1F1E6}|[#\*0-9]\uFE0F\u20E3|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F46B}-\u{1F46D}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9BB}\u{1F9D2}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6D5}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6D5}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]\uFE0F?|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F48F}\u{1F491}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93C}-\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9BB}\u{1F9CD}-\u{1F9CF}\u{1F9D1}-\u{1F9DD}]/gu;
-};
diff --git a/assets/node_modules/emoji-regex/index.d.ts b/assets/node_modules/emoji-regex/index.d.ts
deleted file mode 100644
index 1955b47..0000000
--- a/assets/node_modules/emoji-regex/index.d.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-declare module 'emoji-regex' {
- function emojiRegex(): RegExp;
-
- export default emojiRegex;
-}
-
-declare module 'emoji-regex/text' {
- function emojiRegex(): RegExp;
-
- export default emojiRegex;
-}
-
-declare module 'emoji-regex/es2015' {
- function emojiRegex(): RegExp;
-
- export default emojiRegex;
-}
-
-declare module 'emoji-regex/es2015/text' {
- function emojiRegex(): RegExp;
-
- export default emojiRegex;
-}
diff --git a/assets/node_modules/emoji-regex/index.js b/assets/node_modules/emoji-regex/index.js
deleted file mode 100644
index d993a3a..0000000
--- a/assets/node_modules/emoji-regex/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-"use strict";
-
-module.exports = function () {
- // https://mths.be/emoji
- return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
-};
diff --git a/assets/node_modules/emoji-regex/package.json b/assets/node_modules/emoji-regex/package.json
deleted file mode 100644
index 6d32352..0000000
--- a/assets/node_modules/emoji-regex/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "name": "emoji-regex",
- "version": "8.0.0",
- "description": "A regular expression to match all Emoji-only symbols as per the Unicode Standard.",
- "homepage": "https://mths.be/emoji-regex",
- "main": "index.js",
- "types": "index.d.ts",
- "keywords": [
- "unicode",
- "regex",
- "regexp",
- "regular expressions",
- "code points",
- "symbols",
- "characters",
- "emoji"
- ],
- "license": "MIT",
- "author": {
- "name": "Mathias Bynens",
- "url": "https://mathiasbynens.be/"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/mathiasbynens/emoji-regex.git"
- },
- "bugs": "https://github.com/mathiasbynens/emoji-regex/issues",
- "files": [
- "LICENSE-MIT.txt",
- "index.js",
- "index.d.ts",
- "text.js",
- "es2015/index.js",
- "es2015/text.js"
- ],
- "scripts": {
- "build": "rm -rf -- es2015; babel src -d .; NODE_ENV=es2015 babel src -d ./es2015; node script/inject-sequences.js",
- "test": "mocha",
- "test:watch": "npm run test -- --watch"
- },
- "devDependencies": {
- "@babel/cli": "^7.2.3",
- "@babel/core": "^7.3.4",
- "@babel/plugin-proposal-unicode-property-regex": "^7.2.0",
- "@babel/preset-env": "^7.3.4",
- "mocha": "^6.0.2",
- "regexgen": "^1.3.0",
- "unicode-12.0.0": "^0.7.9"
- }
-}
diff --git a/assets/node_modules/emoji-regex/text.js b/assets/node_modules/emoji-regex/text.js
deleted file mode 100644
index 0a55ce2..0000000
--- a/assets/node_modules/emoji-regex/text.js
+++ /dev/null
@@ -1,6 +0,0 @@
-"use strict";
-
-module.exports = function () {
- // https://mths.be/emoji
- return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F?|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
-};
diff --git a/assets/node_modules/entities/.travis.yml b/assets/node_modules/entities/.travis.yml
deleted file mode 100644
index 0ce2af6..0000000
--- a/assets/node_modules/entities/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-sudo: true
-language: node_js
-node_js:
- - 8
-script: npm run coveralls
diff --git a/assets/node_modules/entities/LICENSE b/assets/node_modules/entities/LICENSE
deleted file mode 100644
index c464f86..0000000
--- a/assets/node_modules/entities/LICENSE
+++ /dev/null
@@ -1,11 +0,0 @@
-Copyright (c) Felix Böhm
-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.
-
-THIS 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,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/assets/node_modules/entities/index.js b/assets/node_modules/entities/index.js
deleted file mode 100644
index 91bf845..0000000
--- a/assets/node_modules/entities/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var encode = require("./lib/encode.js"),
- decode = require("./lib/decode.js");
-
-exports.decode = function(data, level) {
- return (!level || level <= 0 ? decode.XML : decode.HTML)(data);
-};
-
-exports.decodeStrict = function(data, level) {
- return (!level || level <= 0 ? decode.XML : decode.HTMLStrict)(data);
-};
-
-exports.encode = function(data, level) {
- return (!level || level <= 0 ? encode.XML : encode.HTML)(data);
-};
-
-exports.encodeXML = encode.XML;
-
-exports.encodeHTML4 = exports.encodeHTML5 = exports.encodeHTML = encode.HTML;
-
-exports.decodeXML = exports.decodeXMLStrict = decode.XML;
-
-exports.decodeHTML4 = exports.decodeHTML5 = exports.decodeHTML = decode.HTML;
-
-exports.decodeHTML4Strict = exports.decodeHTML5Strict = exports.decodeHTMLStrict = decode.HTMLStrict;
-
-exports.escape = encode.escape;
diff --git a/assets/node_modules/entities/lib/decode.js b/assets/node_modules/entities/lib/decode.js
deleted file mode 100644
index 1ca99ad..0000000
--- a/assets/node_modules/entities/lib/decode.js
+++ /dev/null
@@ -1,70 +0,0 @@
-var entityMap = require("../maps/entities.json"),
- legacyMap = require("../maps/legacy.json"),
- xmlMap = require("../maps/xml.json"),
- decodeCodePoint = require("./decode_codepoint.js");
-
-var decodeXMLStrict = getStrictDecoder(xmlMap),
- decodeHTMLStrict = getStrictDecoder(entityMap);
-
-function getStrictDecoder(map) {
- var keys = Object.keys(map).join("|"),
- replace = getReplacer(map);
-
- keys += "|#[xX][\\da-fA-F]+|#\\d+";
-
- var re = new RegExp("&(?:" + keys + ");", "g");
-
- return function(str) {
- return String(str).replace(re, replace);
- };
-}
-
-var decodeHTML = (function() {
- var legacy = Object.keys(legacyMap).sort(sorter);
-
- var keys = Object.keys(entityMap).sort(sorter);
-
- for (var i = 0, j = 0; i < keys.length; i++) {
- if (legacy[j] === keys[i]) {
- keys[i] += ";?";
- j++;
- } else {
- keys[i] += ";";
- }
- }
-
- var re = new RegExp("&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g"),
- replace = getReplacer(entityMap);
-
- function replacer(str) {
- if (str.substr(-1) !== ";") str += ";";
- return replace(str);
- }
-
- //TODO consider creating a merged map
- return function(str) {
- return String(str).replace(re, replacer);
- };
-})();
-
-function sorter(a, b) {
- return a < b ? 1 : -1;
-}
-
-function getReplacer(map) {
- return function replace(str) {
- if (str.charAt(1) === "#") {
- if (str.charAt(2) === "X" || str.charAt(2) === "x") {
- return decodeCodePoint(parseInt(str.substr(3), 16));
- }
- return decodeCodePoint(parseInt(str.substr(2), 10));
- }
- return map[str.slice(1, -1)];
- };
-}
-
-module.exports = {
- XML: decodeXMLStrict,
- HTML: decodeHTML,
- HTMLStrict: decodeHTMLStrict
-};
diff --git a/assets/node_modules/entities/lib/decode_codepoint.js b/assets/node_modules/entities/lib/decode_codepoint.js
deleted file mode 100644
index 2eadbe4..0000000
--- a/assets/node_modules/entities/lib/decode_codepoint.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var decodeMap = require("../maps/decode.json");
-
-module.exports = decodeCodePoint;
-
-// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119
-function decodeCodePoint(codePoint) {
- if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
- return "\uFFFD";
- }
-
- if (codePoint in decodeMap) {
- codePoint = decodeMap[codePoint];
- }
-
- var output = "";
-
- if (codePoint > 0xffff) {
- codePoint -= 0x10000;
- output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
- codePoint = 0xdc00 | (codePoint & 0x3ff);
- }
-
- output += String.fromCharCode(codePoint);
- return output;
-}
diff --git a/assets/node_modules/entities/lib/encode.js b/assets/node_modules/entities/lib/encode.js
deleted file mode 100644
index 791c405..0000000
--- a/assets/node_modules/entities/lib/encode.js
+++ /dev/null
@@ -1,82 +0,0 @@
-var inverseXML = getInverseObj(require("../maps/xml.json")),
- xmlReplacer = getInverseReplacer(inverseXML);
-
-exports.XML = getInverse(inverseXML, xmlReplacer);
-
-var inverseHTML = getInverseObj(require("../maps/entities.json")),
- htmlReplacer = getInverseReplacer(inverseHTML);
-
-exports.HTML = getInverse(inverseHTML, htmlReplacer);
-
-function getInverseObj(obj) {
- return Object.keys(obj)
- .sort()
- .reduce(function(inverse, name) {
- inverse[obj[name]] = "&" + name + ";";
- return inverse;
- }, {});
-}
-
-function getInverseReplacer(inverse) {
- var single = [],
- multiple = [];
-
- Object.keys(inverse).forEach(function(k) {
- if (k.length === 1) {
- single.push("\\" + k);
- } else {
- multiple.push(k);
- }
- });
-
- //TODO add ranges
- multiple.unshift("[" + single.join("") + "]");
-
- return new RegExp(multiple.join("|"), "g");
-}
-
-var re_nonASCII = /[^\0-\x7F]/g,
- re_astralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
-
-function singleCharReplacer(c) {
- return (
- "&#x" +
- c
- .charCodeAt(0)
- .toString(16)
- .toUpperCase() +
- ";"
- );
-}
-
-function astralReplacer(c) {
- // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
- var high = c.charCodeAt(0);
- var low = c.charCodeAt(1);
- var codePoint = (high - 0xd800) * 0x400 + low - 0xdc00 + 0x10000;
- return "&#x" + codePoint.toString(16).toUpperCase() + ";";
-}
-
-function getInverse(inverse, re) {
- function func(name) {
- return inverse[name];
- }
-
- return function(data) {
- return data
- .replace(re, func)
- .replace(re_astralSymbols, astralReplacer)
- .replace(re_nonASCII, singleCharReplacer);
- };
-}
-
-var re_xmlChars = getInverseReplacer(inverseXML);
-
-function escapeXML(data) {
- return data
- .replace(re_xmlChars, singleCharReplacer)
- .replace(re_astralSymbols, astralReplacer)
- .replace(re_nonASCII, singleCharReplacer);
-}
-
-exports.escape = escapeXML;
diff --git a/assets/node_modules/entities/maps/decode.json b/assets/node_modules/entities/maps/decode.json
deleted file mode 100644
index 44e5d0b..0000000
--- a/assets/node_modules/entities/maps/decode.json
+++ /dev/null
@@ -1 +0,0 @@
-{"0":65533,"128":8364,"130":8218,"131":402,"132":8222,"133":8230,"134":8224,"135":8225,"136":710,"137":8240,"138":352,"139":8249,"140":338,"142":381,"145":8216,"146":8217,"147":8220,"148":8221,"149":8226,"150":8211,"151":8212,"152":732,"153":8482,"154":353,"155":8250,"156":339,"158":382,"159":376} \ No newline at end of file
diff --git a/assets/node_modules/entities/maps/entities.json b/assets/node_modules/entities/maps/entities.json
deleted file mode 100644
index 7ccfcd8..0000000
--- a/assets/node_modules/entities/maps/entities.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Aacute":"\u00C1","aacute":"\u00E1","Abreve":"\u0102","abreve":"\u0103","ac":"\u223E","acd":"\u223F","acE":"\u223E\u0333","Acirc":"\u00C2","acirc":"\u00E2","acute":"\u00B4","Acy":"\u0410","acy":"\u0430","AElig":"\u00C6","aelig":"\u00E6","af":"\u2061","Afr":"\uD835\uDD04","afr":"\uD835\uDD1E","Agrave":"\u00C0","agrave":"\u00E0","alefsym":"\u2135","aleph":"\u2135","Alpha":"\u0391","alpha":"\u03B1","Amacr":"\u0100","amacr":"\u0101","amalg":"\u2A3F","amp":"&","AMP":"&","andand":"\u2A55","And":"\u2A53","and":"\u2227","andd":"\u2A5C","andslope":"\u2A58","andv":"\u2A5A","ang":"\u2220","ange":"\u29A4","angle":"\u2220","angmsdaa":"\u29A8","angmsdab":"\u29A9","angmsdac":"\u29AA","angmsdad":"\u29AB","angmsdae":"\u29AC","angmsdaf":"\u29AD","angmsdag":"\u29AE","angmsdah":"\u29AF","angmsd":"\u2221","angrt":"\u221F","angrtvb":"\u22BE","angrtvbd":"\u299D","angsph":"\u2222","angst":"\u00C5","angzarr":"\u237C","Aogon":"\u0104","aogon":"\u0105","Aopf":"\uD835\uDD38","aopf":"\uD835\uDD52","apacir":"\u2A6F","ap":"\u2248","apE":"\u2A70","ape":"\u224A","apid":"\u224B","apos":"'","ApplyFunction":"\u2061","approx":"\u2248","approxeq":"\u224A","Aring":"\u00C5","aring":"\u00E5","Ascr":"\uD835\uDC9C","ascr":"\uD835\uDCB6","Assign":"\u2254","ast":"*","asymp":"\u2248","asympeq":"\u224D","Atilde":"\u00C3","atilde":"\u00E3","Auml":"\u00C4","auml":"\u00E4","awconint":"\u2233","awint":"\u2A11","backcong":"\u224C","backepsilon":"\u03F6","backprime":"\u2035","backsim":"\u223D","backsimeq":"\u22CD","Backslash":"\u2216","Barv":"\u2AE7","barvee":"\u22BD","barwed":"\u2305","Barwed":"\u2306","barwedge":"\u2305","bbrk":"\u23B5","bbrktbrk":"\u23B6","bcong":"\u224C","Bcy":"\u0411","bcy":"\u0431","bdquo":"\u201E","becaus":"\u2235","because":"\u2235","Because":"\u2235","bemptyv":"\u29B0","bepsi":"\u03F6","bernou":"\u212C","Bernoullis":"\u212C","Beta":"\u0392","beta":"\u03B2","beth":"\u2136","between":"\u226C","Bfr":"\uD835\uDD05","bfr":"\uD835\uDD1F","bigcap":"\u22C2","bigcirc":"\u25EF","bigcup":"\u22C3","bigodot":"\u2A00","bigoplus":"\u2A01","bigotimes":"\u2A02","bigsqcup":"\u2A06","bigstar":"\u2605","bigtriangledown":"\u25BD","bigtriangleup":"\u25B3","biguplus":"\u2A04","bigvee":"\u22C1","bigwedge":"\u22C0","bkarow":"\u290D","blacklozenge":"\u29EB","blacksquare":"\u25AA","blacktriangle":"\u25B4","blacktriangledown":"\u25BE","blacktriangleleft":"\u25C2","blacktriangleright":"\u25B8","blank":"\u2423","blk12":"\u2592","blk14":"\u2591","blk34":"\u2593","block":"\u2588","bne":"=\u20E5","bnequiv":"\u2261\u20E5","bNot":"\u2AED","bnot":"\u2310","Bopf":"\uD835\uDD39","bopf":"\uD835\uDD53","bot":"\u22A5","bottom":"\u22A5","bowtie":"\u22C8","boxbox":"\u29C9","boxdl":"\u2510","boxdL":"\u2555","boxDl":"\u2556","boxDL":"\u2557","boxdr":"\u250C","boxdR":"\u2552","boxDr":"\u2553","boxDR":"\u2554","boxh":"\u2500","boxH":"\u2550","boxhd":"\u252C","boxHd":"\u2564","boxhD":"\u2565","boxHD":"\u2566","boxhu":"\u2534","boxHu":"\u2567","boxhU":"\u2568","boxHU":"\u2569","boxminus":"\u229F","boxplus":"\u229E","boxtimes":"\u22A0","boxul":"\u2518","boxuL":"\u255B","boxUl":"\u255C","boxUL":"\u255D","boxur":"\u2514","boxuR":"\u2558","boxUr":"\u2559","boxUR":"\u255A","boxv":"\u2502","boxV":"\u2551","boxvh":"\u253C","boxvH":"\u256A","boxVh":"\u256B","boxVH":"\u256C","boxvl":"\u2524","boxvL":"\u2561","boxVl":"\u2562","boxVL":"\u2563","boxvr":"\u251C","boxvR":"\u255E","boxVr":"\u255F","boxVR":"\u2560","bprime":"\u2035","breve":"\u02D8","Breve":"\u02D8","brvbar":"\u00A6","bscr":"\uD835\uDCB7","Bscr":"\u212C","bsemi":"\u204F","bsim":"\u223D","bsime":"\u22CD","bsolb":"\u29C5","bsol":"\\","bsolhsub":"\u27C8","bull":"\u2022","bullet":"\u2022","bump":"\u224E","bumpE":"\u2AAE","bumpe":"\u224F","Bumpeq":"\u224E","bumpeq":"\u224F","Cacute":"\u0106","cacute":"\u0107","capand":"\u2A44","capbrcup":"\u2A49","capcap":"\u2A4B","cap":"\u2229","Cap":"\u22D2","capcup":"\u2A47","capdot":"\u2A40","CapitalDifferentialD":"\u2145","caps":"\u2229\uFE00","caret":"\u2041","caron":"\u02C7","Cayleys":"\u212D","ccaps":"\u2A4D","Ccaron":"\u010C","ccaron":"\u010D","Ccedil":"\u00C7","ccedil":"\u00E7","Ccirc":"\u0108","ccirc":"\u0109","Cconint":"\u2230","ccups":"\u2A4C","ccupssm":"\u2A50","Cdot":"\u010A","cdot":"\u010B","cedil":"\u00B8","Cedilla":"\u00B8","cemptyv":"\u29B2","cent":"\u00A2","centerdot":"\u00B7","CenterDot":"\u00B7","cfr":"\uD835\uDD20","Cfr":"\u212D","CHcy":"\u0427","chcy":"\u0447","check":"\u2713","checkmark":"\u2713","Chi":"\u03A7","chi":"\u03C7","circ":"\u02C6","circeq":"\u2257","circlearrowleft":"\u21BA","circlearrowright":"\u21BB","circledast":"\u229B","circledcirc":"\u229A","circleddash":"\u229D","CircleDot":"\u2299","circledR":"\u00AE","circledS":"\u24C8","CircleMinus":"\u2296","CirclePlus":"\u2295","CircleTimes":"\u2297","cir":"\u25CB","cirE":"\u29C3","cire":"\u2257","cirfnint":"\u2A10","cirmid":"\u2AEF","cirscir":"\u29C2","ClockwiseContourIntegral":"\u2232","CloseCurlyDoubleQuote":"\u201D","CloseCurlyQuote":"\u2019","clubs":"\u2663","clubsuit":"\u2663","colon":":","Colon":"\u2237","Colone":"\u2A74","colone":"\u2254","coloneq":"\u2254","comma":",","commat":"@","comp":"\u2201","compfn":"\u2218","complement":"\u2201","complexes":"\u2102","cong":"\u2245","congdot":"\u2A6D","Congruent":"\u2261","conint":"\u222E","Conint":"\u222F","ContourIntegral":"\u222E","copf":"\uD835\uDD54","Copf":"\u2102","coprod":"\u2210","Coproduct":"\u2210","copy":"\u00A9","COPY":"\u00A9","copysr":"\u2117","CounterClockwiseContourIntegral":"\u2233","crarr":"\u21B5","cross":"\u2717","Cross":"\u2A2F","Cscr":"\uD835\uDC9E","cscr":"\uD835\uDCB8","csub":"\u2ACF","csube":"\u2AD1","csup":"\u2AD0","csupe":"\u2AD2","ctdot":"\u22EF","cudarrl":"\u2938","cudarrr":"\u2935","cuepr":"\u22DE","cuesc":"\u22DF","cularr":"\u21B6","cularrp":"\u293D","cupbrcap":"\u2A48","cupcap":"\u2A46","CupCap":"\u224D","cup":"\u222A","Cup":"\u22D3","cupcup":"\u2A4A","cupdot":"\u228D","cupor":"\u2A45","cups":"\u222A\uFE00","curarr":"\u21B7","curarrm":"\u293C","curlyeqprec":"\u22DE","curlyeqsucc":"\u22DF","curlyvee":"\u22CE","curlywedge":"\u22CF","curren":"\u00A4","curvearrowleft":"\u21B6","curvearrowright":"\u21B7","cuvee":"\u22CE","cuwed":"\u22CF","cwconint":"\u2232","cwint":"\u2231","cylcty":"\u232D","dagger":"\u2020","Dagger":"\u2021","daleth":"\u2138","darr":"\u2193","Darr":"\u21A1","dArr":"\u21D3","dash":"\u2010","Dashv":"\u2AE4","dashv":"\u22A3","dbkarow":"\u290F","dblac":"\u02DD","Dcaron":"\u010E","dcaron":"\u010F","Dcy":"\u0414","dcy":"\u0434","ddagger":"\u2021","ddarr":"\u21CA","DD":"\u2145","dd":"\u2146","DDotrahd":"\u2911","ddotseq":"\u2A77","deg":"\u00B0","Del":"\u2207","Delta":"\u0394","delta":"\u03B4","demptyv":"\u29B1","dfisht":"\u297F","Dfr":"\uD835\uDD07","dfr":"\uD835\uDD21","dHar":"\u2965","dharl":"\u21C3","dharr":"\u21C2","DiacriticalAcute":"\u00B4","DiacriticalDot":"\u02D9","DiacriticalDoubleAcute":"\u02DD","DiacriticalGrave":"`","DiacriticalTilde":"\u02DC","diam":"\u22C4","diamond":"\u22C4","Diamond":"\u22C4","diamondsuit":"\u2666","diams":"\u2666","die":"\u00A8","DifferentialD":"\u2146","digamma":"\u03DD","disin":"\u22F2","div":"\u00F7","divide":"\u00F7","divideontimes":"\u22C7","divonx":"\u22C7","DJcy":"\u0402","djcy":"\u0452","dlcorn":"\u231E","dlcrop":"\u230D","dollar":"$","Dopf":"\uD835\uDD3B","dopf":"\uD835\uDD55","Dot":"\u00A8","dot":"\u02D9","DotDot":"\u20DC","doteq":"\u2250","doteqdot":"\u2251","DotEqual":"\u2250","dotminus":"\u2238","dotplus":"\u2214","dotsquare":"\u22A1","doublebarwedge":"\u2306","DoubleContourIntegral":"\u222F","DoubleDot":"\u00A8","DoubleDownArrow":"\u21D3","DoubleLeftArrow":"\u21D0","DoubleLeftRightArrow":"\u21D4","DoubleLeftTee":"\u2AE4","DoubleLongLeftArrow":"\u27F8","DoubleLongLeftRightArrow":"\u27FA","DoubleLongRightArrow":"\u27F9","DoubleRightArrow":"\u21D2","DoubleRightTee":"\u22A8","DoubleUpArrow":"\u21D1","DoubleUpDownArrow":"\u21D5","DoubleVerticalBar":"\u2225","DownArrowBar":"\u2913","downarrow":"\u2193","DownArrow":"\u2193","Downarrow":"\u21D3","DownArrowUpArrow":"\u21F5","DownBreve":"\u0311","downdownarrows":"\u21CA","downharpoonleft":"\u21C3","downharpoonright":"\u21C2","DownLeftRightVector":"\u2950","DownLeftTeeVector":"\u295E","DownLeftVectorBar":"\u2956","DownLeftVector":"\u21BD","DownRightTeeVector":"\u295F","DownRightVectorBar":"\u2957","DownRightVector":"\u21C1","DownTeeArrow":"\u21A7","DownTee":"\u22A4","drbkarow":"\u2910","drcorn":"\u231F","drcrop":"\u230C","Dscr":"\uD835\uDC9F","dscr":"\uD835\uDCB9","DScy":"\u0405","dscy":"\u0455","dsol":"\u29F6","Dstrok":"\u0110","dstrok":"\u0111","dtdot":"\u22F1","dtri":"\u25BF","dtrif":"\u25BE","duarr":"\u21F5","duhar":"\u296F","dwangle":"\u29A6","DZcy":"\u040F","dzcy":"\u045F","dzigrarr":"\u27FF","Eacute":"\u00C9","eacute":"\u00E9","easter":"\u2A6E","Ecaron":"\u011A","ecaron":"\u011B","Ecirc":"\u00CA","ecirc":"\u00EA","ecir":"\u2256","ecolon":"\u2255","Ecy":"\u042D","ecy":"\u044D","eDDot":"\u2A77","Edot":"\u0116","edot":"\u0117","eDot":"\u2251","ee":"\u2147","efDot":"\u2252","Efr":"\uD835\uDD08","efr":"\uD835\uDD22","eg":"\u2A9A","Egrave":"\u00C8","egrave":"\u00E8","egs":"\u2A96","egsdot":"\u2A98","el":"\u2A99","Element":"\u2208","elinters":"\u23E7","ell":"\u2113","els":"\u2A95","elsdot":"\u2A97","Emacr":"\u0112","emacr":"\u0113","empty":"\u2205","emptyset":"\u2205","EmptySmallSquare":"\u25FB","emptyv":"\u2205","EmptyVerySmallSquare":"\u25AB","emsp13":"\u2004","emsp14":"\u2005","emsp":"\u2003","ENG":"\u014A","eng":"\u014B","ensp":"\u2002","Eogon":"\u0118","eogon":"\u0119","Eopf":"\uD835\uDD3C","eopf":"\uD835\uDD56","epar":"\u22D5","eparsl":"\u29E3","eplus":"\u2A71","epsi":"\u03B5","Epsilon":"\u0395","epsilon":"\u03B5","epsiv":"\u03F5","eqcirc":"\u2256","eqcolon":"\u2255","eqsim":"\u2242","eqslantgtr":"\u2A96","eqslantless":"\u2A95","Equal":"\u2A75","equals":"=","EqualTilde":"\u2242","equest":"\u225F","Equilibrium":"\u21CC","equiv":"\u2261","equivDD":"\u2A78","eqvparsl":"\u29E5","erarr":"\u2971","erDot":"\u2253","escr":"\u212F","Escr":"\u2130","esdot":"\u2250","Esim":"\u2A73","esim":"\u2242","Eta":"\u0397","eta":"\u03B7","ETH":"\u00D0","eth":"\u00F0","Euml":"\u00CB","euml":"\u00EB","euro":"\u20AC","excl":"!","exist":"\u2203","Exists":"\u2203","expectation":"\u2130","exponentiale":"\u2147","ExponentialE":"\u2147","fallingdotseq":"\u2252","Fcy":"\u0424","fcy":"\u0444","female":"\u2640","ffilig":"\uFB03","fflig":"\uFB00","ffllig":"\uFB04","Ffr":"\uD835\uDD09","ffr":"\uD835\uDD23","filig":"\uFB01","FilledSmallSquare":"\u25FC","FilledVerySmallSquare":"\u25AA","fjlig":"fj","flat":"\u266D","fllig":"\uFB02","fltns":"\u25B1","fnof":"\u0192","Fopf":"\uD835\uDD3D","fopf":"\uD835\uDD57","forall":"\u2200","ForAll":"\u2200","fork":"\u22D4","forkv":"\u2AD9","Fouriertrf":"\u2131","fpartint":"\u2A0D","frac12":"\u00BD","frac13":"\u2153","frac14":"\u00BC","frac15":"\u2155","frac16":"\u2159","frac18":"\u215B","frac23":"\u2154","frac25":"\u2156","frac34":"\u00BE","frac35":"\u2157","frac38":"\u215C","frac45":"\u2158","frac56":"\u215A","frac58":"\u215D","frac78":"\u215E","frasl":"\u2044","frown":"\u2322","fscr":"\uD835\uDCBB","Fscr":"\u2131","gacute":"\u01F5","Gamma":"\u0393","gamma":"\u03B3","Gammad":"\u03DC","gammad":"\u03DD","gap":"\u2A86","Gbreve":"\u011E","gbreve":"\u011F","Gcedil":"\u0122","Gcirc":"\u011C","gcirc":"\u011D","Gcy":"\u0413","gcy":"\u0433","Gdot":"\u0120","gdot":"\u0121","ge":"\u2265","gE":"\u2267","gEl":"\u2A8C","gel":"\u22DB","geq":"\u2265","geqq":"\u2267","geqslant":"\u2A7E","gescc":"\u2AA9","ges":"\u2A7E","gesdot":"\u2A80","gesdoto":"\u2A82","gesdotol":"\u2A84","gesl":"\u22DB\uFE00","gesles":"\u2A94","Gfr":"\uD835\uDD0A","gfr":"\uD835\uDD24","gg":"\u226B","Gg":"\u22D9","ggg":"\u22D9","gimel":"\u2137","GJcy":"\u0403","gjcy":"\u0453","gla":"\u2AA5","gl":"\u2277","glE":"\u2A92","glj":"\u2AA4","gnap":"\u2A8A","gnapprox":"\u2A8A","gne":"\u2A88","gnE":"\u2269","gneq":"\u2A88","gneqq":"\u2269","gnsim":"\u22E7","Gopf":"\uD835\uDD3E","gopf":"\uD835\uDD58","grave":"`","GreaterEqual":"\u2265","GreaterEqualLess":"\u22DB","GreaterFullEqual":"\u2267","GreaterGreater":"\u2AA2","GreaterLess":"\u2277","GreaterSlantEqual":"\u2A7E","GreaterTilde":"\u2273","Gscr":"\uD835\uDCA2","gscr":"\u210A","gsim":"\u2273","gsime":"\u2A8E","gsiml":"\u2A90","gtcc":"\u2AA7","gtcir":"\u2A7A","gt":">","GT":">","Gt":"\u226B","gtdot":"\u22D7","gtlPar":"\u2995","gtquest":"\u2A7C","gtrapprox":"\u2A86","gtrarr":"\u2978","gtrdot":"\u22D7","gtreqless":"\u22DB","gtreqqless":"\u2A8C","gtrless":"\u2277","gtrsim":"\u2273","gvertneqq":"\u2269\uFE00","gvnE":"\u2269\uFE00","Hacek":"\u02C7","hairsp":"\u200A","half":"\u00BD","hamilt":"\u210B","HARDcy":"\u042A","hardcy":"\u044A","harrcir":"\u2948","harr":"\u2194","hArr":"\u21D4","harrw":"\u21AD","Hat":"^","hbar":"\u210F","Hcirc":"\u0124","hcirc":"\u0125","hearts":"\u2665","heartsuit":"\u2665","hellip":"\u2026","hercon":"\u22B9","hfr":"\uD835\uDD25","Hfr":"\u210C","HilbertSpace":"\u210B","hksearow":"\u2925","hkswarow":"\u2926","hoarr":"\u21FF","homtht":"\u223B","hookleftarrow":"\u21A9","hookrightarrow":"\u21AA","hopf":"\uD835\uDD59","Hopf":"\u210D","horbar":"\u2015","HorizontalLine":"\u2500","hscr":"\uD835\uDCBD","Hscr":"\u210B","hslash":"\u210F","Hstrok":"\u0126","hstrok":"\u0127","HumpDownHump":"\u224E","HumpEqual":"\u224F","hybull":"\u2043","hyphen":"\u2010","Iacute":"\u00CD","iacute":"\u00ED","ic":"\u2063","Icirc":"\u00CE","icirc":"\u00EE","Icy":"\u0418","icy":"\u0438","Idot":"\u0130","IEcy":"\u0415","iecy":"\u0435","iexcl":"\u00A1","iff":"\u21D4","ifr":"\uD835\uDD26","Ifr":"\u2111","Igrave":"\u00CC","igrave":"\u00EC","ii":"\u2148","iiiint":"\u2A0C","iiint":"\u222D","iinfin":"\u29DC","iiota":"\u2129","IJlig":"\u0132","ijlig":"\u0133","Imacr":"\u012A","imacr":"\u012B","image":"\u2111","ImaginaryI":"\u2148","imagline":"\u2110","imagpart":"\u2111","imath":"\u0131","Im":"\u2111","imof":"\u22B7","imped":"\u01B5","Implies":"\u21D2","incare":"\u2105","in":"\u2208","infin":"\u221E","infintie":"\u29DD","inodot":"\u0131","intcal":"\u22BA","int":"\u222B","Int":"\u222C","integers":"\u2124","Integral":"\u222B","intercal":"\u22BA","Intersection":"\u22C2","intlarhk":"\u2A17","intprod":"\u2A3C","InvisibleComma":"\u2063","InvisibleTimes":"\u2062","IOcy":"\u0401","iocy":"\u0451","Iogon":"\u012E","iogon":"\u012F","Iopf":"\uD835\uDD40","iopf":"\uD835\uDD5A","Iota":"\u0399","iota":"\u03B9","iprod":"\u2A3C","iquest":"\u00BF","iscr":"\uD835\uDCBE","Iscr":"\u2110","isin":"\u2208","isindot":"\u22F5","isinE":"\u22F9","isins":"\u22F4","isinsv":"\u22F3","isinv":"\u2208","it":"\u2062","Itilde":"\u0128","itilde":"\u0129","Iukcy":"\u0406","iukcy":"\u0456","Iuml":"\u00CF","iuml":"\u00EF","Jcirc":"\u0134","jcirc":"\u0135","Jcy":"\u0419","jcy":"\u0439","Jfr":"\uD835\uDD0D","jfr":"\uD835\uDD27","jmath":"\u0237","Jopf":"\uD835\uDD41","jopf":"\uD835\uDD5B","Jscr":"\uD835\uDCA5","jscr":"\uD835\uDCBF","Jsercy":"\u0408","jsercy":"\u0458","Jukcy":"\u0404","jukcy":"\u0454","Kappa":"\u039A","kappa":"\u03BA","kappav":"\u03F0","Kcedil":"\u0136","kcedil":"\u0137","Kcy":"\u041A","kcy":"\u043A","Kfr":"\uD835\uDD0E","kfr":"\uD835\uDD28","kgreen":"\u0138","KHcy":"\u0425","khcy":"\u0445","KJcy":"\u040C","kjcy":"\u045C","Kopf":"\uD835\uDD42","kopf":"\uD835\uDD5C","Kscr":"\uD835\uDCA6","kscr":"\uD835\uDCC0","lAarr":"\u21DA","Lacute":"\u0139","lacute":"\u013A","laemptyv":"\u29B4","lagran":"\u2112","Lambda":"\u039B","lambda":"\u03BB","lang":"\u27E8","Lang":"\u27EA","langd":"\u2991","langle":"\u27E8","lap":"\u2A85","Laplacetrf":"\u2112","laquo":"\u00AB","larrb":"\u21E4","larrbfs":"\u291F","larr":"\u2190","Larr":"\u219E","lArr":"\u21D0","larrfs":"\u291D","larrhk":"\u21A9","larrlp":"\u21AB","larrpl":"\u2939","larrsim":"\u2973","larrtl":"\u21A2","latail":"\u2919","lAtail":"\u291B","lat":"\u2AAB","late":"\u2AAD","lates":"\u2AAD\uFE00","lbarr":"\u290C","lBarr":"\u290E","lbbrk":"\u2772","lbrace":"{","lbrack":"[","lbrke":"\u298B","lbrksld":"\u298F","lbrkslu":"\u298D","Lcaron":"\u013D","lcaron":"\u013E","Lcedil":"\u013B","lcedil":"\u013C","lceil":"\u2308","lcub":"{","Lcy":"\u041B","lcy":"\u043B","ldca":"\u2936","ldquo":"\u201C","ldquor":"\u201E","ldrdhar":"\u2967","ldrushar":"\u294B","ldsh":"\u21B2","le":"\u2264","lE":"\u2266","LeftAngleBracket":"\u27E8","LeftArrowBar":"\u21E4","leftarrow":"\u2190","LeftArrow":"\u2190","Leftarrow":"\u21D0","LeftArrowRightArrow":"\u21C6","leftarrowtail":"\u21A2","LeftCeiling":"\u2308","LeftDoubleBracket":"\u27E6","LeftDownTeeVector":"\u2961","LeftDownVectorBar":"\u2959","LeftDownVector":"\u21C3","LeftFloor":"\u230A","leftharpoondown":"\u21BD","leftharpoonup":"\u21BC","leftleftarrows":"\u21C7","leftrightarrow":"\u2194","LeftRightArrow":"\u2194","Leftrightarrow":"\u21D4","leftrightarrows":"\u21C6","leftrightharpoons":"\u21CB","leftrightsquigarrow":"\u21AD","LeftRightVector":"\u294E","LeftTeeArrow":"\u21A4","LeftTee":"\u22A3","LeftTeeVector":"\u295A","leftthreetimes":"\u22CB","LeftTriangleBar":"\u29CF","LeftTriangle":"\u22B2","LeftTriangleEqual":"\u22B4","LeftUpDownVector":"\u2951","LeftUpTeeVector":"\u2960","LeftUpVectorBar":"\u2958","LeftUpVector":"\u21BF","LeftVectorBar":"\u2952","LeftVector":"\u21BC","lEg":"\u2A8B","leg":"\u22DA","leq":"\u2264","leqq":"\u2266","leqslant":"\u2A7D","lescc":"\u2AA8","les":"\u2A7D","lesdot":"\u2A7F","lesdoto":"\u2A81","lesdotor":"\u2A83","lesg":"\u22DA\uFE00","lesges":"\u2A93","lessapprox":"\u2A85","lessdot":"\u22D6","lesseqgtr":"\u22DA","lesseqqgtr":"\u2A8B","LessEqualGreater":"\u22DA","LessFullEqual":"\u2266","LessGreater":"\u2276","lessgtr":"\u2276","LessLess":"\u2AA1","lesssim":"\u2272","LessSlantEqual":"\u2A7D","LessTilde":"\u2272","lfisht":"\u297C","lfloor":"\u230A","Lfr":"\uD835\uDD0F","lfr":"\uD835\uDD29","lg":"\u2276","lgE":"\u2A91","lHar":"\u2962","lhard":"\u21BD","lharu":"\u21BC","lharul":"\u296A","lhblk":"\u2584","LJcy":"\u0409","ljcy":"\u0459","llarr":"\u21C7","ll":"\u226A","Ll":"\u22D8","llcorner":"\u231E","Lleftarrow":"\u21DA","llhard":"\u296B","lltri":"\u25FA","Lmidot":"\u013F","lmidot":"\u0140","lmoustache":"\u23B0","lmoust":"\u23B0","lnap":"\u2A89","lnapprox":"\u2A89","lne":"\u2A87","lnE":"\u2268","lneq":"\u2A87","lneqq":"\u2268","lnsim":"\u22E6","loang":"\u27EC","loarr":"\u21FD","lobrk":"\u27E6","longleftarrow":"\u27F5","LongLeftArrow":"\u27F5","Longleftarrow":"\u27F8","longleftrightarrow":"\u27F7","LongLeftRightArrow":"\u27F7","Longleftrightarrow":"\u27FA","longmapsto":"\u27FC","longrightarrow":"\u27F6","LongRightArrow":"\u27F6","Longrightarrow":"\u27F9","looparrowleft":"\u21AB","looparrowright":"\u21AC","lopar":"\u2985","Lopf":"\uD835\uDD43","lopf":"\uD835\uDD5D","loplus":"\u2A2D","lotimes":"\u2A34","lowast":"\u2217","lowbar":"_","LowerLeftArrow":"\u2199","LowerRightArrow":"\u2198","loz":"\u25CA","lozenge":"\u25CA","lozf":"\u29EB","lpar":"(","lparlt":"\u2993","lrarr":"\u21C6","lrcorner":"\u231F","lrhar":"\u21CB","lrhard":"\u296D","lrm":"\u200E","lrtri":"\u22BF","lsaquo":"\u2039","lscr":"\uD835\uDCC1","Lscr":"\u2112","lsh":"\u21B0","Lsh":"\u21B0","lsim":"\u2272","lsime":"\u2A8D","lsimg":"\u2A8F","lsqb":"[","lsquo":"\u2018","lsquor":"\u201A","Lstrok":"\u0141","lstrok":"\u0142","ltcc":"\u2AA6","ltcir":"\u2A79","lt":"<","LT":"<","Lt":"\u226A","ltdot":"\u22D6","lthree":"\u22CB","ltimes":"\u22C9","ltlarr":"\u2976","ltquest":"\u2A7B","ltri":"\u25C3","ltrie":"\u22B4","ltrif":"\u25C2","ltrPar":"\u2996","lurdshar":"\u294A","luruhar":"\u2966","lvertneqq":"\u2268\uFE00","lvnE":"\u2268\uFE00","macr":"\u00AF","male":"\u2642","malt":"\u2720","maltese":"\u2720","Map":"\u2905","map":"\u21A6","mapsto":"\u21A6","mapstodown":"\u21A7","mapstoleft":"\u21A4","mapstoup":"\u21A5","marker":"\u25AE","mcomma":"\u2A29","Mcy":"\u041C","mcy":"\u043C","mdash":"\u2014","mDDot":"\u223A","measuredangle":"\u2221","MediumSpace":"\u205F","Mellintrf":"\u2133","Mfr":"\uD835\uDD10","mfr":"\uD835\uDD2A","mho":"\u2127","micro":"\u00B5","midast":"*","midcir":"\u2AF0","mid":"\u2223","middot":"\u00B7","minusb":"\u229F","minus":"\u2212","minusd":"\u2238","minusdu":"\u2A2A","MinusPlus":"\u2213","mlcp":"\u2ADB","mldr":"\u2026","mnplus":"\u2213","models":"\u22A7","Mopf":"\uD835\uDD44","mopf":"\uD835\uDD5E","mp":"\u2213","mscr":"\uD835\uDCC2","Mscr":"\u2133","mstpos":"\u223E","Mu":"\u039C","mu":"\u03BC","multimap":"\u22B8","mumap":"\u22B8","nabla":"\u2207","Nacute":"\u0143","nacute":"\u0144","nang":"\u2220\u20D2","nap":"\u2249","napE":"\u2A70\u0338","napid":"\u224B\u0338","napos":"\u0149","napprox":"\u2249","natural":"\u266E","naturals":"\u2115","natur":"\u266E","nbsp":"\u00A0","nbump":"\u224E\u0338","nbumpe":"\u224F\u0338","ncap":"\u2A43","Ncaron":"\u0147","ncaron":"\u0148","Ncedil":"\u0145","ncedil":"\u0146","ncong":"\u2247","ncongdot":"\u2A6D\u0338","ncup":"\u2A42","Ncy":"\u041D","ncy":"\u043D","ndash":"\u2013","nearhk":"\u2924","nearr":"\u2197","neArr":"\u21D7","nearrow":"\u2197","ne":"\u2260","nedot":"\u2250\u0338","NegativeMediumSpace":"\u200B","NegativeThickSpace":"\u200B","NegativeThinSpace":"\u200B","NegativeVeryThinSpace":"\u200B","nequiv":"\u2262","nesear":"\u2928","nesim":"\u2242\u0338","NestedGreaterGreater":"\u226B","NestedLessLess":"\u226A","NewLine":"\n","nexist":"\u2204","nexists":"\u2204","Nfr":"\uD835\uDD11","nfr":"\uD835\uDD2B","ngE":"\u2267\u0338","nge":"\u2271","ngeq":"\u2271","ngeqq":"\u2267\u0338","ngeqslant":"\u2A7E\u0338","nges":"\u2A7E\u0338","nGg":"\u22D9\u0338","ngsim":"\u2275","nGt":"\u226B\u20D2","ngt":"\u226F","ngtr":"\u226F","nGtv":"\u226B\u0338","nharr":"\u21AE","nhArr":"\u21CE","nhpar":"\u2AF2","ni":"\u220B","nis":"\u22FC","nisd":"\u22FA","niv":"\u220B","NJcy":"\u040A","njcy":"\u045A","nlarr":"\u219A","nlArr":"\u21CD","nldr":"\u2025","nlE":"\u2266\u0338","nle":"\u2270","nleftarrow":"\u219A","nLeftarrow":"\u21CD","nleftrightarrow":"\u21AE","nLeftrightarrow":"\u21CE","nleq":"\u2270","nleqq":"\u2266\u0338","nleqslant":"\u2A7D\u0338","nles":"\u2A7D\u0338","nless":"\u226E","nLl":"\u22D8\u0338","nlsim":"\u2274","nLt":"\u226A\u20D2","nlt":"\u226E","nltri":"\u22EA","nltrie":"\u22EC","nLtv":"\u226A\u0338","nmid":"\u2224","NoBreak":"\u2060","NonBreakingSpace":"\u00A0","nopf":"\uD835\uDD5F","Nopf":"\u2115","Not":"\u2AEC","not":"\u00AC","NotCongruent":"\u2262","NotCupCap":"\u226D","NotDoubleVerticalBar":"\u2226","NotElement":"\u2209","NotEqual":"\u2260","NotEqualTilde":"\u2242\u0338","NotExists":"\u2204","NotGreater":"\u226F","NotGreaterEqual":"\u2271","NotGreaterFullEqual":"\u2267\u0338","NotGreaterGreater":"\u226B\u0338","NotGreaterLess":"\u2279","NotGreaterSlantEqual":"\u2A7E\u0338","NotGreaterTilde":"\u2275","NotHumpDownHump":"\u224E\u0338","NotHumpEqual":"\u224F\u0338","notin":"\u2209","notindot":"\u22F5\u0338","notinE":"\u22F9\u0338","notinva":"\u2209","notinvb":"\u22F7","notinvc":"\u22F6","NotLeftTriangleBar":"\u29CF\u0338","NotLeftTriangle":"\u22EA","NotLeftTriangleEqual":"\u22EC","NotLess":"\u226E","NotLessEqual":"\u2270","NotLessGreater":"\u2278","NotLessLess":"\u226A\u0338","NotLessSlantEqual":"\u2A7D\u0338","NotLessTilde":"\u2274","NotNestedGreaterGreater":"\u2AA2\u0338","NotNestedLessLess":"\u2AA1\u0338","notni":"\u220C","notniva":"\u220C","notnivb":"\u22FE","notnivc":"\u22FD","NotPrecedes":"\u2280","NotPrecedesEqual":"\u2AAF\u0338","NotPrecedesSlantEqual":"\u22E0","NotReverseElement":"\u220C","NotRightTriangleBar":"\u29D0\u0338","NotRightTriangle":"\u22EB","NotRightTriangleEqual":"\u22ED","NotSquareSubset":"\u228F\u0338","NotSquareSubsetEqual":"\u22E2","NotSquareSuperset":"\u2290\u0338","NotSquareSupersetEqual":"\u22E3","NotSubset":"\u2282\u20D2","NotSubsetEqual":"\u2288","NotSucceeds":"\u2281","NotSucceedsEqual":"\u2AB0\u0338","NotSucceedsSlantEqual":"\u22E1","NotSucceedsTilde":"\u227F\u0338","NotSuperset":"\u2283\u20D2","NotSupersetEqual":"\u2289","NotTilde":"\u2241","NotTildeEqual":"\u2244","NotTildeFullEqual":"\u2247","NotTildeTilde":"\u2249","NotVerticalBar":"\u2224","nparallel":"\u2226","npar":"\u2226","nparsl":"\u2AFD\u20E5","npart":"\u2202\u0338","npolint":"\u2A14","npr":"\u2280","nprcue":"\u22E0","nprec":"\u2280","npreceq":"\u2AAF\u0338","npre":"\u2AAF\u0338","nrarrc":"\u2933\u0338","nrarr":"\u219B","nrArr":"\u21CF","nrarrw":"\u219D\u0338","nrightarrow":"\u219B","nRightarrow":"\u21CF","nrtri":"\u22EB","nrtrie":"\u22ED","nsc":"\u2281","nsccue":"\u22E1","nsce":"\u2AB0\u0338","Nscr":"\uD835\uDCA9","nscr":"\uD835\uDCC3","nshortmid":"\u2224","nshortparallel":"\u2226","nsim":"\u2241","nsime":"\u2244","nsimeq":"\u2244","nsmid":"\u2224","nspar":"\u2226","nsqsube":"\u22E2","nsqsupe":"\u22E3","nsub":"\u2284","nsubE":"\u2AC5\u0338","nsube":"\u2288","nsubset":"\u2282\u20D2","nsubseteq":"\u2288","nsubseteqq":"\u2AC5\u0338","nsucc":"\u2281","nsucceq":"\u2AB0\u0338","nsup":"\u2285","nsupE":"\u2AC6\u0338","nsupe":"\u2289","nsupset":"\u2283\u20D2","nsupseteq":"\u2289","nsupseteqq":"\u2AC6\u0338","ntgl":"\u2279","Ntilde":"\u00D1","ntilde":"\u00F1","ntlg":"\u2278","ntriangleleft":"\u22EA","ntrianglelefteq":"\u22EC","ntriangleright":"\u22EB","ntrianglerighteq":"\u22ED","Nu":"\u039D","nu":"\u03BD","num":"#","numero":"\u2116","numsp":"\u2007","nvap":"\u224D\u20D2","nvdash":"\u22AC","nvDash":"\u22AD","nVdash":"\u22AE","nVDash":"\u22AF","nvge":"\u2265\u20D2","nvgt":">\u20D2","nvHarr":"\u2904","nvinfin":"\u29DE","nvlArr":"\u2902","nvle":"\u2264\u20D2","nvlt":"<\u20D2","nvltrie":"\u22B4\u20D2","nvrArr":"\u2903","nvrtrie":"\u22B5\u20D2","nvsim":"\u223C\u20D2","nwarhk":"\u2923","nwarr":"\u2196","nwArr":"\u21D6","nwarrow":"\u2196","nwnear":"\u2927","Oacute":"\u00D3","oacute":"\u00F3","oast":"\u229B","Ocirc":"\u00D4","ocirc":"\u00F4","ocir":"\u229A","Ocy":"\u041E","ocy":"\u043E","odash":"\u229D","Odblac":"\u0150","odblac":"\u0151","odiv":"\u2A38","odot":"\u2299","odsold":"\u29BC","OElig":"\u0152","oelig":"\u0153","ofcir":"\u29BF","Ofr":"\uD835\uDD12","ofr":"\uD835\uDD2C","ogon":"\u02DB","Ograve":"\u00D2","ograve":"\u00F2","ogt":"\u29C1","ohbar":"\u29B5","ohm":"\u03A9","oint":"\u222E","olarr":"\u21BA","olcir":"\u29BE","olcross":"\u29BB","oline":"\u203E","olt":"\u29C0","Omacr":"\u014C","omacr":"\u014D","Omega":"\u03A9","omega":"\u03C9","Omicron":"\u039F","omicron":"\u03BF","omid":"\u29B6","ominus":"\u2296","Oopf":"\uD835\uDD46","oopf":"\uD835\uDD60","opar":"\u29B7","OpenCurlyDoubleQuote":"\u201C","OpenCurlyQuote":"\u2018","operp":"\u29B9","oplus":"\u2295","orarr":"\u21BB","Or":"\u2A54","or":"\u2228","ord":"\u2A5D","order":"\u2134","orderof":"\u2134","ordf":"\u00AA","ordm":"\u00BA","origof":"\u22B6","oror":"\u2A56","orslope":"\u2A57","orv":"\u2A5B","oS":"\u24C8","Oscr":"\uD835\uDCAA","oscr":"\u2134","Oslash":"\u00D8","oslash":"\u00F8","osol":"\u2298","Otilde":"\u00D5","otilde":"\u00F5","otimesas":"\u2A36","Otimes":"\u2A37","otimes":"\u2297","Ouml":"\u00D6","ouml":"\u00F6","ovbar":"\u233D","OverBar":"\u203E","OverBrace":"\u23DE","OverBracket":"\u23B4","OverParenthesis":"\u23DC","para":"\u00B6","parallel":"\u2225","par":"\u2225","parsim":"\u2AF3","parsl":"\u2AFD","part":"\u2202","PartialD":"\u2202","Pcy":"\u041F","pcy":"\u043F","percnt":"%","period":".","permil":"\u2030","perp":"\u22A5","pertenk":"\u2031","Pfr":"\uD835\uDD13","pfr":"\uD835\uDD2D","Phi":"\u03A6","phi":"\u03C6","phiv":"\u03D5","phmmat":"\u2133","phone":"\u260E","Pi":"\u03A0","pi":"\u03C0","pitchfork":"\u22D4","piv":"\u03D6","planck":"\u210F","planckh":"\u210E","plankv":"\u210F","plusacir":"\u2A23","plusb":"\u229E","pluscir":"\u2A22","plus":"+","plusdo":"\u2214","plusdu":"\u2A25","pluse":"\u2A72","PlusMinus":"\u00B1","plusmn":"\u00B1","plussim":"\u2A26","plustwo":"\u2A27","pm":"\u00B1","Poincareplane":"\u210C","pointint":"\u2A15","popf":"\uD835\uDD61","Popf":"\u2119","pound":"\u00A3","prap":"\u2AB7","Pr":"\u2ABB","pr":"\u227A","prcue":"\u227C","precapprox":"\u2AB7","prec":"\u227A","preccurlyeq":"\u227C","Precedes":"\u227A","PrecedesEqual":"\u2AAF","PrecedesSlantEqual":"\u227C","PrecedesTilde":"\u227E","preceq":"\u2AAF","precnapprox":"\u2AB9","precneqq":"\u2AB5","precnsim":"\u22E8","pre":"\u2AAF","prE":"\u2AB3","precsim":"\u227E","prime":"\u2032","Prime":"\u2033","primes":"\u2119","prnap":"\u2AB9","prnE":"\u2AB5","prnsim":"\u22E8","prod":"\u220F","Product":"\u220F","profalar":"\u232E","profline":"\u2312","profsurf":"\u2313","prop":"\u221D","Proportional":"\u221D","Proportion":"\u2237","propto":"\u221D","prsim":"\u227E","prurel":"\u22B0","Pscr":"\uD835\uDCAB","pscr":"\uD835\uDCC5","Psi":"\u03A8","psi":"\u03C8","puncsp":"\u2008","Qfr":"\uD835\uDD14","qfr":"\uD835\uDD2E","qint":"\u2A0C","qopf":"\uD835\uDD62","Qopf":"\u211A","qprime":"\u2057","Qscr":"\uD835\uDCAC","qscr":"\uD835\uDCC6","quaternions":"\u210D","quatint":"\u2A16","quest":"?","questeq":"\u225F","quot":"\"","QUOT":"\"","rAarr":"\u21DB","race":"\u223D\u0331","Racute":"\u0154","racute":"\u0155","radic":"\u221A","raemptyv":"\u29B3","rang":"\u27E9","Rang":"\u27EB","rangd":"\u2992","range":"\u29A5","rangle":"\u27E9","raquo":"\u00BB","rarrap":"\u2975","rarrb":"\u21E5","rarrbfs":"\u2920","rarrc":"\u2933","rarr":"\u2192","Rarr":"\u21A0","rArr":"\u21D2","rarrfs":"\u291E","rarrhk":"\u21AA","rarrlp":"\u21AC","rarrpl":"\u2945","rarrsim":"\u2974","Rarrtl":"\u2916","rarrtl":"\u21A3","rarrw":"\u219D","ratail":"\u291A","rAtail":"\u291C","ratio":"\u2236","rationals":"\u211A","rbarr":"\u290D","rBarr":"\u290F","RBarr":"\u2910","rbbrk":"\u2773","rbrace":"}","rbrack":"]","rbrke":"\u298C","rbrksld":"\u298E","rbrkslu":"\u2990","Rcaron":"\u0158","rcaron":"\u0159","Rcedil":"\u0156","rcedil":"\u0157","rceil":"\u2309","rcub":"}","Rcy":"\u0420","rcy":"\u0440","rdca":"\u2937","rdldhar":"\u2969","rdquo":"\u201D","rdquor":"\u201D","rdsh":"\u21B3","real":"\u211C","realine":"\u211B","realpart":"\u211C","reals":"\u211D","Re":"\u211C","rect":"\u25AD","reg":"\u00AE","REG":"\u00AE","ReverseElement":"\u220B","ReverseEquilibrium":"\u21CB","ReverseUpEquilibrium":"\u296F","rfisht":"\u297D","rfloor":"\u230B","rfr":"\uD835\uDD2F","Rfr":"\u211C","rHar":"\u2964","rhard":"\u21C1","rharu":"\u21C0","rharul":"\u296C","Rho":"\u03A1","rho":"\u03C1","rhov":"\u03F1","RightAngleBracket":"\u27E9","RightArrowBar":"\u21E5","rightarrow":"\u2192","RightArrow":"\u2192","Rightarrow":"\u21D2","RightArrowLeftArrow":"\u21C4","rightarrowtail":"\u21A3","RightCeiling":"\u2309","RightDoubleBracket":"\u27E7","RightDownTeeVector":"\u295D","RightDownVectorBar":"\u2955","RightDownVector":"\u21C2","RightFloor":"\u230B","rightharpoondown":"\u21C1","rightharpoonup":"\u21C0","rightleftarrows":"\u21C4","rightleftharpoons":"\u21CC","rightrightarrows":"\u21C9","rightsquigarrow":"\u219D","RightTeeArrow":"\u21A6","RightTee":"\u22A2","RightTeeVector":"\u295B","rightthreetimes":"\u22CC","RightTriangleBar":"\u29D0","RightTriangle":"\u22B3","RightTriangleEqual":"\u22B5","RightUpDownVector":"\u294F","RightUpTeeVector":"\u295C","RightUpVectorBar":"\u2954","RightUpVector":"\u21BE","RightVectorBar":"\u2953","RightVector":"\u21C0","ring":"\u02DA","risingdotseq":"\u2253","rlarr":"\u21C4","rlhar":"\u21CC","rlm":"\u200F","rmoustache":"\u23B1","rmoust":"\u23B1","rnmid":"\u2AEE","roang":"\u27ED","roarr":"\u21FE","robrk":"\u27E7","ropar":"\u2986","ropf":"\uD835\uDD63","Ropf":"\u211D","roplus":"\u2A2E","rotimes":"\u2A35","RoundImplies":"\u2970","rpar":")","rpargt":"\u2994","rppolint":"\u2A12","rrarr":"\u21C9","Rrightarrow":"\u21DB","rsaquo":"\u203A","rscr":"\uD835\uDCC7","Rscr":"\u211B","rsh":"\u21B1","Rsh":"\u21B1","rsqb":"]","rsquo":"\u2019","rsquor":"\u2019","rthree":"\u22CC","rtimes":"\u22CA","rtri":"\u25B9","rtrie":"\u22B5","rtrif":"\u25B8","rtriltri":"\u29CE","RuleDelayed":"\u29F4","ruluhar":"\u2968","rx":"\u211E","Sacute":"\u015A","sacute":"\u015B","sbquo":"\u201A","scap":"\u2AB8","Scaron":"\u0160","scaron":"\u0161","Sc":"\u2ABC","sc":"\u227B","sccue":"\u227D","sce":"\u2AB0","scE":"\u2AB4","Scedil":"\u015E","scedil":"\u015F","Scirc":"\u015C","scirc":"\u015D","scnap":"\u2ABA","scnE":"\u2AB6","scnsim":"\u22E9","scpolint":"\u2A13","scsim":"\u227F","Scy":"\u0421","scy":"\u0441","sdotb":"\u22A1","sdot":"\u22C5","sdote":"\u2A66","searhk":"\u2925","searr":"\u2198","seArr":"\u21D8","searrow":"\u2198","sect":"\u00A7","semi":";","seswar":"\u2929","setminus":"\u2216","setmn":"\u2216","sext":"\u2736","Sfr":"\uD835\uDD16","sfr":"\uD835\uDD30","sfrown":"\u2322","sharp":"\u266F","SHCHcy":"\u0429","shchcy":"\u0449","SHcy":"\u0428","shcy":"\u0448","ShortDownArrow":"\u2193","ShortLeftArrow":"\u2190","shortmid":"\u2223","shortparallel":"\u2225","ShortRightArrow":"\u2192","ShortUpArrow":"\u2191","shy":"\u00AD","Sigma":"\u03A3","sigma":"\u03C3","sigmaf":"\u03C2","sigmav":"\u03C2","sim":"\u223C","simdot":"\u2A6A","sime":"\u2243","simeq":"\u2243","simg":"\u2A9E","simgE":"\u2AA0","siml":"\u2A9D","simlE":"\u2A9F","simne":"\u2246","simplus":"\u2A24","simrarr":"\u2972","slarr":"\u2190","SmallCircle":"\u2218","smallsetminus":"\u2216","smashp":"\u2A33","smeparsl":"\u29E4","smid":"\u2223","smile":"\u2323","smt":"\u2AAA","smte":"\u2AAC","smtes":"\u2AAC\uFE00","SOFTcy":"\u042C","softcy":"\u044C","solbar":"\u233F","solb":"\u29C4","sol":"/","Sopf":"\uD835\uDD4A","sopf":"\uD835\uDD64","spades":"\u2660","spadesuit":"\u2660","spar":"\u2225","sqcap":"\u2293","sqcaps":"\u2293\uFE00","sqcup":"\u2294","sqcups":"\u2294\uFE00","Sqrt":"\u221A","sqsub":"\u228F","sqsube":"\u2291","sqsubset":"\u228F","sqsubseteq":"\u2291","sqsup":"\u2290","sqsupe":"\u2292","sqsupset":"\u2290","sqsupseteq":"\u2292","square":"\u25A1","Square":"\u25A1","SquareIntersection":"\u2293","SquareSubset":"\u228F","SquareSubsetEqual":"\u2291","SquareSuperset":"\u2290","SquareSupersetEqual":"\u2292","SquareUnion":"\u2294","squarf":"\u25AA","squ":"\u25A1","squf":"\u25AA","srarr":"\u2192","Sscr":"\uD835\uDCAE","sscr":"\uD835\uDCC8","ssetmn":"\u2216","ssmile":"\u2323","sstarf":"\u22C6","Star":"\u22C6","star":"\u2606","starf":"\u2605","straightepsilon":"\u03F5","straightphi":"\u03D5","strns":"\u00AF","sub":"\u2282","Sub":"\u22D0","subdot":"\u2ABD","subE":"\u2AC5","sube":"\u2286","subedot":"\u2AC3","submult":"\u2AC1","subnE":"\u2ACB","subne":"\u228A","subplus":"\u2ABF","subrarr":"\u2979","subset":"\u2282","Subset":"\u22D0","subseteq":"\u2286","subseteqq":"\u2AC5","SubsetEqual":"\u2286","subsetneq":"\u228A","subsetneqq":"\u2ACB","subsim":"\u2AC7","subsub":"\u2AD5","subsup":"\u2AD3","succapprox":"\u2AB8","succ":"\u227B","succcurlyeq":"\u227D","Succeeds":"\u227B","SucceedsEqual":"\u2AB0","SucceedsSlantEqual":"\u227D","SucceedsTilde":"\u227F","succeq":"\u2AB0","succnapprox":"\u2ABA","succneqq":"\u2AB6","succnsim":"\u22E9","succsim":"\u227F","SuchThat":"\u220B","sum":"\u2211","Sum":"\u2211","sung":"\u266A","sup1":"\u00B9","sup2":"\u00B2","sup3":"\u00B3","sup":"\u2283","Sup":"\u22D1","supdot":"\u2ABE","supdsub":"\u2AD8","supE":"\u2AC6","supe":"\u2287","supedot":"\u2AC4","Superset":"\u2283","SupersetEqual":"\u2287","suphsol":"\u27C9","suphsub":"\u2AD7","suplarr":"\u297B","supmult":"\u2AC2","supnE":"\u2ACC","supne":"\u228B","supplus":"\u2AC0","supset":"\u2283","Supset":"\u22D1","supseteq":"\u2287","supseteqq":"\u2AC6","supsetneq":"\u228B","supsetneqq":"\u2ACC","supsim":"\u2AC8","supsub":"\u2AD4","supsup":"\u2AD6","swarhk":"\u2926","swarr":"\u2199","swArr":"\u21D9","swarrow":"\u2199","swnwar":"\u292A","szlig":"\u00DF","Tab":"\t","target":"\u2316","Tau":"\u03A4","tau":"\u03C4","tbrk":"\u23B4","Tcaron":"\u0164","tcaron":"\u0165","Tcedil":"\u0162","tcedil":"\u0163","Tcy":"\u0422","tcy":"\u0442","tdot":"\u20DB","telrec":"\u2315","Tfr":"\uD835\uDD17","tfr":"\uD835\uDD31","there4":"\u2234","therefore":"\u2234","Therefore":"\u2234","Theta":"\u0398","theta":"\u03B8","thetasym":"\u03D1","thetav":"\u03D1","thickapprox":"\u2248","thicksim":"\u223C","ThickSpace":"\u205F\u200A","ThinSpace":"\u2009","thinsp":"\u2009","thkap":"\u2248","thksim":"\u223C","THORN":"\u00DE","thorn":"\u00FE","tilde":"\u02DC","Tilde":"\u223C","TildeEqual":"\u2243","TildeFullEqual":"\u2245","TildeTilde":"\u2248","timesbar":"\u2A31","timesb":"\u22A0","times":"\u00D7","timesd":"\u2A30","tint":"\u222D","toea":"\u2928","topbot":"\u2336","topcir":"\u2AF1","top":"\u22A4","Topf":"\uD835\uDD4B","topf":"\uD835\uDD65","topfork":"\u2ADA","tosa":"\u2929","tprime":"\u2034","trade":"\u2122","TRADE":"\u2122","triangle":"\u25B5","triangledown":"\u25BF","triangleleft":"\u25C3","trianglelefteq":"\u22B4","triangleq":"\u225C","triangleright":"\u25B9","trianglerighteq":"\u22B5","tridot":"\u25EC","trie":"\u225C","triminus":"\u2A3A","TripleDot":"\u20DB","triplus":"\u2A39","trisb":"\u29CD","tritime":"\u2A3B","trpezium":"\u23E2","Tscr":"\uD835\uDCAF","tscr":"\uD835\uDCC9","TScy":"\u0426","tscy":"\u0446","TSHcy":"\u040B","tshcy":"\u045B","Tstrok":"\u0166","tstrok":"\u0167","twixt":"\u226C","twoheadleftarrow":"\u219E","twoheadrightarrow":"\u21A0","Uacute":"\u00DA","uacute":"\u00FA","uarr":"\u2191","Uarr":"\u219F","uArr":"\u21D1","Uarrocir":"\u2949","Ubrcy":"\u040E","ubrcy":"\u045E","Ubreve":"\u016C","ubreve":"\u016D","Ucirc":"\u00DB","ucirc":"\u00FB","Ucy":"\u0423","ucy":"\u0443","udarr":"\u21C5","Udblac":"\u0170","udblac":"\u0171","udhar":"\u296E","ufisht":"\u297E","Ufr":"\uD835\uDD18","ufr":"\uD835\uDD32","Ugrave":"\u00D9","ugrave":"\u00F9","uHar":"\u2963","uharl":"\u21BF","uharr":"\u21BE","uhblk":"\u2580","ulcorn":"\u231C","ulcorner":"\u231C","ulcrop":"\u230F","ultri":"\u25F8","Umacr":"\u016A","umacr":"\u016B","uml":"\u00A8","UnderBar":"_","UnderBrace":"\u23DF","UnderBracket":"\u23B5","UnderParenthesis":"\u23DD","Union":"\u22C3","UnionPlus":"\u228E","Uogon":"\u0172","uogon":"\u0173","Uopf":"\uD835\uDD4C","uopf":"\uD835\uDD66","UpArrowBar":"\u2912","uparrow":"\u2191","UpArrow":"\u2191","Uparrow":"\u21D1","UpArrowDownArrow":"\u21C5","updownarrow":"\u2195","UpDownArrow":"\u2195","Updownarrow":"\u21D5","UpEquilibrium":"\u296E","upharpoonleft":"\u21BF","upharpoonright":"\u21BE","uplus":"\u228E","UpperLeftArrow":"\u2196","UpperRightArrow":"\u2197","upsi":"\u03C5","Upsi":"\u03D2","upsih":"\u03D2","Upsilon":"\u03A5","upsilon":"\u03C5","UpTeeArrow":"\u21A5","UpTee":"\u22A5","upuparrows":"\u21C8","urcorn":"\u231D","urcorner":"\u231D","urcrop":"\u230E","Uring":"\u016E","uring":"\u016F","urtri":"\u25F9","Uscr":"\uD835\uDCB0","uscr":"\uD835\uDCCA","utdot":"\u22F0","Utilde":"\u0168","utilde":"\u0169","utri":"\u25B5","utrif":"\u25B4","uuarr":"\u21C8","Uuml":"\u00DC","uuml":"\u00FC","uwangle":"\u29A7","vangrt":"\u299C","varepsilon":"\u03F5","varkappa":"\u03F0","varnothing":"\u2205","varphi":"\u03D5","varpi":"\u03D6","varpropto":"\u221D","varr":"\u2195","vArr":"\u21D5","varrho":"\u03F1","varsigma":"\u03C2","varsubsetneq":"\u228A\uFE00","varsubsetneqq":"\u2ACB\uFE00","varsupsetneq":"\u228B\uFE00","varsupsetneqq":"\u2ACC\uFE00","vartheta":"\u03D1","vartriangleleft":"\u22B2","vartriangleright":"\u22B3","vBar":"\u2AE8","Vbar":"\u2AEB","vBarv":"\u2AE9","Vcy":"\u0412","vcy":"\u0432","vdash":"\u22A2","vDash":"\u22A8","Vdash":"\u22A9","VDash":"\u22AB","Vdashl":"\u2AE6","veebar":"\u22BB","vee":"\u2228","Vee":"\u22C1","veeeq":"\u225A","vellip":"\u22EE","verbar":"|","Verbar":"\u2016","vert":"|","Vert":"\u2016","VerticalBar":"\u2223","VerticalLine":"|","VerticalSeparator":"\u2758","VerticalTilde":"\u2240","VeryThinSpace":"\u200A","Vfr":"\uD835\uDD19","vfr":"\uD835\uDD33","vltri":"\u22B2","vnsub":"\u2282\u20D2","vnsup":"\u2283\u20D2","Vopf":"\uD835\uDD4D","vopf":"\uD835\uDD67","vprop":"\u221D","vrtri":"\u22B3","Vscr":"\uD835\uDCB1","vscr":"\uD835\uDCCB","vsubnE":"\u2ACB\uFE00","vsubne":"\u228A\uFE00","vsupnE":"\u2ACC\uFE00","vsupne":"\u228B\uFE00","Vvdash":"\u22AA","vzigzag":"\u299A","Wcirc":"\u0174","wcirc":"\u0175","wedbar":"\u2A5F","wedge":"\u2227","Wedge":"\u22C0","wedgeq":"\u2259","weierp":"\u2118","Wfr":"\uD835\uDD1A","wfr":"\uD835\uDD34","Wopf":"\uD835\uDD4E","wopf":"\uD835\uDD68","wp":"\u2118","wr":"\u2240","wreath":"\u2240","Wscr":"\uD835\uDCB2","wscr":"\uD835\uDCCC","xcap":"\u22C2","xcirc":"\u25EF","xcup":"\u22C3","xdtri":"\u25BD","Xfr":"\uD835\uDD1B","xfr":"\uD835\uDD35","xharr":"\u27F7","xhArr":"\u27FA","Xi":"\u039E","xi":"\u03BE","xlarr":"\u27F5","xlArr":"\u27F8","xmap":"\u27FC","xnis":"\u22FB","xodot":"\u2A00","Xopf":"\uD835\uDD4F","xopf":"\uD835\uDD69","xoplus":"\u2A01","xotime":"\u2A02","xrarr":"\u27F6","xrArr":"\u27F9","Xscr":"\uD835\uDCB3","xscr":"\uD835\uDCCD","xsqcup":"\u2A06","xuplus":"\u2A04","xutri":"\u25B3","xvee":"\u22C1","xwedge":"\u22C0","Yacute":"\u00DD","yacute":"\u00FD","YAcy":"\u042F","yacy":"\u044F","Ycirc":"\u0176","ycirc":"\u0177","Ycy":"\u042B","ycy":"\u044B","yen":"\u00A5","Yfr":"\uD835\uDD1C","yfr":"\uD835\uDD36","YIcy":"\u0407","yicy":"\u0457","Yopf":"\uD835\uDD50","yopf":"\uD835\uDD6A","Yscr":"\uD835\uDCB4","yscr":"\uD835\uDCCE","YUcy":"\u042E","yucy":"\u044E","yuml":"\u00FF","Yuml":"\u0178","Zacute":"\u0179","zacute":"\u017A","Zcaron":"\u017D","zcaron":"\u017E","Zcy":"\u0417","zcy":"\u0437","Zdot":"\u017B","zdot":"\u017C","zeetrf":"\u2128","ZeroWidthSpace":"\u200B","Zeta":"\u0396","zeta":"\u03B6","zfr":"\uD835\uDD37","Zfr":"\u2128","ZHcy":"\u0416","zhcy":"\u0436","zigrarr":"\u21DD","zopf":"\uD835\uDD6B","Zopf":"\u2124","Zscr":"\uD835\uDCB5","zscr":"\uD835\uDCCF","zwj":"\u200D","zwnj":"\u200C"} \ No newline at end of file
diff --git a/assets/node_modules/entities/maps/legacy.json b/assets/node_modules/entities/maps/legacy.json
deleted file mode 100644
index f0e82a4..0000000
--- a/assets/node_modules/entities/maps/legacy.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Aacute":"\u00C1","aacute":"\u00E1","Acirc":"\u00C2","acirc":"\u00E2","acute":"\u00B4","AElig":"\u00C6","aelig":"\u00E6","Agrave":"\u00C0","agrave":"\u00E0","amp":"&","AMP":"&","Aring":"\u00C5","aring":"\u00E5","Atilde":"\u00C3","atilde":"\u00E3","Auml":"\u00C4","auml":"\u00E4","brvbar":"\u00A6","Ccedil":"\u00C7","ccedil":"\u00E7","cedil":"\u00B8","cent":"\u00A2","copy":"\u00A9","COPY":"\u00A9","curren":"\u00A4","deg":"\u00B0","divide":"\u00F7","Eacute":"\u00C9","eacute":"\u00E9","Ecirc":"\u00CA","ecirc":"\u00EA","Egrave":"\u00C8","egrave":"\u00E8","ETH":"\u00D0","eth":"\u00F0","Euml":"\u00CB","euml":"\u00EB","frac12":"\u00BD","frac14":"\u00BC","frac34":"\u00BE","gt":">","GT":">","Iacute":"\u00CD","iacute":"\u00ED","Icirc":"\u00CE","icirc":"\u00EE","iexcl":"\u00A1","Igrave":"\u00CC","igrave":"\u00EC","iquest":"\u00BF","Iuml":"\u00CF","iuml":"\u00EF","laquo":"\u00AB","lt":"<","LT":"<","macr":"\u00AF","micro":"\u00B5","middot":"\u00B7","nbsp":"\u00A0","not":"\u00AC","Ntilde":"\u00D1","ntilde":"\u00F1","Oacute":"\u00D3","oacute":"\u00F3","Ocirc":"\u00D4","ocirc":"\u00F4","Ograve":"\u00D2","ograve":"\u00F2","ordf":"\u00AA","ordm":"\u00BA","Oslash":"\u00D8","oslash":"\u00F8","Otilde":"\u00D5","otilde":"\u00F5","Ouml":"\u00D6","ouml":"\u00F6","para":"\u00B6","plusmn":"\u00B1","pound":"\u00A3","quot":"\"","QUOT":"\"","raquo":"\u00BB","reg":"\u00AE","REG":"\u00AE","sect":"\u00A7","shy":"\u00AD","sup1":"\u00B9","sup2":"\u00B2","sup3":"\u00B3","szlig":"\u00DF","THORN":"\u00DE","thorn":"\u00FE","times":"\u00D7","Uacute":"\u00DA","uacute":"\u00FA","Ucirc":"\u00DB","ucirc":"\u00FB","Ugrave":"\u00D9","ugrave":"\u00F9","uml":"\u00A8","Uuml":"\u00DC","uuml":"\u00FC","Yacute":"\u00DD","yacute":"\u00FD","yen":"\u00A5","yuml":"\u00FF"} \ No newline at end of file
diff --git a/assets/node_modules/entities/maps/xml.json b/assets/node_modules/entities/maps/xml.json
deleted file mode 100644
index de8db10..0000000
--- a/assets/node_modules/entities/maps/xml.json
+++ /dev/null
@@ -1 +0,0 @@
-{"amp":"&","apos":"'","gt":">","lt":"<","quot":"\""}
diff --git a/assets/node_modules/entities/package.json b/assets/node_modules/entities/package.json
deleted file mode 100644
index 6a17296..0000000
--- a/assets/node_modules/entities/package.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "name": "entities",
- "version": "1.1.2",
- "description": "Encode & decode XML/HTML entities with ease",
- "author": "Felix Boehm <me@feedic.com>",
- "keywords": [
- "html",
- "xml",
- "entity",
- "decoding",
- "encoding"
- ],
- "main": "./index.js",
- "directories": {
- "test": "test"
- },
- "devDependencies": {
- "mocha": "^5.0.1",
- "mocha-lcov-reporter": "*",
- "coveralls": "*",
- "istanbul": "*",
- "jshint": "2"
- },
- "scripts": {
- "test": "mocha && npm run lint",
- "lint": "jshint index.js lib/*.js test/*.js",
- "lcov": "istanbul cover _mocha --report lcovonly -- -R spec",
- "coveralls": "npm run lint && npm run lcov && (cat coverage/lcov.info | coveralls || exit 0)"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/fb55/entities.git"
- },
- "license": "BSD-2-Clause",
- "jshintConfig": {
- "eqeqeq": true,
- "freeze": true,
- "latedef": "nofunc",
- "noarg": true,
- "nonbsp": true,
- "quotmark": "double",
- "undef": true,
- "unused": true,
- "trailing": true,
- "eqnull": true,
- "proto": true,
- "smarttabs": true,
- "node": true,
- "globals": {
- "describe": true,
- "it": true
- }
- },
- "prettier": {
- "tabWidth": 4
- }
-}
diff --git a/assets/node_modules/entities/readme.md b/assets/node_modules/entities/readme.md
deleted file mode 100644
index d1d9eec..0000000
--- a/assets/node_modules/entities/readme.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# entities [![NPM version](http://img.shields.io/npm/v/entities.svg)](https://npmjs.org/package/entities) [![Downloads](https://img.shields.io/npm/dm/entities.svg)](https://npmjs.org/package/entities) [![Build Status](http://img.shields.io/travis/fb55/entities.svg)](http://travis-ci.org/fb55/entities) [![Coverage](http://img.shields.io/coveralls/fb55/entities.svg)](https://coveralls.io/r/fb55/entities)
-
-En- & decoder for XML/HTML entities.
-
-## How to…
-
-### …install `entities`
-
- npm i entities
-
-### …use `entities`
-
-```javascript
-var entities = require("entities");
-//encoding
-entities.encodeXML("&#38;"); // "&amp;#38;"
-entities.encodeHTML("&#38;"); // "&amp;&num;38&semi;"
-//decoding
-entities.decodeXML("asdf &amp; &#xFF; &#xFC; &apos;"); // "asdf & ÿ ü '"
-entities.decodeHTML("asdf &amp; &yuml; &uuml; &apos;"); // "asdf & ÿ ü '"
-```
-
-<!-- TODO extend API -->
-
----
-
-License: BSD-2-Clause
diff --git a/assets/node_modules/entities/test/mocha.opts b/assets/node_modules/entities/test/mocha.opts
deleted file mode 100644
index af53e24..0000000
--- a/assets/node_modules/entities/test/mocha.opts
+++ /dev/null
@@ -1,2 +0,0 @@
---check-leaks
---reporter spec
diff --git a/assets/node_modules/entities/test/test.js b/assets/node_modules/entities/test/test.js
deleted file mode 100644
index cb309f3..0000000
--- a/assets/node_modules/entities/test/test.js
+++ /dev/null
@@ -1,170 +0,0 @@
-var assert = require("assert"),
- path = require("path"),
- entities = require("../");
-
-describe("Encode->decode test", function() {
- var testcases = [
- {
- input: "asdf & ÿ ü '",
- xml: "asdf &amp; &#xFF; &#xFC; &apos;",
- html: "asdf &amp; &yuml; &uuml; &apos;"
- },
- {
- input: "&#38;",
- xml: "&amp;#38;",
- html: "&amp;&num;38&semi;"
- }
- ];
- testcases.forEach(function(tc) {
- var encodedXML = entities.encodeXML(tc.input);
- it("should XML encode " + tc.input, function() {
- assert.equal(encodedXML, tc.xml);
- });
- it("should default to XML encode " + tc.input, function() {
- assert.equal(entities.encode(tc.input), tc.xml);
- });
- it("should XML decode " + encodedXML, function() {
- assert.equal(entities.decodeXML(encodedXML), tc.input);
- });
- it("should default to XML encode " + encodedXML, function() {
- assert.equal(entities.decode(encodedXML), tc.input);
- });
- it("should default strict to XML encode " + encodedXML, function() {
- assert.equal(entities.decodeStrict(encodedXML), tc.input);
- });
-
- var encodedHTML5 = entities.encodeHTML5(tc.input);
- it("should HTML5 encode " + tc.input, function() {
- assert.equal(encodedHTML5, tc.html);
- });
- it("should HTML5 decode " + encodedHTML5, function() {
- assert.equal(entities.decodeHTML(encodedHTML5), tc.input);
- });
- });
-
- it("should encode data URIs (issue 16)", function() {
- var data = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAALAAABAAEAAAIBRAA7";
- assert.equal(entities.decode(entities.encode(data)), data);
- });
-});
-
-describe("Decode test", function() {
- var testcases = [
- { input: "&amp;amp;", output: "&amp;" },
- { input: "&amp;#38;", output: "&#38;" },
- { input: "&amp;#x26;", output: "&#x26;" },
- { input: "&amp;#X26;", output: "&#X26;" },
- { input: "&#38;#38;", output: "&#38;" },
- { input: "&#x26;#38;", output: "&#38;" },
- { input: "&#X26;#38;", output: "&#38;" },
- { input: "&#x3a;", output: ":" },
- { input: "&#x3A;", output: ":" },
- { input: "&#X3a;", output: ":" },
- { input: "&#X3A;", output: ":" }
- ];
- testcases.forEach(function(tc) {
- it("should XML decode " + tc.input, function() {
- assert.equal(entities.decodeXML(tc.input), tc.output);
- });
- it("should HTML4 decode " + tc.input, function() {
- assert.equal(entities.decodeHTML(tc.input), tc.output);
- });
- it("should HTML5 decode " + tc.input, function() {
- assert.equal(entities.decodeHTML(tc.input), tc.output);
- });
- });
-});
-
-var levels = ["xml", "entities"];
-
-describe("Documents", function() {
- levels
- .map(function(n) {
- return path.join("..", "maps", n);
- })
- .map(require)
- .forEach(function(doc, i) {
- describe("Decode", function() {
- it(levels[i], function() {
- Object.keys(doc).forEach(function(e) {
- for (var l = i; l < levels.length; l++) {
- assert.equal(entities.decode("&" + e + ";", l), doc[e]);
- }
- });
- });
- });
-
- describe("Decode strict", function() {
- it(levels[i], function() {
- Object.keys(doc).forEach(function(e) {
- for (var l = i; l < levels.length; l++) {
- assert.equal(entities.decodeStrict("&" + e + ";", l), doc[e]);
- }
- });
- });
- });
-
- describe("Encode", function() {
- it(levels[i], function() {
- Object.keys(doc).forEach(function(e) {
- for (var l = i; l < levels.length; l++) {
- assert.equal(entities.decode(entities.encode(doc[e], l), l), doc[e]);
- }
- });
- });
- });
- });
-
- var legacy = require("../maps/legacy.json");
-
- describe("Legacy", function() {
- it("should decode", runLegacy);
- });
-
- function runLegacy() {
- Object.keys(legacy).forEach(function(e) {
- assert.equal(entities.decodeHTML("&" + e), legacy[e]);
- });
- }
-});
-
-var astral = {
- "1D306": "\uD834\uDF06",
- "1D11E": "\uD834\uDD1E"
-};
-
-var astralSpecial = {
- "80": "\u20AC",
- "110000": "\uFFFD"
-};
-
-describe("Astral entities", function() {
- Object.keys(astral).forEach(function(c) {
- it("should decode " + astral[c], function() {
- assert.equal(entities.decode("&#x" + c + ";"), astral[c]);
- });
-
- it("should encode " + astral[c], function() {
- assert.equal(entities.encode(astral[c]), "&#x" + c + ";");
- });
-
- it("should escape " + astral[c], function() {
- assert.equal(entities.escape(astral[c]), "&#x" + c + ";");
- });
- });
-
- Object.keys(astralSpecial).forEach(function(c) {
- it("special should decode \\u" + c, function() {
- assert.equal(entities.decode("&#x" + c + ";"), astralSpecial[c]);
- });
- });
-});
-
-describe("Escape", function() {
- it("should always decode ASCII chars", function() {
- for (var i = 0; i < 0x7f; i++) {
- var c = String.fromCharCode(i);
- assert.equal(entities.decodeXML(entities.escape(c)), c);
- }
- });
-});
diff --git a/assets/node_modules/error-ex/LICENSE b/assets/node_modules/error-ex/LICENSE
deleted file mode 100644
index 0a5f461..0000000
--- a/assets/node_modules/error-ex/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 JD Ballard
-
-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/assets/node_modules/error-ex/README.md b/assets/node_modules/error-ex/README.md
deleted file mode 100644
index 97f744a..0000000
--- a/assets/node_modules/error-ex/README.md
+++ /dev/null
@@ -1,144 +0,0 @@
-# node-error-ex [![Travis-CI.org Build Status](https://img.shields.io/travis/Qix-/node-error-ex.svg?style=flat-square)](https://travis-ci.org/Qix-/node-error-ex) [![Coveralls.io Coverage Rating](https://img.shields.io/coveralls/Qix-/node-error-ex.svg?style=flat-square)](https://coveralls.io/r/Qix-/node-error-ex)
-> Easily subclass and customize new Error types
-
-## Examples
-To include in your project:
-```javascript
-var errorEx = require('error-ex');
-```
-
-To create an error message type with a specific name (note, that `ErrorFn.name`
-will not reflect this):
-```javascript
-var JSONError = errorEx('JSONError');
-
-var err = new JSONError('error');
-err.name; //-> JSONError
-throw err; //-> JSONError: error
-```
-
-To add a stack line:
-```javascript
-var JSONError = errorEx('JSONError', {fileName: errorEx.line('in %s')});
-
-var err = new JSONError('error')
-err.fileName = '/a/b/c/foo.json';
-throw err; //-> (line 2)-> in /a/b/c/foo.json
-```
-
-To append to the error message:
-```javascript
-var JSONError = errorEx('JSONError', {fileName: errorEx.append('in %s')});
-
-var err = new JSONError('error');
-err.fileName = '/a/b/c/foo.json';
-throw err; //-> JSONError: error in /a/b/c/foo.json
-```
-
-## API
-
-#### `errorEx([name], [properties])`
-Creates a new ErrorEx error type
-
-- `name`: the name of the new type (appears in the error message upon throw;
- defaults to `Error.name`)
-- `properties`: if supplied, used as a key/value dictionary of properties to
- use when building up the stack message. Keys are property names that are
- looked up on the error message, and then passed to function values.
- - `line`: if specified and is a function, return value is added as a stack
- entry (error-ex will indent for you). Passed the property value given
- the key.
- - `stack`: if specified and is a function, passed the value of the property
- using the key, and the raw stack lines as a second argument. Takes no
- return value (but the stack can be modified directly).
- - `message`: if specified and is a function, return value is used as new
- `.message` value upon get. Passed the property value of the property named
- by key, and the existing message is passed as the second argument as an
- array of lines (suitable for multi-line messages).
-
-Returns a constructor (Function) that can be used just like the regular Error
-constructor.
-
-```javascript
-var errorEx = require('error-ex');
-
-var BasicError = errorEx();
-
-var NamedError = errorEx('NamedError');
-
-// --
-
-var AdvancedError = errorEx('AdvancedError', {
- foo: {
- line: function (value, stack) {
- if (value) {
- return 'bar ' + value;
- }
- return null;
- }
- }
-}
-
-var err = new AdvancedError('hello, world');
-err.foo = 'baz';
-throw err;
-
-/*
- AdvancedError: hello, world
- bar baz
- at tryReadme() (readme.js:20:1)
-*/
-```
-
-#### `errorEx.line(str)`
-Creates a stack line using a delimiter
-
-> This is a helper function. It is to be used in lieu of writing a value object
-> for `properties` values.
-
-- `str`: The string to create
- - Use the delimiter `%s` to specify where in the string the value should go
-
-```javascript
-var errorEx = require('error-ex');
-
-var FileError = errorEx('FileError', {fileName: errorEx.line('in %s')});
-
-var err = new FileError('problem reading file');
-err.fileName = '/a/b/c/d/foo.js';
-throw err;
-
-/*
- FileError: problem reading file
- in /a/b/c/d/foo.js
- at tryReadme() (readme.js:7:1)
-*/
-```
-
-#### `errorEx.append(str)`
-Appends to the `error.message` string
-
-> This is a helper function. It is to be used in lieu of writing a value object
-> for `properties` values.
-
-- `str`: The string to append
- - Use the delimiter `%s` to specify where in the string the value should go
-
-```javascript
-var errorEx = require('error-ex');
-
-var SyntaxError = errorEx('SyntaxError', {fileName: errorEx.append('in %s')});
-
-var err = new SyntaxError('improper indentation');
-err.fileName = '/a/b/c/d/foo.js';
-throw err;
-
-/*
- SyntaxError: improper indentation in /a/b/c/d/foo.js
- at tryReadme() (readme.js:7:1)
-*/
-```
-
-## License
-Licensed under the [MIT License](http://opensource.org/licenses/MIT).
-You can find a copy of it in [LICENSE](LICENSE).
diff --git a/assets/node_modules/error-ex/index.js b/assets/node_modules/error-ex/index.js
deleted file mode 100644
index 4fb20b4..0000000
--- a/assets/node_modules/error-ex/index.js
+++ /dev/null
@@ -1,141 +0,0 @@
-'use strict';
-
-var util = require('util');
-var isArrayish = require('is-arrayish');
-
-var errorEx = function errorEx(name, properties) {
- if (!name || name.constructor !== String) {
- properties = name || {};
- name = Error.name;
- }
-
- var errorExError = function ErrorEXError(message) {
- if (!this) {
- return new ErrorEXError(message);
- }
-
- message = message instanceof Error
- ? message.message
- : (message || this.message);
-
- Error.call(this, message);
- Error.captureStackTrace(this, errorExError);
-
- this.name = name;
-
- Object.defineProperty(this, 'message', {
- configurable: true,
- enumerable: false,
- get: function () {
- var newMessage = message.split(/\r?\n/g);
-
- for (var key in properties) {
- if (!properties.hasOwnProperty(key)) {
- continue;
- }
-
- var modifier = properties[key];
-
- if ('message' in modifier) {
- newMessage = modifier.message(this[key], newMessage) || newMessage;
- if (!isArrayish(newMessage)) {
- newMessage = [newMessage];
- }
- }
- }
-
- return newMessage.join('\n');
- },
- set: function (v) {
- message = v;
- }
- });
-
- var overwrittenStack = null;
-
- var stackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack');
- var stackGetter = stackDescriptor.get;
- var stackValue = stackDescriptor.value;
- delete stackDescriptor.value;
- delete stackDescriptor.writable;
-
- stackDescriptor.set = function (newstack) {
- overwrittenStack = newstack;
- };
-
- stackDescriptor.get = function () {
- var stack = (overwrittenStack || ((stackGetter)
- ? stackGetter.call(this)
- : stackValue)).split(/\r?\n+/g);
-
- // starting in Node 7, the stack builder caches the message.
- // just replace it.
- if (!overwrittenStack) {
- stack[0] = this.name + ': ' + this.message;
- }
-
- var lineCount = 1;
- for (var key in properties) {
- if (!properties.hasOwnProperty(key)) {
- continue;
- }
-
- var modifier = properties[key];
-
- if ('line' in modifier) {
- var line = modifier.line(this[key]);
- if (line) {
- stack.splice(lineCount++, 0, ' ' + line);
- }
- }
-
- if ('stack' in modifier) {
- modifier.stack(this[key], stack);
- }
- }
-
- return stack.join('\n');
- };
-
- Object.defineProperty(this, 'stack', stackDescriptor);
- };
-
- if (Object.setPrototypeOf) {
- Object.setPrototypeOf(errorExError.prototype, Error.prototype);
- Object.setPrototypeOf(errorExError, Error);
- } else {
- util.inherits(errorExError, Error);
- }
-
- return errorExError;
-};
-
-errorEx.append = function (str, def) {
- return {
- message: function (v, message) {
- v = v || def;
-
- if (v) {
- message[0] += ' ' + str.replace('%s', v.toString());
- }
-
- return message;
- }
- };
-};
-
-errorEx.line = function (str, def) {
- return {
- line: function (v) {
- v = v || def;
-
- if (v) {
- return str.replace('%s', v.toString());
- }
-
- return null;
- }
- };
-};
-
-module.exports = errorEx;
diff --git a/assets/node_modules/error-ex/package.json b/assets/node_modules/error-ex/package.json
deleted file mode 100644
index f3d9ae0..0000000
--- a/assets/node_modules/error-ex/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "name": "error-ex",
- "description": "Easy error subclassing and stack customization",
- "version": "1.3.2",
- "maintainers": [
- "Josh Junon <i.am.qix@gmail.com> (github.com/qix-)",
- "Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)"
- ],
- "keywords": [
- "error",
- "errors",
- "extend",
- "extending",
- "extension",
- "subclass",
- "stack",
- "custom"
- ],
- "license": "MIT",
- "scripts": {
- "pretest": "xo",
- "test": "mocha --compilers coffee:coffee-script/register"
- },
- "xo": {
- "rules": {
- "operator-linebreak": [
- 0
- ]
- }
- },
- "repository": "qix-/node-error-ex",
- "files": [
- "index.js"
- ],
- "devDependencies": {
- "coffee-script": "^1.9.3",
- "coveralls": "^2.11.2",
- "istanbul": "^0.3.17",
- "mocha": "^2.2.5",
- "should": "^7.0.1",
- "xo": "^0.7.1"
- },
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
-}
diff --git a/assets/node_modules/escape-string-regexp/index.js b/assets/node_modules/escape-string-regexp/index.js
deleted file mode 100644
index 7834bf9..0000000
--- a/assets/node_modules/escape-string-regexp/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'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/assets/node_modules/escape-string-regexp/license b/assets/node_modules/escape-string-regexp/license
deleted file mode 100644
index 654d0bf..0000000
--- a/assets/node_modules/escape-string-regexp/license
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/escape-string-regexp/package.json b/assets/node_modules/escape-string-regexp/package.json
deleted file mode 100644
index f307df3..0000000
--- a/assets/node_modules/escape-string-regexp/package.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "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/assets/node_modules/escape-string-regexp/readme.md b/assets/node_modules/escape-string-regexp/readme.md
deleted file mode 100644
index 87ac82d..0000000
--- a/assets/node_modules/escape-string-regexp/readme.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# 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/assets/node_modules/esutils/LICENSE.BSD b/assets/node_modules/esutils/LICENSE.BSD
deleted file mode 100644
index 3e580c3..0000000
--- a/assets/node_modules/esutils/LICENSE.BSD
+++ /dev/null
@@ -1,19 +0,0 @@
-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/assets/node_modules/esutils/README.md b/assets/node_modules/esutils/README.md
deleted file mode 100644
index 517526c..0000000
--- a/assets/node_modules/esutils/README.md
+++ /dev/null
@@ -1,174 +0,0 @@
-### esutils [![Build Status](https://secure.travis-ci.org/estools/esutils.svg)](http://travis-ci.org/estools/esutils)
-esutils ([esutils](http://github.com/estools/esutils)) is
-utility box for ECMAScript language tools.
-
-### API
-
-### ast
-
-#### ast.isExpression(node)
-
-Returns true if `node` is an Expression as defined in ECMA262 edition 5.1 section
-[11](https://es5.github.io/#x11).
-
-#### ast.isStatement(node)
-
-Returns true if `node` is a Statement as defined in ECMA262 edition 5.1 section
-[12](https://es5.github.io/#x12).
-
-#### ast.isIterationStatement(node)
-
-Returns true if `node` is an IterationStatement as defined in ECMA262 edition
-5.1 section [12.6](https://es5.github.io/#x12.6).
-
-#### ast.isSourceElement(node)
-
-Returns true if `node` is a SourceElement as defined in ECMA262 edition 5.1
-section [14](https://es5.github.io/#x14).
-
-#### ast.trailingStatement(node)
-
-Returns `Statement?` if `node` has trailing `Statement`.
-```js
-if (cond)
- consequent;
-```
-When taking this `IfStatement`, returns `consequent;` statement.
-
-#### ast.isProblematicIfStatement(node)
-
-Returns true if `node` is a problematic IfStatement. If `node` is a problematic `IfStatement`, `node` cannot be represented as an one on one JavaScript code.
-```js
-{
- type: 'IfStatement',
- consequent: {
- type: 'WithStatement',
- body: {
- type: 'IfStatement',
- consequent: {type: 'EmptyStatement'}
- }
- },
- alternate: {type: 'EmptyStatement'}
-}
-```
-The above node cannot be represented as a JavaScript code, since the top level `else` alternate belongs to an inner `IfStatement`.
-
-
-### code
-
-#### code.isDecimalDigit(code)
-
-Return true if provided code is decimal digit.
-
-#### code.isHexDigit(code)
-
-Return true if provided code is hexadecimal digit.
-
-#### code.isOctalDigit(code)
-
-Return true if provided code is octal digit.
-
-#### code.isWhiteSpace(code)
-
-Return true if provided code is white space. White space characters are formally defined in ECMA262.
-
-#### code.isLineTerminator(code)
-
-Return true if provided code is line terminator. Line terminator characters are formally defined in ECMA262.
-
-#### code.isIdentifierStart(code)
-
-Return true if provided code can be the first character of ECMA262 Identifier. They are formally defined in ECMA262.
-
-#### code.isIdentifierPart(code)
-
-Return true if provided code can be the trailing character of ECMA262 Identifier. They are formally defined in ECMA262.
-
-### keyword
-
-#### keyword.isKeywordES5(id, strict)
-
-Returns `true` if provided identifier string is a Keyword or Future Reserved Word
-in ECMA262 edition 5.1. They are formally defined in ECMA262 sections
-[7.6.1.1](http://es5.github.io/#x7.6.1.1) and [7.6.1.2](http://es5.github.io/#x7.6.1.2),
-respectively. If the `strict` flag is truthy, this function additionally checks whether
-`id` is a Keyword or Future Reserved Word under strict mode.
-
-#### keyword.isKeywordES6(id, strict)
-
-Returns `true` if provided identifier string is a Keyword or Future Reserved Word
-in ECMA262 edition 6. They are formally defined in ECMA262 sections
-[11.6.2.1](http://ecma-international.org/ecma-262/6.0/#sec-keywords) and
-[11.6.2.2](http://ecma-international.org/ecma-262/6.0/#sec-future-reserved-words),
-respectively. If the `strict` flag is truthy, this function additionally checks whether
-`id` is a Keyword or Future Reserved Word under strict mode.
-
-#### keyword.isReservedWordES5(id, strict)
-
-Returns `true` if provided identifier string is a Reserved Word in ECMA262 edition 5.1.
-They are formally defined in ECMA262 section [7.6.1](http://es5.github.io/#x7.6.1).
-If the `strict` flag is truthy, this function additionally checks whether `id`
-is a Reserved Word under strict mode.
-
-#### keyword.isReservedWordES6(id, strict)
-
-Returns `true` if provided identifier string is a Reserved Word in ECMA262 edition 6.
-They are formally defined in ECMA262 section [11.6.2](http://ecma-international.org/ecma-262/6.0/#sec-reserved-words).
-If the `strict` flag is truthy, this function additionally checks whether `id`
-is a Reserved Word under strict mode.
-
-#### keyword.isRestrictedWord(id)
-
-Returns `true` if provided identifier string is one of `eval` or `arguments`.
-They are restricted in strict mode code throughout ECMA262 edition 5.1 and
-in ECMA262 edition 6 section [12.1.1](http://ecma-international.org/ecma-262/6.0/#sec-identifiers-static-semantics-early-errors).
-
-#### keyword.isIdentifierNameES5(id)
-
-Return true if provided identifier string is an IdentifierName as specified in
-ECMA262 edition 5.1 section [7.6](https://es5.github.io/#x7.6).
-
-#### keyword.isIdentifierNameES6(id)
-
-Return true if provided identifier string is an IdentifierName as specified in
-ECMA262 edition 6 section [11.6](http://ecma-international.org/ecma-262/6.0/#sec-names-and-keywords).
-
-#### keyword.isIdentifierES5(id, strict)
-
-Return true if provided identifier string is an Identifier as specified in
-ECMA262 edition 5.1 section [7.6](https://es5.github.io/#x7.6). If the `strict`
-flag is truthy, this function additionally checks whether `id` is an Identifier
-under strict mode.
-
-#### keyword.isIdentifierES6(id, strict)
-
-Return true if provided identifier string is an Identifier as specified in
-ECMA262 edition 6 section [12.1](http://ecma-international.org/ecma-262/6.0/#sec-identifiers).
-If the `strict` flag is truthy, this function additionally checks whether `id`
-is an Identifier under strict mode.
-
-### License
-
-Copyright (C) 2013 [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/assets/node_modules/esutils/lib/ast.js b/assets/node_modules/esutils/lib/ast.js
deleted file mode 100644
index 8faadae..0000000
--- a/assets/node_modules/esutils/lib/ast.js
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- Copyright (C) 2013 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.
-*/
-
-(function () {
- 'use strict';
-
- function isExpression(node) {
- if (node == null) { return false; }
- switch (node.type) {
- case 'ArrayExpression':
- case 'AssignmentExpression':
- case 'BinaryExpression':
- case 'CallExpression':
- case 'ConditionalExpression':
- case 'FunctionExpression':
- case 'Identifier':
- case 'Literal':
- case 'LogicalExpression':
- case 'MemberExpression':
- case 'NewExpression':
- case 'ObjectExpression':
- case 'SequenceExpression':
- case 'ThisExpression':
- case 'UnaryExpression':
- case 'UpdateExpression':
- return true;
- }
- return false;
- }
-
- function isIterationStatement(node) {
- if (node == null) { return false; }
- switch (node.type) {
- case 'DoWhileStatement':
- case 'ForInStatement':
- case 'ForStatement':
- case 'WhileStatement':
- return true;
- }
- return false;
- }
-
- function isStatement(node) {
- if (node == null) { return false; }
- switch (node.type) {
- case 'BlockStatement':
- case 'BreakStatement':
- case 'ContinueStatement':
- case 'DebuggerStatement':
- case 'DoWhileStatement':
- case 'EmptyStatement':
- case 'ExpressionStatement':
- case 'ForInStatement':
- case 'ForStatement':
- case 'IfStatement':
- case 'LabeledStatement':
- case 'ReturnStatement':
- case 'SwitchStatement':
- case 'ThrowStatement':
- case 'TryStatement':
- case 'VariableDeclaration':
- case 'WhileStatement':
- case 'WithStatement':
- return true;
- }
- return false;
- }
-
- function isSourceElement(node) {
- return isStatement(node) || node != null && node.type === 'FunctionDeclaration';
- }
-
- function trailingStatement(node) {
- switch (node.type) {
- case 'IfStatement':
- if (node.alternate != null) {
- return node.alternate;
- }
- return node.consequent;
-
- case 'LabeledStatement':
- case 'ForStatement':
- case 'ForInStatement':
- case 'WhileStatement':
- case 'WithStatement':
- return node.body;
- }
- return null;
- }
-
- function isProblematicIfStatement(node) {
- var current;
-
- if (node.type !== 'IfStatement') {
- return false;
- }
- if (node.alternate == null) {
- return false;
- }
- current = node.consequent;
- do {
- if (current.type === 'IfStatement') {
- if (current.alternate == null) {
- return true;
- }
- }
- current = trailingStatement(current);
- } while (current);
-
- return false;
- }
-
- module.exports = {
- isExpression: isExpression,
- isStatement: isStatement,
- isIterationStatement: isIterationStatement,
- isSourceElement: isSourceElement,
- isProblematicIfStatement: isProblematicIfStatement,
-
- trailingStatement: trailingStatement
- };
-}());
-/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/assets/node_modules/esutils/lib/code.js b/assets/node_modules/esutils/lib/code.js
deleted file mode 100644
index 23136af..0000000
--- a/assets/node_modules/esutils/lib/code.js
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- Copyright (C) 2013-2014 Yusuke Suzuki <utatane.tea@gmail.com>
- Copyright (C) 2014 Ivan Nikulin <ifaaan@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.
-*/
-
-(function () {
- 'use strict';
-
- var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch;
-
- // See `tools/generate-identifier-regex.js`.
- ES5Regex = {
- // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierStart:
- NonAsciiIdentifierStart: /[\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\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\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-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\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]/,
- // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierPart:
- NonAsciiIdentifierPart: /[\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\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\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\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\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\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-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\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\u200C\u200D\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-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\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]/
- };
-
- ES6Regex = {
- // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierStart:
- NonAsciiIdentifierStart: /[\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\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\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-\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\u2118-\u211D\u2124\u2126\u2128\u212A-\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\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\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\uDF30-\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\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\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]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\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]|\uD87E[\uDC00-\uDE1D]/,
- // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierPart:
- NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\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\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\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\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\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\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\u1369-\u1371\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-\u19DA\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-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\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\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\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\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\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\uDF30-\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\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\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]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\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]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/
- };
-
- function isDecimalDigit(ch) {
- return 0x30 <= ch && ch <= 0x39; // 0..9
- }
-
- function isHexDigit(ch) {
- return 0x30 <= ch && ch <= 0x39 || // 0..9
- 0x61 <= ch && ch <= 0x66 || // a..f
- 0x41 <= ch && ch <= 0x46; // A..F
- }
-
- function isOctalDigit(ch) {
- return ch >= 0x30 && ch <= 0x37; // 0..7
- }
-
- // 7.2 White Space
-
- NON_ASCII_WHITESPACES = [
- 0x1680,
- 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A,
- 0x202F, 0x205F,
- 0x3000,
- 0xFEFF
- ];
-
- function isWhiteSpace(ch) {
- return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 ||
- ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0;
- }
-
- // 7.3 Line Terminators
-
- function isLineTerminator(ch) {
- return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;
- }
-
- // 7.6 Identifier Names and Identifiers
-
- function fromCodePoint(cp) {
- if (cp <= 0xFFFF) { return String.fromCharCode(cp); }
- var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800);
- var cu2 = String.fromCharCode(((cp - 0x10000) % 0x400) + 0xDC00);
- return cu1 + cu2;
- }
-
- IDENTIFIER_START = new Array(0x80);
- for(ch = 0; ch < 0x80; ++ch) {
- IDENTIFIER_START[ch] =
- ch >= 0x61 && ch <= 0x7A || // a..z
- ch >= 0x41 && ch <= 0x5A || // A..Z
- ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)
- }
-
- IDENTIFIER_PART = new Array(0x80);
- for(ch = 0; ch < 0x80; ++ch) {
- IDENTIFIER_PART[ch] =
- ch >= 0x61 && ch <= 0x7A || // a..z
- ch >= 0x41 && ch <= 0x5A || // A..Z
- ch >= 0x30 && ch <= 0x39 || // 0..9
- ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)
- }
-
- function isIdentifierStartES5(ch) {
- return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));
- }
-
- function isIdentifierPartES5(ch) {
- return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));
- }
-
- function isIdentifierStartES6(ch) {
- return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));
- }
-
- function isIdentifierPartES6(ch) {
- return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));
- }
-
- module.exports = {
- isDecimalDigit: isDecimalDigit,
- isHexDigit: isHexDigit,
- isOctalDigit: isOctalDigit,
- isWhiteSpace: isWhiteSpace,
- isLineTerminator: isLineTerminator,
- isIdentifierStartES5: isIdentifierStartES5,
- isIdentifierPartES5: isIdentifierPartES5,
- isIdentifierStartES6: isIdentifierStartES6,
- isIdentifierPartES6: isIdentifierPartES6
- };
-}());
-/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/assets/node_modules/esutils/lib/keyword.js b/assets/node_modules/esutils/lib/keyword.js
deleted file mode 100644
index 13c8c6a..0000000
--- a/assets/node_modules/esutils/lib/keyword.js
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- Copyright (C) 2013 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.
-*/
-
-(function () {
- 'use strict';
-
- var code = require('./code');
-
- function isStrictModeReservedWordES6(id) {
- switch (id) {
- case 'implements':
- case 'interface':
- case 'package':
- case 'private':
- case 'protected':
- case 'public':
- case 'static':
- case 'let':
- return true;
- default:
- return false;
- }
- }
-
- function isKeywordES5(id, strict) {
- // yield should not be treated as keyword under non-strict mode.
- if (!strict && id === 'yield') {
- return false;
- }
- return isKeywordES6(id, strict);
- }
-
- function isKeywordES6(id, strict) {
- if (strict && isStrictModeReservedWordES6(id)) {
- return true;
- }
-
- switch (id.length) {
- case 2:
- return (id === 'if') || (id === 'in') || (id === 'do');
- case 3:
- return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try');
- case 4:
- return (id === 'this') || (id === 'else') || (id === 'case') ||
- (id === 'void') || (id === 'with') || (id === 'enum');
- case 5:
- return (id === 'while') || (id === 'break') || (id === 'catch') ||
- (id === 'throw') || (id === 'const') || (id === 'yield') ||
- (id === 'class') || (id === 'super');
- case 6:
- return (id === 'return') || (id === 'typeof') || (id === 'delete') ||
- (id === 'switch') || (id === 'export') || (id === 'import');
- case 7:
- return (id === 'default') || (id === 'finally') || (id === 'extends');
- case 8:
- return (id === 'function') || (id === 'continue') || (id === 'debugger');
- case 10:
- return (id === 'instanceof');
- default:
- return false;
- }
- }
-
- function isReservedWordES5(id, strict) {
- return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict);
- }
-
- function isReservedWordES6(id, strict) {
- return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict);
- }
-
- function isRestrictedWord(id) {
- return id === 'eval' || id === 'arguments';
- }
-
- function isIdentifierNameES5(id) {
- var i, iz, ch;
-
- if (id.length === 0) { return false; }
-
- ch = id.charCodeAt(0);
- if (!code.isIdentifierStartES5(ch)) {
- return false;
- }
-
- for (i = 1, iz = id.length; i < iz; ++i) {
- ch = id.charCodeAt(i);
- if (!code.isIdentifierPartES5(ch)) {
- return false;
- }
- }
- return true;
- }
-
- function decodeUtf16(lead, trail) {
- return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;
- }
-
- function isIdentifierNameES6(id) {
- var i, iz, ch, lowCh, check;
-
- if (id.length === 0) { return false; }
-
- check = code.isIdentifierStartES6;
- for (i = 0, iz = id.length; i < iz; ++i) {
- ch = id.charCodeAt(i);
- if (0xD800 <= ch && ch <= 0xDBFF) {
- ++i;
- if (i >= iz) { return false; }
- lowCh = id.charCodeAt(i);
- if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) {
- return false;
- }
- ch = decodeUtf16(ch, lowCh);
- }
- if (!check(ch)) {
- return false;
- }
- check = code.isIdentifierPartES6;
- }
- return true;
- }
-
- function isIdentifierES5(id, strict) {
- return isIdentifierNameES5(id) && !isReservedWordES5(id, strict);
- }
-
- function isIdentifierES6(id, strict) {
- return isIdentifierNameES6(id) && !isReservedWordES6(id, strict);
- }
-
- module.exports = {
- isKeywordES5: isKeywordES5,
- isKeywordES6: isKeywordES6,
- isReservedWordES5: isReservedWordES5,
- isReservedWordES6: isReservedWordES6,
- isRestrictedWord: isRestrictedWord,
- isIdentifierNameES5: isIdentifierNameES5,
- isIdentifierNameES6: isIdentifierNameES6,
- isIdentifierES5: isIdentifierES5,
- isIdentifierES6: isIdentifierES6
- };
-}());
-/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/assets/node_modules/esutils/lib/utils.js b/assets/node_modules/esutils/lib/utils.js
deleted file mode 100644
index ce18faa..0000000
--- a/assets/node_modules/esutils/lib/utils.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- Copyright (C) 2013 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.
-*/
-
-
-(function () {
- 'use strict';
-
- exports.ast = require('./ast');
- exports.code = require('./code');
- exports.keyword = require('./keyword');
-}());
-/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/assets/node_modules/esutils/package.json b/assets/node_modules/esutils/package.json
deleted file mode 100644
index 8396f4c..0000000
--- a/assets/node_modules/esutils/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "esutils",
- "description": "utility box for ECMAScript language tools",
- "homepage": "https://github.com/estools/esutils",
- "main": "lib/utils.js",
- "version": "2.0.3",
- "engines": {
- "node": ">=0.10.0"
- },
- "directories": {
- "lib": "./lib"
- },
- "files": [
- "LICENSE.BSD",
- "README.md",
- "lib"
- ],
- "maintainers": [
- {
- "name": "Yusuke Suzuki",
- "email": "utatane.tea@gmail.com",
- "web": "http://github.com/Constellation"
- }
- ],
- "repository": {
- "type": "git",
- "url": "http://github.com/estools/esutils.git"
- },
- "devDependencies": {
- "chai": "~1.7.2",
- "coffee-script": "~1.6.3",
- "jshint": "2.6.3",
- "mocha": "~2.2.1",
- "regenerate": "~1.3.1",
- "unicode-9.0.0": "~0.7.0"
- },
- "license": "BSD-2-Clause",
- "scripts": {
- "test": "npm run-script lint && npm run-script unit-test",
- "lint": "jshint lib/*.js",
- "unit-test": "mocha --compilers coffee:coffee-script -R spec",
- "generate-regex": "node tools/generate-identifier-regex.js"
- }
-}
diff --git a/assets/node_modules/execall/index.d.ts b/assets/node_modules/execall/index.d.ts
deleted file mode 100644
index 6a97259..0000000
--- a/assets/node_modules/execall/index.d.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-declare namespace execall {
- interface Match {
- match: string;
- subMatches: string[];
- index: number;
- }
-}
-
-/**
-Find multiple RegExp matches in a string.
-
-@param regexp - Regular expression to match against the `string`.
-@returns The matches.
-
-@example
-```
-import execall = require('execall');
-
-execall(/(\d+)/g, '$200 and $400');
-// [
-// {
-// match: '200',
-// subMatches: ['200'],
-// index: 1
-// },
-// {
-// match: '400',
-// subMatches: ['400'],
-// index: 10
-// }
-// ]
-```
-*/
-declare function execall(regexp: RegExp, string: string): execall.Match[];
-
-export = execall;
diff --git a/assets/node_modules/execall/index.js b/assets/node_modules/execall/index.js
deleted file mode 100644
index ea1f111..0000000
--- a/assets/node_modules/execall/index.js
+++ /dev/null
@@ -1,24 +0,0 @@
-'use strict';
-const cloneRegexp = require('clone-regexp');
-
-module.exports = (regexp, string) => {
- let match;
- const matches = [];
- const clonedRegexp = cloneRegexp(regexp, {lastIndex: 0});
- const isGlobal = clonedRegexp.global;
-
- // eslint-disable-next-line no-cond-assign
- while (match = clonedRegexp.exec(string)) {
- matches.push({
- match: match[0],
- subMatches: match.slice(1),
- index: match.index
- });
-
- if (!isGlobal) {
- break;
- }
- }
-
- return matches;
-};
diff --git a/assets/node_modules/execall/license b/assets/node_modules/execall/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/execall/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/execall/package.json b/assets/node_modules/execall/package.json
deleted file mode 100644
index be5eda6..0000000
--- a/assets/node_modules/execall/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "execall",
- "version": "2.0.0",
- "description": "Find multiple RegExp matches in a string",
- "license": "MIT",
- "repository": "sindresorhus/execall",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "regex",
- "regexp",
- "regular",
- "expression",
- "exec",
- "match",
- "matches",
- "execall",
- "all",
- "find",
- "findall",
- "immutable",
- "string",
- "multiple",
- "many",
- "global"
- ],
- "dependencies": {
- "clone-regexp": "^2.1.0"
- },
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/execall/readme.md b/assets/node_modules/execall/readme.md
deleted file mode 100644
index 55c3613..0000000
--- a/assets/node_modules/execall/readme.md
+++ /dev/null
@@ -1,62 +0,0 @@
-# execall [![Build Status](https://travis-ci.org/sindresorhus/execall.svg?branch=master)](https://travis-ci.org/sindresorhus/execall)
-
-> Find multiple RegExp matches in a string
-
-Instead of having to iterate over `RegExp#exec`, immutable, and with a nicer result format.
-
-
-## Install
-
-```
-$ npm install execall
-```
-
-
-## Usage
-
-```js
-const execall = require('execall');
-
-execall(/(\d+)/g, '$200 and $400');
-/*
-[
- {
- match: '200',
- subMatches: ['200'],
- index: 1
- },
- {
- match: '400',
- subMatches: ['400'],
- index: 10
- }
-]
-*/
-```
-
-
-## API
-
-### execall(regexp, string)
-
-Returns an `object[]` with a match, sub-matches, and index.
-
-#### regexp
-
-Type: `RegExp`
-
-Regular expression to match against the `string`.
-
-#### string
-
-Type: `string`
-
-
-## Related
-
-- [replace-string](https://github.com/sindresorhus/replace-string) - Replace all substring matches in a string
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/extend/.editorconfig b/assets/node_modules/extend/.editorconfig
deleted file mode 100644
index bc228f8..0000000
--- a/assets/node_modules/extend/.editorconfig
+++ /dev/null
@@ -1,20 +0,0 @@
-root = true
-
-[*]
-indent_style = tab
-indent_size = 4
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-max_line_length = 150
-
-[CHANGELOG.md]
-indent_style = space
-indent_size = 2
-
-[*.json]
-max_line_length = off
-
-[Makefile]
-max_line_length = off
diff --git a/assets/node_modules/extend/.eslintrc b/assets/node_modules/extend/.eslintrc
deleted file mode 100644
index a34cf28..0000000
--- a/assets/node_modules/extend/.eslintrc
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "root": true,
-
- "extends": "@ljharb",
-
- "rules": {
- "complexity": [2, 20],
- "eqeqeq": [2, "allow-null"],
- "func-name-matching": [1],
- "max-depth": [1, 4],
- "max-statements": [2, 26],
- "no-extra-parens": [1],
- "no-magic-numbers": [0],
- "no-restricted-syntax": [2, "BreakStatement", "ContinueStatement", "DebuggerStatement", "LabeledStatement", "WithStatement"],
- "sort-keys": [0],
- }
-}
diff --git a/assets/node_modules/extend/.jscs.json b/assets/node_modules/extend/.jscs.json
deleted file mode 100644
index 3cce01d..0000000
--- a/assets/node_modules/extend/.jscs.json
+++ /dev/null
@@ -1,175 +0,0 @@
-{
- "es3": true,
-
- "additionalRules": [],
-
- "requireSemicolons": true,
-
- "disallowMultipleSpaces": true,
-
- "disallowIdentifierNames": [],
-
- "requireCurlyBraces": {
- "allExcept": [],
- "keywords": ["if", "else", "for", "while", "do", "try", "catch"]
- },
-
- "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"],
-
- "disallowSpaceAfterKeywords": [],
-
- "disallowSpaceBeforeComma": true,
- "disallowSpaceAfterComma": false,
- "disallowSpaceBeforeSemicolon": true,
-
- "disallowNodeTypes": [
- "DebuggerStatement",
- "LabeledStatement",
- "SwitchCase",
- "SwitchStatement",
- "WithStatement"
- ],
-
- "requireObjectKeysOnNewLine": { "allExcept": ["sameLine"] },
-
- "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true },
- "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true },
- "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
- "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true },
- "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true },
-
- "requireSpaceBetweenArguments": true,
-
- "disallowSpacesInsideParentheses": true,
-
- "disallowSpacesInsideArrayBrackets": true,
-
- "disallowQuotedKeysInObjects": { "allExcept": ["reserved"] },
-
- "disallowSpaceAfterObjectKeys": true,
-
- "requireCommaBeforeLineBreak": true,
-
- "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
- "requireSpaceAfterPrefixUnaryOperators": [],
-
- "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
- "requireSpaceBeforePostfixUnaryOperators": [],
-
- "disallowSpaceBeforeBinaryOperators": [],
- "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
-
- "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
- "disallowSpaceAfterBinaryOperators": [],
-
- "disallowImplicitTypeConversion": ["binary", "string"],
-
- "disallowKeywords": ["with", "eval"],
-
- "requireKeywordsOnNewLine": [],
- "disallowKeywordsOnNewLine": ["else"],
-
- "requireLineFeedAtFileEnd": true,
-
- "disallowTrailingWhitespace": true,
-
- "disallowTrailingComma": true,
-
- "excludeFiles": ["node_modules/**", "vendor/**"],
-
- "disallowMultipleLineStrings": true,
-
- "requireDotNotation": { "allExcept": ["keywords"] },
-
- "requireParenthesesAroundIIFE": true,
-
- "validateLineBreaks": "LF",
-
- "validateQuoteMarks": {
- "escape": true,
- "mark": "'"
- },
-
- "disallowOperatorBeforeLineBreak": [],
-
- "requireSpaceBeforeKeywords": [
- "do",
- "for",
- "if",
- "else",
- "switch",
- "case",
- "try",
- "catch",
- "finally",
- "while",
- "with",
- "return"
- ],
-
- "validateAlignedFunctionParameters": {
- "lineBreakAfterOpeningBraces": true,
- "lineBreakBeforeClosingBraces": true
- },
-
- "requirePaddingNewLinesBeforeExport": true,
-
- "validateNewlineAfterArrayElements": {
- "maximum": 6
- },
-
- "requirePaddingNewLinesAfterUseStrict": true,
-
- "disallowArrowFunctions": true,
-
- "disallowMultiLineTernary": true,
-
- "validateOrderInObjectKeys": false,
-
- "disallowIdenticalDestructuringNames": true,
-
- "disallowNestedTernaries": { "maxLevel": 1 },
-
- "requireSpaceAfterComma": { "allExcept": ["trailing"] },
- "requireAlignedMultilineParams": false,
-
- "requireSpacesInGenerator": {
- "afterStar": true
- },
-
- "disallowSpacesInGenerator": {
- "beforeStar": true
- },
-
- "disallowVar": false,
-
- "requireArrayDestructuring": false,
-
- "requireEnhancedObjectLiterals": false,
-
- "requireObjectDestructuring": false,
-
- "requireEarlyReturn": false,
-
- "requireCapitalizedConstructorsNew": {
- "allExcept": ["Function", "String", "Object", "Symbol", "Number", "Date", "RegExp", "Error", "Boolean", "Array"]
- },
-
- "requireImportAlphabetized": false,
-
- "requireSpaceBeforeObjectValues": true,
- "requireSpaceBeforeDestructuredValues": true,
-
- "disallowSpacesInsideTemplateStringPlaceholders": true,
-
- "disallowArrayDestructuringReturn": false,
-
- "requireNewlineBeforeSingleStatementsInIf": false,
-
- "disallowUnusedVariables": true,
-
- "requireSpacesInsideImportedObjectBraces": true,
-
- "requireUseStrict": true
-}
-
diff --git a/assets/node_modules/extend/.travis.yml b/assets/node_modules/extend/.travis.yml
deleted file mode 100644
index 5ccdfc4..0000000
--- a/assets/node_modules/extend/.travis.yml
+++ /dev/null
@@ -1,230 +0,0 @@
-language: node_js
-os:
- - linux
-node_js:
- - "10.7"
- - "9.11"
- - "8.11"
- - "7.10"
- - "6.14"
- - "5.12"
- - "4.9"
- - "iojs-v3.3"
- - "iojs-v2.5"
- - "iojs-v1.8"
- - "0.12"
- - "0.10"
- - "0.8"
-before_install:
- - 'case "${TRAVIS_NODE_VERSION}" in 0.*) export NPM_CONFIG_STRICT_SSL=false ;; esac'
- - 'nvm install-latest-npm'
-install:
- - 'if [ "${TRAVIS_NODE_VERSION}" = "0.6" ] || [ "${TRAVIS_NODE_VERSION}" = "0.9" ]; then nvm install --latest-npm 0.8 && npm install && nvm use "${TRAVIS_NODE_VERSION}"; else npm install; fi;'
-script:
- - 'if [ -n "${PRETEST-}" ]; then npm run pretest ; fi'
- - 'if [ -n "${POSTTEST-}" ]; then npm run posttest ; fi'
- - 'if [ -n "${COVERAGE-}" ]; then npm run coverage ; fi'
- - 'if [ -n "${TEST-}" ]; then npm run tests-only ; fi'
-sudo: false
-env:
- - TEST=true
-matrix:
- fast_finish: true
- include:
- - node_js: "lts/*"
- env: PRETEST=true
- - node_js: "lts/*"
- env: POSTTEST=true
- - node_js: "4"
- env: COVERAGE=true
- - node_js: "10.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "10.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "10.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "10.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "10.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "10.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "10.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.10"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.9"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.8"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.7"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.10"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.9"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.8"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.7"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.9"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.8"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.7"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.13"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.12"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.11"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.10"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.9"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.8"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.7"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.11"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.10"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.9"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.8"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.7"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.8"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.7"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v3.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v3.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v3.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v2.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v2.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v2.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v2.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v2.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.7"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "0.11"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "0.9"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "0.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "0.4"
- env: TEST=true ALLOW_FAILURE=true
- allow_failures:
- - os: osx
- - env: TEST=true ALLOW_FAILURE=true
diff --git a/assets/node_modules/extend/CHANGELOG.md b/assets/node_modules/extend/CHANGELOG.md
deleted file mode 100644
index 2cf7de6..0000000
--- a/assets/node_modules/extend/CHANGELOG.md
+++ /dev/null
@@ -1,83 +0,0 @@
-3.0.2 / 2018-07-19
-==================
- * [Fix] Prevent merging `__proto__` property (#48)
- * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`
- * [Tests] up to `node` `v10.7`, `v9.11`, `v8.11`, `v7.10`, `v6.14`, `v4.9`; use `nvm install-latest-npm`
-
-3.0.1 / 2017-04-27
-==================
- * [Fix] deep extending should work with a non-object (#46)
- * [Dev Deps] update `tape`, `eslint`, `@ljharb/eslint-config`
- * [Tests] up to `node` `v7.9`, `v6.10`, `v4.8`; improve matrix
- * [Docs] Switch from vb.teelaun.ch to versionbadg.es for the npm version badge SVG.
- * [Docs] Add example to readme (#34)
-
-3.0.0 / 2015-07-01
-==================
- * [Possible breaking change] Use global "strict" directive (#32)
- * [Tests] `int` is an ES3 reserved word
- * [Tests] Test up to `io.js` `v2.3`
- * [Tests] Add `npm run eslint`
- * [Dev Deps] Update `covert`, `jscs`
-
-2.0.1 / 2015-04-25
-==================
- * Use an inline `isArray` check, for ES3 browsers. (#27)
- * Some old browsers fail when an identifier is `toString`
- * Test latest `node` and `io.js` versions on `travis-ci`; speed up builds
- * Add license info to package.json (#25)
- * Update `tape`, `jscs`
- * Adding a CHANGELOG
-
-2.0.0 / 2014-10-01
-==================
- * Increase code coverage to 100%; run code coverage as part of tests
- * Add `npm run lint`; Run linter as part of tests
- * Remove nodeType and setInterval checks in isPlainObject
- * Updating `tape`, `jscs`, `covert`
- * General style and README cleanup
-
-1.3.0 / 2014-06-20
-==================
- * Add component.json for browser support (#18)
- * Use SVG for badges in README (#16)
- * Updating `tape`, `covert`
- * Updating travis-ci to work with multiple node versions
- * Fix `deep === false` bug (returning target as {}) (#14)
- * Fixing constructor checks in isPlainObject
- * Adding additional test coverage
- * Adding `npm run coverage`
- * Add LICENSE (#13)
- * Adding a warning about `false`, per #11
- * General style and whitespace cleanup
-
-1.2.1 / 2013-09-14
-==================
- * Fixing hasOwnProperty bugs that would only have shown up in specific browsers. Fixes #8
- * Updating `tape`
-
-1.2.0 / 2013-09-02
-==================
- * Updating the README: add badges
- * Adding a missing variable reference.
- * Using `tape` instead of `buster` for tests; add more tests (#7)
- * Adding node 0.10 to Travis CI (#6)
- * Enabling "npm test" and cleaning up package.json (#5)
- * Add Travis CI.
-
-1.1.3 / 2012-12-06
-==================
- * Added unit tests.
- * Ensure extend function is named. (Looks nicer in a stack trace.)
- * README cleanup.
-
-1.1.1 / 2012-11-07
-==================
- * README cleanup.
- * Added installation instructions.
- * Added a missing semicolon
-
-1.0.0 / 2012-04-08
-==================
- * Initial commit
-
diff --git a/assets/node_modules/extend/LICENSE b/assets/node_modules/extend/LICENSE
deleted file mode 100644
index e16d6a5..0000000
--- a/assets/node_modules/extend/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Stefan Thomas
-
-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/assets/node_modules/extend/README.md b/assets/node_modules/extend/README.md
deleted file mode 100644
index 5b8249a..0000000
--- a/assets/node_modules/extend/README.md
+++ /dev/null
@@ -1,81 +0,0 @@
-[![Build Status][travis-svg]][travis-url]
-[![dependency status][deps-svg]][deps-url]
-[![dev dependency status][dev-deps-svg]][dev-deps-url]
-
-# extend() for Node.js <sup>[![Version Badge][npm-version-png]][npm-url]</sup>
-
-`node-extend` is a port of the classic extend() method from jQuery. It behaves as you expect. It is simple, tried and true.
-
-Notes:
-
-* Since Node.js >= 4,
- [`Object.assign`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
- now offers the same functionality natively (but without the "deep copy" option).
- See [ECMAScript 2015 (ES6) in Node.js](https://nodejs.org/en/docs/es6).
-* Some native implementations of `Object.assign` in both Node.js and many
- browsers (since NPM modules are for the browser too) may not be fully
- spec-compliant.
- Check [`object.assign`](https://www.npmjs.com/package/object.assign) module for
- a compliant candidate.
-
-## Installation
-
-This package is available on [npm][npm-url] as: `extend`
-
-``` sh
-npm install extend
-```
-
-## Usage
-
-**Syntax:** extend **(** [`deep`], `target`, `object1`, [`objectN`] **)**
-
-*Extend one object with one or more others, returning the modified object.*
-
-**Example:**
-
-``` js
-var extend = require('extend');
-extend(targetObject, object1, object2);
-```
-
-Keep in mind that the target object will be modified, and will be returned from extend().
-
-If a boolean true is specified as the first argument, extend performs a deep copy, recursively copying any objects it finds. Otherwise, the copy will share structure with the original object(s).
-Undefined properties are not copied. However, properties inherited from the object's prototype will be copied over.
-Warning: passing `false` as the first argument is not supported.
-
-### Arguments
-
-* `deep` *Boolean* (optional)
-If set, the merge becomes recursive (i.e. deep copy).
-* `target` *Object*
-The object to extend.
-* `object1` *Object*
-The object that will be merged into the first.
-* `objectN` *Object* (Optional)
-More objects to merge into the first.
-
-## License
-
-`node-extend` is licensed under the [MIT License][mit-license-url].
-
-## Acknowledgements
-
-All credit to the jQuery authors for perfecting this amazing utility.
-
-Ported to Node.js by [Stefan Thomas][github-justmoon] with contributions by [Jonathan Buchanan][github-insin] and [Jordan Harband][github-ljharb].
-
-[travis-svg]: https://travis-ci.org/justmoon/node-extend.svg
-[travis-url]: https://travis-ci.org/justmoon/node-extend
-[npm-url]: https://npmjs.org/package/extend
-[mit-license-url]: http://opensource.org/licenses/MIT
-[github-justmoon]: https://github.com/justmoon
-[github-insin]: https://github.com/insin
-[github-ljharb]: https://github.com/ljharb
-[npm-version-png]: http://versionbadg.es/justmoon/node-extend.svg
-[deps-svg]: https://david-dm.org/justmoon/node-extend.svg
-[deps-url]: https://david-dm.org/justmoon/node-extend
-[dev-deps-svg]: https://david-dm.org/justmoon/node-extend/dev-status.svg
-[dev-deps-url]: https://david-dm.org/justmoon/node-extend#info=devDependencies
-
diff --git a/assets/node_modules/extend/component.json b/assets/node_modules/extend/component.json
deleted file mode 100644
index 1500a2f..0000000
--- a/assets/node_modules/extend/component.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "extend",
- "author": "Stefan Thomas <justmoon@members.fsf.org> (http://www.justmoon.net)",
- "version": "3.0.0",
- "description": "Port of jQuery.extend for node.js and the browser.",
- "scripts": [
- "index.js"
- ],
- "contributors": [
- {
- "name": "Jordan Harband",
- "url": "https://github.com/ljharb"
- }
- ],
- "keywords": [
- "extend",
- "clone",
- "merge"
- ],
- "repository" : {
- "type": "git",
- "url": "https://github.com/justmoon/node-extend.git"
- },
- "dependencies": {
- },
- "devDependencies": {
- "tape" : "~3.0.0",
- "covert": "~0.4.0",
- "jscs": "~1.6.2"
- }
-}
-
diff --git a/assets/node_modules/extend/index.js b/assets/node_modules/extend/index.js
deleted file mode 100644
index 2aa3faa..0000000
--- a/assets/node_modules/extend/index.js
+++ /dev/null
@@ -1,117 +0,0 @@
-'use strict';
-
-var hasOwn = Object.prototype.hasOwnProperty;
-var toStr = Object.prototype.toString;
-var defineProperty = Object.defineProperty;
-var gOPD = Object.getOwnPropertyDescriptor;
-
-var isArray = function isArray(arr) {
- if (typeof Array.isArray === 'function') {
- return Array.isArray(arr);
- }
-
- return toStr.call(arr) === '[object Array]';
-};
-
-var isPlainObject = function isPlainObject(obj) {
- if (!obj || toStr.call(obj) !== '[object Object]') {
- return false;
- }
-
- var hasOwnConstructor = hasOwn.call(obj, 'constructor');
- var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');
- // Not own constructor property must be Object
- if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {
- return false;
- }
-
- // Own properties are enumerated firstly, so to speed up,
- // if last one is own, then all properties are own.
- var key;
- for (key in obj) { /**/ }
-
- return typeof key === 'undefined' || hasOwn.call(obj, key);
-};
-
-// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target
-var setProperty = function setProperty(target, options) {
- if (defineProperty && options.name === '__proto__') {
- defineProperty(target, options.name, {
- enumerable: true,
- configurable: true,
- value: options.newValue,
- writable: true
- });
- } else {
- target[options.name] = options.newValue;
- }
-};
-
-// Return undefined instead of __proto__ if '__proto__' is not an own property
-var getProperty = function getProperty(obj, name) {
- if (name === '__proto__') {
- if (!hasOwn.call(obj, name)) {
- return void 0;
- } else if (gOPD) {
- // In early versions of node, obj['__proto__'] is buggy when obj has
- // __proto__ as an own property. Object.getOwnPropertyDescriptor() works.
- return gOPD(obj, name).value;
- }
- }
-
- return obj[name];
-};
-
-module.exports = function extend() {
- var options, name, src, copy, copyIsArray, clone;
- var target = arguments[0];
- var i = 1;
- var length = arguments.length;
- var deep = false;
-
- // Handle a deep copy situation
- if (typeof target === 'boolean') {
- deep = target;
- target = arguments[1] || {};
- // skip the boolean and the target
- i = 2;
- }
- if (target == null || (typeof target !== 'object' && typeof target !== 'function')) {
- target = {};
- }
-
- for (; i < length; ++i) {
- options = arguments[i];
- // Only deal with non-null/undefined values
- if (options != null) {
- // Extend the base object
- for (name in options) {
- src = getProperty(target, name);
- copy = getProperty(options, name);
-
- // Prevent never-ending loop
- if (target !== copy) {
- // Recurse if we're merging plain objects or arrays
- if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {
- if (copyIsArray) {
- copyIsArray = false;
- clone = src && isArray(src) ? src : [];
- } else {
- clone = src && isPlainObject(src) ? src : {};
- }
-
- // Never move original objects, clone them
- setProperty(target, { name: name, newValue: extend(deep, clone, copy) });
-
- // Don't bring in undefined values
- } else if (typeof copy !== 'undefined') {
- setProperty(target, { name: name, newValue: copy });
- }
- }
- }
- }
- }
-
- // Return the modified object
- return target;
-};
diff --git a/assets/node_modules/extend/package.json b/assets/node_modules/extend/package.json
deleted file mode 100644
index 85279f7..0000000
--- a/assets/node_modules/extend/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "extend",
- "author": "Stefan Thomas <justmoon@members.fsf.org> (http://www.justmoon.net)",
- "version": "3.0.2",
- "description": "Port of jQuery.extend for node.js and the browser",
- "main": "index",
- "scripts": {
- "pretest": "npm run lint",
- "test": "npm run tests-only",
- "posttest": "npm run coverage-quiet",
- "tests-only": "node test",
- "coverage": "covert test/index.js",
- "coverage-quiet": "covert test/index.js --quiet",
- "lint": "npm run jscs && npm run eslint",
- "jscs": "jscs *.js */*.js",
- "eslint": "eslint *.js */*.js"
- },
- "contributors": [
- {
- "name": "Jordan Harband",
- "url": "https://github.com/ljharb"
- }
- ],
- "keywords": [
- "extend",
- "clone",
- "merge"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/justmoon/node-extend.git"
- },
- "dependencies": {},
- "devDependencies": {
- "@ljharb/eslint-config": "^12.2.1",
- "covert": "^1.1.0",
- "eslint": "^4.19.1",
- "jscs": "^3.0.7",
- "tape": "^4.9.1"
- },
- "license": "MIT"
-}
diff --git a/assets/node_modules/fast-deep-equal/LICENSE b/assets/node_modules/fast-deep-equal/LICENSE
deleted file mode 100644
index 7f15435..0000000
--- a/assets/node_modules/fast-deep-equal/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2017 Evgeny Poberezkin
-
-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/assets/node_modules/fast-deep-equal/README.md b/assets/node_modules/fast-deep-equal/README.md
deleted file mode 100644
index d3f4ffc..0000000
--- a/assets/node_modules/fast-deep-equal/README.md
+++ /dev/null
@@ -1,96 +0,0 @@
-# fast-deep-equal
-The fastest deep equal with ES6 Map, Set and Typed arrays support.
-
-[![Build Status](https://travis-ci.org/epoberezkin/fast-deep-equal.svg?branch=master)](https://travis-ci.org/epoberezkin/fast-deep-equal)
-[![npm](https://img.shields.io/npm/v/fast-deep-equal.svg)](https://www.npmjs.com/package/fast-deep-equal)
-[![Coverage Status](https://coveralls.io/repos/github/epoberezkin/fast-deep-equal/badge.svg?branch=master)](https://coveralls.io/github/epoberezkin/fast-deep-equal?branch=master)
-
-
-## Install
-
-```bash
-npm install fast-deep-equal
-```
-
-
-## Features
-
-- ES5 compatible
-- works in node.js (8+) and browsers (IE9+)
-- checks equality of Date and RegExp objects by value.
-
-ES6 equal (`require('fast-deep-equal/es6')`) also supports:
-- Maps
-- Sets
-- Typed arrays
-
-
-## Usage
-
-```javascript
-var equal = require('fast-deep-equal');
-console.log(equal({foo: 'bar'}, {foo: 'bar'})); // true
-```
-
-To support ES6 Maps, Sets and Typed arrays equality use:
-
-```javascript
-var equal = require('fast-deep-equal/es6');
-console.log(equal(Int16Array([1, 2]), Int16Array([1, 2]))); // true
-```
-
-To use with React (avoiding the traversal of React elements' _owner
-property that contains circular references and is not needed when
-comparing the elements - borrowed from [react-fast-compare](https://github.com/FormidableLabs/react-fast-compare)):
-
-```javascript
-var equal = require('fast-deep-equal/react');
-var equal = require('fast-deep-equal/es6/react');
-```
-
-
-## Performance benchmark
-
-Node.js v12.6.0:
-
-```
-fast-deep-equal x 261,950 ops/sec ±0.52% (89 runs sampled)
-fast-deep-equal/es6 x 212,991 ops/sec ±0.34% (92 runs sampled)
-fast-equals x 230,957 ops/sec ±0.83% (85 runs sampled)
-nano-equal x 187,995 ops/sec ±0.53% (88 runs sampled)
-shallow-equal-fuzzy x 138,302 ops/sec ±0.49% (90 runs sampled)
-underscore.isEqual x 74,423 ops/sec ±0.38% (89 runs sampled)
-lodash.isEqual x 36,637 ops/sec ±0.72% (90 runs sampled)
-deep-equal x 2,310 ops/sec ±0.37% (90 runs sampled)
-deep-eql x 35,312 ops/sec ±0.67% (91 runs sampled)
-ramda.equals x 12,054 ops/sec ±0.40% (91 runs sampled)
-util.isDeepStrictEqual x 46,440 ops/sec ±0.43% (90 runs sampled)
-assert.deepStrictEqual x 456 ops/sec ±0.71% (88 runs sampled)
-
-The fastest is fast-deep-equal
-```
-
-To run benchmark (requires node.js 6+):
-
-```bash
-npm run benchmark
-```
-
-__Please note__: this benchmark runs against the available test cases. To choose the most performant library for your application, it is recommended to benchmark against your data and to NOT expect this benchmark to reflect the performance difference in your application.
-
-
-## Enterprise support
-
-fast-deep-equal package is a part of [Tidelift enterprise subscription](https://tidelift.com/subscription/pkg/npm-fast-deep-equal?utm_source=npm-fast-deep-equal&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) - it provides a centralised commercial support to open-source software users, in addition to the support provided by software maintainers.
-
-
-## Security contact
-
-To report a security vulnerability, please use the
-[Tidelift security contact](https://tidelift.com/security).
-Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerability via GitHub issues.
-
-
-## License
-
-[MIT](https://github.com/epoberezkin/fast-deep-equal/blob/master/LICENSE)
diff --git a/assets/node_modules/fast-deep-equal/es6/index.d.ts b/assets/node_modules/fast-deep-equal/es6/index.d.ts
deleted file mode 100644
index 0fc8d3b..0000000
--- a/assets/node_modules/fast-deep-equal/es6/index.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-const equal: (a: any, b: any) => boolean;
-export = equal;
diff --git a/assets/node_modules/fast-deep-equal/es6/index.js b/assets/node_modules/fast-deep-equal/es6/index.js
deleted file mode 100644
index d980be2..0000000
--- a/assets/node_modules/fast-deep-equal/es6/index.js
+++ /dev/null
@@ -1,72 +0,0 @@
-'use strict';
-
-// do not edit .js files directly - edit src/index.jst
-
-
- var envHasBigInt64Array = typeof BigInt64Array !== 'undefined';
-
-
-module.exports = function equal(a, b) {
- if (a === b) return true;
-
- if (a && b && typeof a == 'object' && typeof b == 'object') {
- if (a.constructor !== b.constructor) return false;
-
- var length, i, keys;
- if (Array.isArray(a)) {
- length = a.length;
- if (length != b.length) return false;
- for (i = length; i-- !== 0;)
- if (!equal(a[i], b[i])) return false;
- return true;
- }
-
-
- if ((a instanceof Map) && (b instanceof Map)) {
- if (a.size !== b.size) return false;
- for (i of a.entries())
- if (!b.has(i[0])) return false;
- for (i of a.entries())
- if (!equal(i[1], b.get(i[0]))) return false;
- return true;
- }
-
- if ((a instanceof Set) && (b instanceof Set)) {
- if (a.size !== b.size) return false;
- for (i of a.entries())
- if (!b.has(i[0])) return false;
- return true;
- }
-
- if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
- length = a.length;
- if (length != b.length) return false;
- for (i = length; i-- !== 0;)
- if (a[i] !== b[i]) return false;
- return true;
- }
-
-
- if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
- if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
- if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
-
- keys = Object.keys(a);
- length = keys.length;
- if (length !== Object.keys(b).length) return false;
-
- for (i = length; i-- !== 0;)
- if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
-
- for (i = length; i-- !== 0;) {
- var key = keys[i];
-
- if (!equal(a[key], b[key])) return false;
- }
-
- return true;
- }
-
- // true if both NaN, false otherwise
- return a!==a && b!==b;
-};
diff --git a/assets/node_modules/fast-deep-equal/es6/react.d.ts b/assets/node_modules/fast-deep-equal/es6/react.d.ts
deleted file mode 100644
index 0fc8d3b..0000000
--- a/assets/node_modules/fast-deep-equal/es6/react.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-const equal: (a: any, b: any) => boolean;
-export = equal;
diff --git a/assets/node_modules/fast-deep-equal/es6/react.js b/assets/node_modules/fast-deep-equal/es6/react.js
deleted file mode 100644
index 98e2f9b..0000000
--- a/assets/node_modules/fast-deep-equal/es6/react.js
+++ /dev/null
@@ -1,79 +0,0 @@
-'use strict';
-
-// do not edit .js files directly - edit src/index.jst
-
-
- var envHasBigInt64Array = typeof BigInt64Array !== 'undefined';
-
-
-module.exports = function equal(a, b) {
- if (a === b) return true;
-
- if (a && b && typeof a == 'object' && typeof b == 'object') {
- if (a.constructor !== b.constructor) return false;
-
- var length, i, keys;
- if (Array.isArray(a)) {
- length = a.length;
- if (length != b.length) return false;
- for (i = length; i-- !== 0;)
- if (!equal(a[i], b[i])) return false;
- return true;
- }
-
-
- if ((a instanceof Map) && (b instanceof Map)) {
- if (a.size !== b.size) return false;
- for (i of a.entries())
- if (!b.has(i[0])) return false;
- for (i of a.entries())
- if (!equal(i[1], b.get(i[0]))) return false;
- return true;
- }
-
- if ((a instanceof Set) && (b instanceof Set)) {
- if (a.size !== b.size) return false;
- for (i of a.entries())
- if (!b.has(i[0])) return false;
- return true;
- }
-
- if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
- length = a.length;
- if (length != b.length) return false;
- for (i = length; i-- !== 0;)
- if (a[i] !== b[i]) return false;
- return true;
- }
-
-
- if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
- if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
- if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
-
- keys = Object.keys(a);
- length = keys.length;
- if (length !== Object.keys(b).length) return false;
-
- for (i = length; i-- !== 0;)
- if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
-
- for (i = length; i-- !== 0;) {
- var key = keys[i];
-
- if (key === '_owner' && a.$$typeof) {
- // React-specific: avoid traversing React elements' _owner.
- // _owner contains circular references
- // and is not needed when comparing the actual elements (and not their owners)
- continue;
- }
-
- if (!equal(a[key], b[key])) return false;
- }
-
- return true;
- }
-
- // true if both NaN, false otherwise
- return a!==a && b!==b;
-};
diff --git a/assets/node_modules/fast-deep-equal/index.d.ts b/assets/node_modules/fast-deep-equal/index.d.ts
deleted file mode 100644
index 3c042ca..0000000
--- a/assets/node_modules/fast-deep-equal/index.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-declare module 'fast-deep-equal' {
- const equal: (a: any, b: any) => boolean;
- export = equal;
-}
diff --git a/assets/node_modules/fast-deep-equal/index.js b/assets/node_modules/fast-deep-equal/index.js
deleted file mode 100644
index 30dd1ba..0000000
--- a/assets/node_modules/fast-deep-equal/index.js
+++ /dev/null
@@ -1,46 +0,0 @@
-'use strict';
-
-// do not edit .js files directly - edit src/index.jst
-
-
-
-module.exports = function equal(a, b) {
- if (a === b) return true;
-
- if (a && b && typeof a == 'object' && typeof b == 'object') {
- if (a.constructor !== b.constructor) return false;
-
- var length, i, keys;
- if (Array.isArray(a)) {
- length = a.length;
- if (length != b.length) return false;
- for (i = length; i-- !== 0;)
- if (!equal(a[i], b[i])) return false;
- return true;
- }
-
-
-
- if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
- if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
- if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
-
- keys = Object.keys(a);
- length = keys.length;
- if (length !== Object.keys(b).length) return false;
-
- for (i = length; i-- !== 0;)
- if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
-
- for (i = length; i-- !== 0;) {
- var key = keys[i];
-
- if (!equal(a[key], b[key])) return false;
- }
-
- return true;
- }
-
- // true if both NaN, false otherwise
- return a!==a && b!==b;
-};
diff --git a/assets/node_modules/fast-deep-equal/package.json b/assets/node_modules/fast-deep-equal/package.json
deleted file mode 100644
index be07589..0000000
--- a/assets/node_modules/fast-deep-equal/package.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "name": "fast-deep-equal",
- "version": "3.1.1",
- "description": "Fast deep equal",
- "main": "index.js",
- "scripts": {
- "eslint": "eslint *.js benchmark/*.js spec/*.js",
- "build": "node build",
- "benchmark": "npm i && npm run build && cd ./benchmark && npm i && node ./",
- "test-spec": "mocha spec/*.spec.js -R spec",
- "test-cov": "nyc npm run test-spec",
- "test-ts": "tsc --target ES5 --noImplicitAny index.d.ts",
- "test": "npm run build && npm run eslint && npm run test-ts && npm run test-cov",
- "prepublish": "npm run build"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/epoberezkin/fast-deep-equal.git"
- },
- "keywords": [
- "fast",
- "equal",
- "deep-equal"
- ],
- "author": "Evgeny Poberezkin",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/epoberezkin/fast-deep-equal/issues"
- },
- "homepage": "https://github.com/epoberezkin/fast-deep-equal#readme",
- "devDependencies": {
- "coveralls": "^2.13.1",
- "dot": "^1.1.2",
- "eslint": "^4.0.0",
- "mocha": "^3.4.2",
- "nyc": "^11.0.2",
- "pre-commit": "^1.2.2",
- "react": "^16.12.0",
- "react-test-renderer": "^16.12.0",
- "sinon": "^7.5.0",
- "typescript": "^2.6.1"
- },
- "nyc": {
- "exclude": [
- "**/spec/**",
- "node_modules"
- ],
- "reporter": [
- "lcov",
- "text-summary"
- ]
- },
- "files": [
- "index.js",
- "index.d.ts",
- "react.js",
- "react.d.ts",
- "es6/"
- ],
- "types": "index.d.ts"
-}
diff --git a/assets/node_modules/fast-deep-equal/react.d.ts b/assets/node_modules/fast-deep-equal/react.d.ts
deleted file mode 100644
index 0fc8d3b..0000000
--- a/assets/node_modules/fast-deep-equal/react.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-const equal: (a: any, b: any) => boolean;
-export = equal;
diff --git a/assets/node_modules/fast-deep-equal/react.js b/assets/node_modules/fast-deep-equal/react.js
deleted file mode 100644
index 3489b98..0000000
--- a/assets/node_modules/fast-deep-equal/react.js
+++ /dev/null
@@ -1,53 +0,0 @@
-'use strict';
-
-// do not edit .js files directly - edit src/index.jst
-
-
-
-module.exports = function equal(a, b) {
- if (a === b) return true;
-
- if (a && b && typeof a == 'object' && typeof b == 'object') {
- if (a.constructor !== b.constructor) return false;
-
- var length, i, keys;
- if (Array.isArray(a)) {
- length = a.length;
- if (length != b.length) return false;
- for (i = length; i-- !== 0;)
- if (!equal(a[i], b[i])) return false;
- return true;
- }
-
-
-
- if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
- if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
- if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
-
- keys = Object.keys(a);
- length = keys.length;
- if (length !== Object.keys(b).length) return false;
-
- for (i = length; i-- !== 0;)
- if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
-
- for (i = length; i-- !== 0;) {
- var key = keys[i];
-
- if (key === '_owner' && a.$$typeof) {
- // React-specific: avoid traversing React elements' _owner.
- // _owner contains circular references
- // and is not needed when comparing the actual elements (and not their owners)
- continue;
- }
-
- if (!equal(a[key], b[key])) return false;
- }
-
- return true;
- }
-
- // true if both NaN, false otherwise
- return a!==a && b!==b;
-};
diff --git a/assets/node_modules/fast-glob/LICENSE b/assets/node_modules/fast-glob/LICENSE
deleted file mode 100644
index 65a9994..0000000
--- a/assets/node_modules/fast-glob/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Denis Malinochkin
-
-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/assets/node_modules/fast-glob/README.md b/assets/node_modules/fast-glob/README.md
deleted file mode 100644
index f698d58..0000000
--- a/assets/node_modules/fast-glob/README.md
+++ /dev/null
@@ -1,793 +0,0 @@
-# fast-glob
-
-> It's a very fast and efficient [glob][glob_definition] library for [Node.js][node_js].
-
-This package provides methods for traversing the file system and returning pathnames that matched a defined set of a specified pattern according to the rules used by the Unix Bash shell with some simplifications, meanwhile results are returned in **arbitrary order**. Quick, simple, effective.
-
-## Table of Contents
-
-<details>
-<summary><strong>Details</strong></summary>
-
-* [Highlights](#highlights)
-* [Donation](#donation)
-* [Old and modern mode](#old-and-modern-mode)
-* [Pattern syntax](#pattern-syntax)
- * [Basic syntax](#basic-syntax)
- * [Advanced syntax](#advanced-syntax)
-* [Installation](#installation)
-* [API](#api)
- * [Asynchronous](#asynchronous)
- * [Synchronous](#synchronous)
- * [Stream](#stream)
- * [patterns](#patterns)
- * [[options]](#options)
- * [Helpers](#helpers)
- * [generateTasks](#generatetaskspatterns-options)
- * [isDynamicPattern](#isdynamicpatternpattern-options)
- * [escapePath](#escapepathpattern)
-* [Options](#options-3)
- * [Common](#common)
- * [concurrency](#concurrency)
- * [cwd](#cwd)
- * [deep](#deep)
- * [followSymbolicLinks](#followsymboliclinks)
- * [fs](#fs)
- * [ignore](#ignore)
- * [suppressErrors](#suppresserrors)
- * [throwErrorOnBrokenSymbolicLink](#throwerroronbrokensymboliclink)
- * [Output control](#output-control)
- * [absolute](#absolute)
- * [markDirectories](#markdirectories)
- * [objectMode](#objectmode)
- * [onlyDirectories](#onlydirectories)
- * [onlyFiles](#onlyfiles)
- * [stats](#stats)
- * [unique](#unique)
- * [Matching control](#matching-control)
- * [braceExpansion](#braceexpansion)
- * [caseSensitiveMatch](#casesensitivematch)
- * [dot](#dot)
- * [extglob](#extglob)
- * [globstar](#globstar)
- * [baseNameMatch](#basenamematch)
-* [FAQ](#faq)
- * [What is a static or dynamic pattern?](#what-is-a-static-or-dynamic-pattern)
- * [How to write patterns on Windows?](#how-to-write-patterns-on-windows)
- * [Why are parentheses match wrong?](#why-are-parentheses-match-wrong)
- * [How to exclude directory from reading?](#how-to-exclude-directory-from-reading)
- * [How to use UNC path?](#how-to-use-unc-path)
- * [Compatible with `node-glob`?](#compatible-with-node-glob)
-* [Benchmarks](#benchmarks)
- * [Server](#server)
- * [Nettop](#nettop)
-* [Changelog](#changelog)
-* [License](#license)
-
-</details>
-
-## Highlights
-
-* Fast. Probably the fastest.
-* Supports multiple and negative patterns.
-* Synchronous, Promise and Stream API.
-* Object mode. Can return more than just strings.
-* Error-tolerant.
-
-## Donation
-
-Do you like this project? Support it by donating, creating an issue or pull request.
-
-[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)][paypal_mrmlnc]
-
-## Old and modern mode
-
-This package works in two modes, depending on the environment in which it is used.
-
-* **Old mode**. Node.js below 10.10 or when the [`stats`](#stats) option is *enabled*.
-* **Modern mode**. Node.js 10.10+ and the [`stats`](#stats) option is *disabled*.
-
-The modern mode is faster. Learn more about the [internal mechanism][nodelib_fs_scandir_old_and_modern_modern].
-
-## Pattern syntax
-
-> :warning: Always use forward-slashes in glob expressions (patterns and [`ignore`](#ignore) option). Use backslashes for escaping characters.
-
-There is more than one form of syntax: basic and advanced. Below is a brief overview of the supported features. Also pay attention to our [FAQ](#faq).
-
-> :book: This package uses a [`micromatch`][micromatch] as a library for pattern matching.
-
-### Basic syntax
-
-* An asterisk (`*`) — matches everything except slashes (path separators), hidden files (names starting with `.`).
-* A double star or globstar (`**`) — matches zero or more directories.
-* Question mark (`?`) – matches any single character except slashes (path separators).
-* Sequence (`[seq]`) — matches any character in sequence.
-
-> :book: A few additional words about the [basic matching behavior][picomatch_matching_behavior].
-
-Some examples:
-
-* `src/**/*.js` — matches all files in the `src` directory (any level of nesting) that have the `.js` extension.
-* `src/*.??` — matches all files in the `src` directory (only first level of nesting) that have a two-character extension.
-* `file-[01].js` — matches files: `file-0.js`, `file-1.js`.
-
-### Advanced syntax
-
-* [Escapes characters][micromatch_backslashes] (`\\`) — matching special characters (`$^*+?()[]`) as literals.
-* [POSIX character classes][picomatch_posix_brackets] (`[[:digit:]]`).
-* [Extended globs][micromatch_extglobs] (`?(pattern-list)`).
-* [Bash style brace expansions][micromatch_braces] (`{}`).
-* [Regexp character classes][micromatch_regex_character_classes] (`[1-5]`).
-* [Regex groups][regular_expressions_brackets] (`(a|b)`).
-
-> :book: A few additional words about the [advanced matching behavior][micromatch_extended_globbing].
-
-Some examples:
-
-* `src/**/*.{css,scss}` — matches all files in the `src` directory (any level of nesting) that have the `.css` or `.scss` extension.
-* `file-[[:digit:]].js` — matches files: `file-0.js`, `file-1.js`, …, `file-9.js`.
-* `file-{1..3}.js` — matches files: `file-1.js`, `file-2.js`, `file-3.js`.
-* `file-(1|2)` — matches files: `file-1.js`, `file-2.js`.
-
-## Installation
-
-```console
-npm install fast-glob
-```
-
-## API
-
-### Asynchronous
-
-```js
-fg(patterns, [options])
-```
-
-Returns a `Promise` with an array of matching entries.
-
-```js
-const fg = require('fast-glob');
-
-const entries = await fg(['.editorconfig', '**/index.js'], { dot: true });
-
-// ['.editorconfig', 'services/index.js']
-```
-
-### Synchronous
-
-```js
-fg.sync(patterns, [options])
-```
-
-Returns an array of matching entries.
-
-```js
-const fg = require('fast-glob');
-
-const entries = fg.sync(['.editorconfig', '**/index.js'], { dot: true });
-
-// ['.editorconfig', 'services/index.js']
-```
-
-### Stream
-
-```js
-fg.stream(patterns, [options])
-```
-
-Returns a [`ReadableStream`][node_js_stream_readable_streams] when the `data` event will be emitted with matching entry.
-
-```js
-const fg = require('fast-glob');
-
-const stream = fg.stream(['.editorconfig', '**/index.js'], { dot: true });
-
-for await (const entry of stream) {
- // .editorconfig
- // services/index.js
-}
-```
-
-#### patterns
-
-* Required: `true`
-* Type: `string | string[]`
-
-Any correct pattern(s).
-
-> :1234: [Pattern syntax](#pattern-syntax)
->
-> :warning: This package does not respect the order of patterns. First, all the negative patterns are applied, and only then the positive patterns. If you want to get a certain order of records, use sorting or split calls.
-
-#### [options]
-
-* Required: `false`
-* Type: [`Options`](#options-3)
-
-See [Options](#options-3) section.
-
-### Helpers
-
-#### `generateTasks(patterns, [options])`
-
-Returns the internal representation of patterns ([`Task`](./src/managers/tasks.ts) is a combining patterns by base directory).
-
-```js
-fg.generateTasks('*');
-
-[{
- base: '.', // Parent directory for all patterns inside this task
- dynamic: true, // Dynamic or static patterns are in this task
- patterns: ['*'],
- positive: ['*'],
- negative: []
-}]
-```
-
-##### patterns
-
-* Required: `true`
-* Type: `string | string[]`
-
-Any correct pattern(s).
-
-##### [options]
-
-* Required: `false`
-* Type: [`Options`](#options-3)
-
-See [Options](#options-3) section.
-
-#### `isDynamicPattern(pattern, [options])`
-
-Returns `true` if the passed pattern is a dynamic pattern.
-
-> :1234: [What is a static or dynamic pattern?](#what-is-a-static-or-dynamic-pattern)
-
-```js
-fg.isDynamicPattern('*'); // true
-fg.isDynamicPattern('abc'); // false
-```
-
-##### pattern
-
-* Required: `true`
-* Type: `string`
-
-Any correct pattern.
-
-##### [options]
-
-* Required: `false`
-* Type: [`Options`](#options-3)
-
-See [Options](#options-3) section.
-
-#### `escapePath(pattern)`
-
-Returns a path with escaped special characters (`*?|(){}[]`, `!` at the beginning of line, `@+!` before the opening parenthesis).
-
-```js
-fg.escapePath('!abc'); // \\!abc
-fg.escapePath('C:/Program Files (x86)'); // C:/Program Files \\(x86\\)
-```
-
-##### pattern
-
-* Required: `true`
-* Type: `string`
-
-Any string, for example, a path to a file.
-
-## Options
-
-### Common options
-
-#### concurrency
-
-* Type: `number`
-* Default: `os.cpus().length`
-
-Specifies the maximum number of concurrent requests from a reader to read directories.
-
-> :book: The higher the number, the higher the performance and load on the file system. If you want to read in quiet mode, set the value to a comfortable number or `1`.
-
-#### cwd
-
-* Type: `string`
-* Default: `process.cwd()`
-
-The current working directory in which to search.
-
-#### deep
-
-* Type: `number`
-* Default: `Infinity`
-
-Specifies the maximum depth of a read directory relative to the start directory.
-
-For example, you have the following tree:
-
-```js
-dir/
-└── one/ // 1
- └── two/ // 2
- └── file.js // 3
-```
-
-```js
-// With base directory
-fg.sync('dir/**', { onlyFiles: false, deep: 1 }); // ['dir/one']
-fg.sync('dir/**', { onlyFiles: false, deep: 2 }); // ['dir/one', 'dir/one/two']
-
-// With cwd option
-fg.sync('**', { onlyFiles: false, cwd: 'dir', deep: 1 }); // ['one']
-fg.sync('**', { onlyFiles: false, cwd: 'dir', deep: 2 }); // ['one', 'one/two']
-```
-
-> :book: If you specify a pattern with some base directory, this directory will not participate in the calculation of the depth of the found directories. Think of it as a [`cwd`](#cwd) option.
-
-#### followSymbolicLinks
-
-* Type: `boolean`
-* Default: `true`
-
-Indicates whether to traverse descendants of symbolic link directories.
-
-> :book: If the [`stats`](#stats) option is specified, the information about the symbolic link (`fs.lstat`) will be replaced with information about the entry (`fs.stat`) behind it.
-
-#### fs
-
-* Type: `FileSystemAdapter`
-* Default: `fs.*`
-
-Custom implementation of methods for working with the file system.
-
-```ts
-export interface FileSystemAdapter {
- lstat?: typeof fs.lstat;
- stat?: typeof fs.stat;
- lstatSync?: typeof fs.lstatSync;
- statSync?: typeof fs.statSync;
- readdir?: typeof fs.readdir;
- readdirSync?: typeof fs.readdirSync;
-}
-```
-
-#### ignore
-
-* Type: `string[]`
-* Default: `[]`
-
-An array of glob patterns to exclude matches. This is an alternative way to use negative patterns.
-
-```js
-dir/
-├── package-lock.json
-└── package.json
-```
-
-```js
-fg.sync(['*.json', '!package-lock.json']); // ['package.json']
-fg.sync('*.json', { ignore: ['package-lock.json'] }); // ['package.json']
-```
-
-#### suppressErrors
-
-* Type: `boolean`
-* Default: `false`
-
-By default this package suppress only `ENOENT` errors. Set to `true` to suppress any error.
-
-> :book: Can be useful when the directory has entries with a special level of access.
-
-#### throwErrorOnBrokenSymbolicLink
-
-* Type: `boolean`
-* Default: `false`
-
-Throw an error when symbolic link is broken if `true` or safely return `lstat` call if `false`.
-
-> :book: This option has no effect on errors when reading the symbolic link directory.
-
-### Output control
-
-#### absolute
-
-* Type: `boolean`
-* Default: `false`
-
-Return the absolute path for entries.
-
-```js
-fg.sync('*.js', { absolute: false }); // ['index.js']
-fg.sync('*.js', { absolute: true }); // ['/home/user/index.js']
-```
-
-> :book: This option is required if you want to use negative patterns with absolute path, for example, `!${__dirname}/*.js`.
-
-#### markDirectories
-
-* Type: `boolean`
-* Default: `false`
-
-Mark the directory path with the final slash.
-
-```js
-fs.sync('*', { onlyFiles: false, markDirectories: false }); // ['index.js', 'controllers']
-fs.sync('*', { onlyFiles: false, markDirectories: true }); // ['index.js', 'controllers/']
-```
-
-#### objectMode
-
-* Type: `boolean`
-* Default: `false`
-
-Returns objects (instead of strings) describing entries.
-
-```js
-fg.sync('*', { objectMode: false }); // ['src/index.js']
-fg.sync('*', { objectMode: true }); // [{ name: 'index.js', path: 'src/index.js', dirent: <fs.Dirent> }]
-```
-
-The object has the following fields:
-
-* name (`string`) — the last part of the path (basename)
-* path (`string`) — full path relative to the pattern base directory
-* dirent ([`fs.Dirent`][node_js_fs_class_fs_dirent]) — instance of `fs.Direct`
-
-> :book: An object is an internal representation of entry, so getting it does not affect performance.
-
-#### onlyDirectories
-
-* Type: `boolean`
-* Default: `false`
-
-Return only directories.
-
-```js
-fg.sync('*', { onlyDirectories: false }); // ['index.js', 'src']
-fg.sync('*', { onlyDirectories: true }); // ['src']
-```
-
-> :book: If `true`, the [`onlyFiles`](#onlyfiles) option is automatically `false`.
-
-#### onlyFiles
-
-* Type: `boolean`
-* Default: `true`
-
-Return only files.
-
-```js
-fg.sync('*', { onlyFiles: false }); // ['index.js', 'src']
-fg.sync('*', { onlyFiles: true }); // ['index.js']
-```
-
-#### stats
-
-* Type: `boolean`
-* Default: `false`
-
-Enables an [object mode](#objectmode) with an additional field:
-
-* stats ([`fs.Stats`][node_js_fs_class_fs_stats]) — instance of `fs.Stats`
-
-```js
-fg.sync('*', { stats: false }); // ['src/index.js']
-fg.sync('*', { stats: true }); // [{ name: 'index.js', path: 'src/index.js', dirent: <fs.Dirent>, stats: <fs.Stats> }]
-```
-
-> :book: Returns `fs.stat` instead of `fs.lstat` for symbolic links when the [`followSymbolicLinks`](#followsymboliclinks) option is specified.
->
-> :warning: Unlike [object mode](#objectmode) this mode requires additional calls to the file system. On average, this mode is slower at least twice. See [old and modern mode](#old-and-modern-mode) for more details.
-
-#### unique
-
-* Type: `boolean`
-* Default: `true`
-
-Ensures that the returned entries are unique.
-
-```js
-fg.sync(['*.json', 'package.json'], { unique: false }); // ['package.json', 'package.json']
-fg.sync(['*.json', 'package.json'], { unique: true }); // ['package.json']
-```
-
-If `true` and similar entries are found, the result is the first found.
-
-### Matching control
-
-#### braceExpansion
-
-* Type: `boolean`
-* Default: `true`
-
-Enables Bash-like brace expansion.
-
-> :1234: [Syntax description][bash_hackers_syntax_expansion_brace] or more [detailed description][micromatch_braces].
-
-```js
-dir/
-├── abd
-├── acd
-└── a{b,c}d
-```
-
-```js
-fg.sync('a{b,c}d', { braceExpansion: false }); // ['a{b,c}d']
-fg.sync('a{b,c}d', { braceExpansion: true }); // ['abd', 'acd']
-```
-
-#### caseSensitiveMatch
-
-* Type: `boolean`
-* Default: `true`
-
-Enables a [case-sensitive][wikipedia_case_sensitivity] mode for matching files.
-
-```js
-dir/
-├── file.txt
-└── File.txt
-```
-
-```js
-fg.sync('file.txt', { caseSensitiveMatch: false }); // ['file.txt', 'File.txt']
-fg.sync('file.txt', { caseSensitiveMatch: true }); // ['file.txt']
-```
-
-#### dot
-
-* Type: `boolean`
-* Default: `false`
-
-Allow patterns to match entries that begin with a period (`.`).
-
-> :book: Note that an explicit dot in a portion of the pattern will always match dot files.
-
-```js
-dir/
-├── .editorconfig
-└── package.json
-```
-
-```js
-fg.sync('*', { dot: false }); // ['package.json']
-fg.sync('*', { dot: true }); // ['.editorconfig', 'package.json']
-```
-
-#### extglob
-
-* Type: `boolean`
-* Default: `true`
-
-Enables Bash-like `extglob` functionality.
-
-> :1234: [Syntax description][micromatch_extglobs].
-
-```js
-dir/
-├── README.md
-└── package.json
-```
-
-```js
-fg.sync('*.+(json|md)', { extglob: false }); // []
-fg.sync('*.+(json|md)', { extglob: true }); // ['README.md', 'package.json']
-```
-
-#### globstar
-
-* Type: `boolean`
-* Default: `true`
-
-Enables recursively repeats a pattern containing `**`. If `false`, `**` behaves exactly like `*`.
-
-```js
-dir/
-└── a
- └── b
-```
-
-```js
-fg.sync('**', { onlyFiles: false, globstar: false }); // ['a']
-fg.sync('**', { onlyFiles: false, globstar: true }); // ['a', 'a/b']
-```
-
-#### baseNameMatch
-
-* Type: `boolean`
-* Default: `false`
-
-If set to `true`, then patterns without slashes will be matched against the basename of the path if it contains slashes.
-
-```js
-dir/
-└── one/
- └── file.md
-```
-
-```js
-fg.sync('*.md', { baseNameMatch: false }); // []
-fg.sync('*.md', { baseNameMatch: true }); // ['one/file.md']
-```
-
-## FAQ
-
-## What is a static or dynamic pattern?
-
-All patterns can be divided into two types:
-
-* **static**. A pattern is considered static if it can be used to get an entry on the file system without using matching mechanisms. For example, the `file.js` pattern is a static pattern because we can just verify that it exists on the file system.
-* **dynamic**. A pattern is considered dynamic if it cannot be used directly to find occurrences without using a matching mechanisms. For example, the `*` pattern is a dynamic pattern because we cannot use this pattern directly.
-
-A pattern is considered dynamic if it contains the following characters (`…` — any characters or their absence) or options:
-
-* The [`caseSensitiveMatch`](#casesensitivematch) option is disabled
-* `\\` (the escape character)
-* `*`, `?`, `!` (at the beginning of line)
-* `[…]`
-* `(…|…)`
-* `@(…)`, `!(…)`, `*(…)`, `?(…)`, `+(…)` (respects the [`extglob`](#extglob) option)
-* `{…,…}`, `{…..…}` (respects the [`braceExpansion`](#braceexpansion) option)
-
-## How to write patterns on Windows?
-
-Always use forward-slashes in glob expressions (patterns and [`ignore`](#ignore) option). Use backslashes for escaping characters. With the [`cwd`](#cwd) option use a convenient format.
-
-**Bad**
-
-```ts
-[
- 'directory\\*',
- path.join(process.cwd(), '**')
-]
-```
-
-**Good**
-
-```ts
-[
- 'directory/*',
- path.join(process.cwd(), '**').replace(/\\/g, '/')
-]
-```
-
-> :book: Use the [`normalize-path`][npm_normalize_path] or the [`unixify`][npm_unixify] package to convert Windows-style path to a Unix-style path.
-
-Read more about [matching with backslashes][micromatch_backslashes].
-
-## Why are parentheses match wrong?
-
-```js
-dir/
-└── (special-*file).txt
-```
-
-```js
-fg.sync(['(special-*file).txt']) // []
-```
-
-Refers to Bash. You need to escape special characters:
-
-```js
-fg.sync(['\\(special-*file\\).txt']) // ['(special-*file).txt']
-```
-
-Read more about [matching special characters as literals][picomatch_matching_special_characters_as_literals].
-
-## How to exclude directory from reading?
-
-You can use a negative pattern like this: `!**/node_modules` or `!**/node_modules/**`. Also you can use [`ignore`](#ignore) option. Just look at the example below.
-
-```js
-first/
-├── file.md
-└── second/
- └── file.txt
-```
-
-If you don't want to read the `second` directory, you must write the following pattern: `!**/second` or `!**/second/**`.
-
-```js
-fg.sync(['**/*.md', '!**/second']); // ['first/file.md']
-fg.sync(['**/*.md'], { ignore: ['**/second/**'] }); // ['first/file.md']
-```
-
-> :warning: When you write `!**/second/**/*` it means that the directory will be **read**, but all the entries will not be included in the results.
-
-You have to understand that if you write the pattern to exclude directories, then the directory will not be read under any circumstances.
-
-## How to use UNC path?
-
-You cannot use [Uniform Naming Convention (UNC)][unc_path] paths as patterns (due to syntax), but you can use them as [`cwd`](#cwd) directory.
-
-```ts
-fg.sync('*', { cwd: '\\\\?\\C:\\Python27' /* or //?/C:/Python27 */ });
-fg.sync('Python27/*', { cwd: '\\\\?\\C:\\' /* or //?/C:/ */ });
-```
-
-## Compatible with `node-glob`?
-
-| node-glob | fast-glob |
-| :----------: | :-------: |
-| `cwd` | [`cwd`](#cwd) |
-| `root` | – |
-| `dot` | [`dot`](#dot) |
-| `nomount` | – |
-| `mark` | [`markDirectories`](#markdirectories) |
-| `nosort` | – |
-| `nounique` | [`unique`](#unique) |
-| `nobrace` | [`braceExpansion`](#braceexpansion) |
-| `noglobstar` | [`globstar`](#globstar) |
-| `noext` | [`extglob`](#extglob) |
-| `nocase` | [`caseSensitiveMatch`](#casesensitivematch) |
-| `matchBase` | [`baseNameMatch`](#basenamematch) |
-| `nodir` | [`onlyFiles`](#onlyfiles) |
-| `ignore` | [`ignore`](#ignore) |
-| `follow` | [`followSymbolicLinks`](#followsymboliclinks) |
-| `realpath` | – |
-| `absolute` | [`absolute`](#absolute) |
-
-## Benchmarks
-
-### Server
-
-Link: [Vultr Bare Metal][vultr_pricing_baremetal]
-
-* Processor: E3-1270v6 (8 CPU)
-* RAM: 32GB
-* Disk: SSD ([Intel DC S3520 SSDSC2BB240G7][intel_ssd])
-
-You can see results [here][github_gist_benchmark_server] for latest release.
-
-### Nettop
-
-Link: [Zotac bi323][zotac_bi323]
-
-* Processor: Intel N3150 (4 CPU)
-* RAM: 8GB
-* Disk: SSD ([Silicon Power SP060GBSS3S55S25][silicon_power_ssd])
-
-You can see results [here][github_gist_benchmark_nettop] for latest release.
-
-## Changelog
-
-See the [Releases section of our GitHub project][github_releases] for changelog for each release version.
-
-## License
-
-This software is released under the terms of the MIT license.
-
-[bash_hackers_syntax_expansion_brace]: https://wiki.bash-hackers.org/syntax/expansion/brace
-[github_gist_benchmark_nettop]: https://gist.github.com/mrmlnc/f06246b197f53c356895fa35355a367c#file-fg-benchmark-nettop-product-txt
-[github_gist_benchmark_server]: https://gist.github.com/mrmlnc/f06246b197f53c356895fa35355a367c#file-fg-benchmark-server-product-txt
-[github_releases]: https://github.com/mrmlnc/fast-glob/releases
-[glob_definition]: https://en.wikipedia.org/wiki/Glob_(programming)
-[glob_linux_man]: http://man7.org/linux/man-pages/man3/glob.3.html
-[intel_ssd]: https://ark.intel.com/content/www/us/en/ark/products/93012/intel-ssd-dc-s3520-series-240gb-2-5in-sata-6gb-s-3d1-mlc.html
-[micromatch_backslashes]: https://github.com/micromatch/micromatch#backslashes
-[micromatch_braces]: https://github.com/micromatch/braces
-[micromatch_extended_globbing]: https://github.com/micromatch/micromatch#extended-globbing
-[micromatch_extglobs]: https://github.com/micromatch/micromatch#extglobs
-[micromatch_regex_character_classes]: https://github.com/micromatch/micromatch#regex-character-classes
-[micromatch]: https://github.com/micromatch/micromatch
-[node_js_fs_class_fs_dirent]: https://nodejs.org/api/fs.html#fs_class_fs_dirent
-[node_js_fs_class_fs_stats]: https://nodejs.org/api/fs.html#fs_class_fs_stats
-[node_js_stream_readable_streams]: https://nodejs.org/api/stream.html#stream_readable_streams
-[node_js]: https://nodejs.org/en
-[nodelib_fs_scandir_old_and_modern_modern]: https://github.com/nodelib/nodelib/blob/master/packages/fs/fs.scandir/README.md#old-and-modern-mode
-[npm_normalize_path]: https://www.npmjs.com/package/normalize-path
-[npm_unixify]: https://www.npmjs.com/package/unixify
-[paypal_mrmlnc]:https://paypal.me/mrmlnc
-[picomatch_matching_behavior]: https://github.com/micromatch/picomatch#matching-behavior-vs-bash
-[picomatch_matching_special_characters_as_literals]: https://github.com/micromatch/picomatch#matching-special-characters-as-literals
-[picomatch_posix_brackets]: https://github.com/micromatch/picomatch#posix-brackets
-[regular_expressions_brackets]: https://www.regular-expressions.info/brackets.html
-[silicon_power_ssd]: https://www.silicon-power.com/web/product-1
-[unc_path]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/62e862f4-2a51-452e-8eeb-dc4ff5ee33cc
-[vultr_pricing_baremetal]: https://www.vultr.com/pricing/baremetal
-[wikipedia_case_sensitivity]: https://en.wikipedia.org/wiki/Case_sensitivity
-[zotac_bi323]: https://www.zotac.com/ee/product/mini_pcs/zbox-bi323
diff --git a/assets/node_modules/fast-glob/out/index.d.ts b/assets/node_modules/fast-glob/out/index.d.ts
deleted file mode 100644
index 54daa45..0000000
--- a/assets/node_modules/fast-glob/out/index.d.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-/// <reference types="node" />
-import * as taskManager from './managers/tasks';
-import { Options as OptionsInternal } from './settings';
-import { Entry as EntryInternal, FileSystemAdapter as FileSystemAdapterInternal, Pattern as PatternInternal } from './types';
-declare type EntryObjectModePredicate = {
- [TKey in keyof Pick<OptionsInternal, 'objectMode'>]-?: true;
-};
-declare type EntryStatsPredicate = {
- [TKey in keyof Pick<OptionsInternal, 'stats'>]-?: true;
-};
-declare type EntryObjectPredicate = EntryObjectModePredicate | EntryStatsPredicate;
-declare function FastGlob(source: PatternInternal | PatternInternal[], options: OptionsInternal & EntryObjectPredicate): Promise<EntryInternal[]>;
-declare function FastGlob(source: PatternInternal | PatternInternal[], options?: OptionsInternal): Promise<string[]>;
-declare namespace FastGlob {
- type Options = OptionsInternal;
- type Entry = EntryInternal;
- type Task = taskManager.Task;
- type Pattern = PatternInternal;
- type FileSystemAdapter = FileSystemAdapterInternal;
- function sync(source: PatternInternal | PatternInternal[], options: OptionsInternal & EntryObjectPredicate): EntryInternal[];
- function sync(source: PatternInternal | PatternInternal[], options?: OptionsInternal): string[];
- function stream(source: PatternInternal | PatternInternal[], options?: OptionsInternal): NodeJS.ReadableStream;
- function generateTasks(source: PatternInternal | PatternInternal[], options?: OptionsInternal): Task[];
- function isDynamicPattern(source: PatternInternal, options?: OptionsInternal): boolean;
- function escapePath(source: PatternInternal): PatternInternal;
-}
-export = FastGlob;
diff --git a/assets/node_modules/fast-glob/out/index.js b/assets/node_modules/fast-glob/out/index.js
deleted file mode 100644
index e6654aa..0000000
--- a/assets/node_modules/fast-glob/out/index.js
+++ /dev/null
@@ -1,73 +0,0 @@
-"use strict";
-const taskManager = require("./managers/tasks");
-const async_1 = require("./providers/async");
-const stream_1 = require("./providers/stream");
-const sync_1 = require("./providers/sync");
-const settings_1 = require("./settings");
-const utils = require("./utils");
-function FastGlob(source, options) {
- try {
- assertPatternsInput(source);
- }
- catch (error) {
- return Promise.reject(error);
- }
- const works = getWorks(source, async_1.default, options);
- return Promise.all(works).then(utils.array.flatten);
-}
-// https://github.com/typescript-eslint/typescript-eslint/issues/60
-// eslint-disable-next-line no-redeclare
-(function (FastGlob) {
- function sync(source, options) {
- assertPatternsInput(source);
- const works = getWorks(source, sync_1.default, options);
- return utils.array.flatten(works);
- }
- FastGlob.sync = sync;
- function stream(source, options) {
- assertPatternsInput(source);
- const works = getWorks(source, stream_1.default, options);
- /**
- * The stream returned by the provider cannot work with an asynchronous iterator.
- * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams.
- * This affects performance (+25%). I don't see best solution right now.
- */
- return utils.stream.merge(works);
- }
- FastGlob.stream = stream;
- function generateTasks(source, options) {
- assertPatternsInput(source);
- const patterns = [].concat(source);
- const settings = new settings_1.default(options);
- return taskManager.generate(patterns, settings);
- }
- FastGlob.generateTasks = generateTasks;
- function isDynamicPattern(source, options) {
- assertPatternsInput(source);
- const settings = new settings_1.default(options);
- return utils.pattern.isDynamicPattern(source, settings);
- }
- FastGlob.isDynamicPattern = isDynamicPattern;
- function escapePath(source) {
- assertPatternsInput(source);
- return utils.path.escape(source);
- }
- FastGlob.escapePath = escapePath;
-})(FastGlob || (FastGlob = {}));
-function getWorks(source, _Provider, options) {
- const patterns = [].concat(source);
- const settings = new settings_1.default(options);
- const tasks = taskManager.generate(patterns, settings);
- const provider = new _Provider(settings);
- return tasks.map(provider.read, provider);
-}
-function assertPatternsInput(source) {
- if ([].concat(source).every(isString)) {
- return;
- }
- throw new TypeError('Patterns must be a string or an array of strings');
-}
-function isString(source) {
- return typeof source === 'string';
-}
-module.exports = FastGlob;
diff --git a/assets/node_modules/fast-glob/out/managers/tasks.d.ts b/assets/node_modules/fast-glob/out/managers/tasks.d.ts
deleted file mode 100644
index 7da0f8b..0000000
--- a/assets/node_modules/fast-glob/out/managers/tasks.d.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import Settings from '../settings';
-import { Pattern, PatternsGroup } from '../types';
-export declare type Task = {
- base: string;
- dynamic: boolean;
- patterns: Pattern[];
- positive: Pattern[];
- negative: Pattern[];
-};
-export declare function generate(patterns: Pattern[], settings: Settings): Task[];
-export declare function convertPatternsToTasks(positive: Pattern[], negative: Pattern[], dynamic: boolean): Task[];
-export declare function getPositivePatterns(patterns: Pattern[]): Pattern[];
-export declare function getNegativePatternsAsPositive(patterns: Pattern[], ignore: Pattern[]): Pattern[];
-export declare function groupPatternsByBaseDirectory(patterns: Pattern[]): PatternsGroup;
-export declare function convertPatternGroupsToTasks(positive: PatternsGroup, negative: Pattern[], dynamic: boolean): Task[];
-export declare function convertPatternGroupToTask(base: string, positive: Pattern[], negative: Pattern[], dynamic: boolean): Task;
diff --git a/assets/node_modules/fast-glob/out/managers/tasks.js b/assets/node_modules/fast-glob/out/managers/tasks.js
deleted file mode 100644
index 24aba05..0000000
--- a/assets/node_modules/fast-glob/out/managers/tasks.js
+++ /dev/null
@@ -1,64 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const utils = require("../utils");
-function generate(patterns, settings) {
- const positivePatterns = getPositivePatterns(patterns);
- const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore);
- const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings));
- const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings));
- const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false);
- const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true);
- return staticTasks.concat(dynamicTasks);
-}
-exports.generate = generate;
-function convertPatternsToTasks(positive, negative, dynamic) {
- const positivePatternsGroup = groupPatternsByBaseDirectory(positive);
- // When we have a global group – there is no reason to divide the patterns into independent tasks.
- // In this case, the global task covers the rest.
- if ('.' in positivePatternsGroup) {
- const task = convertPatternGroupToTask('.', positive, negative, dynamic);
- return [task];
- }
- return convertPatternGroupsToTasks(positivePatternsGroup, negative, dynamic);
-}
-exports.convertPatternsToTasks = convertPatternsToTasks;
-function getPositivePatterns(patterns) {
- return utils.pattern.getPositivePatterns(patterns);
-}
-exports.getPositivePatterns = getPositivePatterns;
-function getNegativePatternsAsPositive(patterns, ignore) {
- const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore);
- const positive = negative.map(utils.pattern.convertToPositivePattern);
- return positive;
-}
-exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive;
-function groupPatternsByBaseDirectory(patterns) {
- const group = {};
- return patterns.reduce((collection, pattern) => {
- const base = utils.pattern.getBaseDirectory(pattern);
- if (base in collection) {
- collection[base].push(pattern);
- }
- else {
- collection[base] = [pattern];
- }
- return collection;
- }, group);
-}
-exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory;
-function convertPatternGroupsToTasks(positive, negative, dynamic) {
- return Object.keys(positive).map((base) => {
- return convertPatternGroupToTask(base, positive[base], negative, dynamic);
- });
-}
-exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks;
-function convertPatternGroupToTask(base, positive, negative, dynamic) {
- return {
- dynamic,
- positive,
- negative,
- base,
- patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern))
- };
-}
-exports.convertPatternGroupToTask = convertPatternGroupToTask;
diff --git a/assets/node_modules/fast-glob/out/providers/async.d.ts b/assets/node_modules/fast-glob/out/providers/async.d.ts
deleted file mode 100644
index d8f1ff8..0000000
--- a/assets/node_modules/fast-glob/out/providers/async.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-/// <reference types="node" />
-import { Readable } from 'stream';
-import { Task } from '../managers/tasks';
-import ReaderStream from '../readers/stream';
-import { EntryItem, ReaderOptions } from '../types';
-import Provider from './provider';
-export default class ProviderAsync extends Provider<Promise<EntryItem[]>> {
- protected _reader: ReaderStream;
- read(task: Task): Promise<EntryItem[]>;
- api(root: string, task: Task, options: ReaderOptions): Readable;
-}
diff --git a/assets/node_modules/fast-glob/out/providers/async.js b/assets/node_modules/fast-glob/out/providers/async.js
deleted file mode 100644
index 7b2b668..0000000
--- a/assets/node_modules/fast-glob/out/providers/async.js
+++ /dev/null
@@ -1,28 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const stream_1 = require("../readers/stream");
-const provider_1 = require("./provider");
-class ProviderAsync extends provider_1.default {
- constructor() {
- super(...arguments);
- this._reader = new stream_1.default(this._settings);
- }
- read(task) {
- const root = this._getRootDirectory(task);
- const options = this._getReaderOptions(task);
- const entries = [];
- return new Promise((resolve, reject) => {
- const stream = this.api(root, task, options);
- stream.once('error', reject);
- stream.on('data', (entry) => entries.push(options.transform(entry)));
- stream.once('end', () => resolve(entries));
- });
- }
- api(root, task, options) {
- if (task.dynamic) {
- return this._reader.dynamic(root, options);
- }
- return this._reader.static(task.patterns, options);
- }
-}
-exports.default = ProviderAsync;
diff --git a/assets/node_modules/fast-glob/out/providers/filters/deep.d.ts b/assets/node_modules/fast-glob/out/providers/filters/deep.d.ts
deleted file mode 100644
index 90c4fe4..0000000
--- a/assets/node_modules/fast-glob/out/providers/filters/deep.d.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import Settings from '../../settings';
-import { EntryFilterFunction, MicromatchOptions, Pattern } from '../../types';
-export default class DeepFilter {
- private readonly _settings;
- private readonly _micromatchOptions;
- constructor(_settings: Settings, _micromatchOptions: MicromatchOptions);
- getFilter(basePath: string, positive: Pattern[], negative: Pattern[]): EntryFilterFunction;
- private _getMaxPatternDepth;
- private _getNegativePatternsRe;
- private _filter;
- private _getEntryDepth;
- private _isSkippedByDeep;
- private _isSkippedByMaxPatternDepth;
- private _isSkippedSymbolicLink;
- private _isSkippedByNegativePatterns;
-}
diff --git a/assets/node_modules/fast-glob/out/providers/filters/deep.js b/assets/node_modules/fast-glob/out/providers/filters/deep.js
deleted file mode 100644
index 5f8aad1..0000000
--- a/assets/node_modules/fast-glob/out/providers/filters/deep.js
+++ /dev/null
@@ -1,53 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const utils = require("../../utils");
-class DeepFilter {
- constructor(_settings, _micromatchOptions) {
- this._settings = _settings;
- this._micromatchOptions = _micromatchOptions;
- }
- getFilter(basePath, positive, negative) {
- const maxPatternDepth = this._getMaxPatternDepth(positive);
- const negativeRe = this._getNegativePatternsRe(negative);
- return (entry) => this._filter(basePath, entry, negativeRe, maxPatternDepth);
- }
- _getMaxPatternDepth(patterns) {
- const globstar = patterns.some(utils.pattern.hasGlobStar);
- return globstar ? Infinity : utils.pattern.getMaxNaivePatternsDepth(patterns);
- }
- _getNegativePatternsRe(patterns) {
- const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern);
- return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions);
- }
- _filter(basePath, entry, negativeRe, maxPatternDepth) {
- const depth = this._getEntryDepth(basePath, entry.path);
- if (this._isSkippedByDeep(depth)) {
- return false;
- }
- if (this._isSkippedByMaxPatternDepth(depth, maxPatternDepth)) {
- return false;
- }
- if (this._isSkippedSymbolicLink(entry)) {
- return false;
- }
- return this._isSkippedByNegativePatterns(entry, negativeRe);
- }
- _getEntryDepth(basePath, entryPath) {
- const basePathDepth = basePath.split('/').length;
- const entryPathDepth = entryPath.split('/').length;
- return entryPathDepth - (basePath === '' ? 0 : basePathDepth);
- }
- _isSkippedByDeep(entryDepth) {
- return entryDepth >= this._settings.deep;
- }
- _isSkippedByMaxPatternDepth(entryDepth, maxPatternDepth) {
- return !this._settings.baseNameMatch && maxPatternDepth !== Infinity && entryDepth > maxPatternDepth;
- }
- _isSkippedSymbolicLink(entry) {
- return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink();
- }
- _isSkippedByNegativePatterns(entry, negativeRe) {
- return !utils.pattern.matchAny(entry.path, negativeRe);
- }
-}
-exports.default = DeepFilter;
diff --git a/assets/node_modules/fast-glob/out/providers/filters/entry.d.ts b/assets/node_modules/fast-glob/out/providers/filters/entry.d.ts
deleted file mode 100644
index 2f21c43..0000000
--- a/assets/node_modules/fast-glob/out/providers/filters/entry.d.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import Settings from '../../settings';
-import { EntryFilterFunction, MicromatchOptions, Pattern } from '../../types';
-export default class EntryFilter {
- private readonly _settings;
- private readonly _micromatchOptions;
- readonly index: Map<string, undefined>;
- constructor(_settings: Settings, _micromatchOptions: MicromatchOptions);
- getFilter(positive: Pattern[], negative: Pattern[]): EntryFilterFunction;
- private _filter;
- private _isDuplicateEntry;
- private _createIndexRecord;
- private _onlyFileFilter;
- private _onlyDirectoryFilter;
- private _isSkippedByAbsoluteNegativePatterns;
- private _isMatchToPatterns;
-}
diff --git a/assets/node_modules/fast-glob/out/providers/filters/entry.js b/assets/node_modules/fast-glob/out/providers/filters/entry.js
deleted file mode 100644
index 09806e7..0000000
--- a/assets/node_modules/fast-glob/out/providers/filters/entry.js
+++ /dev/null
@@ -1,54 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const utils = require("../../utils");
-class EntryFilter {
- constructor(_settings, _micromatchOptions) {
- this._settings = _settings;
- this._micromatchOptions = _micromatchOptions;
- this.index = new Map();
- }
- getFilter(positive, negative) {
- const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions);
- const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions);
- return (entry) => this._filter(entry, positiveRe, negativeRe);
- }
- _filter(entry, positiveRe, negativeRe) {
- if (this._settings.unique) {
- if (this._isDuplicateEntry(entry)) {
- return false;
- }
- this._createIndexRecord(entry);
- }
- if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) {
- return false;
- }
- if (this._isSkippedByAbsoluteNegativePatterns(entry, negativeRe)) {
- return false;
- }
- const filepath = this._settings.baseNameMatch ? entry.name : entry.path;
- return this._isMatchToPatterns(filepath, positiveRe) && !this._isMatchToPatterns(entry.path, negativeRe);
- }
- _isDuplicateEntry(entry) {
- return this.index.has(entry.path);
- }
- _createIndexRecord(entry) {
- this.index.set(entry.path, undefined);
- }
- _onlyFileFilter(entry) {
- return this._settings.onlyFiles && !entry.dirent.isFile();
- }
- _onlyDirectoryFilter(entry) {
- return this._settings.onlyDirectories && !entry.dirent.isDirectory();
- }
- _isSkippedByAbsoluteNegativePatterns(entry, negativeRe) {
- if (!this._settings.absolute) {
- return false;
- }
- const fullpath = utils.path.makeAbsolute(this._settings.cwd, entry.path);
- return this._isMatchToPatterns(fullpath, negativeRe);
- }
- _isMatchToPatterns(filepath, patternsRe) {
- return utils.pattern.matchAny(filepath, patternsRe);
- }
-}
-exports.default = EntryFilter;
diff --git a/assets/node_modules/fast-glob/out/providers/filters/error.d.ts b/assets/node_modules/fast-glob/out/providers/filters/error.d.ts
deleted file mode 100644
index 1e9d738..0000000
--- a/assets/node_modules/fast-glob/out/providers/filters/error.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import Settings from '../../settings';
-import { ErrorFilterFunction } from '../../types';
-export default class ErrorFilter {
- private readonly _settings;
- constructor(_settings: Settings);
- getFilter(): ErrorFilterFunction;
- private _isNonFatalError;
-}
diff --git a/assets/node_modules/fast-glob/out/providers/filters/error.js b/assets/node_modules/fast-glob/out/providers/filters/error.js
deleted file mode 100644
index f93bdc0..0000000
--- a/assets/node_modules/fast-glob/out/providers/filters/error.js
+++ /dev/null
@@ -1,15 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const utils = require("../../utils");
-class ErrorFilter {
- constructor(_settings) {
- this._settings = _settings;
- }
- getFilter() {
- return (error) => this._isNonFatalError(error);
- }
- _isNonFatalError(error) {
- return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors;
- }
-}
-exports.default = ErrorFilter;
diff --git a/assets/node_modules/fast-glob/out/providers/provider.d.ts b/assets/node_modules/fast-glob/out/providers/provider.d.ts
deleted file mode 100644
index ccafd17..0000000
--- a/assets/node_modules/fast-glob/out/providers/provider.d.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { Task } from '../managers/tasks';
-import Settings from '../settings';
-import { MicromatchOptions, ReaderOptions } from '../types';
-import DeepFilter from './filters/deep';
-import EntryFilter from './filters/entry';
-import ErrorFilter from './filters/error';
-import EntryTransformer from './transformers/entry';
-export default abstract class Provider<T> {
- protected readonly _settings: Settings;
- readonly errorFilter: ErrorFilter;
- readonly entryFilter: EntryFilter;
- readonly deepFilter: DeepFilter;
- readonly entryTransformer: EntryTransformer;
- constructor(_settings: Settings);
- abstract read(_task: Task): T;
- protected _getRootDirectory(task: Task): string;
- protected _getReaderOptions(task: Task): ReaderOptions;
- protected _getMicromatchOptions(): MicromatchOptions;
-}
diff --git a/assets/node_modules/fast-glob/out/providers/provider.js b/assets/node_modules/fast-glob/out/providers/provider.js
deleted file mode 100644
index 5afb389..0000000
--- a/assets/node_modules/fast-glob/out/providers/provider.js
+++ /dev/null
@@ -1,48 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const path = require("path");
-const deep_1 = require("./filters/deep");
-const entry_1 = require("./filters/entry");
-const error_1 = require("./filters/error");
-const entry_2 = require("./transformers/entry");
-class Provider {
- constructor(_settings) {
- this._settings = _settings;
- this.errorFilter = new error_1.default(this._settings);
- this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions());
- this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions());
- this.entryTransformer = new entry_2.default(this._settings);
- }
- _getRootDirectory(task) {
- return path.resolve(this._settings.cwd, task.base);
- }
- _getReaderOptions(task) {
- const basePath = task.base === '.' ? '' : task.base;
- return {
- basePath,
- pathSegmentSeparator: '/',
- concurrency: this._settings.concurrency,
- deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative),
- entryFilter: this.entryFilter.getFilter(task.positive, task.negative),
- errorFilter: this.errorFilter.getFilter(),
- followSymbolicLinks: this._settings.followSymbolicLinks,
- fs: this._settings.fs,
- stats: this._settings.stats,
- throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink,
- transform: this.entryTransformer.getTransformer()
- };
- }
- _getMicromatchOptions() {
- return {
- dot: this._settings.dot,
- matchBase: this._settings.baseNameMatch,
- nobrace: !this._settings.braceExpansion,
- nocase: !this._settings.caseSensitiveMatch,
- noext: !this._settings.extglob,
- noglobstar: !this._settings.globstar,
- posix: true,
- strictSlashes: false
- };
- }
-}
-exports.default = Provider;
diff --git a/assets/node_modules/fast-glob/out/providers/stream.d.ts b/assets/node_modules/fast-glob/out/providers/stream.d.ts
deleted file mode 100644
index bfa9201..0000000
--- a/assets/node_modules/fast-glob/out/providers/stream.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-/// <reference types="node" />
-import { Readable } from 'stream';
-import { Task } from '../managers/tasks';
-import ReaderStream from '../readers/stream';
-import { ReaderOptions } from '../types';
-import Provider from './provider';
-export default class ProviderStream extends Provider<Readable> {
- protected _reader: ReaderStream;
- read(task: Task): Readable;
- api(root: string, task: Task, options: ReaderOptions): Readable;
-}
diff --git a/assets/node_modules/fast-glob/out/providers/stream.js b/assets/node_modules/fast-glob/out/providers/stream.js
deleted file mode 100644
index 9e81c21..0000000
--- a/assets/node_modules/fast-glob/out/providers/stream.js
+++ /dev/null
@@ -1,31 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const stream_1 = require("stream");
-const stream_2 = require("../readers/stream");
-const provider_1 = require("./provider");
-class ProviderStream extends provider_1.default {
- constructor() {
- super(...arguments);
- this._reader = new stream_2.default(this._settings);
- }
- read(task) {
- const root = this._getRootDirectory(task);
- const options = this._getReaderOptions(task);
- const source = this.api(root, task, options);
- const destination = new stream_1.Readable({ objectMode: true, read: () => { } });
- source
- .once('error', (error) => destination.emit('error', error))
- .on('data', (entry) => destination.emit('data', options.transform(entry)))
- .once('end', () => destination.emit('end'));
- destination
- .once('close', () => source.destroy());
- return destination;
- }
- api(root, task, options) {
- if (task.dynamic) {
- return this._reader.dynamic(root, options);
- }
- return this._reader.static(task.patterns, options);
- }
-}
-exports.default = ProviderStream;
diff --git a/assets/node_modules/fast-glob/out/providers/sync.d.ts b/assets/node_modules/fast-glob/out/providers/sync.d.ts
deleted file mode 100644
index 5861db4..0000000
--- a/assets/node_modules/fast-glob/out/providers/sync.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Task } from '../managers/tasks';
-import ReaderSync from '../readers/sync';
-import { Entry, EntryItem, ReaderOptions } from '../types';
-import Provider from './provider';
-export default class ProviderSync extends Provider<EntryItem[]> {
- protected _reader: ReaderSync;
- read(task: Task): EntryItem[];
- api(root: string, task: Task, options: ReaderOptions): Entry[];
-}
diff --git a/assets/node_modules/fast-glob/out/providers/sync.js b/assets/node_modules/fast-glob/out/providers/sync.js
deleted file mode 100644
index 9ed8f7c..0000000
--- a/assets/node_modules/fast-glob/out/providers/sync.js
+++ /dev/null
@@ -1,23 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const sync_1 = require("../readers/sync");
-const provider_1 = require("./provider");
-class ProviderSync extends provider_1.default {
- constructor() {
- super(...arguments);
- this._reader = new sync_1.default(this._settings);
- }
- read(task) {
- const root = this._getRootDirectory(task);
- const options = this._getReaderOptions(task);
- const entries = this.api(root, task, options);
- return entries.map(options.transform);
- }
- api(root, task, options) {
- if (task.dynamic) {
- return this._reader.dynamic(root, options);
- }
- return this._reader.static(task.patterns, options);
- }
-}
-exports.default = ProviderSync;
diff --git a/assets/node_modules/fast-glob/out/providers/transformers/entry.d.ts b/assets/node_modules/fast-glob/out/providers/transformers/entry.d.ts
deleted file mode 100644
index 1874a38..0000000
--- a/assets/node_modules/fast-glob/out/providers/transformers/entry.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import Settings from '../../settings';
-import { EntryTransformerFunction } from '../../types';
-export default class EntryTransformer {
- private readonly _settings;
- constructor(_settings: Settings);
- getTransformer(): EntryTransformerFunction;
- private _transform;
-}
diff --git a/assets/node_modules/fast-glob/out/providers/transformers/entry.js b/assets/node_modules/fast-glob/out/providers/transformers/entry.js
deleted file mode 100644
index 3bef803..0000000
--- a/assets/node_modules/fast-glob/out/providers/transformers/entry.js
+++ /dev/null
@@ -1,26 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const utils = require("../../utils");
-class EntryTransformer {
- constructor(_settings) {
- this._settings = _settings;
- }
- getTransformer() {
- return (entry) => this._transform(entry);
- }
- _transform(entry) {
- let filepath = entry.path;
- if (this._settings.absolute) {
- filepath = utils.path.makeAbsolute(this._settings.cwd, filepath);
- filepath = utils.path.unixify(filepath);
- }
- if (this._settings.markDirectories && entry.dirent.isDirectory()) {
- filepath += '/';
- }
- if (!this._settings.objectMode) {
- return filepath;
- }
- return Object.assign(Object.assign({}, entry), { path: filepath });
- }
-}
-exports.default = EntryTransformer;
diff --git a/assets/node_modules/fast-glob/out/readers/reader.d.ts b/assets/node_modules/fast-glob/out/readers/reader.d.ts
deleted file mode 100644
index 293b588..0000000
--- a/assets/node_modules/fast-glob/out/readers/reader.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-/// <reference types="node" />
-import * as fs from 'fs';
-import * as fsStat from '@nodelib/fs.stat';
-import Settings from '../settings';
-import { Entry, ErrnoException, Pattern, ReaderOptions } from '../types';
-export default abstract class Reader<T> {
- protected readonly _settings: Settings;
- protected readonly _fsStatSettings: fsStat.Settings;
- constructor(_settings: Settings);
- abstract dynamic(root: string, options: ReaderOptions): T;
- abstract static(patterns: Pattern[], options: ReaderOptions): T;
- protected _getFullEntryPath(filepath: string): string;
- protected _makeEntry(stats: fs.Stats, pattern: Pattern): Entry;
- protected _isFatalError(error: ErrnoException): boolean;
-}
diff --git a/assets/node_modules/fast-glob/out/readers/reader.js b/assets/node_modules/fast-glob/out/readers/reader.js
deleted file mode 100644
index 9e9469c..0000000
--- a/assets/node_modules/fast-glob/out/readers/reader.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const path = require("path");
-const fsStat = require("@nodelib/fs.stat");
-const utils = require("../utils");
-class Reader {
- constructor(_settings) {
- this._settings = _settings;
- this._fsStatSettings = new fsStat.Settings({
- followSymbolicLink: this._settings.followSymbolicLinks,
- fs: this._settings.fs,
- throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks
- });
- }
- _getFullEntryPath(filepath) {
- return path.resolve(this._settings.cwd, filepath);
- }
- _makeEntry(stats, pattern) {
- const entry = {
- name: pattern,
- path: pattern,
- dirent: utils.fs.createDirentFromStats(pattern, stats)
- };
- if (this._settings.stats) {
- entry.stats = stats;
- }
- return entry;
- }
- _isFatalError(error) {
- return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors;
- }
-}
-exports.default = Reader;
diff --git a/assets/node_modules/fast-glob/out/readers/stream.d.ts b/assets/node_modules/fast-glob/out/readers/stream.d.ts
deleted file mode 100644
index b0c7018..0000000
--- a/assets/node_modules/fast-glob/out/readers/stream.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-/// <reference types="node" />
-import { Readable } from 'stream';
-import * as fsStat from '@nodelib/fs.stat';
-import * as fsWalk from '@nodelib/fs.walk';
-import { Pattern, ReaderOptions } from '../types';
-import Reader from './reader';
-export default class ReaderStream extends Reader<Readable> {
- protected _walkStream: typeof fsWalk.walkStream;
- protected _stat: typeof fsStat.stat;
- dynamic(root: string, options: ReaderOptions): Readable;
- static(patterns: Pattern[], options: ReaderOptions): Readable;
- private _getEntry;
- private _getStat;
-}
diff --git a/assets/node_modules/fast-glob/out/readers/stream.js b/assets/node_modules/fast-glob/out/readers/stream.js
deleted file mode 100644
index 33b96f5..0000000
--- a/assets/node_modules/fast-glob/out/readers/stream.js
+++ /dev/null
@@ -1,55 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const stream_1 = require("stream");
-const fsStat = require("@nodelib/fs.stat");
-const fsWalk = require("@nodelib/fs.walk");
-const reader_1 = require("./reader");
-class ReaderStream extends reader_1.default {
- constructor() {
- super(...arguments);
- this._walkStream = fsWalk.walkStream;
- this._stat = fsStat.stat;
- }
- dynamic(root, options) {
- return this._walkStream(root, options);
- }
- static(patterns, options) {
- const filepaths = patterns.map(this._getFullEntryPath, this);
- const stream = new stream_1.PassThrough({ objectMode: true });
- stream._write = (index, _enc, done) => {
- return this._getEntry(filepaths[index], patterns[index], options)
- .then((entry) => {
- if (entry !== null && options.entryFilter(entry)) {
- stream.push(entry);
- }
- if (index === filepaths.length - 1) {
- stream.end();
- }
- done();
- })
- .catch(done);
- };
- for (let i = 0; i < filepaths.length; i++) {
- stream.write(i);
- }
- return stream;
- }
- _getEntry(filepath, pattern, options) {
- return this._getStat(filepath)
- .then((stats) => this._makeEntry(stats, pattern))
- .catch((error) => {
- if (options.errorFilter(error)) {
- return null;
- }
- throw error;
- });
- }
- _getStat(filepath) {
- return new Promise((resolve, reject) => {
- this._stat(filepath, this._fsStatSettings, (error, stats) => {
- return error === null ? resolve(stats) : reject(error);
- });
- });
- }
-}
-exports.default = ReaderStream;
diff --git a/assets/node_modules/fast-glob/out/readers/sync.d.ts b/assets/node_modules/fast-glob/out/readers/sync.d.ts
deleted file mode 100644
index 1943ac6..0000000
--- a/assets/node_modules/fast-glob/out/readers/sync.d.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import * as fsStat from '@nodelib/fs.stat';
-import * as fsWalk from '@nodelib/fs.walk';
-import { Entry, Pattern, ReaderOptions } from '../types';
-import Reader from './reader';
-export default class ReaderSync extends Reader<Entry[]> {
- protected _walkSync: typeof fsWalk.walkSync;
- protected _statSync: typeof fsStat.statSync;
- dynamic(root: string, options: ReaderOptions): Entry[];
- static(patterns: Pattern[], options: ReaderOptions): Entry[];
- private _getEntry;
- private _getStat;
-}
diff --git a/assets/node_modules/fast-glob/out/readers/sync.js b/assets/node_modules/fast-glob/out/readers/sync.js
deleted file mode 100644
index c4e4a01..0000000
--- a/assets/node_modules/fast-glob/out/readers/sync.js
+++ /dev/null
@@ -1,43 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const fsStat = require("@nodelib/fs.stat");
-const fsWalk = require("@nodelib/fs.walk");
-const reader_1 = require("./reader");
-class ReaderSync extends reader_1.default {
- constructor() {
- super(...arguments);
- this._walkSync = fsWalk.walkSync;
- this._statSync = fsStat.statSync;
- }
- dynamic(root, options) {
- return this._walkSync(root, options);
- }
- static(patterns, options) {
- const entries = [];
- for (const pattern of patterns) {
- const filepath = this._getFullEntryPath(pattern);
- const entry = this._getEntry(filepath, pattern, options);
- if (entry === null || !options.entryFilter(entry)) {
- continue;
- }
- entries.push(entry);
- }
- return entries;
- }
- _getEntry(filepath, pattern, options) {
- try {
- const stats = this._getStat(filepath);
- return this._makeEntry(stats, pattern);
- }
- catch (error) {
- if (options.errorFilter(error)) {
- return null;
- }
- throw error;
- }
- }
- _getStat(filepath) {
- return this._statSync(filepath, this._fsStatSettings);
- }
-}
-exports.default = ReaderSync;
diff --git a/assets/node_modules/fast-glob/out/settings.d.ts b/assets/node_modules/fast-glob/out/settings.d.ts
deleted file mode 100644
index 4e97c9b..0000000
--- a/assets/node_modules/fast-glob/out/settings.d.ts
+++ /dev/null
@@ -1,164 +0,0 @@
-import { FileSystemAdapter, Pattern } from './types';
-export declare const DEFAULT_FILE_SYSTEM_ADAPTER: FileSystemAdapter;
-export declare type Options = {
- /**
- * Return the absolute path for entries.
- *
- * @default false
- */
- absolute?: boolean;
- /**
- * If set to `true`, then patterns without slashes will be matched against
- * the basename of the path if it contains slashes.
- *
- * @default false
- */
- baseNameMatch?: boolean;
- /**
- * Enables Bash-like brace expansion.
- *
- * @default true
- */
- braceExpansion?: boolean;
- /**
- * Enables a case-sensitive mode for matching files.
- *
- * @default true
- */
- caseSensitiveMatch?: boolean;
- /**
- * Specifies the maximum number of concurrent requests from a reader to read
- * directories.
- *
- * @default os.cpus().length
- */
- concurrency?: number;
- /**
- * The current working directory in which to search.
- *
- * @default process.cwd()
- */
- cwd?: string;
- /**
- * Specifies the maximum depth of a read directory relative to the start
- * directory.
- *
- * @default Infinity
- */
- deep?: number;
- /**
- * Allow patterns to match entries that begin with a period (`.`).
- *
- * @default false
- */
- dot?: boolean;
- /**
- * Enables Bash-like `extglob` functionality.
- *
- * @default true
- */
- extglob?: boolean;
- /**
- * Indicates whether to traverse descendants of symbolic link directories.
- *
- * @default true
- */
- followSymbolicLinks?: boolean;
- /**
- * Custom implementation of methods for working with the file system.
- *
- * @default fs.*
- */
- fs?: Partial<FileSystemAdapter>;
- /**
- * Enables recursively repeats a pattern containing `**`.
- * If `false`, `**` behaves exactly like `*`.
- *
- * @default true
- */
- globstar?: boolean;
- /**
- * An array of glob patterns to exclude matches.
- * This is an alternative way to use negative patterns.
- *
- * @default []
- */
- ignore?: Pattern[];
- /**
- * Mark the directory path with the final slash.
- *
- * @default false
- */
- markDirectories?: boolean;
- /**
- * Returns objects (instead of strings) describing entries.
- *
- * @default false
- */
- objectMode?: boolean;
- /**
- * Return only directories.
- *
- * @default false
- */
- onlyDirectories?: boolean;
- /**
- * Return only files.
- *
- * @default true
- */
- onlyFiles?: boolean;
- /**
- * Enables an object mode (`objectMode`) with an additional `stats` field.
- *
- * @default false
- */
- stats?: boolean;
- /**
- * By default this package suppress only `ENOENT` errors.
- * Set to `true` to suppress any error.
- *
- * @default false
- */
- suppressErrors?: boolean;
- /**
- * Throw an error when symbolic link is broken if `true` or safely
- * return `lstat` call if `false`.
- *
- * @default false
- */
- throwErrorOnBrokenSymbolicLink?: boolean;
- /**
- * Ensures that the returned entries are unique.
- *
- * @default true
- */
- unique?: boolean;
-};
-export default class Settings {
- private readonly _options;
- readonly absolute: boolean;
- readonly baseNameMatch: boolean;
- readonly braceExpansion: boolean;
- readonly caseSensitiveMatch: boolean;
- readonly concurrency: number;
- readonly cwd: string;
- readonly deep: number;
- readonly dot: boolean;
- readonly extglob: boolean;
- readonly followSymbolicLinks: boolean;
- readonly fs: FileSystemAdapter;
- readonly globstar: boolean;
- readonly ignore: Pattern[];
- readonly markDirectories: boolean;
- readonly objectMode: boolean;
- readonly onlyDirectories: boolean;
- readonly onlyFiles: boolean;
- readonly stats: boolean;
- readonly suppressErrors: boolean;
- readonly throwErrorOnBrokenSymbolicLink: boolean;
- readonly unique: boolean;
- constructor(_options?: Options);
- private _getValue;
- private _getFileSystemMethods;
-}
diff --git a/assets/node_modules/fast-glob/out/settings.js b/assets/node_modules/fast-glob/out/settings.js
deleted file mode 100644
index 6e5198f..0000000
--- a/assets/node_modules/fast-glob/out/settings.js
+++ /dev/null
@@ -1,52 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const fs = require("fs");
-const os = require("os");
-const CPU_COUNT = os.cpus().length;
-exports.DEFAULT_FILE_SYSTEM_ADAPTER = {
- lstat: fs.lstat,
- lstatSync: fs.lstatSync,
- stat: fs.stat,
- statSync: fs.statSync,
- readdir: fs.readdir,
- readdirSync: fs.readdirSync
-};
-class Settings {
- constructor(_options = {}) {
- this._options = _options;
- this.absolute = this._getValue(this._options.absolute, false);
- this.baseNameMatch = this._getValue(this._options.baseNameMatch, false);
- this.braceExpansion = this._getValue(this._options.braceExpansion, true);
- this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true);
- this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT);
- this.cwd = this._getValue(this._options.cwd, process.cwd());
- this.deep = this._getValue(this._options.deep, Infinity);
- this.dot = this._getValue(this._options.dot, false);
- this.extglob = this._getValue(this._options.extglob, true);
- this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true);
- this.fs = this._getFileSystemMethods(this._options.fs);
- this.globstar = this._getValue(this._options.globstar, true);
- this.ignore = this._getValue(this._options.ignore, []);
- this.markDirectories = this._getValue(this._options.markDirectories, false);
- this.objectMode = this._getValue(this._options.objectMode, false);
- this.onlyDirectories = this._getValue(this._options.onlyDirectories, false);
- this.onlyFiles = this._getValue(this._options.onlyFiles, true);
- this.stats = this._getValue(this._options.stats, false);
- this.suppressErrors = this._getValue(this._options.suppressErrors, false);
- this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false);
- this.unique = this._getValue(this._options.unique, true);
- if (this.onlyDirectories) {
- this.onlyFiles = false;
- }
- if (this.stats) {
- this.objectMode = true;
- }
- }
- _getValue(option, value) {
- return option === undefined ? value : option;
- }
- _getFileSystemMethods(methods = {}) {
- return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);
- }
-}
-exports.default = Settings;
diff --git a/assets/node_modules/fast-glob/out/types/index.d.ts b/assets/node_modules/fast-glob/out/types/index.d.ts
deleted file mode 100644
index e828689..0000000
--- a/assets/node_modules/fast-glob/out/types/index.d.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-/// <reference types="node" />
-import * as fsWalk from '@nodelib/fs.walk';
-export declare type ErrnoException = NodeJS.ErrnoException;
-export declare type Entry = fsWalk.Entry;
-export declare type EntryItem = string | Entry;
-export declare type Pattern = string;
-export declare type PatternRe = RegExp;
-export declare type PatternsGroup = Record<string, Pattern[]>;
-export declare type ReaderOptions = fsWalk.Options & {
- transform(entry: Entry): EntryItem;
- deepFilter: DeepFilterFunction;
- entryFilter: EntryFilterFunction;
- errorFilter: ErrorFilterFunction;
- fs: FileSystemAdapter;
- stats: boolean;
-};
-export declare type ErrorFilterFunction = fsWalk.ErrorFilterFunction;
-export declare type EntryFilterFunction = fsWalk.EntryFilterFunction;
-export declare type DeepFilterFunction = fsWalk.DeepFilterFunction;
-export declare type EntryTransformerFunction = (entry: Entry) => EntryItem;
-export declare type MicromatchOptions = {
- dot?: boolean;
- matchBase?: boolean;
- nobrace?: boolean;
- nocase?: boolean;
- noext?: boolean;
- noglobstar?: boolean;
- posix?: boolean;
- strictSlashes?: boolean;
-};
-export declare type FileSystemAdapter = fsWalk.FileSystemAdapter;
diff --git a/assets/node_modules/fast-glob/out/types/index.js b/assets/node_modules/fast-glob/out/types/index.js
deleted file mode 100644
index ce03781..0000000
--- a/assets/node_modules/fast-glob/out/types/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/assets/node_modules/fast-glob/out/utils/array.d.ts b/assets/node_modules/fast-glob/out/utils/array.d.ts
deleted file mode 100644
index f5f322b..0000000
--- a/assets/node_modules/fast-glob/out/utils/array.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare function flatten<T>(items: T[][]): T[];
diff --git a/assets/node_modules/fast-glob/out/utils/array.js b/assets/node_modules/fast-glob/out/utils/array.js
deleted file mode 100644
index 75928ca..0000000
--- a/assets/node_modules/fast-glob/out/utils/array.js
+++ /dev/null
@@ -1,6 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-function flatten(items) {
- return items.reduce((collection, item) => [].concat(collection, item), []);
-}
-exports.flatten = flatten;
diff --git a/assets/node_modules/fast-glob/out/utils/errno.d.ts b/assets/node_modules/fast-glob/out/utils/errno.d.ts
deleted file mode 100644
index 0e52c0d..0000000
--- a/assets/node_modules/fast-glob/out/utils/errno.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import { ErrnoException } from '../types';
-export declare function isEnoentCodeError(error: ErrnoException): boolean;
diff --git a/assets/node_modules/fast-glob/out/utils/errno.js b/assets/node_modules/fast-glob/out/utils/errno.js
deleted file mode 100644
index adc3939..0000000
--- a/assets/node_modules/fast-glob/out/utils/errno.js
+++ /dev/null
@@ -1,6 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-function isEnoentCodeError(error) {
- return error.code === 'ENOENT';
-}
-exports.isEnoentCodeError = isEnoentCodeError;
diff --git a/assets/node_modules/fast-glob/out/utils/fs.d.ts b/assets/node_modules/fast-glob/out/utils/fs.d.ts
deleted file mode 100644
index 926c5ae..0000000
--- a/assets/node_modules/fast-glob/out/utils/fs.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-/// <reference types="node" />
-import * as fs from 'fs';
-import { Dirent } from '@nodelib/fs.walk';
-export declare function createDirentFromStats(name: string, stats: fs.Stats): Dirent;
diff --git a/assets/node_modules/fast-glob/out/utils/fs.js b/assets/node_modules/fast-glob/out/utils/fs.js
deleted file mode 100644
index cd70c6b..0000000
--- a/assets/node_modules/fast-glob/out/utils/fs.js
+++ /dev/null
@@ -1,18 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-class DirentFromStats {
- constructor(name, stats) {
- this.name = name;
- this.isBlockDevice = stats.isBlockDevice.bind(stats);
- this.isCharacterDevice = stats.isCharacterDevice.bind(stats);
- this.isDirectory = stats.isDirectory.bind(stats);
- this.isFIFO = stats.isFIFO.bind(stats);
- this.isFile = stats.isFile.bind(stats);
- this.isSocket = stats.isSocket.bind(stats);
- this.isSymbolicLink = stats.isSymbolicLink.bind(stats);
- }
-}
-function createDirentFromStats(name, stats) {
- return new DirentFromStats(name, stats);
-}
-exports.createDirentFromStats = createDirentFromStats;
diff --git a/assets/node_modules/fast-glob/out/utils/index.d.ts b/assets/node_modules/fast-glob/out/utils/index.d.ts
deleted file mode 100644
index 74ceebe..0000000
--- a/assets/node_modules/fast-glob/out/utils/index.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import * as array from './array';
-import * as errno from './errno';
-import * as fs from './fs';
-import * as path from './path';
-import * as pattern from './pattern';
-import * as stream from './stream';
-export { array, errno, fs, path, pattern, stream };
diff --git a/assets/node_modules/fast-glob/out/utils/index.js b/assets/node_modules/fast-glob/out/utils/index.js
deleted file mode 100644
index 5624cac..0000000
--- a/assets/node_modules/fast-glob/out/utils/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const array = require("./array");
-exports.array = array;
-const errno = require("./errno");
-exports.errno = errno;
-const fs = require("./fs");
-exports.fs = fs;
-const path = require("./path");
-exports.path = path;
-const pattern = require("./pattern");
-exports.pattern = pattern;
-const stream = require("./stream");
-exports.stream = stream;
diff --git a/assets/node_modules/fast-glob/out/utils/path.d.ts b/assets/node_modules/fast-glob/out/utils/path.d.ts
deleted file mode 100644
index 58cff38..0000000
--- a/assets/node_modules/fast-glob/out/utils/path.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Pattern } from '../types';
-/**
- * Designed to work only with simple paths: `dir\\file`.
- */
-export declare function unixify(filepath: string): string;
-export declare function makeAbsolute(cwd: string, filepath: string): string;
-export declare function escape(pattern: Pattern): Pattern;
diff --git a/assets/node_modules/fast-glob/out/utils/path.js b/assets/node_modules/fast-glob/out/utils/path.js
deleted file mode 100644
index 74a7f74..0000000
--- a/assets/node_modules/fast-glob/out/utils/path.js
+++ /dev/null
@@ -1,19 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const path = require("path");
-const UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([*?|(){}[\]]|^!|[@+!](?=\())/g;
-/**
- * Designed to work only with simple paths: `dir\\file`.
- */
-function unixify(filepath) {
- return filepath.replace(/\\/g, '/');
-}
-exports.unixify = unixify;
-function makeAbsolute(cwd, filepath) {
- return path.resolve(cwd, filepath);
-}
-exports.makeAbsolute = makeAbsolute;
-function escape(pattern) {
- return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\$2');
-}
-exports.escape = escape;
diff --git a/assets/node_modules/fast-glob/out/utils/pattern.d.ts b/assets/node_modules/fast-glob/out/utils/pattern.d.ts
deleted file mode 100644
index e0daf2a..0000000
--- a/assets/node_modules/fast-glob/out/utils/pattern.d.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { MicromatchOptions, Pattern, PatternRe } from '../types';
-declare type PatternTypeOptions = {
- braceExpansion?: boolean;
- caseSensitiveMatch?: boolean;
- extglob?: boolean;
-};
-export declare function isStaticPattern(pattern: Pattern, options?: PatternTypeOptions): boolean;
-export declare function isDynamicPattern(pattern: Pattern, options?: PatternTypeOptions): boolean;
-export declare function convertToPositivePattern(pattern: Pattern): Pattern;
-export declare function convertToNegativePattern(pattern: Pattern): Pattern;
-export declare function isNegativePattern(pattern: Pattern): boolean;
-export declare function isPositivePattern(pattern: Pattern): boolean;
-export declare function getNegativePatterns(patterns: Pattern[]): Pattern[];
-export declare function getPositivePatterns(patterns: Pattern[]): Pattern[];
-export declare function getBaseDirectory(pattern: Pattern): string;
-export declare function hasGlobStar(pattern: Pattern): boolean;
-export declare function endsWithSlashGlobStar(pattern: Pattern): boolean;
-export declare function isAffectDepthOfReadingPattern(pattern: Pattern): boolean;
-export declare function getNaiveDepth(pattern: Pattern): number;
-export declare function getMaxNaivePatternsDepth(patterns: Pattern[]): number;
-export declare function makeRe(pattern: Pattern, options: MicromatchOptions): PatternRe;
-export declare function convertPatternsToRe(patterns: Pattern[], options: MicromatchOptions): PatternRe[];
-export declare function matchAny(entry: string, patternsRe: PatternRe[]): boolean;
-export {};
diff --git a/assets/node_modules/fast-glob/out/utils/pattern.js b/assets/node_modules/fast-glob/out/utils/pattern.js
deleted file mode 100644
index 9c82c96..0000000
--- a/assets/node_modules/fast-glob/out/utils/pattern.js
+++ /dev/null
@@ -1,112 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const path = require("path");
-const globParent = require("glob-parent");
-const micromatch = require("micromatch");
-const GLOBSTAR = '**';
-const ESCAPE_SYMBOL = '\\';
-const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/;
-const REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[.*]/;
-const REGEX_GROUP_SYMBOLS_RE = /(?:^|[^@!*?+])\(.*\|.*\)/;
-const GLOB_EXTENSION_SYMBOLS_RE = /[@!*?+]\(.*\)/;
-const BRACE_EXPANSIONS_SYMBOLS_RE = /{.*(?:,|\.\.).*}/;
-function isStaticPattern(pattern, options = {}) {
- return !isDynamicPattern(pattern, options);
-}
-exports.isStaticPattern = isStaticPattern;
-function isDynamicPattern(pattern, options = {}) {
- /**
- * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check
- * filepath directly (without read directory).
- */
- if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) {
- return true;
- }
- if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) {
- return true;
- }
- if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) {
- return true;
- }
- if (options.braceExpansion !== false && BRACE_EXPANSIONS_SYMBOLS_RE.test(pattern)) {
- return true;
- }
- return false;
-}
-exports.isDynamicPattern = isDynamicPattern;
-function convertToPositivePattern(pattern) {
- return isNegativePattern(pattern) ? pattern.slice(1) : pattern;
-}
-exports.convertToPositivePattern = convertToPositivePattern;
-function convertToNegativePattern(pattern) {
- return '!' + pattern;
-}
-exports.convertToNegativePattern = convertToNegativePattern;
-function isNegativePattern(pattern) {
- return pattern.startsWith('!') && pattern[1] !== '(';
-}
-exports.isNegativePattern = isNegativePattern;
-function isPositivePattern(pattern) {
- return !isNegativePattern(pattern);
-}
-exports.isPositivePattern = isPositivePattern;
-function getNegativePatterns(patterns) {
- return patterns.filter(isNegativePattern);
-}
-exports.getNegativePatterns = getNegativePatterns;
-function getPositivePatterns(patterns) {
- return patterns.filter(isPositivePattern);
-}
-exports.getPositivePatterns = getPositivePatterns;
-function getBaseDirectory(pattern) {
- return globParent(pattern, { flipBackslashes: false });
-}
-exports.getBaseDirectory = getBaseDirectory;
-function hasGlobStar(pattern) {
- return pattern.includes(GLOBSTAR);
-}
-exports.hasGlobStar = hasGlobStar;
-function endsWithSlashGlobStar(pattern) {
- return pattern.endsWith('/' + GLOBSTAR);
-}
-exports.endsWithSlashGlobStar = endsWithSlashGlobStar;
-function isAffectDepthOfReadingPattern(pattern) {
- const basename = path.basename(pattern);
- return endsWithSlashGlobStar(pattern) || isStaticPattern(basename);
-}
-exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern;
-function getNaiveDepth(pattern) {
- const base = getBaseDirectory(pattern);
- const patternDepth = pattern.split('/').length;
- const patternBaseDepth = base.split('/').length;
- /**
- * This is a hack for pattern that has no base directory.
- *
- * This is related to the `*\something\*` pattern.
- */
- if (base === '.') {
- return patternDepth - patternBaseDepth;
- }
- return patternDepth - patternBaseDepth - 1;
-}
-exports.getNaiveDepth = getNaiveDepth;
-function getMaxNaivePatternsDepth(patterns) {
- return patterns.reduce((max, pattern) => {
- const depth = getNaiveDepth(pattern);
- return depth > max ? depth : max;
- }, 0);
-}
-exports.getMaxNaivePatternsDepth = getMaxNaivePatternsDepth;
-function makeRe(pattern, options) {
- return micromatch.makeRe(pattern, options);
-}
-exports.makeRe = makeRe;
-function convertPatternsToRe(patterns, options) {
- return patterns.map((pattern) => makeRe(pattern, options));
-}
-exports.convertPatternsToRe = convertPatternsToRe;
-function matchAny(entry, patternsRe) {
- const filepath = entry.replace(/^\.[\\/]/, '');
- return patternsRe.some((patternRe) => patternRe.test(filepath));
-}
-exports.matchAny = matchAny;
diff --git a/assets/node_modules/fast-glob/out/utils/stream.d.ts b/assets/node_modules/fast-glob/out/utils/stream.d.ts
deleted file mode 100644
index 167fab0..0000000
--- a/assets/node_modules/fast-glob/out/utils/stream.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-/// <reference types="node" />
-import { Readable } from 'stream';
-export declare function merge(streams: Readable[]): NodeJS.ReadableStream;
diff --git a/assets/node_modules/fast-glob/out/utils/stream.js b/assets/node_modules/fast-glob/out/utils/stream.js
deleted file mode 100644
index 6cded55..0000000
--- a/assets/node_modules/fast-glob/out/utils/stream.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const merge2 = require("merge2");
-function merge(streams) {
- const mergedStream = merge2(streams);
- streams.forEach((stream) => {
- stream.once('error', (error) => mergedStream.emit('error', error));
- });
- mergedStream.once('close', () => propagateCloseEventToSources(streams));
- mergedStream.once('end', () => propagateCloseEventToSources(streams));
- return mergedStream;
-}
-exports.merge = merge;
-function propagateCloseEventToSources(streams) {
- streams.forEach((stream) => stream.emit('close'));
-}
diff --git a/assets/node_modules/fast-glob/package.json b/assets/node_modules/fast-glob/package.json
deleted file mode 100644
index 67fca49..0000000
--- a/assets/node_modules/fast-glob/package.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{
- "name": "fast-glob",
- "version": "3.1.1",
- "description": "It's a very fast and efficient glob library for Node.js",
- "license": "MIT",
- "repository": "mrmlnc/fast-glob",
- "author": {
- "name": "Denis Malinochkin",
- "url": "https://mrmlnc.com"
- },
- "engines": {
- "node": ">=8"
- },
- "main": "out/index.js",
- "typings": "out/index.d.ts",
- "keywords": [
- "glob",
- "patterns",
- "fast",
- "implementation"
- ],
- "devDependencies": {
- "@nodelib/fs.macchiato": "^1.0.1",
- "@types/compute-stdev": "^1.0.0",
- "@types/easy-table": "^0.0.32",
- "@types/glob": "^7.1.1",
- "@types/glob-parent": "^5.1.0",
- "@types/merge2": "^1.1.4",
- "@types/micromatch": "^3.1.0",
- "@types/minimist": "^1.2.0",
- "@types/mocha": "^5.2.7",
- "@types/node": "^12.7.8",
- "@types/rimraf": "^2.0.2",
- "@types/sinon": "^7.5.0",
- "compute-stdev": "^1.0.0",
- "easy-table": "^1.1.1",
- "eslint": "^6.5.1",
- "eslint-config-mrmlnc": "^1.0.1",
- "execa": "^2.0.4",
- "fast-glob": "^3.0.4",
- "glob": "^7.1.4",
- "minimist": "^1.2.0",
- "mocha": "^6.2.1",
- "rimraf": "^3.0.0",
- "sinon": "^7.5.0",
- "tiny-glob": "^0.2.6",
- "typescript": "^3.6.3"
- },
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.0",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.2"
- },
- "scripts": {
- "clean": "rimraf out",
- "lint": "eslint \"src/**/*.ts\" --cache",
- "compile": "tsc",
- "test": "mocha \"out/**/*.spec.js\" -s 0",
- "smoke": "mocha \"out/**/*.smoke.js\" -s 0",
- "smoke:sync": "mocha \"out/**/*.smoke.js\" -s 0 --grep \"\\(sync\\)\"",
- "smoke:async": "mocha \"out/**/*.smoke.js\" -s 0 --grep \"\\(async\\)\"",
- "smoke:stream": "mocha \"out/**/*.smoke.js\" -s 0 --grep \"\\(stream\\)\"",
- "build": "npm run clean && npm run compile && npm run lint && npm test",
- "watch": "npm run clean && npm run compile -- --sourceMap --watch",
- "bench": "npm run bench-async && npm run bench-stream && npm run bench-sync",
- "bench-async": "npm run bench-async-flatten && npm run bench-async-deep",
- "bench-stream": "npm run bench-stream-flatten && npm run bench-stream-deep",
- "bench-sync": "npm run bench-sync-flatten && npm run bench-sync-deep",
- "bench-async-flatten": "node ./out/benchmark --mode async --pattern \"*\"",
- "bench-async-deep": "node ./out/benchmark --mode async --pattern \"**\"",
- "bench-stream-flatten": "node ./out/benchmark --mode stream --pattern \"*\"",
- "bench-stream-deep": "node ./out/benchmark --mode stream --pattern \"**\"",
- "bench-sync-flatten": "node ./out/benchmark --mode sync --pattern \"*\"",
- "bench-sync-deep": "node ./out/benchmark --mode sync --pattern \"**\""
- }
-}
diff --git a/assets/node_modules/fast-json-stable-stringify/.eslintrc.yml b/assets/node_modules/fast-json-stable-stringify/.eslintrc.yml
deleted file mode 100644
index 1c77b0d..0000000
--- a/assets/node_modules/fast-json-stable-stringify/.eslintrc.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-extends: eslint:recommended
-env:
- node: true
- browser: true
-rules:
- block-scoped-var: 2
- callback-return: 2
- dot-notation: 2
- indent: 2
- linebreak-style: [2, unix]
- new-cap: 2
- no-console: [2, allow: [warn, error]]
- no-else-return: 2
- no-eq-null: 2
- no-fallthrough: 2
- no-invalid-this: 2
- no-return-assign: 2
- no-shadow: 1
- no-trailing-spaces: 2
- no-use-before-define: [2, nofunc]
- quotes: [2, single, avoid-escape]
- semi: [2, always]
- strict: [2, global]
- valid-jsdoc: [2, requireReturn: false]
- no-control-regex: 0
- no-useless-escape: 2
diff --git a/assets/node_modules/fast-json-stable-stringify/.github/FUNDING.yml b/assets/node_modules/fast-json-stable-stringify/.github/FUNDING.yml
deleted file mode 100644
index 61f9daa..0000000
--- a/assets/node_modules/fast-json-stable-stringify/.github/FUNDING.yml
+++ /dev/null
@@ -1 +0,0 @@
-tidelift: "npm/fast-json-stable-stringify"
diff --git a/assets/node_modules/fast-json-stable-stringify/.travis.yml b/assets/node_modules/fast-json-stable-stringify/.travis.yml
deleted file mode 100644
index b61e8f0..0000000
--- a/assets/node_modules/fast-json-stable-stringify/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: node_js
-node_js:
- - "8"
- - "10"
- - "12"
- - "13"
-after_script:
- - coveralls < coverage/lcov.info
diff --git a/assets/node_modules/fast-json-stable-stringify/LICENSE b/assets/node_modules/fast-json-stable-stringify/LICENSE
deleted file mode 100644
index c932223..0000000
--- a/assets/node_modules/fast-json-stable-stringify/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-This software is released under the MIT license:
-
-Copyright (c) 2017 Evgeny Poberezkin
-Copyright (c) 2013 James Halliday
-
-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/assets/node_modules/fast-json-stable-stringify/README.md b/assets/node_modules/fast-json-stable-stringify/README.md
deleted file mode 100644
index 02cf49f..0000000
--- a/assets/node_modules/fast-json-stable-stringify/README.md
+++ /dev/null
@@ -1,131 +0,0 @@
-# fast-json-stable-stringify
-
-Deterministic `JSON.stringify()` - a faster version of [@substack](https://github.com/substack)'s json-stable-strigify without [jsonify](https://github.com/substack/jsonify).
-
-You can also pass in a custom comparison function.
-
-[![Build Status](https://travis-ci.org/epoberezkin/fast-json-stable-stringify.svg?branch=master)](https://travis-ci.org/epoberezkin/fast-json-stable-stringify)
-[![Coverage Status](https://coveralls.io/repos/github/epoberezkin/fast-json-stable-stringify/badge.svg?branch=master)](https://coveralls.io/github/epoberezkin/fast-json-stable-stringify?branch=master)
-
-# example
-
-``` js
-var stringify = require('fast-json-stable-stringify');
-var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 };
-console.log(stringify(obj));
-```
-
-output:
-
-```
-{"a":3,"b":[{"x":4,"y":5,"z":6},7],"c":8}
-```
-
-
-# methods
-
-``` js
-var stringify = require('fast-json-stable-stringify')
-```
-
-## var str = stringify(obj, opts)
-
-Return a deterministic stringified string `str` from the object `obj`.
-
-
-## options
-
-### cmp
-
-If `opts` is given, you can supply an `opts.cmp` to have a custom comparison
-function for object keys. Your function `opts.cmp` is called with these
-parameters:
-
-``` js
-opts.cmp({ key: akey, value: avalue }, { key: bkey, value: bvalue })
-```
-
-For example, to sort on the object key names in reverse order you could write:
-
-``` js
-var stringify = require('fast-json-stable-stringify');
-
-var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 };
-var s = stringify(obj, function (a, b) {
- return a.key < b.key ? 1 : -1;
-});
-console.log(s);
-```
-
-which results in the output string:
-
-```
-{"c":8,"b":[{"z":6,"y":5,"x":4},7],"a":3}
-```
-
-Or if you wanted to sort on the object values in reverse order, you could write:
-
-```
-var stringify = require('fast-json-stable-stringify');
-
-var obj = { d: 6, c: 5, b: [{z:3,y:2,x:1},9], a: 10 };
-var s = stringify(obj, function (a, b) {
- return a.value < b.value ? 1 : -1;
-});
-console.log(s);
-```
-
-which outputs:
-
-```
-{"d":6,"c":5,"b":[{"z":3,"y":2,"x":1},9],"a":10}
-```
-
-### cycles
-
-Pass `true` in `opts.cycles` to stringify circular property as `__cycle__` - the result will not be a valid JSON string in this case.
-
-TypeError will be thrown in case of circular object without this option.
-
-
-# install
-
-With [npm](https://npmjs.org) do:
-
-```
-npm install fast-json-stable-stringify
-```
-
-
-# benchmark
-
-To run benchmark (requires Node.js 6+):
-```
-node benchmark
-```
-
-Results:
-```
-fast-json-stable-stringify x 17,189 ops/sec ±1.43% (83 runs sampled)
-json-stable-stringify x 13,634 ops/sec ±1.39% (85 runs sampled)
-fast-stable-stringify x 20,212 ops/sec ±1.20% (84 runs sampled)
-faster-stable-stringify x 15,549 ops/sec ±1.12% (84 runs sampled)
-The fastest is fast-stable-stringify
-```
-
-
-## Enterprise support
-
-fast-json-stable-stringify package is a part of [Tidelift enterprise subscription](https://tidelift.com/subscription/pkg/npm-fast-json-stable-stringify?utm_source=npm-fast-json-stable-stringify&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) - it provides a centralised commercial support to open-source software users, in addition to the support provided by software maintainers.
-
-
-## Security contact
-
-To report a security vulnerability, please use the
-[Tidelift security contact](https://tidelift.com/security).
-Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerability via GitHub issues.
-
-
-# license
-
-[MIT](https://github.com/epoberezkin/fast-json-stable-stringify/blob/master/LICENSE)
diff --git a/assets/node_modules/fast-json-stable-stringify/benchmark/index.js b/assets/node_modules/fast-json-stable-stringify/benchmark/index.js
deleted file mode 100644
index e725f9f..0000000
--- a/assets/node_modules/fast-json-stable-stringify/benchmark/index.js
+++ /dev/null
@@ -1,31 +0,0 @@
-'use strict';
-
-const Benchmark = require('benchmark');
-const suite = new Benchmark.Suite;
-const testData = require('./test.json');
-
-
-const stringifyPackages = {
- // 'JSON.stringify': JSON.stringify,
- 'fast-json-stable-stringify': require('../index'),
- 'json-stable-stringify': true,
- 'fast-stable-stringify': true,
- 'faster-stable-stringify': true
-};
-
-
-for (const name in stringifyPackages) {
- let func = stringifyPackages[name];
- if (func === true) func = require(name);
-
- suite.add(name, function() {
- func(testData);
- });
-}
-
-suite
- .on('cycle', (event) => console.log(String(event.target)))
- .on('complete', function () {
- console.log('The fastest is ' + this.filter('fastest').map('name'));
- })
- .run({async: true});
diff --git a/assets/node_modules/fast-json-stable-stringify/benchmark/test.json b/assets/node_modules/fast-json-stable-stringify/benchmark/test.json
deleted file mode 100644
index c9118c1..0000000
--- a/assets/node_modules/fast-json-stable-stringify/benchmark/test.json
+++ /dev/null
@@ -1,137 +0,0 @@
-[
- {
- "_id": "59ef4a83ee8364808d761beb",
- "index": 0,
- "guid": "e50ffae9-7128-4148-9ee5-40c3fc523c5d",
- "isActive": false,
- "balance": "$2,341.81",
- "picture": "http://placehold.it/32x32",
- "age": 28,
- "eyeColor": "brown",
- "name": "Carey Savage",
- "gender": "female",
- "company": "VERAQ",
- "email": "careysavage@veraq.com",
- "phone": "+1 (897) 574-3014",
- "address": "458 Willow Street, Henrietta, California, 7234",
- "about": "Nisi reprehenderit nulla ad officia pariatur non dolore laboris irure cupidatat laborum. Minim eu ex Lorem adipisicing exercitation irure minim sunt est enim mollit incididunt voluptate nulla. Ut mollit anim reprehenderit et aliqua ex esse aliquip. Aute sit duis deserunt do incididunt consequat minim qui dolor commodo deserunt et voluptate.\r\n",
- "registered": "2014-05-21T01:56:51 -01:00",
- "latitude": 63.89502,
- "longitude": 62.369807,
- "tags": [
- "nostrud",
- "nisi",
- "consectetur",
- "ullamco",
- "cupidatat",
- "culpa",
- "commodo"
- ],
- "friends": [
- {
- "id": 0,
- "name": "Henry Walls"
- },
- {
- "id": 1,
- "name": "Janice Baker"
- },
- {
- "id": 2,
- "name": "Russell Bush"
- }
- ],
- "greeting": "Hello, Carey Savage! You have 4 unread messages.",
- "favoriteFruit": "banana"
- },
- {
- "_id": "59ef4a83ff5774a691454e89",
- "index": 1,
- "guid": "2bee9efc-4095-4c2e-87ef-d08c8054c89d",
- "isActive": true,
- "balance": "$1,618.15",
- "picture": "http://placehold.it/32x32",
- "age": 35,
- "eyeColor": "blue",
- "name": "Elinor Pearson",
- "gender": "female",
- "company": "FLEXIGEN",
- "email": "elinorpearson@flexigen.com",
- "phone": "+1 (923) 548-3751",
- "address": "600 Bayview Avenue, Draper, Montana, 3088",
- "about": "Mollit commodo ea sit Lorem velit. Irure anim esse Lorem sint quis officia ut. Aliqua nisi dolore in aute deserunt mollit ex ea in mollit.\r\n",
- "registered": "2017-04-22T07:58:41 -01:00",
- "latitude": -87.824919,
- "longitude": 69.538927,
- "tags": [
- "fugiat",
- "labore",
- "proident",
- "quis",
- "eiusmod",
- "qui",
- "est"
- ],
- "friends": [
- {
- "id": 0,
- "name": "Massey Wagner"
- },
- {
- "id": 1,
- "name": "Marcella Ferrell"
- },
- {
- "id": 2,
- "name": "Evans Mckee"
- }
- ],
- "greeting": "Hello, Elinor Pearson! You have 3 unread messages.",
- "favoriteFruit": "strawberry"
- },
- {
- "_id": "59ef4a839ec8a4be4430b36b",
- "index": 2,
- "guid": "ddd6e8c0-95bd-416d-8b46-a768d6363809",
- "isActive": false,
- "balance": "$2,046.95",
- "picture": "http://placehold.it/32x32",
- "age": 40,
- "eyeColor": "green",
- "name": "Irwin Davidson",
- "gender": "male",
- "company": "DANJA",
- "email": "irwindavidson@danja.com",
- "phone": "+1 (883) 537-2041",
- "address": "439 Cook Street, Chapin, Kentucky, 7398",
- "about": "Irure velit non commodo aliqua exercitation ut nostrud minim magna. Dolor ad ad ut irure eu. Non pariatur dolor eiusmod ipsum do et exercitation cillum. Et amet laboris minim eiusmod ullamco magna ea reprehenderit proident sunt.\r\n",
- "registered": "2016-09-01T07:49:08 -01:00",
- "latitude": -49.803812,
- "longitude": 104.93279,
- "tags": [
- "consequat",
- "enim",
- "quis",
- "magna",
- "est",
- "culpa",
- "tempor"
- ],
- "friends": [
- {
- "id": 0,
- "name": "Ruth Hansen"
- },
- {
- "id": 1,
- "name": "Kathrine Austin"
- },
- {
- "id": 2,
- "name": "Rivera Munoz"
- }
- ],
- "greeting": "Hello, Irwin Davidson! You have 2 unread messages.",
- "favoriteFruit": "banana"
- }
-]
diff --git a/assets/node_modules/fast-json-stable-stringify/example/key_cmp.js b/assets/node_modules/fast-json-stable-stringify/example/key_cmp.js
deleted file mode 100644
index d5f6675..0000000
--- a/assets/node_modules/fast-json-stable-stringify/example/key_cmp.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var stringify = require('../');
-
-var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 };
-var s = stringify(obj, function (a, b) {
- return a.key < b.key ? 1 : -1;
-});
-console.log(s);
diff --git a/assets/node_modules/fast-json-stable-stringify/example/nested.js b/assets/node_modules/fast-json-stable-stringify/example/nested.js
deleted file mode 100644
index 9a672fc..0000000
--- a/assets/node_modules/fast-json-stable-stringify/example/nested.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var stringify = require('../');
-var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 };
-console.log(stringify(obj));
diff --git a/assets/node_modules/fast-json-stable-stringify/example/str.js b/assets/node_modules/fast-json-stable-stringify/example/str.js
deleted file mode 100644
index 9b4b3cd..0000000
--- a/assets/node_modules/fast-json-stable-stringify/example/str.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var stringify = require('../');
-var obj = { c: 6, b: [4,5], a: 3 };
-console.log(stringify(obj));
diff --git a/assets/node_modules/fast-json-stable-stringify/example/value_cmp.js b/assets/node_modules/fast-json-stable-stringify/example/value_cmp.js
deleted file mode 100644
index 09f1c5f..0000000
--- a/assets/node_modules/fast-json-stable-stringify/example/value_cmp.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var stringify = require('../');
-
-var obj = { d: 6, c: 5, b: [{z:3,y:2,x:1},9], a: 10 };
-var s = stringify(obj, function (a, b) {
- return a.value < b.value ? 1 : -1;
-});
-console.log(s);
diff --git a/assets/node_modules/fast-json-stable-stringify/index.d.ts b/assets/node_modules/fast-json-stable-stringify/index.d.ts
deleted file mode 100644
index 23e46ca..0000000
--- a/assets/node_modules/fast-json-stable-stringify/index.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-declare module 'fast-json-stable-stringify' {
- function stringify(obj: any): string;
- export = stringify;
-}
diff --git a/assets/node_modules/fast-json-stable-stringify/index.js b/assets/node_modules/fast-json-stable-stringify/index.js
deleted file mode 100644
index c44e6a4..0000000
--- a/assets/node_modules/fast-json-stable-stringify/index.js
+++ /dev/null
@@ -1,59 +0,0 @@
-'use strict';
-
-module.exports = function (data, opts) {
- if (!opts) opts = {};
- if (typeof opts === 'function') opts = { cmp: opts };
- var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;
-
- var cmp = opts.cmp && (function (f) {
- return function (node) {
- return function (a, b) {
- var aobj = { key: a, value: node[a] };
- var bobj = { key: b, value: node[b] };
- return f(aobj, bobj);
- };
- };
- })(opts.cmp);
-
- var seen = [];
- return (function stringify (node) {
- if (node && node.toJSON && typeof node.toJSON === 'function') {
- node = node.toJSON();
- }
-
- if (node === undefined) return;
- if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';
- if (typeof node !== 'object') return JSON.stringify(node);
-
- var i, out;
- if (Array.isArray(node)) {
- out = '[';
- for (i = 0; i < node.length; i++) {
- if (i) out += ',';
- out += stringify(node[i]) || 'null';
- }
- return out + ']';
- }
-
- if (node === null) return 'null';
-
- if (seen.indexOf(node) !== -1) {
- if (cycles) return JSON.stringify('__cycle__');
- throw new TypeError('Converting circular structure to JSON');
- }
-
- var seenIndex = seen.push(node) - 1;
- var keys = Object.keys(node).sort(cmp && cmp(node));
- out = '';
- for (i = 0; i < keys.length; i++) {
- var key = keys[i];
- var value = stringify(node[key]);
-
- if (!value) continue;
- if (out) out += ',';
- out += JSON.stringify(key) + ':' + value;
- }
- seen.splice(seenIndex, 1);
- return '{' + out + '}';
- })(data);
-};
diff --git a/assets/node_modules/fast-json-stable-stringify/package.json b/assets/node_modules/fast-json-stable-stringify/package.json
deleted file mode 100644
index ad2c8bf..0000000
--- a/assets/node_modules/fast-json-stable-stringify/package.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "name": "fast-json-stable-stringify",
- "version": "2.1.0",
- "description": "deterministic `JSON.stringify()` - a faster version of substack's json-stable-strigify without jsonify",
- "main": "index.js",
- "types": "index.d.ts",
- "dependencies": {},
- "devDependencies": {
- "benchmark": "^2.1.4",
- "coveralls": "^3.0.0",
- "eslint": "^6.7.0",
- "fast-stable-stringify": "latest",
- "faster-stable-stringify": "latest",
- "json-stable-stringify": "latest",
- "nyc": "^14.1.0",
- "pre-commit": "^1.2.2",
- "tape": "^4.11.0"
- },
- "scripts": {
- "eslint": "eslint index.js test",
- "test-spec": "tape test/*.js",
- "test": "npm run eslint && nyc npm run test-spec"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/epoberezkin/fast-json-stable-stringify.git"
- },
- "homepage": "https://github.com/epoberezkin/fast-json-stable-stringify",
- "keywords": [
- "json",
- "stringify",
- "deterministic",
- "hash",
- "stable"
- ],
- "author": {
- "name": "James Halliday",
- "email": "mail@substack.net",
- "url": "http://substack.net"
- },
- "license": "MIT",
- "nyc": {
- "exclude": [
- "test",
- "node_modules"
- ],
- "reporter": [
- "lcov",
- "text-summary"
- ]
- }
-}
diff --git a/assets/node_modules/fast-json-stable-stringify/test/cmp.js b/assets/node_modules/fast-json-stable-stringify/test/cmp.js
deleted file mode 100644
index 4efd6b5..0000000
--- a/assets/node_modules/fast-json-stable-stringify/test/cmp.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict';
-
-var test = require('tape');
-var stringify = require('../');
-
-test('custom comparison function', function (t) {
- t.plan(1);
- var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 };
- var s = stringify(obj, function (a, b) {
- return a.key < b.key ? 1 : -1;
- });
- t.equal(s, '{"c":8,"b":[{"z":6,"y":5,"x":4},7],"a":3}');
-});
diff --git a/assets/node_modules/fast-json-stable-stringify/test/nested.js b/assets/node_modules/fast-json-stable-stringify/test/nested.js
deleted file mode 100644
index 167a358..0000000
--- a/assets/node_modules/fast-json-stable-stringify/test/nested.js
+++ /dev/null
@@ -1,44 +0,0 @@
-'use strict';
-
-var test = require('tape');
-var stringify = require('../');
-
-test('nested', function (t) {
- t.plan(1);
- var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 };
- t.equal(stringify(obj), '{"a":3,"b":[{"x":4,"y":5,"z":6},7],"c":8}');
-});
-
-test('cyclic (default)', function (t) {
- t.plan(1);
- var one = { a: 1 };
- var two = { a: 2, one: one };
- one.two = two;
- try {
- stringify(one);
- } catch (ex) {
- t.equal(ex.toString(), 'TypeError: Converting circular structure to JSON');
- }
-});
-
-test('cyclic (specifically allowed)', function (t) {
- t.plan(1);
- var one = { a: 1 };
- var two = { a: 2, one: one };
- one.two = two;
- t.equal(stringify(one, {cycles:true}), '{"a":1,"two":{"a":2,"one":"__cycle__"}}');
-});
-
-test('repeated non-cyclic value', function(t) {
- t.plan(1);
- var one = { x: 1 };
- var two = { a: one, b: one };
- t.equal(stringify(two), '{"a":{"x":1},"b":{"x":1}}');
-});
-
-test('acyclic but with reused obj-property pointers', function (t) {
- t.plan(1);
- var x = { a: 1 };
- var y = { b: x, c: x };
- t.equal(stringify(y), '{"b":{"a":1},"c":{"a":1}}');
-});
diff --git a/assets/node_modules/fast-json-stable-stringify/test/str.js b/assets/node_modules/fast-json-stable-stringify/test/str.js
deleted file mode 100644
index 99a9ade..0000000
--- a/assets/node_modules/fast-json-stable-stringify/test/str.js
+++ /dev/null
@@ -1,46 +0,0 @@
-'use strict';
-
-var test = require('tape');
-var stringify = require('../');
-
-test('simple object', function (t) {
- t.plan(1);
- var obj = { c: 6, b: [4,5], a: 3, z: null };
- t.equal(stringify(obj), '{"a":3,"b":[4,5],"c":6,"z":null}');
-});
-
-test('object with undefined', function (t) {
- t.plan(1);
- var obj = { a: 3, z: undefined };
- t.equal(stringify(obj), '{"a":3}');
-});
-
-test('object with null', function (t) {
- t.plan(1);
- var obj = { a: 3, z: null };
- t.equal(stringify(obj), '{"a":3,"z":null}');
-});
-
-test('object with NaN and Infinity', function (t) {
- t.plan(1);
- var obj = { a: 3, b: NaN, c: Infinity };
- t.equal(stringify(obj), '{"a":3,"b":null,"c":null}');
-});
-
-test('array with undefined', function (t) {
- t.plan(1);
- var obj = [4, undefined, 6];
- t.equal(stringify(obj), '[4,null,6]');
-});
-
-test('object with empty string', function (t) {
- t.plan(1);
- var obj = { a: 3, z: '' };
- t.equal(stringify(obj), '{"a":3,"z":""}');
-});
-
-test('array with empty string', function (t) {
- t.plan(1);
- var obj = [4, '', 6];
- t.equal(stringify(obj), '[4,"",6]');
-});
diff --git a/assets/node_modules/fast-json-stable-stringify/test/to-json.js b/assets/node_modules/fast-json-stable-stringify/test/to-json.js
deleted file mode 100644
index 2fb2cfa..0000000
--- a/assets/node_modules/fast-json-stable-stringify/test/to-json.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict';
-
-var test = require('tape');
-var stringify = require('../');
-
-test('toJSON function', function (t) {
- t.plan(1);
- var obj = { one: 1, two: 2, toJSON: function() { return { one: 1 }; } };
- t.equal(stringify(obj), '{"one":1}' );
-});
-
-test('toJSON returns string', function (t) {
- t.plan(1);
- var obj = { one: 1, two: 2, toJSON: function() { return 'one'; } };
- t.equal(stringify(obj), '"one"');
-});
-
-test('toJSON returns array', function (t) {
- t.plan(1);
- var obj = { one: 1, two: 2, toJSON: function() { return ['one']; } };
- t.equal(stringify(obj), '["one"]');
-});
diff --git a/assets/node_modules/fastq/.travis.yml b/assets/node_modules/fastq/.travis.yml
deleted file mode 100644
index deacb57..0000000
--- a/assets/node_modules/fastq/.travis.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-language: node_js
-node_js:
- - "10"
- - "8"
- - "6"
- - "5"
- - "4"
- - "0.12"
- - "0.10"
- - "iojs"
diff --git a/assets/node_modules/fastq/LICENSE b/assets/node_modules/fastq/LICENSE
deleted file mode 100644
index 7efa173..0000000
--- a/assets/node_modules/fastq/LICENSE
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright (c) 2015, Matteo Collina <matteo.collina@gmail.com>
-
-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/assets/node_modules/fastq/README.md b/assets/node_modules/fastq/README.md
deleted file mode 100644
index 3312727..0000000
--- a/assets/node_modules/fastq/README.md
+++ /dev/null
@@ -1,183 +0,0 @@
-# fastq&nbsp;&nbsp;[![build status](https://secure.travis-ci.org/mcollina/fastq.png)](http://travis-ci.org/mcollina/fastq)
-
-Fast, in memory work queue. `fastq` is API compatible with
-[`async.queue`](https://github.com/caolan/async#queueworker-concurrency)
-
-Benchmarks (1 million tasks):
-
-* setImmediate: 1359ms
-* fastq: 1492ms
-* async.queue: 4039ms
-* neoAsync.queue: 4476ms
-
-Obtained on node 4.2.2, on a MacBook Pro 2014 (i7, 16GB of RAM).
-
-If you need zero-overhead series function call, check out
-[fastseries](http://npm.im/fastseries). For zero-overhead parallel
-function call, check out [fastparallel](http://npm.im/fastparallel).
-
-[![js-standard-style](https://raw.githubusercontent.com/feross/standard/master/badge.png)](https://github.com/feross/standard)
-
- * <a href="#install">Installation</a>
- * <a href="#basic">Basic Example</a>
- * <a href="#api">API</a>
- * <a href="#licence">Licence &amp; copyright</a>
-
-## Install
-
-`npm i fastq --save`
-
-## Usage
-
-```js
-'use strict'
-
-var queue = require('fastq')(worker, 1)
-
-queue.push(42, function (err, result) {
- if (err) { throw err }
- console.log('the result is', result)
-})
-
-function worker (arg, cb) {
- cb(null, 42 * 2)
-}
-```
-
-### Setting this
-
-```js
-'use strict'
-
-var that = { hello: 'world' }
-var queue = require('fastq')(that, worker, 1)
-
-queue.push(42, function (err, result) {
- if (err) { throw err }
- console.log(this)
- console.log('the result is', result)
-})
-
-function worker (arg, cb) {
- console.log(this)
- cb(null, 42 * 2)
-}
-```
-
-## API
-
-* <a href="#fastqueue"><code>fastqueue()</code></a>
-* <a href="#push"><code>queue#<b>push()</b></code></a>
-* <a href="#unshift"><code>queue#<b>unshift()</b></code></a>
-* <a href="#pause"><code>queue#<b>pause()</b></code></a>
-* <a href="#resume"><code>queue#<b>resume()</b></code></a>
-* <a href="#idle"><code>queue#<b>idle()</b></code></a>
-* <a href="#length"><code>queue#<b>length()</b></code></a>
-* <a href="#kill"><code>queue#<b>kill()</b></code></a>
-* <a href="#killAndDrain"><code>queue#<b>killAndDrain()</b></code></a>
-* <a href="#concurrency"><code>queue#<b>concurrency</b></code></a>
-* <a href="#drain"><code>queue#<b>drain</b></code></a>
-* <a href="#empty"><code>queue#<b>empty</b></code></a>
-* <a href="#saturated"><code>queue#<b>saturated</b></code></a>
-
--------------------------------------------------------
-<a name="fastqueue"></a>
-### fastqueue([that], worker, concurrency)
-
-Creates a new queue.
-
-Arguments:
-
-* `that`, optional context of the `worker` function.
-* `worker`, worker function, it would be called with `that` as `this`,
- if that is specified.
-* `concurrency`, number of concurrent tasks that could be executed in
- parallel.
-
--------------------------------------------------------
-<a name="push"></a>
-### queue.push(task, done)
-
-Add a task at the end of the queue. `done(err, result)` will be called
-when the task was processed.
-
--------------------------------------------------------
-<a name="unshift"></a>
-### queue.unshift(task, done)
-
-Add a task at the beginning of the queue. `done(err, result)` will be called
-when the task was processed.
-
--------------------------------------------------------
-<a name="pause"></a>
-### queue.pause()
-
-Pause the processing of tasks. Currently worked tasks are not
-stopped.
-
--------------------------------------------------------
-<a name="resume"></a>
-### queue.resume()
-
-Resume the processing of tasks.
-
--------------------------------------------------------
-<a name="idle"></a>
-### queue.idle()
-
-Returns `false` if there are tasks being processed or waiting to be processed.
-`true` otherwise.
-
--------------------------------------------------------
-<a name="length"></a>
-### queue.length()
-
-Returns the number of tasks waiting to be processed (in the queue).
-
--------------------------------------------------------
-<a name="kill"></a>
-### queue.kill()
-
-Removes all tasks waiting to be processed, and reset `drain` to an empty
-function.
-
--------------------------------------------------------
-<a name="killAndDrain"></a>
-### queue.killAndDrain()
-
-Same than `kill` but the `drain` function will be called before reset to empty.
-
--------------------------------------------------------
-<a name="concurrency"></a>
-### queue.concurrency
-
-Property that returns the number of concurrent tasks that could be executed in
-parallel. It can be altered at runtime.
-
--------------------------------------------------------
-<a name="drain"></a>
-### queue.drain
-
-Function that will be called when the last
-item from the queue has been processed by a worker.
-It can be altered at runtime.
-
--------------------------------------------------------
-<a name="empty"></a>
-### queue.empty
-
-Function that will be called when the last
-item from the queue has been assigned to a worker.
-It can be altered at runtime.
-
--------------------------------------------------------
-<a name="saturated"></a>
-### queue.saturated
-
-Function that will be called when the queue hits the concurrency
-limit.
-It can be altered at runtime.
-
-## License
-
-ISC
diff --git a/assets/node_modules/fastq/bench.js b/assets/node_modules/fastq/bench.js
deleted file mode 100644
index 931539d..0000000
--- a/assets/node_modules/fastq/bench.js
+++ /dev/null
@@ -1,58 +0,0 @@
-'use strict'
-
-var max = 1000000
-var fastqueue = require('./')(worker, 1)
-var async = require('async')
-var neo = require('neo-async')
-var asyncqueue = async.queue(worker, 1)
-var neoqueue = neo.queue(worker, 1)
-
-function bench (func, done) {
- var key = max + '*' + func.name
- var count = -1
-
- console.time(key)
- end()
-
- function end () {
- if (++count < max) {
- func(end)
- } else {
- console.timeEnd(key)
- if (done) {
- done()
- }
- }
- }
-}
-
-function benchFastQ (done) {
- fastqueue.push(42, done)
-}
-
-function benchAsyncQueue (done) {
- asyncqueue.push(42, done)
-}
-
-function benchNeoQueue (done) {
- neoqueue.push(42, done)
-}
-
-function worker (arg, cb) {
- setImmediate(cb)
-}
-
-function benchSetImmediate (cb) {
- worker(42, cb)
-}
-
-function runBench (done) {
- async.eachSeries([
- benchSetImmediate,
- benchFastQ,
- benchNeoQueue,
- benchAsyncQueue
- ], bench, done)
-}
-
-runBench(runBench)
diff --git a/assets/node_modules/fastq/example.js b/assets/node_modules/fastq/example.js
deleted file mode 100644
index 4f834c4..0000000
--- a/assets/node_modules/fastq/example.js
+++ /dev/null
@@ -1,12 +0,0 @@
-'use strict'
-
-var queue = require('./')(worker, 1)
-
-queue.push(42, function (err, result) {
- if (err) { throw err }
- console.log('the result is', result)
-})
-
-function worker (arg, cb) {
- cb(null, 42 * 2)
-}
diff --git a/assets/node_modules/fastq/index.d.ts b/assets/node_modules/fastq/index.d.ts
deleted file mode 100644
index a09619a..0000000
--- a/assets/node_modules/fastq/index.d.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-declare function fastq<T>(context: T, worker: fastq.worker<T>, concurrency: number): fastq.queue
-declare function fastq<T>(worker: fastq.worker<T>, concurrency: number): fastq.queue
-
-declare namespace fastq {
- type worker<T> = (this: T, arg: any, cb: () => void) => void
- type done = (err: Error, result: any) => void
-
- interface queue {
- push(task: any, done: done): void
- unshift(task: any, done: done): void
- pause(): any
- resume(): any
- idle(): boolean
- length(): number
- kill(): any
- killAndDrain(): any
- concurrency: number
- drain(): any
- empty: () => void
- saturated: () => void
- }
-}
-
-export = fastq \ No newline at end of file
diff --git a/assets/node_modules/fastq/package.json b/assets/node_modules/fastq/package.json
deleted file mode 100644
index ea0ea60..0000000
--- a/assets/node_modules/fastq/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "fastq",
- "version": "1.6.0",
- "description": "Fast, in memory work queue",
- "main": "queue.js",
- "scripts": {
- "lint": "standard",
- "typescript": "tsc --project ./test/tsconfig.json",
- "test": "standard && tape test/test.js | tap-spec && npm run typescript"
- },
- "pre-commit": [
- "lint",
- "test"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/mcollina/fastq.git"
- },
- "keywords": [
- "fast",
- "queue",
- "async",
- "worker"
- ],
- "author": "Matteo Collina <hello@matteocollina.com>",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/mcollina/fastq/issues"
- },
- "homepage": "https://github.com/mcollina/fastq#readme",
- "devDependencies": {
- "async": "^2.6.1",
- "neo-async": "^2.5.1",
- "pre-commit": "^1.2.2",
- "standard": "^11.0.0",
- "tap-spec": "^4.1.2",
- "tape": "^4.9.0",
- "typescript": "^2.9.1"
- },
- "dependencies": {
- "reusify": "^1.0.0"
- }
-}
diff --git a/assets/node_modules/fastq/queue.js b/assets/node_modules/fastq/queue.js
deleted file mode 100644
index 85db42c..0000000
--- a/assets/node_modules/fastq/queue.js
+++ /dev/null
@@ -1,173 +0,0 @@
-'use strict'
-
-var reusify = require('reusify')
-
-function fastqueue (context, worker, concurrency) {
- if (typeof context === 'function') {
- concurrency = worker
- worker = context
- context = null
- }
-
- var cache = reusify(Task)
- var queueHead = null
- var queueTail = null
- var _running = 0
-
- var self = {
- push: push,
- drain: noop,
- saturated: noop,
- pause: pause,
- paused: false,
- concurrency: concurrency,
- running: running,
- resume: resume,
- idle: idle,
- length: length,
- unshift: unshift,
- empty: noop,
- kill: kill,
- killAndDrain: killAndDrain
- }
-
- return self
-
- function running () {
- return _running
- }
-
- function pause () {
- self.paused = true
- }
-
- function length () {
- var current = queueHead
- var counter = 0
-
- while (current) {
- current = current.next
- counter++
- }
-
- return counter
- }
-
- function resume () {
- if (!self.paused) return
- self.paused = false
- for (var i = 0; i < self.concurrency; i++) {
- _running++
- release()
- }
- }
-
- function idle () {
- return _running === 0 && self.length() === 0
- }
-
- function push (value, done) {
- var current = cache.get()
-
- current.context = context
- current.release = release
- current.value = value
- current.callback = done || noop
-
- if (_running === self.concurrency || self.paused) {
- if (queueTail) {
- queueTail.next = current
- queueTail = current
- } else {
- queueHead = current
- queueTail = current
- self.saturated()
- }
- } else {
- _running++
- worker.call(context, current.value, current.worked)
- }
- }
-
- function unshift (value, done) {
- var current = cache.get()
-
- current.context = context
- current.release = release
- current.value = value
- current.callback = done || noop
-
- if (_running === self.concurrency || self.paused) {
- if (queueHead) {
- current.next = queueHead
- queueHead = current
- } else {
- queueHead = current
- queueTail = current
- self.saturated()
- }
- } else {
- _running++
- worker.call(context, current.value, current.worked)
- }
- }
-
- function release (holder) {
- if (holder) {
- cache.release(holder)
- }
- var next = queueHead
- if (next) {
- if (!self.paused) {
- if (queueTail === queueHead) {
- queueTail = null
- }
- queueHead = next.next
- next.next = null
- worker.call(context, next.value, next.worked)
- if (queueTail === null) {
- self.empty()
- }
- } else {
- _running--
- }
- } else if (--_running === 0) {
- self.drain()
- }
- }
-
- function kill () {
- queueHead = null
- queueTail = null
- self.drain = noop
- }
-
- function killAndDrain () {
- queueHead = null
- queueTail = null
- self.drain()
- self.drain = noop
- }
-}
-
-function noop () {}
-
-function Task () {
- this.value = null
- this.callback = noop
- this.next = null
- this.release = noop
- this.context = null
-
- var self = this
-
- this.worked = function worked (err, result) {
- var callback = self.callback
- self.value = null
- self.callback = noop
- callback.call(self.context, err, result)
- self.release(self)
- }
-}
-
-module.exports = fastqueue
diff --git a/assets/node_modules/fastq/test/example.ts b/assets/node_modules/fastq/test/example.ts
deleted file mode 100644
index b188d0c..0000000
--- a/assets/node_modules/fastq/test/example.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import * as fastq from '../'
-
-const queue = fastq({ hello: 'world' }, worker, 1)
-
-queue.push(42, (err, done) => {
- if (err) throw err
- console.log('the result is', done)
-})
-
-queue.concurrency
-
-queue.drain()
-
-queue.empty = () => undefined
-
-queue.idle()
-
-queue.kill()
-
-queue.killAndDrain()
-
-queue.length
-
-queue.pause()
-
-queue.resume()
-
-queue.saturated = () => undefined
-
-queue.unshift(42, (err, done) => {
- if (err) throw err
- console.log('the result is', done)
-})
-
-function worker(arg: any, cb: any) {
- cb(null, 42 * 2)
-}
diff --git a/assets/node_modules/fastq/test/test.js b/assets/node_modules/fastq/test/test.js
deleted file mode 100644
index 6ce9686..0000000
--- a/assets/node_modules/fastq/test/test.js
+++ /dev/null
@@ -1,482 +0,0 @@
-'use strict'
-
-var test = require('tape')
-var buildQueue = require('../')
-
-test('worker execution', function (t) {
- t.plan(3)
-
- var queue = buildQueue(worker, 1)
-
- queue.push(42, function (err, result) {
- t.error(err, 'no error')
- t.equal(result, true, 'result matches')
- })
-
- function worker (arg, cb) {
- t.equal(arg, 42)
- cb(null, true)
- }
-})
-
-test('limit', function (t) {
- t.plan(4)
-
- var expected = [10, 0]
- var queue = buildQueue(worker, 1)
-
- queue.push(10, result)
- queue.push(0, result)
-
- function result (err, arg) {
- t.error(err, 'no error')
- t.equal(arg, expected.shift(), 'the result matches')
- }
-
- function worker (arg, cb) {
- setTimeout(cb, arg, null, arg)
- }
-})
-
-test('multiple executions', function (t) {
- t.plan(15)
-
- var queue = buildQueue(worker, 1)
- var toExec = [1, 2, 3, 4, 5]
- var count = 0
-
- toExec.forEach(function (task) {
- queue.push(task, done)
- })
-
- function done (err, result) {
- t.error(err, 'no error')
- t.equal(result, toExec[count - 1], 'the result matches')
- }
-
- function worker (arg, cb) {
- t.equal(arg, toExec[count], 'arg matches')
- count++
- setImmediate(cb, null, arg)
- }
-})
-
-test('multiple executions, one after another', function (t) {
- t.plan(15)
-
- var queue = buildQueue(worker, 1)
- var toExec = [1, 2, 3, 4, 5]
- var count = 0
-
- queue.push(toExec[0], done)
-
- function done (err, result) {
- t.error(err, 'no error')
- t.equal(result, toExec[count - 1], 'the result matches')
- if (count < toExec.length) {
- queue.push(toExec[count], done)
- }
- }
-
- function worker (arg, cb) {
- console.log('received', arg)
- t.equal(arg, toExec[count], 'arg matches')
- count++
- setImmediate(cb, null, arg)
- }
-})
-
-test('set this', function (t) {
- t.plan(3)
-
- var that = {}
- var queue = buildQueue(that, worker, 1)
-
- queue.push(42, function (err, result) {
- t.error(err, 'no error')
- t.equal(this, that, 'this matches')
- })
-
- function worker (arg, cb) {
- t.equal(this, that, 'this matches')
- cb(null, true)
- }
-})
-
-test('drain', function (t) {
- t.plan(4)
-
- var queue = buildQueue(worker, 1)
- var worked = false
-
- queue.push(42, function (err, result) {
- t.error(err, 'no error')
- t.equal(result, true, 'result matches')
- })
-
- queue.drain = function () {
- t.equal(true, worked, 'drained')
- }
-
- function worker (arg, cb) {
- t.equal(arg, 42)
- worked = true
- setImmediate(cb, null, true)
- }
-})
-
-test('pause && resume', function (t) {
- t.plan(7)
-
- var queue = buildQueue(worker, 1)
- var worked = false
-
- t.notOk(queue.paused, 'it should not be paused')
-
- queue.pause()
-
- queue.push(42, function (err, result) {
- t.error(err, 'no error')
- t.equal(result, true, 'result matches')
- })
-
- t.notOk(worked, 'it should be paused')
- t.ok(queue.paused, 'it should be paused')
-
- queue.resume()
-
- t.notOk(queue.paused, 'it should not be paused')
-
- function worker (arg, cb) {
- t.equal(arg, 42)
- worked = true
- cb(null, true)
- }
-})
-
-test('altering concurrency', function (t) {
- t.plan(7)
-
- var queue = buildQueue(worker, 1)
- var count = 0
-
- queue.pause()
-
- queue.push(24, workDone)
- queue.push(24, workDone)
-
- queue.concurrency = 2
-
- queue.resume()
-
- t.equal(queue.running(), 2, '2 jobs running')
-
- function workDone (err, result) {
- t.error(err, 'no error')
- t.equal(result, true, 'result matches')
- }
-
- function worker (arg, cb) {
- t.equal(0, count, 'works in parallel')
- setImmediate(function () {
- count++
- cb(null, true)
- })
- }
-})
-
-test('idle()', function (t) {
- t.plan(12)
-
- var queue = buildQueue(worker, 1)
-
- t.ok(queue.idle(), 'queue is idle')
-
- queue.push(42, function (err, result) {
- t.error(err, 'no error')
- t.equal(result, true, 'result matches')
- t.notOk(queue.idle(), 'queue is not idle')
- })
-
- queue.push(42, function (err, result) {
- t.error(err, 'no error')
- t.equal(result, true, 'result matches')
- // it will go idle after executing this function
- setImmediate(function () {
- t.ok(queue.idle(), 'queue is now idle')
- })
- })
-
- t.notOk(queue.idle(), 'queue is not idle')
-
- function worker (arg, cb) {
- t.notOk(queue.idle(), 'queue is not idle')
- t.equal(arg, 42)
- setImmediate(cb, null, true)
- }
-})
-
-test('saturated', function (t) {
- t.plan(9)
-
- var queue = buildQueue(worker, 1)
- var preworked = 0
- var worked = 0
-
- queue.saturated = function () {
- t.pass('saturated')
- t.equal(preworked, 1, 'started 1 task')
- t.equal(worked, 0, 'worked zero task')
- }
-
- queue.push(42, done)
- queue.push(42, done)
-
- function done (err, result) {
- t.error(err, 'no error')
- t.equal(result, true, 'result matches')
- }
-
- function worker (arg, cb) {
- t.equal(arg, 42)
- preworked++
- setImmediate(function () {
- worked++
- cb(null, true)
- })
- }
-})
-
-test('length', function (t) {
- t.plan(7)
-
- var queue = buildQueue(worker, 1)
-
- t.equal(queue.length(), 0, 'nothing waiting')
- queue.push(42, done)
- t.equal(queue.length(), 0, 'nothing waiting')
- queue.push(42, done)
- t.equal(queue.length(), 1, 'one task waiting')
- queue.push(42, done)
- t.equal(queue.length(), 2, 'two tasks waiting')
-
- function done (err, result) {
- t.error(err, 'no error')
- }
-
- function worker (arg, cb) {
- setImmediate(function () {
- cb(null, true)
- })
- }
-})
-
-test('unshift', function (t) {
- t.plan(8)
-
- var queue = buildQueue(worker, 1)
- var expected = [1, 2, 3, 4]
-
- queue.push(1, done)
- queue.push(4, done)
- queue.unshift(3, done)
- queue.unshift(2, done)
-
- function done (err, result) {
- t.error(err, 'no error')
- }
-
- function worker (arg, cb) {
- t.equal(expected.shift(), arg, 'tasks come in order')
- setImmediate(function () {
- cb(null, true)
- })
- }
-})
-
-test('unshift && empty', function (t) {
- t.plan(2)
-
- var queue = buildQueue(worker, 1)
- var completed = false
-
- queue.pause()
-
- queue.empty = function () {
- t.notOk(completed, 'the task has not completed yet')
- }
-
- queue.unshift(1, done)
-
- queue.resume()
-
- function done (err, result) {
- completed = true
- t.error(err, 'no error')
- }
-
- function worker (arg, cb) {
- setImmediate(function () {
- cb(null, true)
- })
- }
-})
-
-test('push && empty', function (t) {
- t.plan(2)
-
- var queue = buildQueue(worker, 1)
- var completed = false
-
- queue.pause()
-
- queue.empty = function () {
- t.notOk(completed, 'the task has not completed yet')
- }
-
- queue.push(1, done)
-
- queue.resume()
-
- function done (err, result) {
- completed = true
- t.error(err, 'no error')
- }
-
- function worker (arg, cb) {
- setImmediate(function () {
- cb(null, true)
- })
- }
-})
-
-test('kill', function (t) {
- t.plan(5)
-
- var queue = buildQueue(worker, 1)
- var expected = [1]
-
- var predrain = queue.drain
-
- queue.drain = function drain () {
- t.fail('drain should never be called')
- }
-
- queue.push(1, done)
- queue.push(4, done)
- queue.unshift(3, done)
- queue.unshift(2, done)
- queue.kill()
-
- function done (err, result) {
- t.error(err, 'no error')
- setImmediate(function () {
- t.equal(queue.length(), 0, 'no queued tasks')
- t.equal(queue.running(), 0, 'no running tasks')
- t.equal(queue.drain, predrain, 'drain is back to default')
- })
- }
-
- function worker (arg, cb) {
- t.equal(expected.shift(), arg, 'tasks come in order')
- setImmediate(function () {
- cb(null, true)
- })
- }
-})
-
-test('killAndDrain', function (t) {
- t.plan(6)
-
- var queue = buildQueue(worker, 1)
- var expected = [1]
-
- var predrain = queue.drain
-
- queue.drain = function drain () {
- t.pass('drain has been called')
- }
-
- queue.push(1, done)
- queue.push(4, done)
- queue.unshift(3, done)
- queue.unshift(2, done)
- queue.killAndDrain()
-
- function done (err, result) {
- t.error(err, 'no error')
- setImmediate(function () {
- t.equal(queue.length(), 0, 'no queued tasks')
- t.equal(queue.running(), 0, 'no running tasks')
- t.equal(queue.drain, predrain, 'drain is back to default')
- })
- }
-
- function worker (arg, cb) {
- t.equal(expected.shift(), arg, 'tasks come in order')
- setImmediate(function () {
- cb(null, true)
- })
- }
-})
-
-test('pause && idle', function (t) {
- t.plan(11)
-
- var queue = buildQueue(worker, 1)
- var worked = false
-
- t.notOk(queue.paused, 'it should not be paused')
- t.ok(queue.idle(), 'should be idle')
-
- queue.pause()
-
- queue.push(42, function (err, result) {
- t.error(err, 'no error')
- t.equal(result, true, 'result matches')
- })
-
- t.notOk(worked, 'it should be paused')
- t.ok(queue.paused, 'it should be paused')
- t.notOk(queue.idle(), 'should not be idle')
-
- queue.resume()
-
- t.notOk(queue.paused, 'it should not be paused')
- t.notOk(queue.idle(), 'it should not be idle')
-
- function worker (arg, cb) {
- t.equal(arg, 42)
- worked = true
- process.nextTick(cb.bind(null, null, true))
- process.nextTick(function () {
- t.ok(queue.idle(), 'is should be idle')
- })
- }
-})
-
-test('push without cb', function (t) {
- t.plan(1)
-
- var queue = buildQueue(worker, 1)
-
- queue.push(42)
-
- function worker (arg, cb) {
- t.equal(arg, 42)
- cb()
- }
-})
-
-test('unshift without cb', function (t) {
- t.plan(1)
-
- var queue = buildQueue(worker, 1)
-
- queue.unshift(42)
-
- function worker (arg, cb) {
- t.equal(arg, 42)
- cb()
- }
-})
diff --git a/assets/node_modules/fastq/test/tsconfig.json b/assets/node_modules/fastq/test/tsconfig.json
deleted file mode 100644
index 66f6bd4..0000000
--- a/assets/node_modules/fastq/test/tsconfig.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "compilerOptions": {
- "target": "es6",
- "module": "commonjs",
- "noEmit": true,
- "strict": true,
- },
- "files": [
- "./example.ts"
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/file-entry-cache/LICENSE b/assets/node_modules/file-entry-cache/LICENSE
deleted file mode 100644
index c58c339..0000000
--- a/assets/node_modules/file-entry-cache/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Roy Riojas
-
-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/assets/node_modules/file-entry-cache/README.md b/assets/node_modules/file-entry-cache/README.md
deleted file mode 100644
index 854a512..0000000
--- a/assets/node_modules/file-entry-cache/README.md
+++ /dev/null
@@ -1,112 +0,0 @@
-# file-entry-cache
-> Super simple cache for file metadata, useful for process that work o a given series of files
-> and that only need to repeat the job on the changed ones since the previous run of the process — Edit
-
-[![NPM Version](http://img.shields.io/npm/v/file-entry-cache.svg?style=flat)](https://npmjs.org/package/file-entry-cache)
-[![Build Status](http://img.shields.io/travis/royriojas/file-entry-cache.svg?style=flat)](https://travis-ci.org/royriojas/file-entry-cache)
-
-## install
-
-```bash
-npm i --save file-entry-cache
-```
-
-## Usage
-
-The module exposes two functions `create` and `createFromFile`.
-
-## `create(cacheName, [directory, useCheckSum])`
-- **cacheName**: the name of the cache to be created
-- **directory**: Optional the directory to load the cache from
-- **usecheckSum**: Whether to use md5 checksum to verify if file changed. If false the default will be to use the mtime and size of the file.
-
-## `createFromFile(pathToCache, [useCheckSum])`
-- **pathToCache**: the path to the cache file (this combines the cache name and directory)
-- **useCheckSum**: Whether to use md5 checksum to verify if file changed. If false the default will be to use the mtime and size of the file.
-
-```js
-// loads the cache, if one does not exists for the given
-// Id a new one will be prepared to be created
-var fileEntryCache = require('file-entry-cache');
-
-var cache = fileEntryCache.create('testCache');
-
-var files = expand('../fixtures/*.txt');
-
-// the first time this method is called, will return all the files
-var oFiles = cache.getUpdatedFiles(files);
-
-// this will persist this to disk checking each file stats and
-// updating the meta attributes `size` and `mtime`.
-// custom fields could also be added to the meta object and will be persisted
-// in order to retrieve them later
-cache.reconcile();
-
-// use this if you want the non visited file entries to be kept in the cache
-// for more than one execution
-//
-// cache.reconcile( true /* noPrune */)
-
-// on a second run
-var cache2 = fileEntryCache.create('testCache');
-
-// will return now only the files that were modified or none
-// if no files were modified previous to the execution of this function
-var oFiles = cache.getUpdatedFiles(files);
-
-// if you want to prevent a file from being considered non modified
-// something useful if a file failed some sort of validation
-// you can then remove the entry from the cache doing
-cache.removeEntry('path/to/file'); // path to file should be the same path of the file received on `getUpdatedFiles`
-// that will effectively make the file to appear again as modified until the validation is passed. In that
-// case you should not remove it from the cache
-
-// if you need all the files, so you can determine what to do with the changed ones
-// you can call
-var oFiles = cache.normalizeEntries(files);
-
-// oFiles will be an array of objects like the following
-entry = {
- key: 'some/name/file', the path to the file
- changed: true, // if the file was changed since previous run
- meta: {
- size: 3242, // the size of the file
- mtime: 231231231, // the modification time of the file
- data: {} // some extra field stored for this file (useful to save the result of a transformation on the file
- }
-}
-
-```
-
-## Motivation for this module
-
-I needed a super simple and dumb **in-memory cache** with optional disk persistence (write-back cache) in order to make
-a script that will beautify files with `esformatter` to execute only on the files that were changed since the last run.
-
-In doing so the process of beautifying files was reduced from several seconds to a small fraction of a second.
-
-This module uses [flat-cache](https://www.npmjs.com/package/flat-cache) a super simple `key/value` cache storage with
-optional file persistance.
-
-The main idea is to read the files when the task begins, apply the transforms required, and if the process succeed,
-then store the new state of the files. The next time this module request for `getChangedFiles` will return only
-the files that were modified. Making the process to end faster.
-
-This module could also be used by processes that modify the files applying a transform, in that case the result of the
-transform could be stored in the `meta` field, of the entries. Anything added to the meta field will be persisted.
-Those processes won't need to call `getChangedFiles` they will instead call `normalizeEntries` that will return the
-entries with a `changed` field that can be used to determine if the file was changed or not. If it was not changed
-the transformed stored data could be used instead of actually applying the transformation, saving time in case of only
-a few files changed.
-
-In the worst case scenario all the files will be processed. In the best case scenario only a few of them will be processed.
-
-## Important notes
-- The values set on the meta attribute of the entries should be `stringify-able` ones if possible, flat-cache uses `circular-json` to try to persist circular structures, but this should be considered experimental. The best results are always obtained with non circular values
-- All the changes to the cache state are done to memory first and only persisted after reconcile.
-
-## License
-
-MIT
-
-
diff --git a/assets/node_modules/file-entry-cache/cache.js b/assets/node_modules/file-entry-cache/cache.js
deleted file mode 100644
index ebc6386..0000000
--- a/assets/node_modules/file-entry-cache/cache.js
+++ /dev/null
@@ -1,286 +0,0 @@
-var path = require( 'path' );
-var crypto = require( 'crypto' );
-
-module.exports = {
- createFromFile: function ( filePath, useChecksum ) {
- var fname = path.basename( filePath );
- var dir = path.dirname( filePath );
- return this.create( fname, dir, useChecksum );
- },
-
- create: function ( cacheId, _path, useChecksum ) {
- var fs = require( 'fs' );
- var flatCache = require( 'flat-cache' );
- var cache = flatCache.load( cacheId, _path );
- var normalizedEntries = { };
-
- var removeNotFoundFiles = function removeNotFoundFiles() {
- const cachedEntries = cache.keys();
- // remove not found entries
- cachedEntries.forEach( function remover( fPath ) {
- try {
- fs.statSync( fPath );
- } catch (err) {
- if ( err.code === 'ENOENT' ) {
- cache.removeKey( fPath );
- }
- }
- } );
- };
-
- removeNotFoundFiles();
-
- return {
- /**
- * the flat cache storage used to persist the metadata of the `files
- * @type {Object}
- */
- cache: cache,
-
- /**
- * Given a buffer, calculate md5 hash of its content.
- * @method getHash
- * @param {Buffer} buffer buffer to calculate hash on
- * @return {String} content hash digest
- */
- getHash: function ( buffer ) {
- return crypto
- .createHash( 'md5' )
- .update( buffer )
- .digest( 'hex' );
- },
-
- /**
- * Return whether or not a file has changed since last time reconcile was called.
- * @method hasFileChanged
- * @param {String} file the filepath to check
- * @return {Boolean} wheter or not the file has changed
- */
- hasFileChanged: function ( file ) {
- return this.getFileDescriptor( file ).changed;
- },
-
- /**
- * given an array of file paths it return and object with three arrays:
- * - changedFiles: Files that changed since previous run
- * - notChangedFiles: Files that haven't change
- * - notFoundFiles: Files that were not found, probably deleted
- *
- * @param {Array} files the files to analyze and compare to the previous seen files
- * @return {[type]} [description]
- */
- analyzeFiles: function ( files ) {
- var me = this;
- files = files || [ ];
-
- var res = {
- changedFiles: [],
- notFoundFiles: [],
- notChangedFiles: []
- };
-
- me.normalizeEntries( files ).forEach( function ( entry ) {
- if ( entry.changed ) {
- res.changedFiles.push( entry.key );
- return;
- }
- if ( entry.notFound ) {
- res.notFoundFiles.push( entry.key );
- return;
- }
- res.notChangedFiles.push( entry.key );
- } );
- return res;
- },
-
- getFileDescriptor: function ( file ) {
- var fstat;
-
- try {
- fstat = fs.statSync( file );
- } catch (ex) {
- this.removeEntry( file );
- return { key: file, notFound: true, err: ex };
- }
-
- if ( useChecksum ) {
- return this._getFileDescriptorUsingChecksum( file );
- }
-
- return this._getFileDescriptorUsingMtimeAndSize( file, fstat );
- },
-
- _getFileDescriptorUsingMtimeAndSize: function ( file, fstat ) {
- var meta = cache.getKey( file );
- var cacheExists = !!meta;
-
- var cSize = fstat.size;
- var cTime = fstat.mtime.getTime();
-
- var isDifferentDate;
- var isDifferentSize;
-
- if ( !meta ) {
- meta = { size: cSize, mtime: cTime };
- } else {
- isDifferentDate = cTime !== meta.mtime;
- isDifferentSize = cSize !== meta.size;
- }
-
- var nEntry = normalizedEntries[ file ] = {
- key: file,
- changed: !cacheExists || isDifferentDate || isDifferentSize,
- meta: meta
- };
-
- return nEntry;
- },
-
- _getFileDescriptorUsingChecksum: function ( file ) {
- var meta = cache.getKey( file );
- var cacheExists = !!meta;
-
- var contentBuffer;
- try {
- contentBuffer = fs.readFileSync( file );
- } catch (ex) {
- contentBuffer = '';
- }
-
- var isDifferent = true;
- var hash = this.getHash( contentBuffer );
-
- if ( !meta ) {
- meta = { hash: hash };
- } else {
- isDifferent = hash !== meta.hash;
- }
-
- var nEntry = normalizedEntries[ file ] = {
- key: file,
- changed: !cacheExists || isDifferent,
- meta: meta
- };
-
- return nEntry;
- },
-
- /**
- * Return the list o the files that changed compared
- * against the ones stored in the cache
- *
- * @method getUpdated
- * @param files {Array} the array of files to compare against the ones in the cache
- * @returns {Array}
- */
- getUpdatedFiles: function ( files ) {
- var me = this;
- files = files || [ ];
-
- return me.normalizeEntries( files ).filter( function ( entry ) {
- return entry.changed;
- } ).map( function ( entry ) {
- return entry.key;
- } );
- },
-
- /**
- * return the list of files
- * @method normalizeEntries
- * @param files
- * @returns {*}
- */
- normalizeEntries: function ( files ) {
- files = files || [ ];
-
- var me = this;
- var nEntries = files.map( function ( file ) {
- return me.getFileDescriptor( file );
- } );
-
- //normalizeEntries = nEntries;
- return nEntries;
- },
-
- /**
- * Remove an entry from the file-entry-cache. Useful to force the file to still be considered
- * modified the next time the process is run
- *
- * @method removeEntry
- * @param entryName
- */
- removeEntry: function ( entryName ) {
- delete normalizedEntries[ entryName ];
- cache.removeKey( entryName );
- },
-
- /**
- * Delete the cache file from the disk
- * @method deleteCacheFile
- */
- deleteCacheFile: function () {
- cache.removeCacheFile();
- },
-
- /**
- * remove the cache from the file and clear the memory cache
- */
- destroy: function () {
- normalizedEntries = { };
- cache.destroy();
- },
-
- _getMetaForFileUsingCheckSum: function ( cacheEntry ) {
- var contentBuffer = fs.readFileSync( cacheEntry.key );
- var hash = this.getHash( contentBuffer );
- var meta = Object.assign( cacheEntry.meta, { hash: hash } );
- return meta;
- },
-
- _getMetaForFileUsingMtimeAndSize: function ( cacheEntry ) {
- var stat = fs.statSync( cacheEntry.key );
- var meta = Object.assign( cacheEntry.meta, {
- size: stat.size,
- mtime: stat.mtime.getTime()
- } );
- return meta;
- },
-
- /**
- * Sync the files and persist them to the cache
- * @method reconcile
- */
- reconcile: function ( noPrune ) {
- removeNotFoundFiles();
-
- noPrune = typeof noPrune === 'undefined' ? true : noPrune;
-
- var entries = normalizedEntries;
- var keys = Object.keys( entries );
-
- if ( keys.length === 0 ) {
- return;
- }
-
- var me = this;
-
- keys.forEach( function ( entryName ) {
- var cacheEntry = entries[ entryName ];
-
- try {
- var meta = useChecksum ? me._getMetaForFileUsingCheckSum( cacheEntry ) : me._getMetaForFileUsingMtimeAndSize( cacheEntry );
- cache.setKey( entryName, meta );
- } catch (err) {
- // if the file does not exists we don't save it
- // other errors are just thrown
- if ( err.code !== 'ENOENT' ) {
- throw err;
- }
- }
- } );
-
- cache.save( noPrune );
- }
- };
- }
-};
diff --git a/assets/node_modules/file-entry-cache/changelog.md b/assets/node_modules/file-entry-cache/changelog.md
deleted file mode 100644
index 52a8642..0000000
--- a/assets/node_modules/file-entry-cache/changelog.md
+++ /dev/null
@@ -1,141 +0,0 @@
-
-# file-entry-cache - Changelog
-## v5.0.1
-- **Bug Fixes**
- - Fix missing checksum comparison from reconcile since now we use mtime and size by default. - [e858aa9]( https://github.com/royriojas/file-entry-cache/commit/e858aa9 ), [Roy Riojas](https://github.com/Roy Riojas), 04/02/2019 12:30:22
-
- Old mode using checkSum can still be used by passing the `useCheckSum` parameter to the `create` or `createFromFile` methods.
-
-## v5.0.0
-- **Refactoring**
- - Make checksum comparison optional - [b0f9ae0]( https://github.com/royriojas/file-entry-cache/commit/b0f9ae0 ), [Roy Riojas](https://github.com/Roy Riojas), 03/02/2019 21:17:39
-
- To determine if a file has changed we were using the checksum in the newer versions, but eslint was relying on the old behavior where we use the mtime and file size to determine if a file changed. That's why we decided to make the checksum check optional.
-
- To use it:
-
- ```js
- // to make the cache use the checkSum check do the following:
- var fCache = fileEntryCache.create(cacheName, dir, useCheckSum); // pass the third parameter as true
- var otherCache = fileEntryCache.createFromFile(cacheName, useCheckSum); // pass the second parameter as true
- ```
-
-## v4.0.0
-- **Build Scripts Changes**
- - use the same node versions eslint use - [563cfee]( https://github.com/royriojas/file-entry-cache/commit/563cfee ), [Roy Riojas](https://github.com/Roy Riojas), 08/01/2019 23:29:34
-
-
-- **Other changes**
- - Remove object-assign dependency. - [d0f598e]( https://github.com/royriojas/file-entry-cache/commit/d0f598e ), [Corey Farrell](https://github.com/Corey Farrell), 08/01/2019 23:09:51
-
- node.js >=4 is required so object-assign is no longer needed, the native
- Object.assign can be used instead.
-
-## v3.0.0
-- **Build Scripts Changes**
- - Upgrade flat-cache dep to latest - [078b0df]( https://github.com/royriojas/file-entry-cache/commit/078b0df ), [Roy Riojas](https://github.com/Roy Riojas), 08/01/2019 21:54:40
-
-
- - Commit new package-lock.json file - [245fe62]( https://github.com/royriojas/file-entry-cache/commit/245fe62 ), [Roy Riojas](https://github.com/Roy Riojas), 08/01/2019 20:56:21
-
-
-- **Refactoring**
- - add eslintrc file - [6dd32d8]( https://github.com/royriojas/file-entry-cache/commit/6dd32d8 ), [Roy Riojas](https://github.com/Roy Riojas), 22/08/2018 11:58:17
-
-
-- **Other changes**
- - Move variable definition out of else block - [ea05441]( https://github.com/royriojas/file-entry-cache/commit/ea05441 ), [Zakhar Shapurau](https://github.com/Zakhar Shapurau), 25/04/2017 13:19:00
-
-
- - Add script and cmd to test hash/checksum performance - [7f60e0a]( https://github.com/royriojas/file-entry-cache/commit/7f60e0a ), [Zakhar Shapurau](https://github.com/Zakhar Shapurau), 24/04/2017 16:43:12
-
-
- - Calculate md5 hexdigest instead of Adler-32 checksum - [f9e5c69]( https://github.com/royriojas/file-entry-cache/commit/f9e5c69 ), [Zakhar Shapurau](https://github.com/Zakhar Shapurau), 24/04/2017 16:43:12
-
-
- - How to reproduce - [4edc2dc]( https://github.com/royriojas/file-entry-cache/commit/4edc2dc ), [Zakhar Shapurau](https://github.com/Zakhar Shapurau), 24/04/2017 15:49:32
-
-
- - Test handling of removed files - [09d9ec5]( https://github.com/royriojas/file-entry-cache/commit/09d9ec5 ), [Zakhar Shapurau](https://github.com/Zakhar Shapurau), 19/04/2017 21:51:50
-
-
- - Use content checksum instead of mtime and fsize - [343b340]( https://github.com/royriojas/file-entry-cache/commit/343b340 ), [Zakhar Shapurau](https://github.com/Zakhar Shapurau), 19/04/2017 21:51:47
-
-
-- **Revert**
- - Revert "How to reproduce" - [4b4e54a]( https://github.com/royriojas/file-entry-cache/commit/4b4e54a ), [Zakhar Shapurau](https://github.com/Zakhar Shapurau), 25/04/2017 13:15:36
-
- This reverts commit 4edc2dcec01574247bfc2e0a2fe26527332b7df3.
-
-## v2.0.0
-- **Features**
- - do not persist and prune removed files from cache. Relates to [#2](https://github.com/royriojas/file-entry-cache/issues/2) - [408374d]( https://github.com/royriojas/file-entry-cache/commit/408374d ), [Roy Riojas](https://github.com/Roy Riojas), 16/08/2016 15:47:58
-
-
-## v1.3.1
-- **Build Scripts Changes**
- - remove older node version - [0a26ac4]( https://github.com/royriojas/file-entry-cache/commit/0a26ac4 ), [Roy Riojas](https://github.com/Roy Riojas), 01/08/2016 06:09:17
-
-
-## v1.3.0
-- **Features**
- - Add an option to not prune non visited keys. Closes [#2](https://github.com/royriojas/file-entry-cache/issues/2) - [b1a64db]( https://github.com/royriojas/file-entry-cache/commit/b1a64db ), [Roy Riojas](https://github.com/Roy Riojas), 01/08/2016 05:52:12
-
-
-## v1.2.4
-- **Enhancements**
- - Expose the flat-cache instance - [f34c557]( https://github.com/royriojas/file-entry-cache/commit/f34c557 ), [royriojas](https://github.com/royriojas), 23/09/2015 20:26:33
-
-
-## v1.2.3
-- **Build Scripts Changes**
- - update flat-cache dep - [cc7b9ce]( https://github.com/royriojas/file-entry-cache/commit/cc7b9ce ), [royriojas](https://github.com/royriojas), 11/09/2015 18:04:44
-
-
-## v1.2.2
-- **Build Scripts Changes**
- - Add changelogx section to package.json - [a3916ff]( https://github.com/royriojas/file-entry-cache/commit/a3916ff ), [royriojas](https://github.com/royriojas), 11/09/2015 18:00:26
-
-
-## v1.2.1
-- **Build Scripts Changes**
- - update flat-cache dep - [e49b0d4]( https://github.com/royriojas/file-entry-cache/commit/e49b0d4 ), [royriojas](https://github.com/royriojas), 11/09/2015 17:55:25
-
-
-- **Other changes**
- - Update dependencies Replaced lodash.assign with smaller object-assign Fixed tests for windows - [0ad3000]( https://github.com/royriojas/file-entry-cache/commit/0ad3000 ), [Bogdan Chadkin](https://github.com/Bogdan Chadkin), 11/09/2015 17:44:18
-
-
-## v1.2.0
-- **Features**
- - analyzeFiles now returns also the files that were removed - [6ac2431]( https://github.com/royriojas/file-entry-cache/commit/6ac2431 ), [royriojas](https://github.com/royriojas), 04/09/2015 14:40:53
-
-
-## v1.1.1
-- **Features**
- - Add method to check if a file hasChanged - [3640e2b]( https://github.com/royriojas/file-entry-cache/commit/3640e2b ), [Roy Riojas](https://github.com/Roy Riojas), 30/08/2015 07:33:32
-
-
-## v1.1.0
-- **Features**
- - Create the cache directly from a file path - [a23de61]( https://github.com/royriojas/file-entry-cache/commit/a23de61 ), [Roy Riojas](https://github.com/Roy Riojas), 30/08/2015 06:41:33
-
-
- - Add a method to remove an entry from the filecache - [7af29fc]( https://github.com/royriojas/file-entry-cache/commit/7af29fc ), [Roy Riojas](https://github.com/Roy Riojas), 03/03/2015 02:25:32
-
-
- - cache module finished - [1f95544]( https://github.com/royriojas/file-entry-cache/commit/1f95544 ), [Roy Riojas](https://github.com/Roy Riojas), 02/03/2015 04:08:08
-
-
-- **Build Scripts Changes**
- - set the version for the first release - [7472eaa]( https://github.com/royriojas/file-entry-cache/commit/7472eaa ), [Roy Riojas](https://github.com/Roy Riojas), 02/03/2015 04:29:54
-
-
-- **Documentation**
- - Updated documentation - [557358f]( https://github.com/royriojas/file-entry-cache/commit/557358f ), [Roy Riojas](https://github.com/Roy Riojas), 02/03/2015 04:29:29
-
-
-- **Other changes**
- - Initial commit - [3d5f42b]( https://github.com/royriojas/file-entry-cache/commit/3d5f42b ), [Roy Riojas](https://github.com/Roy Riojas), 02/03/2015 00:58:29
-
-
diff --git a/assets/node_modules/file-entry-cache/package.json b/assets/node_modules/file-entry-cache/package.json
deleted file mode 100644
index c8a7206..0000000
--- a/assets/node_modules/file-entry-cache/package.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "file-entry-cache",
- "version": "5.0.1",
- "description": "Super simple cache for file metadata, useful for process that work o a given series of files and that only need to repeat the job on the changed ones since the previous run of the process",
- "repository": "royriojas/file-entry-cache",
- "license": "MIT",
- "author": {
- "name": "Roy Riojas",
- "url": "http://royriojas.com"
- },
- "main": "cache.js",
- "files": [
- "cache.js"
- ],
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "beautify": "esbeautifier 'cache.js' 'test/**/*.js' 'perf.js'",
- "beautify-check": "npm run beautify -- -k",
- "eslint": "eslinter 'cache.js' 'specs/**/*.js' 'perf.js'",
- "lint": "npm run beautify && npm run eslint",
- "verify": "npm run beautify-check && npm run eslint",
- "install-hooks": "prepush install && changelogx install-hook && precommit install",
- "changelog": "changelogx -f markdown -o ./changelog.md",
- "do-changelog": "npm run changelog && git add ./changelog.md && git commit -m 'DOC: Generate changelog' --no-verify",
- "pre-v": "npm run test",
- "post-v": "npm run do-changelog && git push --no-verify && git push --tags --no-verify",
- "bump-major": "npm run pre-v && npm version major -m 'BLD: Release v%s' && npm run post-v",
- "bump-minor": "npm run pre-v && npm version minor -m 'BLD: Release v%s' && npm run post-v",
- "bump-patch": "npm run pre-v && npm version patch -m 'BLD: Release v%s' && npm run post-v",
- "test": "npm run verify --silent && mocha -R spec test/specs",
- "perf": "node perf.js",
- "cover": "istanbul cover test/runner.js html text-summary",
- "watch": "watch-run -i -p 'test/specs/**/*.js' istanbul cover test/runner.js html text-summary"
- },
- "prepush": [
- "npm run verify"
- ],
- "precommit": [
- "npm run verify"
- ],
- "keywords": [
- "file cache",
- "task cache files",
- "file cache",
- "key par",
- "key value",
- "cache"
- ],
- "changelogx": {
- "ignoreRegExp": [
- "BLD: Release",
- "DOC: Generate Changelog",
- "Generated Changelog"
- ],
- "issueIDRegExp": "#(\\d+)",
- "commitURL": "https://github.com/royriojas/file-entry-cache/commit/{0}",
- "authorURL": "https://github.com/{0}",
- "issueIDURL": "https://github.com/royriojas/file-entry-cache/issues/{0}",
- "projectName": "file-entry-cache"
- },
- "devDependencies": {
- "chai": "^3.2.0",
- "changelogx": "3.0.0",
- "commander": "^2.6.0",
- "del": "^2.0.2",
- "esbeautifier": "^4.2.11",
- "eslinter": "^2.3.3",
- "glob-expand": "^0.1.0",
- "istanbul": "^0.3.6",
- "mocha": "^2.1.0",
- "precommit": "^1.1.5",
- "prepush": "^3.1.4",
- "proxyquire": "^1.3.1",
- "sinon": "^1.12.2",
- "sinon-chai": "^2.7.0",
- "watch-run": "^1.2.1",
- "write": "^0.3.1"
- },
- "dependencies": {
- "flat-cache": "^2.0.1"
- }
-}
diff --git a/assets/node_modules/fill-range/LICENSE b/assets/node_modules/fill-range/LICENSE
deleted file mode 100644
index 9af4a67..0000000
--- a/assets/node_modules/fill-range/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-present, Jon Schlinkert.
-
-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/assets/node_modules/fill-range/README.md b/assets/node_modules/fill-range/README.md
deleted file mode 100644
index 8d756fe..0000000
--- a/assets/node_modules/fill-range/README.md
+++ /dev/null
@@ -1,237 +0,0 @@
-# fill-range [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [![NPM version](https://img.shields.io/npm/v/fill-range.svg?style=flat)](https://www.npmjs.com/package/fill-range) [![NPM monthly downloads](https://img.shields.io/npm/dm/fill-range.svg?style=flat)](https://npmjs.org/package/fill-range) [![NPM total downloads](https://img.shields.io/npm/dt/fill-range.svg?style=flat)](https://npmjs.org/package/fill-range) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/fill-range.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/fill-range)
-
-> Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save fill-range
-```
-
-## Usage
-
-Expands numbers and letters, optionally using a `step` as the last argument. _(Numbers may be defined as JavaScript numbers or strings)_.
-
-```js
-const fill = require('fill-range');
-// fill(from, to[, step, options]);
-
-console.log(fill('1', '10')); //=> ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
-console.log(fill('1', '10', { toRegex: true })); //=> [1-9]|10
-```
-
-**Params**
-
-* `from`: **{String|Number}** the number or letter to start with
-* `to`: **{String|Number}** the number or letter to end with
-* `step`: **{String|Number|Object|Function}** Optionally pass a [step](#optionsstep) to use.
-* `options`: **{Object|Function}**: See all available [options](#options)
-
-## Examples
-
-By default, an array of values is returned.
-
-**Alphabetical ranges**
-
-```js
-console.log(fill('a', 'e')); //=> ['a', 'b', 'c', 'd', 'e']
-console.log(fill('A', 'E')); //=> [ 'A', 'B', 'C', 'D', 'E' ]
-```
-
-**Numerical ranges**
-
-Numbers can be defined as actual numbers or strings.
-
-```js
-console.log(fill(1, 5)); //=> [ 1, 2, 3, 4, 5 ]
-console.log(fill('1', '5')); //=> [ 1, 2, 3, 4, 5 ]
-```
-
-**Negative ranges**
-
-Numbers can be defined as actual numbers or strings.
-
-```js
-console.log(fill('-5', '-1')); //=> [ '-5', '-4', '-3', '-2', '-1' ]
-console.log(fill('-5', '5')); //=> [ '-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4', '5' ]
-```
-
-**Steps (increments)**
-
-```js
-// numerical ranges with increments
-console.log(fill('0', '25', 4)); //=> [ '0', '4', '8', '12', '16', '20', '24' ]
-console.log(fill('0', '25', 5)); //=> [ '0', '5', '10', '15', '20', '25' ]
-console.log(fill('0', '25', 6)); //=> [ '0', '6', '12', '18', '24' ]
-
-// alphabetical ranges with increments
-console.log(fill('a', 'z', 4)); //=> [ 'a', 'e', 'i', 'm', 'q', 'u', 'y' ]
-console.log(fill('a', 'z', 5)); //=> [ 'a', 'f', 'k', 'p', 'u', 'z' ]
-console.log(fill('a', 'z', 6)); //=> [ 'a', 'g', 'm', 's', 'y' ]
-```
-
-## Options
-
-### options.step
-
-**Type**: `number` (formatted as a string or number)
-
-**Default**: `undefined`
-
-**Description**: The increment to use for the range. Can be used with letters or numbers.
-
-**Example(s)**
-
-```js
-// numbers
-console.log(fill('1', '10', 2)); //=> [ '1', '3', '5', '7', '9' ]
-console.log(fill('1', '10', 3)); //=> [ '1', '4', '7', '10' ]
-console.log(fill('1', '10', 4)); //=> [ '1', '5', '9' ]
-
-// letters
-console.log(fill('a', 'z', 5)); //=> [ 'a', 'f', 'k', 'p', 'u', 'z' ]
-console.log(fill('a', 'z', 7)); //=> [ 'a', 'h', 'o', 'v' ]
-console.log(fill('a', 'z', 9)); //=> [ 'a', 'j', 's' ]
-```
-
-### options.strictRanges
-
-**Type**: `boolean`
-
-**Default**: `false`
-
-**Description**: By default, `null` is returned when an invalid range is passed. Enable this option to throw a `RangeError` on invalid ranges.
-
-**Example(s)**
-
-The following are all invalid:
-
-```js
-fill('1.1', '2'); // decimals not supported in ranges
-fill('a', '2'); // incompatible range values
-fill(1, 10, 'foo'); // invalid "step" argument
-```
-
-### options.stringify
-
-**Type**: `boolean`
-
-**Default**: `undefined`
-
-**Description**: Cast all returned values to strings. By default, integers are returned as numbers.
-
-**Example(s)**
-
-```js
-console.log(fill(1, 5)); //=> [ 1, 2, 3, 4, 5 ]
-console.log(fill(1, 5, { stringify: true })); //=> [ '1', '2', '3', '4', '5' ]
-```
-
-### options.toRegex
-
-**Type**: `boolean`
-
-**Default**: `undefined`
-
-**Description**: Create a regex-compatible source string, instead of expanding values to an array.
-
-**Example(s)**
-
-```js
-// alphabetical range
-console.log(fill('a', 'e', { toRegex: true })); //=> '[a-e]'
-// alphabetical with step
-console.log(fill('a', 'z', 3, { toRegex: true })); //=> 'a|d|g|j|m|p|s|v|y'
-// numerical range
-console.log(fill('1', '100', { toRegex: true })); //=> '[1-9]|[1-9][0-9]|100'
-// numerical range with zero padding
-console.log(fill('000001', '100000', { toRegex: true }));
-//=> '0{5}[1-9]|0{4}[1-9][0-9]|0{3}[1-9][0-9]{2}|0{2}[1-9][0-9]{3}|0[1-9][0-9]{4}|100000'
-```
-
-### options.transform
-
-**Type**: `function`
-
-**Default**: `undefined`
-
-**Description**: Customize each value in the returned array (or [string](#optionstoRegex)). _(you can also pass this function as the last argument to `fill()`)_.
-
-**Example(s)**
-
-```js
-// add zero padding
-console.log(fill(1, 5, value => String(value).padStart(4, '0')));
-//=> ['0001', '0002', '0003', '0004', '0005']
-```
-
-## About
-
-<details>
-<summary><strong>Contributing</strong></summary>
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-</details>
-
-<details>
-<summary><strong>Running Tests</strong></summary>
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-</details>
-
-<details>
-<summary><strong>Building docs</strong></summary>
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-</details>
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 116 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 4 | [paulmillr](https://github.com/paulmillr) |
-| 2 | [realityking](https://github.com/realityking) |
-| 2 | [bluelovers](https://github.com/bluelovers) |
-| 1 | [edorivai](https://github.com/edorivai) |
-| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-
-Please consider supporting me on Patreon, or [start your own Patreon page](https://patreon.com/invite/bxpbvm)!
-
-<a href="https://www.patreon.com/jonschlinkert">
-<img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" height="50">
-</a>
-
-### License
-
-Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 08, 2019._ \ No newline at end of file
diff --git a/assets/node_modules/fill-range/index.js b/assets/node_modules/fill-range/index.js
deleted file mode 100644
index 97ce35a..0000000
--- a/assets/node_modules/fill-range/index.js
+++ /dev/null
@@ -1,249 +0,0 @@
-/*!
- * fill-range <https://github.com/jonschlinkert/fill-range>
- *
- * Copyright (c) 2014-present, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-
-'use strict';
-
-const util = require('util');
-const toRegexRange = require('to-regex-range');
-
-const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);
-
-const transform = toNumber => {
- return value => toNumber === true ? Number(value) : String(value);
-};
-
-const isValidValue = value => {
- return typeof value === 'number' || (typeof value === 'string' && value !== '');
-};
-
-const isNumber = num => Number.isInteger(+num);
-
-const zeros = input => {
- let value = `${input}`;
- let index = -1;
- if (value[0] === '-') value = value.slice(1);
- if (value === '0') return false;
- while (value[++index] === '0');
- return index > 0;
-};
-
-const stringify = (start, end, options) => {
- if (typeof start === 'string' || typeof end === 'string') {
- return true;
- }
- return options.stringify === true;
-};
-
-const pad = (input, maxLength, toNumber) => {
- if (maxLength > 0) {
- let dash = input[0] === '-' ? '-' : '';
- if (dash) input = input.slice(1);
- input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));
- }
- if (toNumber === false) {
- return String(input);
- }
- return input;
-};
-
-const toMaxLen = (input, maxLength) => {
- let negative = input[0] === '-' ? '-' : '';
- if (negative) {
- input = input.slice(1);
- maxLength--;
- }
- while (input.length < maxLength) input = '0' + input;
- return negative ? ('-' + input) : input;
-};
-
-const toSequence = (parts, options) => {
- parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);
- parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);
-
- let prefix = options.capture ? '' : '?:';
- let positives = '';
- let negatives = '';
- let result;
-
- if (parts.positives.length) {
- positives = parts.positives.join('|');
- }
-
- if (parts.negatives.length) {
- negatives = `-(${prefix}${parts.negatives.join('|')})`;
- }
-
- if (positives && negatives) {
- result = `${positives}|${negatives}`;
- } else {
- result = positives || negatives;
- }
-
- if (options.wrap) {
- return `(${prefix}${result})`;
- }
-
- return result;
-};
-
-const toRange = (a, b, isNumbers, options) => {
- if (isNumbers) {
- return toRegexRange(a, b, { wrap: false, ...options });
- }
-
- let start = String.fromCharCode(a);
- if (a === b) return start;
-
- let stop = String.fromCharCode(b);
- return `[${start}-${stop}]`;
-};
-
-const toRegex = (start, end, options) => {
- if (Array.isArray(start)) {
- let wrap = options.wrap === true;
- let prefix = options.capture ? '' : '?:';
- return wrap ? `(${prefix}${start.join('|')})` : start.join('|');
- }
- return toRegexRange(start, end, options);
-};
-
-const rangeError = (...args) => {
- return new RangeError('Invalid range arguments: ' + util.inspect(...args));
-};
-
-const invalidRange = (start, end, options) => {
- if (options.strictRanges === true) throw rangeError([start, end]);
- return [];
-};
-
-const invalidStep = (step, options) => {
- if (options.strictRanges === true) {
- throw new TypeError(`Expected step "${step}" to be a number`);
- }
- return [];
-};
-
-const fillNumbers = (start, end, step = 1, options = {}) => {
- let a = Number(start);
- let b = Number(end);
-
- if (!Number.isInteger(a) || !Number.isInteger(b)) {
- if (options.strictRanges === true) throw rangeError([start, end]);
- return [];
- }
-
- // fix negative zero
- if (a === 0) a = 0;
- if (b === 0) b = 0;
-
- let descending = a > b;
- let startString = String(start);
- let endString = String(end);
- let stepString = String(step);
- step = Math.max(Math.abs(step), 1);
-
- let padded = zeros(startString) || zeros(endString) || zeros(stepString);
- let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;
- let toNumber = padded === false && stringify(start, end, options) === false;
- let format = options.transform || transform(toNumber);
-
- if (options.toRegex && step === 1) {
- return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);
- }
-
- let parts = { negatives: [], positives: [] };
- let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));
- let range = [];
- let index = 0;
-
- while (descending ? a >= b : a <= b) {
- if (options.toRegex === true && step > 1) {
- push(a);
- } else {
- range.push(pad(format(a, index), maxLen, toNumber));
- }
- a = descending ? a - step : a + step;
- index++;
- }
-
- if (options.toRegex === true) {
- return step > 1
- ? toSequence(parts, options)
- : toRegex(range, null, { wrap: false, ...options });
- }
-
- return range;
-};
-
-const fillLetters = (start, end, step = 1, options = {}) => {
- if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {
- return invalidRange(start, end, options);
- }
-
-
- let format = options.transform || (val => String.fromCharCode(val));
- let a = `${start}`.charCodeAt(0);
- let b = `${end}`.charCodeAt(0);
-
- let descending = a > b;
- let min = Math.min(a, b);
- let max = Math.max(a, b);
-
- if (options.toRegex && step === 1) {
- return toRange(min, max, false, options);
- }
-
- let range = [];
- let index = 0;
-
- while (descending ? a >= b : a <= b) {
- range.push(format(a, index));
- a = descending ? a - step : a + step;
- index++;
- }
-
- if (options.toRegex === true) {
- return toRegex(range, null, { wrap: false, options });
- }
-
- return range;
-};
-
-const fill = (start, end, step, options = {}) => {
- if (end == null && isValidValue(start)) {
- return [start];
- }
-
- if (!isValidValue(start) || !isValidValue(end)) {
- return invalidRange(start, end, options);
- }
-
- if (typeof step === 'function') {
- return fill(start, end, 1, { transform: step });
- }
-
- if (isObject(step)) {
- return fill(start, end, 0, step);
- }
-
- let opts = { ...options };
- if (opts.capture === true) opts.wrap = true;
- step = step || opts.step || 1;
-
- if (!isNumber(step)) {
- if (step != null && !isObject(step)) return invalidStep(step, opts);
- return fill(start, end, 1, step);
- }
-
- if (isNumber(start) && isNumber(end)) {
- return fillNumbers(start, end, step, opts);
- }
-
- return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);
-};
-
-module.exports = fill;
diff --git a/assets/node_modules/fill-range/package.json b/assets/node_modules/fill-range/package.json
deleted file mode 100644
index 07d3076..0000000
--- a/assets/node_modules/fill-range/package.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "name": "fill-range",
- "description": "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`",
- "version": "7.0.1",
- "homepage": "https://github.com/jonschlinkert/fill-range",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Edo Rivai (edo.rivai.nl)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Paul Miller (paulmillr.com)",
- "Rouven Weßling (www.rouvenwessling.de)",
- "(https://github.com/wtgtybhertgeghgtwtg)"
- ],
- "repository": "jonschlinkert/fill-range",
- "bugs": {
- "url": "https://github.com/jonschlinkert/fill-range/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "devDependencies": {
- "gulp-format-md": "^2.0.0",
- "mocha": "^6.1.1"
- },
- "keywords": [
- "alpha",
- "alphabetical",
- "array",
- "bash",
- "brace",
- "expand",
- "expansion",
- "fill",
- "glob",
- "match",
- "matches",
- "matching",
- "number",
- "numerical",
- "range",
- "ranges",
- "regex",
- "sh"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/assets/node_modules/find-up/index.d.ts b/assets/node_modules/find-up/index.d.ts
deleted file mode 100644
index 41e3192..0000000
--- a/assets/node_modules/find-up/index.d.ts
+++ /dev/null
@@ -1,137 +0,0 @@
-import {Options as LocatePathOptions} from 'locate-path';
-
-declare const stop: unique symbol;
-
-declare namespace findUp {
- interface Options extends LocatePathOptions {}
-
- type StopSymbol = typeof stop;
-
- type Match = string | StopSymbol | undefined;
-}
-
-declare const findUp: {
- /**
- Find a file or directory by walking up parent directories.
-
- @param name - Name of the file or directory to find. Can be multiple.
- @returns The first path found (by respecting the order of `name`s) or `undefined` if none could be found.
-
- @example
- ```
- // /
- // └── Users
- // └── sindresorhus
- // ├── unicorn.png
- // └── foo
- // └── bar
- // ├── baz
- // └── example.js
-
- // example.js
- import findUp = require('find-up');
-
- (async () => {
- console.log(await findUp('unicorn.png'));
- //=> '/Users/sindresorhus/unicorn.png'
-
- console.log(await findUp(['rainbow.png', 'unicorn.png']));
- //=> '/Users/sindresorhus/unicorn.png'
- })();
- ```
- */
- (name: string | string[], options?: findUp.Options): Promise<string | undefined>;
-
- /**
- Find a file or directory by walking up parent directories.
-
- @param matcher - Called for each directory in the search. Return a path or `findUp.stop` to stop the search.
- @returns The first path found or `undefined` if none could be found.
-
- @example
- ```
- import path = require('path');
- import findUp = require('find-up');
-
- (async () => {
- console.log(await findUp(async directory => {
- const hasUnicorns = await findUp.exists(path.join(directory, 'unicorn.png'));
- return hasUnicorns && directory;
- }, {type: 'directory'}));
- //=> '/Users/sindresorhus'
- })();
- ```
- */
- (matcher: (directory: string) => (findUp.Match | Promise<findUp.Match>), options?: findUp.Options): Promise<string | undefined>;
-
- sync: {
- /**
- Synchronously find a file or directory by walking up parent directories.
-
- @param name - Name of the file or directory to find. Can be multiple.
- @returns The first path found (by respecting the order of `name`s) or `undefined` if none could be found.
- */
- (name: string | string[], options?: findUp.Options): string | undefined;
-
- /**
- Synchronously find a file or directory by walking up parent directories.
-
- @param matcher - Called for each directory in the search. Return a path or `findUp.stop` to stop the search.
- @returns The first path found or `undefined` if none could be found.
-
- @example
- ```
- import path = require('path');
- import findUp = require('find-up');
-
- console.log(findUp.sync(directory => {
- const hasUnicorns = findUp.sync.exists(path.join(directory, 'unicorn.png'));
- return hasUnicorns && directory;
- }, {type: 'directory'}));
- //=> '/Users/sindresorhus'
- ```
- */
- (matcher: (directory: string) => findUp.Match, options?: findUp.Options): string | undefined;
-
- /**
- Synchronously check if a path exists.
-
- @param path - Path to the file or directory.
- @returns Whether the path exists.
-
- @example
- ```
- import findUp = require('find-up');
-
- console.log(findUp.sync.exists('/Users/sindresorhus/unicorn.png'));
- //=> true
- ```
- */
- exists(path: string): boolean;
- }
-
- /**
- Check if a path exists.
-
- @param path - Path to a file or directory.
- @returns Whether the path exists.
-
- @example
- ```
- import findUp = require('find-up');
-
- (async () => {
- console.log(await findUp.exists('/Users/sindresorhus/unicorn.png'));
- //=> true
- })();
- ```
- */
- exists(path: string): Promise<boolean>;
-
- /**
- Return this in a `matcher` function to stop the search and force `findUp` to immediately return `undefined`.
- */
- readonly stop: findUp.StopSymbol;
-};
-
-export = findUp;
diff --git a/assets/node_modules/find-up/index.js b/assets/node_modules/find-up/index.js
deleted file mode 100644
index ce564e5..0000000
--- a/assets/node_modules/find-up/index.js
+++ /dev/null
@@ -1,89 +0,0 @@
-'use strict';
-const path = require('path');
-const locatePath = require('locate-path');
-const pathExists = require('path-exists');
-
-const stop = Symbol('findUp.stop');
-
-module.exports = async (name, options = {}) => {
- let directory = path.resolve(options.cwd || '');
- const {root} = path.parse(directory);
- const paths = [].concat(name);
-
- const runMatcher = async locateOptions => {
- if (typeof name !== 'function') {
- return locatePath(paths, locateOptions);
- }
-
- const foundPath = await name(locateOptions.cwd);
- if (typeof foundPath === 'string') {
- return locatePath([foundPath], locateOptions);
- }
-
- return foundPath;
- };
-
- // eslint-disable-next-line no-constant-condition
- while (true) {
- // eslint-disable-next-line no-await-in-loop
- const foundPath = await runMatcher({...options, cwd: directory});
-
- if (foundPath === stop) {
- return;
- }
-
- if (foundPath) {
- return path.resolve(directory, foundPath);
- }
-
- if (directory === root) {
- return;
- }
-
- directory = path.dirname(directory);
- }
-};
-
-module.exports.sync = (name, options = {}) => {
- let directory = path.resolve(options.cwd || '');
- const {root} = path.parse(directory);
- const paths = [].concat(name);
-
- const runMatcher = locateOptions => {
- if (typeof name !== 'function') {
- return locatePath.sync(paths, locateOptions);
- }
-
- const foundPath = name(locateOptions.cwd);
- if (typeof foundPath === 'string') {
- return locatePath.sync([foundPath], locateOptions);
- }
-
- return foundPath;
- };
-
- // eslint-disable-next-line no-constant-condition
- while (true) {
- const foundPath = runMatcher({...options, cwd: directory});
-
- if (foundPath === stop) {
- return;
- }
-
- if (foundPath) {
- return path.resolve(directory, foundPath);
- }
-
- if (directory === root) {
- return;
- }
-
- directory = path.dirname(directory);
- }
-};
-
-module.exports.exists = pathExists;
-
-module.exports.sync.exists = pathExists.sync;
-
-module.exports.stop = stop;
diff --git a/assets/node_modules/find-up/license b/assets/node_modules/find-up/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/find-up/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/find-up/package.json b/assets/node_modules/find-up/package.json
deleted file mode 100644
index cd50281..0000000
--- a/assets/node_modules/find-up/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "name": "find-up",
- "version": "4.1.0",
- "description": "Find a file or directory by walking up parent directories",
- "license": "MIT",
- "repository": "sindresorhus/find-up",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "find",
- "up",
- "find-up",
- "findup",
- "look-up",
- "look",
- "file",
- "search",
- "match",
- "package",
- "resolve",
- "parent",
- "parents",
- "folder",
- "directory",
- "walk",
- "walking",
- "path"
- ],
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "devDependencies": {
- "ava": "^2.1.0",
- "is-path-inside": "^2.1.0",
- "tempy": "^0.3.0",
- "tsd": "^0.7.3",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/find-up/readme.md b/assets/node_modules/find-up/readme.md
deleted file mode 100644
index d6a21e5..0000000
--- a/assets/node_modules/find-up/readme.md
+++ /dev/null
@@ -1,156 +0,0 @@
-# find-up [![Build Status](https://travis-ci.org/sindresorhus/find-up.svg?branch=master)](https://travis-ci.org/sindresorhus/find-up)
-
-> Find a file or directory by walking up parent directories
-
-
-## Install
-
-```
-$ npm install find-up
-```
-
-
-## Usage
-
-```
-/
-└── Users
- └── sindresorhus
- ├── unicorn.png
- └── foo
- └── bar
- ├── baz
- └── example.js
-```
-
-`example.js`
-
-```js
-const path = require('path');
-const findUp = require('find-up');
-
-(async () => {
- console.log(await findUp('unicorn.png'));
- //=> '/Users/sindresorhus/unicorn.png'
-
- console.log(await findUp(['rainbow.png', 'unicorn.png']));
- //=> '/Users/sindresorhus/unicorn.png'
-
- console.log(await findUp(async directory => {
- const hasUnicorns = await findUp.exists(path.join(directory, 'unicorn.png'));
- return hasUnicorns && directory;
- }, {type: 'directory'}));
- //=> '/Users/sindresorhus'
-})();
-```
-
-
-## API
-
-### findUp(name, options?)
-### findUp(matcher, options?)
-
-Returns a `Promise` for either the path or `undefined` if it couldn't be found.
-
-### findUp([...name], options?)
-
-Returns a `Promise` for either the first path found (by respecting the order of the array) or `undefined` if none could be found.
-
-### findUp.sync(name, options?)
-### findUp.sync(matcher, options?)
-
-Returns a path or `undefined` if it couldn't be found.
-
-### findUp.sync([...name], options?)
-
-Returns the first path found (by respecting the order of the array) or `undefined` if none could be found.
-
-#### name
-
-Type: `string`
-
-Name of the file or directory to find.
-
-#### matcher
-
-Type: `Function`
-
-A function that will be called with each directory until it returns a `string` with the path, which stops the search, or the root directory has been reached and nothing was found. Useful if you want to match files with certain patterns, set of permissions, or other advanced use-cases.
-
-When using async mode, the `matcher` may optionally be an async or promise-returning function that returns the path.
-
-#### options
-
-Type: `object`
-
-##### cwd
-
-Type: `string`<br>
-Default: `process.cwd()`
-
-Directory to start from.
-
-##### type
-
-Type: `string`<br>
-Default: `'file'`<br>
-Values: `'file'` `'directory'`
-
-The type of paths that can match.
-
-##### allowSymlinks
-
-Type: `boolean`<br>
-Default: `true`
-
-Allow symbolic links to match if they point to the chosen path type.
-
-### findUp.exists(path)
-
-Returns a `Promise<boolean>` of whether the path exists.
-
-### findUp.sync.exists(path)
-
-Returns a `boolean` of whether the path exists.
-
-#### path
-
-Type: `string`
-
-Path to a file or directory.
-
-### findUp.stop
-
-A [`Symbol`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol) that can be returned by a `matcher` function to stop the search and cause `findUp` to immediately return `undefined`. Useful as a performance optimization in case the current working directory is deeply nested in the filesystem.
-
-```js
-const path = require('path');
-const findUp = require('find-up');
-
-(async () => {
- await findUp(directory => {
- return path.basename(directory) === 'work' ? findUp.stop : 'logo.png';
- });
-})();
-```
-
-
-## Related
-
-- [find-up-cli](https://github.com/sindresorhus/find-up-cli) - CLI for this module
-- [pkg-up](https://github.com/sindresorhus/pkg-up) - Find the closest package.json file
-- [pkg-dir](https://github.com/sindresorhus/pkg-dir) - Find the root directory of an npm package
-- [resolve-from](https://github.com/sindresorhus/resolve-from) - Resolve the path of a module like `require.resolve()` but from a given path
-
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-find-up?utm_source=npm-find-up&utm_medium=referral&utm_campaign=readme">Get professional support for 'find-up' with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
diff --git a/assets/node_modules/flat-cache/LICENSE b/assets/node_modules/flat-cache/LICENSE
deleted file mode 100644
index c58c339..0000000
--- a/assets/node_modules/flat-cache/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Roy Riojas
-
-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/assets/node_modules/flat-cache/README.md b/assets/node_modules/flat-cache/README.md
deleted file mode 100644
index 1bc5d69..0000000
--- a/assets/node_modules/flat-cache/README.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# flat-cache
-> A stupidly simple key/value storage using files to persist the data
-
-[![NPM Version](http://img.shields.io/npm/v/flat-cache.svg?style=flat)](https://npmjs.org/package/flat-cache)
-[![Build Status](http://img.shields.io/travis/royriojas/flat-cache.svg?style=flat)](https://travis-ci.org/royriojas/flat-cache)
-
-## install
-
-```bash
-npm i --save flat-cache
-```
-
-## Usage
-
-```js
-var flatCache = require('flat-cache')
-// loads the cache, if one does not exists for the given
-// Id a new one will be prepared to be created
-var cache = flatCache.load('cacheId');
-
-// sets a key on the cache
-cache.setKey('key', { foo: 'var' });
-
-// get a key from the cache
-cache.getKey('key') // { foo: 'var' }
-
-// fetch the entire persisted object
-cache.all() // { 'key': { foo: 'var' } }
-
-// remove a key
-cache.removeKey('key'); // removes a key from the cache
-
-// save it to disk
-cache.save(); // very important, if you don't save no changes will be persisted.
-// cache.save( true /* noPrune */) // can be used to prevent the removal of non visited keys
-
-// loads the cache from a given directory, if one does
-// not exists for the given Id a new one will be prepared to be created
-var cache = flatCache.load('cacheId', path.resolve('./path/to/folder'));
-
-// The following methods are useful to clear the cache
-// delete a given cache
-flatCache.clearCacheById('cacheId') // removes the cacheId document if one exists.
-
-// delete all cache
-flatCache.clearAll(); // remove the cache directory
-```
-
-## Motivation for this module
-
-I needed a super simple and dumb **in-memory cache** with optional disk persistance in order to make
-a script that will beutify files with `esformatter` only execute on the files that were changed since the last run.
-To make that possible we need to store the `fileSize` and `modificationTime` of the files. So a simple `key/value`
-storage was needed and Bam! this module was born.
-
-## Important notes
-- If no directory is especified when the `load` method is called, a folder named `.cache` will be created
- inside the module directory when `cache.save` is called. If you're committing your `node_modules` to any vcs, you
- might want to ignore the default `.cache` folder, or specify a custom directory.
-- The values set on the keys of the cache should be `stringify-able` ones, meaning no circular references
-- All the changes to the cache state are done to memory
-- I could have used a timer or `Object.observe` to deliver the changes to disk, but I wanted to keep this module
- intentionally dumb and simple
-- Non visited keys are removed when `cache.save()` is called. If this is not desired, you can pass `true` to the save call
- like: `cache.save( true /* noPrune */ )`.
-
-## License
-
-MIT
-
-## Changelog
-
-[changelog](./changelog.md)
diff --git a/assets/node_modules/flat-cache/cache.js b/assets/node_modules/flat-cache/cache.js
deleted file mode 100644
index 6331ac7..0000000
--- a/assets/node_modules/flat-cache/cache.js
+++ /dev/null
@@ -1,197 +0,0 @@
-var path = require( 'path' );
-var fs = require( 'fs' );
-var utils = require( './utils' );
-var del = require( './del' );
-var writeJSON = utils.writeJSON;
-
-var cache = {
- /**
- * Load a cache identified by the given Id. If the element does not exists, then initialize an empty
- * cache storage. If specified `cacheDir` will be used as the directory to persist the data to. If omitted
- * then the cache module directory `./cache` will be used instead
- *
- * @method load
- * @param docId {String} the id of the cache, would also be used as the name of the file cache
- * @param [cacheDir] {String} directory for the cache entry
- */
- load: function ( docId, cacheDir ) {
- var me = this;
-
- me._visited = { };
- me._persisted = { };
- me._pathToFile = cacheDir ? path.resolve( cacheDir, docId ) : path.resolve( __dirname, './.cache/', docId );
-
- if ( fs.existsSync( me._pathToFile ) ) {
- me._persisted = utils.tryParse( me._pathToFile, { } );
- }
- },
-
- /**
- * Load the cache from the provided file
- * @method loadFile
- * @param {String} pathToFile the path to the file containing the info for the cache
- */
- loadFile: function ( pathToFile ) {
- var me = this;
- var dir = path.dirname( pathToFile );
- var fName = path.basename( pathToFile );
-
- me.load( fName, dir );
- },
-
- /**
- * Returns the entire persisted object
- * @method all
- * @returns {*}
- */
- all: function () {
- return this._persisted;
- },
-
- keys: function () {
- return Object.keys( this._persisted );
- },
- /**
- * sets a key to a given value
- * @method setKey
- * @param key {string} the key to set
- * @param value {object} the value of the key. Could be any object that can be serialized with JSON.stringify
- */
- setKey: function ( key, value ) {
- this._visited[ key ] = true;
- this._persisted[ key ] = value;
- },
- /**
- * remove a given key from the cache
- * @method removeKey
- * @param key {String} the key to remove from the object
- */
- removeKey: function ( key ) {
- delete this._visited[ key ]; // esfmt-ignore-line
- delete this._persisted[ key ]; // esfmt-ignore-line
- },
- /**
- * Return the value of the provided key
- * @method getKey
- * @param key {String} the name of the key to retrieve
- * @returns {*} the value from the key
- */
- getKey: function ( key ) {
- this._visited[ key ] = true;
- return this._persisted[ key ];
- },
-
- /**
- * Remove keys that were not accessed/set since the
- * last time the `prune` method was called.
- * @method _prune
- * @private
- */
- _prune: function () {
- var me = this;
- var obj = { };
-
- var keys = Object.keys( me._visited );
-
- // no keys visited for either get or set value
- if ( keys.length === 0 ) {
- return;
- }
-
- keys.forEach( function ( key ) {
- obj[ key ] = me._persisted[ key ];
- } );
-
- me._visited = { };
- me._persisted = obj;
- },
-
- /**
- * Save the state of the cache identified by the docId to disk
- * as a JSON structure
- * @param [noPrune=false] {Boolean} whether to remove from cache the non visited files
- * @method save
- */
- save: function ( noPrune ) {
- var me = this;
-
- (!noPrune) && me._prune();
- writeJSON( me._pathToFile, me._persisted );
- },
-
- /**
- * remove the file where the cache is persisted
- * @method removeCacheFile
- * @return {Boolean} true or false if the file was successfully deleted
- */
- removeCacheFile: function () {
- return del( this._pathToFile );
- },
- /**
- * Destroy the file cache and cache content.
- * @method destroy
- */
- destroy: function () {
- var me = this;
- me._visited = { };
- me._persisted = { };
-
- me.removeCacheFile();
- }
-};
-
-module.exports = {
- /**
- * Alias for create. Should be considered depreacted. Will be removed in next releases
- *
- * @method load
- * @param docId {String} the id of the cache, would also be used as the name of the file cache
- * @param [cacheDir] {String} directory for the cache entry
- * @returns {cache} cache instance
- */
- load: function ( docId, cacheDir ) {
- return this.create( docId, cacheDir );
- },
-
- /**
- * Load a cache identified by the given Id. If the element does not exists, then initialize an empty
- * cache storage.
- *
- * @method create
- * @param docId {String} the id of the cache, would also be used as the name of the file cache
- * @param [cacheDir] {String} directory for the cache entry
- * @returns {cache} cache instance
- */
- create: function ( docId, cacheDir ) {
- var obj = Object.create( cache );
- obj.load( docId, cacheDir );
- return obj;
- },
-
- createFromFile: function ( filePath ) {
- var obj = Object.create( cache );
- obj.loadFile( filePath );
- return obj;
- },
- /**
- * Clear the cache identified by the given id. Caches stored in a different cache directory can be deleted directly
- *
- * @method clearCache
- * @param docId {String} the id of the cache, would also be used as the name of the file cache
- * @param cacheDir {String} the directory where the cache file was written
- * @returns {Boolean} true if the cache folder was deleted. False otherwise
- */
- clearCacheById: function ( docId, cacheDir ) {
- var filePath = cacheDir ? path.resolve( cacheDir, docId ) : path.resolve( __dirname, './.cache/', docId );
- return del( filePath );
- },
- /**
- * Remove all cache stored in the cache directory
- * @method clearAll
- * @returns {Boolean} true if the cache folder was deleted. False otherwise
- */
- clearAll: function ( cacheDir ) {
- var filePath = cacheDir ? path.resolve( cacheDir ) : path.resolve( __dirname, './.cache/' );
- return del( filePath );
- }
-};
diff --git a/assets/node_modules/flat-cache/changelog.md b/assets/node_modules/flat-cache/changelog.md
deleted file mode 100644
index 0bdcfd4..0000000
--- a/assets/node_modules/flat-cache/changelog.md
+++ /dev/null
@@ -1,300 +0,0 @@
-
-# flat-cache - Changelog
-## v2.0.1
-- **Refactoring**
- - upgrade node modules to latest versions - [6402ed3]( https://github.com/royriojas/flat-cache/commit/6402ed3 ), [Roy Riojas](https://github.com/Roy Riojas), 08/01/2019 21:47:05
-
-
-## v2.0.0
-- **Bug Fixes**
- - upgrade package.json lock file - [8d21c7b]( https://github.com/royriojas/flat-cache/commit/8d21c7b ), [Roy Riojas](https://github.com/Roy Riojas), 08/01/2019 20:03:13
-
-
- - Use the same versions of node_js that eslint use - [8d23379]( https://github.com/royriojas/flat-cache/commit/8d23379 ), [Roy Riojas](https://github.com/Roy Riojas), 08/01/2019 19:25:11
-
-
-- **Other changes**
- - Replace circular-json with flatted ([#36](https://github.com/royriojas/flat-cache/issues/36)) - [b93aced]( https://github.com/royriojas/flat-cache/commit/b93aced ), [C. K. Tang](https://github.com/C. K. Tang), 08/01/2019 20:03:01
-
-
- - Change JSON parser from circular-json to flatted & 1 more changes ([#37](https://github.com/royriojas/flat-cache/issues/37)) - [745e65a]( https://github.com/royriojas/flat-cache/commit/745e65a ), [Andy Chen](https://github.com/Andy Chen), 08/01/2019 19:17:20
-
- * Change JSON parser from circular-json to flatted & 1 more changes
-
- * Change JSON parser from circular-json
- * Audited 2 vulnerabilities
-
- * Update package.json
-
- * Update Engine require
-
- * There's a bunch of dependencies in this pkg requires node >=4, so I changed it to 4
-
- * Remove and add node versions
-
- * I have seen this pkg is not available with node 0.12 so I removed it
- * I have added a popular used LTS version of node - 10
-
-## v1.3.4
-- **Refactoring**
- - Add del.js and utils.js to the list of files to be beautified - [9d0ca9b]( https://github.com/royriojas/flat-cache/commit/9d0ca9b ), [Roy Riojas](https://github.com/Roy Riojas), 14/11/2018 15:19:02
-
-
-## v1.3.3
-- **Refactoring**
- - Make sure package-lock.json is up to date - [a7d2598]( https://github.com/royriojas/flat-cache/commit/a7d2598 ), [Roy Riojas](https://github.com/Roy Riojas), 14/11/2018 14:36:08
-
-
-- **Other changes**
- - Removed the need for del ([#33](https://github.com/royriojas/flat-cache/issues/33)) - [c429012]( https://github.com/royriojas/flat-cache/commit/c429012 ), [S. Gilroy](https://github.com/S. Gilroy), 13/11/2018 16:56:37
-
- * Removed the need for del
-
- Removed the need for del as newer versions have broken backwards
- compatibility. del mainly uses rimraf for deleting folders
- and files, replaceing it with rimraf only is a minimal change.
-
- * Disable glob on rimraf calls
-
- * Added glob disable to wrong call
-
- * Wrapped rimraf to simplify solution
-
-## v1.3.2
-- **Refactoring**
- - remove yarn.lock file - [704c6c4]( https://github.com/royriojas/flat-cache/commit/704c6c4 ), [Roy Riojas](https://github.com/Roy Riojas), 07/11/2018 18:41:08
-
-
-- **undefined**
- - replace circular-json with flatted ([#23](https://github.com/royriojas/flat-cache/issues/23))" - [db12d74]( https://github.com/royriojas/flat-cache/commit/db12d74 ), [Roy Riojas](https://github.com/Roy Riojas), 07/11/2018 18:40:39
-
- This reverts commit 00f689277a75e85fef28e6a048fad227afc525e6.
-
-## v1.3.1
-- **Refactoring**
- - upgrade deps to remove some security warnings - [f405719]( https://github.com/royriojas/flat-cache/commit/f405719 ), [Roy Riojas](https://github.com/Roy Riojas), 06/11/2018 15:07:31
-
-
-- **Bug Fixes**
- - replace circular-json with flatted ([#23](https://github.com/royriojas/flat-cache/issues/23)) - [00f6892]( https://github.com/royriojas/flat-cache/commit/00f6892 ), [Terry](https://github.com/Terry), 05/11/2018 21:44:16
-
-
-- **undefined**
- - update del to v3.0.0 ([#26](https://github.com/royriojas/flat-cache/issues/26)) - [d42883f]( https://github.com/royriojas/flat-cache/commit/d42883f ), [Patrick Silva](https://github.com/Patrick Silva), 03/11/2018 03:00:44
-
- Closes <a target="_blank" class="info-link" href="https://github.com/royriojas/flat-cache/issues/25"><span>#25</span></a>
-## v1.3.0
-- **Other changes**
- - Added #all method ([#16](https://github.com/royriojas/flat-cache/issues/16)) - [12293be]( https://github.com/royriojas/flat-cache/commit/12293be ), [Ozair Patel](https://github.com/Ozair Patel), 25/09/2017 16:46:38
-
- * Added #all method
-
- * Added #all method test
-
- * Updated readme
-
- * Added yarn.lock
-
- * Added more keys for #all test
-
- * Beautified file
-
- - fix changelog title style ([#14](https://github.com/royriojas/flat-cache/issues/14)) - [af8338a]( https://github.com/royriojas/flat-cache/commit/af8338a ), [前端小武](https://github.com/前端小武), 19/12/2016 23:34:48
-
-
-## v1.2.2
-- **Bug Fixes**
- - Do not crash if cache file is invalid JSON. ([#13](https://github.com/royriojas/flat-cache/issues/13)) - [87beaa6]( https://github.com/royriojas/flat-cache/commit/87beaa6 ), [Roy Riojas](https://github.com/Roy Riojas), 19/12/2016 21:03:35
-
- Fixes <a target="_blank" class="info-link" href="https://github.com/royriojas/flat-cache/issues/12"><span>#12</span></a>
-
- Not sure under which situations a cache file might exist that does
- not contain a valid JSON structure, but just in case to cover
- the possibility of this happening a try catch block has been added
-
- If the cache is somehow not valid the cache will be discarded an a
- a new cache will be stored instead
-- **Other changes**
- - Added travis ci support for modern node versions ([#11](https://github.com/royriojas/flat-cache/issues/11)) - [1c2b1f7]( https://github.com/royriojas/flat-cache/commit/1c2b1f7 ), [Amila Welihinda](https://github.com/Amila Welihinda), 11/11/2016 02:47:52
-
-
- - Bumping `circular-son` version ([#10](https://github.com/royriojas/flat-cache/issues/10)) - [4d5e861]( https://github.com/royriojas/flat-cache/commit/4d5e861 ), [Andrea Giammarchi](https://github.com/Andrea Giammarchi), 02/08/2016 09:13:52
-
- As mentioned in https://github.com/WebReflection/circular-json/issues/25 `circular-json` wan't rightly implementing the license field.
-
- Latest version bump changed only that bit so that ESLint should now be happy.
-## v1.2.1
-- **Bug Fixes**
- - Add missing utils.js file to the package. closes [#8](https://github.com/royriojas/flat-cache/issues/8) - [ec10cf2]( https://github.com/royriojas/flat-cache/commit/ec10cf2 ), [Roy Riojas](https://github.com/Roy Riojas), 01/08/2016 04:18:57
-
-
-## v1.2.0
-- **Documentation**
- - Add documentation about noPrune option - [23e11f9]( https://github.com/royriojas/flat-cache/commit/23e11f9 ), [Roy Riojas](https://github.com/Roy Riojas), 01/08/2016 04:06:49
-
-
-## v1.1.0
-- **Features**
- - Add noPrune option to cache.save() method. closes [#7](https://github.com/royriojas/flat-cache/issues/7) - [2c8016a]( https://github.com/royriojas/flat-cache/commit/2c8016a ), [Roy Riojas](https://github.com/Roy Riojas), 01/08/2016 04:00:29
-
-
- - Add json read and write utility based on circular-json - [c31081e]( https://github.com/royriojas/flat-cache/commit/c31081e ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 10:58:17
-
-
-- **Bug Fixes**
- - Remove UTF16 BOM stripping - [4a41e22]( https://github.com/royriojas/flat-cache/commit/4a41e22 ), [Jean Ponchon](https://github.com/Jean Ponchon), 29/07/2016 04:18:06
-
- Since we control both writing and reading of JSON stream, there no needs
- to handle unicode BOM.
- - Use circular-json to handle circular references (fix [#5](https://github.com/royriojas/flat-cache/issues/5)) - [cd7aeed]( https://github.com/royriojas/flat-cache/commit/cd7aeed ), [Jean Ponchon](https://github.com/Jean Ponchon), 25/07/2016 13:11:59
-
-
-- **Tests Related fixes**
- - Add missing file from eslint test - [d6fa3c3]( https://github.com/royriojas/flat-cache/commit/d6fa3c3 ), [Jean Ponchon](https://github.com/Jean Ponchon), 29/07/2016 04:15:51
-
-
- - Add test for circular json serialization / deserialization - [07d2ddd]( https://github.com/royriojas/flat-cache/commit/07d2ddd ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 10:59:36
-
-
-- **Refactoring**
- - Remove unused read-json-sync - [2be1c24]( https://github.com/royriojas/flat-cache/commit/2be1c24 ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 10:59:18
-
-
-- **Build Scripts Changes**
- - travis tests on 0.12 and 4x - [3a613fd]( https://github.com/royriojas/flat-cache/commit/3a613fd ), [royriojas](https://github.com/royriojas), 15/11/2015 17:34:40
-
-
- - add eslint-fix task - [fd29e52]( https://github.com/royriojas/flat-cache/commit/fd29e52 ), [royriojas](https://github.com/royriojas), 01/11/2015 18:04:08
-
-
- - make sure the test script also verify beautification and linting of files before running tests - [e94e176]( https://github.com/royriojas/flat-cache/commit/e94e176 ), [royriojas](https://github.com/royriojas), 01/11/2015 14:54:48
-
-
-- **Other changes**
- - add clearAll for cacheDir - [97383d9]( https://github.com/royriojas/flat-cache/commit/97383d9 ), [xieyaowu](https://github.com/xieyaowu), 31/10/2015 23:02:18
-
-
-## v1.0.9
-- **Bug Fixes**
- - wrong default values for changelogx user repo name - [7bb52d1]( https://github.com/royriojas/flat-cache/commit/7bb52d1 ), [royriojas](https://github.com/royriojas), 11/09/2015 17:59:30
-
-
-## v1.0.8
-- **Build Scripts Changes**
- - test against node 4 - [c395b66]( https://github.com/royriojas/flat-cache/commit/c395b66 ), [royriojas](https://github.com/royriojas), 11/09/2015 17:51:39
-
-
-## v1.0.7
-- **Other changes**
- - Move dependencies into devDep - [7e47099]( https://github.com/royriojas/flat-cache/commit/7e47099 ), [Bogdan Chadkin](https://github.com/Bogdan Chadkin), 11/09/2015 17:10:57
-
-
-- **Documentation**
- - Add missing changelog link - [f51197a]( https://github.com/royriojas/flat-cache/commit/f51197a ), [royriojas](https://github.com/royriojas), 11/09/2015 16:48:05
-
-
-## v1.0.6
-- **Build Scripts Changes**
- - Add helpers/code check scripts - [bdb82f3]( https://github.com/royriojas/flat-cache/commit/bdb82f3 ), [royriojas](https://github.com/royriojas), 11/09/2015 16:44:31
-
-
-## v1.0.5
-- **Documentation**
- - better description for the module - [436817f]( https://github.com/royriojas/flat-cache/commit/436817f ), [royriojas](https://github.com/royriojas), 11/09/2015 16:35:33
-
-
-- **Other changes**
- - Update dependencies - [be88aa3]( https://github.com/royriojas/flat-cache/commit/be88aa3 ), [Bogdan Chadkin](https://github.com/Bogdan Chadkin), 11/09/2015 15:47:41
-
-
-## v1.0.11
-- **Features**
- - Add noPrune option to cache.save() method. closes [#7](https://github.com/royriojas/flat-cache/issues/7) - [2c8016a]( https://github.com/royriojas/flat-cache/commit/2c8016a ), [Roy Riojas](https://github.com/Roy Riojas), 01/08/2016 04:00:29
-
-
- - Add json read and write utility based on circular-json - [c31081e]( https://github.com/royriojas/flat-cache/commit/c31081e ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 10:58:17
-
-
-- **Bug Fixes**
- - Remove UTF16 BOM stripping - [4a41e22]( https://github.com/royriojas/flat-cache/commit/4a41e22 ), [Jean Ponchon](https://github.com/Jean Ponchon), 29/07/2016 04:18:06
-
- Since we control both writing and reading of JSON stream, there no needs
- to handle unicode BOM.
- - Use circular-json to handle circular references (fix [#5](https://github.com/royriojas/flat-cache/issues/5)) - [cd7aeed]( https://github.com/royriojas/flat-cache/commit/cd7aeed ), [Jean Ponchon](https://github.com/Jean Ponchon), 25/07/2016 13:11:59
-
-
-- **Tests Related fixes**
- - Add missing file from eslint test - [d6fa3c3]( https://github.com/royriojas/flat-cache/commit/d6fa3c3 ), [Jean Ponchon](https://github.com/Jean Ponchon), 29/07/2016 04:15:51
-
-
- - Add test for circular json serialization / deserialization - [07d2ddd]( https://github.com/royriojas/flat-cache/commit/07d2ddd ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 10:59:36
-
-
-- **Refactoring**
- - Remove unused read-json-sync - [2be1c24]( https://github.com/royriojas/flat-cache/commit/2be1c24 ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 10:59:18
-
-
-- **Build Scripts Changes**
- - travis tests on 0.12 and 4x - [3a613fd]( https://github.com/royriojas/flat-cache/commit/3a613fd ), [royriojas](https://github.com/royriojas), 15/11/2015 17:34:40
-
-
-## v1.0.10
-- **Build Scripts Changes**
- - add eslint-fix task - [fd29e52]( https://github.com/royriojas/flat-cache/commit/fd29e52 ), [royriojas](https://github.com/royriojas), 01/11/2015 18:04:08
-
-
- - make sure the test script also verify beautification and linting of files before running tests - [e94e176]( https://github.com/royriojas/flat-cache/commit/e94e176 ), [royriojas](https://github.com/royriojas), 01/11/2015 14:54:48
-
-
- - test against node 4 - [c395b66]( https://github.com/royriojas/flat-cache/commit/c395b66 ), [royriojas](https://github.com/royriojas), 11/09/2015 17:51:39
-
-
- - Add helpers/code check scripts - [bdb82f3]( https://github.com/royriojas/flat-cache/commit/bdb82f3 ), [royriojas](https://github.com/royriojas), 11/09/2015 16:44:31
-
-
-- **Other changes**
- - add clearAll for cacheDir - [97383d9]( https://github.com/royriojas/flat-cache/commit/97383d9 ), [xieyaowu](https://github.com/xieyaowu), 31/10/2015 23:02:18
-
-
- - Move dependencies into devDep - [7e47099]( https://github.com/royriojas/flat-cache/commit/7e47099 ), [Bogdan Chadkin](https://github.com/Bogdan Chadkin), 11/09/2015 17:10:57
-
-
- - Update dependencies - [be88aa3]( https://github.com/royriojas/flat-cache/commit/be88aa3 ), [Bogdan Chadkin](https://github.com/Bogdan Chadkin), 11/09/2015 15:47:41
-
-
-- **Bug Fixes**
- - wrong default values for changelogx user repo name - [7bb52d1]( https://github.com/royriojas/flat-cache/commit/7bb52d1 ), [royriojas](https://github.com/royriojas), 11/09/2015 17:59:30
-
-
-- **Documentation**
- - Add missing changelog link - [f51197a]( https://github.com/royriojas/flat-cache/commit/f51197a ), [royriojas](https://github.com/royriojas), 11/09/2015 16:48:05
-
-
- - better description for the module - [436817f]( https://github.com/royriojas/flat-cache/commit/436817f ), [royriojas](https://github.com/royriojas), 11/09/2015 16:35:33
-
-
- - Add documentation about `clearAll` and `clearCacheById` - [13947c1]( https://github.com/royriojas/flat-cache/commit/13947c1 ), [Roy Riojas](https://github.com/Roy Riojas), 02/03/2015 02:44:05
-
-
-- **Refactoring**
- - load a cache file using the full filepath - [b8f68c2]( https://github.com/royriojas/flat-cache/commit/b8f68c2 ), [Roy Riojas](https://github.com/Roy Riojas), 30/08/2015 06:19:14
-
-
-- **Features**
- - Add methods to remove the cache documents created - [af40443]( https://github.com/royriojas/flat-cache/commit/af40443 ), [Roy Riojas](https://github.com/Roy Riojas), 02/03/2015 02:39:27
-
-
-## v1.0.1
-- **Other changes**
- - Update README.md - [c2b6805]( https://github.com/royriojas/flat-cache/commit/c2b6805 ), [Roy Riojas](https://github.com/Roy Riojas), 26/02/2015 07:28:07
-
-
-## v1.0.0
-- **Refactoring**
- - flat-cache v.1.0.0 - [c984274]( https://github.com/royriojas/flat-cache/commit/c984274 ), [Roy Riojas](https://github.com/Roy Riojas), 26/02/2015 07:11:50
-
-
-- **Other changes**
- - Initial commit - [d43cccf]( https://github.com/royriojas/flat-cache/commit/d43cccf ), [Roy Riojas](https://github.com/Roy Riojas), 26/02/2015 04:12:16
-
-
diff --git a/assets/node_modules/flat-cache/del.js b/assets/node_modules/flat-cache/del.js
deleted file mode 100644
index c2c5537..0000000
--- a/assets/node_modules/flat-cache/del.js
+++ /dev/null
@@ -1,13 +0,0 @@
-var rimraf = require( 'rimraf' ).sync;
-var fs = require( 'fs' );
-
-module.exports = function del( file ) {
- if ( fs.existsSync( file ) ) {
- //if rimraf doesn't throw then the file has been deleted or didn't exist
- rimraf( file, {
- glob: false
- } );
- return true;
- }
- return false;
-};
diff --git a/assets/node_modules/flat-cache/node_modules/.bin/rimraf b/assets/node_modules/flat-cache/node_modules/.bin/rimraf
deleted file mode 120000
index 632d6da..0000000
--- a/assets/node_modules/flat-cache/node_modules/.bin/rimraf
+++ /dev/null
@@ -1 +0,0 @@
-../../../rimraf/bin.js \ No newline at end of file
diff --git a/assets/node_modules/flat-cache/package.json b/assets/node_modules/flat-cache/package.json
deleted file mode 100644
index 0c74fc7..0000000
--- a/assets/node_modules/flat-cache/package.json
+++ /dev/null
@@ -1,87 +0,0 @@
-{
- "name": "flat-cache",
- "version": "2.0.1",
- "description": "A stupidly simple key/value storage using files to persist some data",
- "repository": "royriojas/flat-cache",
- "license": "MIT",
- "author": {
- "name": "Roy Riojas",
- "url": "http://royriojas.com"
- },
- "main": "cache.js",
- "files": [
- "cache.js",
- "utils.js",
- "del.js"
- ],
- "engines": {
- "node": ">=4"
- },
- "precommit": [
- "npm run verify --silent"
- ],
- "prepush": [
- "npm run verify --silent"
- ],
- "scripts": {
- "beautify": "esbeautifier 'cache.js' 'utils.js' 'del.js' 'test/specs/**/*.js'",
- "beautify-check": "npm run beautify -- -k",
- "eslint": "eslinter 'cache.js' 'utils.js' 'del.js' 'specs/**/*.js'",
- "eslint-fix": "npm run eslint -- --fix",
- "autofix": "npm run beautify && npm run eslint-fix",
- "check": "npm run beautify-check && npm run eslint",
- "verify": "npm run check && npm run test:cache",
- "install-hooks": "prepush install && changelogx install-hook && precommit install",
- "changelog": "changelogx -f markdown -o ./changelog.md",
- "do-changelog": "npm run changelog && git add ./changelog.md && git commit -m 'DOC: Generate changelog' --no-verify",
- "pre-v": "npm run verify",
- "post-v": "npm run do-changelog && git push --no-verify && git push --tags --no-verify",
- "bump-major": "npm run pre-v && npm version major -m 'BLD: Release v%s' && npm run post-v",
- "bump-minor": "npm run pre-v && npm version minor -m 'BLD: Release v%s' && npm run post-v",
- "bump-patch": "npm run pre-v && npm version patch -m 'BLD: Release v%s' && npm run post-v",
- "test:cache": "mocha -R spec test/specs",
- "test": "npm run verify --silent",
- "cover": "istanbul cover test/runner.js html text-summary",
- "watch": "watch-run -i -p 'test/specs/**/*.js' istanbul cover test/runner.js html text-summary"
- },
- "keywords": [
- "json cache",
- "simple cache",
- "file cache",
- "key par",
- "key value",
- "cache"
- ],
- "changelogx": {
- "ignoreRegExp": [
- "BLD: Release",
- "DOC: Generate Changelog",
- "Generated Changelog"
- ],
- "issueIDRegExp": "#(\\d+)",
- "commitURL": "https://github.com/royriojas/flat-cache/commit/{0}",
- "authorURL": "https://github.com/{0}",
- "issueIDURL": "https://github.com/royriojas/flat-cache/issues/{0}",
- "projectName": "flat-cache"
- },
- "devDependencies": {
- "chai": "^3.2.0",
- "changelogx": "3.0.0",
- "esbeautifier": "10.1.1",
- "eslinter": "^3.2.1",
- "glob-expand": "0.2.1",
- "istanbul": "0.4.5",
- "mocha": "5.2.0",
- "precommit": "^1.1.5",
- "prepush": "^3.1.4",
- "proxyquire": "^1.7.2",
- "sinon": "^1.16.1",
- "sinon-chai": "^2.8.0",
- "watch-run": "^1.2.2"
- },
- "dependencies": {
- "flatted": "^2.0.0",
- "rimraf": "2.6.3",
- "write": "1.0.3"
- }
-}
diff --git a/assets/node_modules/flat-cache/utils.js b/assets/node_modules/flat-cache/utils.js
deleted file mode 100644
index 1c44db9..0000000
--- a/assets/node_modules/flat-cache/utils.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var fs = require( 'fs' );
-var write = require( 'write' );
-var flatted = require( 'flatted' );
-
-module.exports = {
- tryParse: function ( filePath, defaultValue ) {
- var result;
- try {
- result = this.readJSON( filePath );
- } catch (ex) {
- result = defaultValue;
- }
- return result;
- },
-
- /**
- * Read json file synchronously using flatted
- *
- * @method readJSON
- * @param {String} filePath Json filepath
- * @returns {*} parse result
- */
- readJSON: function ( filePath ) {
- return flatted.parse( fs.readFileSync( filePath, {
- encoding: 'utf8'
- } ) );
- },
-
- /**
- * Write json file synchronously using circular-json
- *
- * @method writeJSON
- * @param {String} filePath Json filepath
- * @param {*} data Object to serialize
- */
- writeJSON: function ( filePath, data ) {
- write.sync( filePath, flatted.stringify( data ) );
- }
-};
diff --git a/assets/node_modules/flatted/.github/FUNDING.yml b/assets/node_modules/flatted/.github/FUNDING.yml
deleted file mode 100644
index d53abd3..0000000
--- a/assets/node_modules/flatted/.github/FUNDING.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-# These are supported funding model platforms
-
-github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
-patreon: # not working due missing www.
-open_collective: #
-ko_fi: # Replace with a single Ko-fi username
-tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
-custom: https://www.patreon.com/webreflection
diff --git a/assets/node_modules/flatted/LICENSE b/assets/node_modules/flatted/LICENSE
deleted file mode 100644
index c850830..0000000
--- a/assets/node_modules/flatted/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-ISC License
-
-Copyright (c) 2018, Andrea Giammarchi, @WebReflection
-
-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/assets/node_modules/flatted/README.md b/assets/node_modules/flatted/README.md
deleted file mode 100644
index 9901441..0000000
--- a/assets/node_modules/flatted/README.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# flatted
-
-![Downloads](https://img.shields.io/npm/dm/flatted.svg) [![Coverage Status](https://coveralls.io/repos/github/WebReflection/flatted/badge.svg?branch=master)](https://coveralls.io/github/WebReflection/flatted?branch=master) [![Build Status](https://travis-ci.org/WebReflection/flatted.svg?branch=master)](https://travis-ci.org/WebReflection/flatted) [![License: ISC](https://img.shields.io/badge/License-ISC-yellow.svg)](https://opensource.org/licenses/ISC) ![WebReflection status](https://offline.report/status/webreflection.svg)
-
-A super light (0.5K) and fast circular JSON parser, directly from the creator of [CircularJSON](https://github.com/WebReflection/circular-json/#circularjson).
-
-Usable via [CDN](https://unpkg.com/flatted) or as regular module.
-
-```js
-// ESM
-import {parse, stringify} from 'flatted/esm';
-
-// CJS
-const {parse, stringify} = require('flatted/cjs');
-
-const a = [{}];
-a[0].a = a;
-a.push(a);
-
-stringify(a); // [["1","0"],{"a":"0"}]
-```
-
-### New in V1: Exact same JSON API
-
- * Added a [reviver](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Syntax) parameter to `.parse(string, reviver)` and revive your own objects.
- * Added a [replacer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#Syntax) and a `space` parameter to `.stringify(object, replacer, space)` for feature parity with JSON signature.
-
-
-### Compatibility
-All ECMAScript engines compatible with `Map`, `Set`, `Object.keys`, and `Array.prototype.reduce` will work, even if polyfilled.
-
-
-### How does it work ?
-While stringifying, all Objects, including Arrays, and strings, are flattened out and replaced as unique index. `*`
-
-Once parsed, all indexes will be replaced through the flattened collection.
-
-<sup><sub>`*` represented as string to avoid conflicts with numbers</sub></sup>
-
-```js
-// logic example
-var a = [{one: 1}, {two: '2'}];
-a[0].a = a;
-// a is the main object, will be at index '0'
-// {one: 1} is the second object, index '1'
-// {two: '2'} the third, in '2', and it has a string
-// which will be found at index '3'
-
-Flatted.stringify(a);
-// [["1","2"],{"one":1,"a":"0"},{"two":"3"},"2"]
-// a[one,two] {one: 1, a} {two: '2'} '2'
-```
diff --git a/assets/node_modules/flatted/SPECS.md b/assets/node_modules/flatted/SPECS.md
deleted file mode 100644
index c17dfb5..0000000
--- a/assets/node_modules/flatted/SPECS.md
+++ /dev/null
@@ -1,94 +0,0 @@
-# Flatted Specifications
-
-This document describes operations performed to produce, or parse, the flatted output.
-
-## stringify(any) => flattedString
-
-The output is always an `Array` that contains at index `0` the given value.
-
-If the value is an `Array` or an `Object`, per each property value passed through the callback, return the value as is if it's not an `Array`, an `Object`, or a `string`.
-
-In case it's an `Array`, an `Object`, or a `string`, return the index as `string`, associated through a `Map`.
-
-Giving the following example:
-
-```js
-flatted.stringify('a'); // ["a"]
-flatted.stringify(['a']); // [["1"],"a"]
-flatted.stringify(['a', 1, 'b']); // [["1",1,"2"],"a","b"]
-```
-
-There is an `input` containing `[array, "a", "b"]`, where the `array` has indexes `"1"` and `"2"` as strings, indexes that point respectively at `"a"` and `"b"` within the input `[array, "a", "b"]`.
-
-The exact same happens for objects.
-
-```js
-flatted.stringify('a'); // ["a"]
-flatted.stringify({a: 'a'}); // [{"a":"1"},"a"]
-flatted.stringify({a: 'a', n: 1, b: 'b'}); // [{"a":"1","n":1,"b":"2"},"a","b"]
-```
-
-Every object, string, or array, encountered during serialization will be stored once as stringified index.
-
-```js
-// per each property/value of the object/array
-if (any == null || !/object|string/.test(typeof any))
- return any;
-if (!map.has(any)) {
- const index = String(arr.length);
- arr.push(any);
- map.set(any, index);
-}
-return map.get(any);
-```
-
-This, performed before going through all properties, grants unique indexes per reference.
-
-The stringified indexes ensure there won't be conflicts with regularly stored numbers.
-
-## parse(flattedString) => any
-
-Everything that is a `string` is wrapped as `new String`, but strings in the array, from index `1` on, is kept as regular `string`.
-
-```js
-const input = JSON.parse('[{"a":"1"},"b"]', Strings).map(strings);
-// convert strings primitives into String instances
-function Strings(key, value) {
- return typeof value === 'string' ? new String(value) : value;
-}
-// converts String instances into strings primitives
-function strings(value) {
- return value instanceof String ? String(value) : value;
-}
-```
-
-The `input` array will have a regular `string` at index `1`, but its object at index `0` will have an `instanceof String` as `.a` property.
-
-That is the key to place back values from the rest of the array, so that per each property of the object at index `0`, if the value is an `instanceof` String, something not serializable via JSON, it means it can be used to retrieve the position of its value from the `input` array.
-
-If such `value` is an object and it hasn't been parsed yet, add it as parsed and go through all its properties/values.
-
-```js
-// outside any loop ...
-const parsed = new Set;
-
-// ... per each property/value ...
-if (value instanceof Primitive) {
- const tmp = input[parseInt(value)];
- if (typeof tmp === 'object' && !parsed.has(tmp)) {
- parsed.add(tmp);
- output[key] = tmp;
- if (typeof tmp === 'object' && tmp != null) {
- // perform this same logic per
- // each nested property/value ...
- }
- } else {
- output[key] = tmp;
- }
-} else
- output[key] = tmp;
-```
-
-As summary, the whole logic is based on polluting the de-serialization with a kind of variable that is unexpected, hence secure to use as directive to retrieve an index with a value.
-
-The usage of a `Map` and a `Set` to flag known references/strings as visited/stored makes **flatted** a rock solid, fast, and compact, solution.
diff --git a/assets/node_modules/flatted/cjs/index.js b/assets/node_modules/flatted/cjs/index.js
deleted file mode 100644
index f312b06..0000000
--- a/assets/node_modules/flatted/cjs/index.js
+++ /dev/null
@@ -1,116 +0,0 @@
-var Flatted = (function (Primitive, primitive) {
-
- /*!
- * ISC License
- *
- * Copyright (c) 2018, Andrea Giammarchi, @WebReflection
- *
- * 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.
- */
-
- var Flatted = {
-
- parse: function parse(text, reviver) {
- var input = JSON.parse(text, Primitives).map(primitives);
- var value = input[0];
- var $ = reviver || noop;
- var tmp = typeof value === 'object' && value ?
- revive(input, new Set, value, $) :
- value;
- return $.call({'': tmp}, '', tmp);
- },
-
- stringify: function stringify(value, replacer, space) {
- for (var
- firstRun,
- known = new Map,
- input = [],
- output = [],
- $ = replacer && typeof replacer === typeof input ?
- function (k, v) {
- if (k === '' || -1 < replacer.indexOf(k)) return v;
- } :
- (replacer || noop),
- i = +set(known, input, $.call({'': value}, '', value)),
- replace = function (key, value) {
- if (firstRun) {
- firstRun = !firstRun;
- return value;
- // this was invoking twice each root object
- // return i < 1 ? value : $.call(this, key, value);
- }
- var after = $.call(this, key, value);
- switch (typeof after) {
- case 'object':
- if (after === null) return after;
- case primitive:
- return known.get(after) || set(known, input, after);
- }
- return after;
- };
- i < input.length; i++
- ) {
- firstRun = true;
- output[i] = JSON.stringify(input[i], replace, space);
- }
- return '[' + output.join(',') + ']';
- }
-
- };
-
- return Flatted;
-
- function noop(key, value) {
- return value;
- }
-
- function revive(input, parsed, output, $) {
- return Object.keys(output).reduce(
- function (output, key) {
- var value = output[key];
- if (value instanceof Primitive) {
- var tmp = input[value];
- if (typeof tmp === 'object' && !parsed.has(tmp)) {
- parsed.add(tmp);
- output[key] = $.call(output, key, revive(input, parsed, tmp, $));
- } else {
- output[key] = $.call(output, key, tmp);
- }
- } else
- output[key] = $.call(output, key, value);
- return output;
- },
- output
- );
- }
-
- function set(known, input, value) {
- var index = Primitive(input.push(value) - 1);
- known.set(value, index);
- return index;
- }
-
- // the two kinds of primitives
- // 1. the real one
- // 2. the wrapped one
-
- function primitives(value) {
- return value instanceof Primitive ? Primitive(value) : value;
- }
-
- function Primitives(key, value) {
- return typeof value === primitive ? new Primitive(value) : value;
- }
-
-}(String, 'string'));
-module.exports = Flatted;
diff --git a/assets/node_modules/flatted/esm/index.js b/assets/node_modules/flatted/esm/index.js
deleted file mode 100644
index de15869..0000000
--- a/assets/node_modules/flatted/esm/index.js
+++ /dev/null
@@ -1,118 +0,0 @@
-var Flatted = (function (Primitive, primitive) {
-
- /*!
- * ISC License
- *
- * Copyright (c) 2018, Andrea Giammarchi, @WebReflection
- *
- * 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.
- */
-
- var Flatted = {
-
- parse: function parse(text, reviver) {
- var input = JSON.parse(text, Primitives).map(primitives);
- var value = input[0];
- var $ = reviver || noop;
- var tmp = typeof value === 'object' && value ?
- revive(input, new Set, value, $) :
- value;
- return $.call({'': tmp}, '', tmp);
- },
-
- stringify: function stringify(value, replacer, space) {
- for (var
- firstRun,
- known = new Map,
- input = [],
- output = [],
- $ = replacer && typeof replacer === typeof input ?
- function (k, v) {
- if (k === '' || -1 < replacer.indexOf(k)) return v;
- } :
- (replacer || noop),
- i = +set(known, input, $.call({'': value}, '', value)),
- replace = function (key, value) {
- if (firstRun) {
- firstRun = !firstRun;
- return value;
- // this was invoking twice each root object
- // return i < 1 ? value : $.call(this, key, value);
- }
- var after = $.call(this, key, value);
- switch (typeof after) {
- case 'object':
- if (after === null) return after;
- case primitive:
- return known.get(after) || set(known, input, after);
- }
- return after;
- };
- i < input.length; i++
- ) {
- firstRun = true;
- output[i] = JSON.stringify(input[i], replace, space);
- }
- return '[' + output.join(',') + ']';
- }
-
- };
-
- return Flatted;
-
- function noop(key, value) {
- return value;
- }
-
- function revive(input, parsed, output, $) {
- return Object.keys(output).reduce(
- function (output, key) {
- var value = output[key];
- if (value instanceof Primitive) {
- var tmp = input[value];
- if (typeof tmp === 'object' && !parsed.has(tmp)) {
- parsed.add(tmp);
- output[key] = $.call(output, key, revive(input, parsed, tmp, $));
- } else {
- output[key] = $.call(output, key, tmp);
- }
- } else
- output[key] = $.call(output, key, value);
- return output;
- },
- output
- );
- }
-
- function set(known, input, value) {
- var index = Primitive(input.push(value) - 1);
- known.set(value, index);
- return index;
- }
-
- // the two kinds of primitives
- // 1. the real one
- // 2. the wrapped one
-
- function primitives(value) {
- return value instanceof Primitive ? Primitive(value) : value;
- }
-
- function Primitives(key, value) {
- return typeof value === primitive ? new Primitive(value) : value;
- }
-
-}(String, 'string'));
-export default Flatted;
-export var parse = Flatted.parse;
-export var stringify = Flatted.stringify;
diff --git a/assets/node_modules/flatted/index.js b/assets/node_modules/flatted/index.js
deleted file mode 100644
index 1df9db3..0000000
--- a/assets/node_modules/flatted/index.js
+++ /dev/null
@@ -1,115 +0,0 @@
-var Flatted = (function (Primitive, primitive) {
-
- /*!
- * ISC License
- *
- * Copyright (c) 2018, Andrea Giammarchi, @WebReflection
- *
- * 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.
- */
-
- var Flatted = {
-
- parse: function parse(text, reviver) {
- var input = JSON.parse(text, Primitives).map(primitives);
- var value = input[0];
- var $ = reviver || noop;
- var tmp = typeof value === 'object' && value ?
- revive(input, new Set, value, $) :
- value;
- return $.call({'': tmp}, '', tmp);
- },
-
- stringify: function stringify(value, replacer, space) {
- for (var
- firstRun,
- known = new Map,
- input = [],
- output = [],
- $ = replacer && typeof replacer === typeof input ?
- function (k, v) {
- if (k === '' || -1 < replacer.indexOf(k)) return v;
- } :
- (replacer || noop),
- i = +set(known, input, $.call({'': value}, '', value)),
- replace = function (key, value) {
- if (firstRun) {
- firstRun = !firstRun;
- return value;
- // this was invoking twice each root object
- // return i < 1 ? value : $.call(this, key, value);
- }
- var after = $.call(this, key, value);
- switch (typeof after) {
- case 'object':
- if (after === null) return after;
- case primitive:
- return known.get(after) || set(known, input, after);
- }
- return after;
- };
- i < input.length; i++
- ) {
- firstRun = true;
- output[i] = JSON.stringify(input[i], replace, space);
- }
- return '[' + output.join(',') + ']';
- }
-
- };
-
- return Flatted;
-
- function noop(key, value) {
- return value;
- }
-
- function revive(input, parsed, output, $) {
- return Object.keys(output).reduce(
- function (output, key) {
- var value = output[key];
- if (value instanceof Primitive) {
- var tmp = input[value];
- if (typeof tmp === 'object' && !parsed.has(tmp)) {
- parsed.add(tmp);
- output[key] = $.call(output, key, revive(input, parsed, tmp, $));
- } else {
- output[key] = $.call(output, key, tmp);
- }
- } else
- output[key] = $.call(output, key, value);
- return output;
- },
- output
- );
- }
-
- function set(known, input, value) {
- var index = Primitive(input.push(value) - 1);
- known.set(value, index);
- return index;
- }
-
- // the two kinds of primitives
- // 1. the real one
- // 2. the wrapped one
-
- function primitives(value) {
- return value instanceof Primitive ? Primitive(value) : value;
- }
-
- function Primitives(key, value) {
- return typeof value === primitive ? new Primitive(value) : value;
- }
-
-}(String, 'string'));
diff --git a/assets/node_modules/flatted/min.js b/assets/node_modules/flatted/min.js
deleted file mode 100644
index 9e2a134..0000000
--- a/assets/node_modules/flatted/min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! (c) 2018, Andrea Giammarchi, (ISC) */
-var Flatted=function(a,l){return{parse:function(n,t){var e=JSON.parse(n,i).map(f),r=e[0],u=t||s,c="object"==typeof r&&r?function u(c,f,n,i){return Object.keys(n).reduce(function(n,t){var e=n[t];if(e instanceof a){var r=c[e];"object"!=typeof r||f.has(r)?n[t]=i.call(n,t,r):(f.add(r),n[t]=i.call(n,t,u(c,f,r,i)))}else n[t]=i.call(n,t,e);return n},n)}(e,new Set,r,u):r;return u.call({"":c},"",c)},stringify:function(n,e,t){function r(n,t){if(u)return u=!u,t;var e=a.call(this,n,t);switch(typeof e){case"object":if(null===e)return e;case l:return c.get(e)||p(c,f,e)}return e}for(var u,c=new Map,f=[],i=[],a=e&&typeof e==typeof f?function(n,t){if(""===n||-1<e.indexOf(n))return t}:e||s,o=+p(c,f,a.call({"":n},"",n));o<f.length;o++)u=!0,i[o]=JSON.stringify(f[o],r,t);return"["+i.join(",")+"]"}};function s(n,t){return t}function p(n,t,e){var r=a(t.push(e)-1);return n.set(e,r),r}function f(n){return n instanceof a?a(n):n}function i(n,t){return typeof t==l?new a(t):t}}(String,"string");
diff --git a/assets/node_modules/flatted/package.json b/assets/node_modules/flatted/package.json
deleted file mode 100644
index dec21cd..0000000
--- a/assets/node_modules/flatted/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "flatted",
- "version": "2.0.1",
- "description": "A super light and fast circular JSON parser.",
- "unpkg": "min.js",
- "main": "cjs/index.js",
- "module": "esm/index.js",
- "types": "types.d.ts",
- "scripts": {
- "bench": "node test/bench.js",
- "build": "npm run cjs && npm test && npm run esm && npm run min && npm run size",
- "coveralls": "cat ./coverage/lcov.info | coveralls",
- "cjs": "cp index.js cjs/index.js; echo 'module.exports = Flatted;' >> cjs/index.js",
- "esm": "cp index.js esm/index.js; echo 'export default Flatted;' >> esm/index.js; echo 'export var parse = Flatted.parse;' >> esm/index.js; echo 'export var stringify = Flatted.stringify;' >> esm/index.js",
- "min": "echo '/*! (c) 2018, Andrea Giammarchi, (ISC) */'>min.js && uglifyjs index.js --support-ie8 -c -m >> min.js",
- "size": "cat index.js | wc -c;cat min.js | wc -c;gzip -c9 min.js | wc -c;cat min.js | brotli | wc -c",
- "test": "istanbul cover test/index.js"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/WebReflection/flatted.git"
- },
- "keywords": [
- "circular",
- "JSON",
- "fast",
- "parser",
- "minimal"
- ],
- "author": "Andrea Giammarchi",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/WebReflection/flatted/issues"
- },
- "homepage": "https://github.com/WebReflection/flatted#readme",
- "devDependencies": {
- "circular-json": "latest",
- "circular-json-es6": "latest",
- "coveralls": "latest",
- "istanbul": "latest",
- "jsan": "latest",
- "uglify-js": "latest"
- }
-}
diff --git a/assets/node_modules/flatted/types.d.ts b/assets/node_modules/flatted/types.d.ts
deleted file mode 100644
index 1233af2..0000000
--- a/assets/node_modules/flatted/types.d.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * Fast and minimal circular JSON parser.
- * logic example
-```js
- var a = [{one: 1}, {two: '2'}];
-a[0].a = a;
-// a is the main object, will be at index '0'
-// {one: 1} is the second object, index '1'
-// {two: '2'} the third, in '2', and it has a string
-// which will be found at index '3'
-
-Flatted.stringify(a);
-// [["1","2"],{"one":1,"a":"0"},{"two":"3"},"2"]
-// a[one,two] {one: 1, a} {two: '2'} '2'
-```
- */
-declare const Flatted: typeof JSON;
-
-export = Flatted;
diff --git a/assets/node_modules/fs.realpath/LICENSE b/assets/node_modules/fs.realpath/LICENSE
deleted file mode 100644
index 5bd884c..0000000
--- a/assets/node_modules/fs.realpath/LICENSE
+++ /dev/null
@@ -1,43 +0,0 @@
-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.
-
-----
-
-This library bundles a version of the `fs.realpath` and `fs.realpathSync`
-methods from Node.js v0.10 under the terms of the Node.js MIT license.
-
-Node's license follows, also included at the header of `old.js` which contains
-the licensed code:
-
- Copyright Joyent, Inc. and other Node 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/assets/node_modules/fs.realpath/README.md b/assets/node_modules/fs.realpath/README.md
deleted file mode 100644
index a42ceac..0000000
--- a/assets/node_modules/fs.realpath/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# fs.realpath
-
-A backwards-compatible fs.realpath for Node v6 and above
-
-In Node v6, the JavaScript implementation of fs.realpath was replaced
-with a faster (but less resilient) native implementation. That raises
-new and platform-specific errors and cannot handle long or excessively
-symlink-looping paths.
-
-This module handles those cases by detecting the new errors and
-falling back to the JavaScript implementation. On versions of Node
-prior to v6, it has no effect.
-
-## USAGE
-
-```js
-var rp = require('fs.realpath')
-
-// async version
-rp.realpath(someLongAndLoopingPath, function (er, real) {
- // the ELOOP was handled, but it was a bit slower
-})
-
-// sync version
-var real = rp.realpathSync(someLongAndLoopingPath)
-
-// monkeypatch at your own risk!
-// This replaces the fs.realpath/fs.realpathSync builtins
-rp.monkeypatch()
-
-// un-do the monkeypatching
-rp.unmonkeypatch()
-```
diff --git a/assets/node_modules/fs.realpath/index.js b/assets/node_modules/fs.realpath/index.js
deleted file mode 100644
index b09c7c7..0000000
--- a/assets/node_modules/fs.realpath/index.js
+++ /dev/null
@@ -1,66 +0,0 @@
-module.exports = realpath
-realpath.realpath = realpath
-realpath.sync = realpathSync
-realpath.realpathSync = realpathSync
-realpath.monkeypatch = monkeypatch
-realpath.unmonkeypatch = unmonkeypatch
-
-var fs = require('fs')
-var origRealpath = fs.realpath
-var origRealpathSync = fs.realpathSync
-
-var version = process.version
-var ok = /^v[0-5]\./.test(version)
-var old = require('./old.js')
-
-function newError (er) {
- return er && er.syscall === 'realpath' && (
- er.code === 'ELOOP' ||
- er.code === 'ENOMEM' ||
- er.code === 'ENAMETOOLONG'
- )
-}
-
-function realpath (p, cache, cb) {
- if (ok) {
- return origRealpath(p, cache, cb)
- }
-
- if (typeof cache === 'function') {
- cb = cache
- cache = null
- }
- origRealpath(p, cache, function (er, result) {
- if (newError(er)) {
- old.realpath(p, cache, cb)
- } else {
- cb(er, result)
- }
- })
-}
-
-function realpathSync (p, cache) {
- if (ok) {
- return origRealpathSync(p, cache)
- }
-
- try {
- return origRealpathSync(p, cache)
- } catch (er) {
- if (newError(er)) {
- return old.realpathSync(p, cache)
- } else {
- throw er
- }
- }
-}
-
-function monkeypatch () {
- fs.realpath = realpath
- fs.realpathSync = realpathSync
-}
-
-function unmonkeypatch () {
- fs.realpath = origRealpath
- fs.realpathSync = origRealpathSync
-}
diff --git a/assets/node_modules/fs.realpath/old.js b/assets/node_modules/fs.realpath/old.js
deleted file mode 100644
index b40305e..0000000
--- a/assets/node_modules/fs.realpath/old.js
+++ /dev/null
@@ -1,303 +0,0 @@
-// Copyright Joyent, Inc. and other Node 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.
-
-var pathModule = require('path');
-var isWindows = process.platform === 'win32';
-var fs = require('fs');
-
-// JavaScript implementation of realpath, ported from node pre-v6
-
-var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);
-
-function rethrow() {
- // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and
- // is fairly slow to generate.
- var callback;
- if (DEBUG) {
- var backtrace = new Error;
- callback = debugCallback;
- } else
- callback = missingCallback;
-
- return callback;
-
- function debugCallback(err) {
- if (err) {
- backtrace.message = err.message;
- err = backtrace;
- missingCallback(err);
- }
- }
-
- function missingCallback(err) {
- if (err) {
- if (process.throwDeprecation)
- throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs
- else if (!process.noDeprecation) {
- var msg = 'fs: missing callback ' + (err.stack || err.message);
- if (process.traceDeprecation)
- console.trace(msg);
- else
- console.error(msg);
- }
- }
- }
-}
-
-function maybeCallback(cb) {
- return typeof cb === 'function' ? cb : rethrow();
-}
-
-var normalize = pathModule.normalize;
-
-// Regexp that finds the next partion of a (partial) path
-// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']
-if (isWindows) {
- var nextPartRe = /(.*?)(?:[\/\\]+|$)/g;
-} else {
- var nextPartRe = /(.*?)(?:[\/]+|$)/g;
-}
-
-// Regex to find the device root, including trailing slash. E.g. 'c:\\'.
-if (isWindows) {
- var splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/;
-} else {
- var splitRootRe = /^[\/]*/;
-}
-
-exports.realpathSync = function realpathSync(p, cache) {
- // make p is absolute
- p = pathModule.resolve(p);
-
- if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
- return cache[p];
- }
-
- var original = p,
- seenLinks = {},
- knownHard = {};
-
- // current character position in p
- var pos;
- // the partial path so far, including a trailing slash if any
- var current;
- // the partial path without a trailing slash (except when pointing at a root)
- var base;
- // the partial path scanned in the previous round, with slash
- var previous;
-
- start();
-
- function start() {
- // Skip over roots
- var m = splitRootRe.exec(p);
- pos = m[0].length;
- current = m[0];
- base = m[0];
- previous = '';
-
- // On windows, check that the root exists. On unix there is no need.
- if (isWindows && !knownHard[base]) {
- fs.lstatSync(base);
- knownHard[base] = true;
- }
- }
-
- // walk down the path, swapping out linked pathparts for their real
- // values
- // NB: p.length changes.
- while (pos < p.length) {
- // find the next part
- nextPartRe.lastIndex = pos;
- var result = nextPartRe.exec(p);
- previous = current;
- current += result[0];
- base = previous + result[1];
- pos = nextPartRe.lastIndex;
-
- // continue if not a symlink
- if (knownHard[base] || (cache && cache[base] === base)) {
- continue;
- }
-
- var resolvedLink;
- if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
- // some known symbolic link. no need to stat again.
- resolvedLink = cache[base];
- } else {
- var stat = fs.lstatSync(base);
- if (!stat.isSymbolicLink()) {
- knownHard[base] = true;
- if (cache) cache[base] = base;
- continue;
- }
-
- // read the link if it wasn't read before
- // dev/ino always return 0 on windows, so skip the check.
- var linkTarget = null;
- if (!isWindows) {
- var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);
- if (seenLinks.hasOwnProperty(id)) {
- linkTarget = seenLinks[id];
- }
- }
- if (linkTarget === null) {
- fs.statSync(base);
- linkTarget = fs.readlinkSync(base);
- }
- resolvedLink = pathModule.resolve(previous, linkTarget);
- // track this, if given a cache.
- if (cache) cache[base] = resolvedLink;
- if (!isWindows) seenLinks[id] = linkTarget;
- }
-
- // resolve the link, then start over
- p = pathModule.resolve(resolvedLink, p.slice(pos));
- start();
- }
-
- if (cache) cache[original] = p;
-
- return p;
-};
-
-
-exports.realpath = function realpath(p, cache, cb) {
- if (typeof cb !== 'function') {
- cb = maybeCallback(cache);
- cache = null;
- }
-
- // make p is absolute
- p = pathModule.resolve(p);
-
- if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
- return process.nextTick(cb.bind(null, null, cache[p]));
- }
-
- var original = p,
- seenLinks = {},
- knownHard = {};
-
- // current character position in p
- var pos;
- // the partial path so far, including a trailing slash if any
- var current;
- // the partial path without a trailing slash (except when pointing at a root)
- var base;
- // the partial path scanned in the previous round, with slash
- var previous;
-
- start();
-
- function start() {
- // Skip over roots
- var m = splitRootRe.exec(p);
- pos = m[0].length;
- current = m[0];
- base = m[0];
- previous = '';
-
- // On windows, check that the root exists. On unix there is no need.
- if (isWindows && !knownHard[base]) {
- fs.lstat(base, function(err) {
- if (err) return cb(err);
- knownHard[base] = true;
- LOOP();
- });
- } else {
- process.nextTick(LOOP);
- }
- }
-
- // walk down the path, swapping out linked pathparts for their real
- // values
- function LOOP() {
- // stop if scanned past end of path
- if (pos >= p.length) {
- if (cache) cache[original] = p;
- return cb(null, p);
- }
-
- // find the next part
- nextPartRe.lastIndex = pos;
- var result = nextPartRe.exec(p);
- previous = current;
- current += result[0];
- base = previous + result[1];
- pos = nextPartRe.lastIndex;
-
- // continue if not a symlink
- if (knownHard[base] || (cache && cache[base] === base)) {
- return process.nextTick(LOOP);
- }
-
- if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
- // known symbolic link. no need to stat again.
- return gotResolvedLink(cache[base]);
- }
-
- return fs.lstat(base, gotStat);
- }
-
- function gotStat(err, stat) {
- if (err) return cb(err);
-
- // if not a symlink, skip to the next path part
- if (!stat.isSymbolicLink()) {
- knownHard[base] = true;
- if (cache) cache[base] = base;
- return process.nextTick(LOOP);
- }
-
- // stat & read the link if not read before
- // call gotTarget as soon as the link target is known
- // dev/ino always return 0 on windows, so skip the check.
- if (!isWindows) {
- var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);
- if (seenLinks.hasOwnProperty(id)) {
- return gotTarget(null, seenLinks[id], base);
- }
- }
- fs.stat(base, function(err) {
- if (err) return cb(err);
-
- fs.readlink(base, function(err, target) {
- if (!isWindows) seenLinks[id] = target;
- gotTarget(err, target);
- });
- });
- }
-
- function gotTarget(err, target, base) {
- if (err) return cb(err);
-
- var resolvedLink = pathModule.resolve(previous, target);
- if (cache) cache[base] = resolvedLink;
- gotResolvedLink(resolvedLink);
- }
-
- function gotResolvedLink(resolvedLink) {
- // resolve the link, then start over
- p = pathModule.resolve(resolvedLink, p.slice(pos));
- start();
- }
-};
diff --git a/assets/node_modules/fs.realpath/package.json b/assets/node_modules/fs.realpath/package.json
deleted file mode 100644
index 3edc57d..0000000
--- a/assets/node_modules/fs.realpath/package.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "name": "fs.realpath",
- "version": "1.0.0",
- "description": "Use node's fs.realpath, but fall back to the JS implementation if the native one fails",
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {},
- "scripts": {
- "test": "tap test/*.js --cov"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/isaacs/fs.realpath.git"
- },
- "keywords": [
- "realpath",
- "fs",
- "polyfill"
- ],
- "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
- "license": "ISC",
- "files": [
- "old.js",
- "index.js"
- ]
-}
diff --git a/assets/node_modules/gensync/LICENSE b/assets/node_modules/gensync/LICENSE
deleted file mode 100644
index af7f781..0000000
--- a/assets/node_modules/gensync/LICENSE
+++ /dev/null
@@ -1,7 +0,0 @@
-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/assets/node_modules/gensync/README.md b/assets/node_modules/gensync/README.md
deleted file mode 100644
index f68ce1a..0000000
--- a/assets/node_modules/gensync/README.md
+++ /dev/null
@@ -1,196 +0,0 @@
-# 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/assets/node_modules/gensync/index.js b/assets/node_modules/gensync/index.js
deleted file mode 100644
index 399bc11..0000000
--- a/assets/node_modules/gensync/index.js
+++ /dev/null
@@ -1,366 +0,0 @@
-"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]);
-
- 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) {
- return sync.call(this, args);
- }
-
- 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/assets/node_modules/gensync/index.js.flow b/assets/node_modules/gensync/index.js.flow
deleted file mode 100644
index fa22e0b..0000000
--- a/assets/node_modules/gensync/index.js.flow
+++ /dev/null
@@ -1,32 +0,0 @@
-// @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/assets/node_modules/gensync/package.json b/assets/node_modules/gensync/package.json
deleted file mode 100644
index 5f35f15..0000000
--- a/assets/node_modules/gensync/package.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "gensync",
- "version": "1.0.0-beta.1",
- "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>",
- "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/assets/node_modules/gensync/test/.babelrc b/assets/node_modules/gensync/test/.babelrc
deleted file mode 100644
index cc7f4e9..0000000
--- a/assets/node_modules/gensync/test/.babelrc
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- presets: [
- ["env", { targets: { node: "current" }}],
- ],
-}
diff --git a/assets/node_modules/gensync/test/index.test.js b/assets/node_modules/gensync/test/index.test.js
deleted file mode 100644
index fd4f231..0000000
--- a/assets/node_modules/gensync/test/index.test.js
+++ /dev/null
@@ -1,475 +0,0 @@
-"use strict";
-
-const promisify = require("util.promisify");
-const gensync = require("../");
-
-const TEST_ERROR = new Error("TEST_ERROR");
-
-const DID_ERROR = new Error("DID_ERROR");
-
-const doSuccess = gensync({
- sync: () => 42,
- async: () => Promise.resolve(42),
-});
-
-const doError = gensync({
- sync: () => {
- throw DID_ERROR;
- },
- async: () => Promise.reject(DID_ERROR),
-});
-
-function throwTestError() {
- throw TEST_ERROR;
-}
-
-async function expectResult(
- fn,
- arg,
- { error, value, expectSync = false, syncErrback = expectSync }
-) {
- if (!expectSync) {
- expect(() => fn.sync(arg)).toThrow(TEST_ERROR);
- } else if (error) {
- expect(() => fn.sync(arg)).toThrow(error);
- } else {
- expect(fn.sync(arg)).toBe(value);
- }
-
- if (error) {
- await expect(fn.async(arg)).rejects.toBe(error);
- } else {
- await expect(fn.async(arg)).resolves.toBe(value);
- }
-
- await new Promise((resolve, reject) => {
- let sync = true;
- fn.errback(arg, (err, val) => {
- try {
- expect(err).toBe(error);
- expect(val).toBe(value);
- expect(sync).toBe(syncErrback);
-
- resolve();
- } catch (e) {
- reject(e);
- }
- });
- sync = false;
- });
-}
-
-describe("gensync({})", () => {
- describe("option validation", () => {
- test("disallow async and errback handler together", () => {
- try {
- gensync({
- sync: throwTestError,
- async: throwTestError,
- errback: throwTestError,
- });
-
- throwTestError();
- } catch (err) {
- expect(err.message).toMatch(
- /Expected one of either opts.async or opts.errback, but got _both_\./
- );
- expect(err.code).toBe("GENSYNC_OPTIONS_ERROR");
- }
- });
-
- test("disallow missing sync handler", () => {
- try {
- gensync({
- async: throwTestError,
- });
-
- throwTestError();
- } catch (err) {
- expect(err.message).toMatch(/Expected opts.sync to be a function./);
- expect(err.code).toBe("GENSYNC_OPTIONS_ERROR");
- }
- });
-
- test("errback callback required", () => {
- const fn = gensync({
- sync: throwTestError,
- async: throwTestError,
- });
-
- try {
- fn.errback();
-
- throwTestError();
- } catch (err) {
- expect(err.message).toMatch(/function called without callback/);
- expect(err.code).toBe("GENSYNC_ERRBACK_NO_CALLBACK");
- }
- });
- });
-
- describe("generator function metadata", () => {
- test("automatic naming", () => {
- expect(
- gensync({
- sync: function readFileSync() {},
- async: () => {},
- }).name
- ).toBe("readFile");
- expect(
- gensync({
- sync: function readFile() {},
- async: () => {},
- }).name
- ).toBe("readFile");
- expect(
- gensync({
- sync: function readFileAsync() {},
- async: () => {},
- }).name
- ).toBe("readFileAsync");
-
- expect(
- gensync({
- sync: () => {},
- async: function readFileSync() {},
- }).name
- ).toBe("readFileSync");
- expect(
- gensync({
- sync: () => {},
- async: function readFile() {},
- }).name
- ).toBe("readFile");
- expect(
- gensync({
- sync: () => {},
- async: function readFileAsync() {},
- }).name
- ).toBe("readFile");
-
- expect(
- gensync({
- sync: () => {},
- errback: function readFileSync() {},
- }).name
- ).toBe("readFileSync");
- expect(
- gensync({
- sync: () => {},
- errback: function readFile() {},
- }).name
- ).toBe("readFile");
- expect(
- gensync({
- sync: () => {},
- errback: function readFileAsync() {},
- }).name
- ).toBe("readFileAsync");
- });
-
- test("explicit naming", () => {
- expect(
- gensync({
- name: "readFile",
- sync: () => {},
- async: () => {},
- }).name
- ).toBe("readFile");
- });
-
- test("default arity", () => {
- expect(
- gensync({
- sync: function(a, b, c, d, e, f, g){ throwTestError(); },
- async: throwTestError,
- }).length
- ).toBe(7);
- });
-
- test("explicit arity", () => {
- expect(
- gensync({
- arity: 3,
- sync: throwTestError,
- async: throwTestError,
- }).length
- ).toBe(3);
- });
- });
-
- describe("'sync' handler", async () => {
- test("success", async () => {
- const fn = gensync({
- sync: (...args) => JSON.stringify(args),
- });
-
- await expectResult(fn, 42, { value: "[42]", expectSync: true });
- });
-
- test("failure", async () => {
- const fn = gensync({
- sync: (...args) => {
- throw JSON.stringify(args);
- },
- });
-
- await expectResult(fn, 42, { error: "[42]", expectSync: true });
- });
- });
-
- describe("'async' handler", async () => {
- test("success", async () => {
- const fn = gensync({
- sync: throwTestError,
- async: (...args) => Promise.resolve(JSON.stringify(args)),
- });
-
- await expectResult(fn, 42, { value: "[42]" });
- });
-
- test("failure", async () => {
- const fn = gensync({
- sync: throwTestError,
- async: (...args) => Promise.reject(JSON.stringify(args)),
- });
-
- await expectResult(fn, 42, { error: "[42]" });
- });
- });
-
- describe("'errback' sync handler", async () => {
- test("success", async () => {
- const fn = gensync({
- sync: throwTestError,
- errback: (...args) => args.pop()(null, JSON.stringify(args)),
- });
-
- await expectResult(fn, 42, { value: "[42]", syncErrback: true });
- });
-
- test("failure", async () => {
- const fn = gensync({
- sync: throwTestError,
- errback: (...args) => args.pop()(JSON.stringify(args)),
- });
-
- await expectResult(fn, 42, { error: "[42]", syncErrback: true });
- });
- });
-
- describe("'errback' async handler", async () => {
- test("success", async () => {
- const fn = gensync({
- sync: throwTestError,
- errback: (...args) =>
- process.nextTick(() => args.pop()(null, JSON.stringify(args))),
- });
-
- await expectResult(fn, 42, { value: "[42]" });
- });
-
- test("failure", async () => {
- const fn = gensync({
- sync: throwTestError,
- errback: (...args) =>
- process.nextTick(() => args.pop()(JSON.stringify(args))),
- });
-
- await expectResult(fn, 42, { error: "[42]" });
- });
- });
-});
-
-describe("gensync(function* () {})", () => {
- test("sync throw before body", async () => {
- const fn = gensync(function*(arg = throwTestError()) {});
-
- await expectResult(fn, undefined, {
- error: TEST_ERROR,
- syncErrback: true,
- });
- });
-
- test("sync throw inside body", async () => {
- const fn = gensync(function*() {
- throwTestError();
- });
-
- await expectResult(fn, undefined, {
- error: TEST_ERROR,
- syncErrback: true,
- });
- });
-
- test("async throw inside body", async () => {
- const fn = gensync(function*() {
- const val = yield* doSuccess();
- throwTestError();
- });
-
- await expectResult(fn, undefined, {
- error: TEST_ERROR,
- });
- });
-
- test("error inside body", async () => {
- const fn = gensync(function*() {
- yield* doError();
- });
-
- await expectResult(fn, undefined, {
- error: DID_ERROR,
- expectSync: true,
- syncErrback: false,
- });
- });
-
- test("successful return value", async () => {
- const fn = gensync(function*() {
- const value = yield* doSuccess();
-
- expect(value).toBe(42);
-
- return 84;
- });
-
- await expectResult(fn, undefined, {
- value: 84,
- expectSync: true,
- syncErrback: false,
- });
- });
-
- test("successful final value", async () => {
- const fn = gensync(function*() {
- return 42;
- });
-
- await expectResult(fn, undefined, {
- value: 42,
- expectSync: true,
- });
- });
-
- test("yield unexpected object", async () => {
- const fn = gensync(function*() {
- yield {};
- });
-
- try {
- await fn.async();
-
- throwTestError();
- } catch (err) {
- expect(err.message).toMatch(
- /Got unexpected yielded value in gensync generator/
- );
- expect(err.code).toBe("GENSYNC_EXPECTED_START");
- }
- });
-
- test("yield suspend yield", async () => {
- const fn = gensync(function*() {
- yield Symbol.for("gensync:v1:start");
-
- // Should be "yield*" for no error.
- yield {};
- });
-
- try {
- await fn.async();
-
- throwTestError();
- } catch (err) {
- expect(err.message).toMatch(/Expected GENSYNC_SUSPEND, got {}/);
- expect(err.code).toBe("GENSYNC_EXPECTED_SUSPEND");
- }
- });
-
- test("yield suspend return", async () => {
- const fn = gensync(function*() {
- yield Symbol.for("gensync:v1:start");
-
- // Should be "yield*" for no error.
- return {};
- });
-
- try {
- await fn.async();
-
- throwTestError();
- } catch (err) {
- expect(err.message).toMatch(/Unexpected generator completion/);
- expect(err.code).toBe("GENSYNC_EXPECTED_SUSPEND");
- }
- });
-});
-
-describe("gensync.all()", () => {
- test("success", async () => {
- const fn = gensync(function*() {
- const result = yield* gensync.all([doSuccess(), doSuccess()]);
-
- expect(result).toEqual([42, 42]);
- });
-
- await expectResult(fn, undefined, {
- value: undefined,
- expectSync: true,
- syncErrback: false,
- });
- });
-
- test("error first", async () => {
- const fn = gensync(function*() {
- yield* gensync.all([doError(), doSuccess()]);
- });
-
- await expectResult(fn, undefined, {
- error: DID_ERROR,
- expectSync: true,
- syncErrback: false,
- });
- });
-
- test("error last", async () => {
- const fn = gensync(function*() {
- yield* gensync.all([doSuccess(), doError()]);
- });
-
- await expectResult(fn, undefined, {
- error: DID_ERROR,
- expectSync: true,
- syncErrback: false,
- });
- });
-});
-
-describe("gensync.race()", () => {
- test("success", async () => {
- const fn = gensync(function*() {
- const result = yield* gensync.race([doSuccess(), doError()]);
-
- expect(result).toEqual(42);
- });
-
- await expectResult(fn, undefined, {
- value: undefined,
- expectSync: true,
- syncErrback: false,
- });
- });
-
- test("error", async () => {
- const fn = gensync(function*() {
- yield* gensync.race([doError(), doSuccess()]);
- });
-
- await expectResult(fn, undefined, {
- error: DID_ERROR,
- expectSync: true,
- syncErrback: false,
- });
- });
-});
diff --git a/assets/node_modules/get-stdin/index.d.ts b/assets/node_modules/get-stdin/index.d.ts
deleted file mode 100644
index 9bda3c1..0000000
--- a/assets/node_modules/get-stdin/index.d.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-/// <reference types="node"/>
-
-declare const getStdin: {
- /**
- Get [`stdin`](https://nodejs.org/api/process.html#process_process_stdin) as a `string`.
-
- @returns A promise that is resolved when the `end` event fires on the `stdin` stream, indicating that there is no more data to be read. In a TTY context, an empty `string` is returned.
-
- @example
- ```
- // example.ts
- import getStdin = require('get-stdin');
-
- (async () => {
- console.log(await getStdin());
- //=> 'unicorns'
- })
-
- // $ echo unicorns | ts-node example.ts
- // unicorns
- ```
- */
- (): Promise<string>;
-
- /**
- Get [`stdin`](https://nodejs.org/api/process.html#process_process_stdin) as a `Buffer`.
-
- @returns A promise that is resolved when the `end` event fires on the `stdin` stream, indicating that there is no more data to be read. In a TTY context, an empty `Buffer` is returned.
- */
- buffer(): Promise<Buffer>;
-};
-
-export = getStdin;
diff --git a/assets/node_modules/get-stdin/index.js b/assets/node_modules/get-stdin/index.js
deleted file mode 100644
index b091359..0000000
--- a/assets/node_modules/get-stdin/index.js
+++ /dev/null
@@ -1,52 +0,0 @@
-'use strict';
-const {stdin} = process;
-
-module.exports = () => {
- let result = '';
-
- return new Promise(resolve => {
- if (stdin.isTTY) {
- resolve(result);
- return;
- }
-
- stdin.setEncoding('utf8');
-
- stdin.on('readable', () => {
- let chunk;
-
- while ((chunk = stdin.read())) {
- result += chunk;
- }
- });
-
- stdin.on('end', () => {
- resolve(result);
- });
- });
-};
-
-module.exports.buffer = () => {
- const result = [];
- let length = 0;
-
- return new Promise(resolve => {
- if (stdin.isTTY) {
- resolve(Buffer.concat([]));
- return;
- }
-
- stdin.on('readable', () => {
- let chunk;
-
- while ((chunk = stdin.read())) {
- result.push(chunk);
- length += chunk.length;
- }
- });
-
- stdin.on('end', () => {
- resolve(Buffer.concat(result, length));
- });
- });
-};
diff --git a/assets/node_modules/get-stdin/license b/assets/node_modules/get-stdin/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/get-stdin/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/get-stdin/package.json b/assets/node_modules/get-stdin/package.json
deleted file mode 100644
index 7cbc1c4..0000000
--- a/assets/node_modules/get-stdin/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "get-stdin",
- "version": "7.0.0",
- "description": "Get stdin as a string or buffer",
- "license": "MIT",
- "repository": "sindresorhus/get-stdin",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava test.js test-buffer.js && echo unicorns | node test-real.js && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "std",
- "stdin",
- "stdio",
- "concat",
- "buffer",
- "stream",
- "process",
- "read"
- ],
- "devDependencies": {
- "@types/node": "^11.13.4",
- "ava": "^1.4.1",
- "delay": "^4.2.0",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/get-stdin/readme.md b/assets/node_modules/get-stdin/readme.md
deleted file mode 100644
index 7c70eee..0000000
--- a/assets/node_modules/get-stdin/readme.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# get-stdin [![Build Status](https://travis-ci.org/sindresorhus/get-stdin.svg?branch=master)](https://travis-ci.org/sindresorhus/get-stdin)
-
-> Get [stdin](https://nodejs.org/api/process.html#process_process_stdin) as a string or buffer
-
-
-## Install
-
-```
-$ npm install get-stdin
-```
-
-
-## Usage
-
-```js
-// example.js
-const getStdin = require('get-stdin');
-
-(async () => {
- console.log(await getStdin());
- //=> 'unicorns'
-})();
-```
-
-```
-$ echo unicorns | node example.js
-unicorns
-```
-
-
-## API
-
-Both methods returns a promise that is resolved when the `end` event fires on the `stdin` stream, indicating that there is no more data to be read.
-
-### getStdin()
-
-Get `stdin` as a `string`.
-
-In a TTY context, a promise that resolves to an empty `string` is returned.
-
-### getStdin.buffer()
-
-Get `stdin` as a `Buffer`.
-
-In a TTY context, a promise that resolves to an empty `Buffer` is returned.
-
-
-## Related
-
-- [get-stream](https://github.com/sindresorhus/get-stream) - Get a stream as a string or buffer
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/glob-parent/LICENSE b/assets/node_modules/glob-parent/LICENSE
deleted file mode 100644
index 63222d7..0000000
--- a/assets/node_modules/glob-parent/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) 2015, 2019 Elan Shanker
-
-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/assets/node_modules/glob-parent/README.md b/assets/node_modules/glob-parent/README.md
deleted file mode 100644
index 36a2793..0000000
--- a/assets/node_modules/glob-parent/README.md
+++ /dev/null
@@ -1,137 +0,0 @@
-<p align="center">
- <a href="https://gulpjs.com">
- <img height="257" width="114" src="https://raw.githubusercontent.com/gulpjs/artwork/master/gulp-2x.png">
- </a>
-</p>
-
-# glob-parent
-
-[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Azure Pipelines Build Status][azure-pipelines-image]][azure-pipelines-url] [![Travis Build Status][travis-image]][travis-url] [![AppVeyor Build Status][appveyor-image]][appveyor-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Gitter chat][gitter-image]][gitter-url]
-
-Extract the non-magic parent path from a glob string.
-
-## Usage
-
-```js
-var globParent = require('glob-parent');
-
-globParent('path/to/*.js'); // 'path/to'
-globParent('/root/path/to/*.js'); // '/root/path/to'
-globParent('/*.js'); // '/'
-globParent('*.js'); // '.'
-globParent('**/*.js'); // '.'
-globParent('path/{to,from}'); // 'path'
-globParent('path/!(to|from)'); // 'path'
-globParent('path/?(to|from)'); // 'path'
-globParent('path/+(to|from)'); // 'path'
-globParent('path/*(to|from)'); // 'path'
-globParent('path/@(to|from)'); // 'path'
-globParent('path/**/*'); // 'path'
-
-// if provided a non-glob path, returns the nearest dir
-globParent('path/foo/bar.js'); // 'path/foo'
-globParent('path/foo/'); // 'path/foo'
-globParent('path/foo'); // 'path' (see issue #3 for details)
-```
-
-## API
-
-### `globParent(maybeGlobString, [options])`
-
-Takes a string and returns the part of the path before the glob begins. Be aware of Escaping rules and Limitations below.
-
-#### options
-
-```js
-{
- // Disables the automatic conversion of slashes for Windows
- flipBackslashes: true
-}
-```
-
-## Escaping
-
-The following characters have special significance in glob patterns and must be escaped if you want them to be treated as regular path characters:
-
-- `?` (question mark) unless used as a path segment alone
-- `*` (asterisk)
-- `|` (pipe)
-- `(` (opening parenthesis)
-- `)` (closing parenthesis)
-- `{` (opening curly brace)
-- `}` (closing curly brace)
-- `[` (opening bracket)
-- `]` (closing bracket)
-
-**Example**
-
-```js
-globParent('foo/[bar]/') // 'foo'
-globParent('foo/\\[bar]/') // 'foo/[bar]'
-```
-
-## Limitations
-
-### Braces & Brackets
-This library attempts a quick and imperfect method of determining which path
-parts have glob magic without fully parsing/lexing the pattern. There are some
-advanced use cases that can trip it up, such as nested braces where the outer
-pair is escaped and the inner one contains a path separator. If you find
-yourself in the unlikely circumstance of being affected by this or need to
-ensure higher-fidelity glob handling in your library, it is recommended that you
-pre-process your input with [expand-braces] and/or [expand-brackets].
-
-### Windows
-Backslashes are not valid path separators for globs. If a path with backslashes
-is provided anyway, for simple cases, glob-parent will replace the path
-separator for you and return the non-glob parent path (now with
-forward-slashes, which are still valid as Windows path separators).
-
-This cannot be used in conjunction with escape characters.
-
-```js
-// BAD
-globParent('C:\\Program Files \\(x86\\)\\*.ext') // 'C:/Program Files /(x86/)'
-
-// GOOD
-globParent('C:/Program Files\\(x86\\)/*.ext') // 'C:/Program Files (x86)'
-```
-
-If you are using escape characters for a pattern without path parts (i.e.
-relative to `cwd`), prefix with `./` to avoid confusing glob-parent.
-
-```js
-// BAD
-globParent('foo \\[bar]') // 'foo '
-globParent('foo \\[bar]*') // 'foo '
-
-// GOOD
-globParent('./foo \\[bar]') // 'foo [bar]'
-globParent('./foo \\[bar]*') // '.'
-```
-
-## License
-
-ISC
-
-[expand-braces]: https://github.com/jonschlinkert/expand-braces
-[expand-brackets]: https://github.com/jonschlinkert/expand-brackets
-
-[downloads-image]: https://img.shields.io/npm/dm/glob-parent.svg
-[npm-url]: https://www.npmjs.com/package/glob-parent
-[npm-image]: https://img.shields.io/npm/v/glob-parent.svg
-
-[azure-pipelines-url]: https://dev.azure.com/gulpjs/gulp/_build/latest?definitionId=2&branchName=master
-[azure-pipelines-image]: https://dev.azure.com/gulpjs/gulp/_apis/build/status/glob-parent?branchName=master
-
-[travis-url]: https://travis-ci.org/gulpjs/glob-parent
-[travis-image]: https://img.shields.io/travis/gulpjs/glob-parent.svg?label=travis-ci
-
-[appveyor-url]: https://ci.appveyor.com/project/gulpjs/glob-parent
-[appveyor-image]: https://img.shields.io/appveyor/ci/gulpjs/glob-parent.svg?label=appveyor
-
-[coveralls-url]: https://coveralls.io/r/gulpjs/glob-parent
-[coveralls-image]: https://img.shields.io/coveralls/gulpjs/glob-parent/master.svg
-
-[gitter-url]: https://gitter.im/gulpjs/gulp
-[gitter-image]: https://badges.gitter.im/gulpjs/gulp.svg
diff --git a/assets/node_modules/glob-parent/index.js b/assets/node_modules/glob-parent/index.js
deleted file mode 100644
index 2ded6ea..0000000
--- a/assets/node_modules/glob-parent/index.js
+++ /dev/null
@@ -1,41 +0,0 @@
-'use strict';
-
-var isGlob = require('is-glob');
-var pathPosixDirname = require('path').posix.dirname;
-var isWin32 = require('os').platform() === 'win32';
-
-var slash = '/';
-var backslash = /\\/g;
-var enclosure = /[\{\[].*[\/]*.*[\}\]]$/;
-var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/;
-var escaped = /\\([\*\?\|\[\]\(\)\{\}])/g;
-
-/**
- * @param {string} str
- * @param {Object} opts
- * @param {boolean} [opts.flipBackslashes=true]
- */
-module.exports = function globParent(str, opts) {
- var options = Object.assign({ flipBackslashes: true }, opts);
-
- // flip windows path separators
- if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {
- str = str.replace(backslash, slash);
- }
-
- // special case for strings ending in enclosure containing path separator
- if (enclosure.test(str)) {
- str += slash;
- }
-
- // preserves full path in case of trailing path separator
- str += 'a';
-
- // remove path parts that are globby
- do {
- str = pathPosixDirname(str);
- } while (isGlob(str) || globby.test(str));
-
- // remove escape chars and return result
- return str.replace(escaped, '$1');
-};
diff --git a/assets/node_modules/glob-parent/package.json b/assets/node_modules/glob-parent/package.json
deleted file mode 100644
index 0f7ec23..0000000
--- a/assets/node_modules/glob-parent/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "glob-parent",
- "version": "5.1.0",
- "description": "Extract the non-magic parent path from a glob string.",
- "author": "Gulp Team <team@gulpjs.com> (https://gulpjs.com/)",
- "contributors": [
- "Elan Shanker (https://github.com/es128)",
- "Blaine Bublitz <blaine.bublitz@gmail.com>"
- ],
- "repository": "gulpjs/glob-parent",
- "license": "ISC",
- "engines": {
- "node": ">= 6"
- },
- "main": "index.js",
- "files": [
- "LICENSE",
- "index.js"
- ],
- "scripts": {
- "lint": "eslint .",
- "pretest": "npm run lint",
- "test": "nyc mocha --async-only",
- "azure-pipelines": "nyc mocha --async-only --reporter xunit -O output=test.xunit",
- "coveralls": "nyc report --reporter=text-lcov | coveralls"
- },
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "devDependencies": {
- "coveralls": "github:phated/node-coveralls#2.x",
- "eslint": "^2.13.1",
- "eslint-config-gulp": "^3.0.1",
- "expect": "^1.20.2",
- "mocha": "^6.0.2",
- "nyc": "^13.3.0"
- },
- "keywords": [
- "glob",
- "parent",
- "strip",
- "path",
- "dirname",
- "directory",
- "base",
- "wildcard"
- ]
-}
diff --git a/assets/node_modules/glob/LICENSE b/assets/node_modules/glob/LICENSE
deleted file mode 100644
index 42ca266..0000000
--- a/assets/node_modules/glob/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-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.
-
-## Glob Logo
-
-Glob's logo created by Tanya Brassie <http://tanyabrassie.com/>, licensed
-under a Creative Commons Attribution-ShareAlike 4.0 International License
-https://creativecommons.org/licenses/by-sa/4.0/
diff --git a/assets/node_modules/glob/README.md b/assets/node_modules/glob/README.md
deleted file mode 100644
index 0916a48..0000000
--- a/assets/node_modules/glob/README.md
+++ /dev/null
@@ -1,375 +0,0 @@
-# Glob
-
-Match files using the patterns the shell uses, like stars and stuff.
-
-[![Build Status](https://travis-ci.org/isaacs/node-glob.svg?branch=master)](https://travis-ci.org/isaacs/node-glob/) [![Build Status](https://ci.appveyor.com/api/projects/status/kd7f3yftf7unxlsx?svg=true)](https://ci.appveyor.com/project/isaacs/node-glob) [![Coverage Status](https://coveralls.io/repos/isaacs/node-glob/badge.svg?branch=master&service=github)](https://coveralls.io/github/isaacs/node-glob?branch=master)
-
-This is a glob implementation in JavaScript. It uses the `minimatch`
-library to do its matching.
-
-![](logo/glob.png)
-
-## Usage
-
-Install with npm
-
-```
-npm i glob
-```
-
-```javascript
-var glob = require("glob")
-
-// options is optional
-glob("**/*.js", options, function (er, files) {
- // files is an array of filenames.
- // If the `nonull` option is set, and nothing
- // was found, then files is ["**/*.js"]
- // er is an error object or null.
-})
-```
-
-## Glob Primer
-
-"Globs" are the patterns you type when you do stuff like `ls *.js` on
-the command line, or put `build/*` in a `.gitignore` file.
-
-Before parsing the path part patterns, braced sections are expanded
-into a set. Braced sections start with `{` and end with `}`, with any
-number of comma-delimited sections within. Braced sections may contain
-slash characters, so `a{/b/c,bcd}` would expand into `a/b/c` and `abcd`.
-
-The following characters have special magic meaning when used in a
-path portion:
-
-* `*` Matches 0 or more characters in a single path portion
-* `?` Matches 1 character
-* `[...]` Matches a range of characters, similar to a RegExp range.
- If the first character of the range is `!` or `^` then it matches
- any character not in the range.
-* `!(pattern|pattern|pattern)` Matches anything that does not match
- any of the patterns provided.
-* `?(pattern|pattern|pattern)` Matches zero or one occurrence of the
- patterns provided.
-* `+(pattern|pattern|pattern)` Matches one or more occurrences of the
- patterns provided.
-* `*(a|b|c)` Matches zero or more occurrences of the patterns provided
-* `@(pattern|pat*|pat?erN)` Matches exactly one of the patterns
- provided
-* `**` If a "globstar" is alone in a path portion, then it matches
- zero or more directories and subdirectories searching for matches.
- It does not crawl symlinked directories.
-
-### Dots
-
-If a file or directory path portion has a `.` as the first character,
-then it will not match any glob pattern unless that pattern's
-corresponding path part also has a `.` as its first character.
-
-For example, the pattern `a/.*/c` would match the file at `a/.b/c`.
-However the pattern `a/*/c` would not, because `*` does not start with
-a dot character.
-
-You can make glob treat dots as normal characters by setting
-`dot:true` in the options.
-
-### Basename Matching
-
-If you set `matchBase:true` in the options, and the pattern has no
-slashes in it, then it will seek for any file anywhere in the tree
-with a matching basename. For example, `*.js` would match
-`test/simple/basic.js`.
-
-### Empty Sets
-
-If no matching files are found, then an empty array is returned. This
-differs from the shell, where the pattern itself is returned. For
-example:
-
- $ echo a*s*d*f
- a*s*d*f
-
-To get the bash-style behavior, set the `nonull:true` in the options.
-
-### See Also:
-
-* `man sh`
-* `man bash` (Search for "Pattern Matching")
-* `man 3 fnmatch`
-* `man 5 gitignore`
-* [minimatch documentation](https://github.com/isaacs/minimatch)
-
-## glob.hasMagic(pattern, [options])
-
-Returns `true` if there are any special characters in the pattern, and
-`false` otherwise.
-
-Note that the options affect the results. If `noext:true` is set in
-the options object, then `+(a|b)` will not be considered a magic
-pattern. If the pattern has a brace expansion, like `a/{b/c,x/y}`
-then that is considered magical, unless `nobrace:true` is set in the
-options.
-
-## glob(pattern, [options], cb)
-
-* `pattern` `{String}` Pattern to be matched
-* `options` `{Object}`
-* `cb` `{Function}`
- * `err` `{Error | null}`
- * `matches` `{Array<String>}` filenames found matching the pattern
-
-Perform an asynchronous glob search.
-
-## glob.sync(pattern, [options])
-
-* `pattern` `{String}` Pattern to be matched
-* `options` `{Object}`
-* return: `{Array<String>}` filenames found matching the pattern
-
-Perform a synchronous glob search.
-
-## Class: glob.Glob
-
-Create a Glob object by instantiating the `glob.Glob` class.
-
-```javascript
-var Glob = require("glob").Glob
-var mg = new Glob(pattern, options, cb)
-```
-
-It's an EventEmitter, and starts walking the filesystem to find matches
-immediately.
-
-### new glob.Glob(pattern, [options], [cb])
-
-* `pattern` `{String}` pattern to search for
-* `options` `{Object}`
-* `cb` `{Function}` Called when an error occurs, or matches are found
- * `err` `{Error | null}`
- * `matches` `{Array<String>}` filenames found matching the pattern
-
-Note that if the `sync` flag is set in the options, then matches will
-be immediately available on the `g.found` member.
-
-### Properties
-
-* `minimatch` The minimatch object that the glob uses.
-* `options` The options object passed in.
-* `aborted` Boolean which is set to true when calling `abort()`. There
- is no way at this time to continue a glob search after aborting, but
- you can re-use the statCache to avoid having to duplicate syscalls.
-* `cache` Convenience object. Each field has the following possible
- values:
- * `false` - Path does not exist
- * `true` - Path exists
- * `'FILE'` - Path exists, and is not a directory
- * `'DIR'` - Path exists, and is a directory
- * `[file, entries, ...]` - Path exists, is a directory, and the
- array value is the results of `fs.readdir`
-* `statCache` Cache of `fs.stat` results, to prevent statting the same
- path multiple times.
-* `symlinks` A record of which paths are symbolic links, which is
- relevant in resolving `**` patterns.
-* `realpathCache` An optional object which is passed to `fs.realpath`
- to minimize unnecessary syscalls. It is stored on the instantiated
- Glob object, and may be re-used.
-
-### Events
-
-* `end` When the matching is finished, this is emitted with all the
- matches found. If the `nonull` option is set, and no match was found,
- then the `matches` list contains the original pattern. The matches
- are sorted, unless the `nosort` flag is set.
-* `match` Every time a match is found, this is emitted with the specific
- thing that matched. It is not deduplicated or resolved to a realpath.
-* `error` Emitted when an unexpected error is encountered, or whenever
- any fs error occurs if `options.strict` is set.
-* `abort` When `abort()` is called, this event is raised.
-
-### Methods
-
-* `pause` Temporarily stop the search
-* `resume` Resume the search
-* `abort` Stop the search forever
-
-### Options
-
-All the options that can be passed to Minimatch can also be passed to
-Glob to change pattern matching behavior. Also, some have been added,
-or have glob-specific ramifications.
-
-All options are false by default, unless otherwise noted.
-
-All options are added to the Glob object, as well.
-
-If you are running many `glob` operations, you can pass a Glob object
-as the `options` argument to a subsequent operation to shortcut some
-`stat` and `readdir` calls. At the very least, you may pass in shared
-`symlinks`, `statCache`, `realpathCache`, and `cache` options, so that
-parallel glob operations will be sped up by sharing information about
-the filesystem.
-
-* `cwd` The current working directory in which to search. Defaults
- to `process.cwd()`.
-* `root` The place where patterns starting with `/` will be mounted
- onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix
- systems, and `C:\` or some such on Windows.)
-* `dot` Include `.dot` files in normal matches and `globstar` matches.
- Note that an explicit dot in a portion of the pattern will always
- match dot files.
-* `nomount` By default, a pattern starting with a forward-slash will be
- "mounted" onto the root setting, so that a valid filesystem path is
- returned. Set this flag to disable that behavior.
-* `mark` Add a `/` character to directory matches. Note that this
- requires additional stat calls.
-* `nosort` Don't sort the results.
-* `stat` Set to true to stat *all* results. This reduces performance
- somewhat, and is completely unnecessary, unless `readdir` is presumed
- to be an untrustworthy indicator of file existence.
-* `silent` When an unusual error is encountered when attempting to
- read a directory, a warning will be printed to stderr. Set the
- `silent` option to true to suppress these warnings.
-* `strict` When an unusual error is encountered when attempting to
- read a directory, the process will just continue on in search of
- other matches. Set the `strict` option to raise an error in these
- cases.
-* `cache` See `cache` property above. Pass in a previously generated
- cache object to save some fs calls.
-* `statCache` A cache of results of filesystem information, to prevent
- unnecessary stat calls. While it should not normally be necessary
- to set this, you may pass the statCache from one glob() call to the
- options object of another, if you know that the filesystem will not
- change between calls. (See "Race Conditions" below.)
-* `symlinks` A cache of known symbolic links. You may pass in a
- previously generated `symlinks` object to save `lstat` calls when
- resolving `**` matches.
-* `sync` DEPRECATED: use `glob.sync(pattern, opts)` instead.
-* `nounique` In some cases, brace-expanded patterns can result in the
- same file showing up multiple times in the result set. By default,
- this implementation prevents duplicates in the result set. Set this
- flag to disable that behavior.
-* `nonull` Set to never return an empty set, instead returning a set
- containing the pattern itself. This is the default in glob(3).
-* `debug` Set to enable debug logging in minimatch and glob.
-* `nobrace` Do not expand `{a,b}` and `{1..3}` brace sets.
-* `noglobstar` Do not match `**` against multiple filenames. (Ie,
- treat it as a normal `*` instead.)
-* `noext` Do not match `+(a|b)` "extglob" patterns.
-* `nocase` Perform a case-insensitive match. Note: on
- case-insensitive filesystems, non-magic patterns will match by
- default, since `stat` and `readdir` will not raise errors.
-* `matchBase` Perform a basename-only match if the pattern does not
- contain any slash characters. That is, `*.js` would be treated as
- equivalent to `**/*.js`, matching all js files in all directories.
-* `nodir` Do not match directories, only files. (Note: to match
- *only* directories, simply put a `/` at the end of the pattern.)
-* `ignore` Add a pattern or an array of glob patterns to exclude matches.
- Note: `ignore` patterns are *always* in `dot:true` mode, regardless
- of any other settings.
-* `follow` Follow symlinked directories when expanding `**` patterns.
- Note that this can result in a lot of duplicate references in the
- presence of cyclic links.
-* `realpath` Set to true to call `fs.realpath` on all of the results.
- In the case of a symlink that cannot be resolved, the full absolute
- path to the matched entry is returned (though it will usually be a
- broken symlink)
-* `absolute` Set to true to always receive absolute paths for matched
- files. Unlike `realpath`, this also affects the values returned in
- the `match` event.
-
-## Comparisons to other fnmatch/glob implementations
-
-While strict compliance with the existing standards is a worthwhile
-goal, some discrepancies exist between node-glob and other
-implementations, and are intentional.
-
-The double-star character `**` is supported by default, unless the
-`noglobstar` flag is set. This is supported in the manner of bsdglob
-and bash 4.3, where `**` only has special significance if it is the only
-thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but
-`a/**b` will not.
-
-Note that symlinked directories are not crawled as part of a `**`,
-though their contents may match against subsequent portions of the
-pattern. This prevents infinite loops and duplicates and the like.
-
-If an escaped pattern has no matches, and the `nonull` flag is set,
-then glob returns the pattern as-provided, rather than
-interpreting the character escapes. For example,
-`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
-`"*a?"`. This is akin to setting the `nullglob` option in bash, except
-that it does not resolve escaped pattern characters.
-
-If brace expansion is not disabled, then it is performed before any
-other interpretation of the glob pattern. Thus, a pattern like
-`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded
-**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are
-checked for validity. Since those two are valid, matching proceeds.
-
-### Comments and Negation
-
-Previously, this module let you mark a pattern as a "comment" if it
-started with a `#` character, or a "negated" pattern if it started
-with a `!` character.
-
-These options were deprecated in version 5, and removed in version 6.
-
-To specify things that should not match, use the `ignore` option.
-
-## Windows
-
-**Please only use forward-slashes in glob expressions.**
-
-Though windows uses either `/` or `\` as its path separator, only `/`
-characters are used by this glob implementation. You must use
-forward-slashes **only** in glob expressions. Back-slashes will always
-be interpreted as escape characters, not path separators.
-
-Results from absolute patterns such as `/foo/*` are mounted onto the
-root setting using `path.join`. On windows, this will by default result
-in `/foo/*` matching `C:\foo\bar.txt`.
-
-## Race Conditions
-
-Glob searching, by its very nature, is susceptible to race conditions,
-since it relies on directory walking and such.
-
-As a result, it is possible that a file that exists when glob looks for
-it may have been deleted or modified by the time it returns the result.
-
-As part of its internal implementation, this program caches all stat
-and readdir calls that it makes, in order to cut down on system
-overhead. However, this also makes it even more susceptible to races,
-especially if the cache or statCache objects are reused between glob
-calls.
-
-Users are thus advised not to use a glob result as a guarantee of
-filesystem state in the face of rapid changes. For the vast majority
-of operations, this is never a problem.
-
-## Glob Logo
-Glob's logo was created by [Tanya Brassie](http://tanyabrassie.com/). Logo files can be found [here](https://github.com/isaacs/node-glob/tree/master/logo).
-
-The logo is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/).
-
-## Contributing
-
-Any change to behavior (including bugfixes) must come with a test.
-
-Patches that fail tests or reduce performance will be rejected.
-
-```
-# to run tests
-npm test
-
-# to re-generate test fixtures
-npm run test-regen
-
-# to benchmark against bash/zsh
-npm run bench
-
-# to profile javascript
-npm run prof
-```
-
-![](oh-my-glob.gif)
diff --git a/assets/node_modules/glob/changelog.md b/assets/node_modules/glob/changelog.md
deleted file mode 100644
index 4163677..0000000
--- a/assets/node_modules/glob/changelog.md
+++ /dev/null
@@ -1,67 +0,0 @@
-## 7.0
-
-- Raise error if `options.cwd` is specified, and not a directory
-
-## 6.0
-
-- Remove comment and negation pattern support
-- Ignore patterns are always in `dot:true` mode
-
-## 5.0
-
-- Deprecate comment and negation patterns
-- Fix regression in `mark` and `nodir` options from making all cache
- keys absolute path.
-- Abort if `fs.readdir` returns an error that's unexpected
-- Don't emit `match` events for ignored items
-- Treat ENOTSUP like ENOTDIR in readdir
-
-## 4.5
-
-- Add `options.follow` to always follow directory symlinks in globstar
-- Add `options.realpath` to call `fs.realpath` on all results
-- Always cache based on absolute path
-
-## 4.4
-
-- Add `options.ignore`
-- Fix handling of broken symlinks
-
-## 4.3
-
-- Bump minimatch to 2.x
-- Pass all tests on Windows
-
-## 4.2
-
-- Add `glob.hasMagic` function
-- Add `options.nodir` flag
-
-## 4.1
-
-- Refactor sync and async implementations for performance
-- Throw if callback provided to sync glob function
-- Treat symbolic links in globstar results the same as Bash 4.3
-
-## 4.0
-
-- Use `^` for dependency versions (bumped major because this breaks
- older npm versions)
-- Ensure callbacks are only ever called once
-- switch to ISC license
-
-## 3.x
-
-- Rewrite in JavaScript
-- Add support for setting root, cwd, and windows support
-- Cache many fs calls
-- Add globstar support
-- emit match events
-
-## 2.x
-
-- Use `glob.h` and `fnmatch.h` from NetBSD
-
-## 1.x
-
-- `glob.h` static binding.
diff --git a/assets/node_modules/glob/common.js b/assets/node_modules/glob/common.js
deleted file mode 100644
index 66651bb..0000000
--- a/assets/node_modules/glob/common.js
+++ /dev/null
@@ -1,240 +0,0 @@
-exports.alphasort = alphasort
-exports.alphasorti = alphasorti
-exports.setopts = setopts
-exports.ownProp = ownProp
-exports.makeAbs = makeAbs
-exports.finish = finish
-exports.mark = mark
-exports.isIgnored = isIgnored
-exports.childrenIgnored = childrenIgnored
-
-function ownProp (obj, field) {
- return Object.prototype.hasOwnProperty.call(obj, field)
-}
-
-var path = require("path")
-var minimatch = require("minimatch")
-var isAbsolute = require("path-is-absolute")
-var Minimatch = minimatch.Minimatch
-
-function alphasorti (a, b) {
- return a.toLowerCase().localeCompare(b.toLowerCase())
-}
-
-function alphasort (a, b) {
- return a.localeCompare(b)
-}
-
-function setupIgnores (self, options) {
- self.ignore = options.ignore || []
-
- if (!Array.isArray(self.ignore))
- self.ignore = [self.ignore]
-
- if (self.ignore.length) {
- self.ignore = self.ignore.map(ignoreMap)
- }
-}
-
-// ignore patterns are always in dot:true mode.
-function ignoreMap (pattern) {
- var gmatcher = null
- if (pattern.slice(-3) === '/**') {
- var gpattern = pattern.replace(/(\/\*\*)+$/, '')
- gmatcher = new Minimatch(gpattern, { dot: true })
- }
-
- return {
- matcher: new Minimatch(pattern, { dot: true }),
- gmatcher: gmatcher
- }
-}
-
-function setopts (self, pattern, options) {
- if (!options)
- options = {}
-
- // base-matching: just use globstar for that.
- if (options.matchBase && -1 === pattern.indexOf("/")) {
- if (options.noglobstar) {
- throw new Error("base matching requires globstar")
- }
- pattern = "**/" + pattern
- }
-
- self.silent = !!options.silent
- self.pattern = pattern
- self.strict = options.strict !== false
- self.realpath = !!options.realpath
- self.realpathCache = options.realpathCache || Object.create(null)
- self.follow = !!options.follow
- self.dot = !!options.dot
- self.mark = !!options.mark
- self.nodir = !!options.nodir
- if (self.nodir)
- self.mark = true
- self.sync = !!options.sync
- self.nounique = !!options.nounique
- self.nonull = !!options.nonull
- self.nosort = !!options.nosort
- self.nocase = !!options.nocase
- self.stat = !!options.stat
- self.noprocess = !!options.noprocess
- self.absolute = !!options.absolute
-
- self.maxLength = options.maxLength || Infinity
- self.cache = options.cache || Object.create(null)
- self.statCache = options.statCache || Object.create(null)
- self.symlinks = options.symlinks || Object.create(null)
-
- setupIgnores(self, options)
-
- self.changedCwd = false
- var cwd = process.cwd()
- if (!ownProp(options, "cwd"))
- self.cwd = cwd
- else {
- self.cwd = path.resolve(options.cwd)
- self.changedCwd = self.cwd !== cwd
- }
-
- self.root = options.root || path.resolve(self.cwd, "/")
- self.root = path.resolve(self.root)
- if (process.platform === "win32")
- self.root = self.root.replace(/\\/g, "/")
-
- // TODO: is an absolute `cwd` supposed to be resolved against `root`?
- // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')
- self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)
- if (process.platform === "win32")
- self.cwdAbs = self.cwdAbs.replace(/\\/g, "/")
- self.nomount = !!options.nomount
-
- // disable comments and negation in Minimatch.
- // Note that they are not supported in Glob itself anyway.
- options.nonegate = true
- options.nocomment = true
-
- self.minimatch = new Minimatch(pattern, options)
- self.options = self.minimatch.options
-}
-
-function finish (self) {
- var nou = self.nounique
- var all = nou ? [] : Object.create(null)
-
- for (var i = 0, l = self.matches.length; i < l; i ++) {
- var matches = self.matches[i]
- if (!matches || Object.keys(matches).length === 0) {
- if (self.nonull) {
- // do like the shell, and spit out the literal glob
- var literal = self.minimatch.globSet[i]
- if (nou)
- all.push(literal)
- else
- all[literal] = true
- }
- } else {
- // had matches
- var m = Object.keys(matches)
- if (nou)
- all.push.apply(all, m)
- else
- m.forEach(function (m) {
- all[m] = true
- })
- }
- }
-
- if (!nou)
- all = Object.keys(all)
-
- if (!self.nosort)
- all = all.sort(self.nocase ? alphasorti : alphasort)
-
- // at *some* point we statted all of these
- if (self.mark) {
- for (var i = 0; i < all.length; i++) {
- all[i] = self._mark(all[i])
- }
- if (self.nodir) {
- all = all.filter(function (e) {
- var notDir = !(/\/$/.test(e))
- var c = self.cache[e] || self.cache[makeAbs(self, e)]
- if (notDir && c)
- notDir = c !== 'DIR' && !Array.isArray(c)
- return notDir
- })
- }
- }
-
- if (self.ignore.length)
- all = all.filter(function(m) {
- return !isIgnored(self, m)
- })
-
- self.found = all
-}
-
-function mark (self, p) {
- var abs = makeAbs(self, p)
- var c = self.cache[abs]
- var m = p
- if (c) {
- var isDir = c === 'DIR' || Array.isArray(c)
- var slash = p.slice(-1) === '/'
-
- if (isDir && !slash)
- m += '/'
- else if (!isDir && slash)
- m = m.slice(0, -1)
-
- if (m !== p) {
- var mabs = makeAbs(self, m)
- self.statCache[mabs] = self.statCache[abs]
- self.cache[mabs] = self.cache[abs]
- }
- }
-
- return m
-}
-
-// lotta situps...
-function makeAbs (self, f) {
- var abs = f
- if (f.charAt(0) === '/') {
- abs = path.join(self.root, f)
- } else if (isAbsolute(f) || f === '') {
- abs = f
- } else if (self.changedCwd) {
- abs = path.resolve(self.cwd, f)
- } else {
- abs = path.resolve(f)
- }
-
- if (process.platform === 'win32')
- abs = abs.replace(/\\/g, '/')
-
- return abs
-}
-
-
-// Return true, if pattern ends with globstar '**', for the accompanying parent directory.
-// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents
-function isIgnored (self, path) {
- if (!self.ignore.length)
- return false
-
- return self.ignore.some(function(item) {
- return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))
- })
-}
-
-function childrenIgnored (self, path) {
- if (!self.ignore.length)
- return false
-
- return self.ignore.some(function(item) {
- return !!(item.gmatcher && item.gmatcher.match(path))
- })
-}
diff --git a/assets/node_modules/glob/glob.js b/assets/node_modules/glob/glob.js
deleted file mode 100644
index 58dec0f..0000000
--- a/assets/node_modules/glob/glob.js
+++ /dev/null
@@ -1,790 +0,0 @@
-// Approach:
-//
-// 1. Get the minimatch set
-// 2. For each pattern in the set, PROCESS(pattern, false)
-// 3. Store matches per-set, then uniq them
-//
-// PROCESS(pattern, inGlobStar)
-// Get the first [n] items from pattern that are all strings
-// Join these together. This is PREFIX.
-// If there is no more remaining, then stat(PREFIX) and
-// add to matches if it succeeds. END.
-//
-// If inGlobStar and PREFIX is symlink and points to dir
-// set ENTRIES = []
-// else readdir(PREFIX) as ENTRIES
-// If fail, END
-//
-// with ENTRIES
-// If pattern[n] is GLOBSTAR
-// // handle the case where the globstar match is empty
-// // by pruning it out, and testing the resulting pattern
-// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)
-// // handle other cases.
-// for ENTRY in ENTRIES (not dotfiles)
-// // attach globstar + tail onto the entry
-// // Mark that this entry is a globstar match
-// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)
-//
-// else // not globstar
-// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)
-// Test ENTRY against pattern[n]
-// If fails, continue
-// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])
-//
-// Caveat:
-// Cache all stats and readdirs results to minimize syscall. Since all
-// we ever care about is existence and directory-ness, we can just keep
-// `true` for files, and [children,...] for directories, or `false` for
-// things that don't exist.
-
-module.exports = glob
-
-var fs = require('fs')
-var rp = require('fs.realpath')
-var minimatch = require('minimatch')
-var Minimatch = minimatch.Minimatch
-var inherits = require('inherits')
-var EE = require('events').EventEmitter
-var path = require('path')
-var assert = require('assert')
-var isAbsolute = require('path-is-absolute')
-var globSync = require('./sync.js')
-var common = require('./common.js')
-var alphasort = common.alphasort
-var alphasorti = common.alphasorti
-var setopts = common.setopts
-var ownProp = common.ownProp
-var inflight = require('inflight')
-var util = require('util')
-var childrenIgnored = common.childrenIgnored
-var isIgnored = common.isIgnored
-
-var once = require('once')
-
-function glob (pattern, options, cb) {
- if (typeof options === 'function') cb = options, options = {}
- if (!options) options = {}
-
- if (options.sync) {
- if (cb)
- throw new TypeError('callback provided to sync glob')
- return globSync(pattern, options)
- }
-
- return new Glob(pattern, options, cb)
-}
-
-glob.sync = globSync
-var GlobSync = glob.GlobSync = globSync.GlobSync
-
-// old api surface
-glob.glob = glob
-
-function extend (origin, add) {
- if (add === null || typeof add !== 'object') {
- return origin
- }
-
- var keys = Object.keys(add)
- var i = keys.length
- while (i--) {
- origin[keys[i]] = add[keys[i]]
- }
- return origin
-}
-
-glob.hasMagic = function (pattern, options_) {
- var options = extend({}, options_)
- options.noprocess = true
-
- var g = new Glob(pattern, options)
- var set = g.minimatch.set
-
- if (!pattern)
- return false
-
- if (set.length > 1)
- return true
-
- for (var j = 0; j < set[0].length; j++) {
- if (typeof set[0][j] !== 'string')
- return true
- }
-
- return false
-}
-
-glob.Glob = Glob
-inherits(Glob, EE)
-function Glob (pattern, options, cb) {
- if (typeof options === 'function') {
- cb = options
- options = null
- }
-
- if (options && options.sync) {
- if (cb)
- throw new TypeError('callback provided to sync glob')
- return new GlobSync(pattern, options)
- }
-
- if (!(this instanceof Glob))
- return new Glob(pattern, options, cb)
-
- setopts(this, pattern, options)
- this._didRealPath = false
-
- // process each pattern in the minimatch set
- var n = this.minimatch.set.length
-
- // The matches are stored as {<filename>: true,...} so that
- // duplicates are automagically pruned.
- // Later, we do an Object.keys() on these.
- // Keep them as a list so we can fill in when nonull is set.
- this.matches = new Array(n)
-
- if (typeof cb === 'function') {
- cb = once(cb)
- this.on('error', cb)
- this.on('end', function (matches) {
- cb(null, matches)
- })
- }
-
- var self = this
- this._processing = 0
-
- this._emitQueue = []
- this._processQueue = []
- this.paused = false
-
- if (this.noprocess)
- return this
-
- if (n === 0)
- return done()
-
- var sync = true
- for (var i = 0; i < n; i ++) {
- this._process(this.minimatch.set[i], i, false, done)
- }
- sync = false
-
- function done () {
- --self._processing
- if (self._processing <= 0) {
- if (sync) {
- process.nextTick(function () {
- self._finish()
- })
- } else {
- self._finish()
- }
- }
- }
-}
-
-Glob.prototype._finish = function () {
- assert(this instanceof Glob)
- if (this.aborted)
- return
-
- if (this.realpath && !this._didRealpath)
- return this._realpath()
-
- common.finish(this)
- this.emit('end', this.found)
-}
-
-Glob.prototype._realpath = function () {
- if (this._didRealpath)
- return
-
- this._didRealpath = true
-
- var n = this.matches.length
- if (n === 0)
- return this._finish()
-
- var self = this
- for (var i = 0; i < this.matches.length; i++)
- this._realpathSet(i, next)
-
- function next () {
- if (--n === 0)
- self._finish()
- }
-}
-
-Glob.prototype._realpathSet = function (index, cb) {
- var matchset = this.matches[index]
- if (!matchset)
- return cb()
-
- var found = Object.keys(matchset)
- var self = this
- var n = found.length
-
- if (n === 0)
- return cb()
-
- var set = this.matches[index] = Object.create(null)
- found.forEach(function (p, i) {
- // If there's a problem with the stat, then it means that
- // one or more of the links in the realpath couldn't be
- // resolved. just return the abs value in that case.
- p = self._makeAbs(p)
- rp.realpath(p, self.realpathCache, function (er, real) {
- if (!er)
- set[real] = true
- else if (er.syscall === 'stat')
- set[p] = true
- else
- self.emit('error', er) // srsly wtf right here
-
- if (--n === 0) {
- self.matches[index] = set
- cb()
- }
- })
- })
-}
-
-Glob.prototype._mark = function (p) {
- return common.mark(this, p)
-}
-
-Glob.prototype._makeAbs = function (f) {
- return common.makeAbs(this, f)
-}
-
-Glob.prototype.abort = function () {
- this.aborted = true
- this.emit('abort')
-}
-
-Glob.prototype.pause = function () {
- if (!this.paused) {
- this.paused = true
- this.emit('pause')
- }
-}
-
-Glob.prototype.resume = function () {
- if (this.paused) {
- this.emit('resume')
- this.paused = false
- if (this._emitQueue.length) {
- var eq = this._emitQueue.slice(0)
- this._emitQueue.length = 0
- for (var i = 0; i < eq.length; i ++) {
- var e = eq[i]
- this._emitMatch(e[0], e[1])
- }
- }
- if (this._processQueue.length) {
- var pq = this._processQueue.slice(0)
- this._processQueue.length = 0
- for (var i = 0; i < pq.length; i ++) {
- var p = pq[i]
- this._processing--
- this._process(p[0], p[1], p[2], p[3])
- }
- }
- }
-}
-
-Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
- assert(this instanceof Glob)
- assert(typeof cb === 'function')
-
- if (this.aborted)
- return
-
- this._processing++
- if (this.paused) {
- this._processQueue.push([pattern, index, inGlobStar, cb])
- return
- }
-
- //console.error('PROCESS %d', this._processing, pattern)
-
- // Get the first [n] parts of pattern that are all strings.
- var n = 0
- while (typeof pattern[n] === 'string') {
- n ++
- }
- // now n is the index of the first one that is *not* a string.
-
- // see if there's anything else
- var prefix
- switch (n) {
- // if not, then this is rather simple
- case pattern.length:
- this._processSimple(pattern.join('/'), index, cb)
- return
-
- case 0:
- // pattern *starts* with some non-trivial item.
- // going to readdir(cwd), but not include the prefix in matches.
- prefix = null
- break
-
- default:
- // pattern has some string bits in the front.
- // whatever it starts with, whether that's 'absolute' like /foo/bar,
- // or 'relative' like '../baz'
- prefix = pattern.slice(0, n).join('/')
- break
- }
-
- var remain = pattern.slice(n)
-
- // get the list of entries.
- var read
- if (prefix === null)
- read = '.'
- else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {
- if (!prefix || !isAbsolute(prefix))
- prefix = '/' + prefix
- read = prefix
- } else
- read = prefix
-
- var abs = this._makeAbs(read)
-
- //if ignored, skip _processing
- if (childrenIgnored(this, read))
- return cb()
-
- var isGlobStar = remain[0] === minimatch.GLOBSTAR
- if (isGlobStar)
- this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)
- else
- this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)
-}
-
-Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {
- var self = this
- this._readdir(abs, inGlobStar, function (er, entries) {
- return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
- })
-}
-
-Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
-
- // if the abs isn't a dir, then nothing can match!
- if (!entries)
- return cb()
-
- // It will only match dot entries if it starts with a dot, or if
- // dot is set. Stuff like @(.foo|.bar) isn't allowed.
- var pn = remain[0]
- var negate = !!this.minimatch.negate
- var rawGlob = pn._glob
- var dotOk = this.dot || rawGlob.charAt(0) === '.'
-
- var matchedEntries = []
- for (var i = 0; i < entries.length; i++) {
- var e = entries[i]
- if (e.charAt(0) !== '.' || dotOk) {
- var m
- if (negate && !prefix) {
- m = !e.match(pn)
- } else {
- m = e.match(pn)
- }
- if (m)
- matchedEntries.push(e)
- }
- }
-
- //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)
-
- var len = matchedEntries.length
- // If there are no matched entries, then nothing matches.
- if (len === 0)
- return cb()
-
- // if this is the last remaining pattern bit, then no need for
- // an additional stat *unless* the user has specified mark or
- // stat explicitly. We know they exist, since readdir returned
- // them.
-
- if (remain.length === 1 && !this.mark && !this.stat) {
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
-
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- if (prefix) {
- if (prefix !== '/')
- e = prefix + '/' + e
- else
- e = prefix + e
- }
-
- if (e.charAt(0) === '/' && !this.nomount) {
- e = path.join(this.root, e)
- }
- this._emitMatch(index, e)
- }
- // This was the last one, and no stats were needed
- return cb()
- }
-
- // now test all matched entries as stand-ins for that part
- // of the pattern.
- remain.shift()
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- var newPattern
- if (prefix) {
- if (prefix !== '/')
- e = prefix + '/' + e
- else
- e = prefix + e
- }
- this._process([e].concat(remain), index, inGlobStar, cb)
- }
- cb()
-}
-
-Glob.prototype._emitMatch = function (index, e) {
- if (this.aborted)
- return
-
- if (isIgnored(this, e))
- return
-
- if (this.paused) {
- this._emitQueue.push([index, e])
- return
- }
-
- var abs = isAbsolute(e) ? e : this._makeAbs(e)
-
- if (this.mark)
- e = this._mark(e)
-
- if (this.absolute)
- e = abs
-
- if (this.matches[index][e])
- return
-
- if (this.nodir) {
- var c = this.cache[abs]
- if (c === 'DIR' || Array.isArray(c))
- return
- }
-
- this.matches[index][e] = true
-
- var st = this.statCache[abs]
- if (st)
- this.emit('stat', e, st)
-
- this.emit('match', e)
-}
-
-Glob.prototype._readdirInGlobStar = function (abs, cb) {
- if (this.aborted)
- return
-
- // follow all symlinked directories forever
- // just proceed as if this is a non-globstar situation
- if (this.follow)
- return this._readdir(abs, false, cb)
-
- var lstatkey = 'lstat\0' + abs
- var self = this
- var lstatcb = inflight(lstatkey, lstatcb_)
-
- if (lstatcb)
- fs.lstat(abs, lstatcb)
-
- function lstatcb_ (er, lstat) {
- if (er && er.code === 'ENOENT')
- return cb()
-
- var isSym = lstat && lstat.isSymbolicLink()
- self.symlinks[abs] = isSym
-
- // If it's not a symlink or a dir, then it's definitely a regular file.
- // don't bother doing a readdir in that case.
- if (!isSym && lstat && !lstat.isDirectory()) {
- self.cache[abs] = 'FILE'
- cb()
- } else
- self._readdir(abs, false, cb)
- }
-}
-
-Glob.prototype._readdir = function (abs, inGlobStar, cb) {
- if (this.aborted)
- return
-
- cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb)
- if (!cb)
- return
-
- //console.error('RD %j %j', +inGlobStar, abs)
- if (inGlobStar && !ownProp(this.symlinks, abs))
- return this._readdirInGlobStar(abs, cb)
-
- if (ownProp(this.cache, abs)) {
- var c = this.cache[abs]
- if (!c || c === 'FILE')
- return cb()
-
- if (Array.isArray(c))
- return cb(null, c)
- }
-
- var self = this
- fs.readdir(abs, readdirCb(this, abs, cb))
-}
-
-function readdirCb (self, abs, cb) {
- return function (er, entries) {
- if (er)
- self._readdirError(abs, er, cb)
- else
- self._readdirEntries(abs, entries, cb)
- }
-}
-
-Glob.prototype._readdirEntries = function (abs, entries, cb) {
- if (this.aborted)
- return
-
- // if we haven't asked to stat everything, then just
- // assume that everything in there exists, so we can avoid
- // having to stat it a second time.
- if (!this.mark && !this.stat) {
- for (var i = 0; i < entries.length; i ++) {
- var e = entries[i]
- if (abs === '/')
- e = abs + e
- else
- e = abs + '/' + e
- this.cache[e] = true
- }
- }
-
- this.cache[abs] = entries
- return cb(null, entries)
-}
-
-Glob.prototype._readdirError = function (f, er, cb) {
- if (this.aborted)
- return
-
- // handle errors, and cache the information
- switch (er.code) {
- case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205
- case 'ENOTDIR': // totally normal. means it *does* exist.
- var abs = this._makeAbs(f)
- this.cache[abs] = 'FILE'
- if (abs === this.cwdAbs) {
- var error = new Error(er.code + ' invalid cwd ' + this.cwd)
- error.path = this.cwd
- error.code = er.code
- this.emit('error', error)
- this.abort()
- }
- break
-
- case 'ENOENT': // not terribly unusual
- case 'ELOOP':
- case 'ENAMETOOLONG':
- case 'UNKNOWN':
- this.cache[this._makeAbs(f)] = false
- break
-
- default: // some unusual error. Treat as failure.
- this.cache[this._makeAbs(f)] = false
- if (this.strict) {
- this.emit('error', er)
- // If the error is handled, then we abort
- // if not, we threw out of here
- this.abort()
- }
- if (!this.silent)
- console.error('glob error', er)
- break
- }
-
- return cb()
-}
-
-Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {
- var self = this
- this._readdir(abs, inGlobStar, function (er, entries) {
- self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
- })
-}
-
-
-Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
- //console.error('pgs2', prefix, remain[0], entries)
-
- // no entries means not a dir, so it can never have matches
- // foo.txt/** doesn't match foo.txt
- if (!entries)
- return cb()
-
- // test without the globstar, and with every child both below
- // and replacing the globstar.
- var remainWithoutGlobStar = remain.slice(1)
- var gspref = prefix ? [ prefix ] : []
- var noGlobStar = gspref.concat(remainWithoutGlobStar)
-
- // the noGlobStar pattern exits the inGlobStar state
- this._process(noGlobStar, index, false, cb)
-
- var isSym = this.symlinks[abs]
- var len = entries.length
-
- // If it's a symlink, and we're in a globstar, then stop
- if (isSym && inGlobStar)
- return cb()
-
- for (var i = 0; i < len; i++) {
- var e = entries[i]
- if (e.charAt(0) === '.' && !this.dot)
- continue
-
- // these two cases enter the inGlobStar state
- var instead = gspref.concat(entries[i], remainWithoutGlobStar)
- this._process(instead, index, true, cb)
-
- var below = gspref.concat(entries[i], remain)
- this._process(below, index, true, cb)
- }
-
- cb()
-}
-
-Glob.prototype._processSimple = function (prefix, index, cb) {
- // XXX review this. Shouldn't it be doing the mounting etc
- // before doing stat? kinda weird?
- var self = this
- this._stat(prefix, function (er, exists) {
- self._processSimple2(prefix, index, er, exists, cb)
- })
-}
-Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {
-
- //console.error('ps2', prefix, exists)
-
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
-
- // If it doesn't exist, then just mark the lack of results
- if (!exists)
- return cb()
-
- if (prefix && isAbsolute(prefix) && !this.nomount) {
- var trail = /[\/\\]$/.test(prefix)
- if (prefix.charAt(0) === '/') {
- prefix = path.join(this.root, prefix)
- } else {
- prefix = path.resolve(this.root, prefix)
- if (trail)
- prefix += '/'
- }
- }
-
- if (process.platform === 'win32')
- prefix = prefix.replace(/\\/g, '/')
-
- // Mark this as a match
- this._emitMatch(index, prefix)
- cb()
-}
-
-// Returns either 'DIR', 'FILE', or false
-Glob.prototype._stat = function (f, cb) {
- var abs = this._makeAbs(f)
- var needDir = f.slice(-1) === '/'
-
- if (f.length > this.maxLength)
- return cb()
-
- if (!this.stat && ownProp(this.cache, abs)) {
- var c = this.cache[abs]
-
- if (Array.isArray(c))
- c = 'DIR'
-
- // It exists, but maybe not how we need it
- if (!needDir || c === 'DIR')
- return cb(null, c)
-
- if (needDir && c === 'FILE')
- return cb()
-
- // otherwise we have to stat, because maybe c=true
- // if we know it exists, but not what it is.
- }
-
- var exists
- var stat = this.statCache[abs]
- if (stat !== undefined) {
- if (stat === false)
- return cb(null, stat)
- else {
- var type = stat.isDirectory() ? 'DIR' : 'FILE'
- if (needDir && type === 'FILE')
- return cb()
- else
- return cb(null, type, stat)
- }
- }
-
- var self = this
- var statcb = inflight('stat\0' + abs, lstatcb_)
- if (statcb)
- fs.lstat(abs, statcb)
-
- function lstatcb_ (er, lstat) {
- if (lstat && lstat.isSymbolicLink()) {
- // If it's a symlink, then treat it as the target, unless
- // the target does not exist, then treat it as a file.
- return fs.stat(abs, function (er, stat) {
- if (er)
- self._stat2(f, abs, null, lstat, cb)
- else
- self._stat2(f, abs, er, stat, cb)
- })
- } else {
- self._stat2(f, abs, er, lstat, cb)
- }
- }
-}
-
-Glob.prototype._stat2 = function (f, abs, er, stat, cb) {
- if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
- this.statCache[abs] = false
- return cb()
- }
-
- var needDir = f.slice(-1) === '/'
- this.statCache[abs] = stat
-
- if (abs.slice(-1) === '/' && stat && !stat.isDirectory())
- return cb(null, false, stat)
-
- var c = true
- if (stat)
- c = stat.isDirectory() ? 'DIR' : 'FILE'
- this.cache[abs] = this.cache[abs] || c
-
- if (needDir && c === 'FILE')
- return cb()
-
- return cb(null, c, stat)
-}
diff --git a/assets/node_modules/glob/package.json b/assets/node_modules/glob/package.json
deleted file mode 100644
index 6477c30..0000000
--- a/assets/node_modules/glob/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
- "name": "glob",
- "description": "a little globber",
- "version": "7.1.6",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/node-glob.git"
- },
- "main": "glob.js",
- "files": [
- "glob.js",
- "sync.js",
- "common.js"
- ],
- "engines": {
- "node": "*"
- },
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "devDependencies": {
- "mkdirp": "0",
- "rimraf": "^2.2.8",
- "tap": "^12.0.1",
- "tick": "0.0.6"
- },
- "scripts": {
- "prepublish": "npm run benchclean",
- "profclean": "rm -f v8.log profile.txt",
- "test": "tap test/*.js --cov",
- "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js",
- "bench": "bash benchmark.sh",
- "prof": "bash prof.sh && cat profile.txt",
- "benchclean": "node benchclean.js"
- },
- "license": "ISC",
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
-}
diff --git a/assets/node_modules/glob/sync.js b/assets/node_modules/glob/sync.js
deleted file mode 100644
index c952134..0000000
--- a/assets/node_modules/glob/sync.js
+++ /dev/null
@@ -1,486 +0,0 @@
-module.exports = globSync
-globSync.GlobSync = GlobSync
-
-var fs = require('fs')
-var rp = require('fs.realpath')
-var minimatch = require('minimatch')
-var Minimatch = minimatch.Minimatch
-var Glob = require('./glob.js').Glob
-var util = require('util')
-var path = require('path')
-var assert = require('assert')
-var isAbsolute = require('path-is-absolute')
-var common = require('./common.js')
-var alphasort = common.alphasort
-var alphasorti = common.alphasorti
-var setopts = common.setopts
-var ownProp = common.ownProp
-var childrenIgnored = common.childrenIgnored
-var isIgnored = common.isIgnored
-
-function globSync (pattern, options) {
- if (typeof options === 'function' || arguments.length === 3)
- throw new TypeError('callback provided to sync glob\n'+
- 'See: https://github.com/isaacs/node-glob/issues/167')
-
- return new GlobSync(pattern, options).found
-}
-
-function GlobSync (pattern, options) {
- if (!pattern)
- throw new Error('must provide pattern')
-
- if (typeof options === 'function' || arguments.length === 3)
- throw new TypeError('callback provided to sync glob\n'+
- 'See: https://github.com/isaacs/node-glob/issues/167')
-
- if (!(this instanceof GlobSync))
- return new GlobSync(pattern, options)
-
- setopts(this, pattern, options)
-
- if (this.noprocess)
- return this
-
- var n = this.minimatch.set.length
- this.matches = new Array(n)
- for (var i = 0; i < n; i ++) {
- this._process(this.minimatch.set[i], i, false)
- }
- this._finish()
-}
-
-GlobSync.prototype._finish = function () {
- assert(this instanceof GlobSync)
- if (this.realpath) {
- var self = this
- this.matches.forEach(function (matchset, index) {
- var set = self.matches[index] = Object.create(null)
- for (var p in matchset) {
- try {
- p = self._makeAbs(p)
- var real = rp.realpathSync(p, self.realpathCache)
- set[real] = true
- } catch (er) {
- if (er.syscall === 'stat')
- set[self._makeAbs(p)] = true
- else
- throw er
- }
- }
- })
- }
- common.finish(this)
-}
-
-
-GlobSync.prototype._process = function (pattern, index, inGlobStar) {
- assert(this instanceof GlobSync)
-
- // Get the first [n] parts of pattern that are all strings.
- var n = 0
- while (typeof pattern[n] === 'string') {
- n ++
- }
- // now n is the index of the first one that is *not* a string.
-
- // See if there's anything else
- var prefix
- switch (n) {
- // if not, then this is rather simple
- case pattern.length:
- this._processSimple(pattern.join('/'), index)
- return
-
- case 0:
- // pattern *starts* with some non-trivial item.
- // going to readdir(cwd), but not include the prefix in matches.
- prefix = null
- break
-
- default:
- // pattern has some string bits in the front.
- // whatever it starts with, whether that's 'absolute' like /foo/bar,
- // or 'relative' like '../baz'
- prefix = pattern.slice(0, n).join('/')
- break
- }
-
- var remain = pattern.slice(n)
-
- // get the list of entries.
- var read
- if (prefix === null)
- read = '.'
- else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {
- if (!prefix || !isAbsolute(prefix))
- prefix = '/' + prefix
- read = prefix
- } else
- read = prefix
-
- var abs = this._makeAbs(read)
-
- //if ignored, skip processing
- if (childrenIgnored(this, read))
- return
-
- var isGlobStar = remain[0] === minimatch.GLOBSTAR
- if (isGlobStar)
- this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)
- else
- this._processReaddir(prefix, read, abs, remain, index, inGlobStar)
-}
-
-
-GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {
- var entries = this._readdir(abs, inGlobStar)
-
- // if the abs isn't a dir, then nothing can match!
- if (!entries)
- return
-
- // It will only match dot entries if it starts with a dot, or if
- // dot is set. Stuff like @(.foo|.bar) isn't allowed.
- var pn = remain[0]
- var negate = !!this.minimatch.negate
- var rawGlob = pn._glob
- var dotOk = this.dot || rawGlob.charAt(0) === '.'
-
- var matchedEntries = []
- for (var i = 0; i < entries.length; i++) {
- var e = entries[i]
- if (e.charAt(0) !== '.' || dotOk) {
- var m
- if (negate && !prefix) {
- m = !e.match(pn)
- } else {
- m = e.match(pn)
- }
- if (m)
- matchedEntries.push(e)
- }
- }
-
- var len = matchedEntries.length
- // If there are no matched entries, then nothing matches.
- if (len === 0)
- return
-
- // if this is the last remaining pattern bit, then no need for
- // an additional stat *unless* the user has specified mark or
- // stat explicitly. We know they exist, since readdir returned
- // them.
-
- if (remain.length === 1 && !this.mark && !this.stat) {
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
-
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- if (prefix) {
- if (prefix.slice(-1) !== '/')
- e = prefix + '/' + e
- else
- e = prefix + e
- }
-
- if (e.charAt(0) === '/' && !this.nomount) {
- e = path.join(this.root, e)
- }
- this._emitMatch(index, e)
- }
- // This was the last one, and no stats were needed
- return
- }
-
- // now test all matched entries as stand-ins for that part
- // of the pattern.
- remain.shift()
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- var newPattern
- if (prefix)
- newPattern = [prefix, e]
- else
- newPattern = [e]
- this._process(newPattern.concat(remain), index, inGlobStar)
- }
-}
-
-
-GlobSync.prototype._emitMatch = function (index, e) {
- if (isIgnored(this, e))
- return
-
- var abs = this._makeAbs(e)
-
- if (this.mark)
- e = this._mark(e)
-
- if (this.absolute) {
- e = abs
- }
-
- if (this.matches[index][e])
- return
-
- if (this.nodir) {
- var c = this.cache[abs]
- if (c === 'DIR' || Array.isArray(c))
- return
- }
-
- this.matches[index][e] = true
-
- if (this.stat)
- this._stat(e)
-}
-
-
-GlobSync.prototype._readdirInGlobStar = function (abs) {
- // follow all symlinked directories forever
- // just proceed as if this is a non-globstar situation
- if (this.follow)
- return this._readdir(abs, false)
-
- var entries
- var lstat
- var stat
- try {
- lstat = fs.lstatSync(abs)
- } catch (er) {
- if (er.code === 'ENOENT') {
- // lstat failed, doesn't exist
- return null
- }
- }
-
- var isSym = lstat && lstat.isSymbolicLink()
- this.symlinks[abs] = isSym
-
- // If it's not a symlink or a dir, then it's definitely a regular file.
- // don't bother doing a readdir in that case.
- if (!isSym && lstat && !lstat.isDirectory())
- this.cache[abs] = 'FILE'
- else
- entries = this._readdir(abs, false)
-
- return entries
-}
-
-GlobSync.prototype._readdir = function (abs, inGlobStar) {
- var entries
-
- if (inGlobStar && !ownProp(this.symlinks, abs))
- return this._readdirInGlobStar(abs)
-
- if (ownProp(this.cache, abs)) {
- var c = this.cache[abs]
- if (!c || c === 'FILE')
- return null
-
- if (Array.isArray(c))
- return c
- }
-
- try {
- return this._readdirEntries(abs, fs.readdirSync(abs))
- } catch (er) {
- this._readdirError(abs, er)
- return null
- }
-}
-
-GlobSync.prototype._readdirEntries = function (abs, entries) {
- // if we haven't asked to stat everything, then just
- // assume that everything in there exists, so we can avoid
- // having to stat it a second time.
- if (!this.mark && !this.stat) {
- for (var i = 0; i < entries.length; i ++) {
- var e = entries[i]
- if (abs === '/')
- e = abs + e
- else
- e = abs + '/' + e
- this.cache[e] = true
- }
- }
-
- this.cache[abs] = entries
-
- // mark and cache dir-ness
- return entries
-}
-
-GlobSync.prototype._readdirError = function (f, er) {
- // handle errors, and cache the information
- switch (er.code) {
- case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205
- case 'ENOTDIR': // totally normal. means it *does* exist.
- var abs = this._makeAbs(f)
- this.cache[abs] = 'FILE'
- if (abs === this.cwdAbs) {
- var error = new Error(er.code + ' invalid cwd ' + this.cwd)
- error.path = this.cwd
- error.code = er.code
- throw error
- }
- break
-
- case 'ENOENT': // not terribly unusual
- case 'ELOOP':
- case 'ENAMETOOLONG':
- case 'UNKNOWN':
- this.cache[this._makeAbs(f)] = false
- break
-
- default: // some unusual error. Treat as failure.
- this.cache[this._makeAbs(f)] = false
- if (this.strict)
- throw er
- if (!this.silent)
- console.error('glob error', er)
- break
- }
-}
-
-GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {
-
- var entries = this._readdir(abs, inGlobStar)
-
- // no entries means not a dir, so it can never have matches
- // foo.txt/** doesn't match foo.txt
- if (!entries)
- return
-
- // test without the globstar, and with every child both below
- // and replacing the globstar.
- var remainWithoutGlobStar = remain.slice(1)
- var gspref = prefix ? [ prefix ] : []
- var noGlobStar = gspref.concat(remainWithoutGlobStar)
-
- // the noGlobStar pattern exits the inGlobStar state
- this._process(noGlobStar, index, false)
-
- var len = entries.length
- var isSym = this.symlinks[abs]
-
- // If it's a symlink, and we're in a globstar, then stop
- if (isSym && inGlobStar)
- return
-
- for (var i = 0; i < len; i++) {
- var e = entries[i]
- if (e.charAt(0) === '.' && !this.dot)
- continue
-
- // these two cases enter the inGlobStar state
- var instead = gspref.concat(entries[i], remainWithoutGlobStar)
- this._process(instead, index, true)
-
- var below = gspref.concat(entries[i], remain)
- this._process(below, index, true)
- }
-}
-
-GlobSync.prototype._processSimple = function (prefix, index) {
- // XXX review this. Shouldn't it be doing the mounting etc
- // before doing stat? kinda weird?
- var exists = this._stat(prefix)
-
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
-
- // If it doesn't exist, then just mark the lack of results
- if (!exists)
- return
-
- if (prefix && isAbsolute(prefix) && !this.nomount) {
- var trail = /[\/\\]$/.test(prefix)
- if (prefix.charAt(0) === '/') {
- prefix = path.join(this.root, prefix)
- } else {
- prefix = path.resolve(this.root, prefix)
- if (trail)
- prefix += '/'
- }
- }
-
- if (process.platform === 'win32')
- prefix = prefix.replace(/\\/g, '/')
-
- // Mark this as a match
- this._emitMatch(index, prefix)
-}
-
-// Returns either 'DIR', 'FILE', or false
-GlobSync.prototype._stat = function (f) {
- var abs = this._makeAbs(f)
- var needDir = f.slice(-1) === '/'
-
- if (f.length > this.maxLength)
- return false
-
- if (!this.stat && ownProp(this.cache, abs)) {
- var c = this.cache[abs]
-
- if (Array.isArray(c))
- c = 'DIR'
-
- // It exists, but maybe not how we need it
- if (!needDir || c === 'DIR')
- return c
-
- if (needDir && c === 'FILE')
- return false
-
- // otherwise we have to stat, because maybe c=true
- // if we know it exists, but not what it is.
- }
-
- var exists
- var stat = this.statCache[abs]
- if (!stat) {
- var lstat
- try {
- lstat = fs.lstatSync(abs)
- } catch (er) {
- if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
- this.statCache[abs] = false
- return false
- }
- }
-
- if (lstat && lstat.isSymbolicLink()) {
- try {
- stat = fs.statSync(abs)
- } catch (er) {
- stat = lstat
- }
- } else {
- stat = lstat
- }
- }
-
- this.statCache[abs] = stat
-
- var c = true
- if (stat)
- c = stat.isDirectory() ? 'DIR' : 'FILE'
-
- this.cache[abs] = this.cache[abs] || c
-
- if (needDir && c === 'FILE')
- return false
-
- return c
-}
-
-GlobSync.prototype._mark = function (p) {
- return common.mark(this, p)
-}
-
-GlobSync.prototype._makeAbs = function (f) {
- return common.makeAbs(this, f)
-}
diff --git a/assets/node_modules/global-modules/LICENSE b/assets/node_modules/global-modules/LICENSE
deleted file mode 100644
index 7cccaf9..0000000
--- a/assets/node_modules/global-modules/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015-present, Jon Schlinkert.
-
-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/assets/node_modules/global-modules/README.md b/assets/node_modules/global-modules/README.md
deleted file mode 100644
index d86a264..0000000
--- a/assets/node_modules/global-modules/README.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# global-modules [![NPM version](https://img.shields.io/npm/v/global-modules.svg?style=flat)](https://www.npmjs.com/package/global-modules) [![NPM monthly downloads](https://img.shields.io/npm/dm/global-modules.svg?style=flat)](https://npmjs.org/package/global-modules) [![NPM total downloads](https://img.shields.io/npm/dt/global-modules.svg?style=flat)](https://npmjs.org/package/global-modules) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/global-modules.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/global-modules)
-
-> The directory used by npm for globally installed npm modules.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save global-modules
-```
-
-## Usage
-
-```js
-const globalModules = require('global-modules');
-console.log(globalModules);
-//=> '/usr/local/lib/node_modules'
-```
-_(Note that this path might be different based on platform, user-defined configuration settings, etc)_
-
-## About
-
-<details>
-<summary><strong>Contributing</strong></summary>
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-</details>
-
-<details>
-<summary><strong>Running Tests</strong></summary>
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-</details>
-
-<details>
-<summary><strong>Building docs</strong></summary>
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-</details>
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [git-config-path](https://www.npmjs.com/package/git-config-path): Resolve the path to the user's local or global .gitconfig. | [homepage](https://github.com/jonschlinkert/git-config-path "Resolve the path to the user's local or global .gitconfig.")
-* [global-prefix](https://www.npmjs.com/package/global-prefix): Get the npm global path prefix. | [homepage](https://github.com/jonschlinkert/global-prefix "Get the npm global path prefix.")
-* [npm-paths](https://www.npmjs.com/package/npm-paths): Returns an array of unique "npm" directories based on the user's platform and environment. | [homepage](https://github.com/jonschlinkert/npm-paths "Returns an array of unique "npm" directories based on the user's platform and environment.")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 20 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 1 | [Kikobeats](https://github.com/Kikobeats) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-
-### License
-
-Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on December 14, 2018._ \ No newline at end of file
diff --git a/assets/node_modules/global-modules/index.js b/assets/node_modules/global-modules/index.js
deleted file mode 100644
index 6696521..0000000
--- a/assets/node_modules/global-modules/index.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*!
- * global-modules <https://github.com/jonschlinkert/global-modules>
- *
- * Copyright (c) 2015-2017 Jon Schlinkert.
- * Licensed under the MIT license.
- */
-
-'use strict';
-
-const path = require('path');
-const prefix = require('global-prefix');
-let gm;
-
-function getPath() {
- if (process.platform === 'win32' || process.env.OSTYPE === 'msys' || process.env.OSTYPE === 'cygwin') {
- return path.resolve(prefix, 'node_modules');
- }
- return path.resolve(prefix, 'lib/node_modules');
-}
-
-/**
- * Expose `global-modules` path
- */
-
-Reflect.defineProperty(module, 'exports', {
- get() {
- return gm || (gm = getPath());
- }
-});
diff --git a/assets/node_modules/global-modules/package.json b/assets/node_modules/global-modules/package.json
deleted file mode 100644
index fe22005..0000000
--- a/assets/node_modules/global-modules/package.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "name": "global-modules",
- "description": "The directory used by npm for globally installed npm modules.",
- "version": "2.0.0",
- "homepage": "https://github.com/jonschlinkert/global-modules",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "JasonChang (https://packagist.org/packages/jason-chang)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Kiko Beats (https://kikobeats.com)"
- ],
- "repository": "jonschlinkert/global-modules",
- "bugs": {
- "url": "https://github.com/jonschlinkert/global-modules/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "global-prefix": "^3.0.0"
- },
- "devDependencies": {
- "gulp-format-md": "^2.0.0",
- "mocha": "^5.2.0"
- },
- "keywords": [
- "directory",
- "dirname",
- "global",
- "module",
- "modules",
- "package",
- "path",
- "prefix",
- "resolve"
- ],
- "verb": {
- "run": true,
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": [
- "git-config-path",
- "global-prefix",
- "npm-paths"
- ]
- },
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/assets/node_modules/global-prefix/LICENSE b/assets/node_modules/global-prefix/LICENSE
deleted file mode 100644
index 7cccaf9..0000000
--- a/assets/node_modules/global-prefix/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015-present, Jon Schlinkert.
-
-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/assets/node_modules/global-prefix/README.md b/assets/node_modules/global-prefix/README.md
deleted file mode 100644
index fd116ca..0000000
--- a/assets/node_modules/global-prefix/README.md
+++ /dev/null
@@ -1,92 +0,0 @@
-# global-prefix [![NPM version](https://img.shields.io/npm/v/global-prefix.svg?style=flat)](https://www.npmjs.com/package/global-prefix) [![NPM monthly downloads](https://img.shields.io/npm/dm/global-prefix.svg?style=flat)](https://npmjs.org/package/global-prefix) [![NPM total downloads](https://img.shields.io/npm/dt/global-prefix.svg?style=flat)](https://npmjs.org/package/global-prefix) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/global-prefix.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/global-prefix) [![Windows Build Status](https://img.shields.io/appveyor/ci/jonschlinkert/global-prefix.svg?style=flat&label=AppVeyor)](https://ci.appveyor.com/project/jonschlinkert/global-prefix)
-
-> Get the npm global path prefix.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save global-prefix
-```
-
-This is partially based on the code used by npm internally to resolve the global prefix.
-
-## Usage
-
-```js
-var prefix = require('global-prefix');
-//=> '/usr/local' (this path will differ by system and user-defined config)
-```
-
-## About
-
-<details>
-<summary><strong>Contributing</strong></summary>
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-</details>
-
-<details>
-<summary><strong>Running Tests</strong></summary>
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-</details>
-
-<details>
-<summary><strong>Building docs</strong></summary>
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-</details>
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [global-modules](https://www.npmjs.com/package/global-modules): The directory used by npm for globally installed npm modules. | [homepage](https://github.com/jonschlinkert/global-modules "The directory used by npm for globally installed npm modules.")
-* [global-paths](https://www.npmjs.com/package/global-paths): Returns an array of unique "global" directories based on the user's platform and environment. The… [more](https://github.com/jonschlinkert/global-paths) | [homepage](https://github.com/jonschlinkert/global-paths "Returns an array of unique "global" directories based on the user's platform and environment. The resulting paths can be used for doing lookups for generators or other globally installed npm packages. Node.js / JavaScript.")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 23 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 15 | [doowb](https://github.com/doowb) |
-| 2 | [phated](https://github.com/phated) |
-| 1 | [rmbaad](https://github.com/rmbaad) |
-| 1 | [avengerpenguin](https://github.com/avengerpenguin) |
-| 1 | [jorrit](https://github.com/jorrit) |
-| 1 | [mathiasvr](https://github.com/mathiasvr) |
-| 1 | [tunnckoCore](https://github.com/tunnckoCore) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-
-### License
-
-Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on October 11, 2018._ \ No newline at end of file
diff --git a/assets/node_modules/global-prefix/index.js b/assets/node_modules/global-prefix/index.js
deleted file mode 100644
index 1defb68..0000000
--- a/assets/node_modules/global-prefix/index.js
+++ /dev/null
@@ -1,85 +0,0 @@
-/*!
- * global-prefix <https://github.com/jonschlinkert/global-prefix>
- *
- * Copyright (c) 2015-present Jon Schlinkert.
- * Licensed under the MIT license.
- */
-
-'use strict';
-
-const fs = require('fs');
-const os = require('os');
-const path = require('path');
-const ini = require('ini');
-let prefix;
-
-const getPrefix = () => {
- if (process.env.PREFIX) return process.env.PREFIX;
- if (prefix) return prefix;
-
- // Start by checking if the global prefix is set by the user
- let home = os.homedir();
-
- // os.homedir() returns undefined if $HOME is not set; path.resolve requires strings
- if (home) {
- prefix = tryConfigPath(path.resolve(home, '.npmrc'));
- }
-
- if (prefix) {
- return prefix;
- }
-
- // Otherwise find the path of npm
- let npm = tryNpmPath();
- if (npm) {
- // Check the built-in npm config file
- prefix = tryConfigPath(path.resolve(npm, '..', '..', 'npmrc'));
-
- if (prefix) {
- // Now the global npm config can also be checked.
- prefix = tryConfigPath(path.resolve(prefix, 'etc', 'npmrc')) || prefix;
- }
- }
-
- if (!prefix) {
- let { APPDATA, DESTDIR, OSTYPE } = process.env;
-
- // c:\node\node.exe --> prefix=c:\node\
- if (process.platform === 'win32' || OSTYPE === 'msys' || OSTYPE === 'cygwin') {
- prefix = APPDATA ? path.join(APPDATA, 'npm') : path.dirname(process.execPath);
- return prefix;
- }
-
- // /usr/local/bin/node --> prefix=/usr/local
- prefix = path.dirname(path.dirname(process.execPath));
-
- // destdir only is respected on Unix
- if (DESTDIR) {
- prefix = path.join(DESTDIR, prefix);
- }
- }
-
- return prefix;
-}
-
-function tryNpmPath() {
- try {
- return fs.realpathSync(require('which').sync('npm'));
- } catch (err) { /* do nothing */ }
-}
-
-function tryConfigPath(configPath) {
- try {
- return ini.parse(fs.readFileSync(configPath, 'utf-8')).prefix;
- } catch (err) { /* do nothing */ }
-}
-
-/**
- * Expose `prefix`
- */
-
-Reflect.defineProperty(module, 'exports', {
- get() {
- return getPrefix();
- }
-});
diff --git a/assets/node_modules/global-prefix/node_modules/.bin/which b/assets/node_modules/global-prefix/node_modules/.bin/which
deleted file mode 120000
index 091d52a..0000000
--- a/assets/node_modules/global-prefix/node_modules/.bin/which
+++ /dev/null
@@ -1 +0,0 @@
-../../../which/bin/which \ No newline at end of file
diff --git a/assets/node_modules/global-prefix/package.json b/assets/node_modules/global-prefix/package.json
deleted file mode 100644
index 45a5758..0000000
--- a/assets/node_modules/global-prefix/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "name": "global-prefix",
- "description": "Get the npm global path prefix.",
- "version": "3.0.0",
- "homepage": "https://github.com/jonschlinkert/global-prefix",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Alexandr Bogachev (https://github.com/rmbaad)",
- "Brian Woodward (https://twitter.com/doowb)",
- "Charlike Mike Reagent (https://i.am.charlike.online)",
- "JasonChang (https://packagist.org/packages/jason-chang)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Jorrit Schippers (https://www.ncode.nl)",
- "Mathias Rasmussen (chrome://dino)",
- "Ross Fenning (http://rossfenning.co.uk)"
- ],
- "repository": "jonschlinkert/global-prefix",
- "bugs": {
- "url": "https://github.com/jonschlinkert/global-prefix/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "ini": "^1.3.5",
- "kind-of": "^6.0.2",
- "which": "^1.3.1"
- },
- "devDependencies": {
- "gulp-format-md": "^2.0.0",
- "mocha": "^5.2.0"
- },
- "keywords": [
- "global",
- "module",
- "modules",
- "npm",
- "path",
- "prefix",
- "resolve"
- ]
-}
diff --git a/assets/node_modules/globals/globals.json b/assets/node_modules/globals/globals.json
deleted file mode 100644
index 6f5ac02..0000000
--- a/assets/node_modules/globals/globals.json
+++ /dev/null
@@ -1,1563 +0,0 @@
-{
- "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/assets/node_modules/globals/index.js b/assets/node_modules/globals/index.js
deleted file mode 100644
index a951582..0000000
--- a/assets/node_modules/globals/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-'use strict';
-module.exports = require('./globals.json');
diff --git a/assets/node_modules/globals/license b/assets/node_modules/globals/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/globals/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/globals/package.json b/assets/node_modules/globals/package.json
deleted file mode 100644
index dfe459b..0000000
--- a/assets/node_modules/globals/package.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "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/assets/node_modules/globals/readme.md b/assets/node_modules/globals/readme.md
deleted file mode 100644
index 8c47855..0000000
--- a/assets/node_modules/globals/readme.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# 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/assets/node_modules/globby/gitignore.js b/assets/node_modules/globby/gitignore.js
deleted file mode 100644
index 3feaad6..0000000
--- a/assets/node_modules/globby/gitignore.js
+++ /dev/null
@@ -1,117 +0,0 @@
-'use strict';
-const {promisify} = require('util');
-const fs = require('fs');
-const path = require('path');
-const fastGlob = require('fast-glob');
-const gitIgnore = require('ignore');
-const slash = require('slash');
-
-const DEFAULT_IGNORE = [
- '**/node_modules/**',
- '**/flow-typed/**',
- '**/coverage/**',
- '**/.git'
-];
-
-const readFileP = promisify(fs.readFile);
-
-const mapGitIgnorePatternTo = base => ignore => {
- if (ignore.startsWith('!')) {
- return '!' + path.posix.join(base, ignore.slice(1));
- }
-
- return path.posix.join(base, ignore);
-};
-
-const parseGitIgnore = (content, options) => {
- const base = slash(path.relative(options.cwd, path.dirname(options.fileName)));
-
- return content
- .split(/\r?\n/)
- .filter(Boolean)
- .filter(line => !line.startsWith('#'))
- .map(mapGitIgnorePatternTo(base));
-};
-
-const reduceIgnore = files => {
- return files.reduce((ignores, file) => {
- ignores.add(parseGitIgnore(file.content, {
- cwd: file.cwd,
- fileName: file.filePath
- }));
- return ignores;
- }, gitIgnore());
-};
-
-const ensureAbsolutePathForCwd = (cwd, p) => {
- if (path.isAbsolute(p)) {
- if (p.startsWith(cwd)) {
- return p;
- }
-
- throw new Error(`Path ${p} is not in cwd ${cwd}`);
- }
-
- return path.join(cwd, p);
-};
-
-const getIsIgnoredPredecate = (ignores, cwd) => {
- return p => ignores.ignores(slash(path.relative(cwd, ensureAbsolutePathForCwd(cwd, p))));
-};
-
-const getFile = async (file, cwd) => {
- const filePath = path.join(cwd, file);
- const content = await readFileP(filePath, 'utf8');
-
- return {
- cwd,
- filePath,
- content
- };
-};
-
-const getFileSync = (file, cwd) => {
- const filePath = path.join(cwd, file);
- const content = fs.readFileSync(filePath, 'utf8');
-
- return {
- cwd,
- filePath,
- content
- };
-};
-
-const normalizeOptions = ({
- ignore = [],
- cwd = slash(process.cwd())
-} = {}) => {
- return {ignore, cwd};
-};
-
-module.exports = async options => {
- options = normalizeOptions(options);
-
- const paths = await fastGlob('**/.gitignore', {
- ignore: DEFAULT_IGNORE.concat(options.ignore),
- cwd: options.cwd
- });
-
- const files = await Promise.all(paths.map(file => getFile(file, options.cwd)));
- const ignores = reduceIgnore(files);
-
- return getIsIgnoredPredecate(ignores, options.cwd);
-};
-
-module.exports.sync = options => {
- options = normalizeOptions(options);
-
- const paths = fastGlob.sync('**/.gitignore', {
- ignore: DEFAULT_IGNORE.concat(options.ignore),
- cwd: options.cwd
- });
-
- const files = paths.map(file => getFileSync(file, options.cwd));
- const ignores = reduceIgnore(files);
-
- return getIsIgnoredPredecate(ignores, options.cwd);
-};
diff --git a/assets/node_modules/globby/index.d.ts b/assets/node_modules/globby/index.d.ts
deleted file mode 100644
index c40e4fe..0000000
--- a/assets/node_modules/globby/index.d.ts
+++ /dev/null
@@ -1,176 +0,0 @@
-import {Options as FastGlobOptions} from 'fast-glob';
-
-declare namespace globby {
- type ExpandDirectoriesOption =
- | boolean
- | readonly string[]
- | {files?: readonly string[]; extensions?: readonly string[]};
-
- interface GlobbyOptions extends FastGlobOptions {
- /**
- If set to `true`, `globby` will automatically glob directories for you. If you define an `Array` it will only glob files that matches the patterns inside the `Array`. You can also define an `Object` with `files` and `extensions` like in the example below.
-
- Note that if you set this option to `false`, you won't get back matched directories unless you set `onlyFiles: false`.
-
- @default true
-
- @example
- ```
- import globby = require('globby');
-
- (async () => {
- const paths = await globby('images', {
- expandDirectories: {
- files: ['cat', 'unicorn', '*.jpg'],
- extensions: ['png']
- }
- });
-
- console.log(paths);
- //=> ['cat.png', 'unicorn.png', 'cow.jpg', 'rainbow.jpg']
- })();
- ```
- */
- readonly expandDirectories?: ExpandDirectoriesOption;
-
- /**
- Respect ignore patterns in `.gitignore` files that apply to the globbed files.
-
- @default false
- */
- readonly gitignore?: boolean;
- }
-
- interface GlobTask {
- readonly pattern: string;
- readonly options: globby.GlobbyOptions;
- }
-
- interface GitignoreOptions {
- readonly cwd?: string;
- readonly ignore?: readonly string[];
- }
-
- type FilterFunction = (path: string) => boolean;
-}
-
-interface Gitignore {
- /**
- `.gitignore` files matched by the ignore config are not used for the resulting filter function.
-
- @returns A filter function indicating whether a given path is ignored via a `.gitignore` file.
-
- @example
- ```
- import {gitignore} from 'globby';
-
- (async () => {
- const isIgnored = await gitignore();
- console.log(isIgnored('some/file'));
- })();
- ```
- */
- (options?: globby.GitignoreOptions): Promise<globby.FilterFunction>;
-
- /**
- @returns A filter function indicating whether a given path is ignored via a `.gitignore` file.
- */
- sync(options?: globby.GitignoreOptions): globby.FilterFunction;
-}
-
-declare const globby: {
- /**
- Find files and directories using glob patterns.
-
- Note that glob patterns can only contain forward-slashes, not backward-slashes, so if you want to construct a glob pattern from path components, you need to use `path.posix.join()` instead of `path.join()`.
-
- @param patterns - See the supported [glob patterns](https://github.com/sindresorhus/globby#globbing-patterns).
- @param options - See the [`fast-glob` options](https://github.com/mrmlnc/fast-glob#options-3) in addition to the ones in this package.
- @returns The matching paths.
-
- @example
- ```
- import globby = require('globby');
-
- (async () => {
- const paths = await globby(['*', '!cake']);
-
- console.log(paths);
- //=> ['unicorn', 'rainbow']
- })();
- ```
- */
- (
- patterns: string | readonly string[],
- options?: globby.GlobbyOptions
- ): Promise<string[]>;
-
- /**
- Find files and directories using glob patterns.
-
- Note that glob patterns can only contain forward-slashes, not backward-slashes, so if you want to construct a glob pattern from path components, you need to use `path.posix.join()` instead of `path.join()`.
-
- @param patterns - See the supported [glob patterns](https://github.com/sindresorhus/globby#globbing-patterns).
- @param options - See the [`fast-glob` options](https://github.com/mrmlnc/fast-glob#options-3) in addition to the ones in this package.
- @returns The matching paths.
- */
- sync(
- patterns: string | readonly string[],
- options?: globby.GlobbyOptions
- ): string[];
-
- /**
- Find files and directories using glob patterns.
-
- Note that glob patterns can only contain forward-slashes, not backward-slashes, so if you want to construct a glob pattern from path components, you need to use `path.posix.join()` instead of `path.join()`.
-
- @param patterns - See the supported [glob patterns](https://github.com/sindresorhus/globby#globbing-patterns).
- @param options - See the [`fast-glob` options](https://github.com/mrmlnc/fast-glob#options-3) in addition to the ones in this package.
- @returns The stream of matching paths.
-
- @example
- ```
- import globby = require('globby');
-
- (async () => {
- for await (const path of globby.stream('*.tmp')) {
- console.log(path);
- }
- })();
- ```
- */
- stream(
- patterns: string | readonly string[],
- options?: globby.GlobbyOptions
- ): NodeJS.ReadableStream;
-
- /**
- Note that you should avoid running the same tasks multiple times as they contain a file system cache. Instead, run this method each time to ensure file system changes are taken into consideration.
-
- @param patterns - See the supported [glob patterns](https://github.com/sindresorhus/globby#globbing-patterns).
- @param options - See the [`fast-glob` options](https://github.com/mrmlnc/fast-glob#options-3) in addition to the ones in this package.
- @returns An object in the format `{pattern: string, options: object}`, which can be passed as arguments to [`fast-glob`](https://github.com/mrmlnc/fast-glob). This is useful for other globbing-related packages.
- */
- generateGlobTasks(
- patterns: string | readonly string[],
- options?: globby.GlobbyOptions
- ): globby.GlobTask[];
-
- /**
- Note that the options affect the results.
-
- This function is backed by [`fast-glob`](https://github.com/mrmlnc/fast-glob#isdynamicpatternpattern-options).
-
- @param patterns - See the supported [glob patterns](https://github.com/sindresorhus/globby#globbing-patterns).
- @param options - See the [`fast-glob` options](https://github.com/mrmlnc/fast-glob#options-3).
- @returns Whether there are any special glob characters in the `patterns`.
- */
- hasMagic(
- patterns: string | readonly string[],
- options?: FastGlobOptions
- ): boolean;
-
- readonly gitignore: Gitignore;
-};
-
-export = globby;
diff --git a/assets/node_modules/globby/index.js b/assets/node_modules/globby/index.js
deleted file mode 100644
index 3504057..0000000
--- a/assets/node_modules/globby/index.js
+++ /dev/null
@@ -1,177 +0,0 @@
-'use strict';
-const fs = require('fs');
-const arrayUnion = require('array-union');
-const merge2 = require('merge2');
-const fastGlob = require('fast-glob');
-const dirGlob = require('dir-glob');
-const gitignore = require('./gitignore');
-const {FilterStream, UniqueStream} = require('./stream-utils');
-
-const DEFAULT_FILTER = () => false;
-
-const isNegative = pattern => pattern[0] === '!';
-
-const assertPatternsInput = patterns => {
- if (!patterns.every(pattern => typeof pattern === 'string')) {
- throw new TypeError('Patterns must be a string or an array of strings');
- }
-};
-
-const checkCwdOption = (options = {}) => {
- if (!options.cwd) {
- return;
- }
-
- let stat;
- try {
- stat = fs.statSync(options.cwd);
- } catch (_) {
- return;
- }
-
- if (!stat.isDirectory()) {
- throw new Error('The `cwd` option must be a path to a directory');
- }
-};
-
-const getPathString = p => p.stats instanceof fs.Stats ? p.path : p;
-
-const generateGlobTasks = (patterns, taskOptions) => {
- patterns = arrayUnion([].concat(patterns));
- assertPatternsInput(patterns);
- checkCwdOption(taskOptions);
-
- const globTasks = [];
-
- taskOptions = {
- ignore: [],
- expandDirectories: true,
- ...taskOptions
- };
-
- for (const [index, pattern] of patterns.entries()) {
- if (isNegative(pattern)) {
- continue;
- }
-
- const ignore = patterns
- .slice(index)
- .filter(isNegative)
- .map(pattern => pattern.slice(1));
-
- const options = {
- ...taskOptions,
- ignore: taskOptions.ignore.concat(ignore)
- };
-
- globTasks.push({pattern, options});
- }
-
- return globTasks;
-};
-
-const globDirs = (task, fn) => {
- let options = {};
- if (task.options.cwd) {
- options.cwd = task.options.cwd;
- }
-
- if (Array.isArray(task.options.expandDirectories)) {
- options = {
- ...options,
- files: task.options.expandDirectories
- };
- } else if (typeof task.options.expandDirectories === 'object') {
- options = {
- ...options,
- ...task.options.expandDirectories
- };
- }
-
- return fn(task.pattern, options);
-};
-
-const getPattern = (task, fn) => task.options.expandDirectories ? globDirs(task, fn) : [task.pattern];
-
-const getFilterSync = options => {
- return options && options.gitignore ?
- gitignore.sync({cwd: options.cwd, ignore: options.ignore}) :
- DEFAULT_FILTER;
-};
-
-const globToTask = task => glob => {
- const {options} = task;
- if (options.ignore && Array.isArray(options.ignore) && options.expandDirectories) {
- options.ignore = dirGlob.sync(options.ignore);
- }
-
- return {
- pattern: glob,
- options
- };
-};
-
-module.exports = async (patterns, options) => {
- const globTasks = generateGlobTasks(patterns, options);
-
- const getFilter = async () => {
- return options && options.gitignore ?
- gitignore({cwd: options.cwd, ignore: options.ignore}) :
- DEFAULT_FILTER;
- };
-
- const getTasks = async () => {
- const tasks = await Promise.all(globTasks.map(async task => {
- const globs = await getPattern(task, dirGlob);
- return Promise.all(globs.map(globToTask(task)));
- }));
-
- return arrayUnion(...tasks);
- };
-
- const [filter, tasks] = await Promise.all([getFilter(), getTasks()]);
- const paths = await Promise.all(tasks.map(task => fastGlob(task.pattern, task.options)));
-
- return arrayUnion(...paths).filter(path_ => !filter(getPathString(path_)));
-};
-
-module.exports.sync = (patterns, options) => {
- const globTasks = generateGlobTasks(patterns, options);
-
- const tasks = globTasks.reduce((tasks, task) => {
- const newTask = getPattern(task, dirGlob.sync).map(globToTask(task));
- return tasks.concat(newTask);
- }, []);
-
- const filter = getFilterSync(options);
-
- return tasks.reduce(
- (matches, task) => arrayUnion(matches, fastGlob.sync(task.pattern, task.options)),
- []
- ).filter(path_ => !filter(path_));
-};
-
-module.exports.stream = (patterns, options) => {
- const globTasks = generateGlobTasks(patterns, options);
-
- const tasks = globTasks.reduce((tasks, task) => {
- const newTask = getPattern(task, dirGlob.sync).map(globToTask(task));
- return tasks.concat(newTask);
- }, []);
-
- const filter = getFilterSync(options);
- const filterStream = new FilterStream(p => !filter(p));
- const uniqueStream = new UniqueStream();
-
- return merge2(tasks.map(task => fastGlob.stream(task.pattern, task.options)))
- .pipe(filterStream)
- .pipe(uniqueStream);
-};
-
-module.exports.generateGlobTasks = generateGlobTasks;
-
-module.exports.hasMagic = (patterns, options) => []
- .concat(patterns)
- .some(pattern => fastGlob.isDynamicPattern(pattern, options));
-
-module.exports.gitignore = gitignore;
diff --git a/assets/node_modules/globby/license b/assets/node_modules/globby/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/globby/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/globby/package.json b/assets/node_modules/globby/package.json
deleted file mode 100644
index 3216534..0000000
--- a/assets/node_modules/globby/package.json
+++ /dev/null
@@ -1,82 +0,0 @@
-{
- "name": "globby",
- "version": "11.0.0",
- "description": "User-friendly glob matching",
- "license": "MIT",
- "repository": "sindresorhus/globby",
- "funding": "https://github.com/sponsors/sindresorhus",
- "author": {
- "email": "sindresorhus@gmail.com",
- "name": "Sindre Sorhus",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=10"
- },
- "scripts": {
- "bench": "npm update glob-stream fast-glob && matcha bench.js",
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts",
- "gitignore.js",
- "stream-utils.js"
- ],
- "keywords": [
- "all",
- "array",
- "directories",
- "expand",
- "files",
- "filesystem",
- "filter",
- "find",
- "fnmatch",
- "folders",
- "fs",
- "glob",
- "globbing",
- "globs",
- "gulpfriendly",
- "match",
- "matcher",
- "minimatch",
- "multi",
- "multiple",
- "paths",
- "pattern",
- "patterns",
- "traverse",
- "util",
- "utility",
- "wildcard",
- "wildcards",
- "promise",
- "gitignore",
- "git"
- ],
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.1.1",
- "ignore": "^5.1.4",
- "merge2": "^1.3.0",
- "slash": "^3.0.0"
- },
- "devDependencies": {
- "ava": "^2.1.0",
- "get-stream": "^5.1.0",
- "glob-stream": "^6.1.0",
- "globby": "sindresorhus/globby#master",
- "matcha": "^0.7.0",
- "rimraf": "^3.0.0",
- "tsd": "^0.11.0",
- "xo": "^0.25.3"
- },
- "xo": {
- "ignores": [
- "fixtures"
- ]
- }
-}
diff --git a/assets/node_modules/globby/readme.md b/assets/node_modules/globby/readme.md
deleted file mode 100644
index 709e5aa..0000000
--- a/assets/node_modules/globby/readme.md
+++ /dev/null
@@ -1,170 +0,0 @@
-# globby [![Build Status](https://travis-ci.org/sindresorhus/globby.svg?branch=master)](https://travis-ci.org/sindresorhus/globby)
-
-> User-friendly glob matching
-
-Based on [`fast-glob`](https://github.com/mrmlnc/fast-glob) but adds a bunch of useful features.
-
-## Features
-
-- Promise API
-- Multiple patterns
-- Negated patterns: `['foo*', '!foobar']`
-- Expands directories: `foo` → `foo/**/*`
-- Supports `.gitignore`
-
-## Install
-
-```
-$ npm install globby
-```
-
-## Usage
-
-```
-├── unicorn
-├── cake
-└── rainbow
-```
-
-```js
-const globby = require('globby');
-
-(async () => {
- const paths = await globby(['*', '!cake']);
-
- console.log(paths);
- //=> ['unicorn', 'rainbow']
-})();
-```
-
-## API
-
-Note that glob patterns can only contain forward-slashes, not backward-slashes, so if you want to construct a glob pattern from path components, you need to use `path.posix.join()` instead of `path.join()`.
-
-### globby(patterns, options?)
-
-Returns a `Promise<string[]>` of matching paths.
-
-#### patterns
-
-Type: `string | string[]`
-
-See supported `minimatch` [patterns](https://github.com/isaacs/minimatch#usage).
-
-#### options
-
-Type: `object`
-
-See the [`fast-glob` options](https://github.com/mrmlnc/fast-glob#options-3) in addition to the ones below.
-
-##### expandDirectories
-
-Type: `boolean | string[] | object`\
-Default: `true`
-
-If set to `true`, `globby` will automatically glob directories for you. If you define an `Array` it will only glob files that matches the patterns inside the `Array`. You can also define an `object` with `files` and `extensions` like below:
-
-```js
-const globby = require('globby');
-
-(async () => {
- const paths = await globby('images', {
- expandDirectories: {
- files: ['cat', 'unicorn', '*.jpg'],
- extensions: ['png']
- }
- });
-
- console.log(paths);
- //=> ['cat.png', 'unicorn.png', 'cow.jpg', 'rainbow.jpg']
-})();
-```
-
-Note that if you set this option to `false`, you won't get back matched directories unless you set `onlyFiles: false`.
-
-##### gitignore
-
-Type: `boolean`\
-Default: `false`
-
-Respect ignore patterns in `.gitignore` files that apply to the globbed files.
-
-### globby.sync(patterns, options?)
-
-Returns `string[]` of matching paths.
-
-### globby.stream(patterns, options?)
-
-Returns a [`stream.Readable`](https://nodejs.org/api/stream.html#stream_readable_streams) of matching paths.
-
-Since Node.js 10, [readable streams are iterable](https://nodejs.org/api/stream.html#stream_readable_symbol_asynciterator), so you can loop over glob matches in a [`for await...of` loop](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of) like this:
-
-```js
-const globby = require('globby');
-
-(async () => {
- for await (const path of globby.stream('*.tmp')) {
- console.log(path);
- }
-})();
-```
-
-### globby.generateGlobTasks(patterns, options?)
-
-Returns an `object[]` in the format `{pattern: string, options: Object}`, which can be passed as arguments to [`fast-glob`](https://github.com/mrmlnc/fast-glob). This is useful for other globbing-related packages.
-
-Note that you should avoid running the same tasks multiple times as they contain a file system cache. Instead, run this method each time to ensure file system changes are taken into consideration.
-
-### globby.hasMagic(patterns, options?)
-
-Returns a `boolean` of whether there are any special glob characters in the `patterns`.
-
-Note that the options affect the results.
-
-This function is backed by [`fast-glob`](https://github.com/mrmlnc/fast-glob#isdynamicpatternpattern-options).
-
-### globby.gitignore(options?)
-
-Returns a `Promise<(path: string) => boolean>` indicating whether a given path is ignored via a `.gitignore` file.
-
-Takes `cwd?: string` and `ignore?: string[]` as options. `.gitignore` files matched by the ignore config are not used for the resulting filter function.
-
-```js
-const {gitignore} = require('globby');
-
-(async () => {
- const isIgnored = await gitignore();
- console.log(isIgnored('some/file'));
-})();
-```
-
-### globby.gitignore.sync(options?)
-
-Returns a `(path: string) => boolean` indicating whether a given path is ignored via a `.gitignore` file.
-
-Takes the same options as `globby.gitignore`.
-
-## Globbing patterns
-
-Just a quick overview.
-
-- `*` matches any number of characters, but not `/`
-- `?` matches a single character, but not `/`
-- `**` matches any number of characters, including `/`, as long as it's the only thing in a path part
-- `{}` allows for a comma-separated list of "or" expressions
-- `!` at the beginning of a pattern will negate the match
-
-[Various patterns and expected matches.](https://github.com/sindresorhus/multimatch/blob/master/test/test.js)
-
-## globby for enterprise
-
-Available as part of the Tidelift Subscription.
-
-The maintainers of globby and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-globby?utm_source=npm-globby&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
-
-## Related
-
-- [multimatch](https://github.com/sindresorhus/multimatch) - Match against a list instead of the filesystem
-- [matcher](https://github.com/sindresorhus/matcher) - Simple wildcard matching
-- [del](https://github.com/sindresorhus/del) - Delete files and directories
-- [make-dir](https://github.com/sindresorhus/make-dir) - Make a directory and its parents if needed
diff --git a/assets/node_modules/globby/stream-utils.js b/assets/node_modules/globby/stream-utils.js
deleted file mode 100644
index 98aedc8..0000000
--- a/assets/node_modules/globby/stream-utils.js
+++ /dev/null
@@ -1,46 +0,0 @@
-'use strict';
-const {Transform} = require('stream');
-
-class ObjectTransform extends Transform {
- constructor() {
- super({
- objectMode: true
- });
- }
-}
-
-class FilterStream extends ObjectTransform {
- constructor(filter) {
- super();
- this._filter = filter;
- }
-
- _transform(data, encoding, callback) {
- if (this._filter(data)) {
- this.push(data);
- }
-
- callback();
- }
-}
-
-class UniqueStream extends ObjectTransform {
- constructor() {
- super();
- this._pushed = new Set();
- }
-
- _transform(data, encoding, callback) {
- if (!this._pushed.has(data)) {
- this.push(data);
- this._pushed.add(data);
- }
-
- callback();
- }
-}
-
-module.exports = {
- FilterStream,
- UniqueStream
-};
diff --git a/assets/node_modules/globjoin/CHANGELOG.md b/assets/node_modules/globjoin/CHANGELOG.md
deleted file mode 100644
index f86bc6f..0000000
--- a/assets/node_modules/globjoin/CHANGELOG.md
+++ /dev/null
@@ -1,14 +0,0 @@
-## globjoin changelog
-
-### 2016/02/16 - 0.1.4
-
-* NPM: Remove accidental dependency.
-
-### 2016/02/15 - 0.1.3
-
-* Bug Fix: Should use Array.prototype.slice().
-* Misc: Remove unused test fixtures.
-
-### 2015/12/24 - 0.1.2
-
-First Release \ No newline at end of file
diff --git a/assets/node_modules/globjoin/LICENSE b/assets/node_modules/globjoin/LICENSE
deleted file mode 100644
index eed2531..0000000
--- a/assets/node_modules/globjoin/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016 amobiz
-
-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/assets/node_modules/globjoin/README.md b/assets/node_modules/globjoin/README.md
deleted file mode 100644
index acc53a8..0000000
--- a/assets/node_modules/globjoin/README.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# globjoin
-
-Join paths and globs.
-
-[![MIT](http://img.shields.io/badge/license-MIT-brightgreen.svg)](https://github.com/amobiz/globjoin/blob/master/LICENSE) [![npm version](https://badge.fury.io/js/globjoin.svg)](http://badge.fury.io/js/globjoin) [![David Dependency Badge](https://david-dm.org/amobiz/globjoin.svg)](https://david-dm.org/amobiz/globjoin)
-
-[![NPM](https://nodei.co/npm/globjoin.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/globjoin.png?downloads=true&downloadRank=true&stars=true) [![NPM](https://nodei.co/npm-dl/globjoin.png?months=6&height=3)](https://nodei.co/npm/globjoin/)
-
-## Install
-``` bash
-$ npm install globjoin
-```
-
-## API
-
-### `globjoin(globs...)`
-Join paths and globs.
-
-Like Node's [path.join()](https://nodejs.org/api/path.html#path_path_join_path1_path2) that join all arguments together and normalize the resulting path, `globjoin` takes arbitrary number of paths and/or arrays of paths, join them together and take care of negative globs.
-#### Context
-Don't care.
-#### Parameters
-##### `paths/globs`
-The paths/globs or arrays of paths/globs to join.
-#### Returns
-The result glob, or array of globs if any of paths/globs are array.
-#### Example
-``` javascript
-var join = require('globjoin');
-var globs1 = join(__dirname, ['**/*.js', '!**/test*.js']);
-var globs2 = join('test', 'fixture', 'app', ['views', '!services'], ['**/*', '!*.{js,json,coffee,ts}']);
-```
-
-Check out test for more examples.
-
-## Issues
-
-[Issues](https://github.com/amobiz/globjoin/issues)
-
-## Test
-
-``` bash
-$ npm test
-```
-
-## Changelog
-
-[Changelog](./CHANGELOG.md)
-
-## License
-MIT
-
-## Author
-[Amobiz](https://github.com/amobiz)
diff --git a/assets/node_modules/globjoin/index.js b/assets/node_modules/globjoin/index.js
deleted file mode 100644
index bd784ff..0000000
--- a/assets/node_modules/globjoin/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict';
-
-var Path = require('path');
-var slice = Array.prototype.slice;
-
-function join(/* globs */) {
- var args;
-
- args = slice.call(arguments, 0);
- return args.reduce(function (result, globs) {
- return _apply(result, function (path) {
- return _apply(globs, function (glob) {
- return _join(path, glob);
- });
- });
- }, '');
-}
-
-function _apply(values, fn) {
- if (Array.isArray(values)) {
- return values.reduce(function (result, value) {
- return result.concat(fn(value));
- }, []);
- }
- return fn(values);
-}
-
-function _join(path, glob) {
- var negative, positive;
-
- if (glob[0] === '!') {
- positive = glob.substr(1);
- if (path[0] === '!') {
- negative = '';
- } else {
- negative = '!';
- }
- return negative + Path.join(path, positive);
- }
- return Path.join(path, glob);
-}
-
-module.exports = join;
diff --git a/assets/node_modules/globjoin/package.json b/assets/node_modules/globjoin/package.json
deleted file mode 100644
index 24462da..0000000
--- a/assets/node_modules/globjoin/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "globjoin",
- "version": "0.1.4",
- "description": "Join paths and globs.",
- "main": "index.js",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/amobiz/globjoin.git"
- },
- "scripts": {
- "test": "mocha"
- },
- "keywords": [
- "array",
- "glob",
- "glob join",
- "globbing",
- "multiple",
- "negative glob",
- "path",
- "path join",
- "patterns",
- "wildcard"
- ],
- "author": "Amobiz",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/amobiz/globjoin/issues"
- },
- "homepage": "https://github.com/amobiz/globjoin",
- "devDependencies": {
- "mocha": "^2.3.4",
- "mocha-cases": "^0.1.4"
- },
- "dependencies": {
- }
-}
diff --git a/assets/node_modules/gonzales-pe/CHANGELOG.md b/assets/node_modules/gonzales-pe/CHANGELOG.md
deleted file mode 100644
index f55911e..0000000
--- a/assets/node_modules/gonzales-pe/CHANGELOG.md
+++ /dev/null
@@ -1,453 +0,0 @@
-# Changelog
-
-#### Legend:
-
-:japanese_ogre: — be afraid of this change because it breaks the way things
-worked before.
-:star: — some new thing has been added.
-:green_apple: — some bad thing has been fixed.
-
-## 21.04.2019, version 4.2.4
-
-:star: Renamed `prepublish` script to `prepublishOnly`.
-:star: Updated link to playground.
-:green_apple: Fixed badges.
-:green_apple: Fixed `content` guard in `node.contains()`.
-
-## 28.09.2017, version 4.2.3
-
-:green_apple: Fixed parsing of empty `url()` in Sass and SCSS.
-
-## 30.08.2017, version 4.2.2
-
-:green_apple: Fixed parsing of `/deep/` in CSS, LESS, Sass and SCSS.
-
-## 29.08.2017, version 4.2.1
-
-:green_apple: Fixed parsing of `pseudo-element` in CSS, LESS, Sass and SCSS.
-
-## 29.08.2017, version 4.2.0
-
-:star: Add support for custom property syntax in CSS, Sass and SCSS.
-:star: Add support for deep combinator syntax in CSS, LESS, Sass and SCSS.
-:star: Add support for alternative descendant `>>` syntax in CSS, LESS, Sass and SCSS.
-:star: Add support for `::slotted()` syntax in CSS, LESS, Sass and SCSS.
-:green_apple: Fixed parsing of non-lowercase keyframes at-rule in CSS, LESS, Sass and SCSS.
-:green_apple: Fixed parsing of multiline selectors within keyframes in Sass.
-:green_apple: Fixed parsing of `!important` within maps in Sass and SCSS.
-:green_apple: Fixed parsing of `...` following a function in Sass and SCSS.
-
-## 23.08.2017, version 4.1.1
-
-:star: Unified codebase style across syntaxes.
-:green_apple: Fixed parsing of URLs in Sass and SCSS.
-:green_apple: Fixed parsing of placeholders in Sass and SCSS.
-:green_apple: Fixed parsing of interpolated values within type selectors in Sass and SCSS.
-:green_apple: Fixed parsing of spacing within pseudo class arguments in all syntaxes.
-:green_apple: Fixed parsing of parent selectors within parentheses in Sass and SCSS.
-:star: Abstracted attribute tests for CSS, LESS, Sass and SCSS.
-:green_apple: Fixed parsing of pseudo classes within keyframes in Sass and SCSS.
-:green_apple: Fixed parsing of dimensions in LESS.
-
-## 20.11.2016, version 4.0.3
-
-:green_apple: Fixed parsing of interpolations inside URI nodes in SCSS and Sass.
-
-## 18.11.2016, version 4.0.2
-
-:green_apple: Fixed parsing of trailing newlines.
-
-## 18.11.2016, version 4.0.1
-
-:japanese_ogre: Removed `postinstall` script.
-
-## 17.11.2016, version 4.0.0
-
-:japanese_ogre: Dropped support for Node < 4.
-:japanese_ogre: Brought back `postinstall` script that should allow installing
-from GitHub.
-:japanese_ogre: Made multiline comments in Sass consistent with other syntaxes
-by removing closing `*/` from node's content.
-:japanese_ogre: Implemented new node type, `universalSelector`, which represents
-`*`. See [docs](https://github.com/tonyganch/gonzales-pe/blob/dev/docs/node-types.md#universalselector)
-for more details.
-:green_apple: Fixed parsing of comments in Sass.
-:green_apple: Fixed parsing of keyframes inside includes in Sass.
-:green_apple: Fixed parsing of flags in arguments in Sass and SCSS.
-:green_apple: Fixed parsing of multiple declarations within arguments in SCSS
-and Sass.
-:green_apple: Improved parsing of interpolations in SCSS and Sass.
-:green_apple: Adjust parsing priority of declarations & atrule in Less.
-
-## 22.10.2016, version 3.4.7
-
-:green_apple: Included forgotten test for #226.
-:green_apple: Fixed issue when `!important` was not parsed as function argument.
-
-## 22.10.2016, version 3.4.6
-
-:green_apple: Changed parsing of `ident` nodes which fixed issue with asterisks
-being parsed as idents instead of operators.
-:green_apple: Fixed capitalisation in Changelog.
-
-## 20.10.2016, version 3.4.5
-
-:green_apple: Change parser to strip DOS newlines from comments.
-:star: Add links to README.md.
-
-## 12.08.2016, version 3.4.4
-
-:green_apple: Fixed parsing of numbers following interpolation in class
-selectors in Sass and SCSS.
-
-## 08.08.2016, version 3.4.3
-
-:green_apple: Fixed parsing of unicode ranges.
-
-## 04.08.2016, version 3.4.2
-
-:green_apple: Disable Google Closure Compiler due to some errors in parsing.
-
-## 27.07.2016, version 3.4.1
-
-:star: Added publich script.
-:green_apple: Fixed post-refactor error in Node#last method.
-
-## 27.07.2016, version 3.4.0
-
-:star: Added `unicode-range` and `urange` node types in CSS, Less, Sass and SCSS.
-:green_apple: Fixed parsing of trailing interpolation in compound selector in Sass and SCSS.
-:green_apple: Fix parsing of hyphens after interpolation with parentSelectors in Sass and SCSS.
-:green_apple: Added ESLint and moved linters to a separate script.
-:green_apple: Fixed incorrect dimension wrap of unicode-ranges in CSS, Sass and SCSS.
-:green_apple: Fixed parsing of hyphens in interpolated idents in Sass and SCSS.
-:green_apple: Added compilation of JS using Google Closure.
-
-## 01.07.2016, version 3.3.6
-
-:green_apple: Fixed parsing of nth selector without numbers before `n`.
-
-## 21.06.2016, version 3.3.5
-
-:green_apple: Fixed issue with content at-rule and keyframes in Sass and SCSS.
-:green_apple: Fixed namespace attribute selector in CSS, Sass and SCSS.
-:green_apple: Fixed issue with modulo operator in values in Sass.
-:green_apple: Fixed usage of @content with keyframes in Sass and SCSS.
-:green_apple: Fixed namespace attribute selector issue in CSS, Sass and SCSS.
-:green_apple: Fixed parsing of interpolations in pseudo-classes in Sass and SCSS.
-:green_apple: Fixed interpolated percentage keyframe selector issue in Sass and SCSS.
-:green_apple: Updated Travis config to not include environment variables.
-
-## 18.05.2016, version 3.3.4
-
-:green_apple: Fixed mistake from `@3.3.2` version when parent selector was
-"correctly" parsed as property instead of value.
-
-## 18.05.2016, version 3.3.3
-
-:green_apple: Fixed prepublish script to build lib.
-
-## 18.05.2016, version 3.3.2
-
-:star: Added AppVeyor badge.
-:green_apple: Fixed build file to glue multiple syntaxes into one file.
-:green_apple: Fixed parsing of functions inside urls in Sass.
-:green_apple: Fixed parsing of mulitple keyframe selectors in CSS, Sass and SCSS.
-:green_apple: Fixed parsing of parent selector as property in Sass and SCSS.
-:green_apple: Fixed parsing of parent selector inside interpolations in Sass and SCSS.
-
-## 29.04.2016, version 3.3.1
-
-:star: Added config for AppVeyor to run automated tests on Windows.
-:green_apple: Fix installation for Windows.
-
-## 28.04.2016, version 3.3.0
-
-:star: Added browser support. `build.sh` now build a script that can be used in
-browsers.
-
-## 28.04.2016, version 3.2.7
-
-:green_apple: Fixed typos and example in documentation.
-:green_apple: Fixed parsing of functions inside urls in SCSS.
-:green_apple: Fixed parsing of selectors starting with combinators in Sass, SCSS
-and Less.
-:green_apple: Fixed incorrect CRLF line numbers.
-:green_apple: Fixed parsing of extends that sometimes were incorrectly parsed
-as atrules.
-
-## 07.02.2016, version 3.2.6
-
-:green_apple: Fixed the issue with installation of the package with npm@3.
-
-## 07.02.2016, version 3.2.5
-
-:green_apple: Fixed parsing of nested multiline selectors group.
-
-## 07.02.2016, version 3.2.4
-
-:star: Added support for `!global` in Sass.
-
-## 07.02.2016, version 3.2.3
-
-:star: Modified `npm test` to remove `.DS_Store` files before running tests.
-:star: Updated Travis config to use Node@5.0.
-:star: Updated Travis config to include compiler info.
-:star: Made it possible to build files if module is installed from github.
-:green_apple: Fixed parsing of interpolation content in Sass and SCSS.
-:green_apple: Fixed parsing of interpolation as part of parent selector
-extension in Sass and SCSS.
-:green_apple: Fixed issue with keyframeSelector in includes in SCSS.
-
-## 17.01.2016, version 3.2.2
-
-:green_apple: Made `ParsingError#message` property writeable.
-
-## 19.10.2015, version 3.2.1
-
-#### Parsing rules
-
-:green_apple: Fixed the issue when selectors inside extends were not wrapped in
-`selector` nodes in Sass and SCSS.
-:green_apple: Fixed parsing of multiple selectors in extends in Sass and SCSS.
-
-## 19.10.2015, version 3.2.0
-
-#### Node types
-
-:star: Added new node type: `parentSelectorExtension`.
-
-#### Parsing rules
-
-:green_apple: Fixed parsing of parent selectors with extensions, like
-`&__element` or `&--modifier`.
-
-## 19.10.2015, version 3.1.1
-
-#### Parsing rules
-
-:green_apple: Fixed parsing of selectors starting or ending with a combinator
-in Less, Sass and SCSS.
-
-## 18.10.2015, version 3.1.0
-
-#### CLI
-
-:green_apple: Fixed passing a `--context` argument.
-:green_apple: Fixed printing of a simplified tree.
-
-#### Node types
-
-:star: Added new node type: `keyframesSelector`.
-
-#### Parsing rules
-
-:green_apple: Fixed parsing of keyframes in all syntaxes.
-
-## 18.10.2015, version 3.0.3
-
-#### Parsing rules
-
-:green_apple: Fixed parsing of spaces inside interpolations in Sass and SCSS.
-
-## 18.10.2015, version 3.0.2
-
-#### Parsing rules
-
-:green_apple: Fixed the issue when operators were parsed as idents inside
-parentheses in Sass and SCSS.
-
-## 18.10.2015, version 3.0.1
-
-#### Parsing rules
-:green_apple: Fixed parsing of parent selectors in SCSS and Less.
-:green_apple: Fixed parsing of placeholders inside selectors in SCSS.
-
-## 18.10.2015, version 3.0.0
-
-#### CLI
-
-:japanese_ogre: Made cli process stdin only if `-` argument is passed.
-:star: Added help message.
-
-#### API
-
-:japanese_ogre: Renamed `parseTree.remove` to `parseTree.removeChild()`.
-:japanese_ogre: Unwraped callback parameters for `traverse...` methods.
-:japanese_ogre: Made `first()`, `last()` and `get()` methods return `null` if no child nodes were found.
-:japanese_ogre: Made `node.length` return a number of child nodes.
-:japanese_ogre: Renamed `rule` to `context`.
-:star: Made `parseTree.removeChild()` return a removed node.
-:star: Added `traverseBy...` methods to all nodes, not only root ones.
-:star: Added support for specifying a tab size in spaces.
-
-#### Parsing rules
-
-:green_apple: Fixed parsing of single-line comments after `url` token.
-:green_apple: Fixed parsing of interpolations inside id selectors in Less.
-:green_apple: Fixed parsing of selectors according to spec.
-:green_apple: Fixed parsing of placeholders as selectors in SCSS.
-
-#### Misc
-
-:star: Added Travis badge to Readme page.
-:star: Added init script to build sources.
-:star: Added commit message template.
-
-## 05.10.2015, version 3.0.0-beta
-
-#### CLI
-
-:star: Added `--simple` flag for printing a simplified tree structure.
-:green_apple: CLI now prints parse tree to stdout.
-
-#### API
-
-:japanese_ogre: Parse tree is now represented as objects, not arrays.
-:japanese_ogre: Renamed `gonzales.srcToAST()` to `gonzales.parse()`.
-See [Readme](README.md#gonzalesparsecss-options).
-:japanese_ogre: Renamed `gonzales.astToSrc()` to `parseTree.toString()`.
-See [Readme](README.md#parsetreetostring).
-:japanese_ogre: Renamed `gonzales.astToString()` to `parseTree.toJson()`.
-See [Readme](README.md#parsetreetojson).
-:star: Added information about column number to nodes.
-:star: Added information about end position to nodes.
-:green_apple: Made empty strings to be parsed as empty nodes.
-
-#### Node types
-
-:japanese_ogre: In Sass renamed `interpolatedVariable` to `interpolation`.
-:japanese_ogre: Separated `include` and `extend` nodes.
-:japanese_ogre: Replaced `filter` with `declaration`.
-:japanese_ogre: Replaced `braces` with `brackets` and `parentheses`.
-:japanese_ogre: Replaced `atrulers` with `block`.
-:japanese_ogre: Renamed `nthSelector` to `pseudoClass`.
-:japanese_ogre: Renamed `atrules`, `atruler` and `atruleb` to `atrule`.
-:japanese_ogre: Renamed `functionBody` to `arguments`.
-:japanese_ogre: Renamed `functionExpression` to `expression`.
-:japanese_ogre: Renamed `attrib` to `attributeSelector`.
-:japanese_ogre: Renamed `attrselector` to `attributeMatch`.
-:japanese_ogre: Renamed `commentSL` to `singlelineComment`.
-:japanese_ogre: Renamed `commentML` to `multilineComment`.
-:japanese_ogre: Renamed `declDelim` to `declarationDelimiter`.
-:japanese_ogre: Renamed `delim` to `delimiter`.
-:japanese_ogre: Renamed `propertyDelim` to `propertyDelimiter`.
-:japanese_ogre: Renamed `pseudoc` to `pseudoClass`.
-:japanese_ogre: Renamed `pseudoe` to `pseudoElement`.
-:japanese_ogre: Renamed `s` to `space`.
-:japanese_ogre: Renamed `shash` to `color`.
-:japanese_ogre: Renamed `vhash` to `id`.
-:japanese_ogre: Removed `atrulerq`, `unary` and `unknown`.
-:star: Added `attributeFlags`.
-:star: Added `attributeName`.
-:star: Added `attributeValue`.
-:star: Added `conditionalStatement`.
-:star: Added `namePrefix`.
-:star: Added `namespacePrefix`.
-:star: Added `namespaceSeparator`.
-:star: Added `typeSelector`.
-
-#### Parsing rules
-
-:japanese_ogre: Spaces that separate two nodes are now put between those
-nodes in parse tree.
-:star: Added support for `extend` nodes in Less.
-:star: Added support for equality and inequality signs in Sass and SCSS.
-:star: Added support for `/deep/` combinator.
-:star: Added support for `!optional` and `!global` in Sass and SCSS.
-:green_apple: Fixed parsing of interpolations in Sass and SCSS.
-:green_apple: Fixed parsing of arguments in Sass, SCSS and Less.
-:green_apple: Fixed parsing of declaration delimiters in Sass.
-:green_apple: Fixed the issue when pseudo-classes were parsed like declarations.
-:green_apple: Fixed parsing of selectors on multiple lines in Sass.
-:green_apple: Fixed parsing of percent sign as operator in SCSS.
-:green_apple: Fixed parsing of pseudo-elements as selectors in Sass.
-
-#### Misc
-
-:star: Added Babel to build source files.
-:star: Used mocha for tests.
-:star: Added helper scripts.
-:star: Added Travis config.
-:rocket: Improved tests structure.
-:rocket: Separated log and test scripts.
-:rocket: Improved error messages.
-:rocket: Removed benchmark tests.
-:rocket: Moved source files from `lib` to `src` directory.
-:rocket: Made package availbale for install from GitHub.
-
-## 29.12.2013, version 2.0.2
-
-- Sass includes can have both arguments list and content block,
- i.e. `@include nani() { color: tomato }` is valid syntax.
-
-## 18.11.2013, version 2.0.1
-
-- Bring back lost whitespaces and comments
-
-## 11.11.2013, version 2.0.0
-
-- Support preprocessors: Sass (both SCSS and indented syntax), LESS.
-- New node types:
- - `arguments` (less and sass only)
- - `commentML`
- - `commentSL` (less and sass only)
- - `condition` (sass only)
- - `default` (sass only)
- - `escapedString` (less only)
- - `include` (less and sass only)
- - `loop` (sass only)
- - `mixin` (less and sass only)
- - `parentselector` (less and sass only)
- - `placeholder` (sass only)
- - `propertyDelim`
- - `variable` (less and sass only)
- - `varialeList` (less and sass only)
-- Rename methods:
- - `srcToCSSP` -> `cssToAST`
- - `csspToSrc` -> `astToCSS`
- - `csspToTree` -> `astToTree`
-- Pass all arguments as one object:
- - `gonzales.cssToAST({css: a, syntax: b, rule: c, needInfo: d})`
- - `gonzales.astToCSS({ast: ast, syntax: syntax})`
-- Remove built files from VCS
-- Move test command from `make` to `npm`
-- Build files before running tests
-- Divide tests into groups according to syntax
-- Add script to test one specific css string
-- Add token's index number to info object
-
-## 11.02.2013, version 1.0.7
-
-- Identifiers like `_0` are identifiers now.
-- Throw error instead of console.error: https://github.com/css/csso/issues/109
-
-## 25.11.2012, version 1.0.6
-
-- Typo fix (global variable leak): https://github.com/css/csso/pull/110
-- Attribute selectors extended by `|`.
-- `not(..)` pseudo-class special support: https://github.com/css/csso/issues/111
-
-## 28.10.2012, version 1.0.5
-
-- Better error line numbering: https://github.com/css/gonzales/issues/2
-
-## 11.10.2012, version 1.0.4
-
-- CSSO issue (@page inside @media error): https://github.com/css/csso/issues/90
-
-## 10.10.2012, version 1.0.3
-
-- Both .t-1 and .t-01 should be idents: https://github.com/css/gonzales/issues/1
-
-## 08.10.2012, version 1.0.2
-
-- CSSO issue (filter + important breaks csso v1.3.1): https://github.com/css/csso/issues/87
-
-## 08.10.2012, version 1.0.1
-
-- CSSO issue ("filter" IE property breaks CSSO v1.3.0): https://github.com/css/csso/issues/86
-
-## 03.10.2012, version 1.0.0
-
-- First revision.
diff --git a/assets/node_modules/gonzales-pe/MIT-LICENSE.txt b/assets/node_modules/gonzales-pe/MIT-LICENSE.txt
deleted file mode 100644
index 18113b1..0000000
--- a/assets/node_modules/gonzales-pe/MIT-LICENSE.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (C) 2012 by Sergey Kryzhanovsky
-
-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/assets/node_modules/gonzales-pe/README.md b/assets/node_modules/gonzales-pe/README.md
deleted file mode 100644
index 028be03..0000000
--- a/assets/node_modules/gonzales-pe/README.md
+++ /dev/null
@@ -1,808 +0,0 @@
-# Gonzales PE @dev
-
-[![NPM version][npm-img]][npm]
-[![Build Status][travis-img]][travis]
-[![AppVeyor Build Status][appveyor-img]][appveyor]
-
-[npm-img]: https://img.shields.io/npm/v/gonzales-pe.svg
-[npm]: https://www.npmjs.com/package/gonzales-pe
-[travis-img]: https://travis-ci.org/tonyganch/gonzales-pe.svg
-[travis]: https://travis-ci.org/tonyganch/gonzales-pe
-[appveyor-img]: https://ci.appveyor.com/api/projects/status/m29jphtrqt398v2o/branch/dev?svg=true
-[appveyor]: https://ci.appveyor.com/project/tonyganch/gonzales-pe/branch/dev
-
-Gonzales PE is a CSS parser which plays nicely with preprocessors.
-Currently those are supported: SCSS, Sass, LESS.
-Try out Gonzales PE online: [Gonzales PE Playground](http://tonyganch.io/gonzales-pe/).
-
-## Install
-
-(1) To install command-line tool globally:
-
-```bash
-npm install -g git://github.com/tonyganch/gonzales-pe.git#dev
-```
-
-(2) To install parser as a project dependency:
-
-```bash
-npm install --save git://github.com/tonyganch/gonzales-pe.git#dev
-```
-
-(3) If for some reason you want to build files yourself:
-
-```bash
-# Clone the repo.
-git clone git@github.com:tonyganch/gonzales-pe.git
-# Go to dev branch.
-git checkout dev
-# Install project dependencies.
-npm install
-# Install git hooks and build files.
-npm run init
-```
-
-## API
-
-Basically there are a few things you can do:
-
-1. parse css string and get a parse tree in return;
-2. modify tree nodes;
-3. remove tree nodes;
-4. add new nodes to the tree;
-5. convert modified tree back to a string.
-
-The different type of tree nodes can be found in [docs/node-types.md](https://github.com/tonyganch/gonzales-pe/blob/dev/docs/node-types.md).
-
-In examples below I assume that `gonzales` is a parser module and `parseTree`
-is some parsed css:
-
-```js
-let gonzales = require('gonzales-pe');
-let parseTree = gonzales.parse(css);
-```
-
-### gonzales.createNode(options)
-
-##### Description
-
-Creates a new node. Useful when you need to add something to a tree.
-
-##### Parameters
-
-<table>
- <tr>
- <td><i>{Object}</i></td>
- <td>options</td>
- <td>Options to pass to a `Node` constructor.</td>
- </tr>
- <tr>
-</table>
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{Object}</i></td>
- <td>A new node.</td>
- </tr>
-</table>
-
-##### Examples
-
-```js
-let css = 'a {color: tomato}';
-let parseTree = gonzales.parse(css);
-let node = gonzales.createNode({ type: 'animal', content: 'panda' });
-parseTree.content.push(node);
-```
-
-
-### gonzales.parse(css[, options])
-
-##### Description
-
-Parses a css string.
-
-##### Parameters
-
-<table>
- <tr>
- <td><i>{string}</i></td>
- <td>css</td>
- <td>A string to parse.</td>
- </tr>
- <tr>
- <td><i>{Object=}</i></td>
- <td>options</td>
- <td>Optional. Additional options:
- <ul>
- <li>
- <code>{string} syntax</code> — any of the following: <code>css</code>,
- <code>less</code>, <code>sass</code>, <code>scss</code>.
- Default one is <code>css</code>.
- </li>
- <li>
- <code>{string} context</code> — root node's type. For a list of available
- values see <a href="docs/node-types.md">"Node types"</a>. Default
- one is <code>stylesheet</code>.
- </li>
- <li>
- <code>{number} tabSize</code> — size of a tab character in spaces.
- Default one is 1.
- </li>
- </ul>
- </td>
- </tr>
-</table>
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{Object}</i></td>
- <td>Parse tree.</td>
- </tr>
-</table>
-
-##### Examples
-
-```js
-let css = 'a {color: tomato}';
-let parseTree = gonzales.parse(css);
-```
-
-```js
-let less = 'a {$color: tomato}';
-let parseTree = gonzales.parse(less, {syntax: 'less'});
-```
-
-```js
-let less = '$color: tomato';
-let parseTree = gonzales.parse(less, {syntax: 'less', rule: 'declaration'});
-```
-
-### parseTree.contains(type)
-
-##### Description
-
-Checks whether there is a child node of given type.
-
-##### Parameters
-
-<table>
- <tr>
- <td><i>{string}</i></td>
- <td>type</td>
- <td>
- Node type we're looking for. For a list of available values see
- <a href="docs/node-types.md">"Node types"</a>.
- </td>
- </tr>
-</table>
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{boolean}</i></td>
- <td>
- <code>true</code> if a tree contains a child node of a given type,
- <code>false</code> otherwise.
- </td>
- </tr>
-</table>
-
-##### Examples
-
-```js
-if (parseTree.contains('space')) {
- doSomething();
-}
-```
-
-### parseTree.content
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{string|Array}</i></td>
- <td>Node's content (child nodes or a string).</td>
- </tr>
-</table>
-
-### parseTree.eachFor([type, ]callback)
-
-##### Description
-
-Calls a function for every child node in tree. If `type` parameter is passed,
-calls a function only for child nodes of a given type. The main difference from
-`parseTree.forEach()` is that this method loops through node list from the end
-to beginning.
-
-##### Parameters
-
-<table>
- <tr>
- <td><i>{string=}</i></td>
- <td>type</td>
- <td>
- Optional. A node type by which to filter child nodes before applying
- a callback function. For a list of available values see
- <a href="docs/node-types.md">"Node types"</a>.
- </td>
- </tr>
- <tr>
- <td><i>{Function}</i></td>
- <td>callback</td>
- <td>
- Function to call for every child node. Accepts following parameters:
- <ul>
- <li><code>{Object}</code> — a child node;</li>
- <li><code>{number}</code> — index of the child node in node list;</li>
- <li>
- <code>{Object}</code> — parent node (equals to <code>parseTree</code>).
- </li>
- </ul>
- </td>
- </tr>
-</table>
-
-##### Examples
-
-```js
-parseTree.eachFor(function(childNode) {
- doSomething(childNode);
-});
-```
-
-```js
-// Remove all child spaces.
-parseTree.eachFor('space', function(spaceNode, i) {
- parseTree.removeChild(i);
-});
-```
-
-### parseTree.end
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{Object}</i></td>
- <td>
- End position of the node. Contains following info:
- <ul>
- <li>
- <code>{number} line</code> — last symbol's line number
- (1-based index);
- </li>
- <li>
- <code>{number} column</code> — last symbol's column number
- (1-based index).
- </li>
- </ul>
- </td>
- </tr>
-</table>
-
-### parseTree.first([type])
-
-##### Description
-
-Gets the first child node. If `type` parameter is passed, gets the first child
-node of a given type. If no node has been found, returns `null`.
-
-##### Parameters
-
-<table>
- <tr>
- <td><i>{string=}</i></td>
- <td>type</td>
- <td>
- Optional. Node type to look for. For a list of available values see
- <a href="docs/node-types.md">"Node types"</a>.
- </td>
- </tr>
-</table>
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{?Object}</i></td>
- <td>A node.</td>
- </tr>
-</table>
-
-##### Examples
-
-```js
-let node = parseTree.first();
-node.content = 'panda';
-```
-
-```js
-let node = parseTree.first('multilineComment');
-node.content = 'panda';
-```
-
-### parseTree.forEach([type, ]callback)
-
-##### Description
-
-Calls a function for every child node in tree. If `type` parameter is passed,
-calls a function only for child nodes of a given type. The main difference from
-`parseTree.eachFor()` is that this method loops through node list from the
-beginnig to end.
-
-##### Parameters
-
-<table>
- <tr>
- <td><i>{string=}</i></td>
- <td>type</td>
- <td>
- Optional. A node type by which to filter child nodes before applying
- a callback function. For a list of available values see
- <a href="docs/node-types.md">"Node types"</a>.
- </td>
- </tr>
- <tr>
- <td><i>{Function}</i></td>
- <td>callback</td>
- <td>
- Function to call for every child node. Accepts following parameters:
- <ul>
- <li><code>{Object}</code> — a child node;</li>
- <li><code>{number}</code> — index of the child node in node list;</li>
- <li>
- <code>{Object}</code> — parent node (equals to <code>parseTree</code>).
- </li>
- </ul>
- </td>
- </tr>
-</table>
-
-##### Examples
-
-```js
-parseTree.forEach(function(childNode) {
- doSomething();
-});
-```
-
-```js
-parseTree.forEach('space', function(spaceNode) {
- doSomething();
-});
-```
-
-### parseTree.get(index)
-
-##### Description
-
-Gets *nth* child of the `parseTree`. If no node has been found, returns `null`.
-
-##### Parameters
-
-<table>
- <tr>
- <td><i>{number}</i></td>
- <td>index</td>
- <td>Index number of node which we're looking for.</td>
- </tr>
-</table>
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{?Object}</i></td>
- <td>A node.</td>
- </tr>
-</table>
-
-##### Examples
-
-```js
-var node = parseTree.get(2);
-doSomething(node);
-```
-
-### parseTree.insert(index, node)
-
-##### Description
-
-Inserts a node to a given position in `parseTree`.
-
-##### Parameters
-
-<table>
- <tr>
- <td><i>{number}</i></td>
- <td>index</td>
- <td>Index of position where to insert the node.</td>
- </tr>
- <tr>
- <td><i>{Object}</i></td>
- <td>node</td>
- <td>A node to insert.</td>
- </tr>
-</table>
-
-##### Examples
-
-```js
-let node = gonzales.createNode({type: 'animal', content: 'panda'});
-parseTree.insert(2, node);
-```
-
-### parseTree.is(type)
-
-##### Description
-
-Checks whether the node is of given type.
-
-##### Parameters
-
-<table>
- <tr>
- <td><i>{string}</i></td>
- <td>type</td>
- <td>
- A node type against which to check type of <code>parseTree</code>.
- For a list of available values see
- <a href="docs/node-types.md">"Node types"</a>.
- </td>
- </tr>
-</table>
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{boolean}</i></td>
- <td>
- <code>true</code> if types are equal, <code>false</code> otherwise.
- </td>
- </tr>
-</table>
-
-##### Examples
-
-```js
-if (node.is('space')) {
- node.content = '';
-}
-```
-
-### parseTree.last(type)
-
-Gets the last child node. If `type` parameter is passed, gets the last child
-node of a given type. If no node has been found, returns `null`.
-
-##### Parameters
-
-<table>
- <tr>
- <td><i>{string=}</i></td>
- <td>type</td>
- <td>
- Optional. Node type to look for. For a list of available values see
- <a href="docs/node-types.md">"Node types"</a>.
- </td>
- </tr>
-</table>
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{?Object}</i></td>
- <td>A node.</td>
- </tr>
-</table>
-
-##### Examples
-
-```js
-let node = parseTree.last();
-node.content = 'panda';
-```
-
-```js
-let node = parseTree.last('multilineComment');
-node.content = 'panda';
-```
-
-### parseTree.length
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{number}</i></td>
- <td>Number of child nodes.</td>
- </tr>
-</table>
-
-### parseTree.removeChild(index)
-
-##### Description
-
-Removes a child node at a given position.
-
-##### Parameters
-
-<table>
- <tr>
- <td><i>{number}</i></td>
- <td>index</td>
- <td>Index of a child node we need to remove.</td>
- </tr>
-</table>
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{Object}</i></td>
- <td>Removed node.</td>
- </tr>
-</table>
-##### Examples
-
-```js
-// Swap nodes.
-var node = parseTree.removeChild(1);
-parseTree.insert(0, node);
-```
-
-### parseTree.start
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{Object}</i></td>
- <td>
- Start position of the node. Contains following info:
- <ul>
- <li>
- <code>{number} line</code> — first symbol's line number
- (1-based index);
- </li>
- <li>
- <code>{number} column</code> — first symbol's column number
- (1-based index).
- </li>
- </ul>
- </td>
- </tr>
-</table>
-
-
-### parseTree.syntax
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{string}</i></td>
- <td>Syntax of original parsed string.</td>
- </tr>
-</table>
-
-### parseTree.toJson()
-
-##### Description
-
-Converts parse tree to JSON. Useful for printing.
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{Object}</i></td>
- <td>Parse tree in JSON</td>
- </tr>
-</table>
-
-### parseTree.toString()
-
-##### Description
-
-Converts parse tree back to string according to original syntax.
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{string}</i></td>
- <td>A compiled string.</td>
- </tr>
-</table>
-
-##### Examples
-
-```js
-let css = parseTree.toString();
-```
-
-### parseTree.traverse(callback)
-
-##### Description
-
-Calls the function for every node in a tree including `parseTree` itself.
-
-##### Parameters
-
-<table>
- <tr>
- <td><i>{Function}</i></td>
- <td>callback</td>
- <td>
- Function to apply to every node. Accepts following parameters:
- <ul>
- <li><code>{Object}</code> — a node to which we apply callback;</li>
- <li><code>{number}</code> — node's index number inside its parent;</li>
- <li><code>{Object}</code> — a node's parent;</li>
- <li>
- <code>{number}</code> — node's nesting level relative to its parent.
- </li>
- </ul>
- </td>
- </tr>
-</table>
-
-##### Examples
-
-```js
-parseTree.traverse(function(node, index, parent) {
- if (node.is('multilineComment')) {
- parent.removeChild(index);
- } else if (node.is('space')) {
- node.content = ' ';
- }
-});
-```
-
-### parseTree.traverseByType(type, callback)
-
-##### Description
-
-This method should be called for a root node, because calling it for a child
-will be more time consuming.
-Calls the function for every node of a given type. This means not just child
-nodes, but grandchilds and so on.
-
-##### Parameters
-
-<table>
- <tr>
- <td><i>{string}</i></td>
- <td>type</td>
- <td>
- Node type. For a list of available values please see
- <a href="docs/node-types.md">"Node types"</a>.
- </td>
- </tr>
- <tr>
- <td><i>{Function}</i></td>
- <td>callback</td>
- <td>
- Function to apply to every node of a given type.
- Accepts following parameters:
- <ul>
- <li><code>{Object}</code> — a node to which we apply callback;</li>
- <li><code>{number}</code> — node's index number inside its parent;</li>
- <li><code>{Object}</code> — a node's parent.</li>
- </ul>
- </td>
- </tr>
-</table>
-
-##### Examples
-
-```js
-// Remove all comments.
-parseTree.traverseByType('multilineComment', function(node, index, parent) {
- parent.removeChild(index);
-});
-```
-
-### parseTree.traverseByTypes(types, callback)
-
-##### Description
-
-This method should be called for a root node, because calling it for a child
-will be more time consuming.
-Calls the function for every node of given types. This means not just child
-nodes, but grandchilds and so on.
-
-##### Parameters
-
-<table>
- <tr>
- <td><i>{Array.string}</i></td>
- <td>types</td>
- <td>
- List of node types. For a list of available values please see
- <a href="docs/node-types.md">"Node types"</a>.
- </td>
- </tr>
- <tr>
- <td><i>{Function}</i></td>
- <td>callback</td>
- <td>
- Function to apply to every node of given types.
- Accepts following parameters:
- <ul>
- <li><code>{Object}</code> — a node to which we apply callback;</li>
- <li><code>{number}</code> — node's index number inside its parent;</li>
- <li><code>{Object}</code> — a node's parent.</li>
- </ul>
- </td>
- </tr>
-</table>
-
-##### Examples
-
-```js
-// Remove all comments and spaces.
-let types = ['multilineComment', 'space'];
-parseTree.traverseByTypes(types, function(node, index, parent) {
- parent.removeChild(index);
-});
-```
-
-### parseTree.type
-
-##### Returns
-
-<table>
- <tr>
- <td><i>{string}</i></td>
- <td>
- Node type. For a list of available values see
- <a href="docs/node-types.md">"Node types"</a>.
- </td>
- </tr>
-</table>
-
-
-## Test
-
-To run tests:
-
- npm test
-
-This command will build library files from sources and run tests on all files
-in syntax directories.
-
-Every test has 3 files: source stylesheet, expected parse tree and expected
-string compiled back from parse tree to css.
-
-If some tests fail, you can find information in test logs:
-
-- `log/test.log` contains all information from stdout;
-- `log/expected.txt` contains only expected text;
-- `log/result.txt` contains only result text.
-
-The last two are made for your convenience: you can use any diff app to see
-the defference between them.
-
-If you want to test one specific string or get a general idea of how Gonzales
-works, you can use `test/ast.js` file.
-Simply change the first two strings (`css` and `syntax` vars) and run:
-
- node test/single-test.js
-
-## Report
-
-If you find a bug or want to add a feature, welcome to [Issues](https://github.com/tonyganch/gonzales-pe/issues).
-
-If you are shy but have a question, feel free to [drop me a
-line](mailto:tonyganch+gonzales@gmail.com).
diff --git a/assets/node_modules/gonzales-pe/bin/gonzales.js b/assets/node_modules/gonzales-pe/bin/gonzales.js
deleted file mode 100755
index 22968a2..0000000
--- a/assets/node_modules/gonzales-pe/bin/gonzales.js
+++ /dev/null
@@ -1,116 +0,0 @@
-#!/usr/bin/env node
-
-'use strict';
-
-var parseArgs = require('minimist');
-var gonzales = require('..');
-var fs = require('fs');
-var path = require('path');
-
-var options = getOptions();
-
-if (options.help) {
- displayHelp();
- process.exit(0);
-}
-
-if (isSTDIN()) {
- processSTDIN();
-} else {
- processFile(options._[0]);
-}
-
-function getOptions() {
- var parserOptions = {
- boolean: ['silent', 'simple'],
- alias: {
- help: 'h',
- syntax: 's',
- context: 'c'
- }
- };
- return parseArgs(process.argv.slice(2), parserOptions);
-}
-
-function isSTDIN() {
- return options._.indexOf('-') !== -1;
-}
-
-function processSTDIN() {
- var input = '';
- process.stdin.resume();
- process.stdin.setEncoding('utf8');
- process.stdin.on('data', data => {
- input += data;
- });
- process.stdin.on('end', () => {
- processInputData(input);
- });
-}
-
-function processFile(file) {
- if (!file) process.exit(0);
- if (!options.syntax) options.syntax = path.extname(file).substring(1);
- var css = fs.readFileSync(file, 'utf-8').trim();
- processInputData(css);
-}
-
-function processInputData(input) {
- try {
- var ast = gonzales.parse(input, {
- syntax: options.syntax,
- context: options.context
- });
- printTree(ast);
- process.exit(0);
- } catch (e) {
- if (!options.silent) process.stderr.write(e.toString());
- process.exit(1);
- }
-}
-
-function printTree(ast) {
- if (!options.simple) {
- var tree = ast.toJson();
- process.stdout.write(tree);
- } else {
- var lastLevel;
-
- ast.traverse(function(node, i, parent, lastLevel) {
- var type = node.type;
- var spaces = new Array(lastLevel).join(' |');
- if (typeof node.content === 'string') {
- var content = JSON.stringify(node.content);
- console.log(spaces, '->', type);
- console.log(spaces, ' ', content);
- } else {
- console.log(spaces, '->', type);
- }
- });
-
- var spaces = new Array(lastLevel).join(' -');
- console.log(spaces);
- }
-}
-
-function displayHelp() {
- var help = [
- 'NAME',
- ' gonzlaes-pe — Parse a css file and print its parse tree in JSON',
- '',
- 'SYNOPSIS',
- ' gonzales-pe [options] file.js',
- ' cat file.js | gonzales-pe [options] -',
- '',
- 'OPTIONS',
- ' -s, --syntax',
- ' Syntax name: css, less, sass or scss.',
- ' -c, --context',
- ' Context of code part. See docs on node types for more info.',
- ' --simple',
- ' Print a simplified parse tree structure instead of JSON.',
- ' --silent',
- ' Don\'t print any error messages.'
- ];
- console.log(help.join('\n'));
-}
diff --git a/assets/node_modules/gonzales-pe/lib/gonzales.js b/assets/node_modules/gonzales-pe/lib/gonzales.js
deleted file mode 100644
index bf691de..0000000
--- a/assets/node_modules/gonzales-pe/lib/gonzales.js
+++ /dev/null
@@ -1,22435 +0,0 @@
-(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["gonzales"] = factory();
- else
- root["gonzales"] = 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__) {
-
- 'use strict';
-
- var Node = __webpack_require__(1);
- var parse = __webpack_require__(7);
-
- module.exports = {
- createNode: function createNode(options) {
- return new Node(options);
- },
- parse: parse
- };
-
-/***/ }),
-/* 1 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- /**
- * @param {string} type
- * @param {array|string} content
- * @param {number} line
- * @param {number} column
- * @constructor
- */
-
- var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- var Node = function () {
- function Node(options) {
- _classCallCheck(this, Node);
-
- this.type = options.type;
- this.content = options.content;
- this.syntax = options.syntax;
-
- if (options.start) this.start = options.start;
- if (options.end) this.end = options.end;
- }
-
- /**
- * @param {String} type Node type
- * @return {Boolean} Whether there is a child node of given type
- */
-
-
- Node.prototype.contains = function contains(type) {
- if (!Array.isArray(this.content)) {
- return false;
- }
-
- return this.content.some(function (node) {
- return node.type === type;
- });
- };
-
- /**
- * @param {String} type Node type
- * @param {Function} callback Function to call for every found node
- */
-
-
- Node.prototype.eachFor = function eachFor(type, callback) {
- if (!Array.isArray(this.content)) return;
-
- if (typeof type !== 'string') {
- callback = type;
- type = null;
- }
-
- var l = this.content.length;
- var breakLoop;
-
- for (var i = l; i--;) {
- if (breakLoop === null) break;
-
- if (!type || this.content[i] && this.content[i].type === type) breakLoop = callback(this.content[i], i, this);
- }
-
- if (breakLoop === null) return null;
- };
-
- /**
- * @param {String} type
- * @return {?Node} First child node or `null` if nothing's been found.
- */
-
-
- Node.prototype.first = function first(type) {
- if (!Array.isArray(this.content)) return null;
-
- if (!type) return this.content[0];
-
- var i = 0;
- var l = this.content.length;
-
- for (; i < l; i++) {
- if (this.content[i].type === type) return this.content[i];
- }
-
- return null;
- };
-
- /**
- * @param {String} type Node type
- * @param {Function} callback Function to call for every found node
- */
-
-
- Node.prototype.forEach = function forEach(type, callback) {
- if (!Array.isArray(this.content)) return;
-
- if (typeof type !== 'string') {
- callback = type;
- type = null;
- }
-
- var i = 0;
- var l = this.content.length;
- var breakLoop;
-
- for (; i < l; i++) {
- if (breakLoop === null) break;
-
- if (!type || this.content[i] && this.content[i].type === type) breakLoop = callback(this.content[i], i, this);
- }
-
- if (breakLoop === null) return null;
- };
-
- /**
- * @param {Number} index
- * @return {?Node}
- */
-
-
- Node.prototype.get = function get(index) {
- if (!Array.isArray(this.content)) return null;
-
- var node = this.content[index];
- return node ? node : null;
- };
-
- /**
- * @param {Number} index
- * @param {Node} node
- */
-
-
- Node.prototype.insert = function insert(index, node) {
- if (!Array.isArray(this.content)) return;
-
- this.content.splice(index, 0, node);
- };
-
- /**
- * @param {String} type
- * @return {Boolean} Whether the node is of given type
- */
-
-
- Node.prototype.is = function is(type) {
- return this.type === type;
- };
-
- /**
- * @param {String} type
- * @return {?Node} Last child node or `null` if nothing's been found.
- */
-
-
- Node.prototype.last = function last(type) {
- if (!Array.isArray(this.content)) return null;
-
- var i = this.content.length;
- if (!type) return this.content[i - 1];
-
- for (; i--;) {
- if (this.content[i].type === type) return this.content[i];
- }
-
- return null;
- };
-
- /**
- * Number of child nodes.
- * @type {number}
- */
-
-
- /**
- * @param {Number} index
- * @return {Node}
- */
- Node.prototype.removeChild = function removeChild(index) {
- if (!Array.isArray(this.content)) return;
-
- var removedChild = this.content.splice(index, 1);
-
- return removedChild;
- };
-
- Node.prototype.toJson = function toJson() {
- return JSON.stringify(this, false, 2);
- };
-
- Node.prototype.toString = function toString() {
- var stringify = void 0;
-
- try {
- stringify = __webpack_require__(2)("./" + this.syntax + '/stringify');
- } catch (e) {
- var message = 'Syntax "' + this.syntax + '" is not supported yet, sorry';
- return console.error(message);
- }
-
- return stringify(this);
- };
-
- /**
- * @param {Function} callback
- */
-
-
- Node.prototype.traverse = function traverse(callback, index) {
- var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
- var parent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
-
- var breakLoop;
- var x;
-
- level++;
-
- callback(this, index, parent, level);
-
- if (!Array.isArray(this.content)) return;
-
- for (var i = 0, l = this.content.length; i < l; i++) {
- breakLoop = this.content[i].traverse(callback, i, level, this);
- if (breakLoop === null) break;
-
- // If some nodes were removed or added:
- if (x = this.content.length - l) {
- l += x;
- i += x;
- }
- }
-
- if (breakLoop === null) return null;
- };
-
- Node.prototype.traverseByType = function traverseByType(type, callback) {
- this.traverse(function (node) {
- if (node.type === type) callback.apply(node, arguments);
- });
- };
-
- Node.prototype.traverseByTypes = function traverseByTypes(types, callback) {
- this.traverse(function (node) {
- if (types.indexOf(node.type) !== -1) callback.apply(node, arguments);
- });
- };
-
- _createClass(Node, [{
- key: 'length',
- get: function get() {
- if (!Array.isArray(this.content)) return 0;
- return this.content.length;
- }
- }]);
-
- return Node;
- }();
-
- module.exports = Node;
-
-/***/ }),
-/* 2 */
-/***/ (function(module, exports, __webpack_require__) {
-
- var map = {
- "./css/stringify": 3,
- "./less/stringify": 4,
- "./sass/stringify": 5,
- "./scss/stringify": 6
- };
- function webpackContext(req) {
- return __webpack_require__(webpackContextResolve(req));
- };
- function webpackContextResolve(req) {
- return map[req] || (function() { throw new Error("Cannot find module '" + req + "'.") }());
- };
- webpackContext.keys = function webpackContextKeys() {
- return Object.keys(map);
- };
- webpackContext.resolve = webpackContextResolve;
- module.exports = webpackContext;
- webpackContext.id = 2;
-
-
-/***/ }),
-/* 3 */
-/***/ (function(module, exports) {
-
- 'use strict';
-
- module.exports = function stringify(tree) {
- // TODO: Better error message
- if (!tree) throw new Error('We need tree to translate');
-
- function _t(tree) {
- var type = tree.type;
- if (_unique[type]) return _unique[type](tree);
- if (typeof tree.content === 'string') return tree.content;
- if (Array.isArray(tree.content)) return _composite(tree.content);
- return '';
- }
-
- function _composite(t, i) {
- if (!t) return '';
-
- var s = '';
- i = i || 0;
- for (; i < t.length; i++) {
- s += _t(t[i]);
- }return s;
- }
-
- var _unique = {
- 'arguments': function _arguments(t) {
- return '(' + _composite(t.content) + ')';
- },
- 'atkeyword': function atkeyword(t) {
- return '@' + _composite(t.content);
- },
- 'attributeSelector': function attributeSelector(t) {
- return '[' + _composite(t.content) + ']';
- },
- 'block': function block(t) {
- return '{' + _composite(t.content) + '}';
- },
- 'brackets': function brackets(t) {
- return '[' + _composite(t.content) + ']';
- },
- 'class': function _class(t) {
- return '.' + _composite(t.content);
- },
- 'color': function color(t) {
- return '#' + t.content;
- },
- 'customProperty': function customProperty(t) {
- return '--' + t.content;
- },
- 'expression': function expression(t) {
- return 'expression(' + t.content + ')';
- },
- 'id': function id(t) {
- return '#' + _composite(t.content);
- },
- 'multilineComment': function multilineComment(t) {
- return '/*' + t.content + '*/';
- },
- 'nthSelector': function nthSelector(t) {
- return ':' + _t(t.content[0]) + '(' + _composite(t.content.slice(1)) + ')';
- },
- 'parentheses': function parentheses(t) {
- return '(' + _composite(t.content) + ')';
- },
- 'percentage': function percentage(t) {
- return _composite(t.content) + '%';
- },
- 'pseudoClass': function pseudoClass(t) {
- return ':' + _composite(t.content);
- },
- 'pseudoElement': function pseudoElement(t) {
- return '::' + _composite(t.content);
- },
- 'universalSelector': function universalSelector(t) {
- return _composite(t.content) + '*';
- },
- 'uri': function uri(t) {
- return 'url(' + _composite(t.content) + ')';
- }
- };
-
- return _t(tree);
- };
-
-/***/ }),
-/* 4 */
-/***/ (function(module, exports) {
-
- 'use strict';
-
- module.exports = function stringify(tree) {
- // TODO: Better error message
- if (!tree) throw new Error('We need tree to translate');
-
- function _t(tree) {
- var type = tree.type;
- if (_unique[type]) return _unique[type](tree);
- if (typeof tree.content === 'string') return tree.content;
- if (Array.isArray(tree.content)) return _composite(tree.content);
- return '';
- }
-
- function _composite(t, i) {
- if (!t) return '';
-
- var s = '';
- i = i || 0;
- for (; i < t.length; i++) {
- s += _t(t[i]);
- }return s;
- }
-
- var _unique = {
- 'arguments': function _arguments(t) {
- return '(' + _composite(t.content) + ')';
- },
- 'atkeyword': function atkeyword(t) {
- return '@' + _composite(t.content);
- },
- 'attributeSelector': function attributeSelector(t) {
- return '[' + _composite(t.content) + ']';
- },
- 'block': function block(t) {
- return '{' + _composite(t.content) + '}';
- },
- 'brackets': function brackets(t) {
- return '[' + _composite(t.content) + ']';
- },
- 'class': function _class(t) {
- return '.' + _composite(t.content);
- },
- 'color': function color(t) {
- return '#' + t.content;
- },
- 'escapedString': function escapedString(t) {
- return '~' + t.content;
- },
- 'expression': function expression(t) {
- return 'expression(' + t.content + ')';
- },
- 'id': function id(t) {
- return '#' + _composite(t.content);
- },
- 'interpolatedVariable': function interpolatedVariable(t) {
- return '@{' + _composite(t.content) + '}';
- },
- 'multilineComment': function multilineComment(t) {
- return '/*' + t.content + '*/';
- },
- 'nthSelector': function nthSelector(t) {
- return ':' + _t(t.content[0]) + '(' + _composite(t.content.slice(1)) + ')';
- },
- 'parentheses': function parentheses(t) {
- return '(' + _composite(t.content) + ')';
- },
- 'percentage': function percentage(t) {
- return _composite(t.content) + '%';
- },
- 'pseudoClass': function pseudoClass(t) {
- return ':' + _composite(t.content);
- },
- 'pseudoElement': function pseudoElement(t) {
- return '::' + _composite(t.content);
- },
- 'singlelineComment': function singlelineComment(t) {
- return '/' + '/' + t.content;
- },
- 'universalSelector': function universalSelector(t) {
- return _composite(t.content) + '*';
- },
- 'uri': function uri(t) {
- return 'url(' + _composite(t.content) + ')';
- },
- 'variable': function variable(t) {
- return '@' + _composite(t.content);
- },
- 'variablesList': function variablesList(t) {
- return _composite(t.content) + '...';
- }
- };
-
- return _t(tree);
- };
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports) {
-
- 'use strict';
-
- module.exports = function stringify(tree) {
- // TODO: Better error message
- if (!tree) throw new Error('We need tree to translate');
-
- function _t(tree) {
- var type = tree.type;
- if (_unique[type]) return _unique[type](tree);
- if (typeof tree.content === 'string') return tree.content;
- if (Array.isArray(tree.content)) return _composite(tree.content);
- return '';
- }
-
- function _composite(t, i) {
- if (!t) return '';
-
- var s = '';
- i = i || 0;
- for (; i < t.length; i++) {
- s += _t(t[i]);
- }return s;
- }
-
- var _unique = {
- 'arguments': function _arguments(t) {
- return '(' + _composite(t.content) + ')';
- },
- 'atkeyword': function atkeyword(t) {
- return '@' + _composite(t.content);
- },
- 'attributeSelector': function attributeSelector(t) {
- return '[' + _composite(t.content) + ']';
- },
- 'block': function block(t) {
- return _composite(t.content);
- },
- 'brackets': function brackets(t) {
- return '[' + _composite(t.content) + ']';
- },
- 'class': function _class(t) {
- return '.' + _composite(t.content);
- },
- 'color': function color(t) {
- return '#' + t.content;
- },
- 'customProperty': function customProperty(t) {
- return '--' + t.content;
- },
- 'expression': function expression(t) {
- return 'expression(' + t.content + ')';
- },
- 'functionsList': function functionsList(t) {
- return _composite(t.content) + '...';
- },
- 'id': function id(t) {
- return '#' + _composite(t.content);
- },
- 'interpolation': function interpolation(t) {
- return '#{' + _composite(t.content) + '}';
- },
- 'multilineComment': function multilineComment(t) {
- var lines = t.content.split('\n');
- var close = '';
-
- if (lines.length > 1) {
- var lastLine = lines[lines.length - 1];
- if (lastLine.length < t.end.column) {
- close = '*/';
- }
- } else if (t.content.length + 4 === t.end.column - t.start.column + 1) {
- close = '*/';
- }
-
- return '/*' + t.content + close;
- },
- 'nthSelector': function nthSelector(t) {
- return ':' + _t(t.content[0]) + '(' + _composite(t.content.slice(1)) + ')';
- },
- 'parentheses': function parentheses(t) {
- return '(' + _composite(t.content) + ')';
- },
- 'percentage': function percentage(t) {
- return _composite(t.content) + '%';
- },
- 'placeholder': function placeholder(t) {
- return '%' + _composite(t.content);
- },
- 'pseudoClass': function pseudoClass(t) {
- return ':' + _composite(t.content);
- },
- 'pseudoElement': function pseudoElement(t) {
- return '::' + _composite(t.content);
- },
- 'singlelineComment': function singlelineComment(t) {
- return '/' + '/' + t.content;
- },
- 'universalSelector': function universalSelector(t) {
- return _composite(t.content) + '*';
- },
- 'uri': function uri(t) {
- return 'url(' + _composite(t.content) + ')';
- },
- 'variable': function variable(t) {
- return '$' + _composite(t.content);
- },
- 'variablesList': function variablesList(t) {
- return _composite(t.content) + '...';
- }
- };
-
- return _t(tree);
- };
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports) {
-
- 'use strict';
-
- module.exports = function stringify(tree) {
- // TODO: Better error message
- if (!tree) throw new Error('We need tree to translate');
-
- function _t(tree) {
- var type = tree.type;
- if (_unique[type]) return _unique[type](tree);
- if (typeof tree.content === 'string') return tree.content;
- if (Array.isArray(tree.content)) return _composite(tree.content);
- return '';
- }
-
- function _composite(t, i) {
- if (!t) return '';
-
- var s = '';
- i = i || 0;
- for (; i < t.length; i++) {
- s += _t(t[i]);
- }return s;
- }
-
- var _unique = {
- 'arguments': function _arguments(t) {
- return '(' + _composite(t.content) + ')';
- },
- 'atkeyword': function atkeyword(t) {
- return '@' + _composite(t.content);
- },
- 'attributeSelector': function attributeSelector(t) {
- return '[' + _composite(t.content) + ']';
- },
- 'block': function block(t) {
- return '{' + _composite(t.content) + '}';
- },
- 'brackets': function brackets(t) {
- return '[' + _composite(t.content) + ']';
- },
- 'class': function _class(t) {
- return '.' + _composite(t.content);
- },
- 'color': function color(t) {
- return '#' + t.content;
- },
- 'customProperty': function customProperty(t) {
- return '--' + t.content;
- },
- 'expression': function expression(t) {
- return 'expression(' + t.content + ')';
- },
- 'functionsList': function functionsList(t) {
- return _composite(t.content) + '...';
- },
- 'id': function id(t) {
- return '#' + _composite(t.content);
- },
- 'interpolation': function interpolation(t) {
- return '#{' + _composite(t.content) + '}';
- },
- 'multilineComment': function multilineComment(t) {
- return '/*' + t.content + '*/';
- },
- 'nthSelector': function nthSelector(t) {
- return ':' + _t(t.content[0]) + '(' + _composite(t.content.slice(1)) + ')';
- },
- 'parentheses': function parentheses(t) {
- return '(' + _composite(t.content) + ')';
- },
- 'percentage': function percentage(t) {
- return _composite(t.content) + '%';
- },
- 'placeholder': function placeholder(t) {
- return '%' + _composite(t.content);
- },
- 'pseudoClass': function pseudoClass(t) {
- return ':' + _composite(t.content);
- },
- 'pseudoElement': function pseudoElement(t) {
- return '::' + _composite(t.content);
- },
- 'singlelineComment': function singlelineComment(t) {
- return '/' + '/' + t.content;
- },
- 'universalSelector': function universalSelector(t) {
- return _composite(t.content) + '*';
- },
- 'uri': function uri(t) {
- return 'url(' + _composite(t.content) + ')';
- },
- 'variable': function variable(t) {
- return '$' + _composite(t.content);
- },
- 'variablesList': function variablesList(t) {
- return _composite(t.content) + '...';
- }
- };
-
- return _t(tree);
- };
-
-/***/ }),
-/* 7 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- var ParsingError = __webpack_require__(8);
- var syntaxes = __webpack_require__(10);
-
- var isInteger = Number.isInteger || function (value) {
- return typeof value === 'number' && Math.floor(value) === value;
- };
-
- /**
- * @param {String} css
- * @param {Object} options
- * @return {Object} AST
- */
- function parser(css, options) {
- if (typeof css !== 'string') throw new Error('Please, pass a string to parse');else if (!css) return __webpack_require__(29)();
-
- var syntax = options && options.syntax || 'css';
- var context = options && options.context || 'stylesheet';
- var tabSize = options && options.tabSize;
- if (!isInteger(tabSize) || tabSize < 1) tabSize = 1;
-
- var syntaxParser = syntaxes[syntax];
-
- if (!syntaxParser) {
- var message = 'Syntax "' + syntax + '" is not supported yet, sorry';
- return console.error(message);
- }
-
- var getTokens = syntaxParser.tokenizer;
- var mark = syntaxParser.mark;
- var parse = syntaxParser.parse;
-
- var tokens = getTokens(css, tabSize);
- mark(tokens);
-
- var ast;
- try {
- ast = parse(tokens, context);
- } catch (e) {
- if (!e.syntax) throw e;
- throw new ParsingError(e, css);
- }
-
- return ast;
- }
-
- module.exports = parser;
-
-/***/ }),
-/* 8 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- var parserPackage = __webpack_require__(9);
-
- /**
- * @param {Error} e
- * @param {String} css
- */
- function ParsingError(e, css) {
- this.line = e.line;
- this.syntax = e.syntax;
- this.css_ = css;
- }
-
- ParsingError.prototype = {
- /**
- * @type {String}
- * @private
- */
- customMessage_: '',
-
- /**
- * @type {Number}
- */
- line: null,
-
- /**
- * @type {String}
- */
- name: 'Parsing error',
-
- /**
- * @type {String}
- */
- syntax: null,
-
- /**
- * @type {String}
- */
- version: parserPackage.version,
-
- /**
- * @type {String}
- */
- get context() {
- var LINES_AROUND = 2;
-
- var result = [];
- var currentLineNumber = this.line;
- var start = currentLineNumber - 1 - LINES_AROUND;
- var end = currentLineNumber + LINES_AROUND;
- var lines = this.css_.split(/\r\n|\r|\n/);
-
- for (var i = start; i < end; i++) {
- var line = lines[i];
- if (!line) continue;
- var ln = i + 1;
- var mark = ln === currentLineNumber ? '*' : ' ';
- result.push(ln + mark + '| ' + line);
- }
-
- return result.join('\n');
- },
-
- /**
- * @type {String}
- */
- get message() {
- if (this.customMessage_) {
- return this.customMessage_;
- } else {
- var message = 'Please check validity of the block';
- if (typeof this.line === 'number') message += ' starting from line #' + this.line;
- return message;
- }
- },
-
- set message(message) {
- this.customMessage_ = message;
- },
-
- /**
- * @return {String}
- */
- toString: function toString() {
- return [this.name + ': ' + this.message, '', this.context, '', 'Syntax: ' + this.syntax, 'Gonzales PE version: ' + this.version].join('\n');
- }
- };
-
- module.exports = ParsingError;
-
-/***/ }),
-/* 9 */
-/***/ (function(module, exports) {
-
- module.exports = {"name":"gonzales-pe","description":"Gonzales Preprocessor Edition (fast CSS parser)","version":"4.2.4","homepage":"http://github.com/tonyganch/gonzales-pe","bugs":"http://github.com/tonyganch/gonzales-pe/issues","license":"MIT","author":{"name":"Tony Ganch","email":"tonyganch+github@gmail.com","url":"http://tonyganch.com"},"main":"./lib/gonzales","repository":{"type":"git","url":"http://github.com/tonyganch/gonzales-pe.git"},"scripts":{"autofix-tests":"bash ./scripts/build.sh && bash ./scripts/autofix-tests.sh","build":"bash ./scripts/build.sh","init":"bash ./scripts/init.sh","lint":"bash ./scripts/lint.sh","log":"bash ./scripts/log.sh","prepublishOnly":"bash ./scripts/build.sh","test":"bash ./scripts/test.sh","watch":"bash ./scripts/watch.sh"},"bin":{"gonzales":"./bin/gonzales.js"},"dependencies":{"minimist":"1.1.x"},"devDependencies":{"babel-core":"^6.18.2","babel-loader":"^6.2.7","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.18.0","coffee-script":"~1.7.1","eslint":"^3.0.0","jscs":"2.1.0","jshint":"2.10.2","json-loader":"^0.5.3","mocha":"2.2.x","webpack":"^1.12.2","webpack-closure-compiler":"^2.0.2"},"engines":{"node":">=0.6.0"},"files":["MIT-LICENSE.txt","bin/gonzales.js","lib/gonzales.js"]}
-
-/***/ }),
-/* 10 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- module.exports = {
- css: __webpack_require__(11),
- less: __webpack_require__(17),
- sass: __webpack_require__(21),
- scss: __webpack_require__(25)
- };
-
-/***/ }),
-/* 11 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- exports.__esModule = true;
- exports.default = {
- mark: __webpack_require__(12),
- parse: __webpack_require__(14),
- stringify: __webpack_require__(3),
- tokenizer: __webpack_require__(16)
- };
- module.exports = exports['default'];
-
-/***/ }),
-/* 12 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- var TokenType = __webpack_require__(13);
-
- /**
- * Mark whitespaces and comments
- * @param {Array} tokens
- */
- function markSpacesAndComments(tokens) {
- var tokensLength = tokens.length;
- var spaces = [-1, -1];
- var type; // Current token's type
-
- // For every token in the token list, mark spaces and line breaks
- // as spaces (set both `ws` and `sc` flags). Mark multiline comments
- // with `sc` flag.
- // If there are several spaces or tabs or line breaks or multiline
- // comments in a row, group them: take the last one's index number
- // and save it to the first token in the group as a reference:
- // e.g., `ws_last = 7` for a group of whitespaces or `sc_last = 9`
- // for a group of whitespaces and comments.
- for (var i = 0; i < tokensLength; i++) {
- type = tokens[i].type;
-
- if (type === TokenType.Space || type === TokenType.Tab || type === TokenType.Newline) {
- markSpace(tokens, i, spaces);
- } else if (type === TokenType.CommentML) {
- markComment(tokens, i, spaces);
- } else {
- markEndOfSpacesAndComments(tokens, i, spaces);
- }
- }
-
- markEndOfSpacesAndComments(tokens, i, spaces);
- }
-
- function markSpace(tokens, i, spaces) {
- var token = tokens[i];
- token.ws = true;
- token.sc = true;
-
- if (spaces[0] === -1) spaces[0] = i;
- if (spaces[1] === -1) spaces[1] = i;
- }
-
- function markComment(tokens, i, spaces) {
- var ws = spaces[0];
- tokens[i].sc = true;
-
- if (ws !== -1) {
- tokens[ws].ws_last = i - 1;
- spaces[0] = -1;
- }
- }
-
- function markEndOfSpacesAndComments(tokens, i, spaces) {
- var ws = spaces[0];
- var sc = spaces[1];
- if (ws !== -1) {
- tokens[ws].ws_last = i - 1;
- spaces[0] = -1;
- }
- if (sc !== -1) {
- tokens[sc].sc_last = i - 1;
- spaces[1] = -1;
- }
- }
-
- /**
- * Pair brackets
- * @param {Array} tokens
- */
- function markBrackets(tokens) {
- var tokensLength = tokens.length;
- var ps = []; // Parentheses
- var sbs = []; // Square brackets
- var cbs = []; // Curly brackets
- var t = void 0; // Current token
-
- // For every token in the token list, if we meet an opening (left)
- // bracket, push its index number to a corresponding array.
- // If we then meet a closing (right) bracket, look at the corresponding
- // array. If there are any elements (records about previously met
- // left brackets), take a token of the last left bracket (take
- // the last index number from the array and find a token with
- // this index number) and save right bracket's index as a reference:
- for (var i = 0; i < tokensLength; i++) {
- t = tokens[i];
- var type = t.type;
-
- if (type === TokenType.LeftParenthesis) {
- ps.push(i);
- } else if (type === TokenType.RightParenthesis) {
- if (ps.length) {
- t.left = ps.pop();
- tokens[t.left].right = i;
- }
- } else if (type === TokenType.LeftSquareBracket) {
- sbs.push(i);
- } else if (type === TokenType.RightSquareBracket) {
- if (sbs.length) {
- t.left = sbs.pop();
- tokens[t.left].right = i;
- }
- } else if (type === TokenType.LeftCurlyBracket) {
- cbs.push(i);
- } else if (type === TokenType.RightCurlyBracket) {
- if (cbs.length) {
- t.left = cbs.pop();
- tokens[t.left].right = i;
- }
- }
- }
- }
-
- /**
- * @param {Array} tokens
- */
- function markTokens(tokens) {
- // Mark paired brackets:
- markBrackets(tokens);
- // Mark whitespaces and comments:
- markSpacesAndComments(tokens);
- }
-
- module.exports = markTokens;
-
-/***/ }),
-/* 13 */
-/***/ (function(module, exports) {
-
- // jscs:disable
-
- 'use strict';
-
- module.exports = {
- StringSQ: 'StringSQ',
- StringDQ: 'StringDQ',
- CommentML: 'CommentML',
- CommentSL: 'CommentSL',
-
- Newline: 'Newline',
- Space: 'Space',
- Tab: 'Tab',
-
- ExclamationMark: 'ExclamationMark', // !
- QuotationMark: 'QuotationMark', // "
- NumberSign: 'NumberSign', // #
- DollarSign: 'DollarSign', // $
- PercentSign: 'PercentSign', // %
- Ampersand: 'Ampersand', // &
- Apostrophe: 'Apostrophe', // '
- LeftParenthesis: 'LeftParenthesis', // (
- RightParenthesis: 'RightParenthesis', // )
- Asterisk: 'Asterisk', // *
- PlusSign: 'PlusSign', // +
- Comma: 'Comma', // ,
- HyphenMinus: 'HyphenMinus', // -
- FullStop: 'FullStop', // .
- Solidus: 'Solidus', // /
- Colon: 'Colon', // :
- Semicolon: 'Semicolon', // ;
- LessThanSign: 'LessThanSign', // <
- EqualsSign: 'EqualsSign', // =
- EqualitySign: 'EqualitySign', // ==
- InequalitySign: 'InequalitySign', // !=
- GreaterThanSign: 'GreaterThanSign', // >
- QuestionMark: 'QuestionMark', // ?
- CommercialAt: 'CommercialAt', // @
- LeftSquareBracket: 'LeftSquareBracket', // [
- ReverseSolidus: 'ReverseSolidus', // \
- RightSquareBracket: 'RightSquareBracket', // ]
- CircumflexAccent: 'CircumflexAccent', // ^
- LowLine: 'LowLine', // _
- LeftCurlyBracket: 'LeftCurlyBracket', // {
- VerticalLine: 'VerticalLine', // |
- RightCurlyBracket: 'RightCurlyBracket', // }
- Tilde: 'Tilde', // ~
-
- Identifier: 'Identifier',
- DecimalNumber: 'DecimalNumber'
- };
-
-/***/ }),
-/* 14 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- var Node = __webpack_require__(1);
- var NodeType = __webpack_require__(15);
- var TokenType = __webpack_require__(13);
-
- /**
- * @type {Array}
- */
- var tokens = void 0;
-
- /**
- * @type {Number}
- */
- var tokensLength = void 0;
-
- /**
- * @type {Number}
- */
- var pos = void 0;
-
- var contexts = {
- 'atkeyword': function atkeyword() {
- return checkAtkeyword(pos) && getAtkeyword();
- },
- 'atrule': function atrule() {
- return checkAtrule(pos) && getAtrule();
- },
- 'attributeSelector': function attributeSelector() {
- return checkAttributeSelector(pos) && getAttributeSelector();
- },
- 'block': function block() {
- return checkBlock(pos) && getBlock();
- },
- 'brackets': function brackets() {
- return checkBrackets(pos) && getBrackets();
- },
- 'class': function _class() {
- return checkClass(pos) && getClass();
- },
- 'combinator': function combinator() {
- return checkCombinator(pos) && getCombinator();
- },
- 'commentML': function commentML() {
- return checkCommentML(pos) && getCommentML();
- },
- 'declaration': function declaration() {
- return checkDeclaration(pos) && getDeclaration();
- },
- 'declDelim': function declDelim() {
- return checkDeclDelim(pos) && getDeclDelim();
- },
- 'delim': function delim() {
- return checkDelim(pos) && getDelim();
- },
- 'dimension': function dimension() {
- return checkDimension(pos) && getDimension();
- },
- 'expression': function expression() {
- return checkExpression(pos) && getExpression();
- },
- 'function': function _function() {
- return checkFunction(pos) && getFunction();
- },
- 'ident': function ident() {
- return checkIdent(pos) && getIdent();
- },
- 'important': function important() {
- return checkImportant(pos) && getImportant();
- },
- 'namespace': function namespace() {
- return checkNamespace(pos) && getNamespace();
- },
- 'number': function number() {
- return checkNumber(pos) && getNumber();
- },
- 'operator': function operator() {
- return checkOperator(pos) && getOperator();
- },
- 'parentheses': function parentheses() {
- return checkParentheses(pos) && getParentheses();
- },
- 'percentage': function percentage() {
- return checkPercentage(pos) && getPercentage();
- },
- 'progid': function progid() {
- return checkProgid(pos) && getProgid();
- },
- 'property': function property() {
- return checkProperty(pos) && getProperty();
- },
- 'propertyDelim': function propertyDelim() {
- return checkPropertyDelim(pos) && getPropertyDelim();
- },
- 'pseudoc': function pseudoc() {
- return checkPseudoc(pos) && getPseudoc();
- },
- 'pseudoe': function pseudoe() {
- return checkPseudoe(pos) && getPseudoe();
- },
- 'ruleset': function ruleset() {
- return checkRuleset(pos) && getRuleset();
- },
- 's': function s() {
- return checkS(pos) && getS();
- },
- 'selector': function selector() {
- return checkSelector(pos) && getSelector();
- },
- 'shash': function shash() {
- return checkShash(pos) && getShash();
- },
- 'string': function string() {
- return checkString(pos) && getString();
- },
- 'stylesheet': function stylesheet() {
- return checkStylesheet(pos) && getStylesheet();
- },
- 'unary': function unary() {
- return checkUnary(pos) && getUnary();
- },
- 'unicodeRange': function unicodeRange() {
- return checkUnicodeRange(pos) && getUnicodeRange();
- },
- 'universalSelector': function universalSelector() {
- return checkUniversalSelector(pos) && getUniversalSelector();
- },
- 'urange': function urange() {
- return checkUrange(pos) && getUrange();
- },
- 'uri': function uri() {
- return checkUri(pos) && getUri();
- },
- 'value': function value() {
- return checkValue(pos) && getValue();
- },
- 'vhash': function vhash() {
- return checkVhash(pos) && getVhash();
- }
- };
-
- /**
- * Stop parsing and display error
- * @param {Number=} i Token's index number
- */
- function throwError(i) {
- var ln = tokens[i].ln;
-
- throw { line: ln, syntax: 'css' };
- }
-
- /**
- * @param {Object} exclude
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkExcluding(exclude, i) {
- var start = i;
-
- while (i < tokensLength) {
- if (exclude[tokens[i++].type]) break;
- }
-
- return i - start - 2;
- }
-
- /**
- * @param {Number} start
- * @param {Number} finish
- * @return {String}
- */
- function joinValues(start, finish) {
- var s = '';
-
- for (var i = start; i < finish + 1; i++) {
- s += tokens[i].value;
- }
-
- return s;
- }
-
- /**
- * @param {Number} start
- * @param {Number} num
- * @return {String}
- */
- function joinValues2(start, num) {
- if (start + num - 1 >= tokensLength) return;
-
- var s = '';
-
- for (var i = 0; i < num; i++) {
- s += tokens[start + i].value;
- }
-
- return s;
- }
-
- function getLastPosition(content, line, column, colOffset) {
- return typeof content === 'string' ? getLastPositionForString(content, line, column, colOffset) : getLastPositionForArray(content, line, column, colOffset);
- }
-
- function getLastPositionForString(content, line, column, colOffset) {
- var position = [];
-
- if (!content) {
- position = [line, column];
- if (colOffset) position[1] += colOffset - 1;
- return position;
- }
-
- var lastLinebreak = content.lastIndexOf('\n');
- var endsWithLinebreak = lastLinebreak === content.length - 1;
- var splitContent = content.split('\n');
- var linebreaksCount = splitContent.length - 1;
- var prevLinebreak = linebreaksCount === 0 || linebreaksCount === 1 ? -1 : content.length - splitContent[linebreaksCount - 1].length - 2;
-
- // Line:
- var offset = endsWithLinebreak ? linebreaksCount - 1 : linebreaksCount;
- position[0] = line + offset;
-
- // Column:
- if (endsWithLinebreak) {
- offset = prevLinebreak !== -1 ? content.length - prevLinebreak : content.length - 1;
- } else {
- offset = linebreaksCount !== 0 ? content.length - lastLinebreak - column - 1 : content.length - 1;
- }
- position[1] = column + offset;
-
- if (!colOffset) return position;
-
- if (endsWithLinebreak) {
- position[0]++;
- position[1] = colOffset;
- } else {
- position[1] += colOffset;
- }
-
- return position;
- }
-
- function getLastPositionForArray(content, line, column, colOffset) {
- var position = void 0;
-
- if (content.length === 0) {
- position = [line, column];
- } else {
- var c = content[content.length - 1];
- if (c.hasOwnProperty('end')) {
- position = [c.end.line, c.end.column];
- } else {
- position = getLastPosition(c.content, line, column);
- }
- }
-
- if (!colOffset) return position;
-
- if (tokens[pos - 1] && tokens[pos - 1].type !== 'Newline') {
- position[1] += colOffset;
- } else {
- position[0]++;
- position[1] = 1;
- }
-
- return position;
- }
-
- function newNode(type, content, line, column, end) {
- if (!end) end = getLastPosition(content, line, column);
- return new Node({
- type: type,
- content: content,
- start: {
- line: line,
- column: column
- },
- end: {
- line: end[0],
- column: end[1]
- },
- syntax: 'css'
- });
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkAny(i) {
- var l = void 0;
-
- if (l = checkBrackets(i)) tokens[i].any_child = 1;else if (l = checkParentheses(i)) tokens[i].any_child = 2;else if (l = checkString(i)) tokens[i].any_child = 3;else if (l = checkPercentage(i)) tokens[i].any_child = 4;else if (l = checkDimension(i)) tokens[i].any_child = 5;else if (l = checkUnicodeRange(i)) tokens[i].any_child = 13;else if (l = checkNumber(i)) tokens[i].any_child = 6;else if (l = checkUri(i)) tokens[i].any_child = 7;else if (l = checkExpression(i)) tokens[i].any_child = 8;else if (l = checkFunction(i)) tokens[i].any_child = 9;else if (l = checkIdent(i)) tokens[i].any_child = 10;else if (l = checkClass(i)) tokens[i].any_child = 11;else if (l = checkUnary(i)) tokens[i].any_child = 12;
-
- return l;
- }
-
- /**
- * @return {Node}
- */
- function getAny() {
- var childType = tokens[pos].any_child;
-
- if (childType === 1) return getBrackets();
- if (childType === 2) return getParentheses();
- if (childType === 3) return getString();
- if (childType === 4) return getPercentage();
- if (childType === 5) return getDimension();
- if (childType === 13) return getUnicodeRange();
- if (childType === 6) return getNumber();
- if (childType === 7) return getUri();
- if (childType === 8) return getExpression();
- if (childType === 9) return getFunction();
- if (childType === 10) return getIdent();
- if (childType === 11) return getClass();
- if (childType === 12) return getUnary();
- }
-
- /**
- * @return {Node}
- */
- function getArguments() {
- var type = NodeType.ArgumentsType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var body = void 0;
-
- // Skip `(`.
- pos++;
-
- while (pos < tokensLength && tokens[pos].type !== TokenType.RightParenthesis) {
- if (checkDeclaration(pos)) content.push(getDeclaration());else if (checkArgument(pos)) {
- body = getArgument();
- if (typeof body.content === 'string') content.push(body);else content = content.concat(body);
- } else if (checkClass(pos)) content.push(getClass());else throwError(pos);
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkArgument(i) {
- var l = void 0;
-
- if (l = checkVhash(i)) tokens[i].argument_child = 1;else if (l = checkCustomProperty(i)) tokens[i].argument_child = 2;else if (l = checkAny(i)) tokens[i].argument_child = 3;else if (l = checkSC(i)) tokens[i].argument_child = 4;else if (l = checkOperator(i)) tokens[i].argument_child = 5;
-
- return l;
- }
-
- /**
- * @return {Node}
- */
- function getArgument() {
- var childType = tokens[pos].argument_child;
-
- if (childType === 1) return getVhash();
- if (childType === 2) return getCustomProperty();
- if (childType === 3) return getAny();
- if (childType === 4) return getSC();
- if (childType === 5) return getOperator();
- }
-
- /**
- * Check if token is part of an @-word (e.g. `@import`, `@include`)
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkAtkeyword(i) {
- var l = void 0;
-
- // Check that token is `@`:
- if (i >= tokensLength || tokens[i++].type !== TokenType.CommercialAt) return 0;
-
- return (l = checkIdent(i)) ? l + 1 : 0;
- }
-
- /**
- * Get node with @-word
- * @return {Node}
- */
- function getAtkeyword() {
- var type = NodeType.AtkeywordType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `@`.
- pos++;
-
- var content = [getIdent()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a part of an @-rule
- * @param {Number} i Token's index number
- * @return {Number} Length of @-rule
- */
- function checkAtrule(i) {
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- // If token already has a record of being part of an @-rule,
- // return the @-rule's length:
- if (tokens[i].atrule_l !== undefined) return tokens[i].atrule_l;
-
- // If token is part of an @-rule, save the rule's type to token.
- // @keyframes:
- if (l = checkKeyframesRule(i)) tokens[i].atrule_type = 4;
- // @-rule with ruleset:
- else if (l = checkAtruler(i)) tokens[i].atrule_type = 1;
- // Block @-rule:
- else if (l = checkAtruleb(i)) tokens[i].atrule_type = 2;
- // Single-line @-rule:
- else if (l = checkAtrules(i)) tokens[i].atrule_type = 3;else return 0;
-
- // If token is part of an @-rule, save the rule's length to token:
- tokens[i].atrule_l = l;
-
- return l;
- }
-
- /**
- * Get node with @-rule
- * @return {Node}
- */
- function getAtrule() {
- var childType = tokens[pos].atrule_type;
-
- if (childType === 1) return getAtruler(); // @-rule with ruleset
- if (childType === 2) return getAtruleb(); // Block @-rule
- if (childType === 3) return getAtrules(); // Single-line @-rule
- if (childType === 4) return getKeyframesRule();
- }
-
- /**
- * Check if token is part of a block @-rule
- * @param {Number} i Token's index number
- * @return {Number} Length of the @-rule
- */
- function checkAtruleb(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (l = checkTsets(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a block @-rule
- * @return {Node}
- */
- function getAtruleb() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getTsets(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an @-rule with ruleset
- * @param {Number} i Token's index number
- * @return {Number} Length of the @-rule
- */
- function checkAtruler(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (l = checkTsets(i)) i += l;
-
- if (i < tokensLength && tokens[i].type === TokenType.LeftCurlyBracket) i++;else return 0;
-
- if (l = checkAtrulers(i)) i += l;
-
- if (i < tokensLength && tokens[i].type === TokenType.RightCurlyBracket) i++;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with an @-rule with ruleset
- * @return {Node}
- */
- function getAtruler() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getTsets(), getAtrulers());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkAtrulers(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkSC(i)) i += l;
-
- while (i < tokensLength) {
- if (l = checkSC(i)) tokens[i].atrulers_child = 1;else if (l = checkAtrule(i)) tokens[i].atrulers_child = 2;else if (l = checkRuleset(i)) tokens[i].atrulers_child = 3;else break;
- i += l;
- }
-
- if (i < tokensLength) tokens[i].atrulers_end = 1;
-
- if (l = checkSC(i)) i += l;
-
- return i - start;
- }
-
- /**
- * @return {Node}
- */
- function getAtrulers() {
- var type = NodeType.BlockType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `{`.
- pos++;
-
- content = content.concat(getSC());
-
- while (pos < tokensLength && !tokens[pos].atrulers_end) {
- var childType = tokens[pos].atrulers_child;
- if (childType === 1) content = content.concat(getSC());else if (childType === 2) content.push(getAtrule());else if (childType === 3) content.push(getRuleset());else break;
- }
-
- content = content.concat(getSC());
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `}`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkAtrules(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (l = checkTsets(i)) i += l;
-
- return i - start;
- }
-
- /**
- * @return {Node}
- */
- function getAtrules() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getTsets());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a block (e.g. `{...}`).
- * @param {Number} i Token's index number
- * @return {Number} Length of the block
- */
- function checkBlock(i) {
- return i < tokensLength && tokens[i].type === TokenType.LeftCurlyBracket ? tokens[i].right - i + 1 : 0;
- }
-
- /**
- * Get node with a block
- * @return {Node}
- */
- function getBlock() {
- var type = NodeType.BlockType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var end = tokens[pos].right;
- var content = [];
-
- // Skip `{`.
- pos++;
-
- while (pos < end) {
- if (checkBlockdecl(pos)) content = content.concat(getBlockdecl());else throwError(pos);
- }
-
- var end_ = getLastPosition(content, line, column, 1);
- pos = end + 1;
-
- return newNode(type, content, line, column, end_);
- }
-
- /**
- * Check if token is part of a declaration (property-value pair)
- * @param {Number} i Token's index number
- * @return {Number} Length of the declaration
- */
- function checkBlockdecl(i) {
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkBlockdecl1(i)) tokens[i].bd_type = 1;else if (l = checkBlockdecl2(i)) tokens[i].bd_type = 2;else if (l = checkBlockdecl3(i)) tokens[i].bd_type = 3;else if (l = checkBlockdecl4(i)) tokens[i].bd_type = 4;else return 0;
-
- return l;
- }
-
- /**
- * @return {Array}
- */
- function getBlockdecl() {
- var childType = tokens[pos].bd_type;
-
- if (childType === 1) return getBlockdecl1();
- if (childType === 2) return getBlockdecl2();
- if (childType === 3) return getBlockdecl3();
- if (childType === 4) return getBlockdecl4();
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkBlockdecl1(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkDeclaration(i)) tokens[i].bd_kind = 1;else if (l = checkAtrule(i)) tokens[i].bd_kind = 2;else return 0;
-
- i += l;
-
- if (l = checkSC(i)) i += l;
-
- if (i < tokensLength && (l = checkDeclDelim(i))) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Array}
- */
- function getBlockdecl1() {
- var sc = getSC();
- var content = void 0;
-
- switch (tokens[pos].bd_kind) {
- case 1:
- content = getDeclaration();
- break;
- case 2:
- content = getAtrule();
- break;
- }
-
- return sc.concat(content, getSC(), getDeclDelim(), getSC());
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkBlockdecl2(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkDeclaration(i)) tokens[i].bd_kind = 1;else if (l = checkAtrule(i)) tokens[i].bd_kind = 2;else return 0;
-
- i += l;
-
- if (l = checkSC(i)) i += l;
-
- return i - start;
- }
-
- /**
- * @return {Array}
- */
- function getBlockdecl2() {
- var sc = getSC();
- var content = void 0;
-
- switch (tokens[pos].bd_kind) {
- case 1:
- content = getDeclaration();
- break;
- case 2:
- content = getAtrule();
- break;
- }
-
- return sc.concat(content, getSC());
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkBlockdecl3(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkDeclDelim(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- return i - start;
- }
-
- /**
- * @return {Array}
- */
- function getBlockdecl3() {
- return [].concat(getSC(), getDeclDelim(), getSC());
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkBlockdecl4(i) {
- return checkSC(i);
- }
-
- /**
- * @return {Array}
- */
- function getBlockdecl4() {
- return getSC();
- }
-
- /**
- * Check if token is part of text inside square brackets, e.g. `[1]`
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkBrackets(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
-
- // Skip `[`.
- if (tokens[i].type === TokenType.LeftSquareBracket) i++;else return 0;
-
- if (i < tokens[start].right) {
- var l = checkTsets(i);
- if (l) i += l;else return 0;
- }
-
- // Skip `]`.
- i++;
-
- return i - start;
- }
-
- /**
- * Get node with text inside square brackets, e.g. `[1]`
- * @return {Node}
- */
- function getBrackets() {
- var type = NodeType.BracketsType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var right = token.right;
- var content = [];
-
- // Skip `[`.
- pos++;
-
- if (pos < right) {
- content = getTsets();
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `]`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a class selector (e.g. `.abc`)
- * @param {Number} i Token's index number
- * @return {Number} Length of the class selector
- */
- function checkClass(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].class_l) return tokens[i].class_l;
-
- // Skip `.`.
- if (tokens[i].type === TokenType.FullStop) i++;else return 0;
-
- if (l = checkIdent(i)) {
- tokens[start].class_l = l + 1;
- i += l;
- } else return 0;
-
- tokens[start].classEnd = i;
-
- return i - start;
- }
-
- /**
- * Get node with a class selector
- * @return {Node}
- */
- function getClass() {
- var type = NodeType.ClassType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `.`
- pos++;
-
- var content = [getIdent()];
-
- return newNode(type, content, line, column);
- }
-
- function checkCombinator(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
- if (l = checkCombinator1(i)) tokens[i].combinatorType = 1;else if (l = checkCombinator2(i)) tokens[i].combinatorType = 2;else if (l = checkCombinator3(i)) tokens[i].combinatorType = 3;else if (l = checkCombinator4(i)) tokens[i].combinatorType = 4;
-
- return l;
- }
-
- function getCombinator() {
- var type = tokens[pos].combinatorType;
- if (type === 1) return getCombinator1();
- if (type === 2) return getCombinator2();
- if (type === 3) return getCombinator3();
- if (type === 4) return getCombinator4();
- }
-
- /**
- * (1) `>>>`
- *
- * @param {Number} i
- * @return {Number}
- */
- function checkCombinator1(i) {
- if (i < tokensLength && tokens[i++].type === TokenType.GreaterThanSign && i < tokensLength && tokens[i++].type === TokenType.GreaterThanSign && i < tokensLength && tokens[i++].type === TokenType.GreaterThanSign) return 3;
-
- return 0;
- }
-
- /**
- * @return {Node}
- */
- function getCombinator1() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '>>>';
-
- // Skip combinator
- pos += 3;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `||`
- * (2) `>>`
- *
- * @param {Number} i
- * @return {Number}
- */
- function checkCombinator2(i) {
- if (i + 1 >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.VerticalLine && tokens[i + 1].type === TokenType.VerticalLine) return 2;
-
- if (tokens[i].type === TokenType.GreaterThanSign && tokens[i + 1].type === TokenType.GreaterThanSign) return 2;
-
- return 0;
- }
-
- /**
- * @return {Node}
- */
- function getCombinator2() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '' + token.value + tokens[pos + 1].value;
-
- // Skip combinator
- pos += 2;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `>`
- * (2) `+`
- * (3) `~`
- *
- * @param {Number} i
- * @return {Number}
- */
- function checkCombinator3(i) {
- var type = tokens[i].type;
- if (type === TokenType.PlusSign || type === TokenType.GreaterThanSign || type === TokenType.Tilde) return 1;else return 0;
- }
-
- /**
- * @return {Node}
- */
- function getCombinator3() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- // Skip combinator
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `/panda/`
- */
- function checkCombinator4(i) {
- var start = i;
-
- if (tokens[i].type === TokenType.Solidus) i++;else return 0;
-
- var l = void 0;
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (tokens[i].type === TokenType.Solidus) i++;else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Node}
- */
- function getCombinator4() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `/`.
- pos++;
-
- var ident = getIdent();
-
- // Skip `/`.
- pos++;
-
- var content = '/' + ident.content + '/';
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a multiline comment.
- * @param {Number} i Token's index number
- * @return {Number} `1` if token is a multiline comment, otherwise `0`
- */
- function checkCommentML(i) {
- return i < tokensLength && tokens[i].type === TokenType.CommentML ? 1 : 0;
- }
-
- /**
- * Get node with a multiline comment
- * @return {Node}
- */
- function getCommentML() {
- var type = NodeType.CommentMLType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = tokens[pos].value.substring(2);
- var l = content.length;
-
- if (content.charAt(l - 2) === '*' && content.charAt(l - 1) === '/') content = content.substring(0, l - 2);
-
- var end = getLastPosition(content, line, column, 2);
- if (end[0] === line) end[1] += 2;
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a declaration (property-value pair)
- * @param {Number} i Token's index number
- * @return {Number} Length of the declaration
- */
- function checkDeclaration(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkProperty(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkPropertyDelim(i)) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkValue(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a declaration
- * @return {Node}
- */
- function getDeclaration() {
- var type = NodeType.DeclarationType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getProperty(), getSC(), getPropertyDelim(), getSC(), getValue());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a semicolon
- * @param {Number} i Token's index number
- * @return {Number} `1` if token is a semicolon, otherwise `0`
- */
- function checkDeclDelim(i) {
- return i < tokensLength && tokens[i].type === TokenType.Semicolon ? 1 : 0;
- }
-
- /**
- * Get node with a semicolon
- * @return {Node}
- */
- function getDeclDelim() {
- var type = NodeType.DeclDelimType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = ';';
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a comma
- * @param {Number} i Token's index number
- * @return {Number} `1` if token is a comma, otherwise `0`
- */
- function checkDelim(i) {
- return i < tokensLength && tokens[i].type === TokenType.Comma ? 1 : 0;
- }
-
- /**
- * Get node with a comma
- * @return {Node}
- */
- function getDelim() {
- var type = NodeType.DelimType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = ',';
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a number with dimension unit (e.g. `10px`)
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkDimension(i) {
- var ln = checkNumber(i);
- var li = void 0;
-
- if (i >= tokensLength || !ln || i + ln >= tokensLength) return 0;
-
- return (li = checkUnit(i + ln)) ? ln + li : 0;
- }
-
- /**
- * Get node of a number with dimension unit
- * @return {Node}
- */
- function getDimension() {
- var type = NodeType.DimensionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getNumber(), getUnit()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkExpression(i) {
- var start = i;
-
- if (i >= tokensLength || tokens[i++].value !== 'expression' || i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) {
- return 0;
- }
-
- return tokens[i].right - start + 1;
- }
-
- /**
- * @return {Node}
- */
- function getExpression() {
- var type = NodeType.ExpressionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- pos++;
-
- var content = joinValues(pos + 1, tokens[pos].right - 1);
- var end = getLastPosition(content, line, column, 1);
-
- if (end[0] === line) end[1] += 11;
- pos = tokens[pos].right + 1;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkFunction(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return i < tokensLength && tokens[i].type === TokenType.LeftParenthesis ? tokens[i].right - start + 1 : 0;
- }
-
- /**
- * @return {Node}
- */
- function getFunction() {
- var type = NodeType.FunctionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getIdent(), getArguments());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an identifierю
- * Grammar from CSS spec:
- * h [0-9a-f]
- * nonascii [\240-\377]
- * unicode \\{h}{1,6}(\r\n|[ \t\r\n\f])?
- * escape {unicode}|\\[^\r\n\f0-9a-f]
- * nmstart [_a-z]|{nonascii}|{escape}
- * nmchar [_a-z0-9-]|{nonascii}|{escape}
- * ident -?{nmstart}{nmchar}*
- *
- * @param {number} i Token's index number
- * @return {number} Length of the identifier
- */
- function checkIdent(i) {
- var start = i;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.HyphenMinus) i++;
-
- if (tokens[i].type === TokenType.LowLine || tokens[i].type === TokenType.Identifier) i++;else return 0;
-
- for (; i < tokensLength; i++) {
- if (tokens[i].type !== TokenType.HyphenMinus && tokens[i].type !== TokenType.LowLine && tokens[i].type !== TokenType.Identifier && tokens[i].type !== TokenType.DecimalNumber) break;
- }
-
- tokens[start].ident_last = i - 1;
-
- return i - start;
- }
-
- /**
- * Get node with an identifier
- * @return {Node}
- */
- function getIdent() {
- var type = NodeType.IdentType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, tokens[pos].ident_last);
-
- pos = tokens[pos].ident_last + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of `!important` word
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkImportant(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength || tokens[i++].type !== TokenType.ExclamationMark) return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].value === 'important') {
- tokens[start].importantEnd = i;
- return i - start + 1;
- } else {
- return 0;
- }
- }
-
- /**
- * Get node with `!important` word
- * @return {Node}
- */
- function getImportant() {
- var type = NodeType.ImportantType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, token.importantEnd);
-
- pos = token.importantEnd + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check a single keyframe block - `5% {}`
- * @param {Number} i
- * @returns {Number}
- */
- function checkKeyframesBlock(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkKeyframesSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get a single keyframe block - `5% {}`
- * @returns {Node}
- */
- function getKeyframesBlock() {
- var type = NodeType.RulesetType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getKeyframesSelectorsGroup(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check all keyframe blocks - `5% {} 100% {}`
- * @param {Number} i
- * @returns {Number}
- */
- function checkKeyframesBlocks(i) {
- var start = i;
- var l = void 0;
-
- if (i < tokensLength && tokens[i].type === TokenType.LeftCurlyBracket) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkKeyframesBlock(i)) i += l;else return 0;
-
- while (tokens[i].type !== TokenType.RightCurlyBracket) {
- if (l = checkSC(i)) i += l;else if (l = checkKeyframesBlock(i)) i += l;else break;
- }
-
- if (i < tokensLength && tokens[i].type === TokenType.RightCurlyBracket) i++;else return 0;
-
- return i - start;
- }
-
- /**
- * Get all keyframe blocks - `5% {} 100% {}`
- * @returns {Node}
- */
- function getKeyframesBlocks() {
- var type = NodeType.BlockType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var keyframesBlocksEnd = token.right;
- var content = [];
-
- // Skip `{`.
- pos++;
-
- while (pos < keyframesBlocksEnd) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkKeyframesBlock(pos)) content.push(getKeyframesBlock());
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `}`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a @keyframes rule.
- * @param {Number} i Token's index number
- * @return {Number} Length of the @keyframes rule
- */
- function checkKeyframesRule(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- var atruleName = joinValues2(i - l, l);
- if (atruleName.toLowerCase().indexOf('keyframes') === -1) return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkKeyframesBlocks(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Node}
- */
- function getKeyframesRule() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getIdent(), getSC(), getKeyframesBlocks());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check a single keyframe selector - `5%`, `from` etc
- * @param {Number} i
- * @returns {Number}
- */
- function checkKeyframesSelector(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) {
- // Valid selectors are only `from` and `to`.
- var selector = joinValues2(i, l);
- if (selector !== 'from' && selector !== 'to') return 0;
-
- i += l;
- tokens[start].keyframesSelectorType = 1;
- } else if (l = checkPercentage(i)) {
- i += l;
- tokens[start].keyframesSelectorType = 2;
- } else {
- return 0;
- }
-
- return i - start;
- }
-
- /**
- * Get a single keyframe selector
- * @returns {Node}
- */
- function getKeyframesSelector() {
- var keyframesSelectorType = NodeType.KeyframesSelectorType;
- var selectorType = NodeType.SelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (token.keyframesSelectorType === 1) {
- content.push(getIdent());
- } else {
- content.push(getPercentage());
- }
-
- var keyframesSelector = newNode(keyframesSelectorType, content, line, column);
-
- return newNode(selectorType, [keyframesSelector], line, column);
- }
-
- /**
- * Check the keyframe's selector groups
- * @param {Number} i
- * @returns {Number}
- */
- function checkKeyframesSelectorsGroup(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkKeyframesSelector(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var spaceBefore = checkSC(i);
- var comma = checkDelim(i + spaceBefore);
- if (!comma) break;
-
- var spaceAfter = checkSC(i + spaceBefore + comma);
- if (l = checkKeyframesSelector(i + spaceBefore + comma + spaceAfter)) {
- i += spaceBefore + comma + spaceAfter + l;
- } else break;
- }
-
- tokens[start].selectorsGroupEnd = i;
-
- return i - start;
- }
-
- /**
- * Get the keyframe's selector groups
- * @returns {Array} An array of keyframe selectors
- */
- function getKeyframesSelectorsGroup() {
- var selectorsGroup = [];
- var selectorsGroupEnd = tokens[pos].selectorsGroupEnd;
-
- selectorsGroup.push(getKeyframesSelector());
-
- while (pos < selectorsGroupEnd) {
- selectorsGroup = selectorsGroup.concat(getSC(), getDelim(), getSC(), getKeyframesSelector());
- }
-
- return selectorsGroup;
- }
-
- /**
- * Check if token is a namespace sign (`|`)
- * @param {Number} i Token's index number
- * @return {Number} `1` if token is `|`, `0` if not
- */
- function checkNamespace(i) {
- return i < tokensLength && tokens[i].type === TokenType.VerticalLine ? 1 : 0;
- }
-
- /**
- * Get node with a namespace sign
- * @return {Node}
- */
- function getNamespace() {
- var type = NodeType.NamespaceType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '|';
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkNmName2(i) {
- if (tokens[i].type === TokenType.Identifier) return 1;else if (tokens[i].type !== TokenType.DecimalNumber) return 0;
-
- i++;
-
- return i < tokensLength && tokens[i].type === TokenType.Identifier ? 2 : 1;
- }
-
- /**
- * @return {String}
- */
- function getNmName2() {
- var s = tokens[pos].value;
-
- if (tokens[pos++].type === TokenType.DecimalNumber && pos < tokensLength && tokens[pos].type === TokenType.Identifier) s += tokens[pos++].value;
-
- return s;
- }
-
- /**
- * Check if token is part of a number
- * @param {Number} i Token's index number
- * @return {Number} Length of number
- */
- function checkNumber(i) {
- if (i >= tokensLength) return 0;
-
- if (tokens[i].number_l) return tokens[i].number_l;
-
- // `10`:
- if (i < tokensLength && tokens[i].type === TokenType.DecimalNumber && (!tokens[i + 1] || tokens[i + 1] && tokens[i + 1].type !== TokenType.FullStop)) {
- tokens[i].number_l = 1;
- return 1;
- }
-
- // `10.`:
- if (i < tokensLength && tokens[i].type === TokenType.DecimalNumber && tokens[i + 1] && tokens[i + 1].type === TokenType.FullStop && (!tokens[i + 2] || tokens[i + 2].type !== TokenType.DecimalNumber)) {
- tokens[i].number_l = 2;
- return 2;
- }
-
- // `.10`:
- if (i < tokensLength && tokens[i].type === TokenType.FullStop && tokens[i + 1].type === TokenType.DecimalNumber) {
- tokens[i].number_l = 2;
- return 2;
- }
-
- // `10.10`:
- if (i < tokensLength && tokens[i].type === TokenType.DecimalNumber && tokens[i + 1] && tokens[i + 1].type === TokenType.FullStop && tokens[i + 2] && tokens[i + 2].type === TokenType.DecimalNumber) {
- tokens[i].number_l = 3;
- return 3;
- }
-
- return 0;
- }
-
- /**
- * Get node with number
- * @return {Node}
- */
- function getNumber() {
- var type = NodeType.NumberType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var l = tokens[pos].number_l;
- var content = '';
-
- for (var j = 0; j < l; j++) {
- content += tokens[pos + j].value;
- }
-
- pos += l;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is an operator (`/`, `,`, `:`, `=`, `*`).
- * @param {Number} i Token's index number
- * @return {Number} `1` if token is an operator, otherwise `0`
- */
- function checkOperator(i) {
- if (i >= tokensLength) return 0;
-
- switch (tokens[i].type) {
- case TokenType.Solidus:
- case TokenType.Comma:
- case TokenType.Colon:
- case TokenType.EqualsSign:
- case TokenType.Asterisk:
- return 1;
- }
-
- return 0;
- }
-
- /**
- * Get node with an operator
- * @return {Node}
- */
- function getOperator() {
- var type = NodeType.OperatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of text inside parentheses, e.g. `(1)`
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkParentheses(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var right = tokens[i].right;
-
- // Skip `(`.
- if (tokens[i].type === TokenType.LeftParenthesis) i++;else return 0;
-
- if (i < right) {
- var l = checkTsets(i);
- if (l) i += l;else return 0;
- }
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- /**
- * Get node with text inside parentheses, e.g. `(1)`
- * @return {Node}
- */
- function getParentheses() {
- var type = NodeType.ParenthesesType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var right = token.right;
- var content = [];
-
- // Skip `(`.
- pos++;
-
- if (pos < right) {
- content = getTsets();
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a number with percent sign (e.g. `10%`)
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkPercentage(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkNumber(i)) i += l;else return 0;
-
- if (i >= tokensLength) return 0;
-
- // Skip `%`.
- if (tokens[i].type === TokenType.PercentSign) i++;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node of number with percent sign
- * @return {Node}
- */
- function getPercentage() {
- var type = NodeType.PercentageType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getNumber()];
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `%`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkProgid(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (joinValues2(i, 6) === 'progid:DXImageTransform.Microsoft.') i += 6;else return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].type === TokenType.LeftParenthesis) {
- tokens[start].progid_end = tokens[i].right;
- i = tokens[i].right + 1;
- } else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Node}
- */
- function getProgid() {
- var type = NodeType.ProgidType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var progid_end = token.progid_end;
- var content = joinValues(pos, progid_end);
-
- pos = progid_end + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a property
- * @param {Number} i Token's index number
- * @return {Number} Length of the property
- */
- function checkProperty(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkProperty1(i)) tokens[start].propertyType = 1;else if (l = checkProperty2(i)) tokens[start].propertyType = 2;
-
- return l;
- }
-
- /**
- * Get node with a property
- * @return {Node}
- */
- function getProperty() {
- var type = tokens[pos].propertyType;
-
- if (type === 1) return getProperty1();
- if (type === 2) return getProperty2();
- }
-
- /**
- * Check if token is part of a property
- * @param {Number} i Token's index number
- * @return {Number} Length of the property
- */
- function checkProperty1(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a property
- * @return {Node}
- */
- function getProperty1() {
- var type = NodeType.PropertyType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getIdent()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a custom property
- * @param {Number} i Token's index number
- * @return {Number} Length of the property
- */
- function checkProperty2(i) {
- return checkCustomProperty(i);
- }
-
- /**
- * Get node with a custom property
- * @return {Node}
- */
- function getProperty2() {
- return getCustomProperty();
- }
-
- /**
- * Check if token is part of a custom property
- * @param {Number} i Token's index number
- * @return {Number} Length of the property
- */
- function checkCustomProperty(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type !== TokenType.HyphenMinus || tokens[i + 1] && tokens[i + 1].type !== TokenType.HyphenMinus) return 0;
-
- // Skip `--`
- i += 2;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a custom property
- * @return {Node}
- */
- function getCustomProperty() {
- var type = NodeType.CustomPropertyType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `--`
- pos += 2;
-
- var content = [getIdent()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a colon
- * @param {Number} i Token's index number
- * @return {Number} `1` if token is a colon, otherwise `0`
- */
- function checkPropertyDelim(i) {
- return i < tokensLength && tokens[i].type === TokenType.Colon ? 1 : 0;
- }
-
- /**
- * Get node with a colon
- * @return {Node}
- */
- function getPropertyDelim() {
- var type = NodeType.PropertyDelimType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = ':';
-
- // Skip `:`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkPseudo(i) {
- return checkPseudoe(i) || checkPseudoc(i);
- }
-
- /**
- * @return {Node}
- */
- function getPseudo() {
- if (checkPseudoe(pos)) return getPseudoe();
- if (checkPseudoc(pos)) return getPseudoc();
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkPseudoe(i) {
- var l = void 0;
-
- // Check `::`
- if (i >= tokensLength || tokens[i].type !== TokenType.Colon || i >= tokensLength || tokens[i + 1].type !== TokenType.Colon) return 0;
-
- if (l = checkPseudoElement1(i)) tokens[i].pseudoElementType = 1;else if (l = checkPseudoElement2(i)) tokens[i].pseudoElementType = 2;else return 0;
-
- return l;
- }
-
- /**
- * @return {Node}
- */
- function getPseudoe() {
- var childType = tokens[pos].pseudoElementType;
- if (childType === 1) return getPseudoElement1();
- if (childType === 2) return getPseudoElement2();
- }
-
- /**
- * (1) `::slotted(selector)`
- * (2) `::slotted(selector, selector)`
- */
- function checkPseudoElement1(i) {
- var start = i;
- var l = void 0;
-
- // Skip `::`.
- i += 2;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- /**
- * (1) `::slotted(selector)`
- * (2) `::slotted(selector, selector)`
- */
- function getPseudoElement1() {
- var type = NodeType.PseudoeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `::`.
- pos += 2;
-
- content.push(getIdent());
-
- {
- var _type = NodeType.ArgumentsType;
- var _token = tokens[pos];
- var _line = _token.ln;
- var _column = _token.col;
-
- // Skip `(`.
- pos++;
-
- var selectorContent = [].concat(getSC(), getSelectorsGroup(), getSC());
-
- var end = getLastPosition(selectorContent, _line, _column, 1);
- var args = newNode(_type, selectorContent, _line, _column, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
- }
-
- return newNode(type, content, line, column);
- }
-
- function checkPseudoElement2(i) {
- var start = i;
- var l = void 0;
-
- // Skip `::`.
- i += 2;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Node}
- */
- function getPseudoElement2() {
- var type = NodeType.PseudoeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `::`.
- pos += 2;
-
- var content = [getIdent()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkPseudoc(i) {
- var l = void 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.Colon) return 0;
-
- if (l = checkPseudoClass1(i)) tokens[i].pseudoClassType = 1;else if (l = checkPseudoClass2(i)) tokens[i].pseudoClassType = 2;else if (l = checkPseudoClass3(i)) tokens[i].pseudoClassType = 3;else if (l = checkPseudoClass4(i)) tokens[i].pseudoClassType = 4;else if (l = checkPseudoClass5(i)) tokens[i].pseudoClassType = 5;else if (l = checkPseudoClass6(i)) tokens[i].pseudoClassType = 6;else return 0;
-
- return l;
- }
-
- /**
- * @return {Node}
- */
- function getPseudoc() {
- var childType = tokens[pos].pseudoClassType;
- if (childType === 1) return getPseudoClass1();
- if (childType === 2) return getPseudoClass2();
- if (childType === 3) return getPseudoClass3();
- if (childType === 4) return getPseudoClass4();
- if (childType === 5) return getPseudoClass5();
- if (childType === 6) return getPseudoClass6();
- }
-
- /**
- * (1) `:panda(selector)`
- * (2) `:panda(selector, selector)`
- */
- function checkPseudoClass1(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- /**
- * (-) `:not(panda)`
- */
- function getPseudoClass1() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content.push(getIdent());
-
- {
- var _type2 = NodeType.ArgumentsType;
- var _token2 = tokens[pos];
- var _line2 = _token2.ln;
- var _column2 = _token2.col;
-
- // Skip `(`.
- pos++;
-
- var selectorContent = [].concat(getSC(), getSelectorsGroup(), getSC());
-
- var end = getLastPosition(selectorContent, _line2, _column2, 1);
- var args = newNode(_type2, selectorContent, _line2, _column2, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `:nth-child(odd)`
- * (2) `:nth-child(even)`
- * (3) `:lang(de-DE)`
- */
- function checkPseudoClass2(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass2() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content.push(getIdent());
-
- // Skip `(`.
- pos++;
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
- var value = [].concat(getSC(), getIdent(), getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:nth-child(-3n + 2)`
- */
- function checkPseudoClass3(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkUnary(i)) i += l;
-
- if (i >= tokensLength) return 0;
- if (tokens[i].type === TokenType.DecimalNumber) i++;
-
- if (i >= tokensLength) return 0;
- if (tokens[i].value === 'n') i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.PlusSign || tokens[i].type === TokenType.HyphenMinus) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].type === TokenType.DecimalNumber) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass3() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content.push(getIdent());
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
- var value = [];
-
- // Skip `(`.
- pos++;
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
- if (checkNumber(pos)) value.push(getNumber());
-
- {
- var _l = tokens[pos].ln;
- var _c = tokens[pos].col;
- var _content = tokens[pos].value;
- var ident = newNode(NodeType.IdentType, _content, _l, _c);
- value.push(ident);
- pos++;
- }
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
-
- value = value.concat(getSC());
-
- if (checkNumber(pos)) value.push(getNumber());
-
- value = value.concat(getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:nth-child(-3n)`
- */
- function checkPseudoClass4(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (i >= tokensLength) return 0;
- if (tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkUnary(i)) i += l;
- if (tokens[i].type === TokenType.DecimalNumber) i++;
-
- if (tokens[i].value === 'n') i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass4() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content.push(getIdent());
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
- var value = [];
-
- // Skip `(`.
- pos++;
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
- if (checkNumber(pos)) value.push(getNumber());
- if (checkIdent(pos)) value.push(getIdent());
-
- value = value.concat(getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:nth-child(+8)`
- */
- function checkPseudoClass5(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (i >= tokensLength) return 0;
- if (tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkUnary(i)) i += l;
- if (tokens[i].type === TokenType.DecimalNumber) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass5() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content.push(getIdent());
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
- var value = [];
-
- // Skip `(`.
- pos++;
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
- if (checkNumber(pos)) value.push(getNumber());
-
- value = value.concat(getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:checked`
- */
- function checkPseudoClass6(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getPseudoClass6() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `:`.
- pos++;
-
- var content = [getIdent()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkRuleset(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Node}
- */
- function getRuleset() {
- var type = NodeType.RulesetType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getSelectorsGroup(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is marked as a space (if it's a space or a tab
- * or a line break).
- * @param {Number} i
- * @return {Number} Number of spaces in a row starting with the given token.
- */
- function checkS(i) {
- return i < tokensLength && tokens[i].ws ? tokens[i].ws_last - i + 1 : 0;
- }
-
- /**
- * Get node with spaces
- * @return {Node}
- */
- function getS() {
- var type = NodeType.SType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, tokens[pos].ws_last);
-
- pos = tokens[pos].ws_last + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a space or a comment.
- * @param {Number} i Token's index number
- * @return {Number} Number of similar (space or comment) tokens
- * in a row starting with the given token.
- */
- function checkSC(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
- var lsc = 0;
-
- while (i < tokensLength) {
- if (l = checkS(i)) tokens[i].sc_child = 1;else if (l = checkCommentML(i)) tokens[i].sc_child = 2;else break;
-
- i += l;
- lsc += l;
- }
-
- return lsc || 0;
- }
-
- /**
- * Get node with spaces and comments
- * @return {Array}
- */
- function getSC() {
- var sc = [];
-
- if (pos >= tokensLength) return sc;
-
- while (pos < tokensLength) {
- var childType = tokens[pos].sc_child;
-
- if (childType === 1) sc.push(getS());else if (childType === 2) sc.push(getCommentML());else break;
- }
-
- return sc;
- }
-
- /**
- * Check if token is part of a hexadecimal number (e.g. `#fff`) inside
- * a simple selector
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkShash(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.NumberSign) i++;else return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a hexadecimal number (e.g. `#fff`) inside a simple
- * selector
- * @return {Node}
- */
- function getShash() {
- var type = NodeType.ShashType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `#`.
- pos++;
-
- var content = [getIdent()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a string (text wrapped in quotes)
- * @param {Number} i Token's index number
- * @return {Number} `1` if token is part of a string, `0` if not
- */
- function checkString(i) {
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.StringSQ || tokens[i].type === TokenType.StringDQ) {
- return 1;
- }
-
- return 0;
- }
-
- /**
- * Get string's node
- * @return {Array} `['string', x]` where `x` is a string (including
- * quotes).
- */
- function getString() {
- var type = NodeType.StringType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Validate stylesheet: it should consist of any number (0 or more) of
- * rulesets (sets of rules with selectors), @-rules, whitespaces or
- * comments.
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkStylesheet(i) {
- var start = i;
- var l = void 0;
-
- while (i < tokensLength) {
- if (l = checkSC(i)) tokens[i].stylesheet_child = 1;else if (l = checkRuleset(i)) tokens[i].stylesheet_child = 2;else if (l = checkAtrule(i)) tokens[i].stylesheet_child = 3;else if (l = checkDeclDelim(i)) tokens[i].stylesheet_child = 4;else throwError(i);
-
- i += l;
- }
-
- return i - start;
- }
-
- /**
- * @return {Array} `['stylesheet', x]` where `x` is all stylesheet's
- * nodes.
- */
- function getStylesheet() {
- var type = NodeType.StylesheetType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- while (pos < tokensLength) {
- var childType = tokens[pos].stylesheet_child;
-
- if (childType === 1) content = content.concat(getSC());
- if (childType === 2) content.push(getRuleset());
- if (childType === 3) content.push(getAtrule());
- if (childType === 4) content.push(getDeclDelim());
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkTset(i) {
- var l = void 0;
-
- if (l = checkVhash(i)) tokens[i].tset_child = 1;else if (l = checkAny(i)) tokens[i].tset_child = 2;else if (l = checkSC(i)) tokens[i].tset_child = 3;else if (l = checkOperator(i)) tokens[i].tset_child = 4;
-
- return l;
- }
-
- /**
- * @return {Array}
- */
- function getTset() {
- var childType = tokens[pos].tset_child;
-
- if (childType === 1) return getVhash();
- if (childType === 2) return getAny();
- if (childType === 3) return getSC();
- if (childType === 4) return getOperator();
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkTsets(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- while (l = checkTset(i)) {
- i += l;
- }
-
- tokens[start].tsets_end = i;
- return i - start;
- }
-
- /**
- * @return {Array}
- */
- function getTsets() {
- var content = [];
- var t = void 0;
-
- if (pos >= tokensLength) return content;
-
- var end = tokens[pos].tsets_end;
- while (pos < end) {
- t = getTset();
- if (typeof t.content === 'string') content.push(t);else content = content.concat(t);
- }
-
- return content;
- }
-
- /**
- * Check if token is an unary (arithmetical) sign (`+` or `-`)
- * @param {Number} i Token's index number
- * @return {Number} `1` if token is an unary sign, `0` if not
- */
- function checkUnary(i) {
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.HyphenMinus || tokens[i].type === TokenType.PlusSign) {
- return 1;
- }
-
- return 0;
- }
-
- /**
- * Get node with an unary (arithmetical) sign (`+` or `-`)
- * @return {Array} `['unary', x]` where `x` is an unary sign
- * converted to string.
- */
- function getUnary() {
- var type = NodeType.OperatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a unicode range (single or multiple <urange> nodes)
- * @param {number} i Token's index
- * @return {number} Unicode range node's length
- */
- function checkUnicodeRange(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkUrange(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var spaceBefore = checkSC(i);
- var comma = checkDelim(i + spaceBefore);
- if (!comma) break;
-
- var spaceAfter = checkSC(i + spaceBefore + comma);
- if (l = checkUrange(i + spaceBefore + comma + spaceAfter)) {
- i += spaceBefore + comma + spaceAfter + l;
- } else break;
- }
-
- return i - start;
- }
-
- /**
- * Get a unicode range node
- * @return {Node}
- */
- function getUnicodeRange() {
- var type = NodeType.UnicodeRangeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- while (pos < tokensLength) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkDelim(pos)) content.push(getDelim());else if (checkUrange(pos)) content.push(getUrange());else break;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is unit
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkUnit(i) {
- var units = ['em', 'ex', 'ch', 'rem', 'vh', 'vw', 'vmin', 'vmax', 'px', 'mm', 'q', 'cm', 'in', 'pt', 'pc', 'deg', 'grad', 'rad', 'turn', 's', 'ms', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'];
-
- return units.indexOf(tokens[i].value) !== -1 ? 1 : 0;
- }
-
- /**
- * Get unit node of type ident
- * @return {Node} An ident node containing the unit value
- */
- function getUnit() {
- var type = NodeType.IdentType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a u-range (part of a unicode-range)
- * (1) `U+416`
- * (2) `U+400-4ff`
- * (3) `U+4??`
- * @param {number} i Token's index
- * @return {number} Urange node's length
- */
- function checkUrange(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- // Check for unicode prefix (u+ or U+)
- if (tokens[i].value === 'U' || tokens[i].value === 'u') i += 1;else return 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].value === '+') i += 1;else return 0;
-
- while (i < tokensLength) {
- if (l = checkIdent(i)) i += l;else if (l = checkNumber(i)) i += l;else if (l = checkUnary(i)) i += l;else if (l = _checkUnicodeWildcard(i)) i += l;else break;
- }
-
- tokens[start].urangeEnd = i - 1;
-
- return i - start;
- }
-
- /**
- * Get a u-range node (part of a unicode-range)
- * @return {Node}
- */
- function getUrange() {
- var startPos = pos;
- var type = NodeType.UrangeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content = joinValues(startPos, tokens[startPos].urangeEnd);
- pos = tokens[startPos].urangeEnd + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check for unicode wildcard characters `?`
- * @param {number} i Token's index
- * @return {number} Wildcard length
- */
- function _checkUnicodeWildcard(i) {
- var start = i;
-
- if (i >= tokensLength) return 0;
-
- while (i < tokensLength) {
- if (tokens[i].type === TokenType.QuestionMark) i += 1;else break;
- }
-
- return i - start;
- }
-
- /**
- * Check if token is part of URI (e.g. `url('/css/styles.css')`)
- * @param {Number} i Token's index number
- * @return {Number} Length of URI
- */
- function checkUri(i) {
- var start = i;
-
- if (i >= tokensLength || tokens[i].value !== 'url') return 0;
-
- // Skip `url`.
- i++;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- return tokens[i].right - start + 1;
- }
-
- /**
- * Get node with URI
- * @return {Array} `['uri', x]` where `x` is URI's nodes (without `url`
- * and braces, e.g. `['string', ''/css/styles.css'']`).
- */
- function getUri() {
- var startPos = pos;
- var uriExcluding = {};
- var uri = void 0;
- var l = void 0;
- var raw = void 0;
-
- var rawContent = void 0;
- var t = void 0;
-
- pos += 2;
-
- uriExcluding[TokenType.Space] = 1;
- uriExcluding[TokenType.Tab] = 1;
- uriExcluding[TokenType.Newline] = 1;
- uriExcluding[TokenType.LeftParenthesis] = 1;
- uriExcluding[TokenType.RightParenthesis] = 1;
-
- if (checkUri1(pos)) {
- uri = [].concat(getSC(), getString(), getSC());
- } else {
- uri = checkSC(pos) ? getSC() : [];
- l = checkExcluding(uriExcluding, pos);
- rawContent = joinValues(pos, pos + l);
- t = tokens[pos];
- raw = newNode(NodeType.RawType, rawContent, t.ln, t.col);
-
- uri.push(raw);
-
- pos += l + 1;
-
- if (checkSC(pos)) uri = uri.concat(getSC());
- }
-
- t = tokens[startPos];
- var line = t.ln;
- var column = t.col;
- var end = getLastPosition(uri, line, column, 1);
- pos++;
-
- return newNode(NodeType.UriType, uri, line, column, end);
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkUri1(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].type !== TokenType.StringDQ && tokens[i].type !== TokenType.StringSQ) return 0;
-
- i++;
-
- if (l = checkSC(i)) i += l;
-
- return i - start;
- }
-
- /**
- * Check if token is part of a value
- * @param {Number} i Token's index number
- * @return {Number} Length of the value
- */
- function checkValue(i) {
- var start = i;
- var l = void 0;
- var s = void 0;
- var _i = void 0;
-
- while (i < tokensLength) {
- s = checkSC(i);
- _i = i + s;
-
- if (l = _checkValue(_i)) i += l + s;else break;
- }
-
- tokens[start].value_end = i;
-
- return i - start;
- }
-
- /**
- * @return {Array}
- */
- function getValue() {
- var type = NodeType.ValueType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var end = tokens[pos].value_end;
- var content = [];
-
- while (pos < end) {
- if (tokens[pos].value_child) content.push(_getValue());else content = content.concat(getSC());
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function _checkValue(i) {
- var l = void 0;
-
- if (l = checkProgid(i)) tokens[i].value_child = 1;else if (l = checkVhash(i)) tokens[i].value_child = 2;else if (l = checkAny(i)) tokens[i].value_child = 3;else if (l = checkOperator(i)) tokens[i].value_child = 4;else if (l = checkImportant(i)) tokens[i].value_child = 5;
-
- return l;
- }
-
- /**
- * @return {Array}
- */
- function _getValue() {
- var childType = tokens[pos].value_child;
- if (childType === 1) return getProgid();
- if (childType === 2) return getVhash();
- if (childType === 3) return getAny();
- if (childType === 4) return getOperator();
- if (childType === 5) return getImportant();
- }
-
- /**
- * Check if token is part of a hexadecimal number (e.g. `#fff`) inside
- * some value
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkVhash(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- // Skip `#`.
- if (tokens[i].type === TokenType.NumberSign) i++;else return 0;
-
- if (l = checkNmName2(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a hexadecimal number (e.g. `#fff`) inside some value
- * @return {Array} `['vhash', x]` where `x` is a hexadecimal number
- * converted to string (without `#`, e.g. `'fff'`).
- */
- function getVhash() {
- var type = NodeType.VhashType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `#`.
- pos++;
-
- var content = getNmName2();
- var end = getLastPosition(content, line, column + 1);
- return newNode(type, content, line, column, end);
- }
-
- function checkSelectorsGroup(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
- var selectorCounter = 0;
- var delimCounter = 0;
-
- if (l = checkSelector(i)) {
- i += l;
- selectorCounter++;
- } else return 0;
-
- while (i < tokensLength) {
- var tempStart = i;
- var tempIndex = i;
- var tempLength = void 0;
-
- var spaceBefore = checkSC(tempIndex);
-
- if (tempLength = checkDelim(tempIndex + spaceBefore)) {
- tempIndex += spaceBefore + tempLength;
- delimCounter++;
-
- if (tempLength = checkSC(tempIndex)) tempIndex += tempLength;
- if (tempLength = checkSelector(tempIndex)) {
- tempIndex += tempLength;
- selectorCounter++;
- }
- } else break;
-
- i += tempIndex - tempStart;
- }
-
- tokens[start].selectorsGroupEnd = i;
- tokens[start].selectorsGroupSelectorCount = selectorCounter;
- tokens[start].selectorsGroupDelimCount = delimCounter;
-
- return i - start;
- }
-
- function getSelectorsGroup() {
- var selectorsGroup = [];
- var selectorCounter = 0;
- var delimCounter = 0;
-
- var selectorsGroupEnd = tokens[pos].selectorsGroupEnd;
- var selectorCount = tokens[pos].selectorsGroupSelectorCount;
- var delimCount = tokens[pos].selectorsGroupDelimCount;
-
- selectorsGroup.push(getSelector());
- selectorCounter++;
-
- while (pos < selectorsGroupEnd) {
- if (delimCounter < delimCount) {
- selectorsGroup = selectorsGroup.concat(getSC());
- selectorsGroup = selectorsGroup.concat(getDelim());
- delimCounter++;
-
- selectorsGroup = selectorsGroup.concat(getSC());
-
- if (selectorCounter < selectorCount) {
- selectorsGroup = selectorsGroup.concat(getSelector());
- selectorCounter++;
- }
- }
- }
-
- return selectorsGroup;
- }
-
- function checkSelector(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkCompoundSelector(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var spaceBefore = checkSC(i);
- var comma = checkCombinator(i + spaceBefore);
- if (!spaceBefore && !comma) break;
-
- var spaceAfter = checkSC(i + spaceBefore + comma);
- if (l = checkCompoundSelector(i + spaceBefore + comma + spaceAfter)) {
- i += spaceBefore + comma + spaceAfter + l;
- } else break;
- }
-
- tokens[start].selectorEnd = i;
- return i - start;
- }
-
- function getSelector() {
- var type = NodeType.SelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var selectorEnd = token.selectorEnd;
- var content = getCompoundSelector();
-
- while (pos < selectorEnd) {
- content = content.concat(getSC());
- if (checkCombinator(pos)) content.push(getCombinator());
- content = content.concat(getSC(), getCompoundSelector());
- }
-
- return newNode(type, content, line, column);
- }
-
- function checkCompoundSelector(i) {
- var l = void 0;
-
- if (l = checkCompoundSelector1(i)) {
- tokens[i].compoundSelectorType = 1;
- } else if (l = checkCompoundSelector2(i)) {
- tokens[i].compoundSelectorType = 2;
- }
-
- return l;
- }
-
- function getCompoundSelector() {
- var type = tokens[pos].compoundSelectorType;
- if (type === 1) return getCompoundSelector1();
- if (type === 2) return getCompoundSelector2();
- }
-
- function checkCompoundSelector1(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkUniversalSelector(i) || checkTypeSelector(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var _l2 = checkShash(i) || checkClass(i) || checkAttributeSelector(i) || checkPseudo(i);
- if (_l2) i += _l2;else break;
- }
-
- tokens[start].compoundSelectorEnd = i;
-
- return i - start;
- }
-
- function getCompoundSelector1() {
- var sequence = [];
- var compoundSelectorEnd = tokens[pos].compoundSelectorEnd;
-
- if (checkUniversalSelector(pos)) sequence.push(getUniversalSelector());else sequence.push(getTypeSelector());
-
- while (pos < compoundSelectorEnd) {
- if (checkShash(pos)) sequence.push(getShash());else if (checkClass(pos)) sequence.push(getClass());else if (checkAttributeSelector(pos)) sequence.push(getAttributeSelector());else if (checkPseudo(pos)) sequence.push(getPseudo());
- }
-
- return sequence;
- }
-
- function checkCompoundSelector2(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
-
- while (i < tokensLength) {
- var l = checkShash(i) || checkClass(i) || checkAttributeSelector(i) || checkPseudo(i);
-
- if (l) i += l;else break;
- }
-
- tokens[start].compoundSelectorEnd = i;
-
- return i - start;
- }
-
- function getCompoundSelector2() {
- var sequence = [];
- var compoundSelectorEnd = tokens[pos].compoundSelectorEnd;
-
- while (pos < compoundSelectorEnd) {
- if (checkShash(pos)) sequence.push(getShash());else if (checkClass(pos)) sequence.push(getClass());else if (checkAttributeSelector(pos)) sequence.push(getAttributeSelector());else if (checkPseudo(pos)) sequence.push(getPseudo());else break;
- }
-
- return sequence;
- }
-
- function checkUniversalSelector(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkNamePrefix(i)) i += l;
-
- if (tokens[i].type === TokenType.Asterisk) i++;else return 0;
-
- return i - start;
- }
-
- function getUniversalSelector() {
- var type = NodeType.UniversalSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var end = void 0;
-
- if (checkNamePrefix(pos)) {
- content.push(getNamePrefix());
- end = getLastPosition(content, line, column, 1);
- }
-
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- function checkTypeSelector(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkNamePrefix(i)) i += l;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getTypeSelector() {
- var type = NodeType.TypeSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (checkNamePrefix(pos)) content.push(getNamePrefix());
-
- content.push(getIdent());
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeSelector(i) {
- var l = void 0;
- if (l = checkAttributeSelector1(i)) tokens[i].attributeSelectorType = 1;else if (l = checkAttributeSelector2(i)) tokens[i].attributeSelectorType = 2;
-
- return l;
- }
-
- function getAttributeSelector() {
- var type = tokens[pos].attributeSelectorType;
- if (type === 1) return getAttributeSelector1();else return getAttributeSelector2();
- }
-
- /**
- * (1) `[panda=nani]`
- * (2) `[panda='nani']`
- * (3) `[panda='nani' i]`
- *
- */
- function checkAttributeSelector1(i) {
- var start = i;
-
- if (tokens[i].type === TokenType.LeftSquareBracket) i++;else return 0;
-
- var l = void 0;
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeName(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeMatch(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeValue(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeFlags(i)) {
- i += l;
- if (l = checkSC(i)) i += l;
- }
-
- if (tokens[i].type === TokenType.RightSquareBracket) i++;else return 0;
-
- return i - start;
- }
-
- function getAttributeSelector1() {
- var type = NodeType.AttributeSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `[`.
- pos++;
-
- content = content.concat(getSC(), getAttributeName(), getSC(), getAttributeMatch(), getSC(), getAttributeValue(), getSC());
-
- if (checkAttributeFlags(pos)) {
- content.push(getAttributeFlags());
- content = content.concat(getSC());
- }
-
- // Skip `]`.
- pos++;
-
- var end = getLastPosition(content, line, column, 1);
- return newNode(type, content, line, column, end);
- }
-
- /**
- * (1) `[panda]`
- */
- function checkAttributeSelector2(i) {
- var start = i;
-
- if (tokens[i].type === TokenType.LeftSquareBracket) i++;else return 0;
-
- var l = void 0;
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeName(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].type === TokenType.RightSquareBracket) i++;else return 0;
-
- return i - start;
- }
-
- function getAttributeSelector2() {
- var type = NodeType.AttributeSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `[`.
- pos++;
-
- content = content.concat(getSC(), getAttributeName(), getSC());
-
- // Skip `]`.
- pos++;
-
- var end = getLastPosition(content, line, column, 1);
- return newNode(type, content, line, column, end);
- }
-
- function checkAttributeName(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkNamePrefix(i)) i += l;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getAttributeName() {
- var type = NodeType.AttributeNameType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (checkNamePrefix(pos)) content.push(getNamePrefix());
- content.push(getIdent());
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeMatch(i) {
- var l = void 0;
- if (l = checkAttributeMatch1(i)) tokens[i].attributeMatchType = 1;else if (l = checkAttributeMatch2(i)) tokens[i].attributeMatchType = 2;
-
- return l;
- }
-
- function getAttributeMatch() {
- var type = tokens[pos].attributeMatchType;
- if (type === 1) return getAttributeMatch1();else return getAttributeMatch2();
- }
-
- function checkAttributeMatch1(i) {
- var start = i;
-
- var type = tokens[i].type;
- if (type === TokenType.Tilde || type === TokenType.VerticalLine || type === TokenType.CircumflexAccent || type === TokenType.DollarSign || type === TokenType.Asterisk) i++;else return 0;
-
- if (tokens[i].type === TokenType.EqualsSign) i++;else return 0;
-
- return i - start;
- }
-
- function getAttributeMatch1() {
- var type = NodeType.AttributeMatchType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = tokens[pos].value + tokens[pos + 1].value;
- pos += 2;
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeMatch2(i) {
- if (tokens[i].type === TokenType.EqualsSign) return 1;else return 0;
- }
-
- function getAttributeMatch2() {
- var type = NodeType.AttributeMatchType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '=';
-
- pos++;
- return newNode(type, content, line, column);
- }
-
- function checkAttributeValue(i) {
- return checkString(i) || checkIdent(i);
- }
-
- function getAttributeValue() {
- var type = NodeType.AttributeValueType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (checkString(pos)) content.push(getString());else content.push(getIdent());
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeFlags(i) {
- return checkIdent(i);
- }
-
- function getAttributeFlags() {
- var type = NodeType.AttributeFlagsType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getIdent()];
-
- return newNode(type, content, line, column);
- }
-
- function checkNamePrefix(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
- if (l = checkNamePrefix1(i)) tokens[i].namePrefixType = 1;else if (l = checkNamePrefix2(i)) tokens[i].namePrefixType = 2;
-
- return l;
- }
-
- function getNamePrefix() {
- var type = tokens[pos].namePrefixType;
- if (type === 1) return getNamePrefix1();else return getNamePrefix2();
- }
-
- /**
- * (1) `panda|`
- * (2) `panda<comment>|`
- */
- function checkNamePrefix1(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkNamespacePrefix(i)) i += l;else return 0;
-
- if (l = checkCommentML(i)) i += l;
-
- if (l = checkNamespaceSeparator(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getNamePrefix1() {
- var type = NodeType.NamePrefixType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content.push(getNamespacePrefix());
-
- if (checkCommentML(pos)) content.push(getCommentML());
-
- content.push(getNamespaceSeparator());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `|`
- */
- function checkNamePrefix2(i) {
- return checkNamespaceSeparator(i);
- }
-
- function getNamePrefix2() {
- var type = NodeType.NamePrefixType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getNamespaceSeparator()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `*`
- * (2) `panda`
- */
- function checkNamespacePrefix(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
-
- if (tokens[i].type === TokenType.Asterisk) return 1;else if (l = checkIdent(i)) return l;else return 0;
- }
-
- function getNamespacePrefix() {
- var type = NodeType.NamespacePrefixType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (token.type === TokenType.Asterisk) {
- var asteriskNode = newNode(NodeType.IdentType, '*', line, column);
- content.push(asteriskNode);
- pos++;
- } else if (checkIdent(pos)) content.push(getIdent());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `|`
- */
- function checkNamespaceSeparator(i) {
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type !== TokenType.VerticalLine) return 0;
-
- // Return false if `|=` - [attr|=value]
- if (tokens[i + 1] && tokens[i + 1].type === TokenType.EqualsSign) return 0;
-
- return 1;
- }
-
- function getNamespaceSeparator() {
- var type = NodeType.NamespaceSeparatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '|';
-
- pos++;
- return newNode(type, content, line, column);
- }
-
- module.exports = function (_tokens, context) {
- tokens = _tokens;
- tokensLength = tokens.length;
- pos = 0;
-
- return contexts[context]();
- };
-
-/***/ }),
-/* 15 */
-/***/ (function(module, exports) {
-
- 'use strict';
-
- module.exports = {
- ArgumentsType: 'arguments',
- AtkeywordType: 'atkeyword',
- AtruleType: 'atrule',
- AttributeSelectorType: 'attributeSelector',
- AttributeNameType: 'attributeName',
- AttributeFlagsType: 'attributeFlags',
- AttributeMatchType: 'attributeMatch',
- AttributeValueType: 'attributeValue',
- BlockType: 'block',
- BracketsType: 'brackets',
- ClassType: 'class',
- CombinatorType: 'combinator',
- CommentMLType: 'multilineComment',
- CommentSLType: 'singlelineComment',
- ConditionType: 'condition',
- ConditionalStatementType: 'conditionalStatement',
- CustomPropertyType: 'customProperty',
- DeclarationType: 'declaration',
- DeclDelimType: 'declarationDelimiter',
- DefaultType: 'default',
- DelimType: 'delimiter',
- DimensionType: 'dimension',
- EscapedStringType: 'escapedString',
- ExtendType: 'extend',
- ExpressionType: 'expression',
- FunctionType: 'function',
- FunctionsListType: 'functionsList',
- GlobalType: 'global',
- IdentType: 'ident',
- ImportantType: 'important',
- IncludeType: 'include',
- InterpolationType: 'interpolation',
- InterpolatedVariableType: 'interpolatedVariable',
- KeyframesSelectorType: 'keyframesSelector',
- LoopType: 'loop',
- MixinType: 'mixin',
- NamePrefixType: 'namePrefix',
- NamespacePrefixType: 'namespacePrefix',
- NamespaceSeparatorType: 'namespaceSeparator',
- NumberType: 'number',
- OperatorType: 'operator',
- OptionalType: 'optional',
- ParenthesesType: 'parentheses',
- ParentSelectorType: 'parentSelector',
- ParentSelectorExtensionType: 'parentSelectorExtension',
- PercentageType: 'percentage',
- PlaceholderType: 'placeholder',
- ProgidType: 'progid',
- PropertyType: 'property',
- PropertyDelimType: 'propertyDelimiter',
- PseudocType: 'pseudoClass',
- PseudoeType: 'pseudoElement',
- RawType: 'raw',
- RulesetType: 'ruleset',
- SType: 'space',
- SelectorType: 'selector',
- ShashType: 'id',
- StringType: 'string',
- StylesheetType: 'stylesheet',
- TypeSelectorType: 'typeSelector',
- UnicodeRangeType: 'unicodeRange',
- UniversalSelectorType: 'universalSelector',
- UriType: 'uri',
- UrangeType: 'urange',
- ValueType: 'value',
- VariableType: 'variable',
- VariablesListType: 'variablesList',
- VhashType: 'color'
- };
-
-/***/ }),
-/* 16 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- module.exports = function (css, tabSize) {
- var TokenType = __webpack_require__(13);
-
- var tokens = [];
- var urlMode = false;
- var blockMode = 0;
- var pos = 0;
- var tn = 0;
- var ln = 1;
- var col = 1;
- var cssLength = 0;
-
- var Punctuation = {
- ' ': TokenType.Space,
- '\n': TokenType.Newline,
- '\r': TokenType.Newline,
- '\t': TokenType.Tab,
- '!': TokenType.ExclamationMark,
- '"': TokenType.QuotationMark,
- '#': TokenType.NumberSign,
- '$': TokenType.DollarSign,
- '%': TokenType.PercentSign,
- '&': TokenType.Ampersand,
- '\'': TokenType.Apostrophe,
- '(': TokenType.LeftParenthesis,
- ')': TokenType.RightParenthesis,
- '*': TokenType.Asterisk,
- '+': TokenType.PlusSign,
- ',': TokenType.Comma,
- '-': TokenType.HyphenMinus,
- '.': TokenType.FullStop,
- '/': TokenType.Solidus,
- ':': TokenType.Colon,
- ';': TokenType.Semicolon,
- '<': TokenType.LessThanSign,
- '=': TokenType.EqualsSign,
- '>': TokenType.GreaterThanSign,
- '?': TokenType.QuestionMark,
- '@': TokenType.CommercialAt,
- '[': TokenType.LeftSquareBracket,
- ']': TokenType.RightSquareBracket,
- '^': TokenType.CircumflexAccent,
- '_': TokenType.LowLine,
- '{': TokenType.LeftCurlyBracket,
- '|': TokenType.VerticalLine,
- '}': TokenType.RightCurlyBracket,
- '~': TokenType.Tilde
- };
-
- /**
- * Add a token to the token list
- * @param {string} type
- * @param {string} value
- */
- function pushToken(type, value, column) {
- tokens.push({
- tn: tn++,
- ln: ln,
- col: column,
- type: type,
- value: value
- });
- }
-
- /**
- * Check if a character is a decimal digit
- * @param {string} c Character
- * @returns {boolean}
- */
- function isDecimalDigit(c) {
- return '0123456789'.indexOf(c) >= 0;
- }
-
- /**
- * Parse spaces
- * @param {string} css Unparsed part of CSS string
- */
- function parseSpaces(css) {
- var start = pos;
-
- // Read the string until we meet a non-space character:
- for (; pos < cssLength; pos++) {
- if (css.charAt(pos) !== ' ') break;
- }
-
- // Add a substring containing only spaces to tokens:
- pushToken(TokenType.Space, css.substring(start, pos--), col);
- col += pos - start;
- }
-
- /**
- * Parse a string within quotes
- * @param {string} css Unparsed part of CSS string
- * @param {string} q Quote (either `'` or `"`)
- */
- function parseString(css, q) {
- var start = pos;
-
- // Read the string until we meet a matching quote:
- for (pos++; pos < cssLength; pos++) {
- // Skip escaped quotes:
- if (css.charAt(pos) === '\\') pos++;else if (css.charAt(pos) === q) break;
- }
-
- // Add the string (including quotes) to tokens:
- pushToken(q === '"' ? TokenType.StringDQ : TokenType.StringSQ, css.substring(start, pos + 1), col);
- col += pos - start;
- }
-
- /**
- * Parse numbers
- * @param {string} css Unparsed part of CSS string
- */
- function parseDecimalNumber(css) {
- var start = pos;
-
- // Read the string until we meet a character that's not a digit:
- for (; pos < cssLength; pos++) {
- if (!isDecimalDigit(css.charAt(pos))) break;
- }
-
- // Add the number to tokens:
- pushToken(TokenType.DecimalNumber, css.substring(start, pos--), col);
- col += pos - start;
- }
-
- /**
- * Parse identifier
- * @param {string} css Unparsed part of CSS string
- */
- function parseIdentifier(css) {
- var start = pos;
-
- // Skip all opening slashes:
- while (css.charAt(pos) === '/') {
- pos++;
- } // Read the string until we meet a punctuation mark:
- for (; pos < cssLength; pos++) {
- // Skip all '\':
- if (css.charAt(pos) === '\\') pos++;else if (Punctuation[css.charAt(pos)]) break;
- }
-
- var ident = css.substring(start, pos--);
-
- // Enter url mode if parsed substring is `url`:
- urlMode = urlMode || ident === 'url';
-
- // Add identifier to tokens:
- pushToken(TokenType.Identifier, ident, col);
- col += pos - start;
- }
-
- /**
- * Parse a multiline comment
- * @param {string} css Unparsed part of CSS string
- */
- function parseMLComment(css) {
- var start = pos;
-
- // Read the string until we meet `*/`.
- // Since we already know first 2 characters (`/*`), start reading
- // from `pos + 2`:
- for (pos = pos + 2; pos < cssLength; pos++) {
- if (css.charAt(pos) === '*' && css.charAt(pos + 1) === '/') {
- pos++;
- break;
- }
- }
-
- // Add full comment (including `/*` and `*/`) to the list of tokens:
- var comment = css.substring(start, pos + 1);
- pushToken(TokenType.CommentML, comment, col);
-
- var newlines = comment.split('\n');
- if (newlines.length > 1) {
- ln += newlines.length - 1;
- col = newlines[newlines.length - 1].length;
- } else {
- col += pos - start;
- }
- }
-
- function parseSLComment(css) {
- var start = pos;
-
- // Read the string until we meet line break.
- // Since we already know first 2 characters (`//`), start reading
- // from `pos + 2`:
- for (pos += 2; pos < cssLength; pos++) {
- if (css.charAt(pos) === '\n' || css.charAt(pos) === '\r') {
- break;
- }
- }
-
- // Add comment (including `//` and line break) to the list of tokens:
- pushToken(TokenType.CommentSL, css.substring(start, pos--), col);
- col += pos - start;
- }
-
- /**
- * Convert a CSS string to a list of tokens
- * @param {string} css CSS string
- * @returns {Array} List of tokens
- * @private
- */
- function getTokens(css) {
- var c; // Current character
- var cn; // Next character
-
- cssLength = css.length;
-
- // Parse string, character by character:
- for (pos = 0; pos < cssLength; col++, pos++) {
- c = css.charAt(pos);
- cn = css.charAt(pos + 1);
-
- // If we meet `/*`, it's a start of a multiline comment.
- // Parse following characters as a multiline comment:
- if (c === '/' && cn === '*') {
- parseMLComment(css);
- }
-
- // If we meet `//` and it is not a part of url:
- else if (!urlMode && c === '/' && cn === '/') {
- // If we're currently inside a block, treat `//` as a start
- // of identifier. Else treat `//` as a start of a single-line
- // comment:
- if (blockMode > 0) parseIdentifier(css);else parseSLComment(css);
- }
-
- // If current character is a double or single quote, it's a start
- // of a string:
- else if (c === '"' || c === "'") {
- parseString(css, c);
- }
-
- // If current character is a space:
- else if (c === ' ') {
- parseSpaces(css);
- }
-
- // If current character is a punctuation mark:
- else if (Punctuation[c]) {
- // Add it to the list of tokens:
- pushToken(Punctuation[c], c, col);
- if (c === '\n' || c === '\r') {
- ln++;
- col = 0;
- } // Go to next line
- else if (c === ')') urlMode = false; // Exit url mode
- else if (c === '{') blockMode++; // Enter a block
- else if (c === '}') blockMode--; // Exit a block
- else if (c === '\t' && tabSize > 1) col += tabSize - 1;
- }
-
- // If current character is a decimal digit:
- else if (isDecimalDigit(c)) {
- parseDecimalNumber(css);
- }
-
- // If current character is anything else:
- else {
- parseIdentifier(css);
- }
- }
-
- return tokens;
- }
-
- return getTokens(css);
- };
-
-/***/ }),
-/* 17 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- exports.__esModule = true;
- exports.default = {
- mark: __webpack_require__(18),
- parse: __webpack_require__(19),
- stringify: __webpack_require__(4),
- tokenizer: __webpack_require__(20)
- };
- module.exports = exports['default'];
-
-/***/ }),
-/* 18 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- var TokenType = __webpack_require__(13);
-
- module.exports = function () {
- /**
- * Mark whitespaces and comments
- */
- function markSC(tokens) {
- var tokensLength = tokens.length;
- var ws = -1; // Flag for whitespaces
- var sc = -1; // Flag for whitespaces and comments
- var t = void 0; // Current token
-
- // For every token in the token list, mark spaces and line breaks
- // as spaces (set both `ws` and `sc` flags). Mark multiline comments
- // with `sc` flag.
- // If there are several spaces or tabs or line breaks or multiline
- // comments in a row, group them: take the last one's index number
- // and save it to the first token in the group as a reference:
- // e.g., `ws_last = 7` for a group of whitespaces or `sc_last = 9`
- // for a group of whitespaces and comments.
- for (var i = 0; i < tokensLength; i++) {
- t = tokens[i];
- switch (t.type) {
- case TokenType.Space:
- case TokenType.Tab:
- case TokenType.Newline:
- t.ws = true;
- t.sc = true;
-
- if (ws === -1) ws = i;
- if (sc === -1) sc = i;
-
- break;
- case TokenType.CommentML:
- case TokenType.CommentSL:
- if (ws !== -1) {
- tokens[ws].ws_last = i - 1;
- ws = -1;
- }
-
- t.sc = true;
-
- break;
- default:
- if (ws !== -1) {
- tokens[ws].ws_last = i - 1;
- ws = -1;
- }
-
- if (sc !== -1) {
- tokens[sc].sc_last = i - 1;
- sc = -1;
- }
- }
- }
-
- if (ws !== -1) tokens[ws].ws_last = i - 1;
- if (sc !== -1) tokens[sc].sc_last = i - 1;
- }
-
- /**
- * Pair brackets
- */
- function markBrackets(tokens) {
- var tokensLength = tokens.length;
- var ps = []; // Parentheses
- var sbs = []; // Square brackets
- var cbs = []; // Curly brackets
- var t = void 0; // Current token
-
- // For every token in the token list, if we meet an opening (left)
- // bracket, push its index number to a corresponding array.
- // If we then meet a closing (right) bracket, look at the corresponding
- // array. If there are any elements (records about previously met
- // left brackets), take a token of the last left bracket (take
- // the last index number from the array and find a token with
- // this index number) and save right bracket's index as a reference:
- for (var i = 0; i < tokensLength; i++) {
- t = tokens[i];
- switch (t.type) {
- case TokenType.LeftParenthesis:
- ps.push(i);
- break;
- case TokenType.RightParenthesis:
- if (ps.length) {
- t.left = ps.pop();
- tokens[t.left].right = i;
- }
- break;
- case TokenType.LeftSquareBracket:
- sbs.push(i);
- break;
- case TokenType.RightSquareBracket:
- if (sbs.length) {
- t.left = sbs.pop();
- tokens[t.left].right = i;
- }
- break;
- case TokenType.LeftCurlyBracket:
- cbs.push(i);
- break;
- case TokenType.RightCurlyBracket:
- if (cbs.length) {
- t.left = cbs.pop();
- tokens[t.left].right = i;
- }
- break;
- }
- }
- }
-
- return function (tokens) {
- markBrackets(tokens);
- markSC(tokens);
- };
- }();
-
-/***/ }),
-/* 19 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- var Node = __webpack_require__(1);
- var NodeType = __webpack_require__(15);
- var TokenType = __webpack_require__(13);
-
- var tokens = void 0;
- var tokensLength = void 0;
- var pos = void 0;
-
- var contexts = {
- 'arguments': function _arguments() {
- return checkArguments(pos) && getArguments();
- },
- 'atkeyword': function atkeyword() {
- return checkAtkeyword(pos) && getAtkeyword();
- },
- 'atrule': function atrule() {
- return checkAtrule(pos) && getAtrule();
- },
- 'attributeSelector': function attributeSelector() {
- return checkAttributeSelector(pos) && getAttributeSelector();
- },
- 'block': function block() {
- return checkBlock(pos) && getBlock();
- },
- 'brackets': function brackets() {
- return checkBrackets(pos) && getBrackets();
- },
- 'class': function _class() {
- return checkClass(pos) && getClass();
- },
- 'combinator': function combinator() {
- return checkCombinator(pos) && getCombinator();
- },
- 'commentML': function commentML() {
- return checkCommentML(pos) && getCommentML();
- },
- 'commentSL': function commentSL() {
- return checkCommentSL(pos) && getCommentSL();
- },
- 'condition': function condition() {
- return checkCondition(pos) && getCondition();
- },
- 'declaration': function declaration() {
- return checkDeclaration(pos) && getDeclaration();
- },
- 'declDelim': function declDelim() {
- return checkDeclDelim(pos) && getDeclDelim();
- },
- 'delim': function delim() {
- return checkDelim(pos) && getDelim();
- },
- 'dimension': function dimension() {
- return checkDimension(pos) && getDimension();
- },
- 'escapedString': function escapedString() {
- return checkEscapedString(pos) && getEscapedString();
- },
- 'expression': function expression() {
- return checkExpression(pos) && getExpression();
- },
- 'extend': function extend() {
- return checkExtend(pos) && getExtend();
- },
- 'function': function _function() {
- return checkFunction(pos) && getFunction();
- },
- 'ident': function ident() {
- return checkIdent(pos) && getIdent();
- },
- 'important': function important() {
- return checkImportant(pos) && getImportant();
- },
- 'include': function include() {
- return checkInclude(pos) && getInclude();
- },
- 'interpolatedVariable': function interpolatedVariable() {
- return checkInterpolatedVariable(pos) && getInterpolatedVariable();
- },
- 'mixin': function mixin() {
- return checkMixin(pos) && getMixin();
- },
- 'namespace': function namespace() {
- return checkNamespace(pos) && getNamespace();
- },
- 'number': function number() {
- return checkNumber(pos) && getNumber();
- },
- 'operator': function operator() {
- return checkOperator(pos) && getOperator();
- },
- 'parentheses': function parentheses() {
- return checkParentheses(pos) && getParentheses();
- },
- 'parentselector': function parentselector() {
- return checkParentSelector(pos) && getParentSelector();
- },
- 'percentage': function percentage() {
- return checkPercentage(pos) && getPercentage();
- },
- 'progid': function progid() {
- return checkProgid(pos) && getProgid();
- },
- 'property': function property() {
- return checkProperty(pos) && getProperty();
- },
- 'propertyDelim': function propertyDelim() {
- return checkPropertyDelim(pos) && getPropertyDelim();
- },
- 'pseudoc': function pseudoc() {
- return checkPseudoc(pos) && getPseudoc();
- },
- 'pseudoe': function pseudoe() {
- return checkPseudoe(pos) && getPseudoe();
- },
- 'ruleset': function ruleset() {
- return checkRuleset(pos) && getRuleset();
- },
- 's': function s() {
- return checkS(pos) && getS();
- },
- 'selector': function selector() {
- return checkSelector(pos) && getSelector();
- },
- 'shash': function shash() {
- return checkShash(pos) && getShash();
- },
- 'string': function string() {
- return checkString(pos) && getString();
- },
- 'stylesheet': function stylesheet() {
- return checkStylesheet(pos) && getStylesheet();
- },
- 'unary': function unary() {
- return checkUnary(pos) && getUnary();
- },
- 'unicodeRange': function unicodeRange() {
- return checkUnicodeRange(pos) && getUnicodeRange();
- },
- 'universalSelector': function universalSelector() {
- return checkUniversalSelector(pos) && getUniversalSelector();
- },
- 'urange': function urange() {
- return checkUrange(pos) && getUrange();
- },
- 'uri': function uri() {
- return checkUri(pos) && getUri();
- },
- 'value': function value() {
- return checkValue(pos) && getValue();
- },
- 'variable': function variable() {
- return checkVariable(pos) && getVariable();
- },
- 'variableslist': function variableslist() {
- return checkVariablesList(pos) && getVariablesList();
- },
- 'vhash': function vhash() {
- return checkVhash(pos) && getVhash();
- }
- };
-
- /**
- * Stop parsing and display error
- * @param {Number=} i Token's index number
- */
- function throwError(i) {
- var ln = tokens[i].ln;
-
- throw { line: ln, syntax: 'less' };
- }
-
- /**
- * @param {Object} exclude
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkExcluding(exclude, i) {
- var start = i;
-
- while (i < tokensLength) {
- if (exclude[tokens[i++].type]) break;
- }
-
- return i - start - 2;
- }
-
- /**
- * @param {Number} start
- * @param {Number} finish
- * @returns {String}
- */
- function joinValues(start, finish) {
- var s = '';
-
- for (var i = start; i < finish + 1; i++) {
- s += tokens[i].value;
- }
-
- return s;
- }
-
- /**
- * @param {Number} start
- * @param {Number} num
- * @returns {String}
- */
- function joinValues2(start, num) {
- if (start + num - 1 >= tokensLength) return;
-
- var s = '';
-
- for (var i = 0; i < num; i++) {
- s += tokens[start + i].value;
- }
-
- return s;
- }
-
- function getLastPosition(content, line, column, colOffset) {
- return typeof content === 'string' ? getLastPositionForString(content, line, column, colOffset) : getLastPositionForArray(content, line, column, colOffset);
- }
-
- function getLastPositionForString(content, line, column, colOffset) {
- var position = [];
-
- if (!content) {
- position = [line, column];
- if (colOffset) position[1] += colOffset - 1;
- return position;
- }
-
- var lastLinebreak = content.lastIndexOf('\n');
- var endsWithLinebreak = lastLinebreak === content.length - 1;
- var splitContent = content.split('\n');
- var linebreaksCount = splitContent.length - 1;
- var prevLinebreak = linebreaksCount === 0 || linebreaksCount === 1 ? -1 : content.length - splitContent[linebreaksCount - 1].length - 2;
-
- // Line:
- var offset = endsWithLinebreak ? linebreaksCount - 1 : linebreaksCount;
- position[0] = line + offset;
-
- // Column:
- if (endsWithLinebreak) {
- offset = prevLinebreak !== -1 ? content.length - prevLinebreak : content.length - 1;
- } else {
- offset = linebreaksCount !== 0 ? content.length - lastLinebreak - column - 1 : content.length - 1;
- }
- position[1] = column + offset;
-
- if (!colOffset) return position;
-
- if (endsWithLinebreak) {
- position[0]++;
- position[1] = colOffset;
- } else {
- position[1] += colOffset;
- }
-
- return position;
- }
-
- function getLastPositionForArray(content, line, column, colOffset) {
- var position = void 0;
-
- if (content.length === 0) {
- position = [line, column];
- } else {
- var c = content[content.length - 1];
- if (c.hasOwnProperty('end')) {
- position = [c.end.line, c.end.column];
- } else {
- position = getLastPosition(c.content, line, column);
- }
- }
-
- if (!colOffset) return position;
-
- if (tokens[pos - 1] && tokens[pos - 1].type !== 'Newline') {
- position[1] += colOffset;
- } else {
- position[0]++;
- position[1] = 1;
- }
-
- return position;
- }
-
- function newNode(type, content, line, column, end) {
- if (!end) end = getLastPosition(content, line, column);
- return new Node({
- type: type,
- content: content,
- start: {
- line: line,
- column: column
- },
- end: {
- line: end[0],
- column: end[1]
- },
- syntax: 'less'
- });
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkAny(i) {
- var l = void 0;
-
- if (l = checkBrackets(i)) tokens[i].any_child = 1;else if (l = checkParentheses(i)) tokens[i].any_child = 2;else if (l = checkString(i)) tokens[i].any_child = 3;else if (l = checkVariablesList(i)) tokens[i].any_child = 4;else if (l = checkVariable(i)) tokens[i].any_child = 5;else if (l = checkPercentage(i)) tokens[i].any_child = 6;else if (l = checkDimension(i)) tokens[i].any_child = 7;else if (l = checkUnicodeRange(i)) tokens[i].any_child = 15;else if (l = checkNumber(i)) tokens[i].any_child = 8;else if (l = checkUri(i)) tokens[i].any_child = 9;else if (l = checkExpression(i)) tokens[i].any_child = 10;else if (l = checkFunction(i)) tokens[i].any_child = 11;else if (l = checkIdent(i)) tokens[i].any_child = 12;else if (l = checkClass(i)) tokens[i].any_child = 13;else if (l = checkUnary(i)) tokens[i].any_child = 14;
-
- return l;
- }
-
- /**
- * @returns {Array}
- */
- function getAny() {
- var childType = tokens[pos].any_child;
-
- if (childType === 1) return getBrackets();
- if (childType === 2) return getParentheses();
- if (childType === 3) return getString();
- if (childType === 4) return getVariablesList();
- if (childType === 5) return getVariable();
- if (childType === 6) return getPercentage();
- if (childType === 7) return getDimension();
- if (childType === 15) return getUnicodeRange();
- if (childType === 8) return getNumber();
- if (childType === 9) return getUri();
- if (childType === 10) return getExpression();
- if (childType === 11) return getFunction();
- if (childType === 12) return getIdent();
- if (childType === 13) return getClass();
- if (childType === 14) return getUnary();
- }
-
- /**
- * Check if token is part of mixin's arguments.
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkArguments(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- // Skip `(`.
- i++;
-
- while (i < tokens[start].right) {
- if (l = checkArgument(i)) i += l;else return 0;
- }
-
- return tokens[start].right - start + 1;
- }
-
- /**
- * @returns {Array}
- */
- function getArguments() {
- var type = NodeType.ArgumentsType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var body = void 0;
-
- // Skip `(`.
- pos++;
-
- while (pos < tokensLength && tokens[pos].type !== TokenType.RightParenthesis) {
- if (checkDeclaration(pos)) content.push(getDeclaration());else if (checkArgument(pos)) {
- body = getArgument();
- if (typeof body.content === 'string') content.push(body);else content = content.concat(body);
- } else if (checkClass(pos)) content.push(getClass());else throwError(pos);
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is valid to be part of arguments list.
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkArgument(i) {
- var l = void 0;
-
- if (l = checkEscapedString(i)) tokens[i].argument_child = 1;else if (l = checkDeclaration(i)) tokens[i].argument_child = 2;else if (l = checkVariablesList(i)) tokens[i].argument_child = 3;else if (l = checkVariable(i)) tokens[i].argument_child = 4;else if (l = checkSC(i)) tokens[i].argument_child = 5;else if (l = checkUnary(i)) tokens[i].argument_child = 6;else if (l = checkOperator(i)) tokens[i].argument_child = 7;else if (l = checkDelim(i)) tokens[i].argument_child = 8;else if (l = checkDeclDelim(i)) tokens[i].argument_child = 9;else if (l = checkString(i)) tokens[i].argument_child = 10;else if (l = checkPercentage(i)) tokens[i].argument_child = 11;else if (l = checkDimension(i)) tokens[i].argument_child = 12;else if (l = checkNumber(i)) tokens[i].argument_child = 13;else if (l = checkUri(i)) tokens[i].argument_child = 14;else if (l = checkFunction(i)) tokens[i].argument_child = 15;else if (l = checkIdent(i)) tokens[i].argument_child = 16;else if (l = checkVhash(i)) tokens[i].argument_child = 17;else if (l = checkBlock(i)) tokens[i].argument_child = 18;else if (l = checkParentheses(i)) tokens[i].argument_child = 19;
-
- return l;
- }
-
- /**
- * @returns {Array} Node that is part of arguments list.
- */
- function getArgument() {
- var childType = tokens[pos].argument_child;
-
- if (childType === 1) return getEscapedString();
- if (childType === 2) return getDeclaration();
- if (childType === 3) return getVariablesList();
- if (childType === 4) return getVariable();
- if (childType === 5) return getSC();
- if (childType === 6) return getUnary();
- if (childType === 7) return getOperator();
- if (childType === 8) return getDelim();
- if (childType === 9) return getDeclDelim();
- if (childType === 10) return getString();
- if (childType === 11) return getPercentage();
- if (childType === 12) return getDimension();
- if (childType === 13) return getNumber();
- if (childType === 14) return getUri();
- if (childType === 15) return getFunction();
- if (childType === 16) return getIdent();
- if (childType === 17) return getVhash();
- if (childType === 18) return getBlock();
- if (childType === 19) return getParentheses();
- }
-
- /**
- * Check if token is part of an @-word (e.g. `@import`, `@include`)
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkAtkeyword(i) {
- var l = void 0;
-
- // Check that token is `@`:
- if (i >= tokensLength || tokens[i++].type !== TokenType.CommercialAt) return 0;
-
- return (l = checkIdent(i)) ? l + 1 : 0;
- }
-
- /**
- * Get node with @-word
- * @returns {Array} `['atkeyword', ['ident', x]]` where `x` is
- * an identifier without
- * `@` (e.g. `import`, `include`)
- */
- function getAtkeyword() {
- var type = NodeType.AtkeywordType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `@`.
- pos++;
-
- var content = [getIdent()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a part of an @-rule
- * @param {Number} i Token's index number
- * @returns {Number} Length of @-rule
- */
- function checkAtrule(i) {
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- // If token already has a record of being part of an @-rule,
- // return the @-rule's length:
- if (tokens[i].atrule_l !== undefined) return tokens[i].atrule_l;
-
- // If token is part of an @-rule, save the rule's type to token.
- if (l = checkKeyframesRule(i)) tokens[i].atrule_type = 4;
- // @-rule with ruleset:
- else if (l = checkAtruler(i)) tokens[i].atrule_type = 1;
- // Block @-rule:
- else if (l = checkAtruleb(i)) tokens[i].atrule_type = 2;
- // Single-line @-rule:
- else if (l = checkAtrules(i)) tokens[i].atrule_type = 3;else return 0;
-
- // If token is part of an @-rule, save the rule's length to token:
- tokens[i].atrule_l = l;
-
- return l;
- }
-
- /**
- * Get node with @-rule
- * @returns {Array}
- */
- function getAtrule() {
- var childType = tokens[pos].atrule_type;
-
- if (childType === 1) return getAtruler(); // @-rule with ruleset
- if (childType === 2) return getAtruleb(); // Block @-rule
- if (childType === 3) return getAtrules(); // Single-line @-rule
- if (childType === 4) return getKeyframesRule();
- }
-
- /**
- * Check if token is part of a block @-rule
- * @param {Number} i Token's index number
- * @returns {Number} Length of the @-rule
- */
- function checkAtruleb(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (l = checkTsets(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a block @-rule
- * @returns {Array} `['atruleb', ['atkeyword', x], y, ['block', z]]`
- */
- function getAtruleb() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getTsets(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an @-rule with ruleset
- * @param {Number} i Token's index number
- * @returns {Number} Length of the @-rule
- */
- function checkAtruler(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (l = checkTsets(i)) i += l;
-
- if (i < tokensLength && tokens[i].type === TokenType.LeftCurlyBracket) i++;else return 0;
-
- if (l = checkAtrulers(i)) i += l;
-
- if (i < tokensLength && tokens[i].type === TokenType.RightCurlyBracket) i++;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with an @-rule with ruleset
- * @returns {Array} ['atruler', ['atkeyword', x], y, z]
- */
- function getAtruler() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getTsets(), getAtrulers());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkAtrulers(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkSC(i)) i += l;
-
- while (i < tokensLength) {
- if (l = checkSC(i)) tokens[i].atrulers_child = 1;else if (l = checkAtrule(i)) tokens[i].atrulers_child = 2;else if (l = checkRuleset(i)) tokens[i].atrulers_child = 3;else break;
- i += l;
- }
-
- if (i < tokensLength) tokens[i].atrulers_end = 1;
-
- if (l = checkSC(i)) i += l;
-
- return i - start;
- }
-
- /**
- * @returns {Array} `['atrulers', x]`
- */
- function getAtrulers() {
- var type = NodeType.BlockType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `{`.
- pos++;
-
- content = content.concat(getSC());
-
- while (pos < tokensLength && !tokens[pos].atrulers_end) {
- var childType = tokens[pos].atrulers_child;
- if (childType === 1) content = content.concat(getSC());else if (childType === 2) content.push(getAtrule());else if (childType === 3) content.push(getRuleset());else break;
- }
-
- content = content.concat(getSC());
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `}`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkAtrules(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (l = checkTsets(i)) i += l;
-
- return i - start;
- }
-
- /**
- * @returns {Array} `['atrules', ['atkeyword', x], y]`
- */
- function getAtrules() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getTsets());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a block (e.g. `{...}`).
- * @param {Number} i Token's index number
- * @returns {Number} Length of the block
- */
- function checkBlock(i) {
- return i < tokensLength && tokens[i].type === TokenType.LeftCurlyBracket ? tokens[i].right - i + 1 : 0;
- }
-
- /**
- * Get node with a block
- * @returns {Array} `['block', x]`
- */
- function getBlock() {
- var type = NodeType.BlockType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var end = tokens[pos].right;
- var content = [];
-
- // Skip `{`.
- pos++;
-
- while (pos < end) {
- if (checkBlockdecl(pos)) content = content.concat(getBlockdecl());else throwError(pos);
- }
-
- var end_ = getLastPosition(content, line, column, 1);
- pos = end + 1;
-
- return newNode(type, content, line, column, end_);
- }
-
- /**
- * Check if token is part of a declaration (property-value pair)
- * @param {Number} i Token's index number
- * @returns {Number} Length of the declaration
- */
- function checkBlockdecl(i) {
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkBlockdecl1(i)) tokens[i].bd_type = 1;else if (l = checkBlockdecl2(i)) tokens[i].bd_type = 2;else if (l = checkBlockdecl3(i)) tokens[i].bd_type = 3;else if (l = checkBlockdecl4(i)) tokens[i].bd_type = 4;else return 0;
-
- return l;
- }
-
- /**
- * @returns {Array}
- */
- function getBlockdecl() {
- var childType = tokens[pos].bd_type;
-
- if (childType === 1) return getBlockdecl1();
- if (childType === 2) return getBlockdecl2();
- if (childType === 3) return getBlockdecl3();
- if (childType === 4) return getBlockdecl4();
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkBlockdecl1(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkCondition(i)) tokens[i].bd_kind = 1;else if (l = checkExtend(i)) tokens[i].bd_kind = 6;else if (l = checkRuleset(i)) tokens[i].bd_kind = 2;else if (l = checkDeclaration(i)) tokens[i].bd_kind = 3;else if (l = checkAtrule(i)) tokens[i].bd_kind = 4;else if (l = checkInclude(i)) tokens[i].bd_kind = 5;else return 0;
-
- i += l;
-
- if (i < tokensLength && (l = checkDeclDelim(i))) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * @returns {Array}
- */
- function getBlockdecl1() {
- var sc = getSC();
- var content = void 0;
-
- switch (tokens[pos].bd_kind) {
- case 1:
- content = getCondition();
- break;
- case 2:
- content = getRuleset();
- break;
- case 3:
- content = getDeclaration();
- break;
- case 4:
- content = getAtrule();
- break;
- case 5:
- content = getInclude();
- break;
- case 6:
- content = getExtend();
- break;
- }
-
- return sc.concat(content, getDeclDelim(), getSC());
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkBlockdecl2(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkCondition(i)) tokens[i].bd_kind = 1;else if (l = checkExtend(i)) tokens[i].bd_kind = 3;else if (l = checkRuleset(i)) tokens[i].bd_kind = 6;else if (l = checkDeclaration(i)) tokens[i].bd_kind = 4;else if (l = checkAtrule(i)) tokens[i].bd_kind = 5;else if (l = checkInclude(i)) tokens[i].bd_kind = 2;else return 0;
-
- i += l;
-
- if (l = checkSC(i)) i += l;
-
- return i - start;
- }
-
- /**
- * @returns {Array}
- */
- function getBlockdecl2() {
- var sc = getSC();
- var content = void 0;
-
- switch (tokens[pos].bd_kind) {
- case 1:
- content = getCondition();
- break;
- case 2:
- content = getInclude();
- break;
- case 3:
- content = getExtend();
- break;
- case 4:
- content = getDeclaration();
- break;
- case 5:
- content = getAtrule();
- break;
- case 6:
- content = getRuleset();
- break;
- }
-
- return sc.concat(content, getSC());
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkBlockdecl3(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkDeclDelim(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- return i - start;
- }
-
- /**
- * @returns {Array} `[s0, ['declDelim'], s1]` where `s0` and `s1` are
- * are optional whitespaces.
- */
- function getBlockdecl3() {
- return [].concat(getSC(), getDeclDelim(), getSC());
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkBlockdecl4(i) {
- return checkSC(i);
- }
-
- /**
- * @returns {Array}
- */
- function getBlockdecl4() {
- return getSC();
- }
-
- /**
- * Check if token is part of text inside square brackets, e.g. `[1]`
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkBrackets(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
-
- // Skip `[`.
- if (tokens[i].type === TokenType.LeftSquareBracket) i++;else return 0;
-
- if (i < tokens[start].right) {
- var l = checkTsets(i);
- if (l) i += l;else return 0;
- }
-
- // Skip `]`.
- i++;
-
- return i - start;
- }
-
- /**
- * Get node with text inside square brackets, e.g. `[1]`
- * @returns {Node}
- */
- function getBrackets() {
- var type = NodeType.BracketsType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var right = token.right;
- var content = [];
-
- // Skip `[`.
- pos++;
-
- if (pos < right) {
- content = getTsets();
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `]`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a class selector (e.g. `.abc`)
- * @param {Number} i Token's index number
- * @returns {Number} Length of the class selector
- */
- function checkClass(i) {
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].class_l) return tokens[i].class_l;
-
- if (tokens[i++].type === TokenType.FullStop) {
- if (l = checkInterpolatedVariable(i)) tokens[i].class_child = 1;else if (l = checkIdent(i)) tokens[i].class_child = 2;else return 0;
-
- tokens[i].class_l = l + 1;
- return l + 1;
- }
-
- return 0;
- }
-
- /**
- * Get node with a class selector
- * @returns {Array} `['class', ['ident', x]]` where x is a class's
- * identifier (without `.`, e.g. `abc`).
- */
- function getClass() {
- var type = NodeType.ClassType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `.`
- pos++;
-
- var childType = tokens[pos].class_child;
- if (childType === 1) content.push(getInterpolatedVariable());else content.push(getIdent());
-
- return newNode(type, content, line, column);
- }
-
- function checkCombinator(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
- if (l = checkCombinator1(i)) tokens[i].combinatorType = 1;else if (l = checkCombinator2(i)) tokens[i].combinatorType = 2;else if (l = checkCombinator3(i)) tokens[i].combinatorType = 3;else if (l = checkCombinator4(i)) tokens[i].combinatorType = 4;
-
- return l;
- }
-
- function getCombinator() {
- var type = tokens[pos].combinatorType;
- if (type === 1) return getCombinator1();
- if (type === 2) return getCombinator2();
- if (type === 3) return getCombinator3();
- if (type === 4) return getCombinator4();
- }
-
- /**
- * (1) `>>>`
- *
- * @param {Number} i
- * @return {Number}
- */
- function checkCombinator1(i) {
- if (i < tokensLength && tokens[i++].type === TokenType.GreaterThanSign && i < tokensLength && tokens[i++].type === TokenType.GreaterThanSign && i < tokensLength && tokens[i++].type === TokenType.GreaterThanSign) return 3;
-
- return 0;
- }
-
- /**
- * @return {Node}
- */
- function getCombinator1() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '>>>';
-
- // Skip combinator
- pos += 3;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `||`
- * (2) `>>`
- *
- * @param {Number} i
- * @return {Number}
- */
- function checkCombinator2(i) {
- if (i + 1 >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.VerticalLine && tokens[i + 1].type === TokenType.VerticalLine) return 2;
-
- if (tokens[i].type === TokenType.GreaterThanSign && tokens[i + 1].type === TokenType.GreaterThanSign) return 2;
-
- return 0;
- }
-
- /**
- * @return {Node}
- */
- function getCombinator2() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '' + token.value + tokens[pos + 1].value;
-
- // Skip combinator
- pos += 2;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `>`
- * (2) `+`
- * (3) `~`
- *
- * @param {Number} i
- * @return {Number}
- */
- function checkCombinator3(i) {
- var type = tokens[i].type;
- if (type === TokenType.PlusSign || type === TokenType.GreaterThanSign || type === TokenType.Tilde) return 1;else return 0;
- }
-
- /**
- * @return {Node}
- */
- function getCombinator3() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- // Skip combinator
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `/panda/`
- */
- function checkCombinator4(i) {
- var start = i;
-
- if (tokens[i].type === TokenType.Solidus) i++;else return 0;
-
- var l = void 0;
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (tokens[i].type === TokenType.Solidus) i++;else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Node}
- */
- function getCombinator4() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `/`.
- pos++;
-
- var ident = getIdent();
-
- // Skip `/`.
- pos++;
-
- var content = '/' + ident.content + '/';
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a multiline comment.
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is a multiline comment, otherwise `0`
- */
- function checkCommentML(i) {
- return i < tokensLength && tokens[i].type === TokenType.CommentML ? 1 : 0;
- }
-
- /**
- * Get node with a multiline comment
- * @returns {Array} `['commentML', x]` where `x`
- * is the comment's text (without `/*` and `* /`).
- */
- function getCommentML() {
- var type = NodeType.CommentMLType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = tokens[pos].value.substring(2);
- var l = content.length;
-
- if (content.charAt(l - 2) === '*' && content.charAt(l - 1) === '/') content = content.substring(0, l - 2);
-
- var end = getLastPosition(content, line, column, 2);
- if (end[0] === line) end[1] += 2;
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a single-line comment.
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is a single-line comment, otherwise `0`
- */
- function checkCommentSL(i) {
- return i < tokensLength && tokens[i].type === TokenType.CommentSL ? 1 : 0;
- }
-
- /**
- * Get node with a single-line comment.
- * @returns {Array}
- */
- function getCommentSL() {
- var type = NodeType.CommentSLType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = tokens[pos++].value.substring(2);
- var end = getLastPosition(content, line, column + 2);
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a condition.
- * @param {Number} i Token's index number
- * @return {Number} Length of the condition
- */
- function checkCondition(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if ((l = checkIdent(i)) && tokens[i].value === 'when') i += l;else return 0;
-
- while (i < tokensLength) {
- if (l = checkBlock(i)) {
- tokens[i].condition_child = 0;
- break;
- } else if (l = checkFunction(i)) tokens[i].condition_child = 1;else if (l = checkBrackets(i)) tokens[i].condition_child = 2;else if (l = checkParentheses(i)) tokens[i].condition_child = 3;else if (l = checkVariable(i)) tokens[i].condition_child = 4;else if (l = checkIdent(i)) tokens[i].condition_child = 5;else if (l = checkNumber(i)) tokens[i].condition_child = 6;else if (l = checkDelim(i)) tokens[i].condition_child = 7;else if (l = checkOperator(i)) tokens[i].condition_child = 8;else if (l = checkCombinator(i)) tokens[i].condition_child = 9;else if (l = checkSC(i)) tokens[i].condition_child = 10;else if (l = checkString(i)) tokens[i].condition_child = 11;else return 0;
-
- i += l;
- }
-
- return i - start;
- }
-
- /**
- * Get node with a condition.
- * @returns {Array} `['condition', x]`
- */
- function getCondition() {
- var type = NodeType.ConditionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content.push(getIdent());
-
- while (pos < tokensLength) {
- var childType = tokens[pos].condition_child;
-
- if (childType === 0) break;else if (childType === 1) content.push(getFunction());else if (childType === 2) content.push(getBrackets());else if (childType === 3) content.push(getParentheses());else if (childType === 4) content.push(getVariable());else if (childType === 5) content.push(getIdent());else if (childType === 6) content.push(getNumber());else if (childType === 7) content.push(getDelim());else if (childType === 8) content.push(getOperator());else if (childType === 9) content.push(getCombinator());else if (childType === 10) content = content.concat(getSC());else if (childType === 11) content.push(getString());
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a declaration (property-value pair)
- * @param {Number} i Token's index number
- * @returns {Number} Length of the declaration
- */
- function checkDeclaration(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkProperty(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkPropertyDelim(i)) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkValue(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a declaration
- * @returns {Array} `['declaration', ['property', x], ['propertyDelim'],
- * ['value', y]]`
- */
- function getDeclaration() {
- var type = NodeType.DeclarationType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getProperty(), getSC(), getPropertyDelim(), getSC(), getValue());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a semicolon
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is a semicolon, otherwise `0`
- */
- function checkDeclDelim(i) {
- return i < tokensLength && tokens[i].type === TokenType.Semicolon ? 1 : 0;
- }
-
- /**
- * Get node with a semicolon
- * @returns {Array} `['declDelim']`
- */
- function getDeclDelim() {
- var type = NodeType.DeclDelimType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = ';';
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a comma
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is a comma, otherwise `0`
- */
- function checkDelim(i) {
- return i < tokensLength && tokens[i].type === TokenType.Comma ? 1 : 0;
- }
-
- /**
- * Get node with a comma
- * @returns {Array} `['delim']`
- */
- function getDelim() {
- var type = NodeType.DelimType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = ',';
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a number with dimension unit (e.g. `10px`)
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkDimension(i) {
- var ln = checkNumber(i);
- var li = void 0;
-
- if (i >= tokensLength || !ln || i + ln >= tokensLength) return 0;
-
- return (li = checkUnit(i + ln)) ? ln + li : 0;
- }
-
- /**
- * Get node of a number with dimension unit
- * @return {Node}
- */
- function getDimension() {
- var type = NodeType.DimensionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getNumber(), getUnit()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an escaped string (e.g. `~"ms:something"`).
- * @param {Number} i Token's index number
- * @returns {Number} Length of the string (including `~` and quotes)
- */
- function checkEscapedString(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.Tilde && (l = checkString(i + 1))) return i + l - start;else return 0;
- }
-
- /**
- * Get node with an escaped string
- * @returns {Array} `['escapedString', ['string', x]]` where `x` is a string
- * without `~` but with quotes
- */
- function getEscapedString() {
- var type = NodeType.EscapedStringType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- pos++;
-
- var content = tokens[pos].value;
- var end = getLastPosition(content, line, column + 1);
-
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkExpression(i) {
- var start = i;
-
- if (i >= tokensLength || tokens[i++].value !== 'expression' || i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) {
- return 0;
- }
-
- return tokens[i].right - start + 1;
- }
-
- /**
- * @returns {Array}
- */
- function getExpression() {
- var type = NodeType.ExpressionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- pos++;
-
- var content = joinValues(pos + 1, tokens[pos].right - 1);
- var end = getLastPosition(content, line, column, 1);
-
- if (end[0] === line) end[1] += 11;
- pos = tokens[pos].right + 1;
-
- return newNode(type, content, line, column, end);
- }
-
- function checkExtend(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
-
- if (l = checkExtend1(i)) tokens[i].extendType = 1;else if (l = checkExtend2(i)) tokens[i].extendType = 2;else return 0;
-
- return l;
- }
-
- function getExtend() {
- var childType = tokens[pos].extendType;
-
- if (childType === 1) return getExtend1();
- if (childType === 2) return getExtend2();
- }
-
- /**
- * (1) `selector:extend(selector) {...}`
- */
- function checkExtend1(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkExtendSelector(i)) i += l;else return 0;
-
- if (tokens[i + 1] && tokens[i + 1].value === 'extend' && (l = checkPseudoc(i))) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getExtend1() {
- var type = NodeType.ExtendType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getExtendSelector(), getPseudoc(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `selector:extend(selector)`
- */
- function checkExtend2(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkExtendSelector(i)) i += l;else return 0;
-
- if (tokens[i + 1] && tokens[i + 1].value === 'extend' && (l = checkPseudoc(i))) i += l;else return 0;
-
- return i - start;
- }
-
- function getExtend2() {
- var type = NodeType.ExtendType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getExtendSelector(), getPseudoc());
-
- return newNode(type, content, line, column);
- }
-
- function checkExtendSelector(i) {
- var l = void 0;
-
- if (l = checkParentSelectorWithExtension(i)) tokens[i].extend_type = 1;else if (l = checkIdent(i)) tokens[i].extend_type = 2;else if (l = checkClass(i)) tokens[i].extend_type = 3;else if (l = checkShash(i)) tokens[i].extend_type = 4;
-
- return l;
- }
-
- function getExtendSelector() {
- var childType = tokens[pos].extend_type;
-
- if (childType === 1) return getParentSelectorWithExtension();
- if (childType === 2) return [getIdent()];
- if (childType === 3) return [getClass()];
- if (childType === 4) return [getShash()];
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkFunction(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return i < tokensLength && tokens[i].type === TokenType.LeftParenthesis ? tokens[i].right - start + 1 : 0;
- }
-
- /**
- * @returns {Array}
- */
- function getFunction() {
- var type = NodeType.FunctionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getIdent(), getArguments());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an identifier
- * @param {Number} i Token's index number
- * @returns {Number} Length of the identifier
- */
- function checkIdent(i) {
- var start = i;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.HyphenMinus) i++;
-
- if (tokens[i].type === TokenType.LowLine || tokens[i].type === TokenType.Identifier) i++;else return 0;
-
- for (; i < tokensLength; i++) {
- if (tokens[i].type !== TokenType.HyphenMinus && tokens[i].type !== TokenType.LowLine && tokens[i].type !== TokenType.Identifier && tokens[i].type !== TokenType.DecimalNumber) break;
- }
-
- tokens[start].ident_last = i - 1;
-
- return i - start;
- }
-
- /**
- * Get node with an identifier
- * @returns {Array} `['ident', x]` where `x` is identifier's name
- */
- function getIdent() {
- var type = NodeType.IdentType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, tokens[pos].ident_last);
-
- pos = tokens[pos].ident_last + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @returns {number} Length of the identifier
- */
- function checkPartialIdent(i) {
- var start = i;
-
- if (i >= tokensLength) return 0;
-
- for (; i < tokensLength; i++) {
- if (tokens[i].type !== TokenType.HyphenMinus && tokens[i].type !== TokenType.LowLine && tokens[i].type !== TokenType.Identifier && tokens[i].type !== TokenType.DecimalNumber) break;
- }
-
- tokens[start].ident_last = i - 1;
-
- return i - start;
- }
-
- /**
- * Check if token is part of `!important` word
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkImportant(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength || tokens[i++].type !== TokenType.ExclamationMark) return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].value === 'important') {
- tokens[start].importantEnd = i;
- return i - start + 1;
- } else {
- return 0;
- }
- }
-
- /**
- * Get node with `!important` word
- * @returns {Array} `['important', sc]` where `sc` is optional whitespace
- */
- function getImportant() {
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, token.importantEnd);
-
- pos = token.importantEnd + 1;
-
- return newNode(NodeType.ImportantType, content, line, column);
- }
-
- /**
- * Check if token is part of an include (`@include` or `@extend` directive).
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkInclude(i) {
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkInclude1(i)) tokens[i].include_type = 1;else if (l = checkInclude2(i)) tokens[i].include_type = 2;
-
- return l;
- }
-
- /**
- * Get node with included mixin
- * @returns {Array} `['include', x]`
- */
- function getInclude() {
- var type = tokens[pos].include_type;
-
- if (type === 1) return getInclude1();
- if (type === 2) return getInclude2();
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkInclude1(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkClass(i) || checkShash(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- if (l = checkClass(i) || checkShash(i) || checkSC(i)) i += l;else if (tokens[i].type === TokenType.GreaterThanSign) i++;else break;
- }
-
- if (l = checkArguments(i)) i += l;else return 0;
-
- if (i < tokensLength && (l = checkSC(i))) i += l;
-
- if (i < tokensLength && (l = checkImportant(i))) i += l;
-
- return i - start;
- }
-
- /**
- * @returns {Array} `['include', x]`
- */
- function getInclude1() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content.push(checkClass(pos) ? getClass() : getShash());
-
- while (pos < tokensLength) {
- if (checkClass(pos)) content.push(getClass());else if (checkShash(pos)) content.push(getShash());else if (checkSC(pos)) content = content.concat(getSC());else if (checkOperator(pos)) content.push(getOperator());else break;
- }
-
- content.push(getArguments());
-
- content = content.concat(getSC());
-
- if (checkImportant(pos)) content.push(getImportant());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkInclude2(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkClass(i) || checkShash(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- if (l = checkClass(i) || checkShash(i) || checkSC(i)) i += l;else if (tokens[i].type === TokenType.GreaterThanSign) i++;else break;
- }
-
- return i - start;
- }
-
- /**
- * @returns {Array} `['include', x]`
- */
- function getInclude2() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content.push(checkClass(pos) ? getClass() : getShash());
-
- while (pos < tokensLength) {
- if (checkClass(pos)) content.push(getClass());else if (checkShash(pos)) content.push(getShash());else if (checkSC(pos)) content = content.concat(getSC());else if (checkOperator(pos)) content.push(getOperator());else break;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of LESS interpolated variable
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkInterpolatedVariable(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type !== TokenType.CommercialAt || !tokens[i + 1] || tokens[i + 1].type !== TokenType.LeftCurlyBracket) {
- return 0;
- }
-
- i += 2;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return tokens[i].type === TokenType.RightCurlyBracket ? i - start + 1 : 0;
- }
-
- /**
- * Get node with LESS interpolated variable
- * @returns {Array} `['interpolatedVariable', x]`
- */
- function getInterpolatedVariable() {
- var type = NodeType.InterpolatedVariableType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `@{`:
- pos += 2;
-
- content.push(getIdent());
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `}`:
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- function checkKeyframesBlock(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkKeyframesSelector(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getKeyframesBlock() {
- var type = NodeType.RulesetType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getKeyframesSelector(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- function checkKeyframesBlocks(i) {
- var start = i;
- var l = void 0;
-
- if (i < tokensLength && tokens[i].type === TokenType.LeftCurlyBracket) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkKeyframesBlock(i)) i += l;else return 0;
-
- while (tokens[i].type !== TokenType.RightCurlyBracket) {
- if (l = checkSC(i)) i += l;else if (l = checkKeyframesBlock(i)) i += l;else break;
- }
-
- if (i < tokensLength && tokens[i].type === TokenType.RightCurlyBracket) i++;else return 0;
-
- return i - start;
- }
-
- function getKeyframesBlocks() {
- var type = NodeType.BlockType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var keyframesBlocksEnd = token.right;
- var content = [];
-
- // Skip `{`.
- pos++;
-
- while (pos < keyframesBlocksEnd) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkKeyframesBlock(pos)) content.push(getKeyframesBlock());
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `}`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a @keyframes rule.
- * @param {Number} i Token's index number
- * @return {Number} Length of the @keyframes rule
- */
- function checkKeyframesRule(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- var atruleName = joinValues2(i - l, l);
- if (atruleName.toLowerCase().indexOf('keyframes') === -1) return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkKeyframesBlocks(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Node}
- */
- function getKeyframesRule() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getIdent(), getSC(), getKeyframesBlocks());
-
- return newNode(type, content, line, column);
- }
-
- function checkKeyframesSelector(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) {
- // Valid selectors are only `from` and `to`.
- var selector = joinValues2(i, l);
- if (selector !== 'from' && selector !== 'to') return 0;
-
- i += l;
- tokens[start].keyframesSelectorType = 1;
- } else if (l = checkPercentage(i)) {
- i += l;
- tokens[start].keyframesSelectorType = 2;
- } else {
- return 0;
- }
-
- return i - start;
- }
-
- function getKeyframesSelector() {
- var keyframesSelectorType = NodeType.KeyframesSelectorType;
- var selectorType = NodeType.SelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (token.keyframesSelectorType === 1) {
- content.push(getIdent());
- } else {
- content.push(getPercentage());
- }
-
- var keyframesSelector = newNode(keyframesSelectorType, content, line, column);
-
- return newNode(selectorType, [keyframesSelector], line, column);
- }
-
- /**
- * Check if token is part of a LESS mixin
- * @param {Number} i Token's index number
- * @returns {Number} Length of the mixin
- */
- function checkMixin(i) {
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkMixin1(i)) tokens[i].mixin_type = 1;else if (l = checkMixin2(i)) tokens[i].mixin_type = 2;else return 0;
-
- return l;
- }
-
- /**
- * @returns {Array}
- */
- function getMixin() {
- var type = tokens[pos].mixin_type;
-
- if (type === 1) return getMixin1();
- if (type === 2) return getMixin2();
- }
-
- function checkMixin1(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkClass(i) || checkShash(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkArguments(i)) i += l;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a mixin
- * @returns {Array} `['mixin', x]`
- */
- function getMixin1() {
- var type = NodeType.MixinType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content.push(checkClass(pos) ? getClass() : getShash());
-
- content = content.concat(getSC());
-
- if (checkArguments(pos)) content.push(getArguments());
-
- content = content.concat(getSC());
-
- if (checkBlock(pos)) content.push(getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a LESS mixin
- * @param {Number} i Token's index number
- * @returns {Number} Length of the mixin
- */
- function checkMixin2(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkClass(i) || checkShash(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkArguments(i)) i += l;
-
- return i - start;
- }
-
- /**
- * Get node with a mixin
- * @returns {Array} `['mixin', x]`
- */
- function getMixin2() {
- var type = NodeType.MixinType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content.push(checkClass(pos) ? getClass() : getShash());
-
- content = content.concat(getSC());
-
- if (checkArguments(pos)) content.push(getArguments());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a namespace sign (`|`)
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is `|`, `0` if not
- */
- function checkNamespace(i) {
- return i < tokensLength && tokens[i].type === TokenType.VerticalLine ? 1 : 0;
- }
-
- /**
- * Get node with a namespace sign
- * @returns {Array} `['namespace']`
- */
- function getNamespace() {
- var type = NodeType.NamespaceType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '|';
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkNmName2(i) {
- if (tokens[i].type === TokenType.Identifier) return 1;else if (tokens[i].type !== TokenType.DecimalNumber) return 0;
-
- i++;
-
- return i < tokensLength && tokens[i].type === TokenType.Identifier ? 2 : 1;
- }
-
- /**
- * @returns {String}
- */
- function getNmName2() {
- var s = tokens[pos].value;
-
- if (tokens[pos++].type === TokenType.DecimalNumber && pos < tokensLength && tokens[pos].type === TokenType.Identifier) s += tokens[pos++].value;
-
- return s;
- }
-
- /**
- * Check if token is part of a number
- * @param {Number} i Token's index number
- * @returns {Number} Length of number
- */
- function checkNumber(i) {
- if (i >= tokensLength) return 0;
-
- if (tokens[i].number_l) return tokens[i].number_l;
-
- // `10`:
- if (i < tokensLength && tokens[i].type === TokenType.DecimalNumber && (!tokens[i + 1] || tokens[i + 1] && tokens[i + 1].type !== TokenType.FullStop)) {
- tokens[i].number_l = 1;
- return 1;
- }
-
- // `10.`:
- if (i < tokensLength && tokens[i].type === TokenType.DecimalNumber && tokens[i + 1] && tokens[i + 1].type === TokenType.FullStop && (!tokens[i + 2] || tokens[i + 2].type !== TokenType.DecimalNumber)) {
- tokens[i].number_l = 2;
- return 2;
- }
-
- // `.10`:
- if (i < tokensLength && tokens[i].type === TokenType.FullStop && tokens[i + 1].type === TokenType.DecimalNumber) {
- tokens[i].number_l = 2;
- return 2;
- }
-
- // `10.10`:
- if (i < tokensLength && tokens[i].type === TokenType.DecimalNumber && tokens[i + 1] && tokens[i + 1].type === TokenType.FullStop && tokens[i + 2] && tokens[i + 2].type === TokenType.DecimalNumber) {
- tokens[i].number_l = 3;
- return 3;
- }
-
- return 0;
- }
-
- /**
- * Get node with number
- * @returns {Array} `['number', x]` where `x` is a number converted
- * to string.
- */
- function getNumber() {
- var type = NodeType.NumberType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var l = tokens[pos].number_l;
- var content = '';
-
- for (var j = 0; j < l; j++) {
- content += tokens[pos + j].value;
- }
-
- pos += l;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is an operator (`/`, `,`, `:`, `=`, `>`, `<` or `*`)
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is an operator, otherwise `0`
- */
- function checkOperator(i) {
- if (i >= tokensLength) return 0;
-
- switch (tokens[i].type) {
- case TokenType.Solidus:
- case TokenType.Comma:
- case TokenType.Colon:
- case TokenType.EqualsSign:
- case TokenType.LessThanSign:
- case TokenType.GreaterThanSign:
- case TokenType.Asterisk:
- return 1;
- }
-
- return 0;
- }
-
- /**
- * Get node with an operator
- * @returns {Array} `['operator', x]` where `x` is an operator converted
- * to string.
- */
- function getOperator() {
- var type = NodeType.OperatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of text inside parentheses, e.g. `(1)`
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkParentheses(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var right = tokens[i].right;
-
- // Skip `(`.
- if (tokens[i].type === TokenType.LeftParenthesis) i++;else return 0;
-
- if (i < right) {
- var l = checkTsets(i);
- if (l) i += l;else return 0;
- }
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- /**
- * Get node with text inside parentheses, e.g. `(1)`
- * @return {Node}
- */
- function getParentheses() {
- var type = NodeType.ParenthesesType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var right = token.right;
- var content = [];
-
- // Skip `(`.
- pos++;
-
- if (pos < right) {
- content = getTsets();
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is a parent selector (`&`).
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkParentSelector(i) {
- return i < tokensLength && tokens[i].type === TokenType.Ampersand ? 1 : 0;
- }
-
- /**
- * Get node with a parent selector
- * @returns {Array} `['parentSelector']`
- */
- function getParentSelector() {
- var type = NodeType.ParentSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '&';
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- function checkParentSelectorExtension(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- while (i < tokensLength) {
- if (l = checkNumber(i) || checkPartialIdent(i)) i += l;else break;
- }
-
- return i - start;
- }
-
- function getParentSelectorExtension() {
- var type = NodeType.ParentSelectorExtensionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- while (pos < tokensLength) {
- if (checkNumber(pos)) {
- content.push(getNumber());
- } else if (checkPartialIdent(pos)) {
- content.push(getIdent());
- } else break;
- }
-
- return newNode(type, content, line, column);
- }
-
- function checkParentSelectorWithExtension(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkParentSelector(i)) i += l;else return 0;
-
- if (l = checkParentSelectorExtension(i)) i += l;
-
- return i - start;
- }
-
- function getParentSelectorWithExtension() {
- var content = [getParentSelector()];
-
- if (checkParentSelectorExtension(pos)) content.push(getParentSelectorExtension());
-
- return content;
- }
-
- /**
- * Check if token is part of a number with percent sign (e.g. `10%`)
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkPercentage(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkNumber(i)) i += l;else return 0;
-
- if (i >= tokensLength) return 0;
-
- // Skip `%`.
- if (tokens[i].type === TokenType.PercentSign) i++;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node of number with percent sign
- * @returns {Array} `['percentage', ['number', x]]` where `x` is a number
- * (without percent sign) converted to string.
- */
- function getPercentage() {
- var type = NodeType.PercentageType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getNumber()];
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `%`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkProgid(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (joinValues2(i, 6) === 'progid:DXImageTransform.Microsoft.') i += 6;else return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].type === TokenType.LeftParenthesis) {
- tokens[start].progid_end = tokens[i].right;
- i = tokens[i].right + 1;
- } else return 0;
-
- return i - start;
- }
-
- /**
- * @returns {Array}
- */
- function getProgid() {
- var type = NodeType.ProgidType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var progid_end = token.progid_end;
- var content = joinValues(pos, progid_end);
-
- pos = progid_end + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a property
- * @param {Number} i Token's index number
- * @returns {Number} Length of the property
- */
- function checkProperty(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkVariable(i) || checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a property
- * @returns {Array} `['property', x]`
- */
- function getProperty() {
- var type = NodeType.PropertyType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (checkVariable(pos)) {
- content.push(getVariable());
- } else {
- content.push(getIdent());
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a colon
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is a colon, otherwise `0`
- */
- function checkPropertyDelim(i) {
- return i < tokensLength && tokens[i].type === TokenType.Colon ? 1 : 0;
- }
-
- /**
- * Get node with a colon
- * @returns {Array} `['propertyDelim']`
- */
- function getPropertyDelim() {
- var type = NodeType.PropertyDelimType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = ':';
-
- // Skip `:`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkPseudo(i) {
- return checkPseudoe(i) || checkPseudoc(i);
- }
-
- /**
- * @returns {Array}
- */
- function getPseudo() {
- if (checkPseudoe(pos)) return getPseudoe();
- if (checkPseudoc(pos)) return getPseudoc();
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkPseudoe(i) {
- var l = void 0;
-
- // Check `::`
- if (i >= tokensLength || tokens[i].type !== TokenType.Colon || i + 1 >= tokensLength || tokens[i + 1].type !== TokenType.Colon) return 0;
-
- if (l = checkPseudoElement1(i)) tokens[i].pseudoElementType = 1;else if (l = checkPseudoElement2(i)) tokens[i].pseudoElementType = 2;else return 0;
-
- return l;
- }
-
- /**
- * @returns {Node}
- */
- function getPseudoe() {
- var childType = tokens[pos].pseudoElementType;
- if (childType === 1) return getPseudoElement1();
- if (childType === 2) return getPseudoElement2();
- }
-
- /**
- * (1) `::slotted(selector)`
- * (2) `::slotted(selector, selector)`
- */
- function checkPseudoElement1(i) {
- var start = i;
- var l = void 0;
-
- // Skip `::`.
- i += 2;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- /**
- * (1) `::slotted(selector)`
- * (2) `::slotted(selector, selector)`
- */
- function getPseudoElement1() {
- var type = NodeType.PseudoeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `::`.
- pos += 2;
-
- content.push(getIdent());
-
- {
- var _type = NodeType.ArgumentsType;
- var _token = tokens[pos];
- var _line = _token.ln;
- var _column = _token.col;
-
- // Skip `(`.
- pos++;
-
- var selectorContent = [].concat(getSC(), getSelectorsGroup(), getSC());
-
- var end = getLastPosition(selectorContent, _line, _column, 1);
- var args = newNode(_type, selectorContent, _line, _column, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
- }
-
- return newNode(type, content, line, column);
- }
-
- function checkPseudoElement2(i) {
- var start = i;
- var l = void 0;
-
- // Skip `::`.
- i += 2;
-
- if (l = checkInterpolatedVariable(i) || checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * @returns {Array}
- */
- function getPseudoElement2() {
- var type = NodeType.PseudoeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `::`.
- pos += 2;
-
- var content = [];
-
- if (checkInterpolatedVariable(pos)) {
- content.push(getInterpolatedVariable());
- } else {
- content.push(getIdent());
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkPseudoc(i) {
- var l = void 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.Colon) return 0;
-
- if (l = checkPseudoClass3(i)) tokens[i].pseudoClassType = 3;else if (l = checkPseudoClass4(i)) tokens[i].pseudoClassType = 4;else if (l = checkPseudoClass5(i)) tokens[i].pseudoClassType = 5;else if (l = checkPseudoClass1(i)) tokens[i].pseudoClassType = 1;else if (l = checkPseudoClass2(i)) tokens[i].pseudoClassType = 2;else if (l = checkPseudoClass6(i)) tokens[i].pseudoClassType = 6;else return 0;
-
- return l;
- }
-
- function getPseudoc() {
- var childType = tokens[pos].pseudoClassType;
- if (childType === 1) return getPseudoClass1();
- if (childType === 2) return getPseudoClass2();
- if (childType === 3) return getPseudoClass3();
- if (childType === 4) return getPseudoClass4();
- if (childType === 5) return getPseudoClass5();
- if (childType === 6) return getPseudoClass6();
- }
-
- /**
- * (1) `:not(selector)`
- * (2) `:extend(selector, selector)`
- */
- function checkPseudoClass1(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- /**
- * (-) `:not(panda)`
- */
- function getPseudoClass1() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content.push(getIdent());
-
- {
- var _type2 = NodeType.ArgumentsType;
- var _token2 = tokens[pos];
- var _line2 = _token2.ln;
- var _column2 = _token2.col;
-
- // Skip `(`.
- pos++;
-
- var selectorContent = [].concat(getSC(), getSelectorsGroup(), getSC());
-
- var end = getLastPosition(selectorContent, _line2, _column2, 1);
- var args = newNode(_type2, selectorContent, _line2, _column2, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `:nth-child(odd)`
- * (2) `:nth-child(even)`
- * (3) `:lang(de-DE)`
- */
- function checkPseudoClass2(i) {
- var start = i;
- var l = 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass2() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content.push(getIdent());
-
- {
- // Skip `(`.
- pos++;
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
- var value = [].concat(getSC(), getIdent(), getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:nth-child(-3n + 2)`
- */
- function checkPseudoClass3(i) {
- var start = i;
- var l = 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkUnary(i)) i += l;
-
- if (i >= tokensLength) return 0;
- if (tokens[i].type === TokenType.DecimalNumber) i++;
-
- if (i >= tokensLength) return 0;
- if (tokens[i].value === 'n') i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i >= tokensLength) return 0;
- if (tokens[i].value === '+' || tokens[i].value === '-') i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].type === TokenType.DecimalNumber) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass3() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content.push(getIdent());
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
- var value = [];
-
- // Skip `(`.
- pos++;
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
- if (checkNumber(pos)) value.push(getNumber());
-
- {
- var _l = tokens[pos].ln;
- var _c = tokens[pos].col;
- var _content = tokens[pos].value;
- var ident = newNode(NodeType.IdentType, _content, _l, _c);
- value.push(ident);
- pos++;
- }
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
-
- value = value.concat(getSC());
-
- if (checkNumber(pos)) value.push(getNumber());
-
- value = value.concat(getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:nth-child(-3n)`
- */
- function checkPseudoClass4(i) {
- var start = i;
- var l = 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (i >= tokensLength) return 0;
- if (tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkUnary(i)) i += l;
- if (tokens[i].type === TokenType.DecimalNumber) i++;
-
- if (tokens[i].value === 'n') i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass4() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content.push(getIdent());
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
- var value = [];
-
- // Skip `(`.
- pos++;
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
- if (checkNumber(pos)) value.push(getNumber());
- if (checkIdent(pos)) value.push(getIdent());
-
- value = value.concat(getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:nth-child(+8)`
- */
- function checkPseudoClass5(i) {
- var start = i;
- var l = 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (i >= tokensLength) return 0;
- if (tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkUnary(i)) i += l;
- if (tokens[i].type === TokenType.DecimalNumber) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass5() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content.push(getIdent());
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
- var value = [];
-
- // Skip `(`.
- pos++;
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
- if (checkNumber(pos)) value.push(getNumber());
-
- value = value.concat(getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:checked`
- */
- function checkPseudoClass6(i) {
- var start = i;
- var l = 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkInterpolatedVariable(i)) i += l;else if (l = checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getPseudoClass6() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- var ident = checkInterpolatedVariable(pos) ? getInterpolatedVariable() : getIdent();
- content.push(ident);
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkRuleset(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getRuleset() {
- var type = NodeType.RulesetType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getSelectorsGroup(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is marked as a space (if it's a space or a tab
- * or a line break).
- * @param {Number} i
- * @returns {Number} Number of spaces in a row starting with the given token.
- */
- function checkS(i) {
- return i < tokensLength && tokens[i].ws ? tokens[i].ws_last - i + 1 : 0;
- }
-
- /**
- * Get node with spaces
- * @returns {Array} `['s', x]` where `x` is a string containing spaces
- */
- function getS() {
- var type = NodeType.SType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, tokens[pos].ws_last);
-
- pos = tokens[pos].ws_last + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a space or a comment.
- * @param {Number} i Token's index number
- * @returns {Number} Number of similar (space or comment) tokens
- * in a row starting with the given token.
- */
- function checkSC(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
- var lsc = 0;
-
- while (i < tokensLength) {
- if (!(l = checkS(i)) && !(l = checkCommentML(i)) && !(l = checkCommentSL(i))) break;
- i += l;
- lsc += l;
- }
-
- return lsc || 0;
- }
-
- /**
- * Get node with spaces and comments
- * @returns {Array} Array containing nodes with spaces (if there are any)
- * and nodes with comments (if there are any):
- * `[['s', x]*, ['comment', y]*]` where `x` is a string of spaces
- * and `y` is a comment's text (without `/*` and `* /`).
- */
- function getSC() {
- var sc = [];
-
- if (pos >= tokensLength) return sc;
-
- while (pos < tokensLength) {
- if (checkS(pos)) sc.push(getS());else if (checkCommentML(pos)) sc.push(getCommentML());else if (checkCommentSL(pos)) sc.push(getCommentSL());else break;
- }
-
- return sc;
- }
-
- /**
- * Check if token is part of a hexadecimal number (e.g. `#fff`) inside
- * a simple selector
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkShash(i) {
- var l = void 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.NumberSign) return 0;
-
- if (l = checkInterpolatedVariable(i + 1) || checkIdent(i + 1)) return l + 1;else return 0;
- }
-
- /**
- * Get node with a hexadecimal number (e.g. `#fff`) inside a simple
- * selector
- * @returns {Array} `['shash', x]` where `x` is a hexadecimal number
- * converted to string (without `#`, e.g. `fff`)
- */
- function getShash() {
- var type = NodeType.ShashType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `#`.
- pos++;
-
- if (checkInterpolatedVariable(pos)) content.push(getInterpolatedVariable());else content.push(getIdent());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a string (text wrapped in quotes)
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is part of a string, `0` if not
- */
- function checkString(i) {
- if (i >= tokensLength) {
- return 0;
- }
-
- if (tokens[i].type === TokenType.StringSQ || tokens[i].type === TokenType.StringDQ) {
- return 1;
- }
-
- return 0;
- }
-
- /**
- * Get string's node
- * @returns {Array} `['string', x]` where `x` is a string (including
- * quotes).
- */
- function getString() {
- var type = NodeType.StringType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Validate stylesheet: it should consist of any number (0 or more) of
- * rulesets (sets of rules with selectors), @-rules, whitespaces or
- * comments.
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkStylesheet(i) {
- var start = i;
- var l = void 0;
-
- // Check every token:
- while (i < tokensLength) {
- if (l = checkSC(i) || checkRuleset(i) || checkDeclaration(i) || checkDeclDelim(i) || checkAtrule(i) || checkMixin(i)) i += l;else throwError(i);
- }
-
- return i - start;
- }
-
- /**
- * @returns {Array} `['stylesheet', x]` where `x` is all stylesheet's
- * nodes.
- */
- function getStylesheet() {
- var type = NodeType.StylesheetType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- while (pos < tokensLength) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkRuleset(pos)) content.push(getRuleset());else if (checkDeclaration(pos)) content.push(getDeclaration());else if (checkDeclDelim(pos)) content.push(getDeclDelim());else if (checkAtrule(pos)) content.push(getAtrule());else if (checkMixin(pos)) content.push(getMixin());else throwError(pos);
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkTset(i) {
- var l = void 0;
-
- if (l = checkVhash(i)) tokens[i].tset_child = 1;else if (l = checkAny(i)) tokens[i].tset_child = 2;else if (l = checkSC(i)) tokens[i].tset_child = 3;else if (l = checkOperator(i)) tokens[i].tset_child = 4;
-
- return l;
- }
-
- /**
- * @returns {Array}
- */
- function getTset() {
- var childType = tokens[pos].tset_child;
-
- if (childType === 1) return getVhash();
- if (childType === 2) return getAny();
- if (childType === 3) return getSC();
- if (childType === 4) return getOperator();
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkTsets(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- while (l = checkTset(i)) {
- i += l;
- }
-
- return i - start;
- }
-
- /**
- * @returns {Array}
- */
- function getTsets() {
- var content = [];
- var t = void 0;
-
- while (checkTset(pos)) {
- t = getTset();
- if (typeof t.content === 'string') content.push(t);else content = content.concat(t);
- }
-
- return content;
- }
-
- /**
- * Check if token is an unary (arithmetical) sign (`+` or `-`)
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is an unary sign, `0` if not
- */
- function checkUnary(i) {
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.HyphenMinus || tokens[i].type === TokenType.PlusSign) {
- return 1;
- }
-
- return 0;
- }
-
- /**
- * Get node with an unary (arithmetical) sign (`+` or `-`)
- * @returns {Array} `['unary', x]` where `x` is an unary sign
- * converted to string.
- */
- function getUnary() {
- var type = NodeType.OperatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a unicode range (single or multiple <urange> nodes)
- * @param {number} i Token's index
- * @return {number} Unicode range node's length
- */
- function checkUnicodeRange(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkUrange(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var spaceBefore = checkSC(i);
- var comma = checkDelim(i + spaceBefore);
- if (!comma) break;
-
- var spaceAfter = checkSC(i + spaceBefore + comma);
- if (l = checkUrange(i + spaceBefore + comma + spaceAfter)) {
- i += spaceBefore + comma + spaceAfter + l;
- } else break;
- }
-
- return i - start;
- }
-
- /**
- * Get a unicode range node
- * @return {Node}
- */
- function getUnicodeRange() {
- var type = NodeType.UnicodeRangeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- while (pos < tokensLength) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkDelim(pos)) content.push(getDelim());else if (checkUrange(pos)) content.push(getUrange());else break;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is unit
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkUnit(i) {
- var units = ['em', 'ex', 'ch', 'rem', 'vh', 'vw', 'vmin', 'vmax', 'px', 'mm', 'q', 'cm', 'in', 'pt', 'pc', 'deg', 'grad', 'rad', 'turn', 's', 'ms', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'];
-
- return units.indexOf(tokens[i].value) !== -1 ? 1 : 0;
- }
-
- /**
- * Get unit node of type ident
- * @return {Node} An ident node containing the unit value
- */
- function getUnit() {
- var type = NodeType.IdentType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a u-range (part of a unicode-range)
- * (1) `U+416`
- * (2) `U+400-4ff`
- * (3) `U+4??`
- * @param {number} i Token's index
- * @return {number} Urange node's length
- */
- function checkUrange(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- // Check for unicode prefix (u+ or U+)
- if (tokens[i].value === 'U' || tokens[i].value === 'u') i += 1;else return 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].value === '+') i += 1;else return 0;
-
- while (i < tokensLength) {
- if (l = checkIdent(i)) i += l;else if (l = checkNumber(i)) i += l;else if (l = checkUnary(i)) i += l;else if (l = _checkUnicodeWildcard(i)) i += l;else break;
- }
-
- tokens[start].urangeEnd = i - 1;
-
- return i - start;
- }
-
- /**
- * Get a u-range node (part of a unicode-range)
- * @return {Node}
- */
- function getUrange() {
- var startPos = pos;
- var type = NodeType.UrangeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content = joinValues(startPos, tokens[startPos].urangeEnd);
- pos = tokens[startPos].urangeEnd + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check for unicode wildcard characters `?`
- * @param {number} i Token's index
- * @return {number} Wildcard length
- */
- function _checkUnicodeWildcard(i) {
- var start = i;
-
- if (i >= tokensLength) return 0;
-
- while (i < tokensLength) {
- if (tokens[i].type === TokenType.QuestionMark) i += 1;else break;
- }
-
- return i - start;
- }
-
- /**
- * Check if token is part of URI (e.g. `url('/css/styles.css')`)
- * @param {Number} i Token's index number
- * @returns {Number} Length of URI
- */
- function checkUri(i) {
- var start = i;
-
- if (i >= tokensLength || tokens[i++].value !== 'url' || i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- return tokens[i].right - start + 1;
- }
-
- /**
- * Get node with URI
- * @returns {Array} `['uri', x]` where `x` is URI's nodes (without `url`
- * and braces, e.g. `['string', ''/css/styles.css'']`).
- */
- function getUri() {
- var startPos = pos;
- var uriExcluding = {};
- var uri = void 0;
- var token = void 0;
- var l = void 0;
- var raw = void 0;
-
- pos += 2;
-
- uriExcluding[TokenType.Space] = 1;
- uriExcluding[TokenType.Tab] = 1;
- uriExcluding[TokenType.Newline] = 1;
- uriExcluding[TokenType.LeftParenthesis] = 1;
- uriExcluding[TokenType.RightParenthesis] = 1;
-
- if (checkUri1(pos)) {
- uri = [].concat(getSC()).concat([getString()]).concat(getSC());
- } else {
- uri = getSC();
- l = checkExcluding(uriExcluding, pos);
- token = tokens[pos];
- raw = newNode(NodeType.RawType, joinValues(pos, pos + l), token.ln, token.col);
-
- uri.push(raw);
-
- pos += l + 1;
-
- uri = uri.concat(getSC());
- }
-
- token = tokens[startPos];
- var line = token.ln;
- var column = token.col;
- var end = getLastPosition(uri, line, column, 1);
- pos++;
-
- return newNode(NodeType.UriType, uri, line, column, end);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkUri1(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].type !== TokenType.StringDQ && tokens[i].type !== TokenType.StringSQ) {
- return 0;
- }
-
- i++;
-
- if (l = checkSC(i)) i += l;
-
- return i - start;
- }
-
- /**
- * Check if token is part of a value
- * @param {Number} i Token's index number
- * @returns {Number} Length of the value
- */
- function checkValue(i) {
- var start = i;
- var l = void 0;
- var s = void 0;
- var _i = void 0;
-
- while (i < tokensLength) {
- s = checkSC(i);
- _i = i + s;
-
- if (l = _checkValue(_i)) i += l + s;
- if (!l || checkBlock(_i)) break;
- }
-
- tokens[start].value_end = i;
-
- return i - start;
- }
-
- /**
- * @returns {Array}
- */
- function getValue() {
- var type = NodeType.ValueType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var end = tokens[pos].value_end;
- var content = [];
- var _pos = void 0;
- var s = void 0;
-
- while (pos < end) {
- s = checkSC(pos);
- _pos = pos + s;
-
- if (!_checkValue(_pos)) break;
-
- if (s) content = content.concat(getSC());
- content.push(_getValue());
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function _checkValue(i) {
- var l = void 0;
-
- if (l = checkEscapedString(i)) tokens[i].value_child = 1;else if (l = checkInterpolatedVariable(i)) tokens[i].value_child = 2;else if (l = checkVariable(i)) tokens[i].value_child = 3;else if (l = checkVhash(i)) tokens[i].value_child = 4;else if (l = checkBlock(i)) tokens[i].value_child = 5;else if (l = checkProgid(i)) tokens[i].value_child = 6;else if (l = checkAny(i)) tokens[i].value_child = 7;else if (l = checkAtkeyword(i)) tokens[i].value_child = 8;else if (l = checkOperator(i)) tokens[i].value_child = 9;else if (l = checkImportant(i)) tokens[i].value_child = 10;
-
- return l;
- }
-
- /**
- * @returns {Array}
- */
- function _getValue() {
- var childType = tokens[pos].value_child;
- if (childType === 1) return getEscapedString();
- if (childType === 2) return getInterpolatedVariable();
- if (childType === 3) return getVariable();
- if (childType === 4) return getVhash();
- if (childType === 5) return getBlock();
- if (childType === 6) return getProgid();
- if (childType === 7) return getAny();
- if (childType === 8) return getAtkeyword();
- if (childType === 9) return getOperator();
- if (childType === 10) return getImportant();
- }
-
- /**
- * Check if token is part of LESS variable
- * @param {Number} i Token's index number
- * @returns {Number} Length of the variable
- */
- function checkVariable(i) {
- var l = void 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.CommercialAt) return 0;
-
- if (tokens[i - 1] && tokens[i - 1].type === TokenType.CommercialAt && tokens[i - 2] && tokens[i - 2].type === TokenType.CommercialAt) return 0;
-
- return (l = checkVariable(i + 1) || checkIdent(i + 1)) ? l + 1 : 0;
- }
-
- /**
- * Get node with a variable
- * @returns {Array} `['variable', ['ident', x]]` where `x` is
- * a variable name.
- */
- function getVariable() {
- var type = NodeType.VariableType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `$`.
- pos++;
-
- if (checkVariable(pos)) content.push(getVariable());else content.push(getIdent());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a variables list (e.g. `@rest...`).
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkVariablesList(i) {
- var d = 0; // Number of dots
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkVariable(i)) i += l;else return 0;
-
- while (tokens[i] && tokens[i].type === TokenType.FullStop) {
- d++;
- i++;
- }
-
- return d === 3 ? l + d : 0;
- }
-
- /**
- * Get node with a variables list
- * @returns {Array} `['variableslist', ['variable', ['ident', x]]]` where
- * `x` is a variable name.
- */
- function getVariablesList() {
- var type = NodeType.VariablesListType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getVariable()];
- var end = getLastPosition(content, line, column, 3);
-
- // Skip `...`.
- pos += 3;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a hexadecimal number (e.g. `#fff`) inside
- * some value
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkVhash(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- // Skip `#`.
- if (tokens[i].type === TokenType.NumberSign) i++;else return 0;
-
- if (l = checkNmName2(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a hexadecimal number (e.g. `#fff`) inside some value
- * @returns {Array} `['vhash', x]` where `x` is a hexadecimal number
- * converted to string (without `#`, e.g. `'fff'`).
- */
- function getVhash() {
- var type = NodeType.VhashType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `#`.
- pos++;
-
- var content = getNmName2();
- var end = getLastPosition(content, line, column + 1);
- return newNode(type, content, line, column, end);
- }
-
- function checkSelectorsGroup(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkSelector(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var spaceBefore = checkSC(i);
- var comma = checkDelim(i + spaceBefore);
- if (!comma) break;
-
- var spaceAfter = checkSC(i + spaceBefore + comma);
- if (l = checkSelector(i + spaceBefore + comma + spaceAfter)) {
- i += spaceBefore + comma + spaceAfter + l;
- } else break;
- }
-
- tokens[start].selectorsGroupEnd = i;
- return i - start;
- }
-
- function getSelectorsGroup() {
- var selectorsGroup = [];
- var selectorsGroupEnd = tokens[pos].selectorsGroupEnd;
-
- selectorsGroup.push(getSelector());
-
- while (pos < selectorsGroupEnd) {
- selectorsGroup = selectorsGroup.concat(getSC(), getDelim(), getSC(), getSelector());
- }
-
- return selectorsGroup;
- }
-
- function checkSelector(i) {
- var l = void 0;
-
- if (l = checkSelector1(i)) tokens[i].selectorType = 1;else if (l = checkSelector2(i)) tokens[i].selectorType = 2;
-
- return l;
- }
-
- function getSelector() {
- var selectorType = tokens[pos].selectorType;
- if (selectorType === 1) return getSelector1();else return getSelector2();
- }
-
- /**
- * Checks for selector which starts with a compound selector.
- */
- function checkSelector1(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkCompoundSelector(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var space = checkSC(i);
- var comma = checkCombinator(i + space);
- if (!space && !comma) break;
-
- if (comma) {
- i += space + comma;
- space = checkSC(i);
- }
-
- if (l = checkCompoundSelector(i + space)) i += space + l;else break;
- }
-
- tokens[start].selectorEnd = i;
- return i - start;
- }
-
- function getSelector1() {
- var type = NodeType.SelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var selectorEnd = token.selectorEnd;
- var content = getCompoundSelector();
-
- while (pos < selectorEnd) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkCombinator(pos)) content.push(getCombinator());else if (checkCompoundSelector(pos)) content = content.concat(getCompoundSelector());
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Checks for a selector that starts with a combinator.
- */
- function checkSelector2(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkCombinator(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var spaceBefore = checkSC(i);
- if (l = checkCompoundSelector(i + spaceBefore)) i += spaceBefore + l;else break;
-
- var spaceAfter = checkSC(i);
- var comma = checkCombinator(i + spaceAfter);
- if (!spaceAfter && !comma) break;
- if (comma) {
- i += spaceAfter + comma;
- }
- }
-
- tokens[start].selectorEnd = i;
- return i - start;
- }
-
- function getSelector2() {
- var type = NodeType.SelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var selectorEnd = token.selectorEnd;
- var content = [getCombinator()];
-
- while (pos < selectorEnd) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkCombinator(pos)) content.push(getCombinator());else if (checkCompoundSelector(pos)) content = content.concat(getCompoundSelector());
- }
-
- return newNode(type, content, line, column);
- }
-
- function checkCompoundSelector(i) {
- var l = void 0;
-
- if (l = checkCompoundSelector1(i)) {
- tokens[i].compoundSelectorType = 1;
- } else if (l = checkCompoundSelector2(i)) {
- tokens[i].compoundSelectorType = 2;
- }
-
- return l;
- }
-
- function getCompoundSelector() {
- var type = tokens[pos].compoundSelectorType;
- if (type === 1) return getCompoundSelector1();
- if (type === 2) return getCompoundSelector2();
- }
-
- function checkCompoundSelector1(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkUniversalSelector(i) || checkTypeSelector(i) || checkParentSelectorWithExtension(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var _l2 = checkShash(i) || checkClass(i) || checkAttributeSelector(i) || checkPseudo(i);
- if (_l2) i += _l2;else break;
- }
-
- tokens[start].compoundSelectorEnd = i;
-
- return i - start;
- }
-
- function getCompoundSelector1() {
- var sequence = [];
- var compoundSelectorEnd = tokens[pos].compoundSelectorEnd;
-
- if (checkUniversalSelector(pos)) sequence.push(getUniversalSelector());else if (checkTypeSelector(pos)) sequence.push(getTypeSelector());else if (checkParentSelectorWithExtension(pos)) sequence = sequence.concat(getParentSelectorWithExtension());
-
- while (pos < compoundSelectorEnd) {
- if (checkShash(pos)) sequence.push(getShash());else if (checkClass(pos)) sequence.push(getClass());else if (checkAttributeSelector(pos)) sequence.push(getAttributeSelector());else if (checkPseudo(pos)) sequence.push(getPseudo());
- }
-
- return sequence;
- }
-
- function checkCompoundSelector2(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
-
- while (i < tokensLength) {
- var l = checkShash(i) || checkClass(i) || checkAttributeSelector(i) || checkPseudo(i);
- if (l) i += l;else break;
- }
-
- tokens[start].compoundSelectorEnd = i;
-
- return i - start;
- }
-
- function getCompoundSelector2() {
- var sequence = [];
- var compoundSelectorEnd = tokens[pos].compoundSelectorEnd;
-
- while (pos < compoundSelectorEnd) {
- if (checkShash(pos)) sequence.push(getShash());else if (checkClass(pos)) sequence.push(getClass());else if (checkAttributeSelector(pos)) sequence.push(getAttributeSelector());else if (checkPseudo(pos)) sequence.push(getPseudo());
- }
-
- return sequence;
- }
-
- function checkUniversalSelector(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkNamePrefix(i)) i += l;
-
- if (tokens[i].type === TokenType.Asterisk) i++;else return 0;
-
- return i - start;
- }
-
- function getUniversalSelector() {
- var type = NodeType.UniversalSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var end = void 0;
-
- if (checkNamePrefix(pos)) {
- content.push(getNamePrefix());
- end = getLastPosition(content, line, column, 1);
- }
-
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- function checkTypeSelector(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkNamePrefix(i)) i += l;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getTypeSelector() {
- var type = NodeType.TypeSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (checkNamePrefix(pos)) content.push(getNamePrefix());
-
- content.push(getIdent());
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeSelector(i) {
- var l = void 0;
- if (l = checkAttributeSelector1(i)) tokens[i].attributeSelectorType = 1;else if (l = checkAttributeSelector2(i)) tokens[i].attributeSelectorType = 2;
-
- return l;
- }
-
- function getAttributeSelector() {
- var type = tokens[pos].attributeSelectorType;
- if (type === 1) return getAttributeSelector1();else return getAttributeSelector2();
- }
-
- /**
- * (1) `[panda=nani]`
- * (2) `[panda='nani']`
- * (3) `[panda='nani' i]`
- *
- */
- function checkAttributeSelector1(i) {
- var start = i;
-
- if (tokens[i].type === TokenType.LeftSquareBracket) i++;else return 0;
-
- var l = void 0;
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeName(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeMatch(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeValue(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeFlags(i)) {
- i += l;
- if (l = checkSC(i)) i += l;
- }
-
- if (tokens[i].type === TokenType.RightSquareBracket) i++;else return 0;
-
- return i - start;
- }
-
- function getAttributeSelector1() {
- var type = NodeType.AttributeSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `[`.
- pos++;
-
- content = content.concat(getSC(), getAttributeName(), getSC(), getAttributeMatch(), getSC(), getAttributeValue(), getSC());
-
- if (checkAttributeFlags(pos)) {
- content.push(getAttributeFlags());
- content = content.concat(getSC());
- }
-
- // Skip `]`.
- pos++;
-
- var end = getLastPosition(content, line, column, 1);
- return newNode(type, content, line, column, end);
- }
-
- /**
- * (1) `[panda]`
- */
- function checkAttributeSelector2(i) {
- var start = i;
-
- if (tokens[i].type === TokenType.LeftSquareBracket) i++;else return 0;
-
- var l = void 0;
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeName(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].type === TokenType.RightSquareBracket) i++;else return 0;
-
- return i - start;
- }
-
- function getAttributeSelector2() {
- var type = NodeType.AttributeSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `[`.
- pos++;
-
- content = content.concat(getSC(), getAttributeName(), getSC());
-
- // Skip `]`.
- pos++;
-
- var end = getLastPosition(content, line, column, 1);
- return newNode(type, content, line, column, end);
- }
-
- function checkAttributeName(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkNamePrefix(i)) i += l;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getAttributeName() {
- var type = NodeType.AttributeNameType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (checkNamePrefix(pos)) content.push(getNamePrefix());
- content.push(getIdent());
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeMatch(i) {
- var l = void 0;
- if (l = checkAttributeMatch1(i)) tokens[i].attributeMatchType = 1;else if (l = checkAttributeMatch2(i)) tokens[i].attributeMatchType = 2;
-
- return l;
- }
-
- function getAttributeMatch() {
- var type = tokens[pos].attributeMatchType;
- if (type === 1) return getAttributeMatch1();else return getAttributeMatch2();
- }
-
- function checkAttributeMatch1(i) {
- var start = i;
-
- var type = tokens[i].type;
- if (type === TokenType.Tilde || type === TokenType.VerticalLine || type === TokenType.CircumflexAccent || type === TokenType.DollarSign || type === TokenType.Asterisk) i++;else return 0;
-
- if (tokens[i].type === TokenType.EqualsSign) i++;else return 0;
-
- return i - start;
- }
-
- function getAttributeMatch1() {
- var type = NodeType.AttributeMatchType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = tokens[pos].value + tokens[pos + 1].value;
- pos += 2;
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeMatch2(i) {
- if (tokens[i].type === TokenType.EqualsSign) return 1;else return 0;
- }
-
- function getAttributeMatch2() {
- var type = NodeType.AttributeMatchType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '=';
-
- pos++;
- return newNode(type, content, line, column);
- }
-
- function checkAttributeValue(i) {
- return checkString(i) || checkIdent(i);
- }
-
- function getAttributeValue() {
- var type = NodeType.AttributeValueType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (checkString(pos)) content.push(getString());else content.push(getIdent());
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeFlags(i) {
- return checkIdent(i);
- }
-
- function getAttributeFlags() {
- var type = NodeType.AttributeFlagsType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getIdent()];
-
- return newNode(type, content, line, column);
- }
-
- function checkNamePrefix(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
- if (l = checkNamePrefix1(i)) tokens[i].namePrefixType = 1;else if (l = checkNamePrefix2(i)) tokens[i].namePrefixType = 2;
-
- return l;
- }
-
- function getNamePrefix() {
- var type = tokens[pos].namePrefixType;
- if (type === 1) return getNamePrefix1();else return getNamePrefix2();
- }
-
- /**
- * (1) `panda|`
- * (2) `panda<comment>|`
- */
- function checkNamePrefix1(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkNamespacePrefix(i)) i += l;else return 0;
-
- if (l = checkCommentML(i)) i += l;
-
- if (l = checkNamespaceSeparator(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getNamePrefix1() {
- var type = NodeType.NamePrefixType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content.push(getNamespacePrefix());
-
- if (checkCommentML(pos)) content.push(getCommentML());
-
- content.push(getNamespaceSeparator());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `|`
- */
- function checkNamePrefix2(i) {
- return checkNamespaceSeparator(i);
- }
-
- function getNamePrefix2() {
- var type = NodeType.NamePrefixType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getNamespaceSeparator()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `*`
- * (2) `panda`
- */
- function checkNamespacePrefix(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
-
- if (tokens[i].type === TokenType.Asterisk) return 1;else if (l = checkIdent(i)) return l;else return 0;
- }
-
- function getNamespacePrefix() {
- var type = NodeType.NamespacePrefixType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (token.type === TokenType.Asterisk) {
- var asteriskNode = newNode(NodeType.IdentType, '*', line, column);
- content.push(asteriskNode);
- pos++;
- } else if (checkIdent(pos)) content.push(getIdent());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `|`
- */
- function checkNamespaceSeparator(i) {
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type !== TokenType.VerticalLine) return 0;
-
- // Return false if `|=` - [attr|=value]
- if (tokens[i + 1] && tokens[i + 1].type === TokenType.EqualsSign) return 0;
-
- return 1;
- }
-
- function getNamespaceSeparator() {
- var type = NodeType.NamespaceSeparatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '|';
-
- pos++;
- return newNode(type, content, line, column);
- }
-
- module.exports = function (_tokens, context) {
- tokens = _tokens;
- tokensLength = tokens.length;
- pos = 0;
-
- return contexts[context]();
- };
-
-/***/ }),
-/* 20 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- module.exports = function (css, tabSize) {
- var TokenType = __webpack_require__(13);
-
- var tokens = [];
- var urlMode = false;
- var c = void 0; // Current character
- var cn = void 0; // Next character
- var pos = 0;
- var tn = 0;
- var ln = 1;
- var col = 1;
-
- var Punctuation = {
- ' ': TokenType.Space,
- '\n': TokenType.Newline,
- '\r': TokenType.Newline,
- '\t': TokenType.Tab,
- '!': TokenType.ExclamationMark,
- '"': TokenType.QuotationMark,
- '#': TokenType.NumberSign,
- '$': TokenType.DollarSign,
- '%': TokenType.PercentSign,
- '&': TokenType.Ampersand,
- '\'': TokenType.Apostrophe,
- '(': TokenType.LeftParenthesis,
- ')': TokenType.RightParenthesis,
- '*': TokenType.Asterisk,
- '+': TokenType.PlusSign,
- ',': TokenType.Comma,
- '-': TokenType.HyphenMinus,
- '.': TokenType.FullStop,
- '/': TokenType.Solidus,
- ':': TokenType.Colon,
- ';': TokenType.Semicolon,
- '<': TokenType.LessThanSign,
- '=': TokenType.EqualsSign,
- '>': TokenType.GreaterThanSign,
- '?': TokenType.QuestionMark,
- '@': TokenType.CommercialAt,
- '[': TokenType.LeftSquareBracket,
- ']': TokenType.RightSquareBracket,
- '^': TokenType.CircumflexAccent,
- '_': TokenType.LowLine,
- '{': TokenType.LeftCurlyBracket,
- '|': TokenType.VerticalLine,
- '}': TokenType.RightCurlyBracket,
- '~': TokenType.Tilde
- };
-
- /**
- * Add a token to the token list
- * @param {string} type
- * @param {string} value
- */
- function pushToken(type, value, column) {
- tokens.push({
- tn: tn++,
- ln: ln,
- col: column,
- type: type,
- value: value
- });
- }
-
- /**
- * Check if a character is a decimal digit
- * @param {string} c Character
- * @returns {boolean}
- */
- function isDecimalDigit(c) {
- return '0123456789'.indexOf(c) >= 0;
- }
-
- /**
- * Parse spaces
- * @param {string} css Unparsed part of CSS string
- */
- function parseSpaces(css) {
- var start = pos;
-
- // Read the string until we meet a non-space character:
- for (; pos < css.length; pos++) {
- if (css.charAt(pos) !== ' ') break;
- }
-
- // Add a substring containing only spaces to tokens:
- pushToken(TokenType.Space, css.substring(start, pos--), col);
- col += pos - start;
- }
-
- /**
- * Parse a string within quotes
- * @param {string} css Unparsed part of CSS string
- * @param {string} q Quote (either `'` or `"`)
- */
- function parseString(css, q) {
- var start = pos;
-
- // Read the string until we meet a matching quote:
- for (pos++; pos < css.length; pos++) {
- // Skip escaped quotes:
- if (css.charAt(pos) === '\\') pos++;else if (css.charAt(pos) === q) break;
- }
-
- // Add the string (including quotes) to tokens:
- var type = q === '"' ? TokenType.StringDQ : TokenType.StringSQ;
- pushToken(type, css.substring(start, pos + 1), col);
- col += pos - start;
- }
-
- /**
- * Parse numbers
- * @param {string} css Unparsed part of CSS string
- */
- function parseDecimalNumber(css) {
- var start = pos;
-
- // Read the string until we meet a character that's not a digit:
- for (; pos < css.length; pos++) {
- if (!isDecimalDigit(css.charAt(pos))) break;
- }
-
- // Add the number to tokens:
- pushToken(TokenType.DecimalNumber, css.substring(start, pos--), col);
- col += pos - start;
- }
-
- /**
- * Parse identifier
- * @param {string} css Unparsed part of CSS string
- */
- function parseIdentifier(css) {
- var start = pos;
-
- // Skip all opening slashes:
- while (css.charAt(pos) === '/') {
- pos++;
- } // Read the string until we meet a punctuation mark:
- for (; pos < css.length; pos++) {
- // Skip all '\':
- if (css.charAt(pos) === '\\') pos++;else if (css.charAt(pos) in Punctuation) break;
- }
-
- var ident = css.substring(start, pos--);
-
- // Enter url mode if parsed substring is `url`:
- if (!urlMode && ident === 'url' && css.charAt(pos + 1) === '(') {
- urlMode = true;
- }
-
- // Add identifier to tokens:
- pushToken(TokenType.Identifier, ident, col);
- col += pos - start;
- }
-
- /**
- * Parse a multiline comment
- * @param {string} css Unparsed part of CSS string
- */
- function parseMLComment(css) {
- var start = pos;
-
- // Read the string until we meet `*/`.
- // Since we already know first 2 characters (`/*`), start reading
- // from `pos + 2`:
- for (pos = pos + 2; pos < css.length; pos++) {
- if (css.charAt(pos) === '*' && css.charAt(pos + 1) === '/') {
- pos++;
- break;
- }
- }
-
- // Add full comment (including `/*` and `*/`) to the list of tokens:
- var comment = css.substring(start, pos + 1);
- pushToken(TokenType.CommentML, comment, col);
-
- var newlines = comment.split('\n');
- if (newlines.length > 1) {
- ln += newlines.length - 1;
- col = newlines[newlines.length - 1].length;
- } else {
- col += pos - start;
- }
- }
-
- /**
- * Parse a single line comment
- * @param {string} css Unparsed part of CSS string
- */
- function parseSLComment(css) {
- var start = pos;
-
- // Read the string until we meet line break.
- // Since we already know first 2 characters (`//`), start reading
- // from `pos + 2`:
- for (pos += 2; pos < css.length; pos++) {
- if (css.charAt(pos) === '\n' || css.charAt(pos) === '\r') {
- break;
- }
- }
-
- // Add comment (including `//` and line break) to the list of tokens:
- pushToken(TokenType.CommentSL, css.substring(start, pos--), col);
- col += pos - start;
- }
-
- /**
- * Convert a CSS string to a list of tokens
- * @param {string} css CSS string
- * @returns {Array} List of tokens
- * @private
- */
- function getTokens(css) {
- // Parse string, character by character:
- for (pos = 0; pos < css.length; col++, pos++) {
- c = css.charAt(pos);
- cn = css.charAt(pos + 1);
-
- // If we meet `/*`, it's a start of a multiline comment.
- // Parse following characters as a multiline comment:
- if (c === '/' && cn === '*') {
- parseMLComment(css);
- }
-
- // If we meet `//` and it is not a part of url:
- else if (!urlMode && c === '/' && cn === '/') {
- // If we're currently inside a block, treat `//` as a start
- // of identifier. Else treat `//` as a start of a single-line
- // comment:
- parseSLComment(css);
- }
-
- // If current character is a double or single quote, it's a start
- // of a string:
- else if (c === '"' || c === "'") {
- parseString(css, c);
- }
-
- // If current character is a space:
- else if (c === ' ') {
- parseSpaces(css);
- }
-
- // If current character is a punctuation mark:
- else if (c in Punctuation) {
- // Add it to the list of tokens:
- pushToken(Punctuation[c], c, col);
- if (c === '\n' || c === '\r') {
- ln++;
- col = 0;
- } // Go to next line
- if (c === ')') urlMode = false; // Exit url mode
- else if (c === '\t' && tabSize > 1) col += tabSize - 1;
- }
-
- // If current character is a decimal digit:
- else if (isDecimalDigit(c)) {
- parseDecimalNumber(css);
- }
-
- // If current character is anything else:
- else {
- parseIdentifier(css);
- }
- }
-
- return tokens;
- }
-
- return getTokens(css);
- };
-
-/***/ }),
-/* 21 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- exports.__esModule = true;
- exports.default = {
- mark: __webpack_require__(22),
- parse: __webpack_require__(23),
- stringify: __webpack_require__(5),
- tokenizer: __webpack_require__(24)
- };
- module.exports = exports['default'];
-
-/***/ }),
-/* 22 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- var TokenType = __webpack_require__(13);
-
- module.exports = function () {
- /**
- * Mark whitespaces and comments
- */
- function markSC(tokens) {
- var tokensLength = tokens.length;
- var ws = -1; // Flag for whitespaces
- var sc = -1; // Flag for whitespaces and comments
- var t = void 0; // Current token
-
- // For every token in the token list, mark spaces and line breaks
- // as spaces (set both `ws` and `sc` flags). Mark multiline comments
- // with `sc` flag.
- // If there are several spaces or tabs or line breaks or multiline
- // comments in a row, group them: take the last one's index number
- // and save it to the first token in the group as a reference:
- // e.g., `ws_last = 7` for a group of whitespaces or `sc_last = 9`
- // for a group of whitespaces and comments.
- for (var i = 0; i < tokensLength; i++) {
- t = tokens[i];
- switch (t.type) {
- case TokenType.Space:
- case TokenType.Tab:
- t.ws = true;
- t.sc = true;
-
- if (ws === -1) ws = i;
- if (sc === -1) sc = i;
-
- break;
- case TokenType.Newline:
- t.ws = true;
- t.sc = true;
-
- ws = ws === -1 ? i : ws;
- sc = sc === -1 ? i : ws;
-
- tokens[ws].ws_last = i - 1;
- tokens[sc].sc_last = i - 1;
- tokens[i].ws_last = i;
- tokens[i].sc_last = i;
-
- ws = -1;
- sc = -1;
-
- break;
- case TokenType.CommentML:
- case TokenType.CommentSL:
- if (ws !== -1) {
- tokens[ws].ws_last = i - 1;
- ws = -1;
- }
-
- t.sc = true;
-
- break;
- default:
- if (ws !== -1) {
- tokens[ws].ws_last = i - 1;
- ws = -1;
- }
-
- if (sc !== -1) {
- tokens[sc].sc_last = i - 1;
- sc = -1;
- }
- }
- }
-
- if (ws !== -1) tokens[ws].ws_last = i - 1;
- if (sc !== -1) tokens[sc].sc_last = i - 1;
- }
-
- /**
- * Pair brackets
- */
- function markBrackets(tokens) {
- var tokensLength = tokens.length;
- var ps = []; // Parentheses
- var sbs = []; // Square brackets
- var cbs = []; // Curly brackets
- var t = void 0; // Current token
-
- // For every token in the token list, if we meet an opening (left)
- // bracket, push its index number to a corresponding array.
- // If we then meet a closing (right) bracket, look at the corresponding
- // array. If there are any elements (records about previously met
- // left brackets), take a token of the last left bracket (take
- // the last index number from the array and find a token with
- // this index number) and save right bracket's index as a reference:
- for (var i = 0; i < tokensLength; i++) {
- t = tokens[i];
- switch (t.type) {
- case TokenType.LeftParenthesis:
- ps.push(i);
- break;
- case TokenType.RightParenthesis:
- if (ps.length) {
- t.left = ps.pop();
- tokens[t.left].right = i;
- }
- break;
- case TokenType.LeftSquareBracket:
- sbs.push(i);
- break;
- case TokenType.RightSquareBracket:
- if (sbs.length) {
- t.left = sbs.pop();
- tokens[t.left].right = i;
- }
- break;
- case TokenType.LeftCurlyBracket:
- cbs.push(i);
- break;
- case TokenType.RightCurlyBracket:
- if (cbs.length) {
- t.left = cbs.pop();
- tokens[t.left].right = i;
- }
- break;
- }
- }
- }
-
- function markBlocks(tokens) {
- var i = 0;
- var l = tokens.length;
- var lines = [];
- var whitespaceOnlyLines = [];
-
- for (i = 0; i < l; i++) {
- var lineStart = i;
- var currentLineIndent = 0;
-
- // Get all spaces.
- while (i < l && (tokens[i].type === TokenType.Space || tokens[i].type === TokenType.Tab)) {
- currentLineIndent += tokens[i].value.length;
- i++;
- }
-
- lines.push([lineStart, currentLineIndent]);
-
- var x = i;
- while (i < l && tokens[i].type !== TokenType.Newline) {
- i++;
- }
-
- if (x === i) {
- whitespaceOnlyLines.push(lines.length - 1);
- }
- }
-
- var levels = [0];
- var blockStarts = [];
-
- for (i = 0; i < lines.length; i++) {
- var line = lines[i];
- var token = line[0];
- var indent = line[1];
- var lastLevel = levels[levels.length - 1];
-
- if (indent > lastLevel) {
- blockStarts.push(token);
- levels.push(indent);
- } else {
- // Check if line is whitespace-only.
- var p = i;
-
- while (true) {
- if (whitespaceOnlyLines.indexOf(p) === -1) break;
- p++;
- }
-
- if (i === p && indent === lastLevel) continue;
-
- if (!lines[p]) {
- continue;
- }
-
- indent = lines[p][1];
-
- if (indent === lastLevel) {
- i = p;
- continue;
- }
-
- if (indent > lastLevel) {
- blockStarts.push(token);
- levels.push(lines[p][1]);
- i = p;
- continue;
- }
-
- while (true) {
- var _lastLevel = levels.pop();
- if (indent < _lastLevel) {
- var start = blockStarts.pop();
- tokens[start].block_end = token - 1;
- } else {
- levels.push(indent);
- break;
- }
- }
- }
- }
-
- blockStarts.forEach(function (start) {
- tokens[start].block_end = tokens.length - 1;
- });
- }
-
- return function (tokens) {
- markBrackets(tokens);
- markSC(tokens);
- markBlocks(tokens);
- };
- }();
-
-/***/ }),
-/* 23 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- var Node = __webpack_require__(1);
- var NodeType = __webpack_require__(15);
- var TokenType = __webpack_require__(13);
-
- var tokens = void 0;
- var tokensLength = void 0;
- var pos = void 0;
-
- var contexts = {
- 'arguments': function _arguments() {
- return checkArguments(pos) && getArguments();
- },
- 'atkeyword': function atkeyword() {
- return checkAtkeyword(pos) && getAtkeyword();
- },
- 'atrule': function atrule() {
- return checkAtrule(pos) && getAtrule();
- },
- 'attributeSelector': function attributeSelector() {
- return checkAttributeSelector(pos) && getAttributeSelector();
- },
- 'block': function block() {
- return checkBlock(pos) && getBlock();
- },
- 'brackets': function brackets() {
- return checkBrackets(pos) && getBrackets();
- },
- 'class': function _class() {
- return checkClass(pos) && getClass();
- },
- 'combinator': function combinator() {
- return checkCombinator(pos) && getCombinator();
- },
- 'commentML': function commentML() {
- return checkCommentML(pos) && getCommentML();
- },
- 'commentSL': function commentSL() {
- return checkCommentSL(pos) && getCommentSL();
- },
- 'condition': function condition() {
- return checkCondition(pos) && getCondition();
- },
- 'conditionalStatement': function conditionalStatement() {
- return checkConditionalStatement(pos) && getConditionalStatement();
- },
- 'declaration': function declaration() {
- return checkDeclaration(pos) && getDeclaration();
- },
- 'declDelim': function declDelim() {
- return checkDeclDelim(pos) && getDeclDelim();
- },
- 'default': function _default() {
- return checkDefault(pos) && getDefault();
- },
- 'delim': function delim() {
- return checkDelim(pos) && getDelim();
- },
- 'dimension': function dimension() {
- return checkDimension(pos) && getDimension();
- },
- 'expression': function expression() {
- return checkExpression(pos) && getExpression();
- },
- 'extend': function extend() {
- return checkExtend(pos) && getExtend();
- },
- 'function': function _function() {
- return checkFunction(pos) && getFunction();
- },
- 'global': function global() {
- return checkGlobal(pos) && getGlobal();
- },
- 'ident': function ident() {
- return checkIdent(pos) && getIdent();
- },
- 'important': function important() {
- return checkImportant(pos) && getImportant();
- },
- 'include': function include() {
- return checkInclude(pos) && getInclude();
- },
- 'interpolation': function interpolation() {
- return checkInterpolation(pos) && getInterpolation();
- },
- 'loop': function loop() {
- return checkLoop(pos) && getLoop();
- },
- 'mixin': function mixin() {
- return checkMixin(pos) && getMixin();
- },
- 'namespace': function namespace() {
- return checkNamespace(pos) && getNamespace();
- },
- 'number': function number() {
- return checkNumber(pos) && getNumber();
- },
- 'operator': function operator() {
- return checkOperator(pos) && getOperator();
- },
- 'optional': function optional() {
- return checkOptional(pos) && getOptional();
- },
- 'parentheses': function parentheses() {
- return checkParentheses(pos) && getParentheses();
- },
- 'parentselector': function parentselector() {
- return checkParentSelector(pos) && getParentSelector();
- },
- 'percentage': function percentage() {
- return checkPercentage(pos) && getPercentage();
- },
- 'placeholder': function placeholder() {
- return checkPlaceholder(pos) && getPlaceholder();
- },
- 'progid': function progid() {
- return checkProgid(pos) && getProgid();
- },
- 'property': function property() {
- return checkProperty(pos) && getProperty();
- },
- 'propertyDelim': function propertyDelim() {
- return checkPropertyDelim(pos) && getPropertyDelim();
- },
- 'pseudoc': function pseudoc() {
- return checkPseudoc(pos) && getPseudoc();
- },
- 'pseudoe': function pseudoe() {
- return checkPseudoe(pos) && getPseudoe();
- },
- 'ruleset': function ruleset() {
- return checkRuleset(pos) && getRuleset();
- },
- 's': function s() {
- return checkS(pos) && getS();
- },
- 'selector': function selector() {
- return checkSelector(pos) && getSelector();
- },
- 'shash': function shash() {
- return checkShash(pos) && getShash();
- },
- 'string': function string() {
- return checkString(pos) && getString();
- },
- 'stylesheet': function stylesheet() {
- return checkStylesheet(pos) && getStylesheet();
- },
- 'typeSelector': function typeSelector() {
- return checkTypeSelector(pos) && getTypeSelector();
- },
- 'unary': function unary() {
- return checkUnary(pos) && getUnary();
- },
- 'unicodeRange': function unicodeRange() {
- return checkUnicodeRange(pos) && getUnicodeRange();
- },
- 'universalSelector': function universalSelector() {
- return checkUniversalSelector(pos) && getUniversalSelector();
- },
- 'urange': function urange() {
- return checkUrange(pos) && getUrange();
- },
- 'uri': function uri() {
- return checkUri(pos) && getUri();
- },
- 'value': function value() {
- return checkValue(pos) && getValue();
- },
- 'variable': function variable() {
- return checkVariable(pos) && getVariable();
- },
- 'variableslist': function variableslist() {
- return checkVariablesList(pos) && getVariablesList();
- },
- 'vhash': function vhash() {
- return checkVhash(pos) && getVhash();
- }
- };
-
- /**
- * Stops parsing and display error.
- *
- * @param {number=} i Token's index number
- */
- function throwError(i) {
- var ln = tokens[i].ln;
-
- throw { line: ln, syntax: 'sass' };
- }
-
- /**
- * @param {number} start
- * @param {number} finish
- * @return {string}
- */
- function joinValues(start, finish) {
- var s = '';
-
- for (var i = start; i < finish + 1; i++) {
- s += tokens[i].value;
- }
-
- return s;
- }
-
- /**
- * @param {number} start
- * @param {number} num
- * @return {string}
- */
- function joinValues2(start, num) {
- if (start + num - 1 >= tokensLength) return;
-
- var s = '';
-
- for (var i = 0; i < num; i++) {
- s += tokens[start + i].value;
- }
-
- return s;
- }
-
- /**
- * @param {string|!Array} content
- * @param {number} line
- * @param {number} column
- * @param {number} colOffset
- */
- function getLastPosition(content, line, column, colOffset) {
- return typeof content === 'string' ? getLastPositionForString(content, line, column, colOffset) : getLastPositionForArray(content, line, column, colOffset);
- }
-
- /**
- * @param {string} content
- * @param {number} line
- * @param {number} column
- * @param {number} colOffset
- */
- function getLastPositionForString(content, line, column, colOffset) {
- var position = [];
-
- if (!content) {
- position = [line, column];
- if (colOffset) position[1] += colOffset - 1;
- return position;
- }
-
- var lastLinebreak = content.lastIndexOf('\n');
- var endsWithLinebreak = lastLinebreak === content.length - 1;
- var splitContent = content.split('\n');
- var linebreaksCount = splitContent.length - 1;
- var prevLinebreak = linebreaksCount === 0 || linebreaksCount === 1 ? -1 : content.length - splitContent[linebreaksCount - 1].length - 2;
-
- // Line:
- var offset = endsWithLinebreak ? linebreaksCount - 1 : linebreaksCount;
- position[0] = line + offset;
-
- // Column:
- if (endsWithLinebreak) {
- offset = prevLinebreak !== -1 ? content.length - prevLinebreak : content.length - 1;
- } else {
- offset = linebreaksCount !== 0 ? content.length - lastLinebreak - column - 1 : content.length - 1;
- }
- position[1] = column + offset;
-
- if (!colOffset) return position;
-
- if (endsWithLinebreak) {
- position[0]++;
- position[1] = colOffset;
- } else {
- position[1] += colOffset;
- }
-
- return position;
- }
-
- /**
- * @param {!Array} content
- * @param {number} line
- * @param {number} column
- * @param {number} colOffset
- */
- function getLastPositionForArray(content, line, column, colOffset) {
- var position = void 0;
-
- if (content.length === 0) {
- position = [line, column];
- } else {
- var c = content[content.length - 1];
- if (c.hasOwnProperty('end')) {
- position = [c.end.line, c.end.column];
- } else {
- position = getLastPosition(c.content, line, column);
- }
- }
-
- if (!colOffset) return position;
-
- if (tokens[pos - 1] && tokens[pos - 1].type !== 'Newline') {
- position[1] += colOffset;
- } else {
- position[0]++;
- position[1] = 1;
- }
-
- return position;
- }
-
- /**
- * @param {string} type
- * @param {string|!Array} content
- * @param {number} line
- * @param {number} column
- * @param {!Array} end
- */
- function newNode(type, content, line, column, end) {
- if (!end) end = getLastPosition(content, line, column);
- return new Node({
- type: type,
- content: content,
- start: {
- line: line,
- column: column
- },
- end: {
- line: end[0],
- column: end[1]
- },
- syntax: 'sass'
- });
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkAny(i) {
- var l = void 0;
-
- if (l = checkBrackets(i)) tokens[i].any_child = 1;else if (l = checkParentheses(i)) tokens[i].any_child = 2;else if (l = checkString(i)) tokens[i].any_child = 3;else if (l = checkVariablesList(i)) tokens[i].any_child = 4;else if (l = checkVariable(i)) tokens[i].any_child = 5;else if (l = checkPlaceholder(i)) tokens[i].any_child = 6;else if (l = checkPercentage(i)) tokens[i].any_child = 7;else if (l = checkDimension(i)) tokens[i].any_child = 8;else if (l = checkUnicodeRange(i)) tokens[i].any_child = 9;else if (l = checkNumber(i)) tokens[i].any_child = 10;else if (l = checkUri(i)) tokens[i].any_child = 11;else if (l = checkExpression(i)) tokens[i].any_child = 12;else if (l = checkFunctionsList(i)) tokens[i].any_child = 13;else if (l = checkFunction(i)) tokens[i].any_child = 14;else if (l = checkInterpolation(i)) tokens[i].any_child = 15;else if (l = checkIdent(i)) tokens[i].any_child = 16;else if (l = checkClass(i)) tokens[i].any_child = 17;else if (l = checkUnary(i)) tokens[i].any_child = 18;else if (l = checkParentSelector(i)) tokens[i].any_child = 19;else if (l = checkImportant(i)) tokens[i].any_child = 20;else if (l = checkGlobal(i)) tokens[i].any_child = 21;else if (l = checkDefault(i)) tokens[i].any_child = 22;else if (l = checkOptional(i)) tokens[i].any_child = 23;
-
- return l;
- }
-
- /**
- * @return {!Node}
- */
- function getAny() {
- var childType = tokens[pos].any_child;
-
- if (childType === 1) return getBrackets();
- if (childType === 2) return getParentheses();
- if (childType === 3) return getString();
- if (childType === 4) return getVariablesList();
- if (childType === 5) return getVariable();
- if (childType === 6) return getPlaceholder();
- if (childType === 7) return getPercentage();
- if (childType === 8) return getDimension();
- if (childType === 9) return getUnicodeRange();
- if (childType === 10) return getNumber();
- if (childType === 11) return getUri();
- if (childType === 12) return getExpression();
- if (childType === 13) return getFunctionsList();
- if (childType === 14) return getFunction();
- if (childType === 15) return getInterpolation();
- if (childType === 16) return getIdent();
- if (childType === 17) return getClass();
- if (childType === 18) return getUnary();
- if (childType === 19) return getParentSelector();
- if (childType === 20) return getImportant();
- if (childType === 21) return getGlobal();
- if (childType === 22) return getDefault();
- if (childType === 23) return getOptional();
- }
-
- /**
- * Checks if token is part of mixin's arguments.
- *
- * @param {number} i Token's index number
- * @return {number} Length of arguments
- */
- function checkArguments(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- // Skip `(`.
- i++;
-
- while (i < tokens[start].right) {
- if (l = checkArgument(i)) i += l;else return 0;
- }
-
- return tokens[start].right - start + 1;
- }
-
- /**
- * @return {Array}
- */
- function getArguments() {
- var type = NodeType.ArgumentsType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var body = void 0;
-
- // Skip `(`.
- pos++;
-
- while (pos < tokensLength && tokens[pos].type !== TokenType.RightParenthesis) {
- if (checkSingleValueDeclaration(pos)) {
- content.push(getSingleValueDeclaration());
- } else if (checkArgument(pos)) {
- body = getArgument();
- if (typeof body.content === 'string') content.push(body);else content = content.concat(body);
- } else if (checkClass(pos)) content.push(getClass());else throwError(pos);
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Checks if token is valid to be part of arguments list
- * @param {number} i Token's index number
- * @return {number} Length of argument
- */
- function checkArgument(i) {
- var l = void 0;
-
- if (l = checkBrackets(i)) tokens[i].argument_child = 1;else if (l = checkParentheses(i)) tokens[i].argument_child = 2;else if (l = checkSingleValueDeclaration(i)) tokens[i].argument_child = 3;else if (l = checkFunctionsList(i)) tokens[i].argument_child = 4;else if (l = checkFunction(i)) tokens[i].argument_child = 5;else if (l = checkVariablesList(i)) tokens[i].argument_child = 6;else if (l = checkVariable(i)) tokens[i].argument_child = 7;else if (l = checkSC(i)) tokens[i].argument_child = 8;else if (l = checkDelim(i)) tokens[i].argument_child = 9;else if (l = checkDeclDelim(i)) tokens[i].argument_child = 10;else if (l = checkString(i)) tokens[i].argument_child = 11;else if (l = checkPercentage(i)) tokens[i].argument_child = 12;else if (l = checkDimension(i)) tokens[i].argument_child = 13;else if (l = checkNumber(i)) tokens[i].argument_child = 14;else if (l = checkUri(i)) tokens[i].argument_child = 15;else if (l = checkInterpolation(i)) tokens[i].argument_child = 16;else if (l = checkIdent(i)) tokens[i].argument_child = 17;else if (l = checkVhash(i)) tokens[i].argument_child = 18;else if (l = checkCustomProperty(i)) tokens[i].argument_child = 19;else if (l = checkOperator(i)) tokens[i].argument_child = 20;else if (l = checkUnary(i)) tokens[i].argument_child = 21;else if (l = checkParentSelector(i)) tokens[i].argument_child = 22;else if (l = checkImportant(i)) tokens[i].argument_child = 23;else if (l = checkGlobal(i)) tokens[i].argument_child = 24;else if (l = checkDefault(i)) tokens[i].argument_child = 25;else if (l = checkOptional(i)) tokens[i].argument_child = 26;
-
- return l;
- }
-
- /**
- * @return {!Node}
- */
- function getArgument() {
- var childType = tokens[pos].argument_child;
-
- if (childType === 1) return getBrackets();
- if (childType === 2) return getParentheses();
- if (childType === 3) return getSingleValueDeclaration();
- if (childType === 4) return getFunctionsList();
- if (childType === 5) return getFunction();
- if (childType === 6) return getVariablesList();
- if (childType === 7) return getVariable();
- if (childType === 8) return getSC();
- if (childType === 9) return getDelim();
- if (childType === 10) return getDeclDelim();
- if (childType === 11) return getString();
- if (childType === 12) return getPercentage();
- if (childType === 13) return getDimension();
- if (childType === 14) return getNumber();
- if (childType === 15) return getUri();
- if (childType === 16) return getInterpolation();
- if (childType === 17) return getIdent();
- if (childType === 18) return getVhash();
- if (childType === 19) return getCustomProperty();
- if (childType === 20) return getOperator();
- if (childType === 21) return getUnary();
- if (childType === 22) return getParentSelector();
- if (childType === 23) return getImportant();
- if (childType === 24) return getGlobal();
- if (childType === 25) return getDefault();
- if (childType === 26) return getOptional();
- }
-
- /**
- * Checks if token is part of an @-word (e.g. `@import`, `@include`).
- *
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkAtkeyword(i) {
- var l = void 0;
-
- // Check that token is `@`:
- if (i >= tokensLength || tokens[i++].type !== TokenType.CommercialAt) return 0;
-
- return (l = checkIdentOrInterpolation(i)) ? l + 1 : 0;
- }
-
- /**
- * Gets node with @-word.
- *
- * @return {!Node}
- */
- function getAtkeyword() {
- var type = NodeType.AtkeywordType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `@`.
- pos++;
-
- var content = getIdentOrInterpolation();
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Checks if token is a part of an @-rule.
- *
- * @param {number} i Token's index number
- * @return {number} Length of @-rule
- */
- function checkAtrule(i) {
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- // If token already has a record of being part of an @-rule,
- // return the @-rule's length:
- if (tokens[i].atrule_l !== undefined) return tokens[i].atrule_l;
-
- // If token is part of an @-rule, save the rule's type to token.
- // @keyframes:
- if (l = checkKeyframesRule(i)) tokens[i].atrule_type = 4;
- // @-rule with ruleset:
- else if (l = checkAtruler(i)) tokens[i].atrule_type = 1;
- // Block @-rule:
- else if (l = checkAtruleb(i)) tokens[i].atrule_type = 2;
- // Single-line @-rule:
- else if (l = checkAtrules(i)) tokens[i].atrule_type = 3;else return 0;
-
- // If token is part of an @-rule, save the rule's length to token:
- tokens[i].atrule_l = l;
-
- return l;
- }
-
- /**
- * Gets node with @-rule.
- *
- * @return {!Node}
- */
- function getAtrule() {
- var childType = tokens[pos].atrule_type;
-
- if (childType === 1) return getAtruler(); // @-rule with ruleset
- if (childType === 2) return getAtruleb(); // Block @-rule
- if (childType === 3) return getAtrules(); // Single-line @-rule
- if (childType === 4) return getKeyframesRule();
- }
-
- /**
- * Checks if token is part of a block @-rule.
- *
- * @param {number} i Token's index number
- * @return {number} Length of the @-rule
- */
- function checkAtruleb(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (l = checkTsets(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Gets node with a block @-rule.
- *
- * @return {!Node}
- */
- function getAtruleb() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getTsets(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Checks if token is part of an @-rule with ruleset.
- *
- * @param {number} i Token's index number
- * @return {number} Length of the @-rule
- */
- function checkAtruler(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (l = checkTsets(i)) i += l;
-
- if (l = checkAtrulers(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Gets node with an @-rule with ruleset.
- *
- * @return {!Node}
- */
- function getAtruler() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getTsets(), getAtrulers());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkAtrulers(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- var blockEnd = tokens[i].block_end;
- if (!blockEnd) return 0;
-
- while (i < blockEnd) {
- if (l = checkSC(i)) tokens[i].atrulers_child = 1;else if (l = checkAtrule(i)) tokens[i].atrulers_child = 2;else if (l = checkRuleset(i)) tokens[i].atrulers_child = 3;else return 0;
- i += l;
- }
-
- if (i < tokensLength) tokens[i].atrulers_end = 1;
-
- return i - start;
- }
-
- /**
- * @return {!Node}
- */
- function getAtrulers() {
- var type = NodeType.BlockType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = getSC();
-
- while (pos < tokensLength && !tokens[pos].atrulers_end) {
- var childType = tokens[pos].atrulers_child;
- if (childType === 1) content = content.concat(getSC());else if (childType === 2) content.push(getAtrule());else if (childType === 3) content.push(getRuleset());else break;
- }
-
- var end = getLastPosition(content, line, column);
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkAtrules(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (l = checkTsets(i)) i += l;
-
- return i - start;
- }
-
- /**
- * @return {!Node}
- */
- function getAtrules() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getTsets());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Checks if token is part of a block (e.g. `{...}`).
- *
- * @param {number} i Token's index number
- * @return {number} Length of the block
- */
- function checkBlock(i) {
- return i < tokensLength && tokens[i].block_end ? tokens[i].block_end - i + 1 : 0;
- }
-
- /**
- * Gets node with a block.
- *
- * @return {!Node}
- */
- function getBlock() {
- var type = NodeType.BlockType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var end = tokens[pos].block_end;
- var content = [];
-
- while (pos < end) {
- if (checkBlockdecl(pos)) content = content.concat(getBlockdecl());else throwError(pos);
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Checks if token is part of a declaration (property-value pair).
- *
- * @param {number} i Token's index number
- * @return {number} Length of the declaration
- */
- function checkBlockdecl(i) {
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkBlockdecl7(i)) tokens[i].bd_type = 7;else if (l = checkBlockdecl5(i)) tokens[i].bd_type = 5;else if (l = checkBlockdecl6(i)) tokens[i].bd_type = 6;else if (l = checkBlockdecl1(i)) tokens[i].bd_type = 1;else if (l = checkBlockdecl2(i)) tokens[i].bd_type = 2;else if (l = checkBlockdecl3(i)) tokens[i].bd_type = 3;else if (l = checkBlockdecl4(i)) tokens[i].bd_type = 4;else return 0;
-
- return l;
- }
-
- /**
- * @return {!Array}
- */
- function getBlockdecl() {
- var childType = tokens[pos].bd_type;
-
- if (childType === 1) return getBlockdecl1();
- if (childType === 2) return getBlockdecl2();
- if (childType === 3) return getBlockdecl3();
- if (childType === 4) return getBlockdecl4();
- if (childType === 5) return getBlockdecl5();
- if (childType === 6) return getBlockdecl6();
- if (childType === 7) return getBlockdecl7();
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkBlockdecl1(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkInclude(i)) tokens[i].bd_kind = 2;else if (l = checkDeclaration(i)) tokens[i].bd_kind = 5;else if (l = checkAtrule(i)) tokens[i].bd_kind = 6;else return 0;
-
- i += l;
-
- if (tokens[start].bd_kind === 2 && [2, 4, 6, 8].indexOf(tokens[start].include_type) === -1) return 0;
-
- if (tokens[start].bd_kind === 6 && tokens[start].atrule_type === 3) return 0;
-
- while (i < tokensLength) {
- if (l = checkDeclDelim(i)) return i + l - start;
-
- if (l = checkS(i)) i += l;else if (l = checkCommentSL(i)) i += l;else break;
- }
-
- return 0;
- }
-
- /**
- * @return {!Array}
- */
- function getBlockdecl1() {
- var content = [];
- var _content = [];
-
- switch (tokens[pos].bd_kind) {
- case 2:
- content.push(getInclude());
- break;
- case 5:
- content.push(getDeclaration());
- break;
- case 6:
- content.push(getAtrule());
- break;
- }
-
- while (pos < tokensLength) {
- var _pos = pos;
- if (checkDeclDelim(pos)) {
- _content.push(getDeclDelim());
- content = content.concat(_content);
- break;
- }
-
- if (checkS(pos)) _content.push(getS());else if (checkCommentSL(pos)) _content.push(getCommentSL());else {
- pos = _pos;
- break;
- }
- }
-
- return content;
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkBlockdecl2(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkConditionalStatement(i)) tokens[i].bd_kind = 1;else if (l = checkInclude(i)) tokens[i].bd_kind = 2;else if (l = checkExtend(i)) tokens[i].bd_kind = 4;else if (l = checkMixin(i)) tokens[i].bd_kind = 8;else if (l = checkLoop(i)) tokens[i].bd_kind = 3;else if (l = checkRuleset(i)) tokens[i].bd_kind = 7;else if (l = checkDeclaration(i)) tokens[i].bd_kind = 5;else if (l = checkAtrule(i)) tokens[i].bd_kind = 6;else return 0;
-
- i += l;
-
- while (i < tokensLength) {
- if (l = checkS(i)) i += l;else if (l = checkCommentSL(i)) i += l;else break;
- }
-
- return i - start;
- }
-
- /**
- * @return {!Array}
- */
- function getBlockdecl2() {
- var content = [];
-
- switch (tokens[pos].bd_kind) {
- case 1:
- content.push(getConditionalStatement());
- break;
- case 2:
- content.push(getInclude());
- break;
- case 3:
- content.push(getLoop());
- break;
- case 4:
- content.push(getExtend());
- break;
- case 5:
- content.push(getDeclaration());
- break;
- case 6:
- content.push(getAtrule());
- break;
- case 7:
- content.push(getRuleset());
- break;
- case 8:
- content.push(getMixin());
- break;
- }
-
- while (pos < tokensLength) {
- if (checkS(pos)) content.push(getS());else if (checkCommentSL(pos)) content.push(getCommentSL());else break;
- }
-
- return content;
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkBlockdecl3(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkConditionalStatement(i)) tokens[i].bd_kind = 1;else if (l = checkInclude(i)) tokens[i].bd_kind = 2;else if (l = checkExtend(i)) tokens[i].bd_kind = 4;else if (l = checkLoop(i)) tokens[i].bd_kind = 3;else if (l = checkRuleset(i)) tokens[i].bd_kind = 7;else if (l = checkDeclaration(i)) tokens[i].bd_kind = 5;else if (l = checkAtrule(i)) tokens[i].bd_kind = 6;else return 0;
-
- i += l;
-
- return i - start;
- }
-
- /**
- * @return {!Array}
- */
- function getBlockdecl3() {
- var content = void 0;
-
- switch (tokens[pos].bd_kind) {
- case 1:
- content = getConditionalStatement();
- break;
- case 2:
- content = getInclude();
- break;
- case 3:
- content = getLoop();
- break;
- case 4:
- content = getExtend();
- break;
- case 5:
- content = getDeclaration();
- break;
- case 6:
- content = getAtrule();
- break;
- case 7:
- content = getRuleset();
- break;
- }
-
- return [content];
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkBlockdecl4(i) {
- return checkSC(i);
- }
-
- /**
- * @return {!Array}
- */
- function getBlockdecl4() {
- return getSC();
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkBlockdecl5(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkInclude(i)) i += l;else if (l = checkRuleset(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- if (l = checkS(i)) i += l;else if (l = checkCommentSL(i)) i += l;else break;
- }
-
- return i - start;
- }
-
- /**
- * @return {!Array}
- */
- function getBlockdecl5() {
- var content = [];
-
- if (checkInclude(pos)) content.push(getInclude());else content.push(getRuleset());
-
- while (pos < tokensLength) {
- if (checkS(pos)) content.push(getS());else if (checkCommentSL(pos)) content.push(getCommentSL());else break;
- }
-
- return content;
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkBlockdecl6(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkInclude(i)) i += l;else if (l = checkRuleset(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * @return {!Array}
- */
- function getBlockdecl6() {
- var content = void 0;
-
- if (checkInclude(pos)) content = getInclude();else content = getRuleset();
-
- return [content];
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkBlockdecl7(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkInclude(i)) i += l;else return 0;
-
- if ([2, 4, 6, 8].indexOf(tokens[start].include_type) === -1) return 0;
-
- while (i < tokensLength) {
- if (l = checkDeclDelim(i)) return i + l - start;
-
- if (l = checkS(i)) i += l;else if (l = checkCommentSL(i)) i += l;else break;
- }
-
- return 0;
- }
-
- /**
- * @return {!Array}
- */
- function getBlockdecl7() {
- var content = [];
- var _content = [];
-
- content.push(getInclude());
-
- while (pos < tokensLength) {
- var _pos = pos;
- if (checkDeclDelim(pos)) {
- _content.push(getDeclDelim());
- content = content.concat(_content);
- break;
- }
-
- if (checkS(pos)) _content.push(getS());else if (checkCommentSL(pos)) _content.push(getCommentSL());else {
- pos = _pos;
- break;
- }
- }
-
- return content;
- }
-
- /**
- * Checks if token is part of text inside square brackets, e.g. `[1]`.
- *
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkBrackets(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
-
- // Skip `[`.
- if (tokens[i].type === TokenType.LeftSquareBracket) i++;else return 0;
-
- if (i < tokens[start].right) {
- var l = checkTsets(i);
- if (l) i += l;else return 0;
- }
-
- // Skip `]`.
- i++;
-
- return i - start;
- }
-
- /**
- * Gets node with text inside square brackets, e.g. `[1]`.
- *
- * @return {!Node}
- */
- function getBrackets() {
- var type = NodeType.BracketsType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var right = token.right;
- var content = [];
-
- // Skip `[`.
- pos++;
-
- if (pos < right) {
- content = getTsets();
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `]`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Checks if token is part of a class selector (e.g. `.abc`).
- *
- * @param {number} i Token's index number
- * @return {number} Length of the class selector
- */
- function checkClass(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].class_l) return tokens[i].class_l;
-
- // Skip `.`.
- if (tokens[i].type === TokenType.FullStop) i++;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- if (l = checkIdentOrInterpolation(i)) {
- tokens[start].class_l = l + 1;
- i += l;
- } else break;
- }
-
- tokens[start].classEnd = i;
-
- return i - start;
- }
-
- /**
- * Gets node with a class selector.
- *
- * @return {!Node}
- */
- function getClass() {
- var type = NodeType.ClassType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var end = token.classEnd;
- var content = [];
-
- // Skip `.`
- pos++;
-
- while (pos < end) {
- if (checkIdentOrInterpolation(pos)) {
- content = content.concat(getIdentOrInterpolation());
- } else break;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i
- * @return {number}
- */
- function checkCombinator(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
- if (l = checkCombinator1(i)) tokens[i].combinatorType = 1;else if (l = checkCombinator2(i)) tokens[i].combinatorType = 2;else if (l = checkCombinator3(i)) tokens[i].combinatorType = 3;else if (l = checkCombinator4(i)) tokens[i].combinatorType = 4;
-
- return l;
- }
-
- /**
- * @return {!Node}
- */
- function getCombinator() {
- var type = tokens[pos].combinatorType;
- if (type === 1) return getCombinator1();
- if (type === 2) return getCombinator2();
- if (type === 3) return getCombinator3();
- if (type === 4) return getCombinator4();
- }
-
- /**
- * (1) `>>>`
- *
- * @param {Number} i
- * @return {Number}
- */
- function checkCombinator1(i) {
- if (i < tokensLength && tokens[i++].type === TokenType.GreaterThanSign && i < tokensLength && tokens[i++].type === TokenType.GreaterThanSign && i < tokensLength && tokens[i++].type === TokenType.GreaterThanSign) return 3;
-
- return 0;
- }
-
- /**
- * @return {Node}
- */
- function getCombinator1() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '>>>';
-
- // Skip combinator
- pos += 3;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `||`
- * (2) `>>`
- *
- * @param {number} i
- * @return {number}
- */
- function checkCombinator2(i) {
- if (i + 1 >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.VerticalLine && tokens[i + 1].type === TokenType.VerticalLine) return 2;
-
- if (tokens[i].type === TokenType.GreaterThanSign && tokens[i + 1].type === TokenType.GreaterThanSign) return 2;
-
- return 0;
- }
-
- /**
- * @return {!Node}
- */
- function getCombinator2() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '' + token.value + tokens[pos + 1].value;
-
- // Skip combinator
- pos += 2;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `>`
- * (2) `+`
- * (3) `~`
- *
- * @param {number} i
- * @return {number}
- */
- function checkCombinator3(i) {
- var type = tokens[i].type;
- if (type === TokenType.PlusSign || type === TokenType.GreaterThanSign || type === TokenType.Tilde) return 1;else return 0;
- }
-
- /**
- * @return {Node}
- */
- function getCombinator3() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- // Skip combinator
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `/panda/`
- */
- function checkCombinator4(i) {
- var start = i;
-
- if (tokens[i].type === TokenType.Solidus) i++;else return 0;
-
- var l = void 0;
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (tokens[i].type === TokenType.Solidus) i++;else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Node}
- */
- function getCombinator4() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `/`.
- pos++;
-
- var ident = getIdent();
-
- // Skip `/`.
- pos++;
-
- var content = '/' + ident.content + '/';
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a multiline comment.
- * @param {number} i Token's index number
- * @return {number} `1` if token is a multiline comment, otherwise `0`
- */
- function checkCommentML(i) {
- return i < tokensLength && tokens[i].type === TokenType.CommentML ? 1 : 0;
- }
-
- /**
- * Get node with a multiline comment
- * @return {Array} `['commentML', x]` where `x`
- * is the comment's text (without `/*` and `* /`).
- */
- function getCommentML() {
- var type = NodeType.CommentMLType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = tokens[pos].value.substring(2);
-
- var end = getLastPosition(content, line, column + 2);
-
- if (content.endsWith('*/')) {
- content = content.substring(0, content.length - 2);
- }
-
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a single-line comment.
- * @param {number} i Token's index number
- * @return {number} `1` if token is a single-line comment, otherwise `0`
- */
- function checkCommentSL(i) {
- return i < tokensLength && tokens[i].type === TokenType.CommentSL ? 1 : 0;
- }
-
- /**
- * Get node with a single-line comment.
- * @return {Array} `['commentSL', x]` where `x` is comment's message
- * (without `//`)
- */
- function getCommentSL() {
- var type = NodeType.CommentSLType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = tokens[pos++].value.substring(2);
- var end = !content ? [line, column + 1] : getLastPosition(content, line, column + 2);
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a condition
- * (e.g. `@if ...`, `@else if ...` or `@else ...`).
- * @param {number} i Token's index number
- * @return {number} Length of the condition
- */
- function checkCondition(i) {
- var start = i;
- var l = void 0;
- var _i = void 0;
- var s = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (['if', 'else'].indexOf(tokens[start + 1].value) < 0) return 0;
-
- while (i < tokensLength) {
- if (l = checkBlock(i)) break;
-
- s = checkSC(i);
- _i = i + s;
-
- if (l = _checkCondition(_i)) i += l + s;else break;
- }
-
- return i - start;
- }
-
- function _checkCondition(i) {
- return checkVariable(i) || checkNumber(i) || checkInterpolation(i) || checkIdent(i) || checkOperator(i) || checkCombinator(i) || checkString(i);
- }
-
- /**
- * Get node with a condition.
- * @return {Array} `['condition', x]`
- */
- function getCondition() {
- var type = NodeType.ConditionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var s = void 0;
- var _pos = void 0;
-
- content.push(getAtkeyword());
-
- while (pos < tokensLength) {
- if (checkBlock(pos)) break;
-
- s = checkSC(pos);
- _pos = pos + s;
-
- if (!_checkCondition(_pos)) break;
-
- if (s) content = content.concat(getSC());
- content.push(_getCondition());
- }
-
- return newNode(type, content, line, column);
- }
-
- function _getCondition() {
- if (checkVariable(pos)) return getVariable();
- if (checkNumber(pos)) return getNumber();
- if (checkInterpolation(pos)) return getInterpolation();
- if (checkIdent(pos)) return getIdent();
- if (checkOperator(pos)) return getOperator();
- if (checkCombinator(pos)) return getCombinator();
- if (checkString(pos)) return getString();
- }
-
- /**
- * Check if token is part of a conditional statement
- * (e.g. `@if ... {} @else if ... {} @else ... {}`).
- * @param {number} i Token's index number
- * @return {number} Length of the condition
- */
- function checkConditionalStatement(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkCondition(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a condition.
- * @return {Array} `['condition', x]`
- */
- function getConditionalStatement() {
- var type = NodeType.ConditionalStatementType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getCondition(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a declaration (property-value pair)
- * @param {number} i Token's index number
- * @return {number} Length of the declaration
- */
- function checkDeclaration(i) {
- return checkDeclaration1(i) || checkDeclaration2(i);
- }
-
- /**
- * Get node with a declaration
- * @return {Array} `['declaration', ['property', x], ['propertyDelim'],
- * ['value', y]]`
- */
- function getDeclaration() {
- return checkDeclaration1(pos) ? getDeclaration1() : getDeclaration2();
- }
-
- /**
- * Check if token is part of a declaration (property-value pair)
- * @param {number} i Token's index number
- * @return {number} Length of the declaration
- */
- function checkDeclaration1(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkProperty(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkPropertyDelim(i)) i++;else return 0;
-
- if (l = checkValue(i)) return i + l - start;
-
- if (l = checkS(i)) i += l;
-
- if (l = checkValue(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a declaration
- * @return {Array} `['declaration', ['property', x], ['propertyDelim'],
- * ['value', y]]`
- */
- function getDeclaration1() {
- var type = NodeType.DeclarationType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content.push(getProperty());
- if (checkS(pos)) content.push(getS());
- content.push(getPropertyDelim());
- if (checkS(pos)) content.push(getS());
- content.push(getValue());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a declaration (property-value pair)
- * @param {number} i Token's index number
- * @return {number} Length of the declaration
- */
- function checkDeclaration2(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkPropertyDelim(i)) i++;else return 0;
-
- if (l = checkProperty(i)) i += l;else return 0;
-
- if (l = checkValue(i)) return i + l - start;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkValue(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a declaration
- * @return {Array} `['declaration', ['propertyDelim'], ['property', x],
- * ['value', y]]`
- */
- function getDeclaration2() {
- var type = NodeType.DeclarationType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getPropertyDelim(), getProperty(), getSC(), getValue());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @returns {number} Length of the declaration
- */
- function checkSingleValueDeclaration(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkProperty(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkPropertyDelim(i)) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkSingleValue(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a declaration
- * @returns {Array} `['declaration', ['property', x], ['propertyDelim'],
- * ['value', y]]`
- */
- function getSingleValueDeclaration() {
- var type = NodeType.DeclarationType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getProperty(), getSC(), getPropertyDelim(), getSC(), getSingleValue());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a semicolon
- * @param {number} i Token's index number
- * @return {number} `1` if token is a semicolon, otherwise `0`
- */
- function checkDeclDelim(i) {
- if (i >= tokensLength) return 0;
-
- return tokens[i].type === TokenType.Newline || tokens[i].type === TokenType.Semicolon ? 1 : 0;
- }
-
- /**
- * Get node with a semicolon
- * @return {Array} `['declDelim']`
- */
- function getDeclDelim() {
- var type = NodeType.DeclDelimType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '\n';
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token if part of `!default` word.
- * @param {number} i Token's index number
- * @return {number} Length of the `!default` word
- */
- function checkDefault(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength || tokens[i++].type !== TokenType.ExclamationMark) return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].value === 'default') {
- tokens[start].defaultEnd = i;
- return i - start + 1;
- } else {
- return 0;
- }
- }
-
- /**
- * Get node with a `!default` word
- * @return {Array} `['default', sc]` where `sc` is optional whitespace
- */
- function getDefault() {
- var type = NodeType.DefaultType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, token.defaultEnd);
-
- pos = token.defaultEnd + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a comma
- * @param {number} i Token's index number
- * @return {number} `1` if token is a comma, otherwise `0`
- */
- function checkDelim(i) {
- return i < tokensLength && tokens[i].type === TokenType.Comma ? 1 : 0;
- }
-
- /**
- * Get node with a comma
- * @return {Array} `['delim']`
- */
- function getDelim() {
- var type = NodeType.DelimType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = ',';
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a number with dimension unit (e.g. `10px`)
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkDimension(i) {
- var ln = checkNumber(i);
- var li = void 0;
-
- if (i >= tokensLength || !ln || i + ln >= tokensLength) return 0;
-
- return (li = checkUnit(i + ln)) ? ln + li : 0;
- }
-
- /**
- * Get node of a number with dimension unit
- * @return {Node}
- */
- function getDimension() {
- var type = NodeType.DimensionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getNumber(), getUnit()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkExpression(i) {
- var start = i;
-
- if (i >= tokensLength || tokens[i++].value !== 'expression' || i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) {
- return 0;
- }
-
- return tokens[i].right - start + 1;
- }
-
- /**
- * @return {Array}
- */
- function getExpression() {
- var type = NodeType.ExpressionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- pos++;
-
- var content = joinValues(pos + 1, tokens[pos].right - 1);
- var end = getLastPosition(content, line, column, 1);
-
- if (end[0] === line) end[1] += 11;
- pos = tokens[pos].right + 1;
-
- return newNode(type, content, line, column, end);
- }
-
- function checkExtend(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
-
- if (l = checkExtend1(i)) tokens[i].extend_child = 1;else if (l = checkExtend2(i)) tokens[i].extend_child = 2;
-
- return l;
- }
-
- function getExtend() {
- var childType = tokens[pos].extend_child;
-
- if (childType === 1) return getExtend1();
- if (childType === 2) return getExtend2();
- }
-
- /**
- * Checks if token is part of an extend with `!optional` flag.
- * @param {number} i
- */
- function checkExtend1(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (tokens[start + 1].value !== 'extend') return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkOptional(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getExtend1() {
- var type = NodeType.ExtendType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getSelectorsGroup(), getSC(), getOptional());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Checks if token is part of an extend without `!optional` flag.
- * @param {number} i
- */
- function checkExtend2(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (tokens[start + 1].value !== 'extend') return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getExtend2() {
- var type = NodeType.ExtendType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getSelectorsGroup());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkFunction(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- return i < tokensLength && tokens[i].type === TokenType.LeftParenthesis ? tokens[i].right - start + 1 : 0;
- }
-
- /**
- * @return {Array}
- */
- function getFunction() {
- var type = NodeType.FunctionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getIdentOrInterpolation(), getArguments());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a functions list (e.g. `function(value)...`).
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkFunctionsList(i) {
- var d = 0; // Number of dots
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkFunction(i)) i += l;else return 0;
-
- while (i < tokensLength && tokens[i].type === TokenType.FullStop) {
- d++;
- i++;
- }
-
- return d === 3 ? l + d : 0;
- }
-
- /**
- * Get node with a functions list
- * @returns {Array}
- */
- function getFunctionsList() {
- var type = NodeType.FunctionsListType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getFunction()];
- var end = getLastPosition(content, line, column, 3);
-
- // Skip `...`.
- pos += 3;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of `!global` word
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkGlobal(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength || tokens[i++].type !== TokenType.ExclamationMark) return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].value === 'global') {
- tokens[start].globalEnd = i;
- return i - start + 1;
- } else {
- return 0;
- }
- }
-
- /**
- * Get node with `!global` word
- */
- function getGlobal() {
- var type = NodeType.GlobalType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, token.globalEnd);
-
- pos = token.globalEnd + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an identifier
- * @param {number} i Token's index number
- * @return {number} Length of the identifier
- */
- function checkIdent(i) {
- var start = i;
-
- if (i >= tokensLength) return 0;
-
- // Check if token is part of a negative number
- if (tokens[i].type === TokenType.HyphenMinus && tokens[i + 1].type === TokenType.DecimalNumber) return 0;
-
- if (tokens[i].type === TokenType.HyphenMinus) i++;
-
- if (checkInterpolation(i)) {
- tokens[start].ident_last = i - 1;
- return i - start;
- }
-
- if (tokens[i].type === TokenType.LowLine || tokens[i].type === TokenType.Identifier) i++;else return 0;
-
- for (; i < tokensLength; i++) {
- if (tokens[i].type !== TokenType.HyphenMinus && tokens[i].type !== TokenType.LowLine && tokens[i].type !== TokenType.Identifier && tokens[i].type !== TokenType.DecimalNumber) break;
- }
-
- tokens[start].ident_last = i - 1;
-
- return i - start;
- }
-
- /**
- * Get node with an identifier
- * @return {Array} `['ident', x]` where `x` is identifier's name
- */
- function getIdent() {
- var type = NodeType.IdentType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, tokens[pos].ident_last);
-
- pos = tokens[pos].ident_last + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @returns {number} Length of the identifier
- */
- function checkPartialIdent(i) {
- var start = i;
-
- if (i >= tokensLength) return 0;
-
- for (; i < tokensLength; i++) {
- if (tokens[i].type !== TokenType.HyphenMinus && tokens[i].type !== TokenType.LowLine && tokens[i].type !== TokenType.Identifier && tokens[i].type !== TokenType.DecimalNumber) break;
- }
-
- tokens[start].ident_last = i - 1;
-
- return i - start;
- }
-
- /**
- * @param {number} i Token's index number
- * @returns {number} Length of the identifier
- */
- function checkIdentOrInterpolation(i) {
- var start = i;
- var l = void 0;
- var prevIsInterpolation = false;
-
- while (i < tokensLength) {
- if (l = checkInterpolation(i)) {
- tokens[i].ii_type = 1;
- i += l;
- prevIsInterpolation = true;
- } else if (l = checkIdent(i)) {
- tokens[i].ii_type = 2;
- i += l;
- prevIsInterpolation = false;
- } else if (prevIsInterpolation && (l = checkPartialIdent(i))) {
- tokens[i].ii_type = 3;
- i += l;
- prevIsInterpolation = false;
- } else break;
- }
-
- return i - start;
- }
-
- function getIdentOrInterpolation() {
- var content = [];
-
- while (pos < tokensLength) {
- var tokenType = tokens[pos].ii_type;
-
- if (tokenType === 1) {
- content.push(getInterpolation());
- } else if (tokenType === 2 || tokenType === 3) {
- content.push(getIdent());
- } else break;
- }
-
- return content;
- }
-
- /**
- * Check if token is part of `!important` word
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkImportant(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength || tokens[i++].type !== TokenType.ExclamationMark) return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].value === 'important') {
- tokens[start].importantEnd = i;
- return i - start + 1;
- } else {
- return 0;
- }
- }
-
- /**
- * Get node with `!important` word
- * @return {Array} `['important', sc]` where `sc` is optional whitespace
- */
- function getImportant() {
- var type = NodeType.ImportantType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, token.importantEnd);
-
- pos = token.importantEnd + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an included mixin (`@include` or `@extend`
- * directive).
- * @param {number} i Token's index number
- * @return {number} Length of the included mixin
- */
- function checkInclude(i) {
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIncludeWithKeyframes1(i)) tokens[i].include_type = 9;else if (l = checkInclude1(i)) tokens[i].include_type = 1;else if (l = checkInclude2(i)) tokens[i].include_type = 2;else if (l = checkInclude3(i)) tokens[i].include_type = 3;else if (l = checkInclude4(i)) tokens[i].include_type = 4;else if (l = checkIncludeWithKeyframes2(i)) tokens[i].include_type = 10;else if (l = checkInclude5(i)) tokens[i].include_type = 5;else if (l = checkInclude6(i)) tokens[i].include_type = 6;else if (l = checkInclude7(i)) tokens[i].include_type = 7;else if (l = checkInclude8(i)) tokens[i].include_type = 8;
-
- return l;
- }
-
- /**
- * Get node with included mixin
- * @return {Array} `['include', x]`
- */
- function getInclude() {
- var type = tokens[pos].include_type;
-
- if (type === 1) return getInclude1();
- if (type === 2) return getInclude2();
- if (type === 3) return getInclude3();
- if (type === 4) return getInclude4();
- if (type === 5) return getInclude5();
- if (type === 6) return getInclude6();
- if (type === 7) return getInclude7();
- if (type === 8) return getInclude8();
- if (type === 9) return getIncludeWithKeyframes1();
- if (type === 10) return getIncludeWithKeyframes2();
- }
-
- /**
- * Check if token is part of an included mixin like `@include nani(foo) {...}`
- * @param {number} i Token's index number
- * @return {number} Length of the include
- */
- function checkInclude1(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (tokens[start + 1].value !== 'include') return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkArguments(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with included mixin like `@include nani(foo) {...}`
- * @return {Array} `['include', ['atkeyword', x], sc, ['selector', y], sc,
- * ['arguments', z], sc, ['block', q], sc` where `x` is `include` or
- * `extend`, `y` is mixin's identifier (selector), `z` are arguments
- * passed to the mixin, `q` is block passed to the mixin and `sc`
- * are optional whitespaces
- */
- function getInclude1() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getIdentOrInterpolation(), getSC(), getArguments(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an included mixin like `@include nani(foo)`
- * @param {number} i Token's index number
- * @return {number} Length of the include
- */
- function checkInclude2(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (tokens[start + 1].value !== 'include') return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkArguments(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with included mixin like `@include nani(foo)`
- * @return {Array} `['include', ['atkeyword', x], sc, ['selector', y], sc,
- * ['arguments', z], sc]` where `x` is `include` or `extend`, `y` is
- * mixin's identifier (selector), `z` are arguments passed to the
- * mixin and `sc` are optional whitespaces
- */
- function getInclude2() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getIdentOrInterpolation(), getSC(), getArguments());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an included mixin with a content block passed
- * as an argument (e.g. `@include nani {...}`)
- * @param {number} i Token's index number
- * @return {number} Length of the mixin
- */
- function checkInclude3(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (tokens[start + 1].value !== 'include') return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with an included mixin with a content block passed
- * as an argument (e.g. `@include nani {...}`)
- * @return {Array} `['include', x]`
- */
- function getInclude3() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getIdentOrInterpolation(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkInclude4(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (tokens[start + 1].value !== 'include') return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Array} `['include', x]`
- */
- function getInclude4() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getIdentOrInterpolation());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an included mixin like `+nani(foo) {...}`
- * @param {number} i Token's index number
- * @return {number} Length of the include
- */
- function checkInclude5(i) {
- var start = i;
- var l = void 0;
-
- if (tokens[i].type === TokenType.PlusSign) i++;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkArguments(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with included mixin like `+nani(foo) {...}`
- * @return {Array} `['include', ['operator', '+'], ['selector', x], sc,
- * ['arguments', y], sc, ['block', z], sc` where `x` is
- * mixin's identifier (selector), `y` are arguments passed to the
- * mixin, `z` is block passed to mixin and `sc` are optional whitespaces
- */
- function getInclude5() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getOperator(), getIdentOrInterpolation(), getSC(), getArguments(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an included mixin like `+nani(foo)`
- * @param {number} i Token's index number
- * @return {number} Length of the include
- */
- function checkInclude6(i) {
- var start = i;
- var l = void 0;
-
- if (tokens[i].type === TokenType.PlusSign) i++;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkArguments(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with included mixin like `+nani(foo)`
- * @return {Array} `['include', ['operator', '+'], ['selector', y], sc,
- * ['arguments', z], sc]` where `y` is
- * mixin's identifier (selector), `z` are arguments passed to the
- * mixin and `sc` are optional whitespaces
- */
- function getInclude6() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getOperator(), getIdentOrInterpolation(), getSC(), getArguments());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an included mixin with a content block passed
- * as an argument (e.g. `+nani {...}`)
- * @param {number} i Token's index number
- * @return {number} Length of the mixin
- */
- function checkInclude7(i) {
- var start = i;
- var l = void 0;
-
- if (tokens[i].type === TokenType.PlusSign) i++;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with an included mixin with a content block passed
- * as an argument (e.g. `+nani {...}`)
- * @return {Array} `['include', x]`
- */
- function getInclude7() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getOperator(), getIdentOrInterpolation(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkInclude8(i) {
- var start = i;
- var l = void 0;
-
- if (tokens[i].type === TokenType.PlusSign) i++;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Array} `['include', x]`
- */
- function getInclude8() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getOperator(), getIdentOrInterpolation());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Get node with included mixin with keyfames selector like
- * `@include nani(foo) { 0% {}}`
- * @param {number} i Token's index number
- * @returns {number} Length of the include
- */
- function checkIncludeWithKeyframes1(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (tokens[start + 1].value !== 'include') return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkArguments(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkKeyframesBlocks(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with included mixin with keyfames selector like
- * `@include nani(foo) { 0% {}}`
- * @return {!Node}
- */
- function getIncludeWithKeyframes1() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getIdentOrInterpolation(), getSC(), getArguments(), getSC(), getKeyframesBlocks());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Get node with included mixin with keyfames selector like
- * `+nani(foo) { 0% {}}`
- * @param {number} i Token's index number
- * @returns {number} Length of the include
- */
- function checkIncludeWithKeyframes2(i) {
- var start = i;
- var l = void 0;
-
- if (tokens[i].type === TokenType.PlusSign) i++;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkArguments(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkKeyframesBlocks(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with included mixin with keyfames selector like
- * `+nani(foo) { 0% {}}`
- * @return {!Node}
- */
- function getIncludeWithKeyframes2() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getOperator(), getIdentOrInterpolation(), getSC(), getArguments(), getSC(), getKeyframesBlocks());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an interpolated variable (e.g. `#{$nani}`).
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkInterpolation(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type !== TokenType.NumberSign || !tokens[i + 1] || tokens[i + 1].type !== TokenType.LeftCurlyBracket) return 0;
-
- i += 2;
-
- while (tokens[i].type !== TokenType.RightCurlyBracket) {
- if (l = checkArgument(i)) i += l;else return 0;
- }
-
- return tokens[i].type === TokenType.RightCurlyBracket ? i - start + 1 : 0;
- }
-
- /**
- * Get node with an interpolated variable
- * @return {Array} `['interpolation', x]`
- */
- function getInterpolation() {
- var type = NodeType.InterpolationType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `#{`:
- pos += 2;
-
- while (pos < tokensLength && tokens[pos].type !== TokenType.RightCurlyBracket) {
- var body = getArgument();
- if (typeof body.content === 'string') content.push(body);else content = content.concat(body);
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `}`:
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check a single keyframe block - `5% {}`
- * @param {number} i
- * @return {number}
- */
- function checkKeyframesBlock(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkKeyframesSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get a single keyframe block - `5% {}`
- * @return {Node}
- */
- function getKeyframesBlock() {
- var type = NodeType.RulesetType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getKeyframesSelectorsGroup(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check all keyframe blocks - `5% {} 100% {}`
- * @param {number} i
- * @return {number}
- */
- function checkKeyframesBlocks(i) {
- if (i >= tokensLength) return 0;
-
- var blockEnd = tokens[i].block_end;
- var start = i;
- var l = void 0;
-
- if (!blockEnd) return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkKeyframesBlock(i)) i += l;
-
- while (i < blockEnd) {
- if (l = checkSC(i)) i += l;else if (l = checkKeyframesBlock(i)) i += l;else if (l = checkAtrule(i)) i += l;else break;
- }
-
- if (i !== blockEnd + 1) return 0;
-
- return blockEnd + 1 - start;
- }
-
- /**
- * Get all keyframe blocks - `5% {} 100% {}`
- * @return {Node}
- */
- function getKeyframesBlocks() {
- var type = NodeType.BlockType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var keyframesBlocksEnd = token.block_end;
- var content = [];
-
- while (pos < keyframesBlocksEnd) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkKeyframesBlock(pos)) content.push(getKeyframesBlock());else if (checkAtrule(pos)) content.push(getAtrule()); // @content
- else break;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a @keyframes rule.
- * @param {number} i Token's index number
- * @return {number} Length of the @keyframes rule
- */
- function checkKeyframesRule(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- var atruleName = joinValues2(i - l, l);
- if (atruleName.toLowerCase().indexOf('keyframes') === -1) return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkIdentOrInterpolation(i) || checkPseudoc(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkKeyframesBlocks(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Node}
- */
- function getKeyframesRule() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC());
-
- if (checkIdentOrInterpolation(pos)) content = content.concat(getIdentOrInterpolation());else if (checkPseudoc(pos)) {
- content = content.concat(getPseudoc());
- }
-
- content = content.concat(getSC(), getKeyframesBlocks());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check a single keyframe selector - `5%`, `from` etc
- * @param {Number} i
- * @return {Number}
- */
- function checkKeyframesSelector(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) {
- // Valid selectors are only `from` and `to`.
- var selector = joinValues2(i, l);
- if (selector !== 'from' && selector !== 'to') return 0;
-
- i += l;
- tokens[start].keyframesSelectorType = 1;
- } else if (l = checkPercentage(i)) {
- i += l;
- tokens[start].keyframesSelectorType = 2;
- } else if (l = checkInterpolation(i)) {
- i += l;
- tokens[start].keyframesSelectorType = 3;
- } else {
- return 0;
- }
-
- return i - start;
- }
-
- /**
- * Get a single keyframe selector
- * @return {Node}
- */
- function getKeyframesSelector() {
- var keyframesSelectorType = NodeType.KeyframesSelectorType;
- var selectorType = NodeType.SelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (token.keyframesSelectorType === 1) {
- content.push(getIdent());
- } else if (token.keyframesSelectorType === 2) {
- content.push(getPercentage());
- } else if (token.keyframesSelectorType === 3) {
- content.push(getInterpolation());
- }
-
- var keyframesSelector = newNode(keyframesSelectorType, content, line, column);
-
- return newNode(selectorType, [keyframesSelector], line, column);
- }
-
- /**
- * Check the keyframe's selector groups
- * @param {number} i
- * @return {number}
- */
- function checkKeyframesSelectorsGroup(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkKeyframesSelector(i)) i += l;else return 0;
-
- // Check for trailing space
- if (l = checkSC(i) && tokens[i].type !== TokenType.Newline) i += l;
-
- while (i < tokensLength) {
- var tempStart = i;
- var tempIndex = i;
- var tempLength = void 0;
-
- if (tempLength = checkDelim(tempIndex)) tempIndex += tempLength;else break;
-
- // Check for maxmimum space usage - 'space', '\n', 'space'
- if (tempLength = checkSC(tempIndex)) tempIndex += tempLength;
- if (tempLength = checkSC(tempIndex)) tempIndex += tempLength;
- if (tempLength = checkSC(tempIndex)) tempIndex += tempLength;
-
- if (tempLength = checkKeyframesSelector(tempIndex)) tempIndex += tempLength;else break;
-
- // Check for trailing space
- if (tempLength = checkSC(tempIndex) && tokens[tempIndex].type !== TokenType.Newline) {
- tempIndex += tempLength;
- }
-
- i += tempIndex - tempStart;
- }
-
- tokens[start].selectorsGroupEnd = i;
-
- return i - start;
- }
-
- /**
- * Get the keyframe's selector groups
- * @return {Array} An array of keyframe selectors
- */
- function getKeyframesSelectorsGroup() {
- var selectorsGroup = [];
- var selectorsGroupEnd = tokens[pos].selectorsGroupEnd;
-
- selectorsGroup.push(getKeyframesSelector());
-
- if (checkSC(pos) && tokens[pos].type !== TokenType.Newline) {
- selectorsGroup = selectorsGroup.concat(getSC());
- }
-
- while (pos < selectorsGroupEnd) {
- selectorsGroup = selectorsGroup.concat(getDelim(), getSC(), getSC(), getSC(), getKeyframesSelector());
-
- if (checkSC(pos) && tokens[pos].type !== TokenType.Newline) {
- selectorsGroup = selectorsGroup.concat(getSC());
- }
- }
-
- return selectorsGroup;
- }
-
- /**
- * Check if token is part of a loop.
- * @param {number} i Token's index number
- * @return {number} Length of the loop
- */
- function checkLoop(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (['for', 'each', 'while'].indexOf(tokens[start + 1].value) < 0) return 0;
-
- while (i < tokensLength) {
- if (l = checkBlock(i)) {
- i += l;
- break;
- } else if (l = checkVariable(i) || checkNumber(i) || checkInterpolation(i) || checkIdent(i) || checkSC(i) || checkOperator(i) || checkCombinator(i) || checkString(i)) i += l;else return 0;
- }
-
- return i - start;
- }
-
- /**
- * Get node with a loop.
- * @return {Array} `['loop', x]`
- */
- function getLoop() {
- var type = NodeType.LoopType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content.push(getAtkeyword());
-
- while (pos < tokensLength) {
- if (checkBlock(pos)) {
- content.push(getBlock());
- break;
- } else if (checkVariable(pos)) content.push(getVariable());else if (checkNumber(pos)) content.push(getNumber());else if (checkInterpolation(pos)) content.push(getInterpolation());else if (checkIdent(pos)) content.push(getIdent());else if (checkOperator(pos)) content.push(getOperator());else if (checkCombinator(pos)) content.push(getCombinator());else if (checkSC(pos)) content = content.concat(getSC());else if (checkString(pos)) content.push(getString());
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a mixin
- * @param {number} i Token's index number
- * @return {number} Length of the mixin
- */
- function checkMixin(i) {
- return checkMixin1(i) || checkMixin2(i);
- }
-
- /**
- * Get node with a mixin
- * @return {Array} `['mixin', x]`
- */
- function getMixin() {
- return checkMixin1(pos) ? getMixin1() : getMixin2();
- }
-
- /**
- * Check if token is part of a mixin
- * @param {number} i Token's index number
- * @return {number} Length of the mixin
- */
- function checkMixin1(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if ((l = checkAtkeyword(i)) && tokens[i + 1].value === 'mixin') i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else {
- if (l = checkArguments(i)) i += l;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
- }
-
- return i - start;
- }
-
- /**
- * Get node with a mixin
- * @return {Array} `['mixin', x]`
- */
- function getMixin1() {
- var type = NodeType.MixinType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC());
-
- if (checkIdentOrInterpolation(pos)) content = content.concat(getIdentOrInterpolation());
-
- content = content.concat(getSC());
-
- if (checkBlock(pos)) content.push(getBlock());else {
- if (checkArguments(pos)) content.push(getArguments());
-
- content = content.concat(getSC());
-
- content.push(getBlock());
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a mixin
- * @param {number} i Token's index number
- * @return {number} Length of the mixin
- */
- function checkMixin2(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.EqualsSign) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else {
- if (l = checkArguments(i)) i += l;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
- }
-
- return i - start;
- }
-
- /**
- * Get node with a mixin
- * @return {Array} `['mixin', x]`
- */
- function getMixin2() {
- var type = NodeType.MixinType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getOperator(), getSC());
-
- if (checkIdentOrInterpolation(pos)) content = content.concat(getIdentOrInterpolation());
-
- content = content.concat(getSC());
-
- if (checkBlock(pos)) content.push(getBlock());else {
- if (checkArguments(pos)) content.push(getArguments());
-
- content = content.concat(getSC());
-
- content.push(getBlock());
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a namespace sign (`|`)
- * @param {number} i Token's index number
- * @return {number} `1` if token is `|`, `0` if not
- */
- function checkNamespace(i) {
- return i < tokensLength && tokens[i].type === TokenType.VerticalLine ? 1 : 0;
- }
-
- /**
- * Get node with a namespace sign
- * @return {Array} `['namespace']`
- */
- function getNamespace() {
- var type = NodeType.NamespaceType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '|';
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkNmName2(i) {
- if (tokens[i].type === TokenType.Identifier) return 1;else if (tokens[i].type !== TokenType.DecimalNumber) return 0;
-
- i++;
-
- return i < tokensLength && tokens[i].type === TokenType.Identifier ? 2 : 1;
- }
-
- /**
- * @return {string}
- */
- function getNmName2() {
- var s = tokens[pos].value;
-
- if (tokens[pos++].type === TokenType.DecimalNumber && pos < tokensLength && tokens[pos].type === TokenType.Identifier) s += tokens[pos++].value;
-
- return s;
- }
-
- /**
- * Check if token is part of a number
- * @param {number} i Token's index number
- * @return {number} Length of number
- */
- function checkNumber(i) {
- if (i >= tokensLength) return 0;
-
- if (tokens[i].number_l) return tokens[i].number_l;
-
- // `10`:
- if (i < tokensLength && tokens[i].type === TokenType.DecimalNumber && (!tokens[i + 1] || tokens[i + 1] && tokens[i + 1].type !== TokenType.FullStop)) {
- tokens[i].number_l = 1;
- return 1;
- }
-
- // `10.`:
- if (i < tokensLength && tokens[i].type === TokenType.DecimalNumber && tokens[i + 1] && tokens[i + 1].type === TokenType.FullStop && (!tokens[i + 2] || tokens[i + 2].type !== TokenType.DecimalNumber)) {
- tokens[i].number_l = 2;
- return 2;
- }
-
- // `.10`:
- if (i < tokensLength && tokens[i].type === TokenType.FullStop && tokens[i + 1].type === TokenType.DecimalNumber) {
- tokens[i].number_l = 2;
- return 2;
- }
-
- // `10.10`:
- if (i < tokensLength && tokens[i].type === TokenType.DecimalNumber && tokens[i + 1] && tokens[i + 1].type === TokenType.FullStop && tokens[i + 2] && tokens[i + 2].type === TokenType.DecimalNumber) {
- tokens[i].number_l = 3;
- return 3;
- }
-
- return 0;
- }
-
- /**
- * Get node with number
- * @return {Array} `['number', x]` where `x` is a number converted
- * to string.
- */
- function getNumber() {
- var type = NodeType.NumberType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var l = tokens[pos].number_l;
- var content = '';
-
- for (var j = 0; j < l; j++) {
- content += tokens[pos + j].value;
- }
-
- pos += l;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is an operator (`/`, `%`, `,`, `:` or `=`).
- * @param {number} i Token's index number
- * @return {number} `1` if token is an operator, otherwise `0`
- */
- function checkOperator(i) {
- if (i >= tokensLength) return 0;
-
- switch (tokens[i].type) {
- case TokenType.Solidus:
- case TokenType.PercentSign:
- case TokenType.Comma:
- case TokenType.Colon:
- case TokenType.EqualsSign:
- case TokenType.EqualitySign:
- case TokenType.InequalitySign:
- case TokenType.LessThanSign:
- case TokenType.GreaterThanSign:
- case TokenType.Asterisk:
- return 1;
- }
-
- return 0;
- }
-
- /**
- * Get node with an operator
- * @return {Array} `['operator', x]` where `x` is an operator converted
- * to string.
- */
- function getOperator() {
- var type = NodeType.OperatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of `!optional` word
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkOptional(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength || tokens[i++].type !== TokenType.ExclamationMark) return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].value === 'optional') {
- tokens[start].optionalEnd = i;
- return i - start + 1;
- } else {
- return 0;
- }
- }
-
- /**
- * Get node with `!optional` word
- */
- function getOptional() {
- var type = NodeType.OptionalType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, token.optionalEnd);
-
- pos = token.optionalEnd + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of text inside parentheses, e.g. `(1)`
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkParentheses(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var right = tokens[i].right;
- var l = void 0;
-
- // Skip `(`.
- if (tokens[i].type === TokenType.LeftParenthesis) i++;else return 0;
-
- if (i < right) {
- if (l = checkTsets(i)) i += l;else return 0;
- }
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- /**
- * Get node with text inside parentheses, e.g. `(1)`
- * @return {Node}
- */
- function getParentheses() {
- var type = NodeType.ParenthesesType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var right = token.right;
- var content = [];
-
- // Skip `(`.
- pos++;
-
- if (pos < right) {
- content = getTsets();
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is a parent selector, e.g. `&`
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkParentSelector(i) {
- return i < tokensLength && tokens[i].type === TokenType.Ampersand ? 1 : 0;
- }
-
- /**
- * Get node with a parent selector
- * @return {Node}
- */
- function getParentSelector() {
- var type = NodeType.ParentSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '&';
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a parent selector extension, e.g. `&--foo-bar`
- * @param {number} i Token's index number
- * @returns {number} Length of the parent selector extension
- */
- function checkParentSelectorExtension(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- while (i < tokensLength) {
- if (l = checkIdentOrInterpolation(i) || checkPartialIdent(i)) i += l;else break;
- }
-
- return i - start;
- }
-
- /**
- * Get parent selector extension node
- * @return {Node}
- */
- function getParentSelectorExtension() {
- var type = NodeType.ParentSelectorExtensionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- while (pos < tokensLength) {
- if (checkIdentOrInterpolation(pos)) {
- content = content.concat(getIdentOrInterpolation());
- } else if (checkPartialIdent(pos)) {
- content.push(getIdent());
- } else break;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a parent selector with an extension or not
- * @param {number} i Token's index number
- * @return {number} Length of the parent selector and extension if applicable
- */
- function checkParentSelectorWithExtension(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkParentSelector(i)) i += l;else return 0;
-
- if (l = checkParentSelectorExtension(i)) i += l;
-
- return i - start;
- }
-
- /**
- * Get parent selector node and extension node if applicable
- * @return {Array}
- */
- function getParentSelectorWithExtension() {
- var content = [getParentSelector()];
-
- if (checkParentSelectorExtension(pos)) content.push(getParentSelectorExtension());
-
- return content;
- }
-
- /**
- * Check if token is part of a number or an interpolation with a percent sign
- * (e.g. `10%`).
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkPercentage(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkNumberOrInterpolation(i)) i += l;else return 0;
-
- if (i >= tokensLength) return 0;
-
- // Skip `%`.
- if (tokens[i].type === TokenType.PercentSign) i++;else return 0;
-
- return i - start;
- }
-
- /**
- * Get a percentage node that contains either a number or an interpolation
- * @return {Object} The percentage node
- */
- function getPercentage() {
- var type = NodeType.PercentageType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = getNumberOrInterpolation();
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `%`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is a number or an interpolation
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkNumberOrInterpolation(i) {
- var start = i;
- var l = void 0;
-
- while (i < tokensLength) {
- if (l = checkInterpolation(i) || checkNumber(i)) i += l;else break;
- }
-
- return i - start;
- }
-
- /**
- * Get a number and/or interpolation node
- * @return {Array} An array containing a single or multiple nodes
- */
- function getNumberOrInterpolation() {
- var content = [];
-
- while (pos < tokensLength) {
- if (checkInterpolation(pos)) content.push(getInterpolation());else if (checkNumber(pos)) content.push(getNumber());else break;
- }
-
- return content;
- }
-
- /**
- * Check if token is part of a placeholder selector (e.g. `%abc`).
- * @param {number} i Token's index number
- * @return {number} Length of the selector
- */
- function checkPlaceholder(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[start].placeholder_l) return tokens[start].placeholder_l;
-
- // Skip `%`.
- if (tokens[i].type === TokenType.PercentSign) i++;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) {
- i += l;
- tokens[start].placeholder_l = i - start;
- } else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a placeholder selector
- * @return {Array} `['placeholder', ['ident', x]]` where x is a placeholder's
- * identifier (without `%`, e.g. `abc`).
- */
- function getPlaceholder() {
- var type = NodeType.PlaceholderType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `%`.
- pos++;
-
- content = content.concat(getIdentOrInterpolation());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkProgid(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (joinValues2(i, 6) === 'progid:DXImageTransform.Microsoft.') i += 6;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].type === TokenType.LeftParenthesis) {
- tokens[start].progid_end = tokens[i].right;
- i = tokens[i].right + 1;
- } else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Array}
- */
- function getProgid() {
- var type = NodeType.ProgidType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var progid_end = token.progid_end;
- var content = joinValues(pos, progid_end);
-
- pos = progid_end + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a property
- * @param {Number} i Token's index number
- * @return {Number} Length of the property
- */
- function checkProperty(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkProperty1(i)) tokens[start].propertyType = 1;else if (l = checkProperty2(i)) tokens[start].propertyType = 2;else if (l = checkProperty3(i)) tokens[start].propertyType = 3;
-
- return l;
- }
-
- /**
- * Get node with a property
- * @return {!Node}
- */
- function getProperty() {
- var type = tokens[pos].propertyType;
-
- if (type === 1) return getProperty1();
- if (type === 2) return getProperty2();
- if (type === 3) return getProperty3();
- }
-
- /**
- * Check if token is part of a property
- * (1) `foo`
- * (2) `#{$foo}`
- * @param {Number} i Token's index number
- * @returns {Number} Length of the property
- */
- function checkProperty1(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a property
- * @returns {Array}
- */
- function getProperty1() {
- var type = NodeType.PropertyType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = getIdentOrInterpolation();
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a custom property
- * (1) `--foo-bar`
- * @param {Number} i Token's index number
- * @return {Number} Length of the property
- */
- function checkProperty2(i) {
- return checkCustomProperty(i);
- }
-
- /**
- * Get node with a custom property
- * @return {Node}
- */
- function getProperty2() {
- return getCustomProperty();
- }
-
- /**
- * Check if token is part of a property
- * (1) `$foo`
- * @param {Number} i Token's index number
- * @returns {Number} Length of the property
- */
- function checkProperty3(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkVariable(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a property
- * @returns {Array} `['property', x]`
- */
- function getProperty3() {
- var type = NodeType.PropertyType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getVariable()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a custom property
- * @param {Number} i Token's index number
- * @return {Number} Length of the property
- */
- function checkCustomProperty(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type !== TokenType.HyphenMinus || tokens[i + 1] && tokens[i + 1].type !== TokenType.HyphenMinus) return 0;
-
- // Skip `--`
- i += 2;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a custom property
- * @return {Node}
- */
- function getCustomProperty() {
- var type = NodeType.CustomPropertyType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `--`
- pos += 2;
-
- var content = [getIdent()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a colon
- * @param {number} i Token's index number
- * @return {number} `1` if token is a colon, otherwise `0`
- */
- function checkPropertyDelim(i) {
- return i < tokensLength && tokens[i].type === TokenType.Colon ? 1 : 0;
- }
-
- /**
- * Get node with a colon
- * @return {Array} `['propertyDelim']`
- */
- function getPropertyDelim() {
- var type = NodeType.PropertyDelimType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = ':';
-
- // Skip `:`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkPseudo(i) {
- return checkPseudoe(i) || checkPseudoc(i);
- }
-
- /**
- * @return {Array}
- */
- function getPseudo() {
- if (checkPseudoe(pos)) return getPseudoe();
- if (checkPseudoc(pos)) return getPseudoc();
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkPseudoe(i) {
- var l = void 0;
-
- // Check `::`
- if (i >= tokensLength || tokens[i].type !== TokenType.Colon || i + 1 >= tokensLength || tokens[i + 1].type !== TokenType.Colon) return 0;
-
- if (l = checkPseudoElement1(i)) tokens[i].pseudoElementType = 1;else if (l = checkPseudoElement2(i)) tokens[i].pseudoElementType = 2;else return 0;
-
- return l;
- }
-
- /**
- * @return {Node}
- */
- function getPseudoe() {
- var childType = tokens[pos].pseudoElementType;
- if (childType === 1) return getPseudoElement1();
- if (childType === 2) return getPseudoElement2();
- }
-
- /**
- * (1) `::slotted(selector)`
- * (2) `::slotted(selector, selector)`
- */
- function checkPseudoElement1(i) {
- var start = i;
- var l = void 0;
-
- // Skip `::`.
- i += 2;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- /**
- * (1) `::slotted(selector)`
- * (2) `::slotted(selector, selector)`
- */
- function getPseudoElement1() {
- var type = NodeType.PseudoeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `::`.
- pos += 2;
-
- content.push(getIdent());
-
- {
- var _type = NodeType.ArgumentsType;
- var _token = tokens[pos];
- var _line = _token.ln;
- var _column = _token.col;
-
- // Skip `(`.
- pos++;
-
- var selectorContent = [].concat(getSC(), getSelectorsGroup(), getSC());
-
- var end = getLastPosition(selectorContent, _line, _column, 1);
- var args = newNode(_type, selectorContent, _line, _column, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
- }
-
- return newNode(type, content, line, column);
- }
-
- function checkPseudoElement2(i) {
- var start = i;
- var l = void 0;
-
- // Skip `::`.
- i += 2;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Node}
- */
- function getPseudoElement2() {
- var type = NodeType.PseudoeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `::`.
- pos += 2;
-
- var content = getIdentOrInterpolation();
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkPseudoc(i) {
- var l = void 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.Colon) return 0;
-
- if (l = checkPseudoClass3(i)) tokens[i].pseudoClassType = 3;else if (l = checkPseudoClass4(i)) tokens[i].pseudoClassType = 4;else if (l = checkPseudoClass5(i)) tokens[i].pseudoClassType = 5;else if (l = checkPseudoClass1(i)) tokens[i].pseudoClassType = 1;else if (l = checkPseudoClass2(i)) tokens[i].pseudoClassType = 2;else if (l = checkPseudoClass6(i)) tokens[i].pseudoClassType = 6;else return 0;
-
- return l;
- }
-
- /**
- * @return {Array}
- */
- function getPseudoc() {
- var childType = tokens[pos].pseudoClassType;
- if (childType === 1) return getPseudoClass1();
- if (childType === 2) return getPseudoClass2();
- if (childType === 3) return getPseudoClass3();
- if (childType === 4) return getPseudoClass4();
- if (childType === 5) return getPseudoClass5();
- if (childType === 6) return getPseudoClass6();
- }
-
- /**
- * (-) `:not(panda)`
- */
- function checkPseudoClass1(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- /**
- * (-) `:not(panda)`
- */
- function getPseudoClass1() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content = content.concat(getIdentOrInterpolation());
-
- {
- var _type2 = NodeType.ArgumentsType;
- var _token2 = tokens[pos];
- var _line2 = _token2.ln;
- var _column2 = _token2.col;
-
- // Skip `(`.
- pos++;
-
- var selectorContent = [].concat(getSC(), getSelectorsGroup(), getSC());
-
- var end = getLastPosition(selectorContent, _line2, _column2, 1);
- var args = newNode(_type2, selectorContent, _line2, _column2, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `:nth-child(odd)`
- * (2) `:nth-child(even)`
- * (3) `:lang(de-DE)`
- */
- function checkPseudoClass2(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass2() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content = content.concat(getIdentOrInterpolation());
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
-
- // Skip `(`.
- pos++;
-
- var value = [].concat(getSC(), getIdentOrInterpolation(), getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:nth-child(-3n + 2)`
- */
- function checkPseudoClass3(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkUnary(i)) i += l;
-
- if (l = checkNumberOrInterpolation(i)) i += l;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].value === 'n') i++;
-
- if (l = checkSC(i)) i += l;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.PlusSign || tokens[i].type === TokenType.HyphenMinus) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkNumberOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass3() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content = content.concat(getIdentOrInterpolation());
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
- var value = [];
-
- // Skip `(`.
- pos++;
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
- if (checkNumberOrInterpolation(pos)) value = value.concat(getNumberOrInterpolation());
-
- {
- var _token3 = tokens[pos];
-
- if (_token3.value === 'n') {
- var _l = _token3.ln;
- var _c = _token3.col;
- var _content2 = _token3.value;
- var ident = newNode(NodeType.IdentType, _content2, _l, _c);
- value.push(ident);
- pos++;
- }
- }
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
-
- value = value.concat(getSC());
-
- if (checkNumberOrInterpolation(pos)) value = value.concat(getNumberOrInterpolation());
-
- value = value.concat(getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:nth-child(-3n)`
- */
- function checkPseudoClass4(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (i >= tokensLength) return 0;
- if (tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkUnary(i)) i += l;
-
- if (l = checkInterpolation(i)) i += l;
-
- if (tokens[i].type === TokenType.DecimalNumber) i++;
-
- if (tokens[i].value === 'n') i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass4() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content = content.concat(getIdentOrInterpolation());
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
- var value = [];
-
- // Skip `(`.
- pos++;
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
- if (checkInterpolation(pos)) value.push(getInterpolation());
- if (checkNumber(pos)) value.push(getNumber());
- if (checkIdent(pos)) value.push(getIdent());
-
- value = value.concat(getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:nth-child(+8)`
- */
- function checkPseudoClass5(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (i >= tokensLength) return 0;
- if (tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkUnary(i)) i += l;
- if (tokens[i].type === TokenType.DecimalNumber) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass5() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content = content.concat(getIdentOrInterpolation());
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
- var value = [];
-
- // Skip `(`.
- pos++;
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
- if (checkNumber(pos)) value.push(getNumber());
-
- value = value.concat(getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:checked`
- */
- function checkPseudoClass6(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getPseudoClass6() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `:`.
- pos++;
-
- var content = getIdentOrInterpolation();
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkRuleset(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) {
- i += l;
- } else if (l = checkSC(i)) {
- i += l;
- if (l = checkBlock(i)) i += l;else return 0;
- } else return 0;
-
- return i - start;
- }
-
- function getRuleset() {
- var type = NodeType.RulesetType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getSelectorsGroup(), getSC());
-
- if (checkBlock(pos)) {
- content.push(getBlock());
- } else {
- content = content.concat(getSC(), getBlock());
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is marked as a space (if it's a space or a tab
- * or a line break).
- * @param {number} i
- * @return {number} Number of spaces in a row starting with the given token.
- */
- function checkS(i) {
- return i < tokensLength && tokens[i].ws ? tokens[i].ws_last - i + 1 : 0;
- }
-
- /**
- * Get node with spaces
- * @return {Array} `['s', x]` where `x` is a string containing spaces
- */
- function getS() {
- var type = NodeType.SType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, tokens[pos].ws_last);
-
- pos = tokens[pos].ws_last + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a space, newline, or a comment.
- * @param {number} i Token's index number
- * @return {number} Number of similar (space, newline, or comment) tokens
- * in a row starting with the given token.
- */
- function checkMultilineSC(i) {
- if (!tokens[i]) return 0;
-
- var l = void 0;
- var lsc = 0;
-
- while (i < tokensLength) {
- if (!(l = checkS(i)) && !(l = checkCommentML(i)) && !(l = checkCommentSL(i))) break;
-
- i += l;
- lsc += l;
- }
-
- return lsc || 0;
- }
-
- /**
- * Get node with spaces newlines and comments
- * @return {!Node}
- */
- function getMultilineSC() {
- var sc = [];
-
- if (pos >= tokensLength) return sc;
-
- while (pos < tokensLength) {
- if (checkS(pos)) sc.push(getS());else if (checkCommentML(pos)) sc.push(getCommentML());else if (checkCommentSL(pos)) sc.push(getCommentSL());else break;
- }
-
- return sc;
- }
-
- /**
- * Check if token is a space or a comment.
- * @param {number} i Token's index number
- * @return {number} Number of similar (space or comment) tokens
- * in a row starting with the given token.
- */
- function checkSC(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
- var lsc = 0;
- var ln = tokens[i].ln;
-
- while (i < tokensLength) {
- if (tokens[i].ln !== ln) break;
-
- if (l = checkS(i)) tokens[i].sc_child = 1;else if (l = checkCommentML(i)) tokens[i].sc_child = 2;else if (l = checkCommentSL(i)) tokens[i].sc_child = 3;else break;
-
- i += l;
- lsc += l;
-
- if (tokens[i] && tokens[i].type === TokenType.Newline) break;
- }
-
- return lsc || 0;
- }
-
- /**
- * Get node with spaces and comments
- * @return {Array} Array containing nodes with spaces (if there are any)
- * and nodes with comments (if there are any):
- * `[['s', x]*, ['comment', y]*]` where `x` is a string of spaces
- * and `y` is a comment's text (without `/*` and `* /`).
- */
- function getSC() {
- var sc = [];
-
- if (pos >= tokensLength) return sc;
-
- var ln = tokens[pos].ln;
-
- while (pos < tokensLength) {
- if (tokens[pos].ln !== ln) break;else if (checkS(pos)) sc.push(getS());else if (checkCommentML(pos)) sc.push(getCommentML());else if (checkCommentSL(pos)) sc.push(getCommentSL());else break;
-
- if (tokens[pos] && tokens[pos].type === TokenType.Newline) break;
- }
-
- return sc;
- }
-
- /**
- * Check if token is part of a hexadecimal number (e.g. `#fff`) inside a simple
- * selector
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkShash(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.NumberSign) i++;else return 0;
-
- if (l = checkIdentOrInterpolation(i) || checkPartialIdent(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- if (l = checkIdentOrInterpolation(i) || checkPartialIdent(i)) i += l;else break;
- }
-
- tokens[start].shashEnd = i;
-
- return i - start;
- }
-
- /**
- * Get node with a hexadecimal number (e.g. `#fff`) inside a simple selector
- * @return {Node}
- */
- function getShash() {
- var type = NodeType.ShashType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var end = token.shashEnd;
- var content = [];
-
- // Skip `#`.
- pos++;
-
- while (pos < end) {
- if (checkIdentOrInterpolation(pos)) {
- content = content.concat(getIdentOrInterpolation());
- } else if (checkPartialIdent(pos)) {
- content.push(getIdent());
- } else break;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a string (text wrapped in quotes)
- * @param {number} i Token's index number
- * @return {number} `1` if token is part of a string, `0` if not
- */
- function checkString(i) {
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.StringSQ || tokens[i].type === TokenType.StringDQ) {
- return 1;
- }
-
- return 0;
- }
-
- /**
- * Get string's node
- * @return {Array} `['string', x]` where `x` is a string (including
- * quotes).
- */
- function getString() {
- var type = NodeType.StringType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Validate stylesheet: it should consist of any number (0 or more) of
- * rulesets (sets of rules with selectors), @-rules, whitespaces or
- * comments.
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkStylesheet(i) {
- var start = i;
- var l = void 0;
-
- while (i < tokensLength) {
- if (l = checkSC(i) || checkDeclaration(i) || checkDeclDelim(i) || checkInclude(i) || checkExtend(i) || checkMixin(i) || checkLoop(i) || checkConditionalStatement(i) || checkAtrule(i) || checkRuleset(i)) i += l;else throwError(i);
- }
-
- return i - start;
- }
-
- /**
- * @return {Array} `['stylesheet', x]` where `x` is all stylesheet's
- * nodes.
- */
- function getStylesheet() {
- var type = NodeType.StylesheetType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var node = void 0;
- var wasDeclaration = false;
-
- while (pos < tokensLength) {
- if (wasDeclaration && checkDeclDelim(pos)) node = getDeclDelim();else if (checkSC(pos)) node = getSC();else if (checkRuleset(pos)) node = getRuleset();else if (checkInclude(pos)) node = getInclude();else if (checkExtend(pos)) node = getExtend();else if (checkMixin(pos)) node = getMixin();else if (checkLoop(pos)) node = getLoop();else if (checkConditionalStatement(pos)) node = getConditionalStatement();else if (checkAtrule(pos)) node = getAtrule();else if (checkDeclaration(pos)) node = getDeclaration();else throwError(pos);
-
- wasDeclaration = node.type === NodeType.DeclarationType;
- if (Array.isArray(node)) content = content.concat(node);else content.push(node);
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkTset(i) {
- return checkVhash(i) || checkOperator(i) || checkAny(i) || checkSC(i);
- }
-
- /**
- * @return {Array}
- */
- function getTset() {
- if (checkVhash(pos)) return getVhash();else if (checkOperator(pos)) return getOperator();else if (checkAny(pos)) return getAny();else if (checkSC(pos)) return getSC();
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkTsets(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- while (tokens[i - 1].type !== TokenType.Newline && (l = checkTset(i))) {
- i += l;
- }
-
- return i - start;
- }
-
- /**
- * @return {Array}
- */
- function getTsets() {
- var content = [];
- var t = void 0;
-
- while (tokens[pos - 1].type !== TokenType.Newline && (t = getTset())) {
- if (typeof t.content === 'string') content.push(t);else content = content.concat(t);
- }
-
- return content;
- }
-
- /**
- * Check if token is an unary (arithmetical) sign (`+` or `-`)
- * @param {number} i Token's index number
- * @return {number} `1` if token is an unary sign, `0` if not
- */
- function checkUnary(i) {
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.HyphenMinus || tokens[i].type === TokenType.PlusSign) {
- return 1;
- }
-
- return 0;
- }
-
- /**
- * Get node with an unary (arithmetical) sign (`+` or `-`)
- * @return {Array} `['unary', x]` where `x` is an unary sign
- * converted to string.
- */
- function getUnary() {
- var type = NodeType.OperatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a unicode range (single or multiple <urange> nodes)
- * @param {number} i Token's index
- * @return {number} Unicode range node's length
- */
- function checkUnicodeRange(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkUrange(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var spaceBefore = checkSC(i);
- var comma = checkDelim(i + spaceBefore);
- if (!comma) break;
-
- var spaceAfter = checkSC(i + spaceBefore + comma);
- if (l = checkUrange(i + spaceBefore + comma + spaceAfter)) {
- i += spaceBefore + comma + spaceAfter + l;
- } else break;
- }
-
- return i - start;
- }
-
- /**
- * Get a unicode range node
- * @return {Node}
- */
- function getUnicodeRange() {
- var type = NodeType.UnicodeRangeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- while (pos < tokensLength) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkDelim(pos)) content.push(getDelim());else if (checkUrange(pos)) content.push(getUrange());else break;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is unit
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkUnit(i) {
- var units = ['em', 'ex', 'ch', 'rem', 'vh', 'vw', 'vmin', 'vmax', 'px', 'mm', 'q', 'cm', 'in', 'pt', 'pc', 'deg', 'grad', 'rad', 'turn', 's', 'ms', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'];
-
- return units.indexOf(tokens[i].value) !== -1 ? 1 : 0;
- }
-
- /**
- * Get unit node of type ident
- * @return {Node} An ident node containing the unit value
- */
- function getUnit() {
- var type = NodeType.IdentType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a u-range (part of a unicode-range)
- * (1) `U+416`
- * (2) `U+400-4ff`
- * (3) `U+4??`
- * @param {number} i Token's index
- * @return {number} Urange node's length
- */
- function checkUrange(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- // Check for unicode prefix (u+ or U+)
- if (tokens[i].value === 'U' || tokens[i].value === 'u') i += 1;else return 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].value === '+') i += 1;else return 0;
-
- while (i < tokensLength) {
- if (l = checkIdent(i)) i += l;else if (l = checkNumber(i)) i += l;else if (l = checkUnary(i)) i += l;else if (l = _checkUnicodeWildcard(i)) i += l;else break;
- }
-
- tokens[start].urangeEnd = i - 1;
-
- return i - start;
- }
-
- /**
- * Get a u-range node (part of a unicode-range)
- * @return {Node}
- */
- function getUrange() {
- var startPos = pos;
- var type = NodeType.UrangeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content = joinValues(startPos, tokens[startPos].urangeEnd);
- pos = tokens[startPos].urangeEnd + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check for unicode wildcard characters `?`
- * @param {number} i Token's index
- * @return {number} Wildcard length
- */
- function _checkUnicodeWildcard(i) {
- var start = i;
-
- if (i >= tokensLength) return 0;
-
- while (i < tokensLength) {
- if (tokens[i].type === TokenType.QuestionMark) i += 1;else break;
- }
-
- return i - start;
- }
-
- /**
- * Check if token is part of URI, e.g. `url('/css/styles.css')`
- * @param {number} i Token's index number
- * @returns {number} Length of URI
- */
- function checkUri(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength || tokens[i].value !== 'url') return 0;
-
- // Skip `url`.
- i++;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- // Store the opening parenthesis token as we will reference it's `right`
- // property to determine when the parentheses close
- var leftParenthesis = tokens[i];
-
- // Skip `(`.
- i++;
-
- // Determine the type of URI
- while (i < leftParenthesis.right) {
- if (l = checkUri1(i)) {
- i += l;
- tokens[start].uriType = 1; // Raw based URI (without quotes)
- } else if (l = checkUri2(i)) {
- i += l;
- tokens[start].uriType = 2; // Non-raw based URI (with quotes)
- } else return 0;
- }
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- /**
- * Get specific type of URI node
- * @return {Node} Specific type of URI node
- */
- function getUri() {
- var startPos = pos;
- var type = NodeType.UriType;
- var token = tokens[startPos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var end = void 0;
-
- var uriType = tokens[startPos].uriType;
-
- // Skip `url` and `(`.
- pos += 2;
-
- if (uriType === 1) content = content.concat(getUri1());else if (uriType === 2) content = content.concat(getUri2());else end = getLastPosition(content, line, column, 4);
-
- if (!end) end = getLastPosition(content, line, column, 1);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token type is valid URI character
- * @param {number} i Token's index number
- * @return {number} Length of raw node
- */
- function checkUriRawCharacters(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkIdent(i)) i += l;else if (l = checkNumber(i)) i += l;else {
- switch (tokens[i].type) {
- case TokenType.ExclamationMark:
- case TokenType.NumberSign:
- case TokenType.DollarSign:
- case TokenType.PercentSign:
- case TokenType.Ampersand:
- case TokenType.Asterisk:
- case TokenType.PlusSign:
- case TokenType.Comma:
- case TokenType.HyphenMinus:
- case TokenType.FullStop:
- case TokenType.Solidus:
- case TokenType.Colon:
- case TokenType.Semicolon:
- case TokenType.LessThanSign:
- case TokenType.EqualsSign:
- case TokenType.GreaterThanSign:
- case TokenType.QuotationMark:
- case TokenType.CommercialAt:
- case TokenType.LeftSquareBracket:
- case TokenType.RightSquareBracket:
- case TokenType.CircumflexAccent:
- case TokenType.LowLine:
- case TokenType.LeftCurlyBracket:
- case TokenType.VerticalLine:
- case TokenType.RightCurlyBracket:
- case TokenType.Tilde:
- i += 1;
- break;
-
- default:
- return 0;
- }
- }
-
- return i - start;
- }
-
- /**
- * Check if content of URI can be contained within a raw node
- * @param {number} i Token's index number
- * @return {number} Length of raw node
- */
- function checkUriRaw(i) {
- var start = i;
- var l = void 0;
-
- while (i < tokensLength) {
- if (checkInterpolation(i) || checkVariable(i)) break;else if (l = checkUriRawCharacters(i)) i += l;else break;
- }
-
- tokens[start].uri_raw_end = i;
-
- return i - start;
- }
-
- /**
- * Get a raw node
- * @return {Node}
- */
- function getUriRaw() {
- var startPos = pos;
- var type = NodeType.RawType;
- var token = tokens[startPos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var l = void 0;
-
- while (pos < tokens[startPos].uri_raw_end) {
- if (checkInterpolation(pos) || checkVariable(pos)) break;else if (l = checkUriRawCharacters(pos)) pos += l;else break;
- }
-
- content = joinValues(startPos, pos - 1);
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check for a raw (without quotes) URI
- * (1) http://foo.com/bar.png
- * (2) http://foo.com/#{$bar}.png
- * (3) #{$foo}/bar.png
- * (4) #{$foo}
- * @param {number} i Token's index number
- * @return {number} Length of URI node
- */
- function checkUri1(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkSC(i)) i += l;
-
- while (i < tokensLength) {
- if (l = checkInterpolation(i) || checkUriRaw(i)) i += l;else break;
- }
-
- if (l = checkSC(i)) i += l;
-
- // Check that we are at the end of the uri
- if (i < tokens[start - 1].right) return 0;
-
- tokens[start].uri_end = i;
-
- return i - start;
- }
-
- /**
- * Get a raw (without quotes) URI
- node
- * @return {Array}
- */
- function getUri1() {
- var startPos = pos;
- var content = [];
-
- if (checkSC(pos)) content = content.concat(getSC());
-
- while (pos < tokens[startPos].uri_end) {
- if (checkInterpolation(pos)) content.push(getInterpolation());else if (checkUriRaw(pos)) content.push(getUriRaw());else break;
- }
-
- if (checkSC(pos)) content = content.concat(getSC());
-
- return content;
- }
-
- /**
- * Check for a non-raw (with quotes) URI
- * (1) 'http://foo.com/bar.png'
- * (2) 'http://foo.com/'#{$bar}.png
- * (3) #{$foo}'/bar.png'
- * @param {number} i Token's index number
- * @return {number} Length of URI node
- */
- function checkUri2(i) {
- var start = i;
- var l = void 0;
-
- while (i < tokensLength) {
- if (l = checkSC(i)) i += l;else if (l = checkString(i)) i += l;else if (l = checkFunction(i)) i += l;else if (l = checkUnary(i)) i += l;else if (l = checkIdentOrInterpolation(i)) i += l;else if (l = checkVariable(i)) i += l;else break;
- }
-
- // Check that we are at the end of the uri
- if (i < tokens[start - 1].right) return 0;
-
- tokens[start].uri_end = i;
-
- return i - start;
- }
-
- /**
- * Get a non-raw (with quotes) URI node
- * @return {Array}
- */
- function getUri2() {
- var startPos = pos;
- var content = [];
-
- while (pos < tokens[startPos].uri_end) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkUnary(pos)) content.push(getUnary());else if (_checkValue(pos)) content.push(_getValue());else break;
- }
-
- return content;
- }
-
- /**
- * Check if token is part of a value
- * @param {number} i Token's index number
- * @return {number} Length of the value
- */
- function checkValue(i) {
- var start = i;
- var l = void 0;
- var s = void 0;
- var _i = void 0;
-
- while (i < tokensLength) {
- if (checkDeclDelim(i)) break;
-
- if (l = checkBlock(i)) {
- i += l;
- break;
- }
-
- s = checkS(i);
- _i = i + s;
-
- if (l = _checkValue(_i)) i += l + s;
- if (!l || checkBlock(i - l)) break;
- }
-
- return i - start;
- }
-
- /**
- * @return {Array}
- */
- function getValue() {
- var type = NodeType.ValueType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var _pos = void 0;
- var s = void 0;
-
- while (pos < tokensLength) {
- if (checkDeclDelim(pos)) break;
-
- s = checkS(pos);
- _pos = pos + s;
-
- if (checkDeclDelim(_pos)) break;
-
- if (checkBlock(pos)) {
- content.push(getBlock());
- break;
- }
-
- if (!_checkValue(_pos)) break;
-
- if (s) content.push(getS());
- content.push(_getValue());
-
- if (checkBlock(_pos)) break;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @return {number}
- */
- function _checkValue(i) {
- var l = void 0;
-
- if (l = checkInterpolation(i)) tokens[i].value_child = 1;else if (l = checkVariable(i)) tokens[i].value_child = 2;else if (l = checkVhash(i)) tokens[i].value_child = 3;else if (l = checkBlock(i)) tokens[i].value_child = 4;else if (l = checkAtkeyword(i)) tokens[i].value_child = 5;else if (l = checkOperator(i)) tokens[i].value_child = 6;else if (l = checkImportant(i)) tokens[i].value_child = 7;else if (l = checkGlobal(i)) tokens[i].value_child = 8;else if (l = checkDefault(i)) tokens[i].value_child = 9;else if (l = checkProgid(i)) tokens[i].value_child = 10;else if (l = checkAny(i)) tokens[i].value_child = 11;else if (l = checkParentSelector(i)) tokens[i].value_child = 12;
-
- return l;
- }
-
- /**
- * @return {Array}
- */
- function _getValue() {
- var childType = tokens[pos].value_child;
- if (childType === 1) return getInterpolation();
- if (childType === 2) return getVariable();
- if (childType === 3) return getVhash();
- if (childType === 4) return getBlock();
- if (childType === 5) return getAtkeyword();
- if (childType === 6) return getOperator();
- if (childType === 7) return getImportant();
- if (childType === 8) return getGlobal();
- if (childType === 9) return getDefault();
- if (childType === 10) return getProgid();
- if (childType === 11) return getAny();
- if (childType === 12) return getParentSelector();
- }
-
- /**
- * @param {number} i Token's index number
- * @returns {number} Length of the value
- */
- function checkSingleValue(i) {
- var start = i;
- var l = void 0;
- var s = void 0;
- var _i = void 0;
-
- while (i < tokensLength) {
- if (checkDeclDelim(i) || checkDelim(i)) break;
-
- if (l = checkBlock(i)) {
- i += l;
- break;
- }
-
- s = checkSC(i);
- _i = i + s;
-
- if (l = _checkValue(_i)) i += l + s;
- if (!l || checkBlock(i - l)) break;
- }
-
- return i - start;
- }
-
- /**
- * @returns {Array}
- */
- function getSingleValue() {
- var type = NodeType.ValueType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var _pos = void 0;
- var s = void 0;
-
- while (pos < tokensLength) {
- if (checkDeclDelim(pos) || checkDelim(pos)) break;
-
- s = checkSC(pos);
- _pos = pos + s;
-
- if (checkDeclDelim(_pos) || checkDelim(_pos)) break;
-
- if (checkBlock(pos)) {
- content.push(getBlock());
- break;
- }
-
- if (!_checkValue(_pos)) break;
-
- if (s) content.push(getS());
- content.push(_getValue());
-
- if (checkBlock(_pos)) break;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a variable
- * @param {number} i Token's index number
- * @return {number} Length of the variable
- */
- function checkVariable(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- // Skip `$`.
- if (tokens[i].type === TokenType.DollarSign) i++;else return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a variable
- * @return {Array} `['variable', ['ident', x]]` where `x` is
- * a variable name.
- */
- function getVariable() {
- var type = NodeType.VariableType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `$`.
- pos++;
-
- var content = [getIdent()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a variables list (e.g. `$values...`).
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkVariablesList(i) {
- var d = 0; // Number of dots
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkVariable(i)) i += l;else return 0;
-
- while (i < tokensLength && tokens[i].type === TokenType.FullStop) {
- d++;
- i++;
- }
-
- return d === 3 ? l + d : 0;
- }
-
- /**
- * Get node with a variables list
- * @return {Array} `['variableslist', ['variable', ['ident', x]]]` where
- * `x` is a variable name.
- */
- function getVariablesList() {
- var type = NodeType.VariablesListType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getVariable()];
- var end = getLastPosition(content, line, column, 3);
-
- // Skip `...`.
- pos += 3;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a hexadecimal number (e.g. `#fff`) inside
- * some value
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkVhash(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- // Skip `#`.
- if (tokens[i].type === TokenType.NumberSign) i++;else return 0;
-
- if (l = checkNmName2(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a hexadecimal number (e.g. `#fff`) inside some value
- * @return {Array} `['vhash', x]` where `x` is a hexadecimal number
- * converted to string (without `#`, e.g. `'fff'`).
- */
- function getVhash() {
- var type = NodeType.VhashType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `#`.
- pos++;
-
- var content = getNmName2();
- var end = getLastPosition(content, line, column + 1);
- return newNode(type, content, line, column, end);
- }
-
- function checkSelectorsGroup(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkSelector(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var spaceBefore = checkSC(i);
- var comma = checkDelim(i + spaceBefore);
- if (!comma) break;
-
- var spaceAfter = checkMultilineSC(i + spaceBefore + comma);
- var spaceEnd = spaceAfter ? checkMultilineSC(i + spaceBefore + comma + spaceAfter) : 0;
-
- if (l = checkSelector(i + spaceBefore + comma + spaceAfter + spaceEnd)) i += spaceBefore + comma + spaceAfter + spaceEnd + l;else break;
- }
-
- tokens[start].selectorsGroupEnd = i;
- return i - start;
- }
-
- function getSelectorsGroup() {
- var selectorsGroup = [];
- var selectorsGroupEnd = tokens[pos].selectorsGroupEnd;
-
- selectorsGroup.push(getSelector());
-
- while (pos < selectorsGroupEnd) {
- selectorsGroup = selectorsGroup.concat(getMultilineSC(), getDelim(), getMultilineSC(), getSelector());
- }
-
- return selectorsGroup;
- }
-
- function checkSelector(i) {
- var l = void 0;
-
- if (l = checkSelector1(i)) tokens[i].selectorType = 1;else if (l = checkSelector2(i)) tokens[i].selectorType = 2;
-
- return l;
- }
-
- function getSelector() {
- var selectorType = tokens[pos].selectorType;
- if (selectorType === 1) return getSelector1();else return getSelector2();
- }
-
- /**
- * Checks for selector which starts with a compound selector.
- */
- function checkSelector1(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkCompoundSelector(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var space = checkSC(i);
- var comma = checkCombinator(i + space);
- if (!space && !comma) break;
-
- if (comma) {
- i += space + comma;
- space = checkSC(i);
- }
-
- if (l = checkCompoundSelector(i + space)) i += space + l;else break;
- }
-
- tokens[start].selectorEnd = i;
- return i - start;
- }
-
- function getSelector1() {
- var type = NodeType.SelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var selectorEnd = token.selectorEnd;
- var content = getCompoundSelector();
-
- while (pos < selectorEnd) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkCombinator(pos)) content.push(getCombinator());else if (checkCompoundSelector(pos)) content = content.concat(getCompoundSelector());
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Checks for a selector that starts with a combinator.
- */
- function checkSelector2(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkCombinator(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var spaceBefore = checkSC(i);
- if (l = checkCompoundSelector(i + spaceBefore)) i += spaceBefore + l;else break;
-
- var spaceAfter = checkSC(i);
- var comma = checkCombinator(i + spaceAfter);
- if (!spaceAfter && !comma) break;
- if (comma) {
- i += spaceAfter + comma;
- }
- }
-
- tokens[start].selectorEnd = i;
- return i - start;
- }
-
- function getSelector2() {
- var type = NodeType.SelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var selectorEnd = token.selectorEnd;
- var content = [getCombinator()];
-
- while (pos < selectorEnd) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkCombinator(pos)) content.push(getCombinator());else if (checkCompoundSelector(pos)) content = content.concat(getCompoundSelector());
- }
-
- return newNode(type, content, line, column);
- }
-
- function checkCompoundSelector(i) {
- var l = void 0;
-
- if (l = checkCompoundSelector1(i)) {
- tokens[i].compoundSelectorType = 1;
- } else if (l = checkCompoundSelector2(i)) {
- tokens[i].compoundSelectorType = 2;
- }
-
- return l;
- }
-
- function getCompoundSelector() {
- var type = tokens[pos].compoundSelectorType;
- if (type === 1) return getCompoundSelector1();
- if (type === 2) return getCompoundSelector2();
- }
-
- /**
- * Check for compound selectors that start with either a type selector,
- * placeholder or parent selector with extension
- * (1) `foo.bar`
- * (2) `foo[attr=val]`
- * (3) `foo:first-of-type`
- * (4) `foo%bar`
- * @param {number} i Token's index
- * @return {number} Compound selector's length
- */
- function checkCompoundSelector1(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkUniversalSelector(i) || checkTypeSelector(i) || checkPlaceholder(i) || checkParentSelectorWithExtension(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var _l2 = checkShash(i) || checkClass(i) || checkAttributeSelector(i) || checkPseudo(i) || checkPlaceholder(i) || checkInterpolation(i);
-
- if (_l2) i += _l2;else break;
- }
-
- tokens[start].compoundSelectorEnd = i;
-
- return i - start;
- }
-
- /**
- * @return {Array} An array of nodes that make up the compound selector
- */
- function getCompoundSelector1() {
- var sequence = [];
- var compoundSelectorEnd = tokens[pos].compoundSelectorEnd;
-
- if (checkUniversalSelector(pos)) sequence.push(getUniversalSelector());else if (checkTypeSelector(pos)) sequence.push(getTypeSelector());else if (checkPlaceholder(pos)) sequence.push(getPlaceholder());else if (checkParentSelectorWithExtension(pos)) sequence = sequence.concat(getParentSelectorWithExtension());
-
- while (pos < compoundSelectorEnd) {
- if (checkShash(pos)) sequence.push(getShash());else if (checkClass(pos)) sequence.push(getClass());else if (checkAttributeSelector(pos)) sequence.push(getAttributeSelector());else if (checkPseudo(pos)) sequence.push(getPseudo());else if (checkPlaceholder(pos)) sequence.push(getPlaceholder());else if (checkInterpolation(pos)) sequence.push(getInterpolation());else break;
- }
-
- return sequence;
- }
-
- /**
- * Check for all other compound selectors
- * (1) `.foo.bar`
- * (2) `.foo[attr=val]`
- * (3) `.foo:first-of-type`
- * (4) `.foo%bar`
- * (5) `.foo#{$bar}`
- * @param {number} i Token's index
- * @return {number} Compound selector's length
- */
- function checkCompoundSelector2(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
-
- while (i < tokensLength) {
- var l = checkShash(i) || checkClass(i) || checkAttributeSelector(i) || checkPseudo(i) || checkPlaceholder(i) || checkInterpolation(i);
-
- if (l) i += l;else break;
- }
-
- tokens[start].compoundSelectorEnd = i;
-
- return i - start;
- }
-
- /**
- * @return {Array} An array of nodes that make up the compound selector
- */
- function getCompoundSelector2() {
- var sequence = [];
- var compoundSelectorEnd = tokens[pos].compoundSelectorEnd;
-
- while (pos < compoundSelectorEnd) {
- if (checkShash(pos)) sequence.push(getShash());else if (checkClass(pos)) sequence.push(getClass());else if (checkAttributeSelector(pos)) sequence.push(getAttributeSelector());else if (checkPseudo(pos)) sequence.push(getPseudo());else if (checkPlaceholder(pos)) sequence.push(getPlaceholder());else if (checkInterpolation(pos)) sequence.push(getInterpolation());else break;
- }
-
- return sequence;
- }
-
- function checkUniversalSelector(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkNamePrefix(i)) i += l;
-
- if (tokens[i].type === TokenType.Asterisk) i++;else return 0;
-
- return i - start;
- }
-
- function getUniversalSelector() {
- var type = NodeType.UniversalSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var end = void 0;
-
- if (checkNamePrefix(pos)) {
- content.push(getNamePrefix());
- end = getLastPosition(content, line, column, 1);
- }
-
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a type selector
- * @param {number} i Token's index
- * @return {number} Type selector's length
- */
- function checkTypeSelector(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkNamePrefix(i)) i += l;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get type selector node
- * @return {Node}
- */
- function getTypeSelector() {
- var type = NodeType.TypeSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (checkNamePrefix(pos)) content.push(getNamePrefix());
-
- content = content.concat(getIdentOrInterpolation());
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeSelector(i) {
- var l = void 0;
- if (l = checkAttributeSelector1(i)) tokens[i].attributeSelectorType = 1;else if (l = checkAttributeSelector2(i)) tokens[i].attributeSelectorType = 2;
-
- return l;
- }
-
- function getAttributeSelector() {
- var type = tokens[pos].attributeSelectorType;
- if (type === 1) return getAttributeSelector1();else return getAttributeSelector2();
- }
-
- /**
- * (1) `[panda=nani]`
- * (2) `[panda='nani']`
- * (3) `[panda='nani' i]`
- *
- */
- function checkAttributeSelector1(i) {
- var start = i;
-
- if (tokens[i].type === TokenType.LeftSquareBracket) i++;else return 0;
-
- var l = void 0;
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeName(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeMatch(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeValue(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeFlags(i)) {
- i += l;
- if (l = checkSC(i)) i += l;
- }
-
- if (tokens[i].type === TokenType.RightSquareBracket) i++;else return 0;
-
- return i - start;
- }
-
- function getAttributeSelector1() {
- var type = NodeType.AttributeSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `[`.
- pos++;
-
- content = content.concat(getSC(), getAttributeName(), getSC(), getAttributeMatch(), getSC(), getAttributeValue(), getSC());
-
- if (checkAttributeFlags(pos)) {
- content.push(getAttributeFlags());
- content = content.concat(getSC());
- }
-
- // Skip `]`.
- pos++;
-
- var end = getLastPosition(content, line, column, 1);
- return newNode(type, content, line, column, end);
- }
-
- /**
- * (1) `[panda]`
- */
- function checkAttributeSelector2(i) {
- var start = i;
-
- if (tokens[i].type === TokenType.LeftSquareBracket) i++;else return 0;
-
- var l = void 0;
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeName(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].type === TokenType.RightSquareBracket) i++;else return 0;
-
- return i - start;
- }
-
- function getAttributeSelector2() {
- var type = NodeType.AttributeSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `[`.
- pos++;
-
- content = content.concat(getSC(), getAttributeName(), getSC());
-
- // Skip `]`.
- pos++;
-
- var end = getLastPosition(content, line, column, 1);
- return newNode(type, content, line, column, end);
- }
-
- function checkAttributeName(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkNamePrefix(i)) i += l;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getAttributeName() {
- var type = NodeType.AttributeNameType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (checkNamePrefix(pos)) content.push(getNamePrefix());
- content = content.concat(getIdentOrInterpolation());
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeMatch(i) {
- var l = void 0;
- if (l = checkAttributeMatch1(i)) tokens[i].attributeMatchType = 1;else if (l = checkAttributeMatch2(i)) tokens[i].attributeMatchType = 2;
-
- return l;
- }
-
- function getAttributeMatch() {
- var type = tokens[pos].attributeMatchType;
- if (type === 1) return getAttributeMatch1();else return getAttributeMatch2();
- }
-
- function checkAttributeMatch1(i) {
- var start = i;
-
- var type = tokens[i].type;
- if (type === TokenType.Tilde || type === TokenType.VerticalLine || type === TokenType.CircumflexAccent || type === TokenType.DollarSign || type === TokenType.Asterisk) i++;else return 0;
-
- if (tokens[i].type === TokenType.EqualsSign) i++;else return 0;
-
- return i - start;
- }
-
- function getAttributeMatch1() {
- var type = NodeType.AttributeMatchType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = tokens[pos].value + tokens[pos + 1].value;
- pos += 2;
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeMatch2(i) {
- if (tokens[i].type === TokenType.EqualsSign) return 1;else return 0;
- }
-
- function getAttributeMatch2() {
- var type = NodeType.AttributeMatchType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '=';
-
- pos++;
- return newNode(type, content, line, column);
- }
-
- function checkAttributeValue(i) {
- return checkString(i) || checkIdentOrInterpolation(i);
- }
-
- function getAttributeValue() {
- var type = NodeType.AttributeValueType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (checkString(pos)) content.push(getString());else content = content.concat(getIdentOrInterpolation());
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeFlags(i) {
- return checkIdentOrInterpolation(i);
- }
-
- function getAttributeFlags() {
- var type = NodeType.AttributeFlagsType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = getIdentOrInterpolation();
-
- return newNode(type, content, line, column);
- }
-
- function checkNamePrefix(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
- if (l = checkNamePrefix1(i)) tokens[i].namePrefixType = 1;else if (l = checkNamePrefix2(i)) tokens[i].namePrefixType = 2;
-
- return l;
- }
-
- function getNamePrefix() {
- var type = tokens[pos].namePrefixType;
- if (type === 1) return getNamePrefix1();else return getNamePrefix2();
- }
-
- /**
- * (1) `panda|`
- * (2) `panda<comment>|`
- */
- function checkNamePrefix1(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkNamespacePrefix(i)) i += l;else return 0;
-
- if (l = checkCommentML(i)) i += l;
-
- if (l = checkNamespaceSeparator(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getNamePrefix1() {
- var type = NodeType.NamePrefixType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content.push(getNamespacePrefix());
-
- if (checkCommentML(pos)) content.push(getCommentML());
-
- content.push(getNamespaceSeparator());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `|`
- */
- function checkNamePrefix2(i) {
- return checkNamespaceSeparator(i);
- }
-
- function getNamePrefix2() {
- var type = NodeType.NamePrefixType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getNamespaceSeparator()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `*`
- * (2) `panda`
- */
- function checkNamespacePrefix(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
-
- if (tokens[i].type === TokenType.Asterisk) return 1;else if (l = checkIdentOrInterpolation(i)) return l;else return 0;
- }
-
- function getNamespacePrefix() {
- var type = NodeType.NamespacePrefixType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (token.type === TokenType.Asterisk) {
- var asteriskNode = newNode(NodeType.IdentType, '*', line, column);
- content.push(asteriskNode);
- pos++;
- } else if (checkIdentOrInterpolation(pos)) content = content.concat(getIdentOrInterpolation());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `|`
- */
- function checkNamespaceSeparator(i) {
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type !== TokenType.VerticalLine) return 0;
-
- // Return false if `|=` - [attr|=value]
- if (tokens[i + 1] && tokens[i + 1].type === TokenType.EqualsSign) return 0;
-
- return 1;
- }
-
- function getNamespaceSeparator() {
- var type = NodeType.NamespaceSeparatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '|';
-
- pos++;
- return newNode(type, content, line, column);
- }
-
- module.exports = function (_tokens, context) {
- tokens = _tokens;
- tokensLength = tokens.length;
- pos = 0;
-
- return contexts[context]();
- };
-
-/***/ }),
-/* 24 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- module.exports = function (css, tabSize) {
- var TokenType = __webpack_require__(13);
-
- var tokens = [];
- var urlMode = false;
- var c = void 0; // Current character
- var cn = void 0; // Next character
- var pos = 0;
- var tn = 0;
- var ln = 1;
- var col = 1;
-
- var Punctuation = {
- ' ': TokenType.Space,
- '\n': TokenType.Newline,
- '\r': TokenType.Newline,
- '\t': TokenType.Tab,
- '!': TokenType.ExclamationMark,
- '"': TokenType.QuotationMark,
- '#': TokenType.NumberSign,
- '$': TokenType.DollarSign,
- '%': TokenType.PercentSign,
- '&': TokenType.Ampersand,
- '\'': TokenType.Apostrophe,
- '(': TokenType.LeftParenthesis,
- ')': TokenType.RightParenthesis,
- '*': TokenType.Asterisk,
- '+': TokenType.PlusSign,
- ',': TokenType.Comma,
- '-': TokenType.HyphenMinus,
- '.': TokenType.FullStop,
- '/': TokenType.Solidus,
- ':': TokenType.Colon,
- ';': TokenType.Semicolon,
- '<': TokenType.LessThanSign,
- '=': TokenType.EqualsSign,
- '==': TokenType.EqualitySign,
- '!=': TokenType.InequalitySign,
- '>': TokenType.GreaterThanSign,
- '?': TokenType.QuestionMark,
- '@': TokenType.CommercialAt,
- '[': TokenType.LeftSquareBracket,
- ']': TokenType.RightSquareBracket,
- '^': TokenType.CircumflexAccent,
- '_': TokenType.LowLine,
- '{': TokenType.LeftCurlyBracket,
- '|': TokenType.VerticalLine,
- '}': TokenType.RightCurlyBracket,
- '~': TokenType.Tilde,
- '`': TokenType.Backtick
- };
-
- /**
- * Add a token to the token list
- * @param {string} type
- * @param {string} value
- */
- function pushToken(type, value, column) {
- tokens.push({
- tn: tn++,
- ln: ln,
- col: column,
- type: type,
- value: value
- });
- }
-
- /**
- * Check if a character is a decimal digit
- * @param {string} c Character
- * @returns {boolean}
- */
- function isDecimalDigit(c) {
- return '0123456789'.indexOf(c) >= 0;
- }
-
- /**
- * Parse spaces
- * @param {string} css Unparsed part of CSS string
- */
- function parseSpaces(css) {
- var start = pos;
-
- // Read the string until we meet a non-space character:
- for (; pos < css.length; pos++) {
- if (css.charAt(pos) !== ' ') break;
- }
-
- // Add a substring containing only spaces to tokens:
- pushToken(TokenType.Space, css.substring(start, pos--), col);
- col += pos - start;
- }
-
- /**
- * Parse a string within quotes
- * @param {string} css Unparsed part of CSS string
- * @param {string} q Quote (either `'` or `"`)
- */
- function parseString(css, q) {
- var start = pos;
-
- // Read the string until we meet a matching quote:
- for (pos++; pos < css.length; pos++) {
- // Skip escaped quotes:
- if (css.charAt(pos) === '\\') pos++;else if (css.charAt(pos) === q) break;
- }
-
- // Add the string (including quotes) to tokens:
- var type = q === '"' ? TokenType.StringDQ : TokenType.StringSQ;
- pushToken(type, css.substring(start, pos + 1), col);
- col += pos - start;
- }
-
- /**
- * Parse numbers
- * @param {string} css Unparsed part of CSS string
- */
- function parseDecimalNumber(css) {
- var start = pos;
-
- // Read the string until we meet a character that's not a digit:
- for (; pos < css.length; pos++) {
- if (!isDecimalDigit(css.charAt(pos))) break;
- }
-
- // Add the number to tokens:
- pushToken(TokenType.DecimalNumber, css.substring(start, pos--), col);
- col += pos - start;
- }
-
- /**
- * Parse identifier
- * @param {string} css Unparsed part of CSS string
- */
- function parseIdentifier(css) {
- var start = pos;
-
- // Skip all opening slashes:
- while (css.charAt(pos) === '/') {
- pos++;
- } // Read the string until we meet a punctuation mark:
- for (; pos < css.length; pos++) {
- // Skip all '\':
- if (css.charAt(pos) === '\\') pos++;else if (css.charAt(pos) in Punctuation) break;
- }
-
- var ident = css.substring(start, pos--);
-
- // Enter url mode if parsed substring is `url`:
- if (!urlMode && ident === 'url' && css.charAt(pos + 1) === '(') {
- urlMode = true;
- }
-
- // Add identifier to tokens:
- pushToken(TokenType.Identifier, ident, col);
- col += pos - start;
- }
-
- /**
- * Parse equality sign
- */
- function parseEquality() {
- pushToken(TokenType.EqualitySign, '==', col);
- pos++;
- col++;
- }
-
- /**
- * Parse inequality sign
- */
- function parseInequality() {
- pushToken(TokenType.InequalitySign, '!=', col);
- pos++;
- col++;
- }
-
- /**
- * Parse a multiline comment
- * @param {string} css Unparsed part of CSS string
- */
- function parseMLComment(css) {
- var start = pos;
- var col_ = col;
-
- // Get current indent level:
- var il = 0;
- for (var _pos = pos - 1; _pos > -1; _pos--) {
- // TODO: Can be tabs:
- if (css.charAt(_pos) === ' ') il++;else break;
- }
-
- for (pos += 2; pos < css.length; pos++) {
- var ch = css.charAt(pos);
- if (ch === '\n') {
- var _pos2 = void 0;
- // Get new line's indent level:
- var _il = 0;
- for (_pos2 = pos + 1; _pos2 < css.length; _pos2++) {
- if (css.charAt(_pos2) === ' ') _il++;else break;
- }
-
- if (_il > il) {
- col = 0;
- pos += _pos2 - pos;
- } else {
- pos--;
- break;
- }
- } else if (ch === '*' && css.charAt(pos + 1) === '/') {
- pos++;
- break;
- }
- }
-
- // If CRLF is used, we need to adjust pos
- if (css.charAt(pos) === '\r') pos--;
-
- // Add full comment (including `/*`) to the list of tokens:
- var comment = css.substring(start, pos + 1);
- pushToken(TokenType.CommentML, comment, col_);
-
- var newlines = comment.split('\n');
- if (newlines.length > 1) {
- ln += newlines.length - 1;
- col = newlines[newlines.length - 1].length;
- } else {
- col += pos - start;
- }
- }
-
- /**
- * Parse a single line comment
- * @param {string} css Unparsed part of CSS string
- */
- function parseSLComment(css) {
- var start = pos;
- var col_ = col;
- var _pos;
-
- // Check if comment is the only token on the line, and if so,
- // get current indent level:
- var il = 0;
- var onlyToken = false;
- for (_pos = pos - 1; _pos > -1; _pos--) {
- // TODO: Can be tabs:
- if (css.charAt(_pos) === ' ') il++;else if (css.charAt(_pos) === '\n') {
- onlyToken = true;
- break;
- } else break;
- }
- if (_pos === -1) onlyToken = true;
-
- // Read the string until we meet comment end.
- // Since we already know first 2 characters (`//`), start reading
- // from `pos + 2`:
- if (!onlyToken) {
- for (pos += 2; pos < css.length; pos++) {
- if (css.charAt(pos) === '\n' || css.charAt(pos) === '\r') {
- break;
- }
- }
- } else {
- for (pos += 2; pos < css.length; pos++) {
- var ch = css.charAt(pos);
- if (ch === '\n') {
- // Get new line's indent level:
- var _il = 0;
- for (_pos = pos + 1; _pos < css.length; _pos++) {
- if (css.charAt(_pos) === ' ') _il++;else break;
- }
-
- if (_il > il) {
- col = 0;
- pos += _pos - pos;
- } else {
- break;
- }
- }
- }
- }
-
- // If CRLF is used, we need to adjust pos
- if (css.charAt(pos - 1) === '\r') pos--;
-
- // Add comment (including `//` and line break) to the list of tokens:
- var comment = css.substring(start, pos--);
- pushToken(TokenType.CommentSL, comment, col_);
-
- var newlines = comment.split('\n');
- if (newlines.length > 1) {
- ln += newlines.length - 1;
- col = newlines[newlines.length - 1].length;
- } else {
- col += pos - start;
- }
- }
-
- /**
- * Convert a CSS string to a list of tokens
- * @param {string} css CSS string
- * @returns {Array} List of tokens
- * @private
- */
- function getTokens(css) {
- // Parse string, character by character:
- for (pos = 0; pos < css.length; col++, pos++) {
- c = css.charAt(pos);
- cn = css.charAt(pos + 1);
-
- // If we meet `/*`, it's a start of a multiline comment.
- // Parse following characters as a multiline comment:
- if (c === '/' && cn === '*') {
- parseMLComment(css);
- }
-
- // If we meet `//` and it is not a part of url:
- else if (!urlMode && c === '/' && cn === '/') {
- // If we're currently inside a block, treat `//` as a start
- // of identifier. Else treat `//` as a start of a single-line
- // comment:
- parseSLComment(css);
- }
-
- // If current character is a double or single quote, it's a start
- // of a string:
- else if (c === '"' || c === "'") {
- parseString(css, c);
- }
-
- // If current character is a space:
- else if (c === ' ') {
- parseSpaces(css);
- }
-
- // If current character is `=`, it must be combined with next `=`
- else if (c === '=' && cn === '=') {
- parseEquality(css);
- }
-
- // If we meet `!=`, this must be inequality
- else if (c === '!' && cn === '=') {
- parseInequality(css);
- }
-
- // If current character is a punctuation mark:
- else if (c in Punctuation) {
- // Check for CRLF here or just LF
- if (c === '\r' && cn === '\n' || c === '\n') {
- // If \r we know the next character is \n due to statement above
- // so we push a CRLF token type to the token list and importantly
- // skip the next character so as not to double count newlines or
- // columns etc
- if (c === '\r') {
- pushToken(TokenType.Newline, '\r\n', col);
- pos++; // If CRLF skip the next character and push crlf token
- } else if (c === '\n') {
- // If just a LF newline and not part of CRLF newline we can just
- // push punctuation as usual
- pushToken(Punctuation[c], c, col);
- }
-
- ln++; // Go to next line
- col = 0; // Reset the column count
- } else if (c !== '\r' && c !== '\n') {
- // Handle all other punctuation and add to list of tokens
- pushToken(Punctuation[c], c, col);
- } // Go to next line
- if (c === ')') urlMode = false; // Exit url mode
- else if (c === '\t' && tabSize > 1) col += tabSize - 1;
- }
-
- // If current character is a decimal digit:
- else if (isDecimalDigit(c)) {
- parseDecimalNumber(css);
- }
-
- // If current character is anything else:
- else {
- parseIdentifier(css);
- }
- }
-
- return tokens;
- }
-
- return getTokens(css);
- };
-
-/***/ }),
-/* 25 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- exports.__esModule = true;
- exports.default = {
- mark: __webpack_require__(26),
- parse: __webpack_require__(27),
- stringify: __webpack_require__(6),
- tokenizer: __webpack_require__(28)
- };
- module.exports = exports['default'];
-
-/***/ }),
-/* 26 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- var TokenType = __webpack_require__(13);
-
- module.exports = function () {
- /**
- * Mark whitespaces and comments
- */
- function markSC(tokens) {
- var tokensLength = tokens.length;
- var ws = -1; // Flag for whitespaces
- var sc = -1; // Flag for whitespaces and comments
- var t = void 0; // Current token
-
- // For every token in the token list, mark spaces and line breaks
- // as spaces (set both `ws` and `sc` flags). Mark multiline comments
- // with `sc` flag.
- // If there are several spaces or tabs or line breaks or multiline
- // comments in a row, group them: take the last one's index number
- // and save it to the first token in the group as a reference:
- // e.g., `ws_last = 7` for a group of whitespaces or `sc_last = 9`
- // for a group of whitespaces and comments.
- for (var i = 0; i < tokensLength; i++) {
- t = tokens[i];
- switch (t.type) {
- case TokenType.Space:
- case TokenType.Tab:
- case TokenType.Newline:
- t.ws = true;
- t.sc = true;
-
- if (ws === -1) ws = i;
- if (sc === -1) sc = i;
-
- break;
- case TokenType.CommentML:
- case TokenType.CommentSL:
- if (ws !== -1) {
- tokens[ws].ws_last = i - 1;
- ws = -1;
- }
-
- t.sc = true;
-
- break;
- default:
- if (ws !== -1) {
- tokens[ws].ws_last = i - 1;
- ws = -1;
- }
-
- if (sc !== -1) {
- tokens[sc].sc_last = i - 1;
- sc = -1;
- }
- }
- }
-
- if (ws !== -1) tokens[ws].ws_last = i - 1;
- if (sc !== -1) tokens[sc].sc_last = i - 1;
- }
-
- /**
- * Pair brackets
- */
- function markBrackets(tokens) {
- var tokensLength = tokens.length;
- var ps = []; // Parentheses
- var sbs = []; // Square brackets
- var cbs = []; // Curly brackets
- var t = void 0; // Current token
-
- // For every token in the token list, if we meet an opening (left)
- // bracket, push its index number to a corresponding array.
- // If we then meet a closing (right) bracket, look at the corresponding
- // array. If there are any elements (records about previously met
- // left brackets), take a token of the last left bracket (take
- // the last index number from the array and find a token with
- // this index number) and save right bracket's index as a reference:
- for (var i = 0; i < tokensLength; i++) {
- t = tokens[i];
- switch (t.type) {
- case TokenType.LeftParenthesis:
- ps.push(i);
- break;
- case TokenType.RightParenthesis:
- if (ps.length) {
- t.left = ps.pop();
- tokens[t.left].right = i;
- }
- break;
- case TokenType.LeftSquareBracket:
- sbs.push(i);
- break;
- case TokenType.RightSquareBracket:
- if (sbs.length) {
- t.left = sbs.pop();
- tokens[t.left].right = i;
- }
- break;
- case TokenType.LeftCurlyBracket:
- cbs.push(i);
- break;
- case TokenType.RightCurlyBracket:
- if (cbs.length) {
- t.left = cbs.pop();
- tokens[t.left].right = i;
- }
- break;
- }
- }
- }
-
- return function (tokens) {
- markBrackets(tokens);
- markSC(tokens);
- };
- }();
-
-/***/ }),
-/* 27 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- var Node = __webpack_require__(1);
- var NodeType = __webpack_require__(15);
- var TokenType = __webpack_require__(13);
-
- var tokens = void 0;
- var tokensLength = void 0;
- var pos = void 0;
-
- var contexts = {
- 'arguments': function _arguments() {
- return checkArguments(pos) && getArguments();
- },
- 'atkeyword': function atkeyword() {
- return checkAtkeyword(pos) && getAtkeyword();
- },
- 'atrule': function atrule() {
- return checkAtrule(pos) && getAtrule();
- },
- 'attributeSelector': function attributeSelector() {
- return checkAttributeSelector(pos) && getAttributeSelector();
- },
- 'block': function block() {
- return checkBlock(pos) && getBlock();
- },
- 'brackets': function brackets() {
- return checkBrackets(pos) && getBrackets();
- },
- 'class': function _class() {
- return checkClass(pos) && getClass();
- },
- 'combinator': function combinator() {
- return checkCombinator(pos) && getCombinator();
- },
- 'commentML': function commentML() {
- return checkCommentML(pos) && getCommentML();
- },
- 'commentSL': function commentSL() {
- return checkCommentSL(pos) && getCommentSL();
- },
- 'condition': function condition() {
- return checkCondition(pos) && getCondition();
- },
- 'conditionalStatement': function conditionalStatement() {
- return checkConditionalStatement(pos) && getConditionalStatement();
- },
- 'declaration': function declaration() {
- return checkDeclaration(pos) && getDeclaration();
- },
- 'declDelim': function declDelim() {
- return checkDeclDelim(pos) && getDeclDelim();
- },
- 'default': function _default() {
- return checkDefault(pos) && getDefault();
- },
- 'delim': function delim() {
- return checkDelim(pos) && getDelim();
- },
- 'dimension': function dimension() {
- return checkDimension(pos) && getDimension();
- },
- 'expression': function expression() {
- return checkExpression(pos) && getExpression();
- },
- 'extend': function extend() {
- return checkExtend(pos) && getExtend();
- },
- 'function': function _function() {
- return checkFunction(pos) && getFunction();
- },
- 'global': function global() {
- return checkGlobal(pos) && getGlobal();
- },
- 'ident': function ident() {
- return checkIdent(pos) && getIdent();
- },
- 'important': function important() {
- return checkImportant(pos) && getImportant();
- },
- 'include': function include() {
- return checkInclude(pos) && getInclude();
- },
- 'interpolation': function interpolation() {
- return checkInterpolation(pos) && getInterpolation();
- },
- 'loop': function loop() {
- return checkLoop(pos) && getLoop();
- },
- 'mixin': function mixin() {
- return checkMixin(pos) && getMixin();
- },
- 'namespace': function namespace() {
- return checkNamespace(pos) && getNamespace();
- },
- 'number': function number() {
- return checkNumber(pos) && getNumber();
- },
- 'operator': function operator() {
- return checkOperator(pos) && getOperator();
- },
- 'optional': function optional() {
- return checkOptional(pos) && getOptional();
- },
- 'parentheses': function parentheses() {
- return checkParentheses(pos) && getParentheses();
- },
- 'parentselector': function parentselector() {
- return checkParentSelector(pos) && getParentSelector();
- },
- 'percentage': function percentage() {
- return checkPercentage(pos) && getPercentage();
- },
- 'placeholder': function placeholder() {
- return checkPlaceholder(pos) && getPlaceholder();
- },
- 'progid': function progid() {
- return checkProgid(pos) && getProgid();
- },
- 'property': function property() {
- return checkProperty(pos) && getProperty();
- },
- 'propertyDelim': function propertyDelim() {
- return checkPropertyDelim(pos) && getPropertyDelim();
- },
- 'pseudoc': function pseudoc() {
- return checkPseudoc(pos) && getPseudoc();
- },
- 'pseudoe': function pseudoe() {
- return checkPseudoe(pos) && getPseudoe();
- },
- 'ruleset': function ruleset() {
- return checkRuleset(pos) && getRuleset();
- },
- 's': function s() {
- return checkS(pos) && getS();
- },
- 'selector': function selector() {
- return checkSelector(pos) && getSelector();
- },
- 'shash': function shash() {
- return checkShash(pos) && getShash();
- },
- 'string': function string() {
- return checkString(pos) && getString();
- },
- 'stylesheet': function stylesheet() {
- return checkStylesheet(pos) && getStylesheet();
- },
- 'typeSelector': function typeSelector() {
- return checkTypeSelector(pos) && getTypeSelector();
- },
- 'unary': function unary() {
- return checkUnary(pos) && getUnary();
- },
- 'unicodeRange': function unicodeRange() {
- return checkUnicodeRange(pos) && getUnicodeRange();
- },
- 'universalSelector': function universalSelector() {
- return checkUniversalSelector(pos) && getUniversalSelector();
- },
- 'urange': function urange() {
- return checkUrange(pos) && getUrange();
- },
- 'uri': function uri() {
- return checkUri(pos) && getUri();
- },
- 'value': function value() {
- return checkValue(pos) && getValue();
- },
- 'variable': function variable() {
- return checkVariable(pos) && getVariable();
- },
- 'variableslist': function variableslist() {
- return checkVariablesList(pos) && getVariablesList();
- },
- 'vhash': function vhash() {
- return checkVhash(pos) && getVhash();
- }
- };
-
- /**
- * Stop parsing and display error
- * @param {Number=} i Token's index number
- */
- function throwError(i) {
- var ln = tokens[i].ln;
-
- throw { line: ln, syntax: 'scss' };
- }
-
- /**
- * @param {Number} start
- * @param {Number} finish
- * @returns {String}
- */
- function joinValues(start, finish) {
- var s = '';
-
- for (var i = start; i < finish + 1; i++) {
- s += tokens[i].value;
- }
-
- return s;
- }
-
- /**
- * @param {Number} start
- * @param {Number} num
- * @returns {String}
- */
- function joinValues2(start, num) {
- if (start + num - 1 >= tokensLength) return;
-
- var s = '';
-
- for (var i = 0; i < num; i++) {
- s += tokens[start + i].value;
- }
-
- return s;
- }
-
- function getLastPosition(content, line, column, colOffset) {
- return typeof content === 'string' ? getLastPositionForString(content, line, column, colOffset) : getLastPositionForArray(content, line, column, colOffset);
- }
-
- function getLastPositionForString(content, line, column, colOffset) {
- var position = [];
-
- if (!content) {
- position = [line, column];
- if (colOffset) position[1] += colOffset - 1;
- return position;
- }
-
- var lastLinebreak = content.lastIndexOf('\n');
- var endsWithLinebreak = lastLinebreak === content.length - 1;
- var splitContent = content.split('\n');
- var linebreaksCount = splitContent.length - 1;
- var prevLinebreak = linebreaksCount === 0 || linebreaksCount === 1 ? -1 : content.length - splitContent[linebreaksCount - 1].length - 2;
-
- // Line:
- var offset = endsWithLinebreak ? linebreaksCount - 1 : linebreaksCount;
- position[0] = line + offset;
-
- // Column:
- if (endsWithLinebreak) {
- offset = prevLinebreak !== -1 ? content.length - prevLinebreak : content.length - 1;
- } else {
- offset = linebreaksCount !== 0 ? content.length - lastLinebreak - column - 1 : content.length - 1;
- }
- position[1] = column + offset;
-
- if (!colOffset) return position;
-
- if (endsWithLinebreak) {
- position[0]++;
- position[1] = colOffset;
- } else {
- position[1] += colOffset;
- }
-
- return position;
- }
-
- function getLastPositionForArray(content, line, column, colOffset) {
- var position = void 0;
-
- if (content.length === 0) {
- position = [line, column];
- } else {
- var c = content[content.length - 1];
- if (c.hasOwnProperty('end')) {
- position = [c.end.line, c.end.column];
- } else {
- position = getLastPosition(c.content, line, column);
- }
- }
-
- if (!colOffset) return position;
-
- if (tokens[pos - 1] && tokens[pos - 1].type !== 'Newline') {
- position[1] += colOffset;
- } else {
- position[0]++;
- position[1] = 1;
- }
-
- return position;
- }
-
- function newNode(type, content, line, column, end) {
- if (!end) end = getLastPosition(content, line, column);
- return new Node({
- type: type,
- content: content,
- start: {
- line: line,
- column: column
- },
- end: {
- line: end[0],
- column: end[1]
- },
- syntax: 'scss'
- });
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkAny(i) {
- var l = void 0;
-
- if (l = checkBrackets(i)) tokens[i].any_child = 1;else if (l = checkParentheses(i)) tokens[i].any_child = 2;else if (l = checkString(i)) tokens[i].any_child = 3;else if (l = checkVariablesList(i)) tokens[i].any_child = 4;else if (l = checkVariable(i)) tokens[i].any_child = 5;else if (l = checkPlaceholder(i)) tokens[i].any_child = 6;else if (l = checkPercentage(i)) tokens[i].any_child = 7;else if (l = checkDimension(i)) tokens[i].any_child = 8;else if (l = checkUnicodeRange(i)) tokens[i].any_child = 9;else if (l = checkNumber(i)) tokens[i].any_child = 10;else if (l = checkUri(i)) tokens[i].any_child = 11;else if (l = checkExpression(i)) tokens[i].any_child = 12;else if (l = checkFunctionsList(i)) tokens[i].any_child = 13;else if (l = checkFunction(i)) tokens[i].any_child = 14;else if (l = checkInterpolation(i)) tokens[i].any_child = 15;else if (l = checkIdent(i)) tokens[i].any_child = 16;else if (l = checkClass(i)) tokens[i].any_child = 17;else if (l = checkUnary(i)) tokens[i].any_child = 18;else if (l = checkParentSelector(i)) tokens[i].any_child = 19;else if (l = checkImportant(i)) tokens[i].any_child = 20;else if (l = checkGlobal(i)) tokens[i].any_child = 21;else if (l = checkDefault(i)) tokens[i].any_child = 22;else if (l = checkOptional(i)) tokens[i].any_child = 23;
-
- return l;
- }
-
- /**
- * @returns {!Node}
- */
- function getAny() {
- var childType = tokens[pos].any_child;
-
- if (childType === 1) return getBrackets();
- if (childType === 2) return getParentheses();
- if (childType === 3) return getString();
- if (childType === 4) return getVariablesList();
- if (childType === 5) return getVariable();
- if (childType === 6) return getPlaceholder();
- if (childType === 7) return getPercentage();
- if (childType === 8) return getDimension();
- if (childType === 9) return getUnicodeRange();
- if (childType === 10) return getNumber();
- if (childType === 11) return getUri();
- if (childType === 12) return getExpression();
- if (childType === 13) return getFunctionsList();
- if (childType === 14) return getFunction();
- if (childType === 15) return getInterpolation();
- if (childType === 16) return getIdent();
- if (childType === 17) return getClass();
- if (childType === 18) return getUnary();
- if (childType === 19) return getParentSelector();
- if (childType === 20) return getImportant();
- if (childType === 21) return getGlobal();
- if (childType === 22) return getDefault();
- if (childType === 23) return getOptional();
- }
-
- /**
- * Check if token is part of mixin's arguments.
- * @param {Number} i Token's index number
- * @returns {Number} Length of arguments
- */
- function checkArguments(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- // Skip `(`.
- i++;
-
- while (i < tokens[start].right) {
- if (l = checkArgument(i)) i += l;else return 0;
- }
-
- return tokens[start].right - start + 1;
- }
-
- /**
- * @returns {Array}
- */
- function getArguments() {
- var type = NodeType.ArgumentsType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var body = void 0;
-
- // Skip `(`.
- pos++;
-
- while (pos < tokensLength && tokens[pos].type !== TokenType.RightParenthesis) {
- if (checkSingleValueDeclaration(pos)) {
- content.push(getSingleValueDeclaration());
- } else if (checkArgument(pos)) {
- body = getArgument();
- if (typeof body.content === 'string') content.push(body);else content = content.concat(body);
- } else if (checkClass(pos)) content.push(getClass());else throwError(pos);
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is valid to be part of arguments list
- * @param {Number} i Token's index number
- * @returns {Number} Length of argument
- */
- function checkArgument(i) {
- var l = void 0;
-
- if (l = checkBrackets(i)) tokens[i].argument_child = 1;else if (l = checkParentheses(i)) tokens[i].argument_child = 2;else if (l = checkSingleValueDeclaration(i)) tokens[i].argument_child = 3;else if (l = checkFunctionsList(i)) tokens[i].argument_child = 4;else if (l = checkFunction(i)) tokens[i].argument_child = 5;else if (l = checkVariablesList(i)) tokens[i].argument_child = 6;else if (l = checkVariable(i)) tokens[i].argument_child = 7;else if (l = checkSC(i)) tokens[i].argument_child = 8;else if (l = checkDelim(i)) tokens[i].argument_child = 9;else if (l = checkDeclDelim(i)) tokens[i].argument_child = 10;else if (l = checkString(i)) tokens[i].argument_child = 11;else if (l = checkPercentage(i)) tokens[i].argument_child = 12;else if (l = checkDimension(i)) tokens[i].argument_child = 13;else if (l = checkNumber(i)) tokens[i].argument_child = 14;else if (l = checkUri(i)) tokens[i].argument_child = 15;else if (l = checkInterpolation(i)) tokens[i].argument_child = 16;else if (l = checkIdent(i)) tokens[i].argument_child = 17;else if (l = checkVhash(i)) tokens[i].argument_child = 18;else if (l = checkCustomProperty(i)) tokens[i].argument_child = 19;else if (l = checkOperator(i)) tokens[i].argument_child = 20;else if (l = checkUnary(i)) tokens[i].argument_child = 21;else if (l = checkParentSelector(i)) tokens[i].argument_child = 22;else if (l = checkImportant(i)) tokens[i].argument_child = 23;else if (l = checkGlobal(i)) tokens[i].argument_child = 24;else if (l = checkDefault(i)) tokens[i].argument_child = 25;else if (l = checkOptional(i)) tokens[i].argument_child = 26;
-
- return l;
- }
-
- /**
- * @returns {Array} Node that is part of arguments list
- */
- function getArgument() {
- var childType = tokens[pos].argument_child;
-
- if (childType === 1) return getBrackets();
- if (childType === 2) return getParentheses();
- if (childType === 3) return getSingleValueDeclaration();
- if (childType === 4) return getFunctionsList();
- if (childType === 5) return getFunction();
- if (childType === 6) return getVariablesList();
- if (childType === 7) return getVariable();
- if (childType === 8) return getSC();
- if (childType === 9) return getDelim();
- if (childType === 10) return getDeclDelim();
- if (childType === 11) return getString();
- if (childType === 12) return getPercentage();
- if (childType === 13) return getDimension();
- if (childType === 14) return getNumber();
- if (childType === 15) return getUri();
- if (childType === 16) return getInterpolation();
- if (childType === 17) return getIdent();
- if (childType === 18) return getVhash();
- if (childType === 19) return getCustomProperty();
- if (childType === 20) return getOperator();
- if (childType === 21) return getUnary();
- if (childType === 22) return getParentSelector();
- if (childType === 23) return getImportant();
- if (childType === 24) return getGlobal();
- if (childType === 25) return getDefault();
- if (childType === 26) return getOptional();
- }
-
- /**
- * Check if token is part of an @-word (e.g. `@import`, `@include`)
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkAtkeyword(i) {
- var l = void 0;
-
- // Check that token is `@`:
- if (i >= tokensLength || tokens[i++].type !== TokenType.CommercialAt) return 0;
-
- return (l = checkIdentOrInterpolation(i)) ? l + 1 : 0;
- }
-
- /**
- * Get node with @-word
- * @return {Node}
- */
- function getAtkeyword() {
- var type = NodeType.AtkeywordType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `@`.
- pos++;
-
- var content = getIdentOrInterpolation();
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a part of an @-rule
- * @param {Number} i Token's index number
- * @returns {Number} Length of @-rule
- */
- function checkAtrule(i) {
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- // If token already has a record of being part of an @-rule,
- // return the @-rule's length:
- if (tokens[i].atrule_l !== undefined) return tokens[i].atrule_l;
-
- // If token is part of an @-rule, save the rule's type to token.
- // @keyframes:
- if (l = checkKeyframesRule(i)) tokens[i].atrule_type = 4;
- // @-rule with ruleset:
- else if (l = checkAtruler(i)) tokens[i].atrule_type = 1;
- // Block @-rule:
- else if (l = checkAtruleb(i)) tokens[i].atrule_type = 2;
- // Single-line @-rule:
- else if (l = checkAtrules(i)) tokens[i].atrule_type = 3;else return 0;
-
- // If token is part of an @-rule, save the rule's length to token:
- tokens[i].atrule_l = l;
-
- return l;
- }
-
- /**
- * Get node with @-rule
- * @returns {Array}
- */
- function getAtrule() {
- var childType = tokens[pos].atrule_type;
-
- if (childType === 1) return getAtruler(); // @-rule with ruleset
- if (childType === 2) return getAtruleb(); // Block @-rule
- if (childType === 3) return getAtrules(); // Single-line @-rule
- if (childType === 4) return getKeyframesRule();
- }
-
- /**
- * Check if token is part of a block @-rule
- * @param {Number} i Token's index number
- * @returns {Number} Length of the @-rule
- */
- function checkAtruleb(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (l = checkTsets(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a block @-rule
- * @returns {Array} `['atruleb', ['atkeyword', x], y, ['block', z]]`
- */
- function getAtruleb() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getTsets(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an @-rule with ruleset
- * @param {Number} i Token's index number
- * @returns {Number} Length of the @-rule
- */
- function checkAtruler(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (l = checkTsets(i)) i += l;
-
- if (i < tokensLength && tokens[i].type === TokenType.LeftCurlyBracket) i++;else return 0;
-
- if (l = checkAtrulers(i)) i += l;
-
- if (i < tokensLength && tokens[i].type === TokenType.RightCurlyBracket) i++;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with an @-rule with ruleset
- * @returns {Array} ['atruler', ['atkeyword', x], y, z]
- */
- function getAtruler() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getTsets(), getAtrulers());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkAtrulers(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkSC(i)) i += l;
-
- while (i < tokensLength) {
- if (l = checkSC(i)) tokens[i].atrulers_child = 1;else if (l = checkAtrule(i)) tokens[i].atrulers_child = 2;else if (l = checkRuleset(i)) tokens[i].atrulers_child = 3;else break;
- i += l;
- }
-
- if (i < tokensLength) tokens[i].atrulers_end = 1;
-
- if (l = checkSC(i)) i += l;
-
- return i - start;
- }
-
- /**
- * @returns {Array} `['atrulers', x]`
- */
- function getAtrulers() {
- var type = NodeType.BlockType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `{`.
- pos++;
-
- content = content.concat(getSC());
-
- while (pos < tokensLength && !tokens[pos].atrulers_end) {
- var childType = tokens[pos].atrulers_child;
- if (childType === 1) content = content.concat(getSC());else if (childType === 2) content.push(getAtrule());else if (childType === 3) content.push(getRuleset());else break;
- }
-
- content = content.concat(getSC());
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `}`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkAtrules(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (l = checkTsets(i)) i += l;
-
- return i - start;
- }
-
- /**
- * @returns {Array} `['atrules', ['atkeyword', x], y]`
- */
- function getAtrules() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getTsets());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a block (e.g. `{...}`).
- * @param {Number} i Token's index number
- * @returns {Number} Length of the block
- */
- function checkBlock(i) {
- return i < tokensLength && tokens[i].type === TokenType.LeftCurlyBracket ? tokens[i].right - i + 1 : 0;
- }
-
- /**
- * Get node with a block
- * @returns {Array} `['block', x]`
- */
- function getBlock() {
- var type = NodeType.BlockType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var end = tokens[pos].right;
- var content = [];
-
- // Skip `{`.
- pos++;
-
- while (pos < end) {
- if (checkBlockdecl(pos)) content = content.concat(getBlockdecl());else throwError(pos);
- }
-
- var end_ = getLastPosition(content, line, column, 1);
- pos = end + 1;
-
- return newNode(type, content, line, column, end_);
- }
-
- /**
- * Check if token is part of a declaration (property-value pair)
- * @param {Number} i Token's index number
- * @returns {Number} Length of the declaration
- */
- function checkBlockdecl(i) {
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkBlockdecl1(i)) tokens[i].bd_type = 1;else if (l = checkBlockdecl2(i)) tokens[i].bd_type = 2;else if (l = checkBlockdecl3(i)) tokens[i].bd_type = 3;else if (l = checkBlockdecl4(i)) tokens[i].bd_type = 4;else return 0;
-
- return l;
- }
-
- /**
- * @returns {Array}
- */
- function getBlockdecl() {
- var childType = tokens[pos].bd_type;
-
- if (childType === 1) return getBlockdecl1();
- if (childType === 2) return getBlockdecl2();
- if (childType === 3) return getBlockdecl3();
- if (childType === 4) return getBlockdecl4();
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkBlockdecl1(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkConditionalStatement(i)) tokens[i].bd_kind = 1;else if (l = checkInclude(i)) tokens[i].bd_kind = 2;else if (l = checkExtend(i)) tokens[i].bd_kind = 4;else if (l = checkLoop(i)) tokens[i].bd_kind = 3;else if (l = checkAtrule(i)) tokens[i].bd_kind = 6;else if (l = checkRuleset(i)) tokens[i].bd_kind = 7;else if (l = checkDeclaration(i)) tokens[i].bd_kind = 5;else return 0;
-
- i += l;
-
- if (i < tokensLength && (l = checkDeclDelim(i))) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- return i - start;
- }
-
- /**
- * @returns {Array}
- */
- function getBlockdecl1() {
- var sc = getSC();
- var content = void 0;
-
- switch (tokens[pos].bd_kind) {
- case 1:
- content = getConditionalStatement();
- break;
- case 2:
- content = getInclude();
- break;
- case 3:
- content = getLoop();
- break;
- case 4:
- content = getExtend();
- break;
- case 5:
- content = getDeclaration();
- break;
- case 6:
- content = getAtrule();
- break;
- case 7:
- content = getRuleset();
- break;
- }
-
- return sc.concat(content, getSC(), getDeclDelim(), getSC());
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkBlockdecl2(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkConditionalStatement(i)) tokens[i].bd_kind = 1;else if (l = checkInclude(i)) tokens[i].bd_kind = 2;else if (l = checkExtend(i)) tokens[i].bd_kind = 4;else if (l = checkMixin(i)) tokens[i].bd_kind = 8;else if (l = checkLoop(i)) tokens[i].bd_kind = 3;else if (l = checkAtrule(i)) tokens[i].bd_kind = 6;else if (l = checkRuleset(i)) tokens[i].bd_kind = 7;else if (l = checkDeclaration(i)) tokens[i].bd_kind = 5;else return 0;
-
- i += l;
-
- if (l = checkSC(i)) i += l;
-
- return i - start;
- }
-
- /**
- * @returns {Array}
- */
- function getBlockdecl2() {
- var sc = getSC();
- var content = void 0;
-
- switch (tokens[pos].bd_kind) {
- case 1:
- content = getConditionalStatement();
- break;
- case 2:
- content = getInclude();
- break;
- case 3:
- content = getLoop();
- break;
- case 4:
- content = getExtend();
- break;
- case 5:
- content = getDeclaration();
- break;
- case 6:
- content = getAtrule();
- break;
- case 7:
- content = getRuleset();
- break;
- case 8:
- content = getMixin();
- break;
- }
-
- return sc.concat(content, getSC());
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkBlockdecl3(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkDeclDelim(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- return i - start;
- }
-
- /**
- * @returns {Array} `[s0, ['declDelim'], s1]` where `s0` and `s1` are
- * are optional whitespaces.
- */
- function getBlockdecl3() {
- return [].concat(getSC(), getDeclDelim(), getSC());
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkBlockdecl4(i) {
- return checkSC(i);
- }
-
- /**
- * @returns {Array}
- */
- function getBlockdecl4() {
- return getSC();
- }
-
- /**
- * Check if token is part of text inside square brackets, e.g. `[1]`
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkBrackets(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
-
- // Skip `[`.
- if (tokens[i].type === TokenType.LeftSquareBracket) i++;else return 0;
-
- if (i < tokens[start].right) {
- var l = checkTsets(i);
- if (l) i += l;else return 0;
- }
-
- // Skip `]`.
- i++;
-
- return i - start;
- }
-
- /**
- * Get node with text inside parentheses or square brackets (e.g. `(1)`)
- * @return {Node}
- */
- function getBrackets() {
- var type = NodeType.BracketsType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var right = token.right;
- var content = [];
-
- // Skip `[`.
- pos++;
-
- if (pos < right) {
- content = getTsets();
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `]`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a class selector (e.g. `.abc`)
- * @param {Number} i Token's index number
- * @returns {Number} Length of the class selector
- */
- function checkClass(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].class_l) return tokens[i].class_l;
-
- // Skip `.`.
- if (tokens[i].type === TokenType.FullStop) i++;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- if (l = checkIdentOrInterpolation(i)) {
- tokens[start].class_l = l + 1;
- i += l;
- } else break;
- }
-
- tokens[start].classEnd = i;
-
- return i - start;
- }
-
- /**
- * Get node with a class selector
- * @returns {Array} `['class', ['ident', x]]` where x is a class's
- * identifier (without `.`, e.g. `abc`).
- */
- function getClass() {
- var type = NodeType.ClassType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var end = token.classEnd;
- var content = [];
-
- // Skip `.`
- pos++;
-
- while (pos < end) {
- if (checkIdentOrInterpolation(pos)) {
- content = content.concat(getIdentOrInterpolation());
- } else break;
- }
-
- return newNode(type, content, line, column);
- }
-
- function checkCombinator(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
- if (l = checkCombinator1(i)) tokens[i].combinatorType = 1;else if (l = checkCombinator2(i)) tokens[i].combinatorType = 2;else if (l = checkCombinator3(i)) tokens[i].combinatorType = 3;else if (l = checkCombinator4(i)) tokens[i].combinatorType = 4;
-
- return l;
- }
-
- function getCombinator() {
- var type = tokens[pos].combinatorType;
- if (type === 1) return getCombinator1();
- if (type === 2) return getCombinator2();
- if (type === 3) return getCombinator3();
- if (type === 4) return getCombinator4();
- }
-
- /**
- * (1) `>>>`
- *
- * @param {Number} i
- * @return {Number}
- */
- function checkCombinator1(i) {
- if (i < tokensLength && tokens[i++].type === TokenType.GreaterThanSign && i < tokensLength && tokens[i++].type === TokenType.GreaterThanSign && i < tokensLength && tokens[i++].type === TokenType.GreaterThanSign) return 3;
-
- return 0;
- }
-
- /**
- * @return {Node}
- */
- function getCombinator1() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '>>>';
-
- // Skip combinator
- pos += 3;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `||`
- * (2) `>>`
- *
- * @param {Number} i
- * @return {Number}
- */
- function checkCombinator2(i) {
- if (i + 1 >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.VerticalLine && tokens[i + 1].type === TokenType.VerticalLine) return 2;
-
- if (tokens[i].type === TokenType.GreaterThanSign && tokens[i + 1].type === TokenType.GreaterThanSign) return 2;
-
- return 0;
- }
-
- /**
- * @return {Node}
- */
- function getCombinator2() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '' + token.value + tokens[pos + 1].value;
-
- // Skip combinator
- pos += 2;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `>`
- * (2) `+`
- * (3) `~`
- *
- * @param {Number} i
- * @return {Number}
- */
- function checkCombinator3(i) {
- var type = tokens[i].type;
- if (type === TokenType.PlusSign || type === TokenType.GreaterThanSign || type === TokenType.Tilde) return 1;else return 0;
- }
-
- /**
- * @return {Node}
- */
- function getCombinator3() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- // Skip combinator
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `/panda/`
- */
- function checkCombinator4(i) {
- var start = i;
-
- if (tokens[i].type === TokenType.Solidus) i++;else return 0;
-
- var l = void 0;
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (tokens[i].type === TokenType.Solidus) i++;else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Node}
- */
- function getCombinator4() {
- var type = NodeType.CombinatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `/`.
- pos++;
-
- var ident = getIdent();
-
- // Skip `/`.
- pos++;
-
- var content = '/' + ident.content + '/';
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a multiline comment.
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is a multiline comment, otherwise `0`
- */
- function checkCommentML(i) {
- return i < tokensLength && tokens[i].type === TokenType.CommentML ? 1 : 0;
- }
-
- /**
- * Get node with a multiline comment
- * @returns {Array} `['commentML', x]` where `x`
- * is the comment's text (without `/*` and `* /`).
- */
- function getCommentML() {
- var type = NodeType.CommentMLType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = tokens[pos].value.substring(2);
- var l = content.length;
-
- if (content.charAt(l - 2) === '*' && content.charAt(l - 1) === '/') content = content.substring(0, l - 2);
-
- var end = getLastPosition(content, line, column, 2);
- if (end[0] === line) end[1] += 2;
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a single-line comment.
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is a single-line comment, otherwise `0`
- */
- function checkCommentSL(i) {
- return i < tokensLength && tokens[i].type === TokenType.CommentSL ? 1 : 0;
- }
-
- /**
- * Get node with a single-line comment.
- * @returns {Array} `['commentSL', x]` where `x` is comment's message
- * (without `//`)
- */
- function getCommentSL() {
- var type = NodeType.CommentSLType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = tokens[pos++].value.substring(2);
- var end = getLastPosition(content, line, column + 2);
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a condition
- * (e.g. `@if ...`, `@else if ...` or `@else ...`).
- * @param {Number} i Token's index number
- * @returns {Number} Length of the condition
- */
- function checkCondition(i) {
- var start = i;
- var l = void 0;
- var _i = void 0;
- var s = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (['if', 'else'].indexOf(tokens[start + 1].value) < 0) return 0;
-
- while (i < tokensLength) {
- if (l = checkBlock(i)) break;
-
- s = checkSC(i);
- _i = i + s;
-
- if (l = _checkCondition(_i)) i += l + s;else break;
- }
-
- return i - start;
- }
-
- function _checkCondition(i) {
- return checkVariable(i) || checkNumber(i) || checkInterpolation(i) || checkIdent(i) || checkOperator(i) || checkCombinator(i) || checkString(i);
- }
-
- /**
- * Get node with a condition.
- * @returns {Array} `['condition', x]`
- */
- function getCondition() {
- var type = NodeType.ConditionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var s = void 0;
- var _pos = void 0;
-
- content.push(getAtkeyword());
-
- while (pos < tokensLength) {
- if (checkBlock(pos)) break;
-
- s = checkSC(pos);
- _pos = pos + s;
-
- if (!_checkCondition(_pos)) break;
-
- if (s) content = content.concat(getSC());
- content.push(_getCondition());
- }
-
- return newNode(type, content, line, column);
- }
-
- function _getCondition() {
- if (checkVariable(pos)) return getVariable();
- if (checkNumber(pos)) return getNumber();
- if (checkInterpolation(pos)) return getInterpolation();
- if (checkIdent(pos)) return getIdent();
- if (checkOperator(pos)) return getOperator();
- if (checkCombinator(pos)) return getCombinator();
- if (checkString(pos)) return getString();
- }
-
- /**
- * Check if token is part of a conditional statement
- * (e.g. `@if ... {} @else if ... {} @else ... {}`).
- * @param {Number} i Token's index number
- * @returns {Number} Length of the condition
- */
- function checkConditionalStatement(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkCondition(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a condition.
- * @returns {Array} `['condition', x]`
- */
- function getConditionalStatement() {
- var type = NodeType.ConditionalStatementType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getCondition(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a declaration (property-value pair)
- * @param {Number} i Token's index number
- * @returns {Number} Length of the declaration
- */
- function checkDeclaration(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkProperty(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkPropertyDelim(i)) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkValue(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a declaration
- * @returns {Array} `['declaration', ['property', x], ['propertyDelim'],
- * ['value', y]]`
- */
- function getDeclaration() {
- var type = NodeType.DeclarationType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getProperty(), getSC(), getPropertyDelim(), getSC(), getValue());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @returns {number} Length of the declaration
- */
- function checkSingleValueDeclaration(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkProperty(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkPropertyDelim(i)) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkSingleValue(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a declaration
- * @returns {Array} `['declaration', ['property', x], ['propertyDelim'],
- * ['value', y]]`
- */
- function getSingleValueDeclaration() {
- var type = NodeType.DeclarationType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getProperty(), getSC(), getPropertyDelim(), getSC(), getSingleValue());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a semicolon
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is a semicolon, otherwise `0`
- */
- function checkDeclDelim(i) {
- return i < tokensLength && tokens[i].type === TokenType.Semicolon ? 1 : 0;
- }
-
- /**
- * Get node with a semicolon
- * @returns {Array} `['declDelim']`
- */
- function getDeclDelim() {
- var type = NodeType.DeclDelimType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = ';';
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token if part of `!default` word.
- * @param {Number} i Token's index number
- * @returns {Number} Length of the `!default` word
- */
- function checkDefault(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength || tokens[i++].type !== TokenType.ExclamationMark) return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].value === 'default') {
- tokens[start].defaultEnd = i;
- return i - start + 1;
- } else {
- return 0;
- }
- }
-
- /**
- * Get node with a `!default` word
- * @returns {Array} `['default', sc]` where `sc` is optional whitespace
- */
- function getDefault() {
- var type = NodeType.DefaultType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, token.defaultEnd);
-
- pos = token.defaultEnd + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a comma
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is a comma, otherwise `0`
- */
- function checkDelim(i) {
- return i < tokensLength && tokens[i].type === TokenType.Comma ? 1 : 0;
- }
-
- /**
- * Get node with a comma
- * @returns {Array} `['delim']`
- */
- function getDelim() {
- var type = NodeType.DelimType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = ',';
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a number with dimension unit (e.g. `10px`)
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkDimension(i) {
- var ln = checkNumber(i);
- var li = void 0;
-
- if (i >= tokensLength || !ln || i + ln >= tokensLength) return 0;
-
- return (li = checkUnit(i + ln)) ? ln + li : 0;
- }
-
- /**
- * Get node of a number with dimension unit
- * @return {Node}
- */
- function getDimension() {
- var type = NodeType.DimensionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getNumber(), getUnit()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkExpression(i) {
- var start = i;
-
- if (i >= tokensLength || tokens[i++].value !== 'expression' || i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) {
- return 0;
- }
-
- return tokens[i].right - start + 1;
- }
-
- /**
- * @returns {Array}
- */
- function getExpression() {
- var type = NodeType.ExpressionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- pos++;
-
- var content = joinValues(pos + 1, tokens[pos].right - 1);
- var end = getLastPosition(content, line, column, 1);
-
- if (end[0] === line) end[1] += 11;
- pos = tokens[pos].right + 1;
-
- return newNode(type, content, line, column, end);
- }
-
- function checkExtend(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
-
- if (l = checkExtend1(i)) tokens[i].extend_child = 1;else if (l = checkExtend2(i)) tokens[i].extend_child = 2;
-
- return l;
- }
-
- function getExtend() {
- var childType = tokens[pos].extend_child;
-
- if (childType === 1) return getExtend1();
- if (childType === 2) return getExtend2();
- }
-
- /**
- * Checks if token is part of an extend with `!optional` flag.
- * @param {Number} i
- */
- function checkExtend1(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (tokens[start + 1].value !== 'extend') return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkOptional(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getExtend1() {
- var type = NodeType.ExtendType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getSelectorsGroup(), getSC(), getOptional());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Checks if token is part of an extend without `!optional` flag.
- * @param {Number} i
- */
- function checkExtend2(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (tokens[start + 1].value !== 'extend') return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getExtend2() {
- var type = NodeType.ExtendType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getSelectorsGroup());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkFunction(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- return i < tokensLength && tokens[i].type === TokenType.LeftParenthesis ? tokens[i].right - start + 1 : 0;
- }
-
- /**
- * @returns {Array}
- */
- function getFunction() {
- var type = NodeType.FunctionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getIdentOrInterpolation(), getArguments());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a functions list (e.g. `function(value)...`).
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkFunctionsList(i) {
- var d = 0; // Number of dots
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkFunction(i)) i += l;else return 0;
-
- while (i < tokensLength && tokens[i].type === TokenType.FullStop) {
- d++;
- i++;
- }
-
- return d === 3 ? l + d : 0;
- }
-
- /**
- * Get node with a functions list
- * @returns {Array}
- */
- function getFunctionsList() {
- var type = NodeType.FunctionsListType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getFunction()];
- var end = getLastPosition(content, line, column, 3);
-
- // Skip `...`.
- pos += 3;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of `!global` word
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkGlobal(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength || tokens[i++].type !== TokenType.ExclamationMark) return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].value === 'global') {
- tokens[start].globalEnd = i;
- return i - start + 1;
- } else {
- return 0;
- }
- }
-
- /**
- * Get node with `!global` word
- */
- function getGlobal() {
- var type = NodeType.GlobalType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, token.globalEnd);
-
- pos = token.globalEnd + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an identifier
- * @param {Number} i Token's index number
- * @returns {Number} Length of the identifier
- */
- function checkIdent(i) {
- var start = i;
-
- if (i >= tokensLength) return 0;
-
- // Check if token is part of a negative number
- if (tokens[i].type === TokenType.HyphenMinus && tokens[i + 1].type === TokenType.DecimalNumber) return 0;
-
- if (tokens[i].type === TokenType.HyphenMinus) i++;
-
- if (checkInterpolation(i)) {
- tokens[start].ident_last = i - 1;
- return i - start;
- }
-
- if (tokens[i].type === TokenType.LowLine || tokens[i].type === TokenType.Identifier) i++;else return 0;
-
- for (; i < tokensLength; i++) {
- if (tokens[i].type !== TokenType.HyphenMinus && tokens[i].type !== TokenType.LowLine && tokens[i].type !== TokenType.Identifier && tokens[i].type !== TokenType.DecimalNumber) break;
- }
-
- tokens[start].ident_last = i - 1;
-
- return i - start;
- }
-
- /**
- * Get node with an identifier
- * @returns {Array} `['ident', x]` where `x` is identifier's name
- */
- function getIdent() {
- var type = NodeType.IdentType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, tokens[pos].ident_last);
-
- pos = tokens[pos].ident_last + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {number} i Token's index number
- * @returns {number} Length of the identifier
- */
- function checkPartialIdent(i) {
- var start = i;
-
- if (i >= tokensLength) return 0;
-
- for (; i < tokensLength; i++) {
- if (tokens[i].type !== TokenType.HyphenMinus && tokens[i].type !== TokenType.LowLine && tokens[i].type !== TokenType.Identifier && tokens[i].type !== TokenType.DecimalNumber) break;
- }
-
- tokens[start].ident_last = i - 1;
-
- return i - start;
- }
-
- function checkIdentOrInterpolation(i) {
- var start = i;
- var l = void 0;
- var prevIsInterpolation = false;
-
- while (i < tokensLength) {
- if (l = checkInterpolation(i)) {
- tokens[i].ii_type = 1;
- i += l;
- prevIsInterpolation = true;
- } else if (l = checkIdent(i)) {
- tokens[i].ii_type = 2;
- i += l;
- prevIsInterpolation = false;
- } else if (prevIsInterpolation && (l = checkPartialIdent(i))) {
- tokens[i].ii_type = 3;
- i += l;
- prevIsInterpolation = false;
- } else break;
- }
-
- return i - start;
- }
-
- function getIdentOrInterpolation() {
- var content = [];
-
- while (pos < tokensLength) {
- var tokenType = tokens[pos].ii_type;
-
- if (tokenType === 1) {
- content.push(getInterpolation());
- } else if (tokenType === 2 || tokenType === 3) {
- content.push(getIdent());
- } else break;
- }
-
- return content;
- }
-
- /**
- * Check if token is part of `!important` word
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkImportant(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength || tokens[i++].type !== TokenType.ExclamationMark) return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].value === 'important') {
- tokens[start].importantEnd = i;
- return i - start + 1;
- } else {
- return 0;
- }
- }
-
- /**
- * Get node with `!important` word
- * @returns {Array} `['important', sc]` where `sc` is optional whitespace
- */
- function getImportant() {
- var type = NodeType.ImportantType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, token.importantEnd);
-
- pos = token.importantEnd + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an included mixin (`@include` or `@extend`
- * directive).
- * @param {Number} i Token's index number
- * @returns {Number} Length of the included mixin
- */
- function checkInclude(i) {
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkInclude1(i)) tokens[i].include_type = 1;else if (l = checkInclude2(i)) tokens[i].include_type = 2;else if (l = checkInclude3(i)) tokens[i].include_type = 3;else if (l = checkInclude4(i)) tokens[i].include_type = 4;else if (l = checkInclude5(i)) tokens[i].include_type = 5;
-
- return l;
- }
-
- /**
- * Get node with included mixin
- * @returns {Array} `['include', x]`
- */
- function getInclude() {
- var type = tokens[pos].include_type;
-
- if (type === 1) return getInclude1();
- if (type === 2) return getInclude2();
- if (type === 3) return getInclude3();
- if (type === 4) return getInclude4();
- if (type === 5) return getInclude5();
- }
-
- /**
- * Get node with included mixin with keyfames selector like
- * `@include nani(foo) { 0% {}}`
- * @param {Number} i Token's index number
- * @returns {Number} Length of the include
- */
- function checkInclude1(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (tokens[start + 1].value !== 'include') return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkArguments(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkKeyframesBlocks(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with included mixin with keyfames selector like
- * `@include nani(foo) { 0% {}}`
- * @returns {Array} `['include', ['atkeyword', x], sc, ['selector', y], sc,
- * ['arguments', z], sc, ['block', q], sc` where `x` is `include` or
- * `extend`, `y` is mixin's identifier (selector), `z` are arguments
- * passed to the mixin, `q` is block passed to the mixin containing a
- * ruleset > selector > keyframesSelector, and `sc` are optional
- * whitespaces
- */
- function getInclude1() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getIdentOrInterpolation(), getSC(), getArguments(), getSC(), getKeyframesBlocks());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an included mixin like `@include nani(foo) {...}`
- * @param {Number} i Token's index number
- * @returns {Number} Length of the include
- */
- function checkInclude2(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (tokens[start + 1].value !== 'include') return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkArguments(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with included mixin like `@include nani(foo) {...}`
- * @returns {Array} `['include', ['atkeyword', x], sc, ['selector', y], sc,
- * ['arguments', z], sc, ['block', q], sc` where `x` is `include` or
- * `extend`, `y` is mixin's identifier (selector), `z` are arguments
- * passed to the mixin, `q` is block passed to the mixin and `sc`
- * are optional whitespaces
- */
- function getInclude2() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getIdentOrInterpolation(), getSC(), getArguments(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an included mixin like `@include nani(foo)`
- * @param {Number} i Token's index number
- * @returns {Number} Length of the include
- */
- function checkInclude3(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (tokens[start + 1].value !== 'include') return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkArguments(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with included mixin like `@include nani(foo)`
- * @returns {Array} `['include', ['atkeyword', x], sc, ['selector', y], sc,
- * ['arguments', z], sc]` where `x` is `include` or `extend`, `y` is
- * mixin's identifier (selector), `z` are arguments passed to the
- * mixin and `sc` are optional whitespaces
- */
- function getInclude3() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getIdentOrInterpolation(), getSC(), getArguments());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an included mixin with a content block passed
- * as an argument (e.g. `@include nani {...}`)
- * @param {Number} i Token's index number
- * @returns {Number} Length of the mixin
- */
- function checkInclude4(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (tokens[start + 1].value !== 'include') return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with an included mixin with a content block passed
- * as an argument (e.g. `@include nani {...}`)
- * @returns {Array} `['include', x]`
- */
- function getInclude4() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getIdentOrInterpolation(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkInclude5(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (tokens[start + 1].value !== 'include') return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * @returns {Array} `['include', x]`
- */
- function getInclude5() {
- var type = NodeType.IncludeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC(), getIdentOrInterpolation());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of an interpolated variable (e.g. `#{$nani}`).
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkInterpolation(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type !== TokenType.NumberSign || !tokens[i + 1] || tokens[i + 1].type !== TokenType.LeftCurlyBracket) return 0;
-
- i += 2;
-
- while (tokens[i].type !== TokenType.RightCurlyBracket) {
- if (l = checkArgument(i)) i += l;else return 0;
- }
-
- return tokens[i].type === TokenType.RightCurlyBracket ? i - start + 1 : 0;
- }
-
- /**
- * Get node with an interpolated variable
- * @returns {Array} `['interpolation', x]`
- */
- function getInterpolation() {
- var type = NodeType.InterpolationType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `#{`:
- pos += 2;
-
- while (pos < tokensLength && tokens[pos].type !== TokenType.RightCurlyBracket) {
- var body = getArgument();
- if (typeof body.content === 'string') content.push(body);else content = content.concat(body);
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `}`:
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check a single keyframe block - `5% {}`
- * @param {Number} i
- * @returns {Number}
- */
- function checkKeyframesBlock(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkKeyframesSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get a single keyframe block - `5% {}`
- * @returns {Node}
- */
- function getKeyframesBlock() {
- var type = NodeType.RulesetType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getKeyframesSelectorsGroup(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check all keyframe blocks - `5% {} 100% {}`
- * @param {Number} i
- * @returns {Number}
- */
- function checkKeyframesBlocks(i) {
- var start = i;
- var l = void 0;
-
- if (i < tokensLength && tokens[i].type === TokenType.LeftCurlyBracket) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkKeyframesBlock(i)) i += l;
-
- while (tokens[i].type !== TokenType.RightCurlyBracket) {
- if (l = checkSC(i)) i += l;else if (l = checkKeyframesBlock(i)) i += l;else if (l = checkAtrule(i)) {
- i += l;
- if (l = checkSC(i)) i += l;
- if (l = checkDeclDelim(i)) i += l;
- } else break;
- }
-
- if (i < tokensLength && tokens[i].type === TokenType.RightCurlyBracket) i++;else return 0;
-
- return i - start;
- }
-
- /**
- * Get all keyframe blocks - `5% {} 100% {}`
- * @returns {Node}
- */
- function getKeyframesBlocks() {
- var type = NodeType.BlockType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var keyframesBlocksEnd = token.right;
- var content = [];
-
- // Skip `{`.
- pos++;
-
- while (pos < keyframesBlocksEnd) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkKeyframesBlock(pos)) content.push(getKeyframesBlock());else if (checkAtrule(pos)) {
- content.push(getAtrule()); // @content
- if (checkSC(pos)) content = content.concat(getSC());
- if (checkDeclDelim(pos)) content.push(getDeclDelim());
- } else break;
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `}`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a @keyframes rule.
- * @param {Number} i Token's index number
- * @return {Number} Length of the @keyframes rule
- */
- function checkKeyframesRule(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- var atruleName = joinValues2(i - l, l);
- if (atruleName.toLowerCase().indexOf('keyframes') === -1) return 0;
-
- if (l = checkSC(i)) i += l;else return 0;
-
- if (l = checkIdentOrInterpolation(i) || checkPseudoc(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkKeyframesBlocks(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * @return {Node}
- */
- function getKeyframesRule() {
- var type = NodeType.AtruleType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC());
-
- if (checkIdentOrInterpolation(pos)) content = content.concat(getIdentOrInterpolation());else if (checkPseudoc(pos)) {
- content = content.concat(getPseudoc());
- }
-
- content = content.concat(getSC(), getKeyframesBlocks());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check a single keyframe selector - `5%`, `from` etc
- * @param {Number} i
- * @returns {Number}
- */
- function checkKeyframesSelector(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) {
- // Valid selectors are only `from` and `to`.
- var selector = joinValues2(i, l);
- if (selector !== 'from' && selector !== 'to') return 0;
-
- i += l;
- tokens[start].keyframesSelectorType = 1;
- } else if (l = checkPercentage(i)) {
- i += l;
- tokens[start].keyframesSelectorType = 2;
- } else if (l = checkInterpolation(i)) {
- i += l;
- tokens[start].keyframesSelectorType = 3;
- } else {
- return 0;
- }
-
- return i - start;
- }
-
- /**
- * Get a single keyframe selector
- * @returns {Node}
- */
- function getKeyframesSelector() {
- var keyframesSelectorType = NodeType.KeyframesSelectorType;
- var selectorType = NodeType.SelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (token.keyframesSelectorType === 1) {
- content.push(getIdent());
- } else if (token.keyframesSelectorType === 2) {
- content.push(getPercentage());
- } else if (token.keyframesSelectorType === 3) {
- content.push(getInterpolation());
- }
-
- var keyframesSelector = newNode(keyframesSelectorType, content, line, column);
-
- return newNode(selectorType, [keyframesSelector], line, column);
- }
-
- /**
- * Check the keyframe's selector groups
- * @param {Number} i
- * @returns {Number}
- */
- function checkKeyframesSelectorsGroup(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkKeyframesSelector(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var spaceBefore = checkSC(i);
- var comma = checkDelim(i + spaceBefore);
- if (!comma) break;
-
- var spaceAfter = checkSC(i + spaceBefore + comma);
- if (l = checkKeyframesSelector(i + spaceBefore + comma + spaceAfter)) {
- i += spaceBefore + comma + spaceAfter + l;
- } else break;
- }
-
- tokens[start].selectorsGroupEnd = i;
-
- return i - start;
- }
-
- /**
- * Get the keyframe's selector groups
- * @returns {Array} An array of keyframe selectors
- */
- function getKeyframesSelectorsGroup() {
- var selectorsGroup = [];
- var selectorsGroupEnd = tokens[pos].selectorsGroupEnd;
-
- selectorsGroup.push(getKeyframesSelector());
-
- while (pos < selectorsGroupEnd) {
- selectorsGroup = selectorsGroup.concat(getSC(), getDelim(), getSC(), getKeyframesSelector());
- }
-
- return selectorsGroup;
- }
-
- /**
- * Check if token is part of a loop.
- * @param {Number} i Token's index number
- * @returns {Number} Length of the loop
- */
- function checkLoop(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkAtkeyword(i)) i += l;else return 0;
-
- if (['for', 'each', 'while'].indexOf(tokens[start + 1].value) < 0) return 0;
-
- while (i < tokensLength) {
- if (l = checkBlock(i)) {
- i += l;
- break;
- } else if (l = checkVariable(i) || checkNumber(i) || checkInterpolation(i) || checkIdent(i) || checkSC(i) || checkOperator(i) || checkCombinator(i) || checkString(i)) i += l;else return 0;
- }
-
- return i - start;
- }
-
- /**
- * Get node with a loop.
- * @returns {Array} `['loop', x]`
- */
- function getLoop() {
- var type = NodeType.LoopType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content.push(getAtkeyword());
-
- while (pos < tokensLength) {
- if (checkBlock(pos)) {
- content.push(getBlock());
- break;
- } else if (checkVariable(pos)) content.push(getVariable());else if (checkNumber(pos)) content.push(getNumber());else if (checkInterpolation(pos)) content.push(getInterpolation());else if (checkIdent(pos)) content.push(getIdent());else if (checkOperator(pos)) content.push(getOperator());else if (checkCombinator(pos)) content.push(getCombinator());else if (checkSC(pos)) content = content.concat(getSC());else if (checkString(pos)) content.push(getString());
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a mixin
- * @param {Number} i Token's index number
- * @returns {Number} Length of the mixin
- */
- function checkMixin(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if ((l = checkAtkeyword(i)) && tokens[i + 1].value === 'mixin') i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkArguments(i)) i += l;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a mixin
- * @returns {Array} `['mixin', x]`
- */
- function getMixin() {
- var type = NodeType.MixinType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getAtkeyword(), getSC());
-
- if (checkIdentOrInterpolation(pos)) content = content.concat(getIdentOrInterpolation());
-
- content = content.concat(getSC());
-
- if (checkArguments(pos)) content.push(getArguments());
-
- content = content.concat(getSC());
-
- if (checkBlock(pos)) content.push(getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a namespace sign (`|`)
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is `|`, `0` if not
- */
- function checkNamespace(i) {
- return i < tokensLength && tokens[i].type === TokenType.VerticalLine ? 1 : 0;
- }
-
- /**
- * Get node with a namespace sign
- * @returns {Array} `['namespace']`
- */
- function getNamespace() {
- var type = NodeType.NamespaceType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '|';
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkNmName2(i) {
- if (tokens[i].type === TokenType.Identifier) return 1;else if (tokens[i].type !== TokenType.DecimalNumber) return 0;
-
- i++;
-
- return i < tokensLength && tokens[i].type === TokenType.Identifier ? 2 : 1;
- }
-
- /**
- * @returns {String}
- */
- function getNmName2() {
- var s = tokens[pos].value;
-
- if (tokens[pos++].type === TokenType.DecimalNumber && pos < tokensLength && tokens[pos].type === TokenType.Identifier) s += tokens[pos++].value;
-
- return s;
- }
-
- /**
- * Check if token is part of a number
- * @param {Number} i Token's index number
- * @returns {Number} Length of number
- */
- function checkNumber(i) {
- if (i >= tokensLength) return 0;
-
- if (tokens[i].number_l) return tokens[i].number_l;
-
- // `10`:
- if (i < tokensLength && tokens[i].type === TokenType.DecimalNumber && (!tokens[i + 1] || tokens[i + 1] && tokens[i + 1].type !== TokenType.FullStop)) {
- tokens[i].number_l = 1;
- return 1;
- }
-
- // `10.`:
- if (i < tokensLength && tokens[i].type === TokenType.DecimalNumber && tokens[i + 1] && tokens[i + 1].type === TokenType.FullStop && (!tokens[i + 2] || tokens[i + 2].type !== TokenType.DecimalNumber)) {
- tokens[i].number_l = 2;
- return 2;
- }
-
- // `.10`:
- if (i < tokensLength && tokens[i].type === TokenType.FullStop && tokens[i + 1].type === TokenType.DecimalNumber) {
- tokens[i].number_l = 2;
- return 2;
- }
-
- // `10.10`:
- if (i < tokensLength && tokens[i].type === TokenType.DecimalNumber && tokens[i + 1] && tokens[i + 1].type === TokenType.FullStop && tokens[i + 2] && tokens[i + 2].type === TokenType.DecimalNumber) {
- tokens[i].number_l = 3;
- return 3;
- }
-
- return 0;
- }
-
- /**
- * Get node with number
- * @returns {Array} `['number', x]` where `x` is a number converted
- * to string.
- */
- function getNumber() {
- var type = NodeType.NumberType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var l = tokens[pos].number_l;
- var content = '';
-
- for (var j = 0; j < l; j++) {
- content += tokens[pos + j].value;
- }
-
- pos += l;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is an operator (`/`, `%`, `,`, `:` or `=`).
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is an operator, otherwise `0`
- */
- function checkOperator(i) {
- if (i >= tokensLength) return 0;
-
- switch (tokens[i].type) {
- case TokenType.Solidus:
- case TokenType.PercentSign:
- case TokenType.Comma:
- case TokenType.Colon:
- case TokenType.EqualsSign:
- case TokenType.EqualitySign:
- case TokenType.InequalitySign:
- case TokenType.LessThanSign:
- case TokenType.GreaterThanSign:
- case TokenType.Asterisk:
- return 1;
- }
-
- return 0;
- }
-
- /**
- * Get node with an operator
- * @returns {Array} `['operator', x]` where `x` is an operator converted
- * to string.
- */
- function getOperator() {
- var type = NodeType.OperatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of `!optional` word
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkOptional(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength || tokens[i++].type !== TokenType.ExclamationMark) return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].value === 'optional') {
- tokens[start].optionalEnd = i;
- return i - start + 1;
- } else {
- return 0;
- }
- }
-
- /**
- * Get node with `!optional` word
- */
- function getOptional() {
- var type = NodeType.OptionalType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, token.optionalEnd);
-
- pos = token.optionalEnd + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of text inside parentheses, e.g. `(1)`
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkParentheses(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var right = tokens[i].right;
- var l = void 0;
-
- // Skip `(`.
- if (tokens[i].type === TokenType.LeftParenthesis) i++;else return 0;
-
- if (i < right) {
- if (l = checkTsets(i)) i += l;else return 0;
- }
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- /**
- * Get node with text inside parentheses, e.g. `(1)`
- * @return {Node}
- */
- function getParentheses() {
- var type = NodeType.ParenthesesType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var right = token.right;
- var content = [];
-
- // Skip `(`.
- pos++;
-
- if (pos < right) {
- content = getTsets();
- }
-
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is a parent selector, e.g. `&`
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkParentSelector(i) {
- return i < tokensLength && tokens[i].type === TokenType.Ampersand ? 1 : 0;
- }
-
- /**
- * Get node with a parent selector
- * @return {Node}
- */
- function getParentSelector() {
- var type = NodeType.ParentSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '&';
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a parent selector extension, e.g. `&--foo-bar`
- * @param {number} i Token's index number
- * @returns {number} Length of the parent selector extension
- */
- function checkParentSelectorExtension(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- while (i < tokensLength) {
- if (l = checkIdentOrInterpolation(i) || checkPartialIdent(i)) i += l;else break;
- }
-
- return i - start;
- }
-
- /**
- * Get parent selector extension node
- * @return {Node}
- */
- function getParentSelectorExtension() {
- var type = NodeType.ParentSelectorExtensionType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- while (pos < tokensLength) {
- if (checkIdentOrInterpolation(pos)) {
- content = content.concat(getIdentOrInterpolation());
- } else if (checkPartialIdent(pos)) {
- content.push(getIdent());
- } else break;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a parent selector with an extension or not
- * @param {number} i Token's index number
- * @return {number} Length of the parent selector and extension if applicable
- */
- function checkParentSelectorWithExtension(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkParentSelector(i)) i += l;else return 0;
-
- if (l = checkParentSelectorExtension(i)) i += l;
-
- return i - start;
- }
-
- /**
- * Get parent selector node and extension node if applicable
- * @return {Array}
- */
- function getParentSelectorWithExtension() {
- var content = [getParentSelector()];
-
- if (checkParentSelectorExtension(pos)) content.push(getParentSelectorExtension());
-
- return content;
- }
-
- /**
- * Check if token is part of a number or an interpolation with a percent sign
- * (e.g. `10%`).
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkPercentage(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkNumberOrInterpolation(i)) i += l;else return 0;
-
- if (i >= tokensLength) return 0;
-
- // Skip `%`.
- if (tokens[i].type === TokenType.PercentSign) i++;else return 0;
-
- return i - start;
- }
-
- /**
- * Get a percentage node that contains either a number or an interpolation
- * @returns {Object} The percentage node
- */
- function getPercentage() {
- var type = NodeType.PercentageType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = getNumberOrInterpolation();
- var end = getLastPosition(content, line, column, 1);
-
- // Skip `%`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is a number or an interpolation
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkNumberOrInterpolation(i) {
- var start = i;
- var l = void 0;
-
- while (i < tokensLength) {
- if (l = checkInterpolation(i) || checkNumber(i)) i += l;else break;
- }
-
- return i - start;
- }
-
- /**
- * Get a number and/or interpolation node
- * @returns {Array} An array containing a single or multiple nodes
- */
- function getNumberOrInterpolation() {
- var content = [];
-
- while (pos < tokensLength) {
- if (checkInterpolation(pos)) content.push(getInterpolation());else if (checkNumber(pos)) content.push(getNumber());else break;
- }
-
- return content;
- }
-
- /**
- * Check if token is part of a placeholder selector (e.g. `%abc`).
- * @param {Number} i Token's index number
- * @returns {Number} Length of the selector
- */
- function checkPlaceholder(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[start].placeholder_l) return tokens[start].placeholder_l;
-
- // Skip `%`.
- if (tokens[i].type === TokenType.PercentSign) i++;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) {
- i += l;
- tokens[start].placeholder_l = i - start;
- } else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a placeholder selector
- * @returns {Array} `['placeholder', ['ident', x]]` where x is a placeholder's
- * identifier (without `%`, e.g. `abc`).
- */
- function getPlaceholder() {
- var type = NodeType.PlaceholderType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `%`.
- pos++;
-
- content = content.concat(getIdentOrInterpolation());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkProgid(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (joinValues2(i, 6) === 'progid:DXImageTransform.Microsoft.') i += 6;else return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].type === TokenType.LeftParenthesis) {
- tokens[start].progid_end = tokens[i].right;
- i = tokens[i].right + 1;
- } else return 0;
-
- return i - start;
- }
-
- /**
- * @returns {Array}
- */
- function getProgid() {
- var type = NodeType.ProgidType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var progid_end = token.progid_end;
- var content = joinValues(pos, progid_end);
-
- pos = progid_end + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a property
- * @param {Number} i Token's index number
- * @return {Number} Length of the property
- */
- function checkProperty(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkProperty1(i)) tokens[start].propertyType = 1;else if (l = checkProperty2(i)) tokens[start].propertyType = 2;else if (l = checkProperty3(i)) tokens[start].propertyType = 3;
-
- return l;
- }
-
- /**
- * Get node with a property
- * @return {Node}
- */
- function getProperty() {
- var type = tokens[pos].propertyType;
-
- if (type === 1) return getProperty1();
- if (type === 2) return getProperty2();
- if (type === 3) return getProperty3();
- }
-
- /**
- * Check if token is part of a property
- * (1) `foo`
- * (2) `#{$foo}`
- * @param {Number} i Token's index number
- * @returns {Number} Length of the property
- */
- function checkProperty1(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a property
- * @returns {Array}
- */
- function getProperty1() {
- var type = NodeType.PropertyType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = getIdentOrInterpolation();
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a custom property
- * (1) `--foo-bar`
- * @param {Number} i Token's index number
- * @return {Number} Length of the property
- */
- function checkProperty2(i) {
- return checkCustomProperty(i);
- }
-
- /**
- * Get node with a custom property
- * @return {Node}
- */
- function getProperty2() {
- return getCustomProperty();
- }
-
- /**
- * Check if token is part of a property
- * (1) `$foo`
- * @param {Number} i Token's index number
- * @returns {Number} Length of the property
- */
- function checkProperty3(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkVariable(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a property
- * @returns {Array} `['property', x]`
- */
- function getProperty3() {
- var type = NodeType.PropertyType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getVariable()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a custom property
- * @param {Number} i Token's index number
- * @return {Number} Length of the property
- */
- function checkCustomProperty(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type !== TokenType.HyphenMinus || tokens[i + 1] && tokens[i + 1].type !== TokenType.HyphenMinus) return 0;
-
- // Skip `--`
- i += 2;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a custom property
- * @return {Node}
- */
- function getCustomProperty() {
- var type = NodeType.CustomPropertyType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `--`
- pos += 2;
-
- var content = [getIdent()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a colon
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is a colon, otherwise `0`
- */
- function checkPropertyDelim(i) {
- return i < tokensLength && tokens[i].type === TokenType.Colon ? 1 : 0;
- }
-
- /**
- * Get node with a colon
- * @returns {Array} `['propertyDelim']`
- */
- function getPropertyDelim() {
- var type = NodeType.PropertyDelimType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = ':';
-
- // Skip `:`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkPseudo(i) {
- return checkPseudoe(i) || checkPseudoc(i);
- }
-
- /**
- * @returns {Array}
- */
- function getPseudo() {
- if (checkPseudoe(pos)) return getPseudoe();
- if (checkPseudoc(pos)) return getPseudoc();
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkPseudoe(i) {
- var l = void 0;
-
- // Check `::`
- if (i >= tokensLength || tokens[i].type !== TokenType.Colon || i >= tokensLength || tokens[i + 1].type !== TokenType.Colon) return 0;
-
- if (l = checkPseudoElement1(i)) tokens[i].pseudoElementType = 1;else if (l = checkPseudoElement2(i)) tokens[i].pseudoElementType = 2;else return 0;
-
- return l;
- }
-
- /**
- * @returns {Node}
- */
- function getPseudoe() {
- var childType = tokens[pos].pseudoElementType;
- if (childType === 1) return getPseudoElement1();
- if (childType === 2) return getPseudoElement2();
- }
-
- /**
- * (1) `::slotted(selector)`
- * (2) `::slotted(selector, selector)`
- */
- function checkPseudoElement1(i) {
- var start = i;
- var l = void 0;
-
- // Skip `::`.
- i += 2;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- /**
- * (1) `::slotted(selector)`
- * (2) `::slotted(selector, selector)`
- */
- function getPseudoElement1() {
- var type = NodeType.PseudoeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `::`.
- pos += 2;
-
- content.push(getIdent());
-
- {
- var _type = NodeType.ArgumentsType;
- var _token = tokens[pos];
- var _line = _token.ln;
- var _column = _token.col;
-
- // Skip `(`.
- pos++;
-
- var selectorContent = [].concat(getSC(), getSelectorsGroup(), getSC());
-
- var end = getLastPosition(selectorContent, _line, _column, 1);
- var args = newNode(_type, selectorContent, _line, _column, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
- }
-
- return newNode(type, content, line, column);
- }
-
- function checkPseudoElement2(i) {
- var start = i;
- var l = void 0;
-
- // Skip `::`.
- i += 2;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * @returns {Node}
- */
- function getPseudoElement2() {
- var type = NodeType.PseudoeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `::`.
- pos += 2;
-
- var content = getIdentOrInterpolation();
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkPseudoc(i) {
- var l = void 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.Colon) return 0;
-
- if (l = checkPseudoClass3(i)) tokens[i].pseudoClassType = 3;else if (l = checkPseudoClass4(i)) tokens[i].pseudoClassType = 4;else if (l = checkPseudoClass5(i)) tokens[i].pseudoClassType = 5;else if (l = checkPseudoClass1(i)) tokens[i].pseudoClassType = 1;else if (l = checkPseudoClass2(i)) tokens[i].pseudoClassType = 2;else if (l = checkPseudoClass6(i)) tokens[i].pseudoClassType = 6;else return 0;
-
- return l;
- }
-
- /**
- * @returns {Array}
- */
- function getPseudoc() {
- var childType = tokens[pos].pseudoClassType;
- if (childType === 1) return getPseudoClass1();
- if (childType === 2) return getPseudoClass2();
- if (childType === 3) return getPseudoClass3();
- if (childType === 4) return getPseudoClass4();
- if (childType === 5) return getPseudoClass5();
- if (childType === 6) return getPseudoClass6();
- }
-
- /**
- * (-) `:not(panda)`
- */
- function checkPseudoClass1(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- /**
- * (-) `:not(panda)`
- */
- function getPseudoClass1() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content = content.concat(getIdentOrInterpolation());
-
- {
- var _type2 = NodeType.ArgumentsType;
- var _token2 = tokens[pos];
- var _line2 = _token2.ln;
- var _column2 = _token2.col;
-
- // Skip `(`.
- pos++;
-
- var selectorContent = [].concat(getSC(), getSelectorsGroup(), getSC());
-
- var end = getLastPosition(selectorContent, _line2, _column2, 1);
- var args = newNode(_type2, selectorContent, _line2, _column2, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `:nth-child(odd)`
- * (2) `:nth-child(even)`
- * (3) `:lang(de-DE)`
- */
- function checkPseudoClass2(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass2() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content = content.concat(getIdentOrInterpolation());
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
-
- // Skip `(`.
- pos++;
-
- var value = [].concat(getSC(), getIdentOrInterpolation(), getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:nth-child(-3n + 2)`
- */
- function checkPseudoClass3(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkUnary(i)) i += l;
-
- if (l = checkNumberOrInterpolation(i)) i += l;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].value === 'n') i++;
-
- if (l = checkSC(i)) i += l;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.PlusSign || tokens[i].type === TokenType.HyphenMinus) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkNumberOrInterpolation(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass3() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content = content.concat(getIdentOrInterpolation());
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
- var value = [];
-
- // Skip `(`.
- pos++;
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
- if (checkNumberOrInterpolation(pos)) value = value.concat(getNumberOrInterpolation());
-
- {
- var _token3 = tokens[pos];
-
- if (_token3.value === 'n') {
- var _l = _token3.ln;
- var _c = _token3.col;
- var _content = _token3.value;
- var ident = newNode(NodeType.IdentType, _content, _l, _c);
- value.push(ident);
- pos++;
- }
- }
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
-
- value = value.concat(getSC());
-
- if (checkNumberOrInterpolation(pos)) value = value.concat(getNumberOrInterpolation());
-
- value = value.concat(getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:nth-child(-3n)`
- */
- function checkPseudoClass4(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (i >= tokensLength) return 0;
- if (tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkUnary(i)) i += l;
-
- if (l = checkInterpolation(i)) i += l;
-
- if (tokens[i].type === TokenType.DecimalNumber) i++;
-
- if (tokens[i].value === 'n') i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass4() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content = content.concat(getIdentOrInterpolation());
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
- var value = [];
-
- // Skip `(`.
- pos++;
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
- if (checkInterpolation(pos)) value.push(getInterpolation());
- if (checkNumber(pos)) value.push(getNumber());
- if (checkIdent(pos)) value.push(getIdent());
-
- value = value.concat(getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:nth-child(+8)`
- */
- function checkPseudoClass5(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- if (i >= tokensLength) return 0;
- if (tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- var right = tokens[i].right;
-
- // Skip `(`.
- i++;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkUnary(i)) i += l;
- if (tokens[i].type === TokenType.DecimalNumber) i++;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (i !== right) return 0;
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- function getPseudoClass5() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `:`.
- pos++;
-
- content = content.concat(getIdentOrInterpolation());
-
- var l = tokens[pos].ln;
- var c = tokens[pos].col;
- var value = [];
-
- // Skip `(`.
- pos++;
-
- value = value.concat(getSC());
-
- if (checkUnary(pos)) value.push(getUnary());
- if (checkNumber(pos)) value.push(getNumber());
-
- value = value.concat(getSC());
-
- var end = getLastPosition(value, l, c, 1);
- var args = newNode(NodeType.ArgumentsType, value, l, c, end);
- content.push(args);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (-) `:checked`
- */
- function checkPseudoClass6(i) {
- var start = i;
- var l = void 0;
-
- // Skip `:`.
- i++;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getPseudoClass6() {
- var type = NodeType.PseudocType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `:`.
- pos++;
-
- var content = getIdentOrInterpolation();
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkRuleset(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkSelectorsGroup(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkBlock(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getRuleset() {
- var type = NodeType.RulesetType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [].concat(getSelectorsGroup(), getSC(), getBlock());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is marked as a space (if it's a space or a tab
- * or a line break).
- * @param {Number} i
- * @returns {Number} Number of spaces in a row starting with the given token.
- */
- function checkS(i) {
- return i < tokensLength && tokens[i].ws ? tokens[i].ws_last - i + 1 : 0;
- }
-
- /**
- * Get node with spaces
- * @returns {Array} `['s', x]` where `x` is a string containing spaces
- */
- function getS() {
- var type = NodeType.SType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = joinValues(pos, tokens[pos].ws_last);
-
- pos = tokens[pos].ws_last + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a space or a comment.
- * @param {Number} i Token's index number
- * @returns {Number} Number of similar (space or comment) tokens
- * in a row starting with the given token.
- */
- function checkSC(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
- var lsc = 0;
-
- while (i < tokensLength) {
- if (l = checkS(i)) tokens[i].sc_child = 1;else if (l = checkCommentML(i)) tokens[i].sc_child = 2;else if (l = checkCommentSL(i)) tokens[i].sc_child = 3;else break;
-
- i += l;
- lsc += l;
- }
-
- return lsc || 0;
- }
-
- /**
- * Get node with spaces and comments
- * @returns {Array} Array containing nodes with spaces (if there are any)
- * and nodes with comments (if there are any):
- * `[['s', x]*, ['comment', y]*]` where `x` is a string of spaces
- * and `y` is a comment's text (without `/*` and `* /`).
- */
- function getSC() {
- var sc = [];
-
- if (pos >= tokensLength) return sc;
-
- while (pos < tokensLength) {
- var childType = tokens[pos].sc_child;
-
- if (childType === 1) sc.push(getS());else if (childType === 2) sc.push(getCommentML());else if (childType === 3) sc.push(getCommentSL());else break;
- }
-
- return sc;
- }
-
- /**
- * Check if token is part of a hexadecimal number (e.g. `#fff`) inside a simple
- * selector
- * @param {number} i Token's index number
- * @return {number}
- */
- function checkShash(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.NumberSign) i++;else return 0;
-
- if (l = checkIdentOrInterpolation(i) || checkPartialIdent(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- if (l = checkIdentOrInterpolation(i) || checkPartialIdent(i)) i += l;else break;
- }
-
- tokens[start].shashEnd = i;
-
- return i - start;
- }
-
- /**
- * Get node with a hexadecimal number (e.g. `#fff`) inside a simple selector
- * @returns {Node}
- */
- function getShash() {
- var type = NodeType.ShashType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var end = token.shashEnd;
- var content = [];
-
- // Skip `#`.
- pos++;
-
- while (pos < end) {
- if (checkIdentOrInterpolation(pos)) {
- content = content.concat(getIdentOrInterpolation());
- } else if (checkPartialIdent(pos)) {
- content.push(getIdent());
- } else break;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a string (text wrapped in quotes)
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is part of a string, `0` if not
- */
- function checkString(i) {
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.StringSQ || tokens[i].type === TokenType.StringDQ) {
- return 1;
- }
-
- return 0;
- }
-
- /**
- * Get string's node
- * @returns {Array} `['string', x]` where `x` is a string (including
- * quotes).
- */
- function getString() {
- var type = NodeType.StringType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Validate stylesheet: it should consist of any number (0 or more) of
- * rulesets (sets of rules with selectors), @-rules, whitespaces or
- * comments.
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkStylesheet(i) {
- var start = i;
- var l = void 0;
-
- while (i < tokensLength) {
- if (l = checkSC(i)) tokens[i].stylesheet_child = 1;else if (l = checkRuleset(i)) tokens[i].stylesheet_child = 2;else if (l = checkInclude(i)) tokens[i].stylesheet_child = 3;else if (l = checkExtend(i)) tokens[i].stylesheet_child = 4;else if (l = checkMixin(i)) tokens[i].stylesheet_child = 5;else if (l = checkLoop(i)) tokens[i].stylesheet_child = 6;else if (l = checkConditionalStatement(i)) tokens[i].stylesheet_child = 7;else if (l = checkAtrule(i)) tokens[i].stylesheet_child = 8;else if (l = checkDeclaration(i)) tokens[i].stylesheet_child = 9;else if (l = checkDeclDelim(i)) tokens[i].stylesheet_child = 10;else throwError(i);
-
- i += l;
- }
-
- return i - start;
- }
-
- /**
- * @returns {Array} `['stylesheet', x]` where `x` is all stylesheet's
- * nodes.
- */
- function getStylesheet() {
- var type = NodeType.StylesheetType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- while (pos < tokensLength) {
- var childType = tokens[pos].stylesheet_child;
-
- if (childType === 1) content = content.concat(getSC());
- if (childType === 2) content.push(getRuleset());
- if (childType === 3) content.push(getInclude());
- if (childType === 4) content.push(getExtend());
- if (childType === 5) content.push(getMixin());
- if (childType === 6) content.push(getLoop());
- if (childType === 7) content.push(getConditionalStatement());
- if (childType === 8) content.push(getAtrule());
- if (childType === 9) content.push(getDeclaration());
- if (childType === 10) content.push(getDeclDelim());
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkTset(i) {
- var l = void 0;
-
- if (l = checkVhash(i)) tokens[i].tset_child = 1;else if (l = checkOperator(i)) tokens[i].tset_child = 2;else if (l = checkAny(i)) tokens[i].tset_child = 3;else if (l = checkSC(i)) tokens[i].tset_child = 4;
-
- return l;
- }
-
- /**
- * @returns {Array}
- */
- function getTset() {
- var childType = tokens[pos].tset_child;
-
- if (childType === 1) return getVhash();
- if (childType === 2) return getOperator();
- if (childType === 3) return getAny();
- if (childType === 4) return getSC();
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkTsets(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- while (l = checkTset(i)) {
- i += l;
- }
-
- tokens[start].tsets_end = i;
- return i - start;
- }
-
- /**
- * @returns {Array}
- */
- function getTsets() {
- var content = [];
- var t = void 0;
-
- if (pos >= tokensLength) return content;
-
- var end = tokens[pos].tsets_end;
- while (pos < end) {
- t = getTset();
- if (typeof t.content === 'string') content.push(t);else content = content.concat(t);
- }
-
- return content;
- }
-
- /**
- * Check if token is an unary (arithmetical) sign (`+` or `-`)
- * @param {Number} i Token's index number
- * @returns {Number} `1` if token is an unary sign, `0` if not
- */
- function checkUnary(i) {
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type === TokenType.HyphenMinus || tokens[i].type === TokenType.PlusSign) {
- return 1;
- }
-
- return 0;
- }
-
- /**
- * Get node with an unary (arithmetical) sign (`+` or `-`)
- * @returns {Array} `['unary', x]` where `x` is an unary sign
- * converted to string.
- */
- function getUnary() {
- var type = NodeType.OperatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a unicode range (single or multiple <urange> nodes)
- * @param {number} i Token's index
- * @return {number} Unicode range node's length
- */
- function checkUnicodeRange(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkUrange(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var spaceBefore = checkSC(i);
- var comma = checkDelim(i + spaceBefore);
- if (!comma) break;
-
- var spaceAfter = checkSC(i + spaceBefore + comma);
- if (l = checkUrange(i + spaceBefore + comma + spaceAfter)) {
- i += spaceBefore + comma + spaceAfter + l;
- } else break;
- }
-
- return i - start;
- }
-
- /**
- * Get a unicode range node
- * @return {Node}
- */
- function getUnicodeRange() {
- var type = NodeType.UnicodeRangeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- while (pos < tokensLength) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkDelim(pos)) content.push(getDelim());else if (checkUrange(pos)) content.push(getUrange());else break;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is unit
- * @param {Number} i Token's index number
- * @return {Number}
- */
- function checkUnit(i) {
- var units = ['em', 'ex', 'ch', 'rem', 'vh', 'vw', 'vmin', 'vmax', 'px', 'mm', 'q', 'cm', 'in', 'pt', 'pc', 'deg', 'grad', 'rad', 'turn', 's', 'ms', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'];
-
- return units.indexOf(tokens[i].value) !== -1 ? 1 : 0;
- }
-
- /**
- * Get unit node of type ident
- * @return {Node} An ident node containing the unit value
- */
- function getUnit() {
- var type = NodeType.IdentType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = token.value;
-
- pos++;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is a u-range (part of a unicode-range)
- * (1) `U+416`
- * (2) `U+400-4ff`
- * (3) `U+4??`
- * @param {number} i Token's index
- * @return {number} Urange node's length
- */
- function checkUrange(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- // Check for unicode prefix (u+ or U+)
- if (tokens[i].value === 'U' || tokens[i].value === 'u') i += 1;else return 0;
-
- if (i >= tokensLength) return 0;
-
- if (tokens[i].value === '+') i += 1;else return 0;
-
- while (i < tokensLength) {
- if (l = checkIdent(i)) i += l;else if (l = checkNumber(i)) i += l;else if (l = checkUnary(i)) i += l;else if (l = _checkUnicodeWildcard(i)) i += l;else break;
- }
-
- tokens[start].urangeEnd = i - 1;
-
- return i - start;
- }
-
- /**
- * Get a u-range node (part of a unicode-range)
- * @return {Node}
- */
- function getUrange() {
- var startPos = pos;
- var type = NodeType.UrangeType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content = joinValues(startPos, tokens[startPos].urangeEnd);
- pos = tokens[startPos].urangeEnd + 1;
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check for unicode wildcard characters `?`
- * @param {number} i Token's index
- * @return {number} Wildcard length
- */
- function _checkUnicodeWildcard(i) {
- var start = i;
-
- if (i >= tokensLength) return 0;
-
- while (i < tokensLength) {
- if (tokens[i].type === TokenType.QuestionMark) i += 1;else break;
- }
-
- return i - start;
- }
-
- /**
- * Check if token is part of URI, e.g. `url('/css/styles.css')`
- * @param {number} i Token's index number
- * @returns {number} Length of URI
- */
- function checkUri(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength || tokens[i].value !== 'url') return 0;
-
- // Skip `url`.
- i++;
-
- if (i >= tokensLength || tokens[i].type !== TokenType.LeftParenthesis) return 0;
-
- // Store the opening parenthesis token as we will reference it's `right`
- // property to determine when the parentheses close
- var leftParenthesis = tokens[i];
-
- // Skip `(`.
- i++;
-
- // Determine the type of URI
- while (i < leftParenthesis.right) {
- if (l = checkUri1(i)) {
- i += l;
- tokens[start].uriType = 1; // Raw based URI (without quotes)
- } else if (l = checkUri2(i)) {
- i += l;
- tokens[start].uriType = 2; // Non-raw based URI (with quotes)
- } else return 0;
- }
-
- // Skip `)`.
- i++;
-
- return i - start;
- }
-
- /**
- * Get specific type of URI node
- * @return {Node} Specific type of URI node
- */
- function getUri() {
- var startPos = pos;
- var type = NodeType.UriType;
- var token = tokens[startPos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var end = void 0;
-
- var uriType = tokens[startPos].uriType;
-
- // Skip `url` and `(`.
- pos += 2;
-
- if (uriType === 1) content = content.concat(getUri1());else if (uriType === 2) content = content.concat(getUri2());else end = getLastPosition(content, line, column, 4);
-
- if (!end) end = getLastPosition(content, line, column, 1);
-
- // Skip `)`.
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token type is valid URI character
- * @param {number} i Token's index number
- * @return {number} Length of raw node
- */
- function checkUriRawCharacters(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkIdent(i)) i += l;else if (l = checkNumber(i)) i += l;else {
- switch (tokens[i].type) {
- case TokenType.ExclamationMark:
- case TokenType.NumberSign:
- case TokenType.DollarSign:
- case TokenType.PercentSign:
- case TokenType.Ampersand:
- case TokenType.Asterisk:
- case TokenType.PlusSign:
- case TokenType.Comma:
- case TokenType.HyphenMinus:
- case TokenType.FullStop:
- case TokenType.Solidus:
- case TokenType.Colon:
- case TokenType.Semicolon:
- case TokenType.LessThanSign:
- case TokenType.EqualsSign:
- case TokenType.GreaterThanSign:
- case TokenType.QuotationMark:
- case TokenType.CommercialAt:
- case TokenType.LeftSquareBracket:
- case TokenType.RightSquareBracket:
- case TokenType.CircumflexAccent:
- case TokenType.LowLine:
- case TokenType.LeftCurlyBracket:
- case TokenType.VerticalLine:
- case TokenType.RightCurlyBracket:
- case TokenType.Tilde:
- i += 1;
- break;
-
- default:
- return 0;
- }
- }
-
- return i - start;
- }
-
- /**
- * Check if content of URI can be contained within a raw node
- * @param {number} i Token's index number
- * @return {number} Length of raw node
- */
- function checkUriRaw(i) {
- var start = i;
- var l = void 0;
-
- while (i < tokensLength) {
- if (checkInterpolation(i) || checkVariable(i)) break;else if (l = checkUriRawCharacters(i)) i += l;else break;
- }
-
- tokens[start].uri_raw_end = i;
-
- return i - start;
- }
-
- /**
- * Get a raw node
- * @return {Node}
- */
- function getUriRaw() {
- var startPos = pos;
- var type = NodeType.RawType;
- var token = tokens[startPos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var l = void 0;
-
- while (pos < tokens[startPos].uri_raw_end) {
- if (checkInterpolation(pos) || checkVariable(pos)) break;else if (l = checkUriRawCharacters(pos)) pos += l;else break;
- }
-
- content = joinValues(startPos, pos - 1);
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check for a raw (without quotes) URI
- * (1) http://foo.com/bar.png
- * (2) http://foo.com/#{$bar}.png
- * (3) #{$foo}/bar.png
- * (4) #{$foo}
- * @param {number} i Token's index number
- * @return {number} Length of URI node
- */
- function checkUri1(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkSC(i)) i += l;
-
- while (i < tokensLength) {
- if (l = checkInterpolation(i) || checkUriRaw(i)) i += l;else break;
- }
-
- if (l = checkSC(i)) i += l;
-
- // Check that we are at the end of the uri
- if (i < tokens[start - 1].right) return 0;
-
- tokens[start].uri_end = i;
-
- return i - start;
- }
-
- /**
- * Get a raw (without quotes) URI
- node
- * @return {Array}
- */
- function getUri1() {
- var startPos = pos;
- var content = [];
-
- if (checkSC(pos)) content = content.concat(getSC());
-
- while (pos < tokens[startPos].uri_end) {
- if (checkInterpolation(pos)) content.push(getInterpolation());else if (checkUriRaw(pos)) content.push(getUriRaw());else break;
- }
-
- if (checkSC(pos)) content = content.concat(getSC());
-
- return content;
- }
-
- /**
- * Check for a non-raw (with quotes) URI
- * (1) 'http://foo.com/bar.png'
- * (2) 'http://foo.com/'#{$bar}.png
- * (3) #{$foo}'/bar.png'
- * @param {number} i Token's index number
- * @return {number} Length of URI node
- */
- function checkUri2(i) {
- var start = i;
- var l = void 0;
-
- while (i < tokensLength) {
- if (l = checkSC(i)) i += l;else if (l = checkString(i)) i += l;else if (l = checkFunction(i)) i += l;else if (l = checkUnary(i)) i += l;else if (l = checkIdentOrInterpolation(i)) i += l;else if (l = checkVariable(i)) i += l;else break;
- }
-
- // Check that we are at the end of the uri
- if (i < tokens[start - 1].right) return 0;
-
- tokens[start].uri_end = i;
-
- return i - start;
- }
-
- /**
- * Get a non-raw (with quotes) URI node
- * @return {Array}
- */
- function getUri2() {
- var startPos = pos;
- var content = [];
-
- while (pos < tokens[startPos].uri_end) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkUnary(pos)) content.push(getUnary());else if (_checkValue(pos)) content.push(_getValue());else break;
- }
-
- return content;
- }
-
- /**
- * Check if token is part of a value
- * @param {Number} i Token's index number
- * @returns {Number} Length of the value
- */
- function checkValue(i) {
- var start = i;
- var l = void 0;
- var s = void 0;
- var _i = void 0;
-
- while (i < tokensLength) {
- if (checkDeclDelim(i)) break;
-
- s = checkSC(i);
- _i = i + s;
-
- if (l = _checkValue(_i)) i += l + s;
- if (!l || checkBlock(i - l)) break;
- }
-
- tokens[start].value_end = i;
-
- return i - start;
- }
-
- /**
- * @returns {Array}
- */
- function getValue() {
- var type = NodeType.ValueType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var end = tokens[pos].value_end;
- var content = [];
- var _pos = void 0;
- var s = void 0;
-
- while (pos < end) {
- s = checkSC(pos);
- _pos = pos + s;
-
- if (checkDeclDelim(_pos)) break;
-
- if (!_checkValue(_pos)) break;
-
- if (s) content = content.concat(getSC());
- content.push(_getValue());
-
- if (checkBlock(_pos)) break;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function _checkValue(i) {
- var l = void 0;
-
- if (l = checkInterpolation(i)) tokens[i].value_child = 1;else if (l = checkVariable(i)) tokens[i].value_child = 2;else if (l = checkVhash(i)) tokens[i].value_child = 3;else if (l = checkBlock(i)) tokens[i].value_child = 4;else if (l = checkAtkeyword(i)) tokens[i].value_child = 5;else if (l = checkOperator(i)) tokens[i].value_child = 6;else if (l = checkImportant(i)) tokens[i].value_child = 7;else if (l = checkGlobal(i)) tokens[i].value_child = 8;else if (l = checkDefault(i)) tokens[i].value_child = 9;else if (l = checkProgid(i)) tokens[i].value_child = 10;else if (l = checkAny(i)) tokens[i].value_child = 11;else if (l = checkParentSelector(i)) tokens[i].value_child = 12;
-
- return l;
- }
-
- /**
- * @returns {Array}
- */
- function _getValue() {
- var childType = tokens[pos].value_child;
- if (childType === 1) return getInterpolation();
- if (childType === 2) return getVariable();
- if (childType === 3) return getVhash();
- if (childType === 4) return getBlock();
- if (childType === 5) return getAtkeyword();
- if (childType === 6) return getOperator();
- if (childType === 7) return getImportant();
- if (childType === 8) return getGlobal();
- if (childType === 9) return getDefault();
- if (childType === 10) return getProgid();
- if (childType === 11) return getAny();
- if (childType === 12) return getParentSelector();
- }
-
- /**
- * @param {number} i Token's index number
- * @returns {number} Length of the value
- */
- function checkSingleValue(i) {
- var start = i;
- var l = void 0;
- var s = void 0;
- var _i = void 0;
-
- while (i < tokensLength) {
- if (checkDeclDelim(i) || checkDelim(i)) break;
-
- s = checkSC(i);
- _i = i + s;
-
- if (l = _checkValue(_i)) i += l + s;
- if (!l || checkBlock(i - l)) break;
- }
-
- return i - start;
- }
-
- /**
- * @returns {Array}
- */
- function getSingleValue() {
- var type = NodeType.ValueType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var _pos = void 0;
- var s = void 0;
-
- while (pos < tokensLength) {
- s = checkSC(pos);
- _pos = pos + s;
-
- if (checkDeclDelim(_pos) || checkDelim(_pos)) break;
-
- if (!_checkValue(_pos)) break;
-
- if (s) content = content.concat(getSC());
- content.push(_getValue());
-
- if (checkBlock(_pos)) break;
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a variable
- * @param {Number} i Token's index number
- * @returns {Number} Length of the variable
- */
- function checkVariable(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- // Skip `$`.
- if (tokens[i].type === TokenType.DollarSign) i++;else return 0;
-
- if (l = checkIdent(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a variable
- * @returns {Array} `['variable', ['ident', x]]` where `x` is
- * a variable name.
- */
- function getVariable() {
- var type = NodeType.VariableType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `$`.
- pos++;
-
- var content = [getIdent()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Check if token is part of a variables list (e.g. `$values...`).
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkVariablesList(i) {
- var d = 0; // Number of dots
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- if (l = checkVariable(i)) i += l;else return 0;
-
- while (i < tokensLength && tokens[i].type === TokenType.FullStop) {
- d++;
- i++;
- }
-
- return d === 3 ? l + d : 0;
- }
-
- /**
- * Get node with a variables list
- * @returns {Array} `['variableslist', ['variable', ['ident', x]]]` where
- * `x` is a variable name.
- */
- function getVariablesList() {
- var type = NodeType.VariablesListType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getVariable()];
- var end = getLastPosition(content, line, column, 3);
-
- // Skip `...`.
- pos += 3;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a hexadecimal number (e.g. `#fff`) inside
- * some value
- * @param {Number} i Token's index number
- * @returns {Number}
- */
- function checkVhash(i) {
- var start = i;
- var l = void 0;
-
- if (i >= tokensLength) return 0;
-
- // Skip `#`.
- if (tokens[i].type === TokenType.NumberSign) i++;else return 0;
-
- if (l = checkNmName2(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get node with a hexadecimal number (e.g. `#fff`) inside some value
- * @returns {Array} `['vhash', x]` where `x` is a hexadecimal number
- * converted to string (without `#`, e.g. `'fff'`).
- */
- function getVhash() {
- var type = NodeType.VhashType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
-
- // Skip `#`.
- pos++;
-
- var content = getNmName2();
- var end = getLastPosition(content, line, column + 1);
- return newNode(type, content, line, column, end);
- }
-
- function checkSelectorsGroup(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
- var selectorCounter = 0;
- var delimCounter = 0;
-
- if (l = checkSelector(i)) {
- i += l;
- selectorCounter++;
- } else return 0;
-
- while (i < tokensLength) {
- var tempStart = i;
- var tempIndex = i;
- var tempLength = void 0;
-
- var spaceBefore = checkSC(tempIndex);
-
- if (tempLength = checkDelim(tempIndex + spaceBefore)) {
- tempIndex += spaceBefore + tempLength;
- delimCounter++;
-
- if (tempLength = checkSC(tempIndex)) tempIndex += tempLength;
- if (tempLength = checkSelector(tempIndex)) {
- tempIndex += tempLength;
- selectorCounter++;
- }
- } else break;
-
- i += tempIndex - tempStart;
- }
-
- tokens[start].selectorsGroupEnd = i;
- tokens[start].selectorsGroupSelectorCount = selectorCounter;
- tokens[start].selectorsGroupDelimCount = delimCounter;
-
- return i - start;
- }
-
- function getSelectorsGroup() {
- var selectorsGroup = [];
- var selectorCounter = 0;
- var delimCounter = 0;
-
- var selectorsGroupEnd = tokens[pos].selectorsGroupEnd;
- var selectorCount = tokens[pos].selectorsGroupSelectorCount;
- var delimCount = tokens[pos].selectorsGroupDelimCount;
-
- selectorsGroup.push(getSelector());
- selectorCounter++;
-
- while (pos < selectorsGroupEnd) {
- if (delimCounter < delimCount) {
- selectorsGroup = selectorsGroup.concat(getSC());
- selectorsGroup = selectorsGroup.concat(getDelim());
- delimCounter++;
-
- selectorsGroup = selectorsGroup.concat(getSC());
-
- if (selectorCounter < selectorCount) {
- selectorsGroup = selectorsGroup.concat(getSelector());
- selectorCounter++;
- }
- }
- }
-
- return selectorsGroup;
- }
-
- function checkSelector(i) {
- var l = void 0;
-
- if (l = checkSelector1(i)) tokens[i].selectorType = 1;else if (l = checkSelector2(i)) tokens[i].selectorType = 2;
-
- return l;
- }
-
- function getSelector() {
- var selectorType = tokens[pos].selectorType;
- if (selectorType === 1) return getSelector1();else return getSelector2();
- }
-
- /**
- * Checks for selector which starts with a compound selector.
- */
- function checkSelector1(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkCompoundSelector(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var space = checkSC(i);
- var comma = checkCombinator(i + space);
- if (!space && !comma) break;
-
- if (comma) {
- i += space + comma;
- space = checkSC(i);
- }
-
- if (l = checkCompoundSelector(i + space)) i += space + l;else break;
- }
-
- tokens[start].selectorEnd = i;
- return i - start;
- }
-
- function getSelector1() {
- var type = NodeType.SelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var selectorEnd = token.selectorEnd;
- var content = getCompoundSelector();
-
- while (pos < selectorEnd) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkCombinator(pos)) content.push(getCombinator());else if (checkCompoundSelector(pos)) content = content.concat(getCompoundSelector());
- }
-
- return newNode(type, content, line, column);
- }
-
- /**
- * Checks for a selector that starts with a combinator.
- */
- function checkSelector2(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkCombinator(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var spaceBefore = checkSC(i);
- if (l = checkCompoundSelector(i + spaceBefore)) i += spaceBefore + l;else break;
-
- var spaceAfter = checkSC(i);
- var comma = checkCombinator(i + spaceAfter);
- if (!spaceAfter && !comma) break;
- if (comma) {
- i += spaceAfter + comma;
- }
- }
-
- tokens[start].selectorEnd = i;
- return i - start;
- }
-
- function getSelector2() {
- var type = NodeType.SelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var selectorEnd = token.selectorEnd;
- var content = [getCombinator()];
-
- while (pos < selectorEnd) {
- if (checkSC(pos)) content = content.concat(getSC());else if (checkCombinator(pos)) content.push(getCombinator());else if (checkCompoundSelector(pos)) content = content.concat(getCompoundSelector());
- }
-
- return newNode(type, content, line, column);
- }
-
- function checkCompoundSelector(i) {
- var l = void 0;
-
- if (l = checkCompoundSelector1(i)) {
- tokens[i].compoundSelectorType = 1;
- } else if (l = checkCompoundSelector2(i)) {
- tokens[i].compoundSelectorType = 2;
- }
-
- return l;
- }
-
- function getCompoundSelector() {
- var type = tokens[pos].compoundSelectorType;
- if (type === 1) return getCompoundSelector1();
- if (type === 2) return getCompoundSelector2();
- }
-
- /**
- * Check for compound selectors that start with either a type selector,
- * placeholder or parent selector with extension
- * (1) `foo.bar`
- * (2) `foo[attr=val]`
- * (3) `foo:first-of-type`
- * (4) `foo%bar`
- * @param {number} i Token's index
- * @return {number} Compound selector's length
- */
- function checkCompoundSelector1(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkUniversalSelector(i) || checkTypeSelector(i) || checkPlaceholder(i) || checkParentSelectorWithExtension(i)) i += l;else return 0;
-
- while (i < tokensLength) {
- var _l2 = checkShash(i) || checkClass(i) || checkAttributeSelector(i) || checkPseudo(i) || checkPlaceholder(i) || checkInterpolation(i);
-
- if (_l2) i += _l2;else break;
- }
-
- tokens[start].compoundSelectorEnd = i;
-
- return i - start;
- }
-
- /**
- * @return {Array} An array of nodes that make up the compound selector
- */
- function getCompoundSelector1() {
- var sequence = [];
- var compoundSelectorEnd = tokens[pos].compoundSelectorEnd;
-
- if (checkUniversalSelector(pos)) sequence.push(getUniversalSelector());else if (checkTypeSelector(pos)) sequence.push(getTypeSelector());else if (checkPlaceholder(pos)) sequence.push(getPlaceholder());else if (checkParentSelectorWithExtension(pos)) sequence = sequence.concat(getParentSelectorWithExtension());
-
- while (pos < compoundSelectorEnd) {
- if (checkShash(pos)) sequence.push(getShash());else if (checkClass(pos)) sequence.push(getClass());else if (checkAttributeSelector(pos)) sequence.push(getAttributeSelector());else if (checkPseudo(pos)) sequence.push(getPseudo());else if (checkPlaceholder(pos)) sequence.push(getPlaceholder());else if (checkInterpolation(pos)) sequence.push(getInterpolation());else break;
- }
-
- return sequence;
- }
-
- /**
- * Check for all other compound selectors
- * (1) `.foo.bar`
- * (2) `.foo[attr=val]`
- * (3) `.foo:first-of-type`
- * (4) `.foo%bar`
- * (5) `.foo#{$bar}`
- * @param {number} i Token's index
- * @return {number} Compound selector's length
- */
- function checkCompoundSelector2(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
-
- while (i < tokensLength) {
- var l = checkShash(i) || checkClass(i) || checkAttributeSelector(i) || checkPseudo(i) || checkPlaceholder(i) || checkInterpolation(i);
-
- if (l) i += l;else break;
- }
-
- tokens[start].compoundSelectorEnd = i;
-
- return i - start;
- }
-
- /**
- * @return {Array} An array of nodes that make up the compound selector
- */
- function getCompoundSelector2() {
- var sequence = [];
- var compoundSelectorEnd = tokens[pos].compoundSelectorEnd;
-
- while (pos < compoundSelectorEnd) {
- if (checkShash(pos)) sequence.push(getShash());else if (checkClass(pos)) sequence.push(getClass());else if (checkAttributeSelector(pos)) sequence.push(getAttributeSelector());else if (checkPseudo(pos)) sequence.push(getPseudo());else if (checkPlaceholder(pos)) sequence.push(getPlaceholder());else if (checkInterpolation(pos)) sequence.push(getInterpolation());else break;
- }
-
- return sequence;
- }
-
- function checkUniversalSelector(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkNamePrefix(i)) i += l;
-
- if (tokens[i].type === TokenType.Asterisk) i++;else return 0;
-
- return i - start;
- }
-
- function getUniversalSelector() {
- var type = NodeType.UniversalSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
- var end = void 0;
-
- if (checkNamePrefix(pos)) {
- content.push(getNamePrefix());
- end = getLastPosition(content, line, column, 1);
- }
-
- pos++;
-
- return newNode(type, content, line, column, end);
- }
-
- /**
- * Check if token is part of a type selector
- * @param {number} i Token's index
- * @return {number} Type selector's length
- */
- function checkTypeSelector(i) {
- if (i >= tokensLength) return 0;
-
- var start = i;
- var l = void 0;
-
- if (l = checkNamePrefix(i)) i += l;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- return i - start;
- }
-
- /**
- * Get type selector node
- * @return {Node}
- */
- function getTypeSelector() {
- var type = NodeType.TypeSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (checkNamePrefix(pos)) content.push(getNamePrefix());
-
- content = content.concat(getIdentOrInterpolation());
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeSelector(i) {
- var l = void 0;
- if (l = checkAttributeSelector1(i)) tokens[i].attributeSelectorType = 1;else if (l = checkAttributeSelector2(i)) tokens[i].attributeSelectorType = 2;
-
- return l;
- }
-
- function getAttributeSelector() {
- var type = tokens[pos].attributeSelectorType;
- if (type === 1) return getAttributeSelector1();else return getAttributeSelector2();
- }
-
- /**
- * (1) `[panda=nani]`
- * (2) `[panda='nani']`
- * (3) `[panda='nani' i]`
- *
- */
- function checkAttributeSelector1(i) {
- var start = i;
-
- if (tokens[i].type === TokenType.LeftSquareBracket) i++;else return 0;
-
- var l = void 0;
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeName(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeMatch(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeValue(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeFlags(i)) {
- i += l;
- if (l = checkSC(i)) i += l;
- }
-
- if (tokens[i].type === TokenType.RightSquareBracket) i++;else return 0;
-
- return i - start;
- }
-
- function getAttributeSelector1() {
- var type = NodeType.AttributeSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `[`.
- pos++;
-
- content = content.concat(getSC(), getAttributeName(), getSC(), getAttributeMatch(), getSC(), getAttributeValue(), getSC());
-
- if (checkAttributeFlags(pos)) {
- content.push(getAttributeFlags());
- content = content.concat(getSC());
- }
-
- // Skip `]`.
- pos++;
-
- var end = getLastPosition(content, line, column, 1);
- return newNode(type, content, line, column, end);
- }
-
- /**
- * (1) `[panda]`
- */
- function checkAttributeSelector2(i) {
- var start = i;
-
- if (tokens[i].type === TokenType.LeftSquareBracket) i++;else return 0;
-
- var l = void 0;
- if (l = checkSC(i)) i += l;
-
- if (l = checkAttributeName(i)) i += l;else return 0;
-
- if (l = checkSC(i)) i += l;
-
- if (tokens[i].type === TokenType.RightSquareBracket) i++;else return 0;
-
- return i - start;
- }
-
- function getAttributeSelector2() {
- var type = NodeType.AttributeSelectorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- // Skip `[`.
- pos++;
-
- content = content.concat(getSC(), getAttributeName(), getSC());
-
- // Skip `]`.
- pos++;
-
- var end = getLastPosition(content, line, column, 1);
- return newNode(type, content, line, column, end);
- }
-
- function checkAttributeName(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkNamePrefix(i)) i += l;
-
- if (l = checkIdentOrInterpolation(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getAttributeName() {
- var type = NodeType.AttributeNameType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (checkNamePrefix(pos)) content.push(getNamePrefix());
- content = content.concat(getIdentOrInterpolation());
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeMatch(i) {
- var l = void 0;
- if (l = checkAttributeMatch1(i)) tokens[i].attributeMatchType = 1;else if (l = checkAttributeMatch2(i)) tokens[i].attributeMatchType = 2;
-
- return l;
- }
-
- function getAttributeMatch() {
- var type = tokens[pos].attributeMatchType;
- if (type === 1) return getAttributeMatch1();else return getAttributeMatch2();
- }
-
- function checkAttributeMatch1(i) {
- var start = i;
-
- var type = tokens[i].type;
- if (type === TokenType.Tilde || type === TokenType.VerticalLine || type === TokenType.CircumflexAccent || type === TokenType.DollarSign || type === TokenType.Asterisk) i++;else return 0;
-
- if (tokens[i].type === TokenType.EqualsSign) i++;else return 0;
-
- return i - start;
- }
-
- function getAttributeMatch1() {
- var type = NodeType.AttributeMatchType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = tokens[pos].value + tokens[pos + 1].value;
- pos += 2;
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeMatch2(i) {
- if (tokens[i].type === TokenType.EqualsSign) return 1;else return 0;
- }
-
- function getAttributeMatch2() {
- var type = NodeType.AttributeMatchType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '=';
-
- pos++;
- return newNode(type, content, line, column);
- }
-
- function checkAttributeValue(i) {
- return checkString(i) || checkIdentOrInterpolation(i);
- }
-
- function getAttributeValue() {
- var type = NodeType.AttributeValueType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (checkString(pos)) content.push(getString());else content = content.concat(getIdentOrInterpolation());
-
- return newNode(type, content, line, column);
- }
-
- function checkAttributeFlags(i) {
- return checkIdentOrInterpolation(i);
- }
-
- function getAttributeFlags() {
- var type = NodeType.AttributeFlagsType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = getIdentOrInterpolation();
-
- return newNode(type, content, line, column);
- }
-
- function checkNamePrefix(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
- if (l = checkNamePrefix1(i)) tokens[i].namePrefixType = 1;else if (l = checkNamePrefix2(i)) tokens[i].namePrefixType = 2;
-
- return l;
- }
-
- function getNamePrefix() {
- var type = tokens[pos].namePrefixType;
- if (type === 1) return getNamePrefix1();else return getNamePrefix2();
- }
-
- /**
- * (1) `panda|`
- * (2) `panda<comment>|`
- */
- function checkNamePrefix1(i) {
- var start = i;
- var l = void 0;
-
- if (l = checkNamespacePrefix(i)) i += l;else return 0;
-
- if (l = checkCommentML(i)) i += l;
-
- if (l = checkNamespaceSeparator(i)) i += l;else return 0;
-
- return i - start;
- }
-
- function getNamePrefix1() {
- var type = NodeType.NamePrefixType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- content.push(getNamespacePrefix());
-
- if (checkCommentML(pos)) content.push(getCommentML());
-
- content.push(getNamespaceSeparator());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `|`
- */
- function checkNamePrefix2(i) {
- return checkNamespaceSeparator(i);
- }
-
- function getNamePrefix2() {
- var type = NodeType.NamePrefixType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [getNamespaceSeparator()];
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `*`
- * (2) `panda`
- */
- function checkNamespacePrefix(i) {
- if (i >= tokensLength) return 0;
-
- var l = void 0;
-
- if (tokens[i].type === TokenType.Asterisk) return 1;else if (l = checkIdentOrInterpolation(i)) return l;else return 0;
- }
-
- function getNamespacePrefix() {
- var type = NodeType.NamespacePrefixType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = [];
-
- if (token.type === TokenType.Asterisk) {
- var asteriskNode = newNode(NodeType.IdentType, '*', line, column);
- content.push(asteriskNode);
- pos++;
- } else if (checkIdentOrInterpolation(pos)) content = content.concat(getIdentOrInterpolation());
-
- return newNode(type, content, line, column);
- }
-
- /**
- * (1) `|`
- */
- function checkNamespaceSeparator(i) {
- if (i >= tokensLength) return 0;
-
- if (tokens[i].type !== TokenType.VerticalLine) return 0;
-
- // Return false if `|=` - [attr|=value]
- if (tokens[i + 1] && tokens[i + 1].type === TokenType.EqualsSign) return 0;
-
- return 1;
- }
-
- function getNamespaceSeparator() {
- var type = NodeType.NamespaceSeparatorType;
- var token = tokens[pos];
- var line = token.ln;
- var column = token.col;
- var content = '|';
-
- pos++;
- return newNode(type, content, line, column);
- }
-
- module.exports = function (_tokens, context) {
- tokens = _tokens;
- tokensLength = tokens.length;
- pos = 0;
-
- return contexts[context]();
- };
-
-/***/ }),
-/* 28 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- module.exports = function (css, tabSize) {
- var TokenType = __webpack_require__(13);
-
- var tokens = [];
- var urlMode = false;
- var c = void 0; // Current character
- var cn = void 0; // Next character
- var pos = 0;
- var tn = 0;
- var ln = 1;
- var col = 1;
-
- var Punctuation = {
- ' ': TokenType.Space,
- '\n': TokenType.Newline,
- '\r': TokenType.Newline,
- '\t': TokenType.Tab,
- '!': TokenType.ExclamationMark,
- '"': TokenType.QuotationMark,
- '#': TokenType.NumberSign,
- '$': TokenType.DollarSign,
- '%': TokenType.PercentSign,
- '&': TokenType.Ampersand,
- '\'': TokenType.Apostrophe,
- '(': TokenType.LeftParenthesis,
- ')': TokenType.RightParenthesis,
- '*': TokenType.Asterisk,
- '+': TokenType.PlusSign,
- ',': TokenType.Comma,
- '-': TokenType.HyphenMinus,
- '.': TokenType.FullStop,
- '/': TokenType.Solidus,
- ':': TokenType.Colon,
- ';': TokenType.Semicolon,
- '<': TokenType.LessThanSign,
- '=': TokenType.EqualsSign,
- '==': TokenType.EqualitySign,
- '!=': TokenType.InequalitySign,
- '>': TokenType.GreaterThanSign,
- '?': TokenType.QuestionMark,
- '@': TokenType.CommercialAt,
- '[': TokenType.LeftSquareBracket,
- ']': TokenType.RightSquareBracket,
- '^': TokenType.CircumflexAccent,
- '_': TokenType.LowLine,
- '{': TokenType.LeftCurlyBracket,
- '|': TokenType.VerticalLine,
- '}': TokenType.RightCurlyBracket,
- '~': TokenType.Tilde,
- '`': TokenType.Backtick
- };
-
- /**
- * Add a token to the token list
- * @param {string} type
- * @param {string} value
- */
- function pushToken(type, value, column) {
- tokens.push({
- tn: tn++,
- ln: ln,
- col: column,
- type: type,
- value: value
- });
- }
-
- /**
- * Check if a character is a decimal digit
- * @param {string} c Character
- * @returns {boolean}
- */
- function isDecimalDigit(c) {
- return '0123456789'.indexOf(c) >= 0;
- }
-
- /**
- * Parse spaces
- * @param {string} css Unparsed part of CSS string
- */
- function parseSpaces(css) {
- var start = pos;
-
- // Read the string until we meet a non-space character:
- for (; pos < css.length; pos++) {
- if (css.charAt(pos) !== ' ') break;
- }
-
- // Add a substring containing only spaces to tokens:
- pushToken(TokenType.Space, css.substring(start, pos--), col);
- col += pos - start;
- }
-
- /**
- * Parse a string within quotes
- * @param {string} css Unparsed part of CSS string
- * @param {string} q Quote (either `'` or `"`)
- */
- function parseString(css, q) {
- var start = pos;
-
- // Read the string until we meet a matching quote:
- for (pos++; pos < css.length; pos++) {
- // Skip escaped quotes:
- if (css.charAt(pos) === '\\') pos++;else if (css.charAt(pos) === q) break;
- }
-
- // Add the string (including quotes) to tokens:
- var type = q === '"' ? TokenType.StringDQ : TokenType.StringSQ;
- pushToken(type, css.substring(start, pos + 1), col);
- col += pos - start;
- }
-
- /**
- * Parse numbers
- * @param {string} css Unparsed part of CSS string
- */
- function parseDecimalNumber(css) {
- var start = pos;
-
- // Read the string until we meet a character that's not a digit:
- for (; pos < css.length; pos++) {
- if (!isDecimalDigit(css.charAt(pos))) break;
- }
-
- // Add the number to tokens:
- pushToken(TokenType.DecimalNumber, css.substring(start, pos--), col);
- col += pos - start;
- }
-
- /**
- * Parse identifier
- * @param {string} css Unparsed part of CSS string
- */
- function parseIdentifier(css) {
- var start = pos;
-
- // Skip all opening slashes:
- while (css.charAt(pos) === '/') {
- pos++;
- } // Read the string until we meet a punctuation mark:
- for (; pos < css.length; pos++) {
- // Skip all '\':
- if (css.charAt(pos) === '\\') pos++;else if (css.charAt(pos) in Punctuation) break;
- }
-
- var ident = css.substring(start, pos--);
-
- // Enter url mode if parsed substring is `url`:
- if (!urlMode && ident === 'url' && css.charAt(pos + 1) === '(') {
- urlMode = true;
- }
-
- // Add identifier to tokens:
- pushToken(TokenType.Identifier, ident, col);
- col += pos - start;
- }
-
- /**
- * Parse equality sign
- */
- function parseEquality() {
- pushToken(TokenType.EqualitySign, '==', col);
- pos++;
- col++;
- }
-
- /**
- * Parse inequality sign
- */
- function parseInequality() {
- pushToken(TokenType.InequalitySign, '!=', col);
- pos++;
- col++;
- }
-
- /**
- * Parse a multiline comment
- * @param {string} css Unparsed part of CSS string
- */
- function parseMLComment(css) {
- var start = pos;
-
- // Read the string until we meet `*/`.
- // Since we already know first 2 characters (`/*`), start reading
- // from `pos + 2`:
- for (pos += 2; pos < css.length; pos++) {
- if (css.charAt(pos) === '*' && css.charAt(pos + 1) === '/') {
- pos++;
- break;
- }
- }
-
- // Add full comment (including `/*` and `*/`) to the list of tokens:
- var comment = css.substring(start, pos + 1);
- pushToken(TokenType.CommentML, comment, col);
-
- var newlines = comment.split('\n');
- if (newlines.length > 1) {
- ln += newlines.length - 1;
- col = newlines[newlines.length - 1].length;
- } else {
- col += pos - start;
- }
- }
-
- /**
- * Parse a single line comment
- * @param {string} css Unparsed part of CSS string
- */
- function parseSLComment(css) {
- var start = pos;
-
- // Read the string until we meet line break.
- // Since we already know first 2 characters (`//`), start reading
- // from `pos + 2`:
- for (pos += 2; pos < css.length; pos++) {
- if (css.charAt(pos) === '\n' || css.charAt(pos) === '\r') {
- break;
- }
- }
-
- // Add comment (including `//` and line break) to the list of tokens:
- pushToken(TokenType.CommentSL, css.substring(start, pos--), col);
- col += pos - start;
- }
-
- /**
- * Convert a CSS string to a list of tokens
- * @param {string} css CSS string
- * @returns {Array} List of tokens
- * @private
- */
- function getTokens(css) {
- // Parse string, character by character:
- for (pos = 0; pos < css.length; col++, pos++) {
- c = css.charAt(pos);
- cn = css.charAt(pos + 1);
-
- // If we meet `/*`, it's a start of a multiline comment.
- // Parse following characters as a multiline comment:
- if (c === '/' && cn === '*') {
- parseMLComment(css);
- }
-
- // If we meet `//` and it is not a part of url:
- else if (!urlMode && c === '/' && cn === '/') {
- // If we're currently inside a block, treat `//` as a start
- // of identifier. Else treat `//` as a start of a single-line
- // comment:
- parseSLComment(css);
- }
-
- // If current character is a double or single quote, it's a start
- // of a string:
- else if (c === '"' || c === "'") {
- parseString(css, c);
- }
-
- // If current character is a space:
- else if (c === ' ') {
- parseSpaces(css);
- }
-
- // If current character is `=`, it must be combined with next `=`
- else if (c === '=' && cn === '=') {
- parseEquality(css);
- }
-
- // If we meet `!=`, this must be inequality
- else if (c === '!' && cn === '=') {
- parseInequality(css);
- }
-
- // If current character is a punctuation mark:
- else if (c in Punctuation) {
- // Check for CRLF here or just LF
- if (c === '\r' && cn === '\n' || c === '\n') {
- // If \r we know the next character is \n due to statement above
- // so we push a CRLF token type to the token list and importantly
- // skip the next character so as not to double count newlines or
- // columns etc
- if (c === '\r') {
- pushToken(TokenType.Newline, '\r\n', col);
- pos++; // If CRLF skip the next character and push crlf token
- } else if (c === '\n') {
- // If just a LF newline and not part of CRLF newline we can just
- // push punctuation as usual
- pushToken(Punctuation[c], c, col);
- }
-
- ln++; // Go to next line
- col = 0; // Reset the column count
- } else if (c !== '\r' && c !== '\n') {
- // Handle all other punctuation and add to list of tokens
- pushToken(Punctuation[c], c, col);
- } // Go to next line
- if (c === ')') urlMode = false; // Exit url mode
- else if (c === '\t' && tabSize > 1) col += tabSize - 1;
- }
-
- // If current character is a decimal digit:
- else if (isDecimalDigit(c)) {
- parseDecimalNumber(css);
- }
-
- // If current character is anything else:
- else {
- parseIdentifier(css);
- }
- }
-
- return tokens;
- }
-
- return getTokens(css);
- };
-
-/***/ }),
-/* 29 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- var Node = __webpack_require__(1);
- var NodeTypes = __webpack_require__(15);
-
- module.exports = function () {
- return new Node({
- type: NodeTypes.StylesheetType,
- content: [],
- start: [0, 0],
- end: [0, 0]
- });
- };
-
-/***/ })
-/******/ ])
-});
-; \ No newline at end of file
diff --git a/assets/node_modules/gonzales-pe/package.json b/assets/node_modules/gonzales-pe/package.json
deleted file mode 100644
index 3bf543c..0000000
--- a/assets/node_modules/gonzales-pe/package.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "name": "gonzales-pe",
- "description": "Gonzales Preprocessor Edition (fast CSS parser)",
- "version": "4.2.4",
- "homepage": "http://github.com/tonyganch/gonzales-pe",
- "bugs": "http://github.com/tonyganch/gonzales-pe/issues",
- "license": "MIT",
- "author": {
- "name": "Tony Ganch",
- "email": "tonyganch+github@gmail.com",
- "url": "http://tonyganch.com"
- },
- "main": "./lib/gonzales",
- "repository": {
- "type": "git",
- "url": "http://github.com/tonyganch/gonzales-pe.git"
- },
- "scripts": {
- "autofix-tests": "bash ./scripts/build.sh && bash ./scripts/autofix-tests.sh",
- "build": "bash ./scripts/build.sh",
- "init": "bash ./scripts/init.sh",
- "lint": "bash ./scripts/lint.sh",
- "log": "bash ./scripts/log.sh",
- "prepublishOnly": "bash ./scripts/build.sh",
- "test": "bash ./scripts/test.sh",
- "watch": "bash ./scripts/watch.sh"
- },
- "bin": {
- "gonzales": "./bin/gonzales.js"
- },
- "dependencies": {
- "minimist": "1.1.x"
- },
- "devDependencies": {
- "babel-core": "^6.18.2",
- "babel-loader": "^6.2.7",
- "babel-plugin-add-module-exports": "^0.2.1",
- "babel-preset-es2015": "^6.18.0",
- "coffee-script": "~1.7.1",
- "eslint": "^3.0.0",
- "jscs": "2.1.0",
- "jshint": "2.10.2",
- "json-loader": "^0.5.3",
- "mocha": "2.2.x",
- "webpack": "^1.12.2",
- "webpack-closure-compiler": "^2.0.2"
- },
- "engines": {
- "node": ">=0.6.0"
- },
- "files": [
- "MIT-LICENSE.txt",
- "bin/gonzales.js",
- "lib/gonzales.js"
- ]
-}
diff --git a/assets/node_modules/hard-rejection/index.d.ts b/assets/node_modules/hard-rejection/index.d.ts
deleted file mode 100644
index 6f49890..0000000
--- a/assets/node_modules/hard-rejection/index.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-declare const hardRejection: {
- /**
- Make unhandled promise rejections fail hard right away instead of the default [silent fail](https://gist.github.com/benjamingr/0237932cee84712951a2).
-
- @param log - Custom logging function to print the rejected promise. Receives the error stack. Default: `console.error`.
- */
- (log?: (stack?: string) => void): void;
-
- // TODO: Remove this for the next major release, refactor the whole definition to:
- // declare function hardRejection(log?: (stack?: string) => void): void;
- // export = hardRejection;
- default: typeof hardRejection;
-};
-
-export = hardRejection;
diff --git a/assets/node_modules/hard-rejection/index.js b/assets/node_modules/hard-rejection/index.js
deleted file mode 100644
index ba0205d..0000000
--- a/assets/node_modules/hard-rejection/index.js
+++ /dev/null
@@ -1,25 +0,0 @@
-'use strict';
-const util = require('util');
-
-let installed = false;
-
-const hardRejection = (log = console.error) => {
- if (installed) {
- return;
- }
-
- installed = true;
-
- process.on('unhandledRejection', error => {
- if (!(error instanceof Error)) {
- error = new Error(`Promise rejected with value: ${util.inspect(error)}`);
- }
-
- log(error.stack);
- process.exit(1);
- });
-};
-
-module.exports = hardRejection;
-// TODO: Remove this for the next major release
-module.exports.default = hardRejection;
diff --git a/assets/node_modules/hard-rejection/license b/assets/node_modules/hard-rejection/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/hard-rejection/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/hard-rejection/package.json b/assets/node_modules/hard-rejection/package.json
deleted file mode 100644
index 179b407..0000000
--- a/assets/node_modules/hard-rejection/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "name": "hard-rejection",
- "version": "2.1.0",
- "description": "Make unhandled promise rejections fail hard right away instead of the default silent fail",
- "license": "MIT",
- "repository": "sindresorhus/hard-rejection",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts",
- "register.js"
- ],
- "keywords": [
- "promise",
- "promises",
- "unhandled",
- "uncaught",
- "rejection",
- "hard",
- "fail",
- "catch",
- "throw",
- "handler",
- "exit",
- "debug",
- "debugging",
- "verbose",
- "immediate",
- "immediately"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "execa": "^1.0.0",
- "tsd": "^0.7.1",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/hard-rejection/readme.md b/assets/node_modules/hard-rejection/readme.md
deleted file mode 100644
index b66e475..0000000
--- a/assets/node_modules/hard-rejection/readme.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# hard-rejection [![Build Status](https://travis-ci.org/sindresorhus/hard-rejection.svg?branch=master)](https://travis-ci.org/sindresorhus/hard-rejection)
-
-> Make unhandled promise rejections fail hard right away instead of the default [silent fail](https://gist.github.com/benjamingr/0237932cee84712951a2)
-
-Promises fail silently if you don't attach a `.catch()` handler.
-
-This module exits the process with an error message right away when an unhandled rejection is encountered.<br>
-**Note: That might not be desirable as unhandled rejections can be [handled at a future point in time](https://nodejs.org/api/process.html#process_event_unhandledrejection), although not common. You've been warned.**
-
-Intended for top-level long-running processes like servers, **but not in reusable modules.**<br>
-For command-line apps and tests, see [`loud-rejection`](https://github.com/sindresorhus/loud-rejection).
-
-
-## Install
-
-```
-$ npm install hard-rejection
-```
-
-
-## Usage
-
-```js
-const hardRejection = require('hard-rejection');
-const promiseFunction = require('some-promise-fn');
-
-// Install the handler
-hardRejection();
-
-promiseFunction();
-```
-
-Without this module it's more verbose and you might even miss some that will fail silently:
-
-```js
-const promiseFunction = require('some-promise-fn');
-
-function error(error) {
- console.error(error.stack);
- process.exit(1);
-}
-
-promiseFunction().catch(error);
-```
-
-### Register script
-
-Alternatively to the above, you may simply require `hard-rejection/register` and the handler will be automagically installed for you.
-
-This is handy for ES2015 imports:
-
-```js
-import 'hard-rejection/register';
-```
-
-
-## API
-
-### hardRejection([log])
-
-#### log
-
-Type: `Function`<br>
-Default: `console.error`
-
-Custom logging function to print the rejected promise. Receives the error stack.
-
-
-## Related
-
-- [loud-rejection](https://github.com/sindresorhus/loud-rejection) - Make unhandled promise rejections fail loudly instead of the default silent fail
-- [More…](https://github.com/sindresorhus/promise-fun)
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/hard-rejection/register.js b/assets/node_modules/hard-rejection/register.js
deleted file mode 100644
index 29f49d7..0000000
--- a/assets/node_modules/hard-rejection/register.js
+++ /dev/null
@@ -1,2 +0,0 @@
-'use strict';
-require('.')();
diff --git a/assets/node_modules/has-flag/index.js b/assets/node_modules/has-flag/index.js
deleted file mode 100644
index 5139728..0000000
--- a/assets/node_modules/has-flag/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-'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/assets/node_modules/has-flag/license b/assets/node_modules/has-flag/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/has-flag/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/has-flag/package.json b/assets/node_modules/has-flag/package.json
deleted file mode 100644
index e1eb17a..0000000
--- a/assets/node_modules/has-flag/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "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/assets/node_modules/has-flag/readme.md b/assets/node_modules/has-flag/readme.md
deleted file mode 100644
index 677893c..0000000
--- a/assets/node_modules/has-flag/readme.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# 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/assets/node_modules/hosted-git-info/CHANGELOG.md b/assets/node_modules/hosted-git-info/CHANGELOG.md
deleted file mode 100644
index 479f24b..0000000
--- a/assets/node_modules/hosted-git-info/CHANGELOG.md
+++ /dev/null
@@ -1,115 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-
-<a name="2.8.5"></a>
-## [2.8.5](https://github.com/npm/hosted-git-info/compare/v2.8.4...v2.8.5) (2019-10-07)
-
-
-### Bug Fixes
-
-* updated pathmatch for gitlab ([e8325b5](https://github.com/npm/hosted-git-info/commit/e8325b5)), closes [#51](https://github.com/npm/hosted-git-info/issues/51)
-* updated pathmatch for gitlab ([ffe056f](https://github.com/npm/hosted-git-info/commit/ffe056f))
-
-
-
-<a name="2.8.4"></a>
-## [2.8.4](https://github.com/npm/hosted-git-info/compare/v2.8.3...v2.8.4) (2019-08-12)
-
-
-
-<a name="2.8.3"></a>
-## [2.8.3](https://github.com/npm/hosted-git-info/compare/v2.8.2...v2.8.3) (2019-08-12)
-
-
-
-<a name="2.8.2"></a>
-## [2.8.2](https://github.com/npm/hosted-git-info/compare/v2.8.1...v2.8.2) (2019-08-05)
-
-
-### Bug Fixes
-
-* http protocol use sshurl by default ([3b1d629](https://github.com/npm/hosted-git-info/commit/3b1d629)), closes [#48](https://github.com/npm/hosted-git-info/issues/48)
-
-
-
-<a name="2.8.1"></a>
-## [2.8.1](https://github.com/npm/hosted-git-info/compare/v2.8.0...v2.8.1) (2019-08-05)
-
-
-### Bug Fixes
-
-* ignore noCommittish on tarball url generation ([5d4a8d7](https://github.com/npm/hosted-git-info/commit/5d4a8d7))
-* use gist tarball url that works for anonymous gists ([1692435](https://github.com/npm/hosted-git-info/commit/1692435))
-
-
-
-<a name="2.8.0"></a>
-# [2.8.0](https://github.com/npm/hosted-git-info/compare/v2.7.1...v2.8.0) (2019-08-05)
-
-
-### Bug Fixes
-
-* Allow slashes in gitlab project section ([bbcf7b2](https://github.com/npm/hosted-git-info/commit/bbcf7b2)), closes [#46](https://github.com/npm/hosted-git-info/issues/46) [#43](https://github.com/npm/hosted-git-info/issues/43)
-* **git-host:** disallow URI-encoded slash (%2F) in `path` ([3776fa5](https://github.com/npm/hosted-git-info/commit/3776fa5)), closes [#44](https://github.com/npm/hosted-git-info/issues/44)
-* **gitlab:** Do not URL encode slashes in project name for GitLab https URL ([cbf04f9](https://github.com/npm/hosted-git-info/commit/cbf04f9)), closes [#47](https://github.com/npm/hosted-git-info/issues/47)
-* do not allow invalid gist urls ([d5cf830](https://github.com/npm/hosted-git-info/commit/d5cf830))
-* **cache:** Switch to lru-cache to save ourselves from unlimited memory consumption ([e518222](https://github.com/npm/hosted-git-info/commit/e518222)), closes [#38](https://github.com/npm/hosted-git-info/issues/38)
-
-
-### Features
-
-* give these objects a name ([60abaea](https://github.com/npm/hosted-git-info/commit/60abaea))
-
-
-
-<a name="2.7.1"></a>
-## [2.7.1](https://github.com/npm/hosted-git-info/compare/v2.7.0...v2.7.1) (2018-07-07)
-
-
-### Bug Fixes
-
-* **index:** Guard against non-string types ([5bc580d](https://github.com/npm/hosted-git-info/commit/5bc580d))
-* **parse:** Crash on strings that parse to having no host ([c931482](https://github.com/npm/hosted-git-info/commit/c931482)), closes [#35](https://github.com/npm/hosted-git-info/issues/35)
-
-
-
-<a name="2.7.0"></a>
-# [2.7.0](https://github.com/npm/hosted-git-info/compare/v2.6.1...v2.7.0) (2018-07-06)
-
-
-### Bug Fixes
-
-* **github tarball:** update github tarballtemplate ([6efd582](https://github.com/npm/hosted-git-info/commit/6efd582)), closes [#34](https://github.com/npm/hosted-git-info/issues/34)
-* **gitlab docs:** switched to lowercase anchors for readmes ([701bcd1](https://github.com/npm/hosted-git-info/commit/701bcd1))
-
-
-### Features
-
-* **all:** Support www. prefixes on hostnames ([3349575](https://github.com/npm/hosted-git-info/commit/3349575)), closes [#32](https://github.com/npm/hosted-git-info/issues/32)
-
-
-
-<a name="2.6.1"></a>
-## [2.6.1](https://github.com/npm/hosted-git-info/compare/v2.6.0...v2.6.1) (2018-06-25)
-
-### Bug Fixes
-
-* **Revert:** "compat: remove Object.assign fallback ([#25](https://github.com/npm/hosted-git-info/issues/25))" ([cce5a62](https://github.com/npm/hosted-git-info/commit/cce5a62))
-* **Revert:** "git-host: fix forgotten extend()" ([a815ec9](https://github.com/npm/hosted-git-info/commit/a815ec9))
-
-
-
-<a name="2.6.0"></a>
-# [2.6.0](https://github.com/npm/hosted-git-info/compare/v2.5.0...v2.6.0) (2018-03-07)
-
-
-### Bug Fixes
-
-* **compat:** remove Object.assign fallback ([#25](https://github.com/npm/hosted-git-info/issues/25)) ([627ab55](https://github.com/npm/hosted-git-info/commit/627ab55))
-* **git-host:** fix forgotten extend() ([eba1f7b](https://github.com/npm/hosted-git-info/commit/eba1f7b))
-
-
-### Features
-
-* **browse:** fragment support for browse() ([#28](https://github.com/npm/hosted-git-info/issues/28)) ([cd5e5bb](https://github.com/npm/hosted-git-info/commit/cd5e5bb))
diff --git a/assets/node_modules/hosted-git-info/LICENSE b/assets/node_modules/hosted-git-info/LICENSE
deleted file mode 100644
index 4505576..0000000
--- a/assets/node_modules/hosted-git-info/LICENSE
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright (c) 2015, Rebecca Turner
-
-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/assets/node_modules/hosted-git-info/README.md b/assets/node_modules/hosted-git-info/README.md
deleted file mode 100644
index 7b723f6..0000000
--- a/assets/node_modules/hosted-git-info/README.md
+++ /dev/null
@@ -1,133 +0,0 @@
-# hosted-git-info
-
-This will let you identify and transform various git hosts URLs between
-protocols. It also can tell you what the URL is for the raw path for
-particular file for direct access without git.
-
-## Example
-
-```javascript
-var hostedGitInfo = require("hosted-git-info")
-var info = hostedGitInfo.fromUrl("git@github.com:npm/hosted-git-info.git", opts)
-/* info looks like:
-{
- type: "github",
- domain: "github.com",
- user: "npm",
- project: "hosted-git-info"
-}
-*/
-```
-
-If the URL can't be matched with a git host, `null` will be returned. We
-can match git, ssh and https urls. Additionally, we can match ssh connect
-strings (`git@github.com:npm/hosted-git-info`) and shortcuts (eg,
-`github:npm/hosted-git-info`). Github specifically, is detected in the case
-of a third, unprefixed, form: `npm/hosted-git-info`.
-
-If it does match, the returned object has properties of:
-
-* info.type -- The short name of the service
-* info.domain -- The domain for git protocol use
-* info.user -- The name of the user/org on the git host
-* info.project -- The name of the project on the git host
-
-## Version Contract
-
-The major version will be bumped any time…
-
-* The constructor stops accepting URLs that it previously accepted.
-* A method is removed.
-* A method can no longer accept the number and type of arguments it previously accepted.
-* A method can return a different type than it currently returns.
-
-Implications:
-
-* I do not consider the specific format of the urls returned from, say
- `.https()` to be a part of the contract. The contract is that it will
- return a string that can be used to fetch the repo via HTTPS. But what
- that string looks like, specifically, can change.
-* Dropping support for a hosted git provider would constitute a breaking
- change.
-
-## Usage
-
-### var info = hostedGitInfo.fromUrl(gitSpecifier[, options])
-
-* *gitSpecifer* is a URL of a git repository or a SCP-style specifier of one.
-* *options* is an optional object. It can have the following properties:
- * *noCommittish* — If true then committishes won't be included in generated URLs.
- * *noGitPlus* — If true then `git+` won't be prefixed on URLs.
-
-## Methods
-
-All of the methods take the same options as the `fromUrl` factory. Options
-provided to a method override those provided to the constructor.
-
-* info.file(path, opts)
-
-Given the path of a file relative to the repository, returns a URL for
-directly fetching it from the githost. If no committish was set then
-`master` will be used as the default.
-
-For example `hostedGitInfo.fromUrl("git@github.com:npm/hosted-git-info.git#v1.0.0").file("package.json")`
-would return `https://raw.githubusercontent.com/npm/hosted-git-info/v1.0.0/package.json`
-
-* info.shortcut(opts)
-
-eg, `github:npm/hosted-git-info`
-
-* info.browse(path, fragment, opts)
-
-eg, `https://github.com/npm/hosted-git-info/tree/v1.2.0`,
-`https://github.com/npm/hosted-git-info/tree/v1.2.0/package.json`,
-`https://github.com/npm/hosted-git-info/tree/v1.2.0/REAMDE.md#supported-hosts`
-
-* info.bugs(opts)
-
-eg, `https://github.com/npm/hosted-git-info/issues`
-
-* info.docs(opts)
-
-eg, `https://github.com/npm/hosted-git-info/tree/v1.2.0#readme`
-
-* info.https(opts)
-
-eg, `git+https://github.com/npm/hosted-git-info.git`
-
-* info.sshurl(opts)
-
-eg, `git+ssh://git@github.com/npm/hosted-git-info.git`
-
-* info.ssh(opts)
-
-eg, `git@github.com:npm/hosted-git-info.git`
-
-* info.path(opts)
-
-eg, `npm/hosted-git-info`
-
-* info.tarball(opts)
-
-eg, `https://github.com/npm/hosted-git-info/archive/v1.2.0.tar.gz`
-
-* info.getDefaultRepresentation()
-
-Returns the default output type. The default output type is based on the
-string you passed in to be parsed
-
-* info.toString(opts)
-
-Uses the getDefaultRepresentation to call one of the other methods to get a URL for
-this resource. As such `hostedGitInfo.fromUrl(url).toString()` will give
-you a normalized version of the URL that still uses the same protocol.
-
-Shortcuts will still be returned as shortcuts, but the special case github
-form of `org/project` will be normalized to `github:org/project`.
-
-SSH connect strings will be normalized into `git+ssh` URLs.
-
-## Supported hosts
-
-Currently this supports Github, Bitbucket and Gitlab. Pull requests for
-additional hosts welcome.
diff --git a/assets/node_modules/hosted-git-info/git-host-info.js b/assets/node_modules/hosted-git-info/git-host-info.js
deleted file mode 100644
index 8147e33..0000000
--- a/assets/node_modules/hosted-git-info/git-host-info.js
+++ /dev/null
@@ -1,79 +0,0 @@
-'use strict'
-
-var gitHosts = module.exports = {
- github: {
- // First two are insecure and generally shouldn't be used any more, but
- // they are still supported.
- 'protocols': [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],
- 'domain': 'github.com',
- 'treepath': 'tree',
- 'filetemplate': 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}',
- 'bugstemplate': 'https://{domain}/{user}/{project}/issues',
- 'gittemplate': 'git://{auth@}{domain}/{user}/{project}.git{#committish}',
- 'tarballtemplate': 'https://codeload.{domain}/{user}/{project}/tar.gz/{committish}'
- },
- bitbucket: {
- 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],
- 'domain': 'bitbucket.org',
- 'treepath': 'src',
- 'tarballtemplate': 'https://{domain}/{user}/{project}/get/{committish}.tar.gz'
- },
- gitlab: {
- 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],
- 'domain': 'gitlab.com',
- 'treepath': 'tree',
- 'bugstemplate': 'https://{domain}/{user}/{project}/issues',
- 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}',
- 'tarballtemplate': 'https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}',
- 'pathmatch': /^[/]([^/]+)[/]((?!.*(\/-\/|\/repository\/archive\.tar\.gz\?=.*|\/repository\/[^/]+\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/
- },
- gist: {
- 'protocols': [ 'git', 'git+ssh', 'git+https', 'ssh', 'https' ],
- 'domain': 'gist.github.com',
- 'pathmatch': /^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/,
- 'filetemplate': 'https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}',
- 'bugstemplate': 'https://{domain}/{project}',
- 'gittemplate': 'git://{domain}/{project}.git{#committish}',
- 'sshtemplate': 'git@{domain}:/{project}.git{#committish}',
- 'sshurltemplate': 'git+ssh://git@{domain}/{project}.git{#committish}',
- 'browsetemplate': 'https://{domain}/{project}{/committish}',
- 'browsefiletemplate': 'https://{domain}/{project}{/committish}{#path}',
- 'docstemplate': 'https://{domain}/{project}{/committish}',
- 'httpstemplate': 'git+https://{domain}/{project}.git{#committish}',
- 'shortcuttemplate': '{type}:{project}{#committish}',
- 'pathtemplate': '{project}{#committish}',
- 'tarballtemplate': 'https://codeload.github.com/gist/{project}/tar.gz/{committish}',
- 'hashformat': function (fragment) {
- return 'file-' + formatHashFragment(fragment)
- }
- }
-}
-
-var gitHostDefaults = {
- 'sshtemplate': 'git@{domain}:{user}/{project}.git{#committish}',
- 'sshurltemplate': 'git+ssh://git@{domain}/{user}/{project}.git{#committish}',
- 'browsetemplate': 'https://{domain}/{user}/{project}{/tree/committish}',
- 'browsefiletemplate': 'https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}',
- 'docstemplate': 'https://{domain}/{user}/{project}{/tree/committish}#readme',
- 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}',
- 'filetemplate': 'https://{domain}/{user}/{project}/raw/{committish}/{path}',
- 'shortcuttemplate': '{type}:{user}/{project}{#committish}',
- 'pathtemplate': '{user}/{project}{#committish}',
- 'pathmatch': /^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,
- 'hashformat': formatHashFragment
-}
-
-Object.keys(gitHosts).forEach(function (name) {
- Object.keys(gitHostDefaults).forEach(function (key) {
- if (gitHosts[name][key]) return
- gitHosts[name][key] = gitHostDefaults[key]
- })
- gitHosts[name].protocols_re = RegExp('^(' +
- gitHosts[name].protocols.map(function (protocol) {
- return protocol.replace(/([\\+*{}()[\]$^|])/g, '\\$1')
- }).join('|') + '):$')
-})
-
-function formatHashFragment (fragment) {
- return fragment.toLowerCase().replace(/^\W+|\/|\W+$/g, '').replace(/\W+/g, '-')
-}
diff --git a/assets/node_modules/hosted-git-info/git-host.js b/assets/node_modules/hosted-git-info/git-host.js
deleted file mode 100644
index 9616fba..0000000
--- a/assets/node_modules/hosted-git-info/git-host.js
+++ /dev/null
@@ -1,156 +0,0 @@
-'use strict'
-var gitHosts = require('./git-host-info.js')
-/* eslint-disable node/no-deprecated-api */
-
-// copy-pasta util._extend from node's source, to avoid pulling
-// the whole util module into peoples' webpack bundles.
-/* istanbul ignore next */
-var extend = Object.assign || function _extend (target, source) {
- // Don't do anything if source isn't an object
- if (source === null || typeof source !== 'object') return target
-
- var keys = Object.keys(source)
- var i = keys.length
- while (i--) {
- target[keys[i]] = source[keys[i]]
- }
- return target
-}
-
-module.exports = GitHost
-function GitHost (type, user, auth, project, committish, defaultRepresentation, opts) {
- var gitHostInfo = this
- gitHostInfo.type = type
- Object.keys(gitHosts[type]).forEach(function (key) {
- gitHostInfo[key] = gitHosts[type][key]
- })
- gitHostInfo.user = user
- gitHostInfo.auth = auth
- gitHostInfo.project = project
- gitHostInfo.committish = committish
- gitHostInfo.default = defaultRepresentation
- gitHostInfo.opts = opts || {}
-}
-
-GitHost.prototype.hash = function () {
- return this.committish ? '#' + this.committish : ''
-}
-
-GitHost.prototype._fill = function (template, opts) {
- if (!template) return
- var vars = extend({}, opts)
- vars.path = vars.path ? vars.path.replace(/^[/]+/g, '') : ''
- opts = extend(extend({}, this.opts), opts)
- var self = this
- Object.keys(this).forEach(function (key) {
- if (self[key] != null && vars[key] == null) vars[key] = self[key]
- })
- var rawAuth = vars.auth
- var rawcommittish = vars.committish
- var rawFragment = vars.fragment
- var rawPath = vars.path
- var rawProject = vars.project
- Object.keys(vars).forEach(function (key) {
- var value = vars[key]
- if ((key === 'path' || key === 'project') && typeof value === 'string') {
- vars[key] = value.split('/').map(function (pathComponent) {
- return encodeURIComponent(pathComponent)
- }).join('/')
- } else {
- vars[key] = encodeURIComponent(value)
- }
- })
- vars['auth@'] = rawAuth ? rawAuth + '@' : ''
- vars['#fragment'] = rawFragment ? '#' + this.hashformat(rawFragment) : ''
- vars.fragment = vars.fragment ? vars.fragment : ''
- vars['#path'] = rawPath ? '#' + this.hashformat(rawPath) : ''
- vars['/path'] = vars.path ? '/' + vars.path : ''
- vars.projectPath = rawProject.split('/').map(encodeURIComponent).join('/')
- if (opts.noCommittish) {
- vars['#committish'] = ''
- vars['/tree/committish'] = ''
- vars['/committish'] = ''
- vars.committish = ''
- } else {
- vars['#committish'] = rawcommittish ? '#' + rawcommittish : ''
- vars['/tree/committish'] = vars.committish
- ? '/' + vars.treepath + '/' + vars.committish
- : ''
- vars['/committish'] = vars.committish ? '/' + vars.committish : ''
- vars.committish = vars.committish || 'master'
- }
- var res = template
- Object.keys(vars).forEach(function (key) {
- res = res.replace(new RegExp('[{]' + key + '[}]', 'g'), vars[key])
- })
- if (opts.noGitPlus) {
- return res.replace(/^git[+]/, '')
- } else {
- return res
- }
-}
-
-GitHost.prototype.ssh = function (opts) {
- return this._fill(this.sshtemplate, opts)
-}
-
-GitHost.prototype.sshurl = function (opts) {
- return this._fill(this.sshurltemplate, opts)
-}
-
-GitHost.prototype.browse = function (P, F, opts) {
- if (typeof P === 'string') {
- if (typeof F !== 'string') {
- opts = F
- F = null
- }
- return this._fill(this.browsefiletemplate, extend({
- fragment: F,
- path: P
- }, opts))
- } else {
- return this._fill(this.browsetemplate, P)
- }
-}
-
-GitHost.prototype.docs = function (opts) {
- return this._fill(this.docstemplate, opts)
-}
-
-GitHost.prototype.bugs = function (opts) {
- return this._fill(this.bugstemplate, opts)
-}
-
-GitHost.prototype.https = function (opts) {
- return this._fill(this.httpstemplate, opts)
-}
-
-GitHost.prototype.git = function (opts) {
- return this._fill(this.gittemplate, opts)
-}
-
-GitHost.prototype.shortcut = function (opts) {
- return this._fill(this.shortcuttemplate, opts)
-}
-
-GitHost.prototype.path = function (opts) {
- return this._fill(this.pathtemplate, opts)
-}
-
-GitHost.prototype.tarball = function (opts_) {
- var opts = extend({}, opts_, { noCommittish: false })
- return this._fill(this.tarballtemplate, opts)
-}
-
-GitHost.prototype.file = function (P, opts) {
- return this._fill(this.filetemplate, extend({ path: P }, opts))
-}
-
-GitHost.prototype.getDefaultRepresentation = function () {
- return this.default
-}
-
-GitHost.prototype.toString = function (opts) {
- if (this.default && typeof this[this.default] === 'function') return this[this.default](opts)
- return this.sshurl(opts)
-}
diff --git a/assets/node_modules/hosted-git-info/index.js b/assets/node_modules/hosted-git-info/index.js
deleted file mode 100644
index fc959cb..0000000
--- a/assets/node_modules/hosted-git-info/index.js
+++ /dev/null
@@ -1,125 +0,0 @@
-'use strict'
-var url = require('url')
-var gitHosts = require('./git-host-info.js')
-var GitHost = module.exports = require('./git-host.js')
-
-var protocolToRepresentationMap = {
- 'git+ssh:': 'sshurl',
- 'git+https:': 'https',
- 'ssh:': 'sshurl',
- 'git:': 'git'
-}
-
-function protocolToRepresentation (protocol) {
- return protocolToRepresentationMap[protocol] || protocol.slice(0, -1)
-}
-
-var authProtocols = {
- 'git:': true,
- 'https:': true,
- 'git+https:': true,
- 'http:': true,
- 'git+http:': true
-}
-
-var cache = {}
-
-module.exports.fromUrl = function (giturl, opts) {
- if (typeof giturl !== 'string') return
- var key = giturl + JSON.stringify(opts || {})
-
- if (!(key in cache)) {
- cache[key] = fromUrl(giturl, opts)
- }
-
- return cache[key]
-}
-
-function fromUrl (giturl, opts) {
- if (giturl == null || giturl === '') return
- var url = fixupUnqualifiedGist(
- isGitHubShorthand(giturl) ? 'github:' + giturl : giturl
- )
- var parsed = parseGitUrl(url)
- var shortcutMatch = url.match(new RegExp('^([^:]+):(?:(?:[^@:]+(?:[^@]+)?@)?([^/]*))[/](.+?)(?:[.]git)?($|#)'))
- var matches = Object.keys(gitHosts).map(function (gitHostName) {
- try {
- var gitHostInfo = gitHosts[gitHostName]
- var auth = null
- if (parsed.auth && authProtocols[parsed.protocol]) {
- auth = decodeURIComponent(parsed.auth)
- }
- var committish = parsed.hash ? decodeURIComponent(parsed.hash.substr(1)) : null
- var user = null
- var project = null
- var defaultRepresentation = null
- if (shortcutMatch && shortcutMatch[1] === gitHostName) {
- user = shortcutMatch[2] && decodeURIComponent(shortcutMatch[2])
- project = decodeURIComponent(shortcutMatch[3])
- defaultRepresentation = 'shortcut'
- } else {
- if (parsed.host && parsed.host !== gitHostInfo.domain && parsed.host.replace(/^www[.]/, '') !== gitHostInfo.domain) return
- if (!gitHostInfo.protocols_re.test(parsed.protocol)) return
- if (!parsed.path) return
- var pathmatch = gitHostInfo.pathmatch
- var matched = parsed.path.match(pathmatch)
- if (!matched) return
- /* istanbul ignore else */
- if (matched[1] !== null && matched[1] !== undefined) {
- user = decodeURIComponent(matched[1].replace(/^:/, ''))
- }
- project = decodeURIComponent(matched[2])
- defaultRepresentation = protocolToRepresentation(parsed.protocol)
- }
- return new GitHost(gitHostName, user, auth, project, committish, defaultRepresentation, opts)
- } catch (ex) {
- /* istanbul ignore else */
- if (ex instanceof URIError) {
- } else throw ex
- }
- }).filter(function (gitHostInfo) { return gitHostInfo })
- if (matches.length !== 1) return
- return matches[0]
-}
-
-function isGitHubShorthand (arg) {
- // Note: This does not fully test the git ref format.
- // See https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html
- //
- // The only way to do this properly would be to shell out to
- // git-check-ref-format, and as this is a fast sync function,
- // we don't want to do that. Just let git fail if it turns
- // out that the commit-ish is invalid.
- // GH usernames cannot start with . or -
- return /^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(arg)
-}
-
-function fixupUnqualifiedGist (giturl) {
- // necessary for round-tripping gists
- var parsed = url.parse(giturl)
- if (parsed.protocol === 'gist:' && parsed.host && !parsed.path) {
- return parsed.protocol + '/' + parsed.host
- } else {
- return giturl
- }
-}
-
-function parseGitUrl (giturl) {
- var matched = giturl.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/)
- if (!matched) return url.parse(giturl)
- return {
- protocol: 'git+ssh:',
- slashes: true,
- auth: matched[1],
- host: matched[2],
- port: null,
- hostname: matched[2],
- hash: matched[4],
- search: null,
- query: null,
- pathname: '/' + matched[3],
- path: '/' + matched[3],
- href: 'git+ssh://' + matched[1] + '@' + matched[2] +
- '/' + matched[3] + (matched[4] || '')
- }
-}
diff --git a/assets/node_modules/hosted-git-info/package.json b/assets/node_modules/hosted-git-info/package.json
deleted file mode 100644
index 076e287..0000000
--- a/assets/node_modules/hosted-git-info/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "hosted-git-info",
- "version": "2.8.5",
- "description": "Provides metadata and conversions from repository urls for Github, Bitbucket and Gitlab",
- "main": "index.js",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/npm/hosted-git-info.git"
- },
- "keywords": [
- "git",
- "github",
- "bitbucket",
- "gitlab"
- ],
- "author": "Rebecca Turner <me@re-becca.org> (http://re-becca.org)",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/npm/hosted-git-info/issues"
- },
- "homepage": "https://github.com/npm/hosted-git-info",
- "scripts": {
- "prerelease": "npm t",
- "postrelease": "npm publish --tag=ancient-legacy-fixes && git push --follow-tags",
- "pretest": "standard",
- "release": "standard-version -s",
- "test:coverage": "tap --coverage-report=html -J --100 --no-esm test/*.js",
- "test": "tap -J --100 --no-esm test/*.js"
- },
- "devDependencies": {
- "standard": "^11.0.1",
- "standard-version": "^4.4.0",
- "tap": "^12.7.0"
- },
- "files": [
- "index.js",
- "git-host.js",
- "git-host-info.js"
- ]
-}
diff --git a/assets/node_modules/html-tags/html-tags-void.json b/assets/node_modules/html-tags/html-tags-void.json
deleted file mode 100644
index 0e08360..0000000
--- a/assets/node_modules/html-tags/html-tags-void.json
+++ /dev/null
@@ -1,17 +0,0 @@
-[
- "area",
- "base",
- "br",
- "col",
- "embed",
- "hr",
- "img",
- "input",
- "link",
- "menuitem",
- "meta",
- "param",
- "source",
- "track",
- "wbr"
-]
diff --git a/assets/node_modules/html-tags/html-tags-void.json.d.ts b/assets/node_modules/html-tags/html-tags-void.json.d.ts
deleted file mode 100644
index 33c6343..0000000
--- a/assets/node_modules/html-tags/html-tags-void.json.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-declare const voidHtmlTags: readonly string[];
-
-export = voidHtmlTags;
diff --git a/assets/node_modules/html-tags/html-tags.json b/assets/node_modules/html-tags/html-tags.json
deleted file mode 100644
index 3bf7a91..0000000
--- a/assets/node_modules/html-tags/html-tags.json
+++ /dev/null
@@ -1,119 +0,0 @@
-[
- "a",
- "abbr",
- "address",
- "area",
- "article",
- "aside",
- "audio",
- "b",
- "base",
- "bdi",
- "bdo",
- "blockquote",
- "body",
- "br",
- "button",
- "canvas",
- "caption",
- "cite",
- "code",
- "col",
- "colgroup",
- "data",
- "datalist",
- "dd",
- "del",
- "details",
- "dfn",
- "dialog",
- "div",
- "dl",
- "dt",
- "em",
- "embed",
- "fieldset",
- "figcaption",
- "figure",
- "footer",
- "form",
- "h1",
- "h2",
- "h3",
- "h4",
- "h5",
- "h6",
- "head",
- "header",
- "hgroup",
- "hr",
- "html",
- "i",
- "iframe",
- "img",
- "input",
- "ins",
- "kbd",
- "label",
- "legend",
- "li",
- "link",
- "main",
- "map",
- "mark",
- "math",
- "menu",
- "menuitem",
- "meta",
- "meter",
- "nav",
- "noscript",
- "object",
- "ol",
- "optgroup",
- "option",
- "output",
- "p",
- "param",
- "picture",
- "pre",
- "progress",
- "q",
- "rb",
- "rp",
- "rt",
- "rtc",
- "ruby",
- "s",
- "samp",
- "script",
- "section",
- "select",
- "slot",
- "small",
- "source",
- "span",
- "strong",
- "style",
- "sub",
- "summary",
- "sup",
- "svg",
- "table",
- "tbody",
- "td",
- "template",
- "textarea",
- "tfoot",
- "th",
- "thead",
- "time",
- "title",
- "tr",
- "track",
- "u",
- "ul",
- "var",
- "video",
- "wbr"
-]
diff --git a/assets/node_modules/html-tags/html-tags.json.d.ts b/assets/node_modules/html-tags/html-tags.json.d.ts
deleted file mode 100644
index b35da59..0000000
--- a/assets/node_modules/html-tags/html-tags.json.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-declare const htmlTags: readonly string[];
-
-export = htmlTags;
diff --git a/assets/node_modules/html-tags/index.d.ts b/assets/node_modules/html-tags/index.d.ts
deleted file mode 100644
index 6415096..0000000
--- a/assets/node_modules/html-tags/index.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
-List of standard HTML tags.
-
-@example
-```
-import htmlTags = require('html-tags');
-
-console.log(htmlTags);
-//=> ['a', 'abbr', 'acronym', …]
-```
-*/
-declare const htmlTags: readonly string[];
-
-export = htmlTags;
diff --git a/assets/node_modules/html-tags/index.js b/assets/node_modules/html-tags/index.js
deleted file mode 100644
index 7360259..0000000
--- a/assets/node_modules/html-tags/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-'use strict';
-module.exports = require('./html-tags.json');
diff --git a/assets/node_modules/html-tags/license b/assets/node_modules/html-tags/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/html-tags/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/html-tags/package.json b/assets/node_modules/html-tags/package.json
deleted file mode 100644
index 0268151..0000000
--- a/assets/node_modules/html-tags/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "html-tags",
- "version": "3.1.0",
- "description": "List of standard HTML tags",
- "license": "MIT",
- "repository": "sindresorhus/html-tags",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts",
- "void.js",
- "void.d.ts",
- "html-tags.json",
- "html-tags.json.d.ts",
- "html-tags-void.json",
- "html-tags-void.json.d.ts"
- ],
- "keywords": [
- "html",
- "html5",
- "tags",
- "elements",
- "list",
- "whatwg",
- "w3c",
- "void",
- "self-closing"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/html-tags/readme.md b/assets/node_modules/html-tags/readme.md
deleted file mode 100644
index 22411f1..0000000
--- a/assets/node_modules/html-tags/readme.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# html-tags [![Build Status](https://travis-ci.org/sindresorhus/html-tags.svg?branch=master)](https://travis-ci.org/sindresorhus/html-tags)
-
-> List of standard HTML tags
-
-It's just a couple of JSON files that can be used in any environment.
-
-It intentionally leaves out obsolete tags.
-
-
-## Install
-
-```
-$ npm install html-tags
-```
-
-
-## Usage
-
-```js
-const htmlTags = require('html-tags');
-
-console.log(htmlTags);
-//=> ['a', 'abbr', 'acronym', …]
-```
-
-And void (self-closing) tags:
-
-```js
-const voidHtmlTags = require('html-tags/void');
-
-console.log(voidHtmlTags);
-//=> ['area', 'base', 'br', …]
-```
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/html-tags/void.d.ts b/assets/node_modules/html-tags/void.d.ts
deleted file mode 100644
index dfecb47..0000000
--- a/assets/node_modules/html-tags/void.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
-List of void (self-closing) HTML tags.
-
-@example
-```
-import voidHtmlTags = require('html-tags/void');
-
-console.log(voidHtmlTags);
-//=> ['area', 'base', 'br', …]
-```
-*/
-declare const voidHtmlTags: readonly string[];
-
-export = voidHtmlTags;
diff --git a/assets/node_modules/html-tags/void.js b/assets/node_modules/html-tags/void.js
deleted file mode 100644
index ec093c9..0000000
--- a/assets/node_modules/html-tags/void.js
+++ /dev/null
@@ -1,2 +0,0 @@
-'use strict';
-module.exports = require('./html-tags-void.json');
diff --git a/assets/node_modules/htmlparser2/LICENSE b/assets/node_modules/htmlparser2/LICENSE
deleted file mode 100644
index 0a35e02..0000000
--- a/assets/node_modules/htmlparser2/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-Copyright 2010, 2011, Chris Winberry <chris@winberry.net>. 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. \ No newline at end of file
diff --git a/assets/node_modules/htmlparser2/README.md b/assets/node_modules/htmlparser2/README.md
deleted file mode 100644
index 8c1c256..0000000
--- a/assets/node_modules/htmlparser2/README.md
+++ /dev/null
@@ -1,91 +0,0 @@
-# htmlparser2
-
-[![NPM version](http://img.shields.io/npm/v/htmlparser2.svg?style=flat)](https://npmjs.org/package/htmlparser2)
-[![Downloads](https://img.shields.io/npm/dm/htmlparser2.svg?style=flat)](https://npmjs.org/package/htmlparser2)
-[![Build Status](http://img.shields.io/travis/fb55/htmlparser2/master.svg?style=flat)](http://travis-ci.org/fb55/htmlparser2)
-[![Coverage](http://img.shields.io/coveralls/fb55/htmlparser2.svg?style=flat)](https://coveralls.io/r/fb55/htmlparser2)
-
-A forgiving HTML/XML/RSS parser. The parser can handle streams and provides a callback interface.
-
-## Installation
- npm install htmlparser2
-
-A live demo of htmlparser2 is available [here](https://astexplorer.net/#/2AmVrGuGVJ).
-
-## Usage
-
-```javascript
-var htmlparser = require("htmlparser2");
-var parser = new htmlparser.Parser({
- onopentag: function(name, attribs){
- if(name === "script" && attribs.type === "text/javascript"){
- console.log("JS! Hooray!");
- }
- },
- ontext: function(text){
- console.log("-->", text);
- },
- onclosetag: function(tagname){
- if(tagname === "script"){
- console.log("That's it?!");
- }
- }
-}, {decodeEntities: true});
-parser.write("Xyz <script type='text/javascript'>var foo = '<<bar>>';</ script>");
-parser.end();
-```
-
-Output (simplified):
-
-```
---> Xyz
-JS! Hooray!
---> var foo = '<<bar>>';
-That's it?!
-```
-
-## Documentation
-
-Read more about the parser and its options in the [wiki](https://github.com/fb55/htmlparser2/wiki/Parser-options).
-
-## Get a DOM
-The `DomHandler` (known as `DefaultHandler` in the original `htmlparser` module) produces a DOM (document object model) that can be manipulated using the [`DomUtils`](https://github.com/fb55/DomUtils) helper.
-
-The `DomHandler`, while still bundled with this module, was moved to its [own module](https://github.com/fb55/domhandler). Have a look at it for further information.
-
-## Parsing RSS/RDF/Atom Feeds
-
-```javascript
-new htmlparser.FeedHandler(function(<error> error, <object> feed){
- ...
-});
-```
-
-Note: While the provided feed handler works for most feeds, you might want to use [danmactough/node-feedparser](https://github.com/danmactough/node-feedparser), which is much better tested and actively maintained.
-
-## Performance
-
-After having some artificial benchmarks for some time, __@AndreasMadsen__ published his [`htmlparser-benchmark`](https://github.com/AndreasMadsen/htmlparser-benchmark), which benchmarks HTML parses based on real-world websites.
-
-At the time of writing, the latest versions of all supported parsers show the following performance characteristics on [Travis CI](https://travis-ci.org/AndreasMadsen/htmlparser-benchmark/builds/10805007) (please note that Travis doesn't guarantee equal conditions for all tests):
-
-```
-gumbo-parser : 34.9208 ms/file ± 21.4238
-html-parser : 24.8224 ms/file ± 15.8703
-html5 : 419.597 ms/file ± 264.265
-htmlparser : 60.0722 ms/file ± 384.844
-htmlparser2-dom: 12.0749 ms/file ± 6.49474
-htmlparser2 : 7.49130 ms/file ± 5.74368
-hubbub : 30.4980 ms/file ± 16.4682
-libxmljs : 14.1338 ms/file ± 18.6541
-parse5 : 22.0439 ms/file ± 15.3743
-sax : 49.6513 ms/file ± 26.6032
-```
-
-## How does this module differ from [node-htmlparser](https://github.com/tautologistics/node-htmlparser)?
-
-This is a fork of the `htmlparser` module. The main difference is that this is intended to be used only with node (it runs on other platforms using [browserify](https://github.com/substack/node-browserify)). `htmlparser2` was rewritten multiple times and, while it maintains an API that's compatible with `htmlparser` in most cases, the projects don't share any code anymore.
-
-The parser now provides a callback interface close to [sax.js](https://github.com/isaacs/sax-js) (originally targeted at [readabilitySAX](https://github.com/fb55/readabilitysax)). As a result, old handlers won't work anymore.
-
-The `DefaultHandler` and the `RssHandler` were renamed to clarify their purpose (to `DomHandler` and `FeedHandler`). The old names are still available when requiring `htmlparser2`, your code should work as expected.
diff --git a/assets/node_modules/htmlparser2/lib/CollectingHandler.js b/assets/node_modules/htmlparser2/lib/CollectingHandler.js
deleted file mode 100644
index 24dbdab..0000000
--- a/assets/node_modules/htmlparser2/lib/CollectingHandler.js
+++ /dev/null
@@ -1,57 +0,0 @@
-module.exports = CollectingHandler;
-
-function CollectingHandler(cbs) {
- this._cbs = cbs || {};
- this.events = [];
-}
-
-var EVENTS = require("./").EVENTS;
-Object.keys(EVENTS).forEach(function(name) {
- if (EVENTS[name] === 0) {
- name = "on" + name;
- CollectingHandler.prototype[name] = function() {
- this.events.push([name]);
- if (this._cbs[name]) this._cbs[name]();
- };
- } else if (EVENTS[name] === 1) {
- name = "on" + name;
- CollectingHandler.prototype[name] = function(a) {
- this.events.push([name, a]);
- if (this._cbs[name]) this._cbs[name](a);
- };
- } else if (EVENTS[name] === 2) {
- name = "on" + name;
- CollectingHandler.prototype[name] = function(a, b) {
- this.events.push([name, a, b]);
- if (this._cbs[name]) this._cbs[name](a, b);
- };
- } else {
- throw Error("wrong number of arguments");
- }
-});
-
-CollectingHandler.prototype.onreset = function() {
- this.events = [];
- if (this._cbs.onreset) this._cbs.onreset();
-};
-
-CollectingHandler.prototype.restart = function() {
- if (this._cbs.onreset) this._cbs.onreset();
-
- for (var i = 0, len = this.events.length; i < len; i++) {
- if (this._cbs[this.events[i][0]]) {
- var num = this.events[i].length;
-
- if (num === 1) {
- this._cbs[this.events[i][0]]();
- } else if (num === 2) {
- this._cbs[this.events[i][0]](this.events[i][1]);
- } else {
- this._cbs[this.events[i][0]](
- this.events[i][1],
- this.events[i][2]
- );
- }
- }
- }
-};
diff --git a/assets/node_modules/htmlparser2/lib/FeedHandler.js b/assets/node_modules/htmlparser2/lib/FeedHandler.js
deleted file mode 100644
index 97725ea..0000000
--- a/assets/node_modules/htmlparser2/lib/FeedHandler.js
+++ /dev/null
@@ -1,114 +0,0 @@
-var DomHandler = require("domhandler");
-var DomUtils = require("domutils");
-
-//TODO: make this a streamable handler
-function FeedHandler(callback, options) {
- this.init(callback, options);
-}
-
-require("inherits")(FeedHandler, DomHandler);
-
-FeedHandler.prototype.init = DomHandler;
-
-function getElements(what, where) {
- return DomUtils.getElementsByTagName(what, where, true);
-}
-function getOneElement(what, where) {
- return DomUtils.getElementsByTagName(what, where, true, 1)[0];
-}
-function fetch(what, where, recurse) {
- return DomUtils.getText(
- DomUtils.getElementsByTagName(what, where, recurse, 1)
- ).trim();
-}
-
-function addConditionally(obj, prop, what, where, recurse) {
- var tmp = fetch(what, where, recurse);
- if (tmp) obj[prop] = tmp;
-}
-
-var isValidFeed = function(value) {
- return value === "rss" || value === "feed" || value === "rdf:RDF";
-};
-
-FeedHandler.prototype.onend = function() {
- var feed = {},
- feedRoot = getOneElement(isValidFeed, this.dom),
- tmp,
- childs;
-
- if (feedRoot) {
- if (feedRoot.name === "feed") {
- childs = feedRoot.children;
-
- feed.type = "atom";
- addConditionally(feed, "id", "id", childs);
- addConditionally(feed, "title", "title", childs);
- if (
- (tmp = getOneElement("link", childs)) &&
- (tmp = tmp.attribs) &&
- (tmp = tmp.href)
- )
- feed.link = tmp;
- addConditionally(feed, "description", "subtitle", childs);
- if ((tmp = fetch("updated", childs))) feed.updated = new Date(tmp);
- addConditionally(feed, "author", "email", childs, true);
-
- feed.items = getElements("entry", childs).map(function(item) {
- var entry = {},
- tmp;
-
- item = item.children;
-
- addConditionally(entry, "id", "id", item);
- addConditionally(entry, "title", "title", item);
- if (
- (tmp = getOneElement("link", item)) &&
- (tmp = tmp.attribs) &&
- (tmp = tmp.href)
- )
- entry.link = tmp;
- if ((tmp = fetch("summary", item) || fetch("content", item)))
- entry.description = tmp;
- if ((tmp = fetch("updated", item)))
- entry.pubDate = new Date(tmp);
- return entry;
- });
- } else {
- childs = getOneElement("channel", feedRoot.children).children;
-
- feed.type = feedRoot.name.substr(0, 3);
- feed.id = "";
- addConditionally(feed, "title", "title", childs);
- addConditionally(feed, "link", "link", childs);
- addConditionally(feed, "description", "description", childs);
- if ((tmp = fetch("lastBuildDate", childs)))
- feed.updated = new Date(tmp);
- addConditionally(feed, "author", "managingEditor", childs, true);
-
- feed.items = getElements("item", feedRoot.children).map(function(
- item
- ) {
- var entry = {},
- tmp;
-
- item = item.children;
-
- addConditionally(entry, "id", "guid", item);
- addConditionally(entry, "title", "title", item);
- addConditionally(entry, "link", "link", item);
- addConditionally(entry, "description", "description", item);
- if ((tmp = fetch("pubDate", item)))
- entry.pubDate = new Date(tmp);
- return entry;
- });
- }
- }
- this.dom = feed;
- DomHandler.prototype._handleCallback.call(
- this,
- feedRoot ? null : Error("couldn't find root of feed")
- );
-};
-
-module.exports = FeedHandler;
diff --git a/assets/node_modules/htmlparser2/lib/Parser.js b/assets/node_modules/htmlparser2/lib/Parser.js
deleted file mode 100644
index 25ebdb1..0000000
--- a/assets/node_modules/htmlparser2/lib/Parser.js
+++ /dev/null
@@ -1,382 +0,0 @@
-var Tokenizer = require("./Tokenizer.js");
-
-/*
- Options:
-
- xmlMode: Disables the special behavior for script/style tags (false by default)
- lowerCaseAttributeNames: call .toLowerCase for each attribute name (true if xmlMode is `false`)
- lowerCaseTags: call .toLowerCase for each tag name (true if xmlMode is `false`)
-*/
-
-/*
- Callbacks:
-
- oncdataend,
- oncdatastart,
- onclosetag,
- oncomment,
- oncommentend,
- onerror,
- onopentag,
- onprocessinginstruction,
- onreset,
- ontext
-*/
-
-var formTags = {
- input: true,
- option: true,
- optgroup: true,
- select: true,
- button: true,
- datalist: true,
- textarea: true
-};
-
-var openImpliesClose = {
- tr: { tr: true, th: true, td: true },
- th: { th: true },
- td: { thead: true, th: true, td: true },
- body: { head: true, link: true, script: true },
- li: { li: true },
- p: { p: true },
- h1: { p: true },
- h2: { p: true },
- h3: { p: true },
- h4: { p: true },
- h5: { p: true },
- h6: { p: true },
- select: formTags,
- input: formTags,
- output: formTags,
- button: formTags,
- datalist: formTags,
- textarea: formTags,
- option: { option: true },
- optgroup: { optgroup: true }
-};
-
-var voidElements = {
- __proto__: null,
- area: true,
- base: true,
- basefont: true,
- br: true,
- col: true,
- command: true,
- embed: true,
- frame: true,
- hr: true,
- img: true,
- input: true,
- isindex: true,
- keygen: true,
- link: true,
- meta: true,
- param: true,
- source: true,
- track: true,
- wbr: true
-};
-
-var foreignContextElements = {
- __proto__: null,
- math: true,
- svg: true
-};
-var htmlIntegrationElements = {
- __proto__: null,
- mi: true,
- mo: true,
- mn: true,
- ms: true,
- mtext: true,
- "annotation-xml": true,
- foreignObject: true,
- desc: true,
- title: true
-};
-
-var re_nameEnd = /\s|\//;
-
-function Parser(cbs, options) {
- this._options = options || {};
- this._cbs = cbs || {};
-
- this._tagname = "";
- this._attribname = "";
- this._attribvalue = "";
- this._attribs = null;
- this._stack = [];
- this._foreignContext = [];
-
- this.startIndex = 0;
- this.endIndex = null;
-
- this._lowerCaseTagNames =
- "lowerCaseTags" in this._options
- ? !!this._options.lowerCaseTags
- : !this._options.xmlMode;
- this._lowerCaseAttributeNames =
- "lowerCaseAttributeNames" in this._options
- ? !!this._options.lowerCaseAttributeNames
- : !this._options.xmlMode;
-
- if (this._options.Tokenizer) {
- Tokenizer = this._options.Tokenizer;
- }
- this._tokenizer = new Tokenizer(this._options, this);
-
- if (this._cbs.onparserinit) this._cbs.onparserinit(this);
-}
-
-require("inherits")(Parser, require("events").EventEmitter);
-
-Parser.prototype._updatePosition = function(initialOffset) {
- if (this.endIndex === null) {
- if (this._tokenizer._sectionStart <= initialOffset) {
- this.startIndex = 0;
- } else {
- this.startIndex = this._tokenizer._sectionStart - initialOffset;
- }
- } else this.startIndex = this.endIndex + 1;
- this.endIndex = this._tokenizer.getAbsoluteIndex();
-};
-
-//Tokenizer event handlers
-Parser.prototype.ontext = function(data) {
- this._updatePosition(1);
- this.endIndex--;
-
- if (this._cbs.ontext) this._cbs.ontext(data);
-};
-
-Parser.prototype.onopentagname = function(name) {
- if (this._lowerCaseTagNames) {
- name = name.toLowerCase();
- }
-
- this._tagname = name;
-
- if (!this._options.xmlMode && name in openImpliesClose) {
- for (
- var el;
- (el = this._stack[this._stack.length - 1]) in
- openImpliesClose[name];
- this.onclosetag(el)
- );
- }
-
- if (this._options.xmlMode || !(name in voidElements)) {
- this._stack.push(name);
- if (name in foreignContextElements) this._foreignContext.push(true);
- else if (name in htmlIntegrationElements)
- this._foreignContext.push(false);
- }
-
- if (this._cbs.onopentagname) this._cbs.onopentagname(name);
- if (this._cbs.onopentag) this._attribs = {};
-};
-
-Parser.prototype.onopentagend = function() {
- this._updatePosition(1);
-
- if (this._attribs) {
- if (this._cbs.onopentag)
- this._cbs.onopentag(this._tagname, this._attribs);
- this._attribs = null;
- }
-
- if (
- !this._options.xmlMode &&
- this._cbs.onclosetag &&
- this._tagname in voidElements
- ) {
- this._cbs.onclosetag(this._tagname);
- }
-
- this._tagname = "";
-};
-
-Parser.prototype.onclosetag = function(name) {
- this._updatePosition(1);
-
- if (this._lowerCaseTagNames) {
- name = name.toLowerCase();
- }
-
- if (name in foreignContextElements || name in htmlIntegrationElements) {
- this._foreignContext.pop();
- }
-
- if (
- this._stack.length &&
- (!(name in voidElements) || this._options.xmlMode)
- ) {
- var pos = this._stack.lastIndexOf(name);
- if (pos !== -1) {
- if (this._cbs.onclosetag) {
- pos = this._stack.length - pos;
- while (pos--) this._cbs.onclosetag(this._stack.pop());
- } else this._stack.length = pos;
- } else if (name === "p" && !this._options.xmlMode) {
- this.onopentagname(name);
- this._closeCurrentTag();
- }
- } else if (!this._options.xmlMode && (name === "br" || name === "p")) {
- this.onopentagname(name);
- this._closeCurrentTag();
- }
-};
-
-Parser.prototype.onselfclosingtag = function() {
- if (
- this._options.xmlMode ||
- this._options.recognizeSelfClosing ||
- this._foreignContext[this._foreignContext.length - 1]
- ) {
- this._closeCurrentTag();
- } else {
- this.onopentagend();
- }
-};
-
-Parser.prototype._closeCurrentTag = function() {
- var name = this._tagname;
-
- this.onopentagend();
-
- //self-closing tags will be on the top of the stack
- //(cheaper check than in onclosetag)
- if (this._stack[this._stack.length - 1] === name) {
- if (this._cbs.onclosetag) {
- this._cbs.onclosetag(name);
- }
- this._stack.pop();
-
- }
-};
-
-Parser.prototype.onattribname = function(name) {
- if (this._lowerCaseAttributeNames) {
- name = name.toLowerCase();
- }
- this._attribname = name;
-};
-
-Parser.prototype.onattribdata = function(value) {
- this._attribvalue += value;
-};
-
-Parser.prototype.onattribend = function() {
- if (this._cbs.onattribute)
- this._cbs.onattribute(this._attribname, this._attribvalue);
- if (
- this._attribs &&
- !Object.prototype.hasOwnProperty.call(this._attribs, this._attribname)
- ) {
- this._attribs[this._attribname] = this._attribvalue;
- }
- this._attribname = "";
- this._attribvalue = "";
-};
-
-Parser.prototype._getInstructionName = function(value) {
- var idx = value.search(re_nameEnd),
- name = idx < 0 ? value : value.substr(0, idx);
-
- if (this._lowerCaseTagNames) {
- name = name.toLowerCase();
- }
-
- return name;
-};
-
-Parser.prototype.ondeclaration = function(value) {
- if (this._cbs.onprocessinginstruction) {
- var name = this._getInstructionName(value);
- this._cbs.onprocessinginstruction("!" + name, "!" + value);
- }
-};
-
-Parser.prototype.onprocessinginstruction = function(value) {
- if (this._cbs.onprocessinginstruction) {
- var name = this._getInstructionName(value);
- this._cbs.onprocessinginstruction("?" + name, "?" + value);
- }
-};
-
-Parser.prototype.oncomment = function(value) {
- this._updatePosition(4);
-
- if (this._cbs.oncomment) this._cbs.oncomment(value);
- if (this._cbs.oncommentend) this._cbs.oncommentend();
-};
-
-Parser.prototype.oncdata = function(value) {
- this._updatePosition(1);
-
- if (this._options.xmlMode || this._options.recognizeCDATA) {
- if (this._cbs.oncdatastart) this._cbs.oncdatastart();
- if (this._cbs.ontext) this._cbs.ontext(value);
- if (this._cbs.oncdataend) this._cbs.oncdataend();
- } else {
- this.oncomment("[CDATA[" + value + "]]");
- }
-};
-
-Parser.prototype.onerror = function(err) {
- if (this._cbs.onerror) this._cbs.onerror(err);
-};
-
-Parser.prototype.onend = function() {
- if (this._cbs.onclosetag) {
- for (
- var i = this._stack.length;
- i > 0;
- this._cbs.onclosetag(this._stack[--i])
- );
- }
- if (this._cbs.onend) this._cbs.onend();
-};
-
-//Resets the parser to a blank state, ready to parse a new HTML document
-Parser.prototype.reset = function() {
- if (this._cbs.onreset) this._cbs.onreset();
- this._tokenizer.reset();
-
- this._tagname = "";
- this._attribname = "";
- this._attribs = null;
- this._stack = [];
-
- if (this._cbs.onparserinit) this._cbs.onparserinit(this);
-};
-
-//Parses a complete HTML document and pushes it to the handler
-Parser.prototype.parseComplete = function(data) {
- this.reset();
- this.end(data);
-};
-
-Parser.prototype.write = function(chunk) {
- this._tokenizer.write(chunk);
-};
-
-Parser.prototype.end = function(chunk) {
- this._tokenizer.end(chunk);
-};
-
-Parser.prototype.pause = function() {
- this._tokenizer.pause();
-};
-
-Parser.prototype.resume = function() {
- this._tokenizer.resume();
-};
-
-//alias for backwards compat
-Parser.prototype.parseChunk = Parser.prototype.write;
-Parser.prototype.done = Parser.prototype.end;
-
-module.exports = Parser;
diff --git a/assets/node_modules/htmlparser2/lib/ProxyHandler.js b/assets/node_modules/htmlparser2/lib/ProxyHandler.js
deleted file mode 100644
index df427d8..0000000
--- a/assets/node_modules/htmlparser2/lib/ProxyHandler.js
+++ /dev/null
@@ -1,27 +0,0 @@
-module.exports = ProxyHandler;
-
-function ProxyHandler(cbs) {
- this._cbs = cbs || {};
-}
-
-var EVENTS = require("./").EVENTS;
-Object.keys(EVENTS).forEach(function(name) {
- if (EVENTS[name] === 0) {
- name = "on" + name;
- ProxyHandler.prototype[name] = function() {
- if (this._cbs[name]) this._cbs[name]();
- };
- } else if (EVENTS[name] === 1) {
- name = "on" + name;
- ProxyHandler.prototype[name] = function(a) {
- if (this._cbs[name]) this._cbs[name](a);
- };
- } else if (EVENTS[name] === 2) {
- name = "on" + name;
- ProxyHandler.prototype[name] = function(a, b) {
- if (this._cbs[name]) this._cbs[name](a, b);
- };
- } else {
- throw Error("wrong number of arguments");
- }
-});
diff --git a/assets/node_modules/htmlparser2/lib/Stream.js b/assets/node_modules/htmlparser2/lib/Stream.js
deleted file mode 100644
index 7412f50..0000000
--- a/assets/node_modules/htmlparser2/lib/Stream.js
+++ /dev/null
@@ -1,35 +0,0 @@
-module.exports = Stream;
-
-var Parser = require("./WritableStream.js");
-
-function Stream(options) {
- Parser.call(this, new Cbs(this), options);
-}
-
-require("inherits")(Stream, Parser);
-
-Stream.prototype.readable = true;
-
-function Cbs(scope) {
- this.scope = scope;
-}
-
-var EVENTS = require("../").EVENTS;
-
-Object.keys(EVENTS).forEach(function(name) {
- if (EVENTS[name] === 0) {
- Cbs.prototype["on" + name] = function() {
- this.scope.emit(name);
- };
- } else if (EVENTS[name] === 1) {
- Cbs.prototype["on" + name] = function(a) {
- this.scope.emit(name, a);
- };
- } else if (EVENTS[name] === 2) {
- Cbs.prototype["on" + name] = function(a, b) {
- this.scope.emit(name, a, b);
- };
- } else {
- throw Error("wrong number of arguments!");
- }
-});
diff --git a/assets/node_modules/htmlparser2/lib/Tokenizer.js b/assets/node_modules/htmlparser2/lib/Tokenizer.js
deleted file mode 100644
index 413e664..0000000
--- a/assets/node_modules/htmlparser2/lib/Tokenizer.js
+++ /dev/null
@@ -1,970 +0,0 @@
-module.exports = Tokenizer;
-
-var decodeCodePoint = require("entities/lib/decode_codepoint.js");
-var entityMap = require("entities/maps/entities.json");
-var legacyMap = require("entities/maps/legacy.json");
-var xmlMap = require("entities/maps/xml.json");
-
-var i = 0;
-
-var TEXT = i++;
-var BEFORE_TAG_NAME = i++; //after <
-var IN_TAG_NAME = i++;
-var IN_SELF_CLOSING_TAG = i++;
-var BEFORE_CLOSING_TAG_NAME = i++;
-var IN_CLOSING_TAG_NAME = i++;
-var AFTER_CLOSING_TAG_NAME = i++;
-
-//attributes
-var BEFORE_ATTRIBUTE_NAME = i++;
-var IN_ATTRIBUTE_NAME = i++;
-var AFTER_ATTRIBUTE_NAME = i++;
-var BEFORE_ATTRIBUTE_VALUE = i++;
-var IN_ATTRIBUTE_VALUE_DQ = i++; // "
-var IN_ATTRIBUTE_VALUE_SQ = i++; // '
-var IN_ATTRIBUTE_VALUE_NQ = i++;
-
-//declarations
-var BEFORE_DECLARATION = i++; // !
-var IN_DECLARATION = i++;
-
-//processing instructions
-var IN_PROCESSING_INSTRUCTION = i++; // ?
-
-//comments
-var BEFORE_COMMENT = i++;
-var IN_COMMENT = i++;
-var AFTER_COMMENT_1 = i++;
-var AFTER_COMMENT_2 = i++;
-
-//cdata
-var BEFORE_CDATA_1 = i++; // [
-var BEFORE_CDATA_2 = i++; // C
-var BEFORE_CDATA_3 = i++; // D
-var BEFORE_CDATA_4 = i++; // A
-var BEFORE_CDATA_5 = i++; // T
-var BEFORE_CDATA_6 = i++; // A
-var IN_CDATA = i++; // [
-var AFTER_CDATA_1 = i++; // ]
-var AFTER_CDATA_2 = i++; // ]
-
-//special tags
-var BEFORE_SPECIAL = i++; //S
-var BEFORE_SPECIAL_END = i++; //S
-
-var BEFORE_SCRIPT_1 = i++; //C
-var BEFORE_SCRIPT_2 = i++; //R
-var BEFORE_SCRIPT_3 = i++; //I
-var BEFORE_SCRIPT_4 = i++; //P
-var BEFORE_SCRIPT_5 = i++; //T
-var AFTER_SCRIPT_1 = i++; //C
-var AFTER_SCRIPT_2 = i++; //R
-var AFTER_SCRIPT_3 = i++; //I
-var AFTER_SCRIPT_4 = i++; //P
-var AFTER_SCRIPT_5 = i++; //T
-
-var BEFORE_STYLE_1 = i++; //T
-var BEFORE_STYLE_2 = i++; //Y
-var BEFORE_STYLE_3 = i++; //L
-var BEFORE_STYLE_4 = i++; //E
-var AFTER_STYLE_1 = i++; //T
-var AFTER_STYLE_2 = i++; //Y
-var AFTER_STYLE_3 = i++; //L
-var AFTER_STYLE_4 = i++; //E
-
-var BEFORE_ENTITY = i++; //&
-var BEFORE_NUMERIC_ENTITY = i++; //#
-var IN_NAMED_ENTITY = i++;
-var IN_NUMERIC_ENTITY = i++;
-var IN_HEX_ENTITY = i++; //X
-
-var j = 0;
-
-var SPECIAL_NONE = j++;
-var SPECIAL_SCRIPT = j++;
-var SPECIAL_STYLE = j++;
-
-function whitespace(c) {
- return c === " " || c === "\n" || c === "\t" || c === "\f" || c === "\r";
-}
-
-function ifElseState(upper, SUCCESS, FAILURE) {
- var lower = upper.toLowerCase();
-
- if (upper === lower) {
- return function(c) {
- if (c === lower) {
- this._state = SUCCESS;
- } else {
- this._state = FAILURE;
- this._index--;
- }
- };
- } else {
- return function(c) {
- if (c === lower || c === upper) {
- this._state = SUCCESS;
- } else {
- this._state = FAILURE;
- this._index--;
- }
- };
- }
-}
-
-function consumeSpecialNameChar(upper, NEXT_STATE) {
- var lower = upper.toLowerCase();
-
- return function(c) {
- if (c === lower || c === upper) {
- this._state = NEXT_STATE;
- } else {
- this._state = IN_TAG_NAME;
- this._index--; //consume the token again
- }
- };
-}
-
-function Tokenizer(options, cbs) {
- this._state = TEXT;
- this._buffer = "";
- this._sectionStart = 0;
- this._index = 0;
- this._bufferOffset = 0; //chars removed from _buffer
- this._baseState = TEXT;
- this._special = SPECIAL_NONE;
- this._cbs = cbs;
- this._running = true;
- this._ended = false;
- this._xmlMode = !!(options && options.xmlMode);
- this._decodeEntities = !!(options && options.decodeEntities);
-}
-
-Tokenizer.prototype._stateText = function(c) {
- if (c === "<") {
- if (this._index > this._sectionStart) {
- this._cbs.ontext(this._getSection());
- }
- this._state = BEFORE_TAG_NAME;
- this._sectionStart = this._index;
- } else if (
- this._decodeEntities &&
- this._special === SPECIAL_NONE &&
- c === "&"
- ) {
- if (this._index > this._sectionStart) {
- this._cbs.ontext(this._getSection());
- }
- this._baseState = TEXT;
- this._state = BEFORE_ENTITY;
- this._sectionStart = this._index;
- }
-};
-
-Tokenizer.prototype._stateBeforeTagName = function(c) {
- if (c === "/") {
- this._state = BEFORE_CLOSING_TAG_NAME;
- } else if (c === "<") {
- this._cbs.ontext(this._getSection());
- this._sectionStart = this._index;
- } else if (c === ">" || this._special !== SPECIAL_NONE || whitespace(c)) {
- this._state = TEXT;
- } else if (c === "!") {
- this._state = BEFORE_DECLARATION;
- this._sectionStart = this._index + 1;
- } else if (c === "?") {
- this._state = IN_PROCESSING_INSTRUCTION;
- this._sectionStart = this._index + 1;
- } else {
- this._state =
- !this._xmlMode && (c === "s" || c === "S")
- ? BEFORE_SPECIAL
- : IN_TAG_NAME;
- this._sectionStart = this._index;
- }
-};
-
-Tokenizer.prototype._stateInTagName = function(c) {
- if (c === "/" || c === ">" || whitespace(c)) {
- this._emitToken("onopentagname");
- this._state = BEFORE_ATTRIBUTE_NAME;
- this._index--;
- }
-};
-
-Tokenizer.prototype._stateBeforeCloseingTagName = function(c) {
- if (whitespace(c));
- else if (c === ">") {
- this._state = TEXT;
- } else if (this._special !== SPECIAL_NONE) {
- if (c === "s" || c === "S") {
- this._state = BEFORE_SPECIAL_END;
- } else {
- this._state = TEXT;
- this._index--;
- }
- } else {
- this._state = IN_CLOSING_TAG_NAME;
- this._sectionStart = this._index;
- }
-};
-
-Tokenizer.prototype._stateInCloseingTagName = function(c) {
- if (c === ">" || whitespace(c)) {
- this._emitToken("onclosetag");
- this._state = AFTER_CLOSING_TAG_NAME;
- this._index--;
- }
-};
-
-Tokenizer.prototype._stateAfterCloseingTagName = function(c) {
- //skip everything until ">"
- if (c === ">") {
- this._state = TEXT;
- this._sectionStart = this._index + 1;
- }
-};
-
-Tokenizer.prototype._stateBeforeAttributeName = function(c) {
- if (c === ">") {
- this._cbs.onopentagend();
- this._state = TEXT;
- this._sectionStart = this._index + 1;
- } else if (c === "/") {
- this._state = IN_SELF_CLOSING_TAG;
- } else if (!whitespace(c)) {
- this._state = IN_ATTRIBUTE_NAME;
- this._sectionStart = this._index;
- }
-};
-
-Tokenizer.prototype._stateInSelfClosingTag = function(c) {
- if (c === ">") {
- this._cbs.onselfclosingtag();
- this._state = TEXT;
- this._sectionStart = this._index + 1;
- } else if (!whitespace(c)) {
- this._state = BEFORE_ATTRIBUTE_NAME;
- this._index--;
- }
-};
-
-Tokenizer.prototype._stateInAttributeName = function(c) {
- if (c === "=" || c === "/" || c === ">" || whitespace(c)) {
- this._cbs.onattribname(this._getSection());
- this._sectionStart = -1;
- this._state = AFTER_ATTRIBUTE_NAME;
- this._index--;
- }
-};
-
-Tokenizer.prototype._stateAfterAttributeName = function(c) {
- if (c === "=") {
- this._state = BEFORE_ATTRIBUTE_VALUE;
- } else if (c === "/" || c === ">") {
- this._cbs.onattribend();
- this._state = BEFORE_ATTRIBUTE_NAME;
- this._index--;
- } else if (!whitespace(c)) {
- this._cbs.onattribend();
- this._state = IN_ATTRIBUTE_NAME;
- this._sectionStart = this._index;
- }
-};
-
-Tokenizer.prototype._stateBeforeAttributeValue = function(c) {
- if (c === '"') {
- this._state = IN_ATTRIBUTE_VALUE_DQ;
- this._sectionStart = this._index + 1;
- } else if (c === "'") {
- this._state = IN_ATTRIBUTE_VALUE_SQ;
- this._sectionStart = this._index + 1;
- } else if (!whitespace(c)) {
- this._state = IN_ATTRIBUTE_VALUE_NQ;
- this._sectionStart = this._index;
- this._index--; //reconsume token
- }
-};
-
-Tokenizer.prototype._stateInAttributeValueDoubleQuotes = function(c) {
- if (c === '"') {
- this._emitToken("onattribdata");
- this._cbs.onattribend();
- this._state = BEFORE_ATTRIBUTE_NAME;
- } else if (this._decodeEntities && c === "&") {
- this._emitToken("onattribdata");
- this._baseState = this._state;
- this._state = BEFORE_ENTITY;
- this._sectionStart = this._index;
- }
-};
-
-Tokenizer.prototype._stateInAttributeValueSingleQuotes = function(c) {
- if (c === "'") {
- this._emitToken("onattribdata");
- this._cbs.onattribend();
- this._state = BEFORE_ATTRIBUTE_NAME;
- } else if (this._decodeEntities && c === "&") {
- this._emitToken("onattribdata");
- this._baseState = this._state;
- this._state = BEFORE_ENTITY;
- this._sectionStart = this._index;
- }
-};
-
-Tokenizer.prototype._stateInAttributeValueNoQuotes = function(c) {
- if (whitespace(c) || c === ">") {
- this._emitToken("onattribdata");
- this._cbs.onattribend();
- this._state = BEFORE_ATTRIBUTE_NAME;
- this._index--;
- } else if (this._decodeEntities && c === "&") {
- this._emitToken("onattribdata");
- this._baseState = this._state;
- this._state = BEFORE_ENTITY;
- this._sectionStart = this._index;
- }
-};
-
-Tokenizer.prototype._stateBeforeDeclaration = function(c) {
- this._state =
- c === "["
- ? BEFORE_CDATA_1
- : c === "-"
- ? BEFORE_COMMENT
- : IN_DECLARATION;
-};
-
-Tokenizer.prototype._stateInDeclaration = function(c) {
- if (c === ">") {
- this._cbs.ondeclaration(this._getSection());
- this._state = TEXT;
- this._sectionStart = this._index + 1;
- }
-};
-
-Tokenizer.prototype._stateInProcessingInstruction = function(c) {
- if (c === ">") {
- this._cbs.onprocessinginstruction(this._getSection());
- this._state = TEXT;
- this._sectionStart = this._index + 1;
- }
-};
-
-Tokenizer.prototype._stateBeforeComment = function(c) {
- if (c === "-") {
- this._state = IN_COMMENT;
- this._sectionStart = this._index + 1;
- } else {
- this._state = IN_DECLARATION;
- }
-};
-
-Tokenizer.prototype._stateInComment = function(c) {
- if (c === "-") this._state = AFTER_COMMENT_1;
-};
-
-Tokenizer.prototype._stateAfterComment1 = function(c) {
- if (c === "-") {
- this._state = AFTER_COMMENT_2;
- } else {
- this._state = IN_COMMENT;
- }
-};
-
-Tokenizer.prototype._stateAfterComment2 = function(c) {
- if (c === ">") {
- //remove 2 trailing chars
- this._cbs.oncomment(
- this._buffer.substring(this._sectionStart, this._index - 2)
- );
- this._state = TEXT;
- this._sectionStart = this._index + 1;
- } else if (c !== "-") {
- this._state = IN_COMMENT;
- }
- // else: stay in AFTER_COMMENT_2 (`--->`)
-};
-
-Tokenizer.prototype._stateBeforeCdata1 = ifElseState(
- "C",
- BEFORE_CDATA_2,
- IN_DECLARATION
-);
-Tokenizer.prototype._stateBeforeCdata2 = ifElseState(
- "D",
- BEFORE_CDATA_3,
- IN_DECLARATION
-);
-Tokenizer.prototype._stateBeforeCdata3 = ifElseState(
- "A",
- BEFORE_CDATA_4,
- IN_DECLARATION
-);
-Tokenizer.prototype._stateBeforeCdata4 = ifElseState(
- "T",
- BEFORE_CDATA_5,
- IN_DECLARATION
-);
-Tokenizer.prototype._stateBeforeCdata5 = ifElseState(
- "A",
- BEFORE_CDATA_6,
- IN_DECLARATION
-);
-
-Tokenizer.prototype._stateBeforeCdata6 = function(c) {
- if (c === "[") {
- this._state = IN_CDATA;
- this._sectionStart = this._index + 1;
- } else {
- this._state = IN_DECLARATION;
- this._index--;
- }
-};
-
-Tokenizer.prototype._stateInCdata = function(c) {
- if (c === "]") this._state = AFTER_CDATA_1;
-};
-
-Tokenizer.prototype._stateAfterCdata1 = function(c) {
- if (c === "]") this._state = AFTER_CDATA_2;
- else this._state = IN_CDATA;
-};
-
-Tokenizer.prototype._stateAfterCdata2 = function(c) {
- if (c === ">") {
- //remove 2 trailing chars
- this._cbs.oncdata(
- this._buffer.substring(this._sectionStart, this._index - 2)
- );
- this._state = TEXT;
- this._sectionStart = this._index + 1;
- } else if (c !== "]") {
- this._state = IN_CDATA;
- }
- //else: stay in AFTER_CDATA_2 (`]]]>`)
-};
-
-Tokenizer.prototype._stateBeforeSpecial = function(c) {
- if (c === "c" || c === "C") {
- this._state = BEFORE_SCRIPT_1;
- } else if (c === "t" || c === "T") {
- this._state = BEFORE_STYLE_1;
- } else {
- this._state = IN_TAG_NAME;
- this._index--; //consume the token again
- }
-};
-
-Tokenizer.prototype._stateBeforeSpecialEnd = function(c) {
- if (this._special === SPECIAL_SCRIPT && (c === "c" || c === "C")) {
- this._state = AFTER_SCRIPT_1;
- } else if (this._special === SPECIAL_STYLE && (c === "t" || c === "T")) {
- this._state = AFTER_STYLE_1;
- } else this._state = TEXT;
-};
-
-Tokenizer.prototype._stateBeforeScript1 = consumeSpecialNameChar(
- "R",
- BEFORE_SCRIPT_2
-);
-Tokenizer.prototype._stateBeforeScript2 = consumeSpecialNameChar(
- "I",
- BEFORE_SCRIPT_3
-);
-Tokenizer.prototype._stateBeforeScript3 = consumeSpecialNameChar(
- "P",
- BEFORE_SCRIPT_4
-);
-Tokenizer.prototype._stateBeforeScript4 = consumeSpecialNameChar(
- "T",
- BEFORE_SCRIPT_5
-);
-
-Tokenizer.prototype._stateBeforeScript5 = function(c) {
- if (c === "/" || c === ">" || whitespace(c)) {
- this._special = SPECIAL_SCRIPT;
- }
- this._state = IN_TAG_NAME;
- this._index--; //consume the token again
-};
-
-Tokenizer.prototype._stateAfterScript1 = ifElseState("R", AFTER_SCRIPT_2, TEXT);
-Tokenizer.prototype._stateAfterScript2 = ifElseState("I", AFTER_SCRIPT_3, TEXT);
-Tokenizer.prototype._stateAfterScript3 = ifElseState("P", AFTER_SCRIPT_4, TEXT);
-Tokenizer.prototype._stateAfterScript4 = ifElseState("T", AFTER_SCRIPT_5, TEXT);
-
-Tokenizer.prototype._stateAfterScript5 = function(c) {
- if (c === ">" || whitespace(c)) {
- this._special = SPECIAL_NONE;
- this._state = IN_CLOSING_TAG_NAME;
- this._sectionStart = this._index - 6;
- this._index--; //reconsume the token
- } else this._state = TEXT;
-};
-
-Tokenizer.prototype._stateBeforeStyle1 = consumeSpecialNameChar(
- "Y",
- BEFORE_STYLE_2
-);
-Tokenizer.prototype._stateBeforeStyle2 = consumeSpecialNameChar(
- "L",
- BEFORE_STYLE_3
-);
-Tokenizer.prototype._stateBeforeStyle3 = consumeSpecialNameChar(
- "E",
- BEFORE_STYLE_4
-);
-
-Tokenizer.prototype._stateBeforeStyle4 = function(c) {
- if (c === "/" || c === ">" || whitespace(c)) {
- this._special = SPECIAL_STYLE;
- }
- this._state = IN_TAG_NAME;
- this._index--; //consume the token again
-};
-
-Tokenizer.prototype._stateAfterStyle1 = ifElseState("Y", AFTER_STYLE_2, TEXT);
-Tokenizer.prototype._stateAfterStyle2 = ifElseState("L", AFTER_STYLE_3, TEXT);
-Tokenizer.prototype._stateAfterStyle3 = ifElseState("E", AFTER_STYLE_4, TEXT);
-
-Tokenizer.prototype._stateAfterStyle4 = function(c) {
- if (c === ">" || whitespace(c)) {
- this._special = SPECIAL_NONE;
- this._state = IN_CLOSING_TAG_NAME;
- this._sectionStart = this._index - 5;
- this._index--; //reconsume the token
- } else this._state = TEXT;
-};
-
-Tokenizer.prototype._stateBeforeEntity = ifElseState(
- "#",
- BEFORE_NUMERIC_ENTITY,
- IN_NAMED_ENTITY
-);
-Tokenizer.prototype._stateBeforeNumericEntity = ifElseState(
- "X",
- IN_HEX_ENTITY,
- IN_NUMERIC_ENTITY
-);
-
-//for entities terminated with a semicolon
-Tokenizer.prototype._parseNamedEntityStrict = function() {
- //offset = 1
- if (this._sectionStart + 1 < this._index) {
- var entity = this._buffer.substring(
- this._sectionStart + 1,
- this._index
- ),
- map = this._xmlMode ? xmlMap : entityMap;
-
- if (map.hasOwnProperty(entity)) {
- this._emitPartial(map[entity]);
- this._sectionStart = this._index + 1;
- }
- }
-};
-
-//parses legacy entities (without trailing semicolon)
-Tokenizer.prototype._parseLegacyEntity = function() {
- var start = this._sectionStart + 1,
- limit = this._index - start;
-
- if (limit > 6) limit = 6; //the max length of legacy entities is 6
-
- while (limit >= 2) {
- //the min length of legacy entities is 2
- var entity = this._buffer.substr(start, limit);
-
- if (legacyMap.hasOwnProperty(entity)) {
- this._emitPartial(legacyMap[entity]);
- this._sectionStart += limit + 1;
- return;
- } else {
- limit--;
- }
- }
-};
-
-Tokenizer.prototype._stateInNamedEntity = function(c) {
- if (c === ";") {
- this._parseNamedEntityStrict();
- if (this._sectionStart + 1 < this._index && !this._xmlMode) {
- this._parseLegacyEntity();
- }
- this._state = this._baseState;
- } else if (
- (c < "a" || c > "z") &&
- (c < "A" || c > "Z") &&
- (c < "0" || c > "9")
- ) {
- if (this._xmlMode);
- else if (this._sectionStart + 1 === this._index);
- else if (this._baseState !== TEXT) {
- if (c !== "=") {
- this._parseNamedEntityStrict();
- }
- } else {
- this._parseLegacyEntity();
- }
-
- this._state = this._baseState;
- this._index--;
- }
-};
-
-Tokenizer.prototype._decodeNumericEntity = function(offset, base) {
- var sectionStart = this._sectionStart + offset;
-
- if (sectionStart !== this._index) {
- //parse entity
- var entity = this._buffer.substring(sectionStart, this._index);
- var parsed = parseInt(entity, base);
-
- this._emitPartial(decodeCodePoint(parsed));
- this._sectionStart = this._index;
- } else {
- this._sectionStart--;
- }
-
- this._state = this._baseState;
-};
-
-Tokenizer.prototype._stateInNumericEntity = function(c) {
- if (c === ";") {
- this._decodeNumericEntity(2, 10);
- this._sectionStart++;
- } else if (c < "0" || c > "9") {
- if (!this._xmlMode) {
- this._decodeNumericEntity(2, 10);
- } else {
- this._state = this._baseState;
- }
- this._index--;
- }
-};
-
-Tokenizer.prototype._stateInHexEntity = function(c) {
- if (c === ";") {
- this._decodeNumericEntity(3, 16);
- this._sectionStart++;
- } else if (
- (c < "a" || c > "f") &&
- (c < "A" || c > "F") &&
- (c < "0" || c > "9")
- ) {
- if (!this._xmlMode) {
- this._decodeNumericEntity(3, 16);
- } else {
- this._state = this._baseState;
- }
- this._index--;
- }
-};
-
-Tokenizer.prototype._cleanup = function() {
- if (this._sectionStart < 0) {
- this._buffer = "";
- this._bufferOffset += this._index;
- this._index = 0;
- } else if (this._running) {
- if (this._state === TEXT) {
- if (this._sectionStart !== this._index) {
- this._cbs.ontext(this._buffer.substr(this._sectionStart));
- }
- this._buffer = "";
- this._bufferOffset += this._index;
- this._index = 0;
- } else if (this._sectionStart === this._index) {
- //the section just started
- this._buffer = "";
- this._bufferOffset += this._index;
- this._index = 0;
- } else {
- //remove everything unnecessary
- this._buffer = this._buffer.substr(this._sectionStart);
- this._index -= this._sectionStart;
- this._bufferOffset += this._sectionStart;
- }
-
- this._sectionStart = 0;
- }
-};
-
-//TODO make events conditional
-Tokenizer.prototype.write = function(chunk) {
- if (this._ended) this._cbs.onerror(Error(".write() after done!"));
-
- this._buffer += chunk;
- this._parse();
-};
-
-Tokenizer.prototype._parse = function() {
- while (this._index < this._buffer.length && this._running) {
- var c = this._buffer.charAt(this._index);
- if (this._state === TEXT) {
- this._stateText(c);
- } else if (this._state === BEFORE_TAG_NAME) {
- this._stateBeforeTagName(c);
- } else if (this._state === IN_TAG_NAME) {
- this._stateInTagName(c);
- } else if (this._state === BEFORE_CLOSING_TAG_NAME) {
- this._stateBeforeCloseingTagName(c);
- } else if (this._state === IN_CLOSING_TAG_NAME) {
- this._stateInCloseingTagName(c);
- } else if (this._state === AFTER_CLOSING_TAG_NAME) {
- this._stateAfterCloseingTagName(c);
- } else if (this._state === IN_SELF_CLOSING_TAG) {
- this._stateInSelfClosingTag(c);
- } else if (this._state === BEFORE_ATTRIBUTE_NAME) {
-
- /*
- * attributes
- */
- this._stateBeforeAttributeName(c);
- } else if (this._state === IN_ATTRIBUTE_NAME) {
- this._stateInAttributeName(c);
- } else if (this._state === AFTER_ATTRIBUTE_NAME) {
- this._stateAfterAttributeName(c);
- } else if (this._state === BEFORE_ATTRIBUTE_VALUE) {
- this._stateBeforeAttributeValue(c);
- } else if (this._state === IN_ATTRIBUTE_VALUE_DQ) {
- this._stateInAttributeValueDoubleQuotes(c);
- } else if (this._state === IN_ATTRIBUTE_VALUE_SQ) {
- this._stateInAttributeValueSingleQuotes(c);
- } else if (this._state === IN_ATTRIBUTE_VALUE_NQ) {
- this._stateInAttributeValueNoQuotes(c);
- } else if (this._state === BEFORE_DECLARATION) {
-
- /*
- * declarations
- */
- this._stateBeforeDeclaration(c);
- } else if (this._state === IN_DECLARATION) {
- this._stateInDeclaration(c);
- } else if (this._state === IN_PROCESSING_INSTRUCTION) {
-
- /*
- * processing instructions
- */
- this._stateInProcessingInstruction(c);
- } else if (this._state === BEFORE_COMMENT) {
-
- /*
- * comments
- */
- this._stateBeforeComment(c);
- } else if (this._state === IN_COMMENT) {
- this._stateInComment(c);
- } else if (this._state === AFTER_COMMENT_1) {
- this._stateAfterComment1(c);
- } else if (this._state === AFTER_COMMENT_2) {
- this._stateAfterComment2(c);
- } else if (this._state === BEFORE_CDATA_1) {
-
- /*
- * cdata
- */
- this._stateBeforeCdata1(c);
- } else if (this._state === BEFORE_CDATA_2) {
- this._stateBeforeCdata2(c);
- } else if (this._state === BEFORE_CDATA_3) {
- this._stateBeforeCdata3(c);
- } else if (this._state === BEFORE_CDATA_4) {
- this._stateBeforeCdata4(c);
- } else if (this._state === BEFORE_CDATA_5) {
- this._stateBeforeCdata5(c);
- } else if (this._state === BEFORE_CDATA_6) {
- this._stateBeforeCdata6(c);
- } else if (this._state === IN_CDATA) {
- this._stateInCdata(c);
- } else if (this._state === AFTER_CDATA_1) {
- this._stateAfterCdata1(c);
- } else if (this._state === AFTER_CDATA_2) {
- this._stateAfterCdata2(c);
- } else if (this._state === BEFORE_SPECIAL) {
-
- /*
- * special tags
- */
- this._stateBeforeSpecial(c);
- } else if (this._state === BEFORE_SPECIAL_END) {
- this._stateBeforeSpecialEnd(c);
- } else if (this._state === BEFORE_SCRIPT_1) {
-
- /*
- * script
- */
- this._stateBeforeScript1(c);
- } else if (this._state === BEFORE_SCRIPT_2) {
- this._stateBeforeScript2(c);
- } else if (this._state === BEFORE_SCRIPT_3) {
- this._stateBeforeScript3(c);
- } else if (this._state === BEFORE_SCRIPT_4) {
- this._stateBeforeScript4(c);
- } else if (this._state === BEFORE_SCRIPT_5) {
- this._stateBeforeScript5(c);
- } else if (this._state === AFTER_SCRIPT_1) {
- this._stateAfterScript1(c);
- } else if (this._state === AFTER_SCRIPT_2) {
- this._stateAfterScript2(c);
- } else if (this._state === AFTER_SCRIPT_3) {
- this._stateAfterScript3(c);
- } else if (this._state === AFTER_SCRIPT_4) {
- this._stateAfterScript4(c);
- } else if (this._state === AFTER_SCRIPT_5) {
- this._stateAfterScript5(c);
- } else if (this._state === BEFORE_STYLE_1) {
-
- /*
- * style
- */
- this._stateBeforeStyle1(c);
- } else if (this._state === BEFORE_STYLE_2) {
- this._stateBeforeStyle2(c);
- } else if (this._state === BEFORE_STYLE_3) {
- this._stateBeforeStyle3(c);
- } else if (this._state === BEFORE_STYLE_4) {
- this._stateBeforeStyle4(c);
- } else if (this._state === AFTER_STYLE_1) {
- this._stateAfterStyle1(c);
- } else if (this._state === AFTER_STYLE_2) {
- this._stateAfterStyle2(c);
- } else if (this._state === AFTER_STYLE_3) {
- this._stateAfterStyle3(c);
- } else if (this._state === AFTER_STYLE_4) {
- this._stateAfterStyle4(c);
- } else if (this._state === BEFORE_ENTITY) {
-
- /*
- * entities
- */
- this._stateBeforeEntity(c);
- } else if (this._state === BEFORE_NUMERIC_ENTITY) {
- this._stateBeforeNumericEntity(c);
- } else if (this._state === IN_NAMED_ENTITY) {
- this._stateInNamedEntity(c);
- } else if (this._state === IN_NUMERIC_ENTITY) {
- this._stateInNumericEntity(c);
- } else if (this._state === IN_HEX_ENTITY) {
- this._stateInHexEntity(c);
- } else {
- this._cbs.onerror(Error("unknown _state"), this._state);
- }
-
- this._index++;
- }
-
- this._cleanup();
-};
-
-Tokenizer.prototype.pause = function() {
- this._running = false;
-};
-Tokenizer.prototype.resume = function() {
- this._running = true;
-
- if (this._index < this._buffer.length) {
- this._parse();
- }
- if (this._ended) {
- this._finish();
- }
-};
-
-Tokenizer.prototype.end = function(chunk) {
- if (this._ended) this._cbs.onerror(Error(".end() after done!"));
- if (chunk) this.write(chunk);
-
- this._ended = true;
-
- if (this._running) this._finish();
-};
-
-Tokenizer.prototype._finish = function() {
- //if there is remaining data, emit it in a reasonable way
- if (this._sectionStart < this._index) {
- this._handleTrailingData();
- }
-
- this._cbs.onend();
-};
-
-Tokenizer.prototype._handleTrailingData = function() {
- var data = this._buffer.substr(this._sectionStart);
-
- if (
- this._state === IN_CDATA ||
- this._state === AFTER_CDATA_1 ||
- this._state === AFTER_CDATA_2
- ) {
- this._cbs.oncdata(data);
- } else if (
- this._state === IN_COMMENT ||
- this._state === AFTER_COMMENT_1 ||
- this._state === AFTER_COMMENT_2
- ) {
- this._cbs.oncomment(data);
- } else if (this._state === IN_NAMED_ENTITY && !this._xmlMode) {
- this._parseLegacyEntity();
- if (this._sectionStart < this._index) {
- this._state = this._baseState;
- this._handleTrailingData();
- }
- } else if (this._state === IN_NUMERIC_ENTITY && !this._xmlMode) {
- this._decodeNumericEntity(2, 10);
- if (this._sectionStart < this._index) {
- this._state = this._baseState;
- this._handleTrailingData();
- }
- } else if (this._state === IN_HEX_ENTITY && !this._xmlMode) {
- this._decodeNumericEntity(3, 16);
- if (this._sectionStart < this._index) {
- this._state = this._baseState;
- this._handleTrailingData();
- }
- } else if (
- this._state !== IN_TAG_NAME &&
- this._state !== BEFORE_ATTRIBUTE_NAME &&
- this._state !== BEFORE_ATTRIBUTE_VALUE &&
- this._state !== AFTER_ATTRIBUTE_NAME &&
- this._state !== IN_ATTRIBUTE_NAME &&
- this._state !== IN_ATTRIBUTE_VALUE_SQ &&
- this._state !== IN_ATTRIBUTE_VALUE_DQ &&
- this._state !== IN_ATTRIBUTE_VALUE_NQ &&
- this._state !== IN_CLOSING_TAG_NAME
- ) {
- this._cbs.ontext(data);
- }
- //else, ignore remaining data
- //TODO add a way to remove current tag
-};
-
-Tokenizer.prototype.reset = function() {
- Tokenizer.call(
- this,
- { xmlMode: this._xmlMode, decodeEntities: this._decodeEntities },
- this._cbs
- );
-};
-
-Tokenizer.prototype.getAbsoluteIndex = function() {
- return this._bufferOffset + this._index;
-};
-
-Tokenizer.prototype._getSection = function() {
- return this._buffer.substring(this._sectionStart, this._index);
-};
-
-Tokenizer.prototype._emitToken = function(name) {
- this._cbs[name](this._getSection());
- this._sectionStart = -1;
-};
-
-Tokenizer.prototype._emitPartial = function(value) {
- if (this._baseState !== TEXT) {
- this._cbs.onattribdata(value); //TODO implement the new event
- } else {
- this._cbs.ontext(value);
- }
-};
diff --git a/assets/node_modules/htmlparser2/lib/WritableStream.js b/assets/node_modules/htmlparser2/lib/WritableStream.js
deleted file mode 100644
index ac45b49..0000000
--- a/assets/node_modules/htmlparser2/lib/WritableStream.js
+++ /dev/null
@@ -1,25 +0,0 @@
-module.exports = Stream;
-
-var Parser = require("./Parser.js");
-var WritableStream = require("readable-stream").Writable;
-var StringDecoder = require("string_decoder").StringDecoder;
-var Buffer = require("buffer").Buffer;
-
-function Stream(cbs, options) {
- var parser = (this._parser = new Parser(cbs, options));
- var decoder = (this._decoder = new StringDecoder());
-
- WritableStream.call(this, { decodeStrings: false });
-
- this.once("finish", function() {
- parser.end(decoder.end());
- });
-}
-
-require("inherits")(Stream, WritableStream);
-
-Stream.prototype._write = function(chunk, encoding, cb) {
- if (chunk instanceof Buffer) chunk = this._decoder.write(chunk);
- this._parser.write(chunk);
- cb();
-};
diff --git a/assets/node_modules/htmlparser2/lib/index.js b/assets/node_modules/htmlparser2/lib/index.js
deleted file mode 100644
index 887b9b4..0000000
--- a/assets/node_modules/htmlparser2/lib/index.js
+++ /dev/null
@@ -1,72 +0,0 @@
-var Parser = require("./Parser.js");
-var DomHandler = require("domhandler");
-
-function defineProp(name, value) {
- delete module.exports[name];
- module.exports[name] = value;
- return value;
-}
-
-module.exports = {
- Parser: Parser,
- Tokenizer: require("./Tokenizer.js"),
- ElementType: require("domelementtype"),
- DomHandler: DomHandler,
- get FeedHandler() {
- return defineProp("FeedHandler", require("./FeedHandler.js"));
- },
- get Stream() {
- return defineProp("Stream", require("./Stream.js"));
- },
- get WritableStream() {
- return defineProp("WritableStream", require("./WritableStream.js"));
- },
- get ProxyHandler() {
- return defineProp("ProxyHandler", require("./ProxyHandler.js"));
- },
- get DomUtils() {
- return defineProp("DomUtils", require("domutils"));
- },
- get CollectingHandler() {
- return defineProp(
- "CollectingHandler",
- require("./CollectingHandler.js")
- );
- },
- // For legacy support
- DefaultHandler: DomHandler,
- get RssHandler() {
- return defineProp("RssHandler", this.FeedHandler);
- },
- //helper methods
- parseDOM: function(data, options) {
- var handler = new DomHandler(options);
- new Parser(handler, options).end(data);
- return handler.dom;
- },
- parseFeed: function(feed, options) {
- var handler = new module.exports.FeedHandler(options);
- new Parser(handler, options).end(feed);
- return handler.dom;
- },
- createDomStream: function(cb, options, elementCb) {
- var handler = new DomHandler(cb, options, elementCb);
- return new Parser(handler, options);
- },
- // List of all events that the parser emits
- EVENTS: {
- /* Format: eventname: number of arguments */
- attribute: 2,
- cdatastart: 0,
- cdataend: 0,
- text: 1,
- processinginstruction: 2,
- comment: 1,
- commentend: 0,
- closetag: 1,
- opentag: 2,
- opentagname: 1,
- error: 1,
- end: 0
- }
-};
diff --git a/assets/node_modules/htmlparser2/package.json b/assets/node_modules/htmlparser2/package.json
deleted file mode 100644
index 4ac66d0..0000000
--- a/assets/node_modules/htmlparser2/package.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "name": "htmlparser2",
- "description": "Fast & forgiving HTML/XML/RSS parser",
- "version": "3.10.1",
- "author": "Felix Boehm <me@feedic.com>",
- "keywords": [
- "html",
- "parser",
- "streams",
- "xml",
- "dom",
- "rss",
- "feed",
- "atom"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/fb55/htmlparser2.git"
- },
- "bugs": {
- "mail": "me@feedic.com",
- "url": "http://github.com/fb55/htmlparser2/issues"
- },
- "directories": {
- "lib": "lib/"
- },
- "main": "lib/index.js",
- "files": [
- "lib"
- ],
- "scripts": {
- "lcov": "istanbul cover _mocha --report lcovonly -- -R spec",
- "coveralls": "npm run lint && npm run lcov && (cat coverage/lcov.info | coveralls || exit 0)",
- "test": "mocha && npm run lint",
- "lint": "eslint lib test"
- },
- "dependencies": {
- "domelementtype": "^1.3.1",
- "domhandler": "^2.3.0",
- "domutils": "^1.5.1",
- "entities": "^1.1.1",
- "inherits": "^2.0.1",
- "readable-stream": "^3.1.1"
- },
- "devDependencies": {
- "coveralls": "^3.0.1",
- "eslint": "^5.13.0",
- "istanbul": "^0.4.3",
- "mocha": "^5.2.0",
- "mocha-lcov-reporter": "^1.2.0"
- },
- "browser": {
- "readable-stream": false
- },
- "license": "MIT",
- "prettier": {
- "tabWidth": 4
- }
-}
diff --git a/assets/node_modules/ignore/CHANGELOG.md b/assets/node_modules/ignore/CHANGELOG.md
deleted file mode 100644
index dc38d63..0000000
--- a/assets/node_modules/ignore/CHANGELOG.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# `node-ignore` 5 ChangeLog
-
-# 5.x
-
-## 2018-08-14, Version 5.0.1
-
-- **PATCH**: fixes for windows.
-- **PATCH**: improves tests for typescript and windows.
-
-## 2018-08-13, Version 5.0.0
-
-- **SEMVER-MAJOR**: [#20](https://github.com/kaelzhang/node-ignore/issues/20): it will throw if an invalid pathname passes into `.ignores(pathname)`, see [Upgrade 4.x -> 5.x](https://github.com/kaelzhang/node-ignore#upgrade-4x---5x).
-- **FEATURE**: [#31](https://github.com/kaelzhang/node-ignore/issues/31): adds a new method [`.test(pathname)`](https://github.com/kaelzhang/node-ignore#testpathname-pathname-since-500).
-- **BENCHMARK**: improves performance by 26%.
-
-# 4.x
-
-## 2018-08-12, Version 4.0.6
-
-- **PATCH**: `Object.prototype` methods will not ruin the result any more.
-
-## ~ 2018-08-09, Version 4.0.1 - 4.0.5
-
-- **PATCH**: updates README.md about frequent asked quesions from github issues.
-
-## 2018-06-22, Version 4.0.0
-
-- **SEMVER-MAJOR**: Drop support for node < 6 by default.
-- **FEATURE**: supports the missing character ranges and sets, such as `*.[a-z]` and `*.[jJ][pP][gG]`
-- **FEATURE**: new option: `ignorecase` to make `ignore` case insensitive.
-- **FEATURE**: supports question mark which matches a single character.
-- **PATCH**: fixes typescript declaration.
diff --git a/assets/node_modules/ignore/LICENSE-MIT b/assets/node_modules/ignore/LICENSE-MIT
deleted file mode 100644
index 825533e..0000000
--- a/assets/node_modules/ignore/LICENSE-MIT
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright (c) 2013 Kael Zhang <i@kael.me>, contributors
-http://kael.me/
-
-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/assets/node_modules/ignore/README.md b/assets/node_modules/ignore/README.md
deleted file mode 100644
index c52b325..0000000
--- a/assets/node_modules/ignore/README.md
+++ /dev/null
@@ -1,386 +0,0 @@
-<table><thead>
- <tr>
- <th>Linux</th>
- <th>OS X</th>
- <th>Windows</th>
- <th>Coverage</th>
- <th>Downloads</th>
- </tr>
-</thead><tbody><tr>
- <td colspan="2" align="center">
- <a href="https://travis-ci.org/kaelzhang/node-ignore">
- <img
- src="https://travis-ci.org/kaelzhang/node-ignore.svg?branch=master"
- alt="Build Status" /></a>
- </td>
- <td align="center">
- <a href="https://ci.appveyor.com/project/kaelzhang/node-ignore">
- <img
- src="https://ci.appveyor.com/api/projects/status/github/kaelzhang/node-ignore?branch=master&svg=true"
- alt="Windows Build Status" /></a>
- </td>
- <td align="center">
- <a href="https://codecov.io/gh/kaelzhang/node-ignore">
- <img
- src="https://codecov.io/gh/kaelzhang/node-ignore/branch/master/graph/badge.svg"
- alt="Coverage Status" /></a>
- </td>
- <td align="center">
- <a href="https://www.npmjs.org/package/ignore">
- <img
- src="http://img.shields.io/npm/dm/ignore.svg"
- alt="npm module downloads per month" /></a>
- </td>
-</tr></tbody></table>
-
-# ignore
-
-`ignore` is a manager, filter and parser which implemented in pure JavaScript according to the .gitignore [spec](http://git-scm.com/docs/gitignore).
-
-`ignore` is used by eslint, gitbook and [many others](https://www.npmjs.com/browse/depended/ignore).
-
-Pay attention that [`minimatch`](https://www.npmjs.org/package/minimatch) does not work in the gitignore way. To filter filenames according to .gitignore file, I recommend this module.
-
-### Tested on
-
-`ignore` is fully tested, and has more than **five hundreds** of unit tests.
-
-- Linux + Node: `0.8` - `7.x`
-- Windows + Node: `0.10` - `7.x`, node < `0.10` is not tested due to the lack of support of appveyor.
-
-Actually, `ignore` does not rely on any versions of node specially.
-
-Since `4.0.0`, ignore will no longer support `node < 6` by default, to use in node < 6, `require('ignore/legacy')`. For details, see [CHANGELOG](https://github.com/kaelzhang/node-ignore/blob/master/CHANGELOG.md).
-
-## Table Of Main Contents
-
-- [Usage](#usage)
-- [`Pathname` Conventions](#pathname-conventions)
-- See Also:
- - [`glob-gitignore`](https://www.npmjs.com/package/glob-gitignore) matches files using patterns and filters them according to gitignore rules.
-- [Upgrade Guide](#upgrade-guide)
-
-## Install
-
-```sh
-npm i ignore
-```
-
-## Usage
-
-```js
-import ignore from 'ignore'
-const ig = ignore().add(['.abc/*', '!.abc/d/'])
-```
-
-### Filter the given paths
-
-```js
-const paths = [
- '.abc/a.js', // filtered out
- '.abc/d/e.js' // included
-]
-
-ig.filter(paths) // ['.abc/d/e.js']
-ig.ignores('.abc/a.js') // true
-```
-
-### As the filter function
-
-```js
-paths.filter(ig.createFilter()); // ['.abc/d/e.js']
-```
-
-### Win32 paths will be handled
-
-```js
-ig.filter(['.abc\\a.js', '.abc\\d\\e.js'])
-// if the code above runs on windows, the result will be
-// ['.abc\\d\\e.js']
-```
-
-## Why another ignore?
-
-- `ignore` is a standalone module, and is much simpler so that it could easy work with other programs, unlike [isaacs](https://npmjs.org/~isaacs)'s [fstream-ignore](https://npmjs.org/package/fstream-ignore) which must work with the modules of the fstream family.
-
-- `ignore` only contains utility methods to filter paths according to the specified ignore rules, so
- - `ignore` never try to find out ignore rules by traversing directories or fetching from git configurations.
- - `ignore` don't cares about sub-modules of git projects.
-
-- Exactly according to [gitignore man page](http://git-scm.com/docs/gitignore), fixes some known matching issues of fstream-ignore, such as:
- - '`/*.js`' should only match '`a.js`', but not '`abc/a.js`'.
- - '`**/foo`' should match '`foo`' anywhere.
- - Prevent re-including a file if a parent directory of that file is excluded.
- - Handle trailing whitespaces:
- - `'a '`(one space) should not match `'a '`(two spaces).
- - `'a \ '` matches `'a '`
- - All test cases are verified with the result of `git check-ignore`.
-
-# Methods
-
-## .add(pattern: string | Ignore): this
-## .add(patterns: Array<string | Ignore>): this
-
-- **pattern** `String | Ignore` An ignore pattern string, or the `Ignore` instance
-- **patterns** `Array<String | Ignore>` Array of ignore patterns.
-
-Adds a rule or several rules to the current manager.
-
-Returns `this`
-
-Notice that a line starting with `'#'`(hash) is treated as a comment. Put a backslash (`'\'`) in front of the first hash for patterns that begin with a hash, if you want to ignore a file with a hash at the beginning of the filename.
-
-```js
-ignore().add('#abc').ignores('#abc') // false
-ignore().add('\#abc').ignores('#abc') // true
-```
-
-`pattern` could either be a line of ignore pattern or a string of multiple ignore patterns, which means we could just `ignore().add()` the content of a ignore file:
-
-```js
-ignore()
-.add(fs.readFileSync(filenameOfGitignore).toString())
-.filter(filenames)
-```
-
-`pattern` could also be an `ignore` instance, so that we could easily inherit the rules of another `Ignore` instance.
-
-## <strike>.addIgnoreFile(path)</strike>
-
-REMOVED in `3.x` for now.
-
-To upgrade `ignore@2.x` up to `3.x`, use
-
-```js
-import fs from 'fs'
-
-if (fs.existsSync(filename)) {
- ignore().add(fs.readFileSync(filename).toString())
-}
-```
-
-instead.
-
-## .filter(paths: Array&lt;Pathname&gt;): Array&lt;Pathname&gt;
-
-```ts
-type Pathname = string
-```
-
-Filters the given array of pathnames, and returns the filtered array.
-
-- **paths** `Array.<Pathname>` The array of `pathname`s to be filtered.
-
-### `Pathname` Conventions:
-
-#### 1. `Pathname` should be a `path.relative()`d pathname
-
-`Pathname` should be a string that have been `path.join()`ed, or the return value of `path.relative()` to the current directory,
-
-```js
-// WRONG, an error will be thrown
-ig.ignores('./abc')
-
-// WRONG, for it will never happen, and an error will be thrown
-// If the gitignore rule locates at the root directory,
-// `'/abc'` should be changed to `'abc'`.
-// ```
-// path.relative('/', '/abc') -> 'abc'
-// ```
-ig.ignores('/abc')
-
-// WRONG, that it is an absolute path on Windows, an error will be thrown
-ig.ignores('C:\\abc')
-
-// Right
-ig.ignores('abc')
-
-// Right
-ig.ignores(path.join('./abc')) // path.join('./abc') -> 'abc'
-```
-
-In other words, each `Pathname` here should be a relative path to the directory of the gitignore rules.
-
-Suppose the dir structure is:
-
-```
-/path/to/your/repo
- |-- a
- | |-- a.js
- |
- |-- .b
- |
- |-- .c
- |-- .DS_store
-```
-
-Then the `paths` might be like this:
-
-```js
-[
- 'a/a.js'
- '.b',
- '.c/.DS_store'
-]
-```
-
-#### 2. filenames and dirnames
-
-`node-ignore` does NO `fs.stat` during path matching, so for the example below:
-
-```js
-// First, we add a ignore pattern to ignore a directory
-ig.add('config/')
-
-// `ig` does NOT know if 'config', in the real world,
-// is a normal file, directory or something.
-
-ig.ignores('config')
-// `ig` treats `config` as a file, so it returns `false`
-
-ig.ignores('config/')
-// returns `true`
-```
-
-Specially for people who develop some library based on `node-ignore`, it is important to understand that.
-
-Usually, you could use [`glob`](http://npmjs.org/package/glob) with `option.mark = true` to fetch the structure of the current directory:
-
-```js
-import glob from 'glob'
-
-glob('**', {
- // Adds a / character to directory matches.
- mark: true
-}, (err, files) => {
- if (err) {
- return console.error(err)
- }
-
- let filtered = ignore().add(patterns).filter(files)
- console.log(filtered)
-})
-```
-
-## .ignores(pathname: Pathname): boolean
-
-> new in 3.2.0
-
-Returns `Boolean` whether `pathname` should be ignored.
-
-```js
-ig.ignores('.abc/a.js') // true
-```
-
-## .createFilter()
-
-Creates a filter function which could filter an array of paths with `Array.prototype.filter`.
-
-Returns `function(path)` the filter function.
-
-## .test(pathname: Pathname) since 5.0.0
-
-Returns `TestResult`
-
-```ts
-interface TestResult {
- ignored: boolean
- // true if the `pathname` is finally unignored by some negative pattern
- unignored: boolean
-}
-```
-
-- `{ignored: true, unignored: false}`: the `pathname` is ignored
-- `{ignored: false, unignored: true}`: the `pathname` is unignored
-- `{ignored: false, unignored: false}`: the `pathname` is never matched by any ignore rules.
-
-## `options.ignorecase` since 4.0.0
-
-Similar as the `core.ignorecase` option of [git-config](https://git-scm.com/docs/git-config), `node-ignore` will be case insensitive if `options.ignorecase` is set to `true` (the default value), otherwise case sensitive.
-
-```js
-const ig = ignore({
- ignorecase: false
-})
-
-ig.add('*.png')
-
-ig.ignores('*.PNG') // false
-```
-
-## static `ignore.isPathValid(pathname): boolean` since 5.0.0
-
-Check whether the `pathname` is valid according to the [convention](#1-pathname-should-be-a-pathrelatived-pathname).
-
-```js
-ignore.isPathValid('./foo') // false
-```
-
-****
-
-# Upgrade Guide
-
-## Upgrade 4.x -> 5.x
-
-Since `5.0.0`, if an invalid `Pathname` passed into `ig.ignores()`, an error will be thrown, while `ignore < 5.0.0` did not make sure what the return value was, as well as
-
-```ts
-.ignores(pathname: Pathname): boolean
-
-.filter(pathnames: Array<Pathname>): Array<Pathname>
-
-.createFilter(): (pathname: Pathname) => boolean
-
-.test(pathname: Pathname): {ignored: boolean, unignored: boolean}
-```
-
-See the convention [here](#1-pathname-should-be-a-pathrelatived-pathname) for details.
-
-If there are invalid pathnames, the conversion and filtration should be done by users.
-
-```js
-import {isPathValid} from 'ignore' // introduced in 5.0.0
-
-const paths = [
- // invalid
- //////////////////
- '',
- false,
- '../foo',
- '.',
- //////////////////
-
- // valid
- 'foo'
-]
-.filter(isValidPath)
-
-ig.filter(paths)
-```
-
-## Upgrade 3.x -> 4.x
-
-Since `4.0.0`, `ignore` will no longer support node < 6, to use `ignore` in node < 6:
-
-```js
-var ignore = require('ignore/legacy')
-```
-
-## Upgrade 2.x -> 3.x
-
-- All `options` of 2.x are unnecessary and removed, so just remove them.
-- `ignore()` instance is no longer an [`EventEmitter`](nodejs.org/api/events.html), and all events are unnecessary and removed.
-- `.addIgnoreFile()` is removed, see the [.addIgnoreFile](#addignorefilepath) section for details.
-
-****
-
-# Collaborators
-
-- [@whitecolor](https://github.com/whitecolor) *Alex*
-- [@SamyPesse](https://github.com/SamyPesse) *Samy Pessé*
-- [@azproduction](https://github.com/azproduction) *Mikhail Davydov*
-- [@TrySound](https://github.com/TrySound) *Bogdan Chadkin*
-- [@JanMattner](https://github.com/JanMattner) *Jan Mattner*
-- [@ntwb](https://github.com/ntwb) *Stephen Edgar*
-- [@kasperisager](https://github.com/kasperisager) *Kasper Isager*
-- [@sandersn](https://github.com/sandersn) *Nathan Shively-Sanders*
diff --git a/assets/node_modules/ignore/index.d.ts b/assets/node_modules/ignore/index.d.ts
deleted file mode 100644
index 66657af..0000000
--- a/assets/node_modules/ignore/index.d.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-type Pathname = string
-
-interface TestResult {
- ignored: boolean
- unignored: boolean
-}
-
-export interface Ignore {
- /**
- * Adds a rule rules to the current manager.
- * @param {string | Ignore} pattern
- * @returns IgnoreBase
- */
- add(pattern: string | Ignore): this
- /**
- * Adds several rules to the current manager.
- * @param {string[]} patterns
- * @returns IgnoreBase
- */
- add(patterns: (string | Ignore)[]): this
-
- /**
- * Filters the given array of pathnames, and returns the filtered array.
- * NOTICE that each path here should be a relative path to the root of your repository.
- * @param paths the array of paths to be filtered.
- * @returns The filtered array of paths
- */
- filter(pathnames: Pathname[]): Pathname[]
- /**
- * Creates a filter function which could filter
- * an array of paths with Array.prototype.filter.
- */
- createFilter(): (pathname: Pathname) => boolean
-
- /**
- * Returns Boolean whether pathname should be ignored.
- * @param {string} pathname a path to check
- * @returns boolean
- */
- ignores(pathname: Pathname): boolean
-
- /**
- * Returns whether pathname should be ignored or unignored
- * @param {string} pathname a path to check
- * @returns TestResult
- */
- test(pathname: Pathname): TestResult
-}
-
-interface Options {
- ignorecase?: boolean
-}
-
-/**
- * Creates new ignore manager.
- */
-declare function ignore(options?: Options): Ignore
-
-declare namespace ignore {
- export function isPathValid (pathname: string): boolean
-}
-
-export default ignore
diff --git a/assets/node_modules/ignore/index.js b/assets/node_modules/ignore/index.js
deleted file mode 100644
index 8ee4858..0000000
--- a/assets/node_modules/ignore/index.js
+++ /dev/null
@@ -1,568 +0,0 @@
-// A simple implementation of make-array
-function makeArray (subject) {
- return Array.isArray(subject)
- ? subject
- : [subject]
-}
-
-const REGEX_TEST_BLANK_LINE = /^\s+$/
-const REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/
-const REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/
-const REGEX_SPLITALL_CRLF = /\r?\n/g
-// /foo,
-// ./foo,
-// ../foo,
-// .
-// ..
-const REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/
-
-const SLASH = '/'
-const KEY_IGNORE = typeof Symbol !== 'undefined'
- ? Symbol.for('node-ignore')
- /* istanbul ignore next */
- : 'node-ignore'
-
-const define = (object, key, value) =>
- Object.defineProperty(object, key, {value})
-
-const REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g
-
-// Sanitize the range of a regular expression
-// The cases are complicated, see test cases for details
-const sanitizeRange = range => range.replace(
- REGEX_REGEXP_RANGE,
- (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0)
- ? match
- // Invalid range (out of order) which is ok for gitignore rules but
- // fatal for JavaScript regular expression, so eliminate it.
- : ''
-)
-
-// > If the pattern ends with a slash,
-// > it is removed for the purpose of the following description,
-// > but it would only find a match with a directory.
-// > In other words, foo/ will match a directory foo and paths underneath it,
-// > but will not match a regular file or a symbolic link foo
-// > (this is consistent with the way how pathspec works in general in Git).
-// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'
-// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call
-// you could use option `mark: true` with `glob`
-
-// '`foo/`' should not continue with the '`..`'
-const REPLACERS = [
-
- // > Trailing spaces are ignored unless they are quoted with backslash ("\")
- [
- // (a\ ) -> (a )
- // (a ) -> (a)
- // (a \ ) -> (a )
- /\\?\s+$/,
- match => match.indexOf('\\') === 0
- ? ' '
- : ''
- ],
-
- // replace (\ ) with ' '
- [
- /\\\s/g,
- () => ' '
- ],
-
- // Escape metacharacters
- // which is written down by users but means special for regular expressions.
-
- // > There are 12 characters with special meanings:
- // > - the backslash \,
- // > - the caret ^,
- // > - the dollar sign $,
- // > - the period or dot .,
- // > - the vertical bar or pipe symbol |,
- // > - the question mark ?,
- // > - the asterisk or star *,
- // > - the plus sign +,
- // > - the opening parenthesis (,
- // > - the closing parenthesis ),
- // > - and the opening square bracket [,
- // > - the opening curly brace {,
- // > These special characters are often called "metacharacters".
- [
- /[\\^$.|*+(){]/g,
- match => `\\${match}`
- ],
-
- [
- // > [abc] matches any character inside the brackets
- // > (in this case a, b, or c);
- /\[([^\]/]*)($|\])/g,
- (match, p1, p2) => p2 === ']'
- ? `[${sanitizeRange(p1)}]`
- : `\\${match}`
- ],
-
- [
- // > a question mark (?) matches a single character
- /(?!\\)\?/g,
- () => '[^/]'
- ],
-
- // leading slash
- [
-
- // > A leading slash matches the beginning of the pathname.
- // > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
- // A leading slash matches the beginning of the pathname
- /^\//,
- () => '^'
- ],
-
- // replace special metacharacter slash after the leading slash
- [
- /\//g,
- () => '\\/'
- ],
-
- [
- // > A leading "**" followed by a slash means match in all directories.
- // > For example, "**/foo" matches file or directory "foo" anywhere,
- // > the same as pattern "foo".
- // > "**/foo/bar" matches file or directory "bar" anywhere that is directly
- // > under directory "foo".
- // Notice that the '*'s have been replaced as '\\*'
- /^\^*\\\*\\\*\\\//,
-
- // '**/foo' <-> 'foo'
- () => '^(?:.*\\/)?'
- ],
-
- // ending
- [
- // 'js' will not match 'js.'
- // 'ab' will not match 'abc'
- /(?:[^*])$/,
-
- // WTF!
- // https://git-scm.com/docs/gitignore
- // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1)
- // which re-fixes #24, #38
-
- // > If there is a separator at the end of the pattern then the pattern
- // > will only match directories, otherwise the pattern can match both
- // > files and directories.
-
- // 'js*' will not match 'a.js'
- // 'js/' will not match 'a.js'
- // 'js' will match 'a.js' and 'a.js/'
- match => /\/$/.test(match)
- // foo/ will not match 'foo'
- ? `${match}$`
- // foo matches 'foo' and 'foo/'
- : `${match}(?=$|\\/$)`
- ],
-
- // starting
- [
- // there will be no leading '/'
- // (which has been replaced by section "leading slash")
- // If starts with '**', adding a '^' to the regular expression also works
- /^(?=[^^])/,
- function startingReplacer () {
- // If has a slash `/` at the beginning or middle
- return !/\/(?!$)/.test(this)
- // > Prior to 2.22.1
- // > If the pattern does not contain a slash /,
- // > Git treats it as a shell glob pattern
- // Actually, if there is only a trailing slash,
- // git also treats it as a shell glob pattern
-
- // After 2.22.1 (compatible but clearer)
- // > If there is a separator at the beginning or middle (or both)
- // > of the pattern, then the pattern is relative to the directory
- // > level of the particular .gitignore file itself.
- // > Otherwise the pattern may also match at any level below
- // > the .gitignore level.
- ? '(?:^|\\/)'
-
- // > Otherwise, Git treats the pattern as a shell glob suitable for
- // > consumption by fnmatch(3)
- : '^'
- }
- ],
-
- // two globstars
- [
- // Use lookahead assertions so that we could match more than one `'/**'`
- /\\\/\\\*\\\*(?=\\\/|$)/g,
-
- // Zero, one or several directories
- // should not use '*', or it will be replaced by the next replacer
-
- // Check if it is not the last `'/**'`
- (_, index, str) => index + 6 < str.length
-
- // case: /**/
- // > A slash followed by two consecutive asterisks then a slash matches
- // > zero or more directories.
- // > For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on.
- // '/**/'
- ? '(?:\\/[^\\/]+)*'
-
- // case: /**
- // > A trailing `"/**"` matches everything inside.
-
- // #21: everything inside but it should not include the current folder
- : '\\/.+'
- ],
-
- // intermediate wildcards
- [
- // Never replace escaped '*'
- // ignore rule '\*' will match the path '*'
-
- // 'abc.*/' -> go
- // 'abc.*' -> skip this rule
- /(^|[^\\]+)\\\*(?=.+)/g,
-
- // '*.js' matches '.js'
- // '*.js' doesn't match 'abc'
- (_, p1) => `${p1}[^\\/]*`
- ],
-
- // trailing wildcard
- [
- /(\^|\\\/)?\\\*$/,
- (_, p1) => {
- const prefix = p1
- // '\^':
- // '/*' does not match ''
- // '/*' does not match everything
-
- // '\\\/':
- // 'abc/*' does not match 'abc/'
- ? `${p1}[^/]+`
-
- // 'a*' matches 'a'
- // 'a*' matches 'aa'
- : '[^/]*'
-
- return `${prefix}(?=$|\\/$)`
- }
- ],
-
- [
- // unescape
- /\\\\\\/g,
- () => '\\'
- ]
-]
-
-// A simple cache, because an ignore rule only has only one certain meaning
-const regexCache = Object.create(null)
-
-// @param {pattern}
-const makeRegex = (pattern, negative, ignorecase) => {
- const r = regexCache[pattern]
- if (r) {
- return r
- }
-
- // const replacers = negative
- // ? NEGATIVE_REPLACERS
- // : POSITIVE_REPLACERS
-
- const source = REPLACERS.reduce(
- (prev, current) => prev.replace(current[0], current[1].bind(pattern)),
- pattern
- )
-
- return regexCache[pattern] = ignorecase
- ? new RegExp(source, 'i')
- : new RegExp(source)
-}
-
-const isString = subject => typeof subject === 'string'
-
-// > A blank line matches no files, so it can serve as a separator for readability.
-const checkPattern = pattern => pattern
- && isString(pattern)
- && !REGEX_TEST_BLANK_LINE.test(pattern)
-
- // > A line starting with # serves as a comment.
- && pattern.indexOf('#') !== 0
-
-const splitPattern = pattern => pattern.split(REGEX_SPLITALL_CRLF)
-
-class IgnoreRule {
- constructor (
- origin,
- pattern,
- negative,
- regex
- ) {
- this.origin = origin
- this.pattern = pattern
- this.negative = negative
- this.regex = regex
- }
-}
-
-const createRule = (pattern, ignorecase) => {
- const origin = pattern
- let negative = false
-
- // > An optional prefix "!" which negates the pattern;
- if (pattern.indexOf('!') === 0) {
- negative = true
- pattern = pattern.substr(1)
- }
-
- pattern = pattern
- // > Put a backslash ("\") in front of the first "!" for patterns that
- // > begin with a literal "!", for example, `"\!important!.txt"`.
- .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!')
- // > Put a backslash ("\") in front of the first hash for patterns that
- // > begin with a hash.
- .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#')
-
- const regex = makeRegex(pattern, negative, ignorecase)
-
- return new IgnoreRule(
- origin,
- pattern,
- negative,
- regex
- )
-}
-
-const throwError = (message, Ctor) => {
- throw new Ctor(message)
-}
-
-const checkPath = (path, originalPath, doThrow) => {
- if (!isString(path)) {
- return doThrow(
- `path must be a string, but got \`${originalPath}\``,
- TypeError
- )
- }
-
- // We don't know if we should ignore '', so throw
- if (!path) {
- return doThrow(`path must not be empty`, TypeError)
- }
-
- // Check if it is a relative path
- if (checkPath.isNotRelative(path)) {
- const r = '`path.relative()`d'
- return doThrow(
- `path should be a ${r} string, but got "${originalPath}"`,
- RangeError
- )
- }
-
- return true
-}
-
-const isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path)
-
-checkPath.isNotRelative = isNotRelative
-checkPath.convert = p => p
-
-class Ignore {
- constructor ({
- ignorecase = true
- } = {}) {
- this._rules = []
- this._ignorecase = ignorecase
- define(this, KEY_IGNORE, true)
- this._initCache()
- }
-
- _initCache () {
- this._ignoreCache = Object.create(null)
- this._testCache = Object.create(null)
- }
-
- _addPattern (pattern) {
- // #32
- if (pattern && pattern[KEY_IGNORE]) {
- this._rules = this._rules.concat(pattern._rules)
- this._added = true
- return
- }
-
- if (checkPattern(pattern)) {
- const rule = createRule(pattern, this._ignorecase)
- this._added = true
- this._rules.push(rule)
- }
- }
-
- // @param {Array<string> | string | Ignore} pattern
- add (pattern) {
- this._added = false
-
- makeArray(
- isString(pattern)
- ? splitPattern(pattern)
- : pattern
- ).forEach(this._addPattern, this)
-
- // Some rules have just added to the ignore,
- // making the behavior changed.
- if (this._added) {
- this._initCache()
- }
-
- return this
- }
-
- // legacy
- addPattern (pattern) {
- return this.add(pattern)
- }
-
- // | ignored : unignored
- // negative | 0:0 | 0:1 | 1:0 | 1:1
- // -------- | ------- | ------- | ------- | --------
- // 0 | TEST | TEST | SKIP | X
- // 1 | TESTIF | SKIP | TEST | X
-
- // - SKIP: always skip
- // - TEST: always test
- // - TESTIF: only test if checkUnignored
- // - X: that never happen
-
- // @param {boolean} whether should check if the path is unignored,
- // setting `checkUnignored` to `false` could reduce additional
- // path matching.
-
- // @returns {TestResult} true if a file is ignored
- _testOne (path, checkUnignored) {
- let ignored = false
- let unignored = false
-
- this._rules.forEach(rule => {
- const {negative} = rule
- if (
- unignored === negative && ignored !== unignored
- || negative && !ignored && !unignored && !checkUnignored
- ) {
- return
- }
-
- const matched = rule.regex.test(path)
-
- if (matched) {
- ignored = !negative
- unignored = negative
- }
- })
-
- return {
- ignored,
- unignored
- }
- }
-
- // @returns {TestResult}
- _test (originalPath, cache, checkUnignored, slices) {
- const path = originalPath
- // Supports nullable path
- && checkPath.convert(originalPath)
-
- checkPath(path, originalPath, throwError)
-
- return this._t(path, cache, checkUnignored, slices)
- }
-
- _t (path, cache, checkUnignored, slices) {
- if (path in cache) {
- return cache[path]
- }
-
- if (!slices) {
- // path/to/a.js
- // ['path', 'to', 'a.js']
- slices = path.split(SLASH)
- }
-
- slices.pop()
-
- // If the path has no parent directory, just test it
- if (!slices.length) {
- return cache[path] = this._testOne(path, checkUnignored)
- }
-
- const parent = this._t(
- slices.join(SLASH) + SLASH,
- cache,
- checkUnignored,
- slices
- )
-
- // If the path contains a parent directory, check the parent first
- return cache[path] = parent.ignored
- // > It is not possible to re-include a file if a parent directory of
- // > that file is excluded.
- ? parent
- : this._testOne(path, checkUnignored)
- }
-
- ignores (path) {
- return this._test(path, this._ignoreCache, false).ignored
- }
-
- createFilter () {
- return path => !this.ignores(path)
- }
-
- filter (paths) {
- return makeArray(paths).filter(this.createFilter())
- }
-
- // @returns {TestResult}
- test (path) {
- return this._test(path, this._testCache, true)
- }
-}
-
-const factory = options => new Ignore(options)
-
-const returnFalse = () => false
-
-const isPathValid = path =>
- checkPath(path && checkPath.convert(path), path, returnFalse)
-
-factory.isPathValid = isPathValid
-
-// Fixes typescript
-factory.default = factory
-
-module.exports = factory
-
-// Windows
-// --------------------------------------------------------------
-/* istanbul ignore if */
-if (
- // Detect `process` so that it can run in browsers.
- typeof process !== 'undefined'
- && (
- process.env && process.env.IGNORE_TEST_WIN32
- || process.platform === 'win32'
- )
-) {
- /* eslint no-control-regex: "off" */
- const makePosix = str => /^\\\\\?\\/.test(str)
- || /["<>|\u0000-\u001F]+/u.test(str)
- ? str
- : str.replace(/\\/g, '/')
-
- checkPath.convert = makePosix
-
- // 'C:\\foo' <- 'C:\\foo' has been converted to 'C:/'
- // 'd:\\foo'
- const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i
- checkPath.isNotRelative = path =>
- REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path)
- || isNotRelative(path)
-}
diff --git a/assets/node_modules/ignore/legacy.js b/assets/node_modules/ignore/legacy.js
deleted file mode 100644
index 6ae2bb8..0000000
--- a/assets/node_modules/ignore/legacy.js
+++ /dev/null
@@ -1,476 +0,0 @@
-"use strict";
-
-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); } }
-
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-// A simple implementation of make-array
-function makeArray(subject) {
- return Array.isArray(subject) ? subject : [subject];
-}
-
-var REGEX_TEST_BLANK_LINE = /^\s+$/;
-var REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/;
-var REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/;
-var REGEX_SPLITALL_CRLF = /\r?\n/g; // /foo,
-// ./foo,
-// ../foo,
-// .
-// ..
-
-var REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/;
-var SLASH = '/';
-var KEY_IGNORE = typeof Symbol !== 'undefined' ? Symbol["for"]('node-ignore')
-/* istanbul ignore next */
-: 'node-ignore';
-
-var define = function define(object, key, value) {
- return Object.defineProperty(object, key, {
- value: value
- });
-};
-
-var REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g; // Sanitize the range of a regular expression
-// The cases are complicated, see test cases for details
-
-var sanitizeRange = function sanitizeRange(range) {
- return range.replace(REGEX_REGEXP_RANGE, function (match, from, to) {
- return from.charCodeAt(0) <= to.charCodeAt(0) ? match // Invalid range (out of order) which is ok for gitignore rules but
- // fatal for JavaScript regular expression, so eliminate it.
- : '';
- });
-}; // > If the pattern ends with a slash,
-// > it is removed for the purpose of the following description,
-// > but it would only find a match with a directory.
-// > In other words, foo/ will match a directory foo and paths underneath it,
-// > but will not match a regular file or a symbolic link foo
-// > (this is consistent with the way how pathspec works in general in Git).
-// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'
-// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call
-// you could use option `mark: true` with `glob`
-// '`foo/`' should not continue with the '`..`'
-
-
-var REPLACERS = [// > Trailing spaces are ignored unless they are quoted with backslash ("\")
-[// (a\ ) -> (a )
-// (a ) -> (a)
-// (a \ ) -> (a )
-/\\?\s+$/, function (match) {
- return match.indexOf('\\') === 0 ? ' ' : '';
-}], // replace (\ ) with ' '
-[/\\\s/g, function () {
- return ' ';
-}], // Escape metacharacters
-// which is written down by users but means special for regular expressions.
-// > There are 12 characters with special meanings:
-// > - the backslash \,
-// > - the caret ^,
-// > - the dollar sign $,
-// > - the period or dot .,
-// > - the vertical bar or pipe symbol |,
-// > - the question mark ?,
-// > - the asterisk or star *,
-// > - the plus sign +,
-// > - the opening parenthesis (,
-// > - the closing parenthesis ),
-// > - and the opening square bracket [,
-// > - the opening curly brace {,
-// > These special characters are often called "metacharacters".
-[/[\\^$.|*+(){]/g, function (match) {
- return "\\".concat(match);
-}], [// > [abc] matches any character inside the brackets
-// > (in this case a, b, or c);
-/\[([^\]/]*)($|\])/g, function (match, p1, p2) {
- return p2 === ']' ? "[".concat(sanitizeRange(p1), "]") : "\\".concat(match);
-}], [// > a question mark (?) matches a single character
-/(?!\\)\?/g, function () {
- return '[^/]';
-}], // leading slash
-[// > A leading slash matches the beginning of the pathname.
-// > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
-// A leading slash matches the beginning of the pathname
-/^\//, function () {
- return '^';
-}], // replace special metacharacter slash after the leading slash
-[/\//g, function () {
- return '\\/';
-}], [// > A leading "**" followed by a slash means match in all directories.
-// > For example, "**/foo" matches file or directory "foo" anywhere,
-// > the same as pattern "foo".
-// > "**/foo/bar" matches file or directory "bar" anywhere that is directly
-// > under directory "foo".
-// Notice that the '*'s have been replaced as '\\*'
-/^\^*\\\*\\\*\\\//, // '**/foo' <-> 'foo'
-function () {
- return '^(?:.*\\/)?';
-}], // ending
-[// 'js' will not match 'js.'
-// 'ab' will not match 'abc'
-/(?:[^*])$/, // WTF!
-// https://git-scm.com/docs/gitignore
-// changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1)
-// which re-fixes #24, #38
-// > If there is a separator at the end of the pattern then the pattern
-// > will only match directories, otherwise the pattern can match both
-// > files and directories.
-// 'js*' will not match 'a.js'
-// 'js/' will not match 'a.js'
-// 'js' will match 'a.js' and 'a.js/'
-function (match) {
- return /\/$/.test(match) // foo/ will not match 'foo'
- ? "".concat(match, "$") // foo matches 'foo' and 'foo/'
- : "".concat(match, "(?=$|\\/$)");
-}], // starting
-[// there will be no leading '/'
-// (which has been replaced by section "leading slash")
-// If starts with '**', adding a '^' to the regular expression also works
-/^(?=[^^])/, function startingReplacer() {
- // If has a slash `/` at the beginning or middle
- return !/\/(?!$)/.test(this) // > Prior to 2.22.1
- // > If the pattern does not contain a slash /,
- // > Git treats it as a shell glob pattern
- // Actually, if there is only a trailing slash,
- // git also treats it as a shell glob pattern
- // After 2.22.1 (compatible but clearer)
- // > If there is a separator at the beginning or middle (or both)
- // > of the pattern, then the pattern is relative to the directory
- // > level of the particular .gitignore file itself.
- // > Otherwise the pattern may also match at any level below
- // > the .gitignore level.
- ? '(?:^|\\/)' // > Otherwise, Git treats the pattern as a shell glob suitable for
- // > consumption by fnmatch(3)
- : '^';
-}], // two globstars
-[// Use lookahead assertions so that we could match more than one `'/**'`
-/\\\/\\\*\\\*(?=\\\/|$)/g, // Zero, one or several directories
-// should not use '*', or it will be replaced by the next replacer
-// Check if it is not the last `'/**'`
-function (_, index, str) {
- return index + 6 < str.length // case: /**/
- // > A slash followed by two consecutive asterisks then a slash matches
- // > zero or more directories.
- // > For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on.
- // '/**/'
- ? '(?:\\/[^\\/]+)*' // case: /**
- // > A trailing `"/**"` matches everything inside.
- // #21: everything inside but it should not include the current folder
- : '\\/.+';
-}], // intermediate wildcards
-[// Never replace escaped '*'
-// ignore rule '\*' will match the path '*'
-// 'abc.*/' -> go
-// 'abc.*' -> skip this rule
-/(^|[^\\]+)\\\*(?=.+)/g, // '*.js' matches '.js'
-// '*.js' doesn't match 'abc'
-function (_, p1) {
- return "".concat(p1, "[^\\/]*");
-}], // trailing wildcard
-[/(\^|\\\/)?\\\*$/, function (_, p1) {
- var prefix = p1 // '\^':
- // '/*' does not match ''
- // '/*' does not match everything
- // '\\\/':
- // 'abc/*' does not match 'abc/'
- ? "".concat(p1, "[^/]+") // 'a*' matches 'a'
- // 'a*' matches 'aa'
- : '[^/]*';
- return "".concat(prefix, "(?=$|\\/$)");
-}], [// unescape
-/\\\\\\/g, function () {
- return '\\';
-}]]; // A simple cache, because an ignore rule only has only one certain meaning
-
-var regexCache = Object.create(null); // @param {pattern}
-
-var makeRegex = function makeRegex(pattern, negative, ignorecase) {
- var r = regexCache[pattern];
-
- if (r) {
- return r;
- } // const replacers = negative
- // ? NEGATIVE_REPLACERS
- // : POSITIVE_REPLACERS
-
-
- var source = REPLACERS.reduce(function (prev, current) {
- return prev.replace(current[0], current[1].bind(pattern));
- }, pattern);
- return regexCache[pattern] = ignorecase ? new RegExp(source, 'i') : new RegExp(source);
-};
-
-var isString = function isString(subject) {
- return typeof subject === 'string';
-}; // > A blank line matches no files, so it can serve as a separator for readability.
-
-
-var checkPattern = function checkPattern(pattern) {
- return pattern && isString(pattern) && !REGEX_TEST_BLANK_LINE.test(pattern) // > A line starting with # serves as a comment.
- && pattern.indexOf('#') !== 0;
-};
-
-var splitPattern = function splitPattern(pattern) {
- return pattern.split(REGEX_SPLITALL_CRLF);
-};
-
-var IgnoreRule = function IgnoreRule(origin, pattern, negative, regex) {
- _classCallCheck(this, IgnoreRule);
-
- this.origin = origin;
- this.pattern = pattern;
- this.negative = negative;
- this.regex = regex;
-};
-
-var createRule = function createRule(pattern, ignorecase) {
- var origin = pattern;
- var negative = false; // > An optional prefix "!" which negates the pattern;
-
- if (pattern.indexOf('!') === 0) {
- negative = true;
- pattern = pattern.substr(1);
- }
-
- pattern = pattern // > Put a backslash ("\") in front of the first "!" for patterns that
- // > begin with a literal "!", for example, `"\!important!.txt"`.
- .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!') // > Put a backslash ("\") in front of the first hash for patterns that
- // > begin with a hash.
- .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#');
- var regex = makeRegex(pattern, negative, ignorecase);
- return new IgnoreRule(origin, pattern, negative, regex);
-};
-
-var throwError = function throwError(message, Ctor) {
- throw new Ctor(message);
-};
-
-var checkPath = function checkPath(path, originalPath, doThrow) {
- if (!isString(path)) {
- return doThrow("path must be a string, but got `".concat(originalPath, "`"), TypeError);
- } // We don't know if we should ignore '', so throw
-
-
- if (!path) {
- return doThrow("path must not be empty", TypeError);
- } // Check if it is a relative path
-
-
- if (checkPath.isNotRelative(path)) {
- var r = '`path.relative()`d';
- return doThrow("path should be a ".concat(r, " string, but got \"").concat(originalPath, "\""), RangeError);
- }
-
- return true;
-};
-
-var isNotRelative = function isNotRelative(path) {
- return REGEX_TEST_INVALID_PATH.test(path);
-};
-
-checkPath.isNotRelative = isNotRelative;
-
-checkPath.convert = function (p) {
- return p;
-};
-
-var Ignore =
-/*#__PURE__*/
-function () {
- function Ignore() {
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
- _ref$ignorecase = _ref.ignorecase,
- ignorecase = _ref$ignorecase === void 0 ? true : _ref$ignorecase;
-
- _classCallCheck(this, Ignore);
-
- this._rules = [];
- this._ignorecase = ignorecase;
- define(this, KEY_IGNORE, true);
-
- this._initCache();
- }
-
- _createClass(Ignore, [{
- key: "_initCache",
- value: function _initCache() {
- this._ignoreCache = Object.create(null);
- this._testCache = Object.create(null);
- }
- }, {
- key: "_addPattern",
- value: function _addPattern(pattern) {
- // #32
- if (pattern && pattern[KEY_IGNORE]) {
- this._rules = this._rules.concat(pattern._rules);
- this._added = true;
- return;
- }
-
- if (checkPattern(pattern)) {
- var rule = createRule(pattern, this._ignorecase);
- this._added = true;
-
- this._rules.push(rule);
- }
- } // @param {Array<string> | string | Ignore} pattern
-
- }, {
- key: "add",
- value: function add(pattern) {
- this._added = false;
- makeArray(isString(pattern) ? splitPattern(pattern) : pattern).forEach(this._addPattern, this); // Some rules have just added to the ignore,
- // making the behavior changed.
-
- if (this._added) {
- this._initCache();
- }
-
- return this;
- } // legacy
-
- }, {
- key: "addPattern",
- value: function addPattern(pattern) {
- return this.add(pattern);
- } // | ignored : unignored
- // negative | 0:0 | 0:1 | 1:0 | 1:1
- // -------- | ------- | ------- | ------- | --------
- // 0 | TEST | TEST | SKIP | X
- // 1 | TESTIF | SKIP | TEST | X
- // - SKIP: always skip
- // - TEST: always test
- // - TESTIF: only test if checkUnignored
- // - X: that never happen
- // @param {boolean} whether should check if the path is unignored,
- // setting `checkUnignored` to `false` could reduce additional
- // path matching.
- // @returns {TestResult} true if a file is ignored
-
- }, {
- key: "_testOne",
- value: function _testOne(path, checkUnignored) {
- var ignored = false;
- var unignored = false;
-
- this._rules.forEach(function (rule) {
- var negative = rule.negative;
-
- if (unignored === negative && ignored !== unignored || negative && !ignored && !unignored && !checkUnignored) {
- return;
- }
-
- var matched = rule.regex.test(path);
-
- if (matched) {
- ignored = !negative;
- unignored = negative;
- }
- });
-
- return {
- ignored: ignored,
- unignored: unignored
- };
- } // @returns {TestResult}
-
- }, {
- key: "_test",
- value: function _test(originalPath, cache, checkUnignored, slices) {
- var path = originalPath // Supports nullable path
- && checkPath.convert(originalPath);
- checkPath(path, originalPath, throwError);
- return this._t(path, cache, checkUnignored, slices);
- }
- }, {
- key: "_t",
- value: function _t(path, cache, checkUnignored, slices) {
- if (path in cache) {
- return cache[path];
- }
-
- if (!slices) {
- // path/to/a.js
- // ['path', 'to', 'a.js']
- slices = path.split(SLASH);
- }
-
- slices.pop(); // If the path has no parent directory, just test it
-
- if (!slices.length) {
- return cache[path] = this._testOne(path, checkUnignored);
- }
-
- var parent = this._t(slices.join(SLASH) + SLASH, cache, checkUnignored, slices); // If the path contains a parent directory, check the parent first
-
-
- return cache[path] = parent.ignored // > It is not possible to re-include a file if a parent directory of
- // > that file is excluded.
- ? parent : this._testOne(path, checkUnignored);
- }
- }, {
- key: "ignores",
- value: function ignores(path) {
- return this._test(path, this._ignoreCache, false).ignored;
- }
- }, {
- key: "createFilter",
- value: function createFilter() {
- var _this = this;
-
- return function (path) {
- return !_this.ignores(path);
- };
- }
- }, {
- key: "filter",
- value: function filter(paths) {
- return makeArray(paths).filter(this.createFilter());
- } // @returns {TestResult}
-
- }, {
- key: "test",
- value: function test(path) {
- return this._test(path, this._testCache, true);
- }
- }]);
-
- return Ignore;
-}();
-
-var factory = function factory(options) {
- return new Ignore(options);
-};
-
-var returnFalse = function returnFalse() {
- return false;
-};
-
-var isPathValid = function isPathValid(path) {
- return checkPath(path && checkPath.convert(path), path, returnFalse);
-};
-
-factory.isPathValid = isPathValid; // Fixes typescript
-
-factory["default"] = factory;
-module.exports = factory; // Windows
-// --------------------------------------------------------------
-
-/* istanbul ignore if */
-
-if ( // Detect `process` so that it can run in browsers.
-typeof process !== 'undefined' && (process.env && process.env.IGNORE_TEST_WIN32 || process.platform === 'win32')) {
- /* eslint no-control-regex: "off" */
- var makePosix = function makePosix(str) {
- return /^\\\\\?\\/.test(str) || /[\0-\x1F"<>\|]+/.test(str) ? str : str.replace(/\\/g, '/');
- };
-
- checkPath.convert = makePosix; // 'C:\\foo' <- 'C:\\foo' has been converted to 'C:/'
- // 'd:\\foo'
-
- var REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i;
-
- checkPath.isNotRelative = function (path) {
- return REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path) || isNotRelative(path);
- };
-}
diff --git a/assets/node_modules/ignore/package.json b/assets/node_modules/ignore/package.json
deleted file mode 100644
index 28763d4..0000000
--- a/assets/node_modules/ignore/package.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "name": "ignore",
- "version": "5.1.4",
- "description": "Ignore is a manager and filter for .gitignore rules, the one used by eslint, gitbook and many others.",
- "files": [
- "legacy.js",
- "index.js",
- "index.d.ts",
- "LICENSE-MIT"
- ],
- "scripts": {
- "prepublishOnly": "npm run build",
- "build": "babel -o legacy.js index.js",
- "test:lint": "eslint .",
- "test:tsc": "tsc ./test/ts/simple.ts --lib ES6",
- "test:ts": "node ./test/ts/simple.js",
- "test:git": "tap test/git-check-ignore.js",
- "test:ignore": "tap test/ignore.js",
- "test:others": "tap test/others.js",
- "test:cases": "tap test/*.js --coverage",
- "test:only": "npm run test:lint && npm run test:tsc && npm run test:ts && npm run test:cases",
- "test": "npm run test:only",
- "test:win32": "IGNORE_TEST_WIN32=1 npm run test",
- "posttest": "tap --coverage-report=html && codecov"
- },
- "repository": {
- "type": "git",
- "url": "git@github.com:kaelzhang/node-ignore.git"
- },
- "keywords": [
- "ignore",
- ".gitignore",
- "gitignore",
- "npmignore",
- "rules",
- "manager",
- "filter",
- "regexp",
- "regex",
- "fnmatch",
- "glob",
- "asterisks",
- "regular-expression"
- ],
- "author": "kael",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/kaelzhang/node-ignore/issues"
- },
- "devDependencies": {
- "@babel/cli": "^7.5.5",
- "@babel/core": "^7.5.5",
- "@babel/preset-env": "^7.5.5",
- "codecov": "^3.5.0",
- "debug": "^4.1.1",
- "eslint": "^6.1.0",
- "eslint-config-ostai": "^3.0.0",
- "eslint-plugin-import": "^2.18.2",
- "mkdirp": "^0.5.1",
- "pre-suf": "^1.1.1",
- "rimraf": "^2.7.0",
- "spawn-sync": "^2.0.0",
- "tap": "^14.6.1",
- "tmp": "0.1.0",
- "typescript": "^3.5.3"
- },
- "engines": {
- "node": ">= 4"
- }
-}
diff --git a/assets/node_modules/import-fresh/index.d.ts b/assets/node_modules/import-fresh/index.d.ts
deleted file mode 100644
index 708737b..0000000
--- a/assets/node_modules/import-fresh/index.d.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
-Import a module while bypassing the cache.
-
-@example
-```
-// foo.js
-let i = 0;
-module.exports = () => ++i;
-
-// index.js
-import importFresh = require('import-fresh');
-
-require('./foo')();
-//=> 1
-
-require('./foo')();
-//=> 2
-
-importFresh('./foo')();
-//=> 1
-
-importFresh('./foo')();
-//=> 1
-```
-*/
-declare function importFresh(moduleId: string): unknown;
-
-export = importFresh;
diff --git a/assets/node_modules/import-fresh/index.js b/assets/node_modules/import-fresh/index.js
deleted file mode 100644
index 425ed98..0000000
--- a/assets/node_modules/import-fresh/index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-'use strict';
-const path = require('path');
-const resolveFrom = require('resolve-from');
-const parentModule = require('parent-module');
-
-module.exports = moduleId => {
- if (typeof moduleId !== 'string') {
- throw new TypeError('Expected a string');
- }
-
- const parentPath = parentModule(__filename);
-
- const filePath = resolveFrom(path.dirname(parentPath), moduleId);
-
- const oldModule = require.cache[filePath];
- // Delete itself from module parent
- if (oldModule && oldModule.parent) {
- let i = oldModule.parent.children.length;
-
- while (i--) {
- if (oldModule.parent.children[i].id === filePath) {
- oldModule.parent.children.splice(i, 1);
- }
- }
- }
-
- delete require.cache[filePath]; // Delete module from cache
-
- const parent = require.cache[parentPath]; // If `filePath` and `parentPath` are the same, cache will already be deleted so we won't get a memory leak in next step
-
- return parent === undefined ? require(filePath) : parent.require(filePath); // In case cache doesn't have parent, fall back to normal require
-};
diff --git a/assets/node_modules/import-fresh/license b/assets/node_modules/import-fresh/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/import-fresh/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/import-fresh/node_modules/resolve-from/index.js b/assets/node_modules/import-fresh/node_modules/resolve-from/index.js
deleted file mode 100644
index d092447..0000000
--- a/assets/node_modules/import-fresh/node_modules/resolve-from/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-'use strict';
-const path = require('path');
-const Module = require('module');
-const fs = require('fs');
-
-const resolveFrom = (fromDir, moduleId, silent) => {
- if (typeof fromDir !== 'string') {
- throw new TypeError(`Expected \`fromDir\` to be of type \`string\`, got \`${typeof fromDir}\``);
- }
-
- if (typeof moduleId !== 'string') {
- throw new TypeError(`Expected \`moduleId\` to be of type \`string\`, got \`${typeof moduleId}\``);
- }
-
- try {
- fromDir = fs.realpathSync(fromDir);
- } catch (err) {
- if (err.code === 'ENOENT') {
- fromDir = path.resolve(fromDir);
- } else if (silent) {
- return null;
- } else {
- throw err;
- }
- }
-
- const fromFile = path.join(fromDir, 'noop.js');
-
- const resolveFileName = () => Module._resolveFilename(moduleId, {
- id: fromFile,
- filename: fromFile,
- paths: Module._nodeModulePaths(fromDir)
- });
-
- if (silent) {
- try {
- return resolveFileName();
- } catch (err) {
- return null;
- }
- }
-
- return resolveFileName();
-};
-
-module.exports = (fromDir, moduleId) => resolveFrom(fromDir, moduleId);
-module.exports.silent = (fromDir, moduleId) => resolveFrom(fromDir, moduleId, true);
diff --git a/assets/node_modules/import-fresh/node_modules/resolve-from/license b/assets/node_modules/import-fresh/node_modules/resolve-from/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/import-fresh/node_modules/resolve-from/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/import-fresh/node_modules/resolve-from/package.json b/assets/node_modules/import-fresh/node_modules/resolve-from/package.json
deleted file mode 100644
index 96bade5..0000000
--- a/assets/node_modules/import-fresh/node_modules/resolve-from/package.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "name": "resolve-from",
- "version": "4.0.0",
- "description": "Resolve the path of a module like `require.resolve()` but from a given path",
- "license": "MIT",
- "repository": "sindresorhus/resolve-from",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "require",
- "resolve",
- "path",
- "module",
- "from",
- "like",
- "import"
- ],
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- }
-}
diff --git a/assets/node_modules/import-fresh/node_modules/resolve-from/readme.md b/assets/node_modules/import-fresh/node_modules/resolve-from/readme.md
deleted file mode 100644
index e539f85..0000000
--- a/assets/node_modules/import-fresh/node_modules/resolve-from/readme.md
+++ /dev/null
@@ -1,72 +0,0 @@
-# resolve-from [![Build Status](https://travis-ci.org/sindresorhus/resolve-from.svg?branch=master)](https://travis-ci.org/sindresorhus/resolve-from)
-
-> Resolve the path of a module like [`require.resolve()`](https://nodejs.org/api/globals.html#globals_require_resolve) but from a given path
-
-
-## Install
-
-```
-$ npm install resolve-from
-```
-
-
-## Usage
-
-```js
-const resolveFrom = require('resolve-from');
-
-// There is a file at `./foo/bar.js`
-
-resolveFrom('foo', './bar');
-//=> '/Users/sindresorhus/dev/test/foo/bar.js'
-```
-
-
-## API
-
-### resolveFrom(fromDir, moduleId)
-
-Like `require()`, throws when the module can't be found.
-
-### resolveFrom.silent(fromDir, moduleId)
-
-Returns `null` instead of throwing when the module can't be found.
-
-#### fromDir
-
-Type: `string`
-
-Directory to resolve from.
-
-#### moduleId
-
-Type: `string`
-
-What you would use in `require()`.
-
-
-## Tip
-
-Create a partial using a bound function if you want to resolve from the same `fromDir` multiple times:
-
-```js
-const resolveFromFoo = resolveFrom.bind(null, 'foo');
-
-resolveFromFoo('./bar');
-resolveFromFoo('./baz');
-```
-
-
-## Related
-
-- [resolve-cwd](https://github.com/sindresorhus/resolve-cwd) - Resolve the path of a module from the current working directory
-- [import-from](https://github.com/sindresorhus/import-from) - Import a module from a given path
-- [import-cwd](https://github.com/sindresorhus/import-cwd) - Import a module from the current working directory
-- [resolve-pkg](https://github.com/sindresorhus/resolve-pkg) - Resolve the path of a package regardless of it having an entry point
-- [import-lazy](https://github.com/sindresorhus/import-lazy) - Import a module lazily
-- [resolve-global](https://github.com/sindresorhus/resolve-global) - Resolve the path of a globally installed module
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/import-fresh/package.json b/assets/node_modules/import-fresh/package.json
deleted file mode 100644
index 7d75ce4..0000000
--- a/assets/node_modules/import-fresh/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "import-fresh",
- "version": "3.2.1",
- "description": "Import a module while bypassing the cache",
- "license": "MIT",
- "repository": "sindresorhus/import-fresh",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "xo && ava && tsd",
- "heapdump": "node heapdump.js"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "require",
- "cache",
- "uncache",
- "uncached",
- "module",
- "fresh",
- "bypass"
- ],
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "devDependencies": {
- "ava": "^1.0.1",
- "heapdump": "^0.3.12",
- "tsd": "^0.7.3",
- "xo": "^0.23.0"
- }
-}
diff --git a/assets/node_modules/import-fresh/readme.md b/assets/node_modules/import-fresh/readme.md
deleted file mode 100644
index 0bfa1c9..0000000
--- a/assets/node_modules/import-fresh/readme.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# import-fresh [![Build Status](https://travis-ci.org/sindresorhus/import-fresh.svg?branch=master)](https://travis-ci.org/sindresorhus/import-fresh)
-
-> Import a module while bypassing the [cache](https://nodejs.org/api/modules.html#modules_caching)
-
-Useful for testing purposes when you need to freshly import a module.
-
-
-## Install
-
-```
-$ npm install import-fresh
-```
-
-
-## Usage
-
-```js
-// foo.js
-let i = 0;
-module.exports = () => ++i;
-```
-
-```js
-const importFresh = require('import-fresh');
-
-require('./foo')();
-//=> 1
-
-require('./foo')();
-//=> 2
-
-importFresh('./foo')();
-//=> 1
-
-importFresh('./foo')();
-//=> 1
-```
-
-
-## import-fresh for enterprise
-
-Available as part of the Tidelift Subscription.
-
-The maintainers of import-fresh and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-import-fresh?utm_source=npm-import-fresh&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
-
-
-## Related
-
-- [clear-module](https://github.com/sindresorhus/clear-module) - Clear a module from the import cache
-- [import-from](https://github.com/sindresorhus/import-from) - Import a module from a given path
-- [import-cwd](https://github.com/sindresorhus/import-cwd) - Import a module from the current working directory
-- [import-lazy](https://github.com/sindresorhus/import-lazy) - Import modules lazily
diff --git a/assets/node_modules/import-lazy/index.d.ts b/assets/node_modules/import-lazy/index.d.ts
deleted file mode 100644
index b842b41..0000000
--- a/assets/node_modules/import-lazy/index.d.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
-Import a module lazily.
-
-@example
-```
-// Pass in `require` or a custom import function
-import importLazy = require('import-lazy');
-const _ = importLazy(require)('lodash');
-
-// Instead of referring to its exported properties directly…
-_.isNumber(2);
-
-// …it's cached on consecutive calls
-_.isNumber('unicorn');
-
-// Works out of the box for functions and regular properties
-const stuff = importLazy(require)('./math-lib');
-console.log(stuff.sum(1, 2)); // => 3
-console.log(stuff.PHI); // => 1.618033
-```
-*/
-declare function importLazy<T = unknown>(
- importFn: (moduleId: string) => T
-): (moduleId: string) => T;
-
-export = importLazy;
diff --git a/assets/node_modules/import-lazy/index.js b/assets/node_modules/import-lazy/index.js
deleted file mode 100644
index 1d98e08..0000000
--- a/assets/node_modules/import-lazy/index.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict';
-const lazy = (importedModule, importFn, moduleId) =>
- importedModule === undefined ? importFn(moduleId) : importedModule;
-
-module.exports = importFn => {
- return moduleId => {
- let importedModule;
-
- const handler = {
- get: (target, property) => {
- importedModule = lazy(importedModule, importFn, moduleId);
- return Reflect.get(importedModule, property);
- },
- apply: (target, thisArgument, argumentsList) => {
- importedModule = lazy(importedModule, importFn, moduleId);
- return Reflect.apply(importedModule, thisArgument, argumentsList);
- },
- construct: (target, argumentsList) => {
- importedModule = lazy(importedModule, importFn, moduleId);
- return Reflect.construct(importedModule, argumentsList);
- }
- };
-
- // eslint-disable-next-line prefer-arrow-callback
- return new Proxy(function () {}, handler);
- };
-};
diff --git a/assets/node_modules/import-lazy/license b/assets/node_modules/import-lazy/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/import-lazy/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/import-lazy/package.json b/assets/node_modules/import-lazy/package.json
deleted file mode 100644
index 11de79a..0000000
--- a/assets/node_modules/import-lazy/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "import-lazy",
- "version": "4.0.0",
- "description": "Import a module lazily",
- "license": "MIT",
- "repository": "sindresorhus/import-lazy",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "import",
- "require",
- "load",
- "module",
- "modules",
- "lazy",
- "lazily",
- "defer",
- "deferred",
- "proxy",
- "proxies"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/import-lazy/readme.md b/assets/node_modules/import-lazy/readme.md
deleted file mode 100644
index 16bb362..0000000
--- a/assets/node_modules/import-lazy/readme.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# import-lazy [![Build Status](https://travis-ci.org/sindresorhus/import-lazy.svg?branch=master)](https://travis-ci.org/sindresorhus/import-lazy)
-
-> Import a module lazily
-
-
-## Install
-
-```
-$ npm install import-lazy
-```
-
-
-## Usage
-
-```js
-// Pass in `require` or a custom import function
-const importLazy = require('import-lazy')(require);
-const _ = importLazy('lodash');
-
-// Instead of referring to its exported properties directly…
-_.isNumber(2);
-
-// …it's cached on consecutive calls
-_.isNumber('unicorn');
-
-// Works out of the box for functions and regular properties
-const stuff = importLazy('./math-lib');
-console.log(stuff.sum(1, 2)); // => 3
-console.log(stuff.PHI); // => 1.618033
-```
-
-### Warning: Destructuring will cause it to fetch eagerly
-
-While you may be tempted to do leverage destructuring, like this:
-
-```js
-const {isNumber, isString} = importLazy('lodash');
-```
-
-Note that this will cause immediate property access, negating the lazy loading, and is equivalent to:
-
-```js
-import {isNumber, isString} from 'lodash';
-```
-
-## Related
-
-- [resolve-from](https://github.com/sindresorhus/resolve-from) - Resolve the path of a module from a given path
-- [import-from](https://github.com/sindresorhus/import-from) - Import a module from a given path
-- [resolve-pkg](https://github.com/sindresorhus/resolve-pkg) - Resolve the path of a package regardless of it having an entry point
-- [lazy-value](https://github.com/sindresorhus/lazy-value) - Create a lazily evaluated value
-- [define-lazy-prop](https://github.com/sindresorhus/define-lazy-prop) - Define a lazily evaluated property on an object
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/imurmurhash/README.md b/assets/node_modules/imurmurhash/README.md
deleted file mode 100644
index f35b20a..0000000
--- a/assets/node_modules/imurmurhash/README.md
+++ /dev/null
@@ -1,122 +0,0 @@
-iMurmurHash.js
-==============
-
-An incremental implementation of the MurmurHash3 (32-bit) hashing algorithm for JavaScript based on [Gary Court's implementation](https://github.com/garycourt/murmurhash-js) with [kazuyukitanimura's modifications](https://github.com/kazuyukitanimura/murmurhash-js).
-
-This version works significantly faster than the non-incremental version if you need to hash many small strings into a single hash, since string concatenation (to build the single string to pass the non-incremental version) is fairly costly. In one case tested, using the incremental version was about 50% faster than concatenating 5-10 strings and then hashing.
-
-Installation
-------------
-
-To use iMurmurHash in the browser, [download the latest version](https://raw.github.com/jensyt/imurmurhash-js/master/imurmurhash.min.js) and include it as a script on your site.
-
-```html
-<script type="text/javascript" src="/scripts/imurmurhash.min.js"></script>
-<script>
-// Your code here, access iMurmurHash using the global object MurmurHash3
-</script>
-```
-
----
-
-To use iMurmurHash in Node.js, install the module using NPM:
-
-```bash
-npm install imurmurhash
-```
-
-Then simply include it in your scripts:
-
-```javascript
-MurmurHash3 = require('imurmurhash');
-```
-
-Quick Example
--------------
-
-```javascript
-// Create the initial hash
-var hashState = MurmurHash3('string');
-
-// Incrementally add text
-hashState.hash('more strings');
-hashState.hash('even more strings');
-
-// All calls can be chained if desired
-hashState.hash('and').hash('some').hash('more');
-
-// Get a result
-hashState.result();
-// returns 0xe4ccfe6b
-```
-
-Functions
----------
-
-### MurmurHash3 ([string], [seed])
-Get a hash state object, optionally initialized with the given _string_ and _seed_. _Seed_ must be a positive integer if provided. Calling this function without the `new` keyword will return a cached state object that has been reset. This is safe to use as long as the object is only used from a single thread and no other hashes are created while operating on this one. If this constraint cannot be met, you can use `new` to create a new state object. For example:
-
-```javascript
-// Use the cached object, calling the function again will return the same
-// object (but reset, so the current state would be lost)
-hashState = MurmurHash3();
-...
-
-// Create a new object that can be safely used however you wish. Calling the
-// function again will simply return a new state object, and no state loss
-// will occur, at the cost of creating more objects.
-hashState = new MurmurHash3();
-```
-
-Both methods can be mixed however you like if you have different use cases.
-
----
-
-### MurmurHash3.prototype.hash (string)
-Incrementally add _string_ to the hash. This can be called as many times as you want for the hash state object, including after a call to `result()`. Returns `this` so calls can be chained.
-
----
-
-### MurmurHash3.prototype.result ()
-Get the result of the hash as a 32-bit positive integer. This performs the tail and finalizer portions of the algorithm, but does not store the result in the state object. This means that it is perfectly safe to get results and then continue adding strings via `hash`.
-
-```javascript
-// Do the whole string at once
-MurmurHash3('this is a test string').result();
-// 0x70529328
-
-// Do part of the string, get a result, then the other part
-var m = MurmurHash3('this is a');
-m.result();
-// 0xbfc4f834
-m.hash(' test string').result();
-// 0x70529328 (same as above)
-```
-
----
-
-### MurmurHash3.prototype.reset ([seed])
-Reset the state object for reuse, optionally using the given _seed_ (defaults to 0 like the constructor). Returns `this` so calls can be chained.
-
----
-
-License (MIT)
--------------
-Copyright (c) 2013 Gary Court, Jens Taylor
-
-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/assets/node_modules/imurmurhash/imurmurhash.js b/assets/node_modules/imurmurhash/imurmurhash.js
deleted file mode 100644
index e63146a..0000000
--- a/assets/node_modules/imurmurhash/imurmurhash.js
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- * @preserve
- * JS Implementation of incremental MurmurHash3 (r150) (as of May 10, 2013)
- *
- * @author <a href="mailto:jensyt@gmail.com">Jens Taylor</a>
- * @see http://github.com/homebrewing/brauhaus-diff
- * @author <a href="mailto:gary.court@gmail.com">Gary Court</a>
- * @see http://github.com/garycourt/murmurhash-js
- * @author <a href="mailto:aappleby@gmail.com">Austin Appleby</a>
- * @see http://sites.google.com/site/murmurhash/
- */
-(function(){
- var cache;
-
- // Call this function without `new` to use the cached object (good for
- // single-threaded environments), or with `new` to create a new object.
- //
- // @param {string} key A UTF-16 or ASCII string
- // @param {number} seed An optional positive integer
- // @return {object} A MurmurHash3 object for incremental hashing
- function MurmurHash3(key, seed) {
- var m = this instanceof MurmurHash3 ? this : cache;
- m.reset(seed)
- if (typeof key === 'string' && key.length > 0) {
- m.hash(key);
- }
-
- if (m !== this) {
- return m;
- }
- };
-
- // Incrementally add a string to this hash
- //
- // @param {string} key A UTF-16 or ASCII string
- // @return {object} this
- MurmurHash3.prototype.hash = function(key) {
- var h1, k1, i, top, len;
-
- len = key.length;
- this.len += len;
-
- k1 = this.k1;
- i = 0;
- switch (this.rem) {
- case 0: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) : 0;
- case 1: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 8 : 0;
- case 2: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 16 : 0;
- case 3:
- k1 ^= len > i ? (key.charCodeAt(i) & 0xff) << 24 : 0;
- k1 ^= len > i ? (key.charCodeAt(i++) & 0xff00) >> 8 : 0;
- }
-
- this.rem = (len + this.rem) & 3; // & 3 is same as % 4
- len -= this.rem;
- if (len > 0) {
- h1 = this.h1;
- while (1) {
- k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff;
- k1 = (k1 << 15) | (k1 >>> 17);
- k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff;
-
- h1 ^= k1;
- h1 = (h1 << 13) | (h1 >>> 19);
- h1 = (h1 * 5 + 0xe6546b64) & 0xffffffff;
-
- if (i >= len) {
- break;
- }
-
- k1 = ((key.charCodeAt(i++) & 0xffff)) ^
- ((key.charCodeAt(i++) & 0xffff) << 8) ^
- ((key.charCodeAt(i++) & 0xffff) << 16);
- top = key.charCodeAt(i++);
- k1 ^= ((top & 0xff) << 24) ^
- ((top & 0xff00) >> 8);
- }
-
- k1 = 0;
- switch (this.rem) {
- case 3: k1 ^= (key.charCodeAt(i + 2) & 0xffff) << 16;
- case 2: k1 ^= (key.charCodeAt(i + 1) & 0xffff) << 8;
- case 1: k1 ^= (key.charCodeAt(i) & 0xffff);
- }
-
- this.h1 = h1;
- }
-
- this.k1 = k1;
- return this;
- };
-
- // Get the result of this hash
- //
- // @return {number} The 32-bit hash
- MurmurHash3.prototype.result = function() {
- var k1, h1;
-
- k1 = this.k1;
- h1 = this.h1;
-
- if (k1 > 0) {
- k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff;
- k1 = (k1 << 15) | (k1 >>> 17);
- k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff;
- h1 ^= k1;
- }
-
- h1 ^= this.len;
-
- h1 ^= h1 >>> 16;
- h1 = (h1 * 0xca6b + (h1 & 0xffff) * 0x85eb0000) & 0xffffffff;
- h1 ^= h1 >>> 13;
- h1 = (h1 * 0xae35 + (h1 & 0xffff) * 0xc2b20000) & 0xffffffff;
- h1 ^= h1 >>> 16;
-
- return h1 >>> 0;
- };
-
- // Reset the hash object for reuse
- //
- // @param {number} seed An optional positive integer
- MurmurHash3.prototype.reset = function(seed) {
- this.h1 = typeof seed === 'number' ? seed : 0;
- this.rem = this.k1 = this.len = 0;
- return this;
- };
-
- // A cached object to use. This can be safely used if you're in a single-
- // threaded environment, otherwise you need to create new hashes to use.
- cache = new MurmurHash3();
-
- if (typeof(module) != 'undefined') {
- module.exports = MurmurHash3;
- } else {
- this.MurmurHash3 = MurmurHash3;
- }
-}());
diff --git a/assets/node_modules/imurmurhash/imurmurhash.min.js b/assets/node_modules/imurmurhash/imurmurhash.min.js
deleted file mode 100644
index dc0ee88..0000000
--- a/assets/node_modules/imurmurhash/imurmurhash.min.js
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * @preserve
- * JS Implementation of incremental MurmurHash3 (r150) (as of May 10, 2013)
- *
- * @author <a href="mailto:jensyt@gmail.com">Jens Taylor</a>
- * @see http://github.com/homebrewing/brauhaus-diff
- * @author <a href="mailto:gary.court@gmail.com">Gary Court</a>
- * @see http://github.com/garycourt/murmurhash-js
- * @author <a href="mailto:aappleby@gmail.com">Austin Appleby</a>
- * @see http://sites.google.com/site/murmurhash/
- */
-!function(){function t(h,r){var s=this instanceof t?this:e;return s.reset(r),"string"==typeof h&&h.length>0&&s.hash(h),s!==this?s:void 0}var e;t.prototype.hash=function(t){var e,h,r,s,i;switch(i=t.length,this.len+=i,h=this.k1,r=0,this.rem){case 0:h^=i>r?65535&t.charCodeAt(r++):0;case 1:h^=i>r?(65535&t.charCodeAt(r++))<<8:0;case 2:h^=i>r?(65535&t.charCodeAt(r++))<<16:0;case 3:h^=i>r?(255&t.charCodeAt(r))<<24:0,h^=i>r?(65280&t.charCodeAt(r++))>>8:0}if(this.rem=3&i+this.rem,i-=this.rem,i>0){for(e=this.h1;;){if(h=4294967295&11601*h+3432906752*(65535&h),h=h<<15|h>>>17,h=4294967295&13715*h+461832192*(65535&h),e^=h,e=e<<13|e>>>19,e=4294967295&5*e+3864292196,r>=i)break;h=65535&t.charCodeAt(r++)^(65535&t.charCodeAt(r++))<<8^(65535&t.charCodeAt(r++))<<16,s=t.charCodeAt(r++),h^=(255&s)<<24^(65280&s)>>8}switch(h=0,this.rem){case 3:h^=(65535&t.charCodeAt(r+2))<<16;case 2:h^=(65535&t.charCodeAt(r+1))<<8;case 1:h^=65535&t.charCodeAt(r)}this.h1=e}return this.k1=h,this},t.prototype.result=function(){var t,e;return t=this.k1,e=this.h1,t>0&&(t=4294967295&11601*t+3432906752*(65535&t),t=t<<15|t>>>17,t=4294967295&13715*t+461832192*(65535&t),e^=t),e^=this.len,e^=e>>>16,e=4294967295&51819*e+2246770688*(65535&e),e^=e>>>13,e=4294967295&44597*e+3266445312*(65535&e),e^=e>>>16,e>>>0},t.prototype.reset=function(t){return this.h1="number"==typeof t?t:0,this.rem=this.k1=this.len=0,this},e=new t,"undefined"!=typeof module?module.exports=t:this.MurmurHash3=t}(); \ No newline at end of file
diff --git a/assets/node_modules/imurmurhash/package.json b/assets/node_modules/imurmurhash/package.json
deleted file mode 100644
index 8a93edb..0000000
--- a/assets/node_modules/imurmurhash/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "imurmurhash",
- "version": "0.1.4",
- "description": "An incremental implementation of MurmurHash3",
- "homepage": "https://github.com/jensyt/imurmurhash-js",
- "main": "imurmurhash.js",
- "files": [
- "imurmurhash.js",
- "imurmurhash.min.js",
- "package.json",
- "README.md"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/jensyt/imurmurhash-js"
- },
- "bugs": {
- "url": "https://github.com/jensyt/imurmurhash-js/issues"
- },
- "keywords": [
- "murmur",
- "murmurhash",
- "murmurhash3",
- "hash",
- "incremental"
- ],
- "author": {
- "name": "Jens Taylor",
- "email": "jensyt@gmail.com",
- "url": "https://github.com/homebrewing"
- },
- "license": "MIT",
- "dependencies": {
- },
- "devDependencies": {
- },
- "engines": {
- "node": ">=0.8.19"
- }
-}
diff --git a/assets/node_modules/indent-string/index.d.ts b/assets/node_modules/indent-string/index.d.ts
deleted file mode 100644
index 1185231..0000000
--- a/assets/node_modules/indent-string/index.d.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-declare namespace indentString {
- interface Options {
- /**
- The string to use for the indent.
-
- @default ' '
- */
- readonly indent?: string;
-
- /**
- Also indent empty lines.
-
- @default false
- */
- readonly includeEmptyLines?: boolean;
- }
-}
-
-/**
-Indent each line in a string.
-
-@param string - The string to indent.
-@param count - How many times you want `options.indent` repeated. Default: `1`.
-
-@example
-```
-import indentString = require('indent-string');
-
-indentString('Unicorns\nRainbows', 4);
-//=> ' Unicorns\n Rainbows'
-
-indentString('Unicorns\nRainbows', 4, {indent: '♥'});
-//=> '♥♥♥♥Unicorns\n♥♥♥♥Rainbows'
-```
-*/
-declare function indentString(
- string: string,
- count?: number,
- options?: indentString.Options
-): string;
-
-export = indentString;
diff --git a/assets/node_modules/indent-string/index.js b/assets/node_modules/indent-string/index.js
deleted file mode 100644
index e1ab804..0000000
--- a/assets/node_modules/indent-string/index.js
+++ /dev/null
@@ -1,35 +0,0 @@
-'use strict';
-
-module.exports = (string, count = 1, options) => {
- options = {
- indent: ' ',
- includeEmptyLines: false,
- ...options
- };
-
- if (typeof string !== 'string') {
- throw new TypeError(
- `Expected \`input\` to be a \`string\`, got \`${typeof string}\``
- );
- }
-
- if (typeof count !== 'number') {
- throw new TypeError(
- `Expected \`count\` to be a \`number\`, got \`${typeof count}\``
- );
- }
-
- if (typeof options.indent !== 'string') {
- throw new TypeError(
- `Expected \`options.indent\` to be a \`string\`, got \`${typeof options.indent}\``
- );
- }
-
- if (count === 0) {
- return string;
- }
-
- const regex = options.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm;
-
- return string.replace(regex, options.indent.repeat(count));
-};
diff --git a/assets/node_modules/indent-string/license b/assets/node_modules/indent-string/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/indent-string/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/indent-string/package.json b/assets/node_modules/indent-string/package.json
deleted file mode 100644
index 497bb83..0000000
--- a/assets/node_modules/indent-string/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "indent-string",
- "version": "4.0.0",
- "description": "Indent each line in a string",
- "license": "MIT",
- "repository": "sindresorhus/indent-string",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "indent",
- "string",
- "pad",
- "align",
- "line",
- "text",
- "each",
- "every"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/indent-string/readme.md b/assets/node_modules/indent-string/readme.md
deleted file mode 100644
index 49967de..0000000
--- a/assets/node_modules/indent-string/readme.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# indent-string [![Build Status](https://travis-ci.org/sindresorhus/indent-string.svg?branch=master)](https://travis-ci.org/sindresorhus/indent-string)
-
-> Indent each line in a string
-
-
-## Install
-
-```
-$ npm install indent-string
-```
-
-
-## Usage
-
-```js
-const indentString = require('indent-string');
-
-indentString('Unicorns\nRainbows', 4);
-//=> ' Unicorns\n Rainbows'
-
-indentString('Unicorns\nRainbows', 4, {indent: '♥'});
-//=> '♥♥♥♥Unicorns\n♥♥♥♥Rainbows'
-```
-
-
-## API
-
-### indentString(string, [count], [options])
-
-#### string
-
-Type: `string`
-
-The string to indent.
-
-#### count
-
-Type: `number`<br>
-Default: `1`
-
-How many times you want `options.indent` repeated.
-
-#### options
-
-Type: `object`
-
-##### indent
-
-Type: `string`<br>
-Default: `' '`
-
-The string to use for the indent.
-
-##### includeEmptyLines
-
-Type: `boolean`<br>
-Default: `false`
-
-Also indent empty lines.
-
-
-## Related
-
-- [indent-string-cli](https://github.com/sindresorhus/indent-string-cli) - CLI for this module
-- [strip-indent](https://github.com/sindresorhus/strip-indent) - Strip leading whitespace from every line in a string
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/indexes-of/.npmignore b/assets/node_modules/indexes-of/.npmignore
deleted file mode 100644
index c2658d7..0000000
--- a/assets/node_modules/indexes-of/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
diff --git a/assets/node_modules/indexes-of/LICENSE b/assets/node_modules/indexes-of/LICENSE
deleted file mode 100644
index b799ec0..0000000
--- a/assets/node_modules/indexes-of/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2013 Dominic Tarr
-
-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/assets/node_modules/indexes-of/README.md b/assets/node_modules/indexes-of/README.md
deleted file mode 100644
index 90a3741..0000000
--- a/assets/node_modules/indexes-of/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# indexes-of
-
-like Array/String#indexOf but return all the indexes in an array.
-
-``` js
-var indexesOf = require('indexes-of')
-
-var twosIndexes = indexesOf([1, 2, 3, 4, 5, 4, 3, 2, 1], 2)
-
-console.log(twosIndexes)
-
-// [1, 7]
-
-```
-
-# Haiku
-
-* A 5 line module.
-* But the tests are 40 lines.
-* npm publish.
-
-## License
-
-MIT
diff --git a/assets/node_modules/indexes-of/index.js b/assets/node_modules/indexes-of/index.js
deleted file mode 100644
index fda337d..0000000
--- a/assets/node_modules/indexes-of/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports = function (ary, item) {
- var i = -1, indexes = []
- while((i = ary.indexOf(item, i + 1)) !== -1)
- indexes.push(i)
- return indexes
-}
diff --git a/assets/node_modules/indexes-of/package.json b/assets/node_modules/indexes-of/package.json
deleted file mode 100644
index e6346cf..0000000
--- a/assets/node_modules/indexes-of/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "indexes-of",
- "description": "line String/Array#indexOf but return all the indexes in an array",
- "version": "1.0.1",
- "homepage": "https://github.com/dominictarr/indexes-of",
- "repository": {
- "type": "git",
- "url": "git://github.com/dominictarr/indexes-of.git"
- },
- "scripts": {
- "test": "node test.js"
- },
- "author": "Dominic Tarr <dominic.tarr@gmail.com> (dominictarr.com)",
- "license": "MIT",
- "devDependencies": {
- "tape": "~2.1.0"
- }
-}
diff --git a/assets/node_modules/indexes-of/test.js b/assets/node_modules/indexes-of/test.js
deleted file mode 100644
index b6103d5..0000000
--- a/assets/node_modules/indexes-of/test.js
+++ /dev/null
@@ -1,38 +0,0 @@
-
-var tape = require('tape')
-
-var indexes = require('./')
-
-tape('indexes of - 2 matches', function (t) {
- var x = indexes([1,2,3, 2,4,5,9,8,0], 2)
- t.deepEqual(x, [1,3])
- t.end()
-})
-
-
-tape('indexes of - 1 match', function (t) {
- var x = indexes([1,2,3, 2,4,5,9,8,0], 2)
- t.deepEqual(x, [1,3])
- t.end()
-})
-
-
-tape('indexes of - empty', function (t) {
- var x = indexes([1,2,3, 2,4,5,9,8,0], 24)
- t.deepEqual(x, [])
- t.end()
-})
-
-
-tape('indexes of - empty', function (t) {
- var x = indexes([8,8,8,8,8,8,8], 8)
- t.deepEqual(x, [0,1,2,3,4,5,6])
- t.end()
-})
-
-
-tape('indexes of - string', function (t) {
- var x = indexes('foo bar baz foo', 'foo')
- t.deepEqual(x, [0, 12])
- t.end()
-})
diff --git a/assets/node_modules/inflight/LICENSE b/assets/node_modules/inflight/LICENSE
deleted file mode 100644
index 05eeeb8..0000000
--- a/assets/node_modules/inflight/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter
-
-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/assets/node_modules/inflight/README.md b/assets/node_modules/inflight/README.md
deleted file mode 100644
index 6dc8929..0000000
--- a/assets/node_modules/inflight/README.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# inflight
-
-Add callbacks to requests in flight to avoid async duplication
-
-## USAGE
-
-```javascript
-var inflight = require('inflight')
-
-// some request that does some stuff
-function req(key, callback) {
- // key is any random string. like a url or filename or whatever.
- //
- // will return either a falsey value, indicating that the
- // request for this key is already in flight, or a new callback
- // which when called will call all callbacks passed to inflightk
- // with the same key
- callback = inflight(key, callback)
-
- // If we got a falsey value back, then there's already a req going
- if (!callback) return
-
- // this is where you'd fetch the url or whatever
- // callback is also once()-ified, so it can safely be assigned
- // to multiple events etc. First call wins.
- setTimeout(function() {
- callback(null, key)
- }, 100)
-}
-
-// only assigns a single setTimeout
-// when it dings, all cbs get called
-req('foo', cb1)
-req('foo', cb2)
-req('foo', cb3)
-req('foo', cb4)
-```
diff --git a/assets/node_modules/inflight/inflight.js b/assets/node_modules/inflight/inflight.js
deleted file mode 100644
index 48202b3..0000000
--- a/assets/node_modules/inflight/inflight.js
+++ /dev/null
@@ -1,54 +0,0 @@
-var wrappy = require('wrappy')
-var reqs = Object.create(null)
-var once = require('once')
-
-module.exports = wrappy(inflight)
-
-function inflight (key, cb) {
- if (reqs[key]) {
- reqs[key].push(cb)
- return null
- } else {
- reqs[key] = [cb]
- return makeres(key)
- }
-}
-
-function makeres (key) {
- return once(function RES () {
- var cbs = reqs[key]
- var len = cbs.length
- var args = slice(arguments)
-
- // XXX It's somewhat ambiguous whether a new callback added in this
- // pass should be queued for later execution if something in the
- // list of callbacks throws, or if it should just be discarded.
- // However, it's such an edge case that it hardly matters, and either
- // choice is likely as surprising as the other.
- // As it happens, we do go ahead and schedule it for later execution.
- try {
- for (var i = 0; i < len; i++) {
- cbs[i].apply(null, args)
- }
- } finally {
- if (cbs.length > len) {
- // added more in the interim.
- // de-zalgo, just in case, but don't call again.
- cbs.splice(0, len)
- process.nextTick(function () {
- RES.apply(null, args)
- })
- } else {
- delete reqs[key]
- }
- }
- })
-}
-
-function slice (args) {
- var length = args.length
- var array = []
-
- for (var i = 0; i < length; i++) array[i] = args[i]
- return array
-}
diff --git a/assets/node_modules/inflight/package.json b/assets/node_modules/inflight/package.json
deleted file mode 100644
index 6084d35..0000000
--- a/assets/node_modules/inflight/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "name": "inflight",
- "version": "1.0.6",
- "description": "Add callbacks to requests in flight to avoid async duplication",
- "main": "inflight.js",
- "files": [
- "inflight.js"
- ],
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- },
- "devDependencies": {
- "tap": "^7.1.2"
- },
- "scripts": {
- "test": "tap test.js --100"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/npm/inflight.git"
- },
- "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
- "bugs": {
- "url": "https://github.com/isaacs/inflight/issues"
- },
- "homepage": "https://github.com/isaacs/inflight",
- "license": "ISC"
-}
diff --git a/assets/node_modules/inherits/LICENSE b/assets/node_modules/inherits/LICENSE
deleted file mode 100644
index dea3013..0000000
--- a/assets/node_modules/inherits/LICENSE
+++ /dev/null
@@ -1,16 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter
-
-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/assets/node_modules/inherits/README.md b/assets/node_modules/inherits/README.md
deleted file mode 100644
index b1c5665..0000000
--- a/assets/node_modules/inherits/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
-Browser-friendly inheritance fully compatible with standard node.js
-[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).
-
-This package exports standard `inherits` from node.js `util` module in
-node environment, but also provides alternative browser-friendly
-implementation through [browser
-field](https://gist.github.com/shtylman/4339901). Alternative
-implementation is a literal copy of standard one located in standalone
-module to avoid requiring of `util`. It also has a shim for old
-browsers with no `Object.create` support.
-
-While keeping you sure you are using standard `inherits`
-implementation in node.js environment, it allows bundlers such as
-[browserify](https://github.com/substack/node-browserify) to not
-include full `util` package to your client code if all you need is
-just `inherits` function. It worth, because browser shim for `util`
-package is large and `inherits` is often the single function you need
-from it.
-
-It's recommended to use this package instead of
-`require('util').inherits` for any code that has chances to be used
-not only in node.js but in browser too.
-
-## usage
-
-```js
-var inherits = require('inherits');
-// then use exactly as the standard one
-```
-
-## note on version ~1.0
-
-Version ~1.0 had completely different motivation and is not compatible
-neither with 2.0 nor with standard node.js `inherits`.
-
-If you are using version ~1.0 and planning to switch to ~2.0, be
-careful:
-
-* new version uses `super_` instead of `super` for referencing
- superclass
-* new version overwrites current prototype while old one preserves any
- existing fields on it
diff --git a/assets/node_modules/inherits/inherits.js b/assets/node_modules/inherits/inherits.js
deleted file mode 100644
index f71f2d9..0000000
--- a/assets/node_modules/inherits/inherits.js
+++ /dev/null
@@ -1,9 +0,0 @@
-try {
- var util = require('util');
- /* istanbul ignore next */
- if (typeof util.inherits !== 'function') throw '';
- module.exports = util.inherits;
-} catch (e) {
- /* istanbul ignore next */
- module.exports = require('./inherits_browser.js');
-}
diff --git a/assets/node_modules/inherits/inherits_browser.js b/assets/node_modules/inherits/inherits_browser.js
deleted file mode 100644
index 86bbb3d..0000000
--- a/assets/node_modules/inherits/inherits_browser.js
+++ /dev/null
@@ -1,27 +0,0 @@
-if (typeof Object.create === 'function') {
- // implementation from standard node.js 'util' module
- module.exports = function inherits(ctor, superCtor) {
- if (superCtor) {
- ctor.super_ = superCtor
- ctor.prototype = Object.create(superCtor.prototype, {
- constructor: {
- value: ctor,
- enumerable: false,
- writable: true,
- configurable: true
- }
- })
- }
- };
-} else {
- // old school shim for old browsers
- module.exports = function inherits(ctor, superCtor) {
- if (superCtor) {
- ctor.super_ = superCtor
- var TempCtor = function () {}
- TempCtor.prototype = superCtor.prototype
- ctor.prototype = new TempCtor()
- ctor.prototype.constructor = ctor
- }
- }
-}
diff --git a/assets/node_modules/inherits/package.json b/assets/node_modules/inherits/package.json
deleted file mode 100644
index 37b4366..0000000
--- a/assets/node_modules/inherits/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "name": "inherits",
- "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
- "version": "2.0.4",
- "keywords": [
- "inheritance",
- "class",
- "klass",
- "oop",
- "object-oriented",
- "inherits",
- "browser",
- "browserify"
- ],
- "main": "./inherits.js",
- "browser": "./inherits_browser.js",
- "repository": "git://github.com/isaacs/inherits",
- "license": "ISC",
- "scripts": {
- "test": "tap"
- },
- "devDependencies": {
- "tap": "^14.2.4"
- },
- "files": [
- "inherits.js",
- "inherits_browser.js"
- ]
-}
diff --git a/assets/node_modules/ini/LICENSE b/assets/node_modules/ini/LICENSE
deleted file mode 100644
index 19129e3..0000000
--- a/assets/node_modules/ini/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-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/assets/node_modules/ini/README.md b/assets/node_modules/ini/README.md
deleted file mode 100644
index 33df258..0000000
--- a/assets/node_modules/ini/README.md
+++ /dev/null
@@ -1,102 +0,0 @@
-An ini format parser and serializer for node.
-
-Sections are treated as nested objects. Items before the first
-heading are saved on the object directly.
-
-## Usage
-
-Consider an ini-file `config.ini` that looks like this:
-
- ; this comment is being ignored
- scope = global
-
- [database]
- user = dbuser
- password = dbpassword
- database = use_this_database
-
- [paths.default]
- datadir = /var/lib/data
- array[] = first value
- array[] = second value
- array[] = third value
-
-You can read, manipulate and write the ini-file like so:
-
- var fs = require('fs')
- , ini = require('ini')
-
- var config = ini.parse(fs.readFileSync('./config.ini', 'utf-8'))
-
- config.scope = 'local'
- config.database.database = 'use_another_database'
- config.paths.default.tmpdir = '/tmp'
- delete config.paths.default.datadir
- config.paths.default.array.push('fourth value')
-
- fs.writeFileSync('./config_modified.ini', ini.stringify(config, { section: 'section' }))
-
-This will result in a file called `config_modified.ini` being written
-to the filesystem with the following content:
-
- [section]
- scope=local
- [section.database]
- user=dbuser
- password=dbpassword
- database=use_another_database
- [section.paths.default]
- tmpdir=/tmp
- array[]=first value
- array[]=second value
- array[]=third value
- array[]=fourth value
-
-
-## API
-
-### decode(inistring)
-
-Decode the ini-style formatted `inistring` into a nested object.
-
-### parse(inistring)
-
-Alias for `decode(inistring)`
-
-### encode(object, [options])
-
-Encode the object `object` into an ini-style formatted string. If the
-optional parameter `section` is given, then all top-level properties
-of the object are put into this section and the `section`-string is
-prepended to all sub-sections, see the usage example above.
-
-The `options` object may contain the following:
-
-* `section` A string which will be the first `section` in the encoded
- ini data. Defaults to none.
-* `whitespace` Boolean to specify whether to put whitespace around the
- `=` character. By default, whitespace is omitted, to be friendly to
- some persnickety old parsers that don't tolerate it well. But some
- find that it's more human-readable and pretty with the whitespace.
-
-For backwards compatibility reasons, if a `string` options is passed
-in, then it is assumed to be the `section` value.
-
-### stringify(object, [options])
-
-Alias for `encode(object, [options])`
-
-### safe(val)
-
-Escapes the string `val` such that it is safe to be used as a key or
-value in an ini-file. Basically escapes quotes. For example
-
- ini.safe('"unsafe string"')
-
-would result in
-
- "\"unsafe string\""
-
-### unsafe(val)
-
-Unescapes the string `val`
diff --git a/assets/node_modules/ini/ini.js b/assets/node_modules/ini/ini.js
deleted file mode 100644
index 590195d..0000000
--- a/assets/node_modules/ini/ini.js
+++ /dev/null
@@ -1,194 +0,0 @@
-exports.parse = exports.decode = decode
-
-exports.stringify = exports.encode = encode
-
-exports.safe = safe
-exports.unsafe = unsafe
-
-var eol = typeof process !== 'undefined' &&
- process.platform === 'win32' ? '\r\n' : '\n'
-
-function encode (obj, opt) {
- var children = []
- var out = ''
-
- if (typeof opt === 'string') {
- opt = {
- section: opt,
- whitespace: false
- }
- } else {
- opt = opt || {}
- opt.whitespace = opt.whitespace === true
- }
-
- var separator = opt.whitespace ? ' = ' : '='
-
- Object.keys(obj).forEach(function (k, _, __) {
- var val = obj[k]
- if (val && Array.isArray(val)) {
- val.forEach(function (item) {
- out += safe(k + '[]') + separator + safe(item) + '\n'
- })
- } else if (val && typeof val === 'object') {
- children.push(k)
- } else {
- out += safe(k) + separator + safe(val) + eol
- }
- })
-
- if (opt.section && out.length) {
- out = '[' + safe(opt.section) + ']' + eol + out
- }
-
- children.forEach(function (k, _, __) {
- var nk = dotSplit(k).join('\\.')
- var section = (opt.section ? opt.section + '.' : '') + nk
- var child = encode(obj[k], {
- section: section,
- whitespace: opt.whitespace
- })
- if (out.length && child.length) {
- out += eol
- }
- out += child
- })
-
- return out
-}
-
-function dotSplit (str) {
- return str.replace(/\1/g, '\u0002LITERAL\\1LITERAL\u0002')
- .replace(/\\\./g, '\u0001')
- .split(/\./).map(function (part) {
- return part.replace(/\1/g, '\\.')
- .replace(/\2LITERAL\\1LITERAL\2/g, '\u0001')
- })
-}
-
-function decode (str) {
- var out = {}
- var p = out
- var section = null
- // section |key = value
- var re = /^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i
- var lines = str.split(/[\r\n]+/g)
-
- lines.forEach(function (line, _, __) {
- if (!line || line.match(/^\s*[;#]/)) return
- var match = line.match(re)
- if (!match) return
- if (match[1] !== undefined) {
- section = unsafe(match[1])
- p = out[section] = out[section] || {}
- return
- }
- var key = unsafe(match[2])
- var value = match[3] ? unsafe(match[4]) : true
- switch (value) {
- case 'true':
- case 'false':
- case 'null': value = JSON.parse(value)
- }
-
- // Convert keys with '[]' suffix to an array
- if (key.length > 2 && key.slice(-2) === '[]') {
- key = key.substring(0, key.length - 2)
- if (!p[key]) {
- p[key] = []
- } else if (!Array.isArray(p[key])) {
- p[key] = [p[key]]
- }
- }
-
- // safeguard against resetting a previously defined
- // array by accidentally forgetting the brackets
- if (Array.isArray(p[key])) {
- p[key].push(value)
- } else {
- p[key] = value
- }
- })
-
- // {a:{y:1},"a.b":{x:2}} --> {a:{y:1,b:{x:2}}}
- // use a filter to return the keys that have to be deleted.
- Object.keys(out).filter(function (k, _, __) {
- if (!out[k] ||
- typeof out[k] !== 'object' ||
- Array.isArray(out[k])) {
- return false
- }
- // see if the parent section is also an object.
- // if so, add it to that, and mark this one for deletion
- var parts = dotSplit(k)
- var p = out
- var l = parts.pop()
- var nl = l.replace(/\\\./g, '.')
- parts.forEach(function (part, _, __) {
- if (!p[part] || typeof p[part] !== 'object') p[part] = {}
- p = p[part]
- })
- if (p === out && nl === l) {
- return false
- }
- p[nl] = out[k]
- return true
- }).forEach(function (del, _, __) {
- delete out[del]
- })
-
- return out
-}
-
-function isQuoted (val) {
- return (val.charAt(0) === '"' && val.slice(-1) === '"') ||
- (val.charAt(0) === "'" && val.slice(-1) === "'")
-}
-
-function safe (val) {
- return (typeof val !== 'string' ||
- val.match(/[=\r\n]/) ||
- val.match(/^\[/) ||
- (val.length > 1 &&
- isQuoted(val)) ||
- val !== val.trim())
- ? JSON.stringify(val)
- : val.replace(/;/g, '\\;').replace(/#/g, '\\#')
-}
-
-function unsafe (val, doUnesc) {
- val = (val || '').trim()
- if (isQuoted(val)) {
- // remove the single quotes before calling JSON.parse
- if (val.charAt(0) === "'") {
- val = val.substr(1, val.length - 2)
- }
- try { val = JSON.parse(val) } catch (_) {}
- } else {
- // walk the val to find the first not-escaped ; character
- var esc = false
- var unesc = ''
- for (var i = 0, l = val.length; i < l; i++) {
- var c = val.charAt(i)
- if (esc) {
- if ('\\;#'.indexOf(c) !== -1) {
- unesc += c
- } else {
- unesc += '\\' + c
- }
- esc = false
- } else if (';#'.indexOf(c) !== -1) {
- break
- } else if (c === '\\') {
- esc = true
- } else {
- unesc += c
- }
- }
- if (esc) {
- unesc += '\\'
- }
- return unesc.trim()
- }
- return val
-}
diff --git a/assets/node_modules/ini/package.json b/assets/node_modules/ini/package.json
deleted file mode 100644
index 269bc15..0000000
--- a/assets/node_modules/ini/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
- "name": "ini",
- "description": "An ini encoder/decoder for node",
- "version": "1.3.5",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/ini.git"
- },
- "main": "ini.js",
- "scripts": {
- "pretest": "standard ini.js",
- "test": "tap test/*.js --100 -J",
- "preversion": "npm test",
- "postversion": "npm publish",
- "postpublish": "git push origin --all; git push origin --tags"
- },
- "engines": {
- "node": "*"
- },
- "dependencies": {},
- "devDependencies": {
- "standard": "^10.0.3",
- "tap": "^10.7.3 || 11"
- },
- "license": "ISC",
- "files": [
- "ini.js"
- ]
-}
diff --git a/assets/node_modules/is-alphabetical/index.js b/assets/node_modules/is-alphabetical/index.js
deleted file mode 100644
index 26d3650..0000000
--- a/assets/node_modules/is-alphabetical/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'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/assets/node_modules/is-alphabetical/license b/assets/node_modules/is-alphabetical/license
deleted file mode 100644
index 8d8660d..0000000
--- a/assets/node_modules/is-alphabetical/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/is-alphabetical/package.json b/assets/node_modules/is-alphabetical/package.json
deleted file mode 100644
index c7764f2..0000000
--- a/assets/node_modules/is-alphabetical/package.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "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/assets/node_modules/is-alphabetical/readme.md b/assets/node_modules/is-alphabetical/readme.md
deleted file mode 100644
index 2a6064b..0000000
--- a/assets/node_modules/is-alphabetical/readme.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# 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/assets/node_modules/is-alphanumeric/index.js b/assets/node_modules/is-alphanumeric/index.js
deleted file mode 100644
index 3deeea7..0000000
--- a/assets/node_modules/is-alphanumeric/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-'use strict';
-module.exports = function (str) {
- if (typeof str !== 'string') {
- throw new TypeError('Expected a string');
- }
-
- return !/[^0-9a-z\xDF-\xFF]/.test(str.toLowerCase());
-};
diff --git a/assets/node_modules/is-alphanumeric/license b/assets/node_modules/is-alphanumeric/license
deleted file mode 100644
index e25c14a..0000000
--- a/assets/node_modules/is-alphanumeric/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Arthur Verschaeve <contact@arthurverschaeve.be> (arthurverschaeve.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/assets/node_modules/is-alphanumeric/package.json b/assets/node_modules/is-alphanumeric/package.json
deleted file mode 100644
index 94f5bb4..0000000
--- a/assets/node_modules/is-alphanumeric/package.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "name": "is-alphanumeric",
- "version": "1.0.0",
- "description": "Check if a string only contains alphanumeric characters",
- "license": "MIT",
- "repository": "arthurvr/is-alphanumeric",
- "author": {
- "name": "Arthur Verschaeve",
- "email": "contact@arthurverschaeve.be",
- "url": "arthurverschaeve.be"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "numbers",
- "numeric",
- "alphabet",
- "alphabetic",
- "check",
- "is",
- "detect",
- "latin",
- "alphanumeric",
- "string",
- "text",
- "letters",
- "digit",
- "arabic",
- "alphameric"
- ],
- "devDependencies": {
- "mocha": "*"
- }
-}
diff --git a/assets/node_modules/is-alphanumeric/readme.md b/assets/node_modules/is-alphanumeric/readme.md
deleted file mode 100644
index 1ada8d3..0000000
--- a/assets/node_modules/is-alphanumeric/readme.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# is-alphanumeric [![Build Status](https://travis-ci.org/arthurvr/is-alphanumeric.svg?branch=master)](https://travis-ci.org/arthurvr/is-alphanumeric)
-
-> Check if a string only contains alphanumeric characters
-
-
-## Install
-
-```
-$ npm install --save is-alphanumeric
-```
-
-
-## Usage
-
-```js
-var isAlphanumeric = require('is-alphanumeric');
-
-isAlphanumeric('unicorns');
-//=> true
-
-isAlphanumeric('55');
-//=> true
-
-isAlphanumeric('ABC');
-//=> true
-
-isAlphanumeric('*unicorns');
-//=> false
-
-isAlphanumeric('{unicorns}');
-//=> false
-
-isAlphanumeric(' ');
-//=> false
-```
-
-
-## License
-
-MIT © [Arthur Verschaeve](http://arthurverschaeve.be)
diff --git a/assets/node_modules/is-alphanumerical/index.js b/assets/node_modules/is-alphanumerical/index.js
deleted file mode 100644
index cd5edef..0000000
--- a/assets/node_modules/is-alphanumerical/index.js
+++ /dev/null
@@ -1,12 +0,0 @@
-'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/assets/node_modules/is-alphanumerical/license b/assets/node_modules/is-alphanumerical/license
deleted file mode 100644
index 8d8660d..0000000
--- a/assets/node_modules/is-alphanumerical/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/is-alphanumerical/package.json b/assets/node_modules/is-alphanumerical/package.json
deleted file mode 100644
index edaa31e..0000000
--- a/assets/node_modules/is-alphanumerical/package.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "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/assets/node_modules/is-alphanumerical/readme.md b/assets/node_modules/is-alphanumerical/readme.md
deleted file mode 100644
index 8496cad..0000000
--- a/assets/node_modules/is-alphanumerical/readme.md
+++ /dev/null
@@ -1,71 +0,0 @@
-# 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/assets/node_modules/is-arrayish/.editorconfig b/assets/node_modules/is-arrayish/.editorconfig
deleted file mode 100644
index 4c017f8..0000000
--- a/assets/node_modules/is-arrayish/.editorconfig
+++ /dev/null
@@ -1,18 +0,0 @@
-root = true
-
-[*]
-indent_style = tab
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.coffee]
-indent_style = space
-
-[{package.json,*.yml}]
-indent_style = space
-indent_size = 2
-
-[*.md]
-trim_trailing_whitespace = false
diff --git a/assets/node_modules/is-arrayish/.istanbul.yml b/assets/node_modules/is-arrayish/.istanbul.yml
deleted file mode 100644
index 19fbec3..0000000
--- a/assets/node_modules/is-arrayish/.istanbul.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-instrumentation:
- excludes:
- - test.js
- - test/**/*
diff --git a/assets/node_modules/is-arrayish/.npmignore b/assets/node_modules/is-arrayish/.npmignore
deleted file mode 100644
index 8d5eacb..0000000
--- a/assets/node_modules/is-arrayish/.npmignore
+++ /dev/null
@@ -1,5 +0,0 @@
-/coverage/
-/test.js
-/test/
-*.sw[a-p]
-/node_modules/
diff --git a/assets/node_modules/is-arrayish/.travis.yml b/assets/node_modules/is-arrayish/.travis.yml
deleted file mode 100644
index 5a04243..0000000
--- a/assets/node_modules/is-arrayish/.travis.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-language: node_js
-
-script:
- - node_modules/.bin/istanbul cover node_modules/.bin/_mocha -- --compilers coffee:coffee-script/register
- - cat coverage/lcov.info | node_modules/.bin/coveralls
-node_js:
- - "0.10"
- - "0.11"
- - "0.12"
- - "iojs"
-os:
- - linux
- - osx
-
-notifications:
- slack:
- secure: oOt8QGzdrPDsTMcyahtIq5Q+0U1iwfgJgFCxBLsomQ0bpIMn+y5m4viJydA2UinHPGc944HS3LMZS9iKQyv+DjTgbhUyNXqeVjtxCwRe37f5rKQlXVvdfmjHk2kln4H8DcK3r5Qd/+2hd9BeMsp2GImTrkRSud1CZQlhhe5IgZOboSoWpGVMMy1iazWT06tAtiB2LRVhmsdUaFZDWAhGZ+UAvCPf+mnBOAylIj+U0GDrofhfTi25RK0gddG2f/p2M1HCu49O6wECGWkt2hVei233DkNJyLLLJVcvmhf+aXkV5TjMyaoxh/HdcV4DrA7KvYuWmWWKsINa9hlwAsdd/FYmJ6PjRkKWas2JoQ1C+qOzDxyQvn3CaUZFKD99pdsq0rBBZujqXQKZZ/hWb/CE74BI6fKmqQkiEPaD/7uADj04FEg6HVBZaMCyauOaK5b3VC97twbALZ1qVxYV6mU+zSEvnUbpnjjvRO0fSl9ZHA+rzkW73kX3GmHY0wAozEZbSy7QLuZlQ2QtHmBLr+APaGMdL1sFF9qFfzqKy0WDbSE0WS6hpAEJpTsjYmeBrnI8UmK3m++iEgyQPvZoH9LhUT+ek7XIfHZMe04BmC6wuO24/RfpmR6bQK9VMarFCYlBiWxg/z30vkP0KTpUi3o/cqFm7/Noxc0i2LVqM3E0Sy4=
diff --git a/assets/node_modules/is-arrayish/LICENSE b/assets/node_modules/is-arrayish/LICENSE
deleted file mode 100644
index 0a5f461..0000000
--- a/assets/node_modules/is-arrayish/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 JD Ballard
-
-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/assets/node_modules/is-arrayish/README.md b/assets/node_modules/is-arrayish/README.md
deleted file mode 100644
index 7d36072..0000000
--- a/assets/node_modules/is-arrayish/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# node-is-arrayish [![Travis-CI.org Build Status](https://img.shields.io/travis/Qix-/node-is-arrayish.svg?style=flat-square)](https://travis-ci.org/Qix-/node-is-arrayish) [![Coveralls.io Coverage Rating](https://img.shields.io/coveralls/Qix-/node-is-arrayish.svg?style=flat-square)](https://coveralls.io/r/Qix-/node-is-arrayish)
-> Determines if an object can be used like an Array
-
-## Example
-```javascript
-var isArrayish = require('is-arrayish');
-
-isArrayish([]); // true
-isArrayish({__proto__: []}); // true
-isArrayish({}); // false
-isArrayish({length:10}); // false
-```
-
-## License
-Licensed under the [MIT License](http://opensource.org/licenses/MIT).
-You can find a copy of it in [LICENSE](LICENSE).
diff --git a/assets/node_modules/is-arrayish/index.js b/assets/node_modules/is-arrayish/index.js
deleted file mode 100644
index 5b97186..0000000
--- a/assets/node_modules/is-arrayish/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict';
-
-module.exports = function isArrayish(obj) {
- if (!obj) {
- return false;
- }
-
- return obj instanceof Array || Array.isArray(obj) ||
- (obj.length >= 0 && obj.splice instanceof Function);
-};
diff --git a/assets/node_modules/is-arrayish/package.json b/assets/node_modules/is-arrayish/package.json
deleted file mode 100644
index 8b2d1c3..0000000
--- a/assets/node_modules/is-arrayish/package.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "name": "is-arrayish",
- "description": "Determines if an object can be used as an array",
- "version": "0.2.1",
- "author": "Qix (http://github.com/qix-)",
- "keywords": [
- "is",
- "array",
- "duck",
- "type",
- "arrayish",
- "similar",
- "proto",
- "prototype",
- "type"
- ],
- "license": "MIT",
- "scripts": {
- "pretest": "xo",
- "test": "mocha --compilers coffee:coffee-script/register"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/qix-/node-is-arrayish.git"
- },
- "devDependencies": {
- "coffee-script": "^1.9.3",
- "coveralls": "^2.11.2",
- "istanbul": "^0.3.17",
- "mocha": "^2.2.5",
- "should": "^7.0.1",
- "xo": "^0.6.1"
- }
-}
diff --git a/assets/node_modules/is-binary-path/index.d.ts b/assets/node_modules/is-binary-path/index.d.ts
deleted file mode 100644
index 19dcd43..0000000
--- a/assets/node_modules/is-binary-path/index.d.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
-Check if a file path is a binary file.
-
-@example
-```
-import isBinaryPath = require('is-binary-path');
-
-isBinaryPath('source/unicorn.png');
-//=> true
-
-isBinaryPath('source/unicorn.txt');
-//=> false
-```
-*/
-declare function isBinaryPath(filePath: string): boolean;
-
-export = isBinaryPath;
diff --git a/assets/node_modules/is-binary-path/index.js b/assets/node_modules/is-binary-path/index.js
deleted file mode 100644
index ef7548c..0000000
--- a/assets/node_modules/is-binary-path/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict';
-const path = require('path');
-const binaryExtensions = require('binary-extensions');
-
-const extensions = new Set(binaryExtensions);
-
-module.exports = filePath => extensions.has(path.extname(filePath).slice(1).toLowerCase());
diff --git a/assets/node_modules/is-binary-path/license b/assets/node_modules/is-binary-path/license
deleted file mode 100644
index 401b1c7..0000000
--- a/assets/node_modules/is-binary-path/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) 2019 Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com), Paul Miller (https://paulmillr.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/assets/node_modules/is-binary-path/package.json b/assets/node_modules/is-binary-path/package.json
deleted file mode 100644
index a8d005a..0000000
--- a/assets/node_modules/is-binary-path/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "is-binary-path",
- "version": "2.1.0",
- "description": "Check if a file path is a binary file",
- "license": "MIT",
- "repository": "sindresorhus/is-binary-path",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "binary",
- "extensions",
- "extension",
- "file",
- "path",
- "check",
- "detect",
- "is"
- ],
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/is-binary-path/readme.md b/assets/node_modules/is-binary-path/readme.md
deleted file mode 100644
index b4ab025..0000000
--- a/assets/node_modules/is-binary-path/readme.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# is-binary-path [![Build Status](https://travis-ci.org/sindresorhus/is-binary-path.svg?branch=master)](https://travis-ci.org/sindresorhus/is-binary-path)
-
-> Check if a file path is a binary file
-
-
-## Install
-
-```
-$ npm install is-binary-path
-```
-
-
-## Usage
-
-```js
-const isBinaryPath = require('is-binary-path');
-
-isBinaryPath('source/unicorn.png');
-//=> true
-
-isBinaryPath('source/unicorn.txt');
-//=> false
-```
-
-
-## Related
-
-- [binary-extensions](https://github.com/sindresorhus/binary-extensions) - List of binary file extensions
-- [is-text-path](https://github.com/sindresorhus/is-text-path) - Check if a filepath is a text file
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com), [Paul Miller](https://paulmillr.com)
diff --git a/assets/node_modules/is-buffer/LICENSE b/assets/node_modules/is-buffer/LICENSE
deleted file mode 100644
index 0c068ce..0000000
--- a/assets/node_modules/is-buffer/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/is-buffer/README.md b/assets/node_modules/is-buffer/README.md
deleted file mode 100644
index 685798d..0000000
--- a/assets/node_modules/is-buffer/README.md
+++ /dev/null
@@ -1,56 +0,0 @@
-# is-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/is-buffer/master.svg
-[travis-url]: https://travis-ci.org/feross/is-buffer
-[npm-image]: https://img.shields.io/npm/v/is-buffer.svg
-[npm-url]: https://npmjs.org/package/is-buffer
-[downloads-image]: https://img.shields.io/npm/dm/is-buffer.svg
-[downloads-url]: https://npmjs.org/package/is-buffer
-[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg
-[standard-url]: https://standardjs.com
-
-#### Determine if an object is a [`Buffer`](http://nodejs.org/api/buffer.html) (including the [browserify Buffer](https://github.com/feross/buffer))
-
-[![saucelabs][saucelabs-image]][saucelabs-url]
-
-[saucelabs-image]: https://saucelabs.com/browser-matrix/is-buffer.svg
-[saucelabs-url]: https://saucelabs.com/u/is-buffer
-
-## Why not use `Buffer.isBuffer`?
-
-This module lets you check if an object is a `Buffer` without using `Buffer.isBuffer` (which includes the whole [buffer](https://github.com/feross/buffer) module in [browserify](http://browserify.org/)).
-
-It's future-proof and works in node too!
-
-## install
-
-```bash
-npm install is-buffer
-```
-
-[Get supported is-buffer with the Tidelift Subscription](https://tidelift.com/subscription/pkg/npm-is-buffer?utm_source=npm-is-buffer&utm_medium=referral&utm_campaign=readme)
-
-## usage
-
-```js
-var isBuffer = require('is-buffer')
-
-isBuffer(new Buffer(4)) // true
-isBuffer(Buffer.alloc(4)) //true
-
-isBuffer(undefined) // false
-isBuffer(null) // false
-isBuffer('') // false
-isBuffer(true) // false
-isBuffer(false) // false
-isBuffer(0) // false
-isBuffer(1) // false
-isBuffer(1.0) // false
-isBuffer('string') // false
-isBuffer({}) // false
-isBuffer(function foo () {}) // false
-```
-
-## license
-
-MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org).
diff --git a/assets/node_modules/is-buffer/index.d.ts b/assets/node_modules/is-buffer/index.d.ts
deleted file mode 100644
index 7065c69..0000000
--- a/assets/node_modules/is-buffer/index.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-declare function isBuffer(obj: any): boolean
-export = isBuffer
diff --git a/assets/node_modules/is-buffer/index.js b/assets/node_modules/is-buffer/index.js
deleted file mode 100644
index da9bfdd..0000000
--- a/assets/node_modules/is-buffer/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/*!
- * Determine if an object is a Buffer
- *
- * @author Feross Aboukhadijeh <https://feross.org>
- * @license MIT
- */
-
-module.exports = function isBuffer (obj) {
- return obj != null && obj.constructor != null &&
- typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
-}
diff --git a/assets/node_modules/is-buffer/package.json b/assets/node_modules/is-buffer/package.json
deleted file mode 100644
index 849dd4c..0000000
--- a/assets/node_modules/is-buffer/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "name": "is-buffer",
- "description": "Determine if an object is a Buffer",
- "version": "2.0.4",
- "author": {
- "name": "Feross Aboukhadijeh",
- "email": "feross@feross.org",
- "url": "https://feross.org"
- },
- "bugs": {
- "url": "https://github.com/feross/is-buffer/issues"
- },
- "dependencies": {},
- "devDependencies": {
- "airtap": "^2.0.3",
- "standard": "*",
- "tape": "^4.11.0"
- },
- "engines": {
- "node": ">=4"
- },
- "keywords": [
- "arraybuffer",
- "browser",
- "browser buffer",
- "browserify",
- "buffer",
- "buffers",
- "core buffer",
- "dataview",
- "float32array",
- "float64array",
- "int16array",
- "int32array",
- "type",
- "typed array",
- "uint32array"
- ],
- "license": "MIT",
- "main": "index.js",
- "repository": {
- "type": "git",
- "url": "git://github.com/feross/is-buffer.git"
- },
- "scripts": {
- "test": "standard && npm run test-node && npm run test-browser",
- "test-browser": "airtap -- test/*.js",
- "test-browser-local": "airtap --local -- test/*.js",
- "test-node": "tape test/*.js"
- }
-}
diff --git a/assets/node_modules/is-decimal/index.js b/assets/node_modules/is-decimal/index.js
deleted file mode 100644
index a522104..0000000
--- a/assets/node_modules/is-decimal/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'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/assets/node_modules/is-decimal/license b/assets/node_modules/is-decimal/license
deleted file mode 100644
index 8d8660d..0000000
--- a/assets/node_modules/is-decimal/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/is-decimal/package.json b/assets/node_modules/is-decimal/package.json
deleted file mode 100644
index 5589c2a..0000000
--- a/assets/node_modules/is-decimal/package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "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/assets/node_modules/is-decimal/readme.md b/assets/node_modules/is-decimal/readme.md
deleted file mode 100644
index d24a3d2..0000000
--- a/assets/node_modules/is-decimal/readme.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# 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/assets/node_modules/is-extglob/LICENSE b/assets/node_modules/is-extglob/LICENSE
deleted file mode 100644
index 842218c..0000000
--- a/assets/node_modules/is-extglob/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2016, Jon Schlinkert
-
-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/assets/node_modules/is-extglob/README.md b/assets/node_modules/is-extglob/README.md
deleted file mode 100644
index 0416af5..0000000
--- a/assets/node_modules/is-extglob/README.md
+++ /dev/null
@@ -1,107 +0,0 @@
-# is-extglob [![NPM version](https://img.shields.io/npm/v/is-extglob.svg?style=flat)](https://www.npmjs.com/package/is-extglob) [![NPM downloads](https://img.shields.io/npm/dm/is-extglob.svg?style=flat)](https://npmjs.org/package/is-extglob) [![Build Status](https://img.shields.io/travis/jonschlinkert/is-extglob.svg?style=flat)](https://travis-ci.org/jonschlinkert/is-extglob)
-
-> Returns true if a string has an extglob.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save is-extglob
-```
-
-## Usage
-
-```js
-var isExtglob = require('is-extglob');
-```
-
-**True**
-
-```js
-isExtglob('?(abc)');
-isExtglob('@(abc)');
-isExtglob('!(abc)');
-isExtglob('*(abc)');
-isExtglob('+(abc)');
-```
-
-**False**
-
-Escaped extglobs:
-
-```js
-isExtglob('\\?(abc)');
-isExtglob('\\@(abc)');
-isExtglob('\\!(abc)');
-isExtglob('\\*(abc)');
-isExtglob('\\+(abc)');
-```
-
-Everything else...
-
-```js
-isExtglob('foo.js');
-isExtglob('!foo.js');
-isExtglob('*.js');
-isExtglob('**/abc.js');
-isExtglob('abc/*.js');
-isExtglob('abc/(aaa|bbb).js');
-isExtglob('abc/[a-z].js');
-isExtglob('abc/{a,b}.js');
-isExtglob('abc/?.js');
-isExtglob('abc.js');
-isExtglob('abc/def/ghi.js');
-```
-
-## History
-
-**v2.0**
-
-Adds support for escaping. Escaped exglobs no longer return true.
-
-## About
-
-### Related projects
-
-* [has-glob](https://www.npmjs.com/package/has-glob): Returns `true` if an array has a glob pattern. | [homepage](https://github.com/jonschlinkert/has-glob "Returns `true` if an array has a glob pattern.")
-* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet")
-* [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | [homepage](https://github.com/jonschlinkert/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Building docs
-
-_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_
-
-To generate the readme and API documentation with [verb](https://github.com/verbose/verb):
-
-```sh
-$ npm install -g verb verb-generate-readme && verb
-```
-
-### Running tests
-
-Install dev dependencies:
-
-```sh
-$ npm install -d && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT license](https://github.com/jonschlinkert/is-extglob/blob/master/LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.1.31, on October 12, 2016._ \ No newline at end of file
diff --git a/assets/node_modules/is-extglob/index.js b/assets/node_modules/is-extglob/index.js
deleted file mode 100644
index c1d986f..0000000
--- a/assets/node_modules/is-extglob/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*!
- * is-extglob <https://github.com/jonschlinkert/is-extglob>
- *
- * Copyright (c) 2014-2016, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-
-module.exports = function isExtglob(str) {
- if (typeof str !== 'string' || str === '') {
- return false;
- }
-
- var match;
- while ((match = /(\\).|([@?!+*]\(.*\))/g.exec(str))) {
- if (match[2]) return true;
- str = str.slice(match.index + match[0].length);
- }
-
- return false;
-};
diff --git a/assets/node_modules/is-extglob/package.json b/assets/node_modules/is-extglob/package.json
deleted file mode 100644
index 7a90836..0000000
--- a/assets/node_modules/is-extglob/package.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "name": "is-extglob",
- "description": "Returns true if a string has an extglob.",
- "version": "2.1.1",
- "homepage": "https://github.com/jonschlinkert/is-extglob",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/is-extglob",
- "bugs": {
- "url": "https://github.com/jonschlinkert/is-extglob/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "devDependencies": {
- "gulp-format-md": "^0.1.10",
- "mocha": "^3.0.2"
- },
- "keywords": [
- "bash",
- "braces",
- "check",
- "exec",
- "expression",
- "extglob",
- "glob",
- "globbing",
- "globstar",
- "is",
- "match",
- "matches",
- "pattern",
- "regex",
- "regular",
- "string",
- "test"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": [
- "has-glob",
- "is-glob",
- "micromatch"
- ]
- },
- "reflinks": [
- "verb",
- "verb-generate-readme"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/assets/node_modules/is-fullwidth-code-point/index.js b/assets/node_modules/is-fullwidth-code-point/index.js
deleted file mode 100644
index d506327..0000000
--- a/assets/node_modules/is-fullwidth-code-point/index.js
+++ /dev/null
@@ -1,46 +0,0 @@
-'use strict';
-/* eslint-disable yoda */
-module.exports = x => {
- if (Number.isNaN(x)) {
- return false;
- }
-
- // code points are derived from:
- // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
- if (
- x >= 0x1100 && (
- x <= 0x115f || // Hangul Jamo
- x === 0x2329 || // LEFT-POINTING ANGLE BRACKET
- x === 0x232a || // RIGHT-POINTING ANGLE BRACKET
- // CJK Radicals Supplement .. Enclosed CJK Letters and Months
- (0x2e80 <= x && x <= 0x3247 && x !== 0x303f) ||
- // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
- (0x3250 <= x && x <= 0x4dbf) ||
- // CJK Unified Ideographs .. Yi Radicals
- (0x4e00 <= x && x <= 0xa4c6) ||
- // Hangul Jamo Extended-A
- (0xa960 <= x && x <= 0xa97c) ||
- // Hangul Syllables
- (0xac00 <= x && x <= 0xd7a3) ||
- // CJK Compatibility Ideographs
- (0xf900 <= x && x <= 0xfaff) ||
- // Vertical Forms
- (0xfe10 <= x && x <= 0xfe19) ||
- // CJK Compatibility Forms .. Small Form Variants
- (0xfe30 <= x && x <= 0xfe6b) ||
- // Halfwidth and Fullwidth Forms
- (0xff01 <= x && x <= 0xff60) ||
- (0xffe0 <= x && x <= 0xffe6) ||
- // Kana Supplement
- (0x1b000 <= x && x <= 0x1b001) ||
- // Enclosed Ideographic Supplement
- (0x1f200 <= x && x <= 0x1f251) ||
- // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
- (0x20000 <= x && x <= 0x3fffd)
- )
- ) {
- return true;
- }
-
- return false;
-};
diff --git a/assets/node_modules/is-fullwidth-code-point/license b/assets/node_modules/is-fullwidth-code-point/license
deleted file mode 100644
index 654d0bf..0000000
--- a/assets/node_modules/is-fullwidth-code-point/license
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/is-fullwidth-code-point/package.json b/assets/node_modules/is-fullwidth-code-point/package.json
deleted file mode 100644
index 3049d9e..0000000
--- a/assets/node_modules/is-fullwidth-code-point/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "is-fullwidth-code-point",
- "version": "2.0.0",
- "description": "Check if the character represented by a given Unicode code point is fullwidth",
- "license": "MIT",
- "repository": "sindresorhus/is-fullwidth-code-point",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "fullwidth",
- "full-width",
- "full",
- "width",
- "unicode",
- "character",
- "char",
- "string",
- "str",
- "codepoint",
- "code",
- "point",
- "is",
- "detect",
- "check"
- ],
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- },
- "xo": {
- "esnext": true
- }
-}
diff --git a/assets/node_modules/is-fullwidth-code-point/readme.md b/assets/node_modules/is-fullwidth-code-point/readme.md
deleted file mode 100644
index 093b028..0000000
--- a/assets/node_modules/is-fullwidth-code-point/readme.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# is-fullwidth-code-point [![Build Status](https://travis-ci.org/sindresorhus/is-fullwidth-code-point.svg?branch=master)](https://travis-ci.org/sindresorhus/is-fullwidth-code-point)
-
-> Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)
-
-
-## Install
-
-```
-$ npm install --save is-fullwidth-code-point
-```
-
-
-## Usage
-
-```js
-const isFullwidthCodePoint = require('is-fullwidth-code-point');
-
-isFullwidthCodePoint('谢'.codePointAt());
-//=> true
-
-isFullwidthCodePoint('a'.codePointAt());
-//=> false
-```
-
-
-## API
-
-### isFullwidthCodePoint(input)
-
-#### input
-
-Type: `number`
-
-[Code point](https://en.wikipedia.org/wiki/Code_point) of a character.
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/is-glob/LICENSE b/assets/node_modules/is-glob/LICENSE
deleted file mode 100644
index 3f2eca1..0000000
--- a/assets/node_modules/is-glob/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2017, Jon Schlinkert.
-
-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/assets/node_modules/is-glob/README.md b/assets/node_modules/is-glob/README.md
deleted file mode 100644
index 59444eb..0000000
--- a/assets/node_modules/is-glob/README.md
+++ /dev/null
@@ -1,206 +0,0 @@
-# is-glob [![NPM version](https://img.shields.io/npm/v/is-glob.svg?style=flat)](https://www.npmjs.com/package/is-glob) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-glob.svg?style=flat)](https://npmjs.org/package/is-glob) [![NPM total downloads](https://img.shields.io/npm/dt/is-glob.svg?style=flat)](https://npmjs.org/package/is-glob) [![Linux Build Status](https://img.shields.io/travis/micromatch/is-glob.svg?style=flat&label=Travis)](https://travis-ci.org/micromatch/is-glob) [![Windows Build Status](https://img.shields.io/appveyor/ci/micromatch/is-glob.svg?style=flat&label=AppVeyor)](https://ci.appveyor.com/project/micromatch/is-glob)
-
-> Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a better user experience.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save is-glob
-```
-
-You might also be interested in [is-valid-glob](https://github.com/jonschlinkert/is-valid-glob) and [has-glob](https://github.com/jonschlinkert/has-glob).
-
-## Usage
-
-```js
-var isGlob = require('is-glob');
-```
-
-### Default behavior
-
-**True**
-
-Patterns that have glob characters or regex patterns will return `true`:
-
-```js
-isGlob('!foo.js');
-isGlob('*.js');
-isGlob('**/abc.js');
-isGlob('abc/*.js');
-isGlob('abc/(aaa|bbb).js');
-isGlob('abc/[a-z].js');
-isGlob('abc/{a,b}.js');
-//=> true
-```
-
-Extglobs
-
-```js
-isGlob('abc/@(a).js');
-isGlob('abc/!(a).js');
-isGlob('abc/+(a).js');
-isGlob('abc/*(a).js');
-isGlob('abc/?(a).js');
-//=> true
-```
-
-**False**
-
-Escaped globs or extglobs return `false`:
-
-```js
-isGlob('abc/\\@(a).js');
-isGlob('abc/\\!(a).js');
-isGlob('abc/\\+(a).js');
-isGlob('abc/\\*(a).js');
-isGlob('abc/\\?(a).js');
-isGlob('\\!foo.js');
-isGlob('\\*.js');
-isGlob('\\*\\*/abc.js');
-isGlob('abc/\\*.js');
-isGlob('abc/\\(aaa|bbb).js');
-isGlob('abc/\\[a-z].js');
-isGlob('abc/\\{a,b}.js');
-//=> false
-```
-
-Patterns that do not have glob patterns return `false`:
-
-```js
-isGlob('abc.js');
-isGlob('abc/def/ghi.js');
-isGlob('foo.js');
-isGlob('abc/@.js');
-isGlob('abc/+.js');
-isGlob('abc/?.js');
-isGlob();
-isGlob(null);
-//=> false
-```
-
-Arrays are also `false` (If you want to check if an array has a glob pattern, use [has-glob](https://github.com/jonschlinkert/has-glob)):
-
-```js
-isGlob(['**/*.js']);
-isGlob(['foo.js']);
-//=> false
-```
-
-### Option strict
-
-When `options.strict === false` the behavior is less strict in determining if a pattern is a glob. Meaning that
-some patterns that would return `false` may return `true`. This is done so that matching libraries like [micromatch](https://github.com/micromatch/micromatch) have a chance at determining if the pattern is a glob or not.
-
-**True**
-
-Patterns that have glob characters or regex patterns will return `true`:
-
-```js
-isGlob('!foo.js', {strict: false});
-isGlob('*.js', {strict: false});
-isGlob('**/abc.js', {strict: false});
-isGlob('abc/*.js', {strict: false});
-isGlob('abc/(aaa|bbb).js', {strict: false});
-isGlob('abc/[a-z].js', {strict: false});
-isGlob('abc/{a,b}.js', {strict: false});
-//=> true
-```
-
-Extglobs
-
-```js
-isGlob('abc/@(a).js', {strict: false});
-isGlob('abc/!(a).js', {strict: false});
-isGlob('abc/+(a).js', {strict: false});
-isGlob('abc/*(a).js', {strict: false});
-isGlob('abc/?(a).js', {strict: false});
-//=> true
-```
-
-**False**
-
-Escaped globs or extglobs return `false`:
-
-```js
-isGlob('\\!foo.js', {strict: false});
-isGlob('\\*.js', {strict: false});
-isGlob('\\*\\*/abc.js', {strict: false});
-isGlob('abc/\\*.js', {strict: false});
-isGlob('abc/\\(aaa|bbb).js', {strict: false});
-isGlob('abc/\\[a-z].js', {strict: false});
-isGlob('abc/\\{a,b}.js', {strict: false});
-//=> false
-```
-
-## About
-
-<details>
-<summary><strong>Contributing</strong></summary>
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-</details>
-
-<details>
-<summary><strong>Running Tests</strong></summary>
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-</details>
-
-<details>
-<summary><strong>Building docs</strong></summary>
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-</details>
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [assemble](https://www.npmjs.com/package/assemble): Get the rocks out of your socks! Assemble makes you fast at creating web projects… [more](https://github.com/assemble/assemble) | [homepage](https://github.com/assemble/assemble "Get the rocks out of your socks! Assemble makes you fast at creating web projects. Assemble is used by thousands of projects for rapid prototyping, creating themes, scaffolds, boilerplates, e-books, UI components, API documentation, blogs, building websit")
-* [base](https://www.npmjs.com/package/base): Framework for rapidly creating high quality, server-side node.js applications, using plugins like building blocks | [homepage](https://github.com/node-base/base "Framework for rapidly creating high quality, server-side node.js applications, using plugins like building blocks")
-* [update](https://www.npmjs.com/package/update): Be scalable! Update is a new, open source developer framework and CLI for automating updates… [more](https://github.com/update/update) | [homepage](https://github.com/update/update "Be scalable! Update is a new, open source developer framework and CLI for automating updates of any kind in code projects.")
-* [verb](https://www.npmjs.com/package/verb): Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used… [more](https://github.com/verbose/verb) | [homepage](https://github.com/verbose/verb "Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used on hundreds of projects of all sizes to generate everything from API docs to readmes.")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 47 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 5 | [doowb](https://github.com/doowb) |
-| 1 | [phated](https://github.com/phated) |
-| 1 | [danhper](https://github.com/danhper) |
-| 1 | [paulmillr](https://github.com/paulmillr) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-
-### License
-
-Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on March 27, 2019._ \ No newline at end of file
diff --git a/assets/node_modules/is-glob/index.js b/assets/node_modules/is-glob/index.js
deleted file mode 100644
index 5582651..0000000
--- a/assets/node_modules/is-glob/index.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/*!
- * is-glob <https://github.com/jonschlinkert/is-glob>
- *
- * Copyright (c) 2014-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-var isExtglob = require('is-extglob');
-var chars = { '{': '}', '(': ')', '[': ']'};
-var strictRegex = /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/;
-var relaxedRegex = /\\(.)|(^!|[*?{}()[\]]|\(\?)/;
-
-module.exports = function isGlob(str, options) {
- if (typeof str !== 'string' || str === '') {
- return false;
- }
-
- if (isExtglob(str)) {
- return true;
- }
-
- var regex = strictRegex;
- var match;
-
- // optionally relax regex
- if (options && options.strict === false) {
- regex = relaxedRegex;
- }
-
- while ((match = regex.exec(str))) {
- if (match[2]) return true;
- var idx = match.index + match[0].length;
-
- // if an open bracket/brace/paren is escaped,
- // set the index to the next closing character
- var open = match[1];
- var close = open ? chars[open] : null;
- if (open && close) {
- var n = str.indexOf(close, idx);
- if (n !== -1) {
- idx = n + 1;
- }
- }
-
- str = str.slice(idx);
- }
- return false;
-};
diff --git a/assets/node_modules/is-glob/package.json b/assets/node_modules/is-glob/package.json
deleted file mode 100644
index 806000d..0000000
--- a/assets/node_modules/is-glob/package.json
+++ /dev/null
@@ -1,81 +0,0 @@
-{
- "name": "is-glob",
- "description": "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a better user experience.",
- "version": "4.0.1",
- "homepage": "https://github.com/micromatch/is-glob",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Brian Woodward (https://twitter.com/doowb)",
- "Daniel Perez (https://tuvistavie.com)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)"
- ],
- "repository": "micromatch/is-glob",
- "bugs": {
- "url": "https://github.com/micromatch/is-glob/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "devDependencies": {
- "gulp-format-md": "^0.1.10",
- "mocha": "^3.0.2"
- },
- "keywords": [
- "bash",
- "braces",
- "check",
- "exec",
- "expression",
- "extglob",
- "glob",
- "globbing",
- "globstar",
- "is",
- "match",
- "matches",
- "pattern",
- "regex",
- "regular",
- "string",
- "test"
- ],
- "verb": {
- "layout": "default",
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": [
- "assemble",
- "base",
- "update",
- "verb"
- ]
- },
- "reflinks": [
- "assemble",
- "bach",
- "base",
- "composer",
- "gulp",
- "has-glob",
- "is-valid-glob",
- "micromatch",
- "npm",
- "scaffold",
- "verb",
- "vinyl"
- ]
- }
-}
diff --git a/assets/node_modules/is-hexadecimal/index.js b/assets/node_modules/is-hexadecimal/index.js
deleted file mode 100644
index 567c9d1..0000000
--- a/assets/node_modules/is-hexadecimal/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'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/assets/node_modules/is-hexadecimal/license b/assets/node_modules/is-hexadecimal/license
deleted file mode 100644
index 8d8660d..0000000
--- a/assets/node_modules/is-hexadecimal/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/is-hexadecimal/package.json b/assets/node_modules/is-hexadecimal/package.json
deleted file mode 100644
index b8741fe..0000000
--- a/assets/node_modules/is-hexadecimal/package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "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/assets/node_modules/is-hexadecimal/readme.md b/assets/node_modules/is-hexadecimal/readme.md
deleted file mode 100644
index 7c82b1b..0000000
--- a/assets/node_modules/is-hexadecimal/readme.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# 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/assets/node_modules/is-number/LICENSE b/assets/node_modules/is-number/LICENSE
deleted file mode 100644
index 9af4a67..0000000
--- a/assets/node_modules/is-number/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-present, Jon Schlinkert.
-
-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/assets/node_modules/is-number/README.md b/assets/node_modules/is-number/README.md
deleted file mode 100644
index eb8149e..0000000
--- a/assets/node_modules/is-number/README.md
+++ /dev/null
@@ -1,187 +0,0 @@
-# is-number [![NPM version](https://img.shields.io/npm/v/is-number.svg?style=flat)](https://www.npmjs.com/package/is-number) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-number.svg?style=flat)](https://npmjs.org/package/is-number) [![NPM total downloads](https://img.shields.io/npm/dt/is-number.svg?style=flat)](https://npmjs.org/package/is-number) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-number.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-number)
-
-> Returns true if the value is a finite number.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save is-number
-```
-
-## Why is this needed?
-
-In JavaScript, it's not always as straightforward as it should be to reliably check if a value is a number. It's common for devs to use `+`, `-`, or `Number()` to cast a string value to a number (for example, when values are returned from user input, regex matches, parsers, etc). But there are many non-intuitive edge cases that yield unexpected results:
-
-```js
-console.log(+[]); //=> 0
-console.log(+''); //=> 0
-console.log(+' '); //=> 0
-console.log(typeof NaN); //=> 'number'
-```
-
-This library offers a performant way to smooth out edge cases like these.
-
-## Usage
-
-```js
-const isNumber = require('is-number');
-```
-
-See the [tests](./test.js) for more examples.
-
-### true
-
-```js
-isNumber(5e3); // true
-isNumber(0xff); // true
-isNumber(-1.1); // true
-isNumber(0); // true
-isNumber(1); // true
-isNumber(1.1); // true
-isNumber(10); // true
-isNumber(10.10); // true
-isNumber(100); // true
-isNumber('-1.1'); // true
-isNumber('0'); // true
-isNumber('012'); // true
-isNumber('0xff'); // true
-isNumber('1'); // true
-isNumber('1.1'); // true
-isNumber('10'); // true
-isNumber('10.10'); // true
-isNumber('100'); // true
-isNumber('5e3'); // true
-isNumber(parseInt('012')); // true
-isNumber(parseFloat('012')); // true
-```
-
-### False
-
-Everything else is false, as you would expect:
-
-```js
-isNumber(Infinity); // false
-isNumber(NaN); // false
-isNumber(null); // false
-isNumber(undefined); // false
-isNumber(''); // false
-isNumber(' '); // false
-isNumber('foo'); // false
-isNumber([1]); // false
-isNumber([]); // false
-isNumber(function () {}); // false
-isNumber({}); // false
-```
-
-## Release history
-
-### 7.0.0
-
-* Refactor. Now uses `.isFinite` if it exists.
-* Performance is about the same as v6.0 when the value is a string or number. But it's now 3x-4x faster when the value is not a string or number.
-
-### 6.0.0
-
-* Optimizations, thanks to @benaadams.
-
-### 5.0.0
-
-**Breaking changes**
-
-* removed support for `instanceof Number` and `instanceof String`
-
-## Benchmarks
-
-As with all benchmarks, take these with a grain of salt. See the [benchmarks](./benchmark/index.js) for more detail.
-
-```
-# all
-v7.0 x 413,222 ops/sec ±2.02% (86 runs sampled)
-v6.0 x 111,061 ops/sec ±1.29% (85 runs sampled)
-parseFloat x 317,596 ops/sec ±1.36% (86 runs sampled)
-fastest is 'v7.0'
-
-# string
-v7.0 x 3,054,496 ops/sec ±1.05% (89 runs sampled)
-v6.0 x 2,957,781 ops/sec ±0.98% (88 runs sampled)
-parseFloat x 3,071,060 ops/sec ±1.13% (88 runs sampled)
-fastest is 'parseFloat,v7.0'
-
-# number
-v7.0 x 3,146,895 ops/sec ±0.89% (89 runs sampled)
-v6.0 x 3,214,038 ops/sec ±1.07% (89 runs sampled)
-parseFloat x 3,077,588 ops/sec ±1.07% (87 runs sampled)
-fastest is 'v6.0'
-```
-
-## About
-
-<details>
-<summary><strong>Contributing</strong></summary>
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-</details>
-
-<details>
-<summary><strong>Running Tests</strong></summary>
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-</details>
-
-<details>
-<summary><strong>Building docs</strong></summary>
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-</details>
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.")
-* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ")
-* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.")
-* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 49 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 5 | [charlike-old](https://github.com/charlike-old) |
-| 1 | [benaadams](https://github.com/benaadams) |
-| 1 | [realityking](https://github.com/realityking) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on June 15, 2018._ \ No newline at end of file
diff --git a/assets/node_modules/is-number/index.js b/assets/node_modules/is-number/index.js
deleted file mode 100644
index 27f19b7..0000000
--- a/assets/node_modules/is-number/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*!
- * is-number <https://github.com/jonschlinkert/is-number>
- *
- * Copyright (c) 2014-present, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-'use strict';
-
-module.exports = function(num) {
- if (typeof num === 'number') {
- return num - num === 0;
- }
- if (typeof num === 'string' && num.trim() !== '') {
- return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);
- }
- return false;
-};
diff --git a/assets/node_modules/is-number/package.json b/assets/node_modules/is-number/package.json
deleted file mode 100644
index 3715072..0000000
--- a/assets/node_modules/is-number/package.json
+++ /dev/null
@@ -1,82 +0,0 @@
-{
- "name": "is-number",
- "description": "Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.",
- "version": "7.0.0",
- "homepage": "https://github.com/jonschlinkert/is-number",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Olsten Larck (https://i.am.charlike.online)",
- "Rouven Weßling (www.rouvenwessling.de)"
- ],
- "repository": "jonschlinkert/is-number",
- "bugs": {
- "url": "https://github.com/jonschlinkert/is-number/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.12.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "devDependencies": {
- "ansi": "^0.3.1",
- "benchmark": "^2.1.4",
- "gulp-format-md": "^1.0.0",
- "mocha": "^3.5.3"
- },
- "keywords": [
- "cast",
- "check",
- "coerce",
- "coercion",
- "finite",
- "integer",
- "is",
- "isnan",
- "is-nan",
- "is-num",
- "is-number",
- "isnumber",
- "isfinite",
- "istype",
- "kind",
- "math",
- "nan",
- "num",
- "number",
- "numeric",
- "parseFloat",
- "parseInt",
- "test",
- "type",
- "typeof",
- "value"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "related": {
- "list": [
- "is-plain-object",
- "is-primitive",
- "isobject",
- "kind-of"
- ]
- },
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/assets/node_modules/is-obj/index.js b/assets/node_modules/is-obj/index.js
deleted file mode 100644
index 4d023bc..0000000
--- a/assets/node_modules/is-obj/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-'use strict';
-module.exports = function (x) {
- var type = typeof x;
- return x !== null && (type === 'object' || type === 'function');
-};
diff --git a/assets/node_modules/is-obj/license b/assets/node_modules/is-obj/license
deleted file mode 100644
index 654d0bf..0000000
--- a/assets/node_modules/is-obj/license
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/is-obj/package.json b/assets/node_modules/is-obj/package.json
deleted file mode 100644
index c441d27..0000000
--- a/assets/node_modules/is-obj/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "is-obj",
- "version": "1.0.1",
- "description": "Check if a value is an object",
- "license": "MIT",
- "repository": "sindresorhus/is-obj",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "obj",
- "object",
- "is",
- "check",
- "test",
- "type"
- ],
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- }
-}
diff --git a/assets/node_modules/is-obj/readme.md b/assets/node_modules/is-obj/readme.md
deleted file mode 100644
index d311026..0000000
--- a/assets/node_modules/is-obj/readme.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# is-obj [![Build Status](https://travis-ci.org/sindresorhus/is-obj.svg?branch=master)](https://travis-ci.org/sindresorhus/is-obj)
-
-> Check if a value is an object
-
-Keep in mind that array, function, regexp, etc, are objects in JavaScript.<br>
-See [`is-plain-obj`](https://github.com/sindresorhus/is-plain-obj) if you want to check for plain objects.
-
-
-## Install
-
-```
-$ npm install --save is-obj
-```
-
-
-## Usage
-
-```js
-const isObj = require('is-obj');
-
-isObj({foo: 'bar'});
-//=> true
-
-isObj([1, 2, 3]);
-//=> true
-
-isObj('foo');
-//=> false
-```
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/is-plain-obj/index.js b/assets/node_modules/is-plain-obj/index.js
deleted file mode 100644
index 0d1ba9e..0000000
--- a/assets/node_modules/is-plain-obj/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict';
-var toString = Object.prototype.toString;
-
-module.exports = function (x) {
- var prototype;
- return toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));
-};
diff --git a/assets/node_modules/is-plain-obj/license b/assets/node_modules/is-plain-obj/license
deleted file mode 100644
index 654d0bf..0000000
--- a/assets/node_modules/is-plain-obj/license
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/is-plain-obj/package.json b/assets/node_modules/is-plain-obj/package.json
deleted file mode 100644
index d331f6e..0000000
--- a/assets/node_modules/is-plain-obj/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "name": "is-plain-obj",
- "version": "1.1.0",
- "description": "Check if a value is a plain object",
- "license": "MIT",
- "repository": "sindresorhus/is-plain-obj",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "node test.js"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "obj",
- "object",
- "is",
- "check",
- "test",
- "type",
- "plain",
- "vanilla",
- "pure",
- "simple"
- ],
- "devDependencies": {
- "ava": "0.0.4"
- }
-}
diff --git a/assets/node_modules/is-plain-obj/readme.md b/assets/node_modules/is-plain-obj/readme.md
deleted file mode 100644
index 269e56a..0000000
--- a/assets/node_modules/is-plain-obj/readme.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# is-plain-obj [![Build Status](https://travis-ci.org/sindresorhus/is-plain-obj.svg?branch=master)](https://travis-ci.org/sindresorhus/is-plain-obj)
-
-> Check if a value is a plain object
-
-An object is plain if it's created by either `{}`, `new Object()` or `Object.create(null)`.
-
-
-## Install
-
-```
-$ npm install --save is-plain-obj
-```
-
-
-## Usage
-
-```js
-var isPlainObj = require('is-plain-obj');
-
-isPlainObj({foo: 'bar'});
-//=> true
-
-isPlainObj([1, 2, 3]);
-//=> false
-```
-
-
-## Related
-
-- [is-obj](https://github.com/sindresorhus/is-obj) - Check if a value is an object
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/assets/node_modules/is-regexp/index.d.ts b/assets/node_modules/is-regexp/index.d.ts
deleted file mode 100644
index 809e90c..0000000
--- a/assets/node_modules/is-regexp/index.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
-Check if a value is a regular expression.
-
-@example
-```
-import isRegexp = require('is-regexp');
-
-isRegexp('unicorn');
-//=> false
-
-isRegexp(/unicorn/);
-//=> true
-
-isRegexp(new RegExp('unicorn'));
-//=> true
-```
-*/
-declare function isRegexp(input: unknown): input is RegExp;
-
-export = isRegexp;
diff --git a/assets/node_modules/is-regexp/index.js b/assets/node_modules/is-regexp/index.js
deleted file mode 100644
index bdc427c..0000000
--- a/assets/node_modules/is-regexp/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-'use strict';
-
-module.exports = input => Object.prototype.toString.call(input) === '[object RegExp]';
diff --git a/assets/node_modules/is-regexp/license b/assets/node_modules/is-regexp/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/is-regexp/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/is-regexp/package.json b/assets/node_modules/is-regexp/package.json
deleted file mode 100644
index becf49f..0000000
--- a/assets/node_modules/is-regexp/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "is-regexp",
- "version": "2.1.0",
- "description": "Check if a value is a regular expression",
- "license": "MIT",
- "repository": "sindresorhus/is-regexp",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "regex",
- "regexp",
- "regular",
- "expression",
- "regular expression",
- "re",
- "check",
- "type",
- "is"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/is-regexp/readme.md b/assets/node_modules/is-regexp/readme.md
deleted file mode 100644
index 54913ad..0000000
--- a/assets/node_modules/is-regexp/readme.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# is-regexp [![Build Status](https://travis-ci.org/sindresorhus/is-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/is-regexp)
-
-> Check if a value is a regular expression
-
-
-## Install
-
-```
-$ npm install is-regexp
-```
-
-
-## Usage
-
-```js
-const isRegexp = require('is-regexp');
-
-isRegexp('unicorn');
-//=> false
-
-isRegexp(/unicorn/);
-//=> true
-
-isRegexp(new RegExp('unicorn'));
-//=> true
-```
-
-
-## Related
-
-- [is](https://github.com/sindresorhus/is) - Type check values
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/is-typedarray/LICENSE.md b/assets/node_modules/is-typedarray/LICENSE.md
deleted file mode 100644
index ee27ba4..0000000
--- a/assets/node_modules/is-typedarray/LICENSE.md
+++ /dev/null
@@ -1,18 +0,0 @@
-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/assets/node_modules/is-typedarray/README.md b/assets/node_modules/is-typedarray/README.md
deleted file mode 100644
index 2752863..0000000
--- a/assets/node_modules/is-typedarray/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# is-typedarray [![locked](http://badges.github.io/stability-badges/dist/locked.svg)](http://github.com/badges/stability-badges)
-
-Detect whether or not an object is a
-[Typed Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays).
-
-## Usage
-
-[![NPM](https://nodei.co/npm/is-typedarray.png)](https://nodei.co/npm/is-typedarray/)
-
-### isTypedArray(array)
-
-Returns `true` when array is a Typed Array, and `false` when it is not.
-
-## License
-
-MIT. See [LICENSE.md](http://github.com/hughsk/is-typedarray/blob/master/LICENSE.md) for details.
diff --git a/assets/node_modules/is-typedarray/index.js b/assets/node_modules/is-typedarray/index.js
deleted file mode 100644
index 5859603..0000000
--- a/assets/node_modules/is-typedarray/index.js
+++ /dev/null
@@ -1,41 +0,0 @@
-module.exports = isTypedArray
-isTypedArray.strict = isStrictTypedArray
-isTypedArray.loose = isLooseTypedArray
-
-var toString = Object.prototype.toString
-var names = {
- '[object Int8Array]': true
- , '[object Int16Array]': true
- , '[object Int32Array]': true
- , '[object Uint8Array]': true
- , '[object Uint8ClampedArray]': true
- , '[object Uint16Array]': true
- , '[object Uint32Array]': true
- , '[object Float32Array]': true
- , '[object Float64Array]': true
-}
-
-function isTypedArray(arr) {
- return (
- isStrictTypedArray(arr)
- || isLooseTypedArray(arr)
- )
-}
-
-function isStrictTypedArray(arr) {
- return (
- arr instanceof Int8Array
- || arr instanceof Int16Array
- || arr instanceof Int32Array
- || arr instanceof Uint8Array
- || arr instanceof Uint8ClampedArray
- || arr instanceof Uint16Array
- || arr instanceof Uint32Array
- || arr instanceof Float32Array
- || arr instanceof Float64Array
- )
-}
-
-function isLooseTypedArray(arr) {
- return names[toString.call(arr)]
-}
diff --git a/assets/node_modules/is-typedarray/package.json b/assets/node_modules/is-typedarray/package.json
deleted file mode 100644
index 37f7ae3..0000000
--- a/assets/node_modules/is-typedarray/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "is-typedarray",
- "version": "1.0.0",
- "description": "Detect whether or not an object is a Typed Array",
- "main": "index.js",
- "scripts": {
- "test": "node test"
- },
- "author": "Hugh Kennedy <hughskennedy@gmail.com> (http://hughsk.io/)",
- "license": "MIT",
- "dependencies": {},
- "devDependencies": {
- "tape": "^2.13.1"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/hughsk/is-typedarray.git"
- },
- "keywords": [
- "typed",
- "array",
- "detect",
- "is",
- "util"
- ],
- "bugs": {
- "url": "https://github.com/hughsk/is-typedarray/issues"
- },
- "homepage": "https://github.com/hughsk/is-typedarray"
-}
diff --git a/assets/node_modules/is-typedarray/test.js b/assets/node_modules/is-typedarray/test.js
deleted file mode 100644
index b0c176f..0000000
--- a/assets/node_modules/is-typedarray/test.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var test = require('tape')
-var ista = require('./')
-
-test('strict', function(t) {
- t.ok(ista.strict(new Int8Array), 'Int8Array')
- t.ok(ista.strict(new Int16Array), 'Int16Array')
- t.ok(ista.strict(new Int32Array), 'Int32Array')
- t.ok(ista.strict(new Uint8Array), 'Uint8Array')
- t.ok(ista.strict(new Uint16Array), 'Uint16Array')
- t.ok(ista.strict(new Uint32Array), 'Uint32Array')
- t.ok(ista.strict(new Float32Array), 'Float32Array')
- t.ok(ista.strict(new Float64Array), 'Float64Array')
-
- t.ok(!ista.strict(new Array), 'Array')
- t.ok(!ista.strict([]), '[]')
-
- t.end()
-})
-
-test('loose', function(t) {
- t.ok(ista.loose(new Int8Array), 'Int8Array')
- t.ok(ista.loose(new Int16Array), 'Int16Array')
- t.ok(ista.loose(new Int32Array), 'Int32Array')
- t.ok(ista.loose(new Uint8Array), 'Uint8Array')
- t.ok(ista.loose(new Uint16Array), 'Uint16Array')
- t.ok(ista.loose(new Uint32Array), 'Uint32Array')
- t.ok(ista.loose(new Float32Array), 'Float32Array')
- t.ok(ista.loose(new Float64Array), 'Float64Array')
-
- t.ok(!ista.loose(new Array), 'Array')
- t.ok(!ista.loose([]), '[]')
-
- t.end()
-})
diff --git a/assets/node_modules/is-whitespace-character/index.js b/assets/node_modules/is-whitespace-character/index.js
deleted file mode 100644
index 801c19f..0000000
--- a/assets/node_modules/is-whitespace-character/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict'
-
-module.exports = whitespace
-
-var fromCode = String.fromCharCode
-var re = /\s/
-
-// Check if the given character code, or the character code at the first
-// character, is a whitespace character.
-function whitespace(character) {
- return re.test(
- typeof character === 'number' ? fromCode(character) : character.charAt(0)
- )
-}
diff --git a/assets/node_modules/is-whitespace-character/license b/assets/node_modules/is-whitespace-character/license
deleted file mode 100644
index 8d8660d..0000000
--- a/assets/node_modules/is-whitespace-character/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/is-whitespace-character/package.json b/assets/node_modules/is-whitespace-character/package.json
deleted file mode 100644
index d6b35d9..0000000
--- a/assets/node_modules/is-whitespace-character/package.json
+++ /dev/null
@@ -1,74 +0,0 @@
-{
- "name": "is-whitespace-character",
- "version": "1.0.4",
- "description": "Check if a character is a whitespace character",
- "license": "MIT",
- "keywords": [
- "string",
- "character",
- "char",
- "code",
- "whitespace",
- "white",
- "space"
- ],
- "repository": "wooorm/is-whitespace-character",
- "bugs": "https://github.com/wooorm/is-whitespace-character/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 isWhitespaceCharacter -o is-whitespace-character.js",
- "build-mangle": "browserify . -s isWhitespaceCharacter -p tinyify -o is-whitespace-character.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-whitespace-character.js"
- ]
- },
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/is-whitespace-character/readme.md b/assets/node_modules/is-whitespace-character/readme.md
deleted file mode 100644
index 34d4f34..0000000
--- a/assets/node_modules/is-whitespace-character/readme.md
+++ /dev/null
@@ -1,74 +0,0 @@
-# is-whitespace-character
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-Check if a character is a whitespace character: `\s`, which equals all Unicode
-Space Separators (including `[ \t\v\f]`), the BOM (`\uFEFF`), and line
-terminator (`[\n\r\u2028\u2029]`).
-
-## Install
-
-[npm][]:
-
-```sh
-npm install is-whitespace-character
-```
-
-## Use
-
-```js
-var whitespace = require('is-whitespace-character')
-
-whitespace(' ') // => true
-whitespace('\n') // => true
-whitespace('\uFEFF') // => true
-whitespace('_') // => false
-whitespace('a') // => false
-whitespace('💩') // => false
-```
-
-## API
-
-### `whitespaceCharacter(character|code)`
-
-Check whether the given character code (`number`), or the character code at the
-first position (`string`), is a whitespace character.
-
-## Related
-
-* [`is-alphabetical`](https://github.com/wooorm/is-alphabetical)
-* [`is-alphanumerical`](https://github.com/wooorm/is-alphanumerical)
-* [`is-decimal`](https://github.com/wooorm/is-decimal)
-* [`is-hexadecimal`](https://github.com/wooorm/is-hexadecimal)
-* [`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-whitespace-character.svg
-
-[build]: https://travis-ci.org/wooorm/is-whitespace-character
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/is-whitespace-character.svg
-
-[coverage]: https://codecov.io/github/wooorm/is-whitespace-character
-
-[downloads-badge]: https://img.shields.io/npm/dm/is-whitespace-character.svg
-
-[downloads]: https://www.npmjs.com/package/is-whitespace-character
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/is-whitespace-character.svg
-
-[size]: https://bundlephobia.com/result?p=is-whitespace-character
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
diff --git a/assets/node_modules/is-word-character/index.js b/assets/node_modules/is-word-character/index.js
deleted file mode 100644
index 8c3537f..0000000
--- a/assets/node_modules/is-word-character/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict'
-
-module.exports = wordCharacter
-
-var fromCode = String.fromCharCode
-var re = /\w/
-
-// Check if the given character code, or the character code at the first
-// character, is a word character.
-function wordCharacter(character) {
- return re.test(
- typeof character === 'number' ? fromCode(character) : character.charAt(0)
- )
-}
diff --git a/assets/node_modules/is-word-character/license b/assets/node_modules/is-word-character/license
deleted file mode 100644
index 8d8660d..0000000
--- a/assets/node_modules/is-word-character/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/is-word-character/package.json b/assets/node_modules/is-word-character/package.json
deleted file mode 100644
index 42c262c..0000000
--- a/assets/node_modules/is-word-character/package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "name": "is-word-character",
- "version": "1.0.4",
- "description": "Check if a character is a word character",
- "license": "MIT",
- "keywords": [
- "string",
- "character",
- "char",
- "code",
- "word"
- ],
- "repository": "wooorm/is-word-character",
- "bugs": "https://github.com/wooorm/is-word-character/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 isWordCharacter -o is-word-character.js",
- "build-mangle": "browserify . -s isWordCharacter -p tinyify -o is-word-character.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-word-character.js"
- ]
- },
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/is-word-character/readme.md b/assets/node_modules/is-word-character/readme.md
deleted file mode 100644
index 3c88ce9..0000000
--- a/assets/node_modules/is-word-character/readme.md
+++ /dev/null
@@ -1,72 +0,0 @@
-# is-word-character
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-Check if a character is a word character (`\w`, which equals `[a-zA-Z0-9_]`).
-
-## Install
-
-[npm][]:
-
-```sh
-npm install is-word-character
-```
-
-## Use
-
-```js
-var wordCharacter = require('is-word-character')
-
-wordCharacter('a') // => true
-wordCharacter('Z') // => true
-wordCharacter('0') // => true
-wordCharacter('_') // => true
-wordCharacter(' ') // => false
-wordCharacter('💩') // => false
-```
-
-## API
-
-### `wordCharacter(character|code)`
-
-Check whether the given character code (`number`), or the character code at the
-first position (`string`), is a word character.
-
-## Related
-
-* [`is-alphabetical`](https://github.com/wooorm/is-alphabetical)
-* [`is-alphanumerical`](https://github.com/wooorm/is-alphanumerical)
-* [`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)
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/wooorm/is-word-character.svg
-
-[build]: https://travis-ci.org/wooorm/is-word-character
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/is-word-character.svg
-
-[coverage]: https://codecov.io/github/wooorm/is-word-character
-
-[downloads-badge]: https://img.shields.io/npm/dm/is-word-character.svg
-
-[downloads]: https://www.npmjs.com/package/is-word-character
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/is-word-character.svg
-
-[size]: https://bundlephobia.com/result?p=is-word-character
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
diff --git a/assets/node_modules/isexe/.npmignore b/assets/node_modules/isexe/.npmignore
deleted file mode 100644
index c1cb757..0000000
--- a/assets/node_modules/isexe/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-.nyc_output/
-coverage/
diff --git a/assets/node_modules/isexe/LICENSE b/assets/node_modules/isexe/LICENSE
deleted file mode 100644
index 19129e3..0000000
--- a/assets/node_modules/isexe/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-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/assets/node_modules/isexe/README.md b/assets/node_modules/isexe/README.md
deleted file mode 100644
index 35769e8..0000000
--- a/assets/node_modules/isexe/README.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# isexe
-
-Minimal module to check if a file is executable, and a normal file.
-
-Uses `fs.stat` and tests against the `PATHEXT` environment variable on
-Windows.
-
-## USAGE
-
-```javascript
-var isexe = require('isexe')
-isexe('some-file-name', function (err, isExe) {
- if (err) {
- console.error('probably file does not exist or something', err)
- } else if (isExe) {
- console.error('this thing can be run')
- } else {
- console.error('cannot be run')
- }
-})
-
-// same thing but synchronous, throws errors
-var isExe = isexe.sync('some-file-name')
-
-// treat errors as just "not executable"
-isexe('maybe-missing-file', { ignoreErrors: true }, callback)
-var isExe = isexe.sync('maybe-missing-file', { ignoreErrors: true })
-```
-
-## API
-
-### `isexe(path, [options], [callback])`
-
-Check if the path is executable. If no callback provided, and a
-global `Promise` object is available, then a Promise will be returned.
-
-Will raise whatever errors may be raised by `fs.stat`, unless
-`options.ignoreErrors` is set to true.
-
-### `isexe.sync(path, [options])`
-
-Same as `isexe` but returns the value and throws any errors raised.
-
-### Options
-
-* `ignoreErrors` Treat all errors as "no, this is not executable", but
- don't raise them.
-* `uid` Number to use as the user id
-* `gid` Number to use as the group id
-* `pathExt` List of path extensions to use instead of `PATHEXT`
- environment variable on Windows.
diff --git a/assets/node_modules/isexe/index.js b/assets/node_modules/isexe/index.js
deleted file mode 100644
index 553fb32..0000000
--- a/assets/node_modules/isexe/index.js
+++ /dev/null
@@ -1,57 +0,0 @@
-var fs = require('fs')
-var core
-if (process.platform === 'win32' || global.TESTING_WINDOWS) {
- core = require('./windows.js')
-} else {
- core = require('./mode.js')
-}
-
-module.exports = isexe
-isexe.sync = sync
-
-function isexe (path, options, cb) {
- if (typeof options === 'function') {
- cb = options
- options = {}
- }
-
- if (!cb) {
- if (typeof Promise !== 'function') {
- throw new TypeError('callback not provided')
- }
-
- return new Promise(function (resolve, reject) {
- isexe(path, options || {}, function (er, is) {
- if (er) {
- reject(er)
- } else {
- resolve(is)
- }
- })
- })
- }
-
- core(path, options || {}, function (er, is) {
- // ignore EACCES because that just means we aren't allowed to run it
- if (er) {
- if (er.code === 'EACCES' || options && options.ignoreErrors) {
- er = null
- is = false
- }
- }
- cb(er, is)
- })
-}
-
-function sync (path, options) {
- // my kingdom for a filtered catch
- try {
- return core.sync(path, options || {})
- } catch (er) {
- if (options && options.ignoreErrors || er.code === 'EACCES') {
- return false
- } else {
- throw er
- }
- }
-}
diff --git a/assets/node_modules/isexe/mode.js b/assets/node_modules/isexe/mode.js
deleted file mode 100644
index 1995ea4..0000000
--- a/assets/node_modules/isexe/mode.js
+++ /dev/null
@@ -1,41 +0,0 @@
-module.exports = isexe
-isexe.sync = sync
-
-var fs = require('fs')
-
-function isexe (path, options, cb) {
- fs.stat(path, function (er, stat) {
- cb(er, er ? false : checkStat(stat, options))
- })
-}
-
-function sync (path, options) {
- return checkStat(fs.statSync(path), options)
-}
-
-function checkStat (stat, options) {
- return stat.isFile() && checkMode(stat, options)
-}
-
-function checkMode (stat, options) {
- var mod = stat.mode
- var uid = stat.uid
- var gid = stat.gid
-
- var myUid = options.uid !== undefined ?
- options.uid : process.getuid && process.getuid()
- var myGid = options.gid !== undefined ?
- options.gid : process.getgid && process.getgid()
-
- var u = parseInt('100', 8)
- var g = parseInt('010', 8)
- var o = parseInt('001', 8)
- var ug = u | g
-
- var ret = (mod & o) ||
- (mod & g) && gid === myGid ||
- (mod & u) && uid === myUid ||
- (mod & ug) && myUid === 0
-
- return ret
-}
diff --git a/assets/node_modules/isexe/package.json b/assets/node_modules/isexe/package.json
deleted file mode 100644
index e452689..0000000
--- a/assets/node_modules/isexe/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "isexe",
- "version": "2.0.0",
- "description": "Minimal module to check if a file is executable.",
- "main": "index.js",
- "directories": {
- "test": "test"
- },
- "devDependencies": {
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.0",
- "tap": "^10.3.0"
- },
- "scripts": {
- "test": "tap test/*.js --100",
- "preversion": "npm test",
- "postversion": "npm publish",
- "postpublish": "git push origin --all; git push origin --tags"
- },
- "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
- "license": "ISC",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/isaacs/isexe.git"
- },
- "keywords": [],
- "bugs": {
- "url": "https://github.com/isaacs/isexe/issues"
- },
- "homepage": "https://github.com/isaacs/isexe#readme"
-}
diff --git a/assets/node_modules/isexe/test/basic.js b/assets/node_modules/isexe/test/basic.js
deleted file mode 100644
index d926df6..0000000
--- a/assets/node_modules/isexe/test/basic.js
+++ /dev/null
@@ -1,221 +0,0 @@
-var t = require('tap')
-var fs = require('fs')
-var path = require('path')
-var fixture = path.resolve(__dirname, 'fixtures')
-var meow = fixture + '/meow.cat'
-var mine = fixture + '/mine.cat'
-var ours = fixture + '/ours.cat'
-var fail = fixture + '/fail.false'
-var noent = fixture + '/enoent.exe'
-var mkdirp = require('mkdirp')
-var rimraf = require('rimraf')
-
-var isWindows = process.platform === 'win32'
-var hasAccess = typeof fs.access === 'function'
-var winSkip = isWindows && 'windows'
-var accessSkip = !hasAccess && 'no fs.access function'
-var hasPromise = typeof Promise === 'function'
-var promiseSkip = !hasPromise && 'no global Promise'
-
-function reset () {
- delete require.cache[require.resolve('../')]
- return require('../')
-}
-
-t.test('setup fixtures', function (t) {
- rimraf.sync(fixture)
- mkdirp.sync(fixture)
- fs.writeFileSync(meow, '#!/usr/bin/env cat\nmeow\n')
- fs.chmodSync(meow, parseInt('0755', 8))
- fs.writeFileSync(fail, '#!/usr/bin/env false\n')
- fs.chmodSync(fail, parseInt('0644', 8))
- fs.writeFileSync(mine, '#!/usr/bin/env cat\nmine\n')
- fs.chmodSync(mine, parseInt('0744', 8))
- fs.writeFileSync(ours, '#!/usr/bin/env cat\nours\n')
- fs.chmodSync(ours, parseInt('0754', 8))
- t.end()
-})
-
-t.test('promise', { skip: promiseSkip }, function (t) {
- var isexe = reset()
- t.test('meow async', function (t) {
- isexe(meow).then(function (is) {
- t.ok(is)
- t.end()
- })
- })
- t.test('fail async', function (t) {
- isexe(fail).then(function (is) {
- t.notOk(is)
- t.end()
- })
- })
- t.test('noent async', function (t) {
- isexe(noent).catch(function (er) {
- t.ok(er)
- t.end()
- })
- })
- t.test('noent ignore async', function (t) {
- isexe(noent, { ignoreErrors: true }).then(function (is) {
- t.notOk(is)
- t.end()
- })
- })
- t.end()
-})
-
-t.test('no promise', function (t) {
- global.Promise = null
- var isexe = reset()
- t.throws('try to meow a promise', function () {
- isexe(meow)
- })
- t.end()
-})
-
-t.test('access', { skip: accessSkip || winSkip }, function (t) {
- runTest(t)
-})
-
-t.test('mode', { skip: winSkip }, function (t) {
- delete fs.access
- delete fs.accessSync
- var isexe = reset()
- t.ok(isexe.sync(ours, { uid: 0, gid: 0 }))
- t.ok(isexe.sync(mine, { uid: 0, gid: 0 }))
- runTest(t)
-})
-
-t.test('windows', function (t) {
- global.TESTING_WINDOWS = true
- var pathExt = '.EXE;.CAT;.CMD;.COM'
- t.test('pathExt option', function (t) {
- runTest(t, { pathExt: '.EXE;.CAT;.CMD;.COM' })
- })
- t.test('pathExt env', function (t) {
- process.env.PATHEXT = pathExt
- runTest(t)
- })
- t.test('no pathExt', function (t) {
- // with a pathExt of '', any filename is fine.
- // so the "fail" one would still pass.
- runTest(t, { pathExt: '', skipFail: true })
- })
- t.test('pathext with empty entry', function (t) {
- // with a pathExt of '', any filename is fine.
- // so the "fail" one would still pass.
- runTest(t, { pathExt: ';' + pathExt, skipFail: true })
- })
- t.end()
-})
-
-t.test('cleanup', function (t) {
- rimraf.sync(fixture)
- t.end()
-})
-
-function runTest (t, options) {
- var isexe = reset()
-
- var optionsIgnore = Object.create(options || {})
- optionsIgnore.ignoreErrors = true
-
- if (!options || !options.skipFail) {
- t.notOk(isexe.sync(fail, options))
- }
- t.notOk(isexe.sync(noent, optionsIgnore))
- if (!options) {
- t.ok(isexe.sync(meow))
- } else {
- t.ok(isexe.sync(meow, options))
- }
-
- t.ok(isexe.sync(mine, options))
- t.ok(isexe.sync(ours, options))
- t.throws(function () {
- isexe.sync(noent, options)
- })
-
- t.test('meow async', function (t) {
- if (!options) {
- isexe(meow, function (er, is) {
- if (er) {
- throw er
- }
- t.ok(is)
- t.end()
- })
- } else {
- isexe(meow, options, function (er, is) {
- if (er) {
- throw er
- }
- t.ok(is)
- t.end()
- })
- }
- })
-
- t.test('mine async', function (t) {
- isexe(mine, options, function (er, is) {
- if (er) {
- throw er
- }
- t.ok(is)
- t.end()
- })
- })
-
- t.test('ours async', function (t) {
- isexe(ours, options, function (er, is) {
- if (er) {
- throw er
- }
- t.ok(is)
- t.end()
- })
- })
-
- if (!options || !options.skipFail) {
- t.test('fail async', function (t) {
- isexe(fail, options, function (er, is) {
- if (er) {
- throw er
- }
- t.notOk(is)
- t.end()
- })
- })
- }
-
- t.test('noent async', function (t) {
- isexe(noent, options, function (er, is) {
- t.ok(er)
- t.notOk(is)
- t.end()
- })
- })
-
- t.test('noent ignore async', function (t) {
- isexe(noent, optionsIgnore, function (er, is) {
- if (er) {
- throw er
- }
- t.notOk(is)
- t.end()
- })
- })
-
- t.test('directory is not executable', function (t) {
- isexe(__dirname, options, function (er, is) {
- if (er) {
- throw er
- }
- t.notOk(is)
- t.end()
- })
- })
-
- t.end()
-}
diff --git a/assets/node_modules/isexe/windows.js b/assets/node_modules/isexe/windows.js
deleted file mode 100644
index 3499673..0000000
--- a/assets/node_modules/isexe/windows.js
+++ /dev/null
@@ -1,42 +0,0 @@
-module.exports = isexe
-isexe.sync = sync
-
-var fs = require('fs')
-
-function checkPathExt (path, options) {
- var pathext = options.pathExt !== undefined ?
- options.pathExt : process.env.PATHEXT
-
- if (!pathext) {
- return true
- }
-
- pathext = pathext.split(';')
- if (pathext.indexOf('') !== -1) {
- return true
- }
- for (var i = 0; i < pathext.length; i++) {
- var p = pathext[i].toLowerCase()
- if (p && path.substr(-p.length).toLowerCase() === p) {
- return true
- }
- }
- return false
-}
-
-function checkStat (stat, path, options) {
- if (!stat.isSymbolicLink() && !stat.isFile()) {
- return false
- }
- return checkPathExt(path, options)
-}
-
-function isexe (path, options, cb) {
- fs.stat(path, function (er, stat) {
- cb(er, er ? false : checkStat(stat, path, options))
- })
-}
-
-function sync (path, options) {
- return checkStat(fs.statSync(path), path, options)
-}
diff --git a/assets/node_modules/js-tokens/CHANGELOG.md b/assets/node_modules/js-tokens/CHANGELOG.md
deleted file mode 100644
index 755e6f6..0000000
--- a/assets/node_modules/js-tokens/CHANGELOG.md
+++ /dev/null
@@ -1,151 +0,0 @@
-### Version 4.0.0 (2018-01-28) ###
-
-- Added: Support for ES2018. The only change needed was recognizing the `s`
- regex flag.
-- Changed: _All_ tokens returned by the `matchToToken` function now have a
- `closed` property. It is set to `undefined` for the tokens where “closed”
- doesn’t make sense. This means that all tokens objects have the same shape,
- which might improve performance.
-
-These are the breaking changes:
-
-- `'/a/s'.match(jsTokens)` no longer returns `['/', 'a', '/', 's']`, but
- `['/a/s']`. (There are of course other variations of this.)
-- Code that rely on some token objects not having the `closed` property could
- now behave differently.
-
-
-### Version 3.0.2 (2017-06-28) ###
-
-- No code changes. Just updates to the readme.
-
-
-### Version 3.0.1 (2017-01-30) ###
-
-- Fixed: ES2015 unicode escapes with more than 6 hex digits are now matched
- correctly.
-
-
-### Version 3.0.0 (2017-01-11) ###
-
-This release contains one breaking change, that should [improve performance in
-V8][v8-perf]:
-
-> So how can you, as a JavaScript developer, ensure that your RegExps are fast?
-> If you are not interested in hooking into RegExp internals, make sure that
-> neither the RegExp instance, nor its prototype is modified in order to get the
-> best performance:
->
-> ```js
-> var re = /./g;
-> re.exec(''); // Fast path.
-> re.new_property = 'slow';
-> ```
-
-This module used to export a single regex, with `.matchToToken` bolted
-on, just like in the above example. This release changes the exports of
-the module to avoid this issue.
-
-Before:
-
-```js
-import jsTokens from "js-tokens"
-// or:
-var jsTokens = require("js-tokens")
-var matchToToken = jsTokens.matchToToken
-```
-
-After:
-
-```js
-import jsTokens, {matchToToken} from "js-tokens"
-// or:
-var jsTokens = require("js-tokens").default
-var matchToToken = require("js-tokens").matchToToken
-```
-
-[v8-perf]: http://v8project.blogspot.se/2017/01/speeding-up-v8-regular-expressions.html
-
-
-### Version 2.0.0 (2016-06-19) ###
-
-- Added: Support for ES2016. In other words, support for the `**` exponentiation
- operator.
-
-These are the breaking changes:
-
-- `'**'.match(jsTokens)` no longer returns `['*', '*']`, but `['**']`.
-- `'**='.match(jsTokens)` no longer returns `['*', '*=']`, but `['**=']`.
-
-
-### Version 1.0.3 (2016-03-27) ###
-
-- Improved: Made the regex ever so slightly smaller.
-- Updated: The readme.
-
-
-### Version 1.0.2 (2015-10-18) ###
-
-- Improved: Limited npm package contents for a smaller download. Thanks to
- @zertosh!
-
-
-### Version 1.0.1 (2015-06-20) ###
-
-- Fixed: Declared an undeclared variable.
-
-
-### Version 1.0.0 (2015-02-26) ###
-
-- Changed: Merged the 'operator' and 'punctuation' types into 'punctuator'. That
- type is now equivalent to the Punctuator token in the ECMAScript
- specification. (Backwards-incompatible change.)
-- Fixed: A `-` followed by a number is now correctly matched as a punctuator
- followed by a number. It used to be matched as just a number, but there is no
- such thing as negative number literals. (Possibly backwards-incompatible
- change.)
-
-
-### Version 0.4.1 (2015-02-21) ###
-
-- Added: Support for the regex `u` flag.
-
-
-### Version 0.4.0 (2015-02-21) ###
-
-- Improved: `jsTokens.matchToToken` performance.
-- Added: Support for octal and binary number literals.
-- Added: Support for template strings.
-
-
-### Version 0.3.1 (2015-01-06) ###
-
-- Fixed: Support for unicode spaces. They used to be allowed in names (which is
- very confusing), and some unicode newlines were wrongly allowed in strings and
- regexes.
-
-
-### Version 0.3.0 (2014-12-19) ###
-
-- Changed: The `jsTokens.names` array has been replaced with the
- `jsTokens.matchToToken` function. The capturing groups of `jsTokens` are no
- longer part of the public API; instead use said function. See this [gist] for
- an example. (Backwards-incompatible change.)
-- Changed: The empty string is now considered an “invalid” token, instead an
- “empty” token (its own group). (Backwards-incompatible change.)
-- Removed: component support. (Backwards-incompatible change.)
-
-[gist]: https://gist.github.com/lydell/be49dbf80c382c473004
-
-
-### Version 0.2.0 (2014-06-19) ###
-
-- Changed: Match ES6 function arrows (`=>`) as an operator, instead of its own
- category (“functionArrow”), for simplicity. (Backwards-incompatible change.)
-- Added: ES6 splats (`...`) are now matched as an operator (instead of three
- punctuations). (Backwards-incompatible change.)
-
-
-### Version 0.1.0 (2014-03-08) ###
-
-- Initial release.
diff --git a/assets/node_modules/js-tokens/LICENSE b/assets/node_modules/js-tokens/LICENSE
deleted file mode 100644
index 54aef52..0000000
--- a/assets/node_modules/js-tokens/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/js-tokens/README.md b/assets/node_modules/js-tokens/README.md
deleted file mode 100644
index 00cdf16..0000000
--- a/assets/node_modules/js-tokens/README.md
+++ /dev/null
@@ -1,240 +0,0 @@
-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/assets/node_modules/js-tokens/index.js b/assets/node_modules/js-tokens/index.js
deleted file mode 100644
index b23a4a0..0000000
--- a/assets/node_modules/js-tokens/index.js
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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/assets/node_modules/js-tokens/package.json b/assets/node_modules/js-tokens/package.json
deleted file mode 100644
index 66752fa..0000000
--- a/assets/node_modules/js-tokens/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "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/assets/node_modules/jsesc/LICENSE-MIT.txt b/assets/node_modules/jsesc/LICENSE-MIT.txt
deleted file mode 100644
index a41e0a7..0000000
--- a/assets/node_modules/jsesc/LICENSE-MIT.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-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/assets/node_modules/jsesc/README.md b/assets/node_modules/jsesc/README.md
deleted file mode 100644
index aae2b13..0000000
--- a/assets/node_modules/jsesc/README.md
+++ /dev/null
@@ -1,421 +0,0 @@
-# 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/assets/node_modules/jsesc/bin/jsesc b/assets/node_modules/jsesc/bin/jsesc
deleted file mode 100755
index e9a541d..0000000
--- a/assets/node_modules/jsesc/bin/jsesc
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/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/assets/node_modules/jsesc/jsesc.js b/assets/node_modules/jsesc/jsesc.js
deleted file mode 100644
index 7b8b923..0000000
--- a/assets/node_modules/jsesc/jsesc.js
+++ /dev/null
@@ -1,329 +0,0 @@
-'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/assets/node_modules/jsesc/man/jsesc.1 b/assets/node_modules/jsesc/man/jsesc.1
deleted file mode 100644
index 2655ee7..0000000
--- a/assets/node_modules/jsesc/man/jsesc.1
+++ /dev/null
@@ -1,94 +0,0 @@
-.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/assets/node_modules/jsesc/package.json b/assets/node_modules/jsesc/package.json
deleted file mode 100644
index f89a7c6..0000000
--- a/assets/node_modules/jsesc/package.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "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/assets/node_modules/json-parse-better-errors/CHANGELOG.md b/assets/node_modules/json-parse-better-errors/CHANGELOG.md
deleted file mode 100644
index b1d212d..0000000
--- a/assets/node_modules/json-parse-better-errors/CHANGELOG.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-
-<a name="1.0.2"></a>
-## [1.0.2](https://github.com/zkat/json-parse-better-errors/compare/v1.0.1...v1.0.2) (2018-03-30)
-
-
-### Bug Fixes
-
-* **messages:** More friendly messages for non-string ([#1](https://github.com/zkat/json-parse-better-errors/issues/1)) ([a476d42](https://github.com/zkat/json-parse-better-errors/commit/a476d42))
-
-
-
-<a name="1.0.1"></a>
-## [1.0.1](https://github.com/zkat/json-parse-better-errors/compare/v1.0.0...v1.0.1) (2017-08-16)
-
-
-### Bug Fixes
-
-* **license:** oops. Forgot to update license.md ([efe2958](https://github.com/zkat/json-parse-better-errors/commit/efe2958))
-
-
-
-<a name="1.0.0"></a>
-# 1.0.0 (2017-08-15)
-
-
-### Features
-
-* **init:** Initial Commit ([562c977](https://github.com/zkat/json-parse-better-errors/commit/562c977))
-
-
-### BREAKING CHANGES
-
-* **init:** This is the first commit!
-
-
-
-<a name="0.1.0"></a>
-# 0.1.0 (2017-08-15)
-
-
-### Features
-
-* **init:** Initial Commit ([9dd1a19](https://github.com/zkat/json-parse-better-errors/commit/9dd1a19))
diff --git a/assets/node_modules/json-parse-better-errors/LICENSE.md b/assets/node_modules/json-parse-better-errors/LICENSE.md
deleted file mode 100644
index c51842c..0000000
--- a/assets/node_modules/json-parse-better-errors/LICENSE.md
+++ /dev/null
@@ -1,7 +0,0 @@
-Copyright 2017 Kat Marchán
-
-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/assets/node_modules/json-parse-better-errors/README.md b/assets/node_modules/json-parse-better-errors/README.md
deleted file mode 100644
index a1f0f0a..0000000
--- a/assets/node_modules/json-parse-better-errors/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# json-parse-better-errors [![npm version](https://img.shields.io/npm/v/json-parse-better-errors.svg)](https://npm.im/json-parse-better-errors) [![license](https://img.shields.io/npm/l/json-parse-better-errors.svg)](https://npm.im/json-parse-better-errors) [![Travis](https://img.shields.io/travis/zkat/json-parse-better-errors.svg)](https://travis-ci.org/zkat/json-parse-better-errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/github/zkat/json-parse-better-errors?svg=true)](https://ci.appveyor.com/project/zkat/json-parse-better-errors) [![Coverage Status](https://coveralls.io/repos/github/zkat/json-parse-better-errors/badge.svg?branch=latest)](https://coveralls.io/github/zkat/json-parse-better-errors?branch=latest)
-
-[`json-parse-better-errors`](https://github.com/zkat/json-parse-better-errors) is a Node.js library for
-getting nicer errors out of `JSON.parse()`, including context and position of the parse errors.
-
-## Install
-
-`$ npm install --save json-parse-better-errors`
-
-## Table of Contents
-
-* [Example](#example)
-* [Features](#features)
-* [Contributing](#contributing)
-* [API](#api)
- * [`parse`](#parse)
-
-### Example
-
-```javascript
-const parseJson = require('json-parse-better-errors')
-
-parseJson('"foo"')
-parseJson('garbage') // more useful error message
-```
-
-### Features
-
-* Like JSON.parse, but the errors are better.
-
-### Contributing
-
-The npm team enthusiastically welcomes contributions and project participation! There's a bunch of things you can do if you want to contribute! The [Contributor Guide](CONTRIBUTING.md) has all the information you need for everything from reporting bugs to contributing entire new features. Please don't hesitate to jump in if you'd like to, or even ask us questions if something isn't clear.
-
-All participants and maintainers in this project are expected to follow [Code of Conduct](CODE_OF_CONDUCT.md), and just generally be excellent to each other.
-
-Please refer to the [Changelog](CHANGELOG.md) for project history details, too.
-
-Happy hacking!
-
-### API
-
-#### <a name="parse"></a> `> parse(txt, ?reviver, ?context=20)`
-
-Works just like `JSON.parse`, but will include a bit more information when an
-error happens.
diff --git a/assets/node_modules/json-parse-better-errors/index.js b/assets/node_modules/json-parse-better-errors/index.js
deleted file mode 100644
index 14644c2..0000000
--- a/assets/node_modules/json-parse-better-errors/index.js
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict'
-
-module.exports = parseJson
-function parseJson (txt, reviver, context) {
- context = context || 20
- try {
- return JSON.parse(txt, reviver)
- } catch (e) {
- if (typeof txt !== 'string') {
- const isEmptyArray = Array.isArray(txt) && txt.length === 0
- const errorMessage = 'Cannot parse ' +
- (isEmptyArray ? 'an empty array' : String(txt))
- throw new TypeError(errorMessage)
- }
- const syntaxErr = e.message.match(/^Unexpected token.*position\s+(\d+)/i)
- const errIdx = syntaxErr
- ? +syntaxErr[1]
- : e.message.match(/^Unexpected end of JSON.*/i)
- ? txt.length - 1
- : null
- if (errIdx != null) {
- const start = errIdx <= context
- ? 0
- : errIdx - context
- const end = errIdx + context >= txt.length
- ? txt.length
- : errIdx + context
- e.message += ` while parsing near '${
- start === 0 ? '' : '...'
- }${txt.slice(start, end)}${
- end === txt.length ? '' : '...'
- }'`
- } else {
- e.message += ` while parsing '${txt.slice(0, context * 2)}'`
- }
- throw e
- }
-}
diff --git a/assets/node_modules/json-parse-better-errors/package.json b/assets/node_modules/json-parse-better-errors/package.json
deleted file mode 100644
index c4c2c20..0000000
--- a/assets/node_modules/json-parse-better-errors/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "json-parse-better-errors",
- "version": "1.0.2",
- "description": "JSON.parse with context information on error",
- "main": "index.js",
- "files": [
- "*.js"
- ],
- "scripts": {
- "prerelease": "npm t",
- "postrelease": "npm publish && git push --follow-tags",
- "pretest": "standard",
- "release": "standard-version -s",
- "test": "tap -J --coverage test/*.js",
- "update-coc": "weallbehave -o . && git add CODE_OF_CONDUCT.md && git commit -m 'docs(coc): updated CODE_OF_CONDUCT.md'",
- "update-contrib": "weallcontribute -o . && git add CONTRIBUTING.md && git commit -m 'docs(contributing): updated CONTRIBUTING.md'"
- },
- "repository": "https://github.com/zkat/json-parse-better-errors",
- "keywords": [
- "JSON",
- "parser"
- ],
- "author": {
- "name": "Kat Marchán",
- "email": "kzm@zkat.tech",
- "twitter": "maybekatz"
- },
- "license": "MIT",
- "devDependencies": {
- "nyc": "^10.3.2",
- "standard": "^9.0.2",
- "standard-version": "^4.1.0",
- "tap": "^10.3.3",
- "weallbehave": "^1.2.0",
- "weallcontribute": "^1.0.8"
- },
- "config": {
- "nyc": {
- "exclude": [
- "node_modules/**",
- "test/**"
- ]
- }
- }
-}
diff --git a/assets/node_modules/json-schema-traverse/.eslintrc.yml b/assets/node_modules/json-schema-traverse/.eslintrc.yml
deleted file mode 100644
index ab1762d..0000000
--- a/assets/node_modules/json-schema-traverse/.eslintrc.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-extends: eslint:recommended
-env:
- node: true
- browser: true
-rules:
- block-scoped-var: 2
- complexity: [2, 13]
- curly: [2, multi-or-nest, consistent]
- dot-location: [2, property]
- dot-notation: 2
- indent: [2, 2, SwitchCase: 1]
- linebreak-style: [2, unix]
- new-cap: 2
- no-console: [2, allow: [warn, error]]
- no-else-return: 2
- no-eq-null: 2
- no-fallthrough: 2
- no-invalid-this: 2
- no-return-assign: 2
- no-shadow: 1
- no-trailing-spaces: 2
- no-use-before-define: [2, nofunc]
- quotes: [2, single, avoid-escape]
- semi: [2, always]
- strict: [2, global]
- valid-jsdoc: [2, requireReturn: false]
- no-control-regex: 0
diff --git a/assets/node_modules/json-schema-traverse/.travis.yml b/assets/node_modules/json-schema-traverse/.travis.yml
deleted file mode 100644
index 7ddce74..0000000
--- a/assets/node_modules/json-schema-traverse/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: node_js
-node_js:
- - "4"
- - "6"
- - "7"
- - "8"
-after_script:
- - coveralls < coverage/lcov.info
diff --git a/assets/node_modules/json-schema-traverse/LICENSE b/assets/node_modules/json-schema-traverse/LICENSE
deleted file mode 100644
index 7f15435..0000000
--- a/assets/node_modules/json-schema-traverse/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2017 Evgeny Poberezkin
-
-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/assets/node_modules/json-schema-traverse/README.md b/assets/node_modules/json-schema-traverse/README.md
deleted file mode 100644
index d5ccaf4..0000000
--- a/assets/node_modules/json-schema-traverse/README.md
+++ /dev/null
@@ -1,83 +0,0 @@
-# json-schema-traverse
-Traverse JSON Schema passing each schema object to callback
-
-[![Build Status](https://travis-ci.org/epoberezkin/json-schema-traverse.svg?branch=master)](https://travis-ci.org/epoberezkin/json-schema-traverse)
-[![npm version](https://badge.fury.io/js/json-schema-traverse.svg)](https://www.npmjs.com/package/json-schema-traverse)
-[![Coverage Status](https://coveralls.io/repos/github/epoberezkin/json-schema-traverse/badge.svg?branch=master)](https://coveralls.io/github/epoberezkin/json-schema-traverse?branch=master)
-
-
-## Install
-
-```
-npm install json-schema-traverse
-```
-
-
-## Usage
-
-```javascript
-const traverse = require('json-schema-traverse');
-const schema = {
- properties: {
- foo: {type: 'string'},
- bar: {type: 'integer'}
- }
-};
-
-traverse(schema, {cb});
-// cb is called 3 times with:
-// 1. root schema
-// 2. {type: 'string'}
-// 3. {type: 'integer'}
-
-// Or:
-
-traverse(schema, {cb: {pre, post}});
-// pre is called 3 times with:
-// 1. root schema
-// 2. {type: 'string'}
-// 3. {type: 'integer'}
-//
-// post is called 3 times with:
-// 1. {type: 'string'}
-// 2. {type: 'integer'}
-// 3. root schema
-
-```
-
-Callback function `cb` is called for each schema object (not including draft-06 boolean schemas), including the root schema, in pre-order traversal. Schema references ($ref) are not resolved, they are passed as is. Alternatively, you can pass a `{pre, post}` object as `cb`, and then `pre` will be called before traversing child elements, and `post` will be called after all child elements have been traversed.
-
-Callback is passed these parameters:
-
-- _schema_: the current schema object
-- _JSON pointer_: from the root schema to the current schema object
-- _root schema_: the schema passed to `traverse` object
-- _parent JSON pointer_: from the root schema to the parent schema object (see below)
-- _parent keyword_: the keyword inside which this schema appears (e.g. `properties`, `anyOf`, etc.)
-- _parent schema_: not necessarily parent object/array; in the example above the parent schema for `{type: 'string'}` is the root schema
-- _index/property_: index or property name in the array/object containing multiple schemas; in the example above for `{type: 'string'}` the property name is `'foo'`
-
-
-## Traverse objects in all unknown keywords
-
-```javascript
-const traverse = require('json-schema-traverse');
-const schema = {
- mySchema: {
- minimum: 1,
- maximum: 2
- }
-};
-
-traverse(schema, {allKeys: true, cb});
-// cb is called 2 times with:
-// 1. root schema
-// 2. mySchema
-```
-
-Without option `allKeys: true` callback will be called only with root schema.
-
-
-## License
-
-[MIT](https://github.com/epoberezkin/json-schema-traverse/blob/master/LICENSE)
diff --git a/assets/node_modules/json-schema-traverse/index.js b/assets/node_modules/json-schema-traverse/index.js
deleted file mode 100644
index d4a18df..0000000
--- a/assets/node_modules/json-schema-traverse/index.js
+++ /dev/null
@@ -1,89 +0,0 @@
-'use strict';
-
-var traverse = module.exports = function (schema, opts, cb) {
- // Legacy support for v0.3.1 and earlier.
- if (typeof opts == 'function') {
- cb = opts;
- opts = {};
- }
-
- cb = opts.cb || cb;
- var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};
- var post = cb.post || function() {};
-
- _traverse(opts, pre, post, schema, '', schema);
-};
-
-
-traverse.keywords = {
- additionalItems: true,
- items: true,
- contains: true,
- additionalProperties: true,
- propertyNames: true,
- not: true
-};
-
-traverse.arrayKeywords = {
- items: true,
- allOf: true,
- anyOf: true,
- oneOf: true
-};
-
-traverse.propsKeywords = {
- definitions: true,
- properties: true,
- patternProperties: true,
- dependencies: true
-};
-
-traverse.skipKeywords = {
- default: true,
- enum: true,
- const: true,
- required: true,
- maximum: true,
- minimum: true,
- exclusiveMaximum: true,
- exclusiveMinimum: true,
- multipleOf: true,
- maxLength: true,
- minLength: true,
- pattern: true,
- format: true,
- maxItems: true,
- minItems: true,
- uniqueItems: true,
- maxProperties: true,
- minProperties: true
-};
-
-
-function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {
- if (schema && typeof schema == 'object' && !Array.isArray(schema)) {
- pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
- for (var key in schema) {
- var sch = schema[key];
- if (Array.isArray(sch)) {
- if (key in traverse.arrayKeywords) {
- for (var i=0; i<sch.length; i++)
- _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);
- }
- } else if (key in traverse.propsKeywords) {
- if (sch && typeof sch == 'object') {
- for (var prop in sch)
- _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);
- }
- } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {
- _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);
- }
- }
- post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
- }
-}
-
-
-function escapeJsonPtr(str) {
- return str.replace(/~/g, '~0').replace(/\//g, '~1');
-}
diff --git a/assets/node_modules/json-schema-traverse/package.json b/assets/node_modules/json-schema-traverse/package.json
deleted file mode 100644
index 1566063..0000000
--- a/assets/node_modules/json-schema-traverse/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "json-schema-traverse",
- "version": "0.4.1",
- "description": "Traverse JSON Schema passing each schema object to callback",
- "main": "index.js",
- "scripts": {
- "eslint": "eslint index.js spec",
- "test-spec": "mocha spec -R spec",
- "test": "npm run eslint && nyc npm run test-spec"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/epoberezkin/json-schema-traverse.git"
- },
- "keywords": [
- "JSON-Schema",
- "traverse",
- "iterate"
- ],
- "author": "Evgeny Poberezkin",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/epoberezkin/json-schema-traverse/issues"
- },
- "homepage": "https://github.com/epoberezkin/json-schema-traverse#readme",
- "devDependencies": {
- "coveralls": "^2.13.1",
- "eslint": "^3.19.0",
- "mocha": "^3.4.2",
- "nyc": "^11.0.2",
- "pre-commit": "^1.2.2"
- },
- "nyc": {
- "exclude": [
- "**/spec/**",
- "node_modules"
- ],
- "reporter": [
- "lcov",
- "text-summary"
- ]
- }
-}
diff --git a/assets/node_modules/json-schema-traverse/spec/.eslintrc.yml b/assets/node_modules/json-schema-traverse/spec/.eslintrc.yml
deleted file mode 100644
index 3344da7..0000000
--- a/assets/node_modules/json-schema-traverse/spec/.eslintrc.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-parserOptions:
- ecmaVersion: 6
-globals:
- beforeEach: false
- describe: false
- it: false
diff --git a/assets/node_modules/json-schema-traverse/spec/fixtures/schema.js b/assets/node_modules/json-schema-traverse/spec/fixtures/schema.js
deleted file mode 100644
index c51430c..0000000
--- a/assets/node_modules/json-schema-traverse/spec/fixtures/schema.js
+++ /dev/null
@@ -1,125 +0,0 @@
-'use strict';
-
-var schema = {
- additionalItems: subschema('additionalItems'),
- items: subschema('items'),
- contains: subschema('contains'),
- additionalProperties: subschema('additionalProperties'),
- propertyNames: subschema('propertyNames'),
- not: subschema('not'),
- allOf: [
- subschema('allOf_0'),
- subschema('allOf_1'),
- {
- items: [
- subschema('items_0'),
- subschema('items_1'),
- ]
- }
- ],
- anyOf: [
- subschema('anyOf_0'),
- subschema('anyOf_1'),
- ],
- oneOf: [
- subschema('oneOf_0'),
- subschema('oneOf_1'),
- ],
- definitions: {
- foo: subschema('definitions_foo'),
- bar: subschema('definitions_bar'),
- },
- properties: {
- foo: subschema('properties_foo'),
- bar: subschema('properties_bar'),
- },
- patternProperties: {
- foo: subschema('patternProperties_foo'),
- bar: subschema('patternProperties_bar'),
- },
- dependencies: {
- foo: subschema('dependencies_foo'),
- bar: subschema('dependencies_bar'),
- },
- required: ['foo', 'bar']
-};
-
-
-function subschema(keyword) {
- var sch = {
- properties: {},
- additionalProperties: false,
- additionalItems: false,
- anyOf: [
- {format: 'email'},
- {format: 'hostname'}
- ]
- };
- sch.properties['foo_' + keyword] = {title: 'foo'};
- sch.properties['bar_' + keyword] = {title: 'bar'};
- return sch;
-}
-
-
-module.exports = {
- schema: schema,
-
- // schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
- expectedCalls: [[schema, '', schema, undefined, undefined, undefined, undefined]]
- .concat(expectedCalls('additionalItems'))
- .concat(expectedCalls('items'))
- .concat(expectedCalls('contains'))
- .concat(expectedCalls('additionalProperties'))
- .concat(expectedCalls('propertyNames'))
- .concat(expectedCalls('not'))
- .concat(expectedCallsChild('allOf', 0))
- .concat(expectedCallsChild('allOf', 1))
- .concat([
- [schema.allOf[2], '/allOf/2', schema, '', 'allOf', schema, 2],
- [schema.allOf[2].items[0], '/allOf/2/items/0', schema, '/allOf/2', 'items', schema.allOf[2], 0],
- [schema.allOf[2].items[0].properties.foo_items_0, '/allOf/2/items/0/properties/foo_items_0', schema, '/allOf/2/items/0', 'properties', schema.allOf[2].items[0], 'foo_items_0'],
- [schema.allOf[2].items[0].properties.bar_items_0, '/allOf/2/items/0/properties/bar_items_0', schema, '/allOf/2/items/0', 'properties', schema.allOf[2].items[0], 'bar_items_0'],
- [schema.allOf[2].items[0].anyOf[0], '/allOf/2/items/0/anyOf/0', schema, '/allOf/2/items/0', 'anyOf', schema.allOf[2].items[0], 0],
- [schema.allOf[2].items[0].anyOf[1], '/allOf/2/items/0/anyOf/1', schema, '/allOf/2/items/0', 'anyOf', schema.allOf[2].items[0], 1],
-
- [schema.allOf[2].items[1], '/allOf/2/items/1', schema, '/allOf/2', 'items', schema.allOf[2], 1],
- [schema.allOf[2].items[1].properties.foo_items_1, '/allOf/2/items/1/properties/foo_items_1', schema, '/allOf/2/items/1', 'properties', schema.allOf[2].items[1], 'foo_items_1'],
- [schema.allOf[2].items[1].properties.bar_items_1, '/allOf/2/items/1/properties/bar_items_1', schema, '/allOf/2/items/1', 'properties', schema.allOf[2].items[1], 'bar_items_1'],
- [schema.allOf[2].items[1].anyOf[0], '/allOf/2/items/1/anyOf/0', schema, '/allOf/2/items/1', 'anyOf', schema.allOf[2].items[1], 0],
- [schema.allOf[2].items[1].anyOf[1], '/allOf/2/items/1/anyOf/1', schema, '/allOf/2/items/1', 'anyOf', schema.allOf[2].items[1], 1]
- ])
- .concat(expectedCallsChild('anyOf', 0))
- .concat(expectedCallsChild('anyOf', 1))
- .concat(expectedCallsChild('oneOf', 0))
- .concat(expectedCallsChild('oneOf', 1))
- .concat(expectedCallsChild('definitions', 'foo'))
- .concat(expectedCallsChild('definitions', 'bar'))
- .concat(expectedCallsChild('properties', 'foo'))
- .concat(expectedCallsChild('properties', 'bar'))
- .concat(expectedCallsChild('patternProperties', 'foo'))
- .concat(expectedCallsChild('patternProperties', 'bar'))
- .concat(expectedCallsChild('dependencies', 'foo'))
- .concat(expectedCallsChild('dependencies', 'bar'))
-};
-
-
-function expectedCalls(keyword) {
- return [
- [schema[keyword], `/${keyword}`, schema, '', keyword, schema, undefined],
- [schema[keyword].properties[`foo_${keyword}`], `/${keyword}/properties/foo_${keyword}`, schema, `/${keyword}`, 'properties', schema[keyword], `foo_${keyword}`],
- [schema[keyword].properties[`bar_${keyword}`], `/${keyword}/properties/bar_${keyword}`, schema, `/${keyword}`, 'properties', schema[keyword], `bar_${keyword}`],
- [schema[keyword].anyOf[0], `/${keyword}/anyOf/0`, schema, `/${keyword}`, 'anyOf', schema[keyword], 0],
- [schema[keyword].anyOf[1], `/${keyword}/anyOf/1`, schema, `/${keyword}`, 'anyOf', schema[keyword], 1]
- ];
-}
-
-
-function expectedCallsChild(keyword, i) {
- return [
- [schema[keyword][i], `/${keyword}/${i}`, schema, '', keyword, schema, i],
- [schema[keyword][i].properties[`foo_${keyword}_${i}`], `/${keyword}/${i}/properties/foo_${keyword}_${i}`, schema, `/${keyword}/${i}`, 'properties', schema[keyword][i], `foo_${keyword}_${i}`],
- [schema[keyword][i].properties[`bar_${keyword}_${i}`], `/${keyword}/${i}/properties/bar_${keyword}_${i}`, schema, `/${keyword}/${i}`, 'properties', schema[keyword][i], `bar_${keyword}_${i}`],
- [schema[keyword][i].anyOf[0], `/${keyword}/${i}/anyOf/0`, schema, `/${keyword}/${i}`, 'anyOf', schema[keyword][i], 0],
- [schema[keyword][i].anyOf[1], `/${keyword}/${i}/anyOf/1`, schema, `/${keyword}/${i}`, 'anyOf', schema[keyword][i], 1]
- ];
-}
diff --git a/assets/node_modules/json-schema-traverse/spec/index.spec.js b/assets/node_modules/json-schema-traverse/spec/index.spec.js
deleted file mode 100644
index c76b64f..0000000
--- a/assets/node_modules/json-schema-traverse/spec/index.spec.js
+++ /dev/null
@@ -1,171 +0,0 @@
-'use strict';
-
-var traverse = require('../index');
-var assert = require('assert');
-
-describe('json-schema-traverse', function() {
- var calls;
-
- beforeEach(function() {
- calls = [];
- });
-
- it('should traverse all keywords containing schemas recursively', function() {
- var schema = require('./fixtures/schema').schema;
- var expectedCalls = require('./fixtures/schema').expectedCalls;
-
- traverse(schema, {cb: callback});
- assert.deepStrictEqual(calls, expectedCalls);
- });
-
- describe('Legacy v0.3.1 API', function() {
- it('should traverse all keywords containing schemas recursively', function() {
- var schema = require('./fixtures/schema').schema;
- var expectedCalls = require('./fixtures/schema').expectedCalls;
-
- traverse(schema, callback);
- assert.deepStrictEqual(calls, expectedCalls);
- });
-
- it('should work when an options object is provided', function() {
- // schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
- var schema = require('./fixtures/schema').schema;
- var expectedCalls = require('./fixtures/schema').expectedCalls;
-
- traverse(schema, {}, callback);
- assert.deepStrictEqual(calls, expectedCalls);
- });
- });
-
-
- describe('allKeys option', function() {
- var schema = {
- someObject: {
- minimum: 1,
- maximum: 2
- }
- };
-
- it('should traverse objects with allKeys: true option', function() {
- // schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
- var expectedCalls = [
- [schema, '', schema, undefined, undefined, undefined, undefined],
- [schema.someObject, '/someObject', schema, '', 'someObject', schema, undefined]
- ];
-
- traverse(schema, {allKeys: true, cb: callback});
- assert.deepStrictEqual(calls, expectedCalls);
- });
-
-
- it('should NOT traverse objects with allKeys: false option', function() {
- // schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
- var expectedCalls = [
- [schema, '', schema, undefined, undefined, undefined, undefined]
- ];
-
- traverse(schema, {allKeys: false, cb: callback});
- assert.deepStrictEqual(calls, expectedCalls);
- });
-
-
- it('should NOT traverse objects without allKeys option', function() {
- // schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
- var expectedCalls = [
- [schema, '', schema, undefined, undefined, undefined, undefined]
- ];
-
- traverse(schema, {cb: callback});
- assert.deepStrictEqual(calls, expectedCalls);
- });
-
-
- it('should NOT travers objects in standard keywords which value is not a schema', function() {
- var schema2 = {
- const: {foo: 'bar'},
- enum: ['a', 'b'],
- required: ['foo'],
- another: {
-
- },
- patternProperties: {}, // will not traverse - no properties
- dependencies: true, // will not traverse - invalid
- properties: {
- smaller: {
- type: 'number'
- },
- larger: {
- type: 'number',
- minimum: {$data: '1/smaller'}
- }
- }
- };
-
- // schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
- var expectedCalls = [
- [schema2, '', schema2, undefined, undefined, undefined, undefined],
- [schema2.another, '/another', schema2, '', 'another', schema2, undefined],
- [schema2.properties.smaller, '/properties/smaller', schema2, '', 'properties', schema2, 'smaller'],
- [schema2.properties.larger, '/properties/larger', schema2, '', 'properties', schema2, 'larger'],
- ];
-
- traverse(schema2, {allKeys: true, cb: callback});
- assert.deepStrictEqual(calls, expectedCalls);
- });
- });
-
- describe('pre and post', function() {
- var schema = {
- type: 'object',
- properties: {
- name: {type: 'string'},
- age: {type: 'number'}
- }
- };
-
- it('should traverse schema in pre-order', function() {
- traverse(schema, {cb: {pre}});
- var expectedCalls = [
- ['pre', schema, '', schema, undefined, undefined, undefined, undefined],
- ['pre', schema.properties.name, '/properties/name', schema, '', 'properties', schema, 'name'],
- ['pre', schema.properties.age, '/properties/age', schema, '', 'properties', schema, 'age'],
- ];
- assert.deepStrictEqual(calls, expectedCalls);
- });
-
- it('should traverse schema in post-order', function() {
- traverse(schema, {cb: {post}});
- var expectedCalls = [
- ['post', schema.properties.name, '/properties/name', schema, '', 'properties', schema, 'name'],
- ['post', schema.properties.age, '/properties/age', schema, '', 'properties', schema, 'age'],
- ['post', schema, '', schema, undefined, undefined, undefined, undefined],
- ];
- assert.deepStrictEqual(calls, expectedCalls);
- });
-
- it('should traverse schema in pre- and post-order at the same time', function() {
- traverse(schema, {cb: {pre, post}});
- var expectedCalls = [
- ['pre', schema, '', schema, undefined, undefined, undefined, undefined],
- ['pre', schema.properties.name, '/properties/name', schema, '', 'properties', schema, 'name'],
- ['post', schema.properties.name, '/properties/name', schema, '', 'properties', schema, 'name'],
- ['pre', schema.properties.age, '/properties/age', schema, '', 'properties', schema, 'age'],
- ['post', schema.properties.age, '/properties/age', schema, '', 'properties', schema, 'age'],
- ['post', schema, '', schema, undefined, undefined, undefined, undefined],
- ];
- assert.deepStrictEqual(calls, expectedCalls);
- });
- });
-
- function callback() {
- calls.push(Array.prototype.slice.call(arguments));
- }
-
- function pre() {
- calls.push(['pre'].concat(Array.prototype.slice.call(arguments)));
- }
-
- function post() {
- calls.push(['post'].concat(Array.prototype.slice.call(arguments)));
- }
-});
diff --git a/assets/node_modules/json5/CHANGELOG.md b/assets/node_modules/json5/CHANGELOG.md
deleted file mode 100644
index 25d2d8e..0000000
--- a/assets/node_modules/json5/CHANGELOG.md
+++ /dev/null
@@ -1,329 +0,0 @@
-### v2.1.1 [[code][c2.1.1], [diff][d2.1.1]]
-
-[c2.1.1]: https://github.com/json5/json5/tree/v2.1.1
-[d2.1.1]: https://github.com/json5/json5/compare/v2.0.1...v2.1.1
-
-- New: `package.json` and `package.json5` include a `module` property so
- bundlers like webpack, rollup and parcel can take advantage of the ES Module
- build. ([#208])
-- Fix: `stringify` outputs `\0` as `\\x00` when followed by a digit. ([#210])
-- Fix: Spelling mistakes have been fixed. ([#196])
-
-### v2.1.0 [[code][c2.1.0], [diff][d2.1.0]]
-
-[c2.1.0]: https://github.com/json5/json5/tree/v2.1.0
-[d2.1.0]: https://github.com/json5/json5/compare/v2.0.1...v2.1.0
-
-- New: The `index.mjs` and `index.min.mjs` browser builds in the `dist`
- directory support ES6 modules. ([#187])
-
-### v2.0.1 [[code][c2.0.1], [diff][d2.0.1]]
-
-[c2.0.1]: https://github.com/json5/json5/tree/v2.0.1
-[d2.0.1]: https://github.com/json5/json5/compare/v2.0.0...v2.0.1
-
-- Fix: The browser builds in the `dist` directory support ES5. ([#182])
-
-### v2.0.0 [[code][c2.0.0], [diff][d2.0.0]]
-
-[c2.0.0]: https://github.com/json5/json5/tree/v2.0.0
-[d2.0.0]: https://github.com/json5/json5/compare/v1.0.1...v2.0.0
-
-- **Major**: JSON5 officially supports Node.js v6 and later. Support for Node.js
- v4 has been dropped. Since Node.js v6 supports ES5 features, the code has been
- rewritten in native ES5, and the dependence on Babel has been eliminated.
-
-- New: Support for Unicode 10 has been added.
-
-- New: The test framework has been migrated from Mocha to Tap.
-
-- New: The browser build at `dist/index.js` is no longer minified by default. A
- minified version is available at `dist/index.min.js`. ([#181])
-
-- Fix: The warning has been made clearer when line and paragraph separators are
- used in strings.
-
-- Fix: `package.json5` has been restored, and it is automatically generated and
- committed when the version is bumped. A new `build-package` NPM script has
- been added to facilitate this.
-
-### v1.0.1 [[code][c1.0.1], [diff][d1.0.1]]
-
-[c1.0.1]: https://github.com/json5/json5/tree/v1.0.1
-[d1.0.1]: https://github.com/json5/json5/compare/v1.0.0...v1.0.1
-
-This release includes a bug fix and minor change.
-
-- Fix: `parse` throws on unclosed objects and arrays.
-
-- New: `package.json5` has been removed until an easier way to keep it in sync
- with `package.json` is found.
-
-
-### v1.0.0 [[code][c1.0.0], [diff][d1.0.0]]
-
-[c1.0.0]: https://github.com/json5/json5/tree/v1.0.0
-[d1.0.0]: https://github.com/json5/json5/compare/v0.5.1...v1.0.0
-
-This release includes major internal changes and public API enhancements.
-
-- **Major**: JSON5 officially supports Node.js v4 and later. Support for Node.js
- v0.10 and v0.12 have been dropped.
-
-- New: Unicode property names and Unicode escapes in property names are
- supported. ([#1])
-
-- New: `stringify` outputs trailing commas in objects and arrays when a `space`
- option is provided. ([#66])
-
-- New: JSON5 allows line and paragraph separator characters (U+2028 and U+2029)
- in strings in order to be compatible with JSON. However, ES5 does not allow
- these characters in strings, so JSON5 gives a warning when they are parsed and
- escapes them when they are stringified. ([#70])
-
-- New: `stringify` accepts an options object as its second argument. The
- supported options are `replacer`, `space`, and a new `quote` option that
- specifies the quote character used in strings. ([#71])
-
-- New: The CLI supports STDIN and STDOUT and adds `--out-file`, `--space`, and
- `--validate` options. See `json5 --help` for more information. ([#72], [#84],
- and [#108])
-
-- New: In addition to the white space characters space `\t`, `\v`, `\f`, `\n`,
- `\r`, and `\xA0`, the additional white space characters `\u2028`, `\u2029`,
- and all other characters in the Space Separator Unicode category are allowed.
-
-- New: In addition to the character escapes `\'`, `\"`, `\\`, `\b`, `\f`, `\n`,
- `\r`, and `\t`, the additional character escapes `\v` and `\0`, hexadecimal
- escapes like `\x0F`, and unnecessary escapes like `\a` are allowed in string
- values and string property names.
-
-- New: `stringify` outputs strings with single quotes by default but
- intelligently uses double quotes if there are more single quotes than double
- quotes inside the string. (i.e. `stringify('Stay here.')` outputs
- `'Stay here.'` while `stringify('Let\'s go.')` outputs `"Let's go."`)
-
-- New: When a character is not allowed in a string, `stringify` outputs a
- character escape like `\t` when available, a hexadecimal escape like `\x0F`
- when the Unicode code point is less than 256, or a Unicode character escape
- like `\u01FF`, in that order.
-
-- New: `stringify` checks for a `toJSON5` method on objects and, if it exists,
- stringifies its return value instead of the object. `toJSON5` overrides
- `toJSON` if they both exist.
-
-- New: To `require` or `import` JSON5 files, use `require('json5/lib/register')`
- or `import 'json5/lib/register'`. Previous versions used `json5/lib/require`,
- which still exists for backward compatibility but is deprecated and will give
- a warning.
-
-- New: To use JSON5 in browsers, use the file at `dist/index.js` or
- `https://unpkg.com/json5@^1.0.0`.
-
-- Fix: `stringify` properly outputs `Infinity` and `NaN`. ([#67])
-
-- Fix: `isWord` no longer becomes a property of `JSON5` after calling
- `stringify`. ([#68] and [#89])
-
-- Fix: `stringify` no longer throws when an object does not have a `prototype`.
- ([#154])
-
-- Fix: `stringify` properly handles the `key` argument of `toJSON(key)` methods.
- `toJSON5(key)` follows this pattern.
-
-- Fix: `stringify` accepts `Number` and `String` objects as its `space`
- argument.
-
-- Fix: In addition to a function, `stringify` also accepts an array of keys to
- include in the output as its `replacer` argument. Numbers, `Number` objects,
- and `String` objects will be converted to a string if they are given as array
- values.
-
-
-### v0.5.1 [[code][c0.5.1], [diff][d0.5.1]]
-
-[c0.5.1]: https://github.com/json5/json5/tree/v0.5.1
-[d0.5.1]: https://github.com/json5/json5/compare/v0.5.0...v0.5.1
-
-This release includes a minor fix for indentations when stringifying empty
-arrays.
-
-- Fix: Indents no longer appear in empty arrays when stringified. ([#134])
-
-
-### v0.5.0 [[code][c0.5.0], [diff][d0.5.0]]
-
-[c0.5.0]: https://github.com/json5/json5/tree/v0.5.0
-[d0.5.0]: https://github.com/json5/json5/compare/v0.4.0...v0.5.0
-
-This release includes major internal changes and public API enhancements.
-
-- **Major:** JSON5 officially supports Node.js v4 LTS and v5. Support for
- Node.js v0.6 and v0.8 have been dropped, while support for v0.10 and v0.12
- remain.
-
-- Fix: YUI Compressor no longer fails when compressing json5.js. ([#97])
-
-- New: `parse` and the CLI provide line and column numbers when displaying error
- messages. ([#101]; awesome work by [@amb26].)
-
-
-### v0.4.0 [[code][c0.4.0], [diff][d0.4.0]]
-
-[c0.4.0]: https://github.com/json5/json5/tree/v0.4.0
-[d0.4.0]: https://github.com/json5/json5/compare/v0.2.0...v0.4.0
-
-Note that v0.3.0 was tagged, but never published to npm, so this v0.4.0
-changelog entry includes v0.3.0 features.
-
-This is a massive release that adds `stringify` support, among other things.
-
-- **Major:** `JSON5.stringify()` now exists!
- This method is analogous to the native `JSON.stringify()`;
- it just avoids quoting keys where possible.
- See the [usage documentation](./README.md#usage) for more.
- ([#32]; huge thanks and props [@aeisenberg]!)
-
-- New: `NaN` and `-NaN` are now allowed number literals.
- ([#30]; thanks [@rowanhill].)
-
-- New: Duplicate object keys are now allowed; the last value is used.
- This is the same behavior as JSON. ([#57]; thanks [@jordanbtucker].)
-
-- Fix: Properly handle various whitespace and newline cases now.
- E.g. JSON5 now properly supports escaped CR and CRLF newlines in strings,
- and JSON5 now accepts the same whitespace as JSON (stricter than ES5).
- ([#58], [#60], and [#63]; thanks [@jordanbtucker].)
-
-- New: Negative hexadecimal numbers (e.g. `-0xC8`) are allowed again.
- (They were disallowed in v0.2.0; see below.)
- It turns out they *are* valid in ES5, so JSON5 supports them now too.
- ([#36]; thanks [@jordanbtucker]!)
-
-
-### v0.2.0 [[code][c0.2.0], [diff][d0.2.0]]
-
-[c0.2.0]: https://github.com/json5/json5/tree/v0.2.0
-[d0.2.0]: https://github.com/json5/json5/compare/v0.1.0...v0.2.0
-
-This release fixes some bugs and adds some more utility features to help you
-express data more easily:
-
-- **Breaking:** Negative hexadecimal numbers (e.g. `-0xC8`) are rejected now.
- While V8 (e.g. Chrome and Node) supported them, it turns out they're invalid
- in ES5. This has been [fixed in V8][v8-hex-fix] (and by extension, Chrome
- and Node), so JSON5 officially rejects them now, too. ([#36])
-
-- New: Trailing decimal points in decimal numbers are allowed again.
- (They were disallowed in v0.1.0; see below.)
- They're allowed by ES5, and differentiating between integers and floats may
- make sense on some platforms. ([#16]; thanks [@Midar].)
-
-- New: `Infinity` and `-Infinity` are now allowed number literals.
- ([#30]; thanks [@pepkin88].)
-
-- New: Plus signs (`+`) in front of numbers are now allowed, since it can
- be helpful in some contexts to explicitly mark numbers as positive.
- (E.g. when a property represents changes or deltas.)
-
-- Fix: unescaped newlines in strings are rejected now.
- ([#24]; thanks [@Midar].)
-
-
-### v0.1.0 [[code][c0.1.0], [diff][d0.1.0]]
-
-[c0.1.0]: https://github.com/json5/json5/tree/v0.1.0
-[d0.1.0]: https://github.com/json5/json5/compare/v0.0.1...v0.1.0
-
-This release tightens JSON5 support and adds helpful utility features:
-
-- New: Support hexadecimal numbers. (Thanks [@MaxNanasy].)
-
-- Fix: Reject octal numbers properly now. Previously, they were accepted but
- improperly parsed as base-10 numbers. (Thanks [@MaxNanasy].)
-
-- **Breaking:** Reject "noctal" numbers now (base-10 numbers that begin with a
- leading zero). These are disallowed by both JSON5 and JSON, as well as by
- ES5's strict mode. (Thanks [@MaxNanasy].)
-
-- New: Support leading decimal points in decimal numbers.
- (Thanks [@MaxNanasy].)
-
-- **Breaking:** Reject trailing decimal points in decimal numbers now. These
- are disallowed by both JSON5 and JSON. (Thanks [@MaxNanasy].)
-
-- **Breaking:** Reject omitted elements in arrays now. These are disallowed by
- both JSON5 and JSON.
-
-- Fix: Throw proper `SyntaxError` instances on errors now.
-
-- New: Add Node.js `require()` hook. Register via `json5/lib/require`.
-
-- New: Add Node.js `json5` executable to compile JSON5 files to JSON.
-
-
-### v0.0.1 [[code][c0.0.1], [diff][d0.0.1]]
-
-[c0.0.1]: https://github.com/json5/json5/tree/v0.0.1
-[d0.0.1]: https://github.com/json5/json5/compare/v0.0.0...v0.0.1
-
-This was the first implementation of this JSON5 parser.
-
-- Support unquoted object keys, including reserved words. Unicode characters
- and escape sequences sequences aren't yet supported.
-
-- Support single-quoted strings.
-
-- Support multi-line strings.
-
-- Support trailing commas in arrays and objects.
-
-- Support comments, both inline and block.
-
-
-### v0.0.0 [[code](https://github.com/json5/json5/tree/v0.0.0)]
-
-Let's consider this to be Douglas Crockford's original [json_parse.js] — a
-parser for the regular JSON format.
-
-
-[json_parse.js]: https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js
-[v8-hex-fix]: http://code.google.com/p/v8/issues/detail?id=2240
-
-[@MaxNanasy]: https://github.com/MaxNanasy
-[@Midar]: https://github.com/Midar
-[@pepkin88]: https://github.com/pepkin88
-[@rowanhill]: https://github.com/rowanhill
-[@aeisenberg]: https://github.com/aeisenberg
-[@jordanbtucker]: https://github.com/jordanbtucker
-[@amb26]: https://github.com/amb26
-
-[#1]: https://github.com/json5/json5/issues/1
-[#16]: https://github.com/json5/json5/issues/16
-[#24]: https://github.com/json5/json5/issues/24
-[#30]: https://github.com/json5/json5/issues/30
-[#32]: https://github.com/json5/json5/issues/32
-[#36]: https://github.com/json5/json5/issues/36
-[#57]: https://github.com/json5/json5/issues/57
-[#58]: https://github.com/json5/json5/pull/58
-[#60]: https://github.com/json5/json5/pull/60
-[#63]: https://github.com/json5/json5/pull/63
-[#66]: https://github.com/json5/json5/issues/66
-[#67]: https://github.com/json5/json5/issues/67
-[#68]: https://github.com/json5/json5/issues/68
-[#70]: https://github.com/json5/json5/issues/70
-[#71]: https://github.com/json5/json5/issues/71
-[#72]: https://github.com/json5/json5/issues/72
-[#84]: https://github.com/json5/json5/pull/84
-[#89]: https://github.com/json5/json5/pull/89
-[#97]: https://github.com/json5/json5/pull/97
-[#101]: https://github.com/json5/json5/pull/101
-[#108]: https://github.com/json5/json5/pull/108
-[#134]: https://github.com/json5/json5/pull/134
-[#154]: https://github.com/json5/json5/issues/154
-[#181]: https://github.com/json5/json5/issues/181
-[#182]: https://github.com/json5/json5/issues/182
-[#187]: https://github.com/json5/json5/issues/187
-[#196]: https://github.com/json5/json5/issues/196
-[#208]: https://github.com/json5/json5/issues/208
-[#210]: https://github.com/json5/json5/issues/210
diff --git a/assets/node_modules/json5/LICENSE.md b/assets/node_modules/json5/LICENSE.md
deleted file mode 100644
index 2171aca..0000000
--- a/assets/node_modules/json5/LICENSE.md
+++ /dev/null
@@ -1,23 +0,0 @@
-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/assets/node_modules/json5/README.md b/assets/node_modules/json5/README.md
deleted file mode 100644
index 172c5cf..0000000
--- a/assets/node_modules/json5/README.md
+++ /dev/null
@@ -1,234 +0,0 @@
-# JSON5 – JSON for Humans
-
-[![Build Status](https://travis-ci.org/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.org/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/master/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/assets/node_modules/json5/dist/index.js b/assets/node_modules/json5/dist/index.js
deleted file mode 100644
index 9bb89e9..0000000
--- a/assets/node_modules/json5/dist/index.js
+++ /dev/null
@@ -1,1710 +0,0 @@
-(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 unicode.Space_Separator.test(c)
- },
-
- isIdStartChar: function isIdStartChar (c) {
- return (
- (c >= 'a' && c <= 'z') ||
- (c >= 'A' && c <= 'Z') ||
- (c === '$') || (c === '_') ||
- unicode.ID_Start.test(c)
- )
- },
-
- isIdContinueChar: function isIdContinueChar (c) {
- return (
- (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 /[0-9]/.test(c)
- },
-
- isHexDigit: function isHexDigit (c) {
- return /[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/assets/node_modules/json5/dist/index.min.js b/assets/node_modules/json5/dist/index.min.js
deleted file mode 100644
index f5cad62..0000000
--- a/assets/node_modules/json5/dist/index.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!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 G.Space_Separator.test(u)},isIdStartChar:function(u){return u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||G.ID_Start.test(u)},isIdContinueChar:function(u){return 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/[0-9]/.test(u)},isHexDigit:function(u){return/[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/assets/node_modules/json5/dist/index.min.mjs b/assets/node_modules/json5/dist/index.min.mjs
deleted file mode 100644
index 2868bc3..0000000
--- a/assets/node_modules/json5/dist/index.min.mjs
+++ /dev/null
@@ -1 +0,0 @@
-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=>unicode.Space_Separator.test(u),isIdStartChar:u=>u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||unicode.ID_Start.test(u),isIdContinueChar:u=>u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||"$"===u||"_"===u||"‌"===u||"‍"===u||unicode.ID_Continue.test(u),isDigit:u=>/[0-9]/.test(u),isHexDigit: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/assets/node_modules/json5/dist/index.mjs b/assets/node_modules/json5/dist/index.mjs
deleted file mode 100644
index e1c181d..0000000
--- a/assets/node_modules/json5/dist/index.mjs
+++ /dev/null
@@ -1,1399 +0,0 @@
-// 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 unicode.Space_Separator.test(c)
- },
-
- isIdStartChar (c) {
- return (
- (c >= 'a' && c <= 'z') ||
- (c >= 'A' && c <= 'Z') ||
- (c === '$') || (c === '_') ||
- unicode.ID_Start.test(c)
- )
- },
-
- isIdContinueChar (c) {
- return (
- (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 /[0-9]/.test(c)
- },
-
- isHexDigit (c) {
- return /[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/assets/node_modules/json5/lib/cli.js b/assets/node_modules/json5/lib/cli.js
deleted file mode 100755
index de852f1..0000000
--- a/assets/node_modules/json5/lib/cli.js
+++ /dev/null
@@ -1,112 +0,0 @@
-#!/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/assets/node_modules/json5/lib/index.js b/assets/node_modules/json5/lib/index.js
deleted file mode 100644
index 3679638..0000000
--- a/assets/node_modules/json5/lib/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-const parse = require('./parse')
-const stringify = require('./stringify')
-
-const JSON5 = {
- parse,
- stringify,
-}
-
-module.exports = JSON5
diff --git a/assets/node_modules/json5/lib/parse.js b/assets/node_modules/json5/lib/parse.js
deleted file mode 100644
index c01646f..0000000
--- a/assets/node_modules/json5/lib/parse.js
+++ /dev/null
@@ -1,1087 +0,0 @@
-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/assets/node_modules/json5/lib/register.js b/assets/node_modules/json5/lib/register.js
deleted file mode 100644
index 935cdba..0000000
--- a/assets/node_modules/json5/lib/register.js
+++ /dev/null
@@ -1,13 +0,0 @@
-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/assets/node_modules/json5/lib/require.js b/assets/node_modules/json5/lib/require.js
deleted file mode 100644
index 3aa29be..0000000
--- a/assets/node_modules/json5/lib/require.js
+++ /dev/null
@@ -1,4 +0,0 @@
-// 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/assets/node_modules/json5/lib/stringify.js b/assets/node_modules/json5/lib/stringify.js
deleted file mode 100644
index 7cb3b0e..0000000
--- a/assets/node_modules/json5/lib/stringify.js
+++ /dev/null
@@ -1,261 +0,0 @@
-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/assets/node_modules/json5/lib/unicode.js b/assets/node_modules/json5/lib/unicode.js
deleted file mode 100644
index 215ccd8..0000000
--- a/assets/node_modules/json5/lib/unicode.js
+++ /dev/null
@@ -1,4 +0,0 @@
-// 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/assets/node_modules/json5/lib/util.js b/assets/node_modules/json5/lib/util.js
deleted file mode 100644
index 3b5e466..0000000
--- a/assets/node_modules/json5/lib/util.js
+++ /dev/null
@@ -1,35 +0,0 @@
-const unicode = require('../lib/unicode')
-
-module.exports = {
- isSpaceSeparator (c) {
- return unicode.Space_Separator.test(c)
- },
-
- isIdStartChar (c) {
- return (
- (c >= 'a' && c <= 'z') ||
- (c >= 'A' && c <= 'Z') ||
- (c === '$') || (c === '_') ||
- unicode.ID_Start.test(c)
- )
- },
-
- isIdContinueChar (c) {
- return (
- (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 /[0-9]/.test(c)
- },
-
- isHexDigit (c) {
- return /[0-9A-Fa-f]/.test(c)
- },
-}
diff --git a/assets/node_modules/json5/node_modules/minimist/.travis.yml b/assets/node_modules/json5/node_modules/minimist/.travis.yml
deleted file mode 100644
index 74c57bf..0000000
--- a/assets/node_modules/json5/node_modules/minimist/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: node_js
-node_js:
- - "0.8"
- - "0.10"
- - "0.12"
- - "iojs"
-before_install:
- - npm install -g npm@~1.4.6
diff --git a/assets/node_modules/json5/node_modules/minimist/LICENSE b/assets/node_modules/json5/node_modules/minimist/LICENSE
deleted file mode 100644
index ee27ba4..0000000
--- a/assets/node_modules/json5/node_modules/minimist/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-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/assets/node_modules/json5/node_modules/minimist/example/parse.js b/assets/node_modules/json5/node_modules/minimist/example/parse.js
deleted file mode 100644
index abff3e8..0000000
--- a/assets/node_modules/json5/node_modules/minimist/example/parse.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var argv = require('../')(process.argv.slice(2));
-console.dir(argv);
diff --git a/assets/node_modules/json5/node_modules/minimist/index.js b/assets/node_modules/json5/node_modules/minimist/index.js
deleted file mode 100644
index 6a0559d..0000000
--- a/assets/node_modules/json5/node_modules/minimist/index.js
+++ /dev/null
@@ -1,236 +0,0 @@
-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;
- keys.slice(0,-1).forEach(function (key) {
- if (o[key] === undefined) o[key] = {};
- o = o[key];
- });
-
- var key = keys[keys.length - 1];
- 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/assets/node_modules/json5/node_modules/minimist/package.json b/assets/node_modules/json5/node_modules/minimist/package.json
deleted file mode 100644
index 326480c..0000000
--- a/assets/node_modules/json5/node_modules/minimist/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "minimist",
- "version": "1.2.0",
- "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/assets/node_modules/json5/node_modules/minimist/readme.markdown b/assets/node_modules/json5/node_modules/minimist/readme.markdown
deleted file mode 100644
index 30a74cf..0000000
--- a/assets/node_modules/json5/node_modules/minimist/readme.markdown
+++ /dev/null
@@ -1,91 +0,0 @@
-# minimist
-
-parse argument options
-
-This module is the guts of optimist's argument parser without all the
-fanciful decoration.
-
-[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)
-
-[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)
-
-# example
-
-``` js
-var argv = require('minimist')(process.argv.slice(2));
-console.dir(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' }
-```
-
-# 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:
-* `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`.
-
-```
-> 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
-`--`.
-
-# install
-
-With [npm](https://npmjs.org) do:
-
-```
-npm install minimist
-```
-
-# license
-
-MIT
diff --git a/assets/node_modules/json5/node_modules/minimist/test/all_bool.js b/assets/node_modules/json5/node_modules/minimist/test/all_bool.js
deleted file mode 100644
index ac83548..0000000
--- a/assets/node_modules/json5/node_modules/minimist/test/all_bool.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('flag boolean true (default all --args to boolean)', function (t) {
- var argv = parse(['moo', '--honk', 'cow'], {
- boolean: true
- });
-
- t.deepEqual(argv, {
- honk: true,
- _: ['moo', 'cow']
- });
-
- t.deepEqual(typeof argv.honk, 'boolean');
- t.end();
-});
-
-test('flag boolean true only affects double hyphen arguments without equals signs', function (t) {
- var argv = parse(['moo', '--honk', 'cow', '-p', '55', '--tacos=good'], {
- boolean: true
- });
-
- t.deepEqual(argv, {
- honk: true,
- tacos: 'good',
- p: 55,
- _: ['moo', 'cow']
- });
-
- t.deepEqual(typeof argv.honk, 'boolean');
- t.end();
-});
diff --git a/assets/node_modules/json5/node_modules/minimist/test/bool.js b/assets/node_modules/json5/node_modules/minimist/test/bool.js
deleted file mode 100644
index 14b0717..0000000
--- a/assets/node_modules/json5/node_modules/minimist/test/bool.js
+++ /dev/null
@@ -1,166 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('flag boolean default false', function (t) {
- var argv = parse(['moo'], {
- boolean: ['t', 'verbose'],
- default: { verbose: false, t: false }
- });
-
- t.deepEqual(argv, {
- verbose: false,
- t: false,
- _: ['moo']
- });
-
- t.deepEqual(typeof argv.verbose, 'boolean');
- t.deepEqual(typeof argv.t, 'boolean');
- t.end();
-
-});
-
-test('boolean groups', function (t) {
- var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
- boolean: ['x','y','z']
- });
-
- t.deepEqual(argv, {
- x : true,
- y : false,
- z : true,
- _ : [ 'one', 'two', 'three' ]
- });
-
- t.deepEqual(typeof argv.x, 'boolean');
- t.deepEqual(typeof argv.y, 'boolean');
- t.deepEqual(typeof argv.z, 'boolean');
- t.end();
-});
-test('boolean and alias with chainable api', function (t) {
- var aliased = [ '-h', 'derp' ];
- var regular = [ '--herp', 'derp' ];
- var opts = {
- herp: { alias: 'h', boolean: true }
- };
- var aliasedArgv = parse(aliased, {
- boolean: 'herp',
- alias: { h: 'herp' }
- });
- var propertyArgv = parse(regular, {
- boolean: 'herp',
- alias: { h: 'herp' }
- });
- var expected = {
- herp: true,
- h: true,
- '_': [ 'derp' ]
- };
-
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.end();
-});
-
-test('boolean and alias with options hash', function (t) {
- var aliased = [ '-h', 'derp' ];
- var regular = [ '--herp', 'derp' ];
- var opts = {
- alias: { 'h': 'herp' },
- boolean: 'herp'
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
- var expected = {
- herp: true,
- h: true,
- '_': [ 'derp' ]
- };
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.end();
-});
-
-test('boolean and alias array with options hash', function (t) {
- var aliased = [ '-h', 'derp' ];
- var regular = [ '--herp', 'derp' ];
- var alt = [ '--harp', 'derp' ];
- var opts = {
- alias: { 'h': ['herp', 'harp'] },
- boolean: 'h'
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
- var altPropertyArgv = parse(alt, opts);
- var expected = {
- harp: true,
- herp: true,
- h: true,
- '_': [ 'derp' ]
- };
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.same(altPropertyArgv, expected);
- t.end();
-});
-
-test('boolean and alias using explicit true', function (t) {
- var aliased = [ '-h', 'true' ];
- var regular = [ '--herp', 'true' ];
- var opts = {
- alias: { h: 'herp' },
- boolean: 'h'
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
- var expected = {
- herp: true,
- h: true,
- '_': [ ]
- };
-
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.end();
-});
-
-// regression, see https://github.com/substack/node-optimist/issues/71
-test('boolean and --x=true', function(t) {
- var parsed = parse(['--boool', '--other=true'], {
- boolean: 'boool'
- });
-
- t.same(parsed.boool, true);
- t.same(parsed.other, 'true');
-
- parsed = parse(['--boool', '--other=false'], {
- boolean: 'boool'
- });
-
- t.same(parsed.boool, true);
- t.same(parsed.other, 'false');
- t.end();
-});
-
-test('boolean --boool=true', function (t) {
- var parsed = parse(['--boool=true'], {
- default: {
- boool: false
- },
- boolean: ['boool']
- });
-
- t.same(parsed.boool, true);
- t.end();
-});
-
-test('boolean --boool=false', function (t) {
- var parsed = parse(['--boool=false'], {
- default: {
- boool: true
- },
- boolean: ['boool']
- });
-
- t.same(parsed.boool, false);
- t.end();
-});
diff --git a/assets/node_modules/json5/node_modules/minimist/test/dash.js b/assets/node_modules/json5/node_modules/minimist/test/dash.js
deleted file mode 100644
index 5a4fa5b..0000000
--- a/assets/node_modules/json5/node_modules/minimist/test/dash.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('-', function (t) {
- t.plan(5);
- t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] });
- t.deepEqual(parse([ '-' ]), { _: [ '-' ] });
- t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] });
- t.deepEqual(
- parse([ '-b', '-' ], { boolean: 'b' }),
- { b: true, _: [ '-' ] }
- );
- t.deepEqual(
- parse([ '-s', '-' ], { string: 's' }),
- { s: '-', _: [] }
- );
-});
-
-test('-a -- b', function (t) {
- t.plan(3);
- t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] });
- t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
- t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
-});
-
-test('move arguments after the -- into their own `--` array', function(t) {
- t.plan(1);
- t.deepEqual(
- parse([ '--name', 'John', 'before', '--', 'after' ], { '--': true }),
- { name: 'John', _: [ 'before' ], '--': [ 'after' ] });
-});
diff --git a/assets/node_modules/json5/node_modules/minimist/test/default_bool.js b/assets/node_modules/json5/node_modules/minimist/test/default_bool.js
deleted file mode 100644
index 780a311..0000000
--- a/assets/node_modules/json5/node_modules/minimist/test/default_bool.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var test = require('tape');
-var parse = require('../');
-
-test('boolean default true', function (t) {
- var argv = parse([], {
- boolean: 'sometrue',
- default: { sometrue: true }
- });
- t.equal(argv.sometrue, true);
- t.end();
-});
-
-test('boolean default false', function (t) {
- var argv = parse([], {
- boolean: 'somefalse',
- default: { somefalse: false }
- });
- t.equal(argv.somefalse, false);
- t.end();
-});
-
-test('boolean default to null', function (t) {
- var argv = parse([], {
- boolean: 'maybe',
- default: { maybe: null }
- });
- t.equal(argv.maybe, null);
- var argv = parse(['--maybe'], {
- boolean: 'maybe',
- default: { maybe: null }
- });
- t.equal(argv.maybe, true);
- t.end();
-
-})
diff --git a/assets/node_modules/json5/node_modules/minimist/test/dotted.js b/assets/node_modules/json5/node_modules/minimist/test/dotted.js
deleted file mode 100644
index d8b3e85..0000000
--- a/assets/node_modules/json5/node_modules/minimist/test/dotted.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('dotted alias', function (t) {
- var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
- t.equal(argv.a.b, 22);
- t.equal(argv.aa.bb, 22);
- t.end();
-});
-
-test('dotted default', function (t) {
- var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
- t.equal(argv.a.b, 11);
- t.equal(argv.aa.bb, 11);
- t.end();
-});
-
-test('dotted default with no alias', function (t) {
- var argv = parse('', {default: {'a.b': 11}});
- t.equal(argv.a.b, 11);
- t.end();
-});
diff --git a/assets/node_modules/json5/node_modules/minimist/test/kv_short.js b/assets/node_modules/json5/node_modules/minimist/test/kv_short.js
deleted file mode 100644
index f813b30..0000000
--- a/assets/node_modules/json5/node_modules/minimist/test/kv_short.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('short -k=v' , function (t) {
- t.plan(1);
-
- var argv = parse([ '-b=123' ]);
- t.deepEqual(argv, { b: 123, _: [] });
-});
-
-test('multi short -k=v' , function (t) {
- t.plan(1);
-
- var argv = parse([ '-a=whatever', '-b=robots' ]);
- t.deepEqual(argv, { a: 'whatever', b: 'robots', _: [] });
-});
diff --git a/assets/node_modules/json5/node_modules/minimist/test/long.js b/assets/node_modules/json5/node_modules/minimist/test/long.js
deleted file mode 100644
index 5d3a1e0..0000000
--- a/assets/node_modules/json5/node_modules/minimist/test/long.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var test = require('tape');
-var parse = require('../');
-
-test('long opts', function (t) {
- t.deepEqual(
- parse([ '--bool' ]),
- { bool : true, _ : [] },
- 'long boolean'
- );
- t.deepEqual(
- parse([ '--pow', 'xixxle' ]),
- { pow : 'xixxle', _ : [] },
- 'long capture sp'
- );
- t.deepEqual(
- parse([ '--pow=xixxle' ]),
- { pow : 'xixxle', _ : [] },
- 'long capture eq'
- );
- t.deepEqual(
- parse([ '--host', 'localhost', '--port', '555' ]),
- { host : 'localhost', port : 555, _ : [] },
- 'long captures sp'
- );
- t.deepEqual(
- parse([ '--host=localhost', '--port=555' ]),
- { host : 'localhost', port : 555, _ : [] },
- 'long captures eq'
- );
- t.end();
-});
diff --git a/assets/node_modules/json5/node_modules/minimist/test/num.js b/assets/node_modules/json5/node_modules/minimist/test/num.js
deleted file mode 100644
index 2cc77f4..0000000
--- a/assets/node_modules/json5/node_modules/minimist/test/num.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('nums', function (t) {
- var argv = parse([
- '-x', '1234',
- '-y', '5.67',
- '-z', '1e7',
- '-w', '10f',
- '--hex', '0xdeadbeef',
- '789'
- ]);
- t.deepEqual(argv, {
- x : 1234,
- y : 5.67,
- z : 1e7,
- w : '10f',
- hex : 0xdeadbeef,
- _ : [ 789 ]
- });
- t.deepEqual(typeof argv.x, 'number');
- t.deepEqual(typeof argv.y, 'number');
- t.deepEqual(typeof argv.z, 'number');
- t.deepEqual(typeof argv.w, 'string');
- t.deepEqual(typeof argv.hex, 'number');
- t.deepEqual(typeof argv._[0], 'number');
- t.end();
-});
-
-test('already a number', function (t) {
- var argv = parse([ '-x', 1234, 789 ]);
- t.deepEqual(argv, { x : 1234, _ : [ 789 ] });
- t.deepEqual(typeof argv.x, 'number');
- t.deepEqual(typeof argv._[0], 'number');
- t.end();
-});
diff --git a/assets/node_modules/json5/node_modules/minimist/test/parse.js b/assets/node_modules/json5/node_modules/minimist/test/parse.js
deleted file mode 100644
index 7b4a2a1..0000000
--- a/assets/node_modules/json5/node_modules/minimist/test/parse.js
+++ /dev/null
@@ -1,197 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('parse args', function (t) {
- t.deepEqual(
- parse([ '--no-moo' ]),
- { moo : false, _ : [] },
- 'no'
- );
- t.deepEqual(
- parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
- { v : ['a','b','c'], _ : [] },
- 'multi'
- );
- t.end();
-});
-
-test('comprehensive', function (t) {
- t.deepEqual(
- parse([
- '--name=meowmers', 'bare', '-cats', 'woo',
- '-h', 'awesome', '--multi=quux',
- '--key', 'value',
- '-b', '--bool', '--no-meep', '--multi=baz',
- '--', '--not-a-flag', 'eek'
- ]),
- {
- c : true,
- a : true,
- t : true,
- s : 'woo',
- h : 'awesome',
- b : true,
- bool : true,
- key : 'value',
- multi : [ 'quux', 'baz' ],
- meep : false,
- name : 'meowmers',
- _ : [ 'bare', '--not-a-flag', 'eek' ]
- }
- );
- t.end();
-});
-
-test('flag boolean', function (t) {
- var argv = parse([ '-t', 'moo' ], { boolean: 't' });
- t.deepEqual(argv, { t : true, _ : [ 'moo' ] });
- t.deepEqual(typeof argv.t, 'boolean');
- t.end();
-});
-
-test('flag boolean value', function (t) {
- var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {
- boolean: [ 't', 'verbose' ],
- default: { verbose: true }
- });
-
- t.deepEqual(argv, {
- verbose: false,
- t: true,
- _: ['moo']
- });
-
- t.deepEqual(typeof argv.verbose, 'boolean');
- t.deepEqual(typeof argv.t, 'boolean');
- t.end();
-});
-
-test('newlines in params' , function (t) {
- var args = parse([ '-s', "X\nX" ])
- t.deepEqual(args, { _ : [], s : "X\nX" });
-
- // reproduce in bash:
- // VALUE="new
- // line"
- // node program.js --s="$VALUE"
- args = parse([ "--s=X\nX" ])
- t.deepEqual(args, { _ : [], s : "X\nX" });
- t.end();
-});
-
-test('strings' , function (t) {
- var s = parse([ '-s', '0001234' ], { string: 's' }).s;
- t.equal(s, '0001234');
- t.equal(typeof s, 'string');
-
- var x = parse([ '-x', '56' ], { string: 'x' }).x;
- t.equal(x, '56');
- t.equal(typeof x, 'string');
- t.end();
-});
-
-test('stringArgs', function (t) {
- var s = parse([ ' ', ' ' ], { string: '_' })._;
- t.same(s.length, 2);
- t.same(typeof s[0], 'string');
- t.same(s[0], ' ');
- t.same(typeof s[1], 'string');
- t.same(s[1], ' ');
- t.end();
-});
-
-test('empty strings', function(t) {
- var s = parse([ '-s' ], { string: 's' }).s;
- t.equal(s, '');
- t.equal(typeof s, 'string');
-
- var str = parse([ '--str' ], { string: 'str' }).str;
- t.equal(str, '');
- t.equal(typeof str, 'string');
-
- var letters = parse([ '-art' ], {
- string: [ 'a', 't' ]
- });
-
- t.equal(letters.a, '');
- t.equal(letters.r, true);
- t.equal(letters.t, '');
-
- t.end();
-});
-
-
-test('string and alias', function(t) {
- var x = parse([ '--str', '000123' ], {
- string: 's',
- alias: { s: 'str' }
- });
-
- t.equal(x.str, '000123');
- t.equal(typeof x.str, 'string');
- t.equal(x.s, '000123');
- t.equal(typeof x.s, 'string');
-
- var y = parse([ '-s', '000123' ], {
- string: 'str',
- alias: { str: 's' }
- });
-
- t.equal(y.str, '000123');
- t.equal(typeof y.str, 'string');
- t.equal(y.s, '000123');
- t.equal(typeof y.s, 'string');
- t.end();
-});
-
-test('slashBreak', function (t) {
- t.same(
- parse([ '-I/foo/bar/baz' ]),
- { I : '/foo/bar/baz', _ : [] }
- );
- t.same(
- parse([ '-xyz/foo/bar/baz' ]),
- { x : true, y : true, z : '/foo/bar/baz', _ : [] }
- );
- t.end();
-});
-
-test('alias', function (t) {
- var argv = parse([ '-f', '11', '--zoom', '55' ], {
- alias: { z: 'zoom' }
- });
- t.equal(argv.zoom, 55);
- t.equal(argv.z, argv.zoom);
- t.equal(argv.f, 11);
- t.end();
-});
-
-test('multiAlias', function (t) {
- var argv = parse([ '-f', '11', '--zoom', '55' ], {
- alias: { z: [ 'zm', 'zoom' ] }
- });
- t.equal(argv.zoom, 55);
- t.equal(argv.z, argv.zoom);
- t.equal(argv.z, argv.zm);
- t.equal(argv.f, 11);
- t.end();
-});
-
-test('nested dotted objects', function (t) {
- var argv = parse([
- '--foo.bar', '3', '--foo.baz', '4',
- '--foo.quux.quibble', '5', '--foo.quux.o_O',
- '--beep.boop'
- ]);
-
- t.same(argv.foo, {
- bar : 3,
- baz : 4,
- quux : {
- quibble : 5,
- o_O : true
- }
- });
- t.same(argv.beep, { boop : true });
- t.end();
-});
diff --git a/assets/node_modules/json5/node_modules/minimist/test/parse_modified.js b/assets/node_modules/json5/node_modules/minimist/test/parse_modified.js
deleted file mode 100644
index ab620dc..0000000
--- a/assets/node_modules/json5/node_modules/minimist/test/parse_modified.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('parse with modifier functions' , function (t) {
- t.plan(1);
-
- var argv = parse([ '-b', '123' ], { boolean: 'b' });
- t.deepEqual(argv, { b: true, _: [123] });
-});
diff --git a/assets/node_modules/json5/node_modules/minimist/test/short.js b/assets/node_modules/json5/node_modules/minimist/test/short.js
deleted file mode 100644
index d513a1c..0000000
--- a/assets/node_modules/json5/node_modules/minimist/test/short.js
+++ /dev/null
@@ -1,67 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('numeric short args', function (t) {
- t.plan(2);
- t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] });
- t.deepEqual(
- parse([ '-123', '456' ]),
- { 1: true, 2: true, 3: 456, _: [] }
- );
-});
-
-test('short', function (t) {
- t.deepEqual(
- parse([ '-b' ]),
- { b : true, _ : [] },
- 'short boolean'
- );
- t.deepEqual(
- parse([ 'foo', 'bar', 'baz' ]),
- { _ : [ 'foo', 'bar', 'baz' ] },
- 'bare'
- );
- t.deepEqual(
- parse([ '-cats' ]),
- { c : true, a : true, t : true, s : true, _ : [] },
- 'group'
- );
- t.deepEqual(
- parse([ '-cats', 'meow' ]),
- { c : true, a : true, t : true, s : 'meow', _ : [] },
- 'short group next'
- );
- t.deepEqual(
- parse([ '-h', 'localhost' ]),
- { h : 'localhost', _ : [] },
- 'short capture'
- );
- t.deepEqual(
- parse([ '-h', 'localhost', '-p', '555' ]),
- { h : 'localhost', p : 555, _ : [] },
- 'short captures'
- );
- t.end();
-});
-
-test('mixed short bool and capture', function (t) {
- t.same(
- parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
- {
- f : true, p : 555, h : 'localhost',
- _ : [ 'script.js' ]
- }
- );
- t.end();
-});
-
-test('short and long', function (t) {
- t.deepEqual(
- parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
- {
- f : true, p : 555, h : 'localhost',
- _ : [ 'script.js' ]
- }
- );
- t.end();
-});
diff --git a/assets/node_modules/json5/node_modules/minimist/test/stop_early.js b/assets/node_modules/json5/node_modules/minimist/test/stop_early.js
deleted file mode 100644
index bdf9fbc..0000000
--- a/assets/node_modules/json5/node_modules/minimist/test/stop_early.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('stops parsing on the first non-option when stopEarly is set', function (t) {
- var argv = parse(['--aaa', 'bbb', 'ccc', '--ddd'], {
- stopEarly: true
- });
-
- t.deepEqual(argv, {
- aaa: 'bbb',
- _: ['ccc', '--ddd']
- });
-
- t.end();
-});
diff --git a/assets/node_modules/json5/node_modules/minimist/test/unknown.js b/assets/node_modules/json5/node_modules/minimist/test/unknown.js
deleted file mode 100644
index 462a36b..0000000
--- a/assets/node_modules/json5/node_modules/minimist/test/unknown.js
+++ /dev/null
@@ -1,102 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('boolean and alias is not unknown', function (t) {
- var unknown = [];
- function unknownFn(arg) {
- unknown.push(arg);
- return false;
- }
- var aliased = [ '-h', 'true', '--derp', 'true' ];
- var regular = [ '--herp', 'true', '-d', 'true' ];
- var opts = {
- alias: { h: 'herp' },
- boolean: 'h',
- unknown: unknownFn
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
-
- t.same(unknown, ['--derp', '-d']);
- t.end();
-});
-
-test('flag boolean true any double hyphen argument is not unknown', function (t) {
- var unknown = [];
- function unknownFn(arg) {
- unknown.push(arg);
- return false;
- }
- var argv = parse(['--honk', '--tacos=good', 'cow', '-p', '55'], {
- boolean: true,
- unknown: unknownFn
- });
- t.same(unknown, ['--tacos=good', 'cow', '-p']);
- t.same(argv, {
- honk: true,
- _: []
- });
- t.end();
-});
-
-test('string and alias is not unknown', function (t) {
- var unknown = [];
- function unknownFn(arg) {
- unknown.push(arg);
- return false;
- }
- var aliased = [ '-h', 'hello', '--derp', 'goodbye' ];
- var regular = [ '--herp', 'hello', '-d', 'moon' ];
- var opts = {
- alias: { h: 'herp' },
- string: 'h',
- unknown: unknownFn
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
-
- t.same(unknown, ['--derp', '-d']);
- t.end();
-});
-
-test('default and alias is not unknown', function (t) {
- var unknown = [];
- function unknownFn(arg) {
- unknown.push(arg);
- return false;
- }
- var aliased = [ '-h', 'hello' ];
- var regular = [ '--herp', 'hello' ];
- var opts = {
- default: { 'h': 'bar' },
- alias: { 'h': 'herp' },
- unknown: unknownFn
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
-
- t.same(unknown, []);
- t.end();
- unknownFn(); // exercise fn for 100% coverage
-});
-
-test('value following -- is not unknown', function (t) {
- var unknown = [];
- function unknownFn(arg) {
- unknown.push(arg);
- return false;
- }
- var aliased = [ '--bad', '--', 'good', 'arg' ];
- var opts = {
- '--': true,
- unknown: unknownFn
- };
- var argv = parse(aliased, opts);
-
- t.same(unknown, ['--bad']);
- t.same(argv, {
- '--': ['good', 'arg'],
- '_': []
- })
- t.end();
-});
diff --git a/assets/node_modules/json5/node_modules/minimist/test/whitespace.js b/assets/node_modules/json5/node_modules/minimist/test/whitespace.js
deleted file mode 100644
index 8a52a58..0000000
--- a/assets/node_modules/json5/node_modules/minimist/test/whitespace.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('whitespace should be whitespace' , function (t) {
- t.plan(1);
- var x = parse([ '-x', '\t' ]).x;
- t.equal(x, '\t');
-});
diff --git a/assets/node_modules/json5/package.json b/assets/node_modules/json5/package.json
deleted file mode 100644
index 722a40e..0000000
--- a/assets/node_modules/json5/package.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "json5",
- "version": "2.1.1",
- "description": "JSON for humans.",
- "main": "lib/index.js",
- "module": "dist/index.mjs",
- "bin": "lib/cli.js",
- "browser": "dist/index.js",
- "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.0"
- },
- "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/assets/node_modules/kind-of/CHANGELOG.md b/assets/node_modules/kind-of/CHANGELOG.md
deleted file mode 100644
index 01687d5..0000000
--- a/assets/node_modules/kind-of/CHANGELOG.md
+++ /dev/null
@@ -1,160 +0,0 @@
-# Release history
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
-and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
-
-<details>
- <summary><strong>Guiding Principles</strong></summary>
-
-- Changelogs are for humans, not machines.
-- There should be an entry for every single version.
-- The same types of changes should be grouped.
-- Versions and sections should be linkable.
-- The latest version comes first.
-- The release date of each versions is displayed.
-- Mention whether you follow Semantic Versioning.
-
-</details>
-
-<details>
- <summary><strong>Types of changes</strong></summary>
-
-Changelog entries are classified using the following labels _(from [keep-a-changelog](http://keepachangelog.com/)_):
-
-- `Added` for new features.
-- `Changed` for changes in existing functionality.
-- `Deprecated` for soon-to-be removed features.
-- `Removed` for now removed features.
-- `Fixed` for any bug fixes.
-- `Security` in case of vulnerabilities.
-
-</details>
-
-## [6.0.3] - 2020-01-16
-
-- Merge pull request #31 for issue #30
-
-## [6.0.0] - 2017-10-13
-
-- refactor code to be more performant
-- refactor benchmarks
-
-## [5.1.0] - 2017-10-13
-
-**Added**
-
-- Merge pull request #15 from aretecode/patch-1
-- adds support and tests for string & array iterators
-
-**Changed**
-
-- updates benchmarks
-
-## [5.0.2] - 2017-08-02
-
-- Merge pull request #14 from struct78/master
-- Added `undefined` check
-
-## [5.0.0] - 2017-06-21
-
-- Merge pull request #12 from aretecode/iterator
-- Set Iterator + Map Iterator
-- streamline `isbuffer`, minor edits
-
-## [4.0.0] - 2017-05-19
-
-- Merge pull request #8 from tunnckoCore/master
-- update deps
-
-## [3.2.2] - 2017-05-16
-
-- fix version
-
-## [3.2.1] - 2017-05-16
-
-- add browserify
-
-## [3.2.0] - 2017-04-25
-
-- Merge pull request #10 from ksheedlo/unrequire-buffer
-- add `promise` support and tests
-- Remove unnecessary `Buffer` check
-
-## [3.1.0] - 2016-12-07
-
-- Merge pull request #7 from laggingreflex/err
-- add support for `error` and tests
-- run update
-
-## [3.0.4] - 2016-07-29
-
-- move tests
-- run update
-
-## [3.0.3] - 2016-05-03
-
-- fix prepublish script
-- remove unused dep
-
-## [3.0.0] - 2015-11-17
-
-- add typed array support
-- Merge pull request #5 from miguelmota/typed-arrays
-- adds new tests
-
-## [2.0.1] - 2015-08-21
-
-- use `is-buffer` module
-
-## [2.0.0] - 2015-05-31
-
-- Create fallback for `Array.isArray` if used as a browser package
-- Merge pull request #2 from dtothefp/patch-1
-- Merge pull request #3 from pdehaan/patch-1
-- Merge branch 'master' of https://github.com/chorks/kind-of into chorks-master
-- optimizations, mostly date and regex
-
-## [1.1.0] - 2015-02-09
-
-- adds `buffer` support
-- adds tests for `buffer`
-
-## [1.0.0] - 2015-01-19
-
-- update benchmarks
-- optimizations based on benchmarks
-
-## [0.1.2] - 2014-10-26
-
-- return `typeof` value if it's not an object. very slight speed improvement
-- use `.slice`
-- adds benchmarks
-
-## [0.1.0] - 2014-9-26
-
-- first commit
-
-[6.0.0]: https://github.com/jonschlinkert/kind-of/compare/5.1.0...6.0.0
-[5.1.0]: https://github.com/jonschlinkert/kind-of/compare/5.0.2...5.1.0
-[5.0.2]: https://github.com/jonschlinkert/kind-of/compare/5.0.1...5.0.2
-[5.0.1]: https://github.com/jonschlinkert/kind-of/compare/5.0.0...5.0.1
-[5.0.0]: https://github.com/jonschlinkert/kind-of/compare/4.0.0...5.0.0
-[4.0.0]: https://github.com/jonschlinkert/kind-of/compare/3.2.2...4.0.0
-[3.2.2]: https://github.com/jonschlinkert/kind-of/compare/3.2.1...3.2.2
-[3.2.1]: https://github.com/jonschlinkert/kind-of/compare/3.2.0...3.2.1
-[3.2.0]: https://github.com/jonschlinkert/kind-of/compare/3.1.0...3.2.0
-[3.1.0]: https://github.com/jonschlinkert/kind-of/compare/3.0.4...3.1.0
-[3.0.4]: https://github.com/jonschlinkert/kind-of/compare/3.0.3...3.0.4
-[3.0.3]: https://github.com/jonschlinkert/kind-of/compare/3.0.0...3.0.3
-[3.0.0]: https://github.com/jonschlinkert/kind-of/compare/2.0.1...3.0.0
-[2.0.1]: https://github.com/jonschlinkert/kind-of/compare/2.0.0...2.0.1
-[2.0.0]: https://github.com/jonschlinkert/kind-of/compare/1.1.0...2.0.0
-[1.1.0]: https://github.com/jonschlinkert/kind-of/compare/1.0.0...1.1.0
-[1.0.0]: https://github.com/jonschlinkert/kind-of/compare/0.1.2...1.0.0
-[0.1.2]: https://github.com/jonschlinkert/kind-of/compare/0.1.0...0.1.2
-[0.1.0]: https://github.com/jonschlinkert/kind-of/commit/2fae09b0b19b1aadb558e9be39f0c3ef6034eb87
-
-[Unreleased]: https://github.com/jonschlinkert/kind-of/compare/0.1.2...HEAD
-[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog \ No newline at end of file
diff --git a/assets/node_modules/kind-of/LICENSE b/assets/node_modules/kind-of/LICENSE
deleted file mode 100644
index 3f2eca1..0000000
--- a/assets/node_modules/kind-of/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2017, Jon Schlinkert.
-
-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/assets/node_modules/kind-of/README.md b/assets/node_modules/kind-of/README.md
deleted file mode 100644
index 0411dc5..0000000
--- a/assets/node_modules/kind-of/README.md
+++ /dev/null
@@ -1,367 +0,0 @@
-# kind-of [![NPM version](https://img.shields.io/npm/v/kind-of.svg?style=flat)](https://www.npmjs.com/package/kind-of) [![NPM monthly downloads](https://img.shields.io/npm/dm/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![NPM total downloads](https://img.shields.io/npm/dt/kind-of.svg?style=flat)](https://npmjs.org/package/kind-of) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/kind-of.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/kind-of)
-
-> Get the native type of a value.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save kind-of
-```
-
-Install with [bower](https://bower.io/)
-
-```sh
-$ bower install kind-of --save
-```
-
-## Why use this?
-
-1. [it's fast](#benchmarks) | [optimizations](#optimizations)
-2. [better type checking](#better-type-checking)
-
-## Usage
-
-> es5, es6, and browser ready
-
-```js
-var kindOf = require('kind-of');
-
-kindOf(undefined);
-//=> 'undefined'
-
-kindOf(null);
-//=> 'null'
-
-kindOf(true);
-//=> 'boolean'
-
-kindOf(false);
-//=> 'boolean'
-
-kindOf(new Buffer(''));
-//=> 'buffer'
-
-kindOf(42);
-//=> 'number'
-
-kindOf('str');
-//=> 'string'
-
-kindOf(arguments);
-//=> 'arguments'
-
-kindOf({});
-//=> 'object'
-
-kindOf(Object.create(null));
-//=> 'object'
-
-kindOf(new Test());
-//=> 'object'
-
-kindOf(new Date());
-//=> 'date'
-
-kindOf([1, 2, 3]);
-//=> 'array'
-
-kindOf(/foo/);
-//=> 'regexp'
-
-kindOf(new RegExp('foo'));
-//=> 'regexp'
-
-kindOf(new Error('error'));
-//=> 'error'
-
-kindOf(function () {});
-//=> 'function'
-
-kindOf(function * () {});
-//=> 'generatorfunction'
-
-kindOf(Symbol('str'));
-//=> 'symbol'
-
-kindOf(new Map());
-//=> 'map'
-
-kindOf(new WeakMap());
-//=> 'weakmap'
-
-kindOf(new Set());
-//=> 'set'
-
-kindOf(new WeakSet());
-//=> 'weakset'
-
-kindOf(new Int8Array());
-//=> 'int8array'
-
-kindOf(new Uint8Array());
-//=> 'uint8array'
-
-kindOf(new Uint8ClampedArray());
-//=> 'uint8clampedarray'
-
-kindOf(new Int16Array());
-//=> 'int16array'
-
-kindOf(new Uint16Array());
-//=> 'uint16array'
-
-kindOf(new Int32Array());
-//=> 'int32array'
-
-kindOf(new Uint32Array());
-//=> 'uint32array'
-
-kindOf(new Float32Array());
-//=> 'float32array'
-
-kindOf(new Float64Array());
-//=> 'float64array'
-```
-
-## Benchmarks
-
-Benchmarked against [typeof](http://github.com/CodingFu/typeof) and [type-of](https://github.com/ForbesLindesay/type-of).
-
-```bash
-# arguments (32 bytes)
- kind-of x 17,024,098 ops/sec ±1.90% (86 runs sampled)
- lib-type-of x 11,926,235 ops/sec ±1.34% (83 runs sampled)
- lib-typeof x 9,245,257 ops/sec ±1.22% (87 runs sampled)
-
- fastest is kind-of (by 161% avg)
-
-# array (22 bytes)
- kind-of x 17,196,492 ops/sec ±1.07% (88 runs sampled)
- lib-type-of x 8,838,283 ops/sec ±1.02% (87 runs sampled)
- lib-typeof x 8,677,848 ops/sec ±0.87% (87 runs sampled)
-
- fastest is kind-of (by 196% avg)
-
-# boolean (24 bytes)
- kind-of x 16,841,600 ops/sec ±1.10% (86 runs sampled)
- lib-type-of x 8,096,787 ops/sec ±0.95% (87 runs sampled)
- lib-typeof x 8,423,345 ops/sec ±1.15% (86 runs sampled)
-
- fastest is kind-of (by 204% avg)
-
-# buffer (38 bytes)
- kind-of x 14,848,060 ops/sec ±1.05% (86 runs sampled)
- lib-type-of x 3,671,577 ops/sec ±1.49% (87 runs sampled)
- lib-typeof x 8,360,236 ops/sec ±1.24% (86 runs sampled)
-
- fastest is kind-of (by 247% avg)
-
-# date (30 bytes)
- kind-of x 16,067,761 ops/sec ±1.58% (86 runs sampled)
- lib-type-of x 8,954,436 ops/sec ±1.40% (87 runs sampled)
- lib-typeof x 8,488,307 ops/sec ±1.51% (84 runs sampled)
-
- fastest is kind-of (by 184% avg)
-
-# error (36 bytes)
- kind-of x 9,634,090 ops/sec ±1.12% (89 runs sampled)
- lib-type-of x 7,735,624 ops/sec ±1.32% (86 runs sampled)
- lib-typeof x 7,442,160 ops/sec ±1.11% (90 runs sampled)
-
- fastest is kind-of (by 127% avg)
-
-# function (34 bytes)
- kind-of x 10,031,494 ops/sec ±1.27% (86 runs sampled)
- lib-type-of x 9,502,757 ops/sec ±1.17% (89 runs sampled)
- lib-typeof x 8,278,985 ops/sec ±1.08% (88 runs sampled)
-
- fastest is kind-of (by 113% avg)
-
-# null (24 bytes)
- kind-of x 18,159,808 ops/sec ±1.92% (86 runs sampled)
- lib-type-of x 12,927,635 ops/sec ±1.01% (88 runs sampled)
- lib-typeof x 7,958,234 ops/sec ±1.21% (89 runs sampled)
-
- fastest is kind-of (by 174% avg)
-
-# number (22 bytes)
- kind-of x 17,846,779 ops/sec ±0.91% (85 runs sampled)
- lib-type-of x 3,316,636 ops/sec ±1.19% (86 runs sampled)
- lib-typeof x 2,329,477 ops/sec ±2.21% (85 runs sampled)
-
- fastest is kind-of (by 632% avg)
-
-# object-plain (47 bytes)
- kind-of x 7,085,155 ops/sec ±1.05% (88 runs sampled)
- lib-type-of x 8,870,930 ops/sec ±1.06% (83 runs sampled)
- lib-typeof x 8,716,024 ops/sec ±1.05% (87 runs sampled)
-
- fastest is lib-type-of (by 112% avg)
-
-# regex (25 bytes)
- kind-of x 14,196,052 ops/sec ±1.65% (84 runs sampled)
- lib-type-of x 9,554,164 ops/sec ±1.25% (88 runs sampled)
- lib-typeof x 8,359,691 ops/sec ±1.07% (87 runs sampled)
-
- fastest is kind-of (by 158% avg)
-
-# string (33 bytes)
- kind-of x 16,131,428 ops/sec ±1.41% (85 runs sampled)
- lib-type-of x 7,273,172 ops/sec ±1.05% (87 runs sampled)
- lib-typeof x 7,382,635 ops/sec ±1.17% (85 runs sampled)
-
- fastest is kind-of (by 220% avg)
-
-# symbol (34 bytes)
- kind-of x 17,011,537 ops/sec ±1.24% (86 runs sampled)
- lib-type-of x 3,492,454 ops/sec ±1.23% (89 runs sampled)
- lib-typeof x 7,471,235 ops/sec ±2.48% (87 runs sampled)
-
- fastest is kind-of (by 310% avg)
-
-# template-strings (36 bytes)
- kind-of x 15,434,250 ops/sec ±1.46% (83 runs sampled)
- lib-type-of x 7,157,907 ops/sec ±0.97% (87 runs sampled)
- lib-typeof x 7,517,986 ops/sec ±0.92% (86 runs sampled)
-
- fastest is kind-of (by 210% avg)
-
-# undefined (29 bytes)
- kind-of x 19,167,115 ops/sec ±1.71% (87 runs sampled)
- lib-type-of x 15,477,740 ops/sec ±1.63% (85 runs sampled)
- lib-typeof x 19,075,495 ops/sec ±1.17% (83 runs sampled)
-
- fastest is lib-typeof,kind-of
-
-```
-
-## Optimizations
-
-In 7 out of 8 cases, this library is 2x-10x faster than other top libraries included in the benchmarks. There are a few things that lead to this performance advantage, none of them hard and fast rules, but all of them simple and repeatable in almost any code library:
-
-1. Optimize around the fastest and most common use cases first. Of course, this will change from project-to-project, but I took some time to understand how and why `typeof` checks were being used in my own libraries and other libraries I use a lot.
-2. Optimize around bottlenecks - In other words, the order in which conditionals are implemented is significant, because each check is only as fast as the failing checks that came before it. Here, the biggest bottleneck by far is checking for plain objects (an object that was created by the `Object` constructor). I opted to make this check happen by process of elimination rather than brute force up front (e.g. by using something like `val.constructor.name`), so that every other type check would not be penalized it.
-3. Don't do uneccessary processing - why do `.slice(8, -1).toLowerCase();` just to get the word `regex`? It's much faster to do `if (type === '[object RegExp]') return 'regex'`
-4. There is no reason to make the code in a microlib as terse as possible, just to win points for making it shorter. It's always better to favor performant code over terse code. You will always only be using a single `require()` statement to use the library anyway, regardless of how the code is written.
-
-## Better type checking
-
-kind-of seems to be more consistently "correct" than other type checking libs I've looked at. For example, here are some differing results from other popular libs:
-
-### [typeof](https://github.com/CodingFu/typeof) lib
-
-Incorrectly identifies instances of custom constructors (pretty common):
-
-```js
-var typeOf = require('typeof');
-function Test() {}
-console.log(typeOf(new Test()));
-//=> 'test'
-```
-
-Returns `object` instead of `arguments`:
-
-```js
-function foo() {
- console.log(typeOf(arguments)) //=> 'object'
-}
-foo();
-```
-
-### [type-of](https://github.com/ForbesLindesay/type-of) lib
-
-Incorrectly returns `object` for generator functions, buffers, `Map`, `Set`, `WeakMap` and `WeakSet`:
-
-```js
-function * foo() {}
-console.log(typeOf(foo));
-//=> 'object'
-console.log(typeOf(new Buffer('')));
-//=> 'object'
-console.log(typeOf(new Map()));
-//=> 'object'
-console.log(typeOf(new Set()));
-//=> 'object'
-console.log(typeOf(new WeakMap()));
-//=> 'object'
-console.log(typeOf(new WeakSet()));
-//=> 'object'
-```
-
-## About
-
-<details>
-<summary><strong>Contributing</strong></summary>
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-</details>
-
-<details>
-<summary><strong>Running Tests</strong></summary>
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-</details>
-
-<details>
-<summary><strong>Building docs</strong></summary>
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-</details>
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/micromatch/is-glob) | [homepage](https://github.com/micromatch/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet")
-* [is-number](https://www.npmjs.com/package/is-number): Returns true if a number or string value is a finite number. Useful for regex… [more](https://github.com/jonschlinkert/is-number) | [homepage](https://github.com/jonschlinkert/is-number "Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.")
-* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 102 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 3 | [aretecode](https://github.com/aretecode) |
-| 2 | [miguelmota](https://github.com/miguelmota) |
-| 1 | [doowb](https://github.com/doowb) |
-| 1 | [dtothefp](https://github.com/dtothefp) |
-| 1 | [ianstormtaylor](https://github.com/ianstormtaylor) |
-| 1 | [ksheedlo](https://github.com/ksheedlo) |
-| 1 | [pdehaan](https://github.com/pdehaan) |
-| 1 | [laggingreflex](https://github.com/laggingreflex) |
-| 1 | [tunnckoCore](https://github.com/tunnckoCore) |
-| 1 | [xiaofen9](https://github.com/xiaofen9) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-
-### License
-
-Copyright © 2020, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on January 16, 2020._ \ No newline at end of file
diff --git a/assets/node_modules/kind-of/index.js b/assets/node_modules/kind-of/index.js
deleted file mode 100644
index dfa799b..0000000
--- a/assets/node_modules/kind-of/index.js
+++ /dev/null
@@ -1,129 +0,0 @@
-var toString = Object.prototype.toString;
-
-module.exports = function kindOf(val) {
- if (val === void 0) return 'undefined';
- if (val === null) return 'null';
-
- var type = typeof val;
- if (type === 'boolean') return 'boolean';
- if (type === 'string') return 'string';
- if (type === 'number') return 'number';
- if (type === 'symbol') return 'symbol';
- if (type === 'function') {
- return isGeneratorFn(val) ? 'generatorfunction' : 'function';
- }
-
- if (isArray(val)) return 'array';
- if (isBuffer(val)) return 'buffer';
- if (isArguments(val)) return 'arguments';
- if (isDate(val)) return 'date';
- if (isError(val)) return 'error';
- if (isRegexp(val)) return 'regexp';
-
- switch (ctorName(val)) {
- case 'Symbol': return 'symbol';
- case 'Promise': return 'promise';
-
- // Set, Map, WeakSet, WeakMap
- case 'WeakMap': return 'weakmap';
- case 'WeakSet': return 'weakset';
- case 'Map': return 'map';
- case 'Set': return 'set';
-
- // 8-bit typed arrays
- case 'Int8Array': return 'int8array';
- case 'Uint8Array': return 'uint8array';
- case 'Uint8ClampedArray': return 'uint8clampedarray';
-
- // 16-bit typed arrays
- case 'Int16Array': return 'int16array';
- case 'Uint16Array': return 'uint16array';
-
- // 32-bit typed arrays
- case 'Int32Array': return 'int32array';
- case 'Uint32Array': return 'uint32array';
- case 'Float32Array': return 'float32array';
- case 'Float64Array': return 'float64array';
- }
-
- if (isGeneratorObj(val)) {
- return 'generator';
- }
-
- // Non-plain objects
- type = toString.call(val);
- switch (type) {
- case '[object Object]': return 'object';
- // iterators
- case '[object Map Iterator]': return 'mapiterator';
- case '[object Set Iterator]': return 'setiterator';
- case '[object String Iterator]': return 'stringiterator';
- case '[object Array Iterator]': return 'arrayiterator';
- }
-
- // other
- return type.slice(8, -1).toLowerCase().replace(/\s/g, '');
-};
-
-function ctorName(val) {
- return typeof val.constructor === 'function' ? val.constructor.name : null;
-}
-
-function isArray(val) {
- if (Array.isArray) return Array.isArray(val);
- return val instanceof Array;
-}
-
-function isError(val) {
- return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');
-}
-
-function isDate(val) {
- if (val instanceof Date) return true;
- return typeof val.toDateString === 'function'
- && typeof val.getDate === 'function'
- && typeof val.setDate === 'function';
-}
-
-function isRegexp(val) {
- if (val instanceof RegExp) return true;
- return typeof val.flags === 'string'
- && typeof val.ignoreCase === 'boolean'
- && typeof val.multiline === 'boolean'
- && typeof val.global === 'boolean';
-}
-
-function isGeneratorFn(name, val) {
- return ctorName(name) === 'GeneratorFunction';
-}
-
-function isGeneratorObj(val) {
- return typeof val.throw === 'function'
- && typeof val.return === 'function'
- && typeof val.next === 'function';
-}
-
-function isArguments(val) {
- try {
- if (typeof val.length === 'number' && typeof val.callee === 'function') {
- return true;
- }
- } catch (err) {
- if (err.message.indexOf('callee') !== -1) {
- return true;
- }
- }
- return false;
-}
-
-/**
- * If you need to support Safari 5-7 (8-10 yr-old browser),
- * take a look at https://github.com/feross/is-buffer
- */
-
-function isBuffer(val) {
- if (val.constructor && typeof val.constructor.isBuffer === 'function') {
- return val.constructor.isBuffer(val);
- }
- return false;
-}
diff --git a/assets/node_modules/kind-of/package.json b/assets/node_modules/kind-of/package.json
deleted file mode 100644
index 5820cad..0000000
--- a/assets/node_modules/kind-of/package.json
+++ /dev/null
@@ -1,88 +0,0 @@
-{
- "name": "kind-of",
- "description": "Get the native type of a value.",
- "version": "6.0.3",
- "homepage": "https://github.com/jonschlinkert/kind-of",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "David Fox-Powell (https://dtothefp.github.io/me)",
- "James (https://twitter.com/aretecode)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Ken Sheedlo (kensheedlo.com)",
- "laggingreflex (https://github.com/laggingreflex)",
- "Miguel Mota (https://miguelmota.com)",
- "Peter deHaan (http://about.me/peterdehaan)",
- "tunnckoCore (https://i.am.charlike.online)"
- ],
- "repository": "jonschlinkert/kind-of",
- "bugs": {
- "url": "https://github.com/jonschlinkert/kind-of/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha",
- "prepublish": "browserify -o browser.js -e index.js -s index --bare"
- },
- "devDependencies": {
- "benchmarked": "^2.0.0",
- "browserify": "^14.4.0",
- "gulp-format-md": "^1.0.0",
- "mocha": "^4.0.1",
- "write": "^1.0.3"
- },
- "keywords": [
- "arguments",
- "array",
- "boolean",
- "check",
- "date",
- "function",
- "is",
- "is-type",
- "is-type-of",
- "kind",
- "kind-of",
- "number",
- "object",
- "of",
- "regexp",
- "string",
- "test",
- "type",
- "type-of",
- "typeof",
- "types"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- },
- "related": {
- "list": [
- "is-glob",
- "is-number",
- "is-primitive"
- ]
- },
- "reflinks": [
- "type-of",
- "typeof",
- "verb"
- ]
- }
-}
diff --git a/assets/node_modules/known-css-properties/LICENSE b/assets/node_modules/known-css-properties/LICENSE
deleted file mode 100644
index 0f8792d..0000000
--- a/assets/node_modules/known-css-properties/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2017 Mavrix Technologies
-
-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/assets/node_modules/known-css-properties/README.md b/assets/node_modules/known-css-properties/README.md
deleted file mode 100644
index e9e806b..0000000
--- a/assets/node_modules/known-css-properties/README.md
+++ /dev/null
@@ -1,48 +0,0 @@
-<p align="center"><img src="logo.png" width="200" height="200" alt="logo" /></p>
-
-# Known CSS properties
-
-List of standard and browser specific CSS properties.
-
-[![License](https://img.shields.io/github/license/known-css/known-css-properties.svg)](https://github.com/known-css/known-css-properties/blob/master/LICENSE)
-[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)
-[![Npm downloads](https://img.shields.io/npm/dm/known-css-properties.svg)](https://www.npmjs.com/package/known-css-properties)
-
-## Sources
-
-1. Standard properties (only 'REC', 'CR', 'LC', 'WD', 'FPWD', 'ED' statuses): http://www.w3.org/Style/CSS/all-properties.en.json
-2. Browser supported properties from `window.getComputedStyle` / `document.body.style`
-
-## Browser versions
-
-### Desktop
-
-| Name | Versions |
-|---|--:|
-| Chrome | 14 - 78 |
-| Firefox | 6 - 70 |
-| Edge | 13 - 18 |
-| Safari | 6, 6.2, 7 - 9, 9.1, 10.0, 11.0, 11.1, 12.0, 12.1, 13.0 |
-| Internet Explorer | 8 - 11 |
-| Opera | 12.10, 12.14, 12.15, 12.16, 36 - 40, 45, 56, 58 |
-
-### Mobile
-| Name | Versions |
-|---|--:|
-| iOS Safari | 6 - 8, 8.3, 9.0, 9.3, 10.0, 10.2, 10.3, 11.0, 11.2, 11.3, 11.4, 12.0 , 12.1, 13.1 |
-| Chrome for Android | 30, 35, 37, 44, 46, 51, 55 - 62, 64, 66 - 76, 78 |
-| Firefox for Android | 47, 52 - 54, 57, 58, 62 - 64, 66, 68 |
-| IE mobile | 11 |
-| Opera Mobile | 42.7, 43, 47.1 |
-| Samsung Internet | 4.0, 6.4, 7.4, 8.2 |
-| UC Browser for Android | 11.2, 12.9 |
-
-## JavaScript API
-
-```js
-const properties = require('known-css-properties').all;
-```
-
-## Thanks
-
-We use [SauceLabs](https://saucelabs.com) live testing solution for gathering most of the data.
diff --git a/assets/node_modules/known-css-properties/data/all.json b/assets/node_modules/known-css-properties/data/all.json
deleted file mode 100644
index e0d3037..0000000
--- a/assets/node_modules/known-css-properties/data/all.json
+++ /dev/null
@@ -1,1170 +0,0 @@
-{
- "properties": [
- "accelerator",
- "-wap-accesskey",
- "align-content",
- "-webkit-align-content",
- "align-items",
- "-webkit-align-items",
- "align-self",
- "-webkit-align-self",
- "alignment-adjust",
- "alignment-baseline",
- "all",
- "alt",
- "-webkit-alt",
- "animation",
- "animation-delay",
- "-moz-animation-delay",
- "-ms-animation-delay",
- "-webkit-animation-delay",
- "animation-direction",
- "-moz-animation-direction",
- "-ms-animation-direction",
- "-webkit-animation-direction",
- "animation-duration",
- "-moz-animation-duration",
- "-ms-animation-duration",
- "-webkit-animation-duration",
- "animation-fill-mode",
- "-moz-animation-fill-mode",
- "-ms-animation-fill-mode",
- "-webkit-animation-fill-mode",
- "animation-iteration-count",
- "-moz-animation-iteration-count",
- "-ms-animation-iteration-count",
- "-webkit-animation-iteration-count",
- "-moz-animation",
- "-ms-animation",
- "animation-name",
- "-moz-animation-name",
- "-ms-animation-name",
- "-webkit-animation-name",
- "animation-play-state",
- "-moz-animation-play-state",
- "-ms-animation-play-state",
- "-webkit-animation-play-state",
- "animation-timing-function",
- "-moz-animation-timing-function",
- "-ms-animation-timing-function",
- "-webkit-animation-timing-function",
- "-webkit-animation-trigger",
- "-webkit-animation",
- "-webkit-app-region",
- "appearance",
- "-moz-appearance",
- "-webkit-appearance",
- "-webkit-aspect-ratio",
- "audio-level",
- "azimuth",
- "backdrop-filter",
- "-webkit-backdrop-filter",
- "backface-visibility",
- "-moz-backface-visibility",
- "-ms-backface-visibility",
- "-webkit-backface-visibility",
- "background",
- "background-attachment",
- "-webkit-background-attachment",
- "background-blend-mode",
- "background-clip",
- "-moz-background-clip",
- "-webkit-background-clip",
- "background-color",
- "-webkit-background-color",
- "-webkit-background-composite",
- "background-image",
- "-webkit-background-image",
- "-moz-background-inline-policy",
- "background-origin",
- "-moz-background-origin",
- "-webkit-background-origin",
- "background-position",
- "-webkit-background-position",
- "background-position-x",
- "-webkit-background-position-x",
- "background-position-y",
- "-webkit-background-position-y",
- "background-repeat",
- "-webkit-background-repeat",
- "background-repeat-x",
- "background-repeat-y",
- "background-size",
- "-moz-background-size",
- "-webkit-background-size",
- "-webkit-background",
- "baseline-shift",
- "baseline-source",
- "behavior",
- "-moz-binding",
- "block-ellipsis",
- "block-overflow",
- "-ms-block-progression",
- "block-size",
- "block-step",
- "block-step-align",
- "block-step-insert",
- "block-step-round",
- "block-step-size",
- "bookmark-label",
- "bookmark-level",
- "bookmark-state",
- "border",
- "-webkit-border-after-color",
- "-webkit-border-after-style",
- "-webkit-border-after",
- "-webkit-border-after-width",
- "-webkit-border-before-color",
- "-webkit-border-before-style",
- "-webkit-border-before",
- "-webkit-border-before-width",
- "border-block",
- "border-block-color",
- "border-block-end",
- "border-block-end-color",
- "border-block-end-style",
- "border-block-end-width",
- "border-block-start",
- "border-block-start-color",
- "border-block-start-style",
- "border-block-start-width",
- "border-block-style",
- "border-block-width",
- "border-bottom",
- "border-bottom-color",
- "-moz-border-bottom-colors",
- "border-bottom-fit-length",
- "border-bottom-fit-width",
- "border-bottom-image",
- "border-bottom-left-fit-width",
- "border-bottom-left-image",
- "border-bottom-left-radius",
- "-webkit-border-bottom-left-radius",
- "border-bottom-right-fit-length",
- "border-bottom-right-fit-width",
- "border-bottom-right-image",
- "border-bottom-right-radius",
- "-webkit-border-bottom-right-radius",
- "border-bottom-style",
- "border-bottom-width",
- "border-bottoml-eft-fit-length",
- "border-boundary",
- "border-break",
- "border-collapse",
- "border-color",
- "border-corner-fit",
- "border-corner-image",
- "border-corner-image-transform",
- "-moz-border-end-color",
- "-webkit-border-end-color",
- "border-end-end-radius",
- "-moz-border-end",
- "border-end-start-radius",
- "-moz-border-end-style",
- "-webkit-border-end-style",
- "-webkit-border-end",
- "-moz-border-end-width",
- "-webkit-border-end-width",
- "border-fit",
- "border-fit-length",
- "-webkit-border-fit",
- "border-fit-width",
- "-webkit-border-horizontal-spacing",
- "border-image",
- "-moz-border-image",
- "-o-border-image",
- "border-image-outset",
- "-webkit-border-image-outset",
- "border-image-repeat",
- "-webkit-border-image-repeat",
- "border-image-slice",
- "-webkit-border-image-slice",
- "border-image-source",
- "-webkit-border-image-source",
- "border-image-transform",
- "-webkit-border-image",
- "border-image-width",
- "-webkit-border-image-width",
- "border-inline",
- "border-inline-color",
- "border-inline-end",
- "border-inline-end-color",
- "border-inline-end-style",
- "border-inline-end-width",
- "border-inline-start",
- "border-inline-start-color",
- "border-inline-start-style",
- "border-inline-start-width",
- "border-inline-style",
- "border-inline-width",
- "border-left",
- "border-left-color",
- "-moz-border-left-colors",
- "border-left-fit-length",
- "border-left-fit-width",
- "border-left-image",
- "border-left-style",
- "border-left-width",
- "border-radius",
- "-moz-border-radius-bottomleft",
- "-moz-border-radius-bottomright",
- "-moz-border-radius",
- "-moz-border-radius-topleft",
- "-moz-border-radius-topright",
- "-webkit-border-radius",
- "border-right",
- "border-right-color",
- "-moz-border-right-colors",
- "border-right-fit-length",
- "border-right-fit-width",
- "border-right-image",
- "border-right-style",
- "border-right-width",
- "border-spacing",
- "-moz-border-start-color",
- "-webkit-border-start-color",
- "border-start-end-radius",
- "-moz-border-start",
- "border-start-start-radius",
- "-moz-border-start-style",
- "-webkit-border-start-style",
- "-webkit-border-start",
- "-moz-border-start-width",
- "-webkit-border-start-width",
- "border-style",
- "border-top",
- "border-top-color",
- "-moz-border-top-colors",
- "border-top-fit-length",
- "border-top-fit-width",
- "border-top-image",
- "border-top-left-fit-length",
- "border-top-left-fit-width",
- "border-top-left-image",
- "border-top-left-radius",
- "-webkit-border-top-left-radius",
- "border-top-right-fit-length",
- "border-top-right-fit-width",
- "border-top-right-image",
- "border-top-right-radius",
- "-webkit-border-top-right-radius",
- "border-top-style",
- "border-top-width",
- "-webkit-border-vertical-spacing",
- "border-width",
- "bottom",
- "-moz-box-align",
- "-webkit-box-align",
- "box-decoration-break",
- "-webkit-box-decoration-break",
- "-moz-box-direction",
- "-webkit-box-direction",
- "-webkit-box-flex-group",
- "-moz-box-flex",
- "-webkit-box-flex",
- "-webkit-box-lines",
- "-moz-box-ordinal-group",
- "-webkit-box-ordinal-group",
- "-moz-box-orient",
- "-webkit-box-orient",
- "-moz-box-pack",
- "-webkit-box-pack",
- "-webkit-box-reflect",
- "box-shadow",
- "-moz-box-shadow",
- "-webkit-box-shadow",
- "box-sizing",
- "-moz-box-sizing",
- "-webkit-box-sizing",
- "box-snap",
- "break-after",
- "break-before",
- "break-inside",
- "buffered-rendering",
- "caption-side",
- "caret",
- "caret-color",
- "caret-shape",
- "chains",
- "clear",
- "clip",
- "clip-path",
- "-webkit-clip-path",
- "clip-rule",
- "color",
- "color-adjust",
- "-webkit-color-correction",
- "color-interpolation",
- "color-interpolation-filters",
- "color-profile",
- "color-rendering",
- "color-scheme",
- "-webkit-column-axis",
- "-webkit-column-break-after",
- "-webkit-column-break-before",
- "-webkit-column-break-inside",
- "column-count",
- "-moz-column-count",
- "-webkit-column-count",
- "column-fill",
- "-moz-column-fill",
- "-webkit-column-fill",
- "column-gap",
- "-moz-column-gap",
- "-webkit-column-gap",
- "column-progression",
- "-webkit-column-progression",
- "column-rule",
- "column-rule-color",
- "-moz-column-rule-color",
- "-webkit-column-rule-color",
- "-moz-column-rule",
- "column-rule-style",
- "-moz-column-rule-style",
- "-webkit-column-rule-style",
- "-webkit-column-rule",
- "column-rule-width",
- "-moz-column-rule-width",
- "-webkit-column-rule-width",
- "column-span",
- "-webkit-column-span",
- "column-width",
- "-moz-column-width",
- "-webkit-column-width",
- "columns",
- "-moz-columns",
- "-webkit-columns",
- "-webkit-composition-fill-color",
- "-webkit-composition-frame-color",
- "contain",
- "content",
- "-ms-content-zoom-chaining",
- "-ms-content-zoom-limit-max",
- "-ms-content-zoom-limit-min",
- "-ms-content-zoom-limit",
- "-ms-content-zoom-snap",
- "-ms-content-zoom-snap-points",
- "-ms-content-zoom-snap-type",
- "-ms-content-zooming",
- "continue",
- "counter-increment",
- "counter-reset",
- "counter-set",
- "cue",
- "cue-after",
- "cue-before",
- "cursor",
- "-webkit-cursor-visibility",
- "cx",
- "cy",
- "d",
- "-apple-dashboard-region",
- "-webkit-dashboard-region",
- "direction",
- "display",
- "display-align",
- "dominant-baseline",
- "drop-initial-after-adjust",
- "drop-initial-after-align",
- "drop-initial-before-adjust",
- "drop-initial-before-align",
- "drop-initial-size",
- "drop-initial-value",
- "elevation",
- "empty-cells",
- "enable-background",
- "fill",
- "fill-break",
- "fill-color",
- "fill-image",
- "fill-opacity",
- "fill-origin",
- "fill-position",
- "fill-repeat",
- "fill-rule",
- "fill-size",
- "filter",
- "-ms-filter",
- "-webkit-filter",
- "flex",
- "-ms-flex-align",
- "-webkit-flex-align",
- "flex-basis",
- "-webkit-flex-basis",
- "flex-direction",
- "-ms-flex-direction",
- "-webkit-flex-direction",
- "flex-flow",
- "-ms-flex-flow",
- "-webkit-flex-flow",
- "flex-grow",
- "-webkit-flex-grow",
- "-ms-flex-item-align",
- "-webkit-flex-item-align",
- "-ms-flex-line-pack",
- "-webkit-flex-line-pack",
- "-ms-flex",
- "-ms-flex-negative",
- "-ms-flex-order",
- "-webkit-flex-order",
- "-ms-flex-pack",
- "-webkit-flex-pack",
- "-ms-flex-positive",
- "-ms-flex-preferred-size",
- "flex-shrink",
- "-webkit-flex-shrink",
- "-webkit-flex",
- "flex-wrap",
- "-ms-flex-wrap",
- "-webkit-flex-wrap",
- "float",
- "float-defer",
- "-moz-float-edge",
- "float-offset",
- "float-reference",
- "flood-color",
- "flood-opacity",
- "flow",
- "flow-from",
- "-ms-flow-from",
- "-webkit-flow-from",
- "flow-into",
- "-ms-flow-into",
- "-webkit-flow-into",
- "font",
- "font-display",
- "font-family",
- "font-feature-settings",
- "-moz-font-feature-settings",
- "-ms-font-feature-settings",
- "-webkit-font-feature-settings",
- "font-kerning",
- "-webkit-font-kerning",
- "font-language-override",
- "-moz-font-language-override",
- "font-max-size",
- "font-min-size",
- "font-optical-sizing",
- "font-palette",
- "font-size",
- "font-size-adjust",
- "-webkit-font-size-delta",
- "-webkit-font-smoothing",
- "font-stretch",
- "font-style",
- "font-synthesis",
- "font-synthesis-small-caps",
- "font-synthesis-style",
- "font-synthesis-weight",
- "font-variant",
- "font-variant-alternates",
- "font-variant-caps",
- "font-variant-east-asian",
- "font-variant-emoji",
- "font-variant-ligatures",
- "-webkit-font-variant-ligatures",
- "font-variant-numeric",
- "font-variant-position",
- "font-variation-settings",
- "font-weight",
- "footnote-display",
- "footnote-policy",
- "-moz-force-broken-image-icon",
- "forced-color-adjust",
- "gap",
- "glyph-orientation-horizontal",
- "glyph-orientation-vertical",
- "grid",
- "-webkit-grid-after",
- "grid-area",
- "grid-auto-columns",
- "-webkit-grid-auto-columns",
- "grid-auto-flow",
- "-webkit-grid-auto-flow",
- "grid-auto-rows",
- "-webkit-grid-auto-rows",
- "-webkit-grid-before",
- "grid-column",
- "-ms-grid-column-align",
- "grid-column-end",
- "grid-column-gap",
- "-ms-grid-column",
- "-ms-grid-column-span",
- "grid-column-start",
- "-webkit-grid-column",
- "-ms-grid-columns",
- "-webkit-grid-columns",
- "-webkit-grid-end",
- "grid-gap",
- "grid-row",
- "-ms-grid-row-align",
- "grid-row-end",
- "grid-row-gap",
- "-ms-grid-row",
- "-ms-grid-row-span",
- "grid-row-start",
- "-webkit-grid-row",
- "-ms-grid-rows",
- "-webkit-grid-rows",
- "-webkit-grid-start",
- "grid-template",
- "grid-template-areas",
- "grid-template-columns",
- "grid-template-rows",
- "hanging-punctuation",
- "height",
- "-ms-high-contrast-adjust",
- "-webkit-highlight",
- "hyphenate-character",
- "-webkit-hyphenate-character",
- "-webkit-hyphenate-limit-after",
- "-webkit-hyphenate-limit-before",
- "hyphenate-limit-chars",
- "-ms-hyphenate-limit-chars",
- "hyphenate-limit-last",
- "hyphenate-limit-lines",
- "-ms-hyphenate-limit-lines",
- "-webkit-hyphenate-limit-lines",
- "hyphenate-limit-zone",
- "-ms-hyphenate-limit-zone",
- "hyphens",
- "-moz-hyphens",
- "-ms-hyphens",
- "-webkit-hyphens",
- "image-orientation",
- "-moz-image-region",
- "image-rendering",
- "image-resolution",
- "-ms-ime-align",
- "ime-mode",
- "-webkit-initial-letter",
- "initial-letters",
- "initial-letters-align",
- "initial-letters-wrap",
- "inline-box-align",
- "inline-size",
- "inline-sizing",
- "input-format",
- "-wap-input-format",
- "-wap-input-required",
- "inset",
- "inset-after",
- "inset-before",
- "inset-block",
- "inset-block-end",
- "inset-block-start",
- "inset-end",
- "inset-inline",
- "inset-inline-end",
- "inset-inline-start",
- "inset-start",
- "-ms-interpolation-mode",
- "isolation",
- "justify-content",
- "-webkit-justify-content",
- "justify-items",
- "justify-self",
- "-webkit-justify-self",
- "kerning",
- "layout-flow",
- "layout-grid",
- "layout-grid-char",
- "layout-grid-line",
- "layout-grid-mode",
- "layout-grid-type",
- "leading-trim",
- "leading-trim-over",
- "leading-trim-under",
- "left",
- "letter-spacing",
- "lighting-color",
- "-webkit-line-align",
- "-webkit-line-box-contain",
- "line-break",
- "-webkit-line-break",
- "line-clamp",
- "-webkit-line-clamp",
- "line-grid",
- "-webkit-line-grid-snap",
- "-webkit-line-grid",
- "line-height",
- "line-height-step",
- "line-increment",
- "line-padding",
- "line-sizing",
- "line-snap",
- "-webkit-line-snap",
- "line-stacking",
- "line-stacking-ruby",
- "line-stacking-shift",
- "line-stacking-strategy",
- "-o-link",
- "-o-link-source",
- "list-style",
- "list-style-image",
- "list-style-position",
- "list-style-type",
- "-webkit-locale",
- "-webkit-logical-height",
- "-webkit-logical-width",
- "margin",
- "-webkit-margin-after-collapse",
- "-webkit-margin-after",
- "-webkit-margin-before-collapse",
- "-webkit-margin-before",
- "margin-block",
- "margin-block-end",
- "margin-block-start",
- "margin-bottom",
- "-webkit-margin-bottom-collapse",
- "margin-break",
- "-webkit-margin-collapse",
- "-moz-margin-end",
- "-webkit-margin-end",
- "margin-inline",
- "margin-inline-end",
- "margin-inline-start",
- "margin-left",
- "margin-right",
- "-moz-margin-start",
- "-webkit-margin-start",
- "margin-top",
- "-webkit-margin-top-collapse",
- "margin-trim",
- "marker",
- "marker-end",
- "marker-knockout-left",
- "marker-knockout-right",
- "marker-mid",
- "marker-offset",
- "marker-pattern",
- "marker-segment",
- "marker-side",
- "marker-start",
- "marks",
- "-wap-marquee-dir",
- "-webkit-marquee-direction",
- "-webkit-marquee-increment",
- "-wap-marquee-loop",
- "-webkit-marquee-repetition",
- "-wap-marquee-speed",
- "-webkit-marquee-speed",
- "-wap-marquee-style",
- "-webkit-marquee-style",
- "-webkit-marquee",
- "mask",
- "-webkit-mask-attachment",
- "mask-border",
- "mask-border-mode",
- "mask-border-outset",
- "mask-border-repeat",
- "mask-border-slice",
- "mask-border-source",
- "mask-border-width",
- "-webkit-mask-box-image-outset",
- "-webkit-mask-box-image-repeat",
- "-webkit-mask-box-image-slice",
- "-webkit-mask-box-image-source",
- "-webkit-mask-box-image",
- "-webkit-mask-box-image-width",
- "mask-clip",
- "-webkit-mask-clip",
- "mask-composite",
- "-webkit-mask-composite",
- "mask-image",
- "-webkit-mask-image",
- "mask-mode",
- "mask-origin",
- "-webkit-mask-origin",
- "mask-position",
- "-webkit-mask-position",
- "mask-position-x",
- "-webkit-mask-position-x",
- "mask-position-y",
- "-webkit-mask-position-y",
- "mask-repeat",
- "-webkit-mask-repeat",
- "-webkit-mask-repeat-x",
- "-webkit-mask-repeat-y",
- "mask-size",
- "-webkit-mask-size",
- "mask-source-type",
- "-webkit-mask-source-type",
- "mask-type",
- "-webkit-mask",
- "-webkit-match-nearest-mail-blockquote-color",
- "max-block-size",
- "max-height",
- "max-inline-size",
- "max-lines",
- "-webkit-max-logical-height",
- "-webkit-max-logical-width",
- "max-width",
- "max-zoom",
- "min-block-size",
- "min-height",
- "min-inline-size",
- "-webkit-min-logical-height",
- "-webkit-min-logical-width",
- "min-width",
- "min-zoom",
- "mix-blend-mode",
- "motion",
- "motion-offset",
- "motion-path",
- "motion-rotation",
- "nav-down",
- "nav-index",
- "nav-left",
- "nav-right",
- "nav-up",
- "-webkit-nbsp-mode",
- "object-fit",
- "-o-object-fit",
- "object-position",
- "-o-object-position",
- "offset",
- "offset-after",
- "offset-anchor",
- "offset-before",
- "offset-block-end",
- "offset-block-start",
- "offset-distance",
- "offset-end",
- "offset-inline-end",
- "offset-inline-start",
- "offset-path",
- "offset-position",
- "offset-rotate",
- "offset-rotation",
- "offset-start",
- "opacity",
- "-moz-opacity",
- "-webkit-opacity",
- "order",
- "-webkit-order",
- "-moz-orient",
- "orientation",
- "orphans",
- "-moz-osx-font-smoothing",
- "outline",
- "outline-color",
- "-moz-outline-color",
- "-moz-outline",
- "outline-offset",
- "-moz-outline-offset",
- "-moz-outline-radius-bottomleft",
- "-moz-outline-radius-bottomright",
- "-moz-outline-radius",
- "-moz-outline-radius-topleft",
- "-moz-outline-radius-topright",
- "outline-style",
- "-moz-outline-style",
- "outline-width",
- "-moz-outline-width",
- "overflow",
- "overflow-anchor",
- "overflow-block",
- "overflow-inline",
- "-webkit-overflow-scrolling",
- "-ms-overflow-style",
- "overflow-wrap",
- "overflow-x",
- "overflow-y",
- "overscroll-behavior",
- "overscroll-behavior-block",
- "overscroll-behavior-inline",
- "overscroll-behavior-x",
- "overscroll-behavior-y",
- "padding",
- "-webkit-padding-after",
- "-webkit-padding-before",
- "padding-block",
- "padding-block-end",
- "padding-block-start",
- "padding-bottom",
- "-moz-padding-end",
- "-webkit-padding-end",
- "padding-inline",
- "padding-inline-end",
- "padding-inline-start",
- "padding-left",
- "padding-right",
- "-moz-padding-start",
- "-webkit-padding-start",
- "padding-top",
- "page",
- "page-break-after",
- "page-break-before",
- "page-break-inside",
- "paint-order",
- "pause",
- "pause-after",
- "pause-before",
- "pen-action",
- "perspective",
- "-moz-perspective",
- "-ms-perspective",
- "perspective-origin",
- "-moz-perspective-origin",
- "-ms-perspective-origin",
- "-webkit-perspective-origin",
- "perspective-origin-x",
- "-webkit-perspective-origin-x",
- "perspective-origin-y",
- "-webkit-perspective-origin-y",
- "-webkit-perspective",
- "pitch",
- "pitch-range",
- "place-content",
- "place-items",
- "place-self",
- "play-during",
- "pointer-events",
- "position",
- "-webkit-print-color-adjust",
- "quotes",
- "r",
- "-webkit-region-break-after",
- "-webkit-region-break-before",
- "-webkit-region-break-inside",
- "region-fragment",
- "-webkit-region-fragment",
- "-webkit-region-overflow",
- "resize",
- "richness",
- "right",
- "rotate",
- "row-gap",
- "-webkit-rtl-ordering",
- "ruby-align",
- "ruby-merge",
- "ruby-overhang",
- "ruby-position",
- "-webkit-ruby-position",
- "running",
- "rx",
- "ry",
- "scale",
- "scroll-behavior",
- "-ms-scroll-chaining",
- "-ms-scroll-limit",
- "-ms-scroll-limit-x-max",
- "-ms-scroll-limit-x-min",
- "-ms-scroll-limit-y-max",
- "-ms-scroll-limit-y-min",
- "scroll-margin",
- "scroll-margin-block",
- "scroll-margin-block-end",
- "scroll-margin-block-start",
- "scroll-margin-bottom",
- "scroll-margin-inline",
- "scroll-margin-inline-end",
- "scroll-margin-inline-start",
- "scroll-margin-left",
- "scroll-margin-right",
- "scroll-margin-top",
- "scroll-padding",
- "scroll-padding-block",
- "scroll-padding-block-end",
- "scroll-padding-block-start",
- "scroll-padding-bottom",
- "scroll-padding-inline",
- "scroll-padding-inline-end",
- "scroll-padding-inline-start",
- "scroll-padding-left",
- "scroll-padding-right",
- "scroll-padding-top",
- "-ms-scroll-rails",
- "scroll-snap-align",
- "scroll-snap-coordinate",
- "-webkit-scroll-snap-coordinate",
- "scroll-snap-destination",
- "-webkit-scroll-snap-destination",
- "scroll-snap-margin",
- "scroll-snap-margin-bottom",
- "scroll-snap-margin-left",
- "scroll-snap-margin-right",
- "scroll-snap-margin-top",
- "scroll-snap-points-x",
- "-ms-scroll-snap-points-x",
- "-webkit-scroll-snap-points-x",
- "scroll-snap-points-y",
- "-ms-scroll-snap-points-y",
- "-webkit-scroll-snap-points-y",
- "scroll-snap-stop",
- "scroll-snap-type",
- "-ms-scroll-snap-type",
- "-webkit-scroll-snap-type",
- "scroll-snap-type-x",
- "scroll-snap-type-y",
- "-ms-scroll-snap-x",
- "-ms-scroll-snap-y",
- "-ms-scroll-translation",
- "scrollbar-arrow-color",
- "scrollbar-base-color",
- "scrollbar-color",
- "scrollbar-dark-shadow-color",
- "scrollbar-darkshadow-color",
- "scrollbar-face-color",
- "scrollbar-gutter",
- "scrollbar-highlight-color",
- "scrollbar-shadow-color",
- "scrollbar-track-color",
- "scrollbar-width",
- "scrollbar3d-light-color",
- "scrollbar3dlight-color",
- "shape-image-threshold",
- "-webkit-shape-image-threshold",
- "shape-inside",
- "-webkit-shape-inside",
- "shape-margin",
- "-webkit-shape-margin",
- "shape-outside",
- "-webkit-shape-outside",
- "-webkit-shape-padding",
- "shape-rendering",
- "size",
- "snap-height",
- "solid-color",
- "solid-opacity",
- "spatial-navigation-action",
- "spatial-navigation-contain",
- "spatial-navigation-function",
- "speak",
- "speak-as",
- "speak-header",
- "speak-numeral",
- "speak-punctuation",
- "speech-rate",
- "src",
- "-moz-stack-sizing",
- "stop-color",
- "stop-opacity",
- "stress",
- "string-set",
- "stroke",
- "stroke-align",
- "stroke-alignment",
- "stroke-break",
- "stroke-color",
- "stroke-dash-corner",
- "stroke-dash-justify",
- "stroke-dashadjust",
- "stroke-dasharray",
- "stroke-dashcorner",
- "stroke-dashoffset",
- "stroke-image",
- "stroke-linecap",
- "stroke-linejoin",
- "stroke-miterlimit",
- "stroke-opacity",
- "stroke-origin",
- "stroke-position",
- "stroke-repeat",
- "stroke-size",
- "stroke-width",
- "supported-color-schemes",
- "-webkit-svg-shadow",
- "tab-size",
- "-moz-tab-size",
- "-o-tab-size",
- "-o-table-baseline",
- "table-layout",
- "-webkit-tap-highlight-color",
- "text-align",
- "text-align-all",
- "text-align-last",
- "-moz-text-align-last",
- "text-anchor",
- "text-autospace",
- "-moz-text-blink",
- "-ms-text-combine-horizontal",
- "text-combine-upright",
- "-webkit-text-combine",
- "text-decoration",
- "text-decoration-blink",
- "text-decoration-color",
- "-moz-text-decoration-color",
- "-webkit-text-decoration-color",
- "text-decoration-line",
- "-moz-text-decoration-line",
- "text-decoration-line-through",
- "-webkit-text-decoration-line",
- "text-decoration-none",
- "text-decoration-overline",
- "text-decoration-skip",
- "text-decoration-skip-ink",
- "-webkit-text-decoration-skip",
- "text-decoration-style",
- "-moz-text-decoration-style",
- "-webkit-text-decoration-style",
- "text-decoration-thickness",
- "text-decoration-underline",
- "-webkit-text-decoration",
- "text-decoration-width",
- "-webkit-text-decorations-in-effect",
- "text-emphasis",
- "text-emphasis-color",
- "-webkit-text-emphasis-color",
- "text-emphasis-position",
- "-webkit-text-emphasis-position",
- "text-emphasis-skip",
- "text-emphasis-style",
- "-webkit-text-emphasis-style",
- "-webkit-text-emphasis",
- "-webkit-text-fill-color",
- "text-group-align",
- "text-height",
- "text-indent",
- "text-justify",
- "text-justify-trim",
- "text-kashida",
- "text-kashida-space",
- "text-line-through",
- "text-line-through-color",
- "text-line-through-mode",
- "text-line-through-style",
- "text-line-through-width",
- "text-orientation",
- "-webkit-text-orientation",
- "text-overflow",
- "text-overline",
- "text-overline-color",
- "text-overline-mode",
- "text-overline-style",
- "text-overline-width",
- "text-rendering",
- "-webkit-text-security",
- "text-shadow",
- "text-size-adjust",
- "-moz-text-size-adjust",
- "-ms-text-size-adjust",
- "-webkit-text-size-adjust",
- "text-space-collapse",
- "text-space-trim",
- "text-spacing",
- "-webkit-text-stroke-color",
- "-webkit-text-stroke",
- "-webkit-text-stroke-width",
- "text-transform",
- "text-underline",
- "text-underline-color",
- "text-underline-mode",
- "text-underline-offset",
- "text-underline-position",
- "-webkit-text-underline-position",
- "text-underline-style",
- "text-underline-width",
- "text-wrap",
- "-webkit-text-zoom",
- "top",
- "touch-action",
- "touch-action-delay",
- "-ms-touch-action",
- "-webkit-touch-callout",
- "-ms-touch-select",
- "transform",
- "transform-box",
- "-moz-transform",
- "-ms-transform",
- "-o-transform",
- "transform-origin",
- "-moz-transform-origin",
- "-ms-transform-origin",
- "-o-transform-origin",
- "-webkit-transform-origin",
- "transform-origin-x",
- "-webkit-transform-origin-x",
- "transform-origin-y",
- "-webkit-transform-origin-y",
- "transform-origin-z",
- "-webkit-transform-origin-z",
- "transform-style",
- "-moz-transform-style",
- "-ms-transform-style",
- "-webkit-transform-style",
- "-webkit-transform",
- "transition",
- "transition-delay",
- "-moz-transition-delay",
- "-ms-transition-delay",
- "-o-transition-delay",
- "-webkit-transition-delay",
- "transition-duration",
- "-moz-transition-duration",
- "-ms-transition-duration",
- "-o-transition-duration",
- "-webkit-transition-duration",
- "-moz-transition",
- "-ms-transition",
- "-o-transition",
- "transition-property",
- "-moz-transition-property",
- "-ms-transition-property",
- "-o-transition-property",
- "-webkit-transition-property",
- "transition-timing-function",
- "-moz-transition-timing-function",
- "-ms-transition-timing-function",
- "-o-transition-timing-function",
- "-webkit-transition-timing-function",
- "-webkit-transition",
- "translate",
- "uc-alt-skin",
- "uc-skin",
- "unicode-bidi",
- "unicode-range",
- "-webkit-user-drag",
- "-moz-user-focus",
- "-moz-user-input",
- "-moz-user-modify",
- "-webkit-user-modify",
- "user-select",
- "-moz-user-select",
- "-ms-user-select",
- "-webkit-user-select",
- "user-zoom",
- "vector-effect",
- "vertical-align",
- "viewport-fill",
- "viewport-fill-opacity",
- "viewport-fit",
- "visibility",
- "voice-family",
- "volume",
- "white-space",
- "-webkit-widget-region",
- "widows",
- "width",
- "will-change",
- "-moz-window-dragging",
- "-moz-window-shadow",
- "word-boundary-detection",
- "word-boundary-expansion",
- "word-break",
- "word-spacing",
- "word-wrap",
- "wrap-after",
- "wrap-before",
- "wrap-flow",
- "-ms-wrap-flow",
- "-webkit-wrap-flow",
- "wrap-inside",
- "-ms-wrap-margin",
- "-webkit-wrap-margin",
- "-webkit-wrap-padding",
- "-webkit-wrap-shape-inside",
- "-webkit-wrap-shape-outside",
- "wrap-through",
- "-ms-wrap-through",
- "-webkit-wrap-through",
- "-webkit-wrap",
- "writing-mode",
- "-webkit-writing-mode",
- "x",
- "y",
- "z-index",
- "zoom"
- ]
-} \ No newline at end of file
diff --git a/assets/node_modules/known-css-properties/index.js b/assets/node_modules/known-css-properties/index.js
deleted file mode 100644
index be1480a..0000000
--- a/assets/node_modules/known-css-properties/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports.all = require('./data/all.json').properties;
diff --git a/assets/node_modules/known-css-properties/package.json b/assets/node_modules/known-css-properties/package.json
deleted file mode 100644
index 9b24834..0000000
--- a/assets/node_modules/known-css-properties/package.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "name": "known-css-properties",
- "version": "0.17.0",
- "description": "List of known CSS properties",
- "repository": "known-css/known-css-properties",
- "main": "index.js",
- "scripts": {
- "bump": "npm version patch && npm publish && git push && git push --tags",
- "download-w3c-data": "node scripts/download-w3c-data",
- "generate": "node scripts/generate",
- "lint": "eslint index.js scripts/*.js",
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [
- "css",
- "properties",
- "w3c",
- "chrome",
- "firefox",
- "explorer",
- "edge",
- "safari",
- "opera",
- "samsung-internet",
- "uc-browser"
- ],
- "contributors": [
- {
- "name": "Krzysztof Bebenek",
- "email": "kbebenek@kbebenek.me",
- "url": "http://kbebenek.me"
- },
- {
- "name": "Viorel Cojocaru",
- "email": "vio@beanon.com",
- "url": "http://beanon.com"
- }
- ],
- "author": {
- "name": "Viorel Cojocaru",
- "email": "vio@beanon.com",
- "url": "http://beanon.com"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/known-css/known-css-properties/issues"
- },
- "homepage": "https://github.com/known-css/known-css-properties#readme",
- "devDependencies": {
- "axios": "0.19.0",
- "eslint": "6.6.0",
- "globby": "10.0.1",
- "lodash.sortby": "4.7.0",
- "lodash.uniq": "4.5.0"
- }
-}
diff --git a/assets/node_modules/known-css-properties/renovate.json b/assets/node_modules/known-css-properties/renovate.json
deleted file mode 100644
index eecf589..0000000
--- a/assets/node_modules/known-css-properties/renovate.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "extends": [
- "config:base"
- ],
- "schedule": [
- "every monday"
- ]
-}
diff --git a/assets/node_modules/leven/index.d.ts b/assets/node_modules/leven/index.d.ts
deleted file mode 100644
index 571833a..0000000
--- a/assets/node_modules/leven/index.d.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-declare const leven: {
- /**
- Measure the difference between two strings.
-
- @example
- ```
- import leven = require('leven');
-
- leven('cat', 'cow');
- //=> 2
- ```
- */
- (left: string, right: string): number;
-
- // TODO: Remove this for the next major release, refactor the whole definition to:
- // declare function leven(left: string, right: string): number;
- // export = leven;
- default: typeof leven;
-};
-
-export = leven;
diff --git a/assets/node_modules/leven/index.js b/assets/node_modules/leven/index.js
deleted file mode 100644
index 25f5a3d..0000000
--- a/assets/node_modules/leven/index.js
+++ /dev/null
@@ -1,77 +0,0 @@
-'use strict';
-const array = [];
-const charCodeCache = [];
-
-const leven = (left, right) => {
- if (left === right) {
- return 0;
- }
-
- const swap = left;
-
- // Swapping the strings if `a` is longer than `b` so we know which one is the
- // shortest & which one is the longest
- if (left.length > right.length) {
- left = right;
- right = swap;
- }
-
- let leftLength = left.length;
- let rightLength = right.length;
-
- // Performing suffix trimming:
- // We can linearly drop suffix common to both strings since they
- // don't increase distance at all
- // Note: `~-` is the bitwise way to perform a `- 1` operation
- while (leftLength > 0 && (left.charCodeAt(~-leftLength) === right.charCodeAt(~-rightLength))) {
- leftLength--;
- rightLength--;
- }
-
- // Performing prefix trimming
- // We can linearly drop prefix common to both strings since they
- // don't increase distance at all
- let start = 0;
-
- while (start < leftLength && (left.charCodeAt(start) === right.charCodeAt(start))) {
- start++;
- }
-
- leftLength -= start;
- rightLength -= start;
-
- if (leftLength === 0) {
- return rightLength;
- }
-
- let bCharCode;
- let result;
- let temp;
- let temp2;
- let i = 0;
- let j = 0;
-
- while (i < leftLength) {
- charCodeCache[i] = left.charCodeAt(start + i);
- array[i] = ++i;
- }
-
- while (j < rightLength) {
- bCharCode = right.charCodeAt(start + j);
- temp = j++;
- result = j;
-
- for (i = 0; i < leftLength; i++) {
- temp2 = bCharCode === charCodeCache[i] ? temp : temp + 1;
- temp = array[i];
- // eslint-disable-next-line no-multi-assign
- result = array[i] = temp > result ? temp2 > result ? result + 1 : temp2 : temp2 > temp ? temp + 1 : temp2;
- }
- }
-
- return result;
-};
-
-module.exports = leven;
-// TODO: Remove this for the next major release
-module.exports.default = leven;
diff --git a/assets/node_modules/leven/license b/assets/node_modules/leven/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/leven/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/leven/package.json b/assets/node_modules/leven/package.json
deleted file mode 100644
index e1b3d8e..0000000
--- a/assets/node_modules/leven/package.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "name": "leven",
- "version": "3.1.0",
- "description": "Measure the difference between two strings using the fastest JS implementation of the Levenshtein distance algorithm",
- "license": "MIT",
- "repository": "sindresorhus/leven",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "xo && ava && tsd",
- "bench": "matcha bench.js"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "leven",
- "levenshtein",
- "distance",
- "algorithm",
- "algo",
- "string",
- "difference",
- "diff",
- "fast",
- "fuzzy",
- "similar",
- "similarity",
- "compare",
- "comparison",
- "edit",
- "text",
- "match",
- "matching"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "fast-levenshtein": "^2.0.6",
- "ld": "^0.1.0",
- "levdist": "^2.2.9",
- "levenshtein": "^1.0.5",
- "levenshtein-component": "^0.0.1",
- "levenshtein-edit-distance": "^2.0.3",
- "matcha": "^0.7.0",
- "natural": "^0.6.3",
- "talisman": "^0.21.0",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/leven/readme.md b/assets/node_modules/leven/readme.md
deleted file mode 100644
index 33625c4..0000000
--- a/assets/node_modules/leven/readme.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# leven [![Build Status](https://travis-ci.org/sindresorhus/leven.svg?branch=master)](https://travis-ci.org/sindresorhus/leven)
-
-> Measure the difference between two strings<br>
-> One of the fastest JS implementations of the [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) algorithm
-
-
-## Install
-
-```
-$ npm install leven
-```
-
-
-## Usage
-
-```js
-const leven = require('leven');
-
-leven('cat', 'cow');
-//=> 2
-```
-
-
-## Benchmark
-
-```
-$ npm run bench
-```
-
-```
- 165,926 op/s » leven
- 164,398 op/s » talisman
- 1,044 op/s » levenshtein-edit-distance
- 628 op/s » fast-levenshtein
- 497 op/s » levenshtein-component
- 195 op/s » ld
- 190 op/s » levenshtein
- 168 op/s » levdist
- 10 op/s » natural
-```
-
-
-## Related
-
-- [leven-cli](https://github.com/sindresorhus/leven-cli) - CLI for this module
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/lines-and-columns/LICENSE b/assets/node_modules/lines-and-columns/LICENSE
deleted file mode 100644
index 12978ec..0000000
--- a/assets/node_modules/lines-and-columns/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Brian Donovan
-
-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/assets/node_modules/lines-and-columns/README.md b/assets/node_modules/lines-and-columns/README.md
deleted file mode 100644
index e8f5dca..0000000
--- a/assets/node_modules/lines-and-columns/README.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# lines-and-columns
-
-Maps lines and columns to character offsets and back. This is useful for parsers
-and other text processors that deal in character ranges but process text with
-meaningful lines and columns.
-
-## Install
-
-```
-$ npm install [--save] lines-and-columns
-```
-
-## Usage
-
-```js
-import LinesAndColumns from 'lines-and-columns';
-
-const lines = new LinesAndColumns(
-`table {
- border: 0
-}`);
-
-lines.locationForIndex(9); // { line: 1, column: 1 }
-lines.indexForLocation({ line: 1, column: 2 }); // 10
-```
-
-## License
-
-MIT
diff --git a/assets/node_modules/lines-and-columns/dist/index.d.ts b/assets/node_modules/lines-and-columns/dist/index.d.ts
deleted file mode 100644
index 93341f5..0000000
--- a/assets/node_modules/lines-and-columns/dist/index.d.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-export declare type SourceLocation = {
- line: number;
- column: number;
-};
-export default class LinesAndColumns {
- private string;
- private offsets;
- constructor(string: string);
- locationForIndex(index: number): SourceLocation | null;
- indexForLocation(location: SourceLocation): number | null;
- private lengthOfLine(line);
-}
diff --git a/assets/node_modules/lines-and-columns/dist/index.js b/assets/node_modules/lines-and-columns/dist/index.js
deleted file mode 100644
index a2469c6..0000000
--- a/assets/node_modules/lines-and-columns/dist/index.js
+++ /dev/null
@@ -1,58 +0,0 @@
-"use strict";
-var LF = '\n';
-var CR = '\r';
-var LinesAndColumns = (function () {
- function LinesAndColumns(string) {
- this.string = string;
- var offsets = [0];
- for (var offset = 0; offset < string.length;) {
- switch (string[offset]) {
- case LF:
- offset += LF.length;
- offsets.push(offset);
- break;
- case CR:
- offset += CR.length;
- if (string[offset] === LF) {
- offset += LF.length;
- }
- offsets.push(offset);
- break;
- default:
- offset++;
- break;
- }
- }
- this.offsets = offsets;
- }
- LinesAndColumns.prototype.locationForIndex = function (index) {
- if (index < 0 || index > this.string.length) {
- return null;
- }
- var line = 0;
- var offsets = this.offsets;
- while (offsets[line + 1] <= index) {
- line++;
- }
- var column = index - offsets[line];
- return { line: line, column: column };
- };
- LinesAndColumns.prototype.indexForLocation = function (location) {
- var line = location.line, column = location.column;
- if (line < 0 || line >= this.offsets.length) {
- return null;
- }
- if (column < 0 || column > this.lengthOfLine(line)) {
- return null;
- }
- return this.offsets[line] + column;
- };
- LinesAndColumns.prototype.lengthOfLine = function (line) {
- var offset = this.offsets[line];
- var nextOffset = line === this.offsets.length - 1 ? this.string.length : this.offsets[line + 1];
- return nextOffset - offset;
- };
- return LinesAndColumns;
-}());
-exports.__esModule = true;
-exports["default"] = LinesAndColumns;
diff --git a/assets/node_modules/lines-and-columns/dist/index.mjs b/assets/node_modules/lines-and-columns/dist/index.mjs
deleted file mode 100644
index e8519ee..0000000
--- a/assets/node_modules/lines-and-columns/dist/index.mjs
+++ /dev/null
@@ -1,56 +0,0 @@
-var LF = '\n';
-var CR = '\r';
-var LinesAndColumns = (function () {
- function LinesAndColumns(string) {
- this.string = string;
- var offsets = [0];
- for (var offset = 0; offset < string.length;) {
- switch (string[offset]) {
- case LF:
- offset += LF.length;
- offsets.push(offset);
- break;
- case CR:
- offset += CR.length;
- if (string[offset] === LF) {
- offset += LF.length;
- }
- offsets.push(offset);
- break;
- default:
- offset++;
- break;
- }
- }
- this.offsets = offsets;
- }
- LinesAndColumns.prototype.locationForIndex = function (index) {
- if (index < 0 || index > this.string.length) {
- return null;
- }
- var line = 0;
- var offsets = this.offsets;
- while (offsets[line + 1] <= index) {
- line++;
- }
- var column = index - offsets[line];
- return { line: line, column: column };
- };
- LinesAndColumns.prototype.indexForLocation = function (location) {
- var line = location.line, column = location.column;
- if (line < 0 || line >= this.offsets.length) {
- return null;
- }
- if (column < 0 || column > this.lengthOfLine(line)) {
- return null;
- }
- return this.offsets[line] + column;
- };
- LinesAndColumns.prototype.lengthOfLine = function (line) {
- var offset = this.offsets[line];
- var nextOffset = line === this.offsets.length - 1 ? this.string.length : this.offsets[line + 1];
- return nextOffset - offset;
- };
- return LinesAndColumns;
-}());
-export default LinesAndColumns;
diff --git a/assets/node_modules/lines-and-columns/package.json b/assets/node_modules/lines-and-columns/package.json
deleted file mode 100644
index 646cb23..0000000
--- a/assets/node_modules/lines-and-columns/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "lines-and-columns",
- "description": "Maps lines and columns to character offsets and back.",
- "main": "dist/index.js",
- "module": "dist/index.mjs",
- "types": "dist/index.d.ts",
- "scripts": {
- "lint": "tslint --config tslint.json --project tsconfig.json --type-check",
- "lint-fix": "tslint --config tslint.json --project tsconfig.json --type-check --fix",
- "prebuild": "rm -rf dist",
- "build": "./script/build",
- "pretest": "npm run build",
- "test": "mocha",
- "prepublish": "npm run lint && npm run build",
- "semantic-release": "semantic-release pre && npm publish && semantic-release post"
- },
- "files": [
- "dist"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/eventualbuddha/lines-and-columns.git"
- },
- "keywords": [
- "lines",
- "columns",
- "parser"
- ],
- "author": "Brian Donovan <me@brian-donovan.com>",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/eventualbuddha/lines-and-columns/issues"
- },
- "homepage": "https://github.com/eventualbuddha/lines-and-columns#readme",
- "devDependencies": {
- "@types/mocha": "^2.2.34",
- "@types/node": "^6.0.52",
- "mocha": "^3.2.0",
- "semantic-release": "^6.3.2",
- "ts-node": "^1.7.2",
- "tslint": "^4.1.1",
- "typescript": "^2.1.4"
- },
- "version": "1.1.6"
-} \ No newline at end of file
diff --git a/assets/node_modules/locate-path/index.d.ts b/assets/node_modules/locate-path/index.d.ts
deleted file mode 100644
index fbde526..0000000
--- a/assets/node_modules/locate-path/index.d.ts
+++ /dev/null
@@ -1,83 +0,0 @@
-declare namespace locatePath {
- interface Options {
- /**
- Current working directory.
-
- @default process.cwd()
- */
- readonly cwd?: string;
-
- /**
- Type of path to match.
-
- @default 'file'
- */
- readonly type?: 'file' | 'directory';
-
- /**
- Allow symbolic links to match if they point to the requested path type.
-
- @default true
- */
- readonly allowSymlinks?: boolean;
- }
-
- interface AsyncOptions extends Options {
- /**
- Number of concurrently pending promises. Minimum: `1`.
-
- @default Infinity
- */
- readonly concurrency?: number;
-
- /**
- Preserve `paths` order when searching.
-
- Disable this to improve performance if you don't care about the order.
-
- @default true
- */
- readonly preserveOrder?: boolean;
- }
-}
-
-declare const locatePath: {
- /**
- Get the first path that exists on disk of multiple paths.
-
- @param paths - Paths to check.
- @returns The first path that exists or `undefined` if none exists.
-
- @example
- ```
- import locatePath = require('locate-path');
-
- const files = [
- 'unicorn.png',
- 'rainbow.png', // Only this one actually exists on disk
- 'pony.png'
- ];
-
- (async () => {
- console(await locatePath(files));
- //=> 'rainbow'
- })();
- ```
- */
- (paths: Iterable<string>, options?: locatePath.AsyncOptions): Promise<
- string | undefined
- >;
-
- /**
- Synchronously get the first path that exists on disk of multiple paths.
-
- @param paths - Paths to check.
- @returns The first path that exists or `undefined` if none exists.
- */
- sync(
- paths: Iterable<string>,
- options?: locatePath.Options
- ): string | undefined;
-};
-
-export = locatePath;
diff --git a/assets/node_modules/locate-path/index.js b/assets/node_modules/locate-path/index.js
deleted file mode 100644
index 4604bbf..0000000
--- a/assets/node_modules/locate-path/index.js
+++ /dev/null
@@ -1,65 +0,0 @@
-'use strict';
-const path = require('path');
-const fs = require('fs');
-const {promisify} = require('util');
-const pLocate = require('p-locate');
-
-const fsStat = promisify(fs.stat);
-const fsLStat = promisify(fs.lstat);
-
-const typeMappings = {
- directory: 'isDirectory',
- file: 'isFile'
-};
-
-function checkType({type}) {
- if (type in typeMappings) {
- return;
- }
-
- throw new Error(`Invalid type specified: ${type}`);
-}
-
-const matchType = (type, stat) => type === undefined || stat[typeMappings[type]]();
-
-module.exports = async (paths, options) => {
- options = {
- cwd: process.cwd(),
- type: 'file',
- allowSymlinks: true,
- ...options
- };
- checkType(options);
- const statFn = options.allowSymlinks ? fsStat : fsLStat;
-
- return pLocate(paths, async path_ => {
- try {
- const stat = await statFn(path.resolve(options.cwd, path_));
- return matchType(options.type, stat);
- } catch (_) {
- return false;
- }
- }, options);
-};
-
-module.exports.sync = (paths, options) => {
- options = {
- cwd: process.cwd(),
- allowSymlinks: true,
- type: 'file',
- ...options
- };
- checkType(options);
- const statFn = options.allowSymlinks ? fs.statSync : fs.lstatSync;
-
- for (const path_ of paths) {
- try {
- const stat = statFn(path.resolve(options.cwd, path_));
-
- if (matchType(options.type, stat)) {
- return path_;
- }
- } catch (_) {
- }
- }
-};
diff --git a/assets/node_modules/locate-path/license b/assets/node_modules/locate-path/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/locate-path/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/locate-path/package.json b/assets/node_modules/locate-path/package.json
deleted file mode 100644
index 063b290..0000000
--- a/assets/node_modules/locate-path/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "locate-path",
- "version": "5.0.0",
- "description": "Get the first path that exists on disk of multiple paths",
- "license": "MIT",
- "repository": "sindresorhus/locate-path",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "locate",
- "path",
- "paths",
- "file",
- "files",
- "exists",
- "find",
- "finder",
- "search",
- "searcher",
- "array",
- "iterable",
- "iterator"
- ],
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/locate-path/readme.md b/assets/node_modules/locate-path/readme.md
deleted file mode 100644
index 2184c6f..0000000
--- a/assets/node_modules/locate-path/readme.md
+++ /dev/null
@@ -1,122 +0,0 @@
-# locate-path [![Build Status](https://travis-ci.org/sindresorhus/locate-path.svg?branch=master)](https://travis-ci.org/sindresorhus/locate-path)
-
-> Get the first path that exists on disk of multiple paths
-
-
-## Install
-
-```
-$ npm install locate-path
-```
-
-
-## Usage
-
-Here we find the first file that exists on disk, in array order.
-
-```js
-const locatePath = require('locate-path');
-
-const files = [
- 'unicorn.png',
- 'rainbow.png', // Only this one actually exists on disk
- 'pony.png'
-];
-
-(async () => {
- console(await locatePath(files));
- //=> 'rainbow'
-})();
-```
-
-
-## API
-
-### locatePath(paths, [options])
-
-Returns a `Promise<string>` for the first path that exists or `undefined` if none exists.
-
-#### paths
-
-Type: `Iterable<string>`
-
-Paths to check.
-
-#### options
-
-Type: `Object`
-
-##### concurrency
-
-Type: `number`<br>
-Default: `Infinity`<br>
-Minimum: `1`
-
-Number of concurrently pending promises.
-
-##### preserveOrder
-
-Type: `boolean`<br>
-Default: `true`
-
-Preserve `paths` order when searching.
-
-Disable this to improve performance if you don't care about the order.
-
-##### cwd
-
-Type: `string`<br>
-Default: `process.cwd()`
-
-Current working directory.
-
-##### type
-
-Type: `string`<br>
-Default: `file`<br>
-Values: `file` `directory`
-
-The type of paths that can match.
-
-##### allowSymlinks
-
-Type: `boolean`<br>
-Default: `true`
-
-Allow symbolic links to match if they point to the chosen path type.
-
-### locatePath.sync(paths, [options])
-
-Returns the first path that exists or `undefined` if none exists.
-
-#### paths
-
-Type: `Iterable<string>`
-
-Paths to check.
-
-#### options
-
-Type: `Object`
-
-##### cwd
-
-Same as above.
-
-##### type
-
-Same as above.
-
-##### allowSymlinks
-
-Same as above.
-
-
-## Related
-
-- [path-exists](https://github.com/sindresorhus/path-exists) - Check if a path exists
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/lodash/LICENSE b/assets/node_modules/lodash/LICENSE
deleted file mode 100644
index 77c42f1..0000000
--- a/assets/node_modules/lodash/LICENSE
+++ /dev/null
@@ -1,47 +0,0 @@
-Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
-
-Based on Underscore.js, copyright Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
-
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/lodash/lodash
-
-The following license applies to all parts of this software except as
-documented below:
-
-====
-
-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.
-
-====
-
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code displayed within the prose of the
-documentation.
-
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
-
-====
-
-Files located in the node_modules and vendor directories are externally
-maintained libraries used by this software which have their own
-licenses; we recommend you read them, as their terms may differ from the
-terms above.
diff --git a/assets/node_modules/lodash/README.md b/assets/node_modules/lodash/README.md
deleted file mode 100644
index 292832f..0000000
--- a/assets/node_modules/lodash/README.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# lodash v4.17.15
-
-The [Lodash](https://lodash.com/) library exported as [Node.js](https://nodejs.org/) modules.
-
-## Installation
-
-Using npm:
-```shell
-$ npm i -g npm
-$ npm i --save lodash
-```
-
-In Node.js:
-```js
-// Load the full build.
-var _ = require('lodash');
-// Load the core build.
-var _ = require('lodash/core');
-// Load the FP build for immutable auto-curried iteratee-first data-last methods.
-var fp = require('lodash/fp');
-
-// Load method categories.
-var array = require('lodash/array');
-var object = require('lodash/fp/object');
-
-// Cherry-pick methods for smaller browserify/rollup/webpack bundles.
-var at = require('lodash/at');
-var curryN = require('lodash/fp/curryN');
-```
-
-See the [package source](https://github.com/lodash/lodash/tree/4.17.15-npm) for more details.
-
-**Note:**<br>
-Install [n_](https://www.npmjs.com/package/n_) for Lodash use in the Node.js < 6 REPL.
-
-## Support
-
-Tested in Chrome 74-75, Firefox 66-67, IE 11, Edge 18, Safari 11-12, & Node.js 8-12.<br>
-Automated [browser](https://saucelabs.com/u/lodash) & [CI](https://travis-ci.org/lodash/lodash/) test runs are available.
diff --git a/assets/node_modules/lodash/_DataView.js b/assets/node_modules/lodash/_DataView.js
deleted file mode 100644
index ac2d57c..0000000
--- a/assets/node_modules/lodash/_DataView.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var getNative = require('./_getNative'),
- root = require('./_root');
-
-/* Built-in method references that are verified to be native. */
-var DataView = getNative(root, 'DataView');
-
-module.exports = DataView;
diff --git a/assets/node_modules/lodash/_Hash.js b/assets/node_modules/lodash/_Hash.js
deleted file mode 100644
index b504fe3..0000000
--- a/assets/node_modules/lodash/_Hash.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var hashClear = require('./_hashClear'),
- hashDelete = require('./_hashDelete'),
- hashGet = require('./_hashGet'),
- hashHas = require('./_hashHas'),
- hashSet = require('./_hashSet');
-
-/**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function Hash(entries) {
- var index = -1,
- length = entries == null ? 0 : entries.length;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-// Add methods to `Hash`.
-Hash.prototype.clear = hashClear;
-Hash.prototype['delete'] = hashDelete;
-Hash.prototype.get = hashGet;
-Hash.prototype.has = hashHas;
-Hash.prototype.set = hashSet;
-
-module.exports = Hash;
diff --git a/assets/node_modules/lodash/_LazyWrapper.js b/assets/node_modules/lodash/_LazyWrapper.js
deleted file mode 100644
index 81786c7..0000000
--- a/assets/node_modules/lodash/_LazyWrapper.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var baseCreate = require('./_baseCreate'),
- baseLodash = require('./_baseLodash');
-
-/** Used as references for the maximum length and index of an array. */
-var MAX_ARRAY_LENGTH = 4294967295;
-
-/**
- * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
- *
- * @private
- * @constructor
- * @param {*} value The value to wrap.
- */
-function LazyWrapper(value) {
- this.__wrapped__ = value;
- this.__actions__ = [];
- this.__dir__ = 1;
- this.__filtered__ = false;
- this.__iteratees__ = [];
- this.__takeCount__ = MAX_ARRAY_LENGTH;
- this.__views__ = [];
-}
-
-// Ensure `LazyWrapper` is an instance of `baseLodash`.
-LazyWrapper.prototype = baseCreate(baseLodash.prototype);
-LazyWrapper.prototype.constructor = LazyWrapper;
-
-module.exports = LazyWrapper;
diff --git a/assets/node_modules/lodash/_ListCache.js b/assets/node_modules/lodash/_ListCache.js
deleted file mode 100644
index 26895c3..0000000
--- a/assets/node_modules/lodash/_ListCache.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var listCacheClear = require('./_listCacheClear'),
- listCacheDelete = require('./_listCacheDelete'),
- listCacheGet = require('./_listCacheGet'),
- listCacheHas = require('./_listCacheHas'),
- listCacheSet = require('./_listCacheSet');
-
-/**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function ListCache(entries) {
- var index = -1,
- length = entries == null ? 0 : entries.length;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-// Add methods to `ListCache`.
-ListCache.prototype.clear = listCacheClear;
-ListCache.prototype['delete'] = listCacheDelete;
-ListCache.prototype.get = listCacheGet;
-ListCache.prototype.has = listCacheHas;
-ListCache.prototype.set = listCacheSet;
-
-module.exports = ListCache;
diff --git a/assets/node_modules/lodash/_LodashWrapper.js b/assets/node_modules/lodash/_LodashWrapper.js
deleted file mode 100644
index c1e4d9d..0000000
--- a/assets/node_modules/lodash/_LodashWrapper.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var baseCreate = require('./_baseCreate'),
- baseLodash = require('./_baseLodash');
-
-/**
- * The base constructor for creating `lodash` wrapper objects.
- *
- * @private
- * @param {*} value The value to wrap.
- * @param {boolean} [chainAll] Enable explicit method chain sequences.
- */
-function LodashWrapper(value, chainAll) {
- this.__wrapped__ = value;
- this.__actions__ = [];
- this.__chain__ = !!chainAll;
- this.__index__ = 0;
- this.__values__ = undefined;
-}
-
-LodashWrapper.prototype = baseCreate(baseLodash.prototype);
-LodashWrapper.prototype.constructor = LodashWrapper;
-
-module.exports = LodashWrapper;
diff --git a/assets/node_modules/lodash/_Map.js b/assets/node_modules/lodash/_Map.js
deleted file mode 100644
index b73f29a..0000000
--- a/assets/node_modules/lodash/_Map.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var getNative = require('./_getNative'),
- root = require('./_root');
-
-/* Built-in method references that are verified to be native. */
-var Map = getNative(root, 'Map');
-
-module.exports = Map;
diff --git a/assets/node_modules/lodash/_MapCache.js b/assets/node_modules/lodash/_MapCache.js
deleted file mode 100644
index 4a4eea7..0000000
--- a/assets/node_modules/lodash/_MapCache.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mapCacheClear = require('./_mapCacheClear'),
- mapCacheDelete = require('./_mapCacheDelete'),
- mapCacheGet = require('./_mapCacheGet'),
- mapCacheHas = require('./_mapCacheHas'),
- mapCacheSet = require('./_mapCacheSet');
-
-/**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function MapCache(entries) {
- var index = -1,
- length = entries == null ? 0 : entries.length;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-// Add methods to `MapCache`.
-MapCache.prototype.clear = mapCacheClear;
-MapCache.prototype['delete'] = mapCacheDelete;
-MapCache.prototype.get = mapCacheGet;
-MapCache.prototype.has = mapCacheHas;
-MapCache.prototype.set = mapCacheSet;
-
-module.exports = MapCache;
diff --git a/assets/node_modules/lodash/_Promise.js b/assets/node_modules/lodash/_Promise.js
deleted file mode 100644
index 247b9e1..0000000
--- a/assets/node_modules/lodash/_Promise.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var getNative = require('./_getNative'),
- root = require('./_root');
-
-/* Built-in method references that are verified to be native. */
-var Promise = getNative(root, 'Promise');
-
-module.exports = Promise;
diff --git a/assets/node_modules/lodash/_Set.js b/assets/node_modules/lodash/_Set.js
deleted file mode 100644
index b3c8dcb..0000000
--- a/assets/node_modules/lodash/_Set.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var getNative = require('./_getNative'),
- root = require('./_root');
-
-/* Built-in method references that are verified to be native. */
-var Set = getNative(root, 'Set');
-
-module.exports = Set;
diff --git a/assets/node_modules/lodash/_SetCache.js b/assets/node_modules/lodash/_SetCache.js
deleted file mode 100644
index 6468b06..0000000
--- a/assets/node_modules/lodash/_SetCache.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var MapCache = require('./_MapCache'),
- setCacheAdd = require('./_setCacheAdd'),
- setCacheHas = require('./_setCacheHas');
-
-/**
- *
- * Creates an array cache object to store unique values.
- *
- * @private
- * @constructor
- * @param {Array} [values] The values to cache.
- */
-function SetCache(values) {
- var index = -1,
- length = values == null ? 0 : values.length;
-
- this.__data__ = new MapCache;
- while (++index < length) {
- this.add(values[index]);
- }
-}
-
-// Add methods to `SetCache`.
-SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
-SetCache.prototype.has = setCacheHas;
-
-module.exports = SetCache;
diff --git a/assets/node_modules/lodash/_Stack.js b/assets/node_modules/lodash/_Stack.js
deleted file mode 100644
index 80b2cf1..0000000
--- a/assets/node_modules/lodash/_Stack.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var ListCache = require('./_ListCache'),
- stackClear = require('./_stackClear'),
- stackDelete = require('./_stackDelete'),
- stackGet = require('./_stackGet'),
- stackHas = require('./_stackHas'),
- stackSet = require('./_stackSet');
-
-/**
- * Creates a stack cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function Stack(entries) {
- var data = this.__data__ = new ListCache(entries);
- this.size = data.size;
-}
-
-// Add methods to `Stack`.
-Stack.prototype.clear = stackClear;
-Stack.prototype['delete'] = stackDelete;
-Stack.prototype.get = stackGet;
-Stack.prototype.has = stackHas;
-Stack.prototype.set = stackSet;
-
-module.exports = Stack;
diff --git a/assets/node_modules/lodash/_Symbol.js b/assets/node_modules/lodash/_Symbol.js
deleted file mode 100644
index a013f7c..0000000
--- a/assets/node_modules/lodash/_Symbol.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var root = require('./_root');
-
-/** Built-in value references. */
-var Symbol = root.Symbol;
-
-module.exports = Symbol;
diff --git a/assets/node_modules/lodash/_Uint8Array.js b/assets/node_modules/lodash/_Uint8Array.js
deleted file mode 100644
index 2fb30e1..0000000
--- a/assets/node_modules/lodash/_Uint8Array.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var root = require('./_root');
-
-/** Built-in value references. */
-var Uint8Array = root.Uint8Array;
-
-module.exports = Uint8Array;
diff --git a/assets/node_modules/lodash/_WeakMap.js b/assets/node_modules/lodash/_WeakMap.js
deleted file mode 100644
index 567f86c..0000000
--- a/assets/node_modules/lodash/_WeakMap.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var getNative = require('./_getNative'),
- root = require('./_root');
-
-/* Built-in method references that are verified to be native. */
-var WeakMap = getNative(root, 'WeakMap');
-
-module.exports = WeakMap;
diff --git a/assets/node_modules/lodash/_apply.js b/assets/node_modules/lodash/_apply.js
deleted file mode 100644
index 36436dd..0000000
--- a/assets/node_modules/lodash/_apply.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * A faster alternative to `Function#apply`, this function invokes `func`
- * with the `this` binding of `thisArg` and the arguments of `args`.
- *
- * @private
- * @param {Function} func The function to invoke.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {Array} args The arguments to invoke `func` with.
- * @returns {*} Returns the result of `func`.
- */
-function apply(func, thisArg, args) {
- switch (args.length) {
- case 0: return func.call(thisArg);
- case 1: return func.call(thisArg, args[0]);
- case 2: return func.call(thisArg, args[0], args[1]);
- case 3: return func.call(thisArg, args[0], args[1], args[2]);
- }
- return func.apply(thisArg, args);
-}
-
-module.exports = apply;
diff --git a/assets/node_modules/lodash/_arrayAggregator.js b/assets/node_modules/lodash/_arrayAggregator.js
deleted file mode 100644
index d96c3ca..0000000
--- a/assets/node_modules/lodash/_arrayAggregator.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * A specialized version of `baseAggregator` for arrays.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} setter The function to set `accumulator` values.
- * @param {Function} iteratee The iteratee to transform keys.
- * @param {Object} accumulator The initial aggregated object.
- * @returns {Function} Returns `accumulator`.
- */
-function arrayAggregator(array, setter, iteratee, accumulator) {
- var index = -1,
- length = array == null ? 0 : array.length;
-
- while (++index < length) {
- var value = array[index];
- setter(accumulator, value, iteratee(value), array);
- }
- return accumulator;
-}
-
-module.exports = arrayAggregator;
diff --git a/assets/node_modules/lodash/_arrayEach.js b/assets/node_modules/lodash/_arrayEach.js
deleted file mode 100644
index 2c5f579..0000000
--- a/assets/node_modules/lodash/_arrayEach.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * A specialized version of `_.forEach` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns `array`.
- */
-function arrayEach(array, iteratee) {
- var index = -1,
- length = array == null ? 0 : array.length;
-
- while (++index < length) {
- if (iteratee(array[index], index, array) === false) {
- break;
- }
- }
- return array;
-}
-
-module.exports = arrayEach;
diff --git a/assets/node_modules/lodash/_arrayEachRight.js b/assets/node_modules/lodash/_arrayEachRight.js
deleted file mode 100644
index 976ca5c..0000000
--- a/assets/node_modules/lodash/_arrayEachRight.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * A specialized version of `_.forEachRight` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns `array`.
- */
-function arrayEachRight(array, iteratee) {
- var length = array == null ? 0 : array.length;
-
- while (length--) {
- if (iteratee(array[length], length, array) === false) {
- break;
- }
- }
- return array;
-}
-
-module.exports = arrayEachRight;
diff --git a/assets/node_modules/lodash/_arrayEvery.js b/assets/node_modules/lodash/_arrayEvery.js
deleted file mode 100644
index e26a918..0000000
--- a/assets/node_modules/lodash/_arrayEvery.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * A specialized version of `_.every` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if all elements pass the predicate check,
- * else `false`.
- */
-function arrayEvery(array, predicate) {
- var index = -1,
- length = array == null ? 0 : array.length;
-
- while (++index < length) {
- if (!predicate(array[index], index, array)) {
- return false;
- }
- }
- return true;
-}
-
-module.exports = arrayEvery;
diff --git a/assets/node_modules/lodash/_arrayFilter.js b/assets/node_modules/lodash/_arrayFilter.js
deleted file mode 100644
index 75ea254..0000000
--- a/assets/node_modules/lodash/_arrayFilter.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * A specialized version of `_.filter` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- */
-function arrayFilter(array, predicate) {
- var index = -1,
- length = array == null ? 0 : array.length,
- resIndex = 0,
- result = [];
-
- while (++index < length) {
- var value = array[index];
- if (predicate(value, index, array)) {
- result[resIndex++] = value;
- }
- }
- return result;
-}
-
-module.exports = arrayFilter;
diff --git a/assets/node_modules/lodash/_arrayIncludes.js b/assets/node_modules/lodash/_arrayIncludes.js
deleted file mode 100644
index 3737a6d..0000000
--- a/assets/node_modules/lodash/_arrayIncludes.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var baseIndexOf = require('./_baseIndexOf');
-
-/**
- * A specialized version of `_.includes` for arrays without support for
- * specifying an index to search from.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludes(array, value) {
- var length = array == null ? 0 : array.length;
- return !!length && baseIndexOf(array, value, 0) > -1;
-}
-
-module.exports = arrayIncludes;
diff --git a/assets/node_modules/lodash/_arrayIncludesWith.js b/assets/node_modules/lodash/_arrayIncludesWith.js
deleted file mode 100644
index 235fd97..0000000
--- a/assets/node_modules/lodash/_arrayIncludesWith.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * This function is like `arrayIncludes` except that it accepts a comparator.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @param {Function} comparator The comparator invoked per element.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludesWith(array, value, comparator) {
- var index = -1,
- length = array == null ? 0 : array.length;
-
- while (++index < length) {
- if (comparator(value, array[index])) {
- return true;
- }
- }
- return false;
-}
-
-module.exports = arrayIncludesWith;
diff --git a/assets/node_modules/lodash/_arrayLikeKeys.js b/assets/node_modules/lodash/_arrayLikeKeys.js
deleted file mode 100644
index b2ec9ce..0000000
--- a/assets/node_modules/lodash/_arrayLikeKeys.js
+++ /dev/null
@@ -1,49 +0,0 @@
-var baseTimes = require('./_baseTimes'),
- isArguments = require('./isArguments'),
- isArray = require('./isArray'),
- isBuffer = require('./isBuffer'),
- isIndex = require('./_isIndex'),
- isTypedArray = require('./isTypedArray');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Creates an array of the enumerable property names of the array-like `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @param {boolean} inherited Specify returning inherited property names.
- * @returns {Array} Returns the array of property names.
- */
-function arrayLikeKeys(value, inherited) {
- var isArr = isArray(value),
- isArg = !isArr && isArguments(value),
- isBuff = !isArr && !isArg && isBuffer(value),
- isType = !isArr && !isArg && !isBuff && isTypedArray(value),
- skipIndexes = isArr || isArg || isBuff || isType,
- result = skipIndexes ? baseTimes(value.length, String) : [],
- length = result.length;
-
- for (var key in value) {
- if ((inherited || hasOwnProperty.call(value, key)) &&
- !(skipIndexes && (
- // Safari 9 has enumerable `arguments.length` in strict mode.
- key == 'length' ||
- // Node.js 0.10 has enumerable non-index properties on buffers.
- (isBuff && (key == 'offset' || key == 'parent')) ||
- // PhantomJS 2 has enumerable non-index properties on typed arrays.
- (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
- // Skip index properties.
- isIndex(key, length)
- ))) {
- result.push(key);
- }
- }
- return result;
-}
-
-module.exports = arrayLikeKeys;
diff --git a/assets/node_modules/lodash/_arrayMap.js b/assets/node_modules/lodash/_arrayMap.js
deleted file mode 100644
index 22b2246..0000000
--- a/assets/node_modules/lodash/_arrayMap.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * A specialized version of `_.map` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- */
-function arrayMap(array, iteratee) {
- var index = -1,
- length = array == null ? 0 : array.length,
- result = Array(length);
-
- while (++index < length) {
- result[index] = iteratee(array[index], index, array);
- }
- return result;
-}
-
-module.exports = arrayMap;
diff --git a/assets/node_modules/lodash/_arrayPush.js b/assets/node_modules/lodash/_arrayPush.js
deleted file mode 100644
index 7d742b3..0000000
--- a/assets/node_modules/lodash/_arrayPush.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * Appends the elements of `values` to `array`.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {Array} values The values to append.
- * @returns {Array} Returns `array`.
- */
-function arrayPush(array, values) {
- var index = -1,
- length = values.length,
- offset = array.length;
-
- while (++index < length) {
- array[offset + index] = values[index];
- }
- return array;
-}
-
-module.exports = arrayPush;
diff --git a/assets/node_modules/lodash/_arrayReduce.js b/assets/node_modules/lodash/_arrayReduce.js
deleted file mode 100644
index de8b79b..0000000
--- a/assets/node_modules/lodash/_arrayReduce.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * A specialized version of `_.reduce` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @param {boolean} [initAccum] Specify using the first element of `array` as
- * the initial value.
- * @returns {*} Returns the accumulated value.
- */
-function arrayReduce(array, iteratee, accumulator, initAccum) {
- var index = -1,
- length = array == null ? 0 : array.length;
-
- if (initAccum && length) {
- accumulator = array[++index];
- }
- while (++index < length) {
- accumulator = iteratee(accumulator, array[index], index, array);
- }
- return accumulator;
-}
-
-module.exports = arrayReduce;
diff --git a/assets/node_modules/lodash/_arrayReduceRight.js b/assets/node_modules/lodash/_arrayReduceRight.js
deleted file mode 100644
index 22d8976..0000000
--- a/assets/node_modules/lodash/_arrayReduceRight.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * A specialized version of `_.reduceRight` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @param {boolean} [initAccum] Specify using the last element of `array` as
- * the initial value.
- * @returns {*} Returns the accumulated value.
- */
-function arrayReduceRight(array, iteratee, accumulator, initAccum) {
- var length = array == null ? 0 : array.length;
- if (initAccum && length) {
- accumulator = array[--length];
- }
- while (length--) {
- accumulator = iteratee(accumulator, array[length], length, array);
- }
- return accumulator;
-}
-
-module.exports = arrayReduceRight;
diff --git a/assets/node_modules/lodash/_arraySample.js b/assets/node_modules/lodash/_arraySample.js
deleted file mode 100644
index fcab010..0000000
--- a/assets/node_modules/lodash/_arraySample.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var baseRandom = require('./_baseRandom');
-
-/**
- * A specialized version of `_.sample` for arrays.
- *
- * @private
- * @param {Array} array The array to sample.
- * @returns {*} Returns the random element.
- */
-function arraySample(array) {
- var length = array.length;
- return length ? array[baseRandom(0, length - 1)] : undefined;
-}
-
-module.exports = arraySample;
diff --git a/assets/node_modules/lodash/_arraySampleSize.js b/assets/node_modules/lodash/_arraySampleSize.js
deleted file mode 100644
index 8c7e364..0000000
--- a/assets/node_modules/lodash/_arraySampleSize.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var baseClamp = require('./_baseClamp'),
- copyArray = require('./_copyArray'),
- shuffleSelf = require('./_shuffleSelf');
-
-/**
- * A specialized version of `_.sampleSize` for arrays.
- *
- * @private
- * @param {Array} array The array to sample.
- * @param {number} n The number of elements to sample.
- * @returns {Array} Returns the random elements.
- */
-function arraySampleSize(array, n) {
- return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
-}
-
-module.exports = arraySampleSize;
diff --git a/assets/node_modules/lodash/_arrayShuffle.js b/assets/node_modules/lodash/_arrayShuffle.js
deleted file mode 100644
index 46313a3..0000000
--- a/assets/node_modules/lodash/_arrayShuffle.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var copyArray = require('./_copyArray'),
- shuffleSelf = require('./_shuffleSelf');
-
-/**
- * A specialized version of `_.shuffle` for arrays.
- *
- * @private
- * @param {Array} array The array to shuffle.
- * @returns {Array} Returns the new shuffled array.
- */
-function arrayShuffle(array) {
- return shuffleSelf(copyArray(array));
-}
-
-module.exports = arrayShuffle;
diff --git a/assets/node_modules/lodash/_arraySome.js b/assets/node_modules/lodash/_arraySome.js
deleted file mode 100644
index 6fd02fd..0000000
--- a/assets/node_modules/lodash/_arraySome.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * A specialized version of `_.some` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- * else `false`.
- */
-function arraySome(array, predicate) {
- var index = -1,
- length = array == null ? 0 : array.length;
-
- while (++index < length) {
- if (predicate(array[index], index, array)) {
- return true;
- }
- }
- return false;
-}
-
-module.exports = arraySome;
diff --git a/assets/node_modules/lodash/_asciiSize.js b/assets/node_modules/lodash/_asciiSize.js
deleted file mode 100644
index 11d29c3..0000000
--- a/assets/node_modules/lodash/_asciiSize.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var baseProperty = require('./_baseProperty');
-
-/**
- * Gets the size of an ASCII `string`.
- *
- * @private
- * @param {string} string The string inspect.
- * @returns {number} Returns the string size.
- */
-var asciiSize = baseProperty('length');
-
-module.exports = asciiSize;
diff --git a/assets/node_modules/lodash/_asciiToArray.js b/assets/node_modules/lodash/_asciiToArray.js
deleted file mode 100644
index 8e3dd5b..0000000
--- a/assets/node_modules/lodash/_asciiToArray.js
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * Converts an ASCII `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
- */
-function asciiToArray(string) {
- return string.split('');
-}
-
-module.exports = asciiToArray;
diff --git a/assets/node_modules/lodash/_asciiWords.js b/assets/node_modules/lodash/_asciiWords.js
deleted file mode 100644
index d765f0f..0000000
--- a/assets/node_modules/lodash/_asciiWords.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/** Used to match words composed of alphanumeric characters. */
-var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
-
-/**
- * Splits an ASCII `string` into an array of its words.
- *
- * @private
- * @param {string} The string to inspect.
- * @returns {Array} Returns the words of `string`.
- */
-function asciiWords(string) {
- return string.match(reAsciiWord) || [];
-}
-
-module.exports = asciiWords;
diff --git a/assets/node_modules/lodash/_assignMergeValue.js b/assets/node_modules/lodash/_assignMergeValue.js
deleted file mode 100644
index cb1185e..0000000
--- a/assets/node_modules/lodash/_assignMergeValue.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var baseAssignValue = require('./_baseAssignValue'),
- eq = require('./eq');
-
-/**
- * This function is like `assignValue` except that it doesn't assign
- * `undefined` values.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */
-function assignMergeValue(object, key, value) {
- if ((value !== undefined && !eq(object[key], value)) ||
- (value === undefined && !(key in object))) {
- baseAssignValue(object, key, value);
- }
-}
-
-module.exports = assignMergeValue;
diff --git a/assets/node_modules/lodash/_assignValue.js b/assets/node_modules/lodash/_assignValue.js
deleted file mode 100644
index 4083957..0000000
--- a/assets/node_modules/lodash/_assignValue.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var baseAssignValue = require('./_baseAssignValue'),
- eq = require('./eq');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Assigns `value` to `key` of `object` if the existing value is not equivalent
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */
-function assignValue(object, key, value) {
- var objValue = object[key];
- if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
- (value === undefined && !(key in object))) {
- baseAssignValue(object, key, value);
- }
-}
-
-module.exports = assignValue;
diff --git a/assets/node_modules/lodash/_assocIndexOf.js b/assets/node_modules/lodash/_assocIndexOf.js
deleted file mode 100644
index 5b77a2b..0000000
--- a/assets/node_modules/lodash/_assocIndexOf.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var eq = require('./eq');
-
-/**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function assocIndexOf(array, key) {
- var length = array.length;
- while (length--) {
- if (eq(array[length][0], key)) {
- return length;
- }
- }
- return -1;
-}
-
-module.exports = assocIndexOf;
diff --git a/assets/node_modules/lodash/_baseAggregator.js b/assets/node_modules/lodash/_baseAggregator.js
deleted file mode 100644
index 4bc9e91..0000000
--- a/assets/node_modules/lodash/_baseAggregator.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var baseEach = require('./_baseEach');
-
-/**
- * Aggregates elements of `collection` on `accumulator` with keys transformed
- * by `iteratee` and values set by `setter`.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} setter The function to set `accumulator` values.
- * @param {Function} iteratee The iteratee to transform keys.
- * @param {Object} accumulator The initial aggregated object.
- * @returns {Function} Returns `accumulator`.
- */
-function baseAggregator(collection, setter, iteratee, accumulator) {
- baseEach(collection, function(value, key, collection) {
- setter(accumulator, value, iteratee(value), collection);
- });
- return accumulator;
-}
-
-module.exports = baseAggregator;
diff --git a/assets/node_modules/lodash/_baseAssign.js b/assets/node_modules/lodash/_baseAssign.js
deleted file mode 100644
index e5c4a1a..0000000
--- a/assets/node_modules/lodash/_baseAssign.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var copyObject = require('./_copyObject'),
- keys = require('./keys');
-
-/**
- * The base implementation of `_.assign` without support for multiple sources
- * or `customizer` functions.
- *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @returns {Object} Returns `object`.
- */
-function baseAssign(object, source) {
- return object && copyObject(source, keys(source), object);
-}
-
-module.exports = baseAssign;
diff --git a/assets/node_modules/lodash/_baseAssignIn.js b/assets/node_modules/lodash/_baseAssignIn.js
deleted file mode 100644
index 6624f90..0000000
--- a/assets/node_modules/lodash/_baseAssignIn.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var copyObject = require('./_copyObject'),
- keysIn = require('./keysIn');
-
-/**
- * The base implementation of `_.assignIn` without support for multiple sources
- * or `customizer` functions.
- *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @returns {Object} Returns `object`.
- */
-function baseAssignIn(object, source) {
- return object && copyObject(source, keysIn(source), object);
-}
-
-module.exports = baseAssignIn;
diff --git a/assets/node_modules/lodash/_baseAssignValue.js b/assets/node_modules/lodash/_baseAssignValue.js
deleted file mode 100644
index d6f66ef..0000000
--- a/assets/node_modules/lodash/_baseAssignValue.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var defineProperty = require('./_defineProperty');
-
-/**
- * The base implementation of `assignValue` and `assignMergeValue` without
- * value checks.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */
-function baseAssignValue(object, key, value) {
- if (key == '__proto__' && defineProperty) {
- defineProperty(object, key, {
- 'configurable': true,
- 'enumerable': true,
- 'value': value,
- 'writable': true
- });
- } else {
- object[key] = value;
- }
-}
-
-module.exports = baseAssignValue;
diff --git a/assets/node_modules/lodash/_baseAt.js b/assets/node_modules/lodash/_baseAt.js
deleted file mode 100644
index 90e4237..0000000
--- a/assets/node_modules/lodash/_baseAt.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var get = require('./get');
-
-/**
- * The base implementation of `_.at` without support for individual paths.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {string[]} paths The property paths to pick.
- * @returns {Array} Returns the picked elements.
- */
-function baseAt(object, paths) {
- var index = -1,
- length = paths.length,
- result = Array(length),
- skip = object == null;
-
- while (++index < length) {
- result[index] = skip ? undefined : get(object, paths[index]);
- }
- return result;
-}
-
-module.exports = baseAt;
diff --git a/assets/node_modules/lodash/_baseClamp.js b/assets/node_modules/lodash/_baseClamp.js
deleted file mode 100644
index a1c5692..0000000
--- a/assets/node_modules/lodash/_baseClamp.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * The base implementation of `_.clamp` which doesn't coerce arguments.
- *
- * @private
- * @param {number} number The number to clamp.
- * @param {number} [lower] The lower bound.
- * @param {number} upper The upper bound.
- * @returns {number} Returns the clamped number.
- */
-function baseClamp(number, lower, upper) {
- if (number === number) {
- if (upper !== undefined) {
- number = number <= upper ? number : upper;
- }
- if (lower !== undefined) {
- number = number >= lower ? number : lower;
- }
- }
- return number;
-}
-
-module.exports = baseClamp;
diff --git a/assets/node_modules/lodash/_baseClone.js b/assets/node_modules/lodash/_baseClone.js
deleted file mode 100644
index 290de92..0000000
--- a/assets/node_modules/lodash/_baseClone.js
+++ /dev/null
@@ -1,165 +0,0 @@
-var Stack = require('./_Stack'),
- arrayEach = require('./_arrayEach'),
- assignValue = require('./_assignValue'),
- baseAssign = require('./_baseAssign'),
- baseAssignIn = require('./_baseAssignIn'),
- cloneBuffer = require('./_cloneBuffer'),
- copyArray = require('./_copyArray'),
- copySymbols = require('./_copySymbols'),
- copySymbolsIn = require('./_copySymbolsIn'),
- getAllKeys = require('./_getAllKeys'),
- getAllKeysIn = require('./_getAllKeysIn'),
- getTag = require('./_getTag'),
- initCloneArray = require('./_initCloneArray'),
- initCloneByTag = require('./_initCloneByTag'),
- initCloneObject = require('./_initCloneObject'),
- isArray = require('./isArray'),
- isBuffer = require('./isBuffer'),
- isMap = require('./isMap'),
- isObject = require('./isObject'),
- isSet = require('./isSet'),
- keys = require('./keys');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1,
- CLONE_FLAT_FLAG = 2,
- CLONE_SYMBOLS_FLAG = 4;
-
-/** `Object#toString` result references. */
-var argsTag = '[object Arguments]',
- arrayTag = '[object Array]',
- boolTag = '[object Boolean]',
- dateTag = '[object Date]',
- errorTag = '[object Error]',
- funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]',
- mapTag = '[object Map]',
- numberTag = '[object Number]',
- objectTag = '[object Object]',
- regexpTag = '[object RegExp]',
- setTag = '[object Set]',
- stringTag = '[object String]',
- symbolTag = '[object Symbol]',
- weakMapTag = '[object WeakMap]';
-
-var arrayBufferTag = '[object ArrayBuffer]',
- dataViewTag = '[object DataView]',
- float32Tag = '[object Float32Array]',
- float64Tag = '[object Float64Array]',
- int8Tag = '[object Int8Array]',
- int16Tag = '[object Int16Array]',
- int32Tag = '[object Int32Array]',
- uint8Tag = '[object Uint8Array]',
- uint8ClampedTag = '[object Uint8ClampedArray]',
- uint16Tag = '[object Uint16Array]',
- uint32Tag = '[object Uint32Array]';
-
-/** Used to identify `toStringTag` values supported by `_.clone`. */
-var cloneableTags = {};
-cloneableTags[argsTag] = cloneableTags[arrayTag] =
-cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
-cloneableTags[boolTag] = cloneableTags[dateTag] =
-cloneableTags[float32Tag] = cloneableTags[float64Tag] =
-cloneableTags[int8Tag] = cloneableTags[int16Tag] =
-cloneableTags[int32Tag] = cloneableTags[mapTag] =
-cloneableTags[numberTag] = cloneableTags[objectTag] =
-cloneableTags[regexpTag] = cloneableTags[setTag] =
-cloneableTags[stringTag] = cloneableTags[symbolTag] =
-cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
-cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
-cloneableTags[errorTag] = cloneableTags[funcTag] =
-cloneableTags[weakMapTag] = false;
-
-/**
- * The base implementation of `_.clone` and `_.cloneDeep` which tracks
- * traversed objects.
- *
- * @private
- * @param {*} value The value to clone.
- * @param {boolean} bitmask The bitmask flags.
- * 1 - Deep clone
- * 2 - Flatten inherited properties
- * 4 - Clone symbols
- * @param {Function} [customizer] The function to customize cloning.
- * @param {string} [key] The key of `value`.
- * @param {Object} [object] The parent object of `value`.
- * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
- * @returns {*} Returns the cloned value.
- */
-function baseClone(value, bitmask, customizer, key, object, stack) {
- var result,
- isDeep = bitmask & CLONE_DEEP_FLAG,
- isFlat = bitmask & CLONE_FLAT_FLAG,
- isFull = bitmask & CLONE_SYMBOLS_FLAG;
-
- if (customizer) {
- result = object ? customizer(value, key, object, stack) : customizer(value);
- }
- if (result !== undefined) {
- return result;
- }
- if (!isObject(value)) {
- return value;
- }
- var isArr = isArray(value);
- if (isArr) {
- result = initCloneArray(value);
- if (!isDeep) {
- return copyArray(value, result);
- }
- } else {
- var tag = getTag(value),
- isFunc = tag == funcTag || tag == genTag;
-
- if (isBuffer(value)) {
- return cloneBuffer(value, isDeep);
- }
- if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
- result = (isFlat || isFunc) ? {} : initCloneObject(value);
- if (!isDeep) {
- return isFlat
- ? copySymbolsIn(value, baseAssignIn(result, value))
- : copySymbols(value, baseAssign(result, value));
- }
- } else {
- if (!cloneableTags[tag]) {
- return object ? value : {};
- }
- result = initCloneByTag(value, tag, isDeep);
- }
- }
- // Check for circular references and return its corresponding clone.
- stack || (stack = new Stack);
- var stacked = stack.get(value);
- if (stacked) {
- return stacked;
- }
- stack.set(value, result);
-
- if (isSet(value)) {
- value.forEach(function(subValue) {
- result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
- });
- } else if (isMap(value)) {
- value.forEach(function(subValue, key) {
- result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
- });
- }
-
- var keysFunc = isFull
- ? (isFlat ? getAllKeysIn : getAllKeys)
- : (isFlat ? keysIn : keys);
-
- var props = isArr ? undefined : keysFunc(value);
- arrayEach(props || value, function(subValue, key) {
- if (props) {
- key = subValue;
- subValue = value[key];
- }
- // Recursively populate clone (susceptible to call stack limits).
- assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
- });
- return result;
-}
-
-module.exports = baseClone;
diff --git a/assets/node_modules/lodash/_baseConforms.js b/assets/node_modules/lodash/_baseConforms.js
deleted file mode 100644
index 947e20d..0000000
--- a/assets/node_modules/lodash/_baseConforms.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var baseConformsTo = require('./_baseConformsTo'),
- keys = require('./keys');
-
-/**
- * The base implementation of `_.conforms` which doesn't clone `source`.
- *
- * @private
- * @param {Object} source The object of property predicates to conform to.
- * @returns {Function} Returns the new spec function.
- */
-function baseConforms(source) {
- var props = keys(source);
- return function(object) {
- return baseConformsTo(object, source, props);
- };
-}
-
-module.exports = baseConforms;
diff --git a/assets/node_modules/lodash/_baseConformsTo.js b/assets/node_modules/lodash/_baseConformsTo.js
deleted file mode 100644
index e449cb8..0000000
--- a/assets/node_modules/lodash/_baseConformsTo.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * The base implementation of `_.conformsTo` which accepts `props` to check.
- *
- * @private
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property predicates to conform to.
- * @returns {boolean} Returns `true` if `object` conforms, else `false`.
- */
-function baseConformsTo(object, source, props) {
- var length = props.length;
- if (object == null) {
- return !length;
- }
- object = Object(object);
- while (length--) {
- var key = props[length],
- predicate = source[key],
- value = object[key];
-
- if ((value === undefined && !(key in object)) || !predicate(value)) {
- return false;
- }
- }
- return true;
-}
-
-module.exports = baseConformsTo;
diff --git a/assets/node_modules/lodash/_baseCreate.js b/assets/node_modules/lodash/_baseCreate.js
deleted file mode 100644
index ffa6a52..0000000
--- a/assets/node_modules/lodash/_baseCreate.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var isObject = require('./isObject');
-
-/** Built-in value references. */
-var objectCreate = Object.create;
-
-/**
- * The base implementation of `_.create` without support for assigning
- * properties to the created object.
- *
- * @private
- * @param {Object} proto The object to inherit from.
- * @returns {Object} Returns the new object.
- */
-var baseCreate = (function() {
- function object() {}
- return function(proto) {
- if (!isObject(proto)) {
- return {};
- }
- if (objectCreate) {
- return objectCreate(proto);
- }
- object.prototype = proto;
- var result = new object;
- object.prototype = undefined;
- return result;
- };
-}());
-
-module.exports = baseCreate;
diff --git a/assets/node_modules/lodash/_baseDelay.js b/assets/node_modules/lodash/_baseDelay.js
deleted file mode 100644
index 1486d69..0000000
--- a/assets/node_modules/lodash/_baseDelay.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * The base implementation of `_.delay` and `_.defer` which accepts `args`
- * to provide to `func`.
- *
- * @private
- * @param {Function} func The function to delay.
- * @param {number} wait The number of milliseconds to delay invocation.
- * @param {Array} args The arguments to provide to `func`.
- * @returns {number|Object} Returns the timer id or timeout object.
- */
-function baseDelay(func, wait, args) {
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- return setTimeout(function() { func.apply(undefined, args); }, wait);
-}
-
-module.exports = baseDelay;
diff --git a/assets/node_modules/lodash/_baseDifference.js b/assets/node_modules/lodash/_baseDifference.js
deleted file mode 100644
index 343ac19..0000000
--- a/assets/node_modules/lodash/_baseDifference.js
+++ /dev/null
@@ -1,67 +0,0 @@
-var SetCache = require('./_SetCache'),
- arrayIncludes = require('./_arrayIncludes'),
- arrayIncludesWith = require('./_arrayIncludesWith'),
- arrayMap = require('./_arrayMap'),
- baseUnary = require('./_baseUnary'),
- cacheHas = require('./_cacheHas');
-
-/** Used as the size to enable large array optimizations. */
-var LARGE_ARRAY_SIZE = 200;
-
-/**
- * The base implementation of methods like `_.difference` without support
- * for excluding multiple arrays or iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Array} values The values to exclude.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- */
-function baseDifference(array, values, iteratee, comparator) {
- var index = -1,
- includes = arrayIncludes,
- isCommon = true,
- length = array.length,
- result = [],
- valuesLength = values.length;
-
- if (!length) {
- return result;
- }
- if (iteratee) {
- values = arrayMap(values, baseUnary(iteratee));
- }
- if (comparator) {
- includes = arrayIncludesWith;
- isCommon = false;
- }
- else if (values.length >= LARGE_ARRAY_SIZE) {
- includes = cacheHas;
- isCommon = false;
- values = new SetCache(values);
- }
- outer:
- while (++index < length) {
- var value = array[index],
- computed = iteratee == null ? value : iteratee(value);
-
- value = (comparator || value !== 0) ? value : 0;
- if (isCommon && computed === computed) {
- var valuesIndex = valuesLength;
- while (valuesIndex--) {
- if (values[valuesIndex] === computed) {
- continue outer;
- }
- }
- result.push(value);
- }
- else if (!includes(values, computed, comparator)) {
- result.push(value);
- }
- }
- return result;
-}
-
-module.exports = baseDifference;
diff --git a/assets/node_modules/lodash/_baseEach.js b/assets/node_modules/lodash/_baseEach.js
deleted file mode 100644
index 512c067..0000000
--- a/assets/node_modules/lodash/_baseEach.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var baseForOwn = require('./_baseForOwn'),
- createBaseEach = require('./_createBaseEach');
-
-/**
- * The base implementation of `_.forEach` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- */
-var baseEach = createBaseEach(baseForOwn);
-
-module.exports = baseEach;
diff --git a/assets/node_modules/lodash/_baseEachRight.js b/assets/node_modules/lodash/_baseEachRight.js
deleted file mode 100644
index 0a8feec..0000000
--- a/assets/node_modules/lodash/_baseEachRight.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var baseForOwnRight = require('./_baseForOwnRight'),
- createBaseEach = require('./_createBaseEach');
-
-/**
- * The base implementation of `_.forEachRight` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- */
-var baseEachRight = createBaseEach(baseForOwnRight, true);
-
-module.exports = baseEachRight;
diff --git a/assets/node_modules/lodash/_baseEvery.js b/assets/node_modules/lodash/_baseEvery.js
deleted file mode 100644
index fa52f7b..0000000
--- a/assets/node_modules/lodash/_baseEvery.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var baseEach = require('./_baseEach');
-
-/**
- * The base implementation of `_.every` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if all elements pass the predicate check,
- * else `false`
- */
-function baseEvery(collection, predicate) {
- var result = true;
- baseEach(collection, function(value, index, collection) {
- result = !!predicate(value, index, collection);
- return result;
- });
- return result;
-}
-
-module.exports = baseEvery;
diff --git a/assets/node_modules/lodash/_baseExtremum.js b/assets/node_modules/lodash/_baseExtremum.js
deleted file mode 100644
index 9d6aa77..0000000
--- a/assets/node_modules/lodash/_baseExtremum.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var isSymbol = require('./isSymbol');
-
-/**
- * The base implementation of methods like `_.max` and `_.min` which accepts a
- * `comparator` to determine the extremum value.
- *
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} iteratee The iteratee invoked per iteration.
- * @param {Function} comparator The comparator used to compare values.
- * @returns {*} Returns the extremum value.
- */
-function baseExtremum(array, iteratee, comparator) {
- var index = -1,
- length = array.length;
-
- while (++index < length) {
- var value = array[index],
- current = iteratee(value);
-
- if (current != null && (computed === undefined
- ? (current === current && !isSymbol(current))
- : comparator(current, computed)
- )) {
- var computed = current,
- result = value;
- }
- }
- return result;
-}
-
-module.exports = baseExtremum;
diff --git a/assets/node_modules/lodash/_baseFill.js b/assets/node_modules/lodash/_baseFill.js
deleted file mode 100644
index 46ef9c7..0000000
--- a/assets/node_modules/lodash/_baseFill.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var toInteger = require('./toInteger'),
- toLength = require('./toLength');
-
-/**
- * The base implementation of `_.fill` without an iteratee call guard.
- *
- * @private
- * @param {Array} array The array to fill.
- * @param {*} value The value to fill `array` with.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns `array`.
- */
-function baseFill(array, value, start, end) {
- var length = array.length;
-
- start = toInteger(start);
- if (start < 0) {
- start = -start > length ? 0 : (length + start);
- }
- end = (end === undefined || end > length) ? length : toInteger(end);
- if (end < 0) {
- end += length;
- }
- end = start > end ? 0 : toLength(end);
- while (start < end) {
- array[start++] = value;
- }
- return array;
-}
-
-module.exports = baseFill;
diff --git a/assets/node_modules/lodash/_baseFilter.js b/assets/node_modules/lodash/_baseFilter.js
deleted file mode 100644
index 4678477..0000000
--- a/assets/node_modules/lodash/_baseFilter.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var baseEach = require('./_baseEach');
-
-/**
- * The base implementation of `_.filter` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- */
-function baseFilter(collection, predicate) {
- var result = [];
- baseEach(collection, function(value, index, collection) {
- if (predicate(value, index, collection)) {
- result.push(value);
- }
- });
- return result;
-}
-
-module.exports = baseFilter;
diff --git a/assets/node_modules/lodash/_baseFindIndex.js b/assets/node_modules/lodash/_baseFindIndex.js
deleted file mode 100644
index e3f5d8a..0000000
--- a/assets/node_modules/lodash/_baseFindIndex.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * The base implementation of `_.findIndex` and `_.findLastIndex` without
- * support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {number} fromIndex The index to search from.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseFindIndex(array, predicate, fromIndex, fromRight) {
- var length = array.length,
- index = fromIndex + (fromRight ? 1 : -1);
-
- while ((fromRight ? index-- : ++index < length)) {
- if (predicate(array[index], index, array)) {
- return index;
- }
- }
- return -1;
-}
-
-module.exports = baseFindIndex;
diff --git a/assets/node_modules/lodash/_baseFindKey.js b/assets/node_modules/lodash/_baseFindKey.js
deleted file mode 100644
index 2e430f3..0000000
--- a/assets/node_modules/lodash/_baseFindKey.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * The base implementation of methods like `_.findKey` and `_.findLastKey`,
- * without support for iteratee shorthands, which iterates over `collection`
- * using `eachFunc`.
- *
- * @private
- * @param {Array|Object} collection The collection to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {Function} eachFunc The function to iterate over `collection`.
- * @returns {*} Returns the found element or its key, else `undefined`.
- */
-function baseFindKey(collection, predicate, eachFunc) {
- var result;
- eachFunc(collection, function(value, key, collection) {
- if (predicate(value, key, collection)) {
- result = key;
- return false;
- }
- });
- return result;
-}
-
-module.exports = baseFindKey;
diff --git a/assets/node_modules/lodash/_baseFlatten.js b/assets/node_modules/lodash/_baseFlatten.js
deleted file mode 100644
index 4b1e009..0000000
--- a/assets/node_modules/lodash/_baseFlatten.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var arrayPush = require('./_arrayPush'),
- isFlattenable = require('./_isFlattenable');
-
-/**
- * The base implementation of `_.flatten` with support for restricting flattening.
- *
- * @private
- * @param {Array} array The array to flatten.
- * @param {number} depth The maximum recursion depth.
- * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
- * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
- * @param {Array} [result=[]] The initial result value.
- * @returns {Array} Returns the new flattened array.
- */
-function baseFlatten(array, depth, predicate, isStrict, result) {
- var index = -1,
- length = array.length;
-
- predicate || (predicate = isFlattenable);
- result || (result = []);
-
- while (++index < length) {
- var value = array[index];
- if (depth > 0 && predicate(value)) {
- if (depth > 1) {
- // Recursively flatten arrays (susceptible to call stack limits).
- baseFlatten(value, depth - 1, predicate, isStrict, result);
- } else {
- arrayPush(result, value);
- }
- } else if (!isStrict) {
- result[result.length] = value;
- }
- }
- return result;
-}
-
-module.exports = baseFlatten;
diff --git a/assets/node_modules/lodash/_baseFor.js b/assets/node_modules/lodash/_baseFor.js
deleted file mode 100644
index d946590..0000000
--- a/assets/node_modules/lodash/_baseFor.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var createBaseFor = require('./_createBaseFor');
-
-/**
- * The base implementation of `baseForOwn` which iterates over `object`
- * properties returned by `keysFunc` and invokes `iteratee` for each property.
- * Iteratee functions may exit iteration early by explicitly returning `false`.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @returns {Object} Returns `object`.
- */
-var baseFor = createBaseFor();
-
-module.exports = baseFor;
diff --git a/assets/node_modules/lodash/_baseForOwn.js b/assets/node_modules/lodash/_baseForOwn.js
deleted file mode 100644
index 503d523..0000000
--- a/assets/node_modules/lodash/_baseForOwn.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var baseFor = require('./_baseFor'),
- keys = require('./keys');
-
-/**
- * The base implementation of `_.forOwn` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Object} Returns `object`.
- */
-function baseForOwn(object, iteratee) {
- return object && baseFor(object, iteratee, keys);
-}
-
-module.exports = baseForOwn;
diff --git a/assets/node_modules/lodash/_baseForOwnRight.js b/assets/node_modules/lodash/_baseForOwnRight.js
deleted file mode 100644
index a4b10e6..0000000
--- a/assets/node_modules/lodash/_baseForOwnRight.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var baseForRight = require('./_baseForRight'),
- keys = require('./keys');
-
-/**
- * The base implementation of `_.forOwnRight` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Object} Returns `object`.
- */
-function baseForOwnRight(object, iteratee) {
- return object && baseForRight(object, iteratee, keys);
-}
-
-module.exports = baseForOwnRight;
diff --git a/assets/node_modules/lodash/_baseForRight.js b/assets/node_modules/lodash/_baseForRight.js
deleted file mode 100644
index 32842cd..0000000
--- a/assets/node_modules/lodash/_baseForRight.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var createBaseFor = require('./_createBaseFor');
-
-/**
- * This function is like `baseFor` except that it iterates over properties
- * in the opposite order.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @returns {Object} Returns `object`.
- */
-var baseForRight = createBaseFor(true);
-
-module.exports = baseForRight;
diff --git a/assets/node_modules/lodash/_baseFunctions.js b/assets/node_modules/lodash/_baseFunctions.js
deleted file mode 100644
index d23bc9b..0000000
--- a/assets/node_modules/lodash/_baseFunctions.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var arrayFilter = require('./_arrayFilter'),
- isFunction = require('./isFunction');
-
-/**
- * The base implementation of `_.functions` which creates an array of
- * `object` function property names filtered from `props`.
- *
- * @private
- * @param {Object} object The object to inspect.
- * @param {Array} props The property names to filter.
- * @returns {Array} Returns the function names.
- */
-function baseFunctions(object, props) {
- return arrayFilter(props, function(key) {
- return isFunction(object[key]);
- });
-}
-
-module.exports = baseFunctions;
diff --git a/assets/node_modules/lodash/_baseGet.js b/assets/node_modules/lodash/_baseGet.js
deleted file mode 100644
index a194913..0000000
--- a/assets/node_modules/lodash/_baseGet.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var castPath = require('./_castPath'),
- toKey = require('./_toKey');
-
-/**
- * The base implementation of `_.get` without support for default values.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @returns {*} Returns the resolved value.
- */
-function baseGet(object, path) {
- path = castPath(path, object);
-
- var index = 0,
- length = path.length;
-
- while (object != null && index < length) {
- object = object[toKey(path[index++])];
- }
- return (index && index == length) ? object : undefined;
-}
-
-module.exports = baseGet;
diff --git a/assets/node_modules/lodash/_baseGetAllKeys.js b/assets/node_modules/lodash/_baseGetAllKeys.js
deleted file mode 100644
index 8ad204e..0000000
--- a/assets/node_modules/lodash/_baseGetAllKeys.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var arrayPush = require('./_arrayPush'),
- isArray = require('./isArray');
-
-/**
- * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
- * `keysFunc` and `symbolsFunc` to get the enumerable property names and
- * symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @param {Function} symbolsFunc The function to get the symbols of `object`.
- * @returns {Array} Returns the array of property names and symbols.
- */
-function baseGetAllKeys(object, keysFunc, symbolsFunc) {
- var result = keysFunc(object);
- return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
-}
-
-module.exports = baseGetAllKeys;
diff --git a/assets/node_modules/lodash/_baseGetTag.js b/assets/node_modules/lodash/_baseGetTag.js
deleted file mode 100644
index b927ccc..0000000
--- a/assets/node_modules/lodash/_baseGetTag.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var Symbol = require('./_Symbol'),
- getRawTag = require('./_getRawTag'),
- objectToString = require('./_objectToString');
-
-/** `Object#toString` result references. */
-var nullTag = '[object Null]',
- undefinedTag = '[object Undefined]';
-
-/** Built-in value references. */
-var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
-
-/**
- * The base implementation of `getTag` without fallbacks for buggy environments.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
-function baseGetTag(value) {
- if (value == null) {
- return value === undefined ? undefinedTag : nullTag;
- }
- return (symToStringTag && symToStringTag in Object(value))
- ? getRawTag(value)
- : objectToString(value);
-}
-
-module.exports = baseGetTag;
diff --git a/assets/node_modules/lodash/_baseGt.js b/assets/node_modules/lodash/_baseGt.js
deleted file mode 100644
index 502d273..0000000
--- a/assets/node_modules/lodash/_baseGt.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * The base implementation of `_.gt` which doesn't coerce arguments.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is greater than `other`,
- * else `false`.
- */
-function baseGt(value, other) {
- return value > other;
-}
-
-module.exports = baseGt;
diff --git a/assets/node_modules/lodash/_baseHas.js b/assets/node_modules/lodash/_baseHas.js
deleted file mode 100644
index 1b73032..0000000
--- a/assets/node_modules/lodash/_baseHas.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * The base implementation of `_.has` without support for deep paths.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {Array|string} key The key to check.
- * @returns {boolean} Returns `true` if `key` exists, else `false`.
- */
-function baseHas(object, key) {
- return object != null && hasOwnProperty.call(object, key);
-}
-
-module.exports = baseHas;
diff --git a/assets/node_modules/lodash/_baseHasIn.js b/assets/node_modules/lodash/_baseHasIn.js
deleted file mode 100644
index 2e0d042..0000000
--- a/assets/node_modules/lodash/_baseHasIn.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * The base implementation of `_.hasIn` without support for deep paths.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {Array|string} key The key to check.
- * @returns {boolean} Returns `true` if `key` exists, else `false`.
- */
-function baseHasIn(object, key) {
- return object != null && key in Object(object);
-}
-
-module.exports = baseHasIn;
diff --git a/assets/node_modules/lodash/_baseInRange.js b/assets/node_modules/lodash/_baseInRange.js
deleted file mode 100644
index ec95666..0000000
--- a/assets/node_modules/lodash/_baseInRange.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max,
- nativeMin = Math.min;
-
-/**
- * The base implementation of `_.inRange` which doesn't coerce arguments.
- *
- * @private
- * @param {number} number The number to check.
- * @param {number} start The start of the range.
- * @param {number} end The end of the range.
- * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
- */
-function baseInRange(number, start, end) {
- return number >= nativeMin(start, end) && number < nativeMax(start, end);
-}
-
-module.exports = baseInRange;
diff --git a/assets/node_modules/lodash/_baseIndexOf.js b/assets/node_modules/lodash/_baseIndexOf.js
deleted file mode 100644
index 167e706..0000000
--- a/assets/node_modules/lodash/_baseIndexOf.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var baseFindIndex = require('./_baseFindIndex'),
- baseIsNaN = require('./_baseIsNaN'),
- strictIndexOf = require('./_strictIndexOf');
-
-/**
- * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseIndexOf(array, value, fromIndex) {
- return value === value
- ? strictIndexOf(array, value, fromIndex)
- : baseFindIndex(array, baseIsNaN, fromIndex);
-}
-
-module.exports = baseIndexOf;
diff --git a/assets/node_modules/lodash/_baseIndexOfWith.js b/assets/node_modules/lodash/_baseIndexOfWith.js
deleted file mode 100644
index f815fe0..0000000
--- a/assets/node_modules/lodash/_baseIndexOfWith.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * This function is like `baseIndexOf` except that it accepts a comparator.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @param {Function} comparator The comparator invoked per element.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseIndexOfWith(array, value, fromIndex, comparator) {
- var index = fromIndex - 1,
- length = array.length;
-
- while (++index < length) {
- if (comparator(array[index], value)) {
- return index;
- }
- }
- return -1;
-}
-
-module.exports = baseIndexOfWith;
diff --git a/assets/node_modules/lodash/_baseIntersection.js b/assets/node_modules/lodash/_baseIntersection.js
deleted file mode 100644
index c1d250c..0000000
--- a/assets/node_modules/lodash/_baseIntersection.js
+++ /dev/null
@@ -1,74 +0,0 @@
-var SetCache = require('./_SetCache'),
- arrayIncludes = require('./_arrayIncludes'),
- arrayIncludesWith = require('./_arrayIncludesWith'),
- arrayMap = require('./_arrayMap'),
- baseUnary = require('./_baseUnary'),
- cacheHas = require('./_cacheHas');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min;
-
-/**
- * The base implementation of methods like `_.intersection`, without support
- * for iteratee shorthands, that accepts an array of arrays to inspect.
- *
- * @private
- * @param {Array} arrays The arrays to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of shared values.
- */
-function baseIntersection(arrays, iteratee, comparator) {
- var includes = comparator ? arrayIncludesWith : arrayIncludes,
- length = arrays[0].length,
- othLength = arrays.length,
- othIndex = othLength,
- caches = Array(othLength),
- maxLength = Infinity,
- result = [];
-
- while (othIndex--) {
- var array = arrays[othIndex];
- if (othIndex && iteratee) {
- array = arrayMap(array, baseUnary(iteratee));
- }
- maxLength = nativeMin(array.length, maxLength);
- caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
- ? new SetCache(othIndex && array)
- : undefined;
- }
- array = arrays[0];
-
- var index = -1,
- seen = caches[0];
-
- outer:
- while (++index < length && result.length < maxLength) {
- var value = array[index],
- computed = iteratee ? iteratee(value) : value;
-
- value = (comparator || value !== 0) ? value : 0;
- if (!(seen
- ? cacheHas(seen, computed)
- : includes(result, computed, comparator)
- )) {
- othIndex = othLength;
- while (--othIndex) {
- var cache = caches[othIndex];
- if (!(cache
- ? cacheHas(cache, computed)
- : includes(arrays[othIndex], computed, comparator))
- ) {
- continue outer;
- }
- }
- if (seen) {
- seen.push(computed);
- }
- result.push(value);
- }
- }
- return result;
-}
-
-module.exports = baseIntersection;
diff --git a/assets/node_modules/lodash/_baseInverter.js b/assets/node_modules/lodash/_baseInverter.js
deleted file mode 100644
index fbc337f..0000000
--- a/assets/node_modules/lodash/_baseInverter.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var baseForOwn = require('./_baseForOwn');
-
-/**
- * The base implementation of `_.invert` and `_.invertBy` which inverts
- * `object` with values transformed by `iteratee` and set by `setter`.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} setter The function to set `accumulator` values.
- * @param {Function} iteratee The iteratee to transform values.
- * @param {Object} accumulator The initial inverted object.
- * @returns {Function} Returns `accumulator`.
- */
-function baseInverter(object, setter, iteratee, accumulator) {
- baseForOwn(object, function(value, key, object) {
- setter(accumulator, iteratee(value), key, object);
- });
- return accumulator;
-}
-
-module.exports = baseInverter;
diff --git a/assets/node_modules/lodash/_baseInvoke.js b/assets/node_modules/lodash/_baseInvoke.js
deleted file mode 100644
index 49bcf3c..0000000
--- a/assets/node_modules/lodash/_baseInvoke.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var apply = require('./_apply'),
- castPath = require('./_castPath'),
- last = require('./last'),
- parent = require('./_parent'),
- toKey = require('./_toKey');
-
-/**
- * The base implementation of `_.invoke` without support for individual
- * method arguments.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the method to invoke.
- * @param {Array} args The arguments to invoke the method with.
- * @returns {*} Returns the result of the invoked method.
- */
-function baseInvoke(object, path, args) {
- path = castPath(path, object);
- object = parent(object, path);
- var func = object == null ? object : object[toKey(last(path))];
- return func == null ? undefined : apply(func, object, args);
-}
-
-module.exports = baseInvoke;
diff --git a/assets/node_modules/lodash/_baseIsArguments.js b/assets/node_modules/lodash/_baseIsArguments.js
deleted file mode 100644
index b3562cc..0000000
--- a/assets/node_modules/lodash/_baseIsArguments.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var baseGetTag = require('./_baseGetTag'),
- isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var argsTag = '[object Arguments]';
-
-/**
- * The base implementation of `_.isArguments`.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- */
-function baseIsArguments(value) {
- return isObjectLike(value) && baseGetTag(value) == argsTag;
-}
-
-module.exports = baseIsArguments;
diff --git a/assets/node_modules/lodash/_baseIsArrayBuffer.js b/assets/node_modules/lodash/_baseIsArrayBuffer.js
deleted file mode 100644
index a2c4f30..0000000
--- a/assets/node_modules/lodash/_baseIsArrayBuffer.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var baseGetTag = require('./_baseGetTag'),
- isObjectLike = require('./isObjectLike');
-
-var arrayBufferTag = '[object ArrayBuffer]';
-
-/**
- * The base implementation of `_.isArrayBuffer` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
- */
-function baseIsArrayBuffer(value) {
- return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
-}
-
-module.exports = baseIsArrayBuffer;
diff --git a/assets/node_modules/lodash/_baseIsDate.js b/assets/node_modules/lodash/_baseIsDate.js
deleted file mode 100644
index ba67c78..0000000
--- a/assets/node_modules/lodash/_baseIsDate.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var baseGetTag = require('./_baseGetTag'),
- isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var dateTag = '[object Date]';
-
-/**
- * The base implementation of `_.isDate` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
- */
-function baseIsDate(value) {
- return isObjectLike(value) && baseGetTag(value) == dateTag;
-}
-
-module.exports = baseIsDate;
diff --git a/assets/node_modules/lodash/_baseIsEqual.js b/assets/node_modules/lodash/_baseIsEqual.js
deleted file mode 100644
index 00a68a4..0000000
--- a/assets/node_modules/lodash/_baseIsEqual.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var baseIsEqualDeep = require('./_baseIsEqualDeep'),
- isObjectLike = require('./isObjectLike');
-
-/**
- * The base implementation of `_.isEqual` which supports partial comparisons
- * and tracks traversed objects.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @param {boolean} bitmask The bitmask flags.
- * 1 - Unordered comparison
- * 2 - Partial comparison
- * @param {Function} [customizer] The function to customize comparisons.
- * @param {Object} [stack] Tracks traversed `value` and `other` objects.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- */
-function baseIsEqual(value, other, bitmask, customizer, stack) {
- if (value === other) {
- return true;
- }
- if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
- return value !== value && other !== other;
- }
- return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
-}
-
-module.exports = baseIsEqual;
diff --git a/assets/node_modules/lodash/_baseIsEqualDeep.js b/assets/node_modules/lodash/_baseIsEqualDeep.js
deleted file mode 100644
index e3cfd6a..0000000
--- a/assets/node_modules/lodash/_baseIsEqualDeep.js
+++ /dev/null
@@ -1,83 +0,0 @@
-var Stack = require('./_Stack'),
- equalArrays = require('./_equalArrays'),
- equalByTag = require('./_equalByTag'),
- equalObjects = require('./_equalObjects'),
- getTag = require('./_getTag'),
- isArray = require('./isArray'),
- isBuffer = require('./isBuffer'),
- isTypedArray = require('./isTypedArray');
-
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1;
-
-/** `Object#toString` result references. */
-var argsTag = '[object Arguments]',
- arrayTag = '[object Array]',
- objectTag = '[object Object]';
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * A specialized version of `baseIsEqual` for arrays and objects which performs
- * deep comparisons and tracks traversed objects enabling objects with circular
- * references to be compared.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} [stack] Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
-function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
- var objIsArr = isArray(object),
- othIsArr = isArray(other),
- objTag = objIsArr ? arrayTag : getTag(object),
- othTag = othIsArr ? arrayTag : getTag(other);
-
- objTag = objTag == argsTag ? objectTag : objTag;
- othTag = othTag == argsTag ? objectTag : othTag;
-
- var objIsObj = objTag == objectTag,
- othIsObj = othTag == objectTag,
- isSameTag = objTag == othTag;
-
- if (isSameTag && isBuffer(object)) {
- if (!isBuffer(other)) {
- return false;
- }
- objIsArr = true;
- objIsObj = false;
- }
- if (isSameTag && !objIsObj) {
- stack || (stack = new Stack);
- return (objIsArr || isTypedArray(object))
- ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
- : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
- }
- if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
- var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
- othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
-
- if (objIsWrapped || othIsWrapped) {
- var objUnwrapped = objIsWrapped ? object.value() : object,
- othUnwrapped = othIsWrapped ? other.value() : other;
-
- stack || (stack = new Stack);
- return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
- }
- }
- if (!isSameTag) {
- return false;
- }
- stack || (stack = new Stack);
- return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
-}
-
-module.exports = baseIsEqualDeep;
diff --git a/assets/node_modules/lodash/_baseIsMap.js b/assets/node_modules/lodash/_baseIsMap.js
deleted file mode 100644
index 02a4021..0000000
--- a/assets/node_modules/lodash/_baseIsMap.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var getTag = require('./_getTag'),
- isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var mapTag = '[object Map]';
-
-/**
- * The base implementation of `_.isMap` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a map, else `false`.
- */
-function baseIsMap(value) {
- return isObjectLike(value) && getTag(value) == mapTag;
-}
-
-module.exports = baseIsMap;
diff --git a/assets/node_modules/lodash/_baseIsMatch.js b/assets/node_modules/lodash/_baseIsMatch.js
deleted file mode 100644
index 72494be..0000000
--- a/assets/node_modules/lodash/_baseIsMatch.js
+++ /dev/null
@@ -1,62 +0,0 @@
-var Stack = require('./_Stack'),
- baseIsEqual = require('./_baseIsEqual');
-
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1,
- COMPARE_UNORDERED_FLAG = 2;
-
-/**
- * The base implementation of `_.isMatch` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property values to match.
- * @param {Array} matchData The property names, values, and compare flags to match.
- * @param {Function} [customizer] The function to customize comparisons.
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
- */
-function baseIsMatch(object, source, matchData, customizer) {
- var index = matchData.length,
- length = index,
- noCustomizer = !customizer;
-
- if (object == null) {
- return !length;
- }
- object = Object(object);
- while (index--) {
- var data = matchData[index];
- if ((noCustomizer && data[2])
- ? data[1] !== object[data[0]]
- : !(data[0] in object)
- ) {
- return false;
- }
- }
- while (++index < length) {
- data = matchData[index];
- var key = data[0],
- objValue = object[key],
- srcValue = data[1];
-
- if (noCustomizer && data[2]) {
- if (objValue === undefined && !(key in object)) {
- return false;
- }
- } else {
- var stack = new Stack;
- if (customizer) {
- var result = customizer(objValue, srcValue, key, object, source, stack);
- }
- if (!(result === undefined
- ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
- : result
- )) {
- return false;
- }
- }
- }
- return true;
-}
-
-module.exports = baseIsMatch;
diff --git a/assets/node_modules/lodash/_baseIsNaN.js b/assets/node_modules/lodash/_baseIsNaN.js
deleted file mode 100644
index 316f1eb..0000000
--- a/assets/node_modules/lodash/_baseIsNaN.js
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * The base implementation of `_.isNaN` without support for number objects.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
- */
-function baseIsNaN(value) {
- return value !== value;
-}
-
-module.exports = baseIsNaN;
diff --git a/assets/node_modules/lodash/_baseIsNative.js b/assets/node_modules/lodash/_baseIsNative.js
deleted file mode 100644
index 8702330..0000000
--- a/assets/node_modules/lodash/_baseIsNative.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var isFunction = require('./isFunction'),
- isMasked = require('./_isMasked'),
- isObject = require('./isObject'),
- toSource = require('./_toSource');
-
-/**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
- */
-var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
-
-/** Used to detect host constructors (Safari). */
-var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-/** Used for built-in method references. */
-var funcProto = Function.prototype,
- objectProto = Object.prototype;
-
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/** Used to detect if a method is native. */
-var reIsNative = RegExp('^' +
- funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-);
-
-/**
- * The base implementation of `_.isNative` without bad shim checks.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- */
-function baseIsNative(value) {
- if (!isObject(value) || isMasked(value)) {
- return false;
- }
- var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
- return pattern.test(toSource(value));
-}
-
-module.exports = baseIsNative;
diff --git a/assets/node_modules/lodash/_baseIsRegExp.js b/assets/node_modules/lodash/_baseIsRegExp.js
deleted file mode 100644
index 6cd7c1a..0000000
--- a/assets/node_modules/lodash/_baseIsRegExp.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var baseGetTag = require('./_baseGetTag'),
- isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var regexpTag = '[object RegExp]';
-
-/**
- * The base implementation of `_.isRegExp` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
- */
-function baseIsRegExp(value) {
- return isObjectLike(value) && baseGetTag(value) == regexpTag;
-}
-
-module.exports = baseIsRegExp;
diff --git a/assets/node_modules/lodash/_baseIsSet.js b/assets/node_modules/lodash/_baseIsSet.js
deleted file mode 100644
index 6dee367..0000000
--- a/assets/node_modules/lodash/_baseIsSet.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var getTag = require('./_getTag'),
- isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var setTag = '[object Set]';
-
-/**
- * The base implementation of `_.isSet` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a set, else `false`.
- */
-function baseIsSet(value) {
- return isObjectLike(value) && getTag(value) == setTag;
-}
-
-module.exports = baseIsSet;
diff --git a/assets/node_modules/lodash/_baseIsTypedArray.js b/assets/node_modules/lodash/_baseIsTypedArray.js
deleted file mode 100644
index 1edb32f..0000000
--- a/assets/node_modules/lodash/_baseIsTypedArray.js
+++ /dev/null
@@ -1,60 +0,0 @@
-var baseGetTag = require('./_baseGetTag'),
- isLength = require('./isLength'),
- isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var argsTag = '[object Arguments]',
- arrayTag = '[object Array]',
- boolTag = '[object Boolean]',
- dateTag = '[object Date]',
- errorTag = '[object Error]',
- funcTag = '[object Function]',
- mapTag = '[object Map]',
- numberTag = '[object Number]',
- objectTag = '[object Object]',
- regexpTag = '[object RegExp]',
- setTag = '[object Set]',
- stringTag = '[object String]',
- weakMapTag = '[object WeakMap]';
-
-var arrayBufferTag = '[object ArrayBuffer]',
- dataViewTag = '[object DataView]',
- float32Tag = '[object Float32Array]',
- float64Tag = '[object Float64Array]',
- int8Tag = '[object Int8Array]',
- int16Tag = '[object Int16Array]',
- int32Tag = '[object Int32Array]',
- uint8Tag = '[object Uint8Array]',
- uint8ClampedTag = '[object Uint8ClampedArray]',
- uint16Tag = '[object Uint16Array]',
- uint32Tag = '[object Uint32Array]';
-
-/** Used to identify `toStringTag` values of typed arrays. */
-var typedArrayTags = {};
-typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
-typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
-typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
-typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
-typedArrayTags[uint32Tag] = true;
-typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
-typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
-typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
-typedArrayTags[errorTag] = typedArrayTags[funcTag] =
-typedArrayTags[mapTag] = typedArrayTags[numberTag] =
-typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
-typedArrayTags[setTag] = typedArrayTags[stringTag] =
-typedArrayTags[weakMapTag] = false;
-
-/**
- * The base implementation of `_.isTypedArray` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
- */
-function baseIsTypedArray(value) {
- return isObjectLike(value) &&
- isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
-}
-
-module.exports = baseIsTypedArray;
diff --git a/assets/node_modules/lodash/_baseIteratee.js b/assets/node_modules/lodash/_baseIteratee.js
deleted file mode 100644
index 995c257..0000000
--- a/assets/node_modules/lodash/_baseIteratee.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var baseMatches = require('./_baseMatches'),
- baseMatchesProperty = require('./_baseMatchesProperty'),
- identity = require('./identity'),
- isArray = require('./isArray'),
- property = require('./property');
-
-/**
- * The base implementation of `_.iteratee`.
- *
- * @private
- * @param {*} [value=_.identity] The value to convert to an iteratee.
- * @returns {Function} Returns the iteratee.
- */
-function baseIteratee(value) {
- // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
- // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
- if (typeof value == 'function') {
- return value;
- }
- if (value == null) {
- return identity;
- }
- if (typeof value == 'object') {
- return isArray(value)
- ? baseMatchesProperty(value[0], value[1])
- : baseMatches(value);
- }
- return property(value);
-}
-
-module.exports = baseIteratee;
diff --git a/assets/node_modules/lodash/_baseKeys.js b/assets/node_modules/lodash/_baseKeys.js
deleted file mode 100644
index 45e9e6f..0000000
--- a/assets/node_modules/lodash/_baseKeys.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var isPrototype = require('./_isPrototype'),
- nativeKeys = require('./_nativeKeys');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
-function baseKeys(object) {
- if (!isPrototype(object)) {
- return nativeKeys(object);
- }
- var result = [];
- for (var key in Object(object)) {
- if (hasOwnProperty.call(object, key) && key != 'constructor') {
- result.push(key);
- }
- }
- return result;
-}
-
-module.exports = baseKeys;
diff --git a/assets/node_modules/lodash/_baseKeysIn.js b/assets/node_modules/lodash/_baseKeysIn.js
deleted file mode 100644
index ea8a0a1..0000000
--- a/assets/node_modules/lodash/_baseKeysIn.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var isObject = require('./isObject'),
- isPrototype = require('./_isPrototype'),
- nativeKeysIn = require('./_nativeKeysIn');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
-function baseKeysIn(object) {
- if (!isObject(object)) {
- return nativeKeysIn(object);
- }
- var isProto = isPrototype(object),
- result = [];
-
- for (var key in object) {
- if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
- result.push(key);
- }
- }
- return result;
-}
-
-module.exports = baseKeysIn;
diff --git a/assets/node_modules/lodash/_baseLodash.js b/assets/node_modules/lodash/_baseLodash.js
deleted file mode 100644
index f76c790..0000000
--- a/assets/node_modules/lodash/_baseLodash.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * The function whose prototype chain sequence wrappers inherit from.
- *
- * @private
- */
-function baseLodash() {
- // No operation performed.
-}
-
-module.exports = baseLodash;
diff --git a/assets/node_modules/lodash/_baseLt.js b/assets/node_modules/lodash/_baseLt.js
deleted file mode 100644
index 8674d29..0000000
--- a/assets/node_modules/lodash/_baseLt.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * The base implementation of `_.lt` which doesn't coerce arguments.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is less than `other`,
- * else `false`.
- */
-function baseLt(value, other) {
- return value < other;
-}
-
-module.exports = baseLt;
diff --git a/assets/node_modules/lodash/_baseMap.js b/assets/node_modules/lodash/_baseMap.js
deleted file mode 100644
index 0bf5cea..0000000
--- a/assets/node_modules/lodash/_baseMap.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var baseEach = require('./_baseEach'),
- isArrayLike = require('./isArrayLike');
-
-/**
- * The base implementation of `_.map` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- */
-function baseMap(collection, iteratee) {
- var index = -1,
- result = isArrayLike(collection) ? Array(collection.length) : [];
-
- baseEach(collection, function(value, key, collection) {
- result[++index] = iteratee(value, key, collection);
- });
- return result;
-}
-
-module.exports = baseMap;
diff --git a/assets/node_modules/lodash/_baseMatches.js b/assets/node_modules/lodash/_baseMatches.js
deleted file mode 100644
index e56582a..0000000
--- a/assets/node_modules/lodash/_baseMatches.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var baseIsMatch = require('./_baseIsMatch'),
- getMatchData = require('./_getMatchData'),
- matchesStrictComparable = require('./_matchesStrictComparable');
-
-/**
- * The base implementation of `_.matches` which doesn't clone `source`.
- *
- * @private
- * @param {Object} source The object of property values to match.
- * @returns {Function} Returns the new spec function.
- */
-function baseMatches(source) {
- var matchData = getMatchData(source);
- if (matchData.length == 1 && matchData[0][2]) {
- return matchesStrictComparable(matchData[0][0], matchData[0][1]);
- }
- return function(object) {
- return object === source || baseIsMatch(object, source, matchData);
- };
-}
-
-module.exports = baseMatches;
diff --git a/assets/node_modules/lodash/_baseMatchesProperty.js b/assets/node_modules/lodash/_baseMatchesProperty.js
deleted file mode 100644
index 24afd89..0000000
--- a/assets/node_modules/lodash/_baseMatchesProperty.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var baseIsEqual = require('./_baseIsEqual'),
- get = require('./get'),
- hasIn = require('./hasIn'),
- isKey = require('./_isKey'),
- isStrictComparable = require('./_isStrictComparable'),
- matchesStrictComparable = require('./_matchesStrictComparable'),
- toKey = require('./_toKey');
-
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1,
- COMPARE_UNORDERED_FLAG = 2;
-
-/**
- * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
- *
- * @private
- * @param {string} path The path of the property to get.
- * @param {*} srcValue The value to match.
- * @returns {Function} Returns the new spec function.
- */
-function baseMatchesProperty(path, srcValue) {
- if (isKey(path) && isStrictComparable(srcValue)) {
- return matchesStrictComparable(toKey(path), srcValue);
- }
- return function(object) {
- var objValue = get(object, path);
- return (objValue === undefined && objValue === srcValue)
- ? hasIn(object, path)
- : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
- };
-}
-
-module.exports = baseMatchesProperty;
diff --git a/assets/node_modules/lodash/_baseMean.js b/assets/node_modules/lodash/_baseMean.js
deleted file mode 100644
index fa9e00a..0000000
--- a/assets/node_modules/lodash/_baseMean.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var baseSum = require('./_baseSum');
-
-/** Used as references for various `Number` constants. */
-var NAN = 0 / 0;
-
-/**
- * The base implementation of `_.mean` and `_.meanBy` without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {number} Returns the mean.
- */
-function baseMean(array, iteratee) {
- var length = array == null ? 0 : array.length;
- return length ? (baseSum(array, iteratee) / length) : NAN;
-}
-
-module.exports = baseMean;
diff --git a/assets/node_modules/lodash/_baseMerge.js b/assets/node_modules/lodash/_baseMerge.js
deleted file mode 100644
index c98b5eb..0000000
--- a/assets/node_modules/lodash/_baseMerge.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var Stack = require('./_Stack'),
- assignMergeValue = require('./_assignMergeValue'),
- baseFor = require('./_baseFor'),
- baseMergeDeep = require('./_baseMergeDeep'),
- isObject = require('./isObject'),
- keysIn = require('./keysIn'),
- safeGet = require('./_safeGet');
-
-/**
- * The base implementation of `_.merge` without support for multiple sources.
- *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @param {number} srcIndex The index of `source`.
- * @param {Function} [customizer] The function to customize merged values.
- * @param {Object} [stack] Tracks traversed source values and their merged
- * counterparts.
- */
-function baseMerge(object, source, srcIndex, customizer, stack) {
- if (object === source) {
- return;
- }
- baseFor(source, function(srcValue, key) {
- stack || (stack = new Stack);
- if (isObject(srcValue)) {
- baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
- }
- else {
- var newValue = customizer
- ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
- : undefined;
-
- if (newValue === undefined) {
- newValue = srcValue;
- }
- assignMergeValue(object, key, newValue);
- }
- }, keysIn);
-}
-
-module.exports = baseMerge;
diff --git a/assets/node_modules/lodash/_baseMergeDeep.js b/assets/node_modules/lodash/_baseMergeDeep.js
deleted file mode 100644
index 4679e8d..0000000
--- a/assets/node_modules/lodash/_baseMergeDeep.js
+++ /dev/null
@@ -1,94 +0,0 @@
-var assignMergeValue = require('./_assignMergeValue'),
- cloneBuffer = require('./_cloneBuffer'),
- cloneTypedArray = require('./_cloneTypedArray'),
- copyArray = require('./_copyArray'),
- initCloneObject = require('./_initCloneObject'),
- isArguments = require('./isArguments'),
- isArray = require('./isArray'),
- isArrayLikeObject = require('./isArrayLikeObject'),
- isBuffer = require('./isBuffer'),
- isFunction = require('./isFunction'),
- isObject = require('./isObject'),
- isPlainObject = require('./isPlainObject'),
- isTypedArray = require('./isTypedArray'),
- safeGet = require('./_safeGet'),
- toPlainObject = require('./toPlainObject');
-
-/**
- * A specialized version of `baseMerge` for arrays and objects which performs
- * deep merges and tracks traversed objects enabling objects with circular
- * references to be merged.
- *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @param {string} key The key of the value to merge.
- * @param {number} srcIndex The index of `source`.
- * @param {Function} mergeFunc The function to merge values.
- * @param {Function} [customizer] The function to customize assigned values.
- * @param {Object} [stack] Tracks traversed source values and their merged
- * counterparts.
- */
-function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
- var objValue = safeGet(object, key),
- srcValue = safeGet(source, key),
- stacked = stack.get(srcValue);
-
- if (stacked) {
- assignMergeValue(object, key, stacked);
- return;
- }
- var newValue = customizer
- ? customizer(objValue, srcValue, (key + ''), object, source, stack)
- : undefined;
-
- var isCommon = newValue === undefined;
-
- if (isCommon) {
- var isArr = isArray(srcValue),
- isBuff = !isArr && isBuffer(srcValue),
- isTyped = !isArr && !isBuff && isTypedArray(srcValue);
-
- newValue = srcValue;
- if (isArr || isBuff || isTyped) {
- if (isArray(objValue)) {
- newValue = objValue;
- }
- else if (isArrayLikeObject(objValue)) {
- newValue = copyArray(objValue);
- }
- else if (isBuff) {
- isCommon = false;
- newValue = cloneBuffer(srcValue, true);
- }
- else if (isTyped) {
- isCommon = false;
- newValue = cloneTypedArray(srcValue, true);
- }
- else {
- newValue = [];
- }
- }
- else if (isPlainObject(srcValue) || isArguments(srcValue)) {
- newValue = objValue;
- if (isArguments(objValue)) {
- newValue = toPlainObject(objValue);
- }
- else if (!isObject(objValue) || isFunction(objValue)) {
- newValue = initCloneObject(srcValue);
- }
- }
- else {
- isCommon = false;
- }
- }
- if (isCommon) {
- // Recursively merge objects and arrays (susceptible to call stack limits).
- stack.set(srcValue, newValue);
- mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
- stack['delete'](srcValue);
- }
- assignMergeValue(object, key, newValue);
-}
-
-module.exports = baseMergeDeep;
diff --git a/assets/node_modules/lodash/_baseNth.js b/assets/node_modules/lodash/_baseNth.js
deleted file mode 100644
index 0403c2a..0000000
--- a/assets/node_modules/lodash/_baseNth.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var isIndex = require('./_isIndex');
-
-/**
- * The base implementation of `_.nth` which doesn't coerce arguments.
- *
- * @private
- * @param {Array} array The array to query.
- * @param {number} n The index of the element to return.
- * @returns {*} Returns the nth element of `array`.
- */
-function baseNth(array, n) {
- var length = array.length;
- if (!length) {
- return;
- }
- n += n < 0 ? length : 0;
- return isIndex(n, length) ? array[n] : undefined;
-}
-
-module.exports = baseNth;
diff --git a/assets/node_modules/lodash/_baseOrderBy.js b/assets/node_modules/lodash/_baseOrderBy.js
deleted file mode 100644
index d8a46ab..0000000
--- a/assets/node_modules/lodash/_baseOrderBy.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var arrayMap = require('./_arrayMap'),
- baseIteratee = require('./_baseIteratee'),
- baseMap = require('./_baseMap'),
- baseSortBy = require('./_baseSortBy'),
- baseUnary = require('./_baseUnary'),
- compareMultiple = require('./_compareMultiple'),
- identity = require('./identity');
-
-/**
- * The base implementation of `_.orderBy` without param guards.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
- * @param {string[]} orders The sort orders of `iteratees`.
- * @returns {Array} Returns the new sorted array.
- */
-function baseOrderBy(collection, iteratees, orders) {
- var index = -1;
- iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));
-
- var result = baseMap(collection, function(value, key, collection) {
- var criteria = arrayMap(iteratees, function(iteratee) {
- return iteratee(value);
- });
- return { 'criteria': criteria, 'index': ++index, 'value': value };
- });
-
- return baseSortBy(result, function(object, other) {
- return compareMultiple(object, other, orders);
- });
-}
-
-module.exports = baseOrderBy;
diff --git a/assets/node_modules/lodash/_basePick.js b/assets/node_modules/lodash/_basePick.js
deleted file mode 100644
index 09b458a..0000000
--- a/assets/node_modules/lodash/_basePick.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var basePickBy = require('./_basePickBy'),
- hasIn = require('./hasIn');
-
-/**
- * The base implementation of `_.pick` without support for individual
- * property identifiers.
- *
- * @private
- * @param {Object} object The source object.
- * @param {string[]} paths The property paths to pick.
- * @returns {Object} Returns the new object.
- */
-function basePick(object, paths) {
- return basePickBy(object, paths, function(value, path) {
- return hasIn(object, path);
- });
-}
-
-module.exports = basePick;
diff --git a/assets/node_modules/lodash/_basePickBy.js b/assets/node_modules/lodash/_basePickBy.js
deleted file mode 100644
index 85be68c..0000000
--- a/assets/node_modules/lodash/_basePickBy.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var baseGet = require('./_baseGet'),
- baseSet = require('./_baseSet'),
- castPath = require('./_castPath');
-
-/**
- * The base implementation of `_.pickBy` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The source object.
- * @param {string[]} paths The property paths to pick.
- * @param {Function} predicate The function invoked per property.
- * @returns {Object} Returns the new object.
- */
-function basePickBy(object, paths, predicate) {
- var index = -1,
- length = paths.length,
- result = {};
-
- while (++index < length) {
- var path = paths[index],
- value = baseGet(object, path);
-
- if (predicate(value, path)) {
- baseSet(result, castPath(path, object), value);
- }
- }
- return result;
-}
-
-module.exports = basePickBy;
diff --git a/assets/node_modules/lodash/_baseProperty.js b/assets/node_modules/lodash/_baseProperty.js
deleted file mode 100644
index 496281e..0000000
--- a/assets/node_modules/lodash/_baseProperty.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * The base implementation of `_.property` without support for deep paths.
- *
- * @private
- * @param {string} key The key of the property to get.
- * @returns {Function} Returns the new accessor function.
- */
-function baseProperty(key) {
- return function(object) {
- return object == null ? undefined : object[key];
- };
-}
-
-module.exports = baseProperty;
diff --git a/assets/node_modules/lodash/_basePropertyDeep.js b/assets/node_modules/lodash/_basePropertyDeep.js
deleted file mode 100644
index 1e5aae5..0000000
--- a/assets/node_modules/lodash/_basePropertyDeep.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var baseGet = require('./_baseGet');
-
-/**
- * A specialized version of `baseProperty` which supports deep paths.
- *
- * @private
- * @param {Array|string} path The path of the property to get.
- * @returns {Function} Returns the new accessor function.
- */
-function basePropertyDeep(path) {
- return function(object) {
- return baseGet(object, path);
- };
-}
-
-module.exports = basePropertyDeep;
diff --git a/assets/node_modules/lodash/_basePropertyOf.js b/assets/node_modules/lodash/_basePropertyOf.js
deleted file mode 100644
index 4617399..0000000
--- a/assets/node_modules/lodash/_basePropertyOf.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * The base implementation of `_.propertyOf` without support for deep paths.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Function} Returns the new accessor function.
- */
-function basePropertyOf(object) {
- return function(key) {
- return object == null ? undefined : object[key];
- };
-}
-
-module.exports = basePropertyOf;
diff --git a/assets/node_modules/lodash/_basePullAll.js b/assets/node_modules/lodash/_basePullAll.js
deleted file mode 100644
index 305720e..0000000
--- a/assets/node_modules/lodash/_basePullAll.js
+++ /dev/null
@@ -1,51 +0,0 @@
-var arrayMap = require('./_arrayMap'),
- baseIndexOf = require('./_baseIndexOf'),
- baseIndexOfWith = require('./_baseIndexOfWith'),
- baseUnary = require('./_baseUnary'),
- copyArray = require('./_copyArray');
-
-/** Used for built-in method references. */
-var arrayProto = Array.prototype;
-
-/** Built-in value references. */
-var splice = arrayProto.splice;
-
-/**
- * The base implementation of `_.pullAllBy` without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {Array} values The values to remove.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns `array`.
- */
-function basePullAll(array, values, iteratee, comparator) {
- var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
- index = -1,
- length = values.length,
- seen = array;
-
- if (array === values) {
- values = copyArray(values);
- }
- if (iteratee) {
- seen = arrayMap(array, baseUnary(iteratee));
- }
- while (++index < length) {
- var fromIndex = 0,
- value = values[index],
- computed = iteratee ? iteratee(value) : value;
-
- while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
- if (seen !== array) {
- splice.call(seen, fromIndex, 1);
- }
- splice.call(array, fromIndex, 1);
- }
- }
- return array;
-}
-
-module.exports = basePullAll;
diff --git a/assets/node_modules/lodash/_basePullAt.js b/assets/node_modules/lodash/_basePullAt.js
deleted file mode 100644
index c3e9e71..0000000
--- a/assets/node_modules/lodash/_basePullAt.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var baseUnset = require('./_baseUnset'),
- isIndex = require('./_isIndex');
-
-/** Used for built-in method references. */
-var arrayProto = Array.prototype;
-
-/** Built-in value references. */
-var splice = arrayProto.splice;
-
-/**
- * The base implementation of `_.pullAt` without support for individual
- * indexes or capturing the removed elements.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {number[]} indexes The indexes of elements to remove.
- * @returns {Array} Returns `array`.
- */
-function basePullAt(array, indexes) {
- var length = array ? indexes.length : 0,
- lastIndex = length - 1;
-
- while (length--) {
- var index = indexes[length];
- if (length == lastIndex || index !== previous) {
- var previous = index;
- if (isIndex(index)) {
- splice.call(array, index, 1);
- } else {
- baseUnset(array, index);
- }
- }
- }
- return array;
-}
-
-module.exports = basePullAt;
diff --git a/assets/node_modules/lodash/_baseRandom.js b/assets/node_modules/lodash/_baseRandom.js
deleted file mode 100644
index 94f76a7..0000000
--- a/assets/node_modules/lodash/_baseRandom.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeFloor = Math.floor,
- nativeRandom = Math.random;
-
-/**
- * The base implementation of `_.random` without support for returning
- * floating-point numbers.
- *
- * @private
- * @param {number} lower The lower bound.
- * @param {number} upper The upper bound.
- * @returns {number} Returns the random number.
- */
-function baseRandom(lower, upper) {
- return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
-}
-
-module.exports = baseRandom;
diff --git a/assets/node_modules/lodash/_baseRange.js b/assets/node_modules/lodash/_baseRange.js
deleted file mode 100644
index 0fb8e41..0000000
--- a/assets/node_modules/lodash/_baseRange.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeCeil = Math.ceil,
- nativeMax = Math.max;
-
-/**
- * The base implementation of `_.range` and `_.rangeRight` which doesn't
- * coerce arguments.
- *
- * @private
- * @param {number} start The start of the range.
- * @param {number} end The end of the range.
- * @param {number} step The value to increment or decrement by.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Array} Returns the range of numbers.
- */
-function baseRange(start, end, step, fromRight) {
- var index = -1,
- length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
- result = Array(length);
-
- while (length--) {
- result[fromRight ? length : ++index] = start;
- start += step;
- }
- return result;
-}
-
-module.exports = baseRange;
diff --git a/assets/node_modules/lodash/_baseReduce.js b/assets/node_modules/lodash/_baseReduce.js
deleted file mode 100644
index 5a1f8b5..0000000
--- a/assets/node_modules/lodash/_baseReduce.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * The base implementation of `_.reduce` and `_.reduceRight`, without support
- * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {*} accumulator The initial value.
- * @param {boolean} initAccum Specify using the first or last element of
- * `collection` as the initial value.
- * @param {Function} eachFunc The function to iterate over `collection`.
- * @returns {*} Returns the accumulated value.
- */
-function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
- eachFunc(collection, function(value, index, collection) {
- accumulator = initAccum
- ? (initAccum = false, value)
- : iteratee(accumulator, value, index, collection);
- });
- return accumulator;
-}
-
-module.exports = baseReduce;
diff --git a/assets/node_modules/lodash/_baseRepeat.js b/assets/node_modules/lodash/_baseRepeat.js
deleted file mode 100644
index ee44c31..0000000
--- a/assets/node_modules/lodash/_baseRepeat.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeFloor = Math.floor;
-
-/**
- * The base implementation of `_.repeat` which doesn't coerce arguments.
- *
- * @private
- * @param {string} string The string to repeat.
- * @param {number} n The number of times to repeat the string.
- * @returns {string} Returns the repeated string.
- */
-function baseRepeat(string, n) {
- var result = '';
- if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
- return result;
- }
- // Leverage the exponentiation by squaring algorithm for a faster repeat.
- // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
- do {
- if (n % 2) {
- result += string;
- }
- n = nativeFloor(n / 2);
- if (n) {
- string += string;
- }
- } while (n);
-
- return result;
-}
-
-module.exports = baseRepeat;
diff --git a/assets/node_modules/lodash/_baseRest.js b/assets/node_modules/lodash/_baseRest.js
deleted file mode 100644
index d0dc4bd..0000000
--- a/assets/node_modules/lodash/_baseRest.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var identity = require('./identity'),
- overRest = require('./_overRest'),
- setToString = require('./_setToString');
-
-/**
- * The base implementation of `_.rest` which doesn't validate or coerce arguments.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @returns {Function} Returns the new function.
- */
-function baseRest(func, start) {
- return setToString(overRest(func, start, identity), func + '');
-}
-
-module.exports = baseRest;
diff --git a/assets/node_modules/lodash/_baseSample.js b/assets/node_modules/lodash/_baseSample.js
deleted file mode 100644
index 58582b9..0000000
--- a/assets/node_modules/lodash/_baseSample.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var arraySample = require('./_arraySample'),
- values = require('./values');
-
-/**
- * The base implementation of `_.sample`.
- *
- * @private
- * @param {Array|Object} collection The collection to sample.
- * @returns {*} Returns the random element.
- */
-function baseSample(collection) {
- return arraySample(values(collection));
-}
-
-module.exports = baseSample;
diff --git a/assets/node_modules/lodash/_baseSampleSize.js b/assets/node_modules/lodash/_baseSampleSize.js
deleted file mode 100644
index 5c90ec5..0000000
--- a/assets/node_modules/lodash/_baseSampleSize.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var baseClamp = require('./_baseClamp'),
- shuffleSelf = require('./_shuffleSelf'),
- values = require('./values');
-
-/**
- * The base implementation of `_.sampleSize` without param guards.
- *
- * @private
- * @param {Array|Object} collection The collection to sample.
- * @param {number} n The number of elements to sample.
- * @returns {Array} Returns the random elements.
- */
-function baseSampleSize(collection, n) {
- var array = values(collection);
- return shuffleSelf(array, baseClamp(n, 0, array.length));
-}
-
-module.exports = baseSampleSize;
diff --git a/assets/node_modules/lodash/_baseSet.js b/assets/node_modules/lodash/_baseSet.js
deleted file mode 100644
index 612a24c..0000000
--- a/assets/node_modules/lodash/_baseSet.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var assignValue = require('./_assignValue'),
- castPath = require('./_castPath'),
- isIndex = require('./_isIndex'),
- isObject = require('./isObject'),
- toKey = require('./_toKey');
-
-/**
- * The base implementation of `_.set`.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {*} value The value to set.
- * @param {Function} [customizer] The function to customize path creation.
- * @returns {Object} Returns `object`.
- */
-function baseSet(object, path, value, customizer) {
- if (!isObject(object)) {
- return object;
- }
- path = castPath(path, object);
-
- var index = -1,
- length = path.length,
- lastIndex = length - 1,
- nested = object;
-
- while (nested != null && ++index < length) {
- var key = toKey(path[index]),
- newValue = value;
-
- if (index != lastIndex) {
- var objValue = nested[key];
- newValue = customizer ? customizer(objValue, key, nested) : undefined;
- if (newValue === undefined) {
- newValue = isObject(objValue)
- ? objValue
- : (isIndex(path[index + 1]) ? [] : {});
- }
- }
- assignValue(nested, key, newValue);
- nested = nested[key];
- }
- return object;
-}
-
-module.exports = baseSet;
diff --git a/assets/node_modules/lodash/_baseSetData.js b/assets/node_modules/lodash/_baseSetData.js
deleted file mode 100644
index c409947..0000000
--- a/assets/node_modules/lodash/_baseSetData.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var identity = require('./identity'),
- metaMap = require('./_metaMap');
-
-/**
- * The base implementation of `setData` without support for hot loop shorting.
- *
- * @private
- * @param {Function} func The function to associate metadata with.
- * @param {*} data The metadata.
- * @returns {Function} Returns `func`.
- */
-var baseSetData = !metaMap ? identity : function(func, data) {
- metaMap.set(func, data);
- return func;
-};
-
-module.exports = baseSetData;
diff --git a/assets/node_modules/lodash/_baseSetToString.js b/assets/node_modules/lodash/_baseSetToString.js
deleted file mode 100644
index 89eaca3..0000000
--- a/assets/node_modules/lodash/_baseSetToString.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var constant = require('./constant'),
- defineProperty = require('./_defineProperty'),
- identity = require('./identity');
-
-/**
- * The base implementation of `setToString` without support for hot loop shorting.
- *
- * @private
- * @param {Function} func The function to modify.
- * @param {Function} string The `toString` result.
- * @returns {Function} Returns `func`.
- */
-var baseSetToString = !defineProperty ? identity : function(func, string) {
- return defineProperty(func, 'toString', {
- 'configurable': true,
- 'enumerable': false,
- 'value': constant(string),
- 'writable': true
- });
-};
-
-module.exports = baseSetToString;
diff --git a/assets/node_modules/lodash/_baseShuffle.js b/assets/node_modules/lodash/_baseShuffle.js
deleted file mode 100644
index 023077a..0000000
--- a/assets/node_modules/lodash/_baseShuffle.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var shuffleSelf = require('./_shuffleSelf'),
- values = require('./values');
-
-/**
- * The base implementation of `_.shuffle`.
- *
- * @private
- * @param {Array|Object} collection The collection to shuffle.
- * @returns {Array} Returns the new shuffled array.
- */
-function baseShuffle(collection) {
- return shuffleSelf(values(collection));
-}
-
-module.exports = baseShuffle;
diff --git a/assets/node_modules/lodash/_baseSlice.js b/assets/node_modules/lodash/_baseSlice.js
deleted file mode 100644
index 786f6c9..0000000
--- a/assets/node_modules/lodash/_baseSlice.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * The base implementation of `_.slice` without an iteratee call guard.
- *
- * @private
- * @param {Array} array The array to slice.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the slice of `array`.
- */
-function baseSlice(array, start, end) {
- var index = -1,
- length = array.length;
-
- if (start < 0) {
- start = -start > length ? 0 : (length + start);
- }
- end = end > length ? length : end;
- if (end < 0) {
- end += length;
- }
- length = start > end ? 0 : ((end - start) >>> 0);
- start >>>= 0;
-
- var result = Array(length);
- while (++index < length) {
- result[index] = array[index + start];
- }
- return result;
-}
-
-module.exports = baseSlice;
diff --git a/assets/node_modules/lodash/_baseSome.js b/assets/node_modules/lodash/_baseSome.js
deleted file mode 100644
index 58f3f44..0000000
--- a/assets/node_modules/lodash/_baseSome.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var baseEach = require('./_baseEach');
-
-/**
- * The base implementation of `_.some` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- * else `false`.
- */
-function baseSome(collection, predicate) {
- var result;
-
- baseEach(collection, function(value, index, collection) {
- result = predicate(value, index, collection);
- return !result;
- });
- return !!result;
-}
-
-module.exports = baseSome;
diff --git a/assets/node_modules/lodash/_baseSortBy.js b/assets/node_modules/lodash/_baseSortBy.js
deleted file mode 100644
index a25c92e..0000000
--- a/assets/node_modules/lodash/_baseSortBy.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * The base implementation of `_.sortBy` which uses `comparer` to define the
- * sort order of `array` and replaces criteria objects with their corresponding
- * values.
- *
- * @private
- * @param {Array} array The array to sort.
- * @param {Function} comparer The function to define sort order.
- * @returns {Array} Returns `array`.
- */
-function baseSortBy(array, comparer) {
- var length = array.length;
-
- array.sort(comparer);
- while (length--) {
- array[length] = array[length].value;
- }
- return array;
-}
-
-module.exports = baseSortBy;
diff --git a/assets/node_modules/lodash/_baseSortedIndex.js b/assets/node_modules/lodash/_baseSortedIndex.js
deleted file mode 100644
index 638c366..0000000
--- a/assets/node_modules/lodash/_baseSortedIndex.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var baseSortedIndexBy = require('./_baseSortedIndexBy'),
- identity = require('./identity'),
- isSymbol = require('./isSymbol');
-
-/** Used as references for the maximum length and index of an array. */
-var MAX_ARRAY_LENGTH = 4294967295,
- HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
-
-/**
- * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
- * performs a binary search of `array` to determine the index at which `value`
- * should be inserted into `array` in order to maintain its sort order.
- *
- * @private
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @param {boolean} [retHighest] Specify returning the highest qualified index.
- * @returns {number} Returns the index at which `value` should be inserted
- * into `array`.
- */
-function baseSortedIndex(array, value, retHighest) {
- var low = 0,
- high = array == null ? low : array.length;
-
- if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
- while (low < high) {
- var mid = (low + high) >>> 1,
- computed = array[mid];
-
- if (computed !== null && !isSymbol(computed) &&
- (retHighest ? (computed <= value) : (computed < value))) {
- low = mid + 1;
- } else {
- high = mid;
- }
- }
- return high;
- }
- return baseSortedIndexBy(array, value, identity, retHighest);
-}
-
-module.exports = baseSortedIndex;
diff --git a/assets/node_modules/lodash/_baseSortedIndexBy.js b/assets/node_modules/lodash/_baseSortedIndexBy.js
deleted file mode 100644
index bb22e36..0000000
--- a/assets/node_modules/lodash/_baseSortedIndexBy.js
+++ /dev/null
@@ -1,64 +0,0 @@
-var isSymbol = require('./isSymbol');
-
-/** Used as references for the maximum length and index of an array. */
-var MAX_ARRAY_LENGTH = 4294967295,
- MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeFloor = Math.floor,
- nativeMin = Math.min;
-
-/**
- * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
- * which invokes `iteratee` for `value` and each element of `array` to compute
- * their sort ranking. The iteratee is invoked with one argument; (value).
- *
- * @private
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @param {Function} iteratee The iteratee invoked per element.
- * @param {boolean} [retHighest] Specify returning the highest qualified index.
- * @returns {number} Returns the index at which `value` should be inserted
- * into `array`.
- */
-function baseSortedIndexBy(array, value, iteratee, retHighest) {
- value = iteratee(value);
-
- var low = 0,
- high = array == null ? 0 : array.length,
- valIsNaN = value !== value,
- valIsNull = value === null,
- valIsSymbol = isSymbol(value),
- valIsUndefined = value === undefined;
-
- while (low < high) {
- var mid = nativeFloor((low + high) / 2),
- computed = iteratee(array[mid]),
- othIsDefined = computed !== undefined,
- othIsNull = computed === null,
- othIsReflexive = computed === computed,
- othIsSymbol = isSymbol(computed);
-
- if (valIsNaN) {
- var setLow = retHighest || othIsReflexive;
- } else if (valIsUndefined) {
- setLow = othIsReflexive && (retHighest || othIsDefined);
- } else if (valIsNull) {
- setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
- } else if (valIsSymbol) {
- setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
- } else if (othIsNull || othIsSymbol) {
- setLow = false;
- } else {
- setLow = retHighest ? (computed <= value) : (computed < value);
- }
- if (setLow) {
- low = mid + 1;
- } else {
- high = mid;
- }
- }
- return nativeMin(high, MAX_ARRAY_INDEX);
-}
-
-module.exports = baseSortedIndexBy;
diff --git a/assets/node_modules/lodash/_baseSortedUniq.js b/assets/node_modules/lodash/_baseSortedUniq.js
deleted file mode 100644
index 802159a..0000000
--- a/assets/node_modules/lodash/_baseSortedUniq.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var eq = require('./eq');
-
-/**
- * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
- * support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- */
-function baseSortedUniq(array, iteratee) {
- var index = -1,
- length = array.length,
- resIndex = 0,
- result = [];
-
- while (++index < length) {
- var value = array[index],
- computed = iteratee ? iteratee(value) : value;
-
- if (!index || !eq(computed, seen)) {
- var seen = computed;
- result[resIndex++] = value === 0 ? 0 : value;
- }
- }
- return result;
-}
-
-module.exports = baseSortedUniq;
diff --git a/assets/node_modules/lodash/_baseSum.js b/assets/node_modules/lodash/_baseSum.js
deleted file mode 100644
index a9e84c1..0000000
--- a/assets/node_modules/lodash/_baseSum.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * The base implementation of `_.sum` and `_.sumBy` without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {number} Returns the sum.
- */
-function baseSum(array, iteratee) {
- var result,
- index = -1,
- length = array.length;
-
- while (++index < length) {
- var current = iteratee(array[index]);
- if (current !== undefined) {
- result = result === undefined ? current : (result + current);
- }
- }
- return result;
-}
-
-module.exports = baseSum;
diff --git a/assets/node_modules/lodash/_baseTimes.js b/assets/node_modules/lodash/_baseTimes.js
deleted file mode 100644
index 0603fc3..0000000
--- a/assets/node_modules/lodash/_baseTimes.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * The base implementation of `_.times` without support for iteratee shorthands
- * or max array length checks.
- *
- * @private
- * @param {number} n The number of times to invoke `iteratee`.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the array of results.
- */
-function baseTimes(n, iteratee) {
- var index = -1,
- result = Array(n);
-
- while (++index < n) {
- result[index] = iteratee(index);
- }
- return result;
-}
-
-module.exports = baseTimes;
diff --git a/assets/node_modules/lodash/_baseToNumber.js b/assets/node_modules/lodash/_baseToNumber.js
deleted file mode 100644
index 04859f3..0000000
--- a/assets/node_modules/lodash/_baseToNumber.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var isSymbol = require('./isSymbol');
-
-/** Used as references for various `Number` constants. */
-var NAN = 0 / 0;
-
-/**
- * The base implementation of `_.toNumber` which doesn't ensure correct
- * conversions of binary, hexadecimal, or octal string values.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {number} Returns the number.
- */
-function baseToNumber(value) {
- if (typeof value == 'number') {
- return value;
- }
- if (isSymbol(value)) {
- return NAN;
- }
- return +value;
-}
-
-module.exports = baseToNumber;
diff --git a/assets/node_modules/lodash/_baseToPairs.js b/assets/node_modules/lodash/_baseToPairs.js
deleted file mode 100644
index bff1991..0000000
--- a/assets/node_modules/lodash/_baseToPairs.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var arrayMap = require('./_arrayMap');
-
-/**
- * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
- * of key-value pairs for `object` corresponding to the property names of `props`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array} props The property names to get values for.
- * @returns {Object} Returns the key-value pairs.
- */
-function baseToPairs(object, props) {
- return arrayMap(props, function(key) {
- return [key, object[key]];
- });
-}
-
-module.exports = baseToPairs;
diff --git a/assets/node_modules/lodash/_baseToString.js b/assets/node_modules/lodash/_baseToString.js
deleted file mode 100644
index ada6ad2..0000000
--- a/assets/node_modules/lodash/_baseToString.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var Symbol = require('./_Symbol'),
- arrayMap = require('./_arrayMap'),
- isArray = require('./isArray'),
- isSymbol = require('./isSymbol');
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
-
-/** Used to convert symbols to primitives and strings. */
-var symbolProto = Symbol ? Symbol.prototype : undefined,
- symbolToString = symbolProto ? symbolProto.toString : undefined;
-
-/**
- * The base implementation of `_.toString` which doesn't convert nullish
- * values to empty strings.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- */
-function baseToString(value) {
- // Exit early for strings to avoid a performance hit in some environments.
- if (typeof value == 'string') {
- return value;
- }
- if (isArray(value)) {
- // Recursively convert values (susceptible to call stack limits).
- return arrayMap(value, baseToString) + '';
- }
- if (isSymbol(value)) {
- return symbolToString ? symbolToString.call(value) : '';
- }
- var result = (value + '');
- return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-}
-
-module.exports = baseToString;
diff --git a/assets/node_modules/lodash/_baseUnary.js b/assets/node_modules/lodash/_baseUnary.js
deleted file mode 100644
index 98639e9..0000000
--- a/assets/node_modules/lodash/_baseUnary.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * The base implementation of `_.unary` without support for storing metadata.
- *
- * @private
- * @param {Function} func The function to cap arguments for.
- * @returns {Function} Returns the new capped function.
- */
-function baseUnary(func) {
- return function(value) {
- return func(value);
- };
-}
-
-module.exports = baseUnary;
diff --git a/assets/node_modules/lodash/_baseUniq.js b/assets/node_modules/lodash/_baseUniq.js
deleted file mode 100644
index aea459d..0000000
--- a/assets/node_modules/lodash/_baseUniq.js
+++ /dev/null
@@ -1,72 +0,0 @@
-var SetCache = require('./_SetCache'),
- arrayIncludes = require('./_arrayIncludes'),
- arrayIncludesWith = require('./_arrayIncludesWith'),
- cacheHas = require('./_cacheHas'),
- createSet = require('./_createSet'),
- setToArray = require('./_setToArray');
-
-/** Used as the size to enable large array optimizations. */
-var LARGE_ARRAY_SIZE = 200;
-
-/**
- * The base implementation of `_.uniqBy` without support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- */
-function baseUniq(array, iteratee, comparator) {
- var index = -1,
- includes = arrayIncludes,
- length = array.length,
- isCommon = true,
- result = [],
- seen = result;
-
- if (comparator) {
- isCommon = false;
- includes = arrayIncludesWith;
- }
- else if (length >= LARGE_ARRAY_SIZE) {
- var set = iteratee ? null : createSet(array);
- if (set) {
- return setToArray(set);
- }
- isCommon = false;
- includes = cacheHas;
- seen = new SetCache;
- }
- else {
- seen = iteratee ? [] : result;
- }
- outer:
- while (++index < length) {
- var value = array[index],
- computed = iteratee ? iteratee(value) : value;
-
- value = (comparator || value !== 0) ? value : 0;
- if (isCommon && computed === computed) {
- var seenIndex = seen.length;
- while (seenIndex--) {
- if (seen[seenIndex] === computed) {
- continue outer;
- }
- }
- if (iteratee) {
- seen.push(computed);
- }
- result.push(value);
- }
- else if (!includes(seen, computed, comparator)) {
- if (seen !== result) {
- seen.push(computed);
- }
- result.push(value);
- }
- }
- return result;
-}
-
-module.exports = baseUniq;
diff --git a/assets/node_modules/lodash/_baseUnset.js b/assets/node_modules/lodash/_baseUnset.js
deleted file mode 100644
index eefc6e3..0000000
--- a/assets/node_modules/lodash/_baseUnset.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var castPath = require('./_castPath'),
- last = require('./last'),
- parent = require('./_parent'),
- toKey = require('./_toKey');
-
-/**
- * The base implementation of `_.unset`.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {Array|string} path The property path to unset.
- * @returns {boolean} Returns `true` if the property is deleted, else `false`.
- */
-function baseUnset(object, path) {
- path = castPath(path, object);
- object = parent(object, path);
- return object == null || delete object[toKey(last(path))];
-}
-
-module.exports = baseUnset;
diff --git a/assets/node_modules/lodash/_baseUpdate.js b/assets/node_modules/lodash/_baseUpdate.js
deleted file mode 100644
index 92a6237..0000000
--- a/assets/node_modules/lodash/_baseUpdate.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var baseGet = require('./_baseGet'),
- baseSet = require('./_baseSet');
-
-/**
- * The base implementation of `_.update`.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to update.
- * @param {Function} updater The function to produce the updated value.
- * @param {Function} [customizer] The function to customize path creation.
- * @returns {Object} Returns `object`.
- */
-function baseUpdate(object, path, updater, customizer) {
- return baseSet(object, path, updater(baseGet(object, path)), customizer);
-}
-
-module.exports = baseUpdate;
diff --git a/assets/node_modules/lodash/_baseValues.js b/assets/node_modules/lodash/_baseValues.js
deleted file mode 100644
index b95faad..0000000
--- a/assets/node_modules/lodash/_baseValues.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var arrayMap = require('./_arrayMap');
-
-/**
- * The base implementation of `_.values` and `_.valuesIn` which creates an
- * array of `object` property values corresponding to the property names
- * of `props`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array} props The property names to get values for.
- * @returns {Object} Returns the array of property values.
- */
-function baseValues(object, props) {
- return arrayMap(props, function(key) {
- return object[key];
- });
-}
-
-module.exports = baseValues;
diff --git a/assets/node_modules/lodash/_baseWhile.js b/assets/node_modules/lodash/_baseWhile.js
deleted file mode 100644
index 07eac61..0000000
--- a/assets/node_modules/lodash/_baseWhile.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var baseSlice = require('./_baseSlice');
-
-/**
- * The base implementation of methods like `_.dropWhile` and `_.takeWhile`
- * without support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to query.
- * @param {Function} predicate The function invoked per iteration.
- * @param {boolean} [isDrop] Specify dropping elements instead of taking them.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Array} Returns the slice of `array`.
- */
-function baseWhile(array, predicate, isDrop, fromRight) {
- var length = array.length,
- index = fromRight ? length : -1;
-
- while ((fromRight ? index-- : ++index < length) &&
- predicate(array[index], index, array)) {}
-
- return isDrop
- ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))
- : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));
-}
-
-module.exports = baseWhile;
diff --git a/assets/node_modules/lodash/_baseWrapperValue.js b/assets/node_modules/lodash/_baseWrapperValue.js
deleted file mode 100644
index 443e0df..0000000
--- a/assets/node_modules/lodash/_baseWrapperValue.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var LazyWrapper = require('./_LazyWrapper'),
- arrayPush = require('./_arrayPush'),
- arrayReduce = require('./_arrayReduce');
-
-/**
- * The base implementation of `wrapperValue` which returns the result of
- * performing a sequence of actions on the unwrapped `value`, where each
- * successive action is supplied the return value of the previous.
- *
- * @private
- * @param {*} value The unwrapped value.
- * @param {Array} actions Actions to perform to resolve the unwrapped value.
- * @returns {*} Returns the resolved value.
- */
-function baseWrapperValue(value, actions) {
- var result = value;
- if (result instanceof LazyWrapper) {
- result = result.value();
- }
- return arrayReduce(actions, function(result, action) {
- return action.func.apply(action.thisArg, arrayPush([result], action.args));
- }, result);
-}
-
-module.exports = baseWrapperValue;
diff --git a/assets/node_modules/lodash/_baseXor.js b/assets/node_modules/lodash/_baseXor.js
deleted file mode 100644
index 8e69338..0000000
--- a/assets/node_modules/lodash/_baseXor.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var baseDifference = require('./_baseDifference'),
- baseFlatten = require('./_baseFlatten'),
- baseUniq = require('./_baseUniq');
-
-/**
- * The base implementation of methods like `_.xor`, without support for
- * iteratee shorthands, that accepts an array of arrays to inspect.
- *
- * @private
- * @param {Array} arrays The arrays to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of values.
- */
-function baseXor(arrays, iteratee, comparator) {
- var length = arrays.length;
- if (length < 2) {
- return length ? baseUniq(arrays[0]) : [];
- }
- var index = -1,
- result = Array(length);
-
- while (++index < length) {
- var array = arrays[index],
- othIndex = -1;
-
- while (++othIndex < length) {
- if (othIndex != index) {
- result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
- }
- }
- }
- return baseUniq(baseFlatten(result, 1), iteratee, comparator);
-}
-
-module.exports = baseXor;
diff --git a/assets/node_modules/lodash/_baseZipObject.js b/assets/node_modules/lodash/_baseZipObject.js
deleted file mode 100644
index 401f85b..0000000
--- a/assets/node_modules/lodash/_baseZipObject.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
- *
- * @private
- * @param {Array} props The property identifiers.
- * @param {Array} values The property values.
- * @param {Function} assignFunc The function to assign values.
- * @returns {Object} Returns the new object.
- */
-function baseZipObject(props, values, assignFunc) {
- var index = -1,
- length = props.length,
- valsLength = values.length,
- result = {};
-
- while (++index < length) {
- var value = index < valsLength ? values[index] : undefined;
- assignFunc(result, props[index], value);
- }
- return result;
-}
-
-module.exports = baseZipObject;
diff --git a/assets/node_modules/lodash/_cacheHas.js b/assets/node_modules/lodash/_cacheHas.js
deleted file mode 100644
index 2dec892..0000000
--- a/assets/node_modules/lodash/_cacheHas.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Checks if a `cache` value for `key` exists.
- *
- * @private
- * @param {Object} cache The cache to query.
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function cacheHas(cache, key) {
- return cache.has(key);
-}
-
-module.exports = cacheHas;
diff --git a/assets/node_modules/lodash/_castArrayLikeObject.js b/assets/node_modules/lodash/_castArrayLikeObject.js
deleted file mode 100644
index 92c75fa..0000000
--- a/assets/node_modules/lodash/_castArrayLikeObject.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var isArrayLikeObject = require('./isArrayLikeObject');
-
-/**
- * Casts `value` to an empty array if it's not an array like object.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {Array|Object} Returns the cast array-like object.
- */
-function castArrayLikeObject(value) {
- return isArrayLikeObject(value) ? value : [];
-}
-
-module.exports = castArrayLikeObject;
diff --git a/assets/node_modules/lodash/_castFunction.js b/assets/node_modules/lodash/_castFunction.js
deleted file mode 100644
index 98c91ae..0000000
--- a/assets/node_modules/lodash/_castFunction.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var identity = require('./identity');
-
-/**
- * Casts `value` to `identity` if it's not a function.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {Function} Returns cast function.
- */
-function castFunction(value) {
- return typeof value == 'function' ? value : identity;
-}
-
-module.exports = castFunction;
diff --git a/assets/node_modules/lodash/_castPath.js b/assets/node_modules/lodash/_castPath.js
deleted file mode 100644
index 017e4c1..0000000
--- a/assets/node_modules/lodash/_castPath.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var isArray = require('./isArray'),
- isKey = require('./_isKey'),
- stringToPath = require('./_stringToPath'),
- toString = require('./toString');
-
-/**
- * Casts `value` to a path array if it's not one.
- *
- * @private
- * @param {*} value The value to inspect.
- * @param {Object} [object] The object to query keys on.
- * @returns {Array} Returns the cast property path array.
- */
-function castPath(value, object) {
- if (isArray(value)) {
- return value;
- }
- return isKey(value, object) ? [value] : stringToPath(toString(value));
-}
-
-module.exports = castPath;
diff --git a/assets/node_modules/lodash/_castRest.js b/assets/node_modules/lodash/_castRest.js
deleted file mode 100644
index 213c66f..0000000
--- a/assets/node_modules/lodash/_castRest.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var baseRest = require('./_baseRest');
-
-/**
- * A `baseRest` alias which can be replaced with `identity` by module
- * replacement plugins.
- *
- * @private
- * @type {Function}
- * @param {Function} func The function to apply a rest parameter to.
- * @returns {Function} Returns the new function.
- */
-var castRest = baseRest;
-
-module.exports = castRest;
diff --git a/assets/node_modules/lodash/_castSlice.js b/assets/node_modules/lodash/_castSlice.js
deleted file mode 100644
index 071faeb..0000000
--- a/assets/node_modules/lodash/_castSlice.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var baseSlice = require('./_baseSlice');
-
-/**
- * Casts `array` to a slice if it's needed.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {number} start The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the cast slice.
- */
-function castSlice(array, start, end) {
- var length = array.length;
- end = end === undefined ? length : end;
- return (!start && end >= length) ? array : baseSlice(array, start, end);
-}
-
-module.exports = castSlice;
diff --git a/assets/node_modules/lodash/_charsEndIndex.js b/assets/node_modules/lodash/_charsEndIndex.js
deleted file mode 100644
index 07908ff..0000000
--- a/assets/node_modules/lodash/_charsEndIndex.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var baseIndexOf = require('./_baseIndexOf');
-
-/**
- * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
- * that is not found in the character symbols.
- *
- * @private
- * @param {Array} strSymbols The string symbols to inspect.
- * @param {Array} chrSymbols The character symbols to find.
- * @returns {number} Returns the index of the last unmatched string symbol.
- */
-function charsEndIndex(strSymbols, chrSymbols) {
- var index = strSymbols.length;
-
- while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
- return index;
-}
-
-module.exports = charsEndIndex;
diff --git a/assets/node_modules/lodash/_charsStartIndex.js b/assets/node_modules/lodash/_charsStartIndex.js
deleted file mode 100644
index b17afd2..0000000
--- a/assets/node_modules/lodash/_charsStartIndex.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var baseIndexOf = require('./_baseIndexOf');
-
-/**
- * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
- * that is not found in the character symbols.
- *
- * @private
- * @param {Array} strSymbols The string symbols to inspect.
- * @param {Array} chrSymbols The character symbols to find.
- * @returns {number} Returns the index of the first unmatched string symbol.
- */
-function charsStartIndex(strSymbols, chrSymbols) {
- var index = -1,
- length = strSymbols.length;
-
- while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
- return index;
-}
-
-module.exports = charsStartIndex;
diff --git a/assets/node_modules/lodash/_cloneArrayBuffer.js b/assets/node_modules/lodash/_cloneArrayBuffer.js
deleted file mode 100644
index c3d8f6e..0000000
--- a/assets/node_modules/lodash/_cloneArrayBuffer.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var Uint8Array = require('./_Uint8Array');
-
-/**
- * Creates a clone of `arrayBuffer`.
- *
- * @private
- * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
- * @returns {ArrayBuffer} Returns the cloned array buffer.
- */
-function cloneArrayBuffer(arrayBuffer) {
- var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
- new Uint8Array(result).set(new Uint8Array(arrayBuffer));
- return result;
-}
-
-module.exports = cloneArrayBuffer;
diff --git a/assets/node_modules/lodash/_cloneBuffer.js b/assets/node_modules/lodash/_cloneBuffer.js
deleted file mode 100644
index 27c4810..0000000
--- a/assets/node_modules/lodash/_cloneBuffer.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var root = require('./_root');
-
-/** Detect free variable `exports`. */
-var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
-
-/** Detect free variable `module`. */
-var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
-
-/** Detect the popular CommonJS extension `module.exports`. */
-var moduleExports = freeModule && freeModule.exports === freeExports;
-
-/** Built-in value references. */
-var Buffer = moduleExports ? root.Buffer : undefined,
- allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;
-
-/**
- * Creates a clone of `buffer`.
- *
- * @private
- * @param {Buffer} buffer The buffer to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Buffer} Returns the cloned buffer.
- */
-function cloneBuffer(buffer, isDeep) {
- if (isDeep) {
- return buffer.slice();
- }
- var length = buffer.length,
- result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
-
- buffer.copy(result);
- return result;
-}
-
-module.exports = cloneBuffer;
diff --git a/assets/node_modules/lodash/_cloneDataView.js b/assets/node_modules/lodash/_cloneDataView.js
deleted file mode 100644
index 9c9b7b0..0000000
--- a/assets/node_modules/lodash/_cloneDataView.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var cloneArrayBuffer = require('./_cloneArrayBuffer');
-
-/**
- * Creates a clone of `dataView`.
- *
- * @private
- * @param {Object} dataView The data view to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the cloned data view.
- */
-function cloneDataView(dataView, isDeep) {
- var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
- return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
-}
-
-module.exports = cloneDataView;
diff --git a/assets/node_modules/lodash/_cloneRegExp.js b/assets/node_modules/lodash/_cloneRegExp.js
deleted file mode 100644
index 64a30df..0000000
--- a/assets/node_modules/lodash/_cloneRegExp.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/** Used to match `RegExp` flags from their coerced string values. */
-var reFlags = /\w*$/;
-
-/**
- * Creates a clone of `regexp`.
- *
- * @private
- * @param {Object} regexp The regexp to clone.
- * @returns {Object} Returns the cloned regexp.
- */
-function cloneRegExp(regexp) {
- var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
- result.lastIndex = regexp.lastIndex;
- return result;
-}
-
-module.exports = cloneRegExp;
diff --git a/assets/node_modules/lodash/_cloneSymbol.js b/assets/node_modules/lodash/_cloneSymbol.js
deleted file mode 100644
index bede39f..0000000
--- a/assets/node_modules/lodash/_cloneSymbol.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var Symbol = require('./_Symbol');
-
-/** Used to convert symbols to primitives and strings. */
-var symbolProto = Symbol ? Symbol.prototype : undefined,
- symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
-
-/**
- * Creates a clone of the `symbol` object.
- *
- * @private
- * @param {Object} symbol The symbol object to clone.
- * @returns {Object} Returns the cloned symbol object.
- */
-function cloneSymbol(symbol) {
- return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
-}
-
-module.exports = cloneSymbol;
diff --git a/assets/node_modules/lodash/_cloneTypedArray.js b/assets/node_modules/lodash/_cloneTypedArray.js
deleted file mode 100644
index 7aad84d..0000000
--- a/assets/node_modules/lodash/_cloneTypedArray.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var cloneArrayBuffer = require('./_cloneArrayBuffer');
-
-/**
- * Creates a clone of `typedArray`.
- *
- * @private
- * @param {Object} typedArray The typed array to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the cloned typed array.
- */
-function cloneTypedArray(typedArray, isDeep) {
- var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
- return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
-}
-
-module.exports = cloneTypedArray;
diff --git a/assets/node_modules/lodash/_compareAscending.js b/assets/node_modules/lodash/_compareAscending.js
deleted file mode 100644
index 8dc2791..0000000
--- a/assets/node_modules/lodash/_compareAscending.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var isSymbol = require('./isSymbol');
-
-/**
- * Compares values to sort them in ascending order.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {number} Returns the sort order indicator for `value`.
- */
-function compareAscending(value, other) {
- if (value !== other) {
- var valIsDefined = value !== undefined,
- valIsNull = value === null,
- valIsReflexive = value === value,
- valIsSymbol = isSymbol(value);
-
- var othIsDefined = other !== undefined,
- othIsNull = other === null,
- othIsReflexive = other === other,
- othIsSymbol = isSymbol(other);
-
- if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
- (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
- (valIsNull && othIsDefined && othIsReflexive) ||
- (!valIsDefined && othIsReflexive) ||
- !valIsReflexive) {
- return 1;
- }
- if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
- (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
- (othIsNull && valIsDefined && valIsReflexive) ||
- (!othIsDefined && valIsReflexive) ||
- !othIsReflexive) {
- return -1;
- }
- }
- return 0;
-}
-
-module.exports = compareAscending;
diff --git a/assets/node_modules/lodash/_compareMultiple.js b/assets/node_modules/lodash/_compareMultiple.js
deleted file mode 100644
index ad61f0f..0000000
--- a/assets/node_modules/lodash/_compareMultiple.js
+++ /dev/null
@@ -1,44 +0,0 @@
-var compareAscending = require('./_compareAscending');
-
-/**
- * Used by `_.orderBy` to compare multiple properties of a value to another
- * and stable sort them.
- *
- * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
- * specify an order of "desc" for descending or "asc" for ascending sort order
- * of corresponding values.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {boolean[]|string[]} orders The order to sort by for each property.
- * @returns {number} Returns the sort order indicator for `object`.
- */
-function compareMultiple(object, other, orders) {
- var index = -1,
- objCriteria = object.criteria,
- othCriteria = other.criteria,
- length = objCriteria.length,
- ordersLength = orders.length;
-
- while (++index < length) {
- var result = compareAscending(objCriteria[index], othCriteria[index]);
- if (result) {
- if (index >= ordersLength) {
- return result;
- }
- var order = orders[index];
- return result * (order == 'desc' ? -1 : 1);
- }
- }
- // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
- // that causes it, under certain circumstances, to provide the same value for
- // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
- // for more details.
- //
- // This also ensures a stable sort in V8 and other engines.
- // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
- return object.index - other.index;
-}
-
-module.exports = compareMultiple;
diff --git a/assets/node_modules/lodash/_composeArgs.js b/assets/node_modules/lodash/_composeArgs.js
deleted file mode 100644
index 1ce40f4..0000000
--- a/assets/node_modules/lodash/_composeArgs.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Creates an array that is the composition of partially applied arguments,
- * placeholders, and provided arguments into a single array of arguments.
- *
- * @private
- * @param {Array} args The provided arguments.
- * @param {Array} partials The arguments to prepend to those provided.
- * @param {Array} holders The `partials` placeholder indexes.
- * @params {boolean} [isCurried] Specify composing for a curried function.
- * @returns {Array} Returns the new array of composed arguments.
- */
-function composeArgs(args, partials, holders, isCurried) {
- var argsIndex = -1,
- argsLength = args.length,
- holdersLength = holders.length,
- leftIndex = -1,
- leftLength = partials.length,
- rangeLength = nativeMax(argsLength - holdersLength, 0),
- result = Array(leftLength + rangeLength),
- isUncurried = !isCurried;
-
- while (++leftIndex < leftLength) {
- result[leftIndex] = partials[leftIndex];
- }
- while (++argsIndex < holdersLength) {
- if (isUncurried || argsIndex < argsLength) {
- result[holders[argsIndex]] = args[argsIndex];
- }
- }
- while (rangeLength--) {
- result[leftIndex++] = args[argsIndex++];
- }
- return result;
-}
-
-module.exports = composeArgs;
diff --git a/assets/node_modules/lodash/_composeArgsRight.js b/assets/node_modules/lodash/_composeArgsRight.js
deleted file mode 100644
index 8dc588d..0000000
--- a/assets/node_modules/lodash/_composeArgsRight.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * This function is like `composeArgs` except that the arguments composition
- * is tailored for `_.partialRight`.
- *
- * @private
- * @param {Array} args The provided arguments.
- * @param {Array} partials The arguments to append to those provided.
- * @param {Array} holders The `partials` placeholder indexes.
- * @params {boolean} [isCurried] Specify composing for a curried function.
- * @returns {Array} Returns the new array of composed arguments.
- */
-function composeArgsRight(args, partials, holders, isCurried) {
- var argsIndex = -1,
- argsLength = args.length,
- holdersIndex = -1,
- holdersLength = holders.length,
- rightIndex = -1,
- rightLength = partials.length,
- rangeLength = nativeMax(argsLength - holdersLength, 0),
- result = Array(rangeLength + rightLength),
- isUncurried = !isCurried;
-
- while (++argsIndex < rangeLength) {
- result[argsIndex] = args[argsIndex];
- }
- var offset = argsIndex;
- while (++rightIndex < rightLength) {
- result[offset + rightIndex] = partials[rightIndex];
- }
- while (++holdersIndex < holdersLength) {
- if (isUncurried || argsIndex < argsLength) {
- result[offset + holders[holdersIndex]] = args[argsIndex++];
- }
- }
- return result;
-}
-
-module.exports = composeArgsRight;
diff --git a/assets/node_modules/lodash/_copyArray.js b/assets/node_modules/lodash/_copyArray.js
deleted file mode 100644
index cd94d5d..0000000
--- a/assets/node_modules/lodash/_copyArray.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * Copies the values of `source` to `array`.
- *
- * @private
- * @param {Array} source The array to copy values from.
- * @param {Array} [array=[]] The array to copy values to.
- * @returns {Array} Returns `array`.
- */
-function copyArray(source, array) {
- var index = -1,
- length = source.length;
-
- array || (array = Array(length));
- while (++index < length) {
- array[index] = source[index];
- }
- return array;
-}
-
-module.exports = copyArray;
diff --git a/assets/node_modules/lodash/_copyObject.js b/assets/node_modules/lodash/_copyObject.js
deleted file mode 100644
index 2f2a5c2..0000000
--- a/assets/node_modules/lodash/_copyObject.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var assignValue = require('./_assignValue'),
- baseAssignValue = require('./_baseAssignValue');
-
-/**
- * Copies properties of `source` to `object`.
- *
- * @private
- * @param {Object} source The object to copy properties from.
- * @param {Array} props The property identifiers to copy.
- * @param {Object} [object={}] The object to copy properties to.
- * @param {Function} [customizer] The function to customize copied values.
- * @returns {Object} Returns `object`.
- */
-function copyObject(source, props, object, customizer) {
- var isNew = !object;
- object || (object = {});
-
- var index = -1,
- length = props.length;
-
- while (++index < length) {
- var key = props[index];
-
- var newValue = customizer
- ? customizer(object[key], source[key], key, object, source)
- : undefined;
-
- if (newValue === undefined) {
- newValue = source[key];
- }
- if (isNew) {
- baseAssignValue(object, key, newValue);
- } else {
- assignValue(object, key, newValue);
- }
- }
- return object;
-}
-
-module.exports = copyObject;
diff --git a/assets/node_modules/lodash/_copySymbols.js b/assets/node_modules/lodash/_copySymbols.js
deleted file mode 100644
index c35944a..0000000
--- a/assets/node_modules/lodash/_copySymbols.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var copyObject = require('./_copyObject'),
- getSymbols = require('./_getSymbols');
-
-/**
- * Copies own symbols of `source` to `object`.
- *
- * @private
- * @param {Object} source The object to copy symbols from.
- * @param {Object} [object={}] The object to copy symbols to.
- * @returns {Object} Returns `object`.
- */
-function copySymbols(source, object) {
- return copyObject(source, getSymbols(source), object);
-}
-
-module.exports = copySymbols;
diff --git a/assets/node_modules/lodash/_copySymbolsIn.js b/assets/node_modules/lodash/_copySymbolsIn.js
deleted file mode 100644
index fdf20a7..0000000
--- a/assets/node_modules/lodash/_copySymbolsIn.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var copyObject = require('./_copyObject'),
- getSymbolsIn = require('./_getSymbolsIn');
-
-/**
- * Copies own and inherited symbols of `source` to `object`.
- *
- * @private
- * @param {Object} source The object to copy symbols from.
- * @param {Object} [object={}] The object to copy symbols to.
- * @returns {Object} Returns `object`.
- */
-function copySymbolsIn(source, object) {
- return copyObject(source, getSymbolsIn(source), object);
-}
-
-module.exports = copySymbolsIn;
diff --git a/assets/node_modules/lodash/_coreJsData.js b/assets/node_modules/lodash/_coreJsData.js
deleted file mode 100644
index f8e5b4e..0000000
--- a/assets/node_modules/lodash/_coreJsData.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var root = require('./_root');
-
-/** Used to detect overreaching core-js shims. */
-var coreJsData = root['__core-js_shared__'];
-
-module.exports = coreJsData;
diff --git a/assets/node_modules/lodash/_countHolders.js b/assets/node_modules/lodash/_countHolders.js
deleted file mode 100644
index 718fcda..0000000
--- a/assets/node_modules/lodash/_countHolders.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Gets the number of `placeholder` occurrences in `array`.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} placeholder The placeholder to search for.
- * @returns {number} Returns the placeholder count.
- */
-function countHolders(array, placeholder) {
- var length = array.length,
- result = 0;
-
- while (length--) {
- if (array[length] === placeholder) {
- ++result;
- }
- }
- return result;
-}
-
-module.exports = countHolders;
diff --git a/assets/node_modules/lodash/_createAggregator.js b/assets/node_modules/lodash/_createAggregator.js
deleted file mode 100644
index 0be42c4..0000000
--- a/assets/node_modules/lodash/_createAggregator.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var arrayAggregator = require('./_arrayAggregator'),
- baseAggregator = require('./_baseAggregator'),
- baseIteratee = require('./_baseIteratee'),
- isArray = require('./isArray');
-
-/**
- * Creates a function like `_.groupBy`.
- *
- * @private
- * @param {Function} setter The function to set accumulator values.
- * @param {Function} [initializer] The accumulator object initializer.
- * @returns {Function} Returns the new aggregator function.
- */
-function createAggregator(setter, initializer) {
- return function(collection, iteratee) {
- var func = isArray(collection) ? arrayAggregator : baseAggregator,
- accumulator = initializer ? initializer() : {};
-
- return func(collection, setter, baseIteratee(iteratee, 2), accumulator);
- };
-}
-
-module.exports = createAggregator;
diff --git a/assets/node_modules/lodash/_createAssigner.js b/assets/node_modules/lodash/_createAssigner.js
deleted file mode 100644
index 1f904c5..0000000
--- a/assets/node_modules/lodash/_createAssigner.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var baseRest = require('./_baseRest'),
- isIterateeCall = require('./_isIterateeCall');
-
-/**
- * Creates a function like `_.assign`.
- *
- * @private
- * @param {Function} assigner The function to assign values.
- * @returns {Function} Returns the new assigner function.
- */
-function createAssigner(assigner) {
- return baseRest(function(object, sources) {
- var index = -1,
- length = sources.length,
- customizer = length > 1 ? sources[length - 1] : undefined,
- guard = length > 2 ? sources[2] : undefined;
-
- customizer = (assigner.length > 3 && typeof customizer == 'function')
- ? (length--, customizer)
- : undefined;
-
- if (guard && isIterateeCall(sources[0], sources[1], guard)) {
- customizer = length < 3 ? undefined : customizer;
- length = 1;
- }
- object = Object(object);
- while (++index < length) {
- var source = sources[index];
- if (source) {
- assigner(object, source, index, customizer);
- }
- }
- return object;
- });
-}
-
-module.exports = createAssigner;
diff --git a/assets/node_modules/lodash/_createBaseEach.js b/assets/node_modules/lodash/_createBaseEach.js
deleted file mode 100644
index d24fdd1..0000000
--- a/assets/node_modules/lodash/_createBaseEach.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var isArrayLike = require('./isArrayLike');
-
-/**
- * Creates a `baseEach` or `baseEachRight` function.
- *
- * @private
- * @param {Function} eachFunc The function to iterate over a collection.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new base function.
- */
-function createBaseEach(eachFunc, fromRight) {
- return function(collection, iteratee) {
- if (collection == null) {
- return collection;
- }
- if (!isArrayLike(collection)) {
- return eachFunc(collection, iteratee);
- }
- var length = collection.length,
- index = fromRight ? length : -1,
- iterable = Object(collection);
-
- while ((fromRight ? index-- : ++index < length)) {
- if (iteratee(iterable[index], index, iterable) === false) {
- break;
- }
- }
- return collection;
- };
-}
-
-module.exports = createBaseEach;
diff --git a/assets/node_modules/lodash/_createBaseFor.js b/assets/node_modules/lodash/_createBaseFor.js
deleted file mode 100644
index 94cbf29..0000000
--- a/assets/node_modules/lodash/_createBaseFor.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Creates a base function for methods like `_.forIn` and `_.forOwn`.
- *
- * @private
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new base function.
- */
-function createBaseFor(fromRight) {
- return function(object, iteratee, keysFunc) {
- var index = -1,
- iterable = Object(object),
- props = keysFunc(object),
- length = props.length;
-
- while (length--) {
- var key = props[fromRight ? length : ++index];
- if (iteratee(iterable[key], key, iterable) === false) {
- break;
- }
- }
- return object;
- };
-}
-
-module.exports = createBaseFor;
diff --git a/assets/node_modules/lodash/_createBind.js b/assets/node_modules/lodash/_createBind.js
deleted file mode 100644
index 07cb99f..0000000
--- a/assets/node_modules/lodash/_createBind.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var createCtor = require('./_createCtor'),
- root = require('./_root');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1;
-
-/**
- * Creates a function that wraps `func` to invoke it with the optional `this`
- * binding of `thisArg`.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {*} [thisArg] The `this` binding of `func`.
- * @returns {Function} Returns the new wrapped function.
- */
-function createBind(func, bitmask, thisArg) {
- var isBind = bitmask & WRAP_BIND_FLAG,
- Ctor = createCtor(func);
-
- function wrapper() {
- var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
- return fn.apply(isBind ? thisArg : this, arguments);
- }
- return wrapper;
-}
-
-module.exports = createBind;
diff --git a/assets/node_modules/lodash/_createCaseFirst.js b/assets/node_modules/lodash/_createCaseFirst.js
deleted file mode 100644
index fe8ea48..0000000
--- a/assets/node_modules/lodash/_createCaseFirst.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var castSlice = require('./_castSlice'),
- hasUnicode = require('./_hasUnicode'),
- stringToArray = require('./_stringToArray'),
- toString = require('./toString');
-
-/**
- * Creates a function like `_.lowerFirst`.
- *
- * @private
- * @param {string} methodName The name of the `String` case method to use.
- * @returns {Function} Returns the new case function.
- */
-function createCaseFirst(methodName) {
- return function(string) {
- string = toString(string);
-
- var strSymbols = hasUnicode(string)
- ? stringToArray(string)
- : undefined;
-
- var chr = strSymbols
- ? strSymbols[0]
- : string.charAt(0);
-
- var trailing = strSymbols
- ? castSlice(strSymbols, 1).join('')
- : string.slice(1);
-
- return chr[methodName]() + trailing;
- };
-}
-
-module.exports = createCaseFirst;
diff --git a/assets/node_modules/lodash/_createCompounder.js b/assets/node_modules/lodash/_createCompounder.js
deleted file mode 100644
index 8d4cee2..0000000
--- a/assets/node_modules/lodash/_createCompounder.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var arrayReduce = require('./_arrayReduce'),
- deburr = require('./deburr'),
- words = require('./words');
-
-/** Used to compose unicode capture groups. */
-var rsApos = "['\u2019]";
-
-/** Used to match apostrophes. */
-var reApos = RegExp(rsApos, 'g');
-
-/**
- * Creates a function like `_.camelCase`.
- *
- * @private
- * @param {Function} callback The function to combine each word.
- * @returns {Function} Returns the new compounder function.
- */
-function createCompounder(callback) {
- return function(string) {
- return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
- };
-}
-
-module.exports = createCompounder;
diff --git a/assets/node_modules/lodash/_createCtor.js b/assets/node_modules/lodash/_createCtor.js
deleted file mode 100644
index 9047aa5..0000000
--- a/assets/node_modules/lodash/_createCtor.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var baseCreate = require('./_baseCreate'),
- isObject = require('./isObject');
-
-/**
- * Creates a function that produces an instance of `Ctor` regardless of
- * whether it was invoked as part of a `new` expression or by `call` or `apply`.
- *
- * @private
- * @param {Function} Ctor The constructor to wrap.
- * @returns {Function} Returns the new wrapped function.
- */
-function createCtor(Ctor) {
- return function() {
- // Use a `switch` statement to work with class constructors. See
- // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
- // for more details.
- var args = arguments;
- switch (args.length) {
- case 0: return new Ctor;
- case 1: return new Ctor(args[0]);
- case 2: return new Ctor(args[0], args[1]);
- case 3: return new Ctor(args[0], args[1], args[2]);
- case 4: return new Ctor(args[0], args[1], args[2], args[3]);
- case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
- case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
- case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
- }
- var thisBinding = baseCreate(Ctor.prototype),
- result = Ctor.apply(thisBinding, args);
-
- // Mimic the constructor's `return` behavior.
- // See https://es5.github.io/#x13.2.2 for more details.
- return isObject(result) ? result : thisBinding;
- };
-}
-
-module.exports = createCtor;
diff --git a/assets/node_modules/lodash/_createCurry.js b/assets/node_modules/lodash/_createCurry.js
deleted file mode 100644
index f06c2cd..0000000
--- a/assets/node_modules/lodash/_createCurry.js
+++ /dev/null
@@ -1,46 +0,0 @@
-var apply = require('./_apply'),
- createCtor = require('./_createCtor'),
- createHybrid = require('./_createHybrid'),
- createRecurry = require('./_createRecurry'),
- getHolder = require('./_getHolder'),
- replaceHolders = require('./_replaceHolders'),
- root = require('./_root');
-
-/**
- * Creates a function that wraps `func` to enable currying.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {number} arity The arity of `func`.
- * @returns {Function} Returns the new wrapped function.
- */
-function createCurry(func, bitmask, arity) {
- var Ctor = createCtor(func);
-
- function wrapper() {
- var length = arguments.length,
- args = Array(length),
- index = length,
- placeholder = getHolder(wrapper);
-
- while (index--) {
- args[index] = arguments[index];
- }
- var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
- ? []
- : replaceHolders(args, placeholder);
-
- length -= holders.length;
- if (length < arity) {
- return createRecurry(
- func, bitmask, createHybrid, wrapper.placeholder, undefined,
- args, holders, undefined, undefined, arity - length);
- }
- var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
- return apply(fn, this, args);
- }
- return wrapper;
-}
-
-module.exports = createCurry;
diff --git a/assets/node_modules/lodash/_createFind.js b/assets/node_modules/lodash/_createFind.js
deleted file mode 100644
index 8859ff8..0000000
--- a/assets/node_modules/lodash/_createFind.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var baseIteratee = require('./_baseIteratee'),
- isArrayLike = require('./isArrayLike'),
- keys = require('./keys');
-
-/**
- * Creates a `_.find` or `_.findLast` function.
- *
- * @private
- * @param {Function} findIndexFunc The function to find the collection index.
- * @returns {Function} Returns the new find function.
- */
-function createFind(findIndexFunc) {
- return function(collection, predicate, fromIndex) {
- var iterable = Object(collection);
- if (!isArrayLike(collection)) {
- var iteratee = baseIteratee(predicate, 3);
- collection = keys(collection);
- predicate = function(key) { return iteratee(iterable[key], key, iterable); };
- }
- var index = findIndexFunc(collection, predicate, fromIndex);
- return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
- };
-}
-
-module.exports = createFind;
diff --git a/assets/node_modules/lodash/_createFlow.js b/assets/node_modules/lodash/_createFlow.js
deleted file mode 100644
index baaddbf..0000000
--- a/assets/node_modules/lodash/_createFlow.js
+++ /dev/null
@@ -1,78 +0,0 @@
-var LodashWrapper = require('./_LodashWrapper'),
- flatRest = require('./_flatRest'),
- getData = require('./_getData'),
- getFuncName = require('./_getFuncName'),
- isArray = require('./isArray'),
- isLaziable = require('./_isLaziable');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_CURRY_FLAG = 8,
- WRAP_PARTIAL_FLAG = 32,
- WRAP_ARY_FLAG = 128,
- WRAP_REARG_FLAG = 256;
-
-/**
- * Creates a `_.flow` or `_.flowRight` function.
- *
- * @private
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new flow function.
- */
-function createFlow(fromRight) {
- return flatRest(function(funcs) {
- var length = funcs.length,
- index = length,
- prereq = LodashWrapper.prototype.thru;
-
- if (fromRight) {
- funcs.reverse();
- }
- while (index--) {
- var func = funcs[index];
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
- var wrapper = new LodashWrapper([], true);
- }
- }
- index = wrapper ? index : length;
- while (++index < length) {
- func = funcs[index];
-
- var funcName = getFuncName(func),
- data = funcName == 'wrapper' ? getData(func) : undefined;
-
- if (data && isLaziable(data[0]) &&
- data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
- !data[4].length && data[9] == 1
- ) {
- wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
- } else {
- wrapper = (func.length == 1 && isLaziable(func))
- ? wrapper[funcName]()
- : wrapper.thru(func);
- }
- }
- return function() {
- var args = arguments,
- value = args[0];
-
- if (wrapper && args.length == 1 && isArray(value)) {
- return wrapper.plant(value).value();
- }
- var index = 0,
- result = length ? funcs[index].apply(this, args) : value;
-
- while (++index < length) {
- result = funcs[index].call(this, result);
- }
- return result;
- };
- });
-}
-
-module.exports = createFlow;
diff --git a/assets/node_modules/lodash/_createHybrid.js b/assets/node_modules/lodash/_createHybrid.js
deleted file mode 100644
index b671bd1..0000000
--- a/assets/node_modules/lodash/_createHybrid.js
+++ /dev/null
@@ -1,92 +0,0 @@
-var composeArgs = require('./_composeArgs'),
- composeArgsRight = require('./_composeArgsRight'),
- countHolders = require('./_countHolders'),
- createCtor = require('./_createCtor'),
- createRecurry = require('./_createRecurry'),
- getHolder = require('./_getHolder'),
- reorder = require('./_reorder'),
- replaceHolders = require('./_replaceHolders'),
- root = require('./_root');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1,
- WRAP_BIND_KEY_FLAG = 2,
- WRAP_CURRY_FLAG = 8,
- WRAP_CURRY_RIGHT_FLAG = 16,
- WRAP_ARY_FLAG = 128,
- WRAP_FLIP_FLAG = 512;
-
-/**
- * Creates a function that wraps `func` to invoke it with optional `this`
- * binding of `thisArg`, partial application, and currying.
- *
- * @private
- * @param {Function|string} func The function or method name to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {*} [thisArg] The `this` binding of `func`.
- * @param {Array} [partials] The arguments to prepend to those provided to
- * the new function.
- * @param {Array} [holders] The `partials` placeholder indexes.
- * @param {Array} [partialsRight] The arguments to append to those provided
- * to the new function.
- * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
- * @param {Array} [argPos] The argument positions of the new function.
- * @param {number} [ary] The arity cap of `func`.
- * @param {number} [arity] The arity of `func`.
- * @returns {Function} Returns the new wrapped function.
- */
-function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
- var isAry = bitmask & WRAP_ARY_FLAG,
- isBind = bitmask & WRAP_BIND_FLAG,
- isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
- isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
- isFlip = bitmask & WRAP_FLIP_FLAG,
- Ctor = isBindKey ? undefined : createCtor(func);
-
- function wrapper() {
- var length = arguments.length,
- args = Array(length),
- index = length;
-
- while (index--) {
- args[index] = arguments[index];
- }
- if (isCurried) {
- var placeholder = getHolder(wrapper),
- holdersCount = countHolders(args, placeholder);
- }
- if (partials) {
- args = composeArgs(args, partials, holders, isCurried);
- }
- if (partialsRight) {
- args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
- }
- length -= holdersCount;
- if (isCurried && length < arity) {
- var newHolders = replaceHolders(args, placeholder);
- return createRecurry(
- func, bitmask, createHybrid, wrapper.placeholder, thisArg,
- args, newHolders, argPos, ary, arity - length
- );
- }
- var thisBinding = isBind ? thisArg : this,
- fn = isBindKey ? thisBinding[func] : func;
-
- length = args.length;
- if (argPos) {
- args = reorder(args, argPos);
- } else if (isFlip && length > 1) {
- args.reverse();
- }
- if (isAry && ary < length) {
- args.length = ary;
- }
- if (this && this !== root && this instanceof wrapper) {
- fn = Ctor || createCtor(fn);
- }
- return fn.apply(thisBinding, args);
- }
- return wrapper;
-}
-
-module.exports = createHybrid;
diff --git a/assets/node_modules/lodash/_createInverter.js b/assets/node_modules/lodash/_createInverter.js
deleted file mode 100644
index 6c0c562..0000000
--- a/assets/node_modules/lodash/_createInverter.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var baseInverter = require('./_baseInverter');
-
-/**
- * Creates a function like `_.invertBy`.
- *
- * @private
- * @param {Function} setter The function to set accumulator values.
- * @param {Function} toIteratee The function to resolve iteratees.
- * @returns {Function} Returns the new inverter function.
- */
-function createInverter(setter, toIteratee) {
- return function(object, iteratee) {
- return baseInverter(object, setter, toIteratee(iteratee), {});
- };
-}
-
-module.exports = createInverter;
diff --git a/assets/node_modules/lodash/_createMathOperation.js b/assets/node_modules/lodash/_createMathOperation.js
deleted file mode 100644
index f1e238a..0000000
--- a/assets/node_modules/lodash/_createMathOperation.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var baseToNumber = require('./_baseToNumber'),
- baseToString = require('./_baseToString');
-
-/**
- * Creates a function that performs a mathematical operation on two values.
- *
- * @private
- * @param {Function} operator The function to perform the operation.
- * @param {number} [defaultValue] The value used for `undefined` arguments.
- * @returns {Function} Returns the new mathematical operation function.
- */
-function createMathOperation(operator, defaultValue) {
- return function(value, other) {
- var result;
- if (value === undefined && other === undefined) {
- return defaultValue;
- }
- if (value !== undefined) {
- result = value;
- }
- if (other !== undefined) {
- if (result === undefined) {
- return other;
- }
- if (typeof value == 'string' || typeof other == 'string') {
- value = baseToString(value);
- other = baseToString(other);
- } else {
- value = baseToNumber(value);
- other = baseToNumber(other);
- }
- result = operator(value, other);
- }
- return result;
- };
-}
-
-module.exports = createMathOperation;
diff --git a/assets/node_modules/lodash/_createOver.js b/assets/node_modules/lodash/_createOver.js
deleted file mode 100644
index 3b94551..0000000
--- a/assets/node_modules/lodash/_createOver.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var apply = require('./_apply'),
- arrayMap = require('./_arrayMap'),
- baseIteratee = require('./_baseIteratee'),
- baseRest = require('./_baseRest'),
- baseUnary = require('./_baseUnary'),
- flatRest = require('./_flatRest');
-
-/**
- * Creates a function like `_.over`.
- *
- * @private
- * @param {Function} arrayFunc The function to iterate over iteratees.
- * @returns {Function} Returns the new over function.
- */
-function createOver(arrayFunc) {
- return flatRest(function(iteratees) {
- iteratees = arrayMap(iteratees, baseUnary(baseIteratee));
- return baseRest(function(args) {
- var thisArg = this;
- return arrayFunc(iteratees, function(iteratee) {
- return apply(iteratee, thisArg, args);
- });
- });
- });
-}
-
-module.exports = createOver;
diff --git a/assets/node_modules/lodash/_createPadding.js b/assets/node_modules/lodash/_createPadding.js
deleted file mode 100644
index 2124612..0000000
--- a/assets/node_modules/lodash/_createPadding.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var baseRepeat = require('./_baseRepeat'),
- baseToString = require('./_baseToString'),
- castSlice = require('./_castSlice'),
- hasUnicode = require('./_hasUnicode'),
- stringSize = require('./_stringSize'),
- stringToArray = require('./_stringToArray');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeCeil = Math.ceil;
-
-/**
- * Creates the padding for `string` based on `length`. The `chars` string
- * is truncated if the number of characters exceeds `length`.
- *
- * @private
- * @param {number} length The padding length.
- * @param {string} [chars=' '] The string used as padding.
- * @returns {string} Returns the padding for `string`.
- */
-function createPadding(length, chars) {
- chars = chars === undefined ? ' ' : baseToString(chars);
-
- var charsLength = chars.length;
- if (charsLength < 2) {
- return charsLength ? baseRepeat(chars, length) : chars;
- }
- var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
- return hasUnicode(chars)
- ? castSlice(stringToArray(result), 0, length).join('')
- : result.slice(0, length);
-}
-
-module.exports = createPadding;
diff --git a/assets/node_modules/lodash/_createPartial.js b/assets/node_modules/lodash/_createPartial.js
deleted file mode 100644
index e16c248..0000000
--- a/assets/node_modules/lodash/_createPartial.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var apply = require('./_apply'),
- createCtor = require('./_createCtor'),
- root = require('./_root');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1;
-
-/**
- * Creates a function that wraps `func` to invoke it with the `this` binding
- * of `thisArg` and `partials` prepended to the arguments it receives.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {Array} partials The arguments to prepend to those provided to
- * the new function.
- * @returns {Function} Returns the new wrapped function.
- */
-function createPartial(func, bitmask, thisArg, partials) {
- var isBind = bitmask & WRAP_BIND_FLAG,
- Ctor = createCtor(func);
-
- function wrapper() {
- var argsIndex = -1,
- argsLength = arguments.length,
- leftIndex = -1,
- leftLength = partials.length,
- args = Array(leftLength + argsLength),
- fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
-
- while (++leftIndex < leftLength) {
- args[leftIndex] = partials[leftIndex];
- }
- while (argsLength--) {
- args[leftIndex++] = arguments[++argsIndex];
- }
- return apply(fn, isBind ? thisArg : this, args);
- }
- return wrapper;
-}
-
-module.exports = createPartial;
diff --git a/assets/node_modules/lodash/_createRange.js b/assets/node_modules/lodash/_createRange.js
deleted file mode 100644
index 9f52c77..0000000
--- a/assets/node_modules/lodash/_createRange.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var baseRange = require('./_baseRange'),
- isIterateeCall = require('./_isIterateeCall'),
- toFinite = require('./toFinite');
-
-/**
- * Creates a `_.range` or `_.rangeRight` function.
- *
- * @private
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new range function.
- */
-function createRange(fromRight) {
- return function(start, end, step) {
- if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
- end = step = undefined;
- }
- // Ensure the sign of `-0` is preserved.
- start = toFinite(start);
- if (end === undefined) {
- end = start;
- start = 0;
- } else {
- end = toFinite(end);
- }
- step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
- return baseRange(start, end, step, fromRight);
- };
-}
-
-module.exports = createRange;
diff --git a/assets/node_modules/lodash/_createRecurry.js b/assets/node_modules/lodash/_createRecurry.js
deleted file mode 100644
index eb29fb2..0000000
--- a/assets/node_modules/lodash/_createRecurry.js
+++ /dev/null
@@ -1,56 +0,0 @@
-var isLaziable = require('./_isLaziable'),
- setData = require('./_setData'),
- setWrapToString = require('./_setWrapToString');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1,
- WRAP_BIND_KEY_FLAG = 2,
- WRAP_CURRY_BOUND_FLAG = 4,
- WRAP_CURRY_FLAG = 8,
- WRAP_PARTIAL_FLAG = 32,
- WRAP_PARTIAL_RIGHT_FLAG = 64;
-
-/**
- * Creates a function that wraps `func` to continue currying.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {Function} wrapFunc The function to create the `func` wrapper.
- * @param {*} placeholder The placeholder value.
- * @param {*} [thisArg] The `this` binding of `func`.
- * @param {Array} [partials] The arguments to prepend to those provided to
- * the new function.
- * @param {Array} [holders] The `partials` placeholder indexes.
- * @param {Array} [argPos] The argument positions of the new function.
- * @param {number} [ary] The arity cap of `func`.
- * @param {number} [arity] The arity of `func`.
- * @returns {Function} Returns the new wrapped function.
- */
-function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
- var isCurry = bitmask & WRAP_CURRY_FLAG,
- newHolders = isCurry ? holders : undefined,
- newHoldersRight = isCurry ? undefined : holders,
- newPartials = isCurry ? partials : undefined,
- newPartialsRight = isCurry ? undefined : partials;
-
- bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
- bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
-
- if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
- bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
- }
- var newData = [
- func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
- newHoldersRight, argPos, ary, arity
- ];
-
- var result = wrapFunc.apply(undefined, newData);
- if (isLaziable(func)) {
- setData(result, newData);
- }
- result.placeholder = placeholder;
- return setWrapToString(result, func, bitmask);
-}
-
-module.exports = createRecurry;
diff --git a/assets/node_modules/lodash/_createRelationalOperation.js b/assets/node_modules/lodash/_createRelationalOperation.js
deleted file mode 100644
index a17c6b5..0000000
--- a/assets/node_modules/lodash/_createRelationalOperation.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var toNumber = require('./toNumber');
-
-/**
- * Creates a function that performs a relational operation on two values.
- *
- * @private
- * @param {Function} operator The function to perform the operation.
- * @returns {Function} Returns the new relational operation function.
- */
-function createRelationalOperation(operator) {
- return function(value, other) {
- if (!(typeof value == 'string' && typeof other == 'string')) {
- value = toNumber(value);
- other = toNumber(other);
- }
- return operator(value, other);
- };
-}
-
-module.exports = createRelationalOperation;
diff --git a/assets/node_modules/lodash/_createRound.js b/assets/node_modules/lodash/_createRound.js
deleted file mode 100644
index 88be5df..0000000
--- a/assets/node_modules/lodash/_createRound.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var root = require('./_root'),
- toInteger = require('./toInteger'),
- toNumber = require('./toNumber'),
- toString = require('./toString');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeIsFinite = root.isFinite,
- nativeMin = Math.min;
-
-/**
- * Creates a function like `_.round`.
- *
- * @private
- * @param {string} methodName The name of the `Math` method to use when rounding.
- * @returns {Function} Returns the new round function.
- */
-function createRound(methodName) {
- var func = Math[methodName];
- return function(number, precision) {
- number = toNumber(number);
- precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
- if (precision && nativeIsFinite(number)) {
- // Shift with exponential notation to avoid floating-point issues.
- // See [MDN](https://mdn.io/round#Examples) for more details.
- var pair = (toString(number) + 'e').split('e'),
- value = func(pair[0] + 'e' + (+pair[1] + precision));
-
- pair = (toString(value) + 'e').split('e');
- return +(pair[0] + 'e' + (+pair[1] - precision));
- }
- return func(number);
- };
-}
-
-module.exports = createRound;
diff --git a/assets/node_modules/lodash/_createSet.js b/assets/node_modules/lodash/_createSet.js
deleted file mode 100644
index 0f644ee..0000000
--- a/assets/node_modules/lodash/_createSet.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var Set = require('./_Set'),
- noop = require('./noop'),
- setToArray = require('./_setToArray');
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
-
-/**
- * Creates a set object of `values`.
- *
- * @private
- * @param {Array} values The values to add to the set.
- * @returns {Object} Returns the new set.
- */
-var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
- return new Set(values);
-};
-
-module.exports = createSet;
diff --git a/assets/node_modules/lodash/_createToPairs.js b/assets/node_modules/lodash/_createToPairs.js
deleted file mode 100644
index 568417a..0000000
--- a/assets/node_modules/lodash/_createToPairs.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var baseToPairs = require('./_baseToPairs'),
- getTag = require('./_getTag'),
- mapToArray = require('./_mapToArray'),
- setToPairs = require('./_setToPairs');
-
-/** `Object#toString` result references. */
-var mapTag = '[object Map]',
- setTag = '[object Set]';
-
-/**
- * Creates a `_.toPairs` or `_.toPairsIn` function.
- *
- * @private
- * @param {Function} keysFunc The function to get the keys of a given object.
- * @returns {Function} Returns the new pairs function.
- */
-function createToPairs(keysFunc) {
- return function(object) {
- var tag = getTag(object);
- if (tag == mapTag) {
- return mapToArray(object);
- }
- if (tag == setTag) {
- return setToPairs(object);
- }
- return baseToPairs(object, keysFunc(object));
- };
-}
-
-module.exports = createToPairs;
diff --git a/assets/node_modules/lodash/_createWrap.js b/assets/node_modules/lodash/_createWrap.js
deleted file mode 100644
index 33f0633..0000000
--- a/assets/node_modules/lodash/_createWrap.js
+++ /dev/null
@@ -1,106 +0,0 @@
-var baseSetData = require('./_baseSetData'),
- createBind = require('./_createBind'),
- createCurry = require('./_createCurry'),
- createHybrid = require('./_createHybrid'),
- createPartial = require('./_createPartial'),
- getData = require('./_getData'),
- mergeData = require('./_mergeData'),
- setData = require('./_setData'),
- setWrapToString = require('./_setWrapToString'),
- toInteger = require('./toInteger');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1,
- WRAP_BIND_KEY_FLAG = 2,
- WRAP_CURRY_FLAG = 8,
- WRAP_CURRY_RIGHT_FLAG = 16,
- WRAP_PARTIAL_FLAG = 32,
- WRAP_PARTIAL_RIGHT_FLAG = 64;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Creates a function that either curries or invokes `func` with optional
- * `this` binding and partially applied arguments.
- *
- * @private
- * @param {Function|string} func The function or method name to wrap.
- * @param {number} bitmask The bitmask flags.
- * 1 - `_.bind`
- * 2 - `_.bindKey`
- * 4 - `_.curry` or `_.curryRight` of a bound function
- * 8 - `_.curry`
- * 16 - `_.curryRight`
- * 32 - `_.partial`
- * 64 - `_.partialRight`
- * 128 - `_.rearg`
- * 256 - `_.ary`
- * 512 - `_.flip`
- * @param {*} [thisArg] The `this` binding of `func`.
- * @param {Array} [partials] The arguments to be partially applied.
- * @param {Array} [holders] The `partials` placeholder indexes.
- * @param {Array} [argPos] The argument positions of the new function.
- * @param {number} [ary] The arity cap of `func`.
- * @param {number} [arity] The arity of `func`.
- * @returns {Function} Returns the new wrapped function.
- */
-function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
- var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
- if (!isBindKey && typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- var length = partials ? partials.length : 0;
- if (!length) {
- bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
- partials = holders = undefined;
- }
- ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
- arity = arity === undefined ? arity : toInteger(arity);
- length -= holders ? holders.length : 0;
-
- if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
- var partialsRight = partials,
- holdersRight = holders;
-
- partials = holders = undefined;
- }
- var data = isBindKey ? undefined : getData(func);
-
- var newData = [
- func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
- argPos, ary, arity
- ];
-
- if (data) {
- mergeData(newData, data);
- }
- func = newData[0];
- bitmask = newData[1];
- thisArg = newData[2];
- partials = newData[3];
- holders = newData[4];
- arity = newData[9] = newData[9] === undefined
- ? (isBindKey ? 0 : func.length)
- : nativeMax(newData[9] - length, 0);
-
- if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
- bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
- }
- if (!bitmask || bitmask == WRAP_BIND_FLAG) {
- var result = createBind(func, bitmask, thisArg);
- } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
- result = createCurry(func, bitmask, arity);
- } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
- result = createPartial(func, bitmask, thisArg, partials);
- } else {
- result = createHybrid.apply(undefined, newData);
- }
- var setter = data ? baseSetData : setData;
- return setWrapToString(setter(result, newData), func, bitmask);
-}
-
-module.exports = createWrap;
diff --git a/assets/node_modules/lodash/_customDefaultsAssignIn.js b/assets/node_modules/lodash/_customDefaultsAssignIn.js
deleted file mode 100644
index 1f49e6f..0000000
--- a/assets/node_modules/lodash/_customDefaultsAssignIn.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var eq = require('./eq');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
- * of source objects to the destination object for all destination properties
- * that resolve to `undefined`.
- *
- * @private
- * @param {*} objValue The destination value.
- * @param {*} srcValue The source value.
- * @param {string} key The key of the property to assign.
- * @param {Object} object The parent object of `objValue`.
- * @returns {*} Returns the value to assign.
- */
-function customDefaultsAssignIn(objValue, srcValue, key, object) {
- if (objValue === undefined ||
- (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
- return srcValue;
- }
- return objValue;
-}
-
-module.exports = customDefaultsAssignIn;
diff --git a/assets/node_modules/lodash/_customDefaultsMerge.js b/assets/node_modules/lodash/_customDefaultsMerge.js
deleted file mode 100644
index 4cab317..0000000
--- a/assets/node_modules/lodash/_customDefaultsMerge.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var baseMerge = require('./_baseMerge'),
- isObject = require('./isObject');
-
-/**
- * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
- * objects into destination objects that are passed thru.
- *
- * @private
- * @param {*} objValue The destination value.
- * @param {*} srcValue The source value.
- * @param {string} key The key of the property to merge.
- * @param {Object} object The parent object of `objValue`.
- * @param {Object} source The parent object of `srcValue`.
- * @param {Object} [stack] Tracks traversed source values and their merged
- * counterparts.
- * @returns {*} Returns the value to assign.
- */
-function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
- if (isObject(objValue) && isObject(srcValue)) {
- // Recursively merge objects and arrays (susceptible to call stack limits).
- stack.set(srcValue, objValue);
- baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
- stack['delete'](srcValue);
- }
- return objValue;
-}
-
-module.exports = customDefaultsMerge;
diff --git a/assets/node_modules/lodash/_customOmitClone.js b/assets/node_modules/lodash/_customOmitClone.js
deleted file mode 100644
index 968db2e..0000000
--- a/assets/node_modules/lodash/_customOmitClone.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var isPlainObject = require('./isPlainObject');
-
-/**
- * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
- * objects.
- *
- * @private
- * @param {*} value The value to inspect.
- * @param {string} key The key of the property to inspect.
- * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
- */
-function customOmitClone(value) {
- return isPlainObject(value) ? undefined : value;
-}
-
-module.exports = customOmitClone;
diff --git a/assets/node_modules/lodash/_deburrLetter.js b/assets/node_modules/lodash/_deburrLetter.js
deleted file mode 100644
index 3e531ed..0000000
--- a/assets/node_modules/lodash/_deburrLetter.js
+++ /dev/null
@@ -1,71 +0,0 @@
-var basePropertyOf = require('./_basePropertyOf');
-
-/** Used to map Latin Unicode letters to basic Latin letters. */
-var deburredLetters = {
- // Latin-1 Supplement block.
- '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
- '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
- '\xc7': 'C', '\xe7': 'c',
- '\xd0': 'D', '\xf0': 'd',
- '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
- '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
- '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
- '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i',
- '\xd1': 'N', '\xf1': 'n',
- '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
- '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
- '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
- '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
- '\xdd': 'Y', '\xfd': 'y', '\xff': 'y',
- '\xc6': 'Ae', '\xe6': 'ae',
- '\xde': 'Th', '\xfe': 'th',
- '\xdf': 'ss',
- // Latin Extended-A block.
- '\u0100': 'A', '\u0102': 'A', '\u0104': 'A',
- '\u0101': 'a', '\u0103': 'a', '\u0105': 'a',
- '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
- '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
- '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
- '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
- '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
- '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
- '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
- '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
- '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
- '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
- '\u0134': 'J', '\u0135': 'j',
- '\u0136': 'K', '\u0137': 'k', '\u0138': 'k',
- '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
- '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
- '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
- '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
- '\u014c': 'O', '\u014e': 'O', '\u0150': 'O',
- '\u014d': 'o', '\u014f': 'o', '\u0151': 'o',
- '\u0154': 'R', '\u0156': 'R', '\u0158': 'R',
- '\u0155': 'r', '\u0157': 'r', '\u0159': 'r',
- '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
- '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's',
- '\u0162': 'T', '\u0164': 'T', '\u0166': 'T',
- '\u0163': 't', '\u0165': 't', '\u0167': 't',
- '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
- '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
- '\u0174': 'W', '\u0175': 'w',
- '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y',
- '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z',
- '\u017a': 'z', '\u017c': 'z', '\u017e': 'z',
- '\u0132': 'IJ', '\u0133': 'ij',
- '\u0152': 'Oe', '\u0153': 'oe',
- '\u0149': "'n", '\u017f': 's'
-};
-
-/**
- * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
- * letters to basic Latin letters.
- *
- * @private
- * @param {string} letter The matched letter to deburr.
- * @returns {string} Returns the deburred letter.
- */
-var deburrLetter = basePropertyOf(deburredLetters);
-
-module.exports = deburrLetter;
diff --git a/assets/node_modules/lodash/_defineProperty.js b/assets/node_modules/lodash/_defineProperty.js
deleted file mode 100644
index b6116d9..0000000
--- a/assets/node_modules/lodash/_defineProperty.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var getNative = require('./_getNative');
-
-var defineProperty = (function() {
- try {
- var func = getNative(Object, 'defineProperty');
- func({}, '', {});
- return func;
- } catch (e) {}
-}());
-
-module.exports = defineProperty;
diff --git a/assets/node_modules/lodash/_equalArrays.js b/assets/node_modules/lodash/_equalArrays.js
deleted file mode 100644
index f6a3b7c..0000000
--- a/assets/node_modules/lodash/_equalArrays.js
+++ /dev/null
@@ -1,83 +0,0 @@
-var SetCache = require('./_SetCache'),
- arraySome = require('./_arraySome'),
- cacheHas = require('./_cacheHas');
-
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1,
- COMPARE_UNORDERED_FLAG = 2;
-
-/**
- * A specialized version of `baseIsEqualDeep` for arrays with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Array} array The array to compare.
- * @param {Array} other The other array to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `array` and `other` objects.
- * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
- */
-function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
- var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
- arrLength = array.length,
- othLength = other.length;
-
- if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
- return false;
- }
- // Assume cyclic values are equal.
- var stacked = stack.get(array);
- if (stacked && stack.get(other)) {
- return stacked == other;
- }
- var index = -1,
- result = true,
- seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
-
- stack.set(array, other);
- stack.set(other, array);
-
- // Ignore non-index properties.
- while (++index < arrLength) {
- var arrValue = array[index],
- othValue = other[index];
-
- if (customizer) {
- var compared = isPartial
- ? customizer(othValue, arrValue, index, other, array, stack)
- : customizer(arrValue, othValue, index, array, other, stack);
- }
- if (compared !== undefined) {
- if (compared) {
- continue;
- }
- result = false;
- break;
- }
- // Recursively compare arrays (susceptible to call stack limits).
- if (seen) {
- if (!arraySome(other, function(othValue, othIndex) {
- if (!cacheHas(seen, othIndex) &&
- (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
- return seen.push(othIndex);
- }
- })) {
- result = false;
- break;
- }
- } else if (!(
- arrValue === othValue ||
- equalFunc(arrValue, othValue, bitmask, customizer, stack)
- )) {
- result = false;
- break;
- }
- }
- stack['delete'](array);
- stack['delete'](other);
- return result;
-}
-
-module.exports = equalArrays;
diff --git a/assets/node_modules/lodash/_equalByTag.js b/assets/node_modules/lodash/_equalByTag.js
deleted file mode 100644
index 71919e8..0000000
--- a/assets/node_modules/lodash/_equalByTag.js
+++ /dev/null
@@ -1,112 +0,0 @@
-var Symbol = require('./_Symbol'),
- Uint8Array = require('./_Uint8Array'),
- eq = require('./eq'),
- equalArrays = require('./_equalArrays'),
- mapToArray = require('./_mapToArray'),
- setToArray = require('./_setToArray');
-
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1,
- COMPARE_UNORDERED_FLAG = 2;
-
-/** `Object#toString` result references. */
-var boolTag = '[object Boolean]',
- dateTag = '[object Date]',
- errorTag = '[object Error]',
- mapTag = '[object Map]',
- numberTag = '[object Number]',
- regexpTag = '[object RegExp]',
- setTag = '[object Set]',
- stringTag = '[object String]',
- symbolTag = '[object Symbol]';
-
-var arrayBufferTag = '[object ArrayBuffer]',
- dataViewTag = '[object DataView]';
-
-/** Used to convert symbols to primitives and strings. */
-var symbolProto = Symbol ? Symbol.prototype : undefined,
- symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
-
-/**
- * A specialized version of `baseIsEqualDeep` for comparing objects of
- * the same `toStringTag`.
- *
- * **Note:** This function only supports comparing values with tags of
- * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {string} tag The `toStringTag` of the objects to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
-function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
- switch (tag) {
- case dataViewTag:
- if ((object.byteLength != other.byteLength) ||
- (object.byteOffset != other.byteOffset)) {
- return false;
- }
- object = object.buffer;
- other = other.buffer;
-
- case arrayBufferTag:
- if ((object.byteLength != other.byteLength) ||
- !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
- return false;
- }
- return true;
-
- case boolTag:
- case dateTag:
- case numberTag:
- // Coerce booleans to `1` or `0` and dates to milliseconds.
- // Invalid dates are coerced to `NaN`.
- return eq(+object, +other);
-
- case errorTag:
- return object.name == other.name && object.message == other.message;
-
- case regexpTag:
- case stringTag:
- // Coerce regexes to strings and treat strings, primitives and objects,
- // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
- // for more details.
- return object == (other + '');
-
- case mapTag:
- var convert = mapToArray;
-
- case setTag:
- var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
- convert || (convert = setToArray);
-
- if (object.size != other.size && !isPartial) {
- return false;
- }
- // Assume cyclic values are equal.
- var stacked = stack.get(object);
- if (stacked) {
- return stacked == other;
- }
- bitmask |= COMPARE_UNORDERED_FLAG;
-
- // Recursively compare objects (susceptible to call stack limits).
- stack.set(object, other);
- var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
- stack['delete'](object);
- return result;
-
- case symbolTag:
- if (symbolValueOf) {
- return symbolValueOf.call(object) == symbolValueOf.call(other);
- }
- }
- return false;
-}
-
-module.exports = equalByTag;
diff --git a/assets/node_modules/lodash/_equalObjects.js b/assets/node_modules/lodash/_equalObjects.js
deleted file mode 100644
index 17421f3..0000000
--- a/assets/node_modules/lodash/_equalObjects.js
+++ /dev/null
@@ -1,89 +0,0 @@
-var getAllKeys = require('./_getAllKeys');
-
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1;
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * A specialized version of `baseIsEqualDeep` for objects with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
-function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
- var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
- objProps = getAllKeys(object),
- objLength = objProps.length,
- othProps = getAllKeys(other),
- othLength = othProps.length;
-
- if (objLength != othLength && !isPartial) {
- return false;
- }
- var index = objLength;
- while (index--) {
- var key = objProps[index];
- if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
- return false;
- }
- }
- // Assume cyclic values are equal.
- var stacked = stack.get(object);
- if (stacked && stack.get(other)) {
- return stacked == other;
- }
- var result = true;
- stack.set(object, other);
- stack.set(other, object);
-
- var skipCtor = isPartial;
- while (++index < objLength) {
- key = objProps[index];
- var objValue = object[key],
- othValue = other[key];
-
- if (customizer) {
- var compared = isPartial
- ? customizer(othValue, objValue, key, other, object, stack)
- : customizer(objValue, othValue, key, object, other, stack);
- }
- // Recursively compare objects (susceptible to call stack limits).
- if (!(compared === undefined
- ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
- : compared
- )) {
- result = false;
- break;
- }
- skipCtor || (skipCtor = key == 'constructor');
- }
- if (result && !skipCtor) {
- var objCtor = object.constructor,
- othCtor = other.constructor;
-
- // Non `Object` object instances with different constructors are not equal.
- if (objCtor != othCtor &&
- ('constructor' in object && 'constructor' in other) &&
- !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
- typeof othCtor == 'function' && othCtor instanceof othCtor)) {
- result = false;
- }
- }
- stack['delete'](object);
- stack['delete'](other);
- return result;
-}
-
-module.exports = equalObjects;
diff --git a/assets/node_modules/lodash/_escapeHtmlChar.js b/assets/node_modules/lodash/_escapeHtmlChar.js
deleted file mode 100644
index 7ca68ee..0000000
--- a/assets/node_modules/lodash/_escapeHtmlChar.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var basePropertyOf = require('./_basePropertyOf');
-
-/** Used to map characters to HTML entities. */
-var htmlEscapes = {
- '&': '&amp;',
- '<': '&lt;',
- '>': '&gt;',
- '"': '&quot;',
- "'": '&#39;'
-};
-
-/**
- * Used by `_.escape` to convert characters to HTML entities.
- *
- * @private
- * @param {string} chr The matched character to escape.
- * @returns {string} Returns the escaped character.
- */
-var escapeHtmlChar = basePropertyOf(htmlEscapes);
-
-module.exports = escapeHtmlChar;
diff --git a/assets/node_modules/lodash/_escapeStringChar.js b/assets/node_modules/lodash/_escapeStringChar.js
deleted file mode 100644
index 44eca96..0000000
--- a/assets/node_modules/lodash/_escapeStringChar.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/** Used to escape characters for inclusion in compiled string literals. */
-var stringEscapes = {
- '\\': '\\',
- "'": "'",
- '\n': 'n',
- '\r': 'r',
- '\u2028': 'u2028',
- '\u2029': 'u2029'
-};
-
-/**
- * Used by `_.template` to escape characters for inclusion in compiled string literals.
- *
- * @private
- * @param {string} chr The matched character to escape.
- * @returns {string} Returns the escaped character.
- */
-function escapeStringChar(chr) {
- return '\\' + stringEscapes[chr];
-}
-
-module.exports = escapeStringChar;
diff --git a/assets/node_modules/lodash/_flatRest.js b/assets/node_modules/lodash/_flatRest.js
deleted file mode 100644
index 94ab6cc..0000000
--- a/assets/node_modules/lodash/_flatRest.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var flatten = require('./flatten'),
- overRest = require('./_overRest'),
- setToString = require('./_setToString');
-
-/**
- * A specialized version of `baseRest` which flattens the rest array.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @returns {Function} Returns the new function.
- */
-function flatRest(func) {
- return setToString(overRest(func, undefined, flatten), func + '');
-}
-
-module.exports = flatRest;
diff --git a/assets/node_modules/lodash/_freeGlobal.js b/assets/node_modules/lodash/_freeGlobal.js
deleted file mode 100644
index bbec998..0000000
--- a/assets/node_modules/lodash/_freeGlobal.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/** Detect free variable `global` from Node.js. */
-var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
-module.exports = freeGlobal;
diff --git a/assets/node_modules/lodash/_getAllKeys.js b/assets/node_modules/lodash/_getAllKeys.js
deleted file mode 100644
index a9ce699..0000000
--- a/assets/node_modules/lodash/_getAllKeys.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var baseGetAllKeys = require('./_baseGetAllKeys'),
- getSymbols = require('./_getSymbols'),
- keys = require('./keys');
-
-/**
- * Creates an array of own enumerable property names and symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names and symbols.
- */
-function getAllKeys(object) {
- return baseGetAllKeys(object, keys, getSymbols);
-}
-
-module.exports = getAllKeys;
diff --git a/assets/node_modules/lodash/_getAllKeysIn.js b/assets/node_modules/lodash/_getAllKeysIn.js
deleted file mode 100644
index 1b46678..0000000
--- a/assets/node_modules/lodash/_getAllKeysIn.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var baseGetAllKeys = require('./_baseGetAllKeys'),
- getSymbolsIn = require('./_getSymbolsIn'),
- keysIn = require('./keysIn');
-
-/**
- * Creates an array of own and inherited enumerable property names and
- * symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names and symbols.
- */
-function getAllKeysIn(object) {
- return baseGetAllKeys(object, keysIn, getSymbolsIn);
-}
-
-module.exports = getAllKeysIn;
diff --git a/assets/node_modules/lodash/_getData.js b/assets/node_modules/lodash/_getData.js
deleted file mode 100644
index a1fe7b7..0000000
--- a/assets/node_modules/lodash/_getData.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var metaMap = require('./_metaMap'),
- noop = require('./noop');
-
-/**
- * Gets metadata for `func`.
- *
- * @private
- * @param {Function} func The function to query.
- * @returns {*} Returns the metadata for `func`.
- */
-var getData = !metaMap ? noop : function(func) {
- return metaMap.get(func);
-};
-
-module.exports = getData;
diff --git a/assets/node_modules/lodash/_getFuncName.js b/assets/node_modules/lodash/_getFuncName.js
deleted file mode 100644
index 21e15b3..0000000
--- a/assets/node_modules/lodash/_getFuncName.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var realNames = require('./_realNames');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Gets the name of `func`.
- *
- * @private
- * @param {Function} func The function to query.
- * @returns {string} Returns the function name.
- */
-function getFuncName(func) {
- var result = (func.name + ''),
- array = realNames[result],
- length = hasOwnProperty.call(realNames, result) ? array.length : 0;
-
- while (length--) {
- var data = array[length],
- otherFunc = data.func;
- if (otherFunc == null || otherFunc == func) {
- return data.name;
- }
- }
- return result;
-}
-
-module.exports = getFuncName;
diff --git a/assets/node_modules/lodash/_getHolder.js b/assets/node_modules/lodash/_getHolder.js
deleted file mode 100644
index 65e94b5..0000000
--- a/assets/node_modules/lodash/_getHolder.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Gets the argument placeholder value for `func`.
- *
- * @private
- * @param {Function} func The function to inspect.
- * @returns {*} Returns the placeholder value.
- */
-function getHolder(func) {
- var object = func;
- return object.placeholder;
-}
-
-module.exports = getHolder;
diff --git a/assets/node_modules/lodash/_getMapData.js b/assets/node_modules/lodash/_getMapData.js
deleted file mode 100644
index 17f6303..0000000
--- a/assets/node_modules/lodash/_getMapData.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var isKeyable = require('./_isKeyable');
-
-/**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */
-function getMapData(map, key) {
- var data = map.__data__;
- return isKeyable(key)
- ? data[typeof key == 'string' ? 'string' : 'hash']
- : data.map;
-}
-
-module.exports = getMapData;
diff --git a/assets/node_modules/lodash/_getMatchData.js b/assets/node_modules/lodash/_getMatchData.js
deleted file mode 100644
index 2cc70f9..0000000
--- a/assets/node_modules/lodash/_getMatchData.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var isStrictComparable = require('./_isStrictComparable'),
- keys = require('./keys');
-
-/**
- * Gets the property names, values, and compare flags of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the match data of `object`.
- */
-function getMatchData(object) {
- var result = keys(object),
- length = result.length;
-
- while (length--) {
- var key = result[length],
- value = object[key];
-
- result[length] = [key, value, isStrictComparable(value)];
- }
- return result;
-}
-
-module.exports = getMatchData;
diff --git a/assets/node_modules/lodash/_getNative.js b/assets/node_modules/lodash/_getNative.js
deleted file mode 100644
index 97a622b..0000000
--- a/assets/node_modules/lodash/_getNative.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var baseIsNative = require('./_baseIsNative'),
- getValue = require('./_getValue');
-
-/**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */
-function getNative(object, key) {
- var value = getValue(object, key);
- return baseIsNative(value) ? value : undefined;
-}
-
-module.exports = getNative;
diff --git a/assets/node_modules/lodash/_getPrototype.js b/assets/node_modules/lodash/_getPrototype.js
deleted file mode 100644
index e808612..0000000
--- a/assets/node_modules/lodash/_getPrototype.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var overArg = require('./_overArg');
-
-/** Built-in value references. */
-var getPrototype = overArg(Object.getPrototypeOf, Object);
-
-module.exports = getPrototype;
diff --git a/assets/node_modules/lodash/_getRawTag.js b/assets/node_modules/lodash/_getRawTag.js
deleted file mode 100644
index 49a95c9..0000000
--- a/assets/node_modules/lodash/_getRawTag.js
+++ /dev/null
@@ -1,46 +0,0 @@
-var Symbol = require('./_Symbol');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var nativeObjectToString = objectProto.toString;
-
-/** Built-in value references. */
-var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
-
-/**
- * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the raw `toStringTag`.
- */
-function getRawTag(value) {
- var isOwn = hasOwnProperty.call(value, symToStringTag),
- tag = value[symToStringTag];
-
- try {
- value[symToStringTag] = undefined;
- var unmasked = true;
- } catch (e) {}
-
- var result = nativeObjectToString.call(value);
- if (unmasked) {
- if (isOwn) {
- value[symToStringTag] = tag;
- } else {
- delete value[symToStringTag];
- }
- }
- return result;
-}
-
-module.exports = getRawTag;
diff --git a/assets/node_modules/lodash/_getSymbols.js b/assets/node_modules/lodash/_getSymbols.js
deleted file mode 100644
index 7d6eafe..0000000
--- a/assets/node_modules/lodash/_getSymbols.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var arrayFilter = require('./_arrayFilter'),
- stubArray = require('./stubArray');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Built-in value references. */
-var propertyIsEnumerable = objectProto.propertyIsEnumerable;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeGetSymbols = Object.getOwnPropertySymbols;
-
-/**
- * Creates an array of the own enumerable symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of symbols.
- */
-var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
- if (object == null) {
- return [];
- }
- object = Object(object);
- return arrayFilter(nativeGetSymbols(object), function(symbol) {
- return propertyIsEnumerable.call(object, symbol);
- });
-};
-
-module.exports = getSymbols;
diff --git a/assets/node_modules/lodash/_getSymbolsIn.js b/assets/node_modules/lodash/_getSymbolsIn.js
deleted file mode 100644
index cec0855..0000000
--- a/assets/node_modules/lodash/_getSymbolsIn.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var arrayPush = require('./_arrayPush'),
- getPrototype = require('./_getPrototype'),
- getSymbols = require('./_getSymbols'),
- stubArray = require('./stubArray');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeGetSymbols = Object.getOwnPropertySymbols;
-
-/**
- * Creates an array of the own and inherited enumerable symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of symbols.
- */
-var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
- var result = [];
- while (object) {
- arrayPush(result, getSymbols(object));
- object = getPrototype(object);
- }
- return result;
-};
-
-module.exports = getSymbolsIn;
diff --git a/assets/node_modules/lodash/_getTag.js b/assets/node_modules/lodash/_getTag.js
deleted file mode 100644
index deaf89d..0000000
--- a/assets/node_modules/lodash/_getTag.js
+++ /dev/null
@@ -1,58 +0,0 @@
-var DataView = require('./_DataView'),
- Map = require('./_Map'),
- Promise = require('./_Promise'),
- Set = require('./_Set'),
- WeakMap = require('./_WeakMap'),
- baseGetTag = require('./_baseGetTag'),
- toSource = require('./_toSource');
-
-/** `Object#toString` result references. */
-var mapTag = '[object Map]',
- objectTag = '[object Object]',
- promiseTag = '[object Promise]',
- setTag = '[object Set]',
- weakMapTag = '[object WeakMap]';
-
-var dataViewTag = '[object DataView]';
-
-/** Used to detect maps, sets, and weakmaps. */
-var dataViewCtorString = toSource(DataView),
- mapCtorString = toSource(Map),
- promiseCtorString = toSource(Promise),
- setCtorString = toSource(Set),
- weakMapCtorString = toSource(WeakMap);
-
-/**
- * Gets the `toStringTag` of `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
-var getTag = baseGetTag;
-
-// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
-if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
- (Map && getTag(new Map) != mapTag) ||
- (Promise && getTag(Promise.resolve()) != promiseTag) ||
- (Set && getTag(new Set) != setTag) ||
- (WeakMap && getTag(new WeakMap) != weakMapTag)) {
- getTag = function(value) {
- var result = baseGetTag(value),
- Ctor = result == objectTag ? value.constructor : undefined,
- ctorString = Ctor ? toSource(Ctor) : '';
-
- if (ctorString) {
- switch (ctorString) {
- case dataViewCtorString: return dataViewTag;
- case mapCtorString: return mapTag;
- case promiseCtorString: return promiseTag;
- case setCtorString: return setTag;
- case weakMapCtorString: return weakMapTag;
- }
- }
- return result;
- };
-}
-
-module.exports = getTag;
diff --git a/assets/node_modules/lodash/_getValue.js b/assets/node_modules/lodash/_getValue.js
deleted file mode 100644
index 5f7d773..0000000
--- a/assets/node_modules/lodash/_getValue.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
-function getValue(object, key) {
- return object == null ? undefined : object[key];
-}
-
-module.exports = getValue;
diff --git a/assets/node_modules/lodash/_getView.js b/assets/node_modules/lodash/_getView.js
deleted file mode 100644
index df1e5d4..0000000
--- a/assets/node_modules/lodash/_getView.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max,
- nativeMin = Math.min;
-
-/**
- * Gets the view, applying any `transforms` to the `start` and `end` positions.
- *
- * @private
- * @param {number} start The start of the view.
- * @param {number} end The end of the view.
- * @param {Array} transforms The transformations to apply to the view.
- * @returns {Object} Returns an object containing the `start` and `end`
- * positions of the view.
- */
-function getView(start, end, transforms) {
- var index = -1,
- length = transforms.length;
-
- while (++index < length) {
- var data = transforms[index],
- size = data.size;
-
- switch (data.type) {
- case 'drop': start += size; break;
- case 'dropRight': end -= size; break;
- case 'take': end = nativeMin(end, start + size); break;
- case 'takeRight': start = nativeMax(start, end - size); break;
- }
- }
- return { 'start': start, 'end': end };
-}
-
-module.exports = getView;
diff --git a/assets/node_modules/lodash/_getWrapDetails.js b/assets/node_modules/lodash/_getWrapDetails.js
deleted file mode 100644
index 3bcc6e4..0000000
--- a/assets/node_modules/lodash/_getWrapDetails.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/** Used to match wrap detail comments. */
-var reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
- reSplitDetails = /,? & /;
-
-/**
- * Extracts wrapper details from the `source` body comment.
- *
- * @private
- * @param {string} source The source to inspect.
- * @returns {Array} Returns the wrapper details.
- */
-function getWrapDetails(source) {
- var match = source.match(reWrapDetails);
- return match ? match[1].split(reSplitDetails) : [];
-}
-
-module.exports = getWrapDetails;
diff --git a/assets/node_modules/lodash/_hasPath.js b/assets/node_modules/lodash/_hasPath.js
deleted file mode 100644
index 93dbde1..0000000
--- a/assets/node_modules/lodash/_hasPath.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var castPath = require('./_castPath'),
- isArguments = require('./isArguments'),
- isArray = require('./isArray'),
- isIndex = require('./_isIndex'),
- isLength = require('./isLength'),
- toKey = require('./_toKey');
-
-/**
- * Checks if `path` exists on `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @param {Function} hasFunc The function to check properties.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- */
-function hasPath(object, path, hasFunc) {
- path = castPath(path, object);
-
- var index = -1,
- length = path.length,
- result = false;
-
- while (++index < length) {
- var key = toKey(path[index]);
- if (!(result = object != null && hasFunc(object, key))) {
- break;
- }
- object = object[key];
- }
- if (result || ++index != length) {
- return result;
- }
- length = object == null ? 0 : object.length;
- return !!length && isLength(length) && isIndex(key, length) &&
- (isArray(object) || isArguments(object));
-}
-
-module.exports = hasPath;
diff --git a/assets/node_modules/lodash/_hasUnicode.js b/assets/node_modules/lodash/_hasUnicode.js
deleted file mode 100644
index cb6ca15..0000000
--- a/assets/node_modules/lodash/_hasUnicode.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/** Used to compose unicode character classes. */
-var rsAstralRange = '\\ud800-\\udfff',
- rsComboMarksRange = '\\u0300-\\u036f',
- reComboHalfMarksRange = '\\ufe20-\\ufe2f',
- rsComboSymbolsRange = '\\u20d0-\\u20ff',
- rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
- rsVarRange = '\\ufe0e\\ufe0f';
-
-/** Used to compose unicode capture groups. */
-var rsZWJ = '\\u200d';
-
-/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
-var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');
-
-/**
- * Checks if `string` contains Unicode symbols.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {boolean} Returns `true` if a symbol is found, else `false`.
- */
-function hasUnicode(string) {
- return reHasUnicode.test(string);
-}
-
-module.exports = hasUnicode;
diff --git a/assets/node_modules/lodash/_hasUnicodeWord.js b/assets/node_modules/lodash/_hasUnicodeWord.js
deleted file mode 100644
index 95d52c4..0000000
--- a/assets/node_modules/lodash/_hasUnicodeWord.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/** Used to detect strings that need a more robust regexp to match words. */
-var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
-
-/**
- * Checks if `string` contains a word composed of Unicode symbols.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {boolean} Returns `true` if a word is found, else `false`.
- */
-function hasUnicodeWord(string) {
- return reHasUnicodeWord.test(string);
-}
-
-module.exports = hasUnicodeWord;
diff --git a/assets/node_modules/lodash/_hashClear.js b/assets/node_modules/lodash/_hashClear.js
deleted file mode 100644
index 5d4b70c..0000000
--- a/assets/node_modules/lodash/_hashClear.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var nativeCreate = require('./_nativeCreate');
-
-/**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
-function hashClear() {
- this.__data__ = nativeCreate ? nativeCreate(null) : {};
- this.size = 0;
-}
-
-module.exports = hashClear;
diff --git a/assets/node_modules/lodash/_hashDelete.js b/assets/node_modules/lodash/_hashDelete.js
deleted file mode 100644
index ea9dabf..0000000
--- a/assets/node_modules/lodash/_hashDelete.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function hashDelete(key) {
- var result = this.has(key) && delete this.__data__[key];
- this.size -= result ? 1 : 0;
- return result;
-}
-
-module.exports = hashDelete;
diff --git a/assets/node_modules/lodash/_hashGet.js b/assets/node_modules/lodash/_hashGet.js
deleted file mode 100644
index 1fc2f34..0000000
--- a/assets/node_modules/lodash/_hashGet.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var nativeCreate = require('./_nativeCreate');
-
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function hashGet(key) {
- var data = this.__data__;
- if (nativeCreate) {
- var result = data[key];
- return result === HASH_UNDEFINED ? undefined : result;
- }
- return hasOwnProperty.call(data, key) ? data[key] : undefined;
-}
-
-module.exports = hashGet;
diff --git a/assets/node_modules/lodash/_hashHas.js b/assets/node_modules/lodash/_hashHas.js
deleted file mode 100644
index 281a551..0000000
--- a/assets/node_modules/lodash/_hashHas.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var nativeCreate = require('./_nativeCreate');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function hashHas(key) {
- var data = this.__data__;
- return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
-}
-
-module.exports = hashHas;
diff --git a/assets/node_modules/lodash/_hashSet.js b/assets/node_modules/lodash/_hashSet.js
deleted file mode 100644
index e105528..0000000
--- a/assets/node_modules/lodash/_hashSet.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var nativeCreate = require('./_nativeCreate');
-
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
-/**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */
-function hashSet(key, value) {
- var data = this.__data__;
- this.size += this.has(key) ? 0 : 1;
- data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
- return this;
-}
-
-module.exports = hashSet;
diff --git a/assets/node_modules/lodash/_initCloneArray.js b/assets/node_modules/lodash/_initCloneArray.js
deleted file mode 100644
index 078c15a..0000000
--- a/assets/node_modules/lodash/_initCloneArray.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Initializes an array clone.
- *
- * @private
- * @param {Array} array The array to clone.
- * @returns {Array} Returns the initialized clone.
- */
-function initCloneArray(array) {
- var length = array.length,
- result = new array.constructor(length);
-
- // Add properties assigned by `RegExp#exec`.
- if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
- result.index = array.index;
- result.input = array.input;
- }
- return result;
-}
-
-module.exports = initCloneArray;
diff --git a/assets/node_modules/lodash/_initCloneByTag.js b/assets/node_modules/lodash/_initCloneByTag.js
deleted file mode 100644
index f69a008..0000000
--- a/assets/node_modules/lodash/_initCloneByTag.js
+++ /dev/null
@@ -1,77 +0,0 @@
-var cloneArrayBuffer = require('./_cloneArrayBuffer'),
- cloneDataView = require('./_cloneDataView'),
- cloneRegExp = require('./_cloneRegExp'),
- cloneSymbol = require('./_cloneSymbol'),
- cloneTypedArray = require('./_cloneTypedArray');
-
-/** `Object#toString` result references. */
-var boolTag = '[object Boolean]',
- dateTag = '[object Date]',
- mapTag = '[object Map]',
- numberTag = '[object Number]',
- regexpTag = '[object RegExp]',
- setTag = '[object Set]',
- stringTag = '[object String]',
- symbolTag = '[object Symbol]';
-
-var arrayBufferTag = '[object ArrayBuffer]',
- dataViewTag = '[object DataView]',
- float32Tag = '[object Float32Array]',
- float64Tag = '[object Float64Array]',
- int8Tag = '[object Int8Array]',
- int16Tag = '[object Int16Array]',
- int32Tag = '[object Int32Array]',
- uint8Tag = '[object Uint8Array]',
- uint8ClampedTag = '[object Uint8ClampedArray]',
- uint16Tag = '[object Uint16Array]',
- uint32Tag = '[object Uint32Array]';
-
-/**
- * Initializes an object clone based on its `toStringTag`.
- *
- * **Note:** This function only supports cloning values with tags of
- * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
- *
- * @private
- * @param {Object} object The object to clone.
- * @param {string} tag The `toStringTag` of the object to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the initialized clone.
- */
-function initCloneByTag(object, tag, isDeep) {
- var Ctor = object.constructor;
- switch (tag) {
- case arrayBufferTag:
- return cloneArrayBuffer(object);
-
- case boolTag:
- case dateTag:
- return new Ctor(+object);
-
- case dataViewTag:
- return cloneDataView(object, isDeep);
-
- case float32Tag: case float64Tag:
- case int8Tag: case int16Tag: case int32Tag:
- case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
- return cloneTypedArray(object, isDeep);
-
- case mapTag:
- return new Ctor;
-
- case numberTag:
- case stringTag:
- return new Ctor(object);
-
- case regexpTag:
- return cloneRegExp(object);
-
- case setTag:
- return new Ctor;
-
- case symbolTag:
- return cloneSymbol(object);
- }
-}
-
-module.exports = initCloneByTag;
diff --git a/assets/node_modules/lodash/_initCloneObject.js b/assets/node_modules/lodash/_initCloneObject.js
deleted file mode 100644
index 5a13e64..0000000
--- a/assets/node_modules/lodash/_initCloneObject.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var baseCreate = require('./_baseCreate'),
- getPrototype = require('./_getPrototype'),
- isPrototype = require('./_isPrototype');
-
-/**
- * Initializes an object clone.
- *
- * @private
- * @param {Object} object The object to clone.
- * @returns {Object} Returns the initialized clone.
- */
-function initCloneObject(object) {
- return (typeof object.constructor == 'function' && !isPrototype(object))
- ? baseCreate(getPrototype(object))
- : {};
-}
-
-module.exports = initCloneObject;
diff --git a/assets/node_modules/lodash/_insertWrapDetails.js b/assets/node_modules/lodash/_insertWrapDetails.js
deleted file mode 100644
index e790808..0000000
--- a/assets/node_modules/lodash/_insertWrapDetails.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/** Used to match wrap detail comments. */
-var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;
-
-/**
- * Inserts wrapper `details` in a comment at the top of the `source` body.
- *
- * @private
- * @param {string} source The source to modify.
- * @returns {Array} details The details to insert.
- * @returns {string} Returns the modified source.
- */
-function insertWrapDetails(source, details) {
- var length = details.length;
- if (!length) {
- return source;
- }
- var lastIndex = length - 1;
- details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
- details = details.join(length > 2 ? ', ' : ' ');
- return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
-}
-
-module.exports = insertWrapDetails;
diff --git a/assets/node_modules/lodash/_isFlattenable.js b/assets/node_modules/lodash/_isFlattenable.js
deleted file mode 100644
index 4cc2c24..0000000
--- a/assets/node_modules/lodash/_isFlattenable.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var Symbol = require('./_Symbol'),
- isArguments = require('./isArguments'),
- isArray = require('./isArray');
-
-/** Built-in value references. */
-var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
-
-/**
- * Checks if `value` is a flattenable `arguments` object or array.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
- */
-function isFlattenable(value) {
- return isArray(value) || isArguments(value) ||
- !!(spreadableSymbol && value && value[spreadableSymbol]);
-}
-
-module.exports = isFlattenable;
diff --git a/assets/node_modules/lodash/_isIndex.js b/assets/node_modules/lodash/_isIndex.js
deleted file mode 100644
index 061cd39..0000000
--- a/assets/node_modules/lodash/_isIndex.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/** Used to detect unsigned integer values. */
-var reIsUint = /^(?:0|[1-9]\d*)$/;
-
-/**
- * Checks if `value` is a valid array-like index.
- *
- * @private
- * @param {*} value The value to check.
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
- */
-function isIndex(value, length) {
- var type = typeof value;
- length = length == null ? MAX_SAFE_INTEGER : length;
-
- return !!length &&
- (type == 'number' ||
- (type != 'symbol' && reIsUint.test(value))) &&
- (value > -1 && value % 1 == 0 && value < length);
-}
-
-module.exports = isIndex;
diff --git a/assets/node_modules/lodash/_isIterateeCall.js b/assets/node_modules/lodash/_isIterateeCall.js
deleted file mode 100644
index a0bb5a9..0000000
--- a/assets/node_modules/lodash/_isIterateeCall.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var eq = require('./eq'),
- isArrayLike = require('./isArrayLike'),
- isIndex = require('./_isIndex'),
- isObject = require('./isObject');
-
-/**
- * Checks if the given arguments are from an iteratee call.
- *
- * @private
- * @param {*} value The potential iteratee value argument.
- * @param {*} index The potential iteratee index or key argument.
- * @param {*} object The potential iteratee object argument.
- * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
- * else `false`.
- */
-function isIterateeCall(value, index, object) {
- if (!isObject(object)) {
- return false;
- }
- var type = typeof index;
- if (type == 'number'
- ? (isArrayLike(object) && isIndex(index, object.length))
- : (type == 'string' && index in object)
- ) {
- return eq(object[index], value);
- }
- return false;
-}
-
-module.exports = isIterateeCall;
diff --git a/assets/node_modules/lodash/_isKey.js b/assets/node_modules/lodash/_isKey.js
deleted file mode 100644
index ff08b06..0000000
--- a/assets/node_modules/lodash/_isKey.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var isArray = require('./isArray'),
- isSymbol = require('./isSymbol');
-
-/** Used to match property names within property paths. */
-var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
- reIsPlainProp = /^\w*$/;
-
-/**
- * Checks if `value` is a property name and not a property path.
- *
- * @private
- * @param {*} value The value to check.
- * @param {Object} [object] The object to query keys on.
- * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
- */
-function isKey(value, object) {
- if (isArray(value)) {
- return false;
- }
- var type = typeof value;
- if (type == 'number' || type == 'symbol' || type == 'boolean' ||
- value == null || isSymbol(value)) {
- return true;
- }
- return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
- (object != null && value in Object(object));
-}
-
-module.exports = isKey;
diff --git a/assets/node_modules/lodash/_isKeyable.js b/assets/node_modules/lodash/_isKeyable.js
deleted file mode 100644
index 39f1828..0000000
--- a/assets/node_modules/lodash/_isKeyable.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
-function isKeyable(value) {
- var type = typeof value;
- return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
- ? (value !== '__proto__')
- : (value === null);
-}
-
-module.exports = isKeyable;
diff --git a/assets/node_modules/lodash/_isLaziable.js b/assets/node_modules/lodash/_isLaziable.js
deleted file mode 100644
index a57c4f2..0000000
--- a/assets/node_modules/lodash/_isLaziable.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var LazyWrapper = require('./_LazyWrapper'),
- getData = require('./_getData'),
- getFuncName = require('./_getFuncName'),
- lodash = require('./wrapperLodash');
-
-/**
- * Checks if `func` has a lazy counterpart.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
- * else `false`.
- */
-function isLaziable(func) {
- var funcName = getFuncName(func),
- other = lodash[funcName];
-
- if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
- return false;
- }
- if (func === other) {
- return true;
- }
- var data = getData(other);
- return !!data && func === data[0];
-}
-
-module.exports = isLaziable;
diff --git a/assets/node_modules/lodash/_isMaskable.js b/assets/node_modules/lodash/_isMaskable.js
deleted file mode 100644
index eb98d09..0000000
--- a/assets/node_modules/lodash/_isMaskable.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var coreJsData = require('./_coreJsData'),
- isFunction = require('./isFunction'),
- stubFalse = require('./stubFalse');
-
-/**
- * Checks if `func` is capable of being masked.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
- */
-var isMaskable = coreJsData ? isFunction : stubFalse;
-
-module.exports = isMaskable;
diff --git a/assets/node_modules/lodash/_isMasked.js b/assets/node_modules/lodash/_isMasked.js
deleted file mode 100644
index 4b0f21b..0000000
--- a/assets/node_modules/lodash/_isMasked.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var coreJsData = require('./_coreJsData');
-
-/** Used to detect methods masquerading as native. */
-var maskSrcKey = (function() {
- var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
- return uid ? ('Symbol(src)_1.' + uid) : '';
-}());
-
-/**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
- */
-function isMasked(func) {
- return !!maskSrcKey && (maskSrcKey in func);
-}
-
-module.exports = isMasked;
diff --git a/assets/node_modules/lodash/_isPrototype.js b/assets/node_modules/lodash/_isPrototype.js
deleted file mode 100644
index 0f29498..0000000
--- a/assets/node_modules/lodash/_isPrototype.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/**
- * Checks if `value` is likely a prototype object.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
- */
-function isPrototype(value) {
- var Ctor = value && value.constructor,
- proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
-
- return value === proto;
-}
-
-module.exports = isPrototype;
diff --git a/assets/node_modules/lodash/_isStrictComparable.js b/assets/node_modules/lodash/_isStrictComparable.js
deleted file mode 100644
index b59f40b..0000000
--- a/assets/node_modules/lodash/_isStrictComparable.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var isObject = require('./isObject');
-
-/**
- * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` if suitable for strict
- * equality comparisons, else `false`.
- */
-function isStrictComparable(value) {
- return value === value && !isObject(value);
-}
-
-module.exports = isStrictComparable;
diff --git a/assets/node_modules/lodash/_iteratorToArray.js b/assets/node_modules/lodash/_iteratorToArray.js
deleted file mode 100644
index 4768566..0000000
--- a/assets/node_modules/lodash/_iteratorToArray.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Converts `iterator` to an array.
- *
- * @private
- * @param {Object} iterator The iterator to convert.
- * @returns {Array} Returns the converted array.
- */
-function iteratorToArray(iterator) {
- var data,
- result = [];
-
- while (!(data = iterator.next()).done) {
- result.push(data.value);
- }
- return result;
-}
-
-module.exports = iteratorToArray;
diff --git a/assets/node_modules/lodash/_lazyClone.js b/assets/node_modules/lodash/_lazyClone.js
deleted file mode 100644
index d8a51f8..0000000
--- a/assets/node_modules/lodash/_lazyClone.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var LazyWrapper = require('./_LazyWrapper'),
- copyArray = require('./_copyArray');
-
-/**
- * Creates a clone of the lazy wrapper object.
- *
- * @private
- * @name clone
- * @memberOf LazyWrapper
- * @returns {Object} Returns the cloned `LazyWrapper` object.
- */
-function lazyClone() {
- var result = new LazyWrapper(this.__wrapped__);
- result.__actions__ = copyArray(this.__actions__);
- result.__dir__ = this.__dir__;
- result.__filtered__ = this.__filtered__;
- result.__iteratees__ = copyArray(this.__iteratees__);
- result.__takeCount__ = this.__takeCount__;
- result.__views__ = copyArray(this.__views__);
- return result;
-}
-
-module.exports = lazyClone;
diff --git a/assets/node_modules/lodash/_lazyReverse.js b/assets/node_modules/lodash/_lazyReverse.js
deleted file mode 100644
index c5b5219..0000000
--- a/assets/node_modules/lodash/_lazyReverse.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var LazyWrapper = require('./_LazyWrapper');
-
-/**
- * Reverses the direction of lazy iteration.
- *
- * @private
- * @name reverse
- * @memberOf LazyWrapper
- * @returns {Object} Returns the new reversed `LazyWrapper` object.
- */
-function lazyReverse() {
- if (this.__filtered__) {
- var result = new LazyWrapper(this);
- result.__dir__ = -1;
- result.__filtered__ = true;
- } else {
- result = this.clone();
- result.__dir__ *= -1;
- }
- return result;
-}
-
-module.exports = lazyReverse;
diff --git a/assets/node_modules/lodash/_lazyValue.js b/assets/node_modules/lodash/_lazyValue.js
deleted file mode 100644
index 371ca8d..0000000
--- a/assets/node_modules/lodash/_lazyValue.js
+++ /dev/null
@@ -1,69 +0,0 @@
-var baseWrapperValue = require('./_baseWrapperValue'),
- getView = require('./_getView'),
- isArray = require('./isArray');
-
-/** Used to indicate the type of lazy iteratees. */
-var LAZY_FILTER_FLAG = 1,
- LAZY_MAP_FLAG = 2;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min;
-
-/**
- * Extracts the unwrapped value from its lazy wrapper.
- *
- * @private
- * @name value
- * @memberOf LazyWrapper
- * @returns {*} Returns the unwrapped value.
- */
-function lazyValue() {
- var array = this.__wrapped__.value(),
- dir = this.__dir__,
- isArr = isArray(array),
- isRight = dir < 0,
- arrLength = isArr ? array.length : 0,
- view = getView(0, arrLength, this.__views__),
- start = view.start,
- end = view.end,
- length = end - start,
- index = isRight ? end : (start - 1),
- iteratees = this.__iteratees__,
- iterLength = iteratees.length,
- resIndex = 0,
- takeCount = nativeMin(length, this.__takeCount__);
-
- if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
- return baseWrapperValue(array, this.__actions__);
- }
- var result = [];
-
- outer:
- while (length-- && resIndex < takeCount) {
- index += dir;
-
- var iterIndex = -1,
- value = array[index];
-
- while (++iterIndex < iterLength) {
- var data = iteratees[iterIndex],
- iteratee = data.iteratee,
- type = data.type,
- computed = iteratee(value);
-
- if (type == LAZY_MAP_FLAG) {
- value = computed;
- } else if (!computed) {
- if (type == LAZY_FILTER_FLAG) {
- continue outer;
- } else {
- break outer;
- }
- }
- }
- result[resIndex++] = value;
- }
- return result;
-}
-
-module.exports = lazyValue;
diff --git a/assets/node_modules/lodash/_listCacheClear.js b/assets/node_modules/lodash/_listCacheClear.js
deleted file mode 100644
index acbe39a..0000000
--- a/assets/node_modules/lodash/_listCacheClear.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
-function listCacheClear() {
- this.__data__ = [];
- this.size = 0;
-}
-
-module.exports = listCacheClear;
diff --git a/assets/node_modules/lodash/_listCacheDelete.js b/assets/node_modules/lodash/_listCacheDelete.js
deleted file mode 100644
index b1384ad..0000000
--- a/assets/node_modules/lodash/_listCacheDelete.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var assocIndexOf = require('./_assocIndexOf');
-
-/** Used for built-in method references. */
-var arrayProto = Array.prototype;
-
-/** Built-in value references. */
-var splice = arrayProto.splice;
-
-/**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function listCacheDelete(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- return false;
- }
- var lastIndex = data.length - 1;
- if (index == lastIndex) {
- data.pop();
- } else {
- splice.call(data, index, 1);
- }
- --this.size;
- return true;
-}
-
-module.exports = listCacheDelete;
diff --git a/assets/node_modules/lodash/_listCacheGet.js b/assets/node_modules/lodash/_listCacheGet.js
deleted file mode 100644
index f8192fc..0000000
--- a/assets/node_modules/lodash/_listCacheGet.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var assocIndexOf = require('./_assocIndexOf');
-
-/**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function listCacheGet(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- return index < 0 ? undefined : data[index][1];
-}
-
-module.exports = listCacheGet;
diff --git a/assets/node_modules/lodash/_listCacheHas.js b/assets/node_modules/lodash/_listCacheHas.js
deleted file mode 100644
index 2adf671..0000000
--- a/assets/node_modules/lodash/_listCacheHas.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var assocIndexOf = require('./_assocIndexOf');
-
-/**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function listCacheHas(key) {
- return assocIndexOf(this.__data__, key) > -1;
-}
-
-module.exports = listCacheHas;
diff --git a/assets/node_modules/lodash/_listCacheSet.js b/assets/node_modules/lodash/_listCacheSet.js
deleted file mode 100644
index 5855c95..0000000
--- a/assets/node_modules/lodash/_listCacheSet.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var assocIndexOf = require('./_assocIndexOf');
-
-/**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */
-function listCacheSet(key, value) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- ++this.size;
- data.push([key, value]);
- } else {
- data[index][1] = value;
- }
- return this;
-}
-
-module.exports = listCacheSet;
diff --git a/assets/node_modules/lodash/_mapCacheClear.js b/assets/node_modules/lodash/_mapCacheClear.js
deleted file mode 100644
index bc9ca20..0000000
--- a/assets/node_modules/lodash/_mapCacheClear.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var Hash = require('./_Hash'),
- ListCache = require('./_ListCache'),
- Map = require('./_Map');
-
-/**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
-function mapCacheClear() {
- this.size = 0;
- this.__data__ = {
- 'hash': new Hash,
- 'map': new (Map || ListCache),
- 'string': new Hash
- };
-}
-
-module.exports = mapCacheClear;
diff --git a/assets/node_modules/lodash/_mapCacheDelete.js b/assets/node_modules/lodash/_mapCacheDelete.js
deleted file mode 100644
index 946ca3c..0000000
--- a/assets/node_modules/lodash/_mapCacheDelete.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var getMapData = require('./_getMapData');
-
-/**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function mapCacheDelete(key) {
- var result = getMapData(this, key)['delete'](key);
- this.size -= result ? 1 : 0;
- return result;
-}
-
-module.exports = mapCacheDelete;
diff --git a/assets/node_modules/lodash/_mapCacheGet.js b/assets/node_modules/lodash/_mapCacheGet.js
deleted file mode 100644
index f29f55c..0000000
--- a/assets/node_modules/lodash/_mapCacheGet.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var getMapData = require('./_getMapData');
-
-/**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function mapCacheGet(key) {
- return getMapData(this, key).get(key);
-}
-
-module.exports = mapCacheGet;
diff --git a/assets/node_modules/lodash/_mapCacheHas.js b/assets/node_modules/lodash/_mapCacheHas.js
deleted file mode 100644
index a1214c0..0000000
--- a/assets/node_modules/lodash/_mapCacheHas.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var getMapData = require('./_getMapData');
-
-/**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function mapCacheHas(key) {
- return getMapData(this, key).has(key);
-}
-
-module.exports = mapCacheHas;
diff --git a/assets/node_modules/lodash/_mapCacheSet.js b/assets/node_modules/lodash/_mapCacheSet.js
deleted file mode 100644
index 7346849..0000000
--- a/assets/node_modules/lodash/_mapCacheSet.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var getMapData = require('./_getMapData');
-
-/**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */
-function mapCacheSet(key, value) {
- var data = getMapData(this, key),
- size = data.size;
-
- data.set(key, value);
- this.size += data.size == size ? 0 : 1;
- return this;
-}
-
-module.exports = mapCacheSet;
diff --git a/assets/node_modules/lodash/_mapToArray.js b/assets/node_modules/lodash/_mapToArray.js
deleted file mode 100644
index fe3dd53..0000000
--- a/assets/node_modules/lodash/_mapToArray.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Converts `map` to its key-value pairs.
- *
- * @private
- * @param {Object} map The map to convert.
- * @returns {Array} Returns the key-value pairs.
- */
-function mapToArray(map) {
- var index = -1,
- result = Array(map.size);
-
- map.forEach(function(value, key) {
- result[++index] = [key, value];
- });
- return result;
-}
-
-module.exports = mapToArray;
diff --git a/assets/node_modules/lodash/_matchesStrictComparable.js b/assets/node_modules/lodash/_matchesStrictComparable.js
deleted file mode 100644
index f608af9..0000000
--- a/assets/node_modules/lodash/_matchesStrictComparable.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * A specialized version of `matchesProperty` for source values suitable
- * for strict equality comparisons, i.e. `===`.
- *
- * @private
- * @param {string} key The key of the property to get.
- * @param {*} srcValue The value to match.
- * @returns {Function} Returns the new spec function.
- */
-function matchesStrictComparable(key, srcValue) {
- return function(object) {
- if (object == null) {
- return false;
- }
- return object[key] === srcValue &&
- (srcValue !== undefined || (key in Object(object)));
- };
-}
-
-module.exports = matchesStrictComparable;
diff --git a/assets/node_modules/lodash/_memoizeCapped.js b/assets/node_modules/lodash/_memoizeCapped.js
deleted file mode 100644
index 7f71c8f..0000000
--- a/assets/node_modules/lodash/_memoizeCapped.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var memoize = require('./memoize');
-
-/** Used as the maximum memoize cache size. */
-var MAX_MEMOIZE_SIZE = 500;
-
-/**
- * A specialized version of `_.memoize` which clears the memoized function's
- * cache when it exceeds `MAX_MEMOIZE_SIZE`.
- *
- * @private
- * @param {Function} func The function to have its output memoized.
- * @returns {Function} Returns the new memoized function.
- */
-function memoizeCapped(func) {
- var result = memoize(func, function(key) {
- if (cache.size === MAX_MEMOIZE_SIZE) {
- cache.clear();
- }
- return key;
- });
-
- var cache = result.cache;
- return result;
-}
-
-module.exports = memoizeCapped;
diff --git a/assets/node_modules/lodash/_mergeData.js b/assets/node_modules/lodash/_mergeData.js
deleted file mode 100644
index cb570f9..0000000
--- a/assets/node_modules/lodash/_mergeData.js
+++ /dev/null
@@ -1,90 +0,0 @@
-var composeArgs = require('./_composeArgs'),
- composeArgsRight = require('./_composeArgsRight'),
- replaceHolders = require('./_replaceHolders');
-
-/** Used as the internal argument placeholder. */
-var PLACEHOLDER = '__lodash_placeholder__';
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1,
- WRAP_BIND_KEY_FLAG = 2,
- WRAP_CURRY_BOUND_FLAG = 4,
- WRAP_CURRY_FLAG = 8,
- WRAP_ARY_FLAG = 128,
- WRAP_REARG_FLAG = 256;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min;
-
-/**
- * Merges the function metadata of `source` into `data`.
- *
- * Merging metadata reduces the number of wrappers used to invoke a function.
- * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
- * may be applied regardless of execution order. Methods like `_.ary` and
- * `_.rearg` modify function arguments, making the order in which they are
- * executed important, preventing the merging of metadata. However, we make
- * an exception for a safe combined case where curried functions have `_.ary`
- * and or `_.rearg` applied.
- *
- * @private
- * @param {Array} data The destination metadata.
- * @param {Array} source The source metadata.
- * @returns {Array} Returns `data`.
- */
-function mergeData(data, source) {
- var bitmask = data[1],
- srcBitmask = source[1],
- newBitmask = bitmask | srcBitmask,
- isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
-
- var isCombo =
- ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
- ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
- ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));
-
- // Exit early if metadata can't be merged.
- if (!(isCommon || isCombo)) {
- return data;
- }
- // Use source `thisArg` if available.
- if (srcBitmask & WRAP_BIND_FLAG) {
- data[2] = source[2];
- // Set when currying a bound function.
- newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
- }
- // Compose partial arguments.
- var value = source[3];
- if (value) {
- var partials = data[3];
- data[3] = partials ? composeArgs(partials, value, source[4]) : value;
- data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
- }
- // Compose partial right arguments.
- value = source[5];
- if (value) {
- partials = data[5];
- data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
- data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
- }
- // Use source `argPos` if available.
- value = source[7];
- if (value) {
- data[7] = value;
- }
- // Use source `ary` if it's smaller.
- if (srcBitmask & WRAP_ARY_FLAG) {
- data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
- }
- // Use source `arity` if one is not provided.
- if (data[9] == null) {
- data[9] = source[9];
- }
- // Use source `func` and merge bitmasks.
- data[0] = source[0];
- data[1] = newBitmask;
-
- return data;
-}
-
-module.exports = mergeData;
diff --git a/assets/node_modules/lodash/_metaMap.js b/assets/node_modules/lodash/_metaMap.js
deleted file mode 100644
index 0157a0b..0000000
--- a/assets/node_modules/lodash/_metaMap.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var WeakMap = require('./_WeakMap');
-
-/** Used to store function metadata. */
-var metaMap = WeakMap && new WeakMap;
-
-module.exports = metaMap;
diff --git a/assets/node_modules/lodash/_nativeCreate.js b/assets/node_modules/lodash/_nativeCreate.js
deleted file mode 100644
index c7aede8..0000000
--- a/assets/node_modules/lodash/_nativeCreate.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var getNative = require('./_getNative');
-
-/* Built-in method references that are verified to be native. */
-var nativeCreate = getNative(Object, 'create');
-
-module.exports = nativeCreate;
diff --git a/assets/node_modules/lodash/_nativeKeys.js b/assets/node_modules/lodash/_nativeKeys.js
deleted file mode 100644
index 479a104..0000000
--- a/assets/node_modules/lodash/_nativeKeys.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var overArg = require('./_overArg');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeKeys = overArg(Object.keys, Object);
-
-module.exports = nativeKeys;
diff --git a/assets/node_modules/lodash/_nativeKeysIn.js b/assets/node_modules/lodash/_nativeKeysIn.js
deleted file mode 100644
index 00ee505..0000000
--- a/assets/node_modules/lodash/_nativeKeysIn.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * This function is like
- * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
- * except that it includes inherited enumerable properties.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
-function nativeKeysIn(object) {
- var result = [];
- if (object != null) {
- for (var key in Object(object)) {
- result.push(key);
- }
- }
- return result;
-}
-
-module.exports = nativeKeysIn;
diff --git a/assets/node_modules/lodash/_nodeUtil.js b/assets/node_modules/lodash/_nodeUtil.js
deleted file mode 100644
index 983d78f..0000000
--- a/assets/node_modules/lodash/_nodeUtil.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var freeGlobal = require('./_freeGlobal');
-
-/** Detect free variable `exports`. */
-var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
-
-/** Detect free variable `module`. */
-var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
-
-/** Detect the popular CommonJS extension `module.exports`. */
-var moduleExports = freeModule && freeModule.exports === freeExports;
-
-/** Detect free variable `process` from Node.js. */
-var freeProcess = moduleExports && freeGlobal.process;
-
-/** Used to access faster Node.js helpers. */
-var nodeUtil = (function() {
- try {
- // Use `util.types` for Node.js 10+.
- var types = freeModule && freeModule.require && freeModule.require('util').types;
-
- if (types) {
- return types;
- }
-
- // Legacy `process.binding('util')` for Node.js < 10.
- return freeProcess && freeProcess.binding && freeProcess.binding('util');
- } catch (e) {}
-}());
-
-module.exports = nodeUtil;
diff --git a/assets/node_modules/lodash/_objectToString.js b/assets/node_modules/lodash/_objectToString.js
deleted file mode 100644
index c614ec0..0000000
--- a/assets/node_modules/lodash/_objectToString.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var nativeObjectToString = objectProto.toString;
-
-/**
- * Converts `value` to a string using `Object.prototype.toString`.
- *
- * @private
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- */
-function objectToString(value) {
- return nativeObjectToString.call(value);
-}
-
-module.exports = objectToString;
diff --git a/assets/node_modules/lodash/_overArg.js b/assets/node_modules/lodash/_overArg.js
deleted file mode 100644
index 651c5c5..0000000
--- a/assets/node_modules/lodash/_overArg.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Creates a unary function that invokes `func` with its argument transformed.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {Function} transform The argument transform.
- * @returns {Function} Returns the new function.
- */
-function overArg(func, transform) {
- return function(arg) {
- return func(transform(arg));
- };
-}
-
-module.exports = overArg;
diff --git a/assets/node_modules/lodash/_overRest.js b/assets/node_modules/lodash/_overRest.js
deleted file mode 100644
index c7cdef3..0000000
--- a/assets/node_modules/lodash/_overRest.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var apply = require('./_apply');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * A specialized version of `baseRest` which transforms the rest array.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @param {Function} transform The rest array transform.
- * @returns {Function} Returns the new function.
- */
-function overRest(func, start, transform) {
- start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
- return function() {
- var args = arguments,
- index = -1,
- length = nativeMax(args.length - start, 0),
- array = Array(length);
-
- while (++index < length) {
- array[index] = args[start + index];
- }
- index = -1;
- var otherArgs = Array(start + 1);
- while (++index < start) {
- otherArgs[index] = args[index];
- }
- otherArgs[start] = transform(array);
- return apply(func, this, otherArgs);
- };
-}
-
-module.exports = overRest;
diff --git a/assets/node_modules/lodash/_parent.js b/assets/node_modules/lodash/_parent.js
deleted file mode 100644
index f174328..0000000
--- a/assets/node_modules/lodash/_parent.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var baseGet = require('./_baseGet'),
- baseSlice = require('./_baseSlice');
-
-/**
- * Gets the parent value at `path` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array} path The path to get the parent value of.
- * @returns {*} Returns the parent value.
- */
-function parent(object, path) {
- return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
-}
-
-module.exports = parent;
diff --git a/assets/node_modules/lodash/_reEscape.js b/assets/node_modules/lodash/_reEscape.js
deleted file mode 100644
index 7f47eda..0000000
--- a/assets/node_modules/lodash/_reEscape.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/** Used to match template delimiters. */
-var reEscape = /<%-([\s\S]+?)%>/g;
-
-module.exports = reEscape;
diff --git a/assets/node_modules/lodash/_reEvaluate.js b/assets/node_modules/lodash/_reEvaluate.js
deleted file mode 100644
index 6adfc31..0000000
--- a/assets/node_modules/lodash/_reEvaluate.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/** Used to match template delimiters. */
-var reEvaluate = /<%([\s\S]+?)%>/g;
-
-module.exports = reEvaluate;
diff --git a/assets/node_modules/lodash/_reInterpolate.js b/assets/node_modules/lodash/_reInterpolate.js
deleted file mode 100644
index d02ff0b..0000000
--- a/assets/node_modules/lodash/_reInterpolate.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/** Used to match template delimiters. */
-var reInterpolate = /<%=([\s\S]+?)%>/g;
-
-module.exports = reInterpolate;
diff --git a/assets/node_modules/lodash/_realNames.js b/assets/node_modules/lodash/_realNames.js
deleted file mode 100644
index aa0d529..0000000
--- a/assets/node_modules/lodash/_realNames.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/** Used to lookup unminified function names. */
-var realNames = {};
-
-module.exports = realNames;
diff --git a/assets/node_modules/lodash/_reorder.js b/assets/node_modules/lodash/_reorder.js
deleted file mode 100644
index a3502b0..0000000
--- a/assets/node_modules/lodash/_reorder.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var copyArray = require('./_copyArray'),
- isIndex = require('./_isIndex');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min;
-
-/**
- * Reorder `array` according to the specified indexes where the element at
- * the first index is assigned as the first element, the element at
- * the second index is assigned as the second element, and so on.
- *
- * @private
- * @param {Array} array The array to reorder.
- * @param {Array} indexes The arranged array indexes.
- * @returns {Array} Returns `array`.
- */
-function reorder(array, indexes) {
- var arrLength = array.length,
- length = nativeMin(indexes.length, arrLength),
- oldArray = copyArray(array);
-
- while (length--) {
- var index = indexes[length];
- array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
- }
- return array;
-}
-
-module.exports = reorder;
diff --git a/assets/node_modules/lodash/_replaceHolders.js b/assets/node_modules/lodash/_replaceHolders.js
deleted file mode 100644
index 74360ec..0000000
--- a/assets/node_modules/lodash/_replaceHolders.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/** Used as the internal argument placeholder. */
-var PLACEHOLDER = '__lodash_placeholder__';
-
-/**
- * Replaces all `placeholder` elements in `array` with an internal placeholder
- * and returns an array of their indexes.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {*} placeholder The placeholder to replace.
- * @returns {Array} Returns the new array of placeholder indexes.
- */
-function replaceHolders(array, placeholder) {
- var index = -1,
- length = array.length,
- resIndex = 0,
- result = [];
-
- while (++index < length) {
- var value = array[index];
- if (value === placeholder || value === PLACEHOLDER) {
- array[index] = PLACEHOLDER;
- result[resIndex++] = index;
- }
- }
- return result;
-}
-
-module.exports = replaceHolders;
diff --git a/assets/node_modules/lodash/_root.js b/assets/node_modules/lodash/_root.js
deleted file mode 100644
index d2852be..0000000
--- a/assets/node_modules/lodash/_root.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var freeGlobal = require('./_freeGlobal');
-
-/** Detect free variable `self`. */
-var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
-/** Used as a reference to the global object. */
-var root = freeGlobal || freeSelf || Function('return this')();
-
-module.exports = root;
diff --git a/assets/node_modules/lodash/_safeGet.js b/assets/node_modules/lodash/_safeGet.js
deleted file mode 100644
index b070897..0000000
--- a/assets/node_modules/lodash/_safeGet.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
-function safeGet(object, key) {
- if (key === 'constructor' && typeof object[key] === 'function') {
- return;
- }
-
- if (key == '__proto__') {
- return;
- }
-
- return object[key];
-}
-
-module.exports = safeGet;
diff --git a/assets/node_modules/lodash/_setCacheAdd.js b/assets/node_modules/lodash/_setCacheAdd.js
deleted file mode 100644
index 1081a74..0000000
--- a/assets/node_modules/lodash/_setCacheAdd.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
-/**
- * Adds `value` to the array cache.
- *
- * @private
- * @name add
- * @memberOf SetCache
- * @alias push
- * @param {*} value The value to cache.
- * @returns {Object} Returns the cache instance.
- */
-function setCacheAdd(value) {
- this.__data__.set(value, HASH_UNDEFINED);
- return this;
-}
-
-module.exports = setCacheAdd;
diff --git a/assets/node_modules/lodash/_setCacheHas.js b/assets/node_modules/lodash/_setCacheHas.js
deleted file mode 100644
index 9a49255..0000000
--- a/assets/node_modules/lodash/_setCacheHas.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Checks if `value` is in the array cache.
- *
- * @private
- * @name has
- * @memberOf SetCache
- * @param {*} value The value to search for.
- * @returns {number} Returns `true` if `value` is found, else `false`.
- */
-function setCacheHas(value) {
- return this.__data__.has(value);
-}
-
-module.exports = setCacheHas;
diff --git a/assets/node_modules/lodash/_setData.js b/assets/node_modules/lodash/_setData.js
deleted file mode 100644
index e5cf3eb..0000000
--- a/assets/node_modules/lodash/_setData.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var baseSetData = require('./_baseSetData'),
- shortOut = require('./_shortOut');
-
-/**
- * Sets metadata for `func`.
- *
- * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
- * period of time, it will trip its breaker and transition to an identity
- * function to avoid garbage collection pauses in V8. See
- * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)
- * for more details.
- *
- * @private
- * @param {Function} func The function to associate metadata with.
- * @param {*} data The metadata.
- * @returns {Function} Returns `func`.
- */
-var setData = shortOut(baseSetData);
-
-module.exports = setData;
diff --git a/assets/node_modules/lodash/_setToArray.js b/assets/node_modules/lodash/_setToArray.js
deleted file mode 100644
index b87f074..0000000
--- a/assets/node_modules/lodash/_setToArray.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Converts `set` to an array of its values.
- *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the values.
- */
-function setToArray(set) {
- var index = -1,
- result = Array(set.size);
-
- set.forEach(function(value) {
- result[++index] = value;
- });
- return result;
-}
-
-module.exports = setToArray;
diff --git a/assets/node_modules/lodash/_setToPairs.js b/assets/node_modules/lodash/_setToPairs.js
deleted file mode 100644
index 36ad37a..0000000
--- a/assets/node_modules/lodash/_setToPairs.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Converts `set` to its value-value pairs.
- *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the value-value pairs.
- */
-function setToPairs(set) {
- var index = -1,
- result = Array(set.size);
-
- set.forEach(function(value) {
- result[++index] = [value, value];
- });
- return result;
-}
-
-module.exports = setToPairs;
diff --git a/assets/node_modules/lodash/_setToString.js b/assets/node_modules/lodash/_setToString.js
deleted file mode 100644
index 6ca8419..0000000
--- a/assets/node_modules/lodash/_setToString.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var baseSetToString = require('./_baseSetToString'),
- shortOut = require('./_shortOut');
-
-/**
- * Sets the `toString` method of `func` to return `string`.
- *
- * @private
- * @param {Function} func The function to modify.
- * @param {Function} string The `toString` result.
- * @returns {Function} Returns `func`.
- */
-var setToString = shortOut(baseSetToString);
-
-module.exports = setToString;
diff --git a/assets/node_modules/lodash/_setWrapToString.js b/assets/node_modules/lodash/_setWrapToString.js
deleted file mode 100644
index decdc44..0000000
--- a/assets/node_modules/lodash/_setWrapToString.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var getWrapDetails = require('./_getWrapDetails'),
- insertWrapDetails = require('./_insertWrapDetails'),
- setToString = require('./_setToString'),
- updateWrapDetails = require('./_updateWrapDetails');
-
-/**
- * Sets the `toString` method of `wrapper` to mimic the source of `reference`
- * with wrapper details in a comment at the top of the source body.
- *
- * @private
- * @param {Function} wrapper The function to modify.
- * @param {Function} reference The reference function.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @returns {Function} Returns `wrapper`.
- */
-function setWrapToString(wrapper, reference, bitmask) {
- var source = (reference + '');
- return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
-}
-
-module.exports = setWrapToString;
diff --git a/assets/node_modules/lodash/_shortOut.js b/assets/node_modules/lodash/_shortOut.js
deleted file mode 100644
index 3300a07..0000000
--- a/assets/node_modules/lodash/_shortOut.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/** Used to detect hot functions by number of calls within a span of milliseconds. */
-var HOT_COUNT = 800,
- HOT_SPAN = 16;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeNow = Date.now;
-
-/**
- * Creates a function that'll short out and invoke `identity` instead
- * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
- * milliseconds.
- *
- * @private
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new shortable function.
- */
-function shortOut(func) {
- var count = 0,
- lastCalled = 0;
-
- return function() {
- var stamp = nativeNow(),
- remaining = HOT_SPAN - (stamp - lastCalled);
-
- lastCalled = stamp;
- if (remaining > 0) {
- if (++count >= HOT_COUNT) {
- return arguments[0];
- }
- } else {
- count = 0;
- }
- return func.apply(undefined, arguments);
- };
-}
-
-module.exports = shortOut;
diff --git a/assets/node_modules/lodash/_shuffleSelf.js b/assets/node_modules/lodash/_shuffleSelf.js
deleted file mode 100644
index 8bcc4f5..0000000
--- a/assets/node_modules/lodash/_shuffleSelf.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var baseRandom = require('./_baseRandom');
-
-/**
- * A specialized version of `_.shuffle` which mutates and sets the size of `array`.
- *
- * @private
- * @param {Array} array The array to shuffle.
- * @param {number} [size=array.length] The size of `array`.
- * @returns {Array} Returns `array`.
- */
-function shuffleSelf(array, size) {
- var index = -1,
- length = array.length,
- lastIndex = length - 1;
-
- size = size === undefined ? length : size;
- while (++index < size) {
- var rand = baseRandom(index, lastIndex),
- value = array[rand];
-
- array[rand] = array[index];
- array[index] = value;
- }
- array.length = size;
- return array;
-}
-
-module.exports = shuffleSelf;
diff --git a/assets/node_modules/lodash/_stackClear.js b/assets/node_modules/lodash/_stackClear.js
deleted file mode 100644
index ce8e5a9..0000000
--- a/assets/node_modules/lodash/_stackClear.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var ListCache = require('./_ListCache');
-
-/**
- * Removes all key-value entries from the stack.
- *
- * @private
- * @name clear
- * @memberOf Stack
- */
-function stackClear() {
- this.__data__ = new ListCache;
- this.size = 0;
-}
-
-module.exports = stackClear;
diff --git a/assets/node_modules/lodash/_stackDelete.js b/assets/node_modules/lodash/_stackDelete.js
deleted file mode 100644
index ff9887a..0000000
--- a/assets/node_modules/lodash/_stackDelete.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Removes `key` and its value from the stack.
- *
- * @private
- * @name delete
- * @memberOf Stack
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function stackDelete(key) {
- var data = this.__data__,
- result = data['delete'](key);
-
- this.size = data.size;
- return result;
-}
-
-module.exports = stackDelete;
diff --git a/assets/node_modules/lodash/_stackGet.js b/assets/node_modules/lodash/_stackGet.js
deleted file mode 100644
index 1cdf004..0000000
--- a/assets/node_modules/lodash/_stackGet.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Gets the stack value for `key`.
- *
- * @private
- * @name get
- * @memberOf Stack
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function stackGet(key) {
- return this.__data__.get(key);
-}
-
-module.exports = stackGet;
diff --git a/assets/node_modules/lodash/_stackHas.js b/assets/node_modules/lodash/_stackHas.js
deleted file mode 100644
index 16a3ad1..0000000
--- a/assets/node_modules/lodash/_stackHas.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Checks if a stack value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Stack
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function stackHas(key) {
- return this.__data__.has(key);
-}
-
-module.exports = stackHas;
diff --git a/assets/node_modules/lodash/_stackSet.js b/assets/node_modules/lodash/_stackSet.js
deleted file mode 100644
index b790ac5..0000000
--- a/assets/node_modules/lodash/_stackSet.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var ListCache = require('./_ListCache'),
- Map = require('./_Map'),
- MapCache = require('./_MapCache');
-
-/** Used as the size to enable large array optimizations. */
-var LARGE_ARRAY_SIZE = 200;
-
-/**
- * Sets the stack `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Stack
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the stack cache instance.
- */
-function stackSet(key, value) {
- var data = this.__data__;
- if (data instanceof ListCache) {
- var pairs = data.__data__;
- if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
- pairs.push([key, value]);
- this.size = ++data.size;
- return this;
- }
- data = this.__data__ = new MapCache(pairs);
- }
- data.set(key, value);
- this.size = data.size;
- return this;
-}
-
-module.exports = stackSet;
diff --git a/assets/node_modules/lodash/_strictIndexOf.js b/assets/node_modules/lodash/_strictIndexOf.js
deleted file mode 100644
index 0486a49..0000000
--- a/assets/node_modules/lodash/_strictIndexOf.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * A specialized version of `_.indexOf` which performs strict equality
- * comparisons of values, i.e. `===`.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function strictIndexOf(array, value, fromIndex) {
- var index = fromIndex - 1,
- length = array.length;
-
- while (++index < length) {
- if (array[index] === value) {
- return index;
- }
- }
- return -1;
-}
-
-module.exports = strictIndexOf;
diff --git a/assets/node_modules/lodash/_strictLastIndexOf.js b/assets/node_modules/lodash/_strictLastIndexOf.js
deleted file mode 100644
index d7310dc..0000000
--- a/assets/node_modules/lodash/_strictLastIndexOf.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * A specialized version of `_.lastIndexOf` which performs strict equality
- * comparisons of values, i.e. `===`.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function strictLastIndexOf(array, value, fromIndex) {
- var index = fromIndex + 1;
- while (index--) {
- if (array[index] === value) {
- return index;
- }
- }
- return index;
-}
-
-module.exports = strictLastIndexOf;
diff --git a/assets/node_modules/lodash/_stringSize.js b/assets/node_modules/lodash/_stringSize.js
deleted file mode 100644
index 17ef462..0000000
--- a/assets/node_modules/lodash/_stringSize.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var asciiSize = require('./_asciiSize'),
- hasUnicode = require('./_hasUnicode'),
- unicodeSize = require('./_unicodeSize');
-
-/**
- * Gets the number of symbols in `string`.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {number} Returns the string size.
- */
-function stringSize(string) {
- return hasUnicode(string)
- ? unicodeSize(string)
- : asciiSize(string);
-}
-
-module.exports = stringSize;
diff --git a/assets/node_modules/lodash/_stringToArray.js b/assets/node_modules/lodash/_stringToArray.js
deleted file mode 100644
index d161158..0000000
--- a/assets/node_modules/lodash/_stringToArray.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var asciiToArray = require('./_asciiToArray'),
- hasUnicode = require('./_hasUnicode'),
- unicodeToArray = require('./_unicodeToArray');
-
-/**
- * Converts `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
- */
-function stringToArray(string) {
- return hasUnicode(string)
- ? unicodeToArray(string)
- : asciiToArray(string);
-}
-
-module.exports = stringToArray;
diff --git a/assets/node_modules/lodash/_stringToPath.js b/assets/node_modules/lodash/_stringToPath.js
deleted file mode 100644
index 8f39f8a..0000000
--- a/assets/node_modules/lodash/_stringToPath.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var memoizeCapped = require('./_memoizeCapped');
-
-/** Used to match property names within property paths. */
-var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
-
-/** Used to match backslashes in property paths. */
-var reEscapeChar = /\\(\\)?/g;
-
-/**
- * Converts `string` to a property path array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the property path array.
- */
-var stringToPath = memoizeCapped(function(string) {
- var result = [];
- if (string.charCodeAt(0) === 46 /* . */) {
- result.push('');
- }
- string.replace(rePropName, function(match, number, quote, subString) {
- result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
- });
- return result;
-});
-
-module.exports = stringToPath;
diff --git a/assets/node_modules/lodash/_toKey.js b/assets/node_modules/lodash/_toKey.js
deleted file mode 100644
index c6d645c..0000000
--- a/assets/node_modules/lodash/_toKey.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var isSymbol = require('./isSymbol');
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
-
-/**
- * Converts `value` to a string key if it's not a string or symbol.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {string|symbol} Returns the key.
- */
-function toKey(value) {
- if (typeof value == 'string' || isSymbol(value)) {
- return value;
- }
- var result = (value + '');
- return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-}
-
-module.exports = toKey;
diff --git a/assets/node_modules/lodash/_toSource.js b/assets/node_modules/lodash/_toSource.js
deleted file mode 100644
index a020b38..0000000
--- a/assets/node_modules/lodash/_toSource.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/** Used for built-in method references. */
-var funcProto = Function.prototype;
-
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
-
-/**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to convert.
- * @returns {string} Returns the source code.
- */
-function toSource(func) {
- if (func != null) {
- try {
- return funcToString.call(func);
- } catch (e) {}
- try {
- return (func + '');
- } catch (e) {}
- }
- return '';
-}
-
-module.exports = toSource;
diff --git a/assets/node_modules/lodash/_unescapeHtmlChar.js b/assets/node_modules/lodash/_unescapeHtmlChar.js
deleted file mode 100644
index a71fecb..0000000
--- a/assets/node_modules/lodash/_unescapeHtmlChar.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var basePropertyOf = require('./_basePropertyOf');
-
-/** Used to map HTML entities to characters. */
-var htmlUnescapes = {
- '&amp;': '&',
- '&lt;': '<',
- '&gt;': '>',
- '&quot;': '"',
- '&#39;': "'"
-};
-
-/**
- * Used by `_.unescape` to convert HTML entities to characters.
- *
- * @private
- * @param {string} chr The matched character to unescape.
- * @returns {string} Returns the unescaped character.
- */
-var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
-
-module.exports = unescapeHtmlChar;
diff --git a/assets/node_modules/lodash/_unicodeSize.js b/assets/node_modules/lodash/_unicodeSize.js
deleted file mode 100644
index 68137ec..0000000
--- a/assets/node_modules/lodash/_unicodeSize.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/** Used to compose unicode character classes. */
-var rsAstralRange = '\\ud800-\\udfff',
- rsComboMarksRange = '\\u0300-\\u036f',
- reComboHalfMarksRange = '\\ufe20-\\ufe2f',
- rsComboSymbolsRange = '\\u20d0-\\u20ff',
- rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
- rsVarRange = '\\ufe0e\\ufe0f';
-
-/** Used to compose unicode capture groups. */
-var rsAstral = '[' + rsAstralRange + ']',
- rsCombo = '[' + rsComboRange + ']',
- rsFitz = '\\ud83c[\\udffb-\\udfff]',
- rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
- rsNonAstral = '[^' + rsAstralRange + ']',
- rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
- rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
- rsZWJ = '\\u200d';
-
-/** Used to compose unicode regexes. */
-var reOptMod = rsModifier + '?',
- rsOptVar = '[' + rsVarRange + ']?',
- rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
- rsSeq = rsOptVar + reOptMod + rsOptJoin,
- rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
-
-/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
-var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
-
-/**
- * Gets the size of a Unicode `string`.
- *
- * @private
- * @param {string} string The string inspect.
- * @returns {number} Returns the string size.
- */
-function unicodeSize(string) {
- var result = reUnicode.lastIndex = 0;
- while (reUnicode.test(string)) {
- ++result;
- }
- return result;
-}
-
-module.exports = unicodeSize;
diff --git a/assets/node_modules/lodash/_unicodeToArray.js b/assets/node_modules/lodash/_unicodeToArray.js
deleted file mode 100644
index 2a725c0..0000000
--- a/assets/node_modules/lodash/_unicodeToArray.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/** Used to compose unicode character classes. */
-var rsAstralRange = '\\ud800-\\udfff',
- rsComboMarksRange = '\\u0300-\\u036f',
- reComboHalfMarksRange = '\\ufe20-\\ufe2f',
- rsComboSymbolsRange = '\\u20d0-\\u20ff',
- rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
- rsVarRange = '\\ufe0e\\ufe0f';
-
-/** Used to compose unicode capture groups. */
-var rsAstral = '[' + rsAstralRange + ']',
- rsCombo = '[' + rsComboRange + ']',
- rsFitz = '\\ud83c[\\udffb-\\udfff]',
- rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
- rsNonAstral = '[^' + rsAstralRange + ']',
- rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
- rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
- rsZWJ = '\\u200d';
-
-/** Used to compose unicode regexes. */
-var reOptMod = rsModifier + '?',
- rsOptVar = '[' + rsVarRange + ']?',
- rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
- rsSeq = rsOptVar + reOptMod + rsOptJoin,
- rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
-
-/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
-var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
-
-/**
- * Converts a Unicode `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
- */
-function unicodeToArray(string) {
- return string.match(reUnicode) || [];
-}
-
-module.exports = unicodeToArray;
diff --git a/assets/node_modules/lodash/_unicodeWords.js b/assets/node_modules/lodash/_unicodeWords.js
deleted file mode 100644
index e72e6e0..0000000
--- a/assets/node_modules/lodash/_unicodeWords.js
+++ /dev/null
@@ -1,69 +0,0 @@
-/** Used to compose unicode character classes. */
-var rsAstralRange = '\\ud800-\\udfff',
- rsComboMarksRange = '\\u0300-\\u036f',
- reComboHalfMarksRange = '\\ufe20-\\ufe2f',
- rsComboSymbolsRange = '\\u20d0-\\u20ff',
- rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
- rsDingbatRange = '\\u2700-\\u27bf',
- rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
- rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
- rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
- rsPunctuationRange = '\\u2000-\\u206f',
- rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000',
- rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
- rsVarRange = '\\ufe0e\\ufe0f',
- rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
-
-/** Used to compose unicode capture groups. */
-var rsApos = "['\u2019]",
- rsBreak = '[' + rsBreakRange + ']',
- rsCombo = '[' + rsComboRange + ']',
- rsDigits = '\\d+',
- rsDingbat = '[' + rsDingbatRange + ']',
- rsLower = '[' + rsLowerRange + ']',
- rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
- rsFitz = '\\ud83c[\\udffb-\\udfff]',
- rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
- rsNonAstral = '[^' + rsAstralRange + ']',
- rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
- rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
- rsUpper = '[' + rsUpperRange + ']',
- rsZWJ = '\\u200d';
-
-/** Used to compose unicode regexes. */
-var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
- rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
- rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
- rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
- reOptMod = rsModifier + '?',
- rsOptVar = '[' + rsVarRange + ']?',
- rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
- rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
- rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
- rsSeq = rsOptVar + reOptMod + rsOptJoin,
- rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;
-
-/** Used to match complex or compound words. */
-var reUnicodeWord = RegExp([
- rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
- rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
- rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
- rsUpper + '+' + rsOptContrUpper,
- rsOrdUpper,
- rsOrdLower,
- rsDigits,
- rsEmoji
-].join('|'), 'g');
-
-/**
- * Splits a Unicode `string` into an array of its words.
- *
- * @private
- * @param {string} The string to inspect.
- * @returns {Array} Returns the words of `string`.
- */
-function unicodeWords(string) {
- return string.match(reUnicodeWord) || [];
-}
-
-module.exports = unicodeWords;
diff --git a/assets/node_modules/lodash/_updateWrapDetails.js b/assets/node_modules/lodash/_updateWrapDetails.js
deleted file mode 100644
index 8759fbd..0000000
--- a/assets/node_modules/lodash/_updateWrapDetails.js
+++ /dev/null
@@ -1,46 +0,0 @@
-var arrayEach = require('./_arrayEach'),
- arrayIncludes = require('./_arrayIncludes');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1,
- WRAP_BIND_KEY_FLAG = 2,
- WRAP_CURRY_FLAG = 8,
- WRAP_CURRY_RIGHT_FLAG = 16,
- WRAP_PARTIAL_FLAG = 32,
- WRAP_PARTIAL_RIGHT_FLAG = 64,
- WRAP_ARY_FLAG = 128,
- WRAP_REARG_FLAG = 256,
- WRAP_FLIP_FLAG = 512;
-
-/** Used to associate wrap methods with their bit flags. */
-var wrapFlags = [
- ['ary', WRAP_ARY_FLAG],
- ['bind', WRAP_BIND_FLAG],
- ['bindKey', WRAP_BIND_KEY_FLAG],
- ['curry', WRAP_CURRY_FLAG],
- ['curryRight', WRAP_CURRY_RIGHT_FLAG],
- ['flip', WRAP_FLIP_FLAG],
- ['partial', WRAP_PARTIAL_FLAG],
- ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
- ['rearg', WRAP_REARG_FLAG]
-];
-
-/**
- * Updates wrapper `details` based on `bitmask` flags.
- *
- * @private
- * @returns {Array} details The details to modify.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @returns {Array} Returns `details`.
- */
-function updateWrapDetails(details, bitmask) {
- arrayEach(wrapFlags, function(pair) {
- var value = '_.' + pair[0];
- if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
- details.push(value);
- }
- });
- return details.sort();
-}
-
-module.exports = updateWrapDetails;
diff --git a/assets/node_modules/lodash/_wrapperClone.js b/assets/node_modules/lodash/_wrapperClone.js
deleted file mode 100644
index 7bb58a2..0000000
--- a/assets/node_modules/lodash/_wrapperClone.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var LazyWrapper = require('./_LazyWrapper'),
- LodashWrapper = require('./_LodashWrapper'),
- copyArray = require('./_copyArray');
-
-/**
- * Creates a clone of `wrapper`.
- *
- * @private
- * @param {Object} wrapper The wrapper to clone.
- * @returns {Object} Returns the cloned wrapper.
- */
-function wrapperClone(wrapper) {
- if (wrapper instanceof LazyWrapper) {
- return wrapper.clone();
- }
- var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
- result.__actions__ = copyArray(wrapper.__actions__);
- result.__index__ = wrapper.__index__;
- result.__values__ = wrapper.__values__;
- return result;
-}
-
-module.exports = wrapperClone;
diff --git a/assets/node_modules/lodash/add.js b/assets/node_modules/lodash/add.js
deleted file mode 100644
index f069515..0000000
--- a/assets/node_modules/lodash/add.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var createMathOperation = require('./_createMathOperation');
-
-/**
- * Adds two numbers.
- *
- * @static
- * @memberOf _
- * @since 3.4.0
- * @category Math
- * @param {number} augend The first number in an addition.
- * @param {number} addend The second number in an addition.
- * @returns {number} Returns the total.
- * @example
- *
- * _.add(6, 4);
- * // => 10
- */
-var add = createMathOperation(function(augend, addend) {
- return augend + addend;
-}, 0);
-
-module.exports = add;
diff --git a/assets/node_modules/lodash/after.js b/assets/node_modules/lodash/after.js
deleted file mode 100644
index 3900c97..0000000
--- a/assets/node_modules/lodash/after.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var toInteger = require('./toInteger');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * The opposite of `_.before`; this method creates a function that invokes
- * `func` once it's called `n` or more times.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {number} n The number of calls before `func` is invoked.
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * var saves = ['profile', 'settings'];
- *
- * var done = _.after(saves.length, function() {
- * console.log('done saving!');
- * });
- *
- * _.forEach(saves, function(type) {
- * asyncSave({ 'type': type, 'complete': done });
- * });
- * // => Logs 'done saving!' after the two async saves have completed.
- */
-function after(n, func) {
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- n = toInteger(n);
- return function() {
- if (--n < 1) {
- return func.apply(this, arguments);
- }
- };
-}
-
-module.exports = after;
diff --git a/assets/node_modules/lodash/array.js b/assets/node_modules/lodash/array.js
deleted file mode 100644
index af688d3..0000000
--- a/assets/node_modules/lodash/array.js
+++ /dev/null
@@ -1,67 +0,0 @@
-module.exports = {
- 'chunk': require('./chunk'),
- 'compact': require('./compact'),
- 'concat': require('./concat'),
- 'difference': require('./difference'),
- 'differenceBy': require('./differenceBy'),
- 'differenceWith': require('./differenceWith'),
- 'drop': require('./drop'),
- 'dropRight': require('./dropRight'),
- 'dropRightWhile': require('./dropRightWhile'),
- 'dropWhile': require('./dropWhile'),
- 'fill': require('./fill'),
- 'findIndex': require('./findIndex'),
- 'findLastIndex': require('./findLastIndex'),
- 'first': require('./first'),
- 'flatten': require('./flatten'),
- 'flattenDeep': require('./flattenDeep'),
- 'flattenDepth': require('./flattenDepth'),
- 'fromPairs': require('./fromPairs'),
- 'head': require('./head'),
- 'indexOf': require('./indexOf'),
- 'initial': require('./initial'),
- 'intersection': require('./intersection'),
- 'intersectionBy': require('./intersectionBy'),
- 'intersectionWith': require('./intersectionWith'),
- 'join': require('./join'),
- 'last': require('./last'),
- 'lastIndexOf': require('./lastIndexOf'),
- 'nth': require('./nth'),
- 'pull': require('./pull'),
- 'pullAll': require('./pullAll'),
- 'pullAllBy': require('./pullAllBy'),
- 'pullAllWith': require('./pullAllWith'),
- 'pullAt': require('./pullAt'),
- 'remove': require('./remove'),
- 'reverse': require('./reverse'),
- 'slice': require('./slice'),
- 'sortedIndex': require('./sortedIndex'),
- 'sortedIndexBy': require('./sortedIndexBy'),
- 'sortedIndexOf': require('./sortedIndexOf'),
- 'sortedLastIndex': require('./sortedLastIndex'),
- 'sortedLastIndexBy': require('./sortedLastIndexBy'),
- 'sortedLastIndexOf': require('./sortedLastIndexOf'),
- 'sortedUniq': require('./sortedUniq'),
- 'sortedUniqBy': require('./sortedUniqBy'),
- 'tail': require('./tail'),
- 'take': require('./take'),
- 'takeRight': require('./takeRight'),
- 'takeRightWhile': require('./takeRightWhile'),
- 'takeWhile': require('./takeWhile'),
- 'union': require('./union'),
- 'unionBy': require('./unionBy'),
- 'unionWith': require('./unionWith'),
- 'uniq': require('./uniq'),
- 'uniqBy': require('./uniqBy'),
- 'uniqWith': require('./uniqWith'),
- 'unzip': require('./unzip'),
- 'unzipWith': require('./unzipWith'),
- 'without': require('./without'),
- 'xor': require('./xor'),
- 'xorBy': require('./xorBy'),
- 'xorWith': require('./xorWith'),
- 'zip': require('./zip'),
- 'zipObject': require('./zipObject'),
- 'zipObjectDeep': require('./zipObjectDeep'),
- 'zipWith': require('./zipWith')
-};
diff --git a/assets/node_modules/lodash/ary.js b/assets/node_modules/lodash/ary.js
deleted file mode 100644
index 70c87d0..0000000
--- a/assets/node_modules/lodash/ary.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var createWrap = require('./_createWrap');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_ARY_FLAG = 128;
-
-/**
- * Creates a function that invokes `func`, with up to `n` arguments,
- * ignoring any additional arguments.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {Function} func The function to cap arguments for.
- * @param {number} [n=func.length] The arity cap.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Function} Returns the new capped function.
- * @example
- *
- * _.map(['6', '8', '10'], _.ary(parseInt, 1));
- * // => [6, 8, 10]
- */
-function ary(func, n, guard) {
- n = guard ? undefined : n;
- n = (func && n == null) ? func.length : n;
- return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
-}
-
-module.exports = ary;
diff --git a/assets/node_modules/lodash/assign.js b/assets/node_modules/lodash/assign.js
deleted file mode 100644
index 909db26..0000000
--- a/assets/node_modules/lodash/assign.js
+++ /dev/null
@@ -1,58 +0,0 @@
-var assignValue = require('./_assignValue'),
- copyObject = require('./_copyObject'),
- createAssigner = require('./_createAssigner'),
- isArrayLike = require('./isArrayLike'),
- isPrototype = require('./_isPrototype'),
- keys = require('./keys');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Assigns own enumerable string keyed properties of source objects to the
- * destination object. Source objects are applied from left to right.
- * Subsequent sources overwrite property assignments of previous sources.
- *
- * **Note:** This method mutates `object` and is loosely based on
- * [`Object.assign`](https://mdn.io/Object/assign).
- *
- * @static
- * @memberOf _
- * @since 0.10.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @see _.assignIn
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * }
- *
- * function Bar() {
- * this.c = 3;
- * }
- *
- * Foo.prototype.b = 2;
- * Bar.prototype.d = 4;
- *
- * _.assign({ 'a': 0 }, new Foo, new Bar);
- * // => { 'a': 1, 'c': 3 }
- */
-var assign = createAssigner(function(object, source) {
- if (isPrototype(source) || isArrayLike(source)) {
- copyObject(source, keys(source), object);
- return;
- }
- for (var key in source) {
- if (hasOwnProperty.call(source, key)) {
- assignValue(object, key, source[key]);
- }
- }
-});
-
-module.exports = assign;
diff --git a/assets/node_modules/lodash/assignIn.js b/assets/node_modules/lodash/assignIn.js
deleted file mode 100644
index e663473..0000000
--- a/assets/node_modules/lodash/assignIn.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var copyObject = require('./_copyObject'),
- createAssigner = require('./_createAssigner'),
- keysIn = require('./keysIn');
-
-/**
- * This method is like `_.assign` except that it iterates over own and
- * inherited source properties.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @alias extend
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @see _.assign
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * }
- *
- * function Bar() {
- * this.c = 3;
- * }
- *
- * Foo.prototype.b = 2;
- * Bar.prototype.d = 4;
- *
- * _.assignIn({ 'a': 0 }, new Foo, new Bar);
- * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
- */
-var assignIn = createAssigner(function(object, source) {
- copyObject(source, keysIn(source), object);
-});
-
-module.exports = assignIn;
diff --git a/assets/node_modules/lodash/assignInWith.js b/assets/node_modules/lodash/assignInWith.js
deleted file mode 100644
index 68fcc0b..0000000
--- a/assets/node_modules/lodash/assignInWith.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var copyObject = require('./_copyObject'),
- createAssigner = require('./_createAssigner'),
- keysIn = require('./keysIn');
-
-/**
- * This method is like `_.assignIn` except that it accepts `customizer`
- * which is invoked to produce the assigned values. If `customizer` returns
- * `undefined`, assignment is handled by the method instead. The `customizer`
- * is invoked with five arguments: (objValue, srcValue, key, object, source).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @alias extendWith
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} sources The source objects.
- * @param {Function} [customizer] The function to customize assigned values.
- * @returns {Object} Returns `object`.
- * @see _.assignWith
- * @example
- *
- * function customizer(objValue, srcValue) {
- * return _.isUndefined(objValue) ? srcValue : objValue;
- * }
- *
- * var defaults = _.partialRight(_.assignInWith, customizer);
- *
- * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
- * // => { 'a': 1, 'b': 2 }
- */
-var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
- copyObject(source, keysIn(source), object, customizer);
-});
-
-module.exports = assignInWith;
diff --git a/assets/node_modules/lodash/assignWith.js b/assets/node_modules/lodash/assignWith.js
deleted file mode 100644
index 7dc6c76..0000000
--- a/assets/node_modules/lodash/assignWith.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var copyObject = require('./_copyObject'),
- createAssigner = require('./_createAssigner'),
- keys = require('./keys');
-
-/**
- * This method is like `_.assign` except that it accepts `customizer`
- * which is invoked to produce the assigned values. If `customizer` returns
- * `undefined`, assignment is handled by the method instead. The `customizer`
- * is invoked with five arguments: (objValue, srcValue, key, object, source).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} sources The source objects.
- * @param {Function} [customizer] The function to customize assigned values.
- * @returns {Object} Returns `object`.
- * @see _.assignInWith
- * @example
- *
- * function customizer(objValue, srcValue) {
- * return _.isUndefined(objValue) ? srcValue : objValue;
- * }
- *
- * var defaults = _.partialRight(_.assignWith, customizer);
- *
- * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
- * // => { 'a': 1, 'b': 2 }
- */
-var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
- copyObject(source, keys(source), object, customizer);
-});
-
-module.exports = assignWith;
diff --git a/assets/node_modules/lodash/at.js b/assets/node_modules/lodash/at.js
deleted file mode 100644
index 781ee9e..0000000
--- a/assets/node_modules/lodash/at.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var baseAt = require('./_baseAt'),
- flatRest = require('./_flatRest');
-
-/**
- * Creates an array of values corresponding to `paths` of `object`.
- *
- * @static
- * @memberOf _
- * @since 1.0.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {...(string|string[])} [paths] The property paths to pick.
- * @returns {Array} Returns the picked values.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
- *
- * _.at(object, ['a[0].b.c', 'a[1]']);
- * // => [3, 4]
- */
-var at = flatRest(baseAt);
-
-module.exports = at;
diff --git a/assets/node_modules/lodash/attempt.js b/assets/node_modules/lodash/attempt.js
deleted file mode 100644
index 624d015..0000000
--- a/assets/node_modules/lodash/attempt.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var apply = require('./_apply'),
- baseRest = require('./_baseRest'),
- isError = require('./isError');
-
-/**
- * Attempts to invoke `func`, returning either the result or the caught error
- * object. Any additional arguments are provided to `func` when it's invoked.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Util
- * @param {Function} func The function to attempt.
- * @param {...*} [args] The arguments to invoke `func` with.
- * @returns {*} Returns the `func` result or error object.
- * @example
- *
- * // Avoid throwing errors for invalid selectors.
- * var elements = _.attempt(function(selector) {
- * return document.querySelectorAll(selector);
- * }, '>_>');
- *
- * if (_.isError(elements)) {
- * elements = [];
- * }
- */
-var attempt = baseRest(function(func, args) {
- try {
- return apply(func, undefined, args);
- } catch (e) {
- return isError(e) ? e : new Error(e);
- }
-});
-
-module.exports = attempt;
diff --git a/assets/node_modules/lodash/before.js b/assets/node_modules/lodash/before.js
deleted file mode 100644
index a3e0a16..0000000
--- a/assets/node_modules/lodash/before.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var toInteger = require('./toInteger');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a function that invokes `func`, with the `this` binding and arguments
- * of the created function, while it's called less than `n` times. Subsequent
- * calls to the created function return the result of the last `func` invocation.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {number} n The number of calls at which `func` is no longer invoked.
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * jQuery(element).on('click', _.before(5, addContactToList));
- * // => Allows adding up to 4 contacts to the list.
- */
-function before(n, func) {
- var result;
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- n = toInteger(n);
- return function() {
- if (--n > 0) {
- result = func.apply(this, arguments);
- }
- if (n <= 1) {
- func = undefined;
- }
- return result;
- };
-}
-
-module.exports = before;
diff --git a/assets/node_modules/lodash/bind.js b/assets/node_modules/lodash/bind.js
deleted file mode 100644
index b1076e9..0000000
--- a/assets/node_modules/lodash/bind.js
+++ /dev/null
@@ -1,57 +0,0 @@
-var baseRest = require('./_baseRest'),
- createWrap = require('./_createWrap'),
- getHolder = require('./_getHolder'),
- replaceHolders = require('./_replaceHolders');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1,
- WRAP_PARTIAL_FLAG = 32;
-
-/**
- * Creates a function that invokes `func` with the `this` binding of `thisArg`
- * and `partials` prepended to the arguments it receives.
- *
- * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
- * may be used as a placeholder for partially applied arguments.
- *
- * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
- * property of bound functions.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to bind.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new bound function.
- * @example
- *
- * function greet(greeting, punctuation) {
- * return greeting + ' ' + this.user + punctuation;
- * }
- *
- * var object = { 'user': 'fred' };
- *
- * var bound = _.bind(greet, object, 'hi');
- * bound('!');
- * // => 'hi fred!'
- *
- * // Bound with placeholders.
- * var bound = _.bind(greet, object, _, '!');
- * bound('hi');
- * // => 'hi fred!'
- */
-var bind = baseRest(function(func, thisArg, partials) {
- var bitmask = WRAP_BIND_FLAG;
- if (partials.length) {
- var holders = replaceHolders(partials, getHolder(bind));
- bitmask |= WRAP_PARTIAL_FLAG;
- }
- return createWrap(func, bitmask, thisArg, partials, holders);
-});
-
-// Assign default placeholders.
-bind.placeholder = {};
-
-module.exports = bind;
diff --git a/assets/node_modules/lodash/bindAll.js b/assets/node_modules/lodash/bindAll.js
deleted file mode 100644
index a35706d..0000000
--- a/assets/node_modules/lodash/bindAll.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var arrayEach = require('./_arrayEach'),
- baseAssignValue = require('./_baseAssignValue'),
- bind = require('./bind'),
- flatRest = require('./_flatRest'),
- toKey = require('./_toKey');
-
-/**
- * Binds methods of an object to the object itself, overwriting the existing
- * method.
- *
- * **Note:** This method doesn't set the "length" property of bound functions.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {Object} object The object to bind and assign the bound methods to.
- * @param {...(string|string[])} methodNames The object method names to bind.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var view = {
- * 'label': 'docs',
- * 'click': function() {
- * console.log('clicked ' + this.label);
- * }
- * };
- *
- * _.bindAll(view, ['click']);
- * jQuery(element).on('click', view.click);
- * // => Logs 'clicked docs' when clicked.
- */
-var bindAll = flatRest(function(object, methodNames) {
- arrayEach(methodNames, function(key) {
- key = toKey(key);
- baseAssignValue(object, key, bind(object[key], object));
- });
- return object;
-});
-
-module.exports = bindAll;
diff --git a/assets/node_modules/lodash/bindKey.js b/assets/node_modules/lodash/bindKey.js
deleted file mode 100644
index f7fd64c..0000000
--- a/assets/node_modules/lodash/bindKey.js
+++ /dev/null
@@ -1,68 +0,0 @@
-var baseRest = require('./_baseRest'),
- createWrap = require('./_createWrap'),
- getHolder = require('./_getHolder'),
- replaceHolders = require('./_replaceHolders');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1,
- WRAP_BIND_KEY_FLAG = 2,
- WRAP_PARTIAL_FLAG = 32;
-
-/**
- * Creates a function that invokes the method at `object[key]` with `partials`
- * prepended to the arguments it receives.
- *
- * This method differs from `_.bind` by allowing bound functions to reference
- * methods that may be redefined or don't yet exist. See
- * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
- * for more details.
- *
- * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for partially applied arguments.
- *
- * @static
- * @memberOf _
- * @since 0.10.0
- * @category Function
- * @param {Object} object The object to invoke the method on.
- * @param {string} key The key of the method.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new bound function.
- * @example
- *
- * var object = {
- * 'user': 'fred',
- * 'greet': function(greeting, punctuation) {
- * return greeting + ' ' + this.user + punctuation;
- * }
- * };
- *
- * var bound = _.bindKey(object, 'greet', 'hi');
- * bound('!');
- * // => 'hi fred!'
- *
- * object.greet = function(greeting, punctuation) {
- * return greeting + 'ya ' + this.user + punctuation;
- * };
- *
- * bound('!');
- * // => 'hiya fred!'
- *
- * // Bound with placeholders.
- * var bound = _.bindKey(object, 'greet', _, '!');
- * bound('hi');
- * // => 'hiya fred!'
- */
-var bindKey = baseRest(function(object, key, partials) {
- var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
- if (partials.length) {
- var holders = replaceHolders(partials, getHolder(bindKey));
- bitmask |= WRAP_PARTIAL_FLAG;
- }
- return createWrap(key, bitmask, object, partials, holders);
-});
-
-// Assign default placeholders.
-bindKey.placeholder = {};
-
-module.exports = bindKey;
diff --git a/assets/node_modules/lodash/camelCase.js b/assets/node_modules/lodash/camelCase.js
deleted file mode 100644
index d7390de..0000000
--- a/assets/node_modules/lodash/camelCase.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var capitalize = require('./capitalize'),
- createCompounder = require('./_createCompounder');
-
-/**
- * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the camel cased string.
- * @example
- *
- * _.camelCase('Foo Bar');
- * // => 'fooBar'
- *
- * _.camelCase('--foo-bar--');
- * // => 'fooBar'
- *
- * _.camelCase('__FOO_BAR__');
- * // => 'fooBar'
- */
-var camelCase = createCompounder(function(result, word, index) {
- word = word.toLowerCase();
- return result + (index ? capitalize(word) : word);
-});
-
-module.exports = camelCase;
diff --git a/assets/node_modules/lodash/capitalize.js b/assets/node_modules/lodash/capitalize.js
deleted file mode 100644
index 3e1600e..0000000
--- a/assets/node_modules/lodash/capitalize.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var toString = require('./toString'),
- upperFirst = require('./upperFirst');
-
-/**
- * Converts the first character of `string` to upper case and the remaining
- * to lower case.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to capitalize.
- * @returns {string} Returns the capitalized string.
- * @example
- *
- * _.capitalize('FRED');
- * // => 'Fred'
- */
-function capitalize(string) {
- return upperFirst(toString(string).toLowerCase());
-}
-
-module.exports = capitalize;
diff --git a/assets/node_modules/lodash/castArray.js b/assets/node_modules/lodash/castArray.js
deleted file mode 100644
index e470bdb..0000000
--- a/assets/node_modules/lodash/castArray.js
+++ /dev/null
@@ -1,44 +0,0 @@
-var isArray = require('./isArray');
-
-/**
- * Casts `value` as an array if it's not one.
- *
- * @static
- * @memberOf _
- * @since 4.4.0
- * @category Lang
- * @param {*} value The value to inspect.
- * @returns {Array} Returns the cast array.
- * @example
- *
- * _.castArray(1);
- * // => [1]
- *
- * _.castArray({ 'a': 1 });
- * // => [{ 'a': 1 }]
- *
- * _.castArray('abc');
- * // => ['abc']
- *
- * _.castArray(null);
- * // => [null]
- *
- * _.castArray(undefined);
- * // => [undefined]
- *
- * _.castArray();
- * // => []
- *
- * var array = [1, 2, 3];
- * console.log(_.castArray(array) === array);
- * // => true
- */
-function castArray() {
- if (!arguments.length) {
- return [];
- }
- var value = arguments[0];
- return isArray(value) ? value : [value];
-}
-
-module.exports = castArray;
diff --git a/assets/node_modules/lodash/ceil.js b/assets/node_modules/lodash/ceil.js
deleted file mode 100644
index 56c8722..0000000
--- a/assets/node_modules/lodash/ceil.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var createRound = require('./_createRound');
-
-/**
- * Computes `number` rounded up to `precision`.
- *
- * @static
- * @memberOf _
- * @since 3.10.0
- * @category Math
- * @param {number} number The number to round up.
- * @param {number} [precision=0] The precision to round up to.
- * @returns {number} Returns the rounded up number.
- * @example
- *
- * _.ceil(4.006);
- * // => 5
- *
- * _.ceil(6.004, 2);
- * // => 6.01
- *
- * _.ceil(6040, -2);
- * // => 6100
- */
-var ceil = createRound('ceil');
-
-module.exports = ceil;
diff --git a/assets/node_modules/lodash/chain.js b/assets/node_modules/lodash/chain.js
deleted file mode 100644
index f6cd647..0000000
--- a/assets/node_modules/lodash/chain.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var lodash = require('./wrapperLodash');
-
-/**
- * Creates a `lodash` wrapper instance that wraps `value` with explicit method
- * chain sequences enabled. The result of such sequences must be unwrapped
- * with `_#value`.
- *
- * @static
- * @memberOf _
- * @since 1.3.0
- * @category Seq
- * @param {*} value The value to wrap.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36 },
- * { 'user': 'fred', 'age': 40 },
- * { 'user': 'pebbles', 'age': 1 }
- * ];
- *
- * var youngest = _
- * .chain(users)
- * .sortBy('age')
- * .map(function(o) {
- * return o.user + ' is ' + o.age;
- * })
- * .head()
- * .value();
- * // => 'pebbles is 1'
- */
-function chain(value) {
- var result = lodash(value);
- result.__chain__ = true;
- return result;
-}
-
-module.exports = chain;
diff --git a/assets/node_modules/lodash/chunk.js b/assets/node_modules/lodash/chunk.js
deleted file mode 100644
index 5b562fe..0000000
--- a/assets/node_modules/lodash/chunk.js
+++ /dev/null
@@ -1,50 +0,0 @@
-var baseSlice = require('./_baseSlice'),
- isIterateeCall = require('./_isIterateeCall'),
- toInteger = require('./toInteger');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeCeil = Math.ceil,
- nativeMax = Math.max;
-
-/**
- * Creates an array of elements split into groups the length of `size`.
- * If `array` can't be split evenly, the final chunk will be the remaining
- * elements.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to process.
- * @param {number} [size=1] The length of each chunk
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the new array of chunks.
- * @example
- *
- * _.chunk(['a', 'b', 'c', 'd'], 2);
- * // => [['a', 'b'], ['c', 'd']]
- *
- * _.chunk(['a', 'b', 'c', 'd'], 3);
- * // => [['a', 'b', 'c'], ['d']]
- */
-function chunk(array, size, guard) {
- if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
- size = 1;
- } else {
- size = nativeMax(toInteger(size), 0);
- }
- var length = array == null ? 0 : array.length;
- if (!length || size < 1) {
- return [];
- }
- var index = 0,
- resIndex = 0,
- result = Array(nativeCeil(length / size));
-
- while (index < length) {
- result[resIndex++] = baseSlice(array, index, (index += size));
- }
- return result;
-}
-
-module.exports = chunk;
diff --git a/assets/node_modules/lodash/clamp.js b/assets/node_modules/lodash/clamp.js
deleted file mode 100644
index 91a72c9..0000000
--- a/assets/node_modules/lodash/clamp.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var baseClamp = require('./_baseClamp'),
- toNumber = require('./toNumber');
-
-/**
- * Clamps `number` within the inclusive `lower` and `upper` bounds.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Number
- * @param {number} number The number to clamp.
- * @param {number} [lower] The lower bound.
- * @param {number} upper The upper bound.
- * @returns {number} Returns the clamped number.
- * @example
- *
- * _.clamp(-10, -5, 5);
- * // => -5
- *
- * _.clamp(10, -5, 5);
- * // => 5
- */
-function clamp(number, lower, upper) {
- if (upper === undefined) {
- upper = lower;
- lower = undefined;
- }
- if (upper !== undefined) {
- upper = toNumber(upper);
- upper = upper === upper ? upper : 0;
- }
- if (lower !== undefined) {
- lower = toNumber(lower);
- lower = lower === lower ? lower : 0;
- }
- return baseClamp(toNumber(number), lower, upper);
-}
-
-module.exports = clamp;
diff --git a/assets/node_modules/lodash/clone.js b/assets/node_modules/lodash/clone.js
deleted file mode 100644
index dd439d6..0000000
--- a/assets/node_modules/lodash/clone.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var baseClone = require('./_baseClone');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_SYMBOLS_FLAG = 4;
-
-/**
- * Creates a shallow clone of `value`.
- *
- * **Note:** This method is loosely based on the
- * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
- * and supports cloning arrays, array buffers, booleans, date objects, maps,
- * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
- * arrays. The own enumerable properties of `arguments` objects are cloned
- * as plain objects. An empty object is returned for uncloneable values such
- * as error objects, functions, DOM nodes, and WeakMaps.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to clone.
- * @returns {*} Returns the cloned value.
- * @see _.cloneDeep
- * @example
- *
- * var objects = [{ 'a': 1 }, { 'b': 2 }];
- *
- * var shallow = _.clone(objects);
- * console.log(shallow[0] === objects[0]);
- * // => true
- */
-function clone(value) {
- return baseClone(value, CLONE_SYMBOLS_FLAG);
-}
-
-module.exports = clone;
diff --git a/assets/node_modules/lodash/cloneDeep.js b/assets/node_modules/lodash/cloneDeep.js
deleted file mode 100644
index 4425fbe..0000000
--- a/assets/node_modules/lodash/cloneDeep.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var baseClone = require('./_baseClone');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1,
- CLONE_SYMBOLS_FLAG = 4;
-
-/**
- * This method is like `_.clone` except that it recursively clones `value`.
- *
- * @static
- * @memberOf _
- * @since 1.0.0
- * @category Lang
- * @param {*} value The value to recursively clone.
- * @returns {*} Returns the deep cloned value.
- * @see _.clone
- * @example
- *
- * var objects = [{ 'a': 1 }, { 'b': 2 }];
- *
- * var deep = _.cloneDeep(objects);
- * console.log(deep[0] === objects[0]);
- * // => false
- */
-function cloneDeep(value) {
- return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
-}
-
-module.exports = cloneDeep;
diff --git a/assets/node_modules/lodash/cloneDeepWith.js b/assets/node_modules/lodash/cloneDeepWith.js
deleted file mode 100644
index fd9c6c0..0000000
--- a/assets/node_modules/lodash/cloneDeepWith.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var baseClone = require('./_baseClone');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1,
- CLONE_SYMBOLS_FLAG = 4;
-
-/**
- * This method is like `_.cloneWith` except that it recursively clones `value`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to recursively clone.
- * @param {Function} [customizer] The function to customize cloning.
- * @returns {*} Returns the deep cloned value.
- * @see _.cloneWith
- * @example
- *
- * function customizer(value) {
- * if (_.isElement(value)) {
- * return value.cloneNode(true);
- * }
- * }
- *
- * var el = _.cloneDeepWith(document.body, customizer);
- *
- * console.log(el === document.body);
- * // => false
- * console.log(el.nodeName);
- * // => 'BODY'
- * console.log(el.childNodes.length);
- * // => 20
- */
-function cloneDeepWith(value, customizer) {
- customizer = typeof customizer == 'function' ? customizer : undefined;
- return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
-}
-
-module.exports = cloneDeepWith;
diff --git a/assets/node_modules/lodash/cloneWith.js b/assets/node_modules/lodash/cloneWith.js
deleted file mode 100644
index d2f4e75..0000000
--- a/assets/node_modules/lodash/cloneWith.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var baseClone = require('./_baseClone');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_SYMBOLS_FLAG = 4;
-
-/**
- * This method is like `_.clone` except that it accepts `customizer` which
- * is invoked to produce the cloned value. If `customizer` returns `undefined`,
- * cloning is handled by the method instead. The `customizer` is invoked with
- * up to four arguments; (value [, index|key, object, stack]).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to clone.
- * @param {Function} [customizer] The function to customize cloning.
- * @returns {*} Returns the cloned value.
- * @see _.cloneDeepWith
- * @example
- *
- * function customizer(value) {
- * if (_.isElement(value)) {
- * return value.cloneNode(false);
- * }
- * }
- *
- * var el = _.cloneWith(document.body, customizer);
- *
- * console.log(el === document.body);
- * // => false
- * console.log(el.nodeName);
- * // => 'BODY'
- * console.log(el.childNodes.length);
- * // => 0
- */
-function cloneWith(value, customizer) {
- customizer = typeof customizer == 'function' ? customizer : undefined;
- return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
-}
-
-module.exports = cloneWith;
diff --git a/assets/node_modules/lodash/collection.js b/assets/node_modules/lodash/collection.js
deleted file mode 100644
index 77fe837..0000000
--- a/assets/node_modules/lodash/collection.js
+++ /dev/null
@@ -1,30 +0,0 @@
-module.exports = {
- 'countBy': require('./countBy'),
- 'each': require('./each'),
- 'eachRight': require('./eachRight'),
- 'every': require('./every'),
- 'filter': require('./filter'),
- 'find': require('./find'),
- 'findLast': require('./findLast'),
- 'flatMap': require('./flatMap'),
- 'flatMapDeep': require('./flatMapDeep'),
- 'flatMapDepth': require('./flatMapDepth'),
- 'forEach': require('./forEach'),
- 'forEachRight': require('./forEachRight'),
- 'groupBy': require('./groupBy'),
- 'includes': require('./includes'),
- 'invokeMap': require('./invokeMap'),
- 'keyBy': require('./keyBy'),
- 'map': require('./map'),
- 'orderBy': require('./orderBy'),
- 'partition': require('./partition'),
- 'reduce': require('./reduce'),
- 'reduceRight': require('./reduceRight'),
- 'reject': require('./reject'),
- 'sample': require('./sample'),
- 'sampleSize': require('./sampleSize'),
- 'shuffle': require('./shuffle'),
- 'size': require('./size'),
- 'some': require('./some'),
- 'sortBy': require('./sortBy')
-};
diff --git a/assets/node_modules/lodash/commit.js b/assets/node_modules/lodash/commit.js
deleted file mode 100644
index fe4db71..0000000
--- a/assets/node_modules/lodash/commit.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var LodashWrapper = require('./_LodashWrapper');
-
-/**
- * Executes the chain sequence and returns the wrapped result.
- *
- * @name commit
- * @memberOf _
- * @since 3.2.0
- * @category Seq
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var array = [1, 2];
- * var wrapped = _(array).push(3);
- *
- * console.log(array);
- * // => [1, 2]
- *
- * wrapped = wrapped.commit();
- * console.log(array);
- * // => [1, 2, 3]
- *
- * wrapped.last();
- * // => 3
- *
- * console.log(array);
- * // => [1, 2, 3]
- */
-function wrapperCommit() {
- return new LodashWrapper(this.value(), this.__chain__);
-}
-
-module.exports = wrapperCommit;
diff --git a/assets/node_modules/lodash/compact.js b/assets/node_modules/lodash/compact.js
deleted file mode 100644
index 031fab4..0000000
--- a/assets/node_modules/lodash/compact.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Creates an array with all falsey values removed. The values `false`, `null`,
- * `0`, `""`, `undefined`, and `NaN` are falsey.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to compact.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * _.compact([0, 1, false, 2, '', 3]);
- * // => [1, 2, 3]
- */
-function compact(array) {
- var index = -1,
- length = array == null ? 0 : array.length,
- resIndex = 0,
- result = [];
-
- while (++index < length) {
- var value = array[index];
- if (value) {
- result[resIndex++] = value;
- }
- }
- return result;
-}
-
-module.exports = compact;
diff --git a/assets/node_modules/lodash/concat.js b/assets/node_modules/lodash/concat.js
deleted file mode 100644
index 1da48a4..0000000
--- a/assets/node_modules/lodash/concat.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var arrayPush = require('./_arrayPush'),
- baseFlatten = require('./_baseFlatten'),
- copyArray = require('./_copyArray'),
- isArray = require('./isArray');
-
-/**
- * Creates a new array concatenating `array` with any additional arrays
- * and/or values.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to concatenate.
- * @param {...*} [values] The values to concatenate.
- * @returns {Array} Returns the new concatenated array.
- * @example
- *
- * var array = [1];
- * var other = _.concat(array, 2, [3], [[4]]);
- *
- * console.log(other);
- * // => [1, 2, 3, [4]]
- *
- * console.log(array);
- * // => [1]
- */
-function concat() {
- var length = arguments.length;
- if (!length) {
- return [];
- }
- var args = Array(length - 1),
- array = arguments[0],
- index = length;
-
- while (index--) {
- args[index - 1] = arguments[index];
- }
- return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
-}
-
-module.exports = concat;
diff --git a/assets/node_modules/lodash/cond.js b/assets/node_modules/lodash/cond.js
deleted file mode 100644
index 6455598..0000000
--- a/assets/node_modules/lodash/cond.js
+++ /dev/null
@@ -1,60 +0,0 @@
-var apply = require('./_apply'),
- arrayMap = require('./_arrayMap'),
- baseIteratee = require('./_baseIteratee'),
- baseRest = require('./_baseRest');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a function that iterates over `pairs` and invokes the corresponding
- * function of the first predicate to return truthy. The predicate-function
- * pairs are invoked with the `this` binding and arguments of the created
- * function.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {Array} pairs The predicate-function pairs.
- * @returns {Function} Returns the new composite function.
- * @example
- *
- * var func = _.cond([
- * [_.matches({ 'a': 1 }), _.constant('matches A')],
- * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
- * [_.stubTrue, _.constant('no match')]
- * ]);
- *
- * func({ 'a': 1, 'b': 2 });
- * // => 'matches A'
- *
- * func({ 'a': 0, 'b': 1 });
- * // => 'matches B'
- *
- * func({ 'a': '1', 'b': '2' });
- * // => 'no match'
- */
-function cond(pairs) {
- var length = pairs == null ? 0 : pairs.length,
- toIteratee = baseIteratee;
-
- pairs = !length ? [] : arrayMap(pairs, function(pair) {
- if (typeof pair[1] != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- return [toIteratee(pair[0]), pair[1]];
- });
-
- return baseRest(function(args) {
- var index = -1;
- while (++index < length) {
- var pair = pairs[index];
- if (apply(pair[0], this, args)) {
- return apply(pair[1], this, args);
- }
- }
- });
-}
-
-module.exports = cond;
diff --git a/assets/node_modules/lodash/conforms.js b/assets/node_modules/lodash/conforms.js
deleted file mode 100644
index 5501a94..0000000
--- a/assets/node_modules/lodash/conforms.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var baseClone = require('./_baseClone'),
- baseConforms = require('./_baseConforms');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1;
-
-/**
- * Creates a function that invokes the predicate properties of `source` with
- * the corresponding property values of a given object, returning `true` if
- * all predicates return truthy, else `false`.
- *
- * **Note:** The created function is equivalent to `_.conformsTo` with
- * `source` partially applied.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {Object} source The object of property predicates to conform to.
- * @returns {Function} Returns the new spec function.
- * @example
- *
- * var objects = [
- * { 'a': 2, 'b': 1 },
- * { 'a': 1, 'b': 2 }
- * ];
- *
- * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
- * // => [{ 'a': 1, 'b': 2 }]
- */
-function conforms(source) {
- return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
-}
-
-module.exports = conforms;
diff --git a/assets/node_modules/lodash/conformsTo.js b/assets/node_modules/lodash/conformsTo.js
deleted file mode 100644
index b8a93eb..0000000
--- a/assets/node_modules/lodash/conformsTo.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var baseConformsTo = require('./_baseConformsTo'),
- keys = require('./keys');
-
-/**
- * Checks if `object` conforms to `source` by invoking the predicate
- * properties of `source` with the corresponding property values of `object`.
- *
- * **Note:** This method is equivalent to `_.conforms` when `source` is
- * partially applied.
- *
- * @static
- * @memberOf _
- * @since 4.14.0
- * @category Lang
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property predicates to conform to.
- * @returns {boolean} Returns `true` if `object` conforms, else `false`.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- *
- * _.conformsTo(object, { 'b': function(n) { return n > 1; } });
- * // => true
- *
- * _.conformsTo(object, { 'b': function(n) { return n > 2; } });
- * // => false
- */
-function conformsTo(object, source) {
- return source == null || baseConformsTo(object, source, keys(source));
-}
-
-module.exports = conformsTo;
diff --git a/assets/node_modules/lodash/constant.js b/assets/node_modules/lodash/constant.js
deleted file mode 100644
index 655ece3..0000000
--- a/assets/node_modules/lodash/constant.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * Creates a function that returns `value`.
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Util
- * @param {*} value The value to return from the new function.
- * @returns {Function} Returns the new constant function.
- * @example
- *
- * var objects = _.times(2, _.constant({ 'a': 1 }));
- *
- * console.log(objects);
- * // => [{ 'a': 1 }, { 'a': 1 }]
- *
- * console.log(objects[0] === objects[1]);
- * // => true
- */
-function constant(value) {
- return function() {
- return value;
- };
-}
-
-module.exports = constant;
diff --git a/assets/node_modules/lodash/core.js b/assets/node_modules/lodash/core.js
deleted file mode 100644
index 89c77de..0000000
--- a/assets/node_modules/lodash/core.js
+++ /dev/null
@@ -1,3854 +0,0 @@
-/**
- * @license
- * Lodash (Custom Build) <https://lodash.com/>
- * Build: `lodash core -o ./dist/lodash.core.js`
- * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-;(function() {
-
- /** Used as a safe reference for `undefined` in pre-ES5 environments. */
- var undefined;
-
- /** Used as the semantic version number. */
- var VERSION = '4.17.15';
-
- /** Error message constants. */
- var FUNC_ERROR_TEXT = 'Expected a function';
-
- /** Used to compose bitmasks for value comparisons. */
- var COMPARE_PARTIAL_FLAG = 1,
- COMPARE_UNORDERED_FLAG = 2;
-
- /** Used to compose bitmasks for function metadata. */
- var WRAP_BIND_FLAG = 1,
- WRAP_PARTIAL_FLAG = 32;
-
- /** Used as references for various `Number` constants. */
- var INFINITY = 1 / 0,
- MAX_SAFE_INTEGER = 9007199254740991;
-
- /** `Object#toString` result references. */
- var argsTag = '[object Arguments]',
- arrayTag = '[object Array]',
- asyncTag = '[object AsyncFunction]',
- boolTag = '[object Boolean]',
- dateTag = '[object Date]',
- errorTag = '[object Error]',
- funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]',
- numberTag = '[object Number]',
- objectTag = '[object Object]',
- proxyTag = '[object Proxy]',
- regexpTag = '[object RegExp]',
- stringTag = '[object String]';
-
- /** Used to match HTML entities and HTML characters. */
- var reUnescapedHtml = /[&<>"']/g,
- reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
-
- /** Used to detect unsigned integer values. */
- var reIsUint = /^(?:0|[1-9]\d*)$/;
-
- /** Used to map characters to HTML entities. */
- var htmlEscapes = {
- '&': '&amp;',
- '<': '&lt;',
- '>': '&gt;',
- '"': '&quot;',
- "'": '&#39;'
- };
-
- /** Detect free variable `global` from Node.js. */
- var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
- /** Detect free variable `self`. */
- var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
- /** Used as a reference to the global object. */
- var root = freeGlobal || freeSelf || Function('return this')();
-
- /** Detect free variable `exports`. */
- var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
-
- /** Detect free variable `module`. */
- var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
-
- /*--------------------------------------------------------------------------*/
-
- /**
- * Appends the elements of `values` to `array`.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {Array} values The values to append.
- * @returns {Array} Returns `array`.
- */
- function arrayPush(array, values) {
- array.push.apply(array, values);
- return array;
- }
-
- /**
- * The base implementation of `_.findIndex` and `_.findLastIndex` without
- * support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {number} fromIndex The index to search from.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
- function baseFindIndex(array, predicate, fromIndex, fromRight) {
- var length = array.length,
- index = fromIndex + (fromRight ? 1 : -1);
-
- while ((fromRight ? index-- : ++index < length)) {
- if (predicate(array[index], index, array)) {
- return index;
- }
- }
- return -1;
- }
-
- /**
- * The base implementation of `_.property` without support for deep paths.
- *
- * @private
- * @param {string} key The key of the property to get.
- * @returns {Function} Returns the new accessor function.
- */
- function baseProperty(key) {
- return function(object) {
- return object == null ? undefined : object[key];
- };
- }
-
- /**
- * The base implementation of `_.propertyOf` without support for deep paths.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Function} Returns the new accessor function.
- */
- function basePropertyOf(object) {
- return function(key) {
- return object == null ? undefined : object[key];
- };
- }
-
- /**
- * The base implementation of `_.reduce` and `_.reduceRight`, without support
- * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {*} accumulator The initial value.
- * @param {boolean} initAccum Specify using the first or last element of
- * `collection` as the initial value.
- * @param {Function} eachFunc The function to iterate over `collection`.
- * @returns {*} Returns the accumulated value.
- */
- function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
- eachFunc(collection, function(value, index, collection) {
- accumulator = initAccum
- ? (initAccum = false, value)
- : iteratee(accumulator, value, index, collection);
- });
- return accumulator;
- }
-
- /**
- * The base implementation of `_.values` and `_.valuesIn` which creates an
- * array of `object` property values corresponding to the property names
- * of `props`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array} props The property names to get values for.
- * @returns {Object} Returns the array of property values.
- */
- function baseValues(object, props) {
- return baseMap(props, function(key) {
- return object[key];
- });
- }
-
- /**
- * Used by `_.escape` to convert characters to HTML entities.
- *
- * @private
- * @param {string} chr The matched character to escape.
- * @returns {string} Returns the escaped character.
- */
- var escapeHtmlChar = basePropertyOf(htmlEscapes);
-
- /**
- * Creates a unary function that invokes `func` with its argument transformed.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {Function} transform The argument transform.
- * @returns {Function} Returns the new function.
- */
- function overArg(func, transform) {
- return function(arg) {
- return func(transform(arg));
- };
- }
-
- /*--------------------------------------------------------------------------*/
-
- /** Used for built-in method references. */
- var arrayProto = Array.prototype,
- objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var hasOwnProperty = objectProto.hasOwnProperty;
-
- /** Used to generate unique IDs. */
- var idCounter = 0;
-
- /**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
- var nativeObjectToString = objectProto.toString;
-
- /** Used to restore the original `_` reference in `_.noConflict`. */
- var oldDash = root._;
-
- /** Built-in value references. */
- var objectCreate = Object.create,
- propertyIsEnumerable = objectProto.propertyIsEnumerable;
-
- /* Built-in method references for those with the same name as other `lodash` methods. */
- var nativeIsFinite = root.isFinite,
- nativeKeys = overArg(Object.keys, Object),
- nativeMax = Math.max;
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Creates a `lodash` object which wraps `value` to enable implicit method
- * chain sequences. Methods that operate on and return arrays, collections,
- * and functions can be chained together. Methods that retrieve a single value
- * or may return a primitive value will automatically end the chain sequence
- * and return the unwrapped value. Otherwise, the value must be unwrapped
- * with `_#value`.
- *
- * Explicit chain sequences, which must be unwrapped with `_#value`, may be
- * enabled using `_.chain`.
- *
- * The execution of chained methods is lazy, that is, it's deferred until
- * `_#value` is implicitly or explicitly called.
- *
- * Lazy evaluation allows several methods to support shortcut fusion.
- * Shortcut fusion is an optimization to merge iteratee calls; this avoids
- * the creation of intermediate arrays and can greatly reduce the number of
- * iteratee executions. Sections of a chain sequence qualify for shortcut
- * fusion if the section is applied to an array and iteratees accept only
- * one argument. The heuristic for whether a section qualifies for shortcut
- * fusion is subject to change.
- *
- * Chaining is supported in custom builds as long as the `_#value` method is
- * directly or indirectly included in the build.
- *
- * In addition to lodash methods, wrappers have `Array` and `String` methods.
- *
- * The wrapper `Array` methods are:
- * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
- *
- * The wrapper `String` methods are:
- * `replace` and `split`
- *
- * The wrapper methods that support shortcut fusion are:
- * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
- * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
- * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
- *
- * The chainable wrapper methods are:
- * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
- * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
- * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
- * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
- * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
- * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
- * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
- * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
- * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
- * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
- * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
- * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
- * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
- * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
- * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
- * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
- * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
- * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
- * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
- * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
- * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
- * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
- * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
- * `zipObject`, `zipObjectDeep`, and `zipWith`
- *
- * The wrapper methods that are **not** chainable by default are:
- * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
- * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
- * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
- * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
- * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
- * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
- * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
- * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
- * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
- * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
- * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
- * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
- * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
- * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
- * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
- * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
- * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
- * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
- * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
- * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
- * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
- * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
- * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
- * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
- * `upperFirst`, `value`, and `words`
- *
- * @name _
- * @constructor
- * @category Seq
- * @param {*} value The value to wrap in a `lodash` instance.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * function square(n) {
- * return n * n;
- * }
- *
- * var wrapped = _([1, 2, 3]);
- *
- * // Returns an unwrapped value.
- * wrapped.reduce(_.add);
- * // => 6
- *
- * // Returns a wrapped value.
- * var squares = wrapped.map(square);
- *
- * _.isArray(squares);
- * // => false
- *
- * _.isArray(squares.value());
- * // => true
- */
- function lodash(value) {
- return value instanceof LodashWrapper
- ? value
- : new LodashWrapper(value);
- }
-
- /**
- * The base implementation of `_.create` without support for assigning
- * properties to the created object.
- *
- * @private
- * @param {Object} proto The object to inherit from.
- * @returns {Object} Returns the new object.
- */
- var baseCreate = (function() {
- function object() {}
- return function(proto) {
- if (!isObject(proto)) {
- return {};
- }
- if (objectCreate) {
- return objectCreate(proto);
- }
- object.prototype = proto;
- var result = new object;
- object.prototype = undefined;
- return result;
- };
- }());
-
- /**
- * The base constructor for creating `lodash` wrapper objects.
- *
- * @private
- * @param {*} value The value to wrap.
- * @param {boolean} [chainAll] Enable explicit method chain sequences.
- */
- function LodashWrapper(value, chainAll) {
- this.__wrapped__ = value;
- this.__actions__ = [];
- this.__chain__ = !!chainAll;
- }
-
- LodashWrapper.prototype = baseCreate(lodash.prototype);
- LodashWrapper.prototype.constructor = LodashWrapper;
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Assigns `value` to `key` of `object` if the existing value is not equivalent
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */
- function assignValue(object, key, value) {
- var objValue = object[key];
- if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
- (value === undefined && !(key in object))) {
- baseAssignValue(object, key, value);
- }
- }
-
- /**
- * The base implementation of `assignValue` and `assignMergeValue` without
- * value checks.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */
- function baseAssignValue(object, key, value) {
- object[key] = value;
- }
-
- /**
- * The base implementation of `_.delay` and `_.defer` which accepts `args`
- * to provide to `func`.
- *
- * @private
- * @param {Function} func The function to delay.
- * @param {number} wait The number of milliseconds to delay invocation.
- * @param {Array} args The arguments to provide to `func`.
- * @returns {number|Object} Returns the timer id or timeout object.
- */
- function baseDelay(func, wait, args) {
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- return setTimeout(function() { func.apply(undefined, args); }, wait);
- }
-
- /**
- * The base implementation of `_.forEach` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- */
- var baseEach = createBaseEach(baseForOwn);
-
- /**
- * The base implementation of `_.every` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if all elements pass the predicate check,
- * else `false`
- */
- function baseEvery(collection, predicate) {
- var result = true;
- baseEach(collection, function(value, index, collection) {
- result = !!predicate(value, index, collection);
- return result;
- });
- return result;
- }
-
- /**
- * The base implementation of methods like `_.max` and `_.min` which accepts a
- * `comparator` to determine the extremum value.
- *
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} iteratee The iteratee invoked per iteration.
- * @param {Function} comparator The comparator used to compare values.
- * @returns {*} Returns the extremum value.
- */
- function baseExtremum(array, iteratee, comparator) {
- var index = -1,
- length = array.length;
-
- while (++index < length) {
- var value = array[index],
- current = iteratee(value);
-
- if (current != null && (computed === undefined
- ? (current === current && !false)
- : comparator(current, computed)
- )) {
- var computed = current,
- result = value;
- }
- }
- return result;
- }
-
- /**
- * The base implementation of `_.filter` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- */
- function baseFilter(collection, predicate) {
- var result = [];
- baseEach(collection, function(value, index, collection) {
- if (predicate(value, index, collection)) {
- result.push(value);
- }
- });
- return result;
- }
-
- /**
- * The base implementation of `_.flatten` with support for restricting flattening.
- *
- * @private
- * @param {Array} array The array to flatten.
- * @param {number} depth The maximum recursion depth.
- * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
- * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
- * @param {Array} [result=[]] The initial result value.
- * @returns {Array} Returns the new flattened array.
- */
- function baseFlatten(array, depth, predicate, isStrict, result) {
- var index = -1,
- length = array.length;
-
- predicate || (predicate = isFlattenable);
- result || (result = []);
-
- while (++index < length) {
- var value = array[index];
- if (depth > 0 && predicate(value)) {
- if (depth > 1) {
- // Recursively flatten arrays (susceptible to call stack limits).
- baseFlatten(value, depth - 1, predicate, isStrict, result);
- } else {
- arrayPush(result, value);
- }
- } else if (!isStrict) {
- result[result.length] = value;
- }
- }
- return result;
- }
-
- /**
- * The base implementation of `baseForOwn` which iterates over `object`
- * properties returned by `keysFunc` and invokes `iteratee` for each property.
- * Iteratee functions may exit iteration early by explicitly returning `false`.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @returns {Object} Returns `object`.
- */
- var baseFor = createBaseFor();
-
- /**
- * The base implementation of `_.forOwn` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Object} Returns `object`.
- */
- function baseForOwn(object, iteratee) {
- return object && baseFor(object, iteratee, keys);
- }
-
- /**
- * The base implementation of `_.functions` which creates an array of
- * `object` function property names filtered from `props`.
- *
- * @private
- * @param {Object} object The object to inspect.
- * @param {Array} props The property names to filter.
- * @returns {Array} Returns the function names.
- */
- function baseFunctions(object, props) {
- return baseFilter(props, function(key) {
- return isFunction(object[key]);
- });
- }
-
- /**
- * The base implementation of `getTag` without fallbacks for buggy environments.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
- function baseGetTag(value) {
- return objectToString(value);
- }
-
- /**
- * The base implementation of `_.gt` which doesn't coerce arguments.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is greater than `other`,
- * else `false`.
- */
- function baseGt(value, other) {
- return value > other;
- }
-
- /**
- * The base implementation of `_.isArguments`.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- */
- var baseIsArguments = noop;
-
- /**
- * The base implementation of `_.isDate` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
- */
- function baseIsDate(value) {
- return isObjectLike(value) && baseGetTag(value) == dateTag;
- }
-
- /**
- * The base implementation of `_.isEqual` which supports partial comparisons
- * and tracks traversed objects.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @param {boolean} bitmask The bitmask flags.
- * 1 - Unordered comparison
- * 2 - Partial comparison
- * @param {Function} [customizer] The function to customize comparisons.
- * @param {Object} [stack] Tracks traversed `value` and `other` objects.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- */
- function baseIsEqual(value, other, bitmask, customizer, stack) {
- if (value === other) {
- return true;
- }
- if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
- return value !== value && other !== other;
- }
- return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
- }
-
- /**
- * A specialized version of `baseIsEqual` for arrays and objects which performs
- * deep comparisons and tracks traversed objects enabling objects with circular
- * references to be compared.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} [stack] Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
- function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
- var objIsArr = isArray(object),
- othIsArr = isArray(other),
- objTag = objIsArr ? arrayTag : baseGetTag(object),
- othTag = othIsArr ? arrayTag : baseGetTag(other);
-
- objTag = objTag == argsTag ? objectTag : objTag;
- othTag = othTag == argsTag ? objectTag : othTag;
-
- var objIsObj = objTag == objectTag,
- othIsObj = othTag == objectTag,
- isSameTag = objTag == othTag;
-
- stack || (stack = []);
- var objStack = find(stack, function(entry) {
- return entry[0] == object;
- });
- var othStack = find(stack, function(entry) {
- return entry[0] == other;
- });
- if (objStack && othStack) {
- return objStack[1] == other;
- }
- stack.push([object, other]);
- stack.push([other, object]);
- if (isSameTag && !objIsObj) {
- var result = (objIsArr)
- ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
- : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
- stack.pop();
- return result;
- }
- if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
- var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
- othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
-
- if (objIsWrapped || othIsWrapped) {
- var objUnwrapped = objIsWrapped ? object.value() : object,
- othUnwrapped = othIsWrapped ? other.value() : other;
-
- var result = equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
- stack.pop();
- return result;
- }
- }
- if (!isSameTag) {
- return false;
- }
- var result = equalObjects(object, other, bitmask, customizer, equalFunc, stack);
- stack.pop();
- return result;
- }
-
- /**
- * The base implementation of `_.isRegExp` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
- */
- function baseIsRegExp(value) {
- return isObjectLike(value) && baseGetTag(value) == regexpTag;
- }
-
- /**
- * The base implementation of `_.iteratee`.
- *
- * @private
- * @param {*} [value=_.identity] The value to convert to an iteratee.
- * @returns {Function} Returns the iteratee.
- */
- function baseIteratee(func) {
- if (typeof func == 'function') {
- return func;
- }
- if (func == null) {
- return identity;
- }
- return (typeof func == 'object' ? baseMatches : baseProperty)(func);
- }
-
- /**
- * The base implementation of `_.lt` which doesn't coerce arguments.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is less than `other`,
- * else `false`.
- */
- function baseLt(value, other) {
- return value < other;
- }
-
- /**
- * The base implementation of `_.map` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- */
- function baseMap(collection, iteratee) {
- var index = -1,
- result = isArrayLike(collection) ? Array(collection.length) : [];
-
- baseEach(collection, function(value, key, collection) {
- result[++index] = iteratee(value, key, collection);
- });
- return result;
- }
-
- /**
- * The base implementation of `_.matches` which doesn't clone `source`.
- *
- * @private
- * @param {Object} source The object of property values to match.
- * @returns {Function} Returns the new spec function.
- */
- function baseMatches(source) {
- var props = nativeKeys(source);
- return function(object) {
- var length = props.length;
- if (object == null) {
- return !length;
- }
- object = Object(object);
- while (length--) {
- var key = props[length];
- if (!(key in object &&
- baseIsEqual(source[key], object[key], COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG)
- )) {
- return false;
- }
- }
- return true;
- };
- }
-
- /**
- * The base implementation of `_.pick` without support for individual
- * property identifiers.
- *
- * @private
- * @param {Object} object The source object.
- * @param {string[]} paths The property paths to pick.
- * @returns {Object} Returns the new object.
- */
- function basePick(object, props) {
- object = Object(object);
- return reduce(props, function(result, key) {
- if (key in object) {
- result[key] = object[key];
- }
- return result;
- }, {});
- }
-
- /**
- * The base implementation of `_.rest` which doesn't validate or coerce arguments.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @returns {Function} Returns the new function.
- */
- function baseRest(func, start) {
- return setToString(overRest(func, start, identity), func + '');
- }
-
- /**
- * The base implementation of `_.slice` without an iteratee call guard.
- *
- * @private
- * @param {Array} array The array to slice.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the slice of `array`.
- */
- function baseSlice(array, start, end) {
- var index = -1,
- length = array.length;
-
- if (start < 0) {
- start = -start > length ? 0 : (length + start);
- }
- end = end > length ? length : end;
- if (end < 0) {
- end += length;
- }
- length = start > end ? 0 : ((end - start) >>> 0);
- start >>>= 0;
-
- var result = Array(length);
- while (++index < length) {
- result[index] = array[index + start];
- }
- return result;
- }
-
- /**
- * Copies the values of `source` to `array`.
- *
- * @private
- * @param {Array} source The array to copy values from.
- * @param {Array} [array=[]] The array to copy values to.
- * @returns {Array} Returns `array`.
- */
- function copyArray(source) {
- return baseSlice(source, 0, source.length);
- }
-
- /**
- * The base implementation of `_.some` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- * else `false`.
- */
- function baseSome(collection, predicate) {
- var result;
-
- baseEach(collection, function(value, index, collection) {
- result = predicate(value, index, collection);
- return !result;
- });
- return !!result;
- }
-
- /**
- * The base implementation of `wrapperValue` which returns the result of
- * performing a sequence of actions on the unwrapped `value`, where each
- * successive action is supplied the return value of the previous.
- *
- * @private
- * @param {*} value The unwrapped value.
- * @param {Array} actions Actions to perform to resolve the unwrapped value.
- * @returns {*} Returns the resolved value.
- */
- function baseWrapperValue(value, actions) {
- var result = value;
- return reduce(actions, function(result, action) {
- return action.func.apply(action.thisArg, arrayPush([result], action.args));
- }, result);
- }
-
- /**
- * Compares values to sort them in ascending order.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {number} Returns the sort order indicator for `value`.
- */
- function compareAscending(value, other) {
- if (value !== other) {
- var valIsDefined = value !== undefined,
- valIsNull = value === null,
- valIsReflexive = value === value,
- valIsSymbol = false;
-
- var othIsDefined = other !== undefined,
- othIsNull = other === null,
- othIsReflexive = other === other,
- othIsSymbol = false;
-
- if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
- (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
- (valIsNull && othIsDefined && othIsReflexive) ||
- (!valIsDefined && othIsReflexive) ||
- !valIsReflexive) {
- return 1;
- }
- if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
- (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
- (othIsNull && valIsDefined && valIsReflexive) ||
- (!othIsDefined && valIsReflexive) ||
- !othIsReflexive) {
- return -1;
- }
- }
- return 0;
- }
-
- /**
- * Copies properties of `source` to `object`.
- *
- * @private
- * @param {Object} source The object to copy properties from.
- * @param {Array} props The property identifiers to copy.
- * @param {Object} [object={}] The object to copy properties to.
- * @param {Function} [customizer] The function to customize copied values.
- * @returns {Object} Returns `object`.
- */
- function copyObject(source, props, object, customizer) {
- var isNew = !object;
- object || (object = {});
-
- var index = -1,
- length = props.length;
-
- while (++index < length) {
- var key = props[index];
-
- var newValue = customizer
- ? customizer(object[key], source[key], key, object, source)
- : undefined;
-
- if (newValue === undefined) {
- newValue = source[key];
- }
- if (isNew) {
- baseAssignValue(object, key, newValue);
- } else {
- assignValue(object, key, newValue);
- }
- }
- return object;
- }
-
- /**
- * Creates a function like `_.assign`.
- *
- * @private
- * @param {Function} assigner The function to assign values.
- * @returns {Function} Returns the new assigner function.
- */
- function createAssigner(assigner) {
- return baseRest(function(object, sources) {
- var index = -1,
- length = sources.length,
- customizer = length > 1 ? sources[length - 1] : undefined;
-
- customizer = (assigner.length > 3 && typeof customizer == 'function')
- ? (length--, customizer)
- : undefined;
-
- object = Object(object);
- while (++index < length) {
- var source = sources[index];
- if (source) {
- assigner(object, source, index, customizer);
- }
- }
- return object;
- });
- }
-
- /**
- * Creates a `baseEach` or `baseEachRight` function.
- *
- * @private
- * @param {Function} eachFunc The function to iterate over a collection.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new base function.
- */
- function createBaseEach(eachFunc, fromRight) {
- return function(collection, iteratee) {
- if (collection == null) {
- return collection;
- }
- if (!isArrayLike(collection)) {
- return eachFunc(collection, iteratee);
- }
- var length = collection.length,
- index = fromRight ? length : -1,
- iterable = Object(collection);
-
- while ((fromRight ? index-- : ++index < length)) {
- if (iteratee(iterable[index], index, iterable) === false) {
- break;
- }
- }
- return collection;
- };
- }
-
- /**
- * Creates a base function for methods like `_.forIn` and `_.forOwn`.
- *
- * @private
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new base function.
- */
- function createBaseFor(fromRight) {
- return function(object, iteratee, keysFunc) {
- var index = -1,
- iterable = Object(object),
- props = keysFunc(object),
- length = props.length;
-
- while (length--) {
- var key = props[fromRight ? length : ++index];
- if (iteratee(iterable[key], key, iterable) === false) {
- break;
- }
- }
- return object;
- };
- }
-
- /**
- * Creates a function that produces an instance of `Ctor` regardless of
- * whether it was invoked as part of a `new` expression or by `call` or `apply`.
- *
- * @private
- * @param {Function} Ctor The constructor to wrap.
- * @returns {Function} Returns the new wrapped function.
- */
- function createCtor(Ctor) {
- return function() {
- // Use a `switch` statement to work with class constructors. See
- // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
- // for more details.
- var args = arguments;
- var thisBinding = baseCreate(Ctor.prototype),
- result = Ctor.apply(thisBinding, args);
-
- // Mimic the constructor's `return` behavior.
- // See https://es5.github.io/#x13.2.2 for more details.
- return isObject(result) ? result : thisBinding;
- };
- }
-
- /**
- * Creates a `_.find` or `_.findLast` function.
- *
- * @private
- * @param {Function} findIndexFunc The function to find the collection index.
- * @returns {Function} Returns the new find function.
- */
- function createFind(findIndexFunc) {
- return function(collection, predicate, fromIndex) {
- var iterable = Object(collection);
- if (!isArrayLike(collection)) {
- var iteratee = baseIteratee(predicate, 3);
- collection = keys(collection);
- predicate = function(key) { return iteratee(iterable[key], key, iterable); };
- }
- var index = findIndexFunc(collection, predicate, fromIndex);
- return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
- };
- }
-
- /**
- * Creates a function that wraps `func` to invoke it with the `this` binding
- * of `thisArg` and `partials` prepended to the arguments it receives.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {Array} partials The arguments to prepend to those provided to
- * the new function.
- * @returns {Function} Returns the new wrapped function.
- */
- function createPartial(func, bitmask, thisArg, partials) {
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- var isBind = bitmask & WRAP_BIND_FLAG,
- Ctor = createCtor(func);
-
- function wrapper() {
- var argsIndex = -1,
- argsLength = arguments.length,
- leftIndex = -1,
- leftLength = partials.length,
- args = Array(leftLength + argsLength),
- fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
-
- while (++leftIndex < leftLength) {
- args[leftIndex] = partials[leftIndex];
- }
- while (argsLength--) {
- args[leftIndex++] = arguments[++argsIndex];
- }
- return fn.apply(isBind ? thisArg : this, args);
- }
- return wrapper;
- }
-
- /**
- * A specialized version of `baseIsEqualDeep` for arrays with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Array} array The array to compare.
- * @param {Array} other The other array to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `array` and `other` objects.
- * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
- */
- function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
- var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
- arrLength = array.length,
- othLength = other.length;
-
- if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
- return false;
- }
- var index = -1,
- result = true,
- seen = (bitmask & COMPARE_UNORDERED_FLAG) ? [] : undefined;
-
- // Ignore non-index properties.
- while (++index < arrLength) {
- var arrValue = array[index],
- othValue = other[index];
-
- var compared;
- if (compared !== undefined) {
- if (compared) {
- continue;
- }
- result = false;
- break;
- }
- // Recursively compare arrays (susceptible to call stack limits).
- if (seen) {
- if (!baseSome(other, function(othValue, othIndex) {
- if (!indexOf(seen, othIndex) &&
- (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
- return seen.push(othIndex);
- }
- })) {
- result = false;
- break;
- }
- } else if (!(
- arrValue === othValue ||
- equalFunc(arrValue, othValue, bitmask, customizer, stack)
- )) {
- result = false;
- break;
- }
- }
- return result;
- }
-
- /**
- * A specialized version of `baseIsEqualDeep` for comparing objects of
- * the same `toStringTag`.
- *
- * **Note:** This function only supports comparing values with tags of
- * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {string} tag The `toStringTag` of the objects to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
- function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
- switch (tag) {
-
- case boolTag:
- case dateTag:
- case numberTag:
- // Coerce booleans to `1` or `0` and dates to milliseconds.
- // Invalid dates are coerced to `NaN`.
- return eq(+object, +other);
-
- case errorTag:
- return object.name == other.name && object.message == other.message;
-
- case regexpTag:
- case stringTag:
- // Coerce regexes to strings and treat strings, primitives and objects,
- // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
- // for more details.
- return object == (other + '');
-
- }
- return false;
- }
-
- /**
- * A specialized version of `baseIsEqualDeep` for objects with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
- function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
- var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
- objProps = keys(object),
- objLength = objProps.length,
- othProps = keys(other),
- othLength = othProps.length;
-
- if (objLength != othLength && !isPartial) {
- return false;
- }
- var index = objLength;
- while (index--) {
- var key = objProps[index];
- if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
- return false;
- }
- }
- var result = true;
-
- var skipCtor = isPartial;
- while (++index < objLength) {
- key = objProps[index];
- var objValue = object[key],
- othValue = other[key];
-
- var compared;
- // Recursively compare objects (susceptible to call stack limits).
- if (!(compared === undefined
- ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
- : compared
- )) {
- result = false;
- break;
- }
- skipCtor || (skipCtor = key == 'constructor');
- }
- if (result && !skipCtor) {
- var objCtor = object.constructor,
- othCtor = other.constructor;
-
- // Non `Object` object instances with different constructors are not equal.
- if (objCtor != othCtor &&
- ('constructor' in object && 'constructor' in other) &&
- !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
- typeof othCtor == 'function' && othCtor instanceof othCtor)) {
- result = false;
- }
- }
- return result;
- }
-
- /**
- * A specialized version of `baseRest` which flattens the rest array.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @returns {Function} Returns the new function.
- */
- function flatRest(func) {
- return setToString(overRest(func, undefined, flatten), func + '');
- }
-
- /**
- * Checks if `value` is a flattenable `arguments` object or array.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
- */
- function isFlattenable(value) {
- return isArray(value) || isArguments(value);
- }
-
- /**
- * Checks if `value` is a valid array-like index.
- *
- * @private
- * @param {*} value The value to check.
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
- */
- function isIndex(value, length) {
- var type = typeof value;
- length = length == null ? MAX_SAFE_INTEGER : length;
-
- return !!length &&
- (type == 'number' ||
- (type != 'symbol' && reIsUint.test(value))) &&
- (value > -1 && value % 1 == 0 && value < length);
- }
-
- /**
- * Checks if the given arguments are from an iteratee call.
- *
- * @private
- * @param {*} value The potential iteratee value argument.
- * @param {*} index The potential iteratee index or key argument.
- * @param {*} object The potential iteratee object argument.
- * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
- * else `false`.
- */
- function isIterateeCall(value, index, object) {
- if (!isObject(object)) {
- return false;
- }
- var type = typeof index;
- if (type == 'number'
- ? (isArrayLike(object) && isIndex(index, object.length))
- : (type == 'string' && index in object)
- ) {
- return eq(object[index], value);
- }
- return false;
- }
-
- /**
- * This function is like
- * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
- * except that it includes inherited enumerable properties.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
- function nativeKeysIn(object) {
- var result = [];
- if (object != null) {
- for (var key in Object(object)) {
- result.push(key);
- }
- }
- return result;
- }
-
- /**
- * Converts `value` to a string using `Object.prototype.toString`.
- *
- * @private
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- */
- function objectToString(value) {
- return nativeObjectToString.call(value);
- }
-
- /**
- * A specialized version of `baseRest` which transforms the rest array.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @param {Function} transform The rest array transform.
- * @returns {Function} Returns the new function.
- */
- function overRest(func, start, transform) {
- start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
- return function() {
- var args = arguments,
- index = -1,
- length = nativeMax(args.length - start, 0),
- array = Array(length);
-
- while (++index < length) {
- array[index] = args[start + index];
- }
- index = -1;
- var otherArgs = Array(start + 1);
- while (++index < start) {
- otherArgs[index] = args[index];
- }
- otherArgs[start] = transform(array);
- return func.apply(this, otherArgs);
- };
- }
-
- /**
- * Sets the `toString` method of `func` to return `string`.
- *
- * @private
- * @param {Function} func The function to modify.
- * @param {Function} string The `toString` result.
- * @returns {Function} Returns `func`.
- */
- var setToString = identity;
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Creates an array with all falsey values removed. The values `false`, `null`,
- * `0`, `""`, `undefined`, and `NaN` are falsey.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to compact.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * _.compact([0, 1, false, 2, '', 3]);
- * // => [1, 2, 3]
- */
- function compact(array) {
- return baseFilter(array, Boolean);
- }
-
- /**
- * Creates a new array concatenating `array` with any additional arrays
- * and/or values.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to concatenate.
- * @param {...*} [values] The values to concatenate.
- * @returns {Array} Returns the new concatenated array.
- * @example
- *
- * var array = [1];
- * var other = _.concat(array, 2, [3], [[4]]);
- *
- * console.log(other);
- * // => [1, 2, 3, [4]]
- *
- * console.log(array);
- * // => [1]
- */
- function concat() {
- var length = arguments.length;
- if (!length) {
- return [];
- }
- var args = Array(length - 1),
- array = arguments[0],
- index = length;
-
- while (index--) {
- args[index - 1] = arguments[index];
- }
- return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
- }
-
- /**
- * This method is like `_.find` except that it returns the index of the first
- * element `predicate` returns truthy for instead of the element itself.
- *
- * @static
- * @memberOf _
- * @since 1.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {number} Returns the index of the found element, else `-1`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'active': false },
- * { 'user': 'fred', 'active': false },
- * { 'user': 'pebbles', 'active': true }
- * ];
- *
- * _.findIndex(users, function(o) { return o.user == 'barney'; });
- * // => 0
- *
- * // The `_.matches` iteratee shorthand.
- * _.findIndex(users, { 'user': 'fred', 'active': false });
- * // => 1
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findIndex(users, ['active', false]);
- * // => 0
- *
- * // The `_.property` iteratee shorthand.
- * _.findIndex(users, 'active');
- * // => 2
- */
- function findIndex(array, predicate, fromIndex) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return -1;
- }
- var index = fromIndex == null ? 0 : toInteger(fromIndex);
- if (index < 0) {
- index = nativeMax(length + index, 0);
- }
- return baseFindIndex(array, baseIteratee(predicate, 3), index);
- }
-
- /**
- * Flattens `array` a single level deep.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to flatten.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * _.flatten([1, [2, [3, [4]], 5]]);
- * // => [1, 2, [3, [4]], 5]
- */
- function flatten(array) {
- var length = array == null ? 0 : array.length;
- return length ? baseFlatten(array, 1) : [];
- }
-
- /**
- * Recursively flattens `array`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to flatten.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * _.flattenDeep([1, [2, [3, [4]], 5]]);
- * // => [1, 2, 3, 4, 5]
- */
- function flattenDeep(array) {
- var length = array == null ? 0 : array.length;
- return length ? baseFlatten(array, INFINITY) : [];
- }
-
- /**
- * Gets the first element of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @alias first
- * @category Array
- * @param {Array} array The array to query.
- * @returns {*} Returns the first element of `array`.
- * @example
- *
- * _.head([1, 2, 3]);
- * // => 1
- *
- * _.head([]);
- * // => undefined
- */
- function head(array) {
- return (array && array.length) ? array[0] : undefined;
- }
-
- /**
- * Gets the index at which the first occurrence of `value` is found in `array`
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons. If `fromIndex` is negative, it's used as the
- * offset from the end of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- * @example
- *
- * _.indexOf([1, 2, 1, 2], 2);
- * // => 1
- *
- * // Search from the `fromIndex`.
- * _.indexOf([1, 2, 1, 2], 2, 2);
- * // => 3
- */
- function indexOf(array, value, fromIndex) {
- var length = array == null ? 0 : array.length;
- if (typeof fromIndex == 'number') {
- fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;
- } else {
- fromIndex = 0;
- }
- var index = (fromIndex || 0) - 1,
- isReflexive = value === value;
-
- while (++index < length) {
- var other = array[index];
- if ((isReflexive ? other === value : other !== other)) {
- return index;
- }
- }
- return -1;
- }
-
- /**
- * Gets the last element of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to query.
- * @returns {*} Returns the last element of `array`.
- * @example
- *
- * _.last([1, 2, 3]);
- * // => 3
- */
- function last(array) {
- var length = array == null ? 0 : array.length;
- return length ? array[length - 1] : undefined;
- }
-
- /**
- * Creates a slice of `array` from `start` up to, but not including, `end`.
- *
- * **Note:** This method is used instead of
- * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
- * returned.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to slice.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the slice of `array`.
- */
- function slice(array, start, end) {
- var length = array == null ? 0 : array.length;
- start = start == null ? 0 : +start;
- end = end === undefined ? length : +end;
- return length ? baseSlice(array, start, end) : [];
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Creates a `lodash` wrapper instance that wraps `value` with explicit method
- * chain sequences enabled. The result of such sequences must be unwrapped
- * with `_#value`.
- *
- * @static
- * @memberOf _
- * @since 1.3.0
- * @category Seq
- * @param {*} value The value to wrap.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36 },
- * { 'user': 'fred', 'age': 40 },
- * { 'user': 'pebbles', 'age': 1 }
- * ];
- *
- * var youngest = _
- * .chain(users)
- * .sortBy('age')
- * .map(function(o) {
- * return o.user + ' is ' + o.age;
- * })
- * .head()
- * .value();
- * // => 'pebbles is 1'
- */
- function chain(value) {
- var result = lodash(value);
- result.__chain__ = true;
- return result;
- }
-
- /**
- * This method invokes `interceptor` and returns `value`. The interceptor
- * is invoked with one argument; (value). The purpose of this method is to
- * "tap into" a method chain sequence in order to modify intermediate results.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Seq
- * @param {*} value The value to provide to `interceptor`.
- * @param {Function} interceptor The function to invoke.
- * @returns {*} Returns `value`.
- * @example
- *
- * _([1, 2, 3])
- * .tap(function(array) {
- * // Mutate input array.
- * array.pop();
- * })
- * .reverse()
- * .value();
- * // => [2, 1]
- */
- function tap(value, interceptor) {
- interceptor(value);
- return value;
- }
-
- /**
- * This method is like `_.tap` except that it returns the result of `interceptor`.
- * The purpose of this method is to "pass thru" values replacing intermediate
- * results in a method chain sequence.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Seq
- * @param {*} value The value to provide to `interceptor`.
- * @param {Function} interceptor The function to invoke.
- * @returns {*} Returns the result of `interceptor`.
- * @example
- *
- * _(' abc ')
- * .chain()
- * .trim()
- * .thru(function(value) {
- * return [value];
- * })
- * .value();
- * // => ['abc']
- */
- function thru(value, interceptor) {
- return interceptor(value);
- }
-
- /**
- * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
- *
- * @name chain
- * @memberOf _
- * @since 0.1.0
- * @category Seq
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36 },
- * { 'user': 'fred', 'age': 40 }
- * ];
- *
- * // A sequence without explicit chaining.
- * _(users).head();
- * // => { 'user': 'barney', 'age': 36 }
- *
- * // A sequence with explicit chaining.
- * _(users)
- * .chain()
- * .head()
- * .pick('user')
- * .value();
- * // => { 'user': 'barney' }
- */
- function wrapperChain() {
- return chain(this);
- }
-
- /**
- * Executes the chain sequence to resolve the unwrapped value.
- *
- * @name value
- * @memberOf _
- * @since 0.1.0
- * @alias toJSON, valueOf
- * @category Seq
- * @returns {*} Returns the resolved unwrapped value.
- * @example
- *
- * _([1, 2, 3]).value();
- * // => [1, 2, 3]
- */
- function wrapperValue() {
- return baseWrapperValue(this.__wrapped__, this.__actions__);
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Checks if `predicate` returns truthy for **all** elements of `collection`.
- * Iteration is stopped once `predicate` returns falsey. The predicate is
- * invoked with three arguments: (value, index|key, collection).
- *
- * **Note:** This method returns `true` for
- * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
- * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
- * elements of empty collections.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {boolean} Returns `true` if all elements pass the predicate check,
- * else `false`.
- * @example
- *
- * _.every([true, 1, null, 'yes'], Boolean);
- * // => false
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': false },
- * { 'user': 'fred', 'age': 40, 'active': false }
- * ];
- *
- * // The `_.matches` iteratee shorthand.
- * _.every(users, { 'user': 'barney', 'active': false });
- * // => false
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.every(users, ['active', false]);
- * // => true
- *
- * // The `_.property` iteratee shorthand.
- * _.every(users, 'active');
- * // => false
- */
- function every(collection, predicate, guard) {
- predicate = guard ? undefined : predicate;
- return baseEvery(collection, baseIteratee(predicate));
- }
-
- /**
- * Iterates over elements of `collection`, returning an array of all elements
- * `predicate` returns truthy for. The predicate is invoked with three
- * arguments: (value, index|key, collection).
- *
- * **Note:** Unlike `_.remove`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- * @see _.reject
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': true },
- * { 'user': 'fred', 'age': 40, 'active': false }
- * ];
- *
- * _.filter(users, function(o) { return !o.active; });
- * // => objects for ['fred']
- *
- * // The `_.matches` iteratee shorthand.
- * _.filter(users, { 'age': 36, 'active': true });
- * // => objects for ['barney']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.filter(users, ['active', false]);
- * // => objects for ['fred']
- *
- * // The `_.property` iteratee shorthand.
- * _.filter(users, 'active');
- * // => objects for ['barney']
- */
- function filter(collection, predicate) {
- return baseFilter(collection, baseIteratee(predicate));
- }
-
- /**
- * Iterates over elements of `collection`, returning the first element
- * `predicate` returns truthy for. The predicate is invoked with three
- * arguments: (value, index|key, collection).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {*} Returns the matched element, else `undefined`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': true },
- * { 'user': 'fred', 'age': 40, 'active': false },
- * { 'user': 'pebbles', 'age': 1, 'active': true }
- * ];
- *
- * _.find(users, function(o) { return o.age < 40; });
- * // => object for 'barney'
- *
- * // The `_.matches` iteratee shorthand.
- * _.find(users, { 'age': 1, 'active': true });
- * // => object for 'pebbles'
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.find(users, ['active', false]);
- * // => object for 'fred'
- *
- * // The `_.property` iteratee shorthand.
- * _.find(users, 'active');
- * // => object for 'barney'
- */
- var find = createFind(findIndex);
-
- /**
- * Iterates over elements of `collection` and invokes `iteratee` for each element.
- * The iteratee is invoked with three arguments: (value, index|key, collection).
- * Iteratee functions may exit iteration early by explicitly returning `false`.
- *
- * **Note:** As with other "Collections" methods, objects with a "length"
- * property are iterated like arrays. To avoid this behavior use `_.forIn`
- * or `_.forOwn` for object iteration.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @alias each
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- * @see _.forEachRight
- * @example
- *
- * _.forEach([1, 2], function(value) {
- * console.log(value);
- * });
- * // => Logs `1` then `2`.
- *
- * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
- * console.log(key);
- * });
- * // => Logs 'a' then 'b' (iteration order is not guaranteed).
- */
- function forEach(collection, iteratee) {
- return baseEach(collection, baseIteratee(iteratee));
- }
-
- /**
- * Creates an array of values by running each element in `collection` thru
- * `iteratee`. The iteratee is invoked with three arguments:
- * (value, index|key, collection).
- *
- * Many lodash methods are guarded to work as iteratees for methods like
- * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
- *
- * The guarded methods are:
- * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
- * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
- * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
- * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- * @example
- *
- * function square(n) {
- * return n * n;
- * }
- *
- * _.map([4, 8], square);
- * // => [16, 64]
- *
- * _.map({ 'a': 4, 'b': 8 }, square);
- * // => [16, 64] (iteration order is not guaranteed)
- *
- * var users = [
- * { 'user': 'barney' },
- * { 'user': 'fred' }
- * ];
- *
- * // The `_.property` iteratee shorthand.
- * _.map(users, 'user');
- * // => ['barney', 'fred']
- */
- function map(collection, iteratee) {
- return baseMap(collection, baseIteratee(iteratee));
- }
-
- /**
- * Reduces `collection` to a value which is the accumulated result of running
- * each element in `collection` thru `iteratee`, where each successive
- * invocation is supplied the return value of the previous. If `accumulator`
- * is not given, the first element of `collection` is used as the initial
- * value. The iteratee is invoked with four arguments:
- * (accumulator, value, index|key, collection).
- *
- * Many lodash methods are guarded to work as iteratees for methods like
- * `_.reduce`, `_.reduceRight`, and `_.transform`.
- *
- * The guarded methods are:
- * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
- * and `sortBy`
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @returns {*} Returns the accumulated value.
- * @see _.reduceRight
- * @example
- *
- * _.reduce([1, 2], function(sum, n) {
- * return sum + n;
- * }, 0);
- * // => 3
- *
- * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
- * (result[value] || (result[value] = [])).push(key);
- * return result;
- * }, {});
- * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
- */
- function reduce(collection, iteratee, accumulator) {
- return baseReduce(collection, baseIteratee(iteratee), accumulator, arguments.length < 3, baseEach);
- }
-
- /**
- * Gets the size of `collection` by returning its length for array-like
- * values or the number of own enumerable string keyed properties for objects.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object|string} collection The collection to inspect.
- * @returns {number} Returns the collection size.
- * @example
- *
- * _.size([1, 2, 3]);
- * // => 3
- *
- * _.size({ 'a': 1, 'b': 2 });
- * // => 2
- *
- * _.size('pebbles');
- * // => 7
- */
- function size(collection) {
- if (collection == null) {
- return 0;
- }
- collection = isArrayLike(collection) ? collection : nativeKeys(collection);
- return collection.length;
- }
-
- /**
- * Checks if `predicate` returns truthy for **any** element of `collection`.
- * Iteration is stopped once `predicate` returns truthy. The predicate is
- * invoked with three arguments: (value, index|key, collection).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- * else `false`.
- * @example
- *
- * _.some([null, 0, 'yes', false], Boolean);
- * // => true
- *
- * var users = [
- * { 'user': 'barney', 'active': true },
- * { 'user': 'fred', 'active': false }
- * ];
- *
- * // The `_.matches` iteratee shorthand.
- * _.some(users, { 'user': 'barney', 'active': false });
- * // => false
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.some(users, ['active', false]);
- * // => true
- *
- * // The `_.property` iteratee shorthand.
- * _.some(users, 'active');
- * // => true
- */
- function some(collection, predicate, guard) {
- predicate = guard ? undefined : predicate;
- return baseSome(collection, baseIteratee(predicate));
- }
-
- /**
- * Creates an array of elements, sorted in ascending order by the results of
- * running each element in a collection thru each iteratee. This method
- * performs a stable sort, that is, it preserves the original sort order of
- * equal elements. The iteratees are invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {...(Function|Function[])} [iteratees=[_.identity]]
- * The iteratees to sort by.
- * @returns {Array} Returns the new sorted array.
- * @example
- *
- * var users = [
- * { 'user': 'fred', 'age': 48 },
- * { 'user': 'barney', 'age': 36 },
- * { 'user': 'fred', 'age': 40 },
- * { 'user': 'barney', 'age': 34 }
- * ];
- *
- * _.sortBy(users, [function(o) { return o.user; }]);
- * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
- *
- * _.sortBy(users, ['user', 'age']);
- * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]
- */
- function sortBy(collection, iteratee) {
- var index = 0;
- iteratee = baseIteratee(iteratee);
-
- return baseMap(baseMap(collection, function(value, key, collection) {
- return { 'value': value, 'index': index++, 'criteria': iteratee(value, key, collection) };
- }).sort(function(object, other) {
- return compareAscending(object.criteria, other.criteria) || (object.index - other.index);
- }), baseProperty('value'));
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Creates a function that invokes `func`, with the `this` binding and arguments
- * of the created function, while it's called less than `n` times. Subsequent
- * calls to the created function return the result of the last `func` invocation.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {number} n The number of calls at which `func` is no longer invoked.
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * jQuery(element).on('click', _.before(5, addContactToList));
- * // => Allows adding up to 4 contacts to the list.
- */
- function before(n, func) {
- var result;
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- n = toInteger(n);
- return function() {
- if (--n > 0) {
- result = func.apply(this, arguments);
- }
- if (n <= 1) {
- func = undefined;
- }
- return result;
- };
- }
-
- /**
- * Creates a function that invokes `func` with the `this` binding of `thisArg`
- * and `partials` prepended to the arguments it receives.
- *
- * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
- * may be used as a placeholder for partially applied arguments.
- *
- * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
- * property of bound functions.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to bind.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new bound function.
- * @example
- *
- * function greet(greeting, punctuation) {
- * return greeting + ' ' + this.user + punctuation;
- * }
- *
- * var object = { 'user': 'fred' };
- *
- * var bound = _.bind(greet, object, 'hi');
- * bound('!');
- * // => 'hi fred!'
- *
- * // Bound with placeholders.
- * var bound = _.bind(greet, object, _, '!');
- * bound('hi');
- * // => 'hi fred!'
- */
- var bind = baseRest(function(func, thisArg, partials) {
- return createPartial(func, WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG, thisArg, partials);
- });
-
- /**
- * Defers invoking the `func` until the current call stack has cleared. Any
- * additional arguments are provided to `func` when it's invoked.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to defer.
- * @param {...*} [args] The arguments to invoke `func` with.
- * @returns {number} Returns the timer id.
- * @example
- *
- * _.defer(function(text) {
- * console.log(text);
- * }, 'deferred');
- * // => Logs 'deferred' after one millisecond.
- */
- var defer = baseRest(function(func, args) {
- return baseDelay(func, 1, args);
- });
-
- /**
- * Invokes `func` after `wait` milliseconds. Any additional arguments are
- * provided to `func` when it's invoked.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to delay.
- * @param {number} wait The number of milliseconds to delay invocation.
- * @param {...*} [args] The arguments to invoke `func` with.
- * @returns {number} Returns the timer id.
- * @example
- *
- * _.delay(function(text) {
- * console.log(text);
- * }, 1000, 'later');
- * // => Logs 'later' after one second.
- */
- var delay = baseRest(function(func, wait, args) {
- return baseDelay(func, toNumber(wait) || 0, args);
- });
-
- /**
- * Creates a function that negates the result of the predicate `func`. The
- * `func` predicate is invoked with the `this` binding and arguments of the
- * created function.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {Function} predicate The predicate to negate.
- * @returns {Function} Returns the new negated function.
- * @example
- *
- * function isEven(n) {
- * return n % 2 == 0;
- * }
- *
- * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
- * // => [1, 3, 5]
- */
- function negate(predicate) {
- if (typeof predicate != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- return function() {
- var args = arguments;
- return !predicate.apply(this, args);
- };
- }
-
- /**
- * Creates a function that is restricted to invoking `func` once. Repeat calls
- * to the function return the value of the first invocation. The `func` is
- * invoked with the `this` binding and arguments of the created function.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * var initialize = _.once(createApplication);
- * initialize();
- * initialize();
- * // => `createApplication` is invoked once
- */
- function once(func) {
- return before(2, func);
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Creates a shallow clone of `value`.
- *
- * **Note:** This method is loosely based on the
- * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
- * and supports cloning arrays, array buffers, booleans, date objects, maps,
- * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
- * arrays. The own enumerable properties of `arguments` objects are cloned
- * as plain objects. An empty object is returned for uncloneable values such
- * as error objects, functions, DOM nodes, and WeakMaps.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to clone.
- * @returns {*} Returns the cloned value.
- * @see _.cloneDeep
- * @example
- *
- * var objects = [{ 'a': 1 }, { 'b': 2 }];
- *
- * var shallow = _.clone(objects);
- * console.log(shallow[0] === objects[0]);
- * // => true
- */
- function clone(value) {
- if (!isObject(value)) {
- return value;
- }
- return isArray(value) ? copyArray(value) : copyObject(value, nativeKeys(value));
- }
-
- /**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */
- function eq(value, other) {
- return value === other || (value !== value && other !== other);
- }
-
- /**
- * Checks if `value` is likely an `arguments` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- * else `false`.
- * @example
- *
- * _.isArguments(function() { return arguments; }());
- * // => true
- *
- * _.isArguments([1, 2, 3]);
- * // => false
- */
- var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
- return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
- !propertyIsEnumerable.call(value, 'callee');
- };
-
- /**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
- var isArray = Array.isArray;
-
- /**
- * Checks if `value` is array-like. A value is considered array-like if it's
- * not a function and has a `value.length` that's an integer greater than or
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
- * @example
- *
- * _.isArrayLike([1, 2, 3]);
- * // => true
- *
- * _.isArrayLike(document.body.children);
- * // => true
- *
- * _.isArrayLike('abc');
- * // => true
- *
- * _.isArrayLike(_.noop);
- * // => false
- */
- function isArrayLike(value) {
- return value != null && isLength(value.length) && !isFunction(value);
- }
-
- /**
- * Checks if `value` is classified as a boolean primitive or object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
- * @example
- *
- * _.isBoolean(false);
- * // => true
- *
- * _.isBoolean(null);
- * // => false
- */
- function isBoolean(value) {
- return value === true || value === false ||
- (isObjectLike(value) && baseGetTag(value) == boolTag);
- }
-
- /**
- * Checks if `value` is classified as a `Date` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
- * @example
- *
- * _.isDate(new Date);
- * // => true
- *
- * _.isDate('Mon April 23 2012');
- * // => false
- */
- var isDate = baseIsDate;
-
- /**
- * Checks if `value` is an empty object, collection, map, or set.
- *
- * Objects are considered empty if they have no own enumerable string keyed
- * properties.
- *
- * Array-like values such as `arguments` objects, arrays, buffers, strings, or
- * jQuery-like collections are considered empty if they have a `length` of `0`.
- * Similarly, maps and sets are considered empty if they have a `size` of `0`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is empty, else `false`.
- * @example
- *
- * _.isEmpty(null);
- * // => true
- *
- * _.isEmpty(true);
- * // => true
- *
- * _.isEmpty(1);
- * // => true
- *
- * _.isEmpty([1, 2, 3]);
- * // => false
- *
- * _.isEmpty({ 'a': 1 });
- * // => false
- */
- function isEmpty(value) {
- if (isArrayLike(value) &&
- (isArray(value) || isString(value) ||
- isFunction(value.splice) || isArguments(value))) {
- return !value.length;
- }
- return !nativeKeys(value).length;
- }
-
- /**
- * Performs a deep comparison between two values to determine if they are
- * equivalent.
- *
- * **Note:** This method supports comparing arrays, array buffers, booleans,
- * date objects, error objects, maps, numbers, `Object` objects, regexes,
- * sets, strings, symbols, and typed arrays. `Object` objects are compared
- * by their own, not inherited, enumerable properties. Functions and DOM
- * nodes are compared by strict equality, i.e. `===`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.isEqual(object, other);
- * // => true
- *
- * object === other;
- * // => false
- */
- function isEqual(value, other) {
- return baseIsEqual(value, other);
- }
-
- /**
- * Checks if `value` is a finite primitive number.
- *
- * **Note:** This method is based on
- * [`Number.isFinite`](https://mdn.io/Number/isFinite).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
- * @example
- *
- * _.isFinite(3);
- * // => true
- *
- * _.isFinite(Number.MIN_VALUE);
- * // => true
- *
- * _.isFinite(Infinity);
- * // => false
- *
- * _.isFinite('3');
- * // => false
- */
- function isFinite(value) {
- return typeof value == 'number' && nativeIsFinite(value);
- }
-
- /**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
- function isFunction(value) {
- if (!isObject(value)) {
- return false;
- }
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 9 which returns 'object' for typed arrays and other constructors.
- var tag = baseGetTag(value);
- return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
- }
-
- /**
- * Checks if `value` is a valid array-like length.
- *
- * **Note:** This method is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
- * @example
- *
- * _.isLength(3);
- * // => true
- *
- * _.isLength(Number.MIN_VALUE);
- * // => false
- *
- * _.isLength(Infinity);
- * // => false
- *
- * _.isLength('3');
- * // => false
- */
- function isLength(value) {
- return typeof value == 'number' &&
- value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
- }
-
- /**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
- function isObject(value) {
- var type = typeof value;
- return value != null && (type == 'object' || type == 'function');
- }
-
- /**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
- function isObjectLike(value) {
- return value != null && typeof value == 'object';
- }
-
- /**
- * Checks if `value` is `NaN`.
- *
- * **Note:** This method is based on
- * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
- * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
- * `undefined` and other non-number values.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
- * @example
- *
- * _.isNaN(NaN);
- * // => true
- *
- * _.isNaN(new Number(NaN));
- * // => true
- *
- * isNaN(undefined);
- * // => true
- *
- * _.isNaN(undefined);
- * // => false
- */
- function isNaN(value) {
- // An `NaN` primitive is the only value that is not equal to itself.
- // Perform the `toStringTag` check first to avoid errors with some
- // ActiveX objects in IE.
- return isNumber(value) && value != +value;
- }
-
- /**
- * Checks if `value` is `null`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
- * @example
- *
- * _.isNull(null);
- * // => true
- *
- * _.isNull(void 0);
- * // => false
- */
- function isNull(value) {
- return value === null;
- }
-
- /**
- * Checks if `value` is classified as a `Number` primitive or object.
- *
- * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
- * classified as numbers, use the `_.isFinite` method.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a number, else `false`.
- * @example
- *
- * _.isNumber(3);
- * // => true
- *
- * _.isNumber(Number.MIN_VALUE);
- * // => true
- *
- * _.isNumber(Infinity);
- * // => true
- *
- * _.isNumber('3');
- * // => false
- */
- function isNumber(value) {
- return typeof value == 'number' ||
- (isObjectLike(value) && baseGetTag(value) == numberTag);
- }
-
- /**
- * Checks if `value` is classified as a `RegExp` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
- * @example
- *
- * _.isRegExp(/abc/);
- * // => true
- *
- * _.isRegExp('/abc/');
- * // => false
- */
- var isRegExp = baseIsRegExp;
-
- /**
- * Checks if `value` is classified as a `String` primitive or object.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a string, else `false`.
- * @example
- *
- * _.isString('abc');
- * // => true
- *
- * _.isString(1);
- * // => false
- */
- function isString(value) {
- return typeof value == 'string' ||
- (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
- }
-
- /**
- * Checks if `value` is `undefined`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
- * @example
- *
- * _.isUndefined(void 0);
- * // => true
- *
- * _.isUndefined(null);
- * // => false
- */
- function isUndefined(value) {
- return value === undefined;
- }
-
- /**
- * Converts `value` to an array.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {Array} Returns the converted array.
- * @example
- *
- * _.toArray({ 'a': 1, 'b': 2 });
- * // => [1, 2]
- *
- * _.toArray('abc');
- * // => ['a', 'b', 'c']
- *
- * _.toArray(1);
- * // => []
- *
- * _.toArray(null);
- * // => []
- */
- function toArray(value) {
- if (!isArrayLike(value)) {
- return values(value);
- }
- return value.length ? copyArray(value) : [];
- }
-
- /**
- * Converts `value` to an integer.
- *
- * **Note:** This method is loosely based on
- * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toInteger(3.2);
- * // => 3
- *
- * _.toInteger(Number.MIN_VALUE);
- * // => 0
- *
- * _.toInteger(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toInteger('3.2');
- * // => 3
- */
- var toInteger = Number;
-
- /**
- * Converts `value` to a number.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {number} Returns the number.
- * @example
- *
- * _.toNumber(3.2);
- * // => 3.2
- *
- * _.toNumber(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toNumber(Infinity);
- * // => Infinity
- *
- * _.toNumber('3.2');
- * // => 3.2
- */
- var toNumber = Number;
-
- /**
- * Converts `value` to a string. An empty string is returned for `null`
- * and `undefined` values. The sign of `-0` is preserved.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.toString(null);
- * // => ''
- *
- * _.toString(-0);
- * // => '-0'
- *
- * _.toString([1, 2, 3]);
- * // => '1,2,3'
- */
- function toString(value) {
- if (typeof value == 'string') {
- return value;
- }
- return value == null ? '' : (value + '');
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Assigns own enumerable string keyed properties of source objects to the
- * destination object. Source objects are applied from left to right.
- * Subsequent sources overwrite property assignments of previous sources.
- *
- * **Note:** This method mutates `object` and is loosely based on
- * [`Object.assign`](https://mdn.io/Object/assign).
- *
- * @static
- * @memberOf _
- * @since 0.10.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @see _.assignIn
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * }
- *
- * function Bar() {
- * this.c = 3;
- * }
- *
- * Foo.prototype.b = 2;
- * Bar.prototype.d = 4;
- *
- * _.assign({ 'a': 0 }, new Foo, new Bar);
- * // => { 'a': 1, 'c': 3 }
- */
- var assign = createAssigner(function(object, source) {
- copyObject(source, nativeKeys(source), object);
- });
-
- /**
- * This method is like `_.assign` except that it iterates over own and
- * inherited source properties.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @alias extend
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @see _.assign
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * }
- *
- * function Bar() {
- * this.c = 3;
- * }
- *
- * Foo.prototype.b = 2;
- * Bar.prototype.d = 4;
- *
- * _.assignIn({ 'a': 0 }, new Foo, new Bar);
- * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
- */
- var assignIn = createAssigner(function(object, source) {
- copyObject(source, nativeKeysIn(source), object);
- });
-
- /**
- * Creates an object that inherits from the `prototype` object. If a
- * `properties` object is given, its own enumerable string keyed properties
- * are assigned to the created object.
- *
- * @static
- * @memberOf _
- * @since 2.3.0
- * @category Object
- * @param {Object} prototype The object to inherit from.
- * @param {Object} [properties] The properties to assign to the object.
- * @returns {Object} Returns the new object.
- * @example
- *
- * function Shape() {
- * this.x = 0;
- * this.y = 0;
- * }
- *
- * function Circle() {
- * Shape.call(this);
- * }
- *
- * Circle.prototype = _.create(Shape.prototype, {
- * 'constructor': Circle
- * });
- *
- * var circle = new Circle;
- * circle instanceof Circle;
- * // => true
- *
- * circle instanceof Shape;
- * // => true
- */
- function create(prototype, properties) {
- var result = baseCreate(prototype);
- return properties == null ? result : assign(result, properties);
- }
-
- /**
- * Assigns own and inherited enumerable string keyed properties of source
- * objects to the destination object for all destination properties that
- * resolve to `undefined`. Source objects are applied from left to right.
- * Once a property is set, additional values of the same property are ignored.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @see _.defaultsDeep
- * @example
- *
- * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
- * // => { 'a': 1, 'b': 2 }
- */
- var defaults = baseRest(function(object, sources) {
- object = Object(object);
-
- var index = -1;
- var length = sources.length;
- var guard = length > 2 ? sources[2] : undefined;
-
- if (guard && isIterateeCall(sources[0], sources[1], guard)) {
- length = 1;
- }
-
- while (++index < length) {
- var source = sources[index];
- var props = keysIn(source);
- var propsIndex = -1;
- var propsLength = props.length;
-
- while (++propsIndex < propsLength) {
- var key = props[propsIndex];
- var value = object[key];
-
- if (value === undefined ||
- (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
- object[key] = source[key];
- }
- }
- }
-
- return object;
- });
-
- /**
- * Checks if `path` is a direct property of `object`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- * @example
- *
- * var object = { 'a': { 'b': 2 } };
- * var other = _.create({ 'a': _.create({ 'b': 2 }) });
- *
- * _.has(object, 'a');
- * // => true
- *
- * _.has(object, 'a.b');
- * // => true
- *
- * _.has(object, ['a', 'b']);
- * // => true
- *
- * _.has(other, 'a');
- * // => false
- */
- function has(object, path) {
- return object != null && hasOwnProperty.call(object, path);
- }
-
- /**
- * Creates an array of the own enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects. See the
- * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
- * for more details.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keys(new Foo);
- * // => ['a', 'b'] (iteration order is not guaranteed)
- *
- * _.keys('hi');
- * // => ['0', '1']
- */
- var keys = nativeKeys;
-
- /**
- * Creates an array of the own and inherited enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keysIn(new Foo);
- * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
- */
- var keysIn = nativeKeysIn;
-
- /**
- * Creates an object composed of the picked `object` properties.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The source object.
- * @param {...(string|string[])} [paths] The property paths to pick.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.pick(object, ['a', 'c']);
- * // => { 'a': 1, 'c': 3 }
- */
- var pick = flatRest(function(object, paths) {
- return object == null ? {} : basePick(object, paths);
- });
-
- /**
- * This method is like `_.get` except that if the resolved value is a
- * function it's invoked with the `this` binding of its parent object and
- * its result is returned.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to resolve.
- * @param {*} [defaultValue] The value returned for `undefined` resolved values.
- * @returns {*} Returns the resolved value.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
- *
- * _.result(object, 'a[0].b.c1');
- * // => 3
- *
- * _.result(object, 'a[0].b.c2');
- * // => 4
- *
- * _.result(object, 'a[0].b.c3', 'default');
- * // => 'default'
- *
- * _.result(object, 'a[0].b.c3', _.constant('default'));
- * // => 'default'
- */
- function result(object, path, defaultValue) {
- var value = object == null ? undefined : object[path];
- if (value === undefined) {
- value = defaultValue;
- }
- return isFunction(value) ? value.call(object) : value;
- }
-
- /**
- * Creates an array of the own enumerable string keyed property values of `object`.
- *
- * **Note:** Non-object values are coerced to objects.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property values.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.values(new Foo);
- * // => [1, 2] (iteration order is not guaranteed)
- *
- * _.values('hi');
- * // => ['h', 'i']
- */
- function values(object) {
- return object == null ? [] : baseValues(object, keys(object));
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
- * corresponding HTML entities.
- *
- * **Note:** No other characters are escaped. To escape additional
- * characters use a third-party library like [_he_](https://mths.be/he).
- *
- * Though the ">" character is escaped for symmetry, characters like
- * ">" and "/" don't need escaping in HTML and have no special meaning
- * unless they're part of a tag or unquoted attribute value. See
- * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
- * (under "semi-related fun fact") for more details.
- *
- * When working with HTML you should always
- * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
- * XSS vectors.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category String
- * @param {string} [string=''] The string to escape.
- * @returns {string} Returns the escaped string.
- * @example
- *
- * _.escape('fred, barney, & pebbles');
- * // => 'fred, barney, &amp; pebbles'
- */
- function escape(string) {
- string = toString(string);
- return (string && reHasUnescapedHtml.test(string))
- ? string.replace(reUnescapedHtml, escapeHtmlChar)
- : string;
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * This method returns the first argument it receives.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {*} value Any value.
- * @returns {*} Returns `value`.
- * @example
- *
- * var object = { 'a': 1 };
- *
- * console.log(_.identity(object) === object);
- * // => true
- */
- function identity(value) {
- return value;
- }
-
- /**
- * Creates a function that invokes `func` with the arguments of the created
- * function. If `func` is a property name, the created function returns the
- * property value for a given element. If `func` is an array or object, the
- * created function returns `true` for elements that contain the equivalent
- * source properties, otherwise it returns `false`.
- *
- * @static
- * @since 4.0.0
- * @memberOf _
- * @category Util
- * @param {*} [func=_.identity] The value to convert to a callback.
- * @returns {Function} Returns the callback.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': true },
- * { 'user': 'fred', 'age': 40, 'active': false }
- * ];
- *
- * // The `_.matches` iteratee shorthand.
- * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
- * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.filter(users, _.iteratee(['user', 'fred']));
- * // => [{ 'user': 'fred', 'age': 40 }]
- *
- * // The `_.property` iteratee shorthand.
- * _.map(users, _.iteratee('user'));
- * // => ['barney', 'fred']
- *
- * // Create custom iteratee shorthands.
- * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
- * return !_.isRegExp(func) ? iteratee(func) : function(string) {
- * return func.test(string);
- * };
- * });
- *
- * _.filter(['abc', 'def'], /ef/);
- * // => ['def']
- */
- var iteratee = baseIteratee;
-
- /**
- * Creates a function that performs a partial deep comparison between a given
- * object and `source`, returning `true` if the given object has equivalent
- * property values, else `false`.
- *
- * **Note:** The created function is equivalent to `_.isMatch` with `source`
- * partially applied.
- *
- * Partial comparisons will match empty array and empty object `source`
- * values against any array or object value, respectively. See `_.isEqual`
- * for a list of supported value comparisons.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Util
- * @param {Object} source The object of property values to match.
- * @returns {Function} Returns the new spec function.
- * @example
- *
- * var objects = [
- * { 'a': 1, 'b': 2, 'c': 3 },
- * { 'a': 4, 'b': 5, 'c': 6 }
- * ];
- *
- * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
- * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
- */
- function matches(source) {
- return baseMatches(assign({}, source));
- }
-
- /**
- * Adds all own enumerable string keyed function properties of a source
- * object to the destination object. If `object` is a function, then methods
- * are added to its prototype as well.
- *
- * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
- * avoid conflicts caused by modifying the original.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {Function|Object} [object=lodash] The destination object.
- * @param {Object} source The object of functions to add.
- * @param {Object} [options={}] The options object.
- * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
- * @returns {Function|Object} Returns `object`.
- * @example
- *
- * function vowels(string) {
- * return _.filter(string, function(v) {
- * return /[aeiou]/i.test(v);
- * });
- * }
- *
- * _.mixin({ 'vowels': vowels });
- * _.vowels('fred');
- * // => ['e']
- *
- * _('fred').vowels().value();
- * // => ['e']
- *
- * _.mixin({ 'vowels': vowels }, { 'chain': false });
- * _('fred').vowels();
- * // => ['e']
- */
- function mixin(object, source, options) {
- var props = keys(source),
- methodNames = baseFunctions(source, props);
-
- if (options == null &&
- !(isObject(source) && (methodNames.length || !props.length))) {
- options = source;
- source = object;
- object = this;
- methodNames = baseFunctions(source, keys(source));
- }
- var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
- isFunc = isFunction(object);
-
- baseEach(methodNames, function(methodName) {
- var func = source[methodName];
- object[methodName] = func;
- if (isFunc) {
- object.prototype[methodName] = function() {
- var chainAll = this.__chain__;
- if (chain || chainAll) {
- var result = object(this.__wrapped__),
- actions = result.__actions__ = copyArray(this.__actions__);
-
- actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
- result.__chain__ = chainAll;
- return result;
- }
- return func.apply(object, arrayPush([this.value()], arguments));
- };
- }
- });
-
- return object;
- }
-
- /**
- * Reverts the `_` variable to its previous value and returns a reference to
- * the `lodash` function.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @returns {Function} Returns the `lodash` function.
- * @example
- *
- * var lodash = _.noConflict();
- */
- function noConflict() {
- if (root._ === this) {
- root._ = oldDash;
- }
- return this;
- }
-
- /**
- * This method returns `undefined`.
- *
- * @static
- * @memberOf _
- * @since 2.3.0
- * @category Util
- * @example
- *
- * _.times(2, _.noop);
- * // => [undefined, undefined]
- */
- function noop() {
- // No operation performed.
- }
-
- /**
- * Generates a unique ID. If `prefix` is given, the ID is appended to it.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {string} [prefix=''] The value to prefix the ID with.
- * @returns {string} Returns the unique ID.
- * @example
- *
- * _.uniqueId('contact_');
- * // => 'contact_104'
- *
- * _.uniqueId();
- * // => '105'
- */
- function uniqueId(prefix) {
- var id = ++idCounter;
- return toString(prefix) + id;
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Computes the maximum value of `array`. If `array` is empty or falsey,
- * `undefined` is returned.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {*} Returns the maximum value.
- * @example
- *
- * _.max([4, 2, 8, 6]);
- * // => 8
- *
- * _.max([]);
- * // => undefined
- */
- function max(array) {
- return (array && array.length)
- ? baseExtremum(array, identity, baseGt)
- : undefined;
- }
-
- /**
- * Computes the minimum value of `array`. If `array` is empty or falsey,
- * `undefined` is returned.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {*} Returns the minimum value.
- * @example
- *
- * _.min([4, 2, 8, 6]);
- * // => 2
- *
- * _.min([]);
- * // => undefined
- */
- function min(array) {
- return (array && array.length)
- ? baseExtremum(array, identity, baseLt)
- : undefined;
- }
-
- /*------------------------------------------------------------------------*/
-
- // Add methods that return wrapped values in chain sequences.
- lodash.assignIn = assignIn;
- lodash.before = before;
- lodash.bind = bind;
- lodash.chain = chain;
- lodash.compact = compact;
- lodash.concat = concat;
- lodash.create = create;
- lodash.defaults = defaults;
- lodash.defer = defer;
- lodash.delay = delay;
- lodash.filter = filter;
- lodash.flatten = flatten;
- lodash.flattenDeep = flattenDeep;
- lodash.iteratee = iteratee;
- lodash.keys = keys;
- lodash.map = map;
- lodash.matches = matches;
- lodash.mixin = mixin;
- lodash.negate = negate;
- lodash.once = once;
- lodash.pick = pick;
- lodash.slice = slice;
- lodash.sortBy = sortBy;
- lodash.tap = tap;
- lodash.thru = thru;
- lodash.toArray = toArray;
- lodash.values = values;
-
- // Add aliases.
- lodash.extend = assignIn;
-
- // Add methods to `lodash.prototype`.
- mixin(lodash, lodash);
-
- /*------------------------------------------------------------------------*/
-
- // Add methods that return unwrapped values in chain sequences.
- lodash.clone = clone;
- lodash.escape = escape;
- lodash.every = every;
- lodash.find = find;
- lodash.forEach = forEach;
- lodash.has = has;
- lodash.head = head;
- lodash.identity = identity;
- lodash.indexOf = indexOf;
- lodash.isArguments = isArguments;
- lodash.isArray = isArray;
- lodash.isBoolean = isBoolean;
- lodash.isDate = isDate;
- lodash.isEmpty = isEmpty;
- lodash.isEqual = isEqual;
- lodash.isFinite = isFinite;
- lodash.isFunction = isFunction;
- lodash.isNaN = isNaN;
- lodash.isNull = isNull;
- lodash.isNumber = isNumber;
- lodash.isObject = isObject;
- lodash.isRegExp = isRegExp;
- lodash.isString = isString;
- lodash.isUndefined = isUndefined;
- lodash.last = last;
- lodash.max = max;
- lodash.min = min;
- lodash.noConflict = noConflict;
- lodash.noop = noop;
- lodash.reduce = reduce;
- lodash.result = result;
- lodash.size = size;
- lodash.some = some;
- lodash.uniqueId = uniqueId;
-
- // Add aliases.
- lodash.each = forEach;
- lodash.first = head;
-
- mixin(lodash, (function() {
- var source = {};
- baseForOwn(lodash, function(func, methodName) {
- if (!hasOwnProperty.call(lodash.prototype, methodName)) {
- source[methodName] = func;
- }
- });
- return source;
- }()), { 'chain': false });
-
- /*------------------------------------------------------------------------*/
-
- /**
- * The semantic version number.
- *
- * @static
- * @memberOf _
- * @type {string}
- */
- lodash.VERSION = VERSION;
-
- // Add `Array` methods to `lodash.prototype`.
- baseEach(['pop', 'join', 'replace', 'reverse', 'split', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
- var func = (/^(?:replace|split)$/.test(methodName) ? String.prototype : arrayProto)[methodName],
- chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
- retUnwrapped = /^(?:pop|join|replace|shift)$/.test(methodName);
-
- lodash.prototype[methodName] = function() {
- var args = arguments;
- if (retUnwrapped && !this.__chain__) {
- var value = this.value();
- return func.apply(isArray(value) ? value : [], args);
- }
- return this[chainName](function(value) {
- return func.apply(isArray(value) ? value : [], args);
- });
- };
- });
-
- // Add chain sequence methods to the `lodash` wrapper.
- lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
-
- /*--------------------------------------------------------------------------*/
-
- // Some AMD build optimizers, like r.js, check for condition patterns like:
- if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
- // Expose Lodash on the global object to prevent errors when Lodash is
- // loaded by a script tag in the presence of an AMD loader.
- // See http://requirejs.org/docs/errors.html#mismatch for more details.
- // Use `_.noConflict` to remove Lodash from the global object.
- root._ = lodash;
-
- // Define as an anonymous module so, through path mapping, it can be
- // referenced as the "underscore" module.
- define(function() {
- return lodash;
- });
- }
- // Check for `exports` after `define` in case a build optimizer adds it.
- else if (freeModule) {
- // Export for Node.js.
- (freeModule.exports = lodash)._ = lodash;
- // Export for CommonJS support.
- freeExports._ = lodash;
- }
- else {
- // Export to the global object.
- root._ = lodash;
- }
-}.call(this));
diff --git a/assets/node_modules/lodash/core.min.js b/assets/node_modules/lodash/core.min.js
deleted file mode 100644
index bb543ff..0000000
--- a/assets/node_modules/lodash/core.min.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * @license
- * Lodash (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
- * Build: `lodash core -o ./dist/lodash.core.js`
- */
-;(function(){function n(n){return H(n)&&pn.call(n,"callee")&&!yn.call(n,"callee")}function t(n,t){return n.push.apply(n,t),n}function r(n){return function(t){return null==t?Z:t[n]}}function e(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function u(n,t){return j(t,function(t){return n[t]})}function o(n){return n instanceof i?n:new i(n)}function i(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function c(n,t,r){if(typeof n!="function")throw new TypeError("Expected a function");
-return setTimeout(function(){n.apply(Z,r)},t)}function f(n,t){var r=true;return mn(n,function(n,e,u){return r=!!t(n,e,u)}),r}function a(n,t,r){for(var e=-1,u=n.length;++e<u;){var o=n[e],i=t(o);if(null!=i&&(c===Z?i===i:r(i,c)))var c=i,f=o}return f}function l(n,t){var r=[];return mn(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function p(n,r,e,u,o){var i=-1,c=n.length;for(e||(e=R),o||(o=[]);++i<c;){var f=n[i];0<r&&e(f)?1<r?p(f,r-1,e,u,o):t(o,f):u||(o[o.length]=f)}return o}function s(n,t){return n&&On(n,t,Dn);
-}function h(n,t){return l(t,function(t){return U(n[t])})}function v(n,t){return n>t}function b(n,t,r,e,u){return n===t||(null==n||null==t||!H(n)&&!H(t)?n!==n&&t!==t:y(n,t,r,e,b,u))}function y(n,t,r,e,u,o){var i=Nn(n),c=Nn(t),f=i?"[object Array]":hn.call(n),a=c?"[object Array]":hn.call(t),f="[object Arguments]"==f?"[object Object]":f,a="[object Arguments]"==a?"[object Object]":a,l="[object Object]"==f,c="[object Object]"==a,a=f==a;o||(o=[]);var p=An(o,function(t){return t[0]==n}),s=An(o,function(n){
-return n[0]==t});if(p&&s)return p[1]==t;if(o.push([n,t]),o.push([t,n]),a&&!l){if(i)r=T(n,t,r,e,u,o);else n:{switch(f){case"[object Boolean]":case"[object Date]":case"[object Number]":r=J(+n,+t);break n;case"[object Error]":r=n.name==t.name&&n.message==t.message;break n;case"[object RegExp]":case"[object String]":r=n==t+"";break n}r=false}return o.pop(),r}return 1&r||(i=l&&pn.call(n,"__wrapped__"),f=c&&pn.call(t,"__wrapped__"),!i&&!f)?!!a&&(r=B(n,t,r,e,u,o),o.pop(),r):(i=i?n.value():n,f=f?t.value():t,
-r=u(i,f,r,e,o),o.pop(),r)}function g(n){return typeof n=="function"?n:null==n?X:(typeof n=="object"?d:r)(n)}function _(n,t){return n<t}function j(n,t){var r=-1,e=M(n)?Array(n.length):[];return mn(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function d(n){var t=_n(n);return function(r){var e=t.length;if(null==r)return!e;for(r=Object(r);e--;){var u=t[e];if(!(u in r&&b(n[u],r[u],3)))return false}return true}}function m(n,t){return n=Object(n),C(t,function(t,r){return r in n&&(t[r]=n[r]),t},{})}function O(n){return xn(I(n,void 0,X),n+"");
-}function x(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++e<u;)r[e]=n[e+t];return r}function A(n){return x(n,0,n.length)}function E(n,t){var r;return mn(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function w(n,r){return C(r,function(n,r){return r.func.apply(r.thisArg,t([n],r.args))},n)}function k(n,t,r){var e=!r;r||(r={});for(var u=-1,o=t.length;++u<o;){var i=t[u],c=Z;if(c===Z&&(c=n[i]),e)r[i]=c;else{var f=r,a=f[i];pn.call(f,i)&&J(a,c)&&(c!==Z||i in f)||(f[i]=c);
-}}return r}function N(n){return O(function(t,r){var e=-1,u=r.length,o=1<u?r[u-1]:Z,o=3<n.length&&typeof o=="function"?(u--,o):Z;for(t=Object(t);++e<u;){var i=r[e];i&&n(t,i,e,o)}return t})}function F(n){return function(){var t=arguments,r=dn(n.prototype),t=n.apply(r,t);return V(t)?t:r}}function S(n,t,r){function e(){for(var o=-1,i=arguments.length,c=-1,f=r.length,a=Array(f+i),l=this&&this!==on&&this instanceof e?u:n;++c<f;)a[c]=r[c];for(;i--;)a[c++]=arguments[++o];return l.apply(t,a)}if(typeof n!="function")throw new TypeError("Expected a function");
-var u=F(n);return e}function T(n,t,r,e,u,o){var i=n.length,c=t.length;if(i!=c&&!(1&r&&c>i))return false;for(var c=-1,f=true,a=2&r?[]:Z;++c<i;){var l=n[c],p=t[c];if(void 0!==Z){f=false;break}if(a){if(!E(t,function(n,t){if(!P(a,t)&&(l===n||u(l,n,r,e,o)))return a.push(t)})){f=false;break}}else if(l!==p&&!u(l,p,r,e,o)){f=false;break}}return f}function B(n,t,r,e,u,o){var i=1&r,c=Dn(n),f=c.length,a=Dn(t).length;if(f!=a&&!i)return false;for(var l=f;l--;){var p=c[l];if(!(i?p in t:pn.call(t,p)))return false}for(a=true;++l<f;){var p=c[l],s=n[p],h=t[p];
-if(void 0!==Z||s!==h&&!u(s,h,r,e,o)){a=false;break}i||(i="constructor"==p)}return a&&!i&&(r=n.constructor,e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(a=false)),a}function R(t){return Nn(t)||n(t)}function D(n){var t=[];if(null!=n)for(var r in Object(n))t.push(r);return t}function I(n,t,r){return t=jn(t===Z?n.length-1:t,0),function(){for(var e=arguments,u=-1,o=jn(e.length-t,0),i=Array(o);++u<o;)i[u]=e[t+u];for(u=-1,
-o=Array(t+1);++u<t;)o[u]=e[u];return o[t]=r(i),n.apply(this,o)}}function $(n){return(null==n?0:n.length)?p(n,1):[]}function q(n){return n&&n.length?n[0]:Z}function P(n,t,r){var e=null==n?0:n.length;r=typeof r=="number"?0>r?jn(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++r<e;){var o=n[r];if(u?o===t:o!==o)return r}return-1}function z(n,t){return mn(n,g(t))}function C(n,t,r){return e(n,g(t),r,3>arguments.length,mn)}function G(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=Fn(n),
-function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function J(n,t){return n===t||n!==n&&t!==t}function M(n){var t;return(t=null!=n)&&(t=n.length,t=typeof t=="number"&&-1<t&&0==t%1&&9007199254740991>=t),t&&!U(n)}function U(n){return!!V(n)&&(n=hn.call(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function V(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function H(n){return null!=n&&typeof n=="object"}function K(n){
-return typeof n=="number"||H(n)&&"[object Number]"==hn.call(n)}function L(n){return typeof n=="string"||!Nn(n)&&H(n)&&"[object String]"==hn.call(n)}function Q(n){return typeof n=="string"?n:null==n?"":n+""}function W(n){return null==n?[]:u(n,Dn(n))}function X(n){return n}function Y(n,r,e){var u=Dn(r),o=h(r,u);null!=e||V(r)&&(o.length||!u.length)||(e=r,r=n,n=this,o=h(r,Dn(r)));var i=!(V(e)&&"chain"in e&&!e.chain),c=U(n);return mn(o,function(e){var u=r[e];n[e]=u,c&&(n.prototype[e]=function(){var r=this.__chain__;
-if(i||r){var e=n(this.__wrapped__);return(e.__actions__=A(this.__actions__)).push({func:u,args:arguments,thisArg:n}),e.__chain__=r,e}return u.apply(n,t([this.value()],arguments))})}),n}var Z,nn=1/0,tn=/[&<>"']/g,rn=RegExp(tn.source),en=/^(?:0|[1-9]\d*)$/,un=typeof self=="object"&&self&&self.Object===Object&&self,on=typeof global=="object"&&global&&global.Object===Object&&global||un||Function("return this")(),cn=(un=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,fn=function(n){
-return function(t){return null==n?Z:n[t]}}({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}),an=Array.prototype,ln=Object.prototype,pn=ln.hasOwnProperty,sn=0,hn=ln.toString,vn=on._,bn=Object.create,yn=ln.propertyIsEnumerable,gn=on.isFinite,_n=function(n,t){return function(r){return n(t(r))}}(Object.keys,Object),jn=Math.max,dn=function(){function n(){}return function(t){return V(t)?bn?bn(t):(n.prototype=t,t=new n,n.prototype=Z,t):{}}}();i.prototype=dn(o.prototype),i.prototype.constructor=i;
-var mn=function(n,t){return function(r,e){if(null==r)return r;if(!M(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}(s),On=function(n){return function(t,r,e){var u=-1,o=Object(t);e=e(t);for(var i=e.length;i--;){var c=e[n?i:++u];if(false===r(o[c],c,o))break}return t}}(),xn=X,An=function(n){return function(t,r,e){var u=Object(t);if(!M(t)){var o=g(r);t=Dn(t),r=function(n){return o(u[n],n,u)}}return r=n(t,r,e),-1<r?u[o?t[r]:r]:Z}}(function(n,t,r){var e=null==n?0:n.length;
-if(!e)return-1;r=null==r?0:Fn(r),0>r&&(r=jn(e+r,0));n:{for(t=g(t),e=n.length,r+=-1;++r<e;)if(t(n[r],r,n)){n=r;break n}n=-1}return n}),En=O(function(n,t,r){return S(n,t,r)}),wn=O(function(n,t){return c(n,1,t)}),kn=O(function(n,t,r){return c(n,Sn(t)||0,r)}),Nn=Array.isArray,Fn=Number,Sn=Number,Tn=N(function(n,t){k(t,_n(t),n)}),Bn=N(function(n,t){k(t,D(t),n)}),Rn=O(function(n,t){n=Object(n);var r,e=-1,u=t.length,o=2<u?t[2]:Z;if(r=o){r=t[0];var i=t[1];if(V(o)){var c=typeof i;if("number"==c){if(c=M(o))var c=o.length,f=typeof i,c=null==c?9007199254740991:c,c=!!c&&("number"==f||"symbol"!=f&&en.test(i))&&-1<i&&0==i%1&&i<c;
-}else c="string"==c&&i in o;r=!!c&&J(o[i],r)}else r=false}for(r&&(u=1);++e<u;)for(o=t[e],r=In(o),i=-1,c=r.length;++i<c;){var f=r[i],a=n[f];(a===Z||J(a,ln[f])&&!pn.call(n,f))&&(n[f]=o[f])}return n}),Dn=_n,In=D,$n=function(n){return xn(I(n,Z,$),n+"")}(function(n,t){return null==n?{}:m(n,t)});o.assignIn=Bn,o.before=G,o.bind=En,o.chain=function(n){return n=o(n),n.__chain__=true,n},o.compact=function(n){return l(n,Boolean)},o.concat=function(){var n=arguments.length;if(!n)return[];for(var r=Array(n-1),e=arguments[0];n--;)r[n-1]=arguments[n];
-return t(Nn(e)?A(e):[e],p(r,1))},o.create=function(n,t){var r=dn(n);return null==t?r:Tn(r,t)},o.defaults=Rn,o.defer=wn,o.delay=kn,o.filter=function(n,t){return l(n,g(t))},o.flatten=$,o.flattenDeep=function(n){return(null==n?0:n.length)?p(n,nn):[]},o.iteratee=g,o.keys=Dn,o.map=function(n,t){return j(n,g(t))},o.matches=function(n){return d(Tn({},n))},o.mixin=Y,o.negate=function(n){if(typeof n!="function")throw new TypeError("Expected a function");return function(){return!n.apply(this,arguments)}},o.once=function(n){
-return G(2,n)},o.pick=$n,o.slice=function(n,t,r){var e=null==n?0:n.length;return r=r===Z?e:+r,e?x(n,null==t?0:+t,r):[]},o.sortBy=function(n,t){var e=0;return t=g(t),j(j(n,function(n,r,u){return{value:n,index:e++,criteria:t(n,r,u)}}).sort(function(n,t){var r;n:{r=n.criteria;var e=t.criteria;if(r!==e){var u=r!==Z,o=null===r,i=r===r,c=e!==Z,f=null===e,a=e===e;if(!f&&r>e||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&r<e||f&&u&&i||!c&&i||!a){r=-1;break n}}r=0}return r||n.index-t.index}),r("value"))},o.tap=function(n,t){
-return t(n),n},o.thru=function(n,t){return t(n)},o.toArray=function(n){return M(n)?n.length?A(n):[]:W(n)},o.values=W,o.extend=Bn,Y(o,o),o.clone=function(n){return V(n)?Nn(n)?A(n):k(n,_n(n)):n},o.escape=function(n){return(n=Q(n))&&rn.test(n)?n.replace(tn,fn):n},o.every=function(n,t,r){return t=r?Z:t,f(n,g(t))},o.find=An,o.forEach=z,o.has=function(n,t){return null!=n&&pn.call(n,t)},o.head=q,o.identity=X,o.indexOf=P,o.isArguments=n,o.isArray=Nn,o.isBoolean=function(n){return true===n||false===n||H(n)&&"[object Boolean]"==hn.call(n);
-},o.isDate=function(n){return H(n)&&"[object Date]"==hn.call(n)},o.isEmpty=function(t){return M(t)&&(Nn(t)||L(t)||U(t.splice)||n(t))?!t.length:!_n(t).length},o.isEqual=function(n,t){return b(n,t)},o.isFinite=function(n){return typeof n=="number"&&gn(n)},o.isFunction=U,o.isNaN=function(n){return K(n)&&n!=+n},o.isNull=function(n){return null===n},o.isNumber=K,o.isObject=V,o.isRegExp=function(n){return H(n)&&"[object RegExp]"==hn.call(n)},o.isString=L,o.isUndefined=function(n){return n===Z},o.last=function(n){
-var t=null==n?0:n.length;return t?n[t-1]:Z},o.max=function(n){return n&&n.length?a(n,X,v):Z},o.min=function(n){return n&&n.length?a(n,X,_):Z},o.noConflict=function(){return on._===this&&(on._=vn),this},o.noop=function(){},o.reduce=C,o.result=function(n,t,r){return t=null==n?Z:n[t],t===Z&&(t=r),U(t)?t.call(n):t},o.size=function(n){return null==n?0:(n=M(n)?n:_n(n),n.length)},o.some=function(n,t,r){return t=r?Z:t,E(n,g(t))},o.uniqueId=function(n){var t=++sn;return Q(n)+t},o.each=z,o.first=q,Y(o,function(){
-var n={};return s(o,function(t,r){pn.call(o.prototype,r)||(n[r]=t)}),n}(),{chain:false}),o.VERSION="4.17.15",mn("pop join replace reverse split push shift sort splice unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?String.prototype:an)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|join|replace|shift)$/.test(n);o.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(Nn(u)?u:[],n)}return this[r](function(r){return t.apply(Nn(r)?r:[],n);
-})}}),o.prototype.toJSON=o.prototype.valueOf=o.prototype.value=function(){return w(this.__wrapped__,this.__actions__)},typeof define=="function"&&typeof define.amd=="object"&&define.amd?(on._=o, define(function(){return o})):cn?((cn.exports=o)._=o,un._=o):on._=o}).call(this); \ No newline at end of file
diff --git a/assets/node_modules/lodash/countBy.js b/assets/node_modules/lodash/countBy.js
deleted file mode 100644
index 0e88abc..0000000
--- a/assets/node_modules/lodash/countBy.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var baseAssignValue = require('./_baseAssignValue'),
- createAggregator = require('./_createAggregator');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Creates an object composed of keys generated from the results of running
- * each element of `collection` thru `iteratee`. The corresponding value of
- * each key is the number of times the key was returned by `iteratee`. The
- * iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 0.5.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
- * @returns {Object} Returns the composed aggregate object.
- * @example
- *
- * _.countBy([6.1, 4.2, 6.3], Math.floor);
- * // => { '4': 1, '6': 2 }
- *
- * // The `_.property` iteratee shorthand.
- * _.countBy(['one', 'two', 'three'], 'length');
- * // => { '3': 2, '5': 1 }
- */
-var countBy = createAggregator(function(result, value, key) {
- if (hasOwnProperty.call(result, key)) {
- ++result[key];
- } else {
- baseAssignValue(result, key, 1);
- }
-});
-
-module.exports = countBy;
diff --git a/assets/node_modules/lodash/create.js b/assets/node_modules/lodash/create.js
deleted file mode 100644
index 919edb8..0000000
--- a/assets/node_modules/lodash/create.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var baseAssign = require('./_baseAssign'),
- baseCreate = require('./_baseCreate');
-
-/**
- * Creates an object that inherits from the `prototype` object. If a
- * `properties` object is given, its own enumerable string keyed properties
- * are assigned to the created object.
- *
- * @static
- * @memberOf _
- * @since 2.3.0
- * @category Object
- * @param {Object} prototype The object to inherit from.
- * @param {Object} [properties] The properties to assign to the object.
- * @returns {Object} Returns the new object.
- * @example
- *
- * function Shape() {
- * this.x = 0;
- * this.y = 0;
- * }
- *
- * function Circle() {
- * Shape.call(this);
- * }
- *
- * Circle.prototype = _.create(Shape.prototype, {
- * 'constructor': Circle
- * });
- *
- * var circle = new Circle;
- * circle instanceof Circle;
- * // => true
- *
- * circle instanceof Shape;
- * // => true
- */
-function create(prototype, properties) {
- var result = baseCreate(prototype);
- return properties == null ? result : baseAssign(result, properties);
-}
-
-module.exports = create;
diff --git a/assets/node_modules/lodash/curry.js b/assets/node_modules/lodash/curry.js
deleted file mode 100644
index 918db1a..0000000
--- a/assets/node_modules/lodash/curry.js
+++ /dev/null
@@ -1,57 +0,0 @@
-var createWrap = require('./_createWrap');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_CURRY_FLAG = 8;
-
-/**
- * Creates a function that accepts arguments of `func` and either invokes
- * `func` returning its result, if at least `arity` number of arguments have
- * been provided, or returns a function that accepts the remaining `func`
- * arguments, and so on. The arity of `func` may be specified if `func.length`
- * is not sufficient.
- *
- * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
- * may be used as a placeholder for provided arguments.
- *
- * **Note:** This method doesn't set the "length" property of curried functions.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Function
- * @param {Function} func The function to curry.
- * @param {number} [arity=func.length] The arity of `func`.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Function} Returns the new curried function.
- * @example
- *
- * var abc = function(a, b, c) {
- * return [a, b, c];
- * };
- *
- * var curried = _.curry(abc);
- *
- * curried(1)(2)(3);
- * // => [1, 2, 3]
- *
- * curried(1, 2)(3);
- * // => [1, 2, 3]
- *
- * curried(1, 2, 3);
- * // => [1, 2, 3]
- *
- * // Curried with placeholders.
- * curried(1)(_, 3)(2);
- * // => [1, 2, 3]
- */
-function curry(func, arity, guard) {
- arity = guard ? undefined : arity;
- var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
- result.placeholder = curry.placeholder;
- return result;
-}
-
-// Assign default placeholders.
-curry.placeholder = {};
-
-module.exports = curry;
diff --git a/assets/node_modules/lodash/curryRight.js b/assets/node_modules/lodash/curryRight.js
deleted file mode 100644
index c85b6f3..0000000
--- a/assets/node_modules/lodash/curryRight.js
+++ /dev/null
@@ -1,54 +0,0 @@
-var createWrap = require('./_createWrap');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_CURRY_RIGHT_FLAG = 16;
-
-/**
- * This method is like `_.curry` except that arguments are applied to `func`
- * in the manner of `_.partialRight` instead of `_.partial`.
- *
- * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for provided arguments.
- *
- * **Note:** This method doesn't set the "length" property of curried functions.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {Function} func The function to curry.
- * @param {number} [arity=func.length] The arity of `func`.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Function} Returns the new curried function.
- * @example
- *
- * var abc = function(a, b, c) {
- * return [a, b, c];
- * };
- *
- * var curried = _.curryRight(abc);
- *
- * curried(3)(2)(1);
- * // => [1, 2, 3]
- *
- * curried(2, 3)(1);
- * // => [1, 2, 3]
- *
- * curried(1, 2, 3);
- * // => [1, 2, 3]
- *
- * // Curried with placeholders.
- * curried(3)(1, _)(2);
- * // => [1, 2, 3]
- */
-function curryRight(func, arity, guard) {
- arity = guard ? undefined : arity;
- var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
- result.placeholder = curryRight.placeholder;
- return result;
-}
-
-// Assign default placeholders.
-curryRight.placeholder = {};
-
-module.exports = curryRight;
diff --git a/assets/node_modules/lodash/date.js b/assets/node_modules/lodash/date.js
deleted file mode 100644
index cbf5b41..0000000
--- a/assets/node_modules/lodash/date.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- 'now': require('./now')
-};
diff --git a/assets/node_modules/lodash/debounce.js b/assets/node_modules/lodash/debounce.js
deleted file mode 100644
index 8f751d5..0000000
--- a/assets/node_modules/lodash/debounce.js
+++ /dev/null
@@ -1,191 +0,0 @@
-var isObject = require('./isObject'),
- now = require('./now'),
- toNumber = require('./toNumber');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max,
- nativeMin = Math.min;
-
-/**
- * Creates a debounced function that delays invoking `func` until after `wait`
- * milliseconds have elapsed since the last time the debounced function was
- * invoked. The debounced function comes with a `cancel` method to cancel
- * delayed `func` invocations and a `flush` method to immediately invoke them.
- * Provide `options` to indicate whether `func` should be invoked on the
- * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
- * with the last arguments provided to the debounced function. Subsequent
- * calls to the debounced function return the result of the last `func`
- * invocation.
- *
- * **Note:** If `leading` and `trailing` options are `true`, `func` is
- * invoked on the trailing edge of the timeout only if the debounced function
- * is invoked more than once during the `wait` timeout.
- *
- * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
- * until to the next tick, similar to `setTimeout` with a timeout of `0`.
- *
- * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
- * for details over the differences between `_.debounce` and `_.throttle`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to debounce.
- * @param {number} [wait=0] The number of milliseconds to delay.
- * @param {Object} [options={}] The options object.
- * @param {boolean} [options.leading=false]
- * Specify invoking on the leading edge of the timeout.
- * @param {number} [options.maxWait]
- * The maximum time `func` is allowed to be delayed before it's invoked.
- * @param {boolean} [options.trailing=true]
- * Specify invoking on the trailing edge of the timeout.
- * @returns {Function} Returns the new debounced function.
- * @example
- *
- * // Avoid costly calculations while the window size is in flux.
- * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
- *
- * // Invoke `sendMail` when clicked, debouncing subsequent calls.
- * jQuery(element).on('click', _.debounce(sendMail, 300, {
- * 'leading': true,
- * 'trailing': false
- * }));
- *
- * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
- * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
- * var source = new EventSource('/stream');
- * jQuery(source).on('message', debounced);
- *
- * // Cancel the trailing debounced invocation.
- * jQuery(window).on('popstate', debounced.cancel);
- */
-function debounce(func, wait, options) {
- var lastArgs,
- lastThis,
- maxWait,
- result,
- timerId,
- lastCallTime,
- lastInvokeTime = 0,
- leading = false,
- maxing = false,
- trailing = true;
-
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- wait = toNumber(wait) || 0;
- if (isObject(options)) {
- leading = !!options.leading;
- maxing = 'maxWait' in options;
- maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
- trailing = 'trailing' in options ? !!options.trailing : trailing;
- }
-
- function invokeFunc(time) {
- var args = lastArgs,
- thisArg = lastThis;
-
- lastArgs = lastThis = undefined;
- lastInvokeTime = time;
- result = func.apply(thisArg, args);
- return result;
- }
-
- function leadingEdge(time) {
- // Reset any `maxWait` timer.
- lastInvokeTime = time;
- // Start the timer for the trailing edge.
- timerId = setTimeout(timerExpired, wait);
- // Invoke the leading edge.
- return leading ? invokeFunc(time) : result;
- }
-
- function remainingWait(time) {
- var timeSinceLastCall = time - lastCallTime,
- timeSinceLastInvoke = time - lastInvokeTime,
- timeWaiting = wait - timeSinceLastCall;
-
- return maxing
- ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
- : timeWaiting;
- }
-
- function shouldInvoke(time) {
- var timeSinceLastCall = time - lastCallTime,
- timeSinceLastInvoke = time - lastInvokeTime;
-
- // Either this is the first call, activity has stopped and we're at the
- // trailing edge, the system time has gone backwards and we're treating
- // it as the trailing edge, or we've hit the `maxWait` limit.
- return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
- (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
- }
-
- function timerExpired() {
- var time = now();
- if (shouldInvoke(time)) {
- return trailingEdge(time);
- }
- // Restart the timer.
- timerId = setTimeout(timerExpired, remainingWait(time));
- }
-
- function trailingEdge(time) {
- timerId = undefined;
-
- // Only invoke if we have `lastArgs` which means `func` has been
- // debounced at least once.
- if (trailing && lastArgs) {
- return invokeFunc(time);
- }
- lastArgs = lastThis = undefined;
- return result;
- }
-
- function cancel() {
- if (timerId !== undefined) {
- clearTimeout(timerId);
- }
- lastInvokeTime = 0;
- lastArgs = lastCallTime = lastThis = timerId = undefined;
- }
-
- function flush() {
- return timerId === undefined ? result : trailingEdge(now());
- }
-
- function debounced() {
- var time = now(),
- isInvoking = shouldInvoke(time);
-
- lastArgs = arguments;
- lastThis = this;
- lastCallTime = time;
-
- if (isInvoking) {
- if (timerId === undefined) {
- return leadingEdge(lastCallTime);
- }
- if (maxing) {
- // Handle invocations in a tight loop.
- clearTimeout(timerId);
- timerId = setTimeout(timerExpired, wait);
- return invokeFunc(lastCallTime);
- }
- }
- if (timerId === undefined) {
- timerId = setTimeout(timerExpired, wait);
- }
- return result;
- }
- debounced.cancel = cancel;
- debounced.flush = flush;
- return debounced;
-}
-
-module.exports = debounce;
diff --git a/assets/node_modules/lodash/deburr.js b/assets/node_modules/lodash/deburr.js
deleted file mode 100644
index f85e314..0000000
--- a/assets/node_modules/lodash/deburr.js
+++ /dev/null
@@ -1,45 +0,0 @@
-var deburrLetter = require('./_deburrLetter'),
- toString = require('./toString');
-
-/** Used to match Latin Unicode letters (excluding mathematical operators). */
-var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
-
-/** Used to compose unicode character classes. */
-var rsComboMarksRange = '\\u0300-\\u036f',
- reComboHalfMarksRange = '\\ufe20-\\ufe2f',
- rsComboSymbolsRange = '\\u20d0-\\u20ff',
- rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;
-
-/** Used to compose unicode capture groups. */
-var rsCombo = '[' + rsComboRange + ']';
-
-/**
- * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
- * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
- */
-var reComboMark = RegExp(rsCombo, 'g');
-
-/**
- * Deburrs `string` by converting
- * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
- * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
- * letters to basic Latin letters and removing
- * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to deburr.
- * @returns {string} Returns the deburred string.
- * @example
- *
- * _.deburr('déjà vu');
- * // => 'deja vu'
- */
-function deburr(string) {
- string = toString(string);
- return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
-}
-
-module.exports = deburr;
diff --git a/assets/node_modules/lodash/defaultTo.js b/assets/node_modules/lodash/defaultTo.js
deleted file mode 100644
index 5b33359..0000000
--- a/assets/node_modules/lodash/defaultTo.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Checks `value` to determine whether a default value should be returned in
- * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
- * or `undefined`.
- *
- * @static
- * @memberOf _
- * @since 4.14.0
- * @category Util
- * @param {*} value The value to check.
- * @param {*} defaultValue The default value.
- * @returns {*} Returns the resolved value.
- * @example
- *
- * _.defaultTo(1, 10);
- * // => 1
- *
- * _.defaultTo(undefined, 10);
- * // => 10
- */
-function defaultTo(value, defaultValue) {
- return (value == null || value !== value) ? defaultValue : value;
-}
-
-module.exports = defaultTo;
diff --git a/assets/node_modules/lodash/defaults.js b/assets/node_modules/lodash/defaults.js
deleted file mode 100644
index c74df04..0000000
--- a/assets/node_modules/lodash/defaults.js
+++ /dev/null
@@ -1,64 +0,0 @@
-var baseRest = require('./_baseRest'),
- eq = require('./eq'),
- isIterateeCall = require('./_isIterateeCall'),
- keysIn = require('./keysIn');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Assigns own and inherited enumerable string keyed properties of source
- * objects to the destination object for all destination properties that
- * resolve to `undefined`. Source objects are applied from left to right.
- * Once a property is set, additional values of the same property are ignored.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @see _.defaultsDeep
- * @example
- *
- * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
- * // => { 'a': 1, 'b': 2 }
- */
-var defaults = baseRest(function(object, sources) {
- object = Object(object);
-
- var index = -1;
- var length = sources.length;
- var guard = length > 2 ? sources[2] : undefined;
-
- if (guard && isIterateeCall(sources[0], sources[1], guard)) {
- length = 1;
- }
-
- while (++index < length) {
- var source = sources[index];
- var props = keysIn(source);
- var propsIndex = -1;
- var propsLength = props.length;
-
- while (++propsIndex < propsLength) {
- var key = props[propsIndex];
- var value = object[key];
-
- if (value === undefined ||
- (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
- object[key] = source[key];
- }
- }
- }
-
- return object;
-});
-
-module.exports = defaults;
diff --git a/assets/node_modules/lodash/defaultsDeep.js b/assets/node_modules/lodash/defaultsDeep.js
deleted file mode 100644
index 9b5fa3e..0000000
--- a/assets/node_modules/lodash/defaultsDeep.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var apply = require('./_apply'),
- baseRest = require('./_baseRest'),
- customDefaultsMerge = require('./_customDefaultsMerge'),
- mergeWith = require('./mergeWith');
-
-/**
- * This method is like `_.defaults` except that it recursively assigns
- * default properties.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 3.10.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @see _.defaults
- * @example
- *
- * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
- * // => { 'a': { 'b': 2, 'c': 3 } }
- */
-var defaultsDeep = baseRest(function(args) {
- args.push(undefined, customDefaultsMerge);
- return apply(mergeWith, undefined, args);
-});
-
-module.exports = defaultsDeep;
diff --git a/assets/node_modules/lodash/defer.js b/assets/node_modules/lodash/defer.js
deleted file mode 100644
index f6d6c6f..0000000
--- a/assets/node_modules/lodash/defer.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var baseDelay = require('./_baseDelay'),
- baseRest = require('./_baseRest');
-
-/**
- * Defers invoking the `func` until the current call stack has cleared. Any
- * additional arguments are provided to `func` when it's invoked.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to defer.
- * @param {...*} [args] The arguments to invoke `func` with.
- * @returns {number} Returns the timer id.
- * @example
- *
- * _.defer(function(text) {
- * console.log(text);
- * }, 'deferred');
- * // => Logs 'deferred' after one millisecond.
- */
-var defer = baseRest(function(func, args) {
- return baseDelay(func, 1, args);
-});
-
-module.exports = defer;
diff --git a/assets/node_modules/lodash/delay.js b/assets/node_modules/lodash/delay.js
deleted file mode 100644
index bd55479..0000000
--- a/assets/node_modules/lodash/delay.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var baseDelay = require('./_baseDelay'),
- baseRest = require('./_baseRest'),
- toNumber = require('./toNumber');
-
-/**
- * Invokes `func` after `wait` milliseconds. Any additional arguments are
- * provided to `func` when it's invoked.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to delay.
- * @param {number} wait The number of milliseconds to delay invocation.
- * @param {...*} [args] The arguments to invoke `func` with.
- * @returns {number} Returns the timer id.
- * @example
- *
- * _.delay(function(text) {
- * console.log(text);
- * }, 1000, 'later');
- * // => Logs 'later' after one second.
- */
-var delay = baseRest(function(func, wait, args) {
- return baseDelay(func, toNumber(wait) || 0, args);
-});
-
-module.exports = delay;
diff --git a/assets/node_modules/lodash/difference.js b/assets/node_modules/lodash/difference.js
deleted file mode 100644
index fa28bb3..0000000
--- a/assets/node_modules/lodash/difference.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var baseDifference = require('./_baseDifference'),
- baseFlatten = require('./_baseFlatten'),
- baseRest = require('./_baseRest'),
- isArrayLikeObject = require('./isArrayLikeObject');
-
-/**
- * Creates an array of `array` values not included in the other given arrays
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons. The order and references of result values are
- * determined by the first array.
- *
- * **Note:** Unlike `_.pullAll`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {...Array} [values] The values to exclude.
- * @returns {Array} Returns the new array of filtered values.
- * @see _.without, _.xor
- * @example
- *
- * _.difference([2, 1], [2, 3]);
- * // => [1]
- */
-var difference = baseRest(function(array, values) {
- return isArrayLikeObject(array)
- ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
- : [];
-});
-
-module.exports = difference;
diff --git a/assets/node_modules/lodash/differenceBy.js b/assets/node_modules/lodash/differenceBy.js
deleted file mode 100644
index 2cd63e7..0000000
--- a/assets/node_modules/lodash/differenceBy.js
+++ /dev/null
@@ -1,44 +0,0 @@
-var baseDifference = require('./_baseDifference'),
- baseFlatten = require('./_baseFlatten'),
- baseIteratee = require('./_baseIteratee'),
- baseRest = require('./_baseRest'),
- isArrayLikeObject = require('./isArrayLikeObject'),
- last = require('./last');
-
-/**
- * This method is like `_.difference` except that it accepts `iteratee` which
- * is invoked for each element of `array` and `values` to generate the criterion
- * by which they're compared. The order and references of result values are
- * determined by the first array. The iteratee is invoked with one argument:
- * (value).
- *
- * **Note:** Unlike `_.pullAllBy`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {...Array} [values] The values to exclude.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
- * // => [1.2]
- *
- * // The `_.property` iteratee shorthand.
- * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
- * // => [{ 'x': 2 }]
- */
-var differenceBy = baseRest(function(array, values) {
- var iteratee = last(values);
- if (isArrayLikeObject(iteratee)) {
- iteratee = undefined;
- }
- return isArrayLikeObject(array)
- ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2))
- : [];
-});
-
-module.exports = differenceBy;
diff --git a/assets/node_modules/lodash/differenceWith.js b/assets/node_modules/lodash/differenceWith.js
deleted file mode 100644
index c0233f4..0000000
--- a/assets/node_modules/lodash/differenceWith.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var baseDifference = require('./_baseDifference'),
- baseFlatten = require('./_baseFlatten'),
- baseRest = require('./_baseRest'),
- isArrayLikeObject = require('./isArrayLikeObject'),
- last = require('./last');
-
-/**
- * This method is like `_.difference` except that it accepts `comparator`
- * which is invoked to compare elements of `array` to `values`. The order and
- * references of result values are determined by the first array. The comparator
- * is invoked with two arguments: (arrVal, othVal).
- *
- * **Note:** Unlike `_.pullAllWith`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {...Array} [values] The values to exclude.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
- *
- * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
- * // => [{ 'x': 2, 'y': 1 }]
- */
-var differenceWith = baseRest(function(array, values) {
- var comparator = last(values);
- if (isArrayLikeObject(comparator)) {
- comparator = undefined;
- }
- return isArrayLikeObject(array)
- ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)
- : [];
-});
-
-module.exports = differenceWith;
diff --git a/assets/node_modules/lodash/divide.js b/assets/node_modules/lodash/divide.js
deleted file mode 100644
index 8cae0cd..0000000
--- a/assets/node_modules/lodash/divide.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var createMathOperation = require('./_createMathOperation');
-
-/**
- * Divide two numbers.
- *
- * @static
- * @memberOf _
- * @since 4.7.0
- * @category Math
- * @param {number} dividend The first number in a division.
- * @param {number} divisor The second number in a division.
- * @returns {number} Returns the quotient.
- * @example
- *
- * _.divide(6, 4);
- * // => 1.5
- */
-var divide = createMathOperation(function(dividend, divisor) {
- return dividend / divisor;
-}, 1);
-
-module.exports = divide;
diff --git a/assets/node_modules/lodash/drop.js b/assets/node_modules/lodash/drop.js
deleted file mode 100644
index d5c3cba..0000000
--- a/assets/node_modules/lodash/drop.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var baseSlice = require('./_baseSlice'),
- toInteger = require('./toInteger');
-
-/**
- * Creates a slice of `array` with `n` elements dropped from the beginning.
- *
- * @static
- * @memberOf _
- * @since 0.5.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to drop.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.drop([1, 2, 3]);
- * // => [2, 3]
- *
- * _.drop([1, 2, 3], 2);
- * // => [3]
- *
- * _.drop([1, 2, 3], 5);
- * // => []
- *
- * _.drop([1, 2, 3], 0);
- * // => [1, 2, 3]
- */
-function drop(array, n, guard) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return [];
- }
- n = (guard || n === undefined) ? 1 : toInteger(n);
- return baseSlice(array, n < 0 ? 0 : n, length);
-}
-
-module.exports = drop;
diff --git a/assets/node_modules/lodash/dropRight.js b/assets/node_modules/lodash/dropRight.js
deleted file mode 100644
index 441fe99..0000000
--- a/assets/node_modules/lodash/dropRight.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var baseSlice = require('./_baseSlice'),
- toInteger = require('./toInteger');
-
-/**
- * Creates a slice of `array` with `n` elements dropped from the end.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to drop.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.dropRight([1, 2, 3]);
- * // => [1, 2]
- *
- * _.dropRight([1, 2, 3], 2);
- * // => [1]
- *
- * _.dropRight([1, 2, 3], 5);
- * // => []
- *
- * _.dropRight([1, 2, 3], 0);
- * // => [1, 2, 3]
- */
-function dropRight(array, n, guard) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return [];
- }
- n = (guard || n === undefined) ? 1 : toInteger(n);
- n = length - n;
- return baseSlice(array, 0, n < 0 ? 0 : n);
-}
-
-module.exports = dropRight;
diff --git a/assets/node_modules/lodash/dropRightWhile.js b/assets/node_modules/lodash/dropRightWhile.js
deleted file mode 100644
index 9ad36a0..0000000
--- a/assets/node_modules/lodash/dropRightWhile.js
+++ /dev/null
@@ -1,45 +0,0 @@
-var baseIteratee = require('./_baseIteratee'),
- baseWhile = require('./_baseWhile');
-
-/**
- * Creates a slice of `array` excluding elements dropped from the end.
- * Elements are dropped until `predicate` returns falsey. The predicate is
- * invoked with three arguments: (value, index, array).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'active': true },
- * { 'user': 'fred', 'active': false },
- * { 'user': 'pebbles', 'active': false }
- * ];
- *
- * _.dropRightWhile(users, function(o) { return !o.active; });
- * // => objects for ['barney']
- *
- * // The `_.matches` iteratee shorthand.
- * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
- * // => objects for ['barney', 'fred']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.dropRightWhile(users, ['active', false]);
- * // => objects for ['barney']
- *
- * // The `_.property` iteratee shorthand.
- * _.dropRightWhile(users, 'active');
- * // => objects for ['barney', 'fred', 'pebbles']
- */
-function dropRightWhile(array, predicate) {
- return (array && array.length)
- ? baseWhile(array, baseIteratee(predicate, 3), true, true)
- : [];
-}
-
-module.exports = dropRightWhile;
diff --git a/assets/node_modules/lodash/dropWhile.js b/assets/node_modules/lodash/dropWhile.js
deleted file mode 100644
index 903ef56..0000000
--- a/assets/node_modules/lodash/dropWhile.js
+++ /dev/null
@@ -1,45 +0,0 @@
-var baseIteratee = require('./_baseIteratee'),
- baseWhile = require('./_baseWhile');
-
-/**
- * Creates a slice of `array` excluding elements dropped from the beginning.
- * Elements are dropped until `predicate` returns falsey. The predicate is
- * invoked with three arguments: (value, index, array).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'active': false },
- * { 'user': 'fred', 'active': false },
- * { 'user': 'pebbles', 'active': true }
- * ];
- *
- * _.dropWhile(users, function(o) { return !o.active; });
- * // => objects for ['pebbles']
- *
- * // The `_.matches` iteratee shorthand.
- * _.dropWhile(users, { 'user': 'barney', 'active': false });
- * // => objects for ['fred', 'pebbles']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.dropWhile(users, ['active', false]);
- * // => objects for ['pebbles']
- *
- * // The `_.property` iteratee shorthand.
- * _.dropWhile(users, 'active');
- * // => objects for ['barney', 'fred', 'pebbles']
- */
-function dropWhile(array, predicate) {
- return (array && array.length)
- ? baseWhile(array, baseIteratee(predicate, 3), true)
- : [];
-}
-
-module.exports = dropWhile;
diff --git a/assets/node_modules/lodash/each.js b/assets/node_modules/lodash/each.js
deleted file mode 100644
index 8800f42..0000000
--- a/assets/node_modules/lodash/each.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./forEach');
diff --git a/assets/node_modules/lodash/eachRight.js b/assets/node_modules/lodash/eachRight.js
deleted file mode 100644
index 3252b2a..0000000
--- a/assets/node_modules/lodash/eachRight.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./forEachRight');
diff --git a/assets/node_modules/lodash/endsWith.js b/assets/node_modules/lodash/endsWith.js
deleted file mode 100644
index 76fc866..0000000
--- a/assets/node_modules/lodash/endsWith.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var baseClamp = require('./_baseClamp'),
- baseToString = require('./_baseToString'),
- toInteger = require('./toInteger'),
- toString = require('./toString');
-
-/**
- * Checks if `string` ends with the given target string.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to inspect.
- * @param {string} [target] The string to search for.
- * @param {number} [position=string.length] The position to search up to.
- * @returns {boolean} Returns `true` if `string` ends with `target`,
- * else `false`.
- * @example
- *
- * _.endsWith('abc', 'c');
- * // => true
- *
- * _.endsWith('abc', 'b');
- * // => false
- *
- * _.endsWith('abc', 'b', 2);
- * // => true
- */
-function endsWith(string, target, position) {
- string = toString(string);
- target = baseToString(target);
-
- var length = string.length;
- position = position === undefined
- ? length
- : baseClamp(toInteger(position), 0, length);
-
- var end = position;
- position -= target.length;
- return position >= 0 && string.slice(position, end) == target;
-}
-
-module.exports = endsWith;
diff --git a/assets/node_modules/lodash/entries.js b/assets/node_modules/lodash/entries.js
deleted file mode 100644
index 7a88df2..0000000
--- a/assets/node_modules/lodash/entries.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./toPairs');
diff --git a/assets/node_modules/lodash/entriesIn.js b/assets/node_modules/lodash/entriesIn.js
deleted file mode 100644
index f6c6331..0000000
--- a/assets/node_modules/lodash/entriesIn.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./toPairsIn');
diff --git a/assets/node_modules/lodash/eq.js b/assets/node_modules/lodash/eq.js
deleted file mode 100644
index a940688..0000000
--- a/assets/node_modules/lodash/eq.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */
-function eq(value, other) {
- return value === other || (value !== value && other !== other);
-}
-
-module.exports = eq;
diff --git a/assets/node_modules/lodash/escape.js b/assets/node_modules/lodash/escape.js
deleted file mode 100644
index 9247e00..0000000
--- a/assets/node_modules/lodash/escape.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var escapeHtmlChar = require('./_escapeHtmlChar'),
- toString = require('./toString');
-
-/** Used to match HTML entities and HTML characters. */
-var reUnescapedHtml = /[&<>"']/g,
- reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
-
-/**
- * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
- * corresponding HTML entities.
- *
- * **Note:** No other characters are escaped. To escape additional
- * characters use a third-party library like [_he_](https://mths.be/he).
- *
- * Though the ">" character is escaped for symmetry, characters like
- * ">" and "/" don't need escaping in HTML and have no special meaning
- * unless they're part of a tag or unquoted attribute value. See
- * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
- * (under "semi-related fun fact") for more details.
- *
- * When working with HTML you should always
- * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
- * XSS vectors.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category String
- * @param {string} [string=''] The string to escape.
- * @returns {string} Returns the escaped string.
- * @example
- *
- * _.escape('fred, barney, & pebbles');
- * // => 'fred, barney, &amp; pebbles'
- */
-function escape(string) {
- string = toString(string);
- return (string && reHasUnescapedHtml.test(string))
- ? string.replace(reUnescapedHtml, escapeHtmlChar)
- : string;
-}
-
-module.exports = escape;
diff --git a/assets/node_modules/lodash/escapeRegExp.js b/assets/node_modules/lodash/escapeRegExp.js
deleted file mode 100644
index 0a58c69..0000000
--- a/assets/node_modules/lodash/escapeRegExp.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var toString = require('./toString');
-
-/**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
- */
-var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
- reHasRegExpChar = RegExp(reRegExpChar.source);
-
-/**
- * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
- * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to escape.
- * @returns {string} Returns the escaped string.
- * @example
- *
- * _.escapeRegExp('[lodash](https://lodash.com/)');
- * // => '\[lodash\]\(https://lodash\.com/\)'
- */
-function escapeRegExp(string) {
- string = toString(string);
- return (string && reHasRegExpChar.test(string))
- ? string.replace(reRegExpChar, '\\$&')
- : string;
-}
-
-module.exports = escapeRegExp;
diff --git a/assets/node_modules/lodash/every.js b/assets/node_modules/lodash/every.js
deleted file mode 100644
index 25080da..0000000
--- a/assets/node_modules/lodash/every.js
+++ /dev/null
@@ -1,56 +0,0 @@
-var arrayEvery = require('./_arrayEvery'),
- baseEvery = require('./_baseEvery'),
- baseIteratee = require('./_baseIteratee'),
- isArray = require('./isArray'),
- isIterateeCall = require('./_isIterateeCall');
-
-/**
- * Checks if `predicate` returns truthy for **all** elements of `collection`.
- * Iteration is stopped once `predicate` returns falsey. The predicate is
- * invoked with three arguments: (value, index|key, collection).
- *
- * **Note:** This method returns `true` for
- * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
- * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
- * elements of empty collections.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {boolean} Returns `true` if all elements pass the predicate check,
- * else `false`.
- * @example
- *
- * _.every([true, 1, null, 'yes'], Boolean);
- * // => false
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': false },
- * { 'user': 'fred', 'age': 40, 'active': false }
- * ];
- *
- * // The `_.matches` iteratee shorthand.
- * _.every(users, { 'user': 'barney', 'active': false });
- * // => false
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.every(users, ['active', false]);
- * // => true
- *
- * // The `_.property` iteratee shorthand.
- * _.every(users, 'active');
- * // => false
- */
-function every(collection, predicate, guard) {
- var func = isArray(collection) ? arrayEvery : baseEvery;
- if (guard && isIterateeCall(collection, predicate, guard)) {
- predicate = undefined;
- }
- return func(collection, baseIteratee(predicate, 3));
-}
-
-module.exports = every;
diff --git a/assets/node_modules/lodash/extend.js b/assets/node_modules/lodash/extend.js
deleted file mode 100644
index e00166c..0000000
--- a/assets/node_modules/lodash/extend.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./assignIn');
diff --git a/assets/node_modules/lodash/extendWith.js b/assets/node_modules/lodash/extendWith.js
deleted file mode 100644
index dbdcb3b..0000000
--- a/assets/node_modules/lodash/extendWith.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./assignInWith');
diff --git a/assets/node_modules/lodash/fill.js b/assets/node_modules/lodash/fill.js
deleted file mode 100644
index ae13aa1..0000000
--- a/assets/node_modules/lodash/fill.js
+++ /dev/null
@@ -1,45 +0,0 @@
-var baseFill = require('./_baseFill'),
- isIterateeCall = require('./_isIterateeCall');
-
-/**
- * Fills elements of `array` with `value` from `start` up to, but not
- * including, `end`.
- *
- * **Note:** This method mutates `array`.
- *
- * @static
- * @memberOf _
- * @since 3.2.0
- * @category Array
- * @param {Array} array The array to fill.
- * @param {*} value The value to fill `array` with.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = [1, 2, 3];
- *
- * _.fill(array, 'a');
- * console.log(array);
- * // => ['a', 'a', 'a']
- *
- * _.fill(Array(3), 2);
- * // => [2, 2, 2]
- *
- * _.fill([4, 6, 8, 10], '*', 1, 3);
- * // => [4, '*', '*', 10]
- */
-function fill(array, value, start, end) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return [];
- }
- if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
- start = 0;
- end = length;
- }
- return baseFill(array, value, start, end);
-}
-
-module.exports = fill;
diff --git a/assets/node_modules/lodash/filter.js b/assets/node_modules/lodash/filter.js
deleted file mode 100644
index 52616be..0000000
--- a/assets/node_modules/lodash/filter.js
+++ /dev/null
@@ -1,48 +0,0 @@
-var arrayFilter = require('./_arrayFilter'),
- baseFilter = require('./_baseFilter'),
- baseIteratee = require('./_baseIteratee'),
- isArray = require('./isArray');
-
-/**
- * Iterates over elements of `collection`, returning an array of all elements
- * `predicate` returns truthy for. The predicate is invoked with three
- * arguments: (value, index|key, collection).
- *
- * **Note:** Unlike `_.remove`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- * @see _.reject
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': true },
- * { 'user': 'fred', 'age': 40, 'active': false }
- * ];
- *
- * _.filter(users, function(o) { return !o.active; });
- * // => objects for ['fred']
- *
- * // The `_.matches` iteratee shorthand.
- * _.filter(users, { 'age': 36, 'active': true });
- * // => objects for ['barney']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.filter(users, ['active', false]);
- * // => objects for ['fred']
- *
- * // The `_.property` iteratee shorthand.
- * _.filter(users, 'active');
- * // => objects for ['barney']
- */
-function filter(collection, predicate) {
- var func = isArray(collection) ? arrayFilter : baseFilter;
- return func(collection, baseIteratee(predicate, 3));
-}
-
-module.exports = filter;
diff --git a/assets/node_modules/lodash/find.js b/assets/node_modules/lodash/find.js
deleted file mode 100644
index de732cc..0000000
--- a/assets/node_modules/lodash/find.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var createFind = require('./_createFind'),
- findIndex = require('./findIndex');
-
-/**
- * Iterates over elements of `collection`, returning the first element
- * `predicate` returns truthy for. The predicate is invoked with three
- * arguments: (value, index|key, collection).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {*} Returns the matched element, else `undefined`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': true },
- * { 'user': 'fred', 'age': 40, 'active': false },
- * { 'user': 'pebbles', 'age': 1, 'active': true }
- * ];
- *
- * _.find(users, function(o) { return o.age < 40; });
- * // => object for 'barney'
- *
- * // The `_.matches` iteratee shorthand.
- * _.find(users, { 'age': 1, 'active': true });
- * // => object for 'pebbles'
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.find(users, ['active', false]);
- * // => object for 'fred'
- *
- * // The `_.property` iteratee shorthand.
- * _.find(users, 'active');
- * // => object for 'barney'
- */
-var find = createFind(findIndex);
-
-module.exports = find;
diff --git a/assets/node_modules/lodash/findIndex.js b/assets/node_modules/lodash/findIndex.js
deleted file mode 100644
index 4689069..0000000
--- a/assets/node_modules/lodash/findIndex.js
+++ /dev/null
@@ -1,55 +0,0 @@
-var baseFindIndex = require('./_baseFindIndex'),
- baseIteratee = require('./_baseIteratee'),
- toInteger = require('./toInteger');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * This method is like `_.find` except that it returns the index of the first
- * element `predicate` returns truthy for instead of the element itself.
- *
- * @static
- * @memberOf _
- * @since 1.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {number} Returns the index of the found element, else `-1`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'active': false },
- * { 'user': 'fred', 'active': false },
- * { 'user': 'pebbles', 'active': true }
- * ];
- *
- * _.findIndex(users, function(o) { return o.user == 'barney'; });
- * // => 0
- *
- * // The `_.matches` iteratee shorthand.
- * _.findIndex(users, { 'user': 'fred', 'active': false });
- * // => 1
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findIndex(users, ['active', false]);
- * // => 0
- *
- * // The `_.property` iteratee shorthand.
- * _.findIndex(users, 'active');
- * // => 2
- */
-function findIndex(array, predicate, fromIndex) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return -1;
- }
- var index = fromIndex == null ? 0 : toInteger(fromIndex);
- if (index < 0) {
- index = nativeMax(length + index, 0);
- }
- return baseFindIndex(array, baseIteratee(predicate, 3), index);
-}
-
-module.exports = findIndex;
diff --git a/assets/node_modules/lodash/findKey.js b/assets/node_modules/lodash/findKey.js
deleted file mode 100644
index cac0248..0000000
--- a/assets/node_modules/lodash/findKey.js
+++ /dev/null
@@ -1,44 +0,0 @@
-var baseFindKey = require('./_baseFindKey'),
- baseForOwn = require('./_baseForOwn'),
- baseIteratee = require('./_baseIteratee');
-
-/**
- * This method is like `_.find` except that it returns the key of the first
- * element `predicate` returns truthy for instead of the element itself.
- *
- * @static
- * @memberOf _
- * @since 1.1.0
- * @category Object
- * @param {Object} object The object to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {string|undefined} Returns the key of the matched element,
- * else `undefined`.
- * @example
- *
- * var users = {
- * 'barney': { 'age': 36, 'active': true },
- * 'fred': { 'age': 40, 'active': false },
- * 'pebbles': { 'age': 1, 'active': true }
- * };
- *
- * _.findKey(users, function(o) { return o.age < 40; });
- * // => 'barney' (iteration order is not guaranteed)
- *
- * // The `_.matches` iteratee shorthand.
- * _.findKey(users, { 'age': 1, 'active': true });
- * // => 'pebbles'
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findKey(users, ['active', false]);
- * // => 'fred'
- *
- * // The `_.property` iteratee shorthand.
- * _.findKey(users, 'active');
- * // => 'barney'
- */
-function findKey(object, predicate) {
- return baseFindKey(object, baseIteratee(predicate, 3), baseForOwn);
-}
-
-module.exports = findKey;
diff --git a/assets/node_modules/lodash/findLast.js b/assets/node_modules/lodash/findLast.js
deleted file mode 100644
index 70b4271..0000000
--- a/assets/node_modules/lodash/findLast.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var createFind = require('./_createFind'),
- findLastIndex = require('./findLastIndex');
-
-/**
- * This method is like `_.find` except that it iterates over elements of
- * `collection` from right to left.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=collection.length-1] The index to search from.
- * @returns {*} Returns the matched element, else `undefined`.
- * @example
- *
- * _.findLast([1, 2, 3, 4], function(n) {
- * return n % 2 == 1;
- * });
- * // => 3
- */
-var findLast = createFind(findLastIndex);
-
-module.exports = findLast;
diff --git a/assets/node_modules/lodash/findLastIndex.js b/assets/node_modules/lodash/findLastIndex.js
deleted file mode 100644
index 7da3431..0000000
--- a/assets/node_modules/lodash/findLastIndex.js
+++ /dev/null
@@ -1,59 +0,0 @@
-var baseFindIndex = require('./_baseFindIndex'),
- baseIteratee = require('./_baseIteratee'),
- toInteger = require('./toInteger');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max,
- nativeMin = Math.min;
-
-/**
- * This method is like `_.findIndex` except that it iterates over elements
- * of `collection` from right to left.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=array.length-1] The index to search from.
- * @returns {number} Returns the index of the found element, else `-1`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'active': true },
- * { 'user': 'fred', 'active': false },
- * { 'user': 'pebbles', 'active': false }
- * ];
- *
- * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
- * // => 2
- *
- * // The `_.matches` iteratee shorthand.
- * _.findLastIndex(users, { 'user': 'barney', 'active': true });
- * // => 0
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findLastIndex(users, ['active', false]);
- * // => 2
- *
- * // The `_.property` iteratee shorthand.
- * _.findLastIndex(users, 'active');
- * // => 0
- */
-function findLastIndex(array, predicate, fromIndex) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return -1;
- }
- var index = length - 1;
- if (fromIndex !== undefined) {
- index = toInteger(fromIndex);
- index = fromIndex < 0
- ? nativeMax(length + index, 0)
- : nativeMin(index, length - 1);
- }
- return baseFindIndex(array, baseIteratee(predicate, 3), index, true);
-}
-
-module.exports = findLastIndex;
diff --git a/assets/node_modules/lodash/findLastKey.js b/assets/node_modules/lodash/findLastKey.js
deleted file mode 100644
index 66fb9fb..0000000
--- a/assets/node_modules/lodash/findLastKey.js
+++ /dev/null
@@ -1,44 +0,0 @@
-var baseFindKey = require('./_baseFindKey'),
- baseForOwnRight = require('./_baseForOwnRight'),
- baseIteratee = require('./_baseIteratee');
-
-/**
- * This method is like `_.findKey` except that it iterates over elements of
- * a collection in the opposite order.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Object
- * @param {Object} object The object to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {string|undefined} Returns the key of the matched element,
- * else `undefined`.
- * @example
- *
- * var users = {
- * 'barney': { 'age': 36, 'active': true },
- * 'fred': { 'age': 40, 'active': false },
- * 'pebbles': { 'age': 1, 'active': true }
- * };
- *
- * _.findLastKey(users, function(o) { return o.age < 40; });
- * // => returns 'pebbles' assuming `_.findKey` returns 'barney'
- *
- * // The `_.matches` iteratee shorthand.
- * _.findLastKey(users, { 'age': 36, 'active': true });
- * // => 'barney'
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findLastKey(users, ['active', false]);
- * // => 'fred'
- *
- * // The `_.property` iteratee shorthand.
- * _.findLastKey(users, 'active');
- * // => 'pebbles'
- */
-function findLastKey(object, predicate) {
- return baseFindKey(object, baseIteratee(predicate, 3), baseForOwnRight);
-}
-
-module.exports = findLastKey;
diff --git a/assets/node_modules/lodash/first.js b/assets/node_modules/lodash/first.js
deleted file mode 100644
index 53f4ad1..0000000
--- a/assets/node_modules/lodash/first.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./head');
diff --git a/assets/node_modules/lodash/flatMap.js b/assets/node_modules/lodash/flatMap.js
deleted file mode 100644
index e668506..0000000
--- a/assets/node_modules/lodash/flatMap.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var baseFlatten = require('./_baseFlatten'),
- map = require('./map');
-
-/**
- * Creates a flattened array of values by running each element in `collection`
- * thru `iteratee` and flattening the mapped results. The iteratee is invoked
- * with three arguments: (value, index|key, collection).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * function duplicate(n) {
- * return [n, n];
- * }
- *
- * _.flatMap([1, 2], duplicate);
- * // => [1, 1, 2, 2]
- */
-function flatMap(collection, iteratee) {
- return baseFlatten(map(collection, iteratee), 1);
-}
-
-module.exports = flatMap;
diff --git a/assets/node_modules/lodash/flatMapDeep.js b/assets/node_modules/lodash/flatMapDeep.js
deleted file mode 100644
index 4653d60..0000000
--- a/assets/node_modules/lodash/flatMapDeep.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var baseFlatten = require('./_baseFlatten'),
- map = require('./map');
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
-
-/**
- * This method is like `_.flatMap` except that it recursively flattens the
- * mapped results.
- *
- * @static
- * @memberOf _
- * @since 4.7.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * function duplicate(n) {
- * return [[[n, n]]];
- * }
- *
- * _.flatMapDeep([1, 2], duplicate);
- * // => [1, 1, 2, 2]
- */
-function flatMapDeep(collection, iteratee) {
- return baseFlatten(map(collection, iteratee), INFINITY);
-}
-
-module.exports = flatMapDeep;
diff --git a/assets/node_modules/lodash/flatMapDepth.js b/assets/node_modules/lodash/flatMapDepth.js
deleted file mode 100644
index 6d72005..0000000
--- a/assets/node_modules/lodash/flatMapDepth.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var baseFlatten = require('./_baseFlatten'),
- map = require('./map'),
- toInteger = require('./toInteger');
-
-/**
- * This method is like `_.flatMap` except that it recursively flattens the
- * mapped results up to `depth` times.
- *
- * @static
- * @memberOf _
- * @since 4.7.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {number} [depth=1] The maximum recursion depth.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * function duplicate(n) {
- * return [[[n, n]]];
- * }
- *
- * _.flatMapDepth([1, 2], duplicate, 2);
- * // => [[1, 1], [2, 2]]
- */
-function flatMapDepth(collection, iteratee, depth) {
- depth = depth === undefined ? 1 : toInteger(depth);
- return baseFlatten(map(collection, iteratee), depth);
-}
-
-module.exports = flatMapDepth;
diff --git a/assets/node_modules/lodash/flatten.js b/assets/node_modules/lodash/flatten.js
deleted file mode 100644
index 3f09f7f..0000000
--- a/assets/node_modules/lodash/flatten.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var baseFlatten = require('./_baseFlatten');
-
-/**
- * Flattens `array` a single level deep.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to flatten.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * _.flatten([1, [2, [3, [4]], 5]]);
- * // => [1, 2, [3, [4]], 5]
- */
-function flatten(array) {
- var length = array == null ? 0 : array.length;
- return length ? baseFlatten(array, 1) : [];
-}
-
-module.exports = flatten;
diff --git a/assets/node_modules/lodash/flattenDeep.js b/assets/node_modules/lodash/flattenDeep.js
deleted file mode 100644
index 8ad585c..0000000
--- a/assets/node_modules/lodash/flattenDeep.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var baseFlatten = require('./_baseFlatten');
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
-
-/**
- * Recursively flattens `array`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to flatten.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * _.flattenDeep([1, [2, [3, [4]], 5]]);
- * // => [1, 2, 3, 4, 5]
- */
-function flattenDeep(array) {
- var length = array == null ? 0 : array.length;
- return length ? baseFlatten(array, INFINITY) : [];
-}
-
-module.exports = flattenDeep;
diff --git a/assets/node_modules/lodash/flattenDepth.js b/assets/node_modules/lodash/flattenDepth.js
deleted file mode 100644
index 441fdcc..0000000
--- a/assets/node_modules/lodash/flattenDepth.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var baseFlatten = require('./_baseFlatten'),
- toInteger = require('./toInteger');
-
-/**
- * Recursively flatten `array` up to `depth` times.
- *
- * @static
- * @memberOf _
- * @since 4.4.0
- * @category Array
- * @param {Array} array The array to flatten.
- * @param {number} [depth=1] The maximum recursion depth.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * var array = [1, [2, [3, [4]], 5]];
- *
- * _.flattenDepth(array, 1);
- * // => [1, 2, [3, [4]], 5]
- *
- * _.flattenDepth(array, 2);
- * // => [1, 2, 3, [4], 5]
- */
-function flattenDepth(array, depth) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return [];
- }
- depth = depth === undefined ? 1 : toInteger(depth);
- return baseFlatten(array, depth);
-}
-
-module.exports = flattenDepth;
diff --git a/assets/node_modules/lodash/flip.js b/assets/node_modules/lodash/flip.js
deleted file mode 100644
index c28dd78..0000000
--- a/assets/node_modules/lodash/flip.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var createWrap = require('./_createWrap');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_FLIP_FLAG = 512;
-
-/**
- * Creates a function that invokes `func` with arguments reversed.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Function
- * @param {Function} func The function to flip arguments for.
- * @returns {Function} Returns the new flipped function.
- * @example
- *
- * var flipped = _.flip(function() {
- * return _.toArray(arguments);
- * });
- *
- * flipped('a', 'b', 'c', 'd');
- * // => ['d', 'c', 'b', 'a']
- */
-function flip(func) {
- return createWrap(func, WRAP_FLIP_FLAG);
-}
-
-module.exports = flip;
diff --git a/assets/node_modules/lodash/floor.js b/assets/node_modules/lodash/floor.js
deleted file mode 100644
index ab6dfa2..0000000
--- a/assets/node_modules/lodash/floor.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var createRound = require('./_createRound');
-
-/**
- * Computes `number` rounded down to `precision`.
- *
- * @static
- * @memberOf _
- * @since 3.10.0
- * @category Math
- * @param {number} number The number to round down.
- * @param {number} [precision=0] The precision to round down to.
- * @returns {number} Returns the rounded down number.
- * @example
- *
- * _.floor(4.006);
- * // => 4
- *
- * _.floor(0.046, 2);
- * // => 0.04
- *
- * _.floor(4060, -2);
- * // => 4000
- */
-var floor = createRound('floor');
-
-module.exports = floor;
diff --git a/assets/node_modules/lodash/flow.js b/assets/node_modules/lodash/flow.js
deleted file mode 100644
index 74b6b62..0000000
--- a/assets/node_modules/lodash/flow.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var createFlow = require('./_createFlow');
-
-/**
- * Creates a function that returns the result of invoking the given functions
- * with the `this` binding of the created function, where each successive
- * invocation is supplied the return value of the previous.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Util
- * @param {...(Function|Function[])} [funcs] The functions to invoke.
- * @returns {Function} Returns the new composite function.
- * @see _.flowRight
- * @example
- *
- * function square(n) {
- * return n * n;
- * }
- *
- * var addSquare = _.flow([_.add, square]);
- * addSquare(1, 2);
- * // => 9
- */
-var flow = createFlow();
-
-module.exports = flow;
diff --git a/assets/node_modules/lodash/flowRight.js b/assets/node_modules/lodash/flowRight.js
deleted file mode 100644
index 1146141..0000000
--- a/assets/node_modules/lodash/flowRight.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var createFlow = require('./_createFlow');
-
-/**
- * This method is like `_.flow` except that it creates a function that
- * invokes the given functions from right to left.
- *
- * @static
- * @since 3.0.0
- * @memberOf _
- * @category Util
- * @param {...(Function|Function[])} [funcs] The functions to invoke.
- * @returns {Function} Returns the new composite function.
- * @see _.flow
- * @example
- *
- * function square(n) {
- * return n * n;
- * }
- *
- * var addSquare = _.flowRight([square, _.add]);
- * addSquare(1, 2);
- * // => 9
- */
-var flowRight = createFlow(true);
-
-module.exports = flowRight;
diff --git a/assets/node_modules/lodash/forEach.js b/assets/node_modules/lodash/forEach.js
deleted file mode 100644
index c64eaa7..0000000
--- a/assets/node_modules/lodash/forEach.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var arrayEach = require('./_arrayEach'),
- baseEach = require('./_baseEach'),
- castFunction = require('./_castFunction'),
- isArray = require('./isArray');
-
-/**
- * Iterates over elements of `collection` and invokes `iteratee` for each element.
- * The iteratee is invoked with three arguments: (value, index|key, collection).
- * Iteratee functions may exit iteration early by explicitly returning `false`.
- *
- * **Note:** As with other "Collections" methods, objects with a "length"
- * property are iterated like arrays. To avoid this behavior use `_.forIn`
- * or `_.forOwn` for object iteration.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @alias each
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- * @see _.forEachRight
- * @example
- *
- * _.forEach([1, 2], function(value) {
- * console.log(value);
- * });
- * // => Logs `1` then `2`.
- *
- * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
- * console.log(key);
- * });
- * // => Logs 'a' then 'b' (iteration order is not guaranteed).
- */
-function forEach(collection, iteratee) {
- var func = isArray(collection) ? arrayEach : baseEach;
- return func(collection, castFunction(iteratee));
-}
-
-module.exports = forEach;
diff --git a/assets/node_modules/lodash/forEachRight.js b/assets/node_modules/lodash/forEachRight.js
deleted file mode 100644
index 7390eba..0000000
--- a/assets/node_modules/lodash/forEachRight.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var arrayEachRight = require('./_arrayEachRight'),
- baseEachRight = require('./_baseEachRight'),
- castFunction = require('./_castFunction'),
- isArray = require('./isArray');
-
-/**
- * This method is like `_.forEach` except that it iterates over elements of
- * `collection` from right to left.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @alias eachRight
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- * @see _.forEach
- * @example
- *
- * _.forEachRight([1, 2], function(value) {
- * console.log(value);
- * });
- * // => Logs `2` then `1`.
- */
-function forEachRight(collection, iteratee) {
- var func = isArray(collection) ? arrayEachRight : baseEachRight;
- return func(collection, castFunction(iteratee));
-}
-
-module.exports = forEachRight;
diff --git a/assets/node_modules/lodash/forIn.js b/assets/node_modules/lodash/forIn.js
deleted file mode 100644
index 583a596..0000000
--- a/assets/node_modules/lodash/forIn.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var baseFor = require('./_baseFor'),
- castFunction = require('./_castFunction'),
- keysIn = require('./keysIn');
-
-/**
- * Iterates over own and inherited enumerable string keyed properties of an
- * object and invokes `iteratee` for each property. The iteratee is invoked
- * with three arguments: (value, key, object). Iteratee functions may exit
- * iteration early by explicitly returning `false`.
- *
- * @static
- * @memberOf _
- * @since 0.3.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns `object`.
- * @see _.forInRight
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.forIn(new Foo, function(value, key) {
- * console.log(key);
- * });
- * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
- */
-function forIn(object, iteratee) {
- return object == null
- ? object
- : baseFor(object, castFunction(iteratee), keysIn);
-}
-
-module.exports = forIn;
diff --git a/assets/node_modules/lodash/forInRight.js b/assets/node_modules/lodash/forInRight.js
deleted file mode 100644
index 4aedf58..0000000
--- a/assets/node_modules/lodash/forInRight.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var baseForRight = require('./_baseForRight'),
- castFunction = require('./_castFunction'),
- keysIn = require('./keysIn');
-
-/**
- * This method is like `_.forIn` except that it iterates over properties of
- * `object` in the opposite order.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns `object`.
- * @see _.forIn
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.forInRight(new Foo, function(value, key) {
- * console.log(key);
- * });
- * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.
- */
-function forInRight(object, iteratee) {
- return object == null
- ? object
- : baseForRight(object, castFunction(iteratee), keysIn);
-}
-
-module.exports = forInRight;
diff --git a/assets/node_modules/lodash/forOwn.js b/assets/node_modules/lodash/forOwn.js
deleted file mode 100644
index 94eed84..0000000
--- a/assets/node_modules/lodash/forOwn.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var baseForOwn = require('./_baseForOwn'),
- castFunction = require('./_castFunction');
-
-/**
- * Iterates over own enumerable string keyed properties of an object and
- * invokes `iteratee` for each property. The iteratee is invoked with three
- * arguments: (value, key, object). Iteratee functions may exit iteration
- * early by explicitly returning `false`.
- *
- * @static
- * @memberOf _
- * @since 0.3.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns `object`.
- * @see _.forOwnRight
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.forOwn(new Foo, function(value, key) {
- * console.log(key);
- * });
- * // => Logs 'a' then 'b' (iteration order is not guaranteed).
- */
-function forOwn(object, iteratee) {
- return object && baseForOwn(object, castFunction(iteratee));
-}
-
-module.exports = forOwn;
diff --git a/assets/node_modules/lodash/forOwnRight.js b/assets/node_modules/lodash/forOwnRight.js
deleted file mode 100644
index 86f338f..0000000
--- a/assets/node_modules/lodash/forOwnRight.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var baseForOwnRight = require('./_baseForOwnRight'),
- castFunction = require('./_castFunction');
-
-/**
- * This method is like `_.forOwn` except that it iterates over properties of
- * `object` in the opposite order.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns `object`.
- * @see _.forOwn
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.forOwnRight(new Foo, function(value, key) {
- * console.log(key);
- * });
- * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.
- */
-function forOwnRight(object, iteratee) {
- return object && baseForOwnRight(object, castFunction(iteratee));
-}
-
-module.exports = forOwnRight;
diff --git a/assets/node_modules/lodash/fp.js b/assets/node_modules/lodash/fp.js
deleted file mode 100644
index e372dbb..0000000
--- a/assets/node_modules/lodash/fp.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var _ = require('./lodash.min').runInContext();
-module.exports = require('./fp/_baseConvert')(_, _);
diff --git a/assets/node_modules/lodash/fp/F.js b/assets/node_modules/lodash/fp/F.js
deleted file mode 100644
index a05a63a..0000000
--- a/assets/node_modules/lodash/fp/F.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./stubFalse');
diff --git a/assets/node_modules/lodash/fp/T.js b/assets/node_modules/lodash/fp/T.js
deleted file mode 100644
index e2ba8ea..0000000
--- a/assets/node_modules/lodash/fp/T.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./stubTrue');
diff --git a/assets/node_modules/lodash/fp/__.js b/assets/node_modules/lodash/fp/__.js
deleted file mode 100644
index 4af98de..0000000
--- a/assets/node_modules/lodash/fp/__.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./placeholder');
diff --git a/assets/node_modules/lodash/fp/_baseConvert.js b/assets/node_modules/lodash/fp/_baseConvert.js
deleted file mode 100644
index 9baf8e1..0000000
--- a/assets/node_modules/lodash/fp/_baseConvert.js
+++ /dev/null
@@ -1,569 +0,0 @@
-var mapping = require('./_mapping'),
- fallbackHolder = require('./placeholder');
-
-/** Built-in value reference. */
-var push = Array.prototype.push;
-
-/**
- * Creates a function, with an arity of `n`, that invokes `func` with the
- * arguments it receives.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {number} n The arity of the new function.
- * @returns {Function} Returns the new function.
- */
-function baseArity(func, n) {
- return n == 2
- ? function(a, b) { return func.apply(undefined, arguments); }
- : function(a) { return func.apply(undefined, arguments); };
-}
-
-/**
- * Creates a function that invokes `func`, with up to `n` arguments, ignoring
- * any additional arguments.
- *
- * @private
- * @param {Function} func The function to cap arguments for.
- * @param {number} n The arity cap.
- * @returns {Function} Returns the new function.
- */
-function baseAry(func, n) {
- return n == 2
- ? function(a, b) { return func(a, b); }
- : function(a) { return func(a); };
-}
-
-/**
- * Creates a clone of `array`.
- *
- * @private
- * @param {Array} array The array to clone.
- * @returns {Array} Returns the cloned array.
- */
-function cloneArray(array) {
- var length = array ? array.length : 0,
- result = Array(length);
-
- while (length--) {
- result[length] = array[length];
- }
- return result;
-}
-
-/**
- * Creates a function that clones a given object using the assignment `func`.
- *
- * @private
- * @param {Function} func The assignment function.
- * @returns {Function} Returns the new cloner function.
- */
-function createCloner(func) {
- return function(object) {
- return func({}, object);
- };
-}
-
-/**
- * A specialized version of `_.spread` which flattens the spread array into
- * the arguments of the invoked `func`.
- *
- * @private
- * @param {Function} func The function to spread arguments over.
- * @param {number} start The start position of the spread.
- * @returns {Function} Returns the new function.
- */
-function flatSpread(func, start) {
- return function() {
- var length = arguments.length,
- lastIndex = length - 1,
- args = Array(length);
-
- while (length--) {
- args[length] = arguments[length];
- }
- var array = args[start],
- otherArgs = args.slice(0, start);
-
- if (array) {
- push.apply(otherArgs, array);
- }
- if (start != lastIndex) {
- push.apply(otherArgs, args.slice(start + 1));
- }
- return func.apply(this, otherArgs);
- };
-}
-
-/**
- * Creates a function that wraps `func` and uses `cloner` to clone the first
- * argument it receives.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {Function} cloner The function to clone arguments.
- * @returns {Function} Returns the new immutable function.
- */
-function wrapImmutable(func, cloner) {
- return function() {
- var length = arguments.length;
- if (!length) {
- return;
- }
- var args = Array(length);
- while (length--) {
- args[length] = arguments[length];
- }
- var result = args[0] = cloner.apply(undefined, args);
- func.apply(undefined, args);
- return result;
- };
-}
-
-/**
- * The base implementation of `convert` which accepts a `util` object of methods
- * required to perform conversions.
- *
- * @param {Object} util The util object.
- * @param {string} name The name of the function to convert.
- * @param {Function} func The function to convert.
- * @param {Object} [options] The options object.
- * @param {boolean} [options.cap=true] Specify capping iteratee arguments.
- * @param {boolean} [options.curry=true] Specify currying.
- * @param {boolean} [options.fixed=true] Specify fixed arity.
- * @param {boolean} [options.immutable=true] Specify immutable operations.
- * @param {boolean} [options.rearg=true] Specify rearranging arguments.
- * @returns {Function|Object} Returns the converted function or object.
- */
-function baseConvert(util, name, func, options) {
- var isLib = typeof name == 'function',
- isObj = name === Object(name);
-
- if (isObj) {
- options = func;
- func = name;
- name = undefined;
- }
- if (func == null) {
- throw new TypeError;
- }
- options || (options = {});
-
- var config = {
- 'cap': 'cap' in options ? options.cap : true,
- 'curry': 'curry' in options ? options.curry : true,
- 'fixed': 'fixed' in options ? options.fixed : true,
- 'immutable': 'immutable' in options ? options.immutable : true,
- 'rearg': 'rearg' in options ? options.rearg : true
- };
-
- var defaultHolder = isLib ? func : fallbackHolder,
- forceCurry = ('curry' in options) && options.curry,
- forceFixed = ('fixed' in options) && options.fixed,
- forceRearg = ('rearg' in options) && options.rearg,
- pristine = isLib ? func.runInContext() : undefined;
-
- var helpers = isLib ? func : {
- 'ary': util.ary,
- 'assign': util.assign,
- 'clone': util.clone,
- 'curry': util.curry,
- 'forEach': util.forEach,
- 'isArray': util.isArray,
- 'isError': util.isError,
- 'isFunction': util.isFunction,
- 'isWeakMap': util.isWeakMap,
- 'iteratee': util.iteratee,
- 'keys': util.keys,
- 'rearg': util.rearg,
- 'toInteger': util.toInteger,
- 'toPath': util.toPath
- };
-
- var ary = helpers.ary,
- assign = helpers.assign,
- clone = helpers.clone,
- curry = helpers.curry,
- each = helpers.forEach,
- isArray = helpers.isArray,
- isError = helpers.isError,
- isFunction = helpers.isFunction,
- isWeakMap = helpers.isWeakMap,
- keys = helpers.keys,
- rearg = helpers.rearg,
- toInteger = helpers.toInteger,
- toPath = helpers.toPath;
-
- var aryMethodKeys = keys(mapping.aryMethod);
-
- var wrappers = {
- 'castArray': function(castArray) {
- return function() {
- var value = arguments[0];
- return isArray(value)
- ? castArray(cloneArray(value))
- : castArray.apply(undefined, arguments);
- };
- },
- 'iteratee': function(iteratee) {
- return function() {
- var func = arguments[0],
- arity = arguments[1],
- result = iteratee(func, arity),
- length = result.length;
-
- if (config.cap && typeof arity == 'number') {
- arity = arity > 2 ? (arity - 2) : 1;
- return (length && length <= arity) ? result : baseAry(result, arity);
- }
- return result;
- };
- },
- 'mixin': function(mixin) {
- return function(source) {
- var func = this;
- if (!isFunction(func)) {
- return mixin(func, Object(source));
- }
- var pairs = [];
- each(keys(source), function(key) {
- if (isFunction(source[key])) {
- pairs.push([key, func.prototype[key]]);
- }
- });
-
- mixin(func, Object(source));
-
- each(pairs, function(pair) {
- var value = pair[1];
- if (isFunction(value)) {
- func.prototype[pair[0]] = value;
- } else {
- delete func.prototype[pair[0]];
- }
- });
- return func;
- };
- },
- 'nthArg': function(nthArg) {
- return function(n) {
- var arity = n < 0 ? 1 : (toInteger(n) + 1);
- return curry(nthArg(n), arity);
- };
- },
- 'rearg': function(rearg) {
- return function(func, indexes) {
- var arity = indexes ? indexes.length : 0;
- return curry(rearg(func, indexes), arity);
- };
- },
- 'runInContext': function(runInContext) {
- return function(context) {
- return baseConvert(util, runInContext(context), options);
- };
- }
- };
-
- /*--------------------------------------------------------------------------*/
-
- /**
- * Casts `func` to a function with an arity capped iteratee if needed.
- *
- * @private
- * @param {string} name The name of the function to inspect.
- * @param {Function} func The function to inspect.
- * @returns {Function} Returns the cast function.
- */
- function castCap(name, func) {
- if (config.cap) {
- var indexes = mapping.iterateeRearg[name];
- if (indexes) {
- return iterateeRearg(func, indexes);
- }
- var n = !isLib && mapping.iterateeAry[name];
- if (n) {
- return iterateeAry(func, n);
- }
- }
- return func;
- }
-
- /**
- * Casts `func` to a curried function if needed.
- *
- * @private
- * @param {string} name The name of the function to inspect.
- * @param {Function} func The function to inspect.
- * @param {number} n The arity of `func`.
- * @returns {Function} Returns the cast function.
- */
- function castCurry(name, func, n) {
- return (forceCurry || (config.curry && n > 1))
- ? curry(func, n)
- : func;
- }
-
- /**
- * Casts `func` to a fixed arity function if needed.
- *
- * @private
- * @param {string} name The name of the function to inspect.
- * @param {Function} func The function to inspect.
- * @param {number} n The arity cap.
- * @returns {Function} Returns the cast function.
- */
- function castFixed(name, func, n) {
- if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {
- var data = mapping.methodSpread[name],
- start = data && data.start;
-
- return start === undefined ? ary(func, n) : flatSpread(func, start);
- }
- return func;
- }
-
- /**
- * Casts `func` to an rearged function if needed.
- *
- * @private
- * @param {string} name The name of the function to inspect.
- * @param {Function} func The function to inspect.
- * @param {number} n The arity of `func`.
- * @returns {Function} Returns the cast function.
- */
- function castRearg(name, func, n) {
- return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))
- ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])
- : func;
- }
-
- /**
- * Creates a clone of `object` by `path`.
- *
- * @private
- * @param {Object} object The object to clone.
- * @param {Array|string} path The path to clone by.
- * @returns {Object} Returns the cloned object.
- */
- function cloneByPath(object, path) {
- path = toPath(path);
-
- var index = -1,
- length = path.length,
- lastIndex = length - 1,
- result = clone(Object(object)),
- nested = result;
-
- while (nested != null && ++index < length) {
- var key = path[index],
- value = nested[key];
-
- if (value != null &&
- !(isFunction(value) || isError(value) || isWeakMap(value))) {
- nested[key] = clone(index == lastIndex ? value : Object(value));
- }
- nested = nested[key];
- }
- return result;
- }
-
- /**
- * Converts `lodash` to an immutable auto-curried iteratee-first data-last
- * version with conversion `options` applied.
- *
- * @param {Object} [options] The options object. See `baseConvert` for more details.
- * @returns {Function} Returns the converted `lodash`.
- */
- function convertLib(options) {
- return _.runInContext.convert(options)(undefined);
- }
-
- /**
- * Create a converter function for `func` of `name`.
- *
- * @param {string} name The name of the function to convert.
- * @param {Function} func The function to convert.
- * @returns {Function} Returns the new converter function.
- */
- function createConverter(name, func) {
- var realName = mapping.aliasToReal[name] || name,
- methodName = mapping.remap[realName] || realName,
- oldOptions = options;
-
- return function(options) {
- var newUtil = isLib ? pristine : helpers,
- newFunc = isLib ? pristine[methodName] : func,
- newOptions = assign(assign({}, oldOptions), options);
-
- return baseConvert(newUtil, realName, newFunc, newOptions);
- };
- }
-
- /**
- * Creates a function that wraps `func` to invoke its iteratee, with up to `n`
- * arguments, ignoring any additional arguments.
- *
- * @private
- * @param {Function} func The function to cap iteratee arguments for.
- * @param {number} n The arity cap.
- * @returns {Function} Returns the new function.
- */
- function iterateeAry(func, n) {
- return overArg(func, function(func) {
- return typeof func == 'function' ? baseAry(func, n) : func;
- });
- }
-
- /**
- * Creates a function that wraps `func` to invoke its iteratee with arguments
- * arranged according to the specified `indexes` where the argument value at
- * the first index is provided as the first argument, the argument value at
- * the second index is provided as the second argument, and so on.
- *
- * @private
- * @param {Function} func The function to rearrange iteratee arguments for.
- * @param {number[]} indexes The arranged argument indexes.
- * @returns {Function} Returns the new function.
- */
- function iterateeRearg(func, indexes) {
- return overArg(func, function(func) {
- var n = indexes.length;
- return baseArity(rearg(baseAry(func, n), indexes), n);
- });
- }
-
- /**
- * Creates a function that invokes `func` with its first argument transformed.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {Function} transform The argument transform.
- * @returns {Function} Returns the new function.
- */
- function overArg(func, transform) {
- return function() {
- var length = arguments.length;
- if (!length) {
- return func();
- }
- var args = Array(length);
- while (length--) {
- args[length] = arguments[length];
- }
- var index = config.rearg ? 0 : (length - 1);
- args[index] = transform(args[index]);
- return func.apply(undefined, args);
- };
- }
-
- /**
- * Creates a function that wraps `func` and applys the conversions
- * rules by `name`.
- *
- * @private
- * @param {string} name The name of the function to wrap.
- * @param {Function} func The function to wrap.
- * @returns {Function} Returns the converted function.
- */
- function wrap(name, func, placeholder) {
- var result,
- realName = mapping.aliasToReal[name] || name,
- wrapped = func,
- wrapper = wrappers[realName];
-
- if (wrapper) {
- wrapped = wrapper(func);
- }
- else if (config.immutable) {
- if (mapping.mutate.array[realName]) {
- wrapped = wrapImmutable(func, cloneArray);
- }
- else if (mapping.mutate.object[realName]) {
- wrapped = wrapImmutable(func, createCloner(func));
- }
- else if (mapping.mutate.set[realName]) {
- wrapped = wrapImmutable(func, cloneByPath);
- }
- }
- each(aryMethodKeys, function(aryKey) {
- each(mapping.aryMethod[aryKey], function(otherName) {
- if (realName == otherName) {
- var data = mapping.methodSpread[realName],
- afterRearg = data && data.afterRearg;
-
- result = afterRearg
- ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)
- : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);
-
- result = castCap(realName, result);
- result = castCurry(realName, result, aryKey);
- return false;
- }
- });
- return !result;
- });
-
- result || (result = wrapped);
- if (result == func) {
- result = forceCurry ? curry(result, 1) : function() {
- return func.apply(this, arguments);
- };
- }
- result.convert = createConverter(realName, func);
- result.placeholder = func.placeholder = placeholder;
-
- return result;
- }
-
- /*--------------------------------------------------------------------------*/
-
- if (!isObj) {
- return wrap(name, func, defaultHolder);
- }
- var _ = func;
-
- // Convert methods by ary cap.
- var pairs = [];
- each(aryMethodKeys, function(aryKey) {
- each(mapping.aryMethod[aryKey], function(key) {
- var func = _[mapping.remap[key] || key];
- if (func) {
- pairs.push([key, wrap(key, func, _)]);
- }
- });
- });
-
- // Convert remaining methods.
- each(keys(_), function(key) {
- var func = _[key];
- if (typeof func == 'function') {
- var length = pairs.length;
- while (length--) {
- if (pairs[length][0] == key) {
- return;
- }
- }
- func.convert = createConverter(key, func);
- pairs.push([key, func]);
- }
- });
-
- // Assign to `_` leaving `_.prototype` unchanged to allow chaining.
- each(pairs, function(pair) {
- _[pair[0]] = pair[1];
- });
-
- _.convert = convertLib;
- _.placeholder = _;
-
- // Assign aliases.
- each(keys(_), function(key) {
- each(mapping.realToAlias[key] || [], function(alias) {
- _[alias] = _[key];
- });
- });
-
- return _;
-}
-
-module.exports = baseConvert;
diff --git a/assets/node_modules/lodash/fp/_convertBrowser.js b/assets/node_modules/lodash/fp/_convertBrowser.js
deleted file mode 100644
index bde030d..0000000
--- a/assets/node_modules/lodash/fp/_convertBrowser.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var baseConvert = require('./_baseConvert');
-
-/**
- * Converts `lodash` to an immutable auto-curried iteratee-first data-last
- * version with conversion `options` applied.
- *
- * @param {Function} lodash The lodash function to convert.
- * @param {Object} [options] The options object. See `baseConvert` for more details.
- * @returns {Function} Returns the converted `lodash`.
- */
-function browserConvert(lodash, options) {
- return baseConvert(lodash, lodash, options);
-}
-
-if (typeof _ == 'function' && typeof _.runInContext == 'function') {
- _ = browserConvert(_.runInContext());
-}
-module.exports = browserConvert;
diff --git a/assets/node_modules/lodash/fp/_falseOptions.js b/assets/node_modules/lodash/fp/_falseOptions.js
deleted file mode 100644
index 773235e..0000000
--- a/assets/node_modules/lodash/fp/_falseOptions.js
+++ /dev/null
@@ -1,7 +0,0 @@
-module.exports = {
- 'cap': false,
- 'curry': false,
- 'fixed': false,
- 'immutable': false,
- 'rearg': false
-};
diff --git a/assets/node_modules/lodash/fp/_mapping.js b/assets/node_modules/lodash/fp/_mapping.js
deleted file mode 100644
index a642ec0..0000000
--- a/assets/node_modules/lodash/fp/_mapping.js
+++ /dev/null
@@ -1,358 +0,0 @@
-/** Used to map aliases to their real names. */
-exports.aliasToReal = {
-
- // Lodash aliases.
- 'each': 'forEach',
- 'eachRight': 'forEachRight',
- 'entries': 'toPairs',
- 'entriesIn': 'toPairsIn',
- 'extend': 'assignIn',
- 'extendAll': 'assignInAll',
- 'extendAllWith': 'assignInAllWith',
- 'extendWith': 'assignInWith',
- 'first': 'head',
-
- // Methods that are curried variants of others.
- 'conforms': 'conformsTo',
- 'matches': 'isMatch',
- 'property': 'get',
-
- // Ramda aliases.
- '__': 'placeholder',
- 'F': 'stubFalse',
- 'T': 'stubTrue',
- 'all': 'every',
- 'allPass': 'overEvery',
- 'always': 'constant',
- 'any': 'some',
- 'anyPass': 'overSome',
- 'apply': 'spread',
- 'assoc': 'set',
- 'assocPath': 'set',
- 'complement': 'negate',
- 'compose': 'flowRight',
- 'contains': 'includes',
- 'dissoc': 'unset',
- 'dissocPath': 'unset',
- 'dropLast': 'dropRight',
- 'dropLastWhile': 'dropRightWhile',
- 'equals': 'isEqual',
- 'identical': 'eq',
- 'indexBy': 'keyBy',
- 'init': 'initial',
- 'invertObj': 'invert',
- 'juxt': 'over',
- 'omitAll': 'omit',
- 'nAry': 'ary',
- 'path': 'get',
- 'pathEq': 'matchesProperty',
- 'pathOr': 'getOr',
- 'paths': 'at',
- 'pickAll': 'pick',
- 'pipe': 'flow',
- 'pluck': 'map',
- 'prop': 'get',
- 'propEq': 'matchesProperty',
- 'propOr': 'getOr',
- 'props': 'at',
- 'symmetricDifference': 'xor',
- 'symmetricDifferenceBy': 'xorBy',
- 'symmetricDifferenceWith': 'xorWith',
- 'takeLast': 'takeRight',
- 'takeLastWhile': 'takeRightWhile',
- 'unapply': 'rest',
- 'unnest': 'flatten',
- 'useWith': 'overArgs',
- 'where': 'conformsTo',
- 'whereEq': 'isMatch',
- 'zipObj': 'zipObject'
-};
-
-/** Used to map ary to method names. */
-exports.aryMethod = {
- '1': [
- 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',
- 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',
- 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',
- 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',
- 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',
- 'uniqueId', 'words', 'zipAll'
- ],
- '2': [
- 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',
- 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',
- 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',
- 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',
- 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',
- 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',
- 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',
- 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',
- 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',
- 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',
- 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',
- 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',
- 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',
- 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',
- 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',
- 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',
- 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',
- 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',
- 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',
- 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',
- 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',
- 'zipObjectDeep'
- ],
- '3': [
- 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',
- 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',
- 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',
- 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',
- 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',
- 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',
- 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',
- 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',
- 'xorWith', 'zipWith'
- ],
- '4': [
- 'fill', 'setWith', 'updateWith'
- ]
-};
-
-/** Used to map ary to rearg configs. */
-exports.aryRearg = {
- '2': [1, 0],
- '3': [2, 0, 1],
- '4': [3, 2, 0, 1]
-};
-
-/** Used to map method names to their iteratee ary. */
-exports.iterateeAry = {
- 'dropRightWhile': 1,
- 'dropWhile': 1,
- 'every': 1,
- 'filter': 1,
- 'find': 1,
- 'findFrom': 1,
- 'findIndex': 1,
- 'findIndexFrom': 1,
- 'findKey': 1,
- 'findLast': 1,
- 'findLastFrom': 1,
- 'findLastIndex': 1,
- 'findLastIndexFrom': 1,
- 'findLastKey': 1,
- 'flatMap': 1,
- 'flatMapDeep': 1,
- 'flatMapDepth': 1,
- 'forEach': 1,
- 'forEachRight': 1,
- 'forIn': 1,
- 'forInRight': 1,
- 'forOwn': 1,
- 'forOwnRight': 1,
- 'map': 1,
- 'mapKeys': 1,
- 'mapValues': 1,
- 'partition': 1,
- 'reduce': 2,
- 'reduceRight': 2,
- 'reject': 1,
- 'remove': 1,
- 'some': 1,
- 'takeRightWhile': 1,
- 'takeWhile': 1,
- 'times': 1,
- 'transform': 2
-};
-
-/** Used to map method names to iteratee rearg configs. */
-exports.iterateeRearg = {
- 'mapKeys': [1],
- 'reduceRight': [1, 0]
-};
-
-/** Used to map method names to rearg configs. */
-exports.methodRearg = {
- 'assignInAllWith': [1, 0],
- 'assignInWith': [1, 2, 0],
- 'assignAllWith': [1, 0],
- 'assignWith': [1, 2, 0],
- 'differenceBy': [1, 2, 0],
- 'differenceWith': [1, 2, 0],
- 'getOr': [2, 1, 0],
- 'intersectionBy': [1, 2, 0],
- 'intersectionWith': [1, 2, 0],
- 'isEqualWith': [1, 2, 0],
- 'isMatchWith': [2, 1, 0],
- 'mergeAllWith': [1, 0],
- 'mergeWith': [1, 2, 0],
- 'padChars': [2, 1, 0],
- 'padCharsEnd': [2, 1, 0],
- 'padCharsStart': [2, 1, 0],
- 'pullAllBy': [2, 1, 0],
- 'pullAllWith': [2, 1, 0],
- 'rangeStep': [1, 2, 0],
- 'rangeStepRight': [1, 2, 0],
- 'setWith': [3, 1, 2, 0],
- 'sortedIndexBy': [2, 1, 0],
- 'sortedLastIndexBy': [2, 1, 0],
- 'unionBy': [1, 2, 0],
- 'unionWith': [1, 2, 0],
- 'updateWith': [3, 1, 2, 0],
- 'xorBy': [1, 2, 0],
- 'xorWith': [1, 2, 0],
- 'zipWith': [1, 2, 0]
-};
-
-/** Used to map method names to spread configs. */
-exports.methodSpread = {
- 'assignAll': { 'start': 0 },
- 'assignAllWith': { 'start': 0 },
- 'assignInAll': { 'start': 0 },
- 'assignInAllWith': { 'start': 0 },
- 'defaultsAll': { 'start': 0 },
- 'defaultsDeepAll': { 'start': 0 },
- 'invokeArgs': { 'start': 2 },
- 'invokeArgsMap': { 'start': 2 },
- 'mergeAll': { 'start': 0 },
- 'mergeAllWith': { 'start': 0 },
- 'partial': { 'start': 1 },
- 'partialRight': { 'start': 1 },
- 'without': { 'start': 1 },
- 'zipAll': { 'start': 0 }
-};
-
-/** Used to identify methods which mutate arrays or objects. */
-exports.mutate = {
- 'array': {
- 'fill': true,
- 'pull': true,
- 'pullAll': true,
- 'pullAllBy': true,
- 'pullAllWith': true,
- 'pullAt': true,
- 'remove': true,
- 'reverse': true
- },
- 'object': {
- 'assign': true,
- 'assignAll': true,
- 'assignAllWith': true,
- 'assignIn': true,
- 'assignInAll': true,
- 'assignInAllWith': true,
- 'assignInWith': true,
- 'assignWith': true,
- 'defaults': true,
- 'defaultsAll': true,
- 'defaultsDeep': true,
- 'defaultsDeepAll': true,
- 'merge': true,
- 'mergeAll': true,
- 'mergeAllWith': true,
- 'mergeWith': true,
- },
- 'set': {
- 'set': true,
- 'setWith': true,
- 'unset': true,
- 'update': true,
- 'updateWith': true
- }
-};
-
-/** Used to map real names to their aliases. */
-exports.realToAlias = (function() {
- var hasOwnProperty = Object.prototype.hasOwnProperty,
- object = exports.aliasToReal,
- result = {};
-
- for (var key in object) {
- var value = object[key];
- if (hasOwnProperty.call(result, value)) {
- result[value].push(key);
- } else {
- result[value] = [key];
- }
- }
- return result;
-}());
-
-/** Used to map method names to other names. */
-exports.remap = {
- 'assignAll': 'assign',
- 'assignAllWith': 'assignWith',
- 'assignInAll': 'assignIn',
- 'assignInAllWith': 'assignInWith',
- 'curryN': 'curry',
- 'curryRightN': 'curryRight',
- 'defaultsAll': 'defaults',
- 'defaultsDeepAll': 'defaultsDeep',
- 'findFrom': 'find',
- 'findIndexFrom': 'findIndex',
- 'findLastFrom': 'findLast',
- 'findLastIndexFrom': 'findLastIndex',
- 'getOr': 'get',
- 'includesFrom': 'includes',
- 'indexOfFrom': 'indexOf',
- 'invokeArgs': 'invoke',
- 'invokeArgsMap': 'invokeMap',
- 'lastIndexOfFrom': 'lastIndexOf',
- 'mergeAll': 'merge',
- 'mergeAllWith': 'mergeWith',
- 'padChars': 'pad',
- 'padCharsEnd': 'padEnd',
- 'padCharsStart': 'padStart',
- 'propertyOf': 'get',
- 'rangeStep': 'range',
- 'rangeStepRight': 'rangeRight',
- 'restFrom': 'rest',
- 'spreadFrom': 'spread',
- 'trimChars': 'trim',
- 'trimCharsEnd': 'trimEnd',
- 'trimCharsStart': 'trimStart',
- 'zipAll': 'zip'
-};
-
-/** Used to track methods that skip fixing their arity. */
-exports.skipFixed = {
- 'castArray': true,
- 'flow': true,
- 'flowRight': true,
- 'iteratee': true,
- 'mixin': true,
- 'rearg': true,
- 'runInContext': true
-};
-
-/** Used to track methods that skip rearranging arguments. */
-exports.skipRearg = {
- 'add': true,
- 'assign': true,
- 'assignIn': true,
- 'bind': true,
- 'bindKey': true,
- 'concat': true,
- 'difference': true,
- 'divide': true,
- 'eq': true,
- 'gt': true,
- 'gte': true,
- 'isEqual': true,
- 'lt': true,
- 'lte': true,
- 'matchesProperty': true,
- 'merge': true,
- 'multiply': true,
- 'overArgs': true,
- 'partial': true,
- 'partialRight': true,
- 'propertyOf': true,
- 'random': true,
- 'range': true,
- 'rangeRight': true,
- 'subtract': true,
- 'zip': true,
- 'zipObject': true,
- 'zipObjectDeep': true
-};
diff --git a/assets/node_modules/lodash/fp/_util.js b/assets/node_modules/lodash/fp/_util.js
deleted file mode 100644
index 1dbf36f..0000000
--- a/assets/node_modules/lodash/fp/_util.js
+++ /dev/null
@@ -1,16 +0,0 @@
-module.exports = {
- 'ary': require('../ary'),
- 'assign': require('../_baseAssign'),
- 'clone': require('../clone'),
- 'curry': require('../curry'),
- 'forEach': require('../_arrayEach'),
- 'isArray': require('../isArray'),
- 'isError': require('../isError'),
- 'isFunction': require('../isFunction'),
- 'isWeakMap': require('../isWeakMap'),
- 'iteratee': require('../iteratee'),
- 'keys': require('../_baseKeys'),
- 'rearg': require('../rearg'),
- 'toInteger': require('../toInteger'),
- 'toPath': require('../toPath')
-};
diff --git a/assets/node_modules/lodash/fp/add.js b/assets/node_modules/lodash/fp/add.js
deleted file mode 100644
index 816eeec..0000000
--- a/assets/node_modules/lodash/fp/add.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('add', require('../add'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/after.js b/assets/node_modules/lodash/fp/after.js
deleted file mode 100644
index 21a0167..0000000
--- a/assets/node_modules/lodash/fp/after.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('after', require('../after'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/all.js b/assets/node_modules/lodash/fp/all.js
deleted file mode 100644
index d0839f7..0000000
--- a/assets/node_modules/lodash/fp/all.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./every');
diff --git a/assets/node_modules/lodash/fp/allPass.js b/assets/node_modules/lodash/fp/allPass.js
deleted file mode 100644
index 79b73ef..0000000
--- a/assets/node_modules/lodash/fp/allPass.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./overEvery');
diff --git a/assets/node_modules/lodash/fp/always.js b/assets/node_modules/lodash/fp/always.js
deleted file mode 100644
index 9887703..0000000
--- a/assets/node_modules/lodash/fp/always.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./constant');
diff --git a/assets/node_modules/lodash/fp/any.js b/assets/node_modules/lodash/fp/any.js
deleted file mode 100644
index 900ac25..0000000
--- a/assets/node_modules/lodash/fp/any.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./some');
diff --git a/assets/node_modules/lodash/fp/anyPass.js b/assets/node_modules/lodash/fp/anyPass.js
deleted file mode 100644
index 2774ab3..0000000
--- a/assets/node_modules/lodash/fp/anyPass.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./overSome');
diff --git a/assets/node_modules/lodash/fp/apply.js b/assets/node_modules/lodash/fp/apply.js
deleted file mode 100644
index 2b75712..0000000
--- a/assets/node_modules/lodash/fp/apply.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./spread');
diff --git a/assets/node_modules/lodash/fp/array.js b/assets/node_modules/lodash/fp/array.js
deleted file mode 100644
index fe939c2..0000000
--- a/assets/node_modules/lodash/fp/array.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../array'));
diff --git a/assets/node_modules/lodash/fp/ary.js b/assets/node_modules/lodash/fp/ary.js
deleted file mode 100644
index 8edf187..0000000
--- a/assets/node_modules/lodash/fp/ary.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('ary', require('../ary'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/assign.js b/assets/node_modules/lodash/fp/assign.js
deleted file mode 100644
index 23f47af..0000000
--- a/assets/node_modules/lodash/fp/assign.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('assign', require('../assign'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/assignAll.js b/assets/node_modules/lodash/fp/assignAll.js
deleted file mode 100644
index b1d36c7..0000000
--- a/assets/node_modules/lodash/fp/assignAll.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('assignAll', require('../assign'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/assignAllWith.js b/assets/node_modules/lodash/fp/assignAllWith.js
deleted file mode 100644
index 21e836e..0000000
--- a/assets/node_modules/lodash/fp/assignAllWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('assignAllWith', require('../assignWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/assignIn.js b/assets/node_modules/lodash/fp/assignIn.js
deleted file mode 100644
index 6e7c65f..0000000
--- a/assets/node_modules/lodash/fp/assignIn.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('assignIn', require('../assignIn'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/assignInAll.js b/assets/node_modules/lodash/fp/assignInAll.js
deleted file mode 100644
index 7ba75db..0000000
--- a/assets/node_modules/lodash/fp/assignInAll.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('assignInAll', require('../assignIn'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/assignInAllWith.js b/assets/node_modules/lodash/fp/assignInAllWith.js
deleted file mode 100644
index e766903..0000000
--- a/assets/node_modules/lodash/fp/assignInAllWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('assignInAllWith', require('../assignInWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/assignInWith.js b/assets/node_modules/lodash/fp/assignInWith.js
deleted file mode 100644
index acb5923..0000000
--- a/assets/node_modules/lodash/fp/assignInWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('assignInWith', require('../assignInWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/assignWith.js b/assets/node_modules/lodash/fp/assignWith.js
deleted file mode 100644
index eb92521..0000000
--- a/assets/node_modules/lodash/fp/assignWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('assignWith', require('../assignWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/assoc.js b/assets/node_modules/lodash/fp/assoc.js
deleted file mode 100644
index 7648820..0000000
--- a/assets/node_modules/lodash/fp/assoc.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./set');
diff --git a/assets/node_modules/lodash/fp/assocPath.js b/assets/node_modules/lodash/fp/assocPath.js
deleted file mode 100644
index 7648820..0000000
--- a/assets/node_modules/lodash/fp/assocPath.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./set');
diff --git a/assets/node_modules/lodash/fp/at.js b/assets/node_modules/lodash/fp/at.js
deleted file mode 100644
index cc39d25..0000000
--- a/assets/node_modules/lodash/fp/at.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('at', require('../at'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/attempt.js b/assets/node_modules/lodash/fp/attempt.js
deleted file mode 100644
index 26ca42e..0000000
--- a/assets/node_modules/lodash/fp/attempt.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('attempt', require('../attempt'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/before.js b/assets/node_modules/lodash/fp/before.js
deleted file mode 100644
index 7a2de65..0000000
--- a/assets/node_modules/lodash/fp/before.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('before', require('../before'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/bind.js b/assets/node_modules/lodash/fp/bind.js
deleted file mode 100644
index 5cbe4f3..0000000
--- a/assets/node_modules/lodash/fp/bind.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('bind', require('../bind'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/bindAll.js b/assets/node_modules/lodash/fp/bindAll.js
deleted file mode 100644
index 6b4a4a0..0000000
--- a/assets/node_modules/lodash/fp/bindAll.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('bindAll', require('../bindAll'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/bindKey.js b/assets/node_modules/lodash/fp/bindKey.js
deleted file mode 100644
index 6a46c6b..0000000
--- a/assets/node_modules/lodash/fp/bindKey.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('bindKey', require('../bindKey'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/camelCase.js b/assets/node_modules/lodash/fp/camelCase.js
deleted file mode 100644
index 87b77b4..0000000
--- a/assets/node_modules/lodash/fp/camelCase.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('camelCase', require('../camelCase'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/capitalize.js b/assets/node_modules/lodash/fp/capitalize.js
deleted file mode 100644
index cac74e1..0000000
--- a/assets/node_modules/lodash/fp/capitalize.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('capitalize', require('../capitalize'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/castArray.js b/assets/node_modules/lodash/fp/castArray.js
deleted file mode 100644
index 8681c09..0000000
--- a/assets/node_modules/lodash/fp/castArray.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('castArray', require('../castArray'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/ceil.js b/assets/node_modules/lodash/fp/ceil.js
deleted file mode 100644
index f416b72..0000000
--- a/assets/node_modules/lodash/fp/ceil.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('ceil', require('../ceil'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/chain.js b/assets/node_modules/lodash/fp/chain.js
deleted file mode 100644
index 604fe39..0000000
--- a/assets/node_modules/lodash/fp/chain.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('chain', require('../chain'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/chunk.js b/assets/node_modules/lodash/fp/chunk.js
deleted file mode 100644
index 871ab08..0000000
--- a/assets/node_modules/lodash/fp/chunk.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('chunk', require('../chunk'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/clamp.js b/assets/node_modules/lodash/fp/clamp.js
deleted file mode 100644
index 3b06c01..0000000
--- a/assets/node_modules/lodash/fp/clamp.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('clamp', require('../clamp'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/clone.js b/assets/node_modules/lodash/fp/clone.js
deleted file mode 100644
index cadb59c..0000000
--- a/assets/node_modules/lodash/fp/clone.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('clone', require('../clone'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/cloneDeep.js b/assets/node_modules/lodash/fp/cloneDeep.js
deleted file mode 100644
index a6107aa..0000000
--- a/assets/node_modules/lodash/fp/cloneDeep.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('cloneDeep', require('../cloneDeep'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/cloneDeepWith.js b/assets/node_modules/lodash/fp/cloneDeepWith.js
deleted file mode 100644
index 6f01e44..0000000
--- a/assets/node_modules/lodash/fp/cloneDeepWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('cloneDeepWith', require('../cloneDeepWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/cloneWith.js b/assets/node_modules/lodash/fp/cloneWith.js
deleted file mode 100644
index aa88578..0000000
--- a/assets/node_modules/lodash/fp/cloneWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('cloneWith', require('../cloneWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/collection.js b/assets/node_modules/lodash/fp/collection.js
deleted file mode 100644
index fc8b328..0000000
--- a/assets/node_modules/lodash/fp/collection.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../collection'));
diff --git a/assets/node_modules/lodash/fp/commit.js b/assets/node_modules/lodash/fp/commit.js
deleted file mode 100644
index 130a894..0000000
--- a/assets/node_modules/lodash/fp/commit.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('commit', require('../commit'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/compact.js b/assets/node_modules/lodash/fp/compact.js
deleted file mode 100644
index ce8f7a1..0000000
--- a/assets/node_modules/lodash/fp/compact.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('compact', require('../compact'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/complement.js b/assets/node_modules/lodash/fp/complement.js
deleted file mode 100644
index 93eb462..0000000
--- a/assets/node_modules/lodash/fp/complement.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./negate');
diff --git a/assets/node_modules/lodash/fp/compose.js b/assets/node_modules/lodash/fp/compose.js
deleted file mode 100644
index 1954e94..0000000
--- a/assets/node_modules/lodash/fp/compose.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./flowRight');
diff --git a/assets/node_modules/lodash/fp/concat.js b/assets/node_modules/lodash/fp/concat.js
deleted file mode 100644
index e59346a..0000000
--- a/assets/node_modules/lodash/fp/concat.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('concat', require('../concat'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/cond.js b/assets/node_modules/lodash/fp/cond.js
deleted file mode 100644
index 6a0120e..0000000
--- a/assets/node_modules/lodash/fp/cond.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('cond', require('../cond'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/conforms.js b/assets/node_modules/lodash/fp/conforms.js
deleted file mode 100644
index 3247f64..0000000
--- a/assets/node_modules/lodash/fp/conforms.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./conformsTo');
diff --git a/assets/node_modules/lodash/fp/conformsTo.js b/assets/node_modules/lodash/fp/conformsTo.js
deleted file mode 100644
index aa7f41e..0000000
--- a/assets/node_modules/lodash/fp/conformsTo.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('conformsTo', require('../conformsTo'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/constant.js b/assets/node_modules/lodash/fp/constant.js
deleted file mode 100644
index 9e406fc..0000000
--- a/assets/node_modules/lodash/fp/constant.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('constant', require('../constant'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/contains.js b/assets/node_modules/lodash/fp/contains.js
deleted file mode 100644
index 594722a..0000000
--- a/assets/node_modules/lodash/fp/contains.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./includes');
diff --git a/assets/node_modules/lodash/fp/convert.js b/assets/node_modules/lodash/fp/convert.js
deleted file mode 100644
index 4795dc4..0000000
--- a/assets/node_modules/lodash/fp/convert.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var baseConvert = require('./_baseConvert'),
- util = require('./_util');
-
-/**
- * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last
- * version with conversion `options` applied. If `name` is an object its methods
- * will be converted.
- *
- * @param {string} name The name of the function to wrap.
- * @param {Function} [func] The function to wrap.
- * @param {Object} [options] The options object. See `baseConvert` for more details.
- * @returns {Function|Object} Returns the converted function or object.
- */
-function convert(name, func, options) {
- return baseConvert(util, name, func, options);
-}
-
-module.exports = convert;
diff --git a/assets/node_modules/lodash/fp/countBy.js b/assets/node_modules/lodash/fp/countBy.js
deleted file mode 100644
index dfa4643..0000000
--- a/assets/node_modules/lodash/fp/countBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('countBy', require('../countBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/create.js b/assets/node_modules/lodash/fp/create.js
deleted file mode 100644
index 752025f..0000000
--- a/assets/node_modules/lodash/fp/create.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('create', require('../create'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/curry.js b/assets/node_modules/lodash/fp/curry.js
deleted file mode 100644
index b0b4168..0000000
--- a/assets/node_modules/lodash/fp/curry.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('curry', require('../curry'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/curryN.js b/assets/node_modules/lodash/fp/curryN.js
deleted file mode 100644
index 2ae7d00..0000000
--- a/assets/node_modules/lodash/fp/curryN.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('curryN', require('../curry'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/curryRight.js b/assets/node_modules/lodash/fp/curryRight.js
deleted file mode 100644
index cb619eb..0000000
--- a/assets/node_modules/lodash/fp/curryRight.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('curryRight', require('../curryRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/curryRightN.js b/assets/node_modules/lodash/fp/curryRightN.js
deleted file mode 100644
index 2495afc..0000000
--- a/assets/node_modules/lodash/fp/curryRightN.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('curryRightN', require('../curryRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/date.js b/assets/node_modules/lodash/fp/date.js
deleted file mode 100644
index 82cb952..0000000
--- a/assets/node_modules/lodash/fp/date.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../date'));
diff --git a/assets/node_modules/lodash/fp/debounce.js b/assets/node_modules/lodash/fp/debounce.js
deleted file mode 100644
index 2612229..0000000
--- a/assets/node_modules/lodash/fp/debounce.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('debounce', require('../debounce'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/deburr.js b/assets/node_modules/lodash/fp/deburr.js
deleted file mode 100644
index 96463ab..0000000
--- a/assets/node_modules/lodash/fp/deburr.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('deburr', require('../deburr'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/defaultTo.js b/assets/node_modules/lodash/fp/defaultTo.js
deleted file mode 100644
index d6b52a4..0000000
--- a/assets/node_modules/lodash/fp/defaultTo.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('defaultTo', require('../defaultTo'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/defaults.js b/assets/node_modules/lodash/fp/defaults.js
deleted file mode 100644
index e1a8e6e..0000000
--- a/assets/node_modules/lodash/fp/defaults.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('defaults', require('../defaults'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/defaultsAll.js b/assets/node_modules/lodash/fp/defaultsAll.js
deleted file mode 100644
index 238fcc3..0000000
--- a/assets/node_modules/lodash/fp/defaultsAll.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('defaultsAll', require('../defaults'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/defaultsDeep.js b/assets/node_modules/lodash/fp/defaultsDeep.js
deleted file mode 100644
index 1f172ff..0000000
--- a/assets/node_modules/lodash/fp/defaultsDeep.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('defaultsDeep', require('../defaultsDeep'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/defaultsDeepAll.js b/assets/node_modules/lodash/fp/defaultsDeepAll.js
deleted file mode 100644
index 6835f2f..0000000
--- a/assets/node_modules/lodash/fp/defaultsDeepAll.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('defaultsDeepAll', require('../defaultsDeep'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/defer.js b/assets/node_modules/lodash/fp/defer.js
deleted file mode 100644
index ec7990f..0000000
--- a/assets/node_modules/lodash/fp/defer.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('defer', require('../defer'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/delay.js b/assets/node_modules/lodash/fp/delay.js
deleted file mode 100644
index 556dbd5..0000000
--- a/assets/node_modules/lodash/fp/delay.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('delay', require('../delay'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/difference.js b/assets/node_modules/lodash/fp/difference.js
deleted file mode 100644
index 2d03765..0000000
--- a/assets/node_modules/lodash/fp/difference.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('difference', require('../difference'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/differenceBy.js b/assets/node_modules/lodash/fp/differenceBy.js
deleted file mode 100644
index 2f91491..0000000
--- a/assets/node_modules/lodash/fp/differenceBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('differenceBy', require('../differenceBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/differenceWith.js b/assets/node_modules/lodash/fp/differenceWith.js
deleted file mode 100644
index bcf5ad2..0000000
--- a/assets/node_modules/lodash/fp/differenceWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('differenceWith', require('../differenceWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/dissoc.js b/assets/node_modules/lodash/fp/dissoc.js
deleted file mode 100644
index 7ec7be1..0000000
--- a/assets/node_modules/lodash/fp/dissoc.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./unset');
diff --git a/assets/node_modules/lodash/fp/dissocPath.js b/assets/node_modules/lodash/fp/dissocPath.js
deleted file mode 100644
index 7ec7be1..0000000
--- a/assets/node_modules/lodash/fp/dissocPath.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./unset');
diff --git a/assets/node_modules/lodash/fp/divide.js b/assets/node_modules/lodash/fp/divide.js
deleted file mode 100644
index 82048c5..0000000
--- a/assets/node_modules/lodash/fp/divide.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('divide', require('../divide'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/drop.js b/assets/node_modules/lodash/fp/drop.js
deleted file mode 100644
index 2fa9b4f..0000000
--- a/assets/node_modules/lodash/fp/drop.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('drop', require('../drop'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/dropLast.js b/assets/node_modules/lodash/fp/dropLast.js
deleted file mode 100644
index 174e525..0000000
--- a/assets/node_modules/lodash/fp/dropLast.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./dropRight');
diff --git a/assets/node_modules/lodash/fp/dropLastWhile.js b/assets/node_modules/lodash/fp/dropLastWhile.js
deleted file mode 100644
index be2a9d2..0000000
--- a/assets/node_modules/lodash/fp/dropLastWhile.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./dropRightWhile');
diff --git a/assets/node_modules/lodash/fp/dropRight.js b/assets/node_modules/lodash/fp/dropRight.js
deleted file mode 100644
index e98881f..0000000
--- a/assets/node_modules/lodash/fp/dropRight.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('dropRight', require('../dropRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/dropRightWhile.js b/assets/node_modules/lodash/fp/dropRightWhile.js
deleted file mode 100644
index cacaa70..0000000
--- a/assets/node_modules/lodash/fp/dropRightWhile.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('dropRightWhile', require('../dropRightWhile'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/dropWhile.js b/assets/node_modules/lodash/fp/dropWhile.js
deleted file mode 100644
index 285f864..0000000
--- a/assets/node_modules/lodash/fp/dropWhile.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('dropWhile', require('../dropWhile'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/each.js b/assets/node_modules/lodash/fp/each.js
deleted file mode 100644
index 8800f42..0000000
--- a/assets/node_modules/lodash/fp/each.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./forEach');
diff --git a/assets/node_modules/lodash/fp/eachRight.js b/assets/node_modules/lodash/fp/eachRight.js
deleted file mode 100644
index 3252b2a..0000000
--- a/assets/node_modules/lodash/fp/eachRight.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./forEachRight');
diff --git a/assets/node_modules/lodash/fp/endsWith.js b/assets/node_modules/lodash/fp/endsWith.js
deleted file mode 100644
index 17dc2a4..0000000
--- a/assets/node_modules/lodash/fp/endsWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('endsWith', require('../endsWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/entries.js b/assets/node_modules/lodash/fp/entries.js
deleted file mode 100644
index 7a88df2..0000000
--- a/assets/node_modules/lodash/fp/entries.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./toPairs');
diff --git a/assets/node_modules/lodash/fp/entriesIn.js b/assets/node_modules/lodash/fp/entriesIn.js
deleted file mode 100644
index f6c6331..0000000
--- a/assets/node_modules/lodash/fp/entriesIn.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./toPairsIn');
diff --git a/assets/node_modules/lodash/fp/eq.js b/assets/node_modules/lodash/fp/eq.js
deleted file mode 100644
index 9a3d21b..0000000
--- a/assets/node_modules/lodash/fp/eq.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('eq', require('../eq'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/equals.js b/assets/node_modules/lodash/fp/equals.js
deleted file mode 100644
index e6a5ce0..0000000
--- a/assets/node_modules/lodash/fp/equals.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./isEqual');
diff --git a/assets/node_modules/lodash/fp/escape.js b/assets/node_modules/lodash/fp/escape.js
deleted file mode 100644
index 52c1fbb..0000000
--- a/assets/node_modules/lodash/fp/escape.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('escape', require('../escape'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/escapeRegExp.js b/assets/node_modules/lodash/fp/escapeRegExp.js
deleted file mode 100644
index 369b2ef..0000000
--- a/assets/node_modules/lodash/fp/escapeRegExp.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('escapeRegExp', require('../escapeRegExp'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/every.js b/assets/node_modules/lodash/fp/every.js
deleted file mode 100644
index 95c2776..0000000
--- a/assets/node_modules/lodash/fp/every.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('every', require('../every'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/extend.js b/assets/node_modules/lodash/fp/extend.js
deleted file mode 100644
index e00166c..0000000
--- a/assets/node_modules/lodash/fp/extend.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./assignIn');
diff --git a/assets/node_modules/lodash/fp/extendAll.js b/assets/node_modules/lodash/fp/extendAll.js
deleted file mode 100644
index cc55b64..0000000
--- a/assets/node_modules/lodash/fp/extendAll.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./assignInAll');
diff --git a/assets/node_modules/lodash/fp/extendAllWith.js b/assets/node_modules/lodash/fp/extendAllWith.js
deleted file mode 100644
index 6679d20..0000000
--- a/assets/node_modules/lodash/fp/extendAllWith.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./assignInAllWith');
diff --git a/assets/node_modules/lodash/fp/extendWith.js b/assets/node_modules/lodash/fp/extendWith.js
deleted file mode 100644
index dbdcb3b..0000000
--- a/assets/node_modules/lodash/fp/extendWith.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./assignInWith');
diff --git a/assets/node_modules/lodash/fp/fill.js b/assets/node_modules/lodash/fp/fill.js
deleted file mode 100644
index b2d47e8..0000000
--- a/assets/node_modules/lodash/fp/fill.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('fill', require('../fill'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/filter.js b/assets/node_modules/lodash/fp/filter.js
deleted file mode 100644
index 796d501..0000000
--- a/assets/node_modules/lodash/fp/filter.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('filter', require('../filter'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/find.js b/assets/node_modules/lodash/fp/find.js
deleted file mode 100644
index f805d33..0000000
--- a/assets/node_modules/lodash/fp/find.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('find', require('../find'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/findFrom.js b/assets/node_modules/lodash/fp/findFrom.js
deleted file mode 100644
index da8275e..0000000
--- a/assets/node_modules/lodash/fp/findFrom.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('findFrom', require('../find'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/findIndex.js b/assets/node_modules/lodash/fp/findIndex.js
deleted file mode 100644
index 8c15fd1..0000000
--- a/assets/node_modules/lodash/fp/findIndex.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('findIndex', require('../findIndex'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/findIndexFrom.js b/assets/node_modules/lodash/fp/findIndexFrom.js
deleted file mode 100644
index 32e98cb..0000000
--- a/assets/node_modules/lodash/fp/findIndexFrom.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('findIndexFrom', require('../findIndex'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/findKey.js b/assets/node_modules/lodash/fp/findKey.js
deleted file mode 100644
index 475bcfa..0000000
--- a/assets/node_modules/lodash/fp/findKey.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('findKey', require('../findKey'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/findLast.js b/assets/node_modules/lodash/fp/findLast.js
deleted file mode 100644
index 093fe94..0000000
--- a/assets/node_modules/lodash/fp/findLast.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('findLast', require('../findLast'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/findLastFrom.js b/assets/node_modules/lodash/fp/findLastFrom.js
deleted file mode 100644
index 76c38fb..0000000
--- a/assets/node_modules/lodash/fp/findLastFrom.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('findLastFrom', require('../findLast'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/findLastIndex.js b/assets/node_modules/lodash/fp/findLastIndex.js
deleted file mode 100644
index 36986df..0000000
--- a/assets/node_modules/lodash/fp/findLastIndex.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('findLastIndex', require('../findLastIndex'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/findLastIndexFrom.js b/assets/node_modules/lodash/fp/findLastIndexFrom.js
deleted file mode 100644
index 34c8176..0000000
--- a/assets/node_modules/lodash/fp/findLastIndexFrom.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('findLastIndexFrom', require('../findLastIndex'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/findLastKey.js b/assets/node_modules/lodash/fp/findLastKey.js
deleted file mode 100644
index 5f81b60..0000000
--- a/assets/node_modules/lodash/fp/findLastKey.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('findLastKey', require('../findLastKey'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/first.js b/assets/node_modules/lodash/fp/first.js
deleted file mode 100644
index 53f4ad1..0000000
--- a/assets/node_modules/lodash/fp/first.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./head');
diff --git a/assets/node_modules/lodash/fp/flatMap.js b/assets/node_modules/lodash/fp/flatMap.js
deleted file mode 100644
index d01dc4d..0000000
--- a/assets/node_modules/lodash/fp/flatMap.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('flatMap', require('../flatMap'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/flatMapDeep.js b/assets/node_modules/lodash/fp/flatMapDeep.js
deleted file mode 100644
index 569c42e..0000000
--- a/assets/node_modules/lodash/fp/flatMapDeep.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('flatMapDeep', require('../flatMapDeep'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/flatMapDepth.js b/assets/node_modules/lodash/fp/flatMapDepth.js
deleted file mode 100644
index 6eb68fd..0000000
--- a/assets/node_modules/lodash/fp/flatMapDepth.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('flatMapDepth', require('../flatMapDepth'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/flatten.js b/assets/node_modules/lodash/fp/flatten.js
deleted file mode 100644
index 30425d8..0000000
--- a/assets/node_modules/lodash/fp/flatten.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('flatten', require('../flatten'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/flattenDeep.js b/assets/node_modules/lodash/fp/flattenDeep.js
deleted file mode 100644
index aed5db2..0000000
--- a/assets/node_modules/lodash/fp/flattenDeep.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('flattenDeep', require('../flattenDeep'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/flattenDepth.js b/assets/node_modules/lodash/fp/flattenDepth.js
deleted file mode 100644
index ad65e37..0000000
--- a/assets/node_modules/lodash/fp/flattenDepth.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('flattenDepth', require('../flattenDepth'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/flip.js b/assets/node_modules/lodash/fp/flip.js
deleted file mode 100644
index 0547e7b..0000000
--- a/assets/node_modules/lodash/fp/flip.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('flip', require('../flip'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/floor.js b/assets/node_modules/lodash/fp/floor.js
deleted file mode 100644
index a6cf335..0000000
--- a/assets/node_modules/lodash/fp/floor.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('floor', require('../floor'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/flow.js b/assets/node_modules/lodash/fp/flow.js
deleted file mode 100644
index cd83677..0000000
--- a/assets/node_modules/lodash/fp/flow.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('flow', require('../flow'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/flowRight.js b/assets/node_modules/lodash/fp/flowRight.js
deleted file mode 100644
index 972a5b9..0000000
--- a/assets/node_modules/lodash/fp/flowRight.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('flowRight', require('../flowRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/forEach.js b/assets/node_modules/lodash/fp/forEach.js
deleted file mode 100644
index 2f49452..0000000
--- a/assets/node_modules/lodash/fp/forEach.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('forEach', require('../forEach'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/forEachRight.js b/assets/node_modules/lodash/fp/forEachRight.js
deleted file mode 100644
index 3ff9733..0000000
--- a/assets/node_modules/lodash/fp/forEachRight.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('forEachRight', require('../forEachRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/forIn.js b/assets/node_modules/lodash/fp/forIn.js
deleted file mode 100644
index 9341749..0000000
--- a/assets/node_modules/lodash/fp/forIn.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('forIn', require('../forIn'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/forInRight.js b/assets/node_modules/lodash/fp/forInRight.js
deleted file mode 100644
index cecf8bb..0000000
--- a/assets/node_modules/lodash/fp/forInRight.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('forInRight', require('../forInRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/forOwn.js b/assets/node_modules/lodash/fp/forOwn.js
deleted file mode 100644
index 246449e..0000000
--- a/assets/node_modules/lodash/fp/forOwn.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('forOwn', require('../forOwn'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/forOwnRight.js b/assets/node_modules/lodash/fp/forOwnRight.js
deleted file mode 100644
index c5e826e..0000000
--- a/assets/node_modules/lodash/fp/forOwnRight.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('forOwnRight', require('../forOwnRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/fromPairs.js b/assets/node_modules/lodash/fp/fromPairs.js
deleted file mode 100644
index f8cc596..0000000
--- a/assets/node_modules/lodash/fp/fromPairs.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('fromPairs', require('../fromPairs'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/function.js b/assets/node_modules/lodash/fp/function.js
deleted file mode 100644
index dfe69b1..0000000
--- a/assets/node_modules/lodash/fp/function.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../function'));
diff --git a/assets/node_modules/lodash/fp/functions.js b/assets/node_modules/lodash/fp/functions.js
deleted file mode 100644
index 09d1bb1..0000000
--- a/assets/node_modules/lodash/fp/functions.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('functions', require('../functions'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/functionsIn.js b/assets/node_modules/lodash/fp/functionsIn.js
deleted file mode 100644
index 2cfeb83..0000000
--- a/assets/node_modules/lodash/fp/functionsIn.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('functionsIn', require('../functionsIn'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/get.js b/assets/node_modules/lodash/fp/get.js
deleted file mode 100644
index 6d3a328..0000000
--- a/assets/node_modules/lodash/fp/get.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('get', require('../get'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/getOr.js b/assets/node_modules/lodash/fp/getOr.js
deleted file mode 100644
index 7dbf771..0000000
--- a/assets/node_modules/lodash/fp/getOr.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('getOr', require('../get'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/groupBy.js b/assets/node_modules/lodash/fp/groupBy.js
deleted file mode 100644
index fc0bc78..0000000
--- a/assets/node_modules/lodash/fp/groupBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('groupBy', require('../groupBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/gt.js b/assets/node_modules/lodash/fp/gt.js
deleted file mode 100644
index 9e57c80..0000000
--- a/assets/node_modules/lodash/fp/gt.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('gt', require('../gt'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/gte.js b/assets/node_modules/lodash/fp/gte.js
deleted file mode 100644
index 4584786..0000000
--- a/assets/node_modules/lodash/fp/gte.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('gte', require('../gte'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/has.js b/assets/node_modules/lodash/fp/has.js
deleted file mode 100644
index b901298..0000000
--- a/assets/node_modules/lodash/fp/has.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('has', require('../has'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/hasIn.js b/assets/node_modules/lodash/fp/hasIn.js
deleted file mode 100644
index b3c3d1a..0000000
--- a/assets/node_modules/lodash/fp/hasIn.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('hasIn', require('../hasIn'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/head.js b/assets/node_modules/lodash/fp/head.js
deleted file mode 100644
index 2694f0a..0000000
--- a/assets/node_modules/lodash/fp/head.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('head', require('../head'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/identical.js b/assets/node_modules/lodash/fp/identical.js
deleted file mode 100644
index 85563f4..0000000
--- a/assets/node_modules/lodash/fp/identical.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./eq');
diff --git a/assets/node_modules/lodash/fp/identity.js b/assets/node_modules/lodash/fp/identity.js
deleted file mode 100644
index 096415a..0000000
--- a/assets/node_modules/lodash/fp/identity.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('identity', require('../identity'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/inRange.js b/assets/node_modules/lodash/fp/inRange.js
deleted file mode 100644
index 202d940..0000000
--- a/assets/node_modules/lodash/fp/inRange.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('inRange', require('../inRange'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/includes.js b/assets/node_modules/lodash/fp/includes.js
deleted file mode 100644
index 1146780..0000000
--- a/assets/node_modules/lodash/fp/includes.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('includes', require('../includes'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/includesFrom.js b/assets/node_modules/lodash/fp/includesFrom.js
deleted file mode 100644
index 683afdb..0000000
--- a/assets/node_modules/lodash/fp/includesFrom.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('includesFrom', require('../includes'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/indexBy.js b/assets/node_modules/lodash/fp/indexBy.js
deleted file mode 100644
index 7e64bc0..0000000
--- a/assets/node_modules/lodash/fp/indexBy.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./keyBy');
diff --git a/assets/node_modules/lodash/fp/indexOf.js b/assets/node_modules/lodash/fp/indexOf.js
deleted file mode 100644
index 524658e..0000000
--- a/assets/node_modules/lodash/fp/indexOf.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('indexOf', require('../indexOf'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/indexOfFrom.js b/assets/node_modules/lodash/fp/indexOfFrom.js
deleted file mode 100644
index d99c822..0000000
--- a/assets/node_modules/lodash/fp/indexOfFrom.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('indexOfFrom', require('../indexOf'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/init.js b/assets/node_modules/lodash/fp/init.js
deleted file mode 100644
index 2f88d8b..0000000
--- a/assets/node_modules/lodash/fp/init.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./initial');
diff --git a/assets/node_modules/lodash/fp/initial.js b/assets/node_modules/lodash/fp/initial.js
deleted file mode 100644
index b732ba0..0000000
--- a/assets/node_modules/lodash/fp/initial.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('initial', require('../initial'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/intersection.js b/assets/node_modules/lodash/fp/intersection.js
deleted file mode 100644
index 52936d5..0000000
--- a/assets/node_modules/lodash/fp/intersection.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('intersection', require('../intersection'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/intersectionBy.js b/assets/node_modules/lodash/fp/intersectionBy.js
deleted file mode 100644
index 72629f2..0000000
--- a/assets/node_modules/lodash/fp/intersectionBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('intersectionBy', require('../intersectionBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/intersectionWith.js b/assets/node_modules/lodash/fp/intersectionWith.js
deleted file mode 100644
index e064f40..0000000
--- a/assets/node_modules/lodash/fp/intersectionWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('intersectionWith', require('../intersectionWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/invert.js b/assets/node_modules/lodash/fp/invert.js
deleted file mode 100644
index 2d5d1f0..0000000
--- a/assets/node_modules/lodash/fp/invert.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('invert', require('../invert'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/invertBy.js b/assets/node_modules/lodash/fp/invertBy.js
deleted file mode 100644
index 63ca97e..0000000
--- a/assets/node_modules/lodash/fp/invertBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('invertBy', require('../invertBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/invertObj.js b/assets/node_modules/lodash/fp/invertObj.js
deleted file mode 100644
index f1d842e..0000000
--- a/assets/node_modules/lodash/fp/invertObj.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./invert');
diff --git a/assets/node_modules/lodash/fp/invoke.js b/assets/node_modules/lodash/fp/invoke.js
deleted file mode 100644
index fcf17f0..0000000
--- a/assets/node_modules/lodash/fp/invoke.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('invoke', require('../invoke'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/invokeArgs.js b/assets/node_modules/lodash/fp/invokeArgs.js
deleted file mode 100644
index d3f2953..0000000
--- a/assets/node_modules/lodash/fp/invokeArgs.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('invokeArgs', require('../invoke'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/invokeArgsMap.js b/assets/node_modules/lodash/fp/invokeArgsMap.js
deleted file mode 100644
index eaa9f84..0000000
--- a/assets/node_modules/lodash/fp/invokeArgsMap.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('invokeArgsMap', require('../invokeMap'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/invokeMap.js b/assets/node_modules/lodash/fp/invokeMap.js
deleted file mode 100644
index 6515fd7..0000000
--- a/assets/node_modules/lodash/fp/invokeMap.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('invokeMap', require('../invokeMap'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isArguments.js b/assets/node_modules/lodash/fp/isArguments.js
deleted file mode 100644
index 1d93c9e..0000000
--- a/assets/node_modules/lodash/fp/isArguments.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isArguments', require('../isArguments'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isArray.js b/assets/node_modules/lodash/fp/isArray.js
deleted file mode 100644
index ba7ade8..0000000
--- a/assets/node_modules/lodash/fp/isArray.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isArray', require('../isArray'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isArrayBuffer.js b/assets/node_modules/lodash/fp/isArrayBuffer.js
deleted file mode 100644
index 5088513..0000000
--- a/assets/node_modules/lodash/fp/isArrayBuffer.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isArrayBuffer', require('../isArrayBuffer'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isArrayLike.js b/assets/node_modules/lodash/fp/isArrayLike.js
deleted file mode 100644
index 8f1856b..0000000
--- a/assets/node_modules/lodash/fp/isArrayLike.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isArrayLike', require('../isArrayLike'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isArrayLikeObject.js b/assets/node_modules/lodash/fp/isArrayLikeObject.js
deleted file mode 100644
index 2108498..0000000
--- a/assets/node_modules/lodash/fp/isArrayLikeObject.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isArrayLikeObject', require('../isArrayLikeObject'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isBoolean.js b/assets/node_modules/lodash/fp/isBoolean.js
deleted file mode 100644
index 9339f75..0000000
--- a/assets/node_modules/lodash/fp/isBoolean.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isBoolean', require('../isBoolean'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isBuffer.js b/assets/node_modules/lodash/fp/isBuffer.js
deleted file mode 100644
index e60b123..0000000
--- a/assets/node_modules/lodash/fp/isBuffer.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isBuffer', require('../isBuffer'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isDate.js b/assets/node_modules/lodash/fp/isDate.js
deleted file mode 100644
index dc41d08..0000000
--- a/assets/node_modules/lodash/fp/isDate.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isDate', require('../isDate'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isElement.js b/assets/node_modules/lodash/fp/isElement.js
deleted file mode 100644
index 18ee039..0000000
--- a/assets/node_modules/lodash/fp/isElement.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isElement', require('../isElement'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isEmpty.js b/assets/node_modules/lodash/fp/isEmpty.js
deleted file mode 100644
index 0f4ae84..0000000
--- a/assets/node_modules/lodash/fp/isEmpty.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isEmpty', require('../isEmpty'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isEqual.js b/assets/node_modules/lodash/fp/isEqual.js
deleted file mode 100644
index 4138386..0000000
--- a/assets/node_modules/lodash/fp/isEqual.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isEqual', require('../isEqual'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isEqualWith.js b/assets/node_modules/lodash/fp/isEqualWith.js
deleted file mode 100644
index 029ff5c..0000000
--- a/assets/node_modules/lodash/fp/isEqualWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isEqualWith', require('../isEqualWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isError.js b/assets/node_modules/lodash/fp/isError.js
deleted file mode 100644
index 3dfd81c..0000000
--- a/assets/node_modules/lodash/fp/isError.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isError', require('../isError'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isFinite.js b/assets/node_modules/lodash/fp/isFinite.js
deleted file mode 100644
index 0b647b8..0000000
--- a/assets/node_modules/lodash/fp/isFinite.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isFinite', require('../isFinite'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isFunction.js b/assets/node_modules/lodash/fp/isFunction.js
deleted file mode 100644
index ff8e5c4..0000000
--- a/assets/node_modules/lodash/fp/isFunction.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isFunction', require('../isFunction'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isInteger.js b/assets/node_modules/lodash/fp/isInteger.js
deleted file mode 100644
index 67af4ff..0000000
--- a/assets/node_modules/lodash/fp/isInteger.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isInteger', require('../isInteger'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isLength.js b/assets/node_modules/lodash/fp/isLength.js
deleted file mode 100644
index fc101c5..0000000
--- a/assets/node_modules/lodash/fp/isLength.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isLength', require('../isLength'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isMap.js b/assets/node_modules/lodash/fp/isMap.js
deleted file mode 100644
index a209aa6..0000000
--- a/assets/node_modules/lodash/fp/isMap.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isMap', require('../isMap'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isMatch.js b/assets/node_modules/lodash/fp/isMatch.js
deleted file mode 100644
index 6264ca1..0000000
--- a/assets/node_modules/lodash/fp/isMatch.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isMatch', require('../isMatch'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isMatchWith.js b/assets/node_modules/lodash/fp/isMatchWith.js
deleted file mode 100644
index d95f319..0000000
--- a/assets/node_modules/lodash/fp/isMatchWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isMatchWith', require('../isMatchWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isNaN.js b/assets/node_modules/lodash/fp/isNaN.js
deleted file mode 100644
index 66a978f..0000000
--- a/assets/node_modules/lodash/fp/isNaN.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isNaN', require('../isNaN'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isNative.js b/assets/node_modules/lodash/fp/isNative.js
deleted file mode 100644
index 3d775ba..0000000
--- a/assets/node_modules/lodash/fp/isNative.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isNative', require('../isNative'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isNil.js b/assets/node_modules/lodash/fp/isNil.js
deleted file mode 100644
index 5952c02..0000000
--- a/assets/node_modules/lodash/fp/isNil.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isNil', require('../isNil'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isNull.js b/assets/node_modules/lodash/fp/isNull.js
deleted file mode 100644
index f201a35..0000000
--- a/assets/node_modules/lodash/fp/isNull.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isNull', require('../isNull'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isNumber.js b/assets/node_modules/lodash/fp/isNumber.js
deleted file mode 100644
index a2b5fa0..0000000
--- a/assets/node_modules/lodash/fp/isNumber.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isNumber', require('../isNumber'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isObject.js b/assets/node_modules/lodash/fp/isObject.js
deleted file mode 100644
index 231ace0..0000000
--- a/assets/node_modules/lodash/fp/isObject.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isObject', require('../isObject'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isObjectLike.js b/assets/node_modules/lodash/fp/isObjectLike.js
deleted file mode 100644
index f16082e..0000000
--- a/assets/node_modules/lodash/fp/isObjectLike.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isObjectLike', require('../isObjectLike'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isPlainObject.js b/assets/node_modules/lodash/fp/isPlainObject.js
deleted file mode 100644
index b5bea90..0000000
--- a/assets/node_modules/lodash/fp/isPlainObject.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isPlainObject', require('../isPlainObject'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isRegExp.js b/assets/node_modules/lodash/fp/isRegExp.js
deleted file mode 100644
index 12a1a3d..0000000
--- a/assets/node_modules/lodash/fp/isRegExp.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isRegExp', require('../isRegExp'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isSafeInteger.js b/assets/node_modules/lodash/fp/isSafeInteger.js
deleted file mode 100644
index 7230f55..0000000
--- a/assets/node_modules/lodash/fp/isSafeInteger.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isSafeInteger', require('../isSafeInteger'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isSet.js b/assets/node_modules/lodash/fp/isSet.js
deleted file mode 100644
index 35c01f6..0000000
--- a/assets/node_modules/lodash/fp/isSet.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isSet', require('../isSet'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isString.js b/assets/node_modules/lodash/fp/isString.js
deleted file mode 100644
index 1fd0679..0000000
--- a/assets/node_modules/lodash/fp/isString.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isString', require('../isString'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isSymbol.js b/assets/node_modules/lodash/fp/isSymbol.js
deleted file mode 100644
index 3867695..0000000
--- a/assets/node_modules/lodash/fp/isSymbol.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isSymbol', require('../isSymbol'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isTypedArray.js b/assets/node_modules/lodash/fp/isTypedArray.js
deleted file mode 100644
index 8567953..0000000
--- a/assets/node_modules/lodash/fp/isTypedArray.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isTypedArray', require('../isTypedArray'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isUndefined.js b/assets/node_modules/lodash/fp/isUndefined.js
deleted file mode 100644
index ddbca31..0000000
--- a/assets/node_modules/lodash/fp/isUndefined.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isUndefined', require('../isUndefined'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isWeakMap.js b/assets/node_modules/lodash/fp/isWeakMap.js
deleted file mode 100644
index ef60c61..0000000
--- a/assets/node_modules/lodash/fp/isWeakMap.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isWeakMap', require('../isWeakMap'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/isWeakSet.js b/assets/node_modules/lodash/fp/isWeakSet.js
deleted file mode 100644
index c99bfaa..0000000
--- a/assets/node_modules/lodash/fp/isWeakSet.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('isWeakSet', require('../isWeakSet'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/iteratee.js b/assets/node_modules/lodash/fp/iteratee.js
deleted file mode 100644
index 9f0f717..0000000
--- a/assets/node_modules/lodash/fp/iteratee.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('iteratee', require('../iteratee'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/join.js b/assets/node_modules/lodash/fp/join.js
deleted file mode 100644
index a220e00..0000000
--- a/assets/node_modules/lodash/fp/join.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('join', require('../join'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/juxt.js b/assets/node_modules/lodash/fp/juxt.js
deleted file mode 100644
index f71e04e..0000000
--- a/assets/node_modules/lodash/fp/juxt.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./over');
diff --git a/assets/node_modules/lodash/fp/kebabCase.js b/assets/node_modules/lodash/fp/kebabCase.js
deleted file mode 100644
index 60737f1..0000000
--- a/assets/node_modules/lodash/fp/kebabCase.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('kebabCase', require('../kebabCase'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/keyBy.js b/assets/node_modules/lodash/fp/keyBy.js
deleted file mode 100644
index 9a6a85d..0000000
--- a/assets/node_modules/lodash/fp/keyBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('keyBy', require('../keyBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/keys.js b/assets/node_modules/lodash/fp/keys.js
deleted file mode 100644
index e12bb07..0000000
--- a/assets/node_modules/lodash/fp/keys.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('keys', require('../keys'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/keysIn.js b/assets/node_modules/lodash/fp/keysIn.js
deleted file mode 100644
index f3eb36a..0000000
--- a/assets/node_modules/lodash/fp/keysIn.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('keysIn', require('../keysIn'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/lang.js b/assets/node_modules/lodash/fp/lang.js
deleted file mode 100644
index 08cc9c1..0000000
--- a/assets/node_modules/lodash/fp/lang.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../lang'));
diff --git a/assets/node_modules/lodash/fp/last.js b/assets/node_modules/lodash/fp/last.js
deleted file mode 100644
index 0f71699..0000000
--- a/assets/node_modules/lodash/fp/last.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('last', require('../last'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/lastIndexOf.js b/assets/node_modules/lodash/fp/lastIndexOf.js
deleted file mode 100644
index ddf39c3..0000000
--- a/assets/node_modules/lodash/fp/lastIndexOf.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('lastIndexOf', require('../lastIndexOf'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/lastIndexOfFrom.js b/assets/node_modules/lodash/fp/lastIndexOfFrom.js
deleted file mode 100644
index 1ff6a0b..0000000
--- a/assets/node_modules/lodash/fp/lastIndexOfFrom.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('lastIndexOfFrom', require('../lastIndexOf'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/lowerCase.js b/assets/node_modules/lodash/fp/lowerCase.js
deleted file mode 100644
index ea64bc1..0000000
--- a/assets/node_modules/lodash/fp/lowerCase.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('lowerCase', require('../lowerCase'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/lowerFirst.js b/assets/node_modules/lodash/fp/lowerFirst.js
deleted file mode 100644
index 539720a..0000000
--- a/assets/node_modules/lodash/fp/lowerFirst.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('lowerFirst', require('../lowerFirst'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/lt.js b/assets/node_modules/lodash/fp/lt.js
deleted file mode 100644
index a31d21e..0000000
--- a/assets/node_modules/lodash/fp/lt.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('lt', require('../lt'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/lte.js b/assets/node_modules/lodash/fp/lte.js
deleted file mode 100644
index d795d10..0000000
--- a/assets/node_modules/lodash/fp/lte.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('lte', require('../lte'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/map.js b/assets/node_modules/lodash/fp/map.js
deleted file mode 100644
index cf98794..0000000
--- a/assets/node_modules/lodash/fp/map.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('map', require('../map'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/mapKeys.js b/assets/node_modules/lodash/fp/mapKeys.js
deleted file mode 100644
index 1684587..0000000
--- a/assets/node_modules/lodash/fp/mapKeys.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('mapKeys', require('../mapKeys'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/mapValues.js b/assets/node_modules/lodash/fp/mapValues.js
deleted file mode 100644
index 4004972..0000000
--- a/assets/node_modules/lodash/fp/mapValues.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('mapValues', require('../mapValues'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/matches.js b/assets/node_modules/lodash/fp/matches.js
deleted file mode 100644
index 29d1e1e..0000000
--- a/assets/node_modules/lodash/fp/matches.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./isMatch');
diff --git a/assets/node_modules/lodash/fp/matchesProperty.js b/assets/node_modules/lodash/fp/matchesProperty.js
deleted file mode 100644
index 4575bd2..0000000
--- a/assets/node_modules/lodash/fp/matchesProperty.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('matchesProperty', require('../matchesProperty'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/math.js b/assets/node_modules/lodash/fp/math.js
deleted file mode 100644
index e8f50f7..0000000
--- a/assets/node_modules/lodash/fp/math.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../math'));
diff --git a/assets/node_modules/lodash/fp/max.js b/assets/node_modules/lodash/fp/max.js
deleted file mode 100644
index a66acac..0000000
--- a/assets/node_modules/lodash/fp/max.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('max', require('../max'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/maxBy.js b/assets/node_modules/lodash/fp/maxBy.js
deleted file mode 100644
index d083fd6..0000000
--- a/assets/node_modules/lodash/fp/maxBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('maxBy', require('../maxBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/mean.js b/assets/node_modules/lodash/fp/mean.js
deleted file mode 100644
index 3117246..0000000
--- a/assets/node_modules/lodash/fp/mean.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('mean', require('../mean'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/meanBy.js b/assets/node_modules/lodash/fp/meanBy.js
deleted file mode 100644
index 556f25e..0000000
--- a/assets/node_modules/lodash/fp/meanBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('meanBy', require('../meanBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/memoize.js b/assets/node_modules/lodash/fp/memoize.js
deleted file mode 100644
index 638eec6..0000000
--- a/assets/node_modules/lodash/fp/memoize.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('memoize', require('../memoize'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/merge.js b/assets/node_modules/lodash/fp/merge.js
deleted file mode 100644
index ac66add..0000000
--- a/assets/node_modules/lodash/fp/merge.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('merge', require('../merge'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/mergeAll.js b/assets/node_modules/lodash/fp/mergeAll.js
deleted file mode 100644
index a3674d6..0000000
--- a/assets/node_modules/lodash/fp/mergeAll.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('mergeAll', require('../merge'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/mergeAllWith.js b/assets/node_modules/lodash/fp/mergeAllWith.js
deleted file mode 100644
index 4bd4206..0000000
--- a/assets/node_modules/lodash/fp/mergeAllWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('mergeAllWith', require('../mergeWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/mergeWith.js b/assets/node_modules/lodash/fp/mergeWith.js
deleted file mode 100644
index 00d44d5..0000000
--- a/assets/node_modules/lodash/fp/mergeWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('mergeWith', require('../mergeWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/method.js b/assets/node_modules/lodash/fp/method.js
deleted file mode 100644
index f4060c6..0000000
--- a/assets/node_modules/lodash/fp/method.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('method', require('../method'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/methodOf.js b/assets/node_modules/lodash/fp/methodOf.js
deleted file mode 100644
index 6139905..0000000
--- a/assets/node_modules/lodash/fp/methodOf.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('methodOf', require('../methodOf'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/min.js b/assets/node_modules/lodash/fp/min.js
deleted file mode 100644
index d12c6b4..0000000
--- a/assets/node_modules/lodash/fp/min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('min', require('../min'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/minBy.js b/assets/node_modules/lodash/fp/minBy.js
deleted file mode 100644
index fdb9e24..0000000
--- a/assets/node_modules/lodash/fp/minBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('minBy', require('../minBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/mixin.js b/assets/node_modules/lodash/fp/mixin.js
deleted file mode 100644
index 332e6fb..0000000
--- a/assets/node_modules/lodash/fp/mixin.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('mixin', require('../mixin'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/multiply.js b/assets/node_modules/lodash/fp/multiply.js
deleted file mode 100644
index 4dcf0b0..0000000
--- a/assets/node_modules/lodash/fp/multiply.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('multiply', require('../multiply'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/nAry.js b/assets/node_modules/lodash/fp/nAry.js
deleted file mode 100644
index f262a76..0000000
--- a/assets/node_modules/lodash/fp/nAry.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./ary');
diff --git a/assets/node_modules/lodash/fp/negate.js b/assets/node_modules/lodash/fp/negate.js
deleted file mode 100644
index 8b6dc7c..0000000
--- a/assets/node_modules/lodash/fp/negate.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('negate', require('../negate'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/next.js b/assets/node_modules/lodash/fp/next.js
deleted file mode 100644
index 140155e..0000000
--- a/assets/node_modules/lodash/fp/next.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('next', require('../next'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/noop.js b/assets/node_modules/lodash/fp/noop.js
deleted file mode 100644
index b9e32cc..0000000
--- a/assets/node_modules/lodash/fp/noop.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('noop', require('../noop'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/now.js b/assets/node_modules/lodash/fp/now.js
deleted file mode 100644
index 6de2068..0000000
--- a/assets/node_modules/lodash/fp/now.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('now', require('../now'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/nth.js b/assets/node_modules/lodash/fp/nth.js
deleted file mode 100644
index da4fda7..0000000
--- a/assets/node_modules/lodash/fp/nth.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('nth', require('../nth'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/nthArg.js b/assets/node_modules/lodash/fp/nthArg.js
deleted file mode 100644
index fce3165..0000000
--- a/assets/node_modules/lodash/fp/nthArg.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('nthArg', require('../nthArg'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/number.js b/assets/node_modules/lodash/fp/number.js
deleted file mode 100644
index 5c10b88..0000000
--- a/assets/node_modules/lodash/fp/number.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../number'));
diff --git a/assets/node_modules/lodash/fp/object.js b/assets/node_modules/lodash/fp/object.js
deleted file mode 100644
index ae39a13..0000000
--- a/assets/node_modules/lodash/fp/object.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../object'));
diff --git a/assets/node_modules/lodash/fp/omit.js b/assets/node_modules/lodash/fp/omit.js
deleted file mode 100644
index fd68529..0000000
--- a/assets/node_modules/lodash/fp/omit.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('omit', require('../omit'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/omitAll.js b/assets/node_modules/lodash/fp/omitAll.js
deleted file mode 100644
index 144cf4b..0000000
--- a/assets/node_modules/lodash/fp/omitAll.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./omit');
diff --git a/assets/node_modules/lodash/fp/omitBy.js b/assets/node_modules/lodash/fp/omitBy.js
deleted file mode 100644
index 90df738..0000000
--- a/assets/node_modules/lodash/fp/omitBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('omitBy', require('../omitBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/once.js b/assets/node_modules/lodash/fp/once.js
deleted file mode 100644
index f8f0a5c..0000000
--- a/assets/node_modules/lodash/fp/once.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('once', require('../once'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/orderBy.js b/assets/node_modules/lodash/fp/orderBy.js
deleted file mode 100644
index 848e210..0000000
--- a/assets/node_modules/lodash/fp/orderBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('orderBy', require('../orderBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/over.js b/assets/node_modules/lodash/fp/over.js
deleted file mode 100644
index 01eba7b..0000000
--- a/assets/node_modules/lodash/fp/over.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('over', require('../over'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/overArgs.js b/assets/node_modules/lodash/fp/overArgs.js
deleted file mode 100644
index 738556f..0000000
--- a/assets/node_modules/lodash/fp/overArgs.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('overArgs', require('../overArgs'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/overEvery.js b/assets/node_modules/lodash/fp/overEvery.js
deleted file mode 100644
index 9f5a032..0000000
--- a/assets/node_modules/lodash/fp/overEvery.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('overEvery', require('../overEvery'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/overSome.js b/assets/node_modules/lodash/fp/overSome.js
deleted file mode 100644
index 15939d5..0000000
--- a/assets/node_modules/lodash/fp/overSome.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('overSome', require('../overSome'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/pad.js b/assets/node_modules/lodash/fp/pad.js
deleted file mode 100644
index f1dea4a..0000000
--- a/assets/node_modules/lodash/fp/pad.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('pad', require('../pad'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/padChars.js b/assets/node_modules/lodash/fp/padChars.js
deleted file mode 100644
index d6e0804..0000000
--- a/assets/node_modules/lodash/fp/padChars.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('padChars', require('../pad'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/padCharsEnd.js b/assets/node_modules/lodash/fp/padCharsEnd.js
deleted file mode 100644
index d4ab79a..0000000
--- a/assets/node_modules/lodash/fp/padCharsEnd.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('padCharsEnd', require('../padEnd'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/padCharsStart.js b/assets/node_modules/lodash/fp/padCharsStart.js
deleted file mode 100644
index a08a300..0000000
--- a/assets/node_modules/lodash/fp/padCharsStart.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('padCharsStart', require('../padStart'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/padEnd.js b/assets/node_modules/lodash/fp/padEnd.js
deleted file mode 100644
index a8522ec..0000000
--- a/assets/node_modules/lodash/fp/padEnd.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('padEnd', require('../padEnd'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/padStart.js b/assets/node_modules/lodash/fp/padStart.js
deleted file mode 100644
index f4ca79d..0000000
--- a/assets/node_modules/lodash/fp/padStart.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('padStart', require('../padStart'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/parseInt.js b/assets/node_modules/lodash/fp/parseInt.js
deleted file mode 100644
index 27314cc..0000000
--- a/assets/node_modules/lodash/fp/parseInt.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('parseInt', require('../parseInt'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/partial.js b/assets/node_modules/lodash/fp/partial.js
deleted file mode 100644
index 5d46015..0000000
--- a/assets/node_modules/lodash/fp/partial.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('partial', require('../partial'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/partialRight.js b/assets/node_modules/lodash/fp/partialRight.js
deleted file mode 100644
index 7f05fed..0000000
--- a/assets/node_modules/lodash/fp/partialRight.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('partialRight', require('../partialRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/partition.js b/assets/node_modules/lodash/fp/partition.js
deleted file mode 100644
index 2ebcacc..0000000
--- a/assets/node_modules/lodash/fp/partition.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('partition', require('../partition'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/path.js b/assets/node_modules/lodash/fp/path.js
deleted file mode 100644
index b29cfb2..0000000
--- a/assets/node_modules/lodash/fp/path.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./get');
diff --git a/assets/node_modules/lodash/fp/pathEq.js b/assets/node_modules/lodash/fp/pathEq.js
deleted file mode 100644
index 36c027a..0000000
--- a/assets/node_modules/lodash/fp/pathEq.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./matchesProperty');
diff --git a/assets/node_modules/lodash/fp/pathOr.js b/assets/node_modules/lodash/fp/pathOr.js
deleted file mode 100644
index 4ab5820..0000000
--- a/assets/node_modules/lodash/fp/pathOr.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./getOr');
diff --git a/assets/node_modules/lodash/fp/paths.js b/assets/node_modules/lodash/fp/paths.js
deleted file mode 100644
index 1eb7950..0000000
--- a/assets/node_modules/lodash/fp/paths.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./at');
diff --git a/assets/node_modules/lodash/fp/pick.js b/assets/node_modules/lodash/fp/pick.js
deleted file mode 100644
index 197393d..0000000
--- a/assets/node_modules/lodash/fp/pick.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('pick', require('../pick'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/pickAll.js b/assets/node_modules/lodash/fp/pickAll.js
deleted file mode 100644
index a8ecd46..0000000
--- a/assets/node_modules/lodash/fp/pickAll.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./pick');
diff --git a/assets/node_modules/lodash/fp/pickBy.js b/assets/node_modules/lodash/fp/pickBy.js
deleted file mode 100644
index d832d16..0000000
--- a/assets/node_modules/lodash/fp/pickBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('pickBy', require('../pickBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/pipe.js b/assets/node_modules/lodash/fp/pipe.js
deleted file mode 100644
index b2e1e2c..0000000
--- a/assets/node_modules/lodash/fp/pipe.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./flow');
diff --git a/assets/node_modules/lodash/fp/placeholder.js b/assets/node_modules/lodash/fp/placeholder.js
deleted file mode 100644
index 1ce1739..0000000
--- a/assets/node_modules/lodash/fp/placeholder.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * The default argument placeholder value for methods.
- *
- * @type {Object}
- */
-module.exports = {};
diff --git a/assets/node_modules/lodash/fp/plant.js b/assets/node_modules/lodash/fp/plant.js
deleted file mode 100644
index eca8f32..0000000
--- a/assets/node_modules/lodash/fp/plant.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('plant', require('../plant'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/pluck.js b/assets/node_modules/lodash/fp/pluck.js
deleted file mode 100644
index 0d1e1ab..0000000
--- a/assets/node_modules/lodash/fp/pluck.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./map');
diff --git a/assets/node_modules/lodash/fp/prop.js b/assets/node_modules/lodash/fp/prop.js
deleted file mode 100644
index b29cfb2..0000000
--- a/assets/node_modules/lodash/fp/prop.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./get');
diff --git a/assets/node_modules/lodash/fp/propEq.js b/assets/node_modules/lodash/fp/propEq.js
deleted file mode 100644
index 36c027a..0000000
--- a/assets/node_modules/lodash/fp/propEq.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./matchesProperty');
diff --git a/assets/node_modules/lodash/fp/propOr.js b/assets/node_modules/lodash/fp/propOr.js
deleted file mode 100644
index 4ab5820..0000000
--- a/assets/node_modules/lodash/fp/propOr.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./getOr');
diff --git a/assets/node_modules/lodash/fp/property.js b/assets/node_modules/lodash/fp/property.js
deleted file mode 100644
index b29cfb2..0000000
--- a/assets/node_modules/lodash/fp/property.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./get');
diff --git a/assets/node_modules/lodash/fp/propertyOf.js b/assets/node_modules/lodash/fp/propertyOf.js
deleted file mode 100644
index f6273ee..0000000
--- a/assets/node_modules/lodash/fp/propertyOf.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('propertyOf', require('../get'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/props.js b/assets/node_modules/lodash/fp/props.js
deleted file mode 100644
index 1eb7950..0000000
--- a/assets/node_modules/lodash/fp/props.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./at');
diff --git a/assets/node_modules/lodash/fp/pull.js b/assets/node_modules/lodash/fp/pull.js
deleted file mode 100644
index 8d7084f..0000000
--- a/assets/node_modules/lodash/fp/pull.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('pull', require('../pull'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/pullAll.js b/assets/node_modules/lodash/fp/pullAll.js
deleted file mode 100644
index 98d5c9a..0000000
--- a/assets/node_modules/lodash/fp/pullAll.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('pullAll', require('../pullAll'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/pullAllBy.js b/assets/node_modules/lodash/fp/pullAllBy.js
deleted file mode 100644
index 876bc3b..0000000
--- a/assets/node_modules/lodash/fp/pullAllBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('pullAllBy', require('../pullAllBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/pullAllWith.js b/assets/node_modules/lodash/fp/pullAllWith.js
deleted file mode 100644
index f71ba4d..0000000
--- a/assets/node_modules/lodash/fp/pullAllWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('pullAllWith', require('../pullAllWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/pullAt.js b/assets/node_modules/lodash/fp/pullAt.js
deleted file mode 100644
index e8b3bb6..0000000
--- a/assets/node_modules/lodash/fp/pullAt.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('pullAt', require('../pullAt'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/random.js b/assets/node_modules/lodash/fp/random.js
deleted file mode 100644
index 99d852e..0000000
--- a/assets/node_modules/lodash/fp/random.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('random', require('../random'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/range.js b/assets/node_modules/lodash/fp/range.js
deleted file mode 100644
index a6bb591..0000000
--- a/assets/node_modules/lodash/fp/range.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('range', require('../range'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/rangeRight.js b/assets/node_modules/lodash/fp/rangeRight.js
deleted file mode 100644
index fdb712f..0000000
--- a/assets/node_modules/lodash/fp/rangeRight.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('rangeRight', require('../rangeRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/rangeStep.js b/assets/node_modules/lodash/fp/rangeStep.js
deleted file mode 100644
index d72dfc2..0000000
--- a/assets/node_modules/lodash/fp/rangeStep.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('rangeStep', require('../range'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/rangeStepRight.js b/assets/node_modules/lodash/fp/rangeStepRight.js
deleted file mode 100644
index 8b2a67b..0000000
--- a/assets/node_modules/lodash/fp/rangeStepRight.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('rangeStepRight', require('../rangeRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/rearg.js b/assets/node_modules/lodash/fp/rearg.js
deleted file mode 100644
index 678e02a..0000000
--- a/assets/node_modules/lodash/fp/rearg.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('rearg', require('../rearg'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/reduce.js b/assets/node_modules/lodash/fp/reduce.js
deleted file mode 100644
index 4cef0a0..0000000
--- a/assets/node_modules/lodash/fp/reduce.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('reduce', require('../reduce'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/reduceRight.js b/assets/node_modules/lodash/fp/reduceRight.js
deleted file mode 100644
index caf5bb5..0000000
--- a/assets/node_modules/lodash/fp/reduceRight.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('reduceRight', require('../reduceRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/reject.js b/assets/node_modules/lodash/fp/reject.js
deleted file mode 100644
index c163273..0000000
--- a/assets/node_modules/lodash/fp/reject.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('reject', require('../reject'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/remove.js b/assets/node_modules/lodash/fp/remove.js
deleted file mode 100644
index e9d1327..0000000
--- a/assets/node_modules/lodash/fp/remove.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('remove', require('../remove'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/repeat.js b/assets/node_modules/lodash/fp/repeat.js
deleted file mode 100644
index 08470f2..0000000
--- a/assets/node_modules/lodash/fp/repeat.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('repeat', require('../repeat'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/replace.js b/assets/node_modules/lodash/fp/replace.js
deleted file mode 100644
index 2227db6..0000000
--- a/assets/node_modules/lodash/fp/replace.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('replace', require('../replace'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/rest.js b/assets/node_modules/lodash/fp/rest.js
deleted file mode 100644
index c1f3d64..0000000
--- a/assets/node_modules/lodash/fp/rest.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('rest', require('../rest'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/restFrom.js b/assets/node_modules/lodash/fp/restFrom.js
deleted file mode 100644
index 714e42b..0000000
--- a/assets/node_modules/lodash/fp/restFrom.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('restFrom', require('../rest'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/result.js b/assets/node_modules/lodash/fp/result.js
deleted file mode 100644
index f86ce07..0000000
--- a/assets/node_modules/lodash/fp/result.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('result', require('../result'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/reverse.js b/assets/node_modules/lodash/fp/reverse.js
deleted file mode 100644
index 07c9f5e..0000000
--- a/assets/node_modules/lodash/fp/reverse.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('reverse', require('../reverse'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/round.js b/assets/node_modules/lodash/fp/round.js
deleted file mode 100644
index 4c0e5c8..0000000
--- a/assets/node_modules/lodash/fp/round.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('round', require('../round'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/sample.js b/assets/node_modules/lodash/fp/sample.js
deleted file mode 100644
index 6bea125..0000000
--- a/assets/node_modules/lodash/fp/sample.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('sample', require('../sample'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/sampleSize.js b/assets/node_modules/lodash/fp/sampleSize.js
deleted file mode 100644
index 359ed6f..0000000
--- a/assets/node_modules/lodash/fp/sampleSize.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('sampleSize', require('../sampleSize'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/seq.js b/assets/node_modules/lodash/fp/seq.js
deleted file mode 100644
index d8f42b0..0000000
--- a/assets/node_modules/lodash/fp/seq.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../seq'));
diff --git a/assets/node_modules/lodash/fp/set.js b/assets/node_modules/lodash/fp/set.js
deleted file mode 100644
index 0b56a56..0000000
--- a/assets/node_modules/lodash/fp/set.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('set', require('../set'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/setWith.js b/assets/node_modules/lodash/fp/setWith.js
deleted file mode 100644
index 0b58495..0000000
--- a/assets/node_modules/lodash/fp/setWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('setWith', require('../setWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/shuffle.js b/assets/node_modules/lodash/fp/shuffle.js
deleted file mode 100644
index aa3a1ca..0000000
--- a/assets/node_modules/lodash/fp/shuffle.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('shuffle', require('../shuffle'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/size.js b/assets/node_modules/lodash/fp/size.js
deleted file mode 100644
index 7490136..0000000
--- a/assets/node_modules/lodash/fp/size.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('size', require('../size'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/slice.js b/assets/node_modules/lodash/fp/slice.js
deleted file mode 100644
index 15945d3..0000000
--- a/assets/node_modules/lodash/fp/slice.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('slice', require('../slice'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/snakeCase.js b/assets/node_modules/lodash/fp/snakeCase.js
deleted file mode 100644
index a0ff780..0000000
--- a/assets/node_modules/lodash/fp/snakeCase.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('snakeCase', require('../snakeCase'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/some.js b/assets/node_modules/lodash/fp/some.js
deleted file mode 100644
index a4fa2d0..0000000
--- a/assets/node_modules/lodash/fp/some.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('some', require('../some'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/sortBy.js b/assets/node_modules/lodash/fp/sortBy.js
deleted file mode 100644
index e0790ad..0000000
--- a/assets/node_modules/lodash/fp/sortBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('sortBy', require('../sortBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/sortedIndex.js b/assets/node_modules/lodash/fp/sortedIndex.js
deleted file mode 100644
index 364a054..0000000
--- a/assets/node_modules/lodash/fp/sortedIndex.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('sortedIndex', require('../sortedIndex'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/sortedIndexBy.js b/assets/node_modules/lodash/fp/sortedIndexBy.js
deleted file mode 100644
index 9593dbd..0000000
--- a/assets/node_modules/lodash/fp/sortedIndexBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('sortedIndexBy', require('../sortedIndexBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/sortedIndexOf.js b/assets/node_modules/lodash/fp/sortedIndexOf.js
deleted file mode 100644
index c9084ca..0000000
--- a/assets/node_modules/lodash/fp/sortedIndexOf.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('sortedIndexOf', require('../sortedIndexOf'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/sortedLastIndex.js b/assets/node_modules/lodash/fp/sortedLastIndex.js
deleted file mode 100644
index 47fe241..0000000
--- a/assets/node_modules/lodash/fp/sortedLastIndex.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('sortedLastIndex', require('../sortedLastIndex'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/sortedLastIndexBy.js b/assets/node_modules/lodash/fp/sortedLastIndexBy.js
deleted file mode 100644
index 0f9a347..0000000
--- a/assets/node_modules/lodash/fp/sortedLastIndexBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('sortedLastIndexBy', require('../sortedLastIndexBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/sortedLastIndexOf.js b/assets/node_modules/lodash/fp/sortedLastIndexOf.js
deleted file mode 100644
index 0d4d932..0000000
--- a/assets/node_modules/lodash/fp/sortedLastIndexOf.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('sortedLastIndexOf', require('../sortedLastIndexOf'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/sortedUniq.js b/assets/node_modules/lodash/fp/sortedUniq.js
deleted file mode 100644
index 882d283..0000000
--- a/assets/node_modules/lodash/fp/sortedUniq.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('sortedUniq', require('../sortedUniq'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/sortedUniqBy.js b/assets/node_modules/lodash/fp/sortedUniqBy.js
deleted file mode 100644
index 033db91..0000000
--- a/assets/node_modules/lodash/fp/sortedUniqBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('sortedUniqBy', require('../sortedUniqBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/split.js b/assets/node_modules/lodash/fp/split.js
deleted file mode 100644
index 14de1a7..0000000
--- a/assets/node_modules/lodash/fp/split.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('split', require('../split'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/spread.js b/assets/node_modules/lodash/fp/spread.js
deleted file mode 100644
index 2d11b70..0000000
--- a/assets/node_modules/lodash/fp/spread.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('spread', require('../spread'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/spreadFrom.js b/assets/node_modules/lodash/fp/spreadFrom.js
deleted file mode 100644
index 0b630df..0000000
--- a/assets/node_modules/lodash/fp/spreadFrom.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('spreadFrom', require('../spread'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/startCase.js b/assets/node_modules/lodash/fp/startCase.js
deleted file mode 100644
index ada98c9..0000000
--- a/assets/node_modules/lodash/fp/startCase.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('startCase', require('../startCase'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/startsWith.js b/assets/node_modules/lodash/fp/startsWith.js
deleted file mode 100644
index 985e2f2..0000000
--- a/assets/node_modules/lodash/fp/startsWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('startsWith', require('../startsWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/string.js b/assets/node_modules/lodash/fp/string.js
deleted file mode 100644
index 773b037..0000000
--- a/assets/node_modules/lodash/fp/string.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../string'));
diff --git a/assets/node_modules/lodash/fp/stubArray.js b/assets/node_modules/lodash/fp/stubArray.js
deleted file mode 100644
index cd604cb..0000000
--- a/assets/node_modules/lodash/fp/stubArray.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('stubArray', require('../stubArray'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/stubFalse.js b/assets/node_modules/lodash/fp/stubFalse.js
deleted file mode 100644
index 3296664..0000000
--- a/assets/node_modules/lodash/fp/stubFalse.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('stubFalse', require('../stubFalse'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/stubObject.js b/assets/node_modules/lodash/fp/stubObject.js
deleted file mode 100644
index c6c8ec4..0000000
--- a/assets/node_modules/lodash/fp/stubObject.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('stubObject', require('../stubObject'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/stubString.js b/assets/node_modules/lodash/fp/stubString.js
deleted file mode 100644
index 701051e..0000000
--- a/assets/node_modules/lodash/fp/stubString.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('stubString', require('../stubString'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/stubTrue.js b/assets/node_modules/lodash/fp/stubTrue.js
deleted file mode 100644
index 9249082..0000000
--- a/assets/node_modules/lodash/fp/stubTrue.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('stubTrue', require('../stubTrue'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/subtract.js b/assets/node_modules/lodash/fp/subtract.js
deleted file mode 100644
index d32b16d..0000000
--- a/assets/node_modules/lodash/fp/subtract.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('subtract', require('../subtract'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/sum.js b/assets/node_modules/lodash/fp/sum.js
deleted file mode 100644
index 5cce12b..0000000
--- a/assets/node_modules/lodash/fp/sum.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('sum', require('../sum'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/sumBy.js b/assets/node_modules/lodash/fp/sumBy.js
deleted file mode 100644
index c882656..0000000
--- a/assets/node_modules/lodash/fp/sumBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('sumBy', require('../sumBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/symmetricDifference.js b/assets/node_modules/lodash/fp/symmetricDifference.js
deleted file mode 100644
index 78c16ad..0000000
--- a/assets/node_modules/lodash/fp/symmetricDifference.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./xor');
diff --git a/assets/node_modules/lodash/fp/symmetricDifferenceBy.js b/assets/node_modules/lodash/fp/symmetricDifferenceBy.js
deleted file mode 100644
index 298fc7f..0000000
--- a/assets/node_modules/lodash/fp/symmetricDifferenceBy.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./xorBy');
diff --git a/assets/node_modules/lodash/fp/symmetricDifferenceWith.js b/assets/node_modules/lodash/fp/symmetricDifferenceWith.js
deleted file mode 100644
index 70bc6fa..0000000
--- a/assets/node_modules/lodash/fp/symmetricDifferenceWith.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./xorWith');
diff --git a/assets/node_modules/lodash/fp/tail.js b/assets/node_modules/lodash/fp/tail.js
deleted file mode 100644
index f122f0a..0000000
--- a/assets/node_modules/lodash/fp/tail.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('tail', require('../tail'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/take.js b/assets/node_modules/lodash/fp/take.js
deleted file mode 100644
index 9af98a7..0000000
--- a/assets/node_modules/lodash/fp/take.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('take', require('../take'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/takeLast.js b/assets/node_modules/lodash/fp/takeLast.js
deleted file mode 100644
index e98c84a..0000000
--- a/assets/node_modules/lodash/fp/takeLast.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./takeRight');
diff --git a/assets/node_modules/lodash/fp/takeLastWhile.js b/assets/node_modules/lodash/fp/takeLastWhile.js
deleted file mode 100644
index 5367968..0000000
--- a/assets/node_modules/lodash/fp/takeLastWhile.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./takeRightWhile');
diff --git a/assets/node_modules/lodash/fp/takeRight.js b/assets/node_modules/lodash/fp/takeRight.js
deleted file mode 100644
index b82950a..0000000
--- a/assets/node_modules/lodash/fp/takeRight.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('takeRight', require('../takeRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/takeRightWhile.js b/assets/node_modules/lodash/fp/takeRightWhile.js
deleted file mode 100644
index 8ffb0a2..0000000
--- a/assets/node_modules/lodash/fp/takeRightWhile.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('takeRightWhile', require('../takeRightWhile'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/takeWhile.js b/assets/node_modules/lodash/fp/takeWhile.js
deleted file mode 100644
index 2813664..0000000
--- a/assets/node_modules/lodash/fp/takeWhile.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('takeWhile', require('../takeWhile'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/tap.js b/assets/node_modules/lodash/fp/tap.js
deleted file mode 100644
index d33ad6e..0000000
--- a/assets/node_modules/lodash/fp/tap.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('tap', require('../tap'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/template.js b/assets/node_modules/lodash/fp/template.js
deleted file mode 100644
index 74857e1..0000000
--- a/assets/node_modules/lodash/fp/template.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('template', require('../template'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/templateSettings.js b/assets/node_modules/lodash/fp/templateSettings.js
deleted file mode 100644
index 7bcc0a8..0000000
--- a/assets/node_modules/lodash/fp/templateSettings.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('templateSettings', require('../templateSettings'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/throttle.js b/assets/node_modules/lodash/fp/throttle.js
deleted file mode 100644
index 77fff14..0000000
--- a/assets/node_modules/lodash/fp/throttle.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('throttle', require('../throttle'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/thru.js b/assets/node_modules/lodash/fp/thru.js
deleted file mode 100644
index d42b3b1..0000000
--- a/assets/node_modules/lodash/fp/thru.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('thru', require('../thru'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/times.js b/assets/node_modules/lodash/fp/times.js
deleted file mode 100644
index 0dab06d..0000000
--- a/assets/node_modules/lodash/fp/times.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('times', require('../times'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/toArray.js b/assets/node_modules/lodash/fp/toArray.js
deleted file mode 100644
index f0c360a..0000000
--- a/assets/node_modules/lodash/fp/toArray.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('toArray', require('../toArray'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/toFinite.js b/assets/node_modules/lodash/fp/toFinite.js
deleted file mode 100644
index 3a47687..0000000
--- a/assets/node_modules/lodash/fp/toFinite.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('toFinite', require('../toFinite'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/toInteger.js b/assets/node_modules/lodash/fp/toInteger.js
deleted file mode 100644
index e0af6a7..0000000
--- a/assets/node_modules/lodash/fp/toInteger.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('toInteger', require('../toInteger'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/toIterator.js b/assets/node_modules/lodash/fp/toIterator.js
deleted file mode 100644
index 65e6baa..0000000
--- a/assets/node_modules/lodash/fp/toIterator.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('toIterator', require('../toIterator'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/toJSON.js b/assets/node_modules/lodash/fp/toJSON.js
deleted file mode 100644
index 2d718d0..0000000
--- a/assets/node_modules/lodash/fp/toJSON.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('toJSON', require('../toJSON'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/toLength.js b/assets/node_modules/lodash/fp/toLength.js
deleted file mode 100644
index b97cdd9..0000000
--- a/assets/node_modules/lodash/fp/toLength.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('toLength', require('../toLength'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/toLower.js b/assets/node_modules/lodash/fp/toLower.js
deleted file mode 100644
index 616ef36..0000000
--- a/assets/node_modules/lodash/fp/toLower.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('toLower', require('../toLower'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/toNumber.js b/assets/node_modules/lodash/fp/toNumber.js
deleted file mode 100644
index d0c6f4d..0000000
--- a/assets/node_modules/lodash/fp/toNumber.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('toNumber', require('../toNumber'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/toPairs.js b/assets/node_modules/lodash/fp/toPairs.js
deleted file mode 100644
index af78378..0000000
--- a/assets/node_modules/lodash/fp/toPairs.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('toPairs', require('../toPairs'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/toPairsIn.js b/assets/node_modules/lodash/fp/toPairsIn.js
deleted file mode 100644
index 66504ab..0000000
--- a/assets/node_modules/lodash/fp/toPairsIn.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('toPairsIn', require('../toPairsIn'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/toPath.js b/assets/node_modules/lodash/fp/toPath.js
deleted file mode 100644
index b4d5e50..0000000
--- a/assets/node_modules/lodash/fp/toPath.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('toPath', require('../toPath'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/toPlainObject.js b/assets/node_modules/lodash/fp/toPlainObject.js
deleted file mode 100644
index 278bb86..0000000
--- a/assets/node_modules/lodash/fp/toPlainObject.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('toPlainObject', require('../toPlainObject'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/toSafeInteger.js b/assets/node_modules/lodash/fp/toSafeInteger.js
deleted file mode 100644
index 367a26f..0000000
--- a/assets/node_modules/lodash/fp/toSafeInteger.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('toSafeInteger', require('../toSafeInteger'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/toString.js b/assets/node_modules/lodash/fp/toString.js
deleted file mode 100644
index cec4f8e..0000000
--- a/assets/node_modules/lodash/fp/toString.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('toString', require('../toString'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/toUpper.js b/assets/node_modules/lodash/fp/toUpper.js
deleted file mode 100644
index 54f9a56..0000000
--- a/assets/node_modules/lodash/fp/toUpper.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('toUpper', require('../toUpper'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/transform.js b/assets/node_modules/lodash/fp/transform.js
deleted file mode 100644
index 759d088..0000000
--- a/assets/node_modules/lodash/fp/transform.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('transform', require('../transform'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/trim.js b/assets/node_modules/lodash/fp/trim.js
deleted file mode 100644
index e6319a7..0000000
--- a/assets/node_modules/lodash/fp/trim.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('trim', require('../trim'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/trimChars.js b/assets/node_modules/lodash/fp/trimChars.js
deleted file mode 100644
index c9294de..0000000
--- a/assets/node_modules/lodash/fp/trimChars.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('trimChars', require('../trim'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/trimCharsEnd.js b/assets/node_modules/lodash/fp/trimCharsEnd.js
deleted file mode 100644
index 284bc2f..0000000
--- a/assets/node_modules/lodash/fp/trimCharsEnd.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('trimCharsEnd', require('../trimEnd'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/trimCharsStart.js b/assets/node_modules/lodash/fp/trimCharsStart.js
deleted file mode 100644
index ff0ee65..0000000
--- a/assets/node_modules/lodash/fp/trimCharsStart.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('trimCharsStart', require('../trimStart'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/trimEnd.js b/assets/node_modules/lodash/fp/trimEnd.js
deleted file mode 100644
index 7190880..0000000
--- a/assets/node_modules/lodash/fp/trimEnd.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('trimEnd', require('../trimEnd'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/trimStart.js b/assets/node_modules/lodash/fp/trimStart.js
deleted file mode 100644
index fda902c..0000000
--- a/assets/node_modules/lodash/fp/trimStart.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('trimStart', require('../trimStart'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/truncate.js b/assets/node_modules/lodash/fp/truncate.js
deleted file mode 100644
index d265c1d..0000000
--- a/assets/node_modules/lodash/fp/truncate.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('truncate', require('../truncate'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/unapply.js b/assets/node_modules/lodash/fp/unapply.js
deleted file mode 100644
index c5dfe77..0000000
--- a/assets/node_modules/lodash/fp/unapply.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./rest');
diff --git a/assets/node_modules/lodash/fp/unary.js b/assets/node_modules/lodash/fp/unary.js
deleted file mode 100644
index 286c945..0000000
--- a/assets/node_modules/lodash/fp/unary.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('unary', require('../unary'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/unescape.js b/assets/node_modules/lodash/fp/unescape.js
deleted file mode 100644
index fddcb46..0000000
--- a/assets/node_modules/lodash/fp/unescape.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('unescape', require('../unescape'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/union.js b/assets/node_modules/lodash/fp/union.js
deleted file mode 100644
index ef8228d..0000000
--- a/assets/node_modules/lodash/fp/union.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('union', require('../union'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/unionBy.js b/assets/node_modules/lodash/fp/unionBy.js
deleted file mode 100644
index 603687a..0000000
--- a/assets/node_modules/lodash/fp/unionBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('unionBy', require('../unionBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/unionWith.js b/assets/node_modules/lodash/fp/unionWith.js
deleted file mode 100644
index 65bb3a7..0000000
--- a/assets/node_modules/lodash/fp/unionWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('unionWith', require('../unionWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/uniq.js b/assets/node_modules/lodash/fp/uniq.js
deleted file mode 100644
index bc18524..0000000
--- a/assets/node_modules/lodash/fp/uniq.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('uniq', require('../uniq'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/uniqBy.js b/assets/node_modules/lodash/fp/uniqBy.js
deleted file mode 100644
index 634c6a8..0000000
--- a/assets/node_modules/lodash/fp/uniqBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('uniqBy', require('../uniqBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/uniqWith.js b/assets/node_modules/lodash/fp/uniqWith.js
deleted file mode 100644
index 0ec601a..0000000
--- a/assets/node_modules/lodash/fp/uniqWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('uniqWith', require('../uniqWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/uniqueId.js b/assets/node_modules/lodash/fp/uniqueId.js
deleted file mode 100644
index aa8fc2f..0000000
--- a/assets/node_modules/lodash/fp/uniqueId.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('uniqueId', require('../uniqueId'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/unnest.js b/assets/node_modules/lodash/fp/unnest.js
deleted file mode 100644
index 5d34060..0000000
--- a/assets/node_modules/lodash/fp/unnest.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./flatten');
diff --git a/assets/node_modules/lodash/fp/unset.js b/assets/node_modules/lodash/fp/unset.js
deleted file mode 100644
index ea203a0..0000000
--- a/assets/node_modules/lodash/fp/unset.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('unset', require('../unset'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/unzip.js b/assets/node_modules/lodash/fp/unzip.js
deleted file mode 100644
index cc364b3..0000000
--- a/assets/node_modules/lodash/fp/unzip.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('unzip', require('../unzip'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/unzipWith.js b/assets/node_modules/lodash/fp/unzipWith.js
deleted file mode 100644
index 182eaa1..0000000
--- a/assets/node_modules/lodash/fp/unzipWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('unzipWith', require('../unzipWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/update.js b/assets/node_modules/lodash/fp/update.js
deleted file mode 100644
index b8ce2cc..0000000
--- a/assets/node_modules/lodash/fp/update.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('update', require('../update'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/updateWith.js b/assets/node_modules/lodash/fp/updateWith.js
deleted file mode 100644
index d5e8282..0000000
--- a/assets/node_modules/lodash/fp/updateWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('updateWith', require('../updateWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/upperCase.js b/assets/node_modules/lodash/fp/upperCase.js
deleted file mode 100644
index c886f20..0000000
--- a/assets/node_modules/lodash/fp/upperCase.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('upperCase', require('../upperCase'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/upperFirst.js b/assets/node_modules/lodash/fp/upperFirst.js
deleted file mode 100644
index d8c04df..0000000
--- a/assets/node_modules/lodash/fp/upperFirst.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('upperFirst', require('../upperFirst'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/useWith.js b/assets/node_modules/lodash/fp/useWith.js
deleted file mode 100644
index d8b3df5..0000000
--- a/assets/node_modules/lodash/fp/useWith.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./overArgs');
diff --git a/assets/node_modules/lodash/fp/util.js b/assets/node_modules/lodash/fp/util.js
deleted file mode 100644
index 18c00ba..0000000
--- a/assets/node_modules/lodash/fp/util.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../util'));
diff --git a/assets/node_modules/lodash/fp/value.js b/assets/node_modules/lodash/fp/value.js
deleted file mode 100644
index 555eec7..0000000
--- a/assets/node_modules/lodash/fp/value.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('value', require('../value'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/valueOf.js b/assets/node_modules/lodash/fp/valueOf.js
deleted file mode 100644
index f968807..0000000
--- a/assets/node_modules/lodash/fp/valueOf.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('valueOf', require('../valueOf'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/values.js b/assets/node_modules/lodash/fp/values.js
deleted file mode 100644
index 2dfc561..0000000
--- a/assets/node_modules/lodash/fp/values.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('values', require('../values'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/valuesIn.js b/assets/node_modules/lodash/fp/valuesIn.js
deleted file mode 100644
index a1b2bb8..0000000
--- a/assets/node_modules/lodash/fp/valuesIn.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('valuesIn', require('../valuesIn'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/where.js b/assets/node_modules/lodash/fp/where.js
deleted file mode 100644
index 3247f64..0000000
--- a/assets/node_modules/lodash/fp/where.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./conformsTo');
diff --git a/assets/node_modules/lodash/fp/whereEq.js b/assets/node_modules/lodash/fp/whereEq.js
deleted file mode 100644
index 29d1e1e..0000000
--- a/assets/node_modules/lodash/fp/whereEq.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./isMatch');
diff --git a/assets/node_modules/lodash/fp/without.js b/assets/node_modules/lodash/fp/without.js
deleted file mode 100644
index bad9e12..0000000
--- a/assets/node_modules/lodash/fp/without.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('without', require('../without'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/words.js b/assets/node_modules/lodash/fp/words.js
deleted file mode 100644
index 4a90141..0000000
--- a/assets/node_modules/lodash/fp/words.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('words', require('../words'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/wrap.js b/assets/node_modules/lodash/fp/wrap.js
deleted file mode 100644
index e93bd8a..0000000
--- a/assets/node_modules/lodash/fp/wrap.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('wrap', require('../wrap'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/wrapperAt.js b/assets/node_modules/lodash/fp/wrapperAt.js
deleted file mode 100644
index 8f0a310..0000000
--- a/assets/node_modules/lodash/fp/wrapperAt.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('wrapperAt', require('../wrapperAt'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/wrapperChain.js b/assets/node_modules/lodash/fp/wrapperChain.js
deleted file mode 100644
index 2a48ea2..0000000
--- a/assets/node_modules/lodash/fp/wrapperChain.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('wrapperChain', require('../wrapperChain'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/wrapperLodash.js b/assets/node_modules/lodash/fp/wrapperLodash.js
deleted file mode 100644
index a7162d0..0000000
--- a/assets/node_modules/lodash/fp/wrapperLodash.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('wrapperLodash', require('../wrapperLodash'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/wrapperReverse.js b/assets/node_modules/lodash/fp/wrapperReverse.js
deleted file mode 100644
index e1481aa..0000000
--- a/assets/node_modules/lodash/fp/wrapperReverse.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('wrapperReverse', require('../wrapperReverse'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/wrapperValue.js b/assets/node_modules/lodash/fp/wrapperValue.js
deleted file mode 100644
index 8eb9112..0000000
--- a/assets/node_modules/lodash/fp/wrapperValue.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('wrapperValue', require('../wrapperValue'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/xor.js b/assets/node_modules/lodash/fp/xor.js
deleted file mode 100644
index 29e2819..0000000
--- a/assets/node_modules/lodash/fp/xor.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('xor', require('../xor'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/xorBy.js b/assets/node_modules/lodash/fp/xorBy.js
deleted file mode 100644
index b355686..0000000
--- a/assets/node_modules/lodash/fp/xorBy.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('xorBy', require('../xorBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/xorWith.js b/assets/node_modules/lodash/fp/xorWith.js
deleted file mode 100644
index 8e05739..0000000
--- a/assets/node_modules/lodash/fp/xorWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('xorWith', require('../xorWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/zip.js b/assets/node_modules/lodash/fp/zip.js
deleted file mode 100644
index 69e147a..0000000
--- a/assets/node_modules/lodash/fp/zip.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('zip', require('../zip'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/zipAll.js b/assets/node_modules/lodash/fp/zipAll.js
deleted file mode 100644
index efa8ccb..0000000
--- a/assets/node_modules/lodash/fp/zipAll.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('zipAll', require('../zip'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/zipObj.js b/assets/node_modules/lodash/fp/zipObj.js
deleted file mode 100644
index f4a3453..0000000
--- a/assets/node_modules/lodash/fp/zipObj.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./zipObject');
diff --git a/assets/node_modules/lodash/fp/zipObject.js b/assets/node_modules/lodash/fp/zipObject.js
deleted file mode 100644
index 462dbb6..0000000
--- a/assets/node_modules/lodash/fp/zipObject.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('zipObject', require('../zipObject'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/zipObjectDeep.js b/assets/node_modules/lodash/fp/zipObjectDeep.js
deleted file mode 100644
index 53a5d33..0000000
--- a/assets/node_modules/lodash/fp/zipObjectDeep.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('zipObjectDeep', require('../zipObjectDeep'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fp/zipWith.js b/assets/node_modules/lodash/fp/zipWith.js
deleted file mode 100644
index c5cf9e2..0000000
--- a/assets/node_modules/lodash/fp/zipWith.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var convert = require('./convert'),
- func = convert('zipWith', require('../zipWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
diff --git a/assets/node_modules/lodash/fromPairs.js b/assets/node_modules/lodash/fromPairs.js
deleted file mode 100644
index ee7940d..0000000
--- a/assets/node_modules/lodash/fromPairs.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * The inverse of `_.toPairs`; this method returns an object composed
- * from key-value `pairs`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} pairs The key-value pairs.
- * @returns {Object} Returns the new object.
- * @example
- *
- * _.fromPairs([['a', 1], ['b', 2]]);
- * // => { 'a': 1, 'b': 2 }
- */
-function fromPairs(pairs) {
- var index = -1,
- length = pairs == null ? 0 : pairs.length,
- result = {};
-
- while (++index < length) {
- var pair = pairs[index];
- result[pair[0]] = pair[1];
- }
- return result;
-}
-
-module.exports = fromPairs;
diff --git a/assets/node_modules/lodash/function.js b/assets/node_modules/lodash/function.js
deleted file mode 100644
index b0fc6d9..0000000
--- a/assets/node_modules/lodash/function.js
+++ /dev/null
@@ -1,25 +0,0 @@
-module.exports = {
- 'after': require('./after'),
- 'ary': require('./ary'),
- 'before': require('./before'),
- 'bind': require('./bind'),
- 'bindKey': require('./bindKey'),
- 'curry': require('./curry'),
- 'curryRight': require('./curryRight'),
- 'debounce': require('./debounce'),
- 'defer': require('./defer'),
- 'delay': require('./delay'),
- 'flip': require('./flip'),
- 'memoize': require('./memoize'),
- 'negate': require('./negate'),
- 'once': require('./once'),
- 'overArgs': require('./overArgs'),
- 'partial': require('./partial'),
- 'partialRight': require('./partialRight'),
- 'rearg': require('./rearg'),
- 'rest': require('./rest'),
- 'spread': require('./spread'),
- 'throttle': require('./throttle'),
- 'unary': require('./unary'),
- 'wrap': require('./wrap')
-};
diff --git a/assets/node_modules/lodash/functions.js b/assets/node_modules/lodash/functions.js
deleted file mode 100644
index 9722928..0000000
--- a/assets/node_modules/lodash/functions.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var baseFunctions = require('./_baseFunctions'),
- keys = require('./keys');
-
-/**
- * Creates an array of function property names from own enumerable properties
- * of `object`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to inspect.
- * @returns {Array} Returns the function names.
- * @see _.functionsIn
- * @example
- *
- * function Foo() {
- * this.a = _.constant('a');
- * this.b = _.constant('b');
- * }
- *
- * Foo.prototype.c = _.constant('c');
- *
- * _.functions(new Foo);
- * // => ['a', 'b']
- */
-function functions(object) {
- return object == null ? [] : baseFunctions(object, keys(object));
-}
-
-module.exports = functions;
diff --git a/assets/node_modules/lodash/functionsIn.js b/assets/node_modules/lodash/functionsIn.js
deleted file mode 100644
index f00345d..0000000
--- a/assets/node_modules/lodash/functionsIn.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var baseFunctions = require('./_baseFunctions'),
- keysIn = require('./keysIn');
-
-/**
- * Creates an array of function property names from own and inherited
- * enumerable properties of `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to inspect.
- * @returns {Array} Returns the function names.
- * @see _.functions
- * @example
- *
- * function Foo() {
- * this.a = _.constant('a');
- * this.b = _.constant('b');
- * }
- *
- * Foo.prototype.c = _.constant('c');
- *
- * _.functionsIn(new Foo);
- * // => ['a', 'b', 'c']
- */
-function functionsIn(object) {
- return object == null ? [] : baseFunctions(object, keysIn(object));
-}
-
-module.exports = functionsIn;
diff --git a/assets/node_modules/lodash/get.js b/assets/node_modules/lodash/get.js
deleted file mode 100644
index 8805ff9..0000000
--- a/assets/node_modules/lodash/get.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var baseGet = require('./_baseGet');
-
-/**
- * Gets the value at `path` of `object`. If the resolved value is
- * `undefined`, the `defaultValue` is returned in its place.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @param {*} [defaultValue] The value returned for `undefined` resolved values.
- * @returns {*} Returns the resolved value.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.get(object, 'a[0].b.c');
- * // => 3
- *
- * _.get(object, ['a', '0', 'b', 'c']);
- * // => 3
- *
- * _.get(object, 'a.b.c', 'default');
- * // => 'default'
- */
-function get(object, path, defaultValue) {
- var result = object == null ? undefined : baseGet(object, path);
- return result === undefined ? defaultValue : result;
-}
-
-module.exports = get;
diff --git a/assets/node_modules/lodash/groupBy.js b/assets/node_modules/lodash/groupBy.js
deleted file mode 100644
index babf4f6..0000000
--- a/assets/node_modules/lodash/groupBy.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var baseAssignValue = require('./_baseAssignValue'),
- createAggregator = require('./_createAggregator');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Creates an object composed of keys generated from the results of running
- * each element of `collection` thru `iteratee`. The order of grouped values
- * is determined by the order they occur in `collection`. The corresponding
- * value of each key is an array of elements responsible for generating the
- * key. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
- * @returns {Object} Returns the composed aggregate object.
- * @example
- *
- * _.groupBy([6.1, 4.2, 6.3], Math.floor);
- * // => { '4': [4.2], '6': [6.1, 6.3] }
- *
- * // The `_.property` iteratee shorthand.
- * _.groupBy(['one', 'two', 'three'], 'length');
- * // => { '3': ['one', 'two'], '5': ['three'] }
- */
-var groupBy = createAggregator(function(result, value, key) {
- if (hasOwnProperty.call(result, key)) {
- result[key].push(value);
- } else {
- baseAssignValue(result, key, [value]);
- }
-});
-
-module.exports = groupBy;
diff --git a/assets/node_modules/lodash/gt.js b/assets/node_modules/lodash/gt.js
deleted file mode 100644
index 3a66282..0000000
--- a/assets/node_modules/lodash/gt.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var baseGt = require('./_baseGt'),
- createRelationalOperation = require('./_createRelationalOperation');
-
-/**
- * Checks if `value` is greater than `other`.
- *
- * @static
- * @memberOf _
- * @since 3.9.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is greater than `other`,
- * else `false`.
- * @see _.lt
- * @example
- *
- * _.gt(3, 1);
- * // => true
- *
- * _.gt(3, 3);
- * // => false
- *
- * _.gt(1, 3);
- * // => false
- */
-var gt = createRelationalOperation(baseGt);
-
-module.exports = gt;
diff --git a/assets/node_modules/lodash/gte.js b/assets/node_modules/lodash/gte.js
deleted file mode 100644
index 4180a68..0000000
--- a/assets/node_modules/lodash/gte.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var createRelationalOperation = require('./_createRelationalOperation');
-
-/**
- * Checks if `value` is greater than or equal to `other`.
- *
- * @static
- * @memberOf _
- * @since 3.9.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is greater than or equal to
- * `other`, else `false`.
- * @see _.lte
- * @example
- *
- * _.gte(3, 1);
- * // => true
- *
- * _.gte(3, 3);
- * // => true
- *
- * _.gte(1, 3);
- * // => false
- */
-var gte = createRelationalOperation(function(value, other) {
- return value >= other;
-});
-
-module.exports = gte;
diff --git a/assets/node_modules/lodash/has.js b/assets/node_modules/lodash/has.js
deleted file mode 100644
index 34df55e..0000000
--- a/assets/node_modules/lodash/has.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var baseHas = require('./_baseHas'),
- hasPath = require('./_hasPath');
-
-/**
- * Checks if `path` is a direct property of `object`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- * @example
- *
- * var object = { 'a': { 'b': 2 } };
- * var other = _.create({ 'a': _.create({ 'b': 2 }) });
- *
- * _.has(object, 'a');
- * // => true
- *
- * _.has(object, 'a.b');
- * // => true
- *
- * _.has(object, ['a', 'b']);
- * // => true
- *
- * _.has(other, 'a');
- * // => false
- */
-function has(object, path) {
- return object != null && hasPath(object, path, baseHas);
-}
-
-module.exports = has;
diff --git a/assets/node_modules/lodash/hasIn.js b/assets/node_modules/lodash/hasIn.js
deleted file mode 100644
index 06a3686..0000000
--- a/assets/node_modules/lodash/hasIn.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var baseHasIn = require('./_baseHasIn'),
- hasPath = require('./_hasPath');
-
-/**
- * Checks if `path` is a direct or inherited property of `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- * @example
- *
- * var object = _.create({ 'a': _.create({ 'b': 2 }) });
- *
- * _.hasIn(object, 'a');
- * // => true
- *
- * _.hasIn(object, 'a.b');
- * // => true
- *
- * _.hasIn(object, ['a', 'b']);
- * // => true
- *
- * _.hasIn(object, 'b');
- * // => false
- */
-function hasIn(object, path) {
- return object != null && hasPath(object, path, baseHasIn);
-}
-
-module.exports = hasIn;
diff --git a/assets/node_modules/lodash/head.js b/assets/node_modules/lodash/head.js
deleted file mode 100644
index dee9d1f..0000000
--- a/assets/node_modules/lodash/head.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Gets the first element of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @alias first
- * @category Array
- * @param {Array} array The array to query.
- * @returns {*} Returns the first element of `array`.
- * @example
- *
- * _.head([1, 2, 3]);
- * // => 1
- *
- * _.head([]);
- * // => undefined
- */
-function head(array) {
- return (array && array.length) ? array[0] : undefined;
-}
-
-module.exports = head;
diff --git a/assets/node_modules/lodash/identity.js b/assets/node_modules/lodash/identity.js
deleted file mode 100644
index 2d5d963..0000000
--- a/assets/node_modules/lodash/identity.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * This method returns the first argument it receives.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {*} value Any value.
- * @returns {*} Returns `value`.
- * @example
- *
- * var object = { 'a': 1 };
- *
- * console.log(_.identity(object) === object);
- * // => true
- */
-function identity(value) {
- return value;
-}
-
-module.exports = identity;
diff --git a/assets/node_modules/lodash/inRange.js b/assets/node_modules/lodash/inRange.js
deleted file mode 100644
index f20728d..0000000
--- a/assets/node_modules/lodash/inRange.js
+++ /dev/null
@@ -1,55 +0,0 @@
-var baseInRange = require('./_baseInRange'),
- toFinite = require('./toFinite'),
- toNumber = require('./toNumber');
-
-/**
- * Checks if `n` is between `start` and up to, but not including, `end`. If
- * `end` is not specified, it's set to `start` with `start` then set to `0`.
- * If `start` is greater than `end` the params are swapped to support
- * negative ranges.
- *
- * @static
- * @memberOf _
- * @since 3.3.0
- * @category Number
- * @param {number} number The number to check.
- * @param {number} [start=0] The start of the range.
- * @param {number} end The end of the range.
- * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
- * @see _.range, _.rangeRight
- * @example
- *
- * _.inRange(3, 2, 4);
- * // => true
- *
- * _.inRange(4, 8);
- * // => true
- *
- * _.inRange(4, 2);
- * // => false
- *
- * _.inRange(2, 2);
- * // => false
- *
- * _.inRange(1.2, 2);
- * // => true
- *
- * _.inRange(5.2, 4);
- * // => false
- *
- * _.inRange(-3, -2, -6);
- * // => true
- */
-function inRange(number, start, end) {
- start = toFinite(start);
- if (end === undefined) {
- end = start;
- start = 0;
- } else {
- end = toFinite(end);
- }
- number = toNumber(number);
- return baseInRange(number, start, end);
-}
-
-module.exports = inRange;
diff --git a/assets/node_modules/lodash/includes.js b/assets/node_modules/lodash/includes.js
deleted file mode 100644
index ae0deed..0000000
--- a/assets/node_modules/lodash/includes.js
+++ /dev/null
@@ -1,53 +0,0 @@
-var baseIndexOf = require('./_baseIndexOf'),
- isArrayLike = require('./isArrayLike'),
- isString = require('./isString'),
- toInteger = require('./toInteger'),
- values = require('./values');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Checks if `value` is in `collection`. If `collection` is a string, it's
- * checked for a substring of `value`, otherwise
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * is used for equality comparisons. If `fromIndex` is negative, it's used as
- * the offset from the end of `collection`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object|string} collection The collection to inspect.
- * @param {*} value The value to search for.
- * @param {number} [fromIndex=0] The index to search from.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
- * @returns {boolean} Returns `true` if `value` is found, else `false`.
- * @example
- *
- * _.includes([1, 2, 3], 1);
- * // => true
- *
- * _.includes([1, 2, 3], 1, 2);
- * // => false
- *
- * _.includes({ 'a': 1, 'b': 2 }, 1);
- * // => true
- *
- * _.includes('abcd', 'bc');
- * // => true
- */
-function includes(collection, value, fromIndex, guard) {
- collection = isArrayLike(collection) ? collection : values(collection);
- fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;
-
- var length = collection.length;
- if (fromIndex < 0) {
- fromIndex = nativeMax(length + fromIndex, 0);
- }
- return isString(collection)
- ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
- : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
-}
-
-module.exports = includes;
diff --git a/assets/node_modules/lodash/index.js b/assets/node_modules/lodash/index.js
deleted file mode 100644
index 5d063e2..0000000
--- a/assets/node_modules/lodash/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lodash'); \ No newline at end of file
diff --git a/assets/node_modules/lodash/indexOf.js b/assets/node_modules/lodash/indexOf.js
deleted file mode 100644
index 3c644af..0000000
--- a/assets/node_modules/lodash/indexOf.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var baseIndexOf = require('./_baseIndexOf'),
- toInteger = require('./toInteger');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Gets the index at which the first occurrence of `value` is found in `array`
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons. If `fromIndex` is negative, it's used as the
- * offset from the end of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- * @example
- *
- * _.indexOf([1, 2, 1, 2], 2);
- * // => 1
- *
- * // Search from the `fromIndex`.
- * _.indexOf([1, 2, 1, 2], 2, 2);
- * // => 3
- */
-function indexOf(array, value, fromIndex) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return -1;
- }
- var index = fromIndex == null ? 0 : toInteger(fromIndex);
- if (index < 0) {
- index = nativeMax(length + index, 0);
- }
- return baseIndexOf(array, value, index);
-}
-
-module.exports = indexOf;
diff --git a/assets/node_modules/lodash/initial.js b/assets/node_modules/lodash/initial.js
deleted file mode 100644
index f47fc50..0000000
--- a/assets/node_modules/lodash/initial.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var baseSlice = require('./_baseSlice');
-
-/**
- * Gets all but the last element of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to query.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.initial([1, 2, 3]);
- * // => [1, 2]
- */
-function initial(array) {
- var length = array == null ? 0 : array.length;
- return length ? baseSlice(array, 0, -1) : [];
-}
-
-module.exports = initial;
diff --git a/assets/node_modules/lodash/intersection.js b/assets/node_modules/lodash/intersection.js
deleted file mode 100644
index a94c135..0000000
--- a/assets/node_modules/lodash/intersection.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var arrayMap = require('./_arrayMap'),
- baseIntersection = require('./_baseIntersection'),
- baseRest = require('./_baseRest'),
- castArrayLikeObject = require('./_castArrayLikeObject');
-
-/**
- * Creates an array of unique values that are included in all given arrays
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons. The order and references of result values are
- * determined by the first array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @returns {Array} Returns the new array of intersecting values.
- * @example
- *
- * _.intersection([2, 1], [2, 3]);
- * // => [2]
- */
-var intersection = baseRest(function(arrays) {
- var mapped = arrayMap(arrays, castArrayLikeObject);
- return (mapped.length && mapped[0] === arrays[0])
- ? baseIntersection(mapped)
- : [];
-});
-
-module.exports = intersection;
diff --git a/assets/node_modules/lodash/intersectionBy.js b/assets/node_modules/lodash/intersectionBy.js
deleted file mode 100644
index 31461aa..0000000
--- a/assets/node_modules/lodash/intersectionBy.js
+++ /dev/null
@@ -1,45 +0,0 @@
-var arrayMap = require('./_arrayMap'),
- baseIntersection = require('./_baseIntersection'),
- baseIteratee = require('./_baseIteratee'),
- baseRest = require('./_baseRest'),
- castArrayLikeObject = require('./_castArrayLikeObject'),
- last = require('./last');
-
-/**
- * This method is like `_.intersection` except that it accepts `iteratee`
- * which is invoked for each element of each `arrays` to generate the criterion
- * by which they're compared. The order and references of result values are
- * determined by the first array. The iteratee is invoked with one argument:
- * (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new array of intersecting values.
- * @example
- *
- * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
- * // => [2.1]
- *
- * // The `_.property` iteratee shorthand.
- * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 1 }]
- */
-var intersectionBy = baseRest(function(arrays) {
- var iteratee = last(arrays),
- mapped = arrayMap(arrays, castArrayLikeObject);
-
- if (iteratee === last(mapped)) {
- iteratee = undefined;
- } else {
- mapped.pop();
- }
- return (mapped.length && mapped[0] === arrays[0])
- ? baseIntersection(mapped, baseIteratee(iteratee, 2))
- : [];
-});
-
-module.exports = intersectionBy;
diff --git a/assets/node_modules/lodash/intersectionWith.js b/assets/node_modules/lodash/intersectionWith.js
deleted file mode 100644
index 63cabfa..0000000
--- a/assets/node_modules/lodash/intersectionWith.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var arrayMap = require('./_arrayMap'),
- baseIntersection = require('./_baseIntersection'),
- baseRest = require('./_baseRest'),
- castArrayLikeObject = require('./_castArrayLikeObject'),
- last = require('./last');
-
-/**
- * This method is like `_.intersection` except that it accepts `comparator`
- * which is invoked to compare elements of `arrays`. The order and references
- * of result values are determined by the first array. The comparator is
- * invoked with two arguments: (arrVal, othVal).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of intersecting values.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
- * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
- *
- * _.intersectionWith(objects, others, _.isEqual);
- * // => [{ 'x': 1, 'y': 2 }]
- */
-var intersectionWith = baseRest(function(arrays) {
- var comparator = last(arrays),
- mapped = arrayMap(arrays, castArrayLikeObject);
-
- comparator = typeof comparator == 'function' ? comparator : undefined;
- if (comparator) {
- mapped.pop();
- }
- return (mapped.length && mapped[0] === arrays[0])
- ? baseIntersection(mapped, undefined, comparator)
- : [];
-});
-
-module.exports = intersectionWith;
diff --git a/assets/node_modules/lodash/invert.js b/assets/node_modules/lodash/invert.js
deleted file mode 100644
index 8c47950..0000000
--- a/assets/node_modules/lodash/invert.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var constant = require('./constant'),
- createInverter = require('./_createInverter'),
- identity = require('./identity');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var nativeObjectToString = objectProto.toString;
-
-/**
- * Creates an object composed of the inverted keys and values of `object`.
- * If `object` contains duplicate values, subsequent values overwrite
- * property assignments of previous values.
- *
- * @static
- * @memberOf _
- * @since 0.7.0
- * @category Object
- * @param {Object} object The object to invert.
- * @returns {Object} Returns the new inverted object.
- * @example
- *
- * var object = { 'a': 1, 'b': 2, 'c': 1 };
- *
- * _.invert(object);
- * // => { '1': 'c', '2': 'b' }
- */
-var invert = createInverter(function(result, value, key) {
- if (value != null &&
- typeof value.toString != 'function') {
- value = nativeObjectToString.call(value);
- }
-
- result[value] = key;
-}, constant(identity));
-
-module.exports = invert;
diff --git a/assets/node_modules/lodash/invertBy.js b/assets/node_modules/lodash/invertBy.js
deleted file mode 100644
index 3f4f7e5..0000000
--- a/assets/node_modules/lodash/invertBy.js
+++ /dev/null
@@ -1,56 +0,0 @@
-var baseIteratee = require('./_baseIteratee'),
- createInverter = require('./_createInverter');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var nativeObjectToString = objectProto.toString;
-
-/**
- * This method is like `_.invert` except that the inverted object is generated
- * from the results of running each element of `object` thru `iteratee`. The
- * corresponding inverted value of each inverted key is an array of keys
- * responsible for generating the inverted value. The iteratee is invoked
- * with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.1.0
- * @category Object
- * @param {Object} object The object to invert.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Object} Returns the new inverted object.
- * @example
- *
- * var object = { 'a': 1, 'b': 2, 'c': 1 };
- *
- * _.invertBy(object);
- * // => { '1': ['a', 'c'], '2': ['b'] }
- *
- * _.invertBy(object, function(value) {
- * return 'group' + value;
- * });
- * // => { 'group1': ['a', 'c'], 'group2': ['b'] }
- */
-var invertBy = createInverter(function(result, value, key) {
- if (value != null &&
- typeof value.toString != 'function') {
- value = nativeObjectToString.call(value);
- }
-
- if (hasOwnProperty.call(result, value)) {
- result[value].push(key);
- } else {
- result[value] = [key];
- }
-}, baseIteratee);
-
-module.exports = invertBy;
diff --git a/assets/node_modules/lodash/invoke.js b/assets/node_modules/lodash/invoke.js
deleted file mode 100644
index 97d51eb..0000000
--- a/assets/node_modules/lodash/invoke.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var baseInvoke = require('./_baseInvoke'),
- baseRest = require('./_baseRest');
-
-/**
- * Invokes the method at `path` of `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the method to invoke.
- * @param {...*} [args] The arguments to invoke the method with.
- * @returns {*} Returns the result of the invoked method.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
- *
- * _.invoke(object, 'a[0].b.c.slice', 1, 3);
- * // => [2, 3]
- */
-var invoke = baseRest(baseInvoke);
-
-module.exports = invoke;
diff --git a/assets/node_modules/lodash/invokeMap.js b/assets/node_modules/lodash/invokeMap.js
deleted file mode 100644
index 8da5126..0000000
--- a/assets/node_modules/lodash/invokeMap.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var apply = require('./_apply'),
- baseEach = require('./_baseEach'),
- baseInvoke = require('./_baseInvoke'),
- baseRest = require('./_baseRest'),
- isArrayLike = require('./isArrayLike');
-
-/**
- * Invokes the method at `path` of each element in `collection`, returning
- * an array of the results of each invoked method. Any additional arguments
- * are provided to each invoked method. If `path` is a function, it's invoked
- * for, and `this` bound to, each element in `collection`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Array|Function|string} path The path of the method to invoke or
- * the function invoked per iteration.
- * @param {...*} [args] The arguments to invoke each method with.
- * @returns {Array} Returns the array of results.
- * @example
- *
- * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');
- * // => [[1, 5, 7], [1, 2, 3]]
- *
- * _.invokeMap([123, 456], String.prototype.split, '');
- * // => [['1', '2', '3'], ['4', '5', '6']]
- */
-var invokeMap = baseRest(function(collection, path, args) {
- var index = -1,
- isFunc = typeof path == 'function',
- result = isArrayLike(collection) ? Array(collection.length) : [];
-
- baseEach(collection, function(value) {
- result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
- });
- return result;
-});
-
-module.exports = invokeMap;
diff --git a/assets/node_modules/lodash/isArguments.js b/assets/node_modules/lodash/isArguments.js
deleted file mode 100644
index 8b9ed66..0000000
--- a/assets/node_modules/lodash/isArguments.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var baseIsArguments = require('./_baseIsArguments'),
- isObjectLike = require('./isObjectLike');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/** Built-in value references. */
-var propertyIsEnumerable = objectProto.propertyIsEnumerable;
-
-/**
- * Checks if `value` is likely an `arguments` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- * else `false`.
- * @example
- *
- * _.isArguments(function() { return arguments; }());
- * // => true
- *
- * _.isArguments([1, 2, 3]);
- * // => false
- */
-var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
- return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
- !propertyIsEnumerable.call(value, 'callee');
-};
-
-module.exports = isArguments;
diff --git a/assets/node_modules/lodash/isArray.js b/assets/node_modules/lodash/isArray.js
deleted file mode 100644
index 88ab55f..0000000
--- a/assets/node_modules/lodash/isArray.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
-var isArray = Array.isArray;
-
-module.exports = isArray;
diff --git a/assets/node_modules/lodash/isArrayBuffer.js b/assets/node_modules/lodash/isArrayBuffer.js
deleted file mode 100644
index 12904a6..0000000
--- a/assets/node_modules/lodash/isArrayBuffer.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var baseIsArrayBuffer = require('./_baseIsArrayBuffer'),
- baseUnary = require('./_baseUnary'),
- nodeUtil = require('./_nodeUtil');
-
-/* Node.js helper references. */
-var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer;
-
-/**
- * Checks if `value` is classified as an `ArrayBuffer` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
- * @example
- *
- * _.isArrayBuffer(new ArrayBuffer(2));
- * // => true
- *
- * _.isArrayBuffer(new Array(2));
- * // => false
- */
-var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
-
-module.exports = isArrayBuffer;
diff --git a/assets/node_modules/lodash/isArrayLike.js b/assets/node_modules/lodash/isArrayLike.js
deleted file mode 100644
index 0f96680..0000000
--- a/assets/node_modules/lodash/isArrayLike.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var isFunction = require('./isFunction'),
- isLength = require('./isLength');
-
-/**
- * Checks if `value` is array-like. A value is considered array-like if it's
- * not a function and has a `value.length` that's an integer greater than or
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
- * @example
- *
- * _.isArrayLike([1, 2, 3]);
- * // => true
- *
- * _.isArrayLike(document.body.children);
- * // => true
- *
- * _.isArrayLike('abc');
- * // => true
- *
- * _.isArrayLike(_.noop);
- * // => false
- */
-function isArrayLike(value) {
- return value != null && isLength(value.length) && !isFunction(value);
-}
-
-module.exports = isArrayLike;
diff --git a/assets/node_modules/lodash/isArrayLikeObject.js b/assets/node_modules/lodash/isArrayLikeObject.js
deleted file mode 100644
index 6c4812a..0000000
--- a/assets/node_modules/lodash/isArrayLikeObject.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var isArrayLike = require('./isArrayLike'),
- isObjectLike = require('./isObjectLike');
-
-/**
- * This method is like `_.isArrayLike` except that it also checks if `value`
- * is an object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array-like object,
- * else `false`.
- * @example
- *
- * _.isArrayLikeObject([1, 2, 3]);
- * // => true
- *
- * _.isArrayLikeObject(document.body.children);
- * // => true
- *
- * _.isArrayLikeObject('abc');
- * // => false
- *
- * _.isArrayLikeObject(_.noop);
- * // => false
- */
-function isArrayLikeObject(value) {
- return isObjectLike(value) && isArrayLike(value);
-}
-
-module.exports = isArrayLikeObject;
diff --git a/assets/node_modules/lodash/isBoolean.js b/assets/node_modules/lodash/isBoolean.js
deleted file mode 100644
index a43ed4b..0000000
--- a/assets/node_modules/lodash/isBoolean.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var baseGetTag = require('./_baseGetTag'),
- isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var boolTag = '[object Boolean]';
-
-/**
- * Checks if `value` is classified as a boolean primitive or object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
- * @example
- *
- * _.isBoolean(false);
- * // => true
- *
- * _.isBoolean(null);
- * // => false
- */
-function isBoolean(value) {
- return value === true || value === false ||
- (isObjectLike(value) && baseGetTag(value) == boolTag);
-}
-
-module.exports = isBoolean;
diff --git a/assets/node_modules/lodash/isBuffer.js b/assets/node_modules/lodash/isBuffer.js
deleted file mode 100644
index c103cc7..0000000
--- a/assets/node_modules/lodash/isBuffer.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var root = require('./_root'),
- stubFalse = require('./stubFalse');
-
-/** Detect free variable `exports`. */
-var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
-
-/** Detect free variable `module`. */
-var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
-
-/** Detect the popular CommonJS extension `module.exports`. */
-var moduleExports = freeModule && freeModule.exports === freeExports;
-
-/** Built-in value references. */
-var Buffer = moduleExports ? root.Buffer : undefined;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
-
-/**
- * Checks if `value` is a buffer.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
- * @example
- *
- * _.isBuffer(new Buffer(2));
- * // => true
- *
- * _.isBuffer(new Uint8Array(2));
- * // => false
- */
-var isBuffer = nativeIsBuffer || stubFalse;
-
-module.exports = isBuffer;
diff --git a/assets/node_modules/lodash/isDate.js b/assets/node_modules/lodash/isDate.js
deleted file mode 100644
index 7f0209f..0000000
--- a/assets/node_modules/lodash/isDate.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var baseIsDate = require('./_baseIsDate'),
- baseUnary = require('./_baseUnary'),
- nodeUtil = require('./_nodeUtil');
-
-/* Node.js helper references. */
-var nodeIsDate = nodeUtil && nodeUtil.isDate;
-
-/**
- * Checks if `value` is classified as a `Date` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
- * @example
- *
- * _.isDate(new Date);
- * // => true
- *
- * _.isDate('Mon April 23 2012');
- * // => false
- */
-var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
-
-module.exports = isDate;
diff --git a/assets/node_modules/lodash/isElement.js b/assets/node_modules/lodash/isElement.js
deleted file mode 100644
index 76ae29c..0000000
--- a/assets/node_modules/lodash/isElement.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var isObjectLike = require('./isObjectLike'),
- isPlainObject = require('./isPlainObject');
-
-/**
- * Checks if `value` is likely a DOM element.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
- * @example
- *
- * _.isElement(document.body);
- * // => true
- *
- * _.isElement('<body>');
- * // => false
- */
-function isElement(value) {
- return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
-}
-
-module.exports = isElement;
diff --git a/assets/node_modules/lodash/isEmpty.js b/assets/node_modules/lodash/isEmpty.js
deleted file mode 100644
index 3597294..0000000
--- a/assets/node_modules/lodash/isEmpty.js
+++ /dev/null
@@ -1,77 +0,0 @@
-var baseKeys = require('./_baseKeys'),
- getTag = require('./_getTag'),
- isArguments = require('./isArguments'),
- isArray = require('./isArray'),
- isArrayLike = require('./isArrayLike'),
- isBuffer = require('./isBuffer'),
- isPrototype = require('./_isPrototype'),
- isTypedArray = require('./isTypedArray');
-
-/** `Object#toString` result references. */
-var mapTag = '[object Map]',
- setTag = '[object Set]';
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Checks if `value` is an empty object, collection, map, or set.
- *
- * Objects are considered empty if they have no own enumerable string keyed
- * properties.
- *
- * Array-like values such as `arguments` objects, arrays, buffers, strings, or
- * jQuery-like collections are considered empty if they have a `length` of `0`.
- * Similarly, maps and sets are considered empty if they have a `size` of `0`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is empty, else `false`.
- * @example
- *
- * _.isEmpty(null);
- * // => true
- *
- * _.isEmpty(true);
- * // => true
- *
- * _.isEmpty(1);
- * // => true
- *
- * _.isEmpty([1, 2, 3]);
- * // => false
- *
- * _.isEmpty({ 'a': 1 });
- * // => false
- */
-function isEmpty(value) {
- if (value == null) {
- return true;
- }
- if (isArrayLike(value) &&
- (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
- isBuffer(value) || isTypedArray(value) || isArguments(value))) {
- return !value.length;
- }
- var tag = getTag(value);
- if (tag == mapTag || tag == setTag) {
- return !value.size;
- }
- if (isPrototype(value)) {
- return !baseKeys(value).length;
- }
- for (var key in value) {
- if (hasOwnProperty.call(value, key)) {
- return false;
- }
- }
- return true;
-}
-
-module.exports = isEmpty;
diff --git a/assets/node_modules/lodash/isEqual.js b/assets/node_modules/lodash/isEqual.js
deleted file mode 100644
index 5e23e76..0000000
--- a/assets/node_modules/lodash/isEqual.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var baseIsEqual = require('./_baseIsEqual');
-
-/**
- * Performs a deep comparison between two values to determine if they are
- * equivalent.
- *
- * **Note:** This method supports comparing arrays, array buffers, booleans,
- * date objects, error objects, maps, numbers, `Object` objects, regexes,
- * sets, strings, symbols, and typed arrays. `Object` objects are compared
- * by their own, not inherited, enumerable properties. Functions and DOM
- * nodes are compared by strict equality, i.e. `===`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.isEqual(object, other);
- * // => true
- *
- * object === other;
- * // => false
- */
-function isEqual(value, other) {
- return baseIsEqual(value, other);
-}
-
-module.exports = isEqual;
diff --git a/assets/node_modules/lodash/isEqualWith.js b/assets/node_modules/lodash/isEqualWith.js
deleted file mode 100644
index 21bdc7f..0000000
--- a/assets/node_modules/lodash/isEqualWith.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var baseIsEqual = require('./_baseIsEqual');
-
-/**
- * This method is like `_.isEqual` except that it accepts `customizer` which
- * is invoked to compare values. If `customizer` returns `undefined`, comparisons
- * are handled by the method instead. The `customizer` is invoked with up to
- * six arguments: (objValue, othValue [, index|key, object, other, stack]).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @param {Function} [customizer] The function to customize comparisons.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * function isGreeting(value) {
- * return /^h(?:i|ello)$/.test(value);
- * }
- *
- * function customizer(objValue, othValue) {
- * if (isGreeting(objValue) && isGreeting(othValue)) {
- * return true;
- * }
- * }
- *
- * var array = ['hello', 'goodbye'];
- * var other = ['hi', 'goodbye'];
- *
- * _.isEqualWith(array, other, customizer);
- * // => true
- */
-function isEqualWith(value, other, customizer) {
- customizer = typeof customizer == 'function' ? customizer : undefined;
- var result = customizer ? customizer(value, other) : undefined;
- return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
-}
-
-module.exports = isEqualWith;
diff --git a/assets/node_modules/lodash/isError.js b/assets/node_modules/lodash/isError.js
deleted file mode 100644
index b4f41e0..0000000
--- a/assets/node_modules/lodash/isError.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var baseGetTag = require('./_baseGetTag'),
- isObjectLike = require('./isObjectLike'),
- isPlainObject = require('./isPlainObject');
-
-/** `Object#toString` result references. */
-var domExcTag = '[object DOMException]',
- errorTag = '[object Error]';
-
-/**
- * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
- * `SyntaxError`, `TypeError`, or `URIError` object.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
- * @example
- *
- * _.isError(new Error);
- * // => true
- *
- * _.isError(Error);
- * // => false
- */
-function isError(value) {
- if (!isObjectLike(value)) {
- return false;
- }
- var tag = baseGetTag(value);
- return tag == errorTag || tag == domExcTag ||
- (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
-}
-
-module.exports = isError;
diff --git a/assets/node_modules/lodash/isFinite.js b/assets/node_modules/lodash/isFinite.js
deleted file mode 100644
index 601842b..0000000
--- a/assets/node_modules/lodash/isFinite.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var root = require('./_root');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeIsFinite = root.isFinite;
-
-/**
- * Checks if `value` is a finite primitive number.
- *
- * **Note:** This method is based on
- * [`Number.isFinite`](https://mdn.io/Number/isFinite).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
- * @example
- *
- * _.isFinite(3);
- * // => true
- *
- * _.isFinite(Number.MIN_VALUE);
- * // => true
- *
- * _.isFinite(Infinity);
- * // => false
- *
- * _.isFinite('3');
- * // => false
- */
-function isFinite(value) {
- return typeof value == 'number' && nativeIsFinite(value);
-}
-
-module.exports = isFinite;
diff --git a/assets/node_modules/lodash/isFunction.js b/assets/node_modules/lodash/isFunction.js
deleted file mode 100644
index 907a8cd..0000000
--- a/assets/node_modules/lodash/isFunction.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var baseGetTag = require('./_baseGetTag'),
- isObject = require('./isObject');
-
-/** `Object#toString` result references. */
-var asyncTag = '[object AsyncFunction]',
- funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]',
- proxyTag = '[object Proxy]';
-
-/**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
-function isFunction(value) {
- if (!isObject(value)) {
- return false;
- }
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 9 which returns 'object' for typed arrays and other constructors.
- var tag = baseGetTag(value);
- return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
-}
-
-module.exports = isFunction;
diff --git a/assets/node_modules/lodash/isInteger.js b/assets/node_modules/lodash/isInteger.js
deleted file mode 100644
index 66aa87d..0000000
--- a/assets/node_modules/lodash/isInteger.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var toInteger = require('./toInteger');
-
-/**
- * Checks if `value` is an integer.
- *
- * **Note:** This method is based on
- * [`Number.isInteger`](https://mdn.io/Number/isInteger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
- * @example
- *
- * _.isInteger(3);
- * // => true
- *
- * _.isInteger(Number.MIN_VALUE);
- * // => false
- *
- * _.isInteger(Infinity);
- * // => false
- *
- * _.isInteger('3');
- * // => false
- */
-function isInteger(value) {
- return typeof value == 'number' && value == toInteger(value);
-}
-
-module.exports = isInteger;
diff --git a/assets/node_modules/lodash/isLength.js b/assets/node_modules/lodash/isLength.js
deleted file mode 100644
index 3a95caa..0000000
--- a/assets/node_modules/lodash/isLength.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/**
- * Checks if `value` is a valid array-like length.
- *
- * **Note:** This method is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
- * @example
- *
- * _.isLength(3);
- * // => true
- *
- * _.isLength(Number.MIN_VALUE);
- * // => false
- *
- * _.isLength(Infinity);
- * // => false
- *
- * _.isLength('3');
- * // => false
- */
-function isLength(value) {
- return typeof value == 'number' &&
- value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
-}
-
-module.exports = isLength;
diff --git a/assets/node_modules/lodash/isMap.js b/assets/node_modules/lodash/isMap.js
deleted file mode 100644
index 44f8517..0000000
--- a/assets/node_modules/lodash/isMap.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var baseIsMap = require('./_baseIsMap'),
- baseUnary = require('./_baseUnary'),
- nodeUtil = require('./_nodeUtil');
-
-/* Node.js helper references. */
-var nodeIsMap = nodeUtil && nodeUtil.isMap;
-
-/**
- * Checks if `value` is classified as a `Map` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a map, else `false`.
- * @example
- *
- * _.isMap(new Map);
- * // => true
- *
- * _.isMap(new WeakMap);
- * // => false
- */
-var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
-
-module.exports = isMap;
diff --git a/assets/node_modules/lodash/isMatch.js b/assets/node_modules/lodash/isMatch.js
deleted file mode 100644
index 9773a18..0000000
--- a/assets/node_modules/lodash/isMatch.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var baseIsMatch = require('./_baseIsMatch'),
- getMatchData = require('./_getMatchData');
-
-/**
- * Performs a partial deep comparison between `object` and `source` to
- * determine if `object` contains equivalent property values.
- *
- * **Note:** This method is equivalent to `_.matches` when `source` is
- * partially applied.
- *
- * Partial comparisons will match empty array and empty object `source`
- * values against any array or object value, respectively. See `_.isEqual`
- * for a list of supported value comparisons.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property values to match.
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- *
- * _.isMatch(object, { 'b': 2 });
- * // => true
- *
- * _.isMatch(object, { 'b': 1 });
- * // => false
- */
-function isMatch(object, source) {
- return object === source || baseIsMatch(object, source, getMatchData(source));
-}
-
-module.exports = isMatch;
diff --git a/assets/node_modules/lodash/isMatchWith.js b/assets/node_modules/lodash/isMatchWith.js
deleted file mode 100644
index 187b6a6..0000000
--- a/assets/node_modules/lodash/isMatchWith.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var baseIsMatch = require('./_baseIsMatch'),
- getMatchData = require('./_getMatchData');
-
-/**
- * This method is like `_.isMatch` except that it accepts `customizer` which
- * is invoked to compare values. If `customizer` returns `undefined`, comparisons
- * are handled by the method instead. The `customizer` is invoked with five
- * arguments: (objValue, srcValue, index|key, object, source).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property values to match.
- * @param {Function} [customizer] The function to customize comparisons.
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
- * @example
- *
- * function isGreeting(value) {
- * return /^h(?:i|ello)$/.test(value);
- * }
- *
- * function customizer(objValue, srcValue) {
- * if (isGreeting(objValue) && isGreeting(srcValue)) {
- * return true;
- * }
- * }
- *
- * var object = { 'greeting': 'hello' };
- * var source = { 'greeting': 'hi' };
- *
- * _.isMatchWith(object, source, customizer);
- * // => true
- */
-function isMatchWith(object, source, customizer) {
- customizer = typeof customizer == 'function' ? customizer : undefined;
- return baseIsMatch(object, source, getMatchData(source), customizer);
-}
-
-module.exports = isMatchWith;
diff --git a/assets/node_modules/lodash/isNaN.js b/assets/node_modules/lodash/isNaN.js
deleted file mode 100644
index 7d0d783..0000000
--- a/assets/node_modules/lodash/isNaN.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var isNumber = require('./isNumber');
-
-/**
- * Checks if `value` is `NaN`.
- *
- * **Note:** This method is based on
- * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
- * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
- * `undefined` and other non-number values.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
- * @example
- *
- * _.isNaN(NaN);
- * // => true
- *
- * _.isNaN(new Number(NaN));
- * // => true
- *
- * isNaN(undefined);
- * // => true
- *
- * _.isNaN(undefined);
- * // => false
- */
-function isNaN(value) {
- // An `NaN` primitive is the only value that is not equal to itself.
- // Perform the `toStringTag` check first to avoid errors with some
- // ActiveX objects in IE.
- return isNumber(value) && value != +value;
-}
-
-module.exports = isNaN;
diff --git a/assets/node_modules/lodash/isNative.js b/assets/node_modules/lodash/isNative.js
deleted file mode 100644
index f0cb8d5..0000000
--- a/assets/node_modules/lodash/isNative.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var baseIsNative = require('./_baseIsNative'),
- isMaskable = require('./_isMaskable');
-
-/** Error message constants. */
-var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.';
-
-/**
- * Checks if `value` is a pristine native function.
- *
- * **Note:** This method can't reliably detect native functions in the presence
- * of the core-js package because core-js circumvents this kind of detection.
- * Despite multiple requests, the core-js maintainer has made it clear: any
- * attempt to fix the detection will be obstructed. As a result, we're left
- * with little choice but to throw an error. Unfortunately, this also affects
- * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
- * which rely on core-js.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- * @example
- *
- * _.isNative(Array.prototype.push);
- * // => true
- *
- * _.isNative(_);
- * // => false
- */
-function isNative(value) {
- if (isMaskable(value)) {
- throw new Error(CORE_ERROR_TEXT);
- }
- return baseIsNative(value);
-}
-
-module.exports = isNative;
diff --git a/assets/node_modules/lodash/isNil.js b/assets/node_modules/lodash/isNil.js
deleted file mode 100644
index 79f0505..0000000
--- a/assets/node_modules/lodash/isNil.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Checks if `value` is `null` or `undefined`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
- * @example
- *
- * _.isNil(null);
- * // => true
- *
- * _.isNil(void 0);
- * // => true
- *
- * _.isNil(NaN);
- * // => false
- */
-function isNil(value) {
- return value == null;
-}
-
-module.exports = isNil;
diff --git a/assets/node_modules/lodash/isNull.js b/assets/node_modules/lodash/isNull.js
deleted file mode 100644
index c0a374d..0000000
--- a/assets/node_modules/lodash/isNull.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Checks if `value` is `null`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
- * @example
- *
- * _.isNull(null);
- * // => true
- *
- * _.isNull(void 0);
- * // => false
- */
-function isNull(value) {
- return value === null;
-}
-
-module.exports = isNull;
diff --git a/assets/node_modules/lodash/isNumber.js b/assets/node_modules/lodash/isNumber.js
deleted file mode 100644
index cd34ee4..0000000
--- a/assets/node_modules/lodash/isNumber.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var baseGetTag = require('./_baseGetTag'),
- isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var numberTag = '[object Number]';
-
-/**
- * Checks if `value` is classified as a `Number` primitive or object.
- *
- * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
- * classified as numbers, use the `_.isFinite` method.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a number, else `false`.
- * @example
- *
- * _.isNumber(3);
- * // => true
- *
- * _.isNumber(Number.MIN_VALUE);
- * // => true
- *
- * _.isNumber(Infinity);
- * // => true
- *
- * _.isNumber('3');
- * // => false
- */
-function isNumber(value) {
- return typeof value == 'number' ||
- (isObjectLike(value) && baseGetTag(value) == numberTag);
-}
-
-module.exports = isNumber;
diff --git a/assets/node_modules/lodash/isObject.js b/assets/node_modules/lodash/isObject.js
deleted file mode 100644
index 1dc8939..0000000
--- a/assets/node_modules/lodash/isObject.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
- var type = typeof value;
- return value != null && (type == 'object' || type == 'function');
-}
-
-module.exports = isObject;
diff --git a/assets/node_modules/lodash/isObjectLike.js b/assets/node_modules/lodash/isObjectLike.js
deleted file mode 100644
index 301716b..0000000
--- a/assets/node_modules/lodash/isObjectLike.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
- return value != null && typeof value == 'object';
-}
-
-module.exports = isObjectLike;
diff --git a/assets/node_modules/lodash/isPlainObject.js b/assets/node_modules/lodash/isPlainObject.js
deleted file mode 100644
index 2387373..0000000
--- a/assets/node_modules/lodash/isPlainObject.js
+++ /dev/null
@@ -1,62 +0,0 @@
-var baseGetTag = require('./_baseGetTag'),
- getPrototype = require('./_getPrototype'),
- isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var objectTag = '[object Object]';
-
-/** Used for built-in method references. */
-var funcProto = Function.prototype,
- objectProto = Object.prototype;
-
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/** Used to infer the `Object` constructor. */
-var objectCtorString = funcToString.call(Object);
-
-/**
- * Checks if `value` is a plain object, that is, an object created by the
- * `Object` constructor or one with a `[[Prototype]]` of `null`.
- *
- * @static
- * @memberOf _
- * @since 0.8.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * }
- *
- * _.isPlainObject(new Foo);
- * // => false
- *
- * _.isPlainObject([1, 2, 3]);
- * // => false
- *
- * _.isPlainObject({ 'x': 0, 'y': 0 });
- * // => true
- *
- * _.isPlainObject(Object.create(null));
- * // => true
- */
-function isPlainObject(value) {
- if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
- return false;
- }
- var proto = getPrototype(value);
- if (proto === null) {
- return true;
- }
- var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
- return typeof Ctor == 'function' && Ctor instanceof Ctor &&
- funcToString.call(Ctor) == objectCtorString;
-}
-
-module.exports = isPlainObject;
diff --git a/assets/node_modules/lodash/isRegExp.js b/assets/node_modules/lodash/isRegExp.js
deleted file mode 100644
index 76c9b6e..0000000
--- a/assets/node_modules/lodash/isRegExp.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var baseIsRegExp = require('./_baseIsRegExp'),
- baseUnary = require('./_baseUnary'),
- nodeUtil = require('./_nodeUtil');
-
-/* Node.js helper references. */
-var nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;
-
-/**
- * Checks if `value` is classified as a `RegExp` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
- * @example
- *
- * _.isRegExp(/abc/);
- * // => true
- *
- * _.isRegExp('/abc/');
- * // => false
- */
-var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
-
-module.exports = isRegExp;
diff --git a/assets/node_modules/lodash/isSafeInteger.js b/assets/node_modules/lodash/isSafeInteger.js
deleted file mode 100644
index 2a48526..0000000
--- a/assets/node_modules/lodash/isSafeInteger.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var isInteger = require('./isInteger');
-
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/**
- * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
- * double precision number which isn't the result of a rounded unsafe integer.
- *
- * **Note:** This method is based on
- * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
- * @example
- *
- * _.isSafeInteger(3);
- * // => true
- *
- * _.isSafeInteger(Number.MIN_VALUE);
- * // => false
- *
- * _.isSafeInteger(Infinity);
- * // => false
- *
- * _.isSafeInteger('3');
- * // => false
- */
-function isSafeInteger(value) {
- return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
-}
-
-module.exports = isSafeInteger;
diff --git a/assets/node_modules/lodash/isSet.js b/assets/node_modules/lodash/isSet.js
deleted file mode 100644
index ab88bdf..0000000
--- a/assets/node_modules/lodash/isSet.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var baseIsSet = require('./_baseIsSet'),
- baseUnary = require('./_baseUnary'),
- nodeUtil = require('./_nodeUtil');
-
-/* Node.js helper references. */
-var nodeIsSet = nodeUtil && nodeUtil.isSet;
-
-/**
- * Checks if `value` is classified as a `Set` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a set, else `false`.
- * @example
- *
- * _.isSet(new Set);
- * // => true
- *
- * _.isSet(new WeakSet);
- * // => false
- */
-var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
-
-module.exports = isSet;
diff --git a/assets/node_modules/lodash/isString.js b/assets/node_modules/lodash/isString.js
deleted file mode 100644
index 627eb9c..0000000
--- a/assets/node_modules/lodash/isString.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var baseGetTag = require('./_baseGetTag'),
- isArray = require('./isArray'),
- isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var stringTag = '[object String]';
-
-/**
- * Checks if `value` is classified as a `String` primitive or object.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a string, else `false`.
- * @example
- *
- * _.isString('abc');
- * // => true
- *
- * _.isString(1);
- * // => false
- */
-function isString(value) {
- return typeof value == 'string' ||
- (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
-}
-
-module.exports = isString;
diff --git a/assets/node_modules/lodash/isSymbol.js b/assets/node_modules/lodash/isSymbol.js
deleted file mode 100644
index dfb60b9..0000000
--- a/assets/node_modules/lodash/isSymbol.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var baseGetTag = require('./_baseGetTag'),
- isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var symbolTag = '[object Symbol]';
-
-/**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
-function isSymbol(value) {
- return typeof value == 'symbol' ||
- (isObjectLike(value) && baseGetTag(value) == symbolTag);
-}
-
-module.exports = isSymbol;
diff --git a/assets/node_modules/lodash/isTypedArray.js b/assets/node_modules/lodash/isTypedArray.js
deleted file mode 100644
index da3f8dd..0000000
--- a/assets/node_modules/lodash/isTypedArray.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var baseIsTypedArray = require('./_baseIsTypedArray'),
- baseUnary = require('./_baseUnary'),
- nodeUtil = require('./_nodeUtil');
-
-/* Node.js helper references. */
-var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
-
-/**
- * Checks if `value` is classified as a typed array.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
- * @example
- *
- * _.isTypedArray(new Uint8Array);
- * // => true
- *
- * _.isTypedArray([]);
- * // => false
- */
-var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
-
-module.exports = isTypedArray;
diff --git a/assets/node_modules/lodash/isUndefined.js b/assets/node_modules/lodash/isUndefined.js
deleted file mode 100644
index 377d121..0000000
--- a/assets/node_modules/lodash/isUndefined.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Checks if `value` is `undefined`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
- * @example
- *
- * _.isUndefined(void 0);
- * // => true
- *
- * _.isUndefined(null);
- * // => false
- */
-function isUndefined(value) {
- return value === undefined;
-}
-
-module.exports = isUndefined;
diff --git a/assets/node_modules/lodash/isWeakMap.js b/assets/node_modules/lodash/isWeakMap.js
deleted file mode 100644
index 8d36f66..0000000
--- a/assets/node_modules/lodash/isWeakMap.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var getTag = require('./_getTag'),
- isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var weakMapTag = '[object WeakMap]';
-
-/**
- * Checks if `value` is classified as a `WeakMap` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.
- * @example
- *
- * _.isWeakMap(new WeakMap);
- * // => true
- *
- * _.isWeakMap(new Map);
- * // => false
- */
-function isWeakMap(value) {
- return isObjectLike(value) && getTag(value) == weakMapTag;
-}
-
-module.exports = isWeakMap;
diff --git a/assets/node_modules/lodash/isWeakSet.js b/assets/node_modules/lodash/isWeakSet.js
deleted file mode 100644
index e628b26..0000000
--- a/assets/node_modules/lodash/isWeakSet.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var baseGetTag = require('./_baseGetTag'),
- isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var weakSetTag = '[object WeakSet]';
-
-/**
- * Checks if `value` is classified as a `WeakSet` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
- * @example
- *
- * _.isWeakSet(new WeakSet);
- * // => true
- *
- * _.isWeakSet(new Set);
- * // => false
- */
-function isWeakSet(value) {
- return isObjectLike(value) && baseGetTag(value) == weakSetTag;
-}
-
-module.exports = isWeakSet;
diff --git a/assets/node_modules/lodash/iteratee.js b/assets/node_modules/lodash/iteratee.js
deleted file mode 100644
index 61b73a8..0000000
--- a/assets/node_modules/lodash/iteratee.js
+++ /dev/null
@@ -1,53 +0,0 @@
-var baseClone = require('./_baseClone'),
- baseIteratee = require('./_baseIteratee');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1;
-
-/**
- * Creates a function that invokes `func` with the arguments of the created
- * function. If `func` is a property name, the created function returns the
- * property value for a given element. If `func` is an array or object, the
- * created function returns `true` for elements that contain the equivalent
- * source properties, otherwise it returns `false`.
- *
- * @static
- * @since 4.0.0
- * @memberOf _
- * @category Util
- * @param {*} [func=_.identity] The value to convert to a callback.
- * @returns {Function} Returns the callback.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': true },
- * { 'user': 'fred', 'age': 40, 'active': false }
- * ];
- *
- * // The `_.matches` iteratee shorthand.
- * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
- * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.filter(users, _.iteratee(['user', 'fred']));
- * // => [{ 'user': 'fred', 'age': 40 }]
- *
- * // The `_.property` iteratee shorthand.
- * _.map(users, _.iteratee('user'));
- * // => ['barney', 'fred']
- *
- * // Create custom iteratee shorthands.
- * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
- * return !_.isRegExp(func) ? iteratee(func) : function(string) {
- * return func.test(string);
- * };
- * });
- *
- * _.filter(['abc', 'def'], /ef/);
- * // => ['def']
- */
-function iteratee(func) {
- return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));
-}
-
-module.exports = iteratee;
diff --git a/assets/node_modules/lodash/join.js b/assets/node_modules/lodash/join.js
deleted file mode 100644
index 45de079..0000000
--- a/assets/node_modules/lodash/join.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/** Used for built-in method references. */
-var arrayProto = Array.prototype;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeJoin = arrayProto.join;
-
-/**
- * Converts all elements in `array` into a string separated by `separator`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to convert.
- * @param {string} [separator=','] The element separator.
- * @returns {string} Returns the joined string.
- * @example
- *
- * _.join(['a', 'b', 'c'], '~');
- * // => 'a~b~c'
- */
-function join(array, separator) {
- return array == null ? '' : nativeJoin.call(array, separator);
-}
-
-module.exports = join;
diff --git a/assets/node_modules/lodash/kebabCase.js b/assets/node_modules/lodash/kebabCase.js
deleted file mode 100644
index 8a52be6..0000000
--- a/assets/node_modules/lodash/kebabCase.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var createCompounder = require('./_createCompounder');
-
-/**
- * Converts `string` to
- * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the kebab cased string.
- * @example
- *
- * _.kebabCase('Foo Bar');
- * // => 'foo-bar'
- *
- * _.kebabCase('fooBar');
- * // => 'foo-bar'
- *
- * _.kebabCase('__FOO_BAR__');
- * // => 'foo-bar'
- */
-var kebabCase = createCompounder(function(result, word, index) {
- return result + (index ? '-' : '') + word.toLowerCase();
-});
-
-module.exports = kebabCase;
diff --git a/assets/node_modules/lodash/keyBy.js b/assets/node_modules/lodash/keyBy.js
deleted file mode 100644
index acc007a..0000000
--- a/assets/node_modules/lodash/keyBy.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var baseAssignValue = require('./_baseAssignValue'),
- createAggregator = require('./_createAggregator');
-
-/**
- * Creates an object composed of keys generated from the results of running
- * each element of `collection` thru `iteratee`. The corresponding value of
- * each key is the last element responsible for generating the key. The
- * iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
- * @returns {Object} Returns the composed aggregate object.
- * @example
- *
- * var array = [
- * { 'dir': 'left', 'code': 97 },
- * { 'dir': 'right', 'code': 100 }
- * ];
- *
- * _.keyBy(array, function(o) {
- * return String.fromCharCode(o.code);
- * });
- * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
- *
- * _.keyBy(array, 'dir');
- * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
- */
-var keyBy = createAggregator(function(result, value, key) {
- baseAssignValue(result, key, value);
-});
-
-module.exports = keyBy;
diff --git a/assets/node_modules/lodash/keys.js b/assets/node_modules/lodash/keys.js
deleted file mode 100644
index d143c71..0000000
--- a/assets/node_modules/lodash/keys.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var arrayLikeKeys = require('./_arrayLikeKeys'),
- baseKeys = require('./_baseKeys'),
- isArrayLike = require('./isArrayLike');
-
-/**
- * Creates an array of the own enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects. See the
- * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
- * for more details.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keys(new Foo);
- * // => ['a', 'b'] (iteration order is not guaranteed)
- *
- * _.keys('hi');
- * // => ['0', '1']
- */
-function keys(object) {
- return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
-}
-
-module.exports = keys;
diff --git a/assets/node_modules/lodash/keysIn.js b/assets/node_modules/lodash/keysIn.js
deleted file mode 100644
index a62308f..0000000
--- a/assets/node_modules/lodash/keysIn.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var arrayLikeKeys = require('./_arrayLikeKeys'),
- baseKeysIn = require('./_baseKeysIn'),
- isArrayLike = require('./isArrayLike');
-
-/**
- * Creates an array of the own and inherited enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keysIn(new Foo);
- * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
- */
-function keysIn(object) {
- return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
-}
-
-module.exports = keysIn;
diff --git a/assets/node_modules/lodash/lang.js b/assets/node_modules/lodash/lang.js
deleted file mode 100644
index a396216..0000000
--- a/assets/node_modules/lodash/lang.js
+++ /dev/null
@@ -1,58 +0,0 @@
-module.exports = {
- 'castArray': require('./castArray'),
- 'clone': require('./clone'),
- 'cloneDeep': require('./cloneDeep'),
- 'cloneDeepWith': require('./cloneDeepWith'),
- 'cloneWith': require('./cloneWith'),
- 'conformsTo': require('./conformsTo'),
- 'eq': require('./eq'),
- 'gt': require('./gt'),
- 'gte': require('./gte'),
- 'isArguments': require('./isArguments'),
- 'isArray': require('./isArray'),
- 'isArrayBuffer': require('./isArrayBuffer'),
- 'isArrayLike': require('./isArrayLike'),
- 'isArrayLikeObject': require('./isArrayLikeObject'),
- 'isBoolean': require('./isBoolean'),
- 'isBuffer': require('./isBuffer'),
- 'isDate': require('./isDate'),
- 'isElement': require('./isElement'),
- 'isEmpty': require('./isEmpty'),
- 'isEqual': require('./isEqual'),
- 'isEqualWith': require('./isEqualWith'),
- 'isError': require('./isError'),
- 'isFinite': require('./isFinite'),
- 'isFunction': require('./isFunction'),
- 'isInteger': require('./isInteger'),
- 'isLength': require('./isLength'),
- 'isMap': require('./isMap'),
- 'isMatch': require('./isMatch'),
- 'isMatchWith': require('./isMatchWith'),
- 'isNaN': require('./isNaN'),
- 'isNative': require('./isNative'),
- 'isNil': require('./isNil'),
- 'isNull': require('./isNull'),
- 'isNumber': require('./isNumber'),
- 'isObject': require('./isObject'),
- 'isObjectLike': require('./isObjectLike'),
- 'isPlainObject': require('./isPlainObject'),
- 'isRegExp': require('./isRegExp'),
- 'isSafeInteger': require('./isSafeInteger'),
- 'isSet': require('./isSet'),
- 'isString': require('./isString'),
- 'isSymbol': require('./isSymbol'),
- 'isTypedArray': require('./isTypedArray'),
- 'isUndefined': require('./isUndefined'),
- 'isWeakMap': require('./isWeakMap'),
- 'isWeakSet': require('./isWeakSet'),
- 'lt': require('./lt'),
- 'lte': require('./lte'),
- 'toArray': require('./toArray'),
- 'toFinite': require('./toFinite'),
- 'toInteger': require('./toInteger'),
- 'toLength': require('./toLength'),
- 'toNumber': require('./toNumber'),
- 'toPlainObject': require('./toPlainObject'),
- 'toSafeInteger': require('./toSafeInteger'),
- 'toString': require('./toString')
-};
diff --git a/assets/node_modules/lodash/last.js b/assets/node_modules/lodash/last.js
deleted file mode 100644
index cad1eaf..0000000
--- a/assets/node_modules/lodash/last.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * Gets the last element of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to query.
- * @returns {*} Returns the last element of `array`.
- * @example
- *
- * _.last([1, 2, 3]);
- * // => 3
- */
-function last(array) {
- var length = array == null ? 0 : array.length;
- return length ? array[length - 1] : undefined;
-}
-
-module.exports = last;
diff --git a/assets/node_modules/lodash/lastIndexOf.js b/assets/node_modules/lodash/lastIndexOf.js
deleted file mode 100644
index dabfb61..0000000
--- a/assets/node_modules/lodash/lastIndexOf.js
+++ /dev/null
@@ -1,46 +0,0 @@
-var baseFindIndex = require('./_baseFindIndex'),
- baseIsNaN = require('./_baseIsNaN'),
- strictLastIndexOf = require('./_strictLastIndexOf'),
- toInteger = require('./toInteger');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max,
- nativeMin = Math.min;
-
-/**
- * This method is like `_.indexOf` except that it iterates over elements of
- * `array` from right to left.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} [fromIndex=array.length-1] The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- * @example
- *
- * _.lastIndexOf([1, 2, 1, 2], 2);
- * // => 3
- *
- * // Search from the `fromIndex`.
- * _.lastIndexOf([1, 2, 1, 2], 2, 2);
- * // => 1
- */
-function lastIndexOf(array, value, fromIndex) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return -1;
- }
- var index = length;
- if (fromIndex !== undefined) {
- index = toInteger(fromIndex);
- index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
- }
- return value === value
- ? strictLastIndexOf(array, value, index)
- : baseFindIndex(array, baseIsNaN, index, true);
-}
-
-module.exports = lastIndexOf;
diff --git a/assets/node_modules/lodash/lodash.js b/assets/node_modules/lodash/lodash.js
deleted file mode 100644
index 9b95dfe..0000000
--- a/assets/node_modules/lodash/lodash.js
+++ /dev/null
@@ -1,17112 +0,0 @@
-/**
- * @license
- * Lodash <https://lodash.com/>
- * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-;(function() {
-
- /** Used as a safe reference for `undefined` in pre-ES5 environments. */
- var undefined;
-
- /** Used as the semantic version number. */
- var VERSION = '4.17.15';
-
- /** Used as the size to enable large array optimizations. */
- var LARGE_ARRAY_SIZE = 200;
-
- /** Error message constants. */
- var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',
- FUNC_ERROR_TEXT = 'Expected a function';
-
- /** Used to stand-in for `undefined` hash values. */
- var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
- /** Used as the maximum memoize cache size. */
- var MAX_MEMOIZE_SIZE = 500;
-
- /** Used as the internal argument placeholder. */
- var PLACEHOLDER = '__lodash_placeholder__';
-
- /** Used to compose bitmasks for cloning. */
- var CLONE_DEEP_FLAG = 1,
- CLONE_FLAT_FLAG = 2,
- CLONE_SYMBOLS_FLAG = 4;
-
- /** Used to compose bitmasks for value comparisons. */
- var COMPARE_PARTIAL_FLAG = 1,
- COMPARE_UNORDERED_FLAG = 2;
-
- /** Used to compose bitmasks for function metadata. */
- var WRAP_BIND_FLAG = 1,
- WRAP_BIND_KEY_FLAG = 2,
- WRAP_CURRY_BOUND_FLAG = 4,
- WRAP_CURRY_FLAG = 8,
- WRAP_CURRY_RIGHT_FLAG = 16,
- WRAP_PARTIAL_FLAG = 32,
- WRAP_PARTIAL_RIGHT_FLAG = 64,
- WRAP_ARY_FLAG = 128,
- WRAP_REARG_FLAG = 256,
- WRAP_FLIP_FLAG = 512;
-
- /** Used as default options for `_.truncate`. */
- var DEFAULT_TRUNC_LENGTH = 30,
- DEFAULT_TRUNC_OMISSION = '...';
-
- /** Used to detect hot functions by number of calls within a span of milliseconds. */
- var HOT_COUNT = 800,
- HOT_SPAN = 16;
-
- /** Used to indicate the type of lazy iteratees. */
- var LAZY_FILTER_FLAG = 1,
- LAZY_MAP_FLAG = 2,
- LAZY_WHILE_FLAG = 3;
-
- /** Used as references for various `Number` constants. */
- var INFINITY = 1 / 0,
- MAX_SAFE_INTEGER = 9007199254740991,
- MAX_INTEGER = 1.7976931348623157e+308,
- NAN = 0 / 0;
-
- /** Used as references for the maximum length and index of an array. */
- var MAX_ARRAY_LENGTH = 4294967295,
- MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
- HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
-
- /** Used to associate wrap methods with their bit flags. */
- var wrapFlags = [
- ['ary', WRAP_ARY_FLAG],
- ['bind', WRAP_BIND_FLAG],
- ['bindKey', WRAP_BIND_KEY_FLAG],
- ['curry', WRAP_CURRY_FLAG],
- ['curryRight', WRAP_CURRY_RIGHT_FLAG],
- ['flip', WRAP_FLIP_FLAG],
- ['partial', WRAP_PARTIAL_FLAG],
- ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
- ['rearg', WRAP_REARG_FLAG]
- ];
-
- /** `Object#toString` result references. */
- var argsTag = '[object Arguments]',
- arrayTag = '[object Array]',
- asyncTag = '[object AsyncFunction]',
- boolTag = '[object Boolean]',
- dateTag = '[object Date]',
- domExcTag = '[object DOMException]',
- errorTag = '[object Error]',
- funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]',
- mapTag = '[object Map]',
- numberTag = '[object Number]',
- nullTag = '[object Null]',
- objectTag = '[object Object]',
- promiseTag = '[object Promise]',
- proxyTag = '[object Proxy]',
- regexpTag = '[object RegExp]',
- setTag = '[object Set]',
- stringTag = '[object String]',
- symbolTag = '[object Symbol]',
- undefinedTag = '[object Undefined]',
- weakMapTag = '[object WeakMap]',
- weakSetTag = '[object WeakSet]';
-
- var arrayBufferTag = '[object ArrayBuffer]',
- dataViewTag = '[object DataView]',
- float32Tag = '[object Float32Array]',
- float64Tag = '[object Float64Array]',
- int8Tag = '[object Int8Array]',
- int16Tag = '[object Int16Array]',
- int32Tag = '[object Int32Array]',
- uint8Tag = '[object Uint8Array]',
- uint8ClampedTag = '[object Uint8ClampedArray]',
- uint16Tag = '[object Uint16Array]',
- uint32Tag = '[object Uint32Array]';
-
- /** Used to match empty string literals in compiled template source. */
- var reEmptyStringLeading = /\b__p \+= '';/g,
- reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
- reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
-
- /** Used to match HTML entities and HTML characters. */
- var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,
- reUnescapedHtml = /[&<>"']/g,
- reHasEscapedHtml = RegExp(reEscapedHtml.source),
- reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
-
- /** Used to match template delimiters. */
- var reEscape = /<%-([\s\S]+?)%>/g,
- reEvaluate = /<%([\s\S]+?)%>/g,
- reInterpolate = /<%=([\s\S]+?)%>/g;
-
- /** Used to match property names within property paths. */
- var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
- reIsPlainProp = /^\w*$/,
- rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
-
- /**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
- */
- var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
- reHasRegExpChar = RegExp(reRegExpChar.source);
-
- /** Used to match leading and trailing whitespace. */
- var reTrim = /^\s+|\s+$/g,
- reTrimStart = /^\s+/,
- reTrimEnd = /\s+$/;
-
- /** Used to match wrap detail comments. */
- var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
- reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
- reSplitDetails = /,? & /;
-
- /** Used to match words composed of alphanumeric characters. */
- var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
-
- /** Used to match backslashes in property paths. */
- var reEscapeChar = /\\(\\)?/g;
-
- /**
- * Used to match
- * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
- */
- var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
-
- /** Used to match `RegExp` flags from their coerced string values. */
- var reFlags = /\w*$/;
-
- /** Used to detect bad signed hexadecimal string values. */
- var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
-
- /** Used to detect binary string values. */
- var reIsBinary = /^0b[01]+$/i;
-
- /** Used to detect host constructors (Safari). */
- var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
- /** Used to detect octal string values. */
- var reIsOctal = /^0o[0-7]+$/i;
-
- /** Used to detect unsigned integer values. */
- var reIsUint = /^(?:0|[1-9]\d*)$/;
-
- /** Used to match Latin Unicode letters (excluding mathematical operators). */
- var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
-
- /** Used to ensure capturing order of template delimiters. */
- var reNoMatch = /($^)/;
-
- /** Used to match unescaped characters in compiled string literals. */
- var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
-
- /** Used to compose unicode character classes. */
- var rsAstralRange = '\\ud800-\\udfff',
- rsComboMarksRange = '\\u0300-\\u036f',
- reComboHalfMarksRange = '\\ufe20-\\ufe2f',
- rsComboSymbolsRange = '\\u20d0-\\u20ff',
- rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
- rsDingbatRange = '\\u2700-\\u27bf',
- rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
- rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
- rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
- rsPunctuationRange = '\\u2000-\\u206f',
- rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000',
- rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
- rsVarRange = '\\ufe0e\\ufe0f',
- rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
-
- /** Used to compose unicode capture groups. */
- var rsApos = "['\u2019]",
- rsAstral = '[' + rsAstralRange + ']',
- rsBreak = '[' + rsBreakRange + ']',
- rsCombo = '[' + rsComboRange + ']',
- rsDigits = '\\d+',
- rsDingbat = '[' + rsDingbatRange + ']',
- rsLower = '[' + rsLowerRange + ']',
- rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
- rsFitz = '\\ud83c[\\udffb-\\udfff]',
- rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
- rsNonAstral = '[^' + rsAstralRange + ']',
- rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
- rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
- rsUpper = '[' + rsUpperRange + ']',
- rsZWJ = '\\u200d';
-
- /** Used to compose unicode regexes. */
- var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
- rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
- rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
- rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
- reOptMod = rsModifier + '?',
- rsOptVar = '[' + rsVarRange + ']?',
- rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
- rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
- rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
- rsSeq = rsOptVar + reOptMod + rsOptJoin,
- rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,
- rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
-
- /** Used to match apostrophes. */
- var reApos = RegExp(rsApos, 'g');
-
- /**
- * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
- * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
- */
- var reComboMark = RegExp(rsCombo, 'g');
-
- /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
- var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
-
- /** Used to match complex or compound words. */
- var reUnicodeWord = RegExp([
- rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
- rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
- rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
- rsUpper + '+' + rsOptContrUpper,
- rsOrdUpper,
- rsOrdLower,
- rsDigits,
- rsEmoji
- ].join('|'), 'g');
-
- /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
- var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');
-
- /** Used to detect strings that need a more robust regexp to match words. */
- var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
-
- /** Used to assign default `context` object properties. */
- var contextProps = [
- 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',
- 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',
- 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',
- 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
- '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'
- ];
-
- /** Used to make template sourceURLs easier to identify. */
- var templateCounter = -1;
-
- /** Used to identify `toStringTag` values of typed arrays. */
- var typedArrayTags = {};
- typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
- typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
- typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
- typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
- typedArrayTags[uint32Tag] = true;
- typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
- typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
- typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
- typedArrayTags[errorTag] = typedArrayTags[funcTag] =
- typedArrayTags[mapTag] = typedArrayTags[numberTag] =
- typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
- typedArrayTags[setTag] = typedArrayTags[stringTag] =
- typedArrayTags[weakMapTag] = false;
-
- /** Used to identify `toStringTag` values supported by `_.clone`. */
- var cloneableTags = {};
- cloneableTags[argsTag] = cloneableTags[arrayTag] =
- cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
- cloneableTags[boolTag] = cloneableTags[dateTag] =
- cloneableTags[float32Tag] = cloneableTags[float64Tag] =
- cloneableTags[int8Tag] = cloneableTags[int16Tag] =
- cloneableTags[int32Tag] = cloneableTags[mapTag] =
- cloneableTags[numberTag] = cloneableTags[objectTag] =
- cloneableTags[regexpTag] = cloneableTags[setTag] =
- cloneableTags[stringTag] = cloneableTags[symbolTag] =
- cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
- cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
- cloneableTags[errorTag] = cloneableTags[funcTag] =
- cloneableTags[weakMapTag] = false;
-
- /** Used to map Latin Unicode letters to basic Latin letters. */
- var deburredLetters = {
- // Latin-1 Supplement block.
- '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
- '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
- '\xc7': 'C', '\xe7': 'c',
- '\xd0': 'D', '\xf0': 'd',
- '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
- '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
- '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
- '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i',
- '\xd1': 'N', '\xf1': 'n',
- '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
- '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
- '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
- '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
- '\xdd': 'Y', '\xfd': 'y', '\xff': 'y',
- '\xc6': 'Ae', '\xe6': 'ae',
- '\xde': 'Th', '\xfe': 'th',
- '\xdf': 'ss',
- // Latin Extended-A block.
- '\u0100': 'A', '\u0102': 'A', '\u0104': 'A',
- '\u0101': 'a', '\u0103': 'a', '\u0105': 'a',
- '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
- '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
- '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
- '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
- '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
- '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
- '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
- '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
- '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
- '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
- '\u0134': 'J', '\u0135': 'j',
- '\u0136': 'K', '\u0137': 'k', '\u0138': 'k',
- '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
- '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
- '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
- '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
- '\u014c': 'O', '\u014e': 'O', '\u0150': 'O',
- '\u014d': 'o', '\u014f': 'o', '\u0151': 'o',
- '\u0154': 'R', '\u0156': 'R', '\u0158': 'R',
- '\u0155': 'r', '\u0157': 'r', '\u0159': 'r',
- '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
- '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's',
- '\u0162': 'T', '\u0164': 'T', '\u0166': 'T',
- '\u0163': 't', '\u0165': 't', '\u0167': 't',
- '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
- '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
- '\u0174': 'W', '\u0175': 'w',
- '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y',
- '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z',
- '\u017a': 'z', '\u017c': 'z', '\u017e': 'z',
- '\u0132': 'IJ', '\u0133': 'ij',
- '\u0152': 'Oe', '\u0153': 'oe',
- '\u0149': "'n", '\u017f': 's'
- };
-
- /** Used to map characters to HTML entities. */
- var htmlEscapes = {
- '&': '&amp;',
- '<': '&lt;',
- '>': '&gt;',
- '"': '&quot;',
- "'": '&#39;'
- };
-
- /** Used to map HTML entities to characters. */
- var htmlUnescapes = {
- '&amp;': '&',
- '&lt;': '<',
- '&gt;': '>',
- '&quot;': '"',
- '&#39;': "'"
- };
-
- /** Used to escape characters for inclusion in compiled string literals. */
- var stringEscapes = {
- '\\': '\\',
- "'": "'",
- '\n': 'n',
- '\r': 'r',
- '\u2028': 'u2028',
- '\u2029': 'u2029'
- };
-
- /** Built-in method references without a dependency on `root`. */
- var freeParseFloat = parseFloat,
- freeParseInt = parseInt;
-
- /** Detect free variable `global` from Node.js. */
- var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
- /** Detect free variable `self`. */
- var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
- /** Used as a reference to the global object. */
- var root = freeGlobal || freeSelf || Function('return this')();
-
- /** Detect free variable `exports`. */
- var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
-
- /** Detect free variable `module`. */
- var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
-
- /** Detect the popular CommonJS extension `module.exports`. */
- var moduleExports = freeModule && freeModule.exports === freeExports;
-
- /** Detect free variable `process` from Node.js. */
- var freeProcess = moduleExports && freeGlobal.process;
-
- /** Used to access faster Node.js helpers. */
- var nodeUtil = (function() {
- try {
- // Use `util.types` for Node.js 10+.
- var types = freeModule && freeModule.require && freeModule.require('util').types;
-
- if (types) {
- return types;
- }
-
- // Legacy `process.binding('util')` for Node.js < 10.
- return freeProcess && freeProcess.binding && freeProcess.binding('util');
- } catch (e) {}
- }());
-
- /* Node.js helper references. */
- var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,
- nodeIsDate = nodeUtil && nodeUtil.isDate,
- nodeIsMap = nodeUtil && nodeUtil.isMap,
- nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,
- nodeIsSet = nodeUtil && nodeUtil.isSet,
- nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
-
- /*--------------------------------------------------------------------------*/
-
- /**
- * A faster alternative to `Function#apply`, this function invokes `func`
- * with the `this` binding of `thisArg` and the arguments of `args`.
- *
- * @private
- * @param {Function} func The function to invoke.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {Array} args The arguments to invoke `func` with.
- * @returns {*} Returns the result of `func`.
- */
- function apply(func, thisArg, args) {
- switch (args.length) {
- case 0: return func.call(thisArg);
- case 1: return func.call(thisArg, args[0]);
- case 2: return func.call(thisArg, args[0], args[1]);
- case 3: return func.call(thisArg, args[0], args[1], args[2]);
- }
- return func.apply(thisArg, args);
- }
-
- /**
- * A specialized version of `baseAggregator` for arrays.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} setter The function to set `accumulator` values.
- * @param {Function} iteratee The iteratee to transform keys.
- * @param {Object} accumulator The initial aggregated object.
- * @returns {Function} Returns `accumulator`.
- */
- function arrayAggregator(array, setter, iteratee, accumulator) {
- var index = -1,
- length = array == null ? 0 : array.length;
-
- while (++index < length) {
- var value = array[index];
- setter(accumulator, value, iteratee(value), array);
- }
- return accumulator;
- }
-
- /**
- * A specialized version of `_.forEach` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns `array`.
- */
- function arrayEach(array, iteratee) {
- var index = -1,
- length = array == null ? 0 : array.length;
-
- while (++index < length) {
- if (iteratee(array[index], index, array) === false) {
- break;
- }
- }
- return array;
- }
-
- /**
- * A specialized version of `_.forEachRight` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns `array`.
- */
- function arrayEachRight(array, iteratee) {
- var length = array == null ? 0 : array.length;
-
- while (length--) {
- if (iteratee(array[length], length, array) === false) {
- break;
- }
- }
- return array;
- }
-
- /**
- * A specialized version of `_.every` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if all elements pass the predicate check,
- * else `false`.
- */
- function arrayEvery(array, predicate) {
- var index = -1,
- length = array == null ? 0 : array.length;
-
- while (++index < length) {
- if (!predicate(array[index], index, array)) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * A specialized version of `_.filter` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- */
- function arrayFilter(array, predicate) {
- var index = -1,
- length = array == null ? 0 : array.length,
- resIndex = 0,
- result = [];
-
- while (++index < length) {
- var value = array[index];
- if (predicate(value, index, array)) {
- result[resIndex++] = value;
- }
- }
- return result;
- }
-
- /**
- * A specialized version of `_.includes` for arrays without support for
- * specifying an index to search from.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
- function arrayIncludes(array, value) {
- var length = array == null ? 0 : array.length;
- return !!length && baseIndexOf(array, value, 0) > -1;
- }
-
- /**
- * This function is like `arrayIncludes` except that it accepts a comparator.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @param {Function} comparator The comparator invoked per element.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
- function arrayIncludesWith(array, value, comparator) {
- var index = -1,
- length = array == null ? 0 : array.length;
-
- while (++index < length) {
- if (comparator(value, array[index])) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * A specialized version of `_.map` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- */
- function arrayMap(array, iteratee) {
- var index = -1,
- length = array == null ? 0 : array.length,
- result = Array(length);
-
- while (++index < length) {
- result[index] = iteratee(array[index], index, array);
- }
- return result;
- }
-
- /**
- * Appends the elements of `values` to `array`.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {Array} values The values to append.
- * @returns {Array} Returns `array`.
- */
- function arrayPush(array, values) {
- var index = -1,
- length = values.length,
- offset = array.length;
-
- while (++index < length) {
- array[offset + index] = values[index];
- }
- return array;
- }
-
- /**
- * A specialized version of `_.reduce` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @param {boolean} [initAccum] Specify using the first element of `array` as
- * the initial value.
- * @returns {*} Returns the accumulated value.
- */
- function arrayReduce(array, iteratee, accumulator, initAccum) {
- var index = -1,
- length = array == null ? 0 : array.length;
-
- if (initAccum && length) {
- accumulator = array[++index];
- }
- while (++index < length) {
- accumulator = iteratee(accumulator, array[index], index, array);
- }
- return accumulator;
- }
-
- /**
- * A specialized version of `_.reduceRight` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @param {boolean} [initAccum] Specify using the last element of `array` as
- * the initial value.
- * @returns {*} Returns the accumulated value.
- */
- function arrayReduceRight(array, iteratee, accumulator, initAccum) {
- var length = array == null ? 0 : array.length;
- if (initAccum && length) {
- accumulator = array[--length];
- }
- while (length--) {
- accumulator = iteratee(accumulator, array[length], length, array);
- }
- return accumulator;
- }
-
- /**
- * A specialized version of `_.some` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- * else `false`.
- */
- function arraySome(array, predicate) {
- var index = -1,
- length = array == null ? 0 : array.length;
-
- while (++index < length) {
- if (predicate(array[index], index, array)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Gets the size of an ASCII `string`.
- *
- * @private
- * @param {string} string The string inspect.
- * @returns {number} Returns the string size.
- */
- var asciiSize = baseProperty('length');
-
- /**
- * Converts an ASCII `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
- */
- function asciiToArray(string) {
- return string.split('');
- }
-
- /**
- * Splits an ASCII `string` into an array of its words.
- *
- * @private
- * @param {string} The string to inspect.
- * @returns {Array} Returns the words of `string`.
- */
- function asciiWords(string) {
- return string.match(reAsciiWord) || [];
- }
-
- /**
- * The base implementation of methods like `_.findKey` and `_.findLastKey`,
- * without support for iteratee shorthands, which iterates over `collection`
- * using `eachFunc`.
- *
- * @private
- * @param {Array|Object} collection The collection to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {Function} eachFunc The function to iterate over `collection`.
- * @returns {*} Returns the found element or its key, else `undefined`.
- */
- function baseFindKey(collection, predicate, eachFunc) {
- var result;
- eachFunc(collection, function(value, key, collection) {
- if (predicate(value, key, collection)) {
- result = key;
- return false;
- }
- });
- return result;
- }
-
- /**
- * The base implementation of `_.findIndex` and `_.findLastIndex` without
- * support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {number} fromIndex The index to search from.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
- function baseFindIndex(array, predicate, fromIndex, fromRight) {
- var length = array.length,
- index = fromIndex + (fromRight ? 1 : -1);
-
- while ((fromRight ? index-- : ++index < length)) {
- if (predicate(array[index], index, array)) {
- return index;
- }
- }
- return -1;
- }
-
- /**
- * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
- function baseIndexOf(array, value, fromIndex) {
- return value === value
- ? strictIndexOf(array, value, fromIndex)
- : baseFindIndex(array, baseIsNaN, fromIndex);
- }
-
- /**
- * This function is like `baseIndexOf` except that it accepts a comparator.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @param {Function} comparator The comparator invoked per element.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
- function baseIndexOfWith(array, value, fromIndex, comparator) {
- var index = fromIndex - 1,
- length = array.length;
-
- while (++index < length) {
- if (comparator(array[index], value)) {
- return index;
- }
- }
- return -1;
- }
-
- /**
- * The base implementation of `_.isNaN` without support for number objects.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
- */
- function baseIsNaN(value) {
- return value !== value;
- }
-
- /**
- * The base implementation of `_.mean` and `_.meanBy` without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {number} Returns the mean.
- */
- function baseMean(array, iteratee) {
- var length = array == null ? 0 : array.length;
- return length ? (baseSum(array, iteratee) / length) : NAN;
- }
-
- /**
- * The base implementation of `_.property` without support for deep paths.
- *
- * @private
- * @param {string} key The key of the property to get.
- * @returns {Function} Returns the new accessor function.
- */
- function baseProperty(key) {
- return function(object) {
- return object == null ? undefined : object[key];
- };
- }
-
- /**
- * The base implementation of `_.propertyOf` without support for deep paths.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Function} Returns the new accessor function.
- */
- function basePropertyOf(object) {
- return function(key) {
- return object == null ? undefined : object[key];
- };
- }
-
- /**
- * The base implementation of `_.reduce` and `_.reduceRight`, without support
- * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {*} accumulator The initial value.
- * @param {boolean} initAccum Specify using the first or last element of
- * `collection` as the initial value.
- * @param {Function} eachFunc The function to iterate over `collection`.
- * @returns {*} Returns the accumulated value.
- */
- function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
- eachFunc(collection, function(value, index, collection) {
- accumulator = initAccum
- ? (initAccum = false, value)
- : iteratee(accumulator, value, index, collection);
- });
- return accumulator;
- }
-
- /**
- * The base implementation of `_.sortBy` which uses `comparer` to define the
- * sort order of `array` and replaces criteria objects with their corresponding
- * values.
- *
- * @private
- * @param {Array} array The array to sort.
- * @param {Function} comparer The function to define sort order.
- * @returns {Array} Returns `array`.
- */
- function baseSortBy(array, comparer) {
- var length = array.length;
-
- array.sort(comparer);
- while (length--) {
- array[length] = array[length].value;
- }
- return array;
- }
-
- /**
- * The base implementation of `_.sum` and `_.sumBy` without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {number} Returns the sum.
- */
- function baseSum(array, iteratee) {
- var result,
- index = -1,
- length = array.length;
-
- while (++index < length) {
- var current = iteratee(array[index]);
- if (current !== undefined) {
- result = result === undefined ? current : (result + current);
- }
- }
- return result;
- }
-
- /**
- * The base implementation of `_.times` without support for iteratee shorthands
- * or max array length checks.
- *
- * @private
- * @param {number} n The number of times to invoke `iteratee`.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the array of results.
- */
- function baseTimes(n, iteratee) {
- var index = -1,
- result = Array(n);
-
- while (++index < n) {
- result[index] = iteratee(index);
- }
- return result;
- }
-
- /**
- * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
- * of key-value pairs for `object` corresponding to the property names of `props`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array} props The property names to get values for.
- * @returns {Object} Returns the key-value pairs.
- */
- function baseToPairs(object, props) {
- return arrayMap(props, function(key) {
- return [key, object[key]];
- });
- }
-
- /**
- * The base implementation of `_.unary` without support for storing metadata.
- *
- * @private
- * @param {Function} func The function to cap arguments for.
- * @returns {Function} Returns the new capped function.
- */
- function baseUnary(func) {
- return function(value) {
- return func(value);
- };
- }
-
- /**
- * The base implementation of `_.values` and `_.valuesIn` which creates an
- * array of `object` property values corresponding to the property names
- * of `props`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array} props The property names to get values for.
- * @returns {Object} Returns the array of property values.
- */
- function baseValues(object, props) {
- return arrayMap(props, function(key) {
- return object[key];
- });
- }
-
- /**
- * Checks if a `cache` value for `key` exists.
- *
- * @private
- * @param {Object} cache The cache to query.
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- function cacheHas(cache, key) {
- return cache.has(key);
- }
-
- /**
- * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
- * that is not found in the character symbols.
- *
- * @private
- * @param {Array} strSymbols The string symbols to inspect.
- * @param {Array} chrSymbols The character symbols to find.
- * @returns {number} Returns the index of the first unmatched string symbol.
- */
- function charsStartIndex(strSymbols, chrSymbols) {
- var index = -1,
- length = strSymbols.length;
-
- while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
- return index;
- }
-
- /**
- * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
- * that is not found in the character symbols.
- *
- * @private
- * @param {Array} strSymbols The string symbols to inspect.
- * @param {Array} chrSymbols The character symbols to find.
- * @returns {number} Returns the index of the last unmatched string symbol.
- */
- function charsEndIndex(strSymbols, chrSymbols) {
- var index = strSymbols.length;
-
- while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
- return index;
- }
-
- /**
- * Gets the number of `placeholder` occurrences in `array`.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} placeholder The placeholder to search for.
- * @returns {number} Returns the placeholder count.
- */
- function countHolders(array, placeholder) {
- var length = array.length,
- result = 0;
-
- while (length--) {
- if (array[length] === placeholder) {
- ++result;
- }
- }
- return result;
- }
-
- /**
- * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
- * letters to basic Latin letters.
- *
- * @private
- * @param {string} letter The matched letter to deburr.
- * @returns {string} Returns the deburred letter.
- */
- var deburrLetter = basePropertyOf(deburredLetters);
-
- /**
- * Used by `_.escape` to convert characters to HTML entities.
- *
- * @private
- * @param {string} chr The matched character to escape.
- * @returns {string} Returns the escaped character.
- */
- var escapeHtmlChar = basePropertyOf(htmlEscapes);
-
- /**
- * Used by `_.template` to escape characters for inclusion in compiled string literals.
- *
- * @private
- * @param {string} chr The matched character to escape.
- * @returns {string} Returns the escaped character.
- */
- function escapeStringChar(chr) {
- return '\\' + stringEscapes[chr];
- }
-
- /**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
- function getValue(object, key) {
- return object == null ? undefined : object[key];
- }
-
- /**
- * Checks if `string` contains Unicode symbols.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {boolean} Returns `true` if a symbol is found, else `false`.
- */
- function hasUnicode(string) {
- return reHasUnicode.test(string);
- }
-
- /**
- * Checks if `string` contains a word composed of Unicode symbols.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {boolean} Returns `true` if a word is found, else `false`.
- */
- function hasUnicodeWord(string) {
- return reHasUnicodeWord.test(string);
- }
-
- /**
- * Converts `iterator` to an array.
- *
- * @private
- * @param {Object} iterator The iterator to convert.
- * @returns {Array} Returns the converted array.
- */
- function iteratorToArray(iterator) {
- var data,
- result = [];
-
- while (!(data = iterator.next()).done) {
- result.push(data.value);
- }
- return result;
- }
-
- /**
- * Converts `map` to its key-value pairs.
- *
- * @private
- * @param {Object} map The map to convert.
- * @returns {Array} Returns the key-value pairs.
- */
- function mapToArray(map) {
- var index = -1,
- result = Array(map.size);
-
- map.forEach(function(value, key) {
- result[++index] = [key, value];
- });
- return result;
- }
-
- /**
- * Creates a unary function that invokes `func` with its argument transformed.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {Function} transform The argument transform.
- * @returns {Function} Returns the new function.
- */
- function overArg(func, transform) {
- return function(arg) {
- return func(transform(arg));
- };
- }
-
- /**
- * Replaces all `placeholder` elements in `array` with an internal placeholder
- * and returns an array of their indexes.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {*} placeholder The placeholder to replace.
- * @returns {Array} Returns the new array of placeholder indexes.
- */
- function replaceHolders(array, placeholder) {
- var index = -1,
- length = array.length,
- resIndex = 0,
- result = [];
-
- while (++index < length) {
- var value = array[index];
- if (value === placeholder || value === PLACEHOLDER) {
- array[index] = PLACEHOLDER;
- result[resIndex++] = index;
- }
- }
- return result;
- }
-
- /**
- * Converts `set` to an array of its values.
- *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the values.
- */
- function setToArray(set) {
- var index = -1,
- result = Array(set.size);
-
- set.forEach(function(value) {
- result[++index] = value;
- });
- return result;
- }
-
- /**
- * Converts `set` to its value-value pairs.
- *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the value-value pairs.
- */
- function setToPairs(set) {
- var index = -1,
- result = Array(set.size);
-
- set.forEach(function(value) {
- result[++index] = [value, value];
- });
- return result;
- }
-
- /**
- * A specialized version of `_.indexOf` which performs strict equality
- * comparisons of values, i.e. `===`.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
- function strictIndexOf(array, value, fromIndex) {
- var index = fromIndex - 1,
- length = array.length;
-
- while (++index < length) {
- if (array[index] === value) {
- return index;
- }
- }
- return -1;
- }
-
- /**
- * A specialized version of `_.lastIndexOf` which performs strict equality
- * comparisons of values, i.e. `===`.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
- function strictLastIndexOf(array, value, fromIndex) {
- var index = fromIndex + 1;
- while (index--) {
- if (array[index] === value) {
- return index;
- }
- }
- return index;
- }
-
- /**
- * Gets the number of symbols in `string`.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {number} Returns the string size.
- */
- function stringSize(string) {
- return hasUnicode(string)
- ? unicodeSize(string)
- : asciiSize(string);
- }
-
- /**
- * Converts `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
- */
- function stringToArray(string) {
- return hasUnicode(string)
- ? unicodeToArray(string)
- : asciiToArray(string);
- }
-
- /**
- * Used by `_.unescape` to convert HTML entities to characters.
- *
- * @private
- * @param {string} chr The matched character to unescape.
- * @returns {string} Returns the unescaped character.
- */
- var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
-
- /**
- * Gets the size of a Unicode `string`.
- *
- * @private
- * @param {string} string The string inspect.
- * @returns {number} Returns the string size.
- */
- function unicodeSize(string) {
- var result = reUnicode.lastIndex = 0;
- while (reUnicode.test(string)) {
- ++result;
- }
- return result;
- }
-
- /**
- * Converts a Unicode `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
- */
- function unicodeToArray(string) {
- return string.match(reUnicode) || [];
- }
-
- /**
- * Splits a Unicode `string` into an array of its words.
- *
- * @private
- * @param {string} The string to inspect.
- * @returns {Array} Returns the words of `string`.
- */
- function unicodeWords(string) {
- return string.match(reUnicodeWord) || [];
- }
-
- /*--------------------------------------------------------------------------*/
-
- /**
- * Create a new pristine `lodash` function using the `context` object.
- *
- * @static
- * @memberOf _
- * @since 1.1.0
- * @category Util
- * @param {Object} [context=root] The context object.
- * @returns {Function} Returns a new `lodash` function.
- * @example
- *
- * _.mixin({ 'foo': _.constant('foo') });
- *
- * var lodash = _.runInContext();
- * lodash.mixin({ 'bar': lodash.constant('bar') });
- *
- * _.isFunction(_.foo);
- * // => true
- * _.isFunction(_.bar);
- * // => false
- *
- * lodash.isFunction(lodash.foo);
- * // => false
- * lodash.isFunction(lodash.bar);
- * // => true
- *
- * // Create a suped-up `defer` in Node.js.
- * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
- */
- var runInContext = (function runInContext(context) {
- context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
-
- /** Built-in constructor references. */
- var Array = context.Array,
- Date = context.Date,
- Error = context.Error,
- Function = context.Function,
- Math = context.Math,
- Object = context.Object,
- RegExp = context.RegExp,
- String = context.String,
- TypeError = context.TypeError;
-
- /** Used for built-in method references. */
- var arrayProto = Array.prototype,
- funcProto = Function.prototype,
- objectProto = Object.prototype;
-
- /** Used to detect overreaching core-js shims. */
- var coreJsData = context['__core-js_shared__'];
-
- /** Used to resolve the decompiled source of functions. */
- var funcToString = funcProto.toString;
-
- /** Used to check objects for own properties. */
- var hasOwnProperty = objectProto.hasOwnProperty;
-
- /** Used to generate unique IDs. */
- var idCounter = 0;
-
- /** Used to detect methods masquerading as native. */
- var maskSrcKey = (function() {
- var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
- return uid ? ('Symbol(src)_1.' + uid) : '';
- }());
-
- /**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
- var nativeObjectToString = objectProto.toString;
-
- /** Used to infer the `Object` constructor. */
- var objectCtorString = funcToString.call(Object);
-
- /** Used to restore the original `_` reference in `_.noConflict`. */
- var oldDash = root._;
-
- /** Used to detect if a method is native. */
- var reIsNative = RegExp('^' +
- funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
- );
-
- /** Built-in value references. */
- var Buffer = moduleExports ? context.Buffer : undefined,
- Symbol = context.Symbol,
- Uint8Array = context.Uint8Array,
- allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,
- getPrototype = overArg(Object.getPrototypeOf, Object),
- objectCreate = Object.create,
- propertyIsEnumerable = objectProto.propertyIsEnumerable,
- splice = arrayProto.splice,
- spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,
- symIterator = Symbol ? Symbol.iterator : undefined,
- symToStringTag = Symbol ? Symbol.toStringTag : undefined;
-
- var defineProperty = (function() {
- try {
- var func = getNative(Object, 'defineProperty');
- func({}, '', {});
- return func;
- } catch (e) {}
- }());
-
- /** Mocked built-ins. */
- var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,
- ctxNow = Date && Date.now !== root.Date.now && Date.now,
- ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
-
- /* Built-in method references for those with the same name as other `lodash` methods. */
- var nativeCeil = Math.ceil,
- nativeFloor = Math.floor,
- nativeGetSymbols = Object.getOwnPropertySymbols,
- nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
- nativeIsFinite = context.isFinite,
- nativeJoin = arrayProto.join,
- nativeKeys = overArg(Object.keys, Object),
- nativeMax = Math.max,
- nativeMin = Math.min,
- nativeNow = Date.now,
- nativeParseInt = context.parseInt,
- nativeRandom = Math.random,
- nativeReverse = arrayProto.reverse;
-
- /* Built-in method references that are verified to be native. */
- var DataView = getNative(context, 'DataView'),
- Map = getNative(context, 'Map'),
- Promise = getNative(context, 'Promise'),
- Set = getNative(context, 'Set'),
- WeakMap = getNative(context, 'WeakMap'),
- nativeCreate = getNative(Object, 'create');
-
- /** Used to store function metadata. */
- var metaMap = WeakMap && new WeakMap;
-
- /** Used to lookup unminified function names. */
- var realNames = {};
-
- /** Used to detect maps, sets, and weakmaps. */
- var dataViewCtorString = toSource(DataView),
- mapCtorString = toSource(Map),
- promiseCtorString = toSource(Promise),
- setCtorString = toSource(Set),
- weakMapCtorString = toSource(WeakMap);
-
- /** Used to convert symbols to primitives and strings. */
- var symbolProto = Symbol ? Symbol.prototype : undefined,
- symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
- symbolToString = symbolProto ? symbolProto.toString : undefined;
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Creates a `lodash` object which wraps `value` to enable implicit method
- * chain sequences. Methods that operate on and return arrays, collections,
- * and functions can be chained together. Methods that retrieve a single value
- * or may return a primitive value will automatically end the chain sequence
- * and return the unwrapped value. Otherwise, the value must be unwrapped
- * with `_#value`.
- *
- * Explicit chain sequences, which must be unwrapped with `_#value`, may be
- * enabled using `_.chain`.
- *
- * The execution of chained methods is lazy, that is, it's deferred until
- * `_#value` is implicitly or explicitly called.
- *
- * Lazy evaluation allows several methods to support shortcut fusion.
- * Shortcut fusion is an optimization to merge iteratee calls; this avoids
- * the creation of intermediate arrays and can greatly reduce the number of
- * iteratee executions. Sections of a chain sequence qualify for shortcut
- * fusion if the section is applied to an array and iteratees accept only
- * one argument. The heuristic for whether a section qualifies for shortcut
- * fusion is subject to change.
- *
- * Chaining is supported in custom builds as long as the `_#value` method is
- * directly or indirectly included in the build.
- *
- * In addition to lodash methods, wrappers have `Array` and `String` methods.
- *
- * The wrapper `Array` methods are:
- * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
- *
- * The wrapper `String` methods are:
- * `replace` and `split`
- *
- * The wrapper methods that support shortcut fusion are:
- * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
- * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
- * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
- *
- * The chainable wrapper methods are:
- * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
- * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
- * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
- * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
- * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
- * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
- * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
- * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
- * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
- * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
- * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
- * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
- * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
- * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
- * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
- * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
- * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
- * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
- * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
- * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
- * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
- * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
- * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
- * `zipObject`, `zipObjectDeep`, and `zipWith`
- *
- * The wrapper methods that are **not** chainable by default are:
- * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
- * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
- * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
- * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
- * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
- * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
- * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
- * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
- * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
- * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
- * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
- * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
- * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
- * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
- * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
- * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
- * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
- * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
- * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
- * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
- * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
- * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
- * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
- * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
- * `upperFirst`, `value`, and `words`
- *
- * @name _
- * @constructor
- * @category Seq
- * @param {*} value The value to wrap in a `lodash` instance.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * function square(n) {
- * return n * n;
- * }
- *
- * var wrapped = _([1, 2, 3]);
- *
- * // Returns an unwrapped value.
- * wrapped.reduce(_.add);
- * // => 6
- *
- * // Returns a wrapped value.
- * var squares = wrapped.map(square);
- *
- * _.isArray(squares);
- * // => false
- *
- * _.isArray(squares.value());
- * // => true
- */
- function lodash(value) {
- if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
- if (value instanceof LodashWrapper) {
- return value;
- }
- if (hasOwnProperty.call(value, '__wrapped__')) {
- return wrapperClone(value);
- }
- }
- return new LodashWrapper(value);
- }
-
- /**
- * The base implementation of `_.create` without support for assigning
- * properties to the created object.
- *
- * @private
- * @param {Object} proto The object to inherit from.
- * @returns {Object} Returns the new object.
- */
- var baseCreate = (function() {
- function object() {}
- return function(proto) {
- if (!isObject(proto)) {
- return {};
- }
- if (objectCreate) {
- return objectCreate(proto);
- }
- object.prototype = proto;
- var result = new object;
- object.prototype = undefined;
- return result;
- };
- }());
-
- /**
- * The function whose prototype chain sequence wrappers inherit from.
- *
- * @private
- */
- function baseLodash() {
- // No operation performed.
- }
-
- /**
- * The base constructor for creating `lodash` wrapper objects.
- *
- * @private
- * @param {*} value The value to wrap.
- * @param {boolean} [chainAll] Enable explicit method chain sequences.
- */
- function LodashWrapper(value, chainAll) {
- this.__wrapped__ = value;
- this.__actions__ = [];
- this.__chain__ = !!chainAll;
- this.__index__ = 0;
- this.__values__ = undefined;
- }
-
- /**
- * By default, the template delimiters used by lodash are like those in
- * embedded Ruby (ERB) as well as ES2015 template strings. Change the
- * following template settings to use alternative delimiters.
- *
- * @static
- * @memberOf _
- * @type {Object}
- */
- lodash.templateSettings = {
-
- /**
- * Used to detect `data` property values to be HTML-escaped.
- *
- * @memberOf _.templateSettings
- * @type {RegExp}
- */
- 'escape': reEscape,
-
- /**
- * Used to detect code to be evaluated.
- *
- * @memberOf _.templateSettings
- * @type {RegExp}
- */
- 'evaluate': reEvaluate,
-
- /**
- * Used to detect `data` property values to inject.
- *
- * @memberOf _.templateSettings
- * @type {RegExp}
- */
- 'interpolate': reInterpolate,
-
- /**
- * Used to reference the data object in the template text.
- *
- * @memberOf _.templateSettings
- * @type {string}
- */
- 'variable': '',
-
- /**
- * Used to import variables into the compiled template.
- *
- * @memberOf _.templateSettings
- * @type {Object}
- */
- 'imports': {
-
- /**
- * A reference to the `lodash` function.
- *
- * @memberOf _.templateSettings.imports
- * @type {Function}
- */
- '_': lodash
- }
- };
-
- // Ensure wrappers are instances of `baseLodash`.
- lodash.prototype = baseLodash.prototype;
- lodash.prototype.constructor = lodash;
-
- LodashWrapper.prototype = baseCreate(baseLodash.prototype);
- LodashWrapper.prototype.constructor = LodashWrapper;
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
- *
- * @private
- * @constructor
- * @param {*} value The value to wrap.
- */
- function LazyWrapper(value) {
- this.__wrapped__ = value;
- this.__actions__ = [];
- this.__dir__ = 1;
- this.__filtered__ = false;
- this.__iteratees__ = [];
- this.__takeCount__ = MAX_ARRAY_LENGTH;
- this.__views__ = [];
- }
-
- /**
- * Creates a clone of the lazy wrapper object.
- *
- * @private
- * @name clone
- * @memberOf LazyWrapper
- * @returns {Object} Returns the cloned `LazyWrapper` object.
- */
- function lazyClone() {
- var result = new LazyWrapper(this.__wrapped__);
- result.__actions__ = copyArray(this.__actions__);
- result.__dir__ = this.__dir__;
- result.__filtered__ = this.__filtered__;
- result.__iteratees__ = copyArray(this.__iteratees__);
- result.__takeCount__ = this.__takeCount__;
- result.__views__ = copyArray(this.__views__);
- return result;
- }
-
- /**
- * Reverses the direction of lazy iteration.
- *
- * @private
- * @name reverse
- * @memberOf LazyWrapper
- * @returns {Object} Returns the new reversed `LazyWrapper` object.
- */
- function lazyReverse() {
- if (this.__filtered__) {
- var result = new LazyWrapper(this);
- result.__dir__ = -1;
- result.__filtered__ = true;
- } else {
- result = this.clone();
- result.__dir__ *= -1;
- }
- return result;
- }
-
- /**
- * Extracts the unwrapped value from its lazy wrapper.
- *
- * @private
- * @name value
- * @memberOf LazyWrapper
- * @returns {*} Returns the unwrapped value.
- */
- function lazyValue() {
- var array = this.__wrapped__.value(),
- dir = this.__dir__,
- isArr = isArray(array),
- isRight = dir < 0,
- arrLength = isArr ? array.length : 0,
- view = getView(0, arrLength, this.__views__),
- start = view.start,
- end = view.end,
- length = end - start,
- index = isRight ? end : (start - 1),
- iteratees = this.__iteratees__,
- iterLength = iteratees.length,
- resIndex = 0,
- takeCount = nativeMin(length, this.__takeCount__);
-
- if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
- return baseWrapperValue(array, this.__actions__);
- }
- var result = [];
-
- outer:
- while (length-- && resIndex < takeCount) {
- index += dir;
-
- var iterIndex = -1,
- value = array[index];
-
- while (++iterIndex < iterLength) {
- var data = iteratees[iterIndex],
- iteratee = data.iteratee,
- type = data.type,
- computed = iteratee(value);
-
- if (type == LAZY_MAP_FLAG) {
- value = computed;
- } else if (!computed) {
- if (type == LAZY_FILTER_FLAG) {
- continue outer;
- } else {
- break outer;
- }
- }
- }
- result[resIndex++] = value;
- }
- return result;
- }
-
- // Ensure `LazyWrapper` is an instance of `baseLodash`.
- LazyWrapper.prototype = baseCreate(baseLodash.prototype);
- LazyWrapper.prototype.constructor = LazyWrapper;
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function Hash(entries) {
- var index = -1,
- length = entries == null ? 0 : entries.length;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
- }
-
- /**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
- function hashClear() {
- this.__data__ = nativeCreate ? nativeCreate(null) : {};
- this.size = 0;
- }
-
- /**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
- function hashDelete(key) {
- var result = this.has(key) && delete this.__data__[key];
- this.size -= result ? 1 : 0;
- return result;
- }
-
- /**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
- function hashGet(key) {
- var data = this.__data__;
- if (nativeCreate) {
- var result = data[key];
- return result === HASH_UNDEFINED ? undefined : result;
- }
- return hasOwnProperty.call(data, key) ? data[key] : undefined;
- }
-
- /**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- function hashHas(key) {
- var data = this.__data__;
- return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
- }
-
- /**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */
- function hashSet(key, value) {
- var data = this.__data__;
- this.size += this.has(key) ? 0 : 1;
- data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
- return this;
- }
-
- // Add methods to `Hash`.
- Hash.prototype.clear = hashClear;
- Hash.prototype['delete'] = hashDelete;
- Hash.prototype.get = hashGet;
- Hash.prototype.has = hashHas;
- Hash.prototype.set = hashSet;
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function ListCache(entries) {
- var index = -1,
- length = entries == null ? 0 : entries.length;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
- }
-
- /**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
- function listCacheClear() {
- this.__data__ = [];
- this.size = 0;
- }
-
- /**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
- function listCacheDelete(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- return false;
- }
- var lastIndex = data.length - 1;
- if (index == lastIndex) {
- data.pop();
- } else {
- splice.call(data, index, 1);
- }
- --this.size;
- return true;
- }
-
- /**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
- function listCacheGet(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- return index < 0 ? undefined : data[index][1];
- }
-
- /**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- function listCacheHas(key) {
- return assocIndexOf(this.__data__, key) > -1;
- }
-
- /**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */
- function listCacheSet(key, value) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- ++this.size;
- data.push([key, value]);
- } else {
- data[index][1] = value;
- }
- return this;
- }
-
- // Add methods to `ListCache`.
- ListCache.prototype.clear = listCacheClear;
- ListCache.prototype['delete'] = listCacheDelete;
- ListCache.prototype.get = listCacheGet;
- ListCache.prototype.has = listCacheHas;
- ListCache.prototype.set = listCacheSet;
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function MapCache(entries) {
- var index = -1,
- length = entries == null ? 0 : entries.length;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
- }
-
- /**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
- function mapCacheClear() {
- this.size = 0;
- this.__data__ = {
- 'hash': new Hash,
- 'map': new (Map || ListCache),
- 'string': new Hash
- };
- }
-
- /**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
- function mapCacheDelete(key) {
- var result = getMapData(this, key)['delete'](key);
- this.size -= result ? 1 : 0;
- return result;
- }
-
- /**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
- function mapCacheGet(key) {
- return getMapData(this, key).get(key);
- }
-
- /**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- function mapCacheHas(key) {
- return getMapData(this, key).has(key);
- }
-
- /**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */
- function mapCacheSet(key, value) {
- var data = getMapData(this, key),
- size = data.size;
-
- data.set(key, value);
- this.size += data.size == size ? 0 : 1;
- return this;
- }
-
- // Add methods to `MapCache`.
- MapCache.prototype.clear = mapCacheClear;
- MapCache.prototype['delete'] = mapCacheDelete;
- MapCache.prototype.get = mapCacheGet;
- MapCache.prototype.has = mapCacheHas;
- MapCache.prototype.set = mapCacheSet;
-
- /*------------------------------------------------------------------------*/
-
- /**
- *
- * Creates an array cache object to store unique values.
- *
- * @private
- * @constructor
- * @param {Array} [values] The values to cache.
- */
- function SetCache(values) {
- var index = -1,
- length = values == null ? 0 : values.length;
-
- this.__data__ = new MapCache;
- while (++index < length) {
- this.add(values[index]);
- }
- }
-
- /**
- * Adds `value` to the array cache.
- *
- * @private
- * @name add
- * @memberOf SetCache
- * @alias push
- * @param {*} value The value to cache.
- * @returns {Object} Returns the cache instance.
- */
- function setCacheAdd(value) {
- this.__data__.set(value, HASH_UNDEFINED);
- return this;
- }
-
- /**
- * Checks if `value` is in the array cache.
- *
- * @private
- * @name has
- * @memberOf SetCache
- * @param {*} value The value to search for.
- * @returns {number} Returns `true` if `value` is found, else `false`.
- */
- function setCacheHas(value) {
- return this.__data__.has(value);
- }
-
- // Add methods to `SetCache`.
- SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
- SetCache.prototype.has = setCacheHas;
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Creates a stack cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function Stack(entries) {
- var data = this.__data__ = new ListCache(entries);
- this.size = data.size;
- }
-
- /**
- * Removes all key-value entries from the stack.
- *
- * @private
- * @name clear
- * @memberOf Stack
- */
- function stackClear() {
- this.__data__ = new ListCache;
- this.size = 0;
- }
-
- /**
- * Removes `key` and its value from the stack.
- *
- * @private
- * @name delete
- * @memberOf Stack
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
- function stackDelete(key) {
- var data = this.__data__,
- result = data['delete'](key);
-
- this.size = data.size;
- return result;
- }
-
- /**
- * Gets the stack value for `key`.
- *
- * @private
- * @name get
- * @memberOf Stack
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
- function stackGet(key) {
- return this.__data__.get(key);
- }
-
- /**
- * Checks if a stack value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Stack
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- function stackHas(key) {
- return this.__data__.has(key);
- }
-
- /**
- * Sets the stack `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Stack
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the stack cache instance.
- */
- function stackSet(key, value) {
- var data = this.__data__;
- if (data instanceof ListCache) {
- var pairs = data.__data__;
- if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
- pairs.push([key, value]);
- this.size = ++data.size;
- return this;
- }
- data = this.__data__ = new MapCache(pairs);
- }
- data.set(key, value);
- this.size = data.size;
- return this;
- }
-
- // Add methods to `Stack`.
- Stack.prototype.clear = stackClear;
- Stack.prototype['delete'] = stackDelete;
- Stack.prototype.get = stackGet;
- Stack.prototype.has = stackHas;
- Stack.prototype.set = stackSet;
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Creates an array of the enumerable property names of the array-like `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @param {boolean} inherited Specify returning inherited property names.
- * @returns {Array} Returns the array of property names.
- */
- function arrayLikeKeys(value, inherited) {
- var isArr = isArray(value),
- isArg = !isArr && isArguments(value),
- isBuff = !isArr && !isArg && isBuffer(value),
- isType = !isArr && !isArg && !isBuff && isTypedArray(value),
- skipIndexes = isArr || isArg || isBuff || isType,
- result = skipIndexes ? baseTimes(value.length, String) : [],
- length = result.length;
-
- for (var key in value) {
- if ((inherited || hasOwnProperty.call(value, key)) &&
- !(skipIndexes && (
- // Safari 9 has enumerable `arguments.length` in strict mode.
- key == 'length' ||
- // Node.js 0.10 has enumerable non-index properties on buffers.
- (isBuff && (key == 'offset' || key == 'parent')) ||
- // PhantomJS 2 has enumerable non-index properties on typed arrays.
- (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
- // Skip index properties.
- isIndex(key, length)
- ))) {
- result.push(key);
- }
- }
- return result;
- }
-
- /**
- * A specialized version of `_.sample` for arrays.
- *
- * @private
- * @param {Array} array The array to sample.
- * @returns {*} Returns the random element.
- */
- function arraySample(array) {
- var length = array.length;
- return length ? array[baseRandom(0, length - 1)] : undefined;
- }
-
- /**
- * A specialized version of `_.sampleSize` for arrays.
- *
- * @private
- * @param {Array} array The array to sample.
- * @param {number} n The number of elements to sample.
- * @returns {Array} Returns the random elements.
- */
- function arraySampleSize(array, n) {
- return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
- }
-
- /**
- * A specialized version of `_.shuffle` for arrays.
- *
- * @private
- * @param {Array} array The array to shuffle.
- * @returns {Array} Returns the new shuffled array.
- */
- function arrayShuffle(array) {
- return shuffleSelf(copyArray(array));
- }
-
- /**
- * This function is like `assignValue` except that it doesn't assign
- * `undefined` values.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */
- function assignMergeValue(object, key, value) {
- if ((value !== undefined && !eq(object[key], value)) ||
- (value === undefined && !(key in object))) {
- baseAssignValue(object, key, value);
- }
- }
-
- /**
- * Assigns `value` to `key` of `object` if the existing value is not equivalent
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */
- function assignValue(object, key, value) {
- var objValue = object[key];
- if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
- (value === undefined && !(key in object))) {
- baseAssignValue(object, key, value);
- }
- }
-
- /**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
- function assocIndexOf(array, key) {
- var length = array.length;
- while (length--) {
- if (eq(array[length][0], key)) {
- return length;
- }
- }
- return -1;
- }
-
- /**
- * Aggregates elements of `collection` on `accumulator` with keys transformed
- * by `iteratee` and values set by `setter`.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} setter The function to set `accumulator` values.
- * @param {Function} iteratee The iteratee to transform keys.
- * @param {Object} accumulator The initial aggregated object.
- * @returns {Function} Returns `accumulator`.
- */
- function baseAggregator(collection, setter, iteratee, accumulator) {
- baseEach(collection, function(value, key, collection) {
- setter(accumulator, value, iteratee(value), collection);
- });
- return accumulator;
- }
-
- /**
- * The base implementation of `_.assign` without support for multiple sources
- * or `customizer` functions.
- *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @returns {Object} Returns `object`.
- */
- function baseAssign(object, source) {
- return object && copyObject(source, keys(source), object);
- }
-
- /**
- * The base implementation of `_.assignIn` without support for multiple sources
- * or `customizer` functions.
- *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @returns {Object} Returns `object`.
- */
- function baseAssignIn(object, source) {
- return object && copyObject(source, keysIn(source), object);
- }
-
- /**
- * The base implementation of `assignValue` and `assignMergeValue` without
- * value checks.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */
- function baseAssignValue(object, key, value) {
- if (key == '__proto__' && defineProperty) {
- defineProperty(object, key, {
- 'configurable': true,
- 'enumerable': true,
- 'value': value,
- 'writable': true
- });
- } else {
- object[key] = value;
- }
- }
-
- /**
- * The base implementation of `_.at` without support for individual paths.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {string[]} paths The property paths to pick.
- * @returns {Array} Returns the picked elements.
- */
- function baseAt(object, paths) {
- var index = -1,
- length = paths.length,
- result = Array(length),
- skip = object == null;
-
- while (++index < length) {
- result[index] = skip ? undefined : get(object, paths[index]);
- }
- return result;
- }
-
- /**
- * The base implementation of `_.clamp` which doesn't coerce arguments.
- *
- * @private
- * @param {number} number The number to clamp.
- * @param {number} [lower] The lower bound.
- * @param {number} upper The upper bound.
- * @returns {number} Returns the clamped number.
- */
- function baseClamp(number, lower, upper) {
- if (number === number) {
- if (upper !== undefined) {
- number = number <= upper ? number : upper;
- }
- if (lower !== undefined) {
- number = number >= lower ? number : lower;
- }
- }
- return number;
- }
-
- /**
- * The base implementation of `_.clone` and `_.cloneDeep` which tracks
- * traversed objects.
- *
- * @private
- * @param {*} value The value to clone.
- * @param {boolean} bitmask The bitmask flags.
- * 1 - Deep clone
- * 2 - Flatten inherited properties
- * 4 - Clone symbols
- * @param {Function} [customizer] The function to customize cloning.
- * @param {string} [key] The key of `value`.
- * @param {Object} [object] The parent object of `value`.
- * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
- * @returns {*} Returns the cloned value.
- */
- function baseClone(value, bitmask, customizer, key, object, stack) {
- var result,
- isDeep = bitmask & CLONE_DEEP_FLAG,
- isFlat = bitmask & CLONE_FLAT_FLAG,
- isFull = bitmask & CLONE_SYMBOLS_FLAG;
-
- if (customizer) {
- result = object ? customizer(value, key, object, stack) : customizer(value);
- }
- if (result !== undefined) {
- return result;
- }
- if (!isObject(value)) {
- return value;
- }
- var isArr = isArray(value);
- if (isArr) {
- result = initCloneArray(value);
- if (!isDeep) {
- return copyArray(value, result);
- }
- } else {
- var tag = getTag(value),
- isFunc = tag == funcTag || tag == genTag;
-
- if (isBuffer(value)) {
- return cloneBuffer(value, isDeep);
- }
- if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
- result = (isFlat || isFunc) ? {} : initCloneObject(value);
- if (!isDeep) {
- return isFlat
- ? copySymbolsIn(value, baseAssignIn(result, value))
- : copySymbols(value, baseAssign(result, value));
- }
- } else {
- if (!cloneableTags[tag]) {
- return object ? value : {};
- }
- result = initCloneByTag(value, tag, isDeep);
- }
- }
- // Check for circular references and return its corresponding clone.
- stack || (stack = new Stack);
- var stacked = stack.get(value);
- if (stacked) {
- return stacked;
- }
- stack.set(value, result);
-
- if (isSet(value)) {
- value.forEach(function(subValue) {
- result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
- });
- } else if (isMap(value)) {
- value.forEach(function(subValue, key) {
- result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
- });
- }
-
- var keysFunc = isFull
- ? (isFlat ? getAllKeysIn : getAllKeys)
- : (isFlat ? keysIn : keys);
-
- var props = isArr ? undefined : keysFunc(value);
- arrayEach(props || value, function(subValue, key) {
- if (props) {
- key = subValue;
- subValue = value[key];
- }
- // Recursively populate clone (susceptible to call stack limits).
- assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
- });
- return result;
- }
-
- /**
- * The base implementation of `_.conforms` which doesn't clone `source`.
- *
- * @private
- * @param {Object} source The object of property predicates to conform to.
- * @returns {Function} Returns the new spec function.
- */
- function baseConforms(source) {
- var props = keys(source);
- return function(object) {
- return baseConformsTo(object, source, props);
- };
- }
-
- /**
- * The base implementation of `_.conformsTo` which accepts `props` to check.
- *
- * @private
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property predicates to conform to.
- * @returns {boolean} Returns `true` if `object` conforms, else `false`.
- */
- function baseConformsTo(object, source, props) {
- var length = props.length;
- if (object == null) {
- return !length;
- }
- object = Object(object);
- while (length--) {
- var key = props[length],
- predicate = source[key],
- value = object[key];
-
- if ((value === undefined && !(key in object)) || !predicate(value)) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * The base implementation of `_.delay` and `_.defer` which accepts `args`
- * to provide to `func`.
- *
- * @private
- * @param {Function} func The function to delay.
- * @param {number} wait The number of milliseconds to delay invocation.
- * @param {Array} args The arguments to provide to `func`.
- * @returns {number|Object} Returns the timer id or timeout object.
- */
- function baseDelay(func, wait, args) {
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- return setTimeout(function() { func.apply(undefined, args); }, wait);
- }
-
- /**
- * The base implementation of methods like `_.difference` without support
- * for excluding multiple arrays or iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Array} values The values to exclude.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- */
- function baseDifference(array, values, iteratee, comparator) {
- var index = -1,
- includes = arrayIncludes,
- isCommon = true,
- length = array.length,
- result = [],
- valuesLength = values.length;
-
- if (!length) {
- return result;
- }
- if (iteratee) {
- values = arrayMap(values, baseUnary(iteratee));
- }
- if (comparator) {
- includes = arrayIncludesWith;
- isCommon = false;
- }
- else if (values.length >= LARGE_ARRAY_SIZE) {
- includes = cacheHas;
- isCommon = false;
- values = new SetCache(values);
- }
- outer:
- while (++index < length) {
- var value = array[index],
- computed = iteratee == null ? value : iteratee(value);
-
- value = (comparator || value !== 0) ? value : 0;
- if (isCommon && computed === computed) {
- var valuesIndex = valuesLength;
- while (valuesIndex--) {
- if (values[valuesIndex] === computed) {
- continue outer;
- }
- }
- result.push(value);
- }
- else if (!includes(values, computed, comparator)) {
- result.push(value);
- }
- }
- return result;
- }
-
- /**
- * The base implementation of `_.forEach` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- */
- var baseEach = createBaseEach(baseForOwn);
-
- /**
- * The base implementation of `_.forEachRight` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- */
- var baseEachRight = createBaseEach(baseForOwnRight, true);
-
- /**
- * The base implementation of `_.every` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if all elements pass the predicate check,
- * else `false`
- */
- function baseEvery(collection, predicate) {
- var result = true;
- baseEach(collection, function(value, index, collection) {
- result = !!predicate(value, index, collection);
- return result;
- });
- return result;
- }
-
- /**
- * The base implementation of methods like `_.max` and `_.min` which accepts a
- * `comparator` to determine the extremum value.
- *
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} iteratee The iteratee invoked per iteration.
- * @param {Function} comparator The comparator used to compare values.
- * @returns {*} Returns the extremum value.
- */
- function baseExtremum(array, iteratee, comparator) {
- var index = -1,
- length = array.length;
-
- while (++index < length) {
- var value = array[index],
- current = iteratee(value);
-
- if (current != null && (computed === undefined
- ? (current === current && !isSymbol(current))
- : comparator(current, computed)
- )) {
- var computed = current,
- result = value;
- }
- }
- return result;
- }
-
- /**
- * The base implementation of `_.fill` without an iteratee call guard.
- *
- * @private
- * @param {Array} array The array to fill.
- * @param {*} value The value to fill `array` with.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns `array`.
- */
- function baseFill(array, value, start, end) {
- var length = array.length;
-
- start = toInteger(start);
- if (start < 0) {
- start = -start > length ? 0 : (length + start);
- }
- end = (end === undefined || end > length) ? length : toInteger(end);
- if (end < 0) {
- end += length;
- }
- end = start > end ? 0 : toLength(end);
- while (start < end) {
- array[start++] = value;
- }
- return array;
- }
-
- /**
- * The base implementation of `_.filter` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- */
- function baseFilter(collection, predicate) {
- var result = [];
- baseEach(collection, function(value, index, collection) {
- if (predicate(value, index, collection)) {
- result.push(value);
- }
- });
- return result;
- }
-
- /**
- * The base implementation of `_.flatten` with support for restricting flattening.
- *
- * @private
- * @param {Array} array The array to flatten.
- * @param {number} depth The maximum recursion depth.
- * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
- * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
- * @param {Array} [result=[]] The initial result value.
- * @returns {Array} Returns the new flattened array.
- */
- function baseFlatten(array, depth, predicate, isStrict, result) {
- var index = -1,
- length = array.length;
-
- predicate || (predicate = isFlattenable);
- result || (result = []);
-
- while (++index < length) {
- var value = array[index];
- if (depth > 0 && predicate(value)) {
- if (depth > 1) {
- // Recursively flatten arrays (susceptible to call stack limits).
- baseFlatten(value, depth - 1, predicate, isStrict, result);
- } else {
- arrayPush(result, value);
- }
- } else if (!isStrict) {
- result[result.length] = value;
- }
- }
- return result;
- }
-
- /**
- * The base implementation of `baseForOwn` which iterates over `object`
- * properties returned by `keysFunc` and invokes `iteratee` for each property.
- * Iteratee functions may exit iteration early by explicitly returning `false`.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @returns {Object} Returns `object`.
- */
- var baseFor = createBaseFor();
-
- /**
- * This function is like `baseFor` except that it iterates over properties
- * in the opposite order.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @returns {Object} Returns `object`.
- */
- var baseForRight = createBaseFor(true);
-
- /**
- * The base implementation of `_.forOwn` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Object} Returns `object`.
- */
- function baseForOwn(object, iteratee) {
- return object && baseFor(object, iteratee, keys);
- }
-
- /**
- * The base implementation of `_.forOwnRight` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Object} Returns `object`.
- */
- function baseForOwnRight(object, iteratee) {
- return object && baseForRight(object, iteratee, keys);
- }
-
- /**
- * The base implementation of `_.functions` which creates an array of
- * `object` function property names filtered from `props`.
- *
- * @private
- * @param {Object} object The object to inspect.
- * @param {Array} props The property names to filter.
- * @returns {Array} Returns the function names.
- */
- function baseFunctions(object, props) {
- return arrayFilter(props, function(key) {
- return isFunction(object[key]);
- });
- }
-
- /**
- * The base implementation of `_.get` without support for default values.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @returns {*} Returns the resolved value.
- */
- function baseGet(object, path) {
- path = castPath(path, object);
-
- var index = 0,
- length = path.length;
-
- while (object != null && index < length) {
- object = object[toKey(path[index++])];
- }
- return (index && index == length) ? object : undefined;
- }
-
- /**
- * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
- * `keysFunc` and `symbolsFunc` to get the enumerable property names and
- * symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @param {Function} symbolsFunc The function to get the symbols of `object`.
- * @returns {Array} Returns the array of property names and symbols.
- */
- function baseGetAllKeys(object, keysFunc, symbolsFunc) {
- var result = keysFunc(object);
- return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
- }
-
- /**
- * The base implementation of `getTag` without fallbacks for buggy environments.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
- function baseGetTag(value) {
- if (value == null) {
- return value === undefined ? undefinedTag : nullTag;
- }
- return (symToStringTag && symToStringTag in Object(value))
- ? getRawTag(value)
- : objectToString(value);
- }
-
- /**
- * The base implementation of `_.gt` which doesn't coerce arguments.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is greater than `other`,
- * else `false`.
- */
- function baseGt(value, other) {
- return value > other;
- }
-
- /**
- * The base implementation of `_.has` without support for deep paths.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {Array|string} key The key to check.
- * @returns {boolean} Returns `true` if `key` exists, else `false`.
- */
- function baseHas(object, key) {
- return object != null && hasOwnProperty.call(object, key);
- }
-
- /**
- * The base implementation of `_.hasIn` without support for deep paths.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {Array|string} key The key to check.
- * @returns {boolean} Returns `true` if `key` exists, else `false`.
- */
- function baseHasIn(object, key) {
- return object != null && key in Object(object);
- }
-
- /**
- * The base implementation of `_.inRange` which doesn't coerce arguments.
- *
- * @private
- * @param {number} number The number to check.
- * @param {number} start The start of the range.
- * @param {number} end The end of the range.
- * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
- */
- function baseInRange(number, start, end) {
- return number >= nativeMin(start, end) && number < nativeMax(start, end);
- }
-
- /**
- * The base implementation of methods like `_.intersection`, without support
- * for iteratee shorthands, that accepts an array of arrays to inspect.
- *
- * @private
- * @param {Array} arrays The arrays to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of shared values.
- */
- function baseIntersection(arrays, iteratee, comparator) {
- var includes = comparator ? arrayIncludesWith : arrayIncludes,
- length = arrays[0].length,
- othLength = arrays.length,
- othIndex = othLength,
- caches = Array(othLength),
- maxLength = Infinity,
- result = [];
-
- while (othIndex--) {
- var array = arrays[othIndex];
- if (othIndex && iteratee) {
- array = arrayMap(array, baseUnary(iteratee));
- }
- maxLength = nativeMin(array.length, maxLength);
- caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
- ? new SetCache(othIndex && array)
- : undefined;
- }
- array = arrays[0];
-
- var index = -1,
- seen = caches[0];
-
- outer:
- while (++index < length && result.length < maxLength) {
- var value = array[index],
- computed = iteratee ? iteratee(value) : value;
-
- value = (comparator || value !== 0) ? value : 0;
- if (!(seen
- ? cacheHas(seen, computed)
- : includes(result, computed, comparator)
- )) {
- othIndex = othLength;
- while (--othIndex) {
- var cache = caches[othIndex];
- if (!(cache
- ? cacheHas(cache, computed)
- : includes(arrays[othIndex], computed, comparator))
- ) {
- continue outer;
- }
- }
- if (seen) {
- seen.push(computed);
- }
- result.push(value);
- }
- }
- return result;
- }
-
- /**
- * The base implementation of `_.invert` and `_.invertBy` which inverts
- * `object` with values transformed by `iteratee` and set by `setter`.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} setter The function to set `accumulator` values.
- * @param {Function} iteratee The iteratee to transform values.
- * @param {Object} accumulator The initial inverted object.
- * @returns {Function} Returns `accumulator`.
- */
- function baseInverter(object, setter, iteratee, accumulator) {
- baseForOwn(object, function(value, key, object) {
- setter(accumulator, iteratee(value), key, object);
- });
- return accumulator;
- }
-
- /**
- * The base implementation of `_.invoke` without support for individual
- * method arguments.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the method to invoke.
- * @param {Array} args The arguments to invoke the method with.
- * @returns {*} Returns the result of the invoked method.
- */
- function baseInvoke(object, path, args) {
- path = castPath(path, object);
- object = parent(object, path);
- var func = object == null ? object : object[toKey(last(path))];
- return func == null ? undefined : apply(func, object, args);
- }
-
- /**
- * The base implementation of `_.isArguments`.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- */
- function baseIsArguments(value) {
- return isObjectLike(value) && baseGetTag(value) == argsTag;
- }
-
- /**
- * The base implementation of `_.isArrayBuffer` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
- */
- function baseIsArrayBuffer(value) {
- return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
- }
-
- /**
- * The base implementation of `_.isDate` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
- */
- function baseIsDate(value) {
- return isObjectLike(value) && baseGetTag(value) == dateTag;
- }
-
- /**
- * The base implementation of `_.isEqual` which supports partial comparisons
- * and tracks traversed objects.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @param {boolean} bitmask The bitmask flags.
- * 1 - Unordered comparison
- * 2 - Partial comparison
- * @param {Function} [customizer] The function to customize comparisons.
- * @param {Object} [stack] Tracks traversed `value` and `other` objects.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- */
- function baseIsEqual(value, other, bitmask, customizer, stack) {
- if (value === other) {
- return true;
- }
- if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
- return value !== value && other !== other;
- }
- return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
- }
-
- /**
- * A specialized version of `baseIsEqual` for arrays and objects which performs
- * deep comparisons and tracks traversed objects enabling objects with circular
- * references to be compared.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} [stack] Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
- function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
- var objIsArr = isArray(object),
- othIsArr = isArray(other),
- objTag = objIsArr ? arrayTag : getTag(object),
- othTag = othIsArr ? arrayTag : getTag(other);
-
- objTag = objTag == argsTag ? objectTag : objTag;
- othTag = othTag == argsTag ? objectTag : othTag;
-
- var objIsObj = objTag == objectTag,
- othIsObj = othTag == objectTag,
- isSameTag = objTag == othTag;
-
- if (isSameTag && isBuffer(object)) {
- if (!isBuffer(other)) {
- return false;
- }
- objIsArr = true;
- objIsObj = false;
- }
- if (isSameTag && !objIsObj) {
- stack || (stack = new Stack);
- return (objIsArr || isTypedArray(object))
- ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
- : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
- }
- if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
- var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
- othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
-
- if (objIsWrapped || othIsWrapped) {
- var objUnwrapped = objIsWrapped ? object.value() : object,
- othUnwrapped = othIsWrapped ? other.value() : other;
-
- stack || (stack = new Stack);
- return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
- }
- }
- if (!isSameTag) {
- return false;
- }
- stack || (stack = new Stack);
- return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
- }
-
- /**
- * The base implementation of `_.isMap` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a map, else `false`.
- */
- function baseIsMap(value) {
- return isObjectLike(value) && getTag(value) == mapTag;
- }
-
- /**
- * The base implementation of `_.isMatch` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property values to match.
- * @param {Array} matchData The property names, values, and compare flags to match.
- * @param {Function} [customizer] The function to customize comparisons.
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
- */
- function baseIsMatch(object, source, matchData, customizer) {
- var index = matchData.length,
- length = index,
- noCustomizer = !customizer;
-
- if (object == null) {
- return !length;
- }
- object = Object(object);
- while (index--) {
- var data = matchData[index];
- if ((noCustomizer && data[2])
- ? data[1] !== object[data[0]]
- : !(data[0] in object)
- ) {
- return false;
- }
- }
- while (++index < length) {
- data = matchData[index];
- var key = data[0],
- objValue = object[key],
- srcValue = data[1];
-
- if (noCustomizer && data[2]) {
- if (objValue === undefined && !(key in object)) {
- return false;
- }
- } else {
- var stack = new Stack;
- if (customizer) {
- var result = customizer(objValue, srcValue, key, object, source, stack);
- }
- if (!(result === undefined
- ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
- : result
- )) {
- return false;
- }
- }
- }
- return true;
- }
-
- /**
- * The base implementation of `_.isNative` without bad shim checks.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- */
- function baseIsNative(value) {
- if (!isObject(value) || isMasked(value)) {
- return false;
- }
- var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
- return pattern.test(toSource(value));
- }
-
- /**
- * The base implementation of `_.isRegExp` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
- */
- function baseIsRegExp(value) {
- return isObjectLike(value) && baseGetTag(value) == regexpTag;
- }
-
- /**
- * The base implementation of `_.isSet` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a set, else `false`.
- */
- function baseIsSet(value) {
- return isObjectLike(value) && getTag(value) == setTag;
- }
-
- /**
- * The base implementation of `_.isTypedArray` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
- */
- function baseIsTypedArray(value) {
- return isObjectLike(value) &&
- isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
- }
-
- /**
- * The base implementation of `_.iteratee`.
- *
- * @private
- * @param {*} [value=_.identity] The value to convert to an iteratee.
- * @returns {Function} Returns the iteratee.
- */
- function baseIteratee(value) {
- // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
- // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
- if (typeof value == 'function') {
- return value;
- }
- if (value == null) {
- return identity;
- }
- if (typeof value == 'object') {
- return isArray(value)
- ? baseMatchesProperty(value[0], value[1])
- : baseMatches(value);
- }
- return property(value);
- }
-
- /**
- * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
- function baseKeys(object) {
- if (!isPrototype(object)) {
- return nativeKeys(object);
- }
- var result = [];
- for (var key in Object(object)) {
- if (hasOwnProperty.call(object, key) && key != 'constructor') {
- result.push(key);
- }
- }
- return result;
- }
-
- /**
- * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
- function baseKeysIn(object) {
- if (!isObject(object)) {
- return nativeKeysIn(object);
- }
- var isProto = isPrototype(object),
- result = [];
-
- for (var key in object) {
- if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
- result.push(key);
- }
- }
- return result;
- }
-
- /**
- * The base implementation of `_.lt` which doesn't coerce arguments.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is less than `other`,
- * else `false`.
- */
- function baseLt(value, other) {
- return value < other;
- }
-
- /**
- * The base implementation of `_.map` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- */
- function baseMap(collection, iteratee) {
- var index = -1,
- result = isArrayLike(collection) ? Array(collection.length) : [];
-
- baseEach(collection, function(value, key, collection) {
- result[++index] = iteratee(value, key, collection);
- });
- return result;
- }
-
- /**
- * The base implementation of `_.matches` which doesn't clone `source`.
- *
- * @private
- * @param {Object} source The object of property values to match.
- * @returns {Function} Returns the new spec function.
- */
- function baseMatches(source) {
- var matchData = getMatchData(source);
- if (matchData.length == 1 && matchData[0][2]) {
- return matchesStrictComparable(matchData[0][0], matchData[0][1]);
- }
- return function(object) {
- return object === source || baseIsMatch(object, source, matchData);
- };
- }
-
- /**
- * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
- *
- * @private
- * @param {string} path The path of the property to get.
- * @param {*} srcValue The value to match.
- * @returns {Function} Returns the new spec function.
- */
- function baseMatchesProperty(path, srcValue) {
- if (isKey(path) && isStrictComparable(srcValue)) {
- return matchesStrictComparable(toKey(path), srcValue);
- }
- return function(object) {
- var objValue = get(object, path);
- return (objValue === undefined && objValue === srcValue)
- ? hasIn(object, path)
- : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
- };
- }
-
- /**
- * The base implementation of `_.merge` without support for multiple sources.
- *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @param {number} srcIndex The index of `source`.
- * @param {Function} [customizer] The function to customize merged values.
- * @param {Object} [stack] Tracks traversed source values and their merged
- * counterparts.
- */
- function baseMerge(object, source, srcIndex, customizer, stack) {
- if (object === source) {
- return;
- }
- baseFor(source, function(srcValue, key) {
- stack || (stack = new Stack);
- if (isObject(srcValue)) {
- baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
- }
- else {
- var newValue = customizer
- ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
- : undefined;
-
- if (newValue === undefined) {
- newValue = srcValue;
- }
- assignMergeValue(object, key, newValue);
- }
- }, keysIn);
- }
-
- /**
- * A specialized version of `baseMerge` for arrays and objects which performs
- * deep merges and tracks traversed objects enabling objects with circular
- * references to be merged.
- *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @param {string} key The key of the value to merge.
- * @param {number} srcIndex The index of `source`.
- * @param {Function} mergeFunc The function to merge values.
- * @param {Function} [customizer] The function to customize assigned values.
- * @param {Object} [stack] Tracks traversed source values and their merged
- * counterparts.
- */
- function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
- var objValue = safeGet(object, key),
- srcValue = safeGet(source, key),
- stacked = stack.get(srcValue);
-
- if (stacked) {
- assignMergeValue(object, key, stacked);
- return;
- }
- var newValue = customizer
- ? customizer(objValue, srcValue, (key + ''), object, source, stack)
- : undefined;
-
- var isCommon = newValue === undefined;
-
- if (isCommon) {
- var isArr = isArray(srcValue),
- isBuff = !isArr && isBuffer(srcValue),
- isTyped = !isArr && !isBuff && isTypedArray(srcValue);
-
- newValue = srcValue;
- if (isArr || isBuff || isTyped) {
- if (isArray(objValue)) {
- newValue = objValue;
- }
- else if (isArrayLikeObject(objValue)) {
- newValue = copyArray(objValue);
- }
- else if (isBuff) {
- isCommon = false;
- newValue = cloneBuffer(srcValue, true);
- }
- else if (isTyped) {
- isCommon = false;
- newValue = cloneTypedArray(srcValue, true);
- }
- else {
- newValue = [];
- }
- }
- else if (isPlainObject(srcValue) || isArguments(srcValue)) {
- newValue = objValue;
- if (isArguments(objValue)) {
- newValue = toPlainObject(objValue);
- }
- else if (!isObject(objValue) || isFunction(objValue)) {
- newValue = initCloneObject(srcValue);
- }
- }
- else {
- isCommon = false;
- }
- }
- if (isCommon) {
- // Recursively merge objects and arrays (susceptible to call stack limits).
- stack.set(srcValue, newValue);
- mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
- stack['delete'](srcValue);
- }
- assignMergeValue(object, key, newValue);
- }
-
- /**
- * The base implementation of `_.nth` which doesn't coerce arguments.
- *
- * @private
- * @param {Array} array The array to query.
- * @param {number} n The index of the element to return.
- * @returns {*} Returns the nth element of `array`.
- */
- function baseNth(array, n) {
- var length = array.length;
- if (!length) {
- return;
- }
- n += n < 0 ? length : 0;
- return isIndex(n, length) ? array[n] : undefined;
- }
-
- /**
- * The base implementation of `_.orderBy` without param guards.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
- * @param {string[]} orders The sort orders of `iteratees`.
- * @returns {Array} Returns the new sorted array.
- */
- function baseOrderBy(collection, iteratees, orders) {
- var index = -1;
- iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));
-
- var result = baseMap(collection, function(value, key, collection) {
- var criteria = arrayMap(iteratees, function(iteratee) {
- return iteratee(value);
- });
- return { 'criteria': criteria, 'index': ++index, 'value': value };
- });
-
- return baseSortBy(result, function(object, other) {
- return compareMultiple(object, other, orders);
- });
- }
-
- /**
- * The base implementation of `_.pick` without support for individual
- * property identifiers.
- *
- * @private
- * @param {Object} object The source object.
- * @param {string[]} paths The property paths to pick.
- * @returns {Object} Returns the new object.
- */
- function basePick(object, paths) {
- return basePickBy(object, paths, function(value, path) {
- return hasIn(object, path);
- });
- }
-
- /**
- * The base implementation of `_.pickBy` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The source object.
- * @param {string[]} paths The property paths to pick.
- * @param {Function} predicate The function invoked per property.
- * @returns {Object} Returns the new object.
- */
- function basePickBy(object, paths, predicate) {
- var index = -1,
- length = paths.length,
- result = {};
-
- while (++index < length) {
- var path = paths[index],
- value = baseGet(object, path);
-
- if (predicate(value, path)) {
- baseSet(result, castPath(path, object), value);
- }
- }
- return result;
- }
-
- /**
- * A specialized version of `baseProperty` which supports deep paths.
- *
- * @private
- * @param {Array|string} path The path of the property to get.
- * @returns {Function} Returns the new accessor function.
- */
- function basePropertyDeep(path) {
- return function(object) {
- return baseGet(object, path);
- };
- }
-
- /**
- * The base implementation of `_.pullAllBy` without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {Array} values The values to remove.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns `array`.
- */
- function basePullAll(array, values, iteratee, comparator) {
- var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
- index = -1,
- length = values.length,
- seen = array;
-
- if (array === values) {
- values = copyArray(values);
- }
- if (iteratee) {
- seen = arrayMap(array, baseUnary(iteratee));
- }
- while (++index < length) {
- var fromIndex = 0,
- value = values[index],
- computed = iteratee ? iteratee(value) : value;
-
- while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
- if (seen !== array) {
- splice.call(seen, fromIndex, 1);
- }
- splice.call(array, fromIndex, 1);
- }
- }
- return array;
- }
-
- /**
- * The base implementation of `_.pullAt` without support for individual
- * indexes or capturing the removed elements.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {number[]} indexes The indexes of elements to remove.
- * @returns {Array} Returns `array`.
- */
- function basePullAt(array, indexes) {
- var length = array ? indexes.length : 0,
- lastIndex = length - 1;
-
- while (length--) {
- var index = indexes[length];
- if (length == lastIndex || index !== previous) {
- var previous = index;
- if (isIndex(index)) {
- splice.call(array, index, 1);
- } else {
- baseUnset(array, index);
- }
- }
- }
- return array;
- }
-
- /**
- * The base implementation of `_.random` without support for returning
- * floating-point numbers.
- *
- * @private
- * @param {number} lower The lower bound.
- * @param {number} upper The upper bound.
- * @returns {number} Returns the random number.
- */
- function baseRandom(lower, upper) {
- return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
- }
-
- /**
- * The base implementation of `_.range` and `_.rangeRight` which doesn't
- * coerce arguments.
- *
- * @private
- * @param {number} start The start of the range.
- * @param {number} end The end of the range.
- * @param {number} step The value to increment or decrement by.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Array} Returns the range of numbers.
- */
- function baseRange(start, end, step, fromRight) {
- var index = -1,
- length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
- result = Array(length);
-
- while (length--) {
- result[fromRight ? length : ++index] = start;
- start += step;
- }
- return result;
- }
-
- /**
- * The base implementation of `_.repeat` which doesn't coerce arguments.
- *
- * @private
- * @param {string} string The string to repeat.
- * @param {number} n The number of times to repeat the string.
- * @returns {string} Returns the repeated string.
- */
- function baseRepeat(string, n) {
- var result = '';
- if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
- return result;
- }
- // Leverage the exponentiation by squaring algorithm for a faster repeat.
- // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
- do {
- if (n % 2) {
- result += string;
- }
- n = nativeFloor(n / 2);
- if (n) {
- string += string;
- }
- } while (n);
-
- return result;
- }
-
- /**
- * The base implementation of `_.rest` which doesn't validate or coerce arguments.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @returns {Function} Returns the new function.
- */
- function baseRest(func, start) {
- return setToString(overRest(func, start, identity), func + '');
- }
-
- /**
- * The base implementation of `_.sample`.
- *
- * @private
- * @param {Array|Object} collection The collection to sample.
- * @returns {*} Returns the random element.
- */
- function baseSample(collection) {
- return arraySample(values(collection));
- }
-
- /**
- * The base implementation of `_.sampleSize` without param guards.
- *
- * @private
- * @param {Array|Object} collection The collection to sample.
- * @param {number} n The number of elements to sample.
- * @returns {Array} Returns the random elements.
- */
- function baseSampleSize(collection, n) {
- var array = values(collection);
- return shuffleSelf(array, baseClamp(n, 0, array.length));
- }
-
- /**
- * The base implementation of `_.set`.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {*} value The value to set.
- * @param {Function} [customizer] The function to customize path creation.
- * @returns {Object} Returns `object`.
- */
- function baseSet(object, path, value, customizer) {
- if (!isObject(object)) {
- return object;
- }
- path = castPath(path, object);
-
- var index = -1,
- length = path.length,
- lastIndex = length - 1,
- nested = object;
-
- while (nested != null && ++index < length) {
- var key = toKey(path[index]),
- newValue = value;
-
- if (index != lastIndex) {
- var objValue = nested[key];
- newValue = customizer ? customizer(objValue, key, nested) : undefined;
- if (newValue === undefined) {
- newValue = isObject(objValue)
- ? objValue
- : (isIndex(path[index + 1]) ? [] : {});
- }
- }
- assignValue(nested, key, newValue);
- nested = nested[key];
- }
- return object;
- }
-
- /**
- * The base implementation of `setData` without support for hot loop shorting.
- *
- * @private
- * @param {Function} func The function to associate metadata with.
- * @param {*} data The metadata.
- * @returns {Function} Returns `func`.
- */
- var baseSetData = !metaMap ? identity : function(func, data) {
- metaMap.set(func, data);
- return func;
- };
-
- /**
- * The base implementation of `setToString` without support for hot loop shorting.
- *
- * @private
- * @param {Function} func The function to modify.
- * @param {Function} string The `toString` result.
- * @returns {Function} Returns `func`.
- */
- var baseSetToString = !defineProperty ? identity : function(func, string) {
- return defineProperty(func, 'toString', {
- 'configurable': true,
- 'enumerable': false,
- 'value': constant(string),
- 'writable': true
- });
- };
-
- /**
- * The base implementation of `_.shuffle`.
- *
- * @private
- * @param {Array|Object} collection The collection to shuffle.
- * @returns {Array} Returns the new shuffled array.
- */
- function baseShuffle(collection) {
- return shuffleSelf(values(collection));
- }
-
- /**
- * The base implementation of `_.slice` without an iteratee call guard.
- *
- * @private
- * @param {Array} array The array to slice.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the slice of `array`.
- */
- function baseSlice(array, start, end) {
- var index = -1,
- length = array.length;
-
- if (start < 0) {
- start = -start > length ? 0 : (length + start);
- }
- end = end > length ? length : end;
- if (end < 0) {
- end += length;
- }
- length = start > end ? 0 : ((end - start) >>> 0);
- start >>>= 0;
-
- var result = Array(length);
- while (++index < length) {
- result[index] = array[index + start];
- }
- return result;
- }
-
- /**
- * The base implementation of `_.some` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- * else `false`.
- */
- function baseSome(collection, predicate) {
- var result;
-
- baseEach(collection, function(value, index, collection) {
- result = predicate(value, index, collection);
- return !result;
- });
- return !!result;
- }
-
- /**
- * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
- * performs a binary search of `array` to determine the index at which `value`
- * should be inserted into `array` in order to maintain its sort order.
- *
- * @private
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @param {boolean} [retHighest] Specify returning the highest qualified index.
- * @returns {number} Returns the index at which `value` should be inserted
- * into `array`.
- */
- function baseSortedIndex(array, value, retHighest) {
- var low = 0,
- high = array == null ? low : array.length;
-
- if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
- while (low < high) {
- var mid = (low + high) >>> 1,
- computed = array[mid];
-
- if (computed !== null && !isSymbol(computed) &&
- (retHighest ? (computed <= value) : (computed < value))) {
- low = mid + 1;
- } else {
- high = mid;
- }
- }
- return high;
- }
- return baseSortedIndexBy(array, value, identity, retHighest);
- }
-
- /**
- * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
- * which invokes `iteratee` for `value` and each element of `array` to compute
- * their sort ranking. The iteratee is invoked with one argument; (value).
- *
- * @private
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @param {Function} iteratee The iteratee invoked per element.
- * @param {boolean} [retHighest] Specify returning the highest qualified index.
- * @returns {number} Returns the index at which `value` should be inserted
- * into `array`.
- */
- function baseSortedIndexBy(array, value, iteratee, retHighest) {
- value = iteratee(value);
-
- var low = 0,
- high = array == null ? 0 : array.length,
- valIsNaN = value !== value,
- valIsNull = value === null,
- valIsSymbol = isSymbol(value),
- valIsUndefined = value === undefined;
-
- while (low < high) {
- var mid = nativeFloor((low + high) / 2),
- computed = iteratee(array[mid]),
- othIsDefined = computed !== undefined,
- othIsNull = computed === null,
- othIsReflexive = computed === computed,
- othIsSymbol = isSymbol(computed);
-
- if (valIsNaN) {
- var setLow = retHighest || othIsReflexive;
- } else if (valIsUndefined) {
- setLow = othIsReflexive && (retHighest || othIsDefined);
- } else if (valIsNull) {
- setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
- } else if (valIsSymbol) {
- setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
- } else if (othIsNull || othIsSymbol) {
- setLow = false;
- } else {
- setLow = retHighest ? (computed <= value) : (computed < value);
- }
- if (setLow) {
- low = mid + 1;
- } else {
- high = mid;
- }
- }
- return nativeMin(high, MAX_ARRAY_INDEX);
- }
-
- /**
- * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
- * support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- */
- function baseSortedUniq(array, iteratee) {
- var index = -1,
- length = array.length,
- resIndex = 0,
- result = [];
-
- while (++index < length) {
- var value = array[index],
- computed = iteratee ? iteratee(value) : value;
-
- if (!index || !eq(computed, seen)) {
- var seen = computed;
- result[resIndex++] = value === 0 ? 0 : value;
- }
- }
- return result;
- }
-
- /**
- * The base implementation of `_.toNumber` which doesn't ensure correct
- * conversions of binary, hexadecimal, or octal string values.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {number} Returns the number.
- */
- function baseToNumber(value) {
- if (typeof value == 'number') {
- return value;
- }
- if (isSymbol(value)) {
- return NAN;
- }
- return +value;
- }
-
- /**
- * The base implementation of `_.toString` which doesn't convert nullish
- * values to empty strings.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- */
- function baseToString(value) {
- // Exit early for strings to avoid a performance hit in some environments.
- if (typeof value == 'string') {
- return value;
- }
- if (isArray(value)) {
- // Recursively convert values (susceptible to call stack limits).
- return arrayMap(value, baseToString) + '';
- }
- if (isSymbol(value)) {
- return symbolToString ? symbolToString.call(value) : '';
- }
- var result = (value + '');
- return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
- }
-
- /**
- * The base implementation of `_.uniqBy` without support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- */
- function baseUniq(array, iteratee, comparator) {
- var index = -1,
- includes = arrayIncludes,
- length = array.length,
- isCommon = true,
- result = [],
- seen = result;
-
- if (comparator) {
- isCommon = false;
- includes = arrayIncludesWith;
- }
- else if (length >= LARGE_ARRAY_SIZE) {
- var set = iteratee ? null : createSet(array);
- if (set) {
- return setToArray(set);
- }
- isCommon = false;
- includes = cacheHas;
- seen = new SetCache;
- }
- else {
- seen = iteratee ? [] : result;
- }
- outer:
- while (++index < length) {
- var value = array[index],
- computed = iteratee ? iteratee(value) : value;
-
- value = (comparator || value !== 0) ? value : 0;
- if (isCommon && computed === computed) {
- var seenIndex = seen.length;
- while (seenIndex--) {
- if (seen[seenIndex] === computed) {
- continue outer;
- }
- }
- if (iteratee) {
- seen.push(computed);
- }
- result.push(value);
- }
- else if (!includes(seen, computed, comparator)) {
- if (seen !== result) {
- seen.push(computed);
- }
- result.push(value);
- }
- }
- return result;
- }
-
- /**
- * The base implementation of `_.unset`.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {Array|string} path The property path to unset.
- * @returns {boolean} Returns `true` if the property is deleted, else `false`.
- */
- function baseUnset(object, path) {
- path = castPath(path, object);
- object = parent(object, path);
- return object == null || delete object[toKey(last(path))];
- }
-
- /**
- * The base implementation of `_.update`.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to update.
- * @param {Function} updater The function to produce the updated value.
- * @param {Function} [customizer] The function to customize path creation.
- * @returns {Object} Returns `object`.
- */
- function baseUpdate(object, path, updater, customizer) {
- return baseSet(object, path, updater(baseGet(object, path)), customizer);
- }
-
- /**
- * The base implementation of methods like `_.dropWhile` and `_.takeWhile`
- * without support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to query.
- * @param {Function} predicate The function invoked per iteration.
- * @param {boolean} [isDrop] Specify dropping elements instead of taking them.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Array} Returns the slice of `array`.
- */
- function baseWhile(array, predicate, isDrop, fromRight) {
- var length = array.length,
- index = fromRight ? length : -1;
-
- while ((fromRight ? index-- : ++index < length) &&
- predicate(array[index], index, array)) {}
-
- return isDrop
- ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))
- : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));
- }
-
- /**
- * The base implementation of `wrapperValue` which returns the result of
- * performing a sequence of actions on the unwrapped `value`, where each
- * successive action is supplied the return value of the previous.
- *
- * @private
- * @param {*} value The unwrapped value.
- * @param {Array} actions Actions to perform to resolve the unwrapped value.
- * @returns {*} Returns the resolved value.
- */
- function baseWrapperValue(value, actions) {
- var result = value;
- if (result instanceof LazyWrapper) {
- result = result.value();
- }
- return arrayReduce(actions, function(result, action) {
- return action.func.apply(action.thisArg, arrayPush([result], action.args));
- }, result);
- }
-
- /**
- * The base implementation of methods like `_.xor`, without support for
- * iteratee shorthands, that accepts an array of arrays to inspect.
- *
- * @private
- * @param {Array} arrays The arrays to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of values.
- */
- function baseXor(arrays, iteratee, comparator) {
- var length = arrays.length;
- if (length < 2) {
- return length ? baseUniq(arrays[0]) : [];
- }
- var index = -1,
- result = Array(length);
-
- while (++index < length) {
- var array = arrays[index],
- othIndex = -1;
-
- while (++othIndex < length) {
- if (othIndex != index) {
- result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
- }
- }
- }
- return baseUniq(baseFlatten(result, 1), iteratee, comparator);
- }
-
- /**
- * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
- *
- * @private
- * @param {Array} props The property identifiers.
- * @param {Array} values The property values.
- * @param {Function} assignFunc The function to assign values.
- * @returns {Object} Returns the new object.
- */
- function baseZipObject(props, values, assignFunc) {
- var index = -1,
- length = props.length,
- valsLength = values.length,
- result = {};
-
- while (++index < length) {
- var value = index < valsLength ? values[index] : undefined;
- assignFunc(result, props[index], value);
- }
- return result;
- }
-
- /**
- * Casts `value` to an empty array if it's not an array like object.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {Array|Object} Returns the cast array-like object.
- */
- function castArrayLikeObject(value) {
- return isArrayLikeObject(value) ? value : [];
- }
-
- /**
- * Casts `value` to `identity` if it's not a function.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {Function} Returns cast function.
- */
- function castFunction(value) {
- return typeof value == 'function' ? value : identity;
- }
-
- /**
- * Casts `value` to a path array if it's not one.
- *
- * @private
- * @param {*} value The value to inspect.
- * @param {Object} [object] The object to query keys on.
- * @returns {Array} Returns the cast property path array.
- */
- function castPath(value, object) {
- if (isArray(value)) {
- return value;
- }
- return isKey(value, object) ? [value] : stringToPath(toString(value));
- }
-
- /**
- * A `baseRest` alias which can be replaced with `identity` by module
- * replacement plugins.
- *
- * @private
- * @type {Function}
- * @param {Function} func The function to apply a rest parameter to.
- * @returns {Function} Returns the new function.
- */
- var castRest = baseRest;
-
- /**
- * Casts `array` to a slice if it's needed.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {number} start The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the cast slice.
- */
- function castSlice(array, start, end) {
- var length = array.length;
- end = end === undefined ? length : end;
- return (!start && end >= length) ? array : baseSlice(array, start, end);
- }
-
- /**
- * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).
- *
- * @private
- * @param {number|Object} id The timer id or timeout object of the timer to clear.
- */
- var clearTimeout = ctxClearTimeout || function(id) {
- return root.clearTimeout(id);
- };
-
- /**
- * Creates a clone of `buffer`.
- *
- * @private
- * @param {Buffer} buffer The buffer to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Buffer} Returns the cloned buffer.
- */
- function cloneBuffer(buffer, isDeep) {
- if (isDeep) {
- return buffer.slice();
- }
- var length = buffer.length,
- result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
-
- buffer.copy(result);
- return result;
- }
-
- /**
- * Creates a clone of `arrayBuffer`.
- *
- * @private
- * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
- * @returns {ArrayBuffer} Returns the cloned array buffer.
- */
- function cloneArrayBuffer(arrayBuffer) {
- var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
- new Uint8Array(result).set(new Uint8Array(arrayBuffer));
- return result;
- }
-
- /**
- * Creates a clone of `dataView`.
- *
- * @private
- * @param {Object} dataView The data view to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the cloned data view.
- */
- function cloneDataView(dataView, isDeep) {
- var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
- return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
- }
-
- /**
- * Creates a clone of `regexp`.
- *
- * @private
- * @param {Object} regexp The regexp to clone.
- * @returns {Object} Returns the cloned regexp.
- */
- function cloneRegExp(regexp) {
- var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
- result.lastIndex = regexp.lastIndex;
- return result;
- }
-
- /**
- * Creates a clone of the `symbol` object.
- *
- * @private
- * @param {Object} symbol The symbol object to clone.
- * @returns {Object} Returns the cloned symbol object.
- */
- function cloneSymbol(symbol) {
- return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
- }
-
- /**
- * Creates a clone of `typedArray`.
- *
- * @private
- * @param {Object} typedArray The typed array to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the cloned typed array.
- */
- function cloneTypedArray(typedArray, isDeep) {
- var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
- return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
- }
-
- /**
- * Compares values to sort them in ascending order.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {number} Returns the sort order indicator for `value`.
- */
- function compareAscending(value, other) {
- if (value !== other) {
- var valIsDefined = value !== undefined,
- valIsNull = value === null,
- valIsReflexive = value === value,
- valIsSymbol = isSymbol(value);
-
- var othIsDefined = other !== undefined,
- othIsNull = other === null,
- othIsReflexive = other === other,
- othIsSymbol = isSymbol(other);
-
- if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
- (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
- (valIsNull && othIsDefined && othIsReflexive) ||
- (!valIsDefined && othIsReflexive) ||
- !valIsReflexive) {
- return 1;
- }
- if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
- (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
- (othIsNull && valIsDefined && valIsReflexive) ||
- (!othIsDefined && valIsReflexive) ||
- !othIsReflexive) {
- return -1;
- }
- }
- return 0;
- }
-
- /**
- * Used by `_.orderBy` to compare multiple properties of a value to another
- * and stable sort them.
- *
- * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
- * specify an order of "desc" for descending or "asc" for ascending sort order
- * of corresponding values.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {boolean[]|string[]} orders The order to sort by for each property.
- * @returns {number} Returns the sort order indicator for `object`.
- */
- function compareMultiple(object, other, orders) {
- var index = -1,
- objCriteria = object.criteria,
- othCriteria = other.criteria,
- length = objCriteria.length,
- ordersLength = orders.length;
-
- while (++index < length) {
- var result = compareAscending(objCriteria[index], othCriteria[index]);
- if (result) {
- if (index >= ordersLength) {
- return result;
- }
- var order = orders[index];
- return result * (order == 'desc' ? -1 : 1);
- }
- }
- // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
- // that causes it, under certain circumstances, to provide the same value for
- // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
- // for more details.
- //
- // This also ensures a stable sort in V8 and other engines.
- // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
- return object.index - other.index;
- }
-
- /**
- * Creates an array that is the composition of partially applied arguments,
- * placeholders, and provided arguments into a single array of arguments.
- *
- * @private
- * @param {Array} args The provided arguments.
- * @param {Array} partials The arguments to prepend to those provided.
- * @param {Array} holders The `partials` placeholder indexes.
- * @params {boolean} [isCurried] Specify composing for a curried function.
- * @returns {Array} Returns the new array of composed arguments.
- */
- function composeArgs(args, partials, holders, isCurried) {
- var argsIndex = -1,
- argsLength = args.length,
- holdersLength = holders.length,
- leftIndex = -1,
- leftLength = partials.length,
- rangeLength = nativeMax(argsLength - holdersLength, 0),
- result = Array(leftLength + rangeLength),
- isUncurried = !isCurried;
-
- while (++leftIndex < leftLength) {
- result[leftIndex] = partials[leftIndex];
- }
- while (++argsIndex < holdersLength) {
- if (isUncurried || argsIndex < argsLength) {
- result[holders[argsIndex]] = args[argsIndex];
- }
- }
- while (rangeLength--) {
- result[leftIndex++] = args[argsIndex++];
- }
- return result;
- }
-
- /**
- * This function is like `composeArgs` except that the arguments composition
- * is tailored for `_.partialRight`.
- *
- * @private
- * @param {Array} args The provided arguments.
- * @param {Array} partials The arguments to append to those provided.
- * @param {Array} holders The `partials` placeholder indexes.
- * @params {boolean} [isCurried] Specify composing for a curried function.
- * @returns {Array} Returns the new array of composed arguments.
- */
- function composeArgsRight(args, partials, holders, isCurried) {
- var argsIndex = -1,
- argsLength = args.length,
- holdersIndex = -1,
- holdersLength = holders.length,
- rightIndex = -1,
- rightLength = partials.length,
- rangeLength = nativeMax(argsLength - holdersLength, 0),
- result = Array(rangeLength + rightLength),
- isUncurried = !isCurried;
-
- while (++argsIndex < rangeLength) {
- result[argsIndex] = args[argsIndex];
- }
- var offset = argsIndex;
- while (++rightIndex < rightLength) {
- result[offset + rightIndex] = partials[rightIndex];
- }
- while (++holdersIndex < holdersLength) {
- if (isUncurried || argsIndex < argsLength) {
- result[offset + holders[holdersIndex]] = args[argsIndex++];
- }
- }
- return result;
- }
-
- /**
- * Copies the values of `source` to `array`.
- *
- * @private
- * @param {Array} source The array to copy values from.
- * @param {Array} [array=[]] The array to copy values to.
- * @returns {Array} Returns `array`.
- */
- function copyArray(source, array) {
- var index = -1,
- length = source.length;
-
- array || (array = Array(length));
- while (++index < length) {
- array[index] = source[index];
- }
- return array;
- }
-
- /**
- * Copies properties of `source` to `object`.
- *
- * @private
- * @param {Object} source The object to copy properties from.
- * @param {Array} props The property identifiers to copy.
- * @param {Object} [object={}] The object to copy properties to.
- * @param {Function} [customizer] The function to customize copied values.
- * @returns {Object} Returns `object`.
- */
- function copyObject(source, props, object, customizer) {
- var isNew = !object;
- object || (object = {});
-
- var index = -1,
- length = props.length;
-
- while (++index < length) {
- var key = props[index];
-
- var newValue = customizer
- ? customizer(object[key], source[key], key, object, source)
- : undefined;
-
- if (newValue === undefined) {
- newValue = source[key];
- }
- if (isNew) {
- baseAssignValue(object, key, newValue);
- } else {
- assignValue(object, key, newValue);
- }
- }
- return object;
- }
-
- /**
- * Copies own symbols of `source` to `object`.
- *
- * @private
- * @param {Object} source The object to copy symbols from.
- * @param {Object} [object={}] The object to copy symbols to.
- * @returns {Object} Returns `object`.
- */
- function copySymbols(source, object) {
- return copyObject(source, getSymbols(source), object);
- }
-
- /**
- * Copies own and inherited symbols of `source` to `object`.
- *
- * @private
- * @param {Object} source The object to copy symbols from.
- * @param {Object} [object={}] The object to copy symbols to.
- * @returns {Object} Returns `object`.
- */
- function copySymbolsIn(source, object) {
- return copyObject(source, getSymbolsIn(source), object);
- }
-
- /**
- * Creates a function like `_.groupBy`.
- *
- * @private
- * @param {Function} setter The function to set accumulator values.
- * @param {Function} [initializer] The accumulator object initializer.
- * @returns {Function} Returns the new aggregator function.
- */
- function createAggregator(setter, initializer) {
- return function(collection, iteratee) {
- var func = isArray(collection) ? arrayAggregator : baseAggregator,
- accumulator = initializer ? initializer() : {};
-
- return func(collection, setter, getIteratee(iteratee, 2), accumulator);
- };
- }
-
- /**
- * Creates a function like `_.assign`.
- *
- * @private
- * @param {Function} assigner The function to assign values.
- * @returns {Function} Returns the new assigner function.
- */
- function createAssigner(assigner) {
- return baseRest(function(object, sources) {
- var index = -1,
- length = sources.length,
- customizer = length > 1 ? sources[length - 1] : undefined,
- guard = length > 2 ? sources[2] : undefined;
-
- customizer = (assigner.length > 3 && typeof customizer == 'function')
- ? (length--, customizer)
- : undefined;
-
- if (guard && isIterateeCall(sources[0], sources[1], guard)) {
- customizer = length < 3 ? undefined : customizer;
- length = 1;
- }
- object = Object(object);
- while (++index < length) {
- var source = sources[index];
- if (source) {
- assigner(object, source, index, customizer);
- }
- }
- return object;
- });
- }
-
- /**
- * Creates a `baseEach` or `baseEachRight` function.
- *
- * @private
- * @param {Function} eachFunc The function to iterate over a collection.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new base function.
- */
- function createBaseEach(eachFunc, fromRight) {
- return function(collection, iteratee) {
- if (collection == null) {
- return collection;
- }
- if (!isArrayLike(collection)) {
- return eachFunc(collection, iteratee);
- }
- var length = collection.length,
- index = fromRight ? length : -1,
- iterable = Object(collection);
-
- while ((fromRight ? index-- : ++index < length)) {
- if (iteratee(iterable[index], index, iterable) === false) {
- break;
- }
- }
- return collection;
- };
- }
-
- /**
- * Creates a base function for methods like `_.forIn` and `_.forOwn`.
- *
- * @private
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new base function.
- */
- function createBaseFor(fromRight) {
- return function(object, iteratee, keysFunc) {
- var index = -1,
- iterable = Object(object),
- props = keysFunc(object),
- length = props.length;
-
- while (length--) {
- var key = props[fromRight ? length : ++index];
- if (iteratee(iterable[key], key, iterable) === false) {
- break;
- }
- }
- return object;
- };
- }
-
- /**
- * Creates a function that wraps `func` to invoke it with the optional `this`
- * binding of `thisArg`.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {*} [thisArg] The `this` binding of `func`.
- * @returns {Function} Returns the new wrapped function.
- */
- function createBind(func, bitmask, thisArg) {
- var isBind = bitmask & WRAP_BIND_FLAG,
- Ctor = createCtor(func);
-
- function wrapper() {
- var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
- return fn.apply(isBind ? thisArg : this, arguments);
- }
- return wrapper;
- }
-
- /**
- * Creates a function like `_.lowerFirst`.
- *
- * @private
- * @param {string} methodName The name of the `String` case method to use.
- * @returns {Function} Returns the new case function.
- */
- function createCaseFirst(methodName) {
- return function(string) {
- string = toString(string);
-
- var strSymbols = hasUnicode(string)
- ? stringToArray(string)
- : undefined;
-
- var chr = strSymbols
- ? strSymbols[0]
- : string.charAt(0);
-
- var trailing = strSymbols
- ? castSlice(strSymbols, 1).join('')
- : string.slice(1);
-
- return chr[methodName]() + trailing;
- };
- }
-
- /**
- * Creates a function like `_.camelCase`.
- *
- * @private
- * @param {Function} callback The function to combine each word.
- * @returns {Function} Returns the new compounder function.
- */
- function createCompounder(callback) {
- return function(string) {
- return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
- };
- }
-
- /**
- * Creates a function that produces an instance of `Ctor` regardless of
- * whether it was invoked as part of a `new` expression or by `call` or `apply`.
- *
- * @private
- * @param {Function} Ctor The constructor to wrap.
- * @returns {Function} Returns the new wrapped function.
- */
- function createCtor(Ctor) {
- return function() {
- // Use a `switch` statement to work with class constructors. See
- // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
- // for more details.
- var args = arguments;
- switch (args.length) {
- case 0: return new Ctor;
- case 1: return new Ctor(args[0]);
- case 2: return new Ctor(args[0], args[1]);
- case 3: return new Ctor(args[0], args[1], args[2]);
- case 4: return new Ctor(args[0], args[1], args[2], args[3]);
- case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
- case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
- case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
- }
- var thisBinding = baseCreate(Ctor.prototype),
- result = Ctor.apply(thisBinding, args);
-
- // Mimic the constructor's `return` behavior.
- // See https://es5.github.io/#x13.2.2 for more details.
- return isObject(result) ? result : thisBinding;
- };
- }
-
- /**
- * Creates a function that wraps `func` to enable currying.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {number} arity The arity of `func`.
- * @returns {Function} Returns the new wrapped function.
- */
- function createCurry(func, bitmask, arity) {
- var Ctor = createCtor(func);
-
- function wrapper() {
- var length = arguments.length,
- args = Array(length),
- index = length,
- placeholder = getHolder(wrapper);
-
- while (index--) {
- args[index] = arguments[index];
- }
- var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
- ? []
- : replaceHolders(args, placeholder);
-
- length -= holders.length;
- if (length < arity) {
- return createRecurry(
- func, bitmask, createHybrid, wrapper.placeholder, undefined,
- args, holders, undefined, undefined, arity - length);
- }
- var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
- return apply(fn, this, args);
- }
- return wrapper;
- }
-
- /**
- * Creates a `_.find` or `_.findLast` function.
- *
- * @private
- * @param {Function} findIndexFunc The function to find the collection index.
- * @returns {Function} Returns the new find function.
- */
- function createFind(findIndexFunc) {
- return function(collection, predicate, fromIndex) {
- var iterable = Object(collection);
- if (!isArrayLike(collection)) {
- var iteratee = getIteratee(predicate, 3);
- collection = keys(collection);
- predicate = function(key) { return iteratee(iterable[key], key, iterable); };
- }
- var index = findIndexFunc(collection, predicate, fromIndex);
- return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
- };
- }
-
- /**
- * Creates a `_.flow` or `_.flowRight` function.
- *
- * @private
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new flow function.
- */
- function createFlow(fromRight) {
- return flatRest(function(funcs) {
- var length = funcs.length,
- index = length,
- prereq = LodashWrapper.prototype.thru;
-
- if (fromRight) {
- funcs.reverse();
- }
- while (index--) {
- var func = funcs[index];
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
- var wrapper = new LodashWrapper([], true);
- }
- }
- index = wrapper ? index : length;
- while (++index < length) {
- func = funcs[index];
-
- var funcName = getFuncName(func),
- data = funcName == 'wrapper' ? getData(func) : undefined;
-
- if (data && isLaziable(data[0]) &&
- data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
- !data[4].length && data[9] == 1
- ) {
- wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
- } else {
- wrapper = (func.length == 1 && isLaziable(func))
- ? wrapper[funcName]()
- : wrapper.thru(func);
- }
- }
- return function() {
- var args = arguments,
- value = args[0];
-
- if (wrapper && args.length == 1 && isArray(value)) {
- return wrapper.plant(value).value();
- }
- var index = 0,
- result = length ? funcs[index].apply(this, args) : value;
-
- while (++index < length) {
- result = funcs[index].call(this, result);
- }
- return result;
- };
- });
- }
-
- /**
- * Creates a function that wraps `func` to invoke it with optional `this`
- * binding of `thisArg`, partial application, and currying.
- *
- * @private
- * @param {Function|string} func The function or method name to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {*} [thisArg] The `this` binding of `func`.
- * @param {Array} [partials] The arguments to prepend to those provided to
- * the new function.
- * @param {Array} [holders] The `partials` placeholder indexes.
- * @param {Array} [partialsRight] The arguments to append to those provided
- * to the new function.
- * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
- * @param {Array} [argPos] The argument positions of the new function.
- * @param {number} [ary] The arity cap of `func`.
- * @param {number} [arity] The arity of `func`.
- * @returns {Function} Returns the new wrapped function.
- */
- function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
- var isAry = bitmask & WRAP_ARY_FLAG,
- isBind = bitmask & WRAP_BIND_FLAG,
- isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
- isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
- isFlip = bitmask & WRAP_FLIP_FLAG,
- Ctor = isBindKey ? undefined : createCtor(func);
-
- function wrapper() {
- var length = arguments.length,
- args = Array(length),
- index = length;
-
- while (index--) {
- args[index] = arguments[index];
- }
- if (isCurried) {
- var placeholder = getHolder(wrapper),
- holdersCount = countHolders(args, placeholder);
- }
- if (partials) {
- args = composeArgs(args, partials, holders, isCurried);
- }
- if (partialsRight) {
- args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
- }
- length -= holdersCount;
- if (isCurried && length < arity) {
- var newHolders = replaceHolders(args, placeholder);
- return createRecurry(
- func, bitmask, createHybrid, wrapper.placeholder, thisArg,
- args, newHolders, argPos, ary, arity - length
- );
- }
- var thisBinding = isBind ? thisArg : this,
- fn = isBindKey ? thisBinding[func] : func;
-
- length = args.length;
- if (argPos) {
- args = reorder(args, argPos);
- } else if (isFlip && length > 1) {
- args.reverse();
- }
- if (isAry && ary < length) {
- args.length = ary;
- }
- if (this && this !== root && this instanceof wrapper) {
- fn = Ctor || createCtor(fn);
- }
- return fn.apply(thisBinding, args);
- }
- return wrapper;
- }
-
- /**
- * Creates a function like `_.invertBy`.
- *
- * @private
- * @param {Function} setter The function to set accumulator values.
- * @param {Function} toIteratee The function to resolve iteratees.
- * @returns {Function} Returns the new inverter function.
- */
- function createInverter(setter, toIteratee) {
- return function(object, iteratee) {
- return baseInverter(object, setter, toIteratee(iteratee), {});
- };
- }
-
- /**
- * Creates a function that performs a mathematical operation on two values.
- *
- * @private
- * @param {Function} operator The function to perform the operation.
- * @param {number} [defaultValue] The value used for `undefined` arguments.
- * @returns {Function} Returns the new mathematical operation function.
- */
- function createMathOperation(operator, defaultValue) {
- return function(value, other) {
- var result;
- if (value === undefined && other === undefined) {
- return defaultValue;
- }
- if (value !== undefined) {
- result = value;
- }
- if (other !== undefined) {
- if (result === undefined) {
- return other;
- }
- if (typeof value == 'string' || typeof other == 'string') {
- value = baseToString(value);
- other = baseToString(other);
- } else {
- value = baseToNumber(value);
- other = baseToNumber(other);
- }
- result = operator(value, other);
- }
- return result;
- };
- }
-
- /**
- * Creates a function like `_.over`.
- *
- * @private
- * @param {Function} arrayFunc The function to iterate over iteratees.
- * @returns {Function} Returns the new over function.
- */
- function createOver(arrayFunc) {
- return flatRest(function(iteratees) {
- iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
- return baseRest(function(args) {
- var thisArg = this;
- return arrayFunc(iteratees, function(iteratee) {
- return apply(iteratee, thisArg, args);
- });
- });
- });
- }
-
- /**
- * Creates the padding for `string` based on `length`. The `chars` string
- * is truncated if the number of characters exceeds `length`.
- *
- * @private
- * @param {number} length The padding length.
- * @param {string} [chars=' '] The string used as padding.
- * @returns {string} Returns the padding for `string`.
- */
- function createPadding(length, chars) {
- chars = chars === undefined ? ' ' : baseToString(chars);
-
- var charsLength = chars.length;
- if (charsLength < 2) {
- return charsLength ? baseRepeat(chars, length) : chars;
- }
- var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
- return hasUnicode(chars)
- ? castSlice(stringToArray(result), 0, length).join('')
- : result.slice(0, length);
- }
-
- /**
- * Creates a function that wraps `func` to invoke it with the `this` binding
- * of `thisArg` and `partials` prepended to the arguments it receives.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {Array} partials The arguments to prepend to those provided to
- * the new function.
- * @returns {Function} Returns the new wrapped function.
- */
- function createPartial(func, bitmask, thisArg, partials) {
- var isBind = bitmask & WRAP_BIND_FLAG,
- Ctor = createCtor(func);
-
- function wrapper() {
- var argsIndex = -1,
- argsLength = arguments.length,
- leftIndex = -1,
- leftLength = partials.length,
- args = Array(leftLength + argsLength),
- fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
-
- while (++leftIndex < leftLength) {
- args[leftIndex] = partials[leftIndex];
- }
- while (argsLength--) {
- args[leftIndex++] = arguments[++argsIndex];
- }
- return apply(fn, isBind ? thisArg : this, args);
- }
- return wrapper;
- }
-
- /**
- * Creates a `_.range` or `_.rangeRight` function.
- *
- * @private
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new range function.
- */
- function createRange(fromRight) {
- return function(start, end, step) {
- if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
- end = step = undefined;
- }
- // Ensure the sign of `-0` is preserved.
- start = toFinite(start);
- if (end === undefined) {
- end = start;
- start = 0;
- } else {
- end = toFinite(end);
- }
- step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
- return baseRange(start, end, step, fromRight);
- };
- }
-
- /**
- * Creates a function that performs a relational operation on two values.
- *
- * @private
- * @param {Function} operator The function to perform the operation.
- * @returns {Function} Returns the new relational operation function.
- */
- function createRelationalOperation(operator) {
- return function(value, other) {
- if (!(typeof value == 'string' && typeof other == 'string')) {
- value = toNumber(value);
- other = toNumber(other);
- }
- return operator(value, other);
- };
- }
-
- /**
- * Creates a function that wraps `func` to continue currying.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {Function} wrapFunc The function to create the `func` wrapper.
- * @param {*} placeholder The placeholder value.
- * @param {*} [thisArg] The `this` binding of `func`.
- * @param {Array} [partials] The arguments to prepend to those provided to
- * the new function.
- * @param {Array} [holders] The `partials` placeholder indexes.
- * @param {Array} [argPos] The argument positions of the new function.
- * @param {number} [ary] The arity cap of `func`.
- * @param {number} [arity] The arity of `func`.
- * @returns {Function} Returns the new wrapped function.
- */
- function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
- var isCurry = bitmask & WRAP_CURRY_FLAG,
- newHolders = isCurry ? holders : undefined,
- newHoldersRight = isCurry ? undefined : holders,
- newPartials = isCurry ? partials : undefined,
- newPartialsRight = isCurry ? undefined : partials;
-
- bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
- bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
-
- if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
- bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
- }
- var newData = [
- func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
- newHoldersRight, argPos, ary, arity
- ];
-
- var result = wrapFunc.apply(undefined, newData);
- if (isLaziable(func)) {
- setData(result, newData);
- }
- result.placeholder = placeholder;
- return setWrapToString(result, func, bitmask);
- }
-
- /**
- * Creates a function like `_.round`.
- *
- * @private
- * @param {string} methodName The name of the `Math` method to use when rounding.
- * @returns {Function} Returns the new round function.
- */
- function createRound(methodName) {
- var func = Math[methodName];
- return function(number, precision) {
- number = toNumber(number);
- precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
- if (precision && nativeIsFinite(number)) {
- // Shift with exponential notation to avoid floating-point issues.
- // See [MDN](https://mdn.io/round#Examples) for more details.
- var pair = (toString(number) + 'e').split('e'),
- value = func(pair[0] + 'e' + (+pair[1] + precision));
-
- pair = (toString(value) + 'e').split('e');
- return +(pair[0] + 'e' + (+pair[1] - precision));
- }
- return func(number);
- };
- }
-
- /**
- * Creates a set object of `values`.
- *
- * @private
- * @param {Array} values The values to add to the set.
- * @returns {Object} Returns the new set.
- */
- var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
- return new Set(values);
- };
-
- /**
- * Creates a `_.toPairs` or `_.toPairsIn` function.
- *
- * @private
- * @param {Function} keysFunc The function to get the keys of a given object.
- * @returns {Function} Returns the new pairs function.
- */
- function createToPairs(keysFunc) {
- return function(object) {
- var tag = getTag(object);
- if (tag == mapTag) {
- return mapToArray(object);
- }
- if (tag == setTag) {
- return setToPairs(object);
- }
- return baseToPairs(object, keysFunc(object));
- };
- }
-
- /**
- * Creates a function that either curries or invokes `func` with optional
- * `this` binding and partially applied arguments.
- *
- * @private
- * @param {Function|string} func The function or method name to wrap.
- * @param {number} bitmask The bitmask flags.
- * 1 - `_.bind`
- * 2 - `_.bindKey`
- * 4 - `_.curry` or `_.curryRight` of a bound function
- * 8 - `_.curry`
- * 16 - `_.curryRight`
- * 32 - `_.partial`
- * 64 - `_.partialRight`
- * 128 - `_.rearg`
- * 256 - `_.ary`
- * 512 - `_.flip`
- * @param {*} [thisArg] The `this` binding of `func`.
- * @param {Array} [partials] The arguments to be partially applied.
- * @param {Array} [holders] The `partials` placeholder indexes.
- * @param {Array} [argPos] The argument positions of the new function.
- * @param {number} [ary] The arity cap of `func`.
- * @param {number} [arity] The arity of `func`.
- * @returns {Function} Returns the new wrapped function.
- */
- function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
- var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
- if (!isBindKey && typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- var length = partials ? partials.length : 0;
- if (!length) {
- bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
- partials = holders = undefined;
- }
- ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
- arity = arity === undefined ? arity : toInteger(arity);
- length -= holders ? holders.length : 0;
-
- if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
- var partialsRight = partials,
- holdersRight = holders;
-
- partials = holders = undefined;
- }
- var data = isBindKey ? undefined : getData(func);
-
- var newData = [
- func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
- argPos, ary, arity
- ];
-
- if (data) {
- mergeData(newData, data);
- }
- func = newData[0];
- bitmask = newData[1];
- thisArg = newData[2];
- partials = newData[3];
- holders = newData[4];
- arity = newData[9] = newData[9] === undefined
- ? (isBindKey ? 0 : func.length)
- : nativeMax(newData[9] - length, 0);
-
- if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
- bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
- }
- if (!bitmask || bitmask == WRAP_BIND_FLAG) {
- var result = createBind(func, bitmask, thisArg);
- } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
- result = createCurry(func, bitmask, arity);
- } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
- result = createPartial(func, bitmask, thisArg, partials);
- } else {
- result = createHybrid.apply(undefined, newData);
- }
- var setter = data ? baseSetData : setData;
- return setWrapToString(setter(result, newData), func, bitmask);
- }
-
- /**
- * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
- * of source objects to the destination object for all destination properties
- * that resolve to `undefined`.
- *
- * @private
- * @param {*} objValue The destination value.
- * @param {*} srcValue The source value.
- * @param {string} key The key of the property to assign.
- * @param {Object} object The parent object of `objValue`.
- * @returns {*} Returns the value to assign.
- */
- function customDefaultsAssignIn(objValue, srcValue, key, object) {
- if (objValue === undefined ||
- (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
- return srcValue;
- }
- return objValue;
- }
-
- /**
- * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
- * objects into destination objects that are passed thru.
- *
- * @private
- * @param {*} objValue The destination value.
- * @param {*} srcValue The source value.
- * @param {string} key The key of the property to merge.
- * @param {Object} object The parent object of `objValue`.
- * @param {Object} source The parent object of `srcValue`.
- * @param {Object} [stack] Tracks traversed source values and their merged
- * counterparts.
- * @returns {*} Returns the value to assign.
- */
- function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
- if (isObject(objValue) && isObject(srcValue)) {
- // Recursively merge objects and arrays (susceptible to call stack limits).
- stack.set(srcValue, objValue);
- baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
- stack['delete'](srcValue);
- }
- return objValue;
- }
-
- /**
- * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
- * objects.
- *
- * @private
- * @param {*} value The value to inspect.
- * @param {string} key The key of the property to inspect.
- * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
- */
- function customOmitClone(value) {
- return isPlainObject(value) ? undefined : value;
- }
-
- /**
- * A specialized version of `baseIsEqualDeep` for arrays with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Array} array The array to compare.
- * @param {Array} other The other array to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `array` and `other` objects.
- * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
- */
- function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
- var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
- arrLength = array.length,
- othLength = other.length;
-
- if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
- return false;
- }
- // Assume cyclic values are equal.
- var stacked = stack.get(array);
- if (stacked && stack.get(other)) {
- return stacked == other;
- }
- var index = -1,
- result = true,
- seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
-
- stack.set(array, other);
- stack.set(other, array);
-
- // Ignore non-index properties.
- while (++index < arrLength) {
- var arrValue = array[index],
- othValue = other[index];
-
- if (customizer) {
- var compared = isPartial
- ? customizer(othValue, arrValue, index, other, array, stack)
- : customizer(arrValue, othValue, index, array, other, stack);
- }
- if (compared !== undefined) {
- if (compared) {
- continue;
- }
- result = false;
- break;
- }
- // Recursively compare arrays (susceptible to call stack limits).
- if (seen) {
- if (!arraySome(other, function(othValue, othIndex) {
- if (!cacheHas(seen, othIndex) &&
- (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
- return seen.push(othIndex);
- }
- })) {
- result = false;
- break;
- }
- } else if (!(
- arrValue === othValue ||
- equalFunc(arrValue, othValue, bitmask, customizer, stack)
- )) {
- result = false;
- break;
- }
- }
- stack['delete'](array);
- stack['delete'](other);
- return result;
- }
-
- /**
- * A specialized version of `baseIsEqualDeep` for comparing objects of
- * the same `toStringTag`.
- *
- * **Note:** This function only supports comparing values with tags of
- * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {string} tag The `toStringTag` of the objects to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
- function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
- switch (tag) {
- case dataViewTag:
- if ((object.byteLength != other.byteLength) ||
- (object.byteOffset != other.byteOffset)) {
- return false;
- }
- object = object.buffer;
- other = other.buffer;
-
- case arrayBufferTag:
- if ((object.byteLength != other.byteLength) ||
- !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
- return false;
- }
- return true;
-
- case boolTag:
- case dateTag:
- case numberTag:
- // Coerce booleans to `1` or `0` and dates to milliseconds.
- // Invalid dates are coerced to `NaN`.
- return eq(+object, +other);
-
- case errorTag:
- return object.name == other.name && object.message == other.message;
-
- case regexpTag:
- case stringTag:
- // Coerce regexes to strings and treat strings, primitives and objects,
- // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
- // for more details.
- return object == (other + '');
-
- case mapTag:
- var convert = mapToArray;
-
- case setTag:
- var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
- convert || (convert = setToArray);
-
- if (object.size != other.size && !isPartial) {
- return false;
- }
- // Assume cyclic values are equal.
- var stacked = stack.get(object);
- if (stacked) {
- return stacked == other;
- }
- bitmask |= COMPARE_UNORDERED_FLAG;
-
- // Recursively compare objects (susceptible to call stack limits).
- stack.set(object, other);
- var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
- stack['delete'](object);
- return result;
-
- case symbolTag:
- if (symbolValueOf) {
- return symbolValueOf.call(object) == symbolValueOf.call(other);
- }
- }
- return false;
- }
-
- /**
- * A specialized version of `baseIsEqualDeep` for objects with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
- function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
- var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
- objProps = getAllKeys(object),
- objLength = objProps.length,
- othProps = getAllKeys(other),
- othLength = othProps.length;
-
- if (objLength != othLength && !isPartial) {
- return false;
- }
- var index = objLength;
- while (index--) {
- var key = objProps[index];
- if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
- return false;
- }
- }
- // Assume cyclic values are equal.
- var stacked = stack.get(object);
- if (stacked && stack.get(other)) {
- return stacked == other;
- }
- var result = true;
- stack.set(object, other);
- stack.set(other, object);
-
- var skipCtor = isPartial;
- while (++index < objLength) {
- key = objProps[index];
- var objValue = object[key],
- othValue = other[key];
-
- if (customizer) {
- var compared = isPartial
- ? customizer(othValue, objValue, key, other, object, stack)
- : customizer(objValue, othValue, key, object, other, stack);
- }
- // Recursively compare objects (susceptible to call stack limits).
- if (!(compared === undefined
- ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
- : compared
- )) {
- result = false;
- break;
- }
- skipCtor || (skipCtor = key == 'constructor');
- }
- if (result && !skipCtor) {
- var objCtor = object.constructor,
- othCtor = other.constructor;
-
- // Non `Object` object instances with different constructors are not equal.
- if (objCtor != othCtor &&
- ('constructor' in object && 'constructor' in other) &&
- !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
- typeof othCtor == 'function' && othCtor instanceof othCtor)) {
- result = false;
- }
- }
- stack['delete'](object);
- stack['delete'](other);
- return result;
- }
-
- /**
- * A specialized version of `baseRest` which flattens the rest array.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @returns {Function} Returns the new function.
- */
- function flatRest(func) {
- return setToString(overRest(func, undefined, flatten), func + '');
- }
-
- /**
- * Creates an array of own enumerable property names and symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names and symbols.
- */
- function getAllKeys(object) {
- return baseGetAllKeys(object, keys, getSymbols);
- }
-
- /**
- * Creates an array of own and inherited enumerable property names and
- * symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names and symbols.
- */
- function getAllKeysIn(object) {
- return baseGetAllKeys(object, keysIn, getSymbolsIn);
- }
-
- /**
- * Gets metadata for `func`.
- *
- * @private
- * @param {Function} func The function to query.
- * @returns {*} Returns the metadata for `func`.
- */
- var getData = !metaMap ? noop : function(func) {
- return metaMap.get(func);
- };
-
- /**
- * Gets the name of `func`.
- *
- * @private
- * @param {Function} func The function to query.
- * @returns {string} Returns the function name.
- */
- function getFuncName(func) {
- var result = (func.name + ''),
- array = realNames[result],
- length = hasOwnProperty.call(realNames, result) ? array.length : 0;
-
- while (length--) {
- var data = array[length],
- otherFunc = data.func;
- if (otherFunc == null || otherFunc == func) {
- return data.name;
- }
- }
- return result;
- }
-
- /**
- * Gets the argument placeholder value for `func`.
- *
- * @private
- * @param {Function} func The function to inspect.
- * @returns {*} Returns the placeholder value.
- */
- function getHolder(func) {
- var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;
- return object.placeholder;
- }
-
- /**
- * Gets the appropriate "iteratee" function. If `_.iteratee` is customized,
- * this function returns the custom method, otherwise it returns `baseIteratee`.
- * If arguments are provided, the chosen function is invoked with them and
- * its result is returned.
- *
- * @private
- * @param {*} [value] The value to convert to an iteratee.
- * @param {number} [arity] The arity of the created iteratee.
- * @returns {Function} Returns the chosen function or its result.
- */
- function getIteratee() {
- var result = lodash.iteratee || iteratee;
- result = result === iteratee ? baseIteratee : result;
- return arguments.length ? result(arguments[0], arguments[1]) : result;
- }
-
- /**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */
- function getMapData(map, key) {
- var data = map.__data__;
- return isKeyable(key)
- ? data[typeof key == 'string' ? 'string' : 'hash']
- : data.map;
- }
-
- /**
- * Gets the property names, values, and compare flags of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the match data of `object`.
- */
- function getMatchData(object) {
- var result = keys(object),
- length = result.length;
-
- while (length--) {
- var key = result[length],
- value = object[key];
-
- result[length] = [key, value, isStrictComparable(value)];
- }
- return result;
- }
-
- /**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */
- function getNative(object, key) {
- var value = getValue(object, key);
- return baseIsNative(value) ? value : undefined;
- }
-
- /**
- * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the raw `toStringTag`.
- */
- function getRawTag(value) {
- var isOwn = hasOwnProperty.call(value, symToStringTag),
- tag = value[symToStringTag];
-
- try {
- value[symToStringTag] = undefined;
- var unmasked = true;
- } catch (e) {}
-
- var result = nativeObjectToString.call(value);
- if (unmasked) {
- if (isOwn) {
- value[symToStringTag] = tag;
- } else {
- delete value[symToStringTag];
- }
- }
- return result;
- }
-
- /**
- * Creates an array of the own enumerable symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of symbols.
- */
- var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
- if (object == null) {
- return [];
- }
- object = Object(object);
- return arrayFilter(nativeGetSymbols(object), function(symbol) {
- return propertyIsEnumerable.call(object, symbol);
- });
- };
-
- /**
- * Creates an array of the own and inherited enumerable symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of symbols.
- */
- var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
- var result = [];
- while (object) {
- arrayPush(result, getSymbols(object));
- object = getPrototype(object);
- }
- return result;
- };
-
- /**
- * Gets the `toStringTag` of `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
- var getTag = baseGetTag;
-
- // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
- if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
- (Map && getTag(new Map) != mapTag) ||
- (Promise && getTag(Promise.resolve()) != promiseTag) ||
- (Set && getTag(new Set) != setTag) ||
- (WeakMap && getTag(new WeakMap) != weakMapTag)) {
- getTag = function(value) {
- var result = baseGetTag(value),
- Ctor = result == objectTag ? value.constructor : undefined,
- ctorString = Ctor ? toSource(Ctor) : '';
-
- if (ctorString) {
- switch (ctorString) {
- case dataViewCtorString: return dataViewTag;
- case mapCtorString: return mapTag;
- case promiseCtorString: return promiseTag;
- case setCtorString: return setTag;
- case weakMapCtorString: return weakMapTag;
- }
- }
- return result;
- };
- }
-
- /**
- * Gets the view, applying any `transforms` to the `start` and `end` positions.
- *
- * @private
- * @param {number} start The start of the view.
- * @param {number} end The end of the view.
- * @param {Array} transforms The transformations to apply to the view.
- * @returns {Object} Returns an object containing the `start` and `end`
- * positions of the view.
- */
- function getView(start, end, transforms) {
- var index = -1,
- length = transforms.length;
-
- while (++index < length) {
- var data = transforms[index],
- size = data.size;
-
- switch (data.type) {
- case 'drop': start += size; break;
- case 'dropRight': end -= size; break;
- case 'take': end = nativeMin(end, start + size); break;
- case 'takeRight': start = nativeMax(start, end - size); break;
- }
- }
- return { 'start': start, 'end': end };
- }
-
- /**
- * Extracts wrapper details from the `source` body comment.
- *
- * @private
- * @param {string} source The source to inspect.
- * @returns {Array} Returns the wrapper details.
- */
- function getWrapDetails(source) {
- var match = source.match(reWrapDetails);
- return match ? match[1].split(reSplitDetails) : [];
- }
-
- /**
- * Checks if `path` exists on `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @param {Function} hasFunc The function to check properties.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- */
- function hasPath(object, path, hasFunc) {
- path = castPath(path, object);
-
- var index = -1,
- length = path.length,
- result = false;
-
- while (++index < length) {
- var key = toKey(path[index]);
- if (!(result = object != null && hasFunc(object, key))) {
- break;
- }
- object = object[key];
- }
- if (result || ++index != length) {
- return result;
- }
- length = object == null ? 0 : object.length;
- return !!length && isLength(length) && isIndex(key, length) &&
- (isArray(object) || isArguments(object));
- }
-
- /**
- * Initializes an array clone.
- *
- * @private
- * @param {Array} array The array to clone.
- * @returns {Array} Returns the initialized clone.
- */
- function initCloneArray(array) {
- var length = array.length,
- result = new array.constructor(length);
-
- // Add properties assigned by `RegExp#exec`.
- if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
- result.index = array.index;
- result.input = array.input;
- }
- return result;
- }
-
- /**
- * Initializes an object clone.
- *
- * @private
- * @param {Object} object The object to clone.
- * @returns {Object} Returns the initialized clone.
- */
- function initCloneObject(object) {
- return (typeof object.constructor == 'function' && !isPrototype(object))
- ? baseCreate(getPrototype(object))
- : {};
- }
-
- /**
- * Initializes an object clone based on its `toStringTag`.
- *
- * **Note:** This function only supports cloning values with tags of
- * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
- *
- * @private
- * @param {Object} object The object to clone.
- * @param {string} tag The `toStringTag` of the object to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the initialized clone.
- */
- function initCloneByTag(object, tag, isDeep) {
- var Ctor = object.constructor;
- switch (tag) {
- case arrayBufferTag:
- return cloneArrayBuffer(object);
-
- case boolTag:
- case dateTag:
- return new Ctor(+object);
-
- case dataViewTag:
- return cloneDataView(object, isDeep);
-
- case float32Tag: case float64Tag:
- case int8Tag: case int16Tag: case int32Tag:
- case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
- return cloneTypedArray(object, isDeep);
-
- case mapTag:
- return new Ctor;
-
- case numberTag:
- case stringTag:
- return new Ctor(object);
-
- case regexpTag:
- return cloneRegExp(object);
-
- case setTag:
- return new Ctor;
-
- case symbolTag:
- return cloneSymbol(object);
- }
- }
-
- /**
- * Inserts wrapper `details` in a comment at the top of the `source` body.
- *
- * @private
- * @param {string} source The source to modify.
- * @returns {Array} details The details to insert.
- * @returns {string} Returns the modified source.
- */
- function insertWrapDetails(source, details) {
- var length = details.length;
- if (!length) {
- return source;
- }
- var lastIndex = length - 1;
- details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
- details = details.join(length > 2 ? ', ' : ' ');
- return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
- }
-
- /**
- * Checks if `value` is a flattenable `arguments` object or array.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
- */
- function isFlattenable(value) {
- return isArray(value) || isArguments(value) ||
- !!(spreadableSymbol && value && value[spreadableSymbol]);
- }
-
- /**
- * Checks if `value` is a valid array-like index.
- *
- * @private
- * @param {*} value The value to check.
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
- */
- function isIndex(value, length) {
- var type = typeof value;
- length = length == null ? MAX_SAFE_INTEGER : length;
-
- return !!length &&
- (type == 'number' ||
- (type != 'symbol' && reIsUint.test(value))) &&
- (value > -1 && value % 1 == 0 && value < length);
- }
-
- /**
- * Checks if the given arguments are from an iteratee call.
- *
- * @private
- * @param {*} value The potential iteratee value argument.
- * @param {*} index The potential iteratee index or key argument.
- * @param {*} object The potential iteratee object argument.
- * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
- * else `false`.
- */
- function isIterateeCall(value, index, object) {
- if (!isObject(object)) {
- return false;
- }
- var type = typeof index;
- if (type == 'number'
- ? (isArrayLike(object) && isIndex(index, object.length))
- : (type == 'string' && index in object)
- ) {
- return eq(object[index], value);
- }
- return false;
- }
-
- /**
- * Checks if `value` is a property name and not a property path.
- *
- * @private
- * @param {*} value The value to check.
- * @param {Object} [object] The object to query keys on.
- * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
- */
- function isKey(value, object) {
- if (isArray(value)) {
- return false;
- }
- var type = typeof value;
- if (type == 'number' || type == 'symbol' || type == 'boolean' ||
- value == null || isSymbol(value)) {
- return true;
- }
- return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
- (object != null && value in Object(object));
- }
-
- /**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
- function isKeyable(value) {
- var type = typeof value;
- return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
- ? (value !== '__proto__')
- : (value === null);
- }
-
- /**
- * Checks if `func` has a lazy counterpart.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
- * else `false`.
- */
- function isLaziable(func) {
- var funcName = getFuncName(func),
- other = lodash[funcName];
-
- if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
- return false;
- }
- if (func === other) {
- return true;
- }
- var data = getData(other);
- return !!data && func === data[0];
- }
-
- /**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
- */
- function isMasked(func) {
- return !!maskSrcKey && (maskSrcKey in func);
- }
-
- /**
- * Checks if `func` is capable of being masked.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
- */
- var isMaskable = coreJsData ? isFunction : stubFalse;
-
- /**
- * Checks if `value` is likely a prototype object.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
- */
- function isPrototype(value) {
- var Ctor = value && value.constructor,
- proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
-
- return value === proto;
- }
-
- /**
- * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` if suitable for strict
- * equality comparisons, else `false`.
- */
- function isStrictComparable(value) {
- return value === value && !isObject(value);
- }
-
- /**
- * A specialized version of `matchesProperty` for source values suitable
- * for strict equality comparisons, i.e. `===`.
- *
- * @private
- * @param {string} key The key of the property to get.
- * @param {*} srcValue The value to match.
- * @returns {Function} Returns the new spec function.
- */
- function matchesStrictComparable(key, srcValue) {
- return function(object) {
- if (object == null) {
- return false;
- }
- return object[key] === srcValue &&
- (srcValue !== undefined || (key in Object(object)));
- };
- }
-
- /**
- * A specialized version of `_.memoize` which clears the memoized function's
- * cache when it exceeds `MAX_MEMOIZE_SIZE`.
- *
- * @private
- * @param {Function} func The function to have its output memoized.
- * @returns {Function} Returns the new memoized function.
- */
- function memoizeCapped(func) {
- var result = memoize(func, function(key) {
- if (cache.size === MAX_MEMOIZE_SIZE) {
- cache.clear();
- }
- return key;
- });
-
- var cache = result.cache;
- return result;
- }
-
- /**
- * Merges the function metadata of `source` into `data`.
- *
- * Merging metadata reduces the number of wrappers used to invoke a function.
- * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
- * may be applied regardless of execution order. Methods like `_.ary` and
- * `_.rearg` modify function arguments, making the order in which they are
- * executed important, preventing the merging of metadata. However, we make
- * an exception for a safe combined case where curried functions have `_.ary`
- * and or `_.rearg` applied.
- *
- * @private
- * @param {Array} data The destination metadata.
- * @param {Array} source The source metadata.
- * @returns {Array} Returns `data`.
- */
- function mergeData(data, source) {
- var bitmask = data[1],
- srcBitmask = source[1],
- newBitmask = bitmask | srcBitmask,
- isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
-
- var isCombo =
- ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
- ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
- ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));
-
- // Exit early if metadata can't be merged.
- if (!(isCommon || isCombo)) {
- return data;
- }
- // Use source `thisArg` if available.
- if (srcBitmask & WRAP_BIND_FLAG) {
- data[2] = source[2];
- // Set when currying a bound function.
- newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
- }
- // Compose partial arguments.
- var value = source[3];
- if (value) {
- var partials = data[3];
- data[3] = partials ? composeArgs(partials, value, source[4]) : value;
- data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
- }
- // Compose partial right arguments.
- value = source[5];
- if (value) {
- partials = data[5];
- data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
- data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
- }
- // Use source `argPos` if available.
- value = source[7];
- if (value) {
- data[7] = value;
- }
- // Use source `ary` if it's smaller.
- if (srcBitmask & WRAP_ARY_FLAG) {
- data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
- }
- // Use source `arity` if one is not provided.
- if (data[9] == null) {
- data[9] = source[9];
- }
- // Use source `func` and merge bitmasks.
- data[0] = source[0];
- data[1] = newBitmask;
-
- return data;
- }
-
- /**
- * This function is like
- * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
- * except that it includes inherited enumerable properties.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
- function nativeKeysIn(object) {
- var result = [];
- if (object != null) {
- for (var key in Object(object)) {
- result.push(key);
- }
- }
- return result;
- }
-
- /**
- * Converts `value` to a string using `Object.prototype.toString`.
- *
- * @private
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- */
- function objectToString(value) {
- return nativeObjectToString.call(value);
- }
-
- /**
- * A specialized version of `baseRest` which transforms the rest array.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @param {Function} transform The rest array transform.
- * @returns {Function} Returns the new function.
- */
- function overRest(func, start, transform) {
- start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
- return function() {
- var args = arguments,
- index = -1,
- length = nativeMax(args.length - start, 0),
- array = Array(length);
-
- while (++index < length) {
- array[index] = args[start + index];
- }
- index = -1;
- var otherArgs = Array(start + 1);
- while (++index < start) {
- otherArgs[index] = args[index];
- }
- otherArgs[start] = transform(array);
- return apply(func, this, otherArgs);
- };
- }
-
- /**
- * Gets the parent value at `path` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array} path The path to get the parent value of.
- * @returns {*} Returns the parent value.
- */
- function parent(object, path) {
- return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
- }
-
- /**
- * Reorder `array` according to the specified indexes where the element at
- * the first index is assigned as the first element, the element at
- * the second index is assigned as the second element, and so on.
- *
- * @private
- * @param {Array} array The array to reorder.
- * @param {Array} indexes The arranged array indexes.
- * @returns {Array} Returns `array`.
- */
- function reorder(array, indexes) {
- var arrLength = array.length,
- length = nativeMin(indexes.length, arrLength),
- oldArray = copyArray(array);
-
- while (length--) {
- var index = indexes[length];
- array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
- }
- return array;
- }
-
- /**
- * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
- function safeGet(object, key) {
- if (key === 'constructor' && typeof object[key] === 'function') {
- return;
- }
-
- if (key == '__proto__') {
- return;
- }
-
- return object[key];
- }
-
- /**
- * Sets metadata for `func`.
- *
- * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
- * period of time, it will trip its breaker and transition to an identity
- * function to avoid garbage collection pauses in V8. See
- * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)
- * for more details.
- *
- * @private
- * @param {Function} func The function to associate metadata with.
- * @param {*} data The metadata.
- * @returns {Function} Returns `func`.
- */
- var setData = shortOut(baseSetData);
-
- /**
- * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).
- *
- * @private
- * @param {Function} func The function to delay.
- * @param {number} wait The number of milliseconds to delay invocation.
- * @returns {number|Object} Returns the timer id or timeout object.
- */
- var setTimeout = ctxSetTimeout || function(func, wait) {
- return root.setTimeout(func, wait);
- };
-
- /**
- * Sets the `toString` method of `func` to return `string`.
- *
- * @private
- * @param {Function} func The function to modify.
- * @param {Function} string The `toString` result.
- * @returns {Function} Returns `func`.
- */
- var setToString = shortOut(baseSetToString);
-
- /**
- * Sets the `toString` method of `wrapper` to mimic the source of `reference`
- * with wrapper details in a comment at the top of the source body.
- *
- * @private
- * @param {Function} wrapper The function to modify.
- * @param {Function} reference The reference function.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @returns {Function} Returns `wrapper`.
- */
- function setWrapToString(wrapper, reference, bitmask) {
- var source = (reference + '');
- return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
- }
-
- /**
- * Creates a function that'll short out and invoke `identity` instead
- * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
- * milliseconds.
- *
- * @private
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new shortable function.
- */
- function shortOut(func) {
- var count = 0,
- lastCalled = 0;
-
- return function() {
- var stamp = nativeNow(),
- remaining = HOT_SPAN - (stamp - lastCalled);
-
- lastCalled = stamp;
- if (remaining > 0) {
- if (++count >= HOT_COUNT) {
- return arguments[0];
- }
- } else {
- count = 0;
- }
- return func.apply(undefined, arguments);
- };
- }
-
- /**
- * A specialized version of `_.shuffle` which mutates and sets the size of `array`.
- *
- * @private
- * @param {Array} array The array to shuffle.
- * @param {number} [size=array.length] The size of `array`.
- * @returns {Array} Returns `array`.
- */
- function shuffleSelf(array, size) {
- var index = -1,
- length = array.length,
- lastIndex = length - 1;
-
- size = size === undefined ? length : size;
- while (++index < size) {
- var rand = baseRandom(index, lastIndex),
- value = array[rand];
-
- array[rand] = array[index];
- array[index] = value;
- }
- array.length = size;
- return array;
- }
-
- /**
- * Converts `string` to a property path array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the property path array.
- */
- var stringToPath = memoizeCapped(function(string) {
- var result = [];
- if (string.charCodeAt(0) === 46 /* . */) {
- result.push('');
- }
- string.replace(rePropName, function(match, number, quote, subString) {
- result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
- });
- return result;
- });
-
- /**
- * Converts `value` to a string key if it's not a string or symbol.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {string|symbol} Returns the key.
- */
- function toKey(value) {
- if (typeof value == 'string' || isSymbol(value)) {
- return value;
- }
- var result = (value + '');
- return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
- }
-
- /**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to convert.
- * @returns {string} Returns the source code.
- */
- function toSource(func) {
- if (func != null) {
- try {
- return funcToString.call(func);
- } catch (e) {}
- try {
- return (func + '');
- } catch (e) {}
- }
- return '';
- }
-
- /**
- * Updates wrapper `details` based on `bitmask` flags.
- *
- * @private
- * @returns {Array} details The details to modify.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @returns {Array} Returns `details`.
- */
- function updateWrapDetails(details, bitmask) {
- arrayEach(wrapFlags, function(pair) {
- var value = '_.' + pair[0];
- if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
- details.push(value);
- }
- });
- return details.sort();
- }
-
- /**
- * Creates a clone of `wrapper`.
- *
- * @private
- * @param {Object} wrapper The wrapper to clone.
- * @returns {Object} Returns the cloned wrapper.
- */
- function wrapperClone(wrapper) {
- if (wrapper instanceof LazyWrapper) {
- return wrapper.clone();
- }
- var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
- result.__actions__ = copyArray(wrapper.__actions__);
- result.__index__ = wrapper.__index__;
- result.__values__ = wrapper.__values__;
- return result;
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Creates an array of elements split into groups the length of `size`.
- * If `array` can't be split evenly, the final chunk will be the remaining
- * elements.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to process.
- * @param {number} [size=1] The length of each chunk
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the new array of chunks.
- * @example
- *
- * _.chunk(['a', 'b', 'c', 'd'], 2);
- * // => [['a', 'b'], ['c', 'd']]
- *
- * _.chunk(['a', 'b', 'c', 'd'], 3);
- * // => [['a', 'b', 'c'], ['d']]
- */
- function chunk(array, size, guard) {
- if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
- size = 1;
- } else {
- size = nativeMax(toInteger(size), 0);
- }
- var length = array == null ? 0 : array.length;
- if (!length || size < 1) {
- return [];
- }
- var index = 0,
- resIndex = 0,
- result = Array(nativeCeil(length / size));
-
- while (index < length) {
- result[resIndex++] = baseSlice(array, index, (index += size));
- }
- return result;
- }
-
- /**
- * Creates an array with all falsey values removed. The values `false`, `null`,
- * `0`, `""`, `undefined`, and `NaN` are falsey.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to compact.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * _.compact([0, 1, false, 2, '', 3]);
- * // => [1, 2, 3]
- */
- function compact(array) {
- var index = -1,
- length = array == null ? 0 : array.length,
- resIndex = 0,
- result = [];
-
- while (++index < length) {
- var value = array[index];
- if (value) {
- result[resIndex++] = value;
- }
- }
- return result;
- }
-
- /**
- * Creates a new array concatenating `array` with any additional arrays
- * and/or values.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to concatenate.
- * @param {...*} [values] The values to concatenate.
- * @returns {Array} Returns the new concatenated array.
- * @example
- *
- * var array = [1];
- * var other = _.concat(array, 2, [3], [[4]]);
- *
- * console.log(other);
- * // => [1, 2, 3, [4]]
- *
- * console.log(array);
- * // => [1]
- */
- function concat() {
- var length = arguments.length;
- if (!length) {
- return [];
- }
- var args = Array(length - 1),
- array = arguments[0],
- index = length;
-
- while (index--) {
- args[index - 1] = arguments[index];
- }
- return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
- }
-
- /**
- * Creates an array of `array` values not included in the other given arrays
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons. The order and references of result values are
- * determined by the first array.
- *
- * **Note:** Unlike `_.pullAll`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {...Array} [values] The values to exclude.
- * @returns {Array} Returns the new array of filtered values.
- * @see _.without, _.xor
- * @example
- *
- * _.difference([2, 1], [2, 3]);
- * // => [1]
- */
- var difference = baseRest(function(array, values) {
- return isArrayLikeObject(array)
- ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
- : [];
- });
-
- /**
- * This method is like `_.difference` except that it accepts `iteratee` which
- * is invoked for each element of `array` and `values` to generate the criterion
- * by which they're compared. The order and references of result values are
- * determined by the first array. The iteratee is invoked with one argument:
- * (value).
- *
- * **Note:** Unlike `_.pullAllBy`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {...Array} [values] The values to exclude.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
- * // => [1.2]
- *
- * // The `_.property` iteratee shorthand.
- * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
- * // => [{ 'x': 2 }]
- */
- var differenceBy = baseRest(function(array, values) {
- var iteratee = last(values);
- if (isArrayLikeObject(iteratee)) {
- iteratee = undefined;
- }
- return isArrayLikeObject(array)
- ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))
- : [];
- });
-
- /**
- * This method is like `_.difference` except that it accepts `comparator`
- * which is invoked to compare elements of `array` to `values`. The order and
- * references of result values are determined by the first array. The comparator
- * is invoked with two arguments: (arrVal, othVal).
- *
- * **Note:** Unlike `_.pullAllWith`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {...Array} [values] The values to exclude.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
- *
- * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
- * // => [{ 'x': 2, 'y': 1 }]
- */
- var differenceWith = baseRest(function(array, values) {
- var comparator = last(values);
- if (isArrayLikeObject(comparator)) {
- comparator = undefined;
- }
- return isArrayLikeObject(array)
- ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)
- : [];
- });
-
- /**
- * Creates a slice of `array` with `n` elements dropped from the beginning.
- *
- * @static
- * @memberOf _
- * @since 0.5.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to drop.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.drop([1, 2, 3]);
- * // => [2, 3]
- *
- * _.drop([1, 2, 3], 2);
- * // => [3]
- *
- * _.drop([1, 2, 3], 5);
- * // => []
- *
- * _.drop([1, 2, 3], 0);
- * // => [1, 2, 3]
- */
- function drop(array, n, guard) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return [];
- }
- n = (guard || n === undefined) ? 1 : toInteger(n);
- return baseSlice(array, n < 0 ? 0 : n, length);
- }
-
- /**
- * Creates a slice of `array` with `n` elements dropped from the end.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to drop.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.dropRight([1, 2, 3]);
- * // => [1, 2]
- *
- * _.dropRight([1, 2, 3], 2);
- * // => [1]
- *
- * _.dropRight([1, 2, 3], 5);
- * // => []
- *
- * _.dropRight([1, 2, 3], 0);
- * // => [1, 2, 3]
- */
- function dropRight(array, n, guard) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return [];
- }
- n = (guard || n === undefined) ? 1 : toInteger(n);
- n = length - n;
- return baseSlice(array, 0, n < 0 ? 0 : n);
- }
-
- /**
- * Creates a slice of `array` excluding elements dropped from the end.
- * Elements are dropped until `predicate` returns falsey. The predicate is
- * invoked with three arguments: (value, index, array).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'active': true },
- * { 'user': 'fred', 'active': false },
- * { 'user': 'pebbles', 'active': false }
- * ];
- *
- * _.dropRightWhile(users, function(o) { return !o.active; });
- * // => objects for ['barney']
- *
- * // The `_.matches` iteratee shorthand.
- * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
- * // => objects for ['barney', 'fred']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.dropRightWhile(users, ['active', false]);
- * // => objects for ['barney']
- *
- * // The `_.property` iteratee shorthand.
- * _.dropRightWhile(users, 'active');
- * // => objects for ['barney', 'fred', 'pebbles']
- */
- function dropRightWhile(array, predicate) {
- return (array && array.length)
- ? baseWhile(array, getIteratee(predicate, 3), true, true)
- : [];
- }
-
- /**
- * Creates a slice of `array` excluding elements dropped from the beginning.
- * Elements are dropped until `predicate` returns falsey. The predicate is
- * invoked with three arguments: (value, index, array).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'active': false },
- * { 'user': 'fred', 'active': false },
- * { 'user': 'pebbles', 'active': true }
- * ];
- *
- * _.dropWhile(users, function(o) { return !o.active; });
- * // => objects for ['pebbles']
- *
- * // The `_.matches` iteratee shorthand.
- * _.dropWhile(users, { 'user': 'barney', 'active': false });
- * // => objects for ['fred', 'pebbles']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.dropWhile(users, ['active', false]);
- * // => objects for ['pebbles']
- *
- * // The `_.property` iteratee shorthand.
- * _.dropWhile(users, 'active');
- * // => objects for ['barney', 'fred', 'pebbles']
- */
- function dropWhile(array, predicate) {
- return (array && array.length)
- ? baseWhile(array, getIteratee(predicate, 3), true)
- : [];
- }
-
- /**
- * Fills elements of `array` with `value` from `start` up to, but not
- * including, `end`.
- *
- * **Note:** This method mutates `array`.
- *
- * @static
- * @memberOf _
- * @since 3.2.0
- * @category Array
- * @param {Array} array The array to fill.
- * @param {*} value The value to fill `array` with.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = [1, 2, 3];
- *
- * _.fill(array, 'a');
- * console.log(array);
- * // => ['a', 'a', 'a']
- *
- * _.fill(Array(3), 2);
- * // => [2, 2, 2]
- *
- * _.fill([4, 6, 8, 10], '*', 1, 3);
- * // => [4, '*', '*', 10]
- */
- function fill(array, value, start, end) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return [];
- }
- if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
- start = 0;
- end = length;
- }
- return baseFill(array, value, start, end);
- }
-
- /**
- * This method is like `_.find` except that it returns the index of the first
- * element `predicate` returns truthy for instead of the element itself.
- *
- * @static
- * @memberOf _
- * @since 1.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {number} Returns the index of the found element, else `-1`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'active': false },
- * { 'user': 'fred', 'active': false },
- * { 'user': 'pebbles', 'active': true }
- * ];
- *
- * _.findIndex(users, function(o) { return o.user == 'barney'; });
- * // => 0
- *
- * // The `_.matches` iteratee shorthand.
- * _.findIndex(users, { 'user': 'fred', 'active': false });
- * // => 1
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findIndex(users, ['active', false]);
- * // => 0
- *
- * // The `_.property` iteratee shorthand.
- * _.findIndex(users, 'active');
- * // => 2
- */
- function findIndex(array, predicate, fromIndex) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return -1;
- }
- var index = fromIndex == null ? 0 : toInteger(fromIndex);
- if (index < 0) {
- index = nativeMax(length + index, 0);
- }
- return baseFindIndex(array, getIteratee(predicate, 3), index);
- }
-
- /**
- * This method is like `_.findIndex` except that it iterates over elements
- * of `collection` from right to left.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=array.length-1] The index to search from.
- * @returns {number} Returns the index of the found element, else `-1`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'active': true },
- * { 'user': 'fred', 'active': false },
- * { 'user': 'pebbles', 'active': false }
- * ];
- *
- * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
- * // => 2
- *
- * // The `_.matches` iteratee shorthand.
- * _.findLastIndex(users, { 'user': 'barney', 'active': true });
- * // => 0
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findLastIndex(users, ['active', false]);
- * // => 2
- *
- * // The `_.property` iteratee shorthand.
- * _.findLastIndex(users, 'active');
- * // => 0
- */
- function findLastIndex(array, predicate, fromIndex) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return -1;
- }
- var index = length - 1;
- if (fromIndex !== undefined) {
- index = toInteger(fromIndex);
- index = fromIndex < 0
- ? nativeMax(length + index, 0)
- : nativeMin(index, length - 1);
- }
- return baseFindIndex(array, getIteratee(predicate, 3), index, true);
- }
-
- /**
- * Flattens `array` a single level deep.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to flatten.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * _.flatten([1, [2, [3, [4]], 5]]);
- * // => [1, 2, [3, [4]], 5]
- */
- function flatten(array) {
- var length = array == null ? 0 : array.length;
- return length ? baseFlatten(array, 1) : [];
- }
-
- /**
- * Recursively flattens `array`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to flatten.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * _.flattenDeep([1, [2, [3, [4]], 5]]);
- * // => [1, 2, 3, 4, 5]
- */
- function flattenDeep(array) {
- var length = array == null ? 0 : array.length;
- return length ? baseFlatten(array, INFINITY) : [];
- }
-
- /**
- * Recursively flatten `array` up to `depth` times.
- *
- * @static
- * @memberOf _
- * @since 4.4.0
- * @category Array
- * @param {Array} array The array to flatten.
- * @param {number} [depth=1] The maximum recursion depth.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * var array = [1, [2, [3, [4]], 5]];
- *
- * _.flattenDepth(array, 1);
- * // => [1, 2, [3, [4]], 5]
- *
- * _.flattenDepth(array, 2);
- * // => [1, 2, 3, [4], 5]
- */
- function flattenDepth(array, depth) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return [];
- }
- depth = depth === undefined ? 1 : toInteger(depth);
- return baseFlatten(array, depth);
- }
-
- /**
- * The inverse of `_.toPairs`; this method returns an object composed
- * from key-value `pairs`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} pairs The key-value pairs.
- * @returns {Object} Returns the new object.
- * @example
- *
- * _.fromPairs([['a', 1], ['b', 2]]);
- * // => { 'a': 1, 'b': 2 }
- */
- function fromPairs(pairs) {
- var index = -1,
- length = pairs == null ? 0 : pairs.length,
- result = {};
-
- while (++index < length) {
- var pair = pairs[index];
- result[pair[0]] = pair[1];
- }
- return result;
- }
-
- /**
- * Gets the first element of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @alias first
- * @category Array
- * @param {Array} array The array to query.
- * @returns {*} Returns the first element of `array`.
- * @example
- *
- * _.head([1, 2, 3]);
- * // => 1
- *
- * _.head([]);
- * // => undefined
- */
- function head(array) {
- return (array && array.length) ? array[0] : undefined;
- }
-
- /**
- * Gets the index at which the first occurrence of `value` is found in `array`
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons. If `fromIndex` is negative, it's used as the
- * offset from the end of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- * @example
- *
- * _.indexOf([1, 2, 1, 2], 2);
- * // => 1
- *
- * // Search from the `fromIndex`.
- * _.indexOf([1, 2, 1, 2], 2, 2);
- * // => 3
- */
- function indexOf(array, value, fromIndex) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return -1;
- }
- var index = fromIndex == null ? 0 : toInteger(fromIndex);
- if (index < 0) {
- index = nativeMax(length + index, 0);
- }
- return baseIndexOf(array, value, index);
- }
-
- /**
- * Gets all but the last element of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to query.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.initial([1, 2, 3]);
- * // => [1, 2]
- */
- function initial(array) {
- var length = array == null ? 0 : array.length;
- return length ? baseSlice(array, 0, -1) : [];
- }
-
- /**
- * Creates an array of unique values that are included in all given arrays
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons. The order and references of result values are
- * determined by the first array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @returns {Array} Returns the new array of intersecting values.
- * @example
- *
- * _.intersection([2, 1], [2, 3]);
- * // => [2]
- */
- var intersection = baseRest(function(arrays) {
- var mapped = arrayMap(arrays, castArrayLikeObject);
- return (mapped.length && mapped[0] === arrays[0])
- ? baseIntersection(mapped)
- : [];
- });
-
- /**
- * This method is like `_.intersection` except that it accepts `iteratee`
- * which is invoked for each element of each `arrays` to generate the criterion
- * by which they're compared. The order and references of result values are
- * determined by the first array. The iteratee is invoked with one argument:
- * (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new array of intersecting values.
- * @example
- *
- * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
- * // => [2.1]
- *
- * // The `_.property` iteratee shorthand.
- * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 1 }]
- */
- var intersectionBy = baseRest(function(arrays) {
- var iteratee = last(arrays),
- mapped = arrayMap(arrays, castArrayLikeObject);
-
- if (iteratee === last(mapped)) {
- iteratee = undefined;
- } else {
- mapped.pop();
- }
- return (mapped.length && mapped[0] === arrays[0])
- ? baseIntersection(mapped, getIteratee(iteratee, 2))
- : [];
- });
-
- /**
- * This method is like `_.intersection` except that it accepts `comparator`
- * which is invoked to compare elements of `arrays`. The order and references
- * of result values are determined by the first array. The comparator is
- * invoked with two arguments: (arrVal, othVal).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of intersecting values.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
- * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
- *
- * _.intersectionWith(objects, others, _.isEqual);
- * // => [{ 'x': 1, 'y': 2 }]
- */
- var intersectionWith = baseRest(function(arrays) {
- var comparator = last(arrays),
- mapped = arrayMap(arrays, castArrayLikeObject);
-
- comparator = typeof comparator == 'function' ? comparator : undefined;
- if (comparator) {
- mapped.pop();
- }
- return (mapped.length && mapped[0] === arrays[0])
- ? baseIntersection(mapped, undefined, comparator)
- : [];
- });
-
- /**
- * Converts all elements in `array` into a string separated by `separator`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to convert.
- * @param {string} [separator=','] The element separator.
- * @returns {string} Returns the joined string.
- * @example
- *
- * _.join(['a', 'b', 'c'], '~');
- * // => 'a~b~c'
- */
- function join(array, separator) {
- return array == null ? '' : nativeJoin.call(array, separator);
- }
-
- /**
- * Gets the last element of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to query.
- * @returns {*} Returns the last element of `array`.
- * @example
- *
- * _.last([1, 2, 3]);
- * // => 3
- */
- function last(array) {
- var length = array == null ? 0 : array.length;
- return length ? array[length - 1] : undefined;
- }
-
- /**
- * This method is like `_.indexOf` except that it iterates over elements of
- * `array` from right to left.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} [fromIndex=array.length-1] The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- * @example
- *
- * _.lastIndexOf([1, 2, 1, 2], 2);
- * // => 3
- *
- * // Search from the `fromIndex`.
- * _.lastIndexOf([1, 2, 1, 2], 2, 2);
- * // => 1
- */
- function lastIndexOf(array, value, fromIndex) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return -1;
- }
- var index = length;
- if (fromIndex !== undefined) {
- index = toInteger(fromIndex);
- index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
- }
- return value === value
- ? strictLastIndexOf(array, value, index)
- : baseFindIndex(array, baseIsNaN, index, true);
- }
-
- /**
- * Gets the element at index `n` of `array`. If `n` is negative, the nth
- * element from the end is returned.
- *
- * @static
- * @memberOf _
- * @since 4.11.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=0] The index of the element to return.
- * @returns {*} Returns the nth element of `array`.
- * @example
- *
- * var array = ['a', 'b', 'c', 'd'];
- *
- * _.nth(array, 1);
- * // => 'b'
- *
- * _.nth(array, -2);
- * // => 'c';
- */
- function nth(array, n) {
- return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;
- }
-
- /**
- * Removes all given values from `array` using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
- * to remove elements from an array by predicate.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {...*} [values] The values to remove.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
- *
- * _.pull(array, 'a', 'c');
- * console.log(array);
- * // => ['b', 'b']
- */
- var pull = baseRest(pullAll);
-
- /**
- * This method is like `_.pull` except that it accepts an array of values to remove.
- *
- * **Note:** Unlike `_.difference`, this method mutates `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {Array} values The values to remove.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
- *
- * _.pullAll(array, ['a', 'c']);
- * console.log(array);
- * // => ['b', 'b']
- */
- function pullAll(array, values) {
- return (array && array.length && values && values.length)
- ? basePullAll(array, values)
- : array;
- }
-
- /**
- * This method is like `_.pullAll` except that it accepts `iteratee` which is
- * invoked for each element of `array` and `values` to generate the criterion
- * by which they're compared. The iteratee is invoked with one argument: (value).
- *
- * **Note:** Unlike `_.differenceBy`, this method mutates `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {Array} values The values to remove.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
- *
- * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
- * console.log(array);
- * // => [{ 'x': 2 }]
- */
- function pullAllBy(array, values, iteratee) {
- return (array && array.length && values && values.length)
- ? basePullAll(array, values, getIteratee(iteratee, 2))
- : array;
- }
-
- /**
- * This method is like `_.pullAll` except that it accepts `comparator` which
- * is invoked to compare elements of `array` to `values`. The comparator is
- * invoked with two arguments: (arrVal, othVal).
- *
- * **Note:** Unlike `_.differenceWith`, this method mutates `array`.
- *
- * @static
- * @memberOf _
- * @since 4.6.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {Array} values The values to remove.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
- *
- * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
- * console.log(array);
- * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
- */
- function pullAllWith(array, values, comparator) {
- return (array && array.length && values && values.length)
- ? basePullAll(array, values, undefined, comparator)
- : array;
- }
-
- /**
- * Removes elements from `array` corresponding to `indexes` and returns an
- * array of removed elements.
- *
- * **Note:** Unlike `_.at`, this method mutates `array`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {...(number|number[])} [indexes] The indexes of elements to remove.
- * @returns {Array} Returns the new array of removed elements.
- * @example
- *
- * var array = ['a', 'b', 'c', 'd'];
- * var pulled = _.pullAt(array, [1, 3]);
- *
- * console.log(array);
- * // => ['a', 'c']
- *
- * console.log(pulled);
- * // => ['b', 'd']
- */
- var pullAt = flatRest(function(array, indexes) {
- var length = array == null ? 0 : array.length,
- result = baseAt(array, indexes);
-
- basePullAt(array, arrayMap(indexes, function(index) {
- return isIndex(index, length) ? +index : index;
- }).sort(compareAscending));
-
- return result;
- });
-
- /**
- * Removes all elements from `array` that `predicate` returns truthy for
- * and returns an array of the removed elements. The predicate is invoked
- * with three arguments: (value, index, array).
- *
- * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`
- * to pull elements from an array by value.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new array of removed elements.
- * @example
- *
- * var array = [1, 2, 3, 4];
- * var evens = _.remove(array, function(n) {
- * return n % 2 == 0;
- * });
- *
- * console.log(array);
- * // => [1, 3]
- *
- * console.log(evens);
- * // => [2, 4]
- */
- function remove(array, predicate) {
- var result = [];
- if (!(array && array.length)) {
- return result;
- }
- var index = -1,
- indexes = [],
- length = array.length;
-
- predicate = getIteratee(predicate, 3);
- while (++index < length) {
- var value = array[index];
- if (predicate(value, index, array)) {
- result.push(value);
- indexes.push(index);
- }
- }
- basePullAt(array, indexes);
- return result;
- }
-
- /**
- * Reverses `array` so that the first element becomes the last, the second
- * element becomes the second to last, and so on.
- *
- * **Note:** This method mutates `array` and is based on
- * [`Array#reverse`](https://mdn.io/Array/reverse).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = [1, 2, 3];
- *
- * _.reverse(array);
- * // => [3, 2, 1]
- *
- * console.log(array);
- * // => [3, 2, 1]
- */
- function reverse(array) {
- return array == null ? array : nativeReverse.call(array);
- }
-
- /**
- * Creates a slice of `array` from `start` up to, but not including, `end`.
- *
- * **Note:** This method is used instead of
- * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
- * returned.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to slice.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the slice of `array`.
- */
- function slice(array, start, end) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return [];
- }
- if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
- start = 0;
- end = length;
- }
- else {
- start = start == null ? 0 : toInteger(start);
- end = end === undefined ? length : toInteger(end);
- }
- return baseSlice(array, start, end);
- }
-
- /**
- * Uses a binary search to determine the lowest index at which `value`
- * should be inserted into `array` in order to maintain its sort order.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @returns {number} Returns the index at which `value` should be inserted
- * into `array`.
- * @example
- *
- * _.sortedIndex([30, 50], 40);
- * // => 1
- */
- function sortedIndex(array, value) {
- return baseSortedIndex(array, value);
- }
-
- /**
- * This method is like `_.sortedIndex` except that it accepts `iteratee`
- * which is invoked for `value` and each element of `array` to compute their
- * sort ranking. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {number} Returns the index at which `value` should be inserted
- * into `array`.
- * @example
- *
- * var objects = [{ 'x': 4 }, { 'x': 5 }];
- *
- * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
- * // => 0
- *
- * // The `_.property` iteratee shorthand.
- * _.sortedIndexBy(objects, { 'x': 4 }, 'x');
- * // => 0
- */
- function sortedIndexBy(array, value, iteratee) {
- return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));
- }
-
- /**
- * This method is like `_.indexOf` except that it performs a binary
- * search on a sorted `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- * @example
- *
- * _.sortedIndexOf([4, 5, 5, 5, 6], 5);
- * // => 1
- */
- function sortedIndexOf(array, value) {
- var length = array == null ? 0 : array.length;
- if (length) {
- var index = baseSortedIndex(array, value);
- if (index < length && eq(array[index], value)) {
- return index;
- }
- }
- return -1;
- }
-
- /**
- * This method is like `_.sortedIndex` except that it returns the highest
- * index at which `value` should be inserted into `array` in order to
- * maintain its sort order.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @returns {number} Returns the index at which `value` should be inserted
- * into `array`.
- * @example
- *
- * _.sortedLastIndex([4, 5, 5, 5, 6], 5);
- * // => 4
- */
- function sortedLastIndex(array, value) {
- return baseSortedIndex(array, value, true);
- }
-
- /**
- * This method is like `_.sortedLastIndex` except that it accepts `iteratee`
- * which is invoked for `value` and each element of `array` to compute their
- * sort ranking. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {number} Returns the index at which `value` should be inserted
- * into `array`.
- * @example
- *
- * var objects = [{ 'x': 4 }, { 'x': 5 }];
- *
- * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
- * // => 1
- *
- * // The `_.property` iteratee shorthand.
- * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
- * // => 1
- */
- function sortedLastIndexBy(array, value, iteratee) {
- return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);
- }
-
- /**
- * This method is like `_.lastIndexOf` except that it performs a binary
- * search on a sorted `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- * @example
- *
- * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);
- * // => 3
- */
- function sortedLastIndexOf(array, value) {
- var length = array == null ? 0 : array.length;
- if (length) {
- var index = baseSortedIndex(array, value, true) - 1;
- if (eq(array[index], value)) {
- return index;
- }
- }
- return -1;
- }
-
- /**
- * This method is like `_.uniq` except that it's designed and optimized
- * for sorted arrays.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.sortedUniq([1, 1, 2]);
- * // => [1, 2]
- */
- function sortedUniq(array) {
- return (array && array.length)
- ? baseSortedUniq(array)
- : [];
- }
-
- /**
- * This method is like `_.uniqBy` except that it's designed and optimized
- * for sorted arrays.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
- * // => [1.1, 2.3]
- */
- function sortedUniqBy(array, iteratee) {
- return (array && array.length)
- ? baseSortedUniq(array, getIteratee(iteratee, 2))
- : [];
- }
-
- /**
- * Gets all but the first element of `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.tail([1, 2, 3]);
- * // => [2, 3]
- */
- function tail(array) {
- var length = array == null ? 0 : array.length;
- return length ? baseSlice(array, 1, length) : [];
- }
-
- /**
- * Creates a slice of `array` with `n` elements taken from the beginning.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to take.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.take([1, 2, 3]);
- * // => [1]
- *
- * _.take([1, 2, 3], 2);
- * // => [1, 2]
- *
- * _.take([1, 2, 3], 5);
- * // => [1, 2, 3]
- *
- * _.take([1, 2, 3], 0);
- * // => []
- */
- function take(array, n, guard) {
- if (!(array && array.length)) {
- return [];
- }
- n = (guard || n === undefined) ? 1 : toInteger(n);
- return baseSlice(array, 0, n < 0 ? 0 : n);
- }
-
- /**
- * Creates a slice of `array` with `n` elements taken from the end.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to take.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.takeRight([1, 2, 3]);
- * // => [3]
- *
- * _.takeRight([1, 2, 3], 2);
- * // => [2, 3]
- *
- * _.takeRight([1, 2, 3], 5);
- * // => [1, 2, 3]
- *
- * _.takeRight([1, 2, 3], 0);
- * // => []
- */
- function takeRight(array, n, guard) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return [];
- }
- n = (guard || n === undefined) ? 1 : toInteger(n);
- n = length - n;
- return baseSlice(array, n < 0 ? 0 : n, length);
- }
-
- /**
- * Creates a slice of `array` with elements taken from the end. Elements are
- * taken until `predicate` returns falsey. The predicate is invoked with
- * three arguments: (value, index, array).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'active': true },
- * { 'user': 'fred', 'active': false },
- * { 'user': 'pebbles', 'active': false }
- * ];
- *
- * _.takeRightWhile(users, function(o) { return !o.active; });
- * // => objects for ['fred', 'pebbles']
- *
- * // The `_.matches` iteratee shorthand.
- * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
- * // => objects for ['pebbles']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.takeRightWhile(users, ['active', false]);
- * // => objects for ['fred', 'pebbles']
- *
- * // The `_.property` iteratee shorthand.
- * _.takeRightWhile(users, 'active');
- * // => []
- */
- function takeRightWhile(array, predicate) {
- return (array && array.length)
- ? baseWhile(array, getIteratee(predicate, 3), false, true)
- : [];
- }
-
- /**
- * Creates a slice of `array` with elements taken from the beginning. Elements
- * are taken until `predicate` returns falsey. The predicate is invoked with
- * three arguments: (value, index, array).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'active': false },
- * { 'user': 'fred', 'active': false },
- * { 'user': 'pebbles', 'active': true }
- * ];
- *
- * _.takeWhile(users, function(o) { return !o.active; });
- * // => objects for ['barney', 'fred']
- *
- * // The `_.matches` iteratee shorthand.
- * _.takeWhile(users, { 'user': 'barney', 'active': false });
- * // => objects for ['barney']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.takeWhile(users, ['active', false]);
- * // => objects for ['barney', 'fred']
- *
- * // The `_.property` iteratee shorthand.
- * _.takeWhile(users, 'active');
- * // => []
- */
- function takeWhile(array, predicate) {
- return (array && array.length)
- ? baseWhile(array, getIteratee(predicate, 3))
- : [];
- }
-
- /**
- * Creates an array of unique values, in order, from all given arrays using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @returns {Array} Returns the new array of combined values.
- * @example
- *
- * _.union([2], [1, 2]);
- * // => [2, 1]
- */
- var union = baseRest(function(arrays) {
- return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
- });
-
- /**
- * This method is like `_.union` except that it accepts `iteratee` which is
- * invoked for each element of each `arrays` to generate the criterion by
- * which uniqueness is computed. Result values are chosen from the first
- * array in which the value occurs. The iteratee is invoked with one argument:
- * (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new array of combined values.
- * @example
- *
- * _.unionBy([2.1], [1.2, 2.3], Math.floor);
- * // => [2.1, 1.2]
- *
- * // The `_.property` iteratee shorthand.
- * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 1 }, { 'x': 2 }]
- */
- var unionBy = baseRest(function(arrays) {
- var iteratee = last(arrays);
- if (isArrayLikeObject(iteratee)) {
- iteratee = undefined;
- }
- return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));
- });
-
- /**
- * This method is like `_.union` except that it accepts `comparator` which
- * is invoked to compare elements of `arrays`. Result values are chosen from
- * the first array in which the value occurs. The comparator is invoked
- * with two arguments: (arrVal, othVal).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of combined values.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
- * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
- *
- * _.unionWith(objects, others, _.isEqual);
- * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
- */
- var unionWith = baseRest(function(arrays) {
- var comparator = last(arrays);
- comparator = typeof comparator == 'function' ? comparator : undefined;
- return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
- });
-
- /**
- * Creates a duplicate-free version of an array, using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons, in which only the first occurrence of each element
- * is kept. The order of result values is determined by the order they occur
- * in the array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.uniq([2, 1, 2]);
- * // => [2, 1]
- */
- function uniq(array) {
- return (array && array.length) ? baseUniq(array) : [];
- }
-
- /**
- * This method is like `_.uniq` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the criterion by which
- * uniqueness is computed. The order of result values is determined by the
- * order they occur in the array. The iteratee is invoked with one argument:
- * (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
- * // => [2.1, 1.2]
- *
- * // The `_.property` iteratee shorthand.
- * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 1 }, { 'x': 2 }]
- */
- function uniqBy(array, iteratee) {
- return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];
- }
-
- /**
- * This method is like `_.uniq` except that it accepts `comparator` which
- * is invoked to compare elements of `array`. The order of result values is
- * determined by the order they occur in the array.The comparator is invoked
- * with two arguments: (arrVal, othVal).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
- *
- * _.uniqWith(objects, _.isEqual);
- * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
- */
- function uniqWith(array, comparator) {
- comparator = typeof comparator == 'function' ? comparator : undefined;
- return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
- }
-
- /**
- * This method is like `_.zip` except that it accepts an array of grouped
- * elements and creates an array regrouping the elements to their pre-zip
- * configuration.
- *
- * @static
- * @memberOf _
- * @since 1.2.0
- * @category Array
- * @param {Array} array The array of grouped elements to process.
- * @returns {Array} Returns the new array of regrouped elements.
- * @example
- *
- * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
- * // => [['a', 1, true], ['b', 2, false]]
- *
- * _.unzip(zipped);
- * // => [['a', 'b'], [1, 2], [true, false]]
- */
- function unzip(array) {
- if (!(array && array.length)) {
- return [];
- }
- var length = 0;
- array = arrayFilter(array, function(group) {
- if (isArrayLikeObject(group)) {
- length = nativeMax(group.length, length);
- return true;
- }
- });
- return baseTimes(length, function(index) {
- return arrayMap(array, baseProperty(index));
- });
- }
-
- /**
- * This method is like `_.unzip` except that it accepts `iteratee` to specify
- * how regrouped values should be combined. The iteratee is invoked with the
- * elements of each group: (...group).
- *
- * @static
- * @memberOf _
- * @since 3.8.0
- * @category Array
- * @param {Array} array The array of grouped elements to process.
- * @param {Function} [iteratee=_.identity] The function to combine
- * regrouped values.
- * @returns {Array} Returns the new array of regrouped elements.
- * @example
- *
- * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
- * // => [[1, 10, 100], [2, 20, 200]]
- *
- * _.unzipWith(zipped, _.add);
- * // => [3, 30, 300]
- */
- function unzipWith(array, iteratee) {
- if (!(array && array.length)) {
- return [];
- }
- var result = unzip(array);
- if (iteratee == null) {
- return result;
- }
- return arrayMap(result, function(group) {
- return apply(iteratee, undefined, group);
- });
- }
-
- /**
- * Creates an array excluding all given values using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * **Note:** Unlike `_.pull`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {...*} [values] The values to exclude.
- * @returns {Array} Returns the new array of filtered values.
- * @see _.difference, _.xor
- * @example
- *
- * _.without([2, 1, 2, 3], 1, 2);
- * // => [3]
- */
- var without = baseRest(function(array, values) {
- return isArrayLikeObject(array)
- ? baseDifference(array, values)
- : [];
- });
-
- /**
- * Creates an array of unique values that is the
- * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
- * of the given arrays. The order of result values is determined by the order
- * they occur in the arrays.
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @returns {Array} Returns the new array of filtered values.
- * @see _.difference, _.without
- * @example
- *
- * _.xor([2, 1], [2, 3]);
- * // => [1, 3]
- */
- var xor = baseRest(function(arrays) {
- return baseXor(arrayFilter(arrays, isArrayLikeObject));
- });
-
- /**
- * This method is like `_.xor` except that it accepts `iteratee` which is
- * invoked for each element of each `arrays` to generate the criterion by
- * which by which they're compared. The order of result values is determined
- * by the order they occur in the arrays. The iteratee is invoked with one
- * argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
- * // => [1.2, 3.4]
- *
- * // The `_.property` iteratee shorthand.
- * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 2 }]
- */
- var xorBy = baseRest(function(arrays) {
- var iteratee = last(arrays);
- if (isArrayLikeObject(iteratee)) {
- iteratee = undefined;
- }
- return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));
- });
-
- /**
- * This method is like `_.xor` except that it accepts `comparator` which is
- * invoked to compare elements of `arrays`. The order of result values is
- * determined by the order they occur in the arrays. The comparator is invoked
- * with two arguments: (arrVal, othVal).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
- * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
- *
- * _.xorWith(objects, others, _.isEqual);
- * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
- */
- var xorWith = baseRest(function(arrays) {
- var comparator = last(arrays);
- comparator = typeof comparator == 'function' ? comparator : undefined;
- return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
- });
-
- /**
- * Creates an array of grouped elements, the first of which contains the
- * first elements of the given arrays, the second of which contains the
- * second elements of the given arrays, and so on.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {...Array} [arrays] The arrays to process.
- * @returns {Array} Returns the new array of grouped elements.
- * @example
- *
- * _.zip(['a', 'b'], [1, 2], [true, false]);
- * // => [['a', 1, true], ['b', 2, false]]
- */
- var zip = baseRest(unzip);
-
- /**
- * This method is like `_.fromPairs` except that it accepts two arrays,
- * one of property identifiers and one of corresponding values.
- *
- * @static
- * @memberOf _
- * @since 0.4.0
- * @category Array
- * @param {Array} [props=[]] The property identifiers.
- * @param {Array} [values=[]] The property values.
- * @returns {Object} Returns the new object.
- * @example
- *
- * _.zipObject(['a', 'b'], [1, 2]);
- * // => { 'a': 1, 'b': 2 }
- */
- function zipObject(props, values) {
- return baseZipObject(props || [], values || [], assignValue);
- }
-
- /**
- * This method is like `_.zipObject` except that it supports property paths.
- *
- * @static
- * @memberOf _
- * @since 4.1.0
- * @category Array
- * @param {Array} [props=[]] The property identifiers.
- * @param {Array} [values=[]] The property values.
- * @returns {Object} Returns the new object.
- * @example
- *
- * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
- * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
- */
- function zipObjectDeep(props, values) {
- return baseZipObject(props || [], values || [], baseSet);
- }
-
- /**
- * This method is like `_.zip` except that it accepts `iteratee` to specify
- * how grouped values should be combined. The iteratee is invoked with the
- * elements of each group: (...group).
- *
- * @static
- * @memberOf _
- * @since 3.8.0
- * @category Array
- * @param {...Array} [arrays] The arrays to process.
- * @param {Function} [iteratee=_.identity] The function to combine
- * grouped values.
- * @returns {Array} Returns the new array of grouped elements.
- * @example
- *
- * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
- * return a + b + c;
- * });
- * // => [111, 222]
- */
- var zipWith = baseRest(function(arrays) {
- var length = arrays.length,
- iteratee = length > 1 ? arrays[length - 1] : undefined;
-
- iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;
- return unzipWith(arrays, iteratee);
- });
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Creates a `lodash` wrapper instance that wraps `value` with explicit method
- * chain sequences enabled. The result of such sequences must be unwrapped
- * with `_#value`.
- *
- * @static
- * @memberOf _
- * @since 1.3.0
- * @category Seq
- * @param {*} value The value to wrap.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36 },
- * { 'user': 'fred', 'age': 40 },
- * { 'user': 'pebbles', 'age': 1 }
- * ];
- *
- * var youngest = _
- * .chain(users)
- * .sortBy('age')
- * .map(function(o) {
- * return o.user + ' is ' + o.age;
- * })
- * .head()
- * .value();
- * // => 'pebbles is 1'
- */
- function chain(value) {
- var result = lodash(value);
- result.__chain__ = true;
- return result;
- }
-
- /**
- * This method invokes `interceptor` and returns `value`. The interceptor
- * is invoked with one argument; (value). The purpose of this method is to
- * "tap into" a method chain sequence in order to modify intermediate results.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Seq
- * @param {*} value The value to provide to `interceptor`.
- * @param {Function} interceptor The function to invoke.
- * @returns {*} Returns `value`.
- * @example
- *
- * _([1, 2, 3])
- * .tap(function(array) {
- * // Mutate input array.
- * array.pop();
- * })
- * .reverse()
- * .value();
- * // => [2, 1]
- */
- function tap(value, interceptor) {
- interceptor(value);
- return value;
- }
-
- /**
- * This method is like `_.tap` except that it returns the result of `interceptor`.
- * The purpose of this method is to "pass thru" values replacing intermediate
- * results in a method chain sequence.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Seq
- * @param {*} value The value to provide to `interceptor`.
- * @param {Function} interceptor The function to invoke.
- * @returns {*} Returns the result of `interceptor`.
- * @example
- *
- * _(' abc ')
- * .chain()
- * .trim()
- * .thru(function(value) {
- * return [value];
- * })
- * .value();
- * // => ['abc']
- */
- function thru(value, interceptor) {
- return interceptor(value);
- }
-
- /**
- * This method is the wrapper version of `_.at`.
- *
- * @name at
- * @memberOf _
- * @since 1.0.0
- * @category Seq
- * @param {...(string|string[])} [paths] The property paths to pick.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
- *
- * _(object).at(['a[0].b.c', 'a[1]']).value();
- * // => [3, 4]
- */
- var wrapperAt = flatRest(function(paths) {
- var length = paths.length,
- start = length ? paths[0] : 0,
- value = this.__wrapped__,
- interceptor = function(object) { return baseAt(object, paths); };
-
- if (length > 1 || this.__actions__.length ||
- !(value instanceof LazyWrapper) || !isIndex(start)) {
- return this.thru(interceptor);
- }
- value = value.slice(start, +start + (length ? 1 : 0));
- value.__actions__.push({
- 'func': thru,
- 'args': [interceptor],
- 'thisArg': undefined
- });
- return new LodashWrapper(value, this.__chain__).thru(function(array) {
- if (length && !array.length) {
- array.push(undefined);
- }
- return array;
- });
- });
-
- /**
- * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
- *
- * @name chain
- * @memberOf _
- * @since 0.1.0
- * @category Seq
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36 },
- * { 'user': 'fred', 'age': 40 }
- * ];
- *
- * // A sequence without explicit chaining.
- * _(users).head();
- * // => { 'user': 'barney', 'age': 36 }
- *
- * // A sequence with explicit chaining.
- * _(users)
- * .chain()
- * .head()
- * .pick('user')
- * .value();
- * // => { 'user': 'barney' }
- */
- function wrapperChain() {
- return chain(this);
- }
-
- /**
- * Executes the chain sequence and returns the wrapped result.
- *
- * @name commit
- * @memberOf _
- * @since 3.2.0
- * @category Seq
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var array = [1, 2];
- * var wrapped = _(array).push(3);
- *
- * console.log(array);
- * // => [1, 2]
- *
- * wrapped = wrapped.commit();
- * console.log(array);
- * // => [1, 2, 3]
- *
- * wrapped.last();
- * // => 3
- *
- * console.log(array);
- * // => [1, 2, 3]
- */
- function wrapperCommit() {
- return new LodashWrapper(this.value(), this.__chain__);
- }
-
- /**
- * Gets the next value on a wrapped object following the
- * [iterator protocol](https://mdn.io/iteration_protocols#iterator).
- *
- * @name next
- * @memberOf _
- * @since 4.0.0
- * @category Seq
- * @returns {Object} Returns the next iterator value.
- * @example
- *
- * var wrapped = _([1, 2]);
- *
- * wrapped.next();
- * // => { 'done': false, 'value': 1 }
- *
- * wrapped.next();
- * // => { 'done': false, 'value': 2 }
- *
- * wrapped.next();
- * // => { 'done': true, 'value': undefined }
- */
- function wrapperNext() {
- if (this.__values__ === undefined) {
- this.__values__ = toArray(this.value());
- }
- var done = this.__index__ >= this.__values__.length,
- value = done ? undefined : this.__values__[this.__index__++];
-
- return { 'done': done, 'value': value };
- }
-
- /**
- * Enables the wrapper to be iterable.
- *
- * @name Symbol.iterator
- * @memberOf _
- * @since 4.0.0
- * @category Seq
- * @returns {Object} Returns the wrapper object.
- * @example
- *
- * var wrapped = _([1, 2]);
- *
- * wrapped[Symbol.iterator]() === wrapped;
- * // => true
- *
- * Array.from(wrapped);
- * // => [1, 2]
- */
- function wrapperToIterator() {
- return this;
- }
-
- /**
- * Creates a clone of the chain sequence planting `value` as the wrapped value.
- *
- * @name plant
- * @memberOf _
- * @since 3.2.0
- * @category Seq
- * @param {*} value The value to plant.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * function square(n) {
- * return n * n;
- * }
- *
- * var wrapped = _([1, 2]).map(square);
- * var other = wrapped.plant([3, 4]);
- *
- * other.value();
- * // => [9, 16]
- *
- * wrapped.value();
- * // => [1, 4]
- */
- function wrapperPlant(value) {
- var result,
- parent = this;
-
- while (parent instanceof baseLodash) {
- var clone = wrapperClone(parent);
- clone.__index__ = 0;
- clone.__values__ = undefined;
- if (result) {
- previous.__wrapped__ = clone;
- } else {
- result = clone;
- }
- var previous = clone;
- parent = parent.__wrapped__;
- }
- previous.__wrapped__ = value;
- return result;
- }
-
- /**
- * This method is the wrapper version of `_.reverse`.
- *
- * **Note:** This method mutates the wrapped array.
- *
- * @name reverse
- * @memberOf _
- * @since 0.1.0
- * @category Seq
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var array = [1, 2, 3];
- *
- * _(array).reverse().value()
- * // => [3, 2, 1]
- *
- * console.log(array);
- * // => [3, 2, 1]
- */
- function wrapperReverse() {
- var value = this.__wrapped__;
- if (value instanceof LazyWrapper) {
- var wrapped = value;
- if (this.__actions__.length) {
- wrapped = new LazyWrapper(this);
- }
- wrapped = wrapped.reverse();
- wrapped.__actions__.push({
- 'func': thru,
- 'args': [reverse],
- 'thisArg': undefined
- });
- return new LodashWrapper(wrapped, this.__chain__);
- }
- return this.thru(reverse);
- }
-
- /**
- * Executes the chain sequence to resolve the unwrapped value.
- *
- * @name value
- * @memberOf _
- * @since 0.1.0
- * @alias toJSON, valueOf
- * @category Seq
- * @returns {*} Returns the resolved unwrapped value.
- * @example
- *
- * _([1, 2, 3]).value();
- * // => [1, 2, 3]
- */
- function wrapperValue() {
- return baseWrapperValue(this.__wrapped__, this.__actions__);
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Creates an object composed of keys generated from the results of running
- * each element of `collection` thru `iteratee`. The corresponding value of
- * each key is the number of times the key was returned by `iteratee`. The
- * iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 0.5.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
- * @returns {Object} Returns the composed aggregate object.
- * @example
- *
- * _.countBy([6.1, 4.2, 6.3], Math.floor);
- * // => { '4': 1, '6': 2 }
- *
- * // The `_.property` iteratee shorthand.
- * _.countBy(['one', 'two', 'three'], 'length');
- * // => { '3': 2, '5': 1 }
- */
- var countBy = createAggregator(function(result, value, key) {
- if (hasOwnProperty.call(result, key)) {
- ++result[key];
- } else {
- baseAssignValue(result, key, 1);
- }
- });
-
- /**
- * Checks if `predicate` returns truthy for **all** elements of `collection`.
- * Iteration is stopped once `predicate` returns falsey. The predicate is
- * invoked with three arguments: (value, index|key, collection).
- *
- * **Note:** This method returns `true` for
- * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
- * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
- * elements of empty collections.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {boolean} Returns `true` if all elements pass the predicate check,
- * else `false`.
- * @example
- *
- * _.every([true, 1, null, 'yes'], Boolean);
- * // => false
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': false },
- * { 'user': 'fred', 'age': 40, 'active': false }
- * ];
- *
- * // The `_.matches` iteratee shorthand.
- * _.every(users, { 'user': 'barney', 'active': false });
- * // => false
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.every(users, ['active', false]);
- * // => true
- *
- * // The `_.property` iteratee shorthand.
- * _.every(users, 'active');
- * // => false
- */
- function every(collection, predicate, guard) {
- var func = isArray(collection) ? arrayEvery : baseEvery;
- if (guard && isIterateeCall(collection, predicate, guard)) {
- predicate = undefined;
- }
- return func(collection, getIteratee(predicate, 3));
- }
-
- /**
- * Iterates over elements of `collection`, returning an array of all elements
- * `predicate` returns truthy for. The predicate is invoked with three
- * arguments: (value, index|key, collection).
- *
- * **Note:** Unlike `_.remove`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- * @see _.reject
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': true },
- * { 'user': 'fred', 'age': 40, 'active': false }
- * ];
- *
- * _.filter(users, function(o) { return !o.active; });
- * // => objects for ['fred']
- *
- * // The `_.matches` iteratee shorthand.
- * _.filter(users, { 'age': 36, 'active': true });
- * // => objects for ['barney']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.filter(users, ['active', false]);
- * // => objects for ['fred']
- *
- * // The `_.property` iteratee shorthand.
- * _.filter(users, 'active');
- * // => objects for ['barney']
- */
- function filter(collection, predicate) {
- var func = isArray(collection) ? arrayFilter : baseFilter;
- return func(collection, getIteratee(predicate, 3));
- }
-
- /**
- * Iterates over elements of `collection`, returning the first element
- * `predicate` returns truthy for. The predicate is invoked with three
- * arguments: (value, index|key, collection).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {*} Returns the matched element, else `undefined`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': true },
- * { 'user': 'fred', 'age': 40, 'active': false },
- * { 'user': 'pebbles', 'age': 1, 'active': true }
- * ];
- *
- * _.find(users, function(o) { return o.age < 40; });
- * // => object for 'barney'
- *
- * // The `_.matches` iteratee shorthand.
- * _.find(users, { 'age': 1, 'active': true });
- * // => object for 'pebbles'
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.find(users, ['active', false]);
- * // => object for 'fred'
- *
- * // The `_.property` iteratee shorthand.
- * _.find(users, 'active');
- * // => object for 'barney'
- */
- var find = createFind(findIndex);
-
- /**
- * This method is like `_.find` except that it iterates over elements of
- * `collection` from right to left.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=collection.length-1] The index to search from.
- * @returns {*} Returns the matched element, else `undefined`.
- * @example
- *
- * _.findLast([1, 2, 3, 4], function(n) {
- * return n % 2 == 1;
- * });
- * // => 3
- */
- var findLast = createFind(findLastIndex);
-
- /**
- * Creates a flattened array of values by running each element in `collection`
- * thru `iteratee` and flattening the mapped results. The iteratee is invoked
- * with three arguments: (value, index|key, collection).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * function duplicate(n) {
- * return [n, n];
- * }
- *
- * _.flatMap([1, 2], duplicate);
- * // => [1, 1, 2, 2]
- */
- function flatMap(collection, iteratee) {
- return baseFlatten(map(collection, iteratee), 1);
- }
-
- /**
- * This method is like `_.flatMap` except that it recursively flattens the
- * mapped results.
- *
- * @static
- * @memberOf _
- * @since 4.7.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * function duplicate(n) {
- * return [[[n, n]]];
- * }
- *
- * _.flatMapDeep([1, 2], duplicate);
- * // => [1, 1, 2, 2]
- */
- function flatMapDeep(collection, iteratee) {
- return baseFlatten(map(collection, iteratee), INFINITY);
- }
-
- /**
- * This method is like `_.flatMap` except that it recursively flattens the
- * mapped results up to `depth` times.
- *
- * @static
- * @memberOf _
- * @since 4.7.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {number} [depth=1] The maximum recursion depth.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * function duplicate(n) {
- * return [[[n, n]]];
- * }
- *
- * _.flatMapDepth([1, 2], duplicate, 2);
- * // => [[1, 1], [2, 2]]
- */
- function flatMapDepth(collection, iteratee, depth) {
- depth = depth === undefined ? 1 : toInteger(depth);
- return baseFlatten(map(collection, iteratee), depth);
- }
-
- /**
- * Iterates over elements of `collection` and invokes `iteratee` for each element.
- * The iteratee is invoked with three arguments: (value, index|key, collection).
- * Iteratee functions may exit iteration early by explicitly returning `false`.
- *
- * **Note:** As with other "Collections" methods, objects with a "length"
- * property are iterated like arrays. To avoid this behavior use `_.forIn`
- * or `_.forOwn` for object iteration.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @alias each
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- * @see _.forEachRight
- * @example
- *
- * _.forEach([1, 2], function(value) {
- * console.log(value);
- * });
- * // => Logs `1` then `2`.
- *
- * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
- * console.log(key);
- * });
- * // => Logs 'a' then 'b' (iteration order is not guaranteed).
- */
- function forEach(collection, iteratee) {
- var func = isArray(collection) ? arrayEach : baseEach;
- return func(collection, getIteratee(iteratee, 3));
- }
-
- /**
- * This method is like `_.forEach` except that it iterates over elements of
- * `collection` from right to left.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @alias eachRight
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- * @see _.forEach
- * @example
- *
- * _.forEachRight([1, 2], function(value) {
- * console.log(value);
- * });
- * // => Logs `2` then `1`.
- */
- function forEachRight(collection, iteratee) {
- var func = isArray(collection) ? arrayEachRight : baseEachRight;
- return func(collection, getIteratee(iteratee, 3));
- }
-
- /**
- * Creates an object composed of keys generated from the results of running
- * each element of `collection` thru `iteratee`. The order of grouped values
- * is determined by the order they occur in `collection`. The corresponding
- * value of each key is an array of elements responsible for generating the
- * key. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
- * @returns {Object} Returns the composed aggregate object.
- * @example
- *
- * _.groupBy([6.1, 4.2, 6.3], Math.floor);
- * // => { '4': [4.2], '6': [6.1, 6.3] }
- *
- * // The `_.property` iteratee shorthand.
- * _.groupBy(['one', 'two', 'three'], 'length');
- * // => { '3': ['one', 'two'], '5': ['three'] }
- */
- var groupBy = createAggregator(function(result, value, key) {
- if (hasOwnProperty.call(result, key)) {
- result[key].push(value);
- } else {
- baseAssignValue(result, key, [value]);
- }
- });
-
- /**
- * Checks if `value` is in `collection`. If `collection` is a string, it's
- * checked for a substring of `value`, otherwise
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * is used for equality comparisons. If `fromIndex` is negative, it's used as
- * the offset from the end of `collection`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object|string} collection The collection to inspect.
- * @param {*} value The value to search for.
- * @param {number} [fromIndex=0] The index to search from.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
- * @returns {boolean} Returns `true` if `value` is found, else `false`.
- * @example
- *
- * _.includes([1, 2, 3], 1);
- * // => true
- *
- * _.includes([1, 2, 3], 1, 2);
- * // => false
- *
- * _.includes({ 'a': 1, 'b': 2 }, 1);
- * // => true
- *
- * _.includes('abcd', 'bc');
- * // => true
- */
- function includes(collection, value, fromIndex, guard) {
- collection = isArrayLike(collection) ? collection : values(collection);
- fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;
-
- var length = collection.length;
- if (fromIndex < 0) {
- fromIndex = nativeMax(length + fromIndex, 0);
- }
- return isString(collection)
- ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
- : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
- }
-
- /**
- * Invokes the method at `path` of each element in `collection`, returning
- * an array of the results of each invoked method. Any additional arguments
- * are provided to each invoked method. If `path` is a function, it's invoked
- * for, and `this` bound to, each element in `collection`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Array|Function|string} path The path of the method to invoke or
- * the function invoked per iteration.
- * @param {...*} [args] The arguments to invoke each method with.
- * @returns {Array} Returns the array of results.
- * @example
- *
- * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');
- * // => [[1, 5, 7], [1, 2, 3]]
- *
- * _.invokeMap([123, 456], String.prototype.split, '');
- * // => [['1', '2', '3'], ['4', '5', '6']]
- */
- var invokeMap = baseRest(function(collection, path, args) {
- var index = -1,
- isFunc = typeof path == 'function',
- result = isArrayLike(collection) ? Array(collection.length) : [];
-
- baseEach(collection, function(value) {
- result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
- });
- return result;
- });
-
- /**
- * Creates an object composed of keys generated from the results of running
- * each element of `collection` thru `iteratee`. The corresponding value of
- * each key is the last element responsible for generating the key. The
- * iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
- * @returns {Object} Returns the composed aggregate object.
- * @example
- *
- * var array = [
- * { 'dir': 'left', 'code': 97 },
- * { 'dir': 'right', 'code': 100 }
- * ];
- *
- * _.keyBy(array, function(o) {
- * return String.fromCharCode(o.code);
- * });
- * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
- *
- * _.keyBy(array, 'dir');
- * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
- */
- var keyBy = createAggregator(function(result, value, key) {
- baseAssignValue(result, key, value);
- });
-
- /**
- * Creates an array of values by running each element in `collection` thru
- * `iteratee`. The iteratee is invoked with three arguments:
- * (value, index|key, collection).
- *
- * Many lodash methods are guarded to work as iteratees for methods like
- * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
- *
- * The guarded methods are:
- * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
- * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
- * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
- * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- * @example
- *
- * function square(n) {
- * return n * n;
- * }
- *
- * _.map([4, 8], square);
- * // => [16, 64]
- *
- * _.map({ 'a': 4, 'b': 8 }, square);
- * // => [16, 64] (iteration order is not guaranteed)
- *
- * var users = [
- * { 'user': 'barney' },
- * { 'user': 'fred' }
- * ];
- *
- * // The `_.property` iteratee shorthand.
- * _.map(users, 'user');
- * // => ['barney', 'fred']
- */
- function map(collection, iteratee) {
- var func = isArray(collection) ? arrayMap : baseMap;
- return func(collection, getIteratee(iteratee, 3));
- }
-
- /**
- * This method is like `_.sortBy` except that it allows specifying the sort
- * orders of the iteratees to sort by. If `orders` is unspecified, all values
- * are sorted in ascending order. Otherwise, specify an order of "desc" for
- * descending or "asc" for ascending sort order of corresponding values.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
- * The iteratees to sort by.
- * @param {string[]} [orders] The sort orders of `iteratees`.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
- * @returns {Array} Returns the new sorted array.
- * @example
- *
- * var users = [
- * { 'user': 'fred', 'age': 48 },
- * { 'user': 'barney', 'age': 34 },
- * { 'user': 'fred', 'age': 40 },
- * { 'user': 'barney', 'age': 36 }
- * ];
- *
- * // Sort by `user` in ascending order and by `age` in descending order.
- * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
- * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
- */
- function orderBy(collection, iteratees, orders, guard) {
- if (collection == null) {
- return [];
- }
- if (!isArray(iteratees)) {
- iteratees = iteratees == null ? [] : [iteratees];
- }
- orders = guard ? undefined : orders;
- if (!isArray(orders)) {
- orders = orders == null ? [] : [orders];
- }
- return baseOrderBy(collection, iteratees, orders);
- }
-
- /**
- * Creates an array of elements split into two groups, the first of which
- * contains elements `predicate` returns truthy for, the second of which
- * contains elements `predicate` returns falsey for. The predicate is
- * invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the array of grouped elements.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': false },
- * { 'user': 'fred', 'age': 40, 'active': true },
- * { 'user': 'pebbles', 'age': 1, 'active': false }
- * ];
- *
- * _.partition(users, function(o) { return o.active; });
- * // => objects for [['fred'], ['barney', 'pebbles']]
- *
- * // The `_.matches` iteratee shorthand.
- * _.partition(users, { 'age': 1, 'active': false });
- * // => objects for [['pebbles'], ['barney', 'fred']]
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.partition(users, ['active', false]);
- * // => objects for [['barney', 'pebbles'], ['fred']]
- *
- * // The `_.property` iteratee shorthand.
- * _.partition(users, 'active');
- * // => objects for [['fred'], ['barney', 'pebbles']]
- */
- var partition = createAggregator(function(result, value, key) {
- result[key ? 0 : 1].push(value);
- }, function() { return [[], []]; });
-
- /**
- * Reduces `collection` to a value which is the accumulated result of running
- * each element in `collection` thru `iteratee`, where each successive
- * invocation is supplied the return value of the previous. If `accumulator`
- * is not given, the first element of `collection` is used as the initial
- * value. The iteratee is invoked with four arguments:
- * (accumulator, value, index|key, collection).
- *
- * Many lodash methods are guarded to work as iteratees for methods like
- * `_.reduce`, `_.reduceRight`, and `_.transform`.
- *
- * The guarded methods are:
- * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
- * and `sortBy`
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @returns {*} Returns the accumulated value.
- * @see _.reduceRight
- * @example
- *
- * _.reduce([1, 2], function(sum, n) {
- * return sum + n;
- * }, 0);
- * // => 3
- *
- * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
- * (result[value] || (result[value] = [])).push(key);
- * return result;
- * }, {});
- * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
- */
- function reduce(collection, iteratee, accumulator) {
- var func = isArray(collection) ? arrayReduce : baseReduce,
- initAccum = arguments.length < 3;
-
- return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);
- }
-
- /**
- * This method is like `_.reduce` except that it iterates over elements of
- * `collection` from right to left.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @returns {*} Returns the accumulated value.
- * @see _.reduce
- * @example
- *
- * var array = [[0, 1], [2, 3], [4, 5]];
- *
- * _.reduceRight(array, function(flattened, other) {
- * return flattened.concat(other);
- * }, []);
- * // => [4, 5, 2, 3, 0, 1]
- */
- function reduceRight(collection, iteratee, accumulator) {
- var func = isArray(collection) ? arrayReduceRight : baseReduce,
- initAccum = arguments.length < 3;
-
- return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);
- }
-
- /**
- * The opposite of `_.filter`; this method returns the elements of `collection`
- * that `predicate` does **not** return truthy for.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- * @see _.filter
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': false },
- * { 'user': 'fred', 'age': 40, 'active': true }
- * ];
- *
- * _.reject(users, function(o) { return !o.active; });
- * // => objects for ['fred']
- *
- * // The `_.matches` iteratee shorthand.
- * _.reject(users, { 'age': 40, 'active': true });
- * // => objects for ['barney']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.reject(users, ['active', false]);
- * // => objects for ['fred']
- *
- * // The `_.property` iteratee shorthand.
- * _.reject(users, 'active');
- * // => objects for ['barney']
- */
- function reject(collection, predicate) {
- var func = isArray(collection) ? arrayFilter : baseFilter;
- return func(collection, negate(getIteratee(predicate, 3)));
- }
-
- /**
- * Gets a random element from `collection`.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to sample.
- * @returns {*} Returns the random element.
- * @example
- *
- * _.sample([1, 2, 3, 4]);
- * // => 2
- */
- function sample(collection) {
- var func = isArray(collection) ? arraySample : baseSample;
- return func(collection);
- }
-
- /**
- * Gets `n` random elements at unique keys from `collection` up to the
- * size of `collection`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to sample.
- * @param {number} [n=1] The number of elements to sample.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the random elements.
- * @example
- *
- * _.sampleSize([1, 2, 3], 2);
- * // => [3, 1]
- *
- * _.sampleSize([1, 2, 3], 4);
- * // => [2, 3, 1]
- */
- function sampleSize(collection, n, guard) {
- if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
- n = 1;
- } else {
- n = toInteger(n);
- }
- var func = isArray(collection) ? arraySampleSize : baseSampleSize;
- return func(collection, n);
- }
-
- /**
- * Creates an array of shuffled values, using a version of the
- * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to shuffle.
- * @returns {Array} Returns the new shuffled array.
- * @example
- *
- * _.shuffle([1, 2, 3, 4]);
- * // => [4, 1, 3, 2]
- */
- function shuffle(collection) {
- var func = isArray(collection) ? arrayShuffle : baseShuffle;
- return func(collection);
- }
-
- /**
- * Gets the size of `collection` by returning its length for array-like
- * values or the number of own enumerable string keyed properties for objects.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object|string} collection The collection to inspect.
- * @returns {number} Returns the collection size.
- * @example
- *
- * _.size([1, 2, 3]);
- * // => 3
- *
- * _.size({ 'a': 1, 'b': 2 });
- * // => 2
- *
- * _.size('pebbles');
- * // => 7
- */
- function size(collection) {
- if (collection == null) {
- return 0;
- }
- if (isArrayLike(collection)) {
- return isString(collection) ? stringSize(collection) : collection.length;
- }
- var tag = getTag(collection);
- if (tag == mapTag || tag == setTag) {
- return collection.size;
- }
- return baseKeys(collection).length;
- }
-
- /**
- * Checks if `predicate` returns truthy for **any** element of `collection`.
- * Iteration is stopped once `predicate` returns truthy. The predicate is
- * invoked with three arguments: (value, index|key, collection).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- * else `false`.
- * @example
- *
- * _.some([null, 0, 'yes', false], Boolean);
- * // => true
- *
- * var users = [
- * { 'user': 'barney', 'active': true },
- * { 'user': 'fred', 'active': false }
- * ];
- *
- * // The `_.matches` iteratee shorthand.
- * _.some(users, { 'user': 'barney', 'active': false });
- * // => false
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.some(users, ['active', false]);
- * // => true
- *
- * // The `_.property` iteratee shorthand.
- * _.some(users, 'active');
- * // => true
- */
- function some(collection, predicate, guard) {
- var func = isArray(collection) ? arraySome : baseSome;
- if (guard && isIterateeCall(collection, predicate, guard)) {
- predicate = undefined;
- }
- return func(collection, getIteratee(predicate, 3));
- }
-
- /**
- * Creates an array of elements, sorted in ascending order by the results of
- * running each element in a collection thru each iteratee. This method
- * performs a stable sort, that is, it preserves the original sort order of
- * equal elements. The iteratees are invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {...(Function|Function[])} [iteratees=[_.identity]]
- * The iteratees to sort by.
- * @returns {Array} Returns the new sorted array.
- * @example
- *
- * var users = [
- * { 'user': 'fred', 'age': 48 },
- * { 'user': 'barney', 'age': 36 },
- * { 'user': 'fred', 'age': 40 },
- * { 'user': 'barney', 'age': 34 }
- * ];
- *
- * _.sortBy(users, [function(o) { return o.user; }]);
- * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
- *
- * _.sortBy(users, ['user', 'age']);
- * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]
- */
- var sortBy = baseRest(function(collection, iteratees) {
- if (collection == null) {
- return [];
- }
- var length = iteratees.length;
- if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
- iteratees = [];
- } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
- iteratees = [iteratees[0]];
- }
- return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
- });
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Gets the timestamp of the number of milliseconds that have elapsed since
- * the Unix epoch (1 January 1970 00:00:00 UTC).
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Date
- * @returns {number} Returns the timestamp.
- * @example
- *
- * _.defer(function(stamp) {
- * console.log(_.now() - stamp);
- * }, _.now());
- * // => Logs the number of milliseconds it took for the deferred invocation.
- */
- var now = ctxNow || function() {
- return root.Date.now();
- };
-
- /*------------------------------------------------------------------------*/
-
- /**
- * The opposite of `_.before`; this method creates a function that invokes
- * `func` once it's called `n` or more times.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {number} n The number of calls before `func` is invoked.
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * var saves = ['profile', 'settings'];
- *
- * var done = _.after(saves.length, function() {
- * console.log('done saving!');
- * });
- *
- * _.forEach(saves, function(type) {
- * asyncSave({ 'type': type, 'complete': done });
- * });
- * // => Logs 'done saving!' after the two async saves have completed.
- */
- function after(n, func) {
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- n = toInteger(n);
- return function() {
- if (--n < 1) {
- return func.apply(this, arguments);
- }
- };
- }
-
- /**
- * Creates a function that invokes `func`, with up to `n` arguments,
- * ignoring any additional arguments.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {Function} func The function to cap arguments for.
- * @param {number} [n=func.length] The arity cap.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Function} Returns the new capped function.
- * @example
- *
- * _.map(['6', '8', '10'], _.ary(parseInt, 1));
- * // => [6, 8, 10]
- */
- function ary(func, n, guard) {
- n = guard ? undefined : n;
- n = (func && n == null) ? func.length : n;
- return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
- }
-
- /**
- * Creates a function that invokes `func`, with the `this` binding and arguments
- * of the created function, while it's called less than `n` times. Subsequent
- * calls to the created function return the result of the last `func` invocation.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {number} n The number of calls at which `func` is no longer invoked.
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * jQuery(element).on('click', _.before(5, addContactToList));
- * // => Allows adding up to 4 contacts to the list.
- */
- function before(n, func) {
- var result;
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- n = toInteger(n);
- return function() {
- if (--n > 0) {
- result = func.apply(this, arguments);
- }
- if (n <= 1) {
- func = undefined;
- }
- return result;
- };
- }
-
- /**
- * Creates a function that invokes `func` with the `this` binding of `thisArg`
- * and `partials` prepended to the arguments it receives.
- *
- * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
- * may be used as a placeholder for partially applied arguments.
- *
- * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
- * property of bound functions.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to bind.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new bound function.
- * @example
- *
- * function greet(greeting, punctuation) {
- * return greeting + ' ' + this.user + punctuation;
- * }
- *
- * var object = { 'user': 'fred' };
- *
- * var bound = _.bind(greet, object, 'hi');
- * bound('!');
- * // => 'hi fred!'
- *
- * // Bound with placeholders.
- * var bound = _.bind(greet, object, _, '!');
- * bound('hi');
- * // => 'hi fred!'
- */
- var bind = baseRest(function(func, thisArg, partials) {
- var bitmask = WRAP_BIND_FLAG;
- if (partials.length) {
- var holders = replaceHolders(partials, getHolder(bind));
- bitmask |= WRAP_PARTIAL_FLAG;
- }
- return createWrap(func, bitmask, thisArg, partials, holders);
- });
-
- /**
- * Creates a function that invokes the method at `object[key]` with `partials`
- * prepended to the arguments it receives.
- *
- * This method differs from `_.bind` by allowing bound functions to reference
- * methods that may be redefined or don't yet exist. See
- * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
- * for more details.
- *
- * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for partially applied arguments.
- *
- * @static
- * @memberOf _
- * @since 0.10.0
- * @category Function
- * @param {Object} object The object to invoke the method on.
- * @param {string} key The key of the method.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new bound function.
- * @example
- *
- * var object = {
- * 'user': 'fred',
- * 'greet': function(greeting, punctuation) {
- * return greeting + ' ' + this.user + punctuation;
- * }
- * };
- *
- * var bound = _.bindKey(object, 'greet', 'hi');
- * bound('!');
- * // => 'hi fred!'
- *
- * object.greet = function(greeting, punctuation) {
- * return greeting + 'ya ' + this.user + punctuation;
- * };
- *
- * bound('!');
- * // => 'hiya fred!'
- *
- * // Bound with placeholders.
- * var bound = _.bindKey(object, 'greet', _, '!');
- * bound('hi');
- * // => 'hiya fred!'
- */
- var bindKey = baseRest(function(object, key, partials) {
- var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
- if (partials.length) {
- var holders = replaceHolders(partials, getHolder(bindKey));
- bitmask |= WRAP_PARTIAL_FLAG;
- }
- return createWrap(key, bitmask, object, partials, holders);
- });
-
- /**
- * Creates a function that accepts arguments of `func` and either invokes
- * `func` returning its result, if at least `arity` number of arguments have
- * been provided, or returns a function that accepts the remaining `func`
- * arguments, and so on. The arity of `func` may be specified if `func.length`
- * is not sufficient.
- *
- * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
- * may be used as a placeholder for provided arguments.
- *
- * **Note:** This method doesn't set the "length" property of curried functions.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Function
- * @param {Function} func The function to curry.
- * @param {number} [arity=func.length] The arity of `func`.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Function} Returns the new curried function.
- * @example
- *
- * var abc = function(a, b, c) {
- * return [a, b, c];
- * };
- *
- * var curried = _.curry(abc);
- *
- * curried(1)(2)(3);
- * // => [1, 2, 3]
- *
- * curried(1, 2)(3);
- * // => [1, 2, 3]
- *
- * curried(1, 2, 3);
- * // => [1, 2, 3]
- *
- * // Curried with placeholders.
- * curried(1)(_, 3)(2);
- * // => [1, 2, 3]
- */
- function curry(func, arity, guard) {
- arity = guard ? undefined : arity;
- var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
- result.placeholder = curry.placeholder;
- return result;
- }
-
- /**
- * This method is like `_.curry` except that arguments are applied to `func`
- * in the manner of `_.partialRight` instead of `_.partial`.
- *
- * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for provided arguments.
- *
- * **Note:** This method doesn't set the "length" property of curried functions.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {Function} func The function to curry.
- * @param {number} [arity=func.length] The arity of `func`.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Function} Returns the new curried function.
- * @example
- *
- * var abc = function(a, b, c) {
- * return [a, b, c];
- * };
- *
- * var curried = _.curryRight(abc);
- *
- * curried(3)(2)(1);
- * // => [1, 2, 3]
- *
- * curried(2, 3)(1);
- * // => [1, 2, 3]
- *
- * curried(1, 2, 3);
- * // => [1, 2, 3]
- *
- * // Curried with placeholders.
- * curried(3)(1, _)(2);
- * // => [1, 2, 3]
- */
- function curryRight(func, arity, guard) {
- arity = guard ? undefined : arity;
- var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
- result.placeholder = curryRight.placeholder;
- return result;
- }
-
- /**
- * Creates a debounced function that delays invoking `func` until after `wait`
- * milliseconds have elapsed since the last time the debounced function was
- * invoked. The debounced function comes with a `cancel` method to cancel
- * delayed `func` invocations and a `flush` method to immediately invoke them.
- * Provide `options` to indicate whether `func` should be invoked on the
- * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
- * with the last arguments provided to the debounced function. Subsequent
- * calls to the debounced function return the result of the last `func`
- * invocation.
- *
- * **Note:** If `leading` and `trailing` options are `true`, `func` is
- * invoked on the trailing edge of the timeout only if the debounced function
- * is invoked more than once during the `wait` timeout.
- *
- * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
- * until to the next tick, similar to `setTimeout` with a timeout of `0`.
- *
- * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
- * for details over the differences between `_.debounce` and `_.throttle`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to debounce.
- * @param {number} [wait=0] The number of milliseconds to delay.
- * @param {Object} [options={}] The options object.
- * @param {boolean} [options.leading=false]
- * Specify invoking on the leading edge of the timeout.
- * @param {number} [options.maxWait]
- * The maximum time `func` is allowed to be delayed before it's invoked.
- * @param {boolean} [options.trailing=true]
- * Specify invoking on the trailing edge of the timeout.
- * @returns {Function} Returns the new debounced function.
- * @example
- *
- * // Avoid costly calculations while the window size is in flux.
- * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
- *
- * // Invoke `sendMail` when clicked, debouncing subsequent calls.
- * jQuery(element).on('click', _.debounce(sendMail, 300, {
- * 'leading': true,
- * 'trailing': false
- * }));
- *
- * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
- * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
- * var source = new EventSource('/stream');
- * jQuery(source).on('message', debounced);
- *
- * // Cancel the trailing debounced invocation.
- * jQuery(window).on('popstate', debounced.cancel);
- */
- function debounce(func, wait, options) {
- var lastArgs,
- lastThis,
- maxWait,
- result,
- timerId,
- lastCallTime,
- lastInvokeTime = 0,
- leading = false,
- maxing = false,
- trailing = true;
-
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- wait = toNumber(wait) || 0;
- if (isObject(options)) {
- leading = !!options.leading;
- maxing = 'maxWait' in options;
- maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
- trailing = 'trailing' in options ? !!options.trailing : trailing;
- }
-
- function invokeFunc(time) {
- var args = lastArgs,
- thisArg = lastThis;
-
- lastArgs = lastThis = undefined;
- lastInvokeTime = time;
- result = func.apply(thisArg, args);
- return result;
- }
-
- function leadingEdge(time) {
- // Reset any `maxWait` timer.
- lastInvokeTime = time;
- // Start the timer for the trailing edge.
- timerId = setTimeout(timerExpired, wait);
- // Invoke the leading edge.
- return leading ? invokeFunc(time) : result;
- }
-
- function remainingWait(time) {
- var timeSinceLastCall = time - lastCallTime,
- timeSinceLastInvoke = time - lastInvokeTime,
- timeWaiting = wait - timeSinceLastCall;
-
- return maxing
- ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
- : timeWaiting;
- }
-
- function shouldInvoke(time) {
- var timeSinceLastCall = time - lastCallTime,
- timeSinceLastInvoke = time - lastInvokeTime;
-
- // Either this is the first call, activity has stopped and we're at the
- // trailing edge, the system time has gone backwards and we're treating
- // it as the trailing edge, or we've hit the `maxWait` limit.
- return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
- (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
- }
-
- function timerExpired() {
- var time = now();
- if (shouldInvoke(time)) {
- return trailingEdge(time);
- }
- // Restart the timer.
- timerId = setTimeout(timerExpired, remainingWait(time));
- }
-
- function trailingEdge(time) {
- timerId = undefined;
-
- // Only invoke if we have `lastArgs` which means `func` has been
- // debounced at least once.
- if (trailing && lastArgs) {
- return invokeFunc(time);
- }
- lastArgs = lastThis = undefined;
- return result;
- }
-
- function cancel() {
- if (timerId !== undefined) {
- clearTimeout(timerId);
- }
- lastInvokeTime = 0;
- lastArgs = lastCallTime = lastThis = timerId = undefined;
- }
-
- function flush() {
- return timerId === undefined ? result : trailingEdge(now());
- }
-
- function debounced() {
- var time = now(),
- isInvoking = shouldInvoke(time);
-
- lastArgs = arguments;
- lastThis = this;
- lastCallTime = time;
-
- if (isInvoking) {
- if (timerId === undefined) {
- return leadingEdge(lastCallTime);
- }
- if (maxing) {
- // Handle invocations in a tight loop.
- clearTimeout(timerId);
- timerId = setTimeout(timerExpired, wait);
- return invokeFunc(lastCallTime);
- }
- }
- if (timerId === undefined) {
- timerId = setTimeout(timerExpired, wait);
- }
- return result;
- }
- debounced.cancel = cancel;
- debounced.flush = flush;
- return debounced;
- }
-
- /**
- * Defers invoking the `func` until the current call stack has cleared. Any
- * additional arguments are provided to `func` when it's invoked.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to defer.
- * @param {...*} [args] The arguments to invoke `func` with.
- * @returns {number} Returns the timer id.
- * @example
- *
- * _.defer(function(text) {
- * console.log(text);
- * }, 'deferred');
- * // => Logs 'deferred' after one millisecond.
- */
- var defer = baseRest(function(func, args) {
- return baseDelay(func, 1, args);
- });
-
- /**
- * Invokes `func` after `wait` milliseconds. Any additional arguments are
- * provided to `func` when it's invoked.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to delay.
- * @param {number} wait The number of milliseconds to delay invocation.
- * @param {...*} [args] The arguments to invoke `func` with.
- * @returns {number} Returns the timer id.
- * @example
- *
- * _.delay(function(text) {
- * console.log(text);
- * }, 1000, 'later');
- * // => Logs 'later' after one second.
- */
- var delay = baseRest(function(func, wait, args) {
- return baseDelay(func, toNumber(wait) || 0, args);
- });
-
- /**
- * Creates a function that invokes `func` with arguments reversed.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Function
- * @param {Function} func The function to flip arguments for.
- * @returns {Function} Returns the new flipped function.
- * @example
- *
- * var flipped = _.flip(function() {
- * return _.toArray(arguments);
- * });
- *
- * flipped('a', 'b', 'c', 'd');
- * // => ['d', 'c', 'b', 'a']
- */
- function flip(func) {
- return createWrap(func, WRAP_FLIP_FLAG);
- }
-
- /**
- * Creates a function that memoizes the result of `func`. If `resolver` is
- * provided, it determines the cache key for storing the result based on the
- * arguments provided to the memoized function. By default, the first argument
- * provided to the memoized function is used as the map cache key. The `func`
- * is invoked with the `this` binding of the memoized function.
- *
- * **Note:** The cache is exposed as the `cache` property on the memoized
- * function. Its creation may be customized by replacing the `_.memoize.Cache`
- * constructor with one whose instances implement the
- * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
- * method interface of `clear`, `delete`, `get`, `has`, and `set`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to have its output memoized.
- * @param {Function} [resolver] The function to resolve the cache key.
- * @returns {Function} Returns the new memoized function.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- * var other = { 'c': 3, 'd': 4 };
- *
- * var values = _.memoize(_.values);
- * values(object);
- * // => [1, 2]
- *
- * values(other);
- * // => [3, 4]
- *
- * object.a = 2;
- * values(object);
- * // => [1, 2]
- *
- * // Modify the result cache.
- * values.cache.set(object, ['a', 'b']);
- * values(object);
- * // => ['a', 'b']
- *
- * // Replace `_.memoize.Cache`.
- * _.memoize.Cache = WeakMap;
- */
- function memoize(func, resolver) {
- if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- var memoized = function() {
- var args = arguments,
- key = resolver ? resolver.apply(this, args) : args[0],
- cache = memoized.cache;
-
- if (cache.has(key)) {
- return cache.get(key);
- }
- var result = func.apply(this, args);
- memoized.cache = cache.set(key, result) || cache;
- return result;
- };
- memoized.cache = new (memoize.Cache || MapCache);
- return memoized;
- }
-
- // Expose `MapCache`.
- memoize.Cache = MapCache;
-
- /**
- * Creates a function that negates the result of the predicate `func`. The
- * `func` predicate is invoked with the `this` binding and arguments of the
- * created function.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {Function} predicate The predicate to negate.
- * @returns {Function} Returns the new negated function.
- * @example
- *
- * function isEven(n) {
- * return n % 2 == 0;
- * }
- *
- * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
- * // => [1, 3, 5]
- */
- function negate(predicate) {
- if (typeof predicate != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- return function() {
- var args = arguments;
- switch (args.length) {
- case 0: return !predicate.call(this);
- case 1: return !predicate.call(this, args[0]);
- case 2: return !predicate.call(this, args[0], args[1]);
- case 3: return !predicate.call(this, args[0], args[1], args[2]);
- }
- return !predicate.apply(this, args);
- };
- }
-
- /**
- * Creates a function that is restricted to invoking `func` once. Repeat calls
- * to the function return the value of the first invocation. The `func` is
- * invoked with the `this` binding and arguments of the created function.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * var initialize = _.once(createApplication);
- * initialize();
- * initialize();
- * // => `createApplication` is invoked once
- */
- function once(func) {
- return before(2, func);
- }
-
- /**
- * Creates a function that invokes `func` with its arguments transformed.
- *
- * @static
- * @since 4.0.0
- * @memberOf _
- * @category Function
- * @param {Function} func The function to wrap.
- * @param {...(Function|Function[])} [transforms=[_.identity]]
- * The argument transforms.
- * @returns {Function} Returns the new function.
- * @example
- *
- * function doubled(n) {
- * return n * 2;
- * }
- *
- * function square(n) {
- * return n * n;
- * }
- *
- * var func = _.overArgs(function(x, y) {
- * return [x, y];
- * }, [square, doubled]);
- *
- * func(9, 3);
- * // => [81, 6]
- *
- * func(10, 5);
- * // => [100, 10]
- */
- var overArgs = castRest(function(func, transforms) {
- transforms = (transforms.length == 1 && isArray(transforms[0]))
- ? arrayMap(transforms[0], baseUnary(getIteratee()))
- : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
-
- var funcsLength = transforms.length;
- return baseRest(function(args) {
- var index = -1,
- length = nativeMin(args.length, funcsLength);
-
- while (++index < length) {
- args[index] = transforms[index].call(this, args[index]);
- }
- return apply(func, this, args);
- });
- });
-
- /**
- * Creates a function that invokes `func` with `partials` prepended to the
- * arguments it receives. This method is like `_.bind` except it does **not**
- * alter the `this` binding.
- *
- * The `_.partial.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for partially applied arguments.
- *
- * **Note:** This method doesn't set the "length" property of partially
- * applied functions.
- *
- * @static
- * @memberOf _
- * @since 0.2.0
- * @category Function
- * @param {Function} func The function to partially apply arguments to.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new partially applied function.
- * @example
- *
- * function greet(greeting, name) {
- * return greeting + ' ' + name;
- * }
- *
- * var sayHelloTo = _.partial(greet, 'hello');
- * sayHelloTo('fred');
- * // => 'hello fred'
- *
- * // Partially applied with placeholders.
- * var greetFred = _.partial(greet, _, 'fred');
- * greetFred('hi');
- * // => 'hi fred'
- */
- var partial = baseRest(function(func, partials) {
- var holders = replaceHolders(partials, getHolder(partial));
- return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
- });
-
- /**
- * This method is like `_.partial` except that partially applied arguments
- * are appended to the arguments it receives.
- *
- * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for partially applied arguments.
- *
- * **Note:** This method doesn't set the "length" property of partially
- * applied functions.
- *
- * @static
- * @memberOf _
- * @since 1.0.0
- * @category Function
- * @param {Function} func The function to partially apply arguments to.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new partially applied function.
- * @example
- *
- * function greet(greeting, name) {
- * return greeting + ' ' + name;
- * }
- *
- * var greetFred = _.partialRight(greet, 'fred');
- * greetFred('hi');
- * // => 'hi fred'
- *
- * // Partially applied with placeholders.
- * var sayHelloTo = _.partialRight(greet, 'hello', _);
- * sayHelloTo('fred');
- * // => 'hello fred'
- */
- var partialRight = baseRest(function(func, partials) {
- var holders = replaceHolders(partials, getHolder(partialRight));
- return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
- });
-
- /**
- * Creates a function that invokes `func` with arguments arranged according
- * to the specified `indexes` where the argument value at the first index is
- * provided as the first argument, the argument value at the second index is
- * provided as the second argument, and so on.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {Function} func The function to rearrange arguments for.
- * @param {...(number|number[])} indexes The arranged argument indexes.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var rearged = _.rearg(function(a, b, c) {
- * return [a, b, c];
- * }, [2, 0, 1]);
- *
- * rearged('b', 'c', 'a')
- * // => ['a', 'b', 'c']
- */
- var rearg = flatRest(function(func, indexes) {
- return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
- });
-
- /**
- * Creates a function that invokes `func` with the `this` binding of the
- * created function and arguments from `start` and beyond provided as
- * an array.
- *
- * **Note:** This method is based on the
- * [rest parameter](https://mdn.io/rest_parameters).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Function
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var say = _.rest(function(what, names) {
- * return what + ' ' + _.initial(names).join(', ') +
- * (_.size(names) > 1 ? ', & ' : '') + _.last(names);
- * });
- *
- * say('hello', 'fred', 'barney', 'pebbles');
- * // => 'hello fred, barney, & pebbles'
- */
- function rest(func, start) {
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- start = start === undefined ? start : toInteger(start);
- return baseRest(func, start);
- }
-
- /**
- * Creates a function that invokes `func` with the `this` binding of the
- * create function and an array of arguments much like
- * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).
- *
- * **Note:** This method is based on the
- * [spread operator](https://mdn.io/spread_operator).
- *
- * @static
- * @memberOf _
- * @since 3.2.0
- * @category Function
- * @param {Function} func The function to spread arguments over.
- * @param {number} [start=0] The start position of the spread.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var say = _.spread(function(who, what) {
- * return who + ' says ' + what;
- * });
- *
- * say(['fred', 'hello']);
- * // => 'fred says hello'
- *
- * var numbers = Promise.all([
- * Promise.resolve(40),
- * Promise.resolve(36)
- * ]);
- *
- * numbers.then(_.spread(function(x, y) {
- * return x + y;
- * }));
- * // => a Promise of 76
- */
- function spread(func, start) {
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- start = start == null ? 0 : nativeMax(toInteger(start), 0);
- return baseRest(function(args) {
- var array = args[start],
- otherArgs = castSlice(args, 0, start);
-
- if (array) {
- arrayPush(otherArgs, array);
- }
- return apply(func, this, otherArgs);
- });
- }
-
- /**
- * Creates a throttled function that only invokes `func` at most once per
- * every `wait` milliseconds. The throttled function comes with a `cancel`
- * method to cancel delayed `func` invocations and a `flush` method to
- * immediately invoke them. Provide `options` to indicate whether `func`
- * should be invoked on the leading and/or trailing edge of the `wait`
- * timeout. The `func` is invoked with the last arguments provided to the
- * throttled function. Subsequent calls to the throttled function return the
- * result of the last `func` invocation.
- *
- * **Note:** If `leading` and `trailing` options are `true`, `func` is
- * invoked on the trailing edge of the timeout only if the throttled function
- * is invoked more than once during the `wait` timeout.
- *
- * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
- * until to the next tick, similar to `setTimeout` with a timeout of `0`.
- *
- * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
- * for details over the differences between `_.throttle` and `_.debounce`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to throttle.
- * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
- * @param {Object} [options={}] The options object.
- * @param {boolean} [options.leading=true]
- * Specify invoking on the leading edge of the timeout.
- * @param {boolean} [options.trailing=true]
- * Specify invoking on the trailing edge of the timeout.
- * @returns {Function} Returns the new throttled function.
- * @example
- *
- * // Avoid excessively updating the position while scrolling.
- * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
- *
- * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
- * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
- * jQuery(element).on('click', throttled);
- *
- * // Cancel the trailing throttled invocation.
- * jQuery(window).on('popstate', throttled.cancel);
- */
- function throttle(func, wait, options) {
- var leading = true,
- trailing = true;
-
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- if (isObject(options)) {
- leading = 'leading' in options ? !!options.leading : leading;
- trailing = 'trailing' in options ? !!options.trailing : trailing;
- }
- return debounce(func, wait, {
- 'leading': leading,
- 'maxWait': wait,
- 'trailing': trailing
- });
- }
-
- /**
- * Creates a function that accepts up to one argument, ignoring any
- * additional arguments.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Function
- * @param {Function} func The function to cap arguments for.
- * @returns {Function} Returns the new capped function.
- * @example
- *
- * _.map(['6', '8', '10'], _.unary(parseInt));
- * // => [6, 8, 10]
- */
- function unary(func) {
- return ary(func, 1);
- }
-
- /**
- * Creates a function that provides `value` to `wrapper` as its first
- * argument. Any additional arguments provided to the function are appended
- * to those provided to the `wrapper`. The wrapper is invoked with the `this`
- * binding of the created function.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {*} value The value to wrap.
- * @param {Function} [wrapper=identity] The wrapper function.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var p = _.wrap(_.escape, function(func, text) {
- * return '<p>' + func(text) + '</p>';
- * });
- *
- * p('fred, barney, & pebbles');
- * // => '<p>fred, barney, &amp; pebbles</p>'
- */
- function wrap(value, wrapper) {
- return partial(castFunction(wrapper), value);
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Casts `value` as an array if it's not one.
- *
- * @static
- * @memberOf _
- * @since 4.4.0
- * @category Lang
- * @param {*} value The value to inspect.
- * @returns {Array} Returns the cast array.
- * @example
- *
- * _.castArray(1);
- * // => [1]
- *
- * _.castArray({ 'a': 1 });
- * // => [{ 'a': 1 }]
- *
- * _.castArray('abc');
- * // => ['abc']
- *
- * _.castArray(null);
- * // => [null]
- *
- * _.castArray(undefined);
- * // => [undefined]
- *
- * _.castArray();
- * // => []
- *
- * var array = [1, 2, 3];
- * console.log(_.castArray(array) === array);
- * // => true
- */
- function castArray() {
- if (!arguments.length) {
- return [];
- }
- var value = arguments[0];
- return isArray(value) ? value : [value];
- }
-
- /**
- * Creates a shallow clone of `value`.
- *
- * **Note:** This method is loosely based on the
- * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
- * and supports cloning arrays, array buffers, booleans, date objects, maps,
- * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
- * arrays. The own enumerable properties of `arguments` objects are cloned
- * as plain objects. An empty object is returned for uncloneable values such
- * as error objects, functions, DOM nodes, and WeakMaps.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to clone.
- * @returns {*} Returns the cloned value.
- * @see _.cloneDeep
- * @example
- *
- * var objects = [{ 'a': 1 }, { 'b': 2 }];
- *
- * var shallow = _.clone(objects);
- * console.log(shallow[0] === objects[0]);
- * // => true
- */
- function clone(value) {
- return baseClone(value, CLONE_SYMBOLS_FLAG);
- }
-
- /**
- * This method is like `_.clone` except that it accepts `customizer` which
- * is invoked to produce the cloned value. If `customizer` returns `undefined`,
- * cloning is handled by the method instead. The `customizer` is invoked with
- * up to four arguments; (value [, index|key, object, stack]).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to clone.
- * @param {Function} [customizer] The function to customize cloning.
- * @returns {*} Returns the cloned value.
- * @see _.cloneDeepWith
- * @example
- *
- * function customizer(value) {
- * if (_.isElement(value)) {
- * return value.cloneNode(false);
- * }
- * }
- *
- * var el = _.cloneWith(document.body, customizer);
- *
- * console.log(el === document.body);
- * // => false
- * console.log(el.nodeName);
- * // => 'BODY'
- * console.log(el.childNodes.length);
- * // => 0
- */
- function cloneWith(value, customizer) {
- customizer = typeof customizer == 'function' ? customizer : undefined;
- return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
- }
-
- /**
- * This method is like `_.clone` except that it recursively clones `value`.
- *
- * @static
- * @memberOf _
- * @since 1.0.0
- * @category Lang
- * @param {*} value The value to recursively clone.
- * @returns {*} Returns the deep cloned value.
- * @see _.clone
- * @example
- *
- * var objects = [{ 'a': 1 }, { 'b': 2 }];
- *
- * var deep = _.cloneDeep(objects);
- * console.log(deep[0] === objects[0]);
- * // => false
- */
- function cloneDeep(value) {
- return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
- }
-
- /**
- * This method is like `_.cloneWith` except that it recursively clones `value`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to recursively clone.
- * @param {Function} [customizer] The function to customize cloning.
- * @returns {*} Returns the deep cloned value.
- * @see _.cloneWith
- * @example
- *
- * function customizer(value) {
- * if (_.isElement(value)) {
- * return value.cloneNode(true);
- * }
- * }
- *
- * var el = _.cloneDeepWith(document.body, customizer);
- *
- * console.log(el === document.body);
- * // => false
- * console.log(el.nodeName);
- * // => 'BODY'
- * console.log(el.childNodes.length);
- * // => 20
- */
- function cloneDeepWith(value, customizer) {
- customizer = typeof customizer == 'function' ? customizer : undefined;
- return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
- }
-
- /**
- * Checks if `object` conforms to `source` by invoking the predicate
- * properties of `source` with the corresponding property values of `object`.
- *
- * **Note:** This method is equivalent to `_.conforms` when `source` is
- * partially applied.
- *
- * @static
- * @memberOf _
- * @since 4.14.0
- * @category Lang
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property predicates to conform to.
- * @returns {boolean} Returns `true` if `object` conforms, else `false`.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- *
- * _.conformsTo(object, { 'b': function(n) { return n > 1; } });
- * // => true
- *
- * _.conformsTo(object, { 'b': function(n) { return n > 2; } });
- * // => false
- */
- function conformsTo(object, source) {
- return source == null || baseConformsTo(object, source, keys(source));
- }
-
- /**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */
- function eq(value, other) {
- return value === other || (value !== value && other !== other);
- }
-
- /**
- * Checks if `value` is greater than `other`.
- *
- * @static
- * @memberOf _
- * @since 3.9.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is greater than `other`,
- * else `false`.
- * @see _.lt
- * @example
- *
- * _.gt(3, 1);
- * // => true
- *
- * _.gt(3, 3);
- * // => false
- *
- * _.gt(1, 3);
- * // => false
- */
- var gt = createRelationalOperation(baseGt);
-
- /**
- * Checks if `value` is greater than or equal to `other`.
- *
- * @static
- * @memberOf _
- * @since 3.9.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is greater than or equal to
- * `other`, else `false`.
- * @see _.lte
- * @example
- *
- * _.gte(3, 1);
- * // => true
- *
- * _.gte(3, 3);
- * // => true
- *
- * _.gte(1, 3);
- * // => false
- */
- var gte = createRelationalOperation(function(value, other) {
- return value >= other;
- });
-
- /**
- * Checks if `value` is likely an `arguments` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- * else `false`.
- * @example
- *
- * _.isArguments(function() { return arguments; }());
- * // => true
- *
- * _.isArguments([1, 2, 3]);
- * // => false
- */
- var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
- return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
- !propertyIsEnumerable.call(value, 'callee');
- };
-
- /**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
- var isArray = Array.isArray;
-
- /**
- * Checks if `value` is classified as an `ArrayBuffer` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
- * @example
- *
- * _.isArrayBuffer(new ArrayBuffer(2));
- * // => true
- *
- * _.isArrayBuffer(new Array(2));
- * // => false
- */
- var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
-
- /**
- * Checks if `value` is array-like. A value is considered array-like if it's
- * not a function and has a `value.length` that's an integer greater than or
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
- * @example
- *
- * _.isArrayLike([1, 2, 3]);
- * // => true
- *
- * _.isArrayLike(document.body.children);
- * // => true
- *
- * _.isArrayLike('abc');
- * // => true
- *
- * _.isArrayLike(_.noop);
- * // => false
- */
- function isArrayLike(value) {
- return value != null && isLength(value.length) && !isFunction(value);
- }
-
- /**
- * This method is like `_.isArrayLike` except that it also checks if `value`
- * is an object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array-like object,
- * else `false`.
- * @example
- *
- * _.isArrayLikeObject([1, 2, 3]);
- * // => true
- *
- * _.isArrayLikeObject(document.body.children);
- * // => true
- *
- * _.isArrayLikeObject('abc');
- * // => false
- *
- * _.isArrayLikeObject(_.noop);
- * // => false
- */
- function isArrayLikeObject(value) {
- return isObjectLike(value) && isArrayLike(value);
- }
-
- /**
- * Checks if `value` is classified as a boolean primitive or object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
- * @example
- *
- * _.isBoolean(false);
- * // => true
- *
- * _.isBoolean(null);
- * // => false
- */
- function isBoolean(value) {
- return value === true || value === false ||
- (isObjectLike(value) && baseGetTag(value) == boolTag);
- }
-
- /**
- * Checks if `value` is a buffer.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
- * @example
- *
- * _.isBuffer(new Buffer(2));
- * // => true
- *
- * _.isBuffer(new Uint8Array(2));
- * // => false
- */
- var isBuffer = nativeIsBuffer || stubFalse;
-
- /**
- * Checks if `value` is classified as a `Date` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
- * @example
- *
- * _.isDate(new Date);
- * // => true
- *
- * _.isDate('Mon April 23 2012');
- * // => false
- */
- var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
-
- /**
- * Checks if `value` is likely a DOM element.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
- * @example
- *
- * _.isElement(document.body);
- * // => true
- *
- * _.isElement('<body>');
- * // => false
- */
- function isElement(value) {
- return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
- }
-
- /**
- * Checks if `value` is an empty object, collection, map, or set.
- *
- * Objects are considered empty if they have no own enumerable string keyed
- * properties.
- *
- * Array-like values such as `arguments` objects, arrays, buffers, strings, or
- * jQuery-like collections are considered empty if they have a `length` of `0`.
- * Similarly, maps and sets are considered empty if they have a `size` of `0`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is empty, else `false`.
- * @example
- *
- * _.isEmpty(null);
- * // => true
- *
- * _.isEmpty(true);
- * // => true
- *
- * _.isEmpty(1);
- * // => true
- *
- * _.isEmpty([1, 2, 3]);
- * // => false
- *
- * _.isEmpty({ 'a': 1 });
- * // => false
- */
- function isEmpty(value) {
- if (value == null) {
- return true;
- }
- if (isArrayLike(value) &&
- (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
- isBuffer(value) || isTypedArray(value) || isArguments(value))) {
- return !value.length;
- }
- var tag = getTag(value);
- if (tag == mapTag || tag == setTag) {
- return !value.size;
- }
- if (isPrototype(value)) {
- return !baseKeys(value).length;
- }
- for (var key in value) {
- if (hasOwnProperty.call(value, key)) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Performs a deep comparison between two values to determine if they are
- * equivalent.
- *
- * **Note:** This method supports comparing arrays, array buffers, booleans,
- * date objects, error objects, maps, numbers, `Object` objects, regexes,
- * sets, strings, symbols, and typed arrays. `Object` objects are compared
- * by their own, not inherited, enumerable properties. Functions and DOM
- * nodes are compared by strict equality, i.e. `===`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.isEqual(object, other);
- * // => true
- *
- * object === other;
- * // => false
- */
- function isEqual(value, other) {
- return baseIsEqual(value, other);
- }
-
- /**
- * This method is like `_.isEqual` except that it accepts `customizer` which
- * is invoked to compare values. If `customizer` returns `undefined`, comparisons
- * are handled by the method instead. The `customizer` is invoked with up to
- * six arguments: (objValue, othValue [, index|key, object, other, stack]).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @param {Function} [customizer] The function to customize comparisons.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * function isGreeting(value) {
- * return /^h(?:i|ello)$/.test(value);
- * }
- *
- * function customizer(objValue, othValue) {
- * if (isGreeting(objValue) && isGreeting(othValue)) {
- * return true;
- * }
- * }
- *
- * var array = ['hello', 'goodbye'];
- * var other = ['hi', 'goodbye'];
- *
- * _.isEqualWith(array, other, customizer);
- * // => true
- */
- function isEqualWith(value, other, customizer) {
- customizer = typeof customizer == 'function' ? customizer : undefined;
- var result = customizer ? customizer(value, other) : undefined;
- return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
- }
-
- /**
- * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
- * `SyntaxError`, `TypeError`, or `URIError` object.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
- * @example
- *
- * _.isError(new Error);
- * // => true
- *
- * _.isError(Error);
- * // => false
- */
- function isError(value) {
- if (!isObjectLike(value)) {
- return false;
- }
- var tag = baseGetTag(value);
- return tag == errorTag || tag == domExcTag ||
- (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
- }
-
- /**
- * Checks if `value` is a finite primitive number.
- *
- * **Note:** This method is based on
- * [`Number.isFinite`](https://mdn.io/Number/isFinite).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
- * @example
- *
- * _.isFinite(3);
- * // => true
- *
- * _.isFinite(Number.MIN_VALUE);
- * // => true
- *
- * _.isFinite(Infinity);
- * // => false
- *
- * _.isFinite('3');
- * // => false
- */
- function isFinite(value) {
- return typeof value == 'number' && nativeIsFinite(value);
- }
-
- /**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
- function isFunction(value) {
- if (!isObject(value)) {
- return false;
- }
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 9 which returns 'object' for typed arrays and other constructors.
- var tag = baseGetTag(value);
- return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
- }
-
- /**
- * Checks if `value` is an integer.
- *
- * **Note:** This method is based on
- * [`Number.isInteger`](https://mdn.io/Number/isInteger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
- * @example
- *
- * _.isInteger(3);
- * // => true
- *
- * _.isInteger(Number.MIN_VALUE);
- * // => false
- *
- * _.isInteger(Infinity);
- * // => false
- *
- * _.isInteger('3');
- * // => false
- */
- function isInteger(value) {
- return typeof value == 'number' && value == toInteger(value);
- }
-
- /**
- * Checks if `value` is a valid array-like length.
- *
- * **Note:** This method is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
- * @example
- *
- * _.isLength(3);
- * // => true
- *
- * _.isLength(Number.MIN_VALUE);
- * // => false
- *
- * _.isLength(Infinity);
- * // => false
- *
- * _.isLength('3');
- * // => false
- */
- function isLength(value) {
- return typeof value == 'number' &&
- value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
- }
-
- /**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
- function isObject(value) {
- var type = typeof value;
- return value != null && (type == 'object' || type == 'function');
- }
-
- /**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
- function isObjectLike(value) {
- return value != null && typeof value == 'object';
- }
-
- /**
- * Checks if `value` is classified as a `Map` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a map, else `false`.
- * @example
- *
- * _.isMap(new Map);
- * // => true
- *
- * _.isMap(new WeakMap);
- * // => false
- */
- var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
-
- /**
- * Performs a partial deep comparison between `object` and `source` to
- * determine if `object` contains equivalent property values.
- *
- * **Note:** This method is equivalent to `_.matches` when `source` is
- * partially applied.
- *
- * Partial comparisons will match empty array and empty object `source`
- * values against any array or object value, respectively. See `_.isEqual`
- * for a list of supported value comparisons.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property values to match.
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- *
- * _.isMatch(object, { 'b': 2 });
- * // => true
- *
- * _.isMatch(object, { 'b': 1 });
- * // => false
- */
- function isMatch(object, source) {
- return object === source || baseIsMatch(object, source, getMatchData(source));
- }
-
- /**
- * This method is like `_.isMatch` except that it accepts `customizer` which
- * is invoked to compare values. If `customizer` returns `undefined`, comparisons
- * are handled by the method instead. The `customizer` is invoked with five
- * arguments: (objValue, srcValue, index|key, object, source).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property values to match.
- * @param {Function} [customizer] The function to customize comparisons.
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
- * @example
- *
- * function isGreeting(value) {
- * return /^h(?:i|ello)$/.test(value);
- * }
- *
- * function customizer(objValue, srcValue) {
- * if (isGreeting(objValue) && isGreeting(srcValue)) {
- * return true;
- * }
- * }
- *
- * var object = { 'greeting': 'hello' };
- * var source = { 'greeting': 'hi' };
- *
- * _.isMatchWith(object, source, customizer);
- * // => true
- */
- function isMatchWith(object, source, customizer) {
- customizer = typeof customizer == 'function' ? customizer : undefined;
- return baseIsMatch(object, source, getMatchData(source), customizer);
- }
-
- /**
- * Checks if `value` is `NaN`.
- *
- * **Note:** This method is based on
- * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
- * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
- * `undefined` and other non-number values.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
- * @example
- *
- * _.isNaN(NaN);
- * // => true
- *
- * _.isNaN(new Number(NaN));
- * // => true
- *
- * isNaN(undefined);
- * // => true
- *
- * _.isNaN(undefined);
- * // => false
- */
- function isNaN(value) {
- // An `NaN` primitive is the only value that is not equal to itself.
- // Perform the `toStringTag` check first to avoid errors with some
- // ActiveX objects in IE.
- return isNumber(value) && value != +value;
- }
-
- /**
- * Checks if `value` is a pristine native function.
- *
- * **Note:** This method can't reliably detect native functions in the presence
- * of the core-js package because core-js circumvents this kind of detection.
- * Despite multiple requests, the core-js maintainer has made it clear: any
- * attempt to fix the detection will be obstructed. As a result, we're left
- * with little choice but to throw an error. Unfortunately, this also affects
- * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
- * which rely on core-js.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- * @example
- *
- * _.isNative(Array.prototype.push);
- * // => true
- *
- * _.isNative(_);
- * // => false
- */
- function isNative(value) {
- if (isMaskable(value)) {
- throw new Error(CORE_ERROR_TEXT);
- }
- return baseIsNative(value);
- }
-
- /**
- * Checks if `value` is `null`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
- * @example
- *
- * _.isNull(null);
- * // => true
- *
- * _.isNull(void 0);
- * // => false
- */
- function isNull(value) {
- return value === null;
- }
-
- /**
- * Checks if `value` is `null` or `undefined`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
- * @example
- *
- * _.isNil(null);
- * // => true
- *
- * _.isNil(void 0);
- * // => true
- *
- * _.isNil(NaN);
- * // => false
- */
- function isNil(value) {
- return value == null;
- }
-
- /**
- * Checks if `value` is classified as a `Number` primitive or object.
- *
- * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
- * classified as numbers, use the `_.isFinite` method.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a number, else `false`.
- * @example
- *
- * _.isNumber(3);
- * // => true
- *
- * _.isNumber(Number.MIN_VALUE);
- * // => true
- *
- * _.isNumber(Infinity);
- * // => true
- *
- * _.isNumber('3');
- * // => false
- */
- function isNumber(value) {
- return typeof value == 'number' ||
- (isObjectLike(value) && baseGetTag(value) == numberTag);
- }
-
- /**
- * Checks if `value` is a plain object, that is, an object created by the
- * `Object` constructor or one with a `[[Prototype]]` of `null`.
- *
- * @static
- * @memberOf _
- * @since 0.8.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * }
- *
- * _.isPlainObject(new Foo);
- * // => false
- *
- * _.isPlainObject([1, 2, 3]);
- * // => false
- *
- * _.isPlainObject({ 'x': 0, 'y': 0 });
- * // => true
- *
- * _.isPlainObject(Object.create(null));
- * // => true
- */
- function isPlainObject(value) {
- if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
- return false;
- }
- var proto = getPrototype(value);
- if (proto === null) {
- return true;
- }
- var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
- return typeof Ctor == 'function' && Ctor instanceof Ctor &&
- funcToString.call(Ctor) == objectCtorString;
- }
-
- /**
- * Checks if `value` is classified as a `RegExp` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
- * @example
- *
- * _.isRegExp(/abc/);
- * // => true
- *
- * _.isRegExp('/abc/');
- * // => false
- */
- var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
-
- /**
- * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
- * double precision number which isn't the result of a rounded unsafe integer.
- *
- * **Note:** This method is based on
- * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
- * @example
- *
- * _.isSafeInteger(3);
- * // => true
- *
- * _.isSafeInteger(Number.MIN_VALUE);
- * // => false
- *
- * _.isSafeInteger(Infinity);
- * // => false
- *
- * _.isSafeInteger('3');
- * // => false
- */
- function isSafeInteger(value) {
- return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
- }
-
- /**
- * Checks if `value` is classified as a `Set` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a set, else `false`.
- * @example
- *
- * _.isSet(new Set);
- * // => true
- *
- * _.isSet(new WeakSet);
- * // => false
- */
- var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
-
- /**
- * Checks if `value` is classified as a `String` primitive or object.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a string, else `false`.
- * @example
- *
- * _.isString('abc');
- * // => true
- *
- * _.isString(1);
- * // => false
- */
- function isString(value) {
- return typeof value == 'string' ||
- (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
- }
-
- /**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
- function isSymbol(value) {
- return typeof value == 'symbol' ||
- (isObjectLike(value) && baseGetTag(value) == symbolTag);
- }
-
- /**
- * Checks if `value` is classified as a typed array.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
- * @example
- *
- * _.isTypedArray(new Uint8Array);
- * // => true
- *
- * _.isTypedArray([]);
- * // => false
- */
- var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
-
- /**
- * Checks if `value` is `undefined`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
- * @example
- *
- * _.isUndefined(void 0);
- * // => true
- *
- * _.isUndefined(null);
- * // => false
- */
- function isUndefined(value) {
- return value === undefined;
- }
-
- /**
- * Checks if `value` is classified as a `WeakMap` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.
- * @example
- *
- * _.isWeakMap(new WeakMap);
- * // => true
- *
- * _.isWeakMap(new Map);
- * // => false
- */
- function isWeakMap(value) {
- return isObjectLike(value) && getTag(value) == weakMapTag;
- }
-
- /**
- * Checks if `value` is classified as a `WeakSet` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
- * @example
- *
- * _.isWeakSet(new WeakSet);
- * // => true
- *
- * _.isWeakSet(new Set);
- * // => false
- */
- function isWeakSet(value) {
- return isObjectLike(value) && baseGetTag(value) == weakSetTag;
- }
-
- /**
- * Checks if `value` is less than `other`.
- *
- * @static
- * @memberOf _
- * @since 3.9.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is less than `other`,
- * else `false`.
- * @see _.gt
- * @example
- *
- * _.lt(1, 3);
- * // => true
- *
- * _.lt(3, 3);
- * // => false
- *
- * _.lt(3, 1);
- * // => false
- */
- var lt = createRelationalOperation(baseLt);
-
- /**
- * Checks if `value` is less than or equal to `other`.
- *
- * @static
- * @memberOf _
- * @since 3.9.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is less than or equal to
- * `other`, else `false`.
- * @see _.gte
- * @example
- *
- * _.lte(1, 3);
- * // => true
- *
- * _.lte(3, 3);
- * // => true
- *
- * _.lte(3, 1);
- * // => false
- */
- var lte = createRelationalOperation(function(value, other) {
- return value <= other;
- });
-
- /**
- * Converts `value` to an array.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {Array} Returns the converted array.
- * @example
- *
- * _.toArray({ 'a': 1, 'b': 2 });
- * // => [1, 2]
- *
- * _.toArray('abc');
- * // => ['a', 'b', 'c']
- *
- * _.toArray(1);
- * // => []
- *
- * _.toArray(null);
- * // => []
- */
- function toArray(value) {
- if (!value) {
- return [];
- }
- if (isArrayLike(value)) {
- return isString(value) ? stringToArray(value) : copyArray(value);
- }
- if (symIterator && value[symIterator]) {
- return iteratorToArray(value[symIterator]());
- }
- var tag = getTag(value),
- func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
-
- return func(value);
- }
-
- /**
- * Converts `value` to a finite number.
- *
- * @static
- * @memberOf _
- * @since 4.12.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted number.
- * @example
- *
- * _.toFinite(3.2);
- * // => 3.2
- *
- * _.toFinite(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toFinite(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toFinite('3.2');
- * // => 3.2
- */
- function toFinite(value) {
- if (!value) {
- return value === 0 ? value : 0;
- }
- value = toNumber(value);
- if (value === INFINITY || value === -INFINITY) {
- var sign = (value < 0 ? -1 : 1);
- return sign * MAX_INTEGER;
- }
- return value === value ? value : 0;
- }
-
- /**
- * Converts `value` to an integer.
- *
- * **Note:** This method is loosely based on
- * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toInteger(3.2);
- * // => 3
- *
- * _.toInteger(Number.MIN_VALUE);
- * // => 0
- *
- * _.toInteger(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toInteger('3.2');
- * // => 3
- */
- function toInteger(value) {
- var result = toFinite(value),
- remainder = result % 1;
-
- return result === result ? (remainder ? result - remainder : result) : 0;
- }
-
- /**
- * Converts `value` to an integer suitable for use as the length of an
- * array-like object.
- *
- * **Note:** This method is based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toLength(3.2);
- * // => 3
- *
- * _.toLength(Number.MIN_VALUE);
- * // => 0
- *
- * _.toLength(Infinity);
- * // => 4294967295
- *
- * _.toLength('3.2');
- * // => 3
- */
- function toLength(value) {
- return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
- }
-
- /**
- * Converts `value` to a number.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {number} Returns the number.
- * @example
- *
- * _.toNumber(3.2);
- * // => 3.2
- *
- * _.toNumber(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toNumber(Infinity);
- * // => Infinity
- *
- * _.toNumber('3.2');
- * // => 3.2
- */
- function toNumber(value) {
- if (typeof value == 'number') {
- return value;
- }
- if (isSymbol(value)) {
- return NAN;
- }
- if (isObject(value)) {
- var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
- value = isObject(other) ? (other + '') : other;
- }
- if (typeof value != 'string') {
- return value === 0 ? value : +value;
- }
- value = value.replace(reTrim, '');
- var isBinary = reIsBinary.test(value);
- return (isBinary || reIsOctal.test(value))
- ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
- : (reIsBadHex.test(value) ? NAN : +value);
- }
-
- /**
- * Converts `value` to a plain object flattening inherited enumerable string
- * keyed properties of `value` to own properties of the plain object.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {Object} Returns the converted plain object.
- * @example
- *
- * function Foo() {
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.assign({ 'a': 1 }, new Foo);
- * // => { 'a': 1, 'b': 2 }
- *
- * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
- * // => { 'a': 1, 'b': 2, 'c': 3 }
- */
- function toPlainObject(value) {
- return copyObject(value, keysIn(value));
- }
-
- /**
- * Converts `value` to a safe integer. A safe integer can be compared and
- * represented correctly.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toSafeInteger(3.2);
- * // => 3
- *
- * _.toSafeInteger(Number.MIN_VALUE);
- * // => 0
- *
- * _.toSafeInteger(Infinity);
- * // => 9007199254740991
- *
- * _.toSafeInteger('3.2');
- * // => 3
- */
- function toSafeInteger(value) {
- return value
- ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)
- : (value === 0 ? value : 0);
- }
-
- /**
- * Converts `value` to a string. An empty string is returned for `null`
- * and `undefined` values. The sign of `-0` is preserved.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.toString(null);
- * // => ''
- *
- * _.toString(-0);
- * // => '-0'
- *
- * _.toString([1, 2, 3]);
- * // => '1,2,3'
- */
- function toString(value) {
- return value == null ? '' : baseToString(value);
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Assigns own enumerable string keyed properties of source objects to the
- * destination object. Source objects are applied from left to right.
- * Subsequent sources overwrite property assignments of previous sources.
- *
- * **Note:** This method mutates `object` and is loosely based on
- * [`Object.assign`](https://mdn.io/Object/assign).
- *
- * @static
- * @memberOf _
- * @since 0.10.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @see _.assignIn
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * }
- *
- * function Bar() {
- * this.c = 3;
- * }
- *
- * Foo.prototype.b = 2;
- * Bar.prototype.d = 4;
- *
- * _.assign({ 'a': 0 }, new Foo, new Bar);
- * // => { 'a': 1, 'c': 3 }
- */
- var assign = createAssigner(function(object, source) {
- if (isPrototype(source) || isArrayLike(source)) {
- copyObject(source, keys(source), object);
- return;
- }
- for (var key in source) {
- if (hasOwnProperty.call(source, key)) {
- assignValue(object, key, source[key]);
- }
- }
- });
-
- /**
- * This method is like `_.assign` except that it iterates over own and
- * inherited source properties.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @alias extend
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @see _.assign
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * }
- *
- * function Bar() {
- * this.c = 3;
- * }
- *
- * Foo.prototype.b = 2;
- * Bar.prototype.d = 4;
- *
- * _.assignIn({ 'a': 0 }, new Foo, new Bar);
- * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
- */
- var assignIn = createAssigner(function(object, source) {
- copyObject(source, keysIn(source), object);
- });
-
- /**
- * This method is like `_.assignIn` except that it accepts `customizer`
- * which is invoked to produce the assigned values. If `customizer` returns
- * `undefined`, assignment is handled by the method instead. The `customizer`
- * is invoked with five arguments: (objValue, srcValue, key, object, source).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @alias extendWith
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} sources The source objects.
- * @param {Function} [customizer] The function to customize assigned values.
- * @returns {Object} Returns `object`.
- * @see _.assignWith
- * @example
- *
- * function customizer(objValue, srcValue) {
- * return _.isUndefined(objValue) ? srcValue : objValue;
- * }
- *
- * var defaults = _.partialRight(_.assignInWith, customizer);
- *
- * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
- * // => { 'a': 1, 'b': 2 }
- */
- var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
- copyObject(source, keysIn(source), object, customizer);
- });
-
- /**
- * This method is like `_.assign` except that it accepts `customizer`
- * which is invoked to produce the assigned values. If `customizer` returns
- * `undefined`, assignment is handled by the method instead. The `customizer`
- * is invoked with five arguments: (objValue, srcValue, key, object, source).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} sources The source objects.
- * @param {Function} [customizer] The function to customize assigned values.
- * @returns {Object} Returns `object`.
- * @see _.assignInWith
- * @example
- *
- * function customizer(objValue, srcValue) {
- * return _.isUndefined(objValue) ? srcValue : objValue;
- * }
- *
- * var defaults = _.partialRight(_.assignWith, customizer);
- *
- * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
- * // => { 'a': 1, 'b': 2 }
- */
- var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
- copyObject(source, keys(source), object, customizer);
- });
-
- /**
- * Creates an array of values corresponding to `paths` of `object`.
- *
- * @static
- * @memberOf _
- * @since 1.0.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {...(string|string[])} [paths] The property paths to pick.
- * @returns {Array} Returns the picked values.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
- *
- * _.at(object, ['a[0].b.c', 'a[1]']);
- * // => [3, 4]
- */
- var at = flatRest(baseAt);
-
- /**
- * Creates an object that inherits from the `prototype` object. If a
- * `properties` object is given, its own enumerable string keyed properties
- * are assigned to the created object.
- *
- * @static
- * @memberOf _
- * @since 2.3.0
- * @category Object
- * @param {Object} prototype The object to inherit from.
- * @param {Object} [properties] The properties to assign to the object.
- * @returns {Object} Returns the new object.
- * @example
- *
- * function Shape() {
- * this.x = 0;
- * this.y = 0;
- * }
- *
- * function Circle() {
- * Shape.call(this);
- * }
- *
- * Circle.prototype = _.create(Shape.prototype, {
- * 'constructor': Circle
- * });
- *
- * var circle = new Circle;
- * circle instanceof Circle;
- * // => true
- *
- * circle instanceof Shape;
- * // => true
- */
- function create(prototype, properties) {
- var result = baseCreate(prototype);
- return properties == null ? result : baseAssign(result, properties);
- }
-
- /**
- * Assigns own and inherited enumerable string keyed properties of source
- * objects to the destination object for all destination properties that
- * resolve to `undefined`. Source objects are applied from left to right.
- * Once a property is set, additional values of the same property are ignored.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @see _.defaultsDeep
- * @example
- *
- * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
- * // => { 'a': 1, 'b': 2 }
- */
- var defaults = baseRest(function(object, sources) {
- object = Object(object);
-
- var index = -1;
- var length = sources.length;
- var guard = length > 2 ? sources[2] : undefined;
-
- if (guard && isIterateeCall(sources[0], sources[1], guard)) {
- length = 1;
- }
-
- while (++index < length) {
- var source = sources[index];
- var props = keysIn(source);
- var propsIndex = -1;
- var propsLength = props.length;
-
- while (++propsIndex < propsLength) {
- var key = props[propsIndex];
- var value = object[key];
-
- if (value === undefined ||
- (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
- object[key] = source[key];
- }
- }
- }
-
- return object;
- });
-
- /**
- * This method is like `_.defaults` except that it recursively assigns
- * default properties.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 3.10.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @see _.defaults
- * @example
- *
- * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
- * // => { 'a': { 'b': 2, 'c': 3 } }
- */
- var defaultsDeep = baseRest(function(args) {
- args.push(undefined, customDefaultsMerge);
- return apply(mergeWith, undefined, args);
- });
-
- /**
- * This method is like `_.find` except that it returns the key of the first
- * element `predicate` returns truthy for instead of the element itself.
- *
- * @static
- * @memberOf _
- * @since 1.1.0
- * @category Object
- * @param {Object} object The object to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {string|undefined} Returns the key of the matched element,
- * else `undefined`.
- * @example
- *
- * var users = {
- * 'barney': { 'age': 36, 'active': true },
- * 'fred': { 'age': 40, 'active': false },
- * 'pebbles': { 'age': 1, 'active': true }
- * };
- *
- * _.findKey(users, function(o) { return o.age < 40; });
- * // => 'barney' (iteration order is not guaranteed)
- *
- * // The `_.matches` iteratee shorthand.
- * _.findKey(users, { 'age': 1, 'active': true });
- * // => 'pebbles'
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findKey(users, ['active', false]);
- * // => 'fred'
- *
- * // The `_.property` iteratee shorthand.
- * _.findKey(users, 'active');
- * // => 'barney'
- */
- function findKey(object, predicate) {
- return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
- }
-
- /**
- * This method is like `_.findKey` except that it iterates over elements of
- * a collection in the opposite order.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Object
- * @param {Object} object The object to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {string|undefined} Returns the key of the matched element,
- * else `undefined`.
- * @example
- *
- * var users = {
- * 'barney': { 'age': 36, 'active': true },
- * 'fred': { 'age': 40, 'active': false },
- * 'pebbles': { 'age': 1, 'active': true }
- * };
- *
- * _.findLastKey(users, function(o) { return o.age < 40; });
- * // => returns 'pebbles' assuming `_.findKey` returns 'barney'
- *
- * // The `_.matches` iteratee shorthand.
- * _.findLastKey(users, { 'age': 36, 'active': true });
- * // => 'barney'
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findLastKey(users, ['active', false]);
- * // => 'fred'
- *
- * // The `_.property` iteratee shorthand.
- * _.findLastKey(users, 'active');
- * // => 'pebbles'
- */
- function findLastKey(object, predicate) {
- return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
- }
-
- /**
- * Iterates over own and inherited enumerable string keyed properties of an
- * object and invokes `iteratee` for each property. The iteratee is invoked
- * with three arguments: (value, key, object). Iteratee functions may exit
- * iteration early by explicitly returning `false`.
- *
- * @static
- * @memberOf _
- * @since 0.3.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns `object`.
- * @see _.forInRight
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.forIn(new Foo, function(value, key) {
- * console.log(key);
- * });
- * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
- */
- function forIn(object, iteratee) {
- return object == null
- ? object
- : baseFor(object, getIteratee(iteratee, 3), keysIn);
- }
-
- /**
- * This method is like `_.forIn` except that it iterates over properties of
- * `object` in the opposite order.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns `object`.
- * @see _.forIn
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.forInRight(new Foo, function(value, key) {
- * console.log(key);
- * });
- * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.
- */
- function forInRight(object, iteratee) {
- return object == null
- ? object
- : baseForRight(object, getIteratee(iteratee, 3), keysIn);
- }
-
- /**
- * Iterates over own enumerable string keyed properties of an object and
- * invokes `iteratee` for each property. The iteratee is invoked with three
- * arguments: (value, key, object). Iteratee functions may exit iteration
- * early by explicitly returning `false`.
- *
- * @static
- * @memberOf _
- * @since 0.3.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns `object`.
- * @see _.forOwnRight
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.forOwn(new Foo, function(value, key) {
- * console.log(key);
- * });
- * // => Logs 'a' then 'b' (iteration order is not guaranteed).
- */
- function forOwn(object, iteratee) {
- return object && baseForOwn(object, getIteratee(iteratee, 3));
- }
-
- /**
- * This method is like `_.forOwn` except that it iterates over properties of
- * `object` in the opposite order.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns `object`.
- * @see _.forOwn
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.forOwnRight(new Foo, function(value, key) {
- * console.log(key);
- * });
- * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.
- */
- function forOwnRight(object, iteratee) {
- return object && baseForOwnRight(object, getIteratee(iteratee, 3));
- }
-
- /**
- * Creates an array of function property names from own enumerable properties
- * of `object`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to inspect.
- * @returns {Array} Returns the function names.
- * @see _.functionsIn
- * @example
- *
- * function Foo() {
- * this.a = _.constant('a');
- * this.b = _.constant('b');
- * }
- *
- * Foo.prototype.c = _.constant('c');
- *
- * _.functions(new Foo);
- * // => ['a', 'b']
- */
- function functions(object) {
- return object == null ? [] : baseFunctions(object, keys(object));
- }
-
- /**
- * Creates an array of function property names from own and inherited
- * enumerable properties of `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to inspect.
- * @returns {Array} Returns the function names.
- * @see _.functions
- * @example
- *
- * function Foo() {
- * this.a = _.constant('a');
- * this.b = _.constant('b');
- * }
- *
- * Foo.prototype.c = _.constant('c');
- *
- * _.functionsIn(new Foo);
- * // => ['a', 'b', 'c']
- */
- function functionsIn(object) {
- return object == null ? [] : baseFunctions(object, keysIn(object));
- }
-
- /**
- * Gets the value at `path` of `object`. If the resolved value is
- * `undefined`, the `defaultValue` is returned in its place.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @param {*} [defaultValue] The value returned for `undefined` resolved values.
- * @returns {*} Returns the resolved value.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.get(object, 'a[0].b.c');
- * // => 3
- *
- * _.get(object, ['a', '0', 'b', 'c']);
- * // => 3
- *
- * _.get(object, 'a.b.c', 'default');
- * // => 'default'
- */
- function get(object, path, defaultValue) {
- var result = object == null ? undefined : baseGet(object, path);
- return result === undefined ? defaultValue : result;
- }
-
- /**
- * Checks if `path` is a direct property of `object`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- * @example
- *
- * var object = { 'a': { 'b': 2 } };
- * var other = _.create({ 'a': _.create({ 'b': 2 }) });
- *
- * _.has(object, 'a');
- * // => true
- *
- * _.has(object, 'a.b');
- * // => true
- *
- * _.has(object, ['a', 'b']);
- * // => true
- *
- * _.has(other, 'a');
- * // => false
- */
- function has(object, path) {
- return object != null && hasPath(object, path, baseHas);
- }
-
- /**
- * Checks if `path` is a direct or inherited property of `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- * @example
- *
- * var object = _.create({ 'a': _.create({ 'b': 2 }) });
- *
- * _.hasIn(object, 'a');
- * // => true
- *
- * _.hasIn(object, 'a.b');
- * // => true
- *
- * _.hasIn(object, ['a', 'b']);
- * // => true
- *
- * _.hasIn(object, 'b');
- * // => false
- */
- function hasIn(object, path) {
- return object != null && hasPath(object, path, baseHasIn);
- }
-
- /**
- * Creates an object composed of the inverted keys and values of `object`.
- * If `object` contains duplicate values, subsequent values overwrite
- * property assignments of previous values.
- *
- * @static
- * @memberOf _
- * @since 0.7.0
- * @category Object
- * @param {Object} object The object to invert.
- * @returns {Object} Returns the new inverted object.
- * @example
- *
- * var object = { 'a': 1, 'b': 2, 'c': 1 };
- *
- * _.invert(object);
- * // => { '1': 'c', '2': 'b' }
- */
- var invert = createInverter(function(result, value, key) {
- if (value != null &&
- typeof value.toString != 'function') {
- value = nativeObjectToString.call(value);
- }
-
- result[value] = key;
- }, constant(identity));
-
- /**
- * This method is like `_.invert` except that the inverted object is generated
- * from the results of running each element of `object` thru `iteratee`. The
- * corresponding inverted value of each inverted key is an array of keys
- * responsible for generating the inverted value. The iteratee is invoked
- * with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.1.0
- * @category Object
- * @param {Object} object The object to invert.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Object} Returns the new inverted object.
- * @example
- *
- * var object = { 'a': 1, 'b': 2, 'c': 1 };
- *
- * _.invertBy(object);
- * // => { '1': ['a', 'c'], '2': ['b'] }
- *
- * _.invertBy(object, function(value) {
- * return 'group' + value;
- * });
- * // => { 'group1': ['a', 'c'], 'group2': ['b'] }
- */
- var invertBy = createInverter(function(result, value, key) {
- if (value != null &&
- typeof value.toString != 'function') {
- value = nativeObjectToString.call(value);
- }
-
- if (hasOwnProperty.call(result, value)) {
- result[value].push(key);
- } else {
- result[value] = [key];
- }
- }, getIteratee);
-
- /**
- * Invokes the method at `path` of `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the method to invoke.
- * @param {...*} [args] The arguments to invoke the method with.
- * @returns {*} Returns the result of the invoked method.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
- *
- * _.invoke(object, 'a[0].b.c.slice', 1, 3);
- * // => [2, 3]
- */
- var invoke = baseRest(baseInvoke);
-
- /**
- * Creates an array of the own enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects. See the
- * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
- * for more details.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keys(new Foo);
- * // => ['a', 'b'] (iteration order is not guaranteed)
- *
- * _.keys('hi');
- * // => ['0', '1']
- */
- function keys(object) {
- return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
- }
-
- /**
- * Creates an array of the own and inherited enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keysIn(new Foo);
- * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
- */
- function keysIn(object) {
- return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
- }
-
- /**
- * The opposite of `_.mapValues`; this method creates an object with the
- * same values as `object` and keys generated by running each own enumerable
- * string keyed property of `object` thru `iteratee`. The iteratee is invoked
- * with three arguments: (value, key, object).
- *
- * @static
- * @memberOf _
- * @since 3.8.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns the new mapped object.
- * @see _.mapValues
- * @example
- *
- * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
- * return key + value;
- * });
- * // => { 'a1': 1, 'b2': 2 }
- */
- function mapKeys(object, iteratee) {
- var result = {};
- iteratee = getIteratee(iteratee, 3);
-
- baseForOwn(object, function(value, key, object) {
- baseAssignValue(result, iteratee(value, key, object), value);
- });
- return result;
- }
-
- /**
- * Creates an object with the same keys as `object` and values generated
- * by running each own enumerable string keyed property of `object` thru
- * `iteratee`. The iteratee is invoked with three arguments:
- * (value, key, object).
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns the new mapped object.
- * @see _.mapKeys
- * @example
- *
- * var users = {
- * 'fred': { 'user': 'fred', 'age': 40 },
- * 'pebbles': { 'user': 'pebbles', 'age': 1 }
- * };
- *
- * _.mapValues(users, function(o) { return o.age; });
- * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
- *
- * // The `_.property` iteratee shorthand.
- * _.mapValues(users, 'age');
- * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
- */
- function mapValues(object, iteratee) {
- var result = {};
- iteratee = getIteratee(iteratee, 3);
-
- baseForOwn(object, function(value, key, object) {
- baseAssignValue(result, key, iteratee(value, key, object));
- });
- return result;
- }
-
- /**
- * This method is like `_.assign` except that it recursively merges own and
- * inherited enumerable string keyed properties of source objects into the
- * destination object. Source properties that resolve to `undefined` are
- * skipped if a destination value exists. Array and plain object properties
- * are merged recursively. Other objects and value types are overridden by
- * assignment. Source objects are applied from left to right. Subsequent
- * sources overwrite property assignments of previous sources.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 0.5.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = {
- * 'a': [{ 'b': 2 }, { 'd': 4 }]
- * };
- *
- * var other = {
- * 'a': [{ 'c': 3 }, { 'e': 5 }]
- * };
- *
- * _.merge(object, other);
- * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
- */
- var merge = createAssigner(function(object, source, srcIndex) {
- baseMerge(object, source, srcIndex);
- });
-
- /**
- * This method is like `_.merge` except that it accepts `customizer` which
- * is invoked to produce the merged values of the destination and source
- * properties. If `customizer` returns `undefined`, merging is handled by the
- * method instead. The `customizer` is invoked with six arguments:
- * (objValue, srcValue, key, object, source, stack).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} sources The source objects.
- * @param {Function} customizer The function to customize assigned values.
- * @returns {Object} Returns `object`.
- * @example
- *
- * function customizer(objValue, srcValue) {
- * if (_.isArray(objValue)) {
- * return objValue.concat(srcValue);
- * }
- * }
- *
- * var object = { 'a': [1], 'b': [2] };
- * var other = { 'a': [3], 'b': [4] };
- *
- * _.mergeWith(object, other, customizer);
- * // => { 'a': [1, 3], 'b': [2, 4] }
- */
- var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
- baseMerge(object, source, srcIndex, customizer);
- });
-
- /**
- * The opposite of `_.pick`; this method creates an object composed of the
- * own and inherited enumerable property paths of `object` that are not omitted.
- *
- * **Note:** This method is considerably slower than `_.pick`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The source object.
- * @param {...(string|string[])} [paths] The property paths to omit.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.omit(object, ['a', 'c']);
- * // => { 'b': '2' }
- */
- var omit = flatRest(function(object, paths) {
- var result = {};
- if (object == null) {
- return result;
- }
- var isDeep = false;
- paths = arrayMap(paths, function(path) {
- path = castPath(path, object);
- isDeep || (isDeep = path.length > 1);
- return path;
- });
- copyObject(object, getAllKeysIn(object), result);
- if (isDeep) {
- result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
- }
- var length = paths.length;
- while (length--) {
- baseUnset(result, paths[length]);
- }
- return result;
- });
-
- /**
- * The opposite of `_.pickBy`; this method creates an object composed of
- * the own and inherited enumerable string keyed properties of `object` that
- * `predicate` doesn't return truthy for. The predicate is invoked with two
- * arguments: (value, key).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The source object.
- * @param {Function} [predicate=_.identity] The function invoked per property.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.omitBy(object, _.isNumber);
- * // => { 'b': '2' }
- */
- function omitBy(object, predicate) {
- return pickBy(object, negate(getIteratee(predicate)));
- }
-
- /**
- * Creates an object composed of the picked `object` properties.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The source object.
- * @param {...(string|string[])} [paths] The property paths to pick.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.pick(object, ['a', 'c']);
- * // => { 'a': 1, 'c': 3 }
- */
- var pick = flatRest(function(object, paths) {
- return object == null ? {} : basePick(object, paths);
- });
-
- /**
- * Creates an object composed of the `object` properties `predicate` returns
- * truthy for. The predicate is invoked with two arguments: (value, key).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The source object.
- * @param {Function} [predicate=_.identity] The function invoked per property.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.pickBy(object, _.isNumber);
- * // => { 'a': 1, 'c': 3 }
- */
- function pickBy(object, predicate) {
- if (object == null) {
- return {};
- }
- var props = arrayMap(getAllKeysIn(object), function(prop) {
- return [prop];
- });
- predicate = getIteratee(predicate);
- return basePickBy(object, props, function(value, path) {
- return predicate(value, path[0]);
- });
- }
-
- /**
- * This method is like `_.get` except that if the resolved value is a
- * function it's invoked with the `this` binding of its parent object and
- * its result is returned.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to resolve.
- * @param {*} [defaultValue] The value returned for `undefined` resolved values.
- * @returns {*} Returns the resolved value.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
- *
- * _.result(object, 'a[0].b.c1');
- * // => 3
- *
- * _.result(object, 'a[0].b.c2');
- * // => 4
- *
- * _.result(object, 'a[0].b.c3', 'default');
- * // => 'default'
- *
- * _.result(object, 'a[0].b.c3', _.constant('default'));
- * // => 'default'
- */
- function result(object, path, defaultValue) {
- path = castPath(path, object);
-
- var index = -1,
- length = path.length;
-
- // Ensure the loop is entered when path is empty.
- if (!length) {
- length = 1;
- object = undefined;
- }
- while (++index < length) {
- var value = object == null ? undefined : object[toKey(path[index])];
- if (value === undefined) {
- index = length;
- value = defaultValue;
- }
- object = isFunction(value) ? value.call(object) : value;
- }
- return object;
- }
-
- /**
- * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
- * it's created. Arrays are created for missing index properties while objects
- * are created for all other missing properties. Use `_.setWith` to customize
- * `path` creation.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.set(object, 'a[0].b.c', 4);
- * console.log(object.a[0].b.c);
- * // => 4
- *
- * _.set(object, ['x', '0', 'y', 'z'], 5);
- * console.log(object.x[0].y.z);
- * // => 5
- */
- function set(object, path, value) {
- return object == null ? object : baseSet(object, path, value);
- }
-
- /**
- * This method is like `_.set` except that it accepts `customizer` which is
- * invoked to produce the objects of `path`. If `customizer` returns `undefined`
- * path creation is handled by the method instead. The `customizer` is invoked
- * with three arguments: (nsValue, key, nsObject).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {*} value The value to set.
- * @param {Function} [customizer] The function to customize assigned values.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = {};
- *
- * _.setWith(object, '[0][1]', 'a', Object);
- * // => { '0': { '1': 'a' } }
- */
- function setWith(object, path, value, customizer) {
- customizer = typeof customizer == 'function' ? customizer : undefined;
- return object == null ? object : baseSet(object, path, value, customizer);
- }
-
- /**
- * Creates an array of own enumerable string keyed-value pairs for `object`
- * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
- * entries are returned.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @alias entries
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the key-value pairs.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.toPairs(new Foo);
- * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
- */
- var toPairs = createToPairs(keys);
-
- /**
- * Creates an array of own and inherited enumerable string keyed-value pairs
- * for `object` which can be consumed by `_.fromPairs`. If `object` is a map
- * or set, its entries are returned.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @alias entriesIn
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the key-value pairs.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.toPairsIn(new Foo);
- * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
- */
- var toPairsIn = createToPairs(keysIn);
-
- /**
- * An alternative to `_.reduce`; this method transforms `object` to a new
- * `accumulator` object which is the result of running each of its own
- * enumerable string keyed properties thru `iteratee`, with each invocation
- * potentially mutating the `accumulator` object. If `accumulator` is not
- * provided, a new object with the same `[[Prototype]]` will be used. The
- * iteratee is invoked with four arguments: (accumulator, value, key, object).
- * Iteratee functions may exit iteration early by explicitly returning `false`.
- *
- * @static
- * @memberOf _
- * @since 1.3.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {*} [accumulator] The custom accumulator value.
- * @returns {*} Returns the accumulated value.
- * @example
- *
- * _.transform([2, 3, 4], function(result, n) {
- * result.push(n *= n);
- * return n % 2 == 0;
- * }, []);
- * // => [4, 9]
- *
- * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
- * (result[value] || (result[value] = [])).push(key);
- * }, {});
- * // => { '1': ['a', 'c'], '2': ['b'] }
- */
- function transform(object, iteratee, accumulator) {
- var isArr = isArray(object),
- isArrLike = isArr || isBuffer(object) || isTypedArray(object);
-
- iteratee = getIteratee(iteratee, 4);
- if (accumulator == null) {
- var Ctor = object && object.constructor;
- if (isArrLike) {
- accumulator = isArr ? new Ctor : [];
- }
- else if (isObject(object)) {
- accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
- }
- else {
- accumulator = {};
- }
- }
- (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
- return iteratee(accumulator, value, index, object);
- });
- return accumulator;
- }
-
- /**
- * Removes the property at `path` of `object`.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to unset.
- * @returns {boolean} Returns `true` if the property is deleted, else `false`.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 7 } }] };
- * _.unset(object, 'a[0].b.c');
- * // => true
- *
- * console.log(object);
- * // => { 'a': [{ 'b': {} }] };
- *
- * _.unset(object, ['a', '0', 'b', 'c']);
- * // => true
- *
- * console.log(object);
- * // => { 'a': [{ 'b': {} }] };
- */
- function unset(object, path) {
- return object == null ? true : baseUnset(object, path);
- }
-
- /**
- * This method is like `_.set` except that accepts `updater` to produce the
- * value to set. Use `_.updateWith` to customize `path` creation. The `updater`
- * is invoked with one argument: (value).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.6.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {Function} updater The function to produce the updated value.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.update(object, 'a[0].b.c', function(n) { return n * n; });
- * console.log(object.a[0].b.c);
- * // => 9
- *
- * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
- * console.log(object.x[0].y.z);
- * // => 0
- */
- function update(object, path, updater) {
- return object == null ? object : baseUpdate(object, path, castFunction(updater));
- }
-
- /**
- * This method is like `_.update` except that it accepts `customizer` which is
- * invoked to produce the objects of `path`. If `customizer` returns `undefined`
- * path creation is handled by the method instead. The `customizer` is invoked
- * with three arguments: (nsValue, key, nsObject).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.6.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {Function} updater The function to produce the updated value.
- * @param {Function} [customizer] The function to customize assigned values.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = {};
- *
- * _.updateWith(object, '[0][1]', _.constant('a'), Object);
- * // => { '0': { '1': 'a' } }
- */
- function updateWith(object, path, updater, customizer) {
- customizer = typeof customizer == 'function' ? customizer : undefined;
- return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
- }
-
- /**
- * Creates an array of the own enumerable string keyed property values of `object`.
- *
- * **Note:** Non-object values are coerced to objects.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property values.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.values(new Foo);
- * // => [1, 2] (iteration order is not guaranteed)
- *
- * _.values('hi');
- * // => ['h', 'i']
- */
- function values(object) {
- return object == null ? [] : baseValues(object, keys(object));
- }
-
- /**
- * Creates an array of the own and inherited enumerable string keyed property
- * values of `object`.
- *
- * **Note:** Non-object values are coerced to objects.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property values.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.valuesIn(new Foo);
- * // => [1, 2, 3] (iteration order is not guaranteed)
- */
- function valuesIn(object) {
- return object == null ? [] : baseValues(object, keysIn(object));
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Clamps `number` within the inclusive `lower` and `upper` bounds.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Number
- * @param {number} number The number to clamp.
- * @param {number} [lower] The lower bound.
- * @param {number} upper The upper bound.
- * @returns {number} Returns the clamped number.
- * @example
- *
- * _.clamp(-10, -5, 5);
- * // => -5
- *
- * _.clamp(10, -5, 5);
- * // => 5
- */
- function clamp(number, lower, upper) {
- if (upper === undefined) {
- upper = lower;
- lower = undefined;
- }
- if (upper !== undefined) {
- upper = toNumber(upper);
- upper = upper === upper ? upper : 0;
- }
- if (lower !== undefined) {
- lower = toNumber(lower);
- lower = lower === lower ? lower : 0;
- }
- return baseClamp(toNumber(number), lower, upper);
- }
-
- /**
- * Checks if `n` is between `start` and up to, but not including, `end`. If
- * `end` is not specified, it's set to `start` with `start` then set to `0`.
- * If `start` is greater than `end` the params are swapped to support
- * negative ranges.
- *
- * @static
- * @memberOf _
- * @since 3.3.0
- * @category Number
- * @param {number} number The number to check.
- * @param {number} [start=0] The start of the range.
- * @param {number} end The end of the range.
- * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
- * @see _.range, _.rangeRight
- * @example
- *
- * _.inRange(3, 2, 4);
- * // => true
- *
- * _.inRange(4, 8);
- * // => true
- *
- * _.inRange(4, 2);
- * // => false
- *
- * _.inRange(2, 2);
- * // => false
- *
- * _.inRange(1.2, 2);
- * // => true
- *
- * _.inRange(5.2, 4);
- * // => false
- *
- * _.inRange(-3, -2, -6);
- * // => true
- */
- function inRange(number, start, end) {
- start = toFinite(start);
- if (end === undefined) {
- end = start;
- start = 0;
- } else {
- end = toFinite(end);
- }
- number = toNumber(number);
- return baseInRange(number, start, end);
- }
-
- /**
- * Produces a random number between the inclusive `lower` and `upper` bounds.
- * If only one argument is provided a number between `0` and the given number
- * is returned. If `floating` is `true`, or either `lower` or `upper` are
- * floats, a floating-point number is returned instead of an integer.
- *
- * **Note:** JavaScript follows the IEEE-754 standard for resolving
- * floating-point values which can produce unexpected results.
- *
- * @static
- * @memberOf _
- * @since 0.7.0
- * @category Number
- * @param {number} [lower=0] The lower bound.
- * @param {number} [upper=1] The upper bound.
- * @param {boolean} [floating] Specify returning a floating-point number.
- * @returns {number} Returns the random number.
- * @example
- *
- * _.random(0, 5);
- * // => an integer between 0 and 5
- *
- * _.random(5);
- * // => also an integer between 0 and 5
- *
- * _.random(5, true);
- * // => a floating-point number between 0 and 5
- *
- * _.random(1.2, 5.2);
- * // => a floating-point number between 1.2 and 5.2
- */
- function random(lower, upper, floating) {
- if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {
- upper = floating = undefined;
- }
- if (floating === undefined) {
- if (typeof upper == 'boolean') {
- floating = upper;
- upper = undefined;
- }
- else if (typeof lower == 'boolean') {
- floating = lower;
- lower = undefined;
- }
- }
- if (lower === undefined && upper === undefined) {
- lower = 0;
- upper = 1;
- }
- else {
- lower = toFinite(lower);
- if (upper === undefined) {
- upper = lower;
- lower = 0;
- } else {
- upper = toFinite(upper);
- }
- }
- if (lower > upper) {
- var temp = lower;
- lower = upper;
- upper = temp;
- }
- if (floating || lower % 1 || upper % 1) {
- var rand = nativeRandom();
- return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);
- }
- return baseRandom(lower, upper);
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the camel cased string.
- * @example
- *
- * _.camelCase('Foo Bar');
- * // => 'fooBar'
- *
- * _.camelCase('--foo-bar--');
- * // => 'fooBar'
- *
- * _.camelCase('__FOO_BAR__');
- * // => 'fooBar'
- */
- var camelCase = createCompounder(function(result, word, index) {
- word = word.toLowerCase();
- return result + (index ? capitalize(word) : word);
- });
-
- /**
- * Converts the first character of `string` to upper case and the remaining
- * to lower case.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to capitalize.
- * @returns {string} Returns the capitalized string.
- * @example
- *
- * _.capitalize('FRED');
- * // => 'Fred'
- */
- function capitalize(string) {
- return upperFirst(toString(string).toLowerCase());
- }
-
- /**
- * Deburrs `string` by converting
- * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
- * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
- * letters to basic Latin letters and removing
- * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to deburr.
- * @returns {string} Returns the deburred string.
- * @example
- *
- * _.deburr('déjà vu');
- * // => 'deja vu'
- */
- function deburr(string) {
- string = toString(string);
- return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
- }
-
- /**
- * Checks if `string` ends with the given target string.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to inspect.
- * @param {string} [target] The string to search for.
- * @param {number} [position=string.length] The position to search up to.
- * @returns {boolean} Returns `true` if `string` ends with `target`,
- * else `false`.
- * @example
- *
- * _.endsWith('abc', 'c');
- * // => true
- *
- * _.endsWith('abc', 'b');
- * // => false
- *
- * _.endsWith('abc', 'b', 2);
- * // => true
- */
- function endsWith(string, target, position) {
- string = toString(string);
- target = baseToString(target);
-
- var length = string.length;
- position = position === undefined
- ? length
- : baseClamp(toInteger(position), 0, length);
-
- var end = position;
- position -= target.length;
- return position >= 0 && string.slice(position, end) == target;
- }
-
- /**
- * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
- * corresponding HTML entities.
- *
- * **Note:** No other characters are escaped. To escape additional
- * characters use a third-party library like [_he_](https://mths.be/he).
- *
- * Though the ">" character is escaped for symmetry, characters like
- * ">" and "/" don't need escaping in HTML and have no special meaning
- * unless they're part of a tag or unquoted attribute value. See
- * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
- * (under "semi-related fun fact") for more details.
- *
- * When working with HTML you should always
- * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
- * XSS vectors.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category String
- * @param {string} [string=''] The string to escape.
- * @returns {string} Returns the escaped string.
- * @example
- *
- * _.escape('fred, barney, & pebbles');
- * // => 'fred, barney, &amp; pebbles'
- */
- function escape(string) {
- string = toString(string);
- return (string && reHasUnescapedHtml.test(string))
- ? string.replace(reUnescapedHtml, escapeHtmlChar)
- : string;
- }
-
- /**
- * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
- * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to escape.
- * @returns {string} Returns the escaped string.
- * @example
- *
- * _.escapeRegExp('[lodash](https://lodash.com/)');
- * // => '\[lodash\]\(https://lodash\.com/\)'
- */
- function escapeRegExp(string) {
- string = toString(string);
- return (string && reHasRegExpChar.test(string))
- ? string.replace(reRegExpChar, '\\$&')
- : string;
- }
-
- /**
- * Converts `string` to
- * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the kebab cased string.
- * @example
- *
- * _.kebabCase('Foo Bar');
- * // => 'foo-bar'
- *
- * _.kebabCase('fooBar');
- * // => 'foo-bar'
- *
- * _.kebabCase('__FOO_BAR__');
- * // => 'foo-bar'
- */
- var kebabCase = createCompounder(function(result, word, index) {
- return result + (index ? '-' : '') + word.toLowerCase();
- });
-
- /**
- * Converts `string`, as space separated words, to lower case.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the lower cased string.
- * @example
- *
- * _.lowerCase('--Foo-Bar--');
- * // => 'foo bar'
- *
- * _.lowerCase('fooBar');
- * // => 'foo bar'
- *
- * _.lowerCase('__FOO_BAR__');
- * // => 'foo bar'
- */
- var lowerCase = createCompounder(function(result, word, index) {
- return result + (index ? ' ' : '') + word.toLowerCase();
- });
-
- /**
- * Converts the first character of `string` to lower case.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.lowerFirst('Fred');
- * // => 'fred'
- *
- * _.lowerFirst('FRED');
- * // => 'fRED'
- */
- var lowerFirst = createCaseFirst('toLowerCase');
-
- /**
- * Pads `string` on the left and right sides if it's shorter than `length`.
- * Padding characters are truncated if they can't be evenly divided by `length`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to pad.
- * @param {number} [length=0] The padding length.
- * @param {string} [chars=' '] The string used as padding.
- * @returns {string} Returns the padded string.
- * @example
- *
- * _.pad('abc', 8);
- * // => ' abc '
- *
- * _.pad('abc', 8, '_-');
- * // => '_-abc_-_'
- *
- * _.pad('abc', 3);
- * // => 'abc'
- */
- function pad(string, length, chars) {
- string = toString(string);
- length = toInteger(length);
-
- var strLength = length ? stringSize(string) : 0;
- if (!length || strLength >= length) {
- return string;
- }
- var mid = (length - strLength) / 2;
- return (
- createPadding(nativeFloor(mid), chars) +
- string +
- createPadding(nativeCeil(mid), chars)
- );
- }
-
- /**
- * Pads `string` on the right side if it's shorter than `length`. Padding
- * characters are truncated if they exceed `length`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to pad.
- * @param {number} [length=0] The padding length.
- * @param {string} [chars=' '] The string used as padding.
- * @returns {string} Returns the padded string.
- * @example
- *
- * _.padEnd('abc', 6);
- * // => 'abc '
- *
- * _.padEnd('abc', 6, '_-');
- * // => 'abc_-_'
- *
- * _.padEnd('abc', 3);
- * // => 'abc'
- */
- function padEnd(string, length, chars) {
- string = toString(string);
- length = toInteger(length);
-
- var strLength = length ? stringSize(string) : 0;
- return (length && strLength < length)
- ? (string + createPadding(length - strLength, chars))
- : string;
- }
-
- /**
- * Pads `string` on the left side if it's shorter than `length`. Padding
- * characters are truncated if they exceed `length`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to pad.
- * @param {number} [length=0] The padding length.
- * @param {string} [chars=' '] The string used as padding.
- * @returns {string} Returns the padded string.
- * @example
- *
- * _.padStart('abc', 6);
- * // => ' abc'
- *
- * _.padStart('abc', 6, '_-');
- * // => '_-_abc'
- *
- * _.padStart('abc', 3);
- * // => 'abc'
- */
- function padStart(string, length, chars) {
- string = toString(string);
- length = toInteger(length);
-
- var strLength = length ? stringSize(string) : 0;
- return (length && strLength < length)
- ? (createPadding(length - strLength, chars) + string)
- : string;
- }
-
- /**
- * Converts `string` to an integer of the specified radix. If `radix` is
- * `undefined` or `0`, a `radix` of `10` is used unless `value` is a
- * hexadecimal, in which case a `radix` of `16` is used.
- *
- * **Note:** This method aligns with the
- * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.
- *
- * @static
- * @memberOf _
- * @since 1.1.0
- * @category String
- * @param {string} string The string to convert.
- * @param {number} [radix=10] The radix to interpret `value` by.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.parseInt('08');
- * // => 8
- *
- * _.map(['6', '08', '10'], _.parseInt);
- * // => [6, 8, 10]
- */
- function parseInt(string, radix, guard) {
- if (guard || radix == null) {
- radix = 0;
- } else if (radix) {
- radix = +radix;
- }
- return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);
- }
-
- /**
- * Repeats the given string `n` times.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to repeat.
- * @param {number} [n=1] The number of times to repeat the string.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {string} Returns the repeated string.
- * @example
- *
- * _.repeat('*', 3);
- * // => '***'
- *
- * _.repeat('abc', 2);
- * // => 'abcabc'
- *
- * _.repeat('abc', 0);
- * // => ''
- */
- function repeat(string, n, guard) {
- if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {
- n = 1;
- } else {
- n = toInteger(n);
- }
- return baseRepeat(toString(string), n);
- }
-
- /**
- * Replaces matches for `pattern` in `string` with `replacement`.
- *
- * **Note:** This method is based on
- * [`String#replace`](https://mdn.io/String/replace).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to modify.
- * @param {RegExp|string} pattern The pattern to replace.
- * @param {Function|string} replacement The match replacement.
- * @returns {string} Returns the modified string.
- * @example
- *
- * _.replace('Hi Fred', 'Fred', 'Barney');
- * // => 'Hi Barney'
- */
- function replace() {
- var args = arguments,
- string = toString(args[0]);
-
- return args.length < 3 ? string : string.replace(args[1], args[2]);
- }
-
- /**
- * Converts `string` to
- * [snake case](https://en.wikipedia.org/wiki/Snake_case).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the snake cased string.
- * @example
- *
- * _.snakeCase('Foo Bar');
- * // => 'foo_bar'
- *
- * _.snakeCase('fooBar');
- * // => 'foo_bar'
- *
- * _.snakeCase('--FOO-BAR--');
- * // => 'foo_bar'
- */
- var snakeCase = createCompounder(function(result, word, index) {
- return result + (index ? '_' : '') + word.toLowerCase();
- });
-
- /**
- * Splits `string` by `separator`.
- *
- * **Note:** This method is based on
- * [`String#split`](https://mdn.io/String/split).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to split.
- * @param {RegExp|string} separator The separator pattern to split by.
- * @param {number} [limit] The length to truncate results to.
- * @returns {Array} Returns the string segments.
- * @example
- *
- * _.split('a-b-c', '-', 2);
- * // => ['a', 'b']
- */
- function split(string, separator, limit) {
- if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {
- separator = limit = undefined;
- }
- limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
- if (!limit) {
- return [];
- }
- string = toString(string);
- if (string && (
- typeof separator == 'string' ||
- (separator != null && !isRegExp(separator))
- )) {
- separator = baseToString(separator);
- if (!separator && hasUnicode(string)) {
- return castSlice(stringToArray(string), 0, limit);
- }
- }
- return string.split(separator, limit);
- }
-
- /**
- * Converts `string` to
- * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).
- *
- * @static
- * @memberOf _
- * @since 3.1.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the start cased string.
- * @example
- *
- * _.startCase('--foo-bar--');
- * // => 'Foo Bar'
- *
- * _.startCase('fooBar');
- * // => 'Foo Bar'
- *
- * _.startCase('__FOO_BAR__');
- * // => 'FOO BAR'
- */
- var startCase = createCompounder(function(result, word, index) {
- return result + (index ? ' ' : '') + upperFirst(word);
- });
-
- /**
- * Checks if `string` starts with the given target string.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to inspect.
- * @param {string} [target] The string to search for.
- * @param {number} [position=0] The position to search from.
- * @returns {boolean} Returns `true` if `string` starts with `target`,
- * else `false`.
- * @example
- *
- * _.startsWith('abc', 'a');
- * // => true
- *
- * _.startsWith('abc', 'b');
- * // => false
- *
- * _.startsWith('abc', 'b', 1);
- * // => true
- */
- function startsWith(string, target, position) {
- string = toString(string);
- position = position == null
- ? 0
- : baseClamp(toInteger(position), 0, string.length);
-
- target = baseToString(target);
- return string.slice(position, position + target.length) == target;
- }
-
- /**
- * Creates a compiled template function that can interpolate data properties
- * in "interpolate" delimiters, HTML-escape interpolated data properties in
- * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
- * properties may be accessed as free variables in the template. If a setting
- * object is given, it takes precedence over `_.templateSettings` values.
- *
- * **Note:** In the development build `_.template` utilizes
- * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
- * for easier debugging.
- *
- * For more information on precompiling templates see
- * [lodash's custom builds documentation](https://lodash.com/custom-builds).
- *
- * For more information on Chrome extension sandboxes see
- * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category String
- * @param {string} [string=''] The template string.
- * @param {Object} [options={}] The options object.
- * @param {RegExp} [options.escape=_.templateSettings.escape]
- * The HTML "escape" delimiter.
- * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]
- * The "evaluate" delimiter.
- * @param {Object} [options.imports=_.templateSettings.imports]
- * An object to import into the template as free variables.
- * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]
- * The "interpolate" delimiter.
- * @param {string} [options.sourceURL='lodash.templateSources[n]']
- * The sourceURL of the compiled template.
- * @param {string} [options.variable='obj']
- * The data object variable name.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Function} Returns the compiled template function.
- * @example
- *
- * // Use the "interpolate" delimiter to create a compiled template.
- * var compiled = _.template('hello <%= user %>!');
- * compiled({ 'user': 'fred' });
- * // => 'hello fred!'
- *
- * // Use the HTML "escape" delimiter to escape data property values.
- * var compiled = _.template('<b><%- value %></b>');
- * compiled({ 'value': '<script>' });
- * // => '<b>&lt;script&gt;</b>'
- *
- * // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
- * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
- * compiled({ 'users': ['fred', 'barney'] });
- * // => '<li>fred</li><li>barney</li>'
- *
- * // Use the internal `print` function in "evaluate" delimiters.
- * var compiled = _.template('<% print("hello " + user); %>!');
- * compiled({ 'user': 'barney' });
- * // => 'hello barney!'
- *
- * // Use the ES template literal delimiter as an "interpolate" delimiter.
- * // Disable support by replacing the "interpolate" delimiter.
- * var compiled = _.template('hello ${ user }!');
- * compiled({ 'user': 'pebbles' });
- * // => 'hello pebbles!'
- *
- * // Use backslashes to treat delimiters as plain text.
- * var compiled = _.template('<%= "\\<%- value %\\>" %>');
- * compiled({ 'value': 'ignored' });
- * // => '<%- value %>'
- *
- * // Use the `imports` option to import `jQuery` as `jq`.
- * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
- * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
- * compiled({ 'users': ['fred', 'barney'] });
- * // => '<li>fred</li><li>barney</li>'
- *
- * // Use the `sourceURL` option to specify a custom sourceURL for the template.
- * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
- * compiled(data);
- * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
- *
- * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
- * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
- * compiled.source;
- * // => function(data) {
- * // var __t, __p = '';
- * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
- * // return __p;
- * // }
- *
- * // Use custom template delimiters.
- * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
- * var compiled = _.template('hello {{ user }}!');
- * compiled({ 'user': 'mustache' });
- * // => 'hello mustache!'
- *
- * // Use the `source` property to inline compiled templates for meaningful
- * // line numbers in error messages and stack traces.
- * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\
- * var JST = {\
- * "main": ' + _.template(mainText).source + '\
- * };\
- * ');
- */
- function template(string, options, guard) {
- // Based on John Resig's `tmpl` implementation
- // (http://ejohn.org/blog/javascript-micro-templating/)
- // and Laura Doktorova's doT.js (https://github.com/olado/doT).
- var settings = lodash.templateSettings;
-
- if (guard && isIterateeCall(string, options, guard)) {
- options = undefined;
- }
- string = toString(string);
- options = assignInWith({}, options, settings, customDefaultsAssignIn);
-
- var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),
- importsKeys = keys(imports),
- importsValues = baseValues(imports, importsKeys);
-
- var isEscaping,
- isEvaluating,
- index = 0,
- interpolate = options.interpolate || reNoMatch,
- source = "__p += '";
-
- // Compile the regexp to match each delimiter.
- var reDelimiters = RegExp(
- (options.escape || reNoMatch).source + '|' +
- interpolate.source + '|' +
- (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
- (options.evaluate || reNoMatch).source + '|$'
- , 'g');
-
- // Use a sourceURL for easier debugging.
- // The sourceURL gets injected into the source that's eval-ed, so be careful
- // with lookup (in case of e.g. prototype pollution), and strip newlines if any.
- // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection.
- var sourceURL = '//# sourceURL=' +
- (hasOwnProperty.call(options, 'sourceURL')
- ? (options.sourceURL + '').replace(/[\r\n]/g, ' ')
- : ('lodash.templateSources[' + (++templateCounter) + ']')
- ) + '\n';
-
- string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
- interpolateValue || (interpolateValue = esTemplateValue);
-
- // Escape characters that can't be included in string literals.
- source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
-
- // Replace delimiters with snippets.
- if (escapeValue) {
- isEscaping = true;
- source += "' +\n__e(" + escapeValue + ") +\n'";
- }
- if (evaluateValue) {
- isEvaluating = true;
- source += "';\n" + evaluateValue + ";\n__p += '";
- }
- if (interpolateValue) {
- source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
- }
- index = offset + match.length;
-
- // The JS engine embedded in Adobe products needs `match` returned in
- // order to produce the correct `offset` value.
- return match;
- });
-
- source += "';\n";
-
- // If `variable` is not specified wrap a with-statement around the generated
- // code to add the data object to the top of the scope chain.
- // Like with sourceURL, we take care to not check the option's prototype,
- // as this configuration is a code injection vector.
- var variable = hasOwnProperty.call(options, 'variable') && options.variable;
- if (!variable) {
- source = 'with (obj) {\n' + source + '\n}\n';
- }
- // Cleanup code by stripping empty strings.
- source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
- .replace(reEmptyStringMiddle, '$1')
- .replace(reEmptyStringTrailing, '$1;');
-
- // Frame code as the function body.
- source = 'function(' + (variable || 'obj') + ') {\n' +
- (variable
- ? ''
- : 'obj || (obj = {});\n'
- ) +
- "var __t, __p = ''" +
- (isEscaping
- ? ', __e = _.escape'
- : ''
- ) +
- (isEvaluating
- ? ', __j = Array.prototype.join;\n' +
- "function print() { __p += __j.call(arguments, '') }\n"
- : ';\n'
- ) +
- source +
- 'return __p\n}';
-
- var result = attempt(function() {
- return Function(importsKeys, sourceURL + 'return ' + source)
- .apply(undefined, importsValues);
- });
-
- // Provide the compiled function's source by its `toString` method or
- // the `source` property as a convenience for inlining compiled templates.
- result.source = source;
- if (isError(result)) {
- throw result;
- }
- return result;
- }
-
- /**
- * Converts `string`, as a whole, to lower case just like
- * [String#toLowerCase](https://mdn.io/toLowerCase).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the lower cased string.
- * @example
- *
- * _.toLower('--Foo-Bar--');
- * // => '--foo-bar--'
- *
- * _.toLower('fooBar');
- * // => 'foobar'
- *
- * _.toLower('__FOO_BAR__');
- * // => '__foo_bar__'
- */
- function toLower(value) {
- return toString(value).toLowerCase();
- }
-
- /**
- * Converts `string`, as a whole, to upper case just like
- * [String#toUpperCase](https://mdn.io/toUpperCase).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the upper cased string.
- * @example
- *
- * _.toUpper('--foo-bar--');
- * // => '--FOO-BAR--'
- *
- * _.toUpper('fooBar');
- * // => 'FOOBAR'
- *
- * _.toUpper('__foo_bar__');
- * // => '__FOO_BAR__'
- */
- function toUpper(value) {
- return toString(value).toUpperCase();
- }
-
- /**
- * Removes leading and trailing whitespace or specified characters from `string`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to trim.
- * @param {string} [chars=whitespace] The characters to trim.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {string} Returns the trimmed string.
- * @example
- *
- * _.trim(' abc ');
- * // => 'abc'
- *
- * _.trim('-_-abc-_-', '_-');
- * // => 'abc'
- *
- * _.map([' foo ', ' bar '], _.trim);
- * // => ['foo', 'bar']
- */
- function trim(string, chars, guard) {
- string = toString(string);
- if (string && (guard || chars === undefined)) {
- return string.replace(reTrim, '');
- }
- if (!string || !(chars = baseToString(chars))) {
- return string;
- }
- var strSymbols = stringToArray(string),
- chrSymbols = stringToArray(chars),
- start = charsStartIndex(strSymbols, chrSymbols),
- end = charsEndIndex(strSymbols, chrSymbols) + 1;
-
- return castSlice(strSymbols, start, end).join('');
- }
-
- /**
- * Removes trailing whitespace or specified characters from `string`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to trim.
- * @param {string} [chars=whitespace] The characters to trim.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {string} Returns the trimmed string.
- * @example
- *
- * _.trimEnd(' abc ');
- * // => ' abc'
- *
- * _.trimEnd('-_-abc-_-', '_-');
- * // => '-_-abc'
- */
- function trimEnd(string, chars, guard) {
- string = toString(string);
- if (string && (guard || chars === undefined)) {
- return string.replace(reTrimEnd, '');
- }
- if (!string || !(chars = baseToString(chars))) {
- return string;
- }
- var strSymbols = stringToArray(string),
- end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
-
- return castSlice(strSymbols, 0, end).join('');
- }
-
- /**
- * Removes leading whitespace or specified characters from `string`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to trim.
- * @param {string} [chars=whitespace] The characters to trim.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {string} Returns the trimmed string.
- * @example
- *
- * _.trimStart(' abc ');
- * // => 'abc '
- *
- * _.trimStart('-_-abc-_-', '_-');
- * // => 'abc-_-'
- */
- function trimStart(string, chars, guard) {
- string = toString(string);
- if (string && (guard || chars === undefined)) {
- return string.replace(reTrimStart, '');
- }
- if (!string || !(chars = baseToString(chars))) {
- return string;
- }
- var strSymbols = stringToArray(string),
- start = charsStartIndex(strSymbols, stringToArray(chars));
-
- return castSlice(strSymbols, start).join('');
- }
-
- /**
- * Truncates `string` if it's longer than the given maximum string length.
- * The last characters of the truncated string are replaced with the omission
- * string which defaults to "...".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to truncate.
- * @param {Object} [options={}] The options object.
- * @param {number} [options.length=30] The maximum string length.
- * @param {string} [options.omission='...'] The string to indicate text is omitted.
- * @param {RegExp|string} [options.separator] The separator pattern to truncate to.
- * @returns {string} Returns the truncated string.
- * @example
- *
- * _.truncate('hi-diddly-ho there, neighborino');
- * // => 'hi-diddly-ho there, neighbo...'
- *
- * _.truncate('hi-diddly-ho there, neighborino', {
- * 'length': 24,
- * 'separator': ' '
- * });
- * // => 'hi-diddly-ho there,...'
- *
- * _.truncate('hi-diddly-ho there, neighborino', {
- * 'length': 24,
- * 'separator': /,? +/
- * });
- * // => 'hi-diddly-ho there...'
- *
- * _.truncate('hi-diddly-ho there, neighborino', {
- * 'omission': ' [...]'
- * });
- * // => 'hi-diddly-ho there, neig [...]'
- */
- function truncate(string, options) {
- var length = DEFAULT_TRUNC_LENGTH,
- omission = DEFAULT_TRUNC_OMISSION;
-
- if (isObject(options)) {
- var separator = 'separator' in options ? options.separator : separator;
- length = 'length' in options ? toInteger(options.length) : length;
- omission = 'omission' in options ? baseToString(options.omission) : omission;
- }
- string = toString(string);
-
- var strLength = string.length;
- if (hasUnicode(string)) {
- var strSymbols = stringToArray(string);
- strLength = strSymbols.length;
- }
- if (length >= strLength) {
- return string;
- }
- var end = length - stringSize(omission);
- if (end < 1) {
- return omission;
- }
- var result = strSymbols
- ? castSlice(strSymbols, 0, end).join('')
- : string.slice(0, end);
-
- if (separator === undefined) {
- return result + omission;
- }
- if (strSymbols) {
- end += (result.length - end);
- }
- if (isRegExp(separator)) {
- if (string.slice(end).search(separator)) {
- var match,
- substring = result;
-
- if (!separator.global) {
- separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');
- }
- separator.lastIndex = 0;
- while ((match = separator.exec(substring))) {
- var newEnd = match.index;
- }
- result = result.slice(0, newEnd === undefined ? end : newEnd);
- }
- } else if (string.indexOf(baseToString(separator), end) != end) {
- var index = result.lastIndexOf(separator);
- if (index > -1) {
- result = result.slice(0, index);
- }
- }
- return result + omission;
- }
-
- /**
- * The inverse of `_.escape`; this method converts the HTML entities
- * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to
- * their corresponding characters.
- *
- * **Note:** No other HTML entities are unescaped. To unescape additional
- * HTML entities use a third-party library like [_he_](https://mths.be/he).
- *
- * @static
- * @memberOf _
- * @since 0.6.0
- * @category String
- * @param {string} [string=''] The string to unescape.
- * @returns {string} Returns the unescaped string.
- * @example
- *
- * _.unescape('fred, barney, &amp; pebbles');
- * // => 'fred, barney, & pebbles'
- */
- function unescape(string) {
- string = toString(string);
- return (string && reHasEscapedHtml.test(string))
- ? string.replace(reEscapedHtml, unescapeHtmlChar)
- : string;
- }
-
- /**
- * Converts `string`, as space separated words, to upper case.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the upper cased string.
- * @example
- *
- * _.upperCase('--foo-bar');
- * // => 'FOO BAR'
- *
- * _.upperCase('fooBar');
- * // => 'FOO BAR'
- *
- * _.upperCase('__foo_bar__');
- * // => 'FOO BAR'
- */
- var upperCase = createCompounder(function(result, word, index) {
- return result + (index ? ' ' : '') + word.toUpperCase();
- });
-
- /**
- * Converts the first character of `string` to upper case.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.upperFirst('fred');
- * // => 'Fred'
- *
- * _.upperFirst('FRED');
- * // => 'FRED'
- */
- var upperFirst = createCaseFirst('toUpperCase');
-
- /**
- * Splits `string` into an array of its words.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to inspect.
- * @param {RegExp|string} [pattern] The pattern to match words.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the words of `string`.
- * @example
- *
- * _.words('fred, barney, & pebbles');
- * // => ['fred', 'barney', 'pebbles']
- *
- * _.words('fred, barney, & pebbles', /[^, ]+/g);
- * // => ['fred', 'barney', '&', 'pebbles']
- */
- function words(string, pattern, guard) {
- string = toString(string);
- pattern = guard ? undefined : pattern;
-
- if (pattern === undefined) {
- return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
- }
- return string.match(pattern) || [];
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Attempts to invoke `func`, returning either the result or the caught error
- * object. Any additional arguments are provided to `func` when it's invoked.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Util
- * @param {Function} func The function to attempt.
- * @param {...*} [args] The arguments to invoke `func` with.
- * @returns {*} Returns the `func` result or error object.
- * @example
- *
- * // Avoid throwing errors for invalid selectors.
- * var elements = _.attempt(function(selector) {
- * return document.querySelectorAll(selector);
- * }, '>_>');
- *
- * if (_.isError(elements)) {
- * elements = [];
- * }
- */
- var attempt = baseRest(function(func, args) {
- try {
- return apply(func, undefined, args);
- } catch (e) {
- return isError(e) ? e : new Error(e);
- }
- });
-
- /**
- * Binds methods of an object to the object itself, overwriting the existing
- * method.
- *
- * **Note:** This method doesn't set the "length" property of bound functions.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {Object} object The object to bind and assign the bound methods to.
- * @param {...(string|string[])} methodNames The object method names to bind.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var view = {
- * 'label': 'docs',
- * 'click': function() {
- * console.log('clicked ' + this.label);
- * }
- * };
- *
- * _.bindAll(view, ['click']);
- * jQuery(element).on('click', view.click);
- * // => Logs 'clicked docs' when clicked.
- */
- var bindAll = flatRest(function(object, methodNames) {
- arrayEach(methodNames, function(key) {
- key = toKey(key);
- baseAssignValue(object, key, bind(object[key], object));
- });
- return object;
- });
-
- /**
- * Creates a function that iterates over `pairs` and invokes the corresponding
- * function of the first predicate to return truthy. The predicate-function
- * pairs are invoked with the `this` binding and arguments of the created
- * function.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {Array} pairs The predicate-function pairs.
- * @returns {Function} Returns the new composite function.
- * @example
- *
- * var func = _.cond([
- * [_.matches({ 'a': 1 }), _.constant('matches A')],
- * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
- * [_.stubTrue, _.constant('no match')]
- * ]);
- *
- * func({ 'a': 1, 'b': 2 });
- * // => 'matches A'
- *
- * func({ 'a': 0, 'b': 1 });
- * // => 'matches B'
- *
- * func({ 'a': '1', 'b': '2' });
- * // => 'no match'
- */
- function cond(pairs) {
- var length = pairs == null ? 0 : pairs.length,
- toIteratee = getIteratee();
-
- pairs = !length ? [] : arrayMap(pairs, function(pair) {
- if (typeof pair[1] != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- return [toIteratee(pair[0]), pair[1]];
- });
-
- return baseRest(function(args) {
- var index = -1;
- while (++index < length) {
- var pair = pairs[index];
- if (apply(pair[0], this, args)) {
- return apply(pair[1], this, args);
- }
- }
- });
- }
-
- /**
- * Creates a function that invokes the predicate properties of `source` with
- * the corresponding property values of a given object, returning `true` if
- * all predicates return truthy, else `false`.
- *
- * **Note:** The created function is equivalent to `_.conformsTo` with
- * `source` partially applied.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {Object} source The object of property predicates to conform to.
- * @returns {Function} Returns the new spec function.
- * @example
- *
- * var objects = [
- * { 'a': 2, 'b': 1 },
- * { 'a': 1, 'b': 2 }
- * ];
- *
- * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
- * // => [{ 'a': 1, 'b': 2 }]
- */
- function conforms(source) {
- return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
- }
-
- /**
- * Creates a function that returns `value`.
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Util
- * @param {*} value The value to return from the new function.
- * @returns {Function} Returns the new constant function.
- * @example
- *
- * var objects = _.times(2, _.constant({ 'a': 1 }));
- *
- * console.log(objects);
- * // => [{ 'a': 1 }, { 'a': 1 }]
- *
- * console.log(objects[0] === objects[1]);
- * // => true
- */
- function constant(value) {
- return function() {
- return value;
- };
- }
-
- /**
- * Checks `value` to determine whether a default value should be returned in
- * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
- * or `undefined`.
- *
- * @static
- * @memberOf _
- * @since 4.14.0
- * @category Util
- * @param {*} value The value to check.
- * @param {*} defaultValue The default value.
- * @returns {*} Returns the resolved value.
- * @example
- *
- * _.defaultTo(1, 10);
- * // => 1
- *
- * _.defaultTo(undefined, 10);
- * // => 10
- */
- function defaultTo(value, defaultValue) {
- return (value == null || value !== value) ? defaultValue : value;
- }
-
- /**
- * Creates a function that returns the result of invoking the given functions
- * with the `this` binding of the created function, where each successive
- * invocation is supplied the return value of the previous.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Util
- * @param {...(Function|Function[])} [funcs] The functions to invoke.
- * @returns {Function} Returns the new composite function.
- * @see _.flowRight
- * @example
- *
- * function square(n) {
- * return n * n;
- * }
- *
- * var addSquare = _.flow([_.add, square]);
- * addSquare(1, 2);
- * // => 9
- */
- var flow = createFlow();
-
- /**
- * This method is like `_.flow` except that it creates a function that
- * invokes the given functions from right to left.
- *
- * @static
- * @since 3.0.0
- * @memberOf _
- * @category Util
- * @param {...(Function|Function[])} [funcs] The functions to invoke.
- * @returns {Function} Returns the new composite function.
- * @see _.flow
- * @example
- *
- * function square(n) {
- * return n * n;
- * }
- *
- * var addSquare = _.flowRight([square, _.add]);
- * addSquare(1, 2);
- * // => 9
- */
- var flowRight = createFlow(true);
-
- /**
- * This method returns the first argument it receives.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {*} value Any value.
- * @returns {*} Returns `value`.
- * @example
- *
- * var object = { 'a': 1 };
- *
- * console.log(_.identity(object) === object);
- * // => true
- */
- function identity(value) {
- return value;
- }
-
- /**
- * Creates a function that invokes `func` with the arguments of the created
- * function. If `func` is a property name, the created function returns the
- * property value for a given element. If `func` is an array or object, the
- * created function returns `true` for elements that contain the equivalent
- * source properties, otherwise it returns `false`.
- *
- * @static
- * @since 4.0.0
- * @memberOf _
- * @category Util
- * @param {*} [func=_.identity] The value to convert to a callback.
- * @returns {Function} Returns the callback.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': true },
- * { 'user': 'fred', 'age': 40, 'active': false }
- * ];
- *
- * // The `_.matches` iteratee shorthand.
- * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
- * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.filter(users, _.iteratee(['user', 'fred']));
- * // => [{ 'user': 'fred', 'age': 40 }]
- *
- * // The `_.property` iteratee shorthand.
- * _.map(users, _.iteratee('user'));
- * // => ['barney', 'fred']
- *
- * // Create custom iteratee shorthands.
- * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
- * return !_.isRegExp(func) ? iteratee(func) : function(string) {
- * return func.test(string);
- * };
- * });
- *
- * _.filter(['abc', 'def'], /ef/);
- * // => ['def']
- */
- function iteratee(func) {
- return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));
- }
-
- /**
- * Creates a function that performs a partial deep comparison between a given
- * object and `source`, returning `true` if the given object has equivalent
- * property values, else `false`.
- *
- * **Note:** The created function is equivalent to `_.isMatch` with `source`
- * partially applied.
- *
- * Partial comparisons will match empty array and empty object `source`
- * values against any array or object value, respectively. See `_.isEqual`
- * for a list of supported value comparisons.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Util
- * @param {Object} source The object of property values to match.
- * @returns {Function} Returns the new spec function.
- * @example
- *
- * var objects = [
- * { 'a': 1, 'b': 2, 'c': 3 },
- * { 'a': 4, 'b': 5, 'c': 6 }
- * ];
- *
- * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
- * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
- */
- function matches(source) {
- return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
- }
-
- /**
- * Creates a function that performs a partial deep comparison between the
- * value at `path` of a given object to `srcValue`, returning `true` if the
- * object value is equivalent, else `false`.
- *
- * **Note:** Partial comparisons will match empty array and empty object
- * `srcValue` values against any array or object value, respectively. See
- * `_.isEqual` for a list of supported value comparisons.
- *
- * @static
- * @memberOf _
- * @since 3.2.0
- * @category Util
- * @param {Array|string} path The path of the property to get.
- * @param {*} srcValue The value to match.
- * @returns {Function} Returns the new spec function.
- * @example
- *
- * var objects = [
- * { 'a': 1, 'b': 2, 'c': 3 },
- * { 'a': 4, 'b': 5, 'c': 6 }
- * ];
- *
- * _.find(objects, _.matchesProperty('a', 4));
- * // => { 'a': 4, 'b': 5, 'c': 6 }
- */
- function matchesProperty(path, srcValue) {
- return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
- }
-
- /**
- * Creates a function that invokes the method at `path` of a given object.
- * Any additional arguments are provided to the invoked method.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Util
- * @param {Array|string} path The path of the method to invoke.
- * @param {...*} [args] The arguments to invoke the method with.
- * @returns {Function} Returns the new invoker function.
- * @example
- *
- * var objects = [
- * { 'a': { 'b': _.constant(2) } },
- * { 'a': { 'b': _.constant(1) } }
- * ];
- *
- * _.map(objects, _.method('a.b'));
- * // => [2, 1]
- *
- * _.map(objects, _.method(['a', 'b']));
- * // => [2, 1]
- */
- var method = baseRest(function(path, args) {
- return function(object) {
- return baseInvoke(object, path, args);
- };
- });
-
- /**
- * The opposite of `_.method`; this method creates a function that invokes
- * the method at a given path of `object`. Any additional arguments are
- * provided to the invoked method.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Util
- * @param {Object} object The object to query.
- * @param {...*} [args] The arguments to invoke the method with.
- * @returns {Function} Returns the new invoker function.
- * @example
- *
- * var array = _.times(3, _.constant),
- * object = { 'a': array, 'b': array, 'c': array };
- *
- * _.map(['a[2]', 'c[0]'], _.methodOf(object));
- * // => [2, 0]
- *
- * _.map([['a', '2'], ['c', '0']], _.methodOf(object));
- * // => [2, 0]
- */
- var methodOf = baseRest(function(object, args) {
- return function(path) {
- return baseInvoke(object, path, args);
- };
- });
-
- /**
- * Adds all own enumerable string keyed function properties of a source
- * object to the destination object. If `object` is a function, then methods
- * are added to its prototype as well.
- *
- * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
- * avoid conflicts caused by modifying the original.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {Function|Object} [object=lodash] The destination object.
- * @param {Object} source The object of functions to add.
- * @param {Object} [options={}] The options object.
- * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
- * @returns {Function|Object} Returns `object`.
- * @example
- *
- * function vowels(string) {
- * return _.filter(string, function(v) {
- * return /[aeiou]/i.test(v);
- * });
- * }
- *
- * _.mixin({ 'vowels': vowels });
- * _.vowels('fred');
- * // => ['e']
- *
- * _('fred').vowels().value();
- * // => ['e']
- *
- * _.mixin({ 'vowels': vowels }, { 'chain': false });
- * _('fred').vowels();
- * // => ['e']
- */
- function mixin(object, source, options) {
- var props = keys(source),
- methodNames = baseFunctions(source, props);
-
- if (options == null &&
- !(isObject(source) && (methodNames.length || !props.length))) {
- options = source;
- source = object;
- object = this;
- methodNames = baseFunctions(source, keys(source));
- }
- var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
- isFunc = isFunction(object);
-
- arrayEach(methodNames, function(methodName) {
- var func = source[methodName];
- object[methodName] = func;
- if (isFunc) {
- object.prototype[methodName] = function() {
- var chainAll = this.__chain__;
- if (chain || chainAll) {
- var result = object(this.__wrapped__),
- actions = result.__actions__ = copyArray(this.__actions__);
-
- actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
- result.__chain__ = chainAll;
- return result;
- }
- return func.apply(object, arrayPush([this.value()], arguments));
- };
- }
- });
-
- return object;
- }
-
- /**
- * Reverts the `_` variable to its previous value and returns a reference to
- * the `lodash` function.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @returns {Function} Returns the `lodash` function.
- * @example
- *
- * var lodash = _.noConflict();
- */
- function noConflict() {
- if (root._ === this) {
- root._ = oldDash;
- }
- return this;
- }
-
- /**
- * This method returns `undefined`.
- *
- * @static
- * @memberOf _
- * @since 2.3.0
- * @category Util
- * @example
- *
- * _.times(2, _.noop);
- * // => [undefined, undefined]
- */
- function noop() {
- // No operation performed.
- }
-
- /**
- * Creates a function that gets the argument at index `n`. If `n` is negative,
- * the nth argument from the end is returned.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {number} [n=0] The index of the argument to return.
- * @returns {Function} Returns the new pass-thru function.
- * @example
- *
- * var func = _.nthArg(1);
- * func('a', 'b', 'c', 'd');
- * // => 'b'
- *
- * var func = _.nthArg(-2);
- * func('a', 'b', 'c', 'd');
- * // => 'c'
- */
- function nthArg(n) {
- n = toInteger(n);
- return baseRest(function(args) {
- return baseNth(args, n);
- });
- }
-
- /**
- * Creates a function that invokes `iteratees` with the arguments it receives
- * and returns their results.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {...(Function|Function[])} [iteratees=[_.identity]]
- * The iteratees to invoke.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var func = _.over([Math.max, Math.min]);
- *
- * func(1, 2, 3, 4);
- * // => [4, 1]
- */
- var over = createOver(arrayMap);
-
- /**
- * Creates a function that checks if **all** of the `predicates` return
- * truthy when invoked with the arguments it receives.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {...(Function|Function[])} [predicates=[_.identity]]
- * The predicates to check.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var func = _.overEvery([Boolean, isFinite]);
- *
- * func('1');
- * // => true
- *
- * func(null);
- * // => false
- *
- * func(NaN);
- * // => false
- */
- var overEvery = createOver(arrayEvery);
-
- /**
- * Creates a function that checks if **any** of the `predicates` return
- * truthy when invoked with the arguments it receives.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {...(Function|Function[])} [predicates=[_.identity]]
- * The predicates to check.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var func = _.overSome([Boolean, isFinite]);
- *
- * func('1');
- * // => true
- *
- * func(null);
- * // => true
- *
- * func(NaN);
- * // => false
- */
- var overSome = createOver(arraySome);
-
- /**
- * Creates a function that returns the value at `path` of a given object.
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Util
- * @param {Array|string} path The path of the property to get.
- * @returns {Function} Returns the new accessor function.
- * @example
- *
- * var objects = [
- * { 'a': { 'b': 2 } },
- * { 'a': { 'b': 1 } }
- * ];
- *
- * _.map(objects, _.property('a.b'));
- * // => [2, 1]
- *
- * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
- * // => [1, 2]
- */
- function property(path) {
- return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
- }
-
- /**
- * The opposite of `_.property`; this method creates a function that returns
- * the value at a given path of `object`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Util
- * @param {Object} object The object to query.
- * @returns {Function} Returns the new accessor function.
- * @example
- *
- * var array = [0, 1, 2],
- * object = { 'a': array, 'b': array, 'c': array };
- *
- * _.map(['a[2]', 'c[0]'], _.propertyOf(object));
- * // => [2, 0]
- *
- * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
- * // => [2, 0]
- */
- function propertyOf(object) {
- return function(path) {
- return object == null ? undefined : baseGet(object, path);
- };
- }
-
- /**
- * Creates an array of numbers (positive and/or negative) progressing from
- * `start` up to, but not including, `end`. A step of `-1` is used if a negative
- * `start` is specified without an `end` or `step`. If `end` is not specified,
- * it's set to `start` with `start` then set to `0`.
- *
- * **Note:** JavaScript follows the IEEE-754 standard for resolving
- * floating-point values which can produce unexpected results.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {number} [start=0] The start of the range.
- * @param {number} end The end of the range.
- * @param {number} [step=1] The value to increment or decrement by.
- * @returns {Array} Returns the range of numbers.
- * @see _.inRange, _.rangeRight
- * @example
- *
- * _.range(4);
- * // => [0, 1, 2, 3]
- *
- * _.range(-4);
- * // => [0, -1, -2, -3]
- *
- * _.range(1, 5);
- * // => [1, 2, 3, 4]
- *
- * _.range(0, 20, 5);
- * // => [0, 5, 10, 15]
- *
- * _.range(0, -4, -1);
- * // => [0, -1, -2, -3]
- *
- * _.range(1, 4, 0);
- * // => [1, 1, 1]
- *
- * _.range(0);
- * // => []
- */
- var range = createRange();
-
- /**
- * This method is like `_.range` except that it populates values in
- * descending order.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {number} [start=0] The start of the range.
- * @param {number} end The end of the range.
- * @param {number} [step=1] The value to increment or decrement by.
- * @returns {Array} Returns the range of numbers.
- * @see _.inRange, _.range
- * @example
- *
- * _.rangeRight(4);
- * // => [3, 2, 1, 0]
- *
- * _.rangeRight(-4);
- * // => [-3, -2, -1, 0]
- *
- * _.rangeRight(1, 5);
- * // => [4, 3, 2, 1]
- *
- * _.rangeRight(0, 20, 5);
- * // => [15, 10, 5, 0]
- *
- * _.rangeRight(0, -4, -1);
- * // => [-3, -2, -1, 0]
- *
- * _.rangeRight(1, 4, 0);
- * // => [1, 1, 1]
- *
- * _.rangeRight(0);
- * // => []
- */
- var rangeRight = createRange(true);
-
- /**
- * This method returns a new empty array.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {Array} Returns the new empty array.
- * @example
- *
- * var arrays = _.times(2, _.stubArray);
- *
- * console.log(arrays);
- * // => [[], []]
- *
- * console.log(arrays[0] === arrays[1]);
- * // => false
- */
- function stubArray() {
- return [];
- }
-
- /**
- * This method returns `false`.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {boolean} Returns `false`.
- * @example
- *
- * _.times(2, _.stubFalse);
- * // => [false, false]
- */
- function stubFalse() {
- return false;
- }
-
- /**
- * This method returns a new empty object.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {Object} Returns the new empty object.
- * @example
- *
- * var objects = _.times(2, _.stubObject);
- *
- * console.log(objects);
- * // => [{}, {}]
- *
- * console.log(objects[0] === objects[1]);
- * // => false
- */
- function stubObject() {
- return {};
- }
-
- /**
- * This method returns an empty string.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {string} Returns the empty string.
- * @example
- *
- * _.times(2, _.stubString);
- * // => ['', '']
- */
- function stubString() {
- return '';
- }
-
- /**
- * This method returns `true`.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {boolean} Returns `true`.
- * @example
- *
- * _.times(2, _.stubTrue);
- * // => [true, true]
- */
- function stubTrue() {
- return true;
- }
-
- /**
- * Invokes the iteratee `n` times, returning an array of the results of
- * each invocation. The iteratee is invoked with one argument; (index).
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {number} n The number of times to invoke `iteratee`.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the array of results.
- * @example
- *
- * _.times(3, String);
- * // => ['0', '1', '2']
- *
- * _.times(4, _.constant(0));
- * // => [0, 0, 0, 0]
- */
- function times(n, iteratee) {
- n = toInteger(n);
- if (n < 1 || n > MAX_SAFE_INTEGER) {
- return [];
- }
- var index = MAX_ARRAY_LENGTH,
- length = nativeMin(n, MAX_ARRAY_LENGTH);
-
- iteratee = getIteratee(iteratee);
- n -= MAX_ARRAY_LENGTH;
-
- var result = baseTimes(length, iteratee);
- while (++index < n) {
- iteratee(index);
- }
- return result;
- }
-
- /**
- * Converts `value` to a property path array.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {*} value The value to convert.
- * @returns {Array} Returns the new property path array.
- * @example
- *
- * _.toPath('a.b.c');
- * // => ['a', 'b', 'c']
- *
- * _.toPath('a[0].b.c');
- * // => ['a', '0', 'b', 'c']
- */
- function toPath(value) {
- if (isArray(value)) {
- return arrayMap(value, toKey);
- }
- return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
- }
-
- /**
- * Generates a unique ID. If `prefix` is given, the ID is appended to it.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {string} [prefix=''] The value to prefix the ID with.
- * @returns {string} Returns the unique ID.
- * @example
- *
- * _.uniqueId('contact_');
- * // => 'contact_104'
- *
- * _.uniqueId();
- * // => '105'
- */
- function uniqueId(prefix) {
- var id = ++idCounter;
- return toString(prefix) + id;
- }
-
- /*------------------------------------------------------------------------*/
-
- /**
- * Adds two numbers.
- *
- * @static
- * @memberOf _
- * @since 3.4.0
- * @category Math
- * @param {number} augend The first number in an addition.
- * @param {number} addend The second number in an addition.
- * @returns {number} Returns the total.
- * @example
- *
- * _.add(6, 4);
- * // => 10
- */
- var add = createMathOperation(function(augend, addend) {
- return augend + addend;
- }, 0);
-
- /**
- * Computes `number` rounded up to `precision`.
- *
- * @static
- * @memberOf _
- * @since 3.10.0
- * @category Math
- * @param {number} number The number to round up.
- * @param {number} [precision=0] The precision to round up to.
- * @returns {number} Returns the rounded up number.
- * @example
- *
- * _.ceil(4.006);
- * // => 5
- *
- * _.ceil(6.004, 2);
- * // => 6.01
- *
- * _.ceil(6040, -2);
- * // => 6100
- */
- var ceil = createRound('ceil');
-
- /**
- * Divide two numbers.
- *
- * @static
- * @memberOf _
- * @since 4.7.0
- * @category Math
- * @param {number} dividend The first number in a division.
- * @param {number} divisor The second number in a division.
- * @returns {number} Returns the quotient.
- * @example
- *
- * _.divide(6, 4);
- * // => 1.5
- */
- var divide = createMathOperation(function(dividend, divisor) {
- return dividend / divisor;
- }, 1);
-
- /**
- * Computes `number` rounded down to `precision`.
- *
- * @static
- * @memberOf _
- * @since 3.10.0
- * @category Math
- * @param {number} number The number to round down.
- * @param {number} [precision=0] The precision to round down to.
- * @returns {number} Returns the rounded down number.
- * @example
- *
- * _.floor(4.006);
- * // => 4
- *
- * _.floor(0.046, 2);
- * // => 0.04
- *
- * _.floor(4060, -2);
- * // => 4000
- */
- var floor = createRound('floor');
-
- /**
- * Computes the maximum value of `array`. If `array` is empty or falsey,
- * `undefined` is returned.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {*} Returns the maximum value.
- * @example
- *
- * _.max([4, 2, 8, 6]);
- * // => 8
- *
- * _.max([]);
- * // => undefined
- */
- function max(array) {
- return (array && array.length)
- ? baseExtremum(array, identity, baseGt)
- : undefined;
- }
-
- /**
- * This method is like `_.max` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the criterion by which
- * the value is ranked. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {*} Returns the maximum value.
- * @example
- *
- * var objects = [{ 'n': 1 }, { 'n': 2 }];
- *
- * _.maxBy(objects, function(o) { return o.n; });
- * // => { 'n': 2 }
- *
- * // The `_.property` iteratee shorthand.
- * _.maxBy(objects, 'n');
- * // => { 'n': 2 }
- */
- function maxBy(array, iteratee) {
- return (array && array.length)
- ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)
- : undefined;
- }
-
- /**
- * Computes the mean of the values in `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {number} Returns the mean.
- * @example
- *
- * _.mean([4, 2, 8, 6]);
- * // => 5
- */
- function mean(array) {
- return baseMean(array, identity);
- }
-
- /**
- * This method is like `_.mean` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the value to be averaged.
- * The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.7.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {number} Returns the mean.
- * @example
- *
- * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
- *
- * _.meanBy(objects, function(o) { return o.n; });
- * // => 5
- *
- * // The `_.property` iteratee shorthand.
- * _.meanBy(objects, 'n');
- * // => 5
- */
- function meanBy(array, iteratee) {
- return baseMean(array, getIteratee(iteratee, 2));
- }
-
- /**
- * Computes the minimum value of `array`. If `array` is empty or falsey,
- * `undefined` is returned.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {*} Returns the minimum value.
- * @example
- *
- * _.min([4, 2, 8, 6]);
- * // => 2
- *
- * _.min([]);
- * // => undefined
- */
- function min(array) {
- return (array && array.length)
- ? baseExtremum(array, identity, baseLt)
- : undefined;
- }
-
- /**
- * This method is like `_.min` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the criterion by which
- * the value is ranked. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {*} Returns the minimum value.
- * @example
- *
- * var objects = [{ 'n': 1 }, { 'n': 2 }];
- *
- * _.minBy(objects, function(o) { return o.n; });
- * // => { 'n': 1 }
- *
- * // The `_.property` iteratee shorthand.
- * _.minBy(objects, 'n');
- * // => { 'n': 1 }
- */
- function minBy(array, iteratee) {
- return (array && array.length)
- ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)
- : undefined;
- }
-
- /**
- * Multiply two numbers.
- *
- * @static
- * @memberOf _
- * @since 4.7.0
- * @category Math
- * @param {number} multiplier The first number in a multiplication.
- * @param {number} multiplicand The second number in a multiplication.
- * @returns {number} Returns the product.
- * @example
- *
- * _.multiply(6, 4);
- * // => 24
- */
- var multiply = createMathOperation(function(multiplier, multiplicand) {
- return multiplier * multiplicand;
- }, 1);
-
- /**
- * Computes `number` rounded to `precision`.
- *
- * @static
- * @memberOf _
- * @since 3.10.0
- * @category Math
- * @param {number} number The number to round.
- * @param {number} [precision=0] The precision to round to.
- * @returns {number} Returns the rounded number.
- * @example
- *
- * _.round(4.006);
- * // => 4
- *
- * _.round(4.006, 2);
- * // => 4.01
- *
- * _.round(4060, -2);
- * // => 4100
- */
- var round = createRound('round');
-
- /**
- * Subtract two numbers.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {number} minuend The first number in a subtraction.
- * @param {number} subtrahend The second number in a subtraction.
- * @returns {number} Returns the difference.
- * @example
- *
- * _.subtract(6, 4);
- * // => 2
- */
- var subtract = createMathOperation(function(minuend, subtrahend) {
- return minuend - subtrahend;
- }, 0);
-
- /**
- * Computes the sum of the values in `array`.
- *
- * @static
- * @memberOf _
- * @since 3.4.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {number} Returns the sum.
- * @example
- *
- * _.sum([4, 2, 8, 6]);
- * // => 20
- */
- function sum(array) {
- return (array && array.length)
- ? baseSum(array, identity)
- : 0;
- }
-
- /**
- * This method is like `_.sum` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the value to be summed.
- * The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {number} Returns the sum.
- * @example
- *
- * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
- *
- * _.sumBy(objects, function(o) { return o.n; });
- * // => 20
- *
- * // The `_.property` iteratee shorthand.
- * _.sumBy(objects, 'n');
- * // => 20
- */
- function sumBy(array, iteratee) {
- return (array && array.length)
- ? baseSum(array, getIteratee(iteratee, 2))
- : 0;
- }
-
- /*------------------------------------------------------------------------*/
-
- // Add methods that return wrapped values in chain sequences.
- lodash.after = after;
- lodash.ary = ary;
- lodash.assign = assign;
- lodash.assignIn = assignIn;
- lodash.assignInWith = assignInWith;
- lodash.assignWith = assignWith;
- lodash.at = at;
- lodash.before = before;
- lodash.bind = bind;
- lodash.bindAll = bindAll;
- lodash.bindKey = bindKey;
- lodash.castArray = castArray;
- lodash.chain = chain;
- lodash.chunk = chunk;
- lodash.compact = compact;
- lodash.concat = concat;
- lodash.cond = cond;
- lodash.conforms = conforms;
- lodash.constant = constant;
- lodash.countBy = countBy;
- lodash.create = create;
- lodash.curry = curry;
- lodash.curryRight = curryRight;
- lodash.debounce = debounce;
- lodash.defaults = defaults;
- lodash.defaultsDeep = defaultsDeep;
- lodash.defer = defer;
- lodash.delay = delay;
- lodash.difference = difference;
- lodash.differenceBy = differenceBy;
- lodash.differenceWith = differenceWith;
- lodash.drop = drop;
- lodash.dropRight = dropRight;
- lodash.dropRightWhile = dropRightWhile;
- lodash.dropWhile = dropWhile;
- lodash.fill = fill;
- lodash.filter = filter;
- lodash.flatMap = flatMap;
- lodash.flatMapDeep = flatMapDeep;
- lodash.flatMapDepth = flatMapDepth;
- lodash.flatten = flatten;
- lodash.flattenDeep = flattenDeep;
- lodash.flattenDepth = flattenDepth;
- lodash.flip = flip;
- lodash.flow = flow;
- lodash.flowRight = flowRight;
- lodash.fromPairs = fromPairs;
- lodash.functions = functions;
- lodash.functionsIn = functionsIn;
- lodash.groupBy = groupBy;
- lodash.initial = initial;
- lodash.intersection = intersection;
- lodash.intersectionBy = intersectionBy;
- lodash.intersectionWith = intersectionWith;
- lodash.invert = invert;
- lodash.invertBy = invertBy;
- lodash.invokeMap = invokeMap;
- lodash.iteratee = iteratee;
- lodash.keyBy = keyBy;
- lodash.keys = keys;
- lodash.keysIn = keysIn;
- lodash.map = map;
- lodash.mapKeys = mapKeys;
- lodash.mapValues = mapValues;
- lodash.matches = matches;
- lodash.matchesProperty = matchesProperty;
- lodash.memoize = memoize;
- lodash.merge = merge;
- lodash.mergeWith = mergeWith;
- lodash.method = method;
- lodash.methodOf = methodOf;
- lodash.mixin = mixin;
- lodash.negate = negate;
- lodash.nthArg = nthArg;
- lodash.omit = omit;
- lodash.omitBy = omitBy;
- lodash.once = once;
- lodash.orderBy = orderBy;
- lodash.over = over;
- lodash.overArgs = overArgs;
- lodash.overEvery = overEvery;
- lodash.overSome = overSome;
- lodash.partial = partial;
- lodash.partialRight = partialRight;
- lodash.partition = partition;
- lodash.pick = pick;
- lodash.pickBy = pickBy;
- lodash.property = property;
- lodash.propertyOf = propertyOf;
- lodash.pull = pull;
- lodash.pullAll = pullAll;
- lodash.pullAllBy = pullAllBy;
- lodash.pullAllWith = pullAllWith;
- lodash.pullAt = pullAt;
- lodash.range = range;
- lodash.rangeRight = rangeRight;
- lodash.rearg = rearg;
- lodash.reject = reject;
- lodash.remove = remove;
- lodash.rest = rest;
- lodash.reverse = reverse;
- lodash.sampleSize = sampleSize;
- lodash.set = set;
- lodash.setWith = setWith;
- lodash.shuffle = shuffle;
- lodash.slice = slice;
- lodash.sortBy = sortBy;
- lodash.sortedUniq = sortedUniq;
- lodash.sortedUniqBy = sortedUniqBy;
- lodash.split = split;
- lodash.spread = spread;
- lodash.tail = tail;
- lodash.take = take;
- lodash.takeRight = takeRight;
- lodash.takeRightWhile = takeRightWhile;
- lodash.takeWhile = takeWhile;
- lodash.tap = tap;
- lodash.throttle = throttle;
- lodash.thru = thru;
- lodash.toArray = toArray;
- lodash.toPairs = toPairs;
- lodash.toPairsIn = toPairsIn;
- lodash.toPath = toPath;
- lodash.toPlainObject = toPlainObject;
- lodash.transform = transform;
- lodash.unary = unary;
- lodash.union = union;
- lodash.unionBy = unionBy;
- lodash.unionWith = unionWith;
- lodash.uniq = uniq;
- lodash.uniqBy = uniqBy;
- lodash.uniqWith = uniqWith;
- lodash.unset = unset;
- lodash.unzip = unzip;
- lodash.unzipWith = unzipWith;
- lodash.update = update;
- lodash.updateWith = updateWith;
- lodash.values = values;
- lodash.valuesIn = valuesIn;
- lodash.without = without;
- lodash.words = words;
- lodash.wrap = wrap;
- lodash.xor = xor;
- lodash.xorBy = xorBy;
- lodash.xorWith = xorWith;
- lodash.zip = zip;
- lodash.zipObject = zipObject;
- lodash.zipObjectDeep = zipObjectDeep;
- lodash.zipWith = zipWith;
-
- // Add aliases.
- lodash.entries = toPairs;
- lodash.entriesIn = toPairsIn;
- lodash.extend = assignIn;
- lodash.extendWith = assignInWith;
-
- // Add methods to `lodash.prototype`.
- mixin(lodash, lodash);
-
- /*------------------------------------------------------------------------*/
-
- // Add methods that return unwrapped values in chain sequences.
- lodash.add = add;
- lodash.attempt = attempt;
- lodash.camelCase = camelCase;
- lodash.capitalize = capitalize;
- lodash.ceil = ceil;
- lodash.clamp = clamp;
- lodash.clone = clone;
- lodash.cloneDeep = cloneDeep;
- lodash.cloneDeepWith = cloneDeepWith;
- lodash.cloneWith = cloneWith;
- lodash.conformsTo = conformsTo;
- lodash.deburr = deburr;
- lodash.defaultTo = defaultTo;
- lodash.divide = divide;
- lodash.endsWith = endsWith;
- lodash.eq = eq;
- lodash.escape = escape;
- lodash.escapeRegExp = escapeRegExp;
- lodash.every = every;
- lodash.find = find;
- lodash.findIndex = findIndex;
- lodash.findKey = findKey;
- lodash.findLast = findLast;
- lodash.findLastIndex = findLastIndex;
- lodash.findLastKey = findLastKey;
- lodash.floor = floor;
- lodash.forEach = forEach;
- lodash.forEachRight = forEachRight;
- lodash.forIn = forIn;
- lodash.forInRight = forInRight;
- lodash.forOwn = forOwn;
- lodash.forOwnRight = forOwnRight;
- lodash.get = get;
- lodash.gt = gt;
- lodash.gte = gte;
- lodash.has = has;
- lodash.hasIn = hasIn;
- lodash.head = head;
- lodash.identity = identity;
- lodash.includes = includes;
- lodash.indexOf = indexOf;
- lodash.inRange = inRange;
- lodash.invoke = invoke;
- lodash.isArguments = isArguments;
- lodash.isArray = isArray;
- lodash.isArrayBuffer = isArrayBuffer;
- lodash.isArrayLike = isArrayLike;
- lodash.isArrayLikeObject = isArrayLikeObject;
- lodash.isBoolean = isBoolean;
- lodash.isBuffer = isBuffer;
- lodash.isDate = isDate;
- lodash.isElement = isElement;
- lodash.isEmpty = isEmpty;
- lodash.isEqual = isEqual;
- lodash.isEqualWith = isEqualWith;
- lodash.isError = isError;
- lodash.isFinite = isFinite;
- lodash.isFunction = isFunction;
- lodash.isInteger = isInteger;
- lodash.isLength = isLength;
- lodash.isMap = isMap;
- lodash.isMatch = isMatch;
- lodash.isMatchWith = isMatchWith;
- lodash.isNaN = isNaN;
- lodash.isNative = isNative;
- lodash.isNil = isNil;
- lodash.isNull = isNull;
- lodash.isNumber = isNumber;
- lodash.isObject = isObject;
- lodash.isObjectLike = isObjectLike;
- lodash.isPlainObject = isPlainObject;
- lodash.isRegExp = isRegExp;
- lodash.isSafeInteger = isSafeInteger;
- lodash.isSet = isSet;
- lodash.isString = isString;
- lodash.isSymbol = isSymbol;
- lodash.isTypedArray = isTypedArray;
- lodash.isUndefined = isUndefined;
- lodash.isWeakMap = isWeakMap;
- lodash.isWeakSet = isWeakSet;
- lodash.join = join;
- lodash.kebabCase = kebabCase;
- lodash.last = last;
- lodash.lastIndexOf = lastIndexOf;
- lodash.lowerCase = lowerCase;
- lodash.lowerFirst = lowerFirst;
- lodash.lt = lt;
- lodash.lte = lte;
- lodash.max = max;
- lodash.maxBy = maxBy;
- lodash.mean = mean;
- lodash.meanBy = meanBy;
- lodash.min = min;
- lodash.minBy = minBy;
- lodash.stubArray = stubArray;
- lodash.stubFalse = stubFalse;
- lodash.stubObject = stubObject;
- lodash.stubString = stubString;
- lodash.stubTrue = stubTrue;
- lodash.multiply = multiply;
- lodash.nth = nth;
- lodash.noConflict = noConflict;
- lodash.noop = noop;
- lodash.now = now;
- lodash.pad = pad;
- lodash.padEnd = padEnd;
- lodash.padStart = padStart;
- lodash.parseInt = parseInt;
- lodash.random = random;
- lodash.reduce = reduce;
- lodash.reduceRight = reduceRight;
- lodash.repeat = repeat;
- lodash.replace = replace;
- lodash.result = result;
- lodash.round = round;
- lodash.runInContext = runInContext;
- lodash.sample = sample;
- lodash.size = size;
- lodash.snakeCase = snakeCase;
- lodash.some = some;
- lodash.sortedIndex = sortedIndex;
- lodash.sortedIndexBy = sortedIndexBy;
- lodash.sortedIndexOf = sortedIndexOf;
- lodash.sortedLastIndex = sortedLastIndex;
- lodash.sortedLastIndexBy = sortedLastIndexBy;
- lodash.sortedLastIndexOf = sortedLastIndexOf;
- lodash.startCase = startCase;
- lodash.startsWith = startsWith;
- lodash.subtract = subtract;
- lodash.sum = sum;
- lodash.sumBy = sumBy;
- lodash.template = template;
- lodash.times = times;
- lodash.toFinite = toFinite;
- lodash.toInteger = toInteger;
- lodash.toLength = toLength;
- lodash.toLower = toLower;
- lodash.toNumber = toNumber;
- lodash.toSafeInteger = toSafeInteger;
- lodash.toString = toString;
- lodash.toUpper = toUpper;
- lodash.trim = trim;
- lodash.trimEnd = trimEnd;
- lodash.trimStart = trimStart;
- lodash.truncate = truncate;
- lodash.unescape = unescape;
- lodash.uniqueId = uniqueId;
- lodash.upperCase = upperCase;
- lodash.upperFirst = upperFirst;
-
- // Add aliases.
- lodash.each = forEach;
- lodash.eachRight = forEachRight;
- lodash.first = head;
-
- mixin(lodash, (function() {
- var source = {};
- baseForOwn(lodash, function(func, methodName) {
- if (!hasOwnProperty.call(lodash.prototype, methodName)) {
- source[methodName] = func;
- }
- });
- return source;
- }()), { 'chain': false });
-
- /*------------------------------------------------------------------------*/
-
- /**
- * The semantic version number.
- *
- * @static
- * @memberOf _
- * @type {string}
- */
- lodash.VERSION = VERSION;
-
- // Assign default placeholders.
- arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {
- lodash[methodName].placeholder = lodash;
- });
-
- // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
- arrayEach(['drop', 'take'], function(methodName, index) {
- LazyWrapper.prototype[methodName] = function(n) {
- n = n === undefined ? 1 : nativeMax(toInteger(n), 0);
-
- var result = (this.__filtered__ && !index)
- ? new LazyWrapper(this)
- : this.clone();
-
- if (result.__filtered__) {
- result.__takeCount__ = nativeMin(n, result.__takeCount__);
- } else {
- result.__views__.push({
- 'size': nativeMin(n, MAX_ARRAY_LENGTH),
- 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')
- });
- }
- return result;
- };
-
- LazyWrapper.prototype[methodName + 'Right'] = function(n) {
- return this.reverse()[methodName](n).reverse();
- };
- });
-
- // Add `LazyWrapper` methods that accept an `iteratee` value.
- arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {
- var type = index + 1,
- isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
-
- LazyWrapper.prototype[methodName] = function(iteratee) {
- var result = this.clone();
- result.__iteratees__.push({
- 'iteratee': getIteratee(iteratee, 3),
- 'type': type
- });
- result.__filtered__ = result.__filtered__ || isFilter;
- return result;
- };
- });
-
- // Add `LazyWrapper` methods for `_.head` and `_.last`.
- arrayEach(['head', 'last'], function(methodName, index) {
- var takeName = 'take' + (index ? 'Right' : '');
-
- LazyWrapper.prototype[methodName] = function() {
- return this[takeName](1).value()[0];
- };
- });
-
- // Add `LazyWrapper` methods for `_.initial` and `_.tail`.
- arrayEach(['initial', 'tail'], function(methodName, index) {
- var dropName = 'drop' + (index ? '' : 'Right');
-
- LazyWrapper.prototype[methodName] = function() {
- return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
- };
- });
-
- LazyWrapper.prototype.compact = function() {
- return this.filter(identity);
- };
-
- LazyWrapper.prototype.find = function(predicate) {
- return this.filter(predicate).head();
- };
-
- LazyWrapper.prototype.findLast = function(predicate) {
- return this.reverse().find(predicate);
- };
-
- LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
- if (typeof path == 'function') {
- return new LazyWrapper(this);
- }
- return this.map(function(value) {
- return baseInvoke(value, path, args);
- });
- });
-
- LazyWrapper.prototype.reject = function(predicate) {
- return this.filter(negate(getIteratee(predicate)));
- };
-
- LazyWrapper.prototype.slice = function(start, end) {
- start = toInteger(start);
-
- var result = this;
- if (result.__filtered__ && (start > 0 || end < 0)) {
- return new LazyWrapper(result);
- }
- if (start < 0) {
- result = result.takeRight(-start);
- } else if (start) {
- result = result.drop(start);
- }
- if (end !== undefined) {
- end = toInteger(end);
- result = end < 0 ? result.dropRight(-end) : result.take(end - start);
- }
- return result;
- };
-
- LazyWrapper.prototype.takeRightWhile = function(predicate) {
- return this.reverse().takeWhile(predicate).reverse();
- };
-
- LazyWrapper.prototype.toArray = function() {
- return this.take(MAX_ARRAY_LENGTH);
- };
-
- // Add `LazyWrapper` methods to `lodash.prototype`.
- baseForOwn(LazyWrapper.prototype, function(func, methodName) {
- var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),
- isTaker = /^(?:head|last)$/.test(methodName),
- lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],
- retUnwrapped = isTaker || /^find/.test(methodName);
-
- if (!lodashFunc) {
- return;
- }
- lodash.prototype[methodName] = function() {
- var value = this.__wrapped__,
- args = isTaker ? [1] : arguments,
- isLazy = value instanceof LazyWrapper,
- iteratee = args[0],
- useLazy = isLazy || isArray(value);
-
- var interceptor = function(value) {
- var result = lodashFunc.apply(lodash, arrayPush([value], args));
- return (isTaker && chainAll) ? result[0] : result;
- };
-
- if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
- // Avoid lazy use if the iteratee has a "length" value other than `1`.
- isLazy = useLazy = false;
- }
- var chainAll = this.__chain__,
- isHybrid = !!this.__actions__.length,
- isUnwrapped = retUnwrapped && !chainAll,
- onlyLazy = isLazy && !isHybrid;
-
- if (!retUnwrapped && useLazy) {
- value = onlyLazy ? value : new LazyWrapper(this);
- var result = func.apply(value, args);
- result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });
- return new LodashWrapper(result, chainAll);
- }
- if (isUnwrapped && onlyLazy) {
- return func.apply(this, args);
- }
- result = this.thru(interceptor);
- return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;
- };
- });
-
- // Add `Array` methods to `lodash.prototype`.
- arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
- var func = arrayProto[methodName],
- chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
- retUnwrapped = /^(?:pop|shift)$/.test(methodName);
-
- lodash.prototype[methodName] = function() {
- var args = arguments;
- if (retUnwrapped && !this.__chain__) {
- var value = this.value();
- return func.apply(isArray(value) ? value : [], args);
- }
- return this[chainName](function(value) {
- return func.apply(isArray(value) ? value : [], args);
- });
- };
- });
-
- // Map minified method names to their real names.
- baseForOwn(LazyWrapper.prototype, function(func, methodName) {
- var lodashFunc = lodash[methodName];
- if (lodashFunc) {
- var key = lodashFunc.name + '';
- if (!hasOwnProperty.call(realNames, key)) {
- realNames[key] = [];
- }
- realNames[key].push({ 'name': methodName, 'func': lodashFunc });
- }
- });
-
- realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{
- 'name': 'wrapper',
- 'func': undefined
- }];
-
- // Add methods to `LazyWrapper`.
- LazyWrapper.prototype.clone = lazyClone;
- LazyWrapper.prototype.reverse = lazyReverse;
- LazyWrapper.prototype.value = lazyValue;
-
- // Add chain sequence methods to the `lodash` wrapper.
- lodash.prototype.at = wrapperAt;
- lodash.prototype.chain = wrapperChain;
- lodash.prototype.commit = wrapperCommit;
- lodash.prototype.next = wrapperNext;
- lodash.prototype.plant = wrapperPlant;
- lodash.prototype.reverse = wrapperReverse;
- lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
-
- // Add lazy aliases.
- lodash.prototype.first = lodash.prototype.head;
-
- if (symIterator) {
- lodash.prototype[symIterator] = wrapperToIterator;
- }
- return lodash;
- });
-
- /*--------------------------------------------------------------------------*/
-
- // Export lodash.
- var _ = runInContext();
-
- // Some AMD build optimizers, like r.js, check for condition patterns like:
- if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
- // Expose Lodash on the global object to prevent errors when Lodash is
- // loaded by a script tag in the presence of an AMD loader.
- // See http://requirejs.org/docs/errors.html#mismatch for more details.
- // Use `_.noConflict` to remove Lodash from the global object.
- root._ = _;
-
- // Define as an anonymous module so, through path mapping, it can be
- // referenced as the "underscore" module.
- define(function() {
- return _;
- });
- }
- // Check for `exports` after `define` in case a build optimizer adds it.
- else if (freeModule) {
- // Export for Node.js.
- (freeModule.exports = _)._ = _;
- // Export for CommonJS support.
- freeExports._ = _;
- }
- else {
- // Export to the global object.
- root._ = _;
- }
-}.call(this));
diff --git a/assets/node_modules/lodash/lodash.min.js b/assets/node_modules/lodash/lodash.min.js
deleted file mode 100644
index 13ec307..0000000
--- a/assets/node_modules/lodash/lodash.min.js
+++ /dev/null
@@ -1,137 +0,0 @@
-/**
- * @license
- * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
- */
-;(function(){function n(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function t(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u<i;){var o=n[u];t(e,o,r(o),n)}return e}function r(n,t){for(var r=-1,e=null==n?0:n.length;++r<e&&false!==t(n[r],r,n););return n}function e(n,t){for(var r=null==n?0:n.length;r--&&false!==t(n[r],r,n););return n}function u(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(!t(n[r],r,n))return false;
-return true}function i(n,t){for(var r=-1,e=null==n?0:n.length,u=0,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[u++]=o)}return i}function o(n,t){return!(null==n||!n.length)&&-1<v(n,t,0)}function f(n,t,r){for(var e=-1,u=null==n?0:n.length;++e<u;)if(r(t,n[e]))return true;return false}function c(n,t){for(var r=-1,e=null==n?0:n.length,u=Array(e);++r<e;)u[r]=t(n[r],r,n);return u}function a(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function l(n,t,r,e){var u=-1,i=null==n?0:n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n);
-return r}function s(n,t,r,e){var u=null==n?0:n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function h(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(t(n[r],r,n))return true;return false}function p(n,t,r){var e;return r(n,function(n,r,u){if(t(n,r,u))return e=r,false}),e}function _(n,t,r,e){var u=n.length;for(r+=e?1:-1;e?r--:++r<u;)if(t(n[r],r,n))return r;return-1}function v(n,t,r){if(t===t)n:{--r;for(var e=n.length;++r<e;)if(n[r]===t){n=r;break n}n=-1}else n=_(n,d,r);return n}function g(n,t,r,e){
---r;for(var u=n.length;++r<u;)if(e(n[r],t))return r;return-1}function d(n){return n!==n}function y(n,t){var r=null==n?0:n.length;return r?m(n,t)/r:F}function b(n){return function(t){return null==t?T:t[n]}}function x(n){return function(t){return null==n?T:n[t]}}function j(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=false,n):t(r,n,u,i)}),r}function w(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function m(n,t){for(var r,e=-1,u=n.length;++e<u;){var i=t(n[e]);i!==T&&(r=r===T?i:r+i)}return r;
-}function A(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function E(n,t){return c(t,function(t){return[t,n[t]]})}function k(n){return function(t){return n(t)}}function S(n,t){return c(t,function(t){return n[t]})}function O(n,t){return n.has(t)}function I(n,t){for(var r=-1,e=n.length;++r<e&&-1<v(t,n[r],0););return r}function R(n,t){for(var r=n.length;r--&&-1<v(t,n[r],0););return r}function z(n){return"\\"+Un[n]}function W(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n];
-}),r}function B(n,t){return function(r){return n(t(r))}}function L(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r];o!==t&&"__lodash_placeholder__"!==o||(n[r]="__lodash_placeholder__",i[u++]=r)}return i}function U(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=n}),r}function C(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=[n,n]}),r}function D(n){if(Rn.test(n)){for(var t=On.lastIndex=0;On.test(n);)++t;n=t}else n=Qn(n);return n}function M(n){return Rn.test(n)?n.match(On)||[]:n.split("");
-}var T,$=1/0,F=NaN,N=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],P=/\b__p\+='';/g,Z=/\b(__p\+=)''\+/g,q=/(__e\(.*?\)|\b__t\))\+'';/g,V=/&(?:amp|lt|gt|quot|#39);/g,K=/[&<>"']/g,G=RegExp(V.source),H=RegExp(K.source),J=/<%-([\s\S]+?)%>/g,Y=/<%([\s\S]+?)%>/g,Q=/<%=([\s\S]+?)%>/g,X=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nn=/^\w*$/,tn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rn=/[\\^$.*+?()[\]{}|]/g,en=RegExp(rn.source),un=/^\s+|\s+$/g,on=/^\s+/,fn=/\s+$/,cn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,an=/\{\n\/\* \[wrapped with (.+)\] \*/,ln=/,? & /,sn=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,hn=/\\(\\)?/g,pn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,_n=/\w*$/,vn=/^[-+]0x[0-9a-f]+$/i,gn=/^0b[01]+$/i,dn=/^\[object .+?Constructor\]$/,yn=/^0o[0-7]+$/i,bn=/^(?:0|[1-9]\d*)$/,xn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,jn=/($^)/,wn=/['\n\r\u2028\u2029\\]/g,mn="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*",An="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+mn,En="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",kn=RegExp("['\u2019]","g"),Sn=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g"),On=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+En+mn,"g"),In=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])|\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])|\\d+",An].join("|"),"g"),Rn=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),zn=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Wn="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),Bn={};
-Bn["[object Float32Array]"]=Bn["[object Float64Array]"]=Bn["[object Int8Array]"]=Bn["[object Int16Array]"]=Bn["[object Int32Array]"]=Bn["[object Uint8Array]"]=Bn["[object Uint8ClampedArray]"]=Bn["[object Uint16Array]"]=Bn["[object Uint32Array]"]=true,Bn["[object Arguments]"]=Bn["[object Array]"]=Bn["[object ArrayBuffer]"]=Bn["[object Boolean]"]=Bn["[object DataView]"]=Bn["[object Date]"]=Bn["[object Error]"]=Bn["[object Function]"]=Bn["[object Map]"]=Bn["[object Number]"]=Bn["[object Object]"]=Bn["[object RegExp]"]=Bn["[object Set]"]=Bn["[object String]"]=Bn["[object WeakMap]"]=false;
-var Ln={};Ln["[object Arguments]"]=Ln["[object Array]"]=Ln["[object ArrayBuffer]"]=Ln["[object DataView]"]=Ln["[object Boolean]"]=Ln["[object Date]"]=Ln["[object Float32Array]"]=Ln["[object Float64Array]"]=Ln["[object Int8Array]"]=Ln["[object Int16Array]"]=Ln["[object Int32Array]"]=Ln["[object Map]"]=Ln["[object Number]"]=Ln["[object Object]"]=Ln["[object RegExp]"]=Ln["[object Set]"]=Ln["[object String]"]=Ln["[object Symbol]"]=Ln["[object Uint8Array]"]=Ln["[object Uint8ClampedArray]"]=Ln["[object Uint16Array]"]=Ln["[object Uint32Array]"]=true,
-Ln["[object Error]"]=Ln["[object Function]"]=Ln["[object WeakMap]"]=false;var Un={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Cn=parseFloat,Dn=parseInt,Mn=typeof global=="object"&&global&&global.Object===Object&&global,Tn=typeof self=="object"&&self&&self.Object===Object&&self,$n=Mn||Tn||Function("return this")(),Fn=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Nn=Fn&&typeof module=="object"&&module&&!module.nodeType&&module,Pn=Nn&&Nn.exports===Fn,Zn=Pn&&Mn.process,qn=function(){
-try{var n=Nn&&Nn.f&&Nn.f("util").types;return n?n:Zn&&Zn.binding&&Zn.binding("util")}catch(n){}}(),Vn=qn&&qn.isArrayBuffer,Kn=qn&&qn.isDate,Gn=qn&&qn.isMap,Hn=qn&&qn.isRegExp,Jn=qn&&qn.isSet,Yn=qn&&qn.isTypedArray,Qn=b("length"),Xn=x({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I",
-"\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C",
-"\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i",
-"\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r",
-"\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij",
-"\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"}),nt=x({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}),tt=x({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),rt=function x(mn){function An(n){if(yu(n)&&!ff(n)&&!(n instanceof Un)){if(n instanceof On)return n;if(oi.call(n,"__wrapped__"))return Fe(n)}return new On(n)}function En(){}function On(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=T}function Un(n){this.__wrapped__=n,
-this.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Mn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Tn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Fn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Nn(n){var t=-1,r=null==n?0:n.length;for(this.__data__=new Fn;++t<r;)this.add(n[t]);
-}function Zn(n){this.size=(this.__data__=new Tn(n)).size}function qn(n,t){var r,e=ff(n),u=!e&&of(n),i=!e&&!u&&af(n),o=!e&&!u&&!i&&_f(n),u=(e=e||u||i||o)?A(n.length,ni):[],f=u.length;for(r in n)!t&&!oi.call(n,r)||e&&("length"==r||i&&("offset"==r||"parent"==r)||o&&("buffer"==r||"byteLength"==r||"byteOffset"==r)||Se(r,f))||u.push(r);return u}function Qn(n){var t=n.length;return t?n[ir(0,t-1)]:T}function et(n,t){return De(Ur(n),pt(t,0,n.length))}function ut(n){return De(Ur(n))}function it(n,t,r){(r===T||lu(n[t],r))&&(r!==T||t in n)||st(n,t,r);
-}function ot(n,t,r){var e=n[t];oi.call(n,t)&&lu(e,r)&&(r!==T||t in n)||st(n,t,r)}function ft(n,t){for(var r=n.length;r--;)if(lu(n[r][0],t))return r;return-1}function ct(n,t,r,e){return uo(n,function(n,u,i){t(e,n,r(n),i)}),e}function at(n,t){return n&&Cr(t,Wu(t),n)}function lt(n,t){return n&&Cr(t,Bu(t),n)}function st(n,t,r){"__proto__"==t&&Ai?Ai(n,t,{configurable:true,enumerable:true,value:r,writable:true}):n[t]=r}function ht(n,t){for(var r=-1,e=t.length,u=Ku(e),i=null==n;++r<e;)u[r]=i?T:Ru(n,t[r]);return u;
-}function pt(n,t,r){return n===n&&(r!==T&&(n=n<=r?n:r),t!==T&&(n=n>=t?n:t)),n}function _t(n,t,e,u,i,o){var f,c=1&t,a=2&t,l=4&t;if(e&&(f=i?e(n,u,i,o):e(n)),f!==T)return f;if(!du(n))return n;if(u=ff(n)){if(f=me(n),!c)return Ur(n,f)}else{var s=vo(n),h="[object Function]"==s||"[object GeneratorFunction]"==s;if(af(n))return Ir(n,c);if("[object Object]"==s||"[object Arguments]"==s||h&&!i){if(f=a||h?{}:Ae(n),!c)return a?Mr(n,lt(f,n)):Dr(n,at(f,n))}else{if(!Ln[s])return i?n:{};f=Ee(n,s,c)}}if(o||(o=new Zn),
-i=o.get(n))return i;o.set(n,f),pf(n)?n.forEach(function(r){f.add(_t(r,t,e,r,n,o))}):sf(n)&&n.forEach(function(r,u){f.set(u,_t(r,t,e,u,n,o))});var a=l?a?ve:_e:a?Bu:Wu,p=u?T:a(n);return r(p||n,function(r,u){p&&(u=r,r=n[u]),ot(f,u,_t(r,t,e,u,n,o))}),f}function vt(n){var t=Wu(n);return function(r){return gt(r,n,t)}}function gt(n,t,r){var e=r.length;if(null==n)return!e;for(n=Qu(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===T&&!(u in n)||!i(o))return false}return true}function dt(n,t,r){if(typeof n!="function")throw new ti("Expected a function");
-return bo(function(){n.apply(T,r)},t)}function yt(n,t,r,e){var u=-1,i=o,a=true,l=n.length,s=[],h=t.length;if(!l)return s;r&&(t=c(t,k(r))),e?(i=f,a=false):200<=t.length&&(i=O,a=false,t=new Nn(t));n:for(;++u<l;){var p=n[u],_=null==r?p:r(p),p=e||0!==p?p:0;if(a&&_===_){for(var v=h;v--;)if(t[v]===_)continue n;s.push(p)}else i(t,_,e)||s.push(p)}return s}function bt(n,t){var r=true;return uo(n,function(n,e,u){return r=!!t(n,e,u)}),r}function xt(n,t,r){for(var e=-1,u=n.length;++e<u;){var i=n[e],o=t(i);if(null!=o&&(f===T?o===o&&!wu(o):r(o,f)))var f=o,c=i;
-}return c}function jt(n,t){var r=[];return uo(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function wt(n,t,r,e,u){var i=-1,o=n.length;for(r||(r=ke),u||(u=[]);++i<o;){var f=n[i];0<t&&r(f)?1<t?wt(f,t-1,r,e,u):a(u,f):e||(u[u.length]=f)}return u}function mt(n,t){return n&&oo(n,t,Wu)}function At(n,t){return n&&fo(n,t,Wu)}function Et(n,t){return i(t,function(t){return _u(n[t])})}function kt(n,t){t=Sr(t,n);for(var r=0,e=t.length;null!=n&&r<e;)n=n[Me(t[r++])];return r&&r==e?n:T}function St(n,t,r){return t=t(n),
-ff(n)?t:a(t,r(n))}function Ot(n){if(null==n)n=n===T?"[object Undefined]":"[object Null]";else if(mi&&mi in Qu(n)){var t=oi.call(n,mi),r=n[mi];try{n[mi]=T;var e=true}catch(n){}var u=ai.call(n);e&&(t?n[mi]=r:delete n[mi]),n=u}else n=ai.call(n);return n}function It(n,t){return n>t}function Rt(n,t){return null!=n&&oi.call(n,t)}function zt(n,t){return null!=n&&t in Qu(n)}function Wt(n,t,r){for(var e=r?f:o,u=n[0].length,i=n.length,a=i,l=Ku(i),s=1/0,h=[];a--;){var p=n[a];a&&t&&(p=c(p,k(t))),s=Ci(p.length,s),
-l[a]=!r&&(t||120<=u&&120<=p.length)?new Nn(a&&p):T}var p=n[0],_=-1,v=l[0];n:for(;++_<u&&h.length<s;){var g=p[_],d=t?t(g):g,g=r||0!==g?g:0;if(v?!O(v,d):!e(h,d,r)){for(a=i;--a;){var y=l[a];if(y?!O(y,d):!e(n[a],d,r))continue n}v&&v.push(d),h.push(g)}}return h}function Bt(n,t,r){var e={};return mt(n,function(n,u,i){t(e,r(n),u,i)}),e}function Lt(t,r,e){return r=Sr(r,t),t=2>r.length?t:kt(t,hr(r,0,-1)),r=null==t?t:t[Me(Ve(r))],null==r?T:n(r,t,e)}function Ut(n){return yu(n)&&"[object Arguments]"==Ot(n)}function Ct(n){
-return yu(n)&&"[object ArrayBuffer]"==Ot(n)}function Dt(n){return yu(n)&&"[object Date]"==Ot(n)}function Mt(n,t,r,e,u){if(n===t)t=true;else if(null==n||null==t||!yu(n)&&!yu(t))t=n!==n&&t!==t;else n:{var i=ff(n),o=ff(t),f=i?"[object Array]":vo(n),c=o?"[object Array]":vo(t),f="[object Arguments]"==f?"[object Object]":f,c="[object Arguments]"==c?"[object Object]":c,a="[object Object]"==f,o="[object Object]"==c;if((c=f==c)&&af(n)){if(!af(t)){t=false;break n}i=true,a=false}if(c&&!a)u||(u=new Zn),t=i||_f(n)?se(n,t,r,e,Mt,u):he(n,t,f,r,e,Mt,u);else{
-if(!(1&r)&&(i=a&&oi.call(n,"__wrapped__"),f=o&&oi.call(t,"__wrapped__"),i||f)){n=i?n.value():n,t=f?t.value():t,u||(u=new Zn),t=Mt(n,t,r,e,u);break n}if(c)t:if(u||(u=new Zn),i=1&r,f=_e(n),o=f.length,c=_e(t).length,o==c||i){for(a=o;a--;){var l=f[a];if(!(i?l in t:oi.call(t,l))){t=false;break t}}if((c=u.get(n))&&u.get(t))t=c==t;else{c=true,u.set(n,t),u.set(t,n);for(var s=i;++a<o;){var l=f[a],h=n[l],p=t[l];if(e)var _=i?e(p,h,l,t,n,u):e(h,p,l,n,t,u);if(_===T?h!==p&&!Mt(h,p,r,e,u):!_){c=false;break}s||(s="constructor"==l);
-}c&&!s&&(r=n.constructor,e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(c=false)),u.delete(n),u.delete(t),t=c}}else t=false;else t=false}}return t}function Tt(n){return yu(n)&&"[object Map]"==vo(n)}function $t(n,t,r,e){var u=r.length,i=u,o=!e;if(null==n)return!i;for(n=Qu(n);u--;){var f=r[u];if(o&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return false}for(;++u<i;){var f=r[u],c=f[0],a=n[c],l=f[1];if(o&&f[2]){if(a===T&&!(c in n))return false;
-}else{if(f=new Zn,e)var s=e(a,l,c,n,t,f);if(s===T?!Mt(l,a,3,e,f):!s)return false}}return true}function Ft(n){return!(!du(n)||ci&&ci in n)&&(_u(n)?hi:dn).test(Te(n))}function Nt(n){return yu(n)&&"[object RegExp]"==Ot(n)}function Pt(n){return yu(n)&&"[object Set]"==vo(n)}function Zt(n){return yu(n)&&gu(n.length)&&!!Bn[Ot(n)]}function qt(n){return typeof n=="function"?n:null==n?$u:typeof n=="object"?ff(n)?Jt(n[0],n[1]):Ht(n):Zu(n)}function Vt(n){if(!ze(n))return Li(n);var t,r=[];for(t in Qu(n))oi.call(n,t)&&"constructor"!=t&&r.push(t);
-return r}function Kt(n,t){return n<t}function Gt(n,t){var r=-1,e=su(n)?Ku(n.length):[];return uo(n,function(n,u,i){e[++r]=t(n,u,i)}),e}function Ht(n){var t=xe(n);return 1==t.length&&t[0][2]?We(t[0][0],t[0][1]):function(r){return r===n||$t(r,n,t)}}function Jt(n,t){return Ie(n)&&t===t&&!du(t)?We(Me(n),t):function(r){var e=Ru(r,n);return e===T&&e===t?zu(r,n):Mt(t,e,3)}}function Yt(n,t,r,e,u){n!==t&&oo(t,function(i,o){if(u||(u=new Zn),du(i)){var f=u,c=Le(n,o),a=Le(t,o),l=f.get(a);if(l)it(n,o,l);else{
-var l=e?e(c,a,o+"",n,t,f):T,s=l===T;if(s){var h=ff(a),p=!h&&af(a),_=!h&&!p&&_f(a),l=a;h||p||_?ff(c)?l=c:hu(c)?l=Ur(c):p?(s=false,l=Ir(a,true)):_?(s=false,l=zr(a,true)):l=[]:xu(a)||of(a)?(l=c,of(c)?l=Ou(c):du(c)&&!_u(c)||(l=Ae(a))):s=false}s&&(f.set(a,l),Yt(l,a,r,e,f),f.delete(a)),it(n,o,l)}}else f=e?e(Le(n,o),i,o+"",n,t,u):T,f===T&&(f=i),it(n,o,f)},Bu)}function Qt(n,t){var r=n.length;if(r)return t+=0>t?r:0,Se(t,r)?n[t]:T}function Xt(n,t,r){var e=-1;return t=c(t.length?t:[$u],k(ye())),n=Gt(n,function(n){return{
-a:c(t,function(t){return t(n)}),b:++e,c:n}}),w(n,function(n,t){var e;n:{e=-1;for(var u=n.a,i=t.a,o=u.length,f=r.length;++e<o;){var c=Wr(u[e],i[e]);if(c){e=e>=f?c:c*("desc"==r[e]?-1:1);break n}}e=n.b-t.b}return e})}function nr(n,t){return tr(n,t,function(t,r){return zu(n,r)})}function tr(n,t,r){for(var e=-1,u=t.length,i={};++e<u;){var o=t[e],f=kt(n,o);r(f,o)&&lr(i,Sr(o,n),f)}return i}function rr(n){return function(t){return kt(t,n)}}function er(n,t,r,e){var u=e?g:v,i=-1,o=t.length,f=n;for(n===t&&(t=Ur(t)),
-r&&(f=c(n,k(r)));++i<o;)for(var a=0,l=t[i],l=r?r(l):l;-1<(a=u(f,l,a,e));)f!==n&&xi.call(f,a,1),xi.call(n,a,1);return n}function ur(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(r==e||u!==i){var i=u;Se(u)?xi.call(n,u,1):xr(n,u)}}}function ir(n,t){return n+Ii(Ti()*(t-n+1))}function or(n,t){var r="";if(!n||1>t||9007199254740991<t)return r;do t%2&&(r+=n),(t=Ii(t/2))&&(n+=n);while(t);return r}function fr(n,t){return xo(Be(n,t,$u),n+"")}function cr(n){return Qn(Uu(n))}function ar(n,t){var r=Uu(n);
-return De(r,pt(t,0,r.length))}function lr(n,t,r,e){if(!du(n))return n;t=Sr(t,n);for(var u=-1,i=t.length,o=i-1,f=n;null!=f&&++u<i;){var c=Me(t[u]),a=r;if(u!=o){var l=f[c],a=e?e(l,c,f):T;a===T&&(a=du(l)?l:Se(t[u+1])?[]:{})}ot(f,c,a),f=f[c]}return n}function sr(n){return De(Uu(n))}function hr(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Ku(u);++e<u;)r[e]=n[e+t];return r}function pr(n,t){var r;return uo(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}
-function _r(n,t,r){var e=0,u=null==n?e:n.length;if(typeof t=="number"&&t===t&&2147483647>=u){for(;e<u;){var i=e+u>>>1,o=n[i];null!==o&&!wu(o)&&(r?o<=t:o<t)?e=i+1:u=i}return u}return vr(n,t,$u,r)}function vr(n,t,r,e){t=r(t);for(var u=0,i=null==n?0:n.length,o=t!==t,f=null===t,c=wu(t),a=t===T;u<i;){var l=Ii((u+i)/2),s=r(n[l]),h=s!==T,p=null===s,_=s===s,v=wu(s);(o?e||_:a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):p||v?0:e?s<=t:s<t)?u=l+1:i=l}return Ci(i,4294967294)}function gr(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){
-var o=n[r],f=t?t(o):o;if(!r||!lu(f,c)){var c=f;i[u++]=0===o?0:o}}return i}function dr(n){return typeof n=="number"?n:wu(n)?F:+n}function yr(n){if(typeof n=="string")return n;if(ff(n))return c(n,yr)+"";if(wu(n))return ro?ro.call(n):"";var t=n+"";return"0"==t&&1/n==-$?"-0":t}function br(n,t,r){var e=-1,u=o,i=n.length,c=true,a=[],l=a;if(r)c=false,u=f;else if(200<=i){if(u=t?null:so(n))return U(u);c=false,u=O,l=new Nn}else l=t?[]:a;n:for(;++e<i;){var s=n[e],h=t?t(s):s,s=r||0!==s?s:0;if(c&&h===h){for(var p=l.length;p--;)if(l[p]===h)continue n;
-t&&l.push(h),a.push(s)}else u(l,h,r)||(l!==a&&l.push(h),a.push(s))}return a}function xr(n,t){return t=Sr(t,n),n=2>t.length?n:kt(n,hr(t,0,-1)),null==n||delete n[Me(Ve(t))]}function jr(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?hr(n,e?0:i,e?i+1:u):hr(n,e?i+1:0,e?u:i)}function wr(n,t){var r=n;return r instanceof Un&&(r=r.value()),l(t,function(n,t){return t.func.apply(t.thisArg,a([n],t.args))},r)}function mr(n,t,r){var e=n.length;if(2>e)return e?br(n[0]):[];for(var u=-1,i=Ku(e);++u<e;)for(var o=n[u],f=-1;++f<e;)f!=u&&(i[u]=yt(i[u]||o,n[f],t,r));
-return br(wt(i,1),t,r)}function Ar(n,t,r){for(var e=-1,u=n.length,i=t.length,o={};++e<u;)r(o,n[e],e<i?t[e]:T);return o}function Er(n){return hu(n)?n:[]}function kr(n){return typeof n=="function"?n:$u}function Sr(n,t){return ff(n)?n:Ie(n,t)?[n]:jo(Iu(n))}function Or(n,t,r){var e=n.length;return r=r===T?e:r,!t&&r>=e?n:hr(n,t,r)}function Ir(n,t){if(t)return n.slice();var r=n.length,r=gi?gi(r):new n.constructor(r);return n.copy(r),r}function Rr(n){var t=new n.constructor(n.byteLength);return new vi(t).set(new vi(n)),
-t}function zr(n,t){return new n.constructor(t?Rr(n.buffer):n.buffer,n.byteOffset,n.length)}function Wr(n,t){if(n!==t){var r=n!==T,e=null===n,u=n===n,i=wu(n),o=t!==T,f=null===t,c=t===t,a=wu(t);if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&n<t||a&&r&&u&&!e&&!i||f&&r&&u||!o&&u||!c)return-1}return 0}function Br(n,t,r,e){var u=-1,i=n.length,o=r.length,f=-1,c=t.length,a=Ui(i-o,0),l=Ku(c+a);for(e=!e;++f<c;)l[f]=t[f];for(;++u<o;)(e||u<i)&&(l[r[u]]=n[u]);for(;a--;)l[f++]=n[u++];
-return l}function Lr(n,t,r,e){var u=-1,i=n.length,o=-1,f=r.length,c=-1,a=t.length,l=Ui(i-f,0),s=Ku(l+a);for(e=!e;++u<l;)s[u]=n[u];for(l=u;++c<a;)s[l+c]=t[c];for(;++o<f;)(e||u<i)&&(s[l+r[o]]=n[u++]);return s}function Ur(n,t){var r=-1,e=n.length;for(t||(t=Ku(e));++r<e;)t[r]=n[r];return t}function Cr(n,t,r,e){var u=!r;r||(r={});for(var i=-1,o=t.length;++i<o;){var f=t[i],c=e?e(r[f],n[f],f,r,n):T;c===T&&(c=n[f]),u?st(r,f,c):ot(r,f,c)}return r}function Dr(n,t){return Cr(n,po(n),t)}function Mr(n,t){return Cr(n,_o(n),t);
-}function Tr(n,r){return function(e,u){var i=ff(e)?t:ct,o=r?r():{};return i(e,n,ye(u,2),o)}}function $r(n){return fr(function(t,r){var e=-1,u=r.length,i=1<u?r[u-1]:T,o=2<u?r[2]:T,i=3<n.length&&typeof i=="function"?(u--,i):T;for(o&&Oe(r[0],r[1],o)&&(i=3>u?T:i,u=1),t=Qu(t);++e<u;)(o=r[e])&&n(t,o,e,i);return t})}function Fr(n,t){return function(r,e){if(null==r)return r;if(!su(r))return n(r,e);for(var u=r.length,i=t?u:-1,o=Qu(r);(t?i--:++i<u)&&false!==e(o[i],i,o););return r}}function Nr(n){return function(t,r,e){
-var u=-1,i=Qu(t);e=e(t);for(var o=e.length;o--;){var f=e[n?o:++u];if(false===r(i[f],f,i))break}return t}}function Pr(n,t,r){function e(){return(this&&this!==$n&&this instanceof e?i:n).apply(u?r:this,arguments)}var u=1&t,i=Vr(n);return e}function Zr(n){return function(t){t=Iu(t);var r=Rn.test(t)?M(t):T,e=r?r[0]:t.charAt(0);return t=r?Or(r,1).join(""):t.slice(1),e[n]()+t}}function qr(n){return function(t){return l(Mu(Du(t).replace(kn,"")),n,"")}}function Vr(n){return function(){var t=arguments;switch(t.length){
-case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=eo(n.prototype),t=n.apply(r,t);return du(t)?t:r}}function Kr(t,r,e){function u(){for(var o=arguments.length,f=Ku(o),c=o,a=de(u);c--;)f[c]=arguments[c];return c=3>o&&f[0]!==a&&f[o-1]!==a?[]:L(f,a),
-o-=c.length,o<e?ue(t,r,Jr,u.placeholder,T,f,c,T,T,e-o):n(this&&this!==$n&&this instanceof u?i:t,this,f)}var i=Vr(t);return u}function Gr(n){return function(t,r,e){var u=Qu(t);if(!su(t)){var i=ye(r,3);t=Wu(t),r=function(n){return i(u[n],n,u)}}return r=n(t,r,e),-1<r?u[i?t[r]:r]:T}}function Hr(n){return pe(function(t){var r=t.length,e=r,u=On.prototype.thru;for(n&&t.reverse();e--;){var i=t[e];if(typeof i!="function")throw new ti("Expected a function");if(u&&!o&&"wrapper"==ge(i))var o=new On([],true)}for(e=o?e:r;++e<r;)var i=t[e],u=ge(i),f="wrapper"==u?ho(i):T,o=f&&Re(f[0])&&424==f[1]&&!f[4].length&&1==f[9]?o[ge(f[0])].apply(o,f[3]):1==i.length&&Re(i)?o[u]():o.thru(i);
-return function(){var n=arguments,e=n[0];if(o&&1==n.length&&ff(e))return o.plant(e).value();for(var u=0,n=r?t[u].apply(this,n):e;++u<r;)n=t[u].call(this,n);return n}})}function Jr(n,t,r,e,u,i,o,f,c,a){function l(){for(var d=arguments.length,y=Ku(d),b=d;b--;)y[b]=arguments[b];if(_){var x,j=de(l),b=y.length;for(x=0;b--;)y[b]===j&&++x}if(e&&(y=Br(y,e,u,_)),i&&(y=Lr(y,i,o,_)),d-=x,_&&d<a)return j=L(y,j),ue(n,t,Jr,l.placeholder,r,y,j,f,c,a-d);if(j=h?r:this,b=p?j[n]:n,d=y.length,f){x=y.length;for(var w=Ci(f.length,x),m=Ur(y);w--;){
-var A=f[w];y[w]=Se(A,x)?m[A]:T}}else v&&1<d&&y.reverse();return s&&c<d&&(y.length=c),this&&this!==$n&&this instanceof l&&(b=g||Vr(b)),b.apply(j,y)}var s=128&t,h=1&t,p=2&t,_=24&t,v=512&t,g=p?T:Vr(n);return l}function Yr(n,t){return function(r,e){return Bt(r,n,t(e))}}function Qr(n,t){return function(r,e){var u;if(r===T&&e===T)return t;if(r!==T&&(u=r),e!==T){if(u===T)return e;typeof r=="string"||typeof e=="string"?(r=yr(r),e=yr(e)):(r=dr(r),e=dr(e)),u=n(r,e)}return u}}function Xr(t){return pe(function(r){
-return r=c(r,k(ye())),fr(function(e){var u=this;return t(r,function(t){return n(t,u,e)})})})}function ne(n,t){t=t===T?" ":yr(t);var r=t.length;return 2>r?r?or(t,n):t:(r=or(t,Oi(n/D(t))),Rn.test(t)?Or(M(r),0,n).join(""):r.slice(0,n))}function te(t,r,e,u){function i(){for(var r=-1,c=arguments.length,a=-1,l=u.length,s=Ku(l+c),h=this&&this!==$n&&this instanceof i?f:t;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++r];return n(h,o?e:this,s)}var o=1&r,f=Vr(t);return i}function re(n){return function(t,r,e){
-e&&typeof e!="number"&&Oe(t,r,e)&&(r=e=T),t=Au(t),r===T?(r=t,t=0):r=Au(r),e=e===T?t<r?1:-1:Au(e);var u=-1;r=Ui(Oi((r-t)/(e||1)),0);for(var i=Ku(r);r--;)i[n?r:++u]=t,t+=e;return i}}function ee(n){return function(t,r){return typeof t=="string"&&typeof r=="string"||(t=Su(t),r=Su(r)),n(t,r)}}function ue(n,t,r,e,u,i,o,f,c,a){var l=8&t,s=l?o:T;o=l?T:o;var h=l?i:T;return i=l?T:i,t=(t|(l?32:64))&~(l?64:32),4&t||(t&=-4),u=[n,t,u,h,s,i,o,f,c,a],r=r.apply(T,u),Re(n)&&yo(r,u),r.placeholder=e,Ue(r,n,t)}function ie(n){
-var t=Yu[n];return function(n,r){if(n=Su(n),(r=null==r?0:Ci(Eu(r),292))&&Wi(n)){var e=(Iu(n)+"e").split("e"),e=t(e[0]+"e"+(+e[1]+r)),e=(Iu(e)+"e").split("e");return+(e[0]+"e"+(+e[1]-r))}return t(n)}}function oe(n){return function(t){var r=vo(t);return"[object Map]"==r?W(t):"[object Set]"==r?C(t):E(t,n(t))}}function fe(n,t,r,e,u,i,o,f){var c=2&t;if(!c&&typeof n!="function")throw new ti("Expected a function");var a=e?e.length:0;if(a||(t&=-97,e=u=T),o=o===T?o:Ui(Eu(o),0),f=f===T?f:Eu(f),a-=u?u.length:0,
-64&t){var l=e,s=u;e=u=T}var h=c?T:ho(n);return i=[n,t,r,e,u,l,s,i,o,f],h&&(r=i[1],n=h[1],t=r|n,e=128==n&&8==r||128==n&&256==r&&i[7].length<=h[8]||384==n&&h[7].length<=h[8]&&8==r,131>t||e)&&(1&n&&(i[2]=h[2],t|=1&r?0:4),(r=h[3])&&(e=i[3],i[3]=e?Br(e,r,h[4]):r,i[4]=e?L(i[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=i[5],i[5]=e?Lr(e,r,h[6]):r,i[6]=e?L(i[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(i[7]=r),128&n&&(i[8]=null==i[8]?h[8]:Ci(i[8],h[8])),null==i[9]&&(i[9]=h[9]),i[0]=h[0],i[1]=t),n=i[0],
-t=i[1],r=i[2],e=i[3],u=i[4],f=i[9]=i[9]===T?c?0:n.length:Ui(i[9]-a,0),!f&&24&t&&(t&=-25),Ue((h?co:yo)(t&&1!=t?8==t||16==t?Kr(n,t,f):32!=t&&33!=t||u.length?Jr.apply(T,i):te(n,t,r,e):Pr(n,t,r),i),n,t)}function ce(n,t,r,e){return n===T||lu(n,ei[r])&&!oi.call(e,r)?t:n}function ae(n,t,r,e,u,i){return du(n)&&du(t)&&(i.set(t,n),Yt(n,t,T,ae,i),i.delete(t)),n}function le(n){return xu(n)?T:n}function se(n,t,r,e,u,i){var o=1&r,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return false;if((c=i.get(n))&&i.get(t))return c==t;
-var c=-1,a=true,l=2&r?new Nn:T;for(i.set(n,t),i.set(t,n);++c<f;){var s=n[c],p=t[c];if(e)var _=o?e(p,s,c,t,n,i):e(s,p,c,n,t,i);if(_!==T){if(_)continue;a=false;break}if(l){if(!h(t,function(n,t){if(!O(l,t)&&(s===n||u(s,n,r,e,i)))return l.push(t)})){a=false;break}}else if(s!==p&&!u(s,p,r,e,i)){a=false;break}}return i.delete(n),i.delete(t),a}function he(n,t,r,e,u,i,o){switch(r){case"[object DataView]":if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)break;n=n.buffer,t=t.buffer;case"[object ArrayBuffer]":
-if(n.byteLength!=t.byteLength||!i(new vi(n),new vi(t)))break;return true;case"[object Boolean]":case"[object Date]":case"[object Number]":return lu(+n,+t);case"[object Error]":return n.name==t.name&&n.message==t.message;case"[object RegExp]":case"[object String]":return n==t+"";case"[object Map]":var f=W;case"[object Set]":if(f||(f=U),n.size!=t.size&&!(1&e))break;return(r=o.get(n))?r==t:(e|=2,o.set(n,t),t=se(f(n),f(t),e,u,i,o),o.delete(n),t);case"[object Symbol]":if(to)return to.call(n)==to.call(t)}
-return false}function pe(n){return xo(Be(n,T,Ze),n+"")}function _e(n){return St(n,Wu,po)}function ve(n){return St(n,Bu,_o)}function ge(n){for(var t=n.name+"",r=Gi[t],e=oi.call(Gi,t)?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function de(n){return(oi.call(An,"placeholder")?An:n).placeholder}function ye(){var n=An.iteratee||Fu,n=n===Fu?qt:n;return arguments.length?n(arguments[0],arguments[1]):n}function be(n,t){var r=n.__data__,e=typeof t;return("string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t)?r[typeof t=="string"?"string":"hash"]:r.map;
-}function xe(n){for(var t=Wu(n),r=t.length;r--;){var e=t[r],u=n[e];t[r]=[e,u,u===u&&!du(u)]}return t}function je(n,t){var r=null==n?T:n[t];return Ft(r)?r:T}function we(n,t,r){t=Sr(t,n);for(var e=-1,u=t.length,i=false;++e<u;){var o=Me(t[e]);if(!(i=null!=n&&r(n,o)))break;n=n[o]}return i||++e!=u?i:(u=null==n?0:n.length,!!u&&gu(u)&&Se(o,u)&&(ff(n)||of(n)))}function me(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&oi.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function Ae(n){
-return typeof n.constructor!="function"||ze(n)?{}:eo(di(n))}function Ee(n,t,r){var e=n.constructor;switch(t){case"[object ArrayBuffer]":return Rr(n);case"[object Boolean]":case"[object Date]":return new e(+n);case"[object DataView]":return t=r?Rr(n.buffer):n.buffer,new n.constructor(t,n.byteOffset,n.byteLength);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":
-case"[object Uint16Array]":case"[object Uint32Array]":return zr(n,r);case"[object Map]":return new e;case"[object Number]":case"[object String]":return new e(n);case"[object RegExp]":return t=new n.constructor(n.source,_n.exec(n)),t.lastIndex=n.lastIndex,t;case"[object Set]":return new e;case"[object Symbol]":return to?Qu(to.call(n)):{}}}function ke(n){return ff(n)||of(n)||!!(ji&&n&&n[ji])}function Se(n,t){var r=typeof n;return t=null==t?9007199254740991:t,!!t&&("number"==r||"symbol"!=r&&bn.test(n))&&-1<n&&0==n%1&&n<t;
-}function Oe(n,t,r){if(!du(r))return false;var e=typeof t;return!!("number"==e?su(r)&&Se(t,r.length):"string"==e&&t in r)&&lu(r[t],n)}function Ie(n,t){if(ff(n))return false;var r=typeof n;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=n&&!wu(n))||(nn.test(n)||!X.test(n)||null!=t&&n in Qu(t))}function Re(n){var t=ge(n),r=An[t];return typeof r=="function"&&t in Un.prototype&&(n===r||(t=ho(r),!!t&&n===t[0]))}function ze(n){var t=n&&n.constructor;return n===(typeof t=="function"&&t.prototype||ei)}function We(n,t){
-return function(r){return null!=r&&(r[n]===t&&(t!==T||n in Qu(r)))}}function Be(t,r,e){return r=Ui(r===T?t.length-1:r,0),function(){for(var u=arguments,i=-1,o=Ui(u.length-r,0),f=Ku(o);++i<o;)f[i]=u[r+i];for(i=-1,o=Ku(r+1);++i<r;)o[i]=u[i];return o[r]=e(f),n(t,this,o)}}function Le(n,t){if(("constructor"!==t||"function"!=typeof n[t])&&"__proto__"!=t)return n[t]}function Ue(n,t,r){var e=t+"";t=xo;var u,i=$e;return u=(u=e.match(an))?u[1].split(ln):[],r=i(u,r),(i=r.length)&&(u=i-1,r[u]=(1<i?"& ":"")+r[u],
-r=r.join(2<i?", ":" "),e=e.replace(cn,"{\n/* [wrapped with "+r+"] */\n")),t(n,e)}function Ce(n){var t=0,r=0;return function(){var e=Di(),u=16-(e-r);if(r=e,0<u){if(800<=++t)return arguments[0]}else t=0;return n.apply(T,arguments)}}function De(n,t){var r=-1,e=n.length,u=e-1;for(t=t===T?e:t;++r<t;){var e=ir(r,u),i=n[e];n[e]=n[r],n[r]=i}return n.length=t,n}function Me(n){if(typeof n=="string"||wu(n))return n;var t=n+"";return"0"==t&&1/n==-$?"-0":t}function Te(n){if(null!=n){try{return ii.call(n)}catch(n){}
-return n+""}return""}function $e(n,t){return r(N,function(r){var e="_."+r[0];t&r[1]&&!o(n,e)&&n.push(e)}),n.sort()}function Fe(n){if(n instanceof Un)return n.clone();var t=new On(n.__wrapped__,n.__chain__);return t.__actions__=Ur(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function Ne(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Eu(r),0>r&&(r=Ui(e+r,0)),_(n,ye(t,3),r)):-1}function Pe(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==T&&(u=Eu(r),u=0>r?Ui(e+u,0):Ci(u,e-1)),
-_(n,ye(t,3),u,true)}function Ze(n){return(null==n?0:n.length)?wt(n,1):[]}function qe(n){return n&&n.length?n[0]:T}function Ve(n){var t=null==n?0:n.length;return t?n[t-1]:T}function Ke(n,t){return n&&n.length&&t&&t.length?er(n,t):n}function Ge(n){return null==n?n:$i.call(n)}function He(n){if(!n||!n.length)return[];var t=0;return n=i(n,function(n){if(hu(n))return t=Ui(n.length,t),true}),A(t,function(t){return c(n,b(t))})}function Je(t,r){if(!t||!t.length)return[];var e=He(t);return null==r?e:c(e,function(t){
-return n(r,T,t)})}function Ye(n){return n=An(n),n.__chain__=true,n}function Qe(n,t){return t(n)}function Xe(){return this}function nu(n,t){return(ff(n)?r:uo)(n,ye(t,3))}function tu(n,t){return(ff(n)?e:io)(n,ye(t,3))}function ru(n,t){return(ff(n)?c:Gt)(n,ye(t,3))}function eu(n,t,r){return t=r?T:t,t=n&&null==t?n.length:t,fe(n,128,T,T,T,T,t)}function uu(n,t){var r;if(typeof t!="function")throw new ti("Expected a function");return n=Eu(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=T),
-r}}function iu(n,t,r){return t=r?T:t,n=fe(n,8,T,T,T,T,T,t),n.placeholder=iu.placeholder,n}function ou(n,t,r){return t=r?T:t,n=fe(n,16,T,T,T,T,T,t),n.placeholder=ou.placeholder,n}function fu(n,t,r){function e(t){var r=c,e=a;return c=a=T,_=t,s=n.apply(e,r)}function u(n){var r=n-p;return n-=_,p===T||r>=t||0>r||g&&n>=l}function i(){var n=Go();if(u(n))return o(n);var r,e=bo;r=n-_,n=t-(n-p),r=g?Ci(n,l-r):n,h=e(i,r)}function o(n){return h=T,d&&c?e(n):(c=a=T,s)}function f(){var n=Go(),r=u(n);if(c=arguments,
-a=this,p=n,r){if(h===T)return _=n=p,h=bo(i,t),v?e(n):s;if(g)return lo(h),h=bo(i,t),e(p)}return h===T&&(h=bo(i,t)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof n!="function")throw new ti("Expected a function");return t=Su(t)||0,du(r)&&(v=!!r.leading,l=(g="maxWait"in r)?Ui(Su(r.maxWait)||0,t):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==T&&lo(h),_=0,c=p=a=h=T},f.flush=function(){return h===T?s:o(Go())},f}function cu(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;
-return i.has(u)?i.get(u):(e=n.apply(this,e),r.cache=i.set(u,e)||i,e)}if(typeof n!="function"||null!=t&&typeof t!="function")throw new ti("Expected a function");return r.cache=new(cu.Cache||Fn),r}function au(n){if(typeof n!="function")throw new ti("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function lu(n,t){return n===t||n!==n&&t!==t;
-}function su(n){return null!=n&&gu(n.length)&&!_u(n)}function hu(n){return yu(n)&&su(n)}function pu(n){if(!yu(n))return false;var t=Ot(n);return"[object Error]"==t||"[object DOMException]"==t||typeof n.message=="string"&&typeof n.name=="string"&&!xu(n)}function _u(n){return!!du(n)&&(n=Ot(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function vu(n){return typeof n=="number"&&n==Eu(n)}function gu(n){return typeof n=="number"&&-1<n&&0==n%1&&9007199254740991>=n;
-}function du(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function yu(n){return null!=n&&typeof n=="object"}function bu(n){return typeof n=="number"||yu(n)&&"[object Number]"==Ot(n)}function xu(n){return!(!yu(n)||"[object Object]"!=Ot(n))&&(n=di(n),null===n||(n=oi.call(n,"constructor")&&n.constructor,typeof n=="function"&&n instanceof n&&ii.call(n)==li))}function ju(n){return typeof n=="string"||!ff(n)&&yu(n)&&"[object String]"==Ot(n)}function wu(n){return typeof n=="symbol"||yu(n)&&"[object Symbol]"==Ot(n);
-}function mu(n){if(!n)return[];if(su(n))return ju(n)?M(n):Ur(n);if(wi&&n[wi]){n=n[wi]();for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}return t=vo(n),("[object Map]"==t?W:"[object Set]"==t?U:Uu)(n)}function Au(n){return n?(n=Su(n),n===$||n===-$?1.7976931348623157e308*(0>n?-1:1):n===n?n:0):0===n?n:0}function Eu(n){n=Au(n);var t=n%1;return n===n?t?n-t:n:0}function ku(n){return n?pt(Eu(n),0,4294967295):0}function Su(n){if(typeof n=="number")return n;if(wu(n))return F;if(du(n)&&(n=typeof n.valueOf=="function"?n.valueOf():n,
-n=du(n)?n+"":n),typeof n!="string")return 0===n?n:+n;n=n.replace(un,"");var t=gn.test(n);return t||yn.test(n)?Dn(n.slice(2),t?2:8):vn.test(n)?F:+n}function Ou(n){return Cr(n,Bu(n))}function Iu(n){return null==n?"":yr(n)}function Ru(n,t,r){return n=null==n?T:kt(n,t),n===T?r:n}function zu(n,t){return null!=n&&we(n,t,zt)}function Wu(n){return su(n)?qn(n):Vt(n)}function Bu(n){if(su(n))n=qn(n,true);else if(du(n)){var t,r=ze(n),e=[];for(t in n)("constructor"!=t||!r&&oi.call(n,t))&&e.push(t);n=e}else{if(t=[],
-null!=n)for(r in Qu(n))t.push(r);n=t}return n}function Lu(n,t){if(null==n)return{};var r=c(ve(n),function(n){return[n]});return t=ye(t),tr(n,r,function(n,r){return t(n,r[0])})}function Uu(n){return null==n?[]:S(n,Wu(n))}function Cu(n){return $f(Iu(n).toLowerCase())}function Du(n){return(n=Iu(n))&&n.replace(xn,Xn).replace(Sn,"")}function Mu(n,t,r){return n=Iu(n),t=r?T:t,t===T?zn.test(n)?n.match(In)||[]:n.match(sn)||[]:n.match(t)||[]}function Tu(n){return function(){return n}}function $u(n){return n;
-}function Fu(n){return qt(typeof n=="function"?n:_t(n,1))}function Nu(n,t,e){var u=Wu(t),i=Et(t,u);null!=e||du(t)&&(i.length||!u.length)||(e=t,t=n,n=this,i=Et(t,Wu(t)));var o=!(du(e)&&"chain"in e&&!e.chain),f=_u(n);return r(i,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(o||t){var r=n(this.__wrapped__);return(r.__actions__=Ur(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,a([this.value()],arguments))})}),n}function Pu(){}
-function Zu(n){return Ie(n)?b(Me(n)):rr(n)}function qu(){return[]}function Vu(){return false}mn=null==mn?$n:rt.defaults($n.Object(),mn,rt.pick($n,Wn));var Ku=mn.Array,Gu=mn.Date,Hu=mn.Error,Ju=mn.Function,Yu=mn.Math,Qu=mn.Object,Xu=mn.RegExp,ni=mn.String,ti=mn.TypeError,ri=Ku.prototype,ei=Qu.prototype,ui=mn["__core-js_shared__"],ii=Ju.prototype.toString,oi=ei.hasOwnProperty,fi=0,ci=function(){var n=/[^.]+$/.exec(ui&&ui.keys&&ui.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}(),ai=ei.toString,li=ii.call(Qu),si=$n._,hi=Xu("^"+ii.call(oi).replace(rn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),pi=Pn?mn.Buffer:T,_i=mn.Symbol,vi=mn.Uint8Array,gi=pi?pi.g:T,di=B(Qu.getPrototypeOf,Qu),yi=Qu.create,bi=ei.propertyIsEnumerable,xi=ri.splice,ji=_i?_i.isConcatSpreadable:T,wi=_i?_i.iterator:T,mi=_i?_i.toStringTag:T,Ai=function(){
-try{var n=je(Qu,"defineProperty");return n({},"",{}),n}catch(n){}}(),Ei=mn.clearTimeout!==$n.clearTimeout&&mn.clearTimeout,ki=Gu&&Gu.now!==$n.Date.now&&Gu.now,Si=mn.setTimeout!==$n.setTimeout&&mn.setTimeout,Oi=Yu.ceil,Ii=Yu.floor,Ri=Qu.getOwnPropertySymbols,zi=pi?pi.isBuffer:T,Wi=mn.isFinite,Bi=ri.join,Li=B(Qu.keys,Qu),Ui=Yu.max,Ci=Yu.min,Di=Gu.now,Mi=mn.parseInt,Ti=Yu.random,$i=ri.reverse,Fi=je(mn,"DataView"),Ni=je(mn,"Map"),Pi=je(mn,"Promise"),Zi=je(mn,"Set"),qi=je(mn,"WeakMap"),Vi=je(Qu,"create"),Ki=qi&&new qi,Gi={},Hi=Te(Fi),Ji=Te(Ni),Yi=Te(Pi),Qi=Te(Zi),Xi=Te(qi),no=_i?_i.prototype:T,to=no?no.valueOf:T,ro=no?no.toString:T,eo=function(){
-function n(){}return function(t){return du(t)?yi?yi(t):(n.prototype=t,t=new n,n.prototype=T,t):{}}}();An.templateSettings={escape:J,evaluate:Y,interpolate:Q,variable:"",imports:{_:An}},An.prototype=En.prototype,An.prototype.constructor=An,On.prototype=eo(En.prototype),On.prototype.constructor=On,Un.prototype=eo(En.prototype),Un.prototype.constructor=Un,Mn.prototype.clear=function(){this.__data__=Vi?Vi(null):{},this.size=0},Mn.prototype.delete=function(n){return n=this.has(n)&&delete this.__data__[n],
-this.size-=n?1:0,n},Mn.prototype.get=function(n){var t=this.__data__;return Vi?(n=t[n],"__lodash_hash_undefined__"===n?T:n):oi.call(t,n)?t[n]:T},Mn.prototype.has=function(n){var t=this.__data__;return Vi?t[n]!==T:oi.call(t,n)},Mn.prototype.set=function(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=Vi&&t===T?"__lodash_hash_undefined__":t,this},Tn.prototype.clear=function(){this.__data__=[],this.size=0},Tn.prototype.delete=function(n){var t=this.__data__;return n=ft(t,n),!(0>n)&&(n==t.length-1?t.pop():xi.call(t,n,1),
---this.size,true)},Tn.prototype.get=function(n){var t=this.__data__;return n=ft(t,n),0>n?T:t[n][1]},Tn.prototype.has=function(n){return-1<ft(this.__data__,n)},Tn.prototype.set=function(n,t){var r=this.__data__,e=ft(r,n);return 0>e?(++this.size,r.push([n,t])):r[e][1]=t,this},Fn.prototype.clear=function(){this.size=0,this.__data__={hash:new Mn,map:new(Ni||Tn),string:new Mn}},Fn.prototype.delete=function(n){return n=be(this,n).delete(n),this.size-=n?1:0,n},Fn.prototype.get=function(n){return be(this,n).get(n);
-},Fn.prototype.has=function(n){return be(this,n).has(n)},Fn.prototype.set=function(n,t){var r=be(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},Nn.prototype.add=Nn.prototype.push=function(n){return this.__data__.set(n,"__lodash_hash_undefined__"),this},Nn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.clear=function(){this.__data__=new Tn,this.size=0},Zn.prototype.delete=function(n){var t=this.__data__;return n=t.delete(n),this.size=t.size,n},Zn.prototype.get=function(n){
-return this.__data__.get(n)},Zn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Tn){var e=r.__data__;if(!Ni||199>e.length)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new Fn(e)}return r.set(n,t),this.size=r.size,this};var uo=Fr(mt),io=Fr(At,true),oo=Nr(),fo=Nr(true),co=Ki?function(n,t){return Ki.set(n,t),n}:$u,ao=Ai?function(n,t){return Ai(n,"toString",{configurable:true,enumerable:false,value:Tu(t),writable:true})}:$u,lo=Ei||function(n){
-return $n.clearTimeout(n)},so=Zi&&1/U(new Zi([,-0]))[1]==$?function(n){return new Zi(n)}:Pu,ho=Ki?function(n){return Ki.get(n)}:Pu,po=Ri?function(n){return null==n?[]:(n=Qu(n),i(Ri(n),function(t){return bi.call(n,t)}))}:qu,_o=Ri?function(n){for(var t=[];n;)a(t,po(n)),n=di(n);return t}:qu,vo=Ot;(Fi&&"[object DataView]"!=vo(new Fi(new ArrayBuffer(1)))||Ni&&"[object Map]"!=vo(new Ni)||Pi&&"[object Promise]"!=vo(Pi.resolve())||Zi&&"[object Set]"!=vo(new Zi)||qi&&"[object WeakMap]"!=vo(new qi))&&(vo=function(n){
-var t=Ot(n);if(n=(n="[object Object]"==t?n.constructor:T)?Te(n):"")switch(n){case Hi:return"[object DataView]";case Ji:return"[object Map]";case Yi:return"[object Promise]";case Qi:return"[object Set]";case Xi:return"[object WeakMap]"}return t});var go=ui?_u:Vu,yo=Ce(co),bo=Si||function(n,t){return $n.setTimeout(n,t)},xo=Ce(ao),jo=function(n){n=cu(n,function(n){return 500===t.size&&t.clear(),n});var t=n.cache;return n}(function(n){var t=[];return 46===n.charCodeAt(0)&&t.push(""),n.replace(tn,function(n,r,e,u){
-t.push(e?u.replace(hn,"$1"):r||n)}),t}),wo=fr(function(n,t){return hu(n)?yt(n,wt(t,1,hu,true)):[]}),mo=fr(function(n,t){var r=Ve(t);return hu(r)&&(r=T),hu(n)?yt(n,wt(t,1,hu,true),ye(r,2)):[]}),Ao=fr(function(n,t){var r=Ve(t);return hu(r)&&(r=T),hu(n)?yt(n,wt(t,1,hu,true),T,r):[]}),Eo=fr(function(n){var t=c(n,Er);return t.length&&t[0]===n[0]?Wt(t):[]}),ko=fr(function(n){var t=Ve(n),r=c(n,Er);return t===Ve(r)?t=T:r.pop(),r.length&&r[0]===n[0]?Wt(r,ye(t,2)):[]}),So=fr(function(n){var t=Ve(n),r=c(n,Er);return(t=typeof t=="function"?t:T)&&r.pop(),
-r.length&&r[0]===n[0]?Wt(r,T,t):[]}),Oo=fr(Ke),Io=pe(function(n,t){var r=null==n?0:n.length,e=ht(n,t);return ur(n,c(t,function(n){return Se(n,r)?+n:n}).sort(Wr)),e}),Ro=fr(function(n){return br(wt(n,1,hu,true))}),zo=fr(function(n){var t=Ve(n);return hu(t)&&(t=T),br(wt(n,1,hu,true),ye(t,2))}),Wo=fr(function(n){var t=Ve(n),t=typeof t=="function"?t:T;return br(wt(n,1,hu,true),T,t)}),Bo=fr(function(n,t){return hu(n)?yt(n,t):[]}),Lo=fr(function(n){return mr(i(n,hu))}),Uo=fr(function(n){var t=Ve(n);return hu(t)&&(t=T),
-mr(i(n,hu),ye(t,2))}),Co=fr(function(n){var t=Ve(n),t=typeof t=="function"?t:T;return mr(i(n,hu),T,t)}),Do=fr(He),Mo=fr(function(n){var t=n.length,t=1<t?n[t-1]:T,t=typeof t=="function"?(n.pop(),t):T;return Je(n,t)}),To=pe(function(n){function t(t){return ht(t,n)}var r=n.length,e=r?n[0]:0,u=this.__wrapped__;return!(1<r||this.__actions__.length)&&u instanceof Un&&Se(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:Qe,args:[t],thisArg:T}),new On(u,this.__chain__).thru(function(n){return r&&!n.length&&n.push(T),
-n})):this.thru(t)}),$o=Tr(function(n,t,r){oi.call(n,r)?++n[r]:st(n,r,1)}),Fo=Gr(Ne),No=Gr(Pe),Po=Tr(function(n,t,r){oi.call(n,r)?n[r].push(t):st(n,r,[t])}),Zo=fr(function(t,r,e){var u=-1,i=typeof r=="function",o=su(t)?Ku(t.length):[];return uo(t,function(t){o[++u]=i?n(r,t,e):Lt(t,r,e)}),o}),qo=Tr(function(n,t,r){st(n,r,t)}),Vo=Tr(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),Ko=fr(function(n,t){if(null==n)return[];var r=t.length;return 1<r&&Oe(n,t[0],t[1])?t=[]:2<r&&Oe(t[0],t[1],t[2])&&(t=[t[0]]),
-Xt(n,wt(t,1),[])}),Go=ki||function(){return $n.Date.now()},Ho=fr(function(n,t,r){var e=1;if(r.length)var u=L(r,de(Ho)),e=32|e;return fe(n,e,t,r,u)}),Jo=fr(function(n,t,r){var e=3;if(r.length)var u=L(r,de(Jo)),e=32|e;return fe(t,e,n,r,u)}),Yo=fr(function(n,t){return dt(n,1,t)}),Qo=fr(function(n,t,r){return dt(n,Su(t)||0,r)});cu.Cache=Fn;var Xo=fr(function(t,r){r=1==r.length&&ff(r[0])?c(r[0],k(ye())):c(wt(r,1),k(ye()));var e=r.length;return fr(function(u){for(var i=-1,o=Ci(u.length,e);++i<o;)u[i]=r[i].call(this,u[i]);
-return n(t,this,u)})}),nf=fr(function(n,t){return fe(n,32,T,t,L(t,de(nf)))}),tf=fr(function(n,t){return fe(n,64,T,t,L(t,de(tf)))}),rf=pe(function(n,t){return fe(n,256,T,T,T,t)}),ef=ee(It),uf=ee(function(n,t){return n>=t}),of=Ut(function(){return arguments}())?Ut:function(n){return yu(n)&&oi.call(n,"callee")&&!bi.call(n,"callee")},ff=Ku.isArray,cf=Vn?k(Vn):Ct,af=zi||Vu,lf=Kn?k(Kn):Dt,sf=Gn?k(Gn):Tt,hf=Hn?k(Hn):Nt,pf=Jn?k(Jn):Pt,_f=Yn?k(Yn):Zt,vf=ee(Kt),gf=ee(function(n,t){return n<=t}),df=$r(function(n,t){
-if(ze(t)||su(t))Cr(t,Wu(t),n);else for(var r in t)oi.call(t,r)&&ot(n,r,t[r])}),yf=$r(function(n,t){Cr(t,Bu(t),n)}),bf=$r(function(n,t,r,e){Cr(t,Bu(t),n,e)}),xf=$r(function(n,t,r,e){Cr(t,Wu(t),n,e)}),jf=pe(ht),wf=fr(function(n,t){n=Qu(n);var r=-1,e=t.length,u=2<e?t[2]:T;for(u&&Oe(t[0],t[1],u)&&(e=1);++r<e;)for(var u=t[r],i=Bu(u),o=-1,f=i.length;++o<f;){var c=i[o],a=n[c];(a===T||lu(a,ei[c])&&!oi.call(n,c))&&(n[c]=u[c])}return n}),mf=fr(function(t){return t.push(T,ae),n(Of,T,t)}),Af=Yr(function(n,t,r){
-null!=t&&typeof t.toString!="function"&&(t=ai.call(t)),n[t]=r},Tu($u)),Ef=Yr(function(n,t,r){null!=t&&typeof t.toString!="function"&&(t=ai.call(t)),oi.call(n,t)?n[t].push(r):n[t]=[r]},ye),kf=fr(Lt),Sf=$r(function(n,t,r){Yt(n,t,r)}),Of=$r(function(n,t,r,e){Yt(n,t,r,e)}),If=pe(function(n,t){var r={};if(null==n)return r;var e=false;t=c(t,function(t){return t=Sr(t,n),e||(e=1<t.length),t}),Cr(n,ve(n),r),e&&(r=_t(r,7,le));for(var u=t.length;u--;)xr(r,t[u]);return r}),Rf=pe(function(n,t){return null==n?{}:nr(n,t);
-}),zf=oe(Wu),Wf=oe(Bu),Bf=qr(function(n,t,r){return t=t.toLowerCase(),n+(r?Cu(t):t)}),Lf=qr(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Uf=qr(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),Cf=Zr("toLowerCase"),Df=qr(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()}),Mf=qr(function(n,t,r){return n+(r?" ":"")+$f(t)}),Tf=qr(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),$f=Zr("toUpperCase"),Ff=fr(function(t,r){try{return n(t,T,r)}catch(n){return pu(n)?n:new Hu(n)}}),Nf=pe(function(n,t){
-return r(t,function(t){t=Me(t),st(n,t,Ho(n[t],n))}),n}),Pf=Hr(),Zf=Hr(true),qf=fr(function(n,t){return function(r){return Lt(r,n,t)}}),Vf=fr(function(n,t){return function(r){return Lt(n,r,t)}}),Kf=Xr(c),Gf=Xr(u),Hf=Xr(h),Jf=re(),Yf=re(true),Qf=Qr(function(n,t){return n+t},0),Xf=ie("ceil"),nc=Qr(function(n,t){return n/t},1),tc=ie("floor"),rc=Qr(function(n,t){return n*t},1),ec=ie("round"),uc=Qr(function(n,t){return n-t},0);return An.after=function(n,t){if(typeof t!="function")throw new ti("Expected a function");
-return n=Eu(n),function(){if(1>--n)return t.apply(this,arguments)}},An.ary=eu,An.assign=df,An.assignIn=yf,An.assignInWith=bf,An.assignWith=xf,An.at=jf,An.before=uu,An.bind=Ho,An.bindAll=Nf,An.bindKey=Jo,An.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return ff(n)?n:[n]},An.chain=Ye,An.chunk=function(n,t,r){if(t=(r?Oe(n,t,r):t===T)?1:Ui(Eu(t),0),r=null==n?0:n.length,!r||1>t)return[];for(var e=0,u=0,i=Ku(Oi(r/t));e<r;)i[u++]=hr(n,e,e+=t);return i},An.compact=function(n){for(var t=-1,r=null==n?0:n.length,e=0,u=[];++t<r;){
-var i=n[t];i&&(u[e++]=i)}return u},An.concat=function(){var n=arguments.length;if(!n)return[];for(var t=Ku(n-1),r=arguments[0];n--;)t[n-1]=arguments[n];return a(ff(r)?Ur(r):[r],wt(t,1))},An.cond=function(t){var r=null==t?0:t.length,e=ye();return t=r?c(t,function(n){if("function"!=typeof n[1])throw new ti("Expected a function");return[e(n[0]),n[1]]}):[],fr(function(e){for(var u=-1;++u<r;){var i=t[u];if(n(i[0],this,e))return n(i[1],this,e)}})},An.conforms=function(n){return vt(_t(n,1))},An.constant=Tu,
-An.countBy=$o,An.create=function(n,t){var r=eo(n);return null==t?r:at(r,t)},An.curry=iu,An.curryRight=ou,An.debounce=fu,An.defaults=wf,An.defaultsDeep=mf,An.defer=Yo,An.delay=Qo,An.difference=wo,An.differenceBy=mo,An.differenceWith=Ao,An.drop=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),hr(n,0>t?0:t,e)):[]},An.dropRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),t=e-t,hr(n,0,0>t?0:t)):[]},An.dropRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true,true):[];
-},An.dropWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true):[]},An.fill=function(n,t,r,e){var u=null==n?0:n.length;if(!u)return[];for(r&&typeof r!="number"&&Oe(n,t,r)&&(r=0,e=u),u=n.length,r=Eu(r),0>r&&(r=-r>u?0:u+r),e=e===T||e>u?u:Eu(e),0>e&&(e+=u),e=r>e?0:ku(e);r<e;)n[r++]=t;return n},An.filter=function(n,t){return(ff(n)?i:jt)(n,ye(t,3))},An.flatMap=function(n,t){return wt(ru(n,t),1)},An.flatMapDeep=function(n,t){return wt(ru(n,t),$)},An.flatMapDepth=function(n,t,r){return r=r===T?1:Eu(r),
-wt(ru(n,t),r)},An.flatten=Ze,An.flattenDeep=function(n){return(null==n?0:n.length)?wt(n,$):[]},An.flattenDepth=function(n,t){return null!=n&&n.length?(t=t===T?1:Eu(t),wt(n,t)):[]},An.flip=function(n){return fe(n,512)},An.flow=Pf,An.flowRight=Zf,An.fromPairs=function(n){for(var t=-1,r=null==n?0:n.length,e={};++t<r;){var u=n[t];e[u[0]]=u[1]}return e},An.functions=function(n){return null==n?[]:Et(n,Wu(n))},An.functionsIn=function(n){return null==n?[]:Et(n,Bu(n))},An.groupBy=Po,An.initial=function(n){
-return(null==n?0:n.length)?hr(n,0,-1):[]},An.intersection=Eo,An.intersectionBy=ko,An.intersectionWith=So,An.invert=Af,An.invertBy=Ef,An.invokeMap=Zo,An.iteratee=Fu,An.keyBy=qo,An.keys=Wu,An.keysIn=Bu,An.map=ru,An.mapKeys=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,t(n,e,u),n)}),r},An.mapValues=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,e,t(n,e,u))}),r},An.matches=function(n){return Ht(_t(n,1))},An.matchesProperty=function(n,t){return Jt(n,_t(t,1))},An.memoize=cu,
-An.merge=Sf,An.mergeWith=Of,An.method=qf,An.methodOf=Vf,An.mixin=Nu,An.negate=au,An.nthArg=function(n){return n=Eu(n),fr(function(t){return Qt(t,n)})},An.omit=If,An.omitBy=function(n,t){return Lu(n,au(ye(t)))},An.once=function(n){return uu(2,n)},An.orderBy=function(n,t,r,e){return null==n?[]:(ff(t)||(t=null==t?[]:[t]),r=e?T:r,ff(r)||(r=null==r?[]:[r]),Xt(n,t,r))},An.over=Kf,An.overArgs=Xo,An.overEvery=Gf,An.overSome=Hf,An.partial=nf,An.partialRight=tf,An.partition=Vo,An.pick=Rf,An.pickBy=Lu,An.property=Zu,
-An.propertyOf=function(n){return function(t){return null==n?T:kt(n,t)}},An.pull=Oo,An.pullAll=Ke,An.pullAllBy=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,ye(r,2)):n},An.pullAllWith=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,T,r):n},An.pullAt=Io,An.range=Jf,An.rangeRight=Yf,An.rearg=rf,An.reject=function(n,t){return(ff(n)?i:jt)(n,au(ye(t,3)))},An.remove=function(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],i=n.length;for(t=ye(t,3);++e<i;){var o=n[e];t(o,e,n)&&(r.push(o),
-u.push(e))}return ur(n,u),r},An.rest=function(n,t){if(typeof n!="function")throw new ti("Expected a function");return t=t===T?t:Eu(t),fr(n,t)},An.reverse=Ge,An.sampleSize=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:Eu(t),(ff(n)?et:ar)(n,t)},An.set=function(n,t,r){return null==n?n:lr(n,t,r)},An.setWith=function(n,t,r,e){return e=typeof e=="function"?e:T,null==n?n:lr(n,t,r,e)},An.shuffle=function(n){return(ff(n)?ut:sr)(n)},An.slice=function(n,t,r){var e=null==n?0:n.length;return e?(r&&typeof r!="number"&&Oe(n,t,r)?(t=0,
-r=e):(t=null==t?0:Eu(t),r=r===T?e:Eu(r)),hr(n,t,r)):[]},An.sortBy=Ko,An.sortedUniq=function(n){return n&&n.length?gr(n):[]},An.sortedUniqBy=function(n,t){return n&&n.length?gr(n,ye(t,2)):[]},An.split=function(n,t,r){return r&&typeof r!="number"&&Oe(n,t,r)&&(t=r=T),r=r===T?4294967295:r>>>0,r?(n=Iu(n))&&(typeof t=="string"||null!=t&&!hf(t))&&(t=yr(t),!t&&Rn.test(n))?Or(M(n),0,r):n.split(t,r):[]},An.spread=function(t,r){if(typeof t!="function")throw new ti("Expected a function");return r=null==r?0:Ui(Eu(r),0),
-fr(function(e){var u=e[r];return e=Or(e,0,r),u&&a(e,u),n(t,this,e)})},An.tail=function(n){var t=null==n?0:n.length;return t?hr(n,1,t):[]},An.take=function(n,t,r){return n&&n.length?(t=r||t===T?1:Eu(t),hr(n,0,0>t?0:t)):[]},An.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),t=e-t,hr(n,0>t?0:t,e)):[]},An.takeRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),false,true):[]},An.takeWhile=function(n,t){return n&&n.length?jr(n,ye(t,3)):[]},An.tap=function(n,t){return t(n),
-n},An.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new ti("Expected a function");return du(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),fu(n,t,{leading:e,maxWait:t,trailing:u})},An.thru=Qe,An.toArray=mu,An.toPairs=zf,An.toPairsIn=Wf,An.toPath=function(n){return ff(n)?c(n,Me):wu(n)?[n]:Ur(jo(Iu(n)))},An.toPlainObject=Ou,An.transform=function(n,t,e){var u=ff(n),i=u||af(n)||_f(n);if(t=ye(t,4),null==e){var o=n&&n.constructor;e=i?u?new o:[]:du(n)&&_u(o)?eo(di(n)):{};
-}return(i?r:mt)(n,function(n,r,u){return t(e,n,r,u)}),e},An.unary=function(n){return eu(n,1)},An.union=Ro,An.unionBy=zo,An.unionWith=Wo,An.uniq=function(n){return n&&n.length?br(n):[]},An.uniqBy=function(n,t){return n&&n.length?br(n,ye(t,2)):[]},An.uniqWith=function(n,t){return t=typeof t=="function"?t:T,n&&n.length?br(n,T,t):[]},An.unset=function(n,t){return null==n||xr(n,t)},An.unzip=He,An.unzipWith=Je,An.update=function(n,t,r){return null==n?n:lr(n,t,kr(r)(kt(n,t)),void 0)},An.updateWith=function(n,t,r,e){
-return e=typeof e=="function"?e:T,null!=n&&(n=lr(n,t,kr(r)(kt(n,t)),e)),n},An.values=Uu,An.valuesIn=function(n){return null==n?[]:S(n,Bu(n))},An.without=Bo,An.words=Mu,An.wrap=function(n,t){return nf(kr(t),n)},An.xor=Lo,An.xorBy=Uo,An.xorWith=Co,An.zip=Do,An.zipObject=function(n,t){return Ar(n||[],t||[],ot)},An.zipObjectDeep=function(n,t){return Ar(n||[],t||[],lr)},An.zipWith=Mo,An.entries=zf,An.entriesIn=Wf,An.extend=yf,An.extendWith=bf,Nu(An,An),An.add=Qf,An.attempt=Ff,An.camelCase=Bf,An.capitalize=Cu,
-An.ceil=Xf,An.clamp=function(n,t,r){return r===T&&(r=t,t=T),r!==T&&(r=Su(r),r=r===r?r:0),t!==T&&(t=Su(t),t=t===t?t:0),pt(Su(n),t,r)},An.clone=function(n){return _t(n,4)},An.cloneDeep=function(n){return _t(n,5)},An.cloneDeepWith=function(n,t){return t=typeof t=="function"?t:T,_t(n,5,t)},An.cloneWith=function(n,t){return t=typeof t=="function"?t:T,_t(n,4,t)},An.conformsTo=function(n,t){return null==t||gt(n,t,Wu(t))},An.deburr=Du,An.defaultTo=function(n,t){return null==n||n!==n?t:n},An.divide=nc,An.endsWith=function(n,t,r){
-n=Iu(n),t=yr(t);var e=n.length,e=r=r===T?e:pt(Eu(r),0,e);return r-=t.length,0<=r&&n.slice(r,e)==t},An.eq=lu,An.escape=function(n){return(n=Iu(n))&&H.test(n)?n.replace(K,nt):n},An.escapeRegExp=function(n){return(n=Iu(n))&&en.test(n)?n.replace(rn,"\\$&"):n},An.every=function(n,t,r){var e=ff(n)?u:bt;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.find=Fo,An.findIndex=Ne,An.findKey=function(n,t){return p(n,ye(t,3),mt)},An.findLast=No,An.findLastIndex=Pe,An.findLastKey=function(n,t){return p(n,ye(t,3),At);
-},An.floor=tc,An.forEach=nu,An.forEachRight=tu,An.forIn=function(n,t){return null==n?n:oo(n,ye(t,3),Bu)},An.forInRight=function(n,t){return null==n?n:fo(n,ye(t,3),Bu)},An.forOwn=function(n,t){return n&&mt(n,ye(t,3))},An.forOwnRight=function(n,t){return n&&At(n,ye(t,3))},An.get=Ru,An.gt=ef,An.gte=uf,An.has=function(n,t){return null!=n&&we(n,t,Rt)},An.hasIn=zu,An.head=qe,An.identity=$u,An.includes=function(n,t,r,e){return n=su(n)?n:Uu(n),r=r&&!e?Eu(r):0,e=n.length,0>r&&(r=Ui(e+r,0)),ju(n)?r<=e&&-1<n.indexOf(t,r):!!e&&-1<v(n,t,r);
-},An.indexOf=function(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Eu(r),0>r&&(r=Ui(e+r,0)),v(n,t,r)):-1},An.inRange=function(n,t,r){return t=Au(t),r===T?(r=t,t=0):r=Au(r),n=Su(n),n>=Ci(t,r)&&n<Ui(t,r)},An.invoke=kf,An.isArguments=of,An.isArray=ff,An.isArrayBuffer=cf,An.isArrayLike=su,An.isArrayLikeObject=hu,An.isBoolean=function(n){return true===n||false===n||yu(n)&&"[object Boolean]"==Ot(n)},An.isBuffer=af,An.isDate=lf,An.isElement=function(n){return yu(n)&&1===n.nodeType&&!xu(n)},An.isEmpty=function(n){
-if(null==n)return true;if(su(n)&&(ff(n)||typeof n=="string"||typeof n.splice=="function"||af(n)||_f(n)||of(n)))return!n.length;var t=vo(n);if("[object Map]"==t||"[object Set]"==t)return!n.size;if(ze(n))return!Vt(n).length;for(var r in n)if(oi.call(n,r))return false;return true},An.isEqual=function(n,t){return Mt(n,t)},An.isEqualWith=function(n,t,r){var e=(r=typeof r=="function"?r:T)?r(n,t):T;return e===T?Mt(n,t,T,r):!!e},An.isError=pu,An.isFinite=function(n){return typeof n=="number"&&Wi(n)},An.isFunction=_u,
-An.isInteger=vu,An.isLength=gu,An.isMap=sf,An.isMatch=function(n,t){return n===t||$t(n,t,xe(t))},An.isMatchWith=function(n,t,r){return r=typeof r=="function"?r:T,$t(n,t,xe(t),r)},An.isNaN=function(n){return bu(n)&&n!=+n},An.isNative=function(n){if(go(n))throw new Hu("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return Ft(n)},An.isNil=function(n){return null==n},An.isNull=function(n){return null===n},An.isNumber=bu,An.isObject=du,An.isObjectLike=yu,An.isPlainObject=xu,An.isRegExp=hf,
-An.isSafeInteger=function(n){return vu(n)&&-9007199254740991<=n&&9007199254740991>=n},An.isSet=pf,An.isString=ju,An.isSymbol=wu,An.isTypedArray=_f,An.isUndefined=function(n){return n===T},An.isWeakMap=function(n){return yu(n)&&"[object WeakMap]"==vo(n)},An.isWeakSet=function(n){return yu(n)&&"[object WeakSet]"==Ot(n)},An.join=function(n,t){return null==n?"":Bi.call(n,t)},An.kebabCase=Lf,An.last=Ve,An.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;if(r!==T&&(u=Eu(r),u=0>u?Ui(e+u,0):Ci(u,e-1)),
-t===t){for(r=u+1;r--&&n[r]!==t;);n=r}else n=_(n,d,u,true);return n},An.lowerCase=Uf,An.lowerFirst=Cf,An.lt=vf,An.lte=gf,An.max=function(n){return n&&n.length?xt(n,$u,It):T},An.maxBy=function(n,t){return n&&n.length?xt(n,ye(t,2),It):T},An.mean=function(n){return y(n,$u)},An.meanBy=function(n,t){return y(n,ye(t,2))},An.min=function(n){return n&&n.length?xt(n,$u,Kt):T},An.minBy=function(n,t){return n&&n.length?xt(n,ye(t,2),Kt):T},An.stubArray=qu,An.stubFalse=Vu,An.stubObject=function(){return{}},An.stubString=function(){
-return""},An.stubTrue=function(){return true},An.multiply=rc,An.nth=function(n,t){return n&&n.length?Qt(n,Eu(t)):T},An.noConflict=function(){return $n._===this&&($n._=si),this},An.noop=Pu,An.now=Go,An.pad=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return!t||e>=t?n:(t=(t-e)/2,ne(Ii(t),r)+n+ne(Oi(t),r))},An.padEnd=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return t&&e<t?n+ne(t-e,r):n},An.padStart=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return t&&e<t?ne(t-e,r)+n:n},An.parseInt=function(n,t,r){
-return r||null==t?t=0:t&&(t=+t),Mi(Iu(n).replace(on,""),t||0)},An.random=function(n,t,r){if(r&&typeof r!="boolean"&&Oe(n,t,r)&&(t=r=T),r===T&&(typeof t=="boolean"?(r=t,t=T):typeof n=="boolean"&&(r=n,n=T)),n===T&&t===T?(n=0,t=1):(n=Au(n),t===T?(t=n,n=0):t=Au(t)),n>t){var e=n;n=t,t=e}return r||n%1||t%1?(r=Ti(),Ci(n+r*(t-n+Cn("1e-"+((r+"").length-1))),t)):ir(n,t)},An.reduce=function(n,t,r){var e=ff(n)?l:j,u=3>arguments.length;return e(n,ye(t,4),r,u,uo)},An.reduceRight=function(n,t,r){var e=ff(n)?s:j,u=3>arguments.length;
-return e(n,ye(t,4),r,u,io)},An.repeat=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:Eu(t),or(Iu(n),t)},An.replace=function(){var n=arguments,t=Iu(n[0]);return 3>n.length?t:t.replace(n[1],n[2])},An.result=function(n,t,r){t=Sr(t,n);var e=-1,u=t.length;for(u||(u=1,n=T);++e<u;){var i=null==n?T:n[Me(t[e])];i===T&&(e=u,i=r),n=_u(i)?i.call(n):i}return n},An.round=ec,An.runInContext=x,An.sample=function(n){return(ff(n)?Qn:cr)(n)},An.size=function(n){if(null==n)return 0;if(su(n))return ju(n)?D(n):n.length;
-var t=vo(n);return"[object Map]"==t||"[object Set]"==t?n.size:Vt(n).length},An.snakeCase=Df,An.some=function(n,t,r){var e=ff(n)?h:pr;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.sortedIndex=function(n,t){return _r(n,t)},An.sortedIndexBy=function(n,t,r){return vr(n,t,ye(r,2))},An.sortedIndexOf=function(n,t){var r=null==n?0:n.length;if(r){var e=_r(n,t);if(e<r&&lu(n[e],t))return e}return-1},An.sortedLastIndex=function(n,t){return _r(n,t,true)},An.sortedLastIndexBy=function(n,t,r){return vr(n,t,ye(r,2),true);
-},An.sortedLastIndexOf=function(n,t){if(null==n?0:n.length){var r=_r(n,t,true)-1;if(lu(n[r],t))return r}return-1},An.startCase=Mf,An.startsWith=function(n,t,r){return n=Iu(n),r=null==r?0:pt(Eu(r),0,n.length),t=yr(t),n.slice(r,r+t.length)==t},An.subtract=uc,An.sum=function(n){return n&&n.length?m(n,$u):0},An.sumBy=function(n,t){return n&&n.length?m(n,ye(t,2)):0},An.template=function(n,t,r){var e=An.templateSettings;r&&Oe(n,t,r)&&(t=T),n=Iu(n),t=bf({},t,e,ce),r=bf({},t.imports,e.imports,ce);var u,i,o=Wu(r),f=S(r,o),c=0;
-r=t.interpolate||jn;var a="__p+='";r=Xu((t.escape||jn).source+"|"+r.source+"|"+(r===Q?pn:jn).source+"|"+(t.evaluate||jn).source+"|$","g");var l=oi.call(t,"sourceURL")?"//# sourceURL="+(t.sourceURL+"").replace(/[\r\n]/g," ")+"\n":"";if(n.replace(r,function(t,r,e,o,f,l){return e||(e=o),a+=n.slice(c,l).replace(wn,z),r&&(u=true,a+="'+__e("+r+")+'"),f&&(i=true,a+="';"+f+";\n__p+='"),e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),c=l+t.length,t}),a+="';",(t=oi.call(t,"variable")&&t.variable)||(a="with(obj){"+a+"}"),
-a=(i?a.replace(P,""):a).replace(Z,"$1").replace(q,"$1;"),a="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(u?",__e=_.escape":"")+(i?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+a+"return __p}",t=Ff(function(){return Ju(o,l+"return "+a).apply(T,f)}),t.source=a,pu(t))throw t;return t},An.times=function(n,t){if(n=Eu(n),1>n||9007199254740991<n)return[];var r=4294967295,e=Ci(n,4294967295);for(t=ye(t),n-=4294967295,e=A(e,t);++r<n;)t(r);return e},An.toFinite=Au,
-An.toInteger=Eu,An.toLength=ku,An.toLower=function(n){return Iu(n).toLowerCase()},An.toNumber=Su,An.toSafeInteger=function(n){return n?pt(Eu(n),-9007199254740991,9007199254740991):0===n?n:0},An.toString=Iu,An.toUpper=function(n){return Iu(n).toUpperCase()},An.trim=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(un,""):n&&(t=yr(t))?(n=M(n),r=M(t),t=I(n,r),r=R(n,r)+1,Or(n,t,r).join("")):n},An.trimEnd=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(fn,""):n&&(t=yr(t))?(n=M(n),t=R(n,M(t))+1,
-Or(n,0,t).join("")):n},An.trimStart=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(on,""):n&&(t=yr(t))?(n=M(n),t=I(n,M(t)),Or(n,t).join("")):n},An.truncate=function(n,t){var r=30,e="...";if(du(t))var u="separator"in t?t.separator:u,r="length"in t?Eu(t.length):r,e="omission"in t?yr(t.omission):e;n=Iu(n);var i=n.length;if(Rn.test(n))var o=M(n),i=o.length;if(r>=i)return n;if(i=r-D(e),1>i)return e;if(r=o?Or(o,0,i).join(""):n.slice(0,i),u===T)return r+e;if(o&&(i+=r.length-i),hf(u)){if(n.slice(i).search(u)){
-var f=r;for(u.global||(u=Xu(u.source,Iu(_n.exec(u))+"g")),u.lastIndex=0;o=u.exec(f);)var c=o.index;r=r.slice(0,c===T?i:c)}}else n.indexOf(yr(u),i)!=i&&(u=r.lastIndexOf(u),-1<u&&(r=r.slice(0,u)));return r+e},An.unescape=function(n){return(n=Iu(n))&&G.test(n)?n.replace(V,tt):n},An.uniqueId=function(n){var t=++fi;return Iu(n)+t},An.upperCase=Tf,An.upperFirst=$f,An.each=nu,An.eachRight=tu,An.first=qe,Nu(An,function(){var n={};return mt(An,function(t,r){oi.call(An.prototype,r)||(n[r]=t)}),n}(),{chain:false
-}),An.VERSION="4.17.15",r("bind bindKey curry curryRight partial partialRight".split(" "),function(n){An[n].placeholder=An}),r(["drop","take"],function(n,t){Un.prototype[n]=function(r){r=r===T?1:Ui(Eu(r),0);var e=this.__filtered__&&!t?new Un(this):this.clone();return e.__filtered__?e.__takeCount__=Ci(r,e.__takeCount__):e.__views__.push({size:Ci(r,4294967295),type:n+(0>e.__dir__?"Right":"")}),e},Un.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),r(["filter","map","takeWhile"],function(n,t){
-var r=t+1,e=1==r||3==r;Un.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:ye(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),r(["head","last"],function(n,t){var r="take"+(t?"Right":"");Un.prototype[n]=function(){return this[r](1).value()[0]}}),r(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");Un.prototype[n]=function(){return this.__filtered__?new Un(this):this[r](1)}}),Un.prototype.compact=function(){return this.filter($u)},Un.prototype.find=function(n){
-return this.filter(n).head()},Un.prototype.findLast=function(n){return this.reverse().find(n)},Un.prototype.invokeMap=fr(function(n,t){return typeof n=="function"?new Un(this):this.map(function(r){return Lt(r,n,t)})}),Un.prototype.reject=function(n){return this.filter(au(ye(n)))},Un.prototype.slice=function(n,t){n=Eu(n);var r=this;return r.__filtered__&&(0<n||0>t)?new Un(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==T&&(t=Eu(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},Un.prototype.takeRightWhile=function(n){
-return this.reverse().takeWhile(n).reverse()},Un.prototype.toArray=function(){return this.take(4294967295)},mt(Un.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=An[e?"take"+("last"==t?"Right":""):t],i=e||/^find/.test(t);u&&(An.prototype[t]=function(){function t(n){return n=u.apply(An,a([n],f)),e&&h?n[0]:n}var o=this.__wrapped__,f=e?[1]:arguments,c=o instanceof Un,l=f[0],s=c||ff(o);s&&r&&typeof l=="function"&&1!=l.length&&(c=s=false);var h=this.__chain__,p=!!this.__actions__.length,l=i&&!h,c=c&&!p;
-return!i&&s?(o=c?o:new Un(this),o=n.apply(o,f),o.__actions__.push({func:Qe,args:[t],thisArg:T}),new On(o,h)):l&&c?n.apply(this,f):(o=this.thru(t),l?e?o.value()[0]:o.value():o)})}),r("pop push shift sort splice unshift".split(" "),function(n){var t=ri[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);An.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(ff(u)?u:[],n)}return this[r](function(r){return t.apply(ff(r)?r:[],n)});
-}}),mt(Un.prototype,function(n,t){var r=An[t];if(r){var e=r.name+"";oi.call(Gi,e)||(Gi[e]=[]),Gi[e].push({name:t,func:r})}}),Gi[Jr(T,2).name]=[{name:"wrapper",func:T}],Un.prototype.clone=function(){var n=new Un(this.__wrapped__);return n.__actions__=Ur(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Ur(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Ur(this.__views__),n},Un.prototype.reverse=function(){if(this.__filtered__){var n=new Un(this);
-n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Un.prototype.value=function(){var n,t=this.__wrapped__.value(),r=this.__dir__,e=ff(t),u=0>r,i=e?t.length:0;n=i;for(var o=this.__views__,f=0,c=-1,a=o.length;++c<a;){var l=o[c],s=l.size;switch(l.type){case"drop":f+=s;break;case"dropRight":n-=s;break;case"take":n=Ci(n,f+s);break;case"takeRight":f=Ui(f,n-s)}}if(n={start:f,end:n},o=n.start,f=n.end,n=f-o,o=u?f:o-1,f=this.__iteratees__,c=f.length,a=0,l=Ci(n,this.__takeCount__),!e||!u&&i==n&&l==n)return wr(t,this.__actions__);
-e=[];n:for(;n--&&a<l;){for(o+=r,u=-1,i=t[o];++u<c;){var h=f[u],s=h.type,h=(0,h.iteratee)(i);if(2==s)i=h;else if(!h){if(1==s)continue n;break n}}e[a++]=i}return e},An.prototype.at=To,An.prototype.chain=function(){return Ye(this)},An.prototype.commit=function(){return new On(this.value(),this.__chain__)},An.prototype.next=function(){this.__values__===T&&(this.__values__=mu(this.value()));var n=this.__index__>=this.__values__.length;return{done:n,value:n?T:this.__values__[this.__index__++]}},An.prototype.plant=function(n){
-for(var t,r=this;r instanceof En;){var e=Fe(r);e.__index__=0,e.__values__=T,t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},An.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Un?(this.__actions__.length&&(n=new Un(this)),n=n.reverse(),n.__actions__.push({func:Qe,args:[Ge],thisArg:T}),new On(n,this.__chain__)):this.thru(Ge)},An.prototype.toJSON=An.prototype.valueOf=An.prototype.value=function(){return wr(this.__wrapped__,this.__actions__)},An.prototype.first=An.prototype.head,
-wi&&(An.prototype[wi]=Xe),An}();typeof define=="function"&&typeof define.amd=="object"&&define.amd?($n._=rt, define(function(){return rt})):Nn?((Nn.exports=rt)._=rt,Fn._=rt):$n._=rt}).call(this); \ No newline at end of file
diff --git a/assets/node_modules/lodash/lowerCase.js b/assets/node_modules/lodash/lowerCase.js
deleted file mode 100644
index 66c1f49..0000000
--- a/assets/node_modules/lodash/lowerCase.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var createCompounder = require('./_createCompounder');
-
-/**
- * Converts `string`, as space separated words, to lower case.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the lower cased string.
- * @example
- *
- * _.lowerCase('--Foo-Bar--');
- * // => 'foo bar'
- *
- * _.lowerCase('fooBar');
- * // => 'foo bar'
- *
- * _.lowerCase('__FOO_BAR__');
- * // => 'foo bar'
- */
-var lowerCase = createCompounder(function(result, word, index) {
- return result + (index ? ' ' : '') + word.toLowerCase();
-});
-
-module.exports = lowerCase;
diff --git a/assets/node_modules/lodash/lowerFirst.js b/assets/node_modules/lodash/lowerFirst.js
deleted file mode 100644
index c08f082..0000000
--- a/assets/node_modules/lodash/lowerFirst.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var createCaseFirst = require('./_createCaseFirst');
-
-/**
- * Converts the first character of `string` to lower case.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.lowerFirst('Fred');
- * // => 'fred'
- *
- * _.lowerFirst('FRED');
- * // => 'fRED'
- */
-var lowerFirst = createCaseFirst('toLowerCase');
-
-module.exports = lowerFirst;
diff --git a/assets/node_modules/lodash/lt.js b/assets/node_modules/lodash/lt.js
deleted file mode 100644
index 813866e..0000000
--- a/assets/node_modules/lodash/lt.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var baseLt = require('./_baseLt'),
- createRelationalOperation = require('./_createRelationalOperation');
-
-/**
- * Checks if `value` is less than `other`.
- *
- * @static
- * @memberOf _
- * @since 3.9.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is less than `other`,
- * else `false`.
- * @see _.gt
- * @example
- *
- * _.lt(1, 3);
- * // => true
- *
- * _.lt(3, 3);
- * // => false
- *
- * _.lt(3, 1);
- * // => false
- */
-var lt = createRelationalOperation(baseLt);
-
-module.exports = lt;
diff --git a/assets/node_modules/lodash/lte.js b/assets/node_modules/lodash/lte.js
deleted file mode 100644
index 382f661..0000000
--- a/assets/node_modules/lodash/lte.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var createRelationalOperation = require('./_createRelationalOperation');
-
-/**
- * Checks if `value` is less than or equal to `other`.
- *
- * @static
- * @memberOf _
- * @since 3.9.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is less than or equal to
- * `other`, else `false`.
- * @see _.gte
- * @example
- *
- * _.lte(1, 3);
- * // => true
- *
- * _.lte(3, 3);
- * // => true
- *
- * _.lte(3, 1);
- * // => false
- */
-var lte = createRelationalOperation(function(value, other) {
- return value <= other;
-});
-
-module.exports = lte;
diff --git a/assets/node_modules/lodash/map.js b/assets/node_modules/lodash/map.js
deleted file mode 100644
index 22efee7..0000000
--- a/assets/node_modules/lodash/map.js
+++ /dev/null
@@ -1,53 +0,0 @@
-var arrayMap = require('./_arrayMap'),
- baseIteratee = require('./_baseIteratee'),
- baseMap = require('./_baseMap'),
- isArray = require('./isArray');
-
-/**
- * Creates an array of values by running each element in `collection` thru
- * `iteratee`. The iteratee is invoked with three arguments:
- * (value, index|key, collection).
- *
- * Many lodash methods are guarded to work as iteratees for methods like
- * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
- *
- * The guarded methods are:
- * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
- * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
- * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
- * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- * @example
- *
- * function square(n) {
- * return n * n;
- * }
- *
- * _.map([4, 8], square);
- * // => [16, 64]
- *
- * _.map({ 'a': 4, 'b': 8 }, square);
- * // => [16, 64] (iteration order is not guaranteed)
- *
- * var users = [
- * { 'user': 'barney' },
- * { 'user': 'fred' }
- * ];
- *
- * // The `_.property` iteratee shorthand.
- * _.map(users, 'user');
- * // => ['barney', 'fred']
- */
-function map(collection, iteratee) {
- var func = isArray(collection) ? arrayMap : baseMap;
- return func(collection, baseIteratee(iteratee, 3));
-}
-
-module.exports = map;
diff --git a/assets/node_modules/lodash/mapKeys.js b/assets/node_modules/lodash/mapKeys.js
deleted file mode 100644
index 3b68797..0000000
--- a/assets/node_modules/lodash/mapKeys.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var baseAssignValue = require('./_baseAssignValue'),
- baseForOwn = require('./_baseForOwn'),
- baseIteratee = require('./_baseIteratee');
-
-/**
- * The opposite of `_.mapValues`; this method creates an object with the
- * same values as `object` and keys generated by running each own enumerable
- * string keyed property of `object` thru `iteratee`. The iteratee is invoked
- * with three arguments: (value, key, object).
- *
- * @static
- * @memberOf _
- * @since 3.8.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns the new mapped object.
- * @see _.mapValues
- * @example
- *
- * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
- * return key + value;
- * });
- * // => { 'a1': 1, 'b2': 2 }
- */
-function mapKeys(object, iteratee) {
- var result = {};
- iteratee = baseIteratee(iteratee, 3);
-
- baseForOwn(object, function(value, key, object) {
- baseAssignValue(result, iteratee(value, key, object), value);
- });
- return result;
-}
-
-module.exports = mapKeys;
diff --git a/assets/node_modules/lodash/mapValues.js b/assets/node_modules/lodash/mapValues.js
deleted file mode 100644
index 4ec0825..0000000
--- a/assets/node_modules/lodash/mapValues.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var baseAssignValue = require('./_baseAssignValue'),
- baseForOwn = require('./_baseForOwn'),
- baseIteratee = require('./_baseIteratee');
-
-/**
- * Creates an object with the same keys as `object` and values generated
- * by running each own enumerable string keyed property of `object` thru
- * `iteratee`. The iteratee is invoked with three arguments:
- * (value, key, object).
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns the new mapped object.
- * @see _.mapKeys
- * @example
- *
- * var users = {
- * 'fred': { 'user': 'fred', 'age': 40 },
- * 'pebbles': { 'user': 'pebbles', 'age': 1 }
- * };
- *
- * _.mapValues(users, function(o) { return o.age; });
- * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
- *
- * // The `_.property` iteratee shorthand.
- * _.mapValues(users, 'age');
- * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
- */
-function mapValues(object, iteratee) {
- var result = {};
- iteratee = baseIteratee(iteratee, 3);
-
- baseForOwn(object, function(value, key, object) {
- baseAssignValue(result, key, iteratee(value, key, object));
- });
- return result;
-}
-
-module.exports = mapValues;
diff --git a/assets/node_modules/lodash/matches.js b/assets/node_modules/lodash/matches.js
deleted file mode 100644
index 11145db..0000000
--- a/assets/node_modules/lodash/matches.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var baseClone = require('./_baseClone'),
- baseMatches = require('./_baseMatches');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1;
-
-/**
- * Creates a function that performs a partial deep comparison between a given
- * object and `source`, returning `true` if the given object has equivalent
- * property values, else `false`.
- *
- * **Note:** The created function is equivalent to `_.isMatch` with `source`
- * partially applied.
- *
- * Partial comparisons will match empty array and empty object `source`
- * values against any array or object value, respectively. See `_.isEqual`
- * for a list of supported value comparisons.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Util
- * @param {Object} source The object of property values to match.
- * @returns {Function} Returns the new spec function.
- * @example
- *
- * var objects = [
- * { 'a': 1, 'b': 2, 'c': 3 },
- * { 'a': 4, 'b': 5, 'c': 6 }
- * ];
- *
- * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
- * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
- */
-function matches(source) {
- return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
-}
-
-module.exports = matches;
diff --git a/assets/node_modules/lodash/matchesProperty.js b/assets/node_modules/lodash/matchesProperty.js
deleted file mode 100644
index cc062ac..0000000
--- a/assets/node_modules/lodash/matchesProperty.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var baseClone = require('./_baseClone'),
- baseMatchesProperty = require('./_baseMatchesProperty');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1;
-
-/**
- * Creates a function that performs a partial deep comparison between the
- * value at `path` of a given object to `srcValue`, returning `true` if the
- * object value is equivalent, else `false`.
- *
- * **Note:** Partial comparisons will match empty array and empty object
- * `srcValue` values against any array or object value, respectively. See
- * `_.isEqual` for a list of supported value comparisons.
- *
- * @static
- * @memberOf _
- * @since 3.2.0
- * @category Util
- * @param {Array|string} path The path of the property to get.
- * @param {*} srcValue The value to match.
- * @returns {Function} Returns the new spec function.
- * @example
- *
- * var objects = [
- * { 'a': 1, 'b': 2, 'c': 3 },
- * { 'a': 4, 'b': 5, 'c': 6 }
- * ];
- *
- * _.find(objects, _.matchesProperty('a', 4));
- * // => { 'a': 4, 'b': 5, 'c': 6 }
- */
-function matchesProperty(path, srcValue) {
- return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
-}
-
-module.exports = matchesProperty;
diff --git a/assets/node_modules/lodash/math.js b/assets/node_modules/lodash/math.js
deleted file mode 100644
index 5966887..0000000
--- a/assets/node_modules/lodash/math.js
+++ /dev/null
@@ -1,17 +0,0 @@
-module.exports = {
- 'add': require('./add'),
- 'ceil': require('./ceil'),
- 'divide': require('./divide'),
- 'floor': require('./floor'),
- 'max': require('./max'),
- 'maxBy': require('./maxBy'),
- 'mean': require('./mean'),
- 'meanBy': require('./meanBy'),
- 'min': require('./min'),
- 'minBy': require('./minBy'),
- 'multiply': require('./multiply'),
- 'round': require('./round'),
- 'subtract': require('./subtract'),
- 'sum': require('./sum'),
- 'sumBy': require('./sumBy')
-};
diff --git a/assets/node_modules/lodash/max.js b/assets/node_modules/lodash/max.js
deleted file mode 100644
index 142ad8c..0000000
--- a/assets/node_modules/lodash/max.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var baseExtremum = require('./_baseExtremum'),
- baseGt = require('./_baseGt'),
- identity = require('./identity');
-
-/**
- * Computes the maximum value of `array`. If `array` is empty or falsey,
- * `undefined` is returned.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {*} Returns the maximum value.
- * @example
- *
- * _.max([4, 2, 8, 6]);
- * // => 8
- *
- * _.max([]);
- * // => undefined
- */
-function max(array) {
- return (array && array.length)
- ? baseExtremum(array, identity, baseGt)
- : undefined;
-}
-
-module.exports = max;
diff --git a/assets/node_modules/lodash/maxBy.js b/assets/node_modules/lodash/maxBy.js
deleted file mode 100644
index 2eba9c0..0000000
--- a/assets/node_modules/lodash/maxBy.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var baseExtremum = require('./_baseExtremum'),
- baseGt = require('./_baseGt'),
- baseIteratee = require('./_baseIteratee');
-
-/**
- * This method is like `_.max` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the criterion by which
- * the value is ranked. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {*} Returns the maximum value.
- * @example
- *
- * var objects = [{ 'n': 1 }, { 'n': 2 }];
- *
- * _.maxBy(objects, function(o) { return o.n; });
- * // => { 'n': 2 }
- *
- * // The `_.property` iteratee shorthand.
- * _.maxBy(objects, 'n');
- * // => { 'n': 2 }
- */
-function maxBy(array, iteratee) {
- return (array && array.length)
- ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)
- : undefined;
-}
-
-module.exports = maxBy;
diff --git a/assets/node_modules/lodash/mean.js b/assets/node_modules/lodash/mean.js
deleted file mode 100644
index e3ffff6..0000000
--- a/assets/node_modules/lodash/mean.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var baseMean = require('./_baseMean'),
- identity = require('./identity');
-
-/**
- * Computes the mean of the values in `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {number} Returns the mean.
- * @example
- *
- * _.mean([4, 2, 8, 6]);
- * // => 5
- */
-function mean(array) {
- return baseMean(array, identity);
-}
-
-module.exports = mean;
diff --git a/assets/node_modules/lodash/meanBy.js b/assets/node_modules/lodash/meanBy.js
deleted file mode 100644
index b031671..0000000
--- a/assets/node_modules/lodash/meanBy.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var baseIteratee = require('./_baseIteratee'),
- baseMean = require('./_baseMean');
-
-/**
- * This method is like `_.mean` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the value to be averaged.
- * The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.7.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {number} Returns the mean.
- * @example
- *
- * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
- *
- * _.meanBy(objects, function(o) { return o.n; });
- * // => 5
- *
- * // The `_.property` iteratee shorthand.
- * _.meanBy(objects, 'n');
- * // => 5
- */
-function meanBy(array, iteratee) {
- return baseMean(array, baseIteratee(iteratee, 2));
-}
-
-module.exports = meanBy;
diff --git a/assets/node_modules/lodash/memoize.js b/assets/node_modules/lodash/memoize.js
deleted file mode 100644
index d6035af..0000000
--- a/assets/node_modules/lodash/memoize.js
+++ /dev/null
@@ -1,73 +0,0 @@
-var MapCache = require('./_MapCache');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a function that memoizes the result of `func`. If `resolver` is
- * provided, it determines the cache key for storing the result based on the
- * arguments provided to the memoized function. By default, the first argument
- * provided to the memoized function is used as the map cache key. The `func`
- * is invoked with the `this` binding of the memoized function.
- *
- * **Note:** The cache is exposed as the `cache` property on the memoized
- * function. Its creation may be customized by replacing the `_.memoize.Cache`
- * constructor with one whose instances implement the
- * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
- * method interface of `clear`, `delete`, `get`, `has`, and `set`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to have its output memoized.
- * @param {Function} [resolver] The function to resolve the cache key.
- * @returns {Function} Returns the new memoized function.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- * var other = { 'c': 3, 'd': 4 };
- *
- * var values = _.memoize(_.values);
- * values(object);
- * // => [1, 2]
- *
- * values(other);
- * // => [3, 4]
- *
- * object.a = 2;
- * values(object);
- * // => [1, 2]
- *
- * // Modify the result cache.
- * values.cache.set(object, ['a', 'b']);
- * values(object);
- * // => ['a', 'b']
- *
- * // Replace `_.memoize.Cache`.
- * _.memoize.Cache = WeakMap;
- */
-function memoize(func, resolver) {
- if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- var memoized = function() {
- var args = arguments,
- key = resolver ? resolver.apply(this, args) : args[0],
- cache = memoized.cache;
-
- if (cache.has(key)) {
- return cache.get(key);
- }
- var result = func.apply(this, args);
- memoized.cache = cache.set(key, result) || cache;
- return result;
- };
- memoized.cache = new (memoize.Cache || MapCache);
- return memoized;
-}
-
-// Expose `MapCache`.
-memoize.Cache = MapCache;
-
-module.exports = memoize;
diff --git a/assets/node_modules/lodash/merge.js b/assets/node_modules/lodash/merge.js
deleted file mode 100644
index 4bbc3a1..0000000
--- a/assets/node_modules/lodash/merge.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var baseMerge = require('./_baseMerge'),
- createAssigner = require('./_createAssigner');
-
-/**
- * This method is like `_.assign` except that it recursively merges own and
- * inherited enumerable string keyed properties of source objects into the
- * destination object. Source properties that resolve to `undefined` are
- * skipped if a destination value exists. Array and plain object properties
- * are merged recursively. Other objects and value types are overridden by
- * assignment. Source objects are applied from left to right. Subsequent
- * sources overwrite property assignments of previous sources.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 0.5.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = {
- * 'a': [{ 'b': 2 }, { 'd': 4 }]
- * };
- *
- * var other = {
- * 'a': [{ 'c': 3 }, { 'e': 5 }]
- * };
- *
- * _.merge(object, other);
- * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
- */
-var merge = createAssigner(function(object, source, srcIndex) {
- baseMerge(object, source, srcIndex);
-});
-
-module.exports = merge;
diff --git a/assets/node_modules/lodash/mergeWith.js b/assets/node_modules/lodash/mergeWith.js
deleted file mode 100644
index 1b43a2c..0000000
--- a/assets/node_modules/lodash/mergeWith.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var baseMerge = require('./_baseMerge'),
- createAssigner = require('./_createAssigner');
-
-/**
- * This method is like `_.merge` except that it accepts `customizer` which
- * is invoked to produce the merged values of the destination and source
- * properties. If `customizer` returns `undefined`, merging is handled by the
- * method instead. The `customizer` is invoked with six arguments:
- * (objValue, srcValue, key, object, source, stack).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} sources The source objects.
- * @param {Function} customizer The function to customize assigned values.
- * @returns {Object} Returns `object`.
- * @example
- *
- * function customizer(objValue, srcValue) {
- * if (_.isArray(objValue)) {
- * return objValue.concat(srcValue);
- * }
- * }
- *
- * var object = { 'a': [1], 'b': [2] };
- * var other = { 'a': [3], 'b': [4] };
- *
- * _.mergeWith(object, other, customizer);
- * // => { 'a': [1, 3], 'b': [2, 4] }
- */
-var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
- baseMerge(object, source, srcIndex, customizer);
-});
-
-module.exports = mergeWith;
diff --git a/assets/node_modules/lodash/method.js b/assets/node_modules/lodash/method.js
deleted file mode 100644
index 23ec32d..0000000
--- a/assets/node_modules/lodash/method.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var baseInvoke = require('./_baseInvoke'),
- baseRest = require('./_baseRest');
-
-/**
- * Creates a function that invokes the method at `path` of a given object.
- * Any additional arguments are provided to the invoked method.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Util
- * @param {Array|string} path The path of the method to invoke.
- * @param {...*} [args] The arguments to invoke the method with.
- * @returns {Function} Returns the new invoker function.
- * @example
- *
- * var objects = [
- * { 'a': { 'b': _.constant(2) } },
- * { 'a': { 'b': _.constant(1) } }
- * ];
- *
- * _.map(objects, _.method('a.b'));
- * // => [2, 1]
- *
- * _.map(objects, _.method(['a', 'b']));
- * // => [2, 1]
- */
-var method = baseRest(function(path, args) {
- return function(object) {
- return baseInvoke(object, path, args);
- };
-});
-
-module.exports = method;
diff --git a/assets/node_modules/lodash/methodOf.js b/assets/node_modules/lodash/methodOf.js
deleted file mode 100644
index df59b57..0000000
--- a/assets/node_modules/lodash/methodOf.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var baseInvoke = require('./_baseInvoke'),
- baseRest = require('./_baseRest');
-
-/**
- * The opposite of `_.method`; this method creates a function that invokes
- * the method at a given path of `object`. Any additional arguments are
- * provided to the invoked method.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Util
- * @param {Object} object The object to query.
- * @param {...*} [args] The arguments to invoke the method with.
- * @returns {Function} Returns the new invoker function.
- * @example
- *
- * var array = _.times(3, _.constant),
- * object = { 'a': array, 'b': array, 'c': array };
- *
- * _.map(['a[2]', 'c[0]'], _.methodOf(object));
- * // => [2, 0]
- *
- * _.map([['a', '2'], ['c', '0']], _.methodOf(object));
- * // => [2, 0]
- */
-var methodOf = baseRest(function(object, args) {
- return function(path) {
- return baseInvoke(object, path, args);
- };
-});
-
-module.exports = methodOf;
diff --git a/assets/node_modules/lodash/min.js b/assets/node_modules/lodash/min.js
deleted file mode 100644
index 428f571..0000000
--- a/assets/node_modules/lodash/min.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var baseExtremum = require('./_baseExtremum'),
- baseLt = require('./_baseLt'),
- identity = require('./identity');
-
-/**
- * Computes the minimum value of `array`. If `array` is empty or falsey,
- * `undefined` is returned.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {*} Returns the minimum value.
- * @example
- *
- * _.min([4, 2, 8, 6]);
- * // => 2
- *
- * _.min([]);
- * // => undefined
- */
-function min(array) {
- return (array && array.length)
- ? baseExtremum(array, identity, baseLt)
- : undefined;
-}
-
-module.exports = min;
diff --git a/assets/node_modules/lodash/minBy.js b/assets/node_modules/lodash/minBy.js
deleted file mode 100644
index b2697e4..0000000
--- a/assets/node_modules/lodash/minBy.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var baseExtremum = require('./_baseExtremum'),
- baseIteratee = require('./_baseIteratee'),
- baseLt = require('./_baseLt');
-
-/**
- * This method is like `_.min` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the criterion by which
- * the value is ranked. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {*} Returns the minimum value.
- * @example
- *
- * var objects = [{ 'n': 1 }, { 'n': 2 }];
- *
- * _.minBy(objects, function(o) { return o.n; });
- * // => { 'n': 1 }
- *
- * // The `_.property` iteratee shorthand.
- * _.minBy(objects, 'n');
- * // => { 'n': 1 }
- */
-function minBy(array, iteratee) {
- return (array && array.length)
- ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)
- : undefined;
-}
-
-module.exports = minBy;
diff --git a/assets/node_modules/lodash/mixin.js b/assets/node_modules/lodash/mixin.js
deleted file mode 100644
index 6dc9674..0000000
--- a/assets/node_modules/lodash/mixin.js
+++ /dev/null
@@ -1,74 +0,0 @@
-var arrayEach = require('./_arrayEach'),
- arrayPush = require('./_arrayPush'),
- baseFunctions = require('./_baseFunctions'),
- copyArray = require('./_copyArray'),
- isFunction = require('./isFunction'),
- isObject = require('./isObject'),
- keys = require('./keys');
-
-/**
- * Adds all own enumerable string keyed function properties of a source
- * object to the destination object. If `object` is a function, then methods
- * are added to its prototype as well.
- *
- * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
- * avoid conflicts caused by modifying the original.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {Function|Object} [object=lodash] The destination object.
- * @param {Object} source The object of functions to add.
- * @param {Object} [options={}] The options object.
- * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
- * @returns {Function|Object} Returns `object`.
- * @example
- *
- * function vowels(string) {
- * return _.filter(string, function(v) {
- * return /[aeiou]/i.test(v);
- * });
- * }
- *
- * _.mixin({ 'vowels': vowels });
- * _.vowels('fred');
- * // => ['e']
- *
- * _('fred').vowels().value();
- * // => ['e']
- *
- * _.mixin({ 'vowels': vowels }, { 'chain': false });
- * _('fred').vowels();
- * // => ['e']
- */
-function mixin(object, source, options) {
- var props = keys(source),
- methodNames = baseFunctions(source, props);
-
- var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
- isFunc = isFunction(object);
-
- arrayEach(methodNames, function(methodName) {
- var func = source[methodName];
- object[methodName] = func;
- if (isFunc) {
- object.prototype[methodName] = function() {
- var chainAll = this.__chain__;
- if (chain || chainAll) {
- var result = object(this.__wrapped__),
- actions = result.__actions__ = copyArray(this.__actions__);
-
- actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
- result.__chain__ = chainAll;
- return result;
- }
- return func.apply(object, arrayPush([this.value()], arguments));
- };
- }
- });
-
- return object;
-}
-
-module.exports = mixin;
diff --git a/assets/node_modules/lodash/multiply.js b/assets/node_modules/lodash/multiply.js
deleted file mode 100644
index d7876e1..0000000
--- a/assets/node_modules/lodash/multiply.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var createMathOperation = require('./_createMathOperation');
-
-/**
- * Multiply two numbers.
- *
- * @static
- * @memberOf _
- * @since 4.7.0
- * @category Math
- * @param {number} multiplier The first number in a multiplication.
- * @param {number} multiplicand The second number in a multiplication.
- * @returns {number} Returns the product.
- * @example
- *
- * _.multiply(6, 4);
- * // => 24
- */
-var multiply = createMathOperation(function(multiplier, multiplicand) {
- return multiplier * multiplicand;
-}, 1);
-
-module.exports = multiply;
diff --git a/assets/node_modules/lodash/negate.js b/assets/node_modules/lodash/negate.js
deleted file mode 100644
index 5a65cd1..0000000
--- a/assets/node_modules/lodash/negate.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a function that negates the result of the predicate `func`. The
- * `func` predicate is invoked with the `this` binding and arguments of the
- * created function.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {Function} predicate The predicate to negate.
- * @returns {Function} Returns the new negated function.
- * @example
- *
- * function isEven(n) {
- * return n % 2 == 0;
- * }
- *
- * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
- * // => [1, 3, 5]
- */
-function negate(predicate) {
- if (typeof predicate != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- return function() {
- var args = arguments;
- switch (args.length) {
- case 0: return !predicate.call(this);
- case 1: return !predicate.call(this, args[0]);
- case 2: return !predicate.call(this, args[0], args[1]);
- case 3: return !predicate.call(this, args[0], args[1], args[2]);
- }
- return !predicate.apply(this, args);
- };
-}
-
-module.exports = negate;
diff --git a/assets/node_modules/lodash/next.js b/assets/node_modules/lodash/next.js
deleted file mode 100644
index 55f949c..0000000
--- a/assets/node_modules/lodash/next.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var toArray = require('./toArray');
-
-/**
- * Gets the next value on a wrapped object following the
- * [iterator protocol](https://mdn.io/iteration_protocols#iterator).
- *
- * @name next
- * @memberOf _
- * @since 4.0.0
- * @category Seq
- * @returns {Object} Returns the next iterator value.
- * @example
- *
- * var wrapped = _([1, 2]);
- *
- * wrapped.next();
- * // => { 'done': false, 'value': 1 }
- *
- * wrapped.next();
- * // => { 'done': false, 'value': 2 }
- *
- * wrapped.next();
- * // => { 'done': true, 'value': undefined }
- */
-function wrapperNext() {
- if (this.__values__ === undefined) {
- this.__values__ = toArray(this.value());
- }
- var done = this.__index__ >= this.__values__.length,
- value = done ? undefined : this.__values__[this.__index__++];
-
- return { 'done': done, 'value': value };
-}
-
-module.exports = wrapperNext;
diff --git a/assets/node_modules/lodash/noop.js b/assets/node_modules/lodash/noop.js
deleted file mode 100644
index 3c0862e..0000000
--- a/assets/node_modules/lodash/noop.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * This method returns `undefined`.
- *
- * @static
- * @memberOf _
- * @since 2.3.0
- * @category Util
- * @example
- *
- * _.times(2, _.noop);
- * // => [undefined, undefined]
- */
-function noop() {
- // No operation performed.
-}
-
-module.exports = noop;
diff --git a/assets/node_modules/lodash/now.js b/assets/node_modules/lodash/now.js
deleted file mode 100644
index 44a0562..0000000
--- a/assets/node_modules/lodash/now.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var root = require('./_root');
-
-/**
- * Gets the timestamp of the number of milliseconds that have elapsed since
- * the Unix epoch (1 January 1970 00:00:00 UTC).
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Date
- * @returns {number} Returns the timestamp.
- * @example
- *
- * _.defer(function(stamp) {
- * console.log(_.now() - stamp);
- * }, _.now());
- * // => Logs the number of milliseconds it took for the deferred invocation.
- */
-var now = function() {
- return root.Date.now();
-};
-
-module.exports = now;
diff --git a/assets/node_modules/lodash/nth.js b/assets/node_modules/lodash/nth.js
deleted file mode 100644
index 8a344de..0000000
--- a/assets/node_modules/lodash/nth.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var baseNth = require('./_baseNth'),
- toInteger = require('./toInteger');
-
-/**
- * Gets the element at index `n` of `array`. If `n` is negative, the nth
- * element from the end is returned.
- *
- * @static
- * @memberOf _
- * @since 4.11.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=0] The index of the element to return.
- * @returns {*} Returns the nth element of `array`.
- * @example
- *
- * var array = ['a', 'b', 'c', 'd'];
- *
- * _.nth(array, 1);
- * // => 'b'
- *
- * _.nth(array, -2);
- * // => 'c';
- */
-function nth(array, n) {
- return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;
-}
-
-module.exports = nth;
diff --git a/assets/node_modules/lodash/nthArg.js b/assets/node_modules/lodash/nthArg.js
deleted file mode 100644
index 09406dd..0000000
--- a/assets/node_modules/lodash/nthArg.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var baseNth = require('./_baseNth'),
- baseRest = require('./_baseRest'),
- toInteger = require('./toInteger');
-
-/**
- * Creates a function that gets the argument at index `n`. If `n` is negative,
- * the nth argument from the end is returned.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {number} [n=0] The index of the argument to return.
- * @returns {Function} Returns the new pass-thru function.
- * @example
- *
- * var func = _.nthArg(1);
- * func('a', 'b', 'c', 'd');
- * // => 'b'
- *
- * var func = _.nthArg(-2);
- * func('a', 'b', 'c', 'd');
- * // => 'c'
- */
-function nthArg(n) {
- n = toInteger(n);
- return baseRest(function(args) {
- return baseNth(args, n);
- });
-}
-
-module.exports = nthArg;
diff --git a/assets/node_modules/lodash/number.js b/assets/node_modules/lodash/number.js
deleted file mode 100644
index c3b0100..0000000
--- a/assets/node_modules/lodash/number.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module.exports = {
- 'clamp': require('./clamp'),
- 'inRange': require('./inRange'),
- 'random': require('./random')
-};
diff --git a/assets/node_modules/lodash/object.js b/assets/node_modules/lodash/object.js
deleted file mode 100644
index f046b05..0000000
--- a/assets/node_modules/lodash/object.js
+++ /dev/null
@@ -1,49 +0,0 @@
-module.exports = {
- 'assign': require('./assign'),
- 'assignIn': require('./assignIn'),
- 'assignInWith': require('./assignInWith'),
- 'assignWith': require('./assignWith'),
- 'at': require('./at'),
- 'create': require('./create'),
- 'defaults': require('./defaults'),
- 'defaultsDeep': require('./defaultsDeep'),
- 'entries': require('./entries'),
- 'entriesIn': require('./entriesIn'),
- 'extend': require('./extend'),
- 'extendWith': require('./extendWith'),
- 'findKey': require('./findKey'),
- 'findLastKey': require('./findLastKey'),
- 'forIn': require('./forIn'),
- 'forInRight': require('./forInRight'),
- 'forOwn': require('./forOwn'),
- 'forOwnRight': require('./forOwnRight'),
- 'functions': require('./functions'),
- 'functionsIn': require('./functionsIn'),
- 'get': require('./get'),
- 'has': require('./has'),
- 'hasIn': require('./hasIn'),
- 'invert': require('./invert'),
- 'invertBy': require('./invertBy'),
- 'invoke': require('./invoke'),
- 'keys': require('./keys'),
- 'keysIn': require('./keysIn'),
- 'mapKeys': require('./mapKeys'),
- 'mapValues': require('./mapValues'),
- 'merge': require('./merge'),
- 'mergeWith': require('./mergeWith'),
- 'omit': require('./omit'),
- 'omitBy': require('./omitBy'),
- 'pick': require('./pick'),
- 'pickBy': require('./pickBy'),
- 'result': require('./result'),
- 'set': require('./set'),
- 'setWith': require('./setWith'),
- 'toPairs': require('./toPairs'),
- 'toPairsIn': require('./toPairsIn'),
- 'transform': require('./transform'),
- 'unset': require('./unset'),
- 'update': require('./update'),
- 'updateWith': require('./updateWith'),
- 'values': require('./values'),
- 'valuesIn': require('./valuesIn')
-};
diff --git a/assets/node_modules/lodash/omit.js b/assets/node_modules/lodash/omit.js
deleted file mode 100644
index 97f5f54..0000000
--- a/assets/node_modules/lodash/omit.js
+++ /dev/null
@@ -1,57 +0,0 @@
-var arrayMap = require('./_arrayMap'),
- baseClone = require('./_baseClone'),
- baseUnset = require('./_baseUnset'),
- castPath = require('./_castPath'),
- copyObject = require('./_copyObject'),
- customOmitClone = require('./_customOmitClone'),
- flatRest = require('./_flatRest'),
- getAllKeysIn = require('./_getAllKeysIn');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1,
- CLONE_FLAT_FLAG = 2,
- CLONE_SYMBOLS_FLAG = 4;
-
-/**
- * The opposite of `_.pick`; this method creates an object composed of the
- * own and inherited enumerable property paths of `object` that are not omitted.
- *
- * **Note:** This method is considerably slower than `_.pick`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The source object.
- * @param {...(string|string[])} [paths] The property paths to omit.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.omit(object, ['a', 'c']);
- * // => { 'b': '2' }
- */
-var omit = flatRest(function(object, paths) {
- var result = {};
- if (object == null) {
- return result;
- }
- var isDeep = false;
- paths = arrayMap(paths, function(path) {
- path = castPath(path, object);
- isDeep || (isDeep = path.length > 1);
- return path;
- });
- copyObject(object, getAllKeysIn(object), result);
- if (isDeep) {
- result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
- }
- var length = paths.length;
- while (length--) {
- baseUnset(result, paths[length]);
- }
- return result;
-});
-
-module.exports = omit;
diff --git a/assets/node_modules/lodash/omitBy.js b/assets/node_modules/lodash/omitBy.js
deleted file mode 100644
index a064036..0000000
--- a/assets/node_modules/lodash/omitBy.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var baseIteratee = require('./_baseIteratee'),
- negate = require('./negate'),
- pickBy = require('./pickBy');
-
-/**
- * The opposite of `_.pickBy`; this method creates an object composed of
- * the own and inherited enumerable string keyed properties of `object` that
- * `predicate` doesn't return truthy for. The predicate is invoked with two
- * arguments: (value, key).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The source object.
- * @param {Function} [predicate=_.identity] The function invoked per property.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.omitBy(object, _.isNumber);
- * // => { 'b': '2' }
- */
-function omitBy(object, predicate) {
- return pickBy(object, negate(baseIteratee(predicate)));
-}
-
-module.exports = omitBy;
diff --git a/assets/node_modules/lodash/once.js b/assets/node_modules/lodash/once.js
deleted file mode 100644
index 0706fc3..0000000
--- a/assets/node_modules/lodash/once.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var before = require('./before');
-
-/**
- * Creates a function that is restricted to invoking `func` once. Repeat calls
- * to the function return the value of the first invocation. The `func` is
- * invoked with the `this` binding and arguments of the created function.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * var initialize = _.once(createApplication);
- * initialize();
- * initialize();
- * // => `createApplication` is invoked once
- */
-function once(func) {
- return before(2, func);
-}
-
-module.exports = once;
diff --git a/assets/node_modules/lodash/orderBy.js b/assets/node_modules/lodash/orderBy.js
deleted file mode 100644
index 7195c8c..0000000
--- a/assets/node_modules/lodash/orderBy.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var baseOrderBy = require('./_baseOrderBy'),
- isArray = require('./isArray');
-
-/**
- * This method is like `_.sortBy` except that it allows specifying the sort
- * orders of the iteratees to sort by. If `orders` is unspecified, all values
- * are sorted in ascending order. Otherwise, specify an order of "desc" for
- * descending or "asc" for ascending sort order of corresponding values.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
- * The iteratees to sort by.
- * @param {string[]} [orders] The sort orders of `iteratees`.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
- * @returns {Array} Returns the new sorted array.
- * @example
- *
- * var users = [
- * { 'user': 'fred', 'age': 48 },
- * { 'user': 'barney', 'age': 34 },
- * { 'user': 'fred', 'age': 40 },
- * { 'user': 'barney', 'age': 36 }
- * ];
- *
- * // Sort by `user` in ascending order and by `age` in descending order.
- * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
- * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
- */
-function orderBy(collection, iteratees, orders, guard) {
- if (collection == null) {
- return [];
- }
- if (!isArray(iteratees)) {
- iteratees = iteratees == null ? [] : [iteratees];
- }
- orders = guard ? undefined : orders;
- if (!isArray(orders)) {
- orders = orders == null ? [] : [orders];
- }
- return baseOrderBy(collection, iteratees, orders);
-}
-
-module.exports = orderBy;
diff --git a/assets/node_modules/lodash/over.js b/assets/node_modules/lodash/over.js
deleted file mode 100644
index bea2f91..0000000
--- a/assets/node_modules/lodash/over.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var arrayMap = require('./_arrayMap'),
- createOver = require('./_createOver');
-
-/**
- * Creates a function that invokes `iteratees` with the arguments it receives
- * and returns their results.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {...(Function|Function[])} [iteratees=[_.identity]]
- * The iteratees to invoke.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var func = _.over([Math.max, Math.min]);
- *
- * func(1, 2, 3, 4);
- * // => [4, 1]
- */
-var over = createOver(arrayMap);
-
-module.exports = over;
diff --git a/assets/node_modules/lodash/overArgs.js b/assets/node_modules/lodash/overArgs.js
deleted file mode 100644
index f0067db..0000000
--- a/assets/node_modules/lodash/overArgs.js
+++ /dev/null
@@ -1,61 +0,0 @@
-var apply = require('./_apply'),
- arrayMap = require('./_arrayMap'),
- baseFlatten = require('./_baseFlatten'),
- baseIteratee = require('./_baseIteratee'),
- baseRest = require('./_baseRest'),
- baseUnary = require('./_baseUnary'),
- castRest = require('./_castRest'),
- isArray = require('./isArray');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min;
-
-/**
- * Creates a function that invokes `func` with its arguments transformed.
- *
- * @static
- * @since 4.0.0
- * @memberOf _
- * @category Function
- * @param {Function} func The function to wrap.
- * @param {...(Function|Function[])} [transforms=[_.identity]]
- * The argument transforms.
- * @returns {Function} Returns the new function.
- * @example
- *
- * function doubled(n) {
- * return n * 2;
- * }
- *
- * function square(n) {
- * return n * n;
- * }
- *
- * var func = _.overArgs(function(x, y) {
- * return [x, y];
- * }, [square, doubled]);
- *
- * func(9, 3);
- * // => [81, 6]
- *
- * func(10, 5);
- * // => [100, 10]
- */
-var overArgs = castRest(function(func, transforms) {
- transforms = (transforms.length == 1 && isArray(transforms[0]))
- ? arrayMap(transforms[0], baseUnary(baseIteratee))
- : arrayMap(baseFlatten(transforms, 1), baseUnary(baseIteratee));
-
- var funcsLength = transforms.length;
- return baseRest(function(args) {
- var index = -1,
- length = nativeMin(args.length, funcsLength);
-
- while (++index < length) {
- args[index] = transforms[index].call(this, args[index]);
- }
- return apply(func, this, args);
- });
-});
-
-module.exports = overArgs;
diff --git a/assets/node_modules/lodash/overEvery.js b/assets/node_modules/lodash/overEvery.js
deleted file mode 100644
index c115d15..0000000
--- a/assets/node_modules/lodash/overEvery.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var arrayEvery = require('./_arrayEvery'),
- createOver = require('./_createOver');
-
-/**
- * Creates a function that checks if **all** of the `predicates` return
- * truthy when invoked with the arguments it receives.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {...(Function|Function[])} [predicates=[_.identity]]
- * The predicates to check.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var func = _.overEvery([Boolean, isFinite]);
- *
- * func('1');
- * // => true
- *
- * func(null);
- * // => false
- *
- * func(NaN);
- * // => false
- */
-var overEvery = createOver(arrayEvery);
-
-module.exports = overEvery;
diff --git a/assets/node_modules/lodash/overSome.js b/assets/node_modules/lodash/overSome.js
deleted file mode 100644
index f902907..0000000
--- a/assets/node_modules/lodash/overSome.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var arraySome = require('./_arraySome'),
- createOver = require('./_createOver');
-
-/**
- * Creates a function that checks if **any** of the `predicates` return
- * truthy when invoked with the arguments it receives.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {...(Function|Function[])} [predicates=[_.identity]]
- * The predicates to check.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var func = _.overSome([Boolean, isFinite]);
- *
- * func('1');
- * // => true
- *
- * func(null);
- * // => true
- *
- * func(NaN);
- * // => false
- */
-var overSome = createOver(arraySome);
-
-module.exports = overSome;
diff --git a/assets/node_modules/lodash/package.json b/assets/node_modules/lodash/package.json
deleted file mode 100644
index 069397e..0000000
--- a/assets/node_modules/lodash/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "lodash",
- "version": "4.17.15",
- "description": "Lodash modular utilities.",
- "keywords": "modules, stdlib, util",
- "homepage": "https://lodash.com/",
- "repository": "lodash/lodash",
- "icon": "https://lodash.com/icon.svg",
- "license": "MIT",
- "main": "lodash.js",
- "author": "John-David Dalton <john.david.dalton@gmail.com>",
- "contributors": [
- "John-David Dalton <john.david.dalton@gmail.com>",
- "Mathias Bynens <mathias@qiwi.be>"
- ],
- "scripts": { "test": "echo \"See https://travis-ci.org/lodash-archive/lodash-cli for testing details.\"" }
-}
diff --git a/assets/node_modules/lodash/pad.js b/assets/node_modules/lodash/pad.js
deleted file mode 100644
index 77e1f1c..0000000
--- a/assets/node_modules/lodash/pad.js
+++ /dev/null
@@ -1,49 +0,0 @@
-var createPadding = require('./_createPadding'),
- stringSize = require('./_stringSize'),
- toInteger = require('./toInteger'),
- toString = require('./toString');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeCeil = Math.ceil,
- nativeFloor = Math.floor;
-
-/**
- * Pads `string` on the left and right sides if it's shorter than `length`.
- * Padding characters are truncated if they can't be evenly divided by `length`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to pad.
- * @param {number} [length=0] The padding length.
- * @param {string} [chars=' '] The string used as padding.
- * @returns {string} Returns the padded string.
- * @example
- *
- * _.pad('abc', 8);
- * // => ' abc '
- *
- * _.pad('abc', 8, '_-');
- * // => '_-abc_-_'
- *
- * _.pad('abc', 3);
- * // => 'abc'
- */
-function pad(string, length, chars) {
- string = toString(string);
- length = toInteger(length);
-
- var strLength = length ? stringSize(string) : 0;
- if (!length || strLength >= length) {
- return string;
- }
- var mid = (length - strLength) / 2;
- return (
- createPadding(nativeFloor(mid), chars) +
- string +
- createPadding(nativeCeil(mid), chars)
- );
-}
-
-module.exports = pad;
diff --git a/assets/node_modules/lodash/padEnd.js b/assets/node_modules/lodash/padEnd.js
deleted file mode 100644
index 224eb80..0000000
--- a/assets/node_modules/lodash/padEnd.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var createPadding = require('./_createPadding'),
- stringSize = require('./_stringSize'),
- toInteger = require('./toInteger'),
- toString = require('./toString');
-
-/**
- * Pads `string` on the right side if it's shorter than `length`. Padding
- * characters are truncated if they exceed `length`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to pad.
- * @param {number} [length=0] The padding length.
- * @param {string} [chars=' '] The string used as padding.
- * @returns {string} Returns the padded string.
- * @example
- *
- * _.padEnd('abc', 6);
- * // => 'abc '
- *
- * _.padEnd('abc', 6, '_-');
- * // => 'abc_-_'
- *
- * _.padEnd('abc', 3);
- * // => 'abc'
- */
-function padEnd(string, length, chars) {
- string = toString(string);
- length = toInteger(length);
-
- var strLength = length ? stringSize(string) : 0;
- return (length && strLength < length)
- ? (string + createPadding(length - strLength, chars))
- : string;
-}
-
-module.exports = padEnd;
diff --git a/assets/node_modules/lodash/padStart.js b/assets/node_modules/lodash/padStart.js
deleted file mode 100644
index f991866..0000000
--- a/assets/node_modules/lodash/padStart.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var createPadding = require('./_createPadding'),
- stringSize = require('./_stringSize'),
- toInteger = require('./toInteger'),
- toString = require('./toString');
-
-/**
- * Pads `string` on the left side if it's shorter than `length`. Padding
- * characters are truncated if they exceed `length`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to pad.
- * @param {number} [length=0] The padding length.
- * @param {string} [chars=' '] The string used as padding.
- * @returns {string} Returns the padded string.
- * @example
- *
- * _.padStart('abc', 6);
- * // => ' abc'
- *
- * _.padStart('abc', 6, '_-');
- * // => '_-_abc'
- *
- * _.padStart('abc', 3);
- * // => 'abc'
- */
-function padStart(string, length, chars) {
- string = toString(string);
- length = toInteger(length);
-
- var strLength = length ? stringSize(string) : 0;
- return (length && strLength < length)
- ? (createPadding(length - strLength, chars) + string)
- : string;
-}
-
-module.exports = padStart;
diff --git a/assets/node_modules/lodash/parseInt.js b/assets/node_modules/lodash/parseInt.js
deleted file mode 100644
index 82badf0..0000000
--- a/assets/node_modules/lodash/parseInt.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var root = require('./_root'),
- toString = require('./toString');
-
-/** Used to match leading and trailing whitespace. */
-var reTrimStart = /^\s+/;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeParseInt = root.parseInt;
-
-/**
- * Converts `string` to an integer of the specified radix. If `radix` is
- * `undefined` or `0`, a `radix` of `10` is used unless `value` is a
- * hexadecimal, in which case a `radix` of `16` is used.
- *
- * **Note:** This method aligns with the
- * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.
- *
- * @static
- * @memberOf _
- * @since 1.1.0
- * @category String
- * @param {string} string The string to convert.
- * @param {number} [radix=10] The radix to interpret `value` by.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.parseInt('08');
- * // => 8
- *
- * _.map(['6', '08', '10'], _.parseInt);
- * // => [6, 8, 10]
- */
-function parseInt(string, radix, guard) {
- if (guard || radix == null) {
- radix = 0;
- } else if (radix) {
- radix = +radix;
- }
- return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);
-}
-
-module.exports = parseInt;
diff --git a/assets/node_modules/lodash/partial.js b/assets/node_modules/lodash/partial.js
deleted file mode 100644
index 05fe8d3..0000000
--- a/assets/node_modules/lodash/partial.js
+++ /dev/null
@@ -1,50 +0,0 @@
-var baseRest = require('./_baseRest'),
- createWrap = require('./_createWrap'),
- getHolder = require('./_getHolder'),
- replaceHolders = require('./_replaceHolders');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_PARTIAL_FLAG = 32;
-
-/**
- * Creates a function that invokes `func` with `partials` prepended to the
- * arguments it receives. This method is like `_.bind` except it does **not**
- * alter the `this` binding.
- *
- * The `_.partial.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for partially applied arguments.
- *
- * **Note:** This method doesn't set the "length" property of partially
- * applied functions.
- *
- * @static
- * @memberOf _
- * @since 0.2.0
- * @category Function
- * @param {Function} func The function to partially apply arguments to.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new partially applied function.
- * @example
- *
- * function greet(greeting, name) {
- * return greeting + ' ' + name;
- * }
- *
- * var sayHelloTo = _.partial(greet, 'hello');
- * sayHelloTo('fred');
- * // => 'hello fred'
- *
- * // Partially applied with placeholders.
- * var greetFred = _.partial(greet, _, 'fred');
- * greetFred('hi');
- * // => 'hi fred'
- */
-var partial = baseRest(function(func, partials) {
- var holders = replaceHolders(partials, getHolder(partial));
- return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
-});
-
-// Assign default placeholders.
-partial.placeholder = {};
-
-module.exports = partial;
diff --git a/assets/node_modules/lodash/partialRight.js b/assets/node_modules/lodash/partialRight.js
deleted file mode 100644
index eee031f..0000000
--- a/assets/node_modules/lodash/partialRight.js
+++ /dev/null
@@ -1,49 +0,0 @@
-var baseRest = require('./_baseRest'),
- createWrap = require('./_createWrap'),
- getHolder = require('./_getHolder'),
- replaceHolders = require('./_replaceHolders');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_PARTIAL_RIGHT_FLAG = 64;
-
-/**
- * This method is like `_.partial` except that partially applied arguments
- * are appended to the arguments it receives.
- *
- * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for partially applied arguments.
- *
- * **Note:** This method doesn't set the "length" property of partially
- * applied functions.
- *
- * @static
- * @memberOf _
- * @since 1.0.0
- * @category Function
- * @param {Function} func The function to partially apply arguments to.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new partially applied function.
- * @example
- *
- * function greet(greeting, name) {
- * return greeting + ' ' + name;
- * }
- *
- * var greetFred = _.partialRight(greet, 'fred');
- * greetFred('hi');
- * // => 'hi fred'
- *
- * // Partially applied with placeholders.
- * var sayHelloTo = _.partialRight(greet, 'hello', _);
- * sayHelloTo('fred');
- * // => 'hello fred'
- */
-var partialRight = baseRest(function(func, partials) {
- var holders = replaceHolders(partials, getHolder(partialRight));
- return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
-});
-
-// Assign default placeholders.
-partialRight.placeholder = {};
-
-module.exports = partialRight;
diff --git a/assets/node_modules/lodash/partition.js b/assets/node_modules/lodash/partition.js
deleted file mode 100644
index 6b814a9..0000000
--- a/assets/node_modules/lodash/partition.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var createAggregator = require('./_createAggregator');
-
-/**
- * Creates an array of elements split into two groups, the first of which
- * contains elements `predicate` returns truthy for, the second of which
- * contains elements `predicate` returns falsey for. The predicate is
- * invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the array of grouped elements.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': false },
- * { 'user': 'fred', 'age': 40, 'active': true },
- * { 'user': 'pebbles', 'age': 1, 'active': false }
- * ];
- *
- * _.partition(users, function(o) { return o.active; });
- * // => objects for [['fred'], ['barney', 'pebbles']]
- *
- * // The `_.matches` iteratee shorthand.
- * _.partition(users, { 'age': 1, 'active': false });
- * // => objects for [['pebbles'], ['barney', 'fred']]
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.partition(users, ['active', false]);
- * // => objects for [['barney', 'pebbles'], ['fred']]
- *
- * // The `_.property` iteratee shorthand.
- * _.partition(users, 'active');
- * // => objects for [['fred'], ['barney', 'pebbles']]
- */
-var partition = createAggregator(function(result, value, key) {
- result[key ? 0 : 1].push(value);
-}, function() { return [[], []]; });
-
-module.exports = partition;
diff --git a/assets/node_modules/lodash/pick.js b/assets/node_modules/lodash/pick.js
deleted file mode 100644
index 3160199..0000000
--- a/assets/node_modules/lodash/pick.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var basePick = require('./_basePick'),
- flatRest = require('./_flatRest');
-
-/**
- * Creates an object composed of the picked `object` properties.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The source object.
- * @param {...(string|string[])} [paths] The property paths to pick.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.pick(object, ['a', 'c']);
- * // => { 'a': 1, 'c': 3 }
- */
-var pick = flatRest(function(object, paths) {
- return object == null ? {} : basePick(object, paths);
-});
-
-module.exports = pick;
diff --git a/assets/node_modules/lodash/pickBy.js b/assets/node_modules/lodash/pickBy.js
deleted file mode 100644
index ae7c271..0000000
--- a/assets/node_modules/lodash/pickBy.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var arrayMap = require('./_arrayMap'),
- baseIteratee = require('./_baseIteratee'),
- basePickBy = require('./_basePickBy'),
- getAllKeysIn = require('./_getAllKeysIn');
-
-/**
- * Creates an object composed of the `object` properties `predicate` returns
- * truthy for. The predicate is invoked with two arguments: (value, key).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The source object.
- * @param {Function} [predicate=_.identity] The function invoked per property.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.pickBy(object, _.isNumber);
- * // => { 'a': 1, 'c': 3 }
- */
-function pickBy(object, predicate) {
- if (object == null) {
- return {};
- }
- var props = arrayMap(getAllKeysIn(object), function(prop) {
- return [prop];
- });
- predicate = baseIteratee(predicate);
- return basePickBy(object, props, function(value, path) {
- return predicate(value, path[0]);
- });
-}
-
-module.exports = pickBy;
diff --git a/assets/node_modules/lodash/plant.js b/assets/node_modules/lodash/plant.js
deleted file mode 100644
index 23776f3..0000000
--- a/assets/node_modules/lodash/plant.js
+++ /dev/null
@@ -1,48 +0,0 @@
-var baseLodash = require('./_baseLodash'),
- wrapperClone = require('./_wrapperClone');
-
-/**
- * Creates a clone of the chain sequence planting `value` as the wrapped value.
- *
- * @name plant
- * @memberOf _
- * @since 3.2.0
- * @category Seq
- * @param {*} value The value to plant.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * function square(n) {
- * return n * n;
- * }
- *
- * var wrapped = _([1, 2]).map(square);
- * var other = wrapped.plant([3, 4]);
- *
- * other.value();
- * // => [9, 16]
- *
- * wrapped.value();
- * // => [1, 4]
- */
-function wrapperPlant(value) {
- var result,
- parent = this;
-
- while (parent instanceof baseLodash) {
- var clone = wrapperClone(parent);
- clone.__index__ = 0;
- clone.__values__ = undefined;
- if (result) {
- previous.__wrapped__ = clone;
- } else {
- result = clone;
- }
- var previous = clone;
- parent = parent.__wrapped__;
- }
- previous.__wrapped__ = value;
- return result;
-}
-
-module.exports = wrapperPlant;
diff --git a/assets/node_modules/lodash/property.js b/assets/node_modules/lodash/property.js
deleted file mode 100644
index ca8202f..0000000
--- a/assets/node_modules/lodash/property.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var baseProperty = require('./_baseProperty'),
- basePropertyDeep = require('./_basePropertyDeep'),
- isKey = require('./_isKey'),
- toKey = require('./_toKey');
-
-/**
- * Creates a function that returns the value at `path` of a given object.
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Util
- * @param {Array|string} path The path of the property to get.
- * @returns {Function} Returns the new accessor function.
- * @example
- *
- * var objects = [
- * { 'a': { 'b': 2 } },
- * { 'a': { 'b': 1 } }
- * ];
- *
- * _.map(objects, _.property('a.b'));
- * // => [2, 1]
- *
- * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
- * // => [1, 2]
- */
-function property(path) {
- return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
-}
-
-module.exports = property;
diff --git a/assets/node_modules/lodash/propertyOf.js b/assets/node_modules/lodash/propertyOf.js
deleted file mode 100644
index 384044d..0000000
--- a/assets/node_modules/lodash/propertyOf.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var baseGet = require('./_baseGet');
-
-/**
- * The opposite of `_.property`; this method creates a function that returns
- * the value at a given path of `object`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Util
- * @param {Object} object The object to query.
- * @returns {Function} Returns the new accessor function.
- * @example
- *
- * var array = [0, 1, 2],
- * object = { 'a': array, 'b': array, 'c': array };
- *
- * _.map(['a[2]', 'c[0]'], _.propertyOf(object));
- * // => [2, 0]
- *
- * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
- * // => [2, 0]
- */
-function propertyOf(object) {
- return function(path) {
- return object == null ? undefined : baseGet(object, path);
- };
-}
-
-module.exports = propertyOf;
diff --git a/assets/node_modules/lodash/pull.js b/assets/node_modules/lodash/pull.js
deleted file mode 100644
index a2efcb5..0000000
--- a/assets/node_modules/lodash/pull.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var baseRest = require('./_baseRest'),
- pullAll = require('./pullAll');
-
-/**
- * Removes all given values from `array` using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
- * to remove elements from an array by predicate.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {...*} [values] The values to remove.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
- *
- * _.pull(array, 'a', 'c');
- * console.log(array);
- * // => ['b', 'b']
- */
-var pull = baseRest(pullAll);
-
-module.exports = pull;
diff --git a/assets/node_modules/lodash/pullAll.js b/assets/node_modules/lodash/pullAll.js
deleted file mode 100644
index f4605c2..0000000
--- a/assets/node_modules/lodash/pullAll.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var basePullAll = require('./_basePullAll');
-
-/**
- * This method is like `_.pull` except that it accepts an array of values to remove.
- *
- * **Note:** Unlike `_.difference`, this method mutates `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {Array} values The values to remove.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
- *
- * _.pullAll(array, ['a', 'c']);
- * console.log(array);
- * // => ['b', 'b']
- */
-function pullAll(array, values) {
- return (array && array.length && values && values.length)
- ? basePullAll(array, values)
- : array;
-}
-
-module.exports = pullAll;
diff --git a/assets/node_modules/lodash/pullAllBy.js b/assets/node_modules/lodash/pullAllBy.js
deleted file mode 100644
index 74025e8..0000000
--- a/assets/node_modules/lodash/pullAllBy.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var baseIteratee = require('./_baseIteratee'),
- basePullAll = require('./_basePullAll');
-
-/**
- * This method is like `_.pullAll` except that it accepts `iteratee` which is
- * invoked for each element of `array` and `values` to generate the criterion
- * by which they're compared. The iteratee is invoked with one argument: (value).
- *
- * **Note:** Unlike `_.differenceBy`, this method mutates `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {Array} values The values to remove.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
- *
- * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
- * console.log(array);
- * // => [{ 'x': 2 }]
- */
-function pullAllBy(array, values, iteratee) {
- return (array && array.length && values && values.length)
- ? basePullAll(array, values, baseIteratee(iteratee, 2))
- : array;
-}
-
-module.exports = pullAllBy;
diff --git a/assets/node_modules/lodash/pullAllWith.js b/assets/node_modules/lodash/pullAllWith.js
deleted file mode 100644
index 1d2fd9f..0000000
--- a/assets/node_modules/lodash/pullAllWith.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var basePullAll = require('./_basePullAll');
-
-/**
- * This method is like `_.pullAll` except that it accepts `comparator` which
- * is invoked to compare elements of `array` to `values`. The comparator is
- * invoked with two arguments: (arrVal, othVal).
- *
- * **Note:** Unlike `_.differenceWith`, this method mutates `array`.
- *
- * @static
- * @memberOf _
- * @since 4.6.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {Array} values The values to remove.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
- *
- * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
- * console.log(array);
- * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
- */
-function pullAllWith(array, values, comparator) {
- return (array && array.length && values && values.length)
- ? basePullAll(array, values, undefined, comparator)
- : array;
-}
-
-module.exports = pullAllWith;
diff --git a/assets/node_modules/lodash/pullAt.js b/assets/node_modules/lodash/pullAt.js
deleted file mode 100644
index 6ed84e0..0000000
--- a/assets/node_modules/lodash/pullAt.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var arrayMap = require('./_arrayMap'),
- baseAt = require('./_baseAt'),
- basePullAt = require('./_basePullAt'),
- compareAscending = require('./_compareAscending'),
- flatRest = require('./_flatRest'),
- isIndex = require('./_isIndex');
-
-/**
- * Removes elements from `array` corresponding to `indexes` and returns an
- * array of removed elements.
- *
- * **Note:** Unlike `_.at`, this method mutates `array`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {...(number|number[])} [indexes] The indexes of elements to remove.
- * @returns {Array} Returns the new array of removed elements.
- * @example
- *
- * var array = ['a', 'b', 'c', 'd'];
- * var pulled = _.pullAt(array, [1, 3]);
- *
- * console.log(array);
- * // => ['a', 'c']
- *
- * console.log(pulled);
- * // => ['b', 'd']
- */
-var pullAt = flatRest(function(array, indexes) {
- var length = array == null ? 0 : array.length,
- result = baseAt(array, indexes);
-
- basePullAt(array, arrayMap(indexes, function(index) {
- return isIndex(index, length) ? +index : index;
- }).sort(compareAscending));
-
- return result;
-});
-
-module.exports = pullAt;
diff --git a/assets/node_modules/lodash/random.js b/assets/node_modules/lodash/random.js
deleted file mode 100644
index 8067711..0000000
--- a/assets/node_modules/lodash/random.js
+++ /dev/null
@@ -1,82 +0,0 @@
-var baseRandom = require('./_baseRandom'),
- isIterateeCall = require('./_isIterateeCall'),
- toFinite = require('./toFinite');
-
-/** Built-in method references without a dependency on `root`. */
-var freeParseFloat = parseFloat;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min,
- nativeRandom = Math.random;
-
-/**
- * Produces a random number between the inclusive `lower` and `upper` bounds.
- * If only one argument is provided a number between `0` and the given number
- * is returned. If `floating` is `true`, or either `lower` or `upper` are
- * floats, a floating-point number is returned instead of an integer.
- *
- * **Note:** JavaScript follows the IEEE-754 standard for resolving
- * floating-point values which can produce unexpected results.
- *
- * @static
- * @memberOf _
- * @since 0.7.0
- * @category Number
- * @param {number} [lower=0] The lower bound.
- * @param {number} [upper=1] The upper bound.
- * @param {boolean} [floating] Specify returning a floating-point number.
- * @returns {number} Returns the random number.
- * @example
- *
- * _.random(0, 5);
- * // => an integer between 0 and 5
- *
- * _.random(5);
- * // => also an integer between 0 and 5
- *
- * _.random(5, true);
- * // => a floating-point number between 0 and 5
- *
- * _.random(1.2, 5.2);
- * // => a floating-point number between 1.2 and 5.2
- */
-function random(lower, upper, floating) {
- if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {
- upper = floating = undefined;
- }
- if (floating === undefined) {
- if (typeof upper == 'boolean') {
- floating = upper;
- upper = undefined;
- }
- else if (typeof lower == 'boolean') {
- floating = lower;
- lower = undefined;
- }
- }
- if (lower === undefined && upper === undefined) {
- lower = 0;
- upper = 1;
- }
- else {
- lower = toFinite(lower);
- if (upper === undefined) {
- upper = lower;
- lower = 0;
- } else {
- upper = toFinite(upper);
- }
- }
- if (lower > upper) {
- var temp = lower;
- lower = upper;
- upper = temp;
- }
- if (floating || lower % 1 || upper % 1) {
- var rand = nativeRandom();
- return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);
- }
- return baseRandom(lower, upper);
-}
-
-module.exports = random;
diff --git a/assets/node_modules/lodash/range.js b/assets/node_modules/lodash/range.js
deleted file mode 100644
index fa63b09..0000000
--- a/assets/node_modules/lodash/range.js
+++ /dev/null
@@ -1,46 +0,0 @@
-var createRange = require('./_createRange');
-
-/**
- * Creates an array of numbers (positive and/or negative) progressing from
- * `start` up to, but not including, `end`. A step of `-1` is used if a negative
- * `start` is specified without an `end` or `step`. If `end` is not specified,
- * it's set to `start` with `start` then set to `0`.
- *
- * **Note:** JavaScript follows the IEEE-754 standard for resolving
- * floating-point values which can produce unexpected results.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {number} [start=0] The start of the range.
- * @param {number} end The end of the range.
- * @param {number} [step=1] The value to increment or decrement by.
- * @returns {Array} Returns the range of numbers.
- * @see _.inRange, _.rangeRight
- * @example
- *
- * _.range(4);
- * // => [0, 1, 2, 3]
- *
- * _.range(-4);
- * // => [0, -1, -2, -3]
- *
- * _.range(1, 5);
- * // => [1, 2, 3, 4]
- *
- * _.range(0, 20, 5);
- * // => [0, 5, 10, 15]
- *
- * _.range(0, -4, -1);
- * // => [0, -1, -2, -3]
- *
- * _.range(1, 4, 0);
- * // => [1, 1, 1]
- *
- * _.range(0);
- * // => []
- */
-var range = createRange();
-
-module.exports = range;
diff --git a/assets/node_modules/lodash/rangeRight.js b/assets/node_modules/lodash/rangeRight.js
deleted file mode 100644
index 271fafc..0000000
--- a/assets/node_modules/lodash/rangeRight.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var createRange = require('./_createRange');
-
-/**
- * This method is like `_.range` except that it populates values in
- * descending order.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {number} [start=0] The start of the range.
- * @param {number} end The end of the range.
- * @param {number} [step=1] The value to increment or decrement by.
- * @returns {Array} Returns the range of numbers.
- * @see _.inRange, _.range
- * @example
- *
- * _.rangeRight(4);
- * // => [3, 2, 1, 0]
- *
- * _.rangeRight(-4);
- * // => [-3, -2, -1, 0]
- *
- * _.rangeRight(1, 5);
- * // => [4, 3, 2, 1]
- *
- * _.rangeRight(0, 20, 5);
- * // => [15, 10, 5, 0]
- *
- * _.rangeRight(0, -4, -1);
- * // => [-3, -2, -1, 0]
- *
- * _.rangeRight(1, 4, 0);
- * // => [1, 1, 1]
- *
- * _.rangeRight(0);
- * // => []
- */
-var rangeRight = createRange(true);
-
-module.exports = rangeRight;
diff --git a/assets/node_modules/lodash/rearg.js b/assets/node_modules/lodash/rearg.js
deleted file mode 100644
index a3e1970..0000000
--- a/assets/node_modules/lodash/rearg.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var createWrap = require('./_createWrap'),
- flatRest = require('./_flatRest');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_REARG_FLAG = 256;
-
-/**
- * Creates a function that invokes `func` with arguments arranged according
- * to the specified `indexes` where the argument value at the first index is
- * provided as the first argument, the argument value at the second index is
- * provided as the second argument, and so on.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {Function} func The function to rearrange arguments for.
- * @param {...(number|number[])} indexes The arranged argument indexes.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var rearged = _.rearg(function(a, b, c) {
- * return [a, b, c];
- * }, [2, 0, 1]);
- *
- * rearged('b', 'c', 'a')
- * // => ['a', 'b', 'c']
- */
-var rearg = flatRest(function(func, indexes) {
- return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
-});
-
-module.exports = rearg;
diff --git a/assets/node_modules/lodash/reduce.js b/assets/node_modules/lodash/reduce.js
deleted file mode 100644
index 5a1df4d..0000000
--- a/assets/node_modules/lodash/reduce.js
+++ /dev/null
@@ -1,51 +0,0 @@
-var arrayReduce = require('./_arrayReduce'),
- baseEach = require('./_baseEach'),
- baseIteratee = require('./_baseIteratee'),
- baseReduce = require('./_baseReduce'),
- isArray = require('./isArray');
-
-/**
- * Reduces `collection` to a value which is the accumulated result of running
- * each element in `collection` thru `iteratee`, where each successive
- * invocation is supplied the return value of the previous. If `accumulator`
- * is not given, the first element of `collection` is used as the initial
- * value. The iteratee is invoked with four arguments:
- * (accumulator, value, index|key, collection).
- *
- * Many lodash methods are guarded to work as iteratees for methods like
- * `_.reduce`, `_.reduceRight`, and `_.transform`.
- *
- * The guarded methods are:
- * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
- * and `sortBy`
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @returns {*} Returns the accumulated value.
- * @see _.reduceRight
- * @example
- *
- * _.reduce([1, 2], function(sum, n) {
- * return sum + n;
- * }, 0);
- * // => 3
- *
- * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
- * (result[value] || (result[value] = [])).push(key);
- * return result;
- * }, {});
- * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
- */
-function reduce(collection, iteratee, accumulator) {
- var func = isArray(collection) ? arrayReduce : baseReduce,
- initAccum = arguments.length < 3;
-
- return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);
-}
-
-module.exports = reduce;
diff --git a/assets/node_modules/lodash/reduceRight.js b/assets/node_modules/lodash/reduceRight.js
deleted file mode 100644
index e06a7cb..0000000
--- a/assets/node_modules/lodash/reduceRight.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var arrayReduceRight = require('./_arrayReduceRight'),
- baseEachRight = require('./_baseEachRight'),
- baseIteratee = require('./_baseIteratee'),
- baseReduce = require('./_baseReduce'),
- isArray = require('./isArray');
-
-/**
- * This method is like `_.reduce` except that it iterates over elements of
- * `collection` from right to left.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @returns {*} Returns the accumulated value.
- * @see _.reduce
- * @example
- *
- * var array = [[0, 1], [2, 3], [4, 5]];
- *
- * _.reduceRight(array, function(flattened, other) {
- * return flattened.concat(other);
- * }, []);
- * // => [4, 5, 2, 3, 0, 1]
- */
-function reduceRight(collection, iteratee, accumulator) {
- var func = isArray(collection) ? arrayReduceRight : baseReduce,
- initAccum = arguments.length < 3;
-
- return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);
-}
-
-module.exports = reduceRight;
diff --git a/assets/node_modules/lodash/reject.js b/assets/node_modules/lodash/reject.js
deleted file mode 100644
index a13e554..0000000
--- a/assets/node_modules/lodash/reject.js
+++ /dev/null
@@ -1,46 +0,0 @@
-var arrayFilter = require('./_arrayFilter'),
- baseFilter = require('./_baseFilter'),
- baseIteratee = require('./_baseIteratee'),
- isArray = require('./isArray'),
- negate = require('./negate');
-
-/**
- * The opposite of `_.filter`; this method returns the elements of `collection`
- * that `predicate` does **not** return truthy for.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- * @see _.filter
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': false },
- * { 'user': 'fred', 'age': 40, 'active': true }
- * ];
- *
- * _.reject(users, function(o) { return !o.active; });
- * // => objects for ['fred']
- *
- * // The `_.matches` iteratee shorthand.
- * _.reject(users, { 'age': 40, 'active': true });
- * // => objects for ['barney']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.reject(users, ['active', false]);
- * // => objects for ['fred']
- *
- * // The `_.property` iteratee shorthand.
- * _.reject(users, 'active');
- * // => objects for ['barney']
- */
-function reject(collection, predicate) {
- var func = isArray(collection) ? arrayFilter : baseFilter;
- return func(collection, negate(baseIteratee(predicate, 3)));
-}
-
-module.exports = reject;
diff --git a/assets/node_modules/lodash/remove.js b/assets/node_modules/lodash/remove.js
deleted file mode 100644
index 87b1898..0000000
--- a/assets/node_modules/lodash/remove.js
+++ /dev/null
@@ -1,53 +0,0 @@
-var baseIteratee = require('./_baseIteratee'),
- basePullAt = require('./_basePullAt');
-
-/**
- * Removes all elements from `array` that `predicate` returns truthy for
- * and returns an array of the removed elements. The predicate is invoked
- * with three arguments: (value, index, array).
- *
- * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`
- * to pull elements from an array by value.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new array of removed elements.
- * @example
- *
- * var array = [1, 2, 3, 4];
- * var evens = _.remove(array, function(n) {
- * return n % 2 == 0;
- * });
- *
- * console.log(array);
- * // => [1, 3]
- *
- * console.log(evens);
- * // => [2, 4]
- */
-function remove(array, predicate) {
- var result = [];
- if (!(array && array.length)) {
- return result;
- }
- var index = -1,
- indexes = [],
- length = array.length;
-
- predicate = baseIteratee(predicate, 3);
- while (++index < length) {
- var value = array[index];
- if (predicate(value, index, array)) {
- result.push(value);
- indexes.push(index);
- }
- }
- basePullAt(array, indexes);
- return result;
-}
-
-module.exports = remove;
diff --git a/assets/node_modules/lodash/repeat.js b/assets/node_modules/lodash/repeat.js
deleted file mode 100644
index f4d8c69..0000000
--- a/assets/node_modules/lodash/repeat.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var baseRepeat = require('./_baseRepeat'),
- isIterateeCall = require('./_isIterateeCall'),
- toInteger = require('./toInteger'),
- toString = require('./toString');
-
-/**
- * Repeats the given string `n` times.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to repeat.
- * @param {number} [n=1] The number of times to repeat the string.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {string} Returns the repeated string.
- * @example
- *
- * _.repeat('*', 3);
- * // => '***'
- *
- * _.repeat('abc', 2);
- * // => 'abcabc'
- *
- * _.repeat('abc', 0);
- * // => ''
- */
-function repeat(string, n, guard) {
- if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {
- n = 1;
- } else {
- n = toInteger(n);
- }
- return baseRepeat(toString(string), n);
-}
-
-module.exports = repeat;
diff --git a/assets/node_modules/lodash/replace.js b/assets/node_modules/lodash/replace.js
deleted file mode 100644
index 6e26ecd..0000000
--- a/assets/node_modules/lodash/replace.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var toString = require('./toString');
-
-/**
- * Replaces matches for `pattern` in `string` with `replacement`.
- *
- * **Note:** This method is based on
- * [`String#replace`](https://mdn.io/String/replace).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to modify.
- * @param {RegExp|string} pattern The pattern to replace.
- * @param {Function|string} replacement The match replacement.
- * @returns {string} Returns the modified string.
- * @example
- *
- * _.replace('Hi Fred', 'Fred', 'Barney');
- * // => 'Hi Barney'
- */
-function replace() {
- var args = arguments,
- string = toString(args[0]);
-
- return args.length < 3 ? string : string.replace(args[1], args[2]);
-}
-
-module.exports = replace;
diff --git a/assets/node_modules/lodash/rest.js b/assets/node_modules/lodash/rest.js
deleted file mode 100644
index eaaad00..0000000
--- a/assets/node_modules/lodash/rest.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var baseRest = require('./_baseRest'),
- toInteger = require('./toInteger');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a function that invokes `func` with the `this` binding of the
- * created function and arguments from `start` and beyond provided as
- * an array.
- *
- * **Note:** This method is based on the
- * [rest parameter](https://mdn.io/rest_parameters).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Function
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var say = _.rest(function(what, names) {
- * return what + ' ' + _.initial(names).join(', ') +
- * (_.size(names) > 1 ? ', & ' : '') + _.last(names);
- * });
- *
- * say('hello', 'fred', 'barney', 'pebbles');
- * // => 'hello fred, barney, & pebbles'
- */
-function rest(func, start) {
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- start = start === undefined ? start : toInteger(start);
- return baseRest(func, start);
-}
-
-module.exports = rest;
diff --git a/assets/node_modules/lodash/result.js b/assets/node_modules/lodash/result.js
deleted file mode 100644
index eae1250..0000000
--- a/assets/node_modules/lodash/result.js
+++ /dev/null
@@ -1,56 +0,0 @@
-var castPath = require('./_castPath'),
- isFunction = require('./isFunction'),
- toKey = require('./_toKey');
-
-/**
- * This method is like `_.get` except that if the resolved value is a
- * function it's invoked with the `this` binding of its parent object and
- * its result is returned.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to resolve.
- * @param {*} [defaultValue] The value returned for `undefined` resolved values.
- * @returns {*} Returns the resolved value.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
- *
- * _.result(object, 'a[0].b.c1');
- * // => 3
- *
- * _.result(object, 'a[0].b.c2');
- * // => 4
- *
- * _.result(object, 'a[0].b.c3', 'default');
- * // => 'default'
- *
- * _.result(object, 'a[0].b.c3', _.constant('default'));
- * // => 'default'
- */
-function result(object, path, defaultValue) {
- path = castPath(path, object);
-
- var index = -1,
- length = path.length;
-
- // Ensure the loop is entered when path is empty.
- if (!length) {
- length = 1;
- object = undefined;
- }
- while (++index < length) {
- var value = object == null ? undefined : object[toKey(path[index])];
- if (value === undefined) {
- index = length;
- value = defaultValue;
- }
- object = isFunction(value) ? value.call(object) : value;
- }
- return object;
-}
-
-module.exports = result;
diff --git a/assets/node_modules/lodash/reverse.js b/assets/node_modules/lodash/reverse.js
deleted file mode 100644
index 21764af..0000000
--- a/assets/node_modules/lodash/reverse.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/** Used for built-in method references. */
-var arrayProto = Array.prototype;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeReverse = arrayProto.reverse;
-
-/**
- * Reverses `array` so that the first element becomes the last, the second
- * element becomes the second to last, and so on.
- *
- * **Note:** This method mutates `array` and is based on
- * [`Array#reverse`](https://mdn.io/Array/reverse).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = [1, 2, 3];
- *
- * _.reverse(array);
- * // => [3, 2, 1]
- *
- * console.log(array);
- * // => [3, 2, 1]
- */
-function reverse(array) {
- return array == null ? array : nativeReverse.call(array);
-}
-
-module.exports = reverse;
diff --git a/assets/node_modules/lodash/round.js b/assets/node_modules/lodash/round.js
deleted file mode 100644
index fccc831..0000000
--- a/assets/node_modules/lodash/round.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var createRound = require('./_createRound');
-
-/**
- * Computes `number` rounded to `precision`.
- *
- * @static
- * @memberOf _
- * @since 3.10.0
- * @category Math
- * @param {number} number The number to round.
- * @param {number} [precision=0] The precision to round to.
- * @returns {number} Returns the rounded number.
- * @example
- *
- * _.round(4.006);
- * // => 4
- *
- * _.round(4.006, 2);
- * // => 4.01
- *
- * _.round(4060, -2);
- * // => 4100
- */
-var round = createRound('round');
-
-module.exports = round;
diff --git a/assets/node_modules/lodash/sample.js b/assets/node_modules/lodash/sample.js
deleted file mode 100644
index 39c3560..0000000
--- a/assets/node_modules/lodash/sample.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var arraySample = require('./_arraySample'),
- baseSample = require('./_baseSample'),
- isArray = require('./isArray');
-
-/**
- * Gets a random element from `collection`.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to sample.
- * @returns {*} Returns the random element.
- * @example
- *
- * _.sample([1, 2, 3, 4]);
- * // => 2
- */
-function sample(collection) {
- var func = isArray(collection) ? arraySample : baseSample;
- return func(collection);
-}
-
-module.exports = sample;
diff --git a/assets/node_modules/lodash/sampleSize.js b/assets/node_modules/lodash/sampleSize.js
deleted file mode 100644
index a303686..0000000
--- a/assets/node_modules/lodash/sampleSize.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var arraySampleSize = require('./_arraySampleSize'),
- baseSampleSize = require('./_baseSampleSize'),
- isArray = require('./isArray'),
- isIterateeCall = require('./_isIterateeCall'),
- toInteger = require('./toInteger');
-
-/**
- * Gets `n` random elements at unique keys from `collection` up to the
- * size of `collection`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to sample.
- * @param {number} [n=1] The number of elements to sample.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the random elements.
- * @example
- *
- * _.sampleSize([1, 2, 3], 2);
- * // => [3, 1]
- *
- * _.sampleSize([1, 2, 3], 4);
- * // => [2, 3, 1]
- */
-function sampleSize(collection, n, guard) {
- if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
- n = 1;
- } else {
- n = toInteger(n);
- }
- var func = isArray(collection) ? arraySampleSize : baseSampleSize;
- return func(collection, n);
-}
-
-module.exports = sampleSize;
diff --git a/assets/node_modules/lodash/seq.js b/assets/node_modules/lodash/seq.js
deleted file mode 100644
index 1570c2d..0000000
--- a/assets/node_modules/lodash/seq.js
+++ /dev/null
@@ -1,16 +0,0 @@
-module.exports = {
- 'at': require('./wrapperAt'),
- 'chain': require('./chain'),
- 'commit': require('./commit'),
- 'lodash': require('./wrapperLodash'),
- 'next': require('./next'),
- 'plant': require('./plant'),
- 'reverse': require('./wrapperReverse'),
- 'tap': require('./tap'),
- 'thru': require('./thru'),
- 'toIterator': require('./toIterator'),
- 'toJSON': require('./toJSON'),
- 'value': require('./wrapperValue'),
- 'valueOf': require('./valueOf'),
- 'wrapperChain': require('./wrapperChain')
-};
diff --git a/assets/node_modules/lodash/set.js b/assets/node_modules/lodash/set.js
deleted file mode 100644
index d663002..0000000
--- a/assets/node_modules/lodash/set.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var baseSet = require('./_baseSet');
-
-/**
- * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
- * it's created. Arrays are created for missing index properties while objects
- * are created for all other missing properties. Use `_.setWith` to customize
- * `path` creation.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.set(object, 'a[0].b.c', 4);
- * console.log(object.a[0].b.c);
- * // => 4
- *
- * _.set(object, ['x', '0', 'y', 'z'], 5);
- * console.log(object.x[0].y.z);
- * // => 5
- */
-function set(object, path, value) {
- return object == null ? object : baseSet(object, path, value);
-}
-
-module.exports = set;
diff --git a/assets/node_modules/lodash/setWith.js b/assets/node_modules/lodash/setWith.js
deleted file mode 100644
index fb3e0f6..0000000
--- a/assets/node_modules/lodash/setWith.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var baseSet = require('./_baseSet');
-
-/**
- * This method is like `_.set` except that it accepts `customizer` which is
- * invoked to produce the objects of `path`. If `customizer` returns `undefined`
- * path creation is handled by the method instead. The `customizer` is invoked
- * with three arguments: (nsValue, key, nsObject).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {*} value The value to set.
- * @param {Function} [customizer] The function to customize assigned values.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = {};
- *
- * _.setWith(object, '[0][1]', 'a', Object);
- * // => { '0': { '1': 'a' } }
- */
-function setWith(object, path, value, customizer) {
- customizer = typeof customizer == 'function' ? customizer : undefined;
- return object == null ? object : baseSet(object, path, value, customizer);
-}
-
-module.exports = setWith;
diff --git a/assets/node_modules/lodash/shuffle.js b/assets/node_modules/lodash/shuffle.js
deleted file mode 100644
index 2b72da7..0000000
--- a/assets/node_modules/lodash/shuffle.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var arrayShuffle = require('./_arrayShuffle'),
- baseShuffle = require('./_baseShuffle'),
- isArray = require('./isArray');
-
-/**
- * Creates an array of shuffled values, using a version of the
- * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to shuffle.
- * @returns {Array} Returns the new shuffled array.
- * @example
- *
- * _.shuffle([1, 2, 3, 4]);
- * // => [4, 1, 3, 2]
- */
-function shuffle(collection) {
- var func = isArray(collection) ? arrayShuffle : baseShuffle;
- return func(collection);
-}
-
-module.exports = shuffle;
diff --git a/assets/node_modules/lodash/size.js b/assets/node_modules/lodash/size.js
deleted file mode 100644
index 3561fc1..0000000
--- a/assets/node_modules/lodash/size.js
+++ /dev/null
@@ -1,46 +0,0 @@
-var baseKeys = require('./_baseKeys'),
- getTag = require('./_getTag'),
- isArrayLike = require('./isArrayLike'),
- isString = require('./isString'),
- stringSize = require('./_stringSize');
-
-/** `Object#toString` result references. */
-var mapTag = '[object Map]',
- setTag = '[object Set]';
-
-/**
- * Gets the size of `collection` by returning its length for array-like
- * values or the number of own enumerable string keyed properties for objects.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object|string} collection The collection to inspect.
- * @returns {number} Returns the collection size.
- * @example
- *
- * _.size([1, 2, 3]);
- * // => 3
- *
- * _.size({ 'a': 1, 'b': 2 });
- * // => 2
- *
- * _.size('pebbles');
- * // => 7
- */
-function size(collection) {
- if (collection == null) {
- return 0;
- }
- if (isArrayLike(collection)) {
- return isString(collection) ? stringSize(collection) : collection.length;
- }
- var tag = getTag(collection);
- if (tag == mapTag || tag == setTag) {
- return collection.size;
- }
- return baseKeys(collection).length;
-}
-
-module.exports = size;
diff --git a/assets/node_modules/lodash/slice.js b/assets/node_modules/lodash/slice.js
deleted file mode 100644
index f732442..0000000
--- a/assets/node_modules/lodash/slice.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var baseSlice = require('./_baseSlice'),
- isIterateeCall = require('./_isIterateeCall'),
- toInteger = require('./toInteger');
-
-/**
- * Creates a slice of `array` from `start` up to, but not including, `end`.
- *
- * **Note:** This method is used instead of
- * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
- * returned.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to slice.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the slice of `array`.
- */
-function slice(array, start, end) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return [];
- }
- if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
- start = 0;
- end = length;
- }
- else {
- start = start == null ? 0 : toInteger(start);
- end = end === undefined ? length : toInteger(end);
- }
- return baseSlice(array, start, end);
-}
-
-module.exports = slice;
diff --git a/assets/node_modules/lodash/snakeCase.js b/assets/node_modules/lodash/snakeCase.js
deleted file mode 100644
index 27f2a76..0000000
--- a/assets/node_modules/lodash/snakeCase.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var createCompounder = require('./_createCompounder');
-
-/**
- * Converts `string` to
- * [snake case](https://en.wikipedia.org/wiki/Snake_case).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the snake cased string.
- * @example
- *
- * _.snakeCase('Foo Bar');
- * // => 'foo_bar'
- *
- * _.snakeCase('fooBar');
- * // => 'foo_bar'
- *
- * _.snakeCase('--FOO-BAR--');
- * // => 'foo_bar'
- */
-var snakeCase = createCompounder(function(result, word, index) {
- return result + (index ? '_' : '') + word.toLowerCase();
-});
-
-module.exports = snakeCase;
diff --git a/assets/node_modules/lodash/some.js b/assets/node_modules/lodash/some.js
deleted file mode 100644
index 9c1d08c..0000000
--- a/assets/node_modules/lodash/some.js
+++ /dev/null
@@ -1,51 +0,0 @@
-var arraySome = require('./_arraySome'),
- baseIteratee = require('./_baseIteratee'),
- baseSome = require('./_baseSome'),
- isArray = require('./isArray'),
- isIterateeCall = require('./_isIterateeCall');
-
-/**
- * Checks if `predicate` returns truthy for **any** element of `collection`.
- * Iteration is stopped once `predicate` returns truthy. The predicate is
- * invoked with three arguments: (value, index|key, collection).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- * else `false`.
- * @example
- *
- * _.some([null, 0, 'yes', false], Boolean);
- * // => true
- *
- * var users = [
- * { 'user': 'barney', 'active': true },
- * { 'user': 'fred', 'active': false }
- * ];
- *
- * // The `_.matches` iteratee shorthand.
- * _.some(users, { 'user': 'barney', 'active': false });
- * // => false
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.some(users, ['active', false]);
- * // => true
- *
- * // The `_.property` iteratee shorthand.
- * _.some(users, 'active');
- * // => true
- */
-function some(collection, predicate, guard) {
- var func = isArray(collection) ? arraySome : baseSome;
- if (guard && isIterateeCall(collection, predicate, guard)) {
- predicate = undefined;
- }
- return func(collection, baseIteratee(predicate, 3));
-}
-
-module.exports = some;
diff --git a/assets/node_modules/lodash/sortBy.js b/assets/node_modules/lodash/sortBy.js
deleted file mode 100644
index 4ba8f7a..0000000
--- a/assets/node_modules/lodash/sortBy.js
+++ /dev/null
@@ -1,48 +0,0 @@
-var baseFlatten = require('./_baseFlatten'),
- baseOrderBy = require('./_baseOrderBy'),
- baseRest = require('./_baseRest'),
- isIterateeCall = require('./_isIterateeCall');
-
-/**
- * Creates an array of elements, sorted in ascending order by the results of
- * running each element in a collection thru each iteratee. This method
- * performs a stable sort, that is, it preserves the original sort order of
- * equal elements. The iteratees are invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {...(Function|Function[])} [iteratees=[_.identity]]
- * The iteratees to sort by.
- * @returns {Array} Returns the new sorted array.
- * @example
- *
- * var users = [
- * { 'user': 'fred', 'age': 48 },
- * { 'user': 'barney', 'age': 36 },
- * { 'user': 'fred', 'age': 40 },
- * { 'user': 'barney', 'age': 34 }
- * ];
- *
- * _.sortBy(users, [function(o) { return o.user; }]);
- * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
- *
- * _.sortBy(users, ['user', 'age']);
- * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]
- */
-var sortBy = baseRest(function(collection, iteratees) {
- if (collection == null) {
- return [];
- }
- var length = iteratees.length;
- if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
- iteratees = [];
- } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
- iteratees = [iteratees[0]];
- }
- return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
-});
-
-module.exports = sortBy;
diff --git a/assets/node_modules/lodash/sortedIndex.js b/assets/node_modules/lodash/sortedIndex.js
deleted file mode 100644
index e763473..0000000
--- a/assets/node_modules/lodash/sortedIndex.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var baseSortedIndex = require('./_baseSortedIndex');
-
-/**
- * Uses a binary search to determine the lowest index at which `value`
- * should be inserted into `array` in order to maintain its sort order.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @returns {number} Returns the index at which `value` should be inserted
- * into `array`.
- * @example
- *
- * _.sortedIndex([30, 50], 40);
- * // => 1
- */
-function sortedIndex(array, value) {
- return baseSortedIndex(array, value);
-}
-
-module.exports = sortedIndex;
diff --git a/assets/node_modules/lodash/sortedIndexBy.js b/assets/node_modules/lodash/sortedIndexBy.js
deleted file mode 100644
index 945f23c..0000000
--- a/assets/node_modules/lodash/sortedIndexBy.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var baseIteratee = require('./_baseIteratee'),
- baseSortedIndexBy = require('./_baseSortedIndexBy');
-
-/**
- * This method is like `_.sortedIndex` except that it accepts `iteratee`
- * which is invoked for `value` and each element of `array` to compute their
- * sort ranking. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {number} Returns the index at which `value` should be inserted
- * into `array`.
- * @example
- *
- * var objects = [{ 'x': 4 }, { 'x': 5 }];
- *
- * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
- * // => 0
- *
- * // The `_.property` iteratee shorthand.
- * _.sortedIndexBy(objects, { 'x': 4 }, 'x');
- * // => 0
- */
-function sortedIndexBy(array, value, iteratee) {
- return baseSortedIndexBy(array, value, baseIteratee(iteratee, 2));
-}
-
-module.exports = sortedIndexBy;
diff --git a/assets/node_modules/lodash/sortedIndexOf.js b/assets/node_modules/lodash/sortedIndexOf.js
deleted file mode 100644
index e2d3b7a..0000000
--- a/assets/node_modules/lodash/sortedIndexOf.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var baseSortedIndex = require('./_baseSortedIndex'),
- eq = require('./eq');
-
-/**
- * This method is like `_.indexOf` except that it performs a binary
- * search on a sorted `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- * @example
- *
- * _.sortedIndexOf([4, 5, 5, 5, 6], 5);
- * // => 1
- */
-function sortedIndexOf(array, value) {
- var length = array == null ? 0 : array.length;
- if (length) {
- var index = baseSortedIndex(array, value);
- if (index < length && eq(array[index], value)) {
- return index;
- }
- }
- return -1;
-}
-
-module.exports = sortedIndexOf;
diff --git a/assets/node_modules/lodash/sortedLastIndex.js b/assets/node_modules/lodash/sortedLastIndex.js
deleted file mode 100644
index 9380cb9..0000000
--- a/assets/node_modules/lodash/sortedLastIndex.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var baseSortedIndex = require('./_baseSortedIndex');
-
-/**
- * This method is like `_.sortedIndex` except that it returns the highest
- * index at which `value` should be inserted into `array` in order to
- * maintain its sort order.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @returns {number} Returns the index at which `value` should be inserted
- * into `array`.
- * @example
- *
- * _.sortedLastIndex([4, 5, 5, 5, 6], 5);
- * // => 4
- */
-function sortedLastIndex(array, value) {
- return baseSortedIndex(array, value, true);
-}
-
-module.exports = sortedLastIndex;
diff --git a/assets/node_modules/lodash/sortedLastIndexBy.js b/assets/node_modules/lodash/sortedLastIndexBy.js
deleted file mode 100644
index 9225eeb..0000000
--- a/assets/node_modules/lodash/sortedLastIndexBy.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var baseIteratee = require('./_baseIteratee'),
- baseSortedIndexBy = require('./_baseSortedIndexBy');
-
-/**
- * This method is like `_.sortedLastIndex` except that it accepts `iteratee`
- * which is invoked for `value` and each element of `array` to compute their
- * sort ranking. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {number} Returns the index at which `value` should be inserted
- * into `array`.
- * @example
- *
- * var objects = [{ 'x': 4 }, { 'x': 5 }];
- *
- * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
- * // => 1
- *
- * // The `_.property` iteratee shorthand.
- * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
- * // => 1
- */
-function sortedLastIndexBy(array, value, iteratee) {
- return baseSortedIndexBy(array, value, baseIteratee(iteratee, 2), true);
-}
-
-module.exports = sortedLastIndexBy;
diff --git a/assets/node_modules/lodash/sortedLastIndexOf.js b/assets/node_modules/lodash/sortedLastIndexOf.js
deleted file mode 100644
index 18bc4c5..0000000
--- a/assets/node_modules/lodash/sortedLastIndexOf.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var baseSortedIndex = require('./_baseSortedIndex'),
- eq = require('./eq');
-
-/**
- * This method is like `_.lastIndexOf` except that it performs a binary
- * search on a sorted `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- * @example
- *
- * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);
- * // => 3
- */
-function sortedLastIndexOf(array, value) {
- var length = array == null ? 0 : array.length;
- if (length) {
- var index = baseSortedIndex(array, value, true) - 1;
- if (eq(array[index], value)) {
- return index;
- }
- }
- return -1;
-}
-
-module.exports = sortedLastIndexOf;
diff --git a/assets/node_modules/lodash/sortedUniq.js b/assets/node_modules/lodash/sortedUniq.js
deleted file mode 100644
index 866db31..0000000
--- a/assets/node_modules/lodash/sortedUniq.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var baseSortedUniq = require('./_baseSortedUniq');
-
-/**
- * This method is like `_.uniq` except that it's designed and optimized
- * for sorted arrays.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.sortedUniq([1, 1, 2]);
- * // => [1, 2]
- */
-function sortedUniq(array) {
- return (array && array.length)
- ? baseSortedUniq(array)
- : [];
-}
-
-module.exports = sortedUniq;
diff --git a/assets/node_modules/lodash/sortedUniqBy.js b/assets/node_modules/lodash/sortedUniqBy.js
deleted file mode 100644
index 4f05ebe..0000000
--- a/assets/node_modules/lodash/sortedUniqBy.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var baseIteratee = require('./_baseIteratee'),
- baseSortedUniq = require('./_baseSortedUniq');
-
-/**
- * This method is like `_.uniqBy` except that it's designed and optimized
- * for sorted arrays.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
- * // => [1.1, 2.3]
- */
-function sortedUniqBy(array, iteratee) {
- return (array && array.length)
- ? baseSortedUniq(array, baseIteratee(iteratee, 2))
- : [];
-}
-
-module.exports = sortedUniqBy;
diff --git a/assets/node_modules/lodash/split.js b/assets/node_modules/lodash/split.js
deleted file mode 100644
index 956b48a..0000000
--- a/assets/node_modules/lodash/split.js
+++ /dev/null
@@ -1,52 +0,0 @@
-var baseToString = require('./_baseToString'),
- castSlice = require('./_castSlice'),
- hasUnicode = require('./_hasUnicode'),
- isIterateeCall = require('./_isIterateeCall'),
- isRegExp = require('./isRegExp'),
- stringToArray = require('./_stringToArray'),
- toString = require('./toString');
-
-/** Used as references for the maximum length and index of an array. */
-var MAX_ARRAY_LENGTH = 4294967295;
-
-/**
- * Splits `string` by `separator`.
- *
- * **Note:** This method is based on
- * [`String#split`](https://mdn.io/String/split).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to split.
- * @param {RegExp|string} separator The separator pattern to split by.
- * @param {number} [limit] The length to truncate results to.
- * @returns {Array} Returns the string segments.
- * @example
- *
- * _.split('a-b-c', '-', 2);
- * // => ['a', 'b']
- */
-function split(string, separator, limit) {
- if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {
- separator = limit = undefined;
- }
- limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
- if (!limit) {
- return [];
- }
- string = toString(string);
- if (string && (
- typeof separator == 'string' ||
- (separator != null && !isRegExp(separator))
- )) {
- separator = baseToString(separator);
- if (!separator && hasUnicode(string)) {
- return castSlice(stringToArray(string), 0, limit);
- }
- }
- return string.split(separator, limit);
-}
-
-module.exports = split;
diff --git a/assets/node_modules/lodash/spread.js b/assets/node_modules/lodash/spread.js
deleted file mode 100644
index 60a08e2..0000000
--- a/assets/node_modules/lodash/spread.js
+++ /dev/null
@@ -1,63 +0,0 @@
-var apply = require('./_apply'),
- arrayPush = require('./_arrayPush'),
- baseRest = require('./_baseRest'),
- castSlice = require('./_castSlice'),
- toInteger = require('./toInteger');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Creates a function that invokes `func` with the `this` binding of the
- * create function and an array of arguments much like
- * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).
- *
- * **Note:** This method is based on the
- * [spread operator](https://mdn.io/spread_operator).
- *
- * @static
- * @memberOf _
- * @since 3.2.0
- * @category Function
- * @param {Function} func The function to spread arguments over.
- * @param {number} [start=0] The start position of the spread.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var say = _.spread(function(who, what) {
- * return who + ' says ' + what;
- * });
- *
- * say(['fred', 'hello']);
- * // => 'fred says hello'
- *
- * var numbers = Promise.all([
- * Promise.resolve(40),
- * Promise.resolve(36)
- * ]);
- *
- * numbers.then(_.spread(function(x, y) {
- * return x + y;
- * }));
- * // => a Promise of 76
- */
-function spread(func, start) {
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- start = start == null ? 0 : nativeMax(toInteger(start), 0);
- return baseRest(function(args) {
- var array = args[start],
- otherArgs = castSlice(args, 0, start);
-
- if (array) {
- arrayPush(otherArgs, array);
- }
- return apply(func, this, otherArgs);
- });
-}
-
-module.exports = spread;
diff --git a/assets/node_modules/lodash/startCase.js b/assets/node_modules/lodash/startCase.js
deleted file mode 100644
index a48f21c..0000000
--- a/assets/node_modules/lodash/startCase.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var createCompounder = require('./_createCompounder'),
- upperFirst = require('./upperFirst');
-
-/**
- * Converts `string` to
- * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).
- *
- * @static
- * @memberOf _
- * @since 3.1.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the start cased string.
- * @example
- *
- * _.startCase('--foo-bar--');
- * // => 'Foo Bar'
- *
- * _.startCase('fooBar');
- * // => 'Foo Bar'
- *
- * _.startCase('__FOO_BAR__');
- * // => 'FOO BAR'
- */
-var startCase = createCompounder(function(result, word, index) {
- return result + (index ? ' ' : '') + upperFirst(word);
-});
-
-module.exports = startCase;
diff --git a/assets/node_modules/lodash/startsWith.js b/assets/node_modules/lodash/startsWith.js
deleted file mode 100644
index 956c098..0000000
--- a/assets/node_modules/lodash/startsWith.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var baseClamp = require('./_baseClamp'),
- baseToString = require('./_baseToString'),
- toInteger = require('./toInteger'),
- toString = require('./toString');
-
-/**
- * Checks if `string` starts with the given target string.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to inspect.
- * @param {string} [target] The string to search for.
- * @param {number} [position=0] The position to search from.
- * @returns {boolean} Returns `true` if `string` starts with `target`,
- * else `false`.
- * @example
- *
- * _.startsWith('abc', 'a');
- * // => true
- *
- * _.startsWith('abc', 'b');
- * // => false
- *
- * _.startsWith('abc', 'b', 1);
- * // => true
- */
-function startsWith(string, target, position) {
- string = toString(string);
- position = position == null
- ? 0
- : baseClamp(toInteger(position), 0, string.length);
-
- target = baseToString(target);
- return string.slice(position, position + target.length) == target;
-}
-
-module.exports = startsWith;
diff --git a/assets/node_modules/lodash/string.js b/assets/node_modules/lodash/string.js
deleted file mode 100644
index 2c829c1..0000000
--- a/assets/node_modules/lodash/string.js
+++ /dev/null
@@ -1,33 +0,0 @@
-module.exports = {
- 'camelCase': require('./camelCase'),
- 'capitalize': require('./capitalize'),
- 'deburr': require('./deburr'),
- 'endsWith': require('./endsWith'),
- 'escape': require('./escape'),
- 'escapeRegExp': require('./escapeRegExp'),
- 'kebabCase': require('./kebabCase'),
- 'lowerCase': require('./lowerCase'),
- 'lowerFirst': require('./lowerFirst'),
- 'pad': require('./pad'),
- 'padEnd': require('./padEnd'),
- 'padStart': require('./padStart'),
- 'parseInt': require('./parseInt'),
- 'repeat': require('./repeat'),
- 'replace': require('./replace'),
- 'snakeCase': require('./snakeCase'),
- 'split': require('./split'),
- 'startCase': require('./startCase'),
- 'startsWith': require('./startsWith'),
- 'template': require('./template'),
- 'templateSettings': require('./templateSettings'),
- 'toLower': require('./toLower'),
- 'toUpper': require('./toUpper'),
- 'trim': require('./trim'),
- 'trimEnd': require('./trimEnd'),
- 'trimStart': require('./trimStart'),
- 'truncate': require('./truncate'),
- 'unescape': require('./unescape'),
- 'upperCase': require('./upperCase'),
- 'upperFirst': require('./upperFirst'),
- 'words': require('./words')
-};
diff --git a/assets/node_modules/lodash/stubArray.js b/assets/node_modules/lodash/stubArray.js
deleted file mode 100644
index f460c15..0000000
--- a/assets/node_modules/lodash/stubArray.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * This method returns a new empty array.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {Array} Returns the new empty array.
- * @example
- *
- * var arrays = _.times(2, _.stubArray);
- *
- * console.log(arrays);
- * // => [[], []]
- *
- * console.log(arrays[0] === arrays[1]);
- * // => false
- */
-function stubArray() {
- return [];
-}
-
-module.exports = stubArray;
diff --git a/assets/node_modules/lodash/stubFalse.js b/assets/node_modules/lodash/stubFalse.js
deleted file mode 100644
index 9b346fc..0000000
--- a/assets/node_modules/lodash/stubFalse.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * This method returns `false`.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {boolean} Returns `false`.
- * @example
- *
- * _.times(2, _.stubFalse);
- * // => [false, false]
- */
-function stubFalse() {
- return false;
-}
-
-module.exports = stubFalse;
diff --git a/assets/node_modules/lodash/stubObject.js b/assets/node_modules/lodash/stubObject.js
deleted file mode 100644
index 1d190a1..0000000
--- a/assets/node_modules/lodash/stubObject.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * This method returns a new empty object.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {Object} Returns the new empty object.
- * @example
- *
- * var objects = _.times(2, _.stubObject);
- *
- * console.log(objects);
- * // => [{}, {}]
- *
- * console.log(objects[0] === objects[1]);
- * // => false
- */
-function stubObject() {
- return {};
-}
-
-module.exports = stubObject;
diff --git a/assets/node_modules/lodash/stubString.js b/assets/node_modules/lodash/stubString.js
deleted file mode 100644
index 2db0bed..0000000
--- a/assets/node_modules/lodash/stubString.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * This method returns an empty string.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {string} Returns the empty string.
- * @example
- *
- * _.times(2, _.stubString);
- * // => ['', '']
- */
-function stubString() {
- return '';
-}
-
-module.exports = stubString;
diff --git a/assets/node_modules/lodash/stubTrue.js b/assets/node_modules/lodash/stubTrue.js
deleted file mode 100644
index af3cc9e..0000000
--- a/assets/node_modules/lodash/stubTrue.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * This method returns `true`.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {boolean} Returns `true`.
- * @example
- *
- * _.times(2, _.stubTrue);
- * // => [true, true]
- */
-function stubTrue() {
- return true;
-}
-
-module.exports = stubTrue;
diff --git a/assets/node_modules/lodash/subtract.js b/assets/node_modules/lodash/subtract.js
deleted file mode 100644
index 6720778..0000000
--- a/assets/node_modules/lodash/subtract.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var createMathOperation = require('./_createMathOperation');
-
-/**
- * Subtract two numbers.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {number} minuend The first number in a subtraction.
- * @param {number} subtrahend The second number in a subtraction.
- * @returns {number} Returns the difference.
- * @example
- *
- * _.subtract(6, 4);
- * // => 2
- */
-var subtract = createMathOperation(function(minuend, subtrahend) {
- return minuend - subtrahend;
-}, 0);
-
-module.exports = subtract;
diff --git a/assets/node_modules/lodash/sum.js b/assets/node_modules/lodash/sum.js
deleted file mode 100644
index 3b07ee4..0000000
--- a/assets/node_modules/lodash/sum.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var baseSum = require('./_baseSum'),
- identity = require('./identity');
-
-/**
- * Computes the sum of the values in `array`.
- *
- * @static
- * @memberOf _
- * @since 3.4.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {number} Returns the sum.
- * @example
- *
- * _.sum([4, 2, 8, 6]);
- * // => 20
- */
-function sum(array) {
- return (array && array.length)
- ? baseSum(array, identity)
- : 0;
-}
-
-module.exports = sum;
diff --git a/assets/node_modules/lodash/sumBy.js b/assets/node_modules/lodash/sumBy.js
deleted file mode 100644
index 00e36d0..0000000
--- a/assets/node_modules/lodash/sumBy.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var baseIteratee = require('./_baseIteratee'),
- baseSum = require('./_baseSum');
-
-/**
- * This method is like `_.sum` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the value to be summed.
- * The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {number} Returns the sum.
- * @example
- *
- * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
- *
- * _.sumBy(objects, function(o) { return o.n; });
- * // => 20
- *
- * // The `_.property` iteratee shorthand.
- * _.sumBy(objects, 'n');
- * // => 20
- */
-function sumBy(array, iteratee) {
- return (array && array.length)
- ? baseSum(array, baseIteratee(iteratee, 2))
- : 0;
-}
-
-module.exports = sumBy;
diff --git a/assets/node_modules/lodash/tail.js b/assets/node_modules/lodash/tail.js
deleted file mode 100644
index 001c22d..0000000
--- a/assets/node_modules/lodash/tail.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var baseSlice = require('./_baseSlice');
-
-/**
- * Gets all but the first element of `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.tail([1, 2, 3]);
- * // => [2, 3]
- */
-function tail(array) {
- var length = array == null ? 0 : array.length;
- return length ? baseSlice(array, 1, length) : [];
-}
-
-module.exports = tail;
diff --git a/assets/node_modules/lodash/take.js b/assets/node_modules/lodash/take.js
deleted file mode 100644
index b7da712..0000000
--- a/assets/node_modules/lodash/take.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var baseSlice = require('./_baseSlice'),
- toInteger = require('./toInteger');
-
-/**
- * Creates a slice of `array` with `n` elements taken from the beginning.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to take.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.take([1, 2, 3]);
- * // => [1]
- *
- * _.take([1, 2, 3], 2);
- * // => [1, 2]
- *
- * _.take([1, 2, 3], 5);
- * // => [1, 2, 3]
- *
- * _.take([1, 2, 3], 0);
- * // => []
- */
-function take(array, n, guard) {
- if (!(array && array.length)) {
- return [];
- }
- n = (guard || n === undefined) ? 1 : toInteger(n);
- return baseSlice(array, 0, n < 0 ? 0 : n);
-}
-
-module.exports = take;
diff --git a/assets/node_modules/lodash/takeRight.js b/assets/node_modules/lodash/takeRight.js
deleted file mode 100644
index 6c37506..0000000
--- a/assets/node_modules/lodash/takeRight.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var baseSlice = require('./_baseSlice'),
- toInteger = require('./toInteger');
-
-/**
- * Creates a slice of `array` with `n` elements taken from the end.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to take.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.takeRight([1, 2, 3]);
- * // => [3]
- *
- * _.takeRight([1, 2, 3], 2);
- * // => [2, 3]
- *
- * _.takeRight([1, 2, 3], 5);
- * // => [1, 2, 3]
- *
- * _.takeRight([1, 2, 3], 0);
- * // => []
- */
-function takeRight(array, n, guard) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return [];
- }
- n = (guard || n === undefined) ? 1 : toInteger(n);
- n = length - n;
- return baseSlice(array, n < 0 ? 0 : n, length);
-}
-
-module.exports = takeRight;
diff --git a/assets/node_modules/lodash/takeRightWhile.js b/assets/node_modules/lodash/takeRightWhile.js
deleted file mode 100644
index 94ab783..0000000
--- a/assets/node_modules/lodash/takeRightWhile.js
+++ /dev/null
@@ -1,45 +0,0 @@
-var baseIteratee = require('./_baseIteratee'),
- baseWhile = require('./_baseWhile');
-
-/**
- * Creates a slice of `array` with elements taken from the end. Elements are
- * taken until `predicate` returns falsey. The predicate is invoked with
- * three arguments: (value, index, array).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'active': true },
- * { 'user': 'fred', 'active': false },
- * { 'user': 'pebbles', 'active': false }
- * ];
- *
- * _.takeRightWhile(users, function(o) { return !o.active; });
- * // => objects for ['fred', 'pebbles']
- *
- * // The `_.matches` iteratee shorthand.
- * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
- * // => objects for ['pebbles']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.takeRightWhile(users, ['active', false]);
- * // => objects for ['fred', 'pebbles']
- *
- * // The `_.property` iteratee shorthand.
- * _.takeRightWhile(users, 'active');
- * // => []
- */
-function takeRightWhile(array, predicate) {
- return (array && array.length)
- ? baseWhile(array, baseIteratee(predicate, 3), false, true)
- : [];
-}
-
-module.exports = takeRightWhile;
diff --git a/assets/node_modules/lodash/takeWhile.js b/assets/node_modules/lodash/takeWhile.js
deleted file mode 100644
index e88f591..0000000
--- a/assets/node_modules/lodash/takeWhile.js
+++ /dev/null
@@ -1,45 +0,0 @@
-var baseIteratee = require('./_baseIteratee'),
- baseWhile = require('./_baseWhile');
-
-/**
- * Creates a slice of `array` with elements taken from the beginning. Elements
- * are taken until `predicate` returns falsey. The predicate is invoked with
- * three arguments: (value, index, array).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'active': false },
- * { 'user': 'fred', 'active': false },
- * { 'user': 'pebbles', 'active': true }
- * ];
- *
- * _.takeWhile(users, function(o) { return !o.active; });
- * // => objects for ['barney', 'fred']
- *
- * // The `_.matches` iteratee shorthand.
- * _.takeWhile(users, { 'user': 'barney', 'active': false });
- * // => objects for ['barney']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.takeWhile(users, ['active', false]);
- * // => objects for ['barney', 'fred']
- *
- * // The `_.property` iteratee shorthand.
- * _.takeWhile(users, 'active');
- * // => []
- */
-function takeWhile(array, predicate) {
- return (array && array.length)
- ? baseWhile(array, baseIteratee(predicate, 3))
- : [];
-}
-
-module.exports = takeWhile;
diff --git a/assets/node_modules/lodash/tap.js b/assets/node_modules/lodash/tap.js
deleted file mode 100644
index d007285..0000000
--- a/assets/node_modules/lodash/tap.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * This method invokes `interceptor` and returns `value`. The interceptor
- * is invoked with one argument; (value). The purpose of this method is to
- * "tap into" a method chain sequence in order to modify intermediate results.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Seq
- * @param {*} value The value to provide to `interceptor`.
- * @param {Function} interceptor The function to invoke.
- * @returns {*} Returns `value`.
- * @example
- *
- * _([1, 2, 3])
- * .tap(function(array) {
- * // Mutate input array.
- * array.pop();
- * })
- * .reverse()
- * .value();
- * // => [2, 1]
- */
-function tap(value, interceptor) {
- interceptor(value);
- return value;
-}
-
-module.exports = tap;
diff --git a/assets/node_modules/lodash/template.js b/assets/node_modules/lodash/template.js
deleted file mode 100644
index f71d130..0000000
--- a/assets/node_modules/lodash/template.js
+++ /dev/null
@@ -1,253 +0,0 @@
-var assignInWith = require('./assignInWith'),
- attempt = require('./attempt'),
- baseValues = require('./_baseValues'),
- customDefaultsAssignIn = require('./_customDefaultsAssignIn'),
- escapeStringChar = require('./_escapeStringChar'),
- isError = require('./isError'),
- isIterateeCall = require('./_isIterateeCall'),
- keys = require('./keys'),
- reInterpolate = require('./_reInterpolate'),
- templateSettings = require('./templateSettings'),
- toString = require('./toString');
-
-/** Used to match empty string literals in compiled template source. */
-var reEmptyStringLeading = /\b__p \+= '';/g,
- reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
- reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
-
-/**
- * Used to match
- * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
- */
-var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
-
-/** Used to ensure capturing order of template delimiters. */
-var reNoMatch = /($^)/;
-
-/** Used to match unescaped characters in compiled string literals. */
-var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Creates a compiled template function that can interpolate data properties
- * in "interpolate" delimiters, HTML-escape interpolated data properties in
- * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
- * properties may be accessed as free variables in the template. If a setting
- * object is given, it takes precedence over `_.templateSettings` values.
- *
- * **Note:** In the development build `_.template` utilizes
- * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
- * for easier debugging.
- *
- * For more information on precompiling templates see
- * [lodash's custom builds documentation](https://lodash.com/custom-builds).
- *
- * For more information on Chrome extension sandboxes see
- * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category String
- * @param {string} [string=''] The template string.
- * @param {Object} [options={}] The options object.
- * @param {RegExp} [options.escape=_.templateSettings.escape]
- * The HTML "escape" delimiter.
- * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]
- * The "evaluate" delimiter.
- * @param {Object} [options.imports=_.templateSettings.imports]
- * An object to import into the template as free variables.
- * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]
- * The "interpolate" delimiter.
- * @param {string} [options.sourceURL='templateSources[n]']
- * The sourceURL of the compiled template.
- * @param {string} [options.variable='obj']
- * The data object variable name.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Function} Returns the compiled template function.
- * @example
- *
- * // Use the "interpolate" delimiter to create a compiled template.
- * var compiled = _.template('hello <%= user %>!');
- * compiled({ 'user': 'fred' });
- * // => 'hello fred!'
- *
- * // Use the HTML "escape" delimiter to escape data property values.
- * var compiled = _.template('<b><%- value %></b>');
- * compiled({ 'value': '<script>' });
- * // => '<b>&lt;script&gt;</b>'
- *
- * // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
- * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
- * compiled({ 'users': ['fred', 'barney'] });
- * // => '<li>fred</li><li>barney</li>'
- *
- * // Use the internal `print` function in "evaluate" delimiters.
- * var compiled = _.template('<% print("hello " + user); %>!');
- * compiled({ 'user': 'barney' });
- * // => 'hello barney!'
- *
- * // Use the ES template literal delimiter as an "interpolate" delimiter.
- * // Disable support by replacing the "interpolate" delimiter.
- * var compiled = _.template('hello ${ user }!');
- * compiled({ 'user': 'pebbles' });
- * // => 'hello pebbles!'
- *
- * // Use backslashes to treat delimiters as plain text.
- * var compiled = _.template('<%= "\\<%- value %\\>" %>');
- * compiled({ 'value': 'ignored' });
- * // => '<%- value %>'
- *
- * // Use the `imports` option to import `jQuery` as `jq`.
- * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
- * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
- * compiled({ 'users': ['fred', 'barney'] });
- * // => '<li>fred</li><li>barney</li>'
- *
- * // Use the `sourceURL` option to specify a custom sourceURL for the template.
- * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
- * compiled(data);
- * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
- *
- * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
- * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
- * compiled.source;
- * // => function(data) {
- * // var __t, __p = '';
- * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
- * // return __p;
- * // }
- *
- * // Use custom template delimiters.
- * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
- * var compiled = _.template('hello {{ user }}!');
- * compiled({ 'user': 'mustache' });
- * // => 'hello mustache!'
- *
- * // Use the `source` property to inline compiled templates for meaningful
- * // line numbers in error messages and stack traces.
- * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\
- * var JST = {\
- * "main": ' + _.template(mainText).source + '\
- * };\
- * ');
- */
-function template(string, options, guard) {
- // Based on John Resig's `tmpl` implementation
- // (http://ejohn.org/blog/javascript-micro-templating/)
- // and Laura Doktorova's doT.js (https://github.com/olado/doT).
- var settings = templateSettings.imports._.templateSettings || templateSettings;
-
- if (guard && isIterateeCall(string, options, guard)) {
- options = undefined;
- }
- string = toString(string);
- options = assignInWith({}, options, settings, customDefaultsAssignIn);
-
- var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),
- importsKeys = keys(imports),
- importsValues = baseValues(imports, importsKeys);
-
- var isEscaping,
- isEvaluating,
- index = 0,
- interpolate = options.interpolate || reNoMatch,
- source = "__p += '";
-
- // Compile the regexp to match each delimiter.
- var reDelimiters = RegExp(
- (options.escape || reNoMatch).source + '|' +
- interpolate.source + '|' +
- (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
- (options.evaluate || reNoMatch).source + '|$'
- , 'g');
-
- // Use a sourceURL for easier debugging.
- // The sourceURL gets injected into the source that's eval-ed, so be careful
- // with lookup (in case of e.g. prototype pollution), and strip newlines if any.
- // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection.
- var sourceURL = hasOwnProperty.call(options, 'sourceURL')
- ? ('//# sourceURL=' +
- (options.sourceURL + '').replace(/[\r\n]/g, ' ') +
- '\n')
- : '';
-
- string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
- interpolateValue || (interpolateValue = esTemplateValue);
-
- // Escape characters that can't be included in string literals.
- source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
-
- // Replace delimiters with snippets.
- if (escapeValue) {
- isEscaping = true;
- source += "' +\n__e(" + escapeValue + ") +\n'";
- }
- if (evaluateValue) {
- isEvaluating = true;
- source += "';\n" + evaluateValue + ";\n__p += '";
- }
- if (interpolateValue) {
- source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
- }
- index = offset + match.length;
-
- // The JS engine embedded in Adobe products needs `match` returned in
- // order to produce the correct `offset` value.
- return match;
- });
-
- source += "';\n";
-
- // If `variable` is not specified wrap a with-statement around the generated
- // code to add the data object to the top of the scope chain.
- // Like with sourceURL, we take care to not check the option's prototype,
- // as this configuration is a code injection vector.
- var variable = hasOwnProperty.call(options, 'variable') && options.variable;
- if (!variable) {
- source = 'with (obj) {\n' + source + '\n}\n';
- }
- // Cleanup code by stripping empty strings.
- source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
- .replace(reEmptyStringMiddle, '$1')
- .replace(reEmptyStringTrailing, '$1;');
-
- // Frame code as the function body.
- source = 'function(' + (variable || 'obj') + ') {\n' +
- (variable
- ? ''
- : 'obj || (obj = {});\n'
- ) +
- "var __t, __p = ''" +
- (isEscaping
- ? ', __e = _.escape'
- : ''
- ) +
- (isEvaluating
- ? ', __j = Array.prototype.join;\n' +
- "function print() { __p += __j.call(arguments, '') }\n"
- : ';\n'
- ) +
- source +
- 'return __p\n}';
-
- var result = attempt(function() {
- return Function(importsKeys, sourceURL + 'return ' + source)
- .apply(undefined, importsValues);
- });
-
- // Provide the compiled function's source by its `toString` method or
- // the `source` property as a convenience for inlining compiled templates.
- result.source = source;
- if (isError(result)) {
- throw result;
- }
- return result;
-}
-
-module.exports = template;
diff --git a/assets/node_modules/lodash/templateSettings.js b/assets/node_modules/lodash/templateSettings.js
deleted file mode 100644
index 5aa5924..0000000
--- a/assets/node_modules/lodash/templateSettings.js
+++ /dev/null
@@ -1,67 +0,0 @@
-var escape = require('./escape'),
- reEscape = require('./_reEscape'),
- reEvaluate = require('./_reEvaluate'),
- reInterpolate = require('./_reInterpolate');
-
-/**
- * By default, the template delimiters used by lodash are like those in
- * embedded Ruby (ERB) as well as ES2015 template strings. Change the
- * following template settings to use alternative delimiters.
- *
- * @static
- * @memberOf _
- * @type {Object}
- */
-var templateSettings = {
-
- /**
- * Used to detect `data` property values to be HTML-escaped.
- *
- * @memberOf _.templateSettings
- * @type {RegExp}
- */
- 'escape': reEscape,
-
- /**
- * Used to detect code to be evaluated.
- *
- * @memberOf _.templateSettings
- * @type {RegExp}
- */
- 'evaluate': reEvaluate,
-
- /**
- * Used to detect `data` property values to inject.
- *
- * @memberOf _.templateSettings
- * @type {RegExp}
- */
- 'interpolate': reInterpolate,
-
- /**
- * Used to reference the data object in the template text.
- *
- * @memberOf _.templateSettings
- * @type {string}
- */
- 'variable': '',
-
- /**
- * Used to import variables into the compiled template.
- *
- * @memberOf _.templateSettings
- * @type {Object}
- */
- 'imports': {
-
- /**
- * A reference to the `lodash` function.
- *
- * @memberOf _.templateSettings.imports
- * @type {Function}
- */
- '_': { 'escape': escape }
- }
-};
-
-module.exports = templateSettings;
diff --git a/assets/node_modules/lodash/throttle.js b/assets/node_modules/lodash/throttle.js
deleted file mode 100644
index e2bb806..0000000
--- a/assets/node_modules/lodash/throttle.js
+++ /dev/null
@@ -1,69 +0,0 @@
-var debounce = require('./debounce'),
- isObject = require('./isObject');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a throttled function that only invokes `func` at most once per
- * every `wait` milliseconds. The throttled function comes with a `cancel`
- * method to cancel delayed `func` invocations and a `flush` method to
- * immediately invoke them. Provide `options` to indicate whether `func`
- * should be invoked on the leading and/or trailing edge of the `wait`
- * timeout. The `func` is invoked with the last arguments provided to the
- * throttled function. Subsequent calls to the throttled function return the
- * result of the last `func` invocation.
- *
- * **Note:** If `leading` and `trailing` options are `true`, `func` is
- * invoked on the trailing edge of the timeout only if the throttled function
- * is invoked more than once during the `wait` timeout.
- *
- * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
- * until to the next tick, similar to `setTimeout` with a timeout of `0`.
- *
- * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
- * for details over the differences between `_.throttle` and `_.debounce`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to throttle.
- * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
- * @param {Object} [options={}] The options object.
- * @param {boolean} [options.leading=true]
- * Specify invoking on the leading edge of the timeout.
- * @param {boolean} [options.trailing=true]
- * Specify invoking on the trailing edge of the timeout.
- * @returns {Function} Returns the new throttled function.
- * @example
- *
- * // Avoid excessively updating the position while scrolling.
- * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
- *
- * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
- * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
- * jQuery(element).on('click', throttled);
- *
- * // Cancel the trailing throttled invocation.
- * jQuery(window).on('popstate', throttled.cancel);
- */
-function throttle(func, wait, options) {
- var leading = true,
- trailing = true;
-
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- if (isObject(options)) {
- leading = 'leading' in options ? !!options.leading : leading;
- trailing = 'trailing' in options ? !!options.trailing : trailing;
- }
- return debounce(func, wait, {
- 'leading': leading,
- 'maxWait': wait,
- 'trailing': trailing
- });
-}
-
-module.exports = throttle;
diff --git a/assets/node_modules/lodash/thru.js b/assets/node_modules/lodash/thru.js
deleted file mode 100644
index 91e132e..0000000
--- a/assets/node_modules/lodash/thru.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * This method is like `_.tap` except that it returns the result of `interceptor`.
- * The purpose of this method is to "pass thru" values replacing intermediate
- * results in a method chain sequence.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Seq
- * @param {*} value The value to provide to `interceptor`.
- * @param {Function} interceptor The function to invoke.
- * @returns {*} Returns the result of `interceptor`.
- * @example
- *
- * _(' abc ')
- * .chain()
- * .trim()
- * .thru(function(value) {
- * return [value];
- * })
- * .value();
- * // => ['abc']
- */
-function thru(value, interceptor) {
- return interceptor(value);
-}
-
-module.exports = thru;
diff --git a/assets/node_modules/lodash/times.js b/assets/node_modules/lodash/times.js
deleted file mode 100644
index 266c90c..0000000
--- a/assets/node_modules/lodash/times.js
+++ /dev/null
@@ -1,51 +0,0 @@
-var baseTimes = require('./_baseTimes'),
- castFunction = require('./_castFunction'),
- toInteger = require('./toInteger');
-
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/** Used as references for the maximum length and index of an array. */
-var MAX_ARRAY_LENGTH = 4294967295;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min;
-
-/**
- * Invokes the iteratee `n` times, returning an array of the results of
- * each invocation. The iteratee is invoked with one argument; (index).
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {number} n The number of times to invoke `iteratee`.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the array of results.
- * @example
- *
- * _.times(3, String);
- * // => ['0', '1', '2']
- *
- * _.times(4, _.constant(0));
- * // => [0, 0, 0, 0]
- */
-function times(n, iteratee) {
- n = toInteger(n);
- if (n < 1 || n > MAX_SAFE_INTEGER) {
- return [];
- }
- var index = MAX_ARRAY_LENGTH,
- length = nativeMin(n, MAX_ARRAY_LENGTH);
-
- iteratee = castFunction(iteratee);
- n -= MAX_ARRAY_LENGTH;
-
- var result = baseTimes(length, iteratee);
- while (++index < n) {
- iteratee(index);
- }
- return result;
-}
-
-module.exports = times;
diff --git a/assets/node_modules/lodash/toArray.js b/assets/node_modules/lodash/toArray.js
deleted file mode 100644
index 9809584..0000000
--- a/assets/node_modules/lodash/toArray.js
+++ /dev/null
@@ -1,58 +0,0 @@
-var Symbol = require('./_Symbol'),
- copyArray = require('./_copyArray'),
- getTag = require('./_getTag'),
- isArrayLike = require('./isArrayLike'),
- isString = require('./isString'),
- iteratorToArray = require('./_iteratorToArray'),
- mapToArray = require('./_mapToArray'),
- setToArray = require('./_setToArray'),
- stringToArray = require('./_stringToArray'),
- values = require('./values');
-
-/** `Object#toString` result references. */
-var mapTag = '[object Map]',
- setTag = '[object Set]';
-
-/** Built-in value references. */
-var symIterator = Symbol ? Symbol.iterator : undefined;
-
-/**
- * Converts `value` to an array.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {Array} Returns the converted array.
- * @example
- *
- * _.toArray({ 'a': 1, 'b': 2 });
- * // => [1, 2]
- *
- * _.toArray('abc');
- * // => ['a', 'b', 'c']
- *
- * _.toArray(1);
- * // => []
- *
- * _.toArray(null);
- * // => []
- */
-function toArray(value) {
- if (!value) {
- return [];
- }
- if (isArrayLike(value)) {
- return isString(value) ? stringToArray(value) : copyArray(value);
- }
- if (symIterator && value[symIterator]) {
- return iteratorToArray(value[symIterator]());
- }
- var tag = getTag(value),
- func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
-
- return func(value);
-}
-
-module.exports = toArray;
diff --git a/assets/node_modules/lodash/toFinite.js b/assets/node_modules/lodash/toFinite.js
deleted file mode 100644
index 3b5bba6..0000000
--- a/assets/node_modules/lodash/toFinite.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var toNumber = require('./toNumber');
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0,
- MAX_INTEGER = 1.7976931348623157e+308;
-
-/**
- * Converts `value` to a finite number.
- *
- * @static
- * @memberOf _
- * @since 4.12.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted number.
- * @example
- *
- * _.toFinite(3.2);
- * // => 3.2
- *
- * _.toFinite(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toFinite(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toFinite('3.2');
- * // => 3.2
- */
-function toFinite(value) {
- if (!value) {
- return value === 0 ? value : 0;
- }
- value = toNumber(value);
- if (value === INFINITY || value === -INFINITY) {
- var sign = (value < 0 ? -1 : 1);
- return sign * MAX_INTEGER;
- }
- return value === value ? value : 0;
-}
-
-module.exports = toFinite;
diff --git a/assets/node_modules/lodash/toInteger.js b/assets/node_modules/lodash/toInteger.js
deleted file mode 100644
index c6aadf8..0000000
--- a/assets/node_modules/lodash/toInteger.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var toFinite = require('./toFinite');
-
-/**
- * Converts `value` to an integer.
- *
- * **Note:** This method is loosely based on
- * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toInteger(3.2);
- * // => 3
- *
- * _.toInteger(Number.MIN_VALUE);
- * // => 0
- *
- * _.toInteger(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toInteger('3.2');
- * // => 3
- */
-function toInteger(value) {
- var result = toFinite(value),
- remainder = result % 1;
-
- return result === result ? (remainder ? result - remainder : result) : 0;
-}
-
-module.exports = toInteger;
diff --git a/assets/node_modules/lodash/toIterator.js b/assets/node_modules/lodash/toIterator.js
deleted file mode 100644
index beeed5d..0000000
--- a/assets/node_modules/lodash/toIterator.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Enables the wrapper to be iterable.
- *
- * @name Symbol.iterator
- * @memberOf _
- * @since 4.0.0
- * @category Seq
- * @returns {Object} Returns the wrapper object.
- * @example
- *
- * var wrapped = _([1, 2]);
- *
- * wrapped[Symbol.iterator]() === wrapped;
- * // => true
- *
- * Array.from(wrapped);
- * // => [1, 2]
- */
-function wrapperToIterator() {
- return this;
-}
-
-module.exports = wrapperToIterator;
diff --git a/assets/node_modules/lodash/toJSON.js b/assets/node_modules/lodash/toJSON.js
deleted file mode 100644
index 5e751a2..0000000
--- a/assets/node_modules/lodash/toJSON.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./wrapperValue');
diff --git a/assets/node_modules/lodash/toLength.js b/assets/node_modules/lodash/toLength.js
deleted file mode 100644
index be8f2a7..0000000
--- a/assets/node_modules/lodash/toLength.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var baseClamp = require('./_baseClamp'),
- toInteger = require('./toInteger');
-
-/** Used as references for the maximum length and index of an array. */
-var MAX_ARRAY_LENGTH = 4294967295;
-
-/**
- * Converts `value` to an integer suitable for use as the length of an
- * array-like object.
- *
- * **Note:** This method is based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toLength(3.2);
- * // => 3
- *
- * _.toLength(Number.MIN_VALUE);
- * // => 0
- *
- * _.toLength(Infinity);
- * // => 4294967295
- *
- * _.toLength('3.2');
- * // => 3
- */
-function toLength(value) {
- return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
-}
-
-module.exports = toLength;
diff --git a/assets/node_modules/lodash/toLower.js b/assets/node_modules/lodash/toLower.js
deleted file mode 100644
index b4b7858..0000000
--- a/assets/node_modules/lodash/toLower.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var toString = require('./toString');
-
-/**
- * Converts `string`, as a whole, to lower case just like
- * [String#toLowerCase](https://mdn.io/toLowerCase).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the lower cased string.
- * @example
- *
- * _.toLower('--Foo-Bar--');
- * // => '--foo-bar--'
- *
- * _.toLower('fooBar');
- * // => 'foobar'
- *
- * _.toLower('__FOO_BAR__');
- * // => '__foo_bar__'
- */
-function toLower(value) {
- return toString(value).toLowerCase();
-}
-
-module.exports = toLower;
diff --git a/assets/node_modules/lodash/toNumber.js b/assets/node_modules/lodash/toNumber.js
deleted file mode 100644
index b0f72de..0000000
--- a/assets/node_modules/lodash/toNumber.js
+++ /dev/null
@@ -1,66 +0,0 @@
-var isObject = require('./isObject'),
- isSymbol = require('./isSymbol');
-
-/** Used as references for various `Number` constants. */
-var NAN = 0 / 0;
-
-/** Used to match leading and trailing whitespace. */
-var reTrim = /^\s+|\s+$/g;
-
-/** Used to detect bad signed hexadecimal string values. */
-var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
-
-/** Used to detect binary string values. */
-var reIsBinary = /^0b[01]+$/i;
-
-/** Used to detect octal string values. */
-var reIsOctal = /^0o[0-7]+$/i;
-
-/** Built-in method references without a dependency on `root`. */
-var freeParseInt = parseInt;
-
-/**
- * Converts `value` to a number.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {number} Returns the number.
- * @example
- *
- * _.toNumber(3.2);
- * // => 3.2
- *
- * _.toNumber(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toNumber(Infinity);
- * // => Infinity
- *
- * _.toNumber('3.2');
- * // => 3.2
- */
-function toNumber(value) {
- if (typeof value == 'number') {
- return value;
- }
- if (isSymbol(value)) {
- return NAN;
- }
- if (isObject(value)) {
- var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
- value = isObject(other) ? (other + '') : other;
- }
- if (typeof value != 'string') {
- return value === 0 ? value : +value;
- }
- value = value.replace(reTrim, '');
- var isBinary = reIsBinary.test(value);
- return (isBinary || reIsOctal.test(value))
- ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
- : (reIsBadHex.test(value) ? NAN : +value);
-}
-
-module.exports = toNumber;
diff --git a/assets/node_modules/lodash/toPairs.js b/assets/node_modules/lodash/toPairs.js
deleted file mode 100644
index c4f52ae..0000000
--- a/assets/node_modules/lodash/toPairs.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var createToPairs = require('./_createToPairs'),
- keys = require('./keys');
-
-/**
- * Creates an array of own enumerable string keyed-value pairs for `object`
- * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
- * entries are returned.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @alias entries
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the key-value pairs.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.toPairs(new Foo);
- * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
- */
-var toPairs = createToPairs(keys);
-
-module.exports = toPairs;
diff --git a/assets/node_modules/lodash/toPairsIn.js b/assets/node_modules/lodash/toPairsIn.js
deleted file mode 100644
index 32c562c..0000000
--- a/assets/node_modules/lodash/toPairsIn.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var createToPairs = require('./_createToPairs'),
- keysIn = require('./keysIn');
-
-/**
- * Creates an array of own and inherited enumerable string keyed-value pairs
- * for `object` which can be consumed by `_.fromPairs`. If `object` is a map
- * or set, its entries are returned.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @alias entriesIn
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the key-value pairs.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.toPairsIn(new Foo);
- * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
- */
-var toPairsIn = createToPairs(keysIn);
-
-module.exports = toPairsIn;
diff --git a/assets/node_modules/lodash/toPath.js b/assets/node_modules/lodash/toPath.js
deleted file mode 100644
index d3e96ee..0000000
--- a/assets/node_modules/lodash/toPath.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var arrayMap = require('./_arrayMap'),
- copyArray = require('./_copyArray'),
- isArray = require('./isArray'),
- isSymbol = require('./isSymbol'),
- stringToPath = require('./_stringToPath'),
- toKey = require('./_toKey'),
- toString = require('./toString');
-
-/**
- * Converts `value` to a property path array.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {*} value The value to convert.
- * @returns {Array} Returns the new property path array.
- * @example
- *
- * _.toPath('a.b.c');
- * // => ['a', 'b', 'c']
- *
- * _.toPath('a[0].b.c');
- * // => ['a', '0', 'b', 'c']
- */
-function toPath(value) {
- if (isArray(value)) {
- return arrayMap(value, toKey);
- }
- return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
-}
-
-module.exports = toPath;
diff --git a/assets/node_modules/lodash/toPlainObject.js b/assets/node_modules/lodash/toPlainObject.js
deleted file mode 100644
index 5de79b8..0000000
--- a/assets/node_modules/lodash/toPlainObject.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var copyObject = require('./_copyObject'),
- keysIn = require('./keysIn');
-
-/**
- * Converts `value` to a plain object flattening inherited enumerable string
- * keyed properties of `value` to own properties of the plain object.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {Object} Returns the converted plain object.
- * @example
- *
- * function Foo() {
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.assign({ 'a': 1 }, new Foo);
- * // => { 'a': 1, 'b': 2 }
- *
- * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
- * // => { 'a': 1, 'b': 2, 'c': 3 }
- */
-function toPlainObject(value) {
- return copyObject(value, keysIn(value));
-}
-
-module.exports = toPlainObject;
diff --git a/assets/node_modules/lodash/toSafeInteger.js b/assets/node_modules/lodash/toSafeInteger.js
deleted file mode 100644
index f564623..0000000
--- a/assets/node_modules/lodash/toSafeInteger.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var baseClamp = require('./_baseClamp'),
- toInteger = require('./toInteger');
-
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/**
- * Converts `value` to a safe integer. A safe integer can be compared and
- * represented correctly.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toSafeInteger(3.2);
- * // => 3
- *
- * _.toSafeInteger(Number.MIN_VALUE);
- * // => 0
- *
- * _.toSafeInteger(Infinity);
- * // => 9007199254740991
- *
- * _.toSafeInteger('3.2');
- * // => 3
- */
-function toSafeInteger(value) {
- return value
- ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)
- : (value === 0 ? value : 0);
-}
-
-module.exports = toSafeInteger;
diff --git a/assets/node_modules/lodash/toString.js b/assets/node_modules/lodash/toString.js
deleted file mode 100644
index daaf681..0000000
--- a/assets/node_modules/lodash/toString.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var baseToString = require('./_baseToString');
-
-/**
- * Converts `value` to a string. An empty string is returned for `null`
- * and `undefined` values. The sign of `-0` is preserved.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.toString(null);
- * // => ''
- *
- * _.toString(-0);
- * // => '-0'
- *
- * _.toString([1, 2, 3]);
- * // => '1,2,3'
- */
-function toString(value) {
- return value == null ? '' : baseToString(value);
-}
-
-module.exports = toString;
diff --git a/assets/node_modules/lodash/toUpper.js b/assets/node_modules/lodash/toUpper.js
deleted file mode 100644
index b3648e8..0000000
--- a/assets/node_modules/lodash/toUpper.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var toString = require('./toString');
-
-/**
- * Converts `string`, as a whole, to upper case just like
- * [String#toUpperCase](https://mdn.io/toUpperCase).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the upper cased string.
- * @example
- *
- * _.toUpper('--foo-bar--');
- * // => '--FOO-BAR--'
- *
- * _.toUpper('fooBar');
- * // => 'FOOBAR'
- *
- * _.toUpper('__foo_bar__');
- * // => '__FOO_BAR__'
- */
-function toUpper(value) {
- return toString(value).toUpperCase();
-}
-
-module.exports = toUpper;
diff --git a/assets/node_modules/lodash/transform.js b/assets/node_modules/lodash/transform.js
deleted file mode 100644
index d755a15..0000000
--- a/assets/node_modules/lodash/transform.js
+++ /dev/null
@@ -1,65 +0,0 @@
-var arrayEach = require('./_arrayEach'),
- baseCreate = require('./_baseCreate'),
- baseForOwn = require('./_baseForOwn'),
- baseIteratee = require('./_baseIteratee'),
- getPrototype = require('./_getPrototype'),
- isArray = require('./isArray'),
- isBuffer = require('./isBuffer'),
- isFunction = require('./isFunction'),
- isObject = require('./isObject'),
- isTypedArray = require('./isTypedArray');
-
-/**
- * An alternative to `_.reduce`; this method transforms `object` to a new
- * `accumulator` object which is the result of running each of its own
- * enumerable string keyed properties thru `iteratee`, with each invocation
- * potentially mutating the `accumulator` object. If `accumulator` is not
- * provided, a new object with the same `[[Prototype]]` will be used. The
- * iteratee is invoked with four arguments: (accumulator, value, key, object).
- * Iteratee functions may exit iteration early by explicitly returning `false`.
- *
- * @static
- * @memberOf _
- * @since 1.3.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {*} [accumulator] The custom accumulator value.
- * @returns {*} Returns the accumulated value.
- * @example
- *
- * _.transform([2, 3, 4], function(result, n) {
- * result.push(n *= n);
- * return n % 2 == 0;
- * }, []);
- * // => [4, 9]
- *
- * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
- * (result[value] || (result[value] = [])).push(key);
- * }, {});
- * // => { '1': ['a', 'c'], '2': ['b'] }
- */
-function transform(object, iteratee, accumulator) {
- var isArr = isArray(object),
- isArrLike = isArr || isBuffer(object) || isTypedArray(object);
-
- iteratee = baseIteratee(iteratee, 4);
- if (accumulator == null) {
- var Ctor = object && object.constructor;
- if (isArrLike) {
- accumulator = isArr ? new Ctor : [];
- }
- else if (isObject(object)) {
- accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
- }
- else {
- accumulator = {};
- }
- }
- (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
- return iteratee(accumulator, value, index, object);
- });
- return accumulator;
-}
-
-module.exports = transform;
diff --git a/assets/node_modules/lodash/trim.js b/assets/node_modules/lodash/trim.js
deleted file mode 100644
index 5e38c8e..0000000
--- a/assets/node_modules/lodash/trim.js
+++ /dev/null
@@ -1,49 +0,0 @@
-var baseToString = require('./_baseToString'),
- castSlice = require('./_castSlice'),
- charsEndIndex = require('./_charsEndIndex'),
- charsStartIndex = require('./_charsStartIndex'),
- stringToArray = require('./_stringToArray'),
- toString = require('./toString');
-
-/** Used to match leading and trailing whitespace. */
-var reTrim = /^\s+|\s+$/g;
-
-/**
- * Removes leading and trailing whitespace or specified characters from `string`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to trim.
- * @param {string} [chars=whitespace] The characters to trim.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {string} Returns the trimmed string.
- * @example
- *
- * _.trim(' abc ');
- * // => 'abc'
- *
- * _.trim('-_-abc-_-', '_-');
- * // => 'abc'
- *
- * _.map([' foo ', ' bar '], _.trim);
- * // => ['foo', 'bar']
- */
-function trim(string, chars, guard) {
- string = toString(string);
- if (string && (guard || chars === undefined)) {
- return string.replace(reTrim, '');
- }
- if (!string || !(chars = baseToString(chars))) {
- return string;
- }
- var strSymbols = stringToArray(string),
- chrSymbols = stringToArray(chars),
- start = charsStartIndex(strSymbols, chrSymbols),
- end = charsEndIndex(strSymbols, chrSymbols) + 1;
-
- return castSlice(strSymbols, start, end).join('');
-}
-
-module.exports = trim;
diff --git a/assets/node_modules/lodash/trimEnd.js b/assets/node_modules/lodash/trimEnd.js
deleted file mode 100644
index 82c54a9..0000000
--- a/assets/node_modules/lodash/trimEnd.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var baseToString = require('./_baseToString'),
- castSlice = require('./_castSlice'),
- charsEndIndex = require('./_charsEndIndex'),
- stringToArray = require('./_stringToArray'),
- toString = require('./toString');
-
-/** Used to match leading and trailing whitespace. */
-var reTrimEnd = /\s+$/;
-
-/**
- * Removes trailing whitespace or specified characters from `string`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to trim.
- * @param {string} [chars=whitespace] The characters to trim.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {string} Returns the trimmed string.
- * @example
- *
- * _.trimEnd(' abc ');
- * // => ' abc'
- *
- * _.trimEnd('-_-abc-_-', '_-');
- * // => '-_-abc'
- */
-function trimEnd(string, chars, guard) {
- string = toString(string);
- if (string && (guard || chars === undefined)) {
- return string.replace(reTrimEnd, '');
- }
- if (!string || !(chars = baseToString(chars))) {
- return string;
- }
- var strSymbols = stringToArray(string),
- end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
-
- return castSlice(strSymbols, 0, end).join('');
-}
-
-module.exports = trimEnd;
diff --git a/assets/node_modules/lodash/trimStart.js b/assets/node_modules/lodash/trimStart.js
deleted file mode 100644
index 30f4f47..0000000
--- a/assets/node_modules/lodash/trimStart.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var baseToString = require('./_baseToString'),
- castSlice = require('./_castSlice'),
- charsStartIndex = require('./_charsStartIndex'),
- stringToArray = require('./_stringToArray'),
- toString = require('./toString');
-
-/** Used to match leading and trailing whitespace. */
-var reTrimStart = /^\s+/;
-
-/**
- * Removes leading whitespace or specified characters from `string`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to trim.
- * @param {string} [chars=whitespace] The characters to trim.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {string} Returns the trimmed string.
- * @example
- *
- * _.trimStart(' abc ');
- * // => 'abc '
- *
- * _.trimStart('-_-abc-_-', '_-');
- * // => 'abc-_-'
- */
-function trimStart(string, chars, guard) {
- string = toString(string);
- if (string && (guard || chars === undefined)) {
- return string.replace(reTrimStart, '');
- }
- if (!string || !(chars = baseToString(chars))) {
- return string;
- }
- var strSymbols = stringToArray(string),
- start = charsStartIndex(strSymbols, stringToArray(chars));
-
- return castSlice(strSymbols, start).join('');
-}
-
-module.exports = trimStart;
diff --git a/assets/node_modules/lodash/truncate.js b/assets/node_modules/lodash/truncate.js
deleted file mode 100644
index 21fcdfe..0000000
--- a/assets/node_modules/lodash/truncate.js
+++ /dev/null
@@ -1,111 +0,0 @@
-var baseToString = require('./_baseToString'),
- castSlice = require('./_castSlice'),
- hasUnicode = require('./_hasUnicode'),
- isObject = require('./isObject'),
- isRegExp = require('./isRegExp'),
- stringSize = require('./_stringSize'),
- stringToArray = require('./_stringToArray'),
- toInteger = require('./toInteger'),
- toString = require('./toString');
-
-/** Used as default options for `_.truncate`. */
-var DEFAULT_TRUNC_LENGTH = 30,
- DEFAULT_TRUNC_OMISSION = '...';
-
-/** Used to match `RegExp` flags from their coerced string values. */
-var reFlags = /\w*$/;
-
-/**
- * Truncates `string` if it's longer than the given maximum string length.
- * The last characters of the truncated string are replaced with the omission
- * string which defaults to "...".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to truncate.
- * @param {Object} [options={}] The options object.
- * @param {number} [options.length=30] The maximum string length.
- * @param {string} [options.omission='...'] The string to indicate text is omitted.
- * @param {RegExp|string} [options.separator] The separator pattern to truncate to.
- * @returns {string} Returns the truncated string.
- * @example
- *
- * _.truncate('hi-diddly-ho there, neighborino');
- * // => 'hi-diddly-ho there, neighbo...'
- *
- * _.truncate('hi-diddly-ho there, neighborino', {
- * 'length': 24,
- * 'separator': ' '
- * });
- * // => 'hi-diddly-ho there,...'
- *
- * _.truncate('hi-diddly-ho there, neighborino', {
- * 'length': 24,
- * 'separator': /,? +/
- * });
- * // => 'hi-diddly-ho there...'
- *
- * _.truncate('hi-diddly-ho there, neighborino', {
- * 'omission': ' [...]'
- * });
- * // => 'hi-diddly-ho there, neig [...]'
- */
-function truncate(string, options) {
- var length = DEFAULT_TRUNC_LENGTH,
- omission = DEFAULT_TRUNC_OMISSION;
-
- if (isObject(options)) {
- var separator = 'separator' in options ? options.separator : separator;
- length = 'length' in options ? toInteger(options.length) : length;
- omission = 'omission' in options ? baseToString(options.omission) : omission;
- }
- string = toString(string);
-
- var strLength = string.length;
- if (hasUnicode(string)) {
- var strSymbols = stringToArray(string);
- strLength = strSymbols.length;
- }
- if (length >= strLength) {
- return string;
- }
- var end = length - stringSize(omission);
- if (end < 1) {
- return omission;
- }
- var result = strSymbols
- ? castSlice(strSymbols, 0, end).join('')
- : string.slice(0, end);
-
- if (separator === undefined) {
- return result + omission;
- }
- if (strSymbols) {
- end += (result.length - end);
- }
- if (isRegExp(separator)) {
- if (string.slice(end).search(separator)) {
- var match,
- substring = result;
-
- if (!separator.global) {
- separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');
- }
- separator.lastIndex = 0;
- while ((match = separator.exec(substring))) {
- var newEnd = match.index;
- }
- result = result.slice(0, newEnd === undefined ? end : newEnd);
- }
- } else if (string.indexOf(baseToString(separator), end) != end) {
- var index = result.lastIndexOf(separator);
- if (index > -1) {
- result = result.slice(0, index);
- }
- }
- return result + omission;
-}
-
-module.exports = truncate;
diff --git a/assets/node_modules/lodash/unary.js b/assets/node_modules/lodash/unary.js
deleted file mode 100644
index 76f48f6..0000000
--- a/assets/node_modules/lodash/unary.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var ary = require('./ary');
-
-/**
- * Creates a function that accepts up to one argument, ignoring any
- * additional arguments.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Function
- * @param {Function} func The function to cap arguments for.
- * @returns {Function} Returns the new capped function.
- * @example
- *
- * _.map(['6', '8', '10'], _.unary(parseInt));
- * // => [6, 8, 10]
- */
-function unary(func) {
- return ary(func, 1);
-}
-
-module.exports = unary;
diff --git a/assets/node_modules/lodash/unescape.js b/assets/node_modules/lodash/unescape.js
deleted file mode 100644
index 3b6efd5..0000000
--- a/assets/node_modules/lodash/unescape.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var toString = require('./toString'),
- unescapeHtmlChar = require('./_unescapeHtmlChar');
-
-/** Used to match HTML entities and HTML characters. */
-var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,
- reHasEscapedHtml = RegExp(reEscapedHtml.source);
-
-/**
- * The inverse of `_.escape`; this method converts the HTML entities
- * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to
- * their corresponding characters.
- *
- * **Note:** No other HTML entities are unescaped. To unescape additional
- * HTML entities use a third-party library like [_he_](https://mths.be/he).
- *
- * @static
- * @memberOf _
- * @since 0.6.0
- * @category String
- * @param {string} [string=''] The string to unescape.
- * @returns {string} Returns the unescaped string.
- * @example
- *
- * _.unescape('fred, barney, &amp; pebbles');
- * // => 'fred, barney, & pebbles'
- */
-function unescape(string) {
- string = toString(string);
- return (string && reHasEscapedHtml.test(string))
- ? string.replace(reEscapedHtml, unescapeHtmlChar)
- : string;
-}
-
-module.exports = unescape;
diff --git a/assets/node_modules/lodash/union.js b/assets/node_modules/lodash/union.js
deleted file mode 100644
index e676dfe..0000000
--- a/assets/node_modules/lodash/union.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var baseFlatten = require('./_baseFlatten'),
- baseRest = require('./_baseRest'),
- baseUniq = require('./_baseUniq'),
- isArrayLikeObject = require('./isArrayLikeObject');
-
-/**
- * Creates an array of unique values, in order, from all given arrays using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @returns {Array} Returns the new array of combined values.
- * @example
- *
- * _.union([2], [1, 2]);
- * // => [2, 1]
- */
-var union = baseRest(function(arrays) {
- return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
-});
-
-module.exports = union;
diff --git a/assets/node_modules/lodash/unionBy.js b/assets/node_modules/lodash/unionBy.js
deleted file mode 100644
index 6ae8ccd..0000000
--- a/assets/node_modules/lodash/unionBy.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var baseFlatten = require('./_baseFlatten'),
- baseIteratee = require('./_baseIteratee'),
- baseRest = require('./_baseRest'),
- baseUniq = require('./_baseUniq'),
- isArrayLikeObject = require('./isArrayLikeObject'),
- last = require('./last');
-
-/**
- * This method is like `_.union` except that it accepts `iteratee` which is
- * invoked for each element of each `arrays` to generate the criterion by
- * which uniqueness is computed. Result values are chosen from the first
- * array in which the value occurs. The iteratee is invoked with one argument:
- * (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new array of combined values.
- * @example
- *
- * _.unionBy([2.1], [1.2, 2.3], Math.floor);
- * // => [2.1, 1.2]
- *
- * // The `_.property` iteratee shorthand.
- * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 1 }, { 'x': 2 }]
- */
-var unionBy = baseRest(function(arrays) {
- var iteratee = last(arrays);
- if (isArrayLikeObject(iteratee)) {
- iteratee = undefined;
- }
- return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2));
-});
-
-module.exports = unionBy;
diff --git a/assets/node_modules/lodash/unionWith.js b/assets/node_modules/lodash/unionWith.js
deleted file mode 100644
index 78736b2..0000000
--- a/assets/node_modules/lodash/unionWith.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var baseFlatten = require('./_baseFlatten'),
- baseRest = require('./_baseRest'),
- baseUniq = require('./_baseUniq'),
- isArrayLikeObject = require('./isArrayLikeObject'),
- last = require('./last');
-
-/**
- * This method is like `_.union` except that it accepts `comparator` which
- * is invoked to compare elements of `arrays`. Result values are chosen from
- * the first array in which the value occurs. The comparator is invoked
- * with two arguments: (arrVal, othVal).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of combined values.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
- * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
- *
- * _.unionWith(objects, others, _.isEqual);
- * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
- */
-var unionWith = baseRest(function(arrays) {
- var comparator = last(arrays);
- comparator = typeof comparator == 'function' ? comparator : undefined;
- return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
-});
-
-module.exports = unionWith;
diff --git a/assets/node_modules/lodash/uniq.js b/assets/node_modules/lodash/uniq.js
deleted file mode 100644
index 157d1cd..0000000
--- a/assets/node_modules/lodash/uniq.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var baseUniq = require('./_baseUniq');
-
-/**
- * Creates a duplicate-free version of an array, using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons, in which only the first occurrence of each element
- * is kept. The order of result values is determined by the order they occur
- * in the array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.uniq([2, 1, 2]);
- * // => [2, 1]
- */
-function uniq(array) {
- return (array && array.length) ? baseUniq(array) : [];
-}
-
-module.exports = uniq;
diff --git a/assets/node_modules/lodash/uniqBy.js b/assets/node_modules/lodash/uniqBy.js
deleted file mode 100644
index 53402a9..0000000
--- a/assets/node_modules/lodash/uniqBy.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var baseIteratee = require('./_baseIteratee'),
- baseUniq = require('./_baseUniq');
-
-/**
- * This method is like `_.uniq` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the criterion by which
- * uniqueness is computed. The order of result values is determined by the
- * order they occur in the array. The iteratee is invoked with one argument:
- * (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
- * // => [2.1, 1.2]
- *
- * // The `_.property` iteratee shorthand.
- * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 1 }, { 'x': 2 }]
- */
-function uniqBy(array, iteratee) {
- return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];
-}
-
-module.exports = uniqBy;
diff --git a/assets/node_modules/lodash/uniqWith.js b/assets/node_modules/lodash/uniqWith.js
deleted file mode 100644
index 18d72aa..0000000
--- a/assets/node_modules/lodash/uniqWith.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var baseUniq = require('./_baseUniq');
-
-/**
- * This method is like `_.uniq` except that it accepts `comparator` which
- * is invoked to compare elements of `array`. The order of result values is
- * determined by the order they occur in the array.The comparator is invoked
- * with two arguments: (arrVal, othVal).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
- *
- * _.uniqWith(objects, _.isEqual);
- * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
- */
-function uniqWith(array, comparator) {
- comparator = typeof comparator == 'function' ? comparator : undefined;
- return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
-}
-
-module.exports = uniqWith;
diff --git a/assets/node_modules/lodash/uniqueId.js b/assets/node_modules/lodash/uniqueId.js
deleted file mode 100644
index ffa8c03..0000000
--- a/assets/node_modules/lodash/uniqueId.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var toString = require('./toString');
-
-/** Used to generate unique IDs. */
-var idCounter = 0;
-
-/**
- * Generates a unique ID. If `prefix` is given, the ID is appended to it.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {string} [prefix=''] The value to prefix the ID with.
- * @returns {string} Returns the unique ID.
- * @example
- *
- * _.uniqueId('contact_');
- * // => 'contact_104'
- *
- * _.uniqueId();
- * // => '105'
- */
-function uniqueId(prefix) {
- var id = ++idCounter;
- return toString(prefix) + id;
-}
-
-module.exports = uniqueId;
diff --git a/assets/node_modules/lodash/unset.js b/assets/node_modules/lodash/unset.js
deleted file mode 100644
index 723c3d4..0000000
--- a/assets/node_modules/lodash/unset.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var baseUnset = require('./_baseUnset');
-
-/**
- * Removes the property at `path` of `object`.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to unset.
- * @returns {boolean} Returns `true` if the property is deleted, else `false`.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 7 } }] };
- * _.unset(object, 'a[0].b.c');
- * // => true
- *
- * console.log(object);
- * // => { 'a': [{ 'b': {} }] };
- *
- * _.unset(object, ['a', '0', 'b', 'c']);
- * // => true
- *
- * console.log(object);
- * // => { 'a': [{ 'b': {} }] };
- */
-function unset(object, path) {
- return object == null ? true : baseUnset(object, path);
-}
-
-module.exports = unset;
diff --git a/assets/node_modules/lodash/unzip.js b/assets/node_modules/lodash/unzip.js
deleted file mode 100644
index fce0ec7..0000000
--- a/assets/node_modules/lodash/unzip.js
+++ /dev/null
@@ -1,45 +0,0 @@
-var arrayFilter = require('./_arrayFilter'),
- arrayMap = require('./_arrayMap'),
- baseProperty = require('./_baseProperty'),
- baseTimes = require('./_baseTimes'),
- isArrayLikeObject = require('./isArrayLikeObject');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * This method is like `_.zip` except that it accepts an array of grouped
- * elements and creates an array regrouping the elements to their pre-zip
- * configuration.
- *
- * @static
- * @memberOf _
- * @since 1.2.0
- * @category Array
- * @param {Array} array The array of grouped elements to process.
- * @returns {Array} Returns the new array of regrouped elements.
- * @example
- *
- * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
- * // => [['a', 1, true], ['b', 2, false]]
- *
- * _.unzip(zipped);
- * // => [['a', 'b'], [1, 2], [true, false]]
- */
-function unzip(array) {
- if (!(array && array.length)) {
- return [];
- }
- var length = 0;
- array = arrayFilter(array, function(group) {
- if (isArrayLikeObject(group)) {
- length = nativeMax(group.length, length);
- return true;
- }
- });
- return baseTimes(length, function(index) {
- return arrayMap(array, baseProperty(index));
- });
-}
-
-module.exports = unzip;
diff --git a/assets/node_modules/lodash/unzipWith.js b/assets/node_modules/lodash/unzipWith.js
deleted file mode 100644
index 926c899..0000000
--- a/assets/node_modules/lodash/unzipWith.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var apply = require('./_apply'),
- arrayMap = require('./_arrayMap'),
- unzip = require('./unzip');
-
-/**
- * This method is like `_.unzip` except that it accepts `iteratee` to specify
- * how regrouped values should be combined. The iteratee is invoked with the
- * elements of each group: (...group).
- *
- * @static
- * @memberOf _
- * @since 3.8.0
- * @category Array
- * @param {Array} array The array of grouped elements to process.
- * @param {Function} [iteratee=_.identity] The function to combine
- * regrouped values.
- * @returns {Array} Returns the new array of regrouped elements.
- * @example
- *
- * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
- * // => [[1, 10, 100], [2, 20, 200]]
- *
- * _.unzipWith(zipped, _.add);
- * // => [3, 30, 300]
- */
-function unzipWith(array, iteratee) {
- if (!(array && array.length)) {
- return [];
- }
- var result = unzip(array);
- if (iteratee == null) {
- return result;
- }
- return arrayMap(result, function(group) {
- return apply(iteratee, undefined, group);
- });
-}
-
-module.exports = unzipWith;
diff --git a/assets/node_modules/lodash/update.js b/assets/node_modules/lodash/update.js
deleted file mode 100644
index b90098e..0000000
--- a/assets/node_modules/lodash/update.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var baseUpdate = require('./_baseUpdate'),
- castFunction = require('./_castFunction');
-
-/**
- * This method is like `_.set` except that accepts `updater` to produce the
- * value to set. Use `_.updateWith` to customize `path` creation. The `updater`
- * is invoked with one argument: (value).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.6.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {Function} updater The function to produce the updated value.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.update(object, 'a[0].b.c', function(n) { return n * n; });
- * console.log(object.a[0].b.c);
- * // => 9
- *
- * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
- * console.log(object.x[0].y.z);
- * // => 0
- */
-function update(object, path, updater) {
- return object == null ? object : baseUpdate(object, path, castFunction(updater));
-}
-
-module.exports = update;
diff --git a/assets/node_modules/lodash/updateWith.js b/assets/node_modules/lodash/updateWith.js
deleted file mode 100644
index a2f4a2c..0000000
--- a/assets/node_modules/lodash/updateWith.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var baseUpdate = require('./_baseUpdate'),
- castFunction = require('./_castFunction');
-
-/**
- * This method is like `_.update` except that it accepts `customizer` which is
- * invoked to produce the objects of `path`. If `customizer` returns `undefined`
- * path creation is handled by the method instead. The `customizer` is invoked
- * with three arguments: (nsValue, key, nsObject).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.6.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {Function} updater The function to produce the updated value.
- * @param {Function} [customizer] The function to customize assigned values.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = {};
- *
- * _.updateWith(object, '[0][1]', _.constant('a'), Object);
- * // => { '0': { '1': 'a' } }
- */
-function updateWith(object, path, updater, customizer) {
- customizer = typeof customizer == 'function' ? customizer : undefined;
- return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
-}
-
-module.exports = updateWith;
diff --git a/assets/node_modules/lodash/upperCase.js b/assets/node_modules/lodash/upperCase.js
deleted file mode 100644
index efbb8b0..0000000
--- a/assets/node_modules/lodash/upperCase.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var createCompounder = require('./_createCompounder');
-
-/**
- * Converts `string`, as space separated words, to upper case.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the upper cased string.
- * @example
- *
- * _.upperCase('--foo-bar');
- * // => 'FOO BAR'
- *
- * _.upperCase('fooBar');
- * // => 'FOO BAR'
- *
- * _.upperCase('__foo_bar__');
- * // => 'FOO BAR'
- */
-var upperCase = createCompounder(function(result, word, index) {
- return result + (index ? ' ' : '') + word.toUpperCase();
-});
-
-module.exports = upperCase;
diff --git a/assets/node_modules/lodash/upperFirst.js b/assets/node_modules/lodash/upperFirst.js
deleted file mode 100644
index 1dd64e1..0000000
--- a/assets/node_modules/lodash/upperFirst.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var createCaseFirst = require('./_createCaseFirst');
-
-/**
- * Converts the first character of `string` to upper case.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.upperFirst('fred');
- * // => 'Fred'
- *
- * _.upperFirst('FRED');
- * // => 'FRED'
- */
-var upperFirst = createCaseFirst('toUpperCase');
-
-module.exports = upperFirst;
diff --git a/assets/node_modules/lodash/util.js b/assets/node_modules/lodash/util.js
deleted file mode 100644
index d244dc2..0000000
--- a/assets/node_modules/lodash/util.js
+++ /dev/null
@@ -1,34 +0,0 @@
-module.exports = {
- 'attempt': require('./attempt'),
- 'bindAll': require('./bindAll'),
- 'cond': require('./cond'),
- 'conforms': require('./conforms'),
- 'constant': require('./constant'),
- 'defaultTo': require('./defaultTo'),
- 'flow': require('./flow'),
- 'flowRight': require('./flowRight'),
- 'identity': require('./identity'),
- 'iteratee': require('./iteratee'),
- 'matches': require('./matches'),
- 'matchesProperty': require('./matchesProperty'),
- 'method': require('./method'),
- 'methodOf': require('./methodOf'),
- 'mixin': require('./mixin'),
- 'noop': require('./noop'),
- 'nthArg': require('./nthArg'),
- 'over': require('./over'),
- 'overEvery': require('./overEvery'),
- 'overSome': require('./overSome'),
- 'property': require('./property'),
- 'propertyOf': require('./propertyOf'),
- 'range': require('./range'),
- 'rangeRight': require('./rangeRight'),
- 'stubArray': require('./stubArray'),
- 'stubFalse': require('./stubFalse'),
- 'stubObject': require('./stubObject'),
- 'stubString': require('./stubString'),
- 'stubTrue': require('./stubTrue'),
- 'times': require('./times'),
- 'toPath': require('./toPath'),
- 'uniqueId': require('./uniqueId')
-};
diff --git a/assets/node_modules/lodash/value.js b/assets/node_modules/lodash/value.js
deleted file mode 100644
index 5e751a2..0000000
--- a/assets/node_modules/lodash/value.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./wrapperValue');
diff --git a/assets/node_modules/lodash/valueOf.js b/assets/node_modules/lodash/valueOf.js
deleted file mode 100644
index 5e751a2..0000000
--- a/assets/node_modules/lodash/valueOf.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./wrapperValue');
diff --git a/assets/node_modules/lodash/values.js b/assets/node_modules/lodash/values.js
deleted file mode 100644
index b069654..0000000
--- a/assets/node_modules/lodash/values.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var baseValues = require('./_baseValues'),
- keys = require('./keys');
-
-/**
- * Creates an array of the own enumerable string keyed property values of `object`.
- *
- * **Note:** Non-object values are coerced to objects.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property values.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.values(new Foo);
- * // => [1, 2] (iteration order is not guaranteed)
- *
- * _.values('hi');
- * // => ['h', 'i']
- */
-function values(object) {
- return object == null ? [] : baseValues(object, keys(object));
-}
-
-module.exports = values;
diff --git a/assets/node_modules/lodash/valuesIn.js b/assets/node_modules/lodash/valuesIn.js
deleted file mode 100644
index 6296094..0000000
--- a/assets/node_modules/lodash/valuesIn.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var baseValues = require('./_baseValues'),
- keysIn = require('./keysIn');
-
-/**
- * Creates an array of the own and inherited enumerable string keyed property
- * values of `object`.
- *
- * **Note:** Non-object values are coerced to objects.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property values.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.valuesIn(new Foo);
- * // => [1, 2, 3] (iteration order is not guaranteed)
- */
-function valuesIn(object) {
- return object == null ? [] : baseValues(object, keysIn(object));
-}
-
-module.exports = valuesIn;
diff --git a/assets/node_modules/lodash/without.js b/assets/node_modules/lodash/without.js
deleted file mode 100644
index 3a28e8a..0000000
--- a/assets/node_modules/lodash/without.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var baseDifference = require('./_baseDifference'),
- baseRest = require('./_baseRest'),
- isArrayLikeObject = require('./isArrayLikeObject');
-
-/**
- * Creates an array excluding all given values using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * **Note:** Unlike `_.pull`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {...*} [values] The values to exclude.
- * @returns {Array} Returns the new array of filtered values.
- * @see _.difference, _.xor
- * @example
- *
- * _.without([2, 1, 2, 3], 1, 2);
- * // => [3]
- */
-var without = baseRest(function(array, values) {
- return isArrayLikeObject(array)
- ? baseDifference(array, values)
- : [];
-});
-
-module.exports = without;
diff --git a/assets/node_modules/lodash/words.js b/assets/node_modules/lodash/words.js
deleted file mode 100644
index 6d7cdd1..0000000
--- a/assets/node_modules/lodash/words.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var asciiWords = require('./_asciiWords'),
- hasUnicodeWord = require('./_hasUnicodeWord'),
- toString = require('./toString'),
- unicodeWords = require('./_unicodeWords');
-
-/**
- * Splits `string` into an array of its words.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to inspect.
- * @param {RegExp|string} [pattern] The pattern to match words.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the words of `string`.
- * @example
- *
- * _.words('fred, barney, & pebbles');
- * // => ['fred', 'barney', 'pebbles']
- *
- * _.words('fred, barney, & pebbles', /[^, ]+/g);
- * // => ['fred', 'barney', '&', 'pebbles']
- */
-function words(string, pattern, guard) {
- string = toString(string);
- pattern = guard ? undefined : pattern;
-
- if (pattern === undefined) {
- return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
- }
- return string.match(pattern) || [];
-}
-
-module.exports = words;
diff --git a/assets/node_modules/lodash/wrap.js b/assets/node_modules/lodash/wrap.js
deleted file mode 100644
index cad3c50..0000000
--- a/assets/node_modules/lodash/wrap.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var castFunction = require('./_castFunction'),
- partial = require('./partial');
-
-/**
- * Creates a function that provides `value` to `wrapper` as its first
- * argument. Any additional arguments provided to the function are appended
- * to those provided to the `wrapper`. The wrapper is invoked with the `this`
- * binding of the created function.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {*} value The value to wrap.
- * @param {Function} [wrapper=identity] The wrapper function.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var p = _.wrap(_.escape, function(func, text) {
- * return '<p>' + func(text) + '</p>';
- * });
- *
- * p('fred, barney, & pebbles');
- * // => '<p>fred, barney, &amp; pebbles</p>'
- */
-function wrap(value, wrapper) {
- return partial(castFunction(wrapper), value);
-}
-
-module.exports = wrap;
diff --git a/assets/node_modules/lodash/wrapperAt.js b/assets/node_modules/lodash/wrapperAt.js
deleted file mode 100644
index 6f6a1d0..0000000
--- a/assets/node_modules/lodash/wrapperAt.js
+++ /dev/null
@@ -1,48 +0,0 @@
-var LazyWrapper = require('./_LazyWrapper'),
- LodashWrapper = require('./_LodashWrapper'),
- baseAt = require('./_baseAt'),
- flatRest = require('./_flatRest'),
- isIndex = require('./_isIndex'),
- thru = require('./thru');
-
-/**
- * This method is the wrapper version of `_.at`.
- *
- * @name at
- * @memberOf _
- * @since 1.0.0
- * @category Seq
- * @param {...(string|string[])} [paths] The property paths to pick.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
- *
- * _(object).at(['a[0].b.c', 'a[1]']).value();
- * // => [3, 4]
- */
-var wrapperAt = flatRest(function(paths) {
- var length = paths.length,
- start = length ? paths[0] : 0,
- value = this.__wrapped__,
- interceptor = function(object) { return baseAt(object, paths); };
-
- if (length > 1 || this.__actions__.length ||
- !(value instanceof LazyWrapper) || !isIndex(start)) {
- return this.thru(interceptor);
- }
- value = value.slice(start, +start + (length ? 1 : 0));
- value.__actions__.push({
- 'func': thru,
- 'args': [interceptor],
- 'thisArg': undefined
- });
- return new LodashWrapper(value, this.__chain__).thru(function(array) {
- if (length && !array.length) {
- array.push(undefined);
- }
- return array;
- });
-});
-
-module.exports = wrapperAt;
diff --git a/assets/node_modules/lodash/wrapperChain.js b/assets/node_modules/lodash/wrapperChain.js
deleted file mode 100644
index bda2ce6..0000000
--- a/assets/node_modules/lodash/wrapperChain.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var chain = require('./chain');
-
-/**
- * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
- *
- * @name chain
- * @memberOf _
- * @since 0.1.0
- * @category Seq
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36 },
- * { 'user': 'fred', 'age': 40 }
- * ];
- *
- * // A sequence without explicit chaining.
- * _(users).head();
- * // => { 'user': 'barney', 'age': 36 }
- *
- * // A sequence with explicit chaining.
- * _(users)
- * .chain()
- * .head()
- * .pick('user')
- * .value();
- * // => { 'user': 'barney' }
- */
-function wrapperChain() {
- return chain(this);
-}
-
-module.exports = wrapperChain;
diff --git a/assets/node_modules/lodash/wrapperLodash.js b/assets/node_modules/lodash/wrapperLodash.js
deleted file mode 100644
index bd6e8ad..0000000
--- a/assets/node_modules/lodash/wrapperLodash.js
+++ /dev/null
@@ -1,147 +0,0 @@
-var LazyWrapper = require('./_LazyWrapper'),
- LodashWrapper = require('./_LodashWrapper'),
- baseLodash = require('./_baseLodash'),
- isArray = require('./isArray'),
- isObjectLike = require('./isObjectLike'),
- wrapperClone = require('./_wrapperClone');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Creates a `lodash` object which wraps `value` to enable implicit method
- * chain sequences. Methods that operate on and return arrays, collections,
- * and functions can be chained together. Methods that retrieve a single value
- * or may return a primitive value will automatically end the chain sequence
- * and return the unwrapped value. Otherwise, the value must be unwrapped
- * with `_#value`.
- *
- * Explicit chain sequences, which must be unwrapped with `_#value`, may be
- * enabled using `_.chain`.
- *
- * The execution of chained methods is lazy, that is, it's deferred until
- * `_#value` is implicitly or explicitly called.
- *
- * Lazy evaluation allows several methods to support shortcut fusion.
- * Shortcut fusion is an optimization to merge iteratee calls; this avoids
- * the creation of intermediate arrays and can greatly reduce the number of
- * iteratee executions. Sections of a chain sequence qualify for shortcut
- * fusion if the section is applied to an array and iteratees accept only
- * one argument. The heuristic for whether a section qualifies for shortcut
- * fusion is subject to change.
- *
- * Chaining is supported in custom builds as long as the `_#value` method is
- * directly or indirectly included in the build.
- *
- * In addition to lodash methods, wrappers have `Array` and `String` methods.
- *
- * The wrapper `Array` methods are:
- * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
- *
- * The wrapper `String` methods are:
- * `replace` and `split`
- *
- * The wrapper methods that support shortcut fusion are:
- * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
- * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
- * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
- *
- * The chainable wrapper methods are:
- * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
- * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
- * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
- * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
- * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
- * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
- * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
- * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
- * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
- * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
- * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
- * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
- * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
- * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
- * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
- * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
- * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
- * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
- * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
- * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
- * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
- * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
- * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
- * `zipObject`, `zipObjectDeep`, and `zipWith`
- *
- * The wrapper methods that are **not** chainable by default are:
- * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
- * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
- * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
- * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
- * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
- * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
- * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
- * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
- * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
- * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
- * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
- * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
- * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
- * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
- * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
- * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
- * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
- * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
- * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
- * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
- * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
- * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
- * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
- * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
- * `upperFirst`, `value`, and `words`
- *
- * @name _
- * @constructor
- * @category Seq
- * @param {*} value The value to wrap in a `lodash` instance.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * function square(n) {
- * return n * n;
- * }
- *
- * var wrapped = _([1, 2, 3]);
- *
- * // Returns an unwrapped value.
- * wrapped.reduce(_.add);
- * // => 6
- *
- * // Returns a wrapped value.
- * var squares = wrapped.map(square);
- *
- * _.isArray(squares);
- * // => false
- *
- * _.isArray(squares.value());
- * // => true
- */
-function lodash(value) {
- if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
- if (value instanceof LodashWrapper) {
- return value;
- }
- if (hasOwnProperty.call(value, '__wrapped__')) {
- return wrapperClone(value);
- }
- }
- return new LodashWrapper(value);
-}
-
-// Ensure wrappers are instances of `baseLodash`.
-lodash.prototype = baseLodash.prototype;
-lodash.prototype.constructor = lodash;
-
-module.exports = lodash;
diff --git a/assets/node_modules/lodash/wrapperReverse.js b/assets/node_modules/lodash/wrapperReverse.js
deleted file mode 100644
index e93112a..0000000
--- a/assets/node_modules/lodash/wrapperReverse.js
+++ /dev/null
@@ -1,44 +0,0 @@
-var LazyWrapper = require('./_LazyWrapper'),
- LodashWrapper = require('./_LodashWrapper'),
- reverse = require('./reverse'),
- thru = require('./thru');
-
-/**
- * This method is the wrapper version of `_.reverse`.
- *
- * **Note:** This method mutates the wrapped array.
- *
- * @name reverse
- * @memberOf _
- * @since 0.1.0
- * @category Seq
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var array = [1, 2, 3];
- *
- * _(array).reverse().value()
- * // => [3, 2, 1]
- *
- * console.log(array);
- * // => [3, 2, 1]
- */
-function wrapperReverse() {
- var value = this.__wrapped__;
- if (value instanceof LazyWrapper) {
- var wrapped = value;
- if (this.__actions__.length) {
- wrapped = new LazyWrapper(this);
- }
- wrapped = wrapped.reverse();
- wrapped.__actions__.push({
- 'func': thru,
- 'args': [reverse],
- 'thisArg': undefined
- });
- return new LodashWrapper(wrapped, this.__chain__);
- }
- return this.thru(reverse);
-}
-
-module.exports = wrapperReverse;
diff --git a/assets/node_modules/lodash/wrapperValue.js b/assets/node_modules/lodash/wrapperValue.js
deleted file mode 100644
index f56c2da..0000000
--- a/assets/node_modules/lodash/wrapperValue.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var baseWrapperValue = require('./_baseWrapperValue');
-
-/**
- * Executes the chain sequence to resolve the unwrapped value.
- *
- * @name value
- * @memberOf _
- * @since 0.1.0
- * @alias toJSON, valueOf
- * @category Seq
- * @returns {*} Returns the resolved unwrapped value.
- * @example
- *
- * _([1, 2, 3]).value();
- * // => [1, 2, 3]
- */
-function wrapperValue() {
- return baseWrapperValue(this.__wrapped__, this.__actions__);
-}
-
-module.exports = wrapperValue;
diff --git a/assets/node_modules/lodash/xor.js b/assets/node_modules/lodash/xor.js
deleted file mode 100644
index d4d2860..0000000
--- a/assets/node_modules/lodash/xor.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var arrayFilter = require('./_arrayFilter'),
- baseRest = require('./_baseRest'),
- baseXor = require('./_baseXor'),
- isArrayLikeObject = require('./isArrayLikeObject');
-
-/**
- * Creates an array of unique values that is the
- * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
- * of the given arrays. The order of result values is determined by the order
- * they occur in the arrays.
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @returns {Array} Returns the new array of filtered values.
- * @see _.difference, _.without
- * @example
- *
- * _.xor([2, 1], [2, 3]);
- * // => [1, 3]
- */
-var xor = baseRest(function(arrays) {
- return baseXor(arrayFilter(arrays, isArrayLikeObject));
-});
-
-module.exports = xor;
diff --git a/assets/node_modules/lodash/xorBy.js b/assets/node_modules/lodash/xorBy.js
deleted file mode 100644
index e047895..0000000
--- a/assets/node_modules/lodash/xorBy.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var arrayFilter = require('./_arrayFilter'),
- baseIteratee = require('./_baseIteratee'),
- baseRest = require('./_baseRest'),
- baseXor = require('./_baseXor'),
- isArrayLikeObject = require('./isArrayLikeObject'),
- last = require('./last');
-
-/**
- * This method is like `_.xor` except that it accepts `iteratee` which is
- * invoked for each element of each `arrays` to generate the criterion by
- * which by which they're compared. The order of result values is determined
- * by the order they occur in the arrays. The iteratee is invoked with one
- * argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
- * // => [1.2, 3.4]
- *
- * // The `_.property` iteratee shorthand.
- * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 2 }]
- */
-var xorBy = baseRest(function(arrays) {
- var iteratee = last(arrays);
- if (isArrayLikeObject(iteratee)) {
- iteratee = undefined;
- }
- return baseXor(arrayFilter(arrays, isArrayLikeObject), baseIteratee(iteratee, 2));
-});
-
-module.exports = xorBy;
diff --git a/assets/node_modules/lodash/xorWith.js b/assets/node_modules/lodash/xorWith.js
deleted file mode 100644
index e3a8ac6..0000000
--- a/assets/node_modules/lodash/xorWith.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var arrayFilter = require('./_arrayFilter'),
- baseRest = require('./_baseRest'),
- baseXor = require('./_baseXor'),
- isArrayLikeObject = require('./isArrayLikeObject'),
- last = require('./last');
-
-/**
- * This method is like `_.xor` except that it accepts `comparator` which is
- * invoked to compare elements of `arrays`. The order of result values is
- * determined by the order they occur in the arrays. The comparator is invoked
- * with two arguments: (arrVal, othVal).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
- * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
- *
- * _.xorWith(objects, others, _.isEqual);
- * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
- */
-var xorWith = baseRest(function(arrays) {
- var comparator = last(arrays);
- comparator = typeof comparator == 'function' ? comparator : undefined;
- return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
-});
-
-module.exports = xorWith;
diff --git a/assets/node_modules/lodash/zip.js b/assets/node_modules/lodash/zip.js
deleted file mode 100644
index c800ab3..0000000
--- a/assets/node_modules/lodash/zip.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var baseRest = require('./_baseRest'),
- unzip = require('./unzip');
-
-/**
- * Creates an array of grouped elements, the first of which contains the
- * first elements of the given arrays, the second of which contains the
- * second elements of the given arrays, and so on.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {...Array} [arrays] The arrays to process.
- * @returns {Array} Returns the new array of grouped elements.
- * @example
- *
- * _.zip(['a', 'b'], [1, 2], [true, false]);
- * // => [['a', 1, true], ['b', 2, false]]
- */
-var zip = baseRest(unzip);
-
-module.exports = zip;
diff --git a/assets/node_modules/lodash/zipObject.js b/assets/node_modules/lodash/zipObject.js
deleted file mode 100644
index 23fdf14..0000000
--- a/assets/node_modules/lodash/zipObject.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var assignValue = require('./_assignValue'),
- baseZipObject = require('./_baseZipObject');
-
-/**
- * This method is like `_.fromPairs` except that it accepts two arrays,
- * one of property identifiers and one of corresponding values.
- *
- * @static
- * @memberOf _
- * @since 0.4.0
- * @category Array
- * @param {Array} [props=[]] The property identifiers.
- * @param {Array} [values=[]] The property values.
- * @returns {Object} Returns the new object.
- * @example
- *
- * _.zipObject(['a', 'b'], [1, 2]);
- * // => { 'a': 1, 'b': 2 }
- */
-function zipObject(props, values) {
- return baseZipObject(props || [], values || [], assignValue);
-}
-
-module.exports = zipObject;
diff --git a/assets/node_modules/lodash/zipObjectDeep.js b/assets/node_modules/lodash/zipObjectDeep.js
deleted file mode 100644
index 7c858f8..0000000
--- a/assets/node_modules/lodash/zipObjectDeep.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var baseSet = require('./_baseSet'),
- baseZipObject = require('./_baseZipObject');
-
-/**
- * This method is like `_.zipObject` except that it supports property paths.
- *
- * @static
- * @memberOf _
- * @since 4.1.0
- * @category Array
- * @param {Array} [props=[]] The property identifiers.
- * @param {Array} [values=[]] The property values.
- * @returns {Object} Returns the new object.
- * @example
- *
- * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
- * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
- */
-function zipObjectDeep(props, values) {
- return baseZipObject(props || [], values || [], baseSet);
-}
-
-module.exports = zipObjectDeep;
diff --git a/assets/node_modules/lodash/zipWith.js b/assets/node_modules/lodash/zipWith.js
deleted file mode 100644
index d7a1f91..0000000
--- a/assets/node_modules/lodash/zipWith.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var baseRest = require('./_baseRest'),
- unzipWith = require('./unzipWith');
-
-/**
- * This method is like `_.zip` except that it accepts `iteratee` to specify
- * how grouped values should be combined. The iteratee is invoked with the
- * elements of each group: (...group).
- *
- * @static
- * @memberOf _
- * @since 3.8.0
- * @category Array
- * @param {...Array} [arrays] The arrays to process.
- * @param {Function} [iteratee=_.identity] The function to combine
- * grouped values.
- * @returns {Array} Returns the new array of grouped elements.
- * @example
- *
- * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
- * return a + b + c;
- * });
- * // => [111, 222]
- */
-var zipWith = baseRest(function(arrays) {
- var length = arrays.length,
- iteratee = length > 1 ? arrays[length - 1] : undefined;
-
- iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;
- return unzipWith(arrays, iteratee);
-});
-
-module.exports = zipWith;
diff --git a/assets/node_modules/log-symbols/browser.js b/assets/node_modules/log-symbols/browser.js
deleted file mode 100644
index a66f8ec..0000000
--- a/assets/node_modules/log-symbols/browser.js
+++ /dev/null
@@ -1,8 +0,0 @@
-'use strict';
-
-module.exports = {
- info: 'ℹ️',
- success: '✅',
- warning: '⚠️',
- error: '❌️'
-};
diff --git a/assets/node_modules/log-symbols/index.d.ts b/assets/node_modules/log-symbols/index.d.ts
deleted file mode 100644
index 4d3b7d1..0000000
--- a/assets/node_modules/log-symbols/index.d.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
-Colored symbols for various log levels.
-
-Includes fallbacks for Windows CMD which only supports a [limited character set](https://en.wikipedia.org/wiki/Code_page_437).
-
-@example
-```
-import logSymbols = require('log-symbols');
-
-console.log(logSymbols.success, 'Finished successfully!');
-// On good OSes: ✔ Finished successfully!
-// On Windows: √ Finished successfully!
-```
-*/
-declare const logSymbols: {
- readonly info: string;
-
- readonly success: string;
-
- readonly warning: string;
-
- readonly error: string;
-};
-
-export = logSymbols;
diff --git a/assets/node_modules/log-symbols/index.js b/assets/node_modules/log-symbols/index.js
deleted file mode 100644
index 247bb59..0000000
--- a/assets/node_modules/log-symbols/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict';
-const chalk = require('chalk');
-
-const isSupported = process.platform !== 'win32' || process.env.CI || process.env.TERM === 'xterm-256color';
-
-const main = {
- info: chalk.blue('ℹ'),
- success: chalk.green('✔'),
- warning: chalk.yellow('⚠'),
- error: chalk.red('✖')
-};
-
-const fallbacks = {
- info: chalk.blue('i'),
- success: chalk.green('√'),
- warning: chalk.yellow('‼'),
- error: chalk.red('×')
-};
-
-module.exports = isSupported ? main : fallbacks;
diff --git a/assets/node_modules/log-symbols/license b/assets/node_modules/log-symbols/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/log-symbols/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/log-symbols/package.json b/assets/node_modules/log-symbols/package.json
deleted file mode 100644
index 1f6c12b..0000000
--- a/assets/node_modules/log-symbols/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "name": "log-symbols",
- "version": "3.0.0",
- "description": "Colored symbols for various log levels. Example: `✔︎ Success`",
- "license": "MIT",
- "repository": "sindresorhus/log-symbols",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts",
- "browser.js"
- ],
- "keywords": [
- "unicode",
- "cli",
- "cmd",
- "command-line",
- "characters",
- "symbol",
- "symbols",
- "figure",
- "figures",
- "fallback",
- "windows",
- "log",
- "logging",
- "terminal",
- "stdout"
- ],
- "dependencies": {
- "chalk": "^2.4.2"
- },
- "devDependencies": {
- "ava": "^1.4.1",
- "strip-ansi": "^5.2.0",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- },
- "browser": "browser.js"
-}
diff --git a/assets/node_modules/log-symbols/readme.md b/assets/node_modules/log-symbols/readme.md
deleted file mode 100644
index da83c40..0000000
--- a/assets/node_modules/log-symbols/readme.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# log-symbols [![Build Status](https://travis-ci.org/sindresorhus/log-symbols.svg?branch=master)](https://travis-ci.org/sindresorhus/log-symbols)
-
-<img src="screenshot.png" width="226" height="192" align="right">
-
-> Colored symbols for various log levels
-
-Includes fallbacks for Windows CMD which only supports a [limited character set](https://en.wikipedia.org/wiki/Code_page_437).
-
-
-## Install
-
-```
-$ npm install log-symbols
-```
-
-
-## Usage
-
-```js
-const logSymbols = require('log-symbols');
-
-console.log(logSymbols.success, 'Finished successfully!');
-// On good OSes: ✔ Finished successfully!
-// On Windows: √ Finished successfully!
-```
-
-## API
-
-### logSymbols
-
-#### info
-#### success
-#### warning
-#### error
-
-
-## Related
-
-- [figures](https://github.com/sindresorhus/figures) - Unicode symbols with Windows CMD fallbacks
-- [py-log-symbols](https://github.com/ManrajGrover/py-log-symbols) - Python port
-- [log-symbols](https://github.com/palash25/log-symbols) - Ruby port
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/longest-streak/index.js b/assets/node_modules/longest-streak/index.js
deleted file mode 100644
index ec57987..0000000
--- a/assets/node_modules/longest-streak/index.js
+++ /dev/null
@@ -1,36 +0,0 @@
-'use strict'
-
-module.exports = longestStreak
-
-// Get the count of the longest repeating streak of `character` in `value`.
-function longestStreak(value, character) {
- var count = 0
- var maximum = 0
- var expected
- var index
-
- if (typeof character !== 'string' || character.length !== 1) {
- throw new Error('Expected character')
- }
-
- value = String(value)
- index = value.indexOf(character)
- expected = index
-
- while (index !== -1) {
- count++
-
- if (index === expected) {
- if (count > maximum) {
- maximum = count
- }
- } else {
- count = 1
- }
-
- expected = index + 1
- index = value.indexOf(character, expected)
- }
-
- return maximum
-}
diff --git a/assets/node_modules/longest-streak/license b/assets/node_modules/longest-streak/license
deleted file mode 100644
index 611b675..0000000
--- a/assets/node_modules/longest-streak/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/longest-streak/package.json b/assets/node_modules/longest-streak/package.json
deleted file mode 100644
index 0a7757a..0000000
--- a/assets/node_modules/longest-streak/package.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "name": "longest-streak",
- "version": "2.0.4",
- "description": "Count the longest repeating streak of a character",
- "license": "MIT",
- "keywords": [
- "count",
- "length",
- "longest",
- "repeating",
- "streak",
- "character"
- ],
- "repository": "wooorm/longest-streak",
- "bugs": "https://github.com/wooorm/longest-streak/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 longestStreak -o longest-streak.js",
- "build-mangle": "browserify . -s longestStreak -p tinyify -o longest-streak.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"
- },
- "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": [
- "longest-streak.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/longest-streak/readme.md b/assets/node_modules/longest-streak/readme.md
deleted file mode 100644
index 80dfa26..0000000
--- a/assets/node_modules/longest-streak/readme.md
+++ /dev/null
@@ -1,72 +0,0 @@
-# longest-streak
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-Count the longest repeating streak of a character.
-
-## Install
-
-[npm][]:
-
-```sh
-npm install longest-streak
-```
-
-## Use
-
-```js
-var longestStreak = require('longest-streak')
-
-longestStreak('` foo `` bar `', '`') // => 2
-```
-
-## API
-
-### `longestStreak(value, character)`
-
-Get the count of the longest repeating streak of `character` in `value`.
-
-###### Parameters
-
-* `value` (`string`) — Content, coerced to string.
-* `character` (`string`) — Single character to look for.
-
-###### Returns
-
-`number` — Number of characters at the place where `character` occurs in
-its longest streak in `value`.
-
-###### Throws
-
-* `Error` — when `character` is not a single character string.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/wooorm/longest-streak.svg
-
-[build]: https://travis-ci.org/wooorm/longest-streak
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/longest-streak.svg
-
-[coverage]: https://codecov.io/github/wooorm/longest-streak
-
-[downloads-badge]: https://img.shields.io/npm/dm/longest-streak.svg
-
-[downloads]: https://www.npmjs.com/package/longest-streak
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/longest-streak.svg
-
-[size]: https://bundlephobia.com/result?p=longest-streak
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
diff --git a/assets/node_modules/map-obj/index.js b/assets/node_modules/map-obj/index.js
deleted file mode 100644
index 8b7b4d6..0000000
--- a/assets/node_modules/map-obj/index.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict';
-module.exports = function (obj, cb) {
- var ret = {};
- var keys = Object.keys(obj);
-
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- var res = cb(key, obj[key], obj);
- ret[res[0]] = res[1];
- }
-
- return ret;
-};
diff --git a/assets/node_modules/map-obj/license b/assets/node_modules/map-obj/license
deleted file mode 100644
index 654d0bf..0000000
--- a/assets/node_modules/map-obj/license
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/map-obj/package.json b/assets/node_modules/map-obj/package.json
deleted file mode 100644
index d178305..0000000
--- a/assets/node_modules/map-obj/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "name": "map-obj",
- "version": "1.0.1",
- "description": "Map object keys and values into a new object",
- "license": "MIT",
- "repository": "sindresorhus/map-obj",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "node test.js"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "map",
- "obj",
- "object",
- "key",
- "keys",
- "value",
- "values",
- "val",
- "iterate",
- "iterator"
- ],
- "devDependencies": {
- "ava": "0.0.4"
- }
-}
diff --git a/assets/node_modules/map-obj/readme.md b/assets/node_modules/map-obj/readme.md
deleted file mode 100644
index fee03d9..0000000
--- a/assets/node_modules/map-obj/readme.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# map-obj [![Build Status](https://travis-ci.org/sindresorhus/map-obj.svg?branch=master)](https://travis-ci.org/sindresorhus/map-obj)
-
-> Map object keys and values into a new object
-
-
-## Install
-
-```
-$ npm install --save map-obj
-```
-
-
-## Usage
-
-```js
-var mapObj = require('map-obj');
-
-var newObject = mapObj({foo: 'bar'}, function (key, value, object) {
- // first element is the new key and second is the new value
- // here we reverse the order
- return [value, key];
-});
-//=> {bar: 'foo'}
-```
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/assets/node_modules/markdown-escapes/index.js b/assets/node_modules/markdown-escapes/index.js
deleted file mode 100644
index f8bea48..0000000
--- a/assets/node_modules/markdown-escapes/index.js
+++ /dev/null
@@ -1,57 +0,0 @@
-'use strict'
-
-module.exports = escapes
-
-var defaults = [
- '\\',
- '`',
- '*',
- '{',
- '}',
- '[',
- ']',
- '(',
- ')',
- '#',
- '+',
- '-',
- '.',
- '!',
- '_',
- '>'
-]
-
-var gfm = defaults.concat(['~', '|'])
-
-var commonmark = gfm.concat([
- '\n',
- '"',
- '$',
- '%',
- '&',
- "'",
- ',',
- '/',
- ':',
- ';',
- '<',
- '=',
- '?',
- '@',
- '^'
-])
-
-escapes.default = defaults
-escapes.gfm = gfm
-escapes.commonmark = commonmark
-
-// Get markdown escapes.
-function escapes(options) {
- var settings = options || {}
-
- if (settings.commonmark) {
- return commonmark
- }
-
- return settings.gfm ? gfm : defaults
-}
diff --git a/assets/node_modules/markdown-escapes/license b/assets/node_modules/markdown-escapes/license
deleted file mode 100644
index 8d8660d..0000000
--- a/assets/node_modules/markdown-escapes/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/markdown-escapes/package.json b/assets/node_modules/markdown-escapes/package.json
deleted file mode 100644
index 7f94d86..0000000
--- a/assets/node_modules/markdown-escapes/package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "name": "markdown-escapes",
- "version": "1.0.4",
- "description": "List of escapable characters in markdown",
- "license": "MIT",
- "keywords": [
- "markdown",
- "escape",
- "pedantic",
- "gfm",
- "commonmark"
- ],
- "repository": "wooorm/markdown-escapes",
- "bugs": "https://github.com/wooorm/markdown-escapes/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": "^14.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 markdownEscapes -o markdown-escapes.js",
- "build-mangle": "browserify . -s markdownEscapes -p tinyify -o markdown-escapes.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"
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "prettier": {
- "tabWidth": 2,
- "useTabs": false,
- "singleQuote": true,
- "bracketSpacing": false,
- "semi": false,
- "trailingComma": "none"
- },
- "xo": {
- "prettier": true,
- "esnext": false,
- "ignores": [
- "markdown-escapes.js"
- ]
- },
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
- }
-}
diff --git a/assets/node_modules/markdown-escapes/readme.md b/assets/node_modules/markdown-escapes/readme.md
deleted file mode 100644
index a740452..0000000
--- a/assets/node_modules/markdown-escapes/readme.md
+++ /dev/null
@@ -1,80 +0,0 @@
-# markdown-escapes
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-List of escapable characters in markdown.
-
-## Install
-
-[npm][]:
-
-```sh
-npm install markdown-escapes
-```
-
-## Use
-
-```js
-var escapes = require('markdown-escapes');
-
-// Access by property:
-escapes.commonmark; //=> ['\\', '`', ..., '@', '^']
-
-// Access by options object:
-escapes({gfm: true}); //=> ['\\', '`', ..., '~', '|']
-```
-
-## API
-
-### `escapes([options])`
-
-Get escapes.
-Supports `options.commonmark` and `options.gfm`, which when `true` returns the
-extra escape characters supported by those flavors.
-
-###### Returns
-
-`Array.<string>`.
-
-### `escapes.default`
-
-List of default escapable characters.
-
-### `escapes.gfm`
-
-List of escapable characters in GFM (which includes all `default`s).
-
-### `escapes.commonmark`
-
-List of escapable characters in CommonMark (which includes all `gfm`s).
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/wooorm/markdown-escapes.svg
-
-[build]: https://travis-ci.org/wooorm/markdown-escapes
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/markdown-escapes.svg
-
-[coverage]: https://codecov.io/github/wooorm/markdown-escapes
-
-[downloads-badge]: https://img.shields.io/npm/dm/markdown-escapes.svg
-
-[downloads]: https://www.npmjs.com/package/markdown-escapes
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/markdown-escapes.svg
-
-[size]: https://bundlephobia.com/result?p=markdown-escapes
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
diff --git a/assets/node_modules/markdown-table/index.js b/assets/node_modules/markdown-table/index.js
deleted file mode 100644
index 9a94af5..0000000
--- a/assets/node_modules/markdown-table/index.js
+++ /dev/null
@@ -1,250 +0,0 @@
-'use strict'
-
-module.exports = markdownTable
-
-var dotRe = /\./
-var lastDotRe = /\.[^.]*$/
-
-// Characters.
-var space = ' '
-var lineFeed = '\n'
-var dash = '-'
-var dot = '.'
-var colon = ':'
-var lowercaseC = 'c'
-var lowercaseL = 'l'
-var lowercaseR = 'r'
-var verticalBar = '|'
-
-var minCellSize = 3
-
-// Create a table from a matrix of strings.
-function markdownTable(table, options) {
- var settings = options || {}
- var delimiter = settings.delimiter
- var start = settings.start
- var end = settings.end
- var alignment = settings.align
- var calculateStringLength = settings.stringLength || lengthNoop
- var cellCount = 0
- var rowIndex = -1
- var rowLength = table.length
- var sizes = []
- var align
- var rule
- var rows
- var row
- var cells
- var index
- var position
- var size
- var value
- var spacing
- var before
- var after
-
- alignment = alignment ? alignment.concat() : []
-
- if (delimiter === null || delimiter === undefined) {
- delimiter = space + verticalBar + space
- }
-
- if (start === null || start === undefined) {
- start = verticalBar + space
- }
-
- if (end === null || end === undefined) {
- end = space + verticalBar
- }
-
- while (++rowIndex < rowLength) {
- row = table[rowIndex]
-
- index = -1
-
- if (row.length > cellCount) {
- cellCount = row.length
- }
-
- while (++index < cellCount) {
- position = row[index] ? dotindex(row[index]) : null
-
- if (!sizes[index]) {
- sizes[index] = minCellSize
- }
-
- if (position > sizes[index]) {
- sizes[index] = position
- }
- }
- }
-
- if (typeof alignment === 'string') {
- alignment = pad(cellCount, alignment).split('')
- }
-
- // Make sure only valid alignments are used.
- index = -1
-
- while (++index < cellCount) {
- align = alignment[index]
-
- if (typeof align === 'string') {
- align = align.charAt(0).toLowerCase()
- }
-
- if (
- align !== lowercaseL &&
- align !== lowercaseR &&
- align !== lowercaseC &&
- align !== dot
- ) {
- align = ''
- }
-
- alignment[index] = align
- }
-
- rowIndex = -1
- rows = []
-
- while (++rowIndex < rowLength) {
- row = table[rowIndex]
-
- index = -1
- cells = []
-
- while (++index < cellCount) {
- value = row[index]
-
- value = stringify(value)
-
- if (alignment[index] === dot) {
- position = dotindex(value)
-
- size =
- sizes[index] +
- (dotRe.test(value) ? 0 : 1) -
- (calculateStringLength(value) - position)
-
- cells[index] = value + pad(size - 1)
- } else {
- cells[index] = value
- }
- }
-
- rows[rowIndex] = cells
- }
-
- sizes = []
- rowIndex = -1
-
- while (++rowIndex < rowLength) {
- cells = rows[rowIndex]
-
- index = -1
-
- while (++index < cellCount) {
- value = cells[index]
-
- if (!sizes[index]) {
- sizes[index] = minCellSize
- }
-
- size = calculateStringLength(value)
-
- if (size > sizes[index]) {
- sizes[index] = size
- }
- }
- }
-
- rowIndex = -1
-
- while (++rowIndex < rowLength) {
- cells = rows[rowIndex]
-
- index = -1
-
- if (settings.pad !== false) {
- while (++index < cellCount) {
- value = cells[index]
-
- position = sizes[index] - (calculateStringLength(value) || 0)
- spacing = pad(position)
-
- if (alignment[index] === lowercaseR || alignment[index] === dot) {
- value = spacing + value
- } else if (alignment[index] === lowercaseC) {
- position /= 2
-
- if (position % 1 === 0) {
- before = position
- after = position
- } else {
- before = position + 0.5
- after = position - 0.5
- }
-
- value = pad(before) + value + pad(after)
- } else {
- value += spacing
- }
-
- cells[index] = value
- }
- }
-
- rows[rowIndex] = cells.join(delimiter)
- }
-
- if (settings.rule !== false) {
- index = -1
- rule = []
-
- while (++index < cellCount) {
- // When `pad` is false, make the rule the same size as the first row.
- if (settings.pad === false) {
- value = table[0][index]
- spacing = calculateStringLength(stringify(value))
- spacing = spacing > minCellSize ? spacing : minCellSize
- } else {
- spacing = sizes[index]
- }
-
- align = alignment[index]
-
- // When `align` is left, don't add colons.
- value = align === lowercaseR || align === '' ? dash : colon
- value += pad(spacing - 2, dash)
- value += align !== lowercaseL && align !== '' ? colon : dash
-
- rule[index] = value
- }
-
- rows.splice(1, 0, rule.join(delimiter))
- }
-
- return start + rows.join(end + lineFeed + start) + end
-}
-
-function stringify(value) {
- return value === null || value === undefined ? '' : String(value)
-}
-
-// Get the length of `value`.
-function lengthNoop(value) {
- return String(value).length
-}
-
-// Get a string consisting of `length` `character`s.
-function pad(length, character) {
- return new Array(length + 1).join(character || space)
-}
-
-// Get the position of the last dot in `value`.
-function dotindex(value) {
- var match = lastDotRe.exec(value)
-
- return match ? match.index + 1 : value.length
-}
diff --git a/assets/node_modules/markdown-table/license b/assets/node_modules/markdown-table/license
deleted file mode 100644
index 0c06d5b..0000000
--- a/assets/node_modules/markdown-table/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2014 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/assets/node_modules/markdown-table/package.json b/assets/node_modules/markdown-table/package.json
deleted file mode 100644
index da660d9..0000000
--- a/assets/node_modules/markdown-table/package.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "name": "markdown-table",
- "version": "1.1.3",
- "description": "Markdown/ASCII tables",
- "license": "MIT",
- "keywords": [
- "text",
- "markdown",
- "table",
- "align",
- "ascii",
- "rows",
- "tabular"
- ],
- "repository": "wooorm/markdown-table",
- "bugs": "https://github.com/wooorm/markdown-table/issues",
- "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",
- "chalk": "^2.0.0",
- "nyc": "^14.0.0",
- "prettier": "^1.12.1",
- "remark-cli": "^6.0.0",
- "remark-preset-wooorm": "^4.0.0",
- "strip-ansi": "^5.0.0",
- "tape": "^4.4.0",
- "tinyify": "^2.5.0",
- "xo": "^0.24.0"
- },
- "scripts": {
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "build-bundle": "browserify . -s markdownTable -o markdown-table.js",
- "build-mangle": "browserify . -s markdownTable -p tinyify -o markdown-table.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"
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "prettier": {
- "tabWidth": 2,
- "useTabs": false,
- "singleQuote": true,
- "bracketSpacing": false,
- "semi": false,
- "trailingComma": "none"
- },
- "xo": {
- "prettier": true,
- "esnext": false,
- "rules": {
- "complexity": "off",
- "max-depth": "off"
- },
- "ignores": [
- "markdown-table.js"
- ]
- },
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
- }
-}
diff --git a/assets/node_modules/markdown-table/readme.md b/assets/node_modules/markdown-table/readme.md
deleted file mode 100644
index d9afa1d..0000000
--- a/assets/node_modules/markdown-table/readme.md
+++ /dev/null
@@ -1,180 +0,0 @@
-# markdown-table
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-Generate fancy [Markdown][fancy]/ASCII tables.
-
-## Installation
-
-[npm][]:
-
-```bash
-npm install markdown-table
-```
-
-## Usage
-
-Normal usage (defaults to left-alignment):
-
-```javascript
-var table = require('markdown-table')
-
-table([
- ['Branch', 'Commit'],
- ['master', '0123456789abcdef'],
- ['staging', 'fedcba9876543210']
-])
-```
-
-Yields:
-
-```markdown
-| Branch | Commit |
-| ------- | ---------------- |
-| master | 0123456789abcdef |
-| staging | fedcba9876543210 |
-```
-
-With alignment:
-
-```javascript
-table(
- [
- ['Beep', 'No.', 'Boop'],
- ['beep', '1024', 'xyz'],
- ['boop', '3388450', 'tuv'],
- ['foo', '10106', 'qrstuv'],
- ['bar', '45', 'lmno']
- ],
- {
- align: ['l', 'c', 'r']
- }
-)
-```
-
-Yields:
-
-```markdown
-| Beep | No. | Boop |
-| :--- | :-----: | -----: |
-| beep | 1024 | xyz |
-| boop | 3388450 | tuv |
-| foo | 10106 | qrstuv |
-| bar | 45 | lmno |
-```
-
-Alignment on dots:
-
-```javascript
-table([['No.'], ['0.1.2'], ['11.22.33'], ['5.6.'], ['1.22222']], {
- align: '.'
-})
-```
-
-Yields:
-
-```markdown
-| No. |
-| :---------: |
-| 0.1.2 |
-| 11.22.33 |
-| 5.6. |
-| 1.22222 |
-```
-
-## API
-
-### `markdownTable(table[, options])`
-
-Turns a given matrix of strings (an array of arrays of strings) into a table.
-
-##### `options`
-
-###### `options.align`
-
-One style for all columns, or styles for their respective columns (`string` or
-`Array.<string>`). Each style is either `'l'` (left), `'r'` (right), `'c'`
-(centre), or `'.'` (dot). Other values are treated as `''`, which doesn’t place
-the colon but does left align. _Only the lowercased first character is used,
-so `Right` is fine._
-
-###### `options.delimiter`
-
-Value to insert between cells (`string`, default: `' | '`). Careful, setting
-this to a non-pipe breaks GitHub Flavoured Markdown.
-
-###### `options.start`
-
-Value to insert at the beginning of every row (`string`, default: `'| '`).
-
-###### `options.end`
-
-Value to insert at the end of every row (`string`, default: `' |'`).
-
-###### `options.rule`
-
-Whether to display a rule between the header and the body of the table
-(`boolean`, default: `true`). Careful, will break GitHub Flavoured Markdown
-when `false`.
-
-###### `options.stringLength`
-
-Method to detect the length of a cell (`Function`, default: `s => s.length`).
-
-ANSI-sequences mess up tables on terminals. To fix this, you have to
-pass in a `stringLength` option to detect the “visible” length of a
-cell.
-
-```javascript
-var strip = require('strip-ansi')
-
-function stringLength(cell) {
- return strip(cell).length
-}
-```
-
-###### `options.pad`
-
-Whether to pad the markdown for table cells to make them the same width
-(`boolean`, default: `true`). Setting this to false will cause the table
-rows to remain staggered.
-
-## Inspiration
-
-The original idea and basic implementation was inspired by James
-Halliday’s [text-table][] library.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/wooorm/markdown-table.svg
-
-[build]: https://travis-ci.org/wooorm/markdown-table
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/markdown-table.svg
-
-[coverage]: https://codecov.io/github/wooorm/markdown-table
-
-[downloads-badge]: https://img.shields.io/npm/dm/markdown-table.svg
-
-[downloads]: https://www.npmjs.com/package/markdown-table
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/markdown-table.svg
-
-[size]: https://bundlephobia.com/result?p=markdown-table
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
-
-[fancy]: https://help.github.com/articles/github-flavored-markdown/#tables
-
-[text-table]: https://github.com/substack/text-table
diff --git a/assets/node_modules/mathml-tag-names/index.json b/assets/node_modules/mathml-tag-names/index.json
deleted file mode 100644
index 81eb7e2..0000000
--- a/assets/node_modules/mathml-tag-names/index.json
+++ /dev/null
@@ -1,204 +0,0 @@
-[
- "abs",
- "and",
- "annotation",
- "annotation-xml",
- "apply",
- "approx",
- "arccos",
- "arccosh",
- "arccot",
- "arccoth",
- "arccsc",
- "arccsch",
- "arcsec",
- "arcsech",
- "arcsin",
- "arcsinh",
- "arctan",
- "arctanh",
- "arg",
- "bind",
- "bvar",
- "card",
- "cartesianproduct",
- "cbytes",
- "ceiling",
- "cerror",
- "ci",
- "cn",
- "codomain",
- "complexes",
- "compose",
- "condition",
- "conjugate",
- "cos",
- "cosh",
- "cot",
- "coth",
- "cs",
- "csc",
- "csch",
- "csymbol",
- "curl",
- "declare",
- "degree",
- "determinant",
- "diff",
- "divergence",
- "divide",
- "domain",
- "domainofapplication",
- "emptyset",
- "encoding",
- "eq",
- "equivalent",
- "eulergamma",
- "exists",
- "exp",
- "exponentiale",
- "factorial",
- "factorof",
- "false",
- "floor",
- "fn",
- "forall",
- "function",
- "gcd",
- "geq",
- "grad",
- "gt",
- "ident",
- "image",
- "imaginary",
- "imaginaryi",
- "implies",
- "in",
- "infinity",
- "int",
- "integers",
- "intersect",
- "interval",
- "inverse",
- "lambda",
- "laplacian",
- "lcm",
- "leq",
- "limit",
- "list",
- "ln",
- "log",
- "logbase",
- "lowlimit",
- "lt",
- "maction",
- "malign",
- "maligngroup",
- "malignmark",
- "malignscope",
- "math",
- "matrix",
- "matrixrow",
- "max",
- "mean",
- "median",
- "menclose",
- "merror",
- "mfenced",
- "mfrac",
- "mfraction",
- "mglyph",
- "mi",
- "min",
- "minus",
- "mlabeledtr",
- "mlongdiv",
- "mmultiscripts",
- "mn",
- "mo",
- "mode",
- "moment",
- "momentabout",
- "mover",
- "mpadded",
- "mphantom",
- "mprescripts",
- "mroot",
- "mrow",
- "ms",
- "mscarries",
- "mscarry",
- "msgroup",
- "msline",
- "mspace",
- "msqrt",
- "msrow",
- "mstack",
- "mstyle",
- "msub",
- "msubsup",
- "msup",
- "mtable",
- "mtd",
- "mtext",
- "mtr",
- "munder",
- "munderover",
- "naturalnumbers",
- "neq",
- "none",
- "not",
- "notanumber",
- "notin",
- "notprsubset",
- "notsubset",
- "or",
- "otherwise",
- "outerproduct",
- "partialdiff",
- "pi",
- "piece",
- "piecewice",
- "piecewise",
- "plus",
- "power",
- "primes",
- "product",
- "prsubset",
- "quotient",
- "rationals",
- "real",
- "reals",
- "reln",
- "rem",
- "root",
- "scalarproduct",
- "sdev",
- "sec",
- "sech",
- "select",
- "selector",
- "semantics",
- "sep",
- "set",
- "setdiff",
- "share",
- "sin",
- "sinh",
- "span",
- "subset",
- "sum",
- "tan",
- "tanh",
- "tendsto",
- "times",
- "transpose",
- "true",
- "union",
- "uplimit",
- "var",
- "variance",
- "vector",
- "vectorproduct",
- "xor"
-]
diff --git a/assets/node_modules/mathml-tag-names/license b/assets/node_modules/mathml-tag-names/license
deleted file mode 100644
index 8d8660d..0000000
--- a/assets/node_modules/mathml-tag-names/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/mathml-tag-names/package.json b/assets/node_modules/mathml-tag-names/package.json
deleted file mode 100644
index 676be35..0000000
--- a/assets/node_modules/mathml-tag-names/package.json
+++ /dev/null
@@ -1,74 +0,0 @@
-{
- "name": "mathml-tag-names",
- "version": "2.1.3",
- "description": "List of known MathML tag-names",
- "license": "MIT",
- "keywords": [
- "MathML",
- "math",
- "tag",
- "name",
- "element",
- "tagname",
- "w3c"
- ],
- "repository": "wooorm/mathml-tag-names",
- "bugs": "https://github.com/wooorm/mathml-tag-names/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",
- "prettier": "^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 mathML -o mathml-tag-names.js",
- "build-mangle": "browserify index.json -s mathML -p tinyify -o mathml-tag-names.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,
- "ignore": [
- "mathml-tag-names.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/mathml-tag-names/readme.md b/assets/node_modules/mathml-tag-names/readme.md
deleted file mode 100644
index f2899d9..0000000
--- a/assets/node_modules/mathml-tag-names/readme.md
+++ /dev/null
@@ -1,103 +0,0 @@
-# mathml-tag-names
-
-[![Build][build-badge]][build]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-List of known MathML tag names.
-Includes the elements from [MathML 1][mathml1], [MathML 2][mathml2], and
-[MathML 3][mathml3].
-
-The repo contains a script to crawl specs to include newly introduced tag names.
-
-## Install
-
-[npm][]:
-
-```sh
-npm install mathml-tag-names
-```
-
-## Use
-
-```js
-var mathMLTagNames = require('mathml-tag-names')
-
-console.log(mathMLTagNames.length) // => 202
-
-console.log(mathMLTagNames.slice(0, 20))
-```
-
-Yields:
-
-```js
-[ 'abs',
- 'and',
- 'annotation',
- 'annotation-xml',
- 'apply',
- 'approx',
- 'arccos',
- 'arccosh',
- 'arccot',
- 'arccoth',
- 'arccsc',
- 'arccsch',
- 'arcsec',
- 'arcsech',
- 'arcsin',
- 'arcsinh',
- 'arctan',
- 'arctanh',
- 'arg',
- 'bind' ]
-```
-
-## API
-
-### `mathMlTagNames`
-
-`Array.<string>` — List of lowercase tag names.
-
-## Related
-
-* [`html-tag-names`](https://github.com/wooorm/html-tag-names)
- — List of HTML tags
-* [`svg-tag-names`](https://github.com/wooorm/svg-tag-names)
- — List of SVG tags
-* [`svg-element-attributes`](https://github.com/wooorm/svg-element-attributes)
- — Map of SVG elements to allowed attributes
-* [`html-element-attributes`](https://github.com/wooorm/html-element-attributes)
- — Map of HTML elements to allowed attributes
-* [`aria-attributes`](https://github.com/wooorm/aria-attributes)
- — List of ARIA attributes
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definition -->
-
-[build-badge]: https://img.shields.io/travis/wooorm/mathml-tag-names.svg
-
-[build]: https://travis-ci.org/wooorm/mathml-tag-names
-
-[downloads-badge]: https://img.shields.io/npm/dm/mathml-tag-names.svg
-
-[downloads]: https://www.npmjs.com/package/mathml-tag-names
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/mathml-tag-names.svg
-
-[size]: https://bundlephobia.com/result?p=mathml-tag-names
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
-
-[mathml1]: https://www.w3.org/TR/1998/REC-MathML-19980407/appendixF.html
-
-[mathml2]: https://www.w3.org/TR/MathML2/appendixl.html
-
-[mathml3]: https://www.w3.org/TR/MathML3/appendixi.html
diff --git a/assets/node_modules/mdast-util-compact/index.js b/assets/node_modules/mdast-util-compact/index.js
deleted file mode 100644
index eee0fdf..0000000
--- a/assets/node_modules/mdast-util-compact/index.js
+++ /dev/null
@@ -1,61 +0,0 @@
-'use strict'
-
-var visit = require('unist-util-visit')
-
-module.exports = compact
-
-// Make an mdast tree compact by merging adjacent text nodes.
-function compact(tree, commonmark) {
- visit(tree, visitor)
-
- return tree
-
- function visitor(child, index, parent) {
- var siblings = parent ? parent.children : []
- var prev = index && siblings[index - 1]
-
- if (
- prev &&
- child.type === prev.type &&
- mergeable(prev, commonmark) &&
- mergeable(child, commonmark)
- ) {
- if (child.value) {
- prev.value += child.value
- }
-
- if (child.children) {
- prev.children = prev.children.concat(child.children)
- }
-
- siblings.splice(index, 1)
-
- if (prev.position && child.position) {
- prev.position.end = child.position.end
- }
-
- return index
- }
- }
-}
-
-function mergeable(node, commonmark) {
- var start
- var end
-
- if (node.type === 'text') {
- if (!node.position) {
- return true
- }
-
- start = node.position.start
- end = node.position.end
-
- // Only merge nodes which occupy the same size as their `value`.
- return (
- start.line !== end.line || end.column - start.column === node.value.length
- )
- }
-
- return commonmark && node.type === 'blockquote'
-}
diff --git a/assets/node_modules/mdast-util-compact/license b/assets/node_modules/mdast-util-compact/license
deleted file mode 100644
index 8d8660d..0000000
--- a/assets/node_modules/mdast-util-compact/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/mdast-util-compact/package.json b/assets/node_modules/mdast-util-compact/package.json
deleted file mode 100644
index 835f9c8..0000000
--- a/assets/node_modules/mdast-util-compact/package.json
+++ /dev/null
@@ -1,74 +0,0 @@
-{
- "name": "mdast-util-compact",
- "version": "1.0.4",
- "description": "Make an mdast tree compact",
- "license": "MIT",
- "keywords": [
- "mdast",
- "utility",
- "compact",
- "node"
- ],
- "repository": "syntax-tree/mdast-util-compact",
- "bugs": "https://github.com/syntax-tree/mdast-util-compact/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"
- ],
- "dependencies": {
- "unist-util-visit": "^1.1.0"
- },
- "devDependencies": {
- "browserify": "^16.0.0",
- "nyc": "^14.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",
- "unist-builder": "^2.0.0",
- "xo": "^0.25.0"
- },
- "scripts": {
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "build-bundle": "browserify . -s mdastUtilCompact > mdast-util-compact.js",
- "build-mangle": "browserify . -s mdastUtilCompact -p tinyify > mdast-util-compact.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": [
- "mdast-util-compact.js"
- ]
- },
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/mdast-util-compact/readme.md b/assets/node_modules/mdast-util-compact/readme.md
deleted file mode 100644
index 304b660..0000000
--- a/assets/node_modules/mdast-util-compact/readme.md
+++ /dev/null
@@ -1,127 +0,0 @@
-# mdast-util-compact
-
-[![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**][mdast] utility to make trees compact: collapse text nodes (when
-possible) and blockquotes (in commonmark mode).
-
-## Install
-
-[npm][]:
-
-```sh
-npm install mdast-util-compact
-```
-
-## Usage
-
-```js
-var u = require('unist-builder')
-var compact = require('mdast-util-compact')
-
-var tree = u('strong', [u('text', 'alpha'), u('text', ' '), u('text', 'bravo')])
-
-compact(tree)
-
-console.log(tree)
-```
-
-Yields:
-
-```js
-{ type: 'strong',
- children: [ { type: 'text', value: 'alpha bravo' } ] }
-```
-
-## API
-
-### `compact(tree[, commonmark])`
-
-Walk the [tree][] and collapse nodes.
-Combines adjacent [text][]s (but not when they represent entities or escapes).
-If `commonmark` is `true`, collapses [blockquote][]s.
-
-Handles [positional information][position-information] properly.
-
-###### Returns
-
-The given `tree`.
-
-## Security
-
-Use of `mdast-util-compact` does not involve [**hast**][hast] or user content
-so there are no openings for [cross-site scripting (XSS)][xss] attacks.
-
-## 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, organisation, or community you agree to
-abide by its terms.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/syntax-tree/mdast-util-compact.svg
-
-[build]: https://travis-ci.org/syntax-tree/mdast-util-compact
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/syntax-tree/mdast-util-compact.svg
-
-[coverage]: https://codecov.io/github/syntax-tree/mdast-util-compact
-
-[downloads-badge]: https://img.shields.io/npm/dm/mdast-util-compact.svg
-
-[downloads]: https://www.npmjs.com/package/mdast-util-compact
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/mdast-util-compact.svg
-
-[size]: https://bundlephobia.com/result?p=mdast-util-compact
-
-[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/join%20the%20community-on%20spectrum-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
-
-[mdast]: https://github.com/syntax-tree/mdast
-
-[tree]: https://github.com/syntax-tree/unist#tree
-
-[position-information]: https://github.com/syntax-tree/unist#positional-information
-
-[text]: https://github.com/syntax-tree/mdast#text
-
-[blockquote]: https://github.com/syntax-tree/mdast#blockquote
-
-[xss]: https://en.wikipedia.org/wiki/Cross-site_scripting
-
-[hast]: https://github.com/syntax-tree/hast
diff --git a/assets/node_modules/meow/index.d.ts b/assets/node_modules/meow/index.d.ts
deleted file mode 100644
index 8ee568d..0000000
--- a/assets/node_modules/meow/index.d.ts
+++ /dev/null
@@ -1,252 +0,0 @@
-import {PackageJson} from 'type-fest';
-import {Options as MinimistOptions} from 'minimist-options';
-
-declare namespace meow {
- interface Options<Flags extends MinimistOptions> {
- /**
- Define argument flags.
-
- The key is the flag name and the value is an object with any of:
-
- - `type`: Type of value. (Possible values: `string` `boolean` `number`)
- - `alias`: Usually used to define a short flag alias.
- - `default`: Default value when the flag is not specified.
-
- @example
- ```
- flags: {
- unicorn: {
- type: 'string',
- alias: 'u',
- default: 'rainbow'
- }
- }
- ```
- */
- readonly flags?: Flags;
-
- /**
- Description to show above the help text. Default: The package.json `"description"` property.
-
- Set it to `false` to disable it altogether.
- */
- readonly description?: string | false;
-
- /**
- The help text you want shown.
-
- The input is reindented and starting/ending newlines are trimmed which means you can use a [template literal](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/template_strings) without having to care about using the correct amount of indent.
-
- The description will be shown above your help text automatically.
-
- Set it to `false` to disable it altogether.
- */
- readonly help?: string | false;
-
- /**
- Set a custom version output. Default: The package.json `"version"` property.
-
- Set it to `false` to disable it altogether.
- */
- readonly version?: string | false;
-
- /**
- Automatically show the help text when the `--help` flag is present. Useful to set this value to `false` when a CLI manages child CLIs with their own help text.
-
- This option is only considered when there is only one argument in `process.argv`.
- */
- readonly autoHelp?: boolean;
-
- /**
- Automatically show the version text when the `--version` flag is present. Useful to set this value to `false` when a CLI manages child CLIs with their own version text.
-
- This option is only considered when there is only one argument in `process.argv`.
- */
- readonly autoVersion?: boolean;
-
- /**
- package.json as an `Object`. Default: Closest package.json upwards.
-
- _You most likely don't need this option._
- */
- readonly pkg?: {[key: string]: unknown};
-
- /**
- Custom arguments object.
-
- @default process.argv.slice(2)
- */
- readonly argv?: ReadonlyArray<string>;
-
- /**
- Infer the argument type.
-
- By default, the argument `5` in `$ foo 5` becomes a string. Enabling this would infer it as a number.
-
- @default false
- */
- readonly inferType?: boolean;
-
- /**
- Value of `boolean` flags not defined in `argv`. If set to `undefined` the flags not defined in `argv` will be excluded from the result. The `default` value set in `boolean` flags take precedence over `booleanDefault`.
-
- __Caution: Explicitly specifying undefined for `booleanDefault` has different meaning from omitting key itself.__
-
- @example
- ```
- import meow = require('meow');
-
- const cli = meow(`
- Usage
- $ foo
-
- Options
- --rainbow, -r Include a rainbow
- --unicorn, -u Include a unicorn
- --no-sparkles Exclude sparkles
-
- Examples
- $ foo
- 🌈 unicorns✨🌈
- `, {
- booleanDefault: undefined,
- flags: {
- rainbow: {
- type: 'boolean',
- default: true,
- alias: 'r'
- },
- unicorn: {
- type: 'boolean',
- default: false,
- alias: 'u'
- },
- cake: {
- type: 'boolean',
- alias: 'c'
- },
- sparkles: {
- type: 'boolean',
- default: true
- }
- }
- });
-
- //{
- // flags: {
- // rainbow: true,
- // unicorn: false,
- // sparkles: true
- // },
- // unnormalizedFlags: {
- // rainbow: true,
- // r: true,
- // unicorn: false,
- // u: false,
- // sparkles: true
- // },
- // …
- //}
- ```
- */
- readonly booleanDefault?: boolean | null | undefined;
-
- /**
- Whether to use [hard-rejection](https://github.com/sindresorhus/hard-rejection) or not. Disabling this can be useful if you need to handle `process.on('unhandledRejection')` yourself.
-
- @default true
- */
- readonly hardRejection?: boolean;
- }
-
- type TypedFlags<Flags extends MinimistOptions> = {
- [F in keyof Flags]: Flags[F] extends {type: 'number'}
- ? number
- : Flags[F] extends {type: 'string'}
- ? string
- : Flags[F] extends {type: 'boolean'}
- ? boolean
- : unknown;
- };
-
- interface Result<Flags extends MinimistOptions> {
- /**
- Non-flag arguments.
- */
- input: string[];
-
- /**
- Flags converted to camelCase excluding aliases.
- */
- flags: TypedFlags<Flags> & {[name: string]: unknown};
-
- /**
- Flags converted camelCase including aliases.
- */
- unnormalizedFlags: TypedFlags<Flags> & {[name: string]: unknown};
-
- /**
- The `package.json` object.
- */
- pkg: PackageJson;
-
- /**
- The help text used with `--help`.
- */
- help: string;
-
- /**
- Show the help text and exit with code.
-
- @param exitCode - The exit code to use. Default: `2`.
- */
- showHelp(exitCode?: number): void;
-
- /**
- Show the version text and exit.
- */
- showVersion(): void;
- }
-}
-/**
-@param helpMessage - Shortcut for the `help` option.
-
-@example
-```
-#!/usr/bin/env node
-'use strict';
-import meow = require('meow');
-import foo = require('.');
-
-const cli = meow(`
- Usage
- $ foo <input>
-
- Options
- --rainbow, -r Include a rainbow
-
- Examples
- $ foo unicorns --rainbow
- 🌈 unicorns 🌈
-`, {
- flags: {
- rainbow: {
- type: 'boolean',
- alias: 'r'
- }
- }
-});
-
-//{
-// input: ['unicorns'],
-// flags: {rainbow: true},
-// ...
-//}
-
-foo(cli.input[0], cli.flags);
-```
-*/
-declare function meow<Flags extends MinimistOptions>(helpMessage: string, options?: meow.Options<Flags>): meow.Result<Flags>;
-declare function meow<Flags extends MinimistOptions>(options?: meow.Options<Flags>): meow.Result<Flags>;
-
-export = meow;
diff --git a/assets/node_modules/meow/index.js b/assets/node_modules/meow/index.js
deleted file mode 100644
index 4b802db..0000000
--- a/assets/node_modules/meow/index.js
+++ /dev/null
@@ -1,132 +0,0 @@
-'use strict';
-const path = require('path');
-const buildMinimistOptions = require('minimist-options');
-const yargs = require('yargs-parser');
-const camelcaseKeys = require('camelcase-keys');
-const decamelizeKeys = require('decamelize-keys');
-const trimNewlines = require('trim-newlines');
-const redent = require('redent');
-const readPkgUp = require('read-pkg-up');
-const hardRejection = require('hard-rejection');
-const normalizePackageData = require('normalize-package-data');
-
-// Prevent caching of this module so module.parent is always accurate
-delete require.cache[__filename];
-const parentDir = path.dirname(module.parent.filename);
-
-const meow = (helpText, options) => {
- if (typeof helpText !== 'string') {
- options = helpText;
- helpText = '';
- }
-
- options = {
- pkg: readPkgUp.sync({
- cwd: parentDir,
- normalize: false
- }).packageJson || {},
- argv: process.argv.slice(2),
- inferType: false,
- input: 'string',
- help: helpText,
- autoHelp: true,
- autoVersion: true,
- booleanDefault: false,
- hardRejection: true,
- ...options
- };
-
- if (options.hardRejection) {
- hardRejection();
- }
-
- const minimistFlags = options.flags && typeof options.booleanDefault !== 'undefined' ? Object.keys(options.flags).reduce(
- (flags, flag) => {
- if (flags[flag].type === 'boolean' && !Object.prototype.hasOwnProperty.call(flags[flag], 'default')) {
- flags[flag].default = options.booleanDefault;
- }
-
- return flags;
- },
- options.flags
- ) : options.flags;
-
- let minimistoptions = {
- arguments: options.input,
- ...minimistFlags
- };
-
- minimistoptions = decamelizeKeys(minimistoptions, '-', {exclude: ['stopEarly', '--']});
-
- if (options.inferType) {
- delete minimistoptions.arguments;
- }
-
- minimistoptions = buildMinimistOptions(minimistoptions);
-
- if (minimistoptions['--']) {
- minimistoptions.configuration = {
- ...minimistoptions.configuration,
- 'populate--': true
- };
- }
-
- const {pkg} = options;
- const argv = yargs(options.argv, minimistoptions);
- let help = redent(trimNewlines((options.help || '').replace(/\t+\n*$/, '')), 2);
-
- normalizePackageData(pkg);
-
- process.title = pkg.bin ? Object.keys(pkg.bin)[0] : pkg.name;
-
- let {description} = options;
- if (!description && description !== false) {
- ({description} = pkg);
- }
-
- help = (description ? `\n ${description}\n` : '') + (help ? `\n${help}\n` : '\n');
-
- const showHelp = code => {
- console.log(help);
- process.exit(typeof code === 'number' ? code : 2);
- };
-
- const showVersion = () => {
- console.log(typeof options.version === 'string' ? options.version : pkg.version);
- process.exit();
- };
-
- if (argv._.length === 0 && options.argv.length === 1) {
- if (argv.version === true && options.autoVersion) {
- showVersion();
- }
-
- if (argv.help === true && options.autoHelp) {
- showHelp(0);
- }
- }
-
- const input = argv._;
- delete argv._;
-
- const flags = camelcaseKeys(argv, {exclude: ['--', /^\w$/]});
- const unnormalizedFlags = {...flags};
-
- if (options.flags !== undefined) {
- for (const flagValue of Object.values(options.flags)) {
- delete flags[flagValue.alias];
- }
- }
-
- return {
- input,
- flags,
- unnormalizedFlags,
- pkg,
- help,
- showHelp,
- showVersion
- };
-};
-
-module.exports = meow;
diff --git a/assets/node_modules/meow/license b/assets/node_modules/meow/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/meow/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/meow/package.json b/assets/node_modules/meow/package.json
deleted file mode 100644
index 7347219..0000000
--- a/assets/node_modules/meow/package.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "name": "meow",
- "version": "6.0.0",
- "description": "CLI app helper",
- "license": "MIT",
- "repository": "sindresorhus/meow",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "cli",
- "bin",
- "util",
- "utility",
- "helper",
- "argv",
- "command",
- "line",
- "meow",
- "cat",
- "kitten",
- "parser",
- "option",
- "flags",
- "input",
- "cmd",
- "console"
- ],
- "dependencies": {
- "@types/minimist": "^1.2.0",
- "camelcase-keys": "^6.1.1",
- "decamelize-keys": "^1.1.0",
- "hard-rejection": "^2.0.0",
- "minimist-options": "^4.0.1",
- "normalize-package-data": "^2.5.0",
- "read-pkg-up": "^7.0.0",
- "redent": "^3.0.0",
- "trim-newlines": "^3.0.0",
- "type-fest": "^0.8.1",
- "yargs-parser": "^16.1.0"
- },
- "devDependencies": {
- "ava": "^2.4.0",
- "execa": "^3.3.0",
- "indent-string": "^4.0.0",
- "tsd": "^0.11.0",
- "xo": "^0.25.3"
- },
- "xo": {
- "rules": {
- "unicorn/no-process-exit": "off"
- }
- }
-}
diff --git a/assets/node_modules/meow/readme.md b/assets/node_modules/meow/readme.md
deleted file mode 100644
index fbc7106..0000000
--- a/assets/node_modules/meow/readme.md
+++ /dev/null
@@ -1,290 +0,0 @@
-# meow [![Build Status](https://travis-ci.org/sindresorhus/meow.svg?branch=master)](https://travis-ci.org/sindresorhus/meow)
-
-> CLI app helper
-
-![](meow.gif)
-
-
-## Features
-
-- Parses arguments
-- Converts flags to [camelCase](https://github.com/sindresorhus/camelcase)
-- Negates flags when using the `--no-` prefix
-- Outputs version when `--version`
-- Outputs description and supplied help text when `--help`
-- Makes unhandled rejected promises [fail hard](https://github.com/sindresorhus/hard-rejection) instead of the default silent fail
-- Sets the process title to the binary name defined in package.json
-
-
-## Install
-
-```
-$ npm install meow
-```
-
-
-## Usage
-
-```
-$ ./foo-app.js unicorns --rainbow
-```
-
-```js
-#!/usr/bin/env node
-'use strict';
-const meow = require('meow');
-const foo = require('.');
-
-const cli = meow(`
- Usage
- $ foo <input>
-
- Options
- --rainbow, -r Include a rainbow
-
- Examples
- $ foo unicorns --rainbow
- 🌈 unicorns 🌈
-`, {
- flags: {
- rainbow: {
- type: 'boolean',
- alias: 'r'
- }
- }
-});
-/*
-{
- input: ['unicorns'],
- flags: {rainbow: true},
- ...
-}
-*/
-
-foo(cli.input[0], cli.flags);
-```
-
-
-## API
-
-### meow(helpText, options?)
-### meow(options)
-
-Returns an `object` with:
-
-- `input` *(Array)* - Non-flag arguments
-- `flags` *(Object)* - Flags converted to camelCase excluding aliases
-- `unnormalizedFlags` *(Object)* - Flags converted to camelCase including aliases
-- `pkg` *(Object)* - The `package.json` object
-- `help` *(string)* - The help text used with `--help`
-- `showHelp([exitCode=2])` *(Function)* - Show the help text and exit with `exitCode`
-- `showVersion()` *(Function)* - Show the version text and exit
-
-#### helpText
-
-Type: `string`
-
-Shortcut for the `help` option.
-
-#### options
-
-Type: `object`
-
-##### flags
-
-Type: `object`
-
-Define argument flags.
-
-The key is the flag name and the value is an object with any of:
-
-- `type`: Type of value. (Possible values: `string` `boolean` `number`)
-- `alias`: Usually used to define a short flag alias.
-- `default`: Default value when the flag is not specified.
-
-Example:
-
-```js
-flags: {
- unicorn: {
- type: 'string',
- alias: 'u',
- default: 'rainbow'
- }
-}
-```
-
-
-##### description
-
-Type: `string | boolean`<br>
-Default: The package.json `"description"` property
-
-Description to show above the help text.
-
-Set it to `false` to disable it altogether.
-
-##### help
-
-Type: `string | boolean`
-
-The help text you want shown.
-
-The input is reindented and starting/ending newlines are trimmed which means you can use a [template literal](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/template_strings) without having to care about using the correct amount of indent.
-
-The description will be shown above your help text automatically.
-
-##### version
-
-Type: `string | boolean`<br>
-Default: The package.json `"version"` property
-
-Set a custom version output.
-
-##### autoHelp
-
-Type: `boolean`<br>
-Default: `true`
-
-Automatically show the help text when the `--help` flag is present. Useful to set this value to `false` when a CLI manages child CLIs with their own help text.
-
-This option is only considered when there is only one argument in `process.argv`.
-
-##### autoVersion
-
-Type: `boolean`<br>
-Default: `true`
-
-Automatically show the version text when the `--version` flag is present. Useful to set this value to `false` when a CLI manages child CLIs with their own version text.
-
- This option is only considered when there is only one argument in `process.argv`.
-
-##### pkg
-
-Type: `object`<br>
-Default: Closest package.json upwards
-
-package.json as an `object`.
-
-*You most likely don't need this option.*
-
-##### argv
-
-Type: `string[]`<br>
-Default: `process.argv.slice(2)`
-
-Custom arguments object.
-
-##### inferType
-
-Type: `boolean`<br>
-Default: `false`
-
-Infer the argument type.
-
-By default, the argument `5` in `$ foo 5` becomes a string. Enabling this would infer it as a number.
-
-##### booleanDefault
-
-Type: `boolean | null | undefined`<br>
-Default: `false`
-
-Value of `boolean` flags not defined in `argv`.
-If set to `undefined` the flags not defined in `argv` will be excluded from the result.
-The `default` value set in `boolean` flags take precedence over `booleanDefault`.
-
-Example:
-
-```js
-const meow = require('meow');
-
-const cli = meow(`
- Usage
- $ foo
-
- Options
- --rainbow, -r Include a rainbow
- --unicorn, -u Include a unicorn
- --no-sparkles Exclude sparkles
-
- Examples
- $ foo
- 🌈 unicorns✨🌈
-`, {
- booleanDefault: undefined,
- flags: {
- rainbow: {
- type: 'boolean',
- default: true,
- alias: 'r'
- },
- unicorn: {
- type: 'boolean',
- default: false,
- alias: 'u'
- },
- cake: {
- type: 'boolean',
- alias: 'c'
- },
- sparkles: {
- type: 'boolean',
- default: true
- }
- }
-});
-/*
-{
- flags: {
- rainbow: true,
- unicorn: false,
- sparkles: true
- },
- unnormalizedFlags: {
- rainbow: true,
- r: true,
- unicorn: false,
- u: false,
- sparkles: true
- },
- …
-}
-*/
-```
-
-##### hardRejection
-
-Type: `boolean`<br>
-Default: `true`
-
-Whether to use [`hard-rejection`](https://github.com/sindresorhus/hard-rejection) or not. Disabling this can be useful if you need to handle `process.on('unhandledRejection')` yourself.
-
-## Promises
-
-Meow will make unhandled rejected promises [fail hard](https://github.com/sindresorhus/hard-rejection) instead of the default silent fail. Meaning you don't have to manually `.catch()` promises used in your CLI.
-
-
-## Tips
-
-See [`chalk`](https://github.com/chalk/chalk) if you want to colorize the terminal output.
-
-See [`get-stdin`](https://github.com/sindresorhus/get-stdin) if you want to accept input from stdin.
-
-See [`conf`](https://github.com/sindresorhus/conf) if you need to persist some data.
-
-See [`update-notifier`](https://github.com/yeoman/update-notifier) if you want update notifications.
-
-[More useful CLI utilities…](https://github.com/sindresorhus/awesome-nodejs#command-line-utilities)
-
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-meow?utm_source=npm-meow&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
diff --git a/assets/node_modules/merge2/LICENSE b/assets/node_modules/merge2/LICENSE
deleted file mode 100644
index b3f0c32..0000000
--- a/assets/node_modules/merge2/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2019 Teambition
-
-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/assets/node_modules/merge2/README.md b/assets/node_modules/merge2/README.md
deleted file mode 100644
index f19d627..0000000
--- a/assets/node_modules/merge2/README.md
+++ /dev/null
@@ -1,142 +0,0 @@
-# merge2
-
-Merge multiple streams into one stream in sequence or parallel.
-
-[![NPM version][npm-image]][npm-url]
-[![Build Status][travis-image]][travis-url]
-[![Downloads][downloads-image]][downloads-url]
-
-## Install
-
-Install with [npm](https://npmjs.org/package/merge2)
-
-```sh
-npm install merge2
-```
-
-## Usage
-
-```js
-const gulp = require('gulp')
-const merge2 = require('merge2')
-const concat = require('gulp-concat')
-const minifyHtml = require('gulp-minify-html')
-const ngtemplate = require('gulp-ngtemplate')
-
-gulp.task('app-js', function () {
- return merge2(
- gulp.src('static/src/tpl/*.html')
- .pipe(minifyHtml({empty: true}))
- .pipe(ngtemplate({
- module: 'genTemplates',
- standalone: true
- })
- ), gulp.src([
- 'static/src/js/app.js',
- 'static/src/js/locale_zh-cn.js',
- 'static/src/js/router.js',
- 'static/src/js/tools.js',
- 'static/src/js/services.js',
- 'static/src/js/filters.js',
- 'static/src/js/directives.js',
- 'static/src/js/controllers.js'
- ])
- )
- .pipe(concat('app.js'))
- .pipe(gulp.dest('static/dist/js/'))
-})
-```
-
-```js
-const stream = merge2([stream1, stream2], stream3, {end: false})
-//...
-stream.add(stream4, stream5)
-//..
-stream.end()
-```
-
-```js
-// equal to merge2([stream1, stream2], stream3)
-const stream = merge2()
-stream.add([stream1, stream2])
-stream.add(stream3)
-```
-
-```js
-// merge order:
-// 1. merge `stream1`;
-// 2. merge `stream2` and `stream3` in parallel after `stream1` merged;
-// 3. merge 'stream4' after `stream2` and `stream3` merged;
-const stream = merge2(stream1, [stream2, stream3], stream4)
-
-// merge order:
-// 1. merge `stream5` and `stream6` in parallel after `stream4` merged;
-// 2. merge 'stream7' after `stream5` and `stream6` merged;
-stream.add([stream5, stream6], stream7)
-```
-
-```js
-// nest merge
-// equal to merge2(stream1, stream2, stream6, stream3, [stream4, stream5]);
-const streamA = merge2(stream1, stream2)
-const streamB = merge2(stream3, [stream4, stream5])
-const stream = merge2(streamA, streamB)
-streamA.add(stream6)
-```
-
-## API
-
-```js
-const merge2 = require('merge2')
-```
-
-### merge2()
-
-### merge2(options)
-
-### merge2(stream1, stream2, ..., streamN)
-
-### merge2(stream1, stream2, ..., streamN, options)
-
-### merge2(stream1, [stream2, stream3, ...], streamN, options)
-
-return a duplex stream (mergedStream). streams in array will be merged in parallel.
-
-### mergedStream.add(stream)
-
-### mergedStream.add(stream1, [stream2, stream3, ...], ...)
-
-return the mergedStream.
-
-### mergedStream.on('queueDrain', function() {})
-
-It will emit 'queueDrain' when all streams merged. If you set `end === false` in options, this event give you a notice that should add more streams to merge or end the mergedStream.
-
-#### stream
-
-*option*
-Type: `Readable` or `Duplex` or `Transform` stream.
-
-#### options
-
-*option*
-Type: `Object`.
-
-* **end** - `Boolean` - if `end === false` then mergedStream will not be auto ended, you should end by yourself. **Default:** `undefined`
-
-* **objectMode** - `Boolean` . **Default:** `true`
-
-`objectMode` and other options(`highWaterMark`, `defaultEncoding` ...) is same as Node.js `Stream`.
-
-## License
-
-MIT © [Teambition](https://www.teambition.com)
-
-[npm-url]: https://npmjs.org/package/merge2
-[npm-image]: http://img.shields.io/npm/v/merge2.svg
-
-[travis-url]: https://travis-ci.org/teambition/merge2
-[travis-image]: http://img.shields.io/travis/teambition/merge2.svg
-
-[downloads-url]: https://npmjs.org/package/merge2
-[downloads-image]: http://img.shields.io/npm/dm/merge2.svg?style=flat-square
diff --git a/assets/node_modules/merge2/index.js b/assets/node_modules/merge2/index.js
deleted file mode 100644
index f644e3c..0000000
--- a/assets/node_modules/merge2/index.js
+++ /dev/null
@@ -1,107 +0,0 @@
-'use strict'
-/*
- * merge2
- * https://github.com/teambition/merge2
- *
- * Copyright (c) 2014-2016 Teambition
- * Licensed under the MIT license.
- */
-const Stream = require('stream')
-const PassThrough = Stream.PassThrough
-const slice = Array.prototype.slice
-
-module.exports = merge2
-
-function merge2 () {
- const streamsQueue = []
- let merging = false
- const args = slice.call(arguments)
- let options = args[args.length - 1]
-
- if (options && !Array.isArray(options) && options.pipe == null) args.pop()
- else options = {}
-
- const doEnd = options.end !== false
- if (options.objectMode == null) options.objectMode = true
- if (options.highWaterMark == null) options.highWaterMark = 64 * 1024
- const mergedStream = PassThrough(options)
-
- function addStream () {
- for (let i = 0, len = arguments.length; i < len; i++) {
- streamsQueue.push(pauseStreams(arguments[i], options))
- }
- mergeStream()
- return this
- }
-
- function mergeStream () {
- if (merging) return
- merging = true
-
- let streams = streamsQueue.shift()
- if (!streams) {
- process.nextTick(endStream)
- return
- }
- if (!Array.isArray(streams)) streams = [streams]
-
- let pipesCount = streams.length + 1
-
- function next () {
- if (--pipesCount > 0) return
- merging = false
- mergeStream()
- }
-
- function pipe (stream) {
- function onend () {
- stream.removeListener('merge2UnpipeEnd', onend)
- stream.removeListener('end', onend)
- next()
- }
- // skip ended stream
- if (stream._readableState.endEmitted) return next()
-
- stream.on('merge2UnpipeEnd', onend)
- stream.on('end', onend)
- stream.pipe(mergedStream, { end: false })
- // compatible for old stream
- stream.resume()
- }
-
- for (let i = 0; i < streams.length; i++) pipe(streams[i])
-
- next()
- }
-
- function endStream () {
- merging = false
- // emit 'queueDrain' when all streams merged.
- mergedStream.emit('queueDrain')
- return doEnd && mergedStream.end()
- }
-
- mergedStream.setMaxListeners(0)
- mergedStream.add = addStream
- mergedStream.on('unpipe', function (stream) {
- stream.emit('merge2UnpipeEnd')
- })
-
- if (args.length) addStream.apply(null, args)
- return mergedStream
-}
-
-// check and pause streams for pipe.
-function pauseStreams (streams, options) {
- if (!Array.isArray(streams)) {
- // Backwards-compat with old-style streams
- if (!streams._readableState && streams.pipe) streams = streams.pipe(PassThrough(options))
- if (!streams._readableState || !streams.pause || !streams.pipe) {
- throw new Error('Only readable stream can be merged.')
- }
- streams.pause()
- } else {
- for (let i = 0, len = streams.length; i < len; i++) streams[i] = pauseStreams(streams[i], options)
- }
- return streams
-}
diff --git a/assets/node_modules/merge2/package.json b/assets/node_modules/merge2/package.json
deleted file mode 100644
index 953e457..0000000
--- a/assets/node_modules/merge2/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "merge2",
- "description": "Merge multiple streams into one stream in sequence or parallel.",
- "authors": [
- "Yan Qing <admin@zensh.com>"
- ],
- "license": "MIT",
- "version": "1.3.0",
- "main": "./index.js",
- "repository": {
- "type": "git",
- "url": "git@github.com:teambition/merge2.git"
- },
- "homepage": "https://github.com/teambition/merge2",
- "keywords": [
- "merge2",
- "multiple",
- "sequence",
- "parallel",
- "merge",
- "stream",
- "merge stream",
- "sync"
- ],
- "engines": {
- "node": ">= 6"
- },
- "dependencies": {},
- "devDependencies": {
- "standard": "^14.2.0",
- "through2": "^3.0.1",
- "thunks": "^4.9.5",
- "tman": "^1.9.0",
- "to-through": "^2.0.0"
- },
- "scripts": {
- "test": "standard && tman"
- },
- "files": [
- "README.md",
- "index.js"
- ]
-}
diff --git a/assets/node_modules/micromatch/CHANGELOG.md b/assets/node_modules/micromatch/CHANGELOG.md
deleted file mode 100644
index 25fa58c..0000000
--- a/assets/node_modules/micromatch/CHANGELOG.md
+++ /dev/null
@@ -1,108 +0,0 @@
-# Release history
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
-and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
-
-<details>
- <summary><strong>Guiding Principles</strong></summary>
-
-- Changelogs are for humans, not machines.
-- There should be an entry for every single version.
-- The same types of changes should be grouped.
-- Versions and sections should be linkable.
-- The latest version comes first.
-- The release date of each versions is displayed.
-- Mention whether you follow Semantic Versioning.
-
-</details>
-
-<details>
- <summary><strong>Types of changes</strong></summary>
-
-Changelog entries are classified using the following labels _(from [keep-a-changelog](http://keepachangelog.com/)_):
-
-- `Added` for new features.
-- `Changed` for changes in existing functionality.
-- `Deprecated` for soon-to-be removed features.
-- `Removed` for now removed features.
-- `Fixed` for any bug fixes.
-- `Security` in case of vulnerabilities.
-
-</details>
-
-## [4.0.0] - 2019-03-20
-
-### Added
-
-- Adds support for `options.onMatch`. See the readme for details
-- Adds support for `options.onIgnore`. See the readme for details
-- Adds support for `options.onResult`. See the readme for details
-
-
-### Breaking changes
-
-- Removed support for passing an array of brace patterns to `micromatch.braces()`.
-- To strictly enforce closing brackets (for `{`, `[`, and `(`), you must now use `strictBrackets=true` instead of `strictErrors`.
-- `cache` - caching and all related options and methods have been removed
-- `options.unixify` was renamed to `options.windows`
-- `options.nodupes` Was removed. Duplicates are always removed by default. You can override this with custom behavior by using the `onMatch`, `onResult` and `onIgnore` functions.
-- `options.snapdragon` was removed, as snapdragon is no longer used.
-- `options.sourcemap` was removed, as snapdragon is no longer used, which provided sourcemap support.
-
-## [3.0.0] - 2017-04-11
-
-Complete overhaul, with 36,000+ new unit tests validated against actual output generated by Bash and minimatch. More specifically, 35,000+ of the tests:
-
- - micromatch results are directly compared to bash results
- - in rare cases, when micromatch and bash disagree, micromatch's results are compared to minimatch's results
- - micromatch is much more accurate than minimatch, so there were cases where I had to make assumptions. I'll try to document these.
-
-This refactor introduces a parser and compiler that are supersets of more granular parsers and compilers from other sub-modules. Each of these sub-modules has a singular responsibility and focuses on a certain type of matching that aligns with a specific part of the Bash "expansion" API.
-
-These sub-modules work like plugins to seamlessly create the micromatch parser/compiler, so that strings are parsed in one pass, an [AST is created](https://gist.github.com/jonschlinkert/099c8914f56529f75bc757cc9e5e8e2a), then a new string is generated by the compiler.
-
-Here are those sub-modules with links to related prs on those modules if you want to see how they contribute to this code:
-
-[nanomatch](https://github.com/jonschlinkert/nanomatch) (new library) - glob expansion (`*`, `**`, `?` and `[...]`))
-[braces](https://github.com/jonschlinkert/braces/pull/10) - brace expansion (`{1..10}`, `{a,b,c}`, etc)
-[extglob](https://github.com/jonschlinkert/extglob/pull/5) - extended globs (`!(a|b)`, `@(!(foo|bar))`, etc)
-[expand-brackets](https://github.com/jonschlinkert/expand-brackets/pull/5) - POSIX character classes `[[:alpha:][:digit:]]`
-
-**Added**
-
- - source map support (optionally created when using parse or compile - I have no idea what the use case is yet, but they come for free) (note that source maps are not generated for brace expansion at present, since the braces compiler uses a different strategy. I'll update if/when this changes).
- - parser is exposed, so that implementors can customize or override specific micromatch parsers if necessary
- - compiler is exposed, so that implementors can customize or override specific micromatch compilers if necessary
-
-**Fixed**
-
- - more accurate matching (passes 100% of Bash 4.3 of the brace expansion and extglob unit tests, as well as all Bash glob tests that are relevant to node.js usage, all minimatch tests, all brace-expansion tests, and also passes a couple of tests that bash fails)
- - even safer - micromatch has always generated optimized patterns so it's not subject to DoS exploits like minimatch (completely different than the regex DoS issue, minimatch and multimatch are still openly exposed to being used for DoS attacks), but more safeguards were built into this refactor
-
-**Changed**
-
- - the public API of this library did not change in this version and should be safe to upgrade without changing implentor code. However, we have released this as a major version for the following reasons:
- - out of an abundance of caution due to the large amount of code changed in this release
- - we have improved parser accuracy to such a degree that some implementors using invalid globs have noted change in behavior. If this is the case for you, please check that you are using a valid glob expression before logging a bug with this library
-
-## [1.0.1] - 2016-12-12
-
-**Added**
-
-- Support for windows path edge cases where backslashes are used in brackets or other unusual combinations.
-
-## [1.0.0] - 2016-12-12
-
-Stable release.
-
-## [0.1.0] - 2016-10-08
-
-First release.
-
-
-[Unreleased]: https://github.com/jonschlinkert/micromatch/compare/0.1.0...HEAD
-[0.2.0]: https://github.com/jonschlinkert/micromatch/compare/0.1.0...0.2.0
-
-[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog
diff --git a/assets/node_modules/micromatch/LICENSE b/assets/node_modules/micromatch/LICENSE
deleted file mode 100755
index 9af4a67..0000000
--- a/assets/node_modules/micromatch/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-present, Jon Schlinkert.
-
-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/assets/node_modules/micromatch/README.md b/assets/node_modules/micromatch/README.md
deleted file mode 100644
index e38f7ca..0000000
--- a/assets/node_modules/micromatch/README.md
+++ /dev/null
@@ -1,1000 +0,0 @@
-# micromatch [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [![NPM version](https://img.shields.io/npm/v/micromatch.svg?style=flat)](https://www.npmjs.com/package/micromatch) [![NPM monthly downloads](https://img.shields.io/npm/dm/micromatch.svg?style=flat)](https://npmjs.org/package/micromatch) [![NPM total downloads](https://img.shields.io/npm/dt/micromatch.svg?style=flat)](https://npmjs.org/package/micromatch) [![Linux Build Status](https://img.shields.io/travis/micromatch/micromatch.svg?style=flat&label=Travis)](https://travis-ci.org/micromatch/micromatch)
-
-> Glob matching for javascript/node.js. A replacement and faster alternative to minimatch and multimatch.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Table of Contents
-
-<details>
-<summary><strong>Details</strong></summary>
-
-- [Install](#install)
-- [Quickstart](#quickstart)
-- [Why use micromatch?](#why-use-micromatch)
- * [Matching features](#matching-features)
-- [Switching to micromatch](#switching-to-micromatch)
- * [From minimatch](#from-minimatch)
- * [From multimatch](#from-multimatch)
-- [API](#api)
-- [Options](#options)
-- [Options Examples](#options-examples)
- * [options.basename](#optionsbasename)
- * [options.bash](#optionsbash)
- * [options.expandRange](#optionsexpandrange)
- * [options.format](#optionsformat)
- * [options.ignore](#optionsignore)
- * [options.matchBase](#optionsmatchbase)
- * [options.noextglob](#optionsnoextglob)
- * [options.nonegate](#optionsnonegate)
- * [options.noglobstar](#optionsnoglobstar)
- * [options.nonull](#optionsnonull)
- * [options.nullglob](#optionsnullglob)
- * [options.onIgnore](#optionsonignore)
- * [options.onMatch](#optionsonmatch)
- * [options.onResult](#optionsonresult)
- * [options.posixSlashes](#optionsposixslashes)
- * [options.unescape](#optionsunescape)
-- [Extended globbing](#extended-globbing)
- * [Extglobs](#extglobs)
- * [Braces](#braces)
- * [Regex character classes](#regex-character-classes)
- * [Regex groups](#regex-groups)
- * [POSIX bracket expressions](#posix-bracket-expressions)
-- [Notes](#notes)
- * [Bash 4.3 parity](#bash-43-parity)
- * [Backslashes](#backslashes)
-- [Benchmarks](#benchmarks)
- * [Running benchmarks](#running-benchmarks)
- * [Latest results](#latest-results)
-- [Contributing](#contributing)
-- [About](#about)
-
-</details>
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save micromatch
-```
-
-## Quickstart
-
-```js
-const micromatch = require('micromatch');
-// micromatch(list, patterns[, options]);
-```
-
-The [main export](#micromatch) takes a list of strings and one or more glob patterns:
-
-```js
-console.log(micromatch(['foo', 'bar', 'baz', 'qux'], ['f*', 'b*'])) //=> ['foo', 'bar', 'baz']
-console.log(micromatch(['foo', 'bar', 'baz', 'qux'], ['*', '!b*'])) //=> ['foo', 'qux']
-```
-
-Use [.isMatch()](#ismatch) to for boolean matching:
-
-```js
-console.log(micromatch.isMatch('foo', 'f*')) //=> true
-console.log(micromatch.isMatch('foo', ['b*', 'f*'])) //=> true
-```
-
-[Switching](#switching-to-micromatch) from minimatch and multimatch is easy!
-
-<br>
-
-## Why use micromatch?
-
-> micromatch is a [replacement](#switching-to-micromatch) for minimatch and multimatch
-
-* Supports all of the same matching features as [minimatch](https://github.com/isaacs/minimatch) and [multimatch](https://github.com/sindresorhus/multimatch)
-* More complete support for the Bash 4.3 specification than minimatch and multimatch. Micromatch passes _all of the spec tests_ from bash, including some that bash still fails.
-* **Fast & Performant** - Loads in about 5ms and performs [fast matches](#benchmarks).
-* **Glob matching** - Using wildcards (`*` and `?`), globstars (`**`) for nested directories
-* **[Advanced globbing](#advanced-globbing)** - Supports [extglobs](#extglobs), [braces](#braces), and [POSIX brackets](#posix-bracket-expressions), and support for escaping special characters with `\` or quotes.
-* **Accurate** - Covers more scenarios [than minimatch](https://github.com/yarnpkg/yarn/pull/3339)
-* **Well tested** - More than 5,000 [test assertions](./test)
-* **Windows support** - More reliable windows support than minimatch and multimatch.
-* **[Safe](https://github.com/micromatch/braces#braces-is-safe)** - Micromatch is not subject to DoS with brace patterns like minimatch and multimatch.
-
-### Matching features
-
-* Support for multiple glob patterns (no need for wrappers like multimatch)
-* Wildcards (`**`, `*.js`)
-* Negation (`'!a/*.js'`, `'*!(b).js']`)
-* [extglobs](#extglobs) (`+(x|y)`, `!(a|b)`)
-* [POSIX character classes](#posix-bracket-expressions) (`[[:alpha:][:digit:]]`)
-* [brace expansion](https://github.com/micromatch/braces) (`foo/{1..5}.md`, `bar/{a,b,c}.js`)
-* regex character classes (`foo-[1-5].js`)
-* regex logical "or" (`foo/(abc|xyz).js`)
-
-You can mix and match these features to create whatever patterns you need!
-
-## Switching to micromatch
-
-_(There is one notable difference between micromatch and minimatch in regards to how backslashes are handled. See [the notes about backslashes](#backslashes) for more information.)_
-
-### From minimatch
-
-Use [micromatch.isMatch()](#ismatch) instead of `minimatch()`:
-
-```js
-console.log(micromatch.isMatch('foo', 'b*')); //=> false
-```
-
-Use [micromatch.match()](#match) instead of `minimatch.match()`:
-
-```js
-console.log(micromatch.match(['foo', 'bar'], 'b*')); //=> 'bar'
-```
-
-### From multimatch
-
-Same signature:
-
-```js
-console.log(micromatch(['foo', 'bar', 'baz'], ['f*', '*z'])); //=> ['foo', 'baz']
-```
-
-## API
-
-**Params**
-
-* **{String|Array<string>}**: list List of strings to match.
-* **{String|Array<string>}**: patterns One or more glob patterns to use for matching.
-* **{Object}**: options See available [options](#options)
-* `returns` **{Array}**: Returns an array of matches
-
-**Example**
-
-```js
-const mm = require('micromatch');
-// mm(list, patterns[, options]);
-
-console.log(mm(['a.js', 'a.txt'], ['*.js']));
-//=> [ 'a.js' ]
-```
-
-### [.matcher](index.js#L98)
-
-Returns a matcher function from the given glob `pattern` and `options`. The returned function takes a string to match as its only argument and returns true if the string is a match.
-
-**Params**
-
-* `pattern` **{String}**: Glob pattern
-* `options` **{Object}**
-* `returns` **{Function}**: Returns a matcher function.
-
-**Example**
-
-```js
-const mm = require('micromatch');
-// mm.matcher(pattern[, options]);
-
-const isMatch = mm.matcher('*.!(*a)');
-console.log(isMatch('a.a')); //=> false
-console.log(isMatch('a.b')); //=> true
-```
-
-### [.isMatch](index.js#L117)
-
-Returns true if **any** of the given glob `patterns` match the specified `string`.
-
-**Params**
-
-* **{String}**: str The string to test.
-* **{String|Array}**: patterns One or more glob patterns to use for matching.
-* **{Object}**: See available [options](#options).
-* `returns` **{Boolean}**: Returns true if any patterns match `str`
-
-**Example**
-
-```js
-const mm = require('micromatch');
-// mm.isMatch(string, patterns[, options]);
-
-console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true
-console.log(mm.isMatch('a.a', 'b.*')); //=> false
-```
-
-### [.not](index.js#L136)
-
-Returns a list of strings that _**do not match any**_ of the given `patterns`.
-
-**Params**
-
-* `list` **{Array}**: Array of strings to match.
-* `patterns` **{String|Array}**: One or more glob pattern to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Array}**: Returns an array of strings that **do not match** the given patterns.
-
-**Example**
-
-```js
-const mm = require('micromatch');
-// mm.not(list, patterns[, options]);
-
-console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));
-//=> ['b.b', 'c.c']
-```
-
-### [.contains](index.js#L176)
-
-Returns true if the given `string` contains the given pattern. Similar to [.isMatch](#isMatch) but the pattern can match any part of the string.
-
-**Params**
-
-* `str` **{String}**: The string to match.
-* `patterns` **{String|Array}**: Glob pattern to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if the patter matches any part of `str`.
-
-**Example**
-
-```js
-var mm = require('micromatch');
-// mm.contains(string, pattern[, options]);
-
-console.log(mm.contains('aa/bb/cc', '*b'));
-//=> true
-console.log(mm.contains('aa/bb/cc', '*d'));
-//=> false
-```
-
-### [.matchKeys](index.js#L218)
-
-Filter the keys of the given object with the given `glob` pattern and `options`. Does not attempt to match nested keys. If you need this feature, use [glob-object](https://github.com/jonschlinkert/glob-object) instead.
-
-**Params**
-
-* `object` **{Object}**: The object with keys to filter.
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Object}**: Returns an object with only keys that match the given patterns.
-
-**Example**
-
-```js
-const mm = require('micromatch');
-// mm.matchKeys(object, patterns[, options]);
-
-const obj = { aa: 'a', ab: 'b', ac: 'c' };
-console.log(mm.matchKeys(obj, '*b'));
-//=> { ab: 'b' }
-```
-
-### [.some](index.js#L247)
-
-Returns true if some of the strings in the given `list` match any of the given glob `patterns`.
-
-**Params**
-
-* `list` **{String|Array}**: The string or array of strings to test. Returns as soon as the first match is found.
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if any patterns match `str`
-
-**Example**
-
-```js
-const mm = require('micromatch');
-// mm.some(list, patterns[, options]);
-
-console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));
-// true
-console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));
-// false
-```
-
-### [.every](index.js#L283)
-
-Returns true if every string in the given `list` matches any of the given glob `patterns`.
-
-**Params**
-
-* `list` **{String|Array}**: The string or array of strings to test.
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if any patterns match `str`
-
-**Example**
-
-```js
-const mm = require('micromatch');
-// mm.every(list, patterns[, options]);
-
-console.log(mm.every('foo.js', ['foo.js']));
-// true
-console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));
-// true
-console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));
-// false
-console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));
-// false
-```
-
-### [.all](index.js#L322)
-
-Returns true if **all** of the given `patterns` match the specified string.
-
-**Params**
-
-* `str` **{String|Array}**: The string to test.
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if any patterns match `str`
-
-**Example**
-
-```js
-const mm = require('micromatch');
-// mm.all(string, patterns[, options]);
-
-console.log(mm.all('foo.js', ['foo.js']));
-// true
-
-console.log(mm.all('foo.js', ['*.js', '!foo.js']));
-// false
-
-console.log(mm.all('foo.js', ['*.js', 'foo.js']));
-// true
-
-console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));
-// true
-```
-
-### [.capture](index.js#L349)
-
-Returns an array of matches captured by `pattern` in `string, or`null` if the pattern did not match.
-
-**Params**
-
-* `glob` **{String}**: Glob pattern to use for matching.
-* `input` **{String}**: String to match
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns an array of captures if the input matches the glob pattern, otherwise `null`.
-
-**Example**
-
-```js
-const mm = require('micromatch');
-// mm.capture(pattern, string[, options]);
-
-console.log(mm.capture('test/*.js', 'test/foo.js'));
-//=> ['foo']
-console.log(mm.capture('test/*.js', 'foo/bar.css'));
-//=> null
-```
-
-### [.makeRe](index.js#L375)
-
-Create a regular expression from the given glob `pattern`.
-
-**Params**
-
-* `pattern` **{String}**: A glob pattern to convert to regex.
-* `options` **{Object}**
-* `returns` **{RegExp}**: Returns a regex created from the given pattern.
-
-**Example**
-
-```js
-const mm = require('micromatch');
-// mm.makeRe(pattern[, options]);
-
-console.log(mm.makeRe('*.js'));
-//=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/
-```
-
-### [.scan](index.js#L391)
-
-Scan a glob pattern to separate the pattern into segments. Used by the [split](#split) method.
-
-**Params**
-
-* `pattern` **{String}**
-* `options` **{Object}**
-* `returns` **{Object}**: Returns an object with
-
-**Example**
-
-```js
-const mm = require('micromatch');
-const state = mm.scan(pattern[, options]);
-```
-
-### [.parse](index.js#L407)
-
-Parse a glob pattern to create the source string for a regular expression.
-
-**Params**
-
-* `glob` **{String}**
-* `options` **{Object}**
-* `returns` **{Object}**: Returns an object with useful properties and output to be used as regex source string.
-
-**Example**
-
-```js
-const mm = require('micromatch');
-const state = mm(pattern[, options]);
-```
-
-### [.braces](index.js#L434)
-
-Process the given brace `pattern`.
-
-**Params**
-
-* `pattern` **{String}**: String with brace pattern to process.
-* `options` **{Object}**: Any [options](#options) to change how expansion is performed. See the [braces](https://github.com/micromatch/braces) library for all available options.
-* `returns` **{Array}**
-
-**Example**
-
-```js
-const { braces } = require('micromatch');
-console.log(braces('foo/{a,b,c}/bar'));
-//=> [ 'foo/(a|b|c)/bar' ]
-
-console.log(braces('foo/{a,b,c}/bar', { expand: true }));
-//=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]
-```
-
-## Options
-
-| **Option** | **Type** | **Default value** | **Description** |
-| --- | --- | --- | --- |
-| `basename` | `boolean` | `false` | If set, then patterns without slashes will be matched against the basename of the path if it contains slashes. For example, `a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. |
-| `bash` | `boolean` | `false` | Follow bash matching rules more strictly - disallows backslashes as escape characters, and treats single stars as globstars (`**`). |
-| `capture` | `boolean` | `undefined` | Return regex matches in supporting methods. |
-| `contains` | `boolean` | `undefined` | Allows glob to match any part of the given string(s). |
-| `cwd` | `string` | `process.cwd()` | Current working directory. Used by `picomatch.split()` |
-| `debug` | `boolean` | `undefined` | Debug regular expressions when an error is thrown. |
-| `dot` | `boolean` | `false` | Match dotfiles. Otherwise dotfiles are ignored unless a `.` is explicitly defined in the pattern. |
-| `expandRange` | `function` | `undefined` | Custom function for expanding ranges in brace patterns, such as `{a..z}`. The function receives the range values as two arguments, and it must return a string to be used in the generated regex. It's recommended that returned strings be wrapped in parentheses. This option is overridden by the `expandBrace` option. |
-| `failglob` | `boolean` | `false` | Similar to the `failglob` behavior in Bash, throws an error when no matches are found. Based on the bash option of the same name. |
-| `fastpaths` | `boolean` | `true` | To speed up processing, full parsing is skipped for a handful common glob patterns. Disable this behavior by setting this option to `false`. |
-| `flags` | `boolean` | `undefined` | Regex flags to use in the generated regex. If defined, the `nocase` option will be overridden. |
-| [format](#optionsformat) | `function` | `undefined` | Custom function for formatting the returned string. This is useful for removing leading slashes, converting Windows paths to Posix paths, etc. |
-| `ignore` | `array\|string` | `undefined` | One or more glob patterns for excluding strings that should not be matched from the result. |
-| `keepQuotes` | `boolean` | `false` | Retain quotes in the generated regex, since quotes may also be used as an alternative to backslashes. |
-| `literalBrackets` | `boolean` | `undefined` | When `true`, brackets in the glob pattern will be escaped so that only literal brackets will be matched. |
-| `lookbehinds` | `boolean` | `true` | Support regex positive and negative lookbehinds. Note that you must be using Node 8.1.10 or higher to enable regex lookbehinds. |
-| `matchBase` | `boolean` | `false` | Alias for `basename` |
-| `maxLength` | `boolean` | `65536` | Limit the max length of the input string. An error is thrown if the input string is longer than this value. |
-| `nobrace` | `boolean` | `false` | Disable brace matching, so that `{a,b}` and `{1..3}` would be treated as literal characters. |
-| `nobracket` | `boolean` | `undefined` | Disable matching with regex brackets. |
-| `nocase` | `boolean` | `false` | Perform case-insensitive matching. Equivalent to the regex `i` flag. Note that this option is ignored when the `flags` option is defined. |
-| `nodupes` | `boolean` | `true` | Deprecated, use `nounique` instead. This option will be removed in a future major release. By default duplicates are removed. Disable uniquification by setting this option to false. |
-| `noext` | `boolean` | `false` | Alias for `noextglob` |
-| `noextglob` | `boolean` | `false` | Disable support for matching with [extglobs](#extglobs) (like `+(a\|b)`) |
-| `noglobstar` | `boolean` | `false` | Disable support for matching nested directories with globstars (`**`) |
-| `nonegate` | `boolean` | `false` | Disable support for negating with leading `!` |
-| `noquantifiers` | `boolean` | `false` | Disable support for regex quantifiers (like `a{1,2}`) and treat them as brace patterns to be expanded. |
-| [onIgnore](#optionsonIgnore) | `function` | `undefined` | Function to be called on ignored items. |
-| [onMatch](#optionsonMatch) | `function` | `undefined` | Function to be called on matched items. |
-| [onResult](#optionsonResult) | `function` | `undefined` | Function to be called on all items, regardless of whether or not they are matched or ignored. |
-| `posix` | `boolean` | `false` | Support [POSIX character classes](#posix-bracket-expressions) ("posix brackets"). |
-| `posixSlashes` | `boolean` | `undefined` | Convert all slashes in file paths to forward slashes. This does not convert slashes in the glob pattern itself |
-| `prepend` | `boolean` | `undefined` | String to prepend to the generated regex used for matching. |
-| `regex` | `boolean` | `false` | Use regular expression rules for `+` (instead of matching literal `+`), and for stars that follow closing parentheses or brackets (as in `)*` and `]*`). |
-| `strictBrackets` | `boolean` | `undefined` | Throw an error if brackets, braces, or parens are imbalanced. |
-| `strictSlashes` | `boolean` | `undefined` | When true, picomatch won't match trailing slashes with single stars. |
-| `unescape` | `boolean` | `undefined` | Remove preceding backslashes from escaped glob characters before creating the regular expression to perform matches. |
-| `unixify` | `boolean` | `undefined` | Alias for `posixSlashes`, for backwards compatitibility. |
-
-## Options Examples
-
-### options.basename
-
-Allow glob patterns without slashes to match a file path based on its basename. Same behavior as [minimatch](https://github.com/isaacs/minimatch) option `matchBase`.
-
-**Type**: `Boolean`
-
-**Default**: `false`
-
-**Example**
-
-```js
-micromatch(['a/b.js', 'a/c.md'], '*.js');
-//=> []
-
-micromatch(['a/b.js', 'a/c.md'], '*.js', { basename: true });
-//=> ['a/b.js']
-```
-
-### options.bash
-
-Enabled by default, this option enforces bash-like behavior with stars immediately following a bracket expression. Bash bracket expressions are similar to regex character classes, but unlike regex, a star following a bracket expression **does not repeat the bracketed characters**. Instead, the star is treated the same as any other star.
-
-**Type**: `Boolean`
-
-**Default**: `true`
-
-**Example**
-
-```js
-const files = ['abc', 'ajz'];
-console.log(micromatch(files, '[a-c]*'));
-//=> ['abc', 'ajz']
-
-console.log(micromatch(files, '[a-c]*', { bash: false }));
-```
-
-### options.expandRange
-
-**Type**: `function`
-
-**Default**: `undefined`
-
-Custom function for expanding ranges in brace patterns. The [fill-range](https://github.com/jonschlinkert/fill-range) library is ideal for this purpose, or you can use custom code to do whatever you need.
-
-**Example**
-
-The following example shows how to create a glob that matches a numeric folder name between `01` and `25`, with leading zeros.
-
-```js
-const fill = require('fill-range');
-const regex = micromatch.makeRe('foo/{01..25}/bar', {
- expandRange(a, b) {
- return `(${fill(a, b, { toRegex: true })})`;
- }
-});
-
-console.log(regex)
-//=> /^(?:foo\/((?:0[1-9]|1[0-9]|2[0-5]))\/bar)$/
-
-console.log(regex.test('foo/00/bar')) // false
-console.log(regex.test('foo/01/bar')) // true
-console.log(regex.test('foo/10/bar')) // true
-console.log(regex.test('foo/22/bar')) // true
-console.log(regex.test('foo/25/bar')) // true
-console.log(regex.test('foo/26/bar')) // false
-```
-
-### options.format
-
-**Type**: `function`
-
-**Default**: `undefined`
-
-Custom function for formatting strings before they're matched.
-
-**Example**
-
-```js
-// strip leading './' from strings
-const format = str => str.replace(/^\.\//, '');
-const isMatch = picomatch('foo/*.js', { format });
-console.log(isMatch('./foo/bar.js')) //=> true
-```
-
-### options.ignore
-
-String or array of glob patterns to match files to ignore.
-
-**Type**: `String|Array`
-
-**Default**: `undefined`
-
-```js
-const isMatch = micromatch.matcher('*', { ignore: 'f*' });
-console.log(isMatch('foo')) //=> false
-console.log(isMatch('bar')) //=> true
-console.log(isMatch('baz')) //=> true
-```
-
-### options.matchBase
-
-Alias for [options.basename](#options-basename).
-
-### options.noextglob
-
-Disable extglob support, so that [extglobs](#extglobs) are regarded as literal characters.
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-**Examples**
-
-```js
-console.log(micromatch(['a/z', 'a/b', 'a/!(z)'], 'a/!(z)'));
-//=> ['a/b', 'a/!(z)']
-
-console.log(micromatch(['a/z', 'a/b', 'a/!(z)'], 'a/!(z)', { noextglob: true }));
-//=> ['a/!(z)'] (matches only as literal characters)
-```
-
-### options.nonegate
-
-Disallow negation (`!`) patterns, and treat leading `!` as a literal character to match.
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-### options.noglobstar
-
-Disable matching with globstars (`**`).
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-```js
-micromatch(['a/b', 'a/b/c', 'a/b/c/d'], 'a/**');
-//=> ['a/b', 'a/b/c', 'a/b/c/d']
-
-micromatch(['a/b', 'a/b/c', 'a/b/c/d'], 'a/**', {noglobstar: true});
-//=> ['a/b']
-```
-
-### options.nonull
-
-Alias for [options.nullglob](#options-nullglob).
-
-### options.nullglob
-
-If `true`, when no matches are found the actual (arrayified) glob pattern is returned instead of an empty array. Same behavior as [minimatch](https://github.com/isaacs/minimatch) option `nonull`.
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-### options.onIgnore
-
-```js
-const onIgnore = ({ glob, regex, input, output }) => {
- console.log({ glob, regex, input, output });
- // { glob: '*', regex: /^(?:(?!\.)(?=.)[^\/]*?\/?)$/, input: 'foo', output: 'foo' }
-};
-
-const isMatch = micromatch.matcher('*', { onIgnore, ignore: 'f*' });
-isMatch('foo');
-isMatch('bar');
-isMatch('baz');
-```
-
-### options.onMatch
-
-```js
-const onMatch = ({ glob, regex, input, output }) => {
- console.log({ input, output });
- // { input: 'some\\path', output: 'some/path' }
- // { input: 'some\\path', output: 'some/path' }
- // { input: 'some\\path', output: 'some/path' }
-};
-
-const isMatch = micromatch.matcher('**', { onMatch, posixSlashes: true });
-isMatch('some\\path');
-isMatch('some\\path');
-isMatch('some\\path');
-```
-
-### options.onResult
-
-```js
-const onResult = ({ glob, regex, input, output }) => {
- console.log({ glob, regex, input, output });
-};
-
-const isMatch = micromatch('*', { onResult, ignore: 'f*' });
-isMatch('foo');
-isMatch('bar');
-isMatch('baz');
-```
-
-### options.posixSlashes
-
-Convert path separators on returned files to posix/unix-style forward slashes. Aliased as `unixify` for backwards compatibility.
-
-**Type**: `Boolean`
-
-**Default**: `true` on windows, `false` everywhere else.
-
-**Example**
-
-```js
-console.log(micromatch.match(['a\\b\\c'], 'a/**'));
-//=> ['a/b/c']
-
-console.log(micromatch.match(['a\\b\\c'], { posixSlashes: false }));
-//=> ['a\\b\\c']
-```
-
-### options.unescape
-
-Remove backslashes from escaped glob characters before creating the regular expression to perform matches.
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-**Example**
-
-In this example we want to match a literal `*`:
-
-```js
-console.log(micromatch.match(['abc', 'a\\*c'], 'a\\*c'));
-//=> ['a\\*c']
-
-console.log(micromatch.match(['abc', 'a\\*c'], 'a\\*c', { unescape: true }));
-//=> ['a*c']
-```
-
-<br>
-<br>
-
-## Extended globbing
-
-Micromatch supports the following extended globbing features.
-
-### Extglobs
-
-Extended globbing, as described by the bash man page:
-
-| **pattern** | **regex equivalent** | **description** |
-| --- | --- | --- |
-| `?(pattern)` | `(pattern)?` | Matches zero or one occurrence of the given patterns |
-| `*(pattern)` | `(pattern)*` | Matches zero or more occurrences of the given patterns |
-| `+(pattern)` | `(pattern)+` | Matches one or more occurrences of the given patterns |
-| `@(pattern)` | `(pattern)` <sup>*</sup> | Matches one of the given patterns |
-| `!(pattern)` | N/A (equivalent regex is much more complicated) | Matches anything except one of the given patterns |
-
-<sup><strong>*</strong></sup> Note that `@` isn't a regex character.
-
-### Braces
-
-Brace patterns can be used to match specific ranges or sets of characters.
-
-**Example**
-
-The pattern `{f,b}*/{1..3}/{b,q}*` would match any of following strings:
-
-```
-foo/1/bar
-foo/2/bar
-foo/3/bar
-baz/1/qux
-baz/2/qux
-baz/3/qux
-```
-
-Visit [braces](https://github.com/micromatch/braces) to see the full range of features and options related to brace expansion, or to create brace matching or expansion related issues.
-
-### Regex character classes
-
-Given the list: `['a.js', 'b.js', 'c.js', 'd.js', 'E.js']`:
-
-* `[ac].js`: matches both `a` and `c`, returning `['a.js', 'c.js']`
-* `[b-d].js`: matches from `b` to `d`, returning `['b.js', 'c.js', 'd.js']`
-* `[b-d].js`: matches from `b` to `d`, returning `['b.js', 'c.js', 'd.js']`
-* `a/[A-Z].js`: matches and uppercase letter, returning `['a/E.md']`
-
-Learn about [regex character classes](http://www.regular-expressions.info/charclass.html).
-
-### Regex groups
-
-Given `['a.js', 'b.js', 'c.js', 'd.js', 'E.js']`:
-
-* `(a|c).js`: would match either `a` or `c`, returning `['a.js', 'c.js']`
-* `(b|d).js`: would match either `b` or `d`, returning `['b.js', 'd.js']`
-* `(b|[A-Z]).js`: would match either `b` or an uppercase letter, returning `['b.js', 'E.js']`
-
-As with regex, parens can be nested, so patterns like `((a|b)|c)/b` will work. Although brace expansion might be friendlier to use, depending on preference.
-
-### POSIX bracket expressions
-
-POSIX brackets are intended to be more user-friendly than regex character classes. This of course is in the eye of the beholder.
-
-**Example**
-
-```js
-console.log(micromatch.isMatch('a1', '[[:alpha:][:digit:]]')) //=> true
-console.log(micromatch.isMatch('a1', '[[:alpha:][:alpha:]]')) //=> false
-```
-
-***
-
-## Notes
-
-### Bash 4.3 parity
-
-Whenever possible matching behavior is based on behavior Bash 4.3, which is mostly consistent with minimatch.
-
-However, it's suprising how many edge cases and rabbit holes there are with glob matching, and since there is no real glob specification, and micromatch is more accurate than both Bash and minimatch, there are cases where best-guesses were made for behavior. In a few cases where Bash had no answers, we used wildmatch (used by git) as a fallback.
-
-### Backslashes
-
-There is an important, notable difference between minimatch and micromatch _in regards to how backslashes are handled_ in glob patterns.
-
-* Micromatch exclusively and explicitly reserves backslashes for escaping characters in a glob pattern, even on windows, which is consistent with bash behavior. _More importantly, unescaping globs can result in unsafe regular expressions_.
-* Minimatch converts all backslashes to forward slashes, which means you can't use backslashes to escape any characters in your glob patterns.
-
-We made this decision for micromatch for a couple of reasons:
-
-* Consistency with bash conventions.
-* Glob patterns are not filepaths. They are a type of [regular language](https://en.wikipedia.org/wiki/Regular_language) that is converted to a JavaScript regular expression. Thus, when forward slashes are defined in a glob pattern, the resulting regular expression will match windows or POSIX path separators just fine.
-
-**A note about joining paths to globs**
-
-Note that when you pass something like `path.join('foo', '*')` to micromatch, you are creating a filepath and expecting it to still work as a glob pattern. This causes problems on windows, since the `path.sep` is `\\`.
-
-In other words, since `\\` is reserved as an escape character in globs, on windows `path.join('foo', '*')` would result in `foo\\*`, which tells micromatch to match `*` as a literal character. This is the same behavior as bash.
-
-To solve this, you might be inspired to do something like `'foo\\*'.replace(/\\/g, '/')`, but this causes another, potentially much more serious, problem.
-
-## Benchmarks
-
-### Running benchmarks
-
-Install dependencies for running benchmarks:
-
-```sh
-$ cd bench && npm install
-```
-
-Run the benchmarks:
-
-```sh
-$ npm run bench
-```
-
-### Latest results
-
-As of April 10, 2019 (longer bars are better):
-
-```sh
-# .makeRe star
- micromatch x 1,724,735 ops/sec ±1.69% (87 runs sampled))
- minimatch x 649,565 ops/sec ±1.93% (91 runs sampled)
-
-# .makeRe star; dot=true
- micromatch x 1,302,127 ops/sec ±1.43% (92 runs sampled)
- minimatch x 556,242 ops/sec ±0.71% (86 runs sampled)
-
-# .makeRe globstar
- micromatch x 1,393,992 ops/sec ±0.71% (89 runs sampled)
- minimatch x 1,112,801 ops/sec ±2.02% (91 runs sampled)
-
-# .makeRe globstars
- micromatch x 1,419,097 ops/sec ±0.34% (94 runs sampled)
- minimatch x 541,207 ops/sec ±1.66% (93 runs sampled)
-
-# .makeRe with leading star
- micromatch x 1,247,825 ops/sec ±0.97% (94 runs sampled)
- minimatch x 489,660 ops/sec ±0.63% (94 runs sampled)
-
-# .makeRe - braces
- micromatch x 206,301 ops/sec ±1.62% (81 runs sampled))
- minimatch x 115,986 ops/sec ±0.59% (94 runs sampled)
-
-# .makeRe braces - range (expanded)
- micromatch x 27,782 ops/sec ±0.79% (88 runs sampled)
- minimatch x 4,683 ops/sec ±1.20% (92 runs sampled)
-
-# .makeRe braces - range (compiled)
- micromatch x 134,056 ops/sec ±2.73% (77 runs sampled))
- minimatch x 977 ops/sec ±0.85% (91 runs sampled)d)
-
-# .makeRe braces - nested ranges (expanded)
- micromatch x 18,353 ops/sec ±0.95% (91 runs sampled)
- minimatch x 4,514 ops/sec ±1.04% (93 runs sampled)
-
-# .makeRe braces - nested ranges (compiled)
- micromatch x 38,916 ops/sec ±1.85% (82 runs sampled)
- minimatch x 980 ops/sec ±0.54% (93 runs sampled)d)
-
-# .makeRe braces - set (compiled)
- micromatch x 141,088 ops/sec ±1.70% (70 runs sampled))
- minimatch x 43,385 ops/sec ±0.87% (93 runs sampled)
-
-# .makeRe braces - nested sets (compiled)
- micromatch x 87,272 ops/sec ±2.85% (71 runs sampled))
- minimatch x 25,327 ops/sec ±1.59% (86 runs sampled)
-```
-
-## Contributing
-
-All contributions are welcome! Please read [the contributing guide](.github/contributing.md) to get started.
-
-**Bug reports**
-
-Please create an issue if you encounter a bug or matching behavior that doesn't seem correct. If you find a matching-related issue, please:
-
-* [research existing issues first](../../issues) (open and closed)
-* visit the [GNU Bash documentation](https://www.gnu.org/software/bash/manual/) to see how Bash deals with the pattern
-* visit the [minimatch](https://github.com/isaacs/minimatch) documentation to cross-check expected behavior in node.js
-* if all else fails, since there is no real specification for globs we will probably need to discuss expected behavior and decide how to resolve it. which means any detail you can provide to help with this discussion would be greatly appreciated.
-
-**Platform issues**
-
-It's important to us that micromatch work consistently on all platforms. If you encounter any platform-specific matching or path related issues, please let us know (pull requests are also greatly appreciated).
-
-## About
-
-<details>
-<summary><strong>Contributing</strong></summary>
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards.
-
-</details>
-
-<details>
-<summary><strong>Running Tests</strong></summary>
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-</details>
-
-<details>
-<summary><strong>Building docs</strong></summary>
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-</details>
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [braces](https://www.npmjs.com/package/braces): Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support… [more](https://github.com/micromatch/braces) | [homepage](https://github.com/micromatch/braces "Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.")
-* [expand-brackets](https://www.npmjs.com/package/expand-brackets): Expand POSIX bracket expressions (character classes) in glob patterns. | [homepage](https://github.com/micromatch/expand-brackets "Expand POSIX bracket expressions (character classes) in glob patterns.")
-* [extglob](https://www.npmjs.com/package/extglob): Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob… [more](https://github.com/micromatch/extglob) | [homepage](https://github.com/micromatch/extglob "Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob patterns.")
-* [fill-range](https://www.npmjs.com/package/fill-range): Fill in a range of numbers or letters, optionally passing an increment or `step` to… [more](https://github.com/jonschlinkert/fill-range) | [homepage](https://github.com/jonschlinkert/fill-range "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`")
-* [nanomatch](https://www.npmjs.com/package/nanomatch): Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash… [more](https://github.com/micromatch/nanomatch) | [homepage](https://github.com/micromatch/nanomatch "Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash 4.3 wildcard support only (no support for exglobs, posix brackets or braces)")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 475 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 12 | [es128](https://github.com/es128) |
-| 8 | [doowb](https://github.com/doowb) |
-| 3 | [paulmillr](https://github.com/paulmillr) |
-| 2 | [TrySound](https://github.com/TrySound) |
-| 2 | [MartinKolarik](https://github.com/MartinKolarik) |
-| 2 | [Tvrqvoise](https://github.com/Tvrqvoise) |
-| 2 | [tunnckoCore](https://github.com/tunnckoCore) |
-| 1 | [amilajack](https://github.com/amilajack) |
-| 1 | [mrmlnc](https://github.com/mrmlnc) |
-| 1 | [devongovett](https://github.com/devongovett) |
-| 1 | [DianeLooney](https://github.com/DianeLooney) |
-| 1 | [UltCombo](https://github.com/UltCombo) |
-| 1 | [tomByrer](https://github.com/tomByrer) |
-| 1 | [fidian](https://github.com/fidian) |
-| 1 | [simlu](https://github.com/simlu) |
-| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-
-### License
-
-Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 10, 2019._ \ No newline at end of file
diff --git a/assets/node_modules/micromatch/index.js b/assets/node_modules/micromatch/index.js
deleted file mode 100644
index 1d5b3d1..0000000
--- a/assets/node_modules/micromatch/index.js
+++ /dev/null
@@ -1,467 +0,0 @@
-'use strict';
-
-const util = require('util');
-const braces = require('braces');
-const picomatch = require('picomatch');
-const utils = require('picomatch/lib/utils');
-const isEmptyString = val => typeof val === 'string' && (val === '' || val === './');
-
-/**
- * Returns an array of strings that match one or more glob patterns.
- *
- * ```js
- * const mm = require('micromatch');
- * // mm(list, patterns[, options]);
- *
- * console.log(mm(['a.js', 'a.txt'], ['*.js']));
- * //=> [ 'a.js' ]
- * ```
- * @param {String|Array<string>} list List of strings to match.
- * @param {String|Array<string>} patterns One or more glob patterns to use for matching.
- * @param {Object} options See available [options](#options)
- * @return {Array} Returns an array of matches
- * @summary false
- * @api public
- */
-
-const micromatch = (list, patterns, options) => {
- patterns = [].concat(patterns);
- list = [].concat(list);
-
- let omit = new Set();
- let keep = new Set();
- let items = new Set();
- let negatives = 0;
-
- let onResult = state => {
- items.add(state.output);
- if (options && options.onResult) {
- options.onResult(state);
- }
- };
-
- for (let i = 0; i < patterns.length; i++) {
- let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);
- let negated = isMatch.state.negated || isMatch.state.negatedExtglob;
- if (negated) negatives++;
-
- for (let item of list) {
- let matched = isMatch(item, true);
-
- let match = negated ? !matched.isMatch : matched.isMatch;
- if (!match) continue;
-
- if (negated) {
- omit.add(matched.output);
- } else {
- omit.delete(matched.output);
- keep.add(matched.output);
- }
- }
- }
-
- let result = negatives === patterns.length ? [...items] : [...keep];
- let matches = result.filter(item => !omit.has(item));
-
- if (options && matches.length === 0) {
- if (options.failglob === true) {
- throw new Error(`No matches found for "${patterns.join(', ')}"`);
- }
-
- if (options.nonull === true || options.nullglob === true) {
- return options.unescape ? patterns.map(p => p.replace(/\\/g, '')) : patterns;
- }
- }
-
- return matches;
-};
-
-/**
- * Backwards compatibility
- */
-
-micromatch.match = micromatch;
-
-/**
- * Returns a matcher function from the given glob `pattern` and `options`.
- * The returned function takes a string to match as its only argument and returns
- * true if the string is a match.
- *
- * ```js
- * const mm = require('micromatch');
- * // mm.matcher(pattern[, options]);
- *
- * const isMatch = mm.matcher('*.!(*a)');
- * console.log(isMatch('a.a')); //=> false
- * console.log(isMatch('a.b')); //=> true
- * ```
- * @param {String} `pattern` Glob pattern
- * @param {Object} `options`
- * @return {Function} Returns a matcher function.
- * @api public
- */
-
-micromatch.matcher = (pattern, options) => picomatch(pattern, options);
-
-/**
- * Returns true if **any** of the given glob `patterns` match the specified `string`.
- *
- * ```js
- * const mm = require('micromatch');
- * // mm.isMatch(string, patterns[, options]);
- *
- * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true
- * console.log(mm.isMatch('a.a', 'b.*')); //=> false
- * ```
- * @param {String} str The string to test.
- * @param {String|Array} patterns One or more glob patterns to use for matching.
- * @param {Object} [options] See available [options](#options).
- * @return {Boolean} Returns true if any patterns match `str`
- * @api public
- */
-
-micromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);
-
-/**
- * Backwards compatibility
- */
-
-micromatch.any = micromatch.isMatch;
-
-/**
- * Returns a list of strings that _**do not match any**_ of the given `patterns`.
- *
- * ```js
- * const mm = require('micromatch');
- * // mm.not(list, patterns[, options]);
- *
- * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));
- * //=> ['b.b', 'c.c']
- * ```
- * @param {Array} `list` Array of strings to match.
- * @param {String|Array} `patterns` One or more glob pattern to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Array} Returns an array of strings that **do not match** the given patterns.
- * @api public
- */
-
-micromatch.not = (list, patterns, options = {}) => {
- patterns = [].concat(patterns).map(String);
- let result = new Set();
- let items = [];
-
- let onResult = state => {
- if (options.onResult) options.onResult(state);
- items.push(state.output);
- };
-
- let matches = micromatch(list, patterns, { ...options, onResult });
-
- for (let item of items) {
- if (!matches.includes(item)) {
- result.add(item);
- }
- }
- return [...result];
-};
-
-/**
- * Returns true if the given `string` contains the given pattern. Similar
- * to [.isMatch](#isMatch) but the pattern can match any part of the string.
- *
- * ```js
- * var mm = require('micromatch');
- * // mm.contains(string, pattern[, options]);
- *
- * console.log(mm.contains('aa/bb/cc', '*b'));
- * //=> true
- * console.log(mm.contains('aa/bb/cc', '*d'));
- * //=> false
- * ```
- * @param {String} `str` The string to match.
- * @param {String|Array} `patterns` Glob pattern to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if the patter matches any part of `str`.
- * @api public
- */
-
-micromatch.contains = (str, pattern, options) => {
- if (typeof str !== 'string') {
- throw new TypeError(`Expected a string: "${util.inspect(str)}"`);
- }
-
- if (Array.isArray(pattern)) {
- return pattern.some(p => micromatch.contains(str, p, options));
- }
-
- if (typeof pattern === 'string') {
- if (isEmptyString(str) || isEmptyString(pattern)) {
- return false;
- }
-
- if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {
- return true;
- }
- }
-
- return micromatch.isMatch(str, pattern, { ...options, contains: true });
-};
-
-/**
- * Filter the keys of the given object with the given `glob` pattern
- * and `options`. Does not attempt to match nested keys. If you need this feature,
- * use [glob-object][] instead.
- *
- * ```js
- * const mm = require('micromatch');
- * // mm.matchKeys(object, patterns[, options]);
- *
- * const obj = { aa: 'a', ab: 'b', ac: 'c' };
- * console.log(mm.matchKeys(obj, '*b'));
- * //=> { ab: 'b' }
- * ```
- * @param {Object} `object` The object with keys to filter.
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Object} Returns an object with only keys that match the given patterns.
- * @api public
- */
-
-micromatch.matchKeys = (obj, patterns, options) => {
- if (!utils.isObject(obj)) {
- throw new TypeError('Expected the first argument to be an object');
- }
- let keys = micromatch(Object.keys(obj), patterns, options);
- let res = {};
- for (let key of keys) res[key] = obj[key];
- return res;
-};
-
-/**
- * Returns true if some of the strings in the given `list` match any of the given glob `patterns`.
- *
- * ```js
- * const mm = require('micromatch');
- * // mm.some(list, patterns[, options]);
- *
- * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));
- * // true
- * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));
- * // false
- * ```
- * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if any patterns match `str`
- * @api public
- */
-
-micromatch.some = (list, patterns, options) => {
- let items = [].concat(list);
-
- for (let pattern of [].concat(patterns)) {
- let isMatch = picomatch(String(pattern), options);
- if (items.some(item => isMatch(item))) {
- return true;
- }
- }
- return false;
-};
-
-/**
- * Returns true if every string in the given `list` matches
- * any of the given glob `patterns`.
- *
- * ```js
- * const mm = require('micromatch');
- * // mm.every(list, patterns[, options]);
- *
- * console.log(mm.every('foo.js', ['foo.js']));
- * // true
- * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));
- * // true
- * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));
- * // false
- * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));
- * // false
- * ```
- * @param {String|Array} `list` The string or array of strings to test.
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if any patterns match `str`
- * @api public
- */
-
-micromatch.every = (list, patterns, options) => {
- let items = [].concat(list);
-
- for (let pattern of [].concat(patterns)) {
- let isMatch = picomatch(String(pattern), options);
- if (!items.every(item => isMatch(item))) {
- return false;
- }
- }
- return true;
-};
-
-/**
- * Returns true if **all** of the given `patterns` match
- * the specified string.
- *
- * ```js
- * const mm = require('micromatch');
- * // mm.all(string, patterns[, options]);
- *
- * console.log(mm.all('foo.js', ['foo.js']));
- * // true
- *
- * console.log(mm.all('foo.js', ['*.js', '!foo.js']));
- * // false
- *
- * console.log(mm.all('foo.js', ['*.js', 'foo.js']));
- * // true
- *
- * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));
- * // true
- * ```
- * @param {String|Array} `str` The string to test.
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if any patterns match `str`
- * @api public
- */
-
-micromatch.all = (str, patterns, options) => {
- if (typeof str !== 'string') {
- throw new TypeError(`Expected a string: "${util.inspect(str)}"`);
- }
-
- return [].concat(patterns).every(p => picomatch(p, options)(str));
-};
-
-/**
- * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.
- *
- * ```js
- * const mm = require('micromatch');
- * // mm.capture(pattern, string[, options]);
- *
- * console.log(mm.capture('test/*.js', 'test/foo.js'));
- * //=> ['foo']
- * console.log(mm.capture('test/*.js', 'foo/bar.css'));
- * //=> null
- * ```
- * @param {String} `glob` Glob pattern to use for matching.
- * @param {String} `input` String to match
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns an array of captures if the input matches the glob pattern, otherwise `null`.
- * @api public
- */
-
-micromatch.capture = (glob, input, options) => {
- let posix = utils.isWindows(options);
- let regex = picomatch.makeRe(String(glob), { ...options, capture: true });
- let match = regex.exec(posix ? utils.toPosixSlashes(input) : input);
-
- if (match) {
- return match.slice(1).map(v => v === void 0 ? '' : v);
- }
-};
-
-/**
- * Create a regular expression from the given glob `pattern`.
- *
- * ```js
- * const mm = require('micromatch');
- * // mm.makeRe(pattern[, options]);
- *
- * console.log(mm.makeRe('*.js'));
- * //=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/
- * ```
- * @param {String} `pattern` A glob pattern to convert to regex.
- * @param {Object} `options`
- * @return {RegExp} Returns a regex created from the given pattern.
- * @api public
- */
-
-micromatch.makeRe = (...args) => picomatch.makeRe(...args);
-
-/**
- * Scan a glob pattern to separate the pattern into segments. Used
- * by the [split](#split) method.
- *
- * ```js
- * const mm = require('micromatch');
- * const state = mm.scan(pattern[, options]);
- * ```
- * @param {String} `pattern`
- * @param {Object} `options`
- * @return {Object} Returns an object with
- * @api public
- */
-
-micromatch.scan = (...args) => picomatch.scan(...args);
-
-/**
- * Parse a glob pattern to create the source string for a regular
- * expression.
- *
- * ```js
- * const mm = require('micromatch');
- * const state = mm(pattern[, options]);
- * ```
- * @param {String} `glob`
- * @param {Object} `options`
- * @return {Object} Returns an object with useful properties and output to be used as regex source string.
- * @api public
- */
-
-micromatch.parse = (patterns, options) => {
- let res = [];
- for (let pattern of [].concat(patterns || [])) {
- for (let str of braces(String(pattern), options)) {
- res.push(picomatch.parse(str, options));
- }
- }
- return res;
-};
-
-/**
- * Process the given brace `pattern`.
- *
- * ```js
- * const { braces } = require('micromatch');
- * console.log(braces('foo/{a,b,c}/bar'));
- * //=> [ 'foo/(a|b|c)/bar' ]
- *
- * console.log(braces('foo/{a,b,c}/bar', { expand: true }));
- * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]
- * ```
- * @param {String} `pattern` String with brace pattern to process.
- * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.
- * @return {Array}
- * @api public
- */
-
-micromatch.braces = (pattern, options) => {
- if (typeof pattern !== 'string') throw new TypeError('Expected a string');
- if ((options && options.nobrace === true) || !/\{.*\}/.test(pattern)) {
- return [pattern];
- }
- return braces(pattern, options);
-};
-
-/**
- * Expand braces
- */
-
-micromatch.braceExpand = (pattern, options) => {
- if (typeof pattern !== 'string') throw new TypeError('Expected a string');
- return micromatch.braces(pattern, { ...options, expand: true });
-};
-
-/**
- * Expose micromatch
- */
-
-module.exports = micromatch;
diff --git a/assets/node_modules/micromatch/package.json b/assets/node_modules/micromatch/package.json
deleted file mode 100644
index b976f04..0000000
--- a/assets/node_modules/micromatch/package.json
+++ /dev/null
@@ -1,118 +0,0 @@
-{
- "name": "micromatch",
- "description": "Glob matching for javascript/node.js. A replacement and faster alternative to minimatch and multimatch.",
- "version": "4.0.2",
- "homepage": "https://github.com/micromatch/micromatch",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "(https://github.com/DianeLooney)",
- "Amila Welihinda (amilajack.com)",
- "Bogdan Chadkin (https://github.com/TrySound)",
- "Brian Woodward (https://twitter.com/doowb)",
- "Devon Govett (http://badassjs.com)",
- "Elan Shanker (https://github.com/es128)",
- "Fabrício Matté (https://ultcombo.js.org)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Martin Kolárik (https://kolarik.sk)",
- "Olsten Larck (https://i.am.charlike.online)",
- "Paul Miller (paulmillr.com)",
- "Tom Byrer (https://github.com/tomByrer)",
- "Tyler Akins (http://rumkin.com)",
- "Peter Bright <drpizza@quiscalusmexicanus.org> (https://github.com/drpizza)"
- ],
- "repository": "micromatch/micromatch",
- "bugs": {
- "url": "https://github.com/micromatch/micromatch/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "braces": "^3.0.1",
- "picomatch": "^2.0.5"
- },
- "devDependencies": {
- "fill-range": "^7.0.1",
- "gulp-format-md": "^2.0.0",
- "minimatch": "^3.0.4",
- "mocha": "^5.2.0",
- "time-require": "github:jonschlinkert/time-require"
- },
- "keywords": [
- "bash",
- "bracket",
- "character-class",
- "expand",
- "expansion",
- "expression",
- "extglob",
- "extglobs",
- "file",
- "files",
- "filter",
- "find",
- "glob",
- "globbing",
- "globs",
- "globstar",
- "lookahead",
- "lookaround",
- "lookbehind",
- "match",
- "matcher",
- "matches",
- "matching",
- "micromatch",
- "minimatch",
- "multimatch",
- "negate",
- "negation",
- "path",
- "pattern",
- "patterns",
- "posix",
- "regex",
- "regexp",
- "regular",
- "shell",
- "star",
- "wildcard"
- ],
- "verb": {
- "toc": "collapsible",
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- },
- "related": {
- "list": [
- "braces",
- "expand-brackets",
- "extglob",
- "fill-range",
- "nanomatch"
- ]
- },
- "reflinks": [
- "extglob",
- "fill-range",
- "glob-object",
- "minimatch",
- "multimatch"
- ]
- }
-}
diff --git a/assets/node_modules/min-indent/index.js b/assets/node_modules/min-indent/index.js
deleted file mode 100644
index 9542e77..0000000
--- a/assets/node_modules/min-indent/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-module.exports = str => {
- const match = str.match(/^[ \t]*(?=\S)/gm);
-
- if (!match) {
- return 0;
- }
-
- // TODO: Use spread operator when targeting Node.js 6
- return Math.min.apply(Math, match.map(x => x.length));
-};
diff --git a/assets/node_modules/min-indent/license b/assets/node_modules/min-indent/license
deleted file mode 100644
index dbe9fdc..0000000
--- a/assets/node_modules/min-indent/license
+++ /dev/null
@@ -1,22 +0,0 @@
-
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com), James Kyle <me@thejameskyle.com> (thejameskyle.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/assets/node_modules/min-indent/package.json b/assets/node_modules/min-indent/package.json
deleted file mode 100644
index 4520834..0000000
--- a/assets/node_modules/min-indent/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "min-indent",
- "version": "1.0.0",
- "description": "Get the shortest leading whitespace from lines in a string",
- "main": "index.js",
- "license": "MIT",
- "repository": "https://github.com/thejameskyle/min-indent",
- "author": {
- "name": "James Kyle",
- "email": "me@thejameskyle.com",
- "url": "thejameskyle.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "indent",
- "indentation",
- "normalize",
- "whitespace",
- "space",
- "tab",
- "string",
- "str",
- "min",
- "minimum"
- ],
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- }
-}
diff --git a/assets/node_modules/min-indent/readme.md b/assets/node_modules/min-indent/readme.md
deleted file mode 100644
index 5343869..0000000
--- a/assets/node_modules/min-indent/readme.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# min-indent [![Build Status](https://travis-ci.org/thejameskyle/min-indent.svg?branch=master)](https://travis-ci.org/thejameskyle/min-indent)
-
-> Get the shortest leading whitespace from lines in a string
-
-The line with the least number of leading whitespace, ignoring empty lines, determines the number.
-
-Useful for removing redundant indentation.
-
-
-## Install
-
-```
-$ npm install --save strip-indent
-```
-
-
-## Usage
-
-```js
-const minIndent = require('min-indent');
-
-const str = '\tunicorn\n\t\tcake';
-/*
- unicorn
- cake
-*/
-
-minIndent(str); // 2
-```
-
-
-## Related
-
-- [strip-indent](https://github.com/sindresorhus/strip-indent) - Strip leading whitespace from each line in a string
-- [strip-indent-cli](https://github.com/sindresorhus/strip-indent-cli) - CLI for this module
-- [indent-string](https://github.com/sindresorhus/indent-string) - Indent each line in a string
-
-
-## License
-
-MIT © [James Kyle](https://thejameskyle.com)
diff --git a/assets/node_modules/minimatch/LICENSE b/assets/node_modules/minimatch/LICENSE
deleted file mode 100644
index 19129e3..0000000
--- a/assets/node_modules/minimatch/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-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/assets/node_modules/minimatch/README.md b/assets/node_modules/minimatch/README.md
deleted file mode 100644
index ad72b81..0000000
--- a/assets/node_modules/minimatch/README.md
+++ /dev/null
@@ -1,209 +0,0 @@
-# minimatch
-
-A minimal matching utility.
-
-[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.svg)](http://travis-ci.org/isaacs/minimatch)
-
-
-This is the matching library used internally by npm.
-
-It works by converting glob expressions into JavaScript `RegExp`
-objects.
-
-## Usage
-
-```javascript
-var minimatch = require("minimatch")
-
-minimatch("bar.foo", "*.foo") // true!
-minimatch("bar.foo", "*.bar") // false!
-minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy!
-```
-
-## Features
-
-Supports these glob features:
-
-* Brace Expansion
-* Extended glob matching
-* "Globstar" `**` matching
-
-See:
-
-* `man sh`
-* `man bash`
-* `man 3 fnmatch`
-* `man 5 gitignore`
-
-## Minimatch Class
-
-Create a minimatch object by instantiating the `minimatch.Minimatch` class.
-
-```javascript
-var Minimatch = require("minimatch").Minimatch
-var mm = new Minimatch(pattern, options)
-```
-
-### Properties
-
-* `pattern` The original pattern the minimatch object represents.
-* `options` The options supplied to the constructor.
-* `set` A 2-dimensional array of regexp or string expressions.
- Each row in the
- array corresponds to a brace-expanded pattern. Each item in the row
- corresponds to a single path-part. For example, the pattern
- `{a,b/c}/d` would expand to a set of patterns like:
-
- [ [ a, d ]
- , [ b, c, d ] ]
-
- If a portion of the pattern doesn't have any "magic" in it
- (that is, it's something like `"foo"` rather than `fo*o?`), then it
- will be left as a string rather than converted to a regular
- expression.
-
-* `regexp` Created by the `makeRe` method. A single regular expression
- expressing the entire pattern. This is useful in cases where you wish
- to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.
-* `negate` True if the pattern is negated.
-* `comment` True if the pattern is a comment.
-* `empty` True if the pattern is `""`.
-
-### Methods
-
-* `makeRe` Generate the `regexp` member if necessary, and return it.
- Will return `false` if the pattern is invalid.
-* `match(fname)` Return true if the filename matches the pattern, or
- false otherwise.
-* `matchOne(fileArray, patternArray, partial)` Take a `/`-split
- filename, and match it against a single row in the `regExpSet`. This
- method is mainly for internal use, but is exposed so that it can be
- used by a glob-walker that needs to avoid excessive filesystem calls.
-
-All other methods are internal, and will be called as necessary.
-
-### minimatch(path, pattern, options)
-
-Main export. Tests a path against the pattern using the options.
-
-```javascript
-var isJS = minimatch(file, "*.js", { matchBase: true })
-```
-
-### minimatch.filter(pattern, options)
-
-Returns a function that tests its
-supplied argument, suitable for use with `Array.filter`. Example:
-
-```javascript
-var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true}))
-```
-
-### minimatch.match(list, pattern, options)
-
-Match against the list of
-files, in the style of fnmatch or glob. If nothing is matched, and
-options.nonull is set, then return a list containing the pattern itself.
-
-```javascript
-var javascripts = minimatch.match(fileList, "*.js", {matchBase: true}))
-```
-
-### minimatch.makeRe(pattern, options)
-
-Make a regular expression object from the pattern.
-
-## Options
-
-All options are `false` by default.
-
-### debug
-
-Dump a ton of stuff to stderr.
-
-### nobrace
-
-Do not expand `{a,b}` and `{1..3}` brace sets.
-
-### noglobstar
-
-Disable `**` matching against multiple folder names.
-
-### dot
-
-Allow patterns to match filenames starting with a period, even if
-the pattern does not explicitly have a period in that spot.
-
-Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`
-is set.
-
-### noext
-
-Disable "extglob" style patterns like `+(a|b)`.
-
-### nocase
-
-Perform a case-insensitive match.
-
-### nonull
-
-When a match is not found by `minimatch.match`, return a list containing
-the pattern itself if this option is set. When not set, an empty list
-is returned if there are no matches.
-
-### matchBase
-
-If set, then patterns without slashes will be matched
-against the basename of the path if it contains slashes. For example,
-`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.
-
-### nocomment
-
-Suppress the behavior of treating `#` at the start of a pattern as a
-comment.
-
-### nonegate
-
-Suppress the behavior of treating a leading `!` character as negation.
-
-### flipNegate
-
-Returns from negate expressions the same as if they were not negated.
-(Ie, true on a hit, false on a miss.)
-
-
-## Comparisons to other fnmatch/glob implementations
-
-While strict compliance with the existing standards is a worthwhile
-goal, some discrepancies exist between minimatch and other
-implementations, and are intentional.
-
-If the pattern starts with a `!` character, then it is negated. Set the
-`nonegate` flag to suppress this behavior, and treat leading `!`
-characters normally. This is perhaps relevant if you wish to start the
-pattern with a negative extglob pattern like `!(a|B)`. Multiple `!`
-characters at the start of a pattern will negate the pattern multiple
-times.
-
-If a pattern starts with `#`, then it is treated as a comment, and
-will not match anything. Use `\#` to match a literal `#` at the
-start of a line, or set the `nocomment` flag to suppress this behavior.
-
-The double-star character `**` is supported by default, unless the
-`noglobstar` flag is set. This is supported in the manner of bsdglob
-and bash 4.1, where `**` only has special significance if it is the only
-thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but
-`a/**b` will not.
-
-If an escaped pattern has no matches, and the `nonull` flag is set,
-then minimatch.match returns the pattern as-provided, rather than
-interpreting the character escapes. For example,
-`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
-`"*a?"`. This is akin to setting the `nullglob` option in bash, except
-that it does not resolve escaped pattern characters.
-
-If brace expansion is not disabled, then it is performed before any
-other interpretation of the glob pattern. Thus, a pattern like
-`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded
-**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are
-checked for validity. Since those two are valid, matching proceeds.
diff --git a/assets/node_modules/minimatch/minimatch.js b/assets/node_modules/minimatch/minimatch.js
deleted file mode 100644
index 5b5f8cf..0000000
--- a/assets/node_modules/minimatch/minimatch.js
+++ /dev/null
@@ -1,923 +0,0 @@
-module.exports = minimatch
-minimatch.Minimatch = Minimatch
-
-var path = { sep: '/' }
-try {
- path = require('path')
-} catch (er) {}
-
-var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
-var expand = require('brace-expansion')
-
-var plTypes = {
- '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},
- '?': { open: '(?:', close: ')?' },
- '+': { open: '(?:', close: ')+' },
- '*': { open: '(?:', close: ')*' },
- '@': { open: '(?:', close: ')' }
-}
-
-// any single thing other than /
-// don't need to escape / when using new RegExp()
-var qmark = '[^/]'
-
-// * => any number of characters
-var star = qmark + '*?'
-
-// ** when dots are allowed. Anything goes, except .. and .
-// not (^ or / followed by one or two dots followed by $ or /),
-// followed by anything, any number of times.
-var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?'
-
-// not a ^ or / followed by a dot,
-// followed by anything, any number of times.
-var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'
-
-// characters that need to be escaped in RegExp.
-var reSpecials = charSet('().*{}+?[]^$\\!')
-
-// "abc" -> { a:true, b:true, c:true }
-function charSet (s) {
- return s.split('').reduce(function (set, c) {
- set[c] = true
- return set
- }, {})
-}
-
-// normalizes slashes.
-var slashSplit = /\/+/
-
-minimatch.filter = filter
-function filter (pattern, options) {
- options = options || {}
- return function (p, i, list) {
- return minimatch(p, pattern, options)
- }
-}
-
-function ext (a, b) {
- a = a || {}
- b = b || {}
- var t = {}
- Object.keys(b).forEach(function (k) {
- t[k] = b[k]
- })
- Object.keys(a).forEach(function (k) {
- t[k] = a[k]
- })
- return t
-}
-
-minimatch.defaults = function (def) {
- if (!def || !Object.keys(def).length) return minimatch
-
- var orig = minimatch
-
- var m = function minimatch (p, pattern, options) {
- return orig.minimatch(p, pattern, ext(def, options))
- }
-
- m.Minimatch = function Minimatch (pattern, options) {
- return new orig.Minimatch(pattern, ext(def, options))
- }
-
- return m
-}
-
-Minimatch.defaults = function (def) {
- if (!def || !Object.keys(def).length) return Minimatch
- return minimatch.defaults(def).Minimatch
-}
-
-function minimatch (p, pattern, options) {
- if (typeof pattern !== 'string') {
- throw new TypeError('glob pattern string required')
- }
-
- if (!options) options = {}
-
- // shortcut: comments match nothing.
- if (!options.nocomment && pattern.charAt(0) === '#') {
- return false
- }
-
- // "" only matches ""
- if (pattern.trim() === '') return p === ''
-
- return new Minimatch(pattern, options).match(p)
-}
-
-function Minimatch (pattern, options) {
- if (!(this instanceof Minimatch)) {
- return new Minimatch(pattern, options)
- }
-
- if (typeof pattern !== 'string') {
- throw new TypeError('glob pattern string required')
- }
-
- if (!options) options = {}
- pattern = pattern.trim()
-
- // windows support: need to use /, not \
- if (path.sep !== '/') {
- pattern = pattern.split(path.sep).join('/')
- }
-
- this.options = options
- this.set = []
- this.pattern = pattern
- this.regexp = null
- this.negate = false
- this.comment = false
- this.empty = false
-
- // make the set of regexps etc.
- this.make()
-}
-
-Minimatch.prototype.debug = function () {}
-
-Minimatch.prototype.make = make
-function make () {
- // don't do it more than once.
- if (this._made) return
-
- var pattern = this.pattern
- var options = this.options
-
- // empty patterns and comments match nothing.
- if (!options.nocomment && pattern.charAt(0) === '#') {
- this.comment = true
- return
- }
- if (!pattern) {
- this.empty = true
- return
- }
-
- // step 1: figure out negation, etc.
- this.parseNegate()
-
- // step 2: expand braces
- var set = this.globSet = this.braceExpand()
-
- if (options.debug) this.debug = console.error
-
- this.debug(this.pattern, set)
-
- // step 3: now we have a set, so turn each one into a series of path-portion
- // matching patterns.
- // These will be regexps, except in the case of "**", which is
- // set to the GLOBSTAR object for globstar behavior,
- // and will not contain any / characters
- set = this.globParts = set.map(function (s) {
- return s.split(slashSplit)
- })
-
- this.debug(this.pattern, set)
-
- // glob --> regexps
- set = set.map(function (s, si, set) {
- return s.map(this.parse, this)
- }, this)
-
- this.debug(this.pattern, set)
-
- // filter out everything that didn't compile properly.
- set = set.filter(function (s) {
- return s.indexOf(false) === -1
- })
-
- this.debug(this.pattern, set)
-
- this.set = set
-}
-
-Minimatch.prototype.parseNegate = parseNegate
-function parseNegate () {
- var pattern = this.pattern
- var negate = false
- var options = this.options
- var negateOffset = 0
-
- if (options.nonegate) return
-
- for (var i = 0, l = pattern.length
- ; i < l && pattern.charAt(i) === '!'
- ; i++) {
- negate = !negate
- negateOffset++
- }
-
- if (negateOffset) this.pattern = pattern.substr(negateOffset)
- this.negate = negate
-}
-
-// Brace expansion:
-// a{b,c}d -> abd acd
-// a{b,}c -> abc ac
-// a{0..3}d -> a0d a1d a2d a3d
-// a{b,c{d,e}f}g -> abg acdfg acefg
-// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
-//
-// Invalid sets are not expanded.
-// a{2..}b -> a{2..}b
-// a{b}c -> a{b}c
-minimatch.braceExpand = function (pattern, options) {
- return braceExpand(pattern, options)
-}
-
-Minimatch.prototype.braceExpand = braceExpand
-
-function braceExpand (pattern, options) {
- if (!options) {
- if (this instanceof Minimatch) {
- options = this.options
- } else {
- options = {}
- }
- }
-
- pattern = typeof pattern === 'undefined'
- ? this.pattern : pattern
-
- if (typeof pattern === 'undefined') {
- throw new TypeError('undefined pattern')
- }
-
- if (options.nobrace ||
- !pattern.match(/\{.*\}/)) {
- // shortcut. no need to expand.
- return [pattern]
- }
-
- return expand(pattern)
-}
-
-// parse a component of the expanded set.
-// At this point, no pattern may contain "/" in it
-// so we're going to return a 2d array, where each entry is the full
-// pattern, split on '/', and then turned into a regular expression.
-// A regexp is made at the end which joins each array with an
-// escaped /, and another full one which joins each regexp with |.
-//
-// Following the lead of Bash 4.1, note that "**" only has special meaning
-// when it is the *only* thing in a path portion. Otherwise, any series
-// of * is equivalent to a single *. Globstar behavior is enabled by
-// default, and can be disabled by setting options.noglobstar.
-Minimatch.prototype.parse = parse
-var SUBPARSE = {}
-function parse (pattern, isSub) {
- if (pattern.length > 1024 * 64) {
- throw new TypeError('pattern is too long')
- }
-
- var options = this.options
-
- // shortcuts
- if (!options.noglobstar && pattern === '**') return GLOBSTAR
- if (pattern === '') return ''
-
- var re = ''
- var hasMagic = !!options.nocase
- var escaping = false
- // ? => one single character
- var patternListStack = []
- var negativeLists = []
- var stateChar
- var inClass = false
- var reClassStart = -1
- var classStart = -1
- // . and .. never match anything that doesn't start with .,
- // even when options.dot is set.
- var patternStart = pattern.charAt(0) === '.' ? '' // anything
- // not (start or / followed by . or .. followed by / or end)
- : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))'
- : '(?!\\.)'
- var self = this
-
- function clearStateChar () {
- if (stateChar) {
- // we had some state-tracking character
- // that wasn't consumed by this pass.
- switch (stateChar) {
- case '*':
- re += star
- hasMagic = true
- break
- case '?':
- re += qmark
- hasMagic = true
- break
- default:
- re += '\\' + stateChar
- break
- }
- self.debug('clearStateChar %j %j', stateChar, re)
- stateChar = false
- }
- }
-
- for (var i = 0, len = pattern.length, c
- ; (i < len) && (c = pattern.charAt(i))
- ; i++) {
- this.debug('%s\t%s %s %j', pattern, i, re, c)
-
- // skip over any that are escaped.
- if (escaping && reSpecials[c]) {
- re += '\\' + c
- escaping = false
- continue
- }
-
- switch (c) {
- case '/':
- // completely not allowed, even escaped.
- // Should already be path-split by now.
- return false
-
- case '\\':
- clearStateChar()
- escaping = true
- continue
-
- // the various stateChar values
- // for the "extglob" stuff.
- case '?':
- case '*':
- case '+':
- case '@':
- case '!':
- this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c)
-
- // all of those are literals inside a class, except that
- // the glob [!a] means [^a] in regexp
- if (inClass) {
- this.debug(' in class')
- if (c === '!' && i === classStart + 1) c = '^'
- re += c
- continue
- }
-
- // if we already have a stateChar, then it means
- // that there was something like ** or +? in there.
- // Handle the stateChar, then proceed with this one.
- self.debug('call clearStateChar %j', stateChar)
- clearStateChar()
- stateChar = c
- // if extglob is disabled, then +(asdf|foo) isn't a thing.
- // just clear the statechar *now*, rather than even diving into
- // the patternList stuff.
- if (options.noext) clearStateChar()
- continue
-
- case '(':
- if (inClass) {
- re += '('
- continue
- }
-
- if (!stateChar) {
- re += '\\('
- continue
- }
-
- patternListStack.push({
- type: stateChar,
- start: i - 1,
- reStart: re.length,
- open: plTypes[stateChar].open,
- close: plTypes[stateChar].close
- })
- // negation is (?:(?!js)[^/]*)
- re += stateChar === '!' ? '(?:(?!(?:' : '(?:'
- this.debug('plType %j %j', stateChar, re)
- stateChar = false
- continue
-
- case ')':
- if (inClass || !patternListStack.length) {
- re += '\\)'
- continue
- }
-
- clearStateChar()
- hasMagic = true
- var pl = patternListStack.pop()
- // negation is (?:(?!js)[^/]*)
- // The others are (?:<pattern>)<type>
- re += pl.close
- if (pl.type === '!') {
- negativeLists.push(pl)
- }
- pl.reEnd = re.length
- continue
-
- case '|':
- if (inClass || !patternListStack.length || escaping) {
- re += '\\|'
- escaping = false
- continue
- }
-
- clearStateChar()
- re += '|'
- continue
-
- // these are mostly the same in regexp and glob
- case '[':
- // swallow any state-tracking char before the [
- clearStateChar()
-
- if (inClass) {
- re += '\\' + c
- continue
- }
-
- inClass = true
- classStart = i
- reClassStart = re.length
- re += c
- continue
-
- case ']':
- // a right bracket shall lose its special
- // meaning and represent itself in
- // a bracket expression if it occurs
- // first in the list. -- POSIX.2 2.8.3.2
- if (i === classStart + 1 || !inClass) {
- re += '\\' + c
- escaping = false
- continue
- }
-
- // handle the case where we left a class open.
- // "[z-a]" is valid, equivalent to "\[z-a\]"
- if (inClass) {
- // split where the last [ was, make sure we don't have
- // an invalid re. if so, re-walk the contents of the
- // would-be class to re-translate any characters that
- // were passed through as-is
- // TODO: It would probably be faster to determine this
- // without a try/catch and a new RegExp, but it's tricky
- // to do safely. For now, this is safe and works.
- var cs = pattern.substring(classStart + 1, i)
- try {
- RegExp('[' + cs + ']')
- } catch (er) {
- // not a valid class!
- var sp = this.parse(cs, SUBPARSE)
- re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]'
- hasMagic = hasMagic || sp[1]
- inClass = false
- continue
- }
- }
-
- // finish up the class.
- hasMagic = true
- inClass = false
- re += c
- continue
-
- default:
- // swallow any state char that wasn't consumed
- clearStateChar()
-
- if (escaping) {
- // no need
- escaping = false
- } else if (reSpecials[c]
- && !(c === '^' && inClass)) {
- re += '\\'
- }
-
- re += c
-
- } // switch
- } // for
-
- // handle the case where we left a class open.
- // "[abc" is valid, equivalent to "\[abc"
- if (inClass) {
- // split where the last [ was, and escape it
- // this is a huge pita. We now have to re-walk
- // the contents of the would-be class to re-translate
- // any characters that were passed through as-is
- cs = pattern.substr(classStart + 1)
- sp = this.parse(cs, SUBPARSE)
- re = re.substr(0, reClassStart) + '\\[' + sp[0]
- hasMagic = hasMagic || sp[1]
- }
-
- // handle the case where we had a +( thing at the *end*
- // of the pattern.
- // each pattern list stack adds 3 chars, and we need to go through
- // and escape any | chars that were passed through as-is for the regexp.
- // Go through and escape them, taking care not to double-escape any
- // | chars that were already escaped.
- for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
- var tail = re.slice(pl.reStart + pl.open.length)
- this.debug('setting tail', re, pl)
- // maybe some even number of \, then maybe 1 \, followed by a |
- tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) {
- if (!$2) {
- // the | isn't already escaped, so escape it.
- $2 = '\\'
- }
-
- // need to escape all those slashes *again*, without escaping the
- // one that we need for escaping the | character. As it works out,
- // escaping an even number of slashes can be done by simply repeating
- // it exactly after itself. That's why this trick works.
- //
- // I am sorry that you have to see this.
- return $1 + $1 + $2 + '|'
- })
-
- this.debug('tail=%j\n %s', tail, tail, pl, re)
- var t = pl.type === '*' ? star
- : pl.type === '?' ? qmark
- : '\\' + pl.type
-
- hasMagic = true
- re = re.slice(0, pl.reStart) + t + '\\(' + tail
- }
-
- // handle trailing things that only matter at the very end.
- clearStateChar()
- if (escaping) {
- // trailing \\
- re += '\\\\'
- }
-
- // only need to apply the nodot start if the re starts with
- // something that could conceivably capture a dot
- var addPatternStart = false
- switch (re.charAt(0)) {
- case '.':
- case '[':
- case '(': addPatternStart = true
- }
-
- // Hack to work around lack of negative lookbehind in JS
- // A pattern like: *.!(x).!(y|z) needs to ensure that a name
- // like 'a.xyz.yz' doesn't match. So, the first negative
- // lookahead, has to look ALL the way ahead, to the end of
- // the pattern.
- for (var n = negativeLists.length - 1; n > -1; n--) {
- var nl = negativeLists[n]
-
- var nlBefore = re.slice(0, nl.reStart)
- var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)
- var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)
- var nlAfter = re.slice(nl.reEnd)
-
- nlLast += nlAfter
-
- // Handle nested stuff like *(*.js|!(*.json)), where open parens
- // mean that we should *not* include the ) in the bit that is considered
- // "after" the negated section.
- var openParensBefore = nlBefore.split('(').length - 1
- var cleanAfter = nlAfter
- for (i = 0; i < openParensBefore; i++) {
- cleanAfter = cleanAfter.replace(/\)[+*?]?/, '')
- }
- nlAfter = cleanAfter
-
- var dollar = ''
- if (nlAfter === '' && isSub !== SUBPARSE) {
- dollar = '$'
- }
- var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast
- re = newRe
- }
-
- // if the re is not "" at this point, then we need to make sure
- // it doesn't match against an empty path part.
- // Otherwise a/* will match a/, which it should not.
- if (re !== '' && hasMagic) {
- re = '(?=.)' + re
- }
-
- if (addPatternStart) {
- re = patternStart + re
- }
-
- // parsing just a piece of a larger pattern.
- if (isSub === SUBPARSE) {
- return [re, hasMagic]
- }
-
- // skip the regexp for non-magical patterns
- // unescape anything in it, though, so that it'll be
- // an exact match against a file etc.
- if (!hasMagic) {
- return globUnescape(pattern)
- }
-
- var flags = options.nocase ? 'i' : ''
- try {
- var regExp = new RegExp('^' + re + '$', flags)
- } catch (er) {
- // If it was an invalid regular expression, then it can't match
- // anything. This trick looks for a character after the end of
- // the string, which is of course impossible, except in multi-line
- // mode, but it's not a /m regex.
- return new RegExp('$.')
- }
-
- regExp._glob = pattern
- regExp._src = re
-
- return regExp
-}
-
-minimatch.makeRe = function (pattern, options) {
- return new Minimatch(pattern, options || {}).makeRe()
-}
-
-Minimatch.prototype.makeRe = makeRe
-function makeRe () {
- if (this.regexp || this.regexp === false) return this.regexp
-
- // at this point, this.set is a 2d array of partial
- // pattern strings, or "**".
- //
- // It's better to use .match(). This function shouldn't
- // be used, really, but it's pretty convenient sometimes,
- // when you just want to work with a regex.
- var set = this.set
-
- if (!set.length) {
- this.regexp = false
- return this.regexp
- }
- var options = this.options
-
- var twoStar = options.noglobstar ? star
- : options.dot ? twoStarDot
- : twoStarNoDot
- var flags = options.nocase ? 'i' : ''
-
- var re = set.map(function (pattern) {
- return pattern.map(function (p) {
- return (p === GLOBSTAR) ? twoStar
- : (typeof p === 'string') ? regExpEscape(p)
- : p._src
- }).join('\\\/')
- }).join('|')
-
- // must match entire pattern
- // ending in a * or ** will make it less strict.
- re = '^(?:' + re + ')$'
-
- // can match anything, as long as it's not this.
- if (this.negate) re = '^(?!' + re + ').*$'
-
- try {
- this.regexp = new RegExp(re, flags)
- } catch (ex) {
- this.regexp = false
- }
- return this.regexp
-}
-
-minimatch.match = function (list, pattern, options) {
- options = options || {}
- var mm = new Minimatch(pattern, options)
- list = list.filter(function (f) {
- return mm.match(f)
- })
- if (mm.options.nonull && !list.length) {
- list.push(pattern)
- }
- return list
-}
-
-Minimatch.prototype.match = match
-function match (f, partial) {
- this.debug('match', f, this.pattern)
- // short-circuit in the case of busted things.
- // comments, etc.
- if (this.comment) return false
- if (this.empty) return f === ''
-
- if (f === '/' && partial) return true
-
- var options = this.options
-
- // windows: need to use /, not \
- if (path.sep !== '/') {
- f = f.split(path.sep).join('/')
- }
-
- // treat the test path as a set of pathparts.
- f = f.split(slashSplit)
- this.debug(this.pattern, 'split', f)
-
- // just ONE of the pattern sets in this.set needs to match
- // in order for it to be valid. If negating, then just one
- // match means that we have failed.
- // Either way, return on the first hit.
-
- var set = this.set
- this.debug(this.pattern, 'set', set)
-
- // Find the basename of the path by looking for the last non-empty segment
- var filename
- var i
- for (i = f.length - 1; i >= 0; i--) {
- filename = f[i]
- if (filename) break
- }
-
- for (i = 0; i < set.length; i++) {
- var pattern = set[i]
- var file = f
- if (options.matchBase && pattern.length === 1) {
- file = [filename]
- }
- var hit = this.matchOne(file, pattern, partial)
- if (hit) {
- if (options.flipNegate) return true
- return !this.negate
- }
- }
-
- // didn't get any hits. this is success if it's a negative
- // pattern, failure otherwise.
- if (options.flipNegate) return false
- return this.negate
-}
-
-// set partial to true to test if, for example,
-// "/a/b" matches the start of "/*/b/*/d"
-// Partial means, if you run out of file before you run
-// out of pattern, then that's fine, as long as all
-// the parts match.
-Minimatch.prototype.matchOne = function (file, pattern, partial) {
- var options = this.options
-
- this.debug('matchOne',
- { 'this': this, file: file, pattern: pattern })
-
- this.debug('matchOne', file.length, pattern.length)
-
- for (var fi = 0,
- pi = 0,
- fl = file.length,
- pl = pattern.length
- ; (fi < fl) && (pi < pl)
- ; fi++, pi++) {
- this.debug('matchOne loop')
- var p = pattern[pi]
- var f = file[fi]
-
- this.debug(pattern, p, f)
-
- // should be impossible.
- // some invalid regexp stuff in the set.
- if (p === false) return false
-
- if (p === GLOBSTAR) {
- this.debug('GLOBSTAR', [pattern, p, f])
-
- // "**"
- // a/**/b/**/c would match the following:
- // a/b/x/y/z/c
- // a/x/y/z/b/c
- // a/b/x/b/x/c
- // a/b/c
- // To do this, take the rest of the pattern after
- // the **, and see if it would match the file remainder.
- // If so, return success.
- // If not, the ** "swallows" a segment, and try again.
- // This is recursively awful.
- //
- // a/**/b/**/c matching a/b/x/y/z/c
- // - a matches a
- // - doublestar
- // - matchOne(b/x/y/z/c, b/**/c)
- // - b matches b
- // - doublestar
- // - matchOne(x/y/z/c, c) -> no
- // - matchOne(y/z/c, c) -> no
- // - matchOne(z/c, c) -> no
- // - matchOne(c, c) yes, hit
- var fr = fi
- var pr = pi + 1
- if (pr === pl) {
- this.debug('** at the end')
- // a ** at the end will just swallow the rest.
- // We have found a match.
- // however, it will not swallow /.x, unless
- // options.dot is set.
- // . and .. are *never* matched by **, for explosively
- // exponential reasons.
- for (; fi < fl; fi++) {
- if (file[fi] === '.' || file[fi] === '..' ||
- (!options.dot && file[fi].charAt(0) === '.')) return false
- }
- return true
- }
-
- // ok, let's see if we can swallow whatever we can.
- while (fr < fl) {
- var swallowee = file[fr]
-
- this.debug('\nglobstar while', file, fr, pattern, pr, swallowee)
-
- // XXX remove this slice. Just pass the start index.
- if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
- this.debug('globstar found match!', fr, fl, swallowee)
- // found a match.
- return true
- } else {
- // can't swallow "." or ".." ever.
- // can only swallow ".foo" when explicitly asked.
- if (swallowee === '.' || swallowee === '..' ||
- (!options.dot && swallowee.charAt(0) === '.')) {
- this.debug('dot detected!', file, fr, pattern, pr)
- break
- }
-
- // ** swallows a segment, and continue.
- this.debug('globstar swallow a segment, and continue')
- fr++
- }
- }
-
- // no match was found.
- // However, in partial mode, we can't say this is necessarily over.
- // If there's more *pattern* left, then
- if (partial) {
- // ran out of file
- this.debug('\n>>> no match, partial?', file, fr, pattern, pr)
- if (fr === fl) return true
- }
- return false
- }
-
- // something other than **
- // non-magic patterns just have to match exactly
- // patterns with magic have been turned into regexps.
- var hit
- if (typeof p === 'string') {
- if (options.nocase) {
- hit = f.toLowerCase() === p.toLowerCase()
- } else {
- hit = f === p
- }
- this.debug('string match', p, f, hit)
- } else {
- hit = f.match(p)
- this.debug('pattern match', p, f, hit)
- }
-
- if (!hit) return false
- }
-
- // Note: ending in / means that we'll get a final ""
- // at the end of the pattern. This can only match a
- // corresponding "" at the end of the file.
- // If the file ends in /, then it can only match a
- // a pattern that ends in /, unless the pattern just
- // doesn't have any more for it. But, a/b/ should *not*
- // match "a/b/*", even though "" matches against the
- // [^/]*? pattern, except in partial mode, where it might
- // simply not be reached yet.
- // However, a/b/ should still satisfy a/*
-
- // now either we fell off the end of the pattern, or we're done.
- if (fi === fl && pi === pl) {
- // ran out of pattern and filename at the same time.
- // an exact hit!
- return true
- } else if (fi === fl) {
- // ran out of file, but still had pattern left.
- // this is ok if we're doing the match as part of
- // a glob fs traversal.
- return partial
- } else if (pi === pl) {
- // ran out of pattern, still have file left.
- // this is only acceptable if we're on the very last
- // empty segment of a file with a trailing slash.
- // a/* should match a/b/
- var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')
- return emptyFileEnd
- }
-
- // should be unreachable.
- throw new Error('wtf?')
-}
-
-// replace stuff like \* with *
-function globUnescape (s) {
- return s.replace(/\\(.)/g, '$1')
-}
-
-function regExpEscape (s) {
- return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&')
-}
diff --git a/assets/node_modules/minimatch/package.json b/assets/node_modules/minimatch/package.json
deleted file mode 100644
index c4514c8..0000000
--- a/assets/node_modules/minimatch/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)",
- "name": "minimatch",
- "description": "a glob matcher in javascript",
- "version": "3.0.4",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/minimatch.git"
- },
- "main": "minimatch.js",
- "scripts": {
- "test": "tap test/*.js --cov",
- "preversion": "npm test",
- "postversion": "npm publish",
- "postpublish": "git push origin --all; git push origin --tags"
- },
- "engines": {
- "node": "*"
- },
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "devDependencies": {
- "tap": "^10.3.2"
- },
- "license": "ISC",
- "files": [
- "minimatch.js"
- ]
-}
diff --git a/assets/node_modules/minimist-options/index.d.ts b/assets/node_modules/minimist-options/index.d.ts
deleted file mode 100644
index 53daf68..0000000
--- a/assets/node_modules/minimist-options/index.d.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import {Opts as MinimistOptions} from 'minimist';
-
-export type OptionType = 'string' | 'boolean' | 'number' | 'array';
-
-export interface BaseOption<
- TypeOptionType extends OptionType,
- DefaultOptionType
-> {
- /**
- * The data type the option should be parsed to.
- */
- readonly type?: TypeOptionType;
-
- /**
- * An alias/list of aliases for the option.
- */
- readonly alias?: string | ReadonlyArray<string>;
-
- /**
- * The default value for the option.
- */
- readonly default?: DefaultOptionType;
-}
-
-export type StringOption = BaseOption<'string', string>;
-export type BooleanOption = BaseOption<'boolean', boolean>;
-export type NumberOption = BaseOption<'number', number>;
-export type ArrayOption<ArrayContentType = unknown> = BaseOption<
- 'array',
- ReadonlyArray<ArrayContentType>
->;
-type MinimistOption = NonNullable<
- | MinimistOptions['stopEarly']
- | MinimistOptions['unknown']
- | MinimistOptions['--']
->;
-
-export type Options<ArrayOptionContentType = unknown> = {
- [key: string]:
- | OptionType
- | StringOption
- | BooleanOption
- | NumberOption
- | ArrayOption<ArrayOptionContentType>
- | MinimistOption; // Workaround for https://github.com/microsoft/TypeScript/issues/17867
-};
-
-/**
- * Write options for [minimist](https://npmjs.org/package/minimist) in a comfortable way. Support string, boolean, number and array options.
- */
-export default function buildOptions(options?: Options): MinimistOptions;
diff --git a/assets/node_modules/minimist-options/index.js b/assets/node_modules/minimist-options/index.js
deleted file mode 100644
index 0965e36..0000000
--- a/assets/node_modules/minimist-options/index.js
+++ /dev/null
@@ -1,86 +0,0 @@
-'use strict';
-
-const isPlainObject = require('is-plain-obj');
-const arrify = require('arrify');
-
-const push = (obj, prop, value) => {
- if (!obj[prop]) {
- obj[prop] = [];
- }
-
- obj[prop].push(value);
-};
-
-const insert = (obj, prop, key, value) => {
- if (!obj[prop]) {
- obj[prop] = {};
- }
-
- obj[prop][key] = value;
-};
-
-const passthroughOptions = ['stopEarly', 'unknown', '--'];
-const availableTypes = ['string', 'boolean', 'number', 'array'];
-
-const buildOptions = options => {
- options = options || {};
-
- const result = {};
-
- passthroughOptions.forEach(key => {
- if (options[key]) {
- result[key] = options[key];
- }
- });
-
- Object.keys(options).forEach(key => {
- let value = options[key];
-
- if (key === 'arguments') {
- key = '_';
- }
-
- // If short form is used
- // convert it to long form
- // e.g. { 'name': 'string' }
- if (typeof value === 'string') {
- value = {type: value};
- }
-
- if (isPlainObject(value)) {
- const props = value;
- const {type} = props;
-
- if (type) {
- if (!availableTypes.includes(type)) {
- throw new TypeError(`Expected "${key}" to be one of ["string", "boolean", "number", "array"], got ${type}`);
- }
-
- push(result, type, key);
- }
-
- const aliases = arrify(props.alias);
-
- aliases.forEach(alias => {
- insert(result, 'alias', alias, key);
- });
-
- if ({}.hasOwnProperty.call(props, 'default')) {
- if (type === 'array' && !Array.isArray(props.default)) {
- throw new TypeError(`Expected "${key}" default value to be array, got ${typeof props.default}`);
- }
-
- if (type && type !== 'array' && typeof props.default !== type) {
- throw new TypeError(`Expected "${key}" default value to be ${type}, got ${typeof props.default}`);
- }
-
- insert(result, 'default', key, props.default);
- }
- }
- });
-
- return result;
-};
-
-module.exports = buildOptions;
-module.exports.default = buildOptions;
diff --git a/assets/node_modules/minimist-options/license b/assets/node_modules/minimist-options/license
deleted file mode 100644
index 49d527b..0000000
--- a/assets/node_modules/minimist-options/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Vadim Demedes <vdemedes@gmail.com> (vadimdemedes.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/assets/node_modules/minimist-options/package.json b/assets/node_modules/minimist-options/package.json
deleted file mode 100644
index 2cecdf4..0000000
--- a/assets/node_modules/minimist-options/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "minimist-options",
- "version": "4.0.2",
- "description": "Pretty options for minimist",
- "repository": "vadimdemedes/minimist-options",
- "author": "Vadim Demedes <vdemedes@gmail.com>",
- "license": "MIT",
- "keywords": [
- "minimist",
- "argv",
- "args"
- ],
- "scripts": {
- "test": "xo && ava && tsd-check"
- },
- "engines": {
- "node": ">= 6"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "dependencies": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0"
- },
- "devDependencies": {
- "@types/minimist": "^1.2.0",
- "ava": "^1.0.1",
- "tsd-check": "^0.3.0",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/minimist-options/readme.md b/assets/node_modules/minimist-options/readme.md
deleted file mode 100644
index 2b17b0f..0000000
--- a/assets/node_modules/minimist-options/readme.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# minimist-options [![Build Status](https://travis-ci.org/vadimdemedes/minimist-options.svg?branch=master)](https://travis-ci.org/vadimdemedes/minimist-options)
-
-> Write options for [minimist](https://npmjs.org/package/minimist) in a comfortable way.
-> Support string, boolean, number and array options.
-
-## Installation
-
-```
-$ npm install --save minimist-options
-```
-
-## Usage
-
-```js
-const buildOptions = require('minimist-options');
-const minimist = require('minimist');
-
-const options = buildOptions({
- name: {
- type: 'string',
- alias: 'n',
- default: 'john'
- },
-
- force: {
- type: 'boolean',
- alias: ['f', 'o'],
- default: false
- },
-
- score: {
- type: 'number',
- alias: 's',
- default: 0
- },
-
- arr: {
- type: 'array',
- alias: 'a',
- default: []
- },
-
- published: 'boolean',
-
- // Special option for positional arguments (`_` in minimist)
- arguments: 'string'
-});
-
-const args = minimist(process.argv.slice(2), options);
-```
-
-instead of:
-
-```js
-const minimist = require('minimist');
-
-const options = {
- string: ['name', '_'],
- number: ['score'],
- array: ['arr'],
- boolean: ['force', 'published'],
- alias: {
- n: 'name',
- f: 'force',
- s: 'score',
- a: 'arr'
- },
- default: {
- name: 'john',
- f: false,
- score: 0,
- arr: []
- }
-};
-
-const args = minimist(process.argv.slice(2), options);
-```
-
-## License
-
-MIT © [Vadim Demedes](https://vadimdemedes.com)
diff --git a/assets/node_modules/minimist/.travis.yml b/assets/node_modules/minimist/.travis.yml
deleted file mode 100644
index 74c57bf..0000000
--- a/assets/node_modules/minimist/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: node_js
-node_js:
- - "0.8"
- - "0.10"
- - "0.12"
- - "iojs"
-before_install:
- - npm install -g npm@~1.4.6
diff --git a/assets/node_modules/minimist/LICENSE b/assets/node_modules/minimist/LICENSE
deleted file mode 100644
index ee27ba4..0000000
--- a/assets/node_modules/minimist/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-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/assets/node_modules/minimist/example/parse.js b/assets/node_modules/minimist/example/parse.js
deleted file mode 100644
index abff3e8..0000000
--- a/assets/node_modules/minimist/example/parse.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var argv = require('../')(process.argv.slice(2));
-console.dir(argv);
diff --git a/assets/node_modules/minimist/index.js b/assets/node_modules/minimist/index.js
deleted file mode 100644
index de61285..0000000
--- a/assets/node_modules/minimist/index.js
+++ /dev/null
@@ -1,230 +0,0 @@
-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;
- keys.slice(0,-1).forEach(function (key) {
- if (o[key] === undefined) o[key] = {};
- o = o[key];
- });
-
- var key = keys[keys.length - 1];
- 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])
- && /-?\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/assets/node_modules/minimist/package.json b/assets/node_modules/minimist/package.json
deleted file mode 100644
index 1271939..0000000
--- a/assets/node_modules/minimist/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "minimist",
- "version": "1.1.3",
- "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/assets/node_modules/minimist/readme.markdown b/assets/node_modules/minimist/readme.markdown
deleted file mode 100644
index 30a74cf..0000000
--- a/assets/node_modules/minimist/readme.markdown
+++ /dev/null
@@ -1,91 +0,0 @@
-# minimist
-
-parse argument options
-
-This module is the guts of optimist's argument parser without all the
-fanciful decoration.
-
-[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)
-
-[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)
-
-# example
-
-``` js
-var argv = require('minimist')(process.argv.slice(2));
-console.dir(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' }
-```
-
-# 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:
-* `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`.
-
-```
-> 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
-`--`.
-
-# install
-
-With [npm](https://npmjs.org) do:
-
-```
-npm install minimist
-```
-
-# license
-
-MIT
diff --git a/assets/node_modules/minimist/test/all_bool.js b/assets/node_modules/minimist/test/all_bool.js
deleted file mode 100644
index ac83548..0000000
--- a/assets/node_modules/minimist/test/all_bool.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('flag boolean true (default all --args to boolean)', function (t) {
- var argv = parse(['moo', '--honk', 'cow'], {
- boolean: true
- });
-
- t.deepEqual(argv, {
- honk: true,
- _: ['moo', 'cow']
- });
-
- t.deepEqual(typeof argv.honk, 'boolean');
- t.end();
-});
-
-test('flag boolean true only affects double hyphen arguments without equals signs', function (t) {
- var argv = parse(['moo', '--honk', 'cow', '-p', '55', '--tacos=good'], {
- boolean: true
- });
-
- t.deepEqual(argv, {
- honk: true,
- tacos: 'good',
- p: 55,
- _: ['moo', 'cow']
- });
-
- t.deepEqual(typeof argv.honk, 'boolean');
- t.end();
-});
diff --git a/assets/node_modules/minimist/test/bool.js b/assets/node_modules/minimist/test/bool.js
deleted file mode 100644
index 14b0717..0000000
--- a/assets/node_modules/minimist/test/bool.js
+++ /dev/null
@@ -1,166 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('flag boolean default false', function (t) {
- var argv = parse(['moo'], {
- boolean: ['t', 'verbose'],
- default: { verbose: false, t: false }
- });
-
- t.deepEqual(argv, {
- verbose: false,
- t: false,
- _: ['moo']
- });
-
- t.deepEqual(typeof argv.verbose, 'boolean');
- t.deepEqual(typeof argv.t, 'boolean');
- t.end();
-
-});
-
-test('boolean groups', function (t) {
- var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
- boolean: ['x','y','z']
- });
-
- t.deepEqual(argv, {
- x : true,
- y : false,
- z : true,
- _ : [ 'one', 'two', 'three' ]
- });
-
- t.deepEqual(typeof argv.x, 'boolean');
- t.deepEqual(typeof argv.y, 'boolean');
- t.deepEqual(typeof argv.z, 'boolean');
- t.end();
-});
-test('boolean and alias with chainable api', function (t) {
- var aliased = [ '-h', 'derp' ];
- var regular = [ '--herp', 'derp' ];
- var opts = {
- herp: { alias: 'h', boolean: true }
- };
- var aliasedArgv = parse(aliased, {
- boolean: 'herp',
- alias: { h: 'herp' }
- });
- var propertyArgv = parse(regular, {
- boolean: 'herp',
- alias: { h: 'herp' }
- });
- var expected = {
- herp: true,
- h: true,
- '_': [ 'derp' ]
- };
-
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.end();
-});
-
-test('boolean and alias with options hash', function (t) {
- var aliased = [ '-h', 'derp' ];
- var regular = [ '--herp', 'derp' ];
- var opts = {
- alias: { 'h': 'herp' },
- boolean: 'herp'
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
- var expected = {
- herp: true,
- h: true,
- '_': [ 'derp' ]
- };
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.end();
-});
-
-test('boolean and alias array with options hash', function (t) {
- var aliased = [ '-h', 'derp' ];
- var regular = [ '--herp', 'derp' ];
- var alt = [ '--harp', 'derp' ];
- var opts = {
- alias: { 'h': ['herp', 'harp'] },
- boolean: 'h'
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
- var altPropertyArgv = parse(alt, opts);
- var expected = {
- harp: true,
- herp: true,
- h: true,
- '_': [ 'derp' ]
- };
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.same(altPropertyArgv, expected);
- t.end();
-});
-
-test('boolean and alias using explicit true', function (t) {
- var aliased = [ '-h', 'true' ];
- var regular = [ '--herp', 'true' ];
- var opts = {
- alias: { h: 'herp' },
- boolean: 'h'
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
- var expected = {
- herp: true,
- h: true,
- '_': [ ]
- };
-
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.end();
-});
-
-// regression, see https://github.com/substack/node-optimist/issues/71
-test('boolean and --x=true', function(t) {
- var parsed = parse(['--boool', '--other=true'], {
- boolean: 'boool'
- });
-
- t.same(parsed.boool, true);
- t.same(parsed.other, 'true');
-
- parsed = parse(['--boool', '--other=false'], {
- boolean: 'boool'
- });
-
- t.same(parsed.boool, true);
- t.same(parsed.other, 'false');
- t.end();
-});
-
-test('boolean --boool=true', function (t) {
- var parsed = parse(['--boool=true'], {
- default: {
- boool: false
- },
- boolean: ['boool']
- });
-
- t.same(parsed.boool, true);
- t.end();
-});
-
-test('boolean --boool=false', function (t) {
- var parsed = parse(['--boool=false'], {
- default: {
- boool: true
- },
- boolean: ['boool']
- });
-
- t.same(parsed.boool, false);
- t.end();
-});
diff --git a/assets/node_modules/minimist/test/dash.js b/assets/node_modules/minimist/test/dash.js
deleted file mode 100644
index 5a4fa5b..0000000
--- a/assets/node_modules/minimist/test/dash.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('-', function (t) {
- t.plan(5);
- t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] });
- t.deepEqual(parse([ '-' ]), { _: [ '-' ] });
- t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] });
- t.deepEqual(
- parse([ '-b', '-' ], { boolean: 'b' }),
- { b: true, _: [ '-' ] }
- );
- t.deepEqual(
- parse([ '-s', '-' ], { string: 's' }),
- { s: '-', _: [] }
- );
-});
-
-test('-a -- b', function (t) {
- t.plan(3);
- t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] });
- t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
- t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
-});
-
-test('move arguments after the -- into their own `--` array', function(t) {
- t.plan(1);
- t.deepEqual(
- parse([ '--name', 'John', 'before', '--', 'after' ], { '--': true }),
- { name: 'John', _: [ 'before' ], '--': [ 'after' ] });
-});
diff --git a/assets/node_modules/minimist/test/default_bool.js b/assets/node_modules/minimist/test/default_bool.js
deleted file mode 100644
index 780a311..0000000
--- a/assets/node_modules/minimist/test/default_bool.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var test = require('tape');
-var parse = require('../');
-
-test('boolean default true', function (t) {
- var argv = parse([], {
- boolean: 'sometrue',
- default: { sometrue: true }
- });
- t.equal(argv.sometrue, true);
- t.end();
-});
-
-test('boolean default false', function (t) {
- var argv = parse([], {
- boolean: 'somefalse',
- default: { somefalse: false }
- });
- t.equal(argv.somefalse, false);
- t.end();
-});
-
-test('boolean default to null', function (t) {
- var argv = parse([], {
- boolean: 'maybe',
- default: { maybe: null }
- });
- t.equal(argv.maybe, null);
- var argv = parse(['--maybe'], {
- boolean: 'maybe',
- default: { maybe: null }
- });
- t.equal(argv.maybe, true);
- t.end();
-
-})
diff --git a/assets/node_modules/minimist/test/dotted.js b/assets/node_modules/minimist/test/dotted.js
deleted file mode 100644
index d8b3e85..0000000
--- a/assets/node_modules/minimist/test/dotted.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('dotted alias', function (t) {
- var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
- t.equal(argv.a.b, 22);
- t.equal(argv.aa.bb, 22);
- t.end();
-});
-
-test('dotted default', function (t) {
- var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
- t.equal(argv.a.b, 11);
- t.equal(argv.aa.bb, 11);
- t.end();
-});
-
-test('dotted default with no alias', function (t) {
- var argv = parse('', {default: {'a.b': 11}});
- t.equal(argv.a.b, 11);
- t.end();
-});
diff --git a/assets/node_modules/minimist/test/long.js b/assets/node_modules/minimist/test/long.js
deleted file mode 100644
index 5d3a1e0..0000000
--- a/assets/node_modules/minimist/test/long.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var test = require('tape');
-var parse = require('../');
-
-test('long opts', function (t) {
- t.deepEqual(
- parse([ '--bool' ]),
- { bool : true, _ : [] },
- 'long boolean'
- );
- t.deepEqual(
- parse([ '--pow', 'xixxle' ]),
- { pow : 'xixxle', _ : [] },
- 'long capture sp'
- );
- t.deepEqual(
- parse([ '--pow=xixxle' ]),
- { pow : 'xixxle', _ : [] },
- 'long capture eq'
- );
- t.deepEqual(
- parse([ '--host', 'localhost', '--port', '555' ]),
- { host : 'localhost', port : 555, _ : [] },
- 'long captures sp'
- );
- t.deepEqual(
- parse([ '--host=localhost', '--port=555' ]),
- { host : 'localhost', port : 555, _ : [] },
- 'long captures eq'
- );
- t.end();
-});
diff --git a/assets/node_modules/minimist/test/num.js b/assets/node_modules/minimist/test/num.js
deleted file mode 100644
index 2cc77f4..0000000
--- a/assets/node_modules/minimist/test/num.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('nums', function (t) {
- var argv = parse([
- '-x', '1234',
- '-y', '5.67',
- '-z', '1e7',
- '-w', '10f',
- '--hex', '0xdeadbeef',
- '789'
- ]);
- t.deepEqual(argv, {
- x : 1234,
- y : 5.67,
- z : 1e7,
- w : '10f',
- hex : 0xdeadbeef,
- _ : [ 789 ]
- });
- t.deepEqual(typeof argv.x, 'number');
- t.deepEqual(typeof argv.y, 'number');
- t.deepEqual(typeof argv.z, 'number');
- t.deepEqual(typeof argv.w, 'string');
- t.deepEqual(typeof argv.hex, 'number');
- t.deepEqual(typeof argv._[0], 'number');
- t.end();
-});
-
-test('already a number', function (t) {
- var argv = parse([ '-x', 1234, 789 ]);
- t.deepEqual(argv, { x : 1234, _ : [ 789 ] });
- t.deepEqual(typeof argv.x, 'number');
- t.deepEqual(typeof argv._[0], 'number');
- t.end();
-});
diff --git a/assets/node_modules/minimist/test/parse.js b/assets/node_modules/minimist/test/parse.js
deleted file mode 100644
index 7b4a2a1..0000000
--- a/assets/node_modules/minimist/test/parse.js
+++ /dev/null
@@ -1,197 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('parse args', function (t) {
- t.deepEqual(
- parse([ '--no-moo' ]),
- { moo : false, _ : [] },
- 'no'
- );
- t.deepEqual(
- parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
- { v : ['a','b','c'], _ : [] },
- 'multi'
- );
- t.end();
-});
-
-test('comprehensive', function (t) {
- t.deepEqual(
- parse([
- '--name=meowmers', 'bare', '-cats', 'woo',
- '-h', 'awesome', '--multi=quux',
- '--key', 'value',
- '-b', '--bool', '--no-meep', '--multi=baz',
- '--', '--not-a-flag', 'eek'
- ]),
- {
- c : true,
- a : true,
- t : true,
- s : 'woo',
- h : 'awesome',
- b : true,
- bool : true,
- key : 'value',
- multi : [ 'quux', 'baz' ],
- meep : false,
- name : 'meowmers',
- _ : [ 'bare', '--not-a-flag', 'eek' ]
- }
- );
- t.end();
-});
-
-test('flag boolean', function (t) {
- var argv = parse([ '-t', 'moo' ], { boolean: 't' });
- t.deepEqual(argv, { t : true, _ : [ 'moo' ] });
- t.deepEqual(typeof argv.t, 'boolean');
- t.end();
-});
-
-test('flag boolean value', function (t) {
- var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {
- boolean: [ 't', 'verbose' ],
- default: { verbose: true }
- });
-
- t.deepEqual(argv, {
- verbose: false,
- t: true,
- _: ['moo']
- });
-
- t.deepEqual(typeof argv.verbose, 'boolean');
- t.deepEqual(typeof argv.t, 'boolean');
- t.end();
-});
-
-test('newlines in params' , function (t) {
- var args = parse([ '-s', "X\nX" ])
- t.deepEqual(args, { _ : [], s : "X\nX" });
-
- // reproduce in bash:
- // VALUE="new
- // line"
- // node program.js --s="$VALUE"
- args = parse([ "--s=X\nX" ])
- t.deepEqual(args, { _ : [], s : "X\nX" });
- t.end();
-});
-
-test('strings' , function (t) {
- var s = parse([ '-s', '0001234' ], { string: 's' }).s;
- t.equal(s, '0001234');
- t.equal(typeof s, 'string');
-
- var x = parse([ '-x', '56' ], { string: 'x' }).x;
- t.equal(x, '56');
- t.equal(typeof x, 'string');
- t.end();
-});
-
-test('stringArgs', function (t) {
- var s = parse([ ' ', ' ' ], { string: '_' })._;
- t.same(s.length, 2);
- t.same(typeof s[0], 'string');
- t.same(s[0], ' ');
- t.same(typeof s[1], 'string');
- t.same(s[1], ' ');
- t.end();
-});
-
-test('empty strings', function(t) {
- var s = parse([ '-s' ], { string: 's' }).s;
- t.equal(s, '');
- t.equal(typeof s, 'string');
-
- var str = parse([ '--str' ], { string: 'str' }).str;
- t.equal(str, '');
- t.equal(typeof str, 'string');
-
- var letters = parse([ '-art' ], {
- string: [ 'a', 't' ]
- });
-
- t.equal(letters.a, '');
- t.equal(letters.r, true);
- t.equal(letters.t, '');
-
- t.end();
-});
-
-
-test('string and alias', function(t) {
- var x = parse([ '--str', '000123' ], {
- string: 's',
- alias: { s: 'str' }
- });
-
- t.equal(x.str, '000123');
- t.equal(typeof x.str, 'string');
- t.equal(x.s, '000123');
- t.equal(typeof x.s, 'string');
-
- var y = parse([ '-s', '000123' ], {
- string: 'str',
- alias: { str: 's' }
- });
-
- t.equal(y.str, '000123');
- t.equal(typeof y.str, 'string');
- t.equal(y.s, '000123');
- t.equal(typeof y.s, 'string');
- t.end();
-});
-
-test('slashBreak', function (t) {
- t.same(
- parse([ '-I/foo/bar/baz' ]),
- { I : '/foo/bar/baz', _ : [] }
- );
- t.same(
- parse([ '-xyz/foo/bar/baz' ]),
- { x : true, y : true, z : '/foo/bar/baz', _ : [] }
- );
- t.end();
-});
-
-test('alias', function (t) {
- var argv = parse([ '-f', '11', '--zoom', '55' ], {
- alias: { z: 'zoom' }
- });
- t.equal(argv.zoom, 55);
- t.equal(argv.z, argv.zoom);
- t.equal(argv.f, 11);
- t.end();
-});
-
-test('multiAlias', function (t) {
- var argv = parse([ '-f', '11', '--zoom', '55' ], {
- alias: { z: [ 'zm', 'zoom' ] }
- });
- t.equal(argv.zoom, 55);
- t.equal(argv.z, argv.zoom);
- t.equal(argv.z, argv.zm);
- t.equal(argv.f, 11);
- t.end();
-});
-
-test('nested dotted objects', function (t) {
- var argv = parse([
- '--foo.bar', '3', '--foo.baz', '4',
- '--foo.quux.quibble', '5', '--foo.quux.o_O',
- '--beep.boop'
- ]);
-
- t.same(argv.foo, {
- bar : 3,
- baz : 4,
- quux : {
- quibble : 5,
- o_O : true
- }
- });
- t.same(argv.beep, { boop : true });
- t.end();
-});
diff --git a/assets/node_modules/minimist/test/parse_modified.js b/assets/node_modules/minimist/test/parse_modified.js
deleted file mode 100644
index ab620dc..0000000
--- a/assets/node_modules/minimist/test/parse_modified.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('parse with modifier functions' , function (t) {
- t.plan(1);
-
- var argv = parse([ '-b', '123' ], { boolean: 'b' });
- t.deepEqual(argv, { b: true, _: [123] });
-});
diff --git a/assets/node_modules/minimist/test/short.js b/assets/node_modules/minimist/test/short.js
deleted file mode 100644
index d513a1c..0000000
--- a/assets/node_modules/minimist/test/short.js
+++ /dev/null
@@ -1,67 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('numeric short args', function (t) {
- t.plan(2);
- t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] });
- t.deepEqual(
- parse([ '-123', '456' ]),
- { 1: true, 2: true, 3: 456, _: [] }
- );
-});
-
-test('short', function (t) {
- t.deepEqual(
- parse([ '-b' ]),
- { b : true, _ : [] },
- 'short boolean'
- );
- t.deepEqual(
- parse([ 'foo', 'bar', 'baz' ]),
- { _ : [ 'foo', 'bar', 'baz' ] },
- 'bare'
- );
- t.deepEqual(
- parse([ '-cats' ]),
- { c : true, a : true, t : true, s : true, _ : [] },
- 'group'
- );
- t.deepEqual(
- parse([ '-cats', 'meow' ]),
- { c : true, a : true, t : true, s : 'meow', _ : [] },
- 'short group next'
- );
- t.deepEqual(
- parse([ '-h', 'localhost' ]),
- { h : 'localhost', _ : [] },
- 'short capture'
- );
- t.deepEqual(
- parse([ '-h', 'localhost', '-p', '555' ]),
- { h : 'localhost', p : 555, _ : [] },
- 'short captures'
- );
- t.end();
-});
-
-test('mixed short bool and capture', function (t) {
- t.same(
- parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
- {
- f : true, p : 555, h : 'localhost',
- _ : [ 'script.js' ]
- }
- );
- t.end();
-});
-
-test('short and long', function (t) {
- t.deepEqual(
- parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
- {
- f : true, p : 555, h : 'localhost',
- _ : [ 'script.js' ]
- }
- );
- t.end();
-});
diff --git a/assets/node_modules/minimist/test/stop_early.js b/assets/node_modules/minimist/test/stop_early.js
deleted file mode 100644
index bdf9fbc..0000000
--- a/assets/node_modules/minimist/test/stop_early.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('stops parsing on the first non-option when stopEarly is set', function (t) {
- var argv = parse(['--aaa', 'bbb', 'ccc', '--ddd'], {
- stopEarly: true
- });
-
- t.deepEqual(argv, {
- aaa: 'bbb',
- _: ['ccc', '--ddd']
- });
-
- t.end();
-});
diff --git a/assets/node_modules/minimist/test/unknown.js b/assets/node_modules/minimist/test/unknown.js
deleted file mode 100644
index 462a36b..0000000
--- a/assets/node_modules/minimist/test/unknown.js
+++ /dev/null
@@ -1,102 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('boolean and alias is not unknown', function (t) {
- var unknown = [];
- function unknownFn(arg) {
- unknown.push(arg);
- return false;
- }
- var aliased = [ '-h', 'true', '--derp', 'true' ];
- var regular = [ '--herp', 'true', '-d', 'true' ];
- var opts = {
- alias: { h: 'herp' },
- boolean: 'h',
- unknown: unknownFn
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
-
- t.same(unknown, ['--derp', '-d']);
- t.end();
-});
-
-test('flag boolean true any double hyphen argument is not unknown', function (t) {
- var unknown = [];
- function unknownFn(arg) {
- unknown.push(arg);
- return false;
- }
- var argv = parse(['--honk', '--tacos=good', 'cow', '-p', '55'], {
- boolean: true,
- unknown: unknownFn
- });
- t.same(unknown, ['--tacos=good', 'cow', '-p']);
- t.same(argv, {
- honk: true,
- _: []
- });
- t.end();
-});
-
-test('string and alias is not unknown', function (t) {
- var unknown = [];
- function unknownFn(arg) {
- unknown.push(arg);
- return false;
- }
- var aliased = [ '-h', 'hello', '--derp', 'goodbye' ];
- var regular = [ '--herp', 'hello', '-d', 'moon' ];
- var opts = {
- alias: { h: 'herp' },
- string: 'h',
- unknown: unknownFn
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
-
- t.same(unknown, ['--derp', '-d']);
- t.end();
-});
-
-test('default and alias is not unknown', function (t) {
- var unknown = [];
- function unknownFn(arg) {
- unknown.push(arg);
- return false;
- }
- var aliased = [ '-h', 'hello' ];
- var regular = [ '--herp', 'hello' ];
- var opts = {
- default: { 'h': 'bar' },
- alias: { 'h': 'herp' },
- unknown: unknownFn
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
-
- t.same(unknown, []);
- t.end();
- unknownFn(); // exercise fn for 100% coverage
-});
-
-test('value following -- is not unknown', function (t) {
- var unknown = [];
- function unknownFn(arg) {
- unknown.push(arg);
- return false;
- }
- var aliased = [ '--bad', '--', 'good', 'arg' ];
- var opts = {
- '--': true,
- unknown: unknownFn
- };
- var argv = parse(aliased, opts);
-
- t.same(unknown, ['--bad']);
- t.same(argv, {
- '--': ['good', 'arg'],
- '_': []
- })
- t.end();
-});
diff --git a/assets/node_modules/minimist/test/whitespace.js b/assets/node_modules/minimist/test/whitespace.js
deleted file mode 100644
index 8a52a58..0000000
--- a/assets/node_modules/minimist/test/whitespace.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('whitespace should be whitespace' , function (t) {
- t.plan(1);
- var x = parse([ '-x', '\t' ]).x;
- t.equal(x, '\t');
-});
diff --git a/assets/node_modules/mkdirp/.travis.yml b/assets/node_modules/mkdirp/.travis.yml
deleted file mode 100644
index 74c57bf..0000000
--- a/assets/node_modules/mkdirp/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: node_js
-node_js:
- - "0.8"
- - "0.10"
- - "0.12"
- - "iojs"
-before_install:
- - npm install -g npm@~1.4.6
diff --git a/assets/node_modules/mkdirp/LICENSE b/assets/node_modules/mkdirp/LICENSE
deleted file mode 100644
index 432d1ae..0000000
--- a/assets/node_modules/mkdirp/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright 2010 James Halliday (mail@substack.net)
-
-This project is free software released under the MIT/X11 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/assets/node_modules/mkdirp/bin/cmd.js b/assets/node_modules/mkdirp/bin/cmd.js
deleted file mode 100755
index d95de15..0000000
--- a/assets/node_modules/mkdirp/bin/cmd.js
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env node
-
-var mkdirp = require('../');
-var minimist = require('minimist');
-var fs = require('fs');
-
-var argv = minimist(process.argv.slice(2), {
- alias: { m: 'mode', h: 'help' },
- string: [ 'mode' ]
-});
-if (argv.help) {
- fs.createReadStream(__dirname + '/usage.txt').pipe(process.stdout);
- return;
-}
-
-var paths = argv._.slice();
-var mode = argv.mode ? parseInt(argv.mode, 8) : undefined;
-
-(function next () {
- if (paths.length === 0) return;
- var p = paths.shift();
-
- if (mode === undefined) mkdirp(p, cb)
- else mkdirp(p, mode, cb)
-
- function cb (err) {
- if (err) {
- console.error(err.message);
- process.exit(1);
- }
- else next();
- }
-})();
diff --git a/assets/node_modules/mkdirp/bin/usage.txt b/assets/node_modules/mkdirp/bin/usage.txt
deleted file mode 100644
index f952aa2..0000000
--- a/assets/node_modules/mkdirp/bin/usage.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-usage: mkdirp [DIR1,DIR2..] {OPTIONS}
-
- Create each supplied directory including any necessary parent directories that
- don't yet exist.
-
- If the directory already exists, do nothing.
-
-OPTIONS are:
-
- -m, --mode If a directory needs to be created, set the mode as an octal
- permission string.
-
diff --git a/assets/node_modules/mkdirp/examples/pow.js b/assets/node_modules/mkdirp/examples/pow.js
deleted file mode 100644
index e692421..0000000
--- a/assets/node_modules/mkdirp/examples/pow.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var mkdirp = require('mkdirp');
-
-mkdirp('/tmp/foo/bar/baz', function (err) {
- if (err) console.error(err)
- else console.log('pow!')
-});
diff --git a/assets/node_modules/mkdirp/index.js b/assets/node_modules/mkdirp/index.js
deleted file mode 100644
index 6ce241b..0000000
--- a/assets/node_modules/mkdirp/index.js
+++ /dev/null
@@ -1,98 +0,0 @@
-var path = require('path');
-var fs = require('fs');
-var _0777 = parseInt('0777', 8);
-
-module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
-
-function mkdirP (p, opts, f, made) {
- if (typeof opts === 'function') {
- f = opts;
- opts = {};
- }
- else if (!opts || typeof opts !== 'object') {
- opts = { mode: opts };
- }
-
- var mode = opts.mode;
- var xfs = opts.fs || fs;
-
- if (mode === undefined) {
- mode = _0777 & (~process.umask());
- }
- if (!made) made = null;
-
- var cb = f || function () {};
- p = path.resolve(p);
-
- xfs.mkdir(p, mode, function (er) {
- if (!er) {
- made = made || p;
- return cb(null, made);
- }
- switch (er.code) {
- case 'ENOENT':
- mkdirP(path.dirname(p), opts, function (er, made) {
- if (er) cb(er, made);
- else mkdirP(p, opts, cb, made);
- });
- break;
-
- // In the case of any other error, just see if there's a dir
- // there already. If so, then hooray! If not, then something
- // is borked.
- default:
- xfs.stat(p, function (er2, stat) {
- // if the stat fails, then that's super weird.
- // let the original error be the failure reason.
- if (er2 || !stat.isDirectory()) cb(er, made)
- else cb(null, made);
- });
- break;
- }
- });
-}
-
-mkdirP.sync = function sync (p, opts, made) {
- if (!opts || typeof opts !== 'object') {
- opts = { mode: opts };
- }
-
- var mode = opts.mode;
- var xfs = opts.fs || fs;
-
- if (mode === undefined) {
- mode = _0777 & (~process.umask());
- }
- if (!made) made = null;
-
- p = path.resolve(p);
-
- try {
- xfs.mkdirSync(p, mode);
- made = made || p;
- }
- catch (err0) {
- switch (err0.code) {
- case 'ENOENT' :
- made = sync(path.dirname(p), opts, made);
- sync(p, opts, made);
- break;
-
- // In the case of any other error, just see if there's a dir
- // there already. If so, then hooray! If not, then something
- // is borked.
- default:
- var stat;
- try {
- stat = xfs.statSync(p);
- }
- catch (err1) {
- throw err0;
- }
- if (!stat.isDirectory()) throw err0;
- break;
- }
- }
-
- return made;
-};
diff --git a/assets/node_modules/mkdirp/node_modules/minimist/.travis.yml b/assets/node_modules/mkdirp/node_modules/minimist/.travis.yml
deleted file mode 100644
index cc4dba2..0000000
--- a/assets/node_modules/mkdirp/node_modules/minimist/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
- - "0.8"
- - "0.10"
diff --git a/assets/node_modules/mkdirp/node_modules/minimist/LICENSE b/assets/node_modules/mkdirp/node_modules/minimist/LICENSE
deleted file mode 100644
index ee27ba4..0000000
--- a/assets/node_modules/mkdirp/node_modules/minimist/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-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/assets/node_modules/mkdirp/node_modules/minimist/example/parse.js b/assets/node_modules/mkdirp/node_modules/minimist/example/parse.js
deleted file mode 100644
index abff3e8..0000000
--- a/assets/node_modules/mkdirp/node_modules/minimist/example/parse.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var argv = require('../')(process.argv.slice(2));
-console.dir(argv);
diff --git a/assets/node_modules/mkdirp/node_modules/minimist/index.js b/assets/node_modules/mkdirp/node_modules/minimist/index.js
deleted file mode 100644
index 584f551..0000000
--- a/assets/node_modules/mkdirp/node_modules/minimist/index.js
+++ /dev/null
@@ -1,187 +0,0 @@
-module.exports = function (args, opts) {
- if (!opts) opts = {};
-
- var flags = { bools : {}, strings : {} };
-
- [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
- flags.bools[key] = true;
- });
-
- [].concat(opts.string).filter(Boolean).forEach(function (key) {
- flags.strings[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;
- }));
- });
- });
-
- 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 setArg (key, val) {
- 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);
- });
- }
-
- 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]*)$/);
- setArg(m[1], m[2]);
- }
- else if (/^--no-.+/.test(arg)) {
- var key = arg.match(/^--no-(.+)/)[1];
- setArg(key, false);
- }
- else if (/^--.+/.test(arg)) {
- var key = arg.match(/^--(.+)/)[1];
- var next = args[i + 1];
- if (next !== undefined && !/^-/.test(next)
- && !flags.bools[key]
- && (aliases[key] ? !flags.bools[aliases[key]] : true)) {
- setArg(key, next);
- i++;
- }
- else if (/^(true|false)$/.test(next)) {
- setArg(key, next === 'true');
- i++;
- }
- else {
- setArg(key, flags.strings[key] ? '' : true);
- }
- }
- 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)
- continue;
- }
-
- if (/[A-Za-z]/.test(letters[j])
- && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
- setArg(letters[j], next);
- broken = true;
- break;
- }
-
- if (letters[j+1] && letters[j+1].match(/\W/)) {
- setArg(letters[j], arg.slice(j+2));
- broken = true;
- break;
- }
- else {
- setArg(letters[j], flags.strings[letters[j]] ? '' : true);
- }
- }
-
- var key = arg.slice(-1)[0];
- if (!broken && key !== '-') {
- if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
- && !flags.bools[key]
- && (aliases[key] ? !flags.bools[aliases[key]] : true)) {
- setArg(key, args[i+1]);
- i++;
- }
- else if (args[i+1] && /true|false/.test(args[i+1])) {
- setArg(key, args[i+1] === 'true');
- i++;
- }
- else {
- setArg(key, flags.strings[key] ? '' : true);
- }
- }
- }
- else {
- argv._.push(
- flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
- );
- }
- }
-
- 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]);
- });
- }
- });
-
- 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 setKey (obj, keys, value) {
- var o = obj;
- keys.slice(0,-1).forEach(function (key) {
- if (o[key] === undefined) o[key] = {};
- o = o[key];
- });
-
- var key = keys[keys.length - 1];
- if (o[key] === undefined || typeof o[key] === 'boolean') {
- o[key] = value;
- }
- else if (Array.isArray(o[key])) {
- o[key].push(value);
- }
- else {
- o[key] = [ o[key], value ];
- }
-}
-
-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);
-}
-
-function longest (xs) {
- return Math.max.apply(null, xs.map(function (x) { return x.length }));
-}
diff --git a/assets/node_modules/mkdirp/node_modules/minimist/package.json b/assets/node_modules/mkdirp/node_modules/minimist/package.json
deleted file mode 100644
index af6250b..0000000
--- a/assets/node_modules/mkdirp/node_modules/minimist/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "minimist",
- "version": "0.0.8",
- "description": "parse argument options",
- "main": "index.js",
- "devDependencies": {
- "tape": "~1.0.4",
- "tap": "~0.4.0"
- },
- "scripts": {
- "test": "tap 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/assets/node_modules/mkdirp/node_modules/minimist/readme.markdown b/assets/node_modules/mkdirp/node_modules/minimist/readme.markdown
deleted file mode 100644
index c256353..0000000
--- a/assets/node_modules/mkdirp/node_modules/minimist/readme.markdown
+++ /dev/null
@@ -1,73 +0,0 @@
-# minimist
-
-parse argument options
-
-This module is the guts of optimist's argument parser without all the
-fanciful decoration.
-
-[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)
-
-[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)
-
-# example
-
-``` js
-var argv = require('minimist')(process.argv.slice(2));
-console.dir(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' }
-```
-
-# 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 string or array of strings to always treat as booleans
-* `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
-
-# install
-
-With [npm](https://npmjs.org) do:
-
-```
-npm install minimist
-```
-
-# license
-
-MIT
diff --git a/assets/node_modules/mkdirp/node_modules/minimist/test/dash.js b/assets/node_modules/mkdirp/node_modules/minimist/test/dash.js
deleted file mode 100644
index 8b034b9..0000000
--- a/assets/node_modules/mkdirp/node_modules/minimist/test/dash.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('-', function (t) {
- t.plan(5);
- t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] });
- t.deepEqual(parse([ '-' ]), { _: [ '-' ] });
- t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] });
- t.deepEqual(
- parse([ '-b', '-' ], { boolean: 'b' }),
- { b: true, _: [ '-' ] }
- );
- t.deepEqual(
- parse([ '-s', '-' ], { string: 's' }),
- { s: '-', _: [] }
- );
-});
-
-test('-a -- b', function (t) {
- t.plan(3);
- t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] });
- t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
- t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
-});
diff --git a/assets/node_modules/mkdirp/node_modules/minimist/test/default_bool.js b/assets/node_modules/mkdirp/node_modules/minimist/test/default_bool.js
deleted file mode 100644
index f0041ee..0000000
--- a/assets/node_modules/mkdirp/node_modules/minimist/test/default_bool.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var test = require('tape');
-var parse = require('../');
-
-test('boolean default true', function (t) {
- var argv = parse([], {
- boolean: 'sometrue',
- default: { sometrue: true }
- });
- t.equal(argv.sometrue, true);
- t.end();
-});
-
-test('boolean default false', function (t) {
- var argv = parse([], {
- boolean: 'somefalse',
- default: { somefalse: false }
- });
- t.equal(argv.somefalse, false);
- t.end();
-});
diff --git a/assets/node_modules/mkdirp/node_modules/minimist/test/dotted.js b/assets/node_modules/mkdirp/node_modules/minimist/test/dotted.js
deleted file mode 100644
index ef0ae34..0000000
--- a/assets/node_modules/mkdirp/node_modules/minimist/test/dotted.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('dotted alias', function (t) {
- var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
- t.equal(argv.a.b, 22);
- t.equal(argv.aa.bb, 22);
- t.end();
-});
-
-test('dotted default', function (t) {
- var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
- t.equal(argv.a.b, 11);
- t.equal(argv.aa.bb, 11);
- t.end();
-});
diff --git a/assets/node_modules/mkdirp/node_modules/minimist/test/long.js b/assets/node_modules/mkdirp/node_modules/minimist/test/long.js
deleted file mode 100644
index 5d3a1e0..0000000
--- a/assets/node_modules/mkdirp/node_modules/minimist/test/long.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var test = require('tape');
-var parse = require('../');
-
-test('long opts', function (t) {
- t.deepEqual(
- parse([ '--bool' ]),
- { bool : true, _ : [] },
- 'long boolean'
- );
- t.deepEqual(
- parse([ '--pow', 'xixxle' ]),
- { pow : 'xixxle', _ : [] },
- 'long capture sp'
- );
- t.deepEqual(
- parse([ '--pow=xixxle' ]),
- { pow : 'xixxle', _ : [] },
- 'long capture eq'
- );
- t.deepEqual(
- parse([ '--host', 'localhost', '--port', '555' ]),
- { host : 'localhost', port : 555, _ : [] },
- 'long captures sp'
- );
- t.deepEqual(
- parse([ '--host=localhost', '--port=555' ]),
- { host : 'localhost', port : 555, _ : [] },
- 'long captures eq'
- );
- t.end();
-});
diff --git a/assets/node_modules/mkdirp/node_modules/minimist/test/parse.js b/assets/node_modules/mkdirp/node_modules/minimist/test/parse.js
deleted file mode 100644
index 8a90646..0000000
--- a/assets/node_modules/mkdirp/node_modules/minimist/test/parse.js
+++ /dev/null
@@ -1,318 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('parse args', function (t) {
- t.deepEqual(
- parse([ '--no-moo' ]),
- { moo : false, _ : [] },
- 'no'
- );
- t.deepEqual(
- parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
- { v : ['a','b','c'], _ : [] },
- 'multi'
- );
- t.end();
-});
-
-test('comprehensive', function (t) {
- t.deepEqual(
- parse([
- '--name=meowmers', 'bare', '-cats', 'woo',
- '-h', 'awesome', '--multi=quux',
- '--key', 'value',
- '-b', '--bool', '--no-meep', '--multi=baz',
- '--', '--not-a-flag', 'eek'
- ]),
- {
- c : true,
- a : true,
- t : true,
- s : 'woo',
- h : 'awesome',
- b : true,
- bool : true,
- key : 'value',
- multi : [ 'quux', 'baz' ],
- meep : false,
- name : 'meowmers',
- _ : [ 'bare', '--not-a-flag', 'eek' ]
- }
- );
- t.end();
-});
-
-test('nums', function (t) {
- var argv = parse([
- '-x', '1234',
- '-y', '5.67',
- '-z', '1e7',
- '-w', '10f',
- '--hex', '0xdeadbeef',
- '789'
- ]);
- t.deepEqual(argv, {
- x : 1234,
- y : 5.67,
- z : 1e7,
- w : '10f',
- hex : 0xdeadbeef,
- _ : [ 789 ]
- });
- t.deepEqual(typeof argv.x, 'number');
- t.deepEqual(typeof argv.y, 'number');
- t.deepEqual(typeof argv.z, 'number');
- t.deepEqual(typeof argv.w, 'string');
- t.deepEqual(typeof argv.hex, 'number');
- t.deepEqual(typeof argv._[0], 'number');
- t.end();
-});
-
-test('flag boolean', function (t) {
- var argv = parse([ '-t', 'moo' ], { boolean: 't' });
- t.deepEqual(argv, { t : true, _ : [ 'moo' ] });
- t.deepEqual(typeof argv.t, 'boolean');
- t.end();
-});
-
-test('flag boolean value', function (t) {
- var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {
- boolean: [ 't', 'verbose' ],
- default: { verbose: true }
- });
-
- t.deepEqual(argv, {
- verbose: false,
- t: true,
- _: ['moo']
- });
-
- t.deepEqual(typeof argv.verbose, 'boolean');
- t.deepEqual(typeof argv.t, 'boolean');
- t.end();
-});
-
-test('flag boolean default false', function (t) {
- var argv = parse(['moo'], {
- boolean: ['t', 'verbose'],
- default: { verbose: false, t: false }
- });
-
- t.deepEqual(argv, {
- verbose: false,
- t: false,
- _: ['moo']
- });
-
- t.deepEqual(typeof argv.verbose, 'boolean');
- t.deepEqual(typeof argv.t, 'boolean');
- t.end();
-
-});
-
-test('boolean groups', function (t) {
- var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
- boolean: ['x','y','z']
- });
-
- t.deepEqual(argv, {
- x : true,
- y : false,
- z : true,
- _ : [ 'one', 'two', 'three' ]
- });
-
- t.deepEqual(typeof argv.x, 'boolean');
- t.deepEqual(typeof argv.y, 'boolean');
- t.deepEqual(typeof argv.z, 'boolean');
- t.end();
-});
-
-test('newlines in params' , function (t) {
- var args = parse([ '-s', "X\nX" ])
- t.deepEqual(args, { _ : [], s : "X\nX" });
-
- // reproduce in bash:
- // VALUE="new
- // line"
- // node program.js --s="$VALUE"
- args = parse([ "--s=X\nX" ])
- t.deepEqual(args, { _ : [], s : "X\nX" });
- t.end();
-});
-
-test('strings' , function (t) {
- var s = parse([ '-s', '0001234' ], { string: 's' }).s;
- t.equal(s, '0001234');
- t.equal(typeof s, 'string');
-
- var x = parse([ '-x', '56' ], { string: 'x' }).x;
- t.equal(x, '56');
- t.equal(typeof x, 'string');
- t.end();
-});
-
-test('stringArgs', function (t) {
- var s = parse([ ' ', ' ' ], { string: '_' })._;
- t.same(s.length, 2);
- t.same(typeof s[0], 'string');
- t.same(s[0], ' ');
- t.same(typeof s[1], 'string');
- t.same(s[1], ' ');
- t.end();
-});
-
-test('empty strings', function(t) {
- var s = parse([ '-s' ], { string: 's' }).s;
- t.equal(s, '');
- t.equal(typeof s, 'string');
-
- var str = parse([ '--str' ], { string: 'str' }).str;
- t.equal(str, '');
- t.equal(typeof str, 'string');
-
- var letters = parse([ '-art' ], {
- string: [ 'a', 't' ]
- });
-
- t.equal(letters.a, '');
- t.equal(letters.r, true);
- t.equal(letters.t, '');
-
- t.end();
-});
-
-
-test('slashBreak', function (t) {
- t.same(
- parse([ '-I/foo/bar/baz' ]),
- { I : '/foo/bar/baz', _ : [] }
- );
- t.same(
- parse([ '-xyz/foo/bar/baz' ]),
- { x : true, y : true, z : '/foo/bar/baz', _ : [] }
- );
- t.end();
-});
-
-test('alias', function (t) {
- var argv = parse([ '-f', '11', '--zoom', '55' ], {
- alias: { z: 'zoom' }
- });
- t.equal(argv.zoom, 55);
- t.equal(argv.z, argv.zoom);
- t.equal(argv.f, 11);
- t.end();
-});
-
-test('multiAlias', function (t) {
- var argv = parse([ '-f', '11', '--zoom', '55' ], {
- alias: { z: [ 'zm', 'zoom' ] }
- });
- t.equal(argv.zoom, 55);
- t.equal(argv.z, argv.zoom);
- t.equal(argv.z, argv.zm);
- t.equal(argv.f, 11);
- t.end();
-});
-
-test('nested dotted objects', function (t) {
- var argv = parse([
- '--foo.bar', '3', '--foo.baz', '4',
- '--foo.quux.quibble', '5', '--foo.quux.o_O',
- '--beep.boop'
- ]);
-
- t.same(argv.foo, {
- bar : 3,
- baz : 4,
- quux : {
- quibble : 5,
- o_O : true
- }
- });
- t.same(argv.beep, { boop : true });
- t.end();
-});
-
-test('boolean and alias with chainable api', function (t) {
- var aliased = [ '-h', 'derp' ];
- var regular = [ '--herp', 'derp' ];
- var opts = {
- herp: { alias: 'h', boolean: true }
- };
- var aliasedArgv = parse(aliased, {
- boolean: 'herp',
- alias: { h: 'herp' }
- });
- var propertyArgv = parse(regular, {
- boolean: 'herp',
- alias: { h: 'herp' }
- });
- var expected = {
- herp: true,
- h: true,
- '_': [ 'derp' ]
- };
-
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.end();
-});
-
-test('boolean and alias with options hash', function (t) {
- var aliased = [ '-h', 'derp' ];
- var regular = [ '--herp', 'derp' ];
- var opts = {
- alias: { 'h': 'herp' },
- boolean: 'herp'
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
- var expected = {
- herp: true,
- h: true,
- '_': [ 'derp' ]
- };
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.end();
-});
-
-test('boolean and alias using explicit true', function (t) {
- var aliased = [ '-h', 'true' ];
- var regular = [ '--herp', 'true' ];
- var opts = {
- alias: { h: 'herp' },
- boolean: 'h'
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
- var expected = {
- herp: true,
- h: true,
- '_': [ ]
- };
-
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.end();
-});
-
-// regression, see https://github.com/substack/node-optimist/issues/71
-test('boolean and --x=true', function(t) {
- var parsed = parse(['--boool', '--other=true'], {
- boolean: 'boool'
- });
-
- t.same(parsed.boool, true);
- t.same(parsed.other, 'true');
-
- parsed = parse(['--boool', '--other=false'], {
- boolean: 'boool'
- });
-
- t.same(parsed.boool, true);
- t.same(parsed.other, 'false');
- t.end();
-});
diff --git a/assets/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js b/assets/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js
deleted file mode 100644
index 21851b0..0000000
--- a/assets/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('parse with modifier functions' , function (t) {
- t.plan(1);
-
- var argv = parse([ '-b', '123' ], { boolean: 'b' });
- t.deepEqual(argv, { b: true, _: ['123'] });
-});
diff --git a/assets/node_modules/mkdirp/node_modules/minimist/test/short.js b/assets/node_modules/mkdirp/node_modules/minimist/test/short.js
deleted file mode 100644
index d513a1c..0000000
--- a/assets/node_modules/mkdirp/node_modules/minimist/test/short.js
+++ /dev/null
@@ -1,67 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('numeric short args', function (t) {
- t.plan(2);
- t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] });
- t.deepEqual(
- parse([ '-123', '456' ]),
- { 1: true, 2: true, 3: 456, _: [] }
- );
-});
-
-test('short', function (t) {
- t.deepEqual(
- parse([ '-b' ]),
- { b : true, _ : [] },
- 'short boolean'
- );
- t.deepEqual(
- parse([ 'foo', 'bar', 'baz' ]),
- { _ : [ 'foo', 'bar', 'baz' ] },
- 'bare'
- );
- t.deepEqual(
- parse([ '-cats' ]),
- { c : true, a : true, t : true, s : true, _ : [] },
- 'group'
- );
- t.deepEqual(
- parse([ '-cats', 'meow' ]),
- { c : true, a : true, t : true, s : 'meow', _ : [] },
- 'short group next'
- );
- t.deepEqual(
- parse([ '-h', 'localhost' ]),
- { h : 'localhost', _ : [] },
- 'short capture'
- );
- t.deepEqual(
- parse([ '-h', 'localhost', '-p', '555' ]),
- { h : 'localhost', p : 555, _ : [] },
- 'short captures'
- );
- t.end();
-});
-
-test('mixed short bool and capture', function (t) {
- t.same(
- parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
- {
- f : true, p : 555, h : 'localhost',
- _ : [ 'script.js' ]
- }
- );
- t.end();
-});
-
-test('short and long', function (t) {
- t.deepEqual(
- parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
- {
- f : true, p : 555, h : 'localhost',
- _ : [ 'script.js' ]
- }
- );
- t.end();
-});
diff --git a/assets/node_modules/mkdirp/node_modules/minimist/test/whitespace.js b/assets/node_modules/mkdirp/node_modules/minimist/test/whitespace.js
deleted file mode 100644
index 8a52a58..0000000
--- a/assets/node_modules/mkdirp/node_modules/minimist/test/whitespace.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('whitespace should be whitespace' , function (t) {
- t.plan(1);
- var x = parse([ '-x', '\t' ]).x;
- t.equal(x, '\t');
-});
diff --git a/assets/node_modules/mkdirp/package.json b/assets/node_modules/mkdirp/package.json
deleted file mode 100644
index 863e860..0000000
--- a/assets/node_modules/mkdirp/package.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "mkdirp",
- "description": "Recursively mkdir, like `mkdir -p`",
- "version": "0.5.1",
- "author": "James Halliday <mail@substack.net> (http://substack.net)",
- "main": "index.js",
- "keywords": [
- "mkdir",
- "directory"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/substack/node-mkdirp.git"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "dependencies": {
- "minimist": "0.0.8"
- },
- "devDependencies": {
- "tap": "1",
- "mock-fs": "2 >=2.7.0"
- },
- "bin": "bin/cmd.js",
- "license": "MIT"
-}
diff --git a/assets/node_modules/mkdirp/readme.markdown b/assets/node_modules/mkdirp/readme.markdown
deleted file mode 100644
index 3cc1315..0000000
--- a/assets/node_modules/mkdirp/readme.markdown
+++ /dev/null
@@ -1,100 +0,0 @@
-# mkdirp
-
-Like `mkdir -p`, but in node.js!
-
-[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)
-
-# example
-
-## pow.js
-
-```js
-var mkdirp = require('mkdirp');
-
-mkdirp('/tmp/foo/bar/baz', function (err) {
- if (err) console.error(err)
- else console.log('pow!')
-});
-```
-
-Output
-
-```
-pow!
-```
-
-And now /tmp/foo/bar/baz exists, huzzah!
-
-# methods
-
-```js
-var mkdirp = require('mkdirp');
-```
-
-## mkdirp(dir, opts, cb)
-
-Create a new directory and any necessary subdirectories at `dir` with octal
-permission string `opts.mode`. If `opts` is a non-object, it will be treated as
-the `opts.mode`.
-
-If `opts.mode` isn't specified, it defaults to `0777 & (~process.umask())`.
-
-`cb(err, made)` fires with the error or the first directory `made`
-that had to be created, if any.
-
-You can optionally pass in an alternate `fs` implementation by passing in
-`opts.fs`. Your implementation should have `opts.fs.mkdir(path, mode, cb)` and
-`opts.fs.stat(path, cb)`.
-
-## mkdirp.sync(dir, opts)
-
-Synchronously create a new directory and any necessary subdirectories at `dir`
-with octal permission string `opts.mode`. If `opts` is a non-object, it will be
-treated as the `opts.mode`.
-
-If `opts.mode` isn't specified, it defaults to `0777 & (~process.umask())`.
-
-Returns the first directory that had to be created, if any.
-
-You can optionally pass in an alternate `fs` implementation by passing in
-`opts.fs`. Your implementation should have `opts.fs.mkdirSync(path, mode)` and
-`opts.fs.statSync(path)`.
-
-# usage
-
-This package also ships with a `mkdirp` command.
-
-```
-usage: mkdirp [DIR1,DIR2..] {OPTIONS}
-
- Create each supplied directory including any necessary parent directories that
- don't yet exist.
-
- If the directory already exists, do nothing.
-
-OPTIONS are:
-
- -m, --mode If a directory needs to be created, set the mode as an octal
- permission string.
-
-```
-
-# install
-
-With [npm](http://npmjs.org) do:
-
-```
-npm install mkdirp
-```
-
-to get the library, or
-
-```
-npm install -g mkdirp
-```
-
-to get the command.
-
-# license
-
-MIT
diff --git a/assets/node_modules/mkdirp/test/chmod.js b/assets/node_modules/mkdirp/test/chmod.js
deleted file mode 100644
index 6a404b9..0000000
--- a/assets/node_modules/mkdirp/test/chmod.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-var _0744 = parseInt('0744', 8);
-
-var ps = [ '', 'tmp' ];
-
-for (var i = 0; i < 25; i++) {
- var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- ps.push(dir);
-}
-
-var file = ps.join('/');
-
-test('chmod-pre', function (t) {
- var mode = _0744
- mkdirp(file, mode, function (er) {
- t.ifError(er, 'should not error');
- fs.stat(file, function (er, stat) {
- t.ifError(er, 'should exist');
- t.ok(stat && stat.isDirectory(), 'should be directory');
- t.equal(stat && stat.mode & _0777, mode, 'should be 0744');
- t.end();
- });
- });
-});
-
-test('chmod', function (t) {
- var mode = _0755
- mkdirp(file, mode, function (er) {
- t.ifError(er, 'should not error');
- fs.stat(file, function (er, stat) {
- t.ifError(er, 'should exist');
- t.ok(stat && stat.isDirectory(), 'should be directory');
- t.end();
- });
- });
-});
diff --git a/assets/node_modules/mkdirp/test/clobber.js b/assets/node_modules/mkdirp/test/clobber.js
deleted file mode 100644
index 2433b9a..0000000
--- a/assets/node_modules/mkdirp/test/clobber.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-var _0755 = parseInt('0755', 8);
-
-var ps = [ '', 'tmp' ];
-
-for (var i = 0; i < 25; i++) {
- var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- ps.push(dir);
-}
-
-var file = ps.join('/');
-
-// a file in the way
-var itw = ps.slice(0, 3).join('/');
-
-
-test('clobber-pre', function (t) {
- console.error("about to write to "+itw)
- fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.');
-
- fs.stat(itw, function (er, stat) {
- t.ifError(er)
- t.ok(stat && stat.isFile(), 'should be file')
- t.end()
- })
-})
-
-test('clobber', function (t) {
- t.plan(2);
- mkdirp(file, _0755, function (err) {
- t.ok(err);
- t.equal(err.code, 'ENOTDIR');
- t.end();
- });
-});
diff --git a/assets/node_modules/mkdirp/test/mkdirp.js b/assets/node_modules/mkdirp/test/mkdirp.js
deleted file mode 100644
index eaa8921..0000000
--- a/assets/node_modules/mkdirp/test/mkdirp.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('woo', function (t) {
- t.plan(5);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- mkdirp(file, _0755, function (err) {
- t.ifError(err);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- })
- })
- });
-});
diff --git a/assets/node_modules/mkdirp/test/opts_fs.js b/assets/node_modules/mkdirp/test/opts_fs.js
deleted file mode 100644
index 97186b6..0000000
--- a/assets/node_modules/mkdirp/test/opts_fs.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var test = require('tap').test;
-var mockfs = require('mock-fs');
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('opts.fs', function (t) {
- t.plan(5);
-
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/beep/boop/' + [x,y,z].join('/');
- var xfs = mockfs.fs();
-
- mkdirp(file, { fs: xfs, mode: _0755 }, function (err) {
- t.ifError(err);
- xfs.exists(file, function (ex) {
- t.ok(ex, 'created file');
- xfs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- });
- });
-});
diff --git a/assets/node_modules/mkdirp/test/opts_fs_sync.js b/assets/node_modules/mkdirp/test/opts_fs_sync.js
deleted file mode 100644
index 6c370aa..0000000
--- a/assets/node_modules/mkdirp/test/opts_fs_sync.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var test = require('tap').test;
-var mockfs = require('mock-fs');
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('opts.fs sync', function (t) {
- t.plan(4);
-
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/beep/boop/' + [x,y,z].join('/');
- var xfs = mockfs.fs();
-
- mkdirp.sync(file, { fs: xfs, mode: _0755 });
- xfs.exists(file, function (ex) {
- t.ok(ex, 'created file');
- xfs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- });
-});
diff --git a/assets/node_modules/mkdirp/test/perm.js b/assets/node_modules/mkdirp/test/perm.js
deleted file mode 100644
index fbce44b..0000000
--- a/assets/node_modules/mkdirp/test/perm.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('async perm', function (t) {
- t.plan(5);
- var file = '/tmp/' + (Math.random() * (1<<30)).toString(16);
-
- mkdirp(file, _0755, function (err) {
- t.ifError(err);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- })
- })
- });
-});
-
-test('async root perm', function (t) {
- mkdirp('/tmp', _0755, function (err) {
- if (err) t.fail(err);
- t.end();
- });
- t.end();
-});
diff --git a/assets/node_modules/mkdirp/test/perm_sync.js b/assets/node_modules/mkdirp/test/perm_sync.js
deleted file mode 100644
index 398229f..0000000
--- a/assets/node_modules/mkdirp/test/perm_sync.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('sync perm', function (t) {
- t.plan(4);
- var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json';
-
- mkdirp.sync(file, _0755);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- });
-});
-
-test('sync root perm', function (t) {
- t.plan(3);
-
- var file = '/tmp';
- mkdirp.sync(file, _0755);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.ok(stat.isDirectory(), 'target not a directory');
- })
- });
-});
diff --git a/assets/node_modules/mkdirp/test/race.js b/assets/node_modules/mkdirp/test/race.js
deleted file mode 100644
index b0b9e18..0000000
--- a/assets/node_modules/mkdirp/test/race.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('race', function (t) {
- t.plan(10);
- var ps = [ '', 'tmp' ];
-
- for (var i = 0; i < 25; i++) {
- var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- ps.push(dir);
- }
- var file = ps.join('/');
-
- var res = 2;
- mk(file);
-
- mk(file);
-
- function mk (file, cb) {
- mkdirp(file, _0755, function (err) {
- t.ifError(err);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- })
- });
- }
-});
diff --git a/assets/node_modules/mkdirp/test/rel.js b/assets/node_modules/mkdirp/test/rel.js
deleted file mode 100644
index 4ddb342..0000000
--- a/assets/node_modules/mkdirp/test/rel.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('rel', function (t) {
- t.plan(5);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var cwd = process.cwd();
- process.chdir('/tmp');
-
- var file = [x,y,z].join('/');
-
- mkdirp(file, _0755, function (err) {
- t.ifError(err);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- process.chdir(cwd);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- })
- })
- });
-});
diff --git a/assets/node_modules/mkdirp/test/return.js b/assets/node_modules/mkdirp/test/return.js
deleted file mode 100644
index bce68e5..0000000
--- a/assets/node_modules/mkdirp/test/return.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('return value', function (t) {
- t.plan(4);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- // should return the first dir created.
- // By this point, it would be profoundly surprising if /tmp didn't
- // already exist, since every other test makes things in there.
- mkdirp(file, function (err, made) {
- t.ifError(err);
- t.equal(made, '/tmp/' + x);
- mkdirp(file, function (err, made) {
- t.ifError(err);
- t.equal(made, null);
- });
- });
-});
diff --git a/assets/node_modules/mkdirp/test/return_sync.js b/assets/node_modules/mkdirp/test/return_sync.js
deleted file mode 100644
index 7c222d3..0000000
--- a/assets/node_modules/mkdirp/test/return_sync.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('return value', function (t) {
- t.plan(2);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- // should return the first dir created.
- // By this point, it would be profoundly surprising if /tmp didn't
- // already exist, since every other test makes things in there.
- // Note that this will throw on failure, which will fail the test.
- var made = mkdirp.sync(file);
- t.equal(made, '/tmp/' + x);
-
- // making the same file again should have no effect.
- made = mkdirp.sync(file);
- t.equal(made, null);
-});
diff --git a/assets/node_modules/mkdirp/test/root.js b/assets/node_modules/mkdirp/test/root.js
deleted file mode 100644
index 9e7d079..0000000
--- a/assets/node_modules/mkdirp/test/root.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-var _0755 = parseInt('0755', 8);
-
-test('root', function (t) {
- // '/' on unix, 'c:/' on windows.
- var file = path.resolve('/');
-
- mkdirp(file, _0755, function (err) {
- if (err) throw err
- fs.stat(file, function (er, stat) {
- if (er) throw er
- t.ok(stat.isDirectory(), 'target is a directory');
- t.end();
- })
- });
-});
diff --git a/assets/node_modules/mkdirp/test/sync.js b/assets/node_modules/mkdirp/test/sync.js
deleted file mode 100644
index 8c8dc93..0000000
--- a/assets/node_modules/mkdirp/test/sync.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('sync', function (t) {
- t.plan(4);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- try {
- mkdirp.sync(file, _0755);
- } catch (err) {
- t.fail(err);
- return t.end();
- }
-
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- });
-});
diff --git a/assets/node_modules/mkdirp/test/umask.js b/assets/node_modules/mkdirp/test/umask.js
deleted file mode 100644
index 2033c63..0000000
--- a/assets/node_modules/mkdirp/test/umask.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('implicit mode from umask', function (t) {
- t.plan(5);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- mkdirp(file, function (err) {
- t.ifError(err);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0777 & (~process.umask()));
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- })
- });
-});
diff --git a/assets/node_modules/mkdirp/test/umask_sync.js b/assets/node_modules/mkdirp/test/umask_sync.js
deleted file mode 100644
index 11a7614..0000000
--- a/assets/node_modules/mkdirp/test/umask_sync.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('umask sync modes', function (t) {
- t.plan(4);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- try {
- mkdirp.sync(file);
- } catch (err) {
- t.fail(err);
- return t.end();
- }
-
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, (_0777 & (~process.umask())));
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- });
-});
diff --git a/assets/node_modules/ms/index.js b/assets/node_modules/ms/index.js
deleted file mode 100644
index c4498bc..0000000
--- a/assets/node_modules/ms/index.js
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- * Helpers.
- */
-
-var s = 1000;
-var m = s * 60;
-var h = m * 60;
-var d = h * 24;
-var w = d * 7;
-var y = d * 365.25;
-
-/**
- * Parse or format the given `val`.
- *
- * Options:
- *
- * - `long` verbose formatting [false]
- *
- * @param {String|Number} val
- * @param {Object} [options]
- * @throws {Error} throw an error if val is not a non-empty string or a number
- * @return {String|Number}
- * @api public
- */
-
-module.exports = function(val, options) {
- options = options || {};
- var type = typeof val;
- if (type === 'string' && val.length > 0) {
- return parse(val);
- } else if (type === 'number' && isFinite(val)) {
- return options.long ? fmtLong(val) : fmtShort(val);
- }
- throw new Error(
- 'val is not a non-empty string or a valid number. val=' +
- JSON.stringify(val)
- );
-};
-
-/**
- * Parse the given `str` and return milliseconds.
- *
- * @param {String} str
- * @return {Number}
- * @api private
- */
-
-function parse(str) {
- str = String(str);
- if (str.length > 100) {
- return;
- }
- var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
- str
- );
- if (!match) {
- return;
- }
- var n = parseFloat(match[1]);
- var type = (match[2] || 'ms').toLowerCase();
- switch (type) {
- case 'years':
- case 'year':
- case 'yrs':
- case 'yr':
- case 'y':
- return n * y;
- case 'weeks':
- case 'week':
- case 'w':
- return n * w;
- case 'days':
- case 'day':
- case 'd':
- return n * d;
- case 'hours':
- case 'hour':
- case 'hrs':
- case 'hr':
- case 'h':
- return n * h;
- case 'minutes':
- case 'minute':
- case 'mins':
- case 'min':
- case 'm':
- return n * m;
- case 'seconds':
- case 'second':
- case 'secs':
- case 'sec':
- case 's':
- return n * s;
- case 'milliseconds':
- case 'millisecond':
- case 'msecs':
- case 'msec':
- case 'ms':
- return n;
- default:
- return undefined;
- }
-}
-
-/**
- * Short format for `ms`.
- *
- * @param {Number} ms
- * @return {String}
- * @api private
- */
-
-function fmtShort(ms) {
- var msAbs = Math.abs(ms);
- if (msAbs >= d) {
- return Math.round(ms / d) + 'd';
- }
- if (msAbs >= h) {
- return Math.round(ms / h) + 'h';
- }
- if (msAbs >= m) {
- return Math.round(ms / m) + 'm';
- }
- if (msAbs >= s) {
- return Math.round(ms / s) + 's';
- }
- return ms + 'ms';
-}
-
-/**
- * Long format for `ms`.
- *
- * @param {Number} ms
- * @return {String}
- * @api private
- */
-
-function fmtLong(ms) {
- var msAbs = Math.abs(ms);
- if (msAbs >= d) {
- return plural(ms, msAbs, d, 'day');
- }
- if (msAbs >= h) {
- return plural(ms, msAbs, h, 'hour');
- }
- if (msAbs >= m) {
- return plural(ms, msAbs, m, 'minute');
- }
- if (msAbs >= s) {
- return plural(ms, msAbs, s, 'second');
- }
- return ms + ' ms';
-}
-
-/**
- * Pluralization helper.
- */
-
-function plural(ms, msAbs, n, name) {
- var isPlural = msAbs >= n * 1.5;
- return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
-}
diff --git a/assets/node_modules/ms/license.md b/assets/node_modules/ms/license.md
deleted file mode 100644
index 69b6125..0000000
--- a/assets/node_modules/ms/license.md
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016 Zeit, Inc.
-
-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/assets/node_modules/ms/package.json b/assets/node_modules/ms/package.json
deleted file mode 100644
index eea666e..0000000
--- a/assets/node_modules/ms/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "ms",
- "version": "2.1.2",
- "description": "Tiny millisecond conversion utility",
- "repository": "zeit/ms",
- "main": "./index",
- "files": [
- "index.js"
- ],
- "scripts": {
- "precommit": "lint-staged",
- "lint": "eslint lib/* bin/*",
- "test": "mocha tests.js"
- },
- "eslintConfig": {
- "extends": "eslint:recommended",
- "env": {
- "node": true,
- "es6": true
- }
- },
- "lint-staged": {
- "*.js": [
- "npm run lint",
- "prettier --single-quote --write",
- "git add"
- ]
- },
- "license": "MIT",
- "devDependencies": {
- "eslint": "4.12.1",
- "expect.js": "0.3.1",
- "husky": "0.14.3",
- "lint-staged": "5.0.0",
- "mocha": "4.0.1"
- }
-}
diff --git a/assets/node_modules/ms/readme.md b/assets/node_modules/ms/readme.md
deleted file mode 100644
index 9a1996b..0000000
--- a/assets/node_modules/ms/readme.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# ms
-
-[![Build Status](https://travis-ci.org/zeit/ms.svg?branch=master)](https://travis-ci.org/zeit/ms)
-[![Join the community on Spectrum](https://withspectrum.github.io/badge/badge.svg)](https://spectrum.chat/zeit)
-
-Use this package to easily convert various time formats to milliseconds.
-
-## Examples
-
-```js
-ms('2 days') // 172800000
-ms('1d') // 86400000
-ms('10h') // 36000000
-ms('2.5 hrs') // 9000000
-ms('2h') // 7200000
-ms('1m') // 60000
-ms('5s') // 5000
-ms('1y') // 31557600000
-ms('100') // 100
-ms('-3 days') // -259200000
-ms('-1h') // -3600000
-ms('-200') // -200
-```
-
-### Convert from Milliseconds
-
-```js
-ms(60000) // "1m"
-ms(2 * 60000) // "2m"
-ms(-3 * 60000) // "-3m"
-ms(ms('10 hours')) // "10h"
-```
-
-### Time Format Written-Out
-
-```js
-ms(60000, { long: true }) // "1 minute"
-ms(2 * 60000, { long: true }) // "2 minutes"
-ms(-3 * 60000, { long: true }) // "-3 minutes"
-ms(ms('10 hours'), { long: true }) // "10 hours"
-```
-
-## Features
-
-- Works both in [Node.js](https://nodejs.org) and in the browser
-- If a number is supplied to `ms`, a string with a unit is returned
-- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`)
-- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned
-
-## Related Packages
-
-- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time.
-
-## Caught a Bug?
-
-1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device
-2. Link the package to the global module directory: `npm link`
-3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms!
-
-As always, you can run the tests using: `npm test`
diff --git a/assets/node_modules/node-releases/.idea/encodings.xml b/assets/node_modules/node-releases/.idea/encodings.xml
deleted file mode 100644
index 15a15b2..0000000
--- a/assets/node_modules/node-releases/.idea/encodings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="Encoding" addBOMForNewFiles="with NO BOM" />
-</project> \ No newline at end of file
diff --git a/assets/node_modules/node-releases/.idea/inspectionProfiles/Project_Default.xml b/assets/node_modules/node-releases/.idea/inspectionProfiles/Project_Default.xml
deleted file mode 100644
index d5d9f33..0000000
--- a/assets/node_modules/node-releases/.idea/inspectionProfiles/Project_Default.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<component name="InspectionProjectProfileManager">
- <profile version="1.0">
- <option name="myName" value="Project Default" />
- <inspection_tool class="Eslint" enabled="true" level="ERROR" enabled_by_default="true" />
- <inspection_tool class="JSLastCommaInArrayLiteral" enabled="false" level="WARNING" enabled_by_default="false" />
- <inspection_tool class="JSLastCommaInObjectLiteral" enabled="false" level="WARNING" enabled_by_default="false" />
- </profile>
-</component> \ No newline at end of file
diff --git a/assets/node_modules/node-releases/.idea/misc.xml b/assets/node_modules/node-releases/.idea/misc.xml
deleted file mode 100644
index 0ecb5c3..0000000
--- a/assets/node_modules/node-releases/.idea/misc.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="JavaScriptSettings">
- <option name="languageLevel" value="ES6" />
- </component>
- <component name="NodePackageJsonFileManager">
- <packageJsonPaths />
- </component>
-</project> \ No newline at end of file
diff --git a/assets/node_modules/node-releases/.idea/modules.xml b/assets/node_modules/node-releases/.idea/modules.xml
deleted file mode 100644
index d2948ca..0000000
--- a/assets/node_modules/node-releases/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectModuleManager">
- <modules>
- <module fileurl="file://$PROJECT_DIR$/.idea/node-releases.iml" filepath="$PROJECT_DIR$/.idea/node-releases.iml" />
- </modules>
- </component>
-</project> \ No newline at end of file
diff --git a/assets/node_modules/node-releases/.idea/node-releases.iml b/assets/node_modules/node-releases/.idea/node-releases.iml
deleted file mode 100644
index 24643cc..0000000
--- a/assets/node_modules/node-releases/.idea/node-releases.iml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="WEB_MODULE" version="4">
- <component name="NewModuleRootManager">
- <content url="file://$MODULE_DIR$">
- <excludeFolder url="file://$MODULE_DIR$/.tmp" />
- <excludeFolder url="file://$MODULE_DIR$/temp" />
- <excludeFolder url="file://$MODULE_DIR$/tmp" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- </component>
-</module> \ No newline at end of file
diff --git a/assets/node_modules/node-releases/.idea/vcs.xml b/assets/node_modules/node-releases/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/assets/node_modules/node-releases/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="VcsDirectoryMappings">
- <mapping directory="$PROJECT_DIR$" vcs="Git" />
- </component>
-</project> \ No newline at end of file
diff --git a/assets/node_modules/node-releases/.idea/workspace.xml b/assets/node_modules/node-releases/.idea/workspace.xml
deleted file mode 100644
index 77519f1..0000000
--- a/assets/node_modules/node-releases/.idea/workspace.xml
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ChangeListManager">
- <list default="true" id="2adb9df7-dc6f-46a2-94c4-b7e31697fc3d" name="Default Changelist" comment="" />
- <option name="SHOW_DIALOG" value="false" />
- <option name="HIGHLIGHT_CONFLICTS" value="true" />
- <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
- <option name="LAST_RESOLUTION" value="IGNORE" />
- </component>
- <component name="Git.Settings">
- <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
- </component>
- <component name="ProjectId" id="1QuzFWFRAbemMQ0fqkm8OO5TzKe" />
- <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
- <component name="ProjectViewState">
- <option name="hideEmptyMiddlePackages" value="true" />
- <option name="showExcludedFiles" value="true" />
- <option name="showLibraryContents" value="true" />
- </component>
- <component name="PropertiesComponent">
- <property name="WebServerToolWindowFactoryState" value="false" />
- <property name="node.js.detected.package.eslint" value="true" />
- <property name="node.js.detected.package.tslint" value="true" />
- <property name="node.js.path.for.package.eslint" value="project" />
- <property name="node.js.path.for.package.tslint" value="project" />
- <property name="node.js.selected.package.eslint" value="(autodetect)" />
- <property name="node.js.selected.package.tslint" value="(autodetect)" />
- <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
- <property name="nodejs_npm_path_reset_for_default_project" value="true" />
- <property name="nodejs_package_manager_path" value="npm" />
- </component>
- <component name="ServiceViewManager">
- <option name="viewStates">
- <list>
- <serviceView>
- <treeState>
- <expand />
- <select />
- </treeState>
- </serviceView>
- </list>
- </option>
- </component>
- <component name="SvnConfiguration">
- <configuration />
- </component>
- <component name="TaskManager">
- <task active="true" id="Default" summary="Default task">
- <changelist id="2adb9df7-dc6f-46a2-94c4-b7e31697fc3d" name="Default Changelist" comment="" />
- <created>1541196784996</created>
- <option name="number" value="Default" />
- <option name="presentableId" value="Default" />
- <updated>1541196784996</updated>
- <workItem from="1541196786949" duration="636000" />
- <workItem from="1541200851694" duration="598000" />
- <workItem from="1541321954118" duration="43000" />
- <workItem from="1541329259404" duration="199000" />
- <workItem from="1542562588391" duration="109000" />
- <workItem from="1545165877505" duration="634000" />
- <workItem from="1568635167152" duration="1369000" />
- <workItem from="1568808864771" duration="2005000" />
- <workItem from="1569315408847" duration="577000" />
- <workItem from="1569322725908" duration="349000" />
- <workItem from="1569781022246" duration="569000" />
- <workItem from="1574765059873" duration="482000" />
- <workItem from="1574772117340" duration="559000" />
- <workItem from="1574798879704" duration="6000" />
- </task>
- <task id="LOCAL-00001" summary="upd">
- <created>1541196833083</created>
- <option name="number" value="00001" />
- <option name="presentableId" value="LOCAL-00001" />
- <option name="project" value="LOCAL" />
- <updated>1541196833083</updated>
- </task>
- <task id="LOCAL-00002" summary="upd">
- <created>1545165894333</created>
- <option name="number" value="00002" />
- <option name="presentableId" value="LOCAL-00002" />
- <option name="project" value="LOCAL" />
- <updated>1545165894333</updated>
- </task>
- <task id="LOCAL-00003" summary="merge master">
- <created>1568635276140</created>
- <option name="number" value="00003" />
- <option name="presentableId" value="LOCAL-00003" />
- <option name="project" value="LOCAL" />
- <updated>1568635276140</updated>
- </task>
- <task id="LOCAL-00004" summary="merge master">
- <created>1568635494361</created>
- <option name="number" value="00004" />
- <option name="presentableId" value="LOCAL-00004" />
- <option name="project" value="LOCAL" />
- <updated>1568635494361</updated>
- </task>
- <option name="localTasksCounter" value="5" />
- <servers />
- </component>
- <component name="TypeScriptGeneratedFilesManager">
- <option name="version" value="1" />
- </component>
- <component name="Vcs.Log.Tabs.Properties">
- <option name="TAB_STATES">
- <map>
- <entry key="MAIN">
- <value>
- <State>
- <option name="COLUMN_ORDER" />
- </State>
- </value>
- </entry>
- </map>
- </option>
- </component>
- <component name="VcsManagerConfiguration">
- <MESSAGE value="upd" />
- <MESSAGE value="merge master" />
- <option name="LAST_COMMIT_MESSAGE" value="merge master" />
- </component>
-</project> \ No newline at end of file
diff --git a/assets/node_modules/node-releases/LICENSE b/assets/node_modules/node-releases/LICENSE
deleted file mode 100644
index ea39e4f..0000000
--- a/assets/node_modules/node-releases/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/node-releases/README.md b/assets/node_modules/node-releases/README.md
deleted file mode 100644
index f86e52c..0000000
--- a/assets/node_modules/node-releases/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# 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 [browserlist](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/assets/node_modules/node-releases/data/processed/envs.json b/assets/node_modules/node-releases/data/processed/envs.json
deleted file mode 100644
index b7f1e53..0000000
--- a/assets/node_modules/node-releases/data/processed/envs.json
+++ /dev/null
@@ -1,1139 +0,0 @@
-[
- {
- "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": "iojs",
- "version": "1.0.0",
- "date": "2015-01-14"
- },
- {
- "name": "iojs",
- "version": "1.1.0",
- "date": "2015-02-03"
- },
- {
- "name": "iojs",
- "version": "1.2.0",
- "date": "2015-02-11"
- },
- {
- "name": "iojs",
- "version": "1.3.0",
- "date": "2015-02-20"
- },
- {
- "name": "iojs",
- "version": "1.5.0",
- "date": "2015-03-06"
- },
- {
- "name": "iojs",
- "version": "1.6.0",
- "date": "2015-03-20"
- },
- {
- "name": "iojs",
- "version": "2.0.0",
- "date": "2015-05-04"
- },
- {
- "name": "iojs",
- "version": "2.1.0",
- "date": "2015-05-24"
- },
- {
- "name": "iojs",
- "version": "2.2.0",
- "date": "2015-06-01"
- },
- {
- "name": "iojs",
- "version": "2.3.0",
- "date": "2015-06-13"
- },
- {
- "name": "iojs",
- "version": "2.4.0",
- "date": "2015-07-17"
- },
- {
- "name": "iojs",
- "version": "2.5.0",
- "date": "2015-07-28"
- },
- {
- "name": "iojs",
- "version": "3.0.0",
- "date": "2015-08-04"
- },
- {
- "name": "iojs",
- "version": "3.1.0",
- "date": "2015-08-19"
- },
- {
- "name": "iojs",
- "version": "3.2.0",
- "date": "2015-08-25"
- },
- {
- "name": "iojs",
- "version": "3.3.0",
- "date": "2015-09-02"
- },
- {
- "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-21",
- "lts": "Dubnium",
- "security": false
- },
- {
- "name": "nodejs",
- "version": "10.18.0",
- "date": "2019-12-16",
- "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-16",
- "lts": "Erbium",
- "security": true
- },
- {
- "name": "nodejs",
- "version": "13.0.0",
- "date": "2019-10-10",
- "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
- }
-] \ No newline at end of file
diff --git a/assets/node_modules/node-releases/data/raw/iojs.json b/assets/node_modules/node-releases/data/raw/iojs.json
deleted file mode 100644
index 40cddfe..0000000
--- a/assets/node_modules/node-releases/data/raw/iojs.json
+++ /dev/null
@@ -1,43 +0,0 @@
-[
-{"version":"v3.3.1","date":"2015-09-15","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.3","v8":"4.4.63.30","uv":"1.7.4","zlib":"1.2.8","openssl":"1.0.2d","modules":"45"},
-{"version":"v3.3.0","date":"2015-09-02","files":["headers","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.13.3","v8":"4.4.63.30","uv":"1.7.3","zlib":"1.2.8","openssl":"1.0.2d","modules":"45"},
-{"version":"v3.2.0","date":"2015-08-25","files":["headers","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.13.3","v8":"4.4.63.26","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.2d","modules":"45"},
-{"version":"v3.1.0","date":"2015-08-19","files":["headers","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.13.3","v8":"4.4.63.26","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.2d","modules":"45"},
-{"version":"v3.0.0","date":"2015-08-04","files":["headers","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.13.3","v8":"4.4.63.26","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.2d","modules":"45"},
-{"version":"v2.5.0","date":"2015-07-28","files":["headers","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.13.2","v8":"4.2.77.21","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.2d","modules":"44"},
-{"version":"v2.4.0","date":"2015-07-17","files":["headers","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.13.0","v8":"4.2.77.20","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.2d","modules":"44"},
-{"version":"v2.3.4","date":"2015-07-12","files":["headers","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.12.1","v8":"4.2.77.20","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.2d","modules":"44"},
-{"version":"v2.3.3","date":"2015-07-04","files":["headers","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.11.3","v8":"4.2.77.20","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.2c","modules":"44"},
-{"version":"v2.3.2","date":"2015-07-02","files":["headers","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.11.3","v8":"4.2.77.20","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.2c","modules":"44"},
-{"version":"v2.3.1","date":"2015-06-23","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.11.3","v8":"4.2.77.20","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.2c","modules":"44"},
-{"version":"v2.3.0","date":"2015-06-13","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.11.1","v8":"4.2.77.20","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.2c","modules":"44"},
-{"version":"v2.2.1","date":"2015-06-01","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.11.0","v8":"4.2.77.20","uv":"1.5.0","zlib":"1.2.8","openssl":"1.0.2a","modules":"44"},
-{"version":"v2.2.0","date":"2015-06-01","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.11.0","v8":"4.2.77.20","uv":"1.5.0","zlib":"1.2.8","openssl":"1.0.2a","modules":"44"},
-{"version":"v2.1.0","date":"2015-05-24","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.10.1","v8":"4.2.77.20","uv":"1.5.0","zlib":"1.2.8","openssl":"1.0.2a","modules":"44"},
-{"version":"v2.0.2","date":"2015-05-15","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.9.0","v8":"4.2.77.20","uv":"1.5.0","zlib":"1.2.8","openssl":"1.0.2a","modules":"44"},
-{"version":"v2.0.1","date":"2015-05-08","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.9.0","v8":"4.2.77.20","uv":"1.5.0","zlib":"1.2.8","openssl":"1.0.2a","modules":"44"},
-{"version":"v2.0.0","date":"2015-05-04","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.9.0","v8":"4.2.77.18","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.2a","modules":"44"},
-{"version":"v1.8.4","date":"2015-07-12","files":["headers","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.9.0","v8":"4.1.0.27","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.2d","modules":"43"},
-{"version":"v1.8.3","date":"2015-07-04","files":["headers","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.9.0","v8":"4.1.0.27","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.2c","modules":"43"},
-{"version":"v1.8.2","date":"2015-05-18","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.9.0","v8":"4.1.0.27","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.2a","modules":"43"},
-{"version":"v1.8.1","date":"2015-04-21","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.8.3","v8":"4.1.0.27","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.2a","modules":"43"},
-{"version":"v1.7.1","date":"2015-04-17","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.7.6","v8":"4.1.0.27","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1m","modules":"43"},
-{"version":"v1.6.4","date":"2015-04-06","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.7.5","v8":"4.1.0.27","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1m","modules":"43"},
-{"version":"v1.6.3","date":"2015-03-31","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.7.4","v8":"4.1.0.27","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1m","modules":"43"},
-{"version":"v1.6.2","date":"2015-03-23","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.7.1","v8":"4.1.0.25","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1m","modules":"43"},
-{"version":"v1.6.1","date":"2015-03-20","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.7.1","v8":"4.1.0.21","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1m","modules":"43"},
-{"version":"v1.6.0","date":"2015-03-20","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.7.1","v8":"4.1.0.21","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1m","modules":"43"},
-{"version":"v1.5.1","date":"2015-03-09","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.7.0","v8":"4.1.0.21","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1k","modules":"43"},
-{"version":"v1.5.0","date":"2015-03-06","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.7.0","v8":"4.1.0.21","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1k","modules":"43"},
-{"version":"v1.4.3","date":"2015-03-03","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.6.1","v8":"4.1.0.21","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1k","modules":"43"},
-{"version":"v1.4.2","date":"2015-02-28","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.6.1","v8":"4.1.0.21","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1k","modules":"43"},
-{"version":"v1.4.1","date":"2015-02-27","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.6.0","v8":"4.1.0.21","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1k","modules":"43"},
-{"version":"v1.3.0","date":"2015-02-20","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.5.1","v8":"4.1.0.14","uv":"1.4.0","zlib":"1.2.8","openssl":"1.0.1k","modules":"43"},
-{"version":"v1.2.0","date":"2015-02-11","files":["linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.5.1","v8":"4.1.0.14","uv":"1.4.0","zlib":"1.2.8","openssl":"1.0.1k","modules":"43"},
-{"version":"v1.1.0","date":"2015-02-03","files":["linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.4.1","v8":"4.1.0.14","uv":"1.3.0","zlib":"1.2.8","openssl":"1.0.1k","modules":"43"},
-{"version":"v1.0.4","date":"2015-01-24","files":["linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.3.0","v8":"4.1.0.12","uv":"1.2.1","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"},
-{"version":"v1.0.3","date":"2015-01-20","files":["linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.2.0","v8":"4.1.0.7","uv":"1.2.1","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"},
-{"version":"v1.0.2","date":"2015-01-16","files":["linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.1.18","v8":"3.31.74.1","uv":"1.2.1","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"},
-{"version":"v1.0.1","date":"2015-01-14","files":["linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.1.18","v8":"3.31.74.1","uv":"1.2.0","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"},
-{"version":"v1.0.0","date":"2015-01-14","files":["linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.1.18","v8":"3.31.74.1","uv":"1.2.0","zlib":"1.2.8","openssl":"1.0.1k","modules":"42"}
-]
diff --git a/assets/node_modules/node-releases/data/raw/nodejs.json b/assets/node_modules/node-releases/data/raw/nodejs.json
deleted file mode 100644
index c267827..0000000
--- a/assets/node_modules/node-releases/data/raw/nodejs.json
+++ /dev/null
@@ -1,491 +0,0 @@
-[
-{"version":"v13.7.0","date":"2020-01-21","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.6","v8":"7.9.317.25","uv":"1.34.1","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":false},
-{"version":"v13.6.0","date":"2020-01-07","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.4","v8":"7.9.317.25","uv":"1.34.0","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":false},
-{"version":"v13.5.0","date":"2019-12-18","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.4","v8":"7.9.317.25","uv":"1.34.0","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":false},
-{"version":"v13.4.0","date":"2019-12-17","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.4","v8":"7.9.317.25","uv":"1.34.0","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":true},
-{"version":"v13.3.0","date":"2019-12-03","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.1","v8":"7.9.317.25","uv":"1.33.1","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":false},
-{"version":"v13.2.0","date":"2019-11-21","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.1","v8":"7.9.317.23","uv":"1.33.1","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":false},
-{"version":"v13.1.0","date":"2019-11-05","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.12.1","v8":"7.8.279.17","uv":"1.33.1","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":false},
-{"version":"v13.0.1","date":"2019-10-23","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.12.0","v8":"7.8.279.17","uv":"1.33.1","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":false},
-{"version":"v13.0.0","date":"2019-10-10","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.12.0","v8":"7.8.279.17","uv":"1.32.0","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":false},
-{"version":"v12.14.1","date":"2020-01-07","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.4","v8":"7.7.299.13","uv":"1.33.1","zlib":"1.2.11","openssl":"1.1.1d","modules":"72","lts":"Erbium","security":false},
-{"version":"v12.14.0","date":"2019-12-16","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.4","v8":"7.7.299.13","uv":"1.33.1","zlib":"1.2.11","openssl":"1.1.1d","modules":"72","lts":"Erbium","security":true},
-{"version":"v12.13.1","date":"2019-11-19","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.12.1","v8":"7.7.299.13","uv":"1.33.1","zlib":"1.2.11","openssl":"1.1.1d","modules":"72","lts":"Erbium","security":false},
-{"version":"v12.13.0","date":"2019-10-21","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.12.0","v8":"7.7.299.13","uv":"1.32.0","zlib":"1.2.11","openssl":"1.1.1d","modules":"72","lts":"Erbium","security":false},
-{"version":"v12.12.0","date":"2019-10-11","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.11.3","v8":"7.7.299.13","uv":"1.32.0","zlib":"1.2.11","openssl":"1.1.1d","modules":"72","lts":false,"security":false},
-{"version":"v12.11.1","date":"2019-10-01","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.11.3","v8":"7.7.299.11","uv":"1.32.0","zlib":"1.2.11","openssl":"1.1.1c","modules":"72","lts":false,"security":false},
-{"version":"v12.11.0","date":"2019-09-25","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.11.3","v8":"7.7.299.11","uv":"1.32.0","zlib":"1.2.11","openssl":"1.1.1c","modules":"72","lts":false,"security":false},
-{"version":"v12.10.0","date":"2019-09-04","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.10.3","v8":"7.6.303.29","uv":"1.31.0","zlib":"1.2.11","openssl":"1.1.1c","modules":"72","lts":false,"security":false},
-{"version":"v12.9.1","date":"2019-08-26","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.10.2","v8":"7.6.303.29","uv":"1.31.0","zlib":"1.2.11","openssl":"1.1.1c","modules":"72","lts":false,"security":false},
-{"version":"v12.9.0","date":"2019-08-20","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.10.2","v8":"7.6.303.29","uv":"1.31.0","zlib":"1.2.11","openssl":"1.1.1c","modules":"72","lts":false,"security":false},
-{"version":"v12.8.1","date":"2019-08-15","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.10.2","v8":"7.5.288.22","uv":"1.30.1","zlib":"1.2.11","openssl":"1.1.1c","modules":"72","lts":false,"security":true},
-{"version":"v12.8.0","date":"2019-08-06","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.10.2","v8":"7.5.288.22","uv":"1.30.1","zlib":"1.2.11","openssl":"1.1.1c","modules":"72","lts":false,"security":false},
-{"version":"v12.7.0","date":"2019-07-23","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.10.0","v8":"7.5.288.22","uv":"1.30.1","zlib":"1.2.11","openssl":"1.1.1c","modules":"72","lts":false,"security":false},
-{"version":"v12.6.0","date":"2019-07-03","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.9.0","v8":"7.5.288.22","uv":"1.30.1","zlib":"1.2.11","openssl":"1.1.1c","modules":"72","lts":false,"security":false},
-{"version":"v12.5.0","date":"2019-06-26","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.9.0","v8":"7.5.288.22","uv":"1.29.1","zlib":"1.2.11","openssl":"1.1.1c","modules":"72","lts":false,"security":false},
-{"version":"v12.4.0","date":"2019-06-04","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.9.0","v8":"7.4.288.27","uv":"1.29.1","zlib":"1.2.11","openssl":"1.1.1b","modules":"72","lts":false,"security":false},
-{"version":"v12.3.1","date":"2019-05-22","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.9.0","v8":"7.4.288.27","uv":"1.29.1","zlib":"1.2.11","openssl":"1.1.1b","modules":"72","lts":false,"security":false},
-{"version":"v12.3.0","date":"2019-05-21","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.9.0","v8":"7.4.288.27","uv":"1.28.0","zlib":"1.2.11","openssl":"1.1.1b","modules":"72","lts":false,"security":false},
-{"version":"v12.2.0","date":"2019-05-07","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.9.0","v8":"7.4.288.21","uv":"1.28.0","zlib":"1.2.11","openssl":"1.1.1b","modules":"72","lts":false,"security":false},
-{"version":"v12.1.0","date":"2019-04-29","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.9.0","v8":"7.4.288.21","uv":"1.28.0","zlib":"1.2.11","openssl":"1.1.1b","modules":"72","lts":false,"security":false},
-{"version":"v12.0.0","date":"2019-04-23","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.9.0","v8":"7.4.288.21","uv":"1.28.0","zlib":"1.2.11","openssl":"1.1.1b","modules":"72","lts":false,"security":false},
-{"version":"v11.15.0","date":"2019-04-30","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.7.0","v8":"7.0.276.38","uv":"1.27.0","zlib":"1.2.11","openssl":"1.1.1b","modules":"67","lts":false,"security":false},
-{"version":"v11.14.0","date":"2019-04-10","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.7.0","v8":"7.0.276.38","uv":"1.27.0","zlib":"1.2.11","openssl":"1.1.1b","modules":"67","lts":false,"security":false},
-{"version":"v11.13.0","date":"2019-03-28","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.7.0","v8":"7.0.276.38","uv":"1.27.0","zlib":"1.2.11","openssl":"1.1.1b","modules":"67","lts":false,"security":false},
-{"version":"v11.12.0","date":"2019-03-14","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.7.0","v8":"7.0.276.38","uv":"1.26.0","zlib":"1.2.11","openssl":"1.1.1b","modules":"67","lts":false,"security":false},
-{"version":"v11.11.0","date":"2019-03-05","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.7.0","v8":"7.0.276.38","uv":"1.26.0","zlib":"1.2.11","openssl":"1.1.1a","modules":"67","lts":false,"security":false},
-{"version":"v11.10.1","date":"2019-02-28","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.7.0","v8":"7.0.276.38","uv":"1.26.0","zlib":"1.2.11","openssl":"1.1.1a","modules":"67","lts":false,"security":true},
-{"version":"v11.10.0","date":"2019-02-14","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.7.0","v8":"7.0.276.38","uv":"1.26.0","zlib":"1.2.11","openssl":"1.1.1a","modules":"67","lts":false,"security":false},
-{"version":"v11.9.0","date":"2019-01-30","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.5.0","v8":"7.0.276.38","uv":"1.25.0","zlib":"1.2.11","openssl":"1.1.1a","modules":"67","lts":false,"security":false},
-{"version":"v11.8.0","date":"2019-01-24","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.5.0","v8":"7.0.276.38","uv":"1.25.0","zlib":"1.2.11","openssl":"1.1.0j","modules":"67","lts":false,"security":false},
-{"version":"v11.7.0","date":"2019-01-17","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.5.0","v8":"7.0.276.38","uv":"1.24.1","zlib":"1.2.11","openssl":"1.1.0j","modules":"67","lts":false,"security":false},
-{"version":"v11.6.0","date":"2018-12-26","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.5.0-next.0","v8":"7.0.276.38","uv":"1.24.1","zlib":"1.2.11","openssl":"1.1.0j","modules":"67","lts":false,"security":false},
-{"version":"v11.5.0","date":"2018-12-18","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"7.0.276.38","uv":"1.24.0","zlib":"1.2.11","openssl":"1.1.0j","modules":"67","lts":false,"security":false},
-{"version":"v11.4.0","date":"2018-12-07","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"7.0.276.38","uv":"1.24.0","zlib":"1.2.11","openssl":"1.1.0j","modules":"67","lts":false,"security":false},
-{"version":"v11.3.0","date":"2018-11-27","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"7.0.276.38","uv":"1.23.2","zlib":"1.2.11","openssl":"1.1.0j","modules":"67","lts":false,"security":true},
-{"version":"v11.2.0","date":"2018-11-15","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"7.0.276.38","uv":"1.23.2","zlib":"1.2.11","openssl":"1.1.0i","modules":"67","lts":false,"security":false},
-{"version":"v11.1.0","date":"2018-10-30","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"7.0.276.32","uv":"1.23.2","zlib":"1.2.11","openssl":"1.1.0i","modules":"67","lts":false,"security":false},
-{"version":"v11.0.0","date":"2018-10-23","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"7.0.276.28","uv":"1.23.2","zlib":"1.2.11","openssl":"1.1.0i","modules":"67","lts":false,"security":false},
-{"version":"v10.18.1","date":"2020-01-07","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.4","v8":"6.8.275.32","uv":"1.28.0","zlib":"1.2.11","openssl":"1.1.1d","modules":"64","lts":"Dubnium","security":false},
-{"version":"v10.18.0","date":"2019-12-16","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.4","v8":"6.8.275.32","uv":"1.28.0","zlib":"1.2.11","openssl":"1.1.1d","modules":"64","lts":"Dubnium","security":true},
-{"version":"v10.17.0","date":"2019-10-21","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.11.3","v8":"6.8.275.32","uv":"1.28.0","zlib":"1.2.11","openssl":"1.1.1d","modules":"64","lts":"Dubnium","security":false},
-{"version":"v10.16.3","date":"2019-08-15","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.9.0","v8":"6.8.275.32","uv":"1.28.0","zlib":"1.2.11","openssl":"1.1.1c","modules":"64","lts":"Dubnium","security":true},
-{"version":"v10.16.2","date":"2019-08-06","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.9.0","v8":"6.8.275.32","uv":"1.28.0","zlib":"1.2.11","openssl":"1.1.1c","modules":"64","lts":"Dubnium","security":false},
-{"version":"v10.16.1","date":"2019-07-31","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.9.0","v8":"6.8.275.32","uv":"1.28.0","zlib":"1.2.11","openssl":"1.1.1c","modules":"64","lts":"Dubnium","security":false},
-{"version":"v10.16.0","date":"2019-05-28","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.9.0","v8":"6.8.275.32","uv":"1.28.0","zlib":"1.2.11","openssl":"1.1.1b","modules":"64","lts":"Dubnium","security":false},
-{"version":"v10.15.3","date":"2019-03-05","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.8.275.32","uv":"1.23.2","zlib":"1.2.11","openssl":"1.1.0j","modules":"64","lts":"Dubnium","security":false},
-{"version":"v10.15.2","date":"2019-02-28","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.8.275.32","uv":"1.23.2","zlib":"1.2.11","openssl":"1.1.0j","modules":"64","lts":"Dubnium","security":true},
-{"version":"v10.15.1","date":"2019-01-29","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.8.275.32","uv":"1.23.2","zlib":"1.2.11","openssl":"1.1.0j","modules":"64","lts":"Dubnium","security":false},
-{"version":"v10.15.0","date":"2018-12-26","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.8.275.32","uv":"1.23.2","zlib":"1.2.11","openssl":"1.1.0j","modules":"64","lts":"Dubnium","security":false},
-{"version":"v10.14.2","date":"2018-12-10","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.8.275.32","uv":"1.23.2","zlib":"1.2.11","openssl":"1.1.0j","modules":"64","lts":"Dubnium","security":false},
-{"version":"v10.14.1","date":"2018-11-29","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.8.275.32","uv":"1.23.2","zlib":"1.2.11","openssl":"1.1.0j","modules":"64","lts":"Dubnium","security":false},
-{"version":"v10.14.0","date":"2018-11-27","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.8.275.32","uv":"1.23.2","zlib":"1.2.11","openssl":"1.1.0j","modules":"64","lts":"Dubnium","security":true},
-{"version":"v10.13.0","date":"2018-10-30","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.8.275.32","uv":"1.23.2","zlib":"1.2.11","openssl":"1.1.0i","modules":"64","lts":"Dubnium","security":false},
-{"version":"v10.12.0","date":"2018-10-10","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.8.275.32","uv":"1.23.2","zlib":"1.2.11","openssl":"1.1.0i","modules":"64","lts":false,"security":false},
-{"version":"v10.11.0","date":"2018-09-19","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.8.275.32","uv":"1.23.0","zlib":"1.2.11","openssl":"1.1.0i","modules":"64","lts":false,"security":false},
-{"version":"v10.10.0","date":"2018-09-06","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.8.275.30","uv":"1.23.0","zlib":"1.2.11","openssl":"1.1.0i","modules":"64","lts":false,"security":false},
-{"version":"v10.9.0","date":"2018-08-15","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.2.0","v8":"6.8.275.24","uv":"1.22.0","zlib":"1.2.11","openssl":"1.1.0i","modules":"64","lts":false,"security":false},
-{"version":"v10.8.0","date":"2018-08-01","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.2.0","v8":"6.7.288.49","uv":"1.22.0","zlib":"1.2.11","openssl":"1.1.0h","modules":"64","lts":false,"security":false},
-{"version":"v10.7.0","date":"2018-07-18","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.1.0","v8":"6.7.288.49","uv":"1.22.0","zlib":"1.2.11","openssl":"1.1.0h","modules":"64","lts":false,"security":false},
-{"version":"v10.6.0","date":"2018-07-04","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.1.0","v8":"6.7.288.46","uv":"1.21.0","zlib":"1.2.11","openssl":"1.1.0h","modules":"64","lts":false,"security":false},
-{"version":"v10.5.0","date":"2018-06-20","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.1.0","v8":"6.7.288.46","uv":"1.20.3","zlib":"1.2.11","openssl":"1.1.0h","modules":"64","lts":false,"security":false},
-{"version":"v10.4.1","date":"2018-06-12","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.1.0","v8":"6.7.288.45","uv":"1.20.3","zlib":"1.2.11","openssl":"1.1.0h","modules":"64","lts":false,"security":false},
-{"version":"v10.4.0","date":"2018-06-06","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.1.0","v8":"6.7.288.43","uv":"1.20.3","zlib":"1.2.11","openssl":"1.1.0h","modules":"64","lts":false,"security":false},
-{"version":"v10.3.0","date":"2018-05-29","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.1.0","v8":"6.6.346.32","uv":"1.20.3","zlib":"1.2.11","openssl":"1.1.0h","modules":"64","lts":false,"security":false},
-{"version":"v10.2.1","date":"2018-05-24","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.6.346.32","uv":"1.20.3","zlib":"1.2.11","openssl":"1.1.0h","modules":"64","lts":false,"security":false},
-{"version":"v10.2.0","date":"2018-05-23","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.6.346.32","uv":"1.20.3","zlib":"1.2.11","openssl":"1.1.0h","modules":"64","lts":false,"security":false},
-{"version":"v10.1.0","date":"2018-05-08","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.6.346.27","uv":"1.20.2","zlib":"1.2.11","openssl":"1.1.0h","modules":"64","lts":false,"security":false},
-{"version":"v10.0.0","date":"2018-04-24","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.6.346.24","uv":"1.20.2","zlib":"1.2.11","openssl":"1.1.0h","modules":"64","lts":false,"security":false},
-{"version":"v9.11.2","date":"2018-06-12","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.46","uv":"1.19.2","zlib":"1.2.11","openssl":"1.0.2o","modules":"59","lts":false,"security":false},
-{"version":"v9.11.1","date":"2018-04-05","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.46","uv":"1.19.2","zlib":"1.2.11","openssl":"1.0.2o","modules":"59","lts":false,"security":false},
-{"version":"v9.11.0","date":"2018-04-04","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.46","uv":"1.19.2","zlib":"1.2.11","openssl":"1.0.2o","modules":"59","lts":false,"security":false},
-{"version":"v9.10.1","date":"2018-03-29","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.46","uv":"1.19.2","zlib":"1.2.11","openssl":"1.0.2o","modules":"59","lts":false,"security":false},
-{"version":"v9.10.0","date":"2018-03-28","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.46","uv":"1.19.2","zlib":"1.2.11","openssl":"1.0.2o","modules":"59","lts":false,"security":true},
-{"version":"v9.9.0","date":"2018-03-21","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.46","uv":"1.19.2","zlib":"1.2.11","openssl":"1.0.2n","modules":"59","lts":false,"security":false},
-{"version":"v9.8.0","date":"2018-03-07","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.46","uv":"1.19.2","zlib":"1.2.11","openssl":"1.0.2n","modules":"59","lts":false,"security":false},
-{"version":"v9.7.1","date":"2018-03-02","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.46","uv":"1.19.2","zlib":"1.2.11","openssl":"1.0.2n","modules":"59","lts":false,"security":false},
-{"version":"v9.7.0","date":"2018-03-01","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.46","uv":"1.19.2","zlib":"1.2.11","openssl":"1.0.2n","modules":"59","lts":false,"security":false},
-{"version":"v9.6.1","date":"2018-02-23","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.46","uv":"1.19.1","zlib":"1.2.11","openssl":"1.0.2n","modules":"59","lts":false,"security":false},
-{"version":"v9.6.0","date":"2018-02-21","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.46","uv":"1.19.1","zlib":"1.2.11","openssl":"1.0.2n","modules":"59","lts":false,"security":false},
-{"version":"v9.5.0","date":"2018-01-31","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.46","uv":"1.19.1","zlib":"1.2.11","openssl":"1.0.2n","modules":"59","lts":false,"security":false},
-{"version":"v9.4.0","date":"2018-01-10","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.46","uv":"1.18.0","zlib":"1.2.11","openssl":"1.0.2n","modules":"59","lts":false,"security":false},
-{"version":"v9.3.0","date":"2017-12-12","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.5.1","v8":"6.2.414.46","uv":"1.18.0","zlib":"1.2.11","openssl":"1.0.2n","modules":"59","lts":false,"security":false},
-{"version":"v9.2.1","date":"2017-12-08","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.5.1","v8":"6.2.414.44","uv":"1.16.1","zlib":"1.2.11","openssl":"1.0.2n","modules":"59","lts":false,"security":false},
-{"version":"v9.2.0","date":"2017-11-14","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.5.1","v8":"6.2.414.44","uv":"1.16.1","zlib":"1.2.11","openssl":"1.0.2m","modules":"59","lts":false,"security":false},
-{"version":"v9.1.0","date":"2017-11-07","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.5.1","v8":"6.2.414.32","uv":"1.15.0","zlib":"1.2.11","openssl":"1.0.2m","modules":"59","lts":false,"security":false},
-{"version":"v9.0.0","date":"2017-10-31","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.5.1","v8":"6.2.414.32","uv":"1.15.0","zlib":"1.2.11","openssl":"1.0.2l","modules":"59","lts":false,"security":false},
-{"version":"v8.17.0","date":"2019-12-17","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.4","v8":"6.2.414.78","uv":"1.23.2","zlib":"1.2.11","openssl":"1.0.2s","modules":"57","lts":"Carbon","security":true},
-{"version":"v8.16.2","date":"2019-10-08","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.2.414.78","uv":"1.23.2","zlib":"1.2.11","openssl":"1.0.2s","modules":"57","lts":"Carbon","security":false},
-{"version":"v8.16.1","date":"2019-08-15","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.2.414.77","uv":"1.23.2","zlib":"1.2.11","openssl":"1.0.2r","modules":"57","lts":"Carbon","security":true},
-{"version":"v8.16.0","date":"2019-04-16","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.2.414.77","uv":"1.23.2","zlib":"1.2.11","openssl":"1.0.2r","modules":"57","lts":"Carbon","security":false},
-{"version":"v8.15.1","date":"2019-02-28","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.2.414.75","uv":"1.23.2","zlib":"1.2.11","openssl":"1.0.2r","modules":"57","lts":"Carbon","security":true},
-{"version":"v8.15.0","date":"2018-12-26","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.2.414.75","uv":"1.23.2","zlib":"1.2.11","openssl":"1.0.2q","modules":"57","lts":"Carbon","security":false},
-{"version":"v8.14.1","date":"2018-12-18","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.2.414.75","uv":"1.23.2","zlib":"1.2.11","openssl":"1.0.2q","modules":"57","lts":"Carbon","security":false},
-{"version":"v8.14.0","date":"2018-11-27","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.2.414.72","uv":"1.23.2","zlib":"1.2.11","openssl":"1.0.2q","modules":"57","lts":"Carbon","security":true},
-{"version":"v8.13.0","date":"2018-11-20","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.2.414.72","uv":"1.23.2","zlib":"1.2.11","openssl":"1.0.2p","modules":"57","lts":"Carbon","security":false},
-{"version":"v8.12.0","date":"2018-09-10","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.4.1","v8":"6.2.414.66","uv":"1.19.2","zlib":"1.2.11","openssl":"1.0.2p","modules":"57","lts":"Carbon","security":false},
-{"version":"v8.11.4","date":"2018-08-15","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.54","uv":"1.19.1","zlib":"1.2.11","openssl":"1.0.2p","modules":"57","lts":"Carbon","security":true},
-{"version":"v8.11.3","date":"2018-06-12","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.54","uv":"1.19.1","zlib":"1.2.11","openssl":"1.0.2o","modules":"57","lts":"Carbon","security":false},
-{"version":"v8.11.2","date":"2018-05-15","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.54","uv":"1.19.1","zlib":"1.2.11","openssl":"1.0.2o","modules":"57","lts":"Carbon","security":false},
-{"version":"v8.11.1","date":"2018-03-29","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.50","uv":"1.19.1","zlib":"1.2.11","openssl":"1.0.2o","modules":"57","lts":"Carbon","security":false},
-{"version":"v8.11.0","date":"2018-03-28","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.50","uv":"1.19.1","zlib":"1.2.11","openssl":"1.0.2o","modules":"57","lts":"Carbon","security":true},
-{"version":"v8.10.0","date":"2018-03-06","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.2.414.50","uv":"1.19.1","zlib":"1.2.11","openssl":"1.0.2n","modules":"57","lts":"Carbon","security":false},
-{"version":"v8.9.4","date":"2018-01-02","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.6.0","v8":"6.1.534.50","uv":"1.15.0","zlib":"1.2.11","openssl":"1.0.2n","modules":"57","lts":"Carbon","security":false},
-{"version":"v8.9.3","date":"2017-12-07","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.5.1","v8":"6.1.534.48","uv":"1.15.0","zlib":"1.2.11","openssl":"1.0.2n","modules":"57","lts":"Carbon","security":true},
-{"version":"v8.9.2","date":"2017-12-05","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.5.1","v8":"6.1.534.48","uv":"1.15.0","zlib":"1.2.11","openssl":"1.0.2m","modules":"57","lts":"Carbon","security":false},
-{"version":"v8.9.1","date":"2017-11-07","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.5.1","v8":"6.1.534.47","uv":"1.15.0","zlib":"1.2.11","openssl":"1.0.2m","modules":"57","lts":"Carbon","security":false},
-{"version":"v8.9.0","date":"2017-10-31","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.5.1","v8":"6.1.534.46","uv":"1.15.0","zlib":"1.2.11","openssl":"1.0.2l","modules":"57","lts":"Carbon","security":false},
-{"version":"v8.8.1","date":"2017-10-25","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.4.2","v8":"6.1.534.42","uv":"1.15.0","zlib":"1.2.11","openssl":"1.0.2l","modules":"57","lts":false,"security":false},
-{"version":"v8.8.0","date":"2017-10-24","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.4.2","v8":"6.1.534.42","uv":"1.15.0","zlib":"1.2.11","openssl":"1.0.2l","modules":"57","lts":false,"security":false},
-{"version":"v8.7.0","date":"2017-10-11","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.4.2","v8":"6.1.534.42","uv":"1.15.0","zlib":"1.2.11","openssl":"1.0.2l","modules":"57","lts":false,"security":false},
-{"version":"v8.6.0","date":"2017-09-26","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.3.0","v8":"6.0.287.53","uv":"1.14.1","zlib":"1.2.11","openssl":"1.0.2l","modules":"57","lts":false,"security":false},
-{"version":"v8.5.0","date":"2017-09-12","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.3.0","v8":"6.0.287.53","uv":"1.14.1","zlib":"1.2.11","openssl":"1.0.2l","modules":"57","lts":false,"security":false},
-{"version":"v8.4.0","date":"2017-08-15","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.3.0","v8":"6.0.286.52","uv":"1.13.1","zlib":"1.2.11","openssl":"1.0.2l","modules":"57","lts":false,"security":false},
-{"version":"v8.3.0","date":"2017-08-08","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.3.0","v8":"6.0.286.52","uv":"1.13.1","zlib":"1.2.11","openssl":"1.0.2l","modules":"57","lts":false,"security":false},
-{"version":"v8.2.1","date":"2017-07-20","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.3.0","v8":"5.8.283.41","uv":"1.13.1","zlib":"1.2.11","openssl":"1.0.2l","modules":"57","lts":false,"security":false},
-{"version":"v8.2.0","date":"2017-07-19","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.3.0","v8":"5.8.283.41","uv":"1.13.1","zlib":"1.2.11","openssl":"1.0.2l","modules":"57","lts":false,"security":false},
-{"version":"v8.1.4","date":"2017-07-11","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.0.3","v8":"5.8.283.41","uv":"1.12.0","zlib":"1.2.11","openssl":"1.0.2l","modules":"57","lts":false,"security":true},
-{"version":"v8.1.3","date":"2017-06-29","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.0.3","v8":"5.8.283.41","uv":"1.12.0","zlib":"1.2.11","openssl":"1.0.2l","modules":"57","lts":false,"security":false},
-{"version":"v8.1.2","date":"2017-06-15","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.0.3","v8":"5.8.283.41","uv":"1.12.0","zlib":"1.2.11","openssl":"1.0.2l","modules":"57","lts":false,"security":false},
-{"version":"v8.1.1","date":"2017-06-13","files":["aix-ppc64","headers","linux-arm64","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.0.3","v8":"5.8.283.41","uv":"1.12.0","zlib":"1.2.11","openssl":"1.0.2l","modules":"57","lts":false,"security":false},
-{"version":"v8.1.0","date":"2017-06-08","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.0.3","v8":"5.8.283.41","uv":"1.12.0","zlib":"1.2.11","openssl":"1.0.2l","modules":"57","lts":false,"security":false},
-{"version":"v8.0.0","date":"2017-05-30","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"5.0.0","v8":"5.8.283.41","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2k","modules":"57","lts":false,"security":false},
-{"version":"v7.10.1","date":"2017-07-11","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"4.2.0","v8":"5.5.372.43","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2k","modules":"51","lts":false,"security":true},
-{"version":"v7.10.0","date":"2017-05-02","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"4.2.0","v8":"5.5.372.43","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2k","modules":"51","lts":false,"security":false},
-{"version":"v7.9.0","date":"2017-04-11","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"4.2.0","v8":"5.5.372.43","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2k","modules":"51","lts":false,"security":false},
-{"version":"v7.8.0","date":"2017-03-29","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"4.2.0","v8":"5.5.372.43","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2k","modules":"51","lts":false,"security":false},
-{"version":"v7.7.4","date":"2017-03-21","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"4.1.2","v8":"5.5.372.42","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2k","modules":"51","lts":false,"security":false},
-{"version":"v7.7.3","date":"2017-03-14","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"4.1.2","v8":"5.5.372.41","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2k","modules":"51","lts":false,"security":false},
-{"version":"v7.7.2","date":"2017-03-08","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"4.1.2","v8":"5.5.372.41","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2k","modules":"51","lts":false,"security":false},
-{"version":"v7.7.1","date":"2017-03-02","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"4.1.2","v8":"5.5.372.41","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2k","modules":"51","lts":false,"security":false},
-{"version":"v7.7.0","date":"2017-02-28","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"4.1.2","v8":"5.5.372.41","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2k","modules":"51","lts":false,"security":false},
-{"version":"v7.6.0","date":"2017-02-21","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"4.1.2","v8":"5.5.372.40","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2k","modules":"51","lts":false,"security":false},
-{"version":"v7.5.0","date":"2017-01-31","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"4.1.2","v8":"5.4.500.48","uv":"1.10.2","zlib":"1.2.8","openssl":"1.0.2k","modules":"51","lts":false,"security":false},
-{"version":"v7.4.0","date":"2017-01-04","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"4.0.5","v8":"5.4.500.45","uv":"1.10.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"51","lts":false,"security":false},
-{"version":"v7.3.0","date":"2016-12-20","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.4.500.45","uv":"1.10.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"51","lts":false,"security":false},
-{"version":"v7.2.1","date":"2016-12-06","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.4.500.44","uv":"1.10.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"51","lts":false,"security":false},
-{"version":"v7.2.0","date":"2016-11-22","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.9","v8":"5.4.500.43","uv":"1.10.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"51","lts":false,"security":false},
-{"version":"v7.1.0","date":"2016-11-08","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.9","v8":"5.4.500.36","uv":"1.10.0","zlib":"1.2.8","openssl":"1.0.2j","modules":"51","lts":false,"security":false},
-{"version":"v7.0.0","date":"2016-10-25","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.8","v8":"5.4.500.36","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"51","lts":false,"security":false},
-{"version":"v6.17.1","date":"2019-04-03","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.111","uv":"1.16.1","zlib":"1.2.11","openssl":"1.0.2r","modules":"48","lts":"Boron","security":false},
-{"version":"v6.17.0","date":"2019-02-28","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.111","uv":"1.16.1","zlib":"1.2.11","openssl":"1.0.2r","modules":"48","lts":"Boron","security":true},
-{"version":"v6.16.0","date":"2018-12-26","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.111","uv":"1.16.1","zlib":"1.2.11","openssl":"1.0.2q","modules":"48","lts":"Boron","security":false},
-{"version":"v6.15.1","date":"2018-12-03","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.111","uv":"1.16.1","zlib":"1.2.11","openssl":"1.0.2q","modules":"48","lts":"Boron","security":false},
-{"version":"v6.15.0","date":"2018-11-27","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.111","uv":"1.16.1","zlib":"1.2.11","openssl":"1.0.2q","modules":"48","lts":"Boron","security":true},
-{"version":"v6.14.4","date":"2018-08-15","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.111","uv":"1.16.1","zlib":"1.2.11","openssl":"1.0.2p","modules":"48","lts":"Boron","security":true},
-{"version":"v6.14.3","date":"2018-06-12","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.111","uv":"1.16.1","zlib":"1.2.11","openssl":"1.0.2o","modules":"48","lts":"Boron","security":false},
-{"version":"v6.14.2","date":"2018-04-30","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.111","uv":"1.16.1","zlib":"1.2.11","openssl":"1.0.2o","modules":"48","lts":"Boron","security":false},
-{"version":"v6.14.1","date":"2018-03-29","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.111","uv":"1.16.1","zlib":"1.2.11","openssl":"1.0.2o","modules":"48","lts":"Boron","security":false},
-{"version":"v6.14.0","date":"2018-03-28","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.111","uv":"1.16.1","zlib":"1.2.11","openssl":"1.0.2o","modules":"48","lts":"Boron","security":true},
-{"version":"v6.13.1","date":"2018-03-06","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.111","uv":"1.16.1","zlib":"1.2.11","openssl":"1.0.2n","modules":"48","lts":"Boron","security":false},
-{"version":"v6.13.0","date":"2018-02-10","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.111","uv":"1.16.1","zlib":"1.2.11","openssl":"1.0.2n","modules":"48","lts":"Boron","security":false},
-{"version":"v6.12.3","date":"2018-01-02","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.111","uv":"1.15.0","zlib":"1.2.11","openssl":"1.0.2n","modules":"48","lts":"Boron","security":false},
-{"version":"v6.12.2","date":"2017-12-07","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.109","uv":"1.15.0","zlib":"1.2.11","openssl":"1.0.2n","modules":"48","lts":"Boron","security":true},
-{"version":"v6.12.1","date":"2017-12-05","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.109","uv":"1.15.0","zlib":"1.2.11","openssl":"1.0.2m","modules":"48","lts":"Boron","security":false},
-{"version":"v6.12.0","date":"2017-11-06","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.108","uv":"1.15.0","zlib":"1.2.11","openssl":"1.0.2m","modules":"48","lts":"Boron","security":false},
-{"version":"v6.11.5","date":"2017-10-24","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.108","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2l","modules":"48","lts":"Boron","security":true},
-{"version":"v6.11.4","date":"2017-10-03","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.108","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2l","modules":"48","lts":"Boron","security":false},
-{"version":"v6.11.3","date":"2017-09-05","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.107","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2l","modules":"48","lts":"Boron","security":false},
-{"version":"v6.11.2","date":"2017-08-01","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.103","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2l","modules":"48","lts":"Boron","security":false},
-{"version":"v6.11.1","date":"2017-07-10","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.103","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2k","modules":"48","lts":"Boron","security":true},
-{"version":"v6.11.0","date":"2017-06-06","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.102","uv":"1.11.0","zlib":"1.2.11","openssl":"1.0.2k","modules":"48","lts":"Boron","security":false},
-{"version":"v6.10.3","date":"2017-05-02","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.101","uv":"1.9.1","zlib":"1.2.11","openssl":"1.0.2k","modules":"48","lts":"Boron","security":false},
-{"version":"v6.10.2","date":"2017-04-04","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.98","uv":"1.9.1","zlib":"1.2.11","openssl":"1.0.2k","modules":"48","lts":"Boron","security":false},
-{"version":"v6.10.1","date":"2017-03-21","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.95","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2k","modules":"48","lts":"Boron","security":false},
-{"version":"v6.10.0","date":"2017-02-21","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.93","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2k","modules":"48","lts":"Boron","security":false},
-{"version":"v6.9.5","date":"2017-01-31","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.89","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2k","modules":"48","lts":"Boron","security":false},
-{"version":"v6.9.4","date":"2017-01-05","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.89","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"48","lts":"Boron","security":false},
-{"version":"v6.9.3","date":"2017-01-05","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.10","v8":"5.1.281.89","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"48","lts":"Boron","security":false},
-{"version":"v6.9.2","date":"2016-12-06","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.9","v8":"5.1.281.88","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"48","lts":"Boron","security":false},
-{"version":"v6.9.1","date":"2016-10-19","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.8","v8":"5.1.281.84","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"48","lts":"Boron","security":false},
-{"version":"v6.9.0","date":"2016-10-18","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.8","v8":"5.1.281.84","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"48","lts":"Boron","security":false},
-{"version":"v6.8.1","date":"2016-10-14","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.8","v8":"5.1.281.84","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"48","lts":false,"security":false},
-{"version":"v6.8.0","date":"2016-10-12","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.8","v8":"5.1.281.84","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"48","lts":false,"security":false},
-{"version":"v6.7.0","date":"2016-09-27","files":["aix-ppc64","headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.3","v8":"5.1.281.83","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"48","lts":false,"security":true},
-{"version":"v6.6.0","date":"2016-09-14","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.3","v8":"5.1.281.83","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2h","modules":"48","lts":false,"security":false},
-{"version":"v6.5.0","date":"2016-08-26","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.3","v8":"5.1.281.81","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2h","modules":"48","lts":false,"security":false},
-{"version":"v6.4.0","date":"2016-08-12","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.3","v8":"5.0.71.60","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2h","modules":"48","lts":false,"security":false},
-{"version":"v6.3.1","date":"2016-07-21","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.3","v8":"5.0.71.57","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2h","modules":"48","lts":false,"security":false},
-{"version":"v6.3.0","date":"2016-07-06","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.10.3","v8":"5.0.71.52","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2h","modules":"48","lts":false,"security":false},
-{"version":"v6.2.2","date":"2016-06-16","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.9.5","v8":"5.0.71.52","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2h","modules":"48","lts":false,"security":false},
-{"version":"v6.2.1","date":"2016-06-02","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"3.9.3","v8":"5.0.71.52","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2h","modules":"48","lts":false,"security":false},
-{"version":"v6.2.0","date":"2016-05-17","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.8.9","v8":"5.0.71.47","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2h","modules":"48","lts":false,"security":false},
-{"version":"v6.1.0","date":"2016-05-05","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.8.6","v8":"5.0.71.35","uv":"1.9.0","zlib":"1.2.8","openssl":"1.0.2h","modules":"48","lts":false,"security":false},
-{"version":"v6.0.0","date":"2016-04-26","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.8.6","v8":"5.0.71.35","uv":"1.9.0","zlib":"1.2.8","openssl":"1.0.2g","modules":"48","lts":false,"security":false},
-{"version":"v5.12.0","date":"2016-06-23","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.8.6","v8":"4.6.85.32","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2h","modules":"47","lts":false,"security":false},
-{"version":"v5.11.1","date":"2016-05-05","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.8.6","v8":"4.6.85.31","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2h","modules":"47","lts":false,"security":false},
-{"version":"v5.11.0","date":"2016-04-21","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.8.6","v8":"4.6.85.31","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2g","modules":"47","lts":false,"security":false},
-{"version":"v5.10.1","date":"2016-04-05","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.8.3","v8":"4.6.85.31","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2g","modules":"47","lts":false,"security":false},
-{"version":"v5.10.0","date":"2016-04-01","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.8.3","v8":"4.6.85.31","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2g","modules":"47","lts":false,"security":false},
-{"version":"v5.9.1","date":"2016-03-22","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.7.3","v8":"4.6.85.31","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2g","modules":"47","lts":false,"security":false},
-{"version":"v5.9.0","date":"2016-03-16","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.7.3","v8":"4.6.85.31","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2g","modules":"47","lts":false,"security":false},
-{"version":"v5.8.0","date":"2016-03-09","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.7.3","v8":"4.6.85.31","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2g","modules":"47","lts":false,"security":false},
-{"version":"v5.7.1","date":"2016-03-02","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.6.0","v8":"4.6.85.31","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2g","modules":"47","lts":false,"security":false},
-{"version":"v5.7.0","date":"2016-02-23","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.6.0","v8":"4.6.85.31","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2f","modules":"47","lts":false,"security":false},
-{"version":"v5.6.0","date":"2016-02-09","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.6.0","v8":"4.6.85.31","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2f","modules":"47","lts":false,"security":false},
-{"version":"v5.5.0","date":"2016-01-21","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.3.12","v8":"4.6.85.31","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2e","modules":"47","lts":false,"security":false},
-{"version":"v5.4.1","date":"2016-01-12","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.3.12","v8":"4.6.85.31","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2e","modules":"47","lts":false,"security":false},
-{"version":"v5.4.0","date":"2016-01-06","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.3.12","v8":"4.6.85.31","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2e","modules":"47","lts":false,"security":false},
-{"version":"v5.3.0","date":"2015-12-15","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.3.12","v8":"4.6.85.31","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2e","modules":"47","lts":false,"security":false},
-{"version":"v5.2.0","date":"2015-12-09","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.3.12","v8":"4.6.85.31","uv":"1.7.5","zlib":"1.2.8","openssl":"1.0.2e","modules":"47","lts":false,"security":false},
-{"version":"v5.1.1","date":"2015-12-03","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.3.12","v8":"4.6.85.31","uv":"1.7.5","zlib":"1.2.8","openssl":"1.0.2e","modules":"47","lts":false,"security":false},
-{"version":"v5.1.0","date":"2015-11-17","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.3.12","v8":"4.6.85.31","uv":"1.7.5","zlib":"1.2.8","openssl":"1.0.2d","modules":"47","lts":false,"security":false},
-{"version":"v5.0.0","date":"2015-10-29","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"3.3.6","v8":"4.6.85.28","uv":"1.7.5","zlib":"1.2.8","openssl":"1.0.2d","modules":"47","lts":false,"security":false},
-{"version":"v4.9.1","date":"2018-03-29","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.11","v8":"4.5.103.53","uv":"1.9.1","zlib":"1.2.11","openssl":"1.0.2o","modules":"46","lts":"Argon","security":false},
-{"version":"v4.9.0","date":"2018-03-28","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.11","v8":"4.5.103.53","uv":"1.9.1","zlib":"1.2.11","openssl":"1.0.2o","modules":"46","lts":"Argon","security":true},
-{"version":"v4.8.7","date":"2017-12-07","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.11","v8":"4.5.103.53","uv":"1.9.1","zlib":"1.2.11","openssl":"1.0.2n","modules":"46","lts":"Argon","security":true},
-{"version":"v4.8.6","date":"2017-11-06","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.11","v8":"4.5.103.53","uv":"1.9.1","zlib":"1.2.11","openssl":"1.0.2m","modules":"46","lts":"Argon","security":false},
-{"version":"v4.8.5","date":"2017-10-24","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.11","v8":"4.5.103.47","uv":"1.9.1","zlib":"1.2.11","openssl":"1.0.2k","modules":"46","lts":"Argon","security":true},
-{"version":"v4.8.4","date":"2017-07-11","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.11","v8":"4.5.103.47","uv":"1.9.1","zlib":"1.2.11","openssl":"1.0.2k","modules":"46","lts":"Argon","security":true},
-{"version":"v4.8.3","date":"2017-05-02","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.11","v8":"4.5.103.47","uv":"1.9.1","zlib":"1.2.11","openssl":"1.0.2k","modules":"46","lts":"Argon","security":false},
-{"version":"v4.8.2","date":"2017-04-04","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.11","v8":"4.5.103.46","uv":"1.9.1","zlib":"1.2.11","openssl":"1.0.2k","modules":"46","lts":"Argon","security":false},
-{"version":"v4.8.1","date":"2017-03-21","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.11","v8":"4.5.103.46","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2k","modules":"46","lts":"Argon","security":false},
-{"version":"v4.8.0","date":"2017-02-21","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.11","v8":"4.5.103.45","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2k","modules":"46","lts":"Argon","security":false},
-{"version":"v4.7.3","date":"2017-01-31","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.11","v8":"4.5.103.43","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2k","modules":"46","lts":"Argon","security":false},
-{"version":"v4.7.2","date":"2017-01-05","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.11","v8":"4.5.103.43","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"46","lts":"Argon","security":false},
-{"version":"v4.7.1","date":"2017-01-05","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.11","v8":"4.5.103.43","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"46","lts":"Argon","security":false},
-{"version":"v4.7.0","date":"2016-12-06","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.11","v8":"4.5.103.43","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"46","lts":"Argon","security":false},
-{"version":"v4.6.2","date":"2016-11-08","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.11","v8":"4.5.103.42","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"46","lts":"Argon","security":false},
-{"version":"v4.6.1","date":"2016-10-18","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.9","v8":"4.5.103.37","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"46","lts":"Argon","security":true},
-{"version":"v4.6.0","date":"2016-09-27","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.9","v8":"4.5.103.37","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2j","modules":"46","lts":"Argon","security":true},
-{"version":"v4.5.0","date":"2016-08-16","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"2.15.9","v8":"4.5.103.37","uv":"1.9.1","zlib":"1.2.8","openssl":"1.0.2h","modules":"46","lts":"Argon","security":false},
-{"version":"v4.4.7","date":"2016-06-28","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.15.8","v8":"4.5.103.36","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2h","modules":"46","lts":"Argon","security":false},
-{"version":"v4.4.6","date":"2016-06-23","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.15.5","v8":"4.5.103.36","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2h","modules":"46","lts":"Argon","security":false},
-{"version":"v4.4.5","date":"2016-05-24","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.15.5","v8":"4.5.103.35","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2h","modules":"46","lts":"Argon","security":false},
-{"version":"v4.4.4","date":"2016-05-05","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.15.1","v8":"4.5.103.35","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2h","modules":"46","lts":"Argon","security":false},
-{"version":"v4.4.3","date":"2016-04-12","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.15.1","v8":"4.5.103.35","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2g","modules":"46","lts":"Argon","security":false},
-{"version":"v4.4.2","date":"2016-04-01","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.15.0","v8":"4.5.103.35","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2g","modules":"46","lts":"Argon","security":false},
-{"version":"v4.4.1","date":"2016-03-22","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.20","v8":"4.5.103.35","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2g","modules":"46","lts":"Argon","security":false},
-{"version":"v4.4.0","date":"2016-03-08","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.20","v8":"4.5.103.35","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2g","modules":"46","lts":"Argon","security":false},
-{"version":"v4.3.2","date":"2016-03-02","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-ppc64le","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.12","v8":"4.5.103.35","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2g","modules":"46","lts":"Argon","security":false},
-{"version":"v4.3.1","date":"2016-02-16","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.12","v8":"4.5.103.35","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2f","modules":"46","lts":"Argon","security":false},
-{"version":"v4.3.0","date":"2016-02-09","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.12","v8":"4.5.103.35","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2f","modules":"46","lts":"Argon","security":false},
-{"version":"v4.2.6","date":"2016-01-21","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.12","v8":"4.5.103.35","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2e","modules":"46","lts":"Argon","security":false},
-{"version":"v4.2.5","date":"2016-01-20","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.12","v8":"4.5.103.35","uv":"1.8.0","zlib":"1.2.8","openssl":"1.0.2e","modules":"46","lts":"Argon","security":false},
-{"version":"v4.2.4","date":"2015-12-23","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.12","v8":"4.5.103.35","uv":"1.7.5","zlib":"1.2.8","openssl":"1.0.2e","modules":"46","lts":"Argon","security":false},
-{"version":"v4.2.3","date":"2015-12-03","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.7","v8":"4.5.103.35","uv":"1.7.5","zlib":"1.2.8","openssl":"1.0.2e","modules":"46","lts":"Argon","security":false},
-{"version":"v4.2.2","date":"2015-11-03","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.7","v8":"4.5.103.35","uv":"1.7.5","zlib":"1.2.8","openssl":"1.0.2d","modules":"46","lts":"Argon","security":false},
-{"version":"v4.2.1","date":"2015-10-13","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.7","v8":"4.5.103.35","uv":"1.7.5","zlib":"1.2.8","openssl":"1.0.2d","modules":"46","lts":"Argon","security":false},
-{"version":"v4.2.0","date":"2015-10-12","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.7","v8":"4.5.103.35","uv":"1.7.5","zlib":"1.2.8","openssl":"1.0.2d","modules":"46","lts":"Argon","security":false},
-{"version":"v4.1.2","date":"2015-10-05","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.4","v8":"4.5.103.35","uv":"1.7.5","zlib":"1.2.8","openssl":"1.0.2d","modules":"46","lts":false,"security":false},
-{"version":"v4.1.1","date":"2015-09-23","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.4","v8":"4.5.103.33","uv":"1.7.4","zlib":"1.2.8","openssl":"1.0.2d","modules":"46","lts":false,"security":false},
-{"version":"v4.1.0","date":"2015-09-17","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.3","v8":"4.5.103.33","uv":"1.7.4","zlib":"1.2.8","openssl":"1.0.2d","modules":"46","lts":false,"security":false},
-{"version":"v4.0.0","date":"2015-09-08","files":["headers","linux-arm64","linux-armv6l","linux-armv7l","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"2.14.2","v8":"4.5.103.30","uv":"1.7.3","zlib":"1.2.8","openssl":"1.0.2d","modules":"46","lts":false,"security":false},
-{"version":"v0.12.18","date":"2017-02-22","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.15.11","v8":"3.28.71.20","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.1u","modules":"14","lts":false,"security":false},
-{"version":"v0.12.17","date":"2016-10-18","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.15.1","v8":"3.28.71.19","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.1u","modules":"14","lts":false,"security":true},
-{"version":"v0.12.16","date":"2016-09-27","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.15.1","v8":"3.28.71.19","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.1u","modules":"14","lts":false,"security":true},
-{"version":"v0.12.15","date":"2016-06-23","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.15.1","v8":"3.28.71.19","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.1t","modules":"14","lts":false,"security":true},
-{"version":"v0.12.14","date":"2016-05-06","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.15.1","v8":"3.28.71.19","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.1t","modules":"14","lts":false,"security":false},
-{"version":"v0.12.13","date":"2016-03-31","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.15.0","v8":"3.28.71.19","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.1s","modules":"14","lts":false,"security":false},
-{"version":"v0.12.12","date":"2016-03-08","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.14.9","v8":"3.28.71.19","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.1s","modules":"14","lts":false,"security":false},
-{"version":"v0.12.11","date":"2016-03-03","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.14.9","v8":"3.28.71.19","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.1s","modules":"14","lts":false,"security":false},
-{"version":"v0.12.10","date":"2016-02-09","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.14.9","v8":"3.28.71.19","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.1r","modules":"14","lts":false,"security":false},
-{"version":"v0.12.9","date":"2015-12-03","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.14.9","v8":"3.28.71.19","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.1q","modules":"14","lts":false,"security":false},
-{"version":"v0.12.8","date":"2015-11-24","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.14.9","v8":"3.28.71.19","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.1p","modules":"14","lts":false,"security":false},
-{"version":"v0.12.7","date":"2015-07-09","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.11.3","v8":"3.28.71.19","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.1p","modules":"14","lts":false,"security":false},
-{"version":"v0.12.6","date":"2015-07-04","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.11.2","v8":"3.28.71.19","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.1o","modules":"14","lts":false,"security":false},
-{"version":"v0.12.5","date":"2015-06-22","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.11.2","v8":"3.28.71.19","uv":"1.6.1","zlib":"1.2.8","openssl":"1.0.1o","modules":"14","lts":false,"security":false},
-{"version":"v0.12.4","date":"2015-05-23","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.10.1","v8":"3.28.71.19","uv":"1.5.0","zlib":"1.2.8","openssl":"1.0.1m","modules":"14","lts":false,"security":false},
-{"version":"v0.12.3","date":"2015-05-14","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.9.1","v8":"3.28.71.19","uv":"1.5.0","zlib":"1.2.8","openssl":"1.0.1m","modules":"14","lts":false,"security":false},
-{"version":"v0.12.2","date":"2015-03-31","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.7.4","v8":"3.28.73.0","uv":"1.4.2","zlib":"1.2.8","openssl":"1.0.1m","modules":"14","lts":false,"security":false},
-{"version":"v0.12.1","date":"2015-03-24","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.5.1","v8":"3.28.73.0","uv":"1.0.2","zlib":"1.2.8","openssl":"1.0.1m","modules":"14","lts":false,"security":false},
-{"version":"v0.12.0","date":"2015-02-06","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.5.1","v8":"3.28.73.0","uv":"1.0.2","zlib":"1.2.8","openssl":"1.0.1l","modules":"14","lts":false,"security":false},
-{"version":"v0.11.16","date":"2015-01-30","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.3.0","v8":"3.28.73.0","uv":"1.0.2","zlib":"1.2.8","openssl":"1.0.1l","modules":"14","lts":false,"security":false},
-{"version":"v0.11.15","date":"2015-01-20","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.1.6","v8":"3.28.73.0","uv":"1.0.2","zlib":"1.2.8","openssl":"1.0.1j","modules":"14","lts":false,"security":false},
-{"version":"v0.11.14","date":"2014-08-19","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.0.0","v8":"3.26.33.0","uv":"1.0.0","zlib":"1.2.3","openssl":"1.0.1i","modules":"14","lts":false,"security":false},
-{"version":"v0.11.13","date":"2014-05-02","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.9","v8":"3.25.30.0","uv":"0.11.25","zlib":"1.2.3","openssl":"1.0.1g","modules":"14","lts":false,"security":false},
-{"version":"v0.11.12","date":"2014-03-11","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.3","v8":"3.22.24.19","uv":"0.11.22","zlib":"1.2.3","openssl":"1.0.1f","modules":"14","lts":false,"security":false},
-{"version":"v0.11.11","date":"2014-01-29","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.25","v8":"3.22.24.19","uv":"0.11.18","zlib":"1.2.3","openssl":"1.0.1f","modules":"14","lts":false,"security":false},
-{"version":"v0.11.10","date":"2013-12-31","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.22","v8":"3.22.24.10","uv":"0.11.17","zlib":"1.2.3","openssl":"1.0.1e","modules":"13","lts":false,"security":false},
-{"version":"v0.11.9","date":"2013-11-21","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.15","v8":"3.22.24.5","uv":"0.11.15","zlib":"1.2.3","openssl":"1.0.1e","modules":"13","lts":false,"security":false},
-{"version":"v0.11.8","date":"2013-10-30","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.13","v8":"3.21.18.3","uv":"0.11.14","zlib":"1.2.3","openssl":"1.0.1e","modules":"13","lts":false,"security":false},
-{"version":"v0.11.7","date":"2013-09-04","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.8","v8":"3.20.17.0","uv":"0.11.13","zlib":"1.2.3","openssl":"1.0.1e","modules":"0x000C","lts":false,"security":false},
-{"version":"v0.11.6","date":"2013-08-21","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x86-msi"],"npm":"1.3.8","v8":"3.20.14.1","uv":"0.11.8","zlib":"1.2.3","openssl":"1.0.1e","modules":"0x000C","lts":false,"security":false},
-{"version":"v0.11.5","date":"2013-08-07","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.6","v8":"3.20.11.0","uv":"0.11.7","zlib":"1.2.3","openssl":"1.0.1e","modules":"0x000C","lts":false,"security":false},
-{"version":"v0.11.4","date":"2013-07-12","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x86-msi"],"npm":"1.3.4","v8":"3.20.2.0","uv":"0.11.5","zlib":"1.2.3","openssl":"1.0.1e","modules":"0x000C","lts":false,"security":false},
-{"version":"v0.11.3","date":"2013-06-26","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.25","v8":"3.19.13.0","uv":"0.11.5","zlib":"1.2.3","openssl":"1.0.1e","modules":"0x000C","lts":false,"security":false},
-{"version":"v0.11.2","date":"2013-05-13","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.21","v8":"3.19.0.0","uv":"0.11.2","zlib":"1.2.3","openssl":"1.0.1e","modules":"0x000C","lts":false,"security":false},
-{"version":"v0.11.1","date":"2013-04-19","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.18","v8":"3.18.0.0","uv":"0.11.1","zlib":"1.2.3","openssl":"1.0.1e","modules":"0x000C","lts":false,"security":false},
-{"version":"v0.11.0","date":"2013-03-28","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.15","v8":"3.17.13.0","uv":"0.10.3","zlib":"1.2.3","openssl":"1.0.1e","modules":"0x000C","lts":false,"security":false},
-{"version":"v0.10.48","date":"2016-10-18","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.15.1","v8":"3.14.5.11","uv":"0.10.37","zlib":"1.2.8","openssl":"1.0.1u","modules":"11","lts":false,"security":true},
-{"version":"v0.10.47","date":"2016-09-27","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.15.1","v8":"3.14.5.11","uv":"0.10.37","zlib":"1.2.8","openssl":"1.0.1u","modules":"11","lts":false,"security":true},
-{"version":"v0.10.46","date":"2016-06-23","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.15.1","v8":"3.14.5.9","uv":"0.10.37","zlib":"1.2.8","openssl":"1.0.1t","modules":"11","lts":false,"security":true},
-{"version":"v0.10.45","date":"2016-05-06","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.15.1","v8":"3.14.5.9","uv":"0.10.36","zlib":"1.2.8","openssl":"1.0.1t","modules":"11","lts":false,"security":false},
-{"version":"v0.10.44","date":"2016-03-31","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"2.15.0","v8":"3.14.5.9","uv":"0.10.36","zlib":"1.2.8","openssl":"1.0.1s","modules":"11","lts":false,"security":false},
-{"version":"v0.10.43","date":"2016-03-03","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.29","v8":"3.14.5.9","uv":"0.10.36","zlib":"1.2.8","openssl":"1.0.1s","modules":"11","lts":false,"security":false},
-{"version":"v0.10.42","date":"2016-02-09","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.29","v8":"3.14.5.9","uv":"0.10.36","zlib":"1.2.8","openssl":"1.0.1r","modules":"11","lts":false,"security":false},
-{"version":"v0.10.41","date":"2015-12-03","files":["headers","linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.29","v8":"3.14.5.9","uv":"0.10.36","zlib":"1.2.8","openssl":"1.0.1q","modules":"11","lts":false,"security":false},
-{"version":"v0.10.40","date":"2015-07-09","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.28","v8":"3.14.5.9","uv":"0.10.36","zlib":"1.2.8","openssl":"1.0.1p","modules":"11","lts":false,"security":false},
-{"version":"v0.10.39","date":"2015-06-19","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.28","v8":"3.14.5.9","uv":"0.10.36","zlib":"1.2.8","openssl":"1.0.1o","modules":"11","lts":false,"security":false},
-{"version":"v0.10.38","date":"2015-03-23","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.28","v8":"3.14.5.9","uv":"0.10.36","zlib":"1.2.8","openssl":"1.0.1m","modules":"11","lts":false,"security":false},
-{"version":"v0.10.37","date":"2015-03-11","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.28","v8":"3.14.5.9","uv":"0.10.36","zlib":"1.2.8","openssl":"1.0.1l","modules":"11","lts":false,"security":false},
-{"version":"v0.10.36","date":"2015-01-26","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.28","v8":"3.14.5.9","uv":"0.10.30","zlib":"1.2.8","openssl":"1.0.1l","modules":"11","lts":false,"security":false},
-{"version":"v0.10.35","date":"2014-12-22","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.28","v8":"3.14.5.9","uv":"0.10.30","zlib":"1.2.8","openssl":"1.0.1j","modules":"11","lts":false,"security":false},
-{"version":"v0.10.34","date":"2014-12-17","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.28","v8":"3.14.5.9","uv":"0.10.30","zlib":"1.2.8","openssl":"1.0.1j","modules":"11","lts":false,"security":false},
-{"version":"v0.10.33","date":"2014-10-21","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.28","v8":"3.14.5.9","uv":"0.10.29","zlib":"1.2.3","openssl":"1.0.1j","modules":"11","lts":false,"security":false},
-{"version":"v0.10.32","date":"2014-09-16","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.28","v8":"3.14.5.9","uv":"0.10.28","zlib":"1.2.3","openssl":"1.0.1i","modules":"11","lts":false,"security":false},
-{"version":"v0.10.31","date":"2014-08-19","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.23","v8":"3.14.5.9","uv":"0.10.28","zlib":"1.2.3","openssl":"1.0.1i","modules":"11","lts":false,"security":false},
-{"version":"v0.10.30","date":"2014-07-31","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.21","v8":"3.14.5.9","uv":"0.10.28","zlib":"1.2.3","openssl":"1.0.1h","modules":"11","lts":false,"security":false},
-{"version":"v0.10.29","date":"2014-06-09","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.14","v8":"3.14.5.9","uv":"0.10.27","zlib":"1.2.3","openssl":"1.0.1h","modules":"11","lts":false,"security":false},
-{"version":"v0.10.28","date":"2014-05-02","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.9","v8":"3.14.5.9","uv":"0.10.27","zlib":"1.2.3","openssl":"1.0.1g","modules":"11","lts":false,"security":false},
-{"version":"v0.10.27","date":"2014-05-01","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.8","v8":"3.14.5.9","uv":"0.10.27","zlib":"1.2.3","openssl":"1.0.1g","modules":"11","lts":false,"security":false},
-{"version":"v0.10.26","date":"2014-02-18","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.4.3","v8":"3.14.5.9","uv":"0.10.25","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.25","date":"2014-01-23","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.24","v8":"3.14.5.9","uv":"0.10.23","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.24","date":"2013-12-19","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.21","v8":"3.14.5.9","uv":"0.10.21","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.23","date":"2013-12-12","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.17","v8":"3.14.5.9","uv":"0.10.20","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.22","date":"2013-11-12","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.14","v8":"3.14.5.9","uv":"0.10.19","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.21","date":"2013-10-18","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.11","v8":"3.14.5.9","uv":"0.10.18","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.20","date":"2013-09-30","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.11","v8":"3.14.5.9","uv":"0.10.17","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.19","date":"2013-09-24","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.11","v8":"3.14.5.9","uv":"0.10.17","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.18","date":"2013-09-04","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.8","v8":"3.14.5.9","uv":"0.10.15","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.17","date":"2013-08-21","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.8","v8":"3.14.5.9","uv":"0.10.14","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.16","date":"2013-08-16","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.8","v8":"3.14.5.9","uv":"0.10.13","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.15","date":"2013-07-25","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.5","v8":"3.14.5.9","uv":"0.10.13","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.14","date":"2013-07-25","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.5","v8":"3.14.5.9","uv":"0.10.13","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.13","date":"2013-07-09","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.3.2","v8":"3.14.5.9","uv":"0.10.12","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.12","date":"2013-06-18","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.32","v8":"3.14.5.9","uv":"0.10.11","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.11","date":"2013-06-13","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.30","v8":"3.14.5.9","uv":"0.10.11","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.10","date":"2013-06-04","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.25","v8":"3.14.5.9","uv":"0.10.10","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.9","date":"2013-05-30","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.24","v8":"3.14.5.9","uv":"0.10.9","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.8","date":"2013-05-24","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.23","v8":"3.14.5.9","uv":"0.10.8","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.7","date":"2013-05-17","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.21","v8":"3.14.5.8","uv":"0.10.7","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.6","date":"2013-05-14","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.18","v8":"3.14.5.8","uv":"0.10.5","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.5","date":"2013-04-23","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.18","v8":"3.14.5.8","uv":"0.10.5","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.4","date":"2013-04-11","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.18","v8":"3.14.5.8","uv":"0.10.4","zlib":"1.2.3","openssl":"1.0.1e","modules":"11","lts":false,"security":false},
-{"version":"v0.10.3","date":"2013-04-03","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.17","v8":"3.14.5.8","uv":"0.10.3","zlib":"1.2.3","openssl":"1.0.1e","modules":"0x000B","lts":false,"security":false},
-{"version":"v0.10.2","date":"2013-03-28","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.15","v8":"3.14.5.8","uv":"0.10.3","zlib":"1.2.3","openssl":"1.0.1e","modules":"0x000B","lts":false,"security":false},
-{"version":"v0.10.1","date":"2013-03-21","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.15","v8":"3.14.5.8","uv":"0.10","zlib":"1.2.3","openssl":"1.0.1e","modules":"0x000B","lts":false,"security":false},
-{"version":"v0.10.0","date":"2013-03-11","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.14","v8":"3.14.5.8","uv":"0.9","zlib":"1.2.3","openssl":"1.0.1e","modules":"0x000B","lts":false,"security":false},
-{"version":"v0.9.12","date":"2013-03-06","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.12","v8":"3.14.5.8","uv":"0.9","zlib":"1.2.3","openssl":"1.0.1e","modules":"0x000B","lts":false,"security":false},
-{"version":"v0.9.11","date":"2013-03-01","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.12","v8":"3.14.5.0","uv":"0.9","zlib":"1.2.3","openssl":"1.0.1e","modules":"0x000B","lts":false,"security":false},
-{"version":"v0.9.10","date":"2013-02-19","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.12","v8":"3.15.11.15","uv":"0.9","zlib":"1.2.3","openssl":"1.0.1c","modules":"0x000B","lts":false,"security":false},
-{"version":"v0.9.9","date":"2013-02-07","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.10","v8":"3.15.11.10","uv":"0.9","zlib":"1.2.3","openssl":"1.0.1c","modules":"0x000B","lts":false,"security":false},
-{"version":"v0.9.8","date":"2013-01-24","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.3","v8":"3.15.11.10","uv":"0.9","zlib":"1.2.3","openssl":"1.0.1c","modules":"0x000A","lts":false,"security":false},
-{"version":"v0.9.7","date":"2013-01-18","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.2","v8":"3.15.11.7","uv":"0.9","zlib":"1.2.3","openssl":"1.0.1c","modules":"0x000A","lts":false,"security":false},
-{"version":"v0.9.6","date":"2013-01-11","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.0","v8":"3.15.11.5","uv":"0.9","zlib":"1.2.3","openssl":"1.0.1c","modules":"0x000A","lts":false,"security":false},
-{"version":"v0.9.5","date":"2012-12-30","files":["linux-x64","linux-x86","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.70","v8":"3.13.7.4","uv":"0.9","zlib":"1.2.3","openssl":"1.0.1c","modules":"0x000A","lts":false,"security":false},
-{"version":"v0.9.4","date":"2012-12-21","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.70","v8":"3.13.7.4","uv":"0.9","zlib":"1.2.3","openssl":"1.0.1c","modules":"0x000A","lts":false,"security":false},
-{"version":"v0.9.3","date":"2012-10-24","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.64","v8":"3.13.7.4","uv":"0.9","zlib":"1.2.3","openssl":"1.0.1c","modules":"0x000A","lts":false,"security":false},
-{"version":"v0.9.2","date":"2012-09-17","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.61","v8":"3.11.10.22","uv":"0.9","zlib":"1.2.3","openssl":"1.0.1c","modules":"0x000A","lts":false,"security":false},
-{"version":"v0.9.1","date":"2012-08-28","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.59","v8":"3.11.10.19","uv":"0.9","zlib":"1.2.3","openssl":"1.0.0f","modules":"0x000A","lts":false,"security":false},
-{"version":"v0.9.0","date":"2012-07-20","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.44","v8":"3.11.10.15","uv":"0.9","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.28","date":"2014-07-31","files":["linux-x64","linux-x86","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.30","v8":"3.11.10.26","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.27","date":"2014-06-09","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x86-msi"],"npm":"1.2.30","v8":"3.11.10.26","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.26","date":"2013-10-18","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.30","v8":"3.11.10.26","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.25","date":"2013-06-13","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.30","v8":"3.11.10.25","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.24","date":"2013-06-03","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.24","v8":"3.11.10.25","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.23","date":"2013-04-09","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.18","v8":"3.11.10.25","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.22","date":"2013-03-06","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.14","v8":"3.11.10.25","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.21","date":"2013-02-25","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.11","v8":"3.11.10.25","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.20","date":"2013-02-15","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.11","v8":"3.11.10.25","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.19","date":"2013-02-06","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.10","v8":"3.11.10.25","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.18","date":"2013-01-18","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.2","v8":"3.11.10.25","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.17","date":"2013-01-10","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.2.0","v8":"3.11.10.25","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.16","date":"2012-12-12","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.69","v8":"3.11.10.25","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.15","date":"2012-11-26","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.66","v8":"3.11.10.25","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.14","date":"2012-10-25","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.65","v8":"3.11.10.25","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.13","date":"2012-10-25","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.65","v8":"3.11.10.25","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.12","date":"2012-10-11","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.63","v8":"3.11.10.22","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.11","date":"2012-09-27","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.62","v8":"3.11.10.22","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.10","date":"2012-09-25","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.62","v8":"3.11.10.22","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.9","date":"2012-09-11","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.61","v8":"3.11.10.22","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.8","date":"2012-08-22","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"1.1.59","v8":"3.11.10.19","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.7","date":"2012-08-15","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.49","v8":"3.11.10.17","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.6","date":"2012-08-06","files":["linux-x64","linux-x86","osx-x64-pkg","osx-x64-tar","osx-x86-tar","src","sunos-x64","sunos-x86","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.48","v8":"3.11.10.17","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.5","date":"2012-08-02","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.46","v8":"3.11.10.17","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.4","date":"2012-07-24","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.45","v8":"3.11.10.17","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.3","date":"2012-07-17","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.43","v8":"3.11.10.15","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.2","date":"2012-07-09","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.36","v8":"3.11.10.14","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.1","date":"2012-06-29","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.33","v8":"3.11.10.12","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.8.0","date":"2012-06-22","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.32","v8":"3.11.10.10","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.7.12","date":"2012-06-19","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe","win-x86-msi"],"npm":"1.1.30","v8":"3.11.10.0","uv":"0.6","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.7.11","date":"2012-06-15","files":["osx-x64-pkg","src","win-x64-exe","win-x64-msi","win-x86-exe","win-x86-msi"],"npm":"1.1.26","v8":"3.11.10.0","uv":"0.6","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.7.10","date":"2012-06-11","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.25","v8":"3.9.24.31","uv":"0.6","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.7.9","date":"2012-05-29","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.23","v8":"3.11.1.0","uv":"0.6","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.7.8","date":"2012-04-18","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.18","v8":"3.9.24.9","uv":"0.6","zlib":"1.2.3","openssl":"1.0.0f","modules":"1","lts":false,"security":false},
-{"version":"v0.7.7","date":"2012-03-30","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.15","v8":"3.9.24.7","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.7.6","date":"2012-03-13","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.8","v8":"3.9.17.0","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.7.5","date":"2012-02-23","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.1","v8":"3.9.5.0","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.7.4","date":"2012-02-14","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.1","v8":"3.9.5.0","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.7.3","date":"2012-02-07","files":["osx-x64-pkg","src","win-x86-exe"],"npm":"1.1.0-3","v8":"3.9.2.0","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.7.2","date":"2012-02-01","files":["osx-x64-pkg","src","win-x86-exe"],"npm":"1.1.0-3","v8":"3.8.9.0","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.7.1","date":"2012-01-23","files":["osx-x64-pkg","src","win-x86-exe"],"npm":"1.1.0-2","v8":"3.8.8.0","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.7.0","date":"2012-01-17","files":["osx-x64-pkg","src","win-x86-exe"],"npm":"1.1.0-2","v8":"3.8.6.0","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.21","date":"2012-08-03","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.37","v8":"3.6.6.25","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.20","date":"2012-07-10","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.37","v8":"3.6.6.25","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.19","date":"2012-06-06","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.24","v8":"3.6.6.25","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.18","date":"2012-05-14","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.21","v8":"3.6.6.25","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.17","date":"2012-05-04","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.21","v8":"3.6.6.25","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.16","date":"2012-04-27","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.19","v8":"3.6.6.25","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.15","date":"2012-04-08","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.16","v8":"3.6.6.24","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.14","date":"2012-03-23","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.12","v8":"3.6.6.24","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.13","date":"2012-03-15","files":["osx-x64-pkg","src","win-x64-exe","win-x86-exe"],"npm":"1.1.9","v8":"3.6.6.24","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.12","date":"2012-03-02","files":["osx-x64-pkg","src","win-x86-exe"],"npm":"1.1.4","v8":"3.6.6.24","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.11","date":"2012-02-08","files":["osx-x64-pkg","src","win-x86-exe"],"npm":"1.1.1","v8":"3.6.6.20","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.10","date":"2012-02-03","files":["osx-x64-pkg","src","win-x86-exe"],"npm":"1.1.0-3","v8":"3.6.6.20","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.9","date":"2012-01-27","files":["osx-x64-pkg","src","win-x86-exe"],"npm":"1.1.0-3","v8":"3.6.6.19","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.8","date":"2012-01-20","files":["osx-x64-pkg","src","win-x86-exe"],"npm":"1.1.0-2","v8":"3.6.6.19","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.7","date":"2012-01-07","files":["osx-x64-pkg","src","win-x86-exe"],"npm":"1.1.0-beta-10","v8":"3.6.6.15","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.6","date":"2011-12-15","files":["osx-x64-pkg","src","win-x86-exe"],"npm":"1.1.0-beta-4","v8":"3.6.6.14","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.5","date":"2011-12-04","files":["osx-x64-pkg","src","win-x86-exe"],"npm":"1.1.0-alpha-6","v8":"3.6.6.11","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.4","date":"2011-12-02","files":["osx-x64-pkg","src","win-x86-exe"],"npm":"1.1.0-alpha-6","v8":"3.6.6.8","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.3","date":"2011-11-25","files":["osx-x64-pkg","src","win-x86-exe"],"npm":"1.1.0-alpha-2","v8":"3.6.6.8","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.2","date":"2011-11-18","files":["osx-x64-pkg","src","win-x86-exe"],"v8":"3.6.6.8","uv":"0.6","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.1","date":"2011-11-11","files":["osx-x64-pkg","src","win-x86-exe"],"v8":"3.6.6.7","uv":"0.1","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.6.0","date":"2011-11-04","files":["src","win-x86-exe"],"v8":"3.6.6.6","uv":"0.1","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.5.10","date":"2011-10-22","files":["src","win-x86-exe"],"v8":"3.7.0.0","uv":"0.1","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.5.9","date":"2011-10-11","files":["src","win-x86-exe"],"v8":"3.6.4.0","uv":"0.1","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.5.8","date":"2011-09-30","files":["src","win-x86-exe"],"v8":"3.6.4.0","uv":"0.1","zlib":"1.2.3","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.5.7","date":"2011-09-16","files":["src","win-x86-exe"],"v8":"3.6.4.0","uv":"0.1","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.5.6","date":"2011-08-26","files":["src","win-x86-exe"],"v8":"3.6.2.0","uv":"0.1","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.5.5","date":"2011-08-26","files":["src","win-x86-exe"],"v8":"3.5.8.0","uv":"0.1","openssl":"0.9.8r","modules":"1","lts":false,"security":false},
-{"version":"v0.5.4","date":"2011-08-26","files":["src","win-x86-exe"],"v8":"3.5.4.3","uv":"0.1","modules":"1","lts":false,"security":false},
-{"version":"v0.5.3","date":"2011-08-26","files":["src","win-x86-exe"],"v8":"3.4.14.0","uv":"0.1","modules":"1","lts":false,"security":false},
-{"version":"v0.5.2","date":"2011-08-26","files":["src","win-x86-exe"],"v8":"3.4.14.0","uv":"0.1","modules":"1","lts":false,"security":false},
-{"version":"v0.5.1","date":"2011-08-26","files":["src","win-x86-exe"],"v8":"3.4.10.0","uv":"0.1","modules":"1","lts":false,"security":false},
-{"version":"v0.5.0","date":"2011-08-26","files":["src"],"v8":"3.1.8.25","modules":"1","lts":false,"security":false},
-{"version":"v0.4.12","date":"2011-09-15","files":["src"],"v8":"3.1.8.26","modules":"1","lts":false,"security":false},
-{"version":"v0.4.11","date":"2011-08-26","files":["src"],"v8":"3.1.8.26","modules":"1","lts":false,"security":false},
-{"version":"v0.4.10","date":"2011-08-26","files":["src"],"v8":"3.1.8.26","modules":"1","lts":false,"security":false},
-{"version":"v0.4.9","date":"2011-08-26","files":["src"],"v8":"3.1.8.25","modules":"1","lts":false,"security":false},
-{"version":"v0.4.8","date":"2011-08-26","files":["src"],"v8":"3.1.8.16","modules":"1","lts":false,"security":false},
-{"version":"v0.4.7","date":"2011-08-26","files":["src"],"v8":"3.1.8.10","modules":"1","lts":false,"security":false},
-{"version":"v0.4.6","date":"2011-08-26","files":["src"],"v8":"3.1.8.10","modules":"1","lts":false,"security":false},
-{"version":"v0.4.5","date":"2011-08-26","files":["src"],"v8":"3.1.8.8","modules":"1","lts":false,"security":false},
-{"version":"v0.4.4","date":"2011-08-26","files":["src"],"v8":"3.1.8.5","modules":"1","lts":false,"security":false},
-{"version":"v0.4.3","date":"2011-08-26","files":["src"],"v8":"3.1.8.3","modules":"1","lts":false,"security":false},
-{"version":"v0.4.2","date":"2011-08-26","files":["src"],"v8":"3.1.8.0","modules":"1","lts":false,"security":false},
-{"version":"v0.4.1","date":"2011-08-26","files":["src"],"v8":"3.1.5.0","modules":"1","lts":false,"security":false},
-{"version":"v0.4.0","date":"2011-08-26","files":["src"],"v8":"3.1.2.0","modules":"1","lts":false,"security":false},
-{"version":"v0.3.8","date":"2011-08-26","files":["src"],"v8":"3.1.1.0","modules":"1","lts":false,"security":false},
-{"version":"v0.3.7","date":"2011-08-26","files":["src"],"v8":"3.0.10.0","modules":"1","lts":false,"security":false},
-{"version":"v0.3.6","date":"2011-08-26","files":["src"],"v8":"3.0.9.0","modules":"1","lts":false,"security":false},
-{"version":"v0.3.5","date":"2011-08-26","files":["src"],"v8":"3.0.4.1","modules":"1","lts":false,"security":false},
-{"version":"v0.3.4","date":"2011-08-26","files":["src"],"v8":"3.0.4.1","modules":"1","lts":false,"security":false},
-{"version":"v0.3.3","date":"2011-08-26","files":["src"],"v8":"3.0.4.1","modules":"1","lts":false,"security":false},
-{"version":"v0.3.2","date":"2011-08-26","files":["src"],"v8":"3.0.3.0","modules":"1","lts":false,"security":false},
-{"version":"v0.3.1","date":"2011-08-26","files":["src"],"v8":"2.5.3.0","modules":"1","lts":false,"security":false},
-{"version":"v0.3.0","date":"2011-08-26","files":["src"],"v8":"2.5.1.0","modules":"1","lts":false,"security":false},
-{"version":"v0.2.6","date":"2011-08-26","files":["src"],"v8":"2.3.8.0","modules":"1","lts":false,"security":false},
-{"version":"v0.2.5","date":"2011-08-26","files":["src"],"v8":"2.3.8.0","modules":"1","lts":false,"security":false},
-{"version":"v0.2.4","date":"2011-08-26","files":["src"],"v8":"2.3.8.0","modules":"1","lts":false,"security":false},
-{"version":"v0.2.3","date":"2011-08-26","files":["src"],"v8":"2.3.8.0","modules":"1","lts":false,"security":false},
-{"version":"v0.2.2","date":"2011-08-26","files":["src"],"v8":"2.3.8.0","modules":"1","lts":false,"security":false},
-{"version":"v0.2.1","date":"2011-08-26","files":["src"],"v8":"2.3.8.0","modules":"1","lts":false,"security":false},
-{"version":"v0.2.0","date":"2011-08-26","files":["src"],"v8":"2.3.8.0","modules":"1","lts":false,"security":false},
-{"version":"v0.1.104","date":"2011-08-26","files":["src"],"v8":"2.3.6.1","lts":false,"security":false},
-{"version":"v0.1.103","date":"2011-08-26","files":["src"],"v8":"2.3.5.0","lts":false,"security":false},
-{"version":"v0.1.102","date":"2011-08-26","files":["src"],"v8":"2.3.2.0","lts":false,"security":false},
-{"version":"v0.1.101","date":"2011-08-26","files":["src"],"v8":"2.3.0.0","lts":false,"security":false},
-{"version":"v0.1.100","date":"2011-08-26","files":["src"],"v8":"2.2.21.0","lts":false,"security":false},
-{"version":"v0.1.99","date":"2011-08-26","files":["src"],"v8":"2.2.18.0","lts":false,"security":false},
-{"version":"v0.1.98","date":"2011-08-26","files":["src"],"v8":"2.2.16.0","lts":false,"security":false},
-{"version":"v0.1.97","date":"2011-08-26","files":["src"],"v8":"2.2.12.0","lts":false,"security":false},
-{"version":"v0.1.96","date":"2011-08-26","files":["src"],"v8":"2.2.0","lts":false,"security":false},
-{"version":"v0.1.95","date":"2011-08-26","files":["src"],"v8":"2.2.0","lts":false,"security":false},
-{"version":"v0.1.94","date":"2011-08-26","files":["src"],"v8":"2.2.8.0","lts":false,"security":false},
-{"version":"v0.1.93","date":"2011-08-26","files":["src"],"v8":"2.2.6.0","lts":false,"security":false},
-{"version":"v0.1.92","date":"2011-08-26","files":["src"],"v8":"2.2.4.2","lts":false,"security":false},
-{"version":"v0.1.91","date":"2011-08-26","files":["src"],"v8":"2.2.3.1","lts":false,"security":false},
-{"version":"v0.1.90","date":"2011-08-26","files":["src"],"v8":"2.2.0.3","lts":false,"security":false},
-{"version":"v0.1.33","date":"2011-08-26","files":["src"],"v8":"2.1.6.0","lts":false,"security":false},
-{"version":"v0.1.32","date":"2011-08-26","files":["src"],"v8":"2.1.3.0","lts":false,"security":false},
-{"version":"v0.1.31","date":"2011-08-26","files":["src"],"v8":"2.1.2.0","lts":false,"security":false},
-{"version":"v0.1.30","date":"2011-08-26","files":["src"],"v8":"2.1.1.1","lts":false,"security":false},
-{"version":"v0.1.29","date":"2011-08-26","files":["src"],"v8":"2.1.0.0","lts":false,"security":false},
-{"version":"v0.1.28","date":"2011-08-26","files":["src"],"v8":"2.1.0.0","lts":false,"security":false},
-{"version":"v0.1.27","date":"2011-08-26","files":["src"],"v8":"2.1.0.0","lts":false,"security":false},
-{"version":"v0.1.26","date":"2011-08-26","files":["src"],"v8":"2.0.6.1","lts":false,"security":false},
-{"version":"v0.1.25","date":"2011-08-26","files":["src"],"v8":"2.0.5.4","lts":false,"security":false},
-{"version":"v0.1.24","date":"2011-08-26","files":["src"],"v8":"2.0.5.4","lts":false,"security":false},
-{"version":"v0.1.23","date":"2011-08-26","files":["src"],"v8":"2.0.0","lts":false,"security":false},
-{"version":"v0.1.22","date":"2011-08-26","files":["src"],"v8":"2.0.0","lts":false,"security":false},
-{"version":"v0.1.21","date":"2011-08-26","files":["src"],"v8":"2.0.0","lts":false,"security":false},
-{"version":"v0.1.20","date":"2011-08-26","files":["src"],"v8":"2.0.2.0","lts":false,"security":false},
-{"version":"v0.1.19","date":"2011-08-26","files":["src"],"v8":"2.0.2.0","lts":false,"security":false},
-{"version":"v0.1.18","date":"2011-08-26","files":["src"],"v8":"1.3.18.0","lts":false,"security":false},
-{"version":"v0.1.17","date":"2011-08-26","files":["src"],"v8":"1.3.18.0","lts":false,"security":false},
-{"version":"v0.1.16","date":"2011-08-26","files":["src"],"v8":"1.3.18.0","lts":false,"security":false},
-{"version":"v0.1.15","date":"2011-08-26","files":["src"],"v8":"1.3.16.0","lts":false,"security":false},
-{"version":"v0.1.14","date":"2011-08-26","files":["src"],"v8":"1.3.15.0","lts":false,"security":false}
-]
diff --git a/assets/node_modules/node-releases/data/release-schedule/release-schedule.json b/assets/node_modules/node-releases/data/release-schedule/release-schedule.json
deleted file mode 100644
index b2789b6..0000000
--- a/assets/node_modules/node-releases/data/release-schedule/release-schedule.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "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-04-01",
- "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-10-21",
- "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-20",
- "maintenance": "2021-10-20",
- "end": "2023-04-30",
- "codename": ""
- }
-}
diff --git a/assets/node_modules/node-releases/node_modules/.bin/semver b/assets/node_modules/node-releases/node_modules/.bin/semver
deleted file mode 120000
index 5aaadf4..0000000
--- a/assets/node_modules/node-releases/node_modules/.bin/semver
+++ /dev/null
@@ -1 +0,0 @@
-../semver/bin/semver.js \ No newline at end of file
diff --git a/assets/node_modules/node-releases/node_modules/semver/CHANGELOG.md b/assets/node_modules/node-releases/node_modules/semver/CHANGELOG.md
deleted file mode 100644
index f567dd3..0000000
--- a/assets/node_modules/node-releases/node_modules/semver/CHANGELOG.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# changes log
-
-## 6.2.0
-
-* Coerce numbers to strings when passed to semver.coerce()
-* Add `rtl` option to coerce from right to left
-
-## 6.1.3
-
-* Handle X-ranges properly in includePrerelease mode
-
-## 6.1.2
-
-* Do not throw when testing invalid version strings
-
-## 6.1.1
-
-* Add options support for semver.coerce()
-* Handle undefined version passed to Range.test
-
-## 6.1.0
-
-* Add semver.compareBuild function
-* Support `*` in semver.intersects
-
-## 6.0
-
-* Fix `intersects` logic.
-
- This is technically a bug fix, but since it is also a change to behavior
- that may require users updating their code, it is marked as a major
- version increment.
-
-## 5.7
-
-* Add `minVersion` method
-
-## 5.6
-
-* Move boolean `loose` param to an options object, with
- backwards-compatibility protection.
-* Add ability to opt out of special prerelease version handling with
- the `includePrerelease` option flag.
-
-## 5.5
-
-* Add version coercion capabilities
-
-## 5.4
-
-* Add intersection checking
-
-## 5.3
-
-* Add `minSatisfying` method
-
-## 5.2
-
-* Add `prerelease(v)` that returns prerelease components
-
-## 5.1
-
-* Add Backus-Naur for ranges
-* Remove excessively cute inspection methods
-
-## 5.0
-
-* Remove AMD/Browserified build artifacts
-* Fix ltr and gtr when using the `*` range
-* Fix for range `*` with a prerelease identifier
diff --git a/assets/node_modules/node-releases/node_modules/semver/LICENSE b/assets/node_modules/node-releases/node_modules/semver/LICENSE
deleted file mode 100644
index 19129e3..0000000
--- a/assets/node_modules/node-releases/node_modules/semver/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-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/assets/node_modules/node-releases/node_modules/semver/README.md b/assets/node_modules/node-releases/node_modules/semver/README.md
deleted file mode 100644
index 2293a14..0000000
--- a/assets/node_modules/node-releases/node_modules/semver/README.md
+++ /dev/null
@@ -1,443 +0,0 @@
-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/assets/node_modules/node-releases/node_modules/semver/bin/semver.js b/assets/node_modules/node-releases/node_modules/semver/bin/semver.js
deleted file mode 100755
index 666034a..0000000
--- a/assets/node_modules/node-releases/node_modules/semver/bin/semver.js
+++ /dev/null
@@ -1,174 +0,0 @@
-#!/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/assets/node_modules/node-releases/node_modules/semver/package.json b/assets/node_modules/node-releases/node_modules/semver/package.json
deleted file mode 100644
index bdd442f..0000000
--- a/assets/node_modules/node-releases/node_modules/semver/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "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/assets/node_modules/node-releases/node_modules/semver/range.bnf b/assets/node_modules/node-releases/node_modules/semver/range.bnf
deleted file mode 100644
index d4c6ae0..0000000
--- a/assets/node_modules/node-releases/node_modules/semver/range.bnf
+++ /dev/null
@@ -1,16 +0,0 @@
-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/assets/node_modules/node-releases/node_modules/semver/semver.js b/assets/node_modules/node-releases/node_modules/semver/semver.js
deleted file mode 100644
index 636fa43..0000000
--- a/assets/node_modules/node-releases/node_modules/semver/semver.js
+++ /dev/null
@@ -1,1596 +0,0 @@
-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/assets/node_modules/node-releases/package.json b/assets/node_modules/node-releases/package.json
deleted file mode 100644
index 1de0df5..0000000
--- a/assets/node_modules/node-releases/package.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "name": "node-releases",
- "version": "1.1.47",
- "description": "Node.js releases data",
- "scripts": {
- "build": "npm run fetch && npm run process",
- "fetch": "node scripts/fetch.js",
- "process": "node scripts/process.js"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/chicoxyzzy/node-releases.git"
- },
- "keywords": [
- "nodejs",
- "releases"
- ],
- "author": "Sergey Rubanov <chi187@gmail.com>",
- "license": "MIT",
- "dependencies": {
- "semver": "^6.3.0"
- }
-}
diff --git a/assets/node_modules/normalize-package-data/AUTHORS b/assets/node_modules/normalize-package-data/AUTHORS
deleted file mode 100644
index 66282ba..0000000
--- a/assets/node_modules/normalize-package-data/AUTHORS
+++ /dev/null
@@ -1,4 +0,0 @@
-# Names sorted by how much code was originally theirs.
-Isaac Z. Schlueter <i@izs.me>
-Meryn Stol <merynstol@gmail.com>
-Robert Kowalski <rok@kowalski.gd>
diff --git a/assets/node_modules/normalize-package-data/LICENSE b/assets/node_modules/normalize-package-data/LICENSE
deleted file mode 100644
index 6ed662c..0000000
--- a/assets/node_modules/normalize-package-data/LICENSE
+++ /dev/null
@@ -1,30 +0,0 @@
-This package contains code originally written by Isaac Z. Schlueter.
-Used with permission.
-
-Copyright (c) Meryn Stol ("Author")
-All rights reserved.
-
-The BSD License
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-2. 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 AUTHOR 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 AUTHOR 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/assets/node_modules/normalize-package-data/README.md b/assets/node_modules/normalize-package-data/README.md
deleted file mode 100644
index d2bd7bc..0000000
--- a/assets/node_modules/normalize-package-data/README.md
+++ /dev/null
@@ -1,106 +0,0 @@
-# normalize-package-data [![Build Status](https://travis-ci.org/npm/normalize-package-data.png?branch=master)](https://travis-ci.org/npm/normalize-package-data)
-
-normalize-package-data exports a function that normalizes package metadata. This data is typically found in a package.json file, but in principle could come from any source - for example the npm registry.
-
-normalize-package-data is used by [read-package-json](https://npmjs.org/package/read-package-json) to normalize the data it reads from a package.json file. In turn, read-package-json is used by [npm](https://npmjs.org/package/npm) and various npm-related tools.
-
-## Installation
-
-```
-npm install normalize-package-data
-```
-
-## Usage
-
-Basic usage is really simple. You call the function that normalize-package-data exports. Let's call it `normalizeData`.
-
-```javascript
-normalizeData = require('normalize-package-data')
-packageData = require("./package.json")
-normalizeData(packageData)
-// packageData is now normalized
-```
-
-#### Strict mode
-
-You may activate strict validation by passing true as the second argument.
-
-```javascript
-normalizeData = require('normalize-package-data')
-packageData = require("./package.json")
-normalizeData(packageData, true)
-// packageData is now normalized
-```
-
-If strict mode is activated, only Semver 2.0 version strings are accepted. Otherwise, Semver 1.0 strings are accepted as well. Packages must have a name, and the name field must not have contain leading or trailing whitespace.
-
-#### Warnings
-
-Optionally, you may pass a "warning" function. It gets called whenever the `normalizeData` function encounters something that doesn't look right. It indicates less than perfect input data.
-
-```javascript
-normalizeData = require('normalize-package-data')
-packageData = require("./package.json")
-warnFn = function(msg) { console.error(msg) }
-normalizeData(packageData, warnFn)
-// packageData is now normalized. Any number of warnings may have been logged.
-```
-
-You may combine strict validation with warnings by passing `true` as the second argument, and `warnFn` as third.
-
-When `private` field is set to `true`, warnings will be suppressed.
-
-### Potential exceptions
-
-If the supplied data has an invalid name or version vield, `normalizeData` will throw an error. Depending on where you call `normalizeData`, you may want to catch these errors so can pass them to a callback.
-
-## What normalization (currently) entails
-
-* The value of `name` field gets trimmed (unless in strict mode).
-* The value of the `version` field gets cleaned by `semver.clean`. See [documentation for the semver module](https://github.com/isaacs/node-semver).
-* If `name` and/or `version` fields are missing, they are set to empty strings.
-* If `files` field is not an array, it will be removed.
-* If `bin` field is a string, then `bin` field will become an object with `name` set to the value of the `name` field, and `bin` set to the original string value.
-* If `man` field is a string, it will become an array with the original string as its sole member.
-* If `keywords` field is string, it is considered to be a list of keywords separated by one or more white-space characters. It gets converted to an array by splitting on `\s+`.
-* All people fields (`author`, `maintainers`, `contributors`) get converted into objects with name, email and url properties.
-* If `bundledDependencies` field (a typo) exists and `bundleDependencies` field does not, `bundledDependencies` will get renamed to `bundleDependencies`.
-* If the value of any of the dependencies fields (`dependencies`, `devDependencies`, `optionalDependencies`) is a string, it gets converted into an object with familiar `name=>value` pairs.
-* The values in `optionalDependencies` get added to `dependencies`. The `optionalDependencies` array is left untouched.
-* As of v2: Dependencies that point at known hosted git providers (currently: github, bitbucket, gitlab) will have their URLs canonicalized, but protocols will be preserved.
-* As of v2: Dependencies that use shortcuts for hosted git providers (`org/proj`, `github:org/proj`, `bitbucket:org/proj`, `gitlab:org/proj`, `gist:docid`) will have the shortcut left in place. (In the case of github, the `org/proj` form will be expanded to `github:org/proj`.) THIS MARKS A BREAKING CHANGE FROM V1, where the shorcut was previously expanded to a URL.
-* If `description` field does not exist, but `readme` field does, then (more or less) the first paragraph of text that's found in the readme is taken as value for `description`.
-* If `repository` field is a string, it will become an object with `url` set to the original string value, and `type` set to `"git"`.
-* If `repository.url` is not a valid url, but in the style of "[owner-name]/[repo-name]", `repository.url` will be set to git+https://github.com/[owner-name]/[repo-name].git
-* If `bugs` field is a string, the value of `bugs` field is changed into an object with `url` set to the original string value.
-* If `bugs` field does not exist, but `repository` field points to a repository hosted on GitHub, the value of the `bugs` field gets set to an url in the form of https://github.com/[owner-name]/[repo-name]/issues . If the repository field points to a GitHub Gist repo url, the associated http url is chosen.
-* If `bugs` field is an object, the resulting value only has email and url properties. If email and url properties are not strings, they are ignored. If no valid values for either email or url is found, bugs field will be removed.
-* If `homepage` field is not a string, it will be removed.
-* If the url in the `homepage` field does not specify a protocol, then http is assumed. For example, `myproject.org` will be changed to `http://myproject.org`.
-* If `homepage` field does not exist, but `repository` field points to a repository hosted on GitHub, the value of the `homepage` field gets set to an url in the form of https://github.com/[owner-name]/[repo-name]#readme . If the repository field points to a GitHub Gist repo url, the associated http url is chosen.
-
-### Rules for name field
-
-If `name` field is given, the value of the name field must be a string. The string may not:
-
-* start with a period.
-* contain the following characters: `/@\s+%`
-* contain any characters that would need to be encoded for use in urls.
-* resemble the word `node_modules` or `favicon.ico` (case doesn't matter).
-
-### Rules for version field
-
-If `version` field is given, the value of the version field must be a valid *semver* string, as determined by the `semver.valid` method. See [documentation for the semver module](https://github.com/isaacs/node-semver).
-
-### Rules for license field
-
-The `license` field should be a valid *SPDX license expression* or one of the special values allowed by [validate-npm-package-license](https://npmjs.com/package/validate-npm-package-license). See [documentation for the license field in package.json](https://docs.npmjs.com/files/package.json#license).
-
-## Credits
-
-This package contains code based on read-package-json written by Isaac Z. Schlueter. Used with permisson.
-
-## License
-
-normalize-package-data is released under the [BSD 2-Clause License](http://opensource.org/licenses/MIT).
-Copyright (c) 2013 Meryn Stol
diff --git a/assets/node_modules/normalize-package-data/lib/extract_description.js b/assets/node_modules/normalize-package-data/lib/extract_description.js
deleted file mode 100644
index 83f10aa..0000000
--- a/assets/node_modules/normalize-package-data/lib/extract_description.js
+++ /dev/null
@@ -1,14 +0,0 @@
-module.exports = extractDescription
-
-// Extracts description from contents of a readme file in markdown format
-function extractDescription (d) {
- if (!d) return;
- if (d === "ERROR: No README data found!") return;
- // the first block of text before the first heading
- // that isn't the first line heading
- d = d.trim().split('\n')
- for (var s = 0; d[s] && d[s].trim().match(/^(#|$)/); s ++);
- var l = d.length
- for (var e = s + 1; e < l && d[e].trim(); e ++);
- return d.slice(s, e).join(' ').trim()
-}
diff --git a/assets/node_modules/normalize-package-data/lib/fixer.js b/assets/node_modules/normalize-package-data/lib/fixer.js
deleted file mode 100644
index 27682e9..0000000
--- a/assets/node_modules/normalize-package-data/lib/fixer.js
+++ /dev/null
@@ -1,418 +0,0 @@
-var semver = require("semver")
-var validateLicense = require('validate-npm-package-license');
-var hostedGitInfo = require("hosted-git-info")
-var isBuiltinModule = require("resolve").isCore
-var depTypes = ["dependencies","devDependencies","optionalDependencies"]
-var extractDescription = require("./extract_description")
-var url = require("url")
-var typos = require("./typos.json")
-
-var fixer = module.exports = {
- // default warning function
- warn: function() {},
-
- fixRepositoryField: function(data) {
- if (data.repositories) {
- this.warn("repositories");
- data.repository = data.repositories[0]
- }
- if (!data.repository) return this.warn("missingRepository")
- if (typeof data.repository === "string") {
- data.repository = {
- type: "git",
- url: data.repository
- }
- }
- var r = data.repository.url || ""
- if (r) {
- var hosted = hostedGitInfo.fromUrl(r)
- if (hosted) {
- r = data.repository.url
- = hosted.getDefaultRepresentation() == "shortcut" ? hosted.https() : hosted.toString()
- }
- }
-
- if (r.match(/github.com\/[^\/]+\/[^\/]+\.git\.git$/)) {
- this.warn("brokenGitUrl", r)
- }
- }
-
-, fixTypos: function(data) {
- Object.keys(typos.topLevel).forEach(function (d) {
- if (data.hasOwnProperty(d)) {
- this.warn("typo", d, typos.topLevel[d])
- }
- }, this)
- }
-
-, fixScriptsField: function(data) {
- if (!data.scripts) return
- if (typeof data.scripts !== "object") {
- this.warn("nonObjectScripts")
- delete data.scripts
- return
- }
- Object.keys(data.scripts).forEach(function (k) {
- if (typeof data.scripts[k] !== "string") {
- this.warn("nonStringScript")
- delete data.scripts[k]
- } else if (typos.script[k] && !data.scripts[typos.script[k]]) {
- this.warn("typo", k, typos.script[k], "scripts")
- }
- }, this)
- }
-
-, fixFilesField: function(data) {
- var files = data.files
- if (files && !Array.isArray(files)) {
- this.warn("nonArrayFiles")
- delete data.files
- } else if (data.files) {
- data.files = data.files.filter(function(file) {
- if (!file || typeof file !== "string") {
- this.warn("invalidFilename", file)
- return false
- } else {
- return true
- }
- }, this)
- }
- }
-
-, fixBinField: function(data) {
- if (!data.bin) return;
- if (typeof data.bin === "string") {
- var b = {}
- var match
- if (match = data.name.match(/^@[^/]+[/](.*)$/)) {
- b[match[1]] = data.bin
- } else {
- b[data.name] = data.bin
- }
- data.bin = b
- }
- }
-
-, fixManField: function(data) {
- if (!data.man) return;
- if (typeof data.man === "string") {
- data.man = [ data.man ]
- }
- }
-, fixBundleDependenciesField: function(data) {
- var bdd = "bundledDependencies"
- var bd = "bundleDependencies"
- if (data[bdd] && !data[bd]) {
- data[bd] = data[bdd]
- delete data[bdd]
- }
- if (data[bd] && !Array.isArray(data[bd])) {
- this.warn("nonArrayBundleDependencies")
- delete data[bd]
- } else if (data[bd]) {
- data[bd] = data[bd].filter(function(bd) {
- if (!bd || typeof bd !== 'string') {
- this.warn("nonStringBundleDependency", bd)
- return false
- } else {
- if (!data.dependencies) {
- data.dependencies = {}
- }
- if (!data.dependencies.hasOwnProperty(bd)) {
- this.warn("nonDependencyBundleDependency", bd)
- data.dependencies[bd] = "*"
- }
- return true
- }
- }, this)
- }
- }
-
-, fixDependencies: function(data, strict) {
- var loose = !strict
- objectifyDeps(data, this.warn)
- addOptionalDepsToDeps(data, this.warn)
- this.fixBundleDependenciesField(data)
-
- ;['dependencies','devDependencies'].forEach(function(deps) {
- if (!(deps in data)) return
- if (!data[deps] || typeof data[deps] !== "object") {
- this.warn("nonObjectDependencies", deps)
- delete data[deps]
- return
- }
- Object.keys(data[deps]).forEach(function (d) {
- var r = data[deps][d]
- if (typeof r !== 'string') {
- this.warn("nonStringDependency", d, JSON.stringify(r))
- delete data[deps][d]
- }
- var hosted = hostedGitInfo.fromUrl(data[deps][d])
- if (hosted) data[deps][d] = hosted.toString()
- }, this)
- }, this)
- }
-
-, fixModulesField: function (data) {
- if (data.modules) {
- this.warn("deprecatedModules")
- delete data.modules
- }
- }
-
-, fixKeywordsField: function (data) {
- if (typeof data.keywords === "string") {
- data.keywords = data.keywords.split(/,\s+/)
- }
- if (data.keywords && !Array.isArray(data.keywords)) {
- delete data.keywords
- this.warn("nonArrayKeywords")
- } else if (data.keywords) {
- data.keywords = data.keywords.filter(function(kw) {
- if (typeof kw !== "string" || !kw) {
- this.warn("nonStringKeyword");
- return false
- } else {
- return true
- }
- }, this)
- }
- }
-
-, fixVersionField: function(data, strict) {
- // allow "loose" semver 1.0 versions in non-strict mode
- // enforce strict semver 2.0 compliance in strict mode
- var loose = !strict
- if (!data.version) {
- data.version = ""
- return true
- }
- if (!semver.valid(data.version, loose)) {
- throw new Error('Invalid version: "'+ data.version + '"')
- }
- data.version = semver.clean(data.version, loose)
- return true
- }
-
-, fixPeople: function(data) {
- modifyPeople(data, unParsePerson)
- modifyPeople(data, parsePerson)
- }
-
-, fixNameField: function(data, options) {
- if (typeof options === "boolean") options = {strict: options}
- else if (typeof options === "undefined") options = {}
- var strict = options.strict
- if (!data.name && !strict) {
- data.name = ""
- return
- }
- if (typeof data.name !== "string") {
- throw new Error("name field must be a string.")
- }
- if (!strict)
- data.name = data.name.trim()
- ensureValidName(data.name, strict, options.allowLegacyCase)
- if (isBuiltinModule(data.name))
- this.warn("conflictingName", data.name)
- }
-
-
-, fixDescriptionField: function (data) {
- if (data.description && typeof data.description !== 'string') {
- this.warn("nonStringDescription")
- delete data.description
- }
- if (data.readme && !data.description)
- data.description = extractDescription(data.readme)
- if(data.description === undefined) delete data.description;
- if (!data.description) this.warn("missingDescription")
- }
-
-, fixReadmeField: function (data) {
- if (!data.readme) {
- this.warn("missingReadme")
- data.readme = "ERROR: No README data found!"
- }
- }
-
-, fixBugsField: function(data) {
- if (!data.bugs && data.repository && data.repository.url) {
- var hosted = hostedGitInfo.fromUrl(data.repository.url)
- if(hosted && hosted.bugs()) {
- data.bugs = {url: hosted.bugs()}
- }
- }
- else if(data.bugs) {
- var emailRe = /^.+@.*\..+$/
- if(typeof data.bugs == "string") {
- if(emailRe.test(data.bugs))
- data.bugs = {email:data.bugs}
- else if(url.parse(data.bugs).protocol)
- data.bugs = {url: data.bugs}
- else
- this.warn("nonEmailUrlBugsString")
- }
- else {
- bugsTypos(data.bugs, this.warn)
- var oldBugs = data.bugs
- data.bugs = {}
- if(oldBugs.url) {
- if(typeof(oldBugs.url) == "string" && url.parse(oldBugs.url).protocol)
- data.bugs.url = oldBugs.url
- else
- this.warn("nonUrlBugsUrlField")
- }
- if(oldBugs.email) {
- if(typeof(oldBugs.email) == "string" && emailRe.test(oldBugs.email))
- data.bugs.email = oldBugs.email
- else
- this.warn("nonEmailBugsEmailField")
- }
- }
- if(!data.bugs.email && !data.bugs.url) {
- delete data.bugs
- this.warn("emptyNormalizedBugs")
- }
- }
- }
-
-, fixHomepageField: function(data) {
- if (!data.homepage && data.repository && data.repository.url) {
- var hosted = hostedGitInfo.fromUrl(data.repository.url)
- if (hosted && hosted.docs()) data.homepage = hosted.docs()
- }
- if (!data.homepage) return
-
- if(typeof data.homepage !== "string") {
- this.warn("nonUrlHomepage")
- return delete data.homepage
- }
- if(!url.parse(data.homepage).protocol) {
- data.homepage = "http://" + data.homepage
- }
- }
-
-, fixLicenseField: function(data) {
- if (!data.license) {
- return this.warn("missingLicense")
- } else{
- if (
- typeof(data.license) !== 'string' ||
- data.license.length < 1 ||
- data.license.trim() === ''
- ) {
- this.warn("invalidLicense")
- } else {
- if (!validateLicense(data.license).validForNewPackages)
- this.warn("invalidLicense")
- }
- }
- }
-}
-
-function isValidScopedPackageName(spec) {
- if (spec.charAt(0) !== '@') return false
-
- var rest = spec.slice(1).split('/')
- if (rest.length !== 2) return false
-
- return rest[0] && rest[1] &&
- rest[0] === encodeURIComponent(rest[0]) &&
- rest[1] === encodeURIComponent(rest[1])
-}
-
-function isCorrectlyEncodedName(spec) {
- return !spec.match(/[\/@\s\+%:]/) &&
- spec === encodeURIComponent(spec)
-}
-
-function ensureValidName (name, strict, allowLegacyCase) {
- if (name.charAt(0) === "." ||
- !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) ||
- (strict && (!allowLegacyCase) && name !== name.toLowerCase()) ||
- name.toLowerCase() === "node_modules" ||
- name.toLowerCase() === "favicon.ico") {
- throw new Error("Invalid name: " + JSON.stringify(name))
- }
-}
-
-function modifyPeople (data, fn) {
- if (data.author) data.author = fn(data.author)
- ;["maintainers", "contributors"].forEach(function (set) {
- if (!Array.isArray(data[set])) return;
- data[set] = data[set].map(fn)
- })
- return data
-}
-
-function unParsePerson (person) {
- if (typeof person === "string") return person
- var name = person.name || ""
- var u = person.url || person.web
- var url = u ? (" ("+u+")") : ""
- var e = person.email || person.mail
- var email = e ? (" <"+e+">") : ""
- return name+email+url
-}
-
-function parsePerson (person) {
- if (typeof person !== "string") return person
- var name = person.match(/^([^\(<]+)/)
- var url = person.match(/\(([^\)]+)\)/)
- var email = person.match(/<([^>]+)>/)
- var obj = {}
- if (name && name[0].trim()) obj.name = name[0].trim()
- if (email) obj.email = email[1];
- if (url) obj.url = url[1];
- return obj
-}
-
-function addOptionalDepsToDeps (data, warn) {
- var o = data.optionalDependencies
- if (!o) return;
- var d = data.dependencies || {}
- Object.keys(o).forEach(function (k) {
- d[k] = o[k]
- })
- data.dependencies = d
-}
-
-function depObjectify (deps, type, warn) {
- if (!deps) return {}
- if (typeof deps === "string") {
- deps = deps.trim().split(/[\n\r\s\t ,]+/)
- }
- if (!Array.isArray(deps)) return deps
- warn("deprecatedArrayDependencies", type)
- var o = {}
- deps.filter(function (d) {
- return typeof d === "string"
- }).forEach(function(d) {
- d = d.trim().split(/(:?[@\s><=])/)
- var dn = d.shift()
- var dv = d.join("")
- dv = dv.trim()
- dv = dv.replace(/^@/, "")
- o[dn] = dv
- })
- return o
-}
-
-function objectifyDeps (data, warn) {
- depTypes.forEach(function (type) {
- if (!data[type]) return;
- data[type] = depObjectify(data[type], type, warn)
- })
-}
-
-function bugsTypos(bugs, warn) {
- if (!bugs) return
- Object.keys(bugs).forEach(function (k) {
- if (typos.bugs[k]) {
- warn("typo", k, typos.bugs[k], "bugs")
- bugs[typos.bugs[k]] = bugs[k]
- delete bugs[k]
- }
- })
-}
diff --git a/assets/node_modules/normalize-package-data/lib/make_warning.js b/assets/node_modules/normalize-package-data/lib/make_warning.js
deleted file mode 100644
index 4ac74ad..0000000
--- a/assets/node_modules/normalize-package-data/lib/make_warning.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var util = require("util")
-var messages = require("./warning_messages.json")
-
-module.exports = function() {
- var args = Array.prototype.slice.call(arguments, 0)
- var warningName = args.shift()
- if (warningName == "typo") {
- return makeTypoWarning.apply(null,args)
- }
- else {
- var msgTemplate = messages[warningName] ? messages[warningName] : warningName + ": '%s'"
- args.unshift(msgTemplate)
- return util.format.apply(null, args)
- }
-}
-
-function makeTypoWarning (providedName, probableName, field) {
- if (field) {
- providedName = field + "['" + providedName + "']"
- probableName = field + "['" + probableName + "']"
- }
- return util.format(messages.typo, providedName, probableName)
-}
diff --git a/assets/node_modules/normalize-package-data/lib/normalize.js b/assets/node_modules/normalize-package-data/lib/normalize.js
deleted file mode 100644
index bd1bfef..0000000
--- a/assets/node_modules/normalize-package-data/lib/normalize.js
+++ /dev/null
@@ -1,39 +0,0 @@
-module.exports = normalize
-
-var fixer = require("./fixer")
-normalize.fixer = fixer
-
-var makeWarning = require("./make_warning")
-
-var fieldsToFix = ['name','version','description','repository','modules','scripts'
- ,'files','bin','man','bugs','keywords','readme','homepage','license']
-var otherThingsToFix = ['dependencies','people', 'typos']
-
-var thingsToFix = fieldsToFix.map(function(fieldName) {
- return ucFirst(fieldName) + "Field"
-})
-// two ways to do this in CoffeeScript on only one line, sub-70 chars:
-// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + "Field"
-// thingsToFix = (ucFirst(name) + "Field" for name in fieldsToFix)
-thingsToFix = thingsToFix.concat(otherThingsToFix)
-
-function normalize (data, warn, strict) {
- if(warn === true) warn = null, strict = true
- if(!strict) strict = false
- if(!warn || data.private) warn = function(msg) { /* noop */ }
-
- if (data.scripts &&
- data.scripts.install === "node-gyp rebuild" &&
- !data.scripts.preinstall) {
- data.gypfile = true
- }
- fixer.warn = function() { warn(makeWarning.apply(null, arguments)) }
- thingsToFix.forEach(function(thingName) {
- fixer["fix" + ucFirst(thingName)](data, strict)
- })
- data._id = data.name + "@" + data.version
-}
-
-function ucFirst (string) {
- return string.charAt(0).toUpperCase() + string.slice(1);
-}
diff --git a/assets/node_modules/normalize-package-data/lib/safe_format.js b/assets/node_modules/normalize-package-data/lib/safe_format.js
deleted file mode 100644
index b07f100..0000000
--- a/assets/node_modules/normalize-package-data/lib/safe_format.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var util = require('util')
-
-module.exports = function() {
- var args = Array.prototype.slice.call(arguments, 0)
- args.forEach(function(arg) {
- if (!arg) throw new TypeError('Bad arguments.')
- })
- return util.format.apply(null, arguments)
-}
diff --git a/assets/node_modules/normalize-package-data/lib/typos.json b/assets/node_modules/normalize-package-data/lib/typos.json
deleted file mode 100644
index 7f9dd28..0000000
--- a/assets/node_modules/normalize-package-data/lib/typos.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "topLevel": {
- "dependancies": "dependencies"
- ,"dependecies": "dependencies"
- ,"depdenencies": "dependencies"
- ,"devEependencies": "devDependencies"
- ,"depends": "dependencies"
- ,"dev-dependencies": "devDependencies"
- ,"devDependences": "devDependencies"
- ,"devDepenencies": "devDependencies"
- ,"devdependencies": "devDependencies"
- ,"repostitory": "repository"
- ,"repo": "repository"
- ,"prefereGlobal": "preferGlobal"
- ,"hompage": "homepage"
- ,"hampage": "homepage"
- ,"autohr": "author"
- ,"autor": "author"
- ,"contributers": "contributors"
- ,"publicationConfig": "publishConfig"
- ,"script": "scripts"
- },
- "bugs": { "web": "url", "name": "url" },
- "script": { "server": "start", "tests": "test" }
-}
diff --git a/assets/node_modules/normalize-package-data/lib/warning_messages.json b/assets/node_modules/normalize-package-data/lib/warning_messages.json
deleted file mode 100644
index 4890f50..0000000
--- a/assets/node_modules/normalize-package-data/lib/warning_messages.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "repositories": "'repositories' (plural) Not supported. Please pick one as the 'repository' field"
- ,"missingRepository": "No repository field."
- ,"brokenGitUrl": "Probably broken git url: %s"
- ,"nonObjectScripts": "scripts must be an object"
- ,"nonStringScript": "script values must be string commands"
- ,"nonArrayFiles": "Invalid 'files' member"
- ,"invalidFilename": "Invalid filename in 'files' list: %s"
- ,"nonArrayBundleDependencies": "Invalid 'bundleDependencies' list. Must be array of package names"
- ,"nonStringBundleDependency": "Invalid bundleDependencies member: %s"
- ,"nonDependencyBundleDependency": "Non-dependency in bundleDependencies: %s"
- ,"nonObjectDependencies": "%s field must be an object"
- ,"nonStringDependency": "Invalid dependency: %s %s"
- ,"deprecatedArrayDependencies": "specifying %s as array is deprecated"
- ,"deprecatedModules": "modules field is deprecated"
- ,"nonArrayKeywords": "keywords should be an array of strings"
- ,"nonStringKeyword": "keywords should be an array of strings"
- ,"conflictingName": "%s is also the name of a node core module."
- ,"nonStringDescription": "'description' field should be a string"
- ,"missingDescription": "No description"
- ,"missingReadme": "No README data"
- ,"missingLicense": "No license field."
- ,"nonEmailUrlBugsString": "Bug string field must be url, email, or {email,url}"
- ,"nonUrlBugsUrlField": "bugs.url field must be a string url. Deleted."
- ,"nonEmailBugsEmailField": "bugs.email field must be a string email. Deleted."
- ,"emptyNormalizedBugs": "Normalized value of bugs field is an empty object. Deleted."
- ,"nonUrlHomepage": "homepage field must be a string url. Deleted."
- ,"invalidLicense": "license should be a valid SPDX license expression"
- ,"typo": "%s should probably be %s."
-}
diff --git a/assets/node_modules/normalize-package-data/node_modules/.bin/semver b/assets/node_modules/normalize-package-data/node_modules/.bin/semver
deleted file mode 120000
index b3ca603..0000000
--- a/assets/node_modules/normalize-package-data/node_modules/.bin/semver
+++ /dev/null
@@ -1 +0,0 @@
-../../../semver/bin/semver \ No newline at end of file
diff --git a/assets/node_modules/normalize-package-data/package.json b/assets/node_modules/normalize-package-data/package.json
deleted file mode 100644
index dea34bb..0000000
--- a/assets/node_modules/normalize-package-data/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "normalize-package-data",
- "version": "2.5.0",
- "author": "Meryn Stol <merynstol@gmail.com>",
- "description": "Normalizes data that can be found in package.json files.",
- "license": "BSD-2-Clause",
- "repository": {
- "type": "git",
- "url": "git://github.com/npm/normalize-package-data.git"
- },
- "main": "lib/normalize.js",
- "scripts": {
- "test": "tap test/*.js"
- },
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- },
- "devDependencies": {
- "async": "^2.6.1",
- "tap": "^12.4.0",
- "underscore": "^1.8.3"
- },
- "files": [
- "lib/*.js",
- "lib/*.json",
- "AUTHORS"
- ]
-}
diff --git a/assets/node_modules/normalize-path/LICENSE b/assets/node_modules/normalize-path/LICENSE
deleted file mode 100644
index d32ab44..0000000
--- a/assets/node_modules/normalize-path/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2018, Jon Schlinkert.
-
-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/assets/node_modules/normalize-path/README.md b/assets/node_modules/normalize-path/README.md
deleted file mode 100644
index 726d4d6..0000000
--- a/assets/node_modules/normalize-path/README.md
+++ /dev/null
@@ -1,127 +0,0 @@
-# normalize-path [![NPM version](https://img.shields.io/npm/v/normalize-path.svg?style=flat)](https://www.npmjs.com/package/normalize-path) [![NPM monthly downloads](https://img.shields.io/npm/dm/normalize-path.svg?style=flat)](https://npmjs.org/package/normalize-path) [![NPM total downloads](https://img.shields.io/npm/dt/normalize-path.svg?style=flat)](https://npmjs.org/package/normalize-path) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/normalize-path.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/normalize-path)
-
-> Normalize slashes in a file path to be posix/unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes, unless disabled.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save normalize-path
-```
-
-## Usage
-
-```js
-const normalize = require('normalize-path');
-
-console.log(normalize('\\foo\\bar\\baz\\'));
-//=> '/foo/bar/baz'
-```
-
-**win32 namespaces**
-
-```js
-console.log(normalize('\\\\?\\UNC\\Server01\\user\\docs\\Letter.txt'));
-//=> '//?/UNC/Server01/user/docs/Letter.txt'
-
-console.log(normalize('\\\\.\\CdRomX'));
-//=> '//./CdRomX'
-```
-
-**Consecutive slashes**
-
-Condenses multiple consecutive forward slashes (except for leading slashes in win32 namespaces) to a single slash.
-
-```js
-console.log(normalize('.//foo//bar///////baz/'));
-//=> './foo/bar/baz'
-```
-
-### Trailing slashes
-
-By default trailing slashes are removed. Pass `false` as the last argument to disable this behavior and _**keep** trailing slashes_:
-
-```js
-console.log(normalize('foo\\bar\\baz\\', false)); //=> 'foo/bar/baz/'
-console.log(normalize('./foo/bar/baz/', false)); //=> './foo/bar/baz/'
-```
-
-## Release history
-
-### v3.0
-
-No breaking changes in this release.
-
-* a check was added to ensure that [win32 namespaces](https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces) are handled properly by win32 `path.parse()` after a path has been normalized by this library.
-* a minor optimization was made to simplify how the trailing separator was handled
-
-## About
-
-<details>
-<summary><strong>Contributing</strong></summary>
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-</details>
-
-<details>
-<summary><strong>Running Tests</strong></summary>
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-</details>
-
-<details>
-<summary><strong>Building docs</strong></summary>
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-</details>
-
-### Related projects
-
-Other useful path-related libraries:
-
-* [contains-path](https://www.npmjs.com/package/contains-path): Return true if a file path contains the given path. | [homepage](https://github.com/jonschlinkert/contains-path "Return true if a file path contains the given path.")
-* [is-absolute](https://www.npmjs.com/package/is-absolute): Returns true if a file path is absolute. Does not rely on the path module… [more](https://github.com/jonschlinkert/is-absolute) | [homepage](https://github.com/jonschlinkert/is-absolute "Returns true if a file path is absolute. Does not rely on the path module and can be used as a polyfill for node.js native `path.isAbolute`.")
-* [is-relative](https://www.npmjs.com/package/is-relative): Returns `true` if the path appears to be relative. | [homepage](https://github.com/jonschlinkert/is-relative "Returns `true` if the path appears to be relative.")
-* [parse-filepath](https://www.npmjs.com/package/parse-filepath): Pollyfill for node.js `path.parse`, parses a filepath into an object. | [homepage](https://github.com/jonschlinkert/parse-filepath "Pollyfill for node.js `path.parse`, parses a filepath into an object.")
-* [path-ends-with](https://www.npmjs.com/package/path-ends-with): Return `true` if a file path ends with the given string/suffix. | [homepage](https://github.com/jonschlinkert/path-ends-with "Return `true` if a file path ends with the given string/suffix.")
-* [unixify](https://www.npmjs.com/package/unixify): Convert Windows file paths to unix paths. | [homepage](https://github.com/jonschlinkert/unixify "Convert Windows file paths to unix paths.")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 35 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 1 | [phated](https://github.com/phated) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on April 19, 2018._ \ No newline at end of file
diff --git a/assets/node_modules/normalize-path/index.js b/assets/node_modules/normalize-path/index.js
deleted file mode 100644
index 6fac553..0000000
--- a/assets/node_modules/normalize-path/index.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*!
- * normalize-path <https://github.com/jonschlinkert/normalize-path>
- *
- * Copyright (c) 2014-2018, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-module.exports = function(path, stripTrailing) {
- if (typeof path !== 'string') {
- throw new TypeError('expected path to be a string');
- }
-
- if (path === '\\' || path === '/') return '/';
-
- var len = path.length;
- if (len <= 1) return path;
-
- // ensure that win32 namespaces has two leading slashes, so that the path is
- // handled properly by the win32 version of path.parse() after being normalized
- // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces
- var prefix = '';
- if (len > 4 && path[3] === '\\') {
- var ch = path[2];
- if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\') {
- path = path.slice(2);
- prefix = '//';
- }
- }
-
- var segs = path.split(/[/\\]+/);
- if (stripTrailing !== false && segs[segs.length - 1] === '') {
- segs.pop();
- }
- return prefix + segs.join('/');
-};
diff --git a/assets/node_modules/normalize-path/package.json b/assets/node_modules/normalize-path/package.json
deleted file mode 100644
index ad61098..0000000
--- a/assets/node_modules/normalize-path/package.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "name": "normalize-path",
- "description": "Normalize slashes in a file path to be posix/unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes, unless disabled.",
- "version": "3.0.0",
- "homepage": "https://github.com/jonschlinkert/normalize-path",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Blaine Bublitz (https://twitter.com/BlaineBublitz)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)"
- ],
- "repository": "jonschlinkert/normalize-path",
- "bugs": {
- "url": "https://github.com/jonschlinkert/normalize-path/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "devDependencies": {
- "gulp-format-md": "^1.0.0",
- "minimist": "^1.2.0",
- "mocha": "^3.5.3"
- },
- "keywords": [
- "absolute",
- "backslash",
- "delimiter",
- "file",
- "file-path",
- "filepath",
- "fix",
- "forward",
- "fp",
- "fs",
- "normalize",
- "path",
- "relative",
- "separator",
- "slash",
- "slashes",
- "trailing",
- "unix",
- "urix"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "description": "Other useful path-related libraries:",
- "list": [
- "contains-path",
- "is-absolute",
- "is-relative",
- "parse-filepath",
- "path-ends-with",
- "path-ends-with",
- "unixify"
- ]
- },
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/assets/node_modules/normalize-range/index.js b/assets/node_modules/normalize-range/index.js
deleted file mode 100644
index d5a2ea8..0000000
--- a/assets/node_modules/normalize-range/index.js
+++ /dev/null
@@ -1,54 +0,0 @@
-'use strict';
-module.exports = {
- wrap: wrapRange,
- limit: limitRange,
- validate: validateRange,
- test: testRange,
- curry: curry,
- name: name
-};
-
-function wrapRange(min, max, value) {
- var maxLessMin = max - min;
- return ((value - min) % maxLessMin + maxLessMin) % maxLessMin + min;
-}
-
-function limitRange(min, max, value) {
- return Math.max(min, Math.min(max, value));
-}
-
-function validateRange(min, max, value, minExclusive, maxExclusive) {
- if (!testRange(min, max, value, minExclusive, maxExclusive)) {
- throw new Error(value + ' is outside of range [' + min + ',' + max + ')');
- }
- return value;
-}
-
-function testRange(min, max, value, minExclusive, maxExclusive) {
- return !(
- value < min ||
- value > max ||
- (maxExclusive && (value === max)) ||
- (minExclusive && (value === min))
- );
-}
-
-function name(min, max, minExcl, maxExcl) {
- return (minExcl ? '(' : '[') + min + ',' + max + (maxExcl ? ')' : ']');
-}
-
-function curry(min, max, minExclusive, maxExclusive) {
- var boundNameFn = name.bind(null, min, max, minExclusive, maxExclusive);
- return {
- wrap: wrapRange.bind(null, min, max),
- limit: limitRange.bind(null, min, max),
- validate: function(value) {
- return validateRange(min, max, value, minExclusive, maxExclusive);
- },
- test: function(value) {
- return testRange(min, max, value, minExclusive, maxExclusive);
- },
- toString: boundNameFn,
- name: boundNameFn
- };
-}
diff --git a/assets/node_modules/normalize-range/license b/assets/node_modules/normalize-range/license
deleted file mode 100644
index ad5d021..0000000
--- a/assets/node_modules/normalize-range/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) James Talmage <james@talmage.io> (github.com/jamestalmage)
-
-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/assets/node_modules/normalize-range/package.json b/assets/node_modules/normalize-range/package.json
deleted file mode 100644
index b98035a..0000000
--- a/assets/node_modules/normalize-range/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "name": "normalize-range",
- "version": "0.1.2",
- "description": "Utility for normalizing a numeric range, with a wrapping function useful for polar coordinates",
- "license": "MIT",
- "repository": "jamestalmage/normalize-range",
- "author": {
- "name": "James Talmage",
- "email": "james@talmage.io",
- "url": "github.com/jamestalmage"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "npm run cover && npm run lint && npm run style",
- "cover": "istanbul cover ./node_modules/.bin/_mocha",
- "lint": "jshint --reporter=node_modules/jshint-stylish *.js test/*.js",
- "debug": "mocha",
- "watch": "mocha -w",
- "style": "jscs *.js ./**/*.js && jscs ./test/** --config=./test/.jscsrc"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "range",
- "normalize",
- "utility",
- "angle",
- "degrees",
- "polar"
- ],
- "dependencies": {},
- "devDependencies": {
- "almost-equal": "^1.0.0",
- "codeclimate-test-reporter": "^0.1.0",
- "coveralls": "^2.11.2",
- "istanbul": "^0.3.17",
- "jscs": "^2.1.1",
- "jshint": "^2.8.0",
- "jshint-stylish": "^2.0.1",
- "mocha": "^2.2.5",
- "stringify-pi": "0.0.3"
- }
-}
diff --git a/assets/node_modules/normalize-range/readme.md b/assets/node_modules/normalize-range/readme.md
deleted file mode 100644
index 29d84cd..0000000
--- a/assets/node_modules/normalize-range/readme.md
+++ /dev/null
@@ -1,148 +0,0 @@
-# normalize-range
-
-Utility for normalizing a numeric range, with a wrapping function useful for polar coordinates.
-
-[![Build Status](https://travis-ci.org/jamestalmage/normalize-range.svg?branch=master)](https://travis-ci.org/jamestalmage/normalize-range)
-[![Coverage Status](https://coveralls.io/repos/jamestalmage/normalize-range/badge.svg?branch=master&service=github)](https://coveralls.io/github/jamestalmage/normalize-range?branch=master)
-[![Code Climate](https://codeclimate.com/github/jamestalmage/normalize-range/badges/gpa.svg)](https://codeclimate.com/github/jamestalmage/normalize-range)
-[![Dependency Status](https://david-dm.org/jamestalmage/normalize-range.svg)](https://david-dm.org/jamestalmage/normalize-range)
-[![devDependency Status](https://david-dm.org/jamestalmage/normalize-range/dev-status.svg)](https://david-dm.org/jamestalmage/normalize-range#info=devDependencies)
-
-[![NPM](https://nodei.co/npm/normalize-range.png)](https://nodei.co/npm/normalize-range/)
-
-## Usage
-
-```js
-var nr = require('normalize-range');
-
-nr.wrap(0, 360, 400);
-//=> 40
-
-nr.wrap(0, 360, -90);
-//=> 270
-
-nr.limit(0, 100, 500);
-//=> 100
-
-nr.limit(0, 100, -20);
-//=> 0
-
-// There is a convenient currying function
-var wrapAngle = nr.curry(0, 360).wrap;
-var limitTo10 = nr.curry(0, 10).limit;
-
-wrapAngle(-30);
-//=> 330
-```
-## API
-
-### wrap(min, max, value)
-
-Normalizes a values that "wraps around". For example, in a polar coordinate system, 270˚ can also be
-represented as -90˚.
-For wrapping purposes we assume `max` is functionally equivalent to `min`, and that `wrap(max + 1) === wrap(min + 1)`.
-Wrap always assumes that `min` is *inclusive*, and `max` is *exclusive*.
-In other words, if `value === max` the function will wrap it, and return `min`, but `min` will not be wrapped.
-
-```js
-nr.wrap(0, 360, 0) === 0;
-nr.wrap(0, 360, 360) === 0;
-nr.wrap(0, 360, 361) === 1;
-nr.wrap(0, 360, -1) === 359;
-```
-
-You are not restricted to whole numbers, and ranges can be negative.
-
-```js
-var π = Math.PI;
-var radianRange = nr.curry(-π, π);
-
-redianRange.wrap(0) === 0;
-nr.wrap(π) === -π;
-nr.wrap(4 * π / 3) === -2 * π / 3;
-```
-
-### limit(min, max, value)
-
-Normalize the value by bringing it within the range.
-If `value` is greater than `max`, `max` will be returned.
-If `value` is less than `min`, `min` will be returned.
-Otherwise, `value` is returned unaltered.
-Both ends of this range are *inclusive*.
-
-### test(min, max, value, [minExclusive], [maxExclusive])
-
-Returns `true` if `value` is within the range, `false` otherwise.
-It defaults to `inclusive` on both ends of the range, but that can be
-changed by setting `minExclusive` and/or `maxExclusive` to a truthy value.
-
-### validate(min, max, value, [minExclusive], [maxExclusive])
-
-Returns `value` or throws an error if `value` is outside the specified range.
-
-### name(min, max, value, [minExclusive], [maxExclusive])
-
-Returns a string representing this range in
-[range notation](https://en.wikipedia.org/wiki/Interval_(mathematics)#Classification_of_intervals).
-
-### curry(min, max, [minExclusive], [maxExclusive])
-
-Convenience method for currying all method arguments except `value`.
-
-```js
-var angle = require('normalize-range').curry(-180, 180, false, true);
-
-angle.wrap(270)
-//=> -90
-
-angle.limit(200)
-//=> 180
-
-angle.test(0)
-//=> true
-
-angle.validate(300)
-//=> throws an Error
-
-angle.toString() // or angle.name()
-//=> "[-180,180)"
-```
-
-#### min
-
-*Required*
-Type: `number`
-
-The minimum value (inclusive) of the range.
-
-#### max
-
-*Required*
-Type: `number`
-
-The maximum value (exclusive) of the range.
-
-#### value
-
-*Required*
-Type: `number`
-
-The value to be normalized.
-
-#### returns
-
-Type: `number`
-
-The normalized value.
-
-## Building and Releasing
-
-- `npm test`: tests, linting, coverage and style checks.
-- `npm run watch`: autotest mode for active development.
-- `npm run debug`: run tests without coverage (istanbul can obscure line #'s)
-
-Release via `cut-release` tool.
-
-## License
-
-MIT © [James Talmage](http://github.com/jamestalmage)
diff --git a/assets/node_modules/normalize-selector/.npmignore b/assets/node_modules/normalize-selector/.npmignore
deleted file mode 100644
index 3c3629e..0000000
--- a/assets/node_modules/normalize-selector/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/assets/node_modules/normalize-selector/README.md b/assets/node_modules/normalize-selector/README.md
deleted file mode 100644
index a30ba08..0000000
--- a/assets/node_modules/normalize-selector/README.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# Normalize-Selector
-
-Normalize CSS selectors.
-
-Examples:
-
-* `#foo>.bar` -> `#foo > .bar`
-* ` #foo > .bar ` -> `#foo > .bar`
-* `foo[ a = 'b' ]` -> `foo[a='b']`
-
-## Tests
-
-Run mocha tests on node.js with:
-
-```
-npm test
-```
-
-or:
-
-```
-node ./test/mocha/node-suite.js
-```
-
-## rawgithub
-
-View the browser suite directly on
-[rawgithub](https://rawgithub.com/getify/normalize-selector/master/test/mocha/browser-suite.html)
-
-## License
-
-The code and all the documentation are released under the MIT license.
-
-http://getify.mit-license.org/
diff --git a/assets/node_modules/normalize-selector/lib/normalize-selector.js b/assets/node_modules/normalize-selector/lib/normalize-selector.js
deleted file mode 100644
index 909cf54..0000000
--- a/assets/node_modules/normalize-selector/lib/normalize-selector.js
+++ /dev/null
@@ -1,163 +0,0 @@
-/* normalize-selector v0.1.0 (c) 2014 Kyle Simpson */
-
-(function UMD(name,context,definition){
- if (typeof module !== "undefined" && module.exports) { module.exports = definition(); }
- else if (typeof define === "function" && define.amd) { define(definition); }
- else { context[name] = definition(name,context); }
-})("normalizeSelector",this,function DEF(name,context){
- "use strict";
-
- function normalizeSelector(sel) {
-
- // save unmatched text, if any
- function saveUnmatched() {
- if (unmatched) {
- // whitespace needed after combinator?
- if (tokens.length > 0 &&
- /^[~+>]$/.test(tokens[tokens.length-1])
- ) {
- tokens.push(" ");
- }
-
- // save unmatched text
- tokens.push(unmatched);
- }
- }
-
- var tokens = [], match, unmatched, regex, state = [0],
- next_match_idx = 0, prev_match_idx,
- not_escaped_pattern = /(?:[^\\]|(?:^|[^\\])(?:\\\\)+)$/,
- whitespace_pattern = /^\s+$/,
- attribute_nonspecial_pattern = /[^\s=~!^|$*\[\]\(\)]{2}/,
- state_patterns = [
- /\s+|\/\*|["'>~+\[\(]/g, // general
- /\s+|\/\*|["'\[\]\(\)]/g, // [..] set
- /\s+|\/\*|["'\[\]\(\)]/g, // (..) set
- null, // string literal (placeholder)
- /\*\//g // comment
- ]
- ;
-
- sel = sel.trim();
-
- while (true) {
- unmatched = "";
-
- regex = state_patterns[state[state.length-1]];
-
- regex.lastIndex = next_match_idx;
- match = regex.exec(sel);
-
- // matched text to process?
- if (match) {
- prev_match_idx = next_match_idx;
- next_match_idx = regex.lastIndex;
-
- // collect the previous string chunk not matched before this token
- if (prev_match_idx < next_match_idx - match[0].length) {
- unmatched = sel.substring(prev_match_idx,next_match_idx - match[0].length);
- }
-
- // need to force a space (possibly skipped
- // previously by the parser)?
- if (
- state[state.length-1] === 1 &&
- attribute_nonspecial_pattern.test(
- tokens[tokens.length-1].substr(-1) +
- unmatched.charAt(0)
- )
- ) {
- tokens.push(" ");
- }
-
- // general, [ ] pair, ( ) pair?
- if (state[state.length-1] < 3) {
- saveUnmatched();
-
- // starting a [ ] pair?
- if (match[0] === "[") {
- state.push(1);
- }
- // starting a ( ) pair?
- else if (match[0] === "(") {
- state.push(2);
- }
- // starting a string literal?
- else if (/^["']$/.test(match[0])) {
- state.push(3);
- state_patterns[3] = new RegExp(match[0],"g");
- }
- // starting a comment?
- else if (match[0] === "/*") {
- state.push(4);
- }
- // ending a [ ] or ( ) pair?
- else if (/^[\]\)]$/.test(match[0]) && state.length > 0) {
- state.pop();
- }
- // handling whitespace or a combinator?
- else if (/^(?:\s+|[~+>])$/.test(match[0])) {
- // need to insert whitespace before?
- if (tokens.length > 0 &&
- !whitespace_pattern.test(tokens[tokens.length-1]) &&
- state[state.length-1] === 0
- ) {
- // add normalized whitespace
- tokens.push(" ");
- }
-
- // whitespace token we can skip?
- if (whitespace_pattern.test(match[0])) {
- continue;
- }
- }
-
- // save matched text
- tokens.push(match[0]);
- }
- // otherwise, string literal or comment
- else {
- // save unmatched text
- tokens[tokens.length-1] += unmatched;
-
- // unescaped terminator to string literal or comment?
- if (not_escaped_pattern.test(tokens[tokens.length-1])) {
- // comment terminator?
- if (state[state.length-1] === 4) {
- // ok to drop comment?
- if (tokens.length < 2 ||
- whitespace_pattern.test(tokens[tokens.length-2])
- ) {
- tokens.pop();
- }
- // otherwise, turn comment into whitespace
- else {
- tokens[tokens.length-1] = " ";
- }
-
- // handled already
- match[0] = "";
- }
-
- state.pop();
- }
-
- // append matched text to existing token
- tokens[tokens.length-1] += match[0];
- }
- }
- // otherwise, end of processing (no more matches)
- else {
- unmatched = sel.substr(next_match_idx);
- saveUnmatched();
-
- break;
- }
- }
-
- return tokens.join("").trim();
- }
-
- return normalizeSelector;
-});
-
diff --git a/assets/node_modules/normalize-selector/package.json b/assets/node_modules/normalize-selector/package.json
deleted file mode 100644
index 745386d..0000000
--- a/assets/node_modules/normalize-selector/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "normalize-selector",
- "version": "0.2.0",
- "description": "Normalize CSS Selectors",
- "main": "./lib/normalize-selector.js",
- "scripts": {
- "test": "node ./test/mocha/node-suite.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/getify/normalize-selector.git"
- },
- "keywords": [
- "CSS"
- ],
- "bugs": {
- "url": "https://github.com/getify/normalize-selector/issues",
- "email": "getify@gmail.com"
- },
- "homepage": "http://github.com/getify/normalize-selector",
- "author": "Kyle Simpson <getify@gmail.com>",
- "contributors": [
- "David Kaye (https://github.com/dfkaye)"
- ],
- "license": "MIT",
- "devDependencies": {
- "assertik": "^1.0.0",
- "mocha": "^2.2.5"
- }
-}
diff --git a/assets/node_modules/normalize-selector/test/mocha/browser-suite.html b/assets/node_modules/normalize-selector/test/mocha/browser-suite.html
deleted file mode 100644
index f44c7c5..0000000
--- a/assets/node_modules/normalize-selector/test/mocha/browser-suite.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <meta charset="utf-8">
- <title>mocha browser-suite: normalize-selector</title>
- <link rel="stylesheet" href="../../node_modules/mocha/mocha.css" />
- </head>
- <body>
- <div id="mocha"></div>
- <script src="../../lib/normalize-selector.js"></script>
- <script src="../../node_modules/assertik/assertik.js"></script>
- <script src="../../node_modules/mocha/mocha.js"></script>
- <script>mocha.setup('qunit')</script>
-
- <!-- get tests and start -->
- <script src="./suite.js"></script>
- <script>
- mocha.checkLeaks();
- mocha.globals(['boilerplate']); // watch our boilerplate function
- mocha.run();
- </script>
- </body>
-</html> \ No newline at end of file
diff --git a/assets/node_modules/normalize-selector/test/mocha/node-suite.js b/assets/node_modules/normalize-selector/test/mocha/node-suite.js
deleted file mode 100644
index 087a316..0000000
--- a/assets/node_modules/normalize-selector/test/mocha/node-suite.js
+++ /dev/null
@@ -1,18 +0,0 @@
-// test/mocha/node-suite.js
-
-// This runs with mocha programmatically rather than from the command line.
-// how-to-with-comments taken from https://github.com/itaylor/qunit-mocha-ui
-
-//Load mocha
-var Mocha = require("mocha");
-
-//Tell mocha to use the interface.
-var mocha = new Mocha({ui:"qunit", reporter:"spec"});
-
-//Add your test files
-mocha.addFile("./test/mocha/suite.js");
-
-//Run your tests
-mocha.run(function(failures){
- process.exit(failures);
-}); \ No newline at end of file
diff --git a/assets/node_modules/normalize-selector/test/mocha/suite.js b/assets/node_modules/normalize-selector/test/mocha/suite.js
deleted file mode 100644
index 2f568b2..0000000
--- a/assets/node_modules/normalize-selector/test/mocha/suite.js
+++ /dev/null
@@ -1,117 +0,0 @@
-// mocha/suite.js for normalize-selector.js
-
-var normalizeSelector;
-var assert;
-
-if (typeof require == 'function') {
- // enable to re-use in a browser without require.js
- normalizeSelector = require('../../lib/normalize-selector.js');
- assert = require('assertik');
-} else {
- assert = window.assertik;
-}
-
-suite('normalizeSelector');
-
-test('should be function', function () {
- assert.equal(typeof normalizeSelector, 'function', 'wrong type');
-});
-
-test('should normalize BIG SELECTOR', function () {
- var selector = "*~*>*.foo[ href *= \"/\" ]:hover>*[ data-foo = " +
- "\"bar\" ]:focus+*.baz::after";
- var expected = "* ~ * > *.foo[href*=\"/\"]:hover > *[data-foo=\"bar\"]:" +
- "focus + *.baz::after";
- assert.equal(normalizeSelector(selector), expected);
-});
-
-test('should return optimized selector with no change', function () {
- assert.equal(normalizeSelector("#foo .bar"), "#foo .bar");
-});
-
-test('should trim whitespace', function () {
- assert.equal(normalizeSelector(" #foo .bar "), "#foo .bar");
-});
-
-test('should separate between combinators', function () {
- assert.equal(normalizeSelector("#foo>.bar+.baz"), "#foo > .bar + .baz");
-});
-
-test('should not separate concatenated classes', function () {
- assert.equal(normalizeSelector("#foo.bar.baz"), "#foo.bar.baz");
-});
-
-test('should normalize asterisks', function () {
- var selector = " *.class[ data * = 'data' ] ";
- assert.equal(normalizeSelector(selector), "*.class[data*='data']");
-});
-
-test('should remove comments', function () {
- assert.equal(normalizeSelector(".e1 /* c2 */ .e2"), ".e1 .e2");
- assert.equal(normalizeSelector(" /*c1*/ .e1/*c2*/.e2 /*c3*/ .e3 /*c4*/ "), ".e1 .e2 .e3");
- assert.equal(normalizeSelector(" /*c1*/ .e1/*c2*/.e2 /*c3*/ .e3 "), ".e1 .e2 .e3");
- assert.equal(normalizeSelector("/*c1*/.e1/*c2*/.e2 /*c3*/ .e3"), ".e1 .e2 .e3");
- assert.equal(normalizeSelector(".e1/*c2*/.e2 /*c3*/ .e3"), ".e1 .e2 .e3");
-});
-
-test('should replace comments with single whitespace', function () {
- assert.equal(normalizeSelector("tag/* c2 */tag"), "tag tag");
-});
-
-test('should normalize parentheses', function() {
- var selector = "((a ) (b(c ) ) d )>*[ data-foo = \"bar\" ]";
- var expected = "((a)(b(c))d) > *[data-foo=\"bar\"]";
- assert.equal(normalizeSelector(selector), expected);
-});
-
-test('should normalize @-rule parentheses', function () {
- var selector = "@media screen and ( color ), projection and (color )";
- var expected = "@media screen and (color), projection and (color)";
- assert.equal(normalizeSelector(selector), expected);
-});
-
-test('should normalize @-rules with compound parentheses', function () {
- var selector = "@media handheld and ( min-width : 20em ), screen " +
- "and ( min-width: 20em )";
- var expected = "@media handheld and (min-width:20em), screen and " +
- "(min-width:20em)";
- assert.equal(normalizeSelector(selector), expected);
-});
-
-test('should normalize @-rules with operations', function () {
- var selector = "@media screen and ( device-aspect-ratio : 2560 / 1440 )";
- var expected = "@media screen and (device-aspect-ratio:2560/1440)";
- assert.equal(normalizeSelector(selector), expected);
-});
-
-test('should normalize descriptors', function () {
- var selector = "@counter-style triangle";
- assert.equal(normalizeSelector(selector), "@counter-style triangle");
-});
-
-test('should normalize case-insensitivity attribute selector', function () {
- assert.equal(normalizeSelector("[ att ~= val i ]"), "[att~=val i]");
- assert.equal(normalizeSelector("#foo[ a = \"b\" i ]"), "#foo[a=\"b\" i]");
-});
-
-test('should normalize namespaced attribute selector', function () {
- var selector = ' unit[ sh | quantity = "200" ] ';
- var expected = 'unit[sh|quantity="200"]';
- assert.equal(normalizeSelector(selector), expected);
-});
-
-test('should normalize pseudo-classes', function () {
- var selector = " :nth-last-of-type( ) ";
- assert.equal(normalizeSelector(selector), ":nth-last-of-type()");
-});
-
-test('should normalize pseudo-elements', function () {
- var selector = " ::nth-fragment( ) ";
- assert.equal(normalizeSelector(selector), "::nth-fragment()");
-});
-
-test('should normalize backslashes', function () {
- var selector = "#foo[ a = \" b \\\" c\\\\\" ]";
- var expected = "#foo[a=\" b \\\" c\\\\\"]";
- assert.equal(normalizeSelector(selector), expected);
-});
diff --git a/assets/node_modules/normalize-selector/tests.js b/assets/node_modules/normalize-selector/tests.js
deleted file mode 100644
index f8b313a..0000000
--- a/assets/node_modules/normalize-selector/tests.js
+++ /dev/null
@@ -1,49 +0,0 @@
-var normalize = require("./lib/normalize-selector.js");
-
-var tests = {
- /*test*/"#foo .bar":
- /*expected*/"#foo .bar",
- /*test*/" #foo .bar ":
- /*expected*/"#foo .bar",
- /*test*/"#foo>.bar":
- /*expected*/"#foo > .bar",
- /*test*/" unit[ sh | quantity = \"200\" ] ":
- /*expected*/"unit[sh|quantity=\"200\"]",
- /*test*/"*~*>*.foo[ href *= \"/\" ]:hover>*[ data-foo = \"bar\" ]:focus+*.baz::after":
- /*expected*/"* ~ * > *.foo[href*=\"/\"]:hover > *[data-foo=\"bar\"]:focus + *.baz::after",
- /*test*/"@media screen and ( color ), projection and ( color )":
- /*expected*/"@media screen and (color), projection and (color)",
- /*test*/"@media handheld and ( min-width : 20em ), screen and ( min-width: 20em )":
- /*expected*/"@media handheld and (min-width:20em), screen and (min-width:20em)",
- /*test*/"@media screen and ( device-aspect-ratio : 2560 / 1440 )":
- /*expected*/"@media screen and (device-aspect-ratio:2560/1440)",
- /*test*/"((a ) (b(c ) ) d )>*[ data-foo = \"bar\" ]":
- /*expected*/"((a)(b(c))d) > *[data-foo=\"bar\"]",
- /*test*/"#foo[ a = \" b \\\" c\\\\\" ]":
- /*expected*/"#foo[a=\" b \\\" c\\\\\"]",
- /*test*/"#foo[ a = \"b\" i ]":
- /*expected*/"#foo[a=\"b\" i]",
- /*test*/" /*c1*/ .e1/*c2*/.e2 /*c3*/ .e3 /*c4*/ ":
- /*expected*/".e1 .e2 .e3",
- /*test*/" /*c1*/ .e1/*c2*/.e2 /*c3*/ .e3 ":
- /*expected*/".e1 .e2 .e3",
- /*test*/" /*c1*/ .e1/*c2*/.e2 /*c3*/ .e3":
- /*expected*/".e1 .e2 .e3",
- /*test*/"/*c1*/.e1/*c2*/.e2 /*c3*/ .e3":
- /*expected*/".e1 .e2 .e3",
- /*test*/".e1/*c2*/.e2 /*c3*/ .e3":
- /*expected*/".e1 .e2 .e3"
-};
-
-var test, tmp;
-for (test in tests) {
- if ((tmp = normalize(test)) && tmp === tests[test]) {
- console.log("PASSED: " + test + " (" + tmp + ")");
- }
- else {
- console.log("FAILED.\n Expected: " + tests[test] + "\n Received: " + tmp);
- break;
- }
-}
-
-console.log("Tests done.");
diff --git a/assets/node_modules/num2fraction/.editorconfig b/assets/node_modules/num2fraction/.editorconfig
deleted file mode 100644
index 4a12c11..0000000
--- a/assets/node_modules/num2fraction/.editorconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-# editorconfig.org
-root = true
-
-[*]
-charset = utf-8
-indent_style = space
-indent_size = 2
-end_of_line = lf
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-
-[*.md]
-trim_trailing_whitespace = false
diff --git a/assets/node_modules/num2fraction/.npmignore b/assets/node_modules/num2fraction/.npmignore
deleted file mode 100644
index a8d3284..0000000
--- a/assets/node_modules/num2fraction/.npmignore
+++ /dev/null
@@ -1,8 +0,0 @@
-.gitignore
-.travis.yml
-
-node_modules/
-test/
-
-gulpfile.js
-Gruntfile.js
diff --git a/assets/node_modules/num2fraction/LICENSE b/assets/node_modules/num2fraction/LICENSE
deleted file mode 100644
index 9d10f01..0000000
--- a/assets/node_modules/num2fraction/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 PostCSS
-
-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/assets/node_modules/num2fraction/README.md b/assets/node_modules/num2fraction/README.md
deleted file mode 100644
index aa47197..0000000
--- a/assets/node_modules/num2fraction/README.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# num2fraction
-
-[![Build Status](https://travis-ci.org/yisibl/num2fraction.svg)](https://travis-ci.org/yisibl/num2fraction)
-[![NPM Downloads](https://img.shields.io/npm/dm/num2fraction.svg?style=flat)](https://www.npmjs.com/package/num2fraction)
-[![NPM Version](http://img.shields.io/npm/v/num2fraction.svg?style=flat)](https://www.npmjs.com/package/num2fraction)
-[![License](https://img.shields.io/npm/l/num2fraction.svg?style=flat)](http://opensource.org/licenses/MIT)
-
-> Converting Number to Fraction with Node.js.
-
-## Installation
-
-```console
-npm install num2fraction
-```
-
-## Usage
-
-```js
-var π = Math.PI
-var n2f = require('num2fraction')
- console.log(n2f(0)) // => 0
- console.log(n2f(.2)) // => 1/5
- console.log(n2f(1.1)) // => 11/10
- console.log(n2f(1.2)) // => 6/5
- console.log(n2f(1.3)) // => 13/10
- console.log(n2f(1.4)) // => 7/5
- console.log(n2f(1.5)) // => 3/2
- console.log(n2f(2)) // => 2/1
- console.log(n2f(2.1)) // => 21/10
- console.log(n2f(3)) // => 3/1
- console.log(n2f(2.555)) // => 511/200
- console.log(n2f(8.36)) // => 209/25
- console.log(n2f('3em')) // => 3/1
- console.log(n2f('1.5px')) // => 3/2
- console.log(n2f(7 / 9) // => 7/9
- console.log(n2f(8 / 9) // => 8/9
- console.log(n2f(512 / 999) // => 512/999
- console.log(n2f((2 * π / 3) / π) // => 2/3
- console.log(n2f((8 * 5) / (4 / 2)) // => 20/1
-```
-
-## Example
-
-Opera [old versions](http://www.opera.com/docs/specs/presto28/css/o-vendor/) support the non-standard `-o-min-device-pixel-ratio` or `-o-max-device-pixel-ratio` in CSS media queries.
-
-```css
-@media
- only screen and (-webkit-min-device-pixel-ratio: 2),
- only screen and ( min--moz-device-pixel-ratio: 2),
- only screen and ( -o-min-device-pixel-ratio: 2/1), /* Opera */
- only screen and ( min-device-pixel-ratio: 2),
- only screen and ( min-resolution: 192dpi), /* fallback */
- only screen and ( min-resolution: 2dppx) {
-
-}
-```
-
-## Changelog
-
-### v1.2.2
-
-* \+ Remove: Debug log message.
-
-### v1.2.1
-
-* \+ Fix: 0 must be converted to a string.
-
-### v1.2.0
-
-* \+ Fix: Accomodate rounding errors. (by @jamestalmage)
-* \+ Fix: The negative sign should be on numerator. (by @jamestalmage)
-
-### v1.1.0
-
-* \+ Use more precise (not fixed) precision factor for the calculation
-
-### v1.0.1
-
-* \- Remove "ci.testling.com"
-
-### V1.0.0
-
-> First release.
-
-## License
-
-[MIT](LICENSE)
diff --git a/assets/node_modules/num2fraction/index.js b/assets/node_modules/num2fraction/index.js
deleted file mode 100644
index 659deca..0000000
--- a/assets/node_modules/num2fraction/index.js
+++ /dev/null
@@ -1,48 +0,0 @@
-'use strict'
-
-var abs = Math.abs
-var round = Math.round
-
-function almostEq(a, b) {
- return abs(a - b) <= 9.5367432e-7
-}
-
-//最大公约数 Greatest Common Divisor
-function GCD(a, b) {
- if (almostEq(b, 0)) return a
- return GCD(b, a % b)
-}
-
-function findPrecision(n) {
- var e = 1
-
- while (!almostEq(round(n * e) / e, n)) {
- e *= 10
- }
-
- return e
-}
-
-function num2fraction(num) {
- if (num === 0 || num === '0') return '0'
-
- if (typeof num === 'string') {
- num = parseFloat(num)
- }
-
-
- var precision = findPrecision(num) //精确度
- var number = num * precision
- var gcd = abs(GCD(number, precision))
-
- //分子
- var numerator = number / gcd
- //分母
- var denominator = precision / gcd
-
- //分数
- return round(numerator) + '/' + round(denominator)
-}
-
-module.exports = num2fraction
-
diff --git a/assets/node_modules/num2fraction/package.json b/assets/node_modules/num2fraction/package.json
deleted file mode 100644
index ff97090..0000000
--- a/assets/node_modules/num2fraction/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "num2fraction",
- "version": "1.2.2",
- "description": "Convert number to fraction",
- "main": "index.js",
- "author": {
- "name": "yisi",
- "email": "yiorsi@gmail.com",
- "url": "http://iyunlu.com/view"
- },
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "git@github.com:yisibl/num2fraction.git"
- },
- "keywords": [
- "fraction",
- "number",
- "math",
- "maths",
- "arithmetic",
- "gcd",
- "rational"
- ],
- "devDependencies": {
- "tape": "^3.0.0"
- },
- "scripts": {
- "test": "tape test/*.js"
- }
-}
diff --git a/assets/node_modules/once/LICENSE b/assets/node_modules/once/LICENSE
deleted file mode 100644
index 19129e3..0000000
--- a/assets/node_modules/once/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-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/assets/node_modules/once/README.md b/assets/node_modules/once/README.md
deleted file mode 100644
index 1f1ffca..0000000
--- a/assets/node_modules/once/README.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# once
-
-Only call a function once.
-
-## usage
-
-```javascript
-var once = require('once')
-
-function load (file, cb) {
- cb = once(cb)
- loader.load('file')
- loader.once('load', cb)
- loader.once('error', cb)
-}
-```
-
-Or add to the Function.prototype in a responsible way:
-
-```javascript
-// only has to be done once
-require('once').proto()
-
-function load (file, cb) {
- cb = cb.once()
- loader.load('file')
- loader.once('load', cb)
- loader.once('error', cb)
-}
-```
-
-Ironically, the prototype feature makes this module twice as
-complicated as necessary.
-
-To check whether you function has been called, use `fn.called`. Once the
-function is called for the first time the return value of the original
-function is saved in `fn.value` and subsequent calls will continue to
-return this value.
-
-```javascript
-var once = require('once')
-
-function load (cb) {
- cb = once(cb)
- var stream = createStream()
- stream.once('data', cb)
- stream.once('end', function () {
- if (!cb.called) cb(new Error('not found'))
- })
-}
-```
-
-## `once.strict(func)`
-
-Throw an error if the function is called twice.
-
-Some functions are expected to be called only once. Using `once` for them would
-potentially hide logical errors.
-
-In the example below, the `greet` function has to call the callback only once:
-
-```javascript
-function greet (name, cb) {
- // return is missing from the if statement
- // when no name is passed, the callback is called twice
- if (!name) cb('Hello anonymous')
- cb('Hello ' + name)
-}
-
-function log (msg) {
- console.log(msg)
-}
-
-// this will print 'Hello anonymous' but the logical error will be missed
-greet(null, once(msg))
-
-// once.strict will print 'Hello anonymous' and throw an error when the callback will be called the second time
-greet(null, once.strict(msg))
-```
diff --git a/assets/node_modules/once/once.js b/assets/node_modules/once/once.js
deleted file mode 100644
index 2354067..0000000
--- a/assets/node_modules/once/once.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var wrappy = require('wrappy')
-module.exports = wrappy(once)
-module.exports.strict = wrappy(onceStrict)
-
-once.proto = once(function () {
- Object.defineProperty(Function.prototype, 'once', {
- value: function () {
- return once(this)
- },
- configurable: true
- })
-
- Object.defineProperty(Function.prototype, 'onceStrict', {
- value: function () {
- return onceStrict(this)
- },
- configurable: true
- })
-})
-
-function once (fn) {
- var f = function () {
- if (f.called) return f.value
- f.called = true
- return f.value = fn.apply(this, arguments)
- }
- f.called = false
- return f
-}
-
-function onceStrict (fn) {
- var f = function () {
- if (f.called)
- throw new Error(f.onceError)
- f.called = true
- return f.value = fn.apply(this, arguments)
- }
- var name = fn.name || 'Function wrapped with `once`'
- f.onceError = name + " shouldn't be called more than once"
- f.called = false
- return f
-}
diff --git a/assets/node_modules/once/package.json b/assets/node_modules/once/package.json
deleted file mode 100644
index 16815b2..0000000
--- a/assets/node_modules/once/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "once",
- "version": "1.4.0",
- "description": "Run a function exactly one time",
- "main": "once.js",
- "directories": {
- "test": "test"
- },
- "dependencies": {
- "wrappy": "1"
- },
- "devDependencies": {
- "tap": "^7.0.1"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "files": [
- "once.js"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/once"
- },
- "keywords": [
- "once",
- "function",
- "one",
- "single"
- ],
- "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
- "license": "ISC"
-}
diff --git a/assets/node_modules/p-limit/index.d.ts b/assets/node_modules/p-limit/index.d.ts
deleted file mode 100644
index 22094f1..0000000
--- a/assets/node_modules/p-limit/index.d.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-export interface Limit {
- /**
- @param fn - Promise-returning/async function.
- @param arguments - Any arguments to pass through to `fn`. Support for passing arguments on to the `fn` is provided in order to be able to avoid creating unnecessary closures. You probably don't need this optimization unless you're pushing a lot of functions.
- @returns The promise returned by calling `fn(...arguments)`.
- */
- <Arguments extends unknown[], ReturnType>(
- fn: (...arguments: Arguments) => PromiseLike<ReturnType> | ReturnType,
- ...arguments: Arguments
- ): Promise<ReturnType>;
-
- /**
- The number of promises that are currently running.
- */
- readonly activeCount: number;
-
- /**
- The number of promises that are waiting to run (i.e. their internal `fn` was not called yet).
- */
- readonly pendingCount: number;
-}
-
-/**
-Run multiple promise-returning & async functions with limited concurrency.
-
-@param concurrency - Concurrency limit. Minimum: `1`.
-@returns A `limit` function.
-*/
-export default function pLimit(concurrency: number): Limit;
diff --git a/assets/node_modules/p-limit/index.js b/assets/node_modules/p-limit/index.js
deleted file mode 100644
index e8ed405..0000000
--- a/assets/node_modules/p-limit/index.js
+++ /dev/null
@@ -1,52 +0,0 @@
-'use strict';
-const pTry = require('p-try');
-
-const pLimit = concurrency => {
- if (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {
- return Promise.reject(new TypeError('Expected `concurrency` to be a number from 1 and up'));
- }
-
- const queue = [];
- let activeCount = 0;
-
- const next = () => {
- activeCount--;
-
- if (queue.length > 0) {
- queue.shift()();
- }
- };
-
- const run = (fn, resolve, ...args) => {
- activeCount++;
-
- const result = pTry(fn, ...args);
-
- resolve(result);
-
- result.then(next, next);
- };
-
- const enqueue = (fn, resolve, ...args) => {
- if (activeCount < concurrency) {
- run(fn, resolve, ...args);
- } else {
- queue.push(run.bind(null, fn, resolve, ...args));
- }
- };
-
- const generator = (fn, ...args) => new Promise(resolve => enqueue(fn, resolve, ...args));
- Object.defineProperties(generator, {
- activeCount: {
- get: () => activeCount
- },
- pendingCount: {
- get: () => queue.length
- }
- });
-
- return generator;
-};
-
-module.exports = pLimit;
-module.exports.default = pLimit;
diff --git a/assets/node_modules/p-limit/license b/assets/node_modules/p-limit/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/p-limit/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/p-limit/package.json b/assets/node_modules/p-limit/package.json
deleted file mode 100644
index fa42268..0000000
--- a/assets/node_modules/p-limit/package.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "name": "p-limit",
- "version": "2.2.2",
- "description": "Run multiple promise-returning & async functions with limited concurrency",
- "license": "MIT",
- "repository": "sindresorhus/p-limit",
- "funding": "https://github.com/sponsors/sindresorhus",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "xo && ava && tsd-check"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "promise",
- "limit",
- "limited",
- "concurrency",
- "throttle",
- "throat",
- "rate",
- "batch",
- "ratelimit",
- "task",
- "queue",
- "async",
- "await",
- "promises",
- "bluebird"
- ],
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "devDependencies": {
- "ava": "^1.2.1",
- "delay": "^4.1.0",
- "in-range": "^1.0.0",
- "random-int": "^1.0.0",
- "time-span": "^2.0.0",
- "tsd-check": "^0.3.0",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/p-limit/readme.md b/assets/node_modules/p-limit/readme.md
deleted file mode 100644
index 35b52d5..0000000
--- a/assets/node_modules/p-limit/readme.md
+++ /dev/null
@@ -1,93 +0,0 @@
-# p-limit [![Build Status](https://travis-ci.org/sindresorhus/p-limit.svg?branch=master)](https://travis-ci.org/sindresorhus/p-limit)
-
-> Run multiple promise-returning & async functions with limited concurrency
-
-## Install
-
-```
-$ npm install p-limit
-```
-
-## Usage
-
-```js
-const pLimit = require('p-limit');
-
-const limit = pLimit(1);
-
-const input = [
- limit(() => fetchSomething('foo')),
- limit(() => fetchSomething('bar')),
- limit(() => doSomething())
-];
-
-(async () => {
- // Only one promise is run at once
- const result = await Promise.all(input);
- console.log(result);
-})();
-```
-
-## API
-
-### pLimit(concurrency)
-
-Returns a `limit` function.
-
-#### concurrency
-
-Type: `number`\
-Minimum: `1`\
-Default: `Infinity`
-
-Concurrency limit.
-
-### limit(fn, ...args)
-
-Returns the promise returned by calling `fn(...args)`.
-
-#### fn
-
-Type: `Function`
-
-Promise-returning/async function.
-
-#### args
-
-Any arguments to pass through to `fn`.
-
-Support for passing arguments on to the `fn` is provided in order to be able to avoid creating unnecessary closures. You probably don't need this optimization unless you're pushing a *lot* of functions.
-
-### limit.activeCount
-
-The number of promises that are currently running.
-
-### limit.pendingCount
-
-The number of promises that are waiting to run (i.e. their internal `fn` was not called yet).
-
-## FAQ
-
-### How is this different from the [`p-queue`](https://github.com/sindresorhus/p-queue) package?
-
-This package is only about limiting the number of concurrent executions, while `p-queue` is a fully featured queue implementation with lots of different options, introspection, and ability to pause the queue.
-
-## Related
-
-- [p-queue](https://github.com/sindresorhus/p-queue) - Promise queue with concurrency control
-- [p-throttle](https://github.com/sindresorhus/p-throttle) - Throttle promise-returning & async functions
-- [p-debounce](https://github.com/sindresorhus/p-debounce) - Debounce promise-returning & async functions
-- [p-all](https://github.com/sindresorhus/p-all) - Run promise-returning & async functions concurrently with optional limited concurrency
-- [More…](https://github.com/sindresorhus/promise-fun)
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-p-limit?utm_source=npm-p-limit&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
diff --git a/assets/node_modules/p-locate/index.d.ts b/assets/node_modules/p-locate/index.d.ts
deleted file mode 100644
index 14115e1..0000000
--- a/assets/node_modules/p-locate/index.d.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-declare namespace pLocate {
- interface Options {
- /**
- Number of concurrently pending promises returned by `tester`. Minimum: `1`.
-
- @default Infinity
- */
- readonly concurrency?: number;
-
- /**
- Preserve `input` order when searching.
-
- Disable this to improve performance if you don't care about the order.
-
- @default true
- */
- readonly preserveOrder?: boolean;
- }
-}
-
-declare const pLocate: {
- /**
- Get the first fulfilled promise that satisfies the provided testing function.
-
- @param input - An iterable of promises/values to test.
- @param tester - This function will receive resolved values from `input` and is expected to return a `Promise<boolean>` or `boolean`.
- @returns A `Promise` that is fulfilled when `tester` resolves to `true` or the iterable is done, or rejects if any of the promises reject. The fulfilled value is the current iterable value or `undefined` if `tester` never resolved to `true`.
-
- @example
- ```
- import pathExists = require('path-exists');
- import pLocate = require('p-locate');
-
- const files = [
- 'unicorn.png',
- 'rainbow.png', // Only this one actually exists on disk
- 'pony.png'
- ];
-
- (async () => {
- const foundPath = await pLocate(files, file => pathExists(file));
-
- console.log(foundPath);
- //=> 'rainbow'
- })();
- ```
- */
- <ValueType>(
- input: Iterable<PromiseLike<ValueType> | ValueType>,
- tester: (element: ValueType) => PromiseLike<boolean> | boolean,
- options?: pLocate.Options
- ): Promise<ValueType | undefined>;
-
- // TODO: Remove this for the next major release, refactor the whole definition to:
- // declare function pLocate<ValueType>(
- // input: Iterable<PromiseLike<ValueType> | ValueType>,
- // tester: (element: ValueType) => PromiseLike<boolean> | boolean,
- // options?: pLocate.Options
- // ): Promise<ValueType | undefined>;
- // export = pLocate;
- default: typeof pLocate;
-};
-
-export = pLocate;
diff --git a/assets/node_modules/p-locate/index.js b/assets/node_modules/p-locate/index.js
deleted file mode 100644
index e13ce15..0000000
--- a/assets/node_modules/p-locate/index.js
+++ /dev/null
@@ -1,52 +0,0 @@
-'use strict';
-const pLimit = require('p-limit');
-
-class EndError extends Error {
- constructor(value) {
- super();
- this.value = value;
- }
-}
-
-// The input can also be a promise, so we await it
-const testElement = async (element, tester) => tester(await element);
-
-// The input can also be a promise, so we `Promise.all()` them both
-const finder = async element => {
- const values = await Promise.all(element);
- if (values[1] === true) {
- throw new EndError(values[0]);
- }
-
- return false;
-};
-
-const pLocate = async (iterable, tester, options) => {
- options = {
- concurrency: Infinity,
- preserveOrder: true,
- ...options
- };
-
- const limit = pLimit(options.concurrency);
-
- // Start all the promises concurrently with optional limit
- const items = [...iterable].map(element => [element, limit(testElement, element, tester)]);
-
- // Check the promises either serially or concurrently
- const checkLimit = pLimit(options.preserveOrder ? 1 : Infinity);
-
- try {
- await Promise.all(items.map(element => checkLimit(finder, element)));
- } catch (error) {
- if (error instanceof EndError) {
- return error.value;
- }
-
- throw error;
- }
-};
-
-module.exports = pLocate;
-// TODO: Remove this for the next major release
-module.exports.default = pLocate;
diff --git a/assets/node_modules/p-locate/license b/assets/node_modules/p-locate/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/p-locate/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/p-locate/package.json b/assets/node_modules/p-locate/package.json
deleted file mode 100644
index e3de275..0000000
--- a/assets/node_modules/p-locate/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "name": "p-locate",
- "version": "4.1.0",
- "description": "Get the first fulfilled promise that satisfies the provided testing function",
- "license": "MIT",
- "repository": "sindresorhus/p-locate",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "promise",
- "locate",
- "find",
- "finder",
- "search",
- "searcher",
- "test",
- "array",
- "collection",
- "iterable",
- "iterator",
- "race",
- "fulfilled",
- "fastest",
- "async",
- "await",
- "promises",
- "bluebird"
- ],
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "devDependencies": {
- "ava": "^1.4.1",
- "delay": "^4.1.0",
- "in-range": "^1.0.0",
- "time-span": "^3.0.0",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/p-locate/readme.md b/assets/node_modules/p-locate/readme.md
deleted file mode 100644
index f8e2c2e..0000000
--- a/assets/node_modules/p-locate/readme.md
+++ /dev/null
@@ -1,90 +0,0 @@
-# p-locate [![Build Status](https://travis-ci.org/sindresorhus/p-locate.svg?branch=master)](https://travis-ci.org/sindresorhus/p-locate)
-
-> Get the first fulfilled promise that satisfies the provided testing function
-
-Think of it like an async version of [`Array#find`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find).
-
-
-## Install
-
-```
-$ npm install p-locate
-```
-
-
-## Usage
-
-Here we find the first file that exists on disk, in array order.
-
-```js
-const pathExists = require('path-exists');
-const pLocate = require('p-locate');
-
-const files = [
- 'unicorn.png',
- 'rainbow.png', // Only this one actually exists on disk
- 'pony.png'
-];
-
-(async () => {
- const foundPath = await pLocate(files, file => pathExists(file));
-
- console.log(foundPath);
- //=> 'rainbow'
-})();
-```
-
-*The above is just an example. Use [`locate-path`](https://github.com/sindresorhus/locate-path) if you need this.*
-
-
-## API
-
-### pLocate(input, tester, [options])
-
-Returns a `Promise` that is fulfilled when `tester` resolves to `true` or the iterable is done, or rejects if any of the promises reject. The fulfilled value is the current iterable value or `undefined` if `tester` never resolved to `true`.
-
-#### input
-
-Type: `Iterable<Promise | unknown>`
-
-An iterable of promises/values to test.
-
-#### tester(element)
-
-Type: `Function`
-
-This function will receive resolved values from `input` and is expected to return a `Promise<boolean>` or `boolean`.
-
-#### options
-
-Type: `Object`
-
-##### concurrency
-
-Type: `number`<br>
-Default: `Infinity`<br>
-Minimum: `1`
-
-Number of concurrently pending promises returned by `tester`.
-
-##### preserveOrder
-
-Type: `boolean`<br>
-Default: `true`
-
-Preserve `input` order when searching.
-
-Disable this to improve performance if you don't care about the order.
-
-
-## Related
-
-- [p-map](https://github.com/sindresorhus/p-map) - Map over promises concurrently
-- [p-filter](https://github.com/sindresorhus/p-filter) - Filter promises concurrently
-- [p-any](https://github.com/sindresorhus/p-any) - Wait for any promise to be fulfilled
-- [More…](https://github.com/sindresorhus/promise-fun)
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/p-try/index.d.ts b/assets/node_modules/p-try/index.d.ts
deleted file mode 100644
index 2a7319e..0000000
--- a/assets/node_modules/p-try/index.d.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-declare const pTry: {
- /**
- Start a promise chain.
-
- @param fn - The function to run to start the promise chain.
- @param arguments - Arguments to pass to `fn`.
- @returns The value of calling `fn(...arguments)`. If the function throws an error, the returned `Promise` will be rejected with that error.
-
- @example
- ```
- import pTry = require('p-try');
-
- (async () => {
- try {
- const value = await pTry(() => {
- return synchronousFunctionThatMightThrow();
- });
- console.log(value);
- } catch (error) {
- console.error(error);
- }
- })();
- ```
- */
- <ValueType, ArgumentsType extends unknown[]>(
- fn: (...arguments: ArgumentsType) => PromiseLike<ValueType> | ValueType,
- ...arguments: ArgumentsType
- ): Promise<ValueType>;
-
- // TODO: remove this in the next major version, refactor the whole definition to:
- // declare function pTry<ValueType, ArgumentsType extends unknown[]>(
- // fn: (...arguments: ArgumentsType) => PromiseLike<ValueType> | ValueType,
- // ...arguments: ArgumentsType
- // ): Promise<ValueType>;
- // export = pTry;
- default: typeof pTry;
-};
-
-export = pTry;
diff --git a/assets/node_modules/p-try/index.js b/assets/node_modules/p-try/index.js
deleted file mode 100644
index db858da..0000000
--- a/assets/node_modules/p-try/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-'use strict';
-
-const pTry = (fn, ...arguments_) => new Promise(resolve => {
- resolve(fn(...arguments_));
-});
-
-module.exports = pTry;
-// TODO: remove this in the next major version
-module.exports.default = pTry;
diff --git a/assets/node_modules/p-try/license b/assets/node_modules/p-try/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/p-try/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/p-try/package.json b/assets/node_modules/p-try/package.json
deleted file mode 100644
index 81c4d32..0000000
--- a/assets/node_modules/p-try/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "p-try",
- "version": "2.2.0",
- "description": "`Start a promise chain",
- "license": "MIT",
- "repository": "sindresorhus/p-try",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "promise",
- "try",
- "resolve",
- "function",
- "catch",
- "async",
- "await",
- "promises",
- "settled",
- "ponyfill",
- "polyfill",
- "shim",
- "bluebird"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.1",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/p-try/readme.md b/assets/node_modules/p-try/readme.md
deleted file mode 100644
index 4d7bd64..0000000
--- a/assets/node_modules/p-try/readme.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# p-try [![Build Status](https://travis-ci.org/sindresorhus/p-try.svg?branch=master)](https://travis-ci.org/sindresorhus/p-try)
-
-> Start a promise chain
-
-[How is it useful?](http://cryto.net/~joepie91/blog/2016/05/11/what-is-promise-try-and-why-does-it-matter/)
-
-
-## Install
-
-```
-$ npm install p-try
-```
-
-
-## Usage
-
-```js
-const pTry = require('p-try');
-
-(async () => {
- try {
- const value = await pTry(() => {
- return synchronousFunctionThatMightThrow();
- });
- console.log(value);
- } catch (error) {
- console.error(error);
- }
-})();
-```
-
-
-## API
-
-### pTry(fn, ...arguments)
-
-Returns a `Promise` resolved with the value of calling `fn(...arguments)`. If the function throws an error, the returned `Promise` will be rejected with that error.
-
-Support for passing arguments on to the `fn` is provided in order to be able to avoid creating unnecessary closures. You probably don't need this optimization unless you're pushing a *lot* of functions.
-
-#### fn
-
-The function to run to start the promise chain.
-
-#### arguments
-
-Arguments to pass to `fn`.
-
-
-## Related
-
-- [p-finally](https://github.com/sindresorhus/p-finally) - `Promise#finally()` ponyfill - Invoked when the promise is settled regardless of outcome
-- [More…](https://github.com/sindresorhus/promise-fun)
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/parent-module/index.js b/assets/node_modules/parent-module/index.js
deleted file mode 100644
index a26f953..0000000
--- a/assets/node_modules/parent-module/index.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict';
-const callsites = require('callsites');
-
-module.exports = filepath => {
- const stacks = callsites();
-
- if (!filepath) {
- return stacks[2].getFileName();
- }
-
- let seenVal = false;
-
- // Skip the first stack as it's this function
- stacks.shift();
-
- for (const stack of stacks) {
- const parentFilepath = stack.getFileName();
-
- if (typeof parentFilepath !== 'string') {
- continue;
- }
-
- if (parentFilepath === filepath) {
- seenVal = true;
- continue;
- }
-
- // Skip native modules
- if (parentFilepath === 'module.js') {
- continue;
- }
-
- if (seenVal && parentFilepath !== filepath) {
- return parentFilepath;
- }
- }
-};
diff --git a/assets/node_modules/parent-module/license b/assets/node_modules/parent-module/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/parent-module/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/parent-module/package.json b/assets/node_modules/parent-module/package.json
deleted file mode 100644
index 790333d..0000000
--- a/assets/node_modules/parent-module/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "name": "parent-module",
- "version": "1.0.1",
- "description": "Get the path of the parent module",
- "license": "MIT",
- "repository": "sindresorhus/parent-module",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "parent",
- "module",
- "package",
- "pkg",
- "caller",
- "calling",
- "module",
- "path",
- "callsites",
- "callsite",
- "stacktrace",
- "stack",
- "trace",
- "function",
- "file"
- ],
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "devDependencies": {
- "ava": "^1.4.1",
- "execa": "^1.0.0",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/parent-module/readme.md b/assets/node_modules/parent-module/readme.md
deleted file mode 100644
index dffb4ce..0000000
--- a/assets/node_modules/parent-module/readme.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# parent-module [![Build Status](https://travis-ci.org/sindresorhus/parent-module.svg?branch=master)](https://travis-ci.org/sindresorhus/parent-module)
-
-> Get the path of the parent module
-
-Node.js exposes `module.parent`, but it only gives you the first cached parent, which is not necessarily the actual parent.
-
-
-## Install
-
-```
-$ npm install parent-module
-```
-
-
-## Usage
-
-```js
-// bar.js
-const parentModule = require('parent-module');
-
-module.exports = () => {
- console.log(parentModule());
- //=> '/Users/sindresorhus/dev/unicorn/foo.js'
-};
-```
-
-```js
-// foo.js
-const bar = require('./bar');
-
-bar();
-```
-
-
-## API
-
-### parentModule([filepath])
-
-By default, it will return the path of the immediate parent.
-
-#### filepath
-
-Type: `string`<br>
-Default: [`__filename`](https://nodejs.org/api/globals.html#globals_filename)
-
-Filepath of the module of which to get the parent path.
-
-Useful if you want it to work [multiple module levels down](https://github.com/sindresorhus/parent-module/tree/master/fixtures/filepath).
-
-
-## Tip
-
-Combine it with [`read-pkg-up`](https://github.com/sindresorhus/read-pkg-up) to read the package.json of the parent module.
-
-```js
-const path = require('path');
-const readPkgUp = require('read-pkg-up');
-const parentModule = require('parent-module');
-
-console.log(readPkgUp.sync({cwd: path.dirname(parentModule())}).pkg);
-//=> {name: 'chalk', version: '1.0.0', …}
-```
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/parse-entities/decode-entity.browser.js b/assets/node_modules/parse-entities/decode-entity.browser.js
deleted file mode 100644
index feb3266..0000000
--- a/assets/node_modules/parse-entities/decode-entity.browser.js
+++ /dev/null
@@ -1,30 +0,0 @@
-'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/assets/node_modules/parse-entities/decode-entity.js b/assets/node_modules/parse-entities/decode-entity.js
deleted file mode 100644
index 87c3b1e..0000000
--- a/assets/node_modules/parse-entities/decode-entity.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'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/assets/node_modules/parse-entities/index.js b/assets/node_modules/parse-entities/index.js
deleted file mode 100644
index 1606d02..0000000
--- a/assets/node_modules/parse-entities/index.js
+++ /dev/null
@@ -1,450 +0,0 @@
-'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, and any possible warnings.
- 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/assets/node_modules/parse-entities/license b/assets/node_modules/parse-entities/license
deleted file mode 100644
index 611b675..0000000
--- a/assets/node_modules/parse-entities/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/parse-entities/package.json b/assets/node_modules/parse-entities/package.json
deleted file mode 100644
index a5e1bc4..0000000
--- a/assets/node_modules/parse-entities/package.json
+++ /dev/null
@@ -1,91 +0,0 @@
-{
- "name": "parse-entities",
- "version": "1.2.2",
- "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",
- "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"
- ],
- "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",
- "nyc": "^14.0.0",
- "prettier": "^1.12.1",
- "remark-cli": "^6.0.0",
- "remark-preset-wooorm": "^4.0.0",
- "tape": "^4.2.0",
- "tape-run": "^6.0.0",
- "tinyify": "^2.4.3",
- "xo": "^0.24.0"
- },
- "scripts": {
- "format": "remark . -qfo && prettier --write \"**/*.js\" && 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": "npm run format && npm run build && npm run test-coverage && npm run test-browser"
- },
- "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/assets/node_modules/parse-entities/readme.md b/assets/node_modules/parse-entities/readme.md
deleted file mode 100644
index e9cc0f0..0000000
--- a/assets/node_modules/parse-entities/readme.md
+++ /dev/null
@@ -1,217 +0,0 @@
-# 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.
-
-## Installation
-
-[npm][]:
-
-```bash
-npm install parse-entities
-```
-
-## Usage
-
-```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/assets/node_modules/parse-json/index.js b/assets/node_modules/parse-json/index.js
deleted file mode 100644
index 4d96c59..0000000
--- a/assets/node_modules/parse-json/index.js
+++ /dev/null
@@ -1,50 +0,0 @@
-'use strict';
-const errorEx = require('error-ex');
-const fallback = require('json-parse-better-errors');
-const {default: LinesAndColumns} = require('lines-and-columns');
-const {codeFrameColumns} = require('@babel/code-frame');
-
-const JSONError = errorEx('JSONError', {
- fileName: errorEx.append('in %s'),
- codeFrame: errorEx.append('\n\n%s\n')
-});
-
-module.exports = (string, reviver, filename) => {
- if (typeof reviver === 'string') {
- filename = reviver;
- reviver = null;
- }
-
- try {
- try {
- return JSON.parse(string, reviver);
- } catch (error) {
- fallback(string, reviver);
- throw error;
- }
- } catch (error) {
- error.message = error.message.replace(/\n/g, '');
- const indexMatch = error.message.match(/in JSON at position (\d+) while parsing near/);
-
- const jsonError = new JSONError(error);
- if (filename) {
- jsonError.fileName = filename;
- }
-
- if (indexMatch && indexMatch.length > 0) {
- const lines = new LinesAndColumns(string);
- const index = Number(indexMatch[1]);
- const location = lines.locationForIndex(index);
-
- const codeFrame = codeFrameColumns(
- string,
- {start: {line: location.line + 1, column: location.column + 1}},
- {highlightCode: true}
- );
-
- jsonError.codeFrame = codeFrame;
- }
-
- throw jsonError;
- }
-};
diff --git a/assets/node_modules/parse-json/license b/assets/node_modules/parse-json/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/parse-json/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/parse-json/package.json b/assets/node_modules/parse-json/package.json
deleted file mode 100644
index 668a27b..0000000
--- a/assets/node_modules/parse-json/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "parse-json",
- "version": "5.0.0",
- "description": "Parse JSON with more helpful errors",
- "license": "MIT",
- "repository": "sindresorhus/parse-json",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && nyc ava"
- },
- "files": [
- "index.js",
- "vendor"
- ],
- "keywords": [
- "parse",
- "json",
- "graceful",
- "error",
- "message",
- "humanize",
- "friendly",
- "helpful",
- "string"
- ],
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1",
- "lines-and-columns": "^1.1.6"
- },
- "devDependencies": {
- "ava": "^1.4.1",
- "nyc": "^14.1.1",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/parse-json/readme.md b/assets/node_modules/parse-json/readme.md
deleted file mode 100644
index c4efee0..0000000
--- a/assets/node_modules/parse-json/readme.md
+++ /dev/null
@@ -1,101 +0,0 @@
-# parse-json [![Build Status](https://travis-ci.org/sindresorhus/parse-json.svg?branch=master)](https://travis-ci.org/sindresorhus/parse-json)
-
-> Parse JSON with more helpful errors
-
-
-## Install
-
-```
-$ npm install parse-json
-```
-
-
-## Usage
-
-```js
-const parseJson = require('parse-json');
-
-const json = '{\n\t"foo": true,\n}';
-
-
-JSON.parse(json);
-/*
-undefined:3
-}
-^
-SyntaxError: Unexpected token }
-*/
-
-
-parseJson(json);
-/*
-JSONError: Unexpected token } in JSON at position 16 while parsing near '{ "foo": true,}'
-
- 1 | {
- 2 | "foo": true,
-> 3 | }
- | ^
-*/
-
-
-parseJson(json, 'foo.json');
-/*
-JSONError: Unexpected token } in JSON at position 16 while parsing near '{ "foo": true,}' in foo.json
-
- 1 | {
- 2 | "foo": true,
-> 3 | }
- | ^
-*/
-
-
-// You can also add the filename at a later point
-try {
- parseJson(json);
-} catch (error) {
- error.fileName = 'foo.json';
- throw error;
-}
-/*
-JSONError: Unexpected token } in JSON at position 16 while parsing near '{ "foo": true,}' in foo.json
-
- 1 | {
- 2 | "foo": true,
-> 3 | }
- | ^
-*/
-```
-
-## API
-
-### parseJson(string, reviver?, filename?)
-
-#### string
-
-Type: `string`
-
-#### reviver
-
-Type: `Function`
-
-Prescribes how the value originally produced by parsing is transformed, before being returned. See [`JSON.parse` docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter
-) for more.
-
-#### filename
-
-Type: `string`
-
-Filename displayed in the error message.
-
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-parse-json?utm_source=npm-parse-json&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
diff --git a/assets/node_modules/path-exists/index.d.ts b/assets/node_modules/path-exists/index.d.ts
deleted file mode 100644
index 54b7ab8..0000000
--- a/assets/node_modules/path-exists/index.d.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-declare const pathExists: {
- /**
- Check if a path exists.
-
- @returns Whether the path exists.
-
- @example
- ```
- // foo.ts
- import pathExists = require('path-exists');
-
- (async () => {
- console.log(await pathExists('foo.ts'));
- //=> true
- })();
- ```
- */
- (path: string): Promise<boolean>;
-
- /**
- Synchronously check if a path exists.
-
- @returns Whether the path exists.
- */
- sync(path: string): boolean;
-};
-
-export = pathExists;
diff --git a/assets/node_modules/path-exists/index.js b/assets/node_modules/path-exists/index.js
deleted file mode 100644
index 1943921..0000000
--- a/assets/node_modules/path-exists/index.js
+++ /dev/null
@@ -1,23 +0,0 @@
-'use strict';
-const fs = require('fs');
-const {promisify} = require('util');
-
-const pAccess = promisify(fs.access);
-
-module.exports = async path => {
- try {
- await pAccess(path);
- return true;
- } catch (_) {
- return false;
- }
-};
-
-module.exports.sync = path => {
- try {
- fs.accessSync(path);
- return true;
- } catch (_) {
- return false;
- }
-};
diff --git a/assets/node_modules/path-exists/license b/assets/node_modules/path-exists/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/path-exists/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/path-exists/package.json b/assets/node_modules/path-exists/package.json
deleted file mode 100644
index 0755256..0000000
--- a/assets/node_modules/path-exists/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "path-exists",
- "version": "4.0.0",
- "description": "Check if a path exists",
- "license": "MIT",
- "repository": "sindresorhus/path-exists",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "path",
- "exists",
- "exist",
- "file",
- "filepath",
- "fs",
- "filesystem",
- "file-system",
- "access",
- "stat"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/path-exists/readme.md b/assets/node_modules/path-exists/readme.md
deleted file mode 100644
index 81f9845..0000000
--- a/assets/node_modules/path-exists/readme.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# path-exists [![Build Status](https://travis-ci.org/sindresorhus/path-exists.svg?branch=master)](https://travis-ci.org/sindresorhus/path-exists)
-
-> Check if a path exists
-
-NOTE: `fs.existsSync` has been un-deprecated in Node.js since 6.8.0. If you only need to check synchronously, this module is not needed.
-
-While [`fs.exists()`](https://nodejs.org/api/fs.html#fs_fs_exists_path_callback) is being [deprecated](https://github.com/iojs/io.js/issues/103), there's still a genuine use-case of being able to check if a path exists for other purposes than doing IO with it.
-
-Never use this before handling a file though:
-
-> In particular, checking if a file exists before opening it is an anti-pattern that leaves you vulnerable to race conditions: another process may remove the file between the calls to `fs.exists()` and `fs.open()`. Just open the file and handle the error when it's not there.
-
-
-## Install
-
-```
-$ npm install path-exists
-```
-
-
-## Usage
-
-```js
-// foo.js
-const pathExists = require('path-exists');
-
-(async () => {
- console.log(await pathExists('foo.js'));
- //=> true
-})();
-```
-
-
-## API
-
-### pathExists(path)
-
-Returns a `Promise<boolean>` of whether the path exists.
-
-### pathExists.sync(path)
-
-Returns a `boolean` of whether the path exists.
-
-
-## Related
-
-- [path-exists-cli](https://github.com/sindresorhus/path-exists-cli) - CLI for this module
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/path-is-absolute/index.js b/assets/node_modules/path-is-absolute/index.js
deleted file mode 100644
index 22aa6c3..0000000
--- a/assets/node_modules/path-is-absolute/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict';
-
-function posix(path) {
- return path.charAt(0) === '/';
-}
-
-function win32(path) {
- // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56
- var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/;
- var result = splitDeviceRe.exec(path);
- var device = result[1] || '';
- var isUnc = Boolean(device && device.charAt(1) !== ':');
-
- // UNC paths are always absolute
- return Boolean(result[2] || isUnc);
-}
-
-module.exports = process.platform === 'win32' ? win32 : posix;
-module.exports.posix = posix;
-module.exports.win32 = win32;
diff --git a/assets/node_modules/path-is-absolute/license b/assets/node_modules/path-is-absolute/license
deleted file mode 100644
index 654d0bf..0000000
--- a/assets/node_modules/path-is-absolute/license
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/path-is-absolute/package.json b/assets/node_modules/path-is-absolute/package.json
deleted file mode 100644
index 91196d5..0000000
--- a/assets/node_modules/path-is-absolute/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "path-is-absolute",
- "version": "1.0.1",
- "description": "Node.js 0.12 path.isAbsolute() ponyfill",
- "license": "MIT",
- "repository": "sindresorhus/path-is-absolute",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "xo && node test.js"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "path",
- "paths",
- "file",
- "dir",
- "absolute",
- "isabsolute",
- "is-absolute",
- "built-in",
- "util",
- "utils",
- "core",
- "ponyfill",
- "polyfill",
- "shim",
- "is",
- "detect",
- "check"
- ],
- "devDependencies": {
- "xo": "^0.16.0"
- }
-}
diff --git a/assets/node_modules/path-is-absolute/readme.md b/assets/node_modules/path-is-absolute/readme.md
deleted file mode 100644
index 8dbdf5f..0000000
--- a/assets/node_modules/path-is-absolute/readme.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# path-is-absolute [![Build Status](https://travis-ci.org/sindresorhus/path-is-absolute.svg?branch=master)](https://travis-ci.org/sindresorhus/path-is-absolute)
-
-> Node.js 0.12 [`path.isAbsolute()`](http://nodejs.org/api/path.html#path_path_isabsolute_path) [ponyfill](https://ponyfill.com)
-
-
-## Install
-
-```
-$ npm install --save path-is-absolute
-```
-
-
-## Usage
-
-```js
-const pathIsAbsolute = require('path-is-absolute');
-
-// Running on Linux
-pathIsAbsolute('/home/foo');
-//=> true
-pathIsAbsolute('C:/Users/foo');
-//=> false
-
-// Running on Windows
-pathIsAbsolute('C:/Users/foo');
-//=> true
-pathIsAbsolute('/home/foo');
-//=> false
-
-// Running on any OS
-pathIsAbsolute.posix('/home/foo');
-//=> true
-pathIsAbsolute.posix('C:/Users/foo');
-//=> false
-pathIsAbsolute.win32('C:/Users/foo');
-//=> true
-pathIsAbsolute.win32('/home/foo');
-//=> false
-```
-
-
-## API
-
-See the [`path.isAbsolute()` docs](http://nodejs.org/api/path.html#path_path_isabsolute_path).
-
-### pathIsAbsolute(path)
-
-### pathIsAbsolute.posix(path)
-
-POSIX specific version.
-
-### pathIsAbsolute.win32(path)
-
-Windows specific version.
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/path-parse/.travis.yml b/assets/node_modules/path-parse/.travis.yml
deleted file mode 100644
index dae31da..0000000
--- a/assets/node_modules/path-parse/.travis.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-language: node_js
-node_js:
- - "0.12"
- - "0.11"
- - "0.10"
- - "0.10.12"
- - "0.8"
- - "0.6"
- - "iojs"
diff --git a/assets/node_modules/path-parse/LICENSE b/assets/node_modules/path-parse/LICENSE
deleted file mode 100644
index 810f3db..0000000
--- a/assets/node_modules/path-parse/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Javier Blanco
-
-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/assets/node_modules/path-parse/README.md b/assets/node_modules/path-parse/README.md
deleted file mode 100644
index 05097f8..0000000
--- a/assets/node_modules/path-parse/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# path-parse [![Build Status](https://travis-ci.org/jbgutierrez/path-parse.svg?branch=master)](https://travis-ci.org/jbgutierrez/path-parse)
-
-> Node.js [`path.parse(pathString)`](https://nodejs.org/api/path.html#path_path_parse_pathstring) [ponyfill](https://ponyfill.com).
-
-## Install
-
-```
-$ npm install --save path-parse
-```
-
-## Usage
-
-```js
-var pathParse = require('path-parse');
-
-pathParse('/home/user/dir/file.txt');
-//=> {
-// root : "/",
-// dir : "/home/user/dir",
-// base : "file.txt",
-// ext : ".txt",
-// name : "file"
-// }
-```
-
-## API
-
-See [`path.parse(pathString)`](https://nodejs.org/api/path.html#path_path_parse_pathstring) docs.
-
-### pathParse(path)
-
-### pathParse.posix(path)
-
-The Posix specific version.
-
-### pathParse.win32(path)
-
-The Windows specific version.
-
-## License
-
-MIT © [Javier Blanco](http://jbgutierrez.info)
diff --git a/assets/node_modules/path-parse/index.js b/assets/node_modules/path-parse/index.js
deleted file mode 100644
index 3b7601f..0000000
--- a/assets/node_modules/path-parse/index.js
+++ /dev/null
@@ -1,93 +0,0 @@
-'use strict';
-
-var isWindows = process.platform === 'win32';
-
-// Regex to split a windows path into three parts: [*, device, slash,
-// tail] windows-only
-var splitDeviceRe =
- /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/;
-
-// Regex to split the tail part of the above into [*, dir, basename, ext]
-var splitTailRe =
- /^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/;
-
-var win32 = {};
-
-// Function to split a filename into [root, dir, basename, ext]
-function win32SplitPath(filename) {
- // Separate device+slash from tail
- var result = splitDeviceRe.exec(filename),
- device = (result[1] || '') + (result[2] || ''),
- tail = result[3] || '';
- // Split the tail into dir, basename and extension
- var result2 = splitTailRe.exec(tail),
- dir = result2[1],
- basename = result2[2],
- ext = result2[3];
- return [device, dir, basename, ext];
-}
-
-win32.parse = function(pathString) {
- if (typeof pathString !== 'string') {
- throw new TypeError(
- "Parameter 'pathString' must be a string, not " + typeof pathString
- );
- }
- var allParts = win32SplitPath(pathString);
- if (!allParts || allParts.length !== 4) {
- throw new TypeError("Invalid path '" + pathString + "'");
- }
- return {
- root: allParts[0],
- dir: allParts[0] + allParts[1].slice(0, -1),
- base: allParts[2],
- ext: allParts[3],
- name: allParts[2].slice(0, allParts[2].length - allParts[3].length)
- };
-};
-
-
-
-// Split a filename into [root, dir, basename, ext], unix version
-// 'root' is just a slash, or nothing.
-var splitPathRe =
- /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
-var posix = {};
-
-
-function posixSplitPath(filename) {
- return splitPathRe.exec(filename).slice(1);
-}
-
-
-posix.parse = function(pathString) {
- if (typeof pathString !== 'string') {
- throw new TypeError(
- "Parameter 'pathString' must be a string, not " + typeof pathString
- );
- }
- var allParts = posixSplitPath(pathString);
- if (!allParts || allParts.length !== 4) {
- throw new TypeError("Invalid path '" + pathString + "'");
- }
- allParts[1] = allParts[1] || '';
- allParts[2] = allParts[2] || '';
- allParts[3] = allParts[3] || '';
-
- return {
- root: allParts[0],
- dir: allParts[0] + allParts[1].slice(0, -1),
- base: allParts[2],
- ext: allParts[3],
- name: allParts[2].slice(0, allParts[2].length - allParts[3].length)
- };
-};
-
-
-if (isWindows)
- module.exports = win32.parse;
-else /* posix */
- module.exports = posix.parse;
-
-module.exports.posix = posix.parse;
-module.exports.win32 = win32.parse;
diff --git a/assets/node_modules/path-parse/package.json b/assets/node_modules/path-parse/package.json
deleted file mode 100644
index 21332bb..0000000
--- a/assets/node_modules/path-parse/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "path-parse",
- "version": "1.0.6",
- "description": "Node.js path.parse() ponyfill",
- "main": "index.js",
- "scripts": {
- "test": "node test.js"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/jbgutierrez/path-parse.git"
- },
- "keywords": [
- "path",
- "paths",
- "file",
- "dir",
- "parse",
- "built-in",
- "util",
- "utils",
- "core",
- "ponyfill",
- "polyfill",
- "shim"
- ],
- "author": "Javier Blanco <http://jbgutierrez.info>",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/jbgutierrez/path-parse/issues"
- },
- "homepage": "https://github.com/jbgutierrez/path-parse#readme"
-}
diff --git a/assets/node_modules/path-parse/test.js b/assets/node_modules/path-parse/test.js
deleted file mode 100644
index 0b30c12..0000000
--- a/assets/node_modules/path-parse/test.js
+++ /dev/null
@@ -1,77 +0,0 @@
-var assert = require('assert');
-var pathParse = require('./index');
-
-var winParseTests = [
- [{ root: 'C:\\', dir: 'C:\\path\\dir', base: 'index.html', ext: '.html', name: 'index' }, 'C:\\path\\dir\\index.html'],
- [{ root: 'C:\\', dir: 'C:\\another_path\\DIR\\1\\2\\33', base: 'index', ext: '', name: 'index' }, 'C:\\another_path\\DIR\\1\\2\\33\\index'],
- [{ root: '', dir: 'another_path\\DIR with spaces\\1\\2\\33', base: 'index', ext: '', name: 'index' }, 'another_path\\DIR with spaces\\1\\2\\33\\index'],
- [{ root: '\\', dir: '\\foo', base: 'C:', ext: '', name: 'C:' }, '\\foo\\C:'],
- [{ root: '', dir: '', base: 'file', ext: '', name: 'file' }, 'file'],
- [{ root: '', dir: '.', base: 'file', ext: '', name: 'file' }, '.\\file'],
-
- // unc
- [{ root: '\\\\server\\share\\', dir: '\\\\server\\share\\', base: 'file_path', ext: '', name: 'file_path' }, '\\\\server\\share\\file_path'],
- [{ root: '\\\\server two\\shared folder\\', dir: '\\\\server two\\shared folder\\', base: 'file path.zip', ext: '.zip', name: 'file path' }, '\\\\server two\\shared folder\\file path.zip'],
- [{ root: '\\\\teela\\admin$\\', dir: '\\\\teela\\admin$\\', base: 'system32', ext: '', name: 'system32' }, '\\\\teela\\admin$\\system32'],
- [{ root: '\\\\?\\UNC\\', dir: '\\\\?\\UNC\\server', base: 'share', ext: '', name: 'share' }, '\\\\?\\UNC\\server\\share']
-];
-
-var winSpecialCaseFormatTests = [
- [{dir: 'some\\dir'}, 'some\\dir\\'],
- [{base: 'index.html'}, 'index.html'],
- [{}, '']
-];
-
-var unixParseTests = [
- [{ root: '/', dir: '/home/user/dir', base: 'file.txt', ext: '.txt', name: 'file' }, '/home/user/dir/file.txt'],
- [{ root: '/', dir: '/home/user/a dir', base: 'another File.zip', ext: '.zip', name: 'another File' }, '/home/user/a dir/another File.zip'],
- [{ root: '/', dir: '/home/user/a dir/', base: 'another&File.', ext: '.', name: 'another&File' }, '/home/user/a dir//another&File.'],
- [{ root: '/', dir: '/home/user/a$$$dir/', base: 'another File.zip', ext: '.zip', name: 'another File' }, '/home/user/a$$$dir//another File.zip'],
- [{ root: '', dir: 'user/dir', base: 'another File.zip', ext: '.zip', name: 'another File' }, 'user/dir/another File.zip'],
- [{ root: '', dir: '', base: 'file', ext: '', name: 'file' }, 'file'],
- [{ root: '', dir: '', base: '.\\file', ext: '', name: '.\\file' }, '.\\file'],
- [{ root: '', dir: '.', base: 'file', ext: '', name: 'file' }, './file'],
- [{ root: '', dir: '', base: 'C:\\foo', ext: '', name: 'C:\\foo' }, 'C:\\foo']
-];
-
-var unixSpecialCaseFormatTests = [
- [{dir: 'some/dir'}, 'some/dir/'],
- [{base: 'index.html'}, 'index.html'],
- [{}, '']
-];
-
-var errors = [
- {input: null, message: /Parameter 'pathString' must be a string, not/},
- {input: {}, message: /Parameter 'pathString' must be a string, not object/},
- {input: true, message: /Parameter 'pathString' must be a string, not boolean/},
- {input: 1, message: /Parameter 'pathString' must be a string, not number/},
- {input: undefined, message: /Parameter 'pathString' must be a string, not undefined/},
-];
-
-checkParseFormat(pathParse.win32, winParseTests);
-checkParseFormat(pathParse.posix, unixParseTests);
-checkErrors(pathParse.win32);
-checkErrors(pathParse.posix);
-
-function checkErrors(parse) {
- errors.forEach(function(errorCase) {
- try {
- parse(errorCase.input);
- } catch(err) {
- assert.ok(err instanceof TypeError);
- assert.ok(
- errorCase.message.test(err.message),
- 'expected ' + errorCase.message + ' to match ' + err.message
- );
- return;
- }
-
- assert.fail('should have thrown');
- });
-}
-
-function checkParseFormat(parse, testCases) {
- testCases.forEach(function(testCase) {
- assert.deepEqual(parse(testCase[1]), testCase[0]);
- });
-}
diff --git a/assets/node_modules/path-type/index.d.ts b/assets/node_modules/path-type/index.d.ts
deleted file mode 100644
index 910a50a..0000000
--- a/assets/node_modules/path-type/index.d.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-export type PathTypeFunction = (path: string) => Promise<boolean>;
-
-/**
- * Check whether the passed `path` is a file.
- *
- * @param path - The path to check.
- * @returns Whether the `path` is a file.
- */
-export const isFile: PathTypeFunction;
-
-/**
- * Check whether the passed `path` is a directory.
- *
- * @param path - The path to check.
- * @returns Whether the `path` is a directory.
- */
-export const isDirectory: PathTypeFunction;
-
-/**
- * Check whether the passed `path` is a symlink.
- *
- * @param path - The path to check.
- * @returns Whether the `path` is a symlink.
- */
-export const isSymlink: PathTypeFunction;
-
-export type PathTypeSyncFunction = (path: string) => boolean;
-
-/**
- * Synchronously check whether the passed `path` is a file.
- *
- * @param path - The path to check.
- * @returns Whether the `path` is a file.
- */
-export const isFileSync: PathTypeSyncFunction;
-
-/**
- * Synchronously check whether the passed `path` is a directory.
- *
- * @param path - The path to check.
- * @returns Whether the `path` is a directory.
- */
-export const isDirectorySync: PathTypeSyncFunction;
-
-/**
- * Synchronously check whether the passed `path` is a symlink.
- *
- * @param path - The path to check.
- * @returns Whether the `path` is a directory.
- */
-export const isSymlinkSync: PathTypeSyncFunction;
diff --git a/assets/node_modules/path-type/index.js b/assets/node_modules/path-type/index.js
deleted file mode 100644
index b8f34b2..0000000
--- a/assets/node_modules/path-type/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict';
-const {promisify} = require('util');
-const fs = require('fs');
-
-async function isType(fsStatType, statsMethodName, filePath) {
- if (typeof filePath !== 'string') {
- throw new TypeError(`Expected a string, got ${typeof filePath}`);
- }
-
- try {
- const stats = await promisify(fs[fsStatType])(filePath);
- return stats[statsMethodName]();
- } catch (error) {
- if (error.code === 'ENOENT') {
- return false;
- }
-
- throw error;
- }
-}
-
-function isTypeSync(fsStatType, statsMethodName, filePath) {
- if (typeof filePath !== 'string') {
- throw new TypeError(`Expected a string, got ${typeof filePath}`);
- }
-
- try {
- return fs[fsStatType](filePath)[statsMethodName]();
- } catch (error) {
- if (error.code === 'ENOENT') {
- return false;
- }
-
- throw error;
- }
-}
-
-exports.isFile = isType.bind(null, 'stat', 'isFile');
-exports.isDirectory = isType.bind(null, 'stat', 'isDirectory');
-exports.isSymlink = isType.bind(null, 'lstat', 'isSymbolicLink');
-exports.isFileSync = isTypeSync.bind(null, 'statSync', 'isFile');
-exports.isDirectorySync = isTypeSync.bind(null, 'statSync', 'isDirectory');
-exports.isSymlinkSync = isTypeSync.bind(null, 'lstatSync', 'isSymbolicLink');
diff --git a/assets/node_modules/path-type/license b/assets/node_modules/path-type/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/path-type/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/path-type/package.json b/assets/node_modules/path-type/package.json
deleted file mode 100644
index 635b711..0000000
--- a/assets/node_modules/path-type/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "path-type",
- "version": "4.0.0",
- "description": "Check if a path is a file, directory, or symlink",
- "license": "MIT",
- "repository": "sindresorhus/path-type",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && nyc ava && tsd-check"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "path",
- "fs",
- "type",
- "is",
- "check",
- "directory",
- "dir",
- "file",
- "filepath",
- "symlink",
- "symbolic",
- "link",
- "stat",
- "stats",
- "filesystem"
- ],
- "devDependencies": {
- "ava": "^1.3.1",
- "nyc": "^13.3.0",
- "tsd-check": "^0.3.0",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/path-type/readme.md b/assets/node_modules/path-type/readme.md
deleted file mode 100644
index 4c972fa..0000000
--- a/assets/node_modules/path-type/readme.md
+++ /dev/null
@@ -1,72 +0,0 @@
-# path-type [![Build Status](https://travis-ci.org/sindresorhus/path-type.svg?branch=master)](https://travis-ci.org/sindresorhus/path-type)
-
-> Check if a path is a file, directory, or symlink
-
-
-## Install
-
-```
-$ npm install path-type
-```
-
-
-## Usage
-
-```js
-const {isFile} = require('path-type');
-
-(async () => {
- console.log(await isFile('package.json'));
- //=> true
-})();
-```
-
-
-## API
-
-### isFile(path)
-
-Check whether the passed `path` is a file.
-
-Returns a `Promise<boolean>`.
-
-#### path
-
-Type: `string`
-
-The path to check.
-
-### isDirectory(path)
-
-Check whether the passed `path` is a directory.
-
-Returns a `Promise<boolean>`.
-
-### isSymlink(path)
-
-Check whether the passed `path` is a symlink.
-
-Returns a `Promise<boolean>`.
-
-### isFileSync(path)
-
-Synchronously check whether the passed `path` is a file.
-
-Returns a `boolean`.
-
-### isDirectorySync(path)
-
-Synchronously check whether the passed `path` is a directory.
-
-Returns a `boolean`.
-
-### isSymlinkSync(path)
-
-Synchronously check whether the passed `path` is a symlink.
-
-Returns a `boolean`.
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/picomatch/CHANGELOG.md b/assets/node_modules/picomatch/CHANGELOG.md
deleted file mode 100644
index e672bd3..0000000
--- a/assets/node_modules/picomatch/CHANGELOG.md
+++ /dev/null
@@ -1,107 +0,0 @@
-# Release history
-
-**All notable changes to this project will be documented in this file.**
-
-The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
-and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
-
-<details>
- <summary><strong>Guiding Principles</strong></summary>
-
-- Changelogs are for humans, not machines.
-- There should be an entry for every single version.
-- The same types of changes should be grouped.
-- Versions and sections should be linkable.
-- The latest version comes first.
-- The release date of each versions is displayed.
-- Mention whether you follow Semantic Versioning.
-
-</details>
-
-<details>
- <summary><strong>Types of changes</strong></summary>
-
-Changelog entries are classified using the following labels _(from [keep-a-changelog](http://keepachangelog.com/)_):
-
-- `Added` for new features.
-- `Changed` for changes in existing functionality.
-- `Deprecated` for soon-to-be removed features.
-- `Removed` for now removed features.
-- `Fixed` for any bug fixes.
-- `Security` in case of vulnerabilities.
-
-</details>
-
-## 2.2.1 (2020-01-04)
-
-* Fixes [#49](https://github.com/micromatch/picomatch/issues/49), so that braces with no sets or ranges are now propertly treated as literals.
-
-## 2.2.0 (2020-01-04)
-
-* Disable fastpaths mode for the parse method ([5b8d33f](https://github.com/micromatch/picomatch/commit/5b8d33f))
-* Add `tokens`, `slashes`, and `parts` to the object returned by `picomatch.scan()`.
-
-## 2.1.0 (2019-10-31)
-
-* add benchmarks for scan ([4793b92](https://github.com/micromatch/picomatch/commit/4793b92))
-* Add eslint object-curly-spacing rule ([707c650](https://github.com/micromatch/picomatch/commit/707c650))
-* Add prefer-const eslint rule ([5c7501c](https://github.com/micromatch/picomatch/commit/5c7501c))
-* Add support for nonegate in scan API ([275c9b9](https://github.com/micromatch/picomatch/commit/275c9b9))
-* Change lets to consts. Move root import up. ([4840625](https://github.com/micromatch/picomatch/commit/4840625))
-* closes https://github.com/micromatch/picomatch/issues/21 ([766bcb0](https://github.com/micromatch/picomatch/commit/766bcb0))
-* Fix "Extglobs" table in readme ([eb19da8](https://github.com/micromatch/picomatch/commit/eb19da8))
-* fixes https://github.com/micromatch/picomatch/issues/20 ([9caca07](https://github.com/micromatch/picomatch/commit/9caca07))
-* fixes https://github.com/micromatch/picomatch/issues/26 ([fa58f45](https://github.com/micromatch/picomatch/commit/fa58f45))
-* Lint test ([d433a34](https://github.com/micromatch/picomatch/commit/d433a34))
-* lint unit tests ([0159b55](https://github.com/micromatch/picomatch/commit/0159b55))
-* Make scan work with noext ([6c02e03](https://github.com/micromatch/picomatch/commit/6c02e03))
-* minor linting ([c2a2b87](https://github.com/micromatch/picomatch/commit/c2a2b87))
-* minor parser improvements ([197671d](https://github.com/micromatch/picomatch/commit/197671d))
-* remove eslint since it... ([07876fa](https://github.com/micromatch/picomatch/commit/07876fa))
-* remove funding file ([8ebe96d](https://github.com/micromatch/picomatch/commit/8ebe96d))
-* Remove unused funks ([cbc6d54](https://github.com/micromatch/picomatch/commit/cbc6d54))
-* Run eslint during pretest, fix existing eslint findings ([0682367](https://github.com/micromatch/picomatch/commit/0682367))
-* support `noparen` in scan ([3d37569](https://github.com/micromatch/picomatch/commit/3d37569))
-* update changelog ([7b34e77](https://github.com/micromatch/picomatch/commit/7b34e77))
-* update travis ([777f038](https://github.com/micromatch/picomatch/commit/777f038))
-* Use eslint-disable-next-line instead of eslint-disable ([4e7c1fd](https://github.com/micromatch/picomatch/commit/4e7c1fd))
-
-## 2.0.7 (2019-05-14)
-
-* 2.0.7 ([9eb9a71](https://github.com/micromatch/picomatch/commit/9eb9a71))
-* supports lookbehinds ([1f63f7e](https://github.com/micromatch/picomatch/commit/1f63f7e))
-* update .verb.md file with typo change ([2741279](https://github.com/micromatch/picomatch/commit/2741279))
-* fix: typo in README ([0753e44](https://github.com/micromatch/picomatch/commit/0753e44))
-
-## 2.0.4 (2019-04-10)
-
-### Fixed
-
-- Readme link [fixed](https://github.com/micromatch/picomatch/pull/13/commits/a96ab3aa2b11b6861c23289964613d85563b05df) by @danez.
-- `options.capture` now works as expected when fastpaths are enabled. See https://github.com/micromatch/picomatch/pull/12/commits/26aefd71f1cfaf95c37f1c1fcab68a693b037304. Thanks to @DrPizza.
-
-## 2.0.0 (2019-04-10)
-
-### Added
-
-- Adds support for `options.onIgnore`. See the readme for details
-- Adds support for `options.onResult`. See the readme for details
-
-### Breaking changes
-
-- The unixify option was renamed to `windows`
-- caching and all related options and methods have been removed
-
-## 1.0.0 (2018-11-05)
-
-- adds `.onMatch` option
-- improvements to `.scan` method
-- numerous improvements and optimizations for matching and parsing
-- better windows path handling
-
-## 0.1.0 - 2017-04-13
-
-First release.
-
-
-[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog
diff --git a/assets/node_modules/picomatch/LICENSE b/assets/node_modules/picomatch/LICENSE
deleted file mode 100644
index 3608dca..0000000
--- a/assets/node_modules/picomatch/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2017-present, Jon Schlinkert.
-
-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/assets/node_modules/picomatch/README.md b/assets/node_modules/picomatch/README.md
deleted file mode 100644
index ebdf473..0000000
--- a/assets/node_modules/picomatch/README.md
+++ /dev/null
@@ -1,690 +0,0 @@
-<h1 align="center">Picomatch</h1>
-
-<p align="center">
- <a href="https://npmjs.org/package/picomatch">
- <img src="https://img.shields.io/npm/v/picomatch.svg" alt="version">
- </a>
- <a href="https://github.com/micromatch/picomatch/actions?workflow=Tests">
- <img src="https://github.com/micromatch/picomatch/workflows/Tests/badge.svg" alt="test status">
- </a>
- <a href="https://coveralls.io/github/micromatch/picomatch">
- <img src="https://img.shields.io/coveralls/github/micromatch/picomatch/master.svg" alt="coverage status">
- </a>
- <a href="https://npmjs.org/package/picomatch">
- <img src="https://img.shields.io/npm/dm/picomatch.svg" alt="downloads">
- </a>
-</p>
-
-<br>
-<br>
-
-<p align="center">
-<strong>Blazing fast and accurate glob matcher written in JavaScript.</strong></br>
-<em>No dependencies and full support for standard and extended Bash glob features, including braces, extglobs, POSIX brackets, and regular expressions.</em>
-</p>
-
-<br>
-<br>
-
-## Why picomatch?
-
-* **Lightweight** - No dependencies
-* **Minimal** - Tiny API surface. Main export is a function that takes a glob pattern and returns a matcher function.
-* **Fast** - Loads in about 2ms (that's several times faster than a [single frame of a HD movie](http://www.endmemo.com/sconvert/framespersecondframespermillisecond.php) at 60fps)
-* **Performant** - Use the returned matcher function to speed up repeat matching (like when watching files)
-* **Accurate matching** - Using wildcards (`*` and `?`), globstars (`**`) for nested directories, [advanced globbing](#advanced-globbing) with extglobs, braces, and POSIX brackets, and support for escaping special characters with `\` or quotes.
-* **Well tested** - Thousands of unit tests
-
-See the [library comparison](#library-comparisons) to other libraries.
-
-<br>
-<br>
-
-## Table of Contents
-
-<details><summary> Click to expand </summary>
-
-- [Install](#install)
-- [Usage](#usage)
-- [API](#api)
- * [picomatch](#picomatch)
- * [.test](#test)
- * [.matchBase](#matchbase)
- * [.isMatch](#ismatch)
- * [.parse](#parse)
- * [.scan](#scan)
- * [.compileRe](#compilere)
- * [.toRegex](#toregex)
-- [Options](#options)
- * [Picomatch options](#picomatch-options)
- * [Scan Options](#scan-options)
- * [Options Examples](#options-examples)
-- [Globbing features](#globbing-features)
- * [Basic globbing](#basic-globbing)
- * [Advanced globbing](#advanced-globbing)
- * [Braces](#braces)
- * [Matching special characters as literals](#matching-special-characters-as-literals)
-- [Library Comparisons](#library-comparisons)
-- [Benchmarks](#benchmarks)
-- [Philosophies](#philosophies)
-- [About](#about)
- * [Author](#author)
- * [License](#license)
-
-_(TOC generated by [verb](https://github.com/verbose/verb) using [markdown-toc](https://github.com/jonschlinkert/markdown-toc))_
-
-</details>
-
-<br>
-<br>
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-npm install --save picomatch
-```
-
-<br>
-
-## Usage
-
-The main export is a function that takes a glob pattern and an options object and returns a function for matching strings.
-
-```js
-const pm = require('picomatch');
-const isMatch = pm('*.js');
-
-console.log(isMatch('abcd')); //=> false
-console.log(isMatch('a.js')); //=> true
-console.log(isMatch('a.md')); //=> false
-console.log(isMatch('a/b.js')); //=> false
-```
-
-<br>
-
-## API
-
-### [picomatch](lib/picomatch.js#L32)
-
-Creates a matcher function from one or more glob patterns. The returned function takes a string to match as its first argument, and returns true if the string is a match. The returned matcher function also takes a boolean as the second argument that, when true, returns an object with additional information.
-
-**Params**
-
-* `globs` **{String|Array}**: One or more glob patterns.
-* `options` **{Object=}**
-* `returns` **{Function=}**: Returns a matcher function.
-
-**Example**
-
-```js
-const picomatch = require('picomatch');
-// picomatch(glob[, options]);
-
-const isMatch = picomatch('*.!(*a)');
-console.log(isMatch('a.a')); //=> false
-console.log(isMatch('a.b')); //=> true
-```
-
-### [.test](lib/picomatch.js#L117)
-
-Test `input` with the given `regex`. This is used by the main `picomatch()` function to test the input string.
-
-**Params**
-
-* `input` **{String}**: String to test.
-* `regex` **{RegExp}**
-* `returns` **{Object}**: Returns an object with matching info.
-
-**Example**
-
-```js
-const picomatch = require('picomatch');
-// picomatch.test(input, regex[, options]);
-
-console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/));
-// { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }
-```
-
-### [.matchBase](lib/picomatch.js#L161)
-
-Match the basename of a filepath.
-
-**Params**
-
-* `input` **{String}**: String to test.
-* `glob` **{RegExp|String}**: Glob pattern or regex created by [.makeRe](#makeRe).
-* `returns` **{Boolean}**
-
-**Example**
-
-```js
-const picomatch = require('picomatch');
-// picomatch.matchBase(input, glob[, options]);
-console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true
-```
-
-### [.isMatch](lib/picomatch.js#L183)
-
-Returns true if **any** of the given glob `patterns` match the specified `string`.
-
-**Params**
-
-* **{String|Array}**: str The string to test.
-* **{String|Array}**: patterns One or more glob patterns to use for matching.
-* **{Object}**: See available [options](#options).
-* `returns` **{Boolean}**: Returns true if any patterns match `str`
-
-**Example**
-
-```js
-const picomatch = require('picomatch');
-// picomatch.isMatch(string, patterns[, options]);
-
-console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true
-console.log(picomatch.isMatch('a.a', 'b.*')); //=> false
-```
-
-### [.parse](lib/picomatch.js#L199)
-
-Parse a glob pattern to create the source string for a regular expression.
-
-**Params**
-
-* `pattern` **{String}**
-* `options` **{Object}**
-* `returns` **{Object}**: Returns an object with useful properties and output to be used as a regex source string.
-
-**Example**
-
-```js
-const picomatch = require('picomatch');
-const result = picomatch.parse(pattern[, options]);
-```
-
-### [.scan](lib/picomatch.js#L231)
-
-Scan a glob pattern to separate the pattern into segments.
-
-**Params**
-
-* `input` **{String}**: Glob pattern to scan.
-* `options` **{Object}**
-* `returns` **{Object}**: Returns an object with
-
-**Example**
-
-```js
-const picomatch = require('picomatch');
-// picomatch.scan(input[, options]);
-
-const result = picomatch.scan('!./foo/*.js');
-console.log(result);
-{ prefix: '!./',
- input: '!./foo/*.js',
- start: 3,
- base: 'foo',
- glob: '*.js',
- isBrace: false,
- isBracket: false,
- isGlob: true,
- isExtglob: false,
- isGlobstar: false,
- negated: true }
-```
-
-### [.compileRe](lib/picomatch.js#L249)
-
-Create a regular expression from a glob pattern.
-
-**Params**
-
-* `input` **{String}**: A glob pattern to convert to regex.
-* `options` **{Object}**
-* `returns` **{RegExp}**: Returns a regex created from the given pattern.
-
-**Example**
-
-```js
-const picomatch = require('picomatch');
-// picomatch.makeRe(input[, options]);
-
-console.log(picomatch.makeRe('*.js'));
-//=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/
-```
-
-### [.toRegex](lib/picomatch.js#L317)
-
-Create a regular expression from the given regex source string.
-
-**Params**
-
-* `source` **{String}**: Regular expression source string.
-* `options` **{Object}**
-* `returns` **{RegExp}**
-
-**Example**
-
-```js
-const picomatch = require('picomatch');
-// picomatch.toRegex(source[, options]);
-
-const { output } = picomatch.parse('*.js');
-console.log(picomatch.toRegex(output));
-//=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/
-```
-
-<br>
-
-## Options
-
-### Picomatch options
-
-The following options may be used with the main `picomatch()` function or any of the methods on the picomatch API.
-
-| **Option** | **Type** | **Default value** | **Description** |
-| --- | --- | --- | --- |
-| `basename` | `boolean` | `false` | If set, then patterns without slashes will be matched against the basename of the path if it contains slashes. For example, `a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. |
-| `bash` | `boolean` | `false` | Follow bash matching rules more strictly - disallows backslashes as escape characters, and treats single stars as globstars (`**`). |
-| `capture` | `boolean` | `undefined` | Return regex matches in supporting methods. |
-| `contains` | `boolean` | `undefined` | Allows glob to match any part of the given string(s). |
-| `cwd` | `string` | `process.cwd()` | Current working directory. Used by `picomatch.split()` |
-| `debug` | `boolean` | `undefined` | Debug regular expressions when an error is thrown. |
-| `dot` | `boolean` | `false` | Enable dotfile matching. By default, dotfiles are ignored unless a `.` is explicitly defined in the pattern, or `options.dot` is true |
-| `expandRange` | `function` | `undefined` | Custom function for expanding ranges in brace patterns, such as `{a..z}`. The function receives the range values as two arguments, and it must return a string to be used in the generated regex. It's recommended that returned strings be wrapped in parentheses. |
-| `failglob` | `boolean` | `false` | Throws an error if no matches are found. Based on the bash option of the same name. |
-| `fastpaths` | `boolean` | `true` | To speed up processing, full parsing is skipped for a handful common glob patterns. Disable this behavior by setting this option to `false`. |
-| `flags` | `boolean` | `undefined` | Regex flags to use in the generated regex. If defined, the `nocase` option will be overridden. |
-| [format](#optionsformat) | `function` | `undefined` | Custom function for formatting the returned string. This is useful for removing leading slashes, converting Windows paths to Posix paths, etc. |
-| `ignore` | `array\|string` | `undefined` | One or more glob patterns for excluding strings that should not be matched from the result. |
-| `keepQuotes` | `boolean` | `false` | Retain quotes in the generated regex, since quotes may also be used as an alternative to backslashes. |
-| `literalBrackets` | `boolean` | `undefined` | When `true`, brackets in the glob pattern will be escaped so that only literal brackets will be matched. |
-| `lookbehinds` | `boolean` | `true` | Support regex positive and negative lookbehinds. Note that you must be using Node 8.1.10 or higher to enable regex lookbehinds. |
-| `matchBase` | `boolean` | `false` | Alias for `basename` |
-| `maxLength` | `boolean` | `65536` | Limit the max length of the input string. An error is thrown if the input string is longer than this value. |
-| `nobrace` | `boolean` | `false` | Disable brace matching, so that `{a,b}` and `{1..3}` would be treated as literal characters. |
-| `nobracket` | `boolean` | `undefined` | Disable matching with regex brackets. |
-| `nocase` | `boolean` | `false` | Make matching case-insensitive. Equivalent to the regex `i` flag. Note that this option is overridden by the `flags` option. |
-| `nodupes` | `boolean` | `true` | Deprecated, use `nounique` instead. This option will be removed in a future major release. By default duplicates are removed. Disable uniquification by setting this option to false. |
-| `noext` | `boolean` | `false` | Alias for `noextglob` |
-| `noextglob` | `boolean` | `false` | Disable support for matching with extglobs (like `+(a\|b)`) |
-| `noglobstar` | `boolean` | `false` | Disable support for matching nested directories with globstars (`**`) |
-| `nonegate` | `boolean` | `false` | Disable support for negating with leading `!` |
-| `noquantifiers` | `boolean` | `false` | Disable support for regex quantifiers (like `a{1,2}`) and treat them as brace patterns to be expanded. |
-| [onIgnore](#optionsonIgnore) | `function` | `undefined` | Function to be called on ignored items. |
-| [onMatch](#optionsonMatch) | `function` | `undefined` | Function to be called on matched items. |
-| [onResult](#optionsonResult) | `function` | `undefined` | Function to be called on all items, regardless of whether or not they are matched or ignored. |
-| `posix` | `boolean` | `false` | Support POSIX character classes ("posix brackets"). |
-| `posixSlashes` | `boolean` | `undefined` | Convert all slashes in file paths to forward slashes. This does not convert slashes in the glob pattern itself |
-| `prepend` | `boolean` | `undefined` | String to prepend to the generated regex used for matching. |
-| `regex` | `boolean` | `false` | Use regular expression rules for `+` (instead of matching literal `+`), and for stars that follow closing parentheses or brackets (as in `)*` and `]*`). |
-| `strictBrackets` | `boolean` | `undefined` | Throw an error if brackets, braces, or parens are imbalanced. |
-| `strictSlashes` | `boolean` | `undefined` | When true, picomatch won't match trailing slashes with single stars. |
-| `unescape` | `boolean` | `undefined` | Remove backslashes preceding escaped characters in the glob pattern. By default, backslashes are retained. |
-| `unixify` | `boolean` | `undefined` | Alias for `posixSlashes`, for backwards compatibility. |
-
-### Scan Options
-
-In addition to the main [picomatch options](#picomatch-options), the following options may also be used with the [.scan](#scan) method.
-
-| **Option** | **Type** | **Default value** | **Description** |
-| --- | --- | --- | --- |
-| `tokens` | `boolean` | `false` | When `true`, the returned object will include an array of tokens (objects), representing each path "segment" in the scanned glob pattern |
-| `parts` | `boolean` | `false` | When `true`, the returned object will include an array of strings representing each path "segment" in the scanned glob pattern. This is automatically enabled when `options.tokens` is true |
-
-**Example**
-
-```js
-const picomatch = require('picomatch');
-const result = picomatch.scan('!./foo/*.js', { tokens: true });
-console.log(result);
-// {
-// prefix: '!./',
-// input: '!./foo/*.js',
-// start: 3,
-// base: 'foo',
-// glob: '*.js',
-// isBrace: false,
-// isBracket: false,
-// isGlob: true,
-// isExtglob: false,
-// isGlobstar: false,
-// negated: true,
-// maxDepth: 2,
-// tokens: [
-// { value: '!./', depth: 0, isGlob: false, negated: true, isPrefix: true },
-// { value: 'foo', depth: 1, isGlob: false },
-// { value: '*.js', depth: 1, isGlob: true }
-// ],
-// slashes: [ 2, 6 ],
-// parts: [ 'foo', '*.js' ]
-// }
-```
-
-<br>
-
-### Options Examples
-
-#### options.expandRange
-
-**Type**: `function`
-
-**Default**: `undefined`
-
-Custom function for expanding ranges in brace patterns. The [fill-range](https://github.com/jonschlinkert/fill-range) library is ideal for this purpose, or you can use custom code to do whatever you need.
-
-**Example**
-
-The following example shows how to create a glob that matches a folder
-
-```js
-const fill = require('fill-range');
-const regex = pm.makeRe('foo/{01..25}/bar', {
- expandRange(a, b) {
- return `(${fill(a, b, { toRegex: true })})`;
- }
-});
-
-console.log(regex);
-//=> /^(?:foo\/((?:0[1-9]|1[0-9]|2[0-5]))\/bar)$/
-
-console.log(regex.test('foo/00/bar')) // false
-console.log(regex.test('foo/01/bar')) // true
-console.log(regex.test('foo/10/bar')) // true
-console.log(regex.test('foo/22/bar')) // true
-console.log(regex.test('foo/25/bar')) // true
-console.log(regex.test('foo/26/bar')) // false
-```
-
-#### options.format
-
-**Type**: `function`
-
-**Default**: `undefined`
-
-Custom function for formatting strings before they're matched.
-
-**Example**
-
-```js
-// strip leading './' from strings
-const format = str => str.replace(/^\.\//, '');
-const isMatch = picomatch('foo/*.js', { format });
-console.log(isMatch('./foo/bar.js')); //=> true
-```
-
-#### options.onMatch
-
-```js
-const onMatch = ({ glob, regex, input, output }) => {
- console.log({ glob, regex, input, output });
-};
-
-const isMatch = picomatch('*', { onMatch });
-isMatch('foo');
-isMatch('bar');
-isMatch('baz');
-```
-
-#### options.onIgnore
-
-```js
-const onIgnore = ({ glob, regex, input, output }) => {
- console.log({ glob, regex, input, output });
-};
-
-const isMatch = picomatch('*', { onIgnore, ignore: 'f*' });
-isMatch('foo');
-isMatch('bar');
-isMatch('baz');
-```
-
-#### options.onResult
-
-```js
-const onResult = ({ glob, regex, input, output }) => {
- console.log({ glob, regex, input, output });
-};
-
-const isMatch = picomatch('*', { onResult, ignore: 'f*' });
-isMatch('foo');
-isMatch('bar');
-isMatch('baz');
-```
-
-<br>
-<br>
-
-## Globbing features
-
-* [Basic globbing](#basic-globbing) (Wildcard matching)
-* [Advanced globbing](#advanced-globbing) (extglobs, posix brackets, brace matching)
-
-### Basic globbing
-
-| **Character** | **Description** |
-| --- | --- |
-| `*` | Matches any character zero or more times, excluding path separators. Does _not match_ path separators or hidden files or directories ("dotfiles"), unless explicitly enabled by setting the `dot` option to `true`. |
-| `**` | Matches any character zero or more times, including path separators. Note that `**` will only match path separators (`/`, and `\\` on Windows) when they are the only characters in a path segment. Thus, `foo**/bar` is equivalent to `foo*/bar`, and `foo/a**b/bar` is equivalent to `foo/a*b/bar`, and _more than two_ consecutive stars in a glob path segment are regarded as _a single star_. Thus, `foo/***/bar` is equivalent to `foo/*/bar`. |
-| `?` | Matches any character excluding path separators one time. Does _not match_ path separators or leading dots. |
-| `[abc]` | Matches any characters inside the brackets. For example, `[abc]` would match the characters `a`, `b` or `c`, and nothing else. |
-
-#### Matching behavior vs. Bash
-
-Picomatch's matching features and expected results in unit tests are based on Bash's unit tests and the Bash 4.3 specification, with the following exceptions:
-
-* Bash will match `foo/bar/baz` with `*`. Picomatch only matches nested directories with `**`.
-* Bash greedily matches with negated extglobs. For example, Bash 4.3 says that `!(foo)*` should match `foo` and `foobar`, since the trailing `*` bracktracks to match the preceding pattern. This is very memory-inefficient, and IMHO, also incorrect. Picomatch would return `false` for both `foo` and `foobar`.
-
-<br>
-
-### Advanced globbing
-
-* [extglobs](#extglobs)
-* [POSIX brackets](#posix-brackets)
-* [Braces](#brace-expansion)
-
-#### Extglobs
-
-| **Pattern** | **Description** |
-| --- | --- |
-| `@(pattern)` | Match _only one_ consecutive occurrence of `pattern` |
-| `*(pattern)` | Match _zero or more_ consecutive occurrences of `pattern` |
-| `+(pattern)` | Match _one or more_ consecutive occurrences of `pattern` |
-| `?(pattern)` | Match _zero or **one**_ consecutive occurrences of `pattern` |
-| `!(pattern)` | Match _anything but_ `pattern` |
-
-**Examples**
-
-```js
-const pm = require('picomatch');
-
-// *(pattern) matches ZERO or more of "pattern"
-console.log(pm.isMatch('a', 'a*(z)')); // true
-console.log(pm.isMatch('az', 'a*(z)')); // true
-console.log(pm.isMatch('azzz', 'a*(z)')); // true
-
-// +(pattern) matches ONE or more of "pattern"
-console.log(pm.isMatch('a', 'a*(z)')); // true
-console.log(pm.isMatch('az', 'a*(z)')); // true
-console.log(pm.isMatch('azzz', 'a*(z)')); // true
-
-// supports multiple extglobs
-console.log(pm.isMatch('foo.bar', '!(foo).!(bar)')); // false
-
-// supports nested extglobs
-console.log(pm.isMatch('foo.bar', '!(!(foo)).!(!(bar))')); // true
-```
-
-#### POSIX brackets
-
-POSIX classes are disabled by default. Enable this feature by setting the `posix` option to true.
-
-**Enable POSIX bracket support**
-
-```js
-console.log(pm.makeRe('[[:word:]]+', { posix: true }));
-//=> /^(?:(?=.)[A-Za-z0-9_]+\/?)$/
-```
-
-**Supported POSIX classes**
-
-The following named POSIX bracket expressions are supported:
-
-* `[:alnum:]` - Alphanumeric characters, equ `[a-zA-Z0-9]`
-* `[:alpha:]` - Alphabetical characters, equivalent to `[a-zA-Z]`.
-* `[:ascii:]` - ASCII characters, equivalent to `[\\x00-\\x7F]`.
-* `[:blank:]` - Space and tab characters, equivalent to `[ \\t]`.
-* `[:cntrl:]` - Control characters, equivalent to `[\\x00-\\x1F\\x7F]`.
-* `[:digit:]` - Numerical digits, equivalent to `[0-9]`.
-* `[:graph:]` - Graph characters, equivalent to `[\\x21-\\x7E]`.
-* `[:lower:]` - Lowercase letters, equivalent to `[a-z]`.
-* `[:print:]` - Print characters, equivalent to `[\\x20-\\x7E ]`.
-* `[:punct:]` - Punctuation and symbols, equivalent to `[\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~]`.
-* `[:space:]` - Extended space characters, equivalent to `[ \\t\\r\\n\\v\\f]`.
-* `[:upper:]` - Uppercase letters, equivalent to `[A-Z]`.
-* `[:word:]` - Word characters (letters, numbers and underscores), equivalent to `[A-Za-z0-9_]`.
-* `[:xdigit:]` - Hexadecimal digits, equivalent to `[A-Fa-f0-9]`.
-
-See the [Bash Reference Manual](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html) for more information.
-
-### Braces
-
-Picomatch does not do brace expansion. For [brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html) and advanced matching with braces, use [micromatch](https://github.com/micromatch/micromatch) instead. Picomatch has very basic support for braces.
-
-### Matching special characters as literals
-
-If you wish to match the following special characters in a filepath, and you want to use these characters in your glob pattern, they must be escaped with backslashes or quotes:
-
-**Special Characters**
-
-Some characters that are used for matching in regular expressions are also regarded as valid file path characters on some platforms.
-
-To match any of the following characters as literals: `$^*+?()[]
-
-Examples:
-
-```js
-console.log(pm.makeRe('foo/bar \\(1\\)'));
-console.log(pm.makeRe('foo/bar \\(1\\)'));
-```
-
-<br>
-<br>
-
-## Library Comparisons
-
-The following table shows which features are supported by [minimatch](https://github.com/isaacs/minimatch), [micromatch](https://github.com/micromatch/micromatch), [picomatch](https://github.com/micromatch/picomatch), [nanomatch](https://github.com/micromatch/nanomatch), [extglob](https://github.com/micromatch/extglob), [braces](https://github.com/micromatch/braces), and [expand-brackets](https://github.com/micromatch/expand-brackets).
-
-| **Feature** | `minimatch` | `micromatch` | `picomatch` | `nanomatch` | `extglob` | `braces` | `expand-brackets` |
-| --- | --- | --- | --- | --- | --- | --- | --- |
-| Wildcard matching (`*?+`) | ✔ | ✔ | ✔ | ✔ | - | - | - |
-| Advancing globbing | ✔ | ✔ | ✔ | - | - | - | - |
-| Brace _matching_ | ✔ | ✔ | ✔ | - | - | ✔ | - |
-| Brace _expansion_ | ✔ | ✔ | - | - | - | ✔ | - |
-| Extglobs | partial | ✔ | ✔ | - | ✔ | - | - |
-| Posix brackets | - | ✔ | ✔ | - | - | - | ✔ |
-| Regular expression syntax | - | ✔ | ✔ | ✔ | ✔ | - | ✔ |
-| File system operations | - | - | - | - | - | - | - |
-
-<br>
-<br>
-
-## Benchmarks
-
-Performance comparison of picomatch and minimatch.
-
-```
-# .makeRe star
- picomatch x 1,993,050 ops/sec ±0.51% (91 runs sampled)
- minimatch x 627,206 ops/sec ±1.96% (87 runs sampled))
-
-# .makeRe star; dot=true
- picomatch x 1,436,640 ops/sec ±0.62% (91 runs sampled)
- minimatch x 525,876 ops/sec ±0.60% (88 runs sampled)
-
-# .makeRe globstar
- picomatch x 1,592,742 ops/sec ±0.42% (90 runs sampled)
- minimatch x 962,043 ops/sec ±1.76% (91 runs sampled)d)
-
-# .makeRe globstars
- picomatch x 1,615,199 ops/sec ±0.35% (94 runs sampled)
- minimatch x 477,179 ops/sec ±1.33% (91 runs sampled)
-
-# .makeRe with leading star
- picomatch x 1,220,856 ops/sec ±0.40% (92 runs sampled)
- minimatch x 453,564 ops/sec ±1.43% (94 runs sampled)
-
-# .makeRe - basic braces
- picomatch x 392,067 ops/sec ±0.70% (90 runs sampled)
- minimatch x 99,532 ops/sec ±2.03% (87 runs sampled))
-```
-
-<br>
-<br>
-
-## Philosophies
-
-The goal of this library is to be blazing fast, without compromising on accuracy.
-
-**Accuracy**
-
-The number one of goal of this library is accuracy. However, it's not unusual for different glob implementations to have different rules for matching behavior, even with simple wildcard matching. It gets increasingly more complicated when combinations of different features are combined, like when extglobs are combined with globstars, braces, slashes, and so on: `!(**/{a,b,*/c})`.
-
-Thus, given that there is no canonical glob specification to use as a single source of truth when differences of opinion arise regarding behavior, sometimes we have to implement our best judgement and rely on feedback from users to make improvements.
-
-**Performance**
-
-Although this library performs well in benchmarks, and in most cases it's faster than other popular libraries we benchmarked against, we will always choose accuracy over performance. It's not helpful to anyone if our library is faster at returning the wrong answer.
-
-<br>
-<br>
-
-## About
-
-<details>
-<summary><strong>Contributing</strong></summary>
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards.
-
-</details>
-
-<details>
-<summary><strong>Running Tests</strong></summary>
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-npm install && npm test
-```
-
-</details>
-
-<details>
-<summary><strong>Building docs</strong></summary>
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-</details>
-
-### Author
-
-**Jon Schlinkert**
-
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-
-### License
-
-Copyright © 2017-present, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
diff --git a/assets/node_modules/picomatch/index.js b/assets/node_modules/picomatch/index.js
deleted file mode 100644
index d2f2bc5..0000000
--- a/assets/node_modules/picomatch/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-'use strict';
-
-module.exports = require('./lib/picomatch');
diff --git a/assets/node_modules/picomatch/lib/.DS_Store b/assets/node_modules/picomatch/lib/.DS_Store
deleted file mode 100644
index 5008ddf..0000000
--- a/assets/node_modules/picomatch/lib/.DS_Store
+++ /dev/null
Binary files differ
diff --git a/assets/node_modules/picomatch/lib/constants.js b/assets/node_modules/picomatch/lib/constants.js
deleted file mode 100644
index a62ef38..0000000
--- a/assets/node_modules/picomatch/lib/constants.js
+++ /dev/null
@@ -1,179 +0,0 @@
-'use strict';
-
-const path = require('path');
-const WIN_SLASH = '\\\\/';
-const WIN_NO_SLASH = `[^${WIN_SLASH}]`;
-
-/**
- * Posix glob regex
- */
-
-const DOT_LITERAL = '\\.';
-const PLUS_LITERAL = '\\+';
-const QMARK_LITERAL = '\\?';
-const SLASH_LITERAL = '\\/';
-const ONE_CHAR = '(?=.)';
-const QMARK = '[^/]';
-const END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;
-const START_ANCHOR = `(?:^|${SLASH_LITERAL})`;
-const DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;
-const NO_DOT = `(?!${DOT_LITERAL})`;
-const NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;
-const NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;
-const NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;
-const QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;
-const STAR = `${QMARK}*?`;
-
-const POSIX_CHARS = {
- DOT_LITERAL,
- PLUS_LITERAL,
- QMARK_LITERAL,
- SLASH_LITERAL,
- ONE_CHAR,
- QMARK,
- END_ANCHOR,
- DOTS_SLASH,
- NO_DOT,
- NO_DOTS,
- NO_DOT_SLASH,
- NO_DOTS_SLASH,
- QMARK_NO_DOT,
- STAR,
- START_ANCHOR
-};
-
-/**
- * Windows glob regex
- */
-
-const WINDOWS_CHARS = {
- ...POSIX_CHARS,
-
- SLASH_LITERAL: `[${WIN_SLASH}]`,
- QMARK: WIN_NO_SLASH,
- STAR: `${WIN_NO_SLASH}*?`,
- DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,
- NO_DOT: `(?!${DOT_LITERAL})`,
- NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,
- NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,
- NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,
- QMARK_NO_DOT: `[^.${WIN_SLASH}]`,
- START_ANCHOR: `(?:^|[${WIN_SLASH}])`,
- END_ANCHOR: `(?:[${WIN_SLASH}]|$)`
-};
-
-/**
- * POSIX Bracket Regex
- */
-
-const POSIX_REGEX_SOURCE = {
- alnum: 'a-zA-Z0-9',
- alpha: 'a-zA-Z',
- ascii: '\\x00-\\x7F',
- blank: ' \\t',
- cntrl: '\\x00-\\x1F\\x7F',
- digit: '0-9',
- graph: '\\x21-\\x7E',
- lower: 'a-z',
- print: '\\x20-\\x7E ',
- punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~',
- space: ' \\t\\r\\n\\v\\f',
- upper: 'A-Z',
- word: 'A-Za-z0-9_',
- xdigit: 'A-Fa-f0-9'
-};
-
-module.exports = {
- MAX_LENGTH: 1024 * 64,
- POSIX_REGEX_SOURCE,
-
- // regular expressions
- REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g,
- REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/,
- REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/,
- REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g,
- REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g,
- REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g,
-
- // Replace globs with equivalent patterns to reduce parsing time.
- REPLACEMENTS: {
- '***': '*',
- '**/**': '**',
- '**/**/**': '**'
- },
-
- // Digits
- CHAR_0: 48, /* 0 */
- CHAR_9: 57, /* 9 */
-
- // Alphabet chars.
- CHAR_UPPERCASE_A: 65, /* A */
- CHAR_LOWERCASE_A: 97, /* a */
- CHAR_UPPERCASE_Z: 90, /* Z */
- CHAR_LOWERCASE_Z: 122, /* z */
-
- CHAR_LEFT_PARENTHESES: 40, /* ( */
- CHAR_RIGHT_PARENTHESES: 41, /* ) */
-
- CHAR_ASTERISK: 42, /* * */
-
- // Non-alphabetic chars.
- CHAR_AMPERSAND: 38, /* & */
- CHAR_AT: 64, /* @ */
- CHAR_BACKWARD_SLASH: 92, /* \ */
- CHAR_CARRIAGE_RETURN: 13, /* \r */
- CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */
- CHAR_COLON: 58, /* : */
- CHAR_COMMA: 44, /* , */
- CHAR_DOT: 46, /* . */
- CHAR_DOUBLE_QUOTE: 34, /* " */
- CHAR_EQUAL: 61, /* = */
- CHAR_EXCLAMATION_MARK: 33, /* ! */
- CHAR_FORM_FEED: 12, /* \f */
- CHAR_FORWARD_SLASH: 47, /* / */
- CHAR_GRAVE_ACCENT: 96, /* ` */
- CHAR_HASH: 35, /* # */
- CHAR_HYPHEN_MINUS: 45, /* - */
- CHAR_LEFT_ANGLE_BRACKET: 60, /* < */
- CHAR_LEFT_CURLY_BRACE: 123, /* { */
- CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */
- CHAR_LINE_FEED: 10, /* \n */
- CHAR_NO_BREAK_SPACE: 160, /* \u00A0 */
- CHAR_PERCENT: 37, /* % */
- CHAR_PLUS: 43, /* + */
- CHAR_QUESTION_MARK: 63, /* ? */
- CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */
- CHAR_RIGHT_CURLY_BRACE: 125, /* } */
- CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */
- CHAR_SEMICOLON: 59, /* ; */
- CHAR_SINGLE_QUOTE: 39, /* ' */
- CHAR_SPACE: 32, /* */
- CHAR_TAB: 9, /* \t */
- CHAR_UNDERSCORE: 95, /* _ */
- CHAR_VERTICAL_LINE: 124, /* | */
- CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \uFEFF */
-
- SEP: path.sep,
-
- /**
- * Create EXTGLOB_CHARS
- */
-
- extglobChars(chars) {
- return {
- '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },
- '?': { type: 'qmark', open: '(?:', close: ')?' },
- '+': { type: 'plus', open: '(?:', close: ')+' },
- '*': { type: 'star', open: '(?:', close: ')*' },
- '@': { type: 'at', open: '(?:', close: ')' }
- };
- },
-
- /**
- * Create GLOB_CHARS
- */
-
- globChars(win32) {
- return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;
- }
-};
diff --git a/assets/node_modules/picomatch/lib/parse.js b/assets/node_modules/picomatch/lib/parse.js
deleted file mode 100644
index e4c8042..0000000
--- a/assets/node_modules/picomatch/lib/parse.js
+++ /dev/null
@@ -1,1080 +0,0 @@
-'use strict';
-
-const constants = require('./constants');
-const utils = require('./utils');
-
-/**
- * Constants
- */
-
-const {
- MAX_LENGTH,
- POSIX_REGEX_SOURCE,
- REGEX_NON_SPECIAL_CHARS,
- REGEX_SPECIAL_CHARS_BACKREF,
- REPLACEMENTS
-} = constants;
-
-/**
- * Helpers
- */
-
-const expandRange = (args, options) => {
- if (typeof options.expandRange === 'function') {
- return options.expandRange(...args, options);
- }
-
- args.sort();
- const value = `[${args.join('-')}]`;
-
- try {
- /* eslint-disable-next-line no-new */
- new RegExp(value);
- } catch (ex) {
- return args.map(v => utils.escapeRegex(v)).join('..');
- }
-
- return value;
-};
-
-/**
- * Create the message for a syntax error
- */
-
-const syntaxError = (type, char) => {
- return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`;
-};
-
-/**
- * Parse the given input string.
- * @param {String} input
- * @param {Object} options
- * @return {Object}
- */
-
-const parse = (input, options) => {
- if (typeof input !== 'string') {
- throw new TypeError('Expected a string');
- }
-
- input = REPLACEMENTS[input] || input;
-
- const opts = { ...options };
- const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
-
- let len = input.length;
- if (len > max) {
- throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);
- }
-
- const bos = { type: 'bos', value: '', output: opts.prepend || '' };
- const tokens = [bos];
-
- const capture = opts.capture ? '' : '?:';
- const win32 = utils.isWindows(options);
-
- // create constants based on platform, for windows or posix
- const PLATFORM_CHARS = constants.globChars(win32);
- const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);
-
- const {
- DOT_LITERAL,
- PLUS_LITERAL,
- SLASH_LITERAL,
- ONE_CHAR,
- DOTS_SLASH,
- NO_DOT,
- NO_DOT_SLASH,
- NO_DOTS_SLASH,
- QMARK,
- QMARK_NO_DOT,
- STAR,
- START_ANCHOR
- } = PLATFORM_CHARS;
-
- const globstar = (opts) => {
- return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;
- };
-
- const nodot = opts.dot ? '' : NO_DOT;
- const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;
- let star = opts.bash === true ? globstar(opts) : STAR;
-
- if (opts.capture) {
- star = `(${star})`;
- }
-
- // minimatch options support
- if (typeof opts.noext === 'boolean') {
- opts.noextglob = opts.noext;
- }
-
- const state = {
- input,
- index: -1,
- start: 0,
- dot: opts.dot === true,
- consumed: '',
- output: '',
- prefix: '',
- backtrack: false,
- negated: false,
- brackets: 0,
- braces: 0,
- parens: 0,
- quotes: 0,
- globstar: false,
- tokens
- };
-
- input = utils.removePrefix(input, state);
- len = input.length;
-
- const extglobs = [];
- const braces = [];
- const stack = [];
- let prev = bos;
- let value;
-
- /**
- * Tokenizing helpers
- */
-
- const eos = () => state.index === len - 1;
- const peek = state.peek = (n = 1) => input[state.index + n];
- const advance = state.advance = () => input[++state.index];
- const remaining = () => input.slice(state.index + 1);
- const consume = (value = '', num = 0) => {
- state.consumed += value;
- state.index += num;
- };
- const append = token => {
- state.output += token.output != null ? token.output : token.value;
- consume(token.value);
- };
-
- const negate = () => {
- let count = 1;
-
- while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {
- advance();
- state.start++;
- count++;
- }
-
- if (count % 2 === 0) {
- return false;
- }
-
- state.negated = true;
- state.start++;
- return true;
- };
-
- const increment = type => {
- state[type]++;
- stack.push(type);
- };
-
- const decrement = type => {
- state[type]--;
- stack.pop();
- };
-
- /**
- * Push tokens onto the tokens array. This helper speeds up
- * tokenizing by 1) helping us avoid backtracking as much as possible,
- * and 2) helping us avoid creating extra tokens when consecutive
- * characters are plain text. This improves performance and simplifies
- * lookbehinds.
- */
-
- const push = tok => {
- if (prev.type === 'globstar') {
- const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');
- const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));
-
- if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {
- state.output = state.output.slice(0, -prev.output.length);
- prev.type = 'star';
- prev.value = '*';
- prev.output = star;
- state.output += prev.output;
- }
- }
-
- if (extglobs.length && tok.type !== 'paren' && !EXTGLOB_CHARS[tok.value]) {
- extglobs[extglobs.length - 1].inner += tok.value;
- }
-
- if (tok.value || tok.output) append(tok);
- if (prev && prev.type === 'text' && tok.type === 'text') {
- prev.value += tok.value;
- prev.output = (prev.output || '') + tok.value;
- return;
- }
-
- tok.prev = prev;
- tokens.push(tok);
- prev = tok;
- };
-
- const extglobOpen = (type, value) => {
- const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };
-
- token.prev = prev;
- token.parens = state.parens;
- token.output = state.output;
- const output = (opts.capture ? '(' : '') + token.open;
-
- increment('parens');
-
-
- push({ type, value, output: state.output ? '' : ONE_CHAR });
- push({ type: 'paren', extglob: true, value: advance(), output });
- extglobs.push(token);
- };
-
- const extglobClose = token => {
- let output = token.close + (opts.capture ? ')' : '');
-
- if (token.type === 'negate') {
- let extglobStar = star;
-
- if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {
- extglobStar = globstar(opts);
- }
-
- if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) {
- output = token.close = `)$))${extglobStar}`;
- }
-
- if (token.prev.type === 'bos' && eos()) {
- state.negatedExtglob = true;
- }
- }
-
- push({ type: 'paren', extglob: true, value, output });
- decrement('parens');
- };
-
- /**
- * Fast paths
- */
-
- if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) {
- let backslashes = false;
-
- let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {
- if (first === '\\') {
- backslashes = true;
- return m;
- }
-
- if (first === '?') {
- if (esc) {
- return esc + first + (rest ? QMARK.repeat(rest.length) : '');
- }
- if (index === 0) {
- return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');
- }
- return QMARK.repeat(chars.length);
- }
-
- if (first === '.') {
- return DOT_LITERAL.repeat(chars.length);
- }
-
- if (first === '*') {
- if (esc) {
- return esc + first + (rest ? star : '');
- }
- return star;
- }
- return esc ? m : `\\${m}`;
- });
-
- if (backslashes === true) {
- if (opts.unescape === true) {
- output = output.replace(/\\/g, '');
- } else {
- output = output.replace(/\\+/g, m => {
- return m.length % 2 === 0 ? '\\\\' : (m ? '\\' : '');
- });
- }
- }
-
- if (output === input && opts.contains === true) {
- state.output = input;
- return state;
- }
-
- state.output = utils.wrapOutput(output, state, options);
- return state;
- }
-
- /**
- * Tokenize input until we reach end-of-string
- */
-
- while (!eos()) {
- value = advance();
-
- if (value === '\u0000') {
- continue;
- }
-
- /**
- * Escaped characters
- */
-
- if (value === '\\') {
- const next = peek();
-
- if (next === '/' && opts.bash !== true) {
- continue;
- }
-
- if (next === '.' || next === ';') {
- continue;
- }
-
- if (!next) {
- value += '\\';
- push({ type: 'text', value });
- continue;
- }
-
- // collapse slashes to reduce potential for exploits
- const match = /^\\+/.exec(remaining());
- let slashes = 0;
-
- if (match && match[0].length > 2) {
- slashes = match[0].length;
- state.index += slashes;
- if (slashes % 2 !== 0) {
- value += '\\';
- }
- }
-
- if (opts.unescape === true) {
- value = advance() || '';
- } else {
- value += advance() || '';
- }
-
- if (state.brackets === 0) {
- push({ type: 'text', value });
- continue;
- }
- }
-
- /**
- * If we're inside a regex character class, continue
- * until we reach the closing bracket.
- */
-
- if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {
- if (opts.posix !== false && value === ':') {
- const inner = prev.value.slice(1);
- if (inner.includes('[')) {
- prev.posix = true;
-
- if (inner.includes(':')) {
- const idx = prev.value.lastIndexOf('[');
- const pre = prev.value.slice(0, idx);
- const rest = prev.value.slice(idx + 2);
- const posix = POSIX_REGEX_SOURCE[rest];
- if (posix) {
- prev.value = pre + posix;
- state.backtrack = true;
- advance();
-
- if (!bos.output && tokens.indexOf(prev) === 1) {
- bos.output = ONE_CHAR;
- }
- continue;
- }
- }
- }
- }
-
- if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {
- value = `\\${value}`;
- }
-
- if (value === ']' && (prev.value === '[' || prev.value === '[^')) {
- value = `\\${value}`;
- }
-
- if (opts.posix === true && value === '!' && prev.value === '[') {
- value = '^';
- }
-
- prev.value += value;
- append({ value });
- continue;
- }
-
- /**
- * If we're inside a quoted string, continue
- * until we reach the closing double quote.
- */
-
- if (state.quotes === 1 && value !== '"') {
- value = utils.escapeRegex(value);
- prev.value += value;
- append({ value });
- continue;
- }
-
- /**
- * Double quotes
- */
-
- if (value === '"') {
- state.quotes = state.quotes === 1 ? 0 : 1;
- if (opts.keepQuotes === true) {
- push({ type: 'text', value });
- }
- continue;
- }
-
- /**
- * Parentheses
- */
-
- if (value === '(') {
- increment('parens');
- push({ type: 'paren', value });
- continue;
- }
-
- if (value === ')') {
- if (state.parens === 0 && opts.strictBrackets === true) {
- throw new SyntaxError(syntaxError('opening', '('));
- }
-
- const extglob = extglobs[extglobs.length - 1];
- if (extglob && state.parens === extglob.parens + 1) {
- extglobClose(extglobs.pop());
- continue;
- }
-
- push({ type: 'paren', value, output: state.parens ? ')' : '\\)' });
- decrement('parens');
- continue;
- }
-
- /**
- * Square brackets
- */
-
- if (value === '[') {
- if (opts.nobracket === true || !remaining().includes(']')) {
- if (opts.nobracket !== true && opts.strictBrackets === true) {
- throw new SyntaxError(syntaxError('closing', ']'));
- }
-
- value = `\\${value}`;
- } else {
- increment('brackets');
- }
-
- push({ type: 'bracket', value });
- continue;
- }
-
- if (value === ']') {
- if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {
- push({ type: 'text', value, output: `\\${value}` });
- continue;
- }
-
- if (state.brackets === 0) {
- if (opts.strictBrackets === true) {
- throw new SyntaxError(syntaxError('opening', '['));
- }
-
- push({ type: 'text', value, output: `\\${value}` });
- continue;
- }
-
- decrement('brackets');
-
- const prevValue = prev.value.slice(1);
- if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {
- value = `/${value}`;
- }
-
- prev.value += value;
- append({ value });
-
- // when literal brackets are explicitly disabled
- // assume we should match with a regex character class
- if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {
- continue;
- }
-
- const escaped = utils.escapeRegex(prev.value);
- state.output = state.output.slice(0, -prev.value.length);
-
- // when literal brackets are explicitly enabled
- // assume we should escape the brackets to match literal characters
- if (opts.literalBrackets === true) {
- state.output += escaped;
- prev.value = escaped;
- continue;
- }
-
- // when the user specifies nothing, try to match both
- prev.value = `(${capture}${escaped}|${prev.value})`;
- state.output += prev.value;
- continue;
- }
-
- /**
- * Braces
- */
-
- if (value === '{' && opts.nobrace !== true) {
- increment('braces');
-
- const open = {
- type: 'brace',
- value,
- output: '(',
- outputIndex: state.output.length,
- tokensIndex: state.tokens.length
- };
-
- braces.push(open);
- push(open);
- continue;
- }
-
- if (value === '}') {
- const brace = braces[braces.length - 1];
-
- if (opts.nobrace === true || !brace) {
- push({ type: 'text', value, output: value });
- continue;
- }
-
- let output = ')';
-
- if (brace.dots === true) {
- const arr = tokens.slice();
- const range = [];
-
- for (let i = arr.length - 1; i >= 0; i--) {
- tokens.pop();
- if (arr[i].type === 'brace') {
- break;
- }
- if (arr[i].type !== 'dots') {
- range.unshift(arr[i].value);
- }
- }
-
- output = expandRange(range, opts);
- state.backtrack = true;
- }
-
- if (brace.comma !== true && brace.dots !== true) {
- const out = state.output.slice(0, brace.outputIndex);
- const toks = state.tokens.slice(brace.tokensIndex);
- brace.value = brace.output = '\\{';
- value = output = `\\}`;
- state.output = out;
- for (const t of toks) {
- state.output += (t.output || t.value);
- }
- }
-
- push({ type: 'brace', value, output });
- decrement('braces');
- braces.pop();
- continue;
- }
-
- /**
- * Pipes
- */
-
- if (value === '|') {
- if (extglobs.length > 0) {
- extglobs[extglobs.length - 1].conditions++;
- }
- push({ type: 'text', value });
- continue;
- }
-
- /**
- * Commas
- */
-
- if (value === ',') {
- let output = value;
-
- const brace = braces[braces.length - 1];
- if (brace && stack[stack.length - 1] === 'braces') {
- brace.comma = true;
- output = '|';
- }
-
- push({ type: 'comma', value, output });
- continue;
- }
-
- /**
- * Slashes
- */
-
- if (value === '/') {
- // if the beginning of the glob is "./", advance the start
- // to the current index, and don't add the "./" characters
- // to the state. This greatly simplifies lookbehinds when
- // checking for BOS characters like "!" and "." (not "./")
- if (prev.type === 'dot' && state.index === state.start + 1) {
- state.start = state.index + 1;
- state.consumed = '';
- state.output = '';
- tokens.pop();
- prev = bos; // reset "prev" to the first token
- continue;
- }
-
- push({ type: 'slash', value, output: SLASH_LITERAL });
- continue;
- }
-
- /**
- * Dots
- */
-
- if (value === '.') {
- if (state.braces > 0 && prev.type === 'dot') {
- if (prev.value === '.') prev.output = DOT_LITERAL;
- const brace = braces[braces.length - 1];
- prev.type = 'dots';
- prev.output += value;
- prev.value += value;
- brace.dots = true;
- continue;
- }
-
- if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {
- push({ type: 'text', value, output: DOT_LITERAL });
- continue;
- }
-
- push({ type: 'dot', value, output: DOT_LITERAL });
- continue;
- }
-
- /**
- * Question marks
- */
-
- if (value === '?') {
- const isGroup = prev && prev.value === '(';
- if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {
- extglobOpen('qmark', value);
- continue;
- }
-
- if (prev && prev.type === 'paren') {
- const next = peek();
- let output = value;
-
- if (next === '<' && !utils.supportsLookbehinds()) {
- throw new Error('Node.js v10 or higher is required for regex lookbehinds');
- }
-
- if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\w+>)/.test(remaining()))) {
- output = `\\${value}`;
- }
-
- push({ type: 'text', value, output });
- continue;
- }
-
- if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {
- push({ type: 'qmark', value, output: QMARK_NO_DOT });
- continue;
- }
-
- push({ type: 'qmark', value, output: QMARK });
- continue;
- }
-
- /**
- * Exclamation
- */
-
- if (value === '!') {
- if (opts.noextglob !== true && peek() === '(') {
- if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {
- extglobOpen('negate', value);
- continue;
- }
- }
-
- if (opts.nonegate !== true && state.index === 0) {
- negate();
- continue;
- }
- }
-
- /**
- * Plus
- */
-
- if (value === '+') {
- if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {
- extglobOpen('plus', value);
- continue;
- }
-
- if ((prev && prev.value === '(') || opts.regex === false) {
- push({ type: 'plus', value, output: PLUS_LITERAL });
- continue;
- }
-
- if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {
- push({ type: 'plus', value });
- continue;
- }
-
- push({ type: 'plus', value: PLUS_LITERAL });
- continue;
- }
-
- /**
- * Plain text
- */
-
- if (value === '@') {
- if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {
- push({ type: 'at', extglob: true, value, output: '' });
- continue;
- }
-
- push({ type: 'text', value });
- continue;
- }
-
- /**
- * Plain text
- */
-
- if (value !== '*') {
- if (value === '$' || value === '^') {
- value = `\\${value}`;
- }
-
- const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());
- if (match) {
- value += match[0];
- state.index += match[0].length;
- }
-
- push({ type: 'text', value });
- continue;
- }
-
- /**
- * Stars
- */
-
- if (prev && (prev.type === 'globstar' || prev.star === true)) {
- prev.type = 'star';
- prev.star = true;
- prev.value += value;
- prev.output = star;
- state.backtrack = true;
- state.globstar = true;
- consume(value);
- continue;
- }
-
- let rest = remaining();
- if (opts.noextglob !== true && /^\([^?]/.test(rest)) {
- extglobOpen('star', value);
- continue;
- }
-
- if (prev.type === 'star') {
- if (opts.noglobstar === true) {
- consume(value);
- continue;
- }
-
- const prior = prev.prev;
- const before = prior.prev;
- const isStart = prior.type === 'slash' || prior.type === 'bos';
- const afterStar = before && (before.type === 'star' || before.type === 'globstar');
-
- if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {
- push({ type: 'star', value, output: '' });
- continue;
- }
-
- const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');
- const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');
- if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {
- push({ type: 'star', value, output: '' });
- continue;
- }
-
- // strip consecutive `/**/`
- while (rest.slice(0, 3) === '/**') {
- const after = input[state.index + 4];
- if (after && after !== '/') {
- break;
- }
- rest = rest.slice(3);
- consume('/**', 3);
- }
-
- if (prior.type === 'bos' && eos()) {
- prev.type = 'globstar';
- prev.value += value;
- prev.output = globstar(opts);
- state.output = prev.output;
- state.globstar = true;
- consume(value);
- continue;
- }
-
- if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {
- state.output = state.output.slice(0, -(prior.output + prev.output).length);
- prior.output = `(?:${prior.output}`;
-
- prev.type = 'globstar';
- prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');
- prev.value += value;
- state.globstar = true;
- state.output += prior.output + prev.output;
- consume(value);
- continue;
- }
-
- if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {
- const end = rest[1] !== void 0 ? '|$' : '';
-
- state.output = state.output.slice(0, -(prior.output + prev.output).length);
- prior.output = `(?:${prior.output}`;
-
- prev.type = 'globstar';
- prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;
- prev.value += value;
-
- state.output += prior.output + prev.output;
- state.globstar = true;
-
- consume(value + advance());
-
- push({ type: 'slash', value: '/', output: '' });
- continue;
- }
-
- if (prior.type === 'bos' && rest[0] === '/') {
- prev.type = 'globstar';
- prev.value += value;
- prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;
- state.output = prev.output;
- state.globstar = true;
- consume(value + advance());
- push({ type: 'slash', value: '/', output: '' });
- continue;
- }
-
- // remove single star from output
- state.output = state.output.slice(0, -prev.output.length);
-
- // reset previous token to globstar
- prev.type = 'globstar';
- prev.output = globstar(opts);
- prev.value += value;
-
- // reset output with globstar
- state.output += prev.output;
- state.globstar = true;
- consume(value);
- continue;
- }
-
- const token = { type: 'star', value, output: star };
-
- if (opts.bash === true) {
- token.output = '.*?';
- if (prev.type === 'bos' || prev.type === 'slash') {
- token.output = nodot + token.output;
- }
- push(token);
- continue;
- }
-
- if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {
- token.output = value;
- push(token);
- continue;
- }
-
- if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {
- if (prev.type === 'dot') {
- state.output += NO_DOT_SLASH;
- prev.output += NO_DOT_SLASH;
-
- } else if (opts.dot === true) {
- state.output += NO_DOTS_SLASH;
- prev.output += NO_DOTS_SLASH;
-
- } else {
- state.output += nodot;
- prev.output += nodot;
- }
-
- if (peek() !== '*') {
- state.output += ONE_CHAR;
- prev.output += ONE_CHAR;
- }
- }
-
- push(token);
- }
-
- while (state.brackets > 0) {
- if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));
- state.output = utils.escapeLast(state.output, '[');
- decrement('brackets');
- }
-
- while (state.parens > 0) {
- if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));
- state.output = utils.escapeLast(state.output, '(');
- decrement('parens');
- }
-
- while (state.braces > 0) {
- if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));
- state.output = utils.escapeLast(state.output, '{');
- decrement('braces');
- }
-
- if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {
- push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });
- }
-
- // rebuild the output if we had to backtrack at any point
- if (state.backtrack === true) {
- state.output = '';
-
- for (const token of state.tokens) {
- state.output += token.output != null ? token.output : token.value;
-
- if (token.suffix) {
- state.output += token.suffix;
- }
- }
- }
-
- return state;
-};
-
-/**
- * Fast paths for creating regular expressions for common glob patterns.
- * This can significantly speed up processing and has very little downside
- * impact when none of the fast paths match.
- */
-
-parse.fastpaths = (input, options) => {
- const opts = { ...options };
- const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
- const len = input.length;
- if (len > max) {
- throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);
- }
-
- input = REPLACEMENTS[input] || input;
- const win32 = utils.isWindows(options);
-
- // create constants based on platform, for windows or posix
- const {
- DOT_LITERAL,
- SLASH_LITERAL,
- ONE_CHAR,
- DOTS_SLASH,
- NO_DOT,
- NO_DOTS,
- NO_DOTS_SLASH,
- STAR,
- START_ANCHOR
- } = constants.globChars(win32);
-
- const nodot = opts.dot ? NO_DOTS : NO_DOT;
- const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;
- const capture = opts.capture ? '' : '?:';
- const state = { negated: false, prefix: '' };
- let star = opts.bash === true ? '.*?' : STAR;
-
- if (opts.capture) {
- star = `(${star})`;
- }
-
- const globstar = (opts) => {
- if (opts.noglobstar === true) return star;
- return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;
- };
-
- const create = str => {
- switch (str) {
- case '*':
- return `${nodot}${ONE_CHAR}${star}`;
-
- case '.*':
- return `${DOT_LITERAL}${ONE_CHAR}${star}`;
-
- case '*.*':
- return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;
-
- case '*/*':
- return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;
-
- case '**':
- return nodot + globstar(opts);
-
- case '**/*':
- return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;
-
- case '**/*.*':
- return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;
-
- case '**/.*':
- return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;
-
- default: {
- const match = /^(.*?)\.(\w+)$/.exec(str);
- if (!match) return;
-
- const source = create(match[1]);
- if (!source) return;
-
- return source + DOT_LITERAL + match[2];
- }
- }
- };
-
- const output = utils.removePrefix(input, state);
- let source = create(output);
-
- if (source && opts.strictSlashes !== true) {
- source += `${SLASH_LITERAL}?`;
- }
-
- return source;
-};
-
-module.exports = parse;
diff --git a/assets/node_modules/picomatch/lib/picomatch.js b/assets/node_modules/picomatch/lib/picomatch.js
deleted file mode 100644
index 7fe41db..0000000
--- a/assets/node_modules/picomatch/lib/picomatch.js
+++ /dev/null
@@ -1,338 +0,0 @@
-'use strict';
-
-const path = require('path');
-const scan = require('./scan');
-const parse = require('./parse');
-const utils = require('./utils');
-const constants = require('./constants');
-const isObject = val => val && typeof val === 'object' && !Array.isArray(val);
-
-/**
- * Creates a matcher function from one or more glob patterns. The
- * returned function takes a string to match as its first argument,
- * and returns true if the string is a match. The returned matcher
- * function also takes a boolean as the second argument that, when true,
- * returns an object with additional information.
- *
- * ```js
- * const picomatch = require('picomatch');
- * // picomatch(glob[, options]);
- *
- * const isMatch = picomatch('*.!(*a)');
- * console.log(isMatch('a.a')); //=> false
- * console.log(isMatch('a.b')); //=> true
- * ```
- * @name picomatch
- * @param {String|Array} `globs` One or more glob patterns.
- * @param {Object=} `options`
- * @return {Function=} Returns a matcher function.
- * @api public
- */
-
-const picomatch = (glob, options, returnState = false) => {
- if (Array.isArray(glob)) {
- const fns = glob.map(input => picomatch(input, options, returnState));
- const arrayMatcher = str => {
- for (const isMatch of fns) {
- const state = isMatch(str);
- if (state) return state;
- }
- return false;
- };
- return arrayMatcher;
- }
-
- const isState = isObject(glob) && glob.tokens && glob.input;
-
- if (glob === '' || (typeof glob !== 'string' && !isState)) {
- throw new TypeError('Expected pattern to be a non-empty string');
- }
-
- const opts = options || {};
- const posix = utils.isWindows(options);
- const regex = isState
- ? picomatch.compileRe(glob, options)
- : picomatch.makeRe(glob, options, false, true);
-
- const state = regex.state;
- delete regex.state;
-
- let isIgnored = () => false;
- if (opts.ignore) {
- const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };
- isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);
- }
-
- const matcher = (input, returnObject = false) => {
- const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });
- const result = { glob, state, regex, posix, input, output, match, isMatch };
-
- if (typeof opts.onResult === 'function') {
- opts.onResult(result);
- }
-
- if (isMatch === false) {
- result.isMatch = false;
- return returnObject ? result : false;
- }
-
- if (isIgnored(input)) {
- if (typeof opts.onIgnore === 'function') {
- opts.onIgnore(result);
- }
- result.isMatch = false;
- return returnObject ? result : false;
- }
-
- if (typeof opts.onMatch === 'function') {
- opts.onMatch(result);
- }
- return returnObject ? result : true;
- };
-
- if (returnState) {
- matcher.state = state;
- }
-
- return matcher;
-};
-
-/**
- * Test `input` with the given `regex`. This is used by the main
- * `picomatch()` function to test the input string.
- *
- * ```js
- * const picomatch = require('picomatch');
- * // picomatch.test(input, regex[, options]);
- *
- * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/));
- * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }
- * ```
- * @param {String} `input` String to test.
- * @param {RegExp} `regex`
- * @return {Object} Returns an object with matching info.
- * @api public
- */
-
-picomatch.test = (input, regex, options, { glob, posix } = {}) => {
- if (typeof input !== 'string') {
- throw new TypeError('Expected input to be a string');
- }
-
- if (input === '') {
- return { isMatch: false, output: '' };
- }
-
- const opts = options || {};
- const format = opts.format || (posix ? utils.toPosixSlashes : null);
- let match = input === glob;
- let output = (match && format) ? format(input) : input;
-
- if (match === false) {
- output = format ? format(input) : input;
- match = output === glob;
- }
-
- if (match === false || opts.capture === true) {
- if (opts.matchBase === true || opts.basename === true) {
- match = picomatch.matchBase(input, regex, options, posix);
- } else {
- match = regex.exec(output);
- }
- }
-
- return { isMatch: Boolean(match), match, output };
-};
-
-/**
- * Match the basename of a filepath.
- *
- * ```js
- * const picomatch = require('picomatch');
- * // picomatch.matchBase(input, glob[, options]);
- * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true
- * ```
- * @param {String} `input` String to test.
- * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).
- * @return {Boolean}
- * @api public
- */
-
-picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {
- const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);
- return regex.test(path.basename(input));
-};
-
-/**
- * Returns true if **any** of the given glob `patterns` match the specified `string`.
- *
- * ```js
- * const picomatch = require('picomatch');
- * // picomatch.isMatch(string, patterns[, options]);
- *
- * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true
- * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false
- * ```
- * @param {String|Array} str The string to test.
- * @param {String|Array} patterns One or more glob patterns to use for matching.
- * @param {Object} [options] See available [options](#options).
- * @return {Boolean} Returns true if any patterns match `str`
- * @api public
- */
-
-picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);
-
-/**
- * Parse a glob pattern to create the source string for a regular
- * expression.
- *
- * ```js
- * const picomatch = require('picomatch');
- * const result = picomatch.parse(pattern[, options]);
- * ```
- * @param {String} `pattern`
- * @param {Object} `options`
- * @return {Object} Returns an object with useful properties and output to be used as a regex source string.
- * @api public
- */
-
-picomatch.parse = (pattern, options) => {
- if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));
- return parse(pattern, { ...options, fastpaths: false });
-};
-
-/**
- * Scan a glob pattern to separate the pattern into segments.
- *
- * ```js
- * const picomatch = require('picomatch');
- * // picomatch.scan(input[, options]);
- *
- * const result = picomatch.scan('!./foo/*.js');
- * console.log(result);
- * { prefix: '!./',
- * input: '!./foo/*.js',
- * start: 3,
- * base: 'foo',
- * glob: '*.js',
- * isBrace: false,
- * isBracket: false,
- * isGlob: true,
- * isExtglob: false,
- * isGlobstar: false,
- * negated: true }
- * ```
- * @param {String} `input` Glob pattern to scan.
- * @param {Object} `options`
- * @return {Object} Returns an object with
- * @api public
- */
-
-picomatch.scan = (input, options) => scan(input, options);
-
-/**
- * Create a regular expression from a glob pattern.
- *
- * ```js
- * const picomatch = require('picomatch');
- * // picomatch.makeRe(input[, options]);
- *
- * console.log(picomatch.makeRe('*.js'));
- * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/
- * ```
- * @param {String} `input` A glob pattern to convert to regex.
- * @param {Object} `options`
- * @return {RegExp} Returns a regex created from the given pattern.
- * @api public
- */
-
-picomatch.compileRe = (parsed, options, returnOutput = false, returnState = false) => {
- if (returnOutput === true) {
- return parsed.output;
- }
-
- const opts = options || {};
- const prepend = opts.contains ? '' : '^';
- const append = opts.contains ? '' : '$';
-
- let source = `${prepend}(?:${parsed.output})${append}`;
- if (parsed && parsed.negated === true) {
- source = `^(?!${source}).*$`;
- }
-
- const regex = picomatch.toRegex(source, options);
- if (returnState === true) {
- regex.state = parsed;
- }
-
- return regex;
-};
-
-picomatch.makeRe = (input, options, returnOutput = false, returnState = false) => {
- if (!input || typeof input !== 'string') {
- throw new TypeError('Expected a non-empty string');
- }
-
- const opts = options || {};
- let parsed = { negated: false, fastpaths: true };
- let prefix = '';
- let output;
-
- if (input.startsWith('./')) {
- input = input.slice(2);
- prefix = parsed.prefix = './';
- }
-
- if (opts.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {
- output = parse.fastpaths(input, options);
- }
-
- if (output === undefined) {
- parsed = parse(input, options);
- parsed.prefix = prefix + (parsed.prefix || '');
- } else {
- parsed.output = output;
- }
-
- return picomatch.compileRe(parsed, options, returnOutput, returnState);
-};
-
-/**
- * Create a regular expression from the given regex source string.
- *
- * ```js
- * const picomatch = require('picomatch');
- * // picomatch.toRegex(source[, options]);
- *
- * const { output } = picomatch.parse('*.js');
- * console.log(picomatch.toRegex(output));
- * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/
- * ```
- * @param {String} `source` Regular expression source string.
- * @param {Object} `options`
- * @return {RegExp}
- * @api public
- */
-
-picomatch.toRegex = (source, options) => {
- try {
- const opts = options || {};
- return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));
- } catch (err) {
- if (options && options.debug === true) throw err;
- return /$^/;
- }
-};
-
-/**
- * Picomatch constants.
- * @return {Object}
- */
-
-picomatch.constants = constants;
-
-/**
- * Expose "picomatch"
- */
-
-module.exports = picomatch;
diff --git a/assets/node_modules/picomatch/lib/scan.js b/assets/node_modules/picomatch/lib/scan.js
deleted file mode 100644
index f291890..0000000
--- a/assets/node_modules/picomatch/lib/scan.js
+++ /dev/null
@@ -1,382 +0,0 @@
-'use strict';
-
-const utils = require('./utils');
-const {
- CHAR_ASTERISK, /* * */
- CHAR_AT, /* @ */
- CHAR_BACKWARD_SLASH, /* \ */
- CHAR_COMMA, /* , */
- CHAR_DOT, /* . */
- CHAR_EXCLAMATION_MARK, /* ! */
- CHAR_FORWARD_SLASH, /* / */
- CHAR_LEFT_CURLY_BRACE, /* { */
- CHAR_LEFT_PARENTHESES, /* ( */
- CHAR_LEFT_SQUARE_BRACKET, /* [ */
- CHAR_PLUS, /* + */
- CHAR_QUESTION_MARK, /* ? */
- CHAR_RIGHT_CURLY_BRACE, /* } */
- CHAR_RIGHT_PARENTHESES, /* ) */
- CHAR_RIGHT_SQUARE_BRACKET /* ] */
-} = require('./constants');
-
-const isPathSeparator = code => {
- return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;
-};
-
-const depth = token => {
- if (token.isPrefix !== true) {
- token.depth = token.isGlobstar ? Infinity : 1;
- }
-};
-
-/**
- * Quickly scans a glob pattern and returns an object with a handful of
- * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),
- * `glob` (the actual pattern), and `negated` (true if the path starts with `!`).
- *
- * ```js
- * const pm = require('picomatch');
- * console.log(pm.scan('foo/bar/*.js'));
- * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }
- * ```
- * @param {String} `str`
- * @param {Object} `options`
- * @return {Object} Returns an object with tokens and regex source string.
- * @api public
- */
-
-const scan = (input, options) => {
- const opts = options || {};
-
- const length = input.length - 1;
- const scanToEnd = opts.parts === true || opts.scanToEnd === true;
- const slashes = [];
- const tokens = [];
- const parts = [];
-
- let str = input;
- let index = -1;
- let start = 0;
- let lastIndex = 0;
- let isBrace = false;
- let isBracket = false;
- let isGlob = false;
- let isExtglob = false;
- let isGlobstar = false;
- let braceEscaped = false;
- let backslashes = false;
- let negated = false;
- let finished = false;
- let braces = 0;
- let prev;
- let code;
- let token = { value: '', depth: 0, isGlob: false };
-
- const eos = () => index >= length;
- const peek = () => str.charCodeAt(index + 1);
- const advance = () => {
- prev = code;
- return str.charCodeAt(++index);
- };
-
- while (index < length) {
- code = advance();
- let next;
-
- if (code === CHAR_BACKWARD_SLASH) {
- backslashes = token.backslashes = true;
- code = advance();
-
- if (code === CHAR_LEFT_CURLY_BRACE) {
- braceEscaped = true;
- }
- continue;
- }
-
- if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {
- braces++;
-
- while (eos() !== true && (code = advance())) {
- if (code === CHAR_BACKWARD_SLASH) {
- backslashes = token.backslashes = true;
- advance();
- continue;
- }
-
- if (code === CHAR_LEFT_CURLY_BRACE) {
- braces++;
- continue;
- }
-
- if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {
- isBrace = token.isBrace = true;
- isGlob = token.isGlob = true;
- finished = true;
-
- if (scanToEnd === true) {
- continue;
- }
-
- break;
- }
-
- if (braceEscaped !== true && code === CHAR_COMMA) {
- isBrace = token.isBrace = true;
- isGlob = token.isGlob = true;
- finished = true;
-
- if (scanToEnd === true) {
- continue;
- }
-
- break;
- }
-
- if (code === CHAR_RIGHT_CURLY_BRACE) {
- braces--;
-
- if (braces === 0) {
- braceEscaped = false;
- isBrace = token.isBrace = true;
- finished = true;
- break;
- }
- }
- }
-
- if (scanToEnd === true) {
- continue;
- }
-
- break;
- }
-
- if (code === CHAR_FORWARD_SLASH) {
- slashes.push(index);
- tokens.push(token);
- token = { value: '', depth: 0, isGlob: false };
-
- if (finished === true) continue;
- if (prev === CHAR_DOT && index === (start + 1)) {
- start += 2;
- continue;
- }
-
- lastIndex = index + 1;
- continue;
- }
-
- if (opts.noext !== true) {
- const isExtglobChar = code === CHAR_PLUS
- || code === CHAR_AT
- || code === CHAR_ASTERISK
- || code === CHAR_QUESTION_MARK
- || code === CHAR_EXCLAMATION_MARK;
-
- if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {
- isGlob = token.isGlob = true;
- isExtglob = token.isExtglob = true;
- finished = true;
-
- if (scanToEnd === true) {
- while (eos() !== true && (code = advance())) {
- if (code === CHAR_BACKWARD_SLASH) {
- backslashes = token.backslashes = true;
- code = advance();
- continue;
- }
-
- if (code === CHAR_RIGHT_PARENTHESES) {
- isGlob = token.isGlob = true;
- finished = true;
- break;
- }
- }
- continue;
- }
- break;
- }
- }
-
- if (code === CHAR_ASTERISK) {
- if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;
- isGlob = token.isGlob = true;
- finished = true;
-
- if (scanToEnd === true) {
- continue;
- }
- break;
- }
-
- if (code === CHAR_QUESTION_MARK) {
- isGlob = token.isGlob = true;
- finished = true;
-
- if (scanToEnd === true) {
- continue;
- }
- break;
- }
-
- if (code === CHAR_LEFT_SQUARE_BRACKET) {
- while (eos() !== true && (next = advance())) {
- if (next === CHAR_BACKWARD_SLASH) {
- backslashes = token.backslashes = true;
- advance();
- continue;
- }
-
- if (next === CHAR_RIGHT_SQUARE_BRACKET) {
- isBracket = token.isBracket = true;
- isGlob = token.isGlob = true;
- finished = true;
-
- if (scanToEnd === true) {
- continue;
- }
- break;
- }
- }
- }
-
- if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {
- negated = token.negated = true;
- start++;
- continue;
- }
-
- if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {
- while (eos() !== true && (code = advance())) {
- if (code === CHAR_BACKWARD_SLASH) {
- backslashes = token.backslashes = true;
- code = advance();
- continue;
- }
-
- if (code === CHAR_RIGHT_PARENTHESES) {
- isGlob = token.isGlob = true;
- finished = true;
-
- if (scanToEnd === true) {
- continue;
- }
- break;
- }
- }
- }
-
- if (isGlob === true) {
- finished = true;
-
- if (scanToEnd === true) {
- continue;
- }
-
- break;
- }
- }
-
- if (opts.noext === true) {
- isExtglob = false;
- isGlob = false;
- }
-
- let base = str;
- let prefix = '';
- let glob = '';
-
- if (start > 0) {
- prefix = str.slice(0, start);
- str = str.slice(start);
- lastIndex -= start;
- }
-
- if (base && isGlob === true && lastIndex > 0) {
- base = str.slice(0, lastIndex);
- glob = str.slice(lastIndex);
- } else if (isGlob === true) {
- base = '';
- glob = str;
- } else {
- base = str;
- }
-
- if (base && base !== '' && base !== '/' && base !== str) {
- if (isPathSeparator(base.charCodeAt(base.length - 1))) {
- base = base.slice(0, -1);
- }
- }
-
- if (opts.unescape === true) {
- if (glob) glob = utils.removeBackslashes(glob);
-
- if (base && backslashes === true) {
- base = utils.removeBackslashes(base);
- }
- }
-
- const state = {
- prefix,
- input,
- start,
- base,
- glob,
- isBrace,
- isBracket,
- isGlob,
- isExtglob,
- isGlobstar,
- negated
- };
-
- if (opts.tokens === true) {
- state.maxDepth = 0;
- if (!isPathSeparator(code)) {
- tokens.push(token);
- }
- state.tokens = tokens;
- }
-
- if (opts.parts === true || opts.tokens === true) {
- let prevIndex;
-
- for (let idx = 0; idx < slashes.length; idx++) {
- const n = prevIndex ? prevIndex + 1 : start;
- const i = slashes[idx];
- const value = input.slice(n, i);
- if (opts.tokens) {
- if (idx === 0 && start !== 0) {
- tokens[idx].isPrefix = true;
- tokens[idx].value = prefix;
- } else {
- tokens[idx].value = value;
- }
- depth(tokens[idx]);
- state.maxDepth += tokens[idx].depth;
- }
- if (idx !== 0 || value !== '') {
- parts.push(value);
- }
- prevIndex = i;
- }
-
- if (prevIndex && prevIndex + 1 < input.length) {
- const value = input.slice(prevIndex + 1);
- parts.push(value);
-
- if (opts.tokens) {
- tokens[tokens.length - 1].value = value;
- depth(tokens[tokens.length - 1]);
- state.maxDepth += tokens[tokens.length - 1].depth;
- }
- }
-
- state.slashes = slashes;
- state.parts = parts;
- }
-
- return state;
-};
-
-module.exports = scan;
diff --git a/assets/node_modules/picomatch/lib/utils.js b/assets/node_modules/picomatch/lib/utils.js
deleted file mode 100644
index c3ca766..0000000
--- a/assets/node_modules/picomatch/lib/utils.js
+++ /dev/null
@@ -1,64 +0,0 @@
-'use strict';
-
-const path = require('path');
-const win32 = process.platform === 'win32';
-const {
- REGEX_BACKSLASH,
- REGEX_REMOVE_BACKSLASH,
- REGEX_SPECIAL_CHARS,
- REGEX_SPECIAL_CHARS_GLOBAL
-} = require('./constants');
-
-exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);
-exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);
-exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);
-exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1');
-exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');
-
-exports.removeBackslashes = str => {
- return str.replace(REGEX_REMOVE_BACKSLASH, match => {
- return match === '\\' ? '' : match;
- });
-};
-
-exports.supportsLookbehinds = () => {
- const segs = process.version.slice(1).split('.').map(Number);
- if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {
- return true;
- }
- return false;
-};
-
-exports.isWindows = options => {
- if (options && typeof options.windows === 'boolean') {
- return options.windows;
- }
- return win32 === true || path.sep === '\\';
-};
-
-exports.escapeLast = (input, char, lastIdx) => {
- const idx = input.lastIndexOf(char, lastIdx);
- if (idx === -1) return input;
- if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1);
- return `${input.slice(0, idx)}\\${input.slice(idx)}`;
-};
-
-exports.removePrefix = (input, state = {}) => {
- let output = input;
- if (output.startsWith('./')) {
- output = output.slice(2);
- state.prefix = './';
- }
- return output;
-};
-
-exports.wrapOutput = (input, state = {}, options = {}) => {
- const prepend = options.contains ? '' : '^';
- const append = options.contains ? '' : '$';
-
- let output = `${prepend}(?:${input})${append}`;
- if (state.negated === true) {
- output = `(?:^(?!${output}).*$)`;
- }
- return output;
-};
diff --git a/assets/node_modules/picomatch/package.json b/assets/node_modules/picomatch/package.json
deleted file mode 100644
index ba691fd..0000000
--- a/assets/node_modules/picomatch/package.json
+++ /dev/null
@@ -1,81 +0,0 @@
-{
- "name": "picomatch",
- "description": "Blazing fast and accurate glob matcher written in JavaScript, with no dependencies and full support for standard and extended Bash glob features, including braces, extglobs, POSIX brackets, and regular expressions.",
- "version": "2.2.1",
- "homepage": "https://github.com/micromatch/picomatch",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "funding": "https://github.com/sponsors/jonschlinkert",
- "repository": "micromatch/picomatch",
- "bugs": {
- "url": "https://github.com/micromatch/picomatch/issues"
- },
- "license": "MIT",
- "files": [
- "index.js",
- "lib"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=8.6"
- },
- "scripts": {
- "lint": "eslint --cache --cache-location node_modules/.cache/.eslintcache --report-unused-disable-directives --ignore-path .gitignore .",
- "mocha": "mocha --reporter dot",
- "test": "npm run lint && npm run mocha",
- "test:ci": "npm run lint && npm run test:cover",
- "test:cover": "nyc npm run mocha"
- },
- "devDependencies": {
- "eslint": "^6.8.0",
- "fill-range": "^7.0.1",
- "gulp-format-md": "^2.0.0",
- "mocha": "^6.2.2",
- "nyc": "^15.0.0",
- "time-require": "github:jonschlinkert/time-require"
- },
- "keywords": [
- "glob",
- "match",
- "picomatch"
- ],
- "nyc": {
- "reporter": [
- "html",
- "lcov",
- "text-summary"
- ]
- },
- "verb": {
- "toc": {
- "render": true,
- "method": "preWrite",
- "maxdepth": 3
- },
- "layout": "empty",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- },
- "related": {
- "list": [
- "braces",
- "micromatch"
- ]
- },
- "reflinks": [
- "braces",
- "expand-brackets",
- "extglob",
- "fill-range",
- "micromatch",
- "minimatch",
- "nanomatch",
- "picomatch"
- ]
- }
-}
diff --git a/assets/node_modules/postcss-html/LICENSE b/assets/node_modules/postcss-html/LICENSE
deleted file mode 100644
index d9c0f45..0000000
--- a/assets/node_modules/postcss-html/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2018 刘祺
-
-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/assets/node_modules/postcss-html/README.md b/assets/node_modules/postcss-html/README.md
deleted file mode 100644
index a5898e4..0000000
--- a/assets/node_modules/postcss-html/README.md
+++ /dev/null
@@ -1,78 +0,0 @@
-PostCSS HTML Syntax
-====
-
-[![NPM version](https://img.shields.io/npm/v/postcss-html.svg?style=flat-square)](https://www.npmjs.com/package/postcss-html)
-[![Travis](https://img.shields.io/travis/gucong3000/postcss-html.svg)](https://travis-ci.org/gucong3000/postcss-html)
-[![Travis](https://img.shields.io/travis/gucong3000/postcss-syntaxes.svg?label=integration)](https://travis-ci.org/gucong3000/postcss-syntaxes)
-[![Codecov](https://img.shields.io/codecov/c/github/gucong3000/postcss-html.svg)](https://codecov.io/gh/gucong3000/postcss-html)
-[![David](https://img.shields.io/david/gucong3000/postcss-html.svg)](https://david-dm.org/gucong3000/postcss-html)
-
-<img align="right" width="95" height="95"
- title="Philosopher’s stone, logo of PostCSS"
- src="http://postcss.github.io/postcss/logo.svg">
-
-[PostCSS](https://github.com/postcss/postcss) syntax for parsing HTML (and HTML-like)
-- [PHP](http://php.net)
-- [Vue Single-File Component](https://vue-loader.vuejs.org/spec.html)
-- [Quick App](https://doc.quickapp.cn/framework/source-file.html)
-- [XSLT](https://www.w3.org/TR/xslt-30/)
-
-## Getting Started
-
-First thing's first, install the module:
-
-```
-npm install postcss-syntax postcss-html --save-dev
-```
-
-If you want support SCSS/SASS/LESS/SugarSS syntax, you need to install the corresponding module.
-
-- SCSS: [postcss-scss](https://github.com/postcss/postcss-scss)
-- SASS: [postcss-sass](https://github.com/aleshaoleg/postcss-sass)
-- LESS: [postcss-less](https://github.com/shellscape/postcss-less)
-- SugarSS: [sugarss](https://github.com/postcss/sugarss)
-
-## Use Cases
-
-```js
-const postcss = require('postcss');
-const syntax = require('postcss-html')({
- // syntax for parse scss (non-required options)
- scss: require('postcss-scss'),
- // syntax for parse less (non-required options)
- less: require('postcss-less'),
- // syntax for parse css blocks (non-required options)
- css: require('postcss-safe-parser'),
-});
-postcss(plugins).process(source, { syntax: syntax }).then(function (result) {
- // An alias for the result.css property. Use it with syntaxes that generate non-CSS output.
- result.content
-});
-```
-
-If you want support SCSS/SASS/LESS/SugarSS syntax, you need to install these module:
-
-- SCSS: [postcss-scss](https://github.com/postcss/postcss-scss)
-- SASS: [postcss-sass](https://github.com/aleshaoleg/postcss-sass)
-- LESS: [postcss-less](https://github.com/shellscape/postcss-less)
-- SugarSS: [sugarss](https://github.com/postcss/sugarss)
-
-## Advanced Use Cases
-
-See: [postcss-syntax](https://github.com/gucong3000/postcss-syntax)
-
-## Turning PostCSS off from within your HTML
-
-PostCSS can be temporarily turned off by using special comments in your HTML. For example:
-
-```html
-<html>
-<body>
-<!-- postcss-disable -->
-<a style="color: red;"></a>
-<!-- postcss-enable -->
-```
-
-## Style Transformations
-
-The main use case of this plugin is to apply PostCSS transformations to `<style>` tags and `<div style="*">` property in HTML (and HTML-like).
diff --git a/assets/node_modules/postcss-html/extract.js b/assets/node_modules/postcss-html/extract.js
deleted file mode 100644
index 2364084..0000000
--- a/assets/node_modules/postcss-html/extract.js
+++ /dev/null
@@ -1,122 +0,0 @@
-"use strict";
-
-const htmlparser = require("htmlparser2");
-const loadSyntax = require("postcss-syntax/load-syntax");
-
-function iterateCode (source, onStyleTag, onStyleAttribute) {
- const openTag = {};
- let disable;
- let style;
-
- const parser = new htmlparser.Parser({
- oncomment: (data) => {
- if (!/(?:^|\s+)postcss-(\w+)(?:\s+|$)/i.test(data)) {
- return;
- }
- data = RegExp.$1.toLowerCase();
- if (data === "enable") {
- disable = false;
- } else if (data === "disable") {
- disable = true;
- }
- },
- onopentag (name, attribute) {
- openTag[name] = true;
-
- // Test if current tag is a valid <style> tag.
- if (!/^style$/i.test(name)) {
- return;
- }
-
- style = {
- inXsls: openTag["xsl:stylesheet"],
- inXslt: openTag["xsl:template"],
- inHtml: openTag.html,
- tagName: name,
- attribute,
- startIndex: parser.endIndex + 1,
- };
- },
-
- onclosetag (name) {
- openTag[name] = false;
- if (disable || !style || name !== style.tagName) {
- return;
- }
-
- let content = source.slice(style.startIndex, parser.startIndex);
-
- const firstNewLine = /^[ \t]*\r?\n/.exec(content);
- if (firstNewLine) {
- const offset = firstNewLine[0].length;
- style.startIndex += offset;
- content = content.slice(offset);
- }
- style.content = content.replace(/[ \t]*$/, "");
-
- onStyleTag(style);
- style = null;
- },
-
- onattribute (name, content) {
- if (disable || name !== "style") {
- return;
- }
- const endIndex = parser._tokenizer._index;
- const startIndex = endIndex - content.length;
- if (source[startIndex - 1] !== source[endIndex] || !/\S/.test(source[endIndex])) {
- return;
- }
- onStyleAttribute({
- content,
- startIndex,
- inline: true,
- inTemplate: openTag.template,
- });
- },
- });
-
- parser.parseComplete(source);
-}
-
-function getSubString (str, regexp) {
- const subStr = str && regexp.exec(str);
- if (subStr) {
- return subStr[1].toLowerCase();
- }
-}
-
-function getLang (attribute) {
- return getSubString(attribute.type, /^\w+\/(?:x-)?(\w+)$/i) || getSubString(attribute.lang, /^(\w+)(?:\?.+)?$/) || "css";
-}
-
-function htmlParser (source, opts, styles) {
- styles = styles || [];
-
- const standard = opts.from && /\.(?:\w*html?|xht|xslt?|jsp|aspx?|ejs|php\d*|twig|liquid|m(?:ark)?d(?:ow)?n|mk?d)$/i.test(opts.from);
-
- function onStyleTag (style) {
- if (!(style.inHtml || style.inXsls || style.inXslt || standard) && (style.attribute.src || style.attribute.href) && !style.content.trim()) {
- return;
- }
- style.lang = getLang(style.attribute);
- styles.push(style);
- }
-
- function onStyleAttribute (style) {
- if (/{[\s\S]*?}/g.test(style.content)) {
- style.syntax = loadSyntax(opts, __dirname);
- style.lang = "custom-template";
- } else {
- // style.ignoreErrors = opts.from && /\.(?:jsp|aspx?|ejs|php\d*|twig)$/i.test(opts.from);
- style.lang = "css";
- }
- styles.push(style);
- }
-
- iterateCode(source, onStyleTag, onStyleAttribute);
-
- return styles;
-}
-
-module.exports = htmlParser;
diff --git a/assets/node_modules/postcss-html/index.js b/assets/node_modules/postcss-html/index.js
deleted file mode 100644
index d949465..0000000
--- a/assets/node_modules/postcss-html/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-"use strict";
-const extract = require("./extract");
-const syntax = require("postcss-syntax/syntax")(extract, "html");
-
-module.exports = syntax;
diff --git a/assets/node_modules/postcss-html/package.json b/assets/node_modules/postcss-html/package.json
deleted file mode 100644
index fb66966..0000000
--- a/assets/node_modules/postcss-html/package.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "name": "postcss-html",
- "version": "0.36.0",
- "description": "PostCSS syntax for parsing HTML (and HTML-like)",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/gucong3000/postcss-html.git"
- },
- "keywords": [
- "postcss",
- "syntax",
- "html",
- "vue",
- "quickapp",
- "PHP",
- "css",
- "less",
- "sass",
- "scss",
- "sss",
- "sugarss"
- ],
- "author": "gucong",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/gucong3000/postcss-html/issues"
- },
- "homepage": "https://github.com/gucong3000/postcss-html#readme",
- "nyc": {
- "reporter": [
- "lcov",
- "text"
- ],
- "all": true,
- "cache": true,
- "check-coverage": true
- },
- "scripts": {
- "mocha": "mocha --no-timeouts",
- "test": "nyc npm run mocha",
- "debug": "npm run mocha -- --inspect-brk"
- },
- "dependencies": {
- "htmlparser2": "^3.10.0"
- },
- "peerDependencies": {
- "postcss": ">=5.0.0",
- "postcss-syntax": ">=0.36.0"
- },
- "devDependencies": {
- "autoprefixer": "^9.4.3",
- "chai": "^4.2.0",
- "codecov": "^3.1.0",
- "mocha": "^5.2.0",
- "nyc": "^13.1.0",
- "postcss": "^7.0.7",
- "postcss-less": "^3.1.0",
- "postcss-safe-parser": "^4.0.1",
- "postcss-scss": "^2.0.0",
- "postcss-syntax": ">=0.36.0",
- "sugarss": "^2.0.0"
- }
-}
diff --git a/assets/node_modules/postcss-html/template-parse.js b/assets/node_modules/postcss-html/template-parse.js
deleted file mode 100644
index 51b3b7d..0000000
--- a/assets/node_modules/postcss-html/template-parse.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-
-const TemplateParser = require("./template-parser");
-const Input = require("postcss/lib/input");
-
-function templateParse (css, opts) {
- const input = new Input(css, opts);
-
- const parser = new TemplateParser(input);
- parser.parse();
-
- return parser.root;
-}
-module.exports = templateParse;
diff --git a/assets/node_modules/postcss-html/template-parser.js b/assets/node_modules/postcss-html/template-parser.js
deleted file mode 100644
index 274310f..0000000
--- a/assets/node_modules/postcss-html/template-parser.js
+++ /dev/null
@@ -1,9 +0,0 @@
-"use strict";
-const Parser = require("postcss/lib/parser");
-const templateTokenize = require("./template-tokenize");
-class TemplateParser extends Parser {
- createTokenizer () {
- this.tokenizer = templateTokenize(this.input);
- }
-}
-module.exports = TemplateParser;
diff --git a/assets/node_modules/postcss-html/template-safe-parse.js b/assets/node_modules/postcss-html/template-safe-parse.js
deleted file mode 100644
index e67a7ba..0000000
--- a/assets/node_modules/postcss-html/template-safe-parse.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-
-const TemplateSafeParser = require("./template-safe-parser");
-const Input = require("postcss/lib/input");
-
-function templateSafeParse (css, opts) {
- const input = new Input(css, opts);
-
- const parser = new TemplateSafeParser(input);
- parser.parse();
-
- return parser.root;
-}
-module.exports = templateSafeParse;
diff --git a/assets/node_modules/postcss-html/template-safe-parser.js b/assets/node_modules/postcss-html/template-safe-parser.js
deleted file mode 100644
index d0509ff..0000000
--- a/assets/node_modules/postcss-html/template-safe-parser.js
+++ /dev/null
@@ -1,9 +0,0 @@
-"use strict";
-const SafeParser = require("postcss-safe-parser/lib/safe-parser");
-const templateTokenize = require("./template-tokenize");
-class TemplateSafeParser extends SafeParser {
- createTokenizer () {
- this.tokenizer = templateTokenize(this.input, { ignoreErrors: true });
- }
-}
-module.exports = TemplateSafeParser;
diff --git a/assets/node_modules/postcss-html/template-tokenize.js b/assets/node_modules/postcss-html/template-tokenize.js
deleted file mode 100644
index 04ddd0f..0000000
--- a/assets/node_modules/postcss-html/template-tokenize.js
+++ /dev/null
@@ -1,49 +0,0 @@
-"use strict";
-const tokenize = require("postcss/lib/tokenize");
-
-function templateTokenize () {
- const tokenizer = tokenize.apply(this, arguments);
-
- function nextToken () {
- const args = arguments;
- const returned = [];
- let token;
- let depth = 0;
- let line;
- let column;
-
- while ((token = tokenizer.nextToken.apply(tokenizer, args))) {
- if (token[0] !== "word") {
- if (token[0] === "{") {
- ++depth;
- } else if (token[0] === "}") {
- --depth;
- }
- }
- if (depth || returned.length) {
- line = token[4] || token[2] || line;
- column = token[5] || token[3] || column;
- returned.push(token);
- }
- if (!depth) {
- break;
- }
- }
- if (returned.length) {
- token = [
- "word",
- returned.map(token => token[1]).join(""),
- returned[0][2],
- returned[0][3],
- line,
- column,
- ];
- }
- return token;
- }
- return Object.assign({}, tokenizer, {
- nextToken,
- });
-}
-
-module.exports = templateTokenize;
diff --git a/assets/node_modules/postcss-jsx/LICENSE b/assets/node_modules/postcss-jsx/LICENSE
deleted file mode 100644
index d9c0f45..0000000
--- a/assets/node_modules/postcss-jsx/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2018 刘祺
-
-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/assets/node_modules/postcss-jsx/README.md b/assets/node_modules/postcss-jsx/README.md
deleted file mode 100644
index 8431a1c..0000000
--- a/assets/node_modules/postcss-jsx/README.md
+++ /dev/null
@@ -1,91 +0,0 @@
-PostCSS JSX Syntax
-====
-
-[![NPM version](https://img.shields.io/npm/v/postcss-jsx.svg?style=flat-square)](https://www.npmjs.com/package/postcss-jsx)
-[![Travis](https://img.shields.io/travis/gucong3000/postcss-jsx.svg)](https://travis-ci.org/gucong3000/postcss-jsx)
-[![Travis](https://img.shields.io/travis/gucong3000/postcss-syntaxes.svg?label=integration)](https://travis-ci.org/gucong3000/postcss-syntaxes)
-[![Codecov](https://img.shields.io/codecov/c/github/gucong3000/postcss-jsx.svg)](https://codecov.io/gh/gucong3000/postcss-jsx)
-[![David](https://img.shields.io/david/gucong3000/postcss-jsx.svg)](https://david-dm.org/gucong3000/postcss-jsx)
-
-<img align="right" width="95" height="95"
- title="Philosopher’s stone, logo of PostCSS"
- src="http://postcss.github.io/postcss/logo.svg">
-
-[PostCSS](https://github.com/postcss/postcss) syntax for parsing [CSS in JS](https://github.com/MicheleBertoli/css-in-js) literals:
-
-- [aphrodite](https://github.com/Khan/aphrodite)
-- [astroturf](https://github.com/4Catalyzer/astroturf)
-- [csjs](https://github.com/rtsao/csjs)
-- [css-light](https://github.com/streamich/css-light)
-- [cssobj](https://github.com/cssobj/cssobj)
-- [electron-css](https://github.com/azukaar/electron-css)
-- [emotion](https://github.com/emotion-js/emotion)
-- [freestyler](https://github.com/streamich/freestyler)
-- [glamor](https://github.com/threepointone/glamor)
-- [glamorous](https://github.com/paypal/glamorous)
-- [j2c](https://github.com/j2css/j2c)
-- [linaria](https://github.com/callstack/linaria)
-- [lit-css](https://github.com/bashmish/lit-css)
-- [react-native](https://github.com/necolas/react-native-web)
-- [react-style](https://github.com/js-next/react-style)
-- [reactcss](https://github.com/casesandberg/reactcss)
-- [styled-components](https://github.com/styled-components/styled-components)
-- [styletron-react](https://github.com/rtsao/styletron)
-- [styling](https://github.com/andreypopp/styling)
-- [typestyle](https://github.com/typestyle/typestyle)
-
-## Getting Started
-
-First thing's first, install the module:
-
-```
-npm install postcss-syntax postcss-jsx --save-dev
-```
-
-## Use Cases
-
-```js
-const postcss = require('postcss');
-const stylelint = require('stylelint');
-const syntax = require('postcss-syntax');
-postcss([stylelint({ fix: true })]).process(source, { syntax: syntax }).then(function (result) {
- // An alias for the result.css property. Use it with syntaxes that generate non-CSS output.
- result.content
-});
-```
-
-input:
-```javascript
-import glm from 'glamorous';
-const Component1 = glm.a({
- flexDirectionn: 'row',
- display: 'inline-block',
- color: '#fff',
-});
-```
-
-output:
-```javascript
-import glm from 'glamorous';
-const Component1 = glm.a({
- color: '#fff',
- display: 'inline-block',
- flexDirectionn: 'row',
-});
-```
-
-## Advanced Use Cases
-
-Add support for more `css-in-js` package:
-```js
-const syntax = require('postcss-syntax')({
- "i-css": (index, namespace) => namespace[index + 1] === "addStyles",
- "styled-components": true,
-});
-```
-
-See: [postcss-syntax](https://github.com/gucong3000/postcss-syntax)
-
-## Style Transformations
-
-The main use case of this plugin is to apply PostCSS transformations to CSS code in template literals & styles as object literals.
diff --git a/assets/node_modules/postcss-jsx/camel-case.js b/assets/node_modules/postcss-jsx/camel-case.js
deleted file mode 100644
index f182de4..0000000
--- a/assets/node_modules/postcss-jsx/camel-case.js
+++ /dev/null
@@ -1,18 +0,0 @@
-"use strict";
-function camelCase (str) {
- return str.replace(/[\w-]+/g, (s) => (
- /^-?[a-z]+(?:-[a-z]+)+$/.test(s)
- ? s.replace(
- /^-(ms|moz|khtml|epub|(\w+-?)*webkit)(?=-)/i,
- "$1"
- ).replace(
- /-\w/g,
- s => (
- s[1].toUpperCase()
- )
- )
- : s
- ));
-}
-
-module.exports = camelCase;
diff --git a/assets/node_modules/postcss-jsx/extract.js b/assets/node_modules/postcss-jsx/extract.js
deleted file mode 100644
index 170749a..0000000
--- a/assets/node_modules/postcss-jsx/extract.js
+++ /dev/null
@@ -1,386 +0,0 @@
-"use strict";
-const {
- parse,
- types,
- traverse,
- loadOptions,
-} = require("@babel/core");
-const getTemplate = require("./get-template");
-const loadSyntax = require("postcss-syntax/load-syntax");
-
-const isStyleSheetCreate = expectAdjacentSibling(["create"]);
-const supports = {
- // import styled from '@emotion/styled'
- // import { styled } from 'glamor/styled'
- // import { styled } from "styletron-react";
- // import { styled } from 'linaria/react';
- // import { styled } from '@material-ui/styles'
- styled: true,
-
- // import { style } from "typestyle";
- style: true,
-
- // import { StyleSheet, css } from 'aphrodite';
- // import styled, { css } from 'astroturf';
- // import { css } from 'lit-css';
- // import { css } from 'glamor'
- // require('css-light').css({color: 'red'});
- // import { css } from 'linaria';
- css: true,
-
- // import { StyleSheet, css } from 'aphrodite';
- // import { AppRegistry, StyleSheet, Text, View } from 'react-native';
- StyleSheet: isStyleSheetCreate,
-
- // import styled, { css } from 'astroturf';
- astroturf: true,
-
- // require('csjs')`css`;
- csjs: true,
-
- // require('cssobj')({color: 'red'})
- cssobj: true,
-
- // require('electron-css')({color: 'red'})
- "electron-css": true,
-
- // import styled from "react-emotion";
- "react-emotion": true,
-
- // import styled from 'preact-emotion'
- "preact-emotion": true,
-
- // https://github.com/streamich/freestyler
- freestyler: true,
-
- // https://github.com/paypal/glamorous
- glamorous: true,
-
- // https://github.com/irom-io/i-css
- // "i-css": (i, nameSpace) => nameSpace[i + 1] === "addStyles" && nameSpace[i + 2] === "wrapper",
-
- // https://github.com/j2css/j2c
- j2c: expectAdjacentSibling(["inline", "sheet"]),
-
- // var styles = StyleSheet.create({color: 'red'})
- "react-inline": isStyleSheetCreate,
- "react-style": isStyleSheetCreate,
-
- // import reactCSS from 'reactcss'
- reactcss: true,
-
- // const StyledButton = injectSheet(styles)(Button)
- "react-jss": true,
-
- // import styled from 'styled-components';
- "styled-components": true,
-
- // import {withStyle} from "styletron-react";
- "styletron-react": expectAdjacentSibling(["withStyle"]),
-
- "styling": true,
-
- // const rule = superstyle({ color: 'blue' })
- "superstyle": true,
-
- // import { makeStyles } from '@material-ui/styles'
- 'styles': expectAdjacentSibling(["makeStyles"]),
-};
-
-const plugins = [
- "jsx",
- "typescript",
- "objectRestSpread",
- ["decorators", { "decoratorsBeforeExport": false }],
- "classProperties",
- "exportExtensions",
- "asyncGenerators",
- "functionBind",
- "functionSent",
- "dynamicImport",
- "optionalCatchBinding",
-];
-
-function expectAdjacentSibling (names) {
- return (i, nameSpace) => (
- names.some(name => nameSpace[i + 1] === name)
- );
-}
-
-function loadBabelOpts (opts) {
- const filename = opts.from && opts.from.replace(/\?.*$/, "");
- opts = {
- filename,
- parserOpts: {
- plugins,
- sourceFilename: filename,
- sourceType: filename && /\.m[tj]sx?$/.test(filename) ? "module" : "unambiguous",
- allowImportExportEverywhere: true,
- allowAwaitOutsideFunction: true,
- allowReturnOutsideFunction: true,
- allowSuperOutsideMethod: true,
- },
- };
- let fileOpts;
- try {
- fileOpts = filename && loadOptions({
- filename,
- });
- } catch (ex) {
- //
- }
- for (const key in fileOpts) {
- if (Array.isArray(fileOpts[key]) && !fileOpts[key].length) {
- continue;
- }
- // because some options need to be passed to parser also
- opts[key] = fileOpts[key];
- opts.parserOpts[key] = fileOpts[key];
- }
- return opts;
-}
-
-function literalParser (source, opts, styles) {
- let ast;
- try {
- ast = parse(source, loadBabelOpts(opts));
- } catch (ex) {
- // console.error(ex);
- return styles || [];
- }
-
- const specifiers = new Map();
- const variableDeclarator = new Map();
- let objLiteral = new Set();
- let tplLiteral = new Set();
- const tplCallee = new Set();
- const jobs = [];
-
- function addObjectJob (path) {
- jobs.push(() => {
- addObjectValue(path);
- });
- }
-
- function addObjectValue (path) {
- if (path.isIdentifier()) {
- const identifier = path.scope.getBindingIdentifier(path.node.name);
- if (identifier) {
- path = variableDeclarator.get(identifier);
- if (path) {
- variableDeclarator.delete(identifier);
- path.forEach(addObjectExpression);
- }
- }
- } else {
- addObjectExpression(path);
- }
- }
-
- function addObjectExpression (path) {
- if (path.isObjectExpression()) {
- path.get("properties").forEach(prop => {
- if (prop.isSpreadElement()) {
- addObjectValue(prop.get("argument"));
- }
- });
- objLiteral.add(path.node);
- return path;
- }
- }
-
- function setSpecifier (id, nameSpace) {
- nameSpace.unshift.apply(
- nameSpace,
- nameSpace.shift().replace(/^\W+/, "").split(/[/\\]+/g)
- );
-
- if (types.isIdentifier(id)) {
- specifiers.set(id.name, nameSpace);
- specifiers.set(id, nameSpace);
- } else if (types.isObjectPattern(id)) {
- id.properties.forEach(property => {
- if (types.isObjectProperty(property)) {
- const key = property.key;
- nameSpace = nameSpace.concat(key.name || key.value);
- id = property.value;
- } else {
- id = property.argument;
- }
- setSpecifier(id, nameSpace);
- });
- } else if (types.isArrayPattern(id)) {
- id.elements.forEach((element, i) => {
- setSpecifier(element, nameSpace.concat(String(i)));
- });
- }
- }
-
- function getNameSpace (path, nameSpace) {
- let node = path.node;
- if (path.isIdentifier() || path.isJSXIdentifier()) {
- node = path.scope.getBindingIdentifier(node.name) || node;
- const specifier = specifiers.get(node) || specifiers.get(node.name);
- if (specifier) {
- nameSpace.unshift.apply(nameSpace, specifier);
- } else {
- nameSpace.unshift(node.name);
- }
- } else {
- [
- "name",
- "property",
- "object",
- "callee",
- ].forEach(prop => {
- node[prop] && getNameSpace(path.get(prop), nameSpace);
- });
- }
-
- return nameSpace;
- }
-
- function isStylePath (path) {
- return getNameSpace(path, []).some(function (name) {
- let result = name && ((supports.hasOwnProperty(name) && supports[name]) || (opts.syntax.config.hasOwnProperty(name) && opts.syntax.config[name]));
- switch (typeof result) {
- case "function": {
- result = result.apply(this, Array.prototype.slice.call(arguments, 1));
- }
- // eslint-disable-next-line no-fallthrough
- case "boolean": {
- return result;
- }
- }
- });
- }
-
- const visitor = {
- ImportDeclaration: (path) => {
- const moduleId = path.node.source.value;
- path.node.specifiers.forEach(specifier => {
- const nameSpace = [moduleId];
- if (specifier.imported) {
- nameSpace.push(specifier.imported.name);
- }
- setSpecifier(specifier.local, nameSpace);
- });
- },
- JSXAttribute: (path) => {
- if (/^(?:css|style)$/.test(path.node.name.name)) {
- addObjectJob(path.get("value.expression"));
- }
- },
- VariableDeclarator: (path) => {
- variableDeclarator.set(path.node.id, path.node.init ? [path.get("init")] : []);
- },
- AssignmentExpression: (path) => {
- if (types.isIdentifier(path.node.left) && types.isObjectExpression(path.node.right)) {
- const identifier = path.scope.getBindingIdentifier(path.node.left.name);
- const variable = variableDeclarator.get(identifier);
- const valuePath = path.get("right");
- if (variable) {
- variable.push(valuePath);
- } else {
- variableDeclarator.set(identifier, [valuePath]);
- }
- }
- },
- CallExpression: (path) => {
- const callee = path.node.callee;
- if (types.isIdentifier(callee, { name: "require" }) && !path.scope.getBindingIdentifier(callee.name)) {
- path.node.arguments.filter(types.isStringLiteral).forEach(arg => {
- const moduleId = arg.value;
- const nameSpace = [moduleId];
- let currPath = path;
- do {
- let id = currPath.parent.id;
- if (!id) {
- id = currPath.parent.left;
- if (id) {
- id = path.scope.getBindingIdentifier(id.name) || id;
- } else {
- if (types.isIdentifier(currPath.parent.property)) {
- nameSpace.push(currPath.parent.property.name);
- }
- currPath = currPath.parentPath;
- continue;
- }
- };
- setSpecifier(id, nameSpace);
- break;
- } while (currPath);
- });
- } else if (!tplCallee.has(callee) && isStylePath(path.get("callee"))) {
- path.get("arguments").forEach((arg) => {
- addObjectJob(arg.isFunction() ? arg.get("body") : arg);
- });
- }
- },
- TaggedTemplateExpression: (path) => {
- if (isStylePath(path.get("tag"))) {
- tplLiteral.add(path.node.quasi);
- if (path.node.tag.callee) {
- tplCallee.add(path.node.tag.callee);
- }
- }
- },
- };
-
- traverse(ast, visitor);
- jobs.forEach(job => job());
-
- objLiteral = Array.from(objLiteral).map(endNode => {
- const objectSyntax = require("./object-syntax");
- let startNode = endNode;
- if (startNode.leadingComments && startNode.leadingComments.length) {
- startNode = startNode.leadingComments[0];
- }
- let startIndex = startNode.start;
- const before = source.slice(startNode.start - startNode.loc.start.column, startNode.start);
- if (/^\s+$/.test(before)) {
- startIndex -= before.length;
- }
- return {
- startIndex,
- endIndex: endNode.end,
- skipConvert: true,
- content: source,
- opts: {
- node: endNode,
- },
- syntax: objectSyntax,
- lang: "object-literal",
- };
- });
-
- tplLiteral = Array.from(tplLiteral).filter(node => (
- objLiteral.every(style => (
- node.start > style.endIndex || node.end < style.startIndex
- ))
- )).map(node => {
- const quasis = node.quasis.map(node => ({
- start: node.start,
- end: node.end,
- }));
- const style = {
- startIndex: quasis[0].start,
- endIndex: quasis[quasis.length - 1].end,
- content: getTemplate(node, source),
- };
- if (node.expressions.length) {
- style.syntax = loadSyntax(opts, __dirname);
- style.lang = "template-literal";
- style.opts = {
- quasis: quasis,
- };
- } else {
- style.lang = "css";
- }
- return style;
- });
-
- return (styles || []).concat(objLiteral).concat(tplLiteral);
-};
-
-module.exports = literalParser;
diff --git a/assets/node_modules/postcss-jsx/get-template.js b/assets/node_modules/postcss-jsx/get-template.js
deleted file mode 100644
index adf26a5..0000000
--- a/assets/node_modules/postcss-jsx/get-template.js
+++ /dev/null
@@ -1,5 +0,0 @@
-"use strict";
-function getTemplate (node, source) {
- return source.slice(node.quasis[0].start, node.quasis[node.quasis.length - 1].end);
-}
-module.exports = getTemplate;
diff --git a/assets/node_modules/postcss-jsx/index.js b/assets/node_modules/postcss-jsx/index.js
deleted file mode 100644
index 071bda3..0000000
--- a/assets/node_modules/postcss-jsx/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-"use strict";
-const extract = require("./extract");
-const syntax = require("postcss-syntax/syntax")(extract, "jsx");
-
-module.exports = syntax;
diff --git a/assets/node_modules/postcss-jsx/literal.js b/assets/node_modules/postcss-jsx/literal.js
deleted file mode 100644
index 1cc1257..0000000
--- a/assets/node_modules/postcss-jsx/literal.js
+++ /dev/null
@@ -1,23 +0,0 @@
-
-"use strict";
-const Node = require("postcss/lib/node");
-
-/**
- * Represents a JS literal
- *
- * @extends Container
- *
- * @example
- * const root = postcss.parse('{}');
- * const literal = root.first;
- * literal.type //=> 'literal'
- * literal.toString() //=> 'a{}'
- */
-class Literal extends Node {
- constructor (defaults) {
- super(defaults);
- this.type = "literal";
- }
-}
-
-module.exports = Literal;
diff --git a/assets/node_modules/postcss-jsx/object-parse.js b/assets/node_modules/postcss-jsx/object-parse.js
deleted file mode 100644
index a6749e7..0000000
--- a/assets/node_modules/postcss-jsx/object-parse.js
+++ /dev/null
@@ -1,12 +0,0 @@
-"use strict";
-
-const ObjectParser = require("./object-parser");
-const Input = require("postcss/lib/input");
-
-function objectParse (source, opts) {
- const input = new Input(source, opts);
- const parser = new ObjectParser(input);
- parser.parse(opts.node);
- return parser.root;
-}
-module.exports = objectParse;
diff --git a/assets/node_modules/postcss-jsx/object-parser.js b/assets/node_modules/postcss-jsx/object-parser.js
deleted file mode 100644
index 9003b42..0000000
--- a/assets/node_modules/postcss-jsx/object-parser.js
+++ /dev/null
@@ -1,327 +0,0 @@
-"use strict";
-const getTemplate = require("./get-template");
-const ObjectLiteral = require("./object");
-const camelCase = require("./camel-case");
-const unCamelCase = require("./un-camel-case");
-const Literal = require("./literal");
-const postcss = require("postcss");
-
-function forEach (arr, callback) {
- arr && arr.forEach(callback);
-}
-
-const replaceProp = (fn) => (value) => (
- value.replace(/(\(\s*)(.*?)(\s*:)/g, (s, prefix, prop, suffix) => (
- prefix + fn(prop) + suffix
- ))
-);
-const camelCaseProp = replaceProp(camelCase);
-const unCamelCaseProp = replaceProp(unCamelCase);
-
-function defineRaws (node, prop, prefix, suffix, props) {
- if (!props) {
- props = {};
- }
- const descriptor = {
- enumerable: true,
- get: () => (
- node[prop]
- ),
- set: (value) => {
- node[prop] = value;
- },
- };
-
- if (!props.raw) {
- props.raw = descriptor;
- } else if (props.raw === "camel") {
- props.raw = {
- enumerable: true,
- get: () => (
- camelCase(node[prop])
- ),
- set: (value) => {
- node[prop] = unCamelCase(value);
- },
- };
- }
-
- props.value = descriptor;
-
- node.raws[prop] = Object.defineProperties({
- prefix,
- suffix,
- }, props);
-}
-
-class objectParser {
- constructor (input) {
- this.input = input;
- }
- parse (node) {
- const root = postcss.root({
- source: {
- input: this.input,
- start: node.loc.start,
- },
- });
- root.raws.node = node;
- const obj = new ObjectLiteral({
- raws: {
- node,
- },
- });
- root.push(obj);
- this.process(node, obj);
- this.sort(root);
- this.raws(root);
-
- const startNode = root.first.raws.node;
- const endNode = root.last.raws.node;
-
- const start = {
- line: startNode.loc.start.line,
- };
-
- let before = root.source.input.css.slice(startNode.start - startNode.loc.start.column, startNode.start);
- if (/^\s+$/.test(before)) {
- start.column = 1;
- } else {
- before = "";
- start.column = startNode.loc.start.column;
- }
-
- root.first.raws.before = before;
- root.source.input.css = before + root.source.input.css.slice(startNode.start, endNode.end);
- root.source.start = start;
-
- this.root = root;
- }
-
- process (node, parent) {
- [
- "leadingComments",
- "innerComments",
- "trailingComments",
- ].forEach(prop => {
- forEach(node[prop], child => {
- this.source(child, this.comment(child, parent));
- });
- });
-
- const child = (this[node.type] || this.literal).apply(this, [node, parent]);
- this.source(node, child);
- return child;
- }
- source (node, parent) {
- parent.source = {
- input: this.input,
- start: node.loc.start,
- end: node.loc.end,
- };
- return parent;
- }
- raws (parent, node) {
- const source = this.input.css;
- parent.nodes.forEach((child, i) => {
- if (i) {
- child.raws.before = source.slice(parent.nodes[i - 1].raws.node.end, child.raws.node.start).replace(/^\s*,+/, "");
- } else if (node) {
- child.raws.before = source.slice(node.start, child.raws.node.start).replace(/^\s*{+/, "");
- }
- });
- if (node) {
- let semicolon;
- let after;
- if (parent.nodes.length) {
- after = source.slice(parent.last.raws.node.end, node.end).replace(/^\s*,+/, () => {
- semicolon = true;
- return "";
- });
- } else {
- after = source.slice(node.start, node.end).replace(/^\s*{/, "");
- }
- parent.raws.after = after.replace(/}+\s*$/, "");
- parent.raws.semicolon = semicolon || false;
- }
- }
-
- sort (node) {
- node.nodes = node.nodes.sort((a, b) => (
- a.raws.node.start - b.raws.node.start
- ));
- }
-
- getNodeValue (node, wrappedValue) {
- const source = this.input.css;
- let rawValue;
- let cookedValue;
- switch (node.type) {
- case "Identifier": {
- const isCssFloat = node.name === "cssFloat";
- return {
- prefix: "",
- suffix: "",
- raw: isCssFloat && node.name,
- value: isCssFloat ? "float" : node.name,
- };
- }
- case "StringLiteral": {
- rawValue = node.extra.raw.slice(1, -1);
- cookedValue = node.value;
- break;
- }
- case "TemplateLiteral": {
- rawValue = getTemplate(node, source);
- break;
- }
- default: {
- rawValue = source.slice(node.start, node.end);
- break;
- }
- }
- const valueWrap = wrappedValue.split(rawValue);
- return {
- prefix: valueWrap[0],
- suffix: valueWrap[1],
- value: cookedValue || rawValue,
- };
- }
-
- ObjectExpression (node, parent) {
- forEach(node.properties, child => {
- this.process(child, parent);
- });
- this.sort(parent);
- this.raws(parent, node);
- return parent;
- }
-
- ObjectProperty (node, parent) {
- const source = this.input.css;
- let between = source.indexOf(":", node.key.end);
- const rawKey = source.slice(node.start, between).trimRight();
- const rawValue = source.slice(between + 1, node.end).trimLeft();
- between = source.slice(node.start + rawKey.length, node.end - rawValue.length);
- const key = this.getNodeValue(node.key, rawKey);
- if (node.value.type === "ObjectExpression") {
- let rule;
- if (/^@(\S+)(\s*)(.*)$/.test(key.value)) {
- const name = RegExp.$1;
- const afterName = RegExp.$2;
- const params = RegExp.$3;
- const atRule = postcss.atRule({
- name: unCamelCase(name),
- raws: {
- afterName: afterName,
- },
- nodes: [],
- });
- defineRaws(atRule, "name", key.prefix + "@", params ? "" : key.suffix, {
- raw: "camel",
- });
- if (params) {
- atRule.params = unCamelCaseProp(params);
- defineRaws(atRule, "params", "", key.suffix, {
- raw: {
- enumerable: true,
- get: () => (
- camelCaseProp(atRule.params)
- ),
- set: (value) => {
- atRule.params = unCamelCaseProp(value);
- },
- },
- });
- }
- rule = atRule;
- } else {
- // rule = this.rule(key, keyWrap, node.value, parent);
- rule = postcss.rule({
- selector: key.value,
- });
- defineRaws(rule, "selector", key.prefix, key.suffix);
- }
- raw(rule);
- this.ObjectExpression(node.value, rule);
- return rule;
- }
-
- const value = this.getNodeValue(node.value, rawValue);
-
- if (key.value[0] === "@") {
- const atRule = postcss.atRule({
- name: unCamelCase(key.value),
- params: value.value,
- });
- defineRaws(atRule, "name", key.prefix, key.suffix, {
- raw: "camel",
- });
-
- defineRaws(atRule, "params", value.prefix, value.suffix);
- raw(atRule);
- return atRule;
- } else {
- let decl;
- if (key.raw) {
- decl = postcss.decl({
- prop: key.value,
- value: value.value,
- raws: {
- prop: key,
- },
- });
- } else {
- decl = postcss.decl({
- prop: unCamelCase(key.value),
- value: value.value,
- });
-
- defineRaws(decl, "prop", key.prefix, key.suffix, {
- raw: "camel",
- });
- }
-
- defineRaws(decl, "value", value.prefix, value.suffix);
- raw(decl);
- return decl;
- }
-
- function raw (postcssNode) {
- postcssNode.raws.between = between;
- postcssNode.raws.node = node;
- parent.push(postcssNode);
- }
- }
-
- literal (node, parent) {
- const literal = new Literal({
- text: this.input.css.slice(node.start, node.end),
- raws: {
- node,
- },
- });
- parent.push(literal);
- return literal;
- }
-
- comment (node, parent) {
- if (!parent.nodes || (node.start < parent.raws.node.start && parent.type !== "root" && parent.parent)) {
- return this.comment(node, parent.parent);
- }
- const text = node.value.match(/^(\s*)((?:\S[\s\S]*?)?)(\s*)$/);
- const comment = postcss.comment({
- text: text[2],
- raws: {
- node,
- left: text[1],
- right: text[3],
- inline: node.type === "CommentLine",
- },
- });
-
- parent.push(comment);
- return comment;
- }
-}
-module.exports = objectParser;
diff --git a/assets/node_modules/postcss-jsx/object-stringifier.js b/assets/node_modules/postcss-jsx/object-stringifier.js
deleted file mode 100644
index 99f7c72..0000000
--- a/assets/node_modules/postcss-jsx/object-stringifier.js
+++ /dev/null
@@ -1,124 +0,0 @@
-"use strict";
-const Stringifier = require("postcss/lib/stringifier");
-const camelCase = require("./camel-case");
-
-class ObjectStringifier extends Stringifier {
- object (node, semicolon) {
- this.builder("{", node, "start");
-
- let after;
- if (node.nodes && node.nodes.length) {
- this.body(node);
- after = this.raw(node, "after");
- } else {
- after = this.raw(node, "after", "emptyBody");
- }
-
- if (after) this.builder(after);
- this.builder("}", node, "end");
- }
- literal (node, semicolon) {
- this.builder(node.text + (semicolon ? "," : ""), node);
- }
- decl (node, semicolon) {
- let prop = this.rawValue(node, "prop");
- if (prop === "float") {
- prop = "cssFloat";
- }
- let string = prop;
-
- const isObjectShorthand = node.raws.node && node.raws.node.shorthand;
- if (!isObjectShorthand) {
- const between = this.raw(node, "between", "colon");
- const value = this.rawValue(node, "value");
- string += between + value;
- }
-
- if (semicolon) string += ",";
- this.builder(string, node);
- }
- rule (node, semicolon) {
- this.block(node, this.rawValue(node, "selector"), semicolon);
- }
- atrule (node, semicolon) {
- const name = this.rawValue(node, "name");
- const params = this.rawValue(node, "params");
- if (node.nodes) {
- let string;
- if (params) {
- const afterName = this.raw(node, "afterName");
- string = name + afterName + params;
- } else {
- string = name;
- }
- this.block(node, string, semicolon);
- } else {
- const between = this.raw(node, "between", "colon");
- let string = name + between + params;
- if (semicolon) string += ",";
- this.builder(string, node);
- }
- }
- block (node, start, semicolon) {
- super.block(node, start);
- if (semicolon) {
- this.builder(",", node);
- }
- }
- comment (node) {
- const left = this.raw(node, "left", "commentLeft");
- const right = this.raw(node, "right", "commentRight");
-
- if (node.raws.inline) {
- const text = node.raws.text || node.text;
- this.builder("//" + left + text + right, node);
- } else {
- this.builder("/*" + left + node.text + right + "*/", node);
- }
- }
- raw (node, own, detect) {
- let value = super.raw(node, own, detect);
- if ((own === "between" || (own === "afterName" && node.type === "atrule" && !node.nodes)) && !/:/.test(value)) {
- value = ":" + value;
- } else if (own === "before" && /^(decl|rule)$/.test(node.type)) {
- value = value.replace(/\S+$/, "");
- }
- return value;
- }
- rawValue (node, prop) {
- const raw = node.raws[prop];
- if (raw) {
- const descriptor = Object.getOwnPropertyDescriptor(raw, "raw");
- if (descriptor && descriptor.get) {
- return raw.prefix + raw.raw + raw.suffix;
- }
- }
-
- let value = super.rawValue(node, prop);
- if (value == null) {
- return value;
- }
- if (/^(prop|selector)$/i.test(prop)) {
- value = camelCase(value);
- if (node.raws.before && /(\S+)$/.test(node.raws.before)) {
- value = RegExp.$1 + value;
- } else if (value && !/\W/.test(value)) {
- return value;
- }
- } else if (node.type === "atrule") {
- if (prop === "name") {
- value = "@" + value;
- } else if (node.nodes) {
- return;
- }
- if (node.nodes) {
- value += this.raw(node, "afterName");
- value += super.rawValue(node, "params");
- }
- }
- value = JSON.stringify(value);
- return value;
- }
-};
-
-module.exports = ObjectStringifier;
diff --git a/assets/node_modules/postcss-jsx/object-stringify.js b/assets/node_modules/postcss-jsx/object-stringify.js
deleted file mode 100644
index a00651e..0000000
--- a/assets/node_modules/postcss-jsx/object-stringify.js
+++ /dev/null
@@ -1,7 +0,0 @@
-"use strict";
-const ObjectStringifier = require("./object-stringifier");
-
-module.exports = function objectStringify (node, builder) {
- const str = new ObjectStringifier(builder);
- str.stringify(node);
-};
diff --git a/assets/node_modules/postcss-jsx/object-syntax.js b/assets/node_modules/postcss-jsx/object-syntax.js
deleted file mode 100644
index b44fcce..0000000
--- a/assets/node_modules/postcss-jsx/object-syntax.js
+++ /dev/null
@@ -1,10 +0,0 @@
-"use strict";
-const stringify = require("./object-stringify");
-const parse = require("./object-parse");
-
-const syntax = {
- parse,
- stringify,
-};
-
-module.exports = syntax;
diff --git a/assets/node_modules/postcss-jsx/object.js b/assets/node_modules/postcss-jsx/object.js
deleted file mode 100644
index 858b488..0000000
--- a/assets/node_modules/postcss-jsx/object.js
+++ /dev/null
@@ -1,23 +0,0 @@
-"use strict";
-const Container = require("postcss/lib/container");
-
-/**
- * Represents a JS Object Literal
- *
- * @extends Container
- *
- * @example
- * const root = postcss.parse('{}');
- * const obj = root.first;
- * obj.type //=> 'object'
- * obj.toString() //=> '{}'
- */
-class ObjectLiteral extends Container {
- constructor (defaults) {
- super(defaults);
- this.type = "object";
- this.nodes = [];
- }
-}
-
-module.exports = ObjectLiteral;
diff --git a/assets/node_modules/postcss-jsx/package.json b/assets/node_modules/postcss-jsx/package.json
deleted file mode 100644
index 71770d1..0000000
--- a/assets/node_modules/postcss-jsx/package.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "name": "postcss-jsx",
- "version": "0.36.4",
- "description": "PostCSS syntax for parsing CSS in JS literals",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/gucong3000/postcss-jsx.git"
- },
- "keywords": [
- "postcss",
- "syntax",
- "emotion",
- "aphrodite",
- "glamor",
- "glamorous",
- "react-native",
- "react-style",
- "reactcss",
- "styled-components",
- "styletron-react",
- "typestyle",
- "css-in-js",
- "css"
- ],
- "author": "gucong3000",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/gucong3000/postcss-jsx/issues"
- },
- "homepage": "https://github.com/gucong3000/postcss-jsx#readme",
- "nyc": {
- "reporter": [
- "lcov",
- "text"
- ],
- "all": true,
- "cache": true,
- "check-coverage": true
- },
- "scripts": {
- "mocha": "mocha --no-timeouts",
- "test": "nyc npm run mocha",
- "debug": "npm run mocha -- --inspect-brk"
- },
- "dependencies": {
- "@babel/core": ">=7.2.2"
- },
- "peerDependencies": {
- "postcss": ">=5.0.0",
- "postcss-syntax": ">=0.36.0"
- },
- "devDependencies": {
- "autoprefixer": "^9.4.4",
- "chai": "^4.2.0",
- "codecov": "^3.1.0",
- "json5": "^2.1.0",
- "mocha": "^5.2.0",
- "nyc": "^13.1.0",
- "postcss": "^7.0.7",
- "postcss-parser-tests": "^6.3.1",
- "postcss-safe-parser": "^4.0.1",
- "postcss-syntax": ">=0.36.0"
- }
-}
diff --git a/assets/node_modules/postcss-jsx/template-parse.js b/assets/node_modules/postcss-jsx/template-parse.js
deleted file mode 100644
index 0a5ea34..0000000
--- a/assets/node_modules/postcss-jsx/template-parse.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-
-const TemplateParser = require("./template-parser");
-const Input = require("postcss/lib/input");
-
-function templateParse (css, opts) {
- const input = new Input(css, opts);
- input.quasis = opts.quasis;
- const parser = new TemplateParser(input);
- parser.parse();
-
- return parser.root;
-}
-module.exports = templateParse;
diff --git a/assets/node_modules/postcss-jsx/template-parser-helper.js b/assets/node_modules/postcss-jsx/template-parser-helper.js
deleted file mode 100644
index a753a54..0000000
--- a/assets/node_modules/postcss-jsx/template-parser-helper.js
+++ /dev/null
@@ -1,52 +0,0 @@
-"use strict";
-const Literal = require("./literal");
-const isLiteral = token => token[0] === "word" && /^\$\{[\s\S]*\}$/.test(token[1]);
-function literal (start) {
- if (!isLiteral(start)) {
- return;
- }
- const tokens = [];
- let hasWord;
- let type;
- let token;
- while ((token = this.tokenizer.nextToken())) {
- tokens.push(token);
- type = token[0];
- if (type.length === 1) {
- break;
- } else if (type === "word") {
- hasWord = true;
- }
- }
-
- while (tokens.length) {
- this.tokenizer.back(tokens.pop());
- }
-
- if (type === "{" || (type === ":" && !hasWord)) {
- return;
- }
-
- const node = new Literal({
- text: start[1],
- });
-
- this.init(node, start[2], start[3]);
-
- return node;
-}
-
-function freeSemicolon (token) {
- this.spaces += token[1];
- const nodes = this.current.nodes;
- const prev = nodes && nodes[nodes.length - 1];
- if (prev && /^(rule|literal)$/.test(prev.type) && !prev.raws.ownSemicolon) {
- prev.raws.ownSemicolon = this.spaces;
- this.spaces = "";
- }
-}
-
-module.exports = {
- freeSemicolon: freeSemicolon,
- literal: literal,
-};
diff --git a/assets/node_modules/postcss-jsx/template-parser.js b/assets/node_modules/postcss-jsx/template-parser.js
deleted file mode 100644
index d665c06..0000000
--- a/assets/node_modules/postcss-jsx/template-parser.js
+++ /dev/null
@@ -1,18 +0,0 @@
-"use strict";
-const Parser = require("postcss/lib/parser");
-const templateTokenize = require("./template-tokenize");
-const helper = require("./template-parser-helper");
-
-class TemplateParser extends Parser {
- createTokenizer () {
- this.tokenizer = templateTokenize(this.input);
- }
- other () {
- const args = arguments;
- return helper.literal.apply(this, args) || super.other.apply(this, args);
- }
- freeSemicolon () {
- return helper.freeSemicolon.apply(this, arguments);
- }
-}
-module.exports = TemplateParser;
diff --git a/assets/node_modules/postcss-jsx/template-safe-parse.js b/assets/node_modules/postcss-jsx/template-safe-parse.js
deleted file mode 100644
index 01f5898..0000000
--- a/assets/node_modules/postcss-jsx/template-safe-parse.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-
-const TemplateSafeParser = require("./template-safe-parser");
-const Input = require("postcss/lib/input");
-
-function templateSafeParse (css, opts) {
- const input = new Input(css, opts);
- input.quasis = opts.quasis;
- const parser = new TemplateSafeParser(input);
- parser.parse();
-
- return parser.root;
-}
-module.exports = templateSafeParse;
diff --git a/assets/node_modules/postcss-jsx/template-safe-parser.js b/assets/node_modules/postcss-jsx/template-safe-parser.js
deleted file mode 100644
index 16e138b..0000000
--- a/assets/node_modules/postcss-jsx/template-safe-parser.js
+++ /dev/null
@@ -1,18 +0,0 @@
-"use strict";
-const SafeParser = require("postcss-safe-parser/lib/safe-parser");
-const templateTokenize = require("./template-tokenize");
-const helper = require("./template-parser-helper");
-
-class TemplateSafeParser extends SafeParser {
- createTokenizer () {
- this.tokenizer = templateTokenize(this.input, { ignoreErrors: true });
- }
- other () {
- const args = arguments;
- return helper.literal.apply(this, args) || super.other.apply(this, args);
- }
- freeSemicolon () {
- return helper.freeSemicolon.apply(this, arguments);
- }
-}
-module.exports = TemplateSafeParser;
diff --git a/assets/node_modules/postcss-jsx/template-stringifier.js b/assets/node_modules/postcss-jsx/template-stringifier.js
deleted file mode 100644
index 8a860c1..0000000
--- a/assets/node_modules/postcss-jsx/template-stringifier.js
+++ /dev/null
@@ -1,13 +0,0 @@
-"use strict";
-const Stringifier = require("postcss/lib/stringifier");
-
-class TemplateStringifier extends Stringifier {
- literal (node) {
- this.builder(node.text, node);
- if (node.raws.ownSemicolon) {
- this.builder(node.raws.ownSemicolon, node, "end");
- }
- }
-};
-
-module.exports = TemplateStringifier;
diff --git a/assets/node_modules/postcss-jsx/template-stringify.js b/assets/node_modules/postcss-jsx/template-stringify.js
deleted file mode 100644
index ed7bb04..0000000
--- a/assets/node_modules/postcss-jsx/template-stringify.js
+++ /dev/null
@@ -1,7 +0,0 @@
-"use strict";
-const TemplateStringifier = require("./template-stringifier");
-
-module.exports = function TemplateStringify (node, builder) {
- const str = new TemplateStringifier(builder);
- str.stringify(node);
-};
diff --git a/assets/node_modules/postcss-jsx/template-tokenize.js b/assets/node_modules/postcss-jsx/template-tokenize.js
deleted file mode 100644
index 5fa5b7b..0000000
--- a/assets/node_modules/postcss-jsx/template-tokenize.js
+++ /dev/null
@@ -1,57 +0,0 @@
-"use strict";
-const tokenize = require("postcss/lib/tokenize");
-
-function templateTokenize (input) {
- let pos = input.quasis[0].start;
- const quasis = input.quasis.filter(quasi => quasi.start !== quasi.end);
- const tokenizer = tokenize.apply(this, arguments);
-
- function tokenInExpressions (token, returned) {
- const start = pos;
- pos += token[1].length;
- if (!quasis.some(quasi => start >= quasi.start && pos <= quasi.end) || (returned.length && token[0] === returned[0][0])) {
- return true;
- } else if (returned.length) {
- back(token);
- }
- }
-
- function back (token) {
- pos -= token[1].length;
- return tokenizer.back.apply(tokenizer, arguments);
- }
-
- function nextToken () {
- const args = arguments;
- const returned = [];
- let token;
- let line;
- let column;
-
- while (
- (token = tokenizer.nextToken.apply(tokenizer, args)) &&
- tokenInExpressions(token, returned)
- ) {
- line = token[4] || token[2] || line;
- column = token[5] || token[3] || column;
- returned.push(token);
- }
- if (returned.length) {
- token = [
- returned[0][0],
- returned.map(token => token[1]).join(""),
- returned[0][2],
- returned[0][3],
- line,
- column,
- ];
- }
- return token;
- }
- return Object.assign({}, tokenizer, {
- back,
- nextToken,
- });
-}
-
-module.exports = templateTokenize;
diff --git a/assets/node_modules/postcss-jsx/un-camel-case.js b/assets/node_modules/postcss-jsx/un-camel-case.js
deleted file mode 100644
index e236031..0000000
--- a/assets/node_modules/postcss-jsx/un-camel-case.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-function unCamelCase (str) {
- return str.replace(/[\w-]+/g, (s) => (
- /^[A-Z]?[a-z]*(?:[A-Z][a-z]*)+$/.test(s)
- ? s.replace(
- /[A-Z]/g,
- s => "-" + s.toLowerCase()
- ).replace(
- /^(o|ms|moz|khtml|epub|(\w+-?)*webkit)(?=-)/i,
- "-$1"
- )
- : s
- ));
-}
-
-module.exports = unCamelCase;
diff --git a/assets/node_modules/postcss-less/LICENSE b/assets/node_modules/postcss-less/LICENSE
deleted file mode 100644
index f9f9260..0000000
--- a/assets/node_modules/postcss-less/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013 Andrey Sitnik <andrey@sitnik.ru>
-Copyright (c) 2016 Denys Kniazevych <webschik@gmail.com>
-Copyright (c) 2016 Pat Sissons <patricksissons@gmail.com>
-Copyright (c) 2017 Andrew Powell <andrew@shellscape.org>
-
-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/assets/node_modules/postcss-less/README.md b/assets/node_modules/postcss-less/README.md
deleted file mode 100644
index ee81441..0000000
--- a/assets/node_modules/postcss-less/README.md
+++ /dev/null
@@ -1,150 +0,0 @@
-[tests]: https://img.shields.io/circleci/project/github/shellscape/postcss-less.svg
-[tests-url]: https://circleci.com/gh/shellscape/postcss-less
-
-[cover]: https://codecov.io/gh/shellscape/postcss-less/branch/master/graph/badge.svg
-[cover-url]: https://codecov.io/gh/shellscape/postcss-less
-
-[size]: https://packagephobia.now.sh/badge?p=postcss-less
-[size-url]: https://packagephobia.now.sh/result?p=postcss-less
-
-[PostCSS]: https://github.com/postcss/postcss
-[PostCSS-SCSS]: https://github.com/postcss/postcss-scss
-[LESS]: http://lesless.org
-[Autoprefixer]: https://github.com/postcss/autoprefixer
-[Stylelint]: http://stylelint.io/
-
-# postcss-less
-
-[![tests][tests]][tests-url]
-[![cover][cover]][cover-url]
-[![size][size]][size-url]
-
-A [PostCSS] Syntax for parsing [LESS]
-
-_Note: This module requires Node v6.14.4+. `poscss-less` is not a LESS compiler. For compiling LESS, please use the official toolset for LESS._
-
-## Install
-
-Using npm:
-
-```console
-npm install postcss-less --save-dev
-```
-
-<a href="https://www.patreon.com/shellscape">
- <img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" width="160">
-</a>
-
-Please consider [becoming a patron](https://www.patreon.com/shellscape) if you find this module useful.
-
-## Usage
-
-The most common use of `postcss-less` is for applying PostCSS transformations directly to LESS source. eg. ia theme written in LESS which uses [Autoprefixer] to add appropriate vendor prefixes.
-
-```js
-const syntax = require('postcss-less');
-postcss(plugins)
- .process(lessText, { syntax: syntax })
- .then(function (result) {
- result.content // LESS with transformations
-});
-```
-
-## LESS Specific Parsing
-
-### `@import`
-
-Parsing of LESS-specific `@import` statements and options are supported.
-
-```less
-@import (option) 'file.less';
-```
-
-The AST will contain an `AtRule` node with:
-
-- an `import: true` property
-- a `filename: <String>` property containing the imported filename
-- an `options: <String>` property containing any [import options](http://lesscss.org/features/#import-atrules-feature-import-options) specified
-
-### Inline Comments
-
-Parsing of single-line comments in CSS is supported.
-
-```less
-:root {
- // Main theme color
- --color: red;
-}
-```
-
-The AST will contain a `Comment` node with an `inline: true` property.
-
-### Mixins
-
-Parsing of LESS mixins is supported.
-
-```less
-.my-mixin {
- color: black;
-}
-```
-
-The AST will contain an `AtRule` node with a `mixin: true` property.
-
-#### `!important`
-
-Mixins that declare `!important` will contain an `important: true` property on their respective node.
-
-### Variables
-
-Parsing of LESS variables is supported.
-
-```less
-@link-color: #428bca;
-```
-
-The AST will contain an `AtRule` node with a `variable: true` property.
-
-_Note: LESS variables are strictly parsed - a colon (`:`) must immediately follow a variable name._
-
-## Stringifying
-
-To process LESS code without PostCSS transformations, custom stringifier
-should be provided.
-
-```js
-const postcss = require('postcss');
-const syntax = require('postcss-less');
-
-const less = `
- // inline comment
-
- .container {
- .mixin-1();
- .mixin-2;
- .mixin-3 (@width: 100px) {
- width: @width;
- }
- }
-
- .rotation(@deg:5deg){
- .transform(rotate(@deg));
- }
-`;
-
-const result = await postcss().process(less, { syntax });
-
- // will contain the value of `less`
-const { content } = result;
-```
-
-## Use Cases
-
-- Lint LESS code with 3rd-party plugins.
-- Apply PostCSS transformations (such as [Autoprefixer](https://github.com/postcss/autoprefixer)) directly to the LESS source code
-
-## Meta
-
-[CONTRIBUTING](./.github/CONTRIBUTING)
-
-[LICENSE (MIT)](./LICENSE)
diff --git a/assets/node_modules/postcss-less/lib/LessParser.js b/assets/node_modules/postcss-less/lib/LessParser.js
deleted file mode 100644
index 60af9c0..0000000
--- a/assets/node_modules/postcss-less/lib/LessParser.js
+++ /dev/null
@@ -1,211 +0,0 @@
-/* eslint no-param-reassign: off */
-
-const Comment = require('postcss/lib/comment');
-const Parser = require('postcss/lib/parser');
-
-const { isInlineComment } = require('./nodes/inline-comment');
-const { interpolation } = require('./nodes/interpolation');
-const { isMixinToken } = require('./nodes/mixin');
-const importNode = require('./nodes/import');
-const variableNode = require('./nodes/variable');
-
-const importantPattern = /(!\s*important)$/i;
-
-module.exports = class LessParser extends Parser {
- constructor(...args) {
- super(...args);
-
- this.lastNode = null;
- }
-
- atrule(token) {
- if (interpolation.bind(this)(token)) {
- return;
- }
-
- super.atrule(token);
- importNode(this.lastNode);
- variableNode(this.lastNode);
- }
-
- decl(...args) {
- super.decl(...args);
-
- // #123: add `extend` decorator to nodes
- const extendPattern = /extend\(.+\)/i;
-
- if (extendPattern.test(this.lastNode.value)) {
- this.lastNode.extend = true;
- }
- }
-
- each(tokens) {
- // prepend a space so the `name` will be parsed correctly
- tokens[0][1] = ` ${tokens[0][1]}`;
-
- const firstParenIndex = tokens.findIndex((t) => t[0] === '(');
- const lastParen = tokens.reverse().find((t) => t[0] === ')');
- const lastParenIndex = tokens.reverse().indexOf(lastParen);
- const paramTokens = tokens.splice(firstParenIndex, lastParenIndex);
- const params = paramTokens.map((t) => t[1]).join('');
-
- for (const token of tokens.reverse()) {
- this.tokenizer.back(token);
- }
-
- this.atrule(this.tokenizer.nextToken());
- this.lastNode.function = true;
- this.lastNode.params = params;
- }
-
- init(node, line, column) {
- super.init(node, line, column);
- this.lastNode = node;
- }
-
- inlineComment(token) {
- const node = new Comment();
- const text = token[1].slice(2);
-
- this.init(node, token[2], token[3]);
-
- node.source.end = { line: token[4], column: token[5] };
- node.inline = true;
- node.raws.begin = '//';
-
- if (/^\s*$/.test(text)) {
- node.text = '';
- node.raws.left = text;
- node.raws.right = '';
- } else {
- const match = text.match(/^(\s*)([^]*[^\s])(\s*)$/);
- [, node.raws.left, node.text, node.raws.right] = match;
- }
- }
-
- mixin(tokens) {
- const [first] = tokens;
- const identifier = first[1].slice(0, 1);
- const bracketsIndex = tokens.findIndex((t) => t[0] === 'brackets');
- const firstParenIndex = tokens.findIndex((t) => t[0] === '(');
- let important = '';
-
- // fix for #86. if rulesets are mixin params, they need to be converted to a brackets token
- if ((bracketsIndex < 0 || bracketsIndex > 3) && firstParenIndex > 0) {
- const lastParenIndex = tokens.reduce((last, t, i) => (t[0] === ')' ? i : last));
-
- const contents = tokens.slice(firstParenIndex, lastParenIndex + firstParenIndex);
- const brackets = contents.map((t) => t[1]).join('');
- const [paren] = tokens.slice(firstParenIndex);
- const start = [paren[2], paren[3]];
- const [last] = tokens.slice(lastParenIndex, lastParenIndex + 1);
- const end = [last[2], last[3]];
- const newToken = ['brackets', brackets].concat(start, end);
-
- const tokensBefore = tokens.slice(0, firstParenIndex);
- const tokensAfter = tokens.slice(lastParenIndex + 1);
- tokens = tokensBefore;
- tokens.push(newToken);
- tokens = tokens.concat(tokensAfter);
- }
-
- const importantTokens = [];
-
- for (const token of tokens) {
- if (token[1] === '!' || importantTokens.length) {
- importantTokens.push(token);
- }
-
- if (token[1] === 'important') {
- break;
- }
- }
-
- if (importantTokens.length) {
- const [bangToken] = importantTokens;
- const bangIndex = tokens.indexOf(bangToken);
- const last = importantTokens[importantTokens.length - 1];
- const start = [bangToken[2], bangToken[3]];
- const end = [last[4], last[5]];
- const combined = importantTokens.map((t) => t[1]).join('');
- const newToken = ['word', combined].concat(start, end);
- tokens.splice(bangIndex, importantTokens.length, newToken);
- }
-
- const importantIndex = tokens.findIndex((t) => importantPattern.test(t[1]));
-
- if (importantIndex > 0) {
- [, important] = tokens[importantIndex];
- tokens.splice(importantIndex, 1);
- }
-
- for (const token of tokens.reverse()) {
- this.tokenizer.back(token);
- }
-
- this.atrule(this.tokenizer.nextToken());
- this.lastNode.mixin = true;
- this.lastNode.raws.identifier = identifier;
-
- if (important) {
- this.lastNode.important = true;
- this.lastNode.raws.important = important;
- }
- }
-
- other(token) {
- if (!isInlineComment.bind(this)(token)) {
- super.other(token);
- }
- }
-
- rule(tokens) {
- const last = tokens[tokens.length - 1];
- const prev = tokens[tokens.length - 2];
-
- if (prev[0] === 'at-word' && last[0] === '{') {
- this.tokenizer.back(last);
- if (interpolation.bind(this)(prev)) {
- const newToken = this.tokenizer.nextToken();
-
- tokens = tokens.slice(0, tokens.length - 2).concat([newToken]);
-
- for (const tokn of tokens.reverse()) {
- this.tokenizer.back(tokn);
- }
-
- return;
- }
- }
-
- super.rule(tokens);
-
- // #123: add `extend` decorator to nodes
- const extendPattern = /:extend\(.+\)/i;
-
- if (extendPattern.test(this.lastNode.selector)) {
- this.lastNode.extend = true;
- }
- }
-
- unknownWord(tokens) {
- // NOTE: keep commented for examining unknown structures
- // console.log('unknown', tokens);
-
- const [first] = tokens;
-
- // #121 support `each` - http://lesscss.org/functions/#list-functions-each
- if (tokens[0][1] === 'each' && tokens[1][0] === '(') {
- this.each(tokens);
- return;
- }
-
- // TODO: move this into a util function/file
- if (isMixinToken(first)) {
- this.mixin(tokens);
- return;
- }
-
- super.unknownWord(tokens);
- }
-};
diff --git a/assets/node_modules/postcss-less/lib/LessStringifier.js b/assets/node_modules/postcss-less/lib/LessStringifier.js
deleted file mode 100644
index a101559..0000000
--- a/assets/node_modules/postcss-less/lib/LessStringifier.js
+++ /dev/null
@@ -1,42 +0,0 @@
-const Stringifier = require('postcss/lib/stringifier');
-
-module.exports = class LessStringifier extends Stringifier {
- atrule(node, semicolon) {
- if (!node.mixin && !node.variable && !node.function) {
- super.atrule(node, semicolon);
- return;
- }
-
- const identifier = node.function ? '' : node.raws.identifier || '@';
- let name = `${identifier}${node.name}`;
- let params = node.params ? this.rawValue(node, 'params') : '';
- const important = node.raws.important || '';
-
- if (node.variable) {
- params = node.value;
- }
-
- if (typeof node.raws.afterName !== 'undefined') {
- name += node.raws.afterName;
- } else if (params) {
- name += ' ';
- }
-
- if (node.nodes) {
- this.block(node, name + params + important);
- } else {
- const end = (node.raws.between || '') + important + (semicolon ? ';' : '');
- this.builder(name + params + end, node);
- }
- }
-
- comment(node) {
- if (node.inline) {
- const left = this.raw(node, 'left', 'commentLeft');
- const right = this.raw(node, 'right', 'commentRight');
- this.builder(`//${left}${node.text}${right}`, node);
- } else {
- super.comment(node);
- }
- }
-};
diff --git a/assets/node_modules/postcss-less/lib/index.js b/assets/node_modules/postcss-less/lib/index.js
deleted file mode 100644
index 56694da..0000000
--- a/assets/node_modules/postcss-less/lib/index.js
+++ /dev/null
@@ -1,30 +0,0 @@
-const Input = require('postcss/lib/input');
-
-const LessParser = require('./LessParser');
-const LessStringifier = require('./LessStringifier');
-
-module.exports = {
- parse(less, options) {
- const input = new Input(less, options);
- const parser = new LessParser(input);
-
- parser.parse();
-
- return parser.root;
- },
-
- stringify(node, builder) {
- const stringifier = new LessStringifier(builder);
- stringifier.stringify(node);
- },
-
- nodeToString(node) {
- let result = '';
-
- module.exports.stringify(node, (bit) => {
- result += bit;
- });
-
- return result;
- }
-};
diff --git a/assets/node_modules/postcss-less/lib/nodes/import.js b/assets/node_modules/postcss-less/lib/nodes/import.js
deleted file mode 100644
index 4b41bdf..0000000
--- a/assets/node_modules/postcss-less/lib/nodes/import.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/* eslint no-param-reassign: off */
-
-const tokenize = require('postcss/lib/tokenize');
-
-const urlPattern = /^url\((.+)\)/;
-
-module.exports = (node) => {
- const { name, params = '' } = node;
-
- if (name === 'import' && params.length) {
- node.import = true;
-
- const tokenizer = tokenize({ css: params });
-
- node.filename = params.replace(urlPattern, '$1');
-
- while (!tokenizer.endOfFile()) {
- const [type, content] = tokenizer.nextToken();
-
- if (type === 'word' && content === 'url') {
- return;
- } else if (type === 'brackets') {
- node.options = content;
- node.filename = params.replace(content, '').trim();
- break;
- }
- }
- }
-};
diff --git a/assets/node_modules/postcss-less/lib/nodes/inline-comment.js b/assets/node_modules/postcss-less/lib/nodes/inline-comment.js
deleted file mode 100644
index 92fee51..0000000
--- a/assets/node_modules/postcss-less/lib/nodes/inline-comment.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/* eslint-disable no-param-reassign */
-
-const tokenizer = require('postcss/lib/tokenize');
-const Input = require('postcss/lib/input');
-
-module.exports = {
- isInlineComment(token) {
- if (token[0] === 'word' && token[1].slice(0, 2) === '//') {
- const first = token;
- const bits = [];
- let last;
-
- while (token) {
- if (/\r?\n/.test(token[1])) {
- // If there are quotes, fix tokenizer creating one token from start quote to end quote
- if (/['"].*\r?\n/.test(token[1])) {
- // Add string before newline to inline comment token
- bits.push(token[1].substring(0, token[1].indexOf('\n')));
-
- // Get remaining input and retokenize
- let remainingInput = token[1].substring(token[1].indexOf('\n'));
- remainingInput += this.input.css.valueOf().substring(this.tokenizer.position());
-
- // Replace tokenizer to retokenize the rest of the string
- this.input = new Input(remainingInput);
- this.tokenizer = tokenizer(this.input);
- } else {
- // If the tokenizer went to the next line go back
- this.tokenizer.back(token);
- }
- break;
- }
-
- bits.push(token[1]);
- last = token;
- token = this.tokenizer.nextToken({ ignoreUnclosed: true });
- }
-
- const newToken = ['comment', bits.join(''), first[2], first[3], last[2], last[3]];
-
- this.inlineComment(newToken);
- return true;
- } else if (token[1] === '/') {
- // issue #135
- const next = this.tokenizer.nextToken({ ignoreUnclosed: true });
-
- if (next[0] === 'comment' && /^\/\*/.test(next[1])) {
- next[0] = 'word';
- next[1] = next[1].slice(1);
- token[1] = '//';
- this.tokenizer.back(next);
- return module.exports.isInlineComment.bind(this)(token);
- }
- }
-
- return false;
- }
-};
diff --git a/assets/node_modules/postcss-less/lib/nodes/interpolation.js b/assets/node_modules/postcss-less/lib/nodes/interpolation.js
deleted file mode 100644
index b3fd4ad..0000000
--- a/assets/node_modules/postcss-less/lib/nodes/interpolation.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/* eslint no-param-reassign: off */
-
-module.exports = {
- interpolation(token) {
- let first = token;
- const tokens = [token];
- const validTypes = ['word', '{', '}'];
-
- token = this.tokenizer.nextToken();
-
- // look for @{ but not @[word]{
- if (first[1].length > 1 || token[0] !== '{') {
- this.tokenizer.back(token);
- return false;
- }
-
- while (token && validTypes.includes(token[0])) {
- tokens.push(token);
- token = this.tokenizer.nextToken();
- }
-
- const words = tokens.map((tokn) => tokn[1]);
- [first] = tokens;
- const last = tokens.pop();
- const start = [first[2], first[3]];
- const end = [last[4] || last[2], last[5] || last[3]];
- const newToken = ['word', words.join('')].concat(start, end);
-
- this.tokenizer.back(token);
- this.tokenizer.back(newToken);
-
- return true;
- }
-};
diff --git a/assets/node_modules/postcss-less/lib/nodes/mixin.js b/assets/node_modules/postcss-less/lib/nodes/mixin.js
deleted file mode 100644
index ba3cb5f..0000000
--- a/assets/node_modules/postcss-less/lib/nodes/mixin.js
+++ /dev/null
@@ -1,17 +0,0 @@
-const hashColorPattern = /^#[0-9a-fA-F]{6}$|^#[0-9a-fA-F]{3}$/;
-const unpaddedFractionalNumbersPattern = /\.[0-9]/;
-
-const isMixinToken = (token) => {
- const [, symbol] = token;
- const [char] = symbol;
-
- return (
- (char === '.' || char === '#') &&
- // ignore hashes used for colors
- hashColorPattern.test(symbol) === false &&
- // ignore dots used for unpadded fractional numbers
- unpaddedFractionalNumbersPattern.test(symbol) === false
- );
-};
-
-module.exports = { isMixinToken };
diff --git a/assets/node_modules/postcss-less/lib/nodes/variable.js b/assets/node_modules/postcss-less/lib/nodes/variable.js
deleted file mode 100644
index 0fa7d20..0000000
--- a/assets/node_modules/postcss-less/lib/nodes/variable.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/* eslint no-param-reassign: off */
-
-const afterPattern = /:$/;
-const beforePattern = /^:(\s+)?/;
-// const bracketsPattern = /\{/;
-
-module.exports = (node) => {
- const { name, params = '' } = node;
-
- // situations like @page :last { color: red } should default to the built-in AtRule
- // LESS variables are @name : value; < note that for them to be valid LESS vars, they must end in
- // a semicolon.
-
- if (node.name.slice(-1) !== ':') {
- return;
- }
-
- if (afterPattern.test(name)) {
- const [match] = name.match(afterPattern);
-
- node.name = name.replace(match, '');
- node.raws.afterName = match + (node.raws.afterName || '');
- node.variable = true;
- node.value = node.params;
- }
-
- if (beforePattern.test(params)) {
- const [match] = params.match(beforePattern);
-
- node.value = params.replace(match, '');
- node.raws.afterName = (node.raws.afterName || '') + match;
- node.variable = true;
- }
-};
diff --git a/assets/node_modules/postcss-less/package.json b/assets/node_modules/postcss-less/package.json
deleted file mode 100644
index c2d66a6..0000000
--- a/assets/node_modules/postcss-less/package.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "name": "postcss-less",
- "version": "3.1.4",
- "description": "LESS parser for PostCSS",
- "license": "MIT",
- "repository": "shellscape/postcss-less",
- "author": "Denys Kniazevych <webschik@gmail.com>",
- "maintainer": "Andrew Powell <andrew@shellscape.org>",
- "homepage": "https://github.com/shellscape/postcss-less",
- "bugs": "https://github.com/shellscape/postcss-less/issues",
- "main": "lib/index.js",
- "engines": {
- "node": ">=6.14.4"
- },
- "scripts": {
- "ci:coverage": "nyc npm run test && nyc report --reporter=text-lcov > coverage.lcov",
- "ci:lint": "npm run lint && npm run security",
- "ci:test": "npm run test",
- "commitlint": "commitlint",
- "commitmsg": "commitlint -e $GIT_PARAMS",
- "lint": "eslint --fix --cache lib test",
- "lint-staged": "lint-staged",
- "security": "npm audit",
- "test": "ava"
- },
- "files": [
- "lib",
- "README.md",
- "LICENSE"
- ],
- "dependencies": {
- "postcss": "^7.0.14"
- },
- "devDependencies": {
- "@commitlint/cli": "^7.1.2",
- "@commitlint/config-conventional": "^7.1.2",
- "ava": "^1.0.0-beta.8",
- "cheerio": "^1.0.0-rc.2",
- "eslint": "^5.6.0",
- "eslint-config-shellscape": "^2.0.2",
- "eslint-plugin-filenames": "^1.2.0",
- "is-absolute-url": "^2.1.0",
- "less": "^3.8.1",
- "lint-staged": "^8.1.0",
- "node-fetch": "^2.2.0",
- "nyc": "^13.3.0",
- "postcss-parser-tests": "^6.3.1",
- "pre-commit": "^1.2.2",
- "standard-version": "^4.4.0",
- "url-join": "^4.0.0"
- },
- "keywords": [
- "css",
- "postcss",
- "postcss-syntax",
- "parser",
- "less"
- ],
- "pre-commit": "lint-staged",
- "lint-staged": {
- "*.js": [
- "eslint --fix",
- "git add"
- ]
- }
-}
diff --git a/assets/node_modules/postcss-markdown/LICENSE b/assets/node_modules/postcss-markdown/LICENSE
deleted file mode 100644
index d9c0f45..0000000
--- a/assets/node_modules/postcss-markdown/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2018 刘祺
-
-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/assets/node_modules/postcss-markdown/README.md b/assets/node_modules/postcss-markdown/README.md
deleted file mode 100644
index 5c138b2..0000000
--- a/assets/node_modules/postcss-markdown/README.md
+++ /dev/null
@@ -1,93 +0,0 @@
-PostCSS Markdown Syntax
-====
-
-[![NPM version](https://img.shields.io/npm/v/postcss-markdown.svg?style=flat-square)](https://www.npmjs.com/package/postcss-markdown)
-[![Travis](https://img.shields.io/travis/gucong3000/postcss-markdown.svg)](https://travis-ci.org/gucong3000/postcss-markdown)
-[![Travis](https://img.shields.io/travis/gucong3000/postcss-syntaxes.svg?label=integration)](https://travis-ci.org/gucong3000/postcss-syntaxes)
-[![Codecov](https://img.shields.io/codecov/c/github/gucong3000/postcss-markdown.svg)](https://codecov.io/gh/gucong3000/postcss-markdown)
-[![David](https://img.shields.io/david/gucong3000/postcss-markdown.svg)](https://david-dm.org/gucong3000/postcss-markdown)
-
-<img align="right" width="95" height="95"
- title="Philosopher’s stone, logo of PostCSS"
- src="http://postcss.github.io/postcss/logo.svg">
-
-[PostCSS](https://github.com/postcss/postcss) Syntax for parsing [Markdown](https://daringfireball.net/projects/markdown/syntax)
-
-## Getting Started
-
-First thing's first, install the module:
-
-```
-npm install postcss-syntax postcss-markdown --save-dev
-```
-
-If you want support SCSS/SASS/LESS/SugarSS syntax, you need to install the corresponding module.
-
-- SCSS: [postcss-scss](https://github.com/postcss/postcss-scss)
-- SASS: [postcss-sass](https://github.com/aleshaoleg/postcss-sass)
-- LESS: [postcss-less](https://github.com/shellscape/postcss-less)
-- SugarSS: [sugarss](https://github.com/postcss/sugarss)
-
-## Use Cases
-
-```js
-var syntax = require('postcss-syntax')({
- // Enable support for HTML (default: true) See: https://github.com/gucong3000/postcss-html
- htmlInMd: true,
- // syntax for parse scss (non-required options)
- scss: require('postcss-scss'),
- // syntax for parse less (non-required options)
- less: require('postcss-less'),
- // syntax for parse css blocks (non-required options)
- css: require('postcss-safe-parser'),
-});
-var autoprefixer = require('autoprefixer');
-postcss([ autoprefixer ]).process(source, { syntax: syntax }).then(function (result) {
- // An alias for the result.css property. Use it with syntaxes that generate non-CSS output.
- result.content
-});
-```
-input:
-<pre><code># title
-
-```css
-::placeholder {
- color: gray;
-}
-```
-</code></pre>
-
-
-output:
-<pre><code># title
-
-```css
-::-webkit-input-placeholder {
- color: gray;
-}
-:-ms-input-placeholder {
- color: gray;
-}
-::-ms-input-placeholder {
- color: gray;
-}
-::placeholder {
- color: gray;
-}
-```
-</code></pre>
-
-If you want support SCSS/SASS/LESS/SugarSS syntax, you need to install these module:
-
-- SCSS: [postcss-scss](https://github.com/postcss/postcss-scss)
-- SASS: [postcss-sass](https://github.com/aleshaoleg/postcss-sass)
-- LESS: [postcss-less](https://github.com/shellscape/postcss-less)
-- SugarSS: [sugarss](https://github.com/postcss/sugarss)
-
-## Advanced Use Cases
-
-See: [postcss-syntax](https://github.com/gucong3000/postcss-syntax)
-
-## Style Transformations
-
-The main use case of this plugin is apply PostCSS transformations to CSS (and CSS-like) code blocks in markdown file.
diff --git a/assets/node_modules/postcss-markdown/extract.js b/assets/node_modules/postcss-markdown/extract.js
deleted file mode 100644
index dff28d4..0000000
--- a/assets/node_modules/postcss-markdown/extract.js
+++ /dev/null
@@ -1,42 +0,0 @@
-"use strict";
-
-const remark = require("remark");
-const findAllAfter = require("unist-util-find-all-after");
-
-function mdParser (source, opts, result) {
- const htmlInMd = opts.syntax.config.htmlInMd;
- if (!result && (htmlInMd == null || htmlInMd)) {
- result = require("postcss-html/extract")(source, opts, []);
- }
- const ast = remark().parse(source);
- const blocks = findAllAfter(ast, 0, (node) => (
- node.type === "code"
- )).map((block) => {
- if (result && (!block.lang || !/^(?:[sx]?html?|[sx]ht)$/i.test(block.lang))) {
- result = result.filter(styleHtm => {
- return styleHtm.startIndex >= block.position.end.offset ||
- styleHtm.startIndex + styleHtm.content.length <= block.position.start.offset;
- });
- }
- if (block.lang && /^(?:(?:\w*c)|le|wx|sa?|sugar)ss$/i.test(block.lang)) {
- let startIndex = source.indexOf(block.lang, block.position.start.offset) + block.lang.length;
- if (block.value) {
- startIndex = source.indexOf(block.value, startIndex);
- } else {
- startIndex = source.indexOf("\n", startIndex) + 1;
- }
- return {
- startIndex: startIndex,
- lang: block.lang.toLowerCase(),
- isMarkdown: true,
- content: source.slice(startIndex, block.position.end.offset).replace(/[ \t]*`*$/, ""),
- };
- }
- }).filter(Boolean);
- if (result) {
- return result.concat(blocks);
- } else {
- return blocks;
- }
-};
-module.exports = mdParser;
diff --git a/assets/node_modules/postcss-markdown/index.js b/assets/node_modules/postcss-markdown/index.js
deleted file mode 100644
index 1dcc7bb..0000000
--- a/assets/node_modules/postcss-markdown/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-"use strict";
-const extract = require("./extract");
-const syntax = require("postcss-syntax/syntax")(extract, "markdown");
-
-module.exports = syntax;
diff --git a/assets/node_modules/postcss-markdown/package.json b/assets/node_modules/postcss-markdown/package.json
deleted file mode 100644
index b51dd5b..0000000
--- a/assets/node_modules/postcss-markdown/package.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "name": "postcss-markdown",
- "version": "0.36.0",
- "description": "PostCSS syntax for parsing Markdown",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/gucong3000/postcss-markdown.git"
- },
- "keywords": [
- "postcss",
- "syntax",
- "markdown",
- "html",
- "css",
- "less",
- "sass",
- "scss",
- "sss",
- "sugarss"
- ],
- "author": "gucong",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/gucong3000/postcss-markdown/issues"
- },
- "homepage": "https://github.com/gucong3000/postcss-markdown#readme",
- "nyc": {
- "reporter": [
- "lcov",
- "text"
- ],
- "all": true,
- "cache": true,
- "check-coverage": true
- },
- "scripts": {
- "mocha": "mocha --no-timeouts",
- "test": "nyc npm run mocha",
- "debug": "npm run mocha -- --inspect-brk"
- },
- "dependencies": {
- "remark": "^10.0.1",
- "unist-util-find-all-after": "^1.0.2"
- },
- "peerDependencies": {
- "postcss": ">=5.0.0",
- "postcss-syntax": ">=0.36.0"
- },
- "devDependencies": {
- "chai": "^4.2.0",
- "codecov": "^3.1.0",
- "mocha": "^5.2.0",
- "nyc": "^13.1.0",
- "postcss": "^7.0.7",
- "postcss-html": ">=0.36.0",
- "postcss-less": "^3.1.0",
- "postcss-scss": "^2.0.0",
- "postcss-syntax": ">=0.36.0",
- "sugarss": "^2.0.0"
- }
-}
diff --git a/assets/node_modules/postcss-media-query-parser/CHANGELOG.md b/assets/node_modules/postcss-media-query-parser/CHANGELOG.md
deleted file mode 100644
index 582ea07..0000000
--- a/assets/node_modules/postcss-media-query-parser/CHANGELOG.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# 0.2.3
-
-* Removed: `/src` directory from the NPM package.
-
-# 0.2.2
-
-* Fixed: walk would throw if `filter` argument is not passed.
-
-# 0.2.1
-
-* Fixed: the module failing with TypeError in Node.js 0.12.
-
-# 0.2.0
-
-* Added: `parent` property to all nodes that are inside a container.
-* Added: `colon` type of a node.
-
-# 0.1.0
-
-Initial release
diff --git a/assets/node_modules/postcss-media-query-parser/README.md b/assets/node_modules/postcss-media-query-parser/README.md
deleted file mode 100644
index 078b319..0000000
--- a/assets/node_modules/postcss-media-query-parser/README.md
+++ /dev/null
@@ -1,173 +0,0 @@
-# postcss-media-query-parser
-
-[![NPM version](http://img.shields.io/npm/v/postcss-media-query-parser.svg)](https://www.npmjs.com/package/postcss-media-query-parser) [![Build Status](https://travis-ci.org/dryoma/postcss-media-query-parser.svg?branch=master)](https://travis-ci.org/dryoma/postcss-media-query-parser)
-
-Media query parser with very simple traversing functionality.
-
-## Installation and usage
-
-First install it via NPM:
-
-```
-npm install postcss-media-query-parser
-```
-
-Then in your Node.js application:
-
-```js
-import mediaParser from "postcss-media-query-parser";
-
-const mediaQueryString = "(max-width: 100px), not print";
-const result = mediaParser(mediaQueryString);
-```
-
-The `result` will be this object:
-
-```js
-{
- type: 'media-query-list',
- value: '(max-width: 100px), not print',
- after: '',
- before: '',
- sourceIndex: 0,
-
- // the first media query
- nodes: [{
- type: 'media-query',
- value: '(max-width: 100px)',
- before: '',
- after: '',
- sourceIndex: 0,
- parent: <link to parent 'media-query-list' node>,
- nodes: [{
- type: 'media-feature-expression',
- value: '(max-width: 100px)',
- before: '',
- after: '',
- sourceIndex: 0,
- parent: <link to parent 'media-query' node>,
- nodes: [{
- type: 'media-feature',
- value: 'max-width',
- before: '',
- after: '',
- sourceIndex: 1,
- parent: <link to parent 'media-feature-expression' node>,
- }, {
- type: 'colon',
- value: ':',
- before: '',
- after: ' ',
- sourceIndex: 10,
- parent: <link to parent 'media-feature-expression' node>,
- }, {
- type: 'value',
- value: '100px',
- before: ' ',
- after: '',
- sourceIndex: 12,
- parent: <link to parent 'media-feature-expression' node>,
- }]
- }]
- },
- // the second media query
- {
- type: 'media-query',
- value: 'not print',
- before: ' ',
- after: '',
- sourceIndex: 20,
- parent: <link to parent 'media-query-list' node>,
- nodes: [{
- type: 'keyword',
- value: 'not',
- before: ' ',
- after: ' ',
- sourceIndex: 20,
- parent: <link to parent 'media-query' node>,
- }, {
- type: 'media-type',
- value: 'print',
- before: ' ',
- after: '',
- sourceIndex: 24,
- parent: <link to parent 'media-query' node>,
- }]
- }]
-}
-```
-
-One of the likely sources of a string to parse would be traversing [a PostCSS container node](http://api.postcss.org/Root.html) and getting the `params` property of nodes with the name of "atRule":
-
-```js
-import postcss from "postcss";
-import mediaParser from "postcss-media-query-parser";
-
-const root = postcss.parse(<contents>);
-// ... or any other way to get sucn container
-
-root.walkAtRules("media", (atRule) => {
- const mediaParsed = mediaParser(atRule.params);
- // Do something with "mediaParsed" object
-});
-```
-
-## Nodes
-
-Node is a very generic item in terms of this parser. It's is pretty much everything that ends up in the parsed result. Each node has these properties:
-
-* `type`: the type of the node (see below);
-* `value`: the node's value stripped of trailing whitespaces;
-* `sourceIndex`: 0-based index of the node start relative to the source start (excluding trailing whitespaces);
-* `before`: a string that contain a whitespace between the node start and the previous node end/source start;
-* `after`: a string that contain a whitespace between the node end and the next node start/source end;
-* `parent`: a link to this node's parent node (a container).
-
-A node can have one of these types (according to [the 2012 CSS3 standard](https://www.w3.org/TR/2012/REC-css3-mediaqueries-20120619/)):
-
-* `media-query-list`: that is the root level node of the parsing result. A [container](#containers); its children can have types of `url` and `media-query`.
-* `url`: if a source is taken from a CSS `@import` rule, it will have a `url(...)` function call. The value of such node will be `url(http://uri-address)`, it is to be parsed separately.
-* `media-query`: such nodes correspond to each media query in a comma separated list. In the exapmle above there are two. Nodes of this type are [containers](#containers).
-* `media-type`: `screen`, `tv` and other media types.
-* `keyword`: `only`, `not` or `and` keyword.
-* `media-feature-expression`: an expression in parentheses that checks for a condition of a particular media feature. The value would be like this: `(max-width: 1000px)`. Such nodes are [containers](#containers). They always have a `media-feature` child node, but might not have a `value` child node (like in `screen and (color)`).
-* `media-feature`: a media feature, e.g. `max-width`.
-* `colon`: present if a media feature expression has a colon (e.g. `(min-width: 1000px)`, compared to `(color)`).
-* `value`: a media feature expression value, e.g. `100px` in `(max-width: 1000px)`.
-
-### Parsing details
-
-postcss-media-query-parser allows for cases of some **non-standard syntaxes** and tries its best to work them around. For example, in a media query from a code with SCSS syntax:
-
-```scss
-@media #{$media-type} and ( #{"max-width" + ": 10px"} ) { ... }
-```
-
-`#{$media-type}` will be the node of type `media-type`, alghough `$media-type`'s value can be `only screen`. And inside `media-feature-expression` there will only be a `media-feature` type node with the value of `#{"max-width" + ": 10px"}` (this example doesn't make much sense, it's for demo purpose).
-
-But the result of parsing **malformed media queries** (such as with incorrect amount of closing parens, curly braces, etc.) can be unexpected. For exapmle, parsing:
-
-```scss
-@media ((min-width: -100px)
-```
-
-would return a media query list with the single `media-query` node that has no child nodes.
-
-## Containers
-
-Containers are [nodes](#nodes) that have other nodes as children. Container nodes have an additional property `nodes` which is an array of their child nodes. And also these methods:
-
-* `each(callback)` - traverses the direct child nodes of a container, calling `callback` function for each of them. Returns `false` if traversing has stopped by means of `callback` returning `false`, and `true` otherwise.
-* `walk([filter, ]callback)` - traverses ALL descendant nodes of a container, calling `callback` function for each of them. Returns `false` if traversing has stopped by means of `callback` returning `false`, and `true` otherwise.
-
-In both cases `callback` takes these parameters:
-
-- `node` - the current node (one of the container's descendats, that the callback has been called against).
-- `i` - 0-based index of the `node` in an array of its parent's children.
-- `nodes` - array of child nodes of `node`'s parent.
-
-If `callback` returns `false`, the traversing stops.
-
-## License
-
-MIT
diff --git a/assets/node_modules/postcss-media-query-parser/dist/index.js b/assets/node_modules/postcss-media-query-parser/dist/index.js
deleted file mode 100644
index 79daafd..0000000
--- a/assets/node_modules/postcss-media-query-parser/dist/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = parseMedia;
-
-var _Container = require('./nodes/Container');
-
-var _Container2 = _interopRequireDefault(_Container);
-
-var _parsers = require('./parsers');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Parses a media query list into an array of nodes. A typical node signature:
- * {string} node.type -- one of: 'media-query', 'media-type', 'keyword',
- * 'media-feature-expression', 'media-feature', 'colon', 'value'
- * {string} node.value -- the contents of a particular element, trimmed
- * e.g.: `screen`, `max-width`, `1024px`
- * {string} node.after -- whitespaces that follow the element
- * {string} node.before -- whitespaces that precede the element
- * {string} node.sourceIndex -- the index of the element in a source media
- * query list, 0-based
- * {object} node.parent -- a link to the parent node (a container)
- *
- * Some nodes (media queries, media feature expressions) contain other nodes.
- * They additionally have:
- * {array} node.nodes -- an array of nodes of the type described here
- * {funciton} node.each -- traverses direct children of the node, calling
- * a callback for each one
- * {funciton} node.walk -- traverses ALL descendants of the node, calling
- * a callback for each one
- */
-
-function parseMedia(value) {
- return new _Container2.default({
- nodes: (0, _parsers.parseMediaList)(value),
- type: 'media-query-list',
- value: value.trim()
- });
-} \ No newline at end of file
diff --git a/assets/node_modules/postcss-media-query-parser/dist/nodes/Container.js b/assets/node_modules/postcss-media-query-parser/dist/nodes/Container.js
deleted file mode 100644
index 9c81a0a..0000000
--- a/assets/node_modules/postcss-media-query-parser/dist/nodes/Container.js
+++ /dev/null
@@ -1,94 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-
-var _Node = require('./Node');
-
-var _Node2 = _interopRequireDefault(_Node);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function Container(opts) {
- var _this = this;
-
- this.constructor(opts);
-
- this.nodes = opts.nodes;
-
- if (this.after === undefined) {
- this.after = this.nodes.length > 0 ? this.nodes[this.nodes.length - 1].after : '';
- }
-
- if (this.before === undefined) {
- this.before = this.nodes.length > 0 ? this.nodes[0].before : '';
- }
-
- if (this.sourceIndex === undefined) {
- this.sourceIndex = this.before.length;
- }
-
- this.nodes.forEach(function (node) {
- node.parent = _this; // eslint-disable-line no-param-reassign
- });
-} /**
- * A node that contains other nodes and support traversing over them
- */
-
-Container.prototype = Object.create(_Node2.default.prototype);
-Container.constructor = _Node2.default;
-
-/**
- * Iterate over descendant nodes of the node
- *
- * @param {RegExp|string} filter - Optional. Only nodes with node.type that
- * satisfies the filter will be traversed over
- * @param {function} cb - callback to call on each node. Takes theese params:
- * node - the node being processed, i - it's index, nodes - the array
- * of all nodes
- * If false is returned, the iteration breaks
- *
- * @return (boolean) false, if the iteration was broken
- */
-Container.prototype.walk = function walk(filter, cb) {
- var hasFilter = typeof filter === 'string' || filter instanceof RegExp;
- var callback = hasFilter ? cb : filter;
- var filterReg = typeof filter === 'string' ? new RegExp(filter) : filter;
-
- for (var i = 0; i < this.nodes.length; i++) {
- var node = this.nodes[i];
- var filtered = hasFilter ? filterReg.test(node.type) : true;
- if (filtered && callback && callback(node, i, this.nodes) === false) {
- return false;
- }
- if (node.nodes && node.walk(filter, cb) === false) {
- return false;
- }
- }
- return true;
-};
-
-/**
- * Iterate over immediate children of the node
- *
- * @param {function} cb - callback to call on each node. Takes theese params:
- * node - the node being processed, i - it's index, nodes - the array
- * of all nodes
- * If false is returned, the iteration breaks
- *
- * @return (boolean) false, if the iteration was broken
- */
-Container.prototype.each = function each() {
- var cb = arguments.length <= 0 || arguments[0] === undefined ? function () {} : arguments[0];
-
- for (var i = 0; i < this.nodes.length; i++) {
- var node = this.nodes[i];
- if (cb(node, i, this.nodes) === false) {
- return false;
- }
- }
- return true;
-};
-
-exports.default = Container; \ No newline at end of file
diff --git a/assets/node_modules/postcss-media-query-parser/dist/nodes/Node.js b/assets/node_modules/postcss-media-query-parser/dist/nodes/Node.js
deleted file mode 100644
index a10d225..0000000
--- a/assets/node_modules/postcss-media-query-parser/dist/nodes/Node.js
+++ /dev/null
@@ -1,18 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-/**
- * A very generic node. Pretty much any element of a media query
- */
-
-function Node(opts) {
- this.after = opts.after;
- this.before = opts.before;
- this.type = opts.type;
- this.value = opts.value;
- this.sourceIndex = opts.sourceIndex;
-}
-
-exports.default = Node; \ No newline at end of file
diff --git a/assets/node_modules/postcss-media-query-parser/dist/parsers.js b/assets/node_modules/postcss-media-query-parser/dist/parsers.js
deleted file mode 100644
index fc92025..0000000
--- a/assets/node_modules/postcss-media-query-parser/dist/parsers.js
+++ /dev/null
@@ -1,367 +0,0 @@
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.parseMediaFeature = parseMediaFeature;
-exports.parseMediaQuery = parseMediaQuery;
-exports.parseMediaList = parseMediaList;
-
-var _Node = require('./nodes/Node');
-
-var _Node2 = _interopRequireDefault(_Node);
-
-var _Container = require('./nodes/Container');
-
-var _Container2 = _interopRequireDefault(_Container);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Parses a media feature expression, e.g. `max-width: 10px`, `(color)`
- *
- * @param {string} string - the source expression string, can be inside parens
- * @param {Number} index - the index of `string` in the overall input
- *
- * @return {Array} an array of Nodes, the first element being a media feature,
- * the secont - its value (may be missing)
- */
-
-function parseMediaFeature(string) {
- var index = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];
-
- var modesEntered = [{
- mode: 'normal',
- character: null
- }];
- var result = [];
- var lastModeIndex = 0;
- var mediaFeature = '';
- var colon = null;
- var mediaFeatureValue = null;
- var indexLocal = index;
-
- var stringNormalized = string;
- // Strip trailing parens (if any), and correct the starting index
- if (string[0] === '(' && string[string.length - 1] === ')') {
- stringNormalized = string.substring(1, string.length - 1);
- indexLocal++;
- }
-
- for (var i = 0; i < stringNormalized.length; i++) {
- var character = stringNormalized[i];
-
- // If entering/exiting a string
- if (character === '\'' || character === '"') {
- if (modesEntered[lastModeIndex].isCalculationEnabled === true) {
- modesEntered.push({
- mode: 'string',
- isCalculationEnabled: false,
- character: character
- });
- lastModeIndex++;
- } else if (modesEntered[lastModeIndex].mode === 'string' && modesEntered[lastModeIndex].character === character && stringNormalized[i - 1] !== '\\') {
- modesEntered.pop();
- lastModeIndex--;
- }
- }
-
- // If entering/exiting interpolation
- if (character === '{') {
- modesEntered.push({
- mode: 'interpolation',
- isCalculationEnabled: true
- });
- lastModeIndex++;
- } else if (character === '}') {
- modesEntered.pop();
- lastModeIndex--;
- }
-
- // If a : is met outside of a string, function call or interpolation, than
- // this : separates a media feature and a value
- if (modesEntered[lastModeIndex].mode === 'normal' && character === ':') {
- var mediaFeatureValueStr = stringNormalized.substring(i + 1);
- mediaFeatureValue = {
- type: 'value',
- before: /^(\s*)/.exec(mediaFeatureValueStr)[1],
- after: /(\s*)$/.exec(mediaFeatureValueStr)[1],
- value: mediaFeatureValueStr.trim()
- };
- // +1 for the colon
- mediaFeatureValue.sourceIndex = mediaFeatureValue.before.length + i + 1 + indexLocal;
- colon = {
- type: 'colon',
- sourceIndex: i + indexLocal,
- after: mediaFeatureValue.before,
- value: ':' };
- break;
- }
-
- mediaFeature += character;
- }
-
- // Forming a media feature node
- mediaFeature = {
- type: 'media-feature',
- before: /^(\s*)/.exec(mediaFeature)[1],
- after: /(\s*)$/.exec(mediaFeature)[1],
- value: mediaFeature.trim()
- };
- mediaFeature.sourceIndex = mediaFeature.before.length + indexLocal;
- result.push(mediaFeature);
-
- if (colon !== null) {
- colon.before = mediaFeature.after;
- result.push(colon);
- }
-
- if (mediaFeatureValue !== null) {
- result.push(mediaFeatureValue);
- }
-
- return result;
-}
-
-/**
- * Parses a media query, e.g. `screen and (color)`, `only tv`
- *
- * @param {string} string - the source media query string
- * @param {Number} index - the index of `string` in the overall input
- *
- * @return {Array} an array of Nodes and Containers
- */
-
-function parseMediaQuery(string) {
- var index = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];
-
- var result = [];
-
- // How many timies the parser entered parens/curly braces
- var localLevel = 0;
- // Has any keyword, media type, media feature expression or interpolation
- // ('element' hereafter) started
- var insideSomeValue = false;
- var node = void 0;
-
- function resetNode() {
- return {
- before: '',
- after: '',
- value: ''
- };
- }
-
- node = resetNode();
-
- for (var i = 0; i < string.length; i++) {
- var character = string[i];
- // If not yet entered any element
- if (!insideSomeValue) {
- if (character.search(/\s/) !== -1) {
- // A whitespace
- // Don't form 'after' yet; will do it later
- node.before += character;
- } else {
- // Not a whitespace - entering an element
- // Expression start
- if (character === '(') {
- node.type = 'media-feature-expression';
- localLevel++;
- }
- node.value = character;
- node.sourceIndex = index + i;
- insideSomeValue = true;
- }
- } else {
- // Already in the middle of some alement
- node.value += character;
-
- // Here parens just increase localLevel and don't trigger a start of
- // a media feature expression (since they can't be nested)
- // Interpolation start
- if (character === '{' || character === '(') {
- localLevel++;
- }
- // Interpolation/function call/media feature expression end
- if (character === ')' || character === '}') {
- localLevel--;
- }
- }
-
- // If exited all parens/curlies and the next symbol
- if (insideSomeValue && localLevel === 0 && (character === ')' || i === string.length - 1 || string[i + 1].search(/\s/) !== -1)) {
- if (['not', 'only', 'and'].indexOf(node.value) !== -1) {
- node.type = 'keyword';
- }
- // if it's an expression, parse its contents
- if (node.type === 'media-feature-expression') {
- node.nodes = parseMediaFeature(node.value, node.sourceIndex);
- }
- result.push(Array.isArray(node.nodes) ? new _Container2.default(node) : new _Node2.default(node));
- node = resetNode();
- insideSomeValue = false;
- }
- }
-
- // Now process the result array - to specify undefined types of the nodes
- // and specify the `after` prop
- for (var _i = 0; _i < result.length; _i++) {
- node = result[_i];
- if (_i > 0) {
- result[_i - 1].after = node.before;
- }
-
- // Node types. Might not be set because contains interpolation/function
- // calls or fully consists of them
- if (node.type === undefined) {
- if (_i > 0) {
- // only `and` can follow an expression
- if (result[_i - 1].type === 'media-feature-expression') {
- node.type = 'keyword';
- continue;
- }
- // Anything after 'only|not' is a media type
- if (result[_i - 1].value === 'not' || result[_i - 1].value === 'only') {
- node.type = 'media-type';
- continue;
- }
- // Anything after 'and' is an expression
- if (result[_i - 1].value === 'and') {
- node.type = 'media-feature-expression';
- continue;
- }
-
- if (result[_i - 1].type === 'media-type') {
- // if it is the last element - it might be an expression
- // or 'and' depending on what is after it
- if (!result[_i + 1]) {
- node.type = 'media-feature-expression';
- } else {
- node.type = result[_i + 1].type === 'media-feature-expression' ? 'keyword' : 'media-feature-expression';
- }
- }
- }
-
- if (_i === 0) {
- // `screen`, `fn( ... )`, `#{ ... }`. Not an expression, since then
- // its type would have been set by now
- if (!result[_i + 1]) {
- node.type = 'media-type';
- continue;
- }
-
- // `screen and` or `#{...} (max-width: 10px)`
- if (result[_i + 1] && (result[_i + 1].type === 'media-feature-expression' || result[_i + 1].type === 'keyword')) {
- node.type = 'media-type';
- continue;
- }
- if (result[_i + 2]) {
- // `screen and (color) ...`
- if (result[_i + 2].type === 'media-feature-expression') {
- node.type = 'media-type';
- result[_i + 1].type = 'keyword';
- continue;
- }
- // `only screen and ...`
- if (result[_i + 2].type === 'keyword') {
- node.type = 'keyword';
- result[_i + 1].type = 'media-type';
- continue;
- }
- }
- if (result[_i + 3]) {
- // `screen and (color) ...`
- if (result[_i + 3].type === 'media-feature-expression') {
- node.type = 'keyword';
- result[_i + 1].type = 'media-type';
- result[_i + 2].type = 'keyword';
- continue;
- }
- }
- }
- }
- }
- return result;
-}
-
-/**
- * Parses a media query list. Takes a possible `url()` at the start into
- * account, and divides the list into media queries that are parsed separately
- *
- * @param {string} string - the source media query list string
- *
- * @return {Array} an array of Nodes/Containers
- */
-
-function parseMediaList(string) {
- var result = [];
- var interimIndex = 0;
- var levelLocal = 0;
-
- // Check for a `url(...)` part (if it is contents of an @import rule)
- var doesHaveUrl = /^(\s*)url\s*\(/.exec(string);
- if (doesHaveUrl !== null) {
- var i = doesHaveUrl[0].length;
- var parenthesesLv = 1;
- while (parenthesesLv > 0) {
- var character = string[i];
- if (character === '(') {
- parenthesesLv++;
- }
- if (character === ')') {
- parenthesesLv--;
- }
- i++;
- }
- result.unshift(new _Node2.default({
- type: 'url',
- value: string.substring(0, i).trim(),
- sourceIndex: doesHaveUrl[1].length,
- before: doesHaveUrl[1],
- after: /^(\s*)/.exec(string.substring(i))[1]
- }));
- interimIndex = i;
- }
-
- // Start processing the media query list
- for (var _i2 = interimIndex; _i2 < string.length; _i2++) {
- var _character = string[_i2];
-
- // Dividing the media query list into comma-separated media queries
- // Only count commas that are outside of any parens
- // (i.e., not part of function call params list, etc.)
- if (_character === '(') {
- levelLocal++;
- }
- if (_character === ')') {
- levelLocal--;
- }
- if (levelLocal === 0 && _character === ',') {
- var _mediaQueryString = string.substring(interimIndex, _i2);
- var _spaceBefore = /^(\s*)/.exec(_mediaQueryString)[1];
- result.push(new _Container2.default({
- type: 'media-query',
- value: _mediaQueryString.trim(),
- sourceIndex: interimIndex + _spaceBefore.length,
- nodes: parseMediaQuery(_mediaQueryString, interimIndex),
- before: _spaceBefore,
- after: /(\s*)$/.exec(_mediaQueryString)[1]
- }));
- interimIndex = _i2 + 1;
- }
- }
-
- var mediaQueryString = string.substring(interimIndex);
- var spaceBefore = /^(\s*)/.exec(mediaQueryString)[1];
- result.push(new _Container2.default({
- type: 'media-query',
- value: mediaQueryString.trim(),
- sourceIndex: interimIndex + spaceBefore.length,
- nodes: parseMediaQuery(mediaQueryString, interimIndex),
- before: spaceBefore,
- after: /(\s*)$/.exec(mediaQueryString)[1]
- }));
-
- return result;
-} \ No newline at end of file
diff --git a/assets/node_modules/postcss-media-query-parser/package.json b/assets/node_modules/postcss-media-query-parser/package.json
deleted file mode 100644
index a1a5778..0000000
--- a/assets/node_modules/postcss-media-query-parser/package.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "name": "postcss-media-query-parser",
- "version": "0.2.3",
- "description": "A tool for parsing media query lists.",
- "main": "dist/index.js",
- "keywords": [
- "postcss",
- "postcss tool",
- "media query",
- "media query parsing"
- ],
- "author": "dryoma",
- "license": "MIT",
- "homepage": "https://github.com/dryoma/postcss-media-query-parser",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/dryoma/postcss-media-query-parser.git"
- },
- "bugs": {
- "url": "https://github.com/dryoma/postcss-media-query-parser/issues"
- },
- "devDependencies": {
- "babel-cli": "^6.14.0",
- "babel-preset-es2015": "^6.14.0",
- "babel-register": "^6.14.0",
- "eslint": "^2.5.1",
- "eslint-config-airbnb": "^6.0.2",
- "eslint-plugin-react": "^4.2.3",
- "tap-spec": "^4.1.1",
- "tape": "^4.6.0"
- },
- "scripts": {
- "lint": "eslint . --ignore-path .gitignore",
- "test": "tape -r babel-register \"src/**/__tests__/*.js\" | tap-spec",
- "pretest": "npm run lint",
- "prebuild": "rimraf dist",
- "prepublish": "npm run build",
- "build": "babel src --out-dir dist"
- },
- "eslintConfig": {
- "extends": "airbnb",
- "rules": {
- "max-len": [
- 2,
- 80,
- 4
- ],
- "func-names": 0
- }
- },
- "babel": {
- "presets": [
- "es2015"
- ]
- },
- "files": [
- "dist",
- "!**/__tests__"
- ]
-}
diff --git a/assets/node_modules/postcss-reporter/CHANGELOG.md b/assets/node_modules/postcss-reporter/CHANGELOG.md
deleted file mode 100644
index 5fe28e6..0000000
--- a/assets/node_modules/postcss-reporter/CHANGELOG.md
+++ /dev/null
@@ -1,74 +0,0 @@
-# Changelog
-
-## 6.0.1
-
-- Fix support for messages without text (by @nodaguti).
-
-## 6.0.0
-
-- Upgrade to PostCSS 7.
-- Drop support for Node 4.
-
-## 5.0.0
-
-- Move PostCSS from `peerDependencies` to `dependencies`.
-- Drop support for Node 0.12.
-
-## 4.0.0
-
-- Upgrade to PostCSS v6. (If you still use PostCSS v5, stick with v3 until you can upgrade your PostCSS.)
-- Switched PostCSS to a peer dependency.
-
-## 3.0.0
-
-- Replace `clearMessages` option with `clearReportedMessages` and `clearAllMessages`.
-
-## 2.0.0
-
-- Only log warning messages (`type: "warning"`) by default.
-
-## 1.4.1
-- Add `filter` option.
-- Add blacklist functionality to `plugins` option with `!` prefix`.
-
-## 1.3.3
-- Fix regression that caused positions from sources without incoming sourcemaps not to be logged.
-
-## 1.3.2
-- Find more accurate positions of preprocessed files with sourcemaps.
-
-## 1.3.1
-- Fix Windows path bug.
-
-## 1.3.0
-- Check individual messages for distinct sources, then group messages by those sources,
- instead of always using the PostCSS Result's source.
-- Output empty string from `formatter` if there are no messages, instead of `undefined`.
-
-## 1.2.1
-- Handle variable and absent input sources.
-
-## 1.2.0
-- Add `noIcon` and `noPlugin` options to both reporter and formatter.
-
-## 1.1.0
-- Use PostCSS 5's line/column properties on warnings, instead of relying on the source node.
-
-## 1.0.0
-- Upgrade to PostCSS 5.
-
-## 0.4.0
-- Add `positionless` option (to both the reporter and the formatter), with default value `"first"`.
-- Cleaner npm install (files specified in `package.json`).
-
-## 0.3.1
-- Remove leftover debugging log statement.
-
-## 0.3.0
-- Add `sortByPosition` option (to both the reporter and the formatter), with default value `true`.
-
-## 0.2.0
-- Alter `defaultFormatter` to use warning symbol and not repeat `# postcss-reporter`.
-
-## 0.1.0
-- First release.
diff --git a/assets/node_modules/postcss-reporter/LICENSE b/assets/node_modules/postcss-reporter/LICENSE
deleted file mode 100644
index 6d347c0..0000000
--- a/assets/node_modules/postcss-reporter/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 David Clark
-
-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/assets/node_modules/postcss-reporter/README.md b/assets/node_modules/postcss-reporter/README.md
deleted file mode 100644
index a2e1124..0000000
--- a/assets/node_modules/postcss-reporter/README.md
+++ /dev/null
@@ -1,149 +0,0 @@
-# postcss-reporter
-[![Build Status](https://travis-ci.org/postcss/postcss-reporter.svg?branch=master)](https://travis-ci.org/postcss/postcss-reporter)
-[![AppVeyor Build Status](https://img.shields.io/appveyor/ci/davidtheclark/postcss-reporter/master.svg?label=windows%20build)](https://ci.appveyor.com/project/davidtheclark/postcss-reporter)
-
-A PostCSS plugin to `console.log()` the messages (warnings, etc.) registered by other PostCSS plugins.
-
----
-
-**SEEKING A NEW MAINTAINER!** Interested in contributing to the ecosystem of PostCSS and Stylelint? Please open an issue if you'd like to take over maintenance of this package.
-
----
-
-## Purpose
-
-As of PostCSS 4.1, a single PostCSS process can accumulate messages from all of the plugins it uses.
-Most of these messages are [warnings](https://github.com/postcss/postcss/blob/master/docs/guidelines/plugin.md#32-use-resultwarn-for-warnings).
-Presumably, plugin authors want you to see those messages.
-So this plugin exists to read the accumulated messages (or messages from only the plugins you've specified), format them, and print them to the console.
-
-By default, the messages are formatted for human legibility and sorted according to the line/column positions attached to the messages. But another formatting function can be passed in with an option, and sorting can be turned of with an option.
-
-*By default, only warnings are logged*. If you would like to see more messages, you can change the `filter` function.
-
-## Example Output
-
-![Example](example.png?raw=true)
-
-## Installation
-
-```
-npm install postcss-reporter
-```
-
-Version 1.0.0+ is compatible with PostCSS 5+. (Earlier versions are compatible with PostCSS 4.)
-
-## Usage
-
-Add it to your plugin list *after any plugins whose messages you want to log*, and optionally pass it an object of options.
-
-For example, using [gulp-postcss](https://github.com/postcss/gulp-postcss):
-
-```js
-gulp.task('css', function() {
- return gulp.src('./src/*.css')
- .pipe(postcss([
- bemLinter(),
- customProperties(),
- calc(),
- rejectAllColors(),
- reporter(myOptions) // <------ ding
- ]))
- .pipe(gulp.dest('./dist'));
-});
-```
-
-## Options
-
-**clearReportedMessages** (boolean, default = `false`)
-
-If true, the plugin will clear the result's messages after it logs them. This prevents other plugins, or the whatever runner you use, from logging the same information again and causing confusion.
-
-**formatter** (function, default = the default formatter)
-
-By default, this reporter will format the messages for human legibility in the console.
-To use another formatter, pass a function that
-
- - accepts an object containing a `messages` array and a `source` string
- - returns the string to report
-
-For example, you could write a formatter like this:
-
-```js
-reporter({
- formatter: function(input) {
- return input.source + ' produced ' + input.messages.length + ' messages';
- }
-})
-```
-
-**plugins** (array of strings, default = `[]`)
-
-If `plugins` is empty (as it is by default), the reporter will log messages from every PostCSS plugin.
-
-There are 2 ways to limit output:
-
-- **Whitelist:** Provide an array of the plugins whose messages you would like to show.
- For example, `{ plugins: ['postcss-bem-linter'] }` will only log messages from the `postcss-bem-linter` plugin.
-- **Blacklist:** Prefix all plugins in the array with `!` to specify only those plugins whose messages you would like to hide.
- (All other plugins will be shown.)
- For example, `{ plugins: ['!postcss-bem-linter'] }` will never log messages from the `postcss-bem-linter` plugin; but will log messages from every other plugin.
-
-**filter** (function)
-
-Provide a filter function. It receives the message object and returns a truthy or falsy value, indicating whether that particular message should be reported or not.
-
-By default, only messages with `type: "warning"` warnings are logged. (These are the messages produced when the plugin author uses PostCSS's `warn()` function.)
-
-For example, `function(message) { return true }` will only every message, regardless of the plugin or whether it's a warning or not.
-
-**clearAllMessages** (boolean, default = `false`)
-
-If `true`, not pass any messages into other plugins, or the whatever runner you use, for logging.
-
-**throwError** (boolean, default = `false`)
-
-If `true`, after the plugin logs your messages it will throw an error if it found any warnings.
-
-**sortByPosition** (boolean, default = `true`)
-
-If `false`, messages will not be sorted by line/column position.
-
-**positionless** (`"first"|"last"|"any"`, default = `"first"`)
-
-By default, messages without line/column positions will be grouped at the beginning of the output.
-To put them at the end, instead, use `"last"`.
-To not bother sorting these, use `"any"`.
-
-**noIcon** (boolean, default = `false`)
-
-If `true`, no exclamatory triangle icons will be printed next to warnings.
-
-**noPlugin** (boolean, default = `false`)
-
-If `true`, plugin names will not be printed in brackets after messages.
-
-## How to get output without colors
-
-If you would like no colors in the console output, simply pass `--no-colors` when you invoke whatever command runs this plugin. (This works because of [chalk](https://github.com/sindresorhus/chalk).)
-
-## Standalone formatter
-
-You can also use this module's formatter as a library, with following API:
-
-```js
-var formatter = require('postcss-reporter/lib/formatter');
-var myFormatter = formatter(myOptions);
-// to use defaults, just pass no options: `formatter()`
-var warningLog = myFormatter({
- messages: someMessages,
- source: someSource
-});
-console.log(warningLog);
-```
-
-These are the formatter's options:
-
-- sortByPosition (boolean, default = `true`)
-- noIcon (boolean, default = `false`) - Do not print any warning exclamatory triangle icons
-- noPlugin (boolean, default = `false`) - Do not print plugin names
diff --git a/assets/node_modules/postcss-reporter/index.js b/assets/node_modules/postcss-reporter/index.js
deleted file mode 100644
index 2a4e413..0000000
--- a/assets/node_modules/postcss-reporter/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var postcss = require('postcss');
-var reporter = require('./lib/reporter');
-
-module.exports = postcss.plugin('postcss-reporter', reporter);
diff --git a/assets/node_modules/postcss-reporter/lib/formatter.js b/assets/node_modules/postcss-reporter/lib/formatter.js
deleted file mode 100644
index a874e8c..0000000
--- a/assets/node_modules/postcss-reporter/lib/formatter.js
+++ /dev/null
@@ -1,82 +0,0 @@
-var chalk = require('chalk');
-var path = require('path');
-var symbols = require('log-symbols');
-var _ = require('lodash');
-var util = require('./util');
-
-module.exports = function(opts) {
- var options = opts || {};
- var sortByPosition = (typeof options.sortByPosition !== 'undefined') ? options.sortByPosition : true;
- var positionless = options.positionless || 'first';
-
- return function(input) {
- var messages = input.messages.filter(function(message) {
- return typeof message.text === 'string';
- });
- var source = input.source;
-
- if (!messages.length) return '';
-
- var orderedMessages = _.sortBy(
- messages,
- function(m) {
- if (!m.line) return 1;
- if (positionless === 'any') return 1;
- if (positionless === 'first') return 2;
- if (positionless === 'last') return 0;
- },
- function(m) {
- if (!sortByPosition) return 1;
- return m.line;
- },
- function(m) {
- if (!sortByPosition) return 1;
- return m.column;
- }
- );
-
- var output = '\n';
-
- if (source) {
- output += chalk.bold.underline(logFrom(source)) + '\n';
- }
-
- orderedMessages.forEach(function(w) {
- output += messageToString(w) + '\n';
- });
-
- return output;
-
- function messageToString(message) {
- var location = util.getLocation(message);
- var str = '';
-
- if (location.line) {
- str += chalk.bold(location.line);
- }
-
- if (location.column) {
- str += chalk.bold(':' + location.column)
- }
-
- if (location.line || location.column) {
- str += '\t';
- }
-
- if (!options.noIcon && message.type === 'warning') {
- str += chalk.yellow(symbols.warning + ' ');
- }
-
- str += message.text;
- if (!options.noPlugin) {
- str += chalk.yellow(' [' + message.plugin + ']');
- }
- return str;
- }
-
- function logFrom(fromValue) {
- if (fromValue.charAt(0) === '<') return fromValue;
- return path.relative(process.cwd(), fromValue).split(path.sep).join('/');
- }
- };
-};
diff --git a/assets/node_modules/postcss-reporter/lib/reporter.js b/assets/node_modules/postcss-reporter/lib/reporter.js
deleted file mode 100644
index 70781fb..0000000
--- a/assets/node_modules/postcss-reporter/lib/reporter.js
+++ /dev/null
@@ -1,81 +0,0 @@
-var chalk = require('chalk');
-var _ = require('lodash');
-var defaultFormatter = require('./formatter');
-var util = require('./util');
-
-module.exports = function(opts) {
- var options = opts || {};
-
- var formatter = options.formatter || defaultFormatter({
- sortByPosition: (typeof options.sortByPosition !== 'undefined') ? options.sortByPosition : true,
- positionless: options.positionless || 'first',
- noIcon: options.noIcon,
- noPlugin: options.noPlugin,
- });
-
- var pluginFilter;
- if (!options.plugins) {
- // Every plugin
- pluginFilter = function() { return true; };
- } else if (options.plugins.every(function(plugin) { return plugin[0] === '!'; })) {
- // Blacklist
- pluginFilter = function(message) {
- return options.plugins.indexOf('!' + message.plugin) === -1;
- };
- } else {
- // Whitelist
- pluginFilter = function(message) {
- return options.plugins.indexOf(message.plugin) !== -1;
- };
- }
-
- var messageFilter = options.filter || function(message) { return (message.type === 'warning'); };
-
- return function(css, result) {
- var messagesToLog = result.messages
- .filter(pluginFilter)
- .filter(messageFilter);
-
- var resultSource = (!result.root.source) ? ''
- : result.root.source.input.file || result.root.source.input.id
-
- var sourceGroupedMessages = _.groupBy(messagesToLog, function(message) {
- return util.getLocation(message).file || resultSource;
- });
-
- var report = '';
- _.forOwn(sourceGroupedMessages, function(messages, source) {
- report += formatter({
- messages: messages,
- source: source,
- });
- });
-
- if (options.clearReportedMessages) {
- result.messages = _.difference(result.messages, messagesToLog);
- }
-
- if (options.clearAllMessages) {
- var messagesToClear = result.messages.filter(pluginFilter);
- result.messages = _.difference(result.messages, messagesToClear);
- }
-
-
- if (!report) return;
-
- console.log(report);
-
- if (options.throwError && shouldThrowError()) {
- throw new Error(chalk.red.bold('\n** postcss-reporter: warnings or errors were found **'));
- }
-
- function shouldThrowError() {
- return (
- messagesToLog.length
- && messagesToLog.some(function(message) {
- return message.type === 'warning' || message.type === 'error';
- })
- );
- }
- };
-};
diff --git a/assets/node_modules/postcss-reporter/lib/util.js b/assets/node_modules/postcss-reporter/lib/util.js
deleted file mode 100644
index 76c649b..0000000
--- a/assets/node_modules/postcss-reporter/lib/util.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var _ = require('lodash');
-
-exports.getLocation = function(message) {
- var messageNode = message.node;
-
- var location = {
- line: message.line,
- column: message.column,
- };
-
- var messageInput = _.get(messageNode, 'source.input');
-
- if (!messageInput) return location;
-
- var originLocation = messageInput.origin && messageInput.origin(message.line, message.column)
- if (originLocation) return originLocation
-
- location.file = messageInput.file || messageInput.id;
- return location;
-};
diff --git a/assets/node_modules/postcss-reporter/node_modules/log-symbols/browser.js b/assets/node_modules/postcss-reporter/node_modules/log-symbols/browser.js
deleted file mode 100644
index b60dd38..0000000
--- a/assets/node_modules/postcss-reporter/node_modules/log-symbols/browser.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict';
-module.exports = {
- info: 'ℹ️',
- success: '✅',
- warning: '⚠️',
- error: '❌️'
-};
diff --git a/assets/node_modules/postcss-reporter/node_modules/log-symbols/index.js b/assets/node_modules/postcss-reporter/node_modules/log-symbols/index.js
deleted file mode 100644
index 247bb59..0000000
--- a/assets/node_modules/postcss-reporter/node_modules/log-symbols/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict';
-const chalk = require('chalk');
-
-const isSupported = process.platform !== 'win32' || process.env.CI || process.env.TERM === 'xterm-256color';
-
-const main = {
- info: chalk.blue('ℹ'),
- success: chalk.green('✔'),
- warning: chalk.yellow('⚠'),
- error: chalk.red('✖')
-};
-
-const fallbacks = {
- info: chalk.blue('i'),
- success: chalk.green('√'),
- warning: chalk.yellow('‼'),
- error: chalk.red('×')
-};
-
-module.exports = isSupported ? main : fallbacks;
diff --git a/assets/node_modules/postcss-reporter/node_modules/log-symbols/license b/assets/node_modules/postcss-reporter/node_modules/log-symbols/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/postcss-reporter/node_modules/log-symbols/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/postcss-reporter/node_modules/log-symbols/package.json b/assets/node_modules/postcss-reporter/node_modules/log-symbols/package.json
deleted file mode 100644
index 41736c7..0000000
--- a/assets/node_modules/postcss-reporter/node_modules/log-symbols/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "name": "log-symbols",
- "version": "2.2.0",
- "description": "Colored symbols for various log levels. Example: ✔︎ Success",
- "license": "MIT",
- "repository": "sindresorhus/log-symbols",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js",
- "browser.js"
- ],
- "keywords": [
- "unicode",
- "cli",
- "cmd",
- "command-line",
- "characters",
- "char",
- "symbol",
- "symbols",
- "figure",
- "figures",
- "fallback",
- "win",
- "windows",
- "log",
- "logging",
- "terminal",
- "stdout"
- ],
- "dependencies": {
- "chalk": "^2.0.1"
- },
- "devDependencies": {
- "ava": "*",
- "strip-ansi": "^4.0.0",
- "xo": "*"
- },
- "browser": "browser.js"
-}
diff --git a/assets/node_modules/postcss-reporter/node_modules/log-symbols/readme.md b/assets/node_modules/postcss-reporter/node_modules/log-symbols/readme.md
deleted file mode 100644
index 8459a57..0000000
--- a/assets/node_modules/postcss-reporter/node_modules/log-symbols/readme.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# log-symbols [![Build Status](https://travis-ci.org/sindresorhus/log-symbols.svg?branch=master)](https://travis-ci.org/sindresorhus/log-symbols)
-
-<img src="screenshot.png" width="226" align="right">
-
-> Colored symbols for various log levels
-
-Includes fallbacks for Windows CMD which only supports a [limited character set](https://en.wikipedia.org/wiki/Code_page_437).
-
-
-## Install
-
-```
-$ npm install log-symbols
-```
-
-
-## Usage
-
-```js
-const logSymbols = require('log-symbols');
-
-console.log(logSymbols.success, 'Finished successfully!');
-// On good OSes: ✔ Finished successfully!
-// On Windows: √ Finished successfully!
-```
-
-## API
-
-### logSymbols
-
-#### info
-#### success
-#### warning
-#### error
-
-
-## Related
-
-- [figures](https://github.com/sindresorhus/figures) - Unicode symbols with Windows CMD fallbacks
-- [py-log-symbols](https://github.com/ManrajGrover/py-log-symbols) - Python port
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/postcss-reporter/package.json b/assets/node_modules/postcss-reporter/package.json
deleted file mode 100644
index 1d6f911..0000000
--- a/assets/node_modules/postcss-reporter/package.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "name": "postcss-reporter",
- "version": "6.0.1",
- "description": "Log PostCSS messages in the console",
- "main": "index.js",
- "files": [
- "index.js",
- "lib"
- ],
- "repository": "postcss/postcss-reporter",
- "author": {
- "name": "David Clark",
- "email": "david.dave.clark@gmail.com",
- "url": "http://davidtheclark.com"
- },
- "license": "MIT",
- "dependencies": {
- "chalk": "^2.4.1",
- "lodash": "^4.17.11",
- "log-symbols": "^2.2.0",
- "postcss": "^7.0.7"
- },
- "engines": {
- "node": ">=6"
- }
-}
diff --git a/assets/node_modules/postcss-resolve-nested-selector/LICENSE b/assets/node_modules/postcss-resolve-nested-selector/LICENSE
deleted file mode 100644
index 420486d..0000000
--- a/assets/node_modules/postcss-resolve-nested-selector/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016 David Clark
-
-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/assets/node_modules/postcss-resolve-nested-selector/README.md b/assets/node_modules/postcss-resolve-nested-selector/README.md
deleted file mode 100644
index 7d24f46..0000000
--- a/assets/node_modules/postcss-resolve-nested-selector/README.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# postcss-resolve-nested-selector
-
-[![Build Status](https://travis-ci.org/davidtheclark/postcss-resolve-nested-selector.svg?branch=master)](https://travis-ci.org/davidtheclark/postcss-resolve-nested-selector)
-
-Given a (nested) selector in a PostCSS AST, return an array of resolved selectors.
-
-Tested to work with the syntax of
-[postcss-nested](https://github.com/postcss/postcss-nested)
-and [postcss-nesting](https://github.com/jonathantneal/postcss-nesting).
-Should also work with SCSS and Less syntax. If you'd like to help out by
-adding some automated tests for those, that'd be swell. In fact, if you'd
-like to add any automated tests, you are a winner!
-
-## API
-
-`resolveNestedSelector(selector, node)`
-
-Returns an array of selectors resolved from `selector`.
-
-For example, given this JS:
-
-```js
-var resolvedNestedSelector = require('postcss-resolve-nested-selector');
-postcssRoot.eachRule(function(rule) {
- rule.selectors.forEach(function(selector) {
- console.log(resolvedNestedSelector(selector, rule));
- });
-});
-```
-
-And the following CSS:
-
-```scss
-.foo {
- .bar {
- color: pink;
- }
-}
-```
-
-This should log:
-
-```
-['.foo']
-['.foo .bar']
-```
-
-Or with this CSS:
-
-```scss
-.foo {
- .bar &,
- a {
- color: pink;
- }
-}
-```
-
-This should log:
-
-```
-['.foo']
-['.bar .foo']
-['.foo a']
-```
diff --git a/assets/node_modules/postcss-resolve-nested-selector/index.js b/assets/node_modules/postcss-resolve-nested-selector/index.js
deleted file mode 100644
index 8659841..0000000
--- a/assets/node_modules/postcss-resolve-nested-selector/index.js
+++ /dev/null
@@ -1,25 +0,0 @@
-module.exports = function resolveNestedSelector(selector, node) {
- var parent = node.parent;
- var parentIsNestAtRule = parent.type === 'atrule' && parent.name === 'nest';
-
- if (parent.type === 'root') return [selector];
- if (parent.type !== 'rule' && !parentIsNestAtRule) return resolveNestedSelector(selector, parent);
-
- var parentSelectors = (parentIsNestAtRule)
- ? parent.params.split(',').map(function(s) { return s.trim(); })
- : parent.selectors;
-
- var resolvedSelectors = parentSelectors.reduce(function(result, parentSelector) {
- if (selector.indexOf('&') !== -1) {
- var newlyResolvedSelectors = resolveNestedSelector(parentSelector, parent).map(function(resolvedParentSelector) {
- return selector.replace(/&/g, resolvedParentSelector);
- });
- return result.concat(newlyResolvedSelectors);
- }
-
- var combinedSelector = [ parentSelector, selector ].join(' ');
- return result.concat(resolveNestedSelector(combinedSelector, parent));
- }, []);
-
- return resolvedSelectors;
-}
diff --git a/assets/node_modules/postcss-resolve-nested-selector/package.json b/assets/node_modules/postcss-resolve-nested-selector/package.json
deleted file mode 100644
index 0e5534a..0000000
--- a/assets/node_modules/postcss-resolve-nested-selector/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "postcss-resolve-nested-selector",
- "version": "0.1.1",
- "description": "Resolve a nested selector in a PostCSS AST",
- "main": "index.js",
- "scripts": {
- "test": "ava test/*-test.js"
- },
- "author": "David Clark",
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "devDependencies": {
- "ava": "0.12.0",
- "postcss": "5.0.16",
- "postcss-nested": "1.0.0",
- "postcss-nesting": "2.2.0"
- }
-}
diff --git a/assets/node_modules/postcss-safe-parser/CHANGELOG.md b/assets/node_modules/postcss-safe-parser/CHANGELOG.md
deleted file mode 100644
index b73f322..0000000
--- a/assets/node_modules/postcss-safe-parser/CHANGELOG.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# Change Log
-This project adheres to [Semantic Versioning](http://semver.org/).
-
-## 4.0.1
-* Remove development file from npm package.
-
-## 4.0
-* Remove Node.js 9 and Node.js 4 support.
-* Remove IE and “dead” browsers from Babel.
-* Use PostCSS 7.0.
-
-## 3.0.1
-* Fix parsing IE filter with missed semicolon.
-
-## 3.0
-* Use PostCSS 6.0.
-* Use `babel-preset-env`.
-
-## 2.0.1
-* Do not fall on colon instead of semicolon in the declaration end.
-
-## 2.0
-* Use PostCSS 5.2 core tokenizer.
-
-## 1.0.7
-* Parse new lines according W3C CSS syntax specification.
-
-## 1.0.6
-* Fix package dependencies.
-
-## 1.0.5
-* Fix CSS syntax error position on unclosed quotes.
-
-## 1.0.4
-* Fix wrong `main` in `package.json`.
-
-## 1.0.3
-* Remove Babel from dependencies (by Jonny Buchanan).
-
-## 1.0.2
-* Clean code for PostCSS 5.0.13 internal changes.
-* Use Babel 6.
-
-## 1.0.1
-* Fix `url()` parsing.
-
-## 1.0
-* Initial release from PostCSS sources.
diff --git a/assets/node_modules/postcss-safe-parser/LICENSE b/assets/node_modules/postcss-safe-parser/LICENSE
deleted file mode 100644
index da057b4..0000000
--- a/assets/node_modules/postcss-safe-parser/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright 2013 Andrey Sitnik <andrey@sitnik.ru>
-
-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/assets/node_modules/postcss-safe-parser/README.md b/assets/node_modules/postcss-safe-parser/README.md
deleted file mode 100644
index 0b51627..0000000
--- a/assets/node_modules/postcss-safe-parser/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# PostCSS Safe Parser [![Build Status][ci-img]][ci]
-
-<img align="right" width="95" height="95"
- title="Philosopher’s stone, logo of PostCSS"
- src="http://postcss.github.io/postcss/logo.svg">
-
-A fault-tolerant CSS parser for [PostCSS], which will find & fix syntax errors,
-capable of parsing any input. It is useful for:
-
-* Parse legacy code with many hacks. For example, it can parse all examples
- from [Browserhacks].
-* Works with demo tools with live input like [Autoprefixer demo].
-
-[Autoprefixer demo]: http://simevidas.jsbin.com/gufoko/quiet
-[Browserhacks]: http://browserhacks.com/
-[PostCSS]: https://github.com/postcss/postcss
-[ci-img]: https://img.shields.io/travis/postcss/postcss-safe-parser.svg
-[ci]: https://travis-ci.org/postcss/postcss-safe-parser
-
-<a href="https://evilmartians.com/?utm_source=postcss">
-<img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg" alt="Sponsored by Evil Martians" width="236" height="54">
-</a>
-
-## Usage
-
-```js
-var safe = require('postcss-safe-parser');
-var badCss = 'a {';
-
-postcss(plugins).process(badCss, { parser: safe }).then(function (result) {
- result.css //= 'a {}'
-});
-```
diff --git a/assets/node_modules/postcss-safe-parser/lib/safe-parse.js b/assets/node_modules/postcss-safe-parser/lib/safe-parse.js
deleted file mode 100644
index 0ab4d23..0000000
--- a/assets/node_modules/postcss-safe-parser/lib/safe-parse.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict';
-
-var Input = require('postcss/lib/input');
-
-var SafeParser = require('./safe-parser');
-
-module.exports = function safeParse(css, opts) {
- var input = new Input(css, opts);
-
- var parser = new SafeParser(input);
- parser.parse();
-
- return parser.root;
-};
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNhZmUtcGFyc2UuZXM2Il0sIm5hbWVzIjpbIklucHV0IiwicmVxdWlyZSIsIlNhZmVQYXJzZXIiLCJtb2R1bGUiLCJleHBvcnRzIiwic2FmZVBhcnNlIiwiY3NzIiwib3B0cyIsImlucHV0IiwicGFyc2VyIiwicGFyc2UiLCJyb290Il0sIm1hcHBpbmdzIjoiOztBQUFBLElBQU1BLFFBQVFDLFFBQVEsbUJBQVIsQ0FBZDs7QUFFQSxJQUFNQyxhQUFhRCxRQUFRLGVBQVIsQ0FBbkI7O0FBRUFFLE9BQU9DLE9BQVAsR0FBaUIsU0FBU0MsU0FBVCxDQUFvQkMsR0FBcEIsRUFBeUJDLElBQXpCLEVBQStCO0FBQzlDLE1BQU1DLFFBQVEsSUFBSVIsS0FBSixDQUFVTSxHQUFWLEVBQWVDLElBQWYsQ0FBZDs7QUFFQSxNQUFNRSxTQUFTLElBQUlQLFVBQUosQ0FBZU0sS0FBZixDQUFmO0FBQ0FDLFNBQU9DLEtBQVA7O0FBRUEsU0FBT0QsT0FBT0UsSUFBZDtBQUNELENBUEQiLCJmaWxlIjoic2FmZS1wYXJzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IElucHV0ID0gcmVxdWlyZSgncG9zdGNzcy9saWIvaW5wdXQnKVxuXG5jb25zdCBTYWZlUGFyc2VyID0gcmVxdWlyZSgnLi9zYWZlLXBhcnNlcicpXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc2FmZVBhcnNlIChjc3MsIG9wdHMpIHtcbiAgY29uc3QgaW5wdXQgPSBuZXcgSW5wdXQoY3NzLCBvcHRzKVxuXG4gIGNvbnN0IHBhcnNlciA9IG5ldyBTYWZlUGFyc2VyKGlucHV0KVxuICBwYXJzZXIucGFyc2UoKVxuXG4gIHJldHVybiBwYXJzZXIucm9vdFxufVxuIl19
diff --git a/assets/node_modules/postcss-safe-parser/lib/safe-parser.js b/assets/node_modules/postcss-safe-parser/lib/safe-parser.js
deleted file mode 100644
index 926b84c..0000000
--- a/assets/node_modules/postcss-safe-parser/lib/safe-parser.js
+++ /dev/null
@@ -1,106 +0,0 @@
-'use strict';
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var tokenizer = require('postcss/lib/tokenize');
-var Comment = require('postcss/lib/comment');
-var Parser = require('postcss/lib/parser');
-
-var SafeParser = function (_Parser) {
- _inherits(SafeParser, _Parser);
-
- function SafeParser() {
- _classCallCheck(this, SafeParser);
-
- return _possibleConstructorReturn(this, _Parser.apply(this, arguments));
- }
-
- SafeParser.prototype.createTokenizer = function createTokenizer() {
- this.tokenizer = tokenizer(this.input, { ignoreErrors: true });
- };
-
- SafeParser.prototype.comment = function comment(token) {
- var node = new Comment();
- this.init(node, token[2], token[3]);
- node.source.end = { line: token[4], column: token[5] };
-
- var text = token[1].slice(2);
- if (text.slice(-2) === '*/') text = text.slice(0, -2);
-
- if (/^\s*$/.test(text)) {
- node.text = '';
- node.raws.left = text;
- node.raws.right = '';
- } else {
- var match = text.match(/^(\s*)([^]*[^\s])(\s*)$/);
- node.text = match[2];
- node.raws.left = match[1];
- node.raws.right = match[3];
- }
- };
-
- SafeParser.prototype.decl = function decl(tokens) {
- if (tokens.length > 1) {
- _Parser.prototype.decl.call(this, tokens);
- }
- };
-
- SafeParser.prototype.unclosedBracket = function unclosedBracket() {};
-
- SafeParser.prototype.unknownWord = function unknownWord(tokens) {
- this.spaces += tokens.map(function (i) {
- return i[1];
- }).join('');
- };
-
- SafeParser.prototype.unexpectedClose = function unexpectedClose() {
- this.current.raws.after += '}';
- };
-
- SafeParser.prototype.doubleColon = function doubleColon() {};
-
- SafeParser.prototype.unnamedAtrule = function unnamedAtrule(node) {
- node.name = '';
- };
-
- SafeParser.prototype.precheckMissedSemicolon = function precheckMissedSemicolon(tokens) {
- var colon = this.colon(tokens);
- if (colon === false) return;
-
- var split = void 0;
- for (split = colon - 1; split >= 0; split--) {
- if (tokens[split][0] === 'word') break;
- }
- for (split -= 1; split >= 0; split--) {
- if (tokens[split][0] !== 'space') {
- split += 1;
- break;
- }
- }
- var other = tokens.splice(split, tokens.length - split);
- this.decl(other);
- };
-
- SafeParser.prototype.checkMissedSemicolon = function checkMissedSemicolon() {};
-
- SafeParser.prototype.endFile = function endFile() {
- if (this.current.nodes && this.current.nodes.length) {
- this.current.raws.semicolon = this.semicolon;
- }
- this.current.raws.after = (this.current.raws.after || '') + this.spaces;
-
- while (this.current.parent) {
- this.current = this.current.parent;
- this.current.raws.after = '';
- }
- };
-
- return SafeParser;
-}(Parser);
-
-module.exports = SafeParser;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNhZmUtcGFyc2VyLmVzNiJdLCJuYW1lcyI6WyJ0b2tlbml6ZXIiLCJyZXF1aXJlIiwiQ29tbWVudCIsIlBhcnNlciIsIlNhZmVQYXJzZXIiLCJjcmVhdGVUb2tlbml6ZXIiLCJpbnB1dCIsImlnbm9yZUVycm9ycyIsImNvbW1lbnQiLCJ0b2tlbiIsIm5vZGUiLCJpbml0Iiwic291cmNlIiwiZW5kIiwibGluZSIsImNvbHVtbiIsInRleHQiLCJzbGljZSIsInRlc3QiLCJyYXdzIiwibGVmdCIsInJpZ2h0IiwibWF0Y2giLCJkZWNsIiwidG9rZW5zIiwibGVuZ3RoIiwidW5jbG9zZWRCcmFja2V0IiwidW5rbm93bldvcmQiLCJzcGFjZXMiLCJtYXAiLCJpIiwiam9pbiIsInVuZXhwZWN0ZWRDbG9zZSIsImN1cnJlbnQiLCJhZnRlciIsImRvdWJsZUNvbG9uIiwidW5uYW1lZEF0cnVsZSIsIm5hbWUiLCJwcmVjaGVja01pc3NlZFNlbWljb2xvbiIsImNvbG9uIiwic3BsaXQiLCJvdGhlciIsInNwbGljZSIsImNoZWNrTWlzc2VkU2VtaWNvbG9uIiwiZW5kRmlsZSIsIm5vZGVzIiwic2VtaWNvbG9uIiwicGFyZW50IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFNQSxZQUFZQyxRQUFRLHNCQUFSLENBQWxCO0FBQ0EsSUFBTUMsVUFBVUQsUUFBUSxxQkFBUixDQUFoQjtBQUNBLElBQU1FLFNBQVNGLFFBQVEsb0JBQVIsQ0FBZjs7SUFFTUcsVTs7Ozs7Ozs7O3VCQUNKQyxlLDhCQUFtQjtBQUNqQixTQUFLTCxTQUFMLEdBQWlCQSxVQUFVLEtBQUtNLEtBQWYsRUFBc0IsRUFBRUMsY0FBYyxJQUFoQixFQUF0QixDQUFqQjtBQUNELEc7O3VCQUVEQyxPLG9CQUFTQyxLLEVBQU87QUFDZCxRQUFNQyxPQUFPLElBQUlSLE9BQUosRUFBYjtBQUNBLFNBQUtTLElBQUwsQ0FBVUQsSUFBVixFQUFnQkQsTUFBTSxDQUFOLENBQWhCLEVBQTBCQSxNQUFNLENBQU4sQ0FBMUI7QUFDQUMsU0FBS0UsTUFBTCxDQUFZQyxHQUFaLEdBQWtCLEVBQUVDLE1BQU1MLE1BQU0sQ0FBTixDQUFSLEVBQWtCTSxRQUFRTixNQUFNLENBQU4sQ0FBMUIsRUFBbEI7O0FBRUEsUUFBSU8sT0FBT1AsTUFBTSxDQUFOLEVBQVNRLEtBQVQsQ0FBZSxDQUFmLENBQVg7QUFDQSxRQUFJRCxLQUFLQyxLQUFMLENBQVcsQ0FBQyxDQUFaLE1BQW1CLElBQXZCLEVBQTZCRCxPQUFPQSxLQUFLQyxLQUFMLENBQVcsQ0FBWCxFQUFjLENBQUMsQ0FBZixDQUFQOztBQUU3QixRQUFJLFFBQVFDLElBQVIsQ0FBYUYsSUFBYixDQUFKLEVBQXdCO0FBQ3RCTixXQUFLTSxJQUFMLEdBQVksRUFBWjtBQUNBTixXQUFLUyxJQUFMLENBQVVDLElBQVYsR0FBaUJKLElBQWpCO0FBQ0FOLFdBQUtTLElBQUwsQ0FBVUUsS0FBVixHQUFrQixFQUFsQjtBQUNELEtBSkQsTUFJTztBQUNMLFVBQU1DLFFBQVFOLEtBQUtNLEtBQUwsQ0FBVyx5QkFBWCxDQUFkO0FBQ0FaLFdBQUtNLElBQUwsR0FBWU0sTUFBTSxDQUFOLENBQVo7QUFDQVosV0FBS1MsSUFBTCxDQUFVQyxJQUFWLEdBQWlCRSxNQUFNLENBQU4sQ0FBakI7QUFDQVosV0FBS1MsSUFBTCxDQUFVRSxLQUFWLEdBQWtCQyxNQUFNLENBQU4sQ0FBbEI7QUFDRDtBQUNGLEc7O3VCQUVEQyxJLGlCQUFNQyxNLEVBQVE7QUFDWixRQUFJQSxPQUFPQyxNQUFQLEdBQWdCLENBQXBCLEVBQXVCO0FBQ3JCLHdCQUFNRixJQUFOLFlBQVdDLE1BQVg7QUFDRDtBQUNGLEc7O3VCQUVERSxlLDhCQUFtQixDQUFHLEM7O3VCQUV0QkMsVyx3QkFBYUgsTSxFQUFRO0FBQ25CLFNBQUtJLE1BQUwsSUFBZUosT0FBT0ssR0FBUCxDQUFXO0FBQUEsYUFBS0MsRUFBRSxDQUFGLENBQUw7QUFBQSxLQUFYLEVBQXNCQyxJQUF0QixDQUEyQixFQUEzQixDQUFmO0FBQ0QsRzs7dUJBRURDLGUsOEJBQW1CO0FBQ2pCLFNBQUtDLE9BQUwsQ0FBYWQsSUFBYixDQUFrQmUsS0FBbEIsSUFBMkIsR0FBM0I7QUFDRCxHOzt1QkFFREMsVywwQkFBZSxDQUFHLEM7O3VCQUVsQkMsYSwwQkFBZTFCLEksRUFBTTtBQUNuQkEsU0FBSzJCLElBQUwsR0FBWSxFQUFaO0FBQ0QsRzs7dUJBRURDLHVCLG9DQUF5QmQsTSxFQUFRO0FBQy9CLFFBQU1lLFFBQVEsS0FBS0EsS0FBTCxDQUFXZixNQUFYLENBQWQ7QUFDQSxRQUFJZSxVQUFVLEtBQWQsRUFBcUI7O0FBRXJCLFFBQUlDLGNBQUo7QUFDQSxTQUFLQSxRQUFRRCxRQUFRLENBQXJCLEVBQXdCQyxTQUFTLENBQWpDLEVBQW9DQSxPQUFwQyxFQUE2QztBQUMzQyxVQUFJaEIsT0FBT2dCLEtBQVAsRUFBYyxDQUFkLE1BQXFCLE1BQXpCLEVBQWlDO0FBQ2xDO0FBQ0QsU0FBS0EsU0FBUyxDQUFkLEVBQWlCQSxTQUFTLENBQTFCLEVBQTZCQSxPQUE3QixFQUFzQztBQUNwQyxVQUFJaEIsT0FBT2dCLEtBQVAsRUFBYyxDQUFkLE1BQXFCLE9BQXpCLEVBQWtDO0FBQ2hDQSxpQkFBUyxDQUFUO0FBQ0E7QUFDRDtBQUNGO0FBQ0QsUUFBTUMsUUFBUWpCLE9BQU9rQixNQUFQLENBQWNGLEtBQWQsRUFBcUJoQixPQUFPQyxNQUFQLEdBQWdCZSxLQUFyQyxDQUFkO0FBQ0EsU0FBS2pCLElBQUwsQ0FBVWtCLEtBQVY7QUFDRCxHOzt1QkFFREUsb0IsbUNBQXdCLENBQUcsQzs7dUJBRTNCQyxPLHNCQUFXO0FBQ1QsUUFBSSxLQUFLWCxPQUFMLENBQWFZLEtBQWIsSUFBc0IsS0FBS1osT0FBTCxDQUFhWSxLQUFiLENBQW1CcEIsTUFBN0MsRUFBcUQ7QUFDbkQsV0FBS1EsT0FBTCxDQUFhZCxJQUFiLENBQWtCMkIsU0FBbEIsR0FBOEIsS0FBS0EsU0FBbkM7QUFDRDtBQUNELFNBQUtiLE9BQUwsQ0FBYWQsSUFBYixDQUFrQmUsS0FBbEIsR0FBMEIsQ0FBQyxLQUFLRCxPQUFMLENBQWFkLElBQWIsQ0FBa0JlLEtBQWxCLElBQTJCLEVBQTVCLElBQWtDLEtBQUtOLE1BQWpFOztBQUVBLFdBQU8sS0FBS0ssT0FBTCxDQUFhYyxNQUFwQixFQUE0QjtBQUMxQixXQUFLZCxPQUFMLEdBQWUsS0FBS0EsT0FBTCxDQUFhYyxNQUE1QjtBQUNBLFdBQUtkLE9BQUwsQ0FBYWQsSUFBYixDQUFrQmUsS0FBbEIsR0FBMEIsRUFBMUI7QUFDRDtBQUNGLEc7OztFQTdFc0IvQixNOztBQWdGekI2QyxPQUFPQyxPQUFQLEdBQWlCN0MsVUFBakIiLCJmaWxlIjoic2FmZS1wYXJzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB0b2tlbml6ZXIgPSByZXF1aXJlKCdwb3N0Y3NzL2xpYi90b2tlbml6ZScpXG5jb25zdCBDb21tZW50ID0gcmVxdWlyZSgncG9zdGNzcy9saWIvY29tbWVudCcpXG5jb25zdCBQYXJzZXIgPSByZXF1aXJlKCdwb3N0Y3NzL2xpYi9wYXJzZXInKVxuXG5jbGFzcyBTYWZlUGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgY3JlYXRlVG9rZW5pemVyICgpIHtcbiAgICB0aGlzLnRva2VuaXplciA9IHRva2VuaXplcih0aGlzLmlucHV0LCB7IGlnbm9yZUVycm9yczogdHJ1ZSB9KVxuICB9XG5cbiAgY29tbWVudCAodG9rZW4pIHtcbiAgICBjb25zdCBub2RlID0gbmV3IENvbW1lbnQoKVxuICAgIHRoaXMuaW5pdChub2RlLCB0b2tlblsyXSwgdG9rZW5bM10pXG4gICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiB0b2tlbls0XSwgY29sdW1uOiB0b2tlbls1XSB9XG5cbiAgICBsZXQgdGV4dCA9IHRva2VuWzFdLnNsaWNlKDIpXG4gICAgaWYgKHRleHQuc2xpY2UoLTIpID09PSAnKi8nKSB0ZXh0ID0gdGV4dC5zbGljZSgwLCAtMilcblxuICAgIGlmICgvXlxccyokLy50ZXN0KHRleHQpKSB7XG4gICAgICBub2RlLnRleHQgPSAnJ1xuICAgICAgbm9kZS5yYXdzLmxlZnQgPSB0ZXh0XG4gICAgICBub2RlLnJhd3MucmlnaHQgPSAnJ1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtYXRjaCA9IHRleHQubWF0Y2goL14oXFxzKikoW15dKlteXFxzXSkoXFxzKikkLylcbiAgICAgIG5vZGUudGV4dCA9IG1hdGNoWzJdXG4gICAgICBub2RlLnJhd3MubGVmdCA9IG1hdGNoWzFdXG4gICAgICBub2RlLnJhd3MucmlnaHQgPSBtYXRjaFszXVxuICAgIH1cbiAgfVxuXG4gIGRlY2wgKHRva2Vucykge1xuICAgIGlmICh0b2tlbnMubGVuZ3RoID4gMSkge1xuICAgICAgc3VwZXIuZGVjbCh0b2tlbnMpXG4gICAgfVxuICB9XG5cbiAgdW5jbG9zZWRCcmFja2V0ICgpIHsgfVxuXG4gIHVua25vd25Xb3JkICh0b2tlbnMpIHtcbiAgICB0aGlzLnNwYWNlcyArPSB0b2tlbnMubWFwKGkgPT4gaVsxXSkuam9pbignJylcbiAgfVxuXG4gIHVuZXhwZWN0ZWRDbG9zZSAoKSB7XG4gICAgdGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXIgKz0gJ30nXG4gIH1cblxuICBkb3VibGVDb2xvbiAoKSB7IH1cblxuICB1bm5hbWVkQXRydWxlIChub2RlKSB7XG4gICAgbm9kZS5uYW1lID0gJydcbiAgfVxuXG4gIHByZWNoZWNrTWlzc2VkU2VtaWNvbG9uICh0b2tlbnMpIHtcbiAgICBjb25zdCBjb2xvbiA9IHRoaXMuY29sb24odG9rZW5zKVxuICAgIGlmIChjb2xvbiA9PT0gZmFsc2UpIHJldHVyblxuXG4gICAgbGV0IHNwbGl0XG4gICAgZm9yIChzcGxpdCA9IGNvbG9uIC0gMTsgc3BsaXQgPj0gMDsgc3BsaXQtLSkge1xuICAgICAgaWYgKHRva2Vuc1tzcGxpdF1bMF0gPT09ICd3b3JkJykgYnJlYWtcbiAgICB9XG4gICAgZm9yIChzcGxpdCAtPSAxOyBzcGxpdCA+PSAwOyBzcGxpdC0tKSB7XG4gICAgICBpZiAodG9rZW5zW3NwbGl0XVswXSAhPT0gJ3NwYWNlJykge1xuICAgICAgICBzcGxpdCArPSAxXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG90aGVyID0gdG9rZW5zLnNwbGljZShzcGxpdCwgdG9rZW5zLmxlbmd0aCAtIHNwbGl0KVxuICAgIHRoaXMuZGVjbChvdGhlcilcbiAgfVxuXG4gIGNoZWNrTWlzc2VkU2VtaWNvbG9uICgpIHsgfVxuXG4gIGVuZEZpbGUgKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnQubm9kZXMgJiYgdGhpcy5jdXJyZW50Lm5vZGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5jdXJyZW50LnJhd3Muc2VtaWNvbG9uID0gdGhpcy5zZW1pY29sb25cbiAgICB9XG4gICAgdGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXIgPSAodGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXIgfHwgJycpICsgdGhpcy5zcGFjZXNcblxuICAgIHdoaWxlICh0aGlzLmN1cnJlbnQucGFyZW50KSB7XG4gICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLmN1cnJlbnQucGFyZW50XG4gICAgICB0aGlzLmN1cnJlbnQucmF3cy5hZnRlciA9ICcnXG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2FmZVBhcnNlclxuIl19
diff --git a/assets/node_modules/postcss-safe-parser/package.json b/assets/node_modules/postcss-safe-parser/package.json
deleted file mode 100644
index 88f5b64..0000000
--- a/assets/node_modules/postcss-safe-parser/package.json
+++ /dev/null
@@ -1,107 +0,0 @@
-{
- "name": "postcss-safe-parser",
- "version": "4.0.1",
- "description": "Fault-tolerant CSS parser for PostCSS",
- "keywords": [
- "css",
- "postcss",
- "postcss-syntax",
- "parser",
- "fault tolerant"
- ],
- "author": "Andrey Sitnik <andrey@sitnik.ru>",
- "license": "MIT",
- "repository": "postcss/postcss-safe-parser",
- "engines": {
- "node": ">=6.0.0"
- },
- "dependencies": {
- "postcss": "^7.0.0"
- },
- "devDependencies": {
- "babel-core": "^6.26.3",
- "babel-eslint": "^8.2.6",
- "babel-plugin-add-module-exports": "^0.2.1",
- "babel-plugin-precompile-charcodes": "^1.1.0",
- "babel-preset-env": "^1.7.0",
- "del": "^3.0.0",
- "eslint": "^5.1.0",
- "eslint-config-logux": "^23.0.2",
- "eslint-config-postcss": "^3.0.2",
- "eslint-config-standard": "^11.0.0",
- "eslint-plugin-import": "^2.13.0",
- "eslint-plugin-jest": "^21.17.0",
- "eslint-plugin-node": "^6.0.1",
- "eslint-plugin-promise": "^3.8.0",
- "eslint-plugin-security": "^1.4.0",
- "eslint-plugin-standard": "^3.1.0",
- "gulp": "^3.9.1",
- "gulp-babel": "^7.0.1",
- "gulp-changed": "^3.2.0",
- "gulp-eslint": "^5.0.0",
- "gulp-jest": "^4.0.2",
- "gulp-sourcemaps": "^2.6.4",
- "jest": "^23.4.1",
- "jest-cli": "^23.4.1",
- "lint-staged": "^7.2.0",
- "postcss-parser-tests": "^6.3.0",
- "pre-commit": "^1.1.3",
- "run-sequence": "^2.2.1"
- },
- "scripts": {
- "lint-staged": "lint-staged",
- "test": "gulp"
- },
- "eslintConfig": {
- "parser": "babel-eslint",
- "extends": "eslint-config-postcss",
- "overrides": [
- {
- "files": [
- "gulpfile.js"
- ],
- "rules": {
- "node/no-unpublished-require": "off",
- "global-require": "off"
- }
- }
- ]
- },
- "jest": {
- "testEnvironment": "node",
- "modulePathIgnorePatterns": [
- "<rootDir>/build"
- ]
- },
- "babel": {
- "presets": [
- [
- "env",
- {
- "targets": {
- "browsers": [
- "last 2 version",
- "not dead",
- "not Explorer 11",
- "not ExplorerMobile 11"
- ],
- "node": 6
- },
- "loose": true
- }
- ]
- ],
- "plugins": [
- "add-module-exports",
- "precompile-charcodes"
- ]
- },
- "main": "lib/safe-parse",
- "lint-staged": {
- "test/*.js": "eslint",
- "lib/*.es6": "eslint"
- },
- "pre-commit": [
- "lint-staged"
- ]
-}
diff --git a/assets/node_modules/postcss-sass/CHANGELOG.md b/assets/node_modules/postcss-sass/CHANGELOG.md
deleted file mode 100644
index c856a16..0000000
--- a/assets/node_modules/postcss-sass/CHANGELOG.md
+++ /dev/null
@@ -1,43 +0,0 @@
-## 0.1.0
-* Initial release.
-* Basic Sass syntax support. Now supporting nesting and pseudo-classes.
-
-## 0.2.0
-* Fixed nesting.
-* Variables, comments, '!important' support.
-* Added Stringifier.
-
-## 0.3.0
-* Refactoring (@sdwvit).
-* List/map.
-* Loop.
-* Move to ES6 syntax (@gucong3000).
-* Test cases for `stylelint` (@gucong3000).
-* Multiline comments (@gucong3000).
-* Interpolation.
-
-## 0.3.1
-* Dependencies update (postcss, eslint, jest, postcss-parser-tests, postcss-scss).
-* `hoek` dependency security fix.
-
-## 0.3.2
-* Fix percentage unit for value of property (@renataogarcia).
-
-## 0.3.3
-* Updated dependencies.
-
-## 0.3.4
-* Added `source` and `parent` fields to comment node.
-
-## 0.3.5
-* Minor updates in comment node.
-
-## 0.4.0
-* Added support for media queries.
-* Updated dependencies.
-
-## 0.4.1
-* Return null if node in `process` method didn't find.
-
-## 0.4.2
-* Added ignoring of unsupported rules which starts from `@` \ No newline at end of file
diff --git a/assets/node_modules/postcss-sass/LICENSE b/assets/node_modules/postcss-sass/LICENSE
deleted file mode 100644
index ecd8ef5..0000000
--- a/assets/node_modules/postcss-sass/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright 2016 Oleh Aloshkin <olegaleshkin@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/assets/node_modules/postcss-sass/README.md b/assets/node_modules/postcss-sass/README.md
deleted file mode 100644
index c5ec399..0000000
--- a/assets/node_modules/postcss-sass/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# postcss-sass
-
-[![Build Status](https://travis-ci.org/AleshaOleg/postcss-sass.svg?branch=master)](https://travis-ci.org/AleshaOleg/postcss-sass) [![Coverage Status](https://coveralls.io/repos/github/AleshaOleg/postcss-sass/badge.svg)](https://coveralls.io/github/AleshaOleg/postcss-sass) [![Greenkeeper badge](https://badges.greenkeeper.io/AleshaOleg/postcss-sass.svg)](https://greenkeeper.io/) [![Cult Of Martians](http://cultofmartians.com/assets/badges/badge.svg)](http://cultofmartians.com/tasks/postcss-sass.html)
-
-A [Sass](http://sass-lang.com/) parser for [PostCSS](https://github.com/postcss/postcss), using [gonzales-pe](https://github.com/tonyganch/gonzales-pe).
-
-**Not all Sass syntax supported. Parser under development.**
-
-**This module does not compile Sass.** It simply parses mixins as custom at-rules & variables as properties, so that PostCSS plugins can then transform Sass source code alongside CSS.
-
-## Install
-`npm i postcss-sass --save`
-
-## Usage
-```js
-var postcssSass = require("postcss-sass");
-
-postcss(plugins).process(sass, { syntax: postcssSass }).then(function (result) {
- result.content // Sass with transformations
-});
-```
diff --git a/assets/node_modules/postcss-sass/index.js b/assets/node_modules/postcss-sass/index.js
deleted file mode 100644
index a23ad4d..0000000
--- a/assets/node_modules/postcss-sass/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-"use strict";
-
-var parse = require('./parse');
-
-var stringify = require('./stringify');
-
-module.exports = {
- parse: parse,
- stringify: stringify
-};
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmVzNiJdLCJuYW1lcyI6WyJwYXJzZSIsInJlcXVpcmUiLCJzdHJpbmdpZnkiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7O0FBQ0EsSUFBTUMsU0FBUyxHQUFHRCxPQUFPLENBQUMsYUFBRCxDQUF6Qjs7QUFDQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2ZKLEVBQUFBLEtBQUssRUFBTEEsS0FEZTtBQUVmRSxFQUFBQSxTQUFTLEVBQVRBO0FBRmUsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKVxuY29uc3Qgc3RyaW5naWZ5ID0gcmVxdWlyZSgnLi9zdHJpbmdpZnknKVxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHBhcnNlLFxuICBzdHJpbmdpZnlcbn1cbiJdfQ== \ No newline at end of file
diff --git a/assets/node_modules/postcss-sass/node_modules/.bin/gonzales b/assets/node_modules/postcss-sass/node_modules/.bin/gonzales
deleted file mode 120000
index bb88453..0000000
--- a/assets/node_modules/postcss-sass/node_modules/.bin/gonzales
+++ /dev/null
@@ -1 +0,0 @@
-../../../gonzales-pe/bin/gonzales.js \ No newline at end of file
diff --git a/assets/node_modules/postcss-sass/package.json b/assets/node_modules/postcss-sass/package.json
deleted file mode 100644
index 6bbac04..0000000
--- a/assets/node_modules/postcss-sass/package.json
+++ /dev/null
@@ -1,119 +0,0 @@
-{
- "name": "postcss-sass",
- "version": "0.4.2",
- "description": "A Sass parser for PostCSS, using gonzales-pe.",
- "keywords": [
- "postcss",
- "css",
- "postcss-plugin",
- "postcss-sass",
- "sass"
- ],
- "author": "Oleh Aloshkin <olegaleshkin@gmail.com>",
- "license": "MIT",
- "repository": "AleshaOleg/postcss-sass",
- "bugs": {
- "url": "https://github.com/AleshaOleg/postcss-sass/issues"
- },
- "homepage": "https://github.com/AleshaOleg/postcss-sass",
- "dependencies": {
- "gonzales-pe": "^4.2.4",
- "postcss": "^7.0.21"
- },
- "devDependencies": {
- "@babel/cli": "^7.5.5",
- "@babel/core": "^7.5.5",
- "@babel/preset-env": "^7.5.5",
- "@logux/eslint-config": "^34.0.0",
- "babel-jest": "^24.9.0",
- "babel-plugin-precompile-charcodes": "^1.1.0",
- "coveralls": "^3.0.3",
- "eslint": "^6.6.0",
- "eslint-config-postcss": "^3.0.7",
- "eslint-config-standard": "^14.1.0",
- "eslint-plugin-import": "^2.18.2",
- "eslint-plugin-import-helpers": "^1.0.2",
- "eslint-plugin-jest": "^23.0.3",
- "eslint-plugin-node": "^10.0.0",
- "eslint-plugin-prefer-let": "^1.0.1",
- "eslint-plugin-promise": "^4.2.1",
- "eslint-plugin-security": "^1.4.0",
- "eslint-plugin-standard": "^4.0.1",
- "eslint-plugin-unicorn": "^12.1.0",
- "greenkeeper-lockfile": "^1.15.1",
- "husky": "^3.0.4",
- "istanbul": "^0.4.5",
- "jest": "^24.9.0",
- "lint-staged": "^9.2.3",
- "postcss-parser-tests": "^6.2.1"
- },
- "scripts": {
- "precommit": "yarn run test && lint-staged",
- "clean": "rm *.js || echo 'Already cleaned'",
- "build": "yarn run clean && babel -s inline -d ./ *.es6",
- "coveralls": "cat ./coverage/lcov.info | ./node_modules/.bin/coveralls",
- "prepublishOnly": "yarn run build && yarn run test",
- "pretest": "eslint *.es6 __tests__",
- "test": "jest"
- },
- "eslintConfig": {
- "extends": "eslint-config-postcss",
- "parserOptions": {
- "ecmaVersion": 6,
- "sourceType": "module"
- },
- "settings": {
- "node": {
- "tryExtensions": [
- ".js",
- ".es6"
- ]
- }
- },
- "rules": {
- "max-len": [
- "error",
- 120
- ]
- }
- },
- "jest": {
- "collectCoverage": true,
- "moduleFileExtensions": [
- "es6",
- "js",
- "json"
- ],
- "testPathIgnorePatterns": [
- "<rootDir>/__tests__/utils"
- ],
- "testEnvironment": "node",
- "transform": {
- "^.+\\.es6$": "babel-jest"
- }
- },
- "babel": {
- "presets": [
- [
- "@babel/preset-env",
- {
- "targets": {
- "browsers": "last 1 version",
- "node": 6
- },
- "loose": true
- }
- ]
- ],
- "plugins": [
- "precompile-charcodes"
- ]
- },
- "lint-staged": {
- "*.es6": [
- "eslint --fix",
- "git add"
- ]
- },
- "main": "index.js"
-}
diff --git a/assets/node_modules/postcss-sass/parse.js b/assets/node_modules/postcss-sass/parse.js
deleted file mode 100644
index df20760..0000000
--- a/assets/node_modules/postcss-sass/parse.js
+++ /dev/null
@@ -1,13 +0,0 @@
-"use strict";
-
-var Input = require('postcss/lib/input');
-
-var Parser = require('./parser');
-
-module.exports = function (sass, opts) {
- var input = new Input(sass, opts);
- var parser = new Parser(input);
- parser.parse();
- return parser.root;
-};
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlLmVzNiJdLCJuYW1lcyI6WyJJbnB1dCIsInJlcXVpcmUiLCJQYXJzZXIiLCJtb2R1bGUiLCJleHBvcnRzIiwic2FzcyIsIm9wdHMiLCJpbnB1dCIsInBhcnNlciIsInBhcnNlIiwicm9vdCJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFNQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxtQkFBRCxDQUFyQjs7QUFFQSxJQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUVBRSxNQUFNLENBQUNDLE9BQVAsR0FBaUIsVUFBQ0MsSUFBRCxFQUFPQyxJQUFQLEVBQWdCO0FBQy9CLE1BQUlDLEtBQUssR0FBRyxJQUFJUCxLQUFKLENBQVVLLElBQVYsRUFBZ0JDLElBQWhCLENBQVo7QUFFQSxNQUFJRSxNQUFNLEdBQUcsSUFBSU4sTUFBSixDQUFXSyxLQUFYLENBQWI7QUFDQUMsRUFBQUEsTUFBTSxDQUFDQyxLQUFQO0FBRUEsU0FBT0QsTUFBTSxDQUFDRSxJQUFkO0FBQ0QsQ0FQRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IElucHV0ID0gcmVxdWlyZSgncG9zdGNzcy9saWIvaW5wdXQnKVxuXG5jb25zdCBQYXJzZXIgPSByZXF1aXJlKCcuL3BhcnNlcicpXG5cbm1vZHVsZS5leHBvcnRzID0gKHNhc3MsIG9wdHMpID0+IHtcbiAgbGV0IGlucHV0ID0gbmV3IElucHV0KHNhc3MsIG9wdHMpXG5cbiAgbGV0IHBhcnNlciA9IG5ldyBQYXJzZXIoaW5wdXQpXG4gIHBhcnNlci5wYXJzZSgpXG5cbiAgcmV0dXJuIHBhcnNlci5yb290XG59XG4iXX0= \ No newline at end of file
diff --git a/assets/node_modules/postcss-sass/parser.js b/assets/node_modules/postcss-sass/parser.js
deleted file mode 100644
index cff2c5f..0000000
--- a/assets/node_modules/postcss-sass/parser.js
+++ /dev/null
@@ -1,585 +0,0 @@
-"use strict";
-
-var postcss = require('postcss');
-
-var gonzales = require('gonzales-pe');
-
-var DEFAULT_RAWS_ROOT = {
- before: ''
-};
-var DEFAULT_RAWS_RULE = {
- before: '',
- between: ''
-};
-var DEFAULT_RAWS_DECL = {
- before: '',
- between: '',
- semicolon: false
-};
-var DEFAULT_COMMENT_DECL = {
- before: ''
-};
-var SUPPORTED_AT_KEYWORDS = ['media'];
-
-var SassParser =
-/*#__PURE__*/
-function () {
- function SassParser(input) {
- this.input = input;
- }
-
- var _proto = SassParser.prototype;
-
- _proto.parse = function parse() {
- try {
- this.node = gonzales.parse(this.input.css, {
- syntax: 'sass'
- });
- } catch (error) {
- throw this.input.error(error.message, error.line, 1);
- }
-
- this.lines = this.input.css.match(/^.*(\r?\n|$)/gm);
- this.root = this.stylesheet(this.node);
- };
-
- _proto.extractSource = function extractSource(start, end) {
- var nodeLines = this.lines.slice(start.line - 1, end.line);
- nodeLines[0] = nodeLines[0].substring(start.column - 1);
- var last = nodeLines.length - 1;
- nodeLines[last] = nodeLines[last].substring(0, end.column);
- return nodeLines.join('');
- };
-
- _proto.stylesheet = function stylesheet(node) {
- var _this = this;
-
- // Create and set parameters for Root node
- var root = postcss.root();
- root.source = {
- start: node.start,
- end: node.end,
- input: this.input // Raws for root node
-
- };
- root.raws = {
- semicolon: DEFAULT_RAWS_ROOT.semicolon,
- before: DEFAULT_RAWS_ROOT.before // Store spaces before root (if exist)
-
- };
- this.raws = {
- before: ''
- };
- node.content.forEach(function (contentNode) {
- return _this.process(contentNode, root);
- });
- return root;
- };
-
- _proto.process = function process(node, parent) {
- if (this[node.type]) return this[node.type](node, parent) || null;
- return null;
- };
-
- _proto.ruleset = function ruleset(node, parent) {
- var _this2 = this;
-
- // Loop to find the deepest ruleset node
- this.raws.multiRuleProp = '';
- node.content.forEach(function (contentNode) {
- switch (contentNode.type) {
- case 'block':
- {
- // Create Rule node
- var rule = postcss.rule();
- rule.selector = ''; // Object to store raws for Rule
-
- var ruleRaws = {
- before: _this2.raws.before || DEFAULT_RAWS_RULE.before,
- between: DEFAULT_RAWS_RULE.between // Variable to store spaces and symbols before declaration property
-
- };
- _this2.raws.before = '';
- _this2.raws.comment = false; // Look up throw all nodes in current ruleset node
-
- node.content.filter(function (content) {
- return content.type === 'block';
- }).forEach(function (innerContentNode) {
- return _this2.process(innerContentNode, rule);
- });
-
- if (rule.nodes.length) {
- // Write selector to Rule
- rule.selector = _this2.extractSource(node.start, contentNode.start).slice(0, -1).replace(/\s+$/, function (spaces) {
- ruleRaws.between = spaces;
- return '';
- }); // Set parameters for Rule node
-
- rule.parent = parent;
- rule.source = {
- start: node.start,
- end: node.end,
- input: _this2.input
- };
- rule.raws = ruleRaws;
- parent.nodes.push(rule);
- }
-
- break;
- }
-
- default:
- }
- });
- };
-
- _proto.block = function block(node, parent) {
- var _this3 = this;
-
- // If nested rules exist, wrap current rule in new rule node
- if (this.raws.multiRule) {
- if (this.raws.multiRulePropVariable) {
- this.raws.multiRuleProp = "$" + this.raws.multiRuleProp;
- }
-
- var multiRule = Object.assign(postcss.rule(), {
- source: {
- start: {
- line: node.start.line - 1,
- column: node.start.column
- },
- end: node.end,
- input: this.input
- },
- raws: {
- before: this.raws.before || DEFAULT_RAWS_RULE.before,
- between: DEFAULT_RAWS_RULE.between
- },
- parent: parent,
- selector: (this.raws.customProperty ? '--' : '') + this.raws.multiRuleProp
- });
- parent.push(multiRule);
- parent = multiRule;
- }
-
- this.raws.before = ''; // Looking for declaration node in block node
-
- node.content.forEach(function (contentNode) {
- return _this3.process(contentNode, parent);
- });
-
- if (this.raws.multiRule) {
- this.raws.beforeMulti = this.raws.before;
- }
- };
-
- _proto.declaration = function declaration(node, parent) {
- var _this4 = this;
-
- var isBlockInside = false; // Create Declaration node
-
- var declarationNode = postcss.decl();
- declarationNode.prop = ''; // Object to store raws for Declaration
-
- var declarationRaws = Object.assign(declarationNode.raws, {
- before: this.raws.before || DEFAULT_RAWS_DECL.before,
- between: DEFAULT_RAWS_DECL.between,
- semicolon: DEFAULT_RAWS_DECL.semicolon
- });
- this.raws.property = false;
- this.raws.betweenBefore = false;
- this.raws.comment = false; // Looking for property and value node in declaration node
-
- node.content.forEach(function (contentNode) {
- switch (contentNode.type) {
- case 'customProperty':
- _this4.raws.customProperty = true;
- // fall through
-
- case 'property':
- {
- /* this.raws.property to detect is property is already defined in current object */
- _this4.raws.property = true;
- _this4.raws.multiRuleProp = contentNode.content[0].content;
- _this4.raws.multiRulePropVariable = contentNode.content[0].type === 'variable';
-
- _this4.process(contentNode, declarationNode);
-
- break;
- }
-
- case 'propertyDelimiter':
- {
- if (_this4.raws.property && !_this4.raws.betweenBefore) {
- /* If property is already defined and there's no ':' before it */
- declarationRaws.between += contentNode.content;
- _this4.raws.multiRuleProp += contentNode.content;
- } else {
- /* If ':' goes before property declaration, like :width 100px */
- _this4.raws.betweenBefore = true;
- declarationRaws.before += contentNode.content;
- _this4.raws.multiRuleProp += contentNode.content;
- }
-
- break;
- }
-
- case 'space':
- {
- declarationRaws.between += contentNode.content;
- break;
- }
-
- case 'value':
- {
- // Look up for a value for current property
- switch (contentNode.content[0].type) {
- case 'block':
- {
- isBlockInside = true; // If nested rules exist
-
- if (Array.isArray(contentNode.content[0].content)) {
- _this4.raws.multiRule = true;
- }
-
- _this4.process(contentNode.content[0], parent);
-
- break;
- }
-
- case 'variable':
- {
- declarationNode.value = '$';
-
- _this4.process(contentNode, declarationNode);
-
- break;
- }
-
- case 'color':
- {
- declarationNode.value = '#';
-
- _this4.process(contentNode, declarationNode);
-
- break;
- }
-
- case 'number':
- {
- if (contentNode.content.length > 1) {
- declarationNode.value = contentNode.content.join('');
- } else {
- _this4.process(contentNode, declarationNode);
- }
-
- break;
- }
-
- case 'parentheses':
- {
- declarationNode.value = '(';
-
- _this4.process(contentNode, declarationNode);
-
- break;
- }
-
- default:
- {
- _this4.process(contentNode, declarationNode);
- }
- }
-
- break;
- }
-
- default:
- }
- });
-
- if (!isBlockInside) {
- // Set parameters for Declaration node
- declarationNode.source = {
- start: node.start,
- end: node.end,
- input: this.input
- };
- declarationNode.parent = parent;
- parent.nodes.push(declarationNode);
- }
-
- this.raws.before = '';
- this.raws.customProperty = false;
- this.raws.multiRuleProp = '';
- this.raws.property = false;
- };
-
- _proto.customProperty = function customProperty(node, parent) {
- this.property(node, parent);
- parent.prop = "--" + parent.prop;
- };
-
- _proto.property = function property(node, parent) {
- // Set property for Declaration node
- switch (node.content[0].type) {
- case 'variable':
- {
- parent.prop += '$';
- break;
- }
-
- case 'interpolation':
- {
- this.raws.interpolation = true;
- parent.prop += '#{';
- break;
- }
-
- default:
- }
-
- parent.prop += node.content[0].content;
-
- if (this.raws.interpolation) {
- parent.prop += '}';
- this.raws.interpolation = false;
- }
- };
-
- _proto.value = function value(node, parent) {
- if (!parent.value) {
- parent.value = '';
- } // Set value for Declaration node
-
-
- if (node.content.length) {
- node.content.forEach(function (contentNode) {
- switch (contentNode.type) {
- case 'important':
- {
- parent.raws.important = contentNode.content;
- parent.important = true;
- var match = parent.value.match(/^(.*?)(\s*)$/);
-
- if (match) {
- parent.raws.important = match[2] + parent.raws.important;
- parent.value = match[1];
- }
-
- break;
- }
-
- case 'parentheses':
- {
- parent.value += contentNode.content.join('') + ')';
- break;
- }
-
- case 'percentage':
- {
- parent.value += contentNode.content.join('') + '%';
- break;
- }
-
- default:
- {
- if (contentNode.content.constructor === Array) {
- parent.value += contentNode.content.join('');
- } else {
- parent.value += contentNode.content;
- }
- }
- }
- });
- }
- };
-
- _proto.singlelineComment = function singlelineComment(node, parent) {
- return this.comment(node, parent, true);
- };
-
- _proto.multilineComment = function multilineComment(node, parent) {
- return this.comment(node, parent, false);
- };
-
- _proto.comment = function comment(node, parent, inline) {
- // https://github.com/nodesecurity/eslint-plugin-security#detect-unsafe-regex
- // eslint-disable-next-line security/detect-unsafe-regex
- var text = node.content.match(/^(\s*)((?:\S[\s\S]*?)?)(\s*)$/);
- this.raws.comment = true;
- var comment = Object.assign(postcss.comment(), {
- text: text[2],
- raws: {
- before: this.raws.before || DEFAULT_COMMENT_DECL.before,
- left: text[1],
- right: text[3],
- inline: inline
- },
- source: {
- start: {
- line: node.start.line,
- column: node.start.column
- },
- end: node.end,
- input: this.input
- },
- parent: parent
- });
-
- if (this.raws.beforeMulti) {
- comment.raws.before += this.raws.beforeMulti;
- this.raws.beforeMulti = undefined;
- }
-
- parent.nodes.push(comment);
- this.raws.before = '';
- };
-
- _proto.space = function space(node, parent) {
- // Spaces before root and rule
- switch (parent.type) {
- case 'root':
- {
- this.raws.before += node.content;
- break;
- }
-
- case 'rule':
- {
- if (this.raws.comment) {
- this.raws.before += node.content;
- } else if (this.raws.loop) {
- parent.selector += node.content;
- } else {
- this.raws.before = (this.raws.before || '\n') + node.content;
- }
-
- break;
- }
-
- default:
- }
- };
-
- _proto.declarationDelimiter = function declarationDelimiter(node) {
- this.raws.before += node.content;
- };
-
- _proto.loop = function loop(node, parent) {
- var _this5 = this;
-
- var loop = postcss.rule();
- this.raws.comment = false;
- this.raws.multiRule = false;
- this.raws.loop = true;
- loop.selector = '';
- loop.raws = {
- before: this.raws.before || DEFAULT_RAWS_RULE.before,
- between: DEFAULT_RAWS_RULE.between
- };
-
- if (this.raws.beforeMulti) {
- loop.raws.before += this.raws.beforeMulti;
- this.raws.beforeMulti = undefined;
- }
-
- node.content.forEach(function (contentNode, i) {
- if (node.content[i + 1] && node.content[i + 1].type === 'block') {
- _this5.raws.loop = false;
- }
-
- _this5.process(contentNode, loop);
- });
- parent.nodes.push(loop);
- this.raws.loop = false;
- };
-
- _proto.atrule = function atrule(node, parent) {
- var _this6 = this;
-
- // Skip unsupported @xxx rules
- var supportedNode = node.content[0].content.some(function (contentNode) {
- return SUPPORTED_AT_KEYWORDS.includes(contentNode.content);
- });
- if (!supportedNode) return;
- var atrule = postcss.rule();
- atrule.selector = '';
- atrule.raws = {
- before: this.raws.before || DEFAULT_RAWS_RULE.before,
- between: DEFAULT_RAWS_RULE.between
- };
- node.content.forEach(function (contentNode, i) {
- if (contentNode.type === 'space') {
- var prevNodeType = node.content[i - 1].type;
-
- switch (prevNodeType) {
- case 'atkeyword':
- case 'ident':
- atrule.selector += contentNode.content;
- break;
-
- default:
- }
-
- return;
- }
-
- _this6.process(contentNode, atrule);
- });
- parent.nodes.push(atrule);
- };
-
- _proto.parentheses = function parentheses(node, parent) {
- parent.selector += '(';
- node.content.forEach(function (contentNode) {
- if (typeof contentNode.content === 'string') {
- parent.selector += contentNode.content;
- }
-
- if (typeof contentNode.content === 'object') {
- contentNode.content.forEach(function (childrenContentNode) {
- if (contentNode.type === 'variable') parent.selector += '$';
- parent.selector += childrenContentNode.content;
- });
- }
- });
- parent.selector += ')';
- };
-
- _proto.interpolation = function interpolation(node, parent) {
- var _this7 = this;
-
- parent.selector += '#{';
- node.content.forEach(function (contentNode) {
- _this7.process(contentNode, parent);
- });
- parent.selector += '}';
- };
-
- _proto.atkeyword = function atkeyword(node, parent) {
- parent.selector += "@" + node.content;
- };
-
- _proto.operator = function operator(node, parent) {
- parent.selector += node.content;
- };
-
- _proto.variable = function variable(node, parent) {
- if (this.raws.loop) {
- parent.selector += "$" + node.content[0].content;
- return;
- }
-
- parent.selector += "$" + node.content;
- };
-
- _proto.ident = function ident(node, parent) {
- parent.selector += node.content;
- };
-
- return SassParser;
-}();
-
-module.exports = SassParser;
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci5lczYiXSwibmFtZXMiOlsicG9zdGNzcyIsInJlcXVpcmUiLCJnb256YWxlcyIsIkRFRkFVTFRfUkFXU19ST09UIiwiYmVmb3JlIiwiREVGQVVMVF9SQVdTX1JVTEUiLCJiZXR3ZWVuIiwiREVGQVVMVF9SQVdTX0RFQ0wiLCJzZW1pY29sb24iLCJERUZBVUxUX0NPTU1FTlRfREVDTCIsIlNVUFBPUlRFRF9BVF9LRVlXT1JEUyIsIlNhc3NQYXJzZXIiLCJpbnB1dCIsInBhcnNlIiwibm9kZSIsImNzcyIsInN5bnRheCIsImVycm9yIiwibWVzc2FnZSIsImxpbmUiLCJsaW5lcyIsIm1hdGNoIiwicm9vdCIsInN0eWxlc2hlZXQiLCJleHRyYWN0U291cmNlIiwic3RhcnQiLCJlbmQiLCJub2RlTGluZXMiLCJzbGljZSIsInN1YnN0cmluZyIsImNvbHVtbiIsImxhc3QiLCJsZW5ndGgiLCJqb2luIiwic291cmNlIiwicmF3cyIsImNvbnRlbnQiLCJmb3JFYWNoIiwiY29udGVudE5vZGUiLCJwcm9jZXNzIiwicGFyZW50IiwidHlwZSIsInJ1bGVzZXQiLCJtdWx0aVJ1bGVQcm9wIiwicnVsZSIsInNlbGVjdG9yIiwicnVsZVJhd3MiLCJjb21tZW50IiwiZmlsdGVyIiwiaW5uZXJDb250ZW50Tm9kZSIsIm5vZGVzIiwicmVwbGFjZSIsInNwYWNlcyIsInB1c2giLCJibG9jayIsIm11bHRpUnVsZSIsIm11bHRpUnVsZVByb3BWYXJpYWJsZSIsIk9iamVjdCIsImFzc2lnbiIsImN1c3RvbVByb3BlcnR5IiwiYmVmb3JlTXVsdGkiLCJkZWNsYXJhdGlvbiIsImlzQmxvY2tJbnNpZGUiLCJkZWNsYXJhdGlvbk5vZGUiLCJkZWNsIiwicHJvcCIsImRlY2xhcmF0aW9uUmF3cyIsInByb3BlcnR5IiwiYmV0d2VlbkJlZm9yZSIsIkFycmF5IiwiaXNBcnJheSIsInZhbHVlIiwiaW50ZXJwb2xhdGlvbiIsImltcG9ydGFudCIsImNvbnN0cnVjdG9yIiwic2luZ2xlbGluZUNvbW1lbnQiLCJtdWx0aWxpbmVDb21tZW50IiwiaW5saW5lIiwidGV4dCIsImxlZnQiLCJyaWdodCIsInVuZGVmaW5lZCIsInNwYWNlIiwibG9vcCIsImRlY2xhcmF0aW9uRGVsaW1pdGVyIiwiaSIsImF0cnVsZSIsInN1cHBvcnRlZE5vZGUiLCJzb21lIiwiaW5jbHVkZXMiLCJwcmV2Tm9kZVR5cGUiLCJwYXJlbnRoZXNlcyIsImNoaWxkcmVuQ29udGVudE5vZGUiLCJhdGtleXdvcmQiLCJvcGVyYXRvciIsInZhcmlhYmxlIiwiaWRlbnQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsSUFBTUMsUUFBUSxHQUFHRCxPQUFPLENBQUMsYUFBRCxDQUF4Qjs7QUFFQSxJQUFNRSxpQkFBaUIsR0FBRztBQUN4QkMsRUFBQUEsTUFBTSxFQUFFO0FBRGdCLENBQTFCO0FBSUEsSUFBTUMsaUJBQWlCLEdBQUc7QUFDeEJELEVBQUFBLE1BQU0sRUFBRSxFQURnQjtBQUV4QkUsRUFBQUEsT0FBTyxFQUFFO0FBRmUsQ0FBMUI7QUFLQSxJQUFNQyxpQkFBaUIsR0FBRztBQUN4QkgsRUFBQUEsTUFBTSxFQUFFLEVBRGdCO0FBRXhCRSxFQUFBQSxPQUFPLEVBQUUsRUFGZTtBQUd4QkUsRUFBQUEsU0FBUyxFQUFFO0FBSGEsQ0FBMUI7QUFNQSxJQUFNQyxvQkFBb0IsR0FBRztBQUMzQkwsRUFBQUEsTUFBTSxFQUFFO0FBRG1CLENBQTdCO0FBSUEsSUFBTU0scUJBQXFCLEdBQUcsQ0FDNUIsT0FENEIsQ0FBOUI7O0lBSU1DLFU7OztBQUNKLHNCQUFhQyxLQUFiLEVBQW9CO0FBQ2xCLFNBQUtBLEtBQUwsR0FBYUEsS0FBYjtBQUNEOzs7O1NBRURDLEssR0FBQSxpQkFBUztBQUNQLFFBQUk7QUFDRixXQUFLQyxJQUFMLEdBQVlaLFFBQVEsQ0FBQ1csS0FBVCxDQUFlLEtBQUtELEtBQUwsQ0FBV0csR0FBMUIsRUFBK0I7QUFBRUMsUUFBQUEsTUFBTSxFQUFFO0FBQVYsT0FBL0IsQ0FBWjtBQUNELEtBRkQsQ0FFRSxPQUFPQyxLQUFQLEVBQWM7QUFDZCxZQUFNLEtBQUtMLEtBQUwsQ0FBV0ssS0FBWCxDQUFpQkEsS0FBSyxDQUFDQyxPQUF2QixFQUFnQ0QsS0FBSyxDQUFDRSxJQUF0QyxFQUE0QyxDQUE1QyxDQUFOO0FBQ0Q7O0FBQ0QsU0FBS0MsS0FBTCxHQUFhLEtBQUtSLEtBQUwsQ0FBV0csR0FBWCxDQUFlTSxLQUFmLENBQXFCLGdCQUFyQixDQUFiO0FBQ0EsU0FBS0MsSUFBTCxHQUFZLEtBQUtDLFVBQUwsQ0FBZ0IsS0FBS1QsSUFBckIsQ0FBWjtBQUNELEc7O1NBRURVLGEsR0FBQSx1QkFBZUMsS0FBZixFQUFzQkMsR0FBdEIsRUFBMkI7QUFDekIsUUFBSUMsU0FBUyxHQUFHLEtBQUtQLEtBQUwsQ0FBV1EsS0FBWCxDQUNkSCxLQUFLLENBQUNOLElBQU4sR0FBYSxDQURDLEVBRWRPLEdBQUcsQ0FBQ1AsSUFGVSxDQUFoQjtBQUtBUSxJQUFBQSxTQUFTLENBQUMsQ0FBRCxDQUFULEdBQWVBLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYUUsU0FBYixDQUF1QkosS0FBSyxDQUFDSyxNQUFOLEdBQWUsQ0FBdEMsQ0FBZjtBQUNBLFFBQUlDLElBQUksR0FBR0osU0FBUyxDQUFDSyxNQUFWLEdBQW1CLENBQTlCO0FBQ0FMLElBQUFBLFNBQVMsQ0FBQ0ksSUFBRCxDQUFULEdBQWtCSixTQUFTLENBQUNJLElBQUQsQ0FBVCxDQUFnQkYsU0FBaEIsQ0FBMEIsQ0FBMUIsRUFBNkJILEdBQUcsQ0FBQ0ksTUFBakMsQ0FBbEI7QUFFQSxXQUFPSCxTQUFTLENBQUNNLElBQVYsQ0FBZSxFQUFmLENBQVA7QUFDRCxHOztTQUVEVixVLEdBQUEsb0JBQVlULElBQVosRUFBa0I7QUFBQTs7QUFDaEI7QUFDQSxRQUFJUSxJQUFJLEdBQUd0QixPQUFPLENBQUNzQixJQUFSLEVBQVg7QUFDQUEsSUFBQUEsSUFBSSxDQUFDWSxNQUFMLEdBQWM7QUFDWlQsTUFBQUEsS0FBSyxFQUFFWCxJQUFJLENBQUNXLEtBREE7QUFFWkMsTUFBQUEsR0FBRyxFQUFFWixJQUFJLENBQUNZLEdBRkU7QUFHWmQsTUFBQUEsS0FBSyxFQUFFLEtBQUtBLEtBSEEsQ0FLZDs7QUFMYyxLQUFkO0FBTUFVLElBQUFBLElBQUksQ0FBQ2EsSUFBTCxHQUFZO0FBQ1YzQixNQUFBQSxTQUFTLEVBQUVMLGlCQUFpQixDQUFDSyxTQURuQjtBQUVWSixNQUFBQSxNQUFNLEVBQUVELGlCQUFpQixDQUFDQyxNQUZoQixDQUlaOztBQUpZLEtBQVo7QUFLQSxTQUFLK0IsSUFBTCxHQUFZO0FBQ1YvQixNQUFBQSxNQUFNLEVBQUU7QUFERSxLQUFaO0FBR0FVLElBQUFBLElBQUksQ0FBQ3NCLE9BQUwsQ0FBYUMsT0FBYixDQUFxQixVQUFBQyxXQUFXO0FBQUEsYUFBSSxLQUFJLENBQUNDLE9BQUwsQ0FBYUQsV0FBYixFQUEwQmhCLElBQTFCLENBQUo7QUFBQSxLQUFoQztBQUNBLFdBQU9BLElBQVA7QUFDRCxHOztTQUVEaUIsTyxHQUFBLGlCQUFTekIsSUFBVCxFQUFlMEIsTUFBZixFQUF1QjtBQUNyQixRQUFJLEtBQUsxQixJQUFJLENBQUMyQixJQUFWLENBQUosRUFBcUIsT0FBTyxLQUFLM0IsSUFBSSxDQUFDMkIsSUFBVixFQUFnQjNCLElBQWhCLEVBQXNCMEIsTUFBdEIsS0FBaUMsSUFBeEM7QUFDckIsV0FBTyxJQUFQO0FBQ0QsRzs7U0FFREUsTyxHQUFBLGlCQUFTNUIsSUFBVCxFQUFlMEIsTUFBZixFQUF1QjtBQUFBOztBQUNyQjtBQUNBLFNBQUtMLElBQUwsQ0FBVVEsYUFBVixHQUEwQixFQUExQjtBQUVBN0IsSUFBQUEsSUFBSSxDQUFDc0IsT0FBTCxDQUFhQyxPQUFiLENBQXFCLFVBQUFDLFdBQVcsRUFBSTtBQUNsQyxjQUFRQSxXQUFXLENBQUNHLElBQXBCO0FBQ0UsYUFBSyxPQUFMO0FBQWM7QUFDWjtBQUNBLGdCQUFJRyxJQUFJLEdBQUc1QyxPQUFPLENBQUM0QyxJQUFSLEVBQVg7QUFDQUEsWUFBQUEsSUFBSSxDQUFDQyxRQUFMLEdBQWdCLEVBQWhCLENBSFksQ0FJWjs7QUFDQSxnQkFBSUMsUUFBUSxHQUFHO0FBQ2IxQyxjQUFBQSxNQUFNLEVBQUUsTUFBSSxDQUFDK0IsSUFBTCxDQUFVL0IsTUFBVixJQUFvQkMsaUJBQWlCLENBQUNELE1BRGpDO0FBRWJFLGNBQUFBLE9BQU8sRUFBRUQsaUJBQWlCLENBQUNDLE9BRmQsQ0FLZjs7QUFMZSxhQUFmO0FBTUEsWUFBQSxNQUFJLENBQUM2QixJQUFMLENBQVUvQixNQUFWLEdBQW1CLEVBQW5CO0FBQ0EsWUFBQSxNQUFJLENBQUMrQixJQUFMLENBQVVZLE9BQVYsR0FBb0IsS0FBcEIsQ0FaWSxDQWNaOztBQUNBakMsWUFBQUEsSUFBSSxDQUFDc0IsT0FBTCxDQUNHWSxNQURILENBQ1UsVUFBQVosT0FBTztBQUFBLHFCQUFJQSxPQUFPLENBQUNLLElBQVIsS0FBaUIsT0FBckI7QUFBQSxhQURqQixFQUVHSixPQUZILENBRVcsVUFBQVksZ0JBQWdCO0FBQUEscUJBQUksTUFBSSxDQUFDVixPQUFMLENBQWFVLGdCQUFiLEVBQStCTCxJQUEvQixDQUFKO0FBQUEsYUFGM0I7O0FBSUEsZ0JBQUlBLElBQUksQ0FBQ00sS0FBTCxDQUFXbEIsTUFBZixFQUF1QjtBQUNyQjtBQUNBWSxjQUFBQSxJQUFJLENBQUNDLFFBQUwsR0FBZ0IsTUFBSSxDQUFDckIsYUFBTCxDQUNkVixJQUFJLENBQUNXLEtBRFMsRUFFZGEsV0FBVyxDQUFDYixLQUZFLEVBR2RHLEtBSGMsQ0FHUixDQUhRLEVBR0wsQ0FBQyxDQUhJLEVBR0R1QixPQUhDLENBR08sTUFIUCxFQUdlLFVBQUFDLE1BQU0sRUFBSTtBQUN2Q04sZ0JBQUFBLFFBQVEsQ0FBQ3hDLE9BQVQsR0FBbUI4QyxNQUFuQjtBQUNBLHVCQUFPLEVBQVA7QUFDRCxlQU5lLENBQWhCLENBRnFCLENBU3JCOztBQUNBUixjQUFBQSxJQUFJLENBQUNKLE1BQUwsR0FBY0EsTUFBZDtBQUNBSSxjQUFBQSxJQUFJLENBQUNWLE1BQUwsR0FBYztBQUNaVCxnQkFBQUEsS0FBSyxFQUFFWCxJQUFJLENBQUNXLEtBREE7QUFFWkMsZ0JBQUFBLEdBQUcsRUFBRVosSUFBSSxDQUFDWSxHQUZFO0FBR1pkLGdCQUFBQSxLQUFLLEVBQUUsTUFBSSxDQUFDQTtBQUhBLGVBQWQ7QUFLQWdDLGNBQUFBLElBQUksQ0FBQ1QsSUFBTCxHQUFZVyxRQUFaO0FBQ0FOLGNBQUFBLE1BQU0sQ0FBQ1UsS0FBUCxDQUFhRyxJQUFiLENBQWtCVCxJQUFsQjtBQUNEOztBQUNEO0FBQ0Q7O0FBQ0Q7QUF6Q0Y7QUEyQ0QsS0E1Q0Q7QUE2Q0QsRzs7U0FFRFUsSyxHQUFBLGVBQU94QyxJQUFQLEVBQWEwQixNQUFiLEVBQXFCO0FBQUE7O0FBQ25CO0FBQ0EsUUFBSSxLQUFLTCxJQUFMLENBQVVvQixTQUFkLEVBQXlCO0FBQ3ZCLFVBQUksS0FBS3BCLElBQUwsQ0FBVXFCLHFCQUFkLEVBQXFDO0FBQ25DLGFBQUtyQixJQUFMLENBQVVRLGFBQVYsU0FBK0IsS0FBS1IsSUFBTCxDQUFVUSxhQUF6QztBQUNEOztBQUNELFVBQUlZLFNBQVMsR0FBR0UsTUFBTSxDQUFDQyxNQUFQLENBQWMxRCxPQUFPLENBQUM0QyxJQUFSLEVBQWQsRUFBOEI7QUFDNUNWLFFBQUFBLE1BQU0sRUFBRTtBQUNOVCxVQUFBQSxLQUFLLEVBQUU7QUFDTE4sWUFBQUEsSUFBSSxFQUFFTCxJQUFJLENBQUNXLEtBQUwsQ0FBV04sSUFBWCxHQUFrQixDQURuQjtBQUVMVyxZQUFBQSxNQUFNLEVBQUVoQixJQUFJLENBQUNXLEtBQUwsQ0FBV0s7QUFGZCxXQUREO0FBS05KLFVBQUFBLEdBQUcsRUFBRVosSUFBSSxDQUFDWSxHQUxKO0FBTU5kLFVBQUFBLEtBQUssRUFBRSxLQUFLQTtBQU5OLFNBRG9DO0FBUzVDdUIsUUFBQUEsSUFBSSxFQUFFO0FBQ0ovQixVQUFBQSxNQUFNLEVBQUUsS0FBSytCLElBQUwsQ0FBVS9CLE1BQVYsSUFBb0JDLGlCQUFpQixDQUFDRCxNQUQxQztBQUVKRSxVQUFBQSxPQUFPLEVBQUVELGlCQUFpQixDQUFDQztBQUZ2QixTQVRzQztBQWE1Q2tDLFFBQUFBLE1BQU0sRUFBTkEsTUFiNEM7QUFjNUNLLFFBQUFBLFFBQVEsRUFBRSxDQUFDLEtBQUtWLElBQUwsQ0FBVXdCLGNBQVYsR0FBMkIsSUFBM0IsR0FBa0MsRUFBbkMsSUFBeUMsS0FBS3hCLElBQUwsQ0FBVVE7QUFkakIsT0FBOUIsQ0FBaEI7QUFnQkFILE1BQUFBLE1BQU0sQ0FBQ2EsSUFBUCxDQUFZRSxTQUFaO0FBQ0FmLE1BQUFBLE1BQU0sR0FBR2UsU0FBVDtBQUNEOztBQUVELFNBQUtwQixJQUFMLENBQVUvQixNQUFWLEdBQW1CLEVBQW5CLENBMUJtQixDQTRCbkI7O0FBQ0FVLElBQUFBLElBQUksQ0FBQ3NCLE9BQUwsQ0FBYUMsT0FBYixDQUFxQixVQUFBQyxXQUFXO0FBQUEsYUFBSSxNQUFJLENBQUNDLE9BQUwsQ0FBYUQsV0FBYixFQUEwQkUsTUFBMUIsQ0FBSjtBQUFBLEtBQWhDOztBQUNBLFFBQUksS0FBS0wsSUFBTCxDQUFVb0IsU0FBZCxFQUF5QjtBQUN2QixXQUFLcEIsSUFBTCxDQUFVeUIsV0FBVixHQUF3QixLQUFLekIsSUFBTCxDQUFVL0IsTUFBbEM7QUFDRDtBQUNGLEc7O1NBRUR5RCxXLEdBQUEscUJBQWEvQyxJQUFiLEVBQW1CMEIsTUFBbkIsRUFBMkI7QUFBQTs7QUFDekIsUUFBSXNCLGFBQWEsR0FBRyxLQUFwQixDQUR5QixDQUV6Qjs7QUFDQSxRQUFJQyxlQUFlLEdBQUcvRCxPQUFPLENBQUNnRSxJQUFSLEVBQXRCO0FBQ0FELElBQUFBLGVBQWUsQ0FBQ0UsSUFBaEIsR0FBdUIsRUFBdkIsQ0FKeUIsQ0FNekI7O0FBQ0EsUUFBSUMsZUFBZSxHQUFHVCxNQUFNLENBQUNDLE1BQVAsQ0FBY0ssZUFBZSxDQUFDNUIsSUFBOUIsRUFBb0M7QUFDeEQvQixNQUFBQSxNQUFNLEVBQUUsS0FBSytCLElBQUwsQ0FBVS9CLE1BQVYsSUFBb0JHLGlCQUFpQixDQUFDSCxNQURVO0FBRXhERSxNQUFBQSxPQUFPLEVBQUVDLGlCQUFpQixDQUFDRCxPQUY2QjtBQUd4REUsTUFBQUEsU0FBUyxFQUFFRCxpQkFBaUIsQ0FBQ0M7QUFIMkIsS0FBcEMsQ0FBdEI7QUFNQSxTQUFLMkIsSUFBTCxDQUFVZ0MsUUFBVixHQUFxQixLQUFyQjtBQUNBLFNBQUtoQyxJQUFMLENBQVVpQyxhQUFWLEdBQTBCLEtBQTFCO0FBQ0EsU0FBS2pDLElBQUwsQ0FBVVksT0FBVixHQUFvQixLQUFwQixDQWZ5QixDQWdCekI7O0FBQ0FqQyxJQUFBQSxJQUFJLENBQUNzQixPQUFMLENBQWFDLE9BQWIsQ0FBcUIsVUFBQUMsV0FBVyxFQUFJO0FBQ2xDLGNBQVFBLFdBQVcsQ0FBQ0csSUFBcEI7QUFDRSxhQUFLLGdCQUFMO0FBQ0UsVUFBQSxNQUFJLENBQUNOLElBQUwsQ0FBVXdCLGNBQVYsR0FBMkIsSUFBM0I7QUFDQTs7QUFDRixhQUFLLFVBQUw7QUFBaUI7QUFDZjtBQUNBLFlBQUEsTUFBSSxDQUFDeEIsSUFBTCxDQUFVZ0MsUUFBVixHQUFxQixJQUFyQjtBQUNBLFlBQUEsTUFBSSxDQUFDaEMsSUFBTCxDQUFVUSxhQUFWLEdBQTBCTCxXQUFXLENBQUNGLE9BQVosQ0FBb0IsQ0FBcEIsRUFBdUJBLE9BQWpEO0FBQ0EsWUFBQSxNQUFJLENBQUNELElBQUwsQ0FBVXFCLHFCQUFWLEdBQWtDbEIsV0FBVyxDQUFDRixPQUFaLENBQW9CLENBQXBCLEVBQXVCSyxJQUF2QixLQUFnQyxVQUFsRTs7QUFDQSxZQUFBLE1BQUksQ0FBQ0YsT0FBTCxDQUFhRCxXQUFiLEVBQTBCeUIsZUFBMUI7O0FBQ0E7QUFDRDs7QUFDRCxhQUFLLG1CQUFMO0FBQTBCO0FBQ3hCLGdCQUFJLE1BQUksQ0FBQzVCLElBQUwsQ0FBVWdDLFFBQVYsSUFBc0IsQ0FBQyxNQUFJLENBQUNoQyxJQUFMLENBQVVpQyxhQUFyQyxFQUFvRDtBQUNsRDtBQUNBRixjQUFBQSxlQUFlLENBQUM1RCxPQUFoQixJQUEyQmdDLFdBQVcsQ0FBQ0YsT0FBdkM7QUFDQSxjQUFBLE1BQUksQ0FBQ0QsSUFBTCxDQUFVUSxhQUFWLElBQTJCTCxXQUFXLENBQUNGLE9BQXZDO0FBQ0QsYUFKRCxNQUlPO0FBQ0w7QUFDQSxjQUFBLE1BQUksQ0FBQ0QsSUFBTCxDQUFVaUMsYUFBVixHQUEwQixJQUExQjtBQUNBRixjQUFBQSxlQUFlLENBQUM5RCxNQUFoQixJQUEwQmtDLFdBQVcsQ0FBQ0YsT0FBdEM7QUFDQSxjQUFBLE1BQUksQ0FBQ0QsSUFBTCxDQUFVUSxhQUFWLElBQTJCTCxXQUFXLENBQUNGLE9BQXZDO0FBQ0Q7O0FBQ0Q7QUFDRDs7QUFDRCxhQUFLLE9BQUw7QUFBYztBQUNaOEIsWUFBQUEsZUFBZSxDQUFDNUQsT0FBaEIsSUFBMkJnQyxXQUFXLENBQUNGLE9BQXZDO0FBQ0E7QUFDRDs7QUFDRCxhQUFLLE9BQUw7QUFBYztBQUNaO0FBQ0Esb0JBQVFFLFdBQVcsQ0FBQ0YsT0FBWixDQUFvQixDQUFwQixFQUF1QkssSUFBL0I7QUFDRSxtQkFBSyxPQUFMO0FBQWM7QUFDWnFCLGtCQUFBQSxhQUFhLEdBQUcsSUFBaEIsQ0FEWSxDQUVaOztBQUNBLHNCQUFJTyxLQUFLLENBQUNDLE9BQU4sQ0FBY2hDLFdBQVcsQ0FBQ0YsT0FBWixDQUFvQixDQUFwQixFQUF1QkEsT0FBckMsQ0FBSixFQUFtRDtBQUNqRCxvQkFBQSxNQUFJLENBQUNELElBQUwsQ0FBVW9CLFNBQVYsR0FBc0IsSUFBdEI7QUFDRDs7QUFDRCxrQkFBQSxNQUFJLENBQUNoQixPQUFMLENBQWFELFdBQVcsQ0FBQ0YsT0FBWixDQUFvQixDQUFwQixDQUFiLEVBQXFDSSxNQUFyQzs7QUFDQTtBQUNEOztBQUNELG1CQUFLLFVBQUw7QUFBaUI7QUFDZnVCLGtCQUFBQSxlQUFlLENBQUNRLEtBQWhCLEdBQXdCLEdBQXhCOztBQUNBLGtCQUFBLE1BQUksQ0FBQ2hDLE9BQUwsQ0FBYUQsV0FBYixFQUEwQnlCLGVBQTFCOztBQUNBO0FBQ0Q7O0FBQ0QsbUJBQUssT0FBTDtBQUFjO0FBQ1pBLGtCQUFBQSxlQUFlLENBQUNRLEtBQWhCLEdBQXdCLEdBQXhCOztBQUNBLGtCQUFBLE1BQUksQ0FBQ2hDLE9BQUwsQ0FBYUQsV0FBYixFQUEwQnlCLGVBQTFCOztBQUNBO0FBQ0Q7O0FBQ0QsbUJBQUssUUFBTDtBQUFlO0FBQ2Isc0JBQUl6QixXQUFXLENBQUNGLE9BQVosQ0FBb0JKLE1BQXBCLEdBQTZCLENBQWpDLEVBQW9DO0FBQ2xDK0Isb0JBQUFBLGVBQWUsQ0FBQ1EsS0FBaEIsR0FBd0JqQyxXQUFXLENBQUNGLE9BQVosQ0FBb0JILElBQXBCLENBQXlCLEVBQXpCLENBQXhCO0FBQ0QsbUJBRkQsTUFFTztBQUNMLG9CQUFBLE1BQUksQ0FBQ00sT0FBTCxDQUFhRCxXQUFiLEVBQTBCeUIsZUFBMUI7QUFDRDs7QUFDRDtBQUNEOztBQUNELG1CQUFLLGFBQUw7QUFBb0I7QUFDbEJBLGtCQUFBQSxlQUFlLENBQUNRLEtBQWhCLEdBQXdCLEdBQXhCOztBQUNBLGtCQUFBLE1BQUksQ0FBQ2hDLE9BQUwsQ0FBYUQsV0FBYixFQUEwQnlCLGVBQTFCOztBQUNBO0FBQ0Q7O0FBQ0Q7QUFBUztBQUNQLGtCQUFBLE1BQUksQ0FBQ3hCLE9BQUwsQ0FBYUQsV0FBYixFQUEwQnlCLGVBQTFCO0FBQ0Q7QUFuQ0g7O0FBcUNBO0FBQ0Q7O0FBQ0Q7QUF0RUY7QUF3RUQsS0F6RUQ7O0FBMkVBLFFBQUksQ0FBQ0QsYUFBTCxFQUFvQjtBQUNsQjtBQUNBQyxNQUFBQSxlQUFlLENBQUM3QixNQUFoQixHQUF5QjtBQUN2QlQsUUFBQUEsS0FBSyxFQUFFWCxJQUFJLENBQUNXLEtBRFc7QUFFdkJDLFFBQUFBLEdBQUcsRUFBRVosSUFBSSxDQUFDWSxHQUZhO0FBR3ZCZCxRQUFBQSxLQUFLLEVBQUUsS0FBS0E7QUFIVyxPQUF6QjtBQUtBbUQsTUFBQUEsZUFBZSxDQUFDdkIsTUFBaEIsR0FBeUJBLE1BQXpCO0FBQ0FBLE1BQUFBLE1BQU0sQ0FBQ1UsS0FBUCxDQUFhRyxJQUFiLENBQWtCVSxlQUFsQjtBQUNEOztBQUVELFNBQUs1QixJQUFMLENBQVUvQixNQUFWLEdBQW1CLEVBQW5CO0FBQ0EsU0FBSytCLElBQUwsQ0FBVXdCLGNBQVYsR0FBMkIsS0FBM0I7QUFDQSxTQUFLeEIsSUFBTCxDQUFVUSxhQUFWLEdBQTBCLEVBQTFCO0FBQ0EsU0FBS1IsSUFBTCxDQUFVZ0MsUUFBVixHQUFxQixLQUFyQjtBQUNELEc7O1NBRURSLGMsR0FBQSx3QkFBZ0I3QyxJQUFoQixFQUFzQjBCLE1BQXRCLEVBQThCO0FBQzVCLFNBQUsyQixRQUFMLENBQWNyRCxJQUFkLEVBQW9CMEIsTUFBcEI7QUFDQUEsSUFBQUEsTUFBTSxDQUFDeUIsSUFBUCxVQUFvQnpCLE1BQU0sQ0FBQ3lCLElBQTNCO0FBQ0QsRzs7U0FFREUsUSxHQUFBLGtCQUFVckQsSUFBVixFQUFnQjBCLE1BQWhCLEVBQXdCO0FBQ3RCO0FBQ0EsWUFBUTFCLElBQUksQ0FBQ3NCLE9BQUwsQ0FBYSxDQUFiLEVBQWdCSyxJQUF4QjtBQUNFLFdBQUssVUFBTDtBQUFpQjtBQUNmRCxVQUFBQSxNQUFNLENBQUN5QixJQUFQLElBQWUsR0FBZjtBQUNBO0FBQ0Q7O0FBQ0QsV0FBSyxlQUFMO0FBQXNCO0FBQ3BCLGVBQUs5QixJQUFMLENBQVVxQyxhQUFWLEdBQTBCLElBQTFCO0FBQ0FoQyxVQUFBQSxNQUFNLENBQUN5QixJQUFQLElBQWUsSUFBZjtBQUNBO0FBQ0Q7O0FBQ0Q7QUFWRjs7QUFZQXpCLElBQUFBLE1BQU0sQ0FBQ3lCLElBQVAsSUFBZW5ELElBQUksQ0FBQ3NCLE9BQUwsQ0FBYSxDQUFiLEVBQWdCQSxPQUEvQjs7QUFDQSxRQUFJLEtBQUtELElBQUwsQ0FBVXFDLGFBQWQsRUFBNkI7QUFDM0JoQyxNQUFBQSxNQUFNLENBQUN5QixJQUFQLElBQWUsR0FBZjtBQUNBLFdBQUs5QixJQUFMLENBQVVxQyxhQUFWLEdBQTBCLEtBQTFCO0FBQ0Q7QUFDRixHOztTQUVERCxLLEdBQUEsZUFBT3pELElBQVAsRUFBYTBCLE1BQWIsRUFBcUI7QUFDbkIsUUFBSSxDQUFDQSxNQUFNLENBQUMrQixLQUFaLEVBQW1CO0FBQ2pCL0IsTUFBQUEsTUFBTSxDQUFDK0IsS0FBUCxHQUFlLEVBQWY7QUFDRCxLQUhrQixDQUluQjs7O0FBQ0EsUUFBSXpELElBQUksQ0FBQ3NCLE9BQUwsQ0FBYUosTUFBakIsRUFBeUI7QUFDdkJsQixNQUFBQSxJQUFJLENBQUNzQixPQUFMLENBQWFDLE9BQWIsQ0FBcUIsVUFBQUMsV0FBVyxFQUFJO0FBQ2xDLGdCQUFRQSxXQUFXLENBQUNHLElBQXBCO0FBQ0UsZUFBSyxXQUFMO0FBQWtCO0FBQ2hCRCxjQUFBQSxNQUFNLENBQUNMLElBQVAsQ0FBWXNDLFNBQVosR0FBd0JuQyxXQUFXLENBQUNGLE9BQXBDO0FBQ0FJLGNBQUFBLE1BQU0sQ0FBQ2lDLFNBQVAsR0FBbUIsSUFBbkI7QUFDQSxrQkFBSXBELEtBQUssR0FBR21CLE1BQU0sQ0FBQytCLEtBQVAsQ0FBYWxELEtBQWIsQ0FBbUIsY0FBbkIsQ0FBWjs7QUFDQSxrQkFBSUEsS0FBSixFQUFXO0FBQ1RtQixnQkFBQUEsTUFBTSxDQUFDTCxJQUFQLENBQVlzQyxTQUFaLEdBQXdCcEQsS0FBSyxDQUFDLENBQUQsQ0FBTCxHQUFXbUIsTUFBTSxDQUFDTCxJQUFQLENBQVlzQyxTQUEvQztBQUNBakMsZ0JBQUFBLE1BQU0sQ0FBQytCLEtBQVAsR0FBZWxELEtBQUssQ0FBQyxDQUFELENBQXBCO0FBQ0Q7O0FBQ0Q7QUFDRDs7QUFDRCxlQUFLLGFBQUw7QUFBb0I7QUFDbEJtQixjQUFBQSxNQUFNLENBQUMrQixLQUFQLElBQWdCakMsV0FBVyxDQUFDRixPQUFaLENBQW9CSCxJQUFwQixDQUF5QixFQUF6QixJQUErQixHQUEvQztBQUNBO0FBQ0Q7O0FBQ0QsZUFBSyxZQUFMO0FBQW1CO0FBQ2pCTyxjQUFBQSxNQUFNLENBQUMrQixLQUFQLElBQWdCakMsV0FBVyxDQUFDRixPQUFaLENBQW9CSCxJQUFwQixDQUF5QixFQUF6QixJQUErQixHQUEvQztBQUNBO0FBQ0Q7O0FBQ0Q7QUFBUztBQUNQLGtCQUFJSyxXQUFXLENBQUNGLE9BQVosQ0FBb0JzQyxXQUFwQixLQUFvQ0wsS0FBeEMsRUFBK0M7QUFDN0M3QixnQkFBQUEsTUFBTSxDQUFDK0IsS0FBUCxJQUFnQmpDLFdBQVcsQ0FBQ0YsT0FBWixDQUFvQkgsSUFBcEIsQ0FBeUIsRUFBekIsQ0FBaEI7QUFDRCxlQUZELE1BRU87QUFDTE8sZ0JBQUFBLE1BQU0sQ0FBQytCLEtBQVAsSUFBZ0JqQyxXQUFXLENBQUNGLE9BQTVCO0FBQ0Q7QUFDRjtBQXpCSDtBQTJCRCxPQTVCRDtBQTZCRDtBQUNGLEc7O1NBRUR1QyxpQixHQUFBLDJCQUFtQjdELElBQW5CLEVBQXlCMEIsTUFBekIsRUFBaUM7QUFDL0IsV0FBTyxLQUFLTyxPQUFMLENBQWFqQyxJQUFiLEVBQW1CMEIsTUFBbkIsRUFBMkIsSUFBM0IsQ0FBUDtBQUNELEc7O1NBRURvQyxnQixHQUFBLDBCQUFrQjlELElBQWxCLEVBQXdCMEIsTUFBeEIsRUFBZ0M7QUFDOUIsV0FBTyxLQUFLTyxPQUFMLENBQWFqQyxJQUFiLEVBQW1CMEIsTUFBbkIsRUFBMkIsS0FBM0IsQ0FBUDtBQUNELEc7O1NBRURPLE8sR0FBQSxpQkFBU2pDLElBQVQsRUFBZTBCLE1BQWYsRUFBdUJxQyxNQUF2QixFQUErQjtBQUM3QjtBQUNBO0FBQ0EsUUFBSUMsSUFBSSxHQUFHaEUsSUFBSSxDQUFDc0IsT0FBTCxDQUFhZixLQUFiLENBQW1CLCtCQUFuQixDQUFYO0FBRUEsU0FBS2MsSUFBTCxDQUFVWSxPQUFWLEdBQW9CLElBQXBCO0FBRUEsUUFBSUEsT0FBTyxHQUFHVSxNQUFNLENBQUNDLE1BQVAsQ0FBYzFELE9BQU8sQ0FBQytDLE9BQVIsRUFBZCxFQUFpQztBQUM3QytCLE1BQUFBLElBQUksRUFBRUEsSUFBSSxDQUFDLENBQUQsQ0FEbUM7QUFFN0MzQyxNQUFBQSxJQUFJLEVBQUU7QUFDSi9CLFFBQUFBLE1BQU0sRUFBRSxLQUFLK0IsSUFBTCxDQUFVL0IsTUFBVixJQUFvQkssb0JBQW9CLENBQUNMLE1BRDdDO0FBRUoyRSxRQUFBQSxJQUFJLEVBQUVELElBQUksQ0FBQyxDQUFELENBRk47QUFHSkUsUUFBQUEsS0FBSyxFQUFFRixJQUFJLENBQUMsQ0FBRCxDQUhQO0FBSUpELFFBQUFBLE1BQU0sRUFBTkE7QUFKSSxPQUZ1QztBQVE3QzNDLE1BQUFBLE1BQU0sRUFBRTtBQUNOVCxRQUFBQSxLQUFLLEVBQUU7QUFDTE4sVUFBQUEsSUFBSSxFQUFFTCxJQUFJLENBQUNXLEtBQUwsQ0FBV04sSUFEWjtBQUVMVyxVQUFBQSxNQUFNLEVBQUVoQixJQUFJLENBQUNXLEtBQUwsQ0FBV0s7QUFGZCxTQUREO0FBS05KLFFBQUFBLEdBQUcsRUFBRVosSUFBSSxDQUFDWSxHQUxKO0FBTU5kLFFBQUFBLEtBQUssRUFBRSxLQUFLQTtBQU5OLE9BUnFDO0FBZ0I3QzRCLE1BQUFBLE1BQU0sRUFBTkE7QUFoQjZDLEtBQWpDLENBQWQ7O0FBbUJBLFFBQUksS0FBS0wsSUFBTCxDQUFVeUIsV0FBZCxFQUEyQjtBQUN6QmIsTUFBQUEsT0FBTyxDQUFDWixJQUFSLENBQWEvQixNQUFiLElBQXVCLEtBQUsrQixJQUFMLENBQVV5QixXQUFqQztBQUNBLFdBQUt6QixJQUFMLENBQVV5QixXQUFWLEdBQXdCcUIsU0FBeEI7QUFDRDs7QUFFRHpDLElBQUFBLE1BQU0sQ0FBQ1UsS0FBUCxDQUFhRyxJQUFiLENBQWtCTixPQUFsQjtBQUNBLFNBQUtaLElBQUwsQ0FBVS9CLE1BQVYsR0FBbUIsRUFBbkI7QUFDRCxHOztTQUVEOEUsSyxHQUFBLGVBQU9wRSxJQUFQLEVBQWEwQixNQUFiLEVBQXFCO0FBQ25CO0FBQ0EsWUFBUUEsTUFBTSxDQUFDQyxJQUFmO0FBQ0UsV0FBSyxNQUFMO0FBQWE7QUFDWCxlQUFLTixJQUFMLENBQVUvQixNQUFWLElBQW9CVSxJQUFJLENBQUNzQixPQUF6QjtBQUNBO0FBQ0Q7O0FBQ0QsV0FBSyxNQUFMO0FBQWE7QUFDWCxjQUFJLEtBQUtELElBQUwsQ0FBVVksT0FBZCxFQUF1QjtBQUNyQixpQkFBS1osSUFBTCxDQUFVL0IsTUFBVixJQUFvQlUsSUFBSSxDQUFDc0IsT0FBekI7QUFDRCxXQUZELE1BRU8sSUFBSSxLQUFLRCxJQUFMLENBQVVnRCxJQUFkLEVBQW9CO0FBQ3pCM0MsWUFBQUEsTUFBTSxDQUFDSyxRQUFQLElBQW1CL0IsSUFBSSxDQUFDc0IsT0FBeEI7QUFDRCxXQUZNLE1BRUE7QUFDTCxpQkFBS0QsSUFBTCxDQUFVL0IsTUFBVixHQUFtQixDQUFDLEtBQUsrQixJQUFMLENBQVUvQixNQUFWLElBQW9CLElBQXJCLElBQTZCVSxJQUFJLENBQUNzQixPQUFyRDtBQUNEOztBQUNEO0FBQ0Q7O0FBQ0Q7QUFmRjtBQWlCRCxHOztTQUVEZ0Qsb0IsR0FBQSw4QkFBc0J0RSxJQUF0QixFQUE0QjtBQUMxQixTQUFLcUIsSUFBTCxDQUFVL0IsTUFBVixJQUFvQlUsSUFBSSxDQUFDc0IsT0FBekI7QUFDRCxHOztTQUVEK0MsSSxHQUFBLGNBQU1yRSxJQUFOLEVBQVkwQixNQUFaLEVBQW9CO0FBQUE7O0FBQ2xCLFFBQUkyQyxJQUFJLEdBQUduRixPQUFPLENBQUM0QyxJQUFSLEVBQVg7QUFDQSxTQUFLVCxJQUFMLENBQVVZLE9BQVYsR0FBb0IsS0FBcEI7QUFDQSxTQUFLWixJQUFMLENBQVVvQixTQUFWLEdBQXNCLEtBQXRCO0FBQ0EsU0FBS3BCLElBQUwsQ0FBVWdELElBQVYsR0FBaUIsSUFBakI7QUFDQUEsSUFBQUEsSUFBSSxDQUFDdEMsUUFBTCxHQUFnQixFQUFoQjtBQUNBc0MsSUFBQUEsSUFBSSxDQUFDaEQsSUFBTCxHQUFZO0FBQ1YvQixNQUFBQSxNQUFNLEVBQUUsS0FBSytCLElBQUwsQ0FBVS9CLE1BQVYsSUFBb0JDLGlCQUFpQixDQUFDRCxNQURwQztBQUVWRSxNQUFBQSxPQUFPLEVBQUVELGlCQUFpQixDQUFDQztBQUZqQixLQUFaOztBQUlBLFFBQUksS0FBSzZCLElBQUwsQ0FBVXlCLFdBQWQsRUFBMkI7QUFDekJ1QixNQUFBQSxJQUFJLENBQUNoRCxJQUFMLENBQVUvQixNQUFWLElBQW9CLEtBQUsrQixJQUFMLENBQVV5QixXQUE5QjtBQUNBLFdBQUt6QixJQUFMLENBQVV5QixXQUFWLEdBQXdCcUIsU0FBeEI7QUFDRDs7QUFDRG5FLElBQUFBLElBQUksQ0FBQ3NCLE9BQUwsQ0FBYUMsT0FBYixDQUFxQixVQUFDQyxXQUFELEVBQWMrQyxDQUFkLEVBQW9CO0FBQ3ZDLFVBQUl2RSxJQUFJLENBQUNzQixPQUFMLENBQWFpRCxDQUFDLEdBQUcsQ0FBakIsS0FBdUJ2RSxJQUFJLENBQUNzQixPQUFMLENBQWFpRCxDQUFDLEdBQUcsQ0FBakIsRUFBb0I1QyxJQUFwQixLQUE2QixPQUF4RCxFQUFpRTtBQUMvRCxRQUFBLE1BQUksQ0FBQ04sSUFBTCxDQUFVZ0QsSUFBVixHQUFpQixLQUFqQjtBQUNEOztBQUNELE1BQUEsTUFBSSxDQUFDNUMsT0FBTCxDQUFhRCxXQUFiLEVBQTBCNkMsSUFBMUI7QUFDRCxLQUxEO0FBTUEzQyxJQUFBQSxNQUFNLENBQUNVLEtBQVAsQ0FBYUcsSUFBYixDQUFrQjhCLElBQWxCO0FBQ0EsU0FBS2hELElBQUwsQ0FBVWdELElBQVYsR0FBaUIsS0FBakI7QUFDRCxHOztTQUVERyxNLEdBQUEsZ0JBQVF4RSxJQUFSLEVBQWMwQixNQUFkLEVBQXNCO0FBQUE7O0FBQ3BCO0FBQ0EsUUFBSStDLGFBQWEsR0FBR3pFLElBQUksQ0FBQ3NCLE9BQUwsQ0FBYSxDQUFiLEVBQWdCQSxPQUFoQixDQUF3Qm9ELElBQXhCLENBQTZCLFVBQUFsRCxXQUFXO0FBQUEsYUFBSTVCLHFCQUFxQixDQUFDK0UsUUFBdEIsQ0FBK0JuRCxXQUFXLENBQUNGLE9BQTNDLENBQUo7QUFBQSxLQUF4QyxDQUFwQjtBQUNBLFFBQUksQ0FBQ21ELGFBQUwsRUFBb0I7QUFFcEIsUUFBSUQsTUFBTSxHQUFHdEYsT0FBTyxDQUFDNEMsSUFBUixFQUFiO0FBQ0EwQyxJQUFBQSxNQUFNLENBQUN6QyxRQUFQLEdBQWtCLEVBQWxCO0FBQ0F5QyxJQUFBQSxNQUFNLENBQUNuRCxJQUFQLEdBQWM7QUFDWi9CLE1BQUFBLE1BQU0sRUFBRSxLQUFLK0IsSUFBTCxDQUFVL0IsTUFBVixJQUFvQkMsaUJBQWlCLENBQUNELE1BRGxDO0FBRVpFLE1BQUFBLE9BQU8sRUFBRUQsaUJBQWlCLENBQUNDO0FBRmYsS0FBZDtBQUlBUSxJQUFBQSxJQUFJLENBQUNzQixPQUFMLENBQWFDLE9BQWIsQ0FBcUIsVUFBQ0MsV0FBRCxFQUFjK0MsQ0FBZCxFQUFvQjtBQUN2QyxVQUFJL0MsV0FBVyxDQUFDRyxJQUFaLEtBQXFCLE9BQXpCLEVBQWtDO0FBQ2hDLFlBQUlpRCxZQUFZLEdBQUc1RSxJQUFJLENBQUNzQixPQUFMLENBQWFpRCxDQUFDLEdBQUcsQ0FBakIsRUFBb0I1QyxJQUF2Qzs7QUFDQSxnQkFBUWlELFlBQVI7QUFDRSxlQUFLLFdBQUw7QUFDQSxlQUFLLE9BQUw7QUFDRUosWUFBQUEsTUFBTSxDQUFDekMsUUFBUCxJQUFtQlAsV0FBVyxDQUFDRixPQUEvQjtBQUNBOztBQUNGO0FBTEY7O0FBT0E7QUFDRDs7QUFDRCxNQUFBLE1BQUksQ0FBQ0csT0FBTCxDQUFhRCxXQUFiLEVBQTBCZ0QsTUFBMUI7QUFDRCxLQWJEO0FBY0E5QyxJQUFBQSxNQUFNLENBQUNVLEtBQVAsQ0FBYUcsSUFBYixDQUFrQmlDLE1BQWxCO0FBQ0QsRzs7U0FFREssVyxHQUFBLHFCQUFhN0UsSUFBYixFQUFtQjBCLE1BQW5CLEVBQTJCO0FBQ3pCQSxJQUFBQSxNQUFNLENBQUNLLFFBQVAsSUFBbUIsR0FBbkI7QUFDQS9CLElBQUFBLElBQUksQ0FBQ3NCLE9BQUwsQ0FBYUMsT0FBYixDQUFxQixVQUFBQyxXQUFXLEVBQUk7QUFDbEMsVUFBSSxPQUFPQSxXQUFXLENBQUNGLE9BQW5CLEtBQStCLFFBQW5DLEVBQTZDO0FBQzNDSSxRQUFBQSxNQUFNLENBQUNLLFFBQVAsSUFBbUJQLFdBQVcsQ0FBQ0YsT0FBL0I7QUFDRDs7QUFFRCxVQUFJLE9BQU9FLFdBQVcsQ0FBQ0YsT0FBbkIsS0FBK0IsUUFBbkMsRUFBNkM7QUFDM0NFLFFBQUFBLFdBQVcsQ0FBQ0YsT0FBWixDQUFvQkMsT0FBcEIsQ0FBNEIsVUFBQXVELG1CQUFtQixFQUFJO0FBQ2pELGNBQUl0RCxXQUFXLENBQUNHLElBQVosS0FBcUIsVUFBekIsRUFBcUNELE1BQU0sQ0FBQ0ssUUFBUCxJQUFtQixHQUFuQjtBQUNyQ0wsVUFBQUEsTUFBTSxDQUFDSyxRQUFQLElBQW1CK0MsbUJBQW1CLENBQUN4RCxPQUF2QztBQUNELFNBSEQ7QUFJRDtBQUNGLEtBWEQ7QUFZQUksSUFBQUEsTUFBTSxDQUFDSyxRQUFQLElBQW1CLEdBQW5CO0FBQ0QsRzs7U0FFRDJCLGEsR0FBQSx1QkFBZTFELElBQWYsRUFBcUIwQixNQUFyQixFQUE2QjtBQUFBOztBQUMzQkEsSUFBQUEsTUFBTSxDQUFDSyxRQUFQLElBQW1CLElBQW5CO0FBQ0EvQixJQUFBQSxJQUFJLENBQUNzQixPQUFMLENBQWFDLE9BQWIsQ0FBcUIsVUFBQUMsV0FBVyxFQUFJO0FBQ2xDLE1BQUEsTUFBSSxDQUFDQyxPQUFMLENBQWFELFdBQWIsRUFBMEJFLE1BQTFCO0FBQ0QsS0FGRDtBQUdBQSxJQUFBQSxNQUFNLENBQUNLLFFBQVAsSUFBbUIsR0FBbkI7QUFDRCxHOztTQUVEZ0QsUyxHQUFBLG1CQUFXL0UsSUFBWCxFQUFpQjBCLE1BQWpCLEVBQXlCO0FBQ3ZCQSxJQUFBQSxNQUFNLENBQUNLLFFBQVAsVUFBd0IvQixJQUFJLENBQUNzQixPQUE3QjtBQUNELEc7O1NBRUQwRCxRLEdBQUEsa0JBQVVoRixJQUFWLEVBQWdCMEIsTUFBaEIsRUFBd0I7QUFDdEJBLElBQUFBLE1BQU0sQ0FBQ0ssUUFBUCxJQUFtQi9CLElBQUksQ0FBQ3NCLE9BQXhCO0FBQ0QsRzs7U0FFRDJELFEsR0FBQSxrQkFBVWpGLElBQVYsRUFBZ0IwQixNQUFoQixFQUF3QjtBQUN0QixRQUFJLEtBQUtMLElBQUwsQ0FBVWdELElBQWQsRUFBb0I7QUFDbEIzQyxNQUFBQSxNQUFNLENBQUNLLFFBQVAsVUFBd0IvQixJQUFJLENBQUNzQixPQUFMLENBQWEsQ0FBYixFQUFnQkEsT0FBeEM7QUFDQTtBQUNEOztBQUNESSxJQUFBQSxNQUFNLENBQUNLLFFBQVAsVUFBd0IvQixJQUFJLENBQUNzQixPQUE3QjtBQUNELEc7O1NBRUQ0RCxLLEdBQUEsZUFBT2xGLElBQVAsRUFBYTBCLE1BQWIsRUFBcUI7QUFDbkJBLElBQUFBLE1BQU0sQ0FBQ0ssUUFBUCxJQUFtQi9CLElBQUksQ0FBQ3NCLE9BQXhCO0FBQ0QsRzs7Ozs7QUFHSDZELE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQnZGLFVBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcG9zdGNzcyA9IHJlcXVpcmUoJ3Bvc3Rjc3MnKVxuY29uc3QgZ29uemFsZXMgPSByZXF1aXJlKCdnb256YWxlcy1wZScpXG5cbmNvbnN0IERFRkFVTFRfUkFXU19ST09UID0ge1xuICBiZWZvcmU6ICcnXG59XG5cbmNvbnN0IERFRkFVTFRfUkFXU19SVUxFID0ge1xuICBiZWZvcmU6ICcnLFxuICBiZXR3ZWVuOiAnJ1xufVxuXG5jb25zdCBERUZBVUxUX1JBV1NfREVDTCA9IHtcbiAgYmVmb3JlOiAnJyxcbiAgYmV0d2VlbjogJycsXG4gIHNlbWljb2xvbjogZmFsc2Vcbn1cblxuY29uc3QgREVGQVVMVF9DT01NRU5UX0RFQ0wgPSB7XG4gIGJlZm9yZTogJydcbn1cblxuY29uc3QgU1VQUE9SVEVEX0FUX0tFWVdPUkRTID0gW1xuICAnbWVkaWEnXG5dXG5cbmNsYXNzIFNhc3NQYXJzZXIge1xuICBjb25zdHJ1Y3RvciAoaW5wdXQpIHtcbiAgICB0aGlzLmlucHV0ID0gaW5wdXRcbiAgfVxuXG4gIHBhcnNlICgpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5ub2RlID0gZ29uemFsZXMucGFyc2UodGhpcy5pbnB1dC5jc3MsIHsgc3ludGF4OiAnc2FzcycgfSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcihlcnJvci5tZXNzYWdlLCBlcnJvci5saW5lLCAxKVxuICAgIH1cbiAgICB0aGlzLmxpbmVzID0gdGhpcy5pbnB1dC5jc3MubWF0Y2goL14uKihcXHI/XFxufCQpL2dtKVxuICAgIHRoaXMucm9vdCA9IHRoaXMuc3R5bGVzaGVldCh0aGlzLm5vZGUpXG4gIH1cblxuICBleHRyYWN0U291cmNlIChzdGFydCwgZW5kKSB7XG4gICAgbGV0IG5vZGVMaW5lcyA9IHRoaXMubGluZXMuc2xpY2UoXG4gICAgICBzdGFydC5saW5lIC0gMSxcbiAgICAgIGVuZC5saW5lXG4gICAgKVxuXG4gICAgbm9kZUxpbmVzWzBdID0gbm9kZUxpbmVzWzBdLnN1YnN0cmluZyhzdGFydC5jb2x1bW4gLSAxKVxuICAgIGxldCBsYXN0ID0gbm9kZUxpbmVzLmxlbmd0aCAtIDFcbiAgICBub2RlTGluZXNbbGFzdF0gPSBub2RlTGluZXNbbGFzdF0uc3Vic3RyaW5nKDAsIGVuZC5jb2x1bW4pXG5cbiAgICByZXR1cm4gbm9kZUxpbmVzLmpvaW4oJycpXG4gIH1cblxuICBzdHlsZXNoZWV0IChub2RlKSB7XG4gICAgLy8gQ3JlYXRlIGFuZCBzZXQgcGFyYW1ldGVycyBmb3IgUm9vdCBub2RlXG4gICAgbGV0IHJvb3QgPSBwb3N0Y3NzLnJvb3QoKVxuICAgIHJvb3Quc291cmNlID0ge1xuICAgICAgc3RhcnQ6IG5vZGUuc3RhcnQsXG4gICAgICBlbmQ6IG5vZGUuZW5kLFxuICAgICAgaW5wdXQ6IHRoaXMuaW5wdXRcbiAgICB9XG4gICAgLy8gUmF3cyBmb3Igcm9vdCBub2RlXG4gICAgcm9vdC5yYXdzID0ge1xuICAgICAgc2VtaWNvbG9uOiBERUZBVUxUX1JBV1NfUk9PVC5zZW1pY29sb24sXG4gICAgICBiZWZvcmU6IERFRkFVTFRfUkFXU19ST09ULmJlZm9yZVxuICAgIH1cbiAgICAvLyBTdG9yZSBzcGFjZXMgYmVmb3JlIHJvb3QgKGlmIGV4aXN0KVxuICAgIHRoaXMucmF3cyA9IHtcbiAgICAgIGJlZm9yZTogJydcbiAgICB9XG4gICAgbm9kZS5jb250ZW50LmZvckVhY2goY29udGVudE5vZGUgPT4gdGhpcy5wcm9jZXNzKGNvbnRlbnROb2RlLCByb290KSlcbiAgICByZXR1cm4gcm9vdFxuICB9XG5cbiAgcHJvY2VzcyAobm9kZSwgcGFyZW50KSB7XG4gICAgaWYgKHRoaXNbbm9kZS50eXBlXSkgcmV0dXJuIHRoaXNbbm9kZS50eXBlXShub2RlLCBwYXJlbnQpIHx8IG51bGxcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcnVsZXNldCAobm9kZSwgcGFyZW50KSB7XG4gICAgLy8gTG9vcCB0byBmaW5kIHRoZSBkZWVwZXN0IHJ1bGVzZXQgbm9kZVxuICAgIHRoaXMucmF3cy5tdWx0aVJ1bGVQcm9wID0gJydcblxuICAgIG5vZGUuY29udGVudC5mb3JFYWNoKGNvbnRlbnROb2RlID0+IHtcbiAgICAgIHN3aXRjaCAoY29udGVudE5vZGUudHlwZSkge1xuICAgICAgICBjYXNlICdibG9jayc6IHtcbiAgICAgICAgICAvLyBDcmVhdGUgUnVsZSBub2RlXG4gICAgICAgICAgbGV0IHJ1bGUgPSBwb3N0Y3NzLnJ1bGUoKVxuICAgICAgICAgIHJ1bGUuc2VsZWN0b3IgPSAnJ1xuICAgICAgICAgIC8vIE9iamVjdCB0byBzdG9yZSByYXdzIGZvciBSdWxlXG4gICAgICAgICAgbGV0IHJ1bGVSYXdzID0ge1xuICAgICAgICAgICAgYmVmb3JlOiB0aGlzLnJhd3MuYmVmb3JlIHx8IERFRkFVTFRfUkFXU19SVUxFLmJlZm9yZSxcbiAgICAgICAgICAgIGJldHdlZW46IERFRkFVTFRfUkFXU19SVUxFLmJldHdlZW5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBWYXJpYWJsZSB0byBzdG9yZSBzcGFjZXMgYW5kIHN5bWJvbHMgYmVmb3JlIGRlY2xhcmF0aW9uIHByb3BlcnR5XG4gICAgICAgICAgdGhpcy5yYXdzLmJlZm9yZSA9ICcnXG4gICAgICAgICAgdGhpcy5yYXdzLmNvbW1lbnQgPSBmYWxzZVxuXG4gICAgICAgICAgLy8gTG9vayB1cCB0aHJvdyBhbGwgbm9kZXMgaW4gY3VycmVudCBydWxlc2V0IG5vZGVcbiAgICAgICAgICBub2RlLmNvbnRlbnRcbiAgICAgICAgICAgIC5maWx0ZXIoY29udGVudCA9PiBjb250ZW50LnR5cGUgPT09ICdibG9jaycpXG4gICAgICAgICAgICAuZm9yRWFjaChpbm5lckNvbnRlbnROb2RlID0+IHRoaXMucHJvY2Vzcyhpbm5lckNvbnRlbnROb2RlLCBydWxlKSlcblxuICAgICAgICAgIGlmIChydWxlLm5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gV3JpdGUgc2VsZWN0b3IgdG8gUnVsZVxuICAgICAgICAgICAgcnVsZS5zZWxlY3RvciA9IHRoaXMuZXh0cmFjdFNvdXJjZShcbiAgICAgICAgICAgICAgbm9kZS5zdGFydCxcbiAgICAgICAgICAgICAgY29udGVudE5vZGUuc3RhcnRcbiAgICAgICAgICAgICkuc2xpY2UoMCwgLTEpLnJlcGxhY2UoL1xccyskLywgc3BhY2VzID0+IHtcbiAgICAgICAgICAgICAgcnVsZVJhd3MuYmV0d2VlbiA9IHNwYWNlc1xuICAgICAgICAgICAgICByZXR1cm4gJydcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAvLyBTZXQgcGFyYW1ldGVycyBmb3IgUnVsZSBub2RlXG4gICAgICAgICAgICBydWxlLnBhcmVudCA9IHBhcmVudFxuICAgICAgICAgICAgcnVsZS5zb3VyY2UgPSB7XG4gICAgICAgICAgICAgIHN0YXJ0OiBub2RlLnN0YXJ0LFxuICAgICAgICAgICAgICBlbmQ6IG5vZGUuZW5kLFxuICAgICAgICAgICAgICBpbnB1dDogdGhpcy5pbnB1dFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcnVsZS5yYXdzID0gcnVsZVJhd3NcbiAgICAgICAgICAgIHBhcmVudC5ub2Rlcy5wdXNoKHJ1bGUpXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgYmxvY2sgKG5vZGUsIHBhcmVudCkge1xuICAgIC8vIElmIG5lc3RlZCBydWxlcyBleGlzdCwgd3JhcCBjdXJyZW50IHJ1bGUgaW4gbmV3IHJ1bGUgbm9kZVxuICAgIGlmICh0aGlzLnJhd3MubXVsdGlSdWxlKSB7XG4gICAgICBpZiAodGhpcy5yYXdzLm11bHRpUnVsZVByb3BWYXJpYWJsZSkge1xuICAgICAgICB0aGlzLnJhd3MubXVsdGlSdWxlUHJvcCA9IGAkJHsgdGhpcy5yYXdzLm11bHRpUnVsZVByb3AgfWBcbiAgICAgIH1cbiAgICAgIGxldCBtdWx0aVJ1bGUgPSBPYmplY3QuYXNzaWduKHBvc3Rjc3MucnVsZSgpLCB7XG4gICAgICAgIHNvdXJjZToge1xuICAgICAgICAgIHN0YXJ0OiB7XG4gICAgICAgICAgICBsaW5lOiBub2RlLnN0YXJ0LmxpbmUgLSAxLFxuICAgICAgICAgICAgY29sdW1uOiBub2RlLnN0YXJ0LmNvbHVtblxuICAgICAgICAgIH0sXG4gICAgICAgICAgZW5kOiBub2RlLmVuZCxcbiAgICAgICAgICBpbnB1dDogdGhpcy5pbnB1dFxuICAgICAgICB9LFxuICAgICAgICByYXdzOiB7XG4gICAgICAgICAgYmVmb3JlOiB0aGlzLnJhd3MuYmVmb3JlIHx8IERFRkFVTFRfUkFXU19SVUxFLmJlZm9yZSxcbiAgICAgICAgICBiZXR3ZWVuOiBERUZBVUxUX1JBV1NfUlVMRS5iZXR3ZWVuXG4gICAgICAgIH0sXG4gICAgICAgIHBhcmVudCxcbiAgICAgICAgc2VsZWN0b3I6ICh0aGlzLnJhd3MuY3VzdG9tUHJvcGVydHkgPyAnLS0nIDogJycpICsgdGhpcy5yYXdzLm11bHRpUnVsZVByb3BcbiAgICAgIH0pXG4gICAgICBwYXJlbnQucHVzaChtdWx0aVJ1bGUpXG4gICAgICBwYXJlbnQgPSBtdWx0aVJ1bGVcbiAgICB9XG5cbiAgICB0aGlzLnJhd3MuYmVmb3JlID0gJydcblxuICAgIC8vIExvb2tpbmcgZm9yIGRlY2xhcmF0aW9uIG5vZGUgaW4gYmxvY2sgbm9kZVxuICAgIG5vZGUuY29udGVudC5mb3JFYWNoKGNvbnRlbnROb2RlID0+IHRoaXMucHJvY2Vzcyhjb250ZW50Tm9kZSwgcGFyZW50KSlcbiAgICBpZiAodGhpcy5yYXdzLm11bHRpUnVsZSkge1xuICAgICAgdGhpcy5yYXdzLmJlZm9yZU11bHRpID0gdGhpcy5yYXdzLmJlZm9yZVxuICAgIH1cbiAgfVxuXG4gIGRlY2xhcmF0aW9uIChub2RlLCBwYXJlbnQpIHtcbiAgICBsZXQgaXNCbG9ja0luc2lkZSA9IGZhbHNlXG4gICAgLy8gQ3JlYXRlIERlY2xhcmF0aW9uIG5vZGVcbiAgICBsZXQgZGVjbGFyYXRpb25Ob2RlID0gcG9zdGNzcy5kZWNsKClcbiAgICBkZWNsYXJhdGlvbk5vZGUucHJvcCA9ICcnXG5cbiAgICAvLyBPYmplY3QgdG8gc3RvcmUgcmF3cyBmb3IgRGVjbGFyYXRpb25cbiAgICBsZXQgZGVjbGFyYXRpb25SYXdzID0gT2JqZWN0LmFzc2lnbihkZWNsYXJhdGlvbk5vZGUucmF3cywge1xuICAgICAgYmVmb3JlOiB0aGlzLnJhd3MuYmVmb3JlIHx8IERFRkFVTFRfUkFXU19ERUNMLmJlZm9yZSxcbiAgICAgIGJldHdlZW46IERFRkFVTFRfUkFXU19ERUNMLmJldHdlZW4sXG4gICAgICBzZW1pY29sb246IERFRkFVTFRfUkFXU19ERUNMLnNlbWljb2xvblxuICAgIH0pXG5cbiAgICB0aGlzLnJhd3MucHJvcGVydHkgPSBmYWxzZVxuICAgIHRoaXMucmF3cy5iZXR3ZWVuQmVmb3JlID0gZmFsc2VcbiAgICB0aGlzLnJhd3MuY29tbWVudCA9IGZhbHNlXG4gICAgLy8gTG9va2luZyBmb3IgcHJvcGVydHkgYW5kIHZhbHVlIG5vZGUgaW4gZGVjbGFyYXRpb24gbm9kZVxuICAgIG5vZGUuY29udGVudC5mb3JFYWNoKGNvbnRlbnROb2RlID0+IHtcbiAgICAgIHN3aXRjaCAoY29udGVudE5vZGUudHlwZSkge1xuICAgICAgICBjYXNlICdjdXN0b21Qcm9wZXJ0eSc6XG4gICAgICAgICAgdGhpcy5yYXdzLmN1c3RvbVByb3BlcnR5ID0gdHJ1ZVxuICAgICAgICAgIC8vIGZhbGwgdGhyb3VnaFxuICAgICAgICBjYXNlICdwcm9wZXJ0eSc6IHtcbiAgICAgICAgICAvKiB0aGlzLnJhd3MucHJvcGVydHkgdG8gZGV0ZWN0IGlzIHByb3BlcnR5IGlzIGFscmVhZHkgZGVmaW5lZCBpbiBjdXJyZW50IG9iamVjdCAqL1xuICAgICAgICAgIHRoaXMucmF3cy5wcm9wZXJ0eSA9IHRydWVcbiAgICAgICAgICB0aGlzLnJhd3MubXVsdGlSdWxlUHJvcCA9IGNvbnRlbnROb2RlLmNvbnRlbnRbMF0uY29udGVudFxuICAgICAgICAgIHRoaXMucmF3cy5tdWx0aVJ1bGVQcm9wVmFyaWFibGUgPSBjb250ZW50Tm9kZS5jb250ZW50WzBdLnR5cGUgPT09ICd2YXJpYWJsZSdcbiAgICAgICAgICB0aGlzLnByb2Nlc3MoY29udGVudE5vZGUsIGRlY2xhcmF0aW9uTm9kZSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3Byb3BlcnR5RGVsaW1pdGVyJzoge1xuICAgICAgICAgIGlmICh0aGlzLnJhd3MucHJvcGVydHkgJiYgIXRoaXMucmF3cy5iZXR3ZWVuQmVmb3JlKSB7XG4gICAgICAgICAgICAvKiBJZiBwcm9wZXJ0eSBpcyBhbHJlYWR5IGRlZmluZWQgYW5kIHRoZXJlJ3Mgbm8gJzonIGJlZm9yZSBpdCAqL1xuICAgICAgICAgICAgZGVjbGFyYXRpb25SYXdzLmJldHdlZW4gKz0gY29udGVudE5vZGUuY29udGVudFxuICAgICAgICAgICAgdGhpcy5yYXdzLm11bHRpUnVsZVByb3AgKz0gY29udGVudE5vZGUuY29udGVudFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiBJZiAnOicgZ29lcyBiZWZvcmUgcHJvcGVydHkgZGVjbGFyYXRpb24sIGxpa2UgOndpZHRoIDEwMHB4ICovXG4gICAgICAgICAgICB0aGlzLnJhd3MuYmV0d2VlbkJlZm9yZSA9IHRydWVcbiAgICAgICAgICAgIGRlY2xhcmF0aW9uUmF3cy5iZWZvcmUgKz0gY29udGVudE5vZGUuY29udGVudFxuICAgICAgICAgICAgdGhpcy5yYXdzLm11bHRpUnVsZVByb3AgKz0gY29udGVudE5vZGUuY29udGVudFxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3NwYWNlJzoge1xuICAgICAgICAgIGRlY2xhcmF0aW9uUmF3cy5iZXR3ZWVuICs9IGNvbnRlbnROb2RlLmNvbnRlbnRcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3ZhbHVlJzoge1xuICAgICAgICAgIC8vIExvb2sgdXAgZm9yIGEgdmFsdWUgZm9yIGN1cnJlbnQgcHJvcGVydHlcbiAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnROb2RlLmNvbnRlbnRbMF0udHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYmxvY2snOiB7XG4gICAgICAgICAgICAgIGlzQmxvY2tJbnNpZGUgPSB0cnVlXG4gICAgICAgICAgICAgIC8vIElmIG5lc3RlZCBydWxlcyBleGlzdFxuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb250ZW50Tm9kZS5jb250ZW50WzBdLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yYXdzLm11bHRpUnVsZSA9IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnByb2Nlc3MoY29udGVudE5vZGUuY29udGVudFswXSwgcGFyZW50KVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAndmFyaWFibGUnOiB7XG4gICAgICAgICAgICAgIGRlY2xhcmF0aW9uTm9kZS52YWx1ZSA9ICckJ1xuICAgICAgICAgICAgICB0aGlzLnByb2Nlc3MoY29udGVudE5vZGUsIGRlY2xhcmF0aW9uTm9kZSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2NvbG9yJzoge1xuICAgICAgICAgICAgICBkZWNsYXJhdGlvbk5vZGUudmFsdWUgPSAnIydcbiAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzKGNvbnRlbnROb2RlLCBkZWNsYXJhdGlvbk5vZGUpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdudW1iZXInOiB7XG4gICAgICAgICAgICAgIGlmIChjb250ZW50Tm9kZS5jb250ZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICBkZWNsYXJhdGlvbk5vZGUudmFsdWUgPSBjb250ZW50Tm9kZS5jb250ZW50LmpvaW4oJycpXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzKGNvbnRlbnROb2RlLCBkZWNsYXJhdGlvbk5vZGUpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3BhcmVudGhlc2VzJzoge1xuICAgICAgICAgICAgICBkZWNsYXJhdGlvbk5vZGUudmFsdWUgPSAnKCdcbiAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzKGNvbnRlbnROb2RlLCBkZWNsYXJhdGlvbk5vZGUpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgIHRoaXMucHJvY2Vzcyhjb250ZW50Tm9kZSwgZGVjbGFyYXRpb25Ob2RlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICB9XG4gICAgfSlcblxuICAgIGlmICghaXNCbG9ja0luc2lkZSkge1xuICAgICAgLy8gU2V0IHBhcmFtZXRlcnMgZm9yIERlY2xhcmF0aW9uIG5vZGVcbiAgICAgIGRlY2xhcmF0aW9uTm9kZS5zb3VyY2UgPSB7XG4gICAgICAgIHN0YXJ0OiBub2RlLnN0YXJ0LFxuICAgICAgICBlbmQ6IG5vZGUuZW5kLFxuICAgICAgICBpbnB1dDogdGhpcy5pbnB1dFxuICAgICAgfVxuICAgICAgZGVjbGFyYXRpb25Ob2RlLnBhcmVudCA9IHBhcmVudFxuICAgICAgcGFyZW50Lm5vZGVzLnB1c2goZGVjbGFyYXRpb25Ob2RlKVxuICAgIH1cblxuICAgIHRoaXMucmF3cy5iZWZvcmUgPSAnJ1xuICAgIHRoaXMucmF3cy5jdXN0b21Qcm9wZXJ0eSA9IGZhbHNlXG4gICAgdGhpcy5yYXdzLm11bHRpUnVsZVByb3AgPSAnJ1xuICAgIHRoaXMucmF3cy5wcm9wZXJ0eSA9IGZhbHNlXG4gIH1cblxuICBjdXN0b21Qcm9wZXJ0eSAobm9kZSwgcGFyZW50KSB7XG4gICAgdGhpcy5wcm9wZXJ0eShub2RlLCBwYXJlbnQpXG4gICAgcGFyZW50LnByb3AgPSBgLS0keyBwYXJlbnQucHJvcCB9YFxuICB9XG5cbiAgcHJvcGVydHkgKG5vZGUsIHBhcmVudCkge1xuICAgIC8vIFNldCBwcm9wZXJ0eSBmb3IgRGVjbGFyYXRpb24gbm9kZVxuICAgIHN3aXRjaCAobm9kZS5jb250ZW50WzBdLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3ZhcmlhYmxlJzoge1xuICAgICAgICBwYXJlbnQucHJvcCArPSAnJCdcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2ludGVycG9sYXRpb24nOiB7XG4gICAgICAgIHRoaXMucmF3cy5pbnRlcnBvbGF0aW9uID0gdHJ1ZVxuICAgICAgICBwYXJlbnQucHJvcCArPSAnI3snXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgICBwYXJlbnQucHJvcCArPSBub2RlLmNvbnRlbnRbMF0uY29udGVudFxuICAgIGlmICh0aGlzLnJhd3MuaW50ZXJwb2xhdGlvbikge1xuICAgICAgcGFyZW50LnByb3AgKz0gJ30nXG4gICAgICB0aGlzLnJhd3MuaW50ZXJwb2xhdGlvbiA9IGZhbHNlXG4gICAgfVxuICB9XG5cbiAgdmFsdWUgKG5vZGUsIHBhcmVudCkge1xuICAgIGlmICghcGFyZW50LnZhbHVlKSB7XG4gICAgICBwYXJlbnQudmFsdWUgPSAnJ1xuICAgIH1cbiAgICAvLyBTZXQgdmFsdWUgZm9yIERlY2xhcmF0aW9uIG5vZGVcbiAgICBpZiAobm9kZS5jb250ZW50Lmxlbmd0aCkge1xuICAgICAgbm9kZS5jb250ZW50LmZvckVhY2goY29udGVudE5vZGUgPT4ge1xuICAgICAgICBzd2l0Y2ggKGNvbnRlbnROb2RlLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdpbXBvcnRhbnQnOiB7XG4gICAgICAgICAgICBwYXJlbnQucmF3cy5pbXBvcnRhbnQgPSBjb250ZW50Tm9kZS5jb250ZW50XG4gICAgICAgICAgICBwYXJlbnQuaW1wb3J0YW50ID0gdHJ1ZVxuICAgICAgICAgICAgbGV0IG1hdGNoID0gcGFyZW50LnZhbHVlLm1hdGNoKC9eKC4qPykoXFxzKikkLylcbiAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICBwYXJlbnQucmF3cy5pbXBvcnRhbnQgPSBtYXRjaFsyXSArIHBhcmVudC5yYXdzLmltcG9ydGFudFxuICAgICAgICAgICAgICBwYXJlbnQudmFsdWUgPSBtYXRjaFsxXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAncGFyZW50aGVzZXMnOiB7XG4gICAgICAgICAgICBwYXJlbnQudmFsdWUgKz0gY29udGVudE5vZGUuY29udGVudC5qb2luKCcnKSArICcpJ1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAncGVyY2VudGFnZSc6IHtcbiAgICAgICAgICAgIHBhcmVudC52YWx1ZSArPSBjb250ZW50Tm9kZS5jb250ZW50LmpvaW4oJycpICsgJyUnXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBpZiAoY29udGVudE5vZGUuY29udGVudC5jb25zdHJ1Y3RvciA9PT0gQXJyYXkpIHtcbiAgICAgICAgICAgICAgcGFyZW50LnZhbHVlICs9IGNvbnRlbnROb2RlLmNvbnRlbnQuam9pbignJylcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBhcmVudC52YWx1ZSArPSBjb250ZW50Tm9kZS5jb250ZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHNpbmdsZWxpbmVDb21tZW50IChub2RlLCBwYXJlbnQpIHtcbiAgICByZXR1cm4gdGhpcy5jb21tZW50KG5vZGUsIHBhcmVudCwgdHJ1ZSlcbiAgfVxuXG4gIG11bHRpbGluZUNvbW1lbnQgKG5vZGUsIHBhcmVudCkge1xuICAgIHJldHVybiB0aGlzLmNvbW1lbnQobm9kZSwgcGFyZW50LCBmYWxzZSlcbiAgfVxuXG4gIGNvbW1lbnQgKG5vZGUsIHBhcmVudCwgaW5saW5lKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVzZWN1cml0eS9lc2xpbnQtcGx1Z2luLXNlY3VyaXR5I2RldGVjdC11bnNhZmUtcmVnZXhcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LXVuc2FmZS1yZWdleFxuICAgIGxldCB0ZXh0ID0gbm9kZS5jb250ZW50Lm1hdGNoKC9eKFxccyopKCg/OlxcU1tcXHNcXFNdKj8pPykoXFxzKikkLylcblxuICAgIHRoaXMucmF3cy5jb21tZW50ID0gdHJ1ZVxuXG4gICAgbGV0IGNvbW1lbnQgPSBPYmplY3QuYXNzaWduKHBvc3Rjc3MuY29tbWVudCgpLCB7XG4gICAgICB0ZXh0OiB0ZXh0WzJdLFxuICAgICAgcmF3czoge1xuICAgICAgICBiZWZvcmU6IHRoaXMucmF3cy5iZWZvcmUgfHwgREVGQVVMVF9DT01NRU5UX0RFQ0wuYmVmb3JlLFxuICAgICAgICBsZWZ0OiB0ZXh0WzFdLFxuICAgICAgICByaWdodDogdGV4dFszXSxcbiAgICAgICAgaW5saW5lXG4gICAgICB9LFxuICAgICAgc291cmNlOiB7XG4gICAgICAgIHN0YXJ0OiB7XG4gICAgICAgICAgbGluZTogbm9kZS5zdGFydC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogbm9kZS5zdGFydC5jb2x1bW5cbiAgICAgICAgfSxcbiAgICAgICAgZW5kOiBub2RlLmVuZCxcbiAgICAgICAgaW5wdXQ6IHRoaXMuaW5wdXRcbiAgICAgIH0sXG4gICAgICBwYXJlbnRcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMucmF3cy5iZWZvcmVNdWx0aSkge1xuICAgICAgY29tbWVudC5yYXdzLmJlZm9yZSArPSB0aGlzLnJhd3MuYmVmb3JlTXVsdGlcbiAgICAgIHRoaXMucmF3cy5iZWZvcmVNdWx0aSA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHBhcmVudC5ub2Rlcy5wdXNoKGNvbW1lbnQpXG4gICAgdGhpcy5yYXdzLmJlZm9yZSA9ICcnXG4gIH1cblxuICBzcGFjZSAobm9kZSwgcGFyZW50KSB7XG4gICAgLy8gU3BhY2VzIGJlZm9yZSByb290IGFuZCBydWxlXG4gICAgc3dpdGNoIChwYXJlbnQudHlwZSkge1xuICAgICAgY2FzZSAncm9vdCc6IHtcbiAgICAgICAgdGhpcy5yYXdzLmJlZm9yZSArPSBub2RlLmNvbnRlbnRcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3J1bGUnOiB7XG4gICAgICAgIGlmICh0aGlzLnJhd3MuY29tbWVudCkge1xuICAgICAgICAgIHRoaXMucmF3cy5iZWZvcmUgKz0gbm9kZS5jb250ZW50XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yYXdzLmxvb3ApIHtcbiAgICAgICAgICBwYXJlbnQuc2VsZWN0b3IgKz0gbm9kZS5jb250ZW50XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yYXdzLmJlZm9yZSA9ICh0aGlzLnJhd3MuYmVmb3JlIHx8ICdcXG4nKSArIG5vZGUuY29udGVudFxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfVxuXG4gIGRlY2xhcmF0aW9uRGVsaW1pdGVyIChub2RlKSB7XG4gICAgdGhpcy5yYXdzLmJlZm9yZSArPSBub2RlLmNvbnRlbnRcbiAgfVxuXG4gIGxvb3AgKG5vZGUsIHBhcmVudCkge1xuICAgIGxldCBsb29wID0gcG9zdGNzcy5ydWxlKClcbiAgICB0aGlzLnJhd3MuY29tbWVudCA9IGZhbHNlXG4gICAgdGhpcy5yYXdzLm11bHRpUnVsZSA9IGZhbHNlXG4gICAgdGhpcy5yYXdzLmxvb3AgPSB0cnVlXG4gICAgbG9vcC5zZWxlY3RvciA9ICcnXG4gICAgbG9vcC5yYXdzID0ge1xuICAgICAgYmVmb3JlOiB0aGlzLnJhd3MuYmVmb3JlIHx8IERFRkFVTFRfUkFXU19SVUxFLmJlZm9yZSxcbiAgICAgIGJldHdlZW46IERFRkFVTFRfUkFXU19SVUxFLmJldHdlZW5cbiAgICB9XG4gICAgaWYgKHRoaXMucmF3cy5iZWZvcmVNdWx0aSkge1xuICAgICAgbG9vcC5yYXdzLmJlZm9yZSArPSB0aGlzLnJhd3MuYmVmb3JlTXVsdGlcbiAgICAgIHRoaXMucmF3cy5iZWZvcmVNdWx0aSA9IHVuZGVmaW5lZFxuICAgIH1cbiAgICBub2RlLmNvbnRlbnQuZm9yRWFjaCgoY29udGVudE5vZGUsIGkpID0+IHtcbiAgICAgIGlmIChub2RlLmNvbnRlbnRbaSArIDFdICYmIG5vZGUuY29udGVudFtpICsgMV0udHlwZSA9PT0gJ2Jsb2NrJykge1xuICAgICAgICB0aGlzLnJhd3MubG9vcCA9IGZhbHNlXG4gICAgICB9XG4gICAgICB0aGlzLnByb2Nlc3MoY29udGVudE5vZGUsIGxvb3ApXG4gICAgfSlcbiAgICBwYXJlbnQubm9kZXMucHVzaChsb29wKVxuICAgIHRoaXMucmF3cy5sb29wID0gZmFsc2VcbiAgfVxuXG4gIGF0cnVsZSAobm9kZSwgcGFyZW50KSB7XG4gICAgLy8gU2tpcCB1bnN1cHBvcnRlZCBAeHh4IHJ1bGVzXG4gICAgbGV0IHN1cHBvcnRlZE5vZGUgPSBub2RlLmNvbnRlbnRbMF0uY29udGVudC5zb21lKGNvbnRlbnROb2RlID0+IFNVUFBPUlRFRF9BVF9LRVlXT1JEUy5pbmNsdWRlcyhjb250ZW50Tm9kZS5jb250ZW50KSlcbiAgICBpZiAoIXN1cHBvcnRlZE5vZGUpIHJldHVyblxuXG4gICAgbGV0IGF0cnVsZSA9IHBvc3Rjc3MucnVsZSgpXG4gICAgYXRydWxlLnNlbGVjdG9yID0gJydcbiAgICBhdHJ1bGUucmF3cyA9IHtcbiAgICAgIGJlZm9yZTogdGhpcy5yYXdzLmJlZm9yZSB8fCBERUZBVUxUX1JBV1NfUlVMRS5iZWZvcmUsXG4gICAgICBiZXR3ZWVuOiBERUZBVUxUX1JBV1NfUlVMRS5iZXR3ZWVuXG4gICAgfVxuICAgIG5vZGUuY29udGVudC5mb3JFYWNoKChjb250ZW50Tm9kZSwgaSkgPT4ge1xuICAgICAgaWYgKGNvbnRlbnROb2RlLnR5cGUgPT09ICdzcGFjZScpIHtcbiAgICAgICAgbGV0IHByZXZOb2RlVHlwZSA9IG5vZGUuY29udGVudFtpIC0gMV0udHlwZVxuICAgICAgICBzd2l0Y2ggKHByZXZOb2RlVHlwZSkge1xuICAgICAgICAgIGNhc2UgJ2F0a2V5d29yZCc6XG4gICAgICAgICAgY2FzZSAnaWRlbnQnOlxuICAgICAgICAgICAgYXRydWxlLnNlbGVjdG9yICs9IGNvbnRlbnROb2RlLmNvbnRlbnRcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRoaXMucHJvY2Vzcyhjb250ZW50Tm9kZSwgYXRydWxlKVxuICAgIH0pXG4gICAgcGFyZW50Lm5vZGVzLnB1c2goYXRydWxlKVxuICB9XG5cbiAgcGFyZW50aGVzZXMgKG5vZGUsIHBhcmVudCkge1xuICAgIHBhcmVudC5zZWxlY3RvciArPSAnKCdcbiAgICBub2RlLmNvbnRlbnQuZm9yRWFjaChjb250ZW50Tm9kZSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGNvbnRlbnROb2RlLmNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHBhcmVudC5zZWxlY3RvciArPSBjb250ZW50Tm9kZS5jb250ZW50XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgY29udGVudE5vZGUuY29udGVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29udGVudE5vZGUuY29udGVudC5mb3JFYWNoKGNoaWxkcmVuQ29udGVudE5vZGUgPT4ge1xuICAgICAgICAgIGlmIChjb250ZW50Tm9kZS50eXBlID09PSAndmFyaWFibGUnKSBwYXJlbnQuc2VsZWN0b3IgKz0gJyQnXG4gICAgICAgICAgcGFyZW50LnNlbGVjdG9yICs9IGNoaWxkcmVuQ29udGVudE5vZGUuY29udGVudFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gICAgcGFyZW50LnNlbGVjdG9yICs9ICcpJ1xuICB9XG5cbiAgaW50ZXJwb2xhdGlvbiAobm9kZSwgcGFyZW50KSB7XG4gICAgcGFyZW50LnNlbGVjdG9yICs9ICcjeydcbiAgICBub2RlLmNvbnRlbnQuZm9yRWFjaChjb250ZW50Tm9kZSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3MoY29udGVudE5vZGUsIHBhcmVudClcbiAgICB9KVxuICAgIHBhcmVudC5zZWxlY3RvciArPSAnfSdcbiAgfVxuXG4gIGF0a2V5d29yZCAobm9kZSwgcGFyZW50KSB7XG4gICAgcGFyZW50LnNlbGVjdG9yICs9IGBAJHsgbm9kZS5jb250ZW50IH1gXG4gIH1cblxuICBvcGVyYXRvciAobm9kZSwgcGFyZW50KSB7XG4gICAgcGFyZW50LnNlbGVjdG9yICs9IG5vZGUuY29udGVudFxuICB9XG5cbiAgdmFyaWFibGUgKG5vZGUsIHBhcmVudCkge1xuICAgIGlmICh0aGlzLnJhd3MubG9vcCkge1xuICAgICAgcGFyZW50LnNlbGVjdG9yICs9IGAkJHsgbm9kZS5jb250ZW50WzBdLmNvbnRlbnQgfWBcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBwYXJlbnQuc2VsZWN0b3IgKz0gYCQkeyBub2RlLmNvbnRlbnQgfWBcbiAgfVxuXG4gIGlkZW50IChub2RlLCBwYXJlbnQpIHtcbiAgICBwYXJlbnQuc2VsZWN0b3IgKz0gbm9kZS5jb250ZW50XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTYXNzUGFyc2VyXG4iXX0= \ No newline at end of file
diff --git a/assets/node_modules/postcss-sass/stringifier.js b/assets/node_modules/postcss-sass/stringifier.js
deleted file mode 100644
index a8d9174..0000000
--- a/assets/node_modules/postcss-sass/stringifier.js
+++ /dev/null
@@ -1,43 +0,0 @@
-"use strict";
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var Stringifier = require('postcss/lib/stringifier');
-
-module.exports =
-/*#__PURE__*/
-function (_Stringifier) {
- _inheritsLoose(SassStringifier, _Stringifier);
-
- function SassStringifier() {
- return _Stringifier.apply(this, arguments) || this;
- }
-
- var _proto = SassStringifier.prototype;
-
- _proto.block = function block(node, start) {
- this.builder(start, node, 'start');
-
- if (node.nodes && node.nodes.length) {
- this.body(node);
- }
- };
-
- _proto.decl = function decl(node) {
- _Stringifier.prototype.decl.call(this, node, false);
- };
-
- _proto.comment = function comment(node) {
- var left = this.raw(node, 'left', 'commentLeft');
- var right = this.raw(node, 'right', 'commentRight');
-
- if (node.raws.inline) {
- this.builder('//' + left + node.text + right, node);
- } else {
- this.builder('/*' + left + node.text + right + '*/', node);
- }
- };
-
- return SassStringifier;
-}(Stringifier);
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmaWVyLmVzNiJdLCJuYW1lcyI6WyJTdHJpbmdpZmllciIsInJlcXVpcmUiLCJtb2R1bGUiLCJleHBvcnRzIiwiYmxvY2siLCJub2RlIiwic3RhcnQiLCJidWlsZGVyIiwibm9kZXMiLCJsZW5ndGgiLCJib2R5IiwiZGVjbCIsImNvbW1lbnQiLCJsZWZ0IiwicmF3IiwicmlnaHQiLCJyYXdzIiwiaW5saW5lIiwidGV4dCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLElBQU1BLFdBQVcsR0FBR0MsT0FBTyxDQUFDLHlCQUFELENBQTNCOztBQUVBQyxNQUFNLENBQUNDLE9BQVA7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBOztBQUFBOztBQUFBLFNBQ0VDLEtBREYsR0FDRSxlQUFPQyxJQUFQLEVBQWFDLEtBQWIsRUFBb0I7QUFDbEIsU0FBS0MsT0FBTCxDQUFhRCxLQUFiLEVBQW9CRCxJQUFwQixFQUEwQixPQUExQjs7QUFDQSxRQUFJQSxJQUFJLENBQUNHLEtBQUwsSUFBY0gsSUFBSSxDQUFDRyxLQUFMLENBQVdDLE1BQTdCLEVBQXFDO0FBQ25DLFdBQUtDLElBQUwsQ0FBVUwsSUFBVjtBQUNEO0FBQ0YsR0FOSDs7QUFBQSxTQVFFTSxJQVJGLEdBUUUsY0FBTU4sSUFBTixFQUFZO0FBQ1YsMkJBQU1NLElBQU4sWUFBV04sSUFBWCxFQUFpQixLQUFqQjtBQUNELEdBVkg7O0FBQUEsU0FZRU8sT0FaRixHQVlFLGlCQUFTUCxJQUFULEVBQWU7QUFDYixRQUFJUSxJQUFJLEdBQUcsS0FBS0MsR0FBTCxDQUFTVCxJQUFULEVBQWUsTUFBZixFQUF1QixhQUF2QixDQUFYO0FBQ0EsUUFBSVUsS0FBSyxHQUFHLEtBQUtELEdBQUwsQ0FBU1QsSUFBVCxFQUFlLE9BQWYsRUFBd0IsY0FBeEIsQ0FBWjs7QUFFQSxRQUFJQSxJQUFJLENBQUNXLElBQUwsQ0FBVUMsTUFBZCxFQUFzQjtBQUNwQixXQUFLVixPQUFMLENBQWEsT0FBT00sSUFBUCxHQUFjUixJQUFJLENBQUNhLElBQW5CLEdBQTBCSCxLQUF2QyxFQUE4Q1YsSUFBOUM7QUFDRCxLQUZELE1BRU87QUFDTCxXQUFLRSxPQUFMLENBQWEsT0FBT00sSUFBUCxHQUFjUixJQUFJLENBQUNhLElBQW5CLEdBQTBCSCxLQUExQixHQUFrQyxJQUEvQyxFQUFxRFYsSUFBckQ7QUFDRDtBQUNGLEdBckJIOztBQUFBO0FBQUEsRUFBK0NMLFdBQS9DIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU3RyaW5naWZpZXIgPSByZXF1aXJlKCdwb3N0Y3NzL2xpYi9zdHJpbmdpZmllcicpXG5cbm1vZHVsZS5leHBvcnRzID0gY2xhc3MgU2Fzc1N0cmluZ2lmaWVyIGV4dGVuZHMgU3RyaW5naWZpZXIge1xuICBibG9jayAobm9kZSwgc3RhcnQpIHtcbiAgICB0aGlzLmJ1aWxkZXIoc3RhcnQsIG5vZGUsICdzdGFydCcpXG4gICAgaWYgKG5vZGUubm9kZXMgJiYgbm9kZS5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYm9keShub2RlKVxuICAgIH1cbiAgfVxuXG4gIGRlY2wgKG5vZGUpIHtcbiAgICBzdXBlci5kZWNsKG5vZGUsIGZhbHNlKVxuICB9XG5cbiAgY29tbWVudCAobm9kZSkge1xuICAgIGxldCBsZWZ0ID0gdGhpcy5yYXcobm9kZSwgJ2xlZnQnLCAnY29tbWVudExlZnQnKVxuICAgIGxldCByaWdodCA9IHRoaXMucmF3KG5vZGUsICdyaWdodCcsICdjb21tZW50UmlnaHQnKVxuXG4gICAgaWYgKG5vZGUucmF3cy5pbmxpbmUpIHtcbiAgICAgIHRoaXMuYnVpbGRlcignLy8nICsgbGVmdCArIG5vZGUudGV4dCArIHJpZ2h0LCBub2RlKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJ1aWxkZXIoJy8qJyArIGxlZnQgKyBub2RlLnRleHQgKyByaWdodCArICcqLycsIG5vZGUpXG4gICAgfVxuICB9XG59XG4iXX0= \ No newline at end of file
diff --git a/assets/node_modules/postcss-sass/stringify.js b/assets/node_modules/postcss-sass/stringify.js
deleted file mode 100644
index a60d7ca..0000000
--- a/assets/node_modules/postcss-sass/stringify.js
+++ /dev/null
@@ -1,9 +0,0 @@
-"use strict";
-
-var Stringifier = require('./stringifier');
-
-module.exports = function (node, builder) {
- var str = new Stringifier(builder);
- str.stringify(node);
-};
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmeS5lczYiXSwibmFtZXMiOlsiU3RyaW5naWZpZXIiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsIm5vZGUiLCJidWlsZGVyIiwic3RyIiwic3RyaW5naWZ5Il0sIm1hcHBpbmdzIjoiOztBQUFBLElBQU1BLFdBQVcsR0FBR0MsT0FBTyxDQUFDLGVBQUQsQ0FBM0I7O0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixVQUFDQyxJQUFELEVBQU9DLE9BQVAsRUFBbUI7QUFDbEMsTUFBSUMsR0FBRyxHQUFHLElBQUlOLFdBQUosQ0FBZ0JLLE9BQWhCLENBQVY7QUFDQUMsRUFBQUEsR0FBRyxDQUFDQyxTQUFKLENBQWNILElBQWQ7QUFDRCxDQUhEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU3RyaW5naWZpZXIgPSByZXF1aXJlKCcuL3N0cmluZ2lmaWVyJylcblxubW9kdWxlLmV4cG9ydHMgPSAobm9kZSwgYnVpbGRlcikgPT4ge1xuICBsZXQgc3RyID0gbmV3IFN0cmluZ2lmaWVyKGJ1aWxkZXIpXG4gIHN0ci5zdHJpbmdpZnkobm9kZSlcbn1cbiJdfQ== \ No newline at end of file
diff --git a/assets/node_modules/postcss-scss/CHANGELOG.md b/assets/node_modules/postcss-scss/CHANGELOG.md
deleted file mode 100644
index 308c961..0000000
--- a/assets/node_modules/postcss-scss/CHANGELOG.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# Change Log
-This project adheres to [Semantic Versioning](http://semver.org/).
-
-## 2.0
-* Remove Node.js 9 and Node.js 4 support.
-* Remove IE and “dead” browsers from Babel.
-* Use PostCSS 7.0.
-
-## 1.0.6
-* Fix parsing nested at-rules without semicolon, params, and spaces.
-* Fix parsing string in interpolation in string.
-
-## 1.0.5
-* Fix parsing `url( http://example.com )` with spaces inside.
-
-## 1.0.4
-* Fix parsing inline cpmments inside selectors.
-
-## 1.0.3
-* Remove development sections from published `package.json`.
-
-## 1.0.2
-* Fix escape sequences parsing (by Oleh Kuchuk).
-
-## 1.0.1
-* Fix position of multiline `url()`.
-
-## 1.0
-* Use PostCSS 6.0.
-* Use `babel-preset-env`.
-
-## 0.4.1
-* Fix compatibility with PostCSS 5.2.13.
-
-## 0.4
-* Add mixed comments support (`// width: 5% /* width: 6% */`)
-
-## 0.3.1
-* Fix parsing selector with interpolation in pseudo-class.
-
-## 0.3
-* Use PostCSS 5.2.
-
-## 0.2.1
-* Fix nested prop parser for prefixed pseudo.
-
-## 0.2
-* Add nested properties support (by dryoma).
-
-## 0.1.9
-* Use PostCSS 5.1.
-* Add source maos to build JS files.
-* Fix interpolation in `url()`.
-
-## 0.1.8
-* Fix interpolation-in-interpolation parsing.
-* Fix at-rule with interpolation parsing.
-
-## 0.1.7
-* Fix inline comments with Windows new lines.
-
-## 0.1.6
-* Parse new lines according W3C CSS syntax specification.
-
-## 0.1.5
-* Fix package dependencies.
-
-## 0.1.4
-* Fix CSS syntax error position on unclosed quotes.
-
-## 0.1.3
-* Fix ES2015 module export.
-
-## 0.1.2
-* Fix interpolation inside string.
-
-## 0.1.1
-* Fix `url()` parsing.
-
-## 0.1
-* Initial release.
diff --git a/assets/node_modules/postcss-scss/LICENSE b/assets/node_modules/postcss-scss/LICENSE
deleted file mode 100644
index da057b4..0000000
--- a/assets/node_modules/postcss-scss/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright 2013 Andrey Sitnik <andrey@sitnik.ru>
-
-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/assets/node_modules/postcss-scss/README.md b/assets/node_modules/postcss-scss/README.md
deleted file mode 100644
index 66a865e..0000000
--- a/assets/node_modules/postcss-scss/README.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# PostCSS SCSS Syntax [![Build Status][ci-img]][ci]
-
-<img align="right" width="95" height="95"
- title="Philosopher’s stone, logo of PostCSS"
- src="http://postcss.github.io/postcss/logo.svg">
-
-A [SCSS] parser for [PostCSS].
-
-**This module does not compile SCSS.** It simply parses mixins as custom
-at-rules & variables as properties, so that PostCSS plugins can then transform
-SCSS source code alongside CSS.
-
-[PostCSS]: https://github.com/postcss/postcss
-[ci-img]: https://img.shields.io/travis/postcss/postcss-scss.svg
-[SCSS]: http://sass-lang.com/
-[ci]: https://travis-ci.org/postcss/postcss-scss
-
-<a href="https://evilmartians.com/?utm_source=postcss">
-<img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg" alt="Sponsored by Evil Martians" width="236" height="54">
-</a>
-
-
-## Install
-
-```sh
-npm --save install postcss-scss
-```
-
-or (if you use [Yarn](https://yarnpkg.com/))
-
-```sh
-yarn add --dev postcss-scss
-```
-
-
-## Usage
-
-There are two ways to use this parser:
-
-### 1. SCSS Transformations
-
-The main use case of this plugin is to apply PostCSS transformations directly
-to SCSS source code.
-
-For example, you can lint SCSS source with [Stylelint]
-and linter will automatically fix issues in the source.
-
-```js
-// postcss.config.js
-module.exports = {
- syntax: 'postcss-scss',
- plugins: {
- …
- }
-}
-```
-
-[Stylelint]: http://stylelint.io/
-
-
-### 2. Inline Comments for PostCSS
-
-Also you can use this parser just to add `//` single-line comment
-to your PostCSS project (without any Sass):
-
-```scss
-:root {
- // Main theme color
- --color: red;
-}
-```
-
-Note that you don’t need a special stringifier to handle the output; the default
-one will automatically convert single line comments into block comments.
-
-```js
-// postcss.config.js
-module.exports = {
- parser: 'postcss-scss',
- plugins: {
- …
- }
-}
-```
-
-If you want Sass behaviour with removing inline comments, you can use
-[postcss-strip-inline-comments] plugin.
-
-[postcss-strip-inline-comments]: https://github.com/mummybot/postcss-strip-inline-comments
diff --git a/assets/node_modules/postcss-scss/lib/nested-declaration.js b/assets/node_modules/postcss-scss/lib/nested-declaration.js
deleted file mode 100644
index 784cd85..0000000
--- a/assets/node_modules/postcss-scss/lib/nested-declaration.js
+++ /dev/null
@@ -1,29 +0,0 @@
-'use strict';
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var Container = require('postcss/lib/container');
-
-var NestedDeclaration = function (_Container) {
- _inherits(NestedDeclaration, _Container);
-
- function NestedDeclaration(defaults) {
- _classCallCheck(this, NestedDeclaration);
-
- var _this = _possibleConstructorReturn(this, _Container.call(this, defaults));
-
- _this.type = 'decl';
- _this.isNested = true;
- if (!_this.nodes) _this.nodes = [];
- return _this;
- }
-
- return NestedDeclaration;
-}(Container);
-
-module.exports = NestedDeclaration;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5lc3RlZC1kZWNsYXJhdGlvbi5lczYiXSwibmFtZXMiOlsiQ29udGFpbmVyIiwicmVxdWlyZSIsIk5lc3RlZERlY2xhcmF0aW9uIiwiZGVmYXVsdHMiLCJ0eXBlIiwiaXNOZXN0ZWQiLCJub2RlcyIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBTUEsWUFBWUMsUUFBUSx1QkFBUixDQUFsQjs7SUFFTUMsaUI7OztBQUNKLDZCQUFhQyxRQUFiLEVBQXVCO0FBQUE7O0FBQUEsaURBQ3JCLHNCQUFNQSxRQUFOLENBRHFCOztBQUVyQixVQUFLQyxJQUFMLEdBQVksTUFBWjtBQUNBLFVBQUtDLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQSxRQUFJLENBQUMsTUFBS0MsS0FBVixFQUFpQixNQUFLQSxLQUFMLEdBQWEsRUFBYjtBQUpJO0FBS3RCOzs7RUFONkJOLFM7O0FBU2hDTyxPQUFPQyxPQUFQLEdBQWlCTixpQkFBakIiLCJmaWxlIjoibmVzdGVkLWRlY2xhcmF0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQ29udGFpbmVyID0gcmVxdWlyZSgncG9zdGNzcy9saWIvY29udGFpbmVyJylcblxuY2xhc3MgTmVzdGVkRGVjbGFyYXRpb24gZXh0ZW5kcyBDb250YWluZXIge1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cylcbiAgICB0aGlzLnR5cGUgPSAnZGVjbCdcbiAgICB0aGlzLmlzTmVzdGVkID0gdHJ1ZVxuICAgIGlmICghdGhpcy5ub2RlcykgdGhpcy5ub2RlcyA9IFtdXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBOZXN0ZWREZWNsYXJhdGlvblxuIl19
diff --git a/assets/node_modules/postcss-scss/lib/scss-parse.js b/assets/node_modules/postcss-scss/lib/scss-parse.js
deleted file mode 100644
index c5a4b56..0000000
--- a/assets/node_modules/postcss-scss/lib/scss-parse.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict';
-
-var Input = require('postcss/lib/input');
-
-var ScssParser = require('./scss-parser');
-
-module.exports = function scssParse(scss, opts) {
- var input = new Input(scss, opts);
-
- var parser = new ScssParser(input);
- parser.parse();
-
- return parser.root;
-};
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjc3MtcGFyc2UuZXM2Il0sIm5hbWVzIjpbIklucHV0IiwicmVxdWlyZSIsIlNjc3NQYXJzZXIiLCJtb2R1bGUiLCJleHBvcnRzIiwic2Nzc1BhcnNlIiwic2NzcyIsIm9wdHMiLCJpbnB1dCIsInBhcnNlciIsInBhcnNlIiwicm9vdCJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFNQSxRQUFRQyxRQUFRLG1CQUFSLENBQWQ7O0FBRUEsSUFBTUMsYUFBYUQsUUFBUSxlQUFSLENBQW5COztBQUVBRSxPQUFPQyxPQUFQLEdBQWlCLFNBQVNDLFNBQVQsQ0FBb0JDLElBQXBCLEVBQTBCQyxJQUExQixFQUFnQztBQUMvQyxNQUFNQyxRQUFRLElBQUlSLEtBQUosQ0FBVU0sSUFBVixFQUFnQkMsSUFBaEIsQ0FBZDs7QUFFQSxNQUFNRSxTQUFTLElBQUlQLFVBQUosQ0FBZU0sS0FBZixDQUFmO0FBQ0FDLFNBQU9DLEtBQVA7O0FBRUEsU0FBT0QsT0FBT0UsSUFBZDtBQUNELENBUEQiLCJmaWxlIjoic2Nzcy1wYXJzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IElucHV0ID0gcmVxdWlyZSgncG9zdGNzcy9saWIvaW5wdXQnKVxuXG5jb25zdCBTY3NzUGFyc2VyID0gcmVxdWlyZSgnLi9zY3NzLXBhcnNlcicpXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc2Nzc1BhcnNlIChzY3NzLCBvcHRzKSB7XG4gIGNvbnN0IGlucHV0ID0gbmV3IElucHV0KHNjc3MsIG9wdHMpXG5cbiAgY29uc3QgcGFyc2VyID0gbmV3IFNjc3NQYXJzZXIoaW5wdXQpXG4gIHBhcnNlci5wYXJzZSgpXG5cbiAgcmV0dXJuIHBhcnNlci5yb290XG59XG4iXX0=
diff --git a/assets/node_modules/postcss-scss/lib/scss-parser.js b/assets/node_modules/postcss-scss/lib/scss-parser.js
deleted file mode 100644
index 72bff2f..0000000
--- a/assets/node_modules/postcss-scss/lib/scss-parser.js
+++ /dev/null
@@ -1,199 +0,0 @@
-'use strict';
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var Comment = require('postcss/lib/comment');
-var Parser = require('postcss/lib/parser');
-
-var NestedDeclaration = require('./nested-declaration');
-var scssTokenizer = require('./scss-tokenize');
-
-var ScssParser = function (_Parser) {
- _inherits(ScssParser, _Parser);
-
- function ScssParser() {
- _classCallCheck(this, ScssParser);
-
- return _possibleConstructorReturn(this, _Parser.apply(this, arguments));
- }
-
- ScssParser.prototype.createTokenizer = function createTokenizer() {
- this.tokenizer = scssTokenizer(this.input);
- };
-
- ScssParser.prototype.rule = function rule(tokens) {
- var withColon = false;
- var brackets = 0;
- var value = '';
- for (var _iterator = tokens, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var i = _ref;
-
- if (withColon) {
- if (i[0] !== 'comment' && i[0] !== '{') {
- value += i[1];
- }
- } else if (i[0] === 'space' && i[1].indexOf('\n') !== -1) {
- break;
- } else if (i[0] === '(') {
- brackets += 1;
- } else if (i[0] === ')') {
- brackets -= 1;
- } else if (brackets === 0 && i[0] === ':') {
- withColon = true;
- }
- }
-
- if (!withColon || value.trim() === '' || /^[a-zA-Z-:#]/.test(value)) {
- _Parser.prototype.rule.call(this, tokens);
- } else {
- tokens.pop();
- var node = new NestedDeclaration();
- this.init(node);
-
- var last = tokens[tokens.length - 1];
- if (last[4]) {
- node.source.end = { line: last[4], column: last[5] };
- } else {
- node.source.end = { line: last[2], column: last[3] };
- }
-
- while (tokens[0][0] !== 'word') {
- node.raws.before += tokens.shift()[1];
- }
- node.source.start = { line: tokens[0][2], column: tokens[0][3] };
-
- node.prop = '';
- while (tokens.length) {
- var type = tokens[0][0];
- if (type === ':' || type === 'space' || type === 'comment') {
- break;
- }
- node.prop += tokens.shift()[1];
- }
-
- node.raws.between = '';
-
- var token = void 0;
- while (tokens.length) {
- token = tokens.shift();
-
- if (token[0] === ':') {
- node.raws.between += token[1];
- break;
- } else {
- node.raws.between += token[1];
- }
- }
-
- if (node.prop[0] === '_' || node.prop[0] === '*') {
- node.raws.before += node.prop[0];
- node.prop = node.prop.slice(1);
- }
- node.raws.between += this.spacesAndCommentsFromStart(tokens);
- this.precheckMissedSemicolon(tokens);
-
- for (var _i2 = tokens.length - 1; _i2 > 0; _i2--) {
- token = tokens[_i2];
- if (token[1] === '!important') {
- node.important = true;
- var string = this.stringFrom(tokens, _i2);
- string = this.spacesFromEnd(tokens) + string;
- if (string !== ' !important') {
- node.raws.important = string;
- }
- break;
- } else if (token[1] === 'important') {
- var cache = tokens.slice(0);
- var str = '';
- for (var j = _i2; j > 0; j--) {
- var _type = cache[j][0];
- if (str.trim().indexOf('!') === 0 && _type !== 'space') {
- break;
- }
- str = cache.pop()[1] + str;
- }
- if (str.trim().indexOf('!') === 0) {
- node.important = true;
- node.raws.important = str;
- tokens = cache;
- }
- }
-
- if (token[0] !== 'space' && token[0] !== 'comment') {
- break;
- }
- }
-
- this.raw(node, 'value', tokens);
-
- if (node.value.indexOf(':') !== -1) {
- this.checkMissedSemicolon(tokens);
- }
-
- this.current = node;
- }
- };
-
- ScssParser.prototype.comment = function comment(token) {
- if (token[6] === 'inline') {
- var node = new Comment();
- this.init(node, token[2], token[3]);
- node.raws.inline = true;
- node.source.end = { line: token[4], column: token[5] };
-
- var text = token[1].slice(2);
- if (/^\s*$/.test(text)) {
- node.text = '';
- node.raws.left = text;
- node.raws.right = '';
- } else {
- var match = text.match(/^(\s*)([^]*[^\s])(\s*)$/);
- var fixed = match[2].replace(/(\*\/|\/\*)/g, '*//*');
- node.text = fixed;
- node.raws.left = match[1];
- node.raws.right = match[3];
- node.raws.text = match[2];
- }
- } else {
- _Parser.prototype.comment.call(this, token);
- }
- };
-
- ScssParser.prototype.raw = function raw(node, prop, tokens) {
- _Parser.prototype.raw.call(this, node, prop, tokens);
- if (node.raws[prop]) {
- var scss = node.raws[prop].raw;
- node.raws[prop].raw = tokens.reduce(function (all, i) {
- if (i[0] === 'comment' && i[6] === 'inline') {
- var text = i[1].slice(2).replace(/(\*\/|\/\*)/g, '*//*');
- return all + '/*' + text + '*/';
- } else {
- return all + i[1];
- }
- }, '');
- if (scss !== node.raws[prop].raw) {
- node.raws[prop].scss = scss;
- }
- }
- };
-
- return ScssParser;
-}(Parser);
-
-module.exports = ScssParser;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjc3MtcGFyc2VyLmVzNiJdLCJuYW1lcyI6WyJDb21tZW50IiwicmVxdWlyZSIsIlBhcnNlciIsIk5lc3RlZERlY2xhcmF0aW9uIiwic2Nzc1Rva2VuaXplciIsIlNjc3NQYXJzZXIiLCJjcmVhdGVUb2tlbml6ZXIiLCJ0b2tlbml6ZXIiLCJpbnB1dCIsInJ1bGUiLCJ0b2tlbnMiLCJ3aXRoQ29sb24iLCJicmFja2V0cyIsInZhbHVlIiwiaSIsImluZGV4T2YiLCJ0cmltIiwidGVzdCIsInBvcCIsIm5vZGUiLCJpbml0IiwibGFzdCIsImxlbmd0aCIsInNvdXJjZSIsImVuZCIsImxpbmUiLCJjb2x1bW4iLCJyYXdzIiwiYmVmb3JlIiwic2hpZnQiLCJzdGFydCIsInByb3AiLCJ0eXBlIiwiYmV0d2VlbiIsInRva2VuIiwic2xpY2UiLCJzcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydCIsInByZWNoZWNrTWlzc2VkU2VtaWNvbG9uIiwiaW1wb3J0YW50Iiwic3RyaW5nIiwic3RyaW5nRnJvbSIsInNwYWNlc0Zyb21FbmQiLCJjYWNoZSIsInN0ciIsImoiLCJyYXciLCJjaGVja01pc3NlZFNlbWljb2xvbiIsImN1cnJlbnQiLCJjb21tZW50IiwiaW5saW5lIiwidGV4dCIsImxlZnQiLCJyaWdodCIsIm1hdGNoIiwiZml4ZWQiLCJyZXBsYWNlIiwic2NzcyIsInJlZHVjZSIsImFsbCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBTUEsVUFBVUMsUUFBUSxxQkFBUixDQUFoQjtBQUNBLElBQU1DLFNBQVNELFFBQVEsb0JBQVIsQ0FBZjs7QUFFQSxJQUFNRSxvQkFBb0JGLFFBQVEsc0JBQVIsQ0FBMUI7QUFDQSxJQUFNRyxnQkFBZ0JILFFBQVEsaUJBQVIsQ0FBdEI7O0lBRU1JLFU7Ozs7Ozs7Ozt1QkFDSkMsZSw4QkFBbUI7QUFDakIsU0FBS0MsU0FBTCxHQUFpQkgsY0FBYyxLQUFLSSxLQUFuQixDQUFqQjtBQUNELEc7O3VCQUVEQyxJLGlCQUFNQyxNLEVBQVE7QUFDWixRQUFJQyxZQUFZLEtBQWhCO0FBQ0EsUUFBSUMsV0FBVyxDQUFmO0FBQ0EsUUFBSUMsUUFBUSxFQUFaO0FBQ0EseUJBQWdCSCxNQUFoQixrSEFBd0I7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLFVBQWJJLENBQWE7O0FBQ3RCLFVBQUlILFNBQUosRUFBZTtBQUNiLFlBQUlHLEVBQUUsQ0FBRixNQUFTLFNBQVQsSUFBc0JBLEVBQUUsQ0FBRixNQUFTLEdBQW5DLEVBQXdDO0FBQ3RDRCxtQkFBU0MsRUFBRSxDQUFGLENBQVQ7QUFDRDtBQUNGLE9BSkQsTUFJTyxJQUFJQSxFQUFFLENBQUYsTUFBUyxPQUFULElBQW9CQSxFQUFFLENBQUYsRUFBS0MsT0FBTCxDQUFhLElBQWIsTUFBdUIsQ0FBQyxDQUFoRCxFQUFtRDtBQUN4RDtBQUNELE9BRk0sTUFFQSxJQUFJRCxFQUFFLENBQUYsTUFBUyxHQUFiLEVBQWtCO0FBQ3ZCRixvQkFBWSxDQUFaO0FBQ0QsT0FGTSxNQUVBLElBQUlFLEVBQUUsQ0FBRixNQUFTLEdBQWIsRUFBa0I7QUFDdkJGLG9CQUFZLENBQVo7QUFDRCxPQUZNLE1BRUEsSUFBSUEsYUFBYSxDQUFiLElBQWtCRSxFQUFFLENBQUYsTUFBUyxHQUEvQixFQUFvQztBQUN6Q0gsb0JBQVksSUFBWjtBQUNEO0FBQ0Y7O0FBRUQsUUFBSSxDQUFDQSxTQUFELElBQWNFLE1BQU1HLElBQU4sT0FBaUIsRUFBL0IsSUFBcUMsZUFBZUMsSUFBZixDQUFvQkosS0FBcEIsQ0FBekMsRUFBcUU7QUFDbkUsd0JBQU1KLElBQU4sWUFBV0MsTUFBWDtBQUNELEtBRkQsTUFFTztBQUNMQSxhQUFPUSxHQUFQO0FBQ0EsVUFBTUMsT0FBTyxJQUFJaEIsaUJBQUosRUFBYjtBQUNBLFdBQUtpQixJQUFMLENBQVVELElBQVY7O0FBRUEsVUFBTUUsT0FBT1gsT0FBT0EsT0FBT1ksTUFBUCxHQUFnQixDQUF2QixDQUFiO0FBQ0EsVUFBSUQsS0FBSyxDQUFMLENBQUosRUFBYTtBQUNYRixhQUFLSSxNQUFMLENBQVlDLEdBQVosR0FBa0IsRUFBRUMsTUFBTUosS0FBSyxDQUFMLENBQVIsRUFBaUJLLFFBQVFMLEtBQUssQ0FBTCxDQUF6QixFQUFsQjtBQUNELE9BRkQsTUFFTztBQUNMRixhQUFLSSxNQUFMLENBQVlDLEdBQVosR0FBa0IsRUFBRUMsTUFBTUosS0FBSyxDQUFMLENBQVIsRUFBaUJLLFFBQVFMLEtBQUssQ0FBTCxDQUF6QixFQUFsQjtBQUNEOztBQUVELGFBQU9YLE9BQU8sQ0FBUCxFQUFVLENBQVYsTUFBaUIsTUFBeEIsRUFBZ0M7QUFDOUJTLGFBQUtRLElBQUwsQ0FBVUMsTUFBVixJQUFvQmxCLE9BQU9tQixLQUFQLEdBQWUsQ0FBZixDQUFwQjtBQUNEO0FBQ0RWLFdBQUtJLE1BQUwsQ0FBWU8sS0FBWixHQUFvQixFQUFFTCxNQUFNZixPQUFPLENBQVAsRUFBVSxDQUFWLENBQVIsRUFBc0JnQixRQUFRaEIsT0FBTyxDQUFQLEVBQVUsQ0FBVixDQUE5QixFQUFwQjs7QUFFQVMsV0FBS1ksSUFBTCxHQUFZLEVBQVo7QUFDQSxhQUFPckIsT0FBT1ksTUFBZCxFQUFzQjtBQUNwQixZQUFNVSxPQUFPdEIsT0FBTyxDQUFQLEVBQVUsQ0FBVixDQUFiO0FBQ0EsWUFBSXNCLFNBQVMsR0FBVCxJQUFnQkEsU0FBUyxPQUF6QixJQUFvQ0EsU0FBUyxTQUFqRCxFQUE0RDtBQUMxRDtBQUNEO0FBQ0RiLGFBQUtZLElBQUwsSUFBYXJCLE9BQU9tQixLQUFQLEdBQWUsQ0FBZixDQUFiO0FBQ0Q7O0FBRURWLFdBQUtRLElBQUwsQ0FBVU0sT0FBVixHQUFvQixFQUFwQjs7QUFFQSxVQUFJQyxjQUFKO0FBQ0EsYUFBT3hCLE9BQU9ZLE1BQWQsRUFBc0I7QUFDcEJZLGdCQUFReEIsT0FBT21CLEtBQVAsRUFBUjs7QUFFQSxZQUFJSyxNQUFNLENBQU4sTUFBYSxHQUFqQixFQUFzQjtBQUNwQmYsZUFBS1EsSUFBTCxDQUFVTSxPQUFWLElBQXFCQyxNQUFNLENBQU4sQ0FBckI7QUFDQTtBQUNELFNBSEQsTUFHTztBQUNMZixlQUFLUSxJQUFMLENBQVVNLE9BQVYsSUFBcUJDLE1BQU0sQ0FBTixDQUFyQjtBQUNEO0FBQ0Y7O0FBRUQsVUFBSWYsS0FBS1ksSUFBTCxDQUFVLENBQVYsTUFBaUIsR0FBakIsSUFBd0JaLEtBQUtZLElBQUwsQ0FBVSxDQUFWLE1BQWlCLEdBQTdDLEVBQWtEO0FBQ2hEWixhQUFLUSxJQUFMLENBQVVDLE1BQVYsSUFBb0JULEtBQUtZLElBQUwsQ0FBVSxDQUFWLENBQXBCO0FBQ0FaLGFBQUtZLElBQUwsR0FBWVosS0FBS1ksSUFBTCxDQUFVSSxLQUFWLENBQWdCLENBQWhCLENBQVo7QUFDRDtBQUNEaEIsV0FBS1EsSUFBTCxDQUFVTSxPQUFWLElBQXFCLEtBQUtHLDBCQUFMLENBQWdDMUIsTUFBaEMsQ0FBckI7QUFDQSxXQUFLMkIsdUJBQUwsQ0FBNkIzQixNQUE3Qjs7QUFFQSxXQUFLLElBQUlJLE1BQUlKLE9BQU9ZLE1BQVAsR0FBZ0IsQ0FBN0IsRUFBZ0NSLE1BQUksQ0FBcEMsRUFBdUNBLEtBQXZDLEVBQTRDO0FBQzFDb0IsZ0JBQVF4QixPQUFPSSxHQUFQLENBQVI7QUFDQSxZQUFJb0IsTUFBTSxDQUFOLE1BQWEsWUFBakIsRUFBK0I7QUFDN0JmLGVBQUttQixTQUFMLEdBQWlCLElBQWpCO0FBQ0EsY0FBSUMsU0FBUyxLQUFLQyxVQUFMLENBQWdCOUIsTUFBaEIsRUFBd0JJLEdBQXhCLENBQWI7QUFDQXlCLG1CQUFTLEtBQUtFLGFBQUwsQ0FBbUIvQixNQUFuQixJQUE2QjZCLE1BQXRDO0FBQ0EsY0FBSUEsV0FBVyxhQUFmLEVBQThCO0FBQzVCcEIsaUJBQUtRLElBQUwsQ0FBVVcsU0FBVixHQUFzQkMsTUFBdEI7QUFDRDtBQUNEO0FBQ0QsU0FSRCxNQVFPLElBQUlMLE1BQU0sQ0FBTixNQUFhLFdBQWpCLEVBQThCO0FBQ25DLGNBQU1RLFFBQVFoQyxPQUFPeUIsS0FBUCxDQUFhLENBQWIsQ0FBZDtBQUNBLGNBQUlRLE1BQU0sRUFBVjtBQUNBLGVBQUssSUFBSUMsSUFBSTlCLEdBQWIsRUFBZ0I4QixJQUFJLENBQXBCLEVBQXVCQSxHQUF2QixFQUE0QjtBQUMxQixnQkFBTVosUUFBT1UsTUFBTUUsQ0FBTixFQUFTLENBQVQsQ0FBYjtBQUNBLGdCQUFJRCxJQUFJM0IsSUFBSixHQUFXRCxPQUFYLENBQW1CLEdBQW5CLE1BQTRCLENBQTVCLElBQ1lpQixVQUFTLE9BRHpCLEVBRUU7QUFDQTtBQUNEO0FBQ0RXLGtCQUFNRCxNQUFNeEIsR0FBTixHQUFZLENBQVosSUFBaUJ5QixHQUF2QjtBQUNEO0FBQ0QsY0FBSUEsSUFBSTNCLElBQUosR0FBV0QsT0FBWCxDQUFtQixHQUFuQixNQUE0QixDQUFoQyxFQUFtQztBQUNqQ0ksaUJBQUttQixTQUFMLEdBQWlCLElBQWpCO0FBQ0FuQixpQkFBS1EsSUFBTCxDQUFVVyxTQUFWLEdBQXNCSyxHQUF0QjtBQUNBakMscUJBQVNnQyxLQUFUO0FBQ0Q7QUFDRjs7QUFFRCxZQUFJUixNQUFNLENBQU4sTUFBYSxPQUFiLElBQXdCQSxNQUFNLENBQU4sTUFBYSxTQUF6QyxFQUFvRDtBQUNsRDtBQUNEO0FBQ0Y7O0FBRUQsV0FBS1csR0FBTCxDQUFTMUIsSUFBVCxFQUFlLE9BQWYsRUFBd0JULE1BQXhCOztBQUVBLFVBQUlTLEtBQUtOLEtBQUwsQ0FBV0UsT0FBWCxDQUFtQixHQUFuQixNQUE0QixDQUFDLENBQWpDLEVBQW9DO0FBQ2xDLGFBQUsrQixvQkFBTCxDQUEwQnBDLE1BQTFCO0FBQ0Q7O0FBRUQsV0FBS3FDLE9BQUwsR0FBZTVCLElBQWY7QUFDRDtBQUNGLEc7O3VCQUVENkIsTyxvQkFBU2QsSyxFQUFPO0FBQ2QsUUFBSUEsTUFBTSxDQUFOLE1BQWEsUUFBakIsRUFBMkI7QUFDekIsVUFBTWYsT0FBTyxJQUFJbkIsT0FBSixFQUFiO0FBQ0EsV0FBS29CLElBQUwsQ0FBVUQsSUFBVixFQUFnQmUsTUFBTSxDQUFOLENBQWhCLEVBQTBCQSxNQUFNLENBQU4sQ0FBMUI7QUFDQWYsV0FBS1EsSUFBTCxDQUFVc0IsTUFBVixHQUFtQixJQUFuQjtBQUNBOUIsV0FBS0ksTUFBTCxDQUFZQyxHQUFaLEdBQWtCLEVBQUVDLE1BQU1TLE1BQU0sQ0FBTixDQUFSLEVBQWtCUixRQUFRUSxNQUFNLENBQU4sQ0FBMUIsRUFBbEI7O0FBRUEsVUFBTWdCLE9BQU9oQixNQUFNLENBQU4sRUFBU0MsS0FBVCxDQUFlLENBQWYsQ0FBYjtBQUNBLFVBQUksUUFBUWxCLElBQVIsQ0FBYWlDLElBQWIsQ0FBSixFQUF3QjtBQUN0Qi9CLGFBQUsrQixJQUFMLEdBQVksRUFBWjtBQUNBL0IsYUFBS1EsSUFBTCxDQUFVd0IsSUFBVixHQUFpQkQsSUFBakI7QUFDQS9CLGFBQUtRLElBQUwsQ0FBVXlCLEtBQVYsR0FBa0IsRUFBbEI7QUFDRCxPQUpELE1BSU87QUFDTCxZQUFNQyxRQUFRSCxLQUFLRyxLQUFMLENBQVcseUJBQVgsQ0FBZDtBQUNBLFlBQU1DLFFBQVFELE1BQU0sQ0FBTixFQUFTRSxPQUFULENBQWlCLGNBQWpCLEVBQWlDLE1BQWpDLENBQWQ7QUFDQXBDLGFBQUsrQixJQUFMLEdBQVlJLEtBQVo7QUFDQW5DLGFBQUtRLElBQUwsQ0FBVXdCLElBQVYsR0FBaUJFLE1BQU0sQ0FBTixDQUFqQjtBQUNBbEMsYUFBS1EsSUFBTCxDQUFVeUIsS0FBVixHQUFrQkMsTUFBTSxDQUFOLENBQWxCO0FBQ0FsQyxhQUFLUSxJQUFMLENBQVV1QixJQUFWLEdBQWlCRyxNQUFNLENBQU4sQ0FBakI7QUFDRDtBQUNGLEtBbkJELE1BbUJPO0FBQ0wsd0JBQU1MLE9BQU4sWUFBY2QsS0FBZDtBQUNEO0FBQ0YsRzs7dUJBRURXLEcsZ0JBQUsxQixJLEVBQU1ZLEksRUFBTXJCLE0sRUFBUTtBQUN2QixzQkFBTW1DLEdBQU4sWUFBVTFCLElBQVYsRUFBZ0JZLElBQWhCLEVBQXNCckIsTUFBdEI7QUFDQSxRQUFJUyxLQUFLUSxJQUFMLENBQVVJLElBQVYsQ0FBSixFQUFxQjtBQUNuQixVQUFNeUIsT0FBT3JDLEtBQUtRLElBQUwsQ0FBVUksSUFBVixFQUFnQmMsR0FBN0I7QUFDQTFCLFdBQUtRLElBQUwsQ0FBVUksSUFBVixFQUFnQmMsR0FBaEIsR0FBc0JuQyxPQUFPK0MsTUFBUCxDQUFjLFVBQUNDLEdBQUQsRUFBTTVDLENBQU4sRUFBWTtBQUM5QyxZQUFJQSxFQUFFLENBQUYsTUFBUyxTQUFULElBQXNCQSxFQUFFLENBQUYsTUFBUyxRQUFuQyxFQUE2QztBQUMzQyxjQUFNb0MsT0FBT3BDLEVBQUUsQ0FBRixFQUFLcUIsS0FBTCxDQUFXLENBQVgsRUFBY29CLE9BQWQsQ0FBc0IsY0FBdEIsRUFBc0MsTUFBdEMsQ0FBYjtBQUNBLGlCQUFPRyxNQUFNLElBQU4sR0FBYVIsSUFBYixHQUFvQixJQUEzQjtBQUNELFNBSEQsTUFHTztBQUNMLGlCQUFPUSxNQUFNNUMsRUFBRSxDQUFGLENBQWI7QUFDRDtBQUNGLE9BUHFCLEVBT25CLEVBUG1CLENBQXRCO0FBUUEsVUFBSTBDLFNBQVNyQyxLQUFLUSxJQUFMLENBQVVJLElBQVYsRUFBZ0JjLEdBQTdCLEVBQWtDO0FBQ2hDMUIsYUFBS1EsSUFBTCxDQUFVSSxJQUFWLEVBQWdCeUIsSUFBaEIsR0FBdUJBLElBQXZCO0FBQ0Q7QUFDRjtBQUNGLEc7OztFQS9Kc0J0RCxNOztBQWtLekJ5RCxPQUFPQyxPQUFQLEdBQWlCdkQsVUFBakIiLCJmaWxlIjoic2Nzcy1wYXJzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBDb21tZW50ID0gcmVxdWlyZSgncG9zdGNzcy9saWIvY29tbWVudCcpXG5jb25zdCBQYXJzZXIgPSByZXF1aXJlKCdwb3N0Y3NzL2xpYi9wYXJzZXInKVxuXG5jb25zdCBOZXN0ZWREZWNsYXJhdGlvbiA9IHJlcXVpcmUoJy4vbmVzdGVkLWRlY2xhcmF0aW9uJylcbmNvbnN0IHNjc3NUb2tlbml6ZXIgPSByZXF1aXJlKCcuL3Njc3MtdG9rZW5pemUnKVxuXG5jbGFzcyBTY3NzUGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgY3JlYXRlVG9rZW5pemVyICgpIHtcbiAgICB0aGlzLnRva2VuaXplciA9IHNjc3NUb2tlbml6ZXIodGhpcy5pbnB1dClcbiAgfVxuXG4gIHJ1bGUgKHRva2Vucykge1xuICAgIGxldCB3aXRoQ29sb24gPSBmYWxzZVxuICAgIGxldCBicmFja2V0cyA9IDBcbiAgICBsZXQgdmFsdWUgPSAnJ1xuICAgIGZvciAoY29uc3QgaSBvZiB0b2tlbnMpIHtcbiAgICAgIGlmICh3aXRoQ29sb24pIHtcbiAgICAgICAgaWYgKGlbMF0gIT09ICdjb21tZW50JyAmJiBpWzBdICE9PSAneycpIHtcbiAgICAgICAgICB2YWx1ZSArPSBpWzFdXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaVswXSA9PT0gJ3NwYWNlJyAmJiBpWzFdLmluZGV4T2YoJ1xcbicpICE9PSAtMSkge1xuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIGlmIChpWzBdID09PSAnKCcpIHtcbiAgICAgICAgYnJhY2tldHMgKz0gMVxuICAgICAgfSBlbHNlIGlmIChpWzBdID09PSAnKScpIHtcbiAgICAgICAgYnJhY2tldHMgLT0gMVxuICAgICAgfSBlbHNlIGlmIChicmFja2V0cyA9PT0gMCAmJiBpWzBdID09PSAnOicpIHtcbiAgICAgICAgd2l0aENvbG9uID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghd2l0aENvbG9uIHx8IHZhbHVlLnRyaW0oKSA9PT0gJycgfHwgL15bYS16QS1aLTojXS8udGVzdCh2YWx1ZSkpIHtcbiAgICAgIHN1cGVyLnJ1bGUodG9rZW5zKVxuICAgIH0gZWxzZSB7XG4gICAgICB0b2tlbnMucG9wKClcbiAgICAgIGNvbnN0IG5vZGUgPSBuZXcgTmVzdGVkRGVjbGFyYXRpb24oKVxuICAgICAgdGhpcy5pbml0KG5vZGUpXG5cbiAgICAgIGNvbnN0IGxhc3QgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdXG4gICAgICBpZiAobGFzdFs0XSkge1xuICAgICAgICBub2RlLnNvdXJjZS5lbmQgPSB7IGxpbmU6IGxhc3RbNF0sIGNvbHVtbjogbGFzdFs1XSB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLnNvdXJjZS5lbmQgPSB7IGxpbmU6IGxhc3RbMl0sIGNvbHVtbjogbGFzdFszXSB9XG4gICAgICB9XG5cbiAgICAgIHdoaWxlICh0b2tlbnNbMF1bMF0gIT09ICd3b3JkJykge1xuICAgICAgICBub2RlLnJhd3MuYmVmb3JlICs9IHRva2Vucy5zaGlmdCgpWzFdXG4gICAgICB9XG4gICAgICBub2RlLnNvdXJjZS5zdGFydCA9IHsgbGluZTogdG9rZW5zWzBdWzJdLCBjb2x1bW46IHRva2Vuc1swXVszXSB9XG5cbiAgICAgIG5vZGUucHJvcCA9ICcnXG4gICAgICB3aGlsZSAodG9rZW5zLmxlbmd0aCkge1xuICAgICAgICBjb25zdCB0eXBlID0gdG9rZW5zWzBdWzBdXG4gICAgICAgIGlmICh0eXBlID09PSAnOicgfHwgdHlwZSA9PT0gJ3NwYWNlJyB8fCB0eXBlID09PSAnY29tbWVudCcpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIG5vZGUucHJvcCArPSB0b2tlbnMuc2hpZnQoKVsxXVxuICAgICAgfVxuXG4gICAgICBub2RlLnJhd3MuYmV0d2VlbiA9ICcnXG5cbiAgICAgIGxldCB0b2tlblxuICAgICAgd2hpbGUgKHRva2Vucy5sZW5ndGgpIHtcbiAgICAgICAgdG9rZW4gPSB0b2tlbnMuc2hpZnQoKVxuXG4gICAgICAgIGlmICh0b2tlblswXSA9PT0gJzonKSB7XG4gICAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gKz0gdG9rZW5bMV1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vZGUucmF3cy5iZXR3ZWVuICs9IHRva2VuWzFdXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGUucHJvcFswXSA9PT0gJ18nIHx8IG5vZGUucHJvcFswXSA9PT0gJyonKSB7XG4gICAgICAgIG5vZGUucmF3cy5iZWZvcmUgKz0gbm9kZS5wcm9wWzBdXG4gICAgICAgIG5vZGUucHJvcCA9IG5vZGUucHJvcC5zbGljZSgxKVxuICAgICAgfVxuICAgICAgbm9kZS5yYXdzLmJldHdlZW4gKz0gdGhpcy5zcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydCh0b2tlbnMpXG4gICAgICB0aGlzLnByZWNoZWNrTWlzc2VkU2VtaWNvbG9uKHRva2VucylcblxuICAgICAgZm9yIChsZXQgaSA9IHRva2Vucy5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSB7XG4gICAgICAgIHRva2VuID0gdG9rZW5zW2ldXG4gICAgICAgIGlmICh0b2tlblsxXSA9PT0gJyFpbXBvcnRhbnQnKSB7XG4gICAgICAgICAgbm9kZS5pbXBvcnRhbnQgPSB0cnVlXG4gICAgICAgICAgbGV0IHN0cmluZyA9IHRoaXMuc3RyaW5nRnJvbSh0b2tlbnMsIGkpXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5zcGFjZXNGcm9tRW5kKHRva2VucykgKyBzdHJpbmdcbiAgICAgICAgICBpZiAoc3RyaW5nICE9PSAnICFpbXBvcnRhbnQnKSB7XG4gICAgICAgICAgICBub2RlLnJhd3MuaW1wb3J0YW50ID0gc3RyaW5nXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH0gZWxzZSBpZiAodG9rZW5bMV0gPT09ICdpbXBvcnRhbnQnKSB7XG4gICAgICAgICAgY29uc3QgY2FjaGUgPSB0b2tlbnMuc2xpY2UoMClcbiAgICAgICAgICBsZXQgc3RyID0gJydcbiAgICAgICAgICBmb3IgKGxldCBqID0gaTsgaiA+IDA7IGotLSkge1xuICAgICAgICAgICAgY29uc3QgdHlwZSA9IGNhY2hlW2pdWzBdXG4gICAgICAgICAgICBpZiAoc3RyLnRyaW0oKS5pbmRleE9mKCchJykgPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICE9PSAnc3BhY2UnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0ciA9IGNhY2hlLnBvcCgpWzFdICsgc3RyXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzdHIudHJpbSgpLmluZGV4T2YoJyEnKSA9PT0gMCkge1xuICAgICAgICAgICAgbm9kZS5pbXBvcnRhbnQgPSB0cnVlXG4gICAgICAgICAgICBub2RlLnJhd3MuaW1wb3J0YW50ID0gc3RyXG4gICAgICAgICAgICB0b2tlbnMgPSBjYWNoZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0b2tlblswXSAhPT0gJ3NwYWNlJyAmJiB0b2tlblswXSAhPT0gJ2NvbW1lbnQnKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLnJhdyhub2RlLCAndmFsdWUnLCB0b2tlbnMpXG5cbiAgICAgIGlmIChub2RlLnZhbHVlLmluZGV4T2YoJzonKSAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5jaGVja01pc3NlZFNlbWljb2xvbih0b2tlbnMpXG4gICAgICB9XG5cbiAgICAgIHRoaXMuY3VycmVudCA9IG5vZGVcbiAgICB9XG4gIH1cblxuICBjb21tZW50ICh0b2tlbikge1xuICAgIGlmICh0b2tlbls2XSA9PT0gJ2lubGluZScpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBuZXcgQ29tbWVudCgpXG4gICAgICB0aGlzLmluaXQobm9kZSwgdG9rZW5bMl0sIHRva2VuWzNdKVxuICAgICAgbm9kZS5yYXdzLmlubGluZSA9IHRydWVcbiAgICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogdG9rZW5bNF0sIGNvbHVtbjogdG9rZW5bNV0gfVxuXG4gICAgICBjb25zdCB0ZXh0ID0gdG9rZW5bMV0uc2xpY2UoMilcbiAgICAgIGlmICgvXlxccyokLy50ZXN0KHRleHQpKSB7XG4gICAgICAgIG5vZGUudGV4dCA9ICcnXG4gICAgICAgIG5vZGUucmF3cy5sZWZ0ID0gdGV4dFxuICAgICAgICBub2RlLnJhd3MucmlnaHQgPSAnJ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0ZXh0Lm1hdGNoKC9eKFxccyopKFteXSpbXlxcc10pKFxccyopJC8pXG4gICAgICAgIGNvbnN0IGZpeGVkID0gbWF0Y2hbMl0ucmVwbGFjZSgvKFxcKlxcL3xcXC9cXCopL2csICcqLy8qJylcbiAgICAgICAgbm9kZS50ZXh0ID0gZml4ZWRcbiAgICAgICAgbm9kZS5yYXdzLmxlZnQgPSBtYXRjaFsxXVxuICAgICAgICBub2RlLnJhd3MucmlnaHQgPSBtYXRjaFszXVxuICAgICAgICBub2RlLnJhd3MudGV4dCA9IG1hdGNoWzJdXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1cGVyLmNvbW1lbnQodG9rZW4pXG4gICAgfVxuICB9XG5cbiAgcmF3IChub2RlLCBwcm9wLCB0b2tlbnMpIHtcbiAgICBzdXBlci5yYXcobm9kZSwgcHJvcCwgdG9rZW5zKVxuICAgIGlmIChub2RlLnJhd3NbcHJvcF0pIHtcbiAgICAgIGNvbnN0IHNjc3MgPSBub2RlLnJhd3NbcHJvcF0ucmF3XG4gICAgICBub2RlLnJhd3NbcHJvcF0ucmF3ID0gdG9rZW5zLnJlZHVjZSgoYWxsLCBpKSA9PiB7XG4gICAgICAgIGlmIChpWzBdID09PSAnY29tbWVudCcgJiYgaVs2XSA9PT0gJ2lubGluZScpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gaVsxXS5zbGljZSgyKS5yZXBsYWNlKC8oXFwqXFwvfFxcL1xcKikvZywgJyovLyonKVxuICAgICAgICAgIHJldHVybiBhbGwgKyAnLyonICsgdGV4dCArICcqLydcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYWxsICsgaVsxXVxuICAgICAgICB9XG4gICAgICB9LCAnJylcbiAgICAgIGlmIChzY3NzICE9PSBub2RlLnJhd3NbcHJvcF0ucmF3KSB7XG4gICAgICAgIG5vZGUucmF3c1twcm9wXS5zY3NzID0gc2Nzc1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNjc3NQYXJzZXJcbiJdfQ==
diff --git a/assets/node_modules/postcss-scss/lib/scss-stringifier.js b/assets/node_modules/postcss-scss/lib/scss-stringifier.js
deleted file mode 100644
index 8c49821..0000000
--- a/assets/node_modules/postcss-scss/lib/scss-stringifier.js
+++ /dev/null
@@ -1,70 +0,0 @@
-'use strict';
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var Stringifier = require('postcss/lib/stringifier');
-
-var ScssStringifier = function (_Stringifier) {
- _inherits(ScssStringifier, _Stringifier);
-
- function ScssStringifier() {
- _classCallCheck(this, ScssStringifier);
-
- return _possibleConstructorReturn(this, _Stringifier.apply(this, arguments));
- }
-
- ScssStringifier.prototype.comment = function comment(node) {
- var left = this.raw(node, 'left', 'commentLeft');
- var right = this.raw(node, 'right', 'commentRight');
-
- if (node.raws.inline) {
- var text = node.raws.text || node.text;
- this.builder('//' + left + text + right, node);
- } else {
- this.builder('/*' + left + node.text + right + '*/', node);
- }
- };
-
- ScssStringifier.prototype.decl = function decl(node, semicolon) {
- if (!node.isNested) {
- _Stringifier.prototype.decl.call(this, node, semicolon);
- } else {
- var between = this.raw(node, 'between', 'colon');
- var string = node.prop + between + this.rawValue(node, 'value');
- if (node.important) {
- string += node.raws.important || ' !important';
- }
-
- this.builder(string + '{', node, 'start');
-
- var after = void 0;
- if (node.nodes && node.nodes.length) {
- this.body(node);
- after = this.raw(node, 'after');
- } else {
- after = this.raw(node, 'after', 'emptyBody');
- }
- if (after) this.builder(after);
- this.builder('}', node, 'end');
- }
- };
-
- ScssStringifier.prototype.rawValue = function rawValue(node, prop) {
- var value = node[prop];
- var raw = node.raws[prop];
- if (raw && raw.value === value) {
- return raw.scss ? raw.scss : raw.raw;
- } else {
- return value;
- }
- };
-
- return ScssStringifier;
-}(Stringifier);
-
-module.exports = ScssStringifier;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjc3Mtc3RyaW5naWZpZXIuZXM2Il0sIm5hbWVzIjpbIlN0cmluZ2lmaWVyIiwicmVxdWlyZSIsIlNjc3NTdHJpbmdpZmllciIsImNvbW1lbnQiLCJub2RlIiwibGVmdCIsInJhdyIsInJpZ2h0IiwicmF3cyIsImlubGluZSIsInRleHQiLCJidWlsZGVyIiwiZGVjbCIsInNlbWljb2xvbiIsImlzTmVzdGVkIiwiYmV0d2VlbiIsInN0cmluZyIsInByb3AiLCJyYXdWYWx1ZSIsImltcG9ydGFudCIsImFmdGVyIiwibm9kZXMiLCJsZW5ndGgiLCJib2R5IiwidmFsdWUiLCJzY3NzIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFNQSxjQUFjQyxRQUFRLHlCQUFSLENBQXBCOztJQUVNQyxlOzs7Ozs7Ozs7NEJBQ0pDLE8sb0JBQVNDLEksRUFBTTtBQUNiLFFBQU1DLE9BQU8sS0FBS0MsR0FBTCxDQUFTRixJQUFULEVBQWUsTUFBZixFQUF1QixhQUF2QixDQUFiO0FBQ0EsUUFBTUcsUUFBUSxLQUFLRCxHQUFMLENBQVNGLElBQVQsRUFBZSxPQUFmLEVBQXdCLGNBQXhCLENBQWQ7O0FBRUEsUUFBSUEsS0FBS0ksSUFBTCxDQUFVQyxNQUFkLEVBQXNCO0FBQ3BCLFVBQU1DLE9BQU9OLEtBQUtJLElBQUwsQ0FBVUUsSUFBVixJQUFrQk4sS0FBS00sSUFBcEM7QUFDQSxXQUFLQyxPQUFMLENBQWEsT0FBT04sSUFBUCxHQUFjSyxJQUFkLEdBQXFCSCxLQUFsQyxFQUF5Q0gsSUFBekM7QUFDRCxLQUhELE1BR087QUFDTCxXQUFLTyxPQUFMLENBQWEsT0FBT04sSUFBUCxHQUFjRCxLQUFLTSxJQUFuQixHQUEwQkgsS0FBMUIsR0FBa0MsSUFBL0MsRUFBcURILElBQXJEO0FBQ0Q7QUFDRixHOzs0QkFFRFEsSSxpQkFBTVIsSSxFQUFNUyxTLEVBQVc7QUFDckIsUUFBSSxDQUFDVCxLQUFLVSxRQUFWLEVBQW9CO0FBQ2xCLDZCQUFNRixJQUFOLFlBQVdSLElBQVgsRUFBaUJTLFNBQWpCO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsVUFBTUUsVUFBVSxLQUFLVCxHQUFMLENBQVNGLElBQVQsRUFBZSxTQUFmLEVBQTBCLE9BQTFCLENBQWhCO0FBQ0EsVUFBSVksU0FBU1osS0FBS2EsSUFBTCxHQUFZRixPQUFaLEdBQXNCLEtBQUtHLFFBQUwsQ0FBY2QsSUFBZCxFQUFvQixPQUFwQixDQUFuQztBQUNBLFVBQUlBLEtBQUtlLFNBQVQsRUFBb0I7QUFDbEJILGtCQUFVWixLQUFLSSxJQUFMLENBQVVXLFNBQVYsSUFBdUIsYUFBakM7QUFDRDs7QUFFRCxXQUFLUixPQUFMLENBQWFLLFNBQVMsR0FBdEIsRUFBMkJaLElBQTNCLEVBQWlDLE9BQWpDOztBQUVBLFVBQUlnQixjQUFKO0FBQ0EsVUFBSWhCLEtBQUtpQixLQUFMLElBQWNqQixLQUFLaUIsS0FBTCxDQUFXQyxNQUE3QixFQUFxQztBQUNuQyxhQUFLQyxJQUFMLENBQVVuQixJQUFWO0FBQ0FnQixnQkFBUSxLQUFLZCxHQUFMLENBQVNGLElBQVQsRUFBZSxPQUFmLENBQVI7QUFDRCxPQUhELE1BR087QUFDTGdCLGdCQUFRLEtBQUtkLEdBQUwsQ0FBU0YsSUFBVCxFQUFlLE9BQWYsRUFBd0IsV0FBeEIsQ0FBUjtBQUNEO0FBQ0QsVUFBSWdCLEtBQUosRUFBVyxLQUFLVCxPQUFMLENBQWFTLEtBQWI7QUFDWCxXQUFLVCxPQUFMLENBQWEsR0FBYixFQUFrQlAsSUFBbEIsRUFBd0IsS0FBeEI7QUFDRDtBQUNGLEc7OzRCQUVEYyxRLHFCQUFVZCxJLEVBQU1hLEksRUFBTTtBQUNwQixRQUFNTyxRQUFRcEIsS0FBS2EsSUFBTCxDQUFkO0FBQ0EsUUFBTVgsTUFBTUYsS0FBS0ksSUFBTCxDQUFVUyxJQUFWLENBQVo7QUFDQSxRQUFJWCxPQUFPQSxJQUFJa0IsS0FBSixLQUFjQSxLQUF6QixFQUFnQztBQUM5QixhQUFPbEIsSUFBSW1CLElBQUosR0FBV25CLElBQUltQixJQUFmLEdBQXNCbkIsSUFBSUEsR0FBakM7QUFDRCxLQUZELE1BRU87QUFDTCxhQUFPa0IsS0FBUDtBQUNEO0FBQ0YsRzs7O0VBN0MyQnhCLFc7O0FBZ0Q5QjBCLE9BQU9DLE9BQVAsR0FBaUJ6QixlQUFqQiIsImZpbGUiOiJzY3NzLXN0cmluZ2lmaWVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU3RyaW5naWZpZXIgPSByZXF1aXJlKCdwb3N0Y3NzL2xpYi9zdHJpbmdpZmllcicpXG5cbmNsYXNzIFNjc3NTdHJpbmdpZmllciBleHRlbmRzIFN0cmluZ2lmaWVyIHtcbiAgY29tbWVudCAobm9kZSkge1xuICAgIGNvbnN0IGxlZnQgPSB0aGlzLnJhdyhub2RlLCAnbGVmdCcsICdjb21tZW50TGVmdCcpXG4gICAgY29uc3QgcmlnaHQgPSB0aGlzLnJhdyhub2RlLCAncmlnaHQnLCAnY29tbWVudFJpZ2h0JylcblxuICAgIGlmIChub2RlLnJhd3MuaW5saW5lKSB7XG4gICAgICBjb25zdCB0ZXh0ID0gbm9kZS5yYXdzLnRleHQgfHwgbm9kZS50ZXh0XG4gICAgICB0aGlzLmJ1aWxkZXIoJy8vJyArIGxlZnQgKyB0ZXh0ICsgcmlnaHQsIG5vZGUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVpbGRlcignLyonICsgbGVmdCArIG5vZGUudGV4dCArIHJpZ2h0ICsgJyovJywgbm9kZSlcbiAgICB9XG4gIH1cblxuICBkZWNsIChub2RlLCBzZW1pY29sb24pIHtcbiAgICBpZiAoIW5vZGUuaXNOZXN0ZWQpIHtcbiAgICAgIHN1cGVyLmRlY2wobm9kZSwgc2VtaWNvbG9uKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBiZXR3ZWVuID0gdGhpcy5yYXcobm9kZSwgJ2JldHdlZW4nLCAnY29sb24nKVxuICAgICAgbGV0IHN0cmluZyA9IG5vZGUucHJvcCArIGJldHdlZW4gKyB0aGlzLnJhd1ZhbHVlKG5vZGUsICd2YWx1ZScpXG4gICAgICBpZiAobm9kZS5pbXBvcnRhbnQpIHtcbiAgICAgICAgc3RyaW5nICs9IG5vZGUucmF3cy5pbXBvcnRhbnQgfHwgJyAhaW1wb3J0YW50J1xuICAgICAgfVxuXG4gICAgICB0aGlzLmJ1aWxkZXIoc3RyaW5nICsgJ3snLCBub2RlLCAnc3RhcnQnKVxuXG4gICAgICBsZXQgYWZ0ZXJcbiAgICAgIGlmIChub2RlLm5vZGVzICYmIG5vZGUubm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYm9keShub2RlKVxuICAgICAgICBhZnRlciA9IHRoaXMucmF3KG5vZGUsICdhZnRlcicpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZnRlciA9IHRoaXMucmF3KG5vZGUsICdhZnRlcicsICdlbXB0eUJvZHknKVxuICAgICAgfVxuICAgICAgaWYgKGFmdGVyKSB0aGlzLmJ1aWxkZXIoYWZ0ZXIpXG4gICAgICB0aGlzLmJ1aWxkZXIoJ30nLCBub2RlLCAnZW5kJylcbiAgICB9XG4gIH1cblxuICByYXdWYWx1ZSAobm9kZSwgcHJvcCkge1xuICAgIGNvbnN0IHZhbHVlID0gbm9kZVtwcm9wXVxuICAgIGNvbnN0IHJhdyA9IG5vZGUucmF3c1twcm9wXVxuICAgIGlmIChyYXcgJiYgcmF3LnZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHJhdy5zY3NzID8gcmF3LnNjc3MgOiByYXcucmF3XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNjc3NTdHJpbmdpZmllclxuIl19
diff --git a/assets/node_modules/postcss-scss/lib/scss-stringify.js b/assets/node_modules/postcss-scss/lib/scss-stringify.js
deleted file mode 100644
index 594bddd..0000000
--- a/assets/node_modules/postcss-scss/lib/scss-stringify.js
+++ /dev/null
@@ -1,9 +0,0 @@
-'use strict';
-
-var ScssStringifier = require('./scss-stringifier');
-
-module.exports = function scssStringify(node, builder) {
- var str = new ScssStringifier(builder);
- str.stringify(node);
-};
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjc3Mtc3RyaW5naWZ5LmVzNiJdLCJuYW1lcyI6WyJTY3NzU3RyaW5naWZpZXIiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsInNjc3NTdHJpbmdpZnkiLCJub2RlIiwiYnVpbGRlciIsInN0ciIsInN0cmluZ2lmeSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFNQSxrQkFBa0JDLFFBQVEsb0JBQVIsQ0FBeEI7O0FBRUFDLE9BQU9DLE9BQVAsR0FBaUIsU0FBU0MsYUFBVCxDQUF3QkMsSUFBeEIsRUFBOEJDLE9BQTlCLEVBQXVDO0FBQ3RELE1BQU1DLE1BQU0sSUFBSVAsZUFBSixDQUFvQk0sT0FBcEIsQ0FBWjtBQUNBQyxNQUFJQyxTQUFKLENBQWNILElBQWQ7QUFDRCxDQUhEIiwiZmlsZSI6InNjc3Mtc3RyaW5naWZ5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2Nzc1N0cmluZ2lmaWVyID0gcmVxdWlyZSgnLi9zY3NzLXN0cmluZ2lmaWVyJylcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzY3NzU3RyaW5naWZ5IChub2RlLCBidWlsZGVyKSB7XG4gIGNvbnN0IHN0ciA9IG5ldyBTY3NzU3RyaW5naWZpZXIoYnVpbGRlcilcbiAgc3RyLnN0cmluZ2lmeShub2RlKVxufVxuIl19
diff --git a/assets/node_modules/postcss-scss/lib/scss-syntax.js b/assets/node_modules/postcss-scss/lib/scss-syntax.js
deleted file mode 100644
index 1e09e36..0000000
--- a/assets/node_modules/postcss-scss/lib/scss-syntax.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict';
-
-var stringify = require('./scss-stringify');
-var parse = require('./scss-parse');
-
-module.exports = { parse: parse, stringify: stringify };
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjc3Mtc3ludGF4LmVzNiJdLCJuYW1lcyI6WyJzdHJpbmdpZnkiLCJyZXF1aXJlIiwicGFyc2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQU1BLFlBQVlDLFFBQVEsa0JBQVIsQ0FBbEI7QUFDQSxJQUFNQyxRQUFRRCxRQUFRLGNBQVIsQ0FBZDs7QUFFQUUsT0FBT0MsT0FBUCxHQUFpQixFQUFFRixZQUFGLEVBQVNGLG9CQUFULEVBQWpCIiwiZmlsZSI6InNjc3Mtc3ludGF4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgc3RyaW5naWZ5ID0gcmVxdWlyZSgnLi9zY3NzLXN0cmluZ2lmeScpXG5jb25zdCBwYXJzZSA9IHJlcXVpcmUoJy4vc2Nzcy1wYXJzZScpXG5cbm1vZHVsZS5leHBvcnRzID0geyBwYXJzZSwgc3RyaW5naWZ5IH1cbiJdfQ==
diff --git a/assets/node_modules/postcss-scss/lib/scss-tokenize.js b/assets/node_modules/postcss-scss/lib/scss-tokenize.js
deleted file mode 100644
index cfbdcb1..0000000
--- a/assets/node_modules/postcss-scss/lib/scss-tokenize.js
+++ /dev/null
@@ -1,410 +0,0 @@
-'use strict';
-
-var SINGLE_QUOTE = 39;
-var DOUBLE_QUOTE = 34;
-var BACKSLASH = 92;
-var SLASH = 47;
-var NEWLINE = 10;
-var SPACE = 32;
-var FEED = 12;
-var TAB = 9;
-var CR = 13;
-var OPEN_SQUARE = 91;
-var CLOSE_SQUARE = 93;
-var OPEN_PARENTHESES = 40;
-var CLOSE_PARENTHESES = 41;
-var OPEN_CURLY = 123;
-var CLOSE_CURLY = 125;
-var SEMICOLON = 59;
-var ASTERISK = 42;
-var COLON = 58;
-var AT = 64;
-
-// SCSS PATCH {
-var COMMA = 44;
-var HASH = 35;
-// } SCSS PATCH
-
-var RE_AT_END = /[ \n\t\r\f{}()'"\\;/[\]#]/g;
-var RE_WORD_END = /[ \n\t\r\f(){}:;@!'"\\\][#]|\/(?=\*)/g;
-var RE_BAD_BRACKET = /.[\\/("'\n]/;
-var RE_HEX_ESCAPE = /[a-f0-9]/i;
-
-var RE_NEW_LINE = /[\r\f\n]/g; // SCSS PATCH
-
-// SCSS PATCH function name was changed
-module.exports = function scssTokenize(input) {
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- var css = input.css.valueOf();
- var ignore = options.ignoreErrors;
-
- var code = void 0,
- next = void 0,
- quote = void 0,
- lines = void 0,
- last = void 0,
- content = void 0,
- escape = void 0,
- nextLine = void 0,
- nextOffset = void 0,
- escaped = void 0,
- prev = void 0,
- n = void 0,
- currentToken = void 0;
-
- var brackets = void 0; // SCSS PATCH
-
- var length = css.length;
- var offset = -1;
- var line = 1;
- var pos = 0;
- var buffer = [];
- var returned = [];
-
- function unclosed(what) {
- throw input.error('Unclosed ' + what, line, pos - offset);
- }
-
- function endOfFile() {
- return returned.length === 0 && pos >= length;
- }
-
- // SCSS PATCH {
- function interpolation() {
- var deep = 1;
- var stringQuote = false;
- var stringEscaped = false;
- while (deep > 0) {
- next += 1;
- if (css.length <= next) unclosed('interpolation');
-
- code = css.charCodeAt(next);
- n = css.charCodeAt(next + 1);
-
- if (stringQuote) {
- if (!stringEscaped && code === stringQuote) {
- stringQuote = false;
- stringEscaped = false;
- } else if (code === BACKSLASH) {
- stringEscaped = !escaped;
- } else if (stringEscaped) {
- stringEscaped = false;
- }
- } else if (code === SINGLE_QUOTE || code === DOUBLE_QUOTE) {
- stringQuote = code;
- } else if (code === CLOSE_CURLY) {
- deep -= 1;
- } else if (code === HASH && n === OPEN_CURLY) {
- deep += 1;
- }
- }
- }
- // } SCSS PATCH
-
- function nextToken() {
- if (returned.length) return returned.pop();
- if (pos >= length) return;
-
- code = css.charCodeAt(pos);
- if (code === NEWLINE || code === FEED || code === CR && css.charCodeAt(pos + 1) !== NEWLINE) {
- offset = pos;
- line += 1;
- }
-
- switch (code) {
- case NEWLINE:
- case SPACE:
- case TAB:
- case CR:
- case FEED:
- next = pos;
- do {
- next += 1;
- code = css.charCodeAt(next);
- if (code === NEWLINE) {
- offset = next;
- line += 1;
- }
- } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);
-
- currentToken = ['space', css.slice(pos, next)];
- pos = next - 1;
- break;
-
- case OPEN_SQUARE:
- currentToken = ['[', '[', line, pos - offset];
- break;
-
- case CLOSE_SQUARE:
- currentToken = [']', ']', line, pos - offset];
- break;
-
- case OPEN_CURLY:
- currentToken = ['{', '{', line, pos - offset];
- break;
-
- case CLOSE_CURLY:
- currentToken = ['}', '}', line, pos - offset];
- break;
-
- // SCSS PATCH {
- case COMMA:
- currentToken = ['word', ',', line, pos - offset, line, pos - offset + 1];
- break;
- // } SCSS PATCH
-
- case COLON:
- currentToken = [':', ':', line, pos - offset];
- break;
-
- case SEMICOLON:
- currentToken = [';', ';', line, pos - offset];
- break;
-
- case OPEN_PARENTHESES:
- prev = buffer.length ? buffer.pop()[1] : '';
- n = css.charCodeAt(pos + 1);
-
- // SCSS PATCH {
- if (prev === 'url' && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE) {
- brackets = 1;
- escaped = false;
- next = pos + 1;
- while (next <= css.length - 1) {
- n = css.charCodeAt(next);
- if (n === BACKSLASH) {
- escaped = !escaped;
- } else if (n === OPEN_PARENTHESES) {
- brackets += 1;
- } else if (n === CLOSE_PARENTHESES) {
- brackets -= 1;
- if (brackets === 0) break;
- }
- next += 1;
- }
-
- content = css.slice(pos, next + 1);
- lines = content.split('\n');
- last = lines.length - 1;
-
- if (last > 0) {
- nextLine = line + last;
- nextOffset = next - lines[last].length;
- } else {
- nextLine = line;
- nextOffset = offset;
- }
-
- currentToken = ['brackets', content, line, pos - offset, nextLine, next - nextOffset];
-
- offset = nextOffset;
- line = nextLine;
- pos = next;
- // } SCSS PATCH
- } else {
- next = css.indexOf(')', pos + 1);
- content = css.slice(pos, next + 1);
-
- if (next === -1 || RE_BAD_BRACKET.test(content)) {
- currentToken = ['(', '(', line, pos - offset];
- } else {
- currentToken = ['brackets', content, line, pos - offset, line, next - offset];
- pos = next;
- }
- }
-
- break;
-
- case CLOSE_PARENTHESES:
- currentToken = [')', ')', line, pos - offset];
- break;
-
- case SINGLE_QUOTE:
- case DOUBLE_QUOTE:
- // SCSS PATCH {
- quote = code;
- next = pos;
-
- escaped = false;
- while (next < length) {
- next++;
- if (next === length) unclosed('string');
-
- code = css.charCodeAt(next);
- n = css.charCodeAt(next + 1);
-
- if (!escaped && code === quote) {
- break;
- } else if (code === BACKSLASH) {
- escaped = !escaped;
- } else if (escaped) {
- escaped = false;
- } else if (code === HASH && n === OPEN_CURLY) {
- interpolation();
- }
- }
- // } SCSS PATCH
-
- content = css.slice(pos, next + 1);
- lines = content.split('\n');
- last = lines.length - 1;
-
- if (last > 0) {
- nextLine = line + last;
- nextOffset = next - lines[last].length;
- } else {
- nextLine = line;
- nextOffset = offset;
- }
-
- currentToken = ['string', css.slice(pos, next + 1), line, pos - offset, nextLine, next - nextOffset];
-
- offset = nextOffset;
- line = nextLine;
- pos = next;
- break;
-
- case AT:
- RE_AT_END.lastIndex = pos + 1;
- RE_AT_END.test(css);
- if (RE_AT_END.lastIndex === 0) {
- next = css.length - 1;
- } else {
- next = RE_AT_END.lastIndex - 2;
- }
-
- currentToken = ['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];
-
- pos = next;
- break;
-
- case BACKSLASH:
- next = pos;
- escape = true;
- while (css.charCodeAt(next + 1) === BACKSLASH) {
- next += 1;
- escape = !escape;
- }
- code = css.charCodeAt(next + 1);
- if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {
- next += 1;
- if (RE_HEX_ESCAPE.test(css.charAt(next))) {
- while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {
- next += 1;
- }
- if (css.charCodeAt(next + 1) === SPACE) {
- next += 1;
- }
- }
- }
-
- currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];
-
- pos = next;
- break;
-
- default:
- // SCSS PATCH {
- n = css.charCodeAt(pos + 1);
-
- if (code === HASH && n === OPEN_CURLY) {
- next = pos;
- interpolation();
-
- content = css.slice(pos, next + 1);
- lines = content.split('\n');
- last = lines.length - 1;
-
- if (last > 0) {
- nextLine = line + last;
- nextOffset = next - lines[last].length;
- } else {
- nextLine = line;
- nextOffset = offset;
- }
-
- currentToken = ['word', content, line, pos - offset, nextLine, next - nextOffset];
-
- offset = nextOffset;
- line = nextLine;
- pos = next;
- } else if (code === SLASH && n === ASTERISK) {
- // } SCSS PATCH
- next = css.indexOf('*/', pos + 2) + 1;
- if (next === 0) {
- if (ignore) {
- next = css.length;
- } else {
- unclosed('comment');
- }
- }
-
- content = css.slice(pos, next + 1);
- lines = content.split('\n');
- last = lines.length - 1;
-
- if (last > 0) {
- nextLine = line + last;
- nextOffset = next - lines[last].length;
- } else {
- nextLine = line;
- nextOffset = offset;
- }
-
- currentToken = ['comment', content, line, pos - offset, nextLine, next - nextOffset];
-
- offset = nextOffset;
- line = nextLine;
- pos = next;
-
- // SCSS PATCH {
- } else if (code === SLASH && n === SLASH) {
- RE_NEW_LINE.lastIndex = pos + 1;
- RE_NEW_LINE.test(css);
- if (RE_NEW_LINE.lastIndex === 0) {
- next = css.length - 1;
- } else {
- next = RE_NEW_LINE.lastIndex - 2;
- }
-
- content = css.slice(pos, next + 1);
-
- currentToken = ['comment', content, line, pos - offset, line, next - offset, 'inline'];
-
- pos = next;
- // } SCSS PATCH
- } else {
- RE_WORD_END.lastIndex = pos + 1;
- RE_WORD_END.test(css);
- if (RE_WORD_END.lastIndex === 0) {
- next = css.length - 1;
- } else {
- next = RE_WORD_END.lastIndex - 2;
- }
-
- currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];
-
- buffer.push(currentToken);
-
- pos = next;
- }
-
- break;
- }
-
- pos++;
- return currentToken;
- }
-
- function back(token) {
- returned.push(token);
- }
-
- return {
- back: back,
- nextToken: nextToken,
- endOfFile: endOfFile
- };
-};
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjc3MtdG9rZW5pemUuZXM2Il0sIm5hbWVzIjpbIlNJTkdMRV9RVU9URSIsIkRPVUJMRV9RVU9URSIsIkJBQ0tTTEFTSCIsIlNMQVNIIiwiTkVXTElORSIsIlNQQUNFIiwiRkVFRCIsIlRBQiIsIkNSIiwiT1BFTl9TUVVBUkUiLCJDTE9TRV9TUVVBUkUiLCJPUEVOX1BBUkVOVEhFU0VTIiwiQ0xPU0VfUEFSRU5USEVTRVMiLCJPUEVOX0NVUkxZIiwiQ0xPU0VfQ1VSTFkiLCJTRU1JQ09MT04iLCJBU1RFUklTSyIsIkNPTE9OIiwiQVQiLCJDT01NQSIsIkhBU0giLCJSRV9BVF9FTkQiLCJSRV9XT1JEX0VORCIsIlJFX0JBRF9CUkFDS0VUIiwiUkVfSEVYX0VTQ0FQRSIsIlJFX05FV19MSU5FIiwibW9kdWxlIiwiZXhwb3J0cyIsInNjc3NUb2tlbml6ZSIsImlucHV0Iiwib3B0aW9ucyIsImNzcyIsInZhbHVlT2YiLCJpZ25vcmUiLCJpZ25vcmVFcnJvcnMiLCJjb2RlIiwibmV4dCIsInF1b3RlIiwibGluZXMiLCJsYXN0IiwiY29udGVudCIsImVzY2FwZSIsIm5leHRMaW5lIiwibmV4dE9mZnNldCIsImVzY2FwZWQiLCJwcmV2IiwibiIsImN1cnJlbnRUb2tlbiIsImJyYWNrZXRzIiwibGVuZ3RoIiwib2Zmc2V0IiwibGluZSIsInBvcyIsImJ1ZmZlciIsInJldHVybmVkIiwidW5jbG9zZWQiLCJ3aGF0IiwiZXJyb3IiLCJlbmRPZkZpbGUiLCJpbnRlcnBvbGF0aW9uIiwiZGVlcCIsInN0cmluZ1F1b3RlIiwic3RyaW5nRXNjYXBlZCIsImNoYXJDb2RlQXQiLCJuZXh0VG9rZW4iLCJwb3AiLCJzbGljZSIsInNwbGl0IiwiaW5kZXhPZiIsInRlc3QiLCJsYXN0SW5kZXgiLCJjaGFyQXQiLCJwdXNoIiwiYmFjayIsInRva2VuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQU1BLGlCQUFOO0FBQ0EsSUFBTUMsaUJBQU47QUFDQSxJQUFNQyxjQUFOO0FBQ0EsSUFBTUMsVUFBTjtBQUNBLElBQU1DLFlBQU47QUFDQSxJQUFNQyxVQUFOO0FBQ0EsSUFBTUMsU0FBTjtBQUNBLElBQU1DLE9BQU47QUFDQSxJQUFNQyxPQUFOO0FBQ0EsSUFBTUMsZ0JBQU47QUFDQSxJQUFNQyxpQkFBTjtBQUNBLElBQU1DLHFCQUFOO0FBQ0EsSUFBTUMsc0JBQU47QUFDQSxJQUFNQyxnQkFBTjtBQUNBLElBQU1DLGlCQUFOO0FBQ0EsSUFBTUMsY0FBTjtBQUNBLElBQU1DLGFBQU47QUFDQSxJQUFNQyxVQUFOO0FBQ0EsSUFBTUMsT0FBTjs7QUFFQTtBQUNBLElBQU1DLFVBQU47QUFDQSxJQUFNQyxTQUFOO0FBQ0E7O0FBRUEsSUFBTUMsWUFBWSw0QkFBbEI7QUFDQSxJQUFNQyxjQUFjLHVDQUFwQjtBQUNBLElBQU1DLGlCQUFpQixhQUF2QjtBQUNBLElBQU1DLGdCQUFnQixXQUF0Qjs7QUFFQSxJQUFNQyxjQUFjLFdBQXBCLEMsQ0FBZ0M7O0FBRWhDO0FBQ0FDLE9BQU9DLE9BQVAsR0FBaUIsU0FBU0MsWUFBVCxDQUF1QkMsS0FBdkIsRUFBNEM7QUFBQSxNQUFkQyxPQUFjLHVFQUFKLEVBQUk7O0FBQzNELE1BQU1DLE1BQU1GLE1BQU1FLEdBQU4sQ0FBVUMsT0FBVixFQUFaO0FBQ0EsTUFBTUMsU0FBU0gsUUFBUUksWUFBdkI7O0FBRUEsTUFBSUMsYUFBSjtBQUFBLE1BQVVDLGFBQVY7QUFBQSxNQUFnQkMsY0FBaEI7QUFBQSxNQUF1QkMsY0FBdkI7QUFBQSxNQUE4QkMsYUFBOUI7QUFBQSxNQUFvQ0MsZ0JBQXBDO0FBQUEsTUFBNkNDLGVBQTdDO0FBQUEsTUFDRUMsaUJBREY7QUFBQSxNQUNZQyxtQkFEWjtBQUFBLE1BQ3dCQyxnQkFEeEI7QUFBQSxNQUNpQ0MsYUFEakM7QUFBQSxNQUN1Q0MsVUFEdkM7QUFBQSxNQUMwQ0MscUJBRDFDOztBQUdBLE1BQUlDLGlCQUFKLENBUDJELENBTzlDOztBQUViLE1BQU1DLFNBQVNsQixJQUFJa0IsTUFBbkI7QUFDQSxNQUFJQyxTQUFTLENBQUMsQ0FBZDtBQUNBLE1BQUlDLE9BQU8sQ0FBWDtBQUNBLE1BQUlDLE1BQU0sQ0FBVjtBQUNBLE1BQU1DLFNBQVMsRUFBZjtBQUNBLE1BQU1DLFdBQVcsRUFBakI7O0FBRUEsV0FBU0MsUUFBVCxDQUFtQkMsSUFBbkIsRUFBeUI7QUFDdkIsVUFBTTNCLE1BQU00QixLQUFOLENBQVksY0FBY0QsSUFBMUIsRUFBZ0NMLElBQWhDLEVBQXNDQyxNQUFNRixNQUE1QyxDQUFOO0FBQ0Q7O0FBRUQsV0FBU1EsU0FBVCxHQUFzQjtBQUNwQixXQUFPSixTQUFTTCxNQUFULEtBQW9CLENBQXBCLElBQXlCRyxPQUFPSCxNQUF2QztBQUNEOztBQUVEO0FBQ0EsV0FBU1UsYUFBVCxHQUEwQjtBQUN4QixRQUFJQyxPQUFPLENBQVg7QUFDQSxRQUFJQyxjQUFjLEtBQWxCO0FBQ0EsUUFBSUMsZ0JBQWdCLEtBQXBCO0FBQ0EsV0FBT0YsT0FBTyxDQUFkLEVBQWlCO0FBQ2Z4QixjQUFRLENBQVI7QUFDQSxVQUFJTCxJQUFJa0IsTUFBSixJQUFjYixJQUFsQixFQUF3Qm1CLFNBQVMsZUFBVDs7QUFFeEJwQixhQUFPSixJQUFJZ0MsVUFBSixDQUFlM0IsSUFBZixDQUFQO0FBQ0FVLFVBQUlmLElBQUlnQyxVQUFKLENBQWUzQixPQUFPLENBQXRCLENBQUo7O0FBRUEsVUFBSXlCLFdBQUosRUFBaUI7QUFDZixZQUFJLENBQUNDLGFBQUQsSUFBa0IzQixTQUFTMEIsV0FBL0IsRUFBNEM7QUFDMUNBLHdCQUFjLEtBQWQ7QUFDQUMsMEJBQWdCLEtBQWhCO0FBQ0QsU0FIRCxNQUdPLElBQUkzQixTQUFTakMsU0FBYixFQUF3QjtBQUM3QjRELDBCQUFnQixDQUFDbEIsT0FBakI7QUFDRCxTQUZNLE1BRUEsSUFBSWtCLGFBQUosRUFBbUI7QUFDeEJBLDBCQUFnQixLQUFoQjtBQUNEO0FBQ0YsT0FURCxNQVNPLElBQ0wzQixTQUFTbkMsWUFBVCxJQUF5Qm1DLFNBQVNsQyxZQUQ3QixFQUVMO0FBQ0E0RCxzQkFBYzFCLElBQWQ7QUFDRCxPQUpNLE1BSUEsSUFBSUEsU0FBU3JCLFdBQWIsRUFBMEI7QUFDL0I4QyxnQkFBUSxDQUFSO0FBQ0QsT0FGTSxNQUVBLElBQUl6QixTQUFTZixJQUFULElBQWlCMEIsTUFBTWpDLFVBQTNCLEVBQXVDO0FBQzVDK0MsZ0JBQVEsQ0FBUjtBQUNEO0FBQ0Y7QUFDRjtBQUNEOztBQUVBLFdBQVNJLFNBQVQsR0FBc0I7QUFDcEIsUUFBSVYsU0FBU0wsTUFBYixFQUFxQixPQUFPSyxTQUFTVyxHQUFULEVBQVA7QUFDckIsUUFBSWIsT0FBT0gsTUFBWCxFQUFtQjs7QUFFbkJkLFdBQU9KLElBQUlnQyxVQUFKLENBQWVYLEdBQWYsQ0FBUDtBQUNBLFFBQ0VqQixTQUFTL0IsT0FBVCxJQUFvQitCLFNBQVM3QixJQUE3QixJQUNDNkIsU0FBUzNCLEVBQVQsSUFBZXVCLElBQUlnQyxVQUFKLENBQWVYLE1BQU0sQ0FBckIsTUFBNEJoRCxPQUY5QyxFQUdFO0FBQ0E4QyxlQUFTRSxHQUFUO0FBQ0FELGNBQVEsQ0FBUjtBQUNEOztBQUVELFlBQVFoQixJQUFSO0FBQ0UsV0FBSy9CLE9BQUw7QUFDQSxXQUFLQyxLQUFMO0FBQ0EsV0FBS0UsR0FBTDtBQUNBLFdBQUtDLEVBQUw7QUFDQSxXQUFLRixJQUFMO0FBQ0U4QixlQUFPZ0IsR0FBUDtBQUNBLFdBQUc7QUFDRGhCLGtCQUFRLENBQVI7QUFDQUQsaUJBQU9KLElBQUlnQyxVQUFKLENBQWUzQixJQUFmLENBQVA7QUFDQSxjQUFJRCxTQUFTL0IsT0FBYixFQUFzQjtBQUNwQjhDLHFCQUFTZCxJQUFUO0FBQ0FlLG9CQUFRLENBQVI7QUFDRDtBQUNGLFNBUEQsUUFPU2hCLFNBQVM5QixLQUFULElBQ0s4QixTQUFTL0IsT0FEZCxJQUVLK0IsU0FBUzVCLEdBRmQsSUFHSzRCLFNBQVMzQixFQUhkLElBSUsyQixTQUFTN0IsSUFYdkI7O0FBYUF5Qyx1QkFBZSxDQUFDLE9BQUQsRUFBVWhCLElBQUltQyxLQUFKLENBQVVkLEdBQVYsRUFBZWhCLElBQWYsQ0FBVixDQUFmO0FBQ0FnQixjQUFNaEIsT0FBTyxDQUFiO0FBQ0E7O0FBRUYsV0FBSzNCLFdBQUw7QUFDRXNDLHVCQUFlLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBV0ksSUFBWCxFQUFpQkMsTUFBTUYsTUFBdkIsQ0FBZjtBQUNBOztBQUVGLFdBQUt4QyxZQUFMO0FBQ0VxQyx1QkFBZSxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVdJLElBQVgsRUFBaUJDLE1BQU1GLE1BQXZCLENBQWY7QUFDQTs7QUFFRixXQUFLckMsVUFBTDtBQUNFa0MsdUJBQWUsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXSSxJQUFYLEVBQWlCQyxNQUFNRixNQUF2QixDQUFmO0FBQ0E7O0FBRUYsV0FBS3BDLFdBQUw7QUFDRWlDLHVCQUFlLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBV0ksSUFBWCxFQUFpQkMsTUFBTUYsTUFBdkIsQ0FBZjtBQUNBOztBQUVBO0FBQ0YsV0FBSy9CLEtBQUw7QUFDRTRCLHVCQUFlLENBQ2IsTUFEYSxFQUViLEdBRmEsRUFHYkksSUFIYSxFQUdQQyxNQUFNRixNQUhDLEVBSWJDLElBSmEsRUFJUEMsTUFBTUYsTUFBTixHQUFlLENBSlIsQ0FBZjtBQU1BO0FBQ0E7O0FBRUYsV0FBS2pDLEtBQUw7QUFDRThCLHVCQUFlLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBV0ksSUFBWCxFQUFpQkMsTUFBTUYsTUFBdkIsQ0FBZjtBQUNBOztBQUVGLFdBQUtuQyxTQUFMO0FBQ0VnQyx1QkFBZSxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVdJLElBQVgsRUFBaUJDLE1BQU1GLE1BQXZCLENBQWY7QUFDQTs7QUFFRixXQUFLdkMsZ0JBQUw7QUFDRWtDLGVBQU9RLE9BQU9KLE1BQVAsR0FBZ0JJLE9BQU9ZLEdBQVAsR0FBYSxDQUFiLENBQWhCLEdBQWtDLEVBQXpDO0FBQ0FuQixZQUFJZixJQUFJZ0MsVUFBSixDQUFlWCxNQUFNLENBQXJCLENBQUo7O0FBRUE7QUFDQSxZQUFJUCxTQUFTLEtBQVQsSUFBa0JDLE1BQU05QyxZQUF4QixJQUF3QzhDLE1BQU03QyxZQUFsRCxFQUFnRTtBQUM5RCtDLHFCQUFXLENBQVg7QUFDQUosb0JBQVUsS0FBVjtBQUNBUixpQkFBT2dCLE1BQU0sQ0FBYjtBQUNBLGlCQUFPaEIsUUFBUUwsSUFBSWtCLE1BQUosR0FBYSxDQUE1QixFQUErQjtBQUM3QkgsZ0JBQUlmLElBQUlnQyxVQUFKLENBQWUzQixJQUFmLENBQUo7QUFDQSxnQkFBSVUsTUFBTTVDLFNBQVYsRUFBcUI7QUFDbkIwQyx3QkFBVSxDQUFDQSxPQUFYO0FBQ0QsYUFGRCxNQUVPLElBQUlFLE1BQU1uQyxnQkFBVixFQUE0QjtBQUNqQ3FDLDBCQUFZLENBQVo7QUFDRCxhQUZNLE1BRUEsSUFBSUYsTUFBTWxDLGlCQUFWLEVBQTZCO0FBQ2xDb0MsMEJBQVksQ0FBWjtBQUNBLGtCQUFJQSxhQUFhLENBQWpCLEVBQW9CO0FBQ3JCO0FBQ0RaLG9CQUFRLENBQVI7QUFDRDs7QUFFREksb0JBQVVULElBQUltQyxLQUFKLENBQVVkLEdBQVYsRUFBZWhCLE9BQU8sQ0FBdEIsQ0FBVjtBQUNBRSxrQkFBUUUsUUFBUTJCLEtBQVIsQ0FBYyxJQUFkLENBQVI7QUFDQTVCLGlCQUFPRCxNQUFNVyxNQUFOLEdBQWUsQ0FBdEI7O0FBRUEsY0FBSVYsT0FBTyxDQUFYLEVBQWM7QUFDWkcsdUJBQVdTLE9BQU9aLElBQWxCO0FBQ0FJLHlCQUFhUCxPQUFPRSxNQUFNQyxJQUFOLEVBQVlVLE1BQWhDO0FBQ0QsV0FIRCxNQUdPO0FBQ0xQLHVCQUFXUyxJQUFYO0FBQ0FSLHlCQUFhTyxNQUFiO0FBQ0Q7O0FBRURILHlCQUFlLENBQUMsVUFBRCxFQUFhUCxPQUFiLEVBQ2JXLElBRGEsRUFDUEMsTUFBTUYsTUFEQyxFQUViUixRQUZhLEVBRUhOLE9BQU9PLFVBRkosQ0FBZjs7QUFLQU8sbUJBQVNQLFVBQVQ7QUFDQVEsaUJBQU9ULFFBQVA7QUFDQVUsZ0JBQU1oQixJQUFOO0FBQ0E7QUFDRCxTQXRDRCxNQXNDTztBQUNMQSxpQkFBT0wsSUFBSXFDLE9BQUosQ0FBWSxHQUFaLEVBQWlCaEIsTUFBTSxDQUF2QixDQUFQO0FBQ0FaLG9CQUFVVCxJQUFJbUMsS0FBSixDQUFVZCxHQUFWLEVBQWVoQixPQUFPLENBQXRCLENBQVY7O0FBRUEsY0FBSUEsU0FBUyxDQUFDLENBQVYsSUFBZWIsZUFBZThDLElBQWYsQ0FBb0I3QixPQUFwQixDQUFuQixFQUFpRDtBQUMvQ08sMkJBQWUsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXSSxJQUFYLEVBQWlCQyxNQUFNRixNQUF2QixDQUFmO0FBQ0QsV0FGRCxNQUVPO0FBQ0xILDJCQUFlLENBQUMsVUFBRCxFQUFhUCxPQUFiLEVBQ2JXLElBRGEsRUFDUEMsTUFBTUYsTUFEQyxFQUViQyxJQUZhLEVBRVBmLE9BQU9jLE1BRkEsQ0FBZjtBQUlBRSxrQkFBTWhCLElBQU47QUFDRDtBQUNGOztBQUVEOztBQUVGLFdBQUt4QixpQkFBTDtBQUNFbUMsdUJBQWUsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXSSxJQUFYLEVBQWlCQyxNQUFNRixNQUF2QixDQUFmO0FBQ0E7O0FBRUYsV0FBS2xELFlBQUw7QUFDQSxXQUFLQyxZQUFMO0FBQ0U7QUFDQW9DLGdCQUFRRixJQUFSO0FBQ0FDLGVBQU9nQixHQUFQOztBQUVBUixrQkFBVSxLQUFWO0FBQ0EsZUFBT1IsT0FBT2EsTUFBZCxFQUFzQjtBQUNwQmI7QUFDQSxjQUFJQSxTQUFTYSxNQUFiLEVBQXFCTSxTQUFTLFFBQVQ7O0FBRXJCcEIsaUJBQU9KLElBQUlnQyxVQUFKLENBQWUzQixJQUFmLENBQVA7QUFDQVUsY0FBSWYsSUFBSWdDLFVBQUosQ0FBZTNCLE9BQU8sQ0FBdEIsQ0FBSjs7QUFFQSxjQUFJLENBQUNRLE9BQUQsSUFBWVQsU0FBU0UsS0FBekIsRUFBZ0M7QUFDOUI7QUFDRCxXQUZELE1BRU8sSUFBSUYsU0FBU2pDLFNBQWIsRUFBd0I7QUFDN0IwQyxzQkFBVSxDQUFDQSxPQUFYO0FBQ0QsV0FGTSxNQUVBLElBQUlBLE9BQUosRUFBYTtBQUNsQkEsc0JBQVUsS0FBVjtBQUNELFdBRk0sTUFFQSxJQUFJVCxTQUFTZixJQUFULElBQWlCMEIsTUFBTWpDLFVBQTNCLEVBQXVDO0FBQzVDOEM7QUFDRDtBQUNGO0FBQ0Q7O0FBRUFuQixrQkFBVVQsSUFBSW1DLEtBQUosQ0FBVWQsR0FBVixFQUFlaEIsT0FBTyxDQUF0QixDQUFWO0FBQ0FFLGdCQUFRRSxRQUFRMkIsS0FBUixDQUFjLElBQWQsQ0FBUjtBQUNBNUIsZUFBT0QsTUFBTVcsTUFBTixHQUFlLENBQXRCOztBQUVBLFlBQUlWLE9BQU8sQ0FBWCxFQUFjO0FBQ1pHLHFCQUFXUyxPQUFPWixJQUFsQjtBQUNBSSx1QkFBYVAsT0FBT0UsTUFBTUMsSUFBTixFQUFZVSxNQUFoQztBQUNELFNBSEQsTUFHTztBQUNMUCxxQkFBV1MsSUFBWDtBQUNBUix1QkFBYU8sTUFBYjtBQUNEOztBQUVESCx1QkFBZSxDQUFDLFFBQUQsRUFBV2hCLElBQUltQyxLQUFKLENBQVVkLEdBQVYsRUFBZWhCLE9BQU8sQ0FBdEIsQ0FBWCxFQUNiZSxJQURhLEVBQ1BDLE1BQU1GLE1BREMsRUFFYlIsUUFGYSxFQUVITixPQUFPTyxVQUZKLENBQWY7O0FBS0FPLGlCQUFTUCxVQUFUO0FBQ0FRLGVBQU9ULFFBQVA7QUFDQVUsY0FBTWhCLElBQU47QUFDQTs7QUFFRixXQUFLbEIsRUFBTDtBQUNFRyxrQkFBVWlELFNBQVYsR0FBc0JsQixNQUFNLENBQTVCO0FBQ0EvQixrQkFBVWdELElBQVYsQ0FBZXRDLEdBQWY7QUFDQSxZQUFJVixVQUFVaUQsU0FBVixLQUF3QixDQUE1QixFQUErQjtBQUM3QmxDLGlCQUFPTCxJQUFJa0IsTUFBSixHQUFhLENBQXBCO0FBQ0QsU0FGRCxNQUVPO0FBQ0xiLGlCQUFPZixVQUFVaUQsU0FBVixHQUFzQixDQUE3QjtBQUNEOztBQUVEdkIsdUJBQWUsQ0FBQyxTQUFELEVBQVloQixJQUFJbUMsS0FBSixDQUFVZCxHQUFWLEVBQWVoQixPQUFPLENBQXRCLENBQVosRUFDYmUsSUFEYSxFQUNQQyxNQUFNRixNQURDLEVBRWJDLElBRmEsRUFFUGYsT0FBT2MsTUFGQSxDQUFmOztBQUtBRSxjQUFNaEIsSUFBTjtBQUNBOztBQUVGLFdBQUtsQyxTQUFMO0FBQ0VrQyxlQUFPZ0IsR0FBUDtBQUNBWCxpQkFBUyxJQUFUO0FBQ0EsZUFBT1YsSUFBSWdDLFVBQUosQ0FBZTNCLE9BQU8sQ0FBdEIsTUFBNkJsQyxTQUFwQyxFQUErQztBQUM3Q2tDLGtCQUFRLENBQVI7QUFDQUssbUJBQVMsQ0FBQ0EsTUFBVjtBQUNEO0FBQ0ROLGVBQU9KLElBQUlnQyxVQUFKLENBQWUzQixPQUFPLENBQXRCLENBQVA7QUFDQSxZQUFJSyxVQUFXTixTQUFTaEMsS0FBVCxJQUNLZ0MsU0FBUzlCLEtBRGQsSUFFSzhCLFNBQVMvQixPQUZkLElBR0srQixTQUFTNUIsR0FIZCxJQUlLNEIsU0FBUzNCLEVBSmQsSUFLSzJCLFNBQVM3QixJQUw3QixFQUtvQztBQUNsQzhCLGtCQUFRLENBQVI7QUFDQSxjQUFJWixjQUFjNkMsSUFBZCxDQUFtQnRDLElBQUl3QyxNQUFKLENBQVduQyxJQUFYLENBQW5CLENBQUosRUFBMEM7QUFDeEMsbUJBQU9aLGNBQWM2QyxJQUFkLENBQW1CdEMsSUFBSXdDLE1BQUosQ0FBV25DLE9BQU8sQ0FBbEIsQ0FBbkIsQ0FBUCxFQUFpRDtBQUMvQ0Esc0JBQVEsQ0FBUjtBQUNEO0FBQ0QsZ0JBQUlMLElBQUlnQyxVQUFKLENBQWUzQixPQUFPLENBQXRCLE1BQTZCL0IsS0FBakMsRUFBd0M7QUFDdEMrQixzQkFBUSxDQUFSO0FBQ0Q7QUFDRjtBQUNGOztBQUVEVyx1QkFBZSxDQUFDLE1BQUQsRUFBU2hCLElBQUltQyxLQUFKLENBQVVkLEdBQVYsRUFBZWhCLE9BQU8sQ0FBdEIsQ0FBVCxFQUNiZSxJQURhLEVBQ1BDLE1BQU1GLE1BREMsRUFFYkMsSUFGYSxFQUVQZixPQUFPYyxNQUZBLENBQWY7O0FBS0FFLGNBQU1oQixJQUFOO0FBQ0E7O0FBRUY7QUFDRTtBQUNBVSxZQUFJZixJQUFJZ0MsVUFBSixDQUFlWCxNQUFNLENBQXJCLENBQUo7O0FBRUEsWUFBSWpCLFNBQVNmLElBQVQsSUFBaUIwQixNQUFNakMsVUFBM0IsRUFBdUM7QUFDckN1QixpQkFBT2dCLEdBQVA7QUFDQU87O0FBRUFuQixvQkFBVVQsSUFBSW1DLEtBQUosQ0FBVWQsR0FBVixFQUFlaEIsT0FBTyxDQUF0QixDQUFWO0FBQ0FFLGtCQUFRRSxRQUFRMkIsS0FBUixDQUFjLElBQWQsQ0FBUjtBQUNBNUIsaUJBQU9ELE1BQU1XLE1BQU4sR0FBZSxDQUF0Qjs7QUFFQSxjQUFJVixPQUFPLENBQVgsRUFBYztBQUNaRyx1QkFBV1MsT0FBT1osSUFBbEI7QUFDQUkseUJBQWFQLE9BQU9FLE1BQU1DLElBQU4sRUFBWVUsTUFBaEM7QUFDRCxXQUhELE1BR087QUFDTFAsdUJBQVdTLElBQVg7QUFDQVIseUJBQWFPLE1BQWI7QUFDRDs7QUFFREgseUJBQWUsQ0FBQyxNQUFELEVBQVNQLE9BQVQsRUFDYlcsSUFEYSxFQUNQQyxNQUFNRixNQURDLEVBRWJSLFFBRmEsRUFFSE4sT0FBT08sVUFGSixDQUFmOztBQUtBTyxtQkFBU1AsVUFBVDtBQUNBUSxpQkFBT1QsUUFBUDtBQUNBVSxnQkFBTWhCLElBQU47QUFDRCxTQXhCRCxNQXdCTyxJQUFJRCxTQUFTaEMsS0FBVCxJQUFrQjJDLE1BQU05QixRQUE1QixFQUFzQztBQUMzQztBQUNBb0IsaUJBQU9MLElBQUlxQyxPQUFKLENBQVksSUFBWixFQUFrQmhCLE1BQU0sQ0FBeEIsSUFBNkIsQ0FBcEM7QUFDQSxjQUFJaEIsU0FBUyxDQUFiLEVBQWdCO0FBQ2QsZ0JBQUlILE1BQUosRUFBWTtBQUNWRyxxQkFBT0wsSUFBSWtCLE1BQVg7QUFDRCxhQUZELE1BRU87QUFDTE0sdUJBQVMsU0FBVDtBQUNEO0FBQ0Y7O0FBRURmLG9CQUFVVCxJQUFJbUMsS0FBSixDQUFVZCxHQUFWLEVBQWVoQixPQUFPLENBQXRCLENBQVY7QUFDQUUsa0JBQVFFLFFBQVEyQixLQUFSLENBQWMsSUFBZCxDQUFSO0FBQ0E1QixpQkFBT0QsTUFBTVcsTUFBTixHQUFlLENBQXRCOztBQUVBLGNBQUlWLE9BQU8sQ0FBWCxFQUFjO0FBQ1pHLHVCQUFXUyxPQUFPWixJQUFsQjtBQUNBSSx5QkFBYVAsT0FBT0UsTUFBTUMsSUFBTixFQUFZVSxNQUFoQztBQUNELFdBSEQsTUFHTztBQUNMUCx1QkFBV1MsSUFBWDtBQUNBUix5QkFBYU8sTUFBYjtBQUNEOztBQUVESCx5QkFBZSxDQUFDLFNBQUQsRUFBWVAsT0FBWixFQUNiVyxJQURhLEVBQ1BDLE1BQU1GLE1BREMsRUFFYlIsUUFGYSxFQUVITixPQUFPTyxVQUZKLENBQWY7O0FBS0FPLG1CQUFTUCxVQUFUO0FBQ0FRLGlCQUFPVCxRQUFQO0FBQ0FVLGdCQUFNaEIsSUFBTjs7QUFFQTtBQUNELFNBakNNLE1BaUNBLElBQUlELFNBQVNoQyxLQUFULElBQWtCMkMsTUFBTTNDLEtBQTVCLEVBQW1DO0FBQ3hDc0Isc0JBQVk2QyxTQUFaLEdBQXdCbEIsTUFBTSxDQUE5QjtBQUNBM0Isc0JBQVk0QyxJQUFaLENBQWlCdEMsR0FBakI7QUFDQSxjQUFJTixZQUFZNkMsU0FBWixLQUEwQixDQUE5QixFQUFpQztBQUMvQmxDLG1CQUFPTCxJQUFJa0IsTUFBSixHQUFhLENBQXBCO0FBQ0QsV0FGRCxNQUVPO0FBQ0xiLG1CQUFPWCxZQUFZNkMsU0FBWixHQUF3QixDQUEvQjtBQUNEOztBQUVEOUIsb0JBQVVULElBQUltQyxLQUFKLENBQVVkLEdBQVYsRUFBZWhCLE9BQU8sQ0FBdEIsQ0FBVjs7QUFFQVcseUJBQWUsQ0FBQyxTQUFELEVBQVlQLE9BQVosRUFDYlcsSUFEYSxFQUNQQyxNQUFNRixNQURDLEVBRWJDLElBRmEsRUFFUGYsT0FBT2MsTUFGQSxFQUdiLFFBSGEsQ0FBZjs7QUFNQUUsZ0JBQU1oQixJQUFOO0FBQ0E7QUFDRCxTQW5CTSxNQW1CQTtBQUNMZCxzQkFBWWdELFNBQVosR0FBd0JsQixNQUFNLENBQTlCO0FBQ0E5QixzQkFBWStDLElBQVosQ0FBaUJ0QyxHQUFqQjtBQUNBLGNBQUlULFlBQVlnRCxTQUFaLEtBQTBCLENBQTlCLEVBQWlDO0FBQy9CbEMsbUJBQU9MLElBQUlrQixNQUFKLEdBQWEsQ0FBcEI7QUFDRCxXQUZELE1BRU87QUFDTGIsbUJBQU9kLFlBQVlnRCxTQUFaLEdBQXdCLENBQS9CO0FBQ0Q7O0FBRUR2Qix5QkFBZSxDQUFDLE1BQUQsRUFBU2hCLElBQUltQyxLQUFKLENBQVVkLEdBQVYsRUFBZWhCLE9BQU8sQ0FBdEIsQ0FBVCxFQUNiZSxJQURhLEVBQ1BDLE1BQU1GLE1BREMsRUFFYkMsSUFGYSxFQUVQZixPQUFPYyxNQUZBLENBQWY7O0FBS0FHLGlCQUFPbUIsSUFBUCxDQUFZekIsWUFBWjs7QUFFQUssZ0JBQU1oQixJQUFOO0FBQ0Q7O0FBRUQ7QUFoVUo7O0FBbVVBZ0I7QUFDQSxXQUFPTCxZQUFQO0FBQ0Q7O0FBRUQsV0FBUzBCLElBQVQsQ0FBZUMsS0FBZixFQUFzQjtBQUNwQnBCLGFBQVNrQixJQUFULENBQWNFLEtBQWQ7QUFDRDs7QUFFRCxTQUFPO0FBQ0xELGNBREs7QUFFTFQsd0JBRks7QUFHTE47QUFISyxHQUFQO0FBS0QsQ0F2WkQiLCJmaWxlIjoic2Nzcy10b2tlbml6ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNJTkdMRV9RVU9URSA9ICdcXCcnLmNoYXJDb2RlQXQoMClcbmNvbnN0IERPVUJMRV9RVU9URSA9ICdcIicuY2hhckNvZGVBdCgwKVxuY29uc3QgQkFDS1NMQVNIID0gJ1xcXFwnLmNoYXJDb2RlQXQoMClcbmNvbnN0IFNMQVNIID0gJy8nLmNoYXJDb2RlQXQoMClcbmNvbnN0IE5FV0xJTkUgPSAnXFxuJy5jaGFyQ29kZUF0KDApXG5jb25zdCBTUEFDRSA9ICcgJy5jaGFyQ29kZUF0KDApXG5jb25zdCBGRUVEID0gJ1xcZicuY2hhckNvZGVBdCgwKVxuY29uc3QgVEFCID0gJ1xcdCcuY2hhckNvZGVBdCgwKVxuY29uc3QgQ1IgPSAnXFxyJy5jaGFyQ29kZUF0KDApXG5jb25zdCBPUEVOX1NRVUFSRSA9ICdbJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDTE9TRV9TUVVBUkUgPSAnXScuY2hhckNvZGVBdCgwKVxuY29uc3QgT1BFTl9QQVJFTlRIRVNFUyA9ICcoJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDTE9TRV9QQVJFTlRIRVNFUyA9ICcpJy5jaGFyQ29kZUF0KDApXG5jb25zdCBPUEVOX0NVUkxZID0gJ3snLmNoYXJDb2RlQXQoMClcbmNvbnN0IENMT1NFX0NVUkxZID0gJ30nLmNoYXJDb2RlQXQoMClcbmNvbnN0IFNFTUlDT0xPTiA9ICc7Jy5jaGFyQ29kZUF0KDApXG5jb25zdCBBU1RFUklTSyA9ICcqJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDT0xPTiA9ICc6Jy5jaGFyQ29kZUF0KDApXG5jb25zdCBBVCA9ICdAJy5jaGFyQ29kZUF0KDApXG5cbi8vIFNDU1MgUEFUQ0gge1xuY29uc3QgQ09NTUEgPSAnLCcuY2hhckNvZGVBdCgwKVxuY29uc3QgSEFTSCA9ICcjJy5jaGFyQ29kZUF0KDApXG4vLyB9IFNDU1MgUEFUQ0hcblxuY29uc3QgUkVfQVRfRU5EID0gL1sgXFxuXFx0XFxyXFxme30oKSdcIlxcXFw7L1tcXF0jXS9nXG5jb25zdCBSRV9XT1JEX0VORCA9IC9bIFxcblxcdFxcclxcZigpe306O0AhJ1wiXFxcXFxcXVsjXXxcXC8oPz1cXCopL2dcbmNvbnN0IFJFX0JBRF9CUkFDS0VUID0gLy5bXFxcXC8oXCInXFxuXS9cbmNvbnN0IFJFX0hFWF9FU0NBUEUgPSAvW2EtZjAtOV0vaVxuXG5jb25zdCBSRV9ORVdfTElORSA9IC9bXFxyXFxmXFxuXS9nIC8vIFNDU1MgUEFUQ0hcblxuLy8gU0NTUyBQQVRDSCBmdW5jdGlvbiBuYW1lIHdhcyBjaGFuZ2VkXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNjc3NUb2tlbml6ZSAoaW5wdXQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBjc3MgPSBpbnB1dC5jc3MudmFsdWVPZigpXG4gIGNvbnN0IGlnbm9yZSA9IG9wdGlvbnMuaWdub3JlRXJyb3JzXG5cbiAgbGV0IGNvZGUsIG5leHQsIHF1b3RlLCBsaW5lcywgbGFzdCwgY29udGVudCwgZXNjYXBlLFxuICAgIG5leHRMaW5lLCBuZXh0T2Zmc2V0LCBlc2NhcGVkLCBwcmV2LCBuLCBjdXJyZW50VG9rZW5cblxuICBsZXQgYnJhY2tldHMgLy8gU0NTUyBQQVRDSFxuXG4gIGNvbnN0IGxlbmd0aCA9IGNzcy5sZW5ndGhcbiAgbGV0IG9mZnNldCA9IC0xXG4gIGxldCBsaW5lID0gMVxuICBsZXQgcG9zID0gMFxuICBjb25zdCBidWZmZXIgPSBbXVxuICBjb25zdCByZXR1cm5lZCA9IFtdXG5cbiAgZnVuY3Rpb24gdW5jbG9zZWQgKHdoYXQpIHtcbiAgICB0aHJvdyBpbnB1dC5lcnJvcignVW5jbG9zZWQgJyArIHdoYXQsIGxpbmUsIHBvcyAtIG9mZnNldClcbiAgfVxuXG4gIGZ1bmN0aW9uIGVuZE9mRmlsZSAoKSB7XG4gICAgcmV0dXJuIHJldHVybmVkLmxlbmd0aCA9PT0gMCAmJiBwb3MgPj0gbGVuZ3RoXG4gIH1cblxuICAvLyBTQ1NTIFBBVENIIHtcbiAgZnVuY3Rpb24gaW50ZXJwb2xhdGlvbiAoKSB7XG4gICAgbGV0IGRlZXAgPSAxXG4gICAgbGV0IHN0cmluZ1F1b3RlID0gZmFsc2VcbiAgICBsZXQgc3RyaW5nRXNjYXBlZCA9IGZhbHNlXG4gICAgd2hpbGUgKGRlZXAgPiAwKSB7XG4gICAgICBuZXh0ICs9IDFcbiAgICAgIGlmIChjc3MubGVuZ3RoIDw9IG5leHQpIHVuY2xvc2VkKCdpbnRlcnBvbGF0aW9uJylcblxuICAgICAgY29kZSA9IGNzcy5jaGFyQ29kZUF0KG5leHQpXG4gICAgICBuID0gY3NzLmNoYXJDb2RlQXQobmV4dCArIDEpXG5cbiAgICAgIGlmIChzdHJpbmdRdW90ZSkge1xuICAgICAgICBpZiAoIXN0cmluZ0VzY2FwZWQgJiYgY29kZSA9PT0gc3RyaW5nUXVvdGUpIHtcbiAgICAgICAgICBzdHJpbmdRdW90ZSA9IGZhbHNlXG4gICAgICAgICAgc3RyaW5nRXNjYXBlZCA9IGZhbHNlXG4gICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gQkFDS1NMQVNIKSB7XG4gICAgICAgICAgc3RyaW5nRXNjYXBlZCA9ICFlc2NhcGVkXG4gICAgICAgIH0gZWxzZSBpZiAoc3RyaW5nRXNjYXBlZCkge1xuICAgICAgICAgIHN0cmluZ0VzY2FwZWQgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBjb2RlID09PSBTSU5HTEVfUVVPVEUgfHwgY29kZSA9PT0gRE9VQkxFX1FVT1RFXG4gICAgICApIHtcbiAgICAgICAgc3RyaW5nUXVvdGUgPSBjb2RlXG4gICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IENMT1NFX0NVUkxZKSB7XG4gICAgICAgIGRlZXAgLT0gMVxuICAgICAgfSBlbHNlIGlmIChjb2RlID09PSBIQVNIICYmIG4gPT09IE9QRU5fQ1VSTFkpIHtcbiAgICAgICAgZGVlcCArPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIH0gU0NTUyBQQVRDSFxuXG4gIGZ1bmN0aW9uIG5leHRUb2tlbiAoKSB7XG4gICAgaWYgKHJldHVybmVkLmxlbmd0aCkgcmV0dXJuIHJldHVybmVkLnBvcCgpXG4gICAgaWYgKHBvcyA+PSBsZW5ndGgpIHJldHVyblxuXG4gICAgY29kZSA9IGNzcy5jaGFyQ29kZUF0KHBvcylcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBORVdMSU5FIHx8IGNvZGUgPT09IEZFRUQgfHxcbiAgICAgIChjb2RlID09PSBDUiAmJiBjc3MuY2hhckNvZGVBdChwb3MgKyAxKSAhPT0gTkVXTElORSlcbiAgICApIHtcbiAgICAgIG9mZnNldCA9IHBvc1xuICAgICAgbGluZSArPSAxXG4gICAgfVxuXG4gICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICBjYXNlIE5FV0xJTkU6XG4gICAgICBjYXNlIFNQQUNFOlxuICAgICAgY2FzZSBUQUI6XG4gICAgICBjYXNlIENSOlxuICAgICAgY2FzZSBGRUVEOlxuICAgICAgICBuZXh0ID0gcG9zXG4gICAgICAgIGRvIHtcbiAgICAgICAgICBuZXh0ICs9IDFcbiAgICAgICAgICBjb2RlID0gY3NzLmNoYXJDb2RlQXQobmV4dClcbiAgICAgICAgICBpZiAoY29kZSA9PT0gTkVXTElORSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gbmV4dFxuICAgICAgICAgICAgbGluZSArPSAxXG4gICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlIChjb2RlID09PSBTUEFDRSB8fFxuICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPT09IE5FV0xJTkUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBjb2RlID09PSBUQUIgfHxcbiAgICAgICAgICAgICAgICAgICAgICBjb2RlID09PSBDUiB8fFxuICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPT09IEZFRUQpXG5cbiAgICAgICAgY3VycmVudFRva2VuID0gWydzcGFjZScsIGNzcy5zbGljZShwb3MsIG5leHQpXVxuICAgICAgICBwb3MgPSBuZXh0IC0gMVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIE9QRU5fU1FVQVJFOlxuICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ1snLCAnWycsIGxpbmUsIHBvcyAtIG9mZnNldF1cbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSBDTE9TRV9TUVVBUkU6XG4gICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnXScsICddJywgbGluZSwgcG9zIC0gb2Zmc2V0XVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIE9QRU5fQ1VSTFk6XG4gICAgICAgIGN1cnJlbnRUb2tlbiA9IFsneycsICd7JywgbGluZSwgcG9zIC0gb2Zmc2V0XVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIENMT1NFX0NVUkxZOlxuICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ30nLCAnfScsIGxpbmUsIHBvcyAtIG9mZnNldF1cbiAgICAgICAgYnJlYWtcblxuICAgICAgICAvLyBTQ1NTIFBBVENIIHtcbiAgICAgIGNhc2UgQ09NTUE6XG4gICAgICAgIGN1cnJlbnRUb2tlbiA9IFtcbiAgICAgICAgICAnd29yZCcsXG4gICAgICAgICAgJywnLFxuICAgICAgICAgIGxpbmUsIHBvcyAtIG9mZnNldCxcbiAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQgKyAxXG4gICAgICAgIF1cbiAgICAgICAgYnJlYWtcbiAgICAgICAgLy8gfSBTQ1NTIFBBVENIXG5cbiAgICAgIGNhc2UgQ09MT046XG4gICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnOicsICc6JywgbGluZSwgcG9zIC0gb2Zmc2V0XVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIFNFTUlDT0xPTjpcbiAgICAgICAgY3VycmVudFRva2VuID0gWyc7JywgJzsnLCBsaW5lLCBwb3MgLSBvZmZzZXRdXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgT1BFTl9QQVJFTlRIRVNFUzpcbiAgICAgICAgcHJldiA9IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIucG9wKClbMV0gOiAnJ1xuICAgICAgICBuID0gY3NzLmNoYXJDb2RlQXQocG9zICsgMSlcblxuICAgICAgICAvLyBTQ1NTIFBBVENIIHtcbiAgICAgICAgaWYgKHByZXYgPT09ICd1cmwnICYmIG4gIT09IFNJTkdMRV9RVU9URSAmJiBuICE9PSBET1VCTEVfUVVPVEUpIHtcbiAgICAgICAgICBicmFja2V0cyA9IDFcbiAgICAgICAgICBlc2NhcGVkID0gZmFsc2VcbiAgICAgICAgICBuZXh0ID0gcG9zICsgMVxuICAgICAgICAgIHdoaWxlIChuZXh0IDw9IGNzcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBuID0gY3NzLmNoYXJDb2RlQXQobmV4dClcbiAgICAgICAgICAgIGlmIChuID09PSBCQUNLU0xBU0gpIHtcbiAgICAgICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG4gPT09IE9QRU5fUEFSRU5USEVTRVMpIHtcbiAgICAgICAgICAgICAgYnJhY2tldHMgKz0gMVxuICAgICAgICAgICAgfSBlbHNlIGlmIChuID09PSBDTE9TRV9QQVJFTlRIRVNFUykge1xuICAgICAgICAgICAgICBicmFja2V0cyAtPSAxXG4gICAgICAgICAgICAgIGlmIChicmFja2V0cyA9PT0gMCkgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHQgKz0gMVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRlbnQgPSBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSlcbiAgICAgICAgICBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpXG4gICAgICAgICAgbGFzdCA9IGxpbmVzLmxlbmd0aCAtIDFcblxuICAgICAgICAgIGlmIChsYXN0ID4gMCkge1xuICAgICAgICAgICAgbmV4dExpbmUgPSBsaW5lICsgbGFzdFxuICAgICAgICAgICAgbmV4dE9mZnNldCA9IG5leHQgLSBsaW5lc1tsYXN0XS5sZW5ndGhcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV4dExpbmUgPSBsaW5lXG4gICAgICAgICAgICBuZXh0T2Zmc2V0ID0gb2Zmc2V0XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudFRva2VuID0gWydicmFja2V0cycsIGNvbnRlbnQsXG4gICAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgICBuZXh0TGluZSwgbmV4dCAtIG5leHRPZmZzZXRcbiAgICAgICAgICBdXG5cbiAgICAgICAgICBvZmZzZXQgPSBuZXh0T2Zmc2V0XG4gICAgICAgICAgbGluZSA9IG5leHRMaW5lXG4gICAgICAgICAgcG9zID0gbmV4dFxuICAgICAgICAgIC8vIH0gU0NTUyBQQVRDSFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5leHQgPSBjc3MuaW5kZXhPZignKScsIHBvcyArIDEpXG4gICAgICAgICAgY29udGVudCA9IGNzcy5zbGljZShwb3MsIG5leHQgKyAxKVxuXG4gICAgICAgICAgaWYgKG5leHQgPT09IC0xIHx8IFJFX0JBRF9CUkFDS0VULnRlc3QoY29udGVudCkpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnKCcsICcoJywgbGluZSwgcG9zIC0gb2Zmc2V0XVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ2JyYWNrZXRzJywgY29udGVudCxcbiAgICAgICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICBsaW5lLCBuZXh0IC0gb2Zmc2V0XG4gICAgICAgICAgICBdXG4gICAgICAgICAgICBwb3MgPSBuZXh0XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSBDTE9TRV9QQVJFTlRIRVNFUzpcbiAgICAgICAgY3VycmVudFRva2VuID0gWycpJywgJyknLCBsaW5lLCBwb3MgLSBvZmZzZXRdXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgU0lOR0xFX1FVT1RFOlxuICAgICAgY2FzZSBET1VCTEVfUVVPVEU6XG4gICAgICAgIC8vIFNDU1MgUEFUQ0gge1xuICAgICAgICBxdW90ZSA9IGNvZGVcbiAgICAgICAgbmV4dCA9IHBvc1xuXG4gICAgICAgIGVzY2FwZWQgPSBmYWxzZVxuICAgICAgICB3aGlsZSAobmV4dCA8IGxlbmd0aCkge1xuICAgICAgICAgIG5leHQrK1xuICAgICAgICAgIGlmIChuZXh0ID09PSBsZW5ndGgpIHVuY2xvc2VkKCdzdHJpbmcnKVxuXG4gICAgICAgICAgY29kZSA9IGNzcy5jaGFyQ29kZUF0KG5leHQpXG4gICAgICAgICAgbiA9IGNzcy5jaGFyQ29kZUF0KG5leHQgKyAxKVxuXG4gICAgICAgICAgaWYgKCFlc2NhcGVkICYmIGNvZGUgPT09IHF1b3RlKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gQkFDS1NMQVNIKSB7XG4gICAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWRcbiAgICAgICAgICB9IGVsc2UgaWYgKGVzY2FwZWQpIHtcbiAgICAgICAgICAgIGVzY2FwZWQgPSBmYWxzZVxuICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gSEFTSCAmJiBuID09PSBPUEVOX0NVUkxZKSB7XG4gICAgICAgICAgICBpbnRlcnBvbGF0aW9uKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gfSBTQ1NTIFBBVENIXG5cbiAgICAgICAgY29udGVudCA9IGNzcy5zbGljZShwb3MsIG5leHQgKyAxKVxuICAgICAgICBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpXG4gICAgICAgIGxhc3QgPSBsaW5lcy5sZW5ndGggLSAxXG5cbiAgICAgICAgaWYgKGxhc3QgPiAwKSB7XG4gICAgICAgICAgbmV4dExpbmUgPSBsaW5lICsgbGFzdFxuICAgICAgICAgIG5leHRPZmZzZXQgPSBuZXh0IC0gbGluZXNbbGFzdF0ubGVuZ3RoXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dExpbmUgPSBsaW5lXG4gICAgICAgICAgbmV4dE9mZnNldCA9IG9mZnNldFxuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudFRva2VuID0gWydzdHJpbmcnLCBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSksXG4gICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgIG5leHRMaW5lLCBuZXh0IC0gbmV4dE9mZnNldFxuICAgICAgICBdXG5cbiAgICAgICAgb2Zmc2V0ID0gbmV4dE9mZnNldFxuICAgICAgICBsaW5lID0gbmV4dExpbmVcbiAgICAgICAgcG9zID0gbmV4dFxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIEFUOlxuICAgICAgICBSRV9BVF9FTkQubGFzdEluZGV4ID0gcG9zICsgMVxuICAgICAgICBSRV9BVF9FTkQudGVzdChjc3MpXG4gICAgICAgIGlmIChSRV9BVF9FTkQubGFzdEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dCA9IFJFX0FUX0VORC5sYXN0SW5kZXggLSAyXG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ2F0LXdvcmQnLCBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSksXG4gICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgXVxuXG4gICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSBCQUNLU0xBU0g6XG4gICAgICAgIG5leHQgPSBwb3NcbiAgICAgICAgZXNjYXBlID0gdHJ1ZVxuICAgICAgICB3aGlsZSAoY3NzLmNoYXJDb2RlQXQobmV4dCArIDEpID09PSBCQUNLU0xBU0gpIHtcbiAgICAgICAgICBuZXh0ICs9IDFcbiAgICAgICAgICBlc2NhcGUgPSAhZXNjYXBlXG4gICAgICAgIH1cbiAgICAgICAgY29kZSA9IGNzcy5jaGFyQ29kZUF0KG5leHQgKyAxKVxuICAgICAgICBpZiAoZXNjYXBlICYmIChjb2RlICE9PSBTTEFTSCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgIT09IFNQQUNFICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSAhPT0gTkVXTElORSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgIT09IFRBQiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgIT09IENSICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSAhPT0gRkVFRCkpIHtcbiAgICAgICAgICBuZXh0ICs9IDFcbiAgICAgICAgICBpZiAoUkVfSEVYX0VTQ0FQRS50ZXN0KGNzcy5jaGFyQXQobmV4dCkpKSB7XG4gICAgICAgICAgICB3aGlsZSAoUkVfSEVYX0VTQ0FQRS50ZXN0KGNzcy5jaGFyQXQobmV4dCArIDEpKSkge1xuICAgICAgICAgICAgICBuZXh0ICs9IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjc3MuY2hhckNvZGVBdChuZXh0ICsgMSkgPT09IFNQQUNFKSB7XG4gICAgICAgICAgICAgIG5leHQgKz0gMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICBdXG5cbiAgICAgICAgcG9zID0gbmV4dFxuICAgICAgICBicmVha1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBTQ1NTIFBBVENIIHtcbiAgICAgICAgbiA9IGNzcy5jaGFyQ29kZUF0KHBvcyArIDEpXG5cbiAgICAgICAgaWYgKGNvZGUgPT09IEhBU0ggJiYgbiA9PT0gT1BFTl9DVVJMWSkge1xuICAgICAgICAgIG5leHQgPSBwb3NcbiAgICAgICAgICBpbnRlcnBvbGF0aW9uKClcblxuICAgICAgICAgIGNvbnRlbnQgPSBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSlcbiAgICAgICAgICBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpXG4gICAgICAgICAgbGFzdCA9IGxpbmVzLmxlbmd0aCAtIDFcblxuICAgICAgICAgIGlmIChsYXN0ID4gMCkge1xuICAgICAgICAgICAgbmV4dExpbmUgPSBsaW5lICsgbGFzdFxuICAgICAgICAgICAgbmV4dE9mZnNldCA9IG5leHQgLSBsaW5lc1tsYXN0XS5sZW5ndGhcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV4dExpbmUgPSBsaW5lXG4gICAgICAgICAgICBuZXh0T2Zmc2V0ID0gb2Zmc2V0XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudFRva2VuID0gWyd3b3JkJywgY29udGVudCxcbiAgICAgICAgICAgIGxpbmUsIHBvcyAtIG9mZnNldCxcbiAgICAgICAgICAgIG5leHRMaW5lLCBuZXh0IC0gbmV4dE9mZnNldFxuICAgICAgICAgIF1cblxuICAgICAgICAgIG9mZnNldCA9IG5leHRPZmZzZXRcbiAgICAgICAgICBsaW5lID0gbmV4dExpbmVcbiAgICAgICAgICBwb3MgPSBuZXh0XG4gICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gU0xBU0ggJiYgbiA9PT0gQVNURVJJU0spIHtcbiAgICAgICAgICAvLyB9IFNDU1MgUEFUQ0hcbiAgICAgICAgICBuZXh0ID0gY3NzLmluZGV4T2YoJyovJywgcG9zICsgMikgKyAxXG4gICAgICAgICAgaWYgKG5leHQgPT09IDApIHtcbiAgICAgICAgICAgIGlmIChpZ25vcmUpIHtcbiAgICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGhcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHVuY2xvc2VkKCdjb21tZW50JylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpXG4gICAgICAgICAgbGluZXMgPSBjb250ZW50LnNwbGl0KCdcXG4nKVxuICAgICAgICAgIGxhc3QgPSBsaW5lcy5sZW5ndGggLSAxXG5cbiAgICAgICAgICBpZiAobGFzdCA+IDApIHtcbiAgICAgICAgICAgIG5leHRMaW5lID0gbGluZSArIGxhc3RcbiAgICAgICAgICAgIG5leHRPZmZzZXQgPSBuZXh0IC0gbGluZXNbbGFzdF0ubGVuZ3RoXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHRMaW5lID0gbGluZVxuICAgICAgICAgICAgbmV4dE9mZnNldCA9IG9mZnNldFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnY29tbWVudCcsIGNvbnRlbnQsXG4gICAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgICBuZXh0TGluZSwgbmV4dCAtIG5leHRPZmZzZXRcbiAgICAgICAgICBdXG5cbiAgICAgICAgICBvZmZzZXQgPSBuZXh0T2Zmc2V0XG4gICAgICAgICAgbGluZSA9IG5leHRMaW5lXG4gICAgICAgICAgcG9zID0gbmV4dFxuXG4gICAgICAgICAgLy8gU0NTUyBQQVRDSCB7XG4gICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gU0xBU0ggJiYgbiA9PT0gU0xBU0gpIHtcbiAgICAgICAgICBSRV9ORVdfTElORS5sYXN0SW5kZXggPSBwb3MgKyAxXG4gICAgICAgICAgUkVfTkVXX0xJTkUudGVzdChjc3MpXG4gICAgICAgICAgaWYgKFJFX05FV19MSU5FLmxhc3RJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHQgPSBSRV9ORVdfTElORS5sYXN0SW5kZXggLSAyXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGVudCA9IGNzcy5zbGljZShwb3MsIG5leHQgKyAxKVxuXG4gICAgICAgICAgY3VycmVudFRva2VuID0gWydjb21tZW50JywgY29udGVudCxcbiAgICAgICAgICAgIGxpbmUsIHBvcyAtIG9mZnNldCxcbiAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXQsXG4gICAgICAgICAgICAnaW5saW5lJ1xuICAgICAgICAgIF1cblxuICAgICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgICAvLyB9IFNDU1MgUEFUQ0hcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBSRV9XT1JEX0VORC5sYXN0SW5kZXggPSBwb3MgKyAxXG4gICAgICAgICAgUkVfV09SRF9FTkQudGVzdChjc3MpXG4gICAgICAgICAgaWYgKFJFX1dPUkRfRU5ELmxhc3RJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHQgPSBSRV9XT1JEX0VORC5sYXN0SW5kZXggLSAyXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudFRva2VuID0gWyd3b3JkJywgY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpLFxuICAgICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgIF1cblxuICAgICAgICAgIGJ1ZmZlci5wdXNoKGN1cnJlbnRUb2tlbilcblxuICAgICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcG9zKytcbiAgICByZXR1cm4gY3VycmVudFRva2VuXG4gIH1cblxuICBmdW5jdGlvbiBiYWNrICh0b2tlbikge1xuICAgIHJldHVybmVkLnB1c2godG9rZW4pXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJhY2ssXG4gICAgbmV4dFRva2VuLFxuICAgIGVuZE9mRmlsZVxuICB9XG59XG4iXX0=
diff --git a/assets/node_modules/postcss-scss/package.json b/assets/node_modules/postcss-scss/package.json
deleted file mode 100644
index d60f93b..0000000
--- a/assets/node_modules/postcss-scss/package.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "postcss-scss",
- "version": "2.0.0",
- "description": "SCSS parser for PostCSS",
- "keywords": ["css", "postcss", "postcss-syntax", "parser", "scss", "sass"],
- "author": "Andrey Sitnik <andrey@sitnik.ru>",
- "license": "MIT",
- "repository": "postcss/postcss-scss",
- "engines": {
- "node": ">=6.0.0"
- },
- "dependencies": {
- "postcss": "^7.0.0"
- },
- "main": "lib/scss-syntax"
-} \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/API.md b/assets/node_modules/postcss-selector-parser/API.md
deleted file mode 100644
index 3f1ba80..0000000
--- a/assets/node_modules/postcss-selector-parser/API.md
+++ /dev/null
@@ -1,836 +0,0 @@
-# API Documentation
-
-*Please use only this documented API when working with the parser. Methods
-not documented here are subject to change at any point.*
-
-## `parser` function
-
-This is the module's main entry point.
-
-```js
-const parser = require('postcss-selector-parser');
-```
-
-### `parser([transform], [options])`
-
-Creates a new `processor` instance
-
-```js
-const processor = parser();
-
-// or, with optional transform function
-const transform = selectors => {
- selectors.walkUniversals(selector => {
- selector.remove();
- });
-};
-
-const processor = parser(transform)
-
-// Example
-const result = processor.processSync('*.class');
-// => .class
-```
-
-[See processor documentation](#processor)
-
-Arguments:
-
-* `transform (function)`: Provide a function to work with the parsed AST.
-* `options (object)`: Provide default options for all calls on the returned `Processor`.
-
-### `parser.attribute([props])`
-
-Creates a new attribute selector.
-
-```js
-parser.attribute({attribute: 'href'});
-// => [href]
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.className([props])`
-
-Creates a new class selector.
-
-```js
-parser.className({value: 'button'});
-// => .button
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.combinator([props])`
-
-Creates a new selector combinator.
-
-```js
-parser.combinator({value: '+'});
-// => +
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.comment([props])`
-
-Creates a new comment.
-
-```js
-parser.comment({value: '/* Affirmative, Dave. I read you. */'});
-// => /* Affirmative, Dave. I read you. */
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.id([props])`
-
-Creates a new id selector.
-
-```js
-parser.id({value: 'search'});
-// => #search
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.nesting([props])`
-
-Creates a new nesting selector.
-
-```js
-parser.nesting();
-// => &
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.pseudo([props])`
-
-Creates a new pseudo selector.
-
-```js
-parser.pseudo({value: '::before'});
-// => ::before
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.root([props])`
-
-Creates a new root node.
-
-```js
-parser.root();
-// => (empty)
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.selector([props])`
-
-Creates a new selector node.
-
-```js
-parser.selector();
-// => (empty)
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.string([props])`
-
-Creates a new string node.
-
-```js
-parser.string();
-// => (empty)
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.tag([props])`
-
-Creates a new tag selector.
-
-```js
-parser.tag({value: 'button'});
-// => button
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.universal([props])`
-
-Creates a new universal selector.
-
-```js
-parser.universal();
-// => *
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-## Node types
-
-### `node.type`
-
-A string representation of the selector type. It can be one of the following;
-`attribute`, `class`, `combinator`, `comment`, `id`, `nesting`, `pseudo`,
-`root`, `selector`, `string`, `tag`, or `universal`. Note that for convenience,
-these constants are exposed on the main `parser` as uppercased keys. So for
-example you can get `id` by querying `parser.ID`.
-
-```js
-parser.attribute({attribute: 'href'}).type;
-// => 'attribute'
-```
-
-### `node.parent`
-
-Returns the parent node.
-
-```js
-root.nodes[0].parent === root;
-```
-
-### `node.toString()`, `String(node)`, or `'' + node`
-
-Returns a string representation of the node.
-
-```js
-const id = parser.id({value: 'search'});
-console.log(String(id));
-// => #search
-```
-
-### `node.next()` & `node.prev()`
-
-Returns the next/previous child of the parent node.
-
-```js
-const next = id.next();
-if (next && next.type !== 'combinator') {
- throw new Error('Qualified IDs are not allowed!');
-}
-```
-
-### `node.replaceWith(node)`
-
-Replace a node with another.
-
-```js
-const attr = selectors.first.first;
-const className = parser.className({value: 'test'});
-attr.replaceWith(className);
-```
-
-Arguments:
-
-* `node`: The node to substitute the original with.
-
-### `node.remove()`
-
-Removes the node from its parent node.
-
-```js
-if (node.type === 'id') {
- node.remove();
-}
-```
-
-### `node.clone()`
-
-Returns a copy of a node, detached from any parent containers that the
-original might have had.
-
-```js
-const cloned = parser.id({value: 'search'});
-String(cloned);
-
-// => #search
-```
-
-### `node.spaces`
-
-Extra whitespaces around the node will be moved into `node.spaces.before` and
-`node.spaces.after`. So for example, these spaces will be moved as they have
-no semantic meaning:
-
-```css
- h1 , h2 {}
-```
-
-However, *combinating* spaces will form a `combinator` node:
-
-```css
-h1 h2 {}
-```
-
-A `combinator` node may only have the `spaces` property set if the combinator
-value is a non-whitespace character, such as `+`, `~` or `>`. Otherwise, the
-combinator value will contain all of the spaces between selectors.
-
-### `node.source`
-
-An object describing the node's start/end, line/column source position.
-
-Within the following CSS, the `.bar` class node ...
-
-```css
-.foo,
- .bar {}
-```
-
-... will contain the following `source` object.
-
-```js
-source: {
- start: {
- line: 2,
- column: 3
- },
- end: {
- line: 2,
- column: 6
- }
-}
-```
-
-### `node.sourceIndex`
-
-The zero-based index of the node within the original source string.
-
-Within the following CSS, the `.baz` class node will have a `sourceIndex` of `12`.
-
-```css
-.foo, .bar, .baz {}
-```
-
-## Container types
-
-The `root`, `selector`, and `pseudo` nodes have some helper methods for working
-with their children.
-
-### `container.nodes`
-
-An array of the container's children.
-
-```js
-// Input: h1 h2
-selectors.at(0).nodes.length // => 3
-selectors.at(0).nodes[0].value // => 'h1'
-selectors.at(0).nodes[1].value // => ' '
-```
-
-### `container.first` & `container.last`
-
-The first/last child of the container.
-
-```js
-selector.first === selector.nodes[0];
-selector.last === selector.nodes[selector.nodes.length - 1];
-```
-
-### `container.at(index)`
-
-Returns the node at position `index`.
-
-```js
-selector.at(0) === selector.first;
-selector.at(0) === selector.nodes[0];
-```
-
-Arguments:
-
-* `index`: The index of the node to return.
-
-### `container.index(node)`
-
-Return the index of the node within its container.
-
-```js
-selector.index(selector.nodes[2]) // => 2
-```
-
-Arguments:
-
-* `node`: A node within the current container.
-
-### `container.length`
-
-Proxy to the length of the container's nodes.
-
-```js
-container.length === container.nodes.length
-```
-
-### `container` Array iterators
-
-The container class provides proxies to certain Array methods; these are:
-
-* `container.map === container.nodes.map`
-* `container.reduce === container.nodes.reduce`
-* `container.every === container.nodes.every`
-* `container.some === container.nodes.some`
-* `container.filter === container.nodes.filter`
-* `container.sort === container.nodes.sort`
-
-Note that these methods only work on a container's immediate children; recursive
-iteration is provided by `container.walk`.
-
-### `container.each(callback)`
-
-Iterate the container's immediate children, calling `callback` for each child.
-You may return `false` within the callback to break the iteration.
-
-```js
-let className;
-selectors.each((selector, index) => {
- if (selector.type === 'class') {
- className = selector.value;
- return false;
- }
-});
-```
-
-Note that unlike `Array#forEach()`, this iterator is safe to use whilst adding
-or removing nodes from the container.
-
-Arguments:
-
-* `callback (function)`: A function to call for each node, which receives `node`
- and `index` arguments.
-
-### `container.walk(callback)`
-
-Like `container#each`, but will also iterate child nodes as long as they are
-`container` types.
-
-```js
-selectors.walk((selector, index) => {
- // all nodes
-});
-```
-
-Arguments:
-
-* `callback (function)`: A function to call for each node, which receives `node`
- and `index` arguments.
-
-This iterator is safe to use whilst mutating `container.nodes`,
-like `container#each`.
-
-### `container.walk` proxies
-
-The container class provides proxy methods for iterating over types of nodes,
-so that it is easier to write modules that target specific selectors. Those
-methods are:
-
-* `container.walkAttributes`
-* `container.walkClasses`
-* `container.walkCombinators`
-* `container.walkComments`
-* `container.walkIds`
-* `container.walkNesting`
-* `container.walkPseudos`
-* `container.walkTags`
-* `container.walkUniversals`
-
-### `container.split(callback)`
-
-This method allows you to split a group of nodes by returning `true` from
-a callback. It returns an array of arrays, where each inner array corresponds
-to the groups that you created via the callback.
-
-```js
-// (input) => h1 h2>>h3
-const list = selectors.first.split(selector => {
- return selector.type === 'combinator';
-});
-
-// (node values) => [['h1', ' '], ['h2', '>>'], ['h3']]
-```
-
-Arguments:
-
-* `callback (function)`: A function to call for each node, which receives `node`
- as an argument.
-
-### `container.prepend(node)` & `container.append(node)`
-
-Add a node to the start/end of the container. Note that doing so will set
-the parent property of the node to this container.
-
-```js
-const id = parser.id({value: 'search'});
-selector.append(id);
-```
-
-Arguments:
-
-* `node`: The node to add.
-
-### `container.insertBefore(old, new)` & `container.insertAfter(old, new)`
-
-Add a node before or after an existing node in a container:
-
-```js
-selectors.walk(selector => {
- if (selector.type !== 'class') {
- const className = parser.className({value: 'theme-name'});
- selector.parent.insertAfter(selector, className);
- }
-});
-```
-
-Arguments:
-
-* `old`: The existing node in the container.
-* `new`: The new node to add before/after the existing node.
-
-### `container.removeChild(node)`
-
-Remove the node from the container. Note that you can also use
-`node.remove()` if you would like to remove just a single node.
-
-```js
-selector.length // => 2
-selector.remove(id)
-selector.length // => 1;
-id.parent // undefined
-```
-
-Arguments:
-
-* `node`: The node to remove.
-
-### `container.removeAll()` or `container.empty()`
-
-Remove all children from the container.
-
-```js
-selector.removeAll();
-selector.length // => 0
-```
-
-## Root nodes
-
-A root node represents a comma separated list of selectors. Indeed, all
-a root's `toString()` method does is join its selector children with a ','.
-Other than this, it has no special functionality and acts like a container.
-
-### `root.trailingComma`
-
-This will be set to `true` if the input has a trailing comma, in order to
-support parsing of legacy CSS hacks.
-
-## Selector nodes
-
-A selector node represents a single compound selector. For example, this
-selector string `h1 h2 h3, [href] > p`, is represented as two selector nodes.
-It has no special functionality of its own.
-
-## Pseudo nodes
-
-A pseudo selector extends a container node; if it has any parameters of its
-own (such as `h1:not(h2, h3)`), they will be its children. Note that the pseudo
-`value` will always contain the colons preceding the pseudo identifier. This
-is so that both `:before` and `::before` are properly represented in the AST.
-
-## Attribute nodes
-
-### `attribute.quoted`
-
-Returns `true` if the attribute's value is wrapped in quotation marks, false if it is not.
-Remains `undefined` if there is no attribute value.
-
-```css
-[href=foo] /* false */
-[href='foo'] /* true */
-[href="foo"] /* true */
-[href] /* undefined */
-```
-
-### `attribute.qualifiedAttribute`
-
-Returns the attribute name qualified with the namespace if one is given.
-
-### `attribute.offsetOf(part)`
-
- Returns the offset of the attribute part specified relative to the
- start of the node of the output string. This is useful in raising
- error messages about a specific part of the attribute, especially
- in combination with `attribute.sourceIndex`.
-
- Returns `-1` if the name is invalid or the value doesn't exist in this
- attribute.
-
- The legal values for `part` are:
-
- * `"ns"` - alias for "namespace"
- * `"namespace"` - the namespace if it exists.
- * `"attribute"` - the attribute name
- * `"attributeNS"` - the start of the attribute or its namespace
- * `"operator"` - the match operator of the attribute
- * `"value"` - The value (string or identifier)
- * `"insensitive"` - the case insensitivity flag
-
-### `attribute.raws.unquoted`
-
-Returns the unquoted content of the attribute's value.
-Remains `undefined` if there is no attribute value.
-
-```css
-[href=foo] /* foo */
-[href='foo'] /* foo */
-[href="foo"] /* foo */
-[href] /* undefined */
-```
-
-### `attribute.spaces`
-
-Like `node.spaces` with the `before` and `after` values containing the spaces
-around the element, the parts of the attribute can also have spaces before
-and after them. The for each of `attribute`, `operator`, `value` and
-`insensitive` there is corresponding property of the same nam in
-`node.spaces` that has an optional `before` or `after` string containing only
-whitespace.
-
-Note that corresponding values in `attributes.raws.spaces` contain values
-including any comments. If set, these values will override the
-`attribute.spaces` value. Take care to remove them if changing
-`attribute.spaces`.
-
-### `attribute.raws`
-
-The raws object stores comments and other information necessary to re-render
-the node exactly as it was in the source.
-
-If a comment is embedded within the identifiers for the `namespace`, `attribute`
-or `value` then a property is placed in the raws for that value containing the full source of the propery including comments.
-
-If a comment is embedded within the space between parts of the attribute
-then the raw for that space is set accordingly.
-
-Setting an attribute's property `raws` value to be deleted.
-
-For now, changing the spaces required also updating or removing any of the
-raws values that override them.
-
-Example: `[ /*before*/ href /* after-attr */ = /* after-operator */ te/*inside-value*/st/* wow */ /*omg*/i/*bbq*/ /*whodoesthis*/]` would parse as:
-
-```js
-{
- attribute: "href",
- operatator: "=",
- value: "test",
- spaces: {
- before: '',
- after: '',
- attribute: { before: ' ', after: ' ' },
- operator: { after: ' ' },
- value: { after: ' ' },
- insensitive: { after: ' ' }
- },
- raws: {
- spaces: {
- attribute: { before: ' /*before*/ ', after: ' /* after-attr */ ' },
- operator: { after: ' /* after-operator */ ' },
- value: { after: '/* wow */ /*omg*/' },
- insensitive: { after: '/*bbq*/ /*whodoesthis*/' }
- },
- unquoted: 'test',
- value: 'te/*inside-value*/st'
- }
-}
-```
-
-## `Processor`
-
-### `ProcessorOptions`
-
-* `lossless` - When `true`, whitespace is preserved. Defaults to `true`.
-* `updateSelector` - When `true`, if any processor methods are passed a postcss
- `Rule` node instead of a string, then that Rule's selector is updated
- with the results of the processing. Defaults to `true`.
-
-### `process|processSync(selectors, [options])`
-
-Processes the `selectors`, returning a string from the result of processing.
-
-Note: when the `updateSelector` option is set, the rule's selector
-will be updated with the resulting string.
-
-**Example:**
-
-```js
-const parser = require("postcss-selector-parser");
-const processor = parser();
-
-let result = processor.processSync(' .class');
-console.log(result);
-// => .class
-
-// Asynchronous operation
-let promise = processor.process(' .class').then(result => {
- console.log(result)
- // => .class
-});
-
-// To have the parser normalize whitespace values, utilize the options
-result = processor.processSync(' .class ', {lossless: false});
-console.log(result);
-// => .class
-
-// For better syntax errors, pass a PostCSS Rule node.
-const postcss = require('postcss');
-rule = postcss.rule({selector: ' #foo > a, .class '});
-processor.process(rule, {lossless: false, updateSelector: true}).then(result => {
- console.log(result);
- // => #foo>a,.class
- console.log("rule:", rule.selector);
- // => rule: #foo>a,.class
-})
-```
-
-Arguments:
-
-* `selectors (string|postcss.Rule)`: Either a selector string or a PostCSS Rule
- node.
-* `[options] (object)`: Process options
-
-
-### `ast|astSync(selectors, [options])`
-
-Like `process()` and `processSync()` but after
-processing the `selectors` these methods return the `Root` node of the result
-instead of a string.
-
-Note: when the `updateSelector` option is set, the rule's selector
-will be updated with the resulting string.
-
-### `transform|transformSync(selectors, [options])`
-
-Like `process()` and `processSync()` but after
-processing the `selectors` these methods return the value returned by the
-processor callback.
-
-Note: when the `updateSelector` option is set, the rule's selector
-will be updated with the resulting string.
-
-### Error Handling Within Selector Processors
-
-The root node passed to the selector processor callback
-has a method `error(message, options)` that returns an
-error object. This method should always be used to raise
-errors relating to the syntax of selectors. The options
-to this method are passed to postcss's error constructor
-([documentation](http://api.postcss.org/Container.html#error)).
-
-#### Async Error Example
-
-```js
-let processor = (root) => {
- return new Promise((resolve, reject) => {
- root.walkClasses((classNode) => {
- if (/^(.*)[-_]/.test(classNode.value)) {
- let msg = "classes may not have underscores or dashes in them";
- reject(root.error(msg, {
- index: classNode.sourceIndex + RegExp.$1.length + 1,
- word: classNode.value
- }));
- }
- });
- resolve();
- });
-};
-
-const postcss = require("postcss");
-const parser = require("postcss-selector-parser");
-const selectorProcessor = parser(processor);
-const plugin = postcss.plugin('classValidator', (options) => {
- return (root) => {
- let promises = [];
- root.walkRules(rule => {
- promises.push(selectorProcessor.process(rule));
- });
- return Promise.all(promises);
- };
-});
-postcss(plugin()).process(`
-.foo-bar {
- color: red;
-}
-`.trim(), {from: 'test.css'}).catch((e) => console.error(e.toString()));
-
-// CssSyntaxError: classValidator: ./test.css:1:5: classes may not have underscores or dashes in them
-//
-// > 1 | .foo-bar {
-// | ^
-// 2 | color: red;
-// 3 | }
-```
-
-#### Synchronous Error Example
-
-```js
-let processor = (root) => {
- root.walkClasses((classNode) => {
- if (/.*[-_]/.test(classNode.value)) {
- let msg = "classes may not have underscores or dashes in them";
- throw root.error(msg, {
- index: classNode.sourceIndex,
- word: classNode.value
- });
- }
- });
-};
-
-const postcss = require("postcss");
-const parser = require("postcss-selector-parser");
-const selectorProcessor = parser(processor);
-const plugin = postcss.plugin('classValidator', (options) => {
- return (root) => {
- root.walkRules(rule => {
- selectorProcessor.processSync(rule);
- });
- };
-});
-postcss(plugin()).process(`
-.foo-bar {
- color: red;
-}
-`.trim(), {from: 'test.css'}).catch((e) => console.error(e.toString()));
-
-// CssSyntaxError: classValidator: ./test.css:1:5: classes may not have underscores or dashes in them
-//
-// > 1 | .foo-bar {
-// | ^
-// 2 | color: red;
-// 3 | }
-```
diff --git a/assets/node_modules/postcss-selector-parser/CHANGELOG.md b/assets/node_modules/postcss-selector-parser/CHANGELOG.md
deleted file mode 100644
index 3d51199..0000000
--- a/assets/node_modules/postcss-selector-parser/CHANGELOG.md
+++ /dev/null
@@ -1,209 +0,0 @@
-# 3.1.1
-
-* Fix: typescript definitions weren't in the published package.
-
-# 3.1.0
-
-* Fixed numerous bugs in attribute nodes relating to the handling of comments
- and whitespace. There's significant changes to `attrNode.spaces` and `attrNode.raws` since the `3.0.0` release.
-* Added `Attribute#offsetOf(part)` to get the offset location of
- attribute parts like `"operator"` and `"value"`. This is most
- often added to `Attribute#sourceIndex` for error reporting.
-
-# 3.0.0
-
-## Breaking changes
-
-* Some tweaks to the tokenizer/attribute selector parsing mean that whitespace
- locations might be slightly different to the 2.x code.
-* Better attribute selector parsing with more validation; postcss-selector-parser
- no longer uses regular expressions to parse attribute selectors.
-* Added an async API (thanks to @jacobp100); the default `process` API is now
- async, and the sync API is now accessed through `processSync` instead.
-* `process()` and `processSync()` now return a string instead of the Processor
- instance.
-* Tweaks handling of Less interpolation (thanks to @jwilsson).
-* Removes support for Node 0.12.
-
-## Other changes
-
-* `ast()` and `astSync()` methods have been added to the `Processor`. These
- return the `Root` node of the selectors after processing them.
-* `transform()` and `transformSync()` methods have been added to the
- `Processor`. These return the value returned by the processor callback
- after processing the selectors.
-* Set the parent when inserting a node (thanks to @chriseppstein).
-* Correctly adjust indices when using insertBefore/insertAfter (thanks to @tivac).
-* Fixes handling of namespaces with qualified tag selectors.
-* `process`, `ast` and `transform` (and their sync variants) now accept a
- `postcss` rule node. When provided, better errors are generated and selector
- processing is automatically set back to the rule selector (unless the `updateSelector` option is set to `false`.)
-* Now more memory efficient when tokenizing selectors.
-
-### Upgrade hints
-
-The pattern of:
-
-`rule.selector = processor.process(rule.selector).result.toString();`
-
-is now:
-
-`processor.processSync(rule)`
-
-# 2.2.3
-
-* Resolves an issue where the parser would not reduce multiple spaces between an
- ampersand and another simple selector in lossy mode (thanks to @adam-26).
-
-# 2.2.2
-
-* No longer hangs on an unescaped semicolon; instead the parser will throw
- an exception for these cases.
-
-# 2.2.1
-
-* Allows a consumer to specify whitespace tokens when creating a new Node
- (thanks to @Semigradsky).
-
-# 2.2.0
-
-* Added a new option to normalize whitespace when parsing the selector string
- (thanks to @adam-26).
-
-# 2.1.1
-
-* Better unquoted value handling within attribute selectors
- (thanks to @evilebottnawi).
-
-# 2.1.0
-
-* Added: Use string constants for all node types & expose them on the main
- parser instance (thanks to @Aweary).
-
-# 2.0.0
-
-This release contains the following breaking changes:
-
-* Renamed all `eachInside` iterators to `walk`. For example, `eachTag` is now
- `walkTags`, and `eachInside` is now `walk`.
-* Renamed `Node#removeSelf()` to `Node#remove()`.
-* Renamed `Container#remove()` to `Container#removeChild()`.
-* Renamed `Node#raw` to `Node#raws` (thanks to @davidtheclark).
-* Now parses `&` as the *nesting* selector, rather than a *tag* selector.
-* Fixes misinterpretation of Sass interpolation (e.g. `#{foo}`) as an
- id selector (thanks to @davidtheclark).
-
-and;
-
-* Fixes parsing of attribute selectors with equals signs in them
- (e.g. `[data-attr="foo=bar"]`) (thanks to @montmanu).
-* Adds `quoted` and `raw.unquoted` properties to attribute nodes
- (thanks to @davidtheclark).
-
-# 1.3.3
-
-* Fixes an infinite loop on `)` and `]` tokens when they had no opening pairs.
- Now postcss-selector-parser will throw when it encounters these lone tokens.
-
-# 1.3.2
-
-* Now uses plain integers rather than `str.charCodeAt(0)` for compiled builds.
-
-# 1.3.1
-
-* Update flatten to v1.x (thanks to @shinnn).
-
-# 1.3.0
-
-* Adds a new node type, `String`, to fix a crash on selectors such as
- `foo:bar("test")`.
-
-# 1.2.1
-
-* Fixes a crash when the parser encountered a trailing combinator.
-
-# 1.2.0
-
-* A more descriptive error is thrown when the parser expects to find a
- pseudo-class/pseudo-element (thanks to @ashelley).
-* Adds support for line/column locations for selector nodes, as well as a
- `Node#sourceIndex` method (thanks to @davidtheclark).
-
-# 1.1.4
-
-* Fixes a crash when a selector started with a `>` combinator. The module will
- now no longer throw if a selector has a leading/trailing combinator node.
-
-# 1.1.3
-
-* Fixes a crash on `@` tokens.
-
-# 1.1.2
-
-* Fixes an infinite loop caused by using parentheses in a non-pseudo element
- context.
-
-# 1.1.1
-
-* Fixes a crash when a backslash ended a selector string.
-
-# 1.1.0
-
-* Adds support for replacing multiple nodes at once with `replaceWith`
- (thanks to @jonathantneal).
-* Parser no longer throws on sequential IDs and trailing commas, to support
- parsing of selector hacks.
-
-# 1.0.1
-
-* Fixes using `insertAfter` and `insertBefore` during iteration.
-
-# 1.0.0
-
-* Adds `clone` and `replaceWith` methods to nodes.
-* Adds `insertBefore` and `insertAfter` to containers.
-* Stabilises API.
-
-# 0.0.5
-
-* Fixes crash on extra whitespace inside a pseudo selector's parentheses.
-* Adds sort function to the container class.
-* Enables the parser to pass its input through without transforming.
-* Iteration-safe `each` and `eachInside`.
-
-# 0.0.4
-
-* Tidy up redundant duplication.
-* Fixes a bug where the parser would loop infinitely on universal selectors
- inside pseudo selectors.
-* Adds `length` getter and `eachInside`, `map`, `reduce` to the container class.
-* When a selector has been removed from the tree, the root node will no longer
- cast it to a string.
-* Adds node type iterators to the container class (e.g. `eachComment`).
-* Adds filter function to the container class.
-* Adds split function to the container class.
-* Create new node types by doing `parser.id(opts)` etc.
-* Adds support for pseudo classes anywhere in the selector.
-
-# 0.0.3
-
-* Adds `next` and `prev` to the node class.
-* Adds `first` and `last` getters to the container class.
-* Adds `every` and `some` iterators to the container class.
-* Add `empty` alias for `removeAll`.
-* Combinators are now types of node.
-* Fixes the at method so that it is not an alias for `index`.
-* Tidy up creation of new nodes in the parser.
-* Refactors how namespaces are handled for consistency & less redundant code.
-* Refactors AST to use `nodes` exclusively, and eliminates excessive nesting.
-* Fixes nested pseudo parsing.
-* Fixes whitespace parsing.
-
-# 0.0.2
-
-* Adds support for namespace selectors.
-* Adds support for selectors joined by escaped spaces - such as `.\31\ 0`.
-
-# 0.0.1
-
-* Initial release.
diff --git a/assets/node_modules/postcss-selector-parser/LICENSE-MIT b/assets/node_modules/postcss-selector-parser/LICENSE-MIT
deleted file mode 100644
index fd0e863..0000000
--- a/assets/node_modules/postcss-selector-parser/LICENSE-MIT
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) Ben Briggs <beneb.info@gmail.com> (http://beneb.info)
-
-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/assets/node_modules/postcss-selector-parser/README.md b/assets/node_modules/postcss-selector-parser/README.md
deleted file mode 100644
index 18a01c5..0000000
--- a/assets/node_modules/postcss-selector-parser/README.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# postcss-selector-parser [![Build Status](https://travis-ci.org/postcss/postcss-selector-parser.svg?branch=master)](https://travis-ci.org/postcss/postcss-selector-parser)
-
-> Selector parser with built in methods for working with selector strings.
-
-## Install
-
-With [npm](https://npmjs.com/package/postcss-selector-parser) do:
-
-```
-npm install postcss-selector-parser
-```
-
-## Quick Start
-
-```js
-const parser = require('postcss-selector-parser');
-const transform = selectors => {
- selectors.walk(selector => {
- // do something with the selector
- console.log(String(selector))
- });
-};
-
-const transformed = parser(transform).processSync('h1, h2, h3');
-```
-
-To normalize selector whitespace:
-
-```js
-const parser = require('postcss-selector-parser');
-const normalized = parser().processSync('h1, h2, h3', {lossless: false});
-// -> h1,h2,h3
-```
-
-Async support is provided through `parser.process` and will resolve a Promise
-with the resulting selector string.
-
-## API
-
-Please see [API.md](API.md).
-
-## Credits
-
-* Huge thanks to Andrey Sitnik (@ai) for work on PostCSS which helped
- accelerate this module's development.
-
-## License
-
-MIT
diff --git a/assets/node_modules/postcss-selector-parser/dist/index.js b/assets/node_modules/postcss-selector-parser/dist/index.js
deleted file mode 100644
index 01f453b..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _processor = require('./processor');
-
-var _processor2 = _interopRequireDefault(_processor);
-
-var _selectors = require('./selectors');
-
-var selectors = _interopRequireWildcard(_selectors);
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var parser = function parser(processor) {
- return new _processor2.default(processor);
-};
-
-Object.assign(parser, selectors);
-
-delete parser.__esModule;
-
-exports.default = parser;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/parser.js b/assets/node_modules/postcss-selector-parser/dist/parser.js
deleted file mode 100644
index e448d9d..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/parser.js
+++ /dev/null
@@ -1,767 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _dotProp = require('dot-prop');
-
-var _dotProp2 = _interopRequireDefault(_dotProp);
-
-var _indexesOf = require('indexes-of');
-
-var _indexesOf2 = _interopRequireDefault(_indexesOf);
-
-var _uniq = require('uniq');
-
-var _uniq2 = _interopRequireDefault(_uniq);
-
-var _root = require('./selectors/root');
-
-var _root2 = _interopRequireDefault(_root);
-
-var _selector = require('./selectors/selector');
-
-var _selector2 = _interopRequireDefault(_selector);
-
-var _className = require('./selectors/className');
-
-var _className2 = _interopRequireDefault(_className);
-
-var _comment = require('./selectors/comment');
-
-var _comment2 = _interopRequireDefault(_comment);
-
-var _id = require('./selectors/id');
-
-var _id2 = _interopRequireDefault(_id);
-
-var _tag = require('./selectors/tag');
-
-var _tag2 = _interopRequireDefault(_tag);
-
-var _string = require('./selectors/string');
-
-var _string2 = _interopRequireDefault(_string);
-
-var _pseudo = require('./selectors/pseudo');
-
-var _pseudo2 = _interopRequireDefault(_pseudo);
-
-var _attribute = require('./selectors/attribute');
-
-var _attribute2 = _interopRequireDefault(_attribute);
-
-var _universal = require('./selectors/universal');
-
-var _universal2 = _interopRequireDefault(_universal);
-
-var _combinator = require('./selectors/combinator');
-
-var _combinator2 = _interopRequireDefault(_combinator);
-
-var _nesting = require('./selectors/nesting');
-
-var _nesting2 = _interopRequireDefault(_nesting);
-
-var _sortAscending = require('./sortAscending');
-
-var _sortAscending2 = _interopRequireDefault(_sortAscending);
-
-var _tokenize = require('./tokenize');
-
-var _tokenize2 = _interopRequireDefault(_tokenize);
-
-var _tokenTypes = require('./tokenTypes');
-
-var tokens = _interopRequireWildcard(_tokenTypes);
-
-var _types = require('./selectors/types');
-
-var types = _interopRequireWildcard(_types);
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function getSource(startLine, startColumn, endLine, endColumn) {
- return {
- start: {
- line: startLine,
- column: startColumn
- },
- end: {
- line: endLine,
- column: endColumn
- }
- };
-}
-
-var Parser = function () {
- function Parser(rule) {
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- _classCallCheck(this, Parser);
-
- this.rule = rule;
- this.options = Object.assign({ lossy: false, safe: false }, options);
- this.position = 0;
- this.root = new _root2.default();
- this.root.errorGenerator = this._errorGenerator();
-
- var selector = new _selector2.default();
- this.root.append(selector);
- this.current = selector;
-
- this.css = typeof this.rule === 'string' ? this.rule : this.rule.selector;
-
- if (this.options.lossy) {
- this.css = this.css.trim();
- }
- this.tokens = (0, _tokenize2.default)({
- css: this.css,
- error: this._errorGenerator(),
- safe: this.options.safe
- });
-
- this.loop();
- }
-
- Parser.prototype._errorGenerator = function _errorGenerator() {
- var _this = this;
-
- return function (message, errorOptions) {
- if (typeof _this.rule === 'string') {
- return new Error(message);
- }
- return _this.rule.error(message, errorOptions);
- };
- };
-
- Parser.prototype.attribute = function attribute() {
- var attr = [];
- var startingToken = this.currToken;
- this.position++;
- while (this.position < this.tokens.length && this.currToken[0] !== tokens.closeSquare) {
- attr.push(this.currToken);
- this.position++;
- }
- if (this.currToken[0] !== tokens.closeSquare) {
- return this.expected('closing square bracket', this.currToken[5]);
- }
-
- var len = attr.length;
- var node = {
- source: getSource(startingToken[1], startingToken[2], this.currToken[3], this.currToken[4]),
- sourceIndex: startingToken[5]
- };
-
- if (len === 1 && !~[tokens.word].indexOf(attr[0][0])) {
- return this.expected('attribute', attr[0][5]);
- }
-
- var pos = 0;
- var spaceBefore = '';
- var commentBefore = '';
- var lastAdded = null;
- var spaceAfterMeaningfulToken = false;
-
- while (pos < len) {
- var token = attr[pos];
- var content = this.content(token);
- var next = attr[pos + 1];
-
- switch (token[0]) {
- case tokens.space:
- if (len === 1 || pos === 0 && this.content(next) === '|') {
- return this.expected('attribute', token[5], content);
- }
- spaceAfterMeaningfulToken = true;
- if (this.options.lossy) {
- break;
- }
- if (lastAdded) {
- var spaceProp = 'spaces.' + lastAdded + '.after';
- _dotProp2.default.set(node, spaceProp, _dotProp2.default.get(node, spaceProp, '') + content);
- var commentProp = 'raws.spaces.' + lastAdded + '.after';
- var existingComment = _dotProp2.default.get(node, commentProp);
- if (existingComment) {
- _dotProp2.default.set(node, commentProp, existingComment + content);
- }
- } else {
- spaceBefore = spaceBefore + content;
- commentBefore = commentBefore + content;
- }
- break;
- case tokens.asterisk:
- if (next[0] === tokens.equals) {
- node.operator = content;
- lastAdded = 'operator';
- } else if ((!node.namespace || lastAdded === "namespace" && !spaceAfterMeaningfulToken) && next) {
- if (spaceBefore) {
- _dotProp2.default.set(node, 'spaces.attribute.before', spaceBefore);
- spaceBefore = '';
- }
- if (commentBefore) {
- _dotProp2.default.set(node, 'raws.spaces.attribute.before', spaceBefore);
- commentBefore = '';
- }
- node.namespace = (node.namespace || "") + content;
- var rawValue = _dotProp2.default.get(node, "raws.namespace");
- if (rawValue) {
- node.raws.namespace += content;
- }
- lastAdded = 'namespace';
- }
- spaceAfterMeaningfulToken = false;
- break;
- case tokens.dollar:
- case tokens.caret:
- if (next[0] === tokens.equals) {
- node.operator = content;
- lastAdded = 'operator';
- }
- spaceAfterMeaningfulToken = false;
- break;
- case tokens.combinator:
- if (content === '~' && next[0] === tokens.equals) {
- node.operator = content;
- lastAdded = 'operator';
- }
- if (content !== '|') {
- spaceAfterMeaningfulToken = false;
- break;
- }
- if (next[0] === tokens.equals) {
- node.operator = content;
- lastAdded = 'operator';
- } else if (!node.namespace && !node.attribute) {
- node.namespace = true;
- }
- spaceAfterMeaningfulToken = false;
- break;
- case tokens.word:
- if (next && this.content(next) === '|' && attr[pos + 2] && attr[pos + 2][0] !== tokens.equals && // this look-ahead probably fails with comment nodes involved.
- !node.operator && !node.namespace) {
- node.namespace = content;
- lastAdded = 'namespace';
- } else if (!node.attribute || lastAdded === "attribute" && !spaceAfterMeaningfulToken) {
- if (spaceBefore) {
- _dotProp2.default.set(node, 'spaces.attribute.before', spaceBefore);
- spaceBefore = '';
- }
- if (commentBefore) {
- _dotProp2.default.set(node, 'raws.spaces.attribute.before', commentBefore);
- commentBefore = '';
- }
- node.attribute = (node.attribute || "") + content;
- var _rawValue = _dotProp2.default.get(node, "raws.attribute");
- if (_rawValue) {
- node.raws.attribute += content;
- }
- lastAdded = 'attribute';
- } else if (!node.value || lastAdded === "value" && !spaceAfterMeaningfulToken) {
- node.value = (node.value || "") + content;
- var _rawValue2 = _dotProp2.default.get(node, "raws.value");
- if (_rawValue2) {
- node.raws.value += content;
- }
- lastAdded = 'value';
- _dotProp2.default.set(node, 'raws.unquoted', _dotProp2.default.get(node, 'raws.unquoted', '') + content);
- } else if (content === 'i') {
- if (node.value && (node.quoted || spaceAfterMeaningfulToken)) {
- node.insensitive = true;
- lastAdded = 'insensitive';
- if (spaceBefore) {
- _dotProp2.default.set(node, 'spaces.insensitive.before', spaceBefore);
- spaceBefore = '';
- }
- if (commentBefore) {
- _dotProp2.default.set(node, 'raws.spaces.insensitive.before', commentBefore);
- commentBefore = '';
- }
- } else if (node.value) {
- lastAdded = 'value';
- node.value += 'i';
- if (node.raws.value) {
- node.raws.value += 'i';
- }
- }
- }
- spaceAfterMeaningfulToken = false;
- break;
- case tokens.str:
- if (!node.attribute || !node.operator) {
- return this.error('Expected an attribute followed by an operator preceding the string.', {
- index: token[5]
- });
- }
- node.value = content;
- node.quoted = true;
- lastAdded = 'value';
- _dotProp2.default.set(node, 'raws.unquoted', content.slice(1, -1));
- spaceAfterMeaningfulToken = false;
- break;
- case tokens.equals:
- if (!node.attribute) {
- return this.expected('attribute', token[5], content);
- }
- if (node.value) {
- return this.error('Unexpected "=" found; an operator was already defined.', { index: token[5] });
- }
- node.operator = node.operator ? node.operator + content : content;
- lastAdded = 'operator';
- spaceAfterMeaningfulToken = false;
- break;
- case tokens.comment:
- if (lastAdded) {
- if (spaceAfterMeaningfulToken || next && next[0] === tokens.space) {
- var lastComment = _dotProp2.default.get(node, 'raws.spaces.' + lastAdded + '.after', _dotProp2.default.get(node, 'spaces.' + lastAdded + '.after', ''));
- _dotProp2.default.set(node, 'raws.spaces.' + lastAdded + '.after', lastComment + content);
- } else {
- var lastValue = _dotProp2.default.get(node, 'raws.' + lastAdded, _dotProp2.default.get(node, lastAdded, ''));
- _dotProp2.default.set(node, 'raws.' + lastAdded, lastValue + content);
- }
- } else {
- commentBefore = commentBefore + content;
- }
- break;
- default:
- return this.error('Unexpected "' + content + '" found.', { index: token[5] });
- }
- pos++;
- }
-
- this.newNode(new _attribute2.default(node));
- this.position++;
- };
-
- Parser.prototype.combinator = function combinator() {
- var current = this.currToken;
- if (this.content() === '|') {
- return this.namespace();
- }
- var node = new _combinator2.default({
- value: '',
- source: getSource(current[1], current[2], current[3], current[4]),
- sourceIndex: current[5]
- });
- while (this.position < this.tokens.length && this.currToken && (this.currToken[0] === tokens.space || this.currToken[0] === tokens.combinator)) {
- var content = this.content();
- if (this.nextToken && this.nextToken[0] === tokens.combinator) {
- node.spaces.before = this.parseSpace(content);
- node.source = getSource(this.nextToken[1], this.nextToken[2], this.nextToken[3], this.nextToken[4]);
- node.sourceIndex = this.nextToken[5];
- } else if (this.prevToken && this.prevToken[0] === tokens.combinator) {
- node.spaces.after = this.parseSpace(content);
- } else if (this.currToken[0] === tokens.combinator) {
- node.value = content;
- } else if (this.currToken[0] === tokens.space) {
- node.value = this.parseSpace(content, ' ');
- }
- this.position++;
- }
- return this.newNode(node);
- };
-
- Parser.prototype.comma = function comma() {
- if (this.position === this.tokens.length - 1) {
- this.root.trailingComma = true;
- this.position++;
- return;
- }
- var selector = new _selector2.default();
- this.current.parent.append(selector);
- this.current = selector;
- this.position++;
- };
-
- Parser.prototype.comment = function comment() {
- var current = this.currToken;
- this.newNode(new _comment2.default({
- value: this.content(),
- source: getSource(current[1], current[2], current[3], current[4]),
- sourceIndex: current[5]
- }));
- this.position++;
- };
-
- Parser.prototype.error = function error(message, opts) {
- throw this.root.error(message, opts);
- };
-
- Parser.prototype.missingBackslash = function missingBackslash() {
- return this.error('Expected a backslash preceding the semicolon.', {
- index: this.currToken[5]
- });
- };
-
- Parser.prototype.missingParenthesis = function missingParenthesis() {
- return this.expected('opening parenthesis', this.currToken[5]);
- };
-
- Parser.prototype.missingSquareBracket = function missingSquareBracket() {
- return this.expected('opening square bracket', this.currToken[5]);
- };
-
- Parser.prototype.namespace = function namespace() {
- var before = this.prevToken && this.content(this.prevToken) || true;
- if (this.nextToken[0] === tokens.word) {
- this.position++;
- return this.word(before);
- } else if (this.nextToken[0] === tokens.asterisk) {
- this.position++;
- return this.universal(before);
- }
- };
-
- Parser.prototype.nesting = function nesting() {
- var current = this.currToken;
- this.newNode(new _nesting2.default({
- value: this.content(),
- source: getSource(current[1], current[2], current[3], current[4]),
- sourceIndex: current[5]
- }));
- this.position++;
- };
-
- Parser.prototype.parentheses = function parentheses() {
- var last = this.current.last;
- var balanced = 1;
- this.position++;
- if (last && last.type === types.PSEUDO) {
- var selector = new _selector2.default();
- var cache = this.current;
- last.append(selector);
- this.current = selector;
- while (this.position < this.tokens.length && balanced) {
- if (this.currToken[0] === tokens.openParenthesis) {
- balanced++;
- }
- if (this.currToken[0] === tokens.closeParenthesis) {
- balanced--;
- }
- if (balanced) {
- this.parse();
- } else {
- selector.parent.source.end.line = this.currToken[3];
- selector.parent.source.end.column = this.currToken[4];
- this.position++;
- }
- }
- this.current = cache;
- } else {
- last.value += '(';
- while (this.position < this.tokens.length && balanced) {
- if (this.currToken[0] === tokens.openParenthesis) {
- balanced++;
- }
- if (this.currToken[0] === tokens.closeParenthesis) {
- balanced--;
- }
- last.value += this.parseParenthesisToken(this.currToken);
- this.position++;
- }
- }
- if (balanced) {
- return this.expected('closing parenthesis', this.currToken[5]);
- }
- };
-
- Parser.prototype.pseudo = function pseudo() {
- var _this2 = this;
-
- var pseudoStr = '';
- var startingToken = this.currToken;
- while (this.currToken && this.currToken[0] === tokens.colon) {
- pseudoStr += this.content();
- this.position++;
- }
- if (!this.currToken) {
- return this.expected(['pseudo-class', 'pseudo-element'], this.position - 1);
- }
- if (this.currToken[0] === tokens.word) {
- this.splitWord(false, function (first, length) {
- pseudoStr += first;
- _this2.newNode(new _pseudo2.default({
- value: pseudoStr,
- source: getSource(startingToken[1], startingToken[2], _this2.currToken[3], _this2.currToken[4]),
- sourceIndex: startingToken[5]
- }));
- if (length > 1 && _this2.nextToken && _this2.nextToken[0] === tokens.openParenthesis) {
- _this2.error('Misplaced parenthesis.', {
- index: _this2.nextToken[5]
- });
- }
- });
- } else {
- return this.expected(['pseudo-class', 'pseudo-element'], this.currToken[5]);
- }
- };
-
- Parser.prototype.space = function space() {
- var content = this.content();
- // Handle space before and after the selector
- if (this.position === 0 || this.prevToken[0] === tokens.comma || this.prevToken[0] === tokens.openParenthesis) {
- this.spaces = this.parseSpace(content);
- this.position++;
- } else if (this.position === this.tokens.length - 1 || this.nextToken[0] === tokens.comma || this.nextToken[0] === tokens.closeParenthesis) {
- this.current.last.spaces.after = this.parseSpace(content);
- this.position++;
- } else {
- this.combinator();
- }
- };
-
- Parser.prototype.string = function string() {
- var current = this.currToken;
- this.newNode(new _string2.default({
- value: this.content(),
- source: getSource(current[1], current[2], current[3], current[4]),
- sourceIndex: current[5]
- }));
- this.position++;
- };
-
- Parser.prototype.universal = function universal(namespace) {
- var nextToken = this.nextToken;
- if (nextToken && this.content(nextToken) === '|') {
- this.position++;
- return this.namespace();
- }
- var current = this.currToken;
- this.newNode(new _universal2.default({
- value: this.content(),
- source: getSource(current[1], current[2], current[3], current[4]),
- sourceIndex: current[5]
- }), namespace);
- this.position++;
- };
-
- Parser.prototype.splitWord = function splitWord(namespace, firstCallback) {
- var _this3 = this;
-
- var nextToken = this.nextToken;
- var word = this.content();
- while (nextToken && ~[tokens.dollar, tokens.caret, tokens.equals, tokens.word].indexOf(nextToken[0])) {
- this.position++;
- var current = this.content();
- word += current;
- if (current.lastIndexOf('\\') === current.length - 1) {
- var next = this.nextToken;
- if (next && next[0] === tokens.space) {
- word += this.parseSpace(this.content(next), ' ');
- this.position++;
- }
- }
- nextToken = this.nextToken;
- }
- var hasClass = (0, _indexesOf2.default)(word, '.');
- var hasId = (0, _indexesOf2.default)(word, '#');
- // Eliminate Sass interpolations from the list of id indexes
- var interpolations = (0, _indexesOf2.default)(word, '#{');
- if (interpolations.length) {
- hasId = hasId.filter(function (hashIndex) {
- return !~interpolations.indexOf(hashIndex);
- });
- }
- var indices = (0, _sortAscending2.default)((0, _uniq2.default)([0].concat(hasClass, hasId)));
- indices.forEach(function (ind, i) {
- var index = indices[i + 1] || word.length;
- var value = word.slice(ind, index);
- if (i === 0 && firstCallback) {
- return firstCallback.call(_this3, value, indices.length);
- }
- var node = void 0;
- var current = _this3.currToken;
- var sourceIndex = current[5] + indices[i];
- var source = getSource(current[1], current[2] + ind, current[3], current[2] + (index - 1));
- if (~hasClass.indexOf(ind)) {
- node = new _className2.default({
- value: value.slice(1),
- source: source,
- sourceIndex: sourceIndex
- });
- } else if (~hasId.indexOf(ind)) {
- node = new _id2.default({
- value: value.slice(1),
- source: source,
- sourceIndex: sourceIndex
- });
- } else {
- node = new _tag2.default({
- value: value,
- source: source,
- sourceIndex: sourceIndex
- });
- }
- _this3.newNode(node, namespace);
- // Ensure that the namespace is used only once
- namespace = null;
- });
- this.position++;
- };
-
- Parser.prototype.word = function word(namespace) {
- var nextToken = this.nextToken;
- if (nextToken && this.content(nextToken) === '|') {
- this.position++;
- return this.namespace();
- }
- return this.splitWord(namespace);
- };
-
- Parser.prototype.loop = function loop() {
- while (this.position < this.tokens.length) {
- this.parse(true);
- }
- return this.root;
- };
-
- Parser.prototype.parse = function parse(throwOnParenthesis) {
- switch (this.currToken[0]) {
- case tokens.space:
- this.space();
- break;
- case tokens.comment:
- this.comment();
- break;
- case tokens.openParenthesis:
- this.parentheses();
- break;
- case tokens.closeParenthesis:
- if (throwOnParenthesis) {
- this.missingParenthesis();
- }
- break;
- case tokens.openSquare:
- this.attribute();
- break;
- case tokens.dollar:
- case tokens.caret:
- case tokens.equals:
- case tokens.word:
- this.word();
- break;
- case tokens.colon:
- this.pseudo();
- break;
- case tokens.comma:
- this.comma();
- break;
- case tokens.asterisk:
- this.universal();
- break;
- case tokens.ampersand:
- this.nesting();
- break;
- case tokens.combinator:
- this.combinator();
- break;
- case tokens.str:
- this.string();
- break;
- // These cases throw; no break needed.
- case tokens.closeSquare:
- this.missingSquareBracket();
- case tokens.semicolon:
- this.missingBackslash();
- }
- };
-
- /**
- * Helpers
- */
-
- Parser.prototype.expected = function expected(description, index, found) {
- if (Array.isArray(description)) {
- var last = description.pop();
- description = description.join(', ') + ' or ' + last;
- }
- var an = /^[aeiou]/.test(description[0]) ? 'an' : 'a';
- if (!found) {
- return this.error('Expected ' + an + ' ' + description + '.', { index: index });
- }
- return this.error('Expected ' + an + ' ' + description + ', found "' + found + '" instead.', { index: index });
- };
-
- Parser.prototype.parseNamespace = function parseNamespace(namespace) {
- if (this.options.lossy && typeof namespace === 'string') {
- var trimmed = namespace.trim();
- if (!trimmed.length) {
- return true;
- }
-
- return trimmed;
- }
-
- return namespace;
- };
-
- Parser.prototype.parseSpace = function parseSpace(space) {
- var replacement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
-
- return this.options.lossy ? replacement : space;
- };
-
- Parser.prototype.parseValue = function parseValue(value) {
- if (!this.options.lossy || !value || typeof value !== 'string') {
- return value;
- }
- return value.trim();
- };
-
- Parser.prototype.parseParenthesisToken = function parseParenthesisToken(token) {
- var content = this.content(token);
- if (!this.options.lossy) {
- return content;
- }
-
- if (token[0] === tokens.space) {
- return this.parseSpace(content, ' ');
- }
-
- return this.parseValue(content);
- };
-
- Parser.prototype.newNode = function newNode(node, namespace) {
- if (namespace) {
- node.namespace = this.parseNamespace(namespace);
- }
- if (this.spaces) {
- node.spaces.before = this.spaces;
- this.spaces = '';
- }
- return this.current.append(node);
- };
-
- Parser.prototype.content = function content() {
- var token = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.currToken;
-
- return this.css.slice(token[5], token[6]);
- };
-
- _createClass(Parser, [{
- key: 'currToken',
- get: function get() {
- return this.tokens[this.position];
- }
- }, {
- key: 'nextToken',
- get: function get() {
- return this.tokens[this.position + 1];
- }
- }, {
- key: 'prevToken',
- get: function get() {
- return this.tokens[this.position - 1];
- }
- }]);
-
- return Parser;
-}();
-
-exports.default = Parser;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/processor.js b/assets/node_modules/postcss-selector-parser/dist/processor.js
deleted file mode 100644
index 665824b..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/processor.js
+++ /dev/null
@@ -1,185 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-
-var _parser = require("./parser");
-
-var _parser2 = _interopRequireDefault(_parser);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var Processor = function () {
- function Processor(func, options) {
- _classCallCheck(this, Processor);
-
- this.func = func || function noop() {};
- this.funcRes = null;
- this.options = options;
- }
-
- Processor.prototype._shouldUpdateSelector = function _shouldUpdateSelector(rule) {
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- var merged = Object.assign({}, this.options, options);
- if (merged.updateSelector === false) {
- return false;
- } else {
- return typeof rule !== "string";
- }
- };
-
- Processor.prototype._isLossy = function _isLossy() {
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-
- var merged = Object.assign({}, this.options, options);
- if (merged.lossless === false) {
- return true;
- } else {
- return false;
- }
- };
-
- Processor.prototype._root = function _root(rule) {
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- var parser = new _parser2.default(rule, this._parseOptions(options));
- return parser.root;
- };
-
- Processor.prototype._parseOptions = function _parseOptions(options) {
- return {
- lossy: this._isLossy(options)
- };
- };
-
- Processor.prototype._run = function _run(rule) {
- var _this = this;
-
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- return new Promise(function (resolve, reject) {
- try {
- var root = _this._root(rule, options);
- Promise.resolve(_this.func(root)).then(function (transform) {
- var string = undefined;
- if (_this._shouldUpdateSelector(rule, options)) {
- string = root.toString();
- rule.selector = string;
- }
- return { transform: transform, root: root, string: string };
- }).then(resolve, reject);
- } catch (e) {
- reject(e);
- return;
- }
- });
- };
-
- Processor.prototype._runSync = function _runSync(rule) {
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- var root = this._root(rule, options);
- var transform = this.func(root);
- if (transform && typeof transform.then === "function") {
- throw new Error("Selector processor returned a promise to a synchronous call.");
- }
- var string = undefined;
- if (options.updateSelector && typeof rule !== "string") {
- string = root.toString();
- rule.selector = string;
- }
- return { transform: transform, root: root, string: string };
- };
-
- /**
- * Process rule into a selector AST.
- *
- * @param rule {postcss.Rule | string} The css selector to be processed
- * @param options The options for processing
- * @returns {Promise<parser.Root>} The AST of the selector after processing it.
- */
-
-
- Processor.prototype.ast = function ast(rule, options) {
- return this._run(rule, options).then(function (result) {
- return result.root;
- });
- };
-
- /**
- * Process rule into a selector AST synchronously.
- *
- * @param rule {postcss.Rule | string} The css selector to be processed
- * @param options The options for processing
- * @returns {parser.Root} The AST of the selector after processing it.
- */
-
-
- Processor.prototype.astSync = function astSync(rule, options) {
- return this._runSync(rule, options).root;
- };
-
- /**
- * Process a selector into a transformed value asynchronously
- *
- * @param rule {postcss.Rule | string} The css selector to be processed
- * @param options The options for processing
- * @returns {Promise<any>} The value returned by the processor.
- */
-
-
- Processor.prototype.transform = function transform(rule, options) {
- return this._run(rule, options).then(function (result) {
- return result.transform;
- });
- };
-
- /**
- * Process a selector into a transformed value synchronously.
- *
- * @param rule {postcss.Rule | string} The css selector to be processed
- * @param options The options for processing
- * @returns {any} The value returned by the processor.
- */
-
-
- Processor.prototype.transformSync = function transformSync(rule, options) {
- return this._runSync(rule, options).transform;
- };
-
- /**
- * Process a selector into a new selector string asynchronously.
- *
- * @param rule {postcss.Rule | string} The css selector to be processed
- * @param options The options for processing
- * @returns {string} the selector after processing.
- */
-
-
- Processor.prototype.process = function process(rule, options) {
- return this._run(rule, options).then(function (result) {
- return result.string || result.root.toString();
- });
- };
-
- /**
- * Process a selector into a new selector string synchronously.
- *
- * @param rule {postcss.Rule | string} The css selector to be processed
- * @param options The options for processing
- * @returns {string} the selector after processing.
- */
-
-
- Processor.prototype.processSync = function processSync(rule, options) {
- var result = this._runSync(rule, options);
- return result.string || result.root.toString();
- };
-
- return Processor;
-}();
-
-exports.default = Processor;
-module.exports = exports["default"]; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/attribute.js b/assets/node_modules/postcss-selector-parser/dist/selectors/attribute.js
deleted file mode 100644
index 3ddc219..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/attribute.js
+++ /dev/null
@@ -1,196 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _namespace = require('./namespace');
-
-var _namespace2 = _interopRequireDefault(_namespace);
-
-var _types = require('./types');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var Attribute = function (_Namespace) {
- _inherits(Attribute, _Namespace);
-
- function Attribute() {
- var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-
- _classCallCheck(this, Attribute);
-
- var _this = _possibleConstructorReturn(this, _Namespace.call(this, opts));
-
- _this.type = _types.ATTRIBUTE;
- _this.raws = _this.raws || {};
- _this._constructed = true;
- return _this;
- }
-
- Attribute.prototype._spacesFor = function _spacesFor(name) {
- var attrSpaces = { before: '', after: '' };
- var spaces = this.spaces[name] || {};
- var rawSpaces = this.raws.spaces && this.raws.spaces[name] || {};
- return Object.assign(attrSpaces, spaces, rawSpaces);
- };
-
- Attribute.prototype._valueFor = function _valueFor(name) {
- return this.raws[name] || this[name];
- };
-
- Attribute.prototype._stringFor = function _stringFor(name) {
- var spaceName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : name;
- var concat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultAttrConcat;
-
- var attrSpaces = this._spacesFor(spaceName);
- return concat(this._valueFor(name), attrSpaces);
- };
-
- /**
- * returns the offset of the attribute part specified relative to the
- * start of the node of the output string.
- *
- * * "ns" - alias for "namespace"
- * * "namespace" - the namespace if it exists.
- * * "attribute" - the attribute name
- * * "attributeNS" - the start of the attribute or its namespace
- * * "operator" - the match operator of the attribute
- * * "value" - The value (string or identifier)
- * * "insensitive" - the case insensitivity flag;
- * @param part One of the possible values inside an attribute.
- * @returns -1 if the name is invalid or the value doesn't exist in this attribute.
- */
-
-
- Attribute.prototype.offsetOf = function offsetOf(name) {
- var count = 1;
- var attributeSpaces = this._spacesFor("attribute");
- count += attributeSpaces.before.length;
- if (name === "namespace" || name === "ns") {
- return this.namespace ? count : -1;
- }
- if (name === "attributeNS") {
- return count;
- }
-
- count += this.namespaceString.length;
- if (this.namespace) {
- count += 1;
- }
- if (name === "attribute") {
- return count;
- }
-
- count += this._valueFor("attribute").length;
- count += attributeSpaces.after.length;
- var operatorSpaces = this._spacesFor("operator");
- count += operatorSpaces.before.length;
- var operator = this._valueFor("operator");
- if (name === "operator") {
- return operator ? count : -1;
- }
-
- count += operator.length;
- count += operatorSpaces.after.length;
- var valueSpaces = this._spacesFor("value");
- count += valueSpaces.before.length;
- var value = this._valueFor("value");
- if (name === "value") {
- return value ? count : -1;
- }
-
- count += value.length;
- count += valueSpaces.after.length;
- var insensitiveSpaces = this._spacesFor("insensitive");
- count += insensitiveSpaces.before.length;
- if (name === "insensitive") {
- return this.insensitive ? count : -1;
- }
- return -1;
- };
-
- Attribute.prototype.toString = function toString() {
- var _this2 = this;
-
- var selector = [this.spaces.before, '['];
-
- selector.push(this._stringFor('qualifiedAttribute', 'attribute'));
-
- if (this.operator && this.value) {
- selector.push(this._stringFor('operator'));
- selector.push(this._stringFor('value'));
- selector.push(this._stringFor('insensitiveFlag', 'insensitive', function (attrValue, attrSpaces) {
- if (attrValue.length > 0 && !_this2.quoted && attrSpaces.before.length === 0 && !(_this2.spaces.value && _this2.spaces.value.after)) {
- attrSpaces.before = " ";
- }
- return defaultAttrConcat(attrValue, attrSpaces);
- }));
- }
-
- selector.push(']');
- selector.push(this.spaces.after);
- return selector.join('');
- };
-
- _createClass(Attribute, [{
- key: 'qualifiedAttribute',
- get: function get() {
- return this.qualifiedName(this.raws.attribute || this.attribute);
- }
- }, {
- key: 'insensitiveFlag',
- get: function get() {
- return this.insensitive ? 'i' : '';
- }
- }, {
- key: 'value',
- get: function get() {
- return this._value;
- },
- set: function set(v) {
- this._value = v;
- if (this._constructed) {
- delete this.raws.value;
- }
- }
- }, {
- key: 'namespace',
- get: function get() {
- return this._namespace;
- },
- set: function set(v) {
- this._namespace = v;
- if (this._constructed) {
- delete this.raws.namespace;
- }
- }
- }, {
- key: 'attribute',
- get: function get() {
- return this._attribute;
- },
- set: function set(v) {
- this._attribute = v;
- if (this._constructed) {
- delete this.raws.attibute;
- }
- }
- }]);
-
- return Attribute;
-}(_namespace2.default);
-
-exports.default = Attribute;
-
-
-function defaultAttrConcat(attrValue, attrSpaces) {
- return '' + attrSpaces.before + attrValue + attrSpaces.after;
-}
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/className.js b/assets/node_modules/postcss-selector-parser/dist/selectors/className.js
deleted file mode 100644
index d7bff16..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/className.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _namespace = require('./namespace');
-
-var _namespace2 = _interopRequireDefault(_namespace);
-
-var _types = require('./types');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var ClassName = function (_Namespace) {
- _inherits(ClassName, _Namespace);
-
- function ClassName(opts) {
- _classCallCheck(this, ClassName);
-
- var _this = _possibleConstructorReturn(this, _Namespace.call(this, opts));
-
- _this.type = _types.CLASS;
- return _this;
- }
-
- ClassName.prototype.toString = function toString() {
- return [this.spaces.before, this.ns, String('.' + this.value), this.spaces.after].join('');
- };
-
- return ClassName;
-}(_namespace2.default);
-
-exports.default = ClassName;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/combinator.js b/assets/node_modules/postcss-selector-parser/dist/selectors/combinator.js
deleted file mode 100644
index 673dc75..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/combinator.js
+++ /dev/null
@@ -1,35 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _node = require('./node');
-
-var _node2 = _interopRequireDefault(_node);
-
-var _types = require('./types');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var Combinator = function (_Node) {
- _inherits(Combinator, _Node);
-
- function Combinator(opts) {
- _classCallCheck(this, Combinator);
-
- var _this = _possibleConstructorReturn(this, _Node.call(this, opts));
-
- _this.type = _types.COMBINATOR;
- return _this;
- }
-
- return Combinator;
-}(_node2.default);
-
-exports.default = Combinator;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/comment.js b/assets/node_modules/postcss-selector-parser/dist/selectors/comment.js
deleted file mode 100644
index 6d96556..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/comment.js
+++ /dev/null
@@ -1,35 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _node = require('./node');
-
-var _node2 = _interopRequireDefault(_node);
-
-var _types = require('./types');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var Comment = function (_Node) {
- _inherits(Comment, _Node);
-
- function Comment(opts) {
- _classCallCheck(this, Comment);
-
- var _this = _possibleConstructorReturn(this, _Node.call(this, opts));
-
- _this.type = _types.COMMENT;
- return _this;
- }
-
- return Comment;
-}(_node2.default);
-
-exports.default = Comment;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/constructors.js b/assets/node_modules/postcss-selector-parser/dist/selectors/constructors.js
deleted file mode 100644
index cf6ad82..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/constructors.js
+++ /dev/null
@@ -1,91 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-exports.universal = exports.tag = exports.string = exports.selector = exports.root = exports.pseudo = exports.nesting = exports.id = exports.comment = exports.combinator = exports.className = exports.attribute = undefined;
-
-var _attribute = require('./attribute');
-
-var _attribute2 = _interopRequireDefault(_attribute);
-
-var _className = require('./className');
-
-var _className2 = _interopRequireDefault(_className);
-
-var _combinator = require('./combinator');
-
-var _combinator2 = _interopRequireDefault(_combinator);
-
-var _comment = require('./comment');
-
-var _comment2 = _interopRequireDefault(_comment);
-
-var _id = require('./id');
-
-var _id2 = _interopRequireDefault(_id);
-
-var _nesting = require('./nesting');
-
-var _nesting2 = _interopRequireDefault(_nesting);
-
-var _pseudo = require('./pseudo');
-
-var _pseudo2 = _interopRequireDefault(_pseudo);
-
-var _root = require('./root');
-
-var _root2 = _interopRequireDefault(_root);
-
-var _selector = require('./selector');
-
-var _selector2 = _interopRequireDefault(_selector);
-
-var _string = require('./string');
-
-var _string2 = _interopRequireDefault(_string);
-
-var _tag = require('./tag');
-
-var _tag2 = _interopRequireDefault(_tag);
-
-var _universal = require('./universal');
-
-var _universal2 = _interopRequireDefault(_universal);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var attribute = exports.attribute = function attribute(opts) {
- return new _attribute2.default(opts);
-};
-var className = exports.className = function className(opts) {
- return new _className2.default(opts);
-};
-var combinator = exports.combinator = function combinator(opts) {
- return new _combinator2.default(opts);
-};
-var comment = exports.comment = function comment(opts) {
- return new _comment2.default(opts);
-};
-var id = exports.id = function id(opts) {
- return new _id2.default(opts);
-};
-var nesting = exports.nesting = function nesting(opts) {
- return new _nesting2.default(opts);
-};
-var pseudo = exports.pseudo = function pseudo(opts) {
- return new _pseudo2.default(opts);
-};
-var root = exports.root = function root(opts) {
- return new _root2.default(opts);
-};
-var selector = exports.selector = function selector(opts) {
- return new _selector2.default(opts);
-};
-var string = exports.string = function string(opts) {
- return new _string2.default(opts);
-};
-var tag = exports.tag = function tag(opts) {
- return new _tag2.default(opts);
-};
-var universal = exports.universal = function universal(opts) {
- return new _universal2.default(opts);
-}; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/container.js b/assets/node_modules/postcss-selector-parser/dist/selectors/container.js
deleted file mode 100644
index a369089..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/container.js
+++ /dev/null
@@ -1,344 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _node = require('./node');
-
-var _node2 = _interopRequireDefault(_node);
-
-var _types = require('./types');
-
-var types = _interopRequireWildcard(_types);
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var Container = function (_Node) {
- _inherits(Container, _Node);
-
- function Container(opts) {
- _classCallCheck(this, Container);
-
- var _this = _possibleConstructorReturn(this, _Node.call(this, opts));
-
- if (!_this.nodes) {
- _this.nodes = [];
- }
- return _this;
- }
-
- Container.prototype.append = function append(selector) {
- selector.parent = this;
- this.nodes.push(selector);
- return this;
- };
-
- Container.prototype.prepend = function prepend(selector) {
- selector.parent = this;
- this.nodes.unshift(selector);
- return this;
- };
-
- Container.prototype.at = function at(index) {
- return this.nodes[index];
- };
-
- Container.prototype.index = function index(child) {
- if (typeof child === 'number') {
- return child;
- }
- return this.nodes.indexOf(child);
- };
-
- Container.prototype.removeChild = function removeChild(child) {
- child = this.index(child);
- this.at(child).parent = undefined;
- this.nodes.splice(child, 1);
-
- var index = void 0;
- for (var id in this.indexes) {
- index = this.indexes[id];
- if (index >= child) {
- this.indexes[id] = index - 1;
- }
- }
-
- return this;
- };
-
- Container.prototype.removeAll = function removeAll() {
- for (var _iterator = this.nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var node = _ref;
-
- node.parent = undefined;
- }
- this.nodes = [];
- return this;
- };
-
- Container.prototype.empty = function empty() {
- return this.removeAll();
- };
-
- Container.prototype.insertAfter = function insertAfter(oldNode, newNode) {
- newNode.parent = this;
- var oldIndex = this.index(oldNode);
- this.nodes.splice(oldIndex + 1, 0, newNode);
-
- newNode.parent = this;
-
- var index = void 0;
- for (var id in this.indexes) {
- index = this.indexes[id];
- if (oldIndex <= index) {
- this.indexes[id] = index + 1;
- }
- }
-
- return this;
- };
-
- Container.prototype.insertBefore = function insertBefore(oldNode, newNode) {
- newNode.parent = this;
- var oldIndex = this.index(oldNode);
- this.nodes.splice(oldIndex, 0, newNode);
-
- newNode.parent = this;
-
- var index = void 0;
- for (var id in this.indexes) {
- index = this.indexes[id];
- if (index <= oldIndex) {
- this.indexes[id] = index + 1;
- }
- }
-
- return this;
- };
-
- Container.prototype.each = function each(callback) {
- if (!this.lastEach) {
- this.lastEach = 0;
- }
- if (!this.indexes) {
- this.indexes = {};
- }
-
- this.lastEach++;
- var id = this.lastEach;
- this.indexes[id] = 0;
-
- if (!this.length) {
- return undefined;
- }
-
- var index = void 0,
- result = void 0;
- while (this.indexes[id] < this.length) {
- index = this.indexes[id];
- result = callback(this.at(index), index);
- if (result === false) {
- break;
- }
-
- this.indexes[id] += 1;
- }
-
- delete this.indexes[id];
-
- if (result === false) {
- return false;
- }
- };
-
- Container.prototype.walk = function walk(callback) {
- return this.each(function (node, i) {
- var result = callback(node, i);
-
- if (result !== false && node.length) {
- result = node.walk(callback);
- }
-
- if (result === false) {
- return false;
- }
- });
- };
-
- Container.prototype.walkAttributes = function walkAttributes(callback) {
- var _this2 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.ATTRIBUTE) {
- return callback.call(_this2, selector);
- }
- });
- };
-
- Container.prototype.walkClasses = function walkClasses(callback) {
- var _this3 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.CLASS) {
- return callback.call(_this3, selector);
- }
- });
- };
-
- Container.prototype.walkCombinators = function walkCombinators(callback) {
- var _this4 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.COMBINATOR) {
- return callback.call(_this4, selector);
- }
- });
- };
-
- Container.prototype.walkComments = function walkComments(callback) {
- var _this5 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.COMMENT) {
- return callback.call(_this5, selector);
- }
- });
- };
-
- Container.prototype.walkIds = function walkIds(callback) {
- var _this6 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.ID) {
- return callback.call(_this6, selector);
- }
- });
- };
-
- Container.prototype.walkNesting = function walkNesting(callback) {
- var _this7 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.NESTING) {
- return callback.call(_this7, selector);
- }
- });
- };
-
- Container.prototype.walkPseudos = function walkPseudos(callback) {
- var _this8 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.PSEUDO) {
- return callback.call(_this8, selector);
- }
- });
- };
-
- Container.prototype.walkTags = function walkTags(callback) {
- var _this9 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.TAG) {
- return callback.call(_this9, selector);
- }
- });
- };
-
- Container.prototype.walkUniversals = function walkUniversals(callback) {
- var _this10 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.UNIVERSAL) {
- return callback.call(_this10, selector);
- }
- });
- };
-
- Container.prototype.split = function split(callback) {
- var _this11 = this;
-
- var current = [];
- return this.reduce(function (memo, node, index) {
- var split = callback.call(_this11, node);
- current.push(node);
- if (split) {
- memo.push(current);
- current = [];
- } else if (index === _this11.length - 1) {
- memo.push(current);
- }
- return memo;
- }, []);
- };
-
- Container.prototype.map = function map(callback) {
- return this.nodes.map(callback);
- };
-
- Container.prototype.reduce = function reduce(callback, memo) {
- return this.nodes.reduce(callback, memo);
- };
-
- Container.prototype.every = function every(callback) {
- return this.nodes.every(callback);
- };
-
- Container.prototype.some = function some(callback) {
- return this.nodes.some(callback);
- };
-
- Container.prototype.filter = function filter(callback) {
- return this.nodes.filter(callback);
- };
-
- Container.prototype.sort = function sort(callback) {
- return this.nodes.sort(callback);
- };
-
- Container.prototype.toString = function toString() {
- return this.map(String).join('');
- };
-
- _createClass(Container, [{
- key: 'first',
- get: function get() {
- return this.at(0);
- }
- }, {
- key: 'last',
- get: function get() {
- return this.at(this.length - 1);
- }
- }, {
- key: 'length',
- get: function get() {
- return this.nodes.length;
- }
- }]);
-
- return Container;
-}(_node2.default);
-
-exports.default = Container;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/guards.js b/assets/node_modules/postcss-selector-parser/dist/selectors/guards.js
deleted file mode 100644
index bc04aac..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/guards.js
+++ /dev/null
@@ -1,54 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.isUniversal = exports.isTag = exports.isString = exports.isSelector = exports.isRoot = exports.isPseudo = exports.isNesting = exports.isIdentifier = exports.isComment = exports.isCombinator = exports.isClassName = exports.isAttribute = undefined;
-
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-var _IS_TYPE;
-
-exports.isNode = isNode;
-exports.isPseudoElement = isPseudoElement;
-exports.isPseudoClass = isPseudoClass;
-exports.isContainer = isContainer;
-exports.isNamespace = isNamespace;
-
-var _types = require("./types");
-
-var IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types.ATTRIBUTE] = true, _IS_TYPE[_types.CLASS] = true, _IS_TYPE[_types.COMBINATOR] = true, _IS_TYPE[_types.COMMENT] = true, _IS_TYPE[_types.ID] = true, _IS_TYPE[_types.NESTING] = true, _IS_TYPE[_types.PSEUDO] = true, _IS_TYPE[_types.ROOT] = true, _IS_TYPE[_types.SELECTOR] = true, _IS_TYPE[_types.STRING] = true, _IS_TYPE[_types.TAG] = true, _IS_TYPE[_types.UNIVERSAL] = true, _IS_TYPE);
-
-function isNode(node) {
- return (typeof node === "undefined" ? "undefined" : _typeof(node)) === "object" && IS_TYPE[node.type];
-}
-
-function isNodeType(type, node) {
- return isNode(node) && node.type === type;
-}
-
-var isAttribute = exports.isAttribute = isNodeType.bind(null, _types.ATTRIBUTE);
-var isClassName = exports.isClassName = isNodeType.bind(null, _types.CLASS);
-var isCombinator = exports.isCombinator = isNodeType.bind(null, _types.COMBINATOR);
-var isComment = exports.isComment = isNodeType.bind(null, _types.COMMENT);
-var isIdentifier = exports.isIdentifier = isNodeType.bind(null, _types.ID);
-var isNesting = exports.isNesting = isNodeType.bind(null, _types.NESTING);
-var isPseudo = exports.isPseudo = isNodeType.bind(null, _types.PSEUDO);
-var isRoot = exports.isRoot = isNodeType.bind(null, _types.ROOT);
-var isSelector = exports.isSelector = isNodeType.bind(null, _types.SELECTOR);
-var isString = exports.isString = isNodeType.bind(null, _types.STRING);
-var isTag = exports.isTag = isNodeType.bind(null, _types.TAG);
-var isUniversal = exports.isUniversal = isNodeType.bind(null, _types.UNIVERSAL);
-
-function isPseudoElement(node) {
- return isPseudo(node) && node.value && (node.value.startsWith("::") || node.value === ":before" || node.value === ":after");
-}
-function isPseudoClass(node) {
- return isPseudo(node) && !isPseudoElement(node);
-}
-
-function isContainer(node) {
- return !!(isNode(node) && node.walk);
-}
-
-function isNamespace(node) {
- return isClassName(node) || isAttribute(node) || isTag(node);
-} \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/id.js b/assets/node_modules/postcss-selector-parser/dist/selectors/id.js
deleted file mode 100644
index 4538dcf..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/id.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _namespace = require('./namespace');
-
-var _namespace2 = _interopRequireDefault(_namespace);
-
-var _types = require('./types');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var ID = function (_Namespace) {
- _inherits(ID, _Namespace);
-
- function ID(opts) {
- _classCallCheck(this, ID);
-
- var _this = _possibleConstructorReturn(this, _Namespace.call(this, opts));
-
- _this.type = _types.ID;
- return _this;
- }
-
- ID.prototype.toString = function toString() {
- return [this.spaces.before, this.ns, String('#' + this.value), this.spaces.after].join('');
- };
-
- return ID;
-}(_namespace2.default);
-
-exports.default = ID;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/index.js b/assets/node_modules/postcss-selector-parser/dist/selectors/index.js
deleted file mode 100644
index f999e14..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/index.js
+++ /dev/null
@@ -1,39 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-
-var _types = require("./types");
-
-Object.keys(_types).forEach(function (key) {
- if (key === "default" || key === "__esModule") return;
- Object.defineProperty(exports, key, {
- enumerable: true,
- get: function get() {
- return _types[key];
- }
- });
-});
-
-var _constructors = require("./constructors");
-
-Object.keys(_constructors).forEach(function (key) {
- if (key === "default" || key === "__esModule") return;
- Object.defineProperty(exports, key, {
- enumerable: true,
- get: function get() {
- return _constructors[key];
- }
- });
-});
-
-var _guards = require("./guards");
-
-Object.keys(_guards).forEach(function (key) {
- if (key === "default" || key === "__esModule") return;
- Object.defineProperty(exports, key, {
- enumerable: true,
- get: function get() {
- return _guards[key];
- }
- });
-}); \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/namespace.js b/assets/node_modules/postcss-selector-parser/dist/selectors/namespace.js
deleted file mode 100644
index 6ff6711..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/namespace.js
+++ /dev/null
@@ -1,83 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _node = require('./node');
-
-var _node2 = _interopRequireDefault(_node);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var Namespace = function (_Node) {
- _inherits(Namespace, _Node);
-
- function Namespace() {
- _classCallCheck(this, Namespace);
-
- return _possibleConstructorReturn(this, _Node.apply(this, arguments));
- }
-
- Namespace.prototype.qualifiedName = function qualifiedName(value) {
- if (this.namespace) {
- return this.namespaceString + '|' + value;
- } else {
- return value;
- }
- };
-
- Namespace.prototype.toString = function toString() {
- return [this.spaces.before, this.qualifiedName(this.value), this.spaces.after].join('');
- };
-
- _createClass(Namespace, [{
- key: 'namespace',
- get: function get() {
- return this._namespace;
- },
- set: function set(namespace) {
- this._namespace = namespace;
- if (this.raws) {
- delete this.raws.namespace;
- }
- }
- }, {
- key: 'ns',
- get: function get() {
- return this._namespace;
- },
- set: function set(namespace) {
- this._namespace = namespace;
- if (this.raws) {
- delete this.raws.namespace;
- }
- }
- }, {
- key: 'namespaceString',
- get: function get() {
- if (this.namespace) {
- var ns = this.raws && this.raws.namespace || this.namespace;
- if (ns === true) {
- return '';
- } else {
- return ns;
- }
- } else {
- return '';
- }
- }
- }]);
-
- return Namespace;
-}(_node2.default);
-
-exports.default = Namespace;
-;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/nesting.js b/assets/node_modules/postcss-selector-parser/dist/selectors/nesting.js
deleted file mode 100644
index c3264b0..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/nesting.js
+++ /dev/null
@@ -1,36 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _node = require('./node');
-
-var _node2 = _interopRequireDefault(_node);
-
-var _types = require('./types');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var Nesting = function (_Node) {
- _inherits(Nesting, _Node);
-
- function Nesting(opts) {
- _classCallCheck(this, Nesting);
-
- var _this = _possibleConstructorReturn(this, _Node.call(this, opts));
-
- _this.type = _types.NESTING;
- _this.value = '&';
- return _this;
- }
-
- return Nesting;
-}(_node2.default);
-
-exports.default = Nesting;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/node.js b/assets/node_modules/postcss-selector-parser/dist/selectors/node.js
deleted file mode 100644
index 8415b00..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/node.js
+++ /dev/null
@@ -1,95 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var cloneNode = function cloneNode(obj, parent) {
- if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object') {
- return obj;
- }
-
- var cloned = new obj.constructor();
-
- for (var i in obj) {
- if (!obj.hasOwnProperty(i)) {
- continue;
- }
- var value = obj[i];
- var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);
-
- if (i === 'parent' && type === 'object') {
- if (parent) {
- cloned[i] = parent;
- }
- } else if (value instanceof Array) {
- cloned[i] = value.map(function (j) {
- return cloneNode(j, cloned);
- });
- } else {
- cloned[i] = cloneNode(value, cloned);
- }
- }
-
- return cloned;
-};
-
-var _class = function () {
- function _class() {
- var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-
- _classCallCheck(this, _class);
-
- Object.assign(this, opts);
- this.spaces = this.spaces || {};
- this.spaces.before = this.spaces.before || '';
- this.spaces.after = this.spaces.after || '';
- }
-
- _class.prototype.remove = function remove() {
- if (this.parent) {
- this.parent.removeChild(this);
- }
- this.parent = undefined;
- return this;
- };
-
- _class.prototype.replaceWith = function replaceWith() {
- if (this.parent) {
- for (var index in arguments) {
- this.parent.insertBefore(this, arguments[index]);
- }
- this.remove();
- }
- return this;
- };
-
- _class.prototype.next = function next() {
- return this.parent.at(this.parent.index(this) + 1);
- };
-
- _class.prototype.prev = function prev() {
- return this.parent.at(this.parent.index(this) - 1);
- };
-
- _class.prototype.clone = function clone() {
- var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-
- var cloned = cloneNode(this);
- for (var name in overrides) {
- cloned[name] = overrides[name];
- }
- return cloned;
- };
-
- _class.prototype.toString = function toString() {
- return [this.spaces.before, String(this.value), this.spaces.after].join('');
- };
-
- return _class;
-}();
-
-exports.default = _class;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/pseudo.js b/assets/node_modules/postcss-selector-parser/dist/selectors/pseudo.js
deleted file mode 100644
index 709cc22..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/pseudo.js
+++ /dev/null
@@ -1,40 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _container = require('./container');
-
-var _container2 = _interopRequireDefault(_container);
-
-var _types = require('./types');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var Pseudo = function (_Container) {
- _inherits(Pseudo, _Container);
-
- function Pseudo(opts) {
- _classCallCheck(this, Pseudo);
-
- var _this = _possibleConstructorReturn(this, _Container.call(this, opts));
-
- _this.type = _types.PSEUDO;
- return _this;
- }
-
- Pseudo.prototype.toString = function toString() {
- var params = this.length ? '(' + this.map(String).join(',') + ')' : '';
- return [this.spaces.before, String(this.value), params, this.spaces.after].join('');
- };
-
- return Pseudo;
-}(_container2.default);
-
-exports.default = Pseudo;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/root.js b/assets/node_modules/postcss-selector-parser/dist/selectors/root.js
deleted file mode 100644
index 6e4da9a..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/root.js
+++ /dev/null
@@ -1,60 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _container = require('./container');
-
-var _container2 = _interopRequireDefault(_container);
-
-var _types = require('./types');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var Root = function (_Container) {
- _inherits(Root, _Container);
-
- function Root(opts) {
- _classCallCheck(this, Root);
-
- var _this = _possibleConstructorReturn(this, _Container.call(this, opts));
-
- _this.type = _types.ROOT;
- return _this;
- }
-
- Root.prototype.toString = function toString() {
- var str = this.reduce(function (memo, selector) {
- var sel = String(selector);
- return sel ? memo + sel + ',' : '';
- }, '').slice(0, -1);
- return this.trailingComma ? str + ',' : str;
- };
-
- Root.prototype.error = function error(message, options) {
- if (this._error) {
- return this._error(message, options);
- } else {
- return new Error(message);
- }
- };
-
- _createClass(Root, [{
- key: 'errorGenerator',
- set: function set(handler) {
- this._error = handler;
- }
- }]);
-
- return Root;
-}(_container2.default);
-
-exports.default = Root;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/selector.js b/assets/node_modules/postcss-selector-parser/dist/selectors/selector.js
deleted file mode 100644
index e218766..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/selector.js
+++ /dev/null
@@ -1,35 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _container = require('./container');
-
-var _container2 = _interopRequireDefault(_container);
-
-var _types = require('./types');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var Selector = function (_Container) {
- _inherits(Selector, _Container);
-
- function Selector(opts) {
- _classCallCheck(this, Selector);
-
- var _this = _possibleConstructorReturn(this, _Container.call(this, opts));
-
- _this.type = _types.SELECTOR;
- return _this;
- }
-
- return Selector;
-}(_container2.default);
-
-exports.default = Selector;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/string.js b/assets/node_modules/postcss-selector-parser/dist/selectors/string.js
deleted file mode 100644
index d644e7d..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/string.js
+++ /dev/null
@@ -1,35 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _node = require('./node');
-
-var _node2 = _interopRequireDefault(_node);
-
-var _types = require('./types');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var String = function (_Node) {
- _inherits(String, _Node);
-
- function String(opts) {
- _classCallCheck(this, String);
-
- var _this = _possibleConstructorReturn(this, _Node.call(this, opts));
-
- _this.type = _types.STRING;
- return _this;
- }
-
- return String;
-}(_node2.default);
-
-exports.default = String;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/tag.js b/assets/node_modules/postcss-selector-parser/dist/selectors/tag.js
deleted file mode 100644
index a1f2848..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/tag.js
+++ /dev/null
@@ -1,35 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _namespace = require('./namespace');
-
-var _namespace2 = _interopRequireDefault(_namespace);
-
-var _types = require('./types');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var Tag = function (_Namespace) {
- _inherits(Tag, _Namespace);
-
- function Tag(opts) {
- _classCallCheck(this, Tag);
-
- var _this = _possibleConstructorReturn(this, _Namespace.call(this, opts));
-
- _this.type = _types.TAG;
- return _this;
- }
-
- return Tag;
-}(_namespace2.default);
-
-exports.default = Tag;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/types.js b/assets/node_modules/postcss-selector-parser/dist/selectors/types.js
deleted file mode 100644
index aa73ac9..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/types.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-var TAG = exports.TAG = 'tag';
-var STRING = exports.STRING = 'string';
-var SELECTOR = exports.SELECTOR = 'selector';
-var ROOT = exports.ROOT = 'root';
-var PSEUDO = exports.PSEUDO = 'pseudo';
-var NESTING = exports.NESTING = 'nesting';
-var ID = exports.ID = 'id';
-var COMMENT = exports.COMMENT = 'comment';
-var COMBINATOR = exports.COMBINATOR = 'combinator';
-var CLASS = exports.CLASS = 'class';
-var ATTRIBUTE = exports.ATTRIBUTE = 'attribute';
-var UNIVERSAL = exports.UNIVERSAL = 'universal'; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/selectors/universal.js b/assets/node_modules/postcss-selector-parser/dist/selectors/universal.js
deleted file mode 100644
index f4a35ff..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/selectors/universal.js
+++ /dev/null
@@ -1,36 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _namespace = require('./namespace');
-
-var _namespace2 = _interopRequireDefault(_namespace);
-
-var _types = require('./types');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var Universal = function (_Namespace) {
- _inherits(Universal, _Namespace);
-
- function Universal(opts) {
- _classCallCheck(this, Universal);
-
- var _this = _possibleConstructorReturn(this, _Namespace.call(this, opts));
-
- _this.type = _types.UNIVERSAL;
- _this.value = '*';
- return _this;
- }
-
- return Universal;
-}(_namespace2.default);
-
-exports.default = Universal;
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/sortAscending.js b/assets/node_modules/postcss-selector-parser/dist/sortAscending.js
deleted file mode 100644
index 17a2eb4..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/sortAscending.js
+++ /dev/null
@@ -1,10 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = sortAscending;
-function sortAscending(list) {
- return list.sort(function (a, b) {
- return a - b;
- });
-};
-module.exports = exports["default"]; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/tokenTypes.js b/assets/node_modules/postcss-selector-parser/dist/tokenTypes.js
deleted file mode 100644
index ef10c08..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/tokenTypes.js
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-var ampersand = exports.ampersand = '&'.charCodeAt(0);
-var asterisk = exports.asterisk = '*'.charCodeAt(0);
-var at = exports.at = '@'.charCodeAt(0);
-var comma = exports.comma = ','.charCodeAt(0);
-var colon = exports.colon = ':'.charCodeAt(0);
-var semicolon = exports.semicolon = ';'.charCodeAt(0);
-var openParenthesis = exports.openParenthesis = '('.charCodeAt(0);
-var closeParenthesis = exports.closeParenthesis = ')'.charCodeAt(0);
-var openSquare = exports.openSquare = '['.charCodeAt(0);
-var closeSquare = exports.closeSquare = ']'.charCodeAt(0);
-var dollar = exports.dollar = '$'.charCodeAt(0);
-var tilde = exports.tilde = '~'.charCodeAt(0);
-var caret = exports.caret = '^'.charCodeAt(0);
-var plus = exports.plus = '+'.charCodeAt(0);
-var equals = exports.equals = '='.charCodeAt(0);
-var pipe = exports.pipe = '|'.charCodeAt(0);
-var greaterThan = exports.greaterThan = '>'.charCodeAt(0);
-var space = exports.space = ' '.charCodeAt(0);
-var singleQuote = exports.singleQuote = '\''.charCodeAt(0);
-var doubleQuote = exports.doubleQuote = '"'.charCodeAt(0);
-var slash = exports.slash = '/'.charCodeAt(0);
-
-var backslash = exports.backslash = 92;
-var cr = exports.cr = 13;
-var feed = exports.feed = 12;
-var newline = exports.newline = 10;
-var tab = exports.tab = 9;
-
-// Expose aliases primarily for readability.
-var str = exports.str = singleQuote;
-
-// No good single character representation!
-var comment = exports.comment = -1;
-var word = exports.word = -2;
-var combinator = exports.combinator = -3; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/dist/tokenize.js b/assets/node_modules/postcss-selector-parser/dist/tokenize.js
deleted file mode 100644
index 00bec7f..0000000
--- a/assets/node_modules/postcss-selector-parser/dist/tokenize.js
+++ /dev/null
@@ -1,217 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-exports.default = tokenize;
-
-var _tokenTypes = require('./tokenTypes');
-
-var t = _interopRequireWildcard(_tokenTypes);
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
-
-var wordEnd = /[ \n\t\r\(\)\*:;!&'"\+\|~>,=$^\[\]\\]|\/(?=\*)/g;
-
-function tokenize(input) {
- var tokens = [];
- var css = input.css.valueOf();
- var _css = css,
- length = _css.length;
-
- var offset = -1;
- var line = 1;
- var start = 0;
- var end = 0;
-
- var code = void 0,
- content = void 0,
- endColumn = void 0,
- endLine = void 0,
- escaped = void 0,
- escapePos = void 0,
- last = void 0,
- lines = void 0,
- next = void 0,
- nextLine = void 0,
- nextOffset = void 0,
- quote = void 0,
- tokenType = void 0;
-
- function unclosed(what, fix) {
- if (input.safe) {
- // fyi: this is never set to true.
- css += fix;
- next = css.length - 1;
- } else {
- throw input.error('Unclosed ' + what, line, start - offset, start);
- }
- }
-
- while (start < length) {
- code = css.charCodeAt(start);
-
- if (code === t.newline) {
- offset = start;
- line += 1;
- }
-
- switch (code) {
- case t.newline:
- case t.space:
- case t.tab:
- case t.cr:
- case t.feed:
- next = start;
- do {
- next += 1;
- code = css.charCodeAt(next);
- if (code === t.newline) {
- offset = next;
- line += 1;
- }
- } while (code === t.space || code === t.newline || code === t.tab || code === t.cr || code === t.feed);
-
- tokenType = t.space;
- endLine = line;
- endColumn = start - offset;
- end = next;
- break;
-
- case t.plus:
- case t.greaterThan:
- case t.tilde:
- case t.pipe:
- next = start;
- do {
- next += 1;
- code = css.charCodeAt(next);
- } while (code === t.plus || code === t.greaterThan || code === t.tilde || code === t.pipe);
-
- tokenType = t.combinator;
- endLine = line;
- endColumn = start - offset;
- end = next;
- break;
-
- // Consume these characters as single tokens.
- case t.asterisk:
- case t.ampersand:
- case t.comma:
- case t.equals:
- case t.dollar:
- case t.caret:
- case t.openSquare:
- case t.closeSquare:
- case t.colon:
- case t.semicolon:
- case t.openParenthesis:
- case t.closeParenthesis:
- next = start;
- tokenType = code;
- endLine = line;
- endColumn = start - offset;
- end = next + 1;
- break;
-
- case t.singleQuote:
- case t.doubleQuote:
- quote = code === t.singleQuote ? "'" : '"';
- next = start;
- do {
- escaped = false;
- next = css.indexOf(quote, next + 1);
- if (next === -1) {
- unclosed('quote', quote);
- }
- escapePos = next;
- while (css.charCodeAt(escapePos - 1) === t.backslash) {
- escapePos -= 1;
- escaped = !escaped;
- }
- } while (escaped);
-
- tokenType = t.str;
- endLine = line;
- endColumn = start - offset;
- end = next + 1;
- break;
-
- case t.backslash:
- next = start;
- escaped = true;
- while (css.charCodeAt(next + 1) === t.backslash) {
- next += 1;
- escaped = !escaped;
- }
- code = css.charCodeAt(next + 1);
- if (escaped && code !== t.slash && code !== t.space && code !== t.newline && code !== t.tab && code !== t.cr && code !== t.feed) {
- next += 1;
- }
-
- tokenType = t.word;
- endLine = line;
- endColumn = next - offset;
- end = next + 1;
- break;
-
- default:
- if (code === t.slash && css.charCodeAt(start + 1) === t.asterisk) {
- next = css.indexOf('*/', start + 2) + 1;
- if (next === 0) {
- unclosed('comment', '*/');
- }
-
- content = css.slice(start, next + 1);
- lines = content.split('\n');
- last = lines.length - 1;
-
- if (last > 0) {
- nextLine = line + last;
- nextOffset = next - lines[last].length;
- } else {
- nextLine = line;
- nextOffset = offset;
- }
-
- tokenType = t.comment;
- line = nextLine;
- endLine = nextLine;
- endColumn = next - nextOffset;
- } else {
- wordEnd.lastIndex = start + 1;
- wordEnd.test(css);
- if (wordEnd.lastIndex === 0) {
- next = css.length - 1;
- } else {
- next = wordEnd.lastIndex - 2;
- }
-
- tokenType = t.word;
- endLine = line;
- endColumn = next - offset;
- }
-
- end = next + 1;
- break;
- }
-
- // Ensure that the token structure remains consistent
- tokens.push([tokenType, // [0] Token type
- line, // [1] Starting line
- start - offset, // [2] Starting column
- endLine, // [3] Ending line
- endColumn, // [4] Ending column
- start, // [5] Start position / Source index
- end]);
-
- // Reset offset for the next token
- if (nextOffset) {
- offset = nextOffset;
- nextOffset = null;
- }
-
- start = end;
- }
-
- return tokens;
-}
-module.exports = exports['default']; \ No newline at end of file
diff --git a/assets/node_modules/postcss-selector-parser/package.json b/assets/node_modules/postcss-selector-parser/package.json
deleted file mode 100644
index a742b8e..0000000
--- a/assets/node_modules/postcss-selector-parser/package.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "name": "postcss-selector-parser",
- "version": "3.1.1",
- "devDependencies": {
- "ava": "^0.20.0",
- "babel-cli": "^6.4.0",
- "babel-core": "^6.4.0",
- "babel-plugin-add-module-exports": "^0.2.0",
- "babel-plugin-precompile-charcodes": "^1.0.0",
- "babel-preset-es2015": "^6.3.13",
- "babel-preset-es2015-loose": "^7.0.0",
- "babel-preset-stage-0": "^6.3.13",
- "babel-register": "^6.9.0",
- "coveralls": "^2.11.6",
- "del-cli": "^0.2.0",
- "eslint": "^3.0.0",
- "eslint-config-cssnano": "^3.0.0",
- "eslint-plugin-babel": "^3.3.0",
- "eslint-plugin-import": "^1.10.2",
- "glob": "^7.0.3",
- "minimist": "^1.2.0",
- "nyc": "^10.0.0",
- "postcss": "^6.0.6"
- },
- "main": "dist/index.js",
- "types": "postcss-selector-parser.d.ts",
- "files": [
- "API.md",
- "CHANGELOG.md",
- "LICENSE-MIT",
- "dist",
- "postcss-selector-parser.d.ts"
- ],
- "scripts": {
- "pretest": "eslint src",
- "prepublish": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
- "report": "nyc report --reporter=html",
- "test": "nyc ava src/__tests__/*.js"
- },
- "dependencies": {
- "dot-prop": "^4.1.1",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
- },
- "license": "MIT",
- "engines": {
- "node": ">=4"
- },
- "homepage": "https://github.com/postcss/postcss-selector-parser",
- "contributors": [
- {
- "name": "Ben Briggs",
- "email": "beneb.info@gmail.com",
- "url": "http://beneb.info"
- },
- {
- "name": "Chris Eppstein",
- "email": "chris@eppsteins.net",
- "url": "http://twitter.com/chriseppstein"
- }
- ],
- "repository": "postcss/postcss-selector-parser",
- "ava": {
- "require": "babel-register",
- "concurrency": 5
- },
- "nyc": {
- "exclude": [
- "node_modules",
- "**/__tests__"
- ]
- },
- "eslintConfig": {
- "extends": "cssnano"
- }
-}
diff --git a/assets/node_modules/postcss-selector-parser/postcss-selector-parser.d.ts b/assets/node_modules/postcss-selector-parser/postcss-selector-parser.d.ts
deleted file mode 100644
index 43147e6..0000000
--- a/assets/node_modules/postcss-selector-parser/postcss-selector-parser.d.ts
+++ /dev/null
@@ -1,388 +0,0 @@
-// Type definitions for postcss-selector-parser 2.2.3
-// Definitions by: Chris Eppstein <chris@eppsteins.net>
-
-/*~ Note that ES6 modules cannot directly export callable functions.
- *~ This file should be imported using the CommonJS-style:
- *~ import x = require('someLibrary');
- *~
- *~ Refer to the documentation to understand common
- *~ workarounds for this limitation of ES6 modules.
- */
-
-/*~ This declaration specifies that the function
- *~ is the exported object from the file
- */
-export = parser;
-
-declare function parser(): parser.Processor<never>;
-declare function parser<Transform extends any>(processor: parser.AsyncProcessor<Transform>): parser.Processor<Transform, never>;
-declare function parser(processor: parser.AsyncProcessor): parser.Processor<never>;
-declare function parser<Transform extends any>(processor: parser.SyncProcessor<Transform>): parser.Processor<Transform, never>;
-declare function parser(processor: parser.SyncProcessor): parser.Processor<never>;
-declare function parser<Transform>(processor?: parser.SyncProcessor<Transform> | parser.AsyncProcessor<Transform>): parser.Processor<Transform>;
-
-/*~ If you want to expose types from your module as well, you can
- *~ place them in this block. Often you will want to describe the
- *~ shape of the return type of the function; that type should
- *~ be declared in here, as this example shows.
- */
-declare namespace parser {
- /* copied from postcss -- so we don't need to add a dependency */
- type ErrorOptions = {
- plugin?: string;
- word?: string;
- index?: number
- };
- /* the bits we use of postcss.Rule, copied from postcss -- so we don't need to add a dependency */
- type PostCSSRuleNode = {
- selector: string
- /**
- * @returns postcss.CssSyntaxError but it's a complex object, caller
- * should cast to it if they have a dependency on postcss.
- */
- error(message: string, options?: ErrorOptions): Error;
- };
- /** Accepts a string */
- type Selectors = string | PostCSSRuleNode
- type SyncProcessor<Transform = void> = (root: parser.Root) => Transform
- type AsyncProcessor<Transform = void> = (root: parser.Root) => Transform | PromiseLike<Transform>
-
- const TAG: "tag";
- const STRING: "string";
- const SELECTOR: "selector";
- const ROOT: "root";
- const PSEUDO: "pseudo";
- const NESTING: "nesting";
- const ID: "id";
- const COMMENT: "comment";
- const COMBINATOR: "combinator";
- const CLASS: "class";
- const ATTRIBUTE: "attribute";
- const UNIVERSAL: "universal";
-
- interface NodeTypes {
- tag: Tag,
- string: String,
- selector: Selector,
- root: Root,
- pseudo: Pseudo,
- nesting: Nesting,
- id: Identifier,
- comment: Comment,
- combinator: Combinator,
- class: ClassName,
- attribute: Attribute,
- universal: Universal
- }
-
- type Node = NodeTypes[keyof NodeTypes];
-
- function isNode(node: any): node is Node;
-
- interface Options {
- /**
- * Preserve whitespace when true. Default: false;
- */
- lossless: boolean;
- /**
- * When true and a postcss.Rule is passed, set the result of
- * processing back onto the rule when done. Default: false.
- */
- updateSelector: boolean;
- }
- class Processor<
- TransformType = never,
- SyncSelectorsType extends Selectors | never = Selectors
- > {
- res: Root;
- readonly result: String;
- ast(selectors: Selectors, options?: Partial<Options>): Promise<Root>;
- astSync(selectors: SyncSelectorsType, options?: Partial<Options>): Root;
- transform(selectors: Selectors, options?: Partial<Options>): Promise<TransformType>;
- transformSync(selectors: SyncSelectorsType, options?: Partial<Options>): TransformType;
- process(selectors: Selectors, options?: Partial<Options>): Promise<string>;
- processSync(selectors: SyncSelectorsType, options?: Partial<Options>): string;
- }
- interface ParserOptions {
- css: string;
- error: (message: string, options: ErrorOptions) => Error;
- options: Options;
- }
- class Parser {
- input: ParserOptions;
- lossy: boolean;
- position: number;
- root: Root;
- selectors: string;
- current: Selector;
- constructor(input: ParserOptions);
- /**
- * Raises an error, if the processor is invoked on
- * a postcss Rule node, a better error message is raised.
- */
- error(message: string, options?: ErrorOptions): void;
- }
- interface NodeSource {
- start?: {
- line: number,
- column: number
- },
- end?: {
- line: number,
- column: number
- }
- }
- interface SpaceAround {
- before: string;
- after: string;
- }
- interface Spaces extends SpaceAround {
- [spaceType: string]: string | Partial<SpaceAround> | undefined;
- }
- interface NodeOptions<Value = string> {
- value: Value;
- spaces?: Partial<Spaces>;
- source?: NodeSource;
- sourceIndex?: number;
- }
- interface Base<
- Value extends string | undefined = string,
- ParentType extends Container | undefined = Container | undefined
- > {
- type: keyof NodeTypes;
- parent: ParentType;
- value: Value;
- spaces: Spaces;
- source?: NodeSource;
- sourceIndex: number;
- remove(): Node;
- replaceWith(...nodes: Node[]): Node;
- next(): Node;
- prev(): Node;
- clone(opts: {[override: string]:any}): Node;
- toString(): string;
- }
- interface ContainerOptions extends NodeOptions {
- nodes?: Array<Node>;
- }
- interface Container<Value extends string | undefined = string> extends Base<Value> {
- nodes: Array<Node>;
- append(selector: Selector): Container;
- prepend(selector: Selector): Container;
- at(index: number): Node;
- index(child: Node): number;
- readonly first: Node;
- readonly last: Node;
- readonly length: number;
- removeChild(child: Node): Container;
- removeAll(): Container;
- empty(): Container;
- insertAfter(oldNode: Node, newNode: Node): Container;
- insertBefore(oldNode: Node, newNode: Node): Container;
- each(callback: (node: Node) => boolean | void): boolean | undefined;
- walk(callback: (node: Node) => boolean | void): boolean | undefined;
- walkAttributes(callback: (node: Node) => boolean | void): boolean | undefined;
- walkClasses(callback: (node: Node) => boolean | void): boolean | undefined;
- walkCombinators(callback: (node: Node) => boolean | void): boolean | undefined;
- walkComments(callback: (node: Node) => boolean | void): boolean | undefined;
- walkIds(callback: (node: Node) => boolean | void): boolean | undefined;
- walkNesting(callback: (node: Node) => boolean | void): boolean | undefined;
- walkPseudos(callback: (node: Node) => boolean | void): boolean | undefined;
- walkTags(callback: (node: Node) => boolean | void): boolean | undefined;
- split(callback: (node: Node) => boolean): [Node[], Node[]];
- map(callback: (node: Node) => Node): Node[];
- reduce<T>(callback: (node: Node) => Node, memo: T): T;
- every(callback: (node: Node) => boolean): boolean;
- some(callback: (node: Node) => boolean): boolean;
- filter(callback: (node: Node) => boolean): Node[];
- sort(callback: (nodeA: Node, nodeB: Node) => number): Node[];
- toString(): string;
- }
- function isContainer(node: any): node is Root | Selector | Pseudo;
-
- interface NamespaceOptions<Value extends string | undefined = string> extends NodeOptions<Value> {
- namespace?: string | true;
- }
- interface Namespace<Value extends string | undefined = string> extends Base<Value> {
- /** alias for namespace */
- ns: string | true;
- /**
- * namespace prefix.
- */
- namespace: string | true;
- /**
- * If a namespace exists, prefix the value provided with it, separated by |.
- */
- qualifiedName(value: string): string;
- /**
- * A string representing the namespace suitable for output.
- */
- readonly namespaceString: string;
- }
- function isNamespace(node: any): node is ClassName | Attribute | Tag;
-
- interface Root extends Container<undefined> {
- type: "root";
- /**
- * Raises an error, if the processor is invoked on
- * a postcss Rule node, a better error message is raised.
- */
- error(message: string, options?: ErrorOptions): Error;
- }
- function root(opts: ContainerOptions): Root;
- function isRoot(node: any): node is Root;
-
- interface Selector extends Container {
- type: "selector";
- }
- function selector(opts: ContainerOptions): Selector;
- function isSelector(node: any): node is Selector;
-
- interface Combinator extends Base {
- type: "combinator"
- }
- function combinator(opts: NodeOptions): Combinator;
- function isCombinator(node: any): node is Combinator;
-
- interface ClassName extends Namespace {
- type: "class";
- }
- function className(opts: NamespaceOptions): ClassName;
- function isClassName(node: any): node is ClassName;
-
- type AttributeOperator = "=" | "~=" | "|=" | "^=" | "$=" | "*=";
- interface AttributeOptions extends NamespaceOptions<string | undefined> {
- attribute: string;
- operator?: AttributeOperator;
- insensitive?: boolean;
- quoted?: boolean;
- spaces?: {
- before?: string;
- after?: string;
- attribute?: Partial<SpaceAround>;
- operator?: Partial<SpaceAround>;
- value?: Partial<SpaceAround>;
- insensitive?: Partial<SpaceAround>;
- }
- raws: {
- unquoted?: string;
- attribute?: string;
- operator?: string;
- value?: string;
- insensitive?: string;
- spaces?: {
- attribute?: Partial<Spaces>;
- operator?: Partial<Spaces>;
- value?: Partial<Spaces>;
- insensitive?: Partial<Spaces>;
- }
- };
- }
- interface Attribute extends Namespace<string | undefined> {
- type: "attribute";
- attribute: string;
- operator?: AttributeOperator;
- insensitive?: boolean;
- quoted?: boolean;
- spaces: {
- before: string;
- after: string;
- attribute?: Partial<Spaces>;
- operator?: Partial<Spaces>;
- value?: Partial<Spaces>;
- insensitive?: Partial<Spaces>;
- }
- raws: {
- unquoted?: string;
- attribute?: string;
- operator?: string;
- value?: string;
- insensitive?: string;
- spaces?: {
- attribute?: Partial<Spaces>;
- operator?: Partial<Spaces>;
- value?: Partial<Spaces>;
- insensitive?: Partial<Spaces>;
- }
- };
- /**
- * The attribute name after having been qualified with a namespace.
- */
- readonly qualifiedAttribute: string;
- /**
- * returns the offset of the attribute part specified relative to the
- * start of the node of the output string.
- *
- * * "ns" - alias for "namespace"
- * * "namespace" - the namespace if it exists.
- * * "attribute" - the attribute name
- * * "attributeNS" - the start of the attribute or its namespace
- * * "operator" - the match operator of the attribute
- * * "value" - The value (string or identifier)
- * * "insensitive" - the case insensitivity flag;
- * @param part One of the possible values inside an attribute.
- * @returns -1 if the name is invalid or the value doesn't exist in this attribute.
- */
- offsetOf(part: "ns" | "namespace" | "attribute" | "attributeNS" | "operator" | "value" | "insensitive"): number;
- }
- function attribute(opts: AttributeOptions): Attribute;
- function isAttribute(node: any): node is Attribute;
-
- interface Pseudo extends Container {
- type: "pseudo";
- }
- function pseudo(opts: ContainerOptions): Pseudo;
- /**
- * Checks wether the node is the Psuedo subtype of node.
- */
- function isPseudo(node: any): node is Pseudo;
-
- /**
- * Checks wether the node is, specifically, a pseudo element instead of
- * pseudo class.
- */
- function isPseudoElement(node: any): node is Pseudo;
-
- /**
- * Checks wether the node is, specifically, a pseudo class instead of
- * pseudo element.
- */
- function isPseudoClass(node: any): node is Pseudo;
-
-
- interface Tag extends Namespace {
- type: "tag";
- }
- function tag(opts: NamespaceOptions): Tag;
- function isTag(node: any): node is Tag;
-
- interface Comment extends Base {
- type: "comment";
- }
- function comment(opts: NodeOptions): Comment;
- function isComment(node: any): node is Comment;
-
- interface Identifier extends Base {
- type: "id";
- }
- function id(opts: any): any;
- function isIdentifier(node: any): node is Identifier;
-
- interface Nesting extends Base {
- type: "nesting";
- }
- function nesting(opts: any): any;
- function isNesting(node: any): node is Nesting;
-
- interface String extends Base {
- type: "string";
- }
- function string(opts: NodeOptions): String;
- function isString(node: any): node is String;
-
- interface Universal extends Base {
- type: "universal";
- }
- function universal(opts?: NamespaceOptions): any;
- function isUniversal(node: any): node is Universal;
-}
diff --git a/assets/node_modules/postcss-syntax/LICENSE b/assets/node_modules/postcss-syntax/LICENSE
deleted file mode 100644
index d9c0f45..0000000
--- a/assets/node_modules/postcss-syntax/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2018 刘祺
-
-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/assets/node_modules/postcss-syntax/README.md b/assets/node_modules/postcss-syntax/README.md
deleted file mode 100644
index 4eec117..0000000
--- a/assets/node_modules/postcss-syntax/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-PostCSS Syntax
-====
-
-[![NPM version](https://img.shields.io/npm/v/postcss-syntax.svg?style=flat-square)](https://www.npmjs.com/package/postcss-syntax)
-[![Travis](https://img.shields.io/travis/gucong3000/postcss-syntax.svg)](https://travis-ci.org/gucong3000/postcss-syntax)
-[![Travis](https://img.shields.io/travis/gucong3000/postcss-syntaxes.svg?label=integration)](https://travis-ci.org/gucong3000/postcss-syntaxes)
-[![Codecov](https://img.shields.io/codecov/c/github/gucong3000/postcss-syntax.svg)](https://codecov.io/gh/gucong3000/postcss-syntax)
-[![David](https://img.shields.io/david/dev/gucong3000/postcss-syntax.svg)](https://david-dm.org/gucong3000/postcss-syntax?type=dev)
-
-<img align="right" width="95" height="95"
- title="Philosopher’s stone, logo of PostCSS"
- src="http://postcss.github.io/postcss/logo.svg">
-
-postcss-syntax can automatically switch the required [PostCSS](https://github.com/postcss/postcss) syntax by file extension/source
-
-## Getting Started
-
-First thing's first, install the module:
-
-```
-npm install postcss-syntax --save-dev
-```
-
-If you want support SCSS/SASS/LESS/SugarSS syntax, you need to install these module:
-
-- SCSS: [postcss-scss](https://github.com/postcss/postcss-scss)
-- SASS: [postcss-sass](https://github.com/aleshaoleg/postcss-sass)
-- LESS: [postcss-less](https://github.com/shellscape/postcss-less)
-- SugarSS: [sugarss](https://github.com/postcss/sugarss)
-
-If you want support HTML (and HTML-like)/Markdown/CSS-in-JS file format, you need to install these module:
-
-- CSS-in-JS: [postcss-jsx](https://github.com/gucong3000/postcss-jsx)
-- HTML (and HTML-like): [postcss-html](https://github.com/gucong3000/postcss-html)
-- Markdown: [postcss-markdown](https://github.com/gucong3000/postcss-markdown)
-
-## Use Cases
-
-```js
-const postcss = require('postcss');
-const syntax = require('postcss-syntax')({
- rules: [
- {
- test: /\.(?:[sx]?html?|[sx]ht|vue|ux|php)$/i,
- extract: 'html',
- },
- {
- test: /\.(?:markdown|md)$/i,
- extract: 'markdown',
- },
- {
- test: /\.(?:m?[jt]sx?|es\d*|pac)$/i,
- extract: 'jsx',
- },
- {
- // custom language for file extension
- test: /\.postcss$/i,
- lang: 'scss'
- },
- {
- // custom language for file extension
- test: /\.customcss$/i,
- lang: 'custom'
- },
- ],
-
- // custom parser for CSS (using `postcss-safe-parser`)
- css: 'postcss-safe-parser',
- // custom parser for SASS (PostCSS-compatible syntax.)
- sass: require('postcss-sass'),
- // custom parser for SCSS (by module name)
- scss: 'postcss-scss',
- // custom parser for LESS (by module path)
- less: './node_modules/postcss-less',
- // custom parser for SugarSS
- sugarss: require('sugarss'),
- // custom parser for custom language
- custom: require('postcss-custom-syntax'),
-
-});
-postcss(plugins).process(source, { syntax: syntax }).then(function (result) {
- // An alias for the result.css property. Use it with syntaxes that generate non-CSS output.
- result.content
-});
-```
diff --git a/assets/node_modules/postcss-syntax/document.js b/assets/node_modules/postcss-syntax/document.js
deleted file mode 100644
index 64119ee..0000000
--- a/assets/node_modules/postcss-syntax/document.js
+++ /dev/null
@@ -1,41 +0,0 @@
-"use strict";
-const PostCssRoot = require("postcss/lib/root");
-class Document extends PostCssRoot {
- toString (stringifier) {
- return super.toString(stringifier || {
- stringify: require("./stringify"),
- });
- }
-
- each (callback) {
- const result = this.nodes.map(node => node.each(callback));
- return result.every(result => result !== false) && result.pop();
- }
-
- append () {
- this.last.append.apply(
- this.last,
- Array.from(arguments)
- );
- return this;
- }
-
- prepend () {
- this.first.prepend.apply(
- this.first,
- Array.from(arguments)
- );
- return this;
- }
-
- insertBefore (exist, add) {
- exist.prepend(add);
- return this;
- }
-
- insertAfter (exist, add) {
- exist.append(add);
- return this;
- }
-}
-module.exports = Document;
diff --git a/assets/node_modules/postcss-syntax/get-lang.js b/assets/node_modules/postcss-syntax/get-lang.js
deleted file mode 100644
index 4bc74ab..0000000
--- a/assets/node_modules/postcss-syntax/get-lang.js
+++ /dev/null
@@ -1,111 +0,0 @@
-"use strict";
-
-const languages = {
- sass: /^sass$/i,
- // https://github.com/Microsoft/vscode/blob/master/extensions/scss/package.json
- scss: /^scss$/i,
- // https://github.com/Microsoft/vscode/blob/master/extensions/less/package.json
- less: /^less$/i,
- // https://github.com/MhMadHamster/vscode-postcss-language/blob/master/package.json
- sugarss: /^s(?:ugar)?ss$/i,
- // https://github.com/d4rkr00t/language-stylus/blob/master/package.json
- stylus: /^styl(?:us)?$/i,
- // WXSS(WeiXin Style Sheets) See: https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxss.html
- // acss(AntFinancial Style Sheet) See: https://docs.alipay.com/mini/framework/acss
- // `*.pcss`, `*.postcss`
- // https://github.com/Microsoft/vscode/blob/master/extensions/css/package.json
- // https://github.com/rcsole/postcss-syntax/blob/master/package.json
- css: /^(?:wx|\w*c)ss$/i,
-};
-
-const extracts = {
- // https://github.com/Microsoft/vscode/blob/master/extensions/javascript/package.json
- // https://github.com/Microsoft/vscode/blob/master/extensions/typescript-basics/package.json
- // https://github.com/michaelgmcd/vscode-language-babel/blob/master/package.json
- jsx: /^(?:m?[jt]sx?|es\d*|pac|babel|flow)$/i,
- // *.*html? HTML https://github.com/Microsoft/vscode/blob/master/extensions/html/package.json
- // *.xslt? XSLT https://msdn.microsoft.com/en-us/library/ms764661(v=vs.85).aspx
- // *.vue VUE https://vue-loader.vuejs.org/spec.html
- // *.wpy WePY https://github.com/Tencent/wepy/blob/master/docs/md/doc.md#wpy文件说明
- // *.ux quickapp https://doc.quickapp.cn/framework/source-file.html
- // *.php* PHP https://github.com/Microsoft/vscode/blob/master/extensions/php/package.json
- // *.twig Twig https://github.com/mblode/vscode-twig-language/blob/master/package.json
- // *.liquid Liquid https://github.com/GingerBear/vscode-liquid/blob/master/package.json
- // *.svelte Svelte https://github.com/UnwrittenFun/svelte-vscode/blob/master/package.json
- html: /^(?:\w*html?|xht|xslt?|mdoc|jsp|aspx?|volt|ejs|vue|wpy|ux|php\d*|ctp|twig|liquid|svelte)$/i,
- // https://github.com/Microsoft/vscode/blob/master/extensions/markdown-basics/package.json
- markdown: /^(?:m(?:ark)?d(?:ow)?n|mk?d)$/i,
- // https://github.com/Microsoft/vscode/blob/master/extensions/xml/package.json
- xml: /^(?:xml|xsd|ascx|atom|axml|bpmn|config|cpt|csl|csproj|csproj|user|dita|ditamap|dtd|dtml|fsproj|fxml|iml|isml|jmx|launch|menu|mxml|nuspec|opml|owl|proj|props|pt|publishsettings|pubxml|pubxml|user|rdf|rng|rss|shproj|storyboard|svg|targets|tld|tmx|vbproj|vbproj|user|vcxproj|vcxproj|filters|wsdl|wxi|wxl|wxs|xaml|xbl|xib|xlf|xliff|xpdl|xul|xoml)$/i,
-};
-
-function sourceType (source) {
- source = source && source.trim();
- if (!source) {
- return;
- }
- let extract;
- if (
- // start with strict mode
- // start with import code
- // start with require code
- /^(?:(?:\/\/[^\r\n]*\r?\n|\/\*.*?\*\/)\s*)*(?:(?:("|')use strict\1|import(?:\s+[^;]+\s+from)?\s+("|')[^'"]+?\2|export\s+[^;]+\s+[^;]+)\s*(;|\r?\n|$)|(?:(?:var|let|const)\s+[^;]+\s*=\s*)?(?:require|import)\(.+\))/.test(source) ||
- // https://en.wikipedia.org/wiki/Shebang_(Unix)
- (/^#!([^\r\n]+)/.test(source) && /(?:^|\s+|\/)(?:ts-)?node(?:\.\w+)?(?:\s+|$)$/.test(RegExp.$1))
- ) {
- extract = "jsx";
- } else if (
- /^(?:<\?.*?\?>\s*)*<(?:!DOCTYPE\s+)?html(\s+[^<>]*)?>/i.test(source) ||
- /^<\?php(?:\s+[\s\S]*)?(?:\?>|$)/.test(source)
- ) {
- extract = "html";
- } else if (/^<\?xml(\s+[^<>]*)?\?>/i.test(source)) {
- // https://msdn.microsoft.com/en-us/library/ms764661(v=vs.85).aspx
- if (/<xsl:\w+\b[^<>]*>/.test(source) || /<\/xsl:\w+>/i.test(source)) {
- extract = "html";
- } else {
- extract = "xml";
- }
- } else if (/^(?:#+\s+\S+|\S+[^\r\n]*\r?\n=+(\r?\n|$))/.test(source)) {
- extract = "markdown";
- } else if (/<(\w+)(?:\s+[^<>]*)?>[\s\S]*?<\/\1>/.test(source)) {
- extract = "html";
- } else {
- return;
- }
- return {
- extract,
- };
-}
-
-function extType (extName, languages) {
- for (const langName in languages) {
- if (languages[langName].test(extName)) {
- return langName;
- }
- }
-}
-
-function fileType (file) {
- if (file && /\.(\w+)(?:[?#].*?)?$/.test(file)) {
- const extName = RegExp.$1;
- const extract = extType(extName, extracts);
- if (extract) {
- return {
- extract,
- };
- }
- const lang = extType(extName, languages);
- if (lang) {
- return {
- lang,
- };
- }
- }
-}
-
-function getLang (file, source) {
- return fileType(file) || sourceType(source);
-}
-
-module.exports = getLang;
diff --git a/assets/node_modules/postcss-syntax/get-syntax.js b/assets/node_modules/postcss-syntax/get-syntax.js
deleted file mode 100644
index 479e1f6..0000000
--- a/assets/node_modules/postcss-syntax/get-syntax.js
+++ /dev/null
@@ -1,63 +0,0 @@
-"use strict";
-const path = require("path");
-const reSyntaxCSS = /^(?:post)?css$/i;
-
-function cssSyntax () {
- return {
- stringify: require("postcss/lib/stringify"),
- parse: require("postcss/lib/parse"),
- };
-}
-
-function normalize (syntax) {
- if (!syntax.parse) {
- syntax = {
- parse: syntax,
- };
- }
- return syntax;
-}
-
-function requireSyntax (syntax) {
- if (reSyntaxCSS.test(syntax)) {
- return cssSyntax();
- } else if (/^sugarss$/i.test(syntax)) {
- syntax = "sugarss";
- } else if (path.isAbsolute(syntax) || syntax[0] === ".") {
- syntax = path.resolve(syntax);
- } else {
- syntax = syntax.toLowerCase().replace(/^(?:postcss-)?(\w+)/i, "postcss-$1");
- }
- return normalize(require(syntax));
-}
-
-function getSyntax (lang, opts) {
- let syntax;
- lang = lang || "css";
- if (opts.syntax.config[lang]) {
- syntax = opts.syntax.config[lang];
- if (typeof syntax === "string") {
- if (syntax !== lang && opts.syntax.config[syntax]) {
- return getSyntax(syntax, opts);
- }
- syntax = requireSyntax(syntax);
- } else {
- syntax = normalize(syntax);
- }
- } else if (reSyntaxCSS.test(lang)) {
- syntax = cssSyntax();
- } else {
- return requireSyntax(lang);
- }
- if (!syntax.stringify) {
- if (reSyntaxCSS.test(lang)) {
- syntax.stringify = require("postcss/lib/stringify");
- } else {
- syntax.stringify = getSyntax(null, opts).stringify;
- }
- }
- opts.syntax.config[lang] = syntax;
- return syntax;
-}
-
-module.exports = getSyntax;
diff --git a/assets/node_modules/postcss-syntax/index.js b/assets/node_modules/postcss-syntax/index.js
deleted file mode 100644
index a069f8d..0000000
--- a/assets/node_modules/postcss-syntax/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-"use strict";
-const stringify = require("./stringify");
-const parse = require("./parse");
-
-const defaultConfig = {
- postcss: "css",
- stylus: "css",
- babel: "jsx",
- xml: "html",
-};
-
-function initSyntax (syntax) {
- syntax.stringify = stringify.bind(syntax);
- syntax.parse = parse.bind(syntax);
- return syntax;
-}
-
-function syntax (config) {
- return initSyntax({
- config: Object.assign({}, defaultConfig, config),
- });
-}
-
-initSyntax(syntax);
-syntax.config = defaultConfig;
-module.exports = syntax;
diff --git a/assets/node_modules/postcss-syntax/load-syntax.js b/assets/node_modules/postcss-syntax/load-syntax.js
deleted file mode 100644
index 8eda99b..0000000
--- a/assets/node_modules/postcss-syntax/load-syntax.js
+++ /dev/null
@@ -1,23 +0,0 @@
-"use strict";
-const getSyntax = require("./get-syntax");
-const cache = {};
-
-function loadSyntax (opts, id) {
- const cssSyntax = getSyntax("css", opts);
- const modulePath = id + "/template-" + (cssSyntax.parse.name === "safeParse" ? "safe-" : "") + "parse";
- let syntax = cache[modulePath];
- if (!syntax) {
- syntax = {
- parse: require(modulePath),
- };
- try {
- syntax.stringify = require(id + "/template-stringify");
- } catch (ex) {
- syntax.stringify = cssSyntax.stringify;
- }
- cache[modulePath] = syntax;
- }
- return syntax;
-}
-
-module.exports = loadSyntax;
diff --git a/assets/node_modules/postcss-syntax/normal-opts.js b/assets/node_modules/postcss-syntax/normal-opts.js
deleted file mode 100644
index fe89008..0000000
--- a/assets/node_modules/postcss-syntax/normal-opts.js
+++ /dev/null
@@ -1,11 +0,0 @@
-"use strict";
-
-function normalOpts (opts, syntax) {
- if (!opts) {
- opts = {};
- }
- opts.syntax = syntax;
- return opts;
-}
-
-module.exports = normalOpts;
diff --git a/assets/node_modules/postcss-syntax/package.json b/assets/node_modules/postcss-syntax/package.json
deleted file mode 100644
index 5a5d46b..0000000
--- a/assets/node_modules/postcss-syntax/package.json
+++ /dev/null
@@ -1,102 +0,0 @@
-{
- "name": "postcss-syntax",
- "version": "0.36.2",
- "description": "Automatically switch PostCSS syntax by file extensions",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/gucong3000/postcss-syntax.git"
- },
- "keywords": [
- "postcss",
- "syntax",
- "switch",
- "extension"
- ],
- "author": "gucong",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/gucong3000/postcss-syntax/issues"
- },
- "homepage": "https://github.com/gucong3000/postcss-syntax#readme",
- "nyc": {
- "reporter": [
- "lcov",
- "text"
- ],
- "all": true,
- "cache": true,
- "check-coverage": true
- },
- "scripts": {
- "mocha": "mocha --require ./test/fixtures/link --no-timeouts",
- "test": "nyc npm run mocha",
- "debug": "npm run mocha -- --inspect-brk"
- },
- "extensions": [
- ".css",
- ".pcss",
- ".postcss",
- ".acss",
- ".wxss",
- ".sass",
- ".scss",
- ".less",
- ".sss",
- ".js",
- ".es6",
- ".mjs",
- ".pac",
- ".jsx",
- ".ts",
- ".tsx",
- ".babel",
- ".flow",
- ".html",
- ".htm",
- ".shtml",
- ".xhtml",
- ".mdoc",
- ".jsp",
- ".asp",
- ".aspx",
- ".jshtm",
- ".volt",
- ".ejs",
- ".rhtml",
- ".xsl",
- ".xslt",
- ".vue",
- ".wpy",
- ".ux",
- ".php",
- ".php4",
- ".php5",
- ".phtml",
- ".ctp",
- ".twig",
- ".liquid",
- ".md",
- ".mdown",
- ".markdown",
- ".markdn",
- ".svelte"
- ],
- "peerDependencies": {
- "postcss": ">=5.0.0"
- },
- "devDependencies": {
- "chai": "^4.2.0",
- "codecov": "^3.1.0",
- "mocha": "^5.2.0",
- "nyc": "^13.1.0",
- "postcss": "^7.0.7",
- "postcss-html": ">=0.36.0",
- "postcss-jsx": ">=0.36.0",
- "postcss-less": "^3.1.0",
- "postcss-markdown": ">=0.36.0",
- "postcss-safe-parser": "^4.0.1",
- "postcss-scss": "^2.0.0",
- "proxyquire": "^2.1.0",
- "sugarss": "^2.0.0"
- }
-}
diff --git a/assets/node_modules/postcss-syntax/parse-style.js b/assets/node_modules/postcss-syntax/parse-style.js
deleted file mode 100644
index b1bc0f0..0000000
--- a/assets/node_modules/postcss-syntax/parse-style.js
+++ /dev/null
@@ -1,127 +0,0 @@
-"use strict";
-const reNewLine = /(?:\r?\n|\r)/gm;
-const Input = require("postcss/lib/input");
-const Document = require("./document");
-const getSyntax = require("./get-syntax");
-const patch = require("./patch-postcss");
-
-class LocalFixer {
- constructor (lines, style) {
- let line = 0;
- let column = style.startIndex;
- lines.some((lineEndIndex, lineNumber) => {
- if (lineEndIndex >= style.startIndex) {
- line = lineNumber--;
- if (lineNumber in lines) {
- column = style.startIndex - lines[lineNumber] - 1;
- }
- return true;
- }
- });
-
- this.line = line;
- this.column = column;
- this.style = style;
- }
- object (object) {
- if (object) {
- if (object.line === 1) {
- object.column += this.column;
- }
- object.line += this.line;
- }
- }
- node (node) {
- this.object(node.source.start);
- this.object(node.source.end);
- }
- root (root) {
- this.node(root);
- root.walk(node => {
- this.node(node);
- });
- }
- error (error) {
- if (error && error.name === "CssSyntaxError") {
- this.object(error);
- this.object(error.input);
- error.message = error.message.replace(/:\d+:\d+:/, ":" + error.line + ":" + error.column + ":");
- }
- return error;
- }
- parse (opts) {
- const style = this.style;
- const syntax = style.syntax || getSyntax(style.lang, opts);
- let root = style.root;
- try {
- root = syntax.parse(style.content, Object.assign({}, opts, {
- map: false,
- }, style.opts));
- } catch (error) {
- if (style.ignoreErrors) {
- return;
- } else if (!style.skipConvert) {
- this.error(error);
- }
- throw error;
- }
- if (!style.skipConvert) {
- this.root(root);
- }
-
- root.source.inline = Boolean(style.inline);
- root.source.lang = style.lang;
- root.source.syntax = syntax;
- return root;
- }
-}
-
-function docFixer (source, opts) {
- let match;
- const lines = [];
- reNewLine.lastIndex = 0;
- while ((match = reNewLine.exec(source))) {
- lines.push(match.index);
- }
- lines.push(source.length);
- return function parseStyle (style) {
- return new LocalFixer(lines, style).parse(opts);
- };
-}
-
-function parseStyle (source, opts, styles) {
- patch(Document);
-
- const document = new Document();
-
- let index = 0;
- if (styles.length) {
- const parseStyle = docFixer(source, opts);
- styles.sort((a, b) => (
- a.startIndex - b.startIndex
- )).forEach(style => {
- const root = parseStyle(style);
- if (root) {
- root.raws.beforeStart = source.slice(index, style.startIndex);
- if (style.endIndex) {
- index = style.endIndex;
- } else {
- index = style.startIndex + (style.content || root.source.input.css).length;
- }
- root.document = document;
- document.nodes.push(root);
- }
- });
- }
- document.raws.afterEnd = index ? source.slice(index) : source;
- document.source = {
- input: new Input(source, opts),
- start: {
- line: 1,
- column: 1,
- },
- opts,
- };
- return document;
-}
-module.exports = parseStyle;
diff --git a/assets/node_modules/postcss-syntax/parse.js b/assets/node_modules/postcss-syntax/parse.js
deleted file mode 100644
index 964b19e..0000000
--- a/assets/node_modules/postcss-syntax/parse.js
+++ /dev/null
@@ -1,34 +0,0 @@
-"use strict";
-
-const parser = require("./parser");
-const processor = require("./processor");
-const getLang = require("./get-lang");
-const normalOpts = require("./normal-opts");
-
-function getSyntax (opts, source) {
- const rules = opts.syntax && opts.syntax.config && opts.syntax.config.rules;
- const file = opts.from || "";
- return (rules && rules.find(
- rule => rule.test.test ? rule.test.test(file) : rule.test(file, source)
- )) || getLang(file, source) || {
- lang: "css",
- };
-}
-
-function parse (source, opts) {
- source = source.toString();
- opts = normalOpts(opts, this);
- const syntax = getSyntax(opts, source);
- const syntaxOpts = Object.assign({}, opts, syntax.opts);
- let root;
- if (syntax.extract) {
- root = processor(source, syntax.extract, syntaxOpts);
- root.source.lang = syntax.extract;
- } else {
- root = parser(source, syntax.lang, syntaxOpts);
- root.source.lang = syntax.lang;
- }
- return root;
-}
-
-module.exports = parse;
diff --git a/assets/node_modules/postcss-syntax/parser.js b/assets/node_modules/postcss-syntax/parser.js
deleted file mode 100644
index 5c4b173..0000000
--- a/assets/node_modules/postcss-syntax/parser.js
+++ /dev/null
@@ -1,18 +0,0 @@
-"use strict";
-
-const getSyntax = require("./get-syntax");
-const patch = require("./patch-postcss");
-
-function parser (source, lang, opts) {
- patch();
-
- const syntax = getSyntax(lang, opts);
- const root = syntax.parse(source, opts);
-
- root.source.syntax = syntax;
- root.source.lang = lang;
-
- return root;
-}
-
-module.exports = parser;
diff --git a/assets/node_modules/postcss-syntax/patch-postcss.js b/assets/node_modules/postcss-syntax/patch-postcss.js
deleted file mode 100644
index 0018f69..0000000
--- a/assets/node_modules/postcss-syntax/patch-postcss.js
+++ /dev/null
@@ -1,77 +0,0 @@
-"use strict";
-const path = require("path");
-const patched = {};
-
-function isPromise (obj) {
- return typeof obj === "object" && typeof obj.then === "function";
-}
-
-function runDocument (plugin) {
- const result = this.result;
- result.lastPlugin = plugin;
- const promise = result.root.nodes.map(root => {
- try {
- return plugin(root, result);
- } catch (error) {
- this.handleError(error, plugin);
- throw error;
- }
- });
- if (promise.some(isPromise)) {
- return Promise.all(promise);
- }
-}
-
-function patchDocument (Document, LazyResult) {
- LazyResult = LazyResult.prototype;
- const runRoot = LazyResult.run;
-
- LazyResult.run = function run () {
- return (this.result.root instanceof Document ? runDocument : runRoot).apply(this, arguments);
- };
-}
-
-function patchNode (Node) {
- Node = Node.prototype;
- const NodeToString = Node.toString;
- Node.toString = function toString (stringifier) {
- return NodeToString.call(this, stringifier || this.root().source.syntax);
- };
-}
-
-function patch (Document) {
- let fn;
- let file;
- if (Document) {
- patch();
- fn = patchDocument.bind(this, Document);
- file = "lazy-result";
- } else {
- fn = patchNode;
- file = "node";
- }
- findPostcss().map(dir => (
- [dir + "lib", file].join(path.sep)
- )).filter(file => (
- !patched[file]
- )).forEach(file => {
- try {
- fn(require(file));
- } catch (ex) {
- //
- }
- patched[file] = true;
- });
-}
-
-function findPostcss () {
- const result = {};
- for (const file in require.cache) {
- if (/^(.+?(\\|\/))postcss(\2)/.test(file)) {
- result[RegExp.lastMatch] = true;
- }
- }
- return Object.keys(result);
-}
-
-module.exports = patch;
diff --git a/assets/node_modules/postcss-syntax/processor.js b/assets/node_modules/postcss-syntax/processor.js
deleted file mode 100644
index ef94c16..0000000
--- a/assets/node_modules/postcss-syntax/processor.js
+++ /dev/null
@@ -1,29 +0,0 @@
-"use strict";
-
-const parseStyle = require("./parse-style");
-
-function getSyntax (config, syntax) {
- if (typeof syntax !== "string") {
- return syntax;
- }
- let syntaxConfig = config[syntax];
-
- if (syntaxConfig) {
- syntaxConfig = getSyntax(config, syntaxConfig);
- } else {
- syntaxConfig = {
- extract: require(syntax.toLowerCase().replace(/^(postcss-)?/i, "postcss-") + "/extract"),
- };
- config[syntax] = syntaxConfig;
- }
-
- return syntaxConfig;
-}
-
-function processor (source, lang, opts) {
- const syntax = getSyntax(opts.syntax.config, lang);
- const styles = (syntax.extract || syntax)(source, opts) || [];
- return parseStyle(source, opts, styles);
-}
-
-module.exports = processor;
diff --git a/assets/node_modules/postcss-syntax/stringify.js b/assets/node_modules/postcss-syntax/stringify.js
deleted file mode 100644
index 13b51e7..0000000
--- a/assets/node_modules/postcss-syntax/stringify.js
+++ /dev/null
@@ -1,20 +0,0 @@
-"use strict";
-
-function stringify (document) {
- let stringify;
- if (document instanceof require("./document")) {
- stringify = docStringify;
- } else {
- stringify = document.source.syntax.stringify;
- }
- return stringify.apply(this, arguments);
-}
-
-function docStringify (document, builder) {
- document.nodes.forEach((root, i) => {
- builder(root.raws.beforeStart, root, "beforeStart");
- root.source.syntax && root.source.syntax.stringify(root, builder);
- });
- builder(document.raws.afterEnd, document, "afterEnd");
-}
-module.exports = stringify;
diff --git a/assets/node_modules/postcss-syntax/syntax.js b/assets/node_modules/postcss-syntax/syntax.js
deleted file mode 100644
index c8bb82a..0000000
--- a/assets/node_modules/postcss-syntax/syntax.js
+++ /dev/null
@@ -1,37 +0,0 @@
-"use strict";
-const stringify = require("./stringify");
-const parseStyle = require("./parse-style");
-const normalOpts = require("./normal-opts");
-
-module.exports = (extract, lang) => {
- const defaultConfig = {
- postcss: "css",
- stylus: "css",
- babel: "jsx",
- xml: "html",
- };
- function parse (source, opts) {
- source = source.toString();
- opts = normalOpts(opts, this);
- const document = parseStyle(source, opts, extract(source, opts));
- document.source.lang = lang;
- return document;
- }
-
- function initSyntax (syntax) {
- syntax.stringify = stringify.bind(syntax);
- syntax.parse = parse.bind(syntax);
- syntax.extract = extract.bind(syntax);
- return syntax;
- }
-
- function syntax (config) {
- return initSyntax({
- config: Object.assign({}, defaultConfig, config),
- });
- }
-
- initSyntax(syntax);
- syntax.config = defaultConfig;
- return syntax;
-};
diff --git a/assets/node_modules/postcss-value-parser/LICENSE b/assets/node_modules/postcss-value-parser/LICENSE
deleted file mode 100644
index 6dcaefc..0000000
--- a/assets/node_modules/postcss-value-parser/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) Bogdan Chadkin <trysound@yandex.ru>
-
-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/assets/node_modules/postcss-value-parser/README.md b/assets/node_modules/postcss-value-parser/README.md
deleted file mode 100644
index 3bd6a0d..0000000
--- a/assets/node_modules/postcss-value-parser/README.md
+++ /dev/null
@@ -1,263 +0,0 @@
-# postcss-value-parser
-
-[![Travis CI](https://travis-ci.org/TrySound/postcss-value-parser.svg)](https://travis-ci.org/TrySound/postcss-value-parser)
-
-Transforms CSS declaration values and at-rule parameters into a tree of nodes, and provides a simple traversal API.
-
-## Usage
-
-```js
-var valueParser = require('postcss-value-parser');
-var cssBackgroundValue = 'url(foo.png) no-repeat 40px 73%';
-var parsedValue = valueParser(cssBackgroundValue);
-// parsedValue exposes an API described below,
-// e.g. parsedValue.walk(..), parsedValue.toString(), etc.
-```
-
-For example, parsing the value `rgba(233, 45, 66, .5)` will return the following:
-
-```js
-{
- nodes: [
- {
- type: 'function',
- value: 'rgba',
- before: '',
- after: '',
- nodes: [
- { type: 'word', value: '233' },
- { type: 'div', value: ',', before: '', after: ' ' },
- { type: 'word', value: '45' },
- { type: 'div', value: ',', before: '', after: ' ' },
- { type: 'word', value: '66' },
- { type: 'div', value: ',', before: ' ', after: '' },
- { type: 'word', value: '.5' }
- ]
- }
- ]
-}
-```
-
-If you wanted to convert each `rgba()` value in `sourceCSS` to a hex value, you could do so like this:
-
-```js
-var valueParser = require('postcss-value-parser');
-
-var parsed = valueParser(sourceCSS);
-
-// walk() will visit all the of the nodes in the tree,
-// invoking the callback for each.
-parsed.walk(function (node) {
-
- // Since we only want to transform rgba() values,
- // we can ignore anything else.
- if (node.type !== 'function' && node.value !== 'rgba') return;
-
- // We can make an array of the rgba() arguments to feed to a
- // convertToHex() function
- var color = node.nodes.filter(function (node) {
- return node.type === 'word';
- }).map(function (node) {
- return Number(node.value);
- }); // [233, 45, 66, .5]
-
- // Now we will transform the existing rgba() function node
- // into a word node with the hex value
- node.type = 'word';
- node.value = convertToHex(color);
-})
-
-parsed.toString(); // #E92D42
-```
-
-## Nodes
-
-Each node is an object with these common properties:
-
-- **type**: The type of node (`word`, `string`, `div`, `space`, `comment`, or `function`).
- Each type is documented below.
-- **value**: Each node has a `value` property; but what exactly `value` means
- is specific to the node type. Details are documented for each type below.
-- **sourceIndex**: The starting index of the node within the original source
- string. For example, given the source string `10px 20px`, the `word` node
- whose value is `20px` will have a `sourceIndex` of `5`.
-
-### word
-
-The catch-all node type that includes keywords (e.g. `no-repeat`),
-quantities (e.g. `20px`, `75%`, `1.5`), and hex colors (e.g. `#e6e6e6`).
-
-Node-specific properties:
-
-- **value**: The "word" itself.
-
-### string
-
-A quoted string value, e.g. `"something"` in `content: "something";`.
-
-Node-specific properties:
-
-- **value**: The text content of the string.
-- **quote**: The quotation mark surrounding the string, either `"` or `'`.
-- **unclosed**: `true` if the string was not closed properly. e.g. `"unclosed string `.
-
-### div
-
-A divider, for example
-
-- `,` in `animation-duration: 1s, 2s, 3s`
-- `/` in `border-radius: 10px / 23px`
-- `:` in `(min-width: 700px)`
-
-Node-specific properties:
-
-- **value**: The divider character. Either `,`, `/`, or `:` (see examples above).
-- **before**: Whitespace before the divider.
-- **after**: Whitespace after the divider.
-
-### space
-
-Whitespace used as a separator, e.g. ` ` occurring twice in `border: 1px solid black;`.
-
-Node-specific properties:
-
-- **value**: The whitespace itself.
-
-### comment
-
-A CSS comment starts with `/*` and ends with `*/`
-
-Node-specific properties:
-
-- **value**: The comment value without `/*` and `*/`
-- **unclosed**: `true` if the comment was not closed properly. e.g. `/* comment without an end `.
-
-### function
-
-A CSS function, e.g. `rgb(0,0,0)` or `url(foo.bar)`.
-
-Function nodes have nodes nested within them: the function arguments.
-
-Additional properties:
-
-- **value**: The name of the function, e.g. `rgb` in `rgb(0,0,0)`.
-- **before**: Whitespace after the opening parenthesis and before the first argument,
- e.g. ` ` in `rgb( 0,0,0)`.
-- **after**: Whitespace before the closing parenthesis and after the last argument,
- e.g. ` ` in `rgb(0,0,0 )`.
-- **nodes**: More nodes representing the arguments to the function.
-- **unclosed**: `true` if the parentheses was not closed properly. e.g. `( unclosed-function `.
-
-Media features surrounded by parentheses are considered functions with an
-empty value. For example, `(min-width: 700px)` parses to these nodes:
-
-```js
-[
- {
- type: 'function', value: '', before: '', after: '',
- nodes: [
- { type: 'word', value: 'min-width' },
- { type: 'div', value: ':', before: '', after: ' ' },
- { type: 'word', value: '700px' }
- ]
- }
-]
-```
-
-`url()` functions can be parsed a little bit differently depending on
-whether the first character in the argument is a quotation mark.
-
-`url( /gfx/img/bg.jpg )` parses to:
-
-```js
-{ type: 'function', sourceIndex: 0, value: 'url', before: ' ', after: ' ', nodes: [
- { type: 'word', sourceIndex: 5, value: '/gfx/img/bg.jpg' }
-] }
-```
-
-`url( "/gfx/img/bg.jpg" )`, on the other hand, parses to:
-
-```js
-{ type: 'function', sourceIndex: 0, value: 'url', before: ' ', after: ' ', nodes: [
- type: 'string', sourceIndex: 5, quote: '"', value: '/gfx/img/bg.jpg' },
-] }
-```
-
-### unicode-range
-
-The unicode-range CSS descriptor sets the specific range of characters to be
-used from a font defined by @font-face and made available
-for use on the current page (`unicode-range: U+0025-00FF`).
-
-Node-specific properties:
-
-- **value**: The "unicode-range" itself.
-
-## API
-
-```
-var valueParser = require('postcss-value-parser');
-```
-
-### valueParser.unit(quantity)
-
-Parses `quantity`, distinguishing the number from the unit. Returns an object like the following:
-
-```js
-// Given 2rem
-{
- number: '2',
- unit: 'rem'
-}
-```
-
-If the `quantity` argument cannot be parsed as a number, returns `false`.
-
-*This function does not parse complete values*: you cannot pass it `1px solid black` and expect `px` as
-the unit. Instead, you should pass it single quantities only. Parse `1px solid black`, then pass it
-the stringified `1px` node (a `word` node) to parse the number and unit.
-
-### valueParser.stringify(nodes[, custom])
-
-Stringifies a node or array of nodes.
-
-The `custom` function is called for each `node`; return a string to override the default behaviour.
-
-### valueParser.walk(nodes, callback[, bubble])
-
-Walks each provided node, recursively walking all descendent nodes within functions.
-
-Returning `false` in the `callback` will prevent traversal of descendent nodes (within functions).
-You can use this feature to for shallow iteration, walking over only the *immediate* children.
-*Note: This only applies if `bubble` is `false` (which is the default).*
-
-By default, the tree is walked from the outermost node inwards.
-To reverse the direction, pass `true` for the `bubble` argument.
-
-The `callback` is invoked with three arguments: `callback(node, index, nodes)`.
-
-- `node`: The current node.
-- `index`: The index of the current node.
-- `nodes`: The complete nodes array passed to `walk()`.
-
-Returns the `valueParser` instance.
-
-### var parsed = valueParser(value)
-
-Returns the parsed node tree.
-
-### parsed.nodes
-
-The array of nodes.
-
-### parsed.toString()
-
-Stringifies the node tree.
-
-### parsed.walk(callback[, bubble])
-
-Walks each node inside `parsed.nodes`. See the documentation for `valueParser.walk()` above.
-
-# License
-
-MIT © [Bogdan Chadkin](mailto:trysound@yandex.ru)
diff --git a/assets/node_modules/postcss-value-parser/lib/index.d.ts b/assets/node_modules/postcss-value-parser/lib/index.d.ts
deleted file mode 100644
index 36c052c..0000000
--- a/assets/node_modules/postcss-value-parser/lib/index.d.ts
+++ /dev/null
@@ -1,172 +0,0 @@
-declare namespace postcssValueParser {
- interface BaseNode {
- /**
- * The offset inside the CSS value at which the node starts
- */
- sourceIndex: number;
-
- /**
- * The node's characteristic value
- */
- value: string;
- }
-
- interface ClosableNode {
- /**
- * Whether the parsed CSS value ended before the node was properly closed
- */
- unclosed?: true;
- }
-
- interface AdjacentAwareNode {
- /**
- * The token at the start of the node
- */
- before: string;
-
- /**
- * The token at the end of the node
- */
- after: string;
- }
-
- interface CommentNode extends BaseNode, ClosableNode {
- type: "comment";
- }
-
- interface DivNode extends BaseNode, AdjacentAwareNode {
- type: "div";
- }
-
- interface FunctionNode extends BaseNode, ClosableNode, AdjacentAwareNode {
- type: "function";
-
- /**
- * Nodes inside the function
- */
- nodes: Node[];
- }
-
- interface SpaceNode extends BaseNode {
- type: "space";
- }
-
- interface StringNode extends BaseNode, ClosableNode {
- type: "string";
-
- /**
- * The quote type delimiting the string
- */
- quote: '"' | "'";
- }
-
- interface UnicodeRangeNode extends BaseNode {
- type: "unicode-range";
- }
-
- interface WordNode extends BaseNode {
- type: "word";
- }
-
- /**
- * Any node parsed from a CSS value
- */
- type Node =
- | CommentNode
- | DivNode
- | FunctionNode
- | SpaceNode
- | StringNode
- | UnicodeRangeNode
- | WordNode;
-
- interface CustomStringifierCallback {
- /**
- * @param node The node to stringify
- * @returns The serialized CSS representation of the node
- */
- (nodes: Node): string;
- }
-
- interface WalkCallback {
- /**
- * @param node The currently visited node
- * @param index The index of the node in the series of parsed nodes
- * @param nodes The series of parsed nodes
- * @returns Returning `false` will prevent traversal of descendant nodes (only applies if `bubble` was set to `true` in the `walk()` call)
- */
- (node: Node, index: number, nodes: Node[]): void | false;
- }
-
- /**
- * A CSS dimension, decomposed into its numeric and unit parts
- */
- interface Dimension {
- number: string;
- unit: string;
- }
-
- /**
- * A wrapper around a parsed CSS value that allows for inspecting and walking nodes
- */
- interface ParsedValue {
- /**
- * The series of parsed nodes
- */
- nodes: Node[];
-
- /**
- * Walk all parsed nodes, applying a callback
- *
- * @param callback A visitor callback that will be executed for each node
- * @param bubble When set to `true`, walking will be done inside-out instead of outside-in
- */
- walk(callback: WalkCallback, bubble?: boolean): this;
- }
-
- interface ValueParser {
- /**
- * Decompose a CSS dimension into its numeric and unit part
- *
- * @param value The dimension to decompose
- * @returns An object representing `number` and `unit` part of the dimension or `false` if the decomposing fails
- */
- unit(value: string): Dimension | false;
-
- /**
- * Serialize a series of nodes into a CSS value
- *
- * @param nodes The nodes to stringify
- * @param custom A custom stringifier callback
- * @returns The generated CSS value
- */
- stringify(nodes: Node[], custom?: CustomStringifierCallback): string;
-
- /**
- * Walk a series of nodes, applying a callback
- *
- * @param nodes The nodes to walk
- * @param callback A visitor callback that will be executed for each node
- * @param bubble When set to `true`, walking will be done inside-out instead of outside-in
- */
- walk(nodes: Node[], callback: WalkCallback, bubble?: boolean): void;
-
- /**
- * Parse a CSS value into a series of nodes to operate on
- *
- * @param value The value to parse
- */
- new (value: string): ParsedValue;
-
- /**
- * Parse a CSS value into a series of nodes to operate on
- *
- * @param value The value to parse
- */
- (value: string): ParsedValue;
- }
-}
-
-declare const postcssValueParser: postcssValueParser.ValueParser;
-
-export = postcssValueParser;
diff --git a/assets/node_modules/postcss-value-parser/lib/index.js b/assets/node_modules/postcss-value-parser/lib/index.js
deleted file mode 100644
index f9ac0e6..0000000
--- a/assets/node_modules/postcss-value-parser/lib/index.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var parse = require("./parse");
-var walk = require("./walk");
-var stringify = require("./stringify");
-
-function ValueParser(value) {
- if (this instanceof ValueParser) {
- this.nodes = parse(value);
- return this;
- }
- return new ValueParser(value);
-}
-
-ValueParser.prototype.toString = function() {
- return Array.isArray(this.nodes) ? stringify(this.nodes) : "";
-};
-
-ValueParser.prototype.walk = function(cb, bubble) {
- walk(this.nodes, cb, bubble);
- return this;
-};
-
-ValueParser.unit = require("./unit");
-
-ValueParser.walk = walk;
-
-ValueParser.stringify = stringify;
-
-module.exports = ValueParser;
diff --git a/assets/node_modules/postcss-value-parser/lib/parse.js b/assets/node_modules/postcss-value-parser/lib/parse.js
deleted file mode 100644
index 502b5ba..0000000
--- a/assets/node_modules/postcss-value-parser/lib/parse.js
+++ /dev/null
@@ -1,304 +0,0 @@
-var openParentheses = "(".charCodeAt(0);
-var closeParentheses = ")".charCodeAt(0);
-var singleQuote = "'".charCodeAt(0);
-var doubleQuote = '"'.charCodeAt(0);
-var backslash = "\\".charCodeAt(0);
-var slash = "/".charCodeAt(0);
-var comma = ",".charCodeAt(0);
-var colon = ":".charCodeAt(0);
-var star = "*".charCodeAt(0);
-var uLower = "u".charCodeAt(0);
-var uUpper = "U".charCodeAt(0);
-var plus = "+".charCodeAt(0);
-var isUnicodeRange = /^[a-f0-9?-]+$/i;
-
-module.exports = function(input) {
- var tokens = [];
- var value = input;
-
- var next,
- quote,
- prev,
- token,
- escape,
- escapePos,
- whitespacePos,
- parenthesesOpenPos;
- var pos = 0;
- var code = value.charCodeAt(pos);
- var max = value.length;
- var stack = [{ nodes: tokens }];
- var balanced = 0;
- var parent;
-
- var name = "";
- var before = "";
- var after = "";
-
- while (pos < max) {
- // Whitespaces
- if (code <= 32) {
- next = pos;
- do {
- next += 1;
- code = value.charCodeAt(next);
- } while (code <= 32);
- token = value.slice(pos, next);
-
- prev = tokens[tokens.length - 1];
- if (code === closeParentheses && balanced) {
- after = token;
- } else if (prev && prev.type === "div") {
- prev.after = token;
- } else if (
- code === comma ||
- code === colon ||
- (code === slash &&
- value.charCodeAt(next + 1) !== star &&
- (!parent ||
- (parent && parent.type === "function" && parent.value !== "calc")))
- ) {
- before = token;
- } else {
- tokens.push({
- type: "space",
- sourceIndex: pos,
- value: token
- });
- }
-
- pos = next;
-
- // Quotes
- } else if (code === singleQuote || code === doubleQuote) {
- next = pos;
- quote = code === singleQuote ? "'" : '"';
- token = {
- type: "string",
- sourceIndex: pos,
- quote: quote
- };
- do {
- escape = false;
- next = value.indexOf(quote, next + 1);
- if (~next) {
- escapePos = next;
- while (value.charCodeAt(escapePos - 1) === backslash) {
- escapePos -= 1;
- escape = !escape;
- }
- } else {
- value += quote;
- next = value.length - 1;
- token.unclosed = true;
- }
- } while (escape);
- token.value = value.slice(pos + 1, next);
-
- tokens.push(token);
- pos = next + 1;
- code = value.charCodeAt(pos);
-
- // Comments
- } else if (code === slash && value.charCodeAt(pos + 1) === star) {
- token = {
- type: "comment",
- sourceIndex: pos
- };
-
- next = value.indexOf("*/", pos);
- if (next === -1) {
- token.unclosed = true;
- next = value.length;
- }
-
- token.value = value.slice(pos + 2, next);
- tokens.push(token);
-
- pos = next + 2;
- code = value.charCodeAt(pos);
-
- // Operation within calc
- } else if (
- (code === slash || code === star) &&
- parent &&
- parent.type === "function" &&
- parent.value === "calc"
- ) {
- token = value[pos];
- tokens.push({
- type: "word",
- sourceIndex: pos - before.length,
- value: token
- });
- pos += 1;
- code = value.charCodeAt(pos);
-
- // Dividers
- } else if (code === slash || code === comma || code === colon) {
- token = value[pos];
-
- tokens.push({
- type: "div",
- sourceIndex: pos - before.length,
- value: token,
- before: before,
- after: ""
- });
- before = "";
-
- pos += 1;
- code = value.charCodeAt(pos);
-
- // Open parentheses
- } else if (openParentheses === code) {
- // Whitespaces after open parentheses
- next = pos;
- do {
- next += 1;
- code = value.charCodeAt(next);
- } while (code <= 32);
- parenthesesOpenPos = pos;
- token = {
- type: "function",
- sourceIndex: pos - name.length,
- value: name,
- before: value.slice(parenthesesOpenPos + 1, next)
- };
- pos = next;
-
- if (name === "url" && code !== singleQuote && code !== doubleQuote) {
- next -= 1;
- do {
- escape = false;
- next = value.indexOf(")", next + 1);
- if (~next) {
- escapePos = next;
- while (value.charCodeAt(escapePos - 1) === backslash) {
- escapePos -= 1;
- escape = !escape;
- }
- } else {
- value += ")";
- next = value.length - 1;
- token.unclosed = true;
- }
- } while (escape);
- // Whitespaces before closed
- whitespacePos = next;
- do {
- whitespacePos -= 1;
- code = value.charCodeAt(whitespacePos);
- } while (code <= 32);
- if (parenthesesOpenPos < whitespacePos) {
- if (pos !== whitespacePos + 1) {
- token.nodes = [
- {
- type: "word",
- sourceIndex: pos,
- value: value.slice(pos, whitespacePos + 1)
- }
- ];
- } else {
- token.nodes = [];
- }
- if (token.unclosed && whitespacePos + 1 !== next) {
- token.after = "";
- token.nodes.push({
- type: "space",
- sourceIndex: whitespacePos + 1,
- value: value.slice(whitespacePos + 1, next)
- });
- } else {
- token.after = value.slice(whitespacePos + 1, next);
- }
- } else {
- token.after = "";
- token.nodes = [];
- }
- pos = next + 1;
- code = value.charCodeAt(pos);
- tokens.push(token);
- } else {
- balanced += 1;
- token.after = "";
- tokens.push(token);
- stack.push(token);
- tokens = token.nodes = [];
- parent = token;
- }
- name = "";
-
- // Close parentheses
- } else if (closeParentheses === code && balanced) {
- pos += 1;
- code = value.charCodeAt(pos);
-
- parent.after = after;
- after = "";
- balanced -= 1;
- stack.pop();
- parent = stack[balanced];
- tokens = parent.nodes;
-
- // Words
- } else {
- next = pos;
- do {
- if (code === backslash) {
- next += 1;
- }
- next += 1;
- code = value.charCodeAt(next);
- } while (
- next < max &&
- !(
- code <= 32 ||
- code === singleQuote ||
- code === doubleQuote ||
- code === comma ||
- code === colon ||
- code === slash ||
- code === openParentheses ||
- (code === star &&
- parent &&
- parent.type === "function" &&
- parent.value === "calc") ||
- (code === slash &&
- parent.type === "function" &&
- parent.value === "calc") ||
- (code === closeParentheses && balanced)
- )
- );
- token = value.slice(pos, next);
-
- if (openParentheses === code) {
- name = token;
- } else if (
- (uLower === token.charCodeAt(0) || uUpper === token.charCodeAt(0)) &&
- plus === token.charCodeAt(1) &&
- isUnicodeRange.test(token.slice(2))
- ) {
- tokens.push({
- type: "unicode-range",
- sourceIndex: pos,
- value: token
- });
- } else {
- tokens.push({
- type: "word",
- sourceIndex: pos,
- value: token
- });
- }
-
- pos = next;
- }
- }
-
- for (pos = stack.length - 1; pos; pos -= 1) {
- stack[pos].unclosed = true;
- }
-
- return stack[0].nodes;
-};
diff --git a/assets/node_modules/postcss-value-parser/lib/stringify.js b/assets/node_modules/postcss-value-parser/lib/stringify.js
deleted file mode 100644
index 5f2c845..0000000
--- a/assets/node_modules/postcss-value-parser/lib/stringify.js
+++ /dev/null
@@ -1,48 +0,0 @@
-function stringifyNode(node, custom) {
- var type = node.type;
- var value = node.value;
- var buf;
- var customResult;
-
- if (custom && (customResult = custom(node)) !== undefined) {
- return customResult;
- } else if (type === "word" || type === "space") {
- return value;
- } else if (type === "string") {
- buf = node.quote || "";
- return buf + value + (node.unclosed ? "" : buf);
- } else if (type === "comment") {
- return "/*" + value + (node.unclosed ? "" : "*/");
- } else if (type === "div") {
- return (node.before || "") + value + (node.after || "");
- } else if (Array.isArray(node.nodes)) {
- buf = stringify(node.nodes);
- if (type !== "function") {
- return buf;
- }
- return (
- value +
- "(" +
- (node.before || "") +
- buf +
- (node.after || "") +
- (node.unclosed ? "" : ")")
- );
- }
- return value;
-}
-
-function stringify(nodes, custom) {
- var result, i;
-
- if (Array.isArray(nodes)) {
- result = "";
- for (i = nodes.length - 1; ~i; i -= 1) {
- result = stringifyNode(nodes[i], custom) + result;
- }
- return result;
- }
- return stringifyNode(nodes, custom);
-}
-
-module.exports = stringify;
diff --git a/assets/node_modules/postcss-value-parser/lib/unit.js b/assets/node_modules/postcss-value-parser/lib/unit.js
deleted file mode 100644
index c349661..0000000
--- a/assets/node_modules/postcss-value-parser/lib/unit.js
+++ /dev/null
@@ -1,120 +0,0 @@
-var minus = "-".charCodeAt(0);
-var plus = "+".charCodeAt(0);
-var dot = ".".charCodeAt(0);
-var exp = "e".charCodeAt(0);
-var EXP = "E".charCodeAt(0);
-
-// Check if three code points would start a number
-// https://www.w3.org/TR/css-syntax-3/#starts-with-a-number
-function likeNumber(value) {
- var code = value.charCodeAt(0);
- var nextCode;
-
- if (code === plus || code === minus) {
- nextCode = value.charCodeAt(1);
-
- if (nextCode >= 48 && nextCode <= 57) {
- return true;
- }
-
- var nextNextCode = value.charCodeAt(2);
-
- if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) {
- return true;
- }
-
- return false;
- }
-
- if (code === dot) {
- nextCode = value.charCodeAt(1);
-
- if (nextCode >= 48 && nextCode <= 57) {
- return true;
- }
-
- return false;
- }
-
- if (code >= 48 && code <= 57) {
- return true;
- }
-
- return false;
-}
-
-// Consume a number
-// https://www.w3.org/TR/css-syntax-3/#consume-number
-module.exports = function(value) {
- var pos = 0;
- var length = value.length;
- var code;
- var nextCode;
- var nextNextCode;
-
- if (length === 0 || !likeNumber(value)) {
- return false;
- }
-
- code = value.charCodeAt(pos);
-
- if (code === plus || code === minus) {
- pos++;
- }
-
- while (pos < length) {
- code = value.charCodeAt(pos);
-
- if (code < 48 || code > 57) {
- break;
- }
-
- pos += 1;
- }
-
- code = value.charCodeAt(pos);
- nextCode = value.charCodeAt(pos + 1);
-
- if (code === dot && nextCode >= 48 && nextCode <= 57) {
- pos += 2;
-
- while (pos < length) {
- code = value.charCodeAt(pos);
-
- if (code < 48 || code > 57) {
- break;
- }
-
- pos += 1;
- }
- }
-
- code = value.charCodeAt(pos);
- nextCode = value.charCodeAt(pos + 1);
- nextNextCode = value.charCodeAt(pos + 2);
-
- if (
- (code === exp || code === EXP) &&
- ((nextCode >= 48 && nextCode <= 57) ||
- ((nextCode === plus || nextCode === minus) &&
- nextNextCode >= 48 &&
- nextNextCode <= 57))
- ) {
- pos += nextCode === plus || nextCode === minus ? 3 : 2;
-
- while (pos < length) {
- code = value.charCodeAt(pos);
-
- if (code < 48 || code > 57) {
- break;
- }
-
- pos += 1;
- }
- }
-
- return {
- number: value.slice(0, pos),
- unit: value.slice(pos)
- };
-};
diff --git a/assets/node_modules/postcss-value-parser/lib/walk.js b/assets/node_modules/postcss-value-parser/lib/walk.js
deleted file mode 100644
index 7666c5b..0000000
--- a/assets/node_modules/postcss-value-parser/lib/walk.js
+++ /dev/null
@@ -1,22 +0,0 @@
-module.exports = function walk(nodes, cb, bubble) {
- var i, max, node, result;
-
- for (i = 0, max = nodes.length; i < max; i += 1) {
- node = nodes[i];
- if (!bubble) {
- result = cb(node, i, nodes);
- }
-
- if (
- result !== false &&
- node.type === "function" &&
- Array.isArray(node.nodes)
- ) {
- walk(node.nodes, cb, bubble);
- }
-
- if (bubble) {
- cb(node, i, nodes);
- }
- }
-};
diff --git a/assets/node_modules/postcss-value-parser/package.json b/assets/node_modules/postcss-value-parser/package.json
deleted file mode 100644
index fdee637..0000000
--- a/assets/node_modules/postcss-value-parser/package.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "postcss-value-parser",
- "version": "4.0.2",
- "description": "Transforms css values and at-rule params into the tree",
- "main": "lib/index.js",
- "files": [
- "lib"
- ],
- "devDependencies": {
- "eslint": "^5.16.0",
- "husky": "^2.3.0",
- "lint-staged": "^8.1.7",
- "prettier": "^1.17.1",
- "tap-spec": "^5.0.0",
- "tape": "^4.10.2"
- },
- "scripts": {
- "lint:prettier": "prettier '**/*.js' --list-different",
- "lint:js": "eslint . --cache",
- "lint": "yarn lint:js && yarn lint:prettier",
- "pretest": "yarn lint",
- "test": "tape test/*.js | tap-spec"
- },
- "eslintConfig": {
- "env": {
- "es6": true,
- "node": true
- },
- "extends": "eslint:recommended"
- },
- "lint-staged": {
- "*.js": [
- "eslint",
- "prettier --write",
- "git add"
- ]
- },
- "husky": {
- "hooks": {
- "pre-commit": "lint-staged"
- }
- },
- "author": "Bogdan Chadkin <trysound@yandex.ru>",
- "license": "MIT",
- "homepage": "https://github.com/TrySound/postcss-value-parser",
- "repository": {
- "type": "git",
- "url": "https://github.com/TrySound/postcss-value-parser.git"
- },
- "keywords": [
- "postcss",
- "value",
- "parser"
- ],
- "bugs": {
- "url": "https://github.com/TrySound/postcss-value-parser/issues"
- }
-}
diff --git a/assets/node_modules/postcss/CHANGELOG.md b/assets/node_modules/postcss/CHANGELOG.md
deleted file mode 100644
index 39690ed..0000000
--- a/assets/node_modules/postcss/CHANGELOG.md
+++ /dev/null
@@ -1,641 +0,0 @@
-# Change Log
-This project adheres to [Semantic Versioning](http://semver.org/).
-
-## 7.0.26
-* Fix TypeScript definition (by Natalie Weizenbaum).
-
-## 7.0.25
-* Fix absolute path support for Windows (by Tom Raviv).
-
-## 7.0.24
-* Fix TypeScript definition (by Keith Cirkel).
-
-## 7.0.23
-* Update `Processor#version`.
-
-## 7.0.22
-* Add funding link for `npm fund`.
-
-## 7.0.21
-* Revert passing `nodes` property to node constructor.
-
-## 7.0.20
-* Allow to pass PostCSS’s nodes in `nodes` property to node constructor.
-
-## 7.0.19
-* Fix passing `nodes` property to node constructor.
-
-## 7.0.18
-* Fix TypeScript type definitions (by Jan Buschtöns).
-
-## 7.0.17
-* Fix TypeScript type definitions (by Bob Matcuk and Jan Buschtöns).
-
-## 7.0.16
-* Revert Custom Properties fix until PostCSS 8.0.
-
-## 7.0.15
-* Fix Custom Properties support (by Ivan Solovev).
-
-## 7.0.14
-* Fix tokenizer for `postcss-less` (by Matt Lyons).
-
-## 7.0.13
-* Fix parsing regression in 7.0.12 for comments between property and value.
-
-## 7.0.12
-* Fix parsing broken CSS with two words in declaration property.
-
-## 7.0.11
-* Fix source maps on declaration semicolon (by Niklas Mischkulnig).
-
-## 7.0.10
-* Fix source maps (by Niklas Mischkulnig).
-
-## 7.0.9
-* Increase stringifing performance for non-raws AST.
-
-## 7.0.8
-* Fix TypeScript definitions (by Ankur Oberoi).
-* Use `support-colors` 6.0.
-
-## 7.0.7
-* Extend `Error` in `CssSyntaxError`.
-
-## 7.0.6
-* Fix parsing files with BOM (by Veniamin Krol).
-
-## 7.0.5
-* Reduce npm package size (by Gilad Peleg).
-
-## 7.0.4
-* Fix safe parser regression.
-
-## 7.0.3
-* Fix tokenizer extendability (by Andrew Powell).
-* Reduce npm package size.
-
-## 7.0.2
-* Fix warning text (by Rui Pedro M Lima).
-
-## 7.0.1
-* Fix JSDoc (by Steven Lambert).
-
-## 7.0 “President Amy”
-* Remove Node.js 9 and Node.js 4 support.
-* Remove IE and “dead” browsers support for client-side Babel transpiling.
-* Add CSS position on error happened inside `walk()` (by Nikhil Gaba).
-* Add `LazyResult#finally` (by Igor Kamyshev).
-* Add warning on calling PostCSS without plugins and syntax options.
-* Reduce client-side size.
-
-## 6.0.23
-* Fix parsing nested at-rules without semicolon, params, and spaces.
-* Fix docs (by Kevin Schiffer and Pat Cavit).
-
-## 6.0.22
-* Fix `Node#prev` and `Node#next` on missed parent.
-
-## 6.0.21
-* Rename Chinese docs to fix `yarnpkg.com` issue.
-
-## 6.0.20
-* Better error message on `null` as input CSS.
-
-## 6.0.19
-* Fix TypeScript definitions for source maps (by Oleh Kuchuk).
-* Fix `source` field in TypeScript definitions (by Sylvain Pollet-Villard).
-
-## 6.0.18
-* Use primitive object in TypeScript definitions (by Sylvain Pollet-Villard).
-
-## 6.0.17
-* Fix parsing comment in selector between word tokens (by Oleh Kuchuk).
-
-## 6.0.16
-* Fix warning text (by Michael Keller).
-
-## 6.0.15
-* Add warning about missed `from` option on `process().then()` call.
-* Add IE 10 support.
-
-## 6.0.14
-* Fix TypeScript definitions (by Jed Mao).
-
-## 6.0.13
-* Fix TypeScript definitions for case of multiple PostCSS versions
- in `node_modules` (by Chris Eppstein).
-* Use `source-map` 0.6.
-
-## 6.0.12
-* Don’t copy `*` hack to declaration indent.
-
-## 6.0.11
-* Add upper case `!IMPORTANT` support.
-
-## 6.0.10
-* Reduce PostCSS size in webpack bundle.
-
-## 6.0.9
-* Improve error message for plugin with old PostCSS (by Igor Adamenko).
-
-## 6.0.8
-* Fix Node.js 4.2.2 support.
-
-## 6.0.7
-* Fix base64 decoding for old Node.js and browser.
-
-## 6.0.6
-* Fix `end` position in at-rule without semicolon (by Oleh Kuchuk).
-
-## 6.0.5
-* Move Babel config from `package.json` for `node_modules` compiling cases.
-
-## 6.0.4
-* Fix parsing `;;` after rules.
-* Use Chalk 2.0.
-
-## 6.0.3
-* Fix escape sequences parsing (by Oleh Kuchuk).
-* Added ability to force disable colors with an environment variable.
-* Improved color detection of some terminal apps.
-
-## 6.0.2
-* Keep `raws.before` on moving `Root` children to new `Root`.
-
-## 6.0.1
-* Fix parser extensibility to use it in Safe Parser.
-
-## 6.0 “Marquis Orias”
-* Remove node.js 0.12 support.
-* Remove deprecated method from PostCSS 4.
-* Insert methods remove child from previous parent, instead of closing.
-* Insert methods and cloning doesn’t clean `raws` anymore.
-* Methods `moveTo`, `moveAfter`, `moveBefore` were deprecated.
-* Options was changed in `Plugin#process(css, processOptions, pluginOptions)`.
-* Add stream parser to reduce memory usage (by Oleh Kuchuk).
-* Add `before()`/`after()` shortcuts for `node.parent.insertBefore(node, x)`.
-* Add `Rule#raws.ownSemicolon` for semicolon after templates for `@apply`.
-* Use `babel-preset-env` to compile npm package.
-* Remove `js-base64` from dependencies (by Roman Dvornov).
-* Fix error message on single `:` in CSS.
-* Move tests to Jest.
-* Clean up test (by Gabriel Kalani).
-
-## 5.2.18
-* Fix TypeScript definitions for case of multiple PostCSS versions
- in `node_modules` (by Chris Eppstein).
-
-## 5.2.17
-* Add `postcss-sass` suggestion to syntax error on `.sass` input.
-
-## 5.2.16
-* Better error on wrong argument in node constructor.
-
-## 5.2.15
-* Fix TypeScript definitions (by bumbleblym).
-
-## 5.2.14
-* Fix browser bundle building in webpack (by janschoenherr).
-
-## 5.2.13
-* Do not add comment to important raws.
-* Fix JSDoc (by Dmitry Semigradsky).
-
-## 5.2.12
-* Fix typo in deprecation message (by Garet McKinley).
-
-## 5.2.11
-* Fix TypeScript definitions (by Jed Mao).
-
-## 5.2.10
-* Fix TypeScript definitions (by Jed Mao).
-
-## 5.2.9
-* Update TypeScript definitions (by Jed Mao).
-
-## 5.2.8
-* Fix error message (by Ben Briggs).
-
-## 5.2.7
-* Better error message on syntax object in plugins list.
-
-## 5.2.6
-* Fix `postcss.vendor` for values with spaces (by 刘祺).
-
-## 5.2.5
-* Better error message on unclosed string (by Ben Briggs).
-
-## 5.2.4
-* Improve terminal CSS syntax highlight (by Simon Lydell).
-
-## 5.2.3
-* Better color highlight in syntax error code frame.
-* Fix color highlight support in old systems.
-
-## 5.2.2
-* Update `Processor#version`.
-
-## 5.2.1
-* Fix source map path for CSS without `from` option (by Michele Locati).
-
-## 5.2 “Duke Vapula”
-* Add syntax highlight to code frame in syntax error (by Andrey Popp).
-* Use Babel code frame style and size in syntax error.
-* Add `[` and `]` tokens to parse `[attr=;] {}` correctly.
-* Add `ignoreErrors` options to tokenizer (by Andrey Popp).
-* Fix error position on tab indent (by Simon Lydell).
-
-## 5.1.2
-* Suggests SCSS/Less parsers on parse errors depends on file extension.
-
-## 5.1.1
-* Fix TypeScript definitions (by Efremov Alexey).
-
-## 5.1 “King and President Zagan”
-* Add URI in source map support (by Mark Finger).
-* Add `map.from` option (by Mark Finger).
-* Add `<no source>` mappings for nodes without source (by Bogdan Chadkin).
-* Add function value support to `map.prev` option (by Chris Montoro).
-* Add declaration value type check in shortcut creating (by 刘祺).
-* `Result#warn` now returns new created warning.
-* Don’t call plugin creator in `postcss.plugin` call.
-* Add source maps to PostCSS ES5 build.
-* Add JSDoc to PostCSS classes.
-* Clean npm package from unnecessary docs.
-
-## 5.0.21
-* Fix support with input source mao with `utf8` encoding name.
-
-## 5.0.20
-* Fix between raw value parsing (by David Clark).
-* Update TypeScript definitions (by Jed Mao).
-* Clean fake node.source after `append(string)`.
-
-## 5.0.19
-* Fix indent-based syntaxes support.
-
-## 5.0.18
-* Parse new lines according W3C CSS syntax specification.
-
-## 5.0.17
-* Fix options argument in `Node#warn` (by Ben Briggs).
-* Fix TypeScript definitions (by Jed Mao).
-
-## 5.0.16
-* Fix CSS syntax error position on unclosed quotes.
-
-## 5.0.15
-* Fix `Node#clone()` on `null` value somewhere in node.
-
-## 5.0.14
-* Allow to use PostCSS in webpack bundle without JSON loader.
-
-## 5.0.13
-* Fix `index` and `word` options in `Warning#toString` (by Bogdan Chadkin).
-* Fix input source content loading in errors.
-* Fix map options on using `LazyResult` as input CSS.
-* 100% test coverage.
-* Use Babel 6.
-
-## 5.0.12
-* Allow passing a previous map with no mappings (by Andreas Lind).
-
-## 5.0.11
-* Increase plugins performance by 1.5 times.
-
-## 5.0.10
-* Fix warning from nodes without source.
-
-## 5.0.9
-* Fix source map type detection (by @asan).
-
-## 5.0.8
-* Fixed a missed step in `5.0.7` that caused the module to be published as
- ES6 code.
-
-## 5.0.7
-* PostCSS now requires that node 0.12 is installed via the engines property
- in package.json (by Howard Zuo).
-
-## 5.0.6
-* Fix parsing nested at-rule without semicolon (by Matt Drake).
-* Trim `Declaration#value` (by Bogdan Chadkin).
-
-## 5.0.5
-* Fix multi-tokens property parsing (by Matt Drake).
-
-## 5.0.4
-* Fix start position in `Root#source`.
-* Fix source map annotation, when CSS uses `\r\n` (by Mohammad Younes).
-
-## 5.0.3
-* Fix `url()` parsing.
-* Fix using `selectors` in `Rule` constructor.
-* Add start source to `Root` node.
-
-## 5.0.2
-* Fix `remove(index)` to be compatible with 4.x plugin.
-
-## 5.0.1
-* Fix PostCSS 4.x plugins compatibility.
-* Fix type definition loading (by Jed Mao).
-
-## 5.0 “President Valac”
-* Remove `safe` option. Move Safe Parser to separate project.
-* `Node#toString` does not include `before` for root nodes.
-* Remove plugin returning `Root` API.
-* Remove Promise polyfill for node.js 0.10.
-* Deprecate `eachInside`, `eachDecl`, `eachRule`, `eachAtRule` and `eachComment`
- in favor of `walk`, `walkDecls`, `walkRules`, `walkAtRules` and `walkComments`
- (by Jed Mao).
-* Deprecate `Container#remove` and `Node#removeSelf`
- in favor of `Container#removeChild` and `Node#remove` (by Ben Briggs).
-* Deprecate `Node#replace` in favor of `replaceWith` (by Ben Briggs).
-* Deprecate raw properties in favor of `Node#raws` object.
-* Deprecate `Node#style` in favor of `raw`.
-* Deprecate `CssSyntaxError#generated` in favor of `input`.
-* Deprecate `Node#cleanStyles` in favor of `cleanRaws`.
-* Deprecate `Root#prevMap` in favor of `Root.source.input.map`.
-* Add `syntax`, `parser` and `stringifier` options for Custom Syntaxes.
-* Add stringifier option to `Node#toString`.
-* Add `Result#content` alias for non-CSS syntaxes.
-* Add `plugin.process(css)` shortcut to every plugin function (by Ben Briggs).
-* Add multiple nodes support to insert methods (by Jonathan Neal).
-* Add `Node#warn` shortcut (by Ben Briggs).
-* Add `word` and `index` options to errors and warnings (by David Clark).
-* Add `line`, `column` properties to `Warning`.
-* Use `supports-color` library to detect color support in error output.
-* Add type definitions for TypeScript plugin developers (by Jed Mao).
-* `Rule#selectors` setter detects separators.
-* Add `postcss.stringify` method.
-* Throw descriptive errors for incorrectly formatted plugins.
-* Add docs to npm release.
-* Fix `url()` parsing.
-* Fix Windows support (by Jed Mao).
-
-## 4.1.16
-* Fix errors without stack trace.
-
-## 4.1.15
-* Allow asynchronous plugins to change processor plugins list (by Ben Briggs).
-
-## 4.1.14
-* Fix for plugins packs defined by `postcss.plugin`.
-
-## 4.1.13
-* Fix input inlined source maps with UTF-8 encoding.
-
-## 4.1.12
-* Update Promise polyfill.
-
-## 4.1.11
-* Fix error message on wrong plugin format.
-
-## 4.1.10
-* Fix Promise behavior on sync plugin errors.
-* Automatically fill `plugin` field in `CssSyntaxError`.
-* Fix warning message (by Ben Briggs).
-
-## 4.1.9
-* Speed up `node.clone()`.
-
-## 4.1.8
-* Accepts `Processor` instance in `postcss()` constructor too.
-
-## 4.1.7
-* Speed up `postcss.list` (by Bogdan Chadkin).
-
-## 4.1.6
-* Fix Promise behavior on parsing error.
-
-## 4.1.5
-* Parse at-words in declaration values.
-
-## 4.1.4
-* Fix Promise polyfill dependency (by Anton Yakushev and Matija Marohnić).
-
-## 4.1.3
-* Add Promise polyfill for node.js 0.10 and IE.
-
-## 4.1.2
-* List helpers can be accessed independently `var space = postcss.list.space`.
-
-## 4.1.1
-* Show deprecated message only once.
-
-## 4.1 “Marquis Andras”
-* Asynchronous plugin support.
-* Add warnings from plugins and `Result#messages`.
-* Add `postcss.plugin()` to create plugins with a standard API.
-* Insert nodes by CSS string.
-* Show version warning message on error from an outdated plugin.
-* Send `Result` instance to plugins as the second argument.
-* Add `CssSyntaxError#plugin`.
-* Add `CssSyntaxError#showSourceCode()`.
-* Add `postcss.list` and `postcss.vendor` aliases.
-* Add `Processor#version`.
-* Parse wrong closing bracket.
-* Parse `!important` statement with spaces and comments inside (by Ben Briggs).
-* Throw an error on declaration without `prop` or `value` (by Philip Peterson).
-* Fix source map mappings position.
-* Add indexed source map support.
-* Always set `error.generated`.
-* Clean all source map annotation comments.
-
-## 4.0.6
-* Remove `babel` from released package dependencies (by Andres Suarez).
-
-## 4.0.5
-* Fix error message on double colon in declaration.
-
-## 4.0.4
-* Fix indent detection in some rare cases.
-
-## 4.0.3
-* Faster API with 6to5 Loose mode.
-* Fix indexed source maps support.
-
-## 4.0.2
-* Do not copy IE hacks to code style.
-
-## 4.0.1
-* Add `source.input` to `Root` too.
-
-## 4.0 “Duke Flauros”
-* Rename `Container#childs` to `nodes`.
-* Rename `PostCSS#processors` to `plugins`.
-* Add `Node#replaceValues()` method.
-* Add `Node#moveTo()`, `moveBefore()` and `moveAfter()` methods.
-* Add `Node#cloneBefore()` and `cloneAfter()` shortcuts.
-* Add `Node#next()`, `prev()` and `root()` shortcuts.
-* Add `Node#replaceWith()` method.
-* Add `Node#error()` method.
-* Add `Container#removeAll()` method.
-* Add filter argument to `eachDecl()` and `eachAtRule()`.
-* Add `Node#source.input` and move `source.file` or `source.id` to `input`.
-* Change code indent, when node was moved.
-* Better fix code style on `Rule`, `AtRule` and `Comment` nodes changes.
-* Allow to create rules and at-rules by hash shortcut in append methods.
-* Add class name to CSS syntax error output.
-
-## 3.0.7
-* Fix IE filter parsing with multiple commands.
-* Safer way to consume PostCSS object as plugin (by Maxime Thirouin).
-
-## 3.0.6
-* Fix missing semicolon when comment comes after last declaration.
-* Fix Safe Mode declaration parsing on unclosed blocks.
-
-## 3.0.5
-* Fix parser to support difficult cases with backslash escape and brackets.
-* Add `CssSyntaxError#stack` (by Maxime Thirouin).
-
-## 3.0.4
-* Fix Safe Mode on unknown word before declaration.
-
-## 3.0.3
-* Increase tokenizer speed (by Roman Dvornov).
-
-## 3.0.2
-* Fix empty comment parsing.
-* Fix `Root#normalize` in some inserts.
-
-## 3.0.1
-* Fix Rhino JS runtime support.
-* Typo in deprecated warning (by Maxime Thirouin).
-
-## 3.0 “Marquis Andrealphus”
-* New parser, which become the fastest ever CSS parser written in JavaScript.
-* Parser can now parse declarations and rules in one parent (like in `@page`)
- and nested declarations for plugins like `postcss-nested`.
-* Child nodes array is now in `childs` property, instead of `decls` and `rules`.
-* `map.inline` and `map.sourcesContent` options are now `true` by default.
-* Fix iterators (`each`, `insertAfter`) on children array changes.
-* Use previous source map to show origin source of CSS syntax error.
-* Use 6to5 ES6 compiler, instead of ES6 Transpiler.
-* Use code style for manually added rules from existing rules.
-* Use `from` option from previous source map `file` field.
-* Set `to` value to `from` if `to` option is missing.
-* Use better node source name when missing `from` option.
-* Show a syntax error when `;` is missed between declarations.
-* Allow to pass `PostCSS` instance or list of plugins to `use()` method.
-* Allow to pass `Result` instance to `process()` method.
-* Trim Unicode BOM on source maps parsing.
-* Parse at-rules without spaces like `@import"file"`.
-* Better previous `sourceMappingURL` annotation comment cleaning.
-* Do not remove previous `sourceMappingURL` comment on `map.annotation: false`.
-* Parse nameless at-rules in Safe Mode.
-* Fix source map generation for nodes without source.
-* Fix next child `before` if `Root` first child got removed.
-
-## 2.2.6
-* Fix map generation for nodes without source (by Josiah Savary).
-
-## 2.2.5
-* Fix source map with BOM marker support (by Mohammad Younes).
-* Fix source map paths (by Mohammad Younes).
-
-## 2.2.4
-* Fix `prepend()` on empty `Root`.
-
-## 2.2.3
-* Allow to use object shortcut in `use()` with functions like `autoprefixer`.
-
-## 2.2.2
-* Add shortcut to set processors in `use()` via object with `.postcss` property.
-
-## 2.2.1
-* Send `opts` from `Processor#process(css, opts)` to processors.
-
-## 2.2 “Marquis Cimeies”
-* Use GNU style syntax error messages.
-* Add `Node#replace` method.
-* Add `CssSyntaxError#reason` property.
-
-## 2.1.2
-* Fix UTF-8 support in inline source map.
-* Fix source map `sourcesContent` if there is no `from` and `to` options.
-
-## 2.1.1
-* Allow to miss `to` and `from` options for inline source maps.
-* Add `Node#source.id` if file name is unknown.
-* Better detect splitter between rules in CSS concatenation tools.
-* Automatically clone node in insert methods.
-
-## 2.1 “King Amdusias”
-* Change Traceur ES6 compiler to ES6 Transpiler.
-* Show broken CSS line in syntax error.
-
-## 2.0 “King Belial”
-* Project was rewritten from CoffeeScript to ES6.
-* Add Safe Mode to works with live input or with hacks from legacy code.
-* More safer parser to pass all hacks from Browserhacks.com.
-* Use real properties instead of magic getter/setter for raw properties.
-
-## 1.0 “Marquis Decarabia”
-* Save previous source map for each node to support CSS concatenation
- with multiple previous maps.
-* Add `map.sourcesContent` option to add origin content to `sourcesContent`
- inside map.
-* Allow to set different place of output map in annotation comment.
-* Allow to use arrays and `Root` in `Container#append` and same methods.
-* Add `Root#prevMap` with information about previous map.
-* Allow to use latest PostCSS from GitHub by npm.
-* `Result` now is lazy and it will generate output CSS only if you use `css`
- or `map` property.
-* Use separated `map.prev` option to set previous map.
-* Rename `inlineMap` option to `map.inline`.
-* Rename `mapAnnotation` option to `map.annotation`.
-* `Result#map` now return `SourceMapGenerator` object, instead of string.
-* Run previous map autodetect only if input CSS contains annotation comment.
-* Add `map: 'inline'` shortcut for `map: { inline: true }` option.
-* `Node#source.file` now will contains absolute path.
-* Clean `Declaration#between` style on node clone.
-
-## 0.3.5
-* Allow to use `Root` or `Result` as first argument in `process()`.
-* Save parsed AST to `Result#root`.
-
-## 0.3.4
-* Better space symbol detect to read UTF-8 BOM correctly.
-
-## 0.3.3
-* Remove source map hacks by using new Mozilla’s `source-map` (by Simon Lydell).
-
-## 0.3.2
-* Add URI encoding support for inline source maps.
-
-## 0.3.1
-* Fix relative paths from previous source map.
-* Safer space split in `Rule#selectors` (by Simon Lydell).
-
-## 0.3 “Prince Seere”
-* Add `Comment` node for comments between declarations or rules.
-* Add source map annotation comment to output CSS.
-* Allow to inline source map to annotation comment by data:uri.
-* Fix source maps on Windows.
-* Fix source maps for subdirectory (by Dmitry Nikitenko and Simon Lydell).
-* Autodetect previous source map.
-* Add `first` and `last` shortcuts to container nodes.
-* Parse `!important` to separated property in `Declaration`.
-* Allow to break iteration by returning `false`.
-* Copy code style to new nodes.
-* Add `eachInside` method to recursively iterate all nodes.
-* Add `selectors` shortcut to get selectors array.
-* Add `toResult` method to `Rule` to simplify work with several input files.
-* Clean declaration’s `value`, rule’s `selector` and at-rule’s `params`
- by storing spaces in `between` property.
-
-## 0.2 “Duke Dantalion”
-* Add source map support.
-* Add shortcuts to create nodes.
-* Method `process()` now returns object with `css` and `map` keys.
-* Origin CSS file option was renamed from `file` to `from`.
-* Rename `Node#remove()` method to `removeSelf()` to fix name conflict.
-* Node source was moved to `source` property with origin file
- and node end position.
-* You can set own CSS generate function.
-
-## 0.1 “Count Andromalius”
-* Initial release.
diff --git a/assets/node_modules/postcss/LICENSE b/assets/node_modules/postcss/LICENSE
deleted file mode 100644
index da057b4..0000000
--- a/assets/node_modules/postcss/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright 2013 Andrey Sitnik <andrey@sitnik.ru>
-
-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/assets/node_modules/postcss/README.md b/assets/node_modules/postcss/README.md
deleted file mode 100644
index 5f0206a..0000000
--- a/assets/node_modules/postcss/README.md
+++ /dev/null
@@ -1,466 +0,0 @@
-# PostCSS [![Gitter][chat-img]][chat]
-
-<img align="right" width="95" height="95"
- alt="Philosopher’s stone, logo of PostCSS"
- src="http://postcss.github.io/postcss/logo.svg">
-
-[chat-img]: https://img.shields.io/badge/Gitter-Join_the_PostCSS_chat-brightgreen.svg
-[chat]: https://gitter.im/postcss/postcss
-
-PostCSS is a tool for transforming styles with JS plugins.
-These plugins can lint your CSS, support variables and mixins,
-transpile future CSS syntax, inline images, and more.
-
-PostCSS is used by industry leaders including Wikipedia, Twitter, Alibaba,
-and JetBrains. The [Autoprefixer] PostCSS plugin is one of the most popular
-CSS processors.
-
-PostCSS takes a CSS file and provides an API to analyze and modify its rules
-(by transforming them into an [Abstract Syntax Tree]).
-This API can then be used by [plugins] to do a lot of useful things,
-e.g. to find errors automatically insert vendor prefixes.
-
-**Support / Discussion:** [Gitter](https://gitter.im/postcss/postcss)<br>
-**Twitter account:** [@postcss](https://twitter.com/postcss)<br>
-**VK.com page:** [postcss](https://vk.com/postcss)<br>
-**中文翻译**: [`README-cn.md`](./README-cn.md)
-
-For PostCSS commercial support (consulting, improving the front-end culture
-of your company, PostCSS plugins), contact [Evil Martians]
-at <surrender@evilmartians.com>.
-
-[Abstract Syntax Tree]: https://en.wikipedia.org/wiki/Abstract_syntax_tree
-[Evil Martians]: https://evilmartians.com/?utm_source=postcss
-[Autoprefixer]: https://github.com/postcss/autoprefixer
-[plugins]: https://github.com/postcss/postcss#plugins
-
-<a href="https://evilmartians.com/?utm_source=postcss">
- <img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg"
- alt="Sponsored by Evil Martians" width="236" height="54">
-</a>
-
-## Plugins
-
-Currently, PostCSS has more than 200 plugins. You can find all of the plugins
-in the [plugins list] or in the [searchable catalog]. Below is a list
-of our favorite plugins — the best demonstrations of what can be built
-on top of PostCSS.
-
-If you have any new ideas, [PostCSS plugin development] is really easy.
-
-[searchable catalog]: http://postcss.parts
-[plugins list]: https://github.com/postcss/postcss/blob/master/docs/plugins.md
-
-### Solve Global CSS Problem
-
-* [`postcss-use`] allows you to explicitly set PostCSS plugins within CSS
- and execute them only for the current file.
-* [`postcss-modules`] and [`react-css-modules`] automatically isolate
- selectors within components.
-* [`postcss-autoreset`] is an alternative to using a global reset
- that is better for isolatable components.
-* [`postcss-initial`] adds `all: initial` support, which resets
- all inherited styles.
-* [`cq-prolyfill`] adds container query support, allowing styles that respond
- to the width of the parent.
-
-### Use Future CSS, Today
-
-* [`autoprefixer`] adds vendor prefixes, using data from Can I Use.
-* [`postcss-preset-env`] allows you to use future CSS features today.
-
-### Better CSS Readability
-
-* [`precss`] contains plugins for Sass-like features, like variables, nesting,
- and mixins.
-* [`postcss-sorting`] sorts the content of rules and at-rules.
-* [`postcss-utilities`] includes the most commonly used shortcuts and helpers.
-* [`short`] adds and extends numerous shorthand properties.
-
-### Images and Fonts
-
-* [`postcss-assets`] inserts image dimensions and inlines files.
-* [`postcss-sprites`] generates image sprites.
-* [`font-magician`] generates all the `@font-face` rules needed in CSS.
-* [`postcss-inline-svg`] allows you to inline SVG and customize its styles.
-* [`postcss-write-svg`] allows you to write simple SVG directly in your CSS.
-
-### Linters
-
-* [`stylelint`] is a modular stylesheet linter.
-* [`stylefmt`] is a tool that automatically formats CSS
- according `stylelint` rules.
-* [`doiuse`] lints CSS for browser support, using data from Can I Use.
-* [`colorguard`] helps you maintain a consistent color palette.
-
-### Other
-
-* [`postcss-rtl`] combines both-directional (left-to-right and right-to-left) styles in one CSS file.
-* [`cssnano`] is a modular CSS minifier.
-* [`lost`] is a feature-rich `calc()` grid system.
-* [`rtlcss`] mirrors styles for right-to-left locales.
-
-[PostCSS plugin development]: https://github.com/postcss/postcss/blob/master/docs/writing-a-plugin.md
-[`postcss-inline-svg`]: https://github.com/TrySound/postcss-inline-svg
-[`postcss-preset-env`]: https://github.com/jonathantneal/postcss-preset-env
-[`react-css-modules`]: https://github.com/gajus/react-css-modules
-[`postcss-autoreset`]: https://github.com/maximkoretskiy/postcss-autoreset
-[`postcss-write-svg`]: https://github.com/jonathantneal/postcss-write-svg
-[`postcss-utilities`]: https://github.com/ismamz/postcss-utilities
-[`postcss-initial`]: https://github.com/maximkoretskiy/postcss-initial
-[`postcss-sprites`]: https://github.com/2createStudio/postcss-sprites
-[`postcss-modules`]: https://github.com/outpunk/postcss-modules
-[`postcss-sorting`]: https://github.com/hudochenkov/postcss-sorting
-[`postcss-assets`]: https://github.com/assetsjs/postcss-assets
-[`font-magician`]: https://github.com/jonathantneal/postcss-font-magician
-[`autoprefixer`]: https://github.com/postcss/autoprefixer
-[`cq-prolyfill`]: https://github.com/ausi/cq-prolyfill
-[`postcss-rtl`]: https://github.com/vkalinichev/postcss-rtl
-[`postcss-use`]: https://github.com/postcss/postcss-use
-[`css-modules`]: https://github.com/css-modules/css-modules
-[`colorguard`]: https://github.com/SlexAxton/css-colorguard
-[`stylelint`]: https://github.com/stylelint/stylelint
-[`stylefmt`]: https://github.com/morishitter/stylefmt
-[`cssnano`]: http://cssnano.co
-[`precss`]: https://github.com/jonathantneal/precss
-[`doiuse`]: https://github.com/anandthakker/doiuse
-[`rtlcss`]: https://github.com/MohammadYounes/rtlcss
-[`short`]: https://github.com/jonathantneal/postcss-short
-[`lost`]: https://github.com/peterramsing/lost
-
-## Syntaxes
-
-PostCSS can transform styles in any syntax, not just CSS.
-If there is not yet support for your favorite syntax,
-you can write a parser and/or stringifier to extend PostCSS.
-
-* [`sugarss`] is a indent-based syntax like Sass or Stylus.
-* [`postcss-syntax`] switch syntax automatically by file extensions.
-* [`postcss-html`] parsing styles in `<style>` tags of HTML-like files.
-* [`postcss-markdown`] parsing styles in code blocks of Markdown files.
-* [`postcss-jsx`] parsing CSS in template / object literals of source files.
-* [`postcss-styled`] parsing CSS in template literals of source files.
-* [`postcss-scss`] allows you to work with SCSS
- *(but does not compile SCSS to CSS)*.
-* [`postcss-sass`] allows you to work with Sass
- *(but does not compile Sass to CSS)*.
-* [`postcss-less`] allows you to work with Less
- *(but does not compile LESS to CSS)*.
-* [`postcss-less-engine`] allows you to work with Less
- *(and DOES compile LESS to CSS using true Less.js evaluation)*.
-* [`postcss-js`] allows you to write styles in JS or transform
- React Inline Styles, Radium or JSS.
-* [`postcss-safe-parser`] finds and fixes CSS syntax errors.
-* [`midas`] converts a CSS string to highlighted HTML.
-
-[`postcss-less-engine`]: https://github.com/Crunch/postcss-less
-[`postcss-safe-parser`]: https://github.com/postcss/postcss-safe-parser
-[`postcss-syntax`]: https://github.com/gucong3000/postcss-syntax
-[`postcss-html`]: https://github.com/gucong3000/postcss-html
-[`postcss-markdown`]: https://github.com/gucong3000/postcss-markdown
-[`postcss-jsx`]: https://github.com/gucong3000/postcss-jsx
-[`postcss-styled`]: https://github.com/gucong3000/postcss-styled
-[`postcss-scss`]: https://github.com/postcss/postcss-scss
-[`postcss-sass`]: https://github.com/AleshaOleg/postcss-sass
-[`postcss-less`]: https://github.com/webschik/postcss-less
-[`postcss-js`]: https://github.com/postcss/postcss-js
-[`sugarss`]: https://github.com/postcss/sugarss
-[`midas`]: https://github.com/ben-eb/midas
-
-## Articles
-
-* [Some things you may think about PostCSS… and you might be wrong](http://julian.io/some-things-you-may-think-about-postcss-and-you-might-be-wrong)
-* [What PostCSS Really Is; What It Really Does](http://davidtheclark.com/its-time-for-everyone-to-learn-about-postcss)
-* [PostCSS Guides](http://webdesign.tutsplus.com/series/postcss-deep-dive--cms-889)
-
-More articles and videos you can find on [awesome-postcss](https://github.com/jjaderg/awesome-postcss) list.
-
-## Books
-
-* [Mastering PostCSS for Web Design](https://www.packtpub.com/web-development/mastering-postcss-web-design) by Alex Libby, Packt. (June 2016)
-
-## Usage
-
-You can start using PostCSS in just two steps:
-
-1. Find and add PostCSS extensions for your build tool.
-2. [Select plugins] and add them to your PostCSS process.
-
-[Select plugins]: http://postcss.parts
-
-### CSS-in-JS
-
-The best way to use PostCSS with CSS-in-JS is [`astroturf`].
-Add its loader to your `webpack.config.js`:
-
-```js
-module.exports = {
- module: {
- rules: [
- {
- test: /\.css$/,
- use: ['style-loader', 'postcss-loader'],
- },
- {
- test: /\.jsx?$/,
- use: ['babel-loader', 'astroturf/loader'],
- }
- ]
- }
-}
-```
-
-Then create `postcss.config.js`:
-
-```js
-module.exports = {
- plugins: [
- require('autoprefixer'),
- require('postcss-nested')
- ]
-}
-```
-
-[`astroturf`]: https://github.com/4Catalyzer/astroturf
-
-### Parcel
-
-[Parcel] has built-in PostCSS support. It already uses Autoprefixer
-and cssnano. If you want to change plugins, create `postcss.config.js`
-in project’s root:
-
-```js
-module.exports = {
- plugins: [
- require('autoprefixer'),
- require('postcss-nested')
- ]
-}
-```
-
-Parcel will even automatically install these plugins for you.
-
-> Please, be aware of [the several issues in Version 1](https://github.com/parcel-bundler/parcel/labels/CSS%20Preprocessing). Notice, [Version 2](https://github.com/parcel-bundler/parcel/projects/5) may resolve the issues via [issue #2157](https://github.com/parcel-bundler/parcel/issues/2157).
-
-[Parcel]: https://parceljs.org
-
-### Webpack
-
-Use [`postcss-loader`] in `webpack.config.js`:
-
-```js
-module.exports = {
- module: {
- rules: [
- {
- test: /\.css$/,
- exclude: /node_modules/,
- use: [
- {
- loader: 'style-loader',
- },
- {
- loader: 'css-loader',
- options: {
- importLoaders: 1,
- }
- },
- {
- loader: 'postcss-loader'
- }
- ]
- }
- ]
- }
-}
-```
-
-Then create `postcss.config.js`:
-
-```js
-module.exports = {
- plugins: [
- require('precss'),
- require('autoprefixer')
- ]
-}
-```
-
-[`postcss-loader`]: https://github.com/postcss/postcss-loader
-
-### Gulp
-
-Use [`gulp-postcss`] and [`gulp-sourcemaps`].
-
-```js
-gulp.task('css', () => {
- const postcss = require('gulp-postcss')
- const sourcemaps = require('gulp-sourcemaps')
-
- return gulp.src('src/**/*.css')
- .pipe( sourcemaps.init() )
- .pipe( postcss([ require('precss'), require('autoprefixer') ]) )
- .pipe( sourcemaps.write('.') )
- .pipe( gulp.dest('build/') )
-})
-```
-
-[`gulp-sourcemaps`]: https://github.com/floridoo/gulp-sourcemaps
-[`gulp-postcss`]: https://github.com/postcss/gulp-postcss
-
-### npm run / CLI
-
-To use PostCSS from your command-line interface or with npm scripts
-there is [`postcss-cli`].
-
-```sh
-postcss --use autoprefixer -c options.json -o main.css css/*.css
-```
-
-[`postcss-cli`]: https://github.com/postcss/postcss-cli
-
-### Browser
-
-If you want to compile CSS string in browser (for instance, in live edit
-tools like CodePen), just use [Browserify] or [webpack]. They will pack
-PostCSS and plugins files into a single file.
-
-To apply PostCSS plugins to React Inline Styles, JSS, Radium
-and other [CSS-in-JS], you can use [`postcss-js`] and transforms style objects.
-
-```js
-var postcss = require('postcss-js')
-var prefixer = postcss.sync([ require('autoprefixer') ])
-
-prefixer({ display: 'flex' }) //=> { display: ['-webkit-box', '-webkit-flex', '-ms-flexbox', 'flex'] }
-```
-
-[`postcss-js`]: https://github.com/postcss/postcss-js
-[Browserify]: http://browserify.org/
-[CSS-in-JS]: https://github.com/MicheleBertoli/css-in-js
-[webpack]: https://webpack.github.io/
-
-### Runners
-
-* **Grunt**: [`grunt-postcss`](https://github.com/nDmitry/grunt-postcss)
-* **HTML**: [`posthtml-postcss`](https://github.com/posthtml/posthtml-postcss)
-* **Stylus**: [`poststylus`](https://github.com/seaneking/poststylus)
-* **Rollup**: [`rollup-plugin-postcss`](https://github.com/egoist/rollup-plugin-postcss)
-* **Brunch**: [`postcss-brunch`](https://github.com/brunch/postcss-brunch)
-* **Broccoli**: [`broccoli-postcss`](https://github.com/jeffjewiss/broccoli-postcss)
-* **Meteor**: [`postcss`](https://atmospherejs.com/juliancwirko/postcss)
-* **ENB**: [`enb-postcss`](https://github.com/awinogradov/enb-postcss)
-* **Taskr**: [`taskr-postcss`](https://github.com/lukeed/taskr/tree/master/packages/postcss)
-* **Start**: [`start-postcss`](https://github.com/start-runner/postcss)
-* **Connect/Express**: [`postcss-middleware`](https://github.com/jedmao/postcss-middleware)
-
-### JS API
-
-For other environments, you can use the JS API:
-
-```js
-const autoprefixer = require('autoprefixer')
-const postcss = require('postcss')
-const precss = require('precss')
-const fs = require('fs')
-
-fs.readFile('src/app.css', (err, css) => {
- postcss([precss, autoprefixer])
- .process(css, { from: 'src/app.css', to: 'dest/app.css' })
- .then(result => {
- fs.writeFile('dest/app.css', result.css, () => true)
- if ( result.map ) {
- fs.writeFile('dest/app.css.map', result.map, () => true)
- }
- })
-})
-```
-
-Read the [PostCSS API documentation] for more details about the JS API.
-
-All PostCSS runners should pass [PostCSS Runner Guidelines].
-
-[PostCSS Runner Guidelines]: https://github.com/postcss/postcss/blob/master/docs/guidelines/runner.md
-[PostCSS API documentation]: http://api.postcss.org/postcss.html
-
-### Options
-
-Most PostCSS runners accept two parameters:
-
-* An array of plugins.
-* An object of options.
-
-Common options:
-
-* `syntax`: an object providing a syntax parser and a stringifier.
-* `parser`: a special syntax parser (for example, [SCSS]).
-* `stringifier`: a special syntax output generator (for example, [Midas]).
-* `map`: [source map options].
-* `from`: the input file name (most runners set it automatically).
-* `to`: the output file name (most runners set it automatically).
-
-[source map options]: https://github.com/postcss/postcss/blob/master/docs/source-maps.md
-[Midas]: https://github.com/ben-eb/midas
-[SCSS]: https://github.com/postcss/postcss-scss
-
-### Treat Warnings as Errors
-
-In some situations it might be helpful to fail the build on any warning
-from PostCSS or one of its plugins. This guarantees that no warnings
-go unnoticed, and helps to avoid bugs. While there is no option to enable
-treating warnings as errors, it can easily be done
-by adding `postcss-fail-on-warn` plugin in the end of PostCSS plugins:
-
-```js
-module.exports = {
- plugins: [
- require('autoprefixer'),
- require('postcss-fail-on-warn')
- ]
-}
-```
-
-
-## Editors & IDE Integration
-
-### VS Code
-
-* [`csstools.postcss`] adds support for PostCSS, `postcss-preset-env`
- and CSS Modules.
-
-[`csstools.postcss`]: https://marketplace.visualstudio.com/items?itemName=csstools.postcss
-
-### Atom
-
-* [`language-postcss`] adds PostCSS and [SugarSS] highlight.
-* [`source-preview-postcss`] previews your output CSS in a separate, live pane.
-
-[SugarSS]: https://github.com/postcss/sugarss
-
-### Sublime Text
-
-* [`Syntax-highlighting-for-PostCSS`] adds PostCSS highlight.
-
-[`Syntax-highlighting-for-PostCSS`]: https://github.com/hudochenkov/Syntax-highlighting-for-PostCSS
-[`source-preview-postcss`]: https://atom.io/packages/source-preview-postcss
-[`language-postcss`]: https://atom.io/packages/language-postcss
-
-### Vim
-
-* [`postcss.vim`] adds PostCSS highlight.
-
-[`postcss.vim`]: https://github.com/stephenway/postcss.vim
-
-### WebStorm
-
-WebStorm 2016.3 [has] built-in PostCSS support.
-
-[has]: https://blog.jetbrains.com/webstorm/2016/08/webstorm-2016-3-early-access-preview/
-
-
-## Security Contact
-
-To report a security vulnerability, please use the [Tidelift security contact].
-Tidelift will coordinate the fix and disclosure.
-
-[Tidelift security contact]: https://tidelift.com/security
diff --git a/assets/node_modules/postcss/docs/architecture.md b/assets/node_modules/postcss/docs/architecture.md
deleted file mode 100644
index 266cd39..0000000
--- a/assets/node_modules/postcss/docs/architecture.md
+++ /dev/null
@@ -1,156 +0,0 @@
-## PostCSS Architecture
-
-General overview of the PostCSS architecture.
-It can be useful for everyone who wishes to contribute to the core or develop a better understanding of the tool.
-
-**Table of Contents**
-
-- [Overview](#overview)
-- [Workflow](#workflow)
-- [Core Structures](#core-structures)
- * [Tokenizer](#tokenizer--libtokenizees6-)
- * [Parser](#parser--libparsees6-libparseres6-)
- * [Processor](#processor--libprocessores6-)
- * [Stringifier](#stringifier--libstringifyes6-libstringifieres6-)
-- [API](#api-reference)
-
-### Overview
-
-> This section describes ideas lying behind PostCSS
-
-Before diving deeper into the development of PostCSS let's briefly describe what is PostCSS and what is not.
-
-**PostCSS**
-
-- *is **NOT** a style preprocessor like `Sass` or `Less`.*
-
- It does not define a custom syntax and semantics, it's not actually a language.
- PostCSS works with CSS and can be easily integrated with the tools described above. That being said any valid CSS can be processed by PostCSS.
-
-- *is a tool for CSS syntax transformations*
-
- It allows you to define custom CSS like syntax that could be understandable and transformed by plugins. That being said PostCSS is not strictly about CSS spec but about syntax definition manner of CSS. In such a way you can define custom syntax constructs like at-rule, that could be very helpful for tools build around PostCSS. PostCSS plays the role of a framework for building outstanding tools for CSS manipulations.
-
-- *is a big player in CSS ecosystem*
-
- A Large amount of lovely tools like `Autoprefixer`, `Stylelint`, `CSSnano` were built on PostCSS ecosystem. There is a big chance that you already use it implicitly, just check your `node_modules` :smiley:
-
-### Workflow
-
-This is a high-level overview of the whole PostCSS workflow
-
-<img width="300" src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/aa/PostCSS_scheme.svg/512px-PostCSS_scheme.svg.png" alt="workflow">
-
-As you can see from the diagram above, PostCSS architecture is pretty straightforward but some parts of it could be misunderstood.
-
-You can see a part called *Parser*, this construct will be described in details later on, just for now think about it as a structure that can understand your CSS like syntax and create an object representation of it.
-
-That being said, there are few ways to write a parser.
-
- - *Write a single file with string to AST transformation*
-
- This method is quite popular, for example, the [Rework analyzer](https://github.com/reworkcss/css/blob/master/lib/parse/index.js) was written in this style. But with a large code base, the code becomes hard to read and pretty slow.
-
- - *Split it into lexical analysis/parsing steps (source string → tokens → AST)*
-
- This is the way of how we do it in PostCSS and also the most popular one.
- A lot of parsers like [`@babel/parser` (parser behind Babel)](https://github.com/babel/babel/tree/master/packages/babel-parser), [`CSSTree`](https://github.com/csstree/csstree) were written in such way.
- The main reasons to separate tokenization from parsing steps are performance and abstracting complexity.
-
-Let think about why the second way is better for our needs.
-
-First of all, because string to tokens step takes more time than parsing step. We operate on large source string and process it char by char, this is why it is very inefficient operation in terms of performance and we should perform it only once.
-
-But from other side tokens to AST transformation is logically more complex so with such separation we could write very fast tokenizer (but from this comes sometimes hard to read code) and easy to read (but slow) parser.
-
-Summing it up splitting into two steps improve performance and code readability.
-
-So now let's look more closely on structures that play the main role in PostCSS workflow.
-
-### Core Structures
-
- - #### Tokenizer ( [lib/tokenize.es6](https://github.com/postcss/postcss/blob/master/lib/tokenize.es6) )
-
- Tokenizer (aka Lexer) plays important role in syntax analysis.
-
- It accepts CSS string and returns a list of tokens.
-
- Token is a simple structure that describes some part of syntax like `at-rule`, `comment` or `word`. It can also contain positional information for more descriptive errors.
-
- For example, if we consider following CSS
-
- ```css
- .className { color: #FFF; }
- ```
-
- corresponding tokens from PostCSS will be
- ```js
- [
- ["word", ".className", 1, 1, 1, 10]
- ["space", " "]
- ["{", "{", 1, 12]
- ["space", " "]
- ["word", "color", 1, 14, 1, 18]
- [":", ":", 1, 19]
- ["space", " "]
- ["word", "#FFF" , 1, 21, 1, 23]
- [";", ";", 1, 24]
- ["space", " "]
- ["}", "}", 1, 26]
- ]
- ```
-
- As you can see from the example above a single token represented as a list and also `space` token doesn't have positional information.
-
- Let's look more closely on single token like `word`. As it was said each token represented as a list and follow such pattern.
-
- ```js
- const token = [
- // represents token type
- 'word',
-
- // represents matched word
- '.className',
-
- // This two numbers represent start position of token.
- // It is optional value as we saw in the example above,
- // tokens like `space` don't have such information.
-
- // Here the first number is line number and the second one is corresponding column.
- 1, 1,
-
- // Next two numbers also optional and represent end position for multichar tokens like this one. Numbers follow same rule as was described above
- 1, 10
- ]
- ```
- There are many patterns how tokenization could be done, PostCSS motto is performance and simplicity. Tokenization is a complex computing operation and takes a large amount of syntax analysis time ( ~90% ), that why PostCSS' Tokenizer looks dirty but it was optimized for speed. Any high-level constructs like classes could dramatically slow down tokenizer.
-
- PostCSS' Tokenizer uses some sort of streaming/chaining API where you expose [`nextToken()`](https://github.com/postcss/postcss/blob/master/lib/tokenize.es6#L48-L308) method to Parser. In this manner, we provide a clean interface for Parser and reduce memory usage by storing only a few tokens and not the whole list of tokens.
-
-- #### Parser ( [lib/parse.es6](https://github.com/postcss/postcss/blob/master/lib/parse.es6), [lib/parser.es6](https://github.com/postcss/postcss/blob/master/lib/parser.es6) )
-
- Parser is the main structure responsible for [syntax analysis](https://en.wikipedia.org/wiki/Parsing) of incoming CSS. Parser produces a structure called [Abstract Syntax Tree (AST)](https://en.wikipedia.org/wiki/Abstract_syntax_tree) that could then be transformed by plugins later on.
-
- Parser works in common with Tokenizer and operates over tokens, not source string, as it would be a very inefficient operation.
-
- It uses mostly `nextToken` and `back` methods provided by Tokenizer for obtaining single or multiple tokens and then construct part of AST called `Node`.
-
- There are multiple Node types that PostCSS could produce but all of them inherit from base Node [class](https://github.com/postcss/postcss/blob/master/lib/node.es6#L34).
-
-- #### Processor ( [lib/processor.es6](https://github.com/postcss/postcss/blob/master/lib/processor.es6) )
-
- Processor is a very plain structure that initializes plugins and runs syntax transformations. Plugin is just a function registered with [postcss.plugin](https://github.com/postcss/postcss/blob/master/lib/postcss.es6#L109) call.
-
- It exposes only a few public API methods. Description of them could be found on [api.postcss.org/Processor](http://api.postcss.org/Processor.html)
-
-- #### Stringifier ( [lib/stringify.es6](https://github.com/postcss/postcss/blob/master/lib/stringify.es6), [lib/stringifier.es6](https://github.com/postcss/postcss/blob/master/lib/stringifier.es6) )
-
- Stringifier is a base class that translates modified AST to pure CSS string. Stringifier traverses AST starting from provided Node and generates a raw string representation of it calling corresponding methods.
-
- The most essential method is [`Stringifier.stringify`](https://github.com/postcss/postcss/blob/master/lib/stringifier.es6#L25-L27)
- that accepts initial Node and semicolon indicator.
- You can learn more by checking [stringifier.es6](https://github.com/postcss/postcss/blob/master/lib/stringifier.es6)
-
-### API Reference
-
-More descriptive API documentation could be found [here](http://api.postcss.org/)
diff --git a/assets/node_modules/postcss/docs/guidelines/plugin.md b/assets/node_modules/postcss/docs/guidelines/plugin.md
deleted file mode 100644
index 52fdcf3..0000000
--- a/assets/node_modules/postcss/docs/guidelines/plugin.md
+++ /dev/null
@@ -1,195 +0,0 @@
-# PostCSS Plugin Guidelines
-
-A PostCSS plugin is a function that receives and, usually,
-transforms a CSS AST from the PostCSS parser.
-
-The rules below are *mandatory* for all PostCSS plugins.
-
-See also [ClojureWerkz’s recommendations] for open source projects.
-
-[ClojureWerkz’s recommendations]: http://blog.clojurewerkz.org/blog/2013/04/20/how-to-make-your-open-source-project-really-awesome/
-
-## 1. API
-
-### 1.1 Clear name with `postcss-` prefix
-
-The plugin’s purpose should be clear just by reading its name.
-If you wrote a transpiler for CSS 4 Custom Media, `postcss-custom-media`
-would be a good name. If you wrote a plugin to support mixins,
-`postcss-mixins` would be a good name.
-
-The prefix `postcss-` shows that the plugin is part of the PostCSS ecosystem.
-
-This rule is not mandatory for plugins that can run as independent tools,
-without the user necessarily knowing that it is powered by
-PostCSS — for example, [RTLCSS] and [Autoprefixer].
-
-[Autoprefixer]: https://github.com/postcss/autoprefixer
-[RTLCSS]: https://rtlcss.com/
-
-### 1.2. Do one thing, and do it well
-
-Do not create multitool plugins. Several small, one-purpose plugins bundled into
-a plugin pack is usually a better solution.
-
-For example, [`postcss-preset-env`] contains many small plugins,
-one for each W3C specification. And [`cssnano`] contains a separate plugin
-for each of its optimization.
-
-[`postcss-preset-env`]: https://preset-env.cssdb.org/
-[`cssnano`]: https://github.com/ben-eb/cssnano
-
-### 1.3. Do not use mixins
-
-Preprocessors libraries like Compass provide an API with mixins.
-
-PostCSS plugins are different.
-A plugin cannot be just a set of mixins for [`postcss-mixins`].
-
-To achieve your goal, consider transforming valid CSS
-or using custom at-rules and custom properties.
-
-[`postcss-mixins`]: https://github.com/postcss/postcss-mixins
-
-### 1.4. Create plugin by `postcss.plugin`
-
-By wrapping your function in this method,
-you are hooking into a common plugin API:
-
-```js
-module.exports = postcss.plugin('plugin-name', opts => {
- return (root, result) => {
- // Plugin code
- }
-})
-```
-
-## 2. Processing
-
-### 2.1. Plugin must be tested
-
-A CI service like [Travis] is also recommended for testing code in
-different environments. You should test in (at least) Node.js [active LTS](https://github.com/nodejs/LTS) and current stable version.
-
-[Travis]: https://travis-ci.org/
-
-### 2.2. Use asynchronous methods whenever possible
-
-For example, use `fs.writeFile` instead of `fs.writeFileSync`:
-
-```js
-postcss.plugin('plugin-sprite', opts => {
- return (root, result) => {
-
- return new Promise((resolve, reject) => {
- const sprite = makeSprite()
- fs.writeFile(opts.file, sprite, err => {
- if (err) return reject(err)
- resolve()
- })
- })
-
- }
-})
-```
-
-### 2.3. Set `node.source` for new nodes
-
-Every node must have a relevant `source` so PostCSS can generate
-an accurate source map.
-
-So if you add a new declaration based on some existing declaration, you should
-clone the existing declaration in order to save that original `source`.
-
-```js
-if (needPrefix(decl.prop)) {
- decl.cloneBefore({ prop: '-webkit-' + decl.prop })
-}
-```
-
-You can also set `source` directly, copying from some existing node:
-
-```js
-if (decl.prop === 'animation') {
- const keyframe = createAnimationByName(decl.value)
- keyframes.source = decl.source
- decl.root().append(keyframes)
-}
-```
-
-### 2.4. Use only the public PostCSS API
-
-PostCSS plugins must not rely on undocumented properties or methods,
-which may be subject to change in any minor release. The public API
-is described in [API docs].
-
-[API docs]: http://api.postcss.org/
-
-## 3. Errors
-
-### 3.1. Use `node.error` on CSS relevant errors
-
-If you have an error because of input CSS (like an unknown name
-in a mixin plugin) you should use `node.error` to create an error
-that includes source position:
-
-```js
-if (typeof mixins[name] === 'undefined') {
- throw decl.error('Unknown mixin ' + name, { plugin: 'postcss-mixins' })
-}
-```
-
-### 3.2. Use `result.warn` for warnings
-
-Do not print warnings with `console.log` or `console.warn`,
-because some PostCSS runner may not allow console output.
-
-```js
-if (outdated(decl.prop)) {
- result.warn(decl.prop + ' is outdated', { node: decl })
-}
-```
-
-If CSS input is a source of the warning, the plugin must set the `node` option.
-
-## 4. Documentation
-
-### 4.1. Document your plugin in English
-
-PostCSS plugins must have their `README.md` wrote in English. Do not be afraid
-of your English skills, as the open source community will fix your errors.
-
-Of course, you are welcome to write documentation in other languages;
-just name them appropriately (e.g. `README.ja.md`).
-
-### 4.2. Include input and output examples
-
-The plugin's `README.md` must contain example input and output CSS.
-A clear example is the best way to describe how your plugin works.
-
-The first section of the `README.md` is a good place to put examples.
-See [postcss-opacity](https://github.com/iamvdo/postcss-opacity) for an example.
-
-Of course, this guideline does not apply if your plugin does not
-transform the CSS.
-
-### 4.3. Maintain a changelog
-
-PostCSS plugins must describe the changes of all their releases
-in a separate file, such as `CHANGELOG.md`, `History.md`, or [GitHub Releases].
-Visit [Keep A Changelog] for more information about how to write one of these.
-
-Of course, you should be using [SemVer].
-
-[Keep A Changelog]: http://keepachangelog.com/
-[GitHub Releases]: https://help.github.com/articles/creating-releases/
-[SemVer]: http://semver.org/
-
-### 4.4. Include `postcss-plugin` keyword in `package.json`
-
-PostCSS plugins written for npm must have the `postcss-plugin` keyword
-in their `package.json`. This special keyword will be useful for feedback about
-the PostCSS ecosystem.
-
-For packages not published to npm, this is not mandatory, but is recommended
-if the package format can contain keywords.
diff --git a/assets/node_modules/postcss/docs/guidelines/runner.md b/assets/node_modules/postcss/docs/guidelines/runner.md
deleted file mode 100644
index 24de712..0000000
--- a/assets/node_modules/postcss/docs/guidelines/runner.md
+++ /dev/null
@@ -1,143 +0,0 @@
-# PostCSS Runner Guidelines
-
-A PostCSS runner is a tool that processes CSS through a user-defined list
-of plugins; for example, [`postcss-cli`] or [`gulp‑postcss`].
-These rules are mandatory for any such runners.
-
-For single-plugin tools, like [`gulp-autoprefixer`],
-these rules are not mandatory but are highly recommended.
-
-See also [ClojureWerkz’s recommendations] for open source projects.
-
-[ClojureWerkz’s recommendations]: http://blog.clojurewerkz.org/blog/2013/04/20/how-to-make-your-open-source-project-really-awesome/
-[`gulp-autoprefixer`]: https://github.com/sindresorhus/gulp-autoprefixer
-[`gulp‑postcss`]: https://github.com/w0rm/gulp-postcss
-[`postcss-cli`]: https://github.com/postcss/postcss-cli
-
-## 1. API
-
-### 1.1. Accept functions in plugin parameters
-
-If your runner uses a config file, it must be written in JavaScript, so that
-it can support plugins which accept a function, such as [`postcss-assets`]:
-
-```js
-module.exports = [
- require('postcss-assets')({
- cachebuster: function (file) {
- return fs.statSync(file).mtime.getTime().toString(16)
- }
- })
-]
-```
-
-[`postcss-assets`]: https://github.com/borodean/postcss-assets
-
-## 2. Processing
-
-### 2.1. Set `from` and `to` processing options
-
-To ensure that PostCSS generates source maps and displays better syntax errors,
-runners must specify the `from` and `to` options. If your runner does not handle
-writing to disk (for example, a gulp transform), you should set both options
-to point to the same file:
-
-```js
-processor.process({ from: file.path, to: file.path })
-```
-
-### 2.2. Use only the asynchronous API
-
-PostCSS runners must use only the asynchronous API.
-The synchronous API is provided only for debugging, is slower,
-and can’t work with asynchronous plugins.
-
-```js
-processor.process(opts).then(result => {
- // processing is finished
-});
-```
-
-### 2.3. Use only the public PostCSS API
-
-PostCSS runners must not rely on undocumented properties or methods,
-which may be subject to change in any minor release. The public API
-is described in [API docs].
-
-[API docs]: http://api.postcss.org/
-
-## 3. Output
-
-### 3.1. Don’t show JS stack for `CssSyntaxError`
-
-PostCSS runners must not show a stack trace for CSS syntax errors,
-as the runner can be used by developers who are not familiar with JavaScript.
-Instead, handle such errors gracefully:
-
-```js
-processor.process(opts).catch(error => {
- if (error.name === 'CssSyntaxError') {
- process.stderr.write(error.message + error.showSourceCode())
- } else {
- throw error
- }
-})
-```
-
-### 3.2. Display `result.warnings()`
-
-PostCSS runners must output warnings from `result.warnings()`:
-
-```js
-result.warnings().forEach(warn => {
- process.stderr.write(warn.toString())
-})
-```
-
-See also [postcss-log-warnings] and [postcss-messages] plugins.
-
-[postcss-log-warnings]: https://github.com/davidtheclark/postcss-log-warnings
-[postcss-messages]: https://github.com/postcss/postcss-messages
-
-### 3.3. Allow the user to write source maps to different files
-
-PostCSS by default will inline source maps in the generated file; however,
-PostCSS runners must provide an option to save the source map in a different
-file:
-
-```js
-if (result.map) {
- fs.writeFile(opts.to + '.map', result.map.toString())
-}
-```
-
-## 4. Documentation
-
-### 4.1. Document your runner in English
-
-PostCSS runners must have their `README.md` wrote in English. Do not be afraid
-of your English skills, as the open source community will fix your errors.
-
-Of course, you are welcome to write documentation in other languages;
-just name them appropriately (e.g. `README.ja.md`).
-
-### 4.2. Maintain a changelog
-
-PostCSS runners must describe changes of all releases in a separate file,
-such as `ChangeLog.md`, `History.md`, or with [GitHub Releases].
-Visit [Keep A Changelog] for more information on how to write one of these.
-
-Of course, you should use [SemVer].
-
-[Keep A Changelog]: http://keepachangelog.com/
-[GitHub Releases]: https://help.github.com/articles/creating-releases/
-[SemVer]: http://semver.org/
-
-### 4.3. `postcss-runner` keyword in `package.json`
-
-PostCSS runners written for npm must have the `postcss-runner` keyword
-in their `package.json`. This special keyword will be useful for feedback about
-the PostCSS ecosystem.
-
-For packages not published to npm, this is not mandatory, but recommended
-if the package format is allowed to contain keywords.
diff --git a/assets/node_modules/postcss/docs/source-maps.md b/assets/node_modules/postcss/docs/source-maps.md
deleted file mode 100644
index ce29755..0000000
--- a/assets/node_modules/postcss/docs/source-maps.md
+++ /dev/null
@@ -1,74 +0,0 @@
-# PostCSS and Source Maps
-
-PostCSS has great [source maps] support. It can read and interpret maps
-from previous transformation steps, autodetect the format that you expect,
-and output both external and inline maps.
-
-To ensure that you generate an accurate source map, you must indicate the input
-and output CSS file paths — using the options `from` and `to`, respectively.
-
-To generate a new source map with the default options, simply set `map: true`.
-This will generate an inline source map that contains the source content.
-If you don’t want the map inlined, you can set `map.inline: false`.
-
-```js
-processor
- .process(css, {
- from: 'app.sass.css',
- to: 'app.css',
- map: { inline: false }
- })
- .then(result => {
- result.map //=> '{ "version":3,
- // "file":"app.css",
- // "sources":["app.sass"],
- // "mappings":"AAAA,KAAI" }'
- })
-```
-
-If PostCSS finds source maps from a previous transformation,
-it will automatically update that source map with the same options.
-
-## Options
-
-If you want more control over source map generation, you can define the `map`
-option as an object with the following parameters:
-
-* `inline` boolean: indicates that the source map should be embedded
- in the output CSS as a Base64-encoded comment. By default, it is `true`.
- But if all previous maps are external, not inline, PostCSS will not embed
- the map even if you do not set this option.
-
- If you have an inline source map, the `result.map` property will be empty,
- as the source map will be contained within the text of `result.css`.
-
-* `prev` string, object, boolean or function: source map content from
- a previous processing step (for example, Sass compilation).
- PostCSS will try to read the previous source map automatically
- (based on comments within the source CSS), but you can use this option
- to identify it manually. If desired, you can omit the previous map
- with `prev: false`.
-
-* `sourcesContent` boolean: indicates that PostCSS should set the origin
- content (for example, Sass source) of the source map. By default,
- it is `true`. But if all previous maps do not contain sources content,
- PostCSS will also leave it out even if you do not set this option.
-
-* `annotation` boolean or string: indicates that PostCSS should add annotation
- comments to the CSS. By default, PostCSS will always add a comment with a path
- to the source map. PostCSS will not add annotations to CSS files that
- do not contain any comments.
-
- By default, PostCSS presumes that you want to save the source map as
- `opts.to + '.map'` and will use this path in the annotation comment.
- A different path can be set by providing a string value for `annotation`.
-
- If you have set `inline: true`, annotation cannot be disabled.
-
-* `from` string: by default, PostCSS will set the `sources` property of the map
- to the value of the `from` option. If you want to override this behaviour, you
- can use `map.from` to explicitly set the source map's `sources` property.
- Path should be absolute or relative from generated file
- (`to` option in `process()` method).
-
-[source maps]: http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/
diff --git a/assets/node_modules/postcss/docs/syntax.md b/assets/node_modules/postcss/docs/syntax.md
deleted file mode 100644
index d880191..0000000
--- a/assets/node_modules/postcss/docs/syntax.md
+++ /dev/null
@@ -1,233 +0,0 @@
-# How to Write Custom Syntax
-
-PostCSS can transform styles in any syntax, and is not limited to just CSS.
-By writing a custom syntax, you can transform styles in any desired format.
-
-Writing a custom syntax is much harder than writing a PostCSS plugin, but
-it is an awesome adventure.
-
-There are 3 types of PostCSS syntax packages:
-
-* **Parser** to parse input string to node’s tree.
-* **Stringifier** to generate output string by node’s tree.
-* **Syntax** contains both parser and stringifier.
-
-## Syntax
-
-A good example of a custom syntax is [SCSS]. Some users may want to transform
-SCSS sources with PostCSS plugins, for example if they need to add vendor
-prefixes or change the property order. So this syntax should output SCSS from
-an SCSS input.
-
-The syntax API is a very simple plain object, with `parse` & `stringify`
-functions:
-
-```js
-module.exports = {
- parse: require('./parse'),
- stringify: require('./stringify')
-}
-```
-
-[SCSS]: https://github.com/postcss/postcss-scss
-
-## Parser
-
-A good example of a parser is [Safe Parser], which parses malformed/broken CSS.
-Because there is no point to generate broken output, this package only provides
-a parser.
-
-The parser API is a function which receives a string & returns a [`Root`] node.
-The second argument is a function which receives an object with PostCSS options.
-
-```js
-const postcss = require('postcss')
-
-module.exports = function parse (css, opts) {
- const root = postcss.root()
- // Add other nodes to root
- return root
-}
-```
-
-[Safe Parser]: https://github.com/postcss/postcss-safe-parser
-[`Root`]: http://api.postcss.org/Root.html
-
-### Main Theory
-
-There are many books about parsers; but do not worry because CSS syntax is
-very easy, and so the parser will be much simpler than a programming language
-parser.
-
-The default PostCSS parser contains two steps:
-
-1. [Tokenizer] which reads input string character by character and builds a
- tokens array. For example, it joins space symbols to a `['space', '\n ']`
- token, and detects strings to a `['string', '"\"{"']` token.
-2. [Parser] which reads the tokens array, creates node instances and
- builds a tree.
-
-[Tokenizer]: https://github.com/postcss/postcss/blob/master/lib/tokenize.es6
-[Parser]: https://github.com/postcss/postcss/blob/master/lib/parser.es6
-
-### Performance
-
-Parsing input is often the most time consuming task in CSS processors. So it
-is very important to have a fast parser.
-
-The main rule of optimization is that there is no performance without a
-benchmark. You can look at [PostCSS benchmarks] to build your own.
-
-Of parsing tasks, the tokenize step will often take the most time, so its
-performance should be prioritized. Unfortunately, classes, functions and
-high level structures can slow down your tokenizer. Be ready to write dirty
-code with repeated statements. This is why it is difficult to extend the
-default [PostCSS tokenizer]; copy & paste will be a necessary evil.
-
-Second optimization is using character codes instead of strings.
-
-```js
-// Slow
-string[i] === '{'
-
-// Fast
-const OPEN_CURLY = 123 // `{'
-string.charCodeAt(i) === OPEN_CURLY
-```
-
-Third optimization is “fast jumps”. If you find open quotes, you can find
-next closing quote much faster by `indexOf`:
-
-```js
-// Simple jump
-next = string.indexOf('"', currentPosition + 1)
-
-// Jump by RegExp
-regexp.lastIndex = currentPosion + 1
-regexp.test(string)
-next = regexp.lastIndex
-```
-
-The parser can be a well written class. There is no need in copy-paste and
-hardcore optimization there. You can extend the default [PostCSS parser].
-
-[PostCSS benchmarks]: https://github.com/postcss/benchmark
-[PostCSS tokenizer]: https://github.com/postcss/postcss/blob/master/lib/tokenize.es6
-[PostCSS parser]: https://github.com/postcss/postcss/blob/master/lib/parser.es6
-
-### Node Source
-
-Every node should have `source` property to generate correct source map.
-This property contains `start` and `end` properties with `{ line, column }`,
-and `input` property with an [`Input`] instance.
-
-Your tokenizer should save the original position so that you can propagate
-the values to the parser, to ensure that the source map is correctly updated.
-
-[`Input`]: https://github.com/postcss/postcss/blob/master/lib/input.es6
-
-### Raw Values
-
-A good PostCSS parser should provide all information (including spaces symbols)
-to generate byte-to-byte equal output. It is not so difficult, but respectful
-for user input and allow integration smoke tests.
-
-A parser should save all additional symbols to `node.raws` object.
-It is an open structure for you, you can add additional keys.
-For example, [SCSS parser] saves comment types (`/* */` or `//`)
-in `node.raws.inline`.
-
-The default parser cleans CSS values from comments and spaces.
-It saves the original value with comments to `node.raws.value.raw` and uses it,
-if the node value was not changed.
-
-[SCSS parser]: https://github.com/postcss/postcss-scss
-
-### Tests
-
-Of course, all parsers in the PostCSS ecosystem must have tests.
-
-If your parser just extends CSS syntax (like [SCSS] or [Safe Parser]),
-you can use the [PostCSS Parser Tests]. It contains unit & integration tests.
-
-[PostCSS Parser Tests]: https://github.com/postcss/postcss-parser-tests
-
-## Stringifier
-
-A style guide generator is a good example of a stringifier. It generates output
-HTML which contains CSS components. For this use case, a parser isn't necessary,
-so the package should just contain a stringifier.
-
-The Stringifier API is little bit more complicated, than the parser API.
-PostCSS generates a source map, so a stringifier can’t just return a string.
-It must link every substring with its source node.
-
-A Stringifier is a function which receives [`Root`] node and builder callback.
-Then it calls builder with every node’s string and node instance.
-
-```js
-module.exports = function stringify (root, builder) {
- // Some magic
- const string = decl.prop + ':' + decl.value + ';'
- builder(string, decl)
- // Some science
-};
-```
-
-### Main Theory
-
-PostCSS [default stringifier] is just a class with a method for each node type
-and many methods to detect raw properties.
-
-In most cases it will be enough just to extend this class,
-like in [SCSS stringifier].
-
-[default stringifier]: https://github.com/postcss/postcss/blob/master/lib/stringifier.es6
-[SCSS stringifier]: https://github.com/postcss/postcss-scss/blob/master/lib/scss-stringifier.es6
-
-### Builder Function
-
-A builder function will be passed to `stringify` function as second argument.
-For example, the default PostCSS stringifier class saves it
-to `this.builder` property.
-
-Builder receives output substring and source node to append this substring
-to the final output.
-
-Some nodes contain other nodes in the middle. For example, a rule has a `{`
-at the beginning, many declarations inside and a closing `}`.
-
-For these cases, you should pass a third argument to builder function:
-`'start'` or `'end'` string:
-
-```js
-this.builder(rule.selector + '{', rule, 'start')
-// Stringify declarations inside
-this.builder('}', rule, 'end')
-```
-
-### Raw Values
-
-A good PostCSS custom syntax saves all symbols and provide byte-to-byte equal
-output if there were no changes.
-
-This is why every node has `node.raws` object to store space symbol, etc.
-
-All data related to source code and not CSS structure, should be in `Node#raws`. For instance, `postcss-scss` keep in `Comment#raws.inline` boolean marker of inline comment (`// comment` instead of `/* comment */`).
-
-Be careful, because sometimes these raw properties will not be present; some
-nodes may be built manually, or may lose their indentation when they are moved
-to another parent node.
-
-This is why the default stringifier has a `raw()` method to autodetect raw
-properties by other nodes. For example, it will look at other nodes to detect
-indent size and them multiply it with the current node depth.
-
-### Tests
-
-A stringifier must have tests too.
-
-You can use unit and integration test cases from [PostCSS Parser Tests].
-Just compare input CSS with CSS after your parser and stringifier.
-
-[PostCSS Parser Tests]: https://github.com/postcss/postcss-parser-tests
diff --git a/assets/node_modules/postcss/lib/at-rule.js b/assets/node_modules/postcss/lib/at-rule.js
deleted file mode 100644
index 619c04a..0000000
--- a/assets/node_modules/postcss/lib/at-rule.js
+++ /dev/null
@@ -1,129 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _container = _interopRequireDefault(require("./container"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/**
- * Represents an at-rule.
- *
- * If it’s followed in the CSS by a {} block, this node will have
- * a nodes property representing its children.
- *
- * @extends Container
- *
- * @example
- * const root = postcss.parse('@charset "UTF-8"; @media print {}')
- *
- * const charset = root.first
- * charset.type //=> 'atrule'
- * charset.nodes //=> undefined
- *
- * const media = root.last
- * media.nodes //=> []
- */
-var AtRule =
-/*#__PURE__*/
-function (_Container) {
- _inheritsLoose(AtRule, _Container);
-
- function AtRule(defaults) {
- var _this;
-
- _this = _Container.call(this, defaults) || this;
- _this.type = 'atrule';
- return _this;
- }
-
- var _proto = AtRule.prototype;
-
- _proto.append = function append() {
- var _Container$prototype$;
-
- if (!this.nodes) this.nodes = [];
-
- for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) {
- children[_key] = arguments[_key];
- }
-
- return (_Container$prototype$ = _Container.prototype.append).call.apply(_Container$prototype$, [this].concat(children));
- };
-
- _proto.prepend = function prepend() {
- var _Container$prototype$2;
-
- if (!this.nodes) this.nodes = [];
-
- for (var _len2 = arguments.length, children = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
- children[_key2] = arguments[_key2];
- }
-
- return (_Container$prototype$2 = _Container.prototype.prepend).call.apply(_Container$prototype$2, [this].concat(children));
- }
- /**
- * @memberof AtRule#
- * @member {string} name The at-rule’s name immediately follows the `@`.
- *
- * @example
- * const root = postcss.parse('@media print {}')
- * media.name //=> 'media'
- * const media = root.first
- */
-
- /**
- * @memberof AtRule#
- * @member {string} params The at-rule’s parameters, the values
- * that follow the at-rule’s name but precede
- * any {} block.
- *
- * @example
- * const root = postcss.parse('@media print, screen {}')
- * const media = root.first
- * media.params //=> 'print, screen'
- */
-
- /**
- * @memberof AtRule#
- * @member {object} raws Information to generate byte-to-byte equal
- * node string as it was in the origin input.
- *
- * Every parser saves its own properties,
- * but the default CSS parser uses:
- *
- * * `before`: the space symbols before the node. It also stores `*`
- * and `_` symbols before the declaration (IE hack).
- * * `after`: the space symbols after the last child of the node
- * to the end of the node.
- * * `between`: the symbols between the property and value
- * for declarations, selector and `{` for rules, or last parameter
- * and `{` for at-rules.
- * * `semicolon`: contains true if the last child has
- * an (optional) semicolon.
- * * `afterName`: the space between the at-rule name and its parameters.
- *
- * PostCSS cleans at-rule parameters from comments and extra spaces,
- * but it stores origin content in raws properties.
- * As such, if you don’t change a declaration’s value,
- * PostCSS will use the raw value with comments.
- *
- * @example
- * const root = postcss.parse(' @media\nprint {\n}')
- * root.first.first.raws //=> { before: ' ',
- * // between: ' ',
- * // afterName: '\n',
- * // after: '\n' }
- */
- ;
-
- return AtRule;
-}(_container.default);
-
-var _default = AtRule;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF0LXJ1bGUuZXM2Il0sIm5hbWVzIjpbIkF0UnVsZSIsImRlZmF1bHRzIiwidHlwZSIsImFwcGVuZCIsIm5vZGVzIiwiY2hpbGRyZW4iLCJwcmVwZW5kIiwiQ29udGFpbmVyIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBa0JNQSxNOzs7OztBQUNKLGtCQUFhQyxRQUFiLEVBQXVCO0FBQUE7O0FBQ3JCLGtDQUFNQSxRQUFOO0FBQ0EsVUFBS0MsSUFBTCxHQUFZLFFBQVo7QUFGcUI7QUFHdEI7Ozs7U0FFREMsTSxHQUFBLGtCQUFxQjtBQUFBOztBQUNuQixRQUFJLENBQUMsS0FBS0MsS0FBVixFQUFpQixLQUFLQSxLQUFMLEdBQWEsRUFBYjs7QUFERSxzQ0FBVkMsUUFBVTtBQUFWQSxNQUFBQSxRQUFVO0FBQUE7O0FBRW5CLHlEQUFhRixNQUFiLGtEQUF1QkUsUUFBdkI7QUFDRCxHOztTQUVEQyxPLEdBQUEsbUJBQXNCO0FBQUE7O0FBQ3BCLFFBQUksQ0FBQyxLQUFLRixLQUFWLEVBQWlCLEtBQUtBLEtBQUwsR0FBYSxFQUFiOztBQURHLHVDQUFWQyxRQUFVO0FBQVZBLE1BQUFBLFFBQVU7QUFBQTs7QUFFcEIsMERBQWFDLE9BQWIsbURBQXdCRCxRQUF4QjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7QUFVQTs7Ozs7Ozs7Ozs7O0FBWUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF0Q21CRSxrQjs7ZUF1RU5QLE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udGFpbmVyIGZyb20gJy4vY29udGFpbmVyJ1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gYXQtcnVsZS5cbiAqXG4gKiBJZiBpdOKAmXMgZm9sbG93ZWQgaW4gdGhlIENTUyBieSBhIHt9IGJsb2NrLCB0aGlzIG5vZGUgd2lsbCBoYXZlXG4gKiBhIG5vZGVzIHByb3BlcnR5IHJlcHJlc2VudGluZyBpdHMgY2hpbGRyZW4uXG4gKlxuICogQGV4dGVuZHMgQ29udGFpbmVyXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdAY2hhcnNldCBcIlVURi04XCI7IEBtZWRpYSBwcmludCB7fScpXG4gKlxuICogY29uc3QgY2hhcnNldCA9IHJvb3QuZmlyc3RcbiAqIGNoYXJzZXQudHlwZSAgLy89PiAnYXRydWxlJ1xuICogY2hhcnNldC5ub2RlcyAvLz0+IHVuZGVmaW5lZFxuICpcbiAqIGNvbnN0IG1lZGlhID0gcm9vdC5sYXN0XG4gKiBtZWRpYS5ub2RlcyAgIC8vPT4gW11cbiAqL1xuY2xhc3MgQXRSdWxlIGV4dGVuZHMgQ29udGFpbmVyIHtcbiAgY29uc3RydWN0b3IgKGRlZmF1bHRzKSB7XG4gICAgc3VwZXIoZGVmYXVsdHMpXG4gICAgdGhpcy50eXBlID0gJ2F0cnVsZSdcbiAgfVxuXG4gIGFwcGVuZCAoLi4uY2hpbGRyZW4pIHtcbiAgICBpZiAoIXRoaXMubm9kZXMpIHRoaXMubm9kZXMgPSBbXVxuICAgIHJldHVybiBzdXBlci5hcHBlbmQoLi4uY2hpbGRyZW4pXG4gIH1cblxuICBwcmVwZW5kICguLi5jaGlsZHJlbikge1xuICAgIGlmICghdGhpcy5ub2RlcykgdGhpcy5ub2RlcyA9IFtdXG4gICAgcmV0dXJuIHN1cGVyLnByZXBlbmQoLi4uY2hpbGRyZW4pXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIEF0UnVsZSNcbiAgICogQG1lbWJlciB7c3RyaW5nfSBuYW1lIFRoZSBhdC1ydWxl4oCZcyBuYW1lIGltbWVkaWF0ZWx5IGZvbGxvd3MgdGhlIGBAYC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCAgPSBwb3N0Y3NzLnBhcnNlKCdAbWVkaWEgcHJpbnQge30nKVxuICAgKiBtZWRpYS5uYW1lIC8vPT4gJ21lZGlhJ1xuICAgKiBjb25zdCBtZWRpYSA9IHJvb3QuZmlyc3RcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBBdFJ1bGUjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gcGFyYW1zIFRoZSBhdC1ydWxl4oCZcyBwYXJhbWV0ZXJzLCB0aGUgdmFsdWVzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgZm9sbG93IHRoZSBhdC1ydWxl4oCZcyBuYW1lIGJ1dCBwcmVjZWRlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIGFueSB7fSBibG9jay5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCAgPSBwb3N0Y3NzLnBhcnNlKCdAbWVkaWEgcHJpbnQsIHNjcmVlbiB7fScpXG4gICAqIGNvbnN0IG1lZGlhID0gcm9vdC5maXJzdFxuICAgKiBtZWRpYS5wYXJhbXMgLy89PiAncHJpbnQsIHNjcmVlbidcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBBdFJ1bGUjXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICBub2RlIHN0cmluZyBhcyBpdCB3YXMgaW4gdGhlIG9yaWdpbiBpbnB1dC5cbiAgICpcbiAgICogRXZlcnkgcGFyc2VyIHNhdmVzIGl0cyBvd24gcHJvcGVydGllcyxcbiAgICogYnV0IHRoZSBkZWZhdWx0IENTUyBwYXJzZXIgdXNlczpcbiAgICpcbiAgICogKiBgYmVmb3JlYDogdGhlIHNwYWNlIHN5bWJvbHMgYmVmb3JlIHRoZSBub2RlLiBJdCBhbHNvIHN0b3JlcyBgKmBcbiAgICogICBhbmQgYF9gIHN5bWJvbHMgYmVmb3JlIHRoZSBkZWNsYXJhdGlvbiAoSUUgaGFjaykuXG4gICAqICogYGFmdGVyYDogdGhlIHNwYWNlIHN5bWJvbHMgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQgb2YgdGhlIG5vZGVcbiAgICogICB0byB0aGUgZW5kIG9mIHRoZSBub2RlLlxuICAgKiAqIGBiZXR3ZWVuYDogdGhlIHN5bWJvbHMgYmV0d2VlbiB0aGUgcHJvcGVydHkgYW5kIHZhbHVlXG4gICAqICAgZm9yIGRlY2xhcmF0aW9ucywgc2VsZWN0b3IgYW5kIGB7YCBmb3IgcnVsZXMsIG9yIGxhc3QgcGFyYW1ldGVyXG4gICAqICAgYW5kIGB7YCBmb3IgYXQtcnVsZXMuXG4gICAqICogYHNlbWljb2xvbmA6IGNvbnRhaW5zIHRydWUgaWYgdGhlIGxhc3QgY2hpbGQgaGFzXG4gICAqICAgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAqICogYGFmdGVyTmFtZWA6IHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBhdC1ydWxlIG5hbWUgYW5kIGl0cyBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBQb3N0Q1NTIGNsZWFucyBhdC1ydWxlIHBhcmFtZXRlcnMgZnJvbSBjb21tZW50cyBhbmQgZXh0cmEgc3BhY2VzLFxuICAgKiBidXQgaXQgc3RvcmVzIG9yaWdpbiBjb250ZW50IGluIHJhd3MgcHJvcGVydGllcy5cbiAgICogQXMgc3VjaCwgaWYgeW91IGRvbuKAmXQgY2hhbmdlIGEgZGVjbGFyYXRpb27igJlzIHZhbHVlLFxuICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJyAgQG1lZGlhXFxucHJpbnQge1xcbn0nKVxuICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJyAgJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBiZXR3ZWVuOiAnICcsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYWZ0ZXJOYW1lOiAnXFxuJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBhZnRlcjogJ1xcbicgfVxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgQXRSdWxlXG4iXSwiZmlsZSI6ImF0LXJ1bGUuanMifQ==
diff --git a/assets/node_modules/postcss/lib/comment.js b/assets/node_modules/postcss/lib/comment.js
deleted file mode 100644
index c9db73e..0000000
--- a/assets/node_modules/postcss/lib/comment.js
+++ /dev/null
@@ -1,57 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _node = _interopRequireDefault(require("./node"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/**
- * Represents a comment between declarations or statements (rule and at-rules).
- *
- * Comments inside selectors, at-rule parameters, or declaration values
- * will be stored in the `raws` properties explained above.
- *
- * @extends Node
- */
-var Comment =
-/*#__PURE__*/
-function (_Node) {
- _inheritsLoose(Comment, _Node);
-
- function Comment(defaults) {
- var _this;
-
- _this = _Node.call(this, defaults) || this;
- _this.type = 'comment';
- return _this;
- }
- /**
- * @memberof Comment#
- * @member {string} text The comment’s text.
- */
-
- /**
- * @memberof Comment#
- * @member {object} raws Information to generate byte-to-byte equal
- * node string as it was in the origin input.
- *
- * Every parser saves its own properties,
- * but the default CSS parser uses:
- *
- * * `before`: the space symbols before the node.
- * * `left`: the space symbols between `/*` and the comment’s text.
- * * `right`: the space symbols between the comment’s text.
- */
-
-
- return Comment;
-}(_node.default);
-
-var _default = Comment;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1lbnQuZXM2Il0sIm5hbWVzIjpbIkNvbW1lbnQiLCJkZWZhdWx0cyIsInR5cGUiLCJOb2RlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7QUFFQTs7Ozs7Ozs7SUFRTUEsTzs7Ozs7QUFDSixtQkFBYUMsUUFBYixFQUF1QjtBQUFBOztBQUNyQiw2QkFBTUEsUUFBTjtBQUNBLFVBQUtDLElBQUwsR0FBWSxTQUFaO0FBRnFCO0FBR3RCO0FBRUQ7Ozs7O0FBS0E7Ozs7Ozs7Ozs7Ozs7OztFQVhvQkMsYTs7ZUF5QlBILE8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTm9kZSBmcm9tICcuL25vZGUnXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNvbW1lbnQgYmV0d2VlbiBkZWNsYXJhdGlvbnMgb3Igc3RhdGVtZW50cyAocnVsZSBhbmQgYXQtcnVsZXMpLlxuICpcbiAqIENvbW1lbnRzIGluc2lkZSBzZWxlY3RvcnMsIGF0LXJ1bGUgcGFyYW1ldGVycywgb3IgZGVjbGFyYXRpb24gdmFsdWVzXG4gKiB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgYHJhd3NgIHByb3BlcnRpZXMgZXhwbGFpbmVkIGFib3ZlLlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqL1xuY2xhc3MgQ29tbWVudCBleHRlbmRzIE5vZGUge1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cylcbiAgICB0aGlzLnR5cGUgPSAnY29tbWVudCdcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgQ29tbWVudCNcbiAgICogQG1lbWJlciB7c3RyaW5nfSB0ZXh0IFRoZSBjb21tZW504oCZcyB0ZXh0LlxuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIENvbW1lbnQjXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgKlxuICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgKlxuICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuXG4gICAqICogYGxlZnRgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZXR3ZWVuIGAvKmAgYW5kIHRoZSBjb21tZW504oCZcyB0ZXh0LlxuICAgKiAqIGByaWdodGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gdGhlIGNvbW1lbnTigJlzIHRleHQuXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb21tZW50XG4iXSwiZmlsZSI6ImNvbW1lbnQuanMifQ==
diff --git a/assets/node_modules/postcss/lib/container.js b/assets/node_modules/postcss/lib/container.js
deleted file mode 100644
index b41c891..0000000
--- a/assets/node_modules/postcss/lib/container.js
+++ /dev/null
@@ -1,869 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _declaration = _interopRequireDefault(require("./declaration"));
-
-var _comment = _interopRequireDefault(require("./comment"));
-
-var _node = _interopRequireDefault(require("./node"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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); } }
-
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-function cleanSource(nodes) {
- return nodes.map(function (i) {
- if (i.nodes) i.nodes = cleanSource(i.nodes);
- delete i.source;
- return i;
- });
-}
-/**
- * The {@link Root}, {@link AtRule}, and {@link Rule} container nodes
- * inherit some common methods to help work with their children.
- *
- * Note that all containers can store any content. If you write a rule inside
- * a rule, PostCSS will parse it.
- *
- * @extends Node
- * @abstract
- */
-
-
-var Container =
-/*#__PURE__*/
-function (_Node) {
- _inheritsLoose(Container, _Node);
-
- function Container() {
- return _Node.apply(this, arguments) || this;
- }
-
- var _proto = Container.prototype;
-
- _proto.push = function push(child) {
- child.parent = this;
- this.nodes.push(child);
- return this;
- }
- /**
- * Iterates through the container’s immediate children,
- * calling `callback` for each child.
- *
- * Returning `false` in the callback will break iteration.
- *
- * This method only iterates through the container’s immediate children.
- * If you need to recursively iterate through all the container’s descendant
- * nodes, use {@link Container#walk}.
- *
- * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe
- * if you are mutating the array of child nodes during iteration.
- * PostCSS will adjust the current index to match the mutations.
- *
- * @param {childIterator} callback Iterator receives each node and index.
- *
- * @return {false|undefined} Returns `false` if iteration was broke.
- *
- * @example
- * const root = postcss.parse('a { color: black; z-index: 1 }')
- * const rule = root.first
- *
- * for (const decl of rule.nodes) {
- * decl.cloneBefore({ prop: '-webkit-' + decl.prop })
- * // Cycle will be infinite, because cloneBefore moves the current node
- * // to the next index
- * }
- *
- * rule.each(decl => {
- * decl.cloneBefore({ prop: '-webkit-' + decl.prop })
- * // Will be executed only for color and z-index
- * })
- */
- ;
-
- _proto.each = function each(callback) {
- if (!this.lastEach) this.lastEach = 0;
- if (!this.indexes) this.indexes = {};
- this.lastEach += 1;
- var id = this.lastEach;
- this.indexes[id] = 0;
- if (!this.nodes) return undefined;
- var index, result;
-
- while (this.indexes[id] < this.nodes.length) {
- index = this.indexes[id];
- result = callback(this.nodes[index], index);
- if (result === false) break;
- this.indexes[id] += 1;
- }
-
- delete this.indexes[id];
- return result;
- }
- /**
- * Traverses the container’s descendant nodes, calling callback
- * for each node.
- *
- * Like container.each(), this method is safe to use
- * if you are mutating arrays during iteration.
- *
- * If you only need to iterate through the container’s immediate children,
- * use {@link Container#each}.
- *
- * @param {childIterator} callback Iterator receives each node and index.
- *
- * @return {false|undefined} Returns `false` if iteration was broke.
- *
- * @example
- * root.walk(node => {
- * // Traverses all descendant nodes.
- * })
- */
- ;
-
- _proto.walk = function walk(callback) {
- return this.each(function (child, i) {
- var result;
-
- try {
- result = callback(child, i);
- } catch (e) {
- e.postcssNode = child;
-
- if (e.stack && child.source && /\n\s{4}at /.test(e.stack)) {
- var s = child.source;
- e.stack = e.stack.replace(/\n\s{4}at /, "$&" + s.input.from + ":" + s.start.line + ":" + s.start.column + "$&");
- }
-
- throw e;
- }
-
- if (result !== false && child.walk) {
- result = child.walk(callback);
- }
-
- return result;
- });
- }
- /**
- * Traverses the container’s descendant nodes, calling callback
- * for each declaration node.
- *
- * If you pass a filter, iteration will only happen over declarations
- * with matching properties.
- *
- * Like {@link Container#each}, this method is safe
- * to use if you are mutating arrays during iteration.
- *
- * @param {string|RegExp} [prop] String or regular expression
- * to filter declarations by property name.
- * @param {childIterator} callback Iterator receives each node and index.
- *
- * @return {false|undefined} Returns `false` if iteration was broke.
- *
- * @example
- * root.walkDecls(decl => {
- * checkPropertySupport(decl.prop)
- * })
- *
- * root.walkDecls('border-radius', decl => {
- * decl.remove()
- * })
- *
- * root.walkDecls(/^background/, decl => {
- * decl.value = takeFirstColorFromGradient(decl.value)
- * })
- */
- ;
-
- _proto.walkDecls = function walkDecls(prop, callback) {
- if (!callback) {
- callback = prop;
- return this.walk(function (child, i) {
- if (child.type === 'decl') {
- return callback(child, i);
- }
- });
- }
-
- if (prop instanceof RegExp) {
- return this.walk(function (child, i) {
- if (child.type === 'decl' && prop.test(child.prop)) {
- return callback(child, i);
- }
- });
- }
-
- return this.walk(function (child, i) {
- if (child.type === 'decl' && child.prop === prop) {
- return callback(child, i);
- }
- });
- }
- /**
- * Traverses the container’s descendant nodes, calling callback
- * for each rule node.
- *
- * If you pass a filter, iteration will only happen over rules
- * with matching selectors.
- *
- * Like {@link Container#each}, this method is safe
- * to use if you are mutating arrays during iteration.
- *
- * @param {string|RegExp} [selector] String or regular expression
- * to filter rules by selector.
- * @param {childIterator} callback Iterator receives each node and index.
- *
- * @return {false|undefined} returns `false` if iteration was broke.
- *
- * @example
- * const selectors = []
- * root.walkRules(rule => {
- * selectors.push(rule.selector)
- * })
- * console.log(`Your CSS uses ${ selectors.length } selectors`)
- */
- ;
-
- _proto.walkRules = function walkRules(selector, callback) {
- if (!callback) {
- callback = selector;
- return this.walk(function (child, i) {
- if (child.type === 'rule') {
- return callback(child, i);
- }
- });
- }
-
- if (selector instanceof RegExp) {
- return this.walk(function (child, i) {
- if (child.type === 'rule' && selector.test(child.selector)) {
- return callback(child, i);
- }
- });
- }
-
- return this.walk(function (child, i) {
- if (child.type === 'rule' && child.selector === selector) {
- return callback(child, i);
- }
- });
- }
- /**
- * Traverses the container’s descendant nodes, calling callback
- * for each at-rule node.
- *
- * If you pass a filter, iteration will only happen over at-rules
- * that have matching names.
- *
- * Like {@link Container#each}, this method is safe
- * to use if you are mutating arrays during iteration.
- *
- * @param {string|RegExp} [name] String or regular expression
- * to filter at-rules by name.
- * @param {childIterator} callback Iterator receives each node and index.
- *
- * @return {false|undefined} Returns `false` if iteration was broke.
- *
- * @example
- * root.walkAtRules(rule => {
- * if (isOld(rule.name)) rule.remove()
- * })
- *
- * let first = false
- * root.walkAtRules('charset', rule => {
- * if (!first) {
- * first = true
- * } else {
- * rule.remove()
- * }
- * })
- */
- ;
-
- _proto.walkAtRules = function walkAtRules(name, callback) {
- if (!callback) {
- callback = name;
- return this.walk(function (child, i) {
- if (child.type === 'atrule') {
- return callback(child, i);
- }
- });
- }
-
- if (name instanceof RegExp) {
- return this.walk(function (child, i) {
- if (child.type === 'atrule' && name.test(child.name)) {
- return callback(child, i);
- }
- });
- }
-
- return this.walk(function (child, i) {
- if (child.type === 'atrule' && child.name === name) {
- return callback(child, i);
- }
- });
- }
- /**
- * Traverses the container’s descendant nodes, calling callback
- * for each comment node.
- *
- * Like {@link Container#each}, this method is safe
- * to use if you are mutating arrays during iteration.
- *
- * @param {childIterator} callback Iterator receives each node and index.
- *
- * @return {false|undefined} Returns `false` if iteration was broke.
- *
- * @example
- * root.walkComments(comment => {
- * comment.remove()
- * })
- */
- ;
-
- _proto.walkComments = function walkComments(callback) {
- return this.walk(function (child, i) {
- if (child.type === 'comment') {
- return callback(child, i);
- }
- });
- }
- /**
- * Inserts new nodes to the end of the container.
- *
- * @param {...(Node|object|string|Node[])} children New nodes.
- *
- * @return {Node} This node for methods chain.
- *
- * @example
- * const decl1 = postcss.decl({ prop: 'color', value: 'black' })
- * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })
- * rule.append(decl1, decl2)
- *
- * root.append({ name: 'charset', params: '"UTF-8"' }) // at-rule
- * root.append({ selector: 'a' }) // rule
- * rule.append({ prop: 'color', value: 'black' }) // declaration
- * rule.append({ text: 'Comment' }) // comment
- *
- * root.append('a {}')
- * root.first.append('color: black; z-index: 1')
- */
- ;
-
- _proto.append = function append() {
- for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) {
- children[_key] = arguments[_key];
- }
-
- for (var _i = 0, _children = children; _i < _children.length; _i++) {
- var child = _children[_i];
- var nodes = this.normalize(child, this.last);
-
- for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i2 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i2 >= _iterator.length) break;
- _ref = _iterator[_i2++];
- } else {
- _i2 = _iterator.next();
- if (_i2.done) break;
- _ref = _i2.value;
- }
-
- var node = _ref;
- this.nodes.push(node);
- }
- }
-
- return this;
- }
- /**
- * Inserts new nodes to the start of the container.
- *
- * @param {...(Node|object|string|Node[])} children New nodes.
- *
- * @return {Node} This node for methods chain.
- *
- * @example
- * const decl1 = postcss.decl({ prop: 'color', value: 'black' })
- * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })
- * rule.prepend(decl1, decl2)
- *
- * root.append({ name: 'charset', params: '"UTF-8"' }) // at-rule
- * root.append({ selector: 'a' }) // rule
- * rule.append({ prop: 'color', value: 'black' }) // declaration
- * rule.append({ text: 'Comment' }) // comment
- *
- * root.append('a {}')
- * root.first.append('color: black; z-index: 1')
- */
- ;
-
- _proto.prepend = function prepend() {
- for (var _len2 = arguments.length, children = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
- children[_key2] = arguments[_key2];
- }
-
- children = children.reverse();
-
- for (var _iterator2 = children, _isArray2 = Array.isArray(_iterator2), _i3 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
- var _ref2;
-
- if (_isArray2) {
- if (_i3 >= _iterator2.length) break;
- _ref2 = _iterator2[_i3++];
- } else {
- _i3 = _iterator2.next();
- if (_i3.done) break;
- _ref2 = _i3.value;
- }
-
- var child = _ref2;
- var nodes = this.normalize(child, this.first, 'prepend').reverse();
-
- for (var _iterator3 = nodes, _isArray3 = Array.isArray(_iterator3), _i4 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
- var _ref3;
-
- if (_isArray3) {
- if (_i4 >= _iterator3.length) break;
- _ref3 = _iterator3[_i4++];
- } else {
- _i4 = _iterator3.next();
- if (_i4.done) break;
- _ref3 = _i4.value;
- }
-
- var node = _ref3;
- this.nodes.unshift(node);
- }
-
- for (var id in this.indexes) {
- this.indexes[id] = this.indexes[id] + nodes.length;
- }
- }
-
- return this;
- };
-
- _proto.cleanRaws = function cleanRaws(keepBetween) {
- _Node.prototype.cleanRaws.call(this, keepBetween);
-
- if (this.nodes) {
- for (var _iterator4 = this.nodes, _isArray4 = Array.isArray(_iterator4), _i5 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
- var _ref4;
-
- if (_isArray4) {
- if (_i5 >= _iterator4.length) break;
- _ref4 = _iterator4[_i5++];
- } else {
- _i5 = _iterator4.next();
- if (_i5.done) break;
- _ref4 = _i5.value;
- }
-
- var node = _ref4;
- node.cleanRaws(keepBetween);
- }
- }
- }
- /**
- * Insert new node before old node within the container.
- *
- * @param {Node|number} exist Child or child’s index.
- * @param {Node|object|string|Node[]} add New node.
- *
- * @return {Node} This node for methods chain.
- *
- * @example
- * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }))
- */
- ;
-
- _proto.insertBefore = function insertBefore(exist, add) {
- exist = this.index(exist);
- var type = exist === 0 ? 'prepend' : false;
- var nodes = this.normalize(add, this.nodes[exist], type).reverse();
-
- for (var _iterator5 = nodes, _isArray5 = Array.isArray(_iterator5), _i6 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
- var _ref5;
-
- if (_isArray5) {
- if (_i6 >= _iterator5.length) break;
- _ref5 = _iterator5[_i6++];
- } else {
- _i6 = _iterator5.next();
- if (_i6.done) break;
- _ref5 = _i6.value;
- }
-
- var node = _ref5;
- this.nodes.splice(exist, 0, node);
- }
-
- var index;
-
- for (var id in this.indexes) {
- index = this.indexes[id];
-
- if (exist <= index) {
- this.indexes[id] = index + nodes.length;
- }
- }
-
- return this;
- }
- /**
- * Insert new node after old node within the container.
- *
- * @param {Node|number} exist Child or child’s index.
- * @param {Node|object|string|Node[]} add New node.
- *
- * @return {Node} This node for methods chain.
- */
- ;
-
- _proto.insertAfter = function insertAfter(exist, add) {
- exist = this.index(exist);
- var nodes = this.normalize(add, this.nodes[exist]).reverse();
-
- for (var _iterator6 = nodes, _isArray6 = Array.isArray(_iterator6), _i7 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
- var _ref6;
-
- if (_isArray6) {
- if (_i7 >= _iterator6.length) break;
- _ref6 = _iterator6[_i7++];
- } else {
- _i7 = _iterator6.next();
- if (_i7.done) break;
- _ref6 = _i7.value;
- }
-
- var node = _ref6;
- this.nodes.splice(exist + 1, 0, node);
- }
-
- var index;
-
- for (var id in this.indexes) {
- index = this.indexes[id];
-
- if (exist < index) {
- this.indexes[id] = index + nodes.length;
- }
- }
-
- return this;
- }
- /**
- * Removes node from the container and cleans the parent properties
- * from the node and its children.
- *
- * @param {Node|number} child Child or child’s index.
- *
- * @return {Node} This node for methods chain
- *
- * @example
- * rule.nodes.length //=> 5
- * rule.removeChild(decl)
- * rule.nodes.length //=> 4
- * decl.parent //=> undefined
- */
- ;
-
- _proto.removeChild = function removeChild(child) {
- child = this.index(child);
- this.nodes[child].parent = undefined;
- this.nodes.splice(child, 1);
- var index;
-
- for (var id in this.indexes) {
- index = this.indexes[id];
-
- if (index >= child) {
- this.indexes[id] = index - 1;
- }
- }
-
- return this;
- }
- /**
- * Removes all children from the container
- * and cleans their parent properties.
- *
- * @return {Node} This node for methods chain.
- *
- * @example
- * rule.removeAll()
- * rule.nodes.length //=> 0
- */
- ;
-
- _proto.removeAll = function removeAll() {
- for (var _iterator7 = this.nodes, _isArray7 = Array.isArray(_iterator7), _i8 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
- var _ref7;
-
- if (_isArray7) {
- if (_i8 >= _iterator7.length) break;
- _ref7 = _iterator7[_i8++];
- } else {
- _i8 = _iterator7.next();
- if (_i8.done) break;
- _ref7 = _i8.value;
- }
-
- var node = _ref7;
- node.parent = undefined;
- }
-
- this.nodes = [];
- return this;
- }
- /**
- * Passes all declaration values within the container that match pattern
- * through callback, replacing those values with the returned result
- * of callback.
- *
- * This method is useful if you are using a custom unit or function
- * and need to iterate through all values.
- *
- * @param {string|RegExp} pattern Replace pattern.
- * @param {object} opts Options to speed up the search.
- * @param {string|string[]} opts.props An array of property names.
- * @param {string} opts.fast String that’s used to narrow down
- * values and speed up the regexp search.
- * @param {function|string} callback String to replace pattern or callback
- * that returns a new value. The callback
- * will receive the same arguments
- * as those passed to a function parameter
- * of `String#replace`.
- *
- * @return {Node} This node for methods chain.
- *
- * @example
- * root.replaceValues(/\d+rem/, { fast: 'rem' }, string => {
- * return 15 * parseInt(string) + 'px'
- * })
- */
- ;
-
- _proto.replaceValues = function replaceValues(pattern, opts, callback) {
- if (!callback) {
- callback = opts;
- opts = {};
- }
-
- this.walkDecls(function (decl) {
- if (opts.props && opts.props.indexOf(decl.prop) === -1) return;
- if (opts.fast && decl.value.indexOf(opts.fast) === -1) return;
- decl.value = decl.value.replace(pattern, callback);
- });
- return this;
- }
- /**
- * Returns `true` if callback returns `true`
- * for all of the container’s children.
- *
- * @param {childCondition} condition Iterator returns true or false.
- *
- * @return {boolean} Is every child pass condition.
- *
- * @example
- * const noPrefixes = rule.every(i => i.prop[0] !== '-')
- */
- ;
-
- _proto.every = function every(condition) {
- return this.nodes.every(condition);
- }
- /**
- * Returns `true` if callback returns `true` for (at least) one
- * of the container’s children.
- *
- * @param {childCondition} condition Iterator returns true or false.
- *
- * @return {boolean} Is some child pass condition.
- *
- * @example
- * const hasPrefix = rule.some(i => i.prop[0] === '-')
- */
- ;
-
- _proto.some = function some(condition) {
- return this.nodes.some(condition);
- }
- /**
- * Returns a `child`’s index within the {@link Container#nodes} array.
- *
- * @param {Node} child Child of the current container.
- *
- * @return {number} Child index.
- *
- * @example
- * rule.index( rule.nodes[2] ) //=> 2
- */
- ;
-
- _proto.index = function index(child) {
- if (typeof child === 'number') {
- return child;
- }
-
- return this.nodes.indexOf(child);
- }
- /**
- * The container’s first child.
- *
- * @type {Node}
- *
- * @example
- * rule.first === rules.nodes[0]
- */
- ;
-
- _proto.normalize = function normalize(nodes, sample) {
- var _this = this;
-
- if (typeof nodes === 'string') {
- var parse = require('./parse');
-
- nodes = cleanSource(parse(nodes).nodes);
- } else if (Array.isArray(nodes)) {
- nodes = nodes.slice(0);
-
- for (var _iterator8 = nodes, _isArray8 = Array.isArray(_iterator8), _i9 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
- var _ref8;
-
- if (_isArray8) {
- if (_i9 >= _iterator8.length) break;
- _ref8 = _iterator8[_i9++];
- } else {
- _i9 = _iterator8.next();
- if (_i9.done) break;
- _ref8 = _i9.value;
- }
-
- var i = _ref8;
- if (i.parent) i.parent.removeChild(i, 'ignore');
- }
- } else if (nodes.type === 'root') {
- nodes = nodes.nodes.slice(0);
-
- for (var _iterator9 = nodes, _isArray9 = Array.isArray(_iterator9), _i10 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
- var _ref9;
-
- if (_isArray9) {
- if (_i10 >= _iterator9.length) break;
- _ref9 = _iterator9[_i10++];
- } else {
- _i10 = _iterator9.next();
- if (_i10.done) break;
- _ref9 = _i10.value;
- }
-
- var _i11 = _ref9;
- if (_i11.parent) _i11.parent.removeChild(_i11, 'ignore');
- }
- } else if (nodes.type) {
- nodes = [nodes];
- } else if (nodes.prop) {
- if (typeof nodes.value === 'undefined') {
- throw new Error('Value field is missed in node creation');
- } else if (typeof nodes.value !== 'string') {
- nodes.value = String(nodes.value);
- }
-
- nodes = [new _declaration.default(nodes)];
- } else if (nodes.selector) {
- var Rule = require('./rule');
-
- nodes = [new Rule(nodes)];
- } else if (nodes.name) {
- var AtRule = require('./at-rule');
-
- nodes = [new AtRule(nodes)];
- } else if (nodes.text) {
- nodes = [new _comment.default(nodes)];
- } else {
- throw new Error('Unknown node type in node creation');
- }
-
- var processed = nodes.map(function (i) {
- if (i.parent) i.parent.removeChild(i);
-
- if (typeof i.raws.before === 'undefined') {
- if (sample && typeof sample.raws.before !== 'undefined') {
- i.raws.before = sample.raws.before.replace(/[^\s]/g, '');
- }
- }
-
- i.parent = _this;
- return i;
- });
- return processed;
- }
- /**
- * @memberof Container#
- * @member {Node[]} nodes An array containing the container’s children.
- *
- * @example
- * const root = postcss.parse('a { color: black }')
- * root.nodes.length //=> 1
- * root.nodes[0].selector //=> 'a'
- * root.nodes[0].nodes[0].prop //=> 'color'
- */
- ;
-
- _createClass(Container, [{
- key: "first",
- get: function get() {
- if (!this.nodes) return undefined;
- return this.nodes[0];
- }
- /**
- * The container’s last child.
- *
- * @type {Node}
- *
- * @example
- * rule.last === rule.nodes[rule.nodes.length - 1]
- */
-
- }, {
- key: "last",
- get: function get() {
- if (!this.nodes) return undefined;
- return this.nodes[this.nodes.length - 1];
- }
- }]);
-
- return Container;
-}(_node.default);
-
-var _default = Container;
-/**
- * @callback childCondition
- * @param {Node} node Container child.
- * @param {number} index Child index.
- * @param {Node[]} nodes All container children.
- * @return {boolean}
- */
-
-/**
- * @callback childIterator
- * @param {Node} node Container child.
- * @param {number} index Child index.
- * @return {false|undefined} Returning `false` will break iteration.
- */
-
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbnRhaW5lci5lczYiXSwibmFtZXMiOlsiY2xlYW5Tb3VyY2UiLCJub2RlcyIsIm1hcCIsImkiLCJzb3VyY2UiLCJDb250YWluZXIiLCJwdXNoIiwiY2hpbGQiLCJwYXJlbnQiLCJlYWNoIiwiY2FsbGJhY2siLCJsYXN0RWFjaCIsImluZGV4ZXMiLCJpZCIsInVuZGVmaW5lZCIsImluZGV4IiwicmVzdWx0IiwibGVuZ3RoIiwid2FsayIsImUiLCJwb3N0Y3NzTm9kZSIsInN0YWNrIiwidGVzdCIsInMiLCJyZXBsYWNlIiwiaW5wdXQiLCJmcm9tIiwic3RhcnQiLCJsaW5lIiwiY29sdW1uIiwid2Fsa0RlY2xzIiwicHJvcCIsInR5cGUiLCJSZWdFeHAiLCJ3YWxrUnVsZXMiLCJzZWxlY3RvciIsIndhbGtBdFJ1bGVzIiwibmFtZSIsIndhbGtDb21tZW50cyIsImFwcGVuZCIsImNoaWxkcmVuIiwibm9ybWFsaXplIiwibGFzdCIsIm5vZGUiLCJwcmVwZW5kIiwicmV2ZXJzZSIsImZpcnN0IiwidW5zaGlmdCIsImNsZWFuUmF3cyIsImtlZXBCZXR3ZWVuIiwiaW5zZXJ0QmVmb3JlIiwiZXhpc3QiLCJhZGQiLCJzcGxpY2UiLCJpbnNlcnRBZnRlciIsInJlbW92ZUNoaWxkIiwicmVtb3ZlQWxsIiwicmVwbGFjZVZhbHVlcyIsInBhdHRlcm4iLCJvcHRzIiwiZGVjbCIsInByb3BzIiwiaW5kZXhPZiIsImZhc3QiLCJ2YWx1ZSIsImV2ZXJ5IiwiY29uZGl0aW9uIiwic29tZSIsInNhbXBsZSIsInBhcnNlIiwicmVxdWlyZSIsIkFycmF5IiwiaXNBcnJheSIsInNsaWNlIiwiRXJyb3IiLCJTdHJpbmciLCJEZWNsYXJhdGlvbiIsIlJ1bGUiLCJBdFJ1bGUiLCJ0ZXh0IiwiQ29tbWVudCIsInByb2Nlc3NlZCIsInJhd3MiLCJiZWZvcmUiLCJOb2RlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0FBRUEsU0FBU0EsV0FBVCxDQUFzQkMsS0FBdEIsRUFBNkI7QUFDM0IsU0FBT0EsS0FBSyxDQUFDQyxHQUFOLENBQVUsVUFBQUMsQ0FBQyxFQUFJO0FBQ3BCLFFBQUlBLENBQUMsQ0FBQ0YsS0FBTixFQUFhRSxDQUFDLENBQUNGLEtBQUYsR0FBVUQsV0FBVyxDQUFDRyxDQUFDLENBQUNGLEtBQUgsQ0FBckI7QUFDYixXQUFPRSxDQUFDLENBQUNDLE1BQVQ7QUFDQSxXQUFPRCxDQUFQO0FBQ0QsR0FKTSxDQUFQO0FBS0Q7QUFFRDs7Ozs7Ozs7Ozs7O0lBVU1FLFM7Ozs7Ozs7Ozs7O1NBQ0pDLEksR0FBQSxjQUFNQyxLQUFOLEVBQWE7QUFDWEEsSUFBQUEsS0FBSyxDQUFDQyxNQUFOLEdBQWUsSUFBZjtBQUNBLFNBQUtQLEtBQUwsQ0FBV0ssSUFBWCxDQUFnQkMsS0FBaEI7QUFDQSxXQUFPLElBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQWlDQUUsSSxHQUFBLGNBQU1DLFFBQU4sRUFBZ0I7QUFDZCxRQUFJLENBQUMsS0FBS0MsUUFBVixFQUFvQixLQUFLQSxRQUFMLEdBQWdCLENBQWhCO0FBQ3BCLFFBQUksQ0FBQyxLQUFLQyxPQUFWLEVBQW1CLEtBQUtBLE9BQUwsR0FBZSxFQUFmO0FBRW5CLFNBQUtELFFBQUwsSUFBaUIsQ0FBakI7QUFDQSxRQUFJRSxFQUFFLEdBQUcsS0FBS0YsUUFBZDtBQUNBLFNBQUtDLE9BQUwsQ0FBYUMsRUFBYixJQUFtQixDQUFuQjtBQUVBLFFBQUksQ0FBQyxLQUFLWixLQUFWLEVBQWlCLE9BQU9hLFNBQVA7QUFFakIsUUFBSUMsS0FBSixFQUFXQyxNQUFYOztBQUNBLFdBQU8sS0FBS0osT0FBTCxDQUFhQyxFQUFiLElBQW1CLEtBQUtaLEtBQUwsQ0FBV2dCLE1BQXJDLEVBQTZDO0FBQzNDRixNQUFBQSxLQUFLLEdBQUcsS0FBS0gsT0FBTCxDQUFhQyxFQUFiLENBQVI7QUFDQUcsTUFBQUEsTUFBTSxHQUFHTixRQUFRLENBQUMsS0FBS1QsS0FBTCxDQUFXYyxLQUFYLENBQUQsRUFBb0JBLEtBQXBCLENBQWpCO0FBQ0EsVUFBSUMsTUFBTSxLQUFLLEtBQWYsRUFBc0I7QUFFdEIsV0FBS0osT0FBTCxDQUFhQyxFQUFiLEtBQW9CLENBQXBCO0FBQ0Q7O0FBRUQsV0FBTyxLQUFLRCxPQUFMLENBQWFDLEVBQWIsQ0FBUDtBQUVBLFdBQU9HLE1BQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FtQkFFLEksR0FBQSxjQUFNUixRQUFOLEVBQWdCO0FBQ2QsV0FBTyxLQUFLRCxJQUFMLENBQVUsVUFBQ0YsS0FBRCxFQUFRSixDQUFSLEVBQWM7QUFDN0IsVUFBSWEsTUFBSjs7QUFDQSxVQUFJO0FBQ0ZBLFFBQUFBLE1BQU0sR0FBR04sUUFBUSxDQUFDSCxLQUFELEVBQVFKLENBQVIsQ0FBakI7QUFDRCxPQUZELENBRUUsT0FBT2dCLENBQVAsRUFBVTtBQUNWQSxRQUFBQSxDQUFDLENBQUNDLFdBQUYsR0FBZ0JiLEtBQWhCOztBQUNBLFlBQUlZLENBQUMsQ0FBQ0UsS0FBRixJQUFXZCxLQUFLLENBQUNILE1BQWpCLElBQTJCLGFBQWFrQixJQUFiLENBQWtCSCxDQUFDLENBQUNFLEtBQXBCLENBQS9CLEVBQTJEO0FBQ3pELGNBQUlFLENBQUMsR0FBR2hCLEtBQUssQ0FBQ0gsTUFBZDtBQUNBZSxVQUFBQSxDQUFDLENBQUNFLEtBQUYsR0FBVUYsQ0FBQyxDQUFDRSxLQUFGLENBQVFHLE9BQVIsQ0FBZ0IsWUFBaEIsU0FDRkQsQ0FBQyxDQUFDRSxLQUFGLENBQVFDLElBRE4sU0FDZ0JILENBQUMsQ0FBQ0ksS0FBRixDQUFRQyxJQUR4QixTQUNrQ0wsQ0FBQyxDQUFDSSxLQUFGLENBQVFFLE1BRDFDLFFBQVY7QUFFRDs7QUFDRCxjQUFNVixDQUFOO0FBQ0Q7O0FBQ0QsVUFBSUgsTUFBTSxLQUFLLEtBQVgsSUFBb0JULEtBQUssQ0FBQ1csSUFBOUIsRUFBb0M7QUFDbENGLFFBQUFBLE1BQU0sR0FBR1QsS0FBSyxDQUFDVyxJQUFOLENBQVdSLFFBQVgsQ0FBVDtBQUNEOztBQUNELGFBQU9NLE1BQVA7QUFDRCxLQWpCTSxDQUFQO0FBa0JEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0E2QkFjLFMsR0FBQSxtQkFBV0MsSUFBWCxFQUFpQnJCLFFBQWpCLEVBQTJCO0FBQ3pCLFFBQUksQ0FBQ0EsUUFBTCxFQUFlO0FBQ2JBLE1BQUFBLFFBQVEsR0FBR3FCLElBQVg7QUFDQSxhQUFPLEtBQUtiLElBQUwsQ0FBVSxVQUFDWCxLQUFELEVBQVFKLENBQVIsRUFBYztBQUM3QixZQUFJSSxLQUFLLENBQUN5QixJQUFOLEtBQWUsTUFBbkIsRUFBMkI7QUFDekIsaUJBQU90QixRQUFRLENBQUNILEtBQUQsRUFBUUosQ0FBUixDQUFmO0FBQ0Q7QUFDRixPQUpNLENBQVA7QUFLRDs7QUFDRCxRQUFJNEIsSUFBSSxZQUFZRSxNQUFwQixFQUE0QjtBQUMxQixhQUFPLEtBQUtmLElBQUwsQ0FBVSxVQUFDWCxLQUFELEVBQVFKLENBQVIsRUFBYztBQUM3QixZQUFJSSxLQUFLLENBQUN5QixJQUFOLEtBQWUsTUFBZixJQUF5QkQsSUFBSSxDQUFDVCxJQUFMLENBQVVmLEtBQUssQ0FBQ3dCLElBQWhCLENBQTdCLEVBQW9EO0FBQ2xELGlCQUFPckIsUUFBUSxDQUFDSCxLQUFELEVBQVFKLENBQVIsQ0FBZjtBQUNEO0FBQ0YsT0FKTSxDQUFQO0FBS0Q7O0FBQ0QsV0FBTyxLQUFLZSxJQUFMLENBQVUsVUFBQ1gsS0FBRCxFQUFRSixDQUFSLEVBQWM7QUFDN0IsVUFBSUksS0FBSyxDQUFDeUIsSUFBTixLQUFlLE1BQWYsSUFBeUJ6QixLQUFLLENBQUN3QixJQUFOLEtBQWVBLElBQTVDLEVBQWtEO0FBQ2hELGVBQU9yQixRQUFRLENBQUNILEtBQUQsRUFBUUosQ0FBUixDQUFmO0FBQ0Q7QUFDRixLQUpNLENBQVA7QUFLRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBdUJBK0IsUyxHQUFBLG1CQUFXQyxRQUFYLEVBQXFCekIsUUFBckIsRUFBK0I7QUFDN0IsUUFBSSxDQUFDQSxRQUFMLEVBQWU7QUFDYkEsTUFBQUEsUUFBUSxHQUFHeUIsUUFBWDtBQUVBLGFBQU8sS0FBS2pCLElBQUwsQ0FBVSxVQUFDWCxLQUFELEVBQVFKLENBQVIsRUFBYztBQUM3QixZQUFJSSxLQUFLLENBQUN5QixJQUFOLEtBQWUsTUFBbkIsRUFBMkI7QUFDekIsaUJBQU90QixRQUFRLENBQUNILEtBQUQsRUFBUUosQ0FBUixDQUFmO0FBQ0Q7QUFDRixPQUpNLENBQVA7QUFLRDs7QUFDRCxRQUFJZ0MsUUFBUSxZQUFZRixNQUF4QixFQUFnQztBQUM5QixhQUFPLEtBQUtmLElBQUwsQ0FBVSxVQUFDWCxLQUFELEVBQVFKLENBQVIsRUFBYztBQUM3QixZQUFJSSxLQUFLLENBQUN5QixJQUFOLEtBQWUsTUFBZixJQUF5QkcsUUFBUSxDQUFDYixJQUFULENBQWNmLEtBQUssQ0FBQzRCLFFBQXBCLENBQTdCLEVBQTREO0FBQzFELGlCQUFPekIsUUFBUSxDQUFDSCxLQUFELEVBQVFKLENBQVIsQ0FBZjtBQUNEO0FBQ0YsT0FKTSxDQUFQO0FBS0Q7O0FBQ0QsV0FBTyxLQUFLZSxJQUFMLENBQVUsVUFBQ1gsS0FBRCxFQUFRSixDQUFSLEVBQWM7QUFDN0IsVUFBSUksS0FBSyxDQUFDeUIsSUFBTixLQUFlLE1BQWYsSUFBeUJ6QixLQUFLLENBQUM0QixRQUFOLEtBQW1CQSxRQUFoRCxFQUEwRDtBQUN4RCxlQUFPekIsUUFBUSxDQUFDSCxLQUFELEVBQVFKLENBQVIsQ0FBZjtBQUNEO0FBQ0YsS0FKTSxDQUFQO0FBS0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0E4QkFpQyxXLEdBQUEscUJBQWFDLElBQWIsRUFBbUIzQixRQUFuQixFQUE2QjtBQUMzQixRQUFJLENBQUNBLFFBQUwsRUFBZTtBQUNiQSxNQUFBQSxRQUFRLEdBQUcyQixJQUFYO0FBQ0EsYUFBTyxLQUFLbkIsSUFBTCxDQUFVLFVBQUNYLEtBQUQsRUFBUUosQ0FBUixFQUFjO0FBQzdCLFlBQUlJLEtBQUssQ0FBQ3lCLElBQU4sS0FBZSxRQUFuQixFQUE2QjtBQUMzQixpQkFBT3RCLFFBQVEsQ0FBQ0gsS0FBRCxFQUFRSixDQUFSLENBQWY7QUFDRDtBQUNGLE9BSk0sQ0FBUDtBQUtEOztBQUNELFFBQUlrQyxJQUFJLFlBQVlKLE1BQXBCLEVBQTRCO0FBQzFCLGFBQU8sS0FBS2YsSUFBTCxDQUFVLFVBQUNYLEtBQUQsRUFBUUosQ0FBUixFQUFjO0FBQzdCLFlBQUlJLEtBQUssQ0FBQ3lCLElBQU4sS0FBZSxRQUFmLElBQTJCSyxJQUFJLENBQUNmLElBQUwsQ0FBVWYsS0FBSyxDQUFDOEIsSUFBaEIsQ0FBL0IsRUFBc0Q7QUFDcEQsaUJBQU8zQixRQUFRLENBQUNILEtBQUQsRUFBUUosQ0FBUixDQUFmO0FBQ0Q7QUFDRixPQUpNLENBQVA7QUFLRDs7QUFDRCxXQUFPLEtBQUtlLElBQUwsQ0FBVSxVQUFDWCxLQUFELEVBQVFKLENBQVIsRUFBYztBQUM3QixVQUFJSSxLQUFLLENBQUN5QixJQUFOLEtBQWUsUUFBZixJQUEyQnpCLEtBQUssQ0FBQzhCLElBQU4sS0FBZUEsSUFBOUMsRUFBb0Q7QUFDbEQsZUFBTzNCLFFBQVEsQ0FBQ0gsS0FBRCxFQUFRSixDQUFSLENBQWY7QUFDRDtBQUNGLEtBSk0sQ0FBUDtBQUtEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQWdCQW1DLFksR0FBQSxzQkFBYzVCLFFBQWQsRUFBd0I7QUFDdEIsV0FBTyxLQUFLUSxJQUFMLENBQVUsVUFBQ1gsS0FBRCxFQUFRSixDQUFSLEVBQWM7QUFDN0IsVUFBSUksS0FBSyxDQUFDeUIsSUFBTixLQUFlLFNBQW5CLEVBQThCO0FBQzVCLGVBQU90QixRQUFRLENBQUNILEtBQUQsRUFBUUosQ0FBUixDQUFmO0FBQ0Q7QUFDRixLQUpNLENBQVA7QUFLRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBb0JBb0MsTSxHQUFBLGtCQUFxQjtBQUFBLHNDQUFWQyxRQUFVO0FBQVZBLE1BQUFBLFFBQVU7QUFBQTs7QUFDbkIsaUNBQWtCQSxRQUFsQiwrQkFBNEI7QUFBdkIsVUFBSWpDLEtBQUssZ0JBQVQ7QUFDSCxVQUFJTixLQUFLLEdBQUcsS0FBS3dDLFNBQUwsQ0FBZWxDLEtBQWYsRUFBc0IsS0FBS21DLElBQTNCLENBQVo7O0FBQ0EsMkJBQWlCekMsS0FBakI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLFlBQVMwQyxJQUFUO0FBQXdCLGFBQUsxQyxLQUFMLENBQVdLLElBQVgsQ0FBZ0JxQyxJQUFoQjtBQUF4QjtBQUNEOztBQUNELFdBQU8sSUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FvQkFDLE8sR0FBQSxtQkFBc0I7QUFBQSx1Q0FBVkosUUFBVTtBQUFWQSxNQUFBQSxRQUFVO0FBQUE7O0FBQ3BCQSxJQUFBQSxRQUFRLEdBQUdBLFFBQVEsQ0FBQ0ssT0FBVCxFQUFYOztBQUNBLDBCQUFrQkwsUUFBbEIseUhBQTRCO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQSxVQUFuQmpDLEtBQW1CO0FBQzFCLFVBQUlOLEtBQUssR0FBRyxLQUFLd0MsU0FBTCxDQUFlbEMsS0FBZixFQUFzQixLQUFLdUMsS0FBM0IsRUFBa0MsU0FBbEMsRUFBNkNELE9BQTdDLEVBQVo7O0FBQ0EsNEJBQWlCNUMsS0FBakI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLFlBQVMwQyxJQUFUO0FBQXdCLGFBQUsxQyxLQUFMLENBQVc4QyxPQUFYLENBQW1CSixJQUFuQjtBQUF4Qjs7QUFDQSxXQUFLLElBQUk5QixFQUFULElBQWUsS0FBS0QsT0FBcEIsRUFBNkI7QUFDM0IsYUFBS0EsT0FBTCxDQUFhQyxFQUFiLElBQW1CLEtBQUtELE9BQUwsQ0FBYUMsRUFBYixJQUFtQlosS0FBSyxDQUFDZ0IsTUFBNUM7QUFDRDtBQUNGOztBQUNELFdBQU8sSUFBUDtBQUNELEc7O1NBRUQrQixTLEdBQUEsbUJBQVdDLFdBQVgsRUFBd0I7QUFDdEIsb0JBQU1ELFNBQU4sWUFBZ0JDLFdBQWhCOztBQUNBLFFBQUksS0FBS2hELEtBQVQsRUFBZ0I7QUFDZCw0QkFBaUIsS0FBS0EsS0FBdEI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLFlBQVMwQyxJQUFUO0FBQTZCQSxRQUFBQSxJQUFJLENBQUNLLFNBQUwsQ0FBZUMsV0FBZjtBQUE3QjtBQUNEO0FBQ0Y7QUFFRDs7Ozs7Ozs7Ozs7OztTQVdBQyxZLEdBQUEsc0JBQWNDLEtBQWQsRUFBcUJDLEdBQXJCLEVBQTBCO0FBQ3hCRCxJQUFBQSxLQUFLLEdBQUcsS0FBS3BDLEtBQUwsQ0FBV29DLEtBQVgsQ0FBUjtBQUVBLFFBQUluQixJQUFJLEdBQUdtQixLQUFLLEtBQUssQ0FBVixHQUFjLFNBQWQsR0FBMEIsS0FBckM7QUFDQSxRQUFJbEQsS0FBSyxHQUFHLEtBQUt3QyxTQUFMLENBQWVXLEdBQWYsRUFBb0IsS0FBS25ELEtBQUwsQ0FBV2tELEtBQVgsQ0FBcEIsRUFBdUNuQixJQUF2QyxFQUE2Q2EsT0FBN0MsRUFBWjs7QUFDQSwwQkFBaUI1QyxLQUFqQjtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUEsVUFBUzBDLElBQVQ7QUFBd0IsV0FBSzFDLEtBQUwsQ0FBV29ELE1BQVgsQ0FBa0JGLEtBQWxCLEVBQXlCLENBQXpCLEVBQTRCUixJQUE1QjtBQUF4Qjs7QUFFQSxRQUFJNUIsS0FBSjs7QUFDQSxTQUFLLElBQUlGLEVBQVQsSUFBZSxLQUFLRCxPQUFwQixFQUE2QjtBQUMzQkcsTUFBQUEsS0FBSyxHQUFHLEtBQUtILE9BQUwsQ0FBYUMsRUFBYixDQUFSOztBQUNBLFVBQUlzQyxLQUFLLElBQUlwQyxLQUFiLEVBQW9CO0FBQ2xCLGFBQUtILE9BQUwsQ0FBYUMsRUFBYixJQUFtQkUsS0FBSyxHQUFHZCxLQUFLLENBQUNnQixNQUFqQztBQUNEO0FBQ0Y7O0FBRUQsV0FBTyxJQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7OztTQVFBcUMsVyxHQUFBLHFCQUFhSCxLQUFiLEVBQW9CQyxHQUFwQixFQUF5QjtBQUN2QkQsSUFBQUEsS0FBSyxHQUFHLEtBQUtwQyxLQUFMLENBQVdvQyxLQUFYLENBQVI7QUFFQSxRQUFJbEQsS0FBSyxHQUFHLEtBQUt3QyxTQUFMLENBQWVXLEdBQWYsRUFBb0IsS0FBS25ELEtBQUwsQ0FBV2tELEtBQVgsQ0FBcEIsRUFBdUNOLE9BQXZDLEVBQVo7O0FBQ0EsMEJBQWlCNUMsS0FBakI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLFVBQVMwQyxJQUFUO0FBQXdCLFdBQUsxQyxLQUFMLENBQVdvRCxNQUFYLENBQWtCRixLQUFLLEdBQUcsQ0FBMUIsRUFBNkIsQ0FBN0IsRUFBZ0NSLElBQWhDO0FBQXhCOztBQUVBLFFBQUk1QixLQUFKOztBQUNBLFNBQUssSUFBSUYsRUFBVCxJQUFlLEtBQUtELE9BQXBCLEVBQTZCO0FBQzNCRyxNQUFBQSxLQUFLLEdBQUcsS0FBS0gsT0FBTCxDQUFhQyxFQUFiLENBQVI7O0FBQ0EsVUFBSXNDLEtBQUssR0FBR3BDLEtBQVosRUFBbUI7QUFDakIsYUFBS0gsT0FBTCxDQUFhQyxFQUFiLElBQW1CRSxLQUFLLEdBQUdkLEtBQUssQ0FBQ2dCLE1BQWpDO0FBQ0Q7QUFDRjs7QUFFRCxXQUFPLElBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O1NBY0FzQyxXLEdBQUEscUJBQWFoRCxLQUFiLEVBQW9CO0FBQ2xCQSxJQUFBQSxLQUFLLEdBQUcsS0FBS1EsS0FBTCxDQUFXUixLQUFYLENBQVI7QUFDQSxTQUFLTixLQUFMLENBQVdNLEtBQVgsRUFBa0JDLE1BQWxCLEdBQTJCTSxTQUEzQjtBQUNBLFNBQUtiLEtBQUwsQ0FBV29ELE1BQVgsQ0FBa0I5QyxLQUFsQixFQUF5QixDQUF6QjtBQUVBLFFBQUlRLEtBQUo7O0FBQ0EsU0FBSyxJQUFJRixFQUFULElBQWUsS0FBS0QsT0FBcEIsRUFBNkI7QUFDM0JHLE1BQUFBLEtBQUssR0FBRyxLQUFLSCxPQUFMLENBQWFDLEVBQWIsQ0FBUjs7QUFDQSxVQUFJRSxLQUFLLElBQUlSLEtBQWIsRUFBb0I7QUFDbEIsYUFBS0ssT0FBTCxDQUFhQyxFQUFiLElBQW1CRSxLQUFLLEdBQUcsQ0FBM0I7QUFDRDtBQUNGOztBQUVELFdBQU8sSUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7OztTQVVBeUMsUyxHQUFBLHFCQUFhO0FBQ1gsMEJBQWlCLEtBQUt2RCxLQUF0QjtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUEsVUFBUzBDLElBQVQ7QUFBNkJBLE1BQUFBLElBQUksQ0FBQ25DLE1BQUwsR0FBY00sU0FBZDtBQUE3Qjs7QUFDQSxTQUFLYixLQUFMLEdBQWEsRUFBYjtBQUNBLFdBQU8sSUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0EwQkF3RCxhLEdBQUEsdUJBQWVDLE9BQWYsRUFBd0JDLElBQXhCLEVBQThCakQsUUFBOUIsRUFBd0M7QUFDdEMsUUFBSSxDQUFDQSxRQUFMLEVBQWU7QUFDYkEsTUFBQUEsUUFBUSxHQUFHaUQsSUFBWDtBQUNBQSxNQUFBQSxJQUFJLEdBQUcsRUFBUDtBQUNEOztBQUVELFNBQUs3QixTQUFMLENBQWUsVUFBQThCLElBQUksRUFBSTtBQUNyQixVQUFJRCxJQUFJLENBQUNFLEtBQUwsSUFBY0YsSUFBSSxDQUFDRSxLQUFMLENBQVdDLE9BQVgsQ0FBbUJGLElBQUksQ0FBQzdCLElBQXhCLE1BQWtDLENBQUMsQ0FBckQsRUFBd0Q7QUFDeEQsVUFBSTRCLElBQUksQ0FBQ0ksSUFBTCxJQUFhSCxJQUFJLENBQUNJLEtBQUwsQ0FBV0YsT0FBWCxDQUFtQkgsSUFBSSxDQUFDSSxJQUF4QixNQUFrQyxDQUFDLENBQXBELEVBQXVEO0FBRXZESCxNQUFBQSxJQUFJLENBQUNJLEtBQUwsR0FBYUosSUFBSSxDQUFDSSxLQUFMLENBQVd4QyxPQUFYLENBQW1Ca0MsT0FBbkIsRUFBNEJoRCxRQUE1QixDQUFiO0FBQ0QsS0FMRDtBQU9BLFdBQU8sSUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7U0FXQXVELEssR0FBQSxlQUFPQyxTQUFQLEVBQWtCO0FBQ2hCLFdBQU8sS0FBS2pFLEtBQUwsQ0FBV2dFLEtBQVgsQ0FBaUJDLFNBQWpCLENBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7O1NBV0FDLEksR0FBQSxjQUFNRCxTQUFOLEVBQWlCO0FBQ2YsV0FBTyxLQUFLakUsS0FBTCxDQUFXa0UsSUFBWCxDQUFnQkQsU0FBaEIsQ0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7OztTQVVBbkQsSyxHQUFBLGVBQU9SLEtBQVAsRUFBYztBQUNaLFFBQUksT0FBT0EsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUM3QixhQUFPQSxLQUFQO0FBQ0Q7O0FBQ0QsV0FBTyxLQUFLTixLQUFMLENBQVc2RCxPQUFYLENBQW1CdkQsS0FBbkIsQ0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7U0EwQkFrQyxTLEdBQUEsbUJBQVd4QyxLQUFYLEVBQWtCbUUsTUFBbEIsRUFBMEI7QUFBQTs7QUFDeEIsUUFBSSxPQUFPbkUsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUM3QixVQUFJb0UsS0FBSyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUFuQjs7QUFDQXJFLE1BQUFBLEtBQUssR0FBR0QsV0FBVyxDQUFDcUUsS0FBSyxDQUFDcEUsS0FBRCxDQUFMLENBQWFBLEtBQWQsQ0FBbkI7QUFDRCxLQUhELE1BR08sSUFBSXNFLEtBQUssQ0FBQ0MsT0FBTixDQUFjdkUsS0FBZCxDQUFKLEVBQTBCO0FBQy9CQSxNQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ3dFLEtBQU4sQ0FBWSxDQUFaLENBQVI7O0FBQ0EsNEJBQWN4RSxLQUFkLHlIQUFxQjtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUEsWUFBWkUsQ0FBWTtBQUNuQixZQUFJQSxDQUFDLENBQUNLLE1BQU4sRUFBY0wsQ0FBQyxDQUFDSyxNQUFGLENBQVMrQyxXQUFULENBQXFCcEQsQ0FBckIsRUFBd0IsUUFBeEI7QUFDZjtBQUNGLEtBTE0sTUFLQSxJQUFJRixLQUFLLENBQUMrQixJQUFOLEtBQWUsTUFBbkIsRUFBMkI7QUFDaEMvQixNQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ0EsS0FBTixDQUFZd0UsS0FBWixDQUFrQixDQUFsQixDQUFSOztBQUNBLDRCQUFjeEUsS0FBZCwwSEFBcUI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLFlBQVpFLElBQVk7QUFDbkIsWUFBSUEsSUFBQyxDQUFDSyxNQUFOLEVBQWNMLElBQUMsQ0FBQ0ssTUFBRixDQUFTK0MsV0FBVCxDQUFxQnBELElBQXJCLEVBQXdCLFFBQXhCO0FBQ2Y7QUFDRixLQUxNLE1BS0EsSUFBSUYsS0FBSyxDQUFDK0IsSUFBVixFQUFnQjtBQUNyQi9CLE1BQUFBLEtBQUssR0FBRyxDQUFDQSxLQUFELENBQVI7QUFDRCxLQUZNLE1BRUEsSUFBSUEsS0FBSyxDQUFDOEIsSUFBVixFQUFnQjtBQUNyQixVQUFJLE9BQU85QixLQUFLLENBQUMrRCxLQUFiLEtBQXVCLFdBQTNCLEVBQXdDO0FBQ3RDLGNBQU0sSUFBSVUsS0FBSixDQUFVLHdDQUFWLENBQU47QUFDRCxPQUZELE1BRU8sSUFBSSxPQUFPekUsS0FBSyxDQUFDK0QsS0FBYixLQUF1QixRQUEzQixFQUFxQztBQUMxQy9ELFFBQUFBLEtBQUssQ0FBQytELEtBQU4sR0FBY1csTUFBTSxDQUFDMUUsS0FBSyxDQUFDK0QsS0FBUCxDQUFwQjtBQUNEOztBQUNEL0QsTUFBQUEsS0FBSyxHQUFHLENBQUMsSUFBSTJFLG9CQUFKLENBQWdCM0UsS0FBaEIsQ0FBRCxDQUFSO0FBQ0QsS0FQTSxNQU9BLElBQUlBLEtBQUssQ0FBQ2tDLFFBQVYsRUFBb0I7QUFDekIsVUFBSTBDLElBQUksR0FBR1AsT0FBTyxDQUFDLFFBQUQsQ0FBbEI7O0FBQ0FyRSxNQUFBQSxLQUFLLEdBQUcsQ0FBQyxJQUFJNEUsSUFBSixDQUFTNUUsS0FBVCxDQUFELENBQVI7QUFDRCxLQUhNLE1BR0EsSUFBSUEsS0FBSyxDQUFDb0MsSUFBVixFQUFnQjtBQUNyQixVQUFJeUMsTUFBTSxHQUFHUixPQUFPLENBQUMsV0FBRCxDQUFwQjs7QUFDQXJFLE1BQUFBLEtBQUssR0FBRyxDQUFDLElBQUk2RSxNQUFKLENBQVc3RSxLQUFYLENBQUQsQ0FBUjtBQUNELEtBSE0sTUFHQSxJQUFJQSxLQUFLLENBQUM4RSxJQUFWLEVBQWdCO0FBQ3JCOUUsTUFBQUEsS0FBSyxHQUFHLENBQUMsSUFBSStFLGdCQUFKLENBQVkvRSxLQUFaLENBQUQsQ0FBUjtBQUNELEtBRk0sTUFFQTtBQUNMLFlBQU0sSUFBSXlFLEtBQUosQ0FBVSxvQ0FBVixDQUFOO0FBQ0Q7O0FBRUQsUUFBSU8sU0FBUyxHQUFHaEYsS0FBSyxDQUFDQyxHQUFOLENBQVUsVUFBQUMsQ0FBQyxFQUFJO0FBQzdCLFVBQUlBLENBQUMsQ0FBQ0ssTUFBTixFQUFjTCxDQUFDLENBQUNLLE1BQUYsQ0FBUytDLFdBQVQsQ0FBcUJwRCxDQUFyQjs7QUFDZCxVQUFJLE9BQU9BLENBQUMsQ0FBQytFLElBQUYsQ0FBT0MsTUFBZCxLQUF5QixXQUE3QixFQUEwQztBQUN4QyxZQUFJZixNQUFNLElBQUksT0FBT0EsTUFBTSxDQUFDYyxJQUFQLENBQVlDLE1BQW5CLEtBQThCLFdBQTVDLEVBQXlEO0FBQ3ZEaEYsVUFBQUEsQ0FBQyxDQUFDK0UsSUFBRixDQUFPQyxNQUFQLEdBQWdCZixNQUFNLENBQUNjLElBQVAsQ0FBWUMsTUFBWixDQUFtQjNELE9BQW5CLENBQTJCLFFBQTNCLEVBQXFDLEVBQXJDLENBQWhCO0FBQ0Q7QUFDRjs7QUFDRHJCLE1BQUFBLENBQUMsQ0FBQ0ssTUFBRixHQUFXLEtBQVg7QUFDQSxhQUFPTCxDQUFQO0FBQ0QsS0FUZSxDQUFoQjtBQVdBLFdBQU84RSxTQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7d0JBbkVhO0FBQ1gsVUFBSSxDQUFDLEtBQUtoRixLQUFWLEVBQWlCLE9BQU9hLFNBQVA7QUFDakIsYUFBTyxLQUFLYixLQUFMLENBQVcsQ0FBWCxDQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7d0JBUVk7QUFDVixVQUFJLENBQUMsS0FBS0EsS0FBVixFQUFpQixPQUFPYSxTQUFQO0FBQ2pCLGFBQU8sS0FBS2IsS0FBTCxDQUFXLEtBQUtBLEtBQUwsQ0FBV2dCLE1BQVgsR0FBb0IsQ0FBL0IsQ0FBUDtBQUNEOzs7O0VBaGpCcUJtRSxhOztlQSttQlQvRSxTO0FBRWY7Ozs7Ozs7O0FBUUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbidcbmltcG9ydCBDb21tZW50IGZyb20gJy4vY29tbWVudCdcbmltcG9ydCBOb2RlIGZyb20gJy4vbm9kZSdcblxuZnVuY3Rpb24gY2xlYW5Tb3VyY2UgKG5vZGVzKSB7XG4gIHJldHVybiBub2Rlcy5tYXAoaSA9PiB7XG4gICAgaWYgKGkubm9kZXMpIGkubm9kZXMgPSBjbGVhblNvdXJjZShpLm5vZGVzKVxuICAgIGRlbGV0ZSBpLnNvdXJjZVxuICAgIHJldHVybiBpXG4gIH0pXG59XG5cbi8qKlxuICogVGhlIHtAbGluayBSb290fSwge0BsaW5rIEF0UnVsZX0sIGFuZCB7QGxpbmsgUnVsZX0gY29udGFpbmVyIG5vZGVzXG4gKiBpbmhlcml0IHNvbWUgY29tbW9uIG1ldGhvZHMgdG8gaGVscCB3b3JrIHdpdGggdGhlaXIgY2hpbGRyZW4uXG4gKlxuICogTm90ZSB0aGF0IGFsbCBjb250YWluZXJzIGNhbiBzdG9yZSBhbnkgY29udGVudC4gSWYgeW91IHdyaXRlIGEgcnVsZSBpbnNpZGVcbiAqIGEgcnVsZSwgUG9zdENTUyB3aWxsIHBhcnNlIGl0LlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqIEBhYnN0cmFjdFxuICovXG5jbGFzcyBDb250YWluZXIgZXh0ZW5kcyBOb2RlIHtcbiAgcHVzaCAoY2hpbGQpIHtcbiAgICBjaGlsZC5wYXJlbnQgPSB0aGlzXG4gICAgdGhpcy5ub2Rlcy5wdXNoKGNoaWxkKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogSXRlcmF0ZXMgdGhyb3VnaCB0aGUgY29udGFpbmVy4oCZcyBpbW1lZGlhdGUgY2hpbGRyZW4sXG4gICAqIGNhbGxpbmcgYGNhbGxiYWNrYCBmb3IgZWFjaCBjaGlsZC5cbiAgICpcbiAgICogUmV0dXJuaW5nIGBmYWxzZWAgaW4gdGhlIGNhbGxiYWNrIHdpbGwgYnJlYWsgaXRlcmF0aW9uLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBvbmx5IGl0ZXJhdGVzIHRocm91Z2ggdGhlIGNvbnRhaW5lcuKAmXMgaW1tZWRpYXRlIGNoaWxkcmVuLlxuICAgKiBJZiB5b3UgbmVlZCB0byByZWN1cnNpdmVseSBpdGVyYXRlIHRocm91Z2ggYWxsIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnRcbiAgICogbm9kZXMsIHVzZSB7QGxpbmsgQ29udGFpbmVyI3dhbGt9LlxuICAgKlxuICAgKiBVbmxpa2UgdGhlIGZvciBge31gLWN5Y2xlIG9yIGBBcnJheSNmb3JFYWNoYCB0aGlzIGl0ZXJhdG9yIGlzIHNhZmVcbiAgICogaWYgeW91IGFyZSBtdXRhdGluZyB0aGUgYXJyYXkgb2YgY2hpbGQgbm9kZXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICogUG9zdENTUyB3aWxsIGFkanVzdCB0aGUgY3VycmVudCBpbmRleCB0byBtYXRjaCB0aGUgbXV0YXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrIEl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXguXG4gICAqXG4gICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gUmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrOyB6LWluZGV4OiAxIH0nKVxuICAgKiBjb25zdCBydWxlID0gcm9vdC5maXJzdFxuICAgKlxuICAgKiBmb3IgKGNvbnN0IGRlY2wgb2YgcnVsZS5ub2Rlcykge1xuICAgKiAgIGRlY2wuY2xvbmVCZWZvcmUoeyBwcm9wOiAnLXdlYmtpdC0nICsgZGVjbC5wcm9wIH0pXG4gICAqICAgLy8gQ3ljbGUgd2lsbCBiZSBpbmZpbml0ZSwgYmVjYXVzZSBjbG9uZUJlZm9yZSBtb3ZlcyB0aGUgY3VycmVudCBub2RlXG4gICAqICAgLy8gdG8gdGhlIG5leHQgaW5kZXhcbiAgICogfVxuICAgKlxuICAgKiBydWxlLmVhY2goZGVjbCA9PiB7XG4gICAqICAgZGVjbC5jbG9uZUJlZm9yZSh7IHByb3A6ICctd2Via2l0LScgKyBkZWNsLnByb3AgfSlcbiAgICogICAvLyBXaWxsIGJlIGV4ZWN1dGVkIG9ubHkgZm9yIGNvbG9yIGFuZCB6LWluZGV4XG4gICAqIH0pXG4gICAqL1xuICBlYWNoIChjYWxsYmFjaykge1xuICAgIGlmICghdGhpcy5sYXN0RWFjaCkgdGhpcy5sYXN0RWFjaCA9IDBcbiAgICBpZiAoIXRoaXMuaW5kZXhlcykgdGhpcy5pbmRleGVzID0geyB9XG5cbiAgICB0aGlzLmxhc3RFYWNoICs9IDFcbiAgICBsZXQgaWQgPSB0aGlzLmxhc3RFYWNoXG4gICAgdGhpcy5pbmRleGVzW2lkXSA9IDBcblxuICAgIGlmICghdGhpcy5ub2RlcykgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgbGV0IGluZGV4LCByZXN1bHRcbiAgICB3aGlsZSAodGhpcy5pbmRleGVzW2lkXSA8IHRoaXMubm9kZXMubGVuZ3RoKSB7XG4gICAgICBpbmRleCA9IHRoaXMuaW5kZXhlc1tpZF1cbiAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKHRoaXMubm9kZXNbaW5kZXhdLCBpbmRleClcbiAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKSBicmVha1xuXG4gICAgICB0aGlzLmluZGV4ZXNbaWRdICs9IDFcbiAgICB9XG5cbiAgICBkZWxldGUgdGhpcy5pbmRleGVzW2lkXVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB0aGUgY29udGFpbmVy4oCZcyBkZXNjZW5kYW50IG5vZGVzLCBjYWxsaW5nIGNhbGxiYWNrXG4gICAqIGZvciBlYWNoIG5vZGUuXG4gICAqXG4gICAqIExpa2UgY29udGFpbmVyLmVhY2goKSwgdGhpcyBtZXRob2QgaXMgc2FmZSB0byB1c2VcbiAgICogaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICpcbiAgICogSWYgeW91IG9ubHkgbmVlZCB0byBpdGVyYXRlIHRocm91Z2ggdGhlIGNvbnRhaW5lcuKAmXMgaW1tZWRpYXRlIGNoaWxkcmVuLFxuICAgKiB1c2Uge0BsaW5rIENvbnRhaW5lciNlYWNofS5cbiAgICpcbiAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayBJdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4LlxuICAgKlxuICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IFJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByb290LndhbGsobm9kZSA9PiB7XG4gICAqICAgLy8gVHJhdmVyc2VzIGFsbCBkZXNjZW5kYW50IG5vZGVzLlxuICAgKiB9KVxuICAgKi9cbiAgd2FsayAoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKChjaGlsZCwgaSkgPT4ge1xuICAgICAgbGV0IHJlc3VsdFxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGUucG9zdGNzc05vZGUgPSBjaGlsZFxuICAgICAgICBpZiAoZS5zdGFjayAmJiBjaGlsZC5zb3VyY2UgJiYgL1xcblxcc3s0fWF0IC8udGVzdChlLnN0YWNrKSkge1xuICAgICAgICAgIGxldCBzID0gY2hpbGQuc291cmNlXG4gICAgICAgICAgZS5zdGFjayA9IGUuc3RhY2sucmVwbGFjZSgvXFxuXFxzezR9YXQgLyxcbiAgICAgICAgICAgIGAkJiR7IHMuaW5wdXQuZnJvbSB9OiR7IHMuc3RhcnQubGluZSB9OiR7IHMuc3RhcnQuY29sdW1uIH0kJmApXG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZVxuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UgJiYgY2hpbGQud2Fsaykge1xuICAgICAgICByZXN1bHQgPSBjaGlsZC53YWxrKGNhbGxiYWNrKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnQgbm9kZXMsIGNhbGxpbmcgY2FsbGJhY2tcbiAgICogZm9yIGVhY2ggZGVjbGFyYXRpb24gbm9kZS5cbiAgICpcbiAgICogSWYgeW91IHBhc3MgYSBmaWx0ZXIsIGl0ZXJhdGlvbiB3aWxsIG9ubHkgaGFwcGVuIG92ZXIgZGVjbGFyYXRpb25zXG4gICAqIHdpdGggbWF0Y2hpbmcgcHJvcGVydGllcy5cbiAgICpcbiAgICogTGlrZSB7QGxpbmsgQ29udGFpbmVyI2VhY2h9LCB0aGlzIG1ldGhvZCBpcyBzYWZlXG4gICAqIHRvIHVzZSBpZiB5b3UgYXJlIG11dGF0aW5nIGFycmF5cyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IFtwcm9wXSAgIFN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb25cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmaWx0ZXIgZGVjbGFyYXRpb25zIGJ5IHByb3BlcnR5IG5hbWUuXG4gICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgSXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSBSZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC53YWxrRGVjbHMoZGVjbCA9PiB7XG4gICAqICAgY2hlY2tQcm9wZXJ0eVN1cHBvcnQoZGVjbC5wcm9wKVxuICAgKiB9KVxuICAgKlxuICAgKiByb290LndhbGtEZWNscygnYm9yZGVyLXJhZGl1cycsIGRlY2wgPT4ge1xuICAgKiAgIGRlY2wucmVtb3ZlKClcbiAgICogfSlcbiAgICpcbiAgICogcm9vdC53YWxrRGVjbHMoL15iYWNrZ3JvdW5kLywgZGVjbCA9PiB7XG4gICAqICAgZGVjbC52YWx1ZSA9IHRha2VGaXJzdENvbG9yRnJvbUdyYWRpZW50KGRlY2wudmFsdWUpXG4gICAqIH0pXG4gICAqL1xuICB3YWxrRGVjbHMgKHByb3AsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sgPSBwcm9wXG4gICAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2RlY2wnKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAocHJvcCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdkZWNsJyAmJiBwcm9wLnRlc3QoY2hpbGQucHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2RlY2wnICYmIGNoaWxkLnByb3AgPT09IHByb3ApIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnQgbm9kZXMsIGNhbGxpbmcgY2FsbGJhY2tcbiAgICogZm9yIGVhY2ggcnVsZSBub2RlLlxuICAgKlxuICAgKiBJZiB5b3UgcGFzcyBhIGZpbHRlciwgaXRlcmF0aW9uIHdpbGwgb25seSBoYXBwZW4gb3ZlciBydWxlc1xuICAgKiB3aXRoIG1hdGNoaW5nIHNlbGVjdG9ycy5cbiAgICpcbiAgICogTGlrZSB7QGxpbmsgQ29udGFpbmVyI2VhY2h9LCB0aGlzIG1ldGhvZCBpcyBzYWZlXG4gICAqIHRvIHVzZSBpZiB5b3UgYXJlIG11dGF0aW5nIGFycmF5cyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IFtzZWxlY3Rvcl0gU3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZmlsdGVyIHJ1bGVzIGJ5IHNlbGVjdG9yLlxuICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrICAgSXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSByZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgc2VsZWN0b3JzID0gW11cbiAgICogcm9vdC53YWxrUnVsZXMocnVsZSA9PiB7XG4gICAqICAgc2VsZWN0b3JzLnB1c2gocnVsZS5zZWxlY3RvcilcbiAgICogfSlcbiAgICogY29uc29sZS5sb2coYFlvdXIgQ1NTIHVzZXMgJHsgc2VsZWN0b3JzLmxlbmd0aCB9IHNlbGVjdG9yc2ApXG4gICAqL1xuICB3YWxrUnVsZXMgKHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrID0gc2VsZWN0b3JcblxuICAgICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdydWxlJykge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHNlbGVjdG9yIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ3J1bGUnICYmIHNlbGVjdG9yLnRlc3QoY2hpbGQuc2VsZWN0b3IpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdydWxlJyAmJiBjaGlsZC5zZWxlY3RvciA9PT0gc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnQgbm9kZXMsIGNhbGxpbmcgY2FsbGJhY2tcbiAgICogZm9yIGVhY2ggYXQtcnVsZSBub2RlLlxuICAgKlxuICAgKiBJZiB5b3UgcGFzcyBhIGZpbHRlciwgaXRlcmF0aW9uIHdpbGwgb25seSBoYXBwZW4gb3ZlciBhdC1ydWxlc1xuICAgKiB0aGF0IGhhdmUgbWF0Y2hpbmcgbmFtZXMuXG4gICAqXG4gICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgKiB0byB1c2UgaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSBbbmFtZV0gICBTdHJpbmcgb3IgcmVndWxhciBleHByZXNzaW9uXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZmlsdGVyIGF0LXJ1bGVzIGJ5IG5hbWUuXG4gICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgSXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSBSZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC53YWxrQXRSdWxlcyhydWxlID0+IHtcbiAgICogICBpZiAoaXNPbGQocnVsZS5uYW1lKSkgcnVsZS5yZW1vdmUoKVxuICAgKiB9KVxuICAgKlxuICAgKiBsZXQgZmlyc3QgPSBmYWxzZVxuICAgKiByb290LndhbGtBdFJ1bGVzKCdjaGFyc2V0JywgcnVsZSA9PiB7XG4gICAqICAgaWYgKCFmaXJzdCkge1xuICAgKiAgICAgZmlyc3QgPSB0cnVlXG4gICAqICAgfSBlbHNlIHtcbiAgICogICAgIHJ1bGUucmVtb3ZlKClcbiAgICogICB9XG4gICAqIH0pXG4gICAqL1xuICB3YWxrQXRSdWxlcyAobmFtZSwgY2FsbGJhY2spIHtcbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayA9IG5hbWVcbiAgICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAnYXRydWxlJykge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKG5hbWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAnYXRydWxlJyAmJiBuYW1lLnRlc3QoY2hpbGQubmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2F0cnVsZScgJiYgY2hpbGQubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgKiBmb3IgZWFjaCBjb21tZW50IG5vZGUuXG4gICAqXG4gICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgKiB0byB1c2UgaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayBJdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4LlxuICAgKlxuICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IFJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByb290LndhbGtDb21tZW50cyhjb21tZW50ID0+IHtcbiAgICogICBjb21tZW50LnJlbW92ZSgpXG4gICAqIH0pXG4gICAqL1xuICB3YWxrQ29tbWVudHMgKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgIGlmIChjaGlsZC50eXBlID09PSAnY29tbWVudCcpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0cyBuZXcgbm9kZXMgdG8gdGhlIGVuZCBvZiB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAcGFyYW0gey4uLihOb2RlfG9iamVjdHxzdHJpbmd8Tm9kZVtdKX0gY2hpbGRyZW4gTmV3IG5vZGVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IGRlY2wxID0gcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSlcbiAgICogY29uc3QgZGVjbDIgPSBwb3N0Y3NzLmRlY2woeyBwcm9wOiAnYmFja2dyb3VuZC1jb2xvcicsIHZhbHVlOiAnd2hpdGUnIH0pXG4gICAqIHJ1bGUuYXBwZW5kKGRlY2wxLCBkZWNsMilcbiAgICpcbiAgICogcm9vdC5hcHBlbmQoeyBuYW1lOiAnY2hhcnNldCcsIHBhcmFtczogJ1wiVVRGLThcIicgfSkgIC8vIGF0LXJ1bGVcbiAgICogcm9vdC5hcHBlbmQoeyBzZWxlY3RvcjogJ2EnIH0pICAgICAgICAgICAgICAgICAgICAgICAvLyBydWxlXG4gICAqIHJ1bGUuYXBwZW5kKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSkgICAgICAgLy8gZGVjbGFyYXRpb25cbiAgICogcnVsZS5hcHBlbmQoeyB0ZXh0OiAnQ29tbWVudCcgfSkgICAgICAgICAgICAgICAgICAgICAvLyBjb21tZW50XG4gICAqXG4gICAqIHJvb3QuYXBwZW5kKCdhIHt9JylcbiAgICogcm9vdC5maXJzdC5hcHBlbmQoJ2NvbG9yOiBibGFjazsgei1pbmRleDogMScpXG4gICAqL1xuICBhcHBlbmQgKC4uLmNoaWxkcmVuKSB7XG4gICAgZm9yIChsZXQgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGxldCBub2RlcyA9IHRoaXMubm9ybWFsaXplKGNoaWxkLCB0aGlzLmxhc3QpXG4gICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB0aGlzLm5vZGVzLnB1c2gobm9kZSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnRzIG5ldyBub2RlcyB0byB0aGUgc3RhcnQgb2YgdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIHsuLi4oTm9kZXxvYmplY3R8c3RyaW5nfE5vZGVbXSl9IGNoaWxkcmVuIE5ldyBub2Rlcy5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBkZWNsMSA9IHBvc3Rjc3MuZGVjbCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pXG4gICAqIGNvbnN0IGRlY2wyID0gcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2JhY2tncm91bmQtY29sb3InLCB2YWx1ZTogJ3doaXRlJyB9KVxuICAgKiBydWxlLnByZXBlbmQoZGVjbDEsIGRlY2wyKVxuICAgKlxuICAgKiByb290LmFwcGVuZCh7IG5hbWU6ICdjaGFyc2V0JywgcGFyYW1zOiAnXCJVVEYtOFwiJyB9KSAgLy8gYXQtcnVsZVxuICAgKiByb290LmFwcGVuZCh7IHNlbGVjdG9yOiAnYScgfSkgICAgICAgICAgICAgICAgICAgICAgIC8vIHJ1bGVcbiAgICogcnVsZS5hcHBlbmQoeyBwcm9wOiAnY29sb3InLCB2YWx1ZTogJ2JsYWNrJyB9KSAgICAgICAvLyBkZWNsYXJhdGlvblxuICAgKiBydWxlLmFwcGVuZCh7IHRleHQ6ICdDb21tZW50JyB9KSAgICAgICAgICAgICAgICAgICAgIC8vIGNvbW1lbnRcbiAgICpcbiAgICogcm9vdC5hcHBlbmQoJ2Ege30nKVxuICAgKiByb290LmZpcnN0LmFwcGVuZCgnY29sb3I6IGJsYWNrOyB6LWluZGV4OiAxJylcbiAgICovXG4gIHByZXBlbmQgKC4uLmNoaWxkcmVuKSB7XG4gICAgY2hpbGRyZW4gPSBjaGlsZHJlbi5yZXZlcnNlKClcbiAgICBmb3IgKGxldCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoY2hpbGQsIHRoaXMuZmlyc3QsICdwcmVwZW5kJykucmV2ZXJzZSgpXG4gICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB0aGlzLm5vZGVzLnVuc2hpZnQobm9kZSlcbiAgICAgIGZvciAobGV0IGlkIGluIHRoaXMuaW5kZXhlcykge1xuICAgICAgICB0aGlzLmluZGV4ZXNbaWRdID0gdGhpcy5pbmRleGVzW2lkXSArIG5vZGVzLmxlbmd0aFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgY2xlYW5SYXdzIChrZWVwQmV0d2Vlbikge1xuICAgIHN1cGVyLmNsZWFuUmF3cyhrZWVwQmV0d2VlbilcbiAgICBpZiAodGhpcy5ub2Rlcykge1xuICAgICAgZm9yIChsZXQgbm9kZSBvZiB0aGlzLm5vZGVzKSBub2RlLmNsZWFuUmF3cyhrZWVwQmV0d2VlbilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0IG5ldyBub2RlIGJlZm9yZSBvbGQgbm9kZSB3aXRoaW4gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfG51bWJlcn0gZXhpc3QgICAgICAgICAgICAgQ2hpbGQgb3IgY2hpbGTigJlzIGluZGV4LlxuICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCBOZXcgbm9kZS5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBydWxlLmluc2VydEJlZm9yZShkZWNsLCBkZWNsLmNsb25lKHsgcHJvcDogJy13ZWJraXQtJyArIGRlY2wucHJvcCB9KSlcbiAgICovXG4gIGluc2VydEJlZm9yZSAoZXhpc3QsIGFkZCkge1xuICAgIGV4aXN0ID0gdGhpcy5pbmRleChleGlzdClcblxuICAgIGxldCB0eXBlID0gZXhpc3QgPT09IDAgPyAncHJlcGVuZCcgOiBmYWxzZVxuICAgIGxldCBub2RlcyA9IHRoaXMubm9ybWFsaXplKGFkZCwgdGhpcy5ub2Rlc1tleGlzdF0sIHR5cGUpLnJldmVyc2UoKVxuICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHRoaXMubm9kZXMuc3BsaWNlKGV4aXN0LCAwLCBub2RlKVxuXG4gICAgbGV0IGluZGV4XG4gICAgZm9yIChsZXQgaWQgaW4gdGhpcy5pbmRleGVzKSB7XG4gICAgICBpbmRleCA9IHRoaXMuaW5kZXhlc1tpZF1cbiAgICAgIGlmIChleGlzdCA8PSBpbmRleCkge1xuICAgICAgICB0aGlzLmluZGV4ZXNbaWRdID0gaW5kZXggKyBub2Rlcy5sZW5ndGhcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBuZXcgbm9kZSBhZnRlciBvbGQgbm9kZSB3aXRoaW4gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfG51bWJlcn0gZXhpc3QgICAgICAgICAgICAgQ2hpbGQgb3IgY2hpbGTigJlzIGluZGV4LlxuICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCBOZXcgbm9kZS5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKi9cbiAgaW5zZXJ0QWZ0ZXIgKGV4aXN0LCBhZGQpIHtcbiAgICBleGlzdCA9IHRoaXMuaW5kZXgoZXhpc3QpXG5cbiAgICBsZXQgbm9kZXMgPSB0aGlzLm5vcm1hbGl6ZShhZGQsIHRoaXMubm9kZXNbZXhpc3RdKS5yZXZlcnNlKClcbiAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB0aGlzLm5vZGVzLnNwbGljZShleGlzdCArIDEsIDAsIG5vZGUpXG5cbiAgICBsZXQgaW5kZXhcbiAgICBmb3IgKGxldCBpZCBpbiB0aGlzLmluZGV4ZXMpIHtcbiAgICAgIGluZGV4ID0gdGhpcy5pbmRleGVzW2lkXVxuICAgICAgaWYgKGV4aXN0IDwgaW5kZXgpIHtcbiAgICAgICAgdGhpcy5pbmRleGVzW2lkXSA9IGluZGV4ICsgbm9kZXMubGVuZ3RoXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIG5vZGUgZnJvbSB0aGUgY29udGFpbmVyIGFuZCBjbGVhbnMgdGhlIHBhcmVudCBwcm9wZXJ0aWVzXG4gICAqIGZyb20gdGhlIG5vZGUgYW5kIGl0cyBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfG51bWJlcn0gY2hpbGQgQ2hpbGQgb3IgY2hpbGTigJlzIGluZGV4LlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5ub2Rlcy5sZW5ndGggIC8vPT4gNVxuICAgKiBydWxlLnJlbW92ZUNoaWxkKGRlY2wpXG4gICAqIHJ1bGUubm9kZXMubGVuZ3RoICAvLz0+IDRcbiAgICogZGVjbC5wYXJlbnQgICAgICAgIC8vPT4gdW5kZWZpbmVkXG4gICAqL1xuICByZW1vdmVDaGlsZCAoY2hpbGQpIHtcbiAgICBjaGlsZCA9IHRoaXMuaW5kZXgoY2hpbGQpXG4gICAgdGhpcy5ub2Rlc1tjaGlsZF0ucGFyZW50ID0gdW5kZWZpbmVkXG4gICAgdGhpcy5ub2Rlcy5zcGxpY2UoY2hpbGQsIDEpXG5cbiAgICBsZXQgaW5kZXhcbiAgICBmb3IgKGxldCBpZCBpbiB0aGlzLmluZGV4ZXMpIHtcbiAgICAgIGluZGV4ID0gdGhpcy5pbmRleGVzW2lkXVxuICAgICAgaWYgKGluZGV4ID49IGNoaWxkKSB7XG4gICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSBpbmRleCAtIDFcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYWxsIGNoaWxkcmVuIGZyb20gdGhlIGNvbnRhaW5lclxuICAgKiBhbmQgY2xlYW5zIHRoZWlyIHBhcmVudCBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJ1bGUucmVtb3ZlQWxsKClcbiAgICogcnVsZS5ub2Rlcy5sZW5ndGggLy89PiAwXG4gICAqL1xuICByZW1vdmVBbGwgKCkge1xuICAgIGZvciAobGV0IG5vZGUgb2YgdGhpcy5ub2Rlcykgbm9kZS5wYXJlbnQgPSB1bmRlZmluZWRcbiAgICB0aGlzLm5vZGVzID0gW11cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFBhc3NlcyBhbGwgZGVjbGFyYXRpb24gdmFsdWVzIHdpdGhpbiB0aGUgY29udGFpbmVyIHRoYXQgbWF0Y2ggcGF0dGVyblxuICAgKiB0aHJvdWdoIGNhbGxiYWNrLCByZXBsYWNpbmcgdGhvc2UgdmFsdWVzIHdpdGggdGhlIHJldHVybmVkIHJlc3VsdFxuICAgKiBvZiBjYWxsYmFjay5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgYSBjdXN0b20gdW5pdCBvciBmdW5jdGlvblxuICAgKiBhbmQgbmVlZCB0byBpdGVyYXRlIHRocm91Z2ggYWxsIHZhbHVlcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSBwYXR0ZXJuICAgICAgUmVwbGFjZSBwYXR0ZXJuLlxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0cyAgICAgICAgICAgICAgICBPcHRpb25zIHRvIHNwZWVkIHVwIHRoZSBzZWFyY2guXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBvcHRzLnByb3BzIEFuIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5mYXN0ICAgICAgICAgICBTdHJpbmcgdGhhdOKAmXMgdXNlZCB0byBuYXJyb3cgZG93blxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgYW5kIHNwZWVkIHVwIHRoZSByZWdleHAgc2VhcmNoLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufHN0cmluZ30gY2FsbGJhY2sgICBTdHJpbmcgdG8gcmVwbGFjZSBwYXR0ZXJuIG9yIGNhbGxiYWNrXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgcmV0dXJucyBhIG5ldyB2YWx1ZS4gVGhlIGNhbGxiYWNrXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgcmVjZWl2ZSB0aGUgc2FtZSBhcmd1bWVudHNcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgdGhvc2UgcGFzc2VkIHRvIGEgZnVuY3Rpb24gcGFyYW1ldGVyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGBTdHJpbmcjcmVwbGFjZWAuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC5yZXBsYWNlVmFsdWVzKC9cXGQrcmVtLywgeyBmYXN0OiAncmVtJyB9LCBzdHJpbmcgPT4ge1xuICAgKiAgIHJldHVybiAxNSAqIHBhcnNlSW50KHN0cmluZykgKyAncHgnXG4gICAqIH0pXG4gICAqL1xuICByZXBsYWNlVmFsdWVzIChwYXR0ZXJuLCBvcHRzLCBjYWxsYmFjaykge1xuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0c1xuICAgICAgb3B0cyA9IHsgfVxuICAgIH1cblxuICAgIHRoaXMud2Fsa0RlY2xzKGRlY2wgPT4ge1xuICAgICAgaWYgKG9wdHMucHJvcHMgJiYgb3B0cy5wcm9wcy5pbmRleE9mKGRlY2wucHJvcCkgPT09IC0xKSByZXR1cm5cbiAgICAgIGlmIChvcHRzLmZhc3QgJiYgZGVjbC52YWx1ZS5pbmRleE9mKG9wdHMuZmFzdCkgPT09IC0xKSByZXR1cm5cblxuICAgICAgZGVjbC52YWx1ZSA9IGRlY2wudmFsdWUucmVwbGFjZShwYXR0ZXJuLCBjYWxsYmFjaylcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBjYWxsYmFjayByZXR1cm5zIGB0cnVlYFxuICAgKiBmb3IgYWxsIG9mIHRoZSBjb250YWluZXLigJlzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0ge2NoaWxkQ29uZGl0aW9ufSBjb25kaXRpb24gSXRlcmF0b3IgcmV0dXJucyB0cnVlIG9yIGZhbHNlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBJcyBldmVyeSBjaGlsZCBwYXNzIGNvbmRpdGlvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgbm9QcmVmaXhlcyA9IHJ1bGUuZXZlcnkoaSA9PiBpLnByb3BbMF0gIT09ICctJylcbiAgICovXG4gIGV2ZXJ5IChjb25kaXRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlcy5ldmVyeShjb25kaXRpb24pXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAgaWYgY2FsbGJhY2sgcmV0dXJucyBgdHJ1ZWAgZm9yIChhdCBsZWFzdCkgb25lXG4gICAqIG9mIHRoZSBjb250YWluZXLigJlzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0ge2NoaWxkQ29uZGl0aW9ufSBjb25kaXRpb24gSXRlcmF0b3IgcmV0dXJucyB0cnVlIG9yIGZhbHNlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBJcyBzb21lIGNoaWxkIHBhc3MgY29uZGl0aW9uLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBoYXNQcmVmaXggPSBydWxlLnNvbWUoaSA9PiBpLnByb3BbMF0gPT09ICctJylcbiAgICovXG4gIHNvbWUgKGNvbmRpdGlvbikge1xuICAgIHJldHVybiB0aGlzLm5vZGVzLnNvbWUoY29uZGl0aW9uKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBgY2hpbGRg4oCZcyBpbmRleCB3aXRoaW4gdGhlIHtAbGluayBDb250YWluZXIjbm9kZXN9IGFycmF5LlxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV9IGNoaWxkIENoaWxkIG9mIHRoZSBjdXJyZW50IGNvbnRhaW5lci5cbiAgICpcbiAgICogQHJldHVybiB7bnVtYmVyfSBDaGlsZCBpbmRleC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5pbmRleCggcnVsZS5ub2Rlc1syXSApIC8vPT4gMlxuICAgKi9cbiAgaW5kZXggKGNoaWxkKSB7XG4gICAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBjaGlsZFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ub2Rlcy5pbmRleE9mKGNoaWxkKVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXLigJlzIGZpcnN0IGNoaWxkLlxuICAgKlxuICAgKiBAdHlwZSB7Tm9kZX1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5maXJzdCA9PT0gcnVsZXMubm9kZXNbMF1cbiAgICovXG4gIGdldCBmaXJzdCAoKSB7XG4gICAgaWYgKCF0aGlzLm5vZGVzKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHRoaXMubm9kZXNbMF1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29udGFpbmVy4oCZcyBsYXN0IGNoaWxkLlxuICAgKlxuICAgKiBAdHlwZSB7Tm9kZX1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5sYXN0ID09PSBydWxlLm5vZGVzW3J1bGUubm9kZXMubGVuZ3RoIC0gMV1cbiAgICovXG4gIGdldCBsYXN0ICgpIHtcbiAgICBpZiAoIXRoaXMubm9kZXMpIHJldHVybiB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpcy5ub2Rlc1t0aGlzLm5vZGVzLmxlbmd0aCAtIDFdXG4gIH1cblxuICBub3JtYWxpemUgKG5vZGVzLCBzYW1wbGUpIHtcbiAgICBpZiAodHlwZW9mIG5vZGVzID09PSAnc3RyaW5nJykge1xuICAgICAgbGV0IHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpXG4gICAgICBub2RlcyA9IGNsZWFuU291cmNlKHBhcnNlKG5vZGVzKS5ub2RlcylcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobm9kZXMpKSB7XG4gICAgICBub2RlcyA9IG5vZGVzLnNsaWNlKDApXG4gICAgICBmb3IgKGxldCBpIG9mIG5vZGVzKSB7XG4gICAgICAgIGlmIChpLnBhcmVudCkgaS5wYXJlbnQucmVtb3ZlQ2hpbGQoaSwgJ2lnbm9yZScpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChub2Rlcy50eXBlID09PSAncm9vdCcpIHtcbiAgICAgIG5vZGVzID0gbm9kZXMubm9kZXMuc2xpY2UoMClcbiAgICAgIGZvciAobGV0IGkgb2Ygbm9kZXMpIHtcbiAgICAgICAgaWYgKGkucGFyZW50KSBpLnBhcmVudC5yZW1vdmVDaGlsZChpLCAnaWdub3JlJylcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vZGVzLnR5cGUpIHtcbiAgICAgIG5vZGVzID0gW25vZGVzXVxuICAgIH0gZWxzZSBpZiAobm9kZXMucHJvcCkge1xuICAgICAgaWYgKHR5cGVvZiBub2Rlcy52YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYWx1ZSBmaWVsZCBpcyBtaXNzZWQgaW4gbm9kZSBjcmVhdGlvbicpXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBub2Rlcy52YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgbm9kZXMudmFsdWUgPSBTdHJpbmcobm9kZXMudmFsdWUpXG4gICAgICB9XG4gICAgICBub2RlcyA9IFtuZXcgRGVjbGFyYXRpb24obm9kZXMpXVxuICAgIH0gZWxzZSBpZiAobm9kZXMuc2VsZWN0b3IpIHtcbiAgICAgIGxldCBSdWxlID0gcmVxdWlyZSgnLi9ydWxlJylcbiAgICAgIG5vZGVzID0gW25ldyBSdWxlKG5vZGVzKV1cbiAgICB9IGVsc2UgaWYgKG5vZGVzLm5hbWUpIHtcbiAgICAgIGxldCBBdFJ1bGUgPSByZXF1aXJlKCcuL2F0LXJ1bGUnKVxuICAgICAgbm9kZXMgPSBbbmV3IEF0UnVsZShub2RlcyldXG4gICAgfSBlbHNlIGlmIChub2Rlcy50ZXh0KSB7XG4gICAgICBub2RlcyA9IFtuZXcgQ29tbWVudChub2RlcyldXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBub2RlIHR5cGUgaW4gbm9kZSBjcmVhdGlvbicpXG4gICAgfVxuXG4gICAgbGV0IHByb2Nlc3NlZCA9IG5vZGVzLm1hcChpID0+IHtcbiAgICAgIGlmIChpLnBhcmVudCkgaS5wYXJlbnQucmVtb3ZlQ2hpbGQoaSlcbiAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmJlZm9yZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKHNhbXBsZSAmJiB0eXBlb2Ygc2FtcGxlLnJhd3MuYmVmb3JlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGkucmF3cy5iZWZvcmUgPSBzYW1wbGUucmF3cy5iZWZvcmUucmVwbGFjZSgvW15cXHNdL2csICcnKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpLnBhcmVudCA9IHRoaXNcbiAgICAgIHJldHVybiBpXG4gICAgfSlcblxuICAgIHJldHVybiBwcm9jZXNzZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgQ29udGFpbmVyI1xuICAgKiBAbWVtYmVyIHtOb2RlW119IG5vZGVzIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGNvbnRhaW5lcuKAmXMgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrIH0nKVxuICAgKiByb290Lm5vZGVzLmxlbmd0aCAgICAgICAgICAgLy89PiAxXG4gICAqIHJvb3Qubm9kZXNbMF0uc2VsZWN0b3IgICAgICAvLz0+ICdhJ1xuICAgKiByb290Lm5vZGVzWzBdLm5vZGVzWzBdLnByb3AgLy89PiAnY29sb3InXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb250YWluZXJcblxuLyoqXG4gKiBAY2FsbGJhY2sgY2hpbGRDb25kaXRpb25cbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICBDb250YWluZXIgY2hpbGQuXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggQ2hpbGQgaW5kZXguXG4gKiBAcGFyYW0ge05vZGVbXX0gbm9kZXMgQWxsIGNvbnRhaW5lciBjaGlsZHJlbi5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgY2hpbGRJdGVyYXRvclxuICogQHBhcmFtIHtOb2RlfSBub2RlICAgIENvbnRhaW5lciBjaGlsZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBDaGlsZCBpbmRleC5cbiAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gUmV0dXJuaW5nIGBmYWxzZWAgd2lsbCBicmVhayBpdGVyYXRpb24uXG4gKi9cbiJdLCJmaWxlIjoiY29udGFpbmVyLmpzIn0=
diff --git a/assets/node_modules/postcss/lib/css-syntax-error.js b/assets/node_modules/postcss/lib/css-syntax-error.js
deleted file mode 100644
index 833e4ec..0000000
--- a/assets/node_modules/postcss/lib/css-syntax-error.js
+++ /dev/null
@@ -1,300 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _supportsColor = _interopRequireDefault(require("supports-color"));
-
-var _chalk = _interopRequireDefault(require("chalk"));
-
-var _terminalHighlight = _interopRequireDefault(require("./terminal-highlight"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-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); }
-
-function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
-
-function _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _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; }; } return _construct.apply(null, arguments); }
-
-function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; }
-
-function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
-
-function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
-
-/**
- * The CSS parser throws this error for broken CSS.
- *
- * Custom parsers can throw this error for broken custom syntax using
- * the {@link Node#error} method.
- *
- * PostCSS will use the input source map to detect the original error location.
- * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS,
- * PostCSS will show the original position in the Sass file.
- *
- * If you need the position in the PostCSS input
- * (e.g., to debug the previous compiler), use `error.input.file`.
- *
- * @example
- * // Catching and checking syntax error
- * try {
- * postcss.parse('a{')
- * } catch (error) {
- * if (error.name === 'CssSyntaxError') {
- * error //=> CssSyntaxError
- * }
- * }
- *
- * @example
- * // Raising error from plugin
- * throw node.error('Unknown variable', { plugin: 'postcss-vars' })
- */
-var CssSyntaxError =
-/*#__PURE__*/
-function (_Error) {
- _inheritsLoose(CssSyntaxError, _Error);
-
- /**
- * @param {string} message Error message.
- * @param {number} [line] Source line of the error.
- * @param {number} [column] Source column of the error.
- * @param {string} [source] Source code of the broken file.
- * @param {string} [file] Absolute path to the broken file.
- * @param {string} [plugin] PostCSS plugin name, if error came from plugin.
- */
- function CssSyntaxError(message, line, column, source, file, plugin) {
- var _this;
-
- _this = _Error.call(this, message) || this;
- /**
- * Always equal to `'CssSyntaxError'`. You should always check error type
- * by `error.name === 'CssSyntaxError'`
- * instead of `error instanceof CssSyntaxError`,
- * because npm could have several PostCSS versions.
- *
- * @type {string}
- *
- * @example
- * if (error.name === 'CssSyntaxError') {
- * error //=> CssSyntaxError
- * }
- */
-
- _this.name = 'CssSyntaxError';
- /**
- * Error message.
- *
- * @type {string}
- *
- * @example
- * error.message //=> 'Unclosed block'
- */
-
- _this.reason = message;
-
- if (file) {
- /**
- * Absolute path to the broken file.
- *
- * @type {string}
- *
- * @example
- * error.file //=> 'a.sass'
- * error.input.file //=> 'a.css'
- */
- _this.file = file;
- }
-
- if (source) {
- /**
- * Source code of the broken file.
- *
- * @type {string}
- *
- * @example
- * error.source //=> 'a { b {} }'
- * error.input.column //=> 'a b { }'
- */
- _this.source = source;
- }
-
- if (plugin) {
- /**
- * Plugin name, if error came from plugin.
- *
- * @type {string}
- *
- * @example
- * error.plugin //=> 'postcss-vars'
- */
- _this.plugin = plugin;
- }
-
- if (typeof line !== 'undefined' && typeof column !== 'undefined') {
- /**
- * Source line of the error.
- *
- * @type {number}
- *
- * @example
- * error.line //=> 2
- * error.input.line //=> 4
- */
- _this.line = line;
- /**
- * Source column of the error.
- *
- * @type {number}
- *
- * @example
- * error.column //=> 1
- * error.input.column //=> 4
- */
-
- _this.column = column;
- }
-
- _this.setMessage();
-
- if (Error.captureStackTrace) {
- Error.captureStackTrace(_assertThisInitialized(_this), CssSyntaxError);
- }
-
- return _this;
- }
-
- var _proto = CssSyntaxError.prototype;
-
- _proto.setMessage = function setMessage() {
- /**
- * Full error text in the GNU error format
- * with plugin, file, line and column.
- *
- * @type {string}
- *
- * @example
- * error.message //=> 'a.css:1:1: Unclosed block'
- */
- this.message = this.plugin ? this.plugin + ': ' : '';
- this.message += this.file ? this.file : '<css input>';
-
- if (typeof this.line !== 'undefined') {
- this.message += ':' + this.line + ':' + this.column;
- }
-
- this.message += ': ' + this.reason;
- }
- /**
- * Returns a few lines of CSS source that caused the error.
- *
- * If the CSS has an input source map without `sourceContent`,
- * this method will return an empty string.
- *
- * @param {boolean} [color] Whether arrow will be colored red by terminal
- * color codes. By default, PostCSS will detect
- * color support by `process.stdout.isTTY`
- * and `process.env.NODE_DISABLE_COLORS`.
- *
- * @example
- * error.showSourceCode() //=> " 4 | }
- * // 5 | a {
- * // > 6 | bad
- * // | ^
- * // 7 | }
- * // 8 | b {"
- *
- * @return {string} Few lines of CSS source that caused the error.
- */
- ;
-
- _proto.showSourceCode = function showSourceCode(color) {
- var _this2 = this;
-
- if (!this.source) return '';
- var css = this.source;
-
- if (_terminalHighlight.default) {
- if (typeof color === 'undefined') color = _supportsColor.default.stdout;
- if (color) css = (0, _terminalHighlight.default)(css);
- }
-
- var lines = css.split(/\r?\n/);
- var start = Math.max(this.line - 3, 0);
- var end = Math.min(this.line + 2, lines.length);
- var maxWidth = String(end).length;
-
- function mark(text) {
- if (color && _chalk.default.red) {
- return _chalk.default.red.bold(text);
- }
-
- return text;
- }
-
- function aside(text) {
- if (color && _chalk.default.gray) {
- return _chalk.default.gray(text);
- }
-
- return text;
- }
-
- return lines.slice(start, end).map(function (line, index) {
- var number = start + 1 + index;
- var gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | ';
-
- if (number === _this2.line) {
- var spacing = aside(gutter.replace(/\d/g, ' ')) + line.slice(0, _this2.column - 1).replace(/[^\t]/g, ' ');
- return mark('>') + aside(gutter) + line + '\n ' + spacing + mark('^');
- }
-
- return ' ' + aside(gutter) + line;
- }).join('\n');
- }
- /**
- * Returns error position, message and source code of the broken part.
- *
- * @example
- * error.toString() //=> "CssSyntaxError: app.css:1:1: Unclosed block
- * // > 1 | a {
- * // | ^"
- *
- * @return {string} Error position, message and source code.
- */
- ;
-
- _proto.toString = function toString() {
- var code = this.showSourceCode();
-
- if (code) {
- code = '\n\n' + code + '\n';
- }
-
- return this.name + ': ' + this.message + code;
- }
- /**
- * @memberof CssSyntaxError#
- * @member {Input} input Input object with PostCSS internal information
- * about input file. If input has source map
- * from previous tool, PostCSS will use origin
- * (for example, Sass) source. You can use this
- * object to get PostCSS input source.
- *
- * @example
- * error.input.file //=> 'a.css'
- * error.file //=> 'a.sass'
- */
- ;
-
- return CssSyntaxError;
-}(_wrapNativeSuper(Error));
-
-var _default = CssSyntaxError;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNzcy1zeW50YXgtZXJyb3IuZXM2Il0sIm5hbWVzIjpbIkNzc1N5bnRheEVycm9yIiwibWVzc2FnZSIsImxpbmUiLCJjb2x1bW4iLCJzb3VyY2UiLCJmaWxlIiwicGx1Z2luIiwibmFtZSIsInJlYXNvbiIsInNldE1lc3NhZ2UiLCJFcnJvciIsImNhcHR1cmVTdGFja1RyYWNlIiwic2hvd1NvdXJjZUNvZGUiLCJjb2xvciIsImNzcyIsInRlcm1pbmFsSGlnaGxpZ2h0Iiwic3VwcG9ydHNDb2xvciIsInN0ZG91dCIsImxpbmVzIiwic3BsaXQiLCJzdGFydCIsIk1hdGgiLCJtYXgiLCJlbmQiLCJtaW4iLCJsZW5ndGgiLCJtYXhXaWR0aCIsIlN0cmluZyIsIm1hcmsiLCJ0ZXh0IiwiY2hhbGsiLCJyZWQiLCJib2xkIiwiYXNpZGUiLCJncmF5Iiwic2xpY2UiLCJtYXAiLCJpbmRleCIsIm51bWJlciIsImd1dHRlciIsInNwYWNpbmciLCJyZXBsYWNlIiwiam9pbiIsInRvU3RyaW5nIiwiY29kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBMkJNQSxjOzs7OztBQUNKOzs7Ozs7OztBQVFBLDBCQUFhQyxPQUFiLEVBQXNCQyxJQUF0QixFQUE0QkMsTUFBNUIsRUFBb0NDLE1BQXBDLEVBQTRDQyxJQUE1QyxFQUFrREMsTUFBbEQsRUFBMEQ7QUFBQTs7QUFDeEQsOEJBQU1MLE9BQU47QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUFhQSxVQUFLTSxJQUFMLEdBQVksZ0JBQVo7QUFDQTs7Ozs7Ozs7O0FBUUEsVUFBS0MsTUFBTCxHQUFjUCxPQUFkOztBQUVBLFFBQUlJLElBQUosRUFBVTtBQUNSOzs7Ozs7Ozs7QUFTQSxZQUFLQSxJQUFMLEdBQVlBLElBQVo7QUFDRDs7QUFDRCxRQUFJRCxNQUFKLEVBQVk7QUFDVjs7Ozs7Ozs7O0FBU0EsWUFBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0Q7O0FBQ0QsUUFBSUUsTUFBSixFQUFZO0FBQ1Y7Ozs7Ozs7O0FBUUEsWUFBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0Q7O0FBQ0QsUUFBSSxPQUFPSixJQUFQLEtBQWdCLFdBQWhCLElBQStCLE9BQU9DLE1BQVAsS0FBa0IsV0FBckQsRUFBa0U7QUFDaEU7Ozs7Ozs7OztBQVNBLFlBQUtELElBQUwsR0FBWUEsSUFBWjtBQUNBOzs7Ozs7Ozs7O0FBU0EsWUFBS0MsTUFBTCxHQUFjQSxNQUFkO0FBQ0Q7O0FBRUQsVUFBS00sVUFBTDs7QUFFQSxRQUFJQyxLQUFLLENBQUNDLGlCQUFWLEVBQTZCO0FBQzNCRCxNQUFBQSxLQUFLLENBQUNDLGlCQUFOLGdDQUE4QlgsY0FBOUI7QUFDRDs7QUF6RnVEO0FBMEZ6RDs7OztTQUVEUyxVLEdBQUEsc0JBQWM7QUFDWjs7Ozs7Ozs7O0FBU0EsU0FBS1IsT0FBTCxHQUFlLEtBQUtLLE1BQUwsR0FBYyxLQUFLQSxNQUFMLEdBQWMsSUFBNUIsR0FBbUMsRUFBbEQ7QUFDQSxTQUFLTCxPQUFMLElBQWdCLEtBQUtJLElBQUwsR0FBWSxLQUFLQSxJQUFqQixHQUF3QixhQUF4Qzs7QUFDQSxRQUFJLE9BQU8sS0FBS0gsSUFBWixLQUFxQixXQUF6QixFQUFzQztBQUNwQyxXQUFLRCxPQUFMLElBQWdCLE1BQU0sS0FBS0MsSUFBWCxHQUFrQixHQUFsQixHQUF3QixLQUFLQyxNQUE3QztBQUNEOztBQUNELFNBQUtGLE9BQUwsSUFBZ0IsT0FBTyxLQUFLTyxNQUE1QjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBcUJBSSxjLEdBQUEsd0JBQWdCQyxLQUFoQixFQUF1QjtBQUFBOztBQUNyQixRQUFJLENBQUMsS0FBS1QsTUFBVixFQUFrQixPQUFPLEVBQVA7QUFFbEIsUUFBSVUsR0FBRyxHQUFHLEtBQUtWLE1BQWY7O0FBQ0EsUUFBSVcsMEJBQUosRUFBdUI7QUFDckIsVUFBSSxPQUFPRixLQUFQLEtBQWlCLFdBQXJCLEVBQWtDQSxLQUFLLEdBQUdHLHVCQUFjQyxNQUF0QjtBQUNsQyxVQUFJSixLQUFKLEVBQVdDLEdBQUcsR0FBRyxnQ0FBa0JBLEdBQWxCLENBQU47QUFDWjs7QUFFRCxRQUFJSSxLQUFLLEdBQUdKLEdBQUcsQ0FBQ0ssS0FBSixDQUFVLE9BQVYsQ0FBWjtBQUNBLFFBQUlDLEtBQUssR0FBR0MsSUFBSSxDQUFDQyxHQUFMLENBQVMsS0FBS3BCLElBQUwsR0FBWSxDQUFyQixFQUF3QixDQUF4QixDQUFaO0FBQ0EsUUFBSXFCLEdBQUcsR0FBR0YsSUFBSSxDQUFDRyxHQUFMLENBQVMsS0FBS3RCLElBQUwsR0FBWSxDQUFyQixFQUF3QmdCLEtBQUssQ0FBQ08sTUFBOUIsQ0FBVjtBQUVBLFFBQUlDLFFBQVEsR0FBR0MsTUFBTSxDQUFDSixHQUFELENBQU4sQ0FBWUUsTUFBM0I7O0FBRUEsYUFBU0csSUFBVCxDQUFlQyxJQUFmLEVBQXFCO0FBQ25CLFVBQUloQixLQUFLLElBQUlpQixlQUFNQyxHQUFuQixFQUF3QjtBQUN0QixlQUFPRCxlQUFNQyxHQUFOLENBQVVDLElBQVYsQ0FBZUgsSUFBZixDQUFQO0FBQ0Q7O0FBQ0QsYUFBT0EsSUFBUDtBQUNEOztBQUNELGFBQVNJLEtBQVQsQ0FBZ0JKLElBQWhCLEVBQXNCO0FBQ3BCLFVBQUloQixLQUFLLElBQUlpQixlQUFNSSxJQUFuQixFQUF5QjtBQUN2QixlQUFPSixlQUFNSSxJQUFOLENBQVdMLElBQVgsQ0FBUDtBQUNEOztBQUNELGFBQU9BLElBQVA7QUFDRDs7QUFFRCxXQUFPWCxLQUFLLENBQUNpQixLQUFOLENBQVlmLEtBQVosRUFBbUJHLEdBQW5CLEVBQXdCYSxHQUF4QixDQUE0QixVQUFDbEMsSUFBRCxFQUFPbUMsS0FBUCxFQUFpQjtBQUNsRCxVQUFJQyxNQUFNLEdBQUdsQixLQUFLLEdBQUcsQ0FBUixHQUFZaUIsS0FBekI7QUFDQSxVQUFJRSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU1ELE1BQVAsRUFBZUgsS0FBZixDQUFxQixDQUFDVCxRQUF0QixDQUFOLEdBQXdDLEtBQXJEOztBQUNBLFVBQUlZLE1BQU0sS0FBSyxNQUFJLENBQUNwQyxJQUFwQixFQUEwQjtBQUN4QixZQUFJc0MsT0FBTyxHQUFHUCxLQUFLLENBQUNNLE1BQU0sQ0FBQ0UsT0FBUCxDQUFlLEtBQWYsRUFBc0IsR0FBdEIsQ0FBRCxDQUFMLEdBQ1p2QyxJQUFJLENBQUNpQyxLQUFMLENBQVcsQ0FBWCxFQUFjLE1BQUksQ0FBQ2hDLE1BQUwsR0FBYyxDQUE1QixFQUErQnNDLE9BQS9CLENBQXVDLFFBQXZDLEVBQWlELEdBQWpELENBREY7QUFFQSxlQUFPYixJQUFJLENBQUMsR0FBRCxDQUFKLEdBQVlLLEtBQUssQ0FBQ00sTUFBRCxDQUFqQixHQUE0QnJDLElBQTVCLEdBQW1DLEtBQW5DLEdBQTJDc0MsT0FBM0MsR0FBcURaLElBQUksQ0FBQyxHQUFELENBQWhFO0FBQ0Q7O0FBQ0QsYUFBTyxNQUFNSyxLQUFLLENBQUNNLE1BQUQsQ0FBWCxHQUFzQnJDLElBQTdCO0FBQ0QsS0FUTSxFQVNKd0MsSUFUSSxDQVNDLElBVEQsQ0FBUDtBQVVEO0FBRUQ7Ozs7Ozs7Ozs7OztTQVVBQyxRLEdBQUEsb0JBQVk7QUFDVixRQUFJQyxJQUFJLEdBQUcsS0FBS2hDLGNBQUwsRUFBWDs7QUFDQSxRQUFJZ0MsSUFBSixFQUFVO0FBQ1JBLE1BQUFBLElBQUksR0FBRyxTQUFTQSxJQUFULEdBQWdCLElBQXZCO0FBQ0Q7O0FBQ0QsV0FBTyxLQUFLckMsSUFBTCxHQUFZLElBQVosR0FBbUIsS0FBS04sT0FBeEIsR0FBa0MyQyxJQUF6QztBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OzttQkF0TTJCbEMsSzs7ZUFvTmRWLGMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3VwcG9ydHNDb2xvciBmcm9tICdzdXBwb3J0cy1jb2xvcidcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsaydcblxuaW1wb3J0IHRlcm1pbmFsSGlnaGxpZ2h0IGZyb20gJy4vdGVybWluYWwtaGlnaGxpZ2h0J1xuXG4vKipcbiAqIFRoZSBDU1MgcGFyc2VyIHRocm93cyB0aGlzIGVycm9yIGZvciBicm9rZW4gQ1NTLlxuICpcbiAqIEN1c3RvbSBwYXJzZXJzIGNhbiB0aHJvdyB0aGlzIGVycm9yIGZvciBicm9rZW4gY3VzdG9tIHN5bnRheCB1c2luZ1xuICogdGhlIHtAbGluayBOb2RlI2Vycm9yfSBtZXRob2QuXG4gKlxuICogUG9zdENTUyB3aWxsIHVzZSB0aGUgaW5wdXQgc291cmNlIG1hcCB0byBkZXRlY3QgdGhlIG9yaWdpbmFsIGVycm9yIGxvY2F0aW9uLlxuICogSWYgeW91IHdyb3RlIGEgU2FzcyBmaWxlLCBjb21waWxlZCBpdCB0byBDU1MgYW5kIHRoZW4gcGFyc2VkIGl0IHdpdGggUG9zdENTUyxcbiAqIFBvc3RDU1Mgd2lsbCBzaG93IHRoZSBvcmlnaW5hbCBwb3NpdGlvbiBpbiB0aGUgU2FzcyBmaWxlLlxuICpcbiAqIElmIHlvdSBuZWVkIHRoZSBwb3NpdGlvbiBpbiB0aGUgUG9zdENTUyBpbnB1dFxuICogKGUuZy4sIHRvIGRlYnVnIHRoZSBwcmV2aW91cyBjb21waWxlciksIHVzZSBgZXJyb3IuaW5wdXQuZmlsZWAuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENhdGNoaW5nIGFuZCBjaGVja2luZyBzeW50YXggZXJyb3JcbiAqIHRyeSB7XG4gKiAgIHBvc3Rjc3MucGFyc2UoJ2F7JylcbiAqIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgIGlmIChlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InKSB7XG4gKiAgICAgZXJyb3IgLy89PiBDc3NTeW50YXhFcnJvclxuICogICB9XG4gKiB9XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJhaXNpbmcgZXJyb3IgZnJvbSBwbHVnaW5cbiAqIHRocm93IG5vZGUuZXJyb3IoJ1Vua25vd24gdmFyaWFibGUnLCB7IHBsdWdpbjogJ3Bvc3Rjc3MtdmFycycgfSlcbiAqL1xuY2xhc3MgQ3NzU3ludGF4RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAgRXJyb3IgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsaW5lXSAgIFNvdXJjZSBsaW5lIG9mIHRoZSBlcnJvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtjb2x1bW5dIFNvdXJjZSBjb2x1bW4gb2YgdGhlIGVycm9yLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3NvdXJjZV0gU291cmNlIGNvZGUgb2YgdGhlIGJyb2tlbiBmaWxlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2ZpbGVdICAgQWJzb2x1dGUgcGF0aCB0byB0aGUgYnJva2VuIGZpbGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGx1Z2luXSBQb3N0Q1NTIHBsdWdpbiBuYW1lLCBpZiBlcnJvciBjYW1lIGZyb20gcGx1Z2luLlxuICAgKi9cbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UsIGxpbmUsIGNvbHVtbiwgc291cmNlLCBmaWxlLCBwbHVnaW4pIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuXG4gICAgLyoqXG4gICAgICogQWx3YXlzIGVxdWFsIHRvIGAnQ3NzU3ludGF4RXJyb3InYC4gWW91IHNob3VsZCBhbHdheXMgY2hlY2sgZXJyb3IgdHlwZVxuICAgICAqIGJ5IGBlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InYFxuICAgICAqIGluc3RlYWQgb2YgYGVycm9yIGluc3RhbmNlb2YgQ3NzU3ludGF4RXJyb3JgLFxuICAgICAqIGJlY2F1c2UgbnBtIGNvdWxkIGhhdmUgc2V2ZXJhbCBQb3N0Q1NTIHZlcnNpb25zLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogaWYgKGVycm9yLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcicpIHtcbiAgICAgKiAgIGVycm9yIC8vPT4gQ3NzU3ludGF4RXJyb3JcbiAgICAgKiB9XG4gICAgICovXG4gICAgdGhpcy5uYW1lID0gJ0Nzc1N5bnRheEVycm9yJ1xuICAgIC8qKlxuICAgICAqIEVycm9yIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBlcnJvci5tZXNzYWdlIC8vPT4gJ1VuY2xvc2VkIGJsb2NrJ1xuICAgICAqL1xuICAgIHRoaXMucmVhc29uID0gbWVzc2FnZVxuXG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIC8qKlxuICAgICAgICogQWJzb2x1dGUgcGF0aCB0byB0aGUgYnJva2VuIGZpbGUuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogZXJyb3IuZmlsZSAgICAgICAvLz0+ICdhLnNhc3MnXG4gICAgICAgKiBlcnJvci5pbnB1dC5maWxlIC8vPT4gJ2EuY3NzJ1xuICAgICAgICovXG4gICAgICB0aGlzLmZpbGUgPSBmaWxlXG4gICAgfVxuICAgIGlmIChzb3VyY2UpIHtcbiAgICAgIC8qKlxuICAgICAgICogU291cmNlIGNvZGUgb2YgdGhlIGJyb2tlbiBmaWxlLlxuICAgICAgICpcbiAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgKlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqIGVycm9yLnNvdXJjZSAgICAgICAvLz0+ICdhIHsgYiB7fSB9J1xuICAgICAgICogZXJyb3IuaW5wdXQuY29sdW1uIC8vPT4gJ2EgYiB7IH0nXG4gICAgICAgKi9cbiAgICAgIHRoaXMuc291cmNlID0gc291cmNlXG4gICAgfVxuICAgIGlmIChwbHVnaW4pIHtcbiAgICAgIC8qKlxuICAgICAgICogUGx1Z2luIG5hbWUsIGlmIGVycm9yIGNhbWUgZnJvbSBwbHVnaW4uXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogZXJyb3IucGx1Z2luIC8vPT4gJ3Bvc3Rjc3MtdmFycydcbiAgICAgICAqL1xuICAgICAgdGhpcy5wbHVnaW4gPSBwbHVnaW5cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBsaW5lICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29sdW1uICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLyoqXG4gICAgICAgKiBTb3VyY2UgbGluZSBvZiB0aGUgZXJyb3IuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogZXJyb3IubGluZSAgICAgICAvLz0+IDJcbiAgICAgICAqIGVycm9yLmlucHV0LmxpbmUgLy89PiA0XG4gICAgICAgKi9cbiAgICAgIHRoaXMubGluZSA9IGxpbmVcbiAgICAgIC8qKlxuICAgICAgICogU291cmNlIGNvbHVtbiBvZiB0aGUgZXJyb3IuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogZXJyb3IuY29sdW1uICAgICAgIC8vPT4gMVxuICAgICAgICogZXJyb3IuaW5wdXQuY29sdW1uIC8vPT4gNFxuICAgICAgICovXG4gICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtblxuICAgIH1cblxuICAgIHRoaXMuc2V0TWVzc2FnZSgpXG5cbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIENzc1N5bnRheEVycm9yKVxuICAgIH1cbiAgfVxuXG4gIHNldE1lc3NhZ2UgKCkge1xuICAgIC8qKlxuICAgICAqIEZ1bGwgZXJyb3IgdGV4dCBpbiB0aGUgR05VIGVycm9yIGZvcm1hdFxuICAgICAqIHdpdGggcGx1Z2luLCBmaWxlLCBsaW5lIGFuZCBjb2x1bW4uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBlcnJvci5tZXNzYWdlIC8vPT4gJ2EuY3NzOjE6MTogVW5jbG9zZWQgYmxvY2snXG4gICAgICovXG4gICAgdGhpcy5tZXNzYWdlID0gdGhpcy5wbHVnaW4gPyB0aGlzLnBsdWdpbiArICc6ICcgOiAnJ1xuICAgIHRoaXMubWVzc2FnZSArPSB0aGlzLmZpbGUgPyB0aGlzLmZpbGUgOiAnPGNzcyBpbnB1dD4nXG4gICAgaWYgKHR5cGVvZiB0aGlzLmxpbmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLm1lc3NhZ2UgKz0gJzonICsgdGhpcy5saW5lICsgJzonICsgdGhpcy5jb2x1bW5cbiAgICB9XG4gICAgdGhpcy5tZXNzYWdlICs9ICc6ICcgKyB0aGlzLnJlYXNvblxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBmZXcgbGluZXMgb2YgQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuXG4gICAqXG4gICAqIElmIHRoZSBDU1MgaGFzIGFuIGlucHV0IHNvdXJjZSBtYXAgd2l0aG91dCBgc291cmNlQ29udGVudGAsXG4gICAqIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBbY29sb3JdIFdoZXRoZXIgYXJyb3cgd2lsbCBiZSBjb2xvcmVkIHJlZCBieSB0ZXJtaW5hbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgY29kZXMuIEJ5IGRlZmF1bHQsIFBvc3RDU1Mgd2lsbCBkZXRlY3RcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yIHN1cHBvcnQgYnkgYHByb2Nlc3Muc3Rkb3V0LmlzVFRZYFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGBwcm9jZXNzLmVudi5OT0RFX0RJU0FCTEVfQ09MT1JTYC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZXJyb3Iuc2hvd1NvdXJjZUNvZGUoKSAvLz0+IFwiICA0IHwgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgNSB8IGEge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgID4gNiB8ICAgYmFkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgIHwgICBeXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICA3IHwgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgOCB8IGIge1wiXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gRmV3IGxpbmVzIG9mIENTUyBzb3VyY2UgdGhhdCBjYXVzZWQgdGhlIGVycm9yLlxuICAgKi9cbiAgc2hvd1NvdXJjZUNvZGUgKGNvbG9yKSB7XG4gICAgaWYgKCF0aGlzLnNvdXJjZSkgcmV0dXJuICcnXG5cbiAgICBsZXQgY3NzID0gdGhpcy5zb3VyY2VcbiAgICBpZiAodGVybWluYWxIaWdobGlnaHQpIHtcbiAgICAgIGlmICh0eXBlb2YgY29sb3IgPT09ICd1bmRlZmluZWQnKSBjb2xvciA9IHN1cHBvcnRzQ29sb3Iuc3Rkb3V0XG4gICAgICBpZiAoY29sb3IpIGNzcyA9IHRlcm1pbmFsSGlnaGxpZ2h0KGNzcylcbiAgICB9XG5cbiAgICBsZXQgbGluZXMgPSBjc3Muc3BsaXQoL1xccj9cXG4vKVxuICAgIGxldCBzdGFydCA9IE1hdGgubWF4KHRoaXMubGluZSAtIDMsIDApXG4gICAgbGV0IGVuZCA9IE1hdGgubWluKHRoaXMubGluZSArIDIsIGxpbmVzLmxlbmd0aClcblxuICAgIGxldCBtYXhXaWR0aCA9IFN0cmluZyhlbmQpLmxlbmd0aFxuXG4gICAgZnVuY3Rpb24gbWFyayAodGV4dCkge1xuICAgICAgaWYgKGNvbG9yICYmIGNoYWxrLnJlZCkge1xuICAgICAgICByZXR1cm4gY2hhbGsucmVkLmJvbGQodGV4dClcbiAgICAgIH1cbiAgICAgIHJldHVybiB0ZXh0XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFzaWRlICh0ZXh0KSB7XG4gICAgICBpZiAoY29sb3IgJiYgY2hhbGsuZ3JheSkge1xuICAgICAgICByZXR1cm4gY2hhbGsuZ3JheSh0ZXh0KVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRleHRcbiAgICB9XG5cbiAgICByZXR1cm4gbGluZXMuc2xpY2Uoc3RhcnQsIGVuZCkubWFwKChsaW5lLCBpbmRleCkgPT4ge1xuICAgICAgbGV0IG51bWJlciA9IHN0YXJ0ICsgMSArIGluZGV4XG4gICAgICBsZXQgZ3V0dGVyID0gJyAnICsgKCcgJyArIG51bWJlcikuc2xpY2UoLW1heFdpZHRoKSArICcgfCAnXG4gICAgICBpZiAobnVtYmVyID09PSB0aGlzLmxpbmUpIHtcbiAgICAgICAgbGV0IHNwYWNpbmcgPSBhc2lkZShndXR0ZXIucmVwbGFjZSgvXFxkL2csICcgJykpICtcbiAgICAgICAgICBsaW5lLnNsaWNlKDAsIHRoaXMuY29sdW1uIC0gMSkucmVwbGFjZSgvW15cXHRdL2csICcgJylcbiAgICAgICAgcmV0dXJuIG1hcmsoJz4nKSArIGFzaWRlKGd1dHRlcikgKyBsaW5lICsgJ1xcbiAnICsgc3BhY2luZyArIG1hcmsoJ14nKVxuICAgICAgfVxuICAgICAgcmV0dXJuICcgJyArIGFzaWRlKGd1dHRlcikgKyBsaW5lXG4gICAgfSkuam9pbignXFxuJylcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGVycm9yIHBvc2l0aW9uLCBtZXNzYWdlIGFuZCBzb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIHBhcnQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGVycm9yLnRvU3RyaW5nKCkgLy89PiBcIkNzc1N5bnRheEVycm9yOiBhcHAuY3NzOjE6MTogVW5jbG9zZWQgYmxvY2tcbiAgICogICAgICAgICAgICAgICAgICAvLyAgICA+IDEgfCBhIHtcbiAgICogICAgICAgICAgICAgICAgICAvLyAgICAgICAgfCBeXCJcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBFcnJvciBwb3NpdGlvbiwgbWVzc2FnZSBhbmQgc291cmNlIGNvZGUuXG4gICAqL1xuICB0b1N0cmluZyAoKSB7XG4gICAgbGV0IGNvZGUgPSB0aGlzLnNob3dTb3VyY2VDb2RlKClcbiAgICBpZiAoY29kZSkge1xuICAgICAgY29kZSA9ICdcXG5cXG4nICsgY29kZSArICdcXG4nXG4gICAgfVxuICAgIHJldHVybiB0aGlzLm5hbWUgKyAnOiAnICsgdGhpcy5tZXNzYWdlICsgY29kZVxuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBDc3NTeW50YXhFcnJvciNcbiAgICogQG1lbWJlciB7SW5wdXR9IGlucHV0IElucHV0IG9iamVjdCB3aXRoIFBvc3RDU1MgaW50ZXJuYWwgaW5mb3JtYXRpb25cbiAgICogICAgICAgICAgICAgICAgICAgICAgIGFib3V0IGlucHV0IGZpbGUuIElmIGlucHV0IGhhcyBzb3VyY2UgbWFwXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHByZXZpb3VzIHRvb2wsIFBvc3RDU1Mgd2lsbCB1c2Ugb3JpZ2luXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAoZm9yIGV4YW1wbGUsIFNhc3MpIHNvdXJjZS4gWW91IGNhbiB1c2UgdGhpc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0IHRvIGdldCBQb3N0Q1NTIGlucHV0IHNvdXJjZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZXJyb3IuaW5wdXQuZmlsZSAvLz0+ICdhLmNzcydcbiAgICogZXJyb3IuZmlsZSAgICAgICAvLz0+ICdhLnNhc3MnXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBDc3NTeW50YXhFcnJvclxuIl0sImZpbGUiOiJjc3Mtc3ludGF4LWVycm9yLmpzIn0=
diff --git a/assets/node_modules/postcss/lib/declaration.js b/assets/node_modules/postcss/lib/declaration.js
deleted file mode 100644
index 6faf751..0000000
--- a/assets/node_modules/postcss/lib/declaration.js
+++ /dev/null
@@ -1,98 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _node = _interopRequireDefault(require("./node"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/**
- * Represents a CSS declaration.
- *
- * @extends Node
- *
- * @example
- * const root = postcss.parse('a { color: black }')
- * const decl = root.first.first
- * decl.type //=> 'decl'
- * decl.toString() //=> ' color: black'
- */
-var Declaration =
-/*#__PURE__*/
-function (_Node) {
- _inheritsLoose(Declaration, _Node);
-
- function Declaration(defaults) {
- var _this;
-
- _this = _Node.call(this, defaults) || this;
- _this.type = 'decl';
- return _this;
- }
- /**
- * @memberof Declaration#
- * @member {string} prop The declaration’s property name.
- *
- * @example
- * const root = postcss.parse('a { color: black }')
- * const decl = root.first.first
- * decl.prop //=> 'color'
- */
-
- /**
- * @memberof Declaration#
- * @member {string} value The declaration’s value.
- *
- * @example
- * const root = postcss.parse('a { color: black }')
- * const decl = root.first.first
- * decl.value //=> 'black'
- */
-
- /**
- * @memberof Declaration#
- * @member {boolean} important `true` if the declaration
- * has an !important annotation.
- *
- * @example
- * const root = postcss.parse('a { color: black !important; color: red }')
- * root.first.first.important //=> true
- * root.first.last.important //=> undefined
- */
-
- /**
- * @memberof Declaration#
- * @member {object} raws Information to generate byte-to-byte equal
- * node string as it was in the origin input.
- *
- * Every parser saves its own properties,
- * but the default CSS parser uses:
- *
- * * `before`: the space symbols before the node. It also stores `*`
- * and `_` symbols before the declaration (IE hack).
- * * `between`: the symbols between the property and value
- * for declarations.
- * * `important`: the content of the important statement,
- * if it is not just `!important`.
- *
- * PostCSS cleans declaration from comments and extra spaces,
- * but it stores origin content in raws properties.
- * As such, if you don’t change a declaration’s value,
- * PostCSS will use the raw value with comments.
- *
- * @example
- * const root = postcss.parse('a {\n color:black\n}')
- * root.first.first.raws //=> { before: '\n ', between: ':' }
- */
-
-
- return Declaration;
-}(_node.default);
-
-var _default = Declaration;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlY2xhcmF0aW9uLmVzNiJdLCJuYW1lcyI6WyJEZWNsYXJhdGlvbiIsImRlZmF1bHRzIiwidHlwZSIsIk5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7OztBQUVBOzs7Ozs7Ozs7OztJQVdNQSxXOzs7OztBQUNKLHVCQUFhQyxRQUFiLEVBQXVCO0FBQUE7O0FBQ3JCLDZCQUFNQSxRQUFOO0FBQ0EsVUFBS0MsSUFBTCxHQUFZLE1BQVo7QUFGcUI7QUFHdEI7QUFFRDs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7O0FBV0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXJDd0JDLGE7O2VBK0RYSCxXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE5vZGUgZnJvbSAnLi9ub2RlJ1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBDU1MgZGVjbGFyYXRpb24uXG4gKlxuICogQGV4dGVuZHMgTm9kZVxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayB9JylcbiAqIGNvbnN0IGRlY2wgPSByb290LmZpcnN0LmZpcnN0XG4gKiBkZWNsLnR5cGUgICAgICAgLy89PiAnZGVjbCdcbiAqIGRlY2wudG9TdHJpbmcoKSAvLz0+ICcgY29sb3I6IGJsYWNrJ1xuICovXG5jbGFzcyBEZWNsYXJhdGlvbiBleHRlbmRzIE5vZGUge1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cylcbiAgICB0aGlzLnR5cGUgPSAnZGVjbCdcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgRGVjbGFyYXRpb24jXG4gICAqIEBtZW1iZXIge3N0cmluZ30gcHJvcCBUaGUgZGVjbGFyYXRpb27igJlzIHByb3BlcnR5IG5hbWUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrIH0nKVxuICAgKiBjb25zdCBkZWNsID0gcm9vdC5maXJzdC5maXJzdFxuICAgKiBkZWNsLnByb3AgLy89PiAnY29sb3InXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgRGVjbGFyYXRpb24jXG4gICAqIEBtZW1iZXIge3N0cmluZ30gdmFsdWUgVGhlIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EgeyBjb2xvcjogYmxhY2sgfScpXG4gICAqIGNvbnN0IGRlY2wgPSByb290LmZpcnN0LmZpcnN0XG4gICAqIGRlY2wudmFsdWUgLy89PiAnYmxhY2snXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgRGVjbGFyYXRpb24jXG4gICAqIEBtZW1iZXIge2Jvb2xlYW59IGltcG9ydGFudCBgdHJ1ZWAgaWYgdGhlIGRlY2xhcmF0aW9uXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgYW4gIWltcG9ydGFudCBhbm5vdGF0aW9uLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayAhaW1wb3J0YW50OyBjb2xvcjogcmVkIH0nKVxuICAgKiByb290LmZpcnN0LmZpcnN0LmltcG9ydGFudCAvLz0+IHRydWVcbiAgICogcm9vdC5maXJzdC5sYXN0LmltcG9ydGFudCAgLy89PiB1bmRlZmluZWRcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBEZWNsYXJhdGlvbiNcbiAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAqXG4gICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAqXG4gICAqICogYGJlZm9yZWA6IHRoZSBzcGFjZSBzeW1ib2xzIGJlZm9yZSB0aGUgbm9kZS4gSXQgYWxzbyBzdG9yZXMgYCpgXG4gICAqICAgYW5kIGBfYCBzeW1ib2xzIGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gKElFIGhhY2spLlxuICAgKiAqIGBiZXR3ZWVuYDogdGhlIHN5bWJvbHMgYmV0d2VlbiB0aGUgcHJvcGVydHkgYW5kIHZhbHVlXG4gICAqICAgZm9yIGRlY2xhcmF0aW9ucy5cbiAgICogKiBgaW1wb3J0YW50YDogdGhlIGNvbnRlbnQgb2YgdGhlIGltcG9ydGFudCBzdGF0ZW1lbnQsXG4gICAqICAgaWYgaXQgaXMgbm90IGp1c3QgYCFpbXBvcnRhbnRgLlxuICAgKlxuICAgKiBQb3N0Q1NTIGNsZWFucyBkZWNsYXJhdGlvbiBmcm9tIGNvbW1lbnRzIGFuZCBleHRyYSBzcGFjZXMsXG4gICAqIGJ1dCBpdCBzdG9yZXMgb3JpZ2luIGNvbnRlbnQgaW4gcmF3cyBwcm9wZXJ0aWVzLlxuICAgKiBBcyBzdWNoLCBpZiB5b3UgZG9u4oCZdCBjaGFuZ2UgYSBkZWNsYXJhdGlvbuKAmXMgdmFsdWUsXG4gICAqIFBvc3RDU1Mgd2lsbCB1c2UgdGhlIHJhdyB2YWx1ZSB3aXRoIGNvbW1lbnRzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7XFxuICBjb2xvcjpibGFja1xcbn0nKVxuICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJ1xcbiAgJywgYmV0d2VlbjogJzonIH1cbiAgICovXG59XG5cbmV4cG9ydCBkZWZhdWx0IERlY2xhcmF0aW9uXG4iXSwiZmlsZSI6ImRlY2xhcmF0aW9uLmpzIn0=
diff --git a/assets/node_modules/postcss/lib/input.js b/assets/node_modules/postcss/lib/input.js
deleted file mode 100644
index 078f77f..0000000
--- a/assets/node_modules/postcss/lib/input.js
+++ /dev/null
@@ -1,216 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _path = _interopRequireDefault(require("path"));
-
-var _cssSyntaxError = _interopRequireDefault(require("./css-syntax-error"));
-
-var _previousMap = _interopRequireDefault(require("./previous-map"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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); } }
-
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
-
-var sequence = 0;
-/**
- * Represents the source CSS.
- *
- * @example
- * const root = postcss.parse(css, { from: file })
- * const input = root.source.input
- */
-
-var Input =
-/*#__PURE__*/
-function () {
- /**
- * @param {string} css Input CSS source.
- * @param {object} [opts] {@link Processor#process} options.
- */
- function Input(css, opts) {
- if (opts === void 0) {
- opts = {};
- }
-
- if (css === null || typeof css === 'object' && !css.toString) {
- throw new Error("PostCSS received " + css + " instead of CSS string");
- }
- /**
- * Input CSS source
- *
- * @type {string}
- *
- * @example
- * const input = postcss.parse('a{}', { from: file }).input
- * input.css //=> "a{}"
- */
-
-
- this.css = css.toString();
-
- if (this.css[0] === "\uFEFF" || this.css[0] === "\uFFFE") {
- this.hasBOM = true;
- this.css = this.css.slice(1);
- } else {
- this.hasBOM = false;
- }
-
- if (opts.from) {
- if (/^\w+:\/\//.test(opts.from) || _path.default.isAbsolute(opts.from)) {
- /**
- * The absolute path to the CSS source file defined
- * with the `from` option.
- *
- * @type {string}
- *
- * @example
- * const root = postcss.parse(css, { from: 'a.css' })
- * root.source.input.file //=> '/home/ai/a.css'
- */
- this.file = opts.from;
- } else {
- this.file = _path.default.resolve(opts.from);
- }
- }
-
- var map = new _previousMap.default(this.css, opts);
-
- if (map.text) {
- /**
- * The input source map passed from a compilation step before PostCSS
- * (for example, from Sass compiler).
- *
- * @type {PreviousMap}
- *
- * @example
- * root.source.input.map.consumer().sources //=> ['a.sass']
- */
- this.map = map;
- var file = map.consumer().file;
- if (!this.file && file) this.file = this.mapResolve(file);
- }
-
- if (!this.file) {
- sequence += 1;
- /**
- * The unique ID of the CSS source. It will be created if `from` option
- * is not provided (because PostCSS does not know the file path).
- *
- * @type {string}
- *
- * @example
- * const root = postcss.parse(css)
- * root.source.input.file //=> undefined
- * root.source.input.id //=> "<input css 1>"
- */
-
- this.id = '<input css ' + sequence + '>';
- }
-
- if (this.map) this.map.file = this.from;
- }
-
- var _proto = Input.prototype;
-
- _proto.error = function error(message, line, column, opts) {
- if (opts === void 0) {
- opts = {};
- }
-
- var result;
- var origin = this.origin(line, column);
-
- if (origin) {
- result = new _cssSyntaxError.default(message, origin.line, origin.column, origin.source, origin.file, opts.plugin);
- } else {
- result = new _cssSyntaxError.default(message, line, column, this.css, this.file, opts.plugin);
- }
-
- result.input = {
- line: line,
- column: column,
- source: this.css
- };
- if (this.file) result.input.file = this.file;
- return result;
- }
- /**
- * Reads the input source map and returns a symbol position
- * in the input source (e.g., in a Sass file that was compiled
- * to CSS before being passed to PostCSS).
- *
- * @param {number} line Line in input CSS.
- * @param {number} column Column in input CSS.
- *
- * @return {filePosition} Position in input source.
- *
- * @example
- * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 }
- */
- ;
-
- _proto.origin = function origin(line, column) {
- if (!this.map) return false;
- var consumer = this.map.consumer();
- var from = consumer.originalPositionFor({
- line: line,
- column: column
- });
- if (!from.source) return false;
- var result = {
- file: this.mapResolve(from.source),
- line: from.line,
- column: from.column
- };
- var source = consumer.sourceContentFor(from.source);
- if (source) result.source = source;
- return result;
- };
-
- _proto.mapResolve = function mapResolve(file) {
- if (/^\w+:\/\//.test(file)) {
- return file;
- }
-
- return _path.default.resolve(this.map.consumer().sourceRoot || '.', file);
- }
- /**
- * The CSS source identifier. Contains {@link Input#file} if the user
- * set the `from` option, or {@link Input#id} if they did not.
- *
- * @type {string}
- *
- * @example
- * const root = postcss.parse(css, { from: 'a.css' })
- * root.source.input.from //=> "/home/ai/a.css"
- *
- * const root = postcss.parse(css)
- * root.source.input.from //=> "<input css 1>"
- */
- ;
-
- _createClass(Input, [{
- key: "from",
- get: function get() {
- return this.file || this.id;
- }
- }]);
-
- return Input;
-}();
-
-var _default = Input;
-/**
- * @typedef {object} filePosition
- * @property {string} file Path to file.
- * @property {number} line Source line in file.
- * @property {number} column Source column in file.
- */
-
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlucHV0LmVzNiJdLCJuYW1lcyI6WyJzZXF1ZW5jZSIsIklucHV0IiwiY3NzIiwib3B0cyIsInRvU3RyaW5nIiwiRXJyb3IiLCJoYXNCT00iLCJzbGljZSIsImZyb20iLCJ0ZXN0IiwicGF0aCIsImlzQWJzb2x1dGUiLCJmaWxlIiwicmVzb2x2ZSIsIm1hcCIsIlByZXZpb3VzTWFwIiwidGV4dCIsImNvbnN1bWVyIiwibWFwUmVzb2x2ZSIsImlkIiwiZXJyb3IiLCJtZXNzYWdlIiwibGluZSIsImNvbHVtbiIsInJlc3VsdCIsIm9yaWdpbiIsIkNzc1N5bnRheEVycm9yIiwic291cmNlIiwicGx1Z2luIiwiaW5wdXQiLCJvcmlnaW5hbFBvc2l0aW9uRm9yIiwic291cmNlQ29udGVudEZvciIsInNvdXJjZVJvb3QiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7Ozs7Ozs7O0FBRUEsSUFBSUEsUUFBUSxHQUFHLENBQWY7QUFFQTs7Ozs7Ozs7SUFPTUMsSzs7O0FBQ0o7Ozs7QUFJQSxpQkFBYUMsR0FBYixFQUFrQkMsSUFBbEIsRUFBOEI7QUFBQSxRQUFaQSxJQUFZO0FBQVpBLE1BQUFBLElBQVksR0FBTCxFQUFLO0FBQUE7O0FBQzVCLFFBQUlELEdBQUcsS0FBSyxJQUFSLElBQWlCLE9BQU9BLEdBQVAsS0FBZSxRQUFmLElBQTJCLENBQUNBLEdBQUcsQ0FBQ0UsUUFBckQsRUFBZ0U7QUFDOUQsWUFBTSxJQUFJQyxLQUFKLHVCQUErQkgsR0FBL0IsNEJBQU47QUFDRDtBQUVEOzs7Ozs7Ozs7OztBQVNBLFNBQUtBLEdBQUwsR0FBV0EsR0FBRyxDQUFDRSxRQUFKLEVBQVg7O0FBRUEsUUFBSSxLQUFLRixHQUFMLENBQVMsQ0FBVCxNQUFnQixRQUFoQixJQUE0QixLQUFLQSxHQUFMLENBQVMsQ0FBVCxNQUFnQixRQUFoRCxFQUEwRDtBQUN4RCxXQUFLSSxNQUFMLEdBQWMsSUFBZDtBQUNBLFdBQUtKLEdBQUwsR0FBVyxLQUFLQSxHQUFMLENBQVNLLEtBQVQsQ0FBZSxDQUFmLENBQVg7QUFDRCxLQUhELE1BR087QUFDTCxXQUFLRCxNQUFMLEdBQWMsS0FBZDtBQUNEOztBQUVELFFBQUlILElBQUksQ0FBQ0ssSUFBVCxFQUFlO0FBQ2IsVUFBSSxZQUFZQyxJQUFaLENBQWlCTixJQUFJLENBQUNLLElBQXRCLEtBQStCRSxjQUFLQyxVQUFMLENBQWdCUixJQUFJLENBQUNLLElBQXJCLENBQW5DLEVBQStEO0FBQzdEOzs7Ozs7Ozs7O0FBVUEsYUFBS0ksSUFBTCxHQUFZVCxJQUFJLENBQUNLLElBQWpCO0FBQ0QsT0FaRCxNQVlPO0FBQ0wsYUFBS0ksSUFBTCxHQUFZRixjQUFLRyxPQUFMLENBQWFWLElBQUksQ0FBQ0ssSUFBbEIsQ0FBWjtBQUNEO0FBQ0Y7O0FBRUQsUUFBSU0sR0FBRyxHQUFHLElBQUlDLG9CQUFKLENBQWdCLEtBQUtiLEdBQXJCLEVBQTBCQyxJQUExQixDQUFWOztBQUNBLFFBQUlXLEdBQUcsQ0FBQ0UsSUFBUixFQUFjO0FBQ1o7Ozs7Ozs7OztBQVNBLFdBQUtGLEdBQUwsR0FBV0EsR0FBWDtBQUNBLFVBQUlGLElBQUksR0FBR0UsR0FBRyxDQUFDRyxRQUFKLEdBQWVMLElBQTFCO0FBQ0EsVUFBSSxDQUFDLEtBQUtBLElBQU4sSUFBY0EsSUFBbEIsRUFBd0IsS0FBS0EsSUFBTCxHQUFZLEtBQUtNLFVBQUwsQ0FBZ0JOLElBQWhCLENBQVo7QUFDekI7O0FBRUQsUUFBSSxDQUFDLEtBQUtBLElBQVYsRUFBZ0I7QUFDZFosTUFBQUEsUUFBUSxJQUFJLENBQVo7QUFDQTs7Ozs7Ozs7Ozs7O0FBV0EsV0FBS21CLEVBQUwsR0FBVSxnQkFBZ0JuQixRQUFoQixHQUEyQixHQUFyQztBQUNEOztBQUNELFFBQUksS0FBS2MsR0FBVCxFQUFjLEtBQUtBLEdBQUwsQ0FBU0YsSUFBVCxHQUFnQixLQUFLSixJQUFyQjtBQUNmOzs7O1NBRURZLEssR0FBQSxlQUFPQyxPQUFQLEVBQWdCQyxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJwQixJQUE5QixFQUEwQztBQUFBLFFBQVpBLElBQVk7QUFBWkEsTUFBQUEsSUFBWSxHQUFMLEVBQUs7QUFBQTs7QUFDeEMsUUFBSXFCLE1BQUo7QUFDQSxRQUFJQyxNQUFNLEdBQUcsS0FBS0EsTUFBTCxDQUFZSCxJQUFaLEVBQWtCQyxNQUFsQixDQUFiOztBQUNBLFFBQUlFLE1BQUosRUFBWTtBQUNWRCxNQUFBQSxNQUFNLEdBQUcsSUFBSUUsdUJBQUosQ0FDUEwsT0FETyxFQUNFSSxNQUFNLENBQUNILElBRFQsRUFDZUcsTUFBTSxDQUFDRixNQUR0QixFQUVQRSxNQUFNLENBQUNFLE1BRkEsRUFFUUYsTUFBTSxDQUFDYixJQUZmLEVBRXFCVCxJQUFJLENBQUN5QixNQUYxQixDQUFUO0FBSUQsS0FMRCxNQUtPO0FBQ0xKLE1BQUFBLE1BQU0sR0FBRyxJQUFJRSx1QkFBSixDQUNQTCxPQURPLEVBQ0VDLElBREYsRUFDUUMsTUFEUixFQUNnQixLQUFLckIsR0FEckIsRUFDMEIsS0FBS1UsSUFEL0IsRUFDcUNULElBQUksQ0FBQ3lCLE1BRDFDLENBQVQ7QUFFRDs7QUFFREosSUFBQUEsTUFBTSxDQUFDSyxLQUFQLEdBQWU7QUFBRVAsTUFBQUEsSUFBSSxFQUFKQSxJQUFGO0FBQVFDLE1BQUFBLE1BQU0sRUFBTkEsTUFBUjtBQUFnQkksTUFBQUEsTUFBTSxFQUFFLEtBQUt6QjtBQUE3QixLQUFmO0FBQ0EsUUFBSSxLQUFLVSxJQUFULEVBQWVZLE1BQU0sQ0FBQ0ssS0FBUCxDQUFhakIsSUFBYixHQUFvQixLQUFLQSxJQUF6QjtBQUVmLFdBQU9ZLE1BQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7U0FhQUMsTSxHQUFBLGdCQUFRSCxJQUFSLEVBQWNDLE1BQWQsRUFBc0I7QUFDcEIsUUFBSSxDQUFDLEtBQUtULEdBQVYsRUFBZSxPQUFPLEtBQVA7QUFDZixRQUFJRyxRQUFRLEdBQUcsS0FBS0gsR0FBTCxDQUFTRyxRQUFULEVBQWY7QUFFQSxRQUFJVCxJQUFJLEdBQUdTLFFBQVEsQ0FBQ2EsbUJBQVQsQ0FBNkI7QUFBRVIsTUFBQUEsSUFBSSxFQUFKQSxJQUFGO0FBQVFDLE1BQUFBLE1BQU0sRUFBTkE7QUFBUixLQUE3QixDQUFYO0FBQ0EsUUFBSSxDQUFDZixJQUFJLENBQUNtQixNQUFWLEVBQWtCLE9BQU8sS0FBUDtBQUVsQixRQUFJSCxNQUFNLEdBQUc7QUFDWFosTUFBQUEsSUFBSSxFQUFFLEtBQUtNLFVBQUwsQ0FBZ0JWLElBQUksQ0FBQ21CLE1BQXJCLENBREs7QUFFWEwsTUFBQUEsSUFBSSxFQUFFZCxJQUFJLENBQUNjLElBRkE7QUFHWEMsTUFBQUEsTUFBTSxFQUFFZixJQUFJLENBQUNlO0FBSEYsS0FBYjtBQU1BLFFBQUlJLE1BQU0sR0FBR1YsUUFBUSxDQUFDYyxnQkFBVCxDQUEwQnZCLElBQUksQ0FBQ21CLE1BQS9CLENBQWI7QUFDQSxRQUFJQSxNQUFKLEVBQVlILE1BQU0sQ0FBQ0csTUFBUCxHQUFnQkEsTUFBaEI7QUFFWixXQUFPSCxNQUFQO0FBQ0QsRzs7U0FFRE4sVSxHQUFBLG9CQUFZTixJQUFaLEVBQWtCO0FBQ2hCLFFBQUksWUFBWUgsSUFBWixDQUFpQkcsSUFBakIsQ0FBSixFQUE0QjtBQUMxQixhQUFPQSxJQUFQO0FBQ0Q7O0FBQ0QsV0FBT0YsY0FBS0csT0FBTCxDQUFhLEtBQUtDLEdBQUwsQ0FBU0csUUFBVCxHQUFvQmUsVUFBcEIsSUFBa0MsR0FBL0MsRUFBb0RwQixJQUFwRCxDQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBYVk7QUFDVixhQUFPLEtBQUtBLElBQUwsSUFBYSxLQUFLTyxFQUF6QjtBQUNEOzs7Ozs7ZUFHWWxCLEs7QUFFZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5cbmltcG9ydCBDc3NTeW50YXhFcnJvciBmcm9tICcuL2Nzcy1zeW50YXgtZXJyb3InXG5pbXBvcnQgUHJldmlvdXNNYXAgZnJvbSAnLi9wcmV2aW91cy1tYXAnXG5cbmxldCBzZXF1ZW5jZSA9IDBcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBzb3VyY2UgQ1NTLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ICA9IHBvc3Rjc3MucGFyc2UoY3NzLCB7IGZyb206IGZpbGUgfSlcbiAqIGNvbnN0IGlucHV0ID0gcm9vdC5zb3VyY2UuaW5wdXRcbiAqL1xuY2xhc3MgSW5wdXQge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNzcyAgICBJbnB1dCBDU1Mgc291cmNlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gW29wdHNdIHtAbGluayBQcm9jZXNzb3IjcHJvY2Vzc30gb3B0aW9ucy5cbiAgICovXG4gIGNvbnN0cnVjdG9yIChjc3MsIG9wdHMgPSB7IH0pIHtcbiAgICBpZiAoY3NzID09PSBudWxsIHx8ICh0eXBlb2YgY3NzID09PSAnb2JqZWN0JyAmJiAhY3NzLnRvU3RyaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQb3N0Q1NTIHJlY2VpdmVkICR7IGNzcyB9IGluc3RlYWQgb2YgQ1NTIHN0cmluZ2ApXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5wdXQgQ1NTIHNvdXJjZVxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgaW5wdXQgPSBwb3N0Y3NzLnBhcnNlKCdhe30nLCB7IGZyb206IGZpbGUgfSkuaW5wdXRcbiAgICAgKiBpbnB1dC5jc3MgLy89PiBcImF7fVwiXG4gICAgICovXG4gICAgdGhpcy5jc3MgPSBjc3MudG9TdHJpbmcoKVxuXG4gICAgaWYgKHRoaXMuY3NzWzBdID09PSAnXFx1RkVGRicgfHwgdGhpcy5jc3NbMF0gPT09ICdcXHVGRkZFJykge1xuICAgICAgdGhpcy5oYXNCT00gPSB0cnVlXG4gICAgICB0aGlzLmNzcyA9IHRoaXMuY3NzLnNsaWNlKDEpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFzQk9NID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAob3B0cy5mcm9tKSB7XG4gICAgICBpZiAoL15cXHcrOlxcL1xcLy8udGVzdChvcHRzLmZyb20pIHx8IHBhdGguaXNBYnNvbHV0ZShvcHRzLmZyb20pKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgQ1NTIHNvdXJjZSBmaWxlIGRlZmluZWRcbiAgICAgICAgICogd2l0aCB0aGUgYGZyb21gIG9wdGlvbi5cbiAgICAgICAgICpcbiAgICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoY3NzLCB7IGZyb206ICdhLmNzcycgfSlcbiAgICAgICAgICogcm9vdC5zb3VyY2UuaW5wdXQuZmlsZSAvLz0+ICcvaG9tZS9haS9hLmNzcydcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZmlsZSA9IG9wdHMuZnJvbVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maWxlID0gcGF0aC5yZXNvbHZlKG9wdHMuZnJvbSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbWFwID0gbmV3IFByZXZpb3VzTWFwKHRoaXMuY3NzLCBvcHRzKVxuICAgIGlmIChtYXAudGV4dCkge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgaW5wdXQgc291cmNlIG1hcCBwYXNzZWQgZnJvbSBhIGNvbXBpbGF0aW9uIHN0ZXAgYmVmb3JlIFBvc3RDU1NcbiAgICAgICAqIChmb3IgZXhhbXBsZSwgZnJvbSBTYXNzIGNvbXBpbGVyKS5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7UHJldmlvdXNNYXB9XG4gICAgICAgKlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqIHJvb3Quc291cmNlLmlucHV0Lm1hcC5jb25zdW1lcigpLnNvdXJjZXMgLy89PiBbJ2Euc2FzcyddXG4gICAgICAgKi9cbiAgICAgIHRoaXMubWFwID0gbWFwXG4gICAgICBsZXQgZmlsZSA9IG1hcC5jb25zdW1lcigpLmZpbGVcbiAgICAgIGlmICghdGhpcy5maWxlICYmIGZpbGUpIHRoaXMuZmlsZSA9IHRoaXMubWFwUmVzb2x2ZShmaWxlKVxuICAgIH1cblxuICAgIGlmICghdGhpcy5maWxlKSB7XG4gICAgICBzZXF1ZW5jZSArPSAxXG4gICAgICAvKipcbiAgICAgICAqIFRoZSB1bmlxdWUgSUQgb2YgdGhlIENTUyBzb3VyY2UuIEl0IHdpbGwgYmUgY3JlYXRlZCBpZiBgZnJvbWAgb3B0aW9uXG4gICAgICAgKiBpcyBub3QgcHJvdmlkZWQgKGJlY2F1c2UgUG9zdENTUyBkb2VzIG5vdCBrbm93IHRoZSBmaWxlIHBhdGgpLlxuICAgICAgICpcbiAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgKlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKGNzcylcbiAgICAgICAqIHJvb3Quc291cmNlLmlucHV0LmZpbGUgLy89PiB1bmRlZmluZWRcbiAgICAgICAqIHJvb3Quc291cmNlLmlucHV0LmlkICAgLy89PiBcIjxpbnB1dCBjc3MgMT5cIlxuICAgICAgICovXG4gICAgICB0aGlzLmlkID0gJzxpbnB1dCBjc3MgJyArIHNlcXVlbmNlICsgJz4nXG4gICAgfVxuICAgIGlmICh0aGlzLm1hcCkgdGhpcy5tYXAuZmlsZSA9IHRoaXMuZnJvbVxuICB9XG5cbiAgZXJyb3IgKG1lc3NhZ2UsIGxpbmUsIGNvbHVtbiwgb3B0cyA9IHsgfSkge1xuICAgIGxldCByZXN1bHRcbiAgICBsZXQgb3JpZ2luID0gdGhpcy5vcmlnaW4obGluZSwgY29sdW1uKVxuICAgIGlmIChvcmlnaW4pIHtcbiAgICAgIHJlc3VsdCA9IG5ldyBDc3NTeW50YXhFcnJvcihcbiAgICAgICAgbWVzc2FnZSwgb3JpZ2luLmxpbmUsIG9yaWdpbi5jb2x1bW4sXG4gICAgICAgIG9yaWdpbi5zb3VyY2UsIG9yaWdpbi5maWxlLCBvcHRzLnBsdWdpblxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBuZXcgQ3NzU3ludGF4RXJyb3IoXG4gICAgICAgIG1lc3NhZ2UsIGxpbmUsIGNvbHVtbiwgdGhpcy5jc3MsIHRoaXMuZmlsZSwgb3B0cy5wbHVnaW4pXG4gICAgfVxuXG4gICAgcmVzdWx0LmlucHV0ID0geyBsaW5lLCBjb2x1bW4sIHNvdXJjZTogdGhpcy5jc3MgfVxuICAgIGlmICh0aGlzLmZpbGUpIHJlc3VsdC5pbnB1dC5maWxlID0gdGhpcy5maWxlXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgdGhlIGlucHV0IHNvdXJjZSBtYXAgYW5kIHJldHVybnMgYSBzeW1ib2wgcG9zaXRpb25cbiAgICogaW4gdGhlIGlucHV0IHNvdXJjZSAoZS5nLiwgaW4gYSBTYXNzIGZpbGUgdGhhdCB3YXMgY29tcGlsZWRcbiAgICogdG8gQ1NTIGJlZm9yZSBiZWluZyBwYXNzZWQgdG8gUG9zdENTUykuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lICAgTGluZSBpbiBpbnB1dCBDU1MuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW4gQ29sdW1uIGluIGlucHV0IENTUy5cbiAgICpcbiAgICogQHJldHVybiB7ZmlsZVBvc2l0aW9ufSBQb3NpdGlvbiBpbiBpbnB1dCBzb3VyY2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3Quc291cmNlLmlucHV0Lm9yaWdpbigxLCAxKSAvLz0+IHsgZmlsZTogJ2EuY3NzJywgbGluZTogMywgY29sdW1uOiAxIH1cbiAgICovXG4gIG9yaWdpbiAobGluZSwgY29sdW1uKSB7XG4gICAgaWYgKCF0aGlzLm1hcCkgcmV0dXJuIGZhbHNlXG4gICAgbGV0IGNvbnN1bWVyID0gdGhpcy5tYXAuY29uc3VtZXIoKVxuXG4gICAgbGV0IGZyb20gPSBjb25zdW1lci5vcmlnaW5hbFBvc2l0aW9uRm9yKHsgbGluZSwgY29sdW1uIH0pXG4gICAgaWYgKCFmcm9tLnNvdXJjZSkgcmV0dXJuIGZhbHNlXG5cbiAgICBsZXQgcmVzdWx0ID0ge1xuICAgICAgZmlsZTogdGhpcy5tYXBSZXNvbHZlKGZyb20uc291cmNlKSxcbiAgICAgIGxpbmU6IGZyb20ubGluZSxcbiAgICAgIGNvbHVtbjogZnJvbS5jb2x1bW5cbiAgICB9XG5cbiAgICBsZXQgc291cmNlID0gY29uc3VtZXIuc291cmNlQ29udGVudEZvcihmcm9tLnNvdXJjZSlcbiAgICBpZiAoc291cmNlKSByZXN1bHQuc291cmNlID0gc291cmNlXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBtYXBSZXNvbHZlIChmaWxlKSB7XG4gICAgaWYgKC9eXFx3KzpcXC9cXC8vLnRlc3QoZmlsZSkpIHtcbiAgICAgIHJldHVybiBmaWxlXG4gICAgfVxuICAgIHJldHVybiBwYXRoLnJlc29sdmUodGhpcy5tYXAuY29uc3VtZXIoKS5zb3VyY2VSb290IHx8ICcuJywgZmlsZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIHNvdXJjZSBpZGVudGlmaWVyLiBDb250YWlucyB7QGxpbmsgSW5wdXQjZmlsZX0gaWYgdGhlIHVzZXJcbiAgICogc2V0IHRoZSBgZnJvbWAgb3B0aW9uLCBvciB7QGxpbmsgSW5wdXQjaWR9IGlmIHRoZXkgZGlkIG5vdC5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoY3NzLCB7IGZyb206ICdhLmNzcycgfSlcbiAgICogcm9vdC5zb3VyY2UuaW5wdXQuZnJvbSAvLz0+IFwiL2hvbWUvYWkvYS5jc3NcIlxuICAgKlxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MpXG4gICAqIHJvb3Quc291cmNlLmlucHV0LmZyb20gLy89PiBcIjxpbnB1dCBjc3MgMT5cIlxuICAgKi9cbiAgZ2V0IGZyb20gKCkge1xuICAgIHJldHVybiB0aGlzLmZpbGUgfHwgdGhpcy5pZFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IElucHV0XG5cbi8qKlxuICogQHR5cGVkZWYgIHtvYmplY3R9IGZpbGVQb3NpdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IGZpbGUgICBQYXRoIHRvIGZpbGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gbGluZSAgIFNvdXJjZSBsaW5lIGluIGZpbGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gY29sdW1uIFNvdXJjZSBjb2x1bW4gaW4gZmlsZS5cbiAqL1xuIl0sImZpbGUiOiJpbnB1dC5qcyJ9
diff --git a/assets/node_modules/postcss/lib/lazy-result.js b/assets/node_modules/postcss/lib/lazy-result.js
deleted file mode 100644
index 79c31c6..0000000
--- a/assets/node_modules/postcss/lib/lazy-result.js
+++ /dev/null
@@ -1,444 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _mapGenerator = _interopRequireDefault(require("./map-generator"));
-
-var _stringify2 = _interopRequireDefault(require("./stringify"));
-
-var _warnOnce = _interopRequireDefault(require("./warn-once"));
-
-var _result = _interopRequireDefault(require("./result"));
-
-var _parse = _interopRequireDefault(require("./parse"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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); } }
-
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
-
-function isPromise(obj) {
- return typeof obj === 'object' && typeof obj.then === 'function';
-}
-/**
- * A Promise proxy for the result of PostCSS transformations.
- *
- * A `LazyResult` instance is returned by {@link Processor#process}.
- *
- * @example
- * const lazy = postcss([autoprefixer]).process(css)
- */
-
-
-var LazyResult =
-/*#__PURE__*/
-function () {
- function LazyResult(processor, css, opts) {
- this.stringified = false;
- this.processed = false;
- var root;
-
- if (typeof css === 'object' && css !== null && css.type === 'root') {
- root = css;
- } else if (css instanceof LazyResult || css instanceof _result.default) {
- root = css.root;
-
- if (css.map) {
- if (typeof opts.map === 'undefined') opts.map = {};
- if (!opts.map.inline) opts.map.inline = false;
- opts.map.prev = css.map;
- }
- } else {
- var parser = _parse.default;
- if (opts.syntax) parser = opts.syntax.parse;
- if (opts.parser) parser = opts.parser;
- if (parser.parse) parser = parser.parse;
-
- try {
- root = parser(css, opts);
- } catch (error) {
- this.error = error;
- }
- }
-
- this.result = new _result.default(processor, root, opts);
- }
- /**
- * Returns a {@link Processor} instance, which will be used
- * for CSS transformations.
- *
- * @type {Processor}
- */
-
-
- var _proto = LazyResult.prototype;
-
- /**
- * Processes input CSS through synchronous plugins
- * and calls {@link Result#warnings()}.
- *
- * @return {Warning[]} Warnings from plugins.
- */
- _proto.warnings = function warnings() {
- return this.sync().warnings();
- }
- /**
- * Alias for the {@link LazyResult#css} property.
- *
- * @example
- * lazy + '' === lazy.css
- *
- * @return {string} Output CSS.
- */
- ;
-
- _proto.toString = function toString() {
- return this.css;
- }
- /**
- * Processes input CSS through synchronous and asynchronous plugins
- * and calls `onFulfilled` with a Result instance. If a plugin throws
- * an error, the `onRejected` callback will be executed.
- *
- * It implements standard Promise API.
- *
- * @param {onFulfilled} onFulfilled Callback will be executed
- * when all plugins will finish work.
- * @param {onRejected} onRejected Callback will be executed on any error.
- *
- * @return {Promise} Promise API to make queue.
- *
- * @example
- * postcss([autoprefixer]).process(css, { from: cssPath }).then(result => {
- * console.log(result.css)
- * })
- */
- ;
-
- _proto.then = function then(onFulfilled, onRejected) {
- if (process.env.NODE_ENV !== 'production') {
- if (!('from' in this.opts)) {
- (0, _warnOnce.default)('Without `from` option PostCSS could generate wrong source map ' + 'and will not find Browserslist config. Set it to CSS file path ' + 'or to `undefined` to prevent this warning.');
- }
- }
-
- return this.async().then(onFulfilled, onRejected);
- }
- /**
- * Processes input CSS through synchronous and asynchronous plugins
- * and calls onRejected for each error thrown in any plugin.
- *
- * It implements standard Promise API.
- *
- * @param {onRejected} onRejected Callback will be executed on any error.
- *
- * @return {Promise} Promise API to make queue.
- *
- * @example
- * postcss([autoprefixer]).process(css).then(result => {
- * console.log(result.css)
- * }).catch(error => {
- * console.error(error)
- * })
- */
- ;
-
- _proto.catch = function _catch(onRejected) {
- return this.async().catch(onRejected);
- }
- /**
- * Processes input CSS through synchronous and asynchronous plugins
- * and calls onFinally on any error or when all plugins will finish work.
- *
- * It implements standard Promise API.
- *
- * @param {onFinally} onFinally Callback will be executed on any error or
- * when all plugins will finish work.
- *
- * @return {Promise} Promise API to make queue.
- *
- * @example
- * postcss([autoprefixer]).process(css).finally(() => {
- * console.log('processing ended')
- * })
- */
- ;
-
- _proto.finally = function _finally(onFinally) {
- return this.async().then(onFinally, onFinally);
- };
-
- _proto.handleError = function handleError(error, plugin) {
- try {
- this.error = error;
-
- if (error.name === 'CssSyntaxError' && !error.plugin) {
- error.plugin = plugin.postcssPlugin;
- error.setMessage();
- } else if (plugin.postcssVersion) {
- if (process.env.NODE_ENV !== 'production') {
- var pluginName = plugin.postcssPlugin;
- var pluginVer = plugin.postcssVersion;
- var runtimeVer = this.result.processor.version;
- var a = pluginVer.split('.');
- var b = runtimeVer.split('.');
-
- if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {
- console.error('Unknown error from PostCSS plugin. Your current PostCSS ' + 'version is ' + runtimeVer + ', but ' + pluginName + ' uses ' + pluginVer + '. Perhaps this is the source of the error below.');
- }
- }
- }
- } catch (err) {
- if (console && console.error) console.error(err);
- }
- };
-
- _proto.asyncTick = function asyncTick(resolve, reject) {
- var _this = this;
-
- if (this.plugin >= this.processor.plugins.length) {
- this.processed = true;
- return resolve();
- }
-
- try {
- var plugin = this.processor.plugins[this.plugin];
- var promise = this.run(plugin);
- this.plugin += 1;
-
- if (isPromise(promise)) {
- promise.then(function () {
- _this.asyncTick(resolve, reject);
- }).catch(function (error) {
- _this.handleError(error, plugin);
-
- _this.processed = true;
- reject(error);
- });
- } else {
- this.asyncTick(resolve, reject);
- }
- } catch (error) {
- this.processed = true;
- reject(error);
- }
- };
-
- _proto.async = function async() {
- var _this2 = this;
-
- if (this.processed) {
- return new Promise(function (resolve, reject) {
- if (_this2.error) {
- reject(_this2.error);
- } else {
- resolve(_this2.stringify());
- }
- });
- }
-
- if (this.processing) {
- return this.processing;
- }
-
- this.processing = new Promise(function (resolve, reject) {
- if (_this2.error) return reject(_this2.error);
- _this2.plugin = 0;
-
- _this2.asyncTick(resolve, reject);
- }).then(function () {
- _this2.processed = true;
- return _this2.stringify();
- });
- return this.processing;
- };
-
- _proto.sync = function sync() {
- if (this.processed) return this.result;
- this.processed = true;
-
- if (this.processing) {
- throw new Error('Use process(css).then(cb) to work with async plugins');
- }
-
- if (this.error) throw this.error;
-
- for (var _iterator = this.result.processor.plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var plugin = _ref;
- var promise = this.run(plugin);
-
- if (isPromise(promise)) {
- throw new Error('Use process(css).then(cb) to work with async plugins');
- }
- }
-
- return this.result;
- };
-
- _proto.run = function run(plugin) {
- this.result.lastPlugin = plugin;
-
- try {
- return plugin(this.result.root, this.result);
- } catch (error) {
- this.handleError(error, plugin);
- throw error;
- }
- };
-
- _proto.stringify = function stringify() {
- if (this.stringified) return this.result;
- this.stringified = true;
- this.sync();
- var opts = this.result.opts;
- var str = _stringify2.default;
- if (opts.syntax) str = opts.syntax.stringify;
- if (opts.stringifier) str = opts.stringifier;
- if (str.stringify) str = str.stringify;
- var map = new _mapGenerator.default(str, this.result.root, this.result.opts);
- var data = map.generate();
- this.result.css = data[0];
- this.result.map = data[1];
- return this.result;
- };
-
- _createClass(LazyResult, [{
- key: "processor",
- get: function get() {
- return this.result.processor;
- }
- /**
- * Options from the {@link Processor#process} call.
- *
- * @type {processOptions}
- */
-
- }, {
- key: "opts",
- get: function get() {
- return this.result.opts;
- }
- /**
- * Processes input CSS through synchronous plugins, converts `Root`
- * to a CSS string and returns {@link Result#css}.
- *
- * This property will only work with synchronous plugins.
- * If the processor contains any asynchronous plugins
- * it will throw an error. This is why this method is only
- * for debug purpose, you should always use {@link LazyResult#then}.
- *
- * @type {string}
- * @see Result#css
- */
-
- }, {
- key: "css",
- get: function get() {
- return this.stringify().css;
- }
- /**
- * An alias for the `css` property. Use it with syntaxes
- * that generate non-CSS output.
- *
- * This property will only work with synchronous plugins.
- * If the processor contains any asynchronous plugins
- * it will throw an error. This is why this method is only
- * for debug purpose, you should always use {@link LazyResult#then}.
- *
- * @type {string}
- * @see Result#content
- */
-
- }, {
- key: "content",
- get: function get() {
- return this.stringify().content;
- }
- /**
- * Processes input CSS through synchronous plugins
- * and returns {@link Result#map}.
- *
- * This property will only work with synchronous plugins.
- * If the processor contains any asynchronous plugins
- * it will throw an error. This is why this method is only
- * for debug purpose, you should always use {@link LazyResult#then}.
- *
- * @type {SourceMapGenerator}
- * @see Result#map
- */
-
- }, {
- key: "map",
- get: function get() {
- return this.stringify().map;
- }
- /**
- * Processes input CSS through synchronous plugins
- * and returns {@link Result#root}.
- *
- * This property will only work with synchronous plugins. If the processor
- * contains any asynchronous plugins it will throw an error.
- *
- * This is why this method is only for debug purpose,
- * you should always use {@link LazyResult#then}.
- *
- * @type {Root}
- * @see Result#root
- */
-
- }, {
- key: "root",
- get: function get() {
- return this.sync().root;
- }
- /**
- * Processes input CSS through synchronous plugins
- * and returns {@link Result#messages}.
- *
- * This property will only work with synchronous plugins. If the processor
- * contains any asynchronous plugins it will throw an error.
- *
- * This is why this method is only for debug purpose,
- * you should always use {@link LazyResult#then}.
- *
- * @type {Message[]}
- * @see Result#messages
- */
-
- }, {
- key: "messages",
- get: function get() {
- return this.sync().messages;
- }
- }]);
-
- return LazyResult;
-}();
-
-var _default = LazyResult;
-/**
- * @callback onFulfilled
- * @param {Result} result
- */
-
-/**
- * @callback onRejected
- * @param {Error} error
- */
-
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxhenktcmVzdWx0LmVzNiJdLCJuYW1lcyI6WyJpc1Byb21pc2UiLCJvYmoiLCJ0aGVuIiwiTGF6eVJlc3VsdCIsInByb2Nlc3NvciIsImNzcyIsIm9wdHMiLCJzdHJpbmdpZmllZCIsInByb2Nlc3NlZCIsInJvb3QiLCJ0eXBlIiwiUmVzdWx0IiwibWFwIiwiaW5saW5lIiwicHJldiIsInBhcnNlciIsInBhcnNlIiwic3ludGF4IiwiZXJyb3IiLCJyZXN1bHQiLCJ3YXJuaW5ncyIsInN5bmMiLCJ0b1N0cmluZyIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImFzeW5jIiwiY2F0Y2giLCJmaW5hbGx5Iiwib25GaW5hbGx5IiwiaGFuZGxlRXJyb3IiLCJwbHVnaW4iLCJuYW1lIiwicG9zdGNzc1BsdWdpbiIsInNldE1lc3NhZ2UiLCJwb3N0Y3NzVmVyc2lvbiIsInBsdWdpbk5hbWUiLCJwbHVnaW5WZXIiLCJydW50aW1lVmVyIiwidmVyc2lvbiIsImEiLCJzcGxpdCIsImIiLCJwYXJzZUludCIsImNvbnNvbGUiLCJlcnIiLCJhc3luY1RpY2siLCJyZXNvbHZlIiwicmVqZWN0IiwicGx1Z2lucyIsImxlbmd0aCIsInByb21pc2UiLCJydW4iLCJQcm9taXNlIiwic3RyaW5naWZ5IiwicHJvY2Vzc2luZyIsIkVycm9yIiwibGFzdFBsdWdpbiIsInN0ciIsInN0cmluZ2lmaWVyIiwiTWFwR2VuZXJhdG9yIiwiZGF0YSIsImdlbmVyYXRlIiwiY29udGVudCIsIm1lc3NhZ2VzIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVBLFNBQVNBLFNBQVQsQ0FBb0JDLEdBQXBCLEVBQXlCO0FBQ3ZCLFNBQU8sT0FBT0EsR0FBUCxLQUFlLFFBQWYsSUFBMkIsT0FBT0EsR0FBRyxDQUFDQyxJQUFYLEtBQW9CLFVBQXREO0FBQ0Q7QUFFRDs7Ozs7Ozs7OztJQVFNQyxVOzs7QUFDSixzQkFBYUMsU0FBYixFQUF3QkMsR0FBeEIsRUFBNkJDLElBQTdCLEVBQW1DO0FBQ2pDLFNBQUtDLFdBQUwsR0FBbUIsS0FBbkI7QUFDQSxTQUFLQyxTQUFMLEdBQWlCLEtBQWpCO0FBRUEsUUFBSUMsSUFBSjs7QUFDQSxRQUFJLE9BQU9KLEdBQVAsS0FBZSxRQUFmLElBQTJCQSxHQUFHLEtBQUssSUFBbkMsSUFBMkNBLEdBQUcsQ0FBQ0ssSUFBSixLQUFhLE1BQTVELEVBQW9FO0FBQ2xFRCxNQUFBQSxJQUFJLEdBQUdKLEdBQVA7QUFDRCxLQUZELE1BRU8sSUFBSUEsR0FBRyxZQUFZRixVQUFmLElBQTZCRSxHQUFHLFlBQVlNLGVBQWhELEVBQXdEO0FBQzdERixNQUFBQSxJQUFJLEdBQUdKLEdBQUcsQ0FBQ0ksSUFBWDs7QUFDQSxVQUFJSixHQUFHLENBQUNPLEdBQVIsRUFBYTtBQUNYLFlBQUksT0FBT04sSUFBSSxDQUFDTSxHQUFaLEtBQW9CLFdBQXhCLEVBQXFDTixJQUFJLENBQUNNLEdBQUwsR0FBVyxFQUFYO0FBQ3JDLFlBQUksQ0FBQ04sSUFBSSxDQUFDTSxHQUFMLENBQVNDLE1BQWQsRUFBc0JQLElBQUksQ0FBQ00sR0FBTCxDQUFTQyxNQUFULEdBQWtCLEtBQWxCO0FBQ3RCUCxRQUFBQSxJQUFJLENBQUNNLEdBQUwsQ0FBU0UsSUFBVCxHQUFnQlQsR0FBRyxDQUFDTyxHQUFwQjtBQUNEO0FBQ0YsS0FQTSxNQU9BO0FBQ0wsVUFBSUcsTUFBTSxHQUFHQyxjQUFiO0FBQ0EsVUFBSVYsSUFBSSxDQUFDVyxNQUFULEVBQWlCRixNQUFNLEdBQUdULElBQUksQ0FBQ1csTUFBTCxDQUFZRCxLQUFyQjtBQUNqQixVQUFJVixJQUFJLENBQUNTLE1BQVQsRUFBaUJBLE1BQU0sR0FBR1QsSUFBSSxDQUFDUyxNQUFkO0FBQ2pCLFVBQUlBLE1BQU0sQ0FBQ0MsS0FBWCxFQUFrQkQsTUFBTSxHQUFHQSxNQUFNLENBQUNDLEtBQWhCOztBQUVsQixVQUFJO0FBQ0ZQLFFBQUFBLElBQUksR0FBR00sTUFBTSxDQUFDVixHQUFELEVBQU1DLElBQU4sQ0FBYjtBQUNELE9BRkQsQ0FFRSxPQUFPWSxLQUFQLEVBQWM7QUFDZCxhQUFLQSxLQUFMLEdBQWFBLEtBQWI7QUFDRDtBQUNGOztBQUVELFNBQUtDLE1BQUwsR0FBYyxJQUFJUixlQUFKLENBQVdQLFNBQVgsRUFBc0JLLElBQXRCLEVBQTRCSCxJQUE1QixDQUFkO0FBQ0Q7QUFFRDs7Ozs7Ozs7OztBQXFHQTs7Ozs7O1NBTUFjLFEsR0FBQSxvQkFBWTtBQUNWLFdBQU8sS0FBS0MsSUFBTCxHQUFZRCxRQUFaLEVBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7O1NBUUFFLFEsR0FBQSxvQkFBWTtBQUNWLFdBQU8sS0FBS2pCLEdBQVo7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQWtCQUgsSSxHQUFBLGNBQU1xQixXQUFOLEVBQW1CQyxVQUFuQixFQUErQjtBQUM3QixRQUFJQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBWixLQUF5QixZQUE3QixFQUEyQztBQUN6QyxVQUFJLEVBQUUsVUFBVSxLQUFLckIsSUFBakIsQ0FBSixFQUE0QjtBQUMxQiwrQkFDRSxtRUFDQSxpRUFEQSxHQUVBLDRDQUhGO0FBS0Q7QUFDRjs7QUFDRCxXQUFPLEtBQUtzQixLQUFMLEdBQWExQixJQUFiLENBQWtCcUIsV0FBbEIsRUFBK0JDLFVBQS9CLENBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBaUJBSyxLLEdBQUEsZ0JBQU9MLFVBQVAsRUFBbUI7QUFDakIsV0FBTyxLQUFLSSxLQUFMLEdBQWFDLEtBQWIsQ0FBbUJMLFVBQW5CLENBQVA7QUFDRDtBQUNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FnQkFNLE8sR0FBQSxrQkFBU0MsU0FBVCxFQUFvQjtBQUNsQixXQUFPLEtBQUtILEtBQUwsR0FBYTFCLElBQWIsQ0FBa0I2QixTQUFsQixFQUE2QkEsU0FBN0IsQ0FBUDtBQUNELEc7O1NBRURDLFcsR0FBQSxxQkFBYWQsS0FBYixFQUFvQmUsTUFBcEIsRUFBNEI7QUFDMUIsUUFBSTtBQUNGLFdBQUtmLEtBQUwsR0FBYUEsS0FBYjs7QUFDQSxVQUFJQSxLQUFLLENBQUNnQixJQUFOLEtBQWUsZ0JBQWYsSUFBbUMsQ0FBQ2hCLEtBQUssQ0FBQ2UsTUFBOUMsRUFBc0Q7QUFDcERmLFFBQUFBLEtBQUssQ0FBQ2UsTUFBTixHQUFlQSxNQUFNLENBQUNFLGFBQXRCO0FBQ0FqQixRQUFBQSxLQUFLLENBQUNrQixVQUFOO0FBQ0QsT0FIRCxNQUdPLElBQUlILE1BQU0sQ0FBQ0ksY0FBWCxFQUEyQjtBQUNoQyxZQUFJWixPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBWixLQUF5QixZQUE3QixFQUEyQztBQUN6QyxjQUFJVyxVQUFVLEdBQUdMLE1BQU0sQ0FBQ0UsYUFBeEI7QUFDQSxjQUFJSSxTQUFTLEdBQUdOLE1BQU0sQ0FBQ0ksY0FBdkI7QUFDQSxjQUFJRyxVQUFVLEdBQUcsS0FBS3JCLE1BQUwsQ0FBWWYsU0FBWixDQUFzQnFDLE9BQXZDO0FBQ0EsY0FBSUMsQ0FBQyxHQUFHSCxTQUFTLENBQUNJLEtBQVYsQ0FBZ0IsR0FBaEIsQ0FBUjtBQUNBLGNBQUlDLENBQUMsR0FBR0osVUFBVSxDQUFDRyxLQUFYLENBQWlCLEdBQWpCLENBQVI7O0FBRUEsY0FBSUQsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFTRSxDQUFDLENBQUMsQ0FBRCxDQUFWLElBQWlCQyxRQUFRLENBQUNILENBQUMsQ0FBQyxDQUFELENBQUYsQ0FBUixHQUFpQkcsUUFBUSxDQUFDRCxDQUFDLENBQUMsQ0FBRCxDQUFGLENBQTlDLEVBQXNEO0FBQ3BERSxZQUFBQSxPQUFPLENBQUM1QixLQUFSLENBQ0UsNkRBQ0EsYUFEQSxHQUNnQnNCLFVBRGhCLEdBQzZCLFFBRDdCLEdBQ3dDRixVQUR4QyxHQUNxRCxRQURyRCxHQUVBQyxTQUZBLEdBRVksa0RBSGQ7QUFLRDtBQUNGO0FBQ0Y7QUFDRixLQXRCRCxDQXNCRSxPQUFPUSxHQUFQLEVBQVk7QUFDWixVQUFJRCxPQUFPLElBQUlBLE9BQU8sQ0FBQzVCLEtBQXZCLEVBQThCNEIsT0FBTyxDQUFDNUIsS0FBUixDQUFjNkIsR0FBZDtBQUMvQjtBQUNGLEc7O1NBRURDLFMsR0FBQSxtQkFBV0MsT0FBWCxFQUFvQkMsTUFBcEIsRUFBNEI7QUFBQTs7QUFDMUIsUUFBSSxLQUFLakIsTUFBTCxJQUFlLEtBQUs3QixTQUFMLENBQWUrQyxPQUFmLENBQXVCQyxNQUExQyxFQUFrRDtBQUNoRCxXQUFLNUMsU0FBTCxHQUFpQixJQUFqQjtBQUNBLGFBQU95QyxPQUFPLEVBQWQ7QUFDRDs7QUFFRCxRQUFJO0FBQ0YsVUFBSWhCLE1BQU0sR0FBRyxLQUFLN0IsU0FBTCxDQUFlK0MsT0FBZixDQUF1QixLQUFLbEIsTUFBNUIsQ0FBYjtBQUNBLFVBQUlvQixPQUFPLEdBQUcsS0FBS0MsR0FBTCxDQUFTckIsTUFBVCxDQUFkO0FBQ0EsV0FBS0EsTUFBTCxJQUFlLENBQWY7O0FBRUEsVUFBSWpDLFNBQVMsQ0FBQ3FELE9BQUQsQ0FBYixFQUF3QjtBQUN0QkEsUUFBQUEsT0FBTyxDQUFDbkQsSUFBUixDQUFhLFlBQU07QUFDakIsVUFBQSxLQUFJLENBQUM4QyxTQUFMLENBQWVDLE9BQWYsRUFBd0JDLE1BQXhCO0FBQ0QsU0FGRCxFQUVHckIsS0FGSCxDQUVTLFVBQUFYLEtBQUssRUFBSTtBQUNoQixVQUFBLEtBQUksQ0FBQ2MsV0FBTCxDQUFpQmQsS0FBakIsRUFBd0JlLE1BQXhCOztBQUNBLFVBQUEsS0FBSSxDQUFDekIsU0FBTCxHQUFpQixJQUFqQjtBQUNBMEMsVUFBQUEsTUFBTSxDQUFDaEMsS0FBRCxDQUFOO0FBQ0QsU0FORDtBQU9ELE9BUkQsTUFRTztBQUNMLGFBQUs4QixTQUFMLENBQWVDLE9BQWYsRUFBd0JDLE1BQXhCO0FBQ0Q7QUFDRixLQWhCRCxDQWdCRSxPQUFPaEMsS0FBUCxFQUFjO0FBQ2QsV0FBS1YsU0FBTCxHQUFpQixJQUFqQjtBQUNBMEMsTUFBQUEsTUFBTSxDQUFDaEMsS0FBRCxDQUFOO0FBQ0Q7QUFDRixHOztTQUVEVSxLLEdBQUEsaUJBQVM7QUFBQTs7QUFDUCxRQUFJLEtBQUtwQixTQUFULEVBQW9CO0FBQ2xCLGFBQU8sSUFBSStDLE9BQUosQ0FBWSxVQUFDTixPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDdEMsWUFBSSxNQUFJLENBQUNoQyxLQUFULEVBQWdCO0FBQ2RnQyxVQUFBQSxNQUFNLENBQUMsTUFBSSxDQUFDaEMsS0FBTixDQUFOO0FBQ0QsU0FGRCxNQUVPO0FBQ0wrQixVQUFBQSxPQUFPLENBQUMsTUFBSSxDQUFDTyxTQUFMLEVBQUQsQ0FBUDtBQUNEO0FBQ0YsT0FOTSxDQUFQO0FBT0Q7O0FBQ0QsUUFBSSxLQUFLQyxVQUFULEVBQXFCO0FBQ25CLGFBQU8sS0FBS0EsVUFBWjtBQUNEOztBQUVELFNBQUtBLFVBQUwsR0FBa0IsSUFBSUYsT0FBSixDQUFZLFVBQUNOLE9BQUQsRUFBVUMsTUFBVixFQUFxQjtBQUNqRCxVQUFJLE1BQUksQ0FBQ2hDLEtBQVQsRUFBZ0IsT0FBT2dDLE1BQU0sQ0FBQyxNQUFJLENBQUNoQyxLQUFOLENBQWI7QUFDaEIsTUFBQSxNQUFJLENBQUNlLE1BQUwsR0FBYyxDQUFkOztBQUNBLE1BQUEsTUFBSSxDQUFDZSxTQUFMLENBQWVDLE9BQWYsRUFBd0JDLE1BQXhCO0FBQ0QsS0FKaUIsRUFJZmhELElBSmUsQ0FJVixZQUFNO0FBQ1osTUFBQSxNQUFJLENBQUNNLFNBQUwsR0FBaUIsSUFBakI7QUFDQSxhQUFPLE1BQUksQ0FBQ2dELFNBQUwsRUFBUDtBQUNELEtBUGlCLENBQWxCO0FBU0EsV0FBTyxLQUFLQyxVQUFaO0FBQ0QsRzs7U0FFRHBDLEksR0FBQSxnQkFBUTtBQUNOLFFBQUksS0FBS2IsU0FBVCxFQUFvQixPQUFPLEtBQUtXLE1BQVo7QUFDcEIsU0FBS1gsU0FBTCxHQUFpQixJQUFqQjs7QUFFQSxRQUFJLEtBQUtpRCxVQUFULEVBQXFCO0FBQ25CLFlBQU0sSUFBSUMsS0FBSixDQUNKLHNEQURJLENBQU47QUFFRDs7QUFFRCxRQUFJLEtBQUt4QyxLQUFULEVBQWdCLE1BQU0sS0FBS0EsS0FBWDs7QUFFaEIseUJBQW1CLEtBQUtDLE1BQUwsQ0FBWWYsU0FBWixDQUFzQitDLE9BQXpDLGtIQUFrRDtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUEsVUFBekNsQixNQUF5QztBQUNoRCxVQUFJb0IsT0FBTyxHQUFHLEtBQUtDLEdBQUwsQ0FBU3JCLE1BQVQsQ0FBZDs7QUFDQSxVQUFJakMsU0FBUyxDQUFDcUQsT0FBRCxDQUFiLEVBQXdCO0FBQ3RCLGNBQU0sSUFBSUssS0FBSixDQUNKLHNEQURJLENBQU47QUFFRDtBQUNGOztBQUVELFdBQU8sS0FBS3ZDLE1BQVo7QUFDRCxHOztTQUVEbUMsRyxHQUFBLGFBQUtyQixNQUFMLEVBQWE7QUFDWCxTQUFLZCxNQUFMLENBQVl3QyxVQUFaLEdBQXlCMUIsTUFBekI7O0FBRUEsUUFBSTtBQUNGLGFBQU9BLE1BQU0sQ0FBQyxLQUFLZCxNQUFMLENBQVlWLElBQWIsRUFBbUIsS0FBS1UsTUFBeEIsQ0FBYjtBQUNELEtBRkQsQ0FFRSxPQUFPRCxLQUFQLEVBQWM7QUFDZCxXQUFLYyxXQUFMLENBQWlCZCxLQUFqQixFQUF3QmUsTUFBeEI7QUFDQSxZQUFNZixLQUFOO0FBQ0Q7QUFDRixHOztTQUVEc0MsUyxHQUFBLHFCQUFhO0FBQ1gsUUFBSSxLQUFLakQsV0FBVCxFQUFzQixPQUFPLEtBQUtZLE1BQVo7QUFDdEIsU0FBS1osV0FBTCxHQUFtQixJQUFuQjtBQUVBLFNBQUtjLElBQUw7QUFFQSxRQUFJZixJQUFJLEdBQUcsS0FBS2EsTUFBTCxDQUFZYixJQUF2QjtBQUNBLFFBQUlzRCxHQUFHLEdBQUdKLG1CQUFWO0FBQ0EsUUFBSWxELElBQUksQ0FBQ1csTUFBVCxFQUFpQjJDLEdBQUcsR0FBR3RELElBQUksQ0FBQ1csTUFBTCxDQUFZdUMsU0FBbEI7QUFDakIsUUFBSWxELElBQUksQ0FBQ3VELFdBQVQsRUFBc0JELEdBQUcsR0FBR3RELElBQUksQ0FBQ3VELFdBQVg7QUFDdEIsUUFBSUQsR0FBRyxDQUFDSixTQUFSLEVBQW1CSSxHQUFHLEdBQUdBLEdBQUcsQ0FBQ0osU0FBVjtBQUVuQixRQUFJNUMsR0FBRyxHQUFHLElBQUlrRCxxQkFBSixDQUFpQkYsR0FBakIsRUFBc0IsS0FBS3pDLE1BQUwsQ0FBWVYsSUFBbEMsRUFBd0MsS0FBS1UsTUFBTCxDQUFZYixJQUFwRCxDQUFWO0FBQ0EsUUFBSXlELElBQUksR0FBR25ELEdBQUcsQ0FBQ29ELFFBQUosRUFBWDtBQUNBLFNBQUs3QyxNQUFMLENBQVlkLEdBQVosR0FBa0IwRCxJQUFJLENBQUMsQ0FBRCxDQUF0QjtBQUNBLFNBQUs1QyxNQUFMLENBQVlQLEdBQVosR0FBa0JtRCxJQUFJLENBQUMsQ0FBRCxDQUF0QjtBQUVBLFdBQU8sS0FBSzVDLE1BQVo7QUFDRCxHOzs7O3dCQWpVZ0I7QUFDZixhQUFPLEtBQUtBLE1BQUwsQ0FBWWYsU0FBbkI7QUFDRDtBQUVEOzs7Ozs7Ozt3QkFLWTtBQUNWLGFBQU8sS0FBS2UsTUFBTCxDQUFZYixJQUFuQjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozt3QkFZVztBQUNULGFBQU8sS0FBS2tELFNBQUwsR0FBaUJuRCxHQUF4QjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozt3QkFZZTtBQUNiLGFBQU8sS0FBS21ELFNBQUwsR0FBaUJTLE9BQXhCO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O3dCQVlXO0FBQ1QsYUFBTyxLQUFLVCxTQUFMLEdBQWlCNUMsR0FBeEI7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O3dCQWFZO0FBQ1YsYUFBTyxLQUFLUyxJQUFMLEdBQVlaLElBQW5CO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozt3QkFhZ0I7QUFDZCxhQUFPLEtBQUtZLElBQUwsR0FBWTZDLFFBQW5CO0FBQ0Q7Ozs7OztlQXVPWS9ELFU7QUFFZjs7Ozs7QUFLQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNYXBHZW5lcmF0b3IgZnJvbSAnLi9tYXAtZ2VuZXJhdG9yJ1xuaW1wb3J0IHN0cmluZ2lmeSBmcm9tICcuL3N0cmluZ2lmeSdcbmltcG9ydCB3YXJuT25jZSBmcm9tICcuL3dhcm4tb25jZSdcbmltcG9ydCBSZXN1bHQgZnJvbSAnLi9yZXN1bHQnXG5pbXBvcnQgcGFyc2UgZnJvbSAnLi9wYXJzZSdcblxuZnVuY3Rpb24gaXNQcm9taXNlIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xufVxuXG4vKipcbiAqIEEgUHJvbWlzZSBwcm94eSBmb3IgdGhlIHJlc3VsdCBvZiBQb3N0Q1NTIHRyYW5zZm9ybWF0aW9ucy5cbiAqXG4gKiBBIGBMYXp5UmVzdWx0YCBpbnN0YW5jZSBpcyByZXR1cm5lZCBieSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9LlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBsYXp5ID0gcG9zdGNzcyhbYXV0b3ByZWZpeGVyXSkucHJvY2Vzcyhjc3MpXG4gKi9cbmNsYXNzIExhenlSZXN1bHQge1xuICBjb25zdHJ1Y3RvciAocHJvY2Vzc29yLCBjc3MsIG9wdHMpIHtcbiAgICB0aGlzLnN0cmluZ2lmaWVkID0gZmFsc2VcbiAgICB0aGlzLnByb2Nlc3NlZCA9IGZhbHNlXG5cbiAgICBsZXQgcm9vdFxuICAgIGlmICh0eXBlb2YgY3NzID09PSAnb2JqZWN0JyAmJiBjc3MgIT09IG51bGwgJiYgY3NzLnR5cGUgPT09ICdyb290Jykge1xuICAgICAgcm9vdCA9IGNzc1xuICAgIH0gZWxzZSBpZiAoY3NzIGluc3RhbmNlb2YgTGF6eVJlc3VsdCB8fCBjc3MgaW5zdGFuY2VvZiBSZXN1bHQpIHtcbiAgICAgIHJvb3QgPSBjc3Mucm9vdFxuICAgICAgaWYgKGNzcy5tYXApIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRzLm1hcCA9PT0gJ3VuZGVmaW5lZCcpIG9wdHMubWFwID0geyB9XG4gICAgICAgIGlmICghb3B0cy5tYXAuaW5saW5lKSBvcHRzLm1hcC5pbmxpbmUgPSBmYWxzZVxuICAgICAgICBvcHRzLm1hcC5wcmV2ID0gY3NzLm1hcFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcGFyc2VyID0gcGFyc2VcbiAgICAgIGlmIChvcHRzLnN5bnRheCkgcGFyc2VyID0gb3B0cy5zeW50YXgucGFyc2VcbiAgICAgIGlmIChvcHRzLnBhcnNlcikgcGFyc2VyID0gb3B0cy5wYXJzZXJcbiAgICAgIGlmIChwYXJzZXIucGFyc2UpIHBhcnNlciA9IHBhcnNlci5wYXJzZVxuXG4gICAgICB0cnkge1xuICAgICAgICByb290ID0gcGFyc2VyKGNzcywgb3B0cylcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvclxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucmVzdWx0ID0gbmV3IFJlc3VsdChwcm9jZXNzb3IsIHJvb3QsIG9wdHMpXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHtAbGluayBQcm9jZXNzb3J9IGluc3RhbmNlLCB3aGljaCB3aWxsIGJlIHVzZWRcbiAgICogZm9yIENTUyB0cmFuc2Zvcm1hdGlvbnMuXG4gICAqXG4gICAqIEB0eXBlIHtQcm9jZXNzb3J9XG4gICAqL1xuICBnZXQgcHJvY2Vzc29yICgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXN1bHQucHJvY2Vzc29yXG4gIH1cblxuICAvKipcbiAgICogT3B0aW9ucyBmcm9tIHRoZSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9IGNhbGwuXG4gICAqXG4gICAqIEB0eXBlIHtwcm9jZXNzT3B0aW9uc31cbiAgICovXG4gIGdldCBvcHRzICgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXN1bHQub3B0c1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zLCBjb252ZXJ0cyBgUm9vdGBcbiAgICogdG8gYSBDU1Mgc3RyaW5nIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQjY3NzfS5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgd29yayB3aXRoIHN5bmNocm9ub3VzIHBsdWdpbnMuXG4gICAqIElmIHRoZSBwcm9jZXNzb3IgY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IuIFRoaXMgaXMgd2h5IHRoaXMgbWV0aG9kIGlzIG9ubHlcbiAgICogZm9yIGRlYnVnIHB1cnBvc2UsIHlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQHNlZSBSZXN1bHQjY3NzXG4gICAqL1xuICBnZXQgY3NzICgpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdpZnkoKS5jc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBhbGlhcyBmb3IgdGhlIGBjc3NgIHByb3BlcnR5LiBVc2UgaXQgd2l0aCBzeW50YXhlc1xuICAgKiB0aGF0IGdlbmVyYXRlIG5vbi1DU1Mgb3V0cHV0LlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy5cbiAgICogSWYgdGhlIHByb2Nlc3NvciBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogaXQgd2lsbCB0aHJvdyBhbiBlcnJvci4gVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seVxuICAgKiBmb3IgZGVidWcgcHVycG9zZSwgeW91IHNob3VsZCBhbHdheXMgdXNlIHtAbGluayBMYXp5UmVzdWx0I3RoZW59LlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAc2VlIFJlc3VsdCNjb250ZW50XG4gICAqL1xuICBnZXQgY29udGVudCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KCkuY29udGVudFxuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQjbWFwfS5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgd29yayB3aXRoIHN5bmNocm9ub3VzIHBsdWdpbnMuXG4gICAqIElmIHRoZSBwcm9jZXNzb3IgY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IuIFRoaXMgaXMgd2h5IHRoaXMgbWV0aG9kIGlzIG9ubHlcbiAgICogZm9yIGRlYnVnIHB1cnBvc2UsIHlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufS5cbiAgICpcbiAgICogQHR5cGUge1NvdXJjZU1hcEdlbmVyYXRvcn1cbiAgICogQHNlZSBSZXN1bHQjbWFwXG4gICAqL1xuICBnZXQgbWFwICgpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdpZnkoKS5tYXBcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBhbmQgcmV0dXJucyB7QGxpbmsgUmVzdWx0I3Jvb3R9LlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy4gSWYgdGhlIHByb2Nlc3NvclxuICAgKiBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHBsdWdpbnMgaXQgd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAgICpcbiAgICogVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seSBmb3IgZGVidWcgcHVycG9zZSxcbiAgICogeW91IHNob3VsZCBhbHdheXMgdXNlIHtAbGluayBMYXp5UmVzdWx0I3RoZW59LlxuICAgKlxuICAgKiBAdHlwZSB7Um9vdH1cbiAgICogQHNlZSBSZXN1bHQjcm9vdFxuICAgKi9cbiAgZ2V0IHJvb3QgKCkge1xuICAgIHJldHVybiB0aGlzLnN5bmMoKS5yb290XG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogYW5kIHJldHVybnMge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IHdvcmsgd2l0aCBzeW5jaHJvbm91cyBwbHVnaW5zLiBJZiB0aGUgcHJvY2Vzc29yXG4gICAqIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgcGx1Z2lucyBpdCB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgKlxuICAgKiBUaGlzIGlzIHdoeSB0aGlzIG1ldGhvZCBpcyBvbmx5IGZvciBkZWJ1ZyBwdXJwb3NlLFxuICAgKiB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAqXG4gICAqIEB0eXBlIHtNZXNzYWdlW119XG4gICAqIEBzZWUgUmVzdWx0I21lc3NhZ2VzXG4gICAqL1xuICBnZXQgbWVzc2FnZXMgKCkge1xuICAgIHJldHVybiB0aGlzLnN5bmMoKS5tZXNzYWdlc1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGFuZCBjYWxscyB7QGxpbmsgUmVzdWx0I3dhcm5pbmdzKCl9LlxuICAgKlxuICAgKiBAcmV0dXJuIHtXYXJuaW5nW119IFdhcm5pbmdzIGZyb20gcGx1Z2lucy5cbiAgICovXG4gIHdhcm5pbmdzICgpIHtcbiAgICByZXR1cm4gdGhpcy5zeW5jKCkud2FybmluZ3MoKVxuICB9XG5cbiAgLyoqXG4gICAqIEFsaWFzIGZvciB0aGUge0BsaW5rIExhenlSZXN1bHQjY3NzfSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogbGF6eSArICcnID09PSBsYXp5LmNzc1xuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE91dHB1dCBDU1MuXG4gICAqL1xuICB0b1N0cmluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3NzXG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBhbmQgY2FsbHMgYG9uRnVsZmlsbGVkYCB3aXRoIGEgUmVzdWx0IGluc3RhbmNlLiBJZiBhIHBsdWdpbiB0aHJvd3NcbiAgICogYW4gZXJyb3IsIHRoZSBgb25SZWplY3RlZGAgY2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZC5cbiAgICpcbiAgICogSXQgaW1wbGVtZW50cyBzdGFuZGFyZCBQcm9taXNlIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIHtvbkZ1bGZpbGxlZH0gb25GdWxmaWxsZWQgQ2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGFsbCBwbHVnaW5zIHdpbGwgZmluaXNoIHdvcmsuXG4gICAqIEBwYXJhbSB7b25SZWplY3RlZH0gIG9uUmVqZWN0ZWQgIENhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgb24gYW55IGVycm9yLlxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBQcm9taXNlIEFQSSB0byBtYWtlIHF1ZXVlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzKFthdXRvcHJlZml4ZXJdKS5wcm9jZXNzKGNzcywgeyBmcm9tOiBjc3NQYXRoIH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICogICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKVxuICAgKiB9KVxuICAgKi9cbiAgdGhlbiAob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCEoJ2Zyb20nIGluIHRoaXMub3B0cykpIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgJ1dpdGhvdXQgYGZyb21gIG9wdGlvbiBQb3N0Q1NTIGNvdWxkIGdlbmVyYXRlIHdyb25nIHNvdXJjZSBtYXAgJyArXG4gICAgICAgICAgJ2FuZCB3aWxsIG5vdCBmaW5kIEJyb3dzZXJzbGlzdCBjb25maWcuIFNldCBpdCB0byBDU1MgZmlsZSBwYXRoICcgK1xuICAgICAgICAgICdvciB0byBgdW5kZWZpbmVkYCB0byBwcmV2ZW50IHRoaXMgd2FybmluZy4nXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXN5bmMoKS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKVxuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogYW5kIGNhbGxzIG9uUmVqZWN0ZWQgZm9yIGVhY2ggZXJyb3IgdGhyb3duIGluIGFueSBwbHVnaW4uXG4gICAqXG4gICAqIEl0IGltcGxlbWVudHMgc3RhbmRhcmQgUHJvbWlzZSBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB7b25SZWplY3RlZH0gb25SZWplY3RlZCBDYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkIG9uIGFueSBlcnJvci5cbiAgICpcbiAgICogQHJldHVybiB7UHJvbWlzZX0gUHJvbWlzZSBBUEkgdG8gbWFrZSBxdWV1ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcyhbYXV0b3ByZWZpeGVyXSkucHJvY2Vzcyhjc3MpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICogICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKVxuICAgKiB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAqICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICogfSlcbiAgICovXG4gIGNhdGNoIChvblJlamVjdGVkKSB7XG4gICAgcmV0dXJuIHRoaXMuYXN5bmMoKS5jYXRjaChvblJlamVjdGVkKVxuICB9XG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGFuZCBjYWxscyBvbkZpbmFsbHkgb24gYW55IGVycm9yIG9yIHdoZW4gYWxsIHBsdWdpbnMgd2lsbCBmaW5pc2ggd29yay5cbiAgICpcbiAgICogSXQgaW1wbGVtZW50cyBzdGFuZGFyZCBQcm9taXNlIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIHtvbkZpbmFsbHl9IG9uRmluYWxseSBDYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkIG9uIGFueSBlcnJvciBvclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYWxsIHBsdWdpbnMgd2lsbCBmaW5pc2ggd29yay5cbiAgICpcbiAgICogQHJldHVybiB7UHJvbWlzZX0gUHJvbWlzZSBBUEkgdG8gbWFrZSBxdWV1ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcyhbYXV0b3ByZWZpeGVyXSkucHJvY2Vzcyhjc3MpLmZpbmFsbHkoKCkgPT4ge1xuICAgKiAgIGNvbnNvbGUubG9nKCdwcm9jZXNzaW5nIGVuZGVkJylcbiAgICogfSlcbiAgICovXG4gIGZpbmFsbHkgKG9uRmluYWxseSkge1xuICAgIHJldHVybiB0aGlzLmFzeW5jKCkudGhlbihvbkZpbmFsbHksIG9uRmluYWxseSlcbiAgfVxuXG4gIGhhbmRsZUVycm9yIChlcnJvciwgcGx1Z2luKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZXJyb3IgPSBlcnJvclxuICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcicgJiYgIWVycm9yLnBsdWdpbikge1xuICAgICAgICBlcnJvci5wbHVnaW4gPSBwbHVnaW4ucG9zdGNzc1BsdWdpblxuICAgICAgICBlcnJvci5zZXRNZXNzYWdlKClcbiAgICAgIH0gZWxzZSBpZiAocGx1Z2luLnBvc3Rjc3NWZXJzaW9uKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgbGV0IHBsdWdpbk5hbWUgPSBwbHVnaW4ucG9zdGNzc1BsdWdpblxuICAgICAgICAgIGxldCBwbHVnaW5WZXIgPSBwbHVnaW4ucG9zdGNzc1ZlcnNpb25cbiAgICAgICAgICBsZXQgcnVudGltZVZlciA9IHRoaXMucmVzdWx0LnByb2Nlc3Nvci52ZXJzaW9uXG4gICAgICAgICAgbGV0IGEgPSBwbHVnaW5WZXIuc3BsaXQoJy4nKVxuICAgICAgICAgIGxldCBiID0gcnVudGltZVZlci5zcGxpdCgnLicpXG5cbiAgICAgICAgICBpZiAoYVswXSAhPT0gYlswXSB8fCBwYXJzZUludChhWzFdKSA+IHBhcnNlSW50KGJbMV0pKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAnVW5rbm93biBlcnJvciBmcm9tIFBvc3RDU1MgcGx1Z2luLiBZb3VyIGN1cnJlbnQgUG9zdENTUyAnICtcbiAgICAgICAgICAgICAgJ3ZlcnNpb24gaXMgJyArIHJ1bnRpbWVWZXIgKyAnLCBidXQgJyArIHBsdWdpbk5hbWUgKyAnIHVzZXMgJyArXG4gICAgICAgICAgICAgIHBsdWdpblZlciArICcuIFBlcmhhcHMgdGhpcyBpcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvciBiZWxvdy4nXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSBjb25zb2xlLmVycm9yKGVycilcbiAgICB9XG4gIH1cblxuICBhc3luY1RpY2sgKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGlmICh0aGlzLnBsdWdpbiA+PSB0aGlzLnByb2Nlc3Nvci5wbHVnaW5zLmxlbmd0aCkge1xuICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlXG4gICAgICByZXR1cm4gcmVzb2x2ZSgpXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBwbHVnaW4gPSB0aGlzLnByb2Nlc3Nvci5wbHVnaW5zW3RoaXMucGx1Z2luXVxuICAgICAgbGV0IHByb21pc2UgPSB0aGlzLnJ1bihwbHVnaW4pXG4gICAgICB0aGlzLnBsdWdpbiArPSAxXG5cbiAgICAgIGlmIChpc1Byb21pc2UocHJvbWlzZSkpIHtcbiAgICAgICAgcHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmFzeW5jVGljayhyZXNvbHZlLCByZWplY3QpXG4gICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yLCBwbHVnaW4pXG4gICAgICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlXG4gICAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hc3luY1RpY2socmVzb2x2ZSwgcmVqZWN0KVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLnByb2Nlc3NlZCA9IHRydWVcbiAgICAgIHJlamVjdChlcnJvcilcbiAgICB9XG4gIH1cblxuICBhc3luYyAoKSB7XG4gICAgaWYgKHRoaXMucHJvY2Vzc2VkKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgICAgIHJlamVjdCh0aGlzLmVycm9yKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUodGhpcy5zdHJpbmdpZnkoKSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMucHJvY2Vzc2luZykge1xuICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc2luZ1xuICAgIH1cblxuICAgIHRoaXMucHJvY2Vzc2luZyA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLmVycm9yKSByZXR1cm4gcmVqZWN0KHRoaXMuZXJyb3IpXG4gICAgICB0aGlzLnBsdWdpbiA9IDBcbiAgICAgIHRoaXMuYXN5bmNUaWNrKHJlc29sdmUsIHJlamVjdClcbiAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMucHJvY2Vzc2VkID0gdHJ1ZVxuICAgICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KClcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc2luZ1xuICB9XG5cbiAgc3luYyAoKSB7XG4gICAgaWYgKHRoaXMucHJvY2Vzc2VkKSByZXR1cm4gdGhpcy5yZXN1bHRcbiAgICB0aGlzLnByb2Nlc3NlZCA9IHRydWVcblxuICAgIGlmICh0aGlzLnByb2Nlc3NpbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1VzZSBwcm9jZXNzKGNzcykudGhlbihjYikgdG8gd29yayB3aXRoIGFzeW5jIHBsdWdpbnMnKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmVycm9yKSB0aHJvdyB0aGlzLmVycm9yXG5cbiAgICBmb3IgKGxldCBwbHVnaW4gb2YgdGhpcy5yZXN1bHQucHJvY2Vzc29yLnBsdWdpbnMpIHtcbiAgICAgIGxldCBwcm9taXNlID0gdGhpcy5ydW4ocGx1Z2luKVxuICAgICAgaWYgKGlzUHJvbWlzZShwcm9taXNlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1VzZSBwcm9jZXNzKGNzcykudGhlbihjYikgdG8gd29yayB3aXRoIGFzeW5jIHBsdWdpbnMnKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlc3VsdFxuICB9XG5cbiAgcnVuIChwbHVnaW4pIHtcbiAgICB0aGlzLnJlc3VsdC5sYXN0UGx1Z2luID0gcGx1Z2luXG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHBsdWdpbih0aGlzLnJlc3VsdC5yb290LCB0aGlzLnJlc3VsdClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvciwgcGx1Z2luKVxuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG4gIH1cblxuICBzdHJpbmdpZnkgKCkge1xuICAgIGlmICh0aGlzLnN0cmluZ2lmaWVkKSByZXR1cm4gdGhpcy5yZXN1bHRcbiAgICB0aGlzLnN0cmluZ2lmaWVkID0gdHJ1ZVxuXG4gICAgdGhpcy5zeW5jKClcblxuICAgIGxldCBvcHRzID0gdGhpcy5yZXN1bHQub3B0c1xuICAgIGxldCBzdHIgPSBzdHJpbmdpZnlcbiAgICBpZiAob3B0cy5zeW50YXgpIHN0ciA9IG9wdHMuc3ludGF4LnN0cmluZ2lmeVxuICAgIGlmIChvcHRzLnN0cmluZ2lmaWVyKSBzdHIgPSBvcHRzLnN0cmluZ2lmaWVyXG4gICAgaWYgKHN0ci5zdHJpbmdpZnkpIHN0ciA9IHN0ci5zdHJpbmdpZnlcblxuICAgIGxldCBtYXAgPSBuZXcgTWFwR2VuZXJhdG9yKHN0ciwgdGhpcy5yZXN1bHQucm9vdCwgdGhpcy5yZXN1bHQub3B0cylcbiAgICBsZXQgZGF0YSA9IG1hcC5nZW5lcmF0ZSgpXG4gICAgdGhpcy5yZXN1bHQuY3NzID0gZGF0YVswXVxuICAgIHRoaXMucmVzdWx0Lm1hcCA9IGRhdGFbMV1cblxuICAgIHJldHVybiB0aGlzLnJlc3VsdFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExhenlSZXN1bHRcblxuLyoqXG4gKiBAY2FsbGJhY2sgb25GdWxmaWxsZWRcbiAqIEBwYXJhbSB7UmVzdWx0fSByZXN1bHRcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBvblJlamVjdGVkXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvclxuICovXG4iXSwiZmlsZSI6ImxhenktcmVzdWx0LmpzIn0=
diff --git a/assets/node_modules/postcss/lib/list.js b/assets/node_modules/postcss/lib/list.js
deleted file mode 100644
index d2feb76..0000000
--- a/assets/node_modules/postcss/lib/list.js
+++ /dev/null
@@ -1,93 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-/**
- * Contains helpers for safely splitting lists of CSS values,
- * preserving parentheses and quotes.
- *
- * @example
- * const list = postcss.list
- *
- * @namespace list
- */
-var list = {
- split: function split(string, separators, last) {
- var array = [];
- var current = '';
- var split = false;
- var func = 0;
- var quote = false;
- var escape = false;
-
- for (var i = 0; i < string.length; i++) {
- var letter = string[i];
-
- if (quote) {
- if (escape) {
- escape = false;
- } else if (letter === '\\') {
- escape = true;
- } else if (letter === quote) {
- quote = false;
- }
- } else if (letter === '"' || letter === '\'') {
- quote = letter;
- } else if (letter === '(') {
- func += 1;
- } else if (letter === ')') {
- if (func > 0) func -= 1;
- } else if (func === 0) {
- if (separators.indexOf(letter) !== -1) split = true;
- }
-
- if (split) {
- if (current !== '') array.push(current.trim());
- current = '';
- split = false;
- } else {
- current += letter;
- }
- }
-
- if (last || current !== '') array.push(current.trim());
- return array;
- },
-
- /**
- * Safely splits space-separated values (such as those for `background`,
- * `border-radius`, and other shorthand properties).
- *
- * @param {string} string Space-separated values.
- *
- * @return {string[]} Split values.
- *
- * @example
- * postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']
- */
- space: function space(string) {
- var spaces = [' ', '\n', '\t'];
- return list.split(string, spaces);
- },
-
- /**
- * Safely splits comma-separated values (such as those for `transition-*`
- * and `background` properties).
- *
- * @param {string} string Comma-separated values.
- *
- * @return {string[]} Split values.
- *
- * @example
- * postcss.list.comma('black, linear-gradient(white, black)')
- * //=> ['black', 'linear-gradient(white, black)']
- */
- comma: function comma(string) {
- return list.split(string, [','], true);
- }
-};
-var _default = list;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpc3QuZXM2Il0sIm5hbWVzIjpbImxpc3QiLCJzcGxpdCIsInN0cmluZyIsInNlcGFyYXRvcnMiLCJsYXN0IiwiYXJyYXkiLCJjdXJyZW50IiwiZnVuYyIsInF1b3RlIiwiZXNjYXBlIiwiaSIsImxlbmd0aCIsImxldHRlciIsImluZGV4T2YiLCJwdXNoIiwidHJpbSIsInNwYWNlIiwic3BhY2VzIiwiY29tbWEiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7OztBQVNBLElBQUlBLElBQUksR0FBRztBQUVUQyxFQUFBQSxLQUZTLGlCQUVGQyxNQUZFLEVBRU1DLFVBRk4sRUFFa0JDLElBRmxCLEVBRXdCO0FBQy9CLFFBQUlDLEtBQUssR0FBRyxFQUFaO0FBQ0EsUUFBSUMsT0FBTyxHQUFHLEVBQWQ7QUFDQSxRQUFJTCxLQUFLLEdBQUcsS0FBWjtBQUVBLFFBQUlNLElBQUksR0FBRyxDQUFYO0FBQ0EsUUFBSUMsS0FBSyxHQUFHLEtBQVo7QUFDQSxRQUFJQyxNQUFNLEdBQUcsS0FBYjs7QUFFQSxTQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdSLE1BQU0sQ0FBQ1MsTUFBM0IsRUFBbUNELENBQUMsRUFBcEMsRUFBd0M7QUFDdEMsVUFBSUUsTUFBTSxHQUFHVixNQUFNLENBQUNRLENBQUQsQ0FBbkI7O0FBRUEsVUFBSUYsS0FBSixFQUFXO0FBQ1QsWUFBSUMsTUFBSixFQUFZO0FBQ1ZBLFVBQUFBLE1BQU0sR0FBRyxLQUFUO0FBQ0QsU0FGRCxNQUVPLElBQUlHLE1BQU0sS0FBSyxJQUFmLEVBQXFCO0FBQzFCSCxVQUFBQSxNQUFNLEdBQUcsSUFBVDtBQUNELFNBRk0sTUFFQSxJQUFJRyxNQUFNLEtBQUtKLEtBQWYsRUFBc0I7QUFDM0JBLFVBQUFBLEtBQUssR0FBRyxLQUFSO0FBQ0Q7QUFDRixPQVJELE1BUU8sSUFBSUksTUFBTSxLQUFLLEdBQVgsSUFBa0JBLE1BQU0sS0FBSyxJQUFqQyxFQUF1QztBQUM1Q0osUUFBQUEsS0FBSyxHQUFHSSxNQUFSO0FBQ0QsT0FGTSxNQUVBLElBQUlBLE1BQU0sS0FBSyxHQUFmLEVBQW9CO0FBQ3pCTCxRQUFBQSxJQUFJLElBQUksQ0FBUjtBQUNELE9BRk0sTUFFQSxJQUFJSyxNQUFNLEtBQUssR0FBZixFQUFvQjtBQUN6QixZQUFJTCxJQUFJLEdBQUcsQ0FBWCxFQUFjQSxJQUFJLElBQUksQ0FBUjtBQUNmLE9BRk0sTUFFQSxJQUFJQSxJQUFJLEtBQUssQ0FBYixFQUFnQjtBQUNyQixZQUFJSixVQUFVLENBQUNVLE9BQVgsQ0FBbUJELE1BQW5CLE1BQStCLENBQUMsQ0FBcEMsRUFBdUNYLEtBQUssR0FBRyxJQUFSO0FBQ3hDOztBQUVELFVBQUlBLEtBQUosRUFBVztBQUNULFlBQUlLLE9BQU8sS0FBSyxFQUFoQixFQUFvQkQsS0FBSyxDQUFDUyxJQUFOLENBQVdSLE9BQU8sQ0FBQ1MsSUFBUixFQUFYO0FBQ3BCVCxRQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNBTCxRQUFBQSxLQUFLLEdBQUcsS0FBUjtBQUNELE9BSkQsTUFJTztBQUNMSyxRQUFBQSxPQUFPLElBQUlNLE1BQVg7QUFDRDtBQUNGOztBQUVELFFBQUlSLElBQUksSUFBSUUsT0FBTyxLQUFLLEVBQXhCLEVBQTRCRCxLQUFLLENBQUNTLElBQU4sQ0FBV1IsT0FBTyxDQUFDUyxJQUFSLEVBQVg7QUFDNUIsV0FBT1YsS0FBUDtBQUNELEdBM0NROztBQTZDVDs7Ozs7Ozs7Ozs7QUFXQVcsRUFBQUEsS0F4RFMsaUJBd0RGZCxNQXhERSxFQXdETTtBQUNiLFFBQUllLE1BQU0sR0FBRyxDQUFDLEdBQUQsRUFBTSxJQUFOLEVBQVksSUFBWixDQUFiO0FBQ0EsV0FBT2pCLElBQUksQ0FBQ0MsS0FBTCxDQUFXQyxNQUFYLEVBQW1CZSxNQUFuQixDQUFQO0FBQ0QsR0EzRFE7O0FBNkRUOzs7Ozs7Ozs7Ozs7QUFZQUMsRUFBQUEsS0F6RVMsaUJBeUVGaEIsTUF6RUUsRUF5RU07QUFDYixXQUFPRixJQUFJLENBQUNDLEtBQUwsQ0FBV0MsTUFBWCxFQUFtQixDQUFDLEdBQUQsQ0FBbkIsRUFBMEIsSUFBMUIsQ0FBUDtBQUNEO0FBM0VRLENBQVg7ZUErRWVGLEkiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRhaW5zIGhlbHBlcnMgZm9yIHNhZmVseSBzcGxpdHRpbmcgbGlzdHMgb2YgQ1NTIHZhbHVlcyxcbiAqIHByZXNlcnZpbmcgcGFyZW50aGVzZXMgYW5kIHF1b3Rlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbGlzdCA9IHBvc3Rjc3MubGlzdFxuICpcbiAqIEBuYW1lc3BhY2UgbGlzdFxuICovXG5sZXQgbGlzdCA9IHtcblxuICBzcGxpdCAoc3RyaW5nLCBzZXBhcmF0b3JzLCBsYXN0KSB7XG4gICAgbGV0IGFycmF5ID0gW11cbiAgICBsZXQgY3VycmVudCA9ICcnXG4gICAgbGV0IHNwbGl0ID0gZmFsc2VcblxuICAgIGxldCBmdW5jID0gMFxuICAgIGxldCBxdW90ZSA9IGZhbHNlXG4gICAgbGV0IGVzY2FwZSA9IGZhbHNlXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGxldHRlciA9IHN0cmluZ1tpXVxuXG4gICAgICBpZiAocXVvdGUpIHtcbiAgICAgICAgaWYgKGVzY2FwZSkge1xuICAgICAgICAgIGVzY2FwZSA9IGZhbHNlXG4gICAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSAnXFxcXCcpIHtcbiAgICAgICAgICBlc2NhcGUgPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSBxdW90ZSkge1xuICAgICAgICAgIHF1b3RlID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChsZXR0ZXIgPT09ICdcIicgfHwgbGV0dGVyID09PSAnXFwnJykge1xuICAgICAgICBxdW90ZSA9IGxldHRlclxuICAgICAgfSBlbHNlIGlmIChsZXR0ZXIgPT09ICcoJykge1xuICAgICAgICBmdW5jICs9IDFcbiAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSAnKScpIHtcbiAgICAgICAgaWYgKGZ1bmMgPiAwKSBmdW5jIC09IDFcbiAgICAgIH0gZWxzZSBpZiAoZnVuYyA9PT0gMCkge1xuICAgICAgICBpZiAoc2VwYXJhdG9ycy5pbmRleE9mKGxldHRlcikgIT09IC0xKSBzcGxpdCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKHNwbGl0KSB7XG4gICAgICAgIGlmIChjdXJyZW50ICE9PSAnJykgYXJyYXkucHVzaChjdXJyZW50LnRyaW0oKSlcbiAgICAgICAgY3VycmVudCA9ICcnXG4gICAgICAgIHNwbGl0ID0gZmFsc2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnQgKz0gbGV0dGVyXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxhc3QgfHwgY3VycmVudCAhPT0gJycpIGFycmF5LnB1c2goY3VycmVudC50cmltKCkpXG4gICAgcmV0dXJuIGFycmF5XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhZmVseSBzcGxpdHMgc3BhY2Utc2VwYXJhdGVkIHZhbHVlcyAoc3VjaCBhcyB0aG9zZSBmb3IgYGJhY2tncm91bmRgLFxuICAgKiBgYm9yZGVyLXJhZGl1c2AsIGFuZCBvdGhlciBzaG9ydGhhbmQgcHJvcGVydGllcykuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgU3BhY2Utc2VwYXJhdGVkIHZhbHVlcy5cbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nW119IFNwbGl0IHZhbHVlcy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy5saXN0LnNwYWNlKCcxcHggY2FsYygxMCUgKyAxcHgpJykgLy89PiBbJzFweCcsICdjYWxjKDEwJSArIDFweCknXVxuICAgKi9cbiAgc3BhY2UgKHN0cmluZykge1xuICAgIGxldCBzcGFjZXMgPSBbJyAnLCAnXFxuJywgJ1xcdCddXG4gICAgcmV0dXJuIGxpc3Quc3BsaXQoc3RyaW5nLCBzcGFjZXMpXG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhZmVseSBzcGxpdHMgY29tbWEtc2VwYXJhdGVkIHZhbHVlcyAoc3VjaCBhcyB0aG9zZSBmb3IgYHRyYW5zaXRpb24tKmBcbiAgICogYW5kIGBiYWNrZ3JvdW5kYCBwcm9wZXJ0aWVzKS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBDb21tYS1zZXBhcmF0ZWQgdmFsdWVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gU3BsaXQgdmFsdWVzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzLmxpc3QuY29tbWEoJ2JsYWNrLCBsaW5lYXItZ3JhZGllbnQod2hpdGUsIGJsYWNrKScpXG4gICAqIC8vPT4gWydibGFjaycsICdsaW5lYXItZ3JhZGllbnQod2hpdGUsIGJsYWNrKSddXG4gICAqL1xuICBjb21tYSAoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxpc3Quc3BsaXQoc3RyaW5nLCBbJywnXSwgdHJ1ZSlcbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGxpc3RcbiJdLCJmaWxlIjoibGlzdC5qcyJ9
diff --git a/assets/node_modules/postcss/lib/map-generator.js b/assets/node_modules/postcss/lib/map-generator.js
deleted file mode 100644
index 22dc1d9..0000000
--- a/assets/node_modules/postcss/lib/map-generator.js
+++ /dev/null
@@ -1,354 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _sourceMap = _interopRequireDefault(require("source-map"));
-
-var _path = _interopRequireDefault(require("path"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var MapGenerator =
-/*#__PURE__*/
-function () {
- function MapGenerator(stringify, root, opts) {
- this.stringify = stringify;
- this.mapOpts = opts.map || {};
- this.root = root;
- this.opts = opts;
- }
-
- var _proto = MapGenerator.prototype;
-
- _proto.isMap = function isMap() {
- if (typeof this.opts.map !== 'undefined') {
- return !!this.opts.map;
- }
-
- return this.previous().length > 0;
- };
-
- _proto.previous = function previous() {
- var _this = this;
-
- if (!this.previousMaps) {
- this.previousMaps = [];
- this.root.walk(function (node) {
- if (node.source && node.source.input.map) {
- var map = node.source.input.map;
-
- if (_this.previousMaps.indexOf(map) === -1) {
- _this.previousMaps.push(map);
- }
- }
- });
- }
-
- return this.previousMaps;
- };
-
- _proto.isInline = function isInline() {
- if (typeof this.mapOpts.inline !== 'undefined') {
- return this.mapOpts.inline;
- }
-
- var annotation = this.mapOpts.annotation;
-
- if (typeof annotation !== 'undefined' && annotation !== true) {
- return false;
- }
-
- if (this.previous().length) {
- return this.previous().some(function (i) {
- return i.inline;
- });
- }
-
- return true;
- };
-
- _proto.isSourcesContent = function isSourcesContent() {
- if (typeof this.mapOpts.sourcesContent !== 'undefined') {
- return this.mapOpts.sourcesContent;
- }
-
- if (this.previous().length) {
- return this.previous().some(function (i) {
- return i.withContent();
- });
- }
-
- return true;
- };
-
- _proto.clearAnnotation = function clearAnnotation() {
- if (this.mapOpts.annotation === false) return;
- var node;
-
- for (var i = this.root.nodes.length - 1; i >= 0; i--) {
- node = this.root.nodes[i];
- if (node.type !== 'comment') continue;
-
- if (node.text.indexOf('# sourceMappingURL=') === 0) {
- this.root.removeChild(i);
- }
- }
- };
-
- _proto.setSourcesContent = function setSourcesContent() {
- var _this2 = this;
-
- var already = {};
- this.root.walk(function (node) {
- if (node.source) {
- var from = node.source.input.from;
-
- if (from && !already[from]) {
- already[from] = true;
-
- var relative = _this2.relative(from);
-
- _this2.map.setSourceContent(relative, node.source.input.css);
- }
- }
- });
- };
-
- _proto.applyPrevMaps = function applyPrevMaps() {
- for (var _iterator = this.previous(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var prev = _ref;
- var from = this.relative(prev.file);
-
- var root = prev.root || _path.default.dirname(prev.file);
-
- var map = void 0;
-
- if (this.mapOpts.sourcesContent === false) {
- map = new _sourceMap.default.SourceMapConsumer(prev.text);
-
- if (map.sourcesContent) {
- map.sourcesContent = map.sourcesContent.map(function () {
- return null;
- });
- }
- } else {
- map = prev.consumer();
- }
-
- this.map.applySourceMap(map, from, this.relative(root));
- }
- };
-
- _proto.isAnnotation = function isAnnotation() {
- if (this.isInline()) {
- return true;
- }
-
- if (typeof this.mapOpts.annotation !== 'undefined') {
- return this.mapOpts.annotation;
- }
-
- if (this.previous().length) {
- return this.previous().some(function (i) {
- return i.annotation;
- });
- }
-
- return true;
- };
-
- _proto.toBase64 = function toBase64(str) {
- if (Buffer) {
- return Buffer.from(str).toString('base64');
- }
-
- return window.btoa(unescape(encodeURIComponent(str)));
- };
-
- _proto.addAnnotation = function addAnnotation() {
- var content;
-
- if (this.isInline()) {
- content = 'data:application/json;base64,' + this.toBase64(this.map.toString());
- } else if (typeof this.mapOpts.annotation === 'string') {
- content = this.mapOpts.annotation;
- } else {
- content = this.outputFile() + '.map';
- }
-
- var eol = '\n';
- if (this.css.indexOf('\r\n') !== -1) eol = '\r\n';
- this.css += eol + '/*# sourceMappingURL=' + content + ' */';
- };
-
- _proto.outputFile = function outputFile() {
- if (this.opts.to) {
- return this.relative(this.opts.to);
- }
-
- if (this.opts.from) {
- return this.relative(this.opts.from);
- }
-
- return 'to.css';
- };
-
- _proto.generateMap = function generateMap() {
- this.generateString();
- if (this.isSourcesContent()) this.setSourcesContent();
- if (this.previous().length > 0) this.applyPrevMaps();
- if (this.isAnnotation()) this.addAnnotation();
-
- if (this.isInline()) {
- return [this.css];
- }
-
- return [this.css, this.map];
- };
-
- _proto.relative = function relative(file) {
- if (file.indexOf('<') === 0) return file;
- if (/^\w+:\/\//.test(file)) return file;
- var from = this.opts.to ? _path.default.dirname(this.opts.to) : '.';
-
- if (typeof this.mapOpts.annotation === 'string') {
- from = _path.default.dirname(_path.default.resolve(from, this.mapOpts.annotation));
- }
-
- file = _path.default.relative(from, file);
-
- if (_path.default.sep === '\\') {
- return file.replace(/\\/g, '/');
- }
-
- return file;
- };
-
- _proto.sourcePath = function sourcePath(node) {
- if (this.mapOpts.from) {
- return this.mapOpts.from;
- }
-
- return this.relative(node.source.input.from);
- };
-
- _proto.generateString = function generateString() {
- var _this3 = this;
-
- this.css = '';
- this.map = new _sourceMap.default.SourceMapGenerator({
- file: this.outputFile()
- });
- var line = 1;
- var column = 1;
- var lines, last;
- this.stringify(this.root, function (str, node, type) {
- _this3.css += str;
-
- if (node && type !== 'end') {
- if (node.source && node.source.start) {
- _this3.map.addMapping({
- source: _this3.sourcePath(node),
- generated: {
- line: line,
- column: column - 1
- },
- original: {
- line: node.source.start.line,
- column: node.source.start.column - 1
- }
- });
- } else {
- _this3.map.addMapping({
- source: '<no source>',
- original: {
- line: 1,
- column: 0
- },
- generated: {
- line: line,
- column: column - 1
- }
- });
- }
- }
-
- lines = str.match(/\n/g);
-
- if (lines) {
- line += lines.length;
- last = str.lastIndexOf('\n');
- column = str.length - last;
- } else {
- column += str.length;
- }
-
- if (node && type !== 'start') {
- var p = node.parent || {
- raws: {}
- };
-
- if (node.type !== 'decl' || node !== p.last || p.raws.semicolon) {
- if (node.source && node.source.end) {
- _this3.map.addMapping({
- source: _this3.sourcePath(node),
- generated: {
- line: line,
- column: column - 2
- },
- original: {
- line: node.source.end.line,
- column: node.source.end.column - 1
- }
- });
- } else {
- _this3.map.addMapping({
- source: '<no source>',
- original: {
- line: 1,
- column: 0
- },
- generated: {
- line: line,
- column: column - 1
- }
- });
- }
- }
- }
- });
- };
-
- _proto.generate = function generate() {
- this.clearAnnotation();
-
- if (this.isMap()) {
- return this.generateMap();
- }
-
- var result = '';
- this.stringify(this.root, function (i) {
- result += i;
- });
- return [result];
- };
-
- return MapGenerator;
-}();
-
-var _default = MapGenerator;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1hcC1nZW5lcmF0b3IuZXM2Il0sIm5hbWVzIjpbIk1hcEdlbmVyYXRvciIsInN0cmluZ2lmeSIsInJvb3QiLCJvcHRzIiwibWFwT3B0cyIsIm1hcCIsImlzTWFwIiwicHJldmlvdXMiLCJsZW5ndGgiLCJwcmV2aW91c01hcHMiLCJ3YWxrIiwibm9kZSIsInNvdXJjZSIsImlucHV0IiwiaW5kZXhPZiIsInB1c2giLCJpc0lubGluZSIsImlubGluZSIsImFubm90YXRpb24iLCJzb21lIiwiaSIsImlzU291cmNlc0NvbnRlbnQiLCJzb3VyY2VzQ29udGVudCIsIndpdGhDb250ZW50IiwiY2xlYXJBbm5vdGF0aW9uIiwibm9kZXMiLCJ0eXBlIiwidGV4dCIsInJlbW92ZUNoaWxkIiwic2V0U291cmNlc0NvbnRlbnQiLCJhbHJlYWR5IiwiZnJvbSIsInJlbGF0aXZlIiwic2V0U291cmNlQ29udGVudCIsImNzcyIsImFwcGx5UHJldk1hcHMiLCJwcmV2IiwiZmlsZSIsInBhdGgiLCJkaXJuYW1lIiwibW96aWxsYSIsIlNvdXJjZU1hcENvbnN1bWVyIiwiY29uc3VtZXIiLCJhcHBseVNvdXJjZU1hcCIsImlzQW5ub3RhdGlvbiIsInRvQmFzZTY0Iiwic3RyIiwiQnVmZmVyIiwidG9TdHJpbmciLCJ3aW5kb3ciLCJidG9hIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJhZGRBbm5vdGF0aW9uIiwiY29udGVudCIsIm91dHB1dEZpbGUiLCJlb2wiLCJ0byIsImdlbmVyYXRlTWFwIiwiZ2VuZXJhdGVTdHJpbmciLCJ0ZXN0IiwicmVzb2x2ZSIsInNlcCIsInJlcGxhY2UiLCJzb3VyY2VQYXRoIiwiU291cmNlTWFwR2VuZXJhdG9yIiwibGluZSIsImNvbHVtbiIsImxpbmVzIiwibGFzdCIsInN0YXJ0IiwiYWRkTWFwcGluZyIsImdlbmVyYXRlZCIsIm9yaWdpbmFsIiwibWF0Y2giLCJsYXN0SW5kZXhPZiIsInAiLCJwYXJlbnQiLCJyYXdzIiwic2VtaWNvbG9uIiwiZW5kIiwiZ2VuZXJhdGUiLCJyZXN1bHQiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBQ0E7Ozs7SUFFTUEsWTs7O0FBQ0osd0JBQWFDLFNBQWIsRUFBd0JDLElBQXhCLEVBQThCQyxJQUE5QixFQUFvQztBQUNsQyxTQUFLRixTQUFMLEdBQWlCQSxTQUFqQjtBQUNBLFNBQUtHLE9BQUwsR0FBZUQsSUFBSSxDQUFDRSxHQUFMLElBQVksRUFBM0I7QUFDQSxTQUFLSCxJQUFMLEdBQVlBLElBQVo7QUFDQSxTQUFLQyxJQUFMLEdBQVlBLElBQVo7QUFDRDs7OztTQUVERyxLLEdBQUEsaUJBQVM7QUFDUCxRQUFJLE9BQU8sS0FBS0gsSUFBTCxDQUFVRSxHQUFqQixLQUF5QixXQUE3QixFQUEwQztBQUN4QyxhQUFPLENBQUMsQ0FBQyxLQUFLRixJQUFMLENBQVVFLEdBQW5CO0FBQ0Q7O0FBQ0QsV0FBTyxLQUFLRSxRQUFMLEdBQWdCQyxNQUFoQixHQUF5QixDQUFoQztBQUNELEc7O1NBRURELFEsR0FBQSxvQkFBWTtBQUFBOztBQUNWLFFBQUksQ0FBQyxLQUFLRSxZQUFWLEVBQXdCO0FBQ3RCLFdBQUtBLFlBQUwsR0FBb0IsRUFBcEI7QUFDQSxXQUFLUCxJQUFMLENBQVVRLElBQVYsQ0FBZSxVQUFBQyxJQUFJLEVBQUk7QUFDckIsWUFBSUEsSUFBSSxDQUFDQyxNQUFMLElBQWVELElBQUksQ0FBQ0MsTUFBTCxDQUFZQyxLQUFaLENBQWtCUixHQUFyQyxFQUEwQztBQUN4QyxjQUFJQSxHQUFHLEdBQUdNLElBQUksQ0FBQ0MsTUFBTCxDQUFZQyxLQUFaLENBQWtCUixHQUE1Qjs7QUFDQSxjQUFJLEtBQUksQ0FBQ0ksWUFBTCxDQUFrQkssT0FBbEIsQ0FBMEJULEdBQTFCLE1BQW1DLENBQUMsQ0FBeEMsRUFBMkM7QUFDekMsWUFBQSxLQUFJLENBQUNJLFlBQUwsQ0FBa0JNLElBQWxCLENBQXVCVixHQUF2QjtBQUNEO0FBQ0Y7QUFDRixPQVBEO0FBUUQ7O0FBRUQsV0FBTyxLQUFLSSxZQUFaO0FBQ0QsRzs7U0FFRE8sUSxHQUFBLG9CQUFZO0FBQ1YsUUFBSSxPQUFPLEtBQUtaLE9BQUwsQ0FBYWEsTUFBcEIsS0FBK0IsV0FBbkMsRUFBZ0Q7QUFDOUMsYUFBTyxLQUFLYixPQUFMLENBQWFhLE1BQXBCO0FBQ0Q7O0FBRUQsUUFBSUMsVUFBVSxHQUFHLEtBQUtkLE9BQUwsQ0FBYWMsVUFBOUI7O0FBQ0EsUUFBSSxPQUFPQSxVQUFQLEtBQXNCLFdBQXRCLElBQXFDQSxVQUFVLEtBQUssSUFBeEQsRUFBOEQ7QUFDNUQsYUFBTyxLQUFQO0FBQ0Q7O0FBRUQsUUFBSSxLQUFLWCxRQUFMLEdBQWdCQyxNQUFwQixFQUE0QjtBQUMxQixhQUFPLEtBQUtELFFBQUwsR0FBZ0JZLElBQWhCLENBQXFCLFVBQUFDLENBQUM7QUFBQSxlQUFJQSxDQUFDLENBQUNILE1BQU47QUFBQSxPQUF0QixDQUFQO0FBQ0Q7O0FBQ0QsV0FBTyxJQUFQO0FBQ0QsRzs7U0FFREksZ0IsR0FBQSw0QkFBb0I7QUFDbEIsUUFBSSxPQUFPLEtBQUtqQixPQUFMLENBQWFrQixjQUFwQixLQUF1QyxXQUEzQyxFQUF3RDtBQUN0RCxhQUFPLEtBQUtsQixPQUFMLENBQWFrQixjQUFwQjtBQUNEOztBQUNELFFBQUksS0FBS2YsUUFBTCxHQUFnQkMsTUFBcEIsRUFBNEI7QUFDMUIsYUFBTyxLQUFLRCxRQUFMLEdBQWdCWSxJQUFoQixDQUFxQixVQUFBQyxDQUFDO0FBQUEsZUFBSUEsQ0FBQyxDQUFDRyxXQUFGLEVBQUo7QUFBQSxPQUF0QixDQUFQO0FBQ0Q7O0FBQ0QsV0FBTyxJQUFQO0FBQ0QsRzs7U0FFREMsZSxHQUFBLDJCQUFtQjtBQUNqQixRQUFJLEtBQUtwQixPQUFMLENBQWFjLFVBQWIsS0FBNEIsS0FBaEMsRUFBdUM7QUFFdkMsUUFBSVAsSUFBSjs7QUFDQSxTQUFLLElBQUlTLENBQUMsR0FBRyxLQUFLbEIsSUFBTCxDQUFVdUIsS0FBVixDQUFnQmpCLE1BQWhCLEdBQXlCLENBQXRDLEVBQXlDWSxDQUFDLElBQUksQ0FBOUMsRUFBaURBLENBQUMsRUFBbEQsRUFBc0Q7QUFDcERULE1BQUFBLElBQUksR0FBRyxLQUFLVCxJQUFMLENBQVV1QixLQUFWLENBQWdCTCxDQUFoQixDQUFQO0FBQ0EsVUFBSVQsSUFBSSxDQUFDZSxJQUFMLEtBQWMsU0FBbEIsRUFBNkI7O0FBQzdCLFVBQUlmLElBQUksQ0FBQ2dCLElBQUwsQ0FBVWIsT0FBVixDQUFrQixxQkFBbEIsTUFBNkMsQ0FBakQsRUFBb0Q7QUFDbEQsYUFBS1osSUFBTCxDQUFVMEIsV0FBVixDQUFzQlIsQ0FBdEI7QUFDRDtBQUNGO0FBQ0YsRzs7U0FFRFMsaUIsR0FBQSw2QkFBcUI7QUFBQTs7QUFDbkIsUUFBSUMsT0FBTyxHQUFHLEVBQWQ7QUFDQSxTQUFLNUIsSUFBTCxDQUFVUSxJQUFWLENBQWUsVUFBQUMsSUFBSSxFQUFJO0FBQ3JCLFVBQUlBLElBQUksQ0FBQ0MsTUFBVCxFQUFpQjtBQUNmLFlBQUltQixJQUFJLEdBQUdwQixJQUFJLENBQUNDLE1BQUwsQ0FBWUMsS0FBWixDQUFrQmtCLElBQTdCOztBQUNBLFlBQUlBLElBQUksSUFBSSxDQUFDRCxPQUFPLENBQUNDLElBQUQsQ0FBcEIsRUFBNEI7QUFDMUJELFVBQUFBLE9BQU8sQ0FBQ0MsSUFBRCxDQUFQLEdBQWdCLElBQWhCOztBQUNBLGNBQUlDLFFBQVEsR0FBRyxNQUFJLENBQUNBLFFBQUwsQ0FBY0QsSUFBZCxDQUFmOztBQUNBLFVBQUEsTUFBSSxDQUFDMUIsR0FBTCxDQUFTNEIsZ0JBQVQsQ0FBMEJELFFBQTFCLEVBQW9DckIsSUFBSSxDQUFDQyxNQUFMLENBQVlDLEtBQVosQ0FBa0JxQixHQUF0RDtBQUNEO0FBQ0Y7QUFDRixLQVREO0FBVUQsRzs7U0FFREMsYSxHQUFBLHlCQUFpQjtBQUNmLHlCQUFpQixLQUFLNUIsUUFBTCxFQUFqQixrSEFBa0M7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLFVBQXpCNkIsSUFBeUI7QUFDaEMsVUFBSUwsSUFBSSxHQUFHLEtBQUtDLFFBQUwsQ0FBY0ksSUFBSSxDQUFDQyxJQUFuQixDQUFYOztBQUNBLFVBQUluQyxJQUFJLEdBQUdrQyxJQUFJLENBQUNsQyxJQUFMLElBQWFvQyxjQUFLQyxPQUFMLENBQWFILElBQUksQ0FBQ0MsSUFBbEIsQ0FBeEI7O0FBQ0EsVUFBSWhDLEdBQUcsU0FBUDs7QUFFQSxVQUFJLEtBQUtELE9BQUwsQ0FBYWtCLGNBQWIsS0FBZ0MsS0FBcEMsRUFBMkM7QUFDekNqQixRQUFBQSxHQUFHLEdBQUcsSUFBSW1DLG1CQUFRQyxpQkFBWixDQUE4QkwsSUFBSSxDQUFDVCxJQUFuQyxDQUFOOztBQUNBLFlBQUl0QixHQUFHLENBQUNpQixjQUFSLEVBQXdCO0FBQ3RCakIsVUFBQUEsR0FBRyxDQUFDaUIsY0FBSixHQUFxQmpCLEdBQUcsQ0FBQ2lCLGNBQUosQ0FBbUJqQixHQUFuQixDQUF1QjtBQUFBLG1CQUFNLElBQU47QUFBQSxXQUF2QixDQUFyQjtBQUNEO0FBQ0YsT0FMRCxNQUtPO0FBQ0xBLFFBQUFBLEdBQUcsR0FBRytCLElBQUksQ0FBQ00sUUFBTCxFQUFOO0FBQ0Q7O0FBRUQsV0FBS3JDLEdBQUwsQ0FBU3NDLGNBQVQsQ0FBd0J0QyxHQUF4QixFQUE2QjBCLElBQTdCLEVBQW1DLEtBQUtDLFFBQUwsQ0FBYzlCLElBQWQsQ0FBbkM7QUFDRDtBQUNGLEc7O1NBRUQwQyxZLEdBQUEsd0JBQWdCO0FBQ2QsUUFBSSxLQUFLNUIsUUFBTCxFQUFKLEVBQXFCO0FBQ25CLGFBQU8sSUFBUDtBQUNEOztBQUNELFFBQUksT0FBTyxLQUFLWixPQUFMLENBQWFjLFVBQXBCLEtBQW1DLFdBQXZDLEVBQW9EO0FBQ2xELGFBQU8sS0FBS2QsT0FBTCxDQUFhYyxVQUFwQjtBQUNEOztBQUNELFFBQUksS0FBS1gsUUFBTCxHQUFnQkMsTUFBcEIsRUFBNEI7QUFDMUIsYUFBTyxLQUFLRCxRQUFMLEdBQWdCWSxJQUFoQixDQUFxQixVQUFBQyxDQUFDO0FBQUEsZUFBSUEsQ0FBQyxDQUFDRixVQUFOO0FBQUEsT0FBdEIsQ0FBUDtBQUNEOztBQUNELFdBQU8sSUFBUDtBQUNELEc7O1NBRUQyQixRLEdBQUEsa0JBQVVDLEdBQVYsRUFBZTtBQUNiLFFBQUlDLE1BQUosRUFBWTtBQUNWLGFBQU9BLE1BQU0sQ0FBQ2hCLElBQVAsQ0FBWWUsR0FBWixFQUFpQkUsUUFBakIsQ0FBMEIsUUFBMUIsQ0FBUDtBQUNEOztBQUNELFdBQU9DLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZQyxRQUFRLENBQUNDLGtCQUFrQixDQUFDTixHQUFELENBQW5CLENBQXBCLENBQVA7QUFDRCxHOztTQUVETyxhLEdBQUEseUJBQWlCO0FBQ2YsUUFBSUMsT0FBSjs7QUFFQSxRQUFJLEtBQUt0QyxRQUFMLEVBQUosRUFBcUI7QUFDbkJzQyxNQUFBQSxPQUFPLEdBQUcsa0NBQ0EsS0FBS1QsUUFBTCxDQUFjLEtBQUt4QyxHQUFMLENBQVMyQyxRQUFULEVBQWQsQ0FEVjtBQUVELEtBSEQsTUFHTyxJQUFJLE9BQU8sS0FBSzVDLE9BQUwsQ0FBYWMsVUFBcEIsS0FBbUMsUUFBdkMsRUFBaUQ7QUFDdERvQyxNQUFBQSxPQUFPLEdBQUcsS0FBS2xELE9BQUwsQ0FBYWMsVUFBdkI7QUFDRCxLQUZNLE1BRUE7QUFDTG9DLE1BQUFBLE9BQU8sR0FBRyxLQUFLQyxVQUFMLEtBQW9CLE1BQTlCO0FBQ0Q7O0FBRUQsUUFBSUMsR0FBRyxHQUFHLElBQVY7QUFDQSxRQUFJLEtBQUt0QixHQUFMLENBQVNwQixPQUFULENBQWlCLE1BQWpCLE1BQTZCLENBQUMsQ0FBbEMsRUFBcUMwQyxHQUFHLEdBQUcsTUFBTjtBQUVyQyxTQUFLdEIsR0FBTCxJQUFZc0IsR0FBRyxHQUFHLHVCQUFOLEdBQWdDRixPQUFoQyxHQUEwQyxLQUF0RDtBQUNELEc7O1NBRURDLFUsR0FBQSxzQkFBYztBQUNaLFFBQUksS0FBS3BELElBQUwsQ0FBVXNELEVBQWQsRUFBa0I7QUFDaEIsYUFBTyxLQUFLekIsUUFBTCxDQUFjLEtBQUs3QixJQUFMLENBQVVzRCxFQUF4QixDQUFQO0FBQ0Q7O0FBQ0QsUUFBSSxLQUFLdEQsSUFBTCxDQUFVNEIsSUFBZCxFQUFvQjtBQUNsQixhQUFPLEtBQUtDLFFBQUwsQ0FBYyxLQUFLN0IsSUFBTCxDQUFVNEIsSUFBeEIsQ0FBUDtBQUNEOztBQUNELFdBQU8sUUFBUDtBQUNELEc7O1NBRUQyQixXLEdBQUEsdUJBQWU7QUFDYixTQUFLQyxjQUFMO0FBQ0EsUUFBSSxLQUFLdEMsZ0JBQUwsRUFBSixFQUE2QixLQUFLUSxpQkFBTDtBQUM3QixRQUFJLEtBQUt0QixRQUFMLEdBQWdCQyxNQUFoQixHQUF5QixDQUE3QixFQUFnQyxLQUFLMkIsYUFBTDtBQUNoQyxRQUFJLEtBQUtTLFlBQUwsRUFBSixFQUF5QixLQUFLUyxhQUFMOztBQUV6QixRQUFJLEtBQUtyQyxRQUFMLEVBQUosRUFBcUI7QUFDbkIsYUFBTyxDQUFDLEtBQUtrQixHQUFOLENBQVA7QUFDRDs7QUFDRCxXQUFPLENBQUMsS0FBS0EsR0FBTixFQUFXLEtBQUs3QixHQUFoQixDQUFQO0FBQ0QsRzs7U0FFRDJCLFEsR0FBQSxrQkFBVUssSUFBVixFQUFnQjtBQUNkLFFBQUlBLElBQUksQ0FBQ3ZCLE9BQUwsQ0FBYSxHQUFiLE1BQXNCLENBQTFCLEVBQTZCLE9BQU91QixJQUFQO0FBQzdCLFFBQUksWUFBWXVCLElBQVosQ0FBaUJ2QixJQUFqQixDQUFKLEVBQTRCLE9BQU9BLElBQVA7QUFFNUIsUUFBSU4sSUFBSSxHQUFHLEtBQUs1QixJQUFMLENBQVVzRCxFQUFWLEdBQWVuQixjQUFLQyxPQUFMLENBQWEsS0FBS3BDLElBQUwsQ0FBVXNELEVBQXZCLENBQWYsR0FBNEMsR0FBdkQ7O0FBRUEsUUFBSSxPQUFPLEtBQUtyRCxPQUFMLENBQWFjLFVBQXBCLEtBQW1DLFFBQXZDLEVBQWlEO0FBQy9DYSxNQUFBQSxJQUFJLEdBQUdPLGNBQUtDLE9BQUwsQ0FBYUQsY0FBS3VCLE9BQUwsQ0FBYTlCLElBQWIsRUFBbUIsS0FBSzNCLE9BQUwsQ0FBYWMsVUFBaEMsQ0FBYixDQUFQO0FBQ0Q7O0FBRURtQixJQUFBQSxJQUFJLEdBQUdDLGNBQUtOLFFBQUwsQ0FBY0QsSUFBZCxFQUFvQk0sSUFBcEIsQ0FBUDs7QUFDQSxRQUFJQyxjQUFLd0IsR0FBTCxLQUFhLElBQWpCLEVBQXVCO0FBQ3JCLGFBQU96QixJQUFJLENBQUMwQixPQUFMLENBQWEsS0FBYixFQUFvQixHQUFwQixDQUFQO0FBQ0Q7O0FBQ0QsV0FBTzFCLElBQVA7QUFDRCxHOztTQUVEMkIsVSxHQUFBLG9CQUFZckQsSUFBWixFQUFrQjtBQUNoQixRQUFJLEtBQUtQLE9BQUwsQ0FBYTJCLElBQWpCLEVBQXVCO0FBQ3JCLGFBQU8sS0FBSzNCLE9BQUwsQ0FBYTJCLElBQXBCO0FBQ0Q7O0FBQ0QsV0FBTyxLQUFLQyxRQUFMLENBQWNyQixJQUFJLENBQUNDLE1BQUwsQ0FBWUMsS0FBWixDQUFrQmtCLElBQWhDLENBQVA7QUFDRCxHOztTQUVENEIsYyxHQUFBLDBCQUFrQjtBQUFBOztBQUNoQixTQUFLekIsR0FBTCxHQUFXLEVBQVg7QUFDQSxTQUFLN0IsR0FBTCxHQUFXLElBQUltQyxtQkFBUXlCLGtCQUFaLENBQStCO0FBQUU1QixNQUFBQSxJQUFJLEVBQUUsS0FBS2tCLFVBQUw7QUFBUixLQUEvQixDQUFYO0FBRUEsUUFBSVcsSUFBSSxHQUFHLENBQVg7QUFDQSxRQUFJQyxNQUFNLEdBQUcsQ0FBYjtBQUVBLFFBQUlDLEtBQUosRUFBV0MsSUFBWDtBQUNBLFNBQUtwRSxTQUFMLENBQWUsS0FBS0MsSUFBcEIsRUFBMEIsVUFBQzRDLEdBQUQsRUFBTW5DLElBQU4sRUFBWWUsSUFBWixFQUFxQjtBQUM3QyxNQUFBLE1BQUksQ0FBQ1EsR0FBTCxJQUFZWSxHQUFaOztBQUVBLFVBQUluQyxJQUFJLElBQUllLElBQUksS0FBSyxLQUFyQixFQUE0QjtBQUMxQixZQUFJZixJQUFJLENBQUNDLE1BQUwsSUFBZUQsSUFBSSxDQUFDQyxNQUFMLENBQVkwRCxLQUEvQixFQUFzQztBQUNwQyxVQUFBLE1BQUksQ0FBQ2pFLEdBQUwsQ0FBU2tFLFVBQVQsQ0FBb0I7QUFDbEIzRCxZQUFBQSxNQUFNLEVBQUUsTUFBSSxDQUFDb0QsVUFBTCxDQUFnQnJELElBQWhCLENBRFU7QUFFbEI2RCxZQUFBQSxTQUFTLEVBQUU7QUFBRU4sY0FBQUEsSUFBSSxFQUFKQSxJQUFGO0FBQVFDLGNBQUFBLE1BQU0sRUFBRUEsTUFBTSxHQUFHO0FBQXpCLGFBRk87QUFHbEJNLFlBQUFBLFFBQVEsRUFBRTtBQUNSUCxjQUFBQSxJQUFJLEVBQUV2RCxJQUFJLENBQUNDLE1BQUwsQ0FBWTBELEtBQVosQ0FBa0JKLElBRGhCO0FBRVJDLGNBQUFBLE1BQU0sRUFBRXhELElBQUksQ0FBQ0MsTUFBTCxDQUFZMEQsS0FBWixDQUFrQkgsTUFBbEIsR0FBMkI7QUFGM0I7QUFIUSxXQUFwQjtBQVFELFNBVEQsTUFTTztBQUNMLFVBQUEsTUFBSSxDQUFDOUQsR0FBTCxDQUFTa0UsVUFBVCxDQUFvQjtBQUNsQjNELFlBQUFBLE1BQU0sRUFBRSxhQURVO0FBRWxCNkQsWUFBQUEsUUFBUSxFQUFFO0FBQUVQLGNBQUFBLElBQUksRUFBRSxDQUFSO0FBQVdDLGNBQUFBLE1BQU0sRUFBRTtBQUFuQixhQUZRO0FBR2xCSyxZQUFBQSxTQUFTLEVBQUU7QUFBRU4sY0FBQUEsSUFBSSxFQUFKQSxJQUFGO0FBQVFDLGNBQUFBLE1BQU0sRUFBRUEsTUFBTSxHQUFHO0FBQXpCO0FBSE8sV0FBcEI7QUFLRDtBQUNGOztBQUVEQyxNQUFBQSxLQUFLLEdBQUd0QixHQUFHLENBQUM0QixLQUFKLENBQVUsS0FBVixDQUFSOztBQUNBLFVBQUlOLEtBQUosRUFBVztBQUNURixRQUFBQSxJQUFJLElBQUlFLEtBQUssQ0FBQzVELE1BQWQ7QUFDQTZELFFBQUFBLElBQUksR0FBR3ZCLEdBQUcsQ0FBQzZCLFdBQUosQ0FBZ0IsSUFBaEIsQ0FBUDtBQUNBUixRQUFBQSxNQUFNLEdBQUdyQixHQUFHLENBQUN0QyxNQUFKLEdBQWE2RCxJQUF0QjtBQUNELE9BSkQsTUFJTztBQUNMRixRQUFBQSxNQUFNLElBQUlyQixHQUFHLENBQUN0QyxNQUFkO0FBQ0Q7O0FBRUQsVUFBSUcsSUFBSSxJQUFJZSxJQUFJLEtBQUssT0FBckIsRUFBOEI7QUFDNUIsWUFBSWtELENBQUMsR0FBR2pFLElBQUksQ0FBQ2tFLE1BQUwsSUFBZTtBQUFFQyxVQUFBQSxJQUFJLEVBQUU7QUFBUixTQUF2Qjs7QUFDQSxZQUFJbkUsSUFBSSxDQUFDZSxJQUFMLEtBQWMsTUFBZCxJQUF3QmYsSUFBSSxLQUFLaUUsQ0FBQyxDQUFDUCxJQUFuQyxJQUEyQ08sQ0FBQyxDQUFDRSxJQUFGLENBQU9DLFNBQXRELEVBQWlFO0FBQy9ELGNBQUlwRSxJQUFJLENBQUNDLE1BQUwsSUFBZUQsSUFBSSxDQUFDQyxNQUFMLENBQVlvRSxHQUEvQixFQUFvQztBQUNsQyxZQUFBLE1BQUksQ0FBQzNFLEdBQUwsQ0FBU2tFLFVBQVQsQ0FBb0I7QUFDbEIzRCxjQUFBQSxNQUFNLEVBQUUsTUFBSSxDQUFDb0QsVUFBTCxDQUFnQnJELElBQWhCLENBRFU7QUFFbEI2RCxjQUFBQSxTQUFTLEVBQUU7QUFBRU4sZ0JBQUFBLElBQUksRUFBSkEsSUFBRjtBQUFRQyxnQkFBQUEsTUFBTSxFQUFFQSxNQUFNLEdBQUc7QUFBekIsZUFGTztBQUdsQk0sY0FBQUEsUUFBUSxFQUFFO0FBQ1JQLGdCQUFBQSxJQUFJLEVBQUV2RCxJQUFJLENBQUNDLE1BQUwsQ0FBWW9FLEdBQVosQ0FBZ0JkLElBRGQ7QUFFUkMsZ0JBQUFBLE1BQU0sRUFBRXhELElBQUksQ0FBQ0MsTUFBTCxDQUFZb0UsR0FBWixDQUFnQmIsTUFBaEIsR0FBeUI7QUFGekI7QUFIUSxhQUFwQjtBQVFELFdBVEQsTUFTTztBQUNMLFlBQUEsTUFBSSxDQUFDOUQsR0FBTCxDQUFTa0UsVUFBVCxDQUFvQjtBQUNsQjNELGNBQUFBLE1BQU0sRUFBRSxhQURVO0FBRWxCNkQsY0FBQUEsUUFBUSxFQUFFO0FBQUVQLGdCQUFBQSxJQUFJLEVBQUUsQ0FBUjtBQUFXQyxnQkFBQUEsTUFBTSxFQUFFO0FBQW5CLGVBRlE7QUFHbEJLLGNBQUFBLFNBQVMsRUFBRTtBQUFFTixnQkFBQUEsSUFBSSxFQUFKQSxJQUFGO0FBQVFDLGdCQUFBQSxNQUFNLEVBQUVBLE1BQU0sR0FBRztBQUF6QjtBQUhPLGFBQXBCO0FBS0Q7QUFDRjtBQUNGO0FBQ0YsS0FwREQ7QUFxREQsRzs7U0FFRGMsUSxHQUFBLG9CQUFZO0FBQ1YsU0FBS3pELGVBQUw7O0FBRUEsUUFBSSxLQUFLbEIsS0FBTCxFQUFKLEVBQWtCO0FBQ2hCLGFBQU8sS0FBS29ELFdBQUwsRUFBUDtBQUNEOztBQUVELFFBQUl3QixNQUFNLEdBQUcsRUFBYjtBQUNBLFNBQUtqRixTQUFMLENBQWUsS0FBS0MsSUFBcEIsRUFBMEIsVUFBQWtCLENBQUMsRUFBSTtBQUM3QjhELE1BQUFBLE1BQU0sSUFBSTlELENBQVY7QUFDRCxLQUZEO0FBR0EsV0FBTyxDQUFDOEQsTUFBRCxDQUFQO0FBQ0QsRzs7Ozs7ZUFHWWxGLFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW96aWxsYSBmcm9tICdzb3VyY2UtbWFwJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcblxuY2xhc3MgTWFwR2VuZXJhdG9yIHtcbiAgY29uc3RydWN0b3IgKHN0cmluZ2lmeSwgcm9vdCwgb3B0cykge1xuICAgIHRoaXMuc3RyaW5naWZ5ID0gc3RyaW5naWZ5XG4gICAgdGhpcy5tYXBPcHRzID0gb3B0cy5tYXAgfHwgeyB9XG4gICAgdGhpcy5yb290ID0gcm9vdFxuICAgIHRoaXMub3B0cyA9IG9wdHNcbiAgfVxuXG4gIGlzTWFwICgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMub3B0cy5tYXAgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gISF0aGlzLm9wdHMubWFwXG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByZXZpb3VzKCkubGVuZ3RoID4gMFxuICB9XG5cbiAgcHJldmlvdXMgKCkge1xuICAgIGlmICghdGhpcy5wcmV2aW91c01hcHMpIHtcbiAgICAgIHRoaXMucHJldmlvdXNNYXBzID0gW11cbiAgICAgIHRoaXMucm9vdC53YWxrKG5vZGUgPT4ge1xuICAgICAgICBpZiAobm9kZS5zb3VyY2UgJiYgbm9kZS5zb3VyY2UuaW5wdXQubWFwKSB7XG4gICAgICAgICAgbGV0IG1hcCA9IG5vZGUuc291cmNlLmlucHV0Lm1hcFxuICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzTWFwcy5pbmRleE9mKG1hcCkgPT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzTWFwcy5wdXNoKG1hcClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJldmlvdXNNYXBzXG4gIH1cblxuICBpc0lubGluZSAoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLm1hcE9wdHMuaW5saW5lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHRoaXMubWFwT3B0cy5pbmxpbmVcbiAgICB9XG5cbiAgICBsZXQgYW5ub3RhdGlvbiA9IHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uXG4gICAgaWYgKHR5cGVvZiBhbm5vdGF0aW9uICE9PSAndW5kZWZpbmVkJyAmJiBhbm5vdGF0aW9uICE9PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcmV2aW91cygpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5zb21lKGkgPT4gaS5pbmxpbmUpXG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpc1NvdXJjZXNDb250ZW50ICgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMubWFwT3B0cy5zb3VyY2VzQ29udGVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLm1hcE9wdHMuc291cmNlc0NvbnRlbnRcbiAgICB9XG4gICAgaWYgKHRoaXMucHJldmlvdXMoKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLnByZXZpb3VzKCkuc29tZShpID0+IGkud2l0aENvbnRlbnQoKSlcbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGNsZWFyQW5ub3RhdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uID09PSBmYWxzZSkgcmV0dXJuXG5cbiAgICBsZXQgbm9kZVxuICAgIGZvciAobGV0IGkgPSB0aGlzLnJvb3Qubm9kZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIG5vZGUgPSB0aGlzLnJvb3Qubm9kZXNbaV1cbiAgICAgIGlmIChub2RlLnR5cGUgIT09ICdjb21tZW50JykgY29udGludWVcbiAgICAgIGlmIChub2RlLnRleHQuaW5kZXhPZignIyBzb3VyY2VNYXBwaW5nVVJMPScpID09PSAwKSB7XG4gICAgICAgIHRoaXMucm9vdC5yZW1vdmVDaGlsZChpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFNvdXJjZXNDb250ZW50ICgpIHtcbiAgICBsZXQgYWxyZWFkeSA9IHsgfVxuICAgIHRoaXMucm9vdC53YWxrKG5vZGUgPT4ge1xuICAgICAgaWYgKG5vZGUuc291cmNlKSB7XG4gICAgICAgIGxldCBmcm9tID0gbm9kZS5zb3VyY2UuaW5wdXQuZnJvbVxuICAgICAgICBpZiAoZnJvbSAmJiAhYWxyZWFkeVtmcm9tXSkge1xuICAgICAgICAgIGFscmVhZHlbZnJvbV0gPSB0cnVlXG4gICAgICAgICAgbGV0IHJlbGF0aXZlID0gdGhpcy5yZWxhdGl2ZShmcm9tKVxuICAgICAgICAgIHRoaXMubWFwLnNldFNvdXJjZUNvbnRlbnQocmVsYXRpdmUsIG5vZGUuc291cmNlLmlucHV0LmNzcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBhcHBseVByZXZNYXBzICgpIHtcbiAgICBmb3IgKGxldCBwcmV2IG9mIHRoaXMucHJldmlvdXMoKSkge1xuICAgICAgbGV0IGZyb20gPSB0aGlzLnJlbGF0aXZlKHByZXYuZmlsZSlcbiAgICAgIGxldCByb290ID0gcHJldi5yb290IHx8IHBhdGguZGlybmFtZShwcmV2LmZpbGUpXG4gICAgICBsZXQgbWFwXG5cbiAgICAgIGlmICh0aGlzLm1hcE9wdHMuc291cmNlc0NvbnRlbnQgPT09IGZhbHNlKSB7XG4gICAgICAgIG1hcCA9IG5ldyBtb3ppbGxhLlNvdXJjZU1hcENvbnN1bWVyKHByZXYudGV4dClcbiAgICAgICAgaWYgKG1hcC5zb3VyY2VzQ29udGVudCkge1xuICAgICAgICAgIG1hcC5zb3VyY2VzQ29udGVudCA9IG1hcC5zb3VyY2VzQ29udGVudC5tYXAoKCkgPT4gbnVsbClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFwID0gcHJldi5jb25zdW1lcigpXG4gICAgICB9XG5cbiAgICAgIHRoaXMubWFwLmFwcGx5U291cmNlTWFwKG1hcCwgZnJvbSwgdGhpcy5yZWxhdGl2ZShyb290KSlcbiAgICB9XG4gIH1cblxuICBpc0Fubm90YXRpb24gKCkge1xuICAgIGlmICh0aGlzLmlzSW5saW5lKCkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIGlmICh0eXBlb2YgdGhpcy5tYXBPcHRzLmFubm90YXRpb24gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXBPcHRzLmFubm90YXRpb25cbiAgICB9XG4gICAgaWYgKHRoaXMucHJldmlvdXMoKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLnByZXZpb3VzKCkuc29tZShpID0+IGkuYW5ub3RhdGlvbilcbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHRvQmFzZTY0IChzdHIpIHtcbiAgICBpZiAoQnVmZmVyKSB7XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oc3RyKS50b1N0cmluZygnYmFzZTY0JylcbiAgICB9XG4gICAgcmV0dXJuIHdpbmRvdy5idG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChzdHIpKSlcbiAgfVxuXG4gIGFkZEFubm90YXRpb24gKCkge1xuICAgIGxldCBjb250ZW50XG5cbiAgICBpZiAodGhpcy5pc0lubGluZSgpKSB7XG4gICAgICBjb250ZW50ID0gJ2RhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsJyArXG4gICAgICAgICAgICAgICAgdGhpcy50b0Jhc2U2NCh0aGlzLm1hcC50b1N0cmluZygpKVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgY29udGVudCA9IHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLm91dHB1dEZpbGUoKSArICcubWFwJ1xuICAgIH1cblxuICAgIGxldCBlb2wgPSAnXFxuJ1xuICAgIGlmICh0aGlzLmNzcy5pbmRleE9mKCdcXHJcXG4nKSAhPT0gLTEpIGVvbCA9ICdcXHJcXG4nXG5cbiAgICB0aGlzLmNzcyArPSBlb2wgKyAnLyojIHNvdXJjZU1hcHBpbmdVUkw9JyArIGNvbnRlbnQgKyAnICovJ1xuICB9XG5cbiAgb3V0cHV0RmlsZSAoKSB7XG4gICAgaWYgKHRoaXMub3B0cy50bykge1xuICAgICAgcmV0dXJuIHRoaXMucmVsYXRpdmUodGhpcy5vcHRzLnRvKVxuICAgIH1cbiAgICBpZiAodGhpcy5vcHRzLmZyb20pIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbGF0aXZlKHRoaXMub3B0cy5mcm9tKVxuICAgIH1cbiAgICByZXR1cm4gJ3RvLmNzcydcbiAgfVxuXG4gIGdlbmVyYXRlTWFwICgpIHtcbiAgICB0aGlzLmdlbmVyYXRlU3RyaW5nKClcbiAgICBpZiAodGhpcy5pc1NvdXJjZXNDb250ZW50KCkpIHRoaXMuc2V0U291cmNlc0NvbnRlbnQoKVxuICAgIGlmICh0aGlzLnByZXZpb3VzKCkubGVuZ3RoID4gMCkgdGhpcy5hcHBseVByZXZNYXBzKClcbiAgICBpZiAodGhpcy5pc0Fubm90YXRpb24oKSkgdGhpcy5hZGRBbm5vdGF0aW9uKClcblxuICAgIGlmICh0aGlzLmlzSW5saW5lKCkpIHtcbiAgICAgIHJldHVybiBbdGhpcy5jc3NdXG4gICAgfVxuICAgIHJldHVybiBbdGhpcy5jc3MsIHRoaXMubWFwXVxuICB9XG5cbiAgcmVsYXRpdmUgKGZpbGUpIHtcbiAgICBpZiAoZmlsZS5pbmRleE9mKCc8JykgPT09IDApIHJldHVybiBmaWxlXG4gICAgaWYgKC9eXFx3KzpcXC9cXC8vLnRlc3QoZmlsZSkpIHJldHVybiBmaWxlXG5cbiAgICBsZXQgZnJvbSA9IHRoaXMub3B0cy50byA/IHBhdGguZGlybmFtZSh0aGlzLm9wdHMudG8pIDogJy4nXG5cbiAgICBpZiAodHlwZW9mIHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgZnJvbSA9IHBhdGguZGlybmFtZShwYXRoLnJlc29sdmUoZnJvbSwgdGhpcy5tYXBPcHRzLmFubm90YXRpb24pKVxuICAgIH1cblxuICAgIGZpbGUgPSBwYXRoLnJlbGF0aXZlKGZyb20sIGZpbGUpXG4gICAgaWYgKHBhdGguc2VwID09PSAnXFxcXCcpIHtcbiAgICAgIHJldHVybiBmaWxlLnJlcGxhY2UoL1xcXFwvZywgJy8nKVxuICAgIH1cbiAgICByZXR1cm4gZmlsZVxuICB9XG5cbiAgc291cmNlUGF0aCAobm9kZSkge1xuICAgIGlmICh0aGlzLm1hcE9wdHMuZnJvbSkge1xuICAgICAgcmV0dXJuIHRoaXMubWFwT3B0cy5mcm9tXG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlbGF0aXZlKG5vZGUuc291cmNlLmlucHV0LmZyb20pXG4gIH1cblxuICBnZW5lcmF0ZVN0cmluZyAoKSB7XG4gICAgdGhpcy5jc3MgPSAnJ1xuICAgIHRoaXMubWFwID0gbmV3IG1vemlsbGEuU291cmNlTWFwR2VuZXJhdG9yKHsgZmlsZTogdGhpcy5vdXRwdXRGaWxlKCkgfSlcblxuICAgIGxldCBsaW5lID0gMVxuICAgIGxldCBjb2x1bW4gPSAxXG5cbiAgICBsZXQgbGluZXMsIGxhc3RcbiAgICB0aGlzLnN0cmluZ2lmeSh0aGlzLnJvb3QsIChzdHIsIG5vZGUsIHR5cGUpID0+IHtcbiAgICAgIHRoaXMuY3NzICs9IHN0clxuXG4gICAgICBpZiAobm9kZSAmJiB0eXBlICE9PSAnZW5kJykge1xuICAgICAgICBpZiAobm9kZS5zb3VyY2UgJiYgbm9kZS5zb3VyY2Uuc3RhcnQpIHtcbiAgICAgICAgICB0aGlzLm1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2VQYXRoKG5vZGUpLFxuICAgICAgICAgICAgZ2VuZXJhdGVkOiB7IGxpbmUsIGNvbHVtbjogY29sdW1uIC0gMSB9LFxuICAgICAgICAgICAgb3JpZ2luYWw6IHtcbiAgICAgICAgICAgICAgbGluZTogbm9kZS5zb3VyY2Uuc3RhcnQubGluZSxcbiAgICAgICAgICAgICAgY29sdW1uOiBub2RlLnNvdXJjZS5zdGFydC5jb2x1bW4gLSAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgICAgIHNvdXJjZTogJzxubyBzb3VyY2U+JyxcbiAgICAgICAgICAgIG9yaWdpbmFsOiB7IGxpbmU6IDEsIGNvbHVtbjogMCB9LFxuICAgICAgICAgICAgZ2VuZXJhdGVkOiB7IGxpbmUsIGNvbHVtbjogY29sdW1uIC0gMSB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaW5lcyA9IHN0ci5tYXRjaCgvXFxuL2cpXG4gICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgbGluZSArPSBsaW5lcy5sZW5ndGhcbiAgICAgICAgbGFzdCA9IHN0ci5sYXN0SW5kZXhPZignXFxuJylcbiAgICAgICAgY29sdW1uID0gc3RyLmxlbmd0aCAtIGxhc3RcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbHVtbiArPSBzdHIubGVuZ3RoXG4gICAgICB9XG5cbiAgICAgIGlmIChub2RlICYmIHR5cGUgIT09ICdzdGFydCcpIHtcbiAgICAgICAgbGV0IHAgPSBub2RlLnBhcmVudCB8fCB7IHJhd3M6IHsgfSB9XG4gICAgICAgIGlmIChub2RlLnR5cGUgIT09ICdkZWNsJyB8fCBub2RlICE9PSBwLmxhc3QgfHwgcC5yYXdzLnNlbWljb2xvbikge1xuICAgICAgICAgIGlmIChub2RlLnNvdXJjZSAmJiBub2RlLnNvdXJjZS5lbmQpIHtcbiAgICAgICAgICAgIHRoaXMubWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMuc291cmNlUGF0aChub2RlKSxcbiAgICAgICAgICAgICAgZ2VuZXJhdGVkOiB7IGxpbmUsIGNvbHVtbjogY29sdW1uIC0gMiB9LFxuICAgICAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgICAgIGxpbmU6IG5vZGUuc291cmNlLmVuZC5saW5lLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogbm9kZS5zb3VyY2UuZW5kLmNvbHVtbiAtIDFcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICAgIHNvdXJjZTogJzxubyBzb3VyY2U+JyxcbiAgICAgICAgICAgICAgb3JpZ2luYWw6IHsgbGluZTogMSwgY29sdW1uOiAwIH0sXG4gICAgICAgICAgICAgIGdlbmVyYXRlZDogeyBsaW5lLCBjb2x1bW46IGNvbHVtbiAtIDEgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZ2VuZXJhdGUgKCkge1xuICAgIHRoaXMuY2xlYXJBbm5vdGF0aW9uKClcblxuICAgIGlmICh0aGlzLmlzTWFwKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlTWFwKClcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gJydcbiAgICB0aGlzLnN0cmluZ2lmeSh0aGlzLnJvb3QsIGkgPT4ge1xuICAgICAgcmVzdWx0ICs9IGlcbiAgICB9KVxuICAgIHJldHVybiBbcmVzdWx0XVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1hcEdlbmVyYXRvclxuIl0sImZpbGUiOiJtYXAtZ2VuZXJhdG9yLmpzIn0=
diff --git a/assets/node_modules/postcss/lib/node.js b/assets/node_modules/postcss/lib/node.js
deleted file mode 100644
index a0e582c..0000000
--- a/assets/node_modules/postcss/lib/node.js
+++ /dev/null
@@ -1,608 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _cssSyntaxError = _interopRequireDefault(require("./css-syntax-error"));
-
-var _stringifier = _interopRequireDefault(require("./stringifier"));
-
-var _stringify = _interopRequireDefault(require("./stringify"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function cloneNode(obj, parent) {
- var cloned = new obj.constructor();
-
- for (var i in obj) {
- if (!obj.hasOwnProperty(i)) continue;
- var value = obj[i];
- var type = typeof value;
-
- if (i === 'parent' && type === 'object') {
- if (parent) cloned[i] = parent;
- } else if (i === 'source') {
- cloned[i] = value;
- } else if (value instanceof Array) {
- cloned[i] = value.map(function (j) {
- return cloneNode(j, cloned);
- });
- } else {
- if (type === 'object' && value !== null) value = cloneNode(value);
- cloned[i] = value;
- }
- }
-
- return cloned;
-}
-/**
- * All node classes inherit the following common methods.
- *
- * @abstract
- */
-
-
-var Node =
-/*#__PURE__*/
-function () {
- /**
- * @param {object} [defaults] Value for node properties.
- */
- function Node(defaults) {
- if (defaults === void 0) {
- defaults = {};
- }
-
- this.raws = {};
-
- if (process.env.NODE_ENV !== 'production') {
- if (typeof defaults !== 'object' && typeof defaults !== 'undefined') {
- throw new Error('PostCSS nodes constructor accepts object, not ' + JSON.stringify(defaults));
- }
- }
-
- for (var name in defaults) {
- this[name] = defaults[name];
- }
- }
- /**
- * Returns a `CssSyntaxError` instance containing the original position
- * of the node in the source, showing line and column numbers and also
- * a small excerpt to facilitate debugging.
- *
- * If present, an input source map will be used to get the original position
- * of the source, even from a previous compilation step
- * (e.g., from Sass compilation).
- *
- * This method produces very useful error messages.
- *
- * @param {string} message Error description.
- * @param {object} [opts] Options.
- * @param {string} opts.plugin Plugin name that created this error.
- * PostCSS will set it automatically.
- * @param {string} opts.word A word inside a node’s string that should
- * be highlighted as the source of the error.
- * @param {number} opts.index An index inside a node’s string that should
- * be highlighted as the source of the error.
- *
- * @return {CssSyntaxError} Error object to throw it.
- *
- * @example
- * if (!variables[name]) {
- * throw decl.error('Unknown variable ' + name, { word: name })
- * // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black
- * // color: $black
- * // a
- * // ^
- * // background: white
- * }
- */
-
-
- var _proto = Node.prototype;
-
- _proto.error = function error(message, opts) {
- if (opts === void 0) {
- opts = {};
- }
-
- if (this.source) {
- var pos = this.positionBy(opts);
- return this.source.input.error(message, pos.line, pos.column, opts);
- }
-
- return new _cssSyntaxError.default(message);
- }
- /**
- * This method is provided as a convenience wrapper for {@link Result#warn}.
- *
- * @param {Result} result The {@link Result} instance
- * that will receive the warning.
- * @param {string} text Warning message.
- * @param {object} [opts] Options
- * @param {string} opts.plugin Plugin name that created this warning.
- * PostCSS will set it automatically.
- * @param {string} opts.word A word inside a node’s string that should
- * be highlighted as the source of the warning.
- * @param {number} opts.index An index inside a node’s string that should
- * be highlighted as the source of the warning.
- *
- * @return {Warning} Created warning object.
- *
- * @example
- * const plugin = postcss.plugin('postcss-deprecated', () => {
- * return (root, result) => {
- * root.walkDecls('bad', decl => {
- * decl.warn(result, 'Deprecated property bad')
- * })
- * }
- * })
- */
- ;
-
- _proto.warn = function warn(result, text, opts) {
- var data = {
- node: this
- };
-
- for (var i in opts) {
- data[i] = opts[i];
- }
-
- return result.warn(text, data);
- }
- /**
- * Removes the node from its parent and cleans the parent properties
- * from the node and its children.
- *
- * @example
- * if (decl.prop.match(/^-webkit-/)) {
- * decl.remove()
- * }
- *
- * @return {Node} Node to make calls chain.
- */
- ;
-
- _proto.remove = function remove() {
- if (this.parent) {
- this.parent.removeChild(this);
- }
-
- this.parent = undefined;
- return this;
- }
- /**
- * Returns a CSS string representing the node.
- *
- * @param {stringifier|syntax} [stringifier] A syntax to use
- * in string generation.
- *
- * @return {string} CSS string of this node.
- *
- * @example
- * postcss.rule({ selector: 'a' }).toString() //=> "a {}"
- */
- ;
-
- _proto.toString = function toString(stringifier) {
- if (stringifier === void 0) {
- stringifier = _stringify.default;
- }
-
- if (stringifier.stringify) stringifier = stringifier.stringify;
- var result = '';
- stringifier(this, function (i) {
- result += i;
- });
- return result;
- }
- /**
- * Returns an exact clone of the node.
- *
- * The resulting cloned node and its (cloned) children will retain
- * code style properties.
- *
- * @param {object} [overrides] New properties to override in the clone.
- *
- * @example
- * decl.raws.before //=> "\n "
- * const cloned = decl.clone({ prop: '-moz-' + decl.prop })
- * cloned.raws.before //=> "\n "
- * cloned.toString() //=> -moz-transform: scale(0)
- *
- * @return {Node} Clone of the node.
- */
- ;
-
- _proto.clone = function clone(overrides) {
- if (overrides === void 0) {
- overrides = {};
- }
-
- var cloned = cloneNode(this);
-
- for (var name in overrides) {
- cloned[name] = overrides[name];
- }
-
- return cloned;
- }
- /**
- * Shortcut to clone the node and insert the resulting cloned node
- * before the current node.
- *
- * @param {object} [overrides] Mew properties to override in the clone.
- *
- * @example
- * decl.cloneBefore({ prop: '-moz-' + decl.prop })
- *
- * @return {Node} New node
- */
- ;
-
- _proto.cloneBefore = function cloneBefore(overrides) {
- if (overrides === void 0) {
- overrides = {};
- }
-
- var cloned = this.clone(overrides);
- this.parent.insertBefore(this, cloned);
- return cloned;
- }
- /**
- * Shortcut to clone the node and insert the resulting cloned node
- * after the current node.
- *
- * @param {object} [overrides] New properties to override in the clone.
- *
- * @return {Node} New node.
- */
- ;
-
- _proto.cloneAfter = function cloneAfter(overrides) {
- if (overrides === void 0) {
- overrides = {};
- }
-
- var cloned = this.clone(overrides);
- this.parent.insertAfter(this, cloned);
- return cloned;
- }
- /**
- * Inserts node(s) before the current node and removes the current node.
- *
- * @param {...Node} nodes Mode(s) to replace current one.
- *
- * @example
- * if (atrule.name === 'mixin') {
- * atrule.replaceWith(mixinRules[atrule.params])
- * }
- *
- * @return {Node} Current node to methods chain.
- */
- ;
-
- _proto.replaceWith = function replaceWith() {
- if (this.parent) {
- for (var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++) {
- nodes[_key] = arguments[_key];
- }
-
- for (var _i = 0, _nodes = nodes; _i < _nodes.length; _i++) {
- var node = _nodes[_i];
- this.parent.insertBefore(this, node);
- }
-
- this.remove();
- }
-
- return this;
- }
- /**
- * Returns the next child of the node’s parent.
- * Returns `undefined` if the current node is the last child.
- *
- * @return {Node|undefined} Next node.
- *
- * @example
- * if (comment.text === 'delete next') {
- * const next = comment.next()
- * if (next) {
- * next.remove()
- * }
- * }
- */
- ;
-
- _proto.next = function next() {
- if (!this.parent) return undefined;
- var index = this.parent.index(this);
- return this.parent.nodes[index + 1];
- }
- /**
- * Returns the previous child of the node’s parent.
- * Returns `undefined` if the current node is the first child.
- *
- * @return {Node|undefined} Previous node.
- *
- * @example
- * const annotation = decl.prev()
- * if (annotation.type === 'comment') {
- * readAnnotation(annotation.text)
- * }
- */
- ;
-
- _proto.prev = function prev() {
- if (!this.parent) return undefined;
- var index = this.parent.index(this);
- return this.parent.nodes[index - 1];
- }
- /**
- * Insert new node before current node to current node’s parent.
- *
- * Just alias for `node.parent.insertBefore(node, add)`.
- *
- * @param {Node|object|string|Node[]} add New node.
- *
- * @return {Node} This node for methods chain.
- *
- * @example
- * decl.before('content: ""')
- */
- ;
-
- _proto.before = function before(add) {
- this.parent.insertBefore(this, add);
- return this;
- }
- /**
- * Insert new node after current node to current node’s parent.
- *
- * Just alias for `node.parent.insertAfter(node, add)`.
- *
- * @param {Node|object|string|Node[]} add New node.
- *
- * @return {Node} This node for methods chain.
- *
- * @example
- * decl.after('color: black')
- */
- ;
-
- _proto.after = function after(add) {
- this.parent.insertAfter(this, add);
- return this;
- };
-
- _proto.toJSON = function toJSON() {
- var fixed = {};
-
- for (var name in this) {
- if (!this.hasOwnProperty(name)) continue;
- if (name === 'parent') continue;
- var value = this[name];
-
- if (value instanceof Array) {
- fixed[name] = value.map(function (i) {
- if (typeof i === 'object' && i.toJSON) {
- return i.toJSON();
- } else {
- return i;
- }
- });
- } else if (typeof value === 'object' && value.toJSON) {
- fixed[name] = value.toJSON();
- } else {
- fixed[name] = value;
- }
- }
-
- return fixed;
- }
- /**
- * Returns a {@link Node#raws} value. If the node is missing
- * the code style property (because the node was manually built or cloned),
- * PostCSS will try to autodetect the code style property by looking
- * at other nodes in the tree.
- *
- * @param {string} prop Name of code style property.
- * @param {string} [defaultType] Name of default value, it can be missed
- * if the value is the same as prop.
- *
- * @example
- * const root = postcss.parse('a { background: white }')
- * root.nodes[0].append({ prop: 'color', value: 'black' })
- * root.nodes[0].nodes[1].raws.before //=> undefined
- * root.nodes[0].nodes[1].raw('before') //=> ' '
- *
- * @return {string} Code style value.
- */
- ;
-
- _proto.raw = function raw(prop, defaultType) {
- var str = new _stringifier.default();
- return str.raw(this, prop, defaultType);
- }
- /**
- * Finds the Root instance of the node’s tree.
- *
- * @example
- * root.nodes[0].nodes[0].root() === root
- *
- * @return {Root} Root parent.
- */
- ;
-
- _proto.root = function root() {
- var result = this;
-
- while (result.parent) {
- result = result.parent;
- }
-
- return result;
- }
- /**
- * Clear the code style properties for the node and its children.
- *
- * @param {boolean} [keepBetween] Keep the raws.between symbols.
- *
- * @return {undefined}
- *
- * @example
- * node.raws.before //=> ' '
- * node.cleanRaws()
- * node.raws.before //=> undefined
- */
- ;
-
- _proto.cleanRaws = function cleanRaws(keepBetween) {
- delete this.raws.before;
- delete this.raws.after;
- if (!keepBetween) delete this.raws.between;
- };
-
- _proto.positionInside = function positionInside(index) {
- var string = this.toString();
- var column = this.source.start.column;
- var line = this.source.start.line;
-
- for (var i = 0; i < index; i++) {
- if (string[i] === '\n') {
- column = 1;
- line += 1;
- } else {
- column += 1;
- }
- }
-
- return {
- line: line,
- column: column
- };
- };
-
- _proto.positionBy = function positionBy(opts) {
- var pos = this.source.start;
-
- if (opts.index) {
- pos = this.positionInside(opts.index);
- } else if (opts.word) {
- var index = this.toString().indexOf(opts.word);
- if (index !== -1) pos = this.positionInside(index);
- }
-
- return pos;
- }
- /**
- * @memberof Node#
- * @member {string} type String representing the node’s type.
- * Possible values are `root`, `atrule`, `rule`,
- * `decl`, or `comment`.
- *
- * @example
- * postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl'
- */
-
- /**
- * @memberof Node#
- * @member {Container} parent The node’s parent node.
- *
- * @example
- * root.nodes[0].parent === root
- */
-
- /**
- * @memberof Node#
- * @member {source} source The input source of the node.
- *
- * The property is used in source map generation.
- *
- * If you create a node manually (e.g., with `postcss.decl()`),
- * that node will not have a `source` property and will be absent
- * from the source map. For this reason, the plugin developer should
- * consider cloning nodes to create new ones (in which case the new node’s
- * source will reference the original, cloned node) or setting
- * the `source` property manually.
- *
- * ```js
- * // Bad
- * const prefixed = postcss.decl({
- * prop: '-moz-' + decl.prop,
- * value: decl.value
- * })
- *
- * // Good
- * const prefixed = decl.clone({ prop: '-moz-' + decl.prop })
- * ```
- *
- * ```js
- * if (atrule.name === 'add-link') {
- * const rule = postcss.rule({ selector: 'a', source: atrule.source })
- * atrule.parent.insertBefore(atrule, rule)
- * }
- * ```
- *
- * @example
- * decl.source.input.from //=> '/home/ai/a.sass'
- * decl.source.start //=> { line: 10, column: 2 }
- * decl.source.end //=> { line: 10, column: 12 }
- */
-
- /**
- * @memberof Node#
- * @member {object} raws Information to generate byte-to-byte equal
- * node string as it was in the origin input.
- *
- * Every parser saves its own properties,
- * but the default CSS parser uses:
- *
- * * `before`: the space symbols before the node. It also stores `*`
- * and `_` symbols before the declaration (IE hack).
- * * `after`: the space symbols after the last child of the node
- * to the end of the node.
- * * `between`: the symbols between the property and value
- * for declarations, selector and `{` for rules, or last parameter
- * and `{` for at-rules.
- * * `semicolon`: contains true if the last child has
- * an (optional) semicolon.
- * * `afterName`: the space between the at-rule name and its parameters.
- * * `left`: the space symbols between `/*` and the comment’s text.
- * * `right`: the space symbols between the comment’s text
- * and <code>*&#47;</code>.
- * * `important`: the content of the important statement,
- * if it is not just `!important`.
- *
- * PostCSS cleans selectors, declaration values and at-rule parameters
- * from comments and extra spaces, but it stores origin content in raws
- * properties. As such, if you don’t change a declaration’s value,
- * PostCSS will use the raw value with comments.
- *
- * @example
- * const root = postcss.parse('a {\n color:black\n}')
- * root.first.first.raws //=> { before: '\n ', between: ':' }
- */
- ;
-
- return Node;
-}();
-
-var _default = Node;
-/**
- * @typedef {object} position
- * @property {number} line Source line in file.
- * @property {number} column Source column in file.
- */
-
-/**
- * @typedef {object} source
- * @property {Input} input {@link Input} with input file
- * @property {position} start The starting position of the node’s source.
- * @property {position} end The ending position of the node’s source.
- */
-
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGUuZXM2Il0sIm5hbWVzIjpbImNsb25lTm9kZSIsIm9iaiIsInBhcmVudCIsImNsb25lZCIsImNvbnN0cnVjdG9yIiwiaSIsImhhc093blByb3BlcnR5IiwidmFsdWUiLCJ0eXBlIiwiQXJyYXkiLCJtYXAiLCJqIiwiTm9kZSIsImRlZmF1bHRzIiwicmF3cyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5hbWUiLCJlcnJvciIsIm1lc3NhZ2UiLCJvcHRzIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImlucHV0IiwibGluZSIsImNvbHVtbiIsIkNzc1N5bnRheEVycm9yIiwid2FybiIsInJlc3VsdCIsInRleHQiLCJkYXRhIiwibm9kZSIsInJlbW92ZSIsInJlbW92ZUNoaWxkIiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJzdHJpbmdpZmllciIsImNsb25lIiwib3ZlcnJpZGVzIiwiY2xvbmVCZWZvcmUiLCJpbnNlcnRCZWZvcmUiLCJjbG9uZUFmdGVyIiwiaW5zZXJ0QWZ0ZXIiLCJyZXBsYWNlV2l0aCIsIm5vZGVzIiwibmV4dCIsImluZGV4IiwicHJldiIsImJlZm9yZSIsImFkZCIsImFmdGVyIiwidG9KU09OIiwiZml4ZWQiLCJyYXciLCJwcm9wIiwiZGVmYXVsdFR5cGUiLCJzdHIiLCJTdHJpbmdpZmllciIsInJvb3QiLCJjbGVhblJhd3MiLCJrZWVwQmV0d2VlbiIsImJldHdlZW4iLCJwb3NpdGlvbkluc2lkZSIsInN0cmluZyIsInN0YXJ0Iiwid29yZCIsImluZGV4T2YiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxTQUFTQSxTQUFULENBQW9CQyxHQUFwQixFQUF5QkMsTUFBekIsRUFBaUM7QUFDL0IsTUFBSUMsTUFBTSxHQUFHLElBQUlGLEdBQUcsQ0FBQ0csV0FBUixFQUFiOztBQUVBLE9BQUssSUFBSUMsQ0FBVCxJQUFjSixHQUFkLEVBQW1CO0FBQ2pCLFFBQUksQ0FBQ0EsR0FBRyxDQUFDSyxjQUFKLENBQW1CRCxDQUFuQixDQUFMLEVBQTRCO0FBQzVCLFFBQUlFLEtBQUssR0FBR04sR0FBRyxDQUFDSSxDQUFELENBQWY7QUFDQSxRQUFJRyxJQUFJLEdBQUcsT0FBT0QsS0FBbEI7O0FBRUEsUUFBSUYsQ0FBQyxLQUFLLFFBQU4sSUFBa0JHLElBQUksS0FBSyxRQUEvQixFQUF5QztBQUN2QyxVQUFJTixNQUFKLEVBQVlDLE1BQU0sQ0FBQ0UsQ0FBRCxDQUFOLEdBQVlILE1BQVo7QUFDYixLQUZELE1BRU8sSUFBSUcsQ0FBQyxLQUFLLFFBQVYsRUFBb0I7QUFDekJGLE1BQUFBLE1BQU0sQ0FBQ0UsQ0FBRCxDQUFOLEdBQVlFLEtBQVo7QUFDRCxLQUZNLE1BRUEsSUFBSUEsS0FBSyxZQUFZRSxLQUFyQixFQUE0QjtBQUNqQ04sTUFBQUEsTUFBTSxDQUFDRSxDQUFELENBQU4sR0FBWUUsS0FBSyxDQUFDRyxHQUFOLENBQVUsVUFBQUMsQ0FBQztBQUFBLGVBQUlYLFNBQVMsQ0FBQ1csQ0FBRCxFQUFJUixNQUFKLENBQWI7QUFBQSxPQUFYLENBQVo7QUFDRCxLQUZNLE1BRUE7QUFDTCxVQUFJSyxJQUFJLEtBQUssUUFBVCxJQUFxQkQsS0FBSyxLQUFLLElBQW5DLEVBQXlDQSxLQUFLLEdBQUdQLFNBQVMsQ0FBQ08sS0FBRCxDQUFqQjtBQUN6Q0osTUFBQUEsTUFBTSxDQUFDRSxDQUFELENBQU4sR0FBWUUsS0FBWjtBQUNEO0FBQ0Y7O0FBRUQsU0FBT0osTUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7SUFLTVMsSTs7O0FBQ0o7OztBQUdBLGdCQUFhQyxRQUFiLEVBQTZCO0FBQUEsUUFBaEJBLFFBQWdCO0FBQWhCQSxNQUFBQSxRQUFnQixHQUFMLEVBQUs7QUFBQTs7QUFDM0IsU0FBS0MsSUFBTCxHQUFZLEVBQVo7O0FBQ0EsUUFBSUMsT0FBTyxDQUFDQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekMsVUFBSSxPQUFPSixRQUFQLEtBQW9CLFFBQXBCLElBQWdDLE9BQU9BLFFBQVAsS0FBb0IsV0FBeEQsRUFBcUU7QUFDbkUsY0FBTSxJQUFJSyxLQUFKLENBQ0osbURBQ0FDLElBQUksQ0FBQ0MsU0FBTCxDQUFlUCxRQUFmLENBRkksQ0FBTjtBQUlEO0FBQ0Y7O0FBQ0QsU0FBSyxJQUFJUSxJQUFULElBQWlCUixRQUFqQixFQUEyQjtBQUN6QixXQUFLUSxJQUFMLElBQWFSLFFBQVEsQ0FBQ1EsSUFBRCxDQUFyQjtBQUNEO0FBQ0Y7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBZ0NBQyxLLEdBQUEsZUFBT0MsT0FBUCxFQUFnQkMsSUFBaEIsRUFBNEI7QUFBQSxRQUFaQSxJQUFZO0FBQVpBLE1BQUFBLElBQVksR0FBTCxFQUFLO0FBQUE7O0FBQzFCLFFBQUksS0FBS0MsTUFBVCxFQUFpQjtBQUNmLFVBQUlDLEdBQUcsR0FBRyxLQUFLQyxVQUFMLENBQWdCSCxJQUFoQixDQUFWO0FBQ0EsYUFBTyxLQUFLQyxNQUFMLENBQVlHLEtBQVosQ0FBa0JOLEtBQWxCLENBQXdCQyxPQUF4QixFQUFpQ0csR0FBRyxDQUFDRyxJQUFyQyxFQUEyQ0gsR0FBRyxDQUFDSSxNQUEvQyxFQUF1RE4sSUFBdkQsQ0FBUDtBQUNEOztBQUNELFdBQU8sSUFBSU8sdUJBQUosQ0FBbUJSLE9BQW5CLENBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0F5QkFTLEksR0FBQSxjQUFNQyxNQUFOLEVBQWNDLElBQWQsRUFBb0JWLElBQXBCLEVBQTBCO0FBQ3hCLFFBQUlXLElBQUksR0FBRztBQUFFQyxNQUFBQSxJQUFJLEVBQUU7QUFBUixLQUFYOztBQUNBLFNBQUssSUFBSS9CLENBQVQsSUFBY21CLElBQWQ7QUFBb0JXLE1BQUFBLElBQUksQ0FBQzlCLENBQUQsQ0FBSixHQUFVbUIsSUFBSSxDQUFDbkIsQ0FBRCxDQUFkO0FBQXBCOztBQUNBLFdBQU80QixNQUFNLENBQUNELElBQVAsQ0FBWUUsSUFBWixFQUFrQkMsSUFBbEIsQ0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7U0FXQUUsTSxHQUFBLGtCQUFVO0FBQ1IsUUFBSSxLQUFLbkMsTUFBVCxFQUFpQjtBQUNmLFdBQUtBLE1BQUwsQ0FBWW9DLFdBQVosQ0FBd0IsSUFBeEI7QUFDRDs7QUFDRCxTQUFLcEMsTUFBTCxHQUFjcUMsU0FBZDtBQUNBLFdBQU8sSUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7U0FXQUMsUSxHQUFBLGtCQUFVQyxXQUFWLEVBQW1DO0FBQUEsUUFBekJBLFdBQXlCO0FBQXpCQSxNQUFBQSxXQUF5QixHQUFYckIsa0JBQVc7QUFBQTs7QUFDakMsUUFBSXFCLFdBQVcsQ0FBQ3JCLFNBQWhCLEVBQTJCcUIsV0FBVyxHQUFHQSxXQUFXLENBQUNyQixTQUExQjtBQUMzQixRQUFJYSxNQUFNLEdBQUcsRUFBYjtBQUNBUSxJQUFBQSxXQUFXLENBQUMsSUFBRCxFQUFPLFVBQUFwQyxDQUFDLEVBQUk7QUFDckI0QixNQUFBQSxNQUFNLElBQUk1QixDQUFWO0FBQ0QsS0FGVSxDQUFYO0FBR0EsV0FBTzRCLE1BQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FnQkFTLEssR0FBQSxlQUFPQyxTQUFQLEVBQXdCO0FBQUEsUUFBakJBLFNBQWlCO0FBQWpCQSxNQUFBQSxTQUFpQixHQUFMLEVBQUs7QUFBQTs7QUFDdEIsUUFBSXhDLE1BQU0sR0FBR0gsU0FBUyxDQUFDLElBQUQsQ0FBdEI7O0FBQ0EsU0FBSyxJQUFJcUIsSUFBVCxJQUFpQnNCLFNBQWpCLEVBQTRCO0FBQzFCeEMsTUFBQUEsTUFBTSxDQUFDa0IsSUFBRCxDQUFOLEdBQWVzQixTQUFTLENBQUN0QixJQUFELENBQXhCO0FBQ0Q7O0FBQ0QsV0FBT2xCLE1BQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7O1NBV0F5QyxXLEdBQUEscUJBQWFELFNBQWIsRUFBOEI7QUFBQSxRQUFqQkEsU0FBaUI7QUFBakJBLE1BQUFBLFNBQWlCLEdBQUwsRUFBSztBQUFBOztBQUM1QixRQUFJeEMsTUFBTSxHQUFHLEtBQUt1QyxLQUFMLENBQVdDLFNBQVgsQ0FBYjtBQUNBLFNBQUt6QyxNQUFMLENBQVkyQyxZQUFaLENBQXlCLElBQXpCLEVBQStCMUMsTUFBL0I7QUFDQSxXQUFPQSxNQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7OztTQVFBMkMsVSxHQUFBLG9CQUFZSCxTQUFaLEVBQTZCO0FBQUEsUUFBakJBLFNBQWlCO0FBQWpCQSxNQUFBQSxTQUFpQixHQUFMLEVBQUs7QUFBQTs7QUFDM0IsUUFBSXhDLE1BQU0sR0FBRyxLQUFLdUMsS0FBTCxDQUFXQyxTQUFYLENBQWI7QUFDQSxTQUFLekMsTUFBTCxDQUFZNkMsV0FBWixDQUF3QixJQUF4QixFQUE4QjVDLE1BQTlCO0FBQ0EsV0FBT0EsTUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O1NBWUE2QyxXLEdBQUEsdUJBQXVCO0FBQ3JCLFFBQUksS0FBSzlDLE1BQVQsRUFBaUI7QUFBQSx3Q0FESCtDLEtBQ0c7QUFESEEsUUFBQUEsS0FDRztBQUFBOztBQUNmLGdDQUFpQkEsS0FBakIsNEJBQXdCO0FBQW5CLFlBQUliLElBQUksYUFBUjtBQUNILGFBQUtsQyxNQUFMLENBQVkyQyxZQUFaLENBQXlCLElBQXpCLEVBQStCVCxJQUEvQjtBQUNEOztBQUVELFdBQUtDLE1BQUw7QUFDRDs7QUFFRCxXQUFPLElBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O1NBY0FhLEksR0FBQSxnQkFBUTtBQUNOLFFBQUksQ0FBQyxLQUFLaEQsTUFBVixFQUFrQixPQUFPcUMsU0FBUDtBQUNsQixRQUFJWSxLQUFLLEdBQUcsS0FBS2pELE1BQUwsQ0FBWWlELEtBQVosQ0FBa0IsSUFBbEIsQ0FBWjtBQUNBLFdBQU8sS0FBS2pELE1BQUwsQ0FBWStDLEtBQVosQ0FBa0JFLEtBQUssR0FBRyxDQUExQixDQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7U0FZQUMsSSxHQUFBLGdCQUFRO0FBQ04sUUFBSSxDQUFDLEtBQUtsRCxNQUFWLEVBQWtCLE9BQU9xQyxTQUFQO0FBQ2xCLFFBQUlZLEtBQUssR0FBRyxLQUFLakQsTUFBTCxDQUFZaUQsS0FBWixDQUFrQixJQUFsQixDQUFaO0FBQ0EsV0FBTyxLQUFLakQsTUFBTCxDQUFZK0MsS0FBWixDQUFrQkUsS0FBSyxHQUFHLENBQTFCLENBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7OztTQVlBRSxNLEdBQUEsZ0JBQVFDLEdBQVIsRUFBYTtBQUNYLFNBQUtwRCxNQUFMLENBQVkyQyxZQUFaLENBQXlCLElBQXpCLEVBQStCUyxHQUEvQjtBQUNBLFdBQU8sSUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O1NBWUFDLEssR0FBQSxlQUFPRCxHQUFQLEVBQVk7QUFDVixTQUFLcEQsTUFBTCxDQUFZNkMsV0FBWixDQUF3QixJQUF4QixFQUE4Qk8sR0FBOUI7QUFDQSxXQUFPLElBQVA7QUFDRCxHOztTQUVERSxNLEdBQUEsa0JBQVU7QUFDUixRQUFJQyxLQUFLLEdBQUcsRUFBWjs7QUFFQSxTQUFLLElBQUlwQyxJQUFULElBQWlCLElBQWpCLEVBQXVCO0FBQ3JCLFVBQUksQ0FBQyxLQUFLZixjQUFMLENBQW9CZSxJQUFwQixDQUFMLEVBQWdDO0FBQ2hDLFVBQUlBLElBQUksS0FBSyxRQUFiLEVBQXVCO0FBQ3ZCLFVBQUlkLEtBQUssR0FBRyxLQUFLYyxJQUFMLENBQVo7O0FBRUEsVUFBSWQsS0FBSyxZQUFZRSxLQUFyQixFQUE0QjtBQUMxQmdELFFBQUFBLEtBQUssQ0FBQ3BDLElBQUQsQ0FBTCxHQUFjZCxLQUFLLENBQUNHLEdBQU4sQ0FBVSxVQUFBTCxDQUFDLEVBQUk7QUFDM0IsY0FBSSxPQUFPQSxDQUFQLEtBQWEsUUFBYixJQUF5QkEsQ0FBQyxDQUFDbUQsTUFBL0IsRUFBdUM7QUFDckMsbUJBQU9uRCxDQUFDLENBQUNtRCxNQUFGLEVBQVA7QUFDRCxXQUZELE1BRU87QUFDTCxtQkFBT25ELENBQVA7QUFDRDtBQUNGLFNBTmEsQ0FBZDtBQU9ELE9BUkQsTUFRTyxJQUFJLE9BQU9FLEtBQVAsS0FBaUIsUUFBakIsSUFBNkJBLEtBQUssQ0FBQ2lELE1BQXZDLEVBQStDO0FBQ3BEQyxRQUFBQSxLQUFLLENBQUNwQyxJQUFELENBQUwsR0FBY2QsS0FBSyxDQUFDaUQsTUFBTixFQUFkO0FBQ0QsT0FGTSxNQUVBO0FBQ0xDLFFBQUFBLEtBQUssQ0FBQ3BDLElBQUQsQ0FBTCxHQUFjZCxLQUFkO0FBQ0Q7QUFDRjs7QUFFRCxXQUFPa0QsS0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBa0JBQyxHLEdBQUEsYUFBS0MsSUFBTCxFQUFXQyxXQUFYLEVBQXdCO0FBQ3RCLFFBQUlDLEdBQUcsR0FBRyxJQUFJQyxvQkFBSixFQUFWO0FBQ0EsV0FBT0QsR0FBRyxDQUFDSCxHQUFKLENBQVEsSUFBUixFQUFjQyxJQUFkLEVBQW9CQyxXQUFwQixDQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7OztTQVFBRyxJLEdBQUEsZ0JBQVE7QUFDTixRQUFJOUIsTUFBTSxHQUFHLElBQWI7O0FBQ0EsV0FBT0EsTUFBTSxDQUFDL0IsTUFBZDtBQUFzQitCLE1BQUFBLE1BQU0sR0FBR0EsTUFBTSxDQUFDL0IsTUFBaEI7QUFBdEI7O0FBQ0EsV0FBTytCLE1BQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7OztTQVlBK0IsUyxHQUFBLG1CQUFXQyxXQUFYLEVBQXdCO0FBQ3RCLFdBQU8sS0FBS25ELElBQUwsQ0FBVXVDLE1BQWpCO0FBQ0EsV0FBTyxLQUFLdkMsSUFBTCxDQUFVeUMsS0FBakI7QUFDQSxRQUFJLENBQUNVLFdBQUwsRUFBa0IsT0FBTyxLQUFLbkQsSUFBTCxDQUFVb0QsT0FBakI7QUFDbkIsRzs7U0FFREMsYyxHQUFBLHdCQUFnQmhCLEtBQWhCLEVBQXVCO0FBQ3JCLFFBQUlpQixNQUFNLEdBQUcsS0FBSzVCLFFBQUwsRUFBYjtBQUNBLFFBQUlWLE1BQU0sR0FBRyxLQUFLTCxNQUFMLENBQVk0QyxLQUFaLENBQWtCdkMsTUFBL0I7QUFDQSxRQUFJRCxJQUFJLEdBQUcsS0FBS0osTUFBTCxDQUFZNEMsS0FBWixDQUFrQnhDLElBQTdCOztBQUVBLFNBQUssSUFBSXhCLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUc4QyxLQUFwQixFQUEyQjlDLENBQUMsRUFBNUIsRUFBZ0M7QUFDOUIsVUFBSStELE1BQU0sQ0FBQy9ELENBQUQsQ0FBTixLQUFjLElBQWxCLEVBQXdCO0FBQ3RCeUIsUUFBQUEsTUFBTSxHQUFHLENBQVQ7QUFDQUQsUUFBQUEsSUFBSSxJQUFJLENBQVI7QUFDRCxPQUhELE1BR087QUFDTEMsUUFBQUEsTUFBTSxJQUFJLENBQVY7QUFDRDtBQUNGOztBQUVELFdBQU87QUFBRUQsTUFBQUEsSUFBSSxFQUFKQSxJQUFGO0FBQVFDLE1BQUFBLE1BQU0sRUFBTkE7QUFBUixLQUFQO0FBQ0QsRzs7U0FFREgsVSxHQUFBLG9CQUFZSCxJQUFaLEVBQWtCO0FBQ2hCLFFBQUlFLEdBQUcsR0FBRyxLQUFLRCxNQUFMLENBQVk0QyxLQUF0Qjs7QUFDQSxRQUFJN0MsSUFBSSxDQUFDMkIsS0FBVCxFQUFnQjtBQUNkekIsTUFBQUEsR0FBRyxHQUFHLEtBQUt5QyxjQUFMLENBQW9CM0MsSUFBSSxDQUFDMkIsS0FBekIsQ0FBTjtBQUNELEtBRkQsTUFFTyxJQUFJM0IsSUFBSSxDQUFDOEMsSUFBVCxFQUFlO0FBQ3BCLFVBQUluQixLQUFLLEdBQUcsS0FBS1gsUUFBTCxHQUFnQitCLE9BQWhCLENBQXdCL0MsSUFBSSxDQUFDOEMsSUFBN0IsQ0FBWjtBQUNBLFVBQUluQixLQUFLLEtBQUssQ0FBQyxDQUFmLEVBQWtCekIsR0FBRyxHQUFHLEtBQUt5QyxjQUFMLENBQW9CaEIsS0FBcEIsQ0FBTjtBQUNuQjs7QUFDRCxXQUFPekIsR0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7QUFVQTs7Ozs7Ozs7QUFRQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUFtQ2FkLEk7QUFFZjs7Ozs7O0FBTUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ3NzU3ludGF4RXJyb3IgZnJvbSAnLi9jc3Mtc3ludGF4LWVycm9yJ1xuaW1wb3J0IFN0cmluZ2lmaWVyIGZyb20gJy4vc3RyaW5naWZpZXInXG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5J1xuXG5mdW5jdGlvbiBjbG9uZU5vZGUgKG9iaiwgcGFyZW50KSB7XG4gIGxldCBjbG9uZWQgPSBuZXcgb2JqLmNvbnN0cnVjdG9yKClcblxuICBmb3IgKGxldCBpIGluIG9iaikge1xuICAgIGlmICghb2JqLmhhc093blByb3BlcnR5KGkpKSBjb250aW51ZVxuICAgIGxldCB2YWx1ZSA9IG9ialtpXVxuICAgIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlXG5cbiAgICBpZiAoaSA9PT0gJ3BhcmVudCcgJiYgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChwYXJlbnQpIGNsb25lZFtpXSA9IHBhcmVudFxuICAgIH0gZWxzZSBpZiAoaSA9PT0gJ3NvdXJjZScpIHtcbiAgICAgIGNsb25lZFtpXSA9IHZhbHVlXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBjbG9uZWRbaV0gPSB2YWx1ZS5tYXAoaiA9PiBjbG9uZU5vZGUoaiwgY2xvbmVkKSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHR5cGUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB2YWx1ZSA9IGNsb25lTm9kZSh2YWx1ZSlcbiAgICAgIGNsb25lZFtpXSA9IHZhbHVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNsb25lZFxufVxuXG4vKipcbiAqIEFsbCBub2RlIGNsYXNzZXMgaW5oZXJpdCB0aGUgZm9sbG93aW5nIGNvbW1vbiBtZXRob2RzLlxuICpcbiAqIEBhYnN0cmFjdFxuICovXG5jbGFzcyBOb2RlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbZGVmYXVsdHNdIFZhbHVlIGZvciBub2RlIHByb3BlcnRpZXMuXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMgPSB7IH0pIHtcbiAgICB0aGlzLnJhd3MgPSB7IH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiBkZWZhdWx0cyAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIGRlZmF1bHRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1Bvc3RDU1Mgbm9kZXMgY29uc3RydWN0b3IgYWNjZXB0cyBvYmplY3QsIG5vdCAnICtcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShkZWZhdWx0cylcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBuYW1lIGluIGRlZmF1bHRzKSB7XG4gICAgICB0aGlzW25hbWVdID0gZGVmYXVsdHNbbmFtZV1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGBDc3NTeW50YXhFcnJvcmAgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgb3JpZ2luYWwgcG9zaXRpb25cbiAgICogb2YgdGhlIG5vZGUgaW4gdGhlIHNvdXJjZSwgc2hvd2luZyBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBhbmQgYWxzb1xuICAgKiBhIHNtYWxsIGV4Y2VycHQgdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcuXG4gICAqXG4gICAqIElmIHByZXNlbnQsIGFuIGlucHV0IHNvdXJjZSBtYXAgd2lsbCBiZSB1c2VkIHRvIGdldCB0aGUgb3JpZ2luYWwgcG9zaXRpb25cbiAgICogb2YgdGhlIHNvdXJjZSwgZXZlbiBmcm9tIGEgcHJldmlvdXMgY29tcGlsYXRpb24gc3RlcFxuICAgKiAoZS5nLiwgZnJvbSBTYXNzIGNvbXBpbGF0aW9uKS5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgcHJvZHVjZXMgdmVyeSB1c2VmdWwgZXJyb3IgbWVzc2FnZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlICAgICBFcnJvciBkZXNjcmlwdGlvbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRzXSAgICAgIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLnBsdWdpbiBQbHVnaW4gbmFtZSB0aGF0IGNyZWF0ZWQgdGhpcyBlcnJvci5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3RDU1Mgd2lsbCBzZXQgaXQgYXV0b21hdGljYWxseS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMud29yZCAgIEEgd29yZCBpbnNpZGUgYSBub2Rl4oCZcyBzdHJpbmcgdGhhdCBzaG91bGRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIGVycm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0cy5pbmRleCAgQW4gaW5kZXggaW5zaWRlIGEgbm9kZeKAmXMgc3RyaW5nIHRoYXQgc2hvdWxkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWdobGlnaHRlZCBhcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvci5cbiAgICpcbiAgICogQHJldHVybiB7Q3NzU3ludGF4RXJyb3J9IEVycm9yIG9iamVjdCB0byB0aHJvdyBpdC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogaWYgKCF2YXJpYWJsZXNbbmFtZV0pIHtcbiAgICogICB0aHJvdyBkZWNsLmVycm9yKCdVbmtub3duIHZhcmlhYmxlICcgKyBuYW1lLCB7IHdvcmQ6IG5hbWUgfSlcbiAgICogICAvLyBDc3NTeW50YXhFcnJvcjogcG9zdGNzcy12YXJzOmEuc2Fzczo0OjM6IFVua25vd24gdmFyaWFibGUgJGJsYWNrXG4gICAqICAgLy8gICBjb2xvcjogJGJsYWNrXG4gICAqICAgLy8gYVxuICAgKiAgIC8vICAgICAgICAgIF5cbiAgICogICAvLyAgIGJhY2tncm91bmQ6IHdoaXRlXG4gICAqIH1cbiAgICovXG4gIGVycm9yIChtZXNzYWdlLCBvcHRzID0geyB9KSB7XG4gICAgaWYgKHRoaXMuc291cmNlKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3NpdGlvbkJ5KG9wdHMpXG4gICAgICByZXR1cm4gdGhpcy5zb3VyY2UuaW5wdXQuZXJyb3IobWVzc2FnZSwgcG9zLmxpbmUsIHBvcy5jb2x1bW4sIG9wdHMpXG4gICAgfVxuICAgIHJldHVybiBuZXcgQ3NzU3ludGF4RXJyb3IobWVzc2FnZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgZm9yIHtAbGluayBSZXN1bHQjd2Fybn0uXG4gICAqXG4gICAqIEBwYXJhbSB7UmVzdWx0fSByZXN1bHQgICAgICBUaGUge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2VcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lsbCByZWNlaXZlIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgICAgICAgV2FybmluZyBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gW29wdHNdICAgICAgT3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5wbHVnaW4gUGx1Z2luIG5hbWUgdGhhdCBjcmVhdGVkIHRoaXMgd2FybmluZy5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3RDU1Mgd2lsbCBzZXQgaXQgYXV0b21hdGljYWxseS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMud29yZCAgIEEgd29yZCBpbnNpZGUgYSBub2Rl4oCZcyBzdHJpbmcgdGhhdCBzaG91bGRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIHdhcm5pbmcuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICBBbiBpbmRleCBpbnNpZGUgYSBub2Rl4oCZcyBzdHJpbmcgdGhhdCBzaG91bGRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIHdhcm5pbmcuXG4gICAqXG4gICAqIEByZXR1cm4ge1dhcm5pbmd9IENyZWF0ZWQgd2FybmluZyBvYmplY3QuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHBsdWdpbiA9IHBvc3Rjc3MucGx1Z2luKCdwb3N0Y3NzLWRlcHJlY2F0ZWQnLCAoKSA9PiB7XG4gICAqICAgcmV0dXJuIChyb290LCByZXN1bHQpID0+IHtcbiAgICogICAgIHJvb3Qud2Fsa0RlY2xzKCdiYWQnLCBkZWNsID0+IHtcbiAgICogICAgICAgZGVjbC53YXJuKHJlc3VsdCwgJ0RlcHJlY2F0ZWQgcHJvcGVydHkgYmFkJylcbiAgICogICAgIH0pXG4gICAqICAgfVxuICAgKiB9KVxuICAgKi9cbiAgd2FybiAocmVzdWx0LCB0ZXh0LCBvcHRzKSB7XG4gICAgbGV0IGRhdGEgPSB7IG5vZGU6IHRoaXMgfVxuICAgIGZvciAobGV0IGkgaW4gb3B0cykgZGF0YVtpXSA9IG9wdHNbaV1cbiAgICByZXR1cm4gcmVzdWx0Lndhcm4odGV4dCwgZGF0YSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBub2RlIGZyb20gaXRzIHBhcmVudCBhbmQgY2xlYW5zIHRoZSBwYXJlbnQgcHJvcGVydGllc1xuICAgKiBmcm9tIHRoZSBub2RlIGFuZCBpdHMgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGlmIChkZWNsLnByb3AubWF0Y2goL14td2Via2l0LS8pKSB7XG4gICAqICAgZGVjbC5yZW1vdmUoKVxuICAgKiB9XG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IE5vZGUgdG8gbWFrZSBjYWxscyBjaGFpbi5cbiAgICovXG4gIHJlbW92ZSAoKSB7XG4gICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICB0aGlzLnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKVxuICAgIH1cbiAgICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZFxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIENTUyBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ2lmaWVyfHN5bnRheH0gW3N0cmluZ2lmaWVyXSBBIHN5bnRheCB0byB1c2VcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc3RyaW5nIGdlbmVyYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gQ1NTIHN0cmluZyBvZiB0aGlzIG5vZGUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHBvc3Rjc3MucnVsZSh7IHNlbGVjdG9yOiAnYScgfSkudG9TdHJpbmcoKSAvLz0+IFwiYSB7fVwiXG4gICAqL1xuICB0b1N0cmluZyAoc3RyaW5naWZpZXIgPSBzdHJpbmdpZnkpIHtcbiAgICBpZiAoc3RyaW5naWZpZXIuc3RyaW5naWZ5KSBzdHJpbmdpZmllciA9IHN0cmluZ2lmaWVyLnN0cmluZ2lmeVxuICAgIGxldCByZXN1bHQgPSAnJ1xuICAgIHN0cmluZ2lmaWVyKHRoaXMsIGkgPT4ge1xuICAgICAgcmVzdWx0ICs9IGlcbiAgICB9KVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGV4YWN0IGNsb25lIG9mIHRoZSBub2RlLlxuICAgKlxuICAgKiBUaGUgcmVzdWx0aW5nIGNsb25lZCBub2RlIGFuZCBpdHMgKGNsb25lZCkgY2hpbGRyZW4gd2lsbCByZXRhaW5cbiAgICogY29kZSBzdHlsZSBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gW292ZXJyaWRlc10gTmV3IHByb3BlcnRpZXMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNsb25lLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBkZWNsLnJhd3MuYmVmb3JlICAgIC8vPT4gXCJcXG4gIFwiXG4gICAqIGNvbnN0IGNsb25lZCA9IGRlY2wuY2xvbmUoeyBwcm9wOiAnLW1vei0nICsgZGVjbC5wcm9wIH0pXG4gICAqIGNsb25lZC5yYXdzLmJlZm9yZSAgLy89PiBcIlxcbiAgXCJcbiAgICogY2xvbmVkLnRvU3RyaW5nKCkgICAvLz0+IC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwKVxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBDbG9uZSBvZiB0aGUgbm9kZS5cbiAgICovXG4gIGNsb25lIChvdmVycmlkZXMgPSB7IH0pIHtcbiAgICBsZXQgY2xvbmVkID0gY2xvbmVOb2RlKHRoaXMpXG4gICAgZm9yIChsZXQgbmFtZSBpbiBvdmVycmlkZXMpIHtcbiAgICAgIGNsb25lZFtuYW1lXSA9IG92ZXJyaWRlc1tuYW1lXVxuICAgIH1cbiAgICByZXR1cm4gY2xvbmVkXG4gIH1cblxuICAvKipcbiAgICogU2hvcnRjdXQgdG8gY2xvbmUgdGhlIG5vZGUgYW5kIGluc2VydCB0aGUgcmVzdWx0aW5nIGNsb25lZCBub2RlXG4gICAqIGJlZm9yZSB0aGUgY3VycmVudCBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gW292ZXJyaWRlc10gTWV3IHByb3BlcnRpZXMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNsb25lLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBkZWNsLmNsb25lQmVmb3JlKHsgcHJvcDogJy1tb3otJyArIGRlY2wucHJvcCB9KVxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBOZXcgbm9kZVxuICAgKi9cbiAgY2xvbmVCZWZvcmUgKG92ZXJyaWRlcyA9IHsgfSkge1xuICAgIGxldCBjbG9uZWQgPSB0aGlzLmNsb25lKG92ZXJyaWRlcylcbiAgICB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUodGhpcywgY2xvbmVkKVxuICAgIHJldHVybiBjbG9uZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG9ydGN1dCB0byBjbG9uZSB0aGUgbm9kZSBhbmQgaW5zZXJ0IHRoZSByZXN1bHRpbmcgY2xvbmVkIG5vZGVcbiAgICogYWZ0ZXIgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IFtvdmVycmlkZXNdIE5ldyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGluIHRoZSBjbG9uZS5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gTmV3IG5vZGUuXG4gICAqL1xuICBjbG9uZUFmdGVyIChvdmVycmlkZXMgPSB7IH0pIHtcbiAgICBsZXQgY2xvbmVkID0gdGhpcy5jbG9uZShvdmVycmlkZXMpXG4gICAgdGhpcy5wYXJlbnQuaW5zZXJ0QWZ0ZXIodGhpcywgY2xvbmVkKVxuICAgIHJldHVybiBjbG9uZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnRzIG5vZGUocykgYmVmb3JlIHRoZSBjdXJyZW50IG5vZGUgYW5kIHJlbW92ZXMgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHsuLi5Ob2RlfSBub2RlcyBNb2RlKHMpIHRvIHJlcGxhY2UgY3VycmVudCBvbmUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGlmIChhdHJ1bGUubmFtZSA9PT0gJ21peGluJykge1xuICAgKiAgIGF0cnVsZS5yZXBsYWNlV2l0aChtaXhpblJ1bGVzW2F0cnVsZS5wYXJhbXNdKVxuICAgKiB9XG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IEN1cnJlbnQgbm9kZSB0byBtZXRob2RzIGNoYWluLlxuICAgKi9cbiAgcmVwbGFjZVdpdGggKC4uLm5vZGVzKSB7XG4gICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLCBub2RlKVxuICAgICAgfVxuXG4gICAgICB0aGlzLnJlbW92ZSgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBuZXh0IGNoaWxkIG9mIHRoZSBub2Rl4oCZcyBwYXJlbnQuXG4gICAqIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlIGN1cnJlbnQgbm9kZSBpcyB0aGUgbGFzdCBjaGlsZC5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZXx1bmRlZmluZWR9IE5leHQgbm9kZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogaWYgKGNvbW1lbnQudGV4dCA9PT0gJ2RlbGV0ZSBuZXh0Jykge1xuICAgKiAgIGNvbnN0IG5leHQgPSBjb21tZW50Lm5leHQoKVxuICAgKiAgIGlmIChuZXh0KSB7XG4gICAqICAgICBuZXh0LnJlbW92ZSgpXG4gICAqICAgfVxuICAgKiB9XG4gICAqL1xuICBuZXh0ICgpIHtcbiAgICBpZiAoIXRoaXMucGFyZW50KSByZXR1cm4gdW5kZWZpbmVkXG4gICAgbGV0IGluZGV4ID0gdGhpcy5wYXJlbnQuaW5kZXgodGhpcylcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQubm9kZXNbaW5kZXggKyAxXVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHByZXZpb3VzIGNoaWxkIG9mIHRoZSBub2Rl4oCZcyBwYXJlbnQuXG4gICAqIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlIGN1cnJlbnQgbm9kZSBpcyB0aGUgZmlyc3QgY2hpbGQuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV8dW5kZWZpbmVkfSBQcmV2aW91cyBub2RlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBhbm5vdGF0aW9uID0gZGVjbC5wcmV2KClcbiAgICogaWYgKGFubm90YXRpb24udHlwZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAqICAgcmVhZEFubm90YXRpb24oYW5ub3RhdGlvbi50ZXh0KVxuICAgKiB9XG4gICAqL1xuICBwcmV2ICgpIHtcbiAgICBpZiAoIXRoaXMucGFyZW50KSByZXR1cm4gdW5kZWZpbmVkXG4gICAgbGV0IGluZGV4ID0gdGhpcy5wYXJlbnQuaW5kZXgodGhpcylcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQubm9kZXNbaW5kZXggLSAxXVxuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBuZXcgbm9kZSBiZWZvcmUgY3VycmVudCBub2RlIHRvIGN1cnJlbnQgbm9kZeKAmXMgcGFyZW50LlxuICAgKlxuICAgKiBKdXN0IGFsaWFzIGZvciBgbm9kZS5wYXJlbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIGFkZClgLlxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCBOZXcgbm9kZS5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBkZWNsLmJlZm9yZSgnY29udGVudDogXCJcIicpXG4gICAqL1xuICBiZWZvcmUgKGFkZCkge1xuICAgIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLCBhZGQpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnQgbmV3IG5vZGUgYWZ0ZXIgY3VycmVudCBub2RlIHRvIGN1cnJlbnQgbm9kZeKAmXMgcGFyZW50LlxuICAgKlxuICAgKiBKdXN0IGFsaWFzIGZvciBgbm9kZS5wYXJlbnQuaW5zZXJ0QWZ0ZXIobm9kZSwgYWRkKWAuXG4gICAqXG4gICAqIEBwYXJhbSB7Tm9kZXxvYmplY3R8c3RyaW5nfE5vZGVbXX0gYWRkIE5ldyBub2RlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGRlY2wuYWZ0ZXIoJ2NvbG9yOiBibGFjaycpXG4gICAqL1xuICBhZnRlciAoYWRkKSB7XG4gICAgdGhpcy5wYXJlbnQuaW5zZXJ0QWZ0ZXIodGhpcywgYWRkKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB0b0pTT04gKCkge1xuICAgIGxldCBmaXhlZCA9IHsgfVxuXG4gICAgZm9yIChsZXQgbmFtZSBpbiB0aGlzKSB7XG4gICAgICBpZiAoIXRoaXMuaGFzT3duUHJvcGVydHkobmFtZSkpIGNvbnRpbnVlXG4gICAgICBpZiAobmFtZSA9PT0gJ3BhcmVudCcpIGNvbnRpbnVlXG4gICAgICBsZXQgdmFsdWUgPSB0aGlzW25hbWVdXG5cbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGZpeGVkW25hbWVdID0gdmFsdWUubWFwKGkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgaSA9PT0gJ29iamVjdCcgJiYgaS50b0pTT04pIHtcbiAgICAgICAgICAgIHJldHVybiBpLnRvSlNPTigpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLnRvSlNPTikge1xuICAgICAgICBmaXhlZFtuYW1lXSA9IHZhbHVlLnRvSlNPTigpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaXhlZFtuYW1lXSA9IHZhbHVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpeGVkXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHtAbGluayBOb2RlI3Jhd3N9IHZhbHVlLiBJZiB0aGUgbm9kZSBpcyBtaXNzaW5nXG4gICAqIHRoZSBjb2RlIHN0eWxlIHByb3BlcnR5IChiZWNhdXNlIHRoZSBub2RlIHdhcyBtYW51YWxseSBidWlsdCBvciBjbG9uZWQpLFxuICAgKiBQb3N0Q1NTIHdpbGwgdHJ5IHRvIGF1dG9kZXRlY3QgdGhlIGNvZGUgc3R5bGUgcHJvcGVydHkgYnkgbG9va2luZ1xuICAgKiBhdCBvdGhlciBub2RlcyBpbiB0aGUgdHJlZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb3AgICAgICAgICAgTmFtZSBvZiBjb2RlIHN0eWxlIHByb3BlcnR5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2RlZmF1bHRUeXBlXSBOYW1lIG9mIGRlZmF1bHQgdmFsdWUsIGl0IGNhbiBiZSBtaXNzZWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIHZhbHVlIGlzIHRoZSBzYW1lIGFzIHByb3AuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgYmFja2dyb3VuZDogd2hpdGUgfScpXG4gICAqIHJvb3Qubm9kZXNbMF0uYXBwZW5kKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSlcbiAgICogcm9vdC5ub2Rlc1swXS5ub2Rlc1sxXS5yYXdzLmJlZm9yZSAgIC8vPT4gdW5kZWZpbmVkXG4gICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMV0ucmF3KCdiZWZvcmUnKSAvLz0+ICcgJ1xuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IENvZGUgc3R5bGUgdmFsdWUuXG4gICAqL1xuICByYXcgKHByb3AsIGRlZmF1bHRUeXBlKSB7XG4gICAgbGV0IHN0ciA9IG5ldyBTdHJpbmdpZmllcigpXG4gICAgcmV0dXJuIHN0ci5yYXcodGhpcywgcHJvcCwgZGVmYXVsdFR5cGUpXG4gIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIFJvb3QgaW5zdGFuY2Ugb2YgdGhlIG5vZGXigJlzIHRyZWUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMF0ucm9vdCgpID09PSByb290XG4gICAqXG4gICAqIEByZXR1cm4ge1Jvb3R9IFJvb3QgcGFyZW50LlxuICAgKi9cbiAgcm9vdCAoKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRoaXNcbiAgICB3aGlsZSAocmVzdWx0LnBhcmVudCkgcmVzdWx0ID0gcmVzdWx0LnBhcmVudFxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgY29kZSBzdHlsZSBwcm9wZXJ0aWVzIGZvciB0aGUgbm9kZSBhbmQgaXRzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtrZWVwQmV0d2Vlbl0gS2VlcCB0aGUgcmF3cy5iZXR3ZWVuIHN5bWJvbHMuXG4gICAqXG4gICAqIEByZXR1cm4ge3VuZGVmaW5lZH1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogbm9kZS5yYXdzLmJlZm9yZSAgLy89PiAnICdcbiAgICogbm9kZS5jbGVhblJhd3MoKVxuICAgKiBub2RlLnJhd3MuYmVmb3JlICAvLz0+IHVuZGVmaW5lZFxuICAgKi9cbiAgY2xlYW5SYXdzIChrZWVwQmV0d2Vlbikge1xuICAgIGRlbGV0ZSB0aGlzLnJhd3MuYmVmb3JlXG4gICAgZGVsZXRlIHRoaXMucmF3cy5hZnRlclxuICAgIGlmICgha2VlcEJldHdlZW4pIGRlbGV0ZSB0aGlzLnJhd3MuYmV0d2VlblxuICB9XG5cbiAgcG9zaXRpb25JbnNpZGUgKGluZGV4KSB7XG4gICAgbGV0IHN0cmluZyA9IHRoaXMudG9TdHJpbmcoKVxuICAgIGxldCBjb2x1bW4gPSB0aGlzLnNvdXJjZS5zdGFydC5jb2x1bW5cbiAgICBsZXQgbGluZSA9IHRoaXMuc291cmNlLnN0YXJ0LmxpbmVcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kZXg7IGkrKykge1xuICAgICAgaWYgKHN0cmluZ1tpXSA9PT0gJ1xcbicpIHtcbiAgICAgICAgY29sdW1uID0gMVxuICAgICAgICBsaW5lICs9IDFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbHVtbiArPSAxXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbGluZSwgY29sdW1uIH1cbiAgfVxuXG4gIHBvc2l0aW9uQnkgKG9wdHMpIHtcbiAgICBsZXQgcG9zID0gdGhpcy5zb3VyY2Uuc3RhcnRcbiAgICBpZiAob3B0cy5pbmRleCkge1xuICAgICAgcG9zID0gdGhpcy5wb3NpdGlvbkluc2lkZShvcHRzLmluZGV4KVxuICAgIH0gZWxzZSBpZiAob3B0cy53b3JkKSB7XG4gICAgICBsZXQgaW5kZXggPSB0aGlzLnRvU3RyaW5nKCkuaW5kZXhPZihvcHRzLndvcmQpXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSBwb3MgPSB0aGlzLnBvc2l0aW9uSW5zaWRlKGluZGV4KVxuICAgIH1cbiAgICByZXR1cm4gcG9zXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gdHlwZSBTdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBub2Rl4oCZcyB0eXBlLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGUgdmFsdWVzIGFyZSBgcm9vdGAsIGBhdHJ1bGVgLCBgcnVsZWAsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBgZGVjbGAsIG9yIGBjb21tZW50YC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSkudHlwZSAvLz0+ICdkZWNsJ1xuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAqIEBtZW1iZXIge0NvbnRhaW5lcn0gcGFyZW50IFRoZSBub2Rl4oCZcyBwYXJlbnQgbm9kZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC5ub2Rlc1swXS5wYXJlbnQgPT09IHJvb3RcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBOb2RlI1xuICAgKiBAbWVtYmVyIHtzb3VyY2V9IHNvdXJjZSBUaGUgaW5wdXQgc291cmNlIG9mIHRoZSBub2RlLlxuICAgKlxuICAgKiBUaGUgcHJvcGVydHkgaXMgdXNlZCBpbiBzb3VyY2UgbWFwIGdlbmVyYXRpb24uXG4gICAqXG4gICAqIElmIHlvdSBjcmVhdGUgYSBub2RlIG1hbnVhbGx5IChlLmcuLCB3aXRoIGBwb3N0Y3NzLmRlY2woKWApLFxuICAgKiB0aGF0IG5vZGUgd2lsbCBub3QgaGF2ZSBhIGBzb3VyY2VgIHByb3BlcnR5IGFuZCB3aWxsIGJlIGFic2VudFxuICAgKiBmcm9tIHRoZSBzb3VyY2UgbWFwLiBGb3IgdGhpcyByZWFzb24sIHRoZSBwbHVnaW4gZGV2ZWxvcGVyIHNob3VsZFxuICAgKiBjb25zaWRlciBjbG9uaW5nIG5vZGVzIHRvIGNyZWF0ZSBuZXcgb25lcyAoaW4gd2hpY2ggY2FzZSB0aGUgbmV3IG5vZGXigJlzXG4gICAqIHNvdXJjZSB3aWxsIHJlZmVyZW5jZSB0aGUgb3JpZ2luYWwsIGNsb25lZCBub2RlKSBvciBzZXR0aW5nXG4gICAqIHRoZSBgc291cmNlYCBwcm9wZXJ0eSBtYW51YWxseS5cbiAgICpcbiAgICogYGBganNcbiAgICogLy8gQmFkXG4gICAqIGNvbnN0IHByZWZpeGVkID0gcG9zdGNzcy5kZWNsKHtcbiAgICogICBwcm9wOiAnLW1vei0nICsgZGVjbC5wcm9wLFxuICAgKiAgIHZhbHVlOiBkZWNsLnZhbHVlXG4gICAqIH0pXG4gICAqXG4gICAqIC8vIEdvb2RcbiAgICogY29uc3QgcHJlZml4ZWQgPSBkZWNsLmNsb25lKHsgcHJvcDogJy1tb3otJyArIGRlY2wucHJvcCB9KVxuICAgKiBgYGBcbiAgICpcbiAgICogYGBganNcbiAgICogaWYgKGF0cnVsZS5uYW1lID09PSAnYWRkLWxpbmsnKSB7XG4gICAqICAgY29uc3QgcnVsZSA9IHBvc3Rjc3MucnVsZSh7IHNlbGVjdG9yOiAnYScsIHNvdXJjZTogYXRydWxlLnNvdXJjZSB9KVxuICAgKiAgIGF0cnVsZS5wYXJlbnQuaW5zZXJ0QmVmb3JlKGF0cnVsZSwgcnVsZSlcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbC5zb3VyY2UuaW5wdXQuZnJvbSAvLz0+ICcvaG9tZS9haS9hLnNhc3MnXG4gICAqIGRlY2wuc291cmNlLnN0YXJ0ICAgICAgLy89PiB7IGxpbmU6IDEwLCBjb2x1bW46IDIgfVxuICAgKiBkZWNsLnNvdXJjZS5lbmQgICAgICAgIC8vPT4geyBsaW5lOiAxMCwgY29sdW1uOiAxMiB9XG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgTm9kZSNcbiAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAqXG4gICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAqXG4gICAqICogYGJlZm9yZWA6IHRoZSBzcGFjZSBzeW1ib2xzIGJlZm9yZSB0aGUgbm9kZS4gSXQgYWxzbyBzdG9yZXMgYCpgXG4gICAqICAgYW5kIGBfYCBzeW1ib2xzIGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gKElFIGhhY2spLlxuICAgKiAqIGBhZnRlcmA6IHRoZSBzcGFjZSBzeW1ib2xzIGFmdGVyIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSBub2RlXG4gICAqICAgdG8gdGhlIGVuZCBvZiB0aGUgbm9kZS5cbiAgICogKiBgYmV0d2VlbmA6IHRoZSBzeW1ib2xzIGJldHdlZW4gdGhlIHByb3BlcnR5IGFuZCB2YWx1ZVxuICAgKiAgIGZvciBkZWNsYXJhdGlvbnMsIHNlbGVjdG9yIGFuZCBge2AgZm9yIHJ1bGVzLCBvciBsYXN0IHBhcmFtZXRlclxuICAgKiAgIGFuZCBge2AgZm9yIGF0LXJ1bGVzLlxuICAgKiAqIGBzZW1pY29sb25gOiBjb250YWlucyB0cnVlIGlmIHRoZSBsYXN0IGNoaWxkIGhhc1xuICAgKiAgIGFuIChvcHRpb25hbCkgc2VtaWNvbG9uLlxuICAgKiAqIGBhZnRlck5hbWVgOiB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgYXQtcnVsZSBuYW1lIGFuZCBpdHMgcGFyYW1ldGVycy5cbiAgICogKiBgbGVmdGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gYC8qYCBhbmQgdGhlIGNvbW1lbnTigJlzIHRleHQuXG4gICAqICogYHJpZ2h0YDogdGhlIHNwYWNlIHN5bWJvbHMgYmV0d2VlbiB0aGUgY29tbWVudOKAmXMgdGV4dFxuICAgKiAgIGFuZCA8Y29kZT4qJiM0Nzs8L2NvZGU+LlxuICAgKiAqIGBpbXBvcnRhbnRgOiB0aGUgY29udGVudCBvZiB0aGUgaW1wb3J0YW50IHN0YXRlbWVudCxcbiAgICogICBpZiBpdCBpcyBub3QganVzdCBgIWltcG9ydGFudGAuXG4gICAqXG4gICAqIFBvc3RDU1MgY2xlYW5zIHNlbGVjdG9ycywgZGVjbGFyYXRpb24gdmFsdWVzIGFuZCBhdC1ydWxlIHBhcmFtZXRlcnNcbiAgICogZnJvbSBjb21tZW50cyBhbmQgZXh0cmEgc3BhY2VzLCBidXQgaXQgc3RvcmVzIG9yaWdpbiBjb250ZW50IGluIHJhd3NcbiAgICogcHJvcGVydGllcy4gQXMgc3VjaCwgaWYgeW91IGRvbuKAmXQgY2hhbmdlIGEgZGVjbGFyYXRpb27igJlzIHZhbHVlLFxuICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2Ege1xcbiAgY29sb3I6YmxhY2tcXG59JylcbiAgICogcm9vdC5maXJzdC5maXJzdC5yYXdzIC8vPT4geyBiZWZvcmU6ICdcXG4gICcsIGJldHdlZW46ICc6JyB9XG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBOb2RlXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gcG9zaXRpb25cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsaW5lICAgU291cmNlIGxpbmUgaW4gZmlsZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjb2x1bW4gU291cmNlIGNvbHVtbiBpbiBmaWxlLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gc291cmNlXG4gKiBAcHJvcGVydHkge0lucHV0fSBpbnB1dCAgICB7QGxpbmsgSW5wdXR9IHdpdGggaW5wdXQgZmlsZVxuICogQHByb3BlcnR5IHtwb3NpdGlvbn0gc3RhcnQgVGhlIHN0YXJ0aW5nIHBvc2l0aW9uIG9mIHRoZSBub2Rl4oCZcyBzb3VyY2UuXG4gKiBAcHJvcGVydHkge3Bvc2l0aW9ufSBlbmQgICBUaGUgZW5kaW5nIHBvc2l0aW9uIG9mIHRoZSBub2Rl4oCZcyBzb3VyY2UuXG4gKi9cbiJdLCJmaWxlIjoibm9kZS5qcyJ9
diff --git a/assets/node_modules/postcss/lib/parse.js b/assets/node_modules/postcss/lib/parse.js
deleted file mode 100644
index 99c417e..0000000
--- a/assets/node_modules/postcss/lib/parse.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _parser = _interopRequireDefault(require("./parser"));
-
-var _input = _interopRequireDefault(require("./input"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function parse(css, opts) {
- var input = new _input.default(css, opts);
- var parser = new _parser.default(input);
-
- try {
- parser.parse();
- } catch (e) {
- if (process.env.NODE_ENV !== 'production') {
- if (e.name === 'CssSyntaxError' && opts && opts.from) {
- if (/\.scss$/i.test(opts.from)) {
- e.message += '\nYou tried to parse SCSS with ' + 'the standard CSS parser; ' + 'try again with the postcss-scss parser';
- } else if (/\.sass/i.test(opts.from)) {
- e.message += '\nYou tried to parse Sass with ' + 'the standard CSS parser; ' + 'try again with the postcss-sass parser';
- } else if (/\.less$/i.test(opts.from)) {
- e.message += '\nYou tried to parse Less with ' + 'the standard CSS parser; ' + 'try again with the postcss-less parser';
- }
- }
- }
-
- throw e;
- }
-
- return parser.root;
-}
-
-var _default = parse;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlLmVzNiJdLCJuYW1lcyI6WyJwYXJzZSIsImNzcyIsIm9wdHMiLCJpbnB1dCIsIklucHV0IiwicGFyc2VyIiwiUGFyc2VyIiwiZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm1lc3NhZ2UiLCJyb290Il0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOzs7O0FBRUEsU0FBU0EsS0FBVCxDQUFnQkMsR0FBaEIsRUFBcUJDLElBQXJCLEVBQTJCO0FBQ3pCLE1BQUlDLEtBQUssR0FBRyxJQUFJQyxjQUFKLENBQVVILEdBQVYsRUFBZUMsSUFBZixDQUFaO0FBQ0EsTUFBSUcsTUFBTSxHQUFHLElBQUlDLGVBQUosQ0FBV0gsS0FBWCxDQUFiOztBQUNBLE1BQUk7QUFDRkUsSUFBQUEsTUFBTSxDQUFDTCxLQUFQO0FBQ0QsR0FGRCxDQUVFLE9BQU9PLENBQVAsRUFBVTtBQUNWLFFBQUlDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDLFVBQUlILENBQUMsQ0FBQ0ksSUFBRixLQUFXLGdCQUFYLElBQStCVCxJQUEvQixJQUF1Q0EsSUFBSSxDQUFDVSxJQUFoRCxFQUFzRDtBQUNwRCxZQUFJLFdBQVdDLElBQVgsQ0FBZ0JYLElBQUksQ0FBQ1UsSUFBckIsQ0FBSixFQUFnQztBQUM5QkwsVUFBQUEsQ0FBQyxDQUFDTyxPQUFGLElBQWEsb0NBQ0EsMkJBREEsR0FFQSx3Q0FGYjtBQUdELFNBSkQsTUFJTyxJQUFJLFVBQVVELElBQVYsQ0FBZVgsSUFBSSxDQUFDVSxJQUFwQixDQUFKLEVBQStCO0FBQ3BDTCxVQUFBQSxDQUFDLENBQUNPLE9BQUYsSUFBYSxvQ0FDQSwyQkFEQSxHQUVBLHdDQUZiO0FBR0QsU0FKTSxNQUlBLElBQUksV0FBV0QsSUFBWCxDQUFnQlgsSUFBSSxDQUFDVSxJQUFyQixDQUFKLEVBQWdDO0FBQ3JDTCxVQUFBQSxDQUFDLENBQUNPLE9BQUYsSUFBYSxvQ0FDQSwyQkFEQSxHQUVBLHdDQUZiO0FBR0Q7QUFDRjtBQUNGOztBQUNELFVBQU1QLENBQU47QUFDRDs7QUFFRCxTQUFPRixNQUFNLENBQUNVLElBQWQ7QUFDRDs7ZUFFY2YsSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZXIgZnJvbSAnLi9wYXJzZXInXG5pbXBvcnQgSW5wdXQgZnJvbSAnLi9pbnB1dCdcblxuZnVuY3Rpb24gcGFyc2UgKGNzcywgb3B0cykge1xuICBsZXQgaW5wdXQgPSBuZXcgSW5wdXQoY3NzLCBvcHRzKVxuICBsZXQgcGFyc2VyID0gbmV3IFBhcnNlcihpbnB1dClcbiAgdHJ5IHtcbiAgICBwYXJzZXIucGFyc2UoKVxuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChlLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcicgJiYgb3B0cyAmJiBvcHRzLmZyb20pIHtcbiAgICAgICAgaWYgKC9cXC5zY3NzJC9pLnRlc3Qob3B0cy5mcm9tKSkge1xuICAgICAgICAgIGUubWVzc2FnZSArPSAnXFxuWW91IHRyaWVkIHRvIHBhcnNlIFNDU1Mgd2l0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzdGFuZGFyZCBDU1MgcGFyc2VyOyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgJ3RyeSBhZ2FpbiB3aXRoIHRoZSBwb3N0Y3NzLXNjc3MgcGFyc2VyJ1xuICAgICAgICB9IGVsc2UgaWYgKC9cXC5zYXNzL2kudGVzdChvcHRzLmZyb20pKSB7XG4gICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgU2FzcyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3Mtc2FzcyBwYXJzZXInXG4gICAgICAgIH0gZWxzZSBpZiAoL1xcLmxlc3MkL2kudGVzdChvcHRzLmZyb20pKSB7XG4gICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgTGVzcyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3MtbGVzcyBwYXJzZXInXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgZVxuICB9XG5cbiAgcmV0dXJuIHBhcnNlci5yb290XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBhcnNlXG4iXSwiZmlsZSI6InBhcnNlLmpzIn0=
diff --git a/assets/node_modules/postcss/lib/parser.js b/assets/node_modules/postcss/lib/parser.js
deleted file mode 100644
index 74bdcf0..0000000
--- a/assets/node_modules/postcss/lib/parser.js
+++ /dev/null
@@ -1,611 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _declaration = _interopRequireDefault(require("./declaration"));
-
-var _tokenize = _interopRequireDefault(require("./tokenize"));
-
-var _comment = _interopRequireDefault(require("./comment"));
-
-var _atRule = _interopRequireDefault(require("./at-rule"));
-
-var _root = _interopRequireDefault(require("./root"));
-
-var _rule = _interopRequireDefault(require("./rule"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var Parser =
-/*#__PURE__*/
-function () {
- function Parser(input) {
- this.input = input;
- this.root = new _root.default();
- this.current = this.root;
- this.spaces = '';
- this.semicolon = false;
- this.createTokenizer();
- this.root.source = {
- input: input,
- start: {
- line: 1,
- column: 1
- }
- };
- }
-
- var _proto = Parser.prototype;
-
- _proto.createTokenizer = function createTokenizer() {
- this.tokenizer = (0, _tokenize.default)(this.input);
- };
-
- _proto.parse = function parse() {
- var token;
-
- while (!this.tokenizer.endOfFile()) {
- token = this.tokenizer.nextToken();
-
- switch (token[0]) {
- case 'space':
- this.spaces += token[1];
- break;
-
- case ';':
- this.freeSemicolon(token);
- break;
-
- case '}':
- this.end(token);
- break;
-
- case 'comment':
- this.comment(token);
- break;
-
- case 'at-word':
- this.atrule(token);
- break;
-
- case '{':
- this.emptyRule(token);
- break;
-
- default:
- this.other(token);
- break;
- }
- }
-
- this.endFile();
- };
-
- _proto.comment = function comment(token) {
- var node = new _comment.default();
- this.init(node, token[2], token[3]);
- node.source.end = {
- line: token[4],
- column: token[5]
- };
- var text = token[1].slice(2, -2);
-
- if (/^\s*$/.test(text)) {
- node.text = '';
- node.raws.left = text;
- node.raws.right = '';
- } else {
- var match = text.match(/^(\s*)([^]*[^\s])(\s*)$/);
- node.text = match[2];
- node.raws.left = match[1];
- node.raws.right = match[3];
- }
- };
-
- _proto.emptyRule = function emptyRule(token) {
- var node = new _rule.default();
- this.init(node, token[2], token[3]);
- node.selector = '';
- node.raws.between = '';
- this.current = node;
- };
-
- _proto.other = function other(start) {
- var end = false;
- var type = null;
- var colon = false;
- var bracket = null;
- var brackets = [];
- var tokens = [];
- var token = start;
-
- while (token) {
- type = token[0];
- tokens.push(token);
-
- if (type === '(' || type === '[') {
- if (!bracket) bracket = token;
- brackets.push(type === '(' ? ')' : ']');
- } else if (brackets.length === 0) {
- if (type === ';') {
- if (colon) {
- this.decl(tokens);
- return;
- } else {
- break;
- }
- } else if (type === '{') {
- this.rule(tokens);
- return;
- } else if (type === '}') {
- this.tokenizer.back(tokens.pop());
- end = true;
- break;
- } else if (type === ':') {
- colon = true;
- }
- } else if (type === brackets[brackets.length - 1]) {
- brackets.pop();
- if (brackets.length === 0) bracket = null;
- }
-
- token = this.tokenizer.nextToken();
- }
-
- if (this.tokenizer.endOfFile()) end = true;
- if (brackets.length > 0) this.unclosedBracket(bracket);
-
- if (end && colon) {
- while (tokens.length) {
- token = tokens[tokens.length - 1][0];
- if (token !== 'space' && token !== 'comment') break;
- this.tokenizer.back(tokens.pop());
- }
-
- this.decl(tokens);
- } else {
- this.unknownWord(tokens);
- }
- };
-
- _proto.rule = function rule(tokens) {
- tokens.pop();
- var node = new _rule.default();
- this.init(node, tokens[0][2], tokens[0][3]);
- node.raws.between = this.spacesAndCommentsFromEnd(tokens);
- this.raw(node, 'selector', tokens);
- this.current = node;
- };
-
- _proto.decl = function decl(tokens) {
- var node = new _declaration.default();
- this.init(node);
- var last = tokens[tokens.length - 1];
-
- if (last[0] === ';') {
- this.semicolon = true;
- tokens.pop();
- }
-
- if (last[4]) {
- node.source.end = {
- line: last[4],
- column: last[5]
- };
- } else {
- node.source.end = {
- line: last[2],
- column: last[3]
- };
- }
-
- while (tokens[0][0] !== 'word') {
- if (tokens.length === 1) this.unknownWord(tokens);
- node.raws.before += tokens.shift()[1];
- }
-
- node.source.start = {
- line: tokens[0][2],
- column: tokens[0][3]
- };
- node.prop = '';
-
- while (tokens.length) {
- var type = tokens[0][0];
-
- if (type === ':' || type === 'space' || type === 'comment') {
- break;
- }
-
- node.prop += tokens.shift()[1];
- }
-
- node.raws.between = '';
- var token;
-
- while (tokens.length) {
- token = tokens.shift();
-
- if (token[0] === ':') {
- node.raws.between += token[1];
- break;
- } else {
- if (token[0] === 'word' && /\w/.test(token[1])) {
- this.unknownWord([token]);
- }
-
- node.raws.between += token[1];
- }
- }
-
- if (node.prop[0] === '_' || node.prop[0] === '*') {
- node.raws.before += node.prop[0];
- node.prop = node.prop.slice(1);
- }
-
- node.raws.between += this.spacesAndCommentsFromStart(tokens);
- this.precheckMissedSemicolon(tokens);
-
- for (var i = tokens.length - 1; i > 0; i--) {
- token = tokens[i];
-
- if (token[1].toLowerCase() === '!important') {
- node.important = true;
- var string = this.stringFrom(tokens, i);
- string = this.spacesFromEnd(tokens) + string;
- if (string !== ' !important') node.raws.important = string;
- break;
- } else if (token[1].toLowerCase() === 'important') {
- var cache = tokens.slice(0);
- var str = '';
-
- for (var j = i; j > 0; j--) {
- var _type = cache[j][0];
-
- if (str.trim().indexOf('!') === 0 && _type !== 'space') {
- break;
- }
-
- str = cache.pop()[1] + str;
- }
-
- if (str.trim().indexOf('!') === 0) {
- node.important = true;
- node.raws.important = str;
- tokens = cache;
- }
- }
-
- if (token[0] !== 'space' && token[0] !== 'comment') {
- break;
- }
- }
-
- this.raw(node, 'value', tokens);
- if (node.value.indexOf(':') !== -1) this.checkMissedSemicolon(tokens);
- };
-
- _proto.atrule = function atrule(token) {
- var node = new _atRule.default();
- node.name = token[1].slice(1);
-
- if (node.name === '') {
- this.unnamedAtrule(node, token);
- }
-
- this.init(node, token[2], token[3]);
- var prev;
- var shift;
- var last = false;
- var open = false;
- var params = [];
-
- while (!this.tokenizer.endOfFile()) {
- token = this.tokenizer.nextToken();
-
- if (token[0] === ';') {
- node.source.end = {
- line: token[2],
- column: token[3]
- };
- this.semicolon = true;
- break;
- } else if (token[0] === '{') {
- open = true;
- break;
- } else if (token[0] === '}') {
- if (params.length > 0) {
- shift = params.length - 1;
- prev = params[shift];
-
- while (prev && prev[0] === 'space') {
- prev = params[--shift];
- }
-
- if (prev) {
- node.source.end = {
- line: prev[4],
- column: prev[5]
- };
- }
- }
-
- this.end(token);
- break;
- } else {
- params.push(token);
- }
-
- if (this.tokenizer.endOfFile()) {
- last = true;
- break;
- }
- }
-
- node.raws.between = this.spacesAndCommentsFromEnd(params);
-
- if (params.length) {
- node.raws.afterName = this.spacesAndCommentsFromStart(params);
- this.raw(node, 'params', params);
-
- if (last) {
- token = params[params.length - 1];
- node.source.end = {
- line: token[4],
- column: token[5]
- };
- this.spaces = node.raws.between;
- node.raws.between = '';
- }
- } else {
- node.raws.afterName = '';
- node.params = '';
- }
-
- if (open) {
- node.nodes = [];
- this.current = node;
- }
- };
-
- _proto.end = function end(token) {
- if (this.current.nodes && this.current.nodes.length) {
- this.current.raws.semicolon = this.semicolon;
- }
-
- this.semicolon = false;
- this.current.raws.after = (this.current.raws.after || '') + this.spaces;
- this.spaces = '';
-
- if (this.current.parent) {
- this.current.source.end = {
- line: token[2],
- column: token[3]
- };
- this.current = this.current.parent;
- } else {
- this.unexpectedClose(token);
- }
- };
-
- _proto.endFile = function endFile() {
- if (this.current.parent) this.unclosedBlock();
-
- if (this.current.nodes && this.current.nodes.length) {
- this.current.raws.semicolon = this.semicolon;
- }
-
- this.current.raws.after = (this.current.raws.after || '') + this.spaces;
- };
-
- _proto.freeSemicolon = function freeSemicolon(token) {
- this.spaces += token[1];
-
- if (this.current.nodes) {
- var prev = this.current.nodes[this.current.nodes.length - 1];
-
- if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {
- prev.raws.ownSemicolon = this.spaces;
- this.spaces = '';
- }
- }
- } // Helpers
- ;
-
- _proto.init = function init(node, line, column) {
- this.current.push(node);
- node.source = {
- start: {
- line: line,
- column: column
- },
- input: this.input
- };
- node.raws.before = this.spaces;
- this.spaces = '';
- if (node.type !== 'comment') this.semicolon = false;
- };
-
- _proto.raw = function raw(node, prop, tokens) {
- var token, type;
- var length = tokens.length;
- var value = '';
- var clean = true;
- var next, prev;
- var pattern = /^([.|#])?([\w])+/i;
-
- for (var i = 0; i < length; i += 1) {
- token = tokens[i];
- type = token[0];
-
- if (type === 'comment' && node.type === 'rule') {
- prev = tokens[i - 1];
- next = tokens[i + 1];
-
- if (prev[0] !== 'space' && next[0] !== 'space' && pattern.test(prev[1]) && pattern.test(next[1])) {
- value += token[1];
- } else {
- clean = false;
- }
-
- continue;
- }
-
- if (type === 'comment' || type === 'space' && i === length - 1) {
- clean = false;
- } else {
- value += token[1];
- }
- }
-
- if (!clean) {
- var raw = tokens.reduce(function (all, i) {
- return all + i[1];
- }, '');
- node.raws[prop] = {
- value: value,
- raw: raw
- };
- }
-
- node[prop] = value;
- };
-
- _proto.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {
- var lastTokenType;
- var spaces = '';
-
- while (tokens.length) {
- lastTokenType = tokens[tokens.length - 1][0];
- if (lastTokenType !== 'space' && lastTokenType !== 'comment') break;
- spaces = tokens.pop()[1] + spaces;
- }
-
- return spaces;
- };
-
- _proto.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {
- var next;
- var spaces = '';
-
- while (tokens.length) {
- next = tokens[0][0];
- if (next !== 'space' && next !== 'comment') break;
- spaces += tokens.shift()[1];
- }
-
- return spaces;
- };
-
- _proto.spacesFromEnd = function spacesFromEnd(tokens) {
- var lastTokenType;
- var spaces = '';
-
- while (tokens.length) {
- lastTokenType = tokens[tokens.length - 1][0];
- if (lastTokenType !== 'space') break;
- spaces = tokens.pop()[1] + spaces;
- }
-
- return spaces;
- };
-
- _proto.stringFrom = function stringFrom(tokens, from) {
- var result = '';
-
- for (var i = from; i < tokens.length; i++) {
- result += tokens[i][1];
- }
-
- tokens.splice(from, tokens.length - from);
- return result;
- };
-
- _proto.colon = function colon(tokens) {
- var brackets = 0;
- var token, type, prev;
-
- for (var i = 0; i < tokens.length; i++) {
- token = tokens[i];
- type = token[0];
-
- if (type === '(') {
- brackets += 1;
- }
-
- if (type === ')') {
- brackets -= 1;
- }
-
- if (brackets === 0 && type === ':') {
- if (!prev) {
- this.doubleColon(token);
- } else if (prev[0] === 'word' && prev[1] === 'progid') {
- continue;
- } else {
- return i;
- }
- }
-
- prev = token;
- }
-
- return false;
- } // Errors
- ;
-
- _proto.unclosedBracket = function unclosedBracket(bracket) {
- throw this.input.error('Unclosed bracket', bracket[2], bracket[3]);
- };
-
- _proto.unknownWord = function unknownWord(tokens) {
- throw this.input.error('Unknown word', tokens[0][2], tokens[0][3]);
- };
-
- _proto.unexpectedClose = function unexpectedClose(token) {
- throw this.input.error('Unexpected }', token[2], token[3]);
- };
-
- _proto.unclosedBlock = function unclosedBlock() {
- var pos = this.current.source.start;
- throw this.input.error('Unclosed block', pos.line, pos.column);
- };
-
- _proto.doubleColon = function doubleColon(token) {
- throw this.input.error('Double colon', token[2], token[3]);
- };
-
- _proto.unnamedAtrule = function unnamedAtrule(node, token) {
- throw this.input.error('At-rule without name', token[2], token[3]);
- };
-
- _proto.precheckMissedSemicolon = function precheckMissedSemicolon()
- /* tokens */
- {// Hook for Safe Parser
- };
-
- _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) {
- var colon = this.colon(tokens);
- if (colon === false) return;
- var founded = 0;
- var token;
-
- for (var j = colon - 1; j >= 0; j--) {
- token = tokens[j];
-
- if (token[0] !== 'space') {
- founded += 1;
- if (founded === 2) break;
- }
- }
-
- throw this.input.error('Missed semicolon', token[2], token[3]);
- };
-
- return Parser;
-}();
-
-exports.default = Parser;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci5lczYiXSwibmFtZXMiOlsiUGFyc2VyIiwiaW5wdXQiLCJyb290IiwiUm9vdCIsImN1cnJlbnQiLCJzcGFjZXMiLCJzZW1pY29sb24iLCJjcmVhdGVUb2tlbml6ZXIiLCJzb3VyY2UiLCJzdGFydCIsImxpbmUiLCJjb2x1bW4iLCJ0b2tlbml6ZXIiLCJwYXJzZSIsInRva2VuIiwiZW5kT2ZGaWxlIiwibmV4dFRva2VuIiwiZnJlZVNlbWljb2xvbiIsImVuZCIsImNvbW1lbnQiLCJhdHJ1bGUiLCJlbXB0eVJ1bGUiLCJvdGhlciIsImVuZEZpbGUiLCJub2RlIiwiQ29tbWVudCIsImluaXQiLCJ0ZXh0Iiwic2xpY2UiLCJ0ZXN0IiwicmF3cyIsImxlZnQiLCJyaWdodCIsIm1hdGNoIiwiUnVsZSIsInNlbGVjdG9yIiwiYmV0d2VlbiIsInR5cGUiLCJjb2xvbiIsImJyYWNrZXQiLCJicmFja2V0cyIsInRva2VucyIsInB1c2giLCJsZW5ndGgiLCJkZWNsIiwicnVsZSIsImJhY2siLCJwb3AiLCJ1bmNsb3NlZEJyYWNrZXQiLCJ1bmtub3duV29yZCIsInNwYWNlc0FuZENvbW1lbnRzRnJvbUVuZCIsInJhdyIsIkRlY2xhcmF0aW9uIiwibGFzdCIsImJlZm9yZSIsInNoaWZ0IiwicHJvcCIsInNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0IiwicHJlY2hlY2tNaXNzZWRTZW1pY29sb24iLCJpIiwidG9Mb3dlckNhc2UiLCJpbXBvcnRhbnQiLCJzdHJpbmciLCJzdHJpbmdGcm9tIiwic3BhY2VzRnJvbUVuZCIsImNhY2hlIiwic3RyIiwiaiIsInRyaW0iLCJpbmRleE9mIiwidmFsdWUiLCJjaGVja01pc3NlZFNlbWljb2xvbiIsIkF0UnVsZSIsIm5hbWUiLCJ1bm5hbWVkQXRydWxlIiwicHJldiIsIm9wZW4iLCJwYXJhbXMiLCJhZnRlck5hbWUiLCJub2RlcyIsImFmdGVyIiwicGFyZW50IiwidW5leHBlY3RlZENsb3NlIiwidW5jbG9zZWRCbG9jayIsIm93blNlbWljb2xvbiIsImNsZWFuIiwibmV4dCIsInBhdHRlcm4iLCJyZWR1Y2UiLCJhbGwiLCJsYXN0VG9rZW5UeXBlIiwiZnJvbSIsInJlc3VsdCIsInNwbGljZSIsImRvdWJsZUNvbG9uIiwiZXJyb3IiLCJwb3MiLCJmb3VuZGVkIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0lBRXFCQSxNOzs7QUFDbkIsa0JBQWFDLEtBQWIsRUFBb0I7QUFDbEIsU0FBS0EsS0FBTCxHQUFhQSxLQUFiO0FBRUEsU0FBS0MsSUFBTCxHQUFZLElBQUlDLGFBQUosRUFBWjtBQUNBLFNBQUtDLE9BQUwsR0FBZSxLQUFLRixJQUFwQjtBQUNBLFNBQUtHLE1BQUwsR0FBYyxFQUFkO0FBQ0EsU0FBS0MsU0FBTCxHQUFpQixLQUFqQjtBQUVBLFNBQUtDLGVBQUw7QUFDQSxTQUFLTCxJQUFMLENBQVVNLE1BQVYsR0FBbUI7QUFBRVAsTUFBQUEsS0FBSyxFQUFMQSxLQUFGO0FBQVNRLE1BQUFBLEtBQUssRUFBRTtBQUFFQyxRQUFBQSxJQUFJLEVBQUUsQ0FBUjtBQUFXQyxRQUFBQSxNQUFNLEVBQUU7QUFBbkI7QUFBaEIsS0FBbkI7QUFDRDs7OztTQUVESixlLEdBQUEsMkJBQW1CO0FBQ2pCLFNBQUtLLFNBQUwsR0FBaUIsdUJBQVUsS0FBS1gsS0FBZixDQUFqQjtBQUNELEc7O1NBRURZLEssR0FBQSxpQkFBUztBQUNQLFFBQUlDLEtBQUo7O0FBQ0EsV0FBTyxDQUFDLEtBQUtGLFNBQUwsQ0FBZUcsU0FBZixFQUFSLEVBQW9DO0FBQ2xDRCxNQUFBQSxLQUFLLEdBQUcsS0FBS0YsU0FBTCxDQUFlSSxTQUFmLEVBQVI7O0FBRUEsY0FBUUYsS0FBSyxDQUFDLENBQUQsQ0FBYjtBQUNFLGFBQUssT0FBTDtBQUNFLGVBQUtULE1BQUwsSUFBZVMsS0FBSyxDQUFDLENBQUQsQ0FBcEI7QUFDQTs7QUFFRixhQUFLLEdBQUw7QUFDRSxlQUFLRyxhQUFMLENBQW1CSCxLQUFuQjtBQUNBOztBQUVGLGFBQUssR0FBTDtBQUNFLGVBQUtJLEdBQUwsQ0FBU0osS0FBVDtBQUNBOztBQUVGLGFBQUssU0FBTDtBQUNFLGVBQUtLLE9BQUwsQ0FBYUwsS0FBYjtBQUNBOztBQUVGLGFBQUssU0FBTDtBQUNFLGVBQUtNLE1BQUwsQ0FBWU4sS0FBWjtBQUNBOztBQUVGLGFBQUssR0FBTDtBQUNFLGVBQUtPLFNBQUwsQ0FBZVAsS0FBZjtBQUNBOztBQUVGO0FBQ0UsZUFBS1EsS0FBTCxDQUFXUixLQUFYO0FBQ0E7QUEzQko7QUE2QkQ7O0FBQ0QsU0FBS1MsT0FBTDtBQUNELEc7O1NBRURKLE8sR0FBQSxpQkFBU0wsS0FBVCxFQUFnQjtBQUNkLFFBQUlVLElBQUksR0FBRyxJQUFJQyxnQkFBSixFQUFYO0FBQ0EsU0FBS0MsSUFBTCxDQUFVRixJQUFWLEVBQWdCVixLQUFLLENBQUMsQ0FBRCxDQUFyQixFQUEwQkEsS0FBSyxDQUFDLENBQUQsQ0FBL0I7QUFDQVUsSUFBQUEsSUFBSSxDQUFDaEIsTUFBTCxDQUFZVSxHQUFaLEdBQWtCO0FBQUVSLE1BQUFBLElBQUksRUFBRUksS0FBSyxDQUFDLENBQUQsQ0FBYjtBQUFrQkgsTUFBQUEsTUFBTSxFQUFFRyxLQUFLLENBQUMsQ0FBRDtBQUEvQixLQUFsQjtBQUVBLFFBQUlhLElBQUksR0FBR2IsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTYyxLQUFULENBQWUsQ0FBZixFQUFrQixDQUFDLENBQW5CLENBQVg7O0FBQ0EsUUFBSSxRQUFRQyxJQUFSLENBQWFGLElBQWIsQ0FBSixFQUF3QjtBQUN0QkgsTUFBQUEsSUFBSSxDQUFDRyxJQUFMLEdBQVksRUFBWjtBQUNBSCxNQUFBQSxJQUFJLENBQUNNLElBQUwsQ0FBVUMsSUFBVixHQUFpQkosSUFBakI7QUFDQUgsTUFBQUEsSUFBSSxDQUFDTSxJQUFMLENBQVVFLEtBQVYsR0FBa0IsRUFBbEI7QUFDRCxLQUpELE1BSU87QUFDTCxVQUFJQyxLQUFLLEdBQUdOLElBQUksQ0FBQ00sS0FBTCxDQUFXLHlCQUFYLENBQVo7QUFDQVQsTUFBQUEsSUFBSSxDQUFDRyxJQUFMLEdBQVlNLEtBQUssQ0FBQyxDQUFELENBQWpCO0FBQ0FULE1BQUFBLElBQUksQ0FBQ00sSUFBTCxDQUFVQyxJQUFWLEdBQWlCRSxLQUFLLENBQUMsQ0FBRCxDQUF0QjtBQUNBVCxNQUFBQSxJQUFJLENBQUNNLElBQUwsQ0FBVUUsS0FBVixHQUFrQkMsS0FBSyxDQUFDLENBQUQsQ0FBdkI7QUFDRDtBQUNGLEc7O1NBRURaLFMsR0FBQSxtQkFBV1AsS0FBWCxFQUFrQjtBQUNoQixRQUFJVSxJQUFJLEdBQUcsSUFBSVUsYUFBSixFQUFYO0FBQ0EsU0FBS1IsSUFBTCxDQUFVRixJQUFWLEVBQWdCVixLQUFLLENBQUMsQ0FBRCxDQUFyQixFQUEwQkEsS0FBSyxDQUFDLENBQUQsQ0FBL0I7QUFDQVUsSUFBQUEsSUFBSSxDQUFDVyxRQUFMLEdBQWdCLEVBQWhCO0FBQ0FYLElBQUFBLElBQUksQ0FBQ00sSUFBTCxDQUFVTSxPQUFWLEdBQW9CLEVBQXBCO0FBQ0EsU0FBS2hDLE9BQUwsR0FBZW9CLElBQWY7QUFDRCxHOztTQUVERixLLEdBQUEsZUFBT2IsS0FBUCxFQUFjO0FBQ1osUUFBSVMsR0FBRyxHQUFHLEtBQVY7QUFDQSxRQUFJbUIsSUFBSSxHQUFHLElBQVg7QUFDQSxRQUFJQyxLQUFLLEdBQUcsS0FBWjtBQUNBLFFBQUlDLE9BQU8sR0FBRyxJQUFkO0FBQ0EsUUFBSUMsUUFBUSxHQUFHLEVBQWY7QUFFQSxRQUFJQyxNQUFNLEdBQUcsRUFBYjtBQUNBLFFBQUkzQixLQUFLLEdBQUdMLEtBQVo7O0FBQ0EsV0FBT0ssS0FBUCxFQUFjO0FBQ1p1QixNQUFBQSxJQUFJLEdBQUd2QixLQUFLLENBQUMsQ0FBRCxDQUFaO0FBQ0EyQixNQUFBQSxNQUFNLENBQUNDLElBQVAsQ0FBWTVCLEtBQVo7O0FBRUEsVUFBSXVCLElBQUksS0FBSyxHQUFULElBQWdCQSxJQUFJLEtBQUssR0FBN0IsRUFBa0M7QUFDaEMsWUFBSSxDQUFDRSxPQUFMLEVBQWNBLE9BQU8sR0FBR3pCLEtBQVY7QUFDZDBCLFFBQUFBLFFBQVEsQ0FBQ0UsSUFBVCxDQUFjTCxJQUFJLEtBQUssR0FBVCxHQUFlLEdBQWYsR0FBcUIsR0FBbkM7QUFDRCxPQUhELE1BR08sSUFBSUcsUUFBUSxDQUFDRyxNQUFULEtBQW9CLENBQXhCLEVBQTJCO0FBQ2hDLFlBQUlOLElBQUksS0FBSyxHQUFiLEVBQWtCO0FBQ2hCLGNBQUlDLEtBQUosRUFBVztBQUNULGlCQUFLTSxJQUFMLENBQVVILE1BQVY7QUFDQTtBQUNELFdBSEQsTUFHTztBQUNMO0FBQ0Q7QUFDRixTQVBELE1BT08sSUFBSUosSUFBSSxLQUFLLEdBQWIsRUFBa0I7QUFDdkIsZUFBS1EsSUFBTCxDQUFVSixNQUFWO0FBQ0E7QUFDRCxTQUhNLE1BR0EsSUFBSUosSUFBSSxLQUFLLEdBQWIsRUFBa0I7QUFDdkIsZUFBS3pCLFNBQUwsQ0FBZWtDLElBQWYsQ0FBb0JMLE1BQU0sQ0FBQ00sR0FBUCxFQUFwQjtBQUNBN0IsVUFBQUEsR0FBRyxHQUFHLElBQU47QUFDQTtBQUNELFNBSk0sTUFJQSxJQUFJbUIsSUFBSSxLQUFLLEdBQWIsRUFBa0I7QUFDdkJDLFVBQUFBLEtBQUssR0FBRyxJQUFSO0FBQ0Q7QUFDRixPQWxCTSxNQWtCQSxJQUFJRCxJQUFJLEtBQUtHLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDRyxNQUFULEdBQWtCLENBQW5CLENBQXJCLEVBQTRDO0FBQ2pESCxRQUFBQSxRQUFRLENBQUNPLEdBQVQ7QUFDQSxZQUFJUCxRQUFRLENBQUNHLE1BQVQsS0FBb0IsQ0FBeEIsRUFBMkJKLE9BQU8sR0FBRyxJQUFWO0FBQzVCOztBQUVEekIsTUFBQUEsS0FBSyxHQUFHLEtBQUtGLFNBQUwsQ0FBZUksU0FBZixFQUFSO0FBQ0Q7O0FBRUQsUUFBSSxLQUFLSixTQUFMLENBQWVHLFNBQWYsRUFBSixFQUFnQ0csR0FBRyxHQUFHLElBQU47QUFDaEMsUUFBSXNCLFFBQVEsQ0FBQ0csTUFBVCxHQUFrQixDQUF0QixFQUF5QixLQUFLSyxlQUFMLENBQXFCVCxPQUFyQjs7QUFFekIsUUFBSXJCLEdBQUcsSUFBSW9CLEtBQVgsRUFBa0I7QUFDaEIsYUFBT0csTUFBTSxDQUFDRSxNQUFkLEVBQXNCO0FBQ3BCN0IsUUFBQUEsS0FBSyxHQUFHMkIsTUFBTSxDQUFDQSxNQUFNLENBQUNFLE1BQVAsR0FBZ0IsQ0FBakIsQ0FBTixDQUEwQixDQUExQixDQUFSO0FBQ0EsWUFBSTdCLEtBQUssS0FBSyxPQUFWLElBQXFCQSxLQUFLLEtBQUssU0FBbkMsRUFBOEM7QUFDOUMsYUFBS0YsU0FBTCxDQUFla0MsSUFBZixDQUFvQkwsTUFBTSxDQUFDTSxHQUFQLEVBQXBCO0FBQ0Q7O0FBQ0QsV0FBS0gsSUFBTCxDQUFVSCxNQUFWO0FBQ0QsS0FQRCxNQU9PO0FBQ0wsV0FBS1EsV0FBTCxDQUFpQlIsTUFBakI7QUFDRDtBQUNGLEc7O1NBRURJLEksR0FBQSxjQUFNSixNQUFOLEVBQWM7QUFDWkEsSUFBQUEsTUFBTSxDQUFDTSxHQUFQO0FBRUEsUUFBSXZCLElBQUksR0FBRyxJQUFJVSxhQUFKLEVBQVg7QUFDQSxTQUFLUixJQUFMLENBQVVGLElBQVYsRUFBZ0JpQixNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsQ0FBVixDQUFoQixFQUE4QkEsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVLENBQVYsQ0FBOUI7QUFFQWpCLElBQUFBLElBQUksQ0FBQ00sSUFBTCxDQUFVTSxPQUFWLEdBQW9CLEtBQUtjLHdCQUFMLENBQThCVCxNQUE5QixDQUFwQjtBQUNBLFNBQUtVLEdBQUwsQ0FBUzNCLElBQVQsRUFBZSxVQUFmLEVBQTJCaUIsTUFBM0I7QUFDQSxTQUFLckMsT0FBTCxHQUFlb0IsSUFBZjtBQUNELEc7O1NBRURvQixJLEdBQUEsY0FBTUgsTUFBTixFQUFjO0FBQ1osUUFBSWpCLElBQUksR0FBRyxJQUFJNEIsb0JBQUosRUFBWDtBQUNBLFNBQUsxQixJQUFMLENBQVVGLElBQVY7QUFFQSxRQUFJNkIsSUFBSSxHQUFHWixNQUFNLENBQUNBLE1BQU0sQ0FBQ0UsTUFBUCxHQUFnQixDQUFqQixDQUFqQjs7QUFDQSxRQUFJVSxJQUFJLENBQUMsQ0FBRCxDQUFKLEtBQVksR0FBaEIsRUFBcUI7QUFDbkIsV0FBSy9DLFNBQUwsR0FBaUIsSUFBakI7QUFDQW1DLE1BQUFBLE1BQU0sQ0FBQ00sR0FBUDtBQUNEOztBQUNELFFBQUlNLElBQUksQ0FBQyxDQUFELENBQVIsRUFBYTtBQUNYN0IsTUFBQUEsSUFBSSxDQUFDaEIsTUFBTCxDQUFZVSxHQUFaLEdBQWtCO0FBQUVSLFFBQUFBLElBQUksRUFBRTJDLElBQUksQ0FBQyxDQUFELENBQVo7QUFBaUIxQyxRQUFBQSxNQUFNLEVBQUUwQyxJQUFJLENBQUMsQ0FBRDtBQUE3QixPQUFsQjtBQUNELEtBRkQsTUFFTztBQUNMN0IsTUFBQUEsSUFBSSxDQUFDaEIsTUFBTCxDQUFZVSxHQUFaLEdBQWtCO0FBQUVSLFFBQUFBLElBQUksRUFBRTJDLElBQUksQ0FBQyxDQUFELENBQVo7QUFBaUIxQyxRQUFBQSxNQUFNLEVBQUUwQyxJQUFJLENBQUMsQ0FBRDtBQUE3QixPQUFsQjtBQUNEOztBQUVELFdBQU9aLE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxDQUFWLE1BQWlCLE1BQXhCLEVBQWdDO0FBQzlCLFVBQUlBLE1BQU0sQ0FBQ0UsTUFBUCxLQUFrQixDQUF0QixFQUF5QixLQUFLTSxXQUFMLENBQWlCUixNQUFqQjtBQUN6QmpCLE1BQUFBLElBQUksQ0FBQ00sSUFBTCxDQUFVd0IsTUFBVixJQUFvQmIsTUFBTSxDQUFDYyxLQUFQLEdBQWUsQ0FBZixDQUFwQjtBQUNEOztBQUNEL0IsSUFBQUEsSUFBSSxDQUFDaEIsTUFBTCxDQUFZQyxLQUFaLEdBQW9CO0FBQUVDLE1BQUFBLElBQUksRUFBRStCLE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxDQUFWLENBQVI7QUFBc0I5QixNQUFBQSxNQUFNLEVBQUU4QixNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsQ0FBVjtBQUE5QixLQUFwQjtBQUVBakIsSUFBQUEsSUFBSSxDQUFDZ0MsSUFBTCxHQUFZLEVBQVo7O0FBQ0EsV0FBT2YsTUFBTSxDQUFDRSxNQUFkLEVBQXNCO0FBQ3BCLFVBQUlOLElBQUksR0FBR0ksTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVLENBQVYsQ0FBWDs7QUFDQSxVQUFJSixJQUFJLEtBQUssR0FBVCxJQUFnQkEsSUFBSSxLQUFLLE9BQXpCLElBQW9DQSxJQUFJLEtBQUssU0FBakQsRUFBNEQ7QUFDMUQ7QUFDRDs7QUFDRGIsTUFBQUEsSUFBSSxDQUFDZ0MsSUFBTCxJQUFhZixNQUFNLENBQUNjLEtBQVAsR0FBZSxDQUFmLENBQWI7QUFDRDs7QUFFRC9CLElBQUFBLElBQUksQ0FBQ00sSUFBTCxDQUFVTSxPQUFWLEdBQW9CLEVBQXBCO0FBRUEsUUFBSXRCLEtBQUo7O0FBQ0EsV0FBTzJCLE1BQU0sQ0FBQ0UsTUFBZCxFQUFzQjtBQUNwQjdCLE1BQUFBLEtBQUssR0FBRzJCLE1BQU0sQ0FBQ2MsS0FBUCxFQUFSOztBQUVBLFVBQUl6QyxLQUFLLENBQUMsQ0FBRCxDQUFMLEtBQWEsR0FBakIsRUFBc0I7QUFDcEJVLFFBQUFBLElBQUksQ0FBQ00sSUFBTCxDQUFVTSxPQUFWLElBQXFCdEIsS0FBSyxDQUFDLENBQUQsQ0FBMUI7QUFDQTtBQUNELE9BSEQsTUFHTztBQUNMLFlBQUlBLEtBQUssQ0FBQyxDQUFELENBQUwsS0FBYSxNQUFiLElBQXVCLEtBQUtlLElBQUwsQ0FBVWYsS0FBSyxDQUFDLENBQUQsQ0FBZixDQUEzQixFQUFnRDtBQUM5QyxlQUFLbUMsV0FBTCxDQUFpQixDQUFDbkMsS0FBRCxDQUFqQjtBQUNEOztBQUNEVSxRQUFBQSxJQUFJLENBQUNNLElBQUwsQ0FBVU0sT0FBVixJQUFxQnRCLEtBQUssQ0FBQyxDQUFELENBQTFCO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJVSxJQUFJLENBQUNnQyxJQUFMLENBQVUsQ0FBVixNQUFpQixHQUFqQixJQUF3QmhDLElBQUksQ0FBQ2dDLElBQUwsQ0FBVSxDQUFWLE1BQWlCLEdBQTdDLEVBQWtEO0FBQ2hEaEMsTUFBQUEsSUFBSSxDQUFDTSxJQUFMLENBQVV3QixNQUFWLElBQW9COUIsSUFBSSxDQUFDZ0MsSUFBTCxDQUFVLENBQVYsQ0FBcEI7QUFDQWhDLE1BQUFBLElBQUksQ0FBQ2dDLElBQUwsR0FBWWhDLElBQUksQ0FBQ2dDLElBQUwsQ0FBVTVCLEtBQVYsQ0FBZ0IsQ0FBaEIsQ0FBWjtBQUNEOztBQUNESixJQUFBQSxJQUFJLENBQUNNLElBQUwsQ0FBVU0sT0FBVixJQUFxQixLQUFLcUIsMEJBQUwsQ0FBZ0NoQixNQUFoQyxDQUFyQjtBQUNBLFNBQUtpQix1QkFBTCxDQUE2QmpCLE1BQTdCOztBQUVBLFNBQUssSUFBSWtCLENBQUMsR0FBR2xCLE1BQU0sQ0FBQ0UsTUFBUCxHQUFnQixDQUE3QixFQUFnQ2dCLENBQUMsR0FBRyxDQUFwQyxFQUF1Q0EsQ0FBQyxFQUF4QyxFQUE0QztBQUMxQzdDLE1BQUFBLEtBQUssR0FBRzJCLE1BQU0sQ0FBQ2tCLENBQUQsQ0FBZDs7QUFDQSxVQUFJN0MsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTOEMsV0FBVCxPQUEyQixZQUEvQixFQUE2QztBQUMzQ3BDLFFBQUFBLElBQUksQ0FBQ3FDLFNBQUwsR0FBaUIsSUFBakI7QUFDQSxZQUFJQyxNQUFNLEdBQUcsS0FBS0MsVUFBTCxDQUFnQnRCLE1BQWhCLEVBQXdCa0IsQ0FBeEIsQ0FBYjtBQUNBRyxRQUFBQSxNQUFNLEdBQUcsS0FBS0UsYUFBTCxDQUFtQnZCLE1BQW5CLElBQTZCcUIsTUFBdEM7QUFDQSxZQUFJQSxNQUFNLEtBQUssYUFBZixFQUE4QnRDLElBQUksQ0FBQ00sSUFBTCxDQUFVK0IsU0FBVixHQUFzQkMsTUFBdEI7QUFDOUI7QUFDRCxPQU5ELE1BTU8sSUFBSWhELEtBQUssQ0FBQyxDQUFELENBQUwsQ0FBUzhDLFdBQVQsT0FBMkIsV0FBL0IsRUFBNEM7QUFDakQsWUFBSUssS0FBSyxHQUFHeEIsTUFBTSxDQUFDYixLQUFQLENBQWEsQ0FBYixDQUFaO0FBQ0EsWUFBSXNDLEdBQUcsR0FBRyxFQUFWOztBQUNBLGFBQUssSUFBSUMsQ0FBQyxHQUFHUixDQUFiLEVBQWdCUSxDQUFDLEdBQUcsQ0FBcEIsRUFBdUJBLENBQUMsRUFBeEIsRUFBNEI7QUFDMUIsY0FBSTlCLEtBQUksR0FBRzRCLEtBQUssQ0FBQ0UsQ0FBRCxDQUFMLENBQVMsQ0FBVCxDQUFYOztBQUNBLGNBQUlELEdBQUcsQ0FBQ0UsSUFBSixHQUFXQyxPQUFYLENBQW1CLEdBQW5CLE1BQTRCLENBQTVCLElBQWlDaEMsS0FBSSxLQUFLLE9BQTlDLEVBQXVEO0FBQ3JEO0FBQ0Q7O0FBQ0Q2QixVQUFBQSxHQUFHLEdBQUdELEtBQUssQ0FBQ2xCLEdBQU4sR0FBWSxDQUFaLElBQWlCbUIsR0FBdkI7QUFDRDs7QUFDRCxZQUFJQSxHQUFHLENBQUNFLElBQUosR0FBV0MsT0FBWCxDQUFtQixHQUFuQixNQUE0QixDQUFoQyxFQUFtQztBQUNqQzdDLFVBQUFBLElBQUksQ0FBQ3FDLFNBQUwsR0FBaUIsSUFBakI7QUFDQXJDLFVBQUFBLElBQUksQ0FBQ00sSUFBTCxDQUFVK0IsU0FBVixHQUFzQkssR0FBdEI7QUFDQXpCLFVBQUFBLE1BQU0sR0FBR3dCLEtBQVQ7QUFDRDtBQUNGOztBQUVELFVBQUluRCxLQUFLLENBQUMsQ0FBRCxDQUFMLEtBQWEsT0FBYixJQUF3QkEsS0FBSyxDQUFDLENBQUQsQ0FBTCxLQUFhLFNBQXpDLEVBQW9EO0FBQ2xEO0FBQ0Q7QUFDRjs7QUFFRCxTQUFLcUMsR0FBTCxDQUFTM0IsSUFBVCxFQUFlLE9BQWYsRUFBd0JpQixNQUF4QjtBQUVBLFFBQUlqQixJQUFJLENBQUM4QyxLQUFMLENBQVdELE9BQVgsQ0FBbUIsR0FBbkIsTUFBNEIsQ0FBQyxDQUFqQyxFQUFvQyxLQUFLRSxvQkFBTCxDQUEwQjlCLE1BQTFCO0FBQ3JDLEc7O1NBRURyQixNLEdBQUEsZ0JBQVFOLEtBQVIsRUFBZTtBQUNiLFFBQUlVLElBQUksR0FBRyxJQUFJZ0QsZUFBSixFQUFYO0FBQ0FoRCxJQUFBQSxJQUFJLENBQUNpRCxJQUFMLEdBQVkzRCxLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVNjLEtBQVQsQ0FBZSxDQUFmLENBQVo7O0FBQ0EsUUFBSUosSUFBSSxDQUFDaUQsSUFBTCxLQUFjLEVBQWxCLEVBQXNCO0FBQ3BCLFdBQUtDLGFBQUwsQ0FBbUJsRCxJQUFuQixFQUF5QlYsS0FBekI7QUFDRDs7QUFDRCxTQUFLWSxJQUFMLENBQVVGLElBQVYsRUFBZ0JWLEtBQUssQ0FBQyxDQUFELENBQXJCLEVBQTBCQSxLQUFLLENBQUMsQ0FBRCxDQUEvQjtBQUVBLFFBQUk2RCxJQUFKO0FBQ0EsUUFBSXBCLEtBQUo7QUFDQSxRQUFJRixJQUFJLEdBQUcsS0FBWDtBQUNBLFFBQUl1QixJQUFJLEdBQUcsS0FBWDtBQUNBLFFBQUlDLE1BQU0sR0FBRyxFQUFiOztBQUVBLFdBQU8sQ0FBQyxLQUFLakUsU0FBTCxDQUFlRyxTQUFmLEVBQVIsRUFBb0M7QUFDbENELE1BQUFBLEtBQUssR0FBRyxLQUFLRixTQUFMLENBQWVJLFNBQWYsRUFBUjs7QUFFQSxVQUFJRixLQUFLLENBQUMsQ0FBRCxDQUFMLEtBQWEsR0FBakIsRUFBc0I7QUFDcEJVLFFBQUFBLElBQUksQ0FBQ2hCLE1BQUwsQ0FBWVUsR0FBWixHQUFrQjtBQUFFUixVQUFBQSxJQUFJLEVBQUVJLEtBQUssQ0FBQyxDQUFELENBQWI7QUFBa0JILFVBQUFBLE1BQU0sRUFBRUcsS0FBSyxDQUFDLENBQUQ7QUFBL0IsU0FBbEI7QUFDQSxhQUFLUixTQUFMLEdBQWlCLElBQWpCO0FBQ0E7QUFDRCxPQUpELE1BSU8sSUFBSVEsS0FBSyxDQUFDLENBQUQsQ0FBTCxLQUFhLEdBQWpCLEVBQXNCO0FBQzNCOEQsUUFBQUEsSUFBSSxHQUFHLElBQVA7QUFDQTtBQUNELE9BSE0sTUFHQSxJQUFJOUQsS0FBSyxDQUFDLENBQUQsQ0FBTCxLQUFhLEdBQWpCLEVBQXNCO0FBQzNCLFlBQUkrRCxNQUFNLENBQUNsQyxNQUFQLEdBQWdCLENBQXBCLEVBQXVCO0FBQ3JCWSxVQUFBQSxLQUFLLEdBQUdzQixNQUFNLENBQUNsQyxNQUFQLEdBQWdCLENBQXhCO0FBQ0FnQyxVQUFBQSxJQUFJLEdBQUdFLE1BQU0sQ0FBQ3RCLEtBQUQsQ0FBYjs7QUFDQSxpQkFBT29CLElBQUksSUFBSUEsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLE9BQTNCLEVBQW9DO0FBQ2xDQSxZQUFBQSxJQUFJLEdBQUdFLE1BQU0sQ0FBQyxFQUFFdEIsS0FBSCxDQUFiO0FBQ0Q7O0FBQ0QsY0FBSW9CLElBQUosRUFBVTtBQUNSbkQsWUFBQUEsSUFBSSxDQUFDaEIsTUFBTCxDQUFZVSxHQUFaLEdBQWtCO0FBQUVSLGNBQUFBLElBQUksRUFBRWlFLElBQUksQ0FBQyxDQUFELENBQVo7QUFBaUJoRSxjQUFBQSxNQUFNLEVBQUVnRSxJQUFJLENBQUMsQ0FBRDtBQUE3QixhQUFsQjtBQUNEO0FBQ0Y7O0FBQ0QsYUFBS3pELEdBQUwsQ0FBU0osS0FBVDtBQUNBO0FBQ0QsT0FiTSxNQWFBO0FBQ0wrRCxRQUFBQSxNQUFNLENBQUNuQyxJQUFQLENBQVk1QixLQUFaO0FBQ0Q7O0FBRUQsVUFBSSxLQUFLRixTQUFMLENBQWVHLFNBQWYsRUFBSixFQUFnQztBQUM5QnNDLFFBQUFBLElBQUksR0FBRyxJQUFQO0FBQ0E7QUFDRDtBQUNGOztBQUVEN0IsSUFBQUEsSUFBSSxDQUFDTSxJQUFMLENBQVVNLE9BQVYsR0FBb0IsS0FBS2Msd0JBQUwsQ0FBOEIyQixNQUE5QixDQUFwQjs7QUFDQSxRQUFJQSxNQUFNLENBQUNsQyxNQUFYLEVBQW1CO0FBQ2pCbkIsTUFBQUEsSUFBSSxDQUFDTSxJQUFMLENBQVVnRCxTQUFWLEdBQXNCLEtBQUtyQiwwQkFBTCxDQUFnQ29CLE1BQWhDLENBQXRCO0FBQ0EsV0FBSzFCLEdBQUwsQ0FBUzNCLElBQVQsRUFBZSxRQUFmLEVBQXlCcUQsTUFBekI7O0FBQ0EsVUFBSXhCLElBQUosRUFBVTtBQUNSdkMsUUFBQUEsS0FBSyxHQUFHK0QsTUFBTSxDQUFDQSxNQUFNLENBQUNsQyxNQUFQLEdBQWdCLENBQWpCLENBQWQ7QUFDQW5CLFFBQUFBLElBQUksQ0FBQ2hCLE1BQUwsQ0FBWVUsR0FBWixHQUFrQjtBQUFFUixVQUFBQSxJQUFJLEVBQUVJLEtBQUssQ0FBQyxDQUFELENBQWI7QUFBa0JILFVBQUFBLE1BQU0sRUFBRUcsS0FBSyxDQUFDLENBQUQ7QUFBL0IsU0FBbEI7QUFDQSxhQUFLVCxNQUFMLEdBQWNtQixJQUFJLENBQUNNLElBQUwsQ0FBVU0sT0FBeEI7QUFDQVosUUFBQUEsSUFBSSxDQUFDTSxJQUFMLENBQVVNLE9BQVYsR0FBb0IsRUFBcEI7QUFDRDtBQUNGLEtBVEQsTUFTTztBQUNMWixNQUFBQSxJQUFJLENBQUNNLElBQUwsQ0FBVWdELFNBQVYsR0FBc0IsRUFBdEI7QUFDQXRELE1BQUFBLElBQUksQ0FBQ3FELE1BQUwsR0FBYyxFQUFkO0FBQ0Q7O0FBRUQsUUFBSUQsSUFBSixFQUFVO0FBQ1JwRCxNQUFBQSxJQUFJLENBQUN1RCxLQUFMLEdBQWEsRUFBYjtBQUNBLFdBQUszRSxPQUFMLEdBQWVvQixJQUFmO0FBQ0Q7QUFDRixHOztTQUVETixHLEdBQUEsYUFBS0osS0FBTCxFQUFZO0FBQ1YsUUFBSSxLQUFLVixPQUFMLENBQWEyRSxLQUFiLElBQXNCLEtBQUszRSxPQUFMLENBQWEyRSxLQUFiLENBQW1CcEMsTUFBN0MsRUFBcUQ7QUFDbkQsV0FBS3ZDLE9BQUwsQ0FBYTBCLElBQWIsQ0FBa0J4QixTQUFsQixHQUE4QixLQUFLQSxTQUFuQztBQUNEOztBQUNELFNBQUtBLFNBQUwsR0FBaUIsS0FBakI7QUFFQSxTQUFLRixPQUFMLENBQWEwQixJQUFiLENBQWtCa0QsS0FBbEIsR0FBMEIsQ0FBQyxLQUFLNUUsT0FBTCxDQUFhMEIsSUFBYixDQUFrQmtELEtBQWxCLElBQTJCLEVBQTVCLElBQWtDLEtBQUszRSxNQUFqRTtBQUNBLFNBQUtBLE1BQUwsR0FBYyxFQUFkOztBQUVBLFFBQUksS0FBS0QsT0FBTCxDQUFhNkUsTUFBakIsRUFBeUI7QUFDdkIsV0FBSzdFLE9BQUwsQ0FBYUksTUFBYixDQUFvQlUsR0FBcEIsR0FBMEI7QUFBRVIsUUFBQUEsSUFBSSxFQUFFSSxLQUFLLENBQUMsQ0FBRCxDQUFiO0FBQWtCSCxRQUFBQSxNQUFNLEVBQUVHLEtBQUssQ0FBQyxDQUFEO0FBQS9CLE9BQTFCO0FBQ0EsV0FBS1YsT0FBTCxHQUFlLEtBQUtBLE9BQUwsQ0FBYTZFLE1BQTVCO0FBQ0QsS0FIRCxNQUdPO0FBQ0wsV0FBS0MsZUFBTCxDQUFxQnBFLEtBQXJCO0FBQ0Q7QUFDRixHOztTQUVEUyxPLEdBQUEsbUJBQVc7QUFDVCxRQUFJLEtBQUtuQixPQUFMLENBQWE2RSxNQUFqQixFQUF5QixLQUFLRSxhQUFMOztBQUN6QixRQUFJLEtBQUsvRSxPQUFMLENBQWEyRSxLQUFiLElBQXNCLEtBQUszRSxPQUFMLENBQWEyRSxLQUFiLENBQW1CcEMsTUFBN0MsRUFBcUQ7QUFDbkQsV0FBS3ZDLE9BQUwsQ0FBYTBCLElBQWIsQ0FBa0J4QixTQUFsQixHQUE4QixLQUFLQSxTQUFuQztBQUNEOztBQUNELFNBQUtGLE9BQUwsQ0FBYTBCLElBQWIsQ0FBa0JrRCxLQUFsQixHQUEwQixDQUFDLEtBQUs1RSxPQUFMLENBQWEwQixJQUFiLENBQWtCa0QsS0FBbEIsSUFBMkIsRUFBNUIsSUFBa0MsS0FBSzNFLE1BQWpFO0FBQ0QsRzs7U0FFRFksYSxHQUFBLHVCQUFlSCxLQUFmLEVBQXNCO0FBQ3BCLFNBQUtULE1BQUwsSUFBZVMsS0FBSyxDQUFDLENBQUQsQ0FBcEI7O0FBQ0EsUUFBSSxLQUFLVixPQUFMLENBQWEyRSxLQUFqQixFQUF3QjtBQUN0QixVQUFJSixJQUFJLEdBQUcsS0FBS3ZFLE9BQUwsQ0FBYTJFLEtBQWIsQ0FBbUIsS0FBSzNFLE9BQUwsQ0FBYTJFLEtBQWIsQ0FBbUJwQyxNQUFuQixHQUE0QixDQUEvQyxDQUFYOztBQUNBLFVBQUlnQyxJQUFJLElBQUlBLElBQUksQ0FBQ3RDLElBQUwsS0FBYyxNQUF0QixJQUFnQyxDQUFDc0MsSUFBSSxDQUFDN0MsSUFBTCxDQUFVc0QsWUFBL0MsRUFBNkQ7QUFDM0RULFFBQUFBLElBQUksQ0FBQzdDLElBQUwsQ0FBVXNELFlBQVYsR0FBeUIsS0FBSy9FLE1BQTlCO0FBQ0EsYUFBS0EsTUFBTCxHQUFjLEVBQWQ7QUFDRDtBQUNGO0FBQ0YsRyxDQUVEOzs7U0FFQXFCLEksR0FBQSxjQUFNRixJQUFOLEVBQVlkLElBQVosRUFBa0JDLE1BQWxCLEVBQTBCO0FBQ3hCLFNBQUtQLE9BQUwsQ0FBYXNDLElBQWIsQ0FBa0JsQixJQUFsQjtBQUVBQSxJQUFBQSxJQUFJLENBQUNoQixNQUFMLEdBQWM7QUFBRUMsTUFBQUEsS0FBSyxFQUFFO0FBQUVDLFFBQUFBLElBQUksRUFBSkEsSUFBRjtBQUFRQyxRQUFBQSxNQUFNLEVBQU5BO0FBQVIsT0FBVDtBQUEyQlYsTUFBQUEsS0FBSyxFQUFFLEtBQUtBO0FBQXZDLEtBQWQ7QUFDQXVCLElBQUFBLElBQUksQ0FBQ00sSUFBTCxDQUFVd0IsTUFBVixHQUFtQixLQUFLakQsTUFBeEI7QUFDQSxTQUFLQSxNQUFMLEdBQWMsRUFBZDtBQUNBLFFBQUltQixJQUFJLENBQUNhLElBQUwsS0FBYyxTQUFsQixFQUE2QixLQUFLL0IsU0FBTCxHQUFpQixLQUFqQjtBQUM5QixHOztTQUVENkMsRyxHQUFBLGFBQUszQixJQUFMLEVBQVdnQyxJQUFYLEVBQWlCZixNQUFqQixFQUF5QjtBQUN2QixRQUFJM0IsS0FBSixFQUFXdUIsSUFBWDtBQUNBLFFBQUlNLE1BQU0sR0FBR0YsTUFBTSxDQUFDRSxNQUFwQjtBQUNBLFFBQUkyQixLQUFLLEdBQUcsRUFBWjtBQUNBLFFBQUllLEtBQUssR0FBRyxJQUFaO0FBQ0EsUUFBSUMsSUFBSixFQUFVWCxJQUFWO0FBQ0EsUUFBSVksT0FBTyxHQUFHLG1CQUFkOztBQUVBLFNBQUssSUFBSTVCLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdoQixNQUFwQixFQUE0QmdCLENBQUMsSUFBSSxDQUFqQyxFQUFvQztBQUNsQzdDLE1BQUFBLEtBQUssR0FBRzJCLE1BQU0sQ0FBQ2tCLENBQUQsQ0FBZDtBQUNBdEIsTUFBQUEsSUFBSSxHQUFHdkIsS0FBSyxDQUFDLENBQUQsQ0FBWjs7QUFFQSxVQUFJdUIsSUFBSSxLQUFLLFNBQVQsSUFBc0JiLElBQUksQ0FBQ2EsSUFBTCxLQUFjLE1BQXhDLEVBQWdEO0FBQzlDc0MsUUFBQUEsSUFBSSxHQUFHbEMsTUFBTSxDQUFDa0IsQ0FBQyxHQUFHLENBQUwsQ0FBYjtBQUNBMkIsUUFBQUEsSUFBSSxHQUFHN0MsTUFBTSxDQUFDa0IsQ0FBQyxHQUFHLENBQUwsQ0FBYjs7QUFFQSxZQUNFZ0IsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLE9BQVosSUFDQVcsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLE9BRFosSUFFQUMsT0FBTyxDQUFDMUQsSUFBUixDQUFhOEMsSUFBSSxDQUFDLENBQUQsQ0FBakIsQ0FGQSxJQUdBWSxPQUFPLENBQUMxRCxJQUFSLENBQWF5RCxJQUFJLENBQUMsQ0FBRCxDQUFqQixDQUpGLEVBS0U7QUFDQWhCLFVBQUFBLEtBQUssSUFBSXhELEtBQUssQ0FBQyxDQUFELENBQWQ7QUFDRCxTQVBELE1BT087QUFDTHVFLFVBQUFBLEtBQUssR0FBRyxLQUFSO0FBQ0Q7O0FBRUQ7QUFDRDs7QUFFRCxVQUFJaEQsSUFBSSxLQUFLLFNBQVQsSUFBdUJBLElBQUksS0FBSyxPQUFULElBQW9Cc0IsQ0FBQyxLQUFLaEIsTUFBTSxHQUFHLENBQTlELEVBQWtFO0FBQ2hFMEMsUUFBQUEsS0FBSyxHQUFHLEtBQVI7QUFDRCxPQUZELE1BRU87QUFDTGYsUUFBQUEsS0FBSyxJQUFJeEQsS0FBSyxDQUFDLENBQUQsQ0FBZDtBQUNEO0FBQ0Y7O0FBQ0QsUUFBSSxDQUFDdUUsS0FBTCxFQUFZO0FBQ1YsVUFBSWxDLEdBQUcsR0FBR1YsTUFBTSxDQUFDK0MsTUFBUCxDQUFjLFVBQUNDLEdBQUQsRUFBTTlCLENBQU47QUFBQSxlQUFZOEIsR0FBRyxHQUFHOUIsQ0FBQyxDQUFDLENBQUQsQ0FBbkI7QUFBQSxPQUFkLEVBQXNDLEVBQXRDLENBQVY7QUFDQW5DLE1BQUFBLElBQUksQ0FBQ00sSUFBTCxDQUFVMEIsSUFBVixJQUFrQjtBQUFFYyxRQUFBQSxLQUFLLEVBQUxBLEtBQUY7QUFBU25CLFFBQUFBLEdBQUcsRUFBSEE7QUFBVCxPQUFsQjtBQUNEOztBQUNEM0IsSUFBQUEsSUFBSSxDQUFDZ0MsSUFBRCxDQUFKLEdBQWFjLEtBQWI7QUFDRCxHOztTQUVEcEIsd0IsR0FBQSxrQ0FBMEJULE1BQTFCLEVBQWtDO0FBQ2hDLFFBQUlpRCxhQUFKO0FBQ0EsUUFBSXJGLE1BQU0sR0FBRyxFQUFiOztBQUNBLFdBQU9vQyxNQUFNLENBQUNFLE1BQWQsRUFBc0I7QUFDcEIrQyxNQUFBQSxhQUFhLEdBQUdqRCxNQUFNLENBQUNBLE1BQU0sQ0FBQ0UsTUFBUCxHQUFnQixDQUFqQixDQUFOLENBQTBCLENBQTFCLENBQWhCO0FBQ0EsVUFBSStDLGFBQWEsS0FBSyxPQUFsQixJQUE2QkEsYUFBYSxLQUFLLFNBQW5ELEVBQThEO0FBQzlEckYsTUFBQUEsTUFBTSxHQUFHb0MsTUFBTSxDQUFDTSxHQUFQLEdBQWEsQ0FBYixJQUFrQjFDLE1BQTNCO0FBQ0Q7O0FBQ0QsV0FBT0EsTUFBUDtBQUNELEc7O1NBRURvRCwwQixHQUFBLG9DQUE0QmhCLE1BQTVCLEVBQW9DO0FBQ2xDLFFBQUk2QyxJQUFKO0FBQ0EsUUFBSWpGLE1BQU0sR0FBRyxFQUFiOztBQUNBLFdBQU9vQyxNQUFNLENBQUNFLE1BQWQsRUFBc0I7QUFDcEIyQyxNQUFBQSxJQUFJLEdBQUc3QyxNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsQ0FBVixDQUFQO0FBQ0EsVUFBSTZDLElBQUksS0FBSyxPQUFULElBQW9CQSxJQUFJLEtBQUssU0FBakMsRUFBNEM7QUFDNUNqRixNQUFBQSxNQUFNLElBQUlvQyxNQUFNLENBQUNjLEtBQVAsR0FBZSxDQUFmLENBQVY7QUFDRDs7QUFDRCxXQUFPbEQsTUFBUDtBQUNELEc7O1NBRUQyRCxhLEdBQUEsdUJBQWV2QixNQUFmLEVBQXVCO0FBQ3JCLFFBQUlpRCxhQUFKO0FBQ0EsUUFBSXJGLE1BQU0sR0FBRyxFQUFiOztBQUNBLFdBQU9vQyxNQUFNLENBQUNFLE1BQWQsRUFBc0I7QUFDcEIrQyxNQUFBQSxhQUFhLEdBQUdqRCxNQUFNLENBQUNBLE1BQU0sQ0FBQ0UsTUFBUCxHQUFnQixDQUFqQixDQUFOLENBQTBCLENBQTFCLENBQWhCO0FBQ0EsVUFBSStDLGFBQWEsS0FBSyxPQUF0QixFQUErQjtBQUMvQnJGLE1BQUFBLE1BQU0sR0FBR29DLE1BQU0sQ0FBQ00sR0FBUCxHQUFhLENBQWIsSUFBa0IxQyxNQUEzQjtBQUNEOztBQUNELFdBQU9BLE1BQVA7QUFDRCxHOztTQUVEMEQsVSxHQUFBLG9CQUFZdEIsTUFBWixFQUFvQmtELElBQXBCLEVBQTBCO0FBQ3hCLFFBQUlDLE1BQU0sR0FBRyxFQUFiOztBQUNBLFNBQUssSUFBSWpDLENBQUMsR0FBR2dDLElBQWIsRUFBbUJoQyxDQUFDLEdBQUdsQixNQUFNLENBQUNFLE1BQTlCLEVBQXNDZ0IsQ0FBQyxFQUF2QyxFQUEyQztBQUN6Q2lDLE1BQUFBLE1BQU0sSUFBSW5ELE1BQU0sQ0FBQ2tCLENBQUQsQ0FBTixDQUFVLENBQVYsQ0FBVjtBQUNEOztBQUNEbEIsSUFBQUEsTUFBTSxDQUFDb0QsTUFBUCxDQUFjRixJQUFkLEVBQW9CbEQsTUFBTSxDQUFDRSxNQUFQLEdBQWdCZ0QsSUFBcEM7QUFDQSxXQUFPQyxNQUFQO0FBQ0QsRzs7U0FFRHRELEssR0FBQSxlQUFPRyxNQUFQLEVBQWU7QUFDYixRQUFJRCxRQUFRLEdBQUcsQ0FBZjtBQUNBLFFBQUkxQixLQUFKLEVBQVd1QixJQUFYLEVBQWlCc0MsSUFBakI7O0FBQ0EsU0FBSyxJQUFJaEIsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR2xCLE1BQU0sQ0FBQ0UsTUFBM0IsRUFBbUNnQixDQUFDLEVBQXBDLEVBQXdDO0FBQ3RDN0MsTUFBQUEsS0FBSyxHQUFHMkIsTUFBTSxDQUFDa0IsQ0FBRCxDQUFkO0FBQ0F0QixNQUFBQSxJQUFJLEdBQUd2QixLQUFLLENBQUMsQ0FBRCxDQUFaOztBQUVBLFVBQUl1QixJQUFJLEtBQUssR0FBYixFQUFrQjtBQUNoQkcsUUFBQUEsUUFBUSxJQUFJLENBQVo7QUFDRDs7QUFDRCxVQUFJSCxJQUFJLEtBQUssR0FBYixFQUFrQjtBQUNoQkcsUUFBQUEsUUFBUSxJQUFJLENBQVo7QUFDRDs7QUFDRCxVQUFJQSxRQUFRLEtBQUssQ0FBYixJQUFrQkgsSUFBSSxLQUFLLEdBQS9CLEVBQW9DO0FBQ2xDLFlBQUksQ0FBQ3NDLElBQUwsRUFBVztBQUNULGVBQUttQixXQUFMLENBQWlCaEYsS0FBakI7QUFDRCxTQUZELE1BRU8sSUFBSTZELElBQUksQ0FBQyxDQUFELENBQUosS0FBWSxNQUFaLElBQXNCQSxJQUFJLENBQUMsQ0FBRCxDQUFKLEtBQVksUUFBdEMsRUFBZ0Q7QUFDckQ7QUFDRCxTQUZNLE1BRUE7QUFDTCxpQkFBT2hCLENBQVA7QUFDRDtBQUNGOztBQUVEZ0IsTUFBQUEsSUFBSSxHQUFHN0QsS0FBUDtBQUNEOztBQUNELFdBQU8sS0FBUDtBQUNELEcsQ0FFRDs7O1NBRUFrQyxlLEdBQUEseUJBQWlCVCxPQUFqQixFQUEwQjtBQUN4QixVQUFNLEtBQUt0QyxLQUFMLENBQVc4RixLQUFYLENBQWlCLGtCQUFqQixFQUFxQ3hELE9BQU8sQ0FBQyxDQUFELENBQTVDLEVBQWlEQSxPQUFPLENBQUMsQ0FBRCxDQUF4RCxDQUFOO0FBQ0QsRzs7U0FFRFUsVyxHQUFBLHFCQUFhUixNQUFiLEVBQXFCO0FBQ25CLFVBQU0sS0FBS3hDLEtBQUwsQ0FBVzhGLEtBQVgsQ0FBaUIsY0FBakIsRUFBaUN0RCxNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsQ0FBVixDQUFqQyxFQUErQ0EsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVLENBQVYsQ0FBL0MsQ0FBTjtBQUNELEc7O1NBRUR5QyxlLEdBQUEseUJBQWlCcEUsS0FBakIsRUFBd0I7QUFDdEIsVUFBTSxLQUFLYixLQUFMLENBQVc4RixLQUFYLENBQWlCLGNBQWpCLEVBQWlDakYsS0FBSyxDQUFDLENBQUQsQ0FBdEMsRUFBMkNBLEtBQUssQ0FBQyxDQUFELENBQWhELENBQU47QUFDRCxHOztTQUVEcUUsYSxHQUFBLHlCQUFpQjtBQUNmLFFBQUlhLEdBQUcsR0FBRyxLQUFLNUYsT0FBTCxDQUFhSSxNQUFiLENBQW9CQyxLQUE5QjtBQUNBLFVBQU0sS0FBS1IsS0FBTCxDQUFXOEYsS0FBWCxDQUFpQixnQkFBakIsRUFBbUNDLEdBQUcsQ0FBQ3RGLElBQXZDLEVBQTZDc0YsR0FBRyxDQUFDckYsTUFBakQsQ0FBTjtBQUNELEc7O1NBRURtRixXLEdBQUEscUJBQWFoRixLQUFiLEVBQW9CO0FBQ2xCLFVBQU0sS0FBS2IsS0FBTCxDQUFXOEYsS0FBWCxDQUFpQixjQUFqQixFQUFpQ2pGLEtBQUssQ0FBQyxDQUFELENBQXRDLEVBQTJDQSxLQUFLLENBQUMsQ0FBRCxDQUFoRCxDQUFOO0FBQ0QsRzs7U0FFRDRELGEsR0FBQSx1QkFBZWxELElBQWYsRUFBcUJWLEtBQXJCLEVBQTRCO0FBQzFCLFVBQU0sS0FBS2IsS0FBTCxDQUFXOEYsS0FBWCxDQUFpQixzQkFBakIsRUFBeUNqRixLQUFLLENBQUMsQ0FBRCxDQUE5QyxFQUFtREEsS0FBSyxDQUFDLENBQUQsQ0FBeEQsQ0FBTjtBQUNELEc7O1NBRUQ0Qyx1QixHQUFBO0FBQXlCO0FBQWMsR0FDckM7QUFDRCxHOztTQUVEYSxvQixHQUFBLDhCQUFzQjlCLE1BQXRCLEVBQThCO0FBQzVCLFFBQUlILEtBQUssR0FBRyxLQUFLQSxLQUFMLENBQVdHLE1BQVgsQ0FBWjtBQUNBLFFBQUlILEtBQUssS0FBSyxLQUFkLEVBQXFCO0FBRXJCLFFBQUkyRCxPQUFPLEdBQUcsQ0FBZDtBQUNBLFFBQUluRixLQUFKOztBQUNBLFNBQUssSUFBSXFELENBQUMsR0FBRzdCLEtBQUssR0FBRyxDQUFyQixFQUF3QjZCLENBQUMsSUFBSSxDQUE3QixFQUFnQ0EsQ0FBQyxFQUFqQyxFQUFxQztBQUNuQ3JELE1BQUFBLEtBQUssR0FBRzJCLE1BQU0sQ0FBQzBCLENBQUQsQ0FBZDs7QUFDQSxVQUFJckQsS0FBSyxDQUFDLENBQUQsQ0FBTCxLQUFhLE9BQWpCLEVBQTBCO0FBQ3hCbUYsUUFBQUEsT0FBTyxJQUFJLENBQVg7QUFDQSxZQUFJQSxPQUFPLEtBQUssQ0FBaEIsRUFBbUI7QUFDcEI7QUFDRjs7QUFDRCxVQUFNLEtBQUtoRyxLQUFMLENBQVc4RixLQUFYLENBQWlCLGtCQUFqQixFQUFxQ2pGLEtBQUssQ0FBQyxDQUFELENBQTFDLEVBQStDQSxLQUFLLENBQUMsQ0FBRCxDQUFwRCxDQUFOO0FBQ0QsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEZWNsYXJhdGlvbiBmcm9tICcuL2RlY2xhcmF0aW9uJ1xuaW1wb3J0IHRva2VuaXplciBmcm9tICcuL3Rva2VuaXplJ1xuaW1wb3J0IENvbW1lbnQgZnJvbSAnLi9jb21tZW50J1xuaW1wb3J0IEF0UnVsZSBmcm9tICcuL2F0LXJ1bGUnXG5pbXBvcnQgUm9vdCBmcm9tICcuL3Jvb3QnXG5pbXBvcnQgUnVsZSBmcm9tICcuL3J1bGUnXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcnNlciB7XG4gIGNvbnN0cnVjdG9yIChpbnB1dCkge1xuICAgIHRoaXMuaW5wdXQgPSBpbnB1dFxuXG4gICAgdGhpcy5yb290ID0gbmV3IFJvb3QoKVxuICAgIHRoaXMuY3VycmVudCA9IHRoaXMucm9vdFxuICAgIHRoaXMuc3BhY2VzID0gJydcbiAgICB0aGlzLnNlbWljb2xvbiA9IGZhbHNlXG5cbiAgICB0aGlzLmNyZWF0ZVRva2VuaXplcigpXG4gICAgdGhpcy5yb290LnNvdXJjZSA9IHsgaW5wdXQsIHN0YXJ0OiB7IGxpbmU6IDEsIGNvbHVtbjogMSB9IH1cbiAgfVxuXG4gIGNyZWF0ZVRva2VuaXplciAoKSB7XG4gICAgdGhpcy50b2tlbml6ZXIgPSB0b2tlbml6ZXIodGhpcy5pbnB1dClcbiAgfVxuXG4gIHBhcnNlICgpIHtcbiAgICBsZXQgdG9rZW5cbiAgICB3aGlsZSAoIXRoaXMudG9rZW5pemVyLmVuZE9mRmlsZSgpKSB7XG4gICAgICB0b2tlbiA9IHRoaXMudG9rZW5pemVyLm5leHRUb2tlbigpXG5cbiAgICAgIHN3aXRjaCAodG9rZW5bMF0pIHtcbiAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgIHRoaXMuc3BhY2VzICs9IHRva2VuWzFdXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICc7JzpcbiAgICAgICAgICB0aGlzLmZyZWVTZW1pY29sb24odG9rZW4pXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICd9JzpcbiAgICAgICAgICB0aGlzLmVuZCh0b2tlbilcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgIHRoaXMuY29tbWVudCh0b2tlbilcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJ2F0LXdvcmQnOlxuICAgICAgICAgIHRoaXMuYXRydWxlKHRva2VuKVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAneyc6XG4gICAgICAgICAgdGhpcy5lbXB0eVJ1bGUodG9rZW4pXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoaXMub3RoZXIodG9rZW4pXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5lbmRGaWxlKClcbiAgfVxuXG4gIGNvbW1lbnQgKHRva2VuKSB7XG4gICAgbGV0IG5vZGUgPSBuZXcgQ29tbWVudCgpXG4gICAgdGhpcy5pbml0KG5vZGUsIHRva2VuWzJdLCB0b2tlblszXSlcbiAgICBub2RlLnNvdXJjZS5lbmQgPSB7IGxpbmU6IHRva2VuWzRdLCBjb2x1bW46IHRva2VuWzVdIH1cblxuICAgIGxldCB0ZXh0ID0gdG9rZW5bMV0uc2xpY2UoMiwgLTIpXG4gICAgaWYgKC9eXFxzKiQvLnRlc3QodGV4dCkpIHtcbiAgICAgIG5vZGUudGV4dCA9ICcnXG4gICAgICBub2RlLnJhd3MubGVmdCA9IHRleHRcbiAgICAgIG5vZGUucmF3cy5yaWdodCA9ICcnXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBtYXRjaCA9IHRleHQubWF0Y2goL14oXFxzKikoW15dKlteXFxzXSkoXFxzKikkLylcbiAgICAgIG5vZGUudGV4dCA9IG1hdGNoWzJdXG4gICAgICBub2RlLnJhd3MubGVmdCA9IG1hdGNoWzFdXG4gICAgICBub2RlLnJhd3MucmlnaHQgPSBtYXRjaFszXVxuICAgIH1cbiAgfVxuXG4gIGVtcHR5UnVsZSAodG9rZW4pIHtcbiAgICBsZXQgbm9kZSA9IG5ldyBSdWxlKClcbiAgICB0aGlzLmluaXQobm9kZSwgdG9rZW5bMl0sIHRva2VuWzNdKVxuICAgIG5vZGUuc2VsZWN0b3IgPSAnJ1xuICAgIG5vZGUucmF3cy5iZXR3ZWVuID0gJydcbiAgICB0aGlzLmN1cnJlbnQgPSBub2RlXG4gIH1cblxuICBvdGhlciAoc3RhcnQpIHtcbiAgICBsZXQgZW5kID0gZmFsc2VcbiAgICBsZXQgdHlwZSA9IG51bGxcbiAgICBsZXQgY29sb24gPSBmYWxzZVxuICAgIGxldCBicmFja2V0ID0gbnVsbFxuICAgIGxldCBicmFja2V0cyA9IFtdXG5cbiAgICBsZXQgdG9rZW5zID0gW11cbiAgICBsZXQgdG9rZW4gPSBzdGFydFxuICAgIHdoaWxlICh0b2tlbikge1xuICAgICAgdHlwZSA9IHRva2VuWzBdXG4gICAgICB0b2tlbnMucHVzaCh0b2tlbilcblxuICAgICAgaWYgKHR5cGUgPT09ICcoJyB8fCB0eXBlID09PSAnWycpIHtcbiAgICAgICAgaWYgKCFicmFja2V0KSBicmFja2V0ID0gdG9rZW5cbiAgICAgICAgYnJhY2tldHMucHVzaCh0eXBlID09PSAnKCcgPyAnKScgOiAnXScpXG4gICAgICB9IGVsc2UgaWYgKGJyYWNrZXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAodHlwZSA9PT0gJzsnKSB7XG4gICAgICAgICAgaWYgKGNvbG9uKSB7XG4gICAgICAgICAgICB0aGlzLmRlY2wodG9rZW5zKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd7Jykge1xuICAgICAgICAgIHRoaXMucnVsZSh0b2tlbnMpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ30nKSB7XG4gICAgICAgICAgdGhpcy50b2tlbml6ZXIuYmFjayh0b2tlbnMucG9wKCkpXG4gICAgICAgICAgZW5kID0gdHJ1ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJzonKSB7XG4gICAgICAgICAgY29sb24gPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gYnJhY2tldHNbYnJhY2tldHMubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgYnJhY2tldHMucG9wKClcbiAgICAgICAgaWYgKGJyYWNrZXRzLmxlbmd0aCA9PT0gMCkgYnJhY2tldCA9IG51bGxcbiAgICAgIH1cblxuICAgICAgdG9rZW4gPSB0aGlzLnRva2VuaXplci5uZXh0VG9rZW4oKVxuICAgIH1cblxuICAgIGlmICh0aGlzLnRva2VuaXplci5lbmRPZkZpbGUoKSkgZW5kID0gdHJ1ZVxuICAgIGlmIChicmFja2V0cy5sZW5ndGggPiAwKSB0aGlzLnVuY2xvc2VkQnJhY2tldChicmFja2V0KVxuXG4gICAgaWYgKGVuZCAmJiBjb2xvbikge1xuICAgICAgd2hpbGUgKHRva2Vucy5sZW5ndGgpIHtcbiAgICAgICAgdG9rZW4gPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdWzBdXG4gICAgICAgIGlmICh0b2tlbiAhPT0gJ3NwYWNlJyAmJiB0b2tlbiAhPT0gJ2NvbW1lbnQnKSBicmVha1xuICAgICAgICB0aGlzLnRva2VuaXplci5iYWNrKHRva2Vucy5wb3AoKSlcbiAgICAgIH1cbiAgICAgIHRoaXMuZGVjbCh0b2tlbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudW5rbm93bldvcmQodG9rZW5zKVxuICAgIH1cbiAgfVxuXG4gIHJ1bGUgKHRva2Vucykge1xuICAgIHRva2Vucy5wb3AoKVxuXG4gICAgbGV0IG5vZGUgPSBuZXcgUnVsZSgpXG4gICAgdGhpcy5pbml0KG5vZGUsIHRva2Vuc1swXVsyXSwgdG9rZW5zWzBdWzNdKVxuXG4gICAgbm9kZS5yYXdzLmJldHdlZW4gPSB0aGlzLnNwYWNlc0FuZENvbW1lbnRzRnJvbUVuZCh0b2tlbnMpXG4gICAgdGhpcy5yYXcobm9kZSwgJ3NlbGVjdG9yJywgdG9rZW5zKVxuICAgIHRoaXMuY3VycmVudCA9IG5vZGVcbiAgfVxuXG4gIGRlY2wgKHRva2Vucykge1xuICAgIGxldCBub2RlID0gbmV3IERlY2xhcmF0aW9uKClcbiAgICB0aGlzLmluaXQobm9kZSlcblxuICAgIGxldCBsYXN0ID0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXVxuICAgIGlmIChsYXN0WzBdID09PSAnOycpIHtcbiAgICAgIHRoaXMuc2VtaWNvbG9uID0gdHJ1ZVxuICAgICAgdG9rZW5zLnBvcCgpXG4gICAgfVxuICAgIGlmIChsYXN0WzRdKSB7XG4gICAgICBub2RlLnNvdXJjZS5lbmQgPSB7IGxpbmU6IGxhc3RbNF0sIGNvbHVtbjogbGFzdFs1XSB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogbGFzdFsyXSwgY29sdW1uOiBsYXN0WzNdIH1cbiAgICB9XG5cbiAgICB3aGlsZSAodG9rZW5zWzBdWzBdICE9PSAnd29yZCcpIHtcbiAgICAgIGlmICh0b2tlbnMubGVuZ3RoID09PSAxKSB0aGlzLnVua25vd25Xb3JkKHRva2VucylcbiAgICAgIG5vZGUucmF3cy5iZWZvcmUgKz0gdG9rZW5zLnNoaWZ0KClbMV1cbiAgICB9XG4gICAgbm9kZS5zb3VyY2Uuc3RhcnQgPSB7IGxpbmU6IHRva2Vuc1swXVsyXSwgY29sdW1uOiB0b2tlbnNbMF1bM10gfVxuXG4gICAgbm9kZS5wcm9wID0gJydcbiAgICB3aGlsZSAodG9rZW5zLmxlbmd0aCkge1xuICAgICAgbGV0IHR5cGUgPSB0b2tlbnNbMF1bMF1cbiAgICAgIGlmICh0eXBlID09PSAnOicgfHwgdHlwZSA9PT0gJ3NwYWNlJyB8fCB0eXBlID09PSAnY29tbWVudCcpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIG5vZGUucHJvcCArPSB0b2tlbnMuc2hpZnQoKVsxXVxuICAgIH1cblxuICAgIG5vZGUucmF3cy5iZXR3ZWVuID0gJydcblxuICAgIGxldCB0b2tlblxuICAgIHdoaWxlICh0b2tlbnMubGVuZ3RoKSB7XG4gICAgICB0b2tlbiA9IHRva2Vucy5zaGlmdCgpXG5cbiAgICAgIGlmICh0b2tlblswXSA9PT0gJzonKSB7XG4gICAgICAgIG5vZGUucmF3cy5iZXR3ZWVuICs9IHRva2VuWzFdXG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodG9rZW5bMF0gPT09ICd3b3JkJyAmJiAvXFx3Ly50ZXN0KHRva2VuWzFdKSkge1xuICAgICAgICAgIHRoaXMudW5rbm93bldvcmQoW3Rva2VuXSlcbiAgICAgICAgfVxuICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiArPSB0b2tlblsxXVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChub2RlLnByb3BbMF0gPT09ICdfJyB8fCBub2RlLnByb3BbMF0gPT09ICcqJykge1xuICAgICAgbm9kZS5yYXdzLmJlZm9yZSArPSBub2RlLnByb3BbMF1cbiAgICAgIG5vZGUucHJvcCA9IG5vZGUucHJvcC5zbGljZSgxKVxuICAgIH1cbiAgICBub2RlLnJhd3MuYmV0d2VlbiArPSB0aGlzLnNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0KHRva2VucylcbiAgICB0aGlzLnByZWNoZWNrTWlzc2VkU2VtaWNvbG9uKHRva2VucylcblxuICAgIGZvciAobGV0IGkgPSB0b2tlbnMubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkge1xuICAgICAgdG9rZW4gPSB0b2tlbnNbaV1cbiAgICAgIGlmICh0b2tlblsxXS50b0xvd2VyQ2FzZSgpID09PSAnIWltcG9ydGFudCcpIHtcbiAgICAgICAgbm9kZS5pbXBvcnRhbnQgPSB0cnVlXG4gICAgICAgIGxldCBzdHJpbmcgPSB0aGlzLnN0cmluZ0Zyb20odG9rZW5zLCBpKVxuICAgICAgICBzdHJpbmcgPSB0aGlzLnNwYWNlc0Zyb21FbmQodG9rZW5zKSArIHN0cmluZ1xuICAgICAgICBpZiAoc3RyaW5nICE9PSAnICFpbXBvcnRhbnQnKSBub2RlLnJhd3MuaW1wb3J0YW50ID0gc3RyaW5nXG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2UgaWYgKHRva2VuWzFdLnRvTG93ZXJDYXNlKCkgPT09ICdpbXBvcnRhbnQnKSB7XG4gICAgICAgIGxldCBjYWNoZSA9IHRva2Vucy5zbGljZSgwKVxuICAgICAgICBsZXQgc3RyID0gJydcbiAgICAgICAgZm9yIChsZXQgaiA9IGk7IGogPiAwOyBqLS0pIHtcbiAgICAgICAgICBsZXQgdHlwZSA9IGNhY2hlW2pdWzBdXG4gICAgICAgICAgaWYgKHN0ci50cmltKCkuaW5kZXhPZignIScpID09PSAwICYmIHR5cGUgIT09ICdzcGFjZScpIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIHN0ciA9IGNhY2hlLnBvcCgpWzFdICsgc3RyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0ci50cmltKCkuaW5kZXhPZignIScpID09PSAwKSB7XG4gICAgICAgICAgbm9kZS5pbXBvcnRhbnQgPSB0cnVlXG4gICAgICAgICAgbm9kZS5yYXdzLmltcG9ydGFudCA9IHN0clxuICAgICAgICAgIHRva2VucyA9IGNhY2hlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRva2VuWzBdICE9PSAnc3BhY2UnICYmIHRva2VuWzBdICE9PSAnY29tbWVudCcpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnJhdyhub2RlLCAndmFsdWUnLCB0b2tlbnMpXG5cbiAgICBpZiAobm9kZS52YWx1ZS5pbmRleE9mKCc6JykgIT09IC0xKSB0aGlzLmNoZWNrTWlzc2VkU2VtaWNvbG9uKHRva2VucylcbiAgfVxuXG4gIGF0cnVsZSAodG9rZW4pIHtcbiAgICBsZXQgbm9kZSA9IG5ldyBBdFJ1bGUoKVxuICAgIG5vZGUubmFtZSA9IHRva2VuWzFdLnNsaWNlKDEpXG4gICAgaWYgKG5vZGUubmFtZSA9PT0gJycpIHtcbiAgICAgIHRoaXMudW5uYW1lZEF0cnVsZShub2RlLCB0b2tlbilcbiAgICB9XG4gICAgdGhpcy5pbml0KG5vZGUsIHRva2VuWzJdLCB0b2tlblszXSlcblxuICAgIGxldCBwcmV2XG4gICAgbGV0IHNoaWZ0XG4gICAgbGV0IGxhc3QgPSBmYWxzZVxuICAgIGxldCBvcGVuID0gZmFsc2VcbiAgICBsZXQgcGFyYW1zID0gW11cblxuICAgIHdoaWxlICghdGhpcy50b2tlbml6ZXIuZW5kT2ZGaWxlKCkpIHtcbiAgICAgIHRva2VuID0gdGhpcy50b2tlbml6ZXIubmV4dFRva2VuKClcblxuICAgICAgaWYgKHRva2VuWzBdID09PSAnOycpIHtcbiAgICAgICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiB0b2tlblsyXSwgY29sdW1uOiB0b2tlblszXSB9XG4gICAgICAgIHRoaXMuc2VtaWNvbG9uID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIGlmICh0b2tlblswXSA9PT0gJ3snKSB7XG4gICAgICAgIG9wZW4gPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2UgaWYgKHRva2VuWzBdID09PSAnfScpIHtcbiAgICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgc2hpZnQgPSBwYXJhbXMubGVuZ3RoIC0gMVxuICAgICAgICAgIHByZXYgPSBwYXJhbXNbc2hpZnRdXG4gICAgICAgICAgd2hpbGUgKHByZXYgJiYgcHJldlswXSA9PT0gJ3NwYWNlJykge1xuICAgICAgICAgICAgcHJldiA9IHBhcmFtc1stLXNoaWZ0XVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiBwcmV2WzRdLCBjb2x1bW46IHByZXZbNV0gfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVuZCh0b2tlbilcbiAgICAgICAgYnJlYWtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcmFtcy5wdXNoKHRva2VuKVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy50b2tlbml6ZXIuZW5kT2ZGaWxlKCkpIHtcbiAgICAgICAgbGFzdCA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBub2RlLnJhd3MuYmV0d2VlbiA9IHRoaXMuc3BhY2VzQW5kQ29tbWVudHNGcm9tRW5kKHBhcmFtcylcbiAgICBpZiAocGFyYW1zLmxlbmd0aCkge1xuICAgICAgbm9kZS5yYXdzLmFmdGVyTmFtZSA9IHRoaXMuc3BhY2VzQW5kQ29tbWVudHNGcm9tU3RhcnQocGFyYW1zKVxuICAgICAgdGhpcy5yYXcobm9kZSwgJ3BhcmFtcycsIHBhcmFtcylcbiAgICAgIGlmIChsYXN0KSB7XG4gICAgICAgIHRva2VuID0gcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXVxuICAgICAgICBub2RlLnNvdXJjZS5lbmQgPSB7IGxpbmU6IHRva2VuWzRdLCBjb2x1bW46IHRva2VuWzVdIH1cbiAgICAgICAgdGhpcy5zcGFjZXMgPSBub2RlLnJhd3MuYmV0d2VlblxuICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiA9ICcnXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUucmF3cy5hZnRlck5hbWUgPSAnJ1xuICAgICAgbm9kZS5wYXJhbXMgPSAnJ1xuICAgIH1cblxuICAgIGlmIChvcGVuKSB7XG4gICAgICBub2RlLm5vZGVzID0gW11cbiAgICAgIHRoaXMuY3VycmVudCA9IG5vZGVcbiAgICB9XG4gIH1cblxuICBlbmQgKHRva2VuKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudC5ub2RlcyAmJiB0aGlzLmN1cnJlbnQubm9kZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmN1cnJlbnQucmF3cy5zZW1pY29sb24gPSB0aGlzLnNlbWljb2xvblxuICAgIH1cbiAgICB0aGlzLnNlbWljb2xvbiA9IGZhbHNlXG5cbiAgICB0aGlzLmN1cnJlbnQucmF3cy5hZnRlciA9ICh0aGlzLmN1cnJlbnQucmF3cy5hZnRlciB8fCAnJykgKyB0aGlzLnNwYWNlc1xuICAgIHRoaXMuc3BhY2VzID0gJydcblxuICAgIGlmICh0aGlzLmN1cnJlbnQucGFyZW50KSB7XG4gICAgICB0aGlzLmN1cnJlbnQuc291cmNlLmVuZCA9IHsgbGluZTogdG9rZW5bMl0sIGNvbHVtbjogdG9rZW5bM10gfVxuICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5jdXJyZW50LnBhcmVudFxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVuZXhwZWN0ZWRDbG9zZSh0b2tlbilcbiAgICB9XG4gIH1cblxuICBlbmRGaWxlICgpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50LnBhcmVudCkgdGhpcy51bmNsb3NlZEJsb2NrKClcbiAgICBpZiAodGhpcy5jdXJyZW50Lm5vZGVzICYmIHRoaXMuY3VycmVudC5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY3VycmVudC5yYXdzLnNlbWljb2xvbiA9IHRoaXMuc2VtaWNvbG9uXG4gICAgfVxuICAgIHRoaXMuY3VycmVudC5yYXdzLmFmdGVyID0gKHRoaXMuY3VycmVudC5yYXdzLmFmdGVyIHx8ICcnKSArIHRoaXMuc3BhY2VzXG4gIH1cblxuICBmcmVlU2VtaWNvbG9uICh0b2tlbikge1xuICAgIHRoaXMuc3BhY2VzICs9IHRva2VuWzFdXG4gICAgaWYgKHRoaXMuY3VycmVudC5ub2Rlcykge1xuICAgICAgbGV0IHByZXYgPSB0aGlzLmN1cnJlbnQubm9kZXNbdGhpcy5jdXJyZW50Lm5vZGVzLmxlbmd0aCAtIDFdXG4gICAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09ICdydWxlJyAmJiAhcHJldi5yYXdzLm93blNlbWljb2xvbikge1xuICAgICAgICBwcmV2LnJhd3Mub3duU2VtaWNvbG9uID0gdGhpcy5zcGFjZXNcbiAgICAgICAgdGhpcy5zcGFjZXMgPSAnJ1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhlbHBlcnNcblxuICBpbml0IChub2RlLCBsaW5lLCBjb2x1bW4pIHtcbiAgICB0aGlzLmN1cnJlbnQucHVzaChub2RlKVxuXG4gICAgbm9kZS5zb3VyY2UgPSB7IHN0YXJ0OiB7IGxpbmUsIGNvbHVtbiB9LCBpbnB1dDogdGhpcy5pbnB1dCB9XG4gICAgbm9kZS5yYXdzLmJlZm9yZSA9IHRoaXMuc3BhY2VzXG4gICAgdGhpcy5zcGFjZXMgPSAnJ1xuICAgIGlmIChub2RlLnR5cGUgIT09ICdjb21tZW50JykgdGhpcy5zZW1pY29sb24gPSBmYWxzZVxuICB9XG5cbiAgcmF3IChub2RlLCBwcm9wLCB0b2tlbnMpIHtcbiAgICBsZXQgdG9rZW4sIHR5cGVcbiAgICBsZXQgbGVuZ3RoID0gdG9rZW5zLmxlbmd0aFxuICAgIGxldCB2YWx1ZSA9ICcnXG4gICAgbGV0IGNsZWFuID0gdHJ1ZVxuICAgIGxldCBuZXh0LCBwcmV2XG4gICAgbGV0IHBhdHRlcm4gPSAvXihbLnwjXSk/KFtcXHddKSsvaVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdG9rZW4gPSB0b2tlbnNbaV1cbiAgICAgIHR5cGUgPSB0b2tlblswXVxuXG4gICAgICBpZiAodHlwZSA9PT0gJ2NvbW1lbnQnICYmIG5vZGUudHlwZSA9PT0gJ3J1bGUnKSB7XG4gICAgICAgIHByZXYgPSB0b2tlbnNbaSAtIDFdXG4gICAgICAgIG5leHQgPSB0b2tlbnNbaSArIDFdXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZXZbMF0gIT09ICdzcGFjZScgJiZcbiAgICAgICAgICBuZXh0WzBdICE9PSAnc3BhY2UnICYmXG4gICAgICAgICAgcGF0dGVybi50ZXN0KHByZXZbMV0pICYmXG4gICAgICAgICAgcGF0dGVybi50ZXN0KG5leHRbMV0pXG4gICAgICAgICkge1xuICAgICAgICAgIHZhbHVlICs9IHRva2VuWzFdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2xlYW4gPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUgPT09ICdjb21tZW50JyB8fCAodHlwZSA9PT0gJ3NwYWNlJyAmJiBpID09PSBsZW5ndGggLSAxKSkge1xuICAgICAgICBjbGVhbiA9IGZhbHNlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSArPSB0b2tlblsxXVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWNsZWFuKSB7XG4gICAgICBsZXQgcmF3ID0gdG9rZW5zLnJlZHVjZSgoYWxsLCBpKSA9PiBhbGwgKyBpWzFdLCAnJylcbiAgICAgIG5vZGUucmF3c1twcm9wXSA9IHsgdmFsdWUsIHJhdyB9XG4gICAgfVxuICAgIG5vZGVbcHJvcF0gPSB2YWx1ZVxuICB9XG5cbiAgc3BhY2VzQW5kQ29tbWVudHNGcm9tRW5kICh0b2tlbnMpIHtcbiAgICBsZXQgbGFzdFRva2VuVHlwZVxuICAgIGxldCBzcGFjZXMgPSAnJ1xuICAgIHdoaWxlICh0b2tlbnMubGVuZ3RoKSB7XG4gICAgICBsYXN0VG9rZW5UeXBlID0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXVswXVxuICAgICAgaWYgKGxhc3RUb2tlblR5cGUgIT09ICdzcGFjZScgJiYgbGFzdFRva2VuVHlwZSAhPT0gJ2NvbW1lbnQnKSBicmVha1xuICAgICAgc3BhY2VzID0gdG9rZW5zLnBvcCgpWzFdICsgc3BhY2VzXG4gICAgfVxuICAgIHJldHVybiBzcGFjZXNcbiAgfVxuXG4gIHNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0ICh0b2tlbnMpIHtcbiAgICBsZXQgbmV4dFxuICAgIGxldCBzcGFjZXMgPSAnJ1xuICAgIHdoaWxlICh0b2tlbnMubGVuZ3RoKSB7XG4gICAgICBuZXh0ID0gdG9rZW5zWzBdWzBdXG4gICAgICBpZiAobmV4dCAhPT0gJ3NwYWNlJyAmJiBuZXh0ICE9PSAnY29tbWVudCcpIGJyZWFrXG4gICAgICBzcGFjZXMgKz0gdG9rZW5zLnNoaWZ0KClbMV1cbiAgICB9XG4gICAgcmV0dXJuIHNwYWNlc1xuICB9XG5cbiAgc3BhY2VzRnJvbUVuZCAodG9rZW5zKSB7XG4gICAgbGV0IGxhc3RUb2tlblR5cGVcbiAgICBsZXQgc3BhY2VzID0gJydcbiAgICB3aGlsZSAodG9rZW5zLmxlbmd0aCkge1xuICAgICAgbGFzdFRva2VuVHlwZSA9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV1bMF1cbiAgICAgIGlmIChsYXN0VG9rZW5UeXBlICE9PSAnc3BhY2UnKSBicmVha1xuICAgICAgc3BhY2VzID0gdG9rZW5zLnBvcCgpWzFdICsgc3BhY2VzXG4gICAgfVxuICAgIHJldHVybiBzcGFjZXNcbiAgfVxuXG4gIHN0cmluZ0Zyb20gKHRva2VucywgZnJvbSkge1xuICAgIGxldCByZXN1bHQgPSAnJ1xuICAgIGZvciAobGV0IGkgPSBmcm9tOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHQgKz0gdG9rZW5zW2ldWzFdXG4gICAgfVxuICAgIHRva2Vucy5zcGxpY2UoZnJvbSwgdG9rZW5zLmxlbmd0aCAtIGZyb20pXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgY29sb24gKHRva2Vucykge1xuICAgIGxldCBicmFja2V0cyA9IDBcbiAgICBsZXQgdG9rZW4sIHR5cGUsIHByZXZcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgdG9rZW4gPSB0b2tlbnNbaV1cbiAgICAgIHR5cGUgPSB0b2tlblswXVxuXG4gICAgICBpZiAodHlwZSA9PT0gJygnKSB7XG4gICAgICAgIGJyYWNrZXRzICs9IDFcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSAnKScpIHtcbiAgICAgICAgYnJhY2tldHMgLT0gMVxuICAgICAgfVxuICAgICAgaWYgKGJyYWNrZXRzID09PSAwICYmIHR5cGUgPT09ICc6Jykge1xuICAgICAgICBpZiAoIXByZXYpIHtcbiAgICAgICAgICB0aGlzLmRvdWJsZUNvbG9uKHRva2VuKVxuICAgICAgICB9IGVsc2UgaWYgKHByZXZbMF0gPT09ICd3b3JkJyAmJiBwcmV2WzFdID09PSAncHJvZ2lkJykge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwcmV2ID0gdG9rZW5cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBFcnJvcnNcblxuICB1bmNsb3NlZEJyYWNrZXQgKGJyYWNrZXQpIHtcbiAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdVbmNsb3NlZCBicmFja2V0JywgYnJhY2tldFsyXSwgYnJhY2tldFszXSlcbiAgfVxuXG4gIHVua25vd25Xb3JkICh0b2tlbnMpIHtcbiAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdVbmtub3duIHdvcmQnLCB0b2tlbnNbMF1bMl0sIHRva2Vuc1swXVszXSlcbiAgfVxuXG4gIHVuZXhwZWN0ZWRDbG9zZSAodG9rZW4pIHtcbiAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdVbmV4cGVjdGVkIH0nLCB0b2tlblsyXSwgdG9rZW5bM10pXG4gIH1cblxuICB1bmNsb3NlZEJsb2NrICgpIHtcbiAgICBsZXQgcG9zID0gdGhpcy5jdXJyZW50LnNvdXJjZS5zdGFydFxuICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IoJ1VuY2xvc2VkIGJsb2NrJywgcG9zLmxpbmUsIHBvcy5jb2x1bW4pXG4gIH1cblxuICBkb3VibGVDb2xvbiAodG9rZW4pIHtcbiAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdEb3VibGUgY29sb24nLCB0b2tlblsyXSwgdG9rZW5bM10pXG4gIH1cblxuICB1bm5hbWVkQXRydWxlIChub2RlLCB0b2tlbikge1xuICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IoJ0F0LXJ1bGUgd2l0aG91dCBuYW1lJywgdG9rZW5bMl0sIHRva2VuWzNdKVxuICB9XG5cbiAgcHJlY2hlY2tNaXNzZWRTZW1pY29sb24gKC8qIHRva2VucyAqLykge1xuICAgIC8vIEhvb2sgZm9yIFNhZmUgUGFyc2VyXG4gIH1cblxuICBjaGVja01pc3NlZFNlbWljb2xvbiAodG9rZW5zKSB7XG4gICAgbGV0IGNvbG9uID0gdGhpcy5jb2xvbih0b2tlbnMpXG4gICAgaWYgKGNvbG9uID09PSBmYWxzZSkgcmV0dXJuXG5cbiAgICBsZXQgZm91bmRlZCA9IDBcbiAgICBsZXQgdG9rZW5cbiAgICBmb3IgKGxldCBqID0gY29sb24gLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgdG9rZW4gPSB0b2tlbnNbal1cbiAgICAgIGlmICh0b2tlblswXSAhPT0gJ3NwYWNlJykge1xuICAgICAgICBmb3VuZGVkICs9IDFcbiAgICAgICAgaWYgKGZvdW5kZWQgPT09IDIpIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IoJ01pc3NlZCBzZW1pY29sb24nLCB0b2tlblsyXSwgdG9rZW5bM10pXG4gIH1cbn1cbiJdLCJmaWxlIjoicGFyc2VyLmpzIn0=
diff --git a/assets/node_modules/postcss/lib/postcss.d.ts b/assets/node_modules/postcss/lib/postcss.d.ts
deleted file mode 100644
index 48a55e7..0000000
--- a/assets/node_modules/postcss/lib/postcss.d.ts
+++ /dev/null
@@ -1,1277 +0,0 @@
-import * as mozilla from 'source-map';
-
-/**
- * @param plugins Can also be included with the Processor#use method.
- * @returns A processor that will apply plugins as CSS processors.
- */
-declare function postcss(plugins?: postcss.AcceptedPlugin[]): postcss.Processor;
-declare function postcss(...plugins: postcss.AcceptedPlugin[]): postcss.Processor;
-declare namespace postcss {
- type AcceptedPlugin = Plugin<any> | Transformer | {
- postcss: TransformCallback | Processor;
- } | Processor;
- /**
- * Creates a PostCSS plugin with a standard API.
- * @param name Plugin name. Same as in name property in package.json. It will
- * be saved in plugin.postcssPlugin property.
- * @param initializer Will receive plugin options and should return functions
- * to modify nodes in input CSS.
- */
- function plugin<T>(name: string, initializer: PluginInitializer<T>): Plugin<T>;
- interface Plugin<T> extends Transformer {
- (opts?: T): Transformer;
- postcss: Transformer;
- process: (css: string | {
- toString(): string;
- } | Result, opts?: any) => LazyResult;
- }
- interface Transformer extends TransformCallback {
- postcssPlugin?: string;
- postcssVersion?: string;
- }
- interface TransformCallback {
- /**
- * @returns A Promise that resolves when all work is complete. May return
- * synchronously, but that style of plugin is only meant for debugging and
- * development. In either case, the resolved or returned value is not used -
- * the "result" is the output.
- */
- (root: Root, result: Result): Promise<any> | any;
- }
- interface PluginInitializer<T> {
- (pluginOptions?: T): Transformer;
- }
- /**
- * Contains helpers for working with vendor prefixes.
- */
- export namespace vendor {
- /**
- * @returns The vendor prefix extracted from the input string.
- */
- function prefix(prop: string): string;
- /**
- * @returns The input string stripped of its vendor prefix.
- */
- function unprefixed(prop: string): string;
- }
- type ParserInput = string | { toString(): string };
- interface Parser {
- (css: ParserInput, opts?: Pick<ProcessOptions, 'map' | 'from'>): Root;
- }
- interface Builder {
- (part: string, node?: Node, type?: 'start' | 'end'): void;
- }
- interface Stringifier {
- (node: Node, builder: Builder): void;
- }
- /**
- * Default function to convert a node tree into a CSS string.
- */
- const stringify: Stringifier;
- /**
- * Parses source CSS.
- * @param css The CSS to parse.
- * @param options
- * @returns {} A new Root node, which contains the source CSS nodes.
- */
- const parse: Parser;
- /**
- * Contains helpers for safely splitting lists of CSS values, preserving
- * parentheses and quotes.
- */
- export namespace list {
- /**
- * Safely splits space-separated values (such as those for background,
- * border-radius and other shorthand properties).
- */
- function space(str: string): string[];
- /**
- * Safely splits comma-separated values (such as those for transition-* and
- * background properties).
- */
- function comma(str: string): string[];
- }
- /**
- * Creates a new Comment node.
- * @param defaults Properties for the new Comment node.
- * @returns The new node.
- */
- function comment(defaults?: CommentNewProps): Comment;
- /**
- * Creates a new AtRule node.
- * @param defaults Properties for the new AtRule node.
- * @returns The new node.
- */
- function atRule(defaults?: AtRuleNewProps): AtRule;
- /**
- * Creates a new Declaration node.
- * @param defaults Properties for the new Declaration node.
- * @returns The new node.
- */
- function decl(defaults?: DeclarationNewProps): Declaration;
- /**
- * Creates a new Rule node.
- * @param defaults Properties for the new Rule node.
- * @returns The new node.
- */
- function rule(defaults?: RuleNewProps): Rule;
- /**
- * Creates a new Root node.
- * @param defaults Properties for the new Root node.
- * @returns The new node.
- */
- function root(defaults?: object): Root;
- interface SourceMapOptions {
- /**
- * Indicates that the source map should be embedded in the output CSS as a
- * Base64-encoded comment. By default, it is true. But if all previous maps
- * are external, not inline, PostCSS will not embed the map even if you do
- * not set this option.
- *
- * If you have an inline source map, the result.map property will be empty,
- * as the source map will be contained within the text of result.css.
- */
- inline?: boolean;
- /**
- * Source map content from a previous processing step (e.g., Sass compilation).
- * PostCSS will try to read the previous source map automatically (based on comments
- * within the source CSS), but you can use this option to identify it manually.
- * If desired, you can omit the previous map with prev: false.
- */
- prev?: any;
- /**
- * Indicates that PostCSS should set the origin content (e.g., Sass source)
- * of the source map. By default, it is true. But if all previous maps do not
- * contain sources content, PostCSS will also leave it out even if you do not set
- * this option.
- */
- sourcesContent?: boolean;
- /**
- * Indicates that PostCSS should add annotation comments to the CSS. By default,
- * PostCSS will always add a comment with a path to the source map. PostCSS will
- * not add annotations to CSS files that do not contain any comments.
- *
- * By default, PostCSS presumes that you want to save the source map as
- * opts.to + '.map' and will use this path in the annotation comment. A different
- * path can be set by providing a string value for annotation.
- *
- * If you have set inline: true, annotation cannot be disabled.
- */
- annotation?: string | boolean;
- /**
- * Override "from" in map's sources.
- */
- from?: string;
- }
- /**
- * A Processor instance contains plugins to process CSS. Create one
- * Processor instance, initialize its plugins, and then use that instance
- * on numerous CSS files.
- */
- interface Processor {
- /**
- * Adds a plugin to be used as a CSS processor. Plugins can also be
- * added by passing them as arguments when creating a postcss instance.
- */
- use(plugin: AcceptedPlugin): Processor;
- /**
- * Parses source CSS. Because some plugins can be asynchronous it doesn't
- * make any transformations. Transformations will be applied in LazyResult's
- * methods.
- * @param css Input CSS or any object with toString() method, like a file
- * stream. If a Result instance is passed the processor will take the
- * existing Root parser from it.
- */
- process(css: ParserInput | Result | LazyResult | Root, options?: ProcessOptions): LazyResult;
- /**
- * Contains plugins added to this processor.
- */
- plugins: Plugin<any>[];
- /**
- * Contains the current version of PostCSS (e.g., "4.0.5").
- */
- version: string;
- }
- interface ProcessOptions {
- /**
- * The path of the CSS source file. You should always set "from", because it is
- * used in source map generation and syntax error messages.
- */
- from?: string;
- /**
- * The path where you'll put the output CSS file. You should always set "to"
- * to generate correct source maps.
- */
- to?: string;
- /**
- * Function to generate AST by string.
- */
- parser?: Parser;
- /**
- * Class to generate string by AST.
- */
- stringifier?: Stringifier;
- /**
- * Object with parse and stringify.
- */
- syntax?: Syntax;
- /**
- * Source map options
- */
- map?: SourceMapOptions | boolean;
- }
- interface Syntax {
- /**
- * Function to generate AST by string.
- */
- parse?: Parser;
- /**
- * Class to generate string by AST.
- */
- stringify?: Stringifier;
- }
- /**
- * A promise proxy for the result of PostCSS transformations.
- */
- interface LazyResult {
- /**
- * Processes input CSS through synchronous and asynchronous plugins.
- * @param onRejected Called if any plugin throws an error.
- */
- then: Promise<Result>["then"];
- /**
- * Processes input CSS through synchronous and asynchronous plugins.
- * @param onRejected Called if any plugin throws an error.
- */
- catch: Promise<Result>["catch"];
- /**
- * Alias for css property.
- */
- toString(): string;
- /**
- * Processes input CSS through synchronous plugins and converts Root to
- * CSS string. This property will only work with synchronous plugins. If
- * the processor contains any asynchronous plugins it will throw an error.
- * In this case, you should use LazyResult#then() instead.
- * @returns Result#css.
- */
- css: string;
- /**
- * Alias for css property to use when syntaxes generate non-CSS output.
- */
- content: string;
- /**
- * Processes input CSS through synchronous plugins. This property will
- * work only with synchronous plugins. If processor contains any
- * asynchronous plugins it will throw an error. You should use
- * LazyResult#then() instead.
- */
- map: ResultMap;
- /**
- * Processes input CSS through synchronous plugins. This property will work
- * only with synchronous plugins. If processor contains any asynchronous
- * plugins it will throw an error. You should use LazyResult#then() instead.
- */
- root: Root;
- /**
- * Processes input CSS through synchronous plugins and calls Result#warnings().
- * This property will only work with synchronous plugins. If the processor
- * contains any asynchronous plugins it will throw an error. In this case,
- * you should use LazyResult#then() instead.
- */
- warnings(): Warning[];
- /**
- * Processes input CSS through synchronous plugins. This property will work
- * only with synchronous plugins. If processor contains any asynchronous
- * plugins it will throw an error. You should use LazyResult#then() instead.
- */
- messages: ResultMessage[];
- /**
- * @returns A processor used for CSS transformations.
- */
- processor: Processor;
- /**
- * @returns Options from the Processor#process(css, opts) call that produced
- * this Result instance.
- */
- opts: ResultOptions;
- }
- /**
- * Provides the result of the PostCSS transformations.
- */
- interface Result {
- /**
- * Alias for css property.
- */
- toString(): string;
- /**
- * Creates an instance of Warning and adds it to messages.
- * @param message Used in the text property of the message object.
- * @param options Properties for Message object.
- */
- warn(message: string, options?: WarningOptions): void;
- /**
- * @returns Warnings from plugins, filtered from messages.
- */
- warnings(): Warning[];
- /**
- * A CSS string representing this Result's Root instance.
- */
- css: string;
- /**
- * Alias for css property to use with syntaxes that generate non-CSS output.
- */
- content: string;
- /**
- * An instance of the SourceMapGenerator class from the source-map library,
- * representing changes to the Result's Root instance.
- * This property will have a value only if the user does not want an inline
- * source map. By default, PostCSS generates inline source maps, written
- * directly into the processed CSS. The map property will be empty by default.
- * An external source map will be generated — and assigned to map — only if
- * the user has set the map.inline option to false, or if PostCSS was passed
- * an external input source map.
- */
- map: ResultMap;
- /**
- * Contains the Root node after all transformations.
- */
- root?: Root;
- /**
- * Contains messages from plugins (e.g., warnings or custom messages).
- * Add a warning using Result#warn() and get all warnings
- * using the Result#warnings() method.
- */
- messages: ResultMessage[];
- /**
- * The Processor instance used for this transformation.
- */
- processor?: Processor;
- /**
- * Options from the Processor#process(css, opts) or Root#toResult(opts) call
- * that produced this Result instance.
- */
- opts?: ResultOptions;
- }
- interface ResultOptions extends ProcessOptions {
- /**
- * The CSS node that was the source of the warning.
- */
- node?: postcss.Node;
- /**
- * Name of plugin that created this warning. Result#warn() will fill it
- * automatically with plugin.postcssPlugin value.
- */
- plugin?: string;
- }
- interface ResultMap {
- /**
- * 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:
- * @param mapping
- * @returns {}
- */
- addMapping(mapping: mozilla.Mapping): void;
- /**
- * Set the source content for an original source file.
- * @param sourceFile The URL of the original source file.
- * @param sourceContent The content of the source file.
- */
- setSourceContent(sourceFile: string, sourceContent: string): void;
- /**
- * 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.
- * @param sourceMapConsumer The SourceMap to be applied.
- * @param sourceFile The filename of the source file. If omitted, sourceMapConsumer
- * file will be used, if it exists. Otherwise an error will be thrown.
- * @param sourceMapPath 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).
- */
- applySourceMap(
- sourceMapConsumer: mozilla.SourceMapConsumer,
- sourceFile?: string,
- sourceMapPath?: string
- ): void;
- /**
- * Renders the source map being generated to JSON.
- */
- toJSON: () => mozilla.RawSourceMap;
- /**
- * Renders the source map being generated to a string.
- */
- toString: () => string;
- }
- interface ResultMessage {
- type: string;
- plugin: string;
- [others: string]: any;
- }
- /**
- * Represents a plugin warning. It can be created using Result#warn().
- */
- interface Warning {
- /**
- * @returns Error position, message.
- */
- toString(): string;
- /**
- * Contains the warning message.
- */
- text: string;
- /**
- * Contains the name of the plugin that created this warning. When you
- * call Result#warn(), it will fill this property automatically.
- */
- plugin: string;
- /**
- * The CSS node that caused the warning.
- */
- node: Node;
- /**
- * The line in the input file with this warning's source.
- */
- line: number;
- /**
- * Column in the input file with this warning's source.
- */
- column: number;
- }
- interface WarningOptions extends ResultOptions {
- /**
- * A word inside a node's string that should be highlighted as source
- * of warning.
- */
- word?: string;
- /**
- * The index inside a node's string that should be highlighted as
- * source of warning.
- */
- index?: number;
- }
- /**
- * The CSS parser throws this error for broken CSS.
- */
- interface CssSyntaxError extends InputOrigin {
- name: string;
- /**
- * @returns Error position, message and source code of broken part.
- */
- toString(): string;
- /**
- * @param color Whether arrow should be colored red by terminal color codes.
- * By default, PostCSS will use process.stdout.isTTY and
- * process.env.NODE_DISABLE_COLORS.
- * @returns A few lines of CSS source that caused the error. If CSS has
- * input source map without sourceContent this method will return an empty
- * string.
- */
- showSourceCode(color?: boolean): string;
- /**
- * Contains full error text in the GNU error format.
- */
- message: string;
- /**
- * Contains only the error description.
- */
- reason: string;
- /**
- * Contains the PostCSS plugin name if the error didn't come from the
- * CSS parser.
- */
- plugin?: string;
- input?: InputOrigin;
- }
- interface InputOrigin {
- /**
- * If parser's from option is set, contains the absolute path to the
- * broken file. PostCSS will use the input source map to detect the
- * original error location. If you wrote a Sass file, then compiled it
- * to CSS and parsed it with PostCSS, PostCSS will show the original
- * position in the Sass file. If you need the position in the PostCSS
- * input (e.g., to debug the previous compiler), use error.input.file.
- */
- file?: string;
- /**
- * Contains the source line of the error. PostCSS will use the input
- * source map to detect the original error location. If you wrote a Sass
- * file, then compiled it to CSS and parsed it with PostCSS, PostCSS
- * will show the original position in the Sass file. If you need the
- * position in the PostCSS input (e.g., to debug the previous
- * compiler), use error.input.line.
- */
- line?: number;
- /**
- * Contains the source column of the error. PostCSS will use input
- * source map to detect the original error location. If you wrote a
- * Sass file, then compiled it to CSS and parsed it with PostCSS,
- * PostCSS will show the original position in the Sass file. If you
- * need the position in the PostCSS input (e.g., to debug the
- * previous compiler), use error.input.column.
- */
- column?: number;
- /**
- * Contains the source code of the broken file. PostCSS will use the
- * input source map to detect the original error location. If you wrote
- * a Sass file, then compiled it to CSS and parsed it with PostCSS,
- * PostCSS will show the original position in the Sass file. If you need
- * the position in the PostCSS input (e.g., to debug the previous
- * compiler), use error.input.source.
- */
- source?: string;
- }
- export class PreviousMap {
- private inline;
- annotation: string;
- root: string;
- private consumerCache;
- text: string;
- file: string;
- constructor(css: any, opts: any);
- consumer(): mozilla.SourceMapConsumer;
- withContent(): boolean;
- startWith(string: string, start: string): boolean;
- loadAnnotation(css: string): void;
- decodeInline(text: string): string;
- loadMap(
- file: any,
- prev: string | Function | mozilla.SourceMapConsumer | mozilla.SourceMapGenerator | mozilla.RawSourceMap
- ): string;
- isMap(map: any): boolean;
- }
- /**
- * Represents the source CSS.
- */
- interface Input {
- /**
- * The absolute path to the CSS source file defined with the "from" option.
- * Either this property or the "id" property are always defined.
- */
- file?: string;
- /**
- * The unique ID of the CSS source. Used if "from" option is not provided
- * (because PostCSS does not know the file path). Either this property
- * or the "file" property are always defined.
- */
- id?: string;
- /**
- * The CSS source identifier. Contains input.file if the user set the
- * "from" option, or input.id if they did not.
- */
- from: string;
- /**
- * Represents the input source map passed from a compilation step before
- * PostCSS (e.g., from the Sass compiler).
- */
- map: PreviousMap;
- /**
- * The flag to indicate whether or not the source code has Unicode BOM.
- */
- hasBOM: boolean;
- /**
- * Reads the input source map.
- * @returns A symbol position in the input source (e.g., in a Sass file
- * that was compiled to CSS before being passed to PostCSS):
- */
- origin(line: number, column: number): InputOrigin;
- }
- type ChildNode = AtRule | Rule | Declaration | Comment;
- type Node = Root | ChildNode;
- interface NodeBase {
- /**
- * Returns the input source of the node. The property is used in source
- * map generation. If you create a node manually
- * (e.g., with postcss.decl() ), that node will not have a source
- * property and will be absent from the source map. For this reason, the
- * plugin developer should consider cloning nodes to create new ones
- * (in which case the new node's source will reference the original,
- * cloned node) or setting the source property manually.
- */
- source?: NodeSource;
- /**
- * Contains information to generate byte-to-byte equal node string as it
- * was in origin input.
- */
- raws: NodeRaws;
- /**
- * @returns A CSS string representing the node.
- */
- toString(stringifier?: Stringifier | Syntax): string;
- /**
- * This method produces very useful error messages. If present, an input
- * source map will be used to get the original position of the source, even
- * from a previous compilation step (e.g., from Sass compilation).
- * @returns The original position of the node in the source, showing line
- * and column numbers and also a small excerpt to facilitate debugging.
- */
- error(
- /**
- * Error description.
- */
- message: string, options?: NodeErrorOptions): CssSyntaxError;
- /**
- * Creates an instance of Warning and adds it to messages. This method is
- * provided as a convenience wrapper for Result#warn.
- * Note that `opts.node` is automatically passed to Result#warn for you.
- * @param result The result that will receive the warning.
- * @param text Warning message. It will be used in the `text` property of
- * the message object.
- * @param opts Properties to assign to the message object.
- */
- warn(result: Result, text: string, opts?: WarningOptions): void;
- /**
- * @returns The next child of the node's parent; or, returns undefined if
- * the current node is the last child.
- */
- next(): ChildNode | void;
- /**
- * @returns The previous child of the node's parent; or, returns undefined
- * if the current node is the first child.
- */
- prev(): ChildNode | void;
- /**
- * Insert new node before current node to current node’s parent.
- *
- * Just an alias for `node.parent.insertBefore(node, newNode)`.
- *
- * @returns this node for method chaining.
- *
- * @example
- * decl.before('content: ""');
- */
- before(newNode: Node | object | string | Node[]): this;
- /**
- * Insert new node after current node to current node’s parent.
- *
- * Just an alias for `node.parent.insertAfter(node, newNode)`.
- *
- * @returns this node for method chaining.
- *
- * @example
- * decl.after('color: black');
- */
- after(newNode: Node | object | string | Node[]): this;
- /**
- * @returns The Root instance of the node's tree.
- */
- root(): Root;
- /**
- * Removes the node from its parent and cleans the parent property in the
- * node and its children.
- * @returns This node for chaining.
- */
- remove(): this;
- /**
- * Inserts node(s) before the current node and removes the current node.
- * @returns This node for chaining.
- */
- replaceWith(...nodes: (Node | object)[]): this;
- /**
- * @param overrides New properties to override in the clone.
- * @returns A clone of this node. The node and its (cloned) children will
- * have a clean parent and code style properties.
- */
- clone(overrides?: object): this;
- /**
- * Shortcut to clone the node and insert the resulting cloned node before
- * the current node.
- * @param overrides New Properties to override in the clone.
- * @returns The cloned node.
- */
- cloneBefore(overrides?: object): this;
- /**
- * Shortcut to clone the node and insert the resulting cloned node after
- * the current node.
- * @param overrides New Properties to override in the clone.
- * @returns The cloned node.
- */
- cloneAfter(overrides?: object): this;
- /**
- * @param prop Name or code style property.
- * @param defaultType Name of default value. It can be easily missed if the
- * value is the same as prop.
- * @returns A code style property value. If the node is missing the code
- * style property (because the node was manually built or cloned), PostCSS
- * will try to autodetect the code style property by looking at other nodes
- * in the tree.
- */
- raw(prop: string, defaultType?: string): any;
- }
- interface NodeNewProps {
- source?: NodeSource;
- raws?: NodeRaws;
- }
- interface NodeRaws {
- /**
- * The space symbols before the node. It also stores `*` and `_`
- * symbols before the declaration (IE hack).
- */
- before?: string;
- /**
- * The space symbols after the last child of the node to the end of
- * the node.
- */
- after?: string;
- /**
- * The symbols between the property and value for declarations,
- * selector and "{" for rules, last parameter and "{" for at-rules.
- */
- between?: string;
- /**
- * True if last child has (optional) semicolon.
- */
- semicolon?: boolean;
- /**
- * The space between the at-rule's name and parameters.
- */
- afterName?: string;
- /**
- * The space symbols between "/*" and comment's text.
- */
- left?: string;
- /**
- * The space symbols between comment's text and "*\/".
- */
- right?: string;
- /**
- * The content of important statement, if it is not just "!important".
- */
- important?: string;
- }
- interface NodeSource {
- input: Input;
- /**
- * The starting position of the node's source.
- */
- start?: {
- column: number;
- line: number;
- };
- /**
- * The ending position of the node's source.
- */
- end?: {
- column: number;
- line: number;
- };
- }
- interface NodeErrorOptions {
- /**
- * Plugin name that created this error. PostCSS will set it automatically.
- */
- plugin?: string;
- /**
- * A word inside a node's string, that should be highlighted as source
- * of error.
- */
- word?: string;
- /**
- * An index inside a node's string that should be highlighted as source
- * of error.
- */
- index?: number;
- }
- interface JsonNode {
- /**
- * Returns a string representing the node's type. Possible values are
- * root, atrule, rule, decl or comment.
- */
- type?: string;
- /**
- * Returns the node's parent node.
- */
- parent?: JsonContainer;
- /**
- * Returns the input source of the node. The property is used in source
- * map generation. If you create a node manually (e.g., with
- * postcss.decl() ), that node will not have a source property and
- * will be absent from the source map. For this reason, the plugin
- * developer should consider cloning nodes to create new ones (in which
- * case the new node's source will reference the original, cloned node)
- * or setting the source property manually.
- */
- source?: NodeSource;
- /**
- * Contains information to generate byte-to-byte equal node string as it
- * was in origin input.
- */
- raws?: NodeRaws;
- }
- type Container = Root | AtRule | Rule;
- /**
- * Containers can store any content. If you write a rule inside a rule,
- * PostCSS will parse it.
- */
- interface ContainerBase extends NodeBase {
- /**
- * Contains the container's children.
- */
- nodes?: ChildNode[];
- /**
- * @returns The container's first child.
- */
- first?: ChildNode;
- /**
- * @returns The container's last child.
- */
- last?: ChildNode;
- /**
- * @param overrides New properties to override in the clone.
- * @returns A clone of this node. The node and its (cloned) children will
- * have a clean parent and code style properties.
- */
- clone(overrides?: object): this;
- /**
- * @param child Child of the current container.
- * @returns The child's index within the container's "nodes" array.
- */
- index(child: ChildNode | number): number;
- /**
- * Determines whether all child nodes satisfy the specified test.
- * @param callback A function that accepts up to three arguments. The
- * every method calls the callback function for each node until the
- * callback returns false, or until the end of the array.
- * @returns True if the callback returns true for all of the container's
- * children.
- */
- every(callback: (node: ChildNode, index: number, nodes: ChildNode[]) => any, thisArg?: any): boolean;
- /**
- * Determines whether the specified callback returns true for any child node.
- * @param callback A function that accepts up to three arguments. The some
- * method calls the callback for each node until the callback returns true,
- * or until the end of the array.
- * @param thisArg An object to which the this keyword can refer in the
- * callback function. If thisArg is omitted, undefined is used as the
- * this value.
- * @returns True if callback returns true for (at least) one of the
- * container's children.
- */
- some(callback: (node: ChildNode, index: number, nodes: ChildNode[]) => boolean, thisArg?: any): boolean;
- /**
- * Iterates through the container's immediate children, calling the
- * callback function for each child. If you need to recursively iterate
- * through all the container's descendant nodes, use container.walk().
- * Unlike the for {} -cycle or Array#forEach() this iterator is safe if
- * you are mutating the array of child nodes during iteration.
- * @param callback Iterator. Returning false will break iteration. Safe
- * if you are mutating the array of child nodes during iteration. PostCSS
- * will adjust the current index to match the mutations.
- * @returns False if the callback returns false during iteration.
- */
- each(callback: (node: ChildNode, index: number) => any): boolean | void;
- /**
- * Traverses the container's descendant nodes, calling `callback` for each
- * node. Like container.each(), this method is safe to use if you are
- * mutating arrays during iteration. If you only need to iterate through
- * the container's immediate children, use container.each().
- * @param callback Iterator.
- */
- walk(callback: (node: ChildNode, index: number) => any): boolean | void;
- /**
- * Traverses the container's descendant nodes, calling `callback` for each
- * declaration. Like container.each(), this method is safe to use if you
- * are mutating arrays during iteration.
- * @param propFilter Filters declarations by property name. Only those
- * declarations whose property matches propFilter will be iterated over.
- * @param callback Called for each declaration node within the container.
- */
- walkDecls(propFilter: string | RegExp, callback?: (decl: Declaration, index: number) => any): boolean | void;
- walkDecls(callback: (decl: Declaration, index: number) => any): boolean | void;
- /**
- * Traverses the container's descendant nodes, calling `callback` for each
- * at-rule. Like container.each(), this method is safe to use if you are
- * mutating arrays during iteration.
- * @param nameFilter Filters at-rules by name. If provided, iteration
- * will only happen over at-rules that have matching names.
- * @param callback Iterator called for each at-rule node within the
- * container.
- */
- walkAtRules(nameFilter: string | RegExp, callback: (atRule: AtRule, index: number) => any): boolean | void;
- walkAtRules(callback: (atRule: AtRule, index: number) => any): boolean | void;
- /**
- * Traverses the container's descendant nodes, calling `callback` for each
- * rule. Like container.each(), this method is safe to use if you are
- * mutating arrays during iteration.
- * @param selectorFilter Filters rules by selector. If provided,
- * iteration will only happen over rules that have matching names.
- * @param callback Iterator called for each rule node within the
- * container.
- */
- walkRules(selectorFilter: string | RegExp, callback: (atRule: Rule, index: number) => any): boolean | void;
- walkRules(callback: (atRule: Rule, index: number) => any): boolean | void;
- walkRules(selectorFilter: any, callback?: (atRule: Rule, index: number) => any): boolean | void;
- /**
- * Traverses the container's descendant nodes, calling `callback` for each
- * comment. Like container.each(), this method is safe to use if you are
- * mutating arrays during iteration.
- * @param callback Iterator called for each comment node within the container.
- */
- walkComments(callback: (comment: Comment, indexed: number) => any): void | boolean;
- /**
- * Passes all declaration values within the container that match pattern
- * through the callback, replacing those values with the returned result of
- * callback. This method is useful if you are using a custom unit or
- * function and need to iterate through all values.
- * @param pattern Pattern that we need to replace.
- * @param options Options to speed up the search.
- * @param callbackOrReplaceValue String to replace pattern or callback
- * that will return a new value. The callback will receive the same
- * arguments as those passed to a function parameter of String#replace.
- */
- replaceValues(pattern: string | RegExp, options: {
- /**
- * Property names. The method will only search for values that match
- * regexp within declarations of listed properties.
- */
- props?: string[];
- /**
- * Used to narrow down values and speed up the regexp search. Searching
- * every single value with a regexp can be slow. If you pass a fast
- * string, PostCSS will first check whether the value contains the fast
- * string; and only if it does will PostCSS check that value against
- * regexp. For example, instead of just checking for /\d+rem/ on all
- * values, set fast: 'rem' to first check whether a value has the rem
- * unit, and only if it does perform the regexp check.
- */
- fast?: string;
- }, callbackOrReplaceValue: string | {
- (substring: string, ...args: any[]): string;
- }): this;
- replaceValues(pattern: string | RegExp, callbackOrReplaceValue: string | {
- (substring: string, ...args: any[]): string;
- }): this;
- /**
- * Inserts new nodes to the beginning of the container.
- * Because each node class is identifiable by unique properties, use the
- * following shortcuts to create nodes in insert methods:
- * root.prepend({ name: '@charset', params: '"UTF-8"' }); // at-rule
- * root.prepend({ selector: 'a' }); // rule
- * rule.prepend({ prop: 'color', value: 'black' }); // declaration
- * rule.prepend({ text: 'Comment' }) // comment
- * A string containing the CSS of the new element can also be used. This
- * approach is slower than the above shortcuts.
- * root.prepend('a {}');
- * root.first.prepend('color: black; z-index: 1');
- * @param nodes New nodes.
- * @returns This container for chaining.
- */
- prepend(...nodes: (Node | object | string)[]): this;
- /**
- * Inserts new nodes to the end of the container.
- * Because each node class is identifiable by unique properties, use the
- * following shortcuts to create nodes in insert methods:
- * root.append({ name: '@charset', params: '"UTF-8"' }); // at-rule
- * root.append({ selector: 'a' }); // rule
- * rule.append({ prop: 'color', value: 'black' }); // declaration
- * rule.append({ text: 'Comment' }) // comment
- * A string containing the CSS of the new element can also be used. This
- * approach is slower than the above shortcuts.
- * root.append('a {}');
- * root.first.append('color: black; z-index: 1');
- * @param nodes New nodes.
- * @returns This container for chaining.
- */
- append(...nodes: (Node | object | string)[]): this;
- /**
- * Insert newNode before oldNode within the container.
- * @param oldNode Child or child's index.
- * @returns This container for chaining.
- */
- insertBefore(oldNode: ChildNode | number, newNode: ChildNode | object | string): this;
- /**
- * Insert newNode after oldNode within the container.
- * @param oldNode Child or child's index.
- * @returns This container for chaining.
- */
- insertAfter(oldNode: ChildNode | number, newNode: ChildNode | object | string): this;
- /**
- * Removes the container from its parent and cleans the parent property in the
- * container and its children.
- * @returns This container for chaining.
- */
- remove(): this;
- /**
- * Removes child from the container and cleans the parent properties
- * from the node and its children.
- * @param child Child or child's index.
- * @returns This container for chaining.
- */
- removeChild(child: ChildNode | number): this;
- /**
- * Removes all children from the container and cleans their parent
- * properties.
- * @returns This container for chaining.
- */
- removeAll(): this;
- }
- interface ContainerNewProps extends NodeNewProps {
- /**
- * Contains the container's children.
- */
- nodes?: ChildNode[];
- raws?: ContainerRaws;
- }
- interface ContainerRaws extends NodeRaws {
- indent?: string;
- }
- interface JsonContainer extends JsonNode {
- /**
- * Contains the container's children.
- */
- nodes?: ChildNode[];
- /**
- * @returns The container's first child.
- */
- first?: ChildNode;
- /**
- * @returns The container's last child.
- */
- last?: ChildNode;
- }
- /**
- * Represents a CSS file and contains all its parsed nodes.
- */
- interface Root extends ContainerBase {
- type: 'root';
- /**
- * Inherited from Container. Should always be undefined for a Root node.
- */
- parent: void;
- /**
- * @param overrides New properties to override in the clone.
- * @returns A clone of this node. The node and its (cloned) children will
- * have a clean parent and code style properties.
- */
- clone(overrides?: object): this;
- /**
- * @returns A Result instance representing the root's CSS.
- */
- toResult(options?: {
- /**
- * The path where you'll put the output CSS file. You should always
- * set "to" to generate correct source maps.
- */
- to?: string;
- map?: SourceMapOptions;
- }): Result;
- /**
- * Removes child from the root node, and the parent properties of node and
- * its children.
- * @param child Child or child's index.
- * @returns This root node for chaining.
- */
- removeChild(child: ChildNode | number): this;
- }
- interface RootNewProps extends ContainerNewProps {
- }
- interface JsonRoot extends JsonContainer {
- }
- /**
- * Represents an at-rule. If it's followed in the CSS by a {} block, this
- * node will have a nodes property representing its children.
- */
- interface AtRule extends ContainerBase {
- type: 'atrule';
- /**
- * Returns the atrule's parent node.
- */
- parent: Container;
- /**
- * The identifier that immediately follows the @.
- */
- name: string;
- /**
- * These are the values that follow the at-rule's name, but precede any {}
- * block. The spec refers to this area as the at-rule's "prelude".
- */
- params: string;
- /**
- * @param overrides New properties to override in the clone.
- * @returns A clone of this node. The node and its (cloned) children will
- * have a clean parent and code style properties.
- */
- clone(overrides?: object): this;
- }
- interface AtRuleNewProps extends ContainerNewProps {
- /**
- * The identifier that immediately follows the @.
- */
- name?: string;
- /**
- * These are the values that follow the at-rule's name, but precede any {}
- * block. The spec refers to this area as the at-rule's "prelude".
- */
- params?: string | number;
- raws?: AtRuleRaws;
- }
- interface AtRuleRaws extends NodeRaws {
- params?: string;
- }
- interface JsonAtRule extends JsonContainer {
- /**
- * The identifier that immediately follows the @.
- */
- name?: string;
- /**
- * These are the values that follow the at-rule's name, but precede any {}
- * block. The spec refers to this area as the at-rule's "prelude".
- */
- params?: string;
- }
- /**
- * Represents a CSS rule: a selector followed by a declaration block.
- */
- interface Rule extends ContainerBase {
- type: 'rule';
- /**
- * Returns the rule's parent node.
- */
- parent: Container;
- /**
- * The rule's full selector. If there are multiple comma-separated selectors,
- * the entire group will be included.
- */
- selector: string;
- /**
- * An array containing the rule's individual selectors.
- * Groups of selectors are split at commas.
- */
- selectors: string[];
- /**
- * @param overrides New properties to override in the clone.
- * @returns A clone of this node. The node and its (cloned) children will
- * have a clean parent and code style properties.
- */
- clone(overrides?: object): this;
- }
- interface RuleNewProps extends ContainerNewProps {
- /**
- * The rule's full selector. If there are multiple comma-separated selectors,
- * the entire group will be included.
- */
- selector?: string;
- /**
- * An array containing the rule's individual selectors. Groups of selectors
- * are split at commas.
- */
- selectors?: string[];
- raws?: RuleRaws;
- }
- interface RuleRaws extends ContainerRaws {
- /**
- * The rule's full selector. If there are multiple comma-separated selectors,
- * the entire group will be included.
- */
- selector?: string;
- }
- interface JsonRule extends JsonContainer {
- /**
- * The rule's full selector. If there are multiple comma-separated selectors,
- * the entire group will be included.
- */
- selector?: string;
- /**
- * An array containing the rule's individual selectors.
- * Groups of selectors are split at commas.
- */
- selectors?: string[];
- }
- /**
- * Represents a CSS declaration.
- */
- interface Declaration extends NodeBase {
- type: 'decl';
- /**
- * Returns the declaration's parent node.
- */
- parent: Container;
- /**
- * The declaration's property name.
- */
- prop: string;
- /**
- * The declaration's value. This value will be cleaned of comments. If the
- * source value contained comments, those comments will be available in the
- * _value.raws property. If you have not changed the value, the result of
- * decl.toString() will include the original raws value (comments and all).
- */
- value: string;
- /**
- * True if the declaration has an !important annotation.
- */
- important: boolean;
- /**
- * @param overrides New properties to override in the clone.
- * @returns A clone of this node. The node and its (cloned) children will
- * have a clean parent and code style properties.
- */
- clone(overrides?: object): this;
- }
- interface DeclarationNewProps {
- /**
- * The declaration's property name.
- */
- prop?: string;
- /**
- * The declaration's value. This value will be cleaned of comments. If the
- * source value contained comments, those comments will be available in the
- * _value.raws property. If you have not changed the value, the result of
- * decl.toString() will include the original raws value (comments and all).
- */
- value?: string;
- raws?: DeclarationRaws;
- }
- interface DeclarationRaws extends NodeRaws {
- /**
- * The declaration's value. This value will be cleaned of comments.
- * If the source value contained comments, those comments will be
- * available in the _value.raws property. If you have not changed the value, the result of
- * decl.toString() will include the original raws value (comments and all).
- */
- value?: string;
- }
- interface JsonDeclaration extends JsonNode {
- /**
- * True if the declaration has an !important annotation.
- */
- important?: boolean;
- }
- /**
- * Represents a comment between declarations or statements (rule and at-rules).
- * Comments inside selectors, at-rule parameters, or declaration values will
- * be stored in the Node#raws properties.
- */
- interface Comment extends NodeBase {
- type: 'comment';
- /**
- * Returns the comment's parent node.
- */
- parent: Container;
- /**
- * The comment's text.
- */
- text: string;
- /**
- * @param overrides New properties to override in the clone.
- * @returns A clone of this node. The node and its (cloned) children will
- * have a clean parent and code style properties.
- */
- clone(overrides?: object): this;
- }
- interface CommentNewProps {
- /**
- * The comment's text.
- */
- text?: string;
- }
- interface JsonComment extends JsonNode {
- }
-}
-export = postcss;
diff --git a/assets/node_modules/postcss/lib/postcss.js b/assets/node_modules/postcss/lib/postcss.js
deleted file mode 100644
index 2e6c5ce..0000000
--- a/assets/node_modules/postcss/lib/postcss.js
+++ /dev/null
@@ -1,285 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _declaration = _interopRequireDefault(require("./declaration"));
-
-var _processor = _interopRequireDefault(require("./processor"));
-
-var _stringify = _interopRequireDefault(require("./stringify"));
-
-var _comment = _interopRequireDefault(require("./comment"));
-
-var _atRule = _interopRequireDefault(require("./at-rule"));
-
-var _vendor = _interopRequireDefault(require("./vendor"));
-
-var _parse = _interopRequireDefault(require("./parse"));
-
-var _list = _interopRequireDefault(require("./list"));
-
-var _rule = _interopRequireDefault(require("./rule"));
-
-var _root = _interopRequireDefault(require("./root"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Create a new {@link Processor} instance that will apply `plugins`
- * as CSS processors.
- *
- * @param {Array.<Plugin|pluginFunction>|Processor} plugins PostCSS plugins.
- * See {@link Processor#use} for plugin format.
- *
- * @return {Processor} Processor to process multiple CSS.
- *
- * @example
- * import postcss from 'postcss'
- *
- * postcss(plugins).process(css, { from, to }).then(result => {
- * console.log(result.css)
- * })
- *
- * @namespace postcss
- */
-function postcss() {
- for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {
- plugins[_key] = arguments[_key];
- }
-
- if (plugins.length === 1 && Array.isArray(plugins[0])) {
- plugins = plugins[0];
- }
-
- return new _processor.default(plugins);
-}
-/**
- * Creates a PostCSS plugin with a standard API.
- *
- * The newly-wrapped function will provide both the name and PostCSS
- * version of the plugin.
- *
- * ```js
- * const processor = postcss([replace])
- * processor.plugins[0].postcssPlugin //=> 'postcss-replace'
- * processor.plugins[0].postcssVersion //=> '6.0.0'
- * ```
- *
- * The plugin function receives 2 arguments: {@link Root}
- * and {@link Result} instance. The function should mutate the provided
- * `Root` node. Alternatively, you can create a new `Root` node
- * and override the `result.root` property.
- *
- * ```js
- * const cleaner = postcss.plugin('postcss-cleaner', () => {
- * return (root, result) => {
- * result.root = postcss.root()
- * }
- * })
- * ```
- *
- * As a convenience, plugins also expose a `process` method so that you can use
- * them as standalone tools.
- *
- * ```js
- * cleaner.process(css, processOpts, pluginOpts)
- * // This is equivalent to:
- * postcss([ cleaner(pluginOpts) ]).process(css, processOpts)
- * ```
- *
- * Asynchronous plugins should return a `Promise` instance.
- *
- * ```js
- * postcss.plugin('postcss-import', () => {
- * return (root, result) => {
- * return new Promise( (resolve, reject) => {
- * fs.readFile('base.css', (base) => {
- * root.prepend(base)
- * resolve()
- * })
- * })
- * }
- * })
- * ```
- *
- * Add warnings using the {@link Node#warn} method.
- * Send data to other plugins using the {@link Result#messages} array.
- *
- * ```js
- * postcss.plugin('postcss-caniuse-test', () => {
- * return (root, result) => {
- * root.walkDecls(decl => {
- * if (!caniuse.support(decl.prop)) {
- * decl.warn(result, 'Some browsers do not support ' + decl.prop)
- * }
- * })
- * }
- * })
- * ```
- *
- * @param {string} name PostCSS plugin name. Same as in `name`
- * property in `package.json`. It will be saved
- * in `plugin.postcssPlugin` property.
- * @param {function} initializer Will receive plugin options
- * and should return {@link pluginFunction}
- *
- * @return {Plugin} PostCSS plugin.
- */
-
-
-postcss.plugin = function plugin(name, initializer) {
- function creator() {
- var transformer = initializer.apply(void 0, arguments);
- transformer.postcssPlugin = name;
- transformer.postcssVersion = new _processor.default().version;
- return transformer;
- }
-
- var cache;
- Object.defineProperty(creator, 'postcss', {
- get: function get() {
- if (!cache) cache = creator();
- return cache;
- }
- });
-
- creator.process = function (css, processOpts, pluginOpts) {
- return postcss([creator(pluginOpts)]).process(css, processOpts);
- };
-
- return creator;
-};
-/**
- * Default function to convert a node tree into a CSS string.
- *
- * @param {Node} node Start node for stringifing. Usually {@link Root}.
- * @param {builder} builder Function to concatenate CSS from node’s parts
- * or generate string and source map.
- *
- * @return {void}
- *
- * @function
- */
-
-
-postcss.stringify = _stringify.default;
-/**
- * Parses source css and returns a new {@link Root} node,
- * which contains the source CSS nodes.
- *
- * @param {string|toString} css String with input CSS or any object
- * with toString() method, like a Buffer
- * @param {processOptions} [opts] Options with only `from` and `map` keys.
- *
- * @return {Root} PostCSS AST.
- *
- * @example
- * // Simple CSS concatenation with source map support
- * const root1 = postcss.parse(css1, { from: file1 })
- * const root2 = postcss.parse(css2, { from: file2 })
- * root1.append(root2).toResult().css
- *
- * @function
- */
-
-postcss.parse = _parse.default;
-/**
- * Contains the {@link vendor} module.
- *
- * @type {vendor}
- *
- * @example
- * postcss.vendor.unprefixed('-moz-tab') //=> ['tab']
- */
-
-postcss.vendor = _vendor.default;
-/**
- * Contains the {@link list} module.
- *
- * @member {list}
- *
- * @example
- * postcss.list.space('5px calc(10% + 5px)') //=> ['5px', 'calc(10% + 5px)']
- */
-
-postcss.list = _list.default;
-/**
- * Creates a new {@link Comment} node.
- *
- * @param {object} [defaults] Properties for the new node.
- *
- * @return {Comment} New comment node
- *
- * @example
- * postcss.comment({ text: 'test' })
- */
-
-postcss.comment = function (defaults) {
- return new _comment.default(defaults);
-};
-/**
- * Creates a new {@link AtRule} node.
- *
- * @param {object} [defaults] Properties for the new node.
- *
- * @return {AtRule} new at-rule node
- *
- * @example
- * postcss.atRule({ name: 'charset' }).toString() //=> "@charset"
- */
-
-
-postcss.atRule = function (defaults) {
- return new _atRule.default(defaults);
-};
-/**
- * Creates a new {@link Declaration} node.
- *
- * @param {object} [defaults] Properties for the new node.
- *
- * @return {Declaration} new declaration node
- *
- * @example
- * postcss.decl({ prop: 'color', value: 'red' }).toString() //=> "color: red"
- */
-
-
-postcss.decl = function (defaults) {
- return new _declaration.default(defaults);
-};
-/**
- * Creates a new {@link Rule} node.
- *
- * @param {object} [defaults] Properties for the new node.
- *
- * @return {Rule} new rule node
- *
- * @example
- * postcss.rule({ selector: 'a' }).toString() //=> "a {\n}"
- */
-
-
-postcss.rule = function (defaults) {
- return new _rule.default(defaults);
-};
-/**
- * Creates a new {@link Root} node.
- *
- * @param {object} [defaults] Properties for the new node.
- *
- * @return {Root} new root node.
- *
- * @example
- * postcss.root({ after: '\n' }).toString() //=> "\n"
- */
-
-
-postcss.root = function (defaults) {
- return new _root.default(defaults);
-};
-
-var _default = postcss;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBvc3Rjc3MuZXM2Il0sIm5hbWVzIjpbInBvc3Rjc3MiLCJwbHVnaW5zIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiUHJvY2Vzc29yIiwicGx1Z2luIiwibmFtZSIsImluaXRpYWxpemVyIiwiY3JlYXRvciIsInRyYW5zZm9ybWVyIiwicG9zdGNzc1BsdWdpbiIsInBvc3Rjc3NWZXJzaW9uIiwidmVyc2lvbiIsImNhY2hlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJwcm9jZXNzIiwiY3NzIiwicHJvY2Vzc09wdHMiLCJwbHVnaW5PcHRzIiwic3RyaW5naWZ5IiwicGFyc2UiLCJ2ZW5kb3IiLCJsaXN0IiwiY29tbWVudCIsImRlZmF1bHRzIiwiQ29tbWVudCIsImF0UnVsZSIsIkF0UnVsZSIsImRlY2wiLCJEZWNsYXJhdGlvbiIsInJ1bGUiLCJSdWxlIiwicm9vdCIsIlJvb3QiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBLFNBQVNBLE9BQVQsR0FBOEI7QUFBQSxvQ0FBVEMsT0FBUztBQUFUQSxJQUFBQSxPQUFTO0FBQUE7O0FBQzVCLE1BQUlBLE9BQU8sQ0FBQ0MsTUFBUixLQUFtQixDQUFuQixJQUF3QkMsS0FBSyxDQUFDQyxPQUFOLENBQWNILE9BQU8sQ0FBQyxDQUFELENBQXJCLENBQTVCLEVBQXVEO0FBQ3JEQSxJQUFBQSxPQUFPLEdBQUdBLE9BQU8sQ0FBQyxDQUFELENBQWpCO0FBQ0Q7O0FBQ0QsU0FBTyxJQUFJSSxrQkFBSixDQUFjSixPQUFkLENBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdFQUQsT0FBTyxDQUFDTSxNQUFSLEdBQWlCLFNBQVNBLE1BQVQsQ0FBaUJDLElBQWpCLEVBQXVCQyxXQUF2QixFQUFvQztBQUNuRCxXQUFTQyxPQUFULEdBQTJCO0FBQ3pCLFFBQUlDLFdBQVcsR0FBR0YsV0FBVyxNQUFYLG1CQUFsQjtBQUNBRSxJQUFBQSxXQUFXLENBQUNDLGFBQVosR0FBNEJKLElBQTVCO0FBQ0FHLElBQUFBLFdBQVcsQ0FBQ0UsY0FBWixHQUE4QixJQUFJUCxrQkFBSixFQUFELENBQWtCUSxPQUEvQztBQUNBLFdBQU9ILFdBQVA7QUFDRDs7QUFFRCxNQUFJSSxLQUFKO0FBQ0FDLEVBQUFBLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQlAsT0FBdEIsRUFBK0IsU0FBL0IsRUFBMEM7QUFDeENRLElBQUFBLEdBRHdDLGlCQUNqQztBQUNMLFVBQUksQ0FBQ0gsS0FBTCxFQUFZQSxLQUFLLEdBQUdMLE9BQU8sRUFBZjtBQUNaLGFBQU9LLEtBQVA7QUFDRDtBQUp1QyxHQUExQzs7QUFPQUwsRUFBQUEsT0FBTyxDQUFDUyxPQUFSLEdBQWtCLFVBQVVDLEdBQVYsRUFBZUMsV0FBZixFQUE0QkMsVUFBNUIsRUFBd0M7QUFDeEQsV0FBT3JCLE9BQU8sQ0FBQyxDQUFDUyxPQUFPLENBQUNZLFVBQUQsQ0FBUixDQUFELENBQVAsQ0FBK0JILE9BQS9CLENBQXVDQyxHQUF2QyxFQUE0Q0MsV0FBNUMsQ0FBUDtBQUNELEdBRkQ7O0FBSUEsU0FBT1gsT0FBUDtBQUNELENBckJEO0FBdUJBOzs7Ozs7Ozs7Ozs7O0FBV0FULE9BQU8sQ0FBQ3NCLFNBQVIsR0FBb0JBLGtCQUFwQjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBdEIsT0FBTyxDQUFDdUIsS0FBUixHQUFnQkEsY0FBaEI7QUFFQTs7Ozs7Ozs7O0FBUUF2QixPQUFPLENBQUN3QixNQUFSLEdBQWlCQSxlQUFqQjtBQUVBOzs7Ozs7Ozs7QUFRQXhCLE9BQU8sQ0FBQ3lCLElBQVIsR0FBZUEsYUFBZjtBQUVBOzs7Ozs7Ozs7OztBQVVBekIsT0FBTyxDQUFDMEIsT0FBUixHQUFrQixVQUFBQyxRQUFRO0FBQUEsU0FBSSxJQUFJQyxnQkFBSixDQUFZRCxRQUFaLENBQUo7QUFBQSxDQUExQjtBQUVBOzs7Ozs7Ozs7Ozs7QUFVQTNCLE9BQU8sQ0FBQzZCLE1BQVIsR0FBaUIsVUFBQUYsUUFBUTtBQUFBLFNBQUksSUFBSUcsZUFBSixDQUFXSCxRQUFYLENBQUo7QUFBQSxDQUF6QjtBQUVBOzs7Ozs7Ozs7Ozs7QUFVQTNCLE9BQU8sQ0FBQytCLElBQVIsR0FBZSxVQUFBSixRQUFRO0FBQUEsU0FBSSxJQUFJSyxvQkFBSixDQUFnQkwsUUFBaEIsQ0FBSjtBQUFBLENBQXZCO0FBRUE7Ozs7Ozs7Ozs7OztBQVVBM0IsT0FBTyxDQUFDaUMsSUFBUixHQUFlLFVBQUFOLFFBQVE7QUFBQSxTQUFJLElBQUlPLGFBQUosQ0FBU1AsUUFBVCxDQUFKO0FBQUEsQ0FBdkI7QUFFQTs7Ozs7Ozs7Ozs7O0FBVUEzQixPQUFPLENBQUNtQyxJQUFSLEdBQWUsVUFBQVIsUUFBUTtBQUFBLFNBQUksSUFBSVMsYUFBSixDQUFTVCxRQUFULENBQUo7QUFBQSxDQUF2Qjs7ZUFFZTNCLE8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbidcbmltcG9ydCBQcm9jZXNzb3IgZnJvbSAnLi9wcm9jZXNzb3InXG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5J1xuaW1wb3J0IENvbW1lbnQgZnJvbSAnLi9jb21tZW50J1xuaW1wb3J0IEF0UnVsZSBmcm9tICcuL2F0LXJ1bGUnXG5pbXBvcnQgdmVuZG9yIGZyb20gJy4vdmVuZG9yJ1xuaW1wb3J0IHBhcnNlIGZyb20gJy4vcGFyc2UnXG5pbXBvcnQgbGlzdCBmcm9tICcuL2xpc3QnXG5pbXBvcnQgUnVsZSBmcm9tICcuL3J1bGUnXG5pbXBvcnQgUm9vdCBmcm9tICcuL3Jvb3QnXG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IHtAbGluayBQcm9jZXNzb3J9IGluc3RhbmNlIHRoYXQgd2lsbCBhcHBseSBgcGx1Z2luc2BcbiAqIGFzIENTUyBwcm9jZXNzb3JzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXkuPFBsdWdpbnxwbHVnaW5GdW5jdGlvbj58UHJvY2Vzc29yfSBwbHVnaW5zIFBvc3RDU1MgcGx1Z2lucy5cbiAqICAgICAgICBTZWUge0BsaW5rIFByb2Nlc3NvciN1c2V9IGZvciBwbHVnaW4gZm9ybWF0LlxuICpcbiAqIEByZXR1cm4ge1Byb2Nlc3Nvcn0gUHJvY2Vzc29yIHRvIHByb2Nlc3MgbXVsdGlwbGUgQ1NTLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgcG9zdGNzcyBmcm9tICdwb3N0Y3NzJ1xuICpcbiAqIHBvc3Rjc3MocGx1Z2lucykucHJvY2Vzcyhjc3MsIHsgZnJvbSwgdG8gfSkudGhlbihyZXN1bHQgPT4ge1xuICogICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKVxuICogfSlcbiAqXG4gKiBAbmFtZXNwYWNlIHBvc3Rjc3NcbiAqL1xuZnVuY3Rpb24gcG9zdGNzcyAoLi4ucGx1Z2lucykge1xuICBpZiAocGx1Z2lucy5sZW5ndGggPT09IDEgJiYgQXJyYXkuaXNBcnJheShwbHVnaW5zWzBdKSkge1xuICAgIHBsdWdpbnMgPSBwbHVnaW5zWzBdXG4gIH1cbiAgcmV0dXJuIG5ldyBQcm9jZXNzb3IocGx1Z2lucylcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgUG9zdENTUyBwbHVnaW4gd2l0aCBhIHN0YW5kYXJkIEFQSS5cbiAqXG4gKiBUaGUgbmV3bHktd3JhcHBlZCBmdW5jdGlvbiB3aWxsIHByb3ZpZGUgYm90aCB0aGUgbmFtZSBhbmQgUG9zdENTU1xuICogdmVyc2lvbiBvZiB0aGUgcGx1Z2luLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKFtyZXBsYWNlXSlcbiAqIHByb2Nlc3Nvci5wbHVnaW5zWzBdLnBvc3Rjc3NQbHVnaW4gIC8vPT4gJ3Bvc3Rjc3MtcmVwbGFjZSdcbiAqIHByb2Nlc3Nvci5wbHVnaW5zWzBdLnBvc3Rjc3NWZXJzaW9uIC8vPT4gJzYuMC4wJ1xuICogYGBgXG4gKlxuICogVGhlIHBsdWdpbiBmdW5jdGlvbiByZWNlaXZlcyAyIGFyZ3VtZW50czoge0BsaW5rIFJvb3R9XG4gKiBhbmQge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2UuIFRoZSBmdW5jdGlvbiBzaG91bGQgbXV0YXRlIHRoZSBwcm92aWRlZFxuICogYFJvb3RgIG5vZGUuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gY3JlYXRlIGEgbmV3IGBSb290YCBub2RlXG4gKiBhbmQgb3ZlcnJpZGUgdGhlIGByZXN1bHQucm9vdGAgcHJvcGVydHkuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IGNsZWFuZXIgPSBwb3N0Y3NzLnBsdWdpbigncG9zdGNzcy1jbGVhbmVyJywgKCkgPT4ge1xuICogICByZXR1cm4gKHJvb3QsIHJlc3VsdCkgPT4ge1xuICogICAgIHJlc3VsdC5yb290ID0gcG9zdGNzcy5yb290KClcbiAqICAgfVxuICogfSlcbiAqIGBgYFxuICpcbiAqIEFzIGEgY29udmVuaWVuY2UsIHBsdWdpbnMgYWxzbyBleHBvc2UgYSBgcHJvY2Vzc2AgbWV0aG9kIHNvIHRoYXQgeW91IGNhbiB1c2VcbiAqIHRoZW0gYXMgc3RhbmRhbG9uZSB0b29scy5cbiAqXG4gKiBgYGBqc1xuICogY2xlYW5lci5wcm9jZXNzKGNzcywgcHJvY2Vzc09wdHMsIHBsdWdpbk9wdHMpXG4gKiAvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG86XG4gKiBwb3N0Y3NzKFsgY2xlYW5lcihwbHVnaW5PcHRzKSBdKS5wcm9jZXNzKGNzcywgcHJvY2Vzc09wdHMpXG4gKiBgYGBcbiAqXG4gKiBBc3luY2hyb25vdXMgcGx1Z2lucyBzaG91bGQgcmV0dXJuIGEgYFByb21pc2VgIGluc3RhbmNlLlxuICpcbiAqIGBgYGpzXG4gKiBwb3N0Y3NzLnBsdWdpbigncG9zdGNzcy1pbXBvcnQnLCAoKSA9PiB7XG4gKiAgIHJldHVybiAocm9vdCwgcmVzdWx0KSA9PiB7XG4gKiAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gKiAgICAgICBmcy5yZWFkRmlsZSgnYmFzZS5jc3MnLCAoYmFzZSkgPT4ge1xuICogICAgICAgICByb290LnByZXBlbmQoYmFzZSlcbiAqICAgICAgICAgcmVzb2x2ZSgpXG4gKiAgICAgICB9KVxuICogICAgIH0pXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBBZGQgd2FybmluZ3MgdXNpbmcgdGhlIHtAbGluayBOb2RlI3dhcm59IG1ldGhvZC5cbiAqIFNlbmQgZGF0YSB0byBvdGhlciBwbHVnaW5zIHVzaW5nIHRoZSB7QGxpbmsgUmVzdWx0I21lc3NhZ2VzfSBhcnJheS5cbiAqXG4gKiBgYGBqc1xuICogcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtY2FuaXVzZS10ZXN0JywgKCkgPT4ge1xuICogICByZXR1cm4gKHJvb3QsIHJlc3VsdCkgPT4ge1xuICogICAgIHJvb3Qud2Fsa0RlY2xzKGRlY2wgPT4ge1xuICogICAgICAgaWYgKCFjYW5pdXNlLnN1cHBvcnQoZGVjbC5wcm9wKSkge1xuICogICAgICAgICBkZWNsLndhcm4ocmVzdWx0LCAnU29tZSBicm93c2VycyBkbyBub3Qgc3VwcG9ydCAnICsgZGVjbC5wcm9wKVxuICogICAgICAgfVxuICogICAgIH0pXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgICBQb3N0Q1NTIHBsdWdpbiBuYW1lLiBTYW1lIGFzIGluIGBuYW1lYFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkgaW4gYHBhY2thZ2UuanNvbmAuIEl0IHdpbGwgYmUgc2F2ZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGBwbHVnaW4ucG9zdGNzc1BsdWdpbmAgcHJvcGVydHkuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBpbml0aWFsaXplciBXaWxsIHJlY2VpdmUgcGx1Z2luIG9wdGlvbnNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzaG91bGQgcmV0dXJuIHtAbGluayBwbHVnaW5GdW5jdGlvbn1cbiAqXG4gKiBAcmV0dXJuIHtQbHVnaW59IFBvc3RDU1MgcGx1Z2luLlxuICovXG5wb3N0Y3NzLnBsdWdpbiA9IGZ1bmN0aW9uIHBsdWdpbiAobmFtZSwgaW5pdGlhbGl6ZXIpIHtcbiAgZnVuY3Rpb24gY3JlYXRvciAoLi4uYXJncykge1xuICAgIGxldCB0cmFuc2Zvcm1lciA9IGluaXRpYWxpemVyKC4uLmFyZ3MpXG4gICAgdHJhbnNmb3JtZXIucG9zdGNzc1BsdWdpbiA9IG5hbWVcbiAgICB0cmFuc2Zvcm1lci5wb3N0Y3NzVmVyc2lvbiA9IChuZXcgUHJvY2Vzc29yKCkpLnZlcnNpb25cbiAgICByZXR1cm4gdHJhbnNmb3JtZXJcbiAgfVxuXG4gIGxldCBjYWNoZVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRvciwgJ3Bvc3Rjc3MnLCB7XG4gICAgZ2V0ICgpIHtcbiAgICAgIGlmICghY2FjaGUpIGNhY2hlID0gY3JlYXRvcigpXG4gICAgICByZXR1cm4gY2FjaGVcbiAgICB9XG4gIH0pXG5cbiAgY3JlYXRvci5wcm9jZXNzID0gZnVuY3Rpb24gKGNzcywgcHJvY2Vzc09wdHMsIHBsdWdpbk9wdHMpIHtcbiAgICByZXR1cm4gcG9zdGNzcyhbY3JlYXRvcihwbHVnaW5PcHRzKV0pLnByb2Nlc3MoY3NzLCBwcm9jZXNzT3B0cylcbiAgfVxuXG4gIHJldHVybiBjcmVhdG9yXG59XG5cbi8qKlxuICogRGVmYXVsdCBmdW5jdGlvbiB0byBjb252ZXJ0IGEgbm9kZSB0cmVlIGludG8gYSBDU1Mgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICAgICBTdGFydCBub2RlIGZvciBzdHJpbmdpZmluZy4gVXN1YWxseSB7QGxpbmsgUm9vdH0uXG4gKiBAcGFyYW0ge2J1aWxkZXJ9IGJ1aWxkZXIgRnVuY3Rpb24gdG8gY29uY2F0ZW5hdGUgQ1NTIGZyb20gbm9kZeKAmXMgcGFydHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBvciBnZW5lcmF0ZSBzdHJpbmcgYW5kIHNvdXJjZSBtYXAuXG4gKlxuICogQHJldHVybiB7dm9pZH1cbiAqXG4gKiBAZnVuY3Rpb25cbiAqL1xucG9zdGNzcy5zdHJpbmdpZnkgPSBzdHJpbmdpZnlcblxuLyoqXG4gKiBQYXJzZXMgc291cmNlIGNzcyBhbmQgcmV0dXJucyBhIG5ldyB7QGxpbmsgUm9vdH0gbm9kZSxcbiAqIHdoaWNoIGNvbnRhaW5zIHRoZSBzb3VyY2UgQ1NTIG5vZGVzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfHRvU3RyaW5nfSBjc3MgICBTdHJpbmcgd2l0aCBpbnB1dCBDU1Mgb3IgYW55IG9iamVjdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdG9TdHJpbmcoKSBtZXRob2QsIGxpa2UgYSBCdWZmZXJcbiAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSBPcHRpb25zIHdpdGggb25seSBgZnJvbWAgYW5kIGBtYXBgIGtleXMuXG4gKlxuICogQHJldHVybiB7Um9vdH0gUG9zdENTUyBBU1QuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNpbXBsZSBDU1MgY29uY2F0ZW5hdGlvbiB3aXRoIHNvdXJjZSBtYXAgc3VwcG9ydFxuICogY29uc3Qgcm9vdDEgPSBwb3N0Y3NzLnBhcnNlKGNzczEsIHsgZnJvbTogZmlsZTEgfSlcbiAqIGNvbnN0IHJvb3QyID0gcG9zdGNzcy5wYXJzZShjc3MyLCB7IGZyb206IGZpbGUyIH0pXG4gKiByb290MS5hcHBlbmQocm9vdDIpLnRvUmVzdWx0KCkuY3NzXG4gKlxuICogQGZ1bmN0aW9uXG4gKi9cbnBvc3Rjc3MucGFyc2UgPSBwYXJzZVxuXG4vKipcbiAqIENvbnRhaW5zIHRoZSB7QGxpbmsgdmVuZG9yfSBtb2R1bGUuXG4gKlxuICogQHR5cGUge3ZlbmRvcn1cbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy52ZW5kb3IudW5wcmVmaXhlZCgnLW1vei10YWInKSAvLz0+IFsndGFiJ11cbiAqL1xucG9zdGNzcy52ZW5kb3IgPSB2ZW5kb3JcblxuLyoqXG4gKiBDb250YWlucyB0aGUge0BsaW5rIGxpc3R9IG1vZHVsZS5cbiAqXG4gKiBAbWVtYmVyIHtsaXN0fVxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLmxpc3Quc3BhY2UoJzVweCBjYWxjKDEwJSArIDVweCknKSAvLz0+IFsnNXB4JywgJ2NhbGMoMTAlICsgNXB4KSddXG4gKi9cbnBvc3Rjc3MubGlzdCA9IGxpc3RcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBDb21tZW50fSBub2RlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbZGVmYXVsdHNdIFByb3BlcnRpZXMgZm9yIHRoZSBuZXcgbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHtDb21tZW50fSBOZXcgY29tbWVudCBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MuY29tbWVudCh7IHRleHQ6ICd0ZXN0JyB9KVxuICovXG5wb3N0Y3NzLmNvbW1lbnQgPSBkZWZhdWx0cyA9PiBuZXcgQ29tbWVudChkZWZhdWx0cylcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBBdFJ1bGV9IG5vZGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gUHJvcGVydGllcyBmb3IgdGhlIG5ldyBub2RlLlxuICpcbiAqIEByZXR1cm4ge0F0UnVsZX0gbmV3IGF0LXJ1bGUgbm9kZVxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLmF0UnVsZSh7IG5hbWU6ICdjaGFyc2V0JyB9KS50b1N0cmluZygpIC8vPT4gXCJAY2hhcnNldFwiXG4gKi9cbnBvc3Rjc3MuYXRSdWxlID0gZGVmYXVsdHMgPT4gbmV3IEF0UnVsZShkZWZhdWx0cylcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBEZWNsYXJhdGlvbn0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSBQcm9wZXJ0aWVzIGZvciB0aGUgbmV3IG5vZGUuXG4gKlxuICogQHJldHVybiB7RGVjbGFyYXRpb259IG5ldyBkZWNsYXJhdGlvbiBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MuZGVjbCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAncmVkJyB9KS50b1N0cmluZygpIC8vPT4gXCJjb2xvcjogcmVkXCJcbiAqL1xucG9zdGNzcy5kZWNsID0gZGVmYXVsdHMgPT4gbmV3IERlY2xhcmF0aW9uKGRlZmF1bHRzKVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFJ1bGV9IG5vZGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gUHJvcGVydGllcyBmb3IgdGhlIG5ldyBub2RlLlxuICpcbiAqIEByZXR1cm4ge1J1bGV9IG5ldyBydWxlIG5vZGVcbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy5ydWxlKHsgc2VsZWN0b3I6ICdhJyB9KS50b1N0cmluZygpIC8vPT4gXCJhIHtcXG59XCJcbiAqL1xucG9zdGNzcy5ydWxlID0gZGVmYXVsdHMgPT4gbmV3IFJ1bGUoZGVmYXVsdHMpXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgUm9vdH0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSBQcm9wZXJ0aWVzIGZvciB0aGUgbmV3IG5vZGUuXG4gKlxuICogQHJldHVybiB7Um9vdH0gbmV3IHJvb3Qgbm9kZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy5yb290KHsgYWZ0ZXI6ICdcXG4nIH0pLnRvU3RyaW5nKCkgLy89PiBcIlxcblwiXG4gKi9cbnBvc3Rjc3Mucm9vdCA9IGRlZmF1bHRzID0+IG5ldyBSb290KGRlZmF1bHRzKVxuXG5leHBvcnQgZGVmYXVsdCBwb3N0Y3NzXG4iXSwiZmlsZSI6InBvc3Rjc3MuanMifQ==
diff --git a/assets/node_modules/postcss/lib/previous-map.js b/assets/node_modules/postcss/lib/previous-map.js
deleted file mode 100644
index 23cee46..0000000
--- a/assets/node_modules/postcss/lib/previous-map.js
+++ /dev/null
@@ -1,161 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _sourceMap = _interopRequireDefault(require("source-map"));
-
-var _path = _interopRequireDefault(require("path"));
-
-var _fs = _interopRequireDefault(require("fs"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function fromBase64(str) {
- if (Buffer) {
- return Buffer.from(str, 'base64').toString();
- } else {
- return window.atob(str);
- }
-}
-/**
- * Source map information from input CSS.
- * For example, source map after Sass compiler.
- *
- * This class will automatically find source map in input CSS or in file system
- * near input file (according `from` option).
- *
- * @example
- * const root = postcss.parse(css, { from: 'a.sass.css' })
- * root.input.map //=> PreviousMap
- */
-
-
-var PreviousMap =
-/*#__PURE__*/
-function () {
- /**
- * @param {string} css Input CSS source.
- * @param {processOptions} [opts] {@link Processor#process} options.
- */
- function PreviousMap(css, opts) {
- this.loadAnnotation(css);
- /**
- * Was source map inlined by data-uri to input CSS.
- *
- * @type {boolean}
- */
-
- this.inline = this.startWith(this.annotation, 'data:');
- var prev = opts.map ? opts.map.prev : undefined;
- var text = this.loadMap(opts.from, prev);
- if (text) this.text = text;
- }
- /**
- * Create a instance of `SourceMapGenerator` class
- * from the `source-map` library to work with source map information.
- *
- * It is lazy method, so it will create object only on first call
- * and then it will use cache.
- *
- * @return {SourceMapGenerator} Object with source map information.
- */
-
-
- var _proto = PreviousMap.prototype;
-
- _proto.consumer = function consumer() {
- if (!this.consumerCache) {
- this.consumerCache = new _sourceMap.default.SourceMapConsumer(this.text);
- }
-
- return this.consumerCache;
- }
- /**
- * Does source map contains `sourcesContent` with input source text.
- *
- * @return {boolean} Is `sourcesContent` present.
- */
- ;
-
- _proto.withContent = function withContent() {
- return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);
- };
-
- _proto.startWith = function startWith(string, start) {
- if (!string) return false;
- return string.substr(0, start.length) === start;
- };
-
- _proto.loadAnnotation = function loadAnnotation(css) {
- var match = css.match(/\/\*\s*# sourceMappingURL=(.*)\s*\*\//);
- if (match) this.annotation = match[1].trim();
- };
-
- _proto.decodeInline = function decodeInline(text) {
- var baseCharsetUri = /^data:application\/json;charset=utf-?8;base64,/;
- var baseUri = /^data:application\/json;base64,/;
- var uri = 'data:application/json,';
-
- if (this.startWith(text, uri)) {
- return decodeURIComponent(text.substr(uri.length));
- }
-
- if (baseCharsetUri.test(text) || baseUri.test(text)) {
- return fromBase64(text.substr(RegExp.lastMatch.length));
- }
-
- var encoding = text.match(/data:application\/json;([^,]+),/)[1];
- throw new Error('Unsupported source map encoding ' + encoding);
- };
-
- _proto.loadMap = function loadMap(file, prev) {
- if (prev === false) return false;
-
- if (prev) {
- if (typeof prev === 'string') {
- return prev;
- } else if (typeof prev === 'function') {
- var prevPath = prev(file);
-
- if (prevPath && _fs.default.existsSync && _fs.default.existsSync(prevPath)) {
- return _fs.default.readFileSync(prevPath, 'utf-8').toString().trim();
- } else {
- throw new Error('Unable to load previous source map: ' + prevPath.toString());
- }
- } else if (prev instanceof _sourceMap.default.SourceMapConsumer) {
- return _sourceMap.default.SourceMapGenerator.fromSourceMap(prev).toString();
- } else if (prev instanceof _sourceMap.default.SourceMapGenerator) {
- return prev.toString();
- } else if (this.isMap(prev)) {
- return JSON.stringify(prev);
- } else {
- throw new Error('Unsupported previous source map format: ' + prev.toString());
- }
- } else if (this.inline) {
- return this.decodeInline(this.annotation);
- } else if (this.annotation) {
- var map = this.annotation;
- if (file) map = _path.default.join(_path.default.dirname(file), map);
- this.root = _path.default.dirname(map);
-
- if (_fs.default.existsSync && _fs.default.existsSync(map)) {
- return _fs.default.readFileSync(map, 'utf-8').toString().trim();
- } else {
- return false;
- }
- }
- };
-
- _proto.isMap = function isMap(map) {
- if (typeof map !== 'object') return false;
- return typeof map.mappings === 'string' || typeof map._mappings === 'string';
- };
-
- return PreviousMap;
-}();
-
-var _default = PreviousMap;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByZXZpb3VzLW1hcC5lczYiXSwibmFtZXMiOlsiZnJvbUJhc2U2NCIsInN0ciIsIkJ1ZmZlciIsImZyb20iLCJ0b1N0cmluZyIsIndpbmRvdyIsImF0b2IiLCJQcmV2aW91c01hcCIsImNzcyIsIm9wdHMiLCJsb2FkQW5ub3RhdGlvbiIsImlubGluZSIsInN0YXJ0V2l0aCIsImFubm90YXRpb24iLCJwcmV2IiwibWFwIiwidW5kZWZpbmVkIiwidGV4dCIsImxvYWRNYXAiLCJjb25zdW1lciIsImNvbnN1bWVyQ2FjaGUiLCJtb3ppbGxhIiwiU291cmNlTWFwQ29uc3VtZXIiLCJ3aXRoQ29udGVudCIsInNvdXJjZXNDb250ZW50IiwibGVuZ3RoIiwic3RyaW5nIiwic3RhcnQiLCJzdWJzdHIiLCJtYXRjaCIsInRyaW0iLCJkZWNvZGVJbmxpbmUiLCJiYXNlQ2hhcnNldFVyaSIsImJhc2VVcmkiLCJ1cmkiLCJkZWNvZGVVUklDb21wb25lbnQiLCJ0ZXN0IiwiUmVnRXhwIiwibGFzdE1hdGNoIiwiZW5jb2RpbmciLCJFcnJvciIsImZpbGUiLCJwcmV2UGF0aCIsImZzIiwiZXhpc3RzU3luYyIsInJlYWRGaWxlU3luYyIsIlNvdXJjZU1hcEdlbmVyYXRvciIsImZyb21Tb3VyY2VNYXAiLCJpc01hcCIsIkpTT04iLCJzdHJpbmdpZnkiLCJwYXRoIiwiam9pbiIsImRpcm5hbWUiLCJyb290IiwibWFwcGluZ3MiLCJfbWFwcGluZ3MiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxTQUFTQSxVQUFULENBQXFCQyxHQUFyQixFQUEwQjtBQUN4QixNQUFJQyxNQUFKLEVBQVk7QUFDVixXQUFPQSxNQUFNLENBQUNDLElBQVAsQ0FBWUYsR0FBWixFQUFpQixRQUFqQixFQUEyQkcsUUFBM0IsRUFBUDtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU9DLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZTCxHQUFaLENBQVA7QUFDRDtBQUNGO0FBRUQ7Ozs7Ozs7Ozs7Ozs7SUFXTU0sVzs7O0FBQ0o7Ozs7QUFJQSx1QkFBYUMsR0FBYixFQUFrQkMsSUFBbEIsRUFBd0I7QUFDdEIsU0FBS0MsY0FBTCxDQUFvQkYsR0FBcEI7QUFDQTs7Ozs7O0FBS0EsU0FBS0csTUFBTCxHQUFjLEtBQUtDLFNBQUwsQ0FBZSxLQUFLQyxVQUFwQixFQUFnQyxPQUFoQyxDQUFkO0FBRUEsUUFBSUMsSUFBSSxHQUFHTCxJQUFJLENBQUNNLEdBQUwsR0FBV04sSUFBSSxDQUFDTSxHQUFMLENBQVNELElBQXBCLEdBQTJCRSxTQUF0QztBQUNBLFFBQUlDLElBQUksR0FBRyxLQUFLQyxPQUFMLENBQWFULElBQUksQ0FBQ04sSUFBbEIsRUFBd0JXLElBQXhCLENBQVg7QUFDQSxRQUFJRyxJQUFKLEVBQVUsS0FBS0EsSUFBTCxHQUFZQSxJQUFaO0FBQ1g7QUFFRDs7Ozs7Ozs7Ozs7OztTQVNBRSxRLEdBQUEsb0JBQVk7QUFDVixRQUFJLENBQUMsS0FBS0MsYUFBVixFQUF5QjtBQUN2QixXQUFLQSxhQUFMLEdBQXFCLElBQUlDLG1CQUFRQyxpQkFBWixDQUE4QixLQUFLTCxJQUFuQyxDQUFyQjtBQUNEOztBQUNELFdBQU8sS0FBS0csYUFBWjtBQUNEO0FBRUQ7Ozs7Ozs7U0FLQUcsVyxHQUFBLHVCQUFlO0FBQ2IsV0FBTyxDQUFDLEVBQUUsS0FBS0osUUFBTCxHQUFnQkssY0FBaEIsSUFDQSxLQUFLTCxRQUFMLEdBQWdCSyxjQUFoQixDQUErQkMsTUFBL0IsR0FBd0MsQ0FEMUMsQ0FBUjtBQUVELEc7O1NBRURiLFMsR0FBQSxtQkFBV2MsTUFBWCxFQUFtQkMsS0FBbkIsRUFBMEI7QUFDeEIsUUFBSSxDQUFDRCxNQUFMLEVBQWEsT0FBTyxLQUFQO0FBQ2IsV0FBT0EsTUFBTSxDQUFDRSxNQUFQLENBQWMsQ0FBZCxFQUFpQkQsS0FBSyxDQUFDRixNQUF2QixNQUFtQ0UsS0FBMUM7QUFDRCxHOztTQUVEakIsYyxHQUFBLHdCQUFnQkYsR0FBaEIsRUFBcUI7QUFDbkIsUUFBSXFCLEtBQUssR0FBR3JCLEdBQUcsQ0FBQ3FCLEtBQUosQ0FBVSx1Q0FBVixDQUFaO0FBQ0EsUUFBSUEsS0FBSixFQUFXLEtBQUtoQixVQUFMLEdBQWtCZ0IsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTQyxJQUFULEVBQWxCO0FBQ1osRzs7U0FFREMsWSxHQUFBLHNCQUFjZCxJQUFkLEVBQW9CO0FBQ2xCLFFBQUllLGNBQWMsR0FBRyxnREFBckI7QUFDQSxRQUFJQyxPQUFPLEdBQUcsaUNBQWQ7QUFDQSxRQUFJQyxHQUFHLEdBQUcsd0JBQVY7O0FBRUEsUUFBSSxLQUFLdEIsU0FBTCxDQUFlSyxJQUFmLEVBQXFCaUIsR0FBckIsQ0FBSixFQUErQjtBQUM3QixhQUFPQyxrQkFBa0IsQ0FBQ2xCLElBQUksQ0FBQ1csTUFBTCxDQUFZTSxHQUFHLENBQUNULE1BQWhCLENBQUQsQ0FBekI7QUFDRDs7QUFFRCxRQUFJTyxjQUFjLENBQUNJLElBQWYsQ0FBb0JuQixJQUFwQixLQUE2QmdCLE9BQU8sQ0FBQ0csSUFBUixDQUFhbkIsSUFBYixDQUFqQyxFQUFxRDtBQUNuRCxhQUFPakIsVUFBVSxDQUFDaUIsSUFBSSxDQUFDVyxNQUFMLENBQVlTLE1BQU0sQ0FBQ0MsU0FBUCxDQUFpQmIsTUFBN0IsQ0FBRCxDQUFqQjtBQUNEOztBQUVELFFBQUljLFFBQVEsR0FBR3RCLElBQUksQ0FBQ1ksS0FBTCxDQUFXLGlDQUFYLEVBQThDLENBQTlDLENBQWY7QUFDQSxVQUFNLElBQUlXLEtBQUosQ0FBVSxxQ0FBcUNELFFBQS9DLENBQU47QUFDRCxHOztTQUVEckIsTyxHQUFBLGlCQUFTdUIsSUFBVCxFQUFlM0IsSUFBZixFQUFxQjtBQUNuQixRQUFJQSxJQUFJLEtBQUssS0FBYixFQUFvQixPQUFPLEtBQVA7O0FBRXBCLFFBQUlBLElBQUosRUFBVTtBQUNSLFVBQUksT0FBT0EsSUFBUCxLQUFnQixRQUFwQixFQUE4QjtBQUM1QixlQUFPQSxJQUFQO0FBQ0QsT0FGRCxNQUVPLElBQUksT0FBT0EsSUFBUCxLQUFnQixVQUFwQixFQUFnQztBQUNyQyxZQUFJNEIsUUFBUSxHQUFHNUIsSUFBSSxDQUFDMkIsSUFBRCxDQUFuQjs7QUFDQSxZQUFJQyxRQUFRLElBQUlDLFlBQUdDLFVBQWYsSUFBNkJELFlBQUdDLFVBQUgsQ0FBY0YsUUFBZCxDQUFqQyxFQUEwRDtBQUN4RCxpQkFBT0MsWUFBR0UsWUFBSCxDQUFnQkgsUUFBaEIsRUFBMEIsT0FBMUIsRUFBbUN0QyxRQUFuQyxHQUE4QzBCLElBQTlDLEVBQVA7QUFDRCxTQUZELE1BRU87QUFDTCxnQkFBTSxJQUFJVSxLQUFKLENBQ0oseUNBQXlDRSxRQUFRLENBQUN0QyxRQUFULEVBRHJDLENBQU47QUFFRDtBQUNGLE9BUk0sTUFRQSxJQUFJVSxJQUFJLFlBQVlPLG1CQUFRQyxpQkFBNUIsRUFBK0M7QUFDcEQsZUFBT0QsbUJBQVF5QixrQkFBUixDQUEyQkMsYUFBM0IsQ0FBeUNqQyxJQUF6QyxFQUErQ1YsUUFBL0MsRUFBUDtBQUNELE9BRk0sTUFFQSxJQUFJVSxJQUFJLFlBQVlPLG1CQUFReUIsa0JBQTVCLEVBQWdEO0FBQ3JELGVBQU9oQyxJQUFJLENBQUNWLFFBQUwsRUFBUDtBQUNELE9BRk0sTUFFQSxJQUFJLEtBQUs0QyxLQUFMLENBQVdsQyxJQUFYLENBQUosRUFBc0I7QUFDM0IsZUFBT21DLElBQUksQ0FBQ0MsU0FBTCxDQUFlcEMsSUFBZixDQUFQO0FBQ0QsT0FGTSxNQUVBO0FBQ0wsY0FBTSxJQUFJMEIsS0FBSixDQUNKLDZDQUE2QzFCLElBQUksQ0FBQ1YsUUFBTCxFQUR6QyxDQUFOO0FBRUQ7QUFDRixLQXJCRCxNQXFCTyxJQUFJLEtBQUtPLE1BQVQsRUFBaUI7QUFDdEIsYUFBTyxLQUFLb0IsWUFBTCxDQUFrQixLQUFLbEIsVUFBdkIsQ0FBUDtBQUNELEtBRk0sTUFFQSxJQUFJLEtBQUtBLFVBQVQsRUFBcUI7QUFDMUIsVUFBSUUsR0FBRyxHQUFHLEtBQUtGLFVBQWY7QUFDQSxVQUFJNEIsSUFBSixFQUFVMUIsR0FBRyxHQUFHb0MsY0FBS0MsSUFBTCxDQUFVRCxjQUFLRSxPQUFMLENBQWFaLElBQWIsQ0FBVixFQUE4QjFCLEdBQTlCLENBQU47QUFFVixXQUFLdUMsSUFBTCxHQUFZSCxjQUFLRSxPQUFMLENBQWF0QyxHQUFiLENBQVo7O0FBQ0EsVUFBSTRCLFlBQUdDLFVBQUgsSUFBaUJELFlBQUdDLFVBQUgsQ0FBYzdCLEdBQWQsQ0FBckIsRUFBeUM7QUFDdkMsZUFBTzRCLFlBQUdFLFlBQUgsQ0FBZ0I5QixHQUFoQixFQUFxQixPQUFyQixFQUE4QlgsUUFBOUIsR0FBeUMwQixJQUF6QyxFQUFQO0FBQ0QsT0FGRCxNQUVPO0FBQ0wsZUFBTyxLQUFQO0FBQ0Q7QUFDRjtBQUNGLEc7O1NBRURrQixLLEdBQUEsZUFBT2pDLEdBQVAsRUFBWTtBQUNWLFFBQUksT0FBT0EsR0FBUCxLQUFlLFFBQW5CLEVBQTZCLE9BQU8sS0FBUDtBQUM3QixXQUFPLE9BQU9BLEdBQUcsQ0FBQ3dDLFFBQVgsS0FBd0IsUUFBeEIsSUFBb0MsT0FBT3hDLEdBQUcsQ0FBQ3lDLFNBQVgsS0FBeUIsUUFBcEU7QUFDRCxHOzs7OztlQUdZakQsVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb3ppbGxhIGZyb20gJ3NvdXJjZS1tYXAnXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuXG5mdW5jdGlvbiBmcm9tQmFzZTY0IChzdHIpIHtcbiAgaWYgKEJ1ZmZlcikge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShzdHIsICdiYXNlNjQnKS50b1N0cmluZygpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHdpbmRvdy5hdG9iKHN0cilcbiAgfVxufVxuXG4vKipcbiAqIFNvdXJjZSBtYXAgaW5mb3JtYXRpb24gZnJvbSBpbnB1dCBDU1MuXG4gKiBGb3IgZXhhbXBsZSwgc291cmNlIG1hcCBhZnRlciBTYXNzIGNvbXBpbGVyLlxuICpcbiAqIFRoaXMgY2xhc3Mgd2lsbCBhdXRvbWF0aWNhbGx5IGZpbmQgc291cmNlIG1hcCBpbiBpbnB1dCBDU1Mgb3IgaW4gZmlsZSBzeXN0ZW1cbiAqIG5lYXIgaW5wdXQgZmlsZSAoYWNjb3JkaW5nIGBmcm9tYCBvcHRpb24pLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MsIHsgZnJvbTogJ2Euc2Fzcy5jc3MnIH0pXG4gKiByb290LmlucHV0Lm1hcCAvLz0+IFByZXZpb3VzTWFwXG4gKi9cbmNsYXNzIFByZXZpb3VzTWFwIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSAgICAgICAgIGNzcyAgICBJbnB1dCBDU1Mgc291cmNlLlxuICAgKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBbb3B0c10ge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfSBvcHRpb25zLlxuICAgKi9cbiAgY29uc3RydWN0b3IgKGNzcywgb3B0cykge1xuICAgIHRoaXMubG9hZEFubm90YXRpb24oY3NzKVxuICAgIC8qKlxuICAgICAqIFdhcyBzb3VyY2UgbWFwIGlubGluZWQgYnkgZGF0YS11cmkgdG8gaW5wdXQgQ1NTLlxuICAgICAqXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5pbmxpbmUgPSB0aGlzLnN0YXJ0V2l0aCh0aGlzLmFubm90YXRpb24sICdkYXRhOicpXG5cbiAgICBsZXQgcHJldiA9IG9wdHMubWFwID8gb3B0cy5tYXAucHJldiA6IHVuZGVmaW5lZFxuICAgIGxldCB0ZXh0ID0gdGhpcy5sb2FkTWFwKG9wdHMuZnJvbSwgcHJldilcbiAgICBpZiAodGV4dCkgdGhpcy50ZXh0ID0gdGV4dFxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGluc3RhbmNlIG9mIGBTb3VyY2VNYXBHZW5lcmF0b3JgIGNsYXNzXG4gICAqIGZyb20gdGhlIGBzb3VyY2UtbWFwYCBsaWJyYXJ5IHRvIHdvcmsgd2l0aCBzb3VyY2UgbWFwIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBJdCBpcyBsYXp5IG1ldGhvZCwgc28gaXQgd2lsbCBjcmVhdGUgb2JqZWN0IG9ubHkgb24gZmlyc3QgY2FsbFxuICAgKiBhbmQgdGhlbiBpdCB3aWxsIHVzZSBjYWNoZS5cbiAgICpcbiAgICogQHJldHVybiB7U291cmNlTWFwR2VuZXJhdG9yfSBPYmplY3Qgd2l0aCBzb3VyY2UgbWFwIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgY29uc3VtZXIgKCkge1xuICAgIGlmICghdGhpcy5jb25zdW1lckNhY2hlKSB7XG4gICAgICB0aGlzLmNvbnN1bWVyQ2FjaGUgPSBuZXcgbW96aWxsYS5Tb3VyY2VNYXBDb25zdW1lcih0aGlzLnRleHQpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbnN1bWVyQ2FjaGVcbiAgfVxuXG4gIC8qKlxuICAgKiBEb2VzIHNvdXJjZSBtYXAgY29udGFpbnMgYHNvdXJjZXNDb250ZW50YCB3aXRoIGlucHV0IHNvdXJjZSB0ZXh0LlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBJcyBgc291cmNlc0NvbnRlbnRgIHByZXNlbnQuXG4gICAqL1xuICB3aXRoQ29udGVudCAoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMuY29uc3VtZXIoKS5zb3VyY2VzQ29udGVudCAmJlxuICAgICAgICAgICAgICB0aGlzLmNvbnN1bWVyKCkuc291cmNlc0NvbnRlbnQubGVuZ3RoID4gMClcbiAgfVxuXG4gIHN0YXJ0V2l0aCAoc3RyaW5nLCBzdGFydCkge1xuICAgIGlmICghc3RyaW5nKSByZXR1cm4gZmFsc2VcbiAgICByZXR1cm4gc3RyaW5nLnN1YnN0cigwLCBzdGFydC5sZW5ndGgpID09PSBzdGFydFxuICB9XG5cbiAgbG9hZEFubm90YXRpb24gKGNzcykge1xuICAgIGxldCBtYXRjaCA9IGNzcy5tYXRjaCgvXFwvXFwqXFxzKiMgc291cmNlTWFwcGluZ1VSTD0oLiopXFxzKlxcKlxcLy8pXG4gICAgaWYgKG1hdGNoKSB0aGlzLmFubm90YXRpb24gPSBtYXRjaFsxXS50cmltKClcbiAgfVxuXG4gIGRlY29kZUlubGluZSAodGV4dCkge1xuICAgIGxldCBiYXNlQ2hhcnNldFVyaSA9IC9eZGF0YTphcHBsaWNhdGlvblxcL2pzb247Y2hhcnNldD11dGYtPzg7YmFzZTY0LC9cbiAgICBsZXQgYmFzZVVyaSA9IC9eZGF0YTphcHBsaWNhdGlvblxcL2pzb247YmFzZTY0LC9cbiAgICBsZXQgdXJpID0gJ2RhdGE6YXBwbGljYXRpb24vanNvbiwnXG5cbiAgICBpZiAodGhpcy5zdGFydFdpdGgodGV4dCwgdXJpKSkge1xuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh0ZXh0LnN1YnN0cih1cmkubGVuZ3RoKSlcbiAgICB9XG5cbiAgICBpZiAoYmFzZUNoYXJzZXRVcmkudGVzdCh0ZXh0KSB8fCBiYXNlVXJpLnRlc3QodGV4dCkpIHtcbiAgICAgIHJldHVybiBmcm9tQmFzZTY0KHRleHQuc3Vic3RyKFJlZ0V4cC5sYXN0TWF0Y2gubGVuZ3RoKSlcbiAgICB9XG5cbiAgICBsZXQgZW5jb2RpbmcgPSB0ZXh0Lm1hdGNoKC9kYXRhOmFwcGxpY2F0aW9uXFwvanNvbjsoW14sXSspLC8pWzFdXG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzb3VyY2UgbWFwIGVuY29kaW5nICcgKyBlbmNvZGluZylcbiAgfVxuXG4gIGxvYWRNYXAgKGZpbGUsIHByZXYpIHtcbiAgICBpZiAocHJldiA9PT0gZmFsc2UpIHJldHVybiBmYWxzZVxuXG4gICAgaWYgKHByZXYpIHtcbiAgICAgIGlmICh0eXBlb2YgcHJldiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByZXYgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgbGV0IHByZXZQYXRoID0gcHJldihmaWxlKVxuICAgICAgICBpZiAocHJldlBhdGggJiYgZnMuZXhpc3RzU3luYyAmJiBmcy5leGlzdHNTeW5jKHByZXZQYXRoKSkge1xuICAgICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMocHJldlBhdGgsICd1dGYtOCcpLnRvU3RyaW5nKCkudHJpbSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1VuYWJsZSB0byBsb2FkIHByZXZpb3VzIHNvdXJjZSBtYXA6ICcgKyBwcmV2UGF0aC50b1N0cmluZygpKVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHByZXYgaW5zdGFuY2VvZiBtb3ppbGxhLlNvdXJjZU1hcENvbnN1bWVyKSB7XG4gICAgICAgIHJldHVybiBtb3ppbGxhLlNvdXJjZU1hcEdlbmVyYXRvci5mcm9tU291cmNlTWFwKHByZXYpLnRvU3RyaW5nKClcbiAgICAgIH0gZWxzZSBpZiAocHJldiBpbnN0YW5jZW9mIG1vemlsbGEuU291cmNlTWFwR2VuZXJhdG9yKSB7XG4gICAgICAgIHJldHVybiBwcmV2LnRvU3RyaW5nKClcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pc01hcChwcmV2KSkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocHJldilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnVW5zdXBwb3J0ZWQgcHJldmlvdXMgc291cmNlIG1hcCBmb3JtYXQ6ICcgKyBwcmV2LnRvU3RyaW5nKCkpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmlubGluZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVjb2RlSW5saW5lKHRoaXMuYW5ub3RhdGlvbilcbiAgICB9IGVsc2UgaWYgKHRoaXMuYW5ub3RhdGlvbikge1xuICAgICAgbGV0IG1hcCA9IHRoaXMuYW5ub3RhdGlvblxuICAgICAgaWYgKGZpbGUpIG1hcCA9IHBhdGguam9pbihwYXRoLmRpcm5hbWUoZmlsZSksIG1hcClcblxuICAgICAgdGhpcy5yb290ID0gcGF0aC5kaXJuYW1lKG1hcClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jICYmIGZzLmV4aXN0c1N5bmMobWFwKSkge1xuICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKG1hcCwgJ3V0Zi04JykudG9TdHJpbmcoKS50cmltKClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlzTWFwIChtYXApIHtcbiAgICBpZiAodHlwZW9mIG1hcCAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZVxuICAgIHJldHVybiB0eXBlb2YgbWFwLm1hcHBpbmdzID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgbWFwLl9tYXBwaW5ncyA9PT0gJ3N0cmluZydcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmV2aW91c01hcFxuIl0sImZpbGUiOiJwcmV2aW91cy1tYXAuanMifQ==
diff --git a/assets/node_modules/postcss/lib/processor.js b/assets/node_modules/postcss/lib/processor.js
deleted file mode 100644
index ec49eae..0000000
--- a/assets/node_modules/postcss/lib/processor.js
+++ /dev/null
@@ -1,263 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _lazyResult = _interopRequireDefault(require("./lazy-result"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Contains plugins to process CSS. Create one `Processor` instance,
- * initialize its plugins, and then use that instance on numerous CSS files.
- *
- * @example
- * const processor = postcss([autoprefixer, precss])
- * processor.process(css1).then(result => console.log(result.css))
- * processor.process(css2).then(result => console.log(result.css))
- */
-var Processor =
-/*#__PURE__*/
-function () {
- /**
- * @param {Array.<Plugin|pluginFunction>|Processor} plugins PostCSS plugins.
- * See {@link Processor#use} for plugin format.
- */
- function Processor(plugins) {
- if (plugins === void 0) {
- plugins = [];
- }
-
- /**
- * Current PostCSS version.
- *
- * @type {string}
- *
- * @example
- * if (result.processor.version.split('.')[0] !== '6') {
- * throw new Error('This plugin works only with PostCSS 6')
- * }
- */
- this.version = '7.0.26';
- /**
- * Plugins added to this processor.
- *
- * @type {pluginFunction[]}
- *
- * @example
- * const processor = postcss([autoprefixer, precss])
- * processor.plugins.length //=> 2
- */
-
- this.plugins = this.normalize(plugins);
- }
- /**
- * Adds a plugin to be used as a CSS processor.
- *
- * PostCSS plugin can be in 4 formats:
- * * A plugin created by {@link postcss.plugin} method.
- * * A function. PostCSS will pass the function a @{link Root}
- * as the first argument and current {@link Result} instance
- * as the second.
- * * An object with a `postcss` method. PostCSS will use that method
- * as described in #2.
- * * Another {@link Processor} instance. PostCSS will copy plugins
- * from that instance into this one.
- *
- * Plugins can also be added by passing them as arguments when creating
- * a `postcss` instance (see [`postcss(plugins)`]).
- *
- * Asynchronous plugins should return a `Promise` instance.
- *
- * @param {Plugin|pluginFunction|Processor} plugin PostCSS plugin
- * or {@link Processor}
- * with plugins.
- *
- * @example
- * const processor = postcss()
- * .use(autoprefixer)
- * .use(precss)
- *
- * @return {Processes} Current processor to make methods chain.
- */
-
-
- var _proto = Processor.prototype;
-
- _proto.use = function use(plugin) {
- this.plugins = this.plugins.concat(this.normalize([plugin]));
- return this;
- }
- /**
- * Parses source CSS and returns a {@link LazyResult} Promise proxy.
- * Because some plugins can be asynchronous it doesn’t make
- * any transformations. Transformations will be applied
- * in the {@link LazyResult} methods.
- *
- * @param {string|toString|Result} css String with input CSS or any object
- * with a `toString()` method,
- * like a Buffer. Optionally, send
- * a {@link Result} instance
- * and the processor will take
- * the {@link Root} from it.
- * @param {processOptions} [opts] Options.
- *
- * @return {LazyResult} Promise proxy.
- *
- * @example
- * processor.process(css, { from: 'a.css', to: 'a.out.css' })
- * .then(result => {
- * console.log(result.css)
- * })
- */
- ;
-
- _proto.process = function (_process) {
- function process(_x) {
- return _process.apply(this, arguments);
- }
-
- process.toString = function () {
- return _process.toString();
- };
-
- return process;
- }(function (css, opts) {
- if (opts === void 0) {
- opts = {};
- }
-
- if (this.plugins.length === 0 && opts.parser === opts.stringifier) {
- if (process.env.NODE_ENV !== 'production') {
- if (typeof console !== 'undefined' && console.warn) {
- console.warn('You did not set any plugins, parser, or stringifier. ' + 'Right now, PostCSS does nothing. Pick plugins for your case ' + 'on https://www.postcss.parts/ and use them in postcss.config.js.');
- }
- }
- }
-
- return new _lazyResult.default(this, css, opts);
- });
-
- _proto.normalize = function normalize(plugins) {
- var normalized = [];
-
- for (var _iterator = plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var i = _ref;
- if (i.postcss) i = i.postcss;
-
- if (typeof i === 'object' && Array.isArray(i.plugins)) {
- normalized = normalized.concat(i.plugins);
- } else if (typeof i === 'function') {
- normalized.push(i);
- } else if (typeof i === 'object' && (i.parse || i.stringify)) {
- if (process.env.NODE_ENV !== 'production') {
- throw new Error('PostCSS syntaxes cannot be used as plugins. Instead, please use ' + 'one of the syntax/parser/stringifier options as outlined ' + 'in your PostCSS runner documentation.');
- }
- } else {
- throw new Error(i + ' is not a PostCSS plugin');
- }
- }
-
- return normalized;
- };
-
- return Processor;
-}();
-
-var _default = Processor;
-/**
- * @callback builder
- * @param {string} part Part of generated CSS connected to this node.
- * @param {Node} node AST node.
- * @param {"start"|"end"} [type] Node’s part type.
- */
-
-/**
- * @callback parser
- *
- * @param {string|toString} css String with input CSS or any object
- * with toString() method, like a Buffer.
- * @param {processOptions} [opts] Options with only `from` and `map` keys.
- *
- * @return {Root} PostCSS AST
- */
-
-/**
- * @callback stringifier
- *
- * @param {Node} node Start node for stringifing. Usually {@link Root}.
- * @param {builder} builder Function to concatenate CSS from node’s parts
- * or generate string and source map.
- *
- * @return {void}
- */
-
-/**
- * @typedef {object} syntax
- * @property {parser} parse Function to generate AST by string.
- * @property {stringifier} stringify Function to generate string by AST.
- */
-
-/**
- * @typedef {object} toString
- * @property {function} toString
- */
-
-/**
- * @callback pluginFunction
- * @param {Root} root Parsed input CSS.
- * @param {Result} result Result to set warnings or check other plugins.
- */
-
-/**
- * @typedef {object} Plugin
- * @property {function} postcss PostCSS plugin function.
- */
-
-/**
- * @typedef {object} processOptions
- * @property {string} from The path of the CSS source file.
- * You should always set `from`,
- * because it is used in source map
- * generation and syntax error messages.
- * @property {string} to The path where you’ll put the output
- * CSS file. You should always set `to`
- * to generate correct source maps.
- * @property {parser} parser Function to generate AST by string.
- * @property {stringifier} stringifier Class to generate string by AST.
- * @property {syntax} syntax Object with `parse` and `stringify`.
- * @property {object} map Source map options.
- * @property {boolean} map.inline Does source map should
- * be embedded in the output
- * CSS as a base64-encoded
- * comment.
- * @property {string|object|false|function} map.prev Source map content
- * from a previous
- * processing step
- * (for example, Sass).
- * PostCSS will try to find
- * previous map automatically,
- * so you could disable it by
- * `false` value.
- * @property {boolean} map.sourcesContent Does PostCSS should set
- * the origin content to map.
- * @property {string|false} map.annotation Does PostCSS should set
- * annotation comment to map.
- * @property {string} map.from Override `from` in map’s
- * sources`.
- */
-
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2Nlc3Nvci5lczYiXSwibmFtZXMiOlsiUHJvY2Vzc29yIiwicGx1Z2lucyIsInZlcnNpb24iLCJub3JtYWxpemUiLCJ1c2UiLCJwbHVnaW4iLCJjb25jYXQiLCJwcm9jZXNzIiwiY3NzIiwib3B0cyIsImxlbmd0aCIsInBhcnNlciIsInN0cmluZ2lmaWVyIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwid2FybiIsIkxhenlSZXN1bHQiLCJub3JtYWxpemVkIiwiaSIsInBvc3Rjc3MiLCJBcnJheSIsImlzQXJyYXkiLCJwdXNoIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7OztBQUVBOzs7Ozs7Ozs7SUFTTUEsUzs7O0FBQ0o7Ozs7QUFJQSxxQkFBYUMsT0FBYixFQUEyQjtBQUFBLFFBQWRBLE9BQWM7QUFBZEEsTUFBQUEsT0FBYyxHQUFKLEVBQUk7QUFBQTs7QUFDekI7Ozs7Ozs7Ozs7QUFVQSxTQUFLQyxPQUFMLEdBQWUsUUFBZjtBQUNBOzs7Ozs7Ozs7O0FBU0EsU0FBS0QsT0FBTCxHQUFlLEtBQUtFLFNBQUwsQ0FBZUYsT0FBZixDQUFmO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBNkJBRyxHLEdBQUEsYUFBS0MsTUFBTCxFQUFhO0FBQ1gsU0FBS0osT0FBTCxHQUFlLEtBQUtBLE9BQUwsQ0FBYUssTUFBYixDQUFvQixLQUFLSCxTQUFMLENBQWUsQ0FBQ0UsTUFBRCxDQUFmLENBQXBCLENBQWY7QUFDQSxXQUFPLElBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FzQkFFLE87Ozs7Ozs7Ozs7SUFBQSxVQUFTQyxHQUFULEVBQWNDLElBQWQsRUFBMEI7QUFBQSxRQUFaQSxJQUFZO0FBQVpBLE1BQUFBLElBQVksR0FBTCxFQUFLO0FBQUE7O0FBQ3hCLFFBQUksS0FBS1IsT0FBTCxDQUFhUyxNQUFiLEtBQXdCLENBQXhCLElBQTZCRCxJQUFJLENBQUNFLE1BQUwsS0FBZ0JGLElBQUksQ0FBQ0csV0FBdEQsRUFBbUU7QUFDakUsVUFBSUwsT0FBTyxDQUFDTSxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekMsWUFBSSxPQUFPQyxPQUFQLEtBQW1CLFdBQW5CLElBQWtDQSxPQUFPLENBQUNDLElBQTlDLEVBQW9EO0FBQ2xERCxVQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FDRSwwREFDQSw4REFEQSxHQUVBLGtFQUhGO0FBS0Q7QUFDRjtBQUNGOztBQUNELFdBQU8sSUFBSUMsbUJBQUosQ0FBZSxJQUFmLEVBQXFCVCxHQUFyQixFQUEwQkMsSUFBMUIsQ0FBUDtBQUNELEc7O1NBRUROLFMsR0FBQSxtQkFBV0YsT0FBWCxFQUFvQjtBQUNsQixRQUFJaUIsVUFBVSxHQUFHLEVBQWpCOztBQUNBLHlCQUFjakIsT0FBZCxrSEFBdUI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLFVBQWRrQixDQUFjO0FBQ3JCLFVBQUlBLENBQUMsQ0FBQ0MsT0FBTixFQUFlRCxDQUFDLEdBQUdBLENBQUMsQ0FBQ0MsT0FBTjs7QUFFZixVQUFJLE9BQU9ELENBQVAsS0FBYSxRQUFiLElBQXlCRSxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsQ0FBQyxDQUFDbEIsT0FBaEIsQ0FBN0IsRUFBdUQ7QUFDckRpQixRQUFBQSxVQUFVLEdBQUdBLFVBQVUsQ0FBQ1osTUFBWCxDQUFrQmEsQ0FBQyxDQUFDbEIsT0FBcEIsQ0FBYjtBQUNELE9BRkQsTUFFTyxJQUFJLE9BQU9rQixDQUFQLEtBQWEsVUFBakIsRUFBNkI7QUFDbENELFFBQUFBLFVBQVUsQ0FBQ0ssSUFBWCxDQUFnQkosQ0FBaEI7QUFDRCxPQUZNLE1BRUEsSUFBSSxPQUFPQSxDQUFQLEtBQWEsUUFBYixLQUEwQkEsQ0FBQyxDQUFDSyxLQUFGLElBQVdMLENBQUMsQ0FBQ00sU0FBdkMsQ0FBSixFQUF1RDtBQUM1RCxZQUFJbEIsT0FBTyxDQUFDTSxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekMsZ0JBQU0sSUFBSVksS0FBSixDQUNKLHFFQUNBLDJEQURBLEdBRUEsdUNBSEksQ0FBTjtBQUtEO0FBQ0YsT0FSTSxNQVFBO0FBQ0wsY0FBTSxJQUFJQSxLQUFKLENBQVVQLENBQUMsR0FBRywwQkFBZCxDQUFOO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPRCxVQUFQO0FBQ0QsRzs7Ozs7ZUFHWWxCLFM7QUFFZjs7Ozs7OztBQU9BOzs7Ozs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7QUFVQTs7Ozs7O0FBTUE7Ozs7O0FBS0E7Ozs7OztBQU1BOzs7OztBQUtBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExhenlSZXN1bHQgZnJvbSAnLi9sYXp5LXJlc3VsdCdcblxuLyoqXG4gKiBDb250YWlucyBwbHVnaW5zIHRvIHByb2Nlc3MgQ1NTLiBDcmVhdGUgb25lIGBQcm9jZXNzb3JgIGluc3RhbmNlLFxuICogaW5pdGlhbGl6ZSBpdHMgcGx1Z2lucywgYW5kIHRoZW4gdXNlIHRoYXQgaW5zdGFuY2Ugb24gbnVtZXJvdXMgQ1NTIGZpbGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKFthdXRvcHJlZml4ZXIsIHByZWNzc10pXG4gKiBwcm9jZXNzb3IucHJvY2Vzcyhjc3MxKS50aGVuKHJlc3VsdCA9PiBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKSlcbiAqIHByb2Nlc3Nvci5wcm9jZXNzKGNzczIpLnRoZW4ocmVzdWx0ID0+IGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpKVxuICovXG5jbGFzcyBQcm9jZXNzb3Ige1xuICAvKipcbiAgICogQHBhcmFtIHtBcnJheS48UGx1Z2lufHBsdWdpbkZ1bmN0aW9uPnxQcm9jZXNzb3J9IHBsdWdpbnMgUG9zdENTUyBwbHVnaW5zLlxuICAgKiAgICAgICAgU2VlIHtAbGluayBQcm9jZXNzb3IjdXNlfSBmb3IgcGx1Z2luIGZvcm1hdC5cbiAgICovXG4gIGNvbnN0cnVjdG9yIChwbHVnaW5zID0gW10pIHtcbiAgICAvKipcbiAgICAgKiBDdXJyZW50IFBvc3RDU1MgdmVyc2lvbi5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGlmIChyZXN1bHQucHJvY2Vzc29yLnZlcnNpb24uc3BsaXQoJy4nKVswXSAhPT0gJzYnKSB7XG4gICAgICogICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgcGx1Z2luIHdvcmtzIG9ubHkgd2l0aCBQb3N0Q1NTIDYnKVxuICAgICAqIH1cbiAgICAgKi9cbiAgICB0aGlzLnZlcnNpb24gPSAnNy4wLjI2J1xuICAgIC8qKlxuICAgICAqIFBsdWdpbnMgYWRkZWQgdG8gdGhpcyBwcm9jZXNzb3IuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7cGx1Z2luRnVuY3Rpb25bXX1cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgcHJvY2Vzc29yID0gcG9zdGNzcyhbYXV0b3ByZWZpeGVyLCBwcmVjc3NdKVxuICAgICAqIHByb2Nlc3Nvci5wbHVnaW5zLmxlbmd0aCAvLz0+IDJcbiAgICAgKi9cbiAgICB0aGlzLnBsdWdpbnMgPSB0aGlzLm5vcm1hbGl6ZShwbHVnaW5zKVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBwbHVnaW4gdG8gYmUgdXNlZCBhcyBhIENTUyBwcm9jZXNzb3IuXG4gICAqXG4gICAqIFBvc3RDU1MgcGx1Z2luIGNhbiBiZSBpbiA0IGZvcm1hdHM6XG4gICAqICogQSBwbHVnaW4gY3JlYXRlZCBieSB7QGxpbmsgcG9zdGNzcy5wbHVnaW59IG1ldGhvZC5cbiAgICogKiBBIGZ1bmN0aW9uLiBQb3N0Q1NTIHdpbGwgcGFzcyB0aGUgZnVuY3Rpb24gYSBAe2xpbmsgUm9vdH1cbiAgICogICBhcyB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIGN1cnJlbnQge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2VcbiAgICogICBhcyB0aGUgc2Vjb25kLlxuICAgKiAqIEFuIG9iamVjdCB3aXRoIGEgYHBvc3Rjc3NgIG1ldGhvZC4gUG9zdENTUyB3aWxsIHVzZSB0aGF0IG1ldGhvZFxuICAgKiAgIGFzIGRlc2NyaWJlZCBpbiAjMi5cbiAgICogKiBBbm90aGVyIHtAbGluayBQcm9jZXNzb3J9IGluc3RhbmNlLiBQb3N0Q1NTIHdpbGwgY29weSBwbHVnaW5zXG4gICAqICAgZnJvbSB0aGF0IGluc3RhbmNlIGludG8gdGhpcyBvbmUuXG4gICAqXG4gICAqIFBsdWdpbnMgY2FuIGFsc28gYmUgYWRkZWQgYnkgcGFzc2luZyB0aGVtIGFzIGFyZ3VtZW50cyB3aGVuIGNyZWF0aW5nXG4gICAqIGEgYHBvc3Rjc3NgIGluc3RhbmNlIChzZWUgW2Bwb3N0Y3NzKHBsdWdpbnMpYF0pLlxuICAgKlxuICAgKiBBc3luY2hyb25vdXMgcGx1Z2lucyBzaG91bGQgcmV0dXJuIGEgYFByb21pc2VgIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1BsdWdpbnxwbHVnaW5GdW5jdGlvbnxQcm9jZXNzb3J9IHBsdWdpbiBQb3N0Q1NTIHBsdWdpblxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB7QGxpbmsgUHJvY2Vzc29yfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBsdWdpbnMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHByb2Nlc3NvciA9IHBvc3Rjc3MoKVxuICAgKiAgIC51c2UoYXV0b3ByZWZpeGVyKVxuICAgKiAgIC51c2UocHJlY3NzKVxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9jZXNzZXN9IEN1cnJlbnQgcHJvY2Vzc29yIHRvIG1ha2UgbWV0aG9kcyBjaGFpbi5cbiAgICovXG4gIHVzZSAocGx1Z2luKSB7XG4gICAgdGhpcy5wbHVnaW5zID0gdGhpcy5wbHVnaW5zLmNvbmNhdCh0aGlzLm5vcm1hbGl6ZShbcGx1Z2luXSkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgc291cmNlIENTUyBhbmQgcmV0dXJucyBhIHtAbGluayBMYXp5UmVzdWx0fSBQcm9taXNlIHByb3h5LlxuICAgKiBCZWNhdXNlIHNvbWUgcGx1Z2lucyBjYW4gYmUgYXN5bmNocm9ub3VzIGl0IGRvZXNu4oCZdCBtYWtlXG4gICAqIGFueSB0cmFuc2Zvcm1hdGlvbnMuIFRyYW5zZm9ybWF0aW9ucyB3aWxsIGJlIGFwcGxpZWRcbiAgICogaW4gdGhlIHtAbGluayBMYXp5UmVzdWx0fSBtZXRob2RzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3x0b1N0cmluZ3xSZXN1bHR9IGNzcyBTdHJpbmcgd2l0aCBpbnB1dCBDU1Mgb3IgYW55IG9iamVjdFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGEgYHRvU3RyaW5nKClgIG1ldGhvZCxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlrZSBhIEJ1ZmZlci4gT3B0aW9uYWxseSwgc2VuZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHtAbGluayBSZXN1bHR9IGluc3RhbmNlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgcHJvY2Vzc29yIHdpbGwgdGFrZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUge0BsaW5rIFJvb3R9IGZyb20gaXQuXG4gICAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSAgICAgIE9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4ge0xhenlSZXN1bHR9IFByb21pc2UgcHJveHkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHByb2Nlc3Nvci5wcm9jZXNzKGNzcywgeyBmcm9tOiAnYS5jc3MnLCB0bzogJ2Eub3V0LmNzcycgfSlcbiAgICogICAudGhlbihyZXN1bHQgPT4ge1xuICAgKiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpXG4gICAqICAgfSlcbiAgICovXG4gIHByb2Nlc3MgKGNzcywgb3B0cyA9IHsgfSkge1xuICAgIGlmICh0aGlzLnBsdWdpbnMubGVuZ3RoID09PSAwICYmIG9wdHMucGFyc2VyID09PSBvcHRzLnN0cmluZ2lmaWVyKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICdZb3UgZGlkIG5vdCBzZXQgYW55IHBsdWdpbnMsIHBhcnNlciwgb3Igc3RyaW5naWZpZXIuICcgK1xuICAgICAgICAgICAgJ1JpZ2h0IG5vdywgUG9zdENTUyBkb2VzIG5vdGhpbmcuIFBpY2sgcGx1Z2lucyBmb3IgeW91ciBjYXNlICcgK1xuICAgICAgICAgICAgJ29uIGh0dHBzOi8vd3d3LnBvc3Rjc3MucGFydHMvIGFuZCB1c2UgdGhlbSBpbiBwb3N0Y3NzLmNvbmZpZy5qcy4nXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgTGF6eVJlc3VsdCh0aGlzLCBjc3MsIG9wdHMpXG4gIH1cblxuICBub3JtYWxpemUgKHBsdWdpbnMpIHtcbiAgICBsZXQgbm9ybWFsaXplZCA9IFtdXG4gICAgZm9yIChsZXQgaSBvZiBwbHVnaW5zKSB7XG4gICAgICBpZiAoaS5wb3N0Y3NzKSBpID0gaS5wb3N0Y3NzXG5cbiAgICAgIGlmICh0eXBlb2YgaSA9PT0gJ29iamVjdCcgJiYgQXJyYXkuaXNBcnJheShpLnBsdWdpbnMpKSB7XG4gICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLmNvbmNhdChpLnBsdWdpbnMpXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG5vcm1hbGl6ZWQucHVzaChpKVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaSA9PT0gJ29iamVjdCcgJiYgKGkucGFyc2UgfHwgaS5zdHJpbmdpZnkpKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1Bvc3RDU1Mgc3ludGF4ZXMgY2Fubm90IGJlIHVzZWQgYXMgcGx1Z2lucy4gSW5zdGVhZCwgcGxlYXNlIHVzZSAnICtcbiAgICAgICAgICAgICdvbmUgb2YgdGhlIHN5bnRheC9wYXJzZXIvc3RyaW5naWZpZXIgb3B0aW9ucyBhcyBvdXRsaW5lZCAnICtcbiAgICAgICAgICAgICdpbiB5b3VyIFBvc3RDU1MgcnVubmVyIGRvY3VtZW50YXRpb24uJ1xuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGkgKyAnIGlzIG5vdCBhIFBvc3RDU1MgcGx1Z2luJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcm9jZXNzb3JcblxuLyoqXG4gKiBAY2FsbGJhY2sgYnVpbGRlclxuICogQHBhcmFtIHtzdHJpbmd9IHBhcnQgICAgICAgICAgUGFydCBvZiBnZW5lcmF0ZWQgQ1NTIGNvbm5lY3RlZCB0byB0aGlzIG5vZGUuXG4gKiBAcGFyYW0ge05vZGV9ICAgbm9kZSAgICAgICAgICBBU1Qgbm9kZS5cbiAqIEBwYXJhbSB7XCJzdGFydFwifFwiZW5kXCJ9IFt0eXBlXSBOb2Rl4oCZcyBwYXJ0IHR5cGUuXG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgcGFyc2VyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8dG9TdHJpbmd9IGNzcyAgIFN0cmluZyB3aXRoIGlucHV0IENTUyBvciBhbnkgb2JqZWN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0b1N0cmluZygpIG1ldGhvZCwgbGlrZSBhIEJ1ZmZlci5cbiAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSBPcHRpb25zIHdpdGggb25seSBgZnJvbWAgYW5kIGBtYXBgIGtleXMuXG4gKlxuICogQHJldHVybiB7Um9vdH0gUG9zdENTUyBBU1RcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBzdHJpbmdpZmllclxuICpcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICAgICBTdGFydCBub2RlIGZvciBzdHJpbmdpZmluZy4gVXN1YWxseSB7QGxpbmsgUm9vdH0uXG4gKiBAcGFyYW0ge2J1aWxkZXJ9IGJ1aWxkZXIgRnVuY3Rpb24gdG8gY29uY2F0ZW5hdGUgQ1NTIGZyb20gbm9kZeKAmXMgcGFydHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBvciBnZW5lcmF0ZSBzdHJpbmcgYW5kIHNvdXJjZSBtYXAuXG4gKlxuICogQHJldHVybiB7dm9pZH1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHN5bnRheFxuICogQHByb3BlcnR5IHtwYXJzZXJ9IHBhcnNlICAgICAgICAgIEZ1bmN0aW9uIHRvIGdlbmVyYXRlIEFTVCBieSBzdHJpbmcuXG4gKiBAcHJvcGVydHkge3N0cmluZ2lmaWVyfSBzdHJpbmdpZnkgRnVuY3Rpb24gdG8gZ2VuZXJhdGUgc3RyaW5nIGJ5IEFTVC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHRvU3RyaW5nXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9ufSB0b1N0cmluZ1xuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIHBsdWdpbkZ1bmN0aW9uXG4gKiBAcGFyYW0ge1Jvb3R9IHJvb3QgICAgIFBhcnNlZCBpbnB1dCBDU1MuXG4gKiBAcGFyYW0ge1Jlc3VsdH0gcmVzdWx0IFJlc3VsdCB0byBzZXQgd2FybmluZ3Mgb3IgY2hlY2sgb3RoZXIgcGx1Z2lucy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFBsdWdpblxuICogQHByb3BlcnR5IHtmdW5jdGlvbn0gcG9zdGNzcyBQb3N0Q1NTIHBsdWdpbiBmdW5jdGlvbi5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHByb2Nlc3NPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZnJvbSAgICAgICAgICAgICBUaGUgcGF0aCBvZiB0aGUgQ1NTIHNvdXJjZSBmaWxlLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBhbHdheXMgc2V0IGBmcm9tYCxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaXQgaXMgdXNlZCBpbiBzb3VyY2UgbWFwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uIGFuZCBzeW50YXggZXJyb3IgbWVzc2FnZXMuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdG8gICAgICAgICAgICAgICBUaGUgcGF0aCB3aGVyZSB5b3XigJlsbCBwdXQgdGhlIG91dHB1dFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTIGZpbGUuIFlvdSBzaG91bGQgYWx3YXlzIHNldCBgdG9gXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBnZW5lcmF0ZSBjb3JyZWN0IHNvdXJjZSBtYXBzLlxuICogQHByb3BlcnR5IHtwYXJzZXJ9IHBhcnNlciAgICAgICAgICAgRnVuY3Rpb24gdG8gZ2VuZXJhdGUgQVNUIGJ5IHN0cmluZy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5naWZpZXJ9IHN0cmluZ2lmaWVyIENsYXNzIHRvIGdlbmVyYXRlIHN0cmluZyBieSBBU1QuXG4gKiBAcHJvcGVydHkge3N5bnRheH0gc3ludGF4ICAgICAgICAgICBPYmplY3Qgd2l0aCBgcGFyc2VgIGFuZCBgc3RyaW5naWZ5YC5cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBtYXAgICAgICAgICAgICAgIFNvdXJjZSBtYXAgb3B0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbWFwLmlubGluZSAgICAgICAgICAgICAgICAgICAgRG9lcyBzb3VyY2UgbWFwIHNob3VsZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBlbWJlZGRlZCBpbiB0aGUgb3V0cHV0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyBhcyBhIGJhc2U2NC1lbmNvZGVkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQuXG4gKiBAcHJvcGVydHkge3N0cmluZ3xvYmplY3R8ZmFsc2V8ZnVuY3Rpb259IG1hcC5wcmV2IFNvdXJjZSBtYXAgY29udGVudFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGEgcHJldmlvdXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZyBzdGVwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3IgZXhhbXBsZSwgU2FzcykuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3RDU1Mgd2lsbCB0cnkgdG8gZmluZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBtYXAgYXV0b21hdGljYWxseSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc28geW91IGNvdWxkIGRpc2FibGUgaXQgYnlcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGZhbHNlYCB2YWx1ZS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbWFwLnNvdXJjZXNDb250ZW50ICAgICAgICAgICAgRG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9yaWdpbiBjb250ZW50IHRvIG1hcC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfGZhbHNlfSBtYXAuYW5ub3RhdGlvbiAgICAgICAgICAgRG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbiBjb21tZW50IHRvIG1hcC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtYXAuZnJvbSAgICAgICAgICAgICAgICAgICAgICAgT3ZlcnJpZGUgYGZyb21gIGluIG1hcOKAmXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlc2AuXG4gKi9cbiJdLCJmaWxlIjoicHJvY2Vzc29yLmpzIn0=
diff --git a/assets/node_modules/postcss/lib/result.js b/assets/node_modules/postcss/lib/result.js
deleted file mode 100644
index af3610a..0000000
--- a/assets/node_modules/postcss/lib/result.js
+++ /dev/null
@@ -1,215 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _warning = _interopRequireDefault(require("./warning"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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); } }
-
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
-
-/**
- * Provides the result of the PostCSS transformations.
- *
- * A Result instance is returned by {@link LazyResult#then}
- * or {@link Root#toResult} methods.
- *
- * @example
- * postcss([autoprefixer]).process(css).then(result => {
- * console.log(result.css)
- * })
- *
- * @example
- * const result2 = postcss.parse(css).toResult()
- */
-var Result =
-/*#__PURE__*/
-function () {
- /**
- * @param {Processor} processor Processor used for this transformation.
- * @param {Root} root Root node after all transformations.
- * @param {processOptions} opts Options from the {@link Processor#process}
- * or {@link Root#toResult}.
- */
- function Result(processor, root, opts) {
- /**
- * The Processor instance used for this transformation.
- *
- * @type {Processor}
- *
- * @example
- * for (const plugin of result.processor.plugins) {
- * if (plugin.postcssPlugin === 'postcss-bad') {
- * throw 'postcss-good is incompatible with postcss-bad'
- * }
- * })
- */
- this.processor = processor;
- /**
- * Contains messages from plugins (e.g., warnings or custom messages).
- * Each message should have type and plugin properties.
- *
- * @type {Message[]}
- *
- * @example
- * postcss.plugin('postcss-min-browser', () => {
- * return (root, result) => {
- * const browsers = detectMinBrowsersByCanIUse(root)
- * result.messages.push({
- * type: 'min-browser',
- * plugin: 'postcss-min-browser',
- * browsers
- * })
- * }
- * })
- */
-
- this.messages = [];
- /**
- * Root node after all transformations.
- *
- * @type {Root}
- *
- * @example
- * root.toResult().root === root
- */
-
- this.root = root;
- /**
- * Options from the {@link Processor#process} or {@link Root#toResult} call
- * that produced this Result instance.
- *
- * @type {processOptions}
- *
- * @example
- * root.toResult(opts).opts === opts
- */
-
- this.opts = opts;
- /**
- * A CSS string representing of {@link Result#root}.
- *
- * @type {string}
- *
- * @example
- * postcss.parse('a{}').toResult().css //=> "a{}"
- */
-
- this.css = undefined;
- /**
- * An instance of `SourceMapGenerator` class from the `source-map` library,
- * representing changes to the {@link Result#root} instance.
- *
- * @type {SourceMapGenerator}
- *
- * @example
- * result.map.toJSON() //=> { version: 3, file: 'a.css', … }
- *
- * @example
- * if (result.map) {
- * fs.writeFileSync(result.opts.to + '.map', result.map.toString())
- * }
- */
-
- this.map = undefined;
- }
- /**
- * Returns for @{link Result#css} content.
- *
- * @example
- * result + '' === result.css
- *
- * @return {string} String representing of {@link Result#root}.
- */
-
-
- var _proto = Result.prototype;
-
- _proto.toString = function toString() {
- return this.css;
- }
- /**
- * Creates an instance of {@link Warning} and adds it
- * to {@link Result#messages}.
- *
- * @param {string} text Warning message.
- * @param {Object} [opts] Warning options.
- * @param {Node} opts.node CSS node that caused the warning.
- * @param {string} opts.word Word in CSS source that caused the warning.
- * @param {number} opts.index Index in CSS node string that caused
- * the warning.
- * @param {string} opts.plugin Name of the plugin that created
- * this warning. {@link Result#warn} fills
- * this property automatically.
- *
- * @return {Warning} Created warning.
- */
- ;
-
- _proto.warn = function warn(text, opts) {
- if (opts === void 0) {
- opts = {};
- }
-
- if (!opts.plugin) {
- if (this.lastPlugin && this.lastPlugin.postcssPlugin) {
- opts.plugin = this.lastPlugin.postcssPlugin;
- }
- }
-
- var warning = new _warning.default(text, opts);
- this.messages.push(warning);
- return warning;
- }
- /**
- * Returns warnings from plugins. Filters {@link Warning} instances
- * from {@link Result#messages}.
- *
- * @example
- * result.warnings().forEach(warn => {
- * console.warn(warn.toString())
- * })
- *
- * @return {Warning[]} Warnings from plugins.
- */
- ;
-
- _proto.warnings = function warnings() {
- return this.messages.filter(function (i) {
- return i.type === 'warning';
- });
- }
- /**
- * An alias for the {@link Result#css} property.
- * Use it with syntaxes that generate non-CSS output.
- *
- * @type {string}
- *
- * @example
- * result.css === result.content
- */
- ;
-
- _createClass(Result, [{
- key: "content",
- get: function get() {
- return this.css;
- }
- }]);
-
- return Result;
-}();
-
-var _default = Result;
-/**
- * @typedef {object} Message
- * @property {string} type Message type.
- * @property {string} plugin Source PostCSS plugin name.
- */
-
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc3VsdC5lczYiXSwibmFtZXMiOlsiUmVzdWx0IiwicHJvY2Vzc29yIiwicm9vdCIsIm9wdHMiLCJtZXNzYWdlcyIsImNzcyIsInVuZGVmaW5lZCIsIm1hcCIsInRvU3RyaW5nIiwid2FybiIsInRleHQiLCJwbHVnaW4iLCJsYXN0UGx1Z2luIiwicG9zdGNzc1BsdWdpbiIsIndhcm5pbmciLCJXYXJuaW5nIiwicHVzaCIsIndhcm5pbmdzIiwiZmlsdGVyIiwiaSIsInR5cGUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7O0lBY01BLE07OztBQUNKOzs7Ozs7QUFNQSxrQkFBYUMsU0FBYixFQUF3QkMsSUFBeEIsRUFBOEJDLElBQTlCLEVBQW9DO0FBQ2xDOzs7Ozs7Ozs7Ozs7QUFZQSxTQUFLRixTQUFMLEdBQWlCQSxTQUFqQjtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBLFNBQUtHLFFBQUwsR0FBZ0IsRUFBaEI7QUFDQTs7Ozs7Ozs7O0FBUUEsU0FBS0YsSUFBTCxHQUFZQSxJQUFaO0FBQ0E7Ozs7Ozs7Ozs7QUFTQSxTQUFLQyxJQUFMLEdBQVlBLElBQVo7QUFDQTs7Ozs7Ozs7O0FBUUEsU0FBS0UsR0FBTCxHQUFXQyxTQUFYO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQWNBLFNBQUtDLEdBQUwsR0FBV0QsU0FBWDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7OztTQVFBRSxRLEdBQUEsb0JBQVk7QUFDVixXQUFPLEtBQUtILEdBQVo7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FnQkFJLEksR0FBQSxjQUFNQyxJQUFOLEVBQVlQLElBQVosRUFBd0I7QUFBQSxRQUFaQSxJQUFZO0FBQVpBLE1BQUFBLElBQVksR0FBTCxFQUFLO0FBQUE7O0FBQ3RCLFFBQUksQ0FBQ0EsSUFBSSxDQUFDUSxNQUFWLEVBQWtCO0FBQ2hCLFVBQUksS0FBS0MsVUFBTCxJQUFtQixLQUFLQSxVQUFMLENBQWdCQyxhQUF2QyxFQUFzRDtBQUNwRFYsUUFBQUEsSUFBSSxDQUFDUSxNQUFMLEdBQWMsS0FBS0MsVUFBTCxDQUFnQkMsYUFBOUI7QUFDRDtBQUNGOztBQUVELFFBQUlDLE9BQU8sR0FBRyxJQUFJQyxnQkFBSixDQUFZTCxJQUFaLEVBQWtCUCxJQUFsQixDQUFkO0FBQ0EsU0FBS0MsUUFBTCxDQUFjWSxJQUFkLENBQW1CRixPQUFuQjtBQUVBLFdBQU9BLE9BQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7O1NBV0FHLFEsR0FBQSxvQkFBWTtBQUNWLFdBQU8sS0FBS2IsUUFBTCxDQUFjYyxNQUFkLENBQXFCLFVBQUFDLENBQUM7QUFBQSxhQUFJQSxDQUFDLENBQUNDLElBQUYsS0FBVyxTQUFmO0FBQUEsS0FBdEIsQ0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7d0JBU2U7QUFDYixhQUFPLEtBQUtmLEdBQVo7QUFDRDs7Ozs7O2VBR1lMLE07QUFFZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBXYXJuaW5nIGZyb20gJy4vd2FybmluZydcblxuLyoqXG4gKiBQcm92aWRlcyB0aGUgcmVzdWx0IG9mIHRoZSBQb3N0Q1NTIHRyYW5zZm9ybWF0aW9ucy5cbiAqXG4gKiBBIFJlc3VsdCBpbnN0YW5jZSBpcyByZXR1cm5lZCBieSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufVxuICogb3Ige0BsaW5rIFJvb3QjdG9SZXN1bHR9IG1ldGhvZHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MoW2F1dG9wcmVmaXhlcl0pLnByb2Nlc3MoY3NzKS50aGVuKHJlc3VsdCA9PiB7XG4gKiAgY29uc29sZS5sb2cocmVzdWx0LmNzcylcbiAqIH0pXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlc3VsdDIgPSBwb3N0Y3NzLnBhcnNlKGNzcykudG9SZXN1bHQoKVxuICovXG5jbGFzcyBSZXN1bHQge1xuICAvKipcbiAgICogQHBhcmFtIHtQcm9jZXNzb3J9IHByb2Nlc3NvciBQcm9jZXNzb3IgdXNlZCBmb3IgdGhpcyB0cmFuc2Zvcm1hdGlvbi5cbiAgICogQHBhcmFtIHtSb290fSAgICAgIHJvb3QgICAgICBSb290IG5vZGUgYWZ0ZXIgYWxsIHRyYW5zZm9ybWF0aW9ucy5cbiAgICogQHBhcmFtIHtwcm9jZXNzT3B0aW9uc30gb3B0cyBPcHRpb25zIGZyb20gdGhlIHtAbGluayBQcm9jZXNzb3IjcHJvY2Vzc31cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB7QGxpbmsgUm9vdCN0b1Jlc3VsdH0uXG4gICAqL1xuICBjb25zdHJ1Y3RvciAocHJvY2Vzc29yLCByb290LCBvcHRzKSB7XG4gICAgLyoqXG4gICAgICogVGhlIFByb2Nlc3NvciBpbnN0YW5jZSB1c2VkIGZvciB0aGlzIHRyYW5zZm9ybWF0aW9uLlxuICAgICAqXG4gICAgICogQHR5cGUge1Byb2Nlc3Nvcn1cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogZm9yIChjb25zdCBwbHVnaW4gb2YgcmVzdWx0LnByb2Nlc3Nvci5wbHVnaW5zKSB7XG4gICAgICogICBpZiAocGx1Z2luLnBvc3Rjc3NQbHVnaW4gPT09ICdwb3N0Y3NzLWJhZCcpIHtcbiAgICAgKiAgICAgdGhyb3cgJ3Bvc3Rjc3MtZ29vZCBpcyBpbmNvbXBhdGlibGUgd2l0aCBwb3N0Y3NzLWJhZCdcbiAgICAgKiAgIH1cbiAgICAgKiB9KVxuICAgICAqL1xuICAgIHRoaXMucHJvY2Vzc29yID0gcHJvY2Vzc29yXG4gICAgLyoqXG4gICAgICogQ29udGFpbnMgbWVzc2FnZXMgZnJvbSBwbHVnaW5zIChlLmcuLCB3YXJuaW5ncyBvciBjdXN0b20gbWVzc2FnZXMpLlxuICAgICAqIEVhY2ggbWVzc2FnZSBzaG91bGQgaGF2ZSB0eXBlIGFuZCBwbHVnaW4gcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtNZXNzYWdlW119XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MucGx1Z2luKCdwb3N0Y3NzLW1pbi1icm93c2VyJywgKCkgPT4ge1xuICAgICAqICAgcmV0dXJuIChyb290LCByZXN1bHQpID0+IHtcbiAgICAgKiAgICAgY29uc3QgYnJvd3NlcnMgPSBkZXRlY3RNaW5Ccm93c2Vyc0J5Q2FuSVVzZShyb290KVxuICAgICAqICAgICByZXN1bHQubWVzc2FnZXMucHVzaCh7XG4gICAgICogICAgICAgdHlwZTogJ21pbi1icm93c2VyJyxcbiAgICAgKiAgICAgICBwbHVnaW46ICdwb3N0Y3NzLW1pbi1icm93c2VyJyxcbiAgICAgKiAgICAgICBicm93c2Vyc1xuICAgICAqICAgICB9KVxuICAgICAqICAgfVxuICAgICAqIH0pXG4gICAgICovXG4gICAgdGhpcy5tZXNzYWdlcyA9IFtdXG4gICAgLyoqXG4gICAgICogUm9vdCBub2RlIGFmdGVyIGFsbCB0cmFuc2Zvcm1hdGlvbnMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Um9vdH1cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcm9vdC50b1Jlc3VsdCgpLnJvb3QgPT09IHJvb3RcbiAgICAgKi9cbiAgICB0aGlzLnJvb3QgPSByb290XG4gICAgLyoqXG4gICAgICogT3B0aW9ucyBmcm9tIHRoZSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9IG9yIHtAbGluayBSb290I3RvUmVzdWx0fSBjYWxsXG4gICAgICogdGhhdCBwcm9kdWNlZCB0aGlzIFJlc3VsdCBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtwcm9jZXNzT3B0aW9uc31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcm9vdC50b1Jlc3VsdChvcHRzKS5vcHRzID09PSBvcHRzXG4gICAgICovXG4gICAgdGhpcy5vcHRzID0gb3B0c1xuICAgIC8qKlxuICAgICAqIEEgQ1NTIHN0cmluZyByZXByZXNlbnRpbmcgb2Yge0BsaW5rIFJlc3VsdCNyb290fS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MucGFyc2UoJ2F7fScpLnRvUmVzdWx0KCkuY3NzIC8vPT4gXCJhe31cIlxuICAgICAqL1xuICAgIHRoaXMuY3NzID0gdW5kZWZpbmVkXG4gICAgLyoqXG4gICAgICogQW4gaW5zdGFuY2Ugb2YgYFNvdXJjZU1hcEdlbmVyYXRvcmAgY2xhc3MgZnJvbSB0aGUgYHNvdXJjZS1tYXBgIGxpYnJhcnksXG4gICAgICogcmVwcmVzZW50aW5nIGNoYW5nZXMgdG8gdGhlIHtAbGluayBSZXN1bHQjcm9vdH0gaW5zdGFuY2UuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7U291cmNlTWFwR2VuZXJhdG9yfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByZXN1bHQubWFwLnRvSlNPTigpIC8vPT4geyB2ZXJzaW9uOiAzLCBmaWxlOiAnYS5jc3MnLCDigKYgfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBpZiAocmVzdWx0Lm1hcCkge1xuICAgICAqICAgZnMud3JpdGVGaWxlU3luYyhyZXN1bHQub3B0cy50byArICcubWFwJywgcmVzdWx0Lm1hcC50b1N0cmluZygpKVxuICAgICAqIH1cbiAgICAgKi9cbiAgICB0aGlzLm1hcCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZm9yIEB7bGluayBSZXN1bHQjY3NzfSBjb250ZW50LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByZXN1bHQgKyAnJyA9PT0gcmVzdWx0LmNzc1xuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFN0cmluZyByZXByZXNlbnRpbmcgb2Yge0BsaW5rIFJlc3VsdCNyb290fS5cbiAgICovXG4gIHRvU3RyaW5nICgpIHtcbiAgICByZXR1cm4gdGhpcy5jc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHtAbGluayBXYXJuaW5nfSBhbmQgYWRkcyBpdFxuICAgKiB0byB7QGxpbmsgUmVzdWx0I21lc3NhZ2VzfS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgICAgICAgIFdhcm5pbmcgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAgICAgIFdhcm5pbmcgb3B0aW9ucy5cbiAgICogQHBhcmFtIHtOb2RlfSAgIG9wdHMubm9kZSAgIENTUyBub2RlIHRoYXQgY2F1c2VkIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy53b3JkICAgV29yZCBpbiBDU1Mgc291cmNlIHRoYXQgY2F1c2VkIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0cy5pbmRleCAgSW5kZXggaW4gQ1NTIG5vZGUgc3RyaW5nIHRoYXQgY2F1c2VkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgd2FybmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIE5hbWUgb2YgdGhlIHBsdWdpbiB0aGF0IGNyZWF0ZWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgd2FybmluZy4ge0BsaW5rIFJlc3VsdCN3YXJufSBmaWxsc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBwcm9wZXJ0eSBhdXRvbWF0aWNhbGx5LlxuICAgKlxuICAgKiBAcmV0dXJuIHtXYXJuaW5nfSBDcmVhdGVkIHdhcm5pbmcuXG4gICAqL1xuICB3YXJuICh0ZXh0LCBvcHRzID0geyB9KSB7XG4gICAgaWYgKCFvcHRzLnBsdWdpbikge1xuICAgICAgaWYgKHRoaXMubGFzdFBsdWdpbiAmJiB0aGlzLmxhc3RQbHVnaW4ucG9zdGNzc1BsdWdpbikge1xuICAgICAgICBvcHRzLnBsdWdpbiA9IHRoaXMubGFzdFBsdWdpbi5wb3N0Y3NzUGx1Z2luXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHdhcm5pbmcgPSBuZXcgV2FybmluZyh0ZXh0LCBvcHRzKVxuICAgIHRoaXMubWVzc2FnZXMucHVzaCh3YXJuaW5nKVxuXG4gICAgcmV0dXJuIHdhcm5pbmdcbiAgfVxuXG4gIC8qKlxuICAgICAqIFJldHVybnMgd2FybmluZ3MgZnJvbSBwbHVnaW5zLiBGaWx0ZXJzIHtAbGluayBXYXJuaW5nfSBpbnN0YW5jZXNcbiAgICAgKiBmcm9tIHtAbGluayBSZXN1bHQjbWVzc2FnZXN9LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByZXN1bHQud2FybmluZ3MoKS5mb3JFYWNoKHdhcm4gPT4ge1xuICAgICAqICAgY29uc29sZS53YXJuKHdhcm4udG9TdHJpbmcoKSlcbiAgICAgKiB9KVxuICAgICAqXG4gICAgICogQHJldHVybiB7V2FybmluZ1tdfSBXYXJuaW5ncyBmcm9tIHBsdWdpbnMuXG4gICAgICovXG4gIHdhcm5pbmdzICgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlcy5maWx0ZXIoaSA9PiBpLnR5cGUgPT09ICd3YXJuaW5nJylcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBhbGlhcyBmb3IgdGhlIHtAbGluayBSZXN1bHQjY3NzfSBwcm9wZXJ0eS5cbiAgICogVXNlIGl0IHdpdGggc3ludGF4ZXMgdGhhdCBnZW5lcmF0ZSBub24tQ1NTIG91dHB1dC5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcmVzdWx0LmNzcyA9PT0gcmVzdWx0LmNvbnRlbnRcbiAgICovXG4gIGdldCBjb250ZW50ICgpIHtcbiAgICByZXR1cm4gdGhpcy5jc3NcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSZXN1bHRcblxuLyoqXG4gKiBAdHlwZWRlZiAge29iamVjdH0gTWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHR5cGUgICBNZXNzYWdlIHR5cGUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGx1Z2luIFNvdXJjZSBQb3N0Q1NTIHBsdWdpbiBuYW1lLlxuICovXG4iXSwiZmlsZSI6InJlc3VsdC5qcyJ9
diff --git a/assets/node_modules/postcss/lib/root.js b/assets/node_modules/postcss/lib/root.js
deleted file mode 100644
index 95649b1..0000000
--- a/assets/node_modules/postcss/lib/root.js
+++ /dev/null
@@ -1,129 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _container = _interopRequireDefault(require("./container"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/**
- * Represents a CSS file and contains all its parsed nodes.
- *
- * @extends Container
- *
- * @example
- * const root = postcss.parse('a{color:black} b{z-index:2}')
- * root.type //=> 'root'
- * root.nodes.length //=> 2
- */
-var Root =
-/*#__PURE__*/
-function (_Container) {
- _inheritsLoose(Root, _Container);
-
- function Root(defaults) {
- var _this;
-
- _this = _Container.call(this, defaults) || this;
- _this.type = 'root';
- if (!_this.nodes) _this.nodes = [];
- return _this;
- }
-
- var _proto = Root.prototype;
-
- _proto.removeChild = function removeChild(child, ignore) {
- var index = this.index(child);
-
- if (!ignore && index === 0 && this.nodes.length > 1) {
- this.nodes[1].raws.before = this.nodes[index].raws.before;
- }
-
- return _Container.prototype.removeChild.call(this, child);
- };
-
- _proto.normalize = function normalize(child, sample, type) {
- var nodes = _Container.prototype.normalize.call(this, child);
-
- if (sample) {
- if (type === 'prepend') {
- if (this.nodes.length > 1) {
- sample.raws.before = this.nodes[1].raws.before;
- } else {
- delete sample.raws.before;
- }
- } else if (this.first !== sample) {
- for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var node = _ref;
- node.raws.before = sample.raws.before;
- }
- }
- }
-
- return nodes;
- }
- /**
- * Returns a {@link Result} instance representing the root’s CSS.
- *
- * @param {processOptions} [opts] Options with only `to` and `map` keys.
- *
- * @return {Result} Result with current root’s CSS.
- *
- * @example
- * const root1 = postcss.parse(css1, { from: 'a.css' })
- * const root2 = postcss.parse(css2, { from: 'b.css' })
- * root1.append(root2)
- * const result = root1.toResult({ to: 'all.css', map: true })
- */
- ;
-
- _proto.toResult = function toResult(opts) {
- if (opts === void 0) {
- opts = {};
- }
-
- var LazyResult = require('./lazy-result');
-
- var Processor = require('./processor');
-
- var lazy = new LazyResult(new Processor(), this, opts);
- return lazy.stringify();
- }
- /**
- * @memberof Root#
- * @member {object} raws Information to generate byte-to-byte equal
- * node string as it was in the origin input.
- *
- * Every parser saves its own properties,
- * but the default CSS parser uses:
- *
- * * `after`: the space symbols after the last child to the end of file.
- * * `semicolon`: is the last child has an (optional) semicolon.
- *
- * @example
- * postcss.parse('a {}\n').raws //=> { after: '\n' }
- * postcss.parse('a {}').raws //=> { after: '' }
- */
- ;
-
- return Root;
-}(_container.default);
-
-var _default = Root;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvb3QuZXM2Il0sIm5hbWVzIjpbIlJvb3QiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsInJlbW92ZUNoaWxkIiwiY2hpbGQiLCJpZ25vcmUiLCJpbmRleCIsImxlbmd0aCIsInJhd3MiLCJiZWZvcmUiLCJub3JtYWxpemUiLCJzYW1wbGUiLCJmaXJzdCIsIm5vZGUiLCJ0b1Jlc3VsdCIsIm9wdHMiLCJMYXp5UmVzdWx0IiwicmVxdWlyZSIsIlByb2Nlc3NvciIsImxhenkiLCJzdHJpbmdpZnkiLCJDb250YWluZXIiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7OztBQUVBOzs7Ozs7Ozs7O0lBVU1BLEk7Ozs7O0FBQ0osZ0JBQWFDLFFBQWIsRUFBdUI7QUFBQTs7QUFDckIsa0NBQU1BLFFBQU47QUFDQSxVQUFLQyxJQUFMLEdBQVksTUFBWjtBQUNBLFFBQUksQ0FBQyxNQUFLQyxLQUFWLEVBQWlCLE1BQUtBLEtBQUwsR0FBYSxFQUFiO0FBSEk7QUFJdEI7Ozs7U0FFREMsVyxHQUFBLHFCQUFhQyxLQUFiLEVBQW9CQyxNQUFwQixFQUE0QjtBQUMxQixRQUFJQyxLQUFLLEdBQUcsS0FBS0EsS0FBTCxDQUFXRixLQUFYLENBQVo7O0FBRUEsUUFBSSxDQUFDQyxNQUFELElBQVdDLEtBQUssS0FBSyxDQUFyQixJQUEwQixLQUFLSixLQUFMLENBQVdLLE1BQVgsR0FBb0IsQ0FBbEQsRUFBcUQ7QUFDbkQsV0FBS0wsS0FBTCxDQUFXLENBQVgsRUFBY00sSUFBZCxDQUFtQkMsTUFBbkIsR0FBNEIsS0FBS1AsS0FBTCxDQUFXSSxLQUFYLEVBQWtCRSxJQUFsQixDQUF1QkMsTUFBbkQ7QUFDRDs7QUFFRCxnQ0FBYU4sV0FBYixZQUF5QkMsS0FBekI7QUFDRCxHOztTQUVETSxTLEdBQUEsbUJBQVdOLEtBQVgsRUFBa0JPLE1BQWxCLEVBQTBCVixJQUExQixFQUFnQztBQUM5QixRQUFJQyxLQUFLLHdCQUFTUSxTQUFULFlBQW1CTixLQUFuQixDQUFUOztBQUVBLFFBQUlPLE1BQUosRUFBWTtBQUNWLFVBQUlWLElBQUksS0FBSyxTQUFiLEVBQXdCO0FBQ3RCLFlBQUksS0FBS0MsS0FBTCxDQUFXSyxNQUFYLEdBQW9CLENBQXhCLEVBQTJCO0FBQ3pCSSxVQUFBQSxNQUFNLENBQUNILElBQVAsQ0FBWUMsTUFBWixHQUFxQixLQUFLUCxLQUFMLENBQVcsQ0FBWCxFQUFjTSxJQUFkLENBQW1CQyxNQUF4QztBQUNELFNBRkQsTUFFTztBQUNMLGlCQUFPRSxNQUFNLENBQUNILElBQVAsQ0FBWUMsTUFBbkI7QUFDRDtBQUNGLE9BTkQsTUFNTyxJQUFJLEtBQUtHLEtBQUwsS0FBZUQsTUFBbkIsRUFBMkI7QUFDaEMsNkJBQWlCVCxLQUFqQixrSEFBd0I7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLGNBQWZXLElBQWU7QUFDdEJBLFVBQUFBLElBQUksQ0FBQ0wsSUFBTCxDQUFVQyxNQUFWLEdBQW1CRSxNQUFNLENBQUNILElBQVAsQ0FBWUMsTUFBL0I7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsV0FBT1AsS0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztTQWFBWSxRLEdBQUEsa0JBQVVDLElBQVYsRUFBc0I7QUFBQSxRQUFaQSxJQUFZO0FBQVpBLE1BQUFBLElBQVksR0FBTCxFQUFLO0FBQUE7O0FBQ3BCLFFBQUlDLFVBQVUsR0FBR0MsT0FBTyxDQUFDLGVBQUQsQ0FBeEI7O0FBQ0EsUUFBSUMsU0FBUyxHQUFHRCxPQUFPLENBQUMsYUFBRCxDQUF2Qjs7QUFFQSxRQUFJRSxJQUFJLEdBQUcsSUFBSUgsVUFBSixDQUFlLElBQUlFLFNBQUosRUFBZixFQUFnQyxJQUFoQyxFQUFzQ0gsSUFBdEMsQ0FBWDtBQUNBLFdBQU9JLElBQUksQ0FBQ0MsU0FBTCxFQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBMURpQkMsa0I7O2VBMkVKdEIsSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb250YWluZXIgZnJvbSAnLi9jb250YWluZXInXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIENTUyBmaWxlIGFuZCBjb250YWlucyBhbGwgaXRzIHBhcnNlZCBub2Rlcy5cbiAqXG4gKiBAZXh0ZW5kcyBDb250YWluZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2F7Y29sb3I6YmxhY2t9IGJ7ei1pbmRleDoyfScpXG4gKiByb290LnR5cGUgICAgICAgICAvLz0+ICdyb290J1xuICogcm9vdC5ub2Rlcy5sZW5ndGggLy89PiAyXG4gKi9cbmNsYXNzIFJvb3QgZXh0ZW5kcyBDb250YWluZXIge1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cylcbiAgICB0aGlzLnR5cGUgPSAncm9vdCdcbiAgICBpZiAoIXRoaXMubm9kZXMpIHRoaXMubm9kZXMgPSBbXVxuICB9XG5cbiAgcmVtb3ZlQ2hpbGQgKGNoaWxkLCBpZ25vcmUpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLmluZGV4KGNoaWxkKVxuXG4gICAgaWYgKCFpZ25vcmUgJiYgaW5kZXggPT09IDAgJiYgdGhpcy5ub2Rlcy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLm5vZGVzWzFdLnJhd3MuYmVmb3JlID0gdGhpcy5ub2Rlc1tpbmRleF0ucmF3cy5iZWZvcmVcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIucmVtb3ZlQ2hpbGQoY2hpbGQpXG4gIH1cblxuICBub3JtYWxpemUgKGNoaWxkLCBzYW1wbGUsIHR5cGUpIHtcbiAgICBsZXQgbm9kZXMgPSBzdXBlci5ub3JtYWxpemUoY2hpbGQpXG5cbiAgICBpZiAoc2FtcGxlKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ3ByZXBlbmQnKSB7XG4gICAgICAgIGlmICh0aGlzLm5vZGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBzYW1wbGUucmF3cy5iZWZvcmUgPSB0aGlzLm5vZGVzWzFdLnJhd3MuYmVmb3JlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIHNhbXBsZS5yYXdzLmJlZm9yZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZmlyc3QgIT09IHNhbXBsZSkge1xuICAgICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgbm9kZS5yYXdzLmJlZm9yZSA9IHNhbXBsZS5yYXdzLmJlZm9yZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHtAbGluayBSZXN1bHR9IGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGUgcm9vdOKAmXMgQ1NTLlxuICAgKlxuICAgKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBbb3B0c10gT3B0aW9ucyB3aXRoIG9ubHkgYHRvYCBhbmQgYG1hcGAga2V5cy5cbiAgICpcbiAgICogQHJldHVybiB7UmVzdWx0fSBSZXN1bHQgd2l0aCBjdXJyZW50IHJvb3TigJlzIENTUy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdDEgPSBwb3N0Y3NzLnBhcnNlKGNzczEsIHsgZnJvbTogJ2EuY3NzJyB9KVxuICAgKiBjb25zdCByb290MiA9IHBvc3Rjc3MucGFyc2UoY3NzMiwgeyBmcm9tOiAnYi5jc3MnIH0pXG4gICAqIHJvb3QxLmFwcGVuZChyb290MilcbiAgICogY29uc3QgcmVzdWx0ID0gcm9vdDEudG9SZXN1bHQoeyB0bzogJ2FsbC5jc3MnLCBtYXA6IHRydWUgfSlcbiAgICovXG4gIHRvUmVzdWx0IChvcHRzID0geyB9KSB7XG4gICAgbGV0IExhenlSZXN1bHQgPSByZXF1aXJlKCcuL2xhenktcmVzdWx0JylcbiAgICBsZXQgUHJvY2Vzc29yID0gcmVxdWlyZSgnLi9wcm9jZXNzb3InKVxuXG4gICAgbGV0IGxhenkgPSBuZXcgTGF6eVJlc3VsdChuZXcgUHJvY2Vzc29yKCksIHRoaXMsIG9wdHMpXG4gICAgcmV0dXJuIGxhenkuc3RyaW5naWZ5KClcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUm9vdCNcbiAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAqXG4gICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAqXG4gICAqICogYGFmdGVyYDogdGhlIHNwYWNlIHN5bWJvbHMgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQgdG8gdGhlIGVuZCBvZiBmaWxlLlxuICAgKiAqIGBzZW1pY29sb25gOiBpcyB0aGUgbGFzdCBjaGlsZCBoYXMgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHBvc3Rjc3MucGFyc2UoJ2Ege31cXG4nKS5yYXdzIC8vPT4geyBhZnRlcjogJ1xcbicgfVxuICAgKiBwb3N0Y3NzLnBhcnNlKCdhIHt9JykucmF3cyAgIC8vPT4geyBhZnRlcjogJycgfVxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgUm9vdFxuIl0sImZpbGUiOiJyb290LmpzIn0=
diff --git a/assets/node_modules/postcss/lib/rule.js b/assets/node_modules/postcss/lib/rule.js
deleted file mode 100644
index 1fc1f85..0000000
--- a/assets/node_modules/postcss/lib/rule.js
+++ /dev/null
@@ -1,118 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _container = _interopRequireDefault(require("./container"));
-
-var _list = _interopRequireDefault(require("./list"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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); } }
-
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/**
- * Represents a CSS rule: a selector followed by a declaration block.
- *
- * @extends Container
- *
- * @example
- * const root = postcss.parse('a{}')
- * const rule = root.first
- * rule.type //=> 'rule'
- * rule.toString() //=> 'a{}'
- */
-var Rule =
-/*#__PURE__*/
-function (_Container) {
- _inheritsLoose(Rule, _Container);
-
- function Rule(defaults) {
- var _this;
-
- _this = _Container.call(this, defaults) || this;
- _this.type = 'rule';
- if (!_this.nodes) _this.nodes = [];
- return _this;
- }
- /**
- * An array containing the rule’s individual selectors.
- * Groups of selectors are split at commas.
- *
- * @type {string[]}
- *
- * @example
- * const root = postcss.parse('a, b { }')
- * const rule = root.first
- *
- * rule.selector //=> 'a, b'
- * rule.selectors //=> ['a', 'b']
- *
- * rule.selectors = ['a', 'strong']
- * rule.selector //=> 'a, strong'
- */
-
-
- _createClass(Rule, [{
- key: "selectors",
- get: function get() {
- return _list.default.comma(this.selector);
- },
- set: function set(values) {
- var match = this.selector ? this.selector.match(/,\s*/) : null;
- var sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen');
- this.selector = values.join(sep);
- }
- /**
- * @memberof Rule#
- * @member {string} selector The rule’s full selector represented
- * as a string.
- *
- * @example
- * const root = postcss.parse('a, b { }')
- * const rule = root.first
- * rule.selector //=> 'a, b'
- */
-
- /**
- * @memberof Rule#
- * @member {object} raws Information to generate byte-to-byte equal
- * node string as it was in the origin input.
- *
- * Every parser saves its own properties,
- * but the default CSS parser uses:
- *
- * * `before`: the space symbols before the node. It also stores `*`
- * and `_` symbols before the declaration (IE hack).
- * * `after`: the space symbols after the last child of the node
- * to the end of the node.
- * * `between`: the symbols between the property and value
- * for declarations, selector and `{` for rules, or last parameter
- * and `{` for at-rules.
- * * `semicolon`: contains `true` if the last child has
- * an (optional) semicolon.
- * * `ownSemicolon`: contains `true` if there is semicolon after rule.
- *
- * PostCSS cleans selectors from comments and extra spaces,
- * but it stores origin content in raws properties.
- * As such, if you don’t change a declaration’s value,
- * PostCSS will use the raw value with comments.
- *
- * @example
- * const root = postcss.parse('a {\n color:black\n}')
- * root.first.first.raws //=> { before: '', between: ' ', after: '\n' }
- */
-
- }]);
-
- return Rule;
-}(_container.default);
-
-var _default = Rule;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGUuZXM2Il0sIm5hbWVzIjpbIlJ1bGUiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsImxpc3QiLCJjb21tYSIsInNlbGVjdG9yIiwidmFsdWVzIiwibWF0Y2giLCJzZXAiLCJyYXciLCJqb2luIiwiQ29udGFpbmVyIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOzs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7O0lBV01BLEk7Ozs7O0FBQ0osZ0JBQWFDLFFBQWIsRUFBdUI7QUFBQTs7QUFDckIsa0NBQU1BLFFBQU47QUFDQSxVQUFLQyxJQUFMLEdBQVksTUFBWjtBQUNBLFFBQUksQ0FBQyxNQUFLQyxLQUFWLEVBQWlCLE1BQUtBLEtBQUwsR0FBYSxFQUFiO0FBSEk7QUFJdEI7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBZ0JpQjtBQUNmLGFBQU9DLGNBQUtDLEtBQUwsQ0FBVyxLQUFLQyxRQUFoQixDQUFQO0FBQ0QsSztzQkFFY0MsTSxFQUFRO0FBQ3JCLFVBQUlDLEtBQUssR0FBRyxLQUFLRixRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0UsS0FBZCxDQUFvQixNQUFwQixDQUFoQixHQUE4QyxJQUExRDtBQUNBLFVBQUlDLEdBQUcsR0FBR0QsS0FBSyxHQUFHQSxLQUFLLENBQUMsQ0FBRCxDQUFSLEdBQWMsTUFBTSxLQUFLRSxHQUFMLENBQVMsU0FBVCxFQUFvQixZQUFwQixDQUFuQztBQUNBLFdBQUtKLFFBQUwsR0FBZ0JDLE1BQU0sQ0FBQ0ksSUFBUCxDQUFZRixHQUFaLENBQWhCO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7QUFXQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE1Q2lCRyxrQjs7ZUEwRUpaLEkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udGFpbmVyIGZyb20gJy4vY29udGFpbmVyJ1xuaW1wb3J0IGxpc3QgZnJvbSAnLi9saXN0J1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBDU1MgcnVsZTogYSBzZWxlY3RvciBmb2xsb3dlZCBieSBhIGRlY2xhcmF0aW9uIGJsb2NrLlxuICpcbiAqIEBleHRlbmRzIENvbnRhaW5lclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYXt9JylcbiAqIGNvbnN0IHJ1bGUgPSByb290LmZpcnN0XG4gKiBydWxlLnR5cGUgICAgICAgLy89PiAncnVsZSdcbiAqIHJ1bGUudG9TdHJpbmcoKSAvLz0+ICdhe30nXG4gKi9cbmNsYXNzIFJ1bGUgZXh0ZW5kcyBDb250YWluZXIge1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cylcbiAgICB0aGlzLnR5cGUgPSAncnVsZSdcbiAgICBpZiAoIXRoaXMubm9kZXMpIHRoaXMubm9kZXMgPSBbXVxuICB9XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJ1bGXigJlzIGluZGl2aWR1YWwgc2VsZWN0b3JzLlxuICAgKiBHcm91cHMgb2Ygc2VsZWN0b3JzIGFyZSBzcGxpdCBhdCBjb21tYXMuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmdbXX1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EsIGIgeyB9JylcbiAgICogY29uc3QgcnVsZSA9IHJvb3QuZmlyc3RcbiAgICpcbiAgICogcnVsZS5zZWxlY3RvciAgLy89PiAnYSwgYidcbiAgICogcnVsZS5zZWxlY3RvcnMgLy89PiBbJ2EnLCAnYiddXG4gICAqXG4gICAqIHJ1bGUuc2VsZWN0b3JzID0gWydhJywgJ3N0cm9uZyddXG4gICAqIHJ1bGUuc2VsZWN0b3IgLy89PiAnYSwgc3Ryb25nJ1xuICAgKi9cbiAgZ2V0IHNlbGVjdG9ycyAoKSB7XG4gICAgcmV0dXJuIGxpc3QuY29tbWEodGhpcy5zZWxlY3RvcilcbiAgfVxuXG4gIHNldCBzZWxlY3RvcnMgKHZhbHVlcykge1xuICAgIGxldCBtYXRjaCA9IHRoaXMuc2VsZWN0b3IgPyB0aGlzLnNlbGVjdG9yLm1hdGNoKC8sXFxzKi8pIDogbnVsbFxuICAgIGxldCBzZXAgPSBtYXRjaCA/IG1hdGNoWzBdIDogJywnICsgdGhpcy5yYXcoJ2JldHdlZW4nLCAnYmVmb3JlT3BlbicpXG4gICAgdGhpcy5zZWxlY3RvciA9IHZhbHVlcy5qb2luKHNlcClcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUnVsZSNcbiAgICogQG1lbWJlciB7c3RyaW5nfSBzZWxlY3RvciBUaGUgcnVsZeKAmXMgZnVsbCBzZWxlY3RvciByZXByZXNlbnRlZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSwgYiB7IH0nKVxuICAgKiBjb25zdCBydWxlID0gcm9vdC5maXJzdFxuICAgKiBydWxlLnNlbGVjdG9yIC8vPT4gJ2EsIGInXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUnVsZSNcbiAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAqXG4gICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAqXG4gICAqICogYGJlZm9yZWA6IHRoZSBzcGFjZSBzeW1ib2xzIGJlZm9yZSB0aGUgbm9kZS4gSXQgYWxzbyBzdG9yZXMgYCpgXG4gICAqICAgYW5kIGBfYCBzeW1ib2xzIGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gKElFIGhhY2spLlxuICAgKiAqIGBhZnRlcmA6IHRoZSBzcGFjZSBzeW1ib2xzIGFmdGVyIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSBub2RlXG4gICAqICAgdG8gdGhlIGVuZCBvZiB0aGUgbm9kZS5cbiAgICogKiBgYmV0d2VlbmA6IHRoZSBzeW1ib2xzIGJldHdlZW4gdGhlIHByb3BlcnR5IGFuZCB2YWx1ZVxuICAgKiAgIGZvciBkZWNsYXJhdGlvbnMsIHNlbGVjdG9yIGFuZCBge2AgZm9yIHJ1bGVzLCBvciBsYXN0IHBhcmFtZXRlclxuICAgKiAgIGFuZCBge2AgZm9yIGF0LXJ1bGVzLlxuICAgKiAqIGBzZW1pY29sb25gOiBjb250YWlucyBgdHJ1ZWAgaWYgdGhlIGxhc3QgY2hpbGQgaGFzXG4gICAqICAgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAqICogYG93blNlbWljb2xvbmA6IGNvbnRhaW5zIGB0cnVlYCBpZiB0aGVyZSBpcyBzZW1pY29sb24gYWZ0ZXIgcnVsZS5cbiAgICpcbiAgICogUG9zdENTUyBjbGVhbnMgc2VsZWN0b3JzIGZyb20gY29tbWVudHMgYW5kIGV4dHJhIHNwYWNlcyxcbiAgICogYnV0IGl0IHN0b3JlcyBvcmlnaW4gY29udGVudCBpbiByYXdzIHByb3BlcnRpZXMuXG4gICAqIEFzIHN1Y2gsIGlmIHlvdSBkb27igJl0IGNoYW5nZSBhIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZSxcbiAgICogUG9zdENTUyB3aWxsIHVzZSB0aGUgcmF3IHZhbHVlIHdpdGggY29tbWVudHMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHtcXG4gIGNvbG9yOmJsYWNrXFxufScpXG4gICAqIHJvb3QuZmlyc3QuZmlyc3QucmF3cyAvLz0+IHsgYmVmb3JlOiAnJywgYmV0d2VlbjogJyAnLCBhZnRlcjogJ1xcbicgfVxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgUnVsZVxuIl0sImZpbGUiOiJydWxlLmpzIn0=
diff --git a/assets/node_modules/postcss/lib/stringifier.js b/assets/node_modules/postcss/lib/stringifier.js
deleted file mode 100644
index 3ef3435..0000000
--- a/assets/node_modules/postcss/lib/stringifier.js
+++ /dev/null
@@ -1,364 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-var DEFAULT_RAW = {
- colon: ': ',
- indent: ' ',
- beforeDecl: '\n',
- beforeRule: '\n',
- beforeOpen: ' ',
- beforeClose: '\n',
- beforeComment: '\n',
- after: '\n',
- emptyBody: '',
- commentLeft: ' ',
- commentRight: ' ',
- semicolon: false
-};
-
-function capitalize(str) {
- return str[0].toUpperCase() + str.slice(1);
-}
-
-var Stringifier =
-/*#__PURE__*/
-function () {
- function Stringifier(builder) {
- this.builder = builder;
- }
-
- var _proto = Stringifier.prototype;
-
- _proto.stringify = function stringify(node, semicolon) {
- this[node.type](node, semicolon);
- };
-
- _proto.root = function root(node) {
- this.body(node);
- if (node.raws.after) this.builder(node.raws.after);
- };
-
- _proto.comment = function comment(node) {
- var left = this.raw(node, 'left', 'commentLeft');
- var right = this.raw(node, 'right', 'commentRight');
- this.builder('/*' + left + node.text + right + '*/', node);
- };
-
- _proto.decl = function decl(node, semicolon) {
- var between = this.raw(node, 'between', 'colon');
- var string = node.prop + between + this.rawValue(node, 'value');
-
- if (node.important) {
- string += node.raws.important || ' !important';
- }
-
- if (semicolon) string += ';';
- this.builder(string, node);
- };
-
- _proto.rule = function rule(node) {
- this.block(node, this.rawValue(node, 'selector'));
-
- if (node.raws.ownSemicolon) {
- this.builder(node.raws.ownSemicolon, node, 'end');
- }
- };
-
- _proto.atrule = function atrule(node, semicolon) {
- var name = '@' + node.name;
- var params = node.params ? this.rawValue(node, 'params') : '';
-
- if (typeof node.raws.afterName !== 'undefined') {
- name += node.raws.afterName;
- } else if (params) {
- name += ' ';
- }
-
- if (node.nodes) {
- this.block(node, name + params);
- } else {
- var end = (node.raws.between || '') + (semicolon ? ';' : '');
- this.builder(name + params + end, node);
- }
- };
-
- _proto.body = function body(node) {
- var last = node.nodes.length - 1;
-
- while (last > 0) {
- if (node.nodes[last].type !== 'comment') break;
- last -= 1;
- }
-
- var semicolon = this.raw(node, 'semicolon');
-
- for (var i = 0; i < node.nodes.length; i++) {
- var child = node.nodes[i];
- var before = this.raw(child, 'before');
- if (before) this.builder(before);
- this.stringify(child, last !== i || semicolon);
- }
- };
-
- _proto.block = function block(node, start) {
- var between = this.raw(node, 'between', 'beforeOpen');
- this.builder(start + between + '{', node, 'start');
- var after;
-
- if (node.nodes && node.nodes.length) {
- this.body(node);
- after = this.raw(node, 'after');
- } else {
- after = this.raw(node, 'after', 'emptyBody');
- }
-
- if (after) this.builder(after);
- this.builder('}', node, 'end');
- };
-
- _proto.raw = function raw(node, own, detect) {
- var value;
- if (!detect) detect = own; // Already had
-
- if (own) {
- value = node.raws[own];
- if (typeof value !== 'undefined') return value;
- }
-
- var parent = node.parent; // Hack for first rule in CSS
-
- if (detect === 'before') {
- if (!parent || parent.type === 'root' && parent.first === node) {
- return '';
- }
- } // Floating child without parent
-
-
- if (!parent) return DEFAULT_RAW[detect]; // Detect style by other nodes
-
- var root = node.root();
- if (!root.rawCache) root.rawCache = {};
-
- if (typeof root.rawCache[detect] !== 'undefined') {
- return root.rawCache[detect];
- }
-
- if (detect === 'before' || detect === 'after') {
- return this.beforeAfter(node, detect);
- } else {
- var method = 'raw' + capitalize(detect);
-
- if (this[method]) {
- value = this[method](root, node);
- } else {
- root.walk(function (i) {
- value = i.raws[own];
- if (typeof value !== 'undefined') return false;
- });
- }
- }
-
- if (typeof value === 'undefined') value = DEFAULT_RAW[detect];
- root.rawCache[detect] = value;
- return value;
- };
-
- _proto.rawSemicolon = function rawSemicolon(root) {
- var value;
- root.walk(function (i) {
- if (i.nodes && i.nodes.length && i.last.type === 'decl') {
- value = i.raws.semicolon;
- if (typeof value !== 'undefined') return false;
- }
- });
- return value;
- };
-
- _proto.rawEmptyBody = function rawEmptyBody(root) {
- var value;
- root.walk(function (i) {
- if (i.nodes && i.nodes.length === 0) {
- value = i.raws.after;
- if (typeof value !== 'undefined') return false;
- }
- });
- return value;
- };
-
- _proto.rawIndent = function rawIndent(root) {
- if (root.raws.indent) return root.raws.indent;
- var value;
- root.walk(function (i) {
- var p = i.parent;
-
- if (p && p !== root && p.parent && p.parent === root) {
- if (typeof i.raws.before !== 'undefined') {
- var parts = i.raws.before.split('\n');
- value = parts[parts.length - 1];
- value = value.replace(/[^\s]/g, '');
- return false;
- }
- }
- });
- return value;
- };
-
- _proto.rawBeforeComment = function rawBeforeComment(root, node) {
- var value;
- root.walkComments(function (i) {
- if (typeof i.raws.before !== 'undefined') {
- value = i.raws.before;
-
- if (value.indexOf('\n') !== -1) {
- value = value.replace(/[^\n]+$/, '');
- }
-
- return false;
- }
- });
-
- if (typeof value === 'undefined') {
- value = this.raw(node, null, 'beforeDecl');
- } else if (value) {
- value = value.replace(/[^\s]/g, '');
- }
-
- return value;
- };
-
- _proto.rawBeforeDecl = function rawBeforeDecl(root, node) {
- var value;
- root.walkDecls(function (i) {
- if (typeof i.raws.before !== 'undefined') {
- value = i.raws.before;
-
- if (value.indexOf('\n') !== -1) {
- value = value.replace(/[^\n]+$/, '');
- }
-
- return false;
- }
- });
-
- if (typeof value === 'undefined') {
- value = this.raw(node, null, 'beforeRule');
- } else if (value) {
- value = value.replace(/[^\s]/g, '');
- }
-
- return value;
- };
-
- _proto.rawBeforeRule = function rawBeforeRule(root) {
- var value;
- root.walk(function (i) {
- if (i.nodes && (i.parent !== root || root.first !== i)) {
- if (typeof i.raws.before !== 'undefined') {
- value = i.raws.before;
-
- if (value.indexOf('\n') !== -1) {
- value = value.replace(/[^\n]+$/, '');
- }
-
- return false;
- }
- }
- });
- if (value) value = value.replace(/[^\s]/g, '');
- return value;
- };
-
- _proto.rawBeforeClose = function rawBeforeClose(root) {
- var value;
- root.walk(function (i) {
- if (i.nodes && i.nodes.length > 0) {
- if (typeof i.raws.after !== 'undefined') {
- value = i.raws.after;
-
- if (value.indexOf('\n') !== -1) {
- value = value.replace(/[^\n]+$/, '');
- }
-
- return false;
- }
- }
- });
- if (value) value = value.replace(/[^\s]/g, '');
- return value;
- };
-
- _proto.rawBeforeOpen = function rawBeforeOpen(root) {
- var value;
- root.walk(function (i) {
- if (i.type !== 'decl') {
- value = i.raws.between;
- if (typeof value !== 'undefined') return false;
- }
- });
- return value;
- };
-
- _proto.rawColon = function rawColon(root) {
- var value;
- root.walkDecls(function (i) {
- if (typeof i.raws.between !== 'undefined') {
- value = i.raws.between.replace(/[^\s:]/g, '');
- return false;
- }
- });
- return value;
- };
-
- _proto.beforeAfter = function beforeAfter(node, detect) {
- var value;
-
- if (node.type === 'decl') {
- value = this.raw(node, null, 'beforeDecl');
- } else if (node.type === 'comment') {
- value = this.raw(node, null, 'beforeComment');
- } else if (detect === 'before') {
- value = this.raw(node, null, 'beforeRule');
- } else {
- value = this.raw(node, null, 'beforeClose');
- }
-
- var buf = node.parent;
- var depth = 0;
-
- while (buf && buf.type !== 'root') {
- depth += 1;
- buf = buf.parent;
- }
-
- if (value.indexOf('\n') !== -1) {
- var indent = this.raw(node, null, 'indent');
-
- if (indent.length) {
- for (var step = 0; step < depth; step++) {
- value += indent;
- }
- }
- }
-
- return value;
- };
-
- _proto.rawValue = function rawValue(node, prop) {
- var value = node[prop];
- var raw = node.raws[prop];
-
- if (raw && raw.value === value) {
- return raw.raw;
- }
-
- return value;
- };
-
- return Stringifier;
-}();
-
-var _default = Stringifier;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmaWVyLmVzNiJdLCJuYW1lcyI6WyJERUZBVUxUX1JBVyIsImNvbG9uIiwiaW5kZW50IiwiYmVmb3JlRGVjbCIsImJlZm9yZVJ1bGUiLCJiZWZvcmVPcGVuIiwiYmVmb3JlQ2xvc2UiLCJiZWZvcmVDb21tZW50IiwiYWZ0ZXIiLCJlbXB0eUJvZHkiLCJjb21tZW50TGVmdCIsImNvbW1lbnRSaWdodCIsInNlbWljb2xvbiIsImNhcGl0YWxpemUiLCJzdHIiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiU3RyaW5naWZpZXIiLCJidWlsZGVyIiwic3RyaW5naWZ5Iiwibm9kZSIsInR5cGUiLCJyb290IiwiYm9keSIsInJhd3MiLCJjb21tZW50IiwibGVmdCIsInJhdyIsInJpZ2h0IiwidGV4dCIsImRlY2wiLCJiZXR3ZWVuIiwic3RyaW5nIiwicHJvcCIsInJhd1ZhbHVlIiwiaW1wb3J0YW50IiwicnVsZSIsImJsb2NrIiwib3duU2VtaWNvbG9uIiwiYXRydWxlIiwibmFtZSIsInBhcmFtcyIsImFmdGVyTmFtZSIsIm5vZGVzIiwiZW5kIiwibGFzdCIsImxlbmd0aCIsImkiLCJjaGlsZCIsImJlZm9yZSIsInN0YXJ0Iiwib3duIiwiZGV0ZWN0IiwidmFsdWUiLCJwYXJlbnQiLCJmaXJzdCIsInJhd0NhY2hlIiwiYmVmb3JlQWZ0ZXIiLCJtZXRob2QiLCJ3YWxrIiwicmF3U2VtaWNvbG9uIiwicmF3RW1wdHlCb2R5IiwicmF3SW5kZW50IiwicCIsInBhcnRzIiwic3BsaXQiLCJyZXBsYWNlIiwicmF3QmVmb3JlQ29tbWVudCIsIndhbGtDb21tZW50cyIsImluZGV4T2YiLCJyYXdCZWZvcmVEZWNsIiwid2Fsa0RlY2xzIiwicmF3QmVmb3JlUnVsZSIsInJhd0JlZm9yZUNsb3NlIiwicmF3QmVmb3JlT3BlbiIsInJhd0NvbG9uIiwiYnVmIiwiZGVwdGgiLCJzdGVwIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBTUEsV0FBVyxHQUFHO0FBQ2xCQyxFQUFBQSxLQUFLLEVBQUUsSUFEVztBQUVsQkMsRUFBQUEsTUFBTSxFQUFFLE1BRlU7QUFHbEJDLEVBQUFBLFVBQVUsRUFBRSxJQUhNO0FBSWxCQyxFQUFBQSxVQUFVLEVBQUUsSUFKTTtBQUtsQkMsRUFBQUEsVUFBVSxFQUFFLEdBTE07QUFNbEJDLEVBQUFBLFdBQVcsRUFBRSxJQU5LO0FBT2xCQyxFQUFBQSxhQUFhLEVBQUUsSUFQRztBQVFsQkMsRUFBQUEsS0FBSyxFQUFFLElBUlc7QUFTbEJDLEVBQUFBLFNBQVMsRUFBRSxFQVRPO0FBVWxCQyxFQUFBQSxXQUFXLEVBQUUsR0FWSztBQVdsQkMsRUFBQUEsWUFBWSxFQUFFLEdBWEk7QUFZbEJDLEVBQUFBLFNBQVMsRUFBRTtBQVpPLENBQXBCOztBQWVBLFNBQVNDLFVBQVQsQ0FBcUJDLEdBQXJCLEVBQTBCO0FBQ3hCLFNBQU9BLEdBQUcsQ0FBQyxDQUFELENBQUgsQ0FBT0MsV0FBUCxLQUF1QkQsR0FBRyxDQUFDRSxLQUFKLENBQVUsQ0FBVixDQUE5QjtBQUNEOztJQUVLQyxXOzs7QUFDSix1QkFBYUMsT0FBYixFQUFzQjtBQUNwQixTQUFLQSxPQUFMLEdBQWVBLE9BQWY7QUFDRDs7OztTQUVEQyxTLEdBQUEsbUJBQVdDLElBQVgsRUFBaUJSLFNBQWpCLEVBQTRCO0FBQzFCLFNBQUtRLElBQUksQ0FBQ0MsSUFBVixFQUFnQkQsSUFBaEIsRUFBc0JSLFNBQXRCO0FBQ0QsRzs7U0FFRFUsSSxHQUFBLGNBQU1GLElBQU4sRUFBWTtBQUNWLFNBQUtHLElBQUwsQ0FBVUgsSUFBVjtBQUNBLFFBQUlBLElBQUksQ0FBQ0ksSUFBTCxDQUFVaEIsS0FBZCxFQUFxQixLQUFLVSxPQUFMLENBQWFFLElBQUksQ0FBQ0ksSUFBTCxDQUFVaEIsS0FBdkI7QUFDdEIsRzs7U0FFRGlCLE8sR0FBQSxpQkFBU0wsSUFBVCxFQUFlO0FBQ2IsUUFBSU0sSUFBSSxHQUFHLEtBQUtDLEdBQUwsQ0FBU1AsSUFBVCxFQUFlLE1BQWYsRUFBdUIsYUFBdkIsQ0FBWDtBQUNBLFFBQUlRLEtBQUssR0FBRyxLQUFLRCxHQUFMLENBQVNQLElBQVQsRUFBZSxPQUFmLEVBQXdCLGNBQXhCLENBQVo7QUFDQSxTQUFLRixPQUFMLENBQWEsT0FBT1EsSUFBUCxHQUFjTixJQUFJLENBQUNTLElBQW5CLEdBQTBCRCxLQUExQixHQUFrQyxJQUEvQyxFQUFxRFIsSUFBckQ7QUFDRCxHOztTQUVEVSxJLEdBQUEsY0FBTVYsSUFBTixFQUFZUixTQUFaLEVBQXVCO0FBQ3JCLFFBQUltQixPQUFPLEdBQUcsS0FBS0osR0FBTCxDQUFTUCxJQUFULEVBQWUsU0FBZixFQUEwQixPQUExQixDQUFkO0FBQ0EsUUFBSVksTUFBTSxHQUFHWixJQUFJLENBQUNhLElBQUwsR0FBWUYsT0FBWixHQUFzQixLQUFLRyxRQUFMLENBQWNkLElBQWQsRUFBb0IsT0FBcEIsQ0FBbkM7O0FBRUEsUUFBSUEsSUFBSSxDQUFDZSxTQUFULEVBQW9CO0FBQ2xCSCxNQUFBQSxNQUFNLElBQUlaLElBQUksQ0FBQ0ksSUFBTCxDQUFVVyxTQUFWLElBQXVCLGFBQWpDO0FBQ0Q7O0FBRUQsUUFBSXZCLFNBQUosRUFBZW9CLE1BQU0sSUFBSSxHQUFWO0FBQ2YsU0FBS2QsT0FBTCxDQUFhYyxNQUFiLEVBQXFCWixJQUFyQjtBQUNELEc7O1NBRURnQixJLEdBQUEsY0FBTWhCLElBQU4sRUFBWTtBQUNWLFNBQUtpQixLQUFMLENBQVdqQixJQUFYLEVBQWlCLEtBQUtjLFFBQUwsQ0FBY2QsSUFBZCxFQUFvQixVQUFwQixDQUFqQjs7QUFDQSxRQUFJQSxJQUFJLENBQUNJLElBQUwsQ0FBVWMsWUFBZCxFQUE0QjtBQUMxQixXQUFLcEIsT0FBTCxDQUFhRSxJQUFJLENBQUNJLElBQUwsQ0FBVWMsWUFBdkIsRUFBcUNsQixJQUFyQyxFQUEyQyxLQUEzQztBQUNEO0FBQ0YsRzs7U0FFRG1CLE0sR0FBQSxnQkFBUW5CLElBQVIsRUFBY1IsU0FBZCxFQUF5QjtBQUN2QixRQUFJNEIsSUFBSSxHQUFHLE1BQU1wQixJQUFJLENBQUNvQixJQUF0QjtBQUNBLFFBQUlDLE1BQU0sR0FBR3JCLElBQUksQ0FBQ3FCLE1BQUwsR0FBYyxLQUFLUCxRQUFMLENBQWNkLElBQWQsRUFBb0IsUUFBcEIsQ0FBZCxHQUE4QyxFQUEzRDs7QUFFQSxRQUFJLE9BQU9BLElBQUksQ0FBQ0ksSUFBTCxDQUFVa0IsU0FBakIsS0FBK0IsV0FBbkMsRUFBZ0Q7QUFDOUNGLE1BQUFBLElBQUksSUFBSXBCLElBQUksQ0FBQ0ksSUFBTCxDQUFVa0IsU0FBbEI7QUFDRCxLQUZELE1BRU8sSUFBSUQsTUFBSixFQUFZO0FBQ2pCRCxNQUFBQSxJQUFJLElBQUksR0FBUjtBQUNEOztBQUVELFFBQUlwQixJQUFJLENBQUN1QixLQUFULEVBQWdCO0FBQ2QsV0FBS04sS0FBTCxDQUFXakIsSUFBWCxFQUFpQm9CLElBQUksR0FBR0MsTUFBeEI7QUFDRCxLQUZELE1BRU87QUFDTCxVQUFJRyxHQUFHLEdBQUcsQ0FBQ3hCLElBQUksQ0FBQ0ksSUFBTCxDQUFVTyxPQUFWLElBQXFCLEVBQXRCLEtBQTZCbkIsU0FBUyxHQUFHLEdBQUgsR0FBUyxFQUEvQyxDQUFWO0FBQ0EsV0FBS00sT0FBTCxDQUFhc0IsSUFBSSxHQUFHQyxNQUFQLEdBQWdCRyxHQUE3QixFQUFrQ3hCLElBQWxDO0FBQ0Q7QUFDRixHOztTQUVERyxJLEdBQUEsY0FBTUgsSUFBTixFQUFZO0FBQ1YsUUFBSXlCLElBQUksR0FBR3pCLElBQUksQ0FBQ3VCLEtBQUwsQ0FBV0csTUFBWCxHQUFvQixDQUEvQjs7QUFDQSxXQUFPRCxJQUFJLEdBQUcsQ0FBZCxFQUFpQjtBQUNmLFVBQUl6QixJQUFJLENBQUN1QixLQUFMLENBQVdFLElBQVgsRUFBaUJ4QixJQUFqQixLQUEwQixTQUE5QixFQUF5QztBQUN6Q3dCLE1BQUFBLElBQUksSUFBSSxDQUFSO0FBQ0Q7O0FBRUQsUUFBSWpDLFNBQVMsR0FBRyxLQUFLZSxHQUFMLENBQVNQLElBQVQsRUFBZSxXQUFmLENBQWhCOztBQUNBLFNBQUssSUFBSTJCLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUczQixJQUFJLENBQUN1QixLQUFMLENBQVdHLE1BQS9CLEVBQXVDQyxDQUFDLEVBQXhDLEVBQTRDO0FBQzFDLFVBQUlDLEtBQUssR0FBRzVCLElBQUksQ0FBQ3VCLEtBQUwsQ0FBV0ksQ0FBWCxDQUFaO0FBQ0EsVUFBSUUsTUFBTSxHQUFHLEtBQUt0QixHQUFMLENBQVNxQixLQUFULEVBQWdCLFFBQWhCLENBQWI7QUFDQSxVQUFJQyxNQUFKLEVBQVksS0FBSy9CLE9BQUwsQ0FBYStCLE1BQWI7QUFDWixXQUFLOUIsU0FBTCxDQUFlNkIsS0FBZixFQUFzQkgsSUFBSSxLQUFLRSxDQUFULElBQWNuQyxTQUFwQztBQUNEO0FBQ0YsRzs7U0FFRHlCLEssR0FBQSxlQUFPakIsSUFBUCxFQUFhOEIsS0FBYixFQUFvQjtBQUNsQixRQUFJbkIsT0FBTyxHQUFHLEtBQUtKLEdBQUwsQ0FBU1AsSUFBVCxFQUFlLFNBQWYsRUFBMEIsWUFBMUIsQ0FBZDtBQUNBLFNBQUtGLE9BQUwsQ0FBYWdDLEtBQUssR0FBR25CLE9BQVIsR0FBa0IsR0FBL0IsRUFBb0NYLElBQXBDLEVBQTBDLE9BQTFDO0FBRUEsUUFBSVosS0FBSjs7QUFDQSxRQUFJWSxJQUFJLENBQUN1QixLQUFMLElBQWN2QixJQUFJLENBQUN1QixLQUFMLENBQVdHLE1BQTdCLEVBQXFDO0FBQ25DLFdBQUt2QixJQUFMLENBQVVILElBQVY7QUFDQVosTUFBQUEsS0FBSyxHQUFHLEtBQUttQixHQUFMLENBQVNQLElBQVQsRUFBZSxPQUFmLENBQVI7QUFDRCxLQUhELE1BR087QUFDTFosTUFBQUEsS0FBSyxHQUFHLEtBQUttQixHQUFMLENBQVNQLElBQVQsRUFBZSxPQUFmLEVBQXdCLFdBQXhCLENBQVI7QUFDRDs7QUFFRCxRQUFJWixLQUFKLEVBQVcsS0FBS1UsT0FBTCxDQUFhVixLQUFiO0FBQ1gsU0FBS1UsT0FBTCxDQUFhLEdBQWIsRUFBa0JFLElBQWxCLEVBQXdCLEtBQXhCO0FBQ0QsRzs7U0FFRE8sRyxHQUFBLGFBQUtQLElBQUwsRUFBVytCLEdBQVgsRUFBZ0JDLE1BQWhCLEVBQXdCO0FBQ3RCLFFBQUlDLEtBQUo7QUFDQSxRQUFJLENBQUNELE1BQUwsRUFBYUEsTUFBTSxHQUFHRCxHQUFULENBRlMsQ0FJdEI7O0FBQ0EsUUFBSUEsR0FBSixFQUFTO0FBQ1BFLE1BQUFBLEtBQUssR0FBR2pDLElBQUksQ0FBQ0ksSUFBTCxDQUFVMkIsR0FBVixDQUFSO0FBQ0EsVUFBSSxPQUFPRSxLQUFQLEtBQWlCLFdBQXJCLEVBQWtDLE9BQU9BLEtBQVA7QUFDbkM7O0FBRUQsUUFBSUMsTUFBTSxHQUFHbEMsSUFBSSxDQUFDa0MsTUFBbEIsQ0FWc0IsQ0FZdEI7O0FBQ0EsUUFBSUYsTUFBTSxLQUFLLFFBQWYsRUFBeUI7QUFDdkIsVUFBSSxDQUFDRSxNQUFELElBQVlBLE1BQU0sQ0FBQ2pDLElBQVAsS0FBZ0IsTUFBaEIsSUFBMEJpQyxNQUFNLENBQUNDLEtBQVAsS0FBaUJuQyxJQUEzRCxFQUFrRTtBQUNoRSxlQUFPLEVBQVA7QUFDRDtBQUNGLEtBakJxQixDQW1CdEI7OztBQUNBLFFBQUksQ0FBQ2tDLE1BQUwsRUFBYSxPQUFPdEQsV0FBVyxDQUFDb0QsTUFBRCxDQUFsQixDQXBCUyxDQXNCdEI7O0FBQ0EsUUFBSTlCLElBQUksR0FBR0YsSUFBSSxDQUFDRSxJQUFMLEVBQVg7QUFDQSxRQUFJLENBQUNBLElBQUksQ0FBQ2tDLFFBQVYsRUFBb0JsQyxJQUFJLENBQUNrQyxRQUFMLEdBQWdCLEVBQWhCOztBQUNwQixRQUFJLE9BQU9sQyxJQUFJLENBQUNrQyxRQUFMLENBQWNKLE1BQWQsQ0FBUCxLQUFpQyxXQUFyQyxFQUFrRDtBQUNoRCxhQUFPOUIsSUFBSSxDQUFDa0MsUUFBTCxDQUFjSixNQUFkLENBQVA7QUFDRDs7QUFFRCxRQUFJQSxNQUFNLEtBQUssUUFBWCxJQUF1QkEsTUFBTSxLQUFLLE9BQXRDLEVBQStDO0FBQzdDLGFBQU8sS0FBS0ssV0FBTCxDQUFpQnJDLElBQWpCLEVBQXVCZ0MsTUFBdkIsQ0FBUDtBQUNELEtBRkQsTUFFTztBQUNMLFVBQUlNLE1BQU0sR0FBRyxRQUFRN0MsVUFBVSxDQUFDdUMsTUFBRCxDQUEvQjs7QUFDQSxVQUFJLEtBQUtNLE1BQUwsQ0FBSixFQUFrQjtBQUNoQkwsUUFBQUEsS0FBSyxHQUFHLEtBQUtLLE1BQUwsRUFBYXBDLElBQWIsRUFBbUJGLElBQW5CLENBQVI7QUFDRCxPQUZELE1BRU87QUFDTEUsUUFBQUEsSUFBSSxDQUFDcUMsSUFBTCxDQUFVLFVBQUFaLENBQUMsRUFBSTtBQUNiTSxVQUFBQSxLQUFLLEdBQUdOLENBQUMsQ0FBQ3ZCLElBQUYsQ0FBTzJCLEdBQVAsQ0FBUjtBQUNBLGNBQUksT0FBT0UsS0FBUCxLQUFpQixXQUFyQixFQUFrQyxPQUFPLEtBQVA7QUFDbkMsU0FIRDtBQUlEO0FBQ0Y7O0FBRUQsUUFBSSxPQUFPQSxLQUFQLEtBQWlCLFdBQXJCLEVBQWtDQSxLQUFLLEdBQUdyRCxXQUFXLENBQUNvRCxNQUFELENBQW5CO0FBRWxDOUIsSUFBQUEsSUFBSSxDQUFDa0MsUUFBTCxDQUFjSixNQUFkLElBQXdCQyxLQUF4QjtBQUNBLFdBQU9BLEtBQVA7QUFDRCxHOztTQUVETyxZLEdBQUEsc0JBQWN0QyxJQUFkLEVBQW9CO0FBQ2xCLFFBQUkrQixLQUFKO0FBQ0EvQixJQUFBQSxJQUFJLENBQUNxQyxJQUFMLENBQVUsVUFBQVosQ0FBQyxFQUFJO0FBQ2IsVUFBSUEsQ0FBQyxDQUFDSixLQUFGLElBQVdJLENBQUMsQ0FBQ0osS0FBRixDQUFRRyxNQUFuQixJQUE2QkMsQ0FBQyxDQUFDRixJQUFGLENBQU94QixJQUFQLEtBQWdCLE1BQWpELEVBQXlEO0FBQ3ZEZ0MsUUFBQUEsS0FBSyxHQUFHTixDQUFDLENBQUN2QixJQUFGLENBQU9aLFNBQWY7QUFDQSxZQUFJLE9BQU95QyxLQUFQLEtBQWlCLFdBQXJCLEVBQWtDLE9BQU8sS0FBUDtBQUNuQztBQUNGLEtBTEQ7QUFNQSxXQUFPQSxLQUFQO0FBQ0QsRzs7U0FFRFEsWSxHQUFBLHNCQUFjdkMsSUFBZCxFQUFvQjtBQUNsQixRQUFJK0IsS0FBSjtBQUNBL0IsSUFBQUEsSUFBSSxDQUFDcUMsSUFBTCxDQUFVLFVBQUFaLENBQUMsRUFBSTtBQUNiLFVBQUlBLENBQUMsQ0FBQ0osS0FBRixJQUFXSSxDQUFDLENBQUNKLEtBQUYsQ0FBUUcsTUFBUixLQUFtQixDQUFsQyxFQUFxQztBQUNuQ08sUUFBQUEsS0FBSyxHQUFHTixDQUFDLENBQUN2QixJQUFGLENBQU9oQixLQUFmO0FBQ0EsWUFBSSxPQUFPNkMsS0FBUCxLQUFpQixXQUFyQixFQUFrQyxPQUFPLEtBQVA7QUFDbkM7QUFDRixLQUxEO0FBTUEsV0FBT0EsS0FBUDtBQUNELEc7O1NBRURTLFMsR0FBQSxtQkFBV3hDLElBQVgsRUFBaUI7QUFDZixRQUFJQSxJQUFJLENBQUNFLElBQUwsQ0FBVXRCLE1BQWQsRUFBc0IsT0FBT29CLElBQUksQ0FBQ0UsSUFBTCxDQUFVdEIsTUFBakI7QUFDdEIsUUFBSW1ELEtBQUo7QUFDQS9CLElBQUFBLElBQUksQ0FBQ3FDLElBQUwsQ0FBVSxVQUFBWixDQUFDLEVBQUk7QUFDYixVQUFJZ0IsQ0FBQyxHQUFHaEIsQ0FBQyxDQUFDTyxNQUFWOztBQUNBLFVBQUlTLENBQUMsSUFBSUEsQ0FBQyxLQUFLekMsSUFBWCxJQUFtQnlDLENBQUMsQ0FBQ1QsTUFBckIsSUFBK0JTLENBQUMsQ0FBQ1QsTUFBRixLQUFhaEMsSUFBaEQsRUFBc0Q7QUFDcEQsWUFBSSxPQUFPeUIsQ0FBQyxDQUFDdkIsSUFBRixDQUFPeUIsTUFBZCxLQUF5QixXQUE3QixFQUEwQztBQUN4QyxjQUFJZSxLQUFLLEdBQUdqQixDQUFDLENBQUN2QixJQUFGLENBQU95QixNQUFQLENBQWNnQixLQUFkLENBQW9CLElBQXBCLENBQVo7QUFDQVosVUFBQUEsS0FBSyxHQUFHVyxLQUFLLENBQUNBLEtBQUssQ0FBQ2xCLE1BQU4sR0FBZSxDQUFoQixDQUFiO0FBQ0FPLFVBQUFBLEtBQUssR0FBR0EsS0FBSyxDQUFDYSxPQUFOLENBQWMsUUFBZCxFQUF3QixFQUF4QixDQUFSO0FBQ0EsaUJBQU8sS0FBUDtBQUNEO0FBQ0Y7QUFDRixLQVZEO0FBV0EsV0FBT2IsS0FBUDtBQUNELEc7O1NBRURjLGdCLEdBQUEsMEJBQWtCN0MsSUFBbEIsRUFBd0JGLElBQXhCLEVBQThCO0FBQzVCLFFBQUlpQyxLQUFKO0FBQ0EvQixJQUFBQSxJQUFJLENBQUM4QyxZQUFMLENBQWtCLFVBQUFyQixDQUFDLEVBQUk7QUFDckIsVUFBSSxPQUFPQSxDQUFDLENBQUN2QixJQUFGLENBQU95QixNQUFkLEtBQXlCLFdBQTdCLEVBQTBDO0FBQ3hDSSxRQUFBQSxLQUFLLEdBQUdOLENBQUMsQ0FBQ3ZCLElBQUYsQ0FBT3lCLE1BQWY7O0FBQ0EsWUFBSUksS0FBSyxDQUFDZ0IsT0FBTixDQUFjLElBQWQsTUFBd0IsQ0FBQyxDQUE3QixFQUFnQztBQUM5QmhCLFVBQUFBLEtBQUssR0FBR0EsS0FBSyxDQUFDYSxPQUFOLENBQWMsU0FBZCxFQUF5QixFQUF6QixDQUFSO0FBQ0Q7O0FBQ0QsZUFBTyxLQUFQO0FBQ0Q7QUFDRixLQVJEOztBQVNBLFFBQUksT0FBT2IsS0FBUCxLQUFpQixXQUFyQixFQUFrQztBQUNoQ0EsTUFBQUEsS0FBSyxHQUFHLEtBQUsxQixHQUFMLENBQVNQLElBQVQsRUFBZSxJQUFmLEVBQXFCLFlBQXJCLENBQVI7QUFDRCxLQUZELE1BRU8sSUFBSWlDLEtBQUosRUFBVztBQUNoQkEsTUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNhLE9BQU4sQ0FBYyxRQUFkLEVBQXdCLEVBQXhCLENBQVI7QUFDRDs7QUFDRCxXQUFPYixLQUFQO0FBQ0QsRzs7U0FFRGlCLGEsR0FBQSx1QkFBZWhELElBQWYsRUFBcUJGLElBQXJCLEVBQTJCO0FBQ3pCLFFBQUlpQyxLQUFKO0FBQ0EvQixJQUFBQSxJQUFJLENBQUNpRCxTQUFMLENBQWUsVUFBQXhCLENBQUMsRUFBSTtBQUNsQixVQUFJLE9BQU9BLENBQUMsQ0FBQ3ZCLElBQUYsQ0FBT3lCLE1BQWQsS0FBeUIsV0FBN0IsRUFBMEM7QUFDeENJLFFBQUFBLEtBQUssR0FBR04sQ0FBQyxDQUFDdkIsSUFBRixDQUFPeUIsTUFBZjs7QUFDQSxZQUFJSSxLQUFLLENBQUNnQixPQUFOLENBQWMsSUFBZCxNQUF3QixDQUFDLENBQTdCLEVBQWdDO0FBQzlCaEIsVUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNhLE9BQU4sQ0FBYyxTQUFkLEVBQXlCLEVBQXpCLENBQVI7QUFDRDs7QUFDRCxlQUFPLEtBQVA7QUFDRDtBQUNGLEtBUkQ7O0FBU0EsUUFBSSxPQUFPYixLQUFQLEtBQWlCLFdBQXJCLEVBQWtDO0FBQ2hDQSxNQUFBQSxLQUFLLEdBQUcsS0FBSzFCLEdBQUwsQ0FBU1AsSUFBVCxFQUFlLElBQWYsRUFBcUIsWUFBckIsQ0FBUjtBQUNELEtBRkQsTUFFTyxJQUFJaUMsS0FBSixFQUFXO0FBQ2hCQSxNQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ2EsT0FBTixDQUFjLFFBQWQsRUFBd0IsRUFBeEIsQ0FBUjtBQUNEOztBQUNELFdBQU9iLEtBQVA7QUFDRCxHOztTQUVEbUIsYSxHQUFBLHVCQUFlbEQsSUFBZixFQUFxQjtBQUNuQixRQUFJK0IsS0FBSjtBQUNBL0IsSUFBQUEsSUFBSSxDQUFDcUMsSUFBTCxDQUFVLFVBQUFaLENBQUMsRUFBSTtBQUNiLFVBQUlBLENBQUMsQ0FBQ0osS0FBRixLQUFZSSxDQUFDLENBQUNPLE1BQUYsS0FBYWhDLElBQWIsSUFBcUJBLElBQUksQ0FBQ2lDLEtBQUwsS0FBZVIsQ0FBaEQsQ0FBSixFQUF3RDtBQUN0RCxZQUFJLE9BQU9BLENBQUMsQ0FBQ3ZCLElBQUYsQ0FBT3lCLE1BQWQsS0FBeUIsV0FBN0IsRUFBMEM7QUFDeENJLFVBQUFBLEtBQUssR0FBR04sQ0FBQyxDQUFDdkIsSUFBRixDQUFPeUIsTUFBZjs7QUFDQSxjQUFJSSxLQUFLLENBQUNnQixPQUFOLENBQWMsSUFBZCxNQUF3QixDQUFDLENBQTdCLEVBQWdDO0FBQzlCaEIsWUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNhLE9BQU4sQ0FBYyxTQUFkLEVBQXlCLEVBQXpCLENBQVI7QUFDRDs7QUFDRCxpQkFBTyxLQUFQO0FBQ0Q7QUFDRjtBQUNGLEtBVkQ7QUFXQSxRQUFJYixLQUFKLEVBQVdBLEtBQUssR0FBR0EsS0FBSyxDQUFDYSxPQUFOLENBQWMsUUFBZCxFQUF3QixFQUF4QixDQUFSO0FBQ1gsV0FBT2IsS0FBUDtBQUNELEc7O1NBRURvQixjLEdBQUEsd0JBQWdCbkQsSUFBaEIsRUFBc0I7QUFDcEIsUUFBSStCLEtBQUo7QUFDQS9CLElBQUFBLElBQUksQ0FBQ3FDLElBQUwsQ0FBVSxVQUFBWixDQUFDLEVBQUk7QUFDYixVQUFJQSxDQUFDLENBQUNKLEtBQUYsSUFBV0ksQ0FBQyxDQUFDSixLQUFGLENBQVFHLE1BQVIsR0FBaUIsQ0FBaEMsRUFBbUM7QUFDakMsWUFBSSxPQUFPQyxDQUFDLENBQUN2QixJQUFGLENBQU9oQixLQUFkLEtBQXdCLFdBQTVCLEVBQXlDO0FBQ3ZDNkMsVUFBQUEsS0FBSyxHQUFHTixDQUFDLENBQUN2QixJQUFGLENBQU9oQixLQUFmOztBQUNBLGNBQUk2QyxLQUFLLENBQUNnQixPQUFOLENBQWMsSUFBZCxNQUF3QixDQUFDLENBQTdCLEVBQWdDO0FBQzlCaEIsWUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNhLE9BQU4sQ0FBYyxTQUFkLEVBQXlCLEVBQXpCLENBQVI7QUFDRDs7QUFDRCxpQkFBTyxLQUFQO0FBQ0Q7QUFDRjtBQUNGLEtBVkQ7QUFXQSxRQUFJYixLQUFKLEVBQVdBLEtBQUssR0FBR0EsS0FBSyxDQUFDYSxPQUFOLENBQWMsUUFBZCxFQUF3QixFQUF4QixDQUFSO0FBQ1gsV0FBT2IsS0FBUDtBQUNELEc7O1NBRURxQixhLEdBQUEsdUJBQWVwRCxJQUFmLEVBQXFCO0FBQ25CLFFBQUkrQixLQUFKO0FBQ0EvQixJQUFBQSxJQUFJLENBQUNxQyxJQUFMLENBQVUsVUFBQVosQ0FBQyxFQUFJO0FBQ2IsVUFBSUEsQ0FBQyxDQUFDMUIsSUFBRixLQUFXLE1BQWYsRUFBdUI7QUFDckJnQyxRQUFBQSxLQUFLLEdBQUdOLENBQUMsQ0FBQ3ZCLElBQUYsQ0FBT08sT0FBZjtBQUNBLFlBQUksT0FBT3NCLEtBQVAsS0FBaUIsV0FBckIsRUFBa0MsT0FBTyxLQUFQO0FBQ25DO0FBQ0YsS0FMRDtBQU1BLFdBQU9BLEtBQVA7QUFDRCxHOztTQUVEc0IsUSxHQUFBLGtCQUFVckQsSUFBVixFQUFnQjtBQUNkLFFBQUkrQixLQUFKO0FBQ0EvQixJQUFBQSxJQUFJLENBQUNpRCxTQUFMLENBQWUsVUFBQXhCLENBQUMsRUFBSTtBQUNsQixVQUFJLE9BQU9BLENBQUMsQ0FBQ3ZCLElBQUYsQ0FBT08sT0FBZCxLQUEwQixXQUE5QixFQUEyQztBQUN6Q3NCLFFBQUFBLEtBQUssR0FBR04sQ0FBQyxDQUFDdkIsSUFBRixDQUFPTyxPQUFQLENBQWVtQyxPQUFmLENBQXVCLFNBQXZCLEVBQWtDLEVBQWxDLENBQVI7QUFDQSxlQUFPLEtBQVA7QUFDRDtBQUNGLEtBTEQ7QUFNQSxXQUFPYixLQUFQO0FBQ0QsRzs7U0FFREksVyxHQUFBLHFCQUFhckMsSUFBYixFQUFtQmdDLE1BQW5CLEVBQTJCO0FBQ3pCLFFBQUlDLEtBQUo7O0FBQ0EsUUFBSWpDLElBQUksQ0FBQ0MsSUFBTCxLQUFjLE1BQWxCLEVBQTBCO0FBQ3hCZ0MsTUFBQUEsS0FBSyxHQUFHLEtBQUsxQixHQUFMLENBQVNQLElBQVQsRUFBZSxJQUFmLEVBQXFCLFlBQXJCLENBQVI7QUFDRCxLQUZELE1BRU8sSUFBSUEsSUFBSSxDQUFDQyxJQUFMLEtBQWMsU0FBbEIsRUFBNkI7QUFDbENnQyxNQUFBQSxLQUFLLEdBQUcsS0FBSzFCLEdBQUwsQ0FBU1AsSUFBVCxFQUFlLElBQWYsRUFBcUIsZUFBckIsQ0FBUjtBQUNELEtBRk0sTUFFQSxJQUFJZ0MsTUFBTSxLQUFLLFFBQWYsRUFBeUI7QUFDOUJDLE1BQUFBLEtBQUssR0FBRyxLQUFLMUIsR0FBTCxDQUFTUCxJQUFULEVBQWUsSUFBZixFQUFxQixZQUFyQixDQUFSO0FBQ0QsS0FGTSxNQUVBO0FBQ0xpQyxNQUFBQSxLQUFLLEdBQUcsS0FBSzFCLEdBQUwsQ0FBU1AsSUFBVCxFQUFlLElBQWYsRUFBcUIsYUFBckIsQ0FBUjtBQUNEOztBQUVELFFBQUl3RCxHQUFHLEdBQUd4RCxJQUFJLENBQUNrQyxNQUFmO0FBQ0EsUUFBSXVCLEtBQUssR0FBRyxDQUFaOztBQUNBLFdBQU9ELEdBQUcsSUFBSUEsR0FBRyxDQUFDdkQsSUFBSixLQUFhLE1BQTNCLEVBQW1DO0FBQ2pDd0QsTUFBQUEsS0FBSyxJQUFJLENBQVQ7QUFDQUQsTUFBQUEsR0FBRyxHQUFHQSxHQUFHLENBQUN0QixNQUFWO0FBQ0Q7O0FBRUQsUUFBSUQsS0FBSyxDQUFDZ0IsT0FBTixDQUFjLElBQWQsTUFBd0IsQ0FBQyxDQUE3QixFQUFnQztBQUM5QixVQUFJbkUsTUFBTSxHQUFHLEtBQUt5QixHQUFMLENBQVNQLElBQVQsRUFBZSxJQUFmLEVBQXFCLFFBQXJCLENBQWI7O0FBQ0EsVUFBSWxCLE1BQU0sQ0FBQzRDLE1BQVgsRUFBbUI7QUFDakIsYUFBSyxJQUFJZ0MsSUFBSSxHQUFHLENBQWhCLEVBQW1CQSxJQUFJLEdBQUdELEtBQTFCLEVBQWlDQyxJQUFJLEVBQXJDO0FBQXlDekIsVUFBQUEsS0FBSyxJQUFJbkQsTUFBVDtBQUF6QztBQUNEO0FBQ0Y7O0FBRUQsV0FBT21ELEtBQVA7QUFDRCxHOztTQUVEbkIsUSxHQUFBLGtCQUFVZCxJQUFWLEVBQWdCYSxJQUFoQixFQUFzQjtBQUNwQixRQUFJb0IsS0FBSyxHQUFHakMsSUFBSSxDQUFDYSxJQUFELENBQWhCO0FBQ0EsUUFBSU4sR0FBRyxHQUFHUCxJQUFJLENBQUNJLElBQUwsQ0FBVVMsSUFBVixDQUFWOztBQUNBLFFBQUlOLEdBQUcsSUFBSUEsR0FBRyxDQUFDMEIsS0FBSixLQUFjQSxLQUF6QixFQUFnQztBQUM5QixhQUFPMUIsR0FBRyxDQUFDQSxHQUFYO0FBQ0Q7O0FBRUQsV0FBTzBCLEtBQVA7QUFDRCxHOzs7OztlQUdZcEMsVyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IERFRkFVTFRfUkFXID0ge1xuICBjb2xvbjogJzogJyxcbiAgaW5kZW50OiAnICAgICcsXG4gIGJlZm9yZURlY2w6ICdcXG4nLFxuICBiZWZvcmVSdWxlOiAnXFxuJyxcbiAgYmVmb3JlT3BlbjogJyAnLFxuICBiZWZvcmVDbG9zZTogJ1xcbicsXG4gIGJlZm9yZUNvbW1lbnQ6ICdcXG4nLFxuICBhZnRlcjogJ1xcbicsXG4gIGVtcHR5Qm9keTogJycsXG4gIGNvbW1lbnRMZWZ0OiAnICcsXG4gIGNvbW1lbnRSaWdodDogJyAnLFxuICBzZW1pY29sb246IGZhbHNlXG59XG5cbmZ1bmN0aW9uIGNhcGl0YWxpemUgKHN0cikge1xuICByZXR1cm4gc3RyWzBdLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSlcbn1cblxuY2xhc3MgU3RyaW5naWZpZXIge1xuICBjb25zdHJ1Y3RvciAoYnVpbGRlcikge1xuICAgIHRoaXMuYnVpbGRlciA9IGJ1aWxkZXJcbiAgfVxuXG4gIHN0cmluZ2lmeSAobm9kZSwgc2VtaWNvbG9uKSB7XG4gICAgdGhpc1tub2RlLnR5cGVdKG5vZGUsIHNlbWljb2xvbilcbiAgfVxuXG4gIHJvb3QgKG5vZGUpIHtcbiAgICB0aGlzLmJvZHkobm9kZSlcbiAgICBpZiAobm9kZS5yYXdzLmFmdGVyKSB0aGlzLmJ1aWxkZXIobm9kZS5yYXdzLmFmdGVyKVxuICB9XG5cbiAgY29tbWVudCAobm9kZSkge1xuICAgIGxldCBsZWZ0ID0gdGhpcy5yYXcobm9kZSwgJ2xlZnQnLCAnY29tbWVudExlZnQnKVxuICAgIGxldCByaWdodCA9IHRoaXMucmF3KG5vZGUsICdyaWdodCcsICdjb21tZW50UmlnaHQnKVxuICAgIHRoaXMuYnVpbGRlcignLyonICsgbGVmdCArIG5vZGUudGV4dCArIHJpZ2h0ICsgJyovJywgbm9kZSlcbiAgfVxuXG4gIGRlY2wgKG5vZGUsIHNlbWljb2xvbikge1xuICAgIGxldCBiZXR3ZWVuID0gdGhpcy5yYXcobm9kZSwgJ2JldHdlZW4nLCAnY29sb24nKVxuICAgIGxldCBzdHJpbmcgPSBub2RlLnByb3AgKyBiZXR3ZWVuICsgdGhpcy5yYXdWYWx1ZShub2RlLCAndmFsdWUnKVxuXG4gICAgaWYgKG5vZGUuaW1wb3J0YW50KSB7XG4gICAgICBzdHJpbmcgKz0gbm9kZS5yYXdzLmltcG9ydGFudCB8fCAnICFpbXBvcnRhbnQnXG4gICAgfVxuXG4gICAgaWYgKHNlbWljb2xvbikgc3RyaW5nICs9ICc7J1xuICAgIHRoaXMuYnVpbGRlcihzdHJpbmcsIG5vZGUpXG4gIH1cblxuICBydWxlIChub2RlKSB7XG4gICAgdGhpcy5ibG9jayhub2RlLCB0aGlzLnJhd1ZhbHVlKG5vZGUsICdzZWxlY3RvcicpKVxuICAgIGlmIChub2RlLnJhd3Mub3duU2VtaWNvbG9uKSB7XG4gICAgICB0aGlzLmJ1aWxkZXIobm9kZS5yYXdzLm93blNlbWljb2xvbiwgbm9kZSwgJ2VuZCcpXG4gICAgfVxuICB9XG5cbiAgYXRydWxlIChub2RlLCBzZW1pY29sb24pIHtcbiAgICBsZXQgbmFtZSA9ICdAJyArIG5vZGUubmFtZVxuICAgIGxldCBwYXJhbXMgPSBub2RlLnBhcmFtcyA/IHRoaXMucmF3VmFsdWUobm9kZSwgJ3BhcmFtcycpIDogJydcblxuICAgIGlmICh0eXBlb2Ygbm9kZS5yYXdzLmFmdGVyTmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIG5hbWUgKz0gbm9kZS5yYXdzLmFmdGVyTmFtZVxuICAgIH0gZWxzZSBpZiAocGFyYW1zKSB7XG4gICAgICBuYW1lICs9ICcgJ1xuICAgIH1cblxuICAgIGlmIChub2RlLm5vZGVzKSB7XG4gICAgICB0aGlzLmJsb2NrKG5vZGUsIG5hbWUgKyBwYXJhbXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBlbmQgPSAobm9kZS5yYXdzLmJldHdlZW4gfHwgJycpICsgKHNlbWljb2xvbiA/ICc7JyA6ICcnKVxuICAgICAgdGhpcy5idWlsZGVyKG5hbWUgKyBwYXJhbXMgKyBlbmQsIG5vZGUpXG4gICAgfVxuICB9XG5cbiAgYm9keSAobm9kZSkge1xuICAgIGxldCBsYXN0ID0gbm9kZS5ub2Rlcy5sZW5ndGggLSAxXG4gICAgd2hpbGUgKGxhc3QgPiAwKSB7XG4gICAgICBpZiAobm9kZS5ub2Rlc1tsYXN0XS50eXBlICE9PSAnY29tbWVudCcpIGJyZWFrXG4gICAgICBsYXN0IC09IDFcbiAgICB9XG5cbiAgICBsZXQgc2VtaWNvbG9uID0gdGhpcy5yYXcobm9kZSwgJ3NlbWljb2xvbicpXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLm5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY2hpbGQgPSBub2RlLm5vZGVzW2ldXG4gICAgICBsZXQgYmVmb3JlID0gdGhpcy5yYXcoY2hpbGQsICdiZWZvcmUnKVxuICAgICAgaWYgKGJlZm9yZSkgdGhpcy5idWlsZGVyKGJlZm9yZSlcbiAgICAgIHRoaXMuc3RyaW5naWZ5KGNoaWxkLCBsYXN0ICE9PSBpIHx8IHNlbWljb2xvbilcbiAgICB9XG4gIH1cblxuICBibG9jayAobm9kZSwgc3RhcnQpIHtcbiAgICBsZXQgYmV0d2VlbiA9IHRoaXMucmF3KG5vZGUsICdiZXR3ZWVuJywgJ2JlZm9yZU9wZW4nKVxuICAgIHRoaXMuYnVpbGRlcihzdGFydCArIGJldHdlZW4gKyAneycsIG5vZGUsICdzdGFydCcpXG5cbiAgICBsZXQgYWZ0ZXJcbiAgICBpZiAobm9kZS5ub2RlcyAmJiBub2RlLm5vZGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5ib2R5KG5vZGUpXG4gICAgICBhZnRlciA9IHRoaXMucmF3KG5vZGUsICdhZnRlcicpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyID0gdGhpcy5yYXcobm9kZSwgJ2FmdGVyJywgJ2VtcHR5Qm9keScpXG4gICAgfVxuXG4gICAgaWYgKGFmdGVyKSB0aGlzLmJ1aWxkZXIoYWZ0ZXIpXG4gICAgdGhpcy5idWlsZGVyKCd9Jywgbm9kZSwgJ2VuZCcpXG4gIH1cblxuICByYXcgKG5vZGUsIG93biwgZGV0ZWN0KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgaWYgKCFkZXRlY3QpIGRldGVjdCA9IG93blxuXG4gICAgLy8gQWxyZWFkeSBoYWRcbiAgICBpZiAob3duKSB7XG4gICAgICB2YWx1ZSA9IG5vZGUucmF3c1tvd25dXG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG4gICAgbGV0IHBhcmVudCA9IG5vZGUucGFyZW50XG5cbiAgICAvLyBIYWNrIGZvciBmaXJzdCBydWxlIGluIENTU1xuICAgIGlmIChkZXRlY3QgPT09ICdiZWZvcmUnKSB7XG4gICAgICBpZiAoIXBhcmVudCB8fCAocGFyZW50LnR5cGUgPT09ICdyb290JyAmJiBwYXJlbnQuZmlyc3QgPT09IG5vZGUpKSB7XG4gICAgICAgIHJldHVybiAnJ1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZsb2F0aW5nIGNoaWxkIHdpdGhvdXQgcGFyZW50XG4gICAgaWYgKCFwYXJlbnQpIHJldHVybiBERUZBVUxUX1JBV1tkZXRlY3RdXG5cbiAgICAvLyBEZXRlY3Qgc3R5bGUgYnkgb3RoZXIgbm9kZXNcbiAgICBsZXQgcm9vdCA9IG5vZGUucm9vdCgpXG4gICAgaWYgKCFyb290LnJhd0NhY2hlKSByb290LnJhd0NhY2hlID0geyB9XG4gICAgaWYgKHR5cGVvZiByb290LnJhd0NhY2hlW2RldGVjdF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gcm9vdC5yYXdDYWNoZVtkZXRlY3RdXG4gICAgfVxuXG4gICAgaWYgKGRldGVjdCA9PT0gJ2JlZm9yZScgfHwgZGV0ZWN0ID09PSAnYWZ0ZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5iZWZvcmVBZnRlcihub2RlLCBkZXRlY3QpXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBtZXRob2QgPSAncmF3JyArIGNhcGl0YWxpemUoZGV0ZWN0KVxuICAgICAgaWYgKHRoaXNbbWV0aG9kXSkge1xuICAgICAgICB2YWx1ZSA9IHRoaXNbbWV0aG9kXShyb290LCBub2RlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgICAgIHZhbHVlID0gaS5yYXdzW293bl1cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHZhbHVlID0gREVGQVVMVF9SQVdbZGV0ZWN0XVxuXG4gICAgcm9vdC5yYXdDYWNoZVtkZXRlY3RdID0gdmFsdWVcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd1NlbWljb2xvbiAocm9vdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2FsayhpID0+IHtcbiAgICAgIGlmIChpLm5vZGVzICYmIGkubm9kZXMubGVuZ3RoICYmIGkubGFzdC50eXBlID09PSAnZGVjbCcpIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3Muc2VtaWNvbG9uXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmF3RW1wdHlCb2R5IChyb290KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgaWYgKGkubm9kZXMgJiYgaS5ub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3MuYWZ0ZXJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdJbmRlbnQgKHJvb3QpIHtcbiAgICBpZiAocm9vdC5yYXdzLmluZGVudCkgcmV0dXJuIHJvb3QucmF3cy5pbmRlbnRcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGsoaSA9PiB7XG4gICAgICBsZXQgcCA9IGkucGFyZW50XG4gICAgICBpZiAocCAmJiBwICE9PSByb290ICYmIHAucGFyZW50ICYmIHAucGFyZW50ID09PSByb290KSB7XG4gICAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmJlZm9yZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBsZXQgcGFydHMgPSBpLnJhd3MuYmVmb3JlLnNwbGl0KCdcXG4nKVxuICAgICAgICAgIHZhbHVlID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV1cbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdCZWZvcmVDb21tZW50IChyb290LCBub2RlKSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrQ29tbWVudHMoaSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGkucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHZhbHVlID0gaS5yYXdzLmJlZm9yZVxuICAgICAgICBpZiAodmFsdWUuaW5kZXhPZignXFxuJykgIT09IC0xKSB7XG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5yYXcobm9kZSwgbnVsbCwgJ2JlZm9yZURlY2wnKVxuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXHNdL2csICcnKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0JlZm9yZURlY2wgKHJvb3QsIG5vZGUpIHtcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGtEZWNscyhpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmJlZm9yZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3MuYmVmb3JlXG4gICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEpIHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxuXSskLywgJycpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlUnVsZScpXG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcc10vZywgJycpXG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmF3QmVmb3JlUnVsZSAocm9vdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2FsayhpID0+IHtcbiAgICAgIGlmIChpLm5vZGVzICYmIChpLnBhcmVudCAhPT0gcm9vdCB8fCByb290LmZpcnN0ICE9PSBpKSkge1xuICAgICAgICBpZiAodHlwZW9mIGkucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgdmFsdWUgPSBpLnJhd3MuYmVmb3JlXG4gICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHZhbHVlKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0JlZm9yZUNsb3NlIChyb290KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgaWYgKGkubm9kZXMgJiYgaS5ub2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmFmdGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmFmdGVyXG4gICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHZhbHVlKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0JlZm9yZU9wZW4gKHJvb3QpIHtcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGsoaSA9PiB7XG4gICAgICBpZiAoaS50eXBlICE9PSAnZGVjbCcpIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3MuYmV0d2VlblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0NvbG9uIChyb290KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrRGVjbHMoaSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGkucmF3cy5iZXR3ZWVuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB2YWx1ZSA9IGkucmF3cy5iZXR3ZWVuLnJlcGxhY2UoL1teXFxzOl0vZywgJycpXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBiZWZvcmVBZnRlciAobm9kZSwgZGV0ZWN0KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2RlY2wnKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVEZWNsJylcbiAgICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVDb21tZW50JylcbiAgICB9IGVsc2UgaWYgKGRldGVjdCA9PT0gJ2JlZm9yZScpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5yYXcobm9kZSwgbnVsbCwgJ2JlZm9yZVJ1bGUnKVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVDbG9zZScpXG4gICAgfVxuXG4gICAgbGV0IGJ1ZiA9IG5vZGUucGFyZW50XG4gICAgbGV0IGRlcHRoID0gMFxuICAgIHdoaWxlIChidWYgJiYgYnVmLnR5cGUgIT09ICdyb290Jykge1xuICAgICAgZGVwdGggKz0gMVxuICAgICAgYnVmID0gYnVmLnBhcmVudFxuICAgIH1cblxuICAgIGlmICh2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEpIHtcbiAgICAgIGxldCBpbmRlbnQgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnaW5kZW50JylcbiAgICAgIGlmIChpbmRlbnQubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IHN0ZXAgPSAwOyBzdGVwIDwgZGVwdGg7IHN0ZXArKykgdmFsdWUgKz0gaW5kZW50XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdWYWx1ZSAobm9kZSwgcHJvcCkge1xuICAgIGxldCB2YWx1ZSA9IG5vZGVbcHJvcF1cbiAgICBsZXQgcmF3ID0gbm9kZS5yYXdzW3Byb3BdXG4gICAgaWYgKHJhdyAmJiByYXcudmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gcmF3LnJhd1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0cmluZ2lmaWVyXG4iXSwiZmlsZSI6InN0cmluZ2lmaWVyLmpzIn0=
diff --git a/assets/node_modules/postcss/lib/stringify.js b/assets/node_modules/postcss/lib/stringify.js
deleted file mode 100644
index 6629ec3..0000000
--- a/assets/node_modules/postcss/lib/stringify.js
+++ /dev/null
@@ -1,18 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _stringifier = _interopRequireDefault(require("./stringifier"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function stringify(node, builder) {
- var str = new _stringifier.default(builder);
- str.stringify(node);
-}
-
-var _default = stringify;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmeS5lczYiXSwibmFtZXMiOlsic3RyaW5naWZ5Iiwibm9kZSIsImJ1aWxkZXIiLCJzdHIiLCJTdHJpbmdpZmllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7OztBQUVBLFNBQVNBLFNBQVQsQ0FBb0JDLElBQXBCLEVBQTBCQyxPQUExQixFQUFtQztBQUNqQyxNQUFJQyxHQUFHLEdBQUcsSUFBSUMsb0JBQUosQ0FBZ0JGLE9BQWhCLENBQVY7QUFDQUMsRUFBQUEsR0FBRyxDQUFDSCxTQUFKLENBQWNDLElBQWQ7QUFDRDs7ZUFFY0QsUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTdHJpbmdpZmllciBmcm9tICcuL3N0cmluZ2lmaWVyJ1xuXG5mdW5jdGlvbiBzdHJpbmdpZnkgKG5vZGUsIGJ1aWxkZXIpIHtcbiAgbGV0IHN0ciA9IG5ldyBTdHJpbmdpZmllcihidWlsZGVyKVxuICBzdHIuc3RyaW5naWZ5KG5vZGUpXG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0cmluZ2lmeVxuIl0sImZpbGUiOiJzdHJpbmdpZnkuanMifQ==
diff --git a/assets/node_modules/postcss/lib/terminal-highlight.js b/assets/node_modules/postcss/lib/terminal-highlight.js
deleted file mode 100644
index 78868ec..0000000
--- a/assets/node_modules/postcss/lib/terminal-highlight.js
+++ /dev/null
@@ -1,84 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _chalk = _interopRequireDefault(require("chalk"));
-
-var _tokenize = _interopRequireDefault(require("./tokenize"));
-
-var _input = _interopRequireDefault(require("./input"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var HIGHLIGHT_THEME = {
- 'brackets': _chalk.default.cyan,
- 'at-word': _chalk.default.cyan,
- 'comment': _chalk.default.gray,
- 'string': _chalk.default.green,
- 'class': _chalk.default.yellow,
- 'call': _chalk.default.cyan,
- 'hash': _chalk.default.magenta,
- '(': _chalk.default.cyan,
- ')': _chalk.default.cyan,
- '{': _chalk.default.yellow,
- '}': _chalk.default.yellow,
- '[': _chalk.default.yellow,
- ']': _chalk.default.yellow,
- ':': _chalk.default.yellow,
- ';': _chalk.default.yellow
-};
-
-function getTokenType(_ref, processor) {
- var type = _ref[0],
- value = _ref[1];
-
- if (type === 'word') {
- if (value[0] === '.') {
- return 'class';
- }
-
- if (value[0] === '#') {
- return 'hash';
- }
- }
-
- if (!processor.endOfFile()) {
- var next = processor.nextToken();
- processor.back(next);
- if (next[0] === 'brackets' || next[0] === '(') return 'call';
- }
-
- return type;
-}
-
-function terminalHighlight(css) {
- var processor = (0, _tokenize.default)(new _input.default(css), {
- ignoreErrors: true
- });
- var result = '';
-
- var _loop = function _loop() {
- var token = processor.nextToken();
- var color = HIGHLIGHT_THEME[getTokenType(token, processor)];
-
- if (color) {
- result += token[1].split(/\r?\n/).map(function (i) {
- return color(i);
- }).join('\n');
- } else {
- result += token[1];
- }
- };
-
- while (!processor.endOfFile()) {
- _loop();
- }
-
- return result;
-}
-
-var _default = terminalHighlight;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlcm1pbmFsLWhpZ2hsaWdodC5lczYiXSwibmFtZXMiOlsiSElHSExJR0hUX1RIRU1FIiwiY2hhbGsiLCJjeWFuIiwiZ3JheSIsImdyZWVuIiwieWVsbG93IiwibWFnZW50YSIsImdldFRva2VuVHlwZSIsInByb2Nlc3NvciIsInR5cGUiLCJ2YWx1ZSIsImVuZE9mRmlsZSIsIm5leHQiLCJuZXh0VG9rZW4iLCJiYWNrIiwidGVybWluYWxIaWdobGlnaHQiLCJjc3MiLCJJbnB1dCIsImlnbm9yZUVycm9ycyIsInJlc3VsdCIsInRva2VuIiwiY29sb3IiLCJzcGxpdCIsIm1hcCIsImkiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUVBOztBQUNBOzs7O0FBRUEsSUFBTUEsZUFBZSxHQUFHO0FBQ3RCLGNBQVlDLGVBQU1DLElBREk7QUFFdEIsYUFBV0QsZUFBTUMsSUFGSztBQUd0QixhQUFXRCxlQUFNRSxJQUhLO0FBSXRCLFlBQVVGLGVBQU1HLEtBSk07QUFLdEIsV0FBU0gsZUFBTUksTUFMTztBQU10QixVQUFRSixlQUFNQyxJQU5RO0FBT3RCLFVBQVFELGVBQU1LLE9BUFE7QUFRdEIsT0FBS0wsZUFBTUMsSUFSVztBQVN0QixPQUFLRCxlQUFNQyxJQVRXO0FBVXRCLE9BQUtELGVBQU1JLE1BVlc7QUFXdEIsT0FBS0osZUFBTUksTUFYVztBQVl0QixPQUFLSixlQUFNSSxNQVpXO0FBYXRCLE9BQUtKLGVBQU1JLE1BYlc7QUFjdEIsT0FBS0osZUFBTUksTUFkVztBQWV0QixPQUFLSixlQUFNSTtBQWZXLENBQXhCOztBQWtCQSxTQUFTRSxZQUFULE9BQXNDQyxTQUF0QyxFQUFpRDtBQUFBLE1BQXpCQyxJQUF5QjtBQUFBLE1BQW5CQyxLQUFtQjs7QUFDL0MsTUFBSUQsSUFBSSxLQUFLLE1BQWIsRUFBcUI7QUFDbkIsUUFBSUMsS0FBSyxDQUFDLENBQUQsQ0FBTCxLQUFhLEdBQWpCLEVBQXNCO0FBQ3BCLGFBQU8sT0FBUDtBQUNEOztBQUNELFFBQUlBLEtBQUssQ0FBQyxDQUFELENBQUwsS0FBYSxHQUFqQixFQUFzQjtBQUNwQixhQUFPLE1BQVA7QUFDRDtBQUNGOztBQUVELE1BQUksQ0FBQ0YsU0FBUyxDQUFDRyxTQUFWLEVBQUwsRUFBNEI7QUFDMUIsUUFBSUMsSUFBSSxHQUFHSixTQUFTLENBQUNLLFNBQVYsRUFBWDtBQUNBTCxJQUFBQSxTQUFTLENBQUNNLElBQVYsQ0FBZUYsSUFBZjtBQUNBLFFBQUlBLElBQUksQ0FBQyxDQUFELENBQUosS0FBWSxVQUFaLElBQTBCQSxJQUFJLENBQUMsQ0FBRCxDQUFKLEtBQVksR0FBMUMsRUFBK0MsT0FBTyxNQUFQO0FBQ2hEOztBQUVELFNBQU9ILElBQVA7QUFDRDs7QUFFRCxTQUFTTSxpQkFBVCxDQUE0QkMsR0FBNUIsRUFBaUM7QUFDL0IsTUFBSVIsU0FBUyxHQUFHLHVCQUFVLElBQUlTLGNBQUosQ0FBVUQsR0FBVixDQUFWLEVBQTBCO0FBQUVFLElBQUFBLFlBQVksRUFBRTtBQUFoQixHQUExQixDQUFoQjtBQUNBLE1BQUlDLE1BQU0sR0FBRyxFQUFiOztBQUYrQjtBQUk3QixRQUFJQyxLQUFLLEdBQUdaLFNBQVMsQ0FBQ0ssU0FBVixFQUFaO0FBQ0EsUUFBSVEsS0FBSyxHQUFHckIsZUFBZSxDQUFDTyxZQUFZLENBQUNhLEtBQUQsRUFBUVosU0FBUixDQUFiLENBQTNCOztBQUNBLFFBQUlhLEtBQUosRUFBVztBQUNURixNQUFBQSxNQUFNLElBQUlDLEtBQUssQ0FBQyxDQUFELENBQUwsQ0FBU0UsS0FBVCxDQUFlLE9BQWYsRUFDUEMsR0FETyxDQUNILFVBQUFDLENBQUM7QUFBQSxlQUFJSCxLQUFLLENBQUNHLENBQUQsQ0FBVDtBQUFBLE9BREUsRUFFUEMsSUFGTyxDQUVGLElBRkUsQ0FBVjtBQUdELEtBSkQsTUFJTztBQUNMTixNQUFBQSxNQUFNLElBQUlDLEtBQUssQ0FBQyxDQUFELENBQWY7QUFDRDtBQVo0Qjs7QUFHL0IsU0FBTyxDQUFDWixTQUFTLENBQUNHLFNBQVYsRUFBUixFQUErQjtBQUFBO0FBVTlCOztBQUNELFNBQU9RLE1BQVA7QUFDRDs7ZUFFY0osaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnXG5cbmltcG9ydCB0b2tlbml6ZXIgZnJvbSAnLi90b2tlbml6ZSdcbmltcG9ydCBJbnB1dCBmcm9tICcuL2lucHV0J1xuXG5jb25zdCBISUdITElHSFRfVEhFTUUgPSB7XG4gICdicmFja2V0cyc6IGNoYWxrLmN5YW4sXG4gICdhdC13b3JkJzogY2hhbGsuY3lhbixcbiAgJ2NvbW1lbnQnOiBjaGFsay5ncmF5LFxuICAnc3RyaW5nJzogY2hhbGsuZ3JlZW4sXG4gICdjbGFzcyc6IGNoYWxrLnllbGxvdyxcbiAgJ2NhbGwnOiBjaGFsay5jeWFuLFxuICAnaGFzaCc6IGNoYWxrLm1hZ2VudGEsXG4gICcoJzogY2hhbGsuY3lhbixcbiAgJyknOiBjaGFsay5jeWFuLFxuICAneyc6IGNoYWxrLnllbGxvdyxcbiAgJ30nOiBjaGFsay55ZWxsb3csXG4gICdbJzogY2hhbGsueWVsbG93LFxuICAnXSc6IGNoYWxrLnllbGxvdyxcbiAgJzonOiBjaGFsay55ZWxsb3csXG4gICc7JzogY2hhbGsueWVsbG93XG59XG5cbmZ1bmN0aW9uIGdldFRva2VuVHlwZSAoW3R5cGUsIHZhbHVlXSwgcHJvY2Vzc29yKSB7XG4gIGlmICh0eXBlID09PSAnd29yZCcpIHtcbiAgICBpZiAodmFsdWVbMF0gPT09ICcuJykge1xuICAgICAgcmV0dXJuICdjbGFzcydcbiAgICB9XG4gICAgaWYgKHZhbHVlWzBdID09PSAnIycpIHtcbiAgICAgIHJldHVybiAnaGFzaCdcbiAgICB9XG4gIH1cblxuICBpZiAoIXByb2Nlc3Nvci5lbmRPZkZpbGUoKSkge1xuICAgIGxldCBuZXh0ID0gcHJvY2Vzc29yLm5leHRUb2tlbigpXG4gICAgcHJvY2Vzc29yLmJhY2sobmV4dClcbiAgICBpZiAobmV4dFswXSA9PT0gJ2JyYWNrZXRzJyB8fCBuZXh0WzBdID09PSAnKCcpIHJldHVybiAnY2FsbCdcbiAgfVxuXG4gIHJldHVybiB0eXBlXG59XG5cbmZ1bmN0aW9uIHRlcm1pbmFsSGlnaGxpZ2h0IChjc3MpIHtcbiAgbGV0IHByb2Nlc3NvciA9IHRva2VuaXplcihuZXcgSW5wdXQoY3NzKSwgeyBpZ25vcmVFcnJvcnM6IHRydWUgfSlcbiAgbGV0IHJlc3VsdCA9ICcnXG4gIHdoaWxlICghcHJvY2Vzc29yLmVuZE9mRmlsZSgpKSB7XG4gICAgbGV0IHRva2VuID0gcHJvY2Vzc29yLm5leHRUb2tlbigpXG4gICAgbGV0IGNvbG9yID0gSElHSExJR0hUX1RIRU1FW2dldFRva2VuVHlwZSh0b2tlbiwgcHJvY2Vzc29yKV1cbiAgICBpZiAoY29sb3IpIHtcbiAgICAgIHJlc3VsdCArPSB0b2tlblsxXS5zcGxpdCgvXFxyP1xcbi8pXG4gICAgICAgIC5tYXAoaSA9PiBjb2xvcihpKSlcbiAgICAgICAgLmpvaW4oJ1xcbicpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCArPSB0b2tlblsxXVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRlcm1pbmFsSGlnaGxpZ2h0XG4iXSwiZmlsZSI6InRlcm1pbmFsLWhpZ2hsaWdodC5qcyJ9
diff --git a/assets/node_modules/postcss/lib/tokenize.js b/assets/node_modules/postcss/lib/tokenize.js
deleted file mode 100644
index 5b556bf..0000000
--- a/assets/node_modules/postcss/lib/tokenize.js
+++ /dev/null
@@ -1,295 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = tokenizer;
-var SINGLE_QUOTE = '\''.charCodeAt(0);
-var DOUBLE_QUOTE = '"'.charCodeAt(0);
-var BACKSLASH = '\\'.charCodeAt(0);
-var SLASH = '/'.charCodeAt(0);
-var NEWLINE = '\n'.charCodeAt(0);
-var SPACE = ' '.charCodeAt(0);
-var FEED = '\f'.charCodeAt(0);
-var TAB = '\t'.charCodeAt(0);
-var CR = '\r'.charCodeAt(0);
-var OPEN_SQUARE = '['.charCodeAt(0);
-var CLOSE_SQUARE = ']'.charCodeAt(0);
-var OPEN_PARENTHESES = '('.charCodeAt(0);
-var CLOSE_PARENTHESES = ')'.charCodeAt(0);
-var OPEN_CURLY = '{'.charCodeAt(0);
-var CLOSE_CURLY = '}'.charCodeAt(0);
-var SEMICOLON = ';'.charCodeAt(0);
-var ASTERISK = '*'.charCodeAt(0);
-var COLON = ':'.charCodeAt(0);
-var AT = '@'.charCodeAt(0);
-var RE_AT_END = /[ \n\t\r\f{}()'"\\;/[\]#]/g;
-var RE_WORD_END = /[ \n\t\r\f(){}:;@!'"\\\][#]|\/(?=\*)/g;
-var RE_BAD_BRACKET = /.[\\/("'\n]/;
-var RE_HEX_ESCAPE = /[a-f0-9]/i;
-
-function tokenizer(input, options) {
- if (options === void 0) {
- options = {};
- }
-
- var css = input.css.valueOf();
- var ignore = options.ignoreErrors;
- var code, next, quote, lines, last, content, escape;
- var nextLine, nextOffset, escaped, escapePos, prev, n, currentToken;
- var length = css.length;
- var offset = -1;
- var line = 1;
- var pos = 0;
- var buffer = [];
- var returned = [];
-
- function position() {
- return pos;
- }
-
- function unclosed(what) {
- throw input.error('Unclosed ' + what, line, pos - offset);
- }
-
- function endOfFile() {
- return returned.length === 0 && pos >= length;
- }
-
- function nextToken(opts) {
- if (returned.length) return returned.pop();
- if (pos >= length) return;
- var ignoreUnclosed = opts ? opts.ignoreUnclosed : false;
- code = css.charCodeAt(pos);
-
- if (code === NEWLINE || code === FEED || code === CR && css.charCodeAt(pos + 1) !== NEWLINE) {
- offset = pos;
- line += 1;
- }
-
- switch (code) {
- case NEWLINE:
- case SPACE:
- case TAB:
- case CR:
- case FEED:
- next = pos;
-
- do {
- next += 1;
- code = css.charCodeAt(next);
-
- if (code === NEWLINE) {
- offset = next;
- line += 1;
- }
- } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);
-
- currentToken = ['space', css.slice(pos, next)];
- pos = next - 1;
- break;
-
- case OPEN_SQUARE:
- case CLOSE_SQUARE:
- case OPEN_CURLY:
- case CLOSE_CURLY:
- case COLON:
- case SEMICOLON:
- case CLOSE_PARENTHESES:
- var controlChar = String.fromCharCode(code);
- currentToken = [controlChar, controlChar, line, pos - offset];
- break;
-
- case OPEN_PARENTHESES:
- prev = buffer.length ? buffer.pop()[1] : '';
- n = css.charCodeAt(pos + 1);
-
- if (prev === 'url' && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) {
- next = pos;
-
- do {
- escaped = false;
- next = css.indexOf(')', next + 1);
-
- if (next === -1) {
- if (ignore || ignoreUnclosed) {
- next = pos;
- break;
- } else {
- unclosed('bracket');
- }
- }
-
- escapePos = next;
-
- while (css.charCodeAt(escapePos - 1) === BACKSLASH) {
- escapePos -= 1;
- escaped = !escaped;
- }
- } while (escaped);
-
- currentToken = ['brackets', css.slice(pos, next + 1), line, pos - offset, line, next - offset];
- pos = next;
- } else {
- next = css.indexOf(')', pos + 1);
- content = css.slice(pos, next + 1);
-
- if (next === -1 || RE_BAD_BRACKET.test(content)) {
- currentToken = ['(', '(', line, pos - offset];
- } else {
- currentToken = ['brackets', content, line, pos - offset, line, next - offset];
- pos = next;
- }
- }
-
- break;
-
- case SINGLE_QUOTE:
- case DOUBLE_QUOTE:
- quote = code === SINGLE_QUOTE ? '\'' : '"';
- next = pos;
-
- do {
- escaped = false;
- next = css.indexOf(quote, next + 1);
-
- if (next === -1) {
- if (ignore || ignoreUnclosed) {
- next = pos + 1;
- break;
- } else {
- unclosed('string');
- }
- }
-
- escapePos = next;
-
- while (css.charCodeAt(escapePos - 1) === BACKSLASH) {
- escapePos -= 1;
- escaped = !escaped;
- }
- } while (escaped);
-
- content = css.slice(pos, next + 1);
- lines = content.split('\n');
- last = lines.length - 1;
-
- if (last > 0) {
- nextLine = line + last;
- nextOffset = next - lines[last].length;
- } else {
- nextLine = line;
- nextOffset = offset;
- }
-
- currentToken = ['string', css.slice(pos, next + 1), line, pos - offset, nextLine, next - nextOffset];
- offset = nextOffset;
- line = nextLine;
- pos = next;
- break;
-
- case AT:
- RE_AT_END.lastIndex = pos + 1;
- RE_AT_END.test(css);
-
- if (RE_AT_END.lastIndex === 0) {
- next = css.length - 1;
- } else {
- next = RE_AT_END.lastIndex - 2;
- }
-
- currentToken = ['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];
- pos = next;
- break;
-
- case BACKSLASH:
- next = pos;
- escape = true;
-
- while (css.charCodeAt(next + 1) === BACKSLASH) {
- next += 1;
- escape = !escape;
- }
-
- code = css.charCodeAt(next + 1);
-
- if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {
- next += 1;
-
- if (RE_HEX_ESCAPE.test(css.charAt(next))) {
- while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {
- next += 1;
- }
-
- if (css.charCodeAt(next + 1) === SPACE) {
- next += 1;
- }
- }
- }
-
- currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];
- pos = next;
- break;
-
- default:
- if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {
- next = css.indexOf('*/', pos + 2) + 1;
-
- if (next === 0) {
- if (ignore || ignoreUnclosed) {
- next = css.length;
- } else {
- unclosed('comment');
- }
- }
-
- content = css.slice(pos, next + 1);
- lines = content.split('\n');
- last = lines.length - 1;
-
- if (last > 0) {
- nextLine = line + last;
- nextOffset = next - lines[last].length;
- } else {
- nextLine = line;
- nextOffset = offset;
- }
-
- currentToken = ['comment', content, line, pos - offset, nextLine, next - nextOffset];
- offset = nextOffset;
- line = nextLine;
- pos = next;
- } else {
- RE_WORD_END.lastIndex = pos + 1;
- RE_WORD_END.test(css);
-
- if (RE_WORD_END.lastIndex === 0) {
- next = css.length - 1;
- } else {
- next = RE_WORD_END.lastIndex - 2;
- }
-
- currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];
- buffer.push(currentToken);
- pos = next;
- }
-
- break;
- }
-
- pos++;
- return currentToken;
- }
-
- function back(token) {
- returned.push(token);
- }
-
- return {
- back: back,
- nextToken: nextToken,
- endOfFile: endOfFile,
- position: position
- };
-}
-
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2VuaXplLmVzNiJdLCJuYW1lcyI6WyJTSU5HTEVfUVVPVEUiLCJjaGFyQ29kZUF0IiwiRE9VQkxFX1FVT1RFIiwiQkFDS1NMQVNIIiwiU0xBU0giLCJORVdMSU5FIiwiU1BBQ0UiLCJGRUVEIiwiVEFCIiwiQ1IiLCJPUEVOX1NRVUFSRSIsIkNMT1NFX1NRVUFSRSIsIk9QRU5fUEFSRU5USEVTRVMiLCJDTE9TRV9QQVJFTlRIRVNFUyIsIk9QRU5fQ1VSTFkiLCJDTE9TRV9DVVJMWSIsIlNFTUlDT0xPTiIsIkFTVEVSSVNLIiwiQ09MT04iLCJBVCIsIlJFX0FUX0VORCIsIlJFX1dPUkRfRU5EIiwiUkVfQkFEX0JSQUNLRVQiLCJSRV9IRVhfRVNDQVBFIiwidG9rZW5pemVyIiwiaW5wdXQiLCJvcHRpb25zIiwiY3NzIiwidmFsdWVPZiIsImlnbm9yZSIsImlnbm9yZUVycm9ycyIsImNvZGUiLCJuZXh0IiwicXVvdGUiLCJsaW5lcyIsImxhc3QiLCJjb250ZW50IiwiZXNjYXBlIiwibmV4dExpbmUiLCJuZXh0T2Zmc2V0IiwiZXNjYXBlZCIsImVzY2FwZVBvcyIsInByZXYiLCJuIiwiY3VycmVudFRva2VuIiwibGVuZ3RoIiwib2Zmc2V0IiwibGluZSIsInBvcyIsImJ1ZmZlciIsInJldHVybmVkIiwicG9zaXRpb24iLCJ1bmNsb3NlZCIsIndoYXQiLCJlcnJvciIsImVuZE9mRmlsZSIsIm5leHRUb2tlbiIsIm9wdHMiLCJwb3AiLCJpZ25vcmVVbmNsb3NlZCIsInNsaWNlIiwiY29udHJvbENoYXIiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJpbmRleE9mIiwidGVzdCIsInNwbGl0IiwibGFzdEluZGV4IiwiY2hhckF0IiwicHVzaCIsImJhY2siLCJ0b2tlbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLElBQU1BLFlBQVksR0FBRyxLQUFLQyxVQUFMLENBQWdCLENBQWhCLENBQXJCO0FBQ0EsSUFBTUMsWUFBWSxHQUFHLElBQUlELFVBQUosQ0FBZSxDQUFmLENBQXJCO0FBQ0EsSUFBTUUsU0FBUyxHQUFHLEtBQUtGLFVBQUwsQ0FBZ0IsQ0FBaEIsQ0FBbEI7QUFDQSxJQUFNRyxLQUFLLEdBQUcsSUFBSUgsVUFBSixDQUFlLENBQWYsQ0FBZDtBQUNBLElBQU1JLE9BQU8sR0FBRyxLQUFLSixVQUFMLENBQWdCLENBQWhCLENBQWhCO0FBQ0EsSUFBTUssS0FBSyxHQUFHLElBQUlMLFVBQUosQ0FBZSxDQUFmLENBQWQ7QUFDQSxJQUFNTSxJQUFJLEdBQUcsS0FBS04sVUFBTCxDQUFnQixDQUFoQixDQUFiO0FBQ0EsSUFBTU8sR0FBRyxHQUFHLEtBQUtQLFVBQUwsQ0FBZ0IsQ0FBaEIsQ0FBWjtBQUNBLElBQU1RLEVBQUUsR0FBRyxLQUFLUixVQUFMLENBQWdCLENBQWhCLENBQVg7QUFDQSxJQUFNUyxXQUFXLEdBQUcsSUFBSVQsVUFBSixDQUFlLENBQWYsQ0FBcEI7QUFDQSxJQUFNVSxZQUFZLEdBQUcsSUFBSVYsVUFBSixDQUFlLENBQWYsQ0FBckI7QUFDQSxJQUFNVyxnQkFBZ0IsR0FBRyxJQUFJWCxVQUFKLENBQWUsQ0FBZixDQUF6QjtBQUNBLElBQU1ZLGlCQUFpQixHQUFHLElBQUlaLFVBQUosQ0FBZSxDQUFmLENBQTFCO0FBQ0EsSUFBTWEsVUFBVSxHQUFHLElBQUliLFVBQUosQ0FBZSxDQUFmLENBQW5CO0FBQ0EsSUFBTWMsV0FBVyxHQUFHLElBQUlkLFVBQUosQ0FBZSxDQUFmLENBQXBCO0FBQ0EsSUFBTWUsU0FBUyxHQUFHLElBQUlmLFVBQUosQ0FBZSxDQUFmLENBQWxCO0FBQ0EsSUFBTWdCLFFBQVEsR0FBRyxJQUFJaEIsVUFBSixDQUFlLENBQWYsQ0FBakI7QUFDQSxJQUFNaUIsS0FBSyxHQUFHLElBQUlqQixVQUFKLENBQWUsQ0FBZixDQUFkO0FBQ0EsSUFBTWtCLEVBQUUsR0FBRyxJQUFJbEIsVUFBSixDQUFlLENBQWYsQ0FBWDtBQUVBLElBQU1tQixTQUFTLEdBQUcsNEJBQWxCO0FBQ0EsSUFBTUMsV0FBVyxHQUFHLHVDQUFwQjtBQUNBLElBQU1DLGNBQWMsR0FBRyxhQUF2QjtBQUNBLElBQU1DLGFBQWEsR0FBRyxXQUF0Qjs7QUFFZSxTQUFTQyxTQUFULENBQW9CQyxLQUFwQixFQUEyQkMsT0FBM0IsRUFBeUM7QUFBQSxNQUFkQSxPQUFjO0FBQWRBLElBQUFBLE9BQWMsR0FBSixFQUFJO0FBQUE7O0FBQ3RELE1BQUlDLEdBQUcsR0FBR0YsS0FBSyxDQUFDRSxHQUFOLENBQVVDLE9BQVYsRUFBVjtBQUNBLE1BQUlDLE1BQU0sR0FBR0gsT0FBTyxDQUFDSSxZQUFyQjtBQUVBLE1BQUlDLElBQUosRUFBVUMsSUFBVixFQUFnQkMsS0FBaEIsRUFBdUJDLEtBQXZCLEVBQThCQyxJQUE5QixFQUFvQ0MsT0FBcEMsRUFBNkNDLE1BQTdDO0FBQ0EsTUFBSUMsUUFBSixFQUFjQyxVQUFkLEVBQTBCQyxPQUExQixFQUFtQ0MsU0FBbkMsRUFBOENDLElBQTlDLEVBQW9EQyxDQUFwRCxFQUF1REMsWUFBdkQ7QUFFQSxNQUFJQyxNQUFNLEdBQUdsQixHQUFHLENBQUNrQixNQUFqQjtBQUNBLE1BQUlDLE1BQU0sR0FBRyxDQUFDLENBQWQ7QUFDQSxNQUFJQyxJQUFJLEdBQUcsQ0FBWDtBQUNBLE1BQUlDLEdBQUcsR0FBRyxDQUFWO0FBQ0EsTUFBSUMsTUFBTSxHQUFHLEVBQWI7QUFDQSxNQUFJQyxRQUFRLEdBQUcsRUFBZjs7QUFFQSxXQUFTQyxRQUFULEdBQXFCO0FBQ25CLFdBQU9ILEdBQVA7QUFDRDs7QUFFRCxXQUFTSSxRQUFULENBQW1CQyxJQUFuQixFQUF5QjtBQUN2QixVQUFNNUIsS0FBSyxDQUFDNkIsS0FBTixDQUFZLGNBQWNELElBQTFCLEVBQWdDTixJQUFoQyxFQUFzQ0MsR0FBRyxHQUFHRixNQUE1QyxDQUFOO0FBQ0Q7O0FBRUQsV0FBU1MsU0FBVCxHQUFzQjtBQUNwQixXQUFPTCxRQUFRLENBQUNMLE1BQVQsS0FBb0IsQ0FBcEIsSUFBeUJHLEdBQUcsSUFBSUgsTUFBdkM7QUFDRDs7QUFFRCxXQUFTVyxTQUFULENBQW9CQyxJQUFwQixFQUEwQjtBQUN4QixRQUFJUCxRQUFRLENBQUNMLE1BQWIsRUFBcUIsT0FBT0ssUUFBUSxDQUFDUSxHQUFULEVBQVA7QUFDckIsUUFBSVYsR0FBRyxJQUFJSCxNQUFYLEVBQW1CO0FBRW5CLFFBQUljLGNBQWMsR0FBR0YsSUFBSSxHQUFHQSxJQUFJLENBQUNFLGNBQVIsR0FBeUIsS0FBbEQ7QUFFQTVCLElBQUFBLElBQUksR0FBR0osR0FBRyxDQUFDMUIsVUFBSixDQUFlK0MsR0FBZixDQUFQOztBQUNBLFFBQ0VqQixJQUFJLEtBQUsxQixPQUFULElBQW9CMEIsSUFBSSxLQUFLeEIsSUFBN0IsSUFDQ3dCLElBQUksS0FBS3RCLEVBQVQsSUFBZWtCLEdBQUcsQ0FBQzFCLFVBQUosQ0FBZStDLEdBQUcsR0FBRyxDQUFyQixNQUE0QjNDLE9BRjlDLEVBR0U7QUFDQXlDLE1BQUFBLE1BQU0sR0FBR0UsR0FBVDtBQUNBRCxNQUFBQSxJQUFJLElBQUksQ0FBUjtBQUNEOztBQUVELFlBQVFoQixJQUFSO0FBQ0UsV0FBSzFCLE9BQUw7QUFDQSxXQUFLQyxLQUFMO0FBQ0EsV0FBS0UsR0FBTDtBQUNBLFdBQUtDLEVBQUw7QUFDQSxXQUFLRixJQUFMO0FBQ0V5QixRQUFBQSxJQUFJLEdBQUdnQixHQUFQOztBQUNBLFdBQUc7QUFDRGhCLFVBQUFBLElBQUksSUFBSSxDQUFSO0FBQ0FELFVBQUFBLElBQUksR0FBR0osR0FBRyxDQUFDMUIsVUFBSixDQUFlK0IsSUFBZixDQUFQOztBQUNBLGNBQUlELElBQUksS0FBSzFCLE9BQWIsRUFBc0I7QUFDcEJ5QyxZQUFBQSxNQUFNLEdBQUdkLElBQVQ7QUFDQWUsWUFBQUEsSUFBSSxJQUFJLENBQVI7QUFDRDtBQUNGLFNBUEQsUUFRRWhCLElBQUksS0FBS3pCLEtBQVQsSUFDQXlCLElBQUksS0FBSzFCLE9BRFQsSUFFQTBCLElBQUksS0FBS3ZCLEdBRlQsSUFHQXVCLElBQUksS0FBS3RCLEVBSFQsSUFJQXNCLElBQUksS0FBS3hCLElBWlg7O0FBZUFxQyxRQUFBQSxZQUFZLEdBQUcsQ0FBQyxPQUFELEVBQVVqQixHQUFHLENBQUNpQyxLQUFKLENBQVVaLEdBQVYsRUFBZWhCLElBQWYsQ0FBVixDQUFmO0FBQ0FnQixRQUFBQSxHQUFHLEdBQUdoQixJQUFJLEdBQUcsQ0FBYjtBQUNBOztBQUVGLFdBQUt0QixXQUFMO0FBQ0EsV0FBS0MsWUFBTDtBQUNBLFdBQUtHLFVBQUw7QUFDQSxXQUFLQyxXQUFMO0FBQ0EsV0FBS0csS0FBTDtBQUNBLFdBQUtGLFNBQUw7QUFDQSxXQUFLSCxpQkFBTDtBQUNFLFlBQUlnRCxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsWUFBUCxDQUFvQmhDLElBQXBCLENBQWxCO0FBQ0FhLFFBQUFBLFlBQVksR0FBRyxDQUFDaUIsV0FBRCxFQUFjQSxXQUFkLEVBQTJCZCxJQUEzQixFQUFpQ0MsR0FBRyxHQUFHRixNQUF2QyxDQUFmO0FBQ0E7O0FBRUYsV0FBS2xDLGdCQUFMO0FBQ0U4QixRQUFBQSxJQUFJLEdBQUdPLE1BQU0sQ0FBQ0osTUFBUCxHQUFnQkksTUFBTSxDQUFDUyxHQUFQLEdBQWEsQ0FBYixDQUFoQixHQUFrQyxFQUF6QztBQUNBZixRQUFBQSxDQUFDLEdBQUdoQixHQUFHLENBQUMxQixVQUFKLENBQWUrQyxHQUFHLEdBQUcsQ0FBckIsQ0FBSjs7QUFDQSxZQUNFTixJQUFJLEtBQUssS0FBVCxJQUNBQyxDQUFDLEtBQUszQyxZQUROLElBQ3NCMkMsQ0FBQyxLQUFLekMsWUFENUIsSUFFQXlDLENBQUMsS0FBS3JDLEtBRk4sSUFFZXFDLENBQUMsS0FBS3RDLE9BRnJCLElBRWdDc0MsQ0FBQyxLQUFLbkMsR0FGdEMsSUFHQW1DLENBQUMsS0FBS3BDLElBSE4sSUFHY29DLENBQUMsS0FBS2xDLEVBSnRCLEVBS0U7QUFDQXVCLFVBQUFBLElBQUksR0FBR2dCLEdBQVA7O0FBQ0EsYUFBRztBQUNEUixZQUFBQSxPQUFPLEdBQUcsS0FBVjtBQUNBUixZQUFBQSxJQUFJLEdBQUdMLEdBQUcsQ0FBQ3FDLE9BQUosQ0FBWSxHQUFaLEVBQWlCaEMsSUFBSSxHQUFHLENBQXhCLENBQVA7O0FBQ0EsZ0JBQUlBLElBQUksS0FBSyxDQUFDLENBQWQsRUFBaUI7QUFDZixrQkFBSUgsTUFBTSxJQUFJOEIsY0FBZCxFQUE4QjtBQUM1QjNCLGdCQUFBQSxJQUFJLEdBQUdnQixHQUFQO0FBQ0E7QUFDRCxlQUhELE1BR087QUFDTEksZ0JBQUFBLFFBQVEsQ0FBQyxTQUFELENBQVI7QUFDRDtBQUNGOztBQUNEWCxZQUFBQSxTQUFTLEdBQUdULElBQVo7O0FBQ0EsbUJBQU9MLEdBQUcsQ0FBQzFCLFVBQUosQ0FBZXdDLFNBQVMsR0FBRyxDQUEzQixNQUFrQ3RDLFNBQXpDLEVBQW9EO0FBQ2xEc0MsY0FBQUEsU0FBUyxJQUFJLENBQWI7QUFDQUQsY0FBQUEsT0FBTyxHQUFHLENBQUNBLE9BQVg7QUFDRDtBQUNGLFdBaEJELFFBZ0JTQSxPQWhCVDs7QUFrQkFJLFVBQUFBLFlBQVksR0FBRyxDQUFDLFVBQUQsRUFBYWpCLEdBQUcsQ0FBQ2lDLEtBQUosQ0FBVVosR0FBVixFQUFlaEIsSUFBSSxHQUFHLENBQXRCLENBQWIsRUFDYmUsSUFEYSxFQUNQQyxHQUFHLEdBQUdGLE1BREMsRUFFYkMsSUFGYSxFQUVQZixJQUFJLEdBQUdjLE1BRkEsQ0FBZjtBQUtBRSxVQUFBQSxHQUFHLEdBQUdoQixJQUFOO0FBQ0QsU0EvQkQsTUErQk87QUFDTEEsVUFBQUEsSUFBSSxHQUFHTCxHQUFHLENBQUNxQyxPQUFKLENBQVksR0FBWixFQUFpQmhCLEdBQUcsR0FBRyxDQUF2QixDQUFQO0FBQ0FaLFVBQUFBLE9BQU8sR0FBR1QsR0FBRyxDQUFDaUMsS0FBSixDQUFVWixHQUFWLEVBQWVoQixJQUFJLEdBQUcsQ0FBdEIsQ0FBVjs7QUFFQSxjQUFJQSxJQUFJLEtBQUssQ0FBQyxDQUFWLElBQWVWLGNBQWMsQ0FBQzJDLElBQWYsQ0FBb0I3QixPQUFwQixDQUFuQixFQUFpRDtBQUMvQ1EsWUFBQUEsWUFBWSxHQUFHLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBV0csSUFBWCxFQUFpQkMsR0FBRyxHQUFHRixNQUF2QixDQUFmO0FBQ0QsV0FGRCxNQUVPO0FBQ0xGLFlBQUFBLFlBQVksR0FBRyxDQUFDLFVBQUQsRUFBYVIsT0FBYixFQUNiVyxJQURhLEVBQ1BDLEdBQUcsR0FBR0YsTUFEQyxFQUViQyxJQUZhLEVBRVBmLElBQUksR0FBR2MsTUFGQSxDQUFmO0FBSUFFLFlBQUFBLEdBQUcsR0FBR2hCLElBQU47QUFDRDtBQUNGOztBQUVEOztBQUVGLFdBQUtoQyxZQUFMO0FBQ0EsV0FBS0UsWUFBTDtBQUNFK0IsUUFBQUEsS0FBSyxHQUFHRixJQUFJLEtBQUsvQixZQUFULEdBQXdCLElBQXhCLEdBQStCLEdBQXZDO0FBQ0FnQyxRQUFBQSxJQUFJLEdBQUdnQixHQUFQOztBQUNBLFdBQUc7QUFDRFIsVUFBQUEsT0FBTyxHQUFHLEtBQVY7QUFDQVIsVUFBQUEsSUFBSSxHQUFHTCxHQUFHLENBQUNxQyxPQUFKLENBQVkvQixLQUFaLEVBQW1CRCxJQUFJLEdBQUcsQ0FBMUIsQ0FBUDs7QUFDQSxjQUFJQSxJQUFJLEtBQUssQ0FBQyxDQUFkLEVBQWlCO0FBQ2YsZ0JBQUlILE1BQU0sSUFBSThCLGNBQWQsRUFBOEI7QUFDNUIzQixjQUFBQSxJQUFJLEdBQUdnQixHQUFHLEdBQUcsQ0FBYjtBQUNBO0FBQ0QsYUFIRCxNQUdPO0FBQ0xJLGNBQUFBLFFBQVEsQ0FBQyxRQUFELENBQVI7QUFDRDtBQUNGOztBQUNEWCxVQUFBQSxTQUFTLEdBQUdULElBQVo7O0FBQ0EsaUJBQU9MLEdBQUcsQ0FBQzFCLFVBQUosQ0FBZXdDLFNBQVMsR0FBRyxDQUEzQixNQUFrQ3RDLFNBQXpDLEVBQW9EO0FBQ2xEc0MsWUFBQUEsU0FBUyxJQUFJLENBQWI7QUFDQUQsWUFBQUEsT0FBTyxHQUFHLENBQUNBLE9BQVg7QUFDRDtBQUNGLFNBaEJELFFBZ0JTQSxPQWhCVDs7QUFrQkFKLFFBQUFBLE9BQU8sR0FBR1QsR0FBRyxDQUFDaUMsS0FBSixDQUFVWixHQUFWLEVBQWVoQixJQUFJLEdBQUcsQ0FBdEIsQ0FBVjtBQUNBRSxRQUFBQSxLQUFLLEdBQUdFLE9BQU8sQ0FBQzhCLEtBQVIsQ0FBYyxJQUFkLENBQVI7QUFDQS9CLFFBQUFBLElBQUksR0FBR0QsS0FBSyxDQUFDVyxNQUFOLEdBQWUsQ0FBdEI7O0FBRUEsWUFBSVYsSUFBSSxHQUFHLENBQVgsRUFBYztBQUNaRyxVQUFBQSxRQUFRLEdBQUdTLElBQUksR0FBR1osSUFBbEI7QUFDQUksVUFBQUEsVUFBVSxHQUFHUCxJQUFJLEdBQUdFLEtBQUssQ0FBQ0MsSUFBRCxDQUFMLENBQVlVLE1BQWhDO0FBQ0QsU0FIRCxNQUdPO0FBQ0xQLFVBQUFBLFFBQVEsR0FBR1MsSUFBWDtBQUNBUixVQUFBQSxVQUFVLEdBQUdPLE1BQWI7QUFDRDs7QUFFREYsUUFBQUEsWUFBWSxHQUFHLENBQUMsUUFBRCxFQUFXakIsR0FBRyxDQUFDaUMsS0FBSixDQUFVWixHQUFWLEVBQWVoQixJQUFJLEdBQUcsQ0FBdEIsQ0FBWCxFQUNiZSxJQURhLEVBQ1BDLEdBQUcsR0FBR0YsTUFEQyxFQUViUixRQUZhLEVBRUhOLElBQUksR0FBR08sVUFGSixDQUFmO0FBS0FPLFFBQUFBLE1BQU0sR0FBR1AsVUFBVDtBQUNBUSxRQUFBQSxJQUFJLEdBQUdULFFBQVA7QUFDQVUsUUFBQUEsR0FBRyxHQUFHaEIsSUFBTjtBQUNBOztBQUVGLFdBQUtiLEVBQUw7QUFDRUMsUUFBQUEsU0FBUyxDQUFDK0MsU0FBVixHQUFzQm5CLEdBQUcsR0FBRyxDQUE1QjtBQUNBNUIsUUFBQUEsU0FBUyxDQUFDNkMsSUFBVixDQUFldEMsR0FBZjs7QUFDQSxZQUFJUCxTQUFTLENBQUMrQyxTQUFWLEtBQXdCLENBQTVCLEVBQStCO0FBQzdCbkMsVUFBQUEsSUFBSSxHQUFHTCxHQUFHLENBQUNrQixNQUFKLEdBQWEsQ0FBcEI7QUFDRCxTQUZELE1BRU87QUFDTGIsVUFBQUEsSUFBSSxHQUFHWixTQUFTLENBQUMrQyxTQUFWLEdBQXNCLENBQTdCO0FBQ0Q7O0FBRUR2QixRQUFBQSxZQUFZLEdBQUcsQ0FBQyxTQUFELEVBQVlqQixHQUFHLENBQUNpQyxLQUFKLENBQVVaLEdBQVYsRUFBZWhCLElBQUksR0FBRyxDQUF0QixDQUFaLEVBQ2JlLElBRGEsRUFDUEMsR0FBRyxHQUFHRixNQURDLEVBRWJDLElBRmEsRUFFUGYsSUFBSSxHQUFHYyxNQUZBLENBQWY7QUFLQUUsUUFBQUEsR0FBRyxHQUFHaEIsSUFBTjtBQUNBOztBQUVGLFdBQUs3QixTQUFMO0FBQ0U2QixRQUFBQSxJQUFJLEdBQUdnQixHQUFQO0FBQ0FYLFFBQUFBLE1BQU0sR0FBRyxJQUFUOztBQUNBLGVBQU9WLEdBQUcsQ0FBQzFCLFVBQUosQ0FBZStCLElBQUksR0FBRyxDQUF0QixNQUE2QjdCLFNBQXBDLEVBQStDO0FBQzdDNkIsVUFBQUEsSUFBSSxJQUFJLENBQVI7QUFDQUssVUFBQUEsTUFBTSxHQUFHLENBQUNBLE1BQVY7QUFDRDs7QUFDRE4sUUFBQUEsSUFBSSxHQUFHSixHQUFHLENBQUMxQixVQUFKLENBQWUrQixJQUFJLEdBQUcsQ0FBdEIsQ0FBUDs7QUFDQSxZQUNFSyxNQUFNLElBQ05OLElBQUksS0FBSzNCLEtBRFQsSUFFQTJCLElBQUksS0FBS3pCLEtBRlQsSUFHQXlCLElBQUksS0FBSzFCLE9BSFQsSUFJQTBCLElBQUksS0FBS3ZCLEdBSlQsSUFLQXVCLElBQUksS0FBS3RCLEVBTFQsSUFNQXNCLElBQUksS0FBS3hCLElBUFgsRUFRRTtBQUNBeUIsVUFBQUEsSUFBSSxJQUFJLENBQVI7O0FBQ0EsY0FBSVQsYUFBYSxDQUFDMEMsSUFBZCxDQUFtQnRDLEdBQUcsQ0FBQ3lDLE1BQUosQ0FBV3BDLElBQVgsQ0FBbkIsQ0FBSixFQUEwQztBQUN4QyxtQkFBT1QsYUFBYSxDQUFDMEMsSUFBZCxDQUFtQnRDLEdBQUcsQ0FBQ3lDLE1BQUosQ0FBV3BDLElBQUksR0FBRyxDQUFsQixDQUFuQixDQUFQLEVBQWlEO0FBQy9DQSxjQUFBQSxJQUFJLElBQUksQ0FBUjtBQUNEOztBQUNELGdCQUFJTCxHQUFHLENBQUMxQixVQUFKLENBQWUrQixJQUFJLEdBQUcsQ0FBdEIsTUFBNkIxQixLQUFqQyxFQUF3QztBQUN0QzBCLGNBQUFBLElBQUksSUFBSSxDQUFSO0FBQ0Q7QUFDRjtBQUNGOztBQUVEWSxRQUFBQSxZQUFZLEdBQUcsQ0FBQyxNQUFELEVBQVNqQixHQUFHLENBQUNpQyxLQUFKLENBQVVaLEdBQVYsRUFBZWhCLElBQUksR0FBRyxDQUF0QixDQUFULEVBQ2JlLElBRGEsRUFDUEMsR0FBRyxHQUFHRixNQURDLEVBRWJDLElBRmEsRUFFUGYsSUFBSSxHQUFHYyxNQUZBLENBQWY7QUFLQUUsUUFBQUEsR0FBRyxHQUFHaEIsSUFBTjtBQUNBOztBQUVGO0FBQ0UsWUFBSUQsSUFBSSxLQUFLM0IsS0FBVCxJQUFrQnVCLEdBQUcsQ0FBQzFCLFVBQUosQ0FBZStDLEdBQUcsR0FBRyxDQUFyQixNQUE0Qi9CLFFBQWxELEVBQTREO0FBQzFEZSxVQUFBQSxJQUFJLEdBQUdMLEdBQUcsQ0FBQ3FDLE9BQUosQ0FBWSxJQUFaLEVBQWtCaEIsR0FBRyxHQUFHLENBQXhCLElBQTZCLENBQXBDOztBQUNBLGNBQUloQixJQUFJLEtBQUssQ0FBYixFQUFnQjtBQUNkLGdCQUFJSCxNQUFNLElBQUk4QixjQUFkLEVBQThCO0FBQzVCM0IsY0FBQUEsSUFBSSxHQUFHTCxHQUFHLENBQUNrQixNQUFYO0FBQ0QsYUFGRCxNQUVPO0FBQ0xPLGNBQUFBLFFBQVEsQ0FBQyxTQUFELENBQVI7QUFDRDtBQUNGOztBQUVEaEIsVUFBQUEsT0FBTyxHQUFHVCxHQUFHLENBQUNpQyxLQUFKLENBQVVaLEdBQVYsRUFBZWhCLElBQUksR0FBRyxDQUF0QixDQUFWO0FBQ0FFLFVBQUFBLEtBQUssR0FBR0UsT0FBTyxDQUFDOEIsS0FBUixDQUFjLElBQWQsQ0FBUjtBQUNBL0IsVUFBQUEsSUFBSSxHQUFHRCxLQUFLLENBQUNXLE1BQU4sR0FBZSxDQUF0Qjs7QUFFQSxjQUFJVixJQUFJLEdBQUcsQ0FBWCxFQUFjO0FBQ1pHLFlBQUFBLFFBQVEsR0FBR1MsSUFBSSxHQUFHWixJQUFsQjtBQUNBSSxZQUFBQSxVQUFVLEdBQUdQLElBQUksR0FBR0UsS0FBSyxDQUFDQyxJQUFELENBQUwsQ0FBWVUsTUFBaEM7QUFDRCxXQUhELE1BR087QUFDTFAsWUFBQUEsUUFBUSxHQUFHUyxJQUFYO0FBQ0FSLFlBQUFBLFVBQVUsR0FBR08sTUFBYjtBQUNEOztBQUVERixVQUFBQSxZQUFZLEdBQUcsQ0FBQyxTQUFELEVBQVlSLE9BQVosRUFDYlcsSUFEYSxFQUNQQyxHQUFHLEdBQUdGLE1BREMsRUFFYlIsUUFGYSxFQUVITixJQUFJLEdBQUdPLFVBRkosQ0FBZjtBQUtBTyxVQUFBQSxNQUFNLEdBQUdQLFVBQVQ7QUFDQVEsVUFBQUEsSUFBSSxHQUFHVCxRQUFQO0FBQ0FVLFVBQUFBLEdBQUcsR0FBR2hCLElBQU47QUFDRCxTQTlCRCxNQThCTztBQUNMWCxVQUFBQSxXQUFXLENBQUM4QyxTQUFaLEdBQXdCbkIsR0FBRyxHQUFHLENBQTlCO0FBQ0EzQixVQUFBQSxXQUFXLENBQUM0QyxJQUFaLENBQWlCdEMsR0FBakI7O0FBQ0EsY0FBSU4sV0FBVyxDQUFDOEMsU0FBWixLQUEwQixDQUE5QixFQUFpQztBQUMvQm5DLFlBQUFBLElBQUksR0FBR0wsR0FBRyxDQUFDa0IsTUFBSixHQUFhLENBQXBCO0FBQ0QsV0FGRCxNQUVPO0FBQ0xiLFlBQUFBLElBQUksR0FBR1gsV0FBVyxDQUFDOEMsU0FBWixHQUF3QixDQUEvQjtBQUNEOztBQUVEdkIsVUFBQUEsWUFBWSxHQUFHLENBQUMsTUFBRCxFQUFTakIsR0FBRyxDQUFDaUMsS0FBSixDQUFVWixHQUFWLEVBQWVoQixJQUFJLEdBQUcsQ0FBdEIsQ0FBVCxFQUNiZSxJQURhLEVBQ1BDLEdBQUcsR0FBR0YsTUFEQyxFQUViQyxJQUZhLEVBRVBmLElBQUksR0FBR2MsTUFGQSxDQUFmO0FBS0FHLFVBQUFBLE1BQU0sQ0FBQ29CLElBQVAsQ0FBWXpCLFlBQVo7QUFFQUksVUFBQUEsR0FBRyxHQUFHaEIsSUFBTjtBQUNEOztBQUVEO0FBM09KOztBQThPQWdCLElBQUFBLEdBQUc7QUFDSCxXQUFPSixZQUFQO0FBQ0Q7O0FBRUQsV0FBUzBCLElBQVQsQ0FBZUMsS0FBZixFQUFzQjtBQUNwQnJCLElBQUFBLFFBQVEsQ0FBQ21CLElBQVQsQ0FBY0UsS0FBZDtBQUNEOztBQUVELFNBQU87QUFDTEQsSUFBQUEsSUFBSSxFQUFKQSxJQURLO0FBRUxkLElBQUFBLFNBQVMsRUFBVEEsU0FGSztBQUdMRCxJQUFBQSxTQUFTLEVBQVRBLFNBSEs7QUFJTEosSUFBQUEsUUFBUSxFQUFSQTtBQUpLLEdBQVA7QUFNRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNJTkdMRV9RVU9URSA9ICdcXCcnLmNoYXJDb2RlQXQoMClcbmNvbnN0IERPVUJMRV9RVU9URSA9ICdcIicuY2hhckNvZGVBdCgwKVxuY29uc3QgQkFDS1NMQVNIID0gJ1xcXFwnLmNoYXJDb2RlQXQoMClcbmNvbnN0IFNMQVNIID0gJy8nLmNoYXJDb2RlQXQoMClcbmNvbnN0IE5FV0xJTkUgPSAnXFxuJy5jaGFyQ29kZUF0KDApXG5jb25zdCBTUEFDRSA9ICcgJy5jaGFyQ29kZUF0KDApXG5jb25zdCBGRUVEID0gJ1xcZicuY2hhckNvZGVBdCgwKVxuY29uc3QgVEFCID0gJ1xcdCcuY2hhckNvZGVBdCgwKVxuY29uc3QgQ1IgPSAnXFxyJy5jaGFyQ29kZUF0KDApXG5jb25zdCBPUEVOX1NRVUFSRSA9ICdbJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDTE9TRV9TUVVBUkUgPSAnXScuY2hhckNvZGVBdCgwKVxuY29uc3QgT1BFTl9QQVJFTlRIRVNFUyA9ICcoJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDTE9TRV9QQVJFTlRIRVNFUyA9ICcpJy5jaGFyQ29kZUF0KDApXG5jb25zdCBPUEVOX0NVUkxZID0gJ3snLmNoYXJDb2RlQXQoMClcbmNvbnN0IENMT1NFX0NVUkxZID0gJ30nLmNoYXJDb2RlQXQoMClcbmNvbnN0IFNFTUlDT0xPTiA9ICc7Jy5jaGFyQ29kZUF0KDApXG5jb25zdCBBU1RFUklTSyA9ICcqJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDT0xPTiA9ICc6Jy5jaGFyQ29kZUF0KDApXG5jb25zdCBBVCA9ICdAJy5jaGFyQ29kZUF0KDApXG5cbmNvbnN0IFJFX0FUX0VORCA9IC9bIFxcblxcdFxcclxcZnt9KCknXCJcXFxcOy9bXFxdI10vZ1xuY29uc3QgUkVfV09SRF9FTkQgPSAvWyBcXG5cXHRcXHJcXGYoKXt9OjtAISdcIlxcXFxcXF1bI118XFwvKD89XFwqKS9nXG5jb25zdCBSRV9CQURfQlJBQ0tFVCA9IC8uW1xcXFwvKFwiJ1xcbl0vXG5jb25zdCBSRV9IRVhfRVNDQVBFID0gL1thLWYwLTldL2lcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9rZW5pemVyIChpbnB1dCwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBjc3MgPSBpbnB1dC5jc3MudmFsdWVPZigpXG4gIGxldCBpZ25vcmUgPSBvcHRpb25zLmlnbm9yZUVycm9yc1xuXG4gIGxldCBjb2RlLCBuZXh0LCBxdW90ZSwgbGluZXMsIGxhc3QsIGNvbnRlbnQsIGVzY2FwZVxuICBsZXQgbmV4dExpbmUsIG5leHRPZmZzZXQsIGVzY2FwZWQsIGVzY2FwZVBvcywgcHJldiwgbiwgY3VycmVudFRva2VuXG5cbiAgbGV0IGxlbmd0aCA9IGNzcy5sZW5ndGhcbiAgbGV0IG9mZnNldCA9IC0xXG4gIGxldCBsaW5lID0gMVxuICBsZXQgcG9zID0gMFxuICBsZXQgYnVmZmVyID0gW11cbiAgbGV0IHJldHVybmVkID0gW11cblxuICBmdW5jdGlvbiBwb3NpdGlvbiAoKSB7XG4gICAgcmV0dXJuIHBvc1xuICB9XG5cbiAgZnVuY3Rpb24gdW5jbG9zZWQgKHdoYXQpIHtcbiAgICB0aHJvdyBpbnB1dC5lcnJvcignVW5jbG9zZWQgJyArIHdoYXQsIGxpbmUsIHBvcyAtIG9mZnNldClcbiAgfVxuXG4gIGZ1bmN0aW9uIGVuZE9mRmlsZSAoKSB7XG4gICAgcmV0dXJuIHJldHVybmVkLmxlbmd0aCA9PT0gMCAmJiBwb3MgPj0gbGVuZ3RoXG4gIH1cblxuICBmdW5jdGlvbiBuZXh0VG9rZW4gKG9wdHMpIHtcbiAgICBpZiAocmV0dXJuZWQubGVuZ3RoKSByZXR1cm4gcmV0dXJuZWQucG9wKClcbiAgICBpZiAocG9zID49IGxlbmd0aCkgcmV0dXJuXG5cbiAgICBsZXQgaWdub3JlVW5jbG9zZWQgPSBvcHRzID8gb3B0cy5pZ25vcmVVbmNsb3NlZCA6IGZhbHNlXG5cbiAgICBjb2RlID0gY3NzLmNoYXJDb2RlQXQocG9zKVxuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IE5FV0xJTkUgfHwgY29kZSA9PT0gRkVFRCB8fFxuICAgICAgKGNvZGUgPT09IENSICYmIGNzcy5jaGFyQ29kZUF0KHBvcyArIDEpICE9PSBORVdMSU5FKVxuICAgICkge1xuICAgICAgb2Zmc2V0ID0gcG9zXG4gICAgICBsaW5lICs9IDFcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgIGNhc2UgTkVXTElORTpcbiAgICAgIGNhc2UgU1BBQ0U6XG4gICAgICBjYXNlIFRBQjpcbiAgICAgIGNhc2UgQ1I6XG4gICAgICBjYXNlIEZFRUQ6XG4gICAgICAgIG5leHQgPSBwb3NcbiAgICAgICAgZG8ge1xuICAgICAgICAgIG5leHQgKz0gMVxuICAgICAgICAgIGNvZGUgPSBjc3MuY2hhckNvZGVBdChuZXh0KVxuICAgICAgICAgIGlmIChjb2RlID09PSBORVdMSU5FKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBuZXh0XG4gICAgICAgICAgICBsaW5lICs9IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKFxuICAgICAgICAgIGNvZGUgPT09IFNQQUNFIHx8XG4gICAgICAgICAgY29kZSA9PT0gTkVXTElORSB8fFxuICAgICAgICAgIGNvZGUgPT09IFRBQiB8fFxuICAgICAgICAgIGNvZGUgPT09IENSIHx8XG4gICAgICAgICAgY29kZSA9PT0gRkVFRFxuICAgICAgICApXG5cbiAgICAgICAgY3VycmVudFRva2VuID0gWydzcGFjZScsIGNzcy5zbGljZShwb3MsIG5leHQpXVxuICAgICAgICBwb3MgPSBuZXh0IC0gMVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIE9QRU5fU1FVQVJFOlxuICAgICAgY2FzZSBDTE9TRV9TUVVBUkU6XG4gICAgICBjYXNlIE9QRU5fQ1VSTFk6XG4gICAgICBjYXNlIENMT1NFX0NVUkxZOlxuICAgICAgY2FzZSBDT0xPTjpcbiAgICAgIGNhc2UgU0VNSUNPTE9OOlxuICAgICAgY2FzZSBDTE9TRV9QQVJFTlRIRVNFUzpcbiAgICAgICAgbGV0IGNvbnRyb2xDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKVxuICAgICAgICBjdXJyZW50VG9rZW4gPSBbY29udHJvbENoYXIsIGNvbnRyb2xDaGFyLCBsaW5lLCBwb3MgLSBvZmZzZXRdXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgT1BFTl9QQVJFTlRIRVNFUzpcbiAgICAgICAgcHJldiA9IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIucG9wKClbMV0gOiAnJ1xuICAgICAgICBuID0gY3NzLmNoYXJDb2RlQXQocG9zICsgMSlcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZXYgPT09ICd1cmwnICYmXG4gICAgICAgICAgbiAhPT0gU0lOR0xFX1FVT1RFICYmIG4gIT09IERPVUJMRV9RVU9URSAmJlxuICAgICAgICAgIG4gIT09IFNQQUNFICYmIG4gIT09IE5FV0xJTkUgJiYgbiAhPT0gVEFCICYmXG4gICAgICAgICAgbiAhPT0gRkVFRCAmJiBuICE9PSBDUlxuICAgICAgICApIHtcbiAgICAgICAgICBuZXh0ID0gcG9zXG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlXG4gICAgICAgICAgICBuZXh0ID0gY3NzLmluZGV4T2YoJyknLCBuZXh0ICsgMSlcbiAgICAgICAgICAgIGlmIChuZXh0ID09PSAtMSkge1xuICAgICAgICAgICAgICBpZiAoaWdub3JlIHx8IGlnbm9yZVVuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgbmV4dCA9IHBvc1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdW5jbG9zZWQoJ2JyYWNrZXQnKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlc2NhcGVQb3MgPSBuZXh0XG4gICAgICAgICAgICB3aGlsZSAoY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCkge1xuICAgICAgICAgICAgICBlc2NhcGVQb3MgLT0gMVxuICAgICAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IHdoaWxlIChlc2NhcGVkKVxuXG4gICAgICAgICAgY3VycmVudFRva2VuID0gWydicmFja2V0cycsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgIGxpbmUsIHBvcyAtIG9mZnNldCxcbiAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICBdXG5cbiAgICAgICAgICBwb3MgPSBuZXh0XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dCA9IGNzcy5pbmRleE9mKCcpJywgcG9zICsgMSlcbiAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpXG5cbiAgICAgICAgICBpZiAobmV4dCA9PT0gLTEgfHwgUkVfQkFEX0JSQUNLRVQudGVzdChjb250ZW50KSkge1xuICAgICAgICAgICAgY3VycmVudFRva2VuID0gWycoJywgJygnLCBsaW5lLCBwb3MgLSBvZmZzZXRdXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnYnJhY2tldHMnLCBjb250ZW50LFxuICAgICAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIFNJTkdMRV9RVU9URTpcbiAgICAgIGNhc2UgRE9VQkxFX1FVT1RFOlxuICAgICAgICBxdW90ZSA9IGNvZGUgPT09IFNJTkdMRV9RVU9URSA/ICdcXCcnIDogJ1wiJ1xuICAgICAgICBuZXh0ID0gcG9zXG4gICAgICAgIGRvIHtcbiAgICAgICAgICBlc2NhcGVkID0gZmFsc2VcbiAgICAgICAgICBuZXh0ID0gY3NzLmluZGV4T2YocXVvdGUsIG5leHQgKyAxKVxuICAgICAgICAgIGlmIChuZXh0ID09PSAtMSkge1xuICAgICAgICAgICAgaWYgKGlnbm9yZSB8fCBpZ25vcmVVbmNsb3NlZCkge1xuICAgICAgICAgICAgICBuZXh0ID0gcG9zICsgMVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdW5jbG9zZWQoJ3N0cmluZycpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGVzY2FwZVBvcyA9IG5leHRcbiAgICAgICAgICB3aGlsZSAoY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCkge1xuICAgICAgICAgICAgZXNjYXBlUG9zIC09IDFcbiAgICAgICAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZFxuICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoZXNjYXBlZClcblxuICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpXG4gICAgICAgIGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJylcbiAgICAgICAgbGFzdCA9IGxpbmVzLmxlbmd0aCAtIDFcblxuICAgICAgICBpZiAobGFzdCA+IDApIHtcbiAgICAgICAgICBuZXh0TGluZSA9IGxpbmUgKyBsYXN0XG4gICAgICAgICAgbmV4dE9mZnNldCA9IG5leHQgLSBsaW5lc1tsYXN0XS5sZW5ndGhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXh0TGluZSA9IGxpbmVcbiAgICAgICAgICBuZXh0T2Zmc2V0ID0gb2Zmc2V0XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ3N0cmluZycsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgbmV4dExpbmUsIG5leHQgLSBuZXh0T2Zmc2V0XG4gICAgICAgIF1cblxuICAgICAgICBvZmZzZXQgPSBuZXh0T2Zmc2V0XG4gICAgICAgIGxpbmUgPSBuZXh0TGluZVxuICAgICAgICBwb3MgPSBuZXh0XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgQVQ6XG4gICAgICAgIFJFX0FUX0VORC5sYXN0SW5kZXggPSBwb3MgKyAxXG4gICAgICAgIFJFX0FUX0VORC50ZXN0KGNzcylcbiAgICAgICAgaWYgKFJFX0FUX0VORC5sYXN0SW5kZXggPT09IDApIHtcbiAgICAgICAgICBuZXh0ID0gY3NzLmxlbmd0aCAtIDFcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXh0ID0gUkVfQVRfRU5ELmxhc3RJbmRleCAtIDJcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnYXQtd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICBdXG5cbiAgICAgICAgcG9zID0gbmV4dFxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIEJBQ0tTTEFTSDpcbiAgICAgICAgbmV4dCA9IHBvc1xuICAgICAgICBlc2NhcGUgPSB0cnVlXG4gICAgICAgIHdoaWxlIChjc3MuY2hhckNvZGVBdChuZXh0ICsgMSkgPT09IEJBQ0tTTEFTSCkge1xuICAgICAgICAgIG5leHQgKz0gMVxuICAgICAgICAgIGVzY2FwZSA9ICFlc2NhcGVcbiAgICAgICAgfVxuICAgICAgICBjb2RlID0gY3NzLmNoYXJDb2RlQXQobmV4dCArIDEpXG4gICAgICAgIGlmIChcbiAgICAgICAgICBlc2NhcGUgJiZcbiAgICAgICAgICBjb2RlICE9PSBTTEFTSCAmJlxuICAgICAgICAgIGNvZGUgIT09IFNQQUNFICYmXG4gICAgICAgICAgY29kZSAhPT0gTkVXTElORSAmJlxuICAgICAgICAgIGNvZGUgIT09IFRBQiAmJlxuICAgICAgICAgIGNvZGUgIT09IENSICYmXG4gICAgICAgICAgY29kZSAhPT0gRkVFRFxuICAgICAgICApIHtcbiAgICAgICAgICBuZXh0ICs9IDFcbiAgICAgICAgICBpZiAoUkVfSEVYX0VTQ0FQRS50ZXN0KGNzcy5jaGFyQXQobmV4dCkpKSB7XG4gICAgICAgICAgICB3aGlsZSAoUkVfSEVYX0VTQ0FQRS50ZXN0KGNzcy5jaGFyQXQobmV4dCArIDEpKSkge1xuICAgICAgICAgICAgICBuZXh0ICs9IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjc3MuY2hhckNvZGVBdChuZXh0ICsgMSkgPT09IFNQQUNFKSB7XG4gICAgICAgICAgICAgIG5leHQgKz0gMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICBdXG5cbiAgICAgICAgcG9zID0gbmV4dFxuICAgICAgICBicmVha1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoY29kZSA9PT0gU0xBU0ggJiYgY3NzLmNoYXJDb2RlQXQocG9zICsgMSkgPT09IEFTVEVSSVNLKSB7XG4gICAgICAgICAgbmV4dCA9IGNzcy5pbmRleE9mKCcqLycsIHBvcyArIDIpICsgMVxuICAgICAgICAgIGlmIChuZXh0ID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoaWdub3JlIHx8IGlnbm9yZVVuY2xvc2VkKSB7XG4gICAgICAgICAgICAgIG5leHQgPSBjc3MubGVuZ3RoXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB1bmNsb3NlZCgnY29tbWVudCcpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGVudCA9IGNzcy5zbGljZShwb3MsIG5leHQgKyAxKVxuICAgICAgICAgIGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJylcbiAgICAgICAgICBsYXN0ID0gbGluZXMubGVuZ3RoIC0gMVxuXG4gICAgICAgICAgaWYgKGxhc3QgPiAwKSB7XG4gICAgICAgICAgICBuZXh0TGluZSA9IGxpbmUgKyBsYXN0XG4gICAgICAgICAgICBuZXh0T2Zmc2V0ID0gbmV4dCAtIGxpbmVzW2xhc3RdLmxlbmd0aFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0TGluZSA9IGxpbmVcbiAgICAgICAgICAgIG5leHRPZmZzZXQgPSBvZmZzZXRcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ2NvbW1lbnQnLCBjb250ZW50LFxuICAgICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgICAgbmV4dExpbmUsIG5leHQgLSBuZXh0T2Zmc2V0XG4gICAgICAgICAgXVxuXG4gICAgICAgICAgb2Zmc2V0ID0gbmV4dE9mZnNldFxuICAgICAgICAgIGxpbmUgPSBuZXh0TGluZVxuICAgICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBSRV9XT1JEX0VORC5sYXN0SW5kZXggPSBwb3MgKyAxXG4gICAgICAgICAgUkVfV09SRF9FTkQudGVzdChjc3MpXG4gICAgICAgICAgaWYgKFJFX1dPUkRfRU5ELmxhc3RJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHQgPSBSRV9XT1JEX0VORC5sYXN0SW5kZXggLSAyXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudFRva2VuID0gWyd3b3JkJywgY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpLFxuICAgICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgIF1cblxuICAgICAgICAgIGJ1ZmZlci5wdXNoKGN1cnJlbnRUb2tlbilcblxuICAgICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcG9zKytcbiAgICByZXR1cm4gY3VycmVudFRva2VuXG4gIH1cblxuICBmdW5jdGlvbiBiYWNrICh0b2tlbikge1xuICAgIHJldHVybmVkLnB1c2godG9rZW4pXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJhY2ssXG4gICAgbmV4dFRva2VuLFxuICAgIGVuZE9mRmlsZSxcbiAgICBwb3NpdGlvblxuICB9XG59XG4iXSwiZmlsZSI6InRva2VuaXplLmpzIn0=
diff --git a/assets/node_modules/postcss/lib/vendor.js b/assets/node_modules/postcss/lib/vendor.js
deleted file mode 100644
index 8abdeed..0000000
--- a/assets/node_modules/postcss/lib/vendor.js
+++ /dev/null
@@ -1,53 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-/**
- * Contains helpers for working with vendor prefixes.
- *
- * @example
- * const vendor = postcss.vendor
- *
- * @namespace vendor
- */
-var vendor = {
- /**
- * Returns the vendor prefix extracted from an input string.
- *
- * @param {string} prop String with or without vendor prefix.
- *
- * @return {string} vendor prefix or empty string
- *
- * @example
- * postcss.vendor.prefix('-moz-tab-size') //=> '-moz-'
- * postcss.vendor.prefix('tab-size') //=> ''
- */
- prefix: function prefix(prop) {
- var match = prop.match(/^(-\w+-)/);
-
- if (match) {
- return match[0];
- }
-
- return '';
- },
-
- /**
- * Returns the input string stripped of its vendor prefix.
- *
- * @param {string} prop String with or without vendor prefix.
- *
- * @return {string} String name without vendor prefixes.
- *
- * @example
- * postcss.vendor.unprefixed('-moz-tab-size') //=> 'tab-size'
- */
- unprefixed: function unprefixed(prop) {
- return prop.replace(/^-\w+-/, '');
- }
-};
-var _default = vendor;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlbmRvci5lczYiXSwibmFtZXMiOlsidmVuZG9yIiwicHJlZml4IiwicHJvcCIsIm1hdGNoIiwidW5wcmVmaXhlZCIsInJlcGxhY2UiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7O0FBUUEsSUFBSUEsTUFBTSxHQUFHO0FBRVg7Ozs7Ozs7Ozs7O0FBV0FDLEVBQUFBLE1BYlcsa0JBYUhDLElBYkcsRUFhRztBQUNaLFFBQUlDLEtBQUssR0FBR0QsSUFBSSxDQUFDQyxLQUFMLENBQVcsVUFBWCxDQUFaOztBQUNBLFFBQUlBLEtBQUosRUFBVztBQUNULGFBQU9BLEtBQUssQ0FBQyxDQUFELENBQVo7QUFDRDs7QUFFRCxXQUFPLEVBQVA7QUFDRCxHQXBCVTs7QUFzQlg7Ozs7Ozs7Ozs7QUFVQUMsRUFBQUEsVUFoQ1csc0JBZ0NDRixJQWhDRCxFQWdDTztBQUNoQixXQUFPQSxJQUFJLENBQUNHLE9BQUwsQ0FBYSxRQUFiLEVBQXVCLEVBQXZCLENBQVA7QUFDRDtBQWxDVSxDQUFiO2VBc0NlTCxNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb250YWlucyBoZWxwZXJzIGZvciB3b3JraW5nIHdpdGggdmVuZG9yIHByZWZpeGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB2ZW5kb3IgPSBwb3N0Y3NzLnZlbmRvclxuICpcbiAqIEBuYW1lc3BhY2UgdmVuZG9yXG4gKi9cbmxldCB2ZW5kb3IgPSB7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHZlbmRvciBwcmVmaXggZXh0cmFjdGVkIGZyb20gYW4gaW5wdXQgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBTdHJpbmcgd2l0aCBvciB3aXRob3V0IHZlbmRvciBwcmVmaXguXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gdmVuZG9yIHByZWZpeCBvciBlbXB0eSBzdHJpbmdcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy52ZW5kb3IucHJlZml4KCctbW96LXRhYi1zaXplJykgLy89PiAnLW1vei0nXG4gICAqIHBvc3Rjc3MudmVuZG9yLnByZWZpeCgndGFiLXNpemUnKSAgICAgIC8vPT4gJydcbiAgICovXG4gIHByZWZpeCAocHJvcCkge1xuICAgIGxldCBtYXRjaCA9IHByb3AubWF0Y2goL14oLVxcdystKS8pXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICByZXR1cm4gbWF0Y2hbMF1cbiAgICB9XG5cbiAgICByZXR1cm4gJydcbiAgfSxcblxuICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBpbnB1dCBzdHJpbmcgc3RyaXBwZWQgb2YgaXRzIHZlbmRvciBwcmVmaXguXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBTdHJpbmcgd2l0aCBvciB3aXRob3V0IHZlbmRvciBwcmVmaXguXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFN0cmluZyBuYW1lIHdpdGhvdXQgdmVuZG9yIHByZWZpeGVzLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBwb3N0Y3NzLnZlbmRvci51bnByZWZpeGVkKCctbW96LXRhYi1zaXplJykgLy89PiAndGFiLXNpemUnXG4gICAgICovXG4gIHVucHJlZml4ZWQgKHByb3ApIHtcbiAgICByZXR1cm4gcHJvcC5yZXBsYWNlKC9eLVxcdystLywgJycpXG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCB2ZW5kb3JcbiJdLCJmaWxlIjoidmVuZG9yLmpzIn0=
diff --git a/assets/node_modules/postcss/lib/warn-once.js b/assets/node_modules/postcss/lib/warn-once.js
deleted file mode 100644
index f04c7f2..0000000
--- a/assets/node_modules/postcss/lib/warn-once.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = warnOnce;
-var printed = {};
-
-function warnOnce(message) {
- if (printed[message]) return;
- printed[message] = true;
-
- if (typeof console !== 'undefined' && console.warn) {
- console.warn(message);
- }
-}
-
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndhcm4tb25jZS5lczYiXSwibmFtZXMiOlsicHJpbnRlZCIsIndhcm5PbmNlIiwibWVzc2FnZSIsImNvbnNvbGUiLCJ3YXJuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBSUEsT0FBTyxHQUFHLEVBQWQ7O0FBRWUsU0FBU0MsUUFBVCxDQUFtQkMsT0FBbkIsRUFBNEI7QUFDekMsTUFBSUYsT0FBTyxDQUFDRSxPQUFELENBQVgsRUFBc0I7QUFDdEJGLEVBQUFBLE9BQU8sQ0FBQ0UsT0FBRCxDQUFQLEdBQW1CLElBQW5COztBQUVBLE1BQUksT0FBT0MsT0FBUCxLQUFtQixXQUFuQixJQUFrQ0EsT0FBTyxDQUFDQyxJQUE5QyxFQUFvRDtBQUNsREQsSUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWFGLE9BQWI7QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsibGV0IHByaW50ZWQgPSB7IH1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gd2Fybk9uY2UgKG1lc3NhZ2UpIHtcbiAgaWYgKHByaW50ZWRbbWVzc2FnZV0pIHJldHVyblxuICBwcmludGVkW21lc3NhZ2VdID0gdHJ1ZVxuXG4gIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZS53YXJuKSB7XG4gICAgY29uc29sZS53YXJuKG1lc3NhZ2UpXG4gIH1cbn1cbiJdLCJmaWxlIjoid2Fybi1vbmNlLmpzIn0=
diff --git a/assets/node_modules/postcss/lib/warning.js b/assets/node_modules/postcss/lib/warning.js
deleted file mode 100644
index d59e2e4..0000000
--- a/assets/node_modules/postcss/lib/warning.js
+++ /dev/null
@@ -1,133 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-/**
- * Represents a plugin’s warning. It can be created using {@link Node#warn}.
- *
- * @example
- * if (decl.important) {
- * decl.warn(result, 'Avoid !important', { word: '!important' })
- * }
- */
-var Warning =
-/*#__PURE__*/
-function () {
- /**
- * @param {string} text Warning message.
- * @param {Object} [opts] Warning options.
- * @param {Node} opts.node CSS node that caused the warning.
- * @param {string} opts.word Word in CSS source that caused the warning.
- * @param {number} opts.index Index in CSS node string that caused
- * the warning.
- * @param {string} opts.plugin Name of the plugin that created
- * this warning. {@link Result#warn} fills
- * this property automatically.
- */
- function Warning(text, opts) {
- if (opts === void 0) {
- opts = {};
- }
-
- /**
- * Type to filter warnings from {@link Result#messages}.
- * Always equal to `"warning"`.
- *
- * @type {string}
- *
- * @example
- * const nonWarning = result.messages.filter(i => i.type !== 'warning')
- */
- this.type = 'warning';
- /**
- * The warning message.
- *
- * @type {string}
- *
- * @example
- * warning.text //=> 'Try to avoid !important'
- */
-
- this.text = text;
-
- if (opts.node && opts.node.source) {
- var pos = opts.node.positionBy(opts);
- /**
- * Line in the input file with this warning’s source.
- * @type {number}
- *
- * @example
- * warning.line //=> 5
- */
-
- this.line = pos.line;
- /**
- * Column in the input file with this warning’s source.
- *
- * @type {number}
- *
- * @example
- * warning.column //=> 6
- */
-
- this.column = pos.column;
- }
-
- for (var opt in opts) {
- this[opt] = opts[opt];
- }
- }
- /**
- * Returns a warning position and message.
- *
- * @example
- * warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important'
- *
- * @return {string} Warning position and message.
- */
-
-
- var _proto = Warning.prototype;
-
- _proto.toString = function toString() {
- if (this.node) {
- return this.node.error(this.text, {
- plugin: this.plugin,
- index: this.index,
- word: this.word
- }).message;
- }
-
- if (this.plugin) {
- return this.plugin + ': ' + this.text;
- }
-
- return this.text;
- }
- /**
- * @memberof Warning#
- * @member {string} plugin The name of the plugin that created
- * it will fill this property automatically.
- * this warning. When you call {@link Node#warn}
- *
- * @example
- * warning.plugin //=> 'postcss-important'
- */
-
- /**
- * @memberof Warning#
- * @member {Node} node Contains the CSS node that caused the warning.
- *
- * @example
- * warning.node.toString() //=> 'color: white !important'
- */
- ;
-
- return Warning;
-}();
-
-var _default = Warning;
-exports.default = _default;
-module.exports = exports.default;
-//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndhcm5pbmcuZXM2Il0sIm5hbWVzIjpbIldhcm5pbmciLCJ0ZXh0Iiwib3B0cyIsInR5cGUiLCJub2RlIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImxpbmUiLCJjb2x1bW4iLCJvcHQiLCJ0b1N0cmluZyIsImVycm9yIiwicGx1Z2luIiwiaW5kZXgiLCJ3b3JkIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7SUFRTUEsTzs7O0FBQ0o7Ozs7Ozs7Ozs7O0FBV0EsbUJBQWFDLElBQWIsRUFBbUJDLElBQW5CLEVBQStCO0FBQUEsUUFBWkEsSUFBWTtBQUFaQSxNQUFBQSxJQUFZLEdBQUwsRUFBSztBQUFBOztBQUM3Qjs7Ozs7Ozs7O0FBU0EsU0FBS0MsSUFBTCxHQUFZLFNBQVo7QUFDQTs7Ozs7Ozs7O0FBUUEsU0FBS0YsSUFBTCxHQUFZQSxJQUFaOztBQUVBLFFBQUlDLElBQUksQ0FBQ0UsSUFBTCxJQUFhRixJQUFJLENBQUNFLElBQUwsQ0FBVUMsTUFBM0IsRUFBbUM7QUFDakMsVUFBSUMsR0FBRyxHQUFHSixJQUFJLENBQUNFLElBQUwsQ0FBVUcsVUFBVixDQUFxQkwsSUFBckIsQ0FBVjtBQUNBOzs7Ozs7OztBQU9BLFdBQUtNLElBQUwsR0FBWUYsR0FBRyxDQUFDRSxJQUFoQjtBQUNBOzs7Ozs7Ozs7QUFRQSxXQUFLQyxNQUFMLEdBQWNILEdBQUcsQ0FBQ0csTUFBbEI7QUFDRDs7QUFFRCxTQUFLLElBQUlDLEdBQVQsSUFBZ0JSLElBQWhCO0FBQXNCLFdBQUtRLEdBQUwsSUFBWVIsSUFBSSxDQUFDUSxHQUFELENBQWhCO0FBQXRCO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7O1NBUUFDLFEsR0FBQSxvQkFBWTtBQUNWLFFBQUksS0FBS1AsSUFBVCxFQUFlO0FBQ2IsYUFBTyxLQUFLQSxJQUFMLENBQVVRLEtBQVYsQ0FBZ0IsS0FBS1gsSUFBckIsRUFBMkI7QUFDaENZLFFBQUFBLE1BQU0sRUFBRSxLQUFLQSxNQURtQjtBQUVoQ0MsUUFBQUEsS0FBSyxFQUFFLEtBQUtBLEtBRm9CO0FBR2hDQyxRQUFBQSxJQUFJLEVBQUUsS0FBS0E7QUFIcUIsT0FBM0IsRUFJSkMsT0FKSDtBQUtEOztBQUVELFFBQUksS0FBS0gsTUFBVCxFQUFpQjtBQUNmLGFBQU8sS0FBS0EsTUFBTCxHQUFjLElBQWQsR0FBcUIsS0FBS1osSUFBakM7QUFDRDs7QUFFRCxXQUFPLEtBQUtBLElBQVo7QUFDRDtBQUVEOzs7Ozs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7OztlQVNhRCxPIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXByZXNlbnRzIGEgcGx1Z2lu4oCZcyB3YXJuaW5nLiBJdCBjYW4gYmUgY3JlYXRlZCB1c2luZyB7QGxpbmsgTm9kZSN3YXJufS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaWYgKGRlY2wuaW1wb3J0YW50KSB7XG4gKiAgIGRlY2wud2FybihyZXN1bHQsICdBdm9pZCAhaW1wb3J0YW50JywgeyB3b3JkOiAnIWltcG9ydGFudCcgfSlcbiAqIH1cbiAqL1xuY2xhc3MgV2FybmluZyB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgICAgICAgV2FybmluZyBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdICAgICAgV2FybmluZyBvcHRpb25zLlxuICAgKiBAcGFyYW0ge05vZGV9ICAgb3B0cy5ub2RlICAgQ1NTIG5vZGUgdGhhdCBjYXVzZWQgdGhlIHdhcm5pbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLndvcmQgICBXb3JkIGluIENTUyBzb3VyY2UgdGhhdCBjYXVzZWQgdGhlIHdhcm5pbmcuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICBJbmRleCBpbiBDU1Mgbm9kZSBzdHJpbmcgdGhhdCBjYXVzZWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5wbHVnaW4gTmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgY3JlYXRlZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB3YXJuaW5nLiB7QGxpbmsgUmVzdWx0I3dhcm59IGZpbGxzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHByb3BlcnR5IGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICBjb25zdHJ1Y3RvciAodGV4dCwgb3B0cyA9IHsgfSkge1xuICAgIC8qKlxuICAgICAqIFR5cGUgdG8gZmlsdGVyIHdhcm5pbmdzIGZyb20ge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uXG4gICAgICogQWx3YXlzIGVxdWFsIHRvIGBcIndhcm5pbmdcImAuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCBub25XYXJuaW5nID0gcmVzdWx0Lm1lc3NhZ2VzLmZpbHRlcihpID0+IGkudHlwZSAhPT0gJ3dhcm5pbmcnKVxuICAgICAqL1xuICAgIHRoaXMudHlwZSA9ICd3YXJuaW5nJ1xuICAgIC8qKlxuICAgICAqIFRoZSB3YXJuaW5nIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiB3YXJuaW5nLnRleHQgLy89PiAnVHJ5IHRvIGF2b2lkICFpbXBvcnRhbnQnXG4gICAgICovXG4gICAgdGhpcy50ZXh0ID0gdGV4dFxuXG4gICAgaWYgKG9wdHMubm9kZSAmJiBvcHRzLm5vZGUuc291cmNlKSB7XG4gICAgICBsZXQgcG9zID0gb3B0cy5ub2RlLnBvc2l0aW9uQnkob3B0cylcbiAgICAgIC8qKlxuICAgICAgICogTGluZSBpbiB0aGUgaW5wdXQgZmlsZSB3aXRoIHRoaXMgd2FybmluZ+KAmXMgc291cmNlLlxuICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogd2FybmluZy5saW5lIC8vPT4gNVxuICAgICAgICovXG4gICAgICB0aGlzLmxpbmUgPSBwb3MubGluZVxuICAgICAgLyoqXG4gICAgICAgKiBDb2x1bW4gaW4gdGhlIGlucHV0IGZpbGUgd2l0aCB0aGlzIHdhcm5pbmfigJlzIHNvdXJjZS5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiB3YXJuaW5nLmNvbHVtbiAvLz0+IDZcbiAgICAgICAqL1xuICAgICAgdGhpcy5jb2x1bW4gPSBwb3MuY29sdW1uXG4gICAgfVxuXG4gICAgZm9yIChsZXQgb3B0IGluIG9wdHMpIHRoaXNbb3B0XSA9IG9wdHNbb3B0XVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSB3YXJuaW5nIHBvc2l0aW9uIGFuZCBtZXNzYWdlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB3YXJuaW5nLnRvU3RyaW5nKCkgLy89PiAncG9zdGNzcy1saW50OmEuY3NzOjEwOjE0OiBBdm9pZCAhaW1wb3J0YW50J1xuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFdhcm5pbmcgcG9zaXRpb24gYW5kIG1lc3NhZ2UuXG4gICAqL1xuICB0b1N0cmluZyAoKSB7XG4gICAgaWYgKHRoaXMubm9kZSkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZS5lcnJvcih0aGlzLnRleHQsIHtcbiAgICAgICAgcGx1Z2luOiB0aGlzLnBsdWdpbixcbiAgICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICAgIHdvcmQ6IHRoaXMud29yZFxuICAgICAgfSkubWVzc2FnZVxuICAgIH1cblxuICAgIGlmICh0aGlzLnBsdWdpbikge1xuICAgICAgcmV0dXJuIHRoaXMucGx1Z2luICsgJzogJyArIHRoaXMudGV4dFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRleHRcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgV2FybmluZyNcbiAgICogQG1lbWJlciB7c3RyaW5nfSBwbHVnaW4gVGhlIG5hbWUgb2YgdGhlIHBsdWdpbiB0aGF0IGNyZWF0ZWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgaXQgd2lsbCBmaWxsIHRoaXMgcHJvcGVydHkgYXV0b21hdGljYWxseS5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB3YXJuaW5nLiBXaGVuIHlvdSBjYWxsIHtAbGluayBOb2RlI3dhcm59XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHdhcm5pbmcucGx1Z2luIC8vPT4gJ3Bvc3Rjc3MtaW1wb3J0YW50J1xuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIFdhcm5pbmcjXG4gICAqIEBtZW1iZXIge05vZGV9IG5vZGUgQ29udGFpbnMgdGhlIENTUyBub2RlIHRoYXQgY2F1c2VkIHRoZSB3YXJuaW5nLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB3YXJuaW5nLm5vZGUudG9TdHJpbmcoKSAvLz0+ICdjb2xvcjogd2hpdGUgIWltcG9ydGFudCdcbiAgICovXG59XG5cbmV4cG9ydCBkZWZhdWx0IFdhcm5pbmdcbiJdLCJmaWxlIjoid2FybmluZy5qcyJ9
diff --git a/assets/node_modules/postcss/node_modules/source-map/CHANGELOG.md b/assets/node_modules/postcss/node_modules/source-map/CHANGELOG.md
deleted file mode 100644
index 3a8c066..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/CHANGELOG.md
+++ /dev/null
@@ -1,301 +0,0 @@
-# Change Log
-
-## 0.5.6
-
-* Fix for regression when people were using numbers as names in source maps. See
- #236.
-
-## 0.5.5
-
-* Fix "regression" of unsupported, implementation behavior that half the world
- happens to have come to depend on. See #235.
-
-* Fix regression involving function hoisting in SpiderMonkey. See #233.
-
-## 0.5.4
-
-* Large performance improvements to source-map serialization. See #228 and #229.
-
-## 0.5.3
-
-* Do not include unnecessary distribution files. See
- commit ef7006f8d1647e0a83fdc60f04f5a7ca54886f86.
-
-## 0.5.2
-
-* Include browser distributions of the library in package.json's `files`. See
- issue #212.
-
-## 0.5.1
-
-* Fix latent bugs in IndexedSourceMapConsumer.prototype._parseMappings. See
- ff05274becc9e6e1295ed60f3ea090d31d843379.
-
-## 0.5.0
-
-* Node 0.8 is no longer supported.
-
-* Use webpack instead of dryice for bundling.
-
-* Big speedups serializing source maps. See pull request #203.
-
-* Fix a bug with `SourceMapConsumer.prototype.sourceContentFor` and sources that
- explicitly start with the source root. See issue #199.
-
-## 0.4.4
-
-* Fix an issue where using a `SourceMapGenerator` after having created a
- `SourceMapConsumer` from it via `SourceMapConsumer.fromSourceMap` failed. See
- issue #191.
-
-* Fix an issue with where `SourceMapGenerator` would mistakenly consider
- different mappings as duplicates of each other and avoid generating them. See
- issue #192.
-
-## 0.4.3
-
-* A very large number of performance improvements, particularly when parsing
- source maps. Collectively about 75% of time shaved off of the source map
- parsing benchmark!
-
-* Fix a bug in `SourceMapConsumer.prototype.allGeneratedPositionsFor` and fuzzy
- searching in the presence of a column option. See issue #177.
-
-* Fix a bug with joining a source and its source root when the source is above
- the root. See issue #182.
-
-* Add the `SourceMapConsumer.prototype.hasContentsOfAllSources` method to
- determine when all sources' contents are inlined into the source map. See
- issue #190.
-
-## 0.4.2
-
-* Add an `.npmignore` file so that the benchmarks aren't pulled down by
- dependent projects. Issue #169.
-
-* Add an optional `column` argument to
- `SourceMapConsumer.prototype.allGeneratedPositionsFor` and better handle lines
- with no mappings. Issues #172 and #173.
-
-## 0.4.1
-
-* Fix accidentally defining a global variable. #170.
-
-## 0.4.0
-
-* The default direction for fuzzy searching was changed back to its original
- direction. See #164.
-
-* There is now a `bias` option you can supply to `SourceMapConsumer` to control
- the fuzzy searching direction. See #167.
-
-* About an 8% speed up in parsing source maps. See #159.
-
-* Added a benchmark for parsing and generating source maps.
-
-## 0.3.0
-
-* Change the default direction that searching for positions fuzzes when there is
- not an exact match. See #154.
-
-* Support for environments using json2.js for JSON serialization. See #156.
-
-## 0.2.0
-
-* Support for consuming "indexed" source maps which do not have any remote
- sections. See pull request #127. This introduces a minor backwards
- incompatibility if you are monkey patching `SourceMapConsumer.prototype`
- methods.
-
-## 0.1.43
-
-* Performance improvements for `SourceMapGenerator` and `SourceNode`. See issue
- #148 for some discussion and issues #150, #151, and #152 for implementations.
-
-## 0.1.42
-
-* Fix an issue where `SourceNode`s from different versions of the source-map
- library couldn't be used in conjunction with each other. See issue #142.
-
-## 0.1.41
-
-* Fix a bug with getting the source content of relative sources with a "./"
- prefix. See issue #145 and [Bug 1090768](bugzil.la/1090768).
-
-* Add the `SourceMapConsumer.prototype.computeColumnSpans` method to compute the
- column span of each mapping.
-
-* Add the `SourceMapConsumer.prototype.allGeneratedPositionsFor` method to find
- all generated positions associated with a given original source and line.
-
-## 0.1.40
-
-* Performance improvements for parsing source maps in SourceMapConsumer.
-
-## 0.1.39
-
-* Fix a bug where setting a source's contents to null before any source content
- had been set before threw a TypeError. See issue #131.
-
-## 0.1.38
-
-* Fix a bug where finding relative paths from an empty path were creating
- absolute paths. See issue #129.
-
-## 0.1.37
-
-* Fix a bug where if the source root was an empty string, relative source paths
- would turn into absolute source paths. Issue #124.
-
-## 0.1.36
-
-* Allow the `names` mapping property to be an empty string. Issue #121.
-
-## 0.1.35
-
-* A third optional parameter was added to `SourceNode.fromStringWithSourceMap`
- to specify a path that relative sources in the second parameter should be
- relative to. Issue #105.
-
-* If no file property is given to a `SourceMapGenerator`, then the resulting
- source map will no longer have a `null` file property. The property will
- simply not exist. Issue #104.
-
-* Fixed a bug where consecutive newlines were ignored in `SourceNode`s.
- Issue #116.
-
-## 0.1.34
-
-* Make `SourceNode` work with windows style ("\r\n") newlines. Issue #103.
-
-* Fix bug involving source contents and the
- `SourceMapGenerator.prototype.applySourceMap`. Issue #100.
-
-## 0.1.33
-
-* Fix some edge cases surrounding path joining and URL resolution.
-
-* Add a third parameter for relative path to
- `SourceMapGenerator.prototype.applySourceMap`.
-
-* Fix issues with mappings and EOLs.
-
-## 0.1.32
-
-* Fixed a bug where SourceMapConsumer couldn't handle negative relative columns
- (issue 92).
-
-* Fixed test runner to actually report number of failed tests as its process
- exit code.
-
-* Fixed a typo when reporting bad mappings (issue 87).
-
-## 0.1.31
-
-* Delay parsing the mappings in SourceMapConsumer until queried for a source
- location.
-
-* Support Sass source maps (which at the time of writing deviate from the spec
- in small ways) in SourceMapConsumer.
-
-## 0.1.30
-
-* Do not join source root with a source, when the source is a data URI.
-
-* Extend the test runner to allow running single specific test files at a time.
-
-* Performance improvements in `SourceNode.prototype.walk` and
- `SourceMapConsumer.prototype.eachMapping`.
-
-* Source map browser builds will now work inside Workers.
-
-* Better error messages when attempting to add an invalid mapping to a
- `SourceMapGenerator`.
-
-## 0.1.29
-
-* Allow duplicate entries in the `names` and `sources` arrays of source maps
- (usually from TypeScript) we are parsing. Fixes github issue 72.
-
-## 0.1.28
-
-* Skip duplicate mappings when creating source maps from SourceNode; github
- issue 75.
-
-## 0.1.27
-
-* Don't throw an error when the `file` property is missing in SourceMapConsumer,
- we don't use it anyway.
-
-## 0.1.26
-
-* Fix SourceNode.fromStringWithSourceMap for empty maps. Fixes github issue 70.
-
-## 0.1.25
-
-* Make compatible with browserify
-
-## 0.1.24
-
-* Fix issue with absolute paths and `file://` URIs. See
- https://bugzilla.mozilla.org/show_bug.cgi?id=885597
-
-## 0.1.23
-
-* Fix issue with absolute paths and sourcesContent, github issue 64.
-
-## 0.1.22
-
-* Ignore duplicate mappings in SourceMapGenerator. Fixes github issue 21.
-
-## 0.1.21
-
-* Fixed handling of sources that start with a slash so that they are relative to
- the source root's host.
-
-## 0.1.20
-
-* Fixed github issue #43: absolute URLs aren't joined with the source root
- anymore.
-
-## 0.1.19
-
-* Using Travis CI to run tests.
-
-## 0.1.18
-
-* Fixed a bug in the handling of sourceRoot.
-
-## 0.1.17
-
-* Added SourceNode.fromStringWithSourceMap.
-
-## 0.1.16
-
-* Added missing documentation.
-
-* Fixed the generating of empty mappings in SourceNode.
-
-## 0.1.15
-
-* Added SourceMapGenerator.applySourceMap.
-
-## 0.1.14
-
-* The sourceRoot is now handled consistently.
-
-## 0.1.13
-
-* Added SourceMapGenerator.fromSourceMap.
-
-## 0.1.12
-
-* SourceNode now generates empty mappings too.
-
-## 0.1.11
-
-* Added name support to SourceNode.
-
-## 0.1.10
-
-* Added sourcesContent support to the customer and generator.
diff --git a/assets/node_modules/postcss/node_modules/source-map/LICENSE b/assets/node_modules/postcss/node_modules/source-map/LICENSE
deleted file mode 100644
index ed1b7cf..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/LICENSE
+++ /dev/null
@@ -1,28 +0,0 @@
-
-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/assets/node_modules/postcss/node_modules/source-map/README.md b/assets/node_modules/postcss/node_modules/source-map/README.md
deleted file mode 100644
index fea4beb..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/README.md
+++ /dev/null
@@ -1,742 +0,0 @@
-# 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. Line numbers in
- this library are 1-based (note that the underlying source map
- specification uses 0-based line numbers -- this library handles the
- translation).
-
-* `column`: The column number in the generated source. Column numbers
- in this library are 0-based.
-
-* `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. The line number is 1-based.
-
-* `column`: The column number in the original source, or null if this
- information is not available. The column number is 0-based.
-
-* `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. The line number is
- 1-based.
-
-* `column`: The column number in the original source. The column
- number is 0-based.
-
-and an object is returned with the following properties:
-
-* `line`: The line number in the generated source, or null. The line
- number is 1-based.
-
-* `column`: The column number in the generated source, or null. The
- column number is 0-based.
-
-```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. The line number is
- 1-based.
-
-* `column`: Optional. The column number in the original source. The
- column number is 0-based.
-
-and an array of objects is returned, each with the following properties:
-
-* `line`: The line number in the generated source, or null. The line
- number is 1-based.
-
-* `column`: The column number in the generated source, or null. The
- column number is 0-based.
-
-```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. The line number is 1-based.
-
-* `column`: The original column number associated with this source node, or null
- if it isn't associated with an original column. The column number
- is 0-based.
-
-* `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/assets/node_modules/postcss/node_modules/source-map/dist/source-map.debug.js b/assets/node_modules/postcss/node_modules/source-map/dist/source-map.debug.js
deleted file mode 100644
index aad0620..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/dist/source-map.debug.js
+++ /dev/null
@@ -1,3234 +0,0 @@
-(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 sourceRelative = sourceFile;
- if (sourceRoot !== null) {
- sourceRelative = util.relative(sourceRoot, sourceFile);
- }
-
- if (!generator._sources.has(sourceRelative)) {
- generator._sources.add(sourceRelative);
- }
-
- 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+))?(.*)$/;
- 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) === '/' || urlRegexp.test(aPath);
- };
-
- /**
- * 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 = 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 || onlyCompareOriginal) {
- return cmp;
- }
-
- cmp = mappingA.generatedColumn - mappingB.generatedColumn;
- if (cmp !== 0) {
- return cmp;
- }
-
- cmp = mappingA.generatedLine - mappingB.generatedLine;
- if (cmp !== 0) {
- return cmp;
- }
-
- return strcmp(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 = 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.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
-
- function strcmp(aStr1, aStr2) {
- if (aStr1 === aStr2) {
- return 0;
- }
-
- if (aStr1 === null) {
- return 1; // aStr2 !== null
- }
-
- if (aStr2 === null) {
- return -1; // aStr1 !== null
- }
-
- 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;
-
- /**
- * Strip any JSON XSSI avoidance prefix from the string (as documented
- * in the source maps specification), and then parse the string as
- * JSON.
- */
- function parseSourceMapInput(str) {
- return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ''));
- }
- exports.parseSourceMapInput = parseSourceMapInput;
-
- /**
- * Compute the URL of a source given the the source root, the source's
- * URL, and the source map's URL.
- */
- function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {
- sourceURL = sourceURL || '';
-
- if (sourceRoot) {
- // This follows what Chrome does.
- if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {
- sourceRoot += '/';
- }
- // The spec says:
- // Line 4: An optional source root, useful for relocating source
- // files on a server or removing repeated values in the
- // “sources” entry. This value is prepended to the individual
- // entries in the “source” field.
- sourceURL = sourceRoot + sourceURL;
- }
-
- // Historically, SourceMapConsumer did not take the sourceMapURL as
- // a parameter. This mode is still somewhat supported, which is why
- // this code block is conditional. However, it's preferable to pass
- // the source map URL to SourceMapConsumer, so that this function
- // can implement the source URL resolution algorithm as outlined in
- // the spec. This block is basically the equivalent of:
- // new URL(sourceURL, sourceMapURL).toString()
- // ... except it avoids using URL, which wasn't available in the
- // older releases of node still supported by this library.
- //
- // The spec says:
- // If the sources are not absolute URLs after prepending of the
- // “sourceRoot”, the sources are resolved relative to the
- // SourceMap (like resolving script src in a html document).
- if (sourceMapURL) {
- var parsed = urlParse(sourceMapURL);
- if (!parsed) {
- throw new Error("sourceMapURL could not be parsed");
- }
- if (parsed.path) {
- // Strip the last path component, but keep the "/".
- var index = parsed.path.lastIndexOf('/');
- if (index >= 0) {
- parsed.path = parsed.path.substring(0, index + 1);
- }
- }
- sourceURL = join(urlGenerate(parsed), sourceURL);
- }
-
- return normalize(sourceURL);
- }
- exports.computeSourceURL = computeSourceURL;
-
-
-/***/ }),
-/* 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, aSourceMapURL) {
- var sourceMap = aSourceMap;
- if (typeof aSourceMap === 'string') {
- sourceMap = util.parseSourceMapInput(aSourceMap);
- }
-
- return sourceMap.sections != null
- ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)
- : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);
- }
-
- SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {
- return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);
- }
-
- /**
- * 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', {
- configurable: true,
- enumerable: true,
- get: function () {
- if (!this.__generatedMappings) {
- this._parseMappings(this._mappings, this.sourceRoot);
- }
-
- return this.__generatedMappings;
- }
- });
-
- SourceMapConsumer.prototype.__originalMappings = null;
- Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
- configurable: true,
- enumerable: true,
- 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);
- source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);
- 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. The line number is 1-based.
- * - column: Optional. the column number in the original source.
- * The column number is 0-based.
- *
- * and an array of objects is returned, each with the following properties:
- *
- * - line: The line number in the generated source, or null. The
- * line number is 1-based.
- * - column: The column number in the generated source, or null.
- * The column number is 0-based.
- */
- 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)
- };
-
- needle.source = this._findSourceIndex(needle.source);
- if (needle.source < 0) {
- return [];
- }
-
- 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 first 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;"
- * }
- *
- * The second parameter, if given, is a string whose value is the URL
- * at which the source map was found. This URL is used to compute the
- * sources array.
- *
- * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
- */
- function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {
- var sourceMap = aSourceMap;
- if (typeof aSourceMap === 'string') {
- sourceMap = util.parseSourceMapInput(aSourceMap);
- }
-
- 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);
- }
-
- if (sourceRoot) {
- sourceRoot = util.normalize(sourceRoot);
- }
-
- 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._absoluteSources = this._sources.toArray().map(function (s) {
- return util.computeSourceURL(sourceRoot, s, aSourceMapURL);
- });
-
- this.sourceRoot = sourceRoot;
- this.sourcesContent = sourcesContent;
- this._mappings = mappings;
- this._sourceMapURL = aSourceMapURL;
- this.file = file;
- }
-
- BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
- BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
-
- /**
- * Utility function to find the index of a source. Returns -1 if not
- * found.
- */
- BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {
- var relativeSource = aSource;
- if (this.sourceRoot != null) {
- relativeSource = util.relative(this.sourceRoot, relativeSource);
- }
-
- if (this._sources.has(relativeSource)) {
- return this._sources.indexOf(relativeSource);
- }
-
- // Maybe aSource is an absolute URL as returned by |sources|. In
- // this case we can't simply undo the transform.
- var i;
- for (i = 0; i < this._absoluteSources.length; ++i) {
- if (this._absoluteSources[i] == aSource) {
- return i;
- }
- }
-
- return -1;
- };
-
- /**
- * Create a BasicSourceMapConsumer from a SourceMapGenerator.
- *
- * @param SourceMapGenerator aSourceMap
- * The source map that will be consumed.
- * @param String aSourceMapURL
- * The URL at which the source map can be found (optional)
- * @returns BasicSourceMapConsumer
- */
- BasicSourceMapConsumer.fromSourceMap =
- function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {
- 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;
- smc._sourceMapURL = aSourceMapURL;
- smc._absoluteSources = smc._sources.toArray().map(function (s) {
- return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);
- });
-
- // 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._absoluteSources.slice();
- }
- });
-
- /**
- * 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. The line number
- * is 1-based.
- * - column: The column number in the generated source. The column
- * number is 0-based.
- * - 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. The
- * line number is 1-based.
- * - column: The column number in the original source, or null. The
- * column number is 0-based.
- * - 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);
- source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);
- }
- 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;
- }
-
- var index = this._findSourceIndex(aSource);
- if (index >= 0) {
- return this.sourcesContent[index];
- }
-
- var relativeSource = aSource;
- if (this.sourceRoot != null) {
- relativeSource = util.relative(this.sourceRoot, relativeSource);
- }
-
- 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 = relativeSource.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("/" + relativeSource)) {
- return this.sourcesContent[this._sources.indexOf("/" + relativeSource)];
- }
- }
-
- // 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('"' + relativeSource + '" 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. The line number
- * is 1-based.
- * - column: The column number in the original source. The column
- * number is 0-based.
- * - 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. The
- * line number is 1-based.
- * - column: The column number in the generated source, or null.
- * The column number is 0-based.
- */
- BasicSourceMapConsumer.prototype.generatedPositionFor =
- function SourceMapConsumer_generatedPositionFor(aArgs) {
- var source = util.getArg(aArgs, 'source');
- source = this._findSourceIndex(source);
- if (source < 0) {
- return {
- line: null,
- column: null,
- lastColumn: null
- };
- }
-
- 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 first 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;"
- * }
- * }],
- * }
- *
- * The second parameter, if given, is a string whose value is the URL
- * at which the source map was found. This URL is used to compute the
- * sources array.
- *
- * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
- */
- function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {
- var sourceMap = aSourceMap;
- if (typeof aSourceMap === 'string') {
- sourceMap = util.parseSourceMapInput(aSourceMap);
- }
-
- 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'), aSourceMapURL)
- }
- });
- }
-
- 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. The line number
- * is 1-based.
- * - column: The column number in the generated source. The column
- * number is 0-based.
- *
- * 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. The
- * line number is 1-based.
- * - column: The column number in the original source, or null. The
- * column number is 0-based.
- * - 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. The line number
- * is 1-based.
- * - column: The column number in the original source. The column
- * number is 0-based.
- *
- * and an object is returned with the following properties:
- *
- * - line: The line number in the generated source, or null. The
- * line number is 1-based.
- * - column: The column number in the generated source, or null.
- * The column number is 0-based.
- */
- 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._findSourceIndex(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);
- source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);
- this._sources.add(source);
- source = this._sources.indexOf(source);
-
- var name = null;
- if (mapping.name) {
- 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCAxNjI0YzcyOTliODg3ZjdiZGY2NCIsIndlYnBhY2s6Ly8vLi9zb3VyY2UtbWFwLmpzIiwid2VicGFjazovLy8uL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LXZscS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LmpzIiwid2VicGFjazovLy8uL2xpYi91dGlsLmpzIiwid2VicGFjazovLy8uL2xpYi9hcnJheS1zZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21hcHBpbmctbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmluYXJ5LXNlYXJjaC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcXVpY2stc29ydC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW5vZGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87QUNWQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNQQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJDQUEwQyxTQUFTO0FBQ25EO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUJBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQ3hhQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBMkQ7QUFDM0QscUJBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7O0FBRUg7QUFDQTtBQUNBOzs7Ozs7O0FDM0lBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFnQjtBQUNoQixpQkFBZ0I7O0FBRWhCLG9CQUFtQjtBQUNuQixxQkFBb0I7O0FBRXBCLGlCQUFnQjtBQUNoQixpQkFBZ0I7O0FBRWhCLGlCQUFnQjtBQUNoQixrQkFBaUI7O0FBRWpCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FDbEVBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBMkIsUUFBUTtBQUNuQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWE7QUFDYjs7QUFFQTtBQUNBLGVBQWM7QUFDZDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUFzQztBQUN0QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FDdmVBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUFzQyxTQUFTO0FBQy9DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7QUN4SEEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFnQjtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7QUM5RUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7O0FBRVg7QUFDQTtBQUNBLFFBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCLE1BQU07QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWEsa0NBQWtDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVEQUFzRCxZQUFZO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0NBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBeUIsY0FBYztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXVCLHdDQUF3QztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUErQyxtQkFBbUIsRUFBRTtBQUNwRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBaUIsb0JBQW9CO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBNkIsTUFBTTtBQUNuQztBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBbUIsMkJBQTJCO0FBQzlDLHNCQUFxQiwrQ0FBK0M7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CLDJCQUEyQjtBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQiwyQkFBMkI7QUFDOUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CLDJCQUEyQjtBQUM5QztBQUNBO0FBQ0Esc0JBQXFCLDRCQUE0QjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQ3huQ0EsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7QUM5R0EsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE1BQU07QUFDakI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBVyxNQUFNO0FBQ2pCO0FBQ0EsWUFBVyxTQUFTO0FBQ3BCO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBVyxNQUFNO0FBQ2pCO0FBQ0EsWUFBVyxTQUFTO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNqSEEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWlDLFFBQVE7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQTZDLFNBQVM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQW9CO0FBQ3BCO0FBQ0E7QUFDQSx1Q0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWUsV0FBVztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQStDLFNBQVM7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBeUMsU0FBUztBQUNsRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxZQUFXO0FBQ1g7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsNkNBQTRDLGNBQWM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxjQUFhO0FBQ2I7QUFDQSxZQUFXO0FBQ1g7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQSxJQUFHOztBQUVILFdBQVU7QUFDVjs7QUFFQSIsImZpbGUiOiJzb3VyY2UtbWFwLmRlYnVnLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wic291cmNlTWFwXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInNvdXJjZU1hcFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIFxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZXhwb3J0czoge30sXG4gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuIFx0XHRcdGxvYWRlZDogZmFsc2VcbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL2Jvb3RzdHJhcCAxNjI0YzcyOTliODg3ZjdiZGY2NCIsIi8qXG4gKiBDb3B5cmlnaHQgMjAwOS0yMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRS50eHQgb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbmV4cG9ydHMuU291cmNlTWFwR2VuZXJhdG9yID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1nZW5lcmF0b3InKS5Tb3VyY2VNYXBHZW5lcmF0b3I7XG5leHBvcnRzLlNvdXJjZU1hcENvbnN1bWVyID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1jb25zdW1lcicpLlNvdXJjZU1hcENvbnN1bWVyO1xuZXhwb3J0cy5Tb3VyY2VOb2RlID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW5vZGUnKS5Tb3VyY2VOb2RlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zb3VyY2UtbWFwLmpzXG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxudmFyIGJhc2U2NFZMUSA9IHJlcXVpcmUoJy4vYmFzZTY0LXZscScpO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcbnZhciBBcnJheVNldCA9IHJlcXVpcmUoJy4vYXJyYXktc2V0JykuQXJyYXlTZXQ7XG52YXIgTWFwcGluZ0xpc3QgPSByZXF1aXJlKCcuL21hcHBpbmctbGlzdCcpLk1hcHBpbmdMaXN0O1xuXG4vKipcbiAqIEFuIGluc3RhbmNlIG9mIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3IgcmVwcmVzZW50cyBhIHNvdXJjZSBtYXAgd2hpY2ggaXNcbiAqIGJlaW5nIGJ1aWx0IGluY3JlbWVudGFsbHkuIFlvdSBtYXkgcGFzcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nXG4gKiBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBmaWxlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKiAgIC0gc291cmNlUm9vdDogQSByb290IGZvciBhbGwgcmVsYXRpdmUgVVJMcyBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKi9cbmZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcihhQXJncykge1xuICBpZiAoIWFBcmdzKSB7XG4gICAgYUFyZ3MgPSB7fTtcbiAgfVxuICB0aGlzLl9maWxlID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdmaWxlJywgbnVsbCk7XG4gIHRoaXMuX3NvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZVJvb3QnLCBudWxsKTtcbiAgdGhpcy5fc2tpcFZhbGlkYXRpb24gPSB1dGlsLmdldEFyZyhhQXJncywgJ3NraXBWYWxpZGF0aW9uJywgZmFsc2UpO1xuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX21hcHBpbmdzID0gbmV3IE1hcHBpbmdMaXN0KCk7XG4gIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG59XG5cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgU291cmNlTWFwR2VuZXJhdG9yIGJhc2VkIG9uIGEgU291cmNlTWFwQ29uc3VtZXJcbiAqXG4gKiBAcGFyYW0gYVNvdXJjZU1hcENvbnN1bWVyIFRoZSBTb3VyY2VNYXAuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5mcm9tU291cmNlTWFwID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2Zyb21Tb3VyY2VNYXAoYVNvdXJjZU1hcENvbnN1bWVyKSB7XG4gICAgdmFyIHNvdXJjZVJvb3QgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlUm9vdDtcbiAgICB2YXIgZ2VuZXJhdG9yID0gbmV3IFNvdXJjZU1hcEdlbmVyYXRvcih7XG4gICAgICBmaWxlOiBhU291cmNlTWFwQ29uc3VtZXIuZmlsZSxcbiAgICAgIHNvdXJjZVJvb3Q6IHNvdXJjZVJvb3RcbiAgICB9KTtcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuZWFjaE1hcHBpbmcoZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIHZhciBuZXdNYXBwaW5nID0ge1xuICAgICAgICBnZW5lcmF0ZWQ6IHtcbiAgICAgICAgICBsaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICBuZXdNYXBwaW5nLnNvdXJjZSA9IG1hcHBpbmcuc291cmNlO1xuICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgbmV3TWFwcGluZy5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIG5ld01hcHBpbmcuc291cmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5ld01hcHBpbmcub3JpZ2luYWwgPSB7XG4gICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKG1hcHBpbmcubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgbmV3TWFwcGluZy5uYW1lID0gbWFwcGluZy5uYW1lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGdlbmVyYXRvci5hZGRNYXBwaW5nKG5ld01hcHBpbmcpO1xuICAgIH0pO1xuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBzb3VyY2VSZWxhdGl2ZSA9IHNvdXJjZUZpbGU7XG4gICAgICBpZiAoc291cmNlUm9vdCAhPT0gbnVsbCkge1xuICAgICAgICBzb3VyY2VSZWxhdGl2ZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZ2VuZXJhdG9yLl9zb3VyY2VzLmhhcyhzb3VyY2VSZWxhdGl2ZSkpIHtcbiAgICAgICAgZ2VuZXJhdG9yLl9zb3VyY2VzLmFkZChzb3VyY2VSZWxhdGl2ZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGdlbmVyYXRvci5zZXRTb3VyY2VDb250ZW50KHNvdXJjZUZpbGUsIGNvbnRlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH07XG5cbi8qKlxuICogQWRkIGEgc2luZ2xlIG1hcHBpbmcgZnJvbSBvcmlnaW5hbCBzb3VyY2UgbGluZSBhbmQgY29sdW1uIHRvIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBmb3IgdGhpcyBzb3VyY2UgbWFwIGJlaW5nIGNyZWF0ZWQuIFRoZSBtYXBwaW5nXG4gKiBvYmplY3Qgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBnZW5lcmF0ZWQ6IEFuIG9iamVjdCB3aXRoIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucy5cbiAqICAgLSBvcmlnaW5hbDogQW4gb2JqZWN0IHdpdGggdGhlIG9yaWdpbmFsIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMuXG4gKiAgIC0gc291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUgKHJlbGF0aXZlIHRvIHRoZSBzb3VyY2VSb290KS5cbiAqICAgLSBuYW1lOiBBbiBvcHRpb25hbCBvcmlnaW5hbCB0b2tlbiBuYW1lIGZvciB0aGlzIG1hcHBpbmcuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYWRkTWFwcGluZyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9hZGRNYXBwaW5nKGFBcmdzKSB7XG4gICAgdmFyIGdlbmVyYXRlZCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnZ2VuZXJhdGVkJyk7XG4gICAgdmFyIG9yaWdpbmFsID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdvcmlnaW5hbCcsIG51bGwpO1xuICAgIHZhciBzb3VyY2UgPSB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScsIG51bGwpO1xuICAgIHZhciBuYW1lID0gdXRpbC5nZXRBcmcoYUFyZ3MsICduYW1lJywgbnVsbCk7XG5cbiAgICBpZiAoIXRoaXMuX3NraXBWYWxpZGF0aW9uKSB7XG4gICAgICB0aGlzLl92YWxpZGF0ZU1hcHBpbmcoZ2VuZXJhdGVkLCBvcmlnaW5hbCwgc291cmNlLCBuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZSA9IFN0cmluZyhzb3VyY2UpO1xuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgIT0gbnVsbCkge1xuICAgICAgbmFtZSA9IFN0cmluZyhuYW1lKTtcbiAgICAgIGlmICghdGhpcy5fbmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgIHRoaXMuX25hbWVzLmFkZChuYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9tYXBwaW5ncy5hZGQoe1xuICAgICAgZ2VuZXJhdGVkTGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICBnZW5lcmF0ZWRDb2x1bW46IGdlbmVyYXRlZC5jb2x1bW4sXG4gICAgICBvcmlnaW5hbExpbmU6IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwubGluZSxcbiAgICAgIG9yaWdpbmFsQ29sdW1uOiBvcmlnaW5hbCAhPSBudWxsICYmIG9yaWdpbmFsLmNvbHVtbixcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgbmFtZTogbmFtZVxuICAgIH0pO1xuICB9O1xuXG4vKipcbiAqIFNldCB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGEgc291cmNlIGZpbGUuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuc2V0U291cmNlQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgIHZhciBzb3VyY2UgPSBhU291cmNlRmlsZTtcbiAgICBpZiAodGhpcy5fc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuX3NvdXJjZVJvb3QsIHNvdXJjZSk7XG4gICAgfVxuXG4gICAgaWYgKGFTb3VyY2VDb250ZW50ICE9IG51bGwpIHtcbiAgICAgIC8vIEFkZCB0aGUgc291cmNlIGNvbnRlbnQgdG8gdGhlIF9zb3VyY2VzQ29udGVudHMgbWFwLlxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IF9zb3VyY2VzQ29udGVudHMgbWFwIGlmIHRoZSBwcm9wZXJ0eSBpcyBudWxsLlxuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSldID0gYVNvdXJjZUNvbnRlbnQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgIC8vIFJlbW92ZSB0aGUgc291cmNlIGZpbGUgZnJvbSB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAvLyBJZiB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAgaXMgZW1wdHksIHNldCB0aGUgcHJvcGVydHkgdG8gbnVsbC5cbiAgICAgIGRlbGV0ZSB0aGlzLl9zb3VyY2VzQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhzb3VyY2UpXTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLl9zb3VyY2VzQ29udGVudHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBBcHBsaWVzIHRoZSBtYXBwaW5ncyBvZiBhIHN1Yi1zb3VyY2UtbWFwIGZvciBhIHNwZWNpZmljIHNvdXJjZSBmaWxlIHRvIHRoZVxuICogc291cmNlIG1hcCBiZWluZyBnZW5lcmF0ZWQuIEVhY2ggbWFwcGluZyB0byB0aGUgc3VwcGxpZWQgc291cmNlIGZpbGUgaXNcbiAqIHJld3JpdHRlbiB1c2luZyB0aGUgc3VwcGxpZWQgc291cmNlIG1hcC4gTm90ZTogVGhlIHJlc29sdXRpb24gZm9yIHRoZVxuICogcmVzdWx0aW5nIG1hcHBpbmdzIGlzIHRoZSBtaW5pbWl1bSBvZiB0aGlzIG1hcCBhbmQgdGhlIHN1cHBsaWVkIG1hcC5cbiAqXG4gKiBAcGFyYW0gYVNvdXJjZU1hcENvbnN1bWVyIFRoZSBzb3VyY2UgbWFwIHRvIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gYVNvdXJjZUZpbGUgT3B0aW9uYWwuIFRoZSBmaWxlbmFtZSBvZiB0aGUgc291cmNlIGZpbGUuXG4gKiAgICAgICAgSWYgb21pdHRlZCwgU291cmNlTWFwQ29uc3VtZXIncyBmaWxlIHByb3BlcnR5IHdpbGwgYmUgdXNlZC5cbiAqIEBwYXJhbSBhU291cmNlTWFwUGF0aCBPcHRpb25hbC4gVGhlIGRpcm5hbWUgb2YgdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBtYXBcbiAqICAgICAgICB0byBiZSBhcHBsaWVkLiBJZiByZWxhdGl2ZSwgaXQgaXMgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcENvbnN1bWVyLlxuICogICAgICAgIFRoaXMgcGFyYW1ldGVyIGlzIG5lZWRlZCB3aGVuIHRoZSB0d28gc291cmNlIG1hcHMgYXJlbid0IGluIHRoZSBzYW1lXG4gKiAgICAgICAgZGlyZWN0b3J5LCBhbmQgdGhlIHNvdXJjZSBtYXAgdG8gYmUgYXBwbGllZCBjb250YWlucyByZWxhdGl2ZSBzb3VyY2VcbiAqICAgICAgICBwYXRocy4gSWYgc28sIHRob3NlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBuZWVkIHRvIGJlIHJld3JpdHRlblxuICogICAgICAgIHJlbGF0aXZlIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3IuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfYXBwbHlTb3VyY2VNYXAoYVNvdXJjZU1hcENvbnN1bWVyLCBhU291cmNlRmlsZSwgYVNvdXJjZU1hcFBhdGgpIHtcbiAgICB2YXIgc291cmNlRmlsZSA9IGFTb3VyY2VGaWxlO1xuICAgIC8vIElmIGFTb3VyY2VGaWxlIGlzIG9taXR0ZWQsIHdlIHdpbGwgdXNlIHRoZSBmaWxlIHByb3BlcnR5IG9mIHRoZSBTb3VyY2VNYXBcbiAgICBpZiAoYVNvdXJjZUZpbGUgPT0gbnVsbCkge1xuICAgICAgaWYgKGFTb3VyY2VNYXBDb25zdW1lci5maWxlID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdTb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLmFwcGx5U291cmNlTWFwIHJlcXVpcmVzIGVpdGhlciBhbiBleHBsaWNpdCBzb3VyY2UgZmlsZSwgJyArXG4gICAgICAgICAgJ29yIHRoZSBzb3VyY2UgbWFwXFwncyBcImZpbGVcIiBwcm9wZXJ0eS4gQm90aCB3ZXJlIG9taXR0ZWQuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgc291cmNlRmlsZSA9IGFTb3VyY2VNYXBDb25zdW1lci5maWxlO1xuICAgIH1cbiAgICB2YXIgc291cmNlUm9vdCA9IHRoaXMuX3NvdXJjZVJvb3Q7XG4gICAgLy8gTWFrZSBcInNvdXJjZUZpbGVcIiByZWxhdGl2ZSBpZiBhbiBhYnNvbHV0ZSBVcmwgaXMgcGFzc2VkLlxuICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZUZpbGUpO1xuICAgIH1cbiAgICAvLyBBcHBseWluZyB0aGUgU291cmNlTWFwIGNhbiBhZGQgYW5kIHJlbW92ZSBpdGVtcyBmcm9tIHRoZSBzb3VyY2VzIGFuZFxuICAgIC8vIHRoZSBuYW1lcyBhcnJheS5cbiAgICB2YXIgbmV3U291cmNlcyA9IG5ldyBBcnJheVNldCgpO1xuICAgIHZhciBuZXdOYW1lcyA9IG5ldyBBcnJheVNldCgpO1xuXG4gICAgLy8gRmluZCBtYXBwaW5ncyBmb3IgdGhlIFwic291cmNlRmlsZVwiXG4gICAgdGhpcy5fbWFwcGluZ3MudW5zb3J0ZWRGb3JFYWNoKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgPT09IHNvdXJjZUZpbGUgJiYgbWFwcGluZy5vcmlnaW5hbExpbmUgIT0gbnVsbCkge1xuICAgICAgICAvLyBDaGVjayBpZiBpdCBjYW4gYmUgbWFwcGVkIGJ5IHRoZSBzb3VyY2UgbWFwLCB0aGVuIHVwZGF0ZSB0aGUgbWFwcGluZy5cbiAgICAgICAgdmFyIG9yaWdpbmFsID0gYVNvdXJjZU1hcENvbnN1bWVyLm9yaWdpbmFsUG9zaXRpb25Gb3Ioe1xuICAgICAgICAgIGxpbmU6IG1hcHBpbmcub3JpZ2luYWxMaW5lLFxuICAgICAgICAgIGNvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtblxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG9yaWdpbmFsLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gQ29weSBtYXBwaW5nXG4gICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICAgICAgaWYgKGFTb3VyY2VNYXBQYXRoICE9IG51bGwpIHtcbiAgICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gdXRpbC5qb2luKGFTb3VyY2VNYXBQYXRoLCBtYXBwaW5nLnNvdXJjZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgPSBvcmlnaW5hbC5saW5lO1xuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPSBvcmlnaW5hbC5jb2x1bW47XG4gICAgICAgICAgaWYgKG9yaWdpbmFsLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gb3JpZ2luYWwubmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlO1xuICAgICAgaWYgKHNvdXJjZSAhPSBudWxsICYmICFuZXdTb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICAgIG5ld1NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBuYW1lID0gbWFwcGluZy5uYW1lO1xuICAgICAgaWYgKG5hbWUgIT0gbnVsbCAmJiAhbmV3TmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgIG5ld05hbWVzLmFkZChuYW1lKTtcbiAgICAgIH1cblxuICAgIH0sIHRoaXMpO1xuICAgIHRoaXMuX3NvdXJjZXMgPSBuZXdTb3VyY2VzO1xuICAgIHRoaXMuX25hbWVzID0gbmV3TmFtZXM7XG5cbiAgICAvLyBDb3B5IHNvdXJjZXNDb250ZW50cyBvZiBhcHBsaWVkIG1hcC5cbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoYVNvdXJjZU1hcFBhdGggIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2VGaWxlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSwgdGhpcyk7XG4gIH07XG5cbi8qKlxuICogQSBtYXBwaW5nIGNhbiBoYXZlIG9uZSBvZiB0aGUgdGhyZWUgbGV2ZWxzIG9mIGRhdGE6XG4gKlxuICogICAxLiBKdXN0IHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24uXG4gKiAgIDIuIFRoZSBHZW5lcmF0ZWQgcG9zaXRpb24sIG9yaWdpbmFsIHBvc2l0aW9uLCBhbmQgb3JpZ2luYWwgc291cmNlLlxuICogICAzLiBHZW5lcmF0ZWQgYW5kIG9yaWdpbmFsIHBvc2l0aW9uLCBvcmlnaW5hbCBzb3VyY2UsIGFzIHdlbGwgYXMgYSBuYW1lXG4gKiAgICAgIHRva2VuLlxuICpcbiAqIFRvIG1haW50YWluIGNvbnNpc3RlbmN5LCB3ZSB2YWxpZGF0ZSB0aGF0IGFueSBuZXcgbWFwcGluZyBiZWluZyBhZGRlZCBmYWxsc1xuICogaW4gdG8gb25lIG9mIHRoZXNlIGNhdGVnb3JpZXMuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX3ZhbGlkYXRlTWFwcGluZyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl92YWxpZGF0ZU1hcHBpbmcoYUdlbmVyYXRlZCwgYU9yaWdpbmFsLCBhU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFOYW1lKSB7XG4gICAgLy8gV2hlbiBhT3JpZ2luYWwgaXMgdHJ1dGh5IGJ1dCBoYXMgZW1wdHkgdmFsdWVzIGZvciAubGluZSBhbmQgLmNvbHVtbixcbiAgICAvLyBpdCBpcyBtb3N0IGxpa2VseSBhIHByb2dyYW1tZXIgZXJyb3IuIEluIHRoaXMgY2FzZSB3ZSB0aHJvdyBhIHZlcnlcbiAgICAvLyBzcGVjaWZpYyBlcnJvciBtZXNzYWdlIHRvIHRyeSB0byBndWlkZSB0aGVtIHRoZSByaWdodCB3YXkuXG4gICAgLy8gRm9yIGV4YW1wbGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Qb2x5bWVyL3BvbHltZXItYnVuZGxlci9wdWxsLzUxOVxuICAgIGlmIChhT3JpZ2luYWwgJiYgdHlwZW9mIGFPcmlnaW5hbC5saW5lICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgYU9yaWdpbmFsLmNvbHVtbiAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ29yaWdpbmFsLmxpbmUgYW5kIG9yaWdpbmFsLmNvbHVtbiBhcmUgbm90IG51bWJlcnMgLS0geW91IHByb2JhYmx5IG1lYW50IHRvIG9taXQgJyArXG4gICAgICAgICAgICAndGhlIG9yaWdpbmFsIG1hcHBpbmcgZW50aXJlbHkgYW5kIG9ubHkgbWFwIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24uIElmIHNvLCBwYXNzICcgK1xuICAgICAgICAgICAgJ251bGwgZm9yIHRoZSBvcmlnaW5hbCBtYXBwaW5nIGluc3RlYWQgb2YgYW4gb2JqZWN0IHdpdGggZW1wdHkgb3IgbnVsbCB2YWx1ZXMuJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChhR2VuZXJhdGVkICYmICdsaW5lJyBpbiBhR2VuZXJhdGVkICYmICdjb2x1bW4nIGluIGFHZW5lcmF0ZWRcbiAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICYmICFhT3JpZ2luYWwgJiYgIWFTb3VyY2UgJiYgIWFOYW1lKSB7XG4gICAgICAvLyBDYXNlIDEuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2UgaWYgKGFHZW5lcmF0ZWQgJiYgJ2xpbmUnIGluIGFHZW5lcmF0ZWQgJiYgJ2NvbHVtbicgaW4gYUdlbmVyYXRlZFxuICAgICAgICAgICAgICYmIGFPcmlnaW5hbCAmJiAnbGluZScgaW4gYU9yaWdpbmFsICYmICdjb2x1bW4nIGluIGFPcmlnaW5hbFxuICAgICAgICAgICAgICYmIGFHZW5lcmF0ZWQubGluZSA+IDAgJiYgYUdlbmVyYXRlZC5jb2x1bW4gPj0gMFxuICAgICAgICAgICAgICYmIGFPcmlnaW5hbC5saW5lID4gMCAmJiBhT3JpZ2luYWwuY29sdW1uID49IDBcbiAgICAgICAgICAgICAmJiBhU291cmNlKSB7XG4gICAgICAvLyBDYXNlcyAyIGFuZCAzLlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtYXBwaW5nOiAnICsgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBnZW5lcmF0ZWQ6IGFHZW5lcmF0ZWQsXG4gICAgICAgIHNvdXJjZTogYVNvdXJjZSxcbiAgICAgICAgb3JpZ2luYWw6IGFPcmlnaW5hbCxcbiAgICAgICAgbmFtZTogYU5hbWVcbiAgICAgIH0pKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogU2VyaWFsaXplIHRoZSBhY2N1bXVsYXRlZCBtYXBwaW5ncyBpbiB0byB0aGUgc3RyZWFtIG9mIGJhc2UgNjQgVkxRc1xuICogc3BlY2lmaWVkIGJ5IHRoZSBzb3VyY2UgbWFwIGZvcm1hdC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fc2VyaWFsaXplTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3Jfc2VyaWFsaXplTWFwcGluZ3MoKSB7XG4gICAgdmFyIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRMaW5lID0gMTtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgcHJldmlvdXNTb3VyY2UgPSAwO1xuICAgIHZhciByZXN1bHQgPSAnJztcbiAgICB2YXIgbmV4dDtcbiAgICB2YXIgbWFwcGluZztcbiAgICB2YXIgbmFtZUlkeDtcbiAgICB2YXIgc291cmNlSWR4O1xuXG4gICAgdmFyIG1hcHBpbmdzID0gdGhpcy5fbWFwcGluZ3MudG9BcnJheSgpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBtYXBwaW5ncy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgbWFwcGluZyA9IG1hcHBpbmdzW2ldO1xuICAgICAgbmV4dCA9ICcnXG5cbiAgICAgIGlmIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgIT09IHByZXZpb3VzR2VuZXJhdGVkTGluZSkge1xuICAgICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgIHdoaWxlIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgIT09IHByZXZpb3VzR2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIG5leHQgKz0gJzsnO1xuICAgICAgICAgIHByZXZpb3VzR2VuZXJhdGVkTGluZSsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgaWYgKCF1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmcsIG1hcHBpbmdzW2kgLSAxXSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXh0ICs9ICcsJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKG1hcHBpbmcuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgc291cmNlSWR4ID0gdGhpcy5fc291cmNlcy5pbmRleE9mKG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKHNvdXJjZUlkeCAtIHByZXZpb3VzU291cmNlKTtcbiAgICAgICAgcHJldmlvdXNTb3VyY2UgPSBzb3VyY2VJZHg7XG5cbiAgICAgICAgLy8gbGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkIGluIFNvdXJjZU1hcCBzcGVjIHZlcnNpb24gM1xuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5vcmlnaW5hbExpbmUgLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbExpbmUpO1xuICAgICAgICBwcmV2aW91c09yaWdpbmFsTGluZSA9IG1hcHBpbmcub3JpZ2luYWxMaW5lIC0gMTtcblxuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5vcmlnaW5hbENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4pO1xuICAgICAgICBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBuYW1lSWR4ID0gdGhpcy5fbmFtZXMuaW5kZXhPZihtYXBwaW5nLm5hbWUpO1xuICAgICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShuYW1lSWR4IC0gcHJldmlvdXNOYW1lKTtcbiAgICAgICAgICBwcmV2aW91c05hbWUgPSBuYW1lSWR4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCArPSBuZXh0O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfZ2VuZXJhdGVTb3VyY2VzQ29udGVudChhU291cmNlcywgYVNvdXJjZVJvb3QpIHtcbiAgICByZXR1cm4gYVNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIGlmICghdGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGFTb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgc291cmNlID0gdXRpbC5yZWxhdGl2ZShhU291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgIH1cbiAgICAgIHZhciBrZXkgPSB1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSk7XG4gICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuX3NvdXJjZXNDb250ZW50cywga2V5KVxuICAgICAgICA/IHRoaXMuX3NvdXJjZXNDb250ZW50c1trZXldXG4gICAgICAgIDogbnVsbDtcbiAgICB9LCB0aGlzKTtcbiAgfTtcblxuLyoqXG4gKiBFeHRlcm5hbGl6ZSB0aGUgc291cmNlIG1hcC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS50b0pTT04gPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdG9KU09OKCkge1xuICAgIHZhciBtYXAgPSB7XG4gICAgICB2ZXJzaW9uOiB0aGlzLl92ZXJzaW9uLFxuICAgICAgc291cmNlczogdGhpcy5fc291cmNlcy50b0FycmF5KCksXG4gICAgICBuYW1lczogdGhpcy5fbmFtZXMudG9BcnJheSgpLFxuICAgICAgbWFwcGluZ3M6IHRoaXMuX3NlcmlhbGl6ZU1hcHBpbmdzKClcbiAgICB9O1xuICAgIGlmICh0aGlzLl9maWxlICE9IG51bGwpIHtcbiAgICAgIG1hcC5maWxlID0gdGhpcy5fZmlsZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgbWFwLnNvdXJjZVJvb3QgPSB0aGlzLl9zb3VyY2VSb290O1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICBtYXAuc291cmNlc0NvbnRlbnQgPSB0aGlzLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KG1hcC5zb3VyY2VzLCBtYXAuc291cmNlUm9vdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcDtcbiAgfTtcblxuLyoqXG4gKiBSZW5kZXIgdGhlIHNvdXJjZSBtYXAgYmVpbmcgZ2VuZXJhdGVkIHRvIGEgc3RyaW5nLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnRvU3RyaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3RvU3RyaW5nKCkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnRvSlNPTigpKTtcbiAgfTtcblxuZXhwb3J0cy5Tb3VyY2VNYXBHZW5lcmF0b3IgPSBTb3VyY2VNYXBHZW5lcmF0b3I7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICpcbiAqIEJhc2VkIG9uIHRoZSBCYXNlIDY0IFZMUSBpbXBsZW1lbnRhdGlvbiBpbiBDbG9zdXJlIENvbXBpbGVyOlxuICogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jbG9zdXJlLWNvbXBpbGVyL3NvdXJjZS9icm93c2UvdHJ1bmsvc3JjL2NvbS9nb29nbGUvZGVidWdnaW5nL3NvdXJjZW1hcC9CYXNlNjRWTFEuamF2YVxuICpcbiAqIENvcHlyaWdodCAyMDExIFRoZSBDbG9zdXJlIENvbXBpbGVyIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZVxuICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmdcbiAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZFxuICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICogICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkXG4gKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SU1xuICogXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVFxuICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SXG4gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSxcbiAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWVxuICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFXG4gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbnZhciBiYXNlNjQgPSByZXF1aXJlKCcuL2Jhc2U2NCcpO1xuXG4vLyBBIHNpbmdsZSBiYXNlIDY0IGRpZ2l0IGNhbiBjb250YWluIDYgYml0cyBvZiBkYXRhLiBGb3IgdGhlIGJhc2UgNjQgdmFyaWFibGVcbi8vIGxlbmd0aCBxdWFudGl0aWVzIHdlIHVzZSBpbiB0aGUgc291cmNlIG1hcCBzcGVjLCB0aGUgZmlyc3QgYml0IGlzIHRoZSBzaWduLFxuLy8gdGhlIG5leHQgZm91ciBiaXRzIGFyZSB0aGUgYWN0dWFsIHZhbHVlLCBhbmQgdGhlIDZ0aCBiaXQgaXMgdGhlXG4vLyBjb250aW51YXRpb24gYml0LiBUaGUgY29udGludWF0aW9uIGJpdCB0ZWxscyB1cyB3aGV0aGVyIHRoZXJlIGFyZSBtb3JlXG4vLyBkaWdpdHMgaW4gdGhpcyB2YWx1ZSBmb2xsb3dpbmcgdGhpcyBkaWdpdC5cbi8vXG4vLyAgIENvbnRpbnVhdGlvblxuLy8gICB8ICAgIFNpZ25cbi8vICAgfCAgICB8XG4vLyAgIFYgICAgVlxuLy8gICAxMDEwMTFcblxudmFyIFZMUV9CQVNFX1NISUZUID0gNTtcblxuLy8gYmluYXJ5OiAxMDAwMDBcbnZhciBWTFFfQkFTRSA9IDEgPDwgVkxRX0JBU0VfU0hJRlQ7XG5cbi8vIGJpbmFyeTogMDExMTExXG52YXIgVkxRX0JBU0VfTUFTSyA9IFZMUV9CQVNFIC0gMTtcblxuLy8gYmluYXJ5OiAxMDAwMDBcbnZhciBWTFFfQ09OVElOVUFUSU9OX0JJVCA9IFZMUV9CQVNFO1xuXG4vKipcbiAqIENvbnZlcnRzIGZyb20gYSB0d28tY29tcGxlbWVudCB2YWx1ZSB0byBhIHZhbHVlIHdoZXJlIHRoZSBzaWduIGJpdCBpc1xuICogcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuICBGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6XG4gKiAgIDEgYmVjb21lcyAyICgxMCBiaW5hcnkpLCAtMSBiZWNvbWVzIDMgKDExIGJpbmFyeSlcbiAqICAgMiBiZWNvbWVzIDQgKDEwMCBiaW5hcnkpLCAtMiBiZWNvbWVzIDUgKDEwMSBiaW5hcnkpXG4gKi9cbmZ1bmN0aW9uIHRvVkxRU2lnbmVkKGFWYWx1ZSkge1xuICByZXR1cm4gYVZhbHVlIDwgMFxuICAgID8gKCgtYVZhbHVlKSA8PCAxKSArIDFcbiAgICA6IChhVmFsdWUgPDwgMSkgKyAwO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHRvIGEgdHdvLWNvbXBsZW1lbnQgdmFsdWUgZnJvbSBhIHZhbHVlIHdoZXJlIHRoZSBzaWduIGJpdCBpc1xuICogcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuICBGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6XG4gKiAgIDIgKDEwIGJpbmFyeSkgYmVjb21lcyAxLCAzICgxMSBiaW5hcnkpIGJlY29tZXMgLTFcbiAqICAgNCAoMTAwIGJpbmFyeSkgYmVjb21lcyAyLCA1ICgxMDEgYmluYXJ5KSBiZWNvbWVzIC0yXG4gKi9cbmZ1bmN0aW9uIGZyb21WTFFTaWduZWQoYVZhbHVlKSB7XG4gIHZhciBpc05lZ2F0aXZlID0gKGFWYWx1ZSAmIDEpID09PSAxO1xuICB2YXIgc2hpZnRlZCA9IGFWYWx1ZSA+PiAxO1xuICByZXR1cm4gaXNOZWdhdGl2ZVxuICAgID8gLXNoaWZ0ZWRcbiAgICA6IHNoaWZ0ZWQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYmFzZSA2NCBWTFEgZW5jb2RlZCB2YWx1ZS5cbiAqL1xuZXhwb3J0cy5lbmNvZGUgPSBmdW5jdGlvbiBiYXNlNjRWTFFfZW5jb2RlKGFWYWx1ZSkge1xuICB2YXIgZW5jb2RlZCA9IFwiXCI7XG4gIHZhciBkaWdpdDtcblxuICB2YXIgdmxxID0gdG9WTFFTaWduZWQoYVZhbHVlKTtcblxuICBkbyB7XG4gICAgZGlnaXQgPSB2bHEgJiBWTFFfQkFTRV9NQVNLO1xuICAgIHZscSA+Pj49IFZMUV9CQVNFX1NISUZUO1xuICAgIGlmICh2bHEgPiAwKSB7XG4gICAgICAvLyBUaGVyZSBhcmUgc3RpbGwgbW9yZSBkaWdpdHMgaW4gdGhpcyB2YWx1ZSwgc28gd2UgbXVzdCBtYWtlIHN1cmUgdGhlXG4gICAgICAvLyBjb250aW51YXRpb24gYml0IGlzIG1hcmtlZC5cbiAgICAgIGRpZ2l0IHw9IFZMUV9DT05USU5VQVRJT05fQklUO1xuICAgIH1cbiAgICBlbmNvZGVkICs9IGJhc2U2NC5lbmNvZGUoZGlnaXQpO1xuICB9IHdoaWxlICh2bHEgPiAwKTtcblxuICByZXR1cm4gZW5jb2RlZDtcbn07XG5cbi8qKlxuICogRGVjb2RlcyB0aGUgbmV4dCBiYXNlIDY0IFZMUSB2YWx1ZSBmcm9tIHRoZSBnaXZlbiBzdHJpbmcgYW5kIHJldHVybnMgdGhlXG4gKiB2YWx1ZSBhbmQgdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyB2aWEgdGhlIG91dCBwYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydHMuZGVjb2RlID0gZnVuY3Rpb24gYmFzZTY0VkxRX2RlY29kZShhU3RyLCBhSW5kZXgsIGFPdXRQYXJhbSkge1xuICB2YXIgc3RyTGVuID0gYVN0ci5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSAwO1xuICB2YXIgc2hpZnQgPSAwO1xuICB2YXIgY29udGludWF0aW9uLCBkaWdpdDtcblxuICBkbyB7XG4gICAgaWYgKGFJbmRleCA+PSBzdHJMZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIG1vcmUgZGlnaXRzIGluIGJhc2UgNjQgVkxRIHZhbHVlLlwiKTtcbiAgICB9XG5cbiAgICBkaWdpdCA9IGJhc2U2NC5kZWNvZGUoYVN0ci5jaGFyQ29kZUF0KGFJbmRleCsrKSk7XG4gICAgaWYgKGRpZ2l0ID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBiYXNlNjQgZGlnaXQ6IFwiICsgYVN0ci5jaGFyQXQoYUluZGV4IC0gMSkpO1xuICAgIH1cblxuICAgIGNvbnRpbnVhdGlvbiA9ICEhKGRpZ2l0ICYgVkxRX0NPTlRJTlVBVElPTl9CSVQpO1xuICAgIGRpZ2l0ICY9IFZMUV9CQVNFX01BU0s7XG4gICAgcmVzdWx0ID0gcmVzdWx0ICsgKGRpZ2l0IDw8IHNoaWZ0KTtcbiAgICBzaGlmdCArPSBWTFFfQkFTRV9TSElGVDtcbiAgfSB3aGlsZSAoY29udGludWF0aW9uKTtcblxuICBhT3V0UGFyYW0udmFsdWUgPSBmcm9tVkxRU2lnbmVkKHJlc3VsdCk7XG4gIGFPdXRQYXJhbS5yZXN0ID0gYUluZGV4O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2Jhc2U2NC12bHEuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgaW50VG9DaGFyTWFwID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nLnNwbGl0KCcnKTtcblxuLyoqXG4gKiBFbmNvZGUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2Ugb2YgMCB0byA2MyB0byBhIHNpbmdsZSBiYXNlIDY0IGRpZ2l0LlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgaWYgKDAgPD0gbnVtYmVyICYmIG51bWJlciA8IGludFRvQ2hhck1hcC5sZW5ndGgpIHtcbiAgICByZXR1cm4gaW50VG9DaGFyTWFwW251bWJlcl07XG4gIH1cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYmV0d2VlbiAwIGFuZCA2MzogXCIgKyBudW1iZXIpO1xufTtcblxuLyoqXG4gKiBEZWNvZGUgYSBzaW5nbGUgYmFzZSA2NCBjaGFyYWN0ZXIgY29kZSBkaWdpdCB0byBhbiBpbnRlZ2VyLiBSZXR1cm5zIC0xIG9uXG4gKiBmYWlsdXJlLlxuICovXG5leHBvcnRzLmRlY29kZSA9IGZ1bmN0aW9uIChjaGFyQ29kZSkge1xuICB2YXIgYmlnQSA9IDY1OyAgICAgLy8gJ0EnXG4gIHZhciBiaWdaID0gOTA7ICAgICAvLyAnWidcblxuICB2YXIgbGl0dGxlQSA9IDk3OyAgLy8gJ2EnXG4gIHZhciBsaXR0bGVaID0gMTIyOyAvLyAneidcblxuICB2YXIgemVybyA9IDQ4OyAgICAgLy8gJzAnXG4gIHZhciBuaW5lID0gNTc7ICAgICAvLyAnOSdcblxuICB2YXIgcGx1cyA9IDQzOyAgICAgLy8gJysnXG4gIHZhciBzbGFzaCA9IDQ3OyAgICAvLyAnLydcblxuICB2YXIgbGl0dGxlT2Zmc2V0ID0gMjY7XG4gIHZhciBudW1iZXJPZmZzZXQgPSA1MjtcblxuICAvLyAwIC0gMjU6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXG4gIGlmIChiaWdBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGJpZ1opIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gYmlnQSk7XG4gIH1cblxuICAvLyAyNiAtIDUxOiBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elxuICBpZiAobGl0dGxlQSA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBsaXR0bGVaKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIGxpdHRsZUEgKyBsaXR0bGVPZmZzZXQpO1xuICB9XG5cbiAgLy8gNTIgLSA2MTogMDEyMzQ1Njc4OVxuICBpZiAoemVybyA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBuaW5lKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIHplcm8gKyBudW1iZXJPZmZzZXQpO1xuICB9XG5cbiAgLy8gNjI6ICtcbiAgaWYgKGNoYXJDb2RlID09IHBsdXMpIHtcbiAgICByZXR1cm4gNjI7XG4gIH1cblxuICAvLyA2MzogL1xuICBpZiAoY2hhckNvZGUgPT0gc2xhc2gpIHtcbiAgICByZXR1cm4gNjM7XG4gIH1cblxuICAvLyBJbnZhbGlkIGJhc2U2NCBkaWdpdC5cbiAgcmV0dXJuIC0xO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2Jhc2U2NC5qc1xuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8qKlxuICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB2YWx1ZXMgZnJvbSBwYXJhbWV0ZXIvb3B0aW9uc1xuICogb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0gYXJncyBUaGUgb2JqZWN0IHdlIGFyZSBleHRyYWN0aW5nIHZhbHVlcyBmcm9tXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgd2UgYXJlIGdldHRpbmcuXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlIEFuIG9wdGlvbmFsIHZhbHVlIHRvIHJldHVybiBpZiB0aGUgcHJvcGVydHkgaXMgbWlzc2luZ1xuICogZnJvbSB0aGUgb2JqZWN0LiBJZiB0aGlzIGlzIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSBwcm9wZXJ0eSBpcyBtaXNzaW5nLCBhblxuICogZXJyb3Igd2lsbCBiZSB0aHJvd24uXG4gKi9cbmZ1bmN0aW9uIGdldEFyZyhhQXJncywgYU5hbWUsIGFEZWZhdWx0VmFsdWUpIHtcbiAgaWYgKGFOYW1lIGluIGFBcmdzKSB7XG4gICAgcmV0dXJuIGFBcmdzW2FOYW1lXTtcbiAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgcmV0dXJuIGFEZWZhdWx0VmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhTmFtZSArICdcIiBpcyBhIHJlcXVpcmVkIGFyZ3VtZW50LicpO1xuICB9XG59XG5leHBvcnRzLmdldEFyZyA9IGdldEFyZztcblxudmFyIHVybFJlZ2V4cCA9IC9eKD86KFtcXHcrXFwtLl0rKTopP1xcL1xcLyg/OihcXHcrOlxcdyspQCk/KFtcXHcuLV0qKSg/OjooXFxkKykpPyguKikkLztcbnZhciBkYXRhVXJsUmVnZXhwID0gL15kYXRhOi4rXFwsLiskLztcblxuZnVuY3Rpb24gdXJsUGFyc2UoYVVybCkge1xuICB2YXIgbWF0Y2ggPSBhVXJsLm1hdGNoKHVybFJlZ2V4cCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjaGVtZTogbWF0Y2hbMV0sXG4gICAgYXV0aDogbWF0Y2hbMl0sXG4gICAgaG9zdDogbWF0Y2hbM10sXG4gICAgcG9ydDogbWF0Y2hbNF0sXG4gICAgcGF0aDogbWF0Y2hbNV1cbiAgfTtcbn1cbmV4cG9ydHMudXJsUGFyc2UgPSB1cmxQYXJzZTtcblxuZnVuY3Rpb24gdXJsR2VuZXJhdGUoYVBhcnNlZFVybCkge1xuICB2YXIgdXJsID0gJyc7XG4gIGlmIChhUGFyc2VkVXJsLnNjaGVtZSkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLnNjaGVtZSArICc6JztcbiAgfVxuICB1cmwgKz0gJy8vJztcbiAgaWYgKGFQYXJzZWRVcmwuYXV0aCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmF1dGggKyAnQCc7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwuaG9zdCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmhvc3Q7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwucG9ydCkge1xuICAgIHVybCArPSBcIjpcIiArIGFQYXJzZWRVcmwucG9ydFxuICB9XG4gIGlmIChhUGFyc2VkVXJsLnBhdGgpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5wYXRoO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG5leHBvcnRzLnVybEdlbmVyYXRlID0gdXJsR2VuZXJhdGU7XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGgsIG9yIHRoZSBwYXRoIHBvcnRpb24gb2YgYSBVUkw6XG4gKlxuICogLSBSZXBsYWNlcyBjb25zZWN1dGl2ZSBzbGFzaGVzIHdpdGggb25lIHNsYXNoLlxuICogLSBSZW1vdmVzIHVubmVjZXNzYXJ5ICcuJyBwYXJ0cy5cbiAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnPGRpcj4vLi4nIHBhcnRzLlxuICpcbiAqIEJhc2VkIG9uIGNvZGUgaW4gdGhlIE5vZGUuanMgJ3BhdGgnIGNvcmUgbW9kdWxlLlxuICpcbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciB1cmwgdG8gbm9ybWFsaXplLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemUoYVBhdGgpIHtcbiAgdmFyIHBhdGggPSBhUGF0aDtcbiAgdmFyIHVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgaWYgKHVybCkge1xuICAgIGlmICghdXJsLnBhdGgpIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG4gICAgcGF0aCA9IHVybC5wYXRoO1xuICB9XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpO1xuXG4gIHZhciBwYXJ0cyA9IHBhdGguc3BsaXQoL1xcLysvKTtcbiAgZm9yICh2YXIgcGFydCwgdXAgPSAwLCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBwYXJ0ID0gcGFydHNbaV07XG4gICAgaWYgKHBhcnQgPT09ICcuJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwID4gMCkge1xuICAgICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICAgIC8vIFRoZSBmaXJzdCBwYXJ0IGlzIGJsYW5rIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLiBUcnlpbmcgdG8gZ29cbiAgICAgICAgLy8gYWJvdmUgdGhlIHJvb3QgaXMgYSBuby1vcC4gVGhlcmVmb3JlIHdlIGNhbiByZW1vdmUgYWxsICcuLicgcGFydHNcbiAgICAgICAgLy8gZGlyZWN0bHkgYWZ0ZXIgdGhlIHJvb3QuXG4gICAgICAgIHBhcnRzLnNwbGljZShpICsgMSwgdXApO1xuICAgICAgICB1cCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMik7XG4gICAgICAgIHVwLS07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHBhdGggPSBwYXJ0cy5qb2luKCcvJyk7XG5cbiAgaWYgKHBhdGggPT09ICcnKSB7XG4gICAgcGF0aCA9IGlzQWJzb2x1dGUgPyAnLycgOiAnLic7XG4gIH1cblxuICBpZiAodXJsKSB7XG4gICAgdXJsLnBhdGggPSBwYXRoO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZSh1cmwpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG5cbi8qKlxuICogSm9pbnMgdHdvIHBhdGhzL1VSTHMuXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBqb2luZWQgd2l0aCB0aGUgcm9vdC5cbiAqXG4gKiAtIElmIGFQYXRoIGlzIGEgVVJMIG9yIGEgZGF0YSBVUkksIGFQYXRoIGlzIHJldHVybmVkLCB1bmxlc3MgYVBhdGggaXMgYVxuICogICBzY2hlbWUtcmVsYXRpdmUgVVJMOiBUaGVuIHRoZSBzY2hlbWUgb2YgYVJvb3QsIGlmIGFueSwgaXMgcHJlcGVuZGVkXG4gKiAgIGZpcnN0LlxuICogLSBPdGhlcndpc2UgYVBhdGggaXMgYSBwYXRoLiBJZiBhUm9vdCBpcyBhIFVSTCwgdGhlbiBpdHMgcGF0aCBwb3J0aW9uXG4gKiAgIGlzIHVwZGF0ZWQgd2l0aCB0aGUgcmVzdWx0IGFuZCBhUm9vdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIHRoZSByZXN1bHRcbiAqICAgaXMgcmV0dXJuZWQuXG4gKiAgIC0gSWYgYVBhdGggaXMgYWJzb2x1dGUsIHRoZSByZXN1bHQgaXMgYVBhdGguXG4gKiAgIC0gT3RoZXJ3aXNlIHRoZSB0d28gcGF0aHMgYXJlIGpvaW5lZCB3aXRoIGEgc2xhc2guXG4gKiAtIEpvaW5pbmcgZm9yIGV4YW1wbGUgJ2h0dHA6Ly8nIGFuZCAnd3d3LmV4YW1wbGUuY29tJyBpcyBhbHNvIHN1cHBvcnRlZC5cbiAqL1xuZnVuY3Rpb24gam9pbihhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuICBpZiAoYVBhdGggPT09IFwiXCIpIHtcbiAgICBhUGF0aCA9IFwiLlwiO1xuICB9XG4gIHZhciBhUGF0aFVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgdmFyIGFSb290VXJsID0gdXJsUGFyc2UoYVJvb3QpO1xuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdCA9IGFSb290VXJsLnBhdGggfHwgJy8nO1xuICB9XG5cbiAgLy8gYGpvaW4oZm9vLCAnLy93d3cuZXhhbXBsZS5vcmcnKWBcbiAgaWYgKGFQYXRoVXJsICYmICFhUGF0aFVybC5zY2hlbWUpIHtcbiAgICBpZiAoYVJvb3RVcmwpIHtcbiAgICAgIGFQYXRoVXJsLnNjaGVtZSA9IGFSb290VXJsLnNjaGVtZTtcbiAgICB9XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFQYXRoVXJsKTtcbiAgfVxuXG4gIGlmIChhUGF0aFVybCB8fCBhUGF0aC5tYXRjaChkYXRhVXJsUmVnZXhwKSkge1xuICAgIHJldHVybiBhUGF0aDtcbiAgfVxuXG4gIC8vIGBqb2luKCdodHRwOi8vJywgJ3d3dy5leGFtcGxlLmNvbScpYFxuICBpZiAoYVJvb3RVcmwgJiYgIWFSb290VXJsLmhvc3QgJiYgIWFSb290VXJsLnBhdGgpIHtcbiAgICBhUm9vdFVybC5ob3N0ID0gYVBhdGg7XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFSb290VXJsKTtcbiAgfVxuXG4gIHZhciBqb2luZWQgPSBhUGF0aC5jaGFyQXQoMCkgPT09ICcvJ1xuICAgID8gYVBhdGhcbiAgICA6IG5vcm1hbGl6ZShhUm9vdC5yZXBsYWNlKC9cXC8rJC8sICcnKSArICcvJyArIGFQYXRoKTtcblxuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdFVybC5wYXRoID0gam9pbmVkO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gIH1cbiAgcmV0dXJuIGpvaW5lZDtcbn1cbmV4cG9ydHMuam9pbiA9IGpvaW47XG5cbmV4cG9ydHMuaXNBYnNvbHV0ZSA9IGZ1bmN0aW9uIChhUGF0aCkge1xuICByZXR1cm4gYVBhdGguY2hhckF0KDApID09PSAnLycgfHwgdXJsUmVnZXhwLnRlc3QoYVBhdGgpO1xufTtcblxuLyoqXG4gKiBNYWtlIGEgcGF0aCByZWxhdGl2ZSB0byBhIFVSTCBvciBhbm90aGVyIHBhdGguXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBtYWRlIHJlbGF0aXZlIHRvIGFSb290LlxuICovXG5mdW5jdGlvbiByZWxhdGl2ZShhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuXG4gIGFSb290ID0gYVJvb3QucmVwbGFjZSgvXFwvJC8sICcnKTtcblxuICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHBhdGggdG8gYmUgYWJvdmUgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2ltcGx5XG4gIC8vIGNoZWNraW5nIHdoZXRoZXIgdGhlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlIHBhdGggd29uJ3Qgd29yay4gSW5zdGVhZCwgd2VcbiAgLy8gbmVlZCB0byByZW1vdmUgY29tcG9uZW50cyBmcm9tIHRoZSByb290IG9uZSBieSBvbmUsIHVudGlsIGVpdGhlciB3ZSBmaW5kXG4gIC8vIGEgcHJlZml4IHRoYXQgZml0cywgb3Igd2UgcnVuIG91dCBvZiBjb21wb25lbnRzIHRvIHJlbW92ZS5cbiAgdmFyIGxldmVsID0gMDtcbiAgd2hpbGUgKGFQYXRoLmluZGV4T2YoYVJvb3QgKyAnLycpICE9PSAwKSB7XG4gICAgdmFyIGluZGV4ID0gYVJvb3QubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBwYXJ0IG9mIHRoZSByb290IHRoYXQgaXMgbGVmdCBpcyB0aGUgc2NoZW1lIChpLmUuIGh0dHA6Ly8sXG4gICAgLy8gZmlsZTovLy8sIGV0Yy4pLCBvbmUgb3IgbW9yZSBzbGFzaGVzICgvKSwgb3Igc2ltcGx5IG5vdGhpbmcgYXQgYWxsLCB3ZVxuICAgIC8vIGhhdmUgZXhoYXVzdGVkIGFsbCBjb21wb25lbnRzLCBzbyB0aGUgcGF0aCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHJvb3QuXG4gICAgYVJvb3QgPSBhUm9vdC5zbGljZSgwLCBpbmRleCk7XG4gICAgaWYgKGFSb290Lm1hdGNoKC9eKFteXFwvXSs6XFwvKT9cXC8qJC8pKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuXG4gICAgKytsZXZlbDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB3ZSBhZGQgYSBcIi4uL1wiIGZvciBlYWNoIGNvbXBvbmVudCB3ZSByZW1vdmVkIGZyb20gdGhlIHJvb3QuXG4gIHJldHVybiBBcnJheShsZXZlbCArIDEpLmpvaW4oXCIuLi9cIikgKyBhUGF0aC5zdWJzdHIoYVJvb3QubGVuZ3RoICsgMSk7XG59XG5leHBvcnRzLnJlbGF0aXZlID0gcmVsYXRpdmU7XG5cbnZhciBzdXBwb3J0c051bGxQcm90byA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBvYmogPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gISgnX19wcm90b19fJyBpbiBvYmopO1xufSgpKTtcblxuZnVuY3Rpb24gaWRlbnRpdHkgKHMpIHtcbiAgcmV0dXJuIHM7XG59XG5cbi8qKlxuICogQmVjYXVzZSBiZWhhdmlvciBnb2VzIHdhY2t5IHdoZW4geW91IHNldCBgX19wcm90b19fYCBvbiBvYmplY3RzLCB3ZVxuICogaGF2ZSB0byBwcmVmaXggYWxsIHRoZSBzdHJpbmdzIGluIG91ciBzZXQgd2l0aCBhbiBhcmJpdHJhcnkgY2hhcmFjdGVyLlxuICpcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL3B1bGwvMzEgYW5kXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8zMFxuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5mdW5jdGlvbiB0b1NldFN0cmluZyhhU3RyKSB7XG4gIGlmIChpc1Byb3RvU3RyaW5nKGFTdHIpKSB7XG4gICAgcmV0dXJuICckJyArIGFTdHI7XG4gIH1cblxuICByZXR1cm4gYVN0cjtcbn1cbmV4cG9ydHMudG9TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogdG9TZXRTdHJpbmc7XG5cbmZ1bmN0aW9uIGZyb21TZXRTdHJpbmcoYVN0cikge1xuICBpZiAoaXNQcm90b1N0cmluZyhhU3RyKSkge1xuICAgIHJldHVybiBhU3RyLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIGFTdHI7XG59XG5leHBvcnRzLmZyb21TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogZnJvbVNldFN0cmluZztcblxuZnVuY3Rpb24gaXNQcm90b1N0cmluZyhzKSB7XG4gIGlmICghcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBzLmxlbmd0aDtcblxuICBpZiAobGVuZ3RoIDwgOSAvKiBcIl9fcHJvdG9fX1wiLmxlbmd0aCAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChzLmNoYXJDb2RlQXQobGVuZ3RoIC0gMSkgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSAyKSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDMpICE9PSAxMTEgLyogJ28nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNCkgIT09IDExNiAvKiAndCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA1KSAhPT0gMTExIC8qICdvJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDYpICE9PSAxMTQgLyogJ3InICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNykgIT09IDExMiAvKiAncCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA4KSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDkpICE9PSA5NSAgLyogJ18nICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDEwOyBpID49IDA7IGktLSkge1xuICAgIGlmIChzLmNoYXJDb2RlQXQoaSkgIT09IDM2IC8qICckJyAqLykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2hlcmUgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4sIGJ1dCBkaWZmZXJlbnQgZ2VuZXJhdGVkXG4gKiBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYSBtYXBwaW5nIHdpdGggYVxuICogc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gIHZhciBjbXAgPSBzdHJjbXAobWFwcGluZ0Euc291cmNlLCBtYXBwaW5nQi5zb3VyY2UpO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsTGluZSAtIG1hcHBpbmdCLm9yaWdpbmFsTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbENvbHVtbiAtIG1hcHBpbmdCLm9yaWdpbmFsQ29sdW1uO1xuICBpZiAoY21wICE9PSAwIHx8IG9ubHlDb21wYXJlT3JpZ2luYWwpIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIHJldHVybiBzdHJjbXAobWFwcGluZ0EubmFtZSwgbWFwcGluZ0IubmFtZSk7XG59XG5leHBvcnRzLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zID0gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnM7XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGRlZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBpbmRpY2VzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uLCBidXQgZGlmZmVyZW50XG4gKiBzb3VyY2UvbmFtZS9vcmlnaW5hbCBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYVxuICogbWFwcGluZyB3aXRoIGEgc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZUdlbmVyYXRlZCkge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwIHx8IG9ubHlDb21wYXJlR2VuZXJhdGVkKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZDtcblxuZnVuY3Rpb24gc3RyY21wKGFTdHIxLCBhU3RyMikge1xuICBpZiAoYVN0cjEgPT09IGFTdHIyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZiAoYVN0cjEgPT09IG51bGwpIHtcbiAgICByZXR1cm4gMTsgLy8gYVN0cjIgIT09IG51bGxcbiAgfVxuXG4gIGlmIChhU3RyMiA9PT0gbnVsbCkge1xuICAgIHJldHVybiAtMTsgLy8gYVN0cjEgIT09IG51bGxcbiAgfVxuXG4gIGlmIChhU3RyMSA+IGFTdHIyKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGluZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBzdHJpbmdzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQikge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZDtcblxuLyoqXG4gKiBTdHJpcCBhbnkgSlNPTiBYU1NJIGF2b2lkYW5jZSBwcmVmaXggZnJvbSB0aGUgc3RyaW5nIChhcyBkb2N1bWVudGVkXG4gKiBpbiB0aGUgc291cmNlIG1hcHMgc3BlY2lmaWNhdGlvbiksIGFuZCB0aGVuIHBhcnNlIHRoZSBzdHJpbmcgYXNcbiAqIEpTT04uXG4gKi9cbmZ1bmN0aW9uIHBhcnNlU291cmNlTWFwSW5wdXQoc3RyKSB7XG4gIHJldHVybiBKU09OLnBhcnNlKHN0ci5yZXBsYWNlKC9eXFwpXX0nW15cXG5dKlxcbi8sICcnKSk7XG59XG5leHBvcnRzLnBhcnNlU291cmNlTWFwSW5wdXQgPSBwYXJzZVNvdXJjZU1hcElucHV0O1xuXG4vKipcbiAqIENvbXB1dGUgdGhlIFVSTCBvZiBhIHNvdXJjZSBnaXZlbiB0aGUgdGhlIHNvdXJjZSByb290LCB0aGUgc291cmNlJ3NcbiAqIFVSTCwgYW5kIHRoZSBzb3VyY2UgbWFwJ3MgVVJMLlxuICovXG5mdW5jdGlvbiBjb21wdXRlU291cmNlVVJMKHNvdXJjZVJvb3QsIHNvdXJjZVVSTCwgc291cmNlTWFwVVJMKSB7XG4gIHNvdXJjZVVSTCA9IHNvdXJjZVVSTCB8fCAnJztcblxuICBpZiAoc291cmNlUm9vdCkge1xuICAgIC8vIFRoaXMgZm9sbG93cyB3aGF0IENocm9tZSBkb2VzLlxuICAgIGlmIChzb3VyY2VSb290W3NvdXJjZVJvb3QubGVuZ3RoIC0gMV0gIT09ICcvJyAmJiBzb3VyY2VVUkxbMF0gIT09ICcvJykge1xuICAgICAgc291cmNlUm9vdCArPSAnLyc7XG4gICAgfVxuICAgIC8vIFRoZSBzcGVjIHNheXM6XG4gICAgLy8gICBMaW5lIDQ6IEFuIG9wdGlvbmFsIHNvdXJjZSByb290LCB1c2VmdWwgZm9yIHJlbG9jYXRpbmcgc291cmNlXG4gICAgLy8gICBmaWxlcyBvbiBhIHNlcnZlciBvciByZW1vdmluZyByZXBlYXRlZCB2YWx1ZXMgaW4gdGhlXG4gICAgLy8gICDigJxzb3VyY2Vz4oCdIGVudHJ5LiAgVGhpcyB2YWx1ZSBpcyBwcmVwZW5kZWQgdG8gdGhlIGluZGl2aWR1YWxcbiAgICAvLyAgIGVudHJpZXMgaW4gdGhlIOKAnHNvdXJjZeKAnSBmaWVsZC5cbiAgICBzb3VyY2VVUkwgPSBzb3VyY2VSb290ICsgc291cmNlVVJMO1xuICB9XG5cbiAgLy8gSGlzdG9yaWNhbGx5LCBTb3VyY2VNYXBDb25zdW1lciBkaWQgbm90IHRha2UgdGhlIHNvdXJjZU1hcFVSTCBhc1xuICAvLyBhIHBhcmFtZXRlci4gIFRoaXMgbW9kZSBpcyBzdGlsbCBzb21ld2hhdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeVxuICAvLyB0aGlzIGNvZGUgYmxvY2sgaXMgY29uZGl0aW9uYWwuICBIb3dldmVyLCBpdCdzIHByZWZlcmFibGUgdG8gcGFzc1xuICAvLyB0aGUgc291cmNlIG1hcCBVUkwgdG8gU291cmNlTWFwQ29uc3VtZXIsIHNvIHRoYXQgdGhpcyBmdW5jdGlvblxuICAvLyBjYW4gaW1wbGVtZW50IHRoZSBzb3VyY2UgVVJMIHJlc29sdXRpb24gYWxnb3JpdGhtIGFzIG91dGxpbmVkIGluXG4gIC8vIHRoZSBzcGVjLiAgVGhpcyBibG9jayBpcyBiYXNpY2FsbHkgdGhlIGVxdWl2YWxlbnQgb2Y6XG4gIC8vICAgIG5ldyBVUkwoc291cmNlVVJMLCBzb3VyY2VNYXBVUkwpLnRvU3RyaW5nKClcbiAgLy8gLi4uIGV4Y2VwdCBpdCBhdm9pZHMgdXNpbmcgVVJMLCB3aGljaCB3YXNuJ3QgYXZhaWxhYmxlIGluIHRoZVxuICAvLyBvbGRlciByZWxlYXNlcyBvZiBub2RlIHN0aWxsIHN1cHBvcnRlZCBieSB0aGlzIGxpYnJhcnkuXG4gIC8vXG4gIC8vIFRoZSBzcGVjIHNheXM6XG4gIC8vICAgSWYgdGhlIHNvdXJjZXMgYXJlIG5vdCBhYnNvbHV0ZSBVUkxzIGFmdGVyIHByZXBlbmRpbmcgb2YgdGhlXG4gIC8vICAg4oCcc291cmNlUm9vdOKAnSwgdGhlIHNvdXJjZXMgYXJlIHJlc29sdmVkIHJlbGF0aXZlIHRvIHRoZVxuICAvLyAgIFNvdXJjZU1hcCAobGlrZSByZXNvbHZpbmcgc2NyaXB0IHNyYyBpbiBhIGh0bWwgZG9jdW1lbnQpLlxuICBpZiAoc291cmNlTWFwVVJMKSB7XG4gICAgdmFyIHBhcnNlZCA9IHVybFBhcnNlKHNvdXJjZU1hcFVSTCk7XG4gICAgaWYgKCFwYXJzZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInNvdXJjZU1hcFVSTCBjb3VsZCBub3QgYmUgcGFyc2VkXCIpO1xuICAgIH1cbiAgICBpZiAocGFyc2VkLnBhdGgpIHtcbiAgICAgIC8vIFN0cmlwIHRoZSBsYXN0IHBhdGggY29tcG9uZW50LCBidXQga2VlcCB0aGUgXCIvXCIuXG4gICAgICB2YXIgaW5kZXggPSBwYXJzZWQucGF0aC5sYXN0SW5kZXhPZignLycpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgcGFyc2VkLnBhdGggPSBwYXJzZWQucGF0aC5zdWJzdHJpbmcoMCwgaW5kZXggKyAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc291cmNlVVJMID0gam9pbih1cmxHZW5lcmF0ZShwYXJzZWQpLCBzb3VyY2VVUkwpO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZShzb3VyY2VVUkwpO1xufVxuZXhwb3J0cy5jb21wdXRlU291cmNlVVJMID0gY29tcHV0ZVNvdXJjZVVSTDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL3V0aWwuanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgaGFzTmF0aXZlTWFwID0gdHlwZW9mIE1hcCAhPT0gXCJ1bmRlZmluZWRcIjtcblxuLyoqXG4gKiBBIGRhdGEgc3RydWN0dXJlIHdoaWNoIGlzIGEgY29tYmluYXRpb24gb2YgYW4gYXJyYXkgYW5kIGEgc2V0LiBBZGRpbmcgYSBuZXdcbiAqIG1lbWJlciBpcyBPKDEpLCB0ZXN0aW5nIGZvciBtZW1iZXJzaGlwIGlzIE8oMSksIGFuZCBmaW5kaW5nIHRoZSBpbmRleCBvZiBhblxuICogZWxlbWVudCBpcyBPKDEpLiBSZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBzZXQgaXMgbm90IHN1cHBvcnRlZC4gT25seVxuICogc3RyaW5ncyBhcmUgc3VwcG9ydGVkIGZvciBtZW1iZXJzaGlwLlxuICovXG5mdW5jdGlvbiBBcnJheVNldCgpIHtcbiAgdGhpcy5fYXJyYXkgPSBbXTtcbiAgdGhpcy5fc2V0ID0gaGFzTmF0aXZlTWFwID8gbmV3IE1hcCgpIDogT2JqZWN0LmNyZWF0ZShudWxsKTtcbn1cblxuLyoqXG4gKiBTdGF0aWMgbWV0aG9kIGZvciBjcmVhdGluZyBBcnJheVNldCBpbnN0YW5jZXMgZnJvbSBhbiBleGlzdGluZyBhcnJheS5cbiAqL1xuQXJyYXlTZXQuZnJvbUFycmF5ID0gZnVuY3Rpb24gQXJyYXlTZXRfZnJvbUFycmF5KGFBcnJheSwgYUFsbG93RHVwbGljYXRlcykge1xuICB2YXIgc2V0ID0gbmV3IEFycmF5U2V0KCk7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhQXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBzZXQuYWRkKGFBcnJheVtpXSwgYUFsbG93RHVwbGljYXRlcyk7XG4gIH1cbiAgcmV0dXJuIHNldDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGhvdyBtYW55IHVuaXF1ZSBpdGVtcyBhcmUgaW4gdGhpcyBBcnJheVNldC4gSWYgZHVwbGljYXRlcyBoYXZlIGJlZW5cbiAqIGFkZGVkLCB0aGFuIHRob3NlIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSBzaXplLlxuICpcbiAqIEByZXR1cm5zIE51bWJlclxuICovXG5BcnJheVNldC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIEFycmF5U2V0X3NpemUoKSB7XG4gIHJldHVybiBoYXNOYXRpdmVNYXAgPyB0aGlzLl9zZXQuc2l6ZSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuX3NldCkubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHN0cmluZyB0byB0aGlzIHNldC5cbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIEFycmF5U2V0X2FkZChhU3RyLCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gIHZhciBzU3RyID0gaGFzTmF0aXZlTWFwID8gYVN0ciA6IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gIHZhciBpc0R1cGxpY2F0ZSA9IGhhc05hdGl2ZU1hcCA/IHRoaXMuaGFzKGFTdHIpIDogaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKTtcbiAgdmFyIGlkeCA9IHRoaXMuX2FycmF5Lmxlbmd0aDtcbiAgaWYgKCFpc0R1cGxpY2F0ZSB8fCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhU3RyKTtcbiAgfVxuICBpZiAoIWlzRHVwbGljYXRlKSB7XG4gICAgaWYgKGhhc05hdGl2ZU1hcCkge1xuICAgICAgdGhpcy5fc2V0LnNldChhU3RyLCBpZHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRbc1N0cl0gPSBpZHg7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIElzIHRoZSBnaXZlbiBzdHJpbmcgYSBtZW1iZXIgb2YgdGhpcyBzZXQ/XG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiBBcnJheVNldF9oYXMoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldC5oYXMoYVN0cik7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIHJldHVybiBoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpO1xuICB9XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiBzdHJpbmcgaW4gdGhlIGFycmF5P1xuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5BcnJheVNldC5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIEFycmF5U2V0X2luZGV4T2YoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX3NldC5nZXQoYVN0cik7XG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBpZHg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBzU3RyID0gdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgICBpZiAoaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldFtzU3RyXTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTdHIgKyAnXCIgaXMgbm90IGluIHRoZSBzZXQuJyk7XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4P1xuICpcbiAqIEBwYXJhbSBOdW1iZXIgYUlkeFxuICovXG5BcnJheVNldC5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbiBBcnJheVNldF9hdChhSWR4KSB7XG4gIGlmIChhSWR4ID49IDAgJiYgYUlkeCA8IHRoaXMuX2FycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJheVthSWR4XTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVsZW1lbnQgaW5kZXhlZCBieSAnICsgYUlkeCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc2V0ICh3aGljaCBoYXMgdGhlIHByb3BlciBpbmRpY2VzXG4gKiBpbmRpY2F0ZWQgYnkgaW5kZXhPZikuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29weSBvZiB0aGUgaW50ZXJuYWwgYXJyYXkgdXNlZFxuICogZm9yIHN0b3JpbmcgdGhlIG1lbWJlcnMgc28gdGhhdCBubyBvbmUgY2FuIG1lc3Mgd2l0aCBpbnRlcm5hbCBzdGF0ZS5cbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF90b0FycmF5KCkge1xuICByZXR1cm4gdGhpcy5fYXJyYXkuc2xpY2UoKTtcbn07XG5cbmV4cG9ydHMuQXJyYXlTZXQgPSBBcnJheVNldDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2FycmF5LXNldC5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTQgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgbWFwcGluZ0IgaXMgYWZ0ZXIgbWFwcGluZ0Egd2l0aCByZXNwZWN0IHRvIGdlbmVyYXRlZFxuICogcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlZFBvc2l0aW9uQWZ0ZXIobWFwcGluZ0EsIG1hcHBpbmdCKSB7XG4gIC8vIE9wdGltaXplZCBmb3IgbW9zdCBjb21tb24gY2FzZVxuICB2YXIgbGluZUEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgbGluZUIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgY29sdW1uQSA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbjtcbiAgdmFyIGNvbHVtbkIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIHJldHVybiBsaW5lQiA+IGxpbmVBIHx8IGxpbmVCID09IGxpbmVBICYmIGNvbHVtbkIgPj0gY29sdW1uQSB8fFxuICAgICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IpIDw9IDA7XG59XG5cbi8qKlxuICogQSBkYXRhIHN0cnVjdHVyZSB0byBwcm92aWRlIGEgc29ydGVkIHZpZXcgb2YgYWNjdW11bGF0ZWQgbWFwcGluZ3MgaW4gYVxuICogcGVyZm9ybWFuY2UgY29uc2Npb3VzIG1hbm5lci4gSXQgdHJhZGVzIGEgbmVnbGliYWJsZSBvdmVyaGVhZCBpbiBnZW5lcmFsXG4gKiBjYXNlIGZvciBhIGxhcmdlIHNwZWVkdXAgaW4gY2FzZSBvZiBtYXBwaW5ncyBiZWluZyBhZGRlZCBpbiBvcmRlci5cbiAqL1xuZnVuY3Rpb24gTWFwcGluZ0xpc3QoKSB7XG4gIHRoaXMuX2FycmF5ID0gW107XG4gIHRoaXMuX3NvcnRlZCA9IHRydWU7XG4gIC8vIFNlcnZlcyBhcyBpbmZpbXVtXG4gIHRoaXMuX2xhc3QgPSB7Z2VuZXJhdGVkTGluZTogLTEsIGdlbmVyYXRlZENvbHVtbjogMH07XG59XG5cbi8qKlxuICogSXRlcmF0ZSB0aHJvdWdoIGludGVybmFsIGl0ZW1zLiBUaGlzIG1ldGhvZCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgdGhhdFxuICogYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCB0YWtlcy5cbiAqXG4gKiBOT1RFOiBUaGUgb3JkZXIgb2YgdGhlIG1hcHBpbmdzIGlzIE5PVCBndWFyYW50ZWVkLlxuICovXG5NYXBwaW5nTGlzdC5wcm90b3R5cGUudW5zb3J0ZWRGb3JFYWNoID1cbiAgZnVuY3Rpb24gTWFwcGluZ0xpc3RfZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKSB7XG4gICAgdGhpcy5fYXJyYXkuZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKTtcbiAgfTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHNvdXJjZSBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSBPYmplY3QgYU1hcHBpbmdcbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIE1hcHBpbmdMaXN0X2FkZChhTWFwcGluZykge1xuICBpZiAoZ2VuZXJhdGVkUG9zaXRpb25BZnRlcih0aGlzLl9sYXN0LCBhTWFwcGluZykpIHtcbiAgICB0aGlzLl9sYXN0ID0gYU1hcHBpbmc7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fc29ydGVkID0gZmFsc2U7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmxhdCwgc29ydGVkIGFycmF5IG9mIG1hcHBpbmdzLiBUaGUgbWFwcGluZ3MgYXJlIHNvcnRlZCBieVxuICogZ2VuZXJhdGVkIHBvc2l0aW9uLlxuICpcbiAqIFdBUk5JTkc6IFRoaXMgbWV0aG9kIHJldHVybnMgaW50ZXJuYWwgZGF0YSB3aXRob3V0IGNvcHlpbmcsIGZvclxuICogcGVyZm9ybWFuY2UuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBOT1QgYmUgbXV0YXRlZCwgYW5kIHNob3VsZCBiZSB0cmVhdGVkIGFzXG4gKiBhbiBpbW11dGFibGUgYm9ycm93LiBJZiB5b3Ugd2FudCB0byB0YWtlIG93bmVyc2hpcCwgeW91IG11c3QgbWFrZSB5b3VyIG93blxuICogY29weS5cbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF90b0FycmF5KCkge1xuICBpZiAoIXRoaXMuX3NvcnRlZCkge1xuICAgIHRoaXMuX2FycmF5LnNvcnQodXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZCk7XG4gICAgdGhpcy5fc29ydGVkID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gdGhpcy5fYXJyYXk7XG59O1xuXG5leHBvcnRzLk1hcHBpbmdMaXN0ID0gTWFwcGluZ0xpc3Q7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2xpYi9tYXBwaW5nLWxpc3QuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGJpbmFyeVNlYXJjaCA9IHJlcXVpcmUoJy4vYmluYXJ5LXNlYXJjaCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBiYXNlNjRWTFEgPSByZXF1aXJlKCcuL2Jhc2U2NC12bHEnKTtcbnZhciBxdWlja1NvcnQgPSByZXF1aXJlKCcuL3F1aWNrLXNvcnQnKS5xdWlja1NvcnQ7XG5cbmZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICByZXR1cm4gc291cmNlTWFwLnNlY3Rpb25zICE9IG51bGxcbiAgICA/IG5ldyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKVxuICAgIDogbmV3IEJhc2ljU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcCA9IGZ1bmN0aW9uKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgcmV0dXJuIEJhc2ljU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcChhU291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcHBpbmcgc3BlYyB0aGF0IHdlIGFyZSBjb25zdW1pbmcuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8vIGBfX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmQgYF9fb3JpZ2luYWxNYXBwaW5nc2AgYXJlIGFycmF5cyB0aGF0IGhvbGQgdGhlXG4vLyBwYXJzZWQgbWFwcGluZyBjb29yZGluYXRlcyBmcm9tIHRoZSBzb3VyY2UgbWFwJ3MgXCJtYXBwaW5nc1wiIGF0dHJpYnV0ZS4gVGhleVxuLy8gYXJlIGxhemlseSBpbnN0YW50aWF0ZWQsIGFjY2Vzc2VkIHZpYSB0aGUgYF9nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4vLyBgX29yaWdpbmFsTWFwcGluZ3NgIGdldHRlcnMgcmVzcGVjdGl2ZWx5LCBhbmQgd2Ugb25seSBwYXJzZSB0aGUgbWFwcGluZ3Ncbi8vIGFuZCBjcmVhdGUgdGhlc2UgYXJyYXlzIG9uY2UgcXVlcmllZCBmb3IgYSBzb3VyY2UgbG9jYXRpb24uIFdlIGp1bXAgdGhyb3VnaFxuLy8gdGhlc2UgaG9vcHMgYmVjYXVzZSB0aGVyZSBjYW4gYmUgbWFueSB0aG91c2FuZHMgb2YgbWFwcGluZ3MsIGFuZCBwYXJzaW5nXG4vLyB0aGVtIGlzIGV4cGVuc2l2ZSwgc28gd2Ugb25seSB3YW50IHRvIGRvIGl0IGlmIHdlIG11c3QuXG4vL1xuLy8gRWFjaCBvYmplY3QgaW4gdGhlIGFycmF5cyBpcyBvZiB0aGUgZm9ybTpcbi8vXG4vLyAgICAge1xuLy8gICAgICAgZ2VuZXJhdGVkTGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIGdlbmVyYXRlZENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgc291cmNlOiBUaGUgcGF0aCB0byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUgdGhhdCBnZW5lcmF0ZWQgdGhpc1xuLy8gICAgICAgICAgICAgICBjaHVuayBvZiBjb2RlLFxuLy8gICAgICAgb3JpZ2luYWxMaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoaXMgY2h1bmsgb2YgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBvcmlnaW5hbENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhpcyBjaHVuayBvZiBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIG5hbWU6IFRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbCBzeW1ib2wgd2hpY2ggZ2VuZXJhdGVkIHRoaXMgY2h1bmsgb2Zcbi8vICAgICAgICAgICAgIGNvZGUuXG4vLyAgICAgfVxuLy9cbi8vIEFsbCBwcm9wZXJ0aWVzIGV4Y2VwdCBmb3IgYGdlbmVyYXRlZExpbmVgIGFuZCBgZ2VuZXJhdGVkQ29sdW1uYCBjYW4gYmVcbi8vIGBudWxsYC5cbi8vXG4vLyBgX2dlbmVyYXRlZE1hcHBpbmdzYCBpcyBvcmRlcmVkIGJ5IHRoZSBnZW5lcmF0ZWQgcG9zaXRpb25zLlxuLy9cbi8vIGBfb3JpZ2luYWxNYXBwaW5nc2AgaXMgb3JkZXJlZCBieSB0aGUgb3JpZ2luYWwgcG9zaXRpb25zLlxuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IG51bGw7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnX2dlbmVyYXRlZE1hcHBpbmdzJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3M7XG4gIH1cbn0pO1xuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19vcmlnaW5hbE1hcHBpbmdzID0gbnVsbDtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdfb3JpZ2luYWxNYXBwaW5ncycsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX19vcmlnaW5hbE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fY2hhcklzTWFwcGluZ1NlcGFyYXRvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IoYVN0ciwgaW5kZXgpIHtcbiAgICB2YXIgYyA9IGFTdHIuY2hhckF0KGluZGV4KTtcbiAgICByZXR1cm4gYyA9PT0gXCI7XCIgfHwgYyA9PT0gXCIsXCI7XG4gIH07XG5cbi8qKlxuICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBfcGFyc2VNYXBwaW5nc1wiKTtcbiAgfTtcblxuU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSID0gMTtcblNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSID0gMjtcblxuU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBlYWNoIG1hcHBpbmcgYmV0d2VlbiBhbiBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4gYW5kIGFcbiAqIGdlbmVyYXRlZCBsaW5lL2NvbHVtbiBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKlxuICogQHBhcmFtIEZ1bmN0aW9uIGFDYWxsYmFja1xuICogICAgICAgIFRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIGVhY2ggbWFwcGluZy5cbiAqIEBwYXJhbSBPYmplY3QgYUNvbnRleHRcbiAqICAgICAgICBPcHRpb25hbC4gSWYgc3BlY2lmaWVkLCB0aGlzIG9iamVjdCB3aWxsIGJlIHRoZSB2YWx1ZSBvZiBgdGhpc2AgZXZlcnlcbiAqICAgICAgICB0aW1lIHRoYXQgYGFDYWxsYmFja2AgaXMgY2FsbGVkLlxuICogQHBhcmFtIGFPcmRlclxuICogICAgICAgIEVpdGhlciBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYCBvclxuICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUmAuIFNwZWNpZmllcyB3aGV0aGVyIHlvdSB3YW50IHRvXG4gKiAgICAgICAgaXRlcmF0ZSBvdmVyIHRoZSBtYXBwaW5ncyBzb3J0ZWQgYnkgdGhlIGdlbmVyYXRlZCBmaWxlJ3MgbGluZS9jb2x1bW5cbiAqICAgICAgICBvcmRlciBvciB0aGUgb3JpZ2luYWwncyBzb3VyY2UvbGluZS9jb2x1bW4gb3JkZXIsIHJlc3BlY3RpdmVseS4gRGVmYXVsdHMgdG9cbiAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYC5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmVhY2hNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZWFjaE1hcHBpbmcoYUNhbGxiYWNrLCBhQ29udGV4dCwgYU9yZGVyKSB7XG4gICAgdmFyIGNvbnRleHQgPSBhQ29udGV4dCB8fCBudWxsO1xuICAgIHZhciBvcmRlciA9IGFPcmRlciB8fCBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI7XG5cbiAgICB2YXIgbWFwcGluZ3M7XG4gICAgc3dpdGNoIChvcmRlcikge1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSOlxuICAgICAgbWFwcGluZ3MgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVI6XG4gICAgICBtYXBwaW5ncyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3M7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBvcmRlciBvZiBpdGVyYXRpb24uXCIpO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5zb3VyY2VSb290O1xuICAgIG1hcHBpbmdzLm1hcChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgc291cmNlID0gdXRpbC5jb21wdXRlU291cmNlVVJMKHNvdXJjZVJvb3QsIHNvdXJjZSwgdGhpcy5fc291cmNlTWFwVVJMKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4sXG4gICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgIG9yaWdpbmFsQ29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICBuYW1lOiBtYXBwaW5nLm5hbWUgPT09IG51bGwgPyBudWxsIDogdGhpcy5fbmFtZXMuYXQobWFwcGluZy5uYW1lKVxuICAgICAgfTtcbiAgICB9LCB0aGlzKS5mb3JFYWNoKGFDYWxsYmFjaywgY29udGV4dCk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAqIGxpbmUsIGFuZCBjb2x1bW4gcHJvdmlkZWQuIElmIG5vIGNvbHVtbiBpcyBwcm92aWRlZCwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gYSBlaXRoZXIgdGhlIGxpbmUgd2UgYXJlIHNlYXJjaGluZyBmb3Igb3IgdGhlIG5leHRcbiAqIGNsb3Nlc3QgbGluZSB0aGF0IGhhcyBhbnkgbWFwcGluZ3MuIE90aGVyd2lzZSwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGxpbmUgYW5kIGVpdGhlciB0aGUgY29sdW1uIHdlIGFyZSBzZWFyY2hpbmcgZm9yXG4gKiBvciB0aGUgbmV4dCBjbG9zZXN0IGNvbHVtbiB0aGF0IGhhcyBhbnkgb2Zmc2V0cy5cbiAqXG4gKiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuICBUaGUgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IE9wdGlvbmFsLiB0aGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gYXJyYXkgb2Ygb2JqZWN0cyBpcyByZXR1cm5lZCwgZWFjaCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICBsaW5lIG51bWJlciBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yKGFBcmdzKSB7XG4gICAgdmFyIGxpbmUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKTtcblxuICAgIC8vIFdoZW4gdGhlcmUgaXMgbm8gZXhhY3QgbWF0Y2gsIEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kTWFwcGluZ1xuICAgIC8vIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IG1hcHBpbmcgbGVzcyB0aGFuIHRoZSBuZWVkbGUuIEJ5XG4gICAgLy8gc2V0dGluZyBuZWVkbGUub3JpZ2luYWxDb2x1bW4gdG8gMCwgd2UgdGh1cyBmaW5kIHRoZSBsYXN0IG1hcHBpbmcgZm9yXG4gICAgLy8gdGhlIGdpdmVuIGxpbmUsIHByb3ZpZGVkIHN1Y2ggYSBtYXBwaW5nIGV4aXN0cy5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScpLFxuICAgICAgb3JpZ2luYWxMaW5lOiBsaW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJywgMClcbiAgICB9O1xuXG4gICAgbmVlZGxlLnNvdXJjZSA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChuZWVkbGUuc291cmNlKTtcbiAgICBpZiAobmVlZGxlLnNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB2YXIgbWFwcGluZ3MgPSBbXTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKG5lZWRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcmlnaW5hbENvbHVtblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKGFBcmdzLmNvbHVtbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciBvcmlnaW5hbExpbmUgPSBtYXBwaW5nLm9yaWdpbmFsTGluZTtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIGZvdW5kLiBTaW5jZVxuICAgICAgICAvLyBtYXBwaW5ncyBhcmUgc29ydGVkLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gZmluZCBhbGwgbWFwcGluZ3MgZm9yXG4gICAgICAgIC8vIHRoZSBsaW5lIHdlIGZvdW5kLlxuICAgICAgICB3aGlsZSAobWFwcGluZyAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSA9PT0gb3JpZ2luYWxMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIHdlcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgLy8gU2luY2UgbWFwcGluZ3MgYXJlIHNvcnRlZCwgdGhpcyBpcyBndWFyYW50ZWVkIHRvIGZpbmQgYWxsIG1hcHBpbmdzIGZvclxuICAgICAgICAvLyB0aGUgbGluZSB3ZSBhcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgd2hpbGUgKG1hcHBpbmcgJiZcbiAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSBsaW5lICYmXG4gICAgICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID09IG9yaWdpbmFsQ29sdW1uKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXBwaW5ncztcbiAgfTtcblxuZXhwb3J0cy5Tb3VyY2VNYXBDb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIEEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2ggd2UgY2FuXG4gKiBxdWVyeSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGZpbGUgcG9zaXRpb25zIGJ5IGdpdmluZyBpdCBhIGZpbGVcbiAqIHBvc2l0aW9uIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICpcbiAqIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3JcbiAqIGFscmVhZHkgcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYywgc291cmNlIG1hcHMgaGF2ZSB0aGVcbiAqIGZvbGxvd2luZyBhdHRyaWJ1dGVzOlxuICpcbiAqICAgLSB2ZXJzaW9uOiBXaGljaCB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwIHNwZWMgdGhpcyBtYXAgaXMgZm9sbG93aW5nLlxuICogICAtIHNvdXJjZXM6IEFuIGFycmF5IG9mIFVSTHMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcy5cbiAqICAgLSBuYW1lczogQW4gYXJyYXkgb2YgaWRlbnRpZmllcnMgd2hpY2ggY2FuIGJlIHJlZmVycmVuY2VkIGJ5IGluZGl2aWR1YWwgbWFwcGluZ3MuXG4gKiAgIC0gc291cmNlUm9vdDogT3B0aW9uYWwuIFRoZSBVUkwgcm9vdCBmcm9tIHdoaWNoIGFsbCBzb3VyY2VzIGFyZSByZWxhdGl2ZS5cbiAqICAgLSBzb3VyY2VzQ29udGVudDogT3B0aW9uYWwuIEFuIGFycmF5IG9mIGNvbnRlbnRzIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiAgIC0gbWFwcGluZ3M6IEEgc3RyaW5nIG9mIGJhc2U2NCBWTFFzIHdoaWNoIGNvbnRhaW4gdGhlIGFjdHVhbCBtYXBwaW5ncy5cbiAqICAgLSBmaWxlOiBPcHRpb25hbC4gVGhlIGdlbmVyYXRlZCBmaWxlIHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguXG4gKlxuICogSGVyZSBpcyBhbiBleGFtcGxlIHNvdXJjZSBtYXAsIHRha2VuIGZyb20gdGhlIHNvdXJjZSBtYXAgc3BlY1swXTpcbiAqXG4gKiAgICAge1xuICogICAgICAgdmVyc2lvbiA6IDMsXG4gKiAgICAgICBmaWxlOiBcIm91dC5qc1wiLFxuICogICAgICAgc291cmNlUm9vdCA6IFwiXCIsXG4gKiAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICBuYW1lczogW1wic3JjXCIsIFwibWFwc1wiLCBcImFyZVwiLCBcImZ1blwiXSxcbiAqICAgICAgIG1hcHBpbmdzOiBcIkFBLEFCOztBQkNERTtcIlxuICogICAgIH1cbiAqXG4gKiBUaGUgc2Vjb25kIHBhcmFtZXRlciwgaWYgZ2l2ZW4sIGlzIGEgc3RyaW5nIHdob3NlIHZhbHVlIGlzIHRoZSBVUkxcbiAqIGF0IHdoaWNoIHRoZSBzb3VyY2UgbWFwIHdhcyBmb3VuZC4gIFRoaXMgVVJMIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGVcbiAqIHNvdXJjZXMgYXJyYXkuXG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQ/cGxpPTEjXG4gKi9cbmZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCwgYVNvdXJjZU1hcFVSTCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IHV0aWwucGFyc2VTb3VyY2VNYXBJbnB1dChhU291cmNlTWFwKTtcbiAgfVxuXG4gIHZhciB2ZXJzaW9uID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAndmVyc2lvbicpO1xuICB2YXIgc291cmNlcyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXMnKTtcbiAgLy8gU2FzcyAzLjMgbGVhdmVzIG91dCB0aGUgJ25hbWVzJyBhcnJheSwgc28gd2UgZGV2aWF0ZSBmcm9tIHRoZSBzcGVjICh3aGljaFxuICAvLyByZXF1aXJlcyB0aGUgYXJyYXkpIHRvIHBsYXkgbmljZSBoZXJlLlxuICB2YXIgbmFtZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICduYW1lcycsIFtdKTtcbiAgdmFyIHNvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VSb290JywgbnVsbCk7XG4gIHZhciBzb3VyY2VzQ29udGVudCA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXNDb250ZW50JywgbnVsbCk7XG4gIHZhciBtYXBwaW5ncyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ21hcHBpbmdzJyk7XG4gIHZhciBmaWxlID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnZmlsZScsIG51bGwpO1xuXG4gIC8vIE9uY2UgYWdhaW4sIFNhc3MgZGV2aWF0ZXMgZnJvbSB0aGUgc3BlYyBhbmQgc3VwcGxpZXMgdGhlIHZlcnNpb24gYXMgYVxuICAvLyBzdHJpbmcgcmF0aGVyIHRoYW4gYSBudW1iZXIsIHNvIHdlIHVzZSBsb29zZSBlcXVhbGl0eSBjaGVja2luZyBoZXJlLlxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICBpZiAoc291cmNlUm9vdCkge1xuICAgIHNvdXJjZVJvb3QgPSB1dGlsLm5vcm1hbGl6ZShzb3VyY2VSb290KTtcbiAgfVxuXG4gIHNvdXJjZXMgPSBzb3VyY2VzXG4gICAgLm1hcChTdHJpbmcpXG4gICAgLy8gU29tZSBzb3VyY2UgbWFwcyBwcm9kdWNlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBsaWtlIFwiLi9mb28uanNcIiBpbnN0ZWFkIG9mXG4gICAgLy8gXCJmb28uanNcIi4gIE5vcm1hbGl6ZSB0aGVzZSBmaXJzdCBzbyB0aGF0IGZ1dHVyZSBjb21wYXJpc29ucyB3aWxsIHN1Y2NlZWQuXG4gICAgLy8gU2VlIGJ1Z3ppbC5sYS8xMDkwNzY4LlxuICAgIC5tYXAodXRpbC5ub3JtYWxpemUpXG4gICAgLy8gQWx3YXlzIGVuc3VyZSB0aGF0IGFic29sdXRlIHNvdXJjZXMgYXJlIGludGVybmFsbHkgc3RvcmVkIHJlbGF0aXZlIHRvXG4gICAgLy8gdGhlIHNvdXJjZSByb290LCBpZiB0aGUgc291cmNlIHJvb3QgaXMgYWJzb2x1dGUuIE5vdCBkb2luZyB0aGlzIHdvdWxkXG4gICAgLy8gYmUgcGFydGljdWxhcmx5IHByb2JsZW1hdGljIHdoZW4gdGhlIHNvdXJjZSByb290IGlzIGEgcHJlZml4IG9mIHRoZVxuICAgIC8vIHNvdXJjZSAodmFsaWQsIGJ1dCB3aHk/PykuIFNlZSBnaXRodWIgaXNzdWUgIzE5OSBhbmQgYnVnemlsLmxhLzExODg5ODIuXG4gICAgLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gc291cmNlUm9vdCAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlUm9vdCkgJiYgdXRpbC5pc0Fic29sdXRlKHNvdXJjZSlcbiAgICAgICAgPyB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZSlcbiAgICAgICAgOiBzb3VyY2U7XG4gICAgfSk7XG5cbiAgLy8gUGFzcyBgdHJ1ZWAgYmVsb3cgdG8gYWxsb3cgZHVwbGljYXRlIG5hbWVzIGFuZCBzb3VyY2VzLiBXaGlsZSBzb3VyY2UgbWFwc1xuICAvLyBhcmUgaW50ZW5kZWQgdG8gYmUgY29tcHJlc3NlZCBhbmQgZGVkdXBsaWNhdGVkLCB0aGUgVHlwZVNjcmlwdCBjb21waWxlclxuICAvLyBzb21ldGltZXMgZ2VuZXJhdGVzIHNvdXJjZSBtYXBzIHdpdGggZHVwbGljYXRlcyBpbiB0aGVtLiBTZWUgR2l0aHViIGlzc3VlXG4gIC8vICM3MiBhbmQgYnVnemlsLmxhLzg4OTQ5Mi5cbiAgdGhpcy5fbmFtZXMgPSBBcnJheVNldC5mcm9tQXJyYXkobmFtZXMubWFwKFN0cmluZyksIHRydWUpO1xuICB0aGlzLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KHNvdXJjZXMsIHRydWUpO1xuXG4gIHRoaXMuX2Fic29sdXRlU291cmNlcyA9IHRoaXMuX3NvdXJjZXMudG9BcnJheSgpLm1hcChmdW5jdGlvbiAocykge1xuICAgIHJldHVybiB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc291cmNlUm9vdCwgcywgYVNvdXJjZU1hcFVSTCk7XG4gIH0pO1xuXG4gIHRoaXMuc291cmNlUm9vdCA9IHNvdXJjZVJvb3Q7XG4gIHRoaXMuc291cmNlc0NvbnRlbnQgPSBzb3VyY2VzQ29udGVudDtcbiAgdGhpcy5fbWFwcGluZ3MgPSBtYXBwaW5ncztcbiAgdGhpcy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgdGhpcy5maWxlID0gZmlsZTtcbn1cblxuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gZmluZCB0aGUgaW5kZXggb2YgYSBzb3VyY2UuICBSZXR1cm5zIC0xIGlmIG5vdFxuICogZm91bmQuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kU291cmNlSW5kZXggPSBmdW5jdGlvbihhU291cmNlKSB7XG4gIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgIHJlbGF0aXZlU291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIGlmICh0aGlzLl9zb3VyY2VzLmhhcyhyZWxhdGl2ZVNvdXJjZSkpIHtcbiAgICByZXR1cm4gdGhpcy5fc291cmNlcy5pbmRleE9mKHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIC8vIE1heWJlIGFTb3VyY2UgaXMgYW4gYWJzb2x1dGUgVVJMIGFzIHJldHVybmVkIGJ5IHxzb3VyY2VzfC4gIEluXG4gIC8vIHRoaXMgY2FzZSB3ZSBjYW4ndCBzaW1wbHkgdW5kbyB0aGUgdHJhbnNmb3JtLlxuICB2YXIgaTtcbiAgZm9yIChpID0gMDsgaSA8IHRoaXMuX2Fic29sdXRlU291cmNlcy5sZW5ndGg7ICsraSkge1xuICAgIGlmICh0aGlzLl9hYnNvbHV0ZVNvdXJjZXNbaV0gPT0gYVNvdXJjZSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGZyb20gYSBTb3VyY2VNYXBHZW5lcmF0b3IuXG4gKlxuICogQHBhcmFtIFNvdXJjZU1hcEdlbmVyYXRvciBhU291cmNlTWFwXG4gKiAgICAgICAgVGhlIHNvdXJjZSBtYXAgdGhhdCB3aWxsIGJlIGNvbnN1bWVkLlxuICogQHBhcmFtIFN0cmluZyBhU291cmNlTWFwVVJMXG4gKiAgICAgICAgVGhlIFVSTCBhdCB3aGljaCB0aGUgc291cmNlIG1hcCBjYW4gYmUgZm91bmQgKG9wdGlvbmFsKVxuICogQHJldHVybnMgQmFzaWNTb3VyY2VNYXBDb25zdW1lclxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9mcm9tU291cmNlTWFwKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgICB2YXIgc21jID0gT2JqZWN0LmNyZWF0ZShCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5cbiAgICB2YXIgbmFtZXMgPSBzbWMuX25hbWVzID0gQXJyYXlTZXQuZnJvbUFycmF5KGFTb3VyY2VNYXAuX25hbWVzLnRvQXJyYXkoKSwgdHJ1ZSk7XG4gICAgdmFyIHNvdXJjZXMgPSBzbWMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoYVNvdXJjZU1hcC5fc291cmNlcy50b0FycmF5KCksIHRydWUpO1xuICAgIHNtYy5zb3VyY2VSb290ID0gYVNvdXJjZU1hcC5fc291cmNlUm9vdDtcbiAgICBzbWMuc291cmNlc0NvbnRlbnQgPSBhU291cmNlTWFwLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KHNtYy5fc291cmNlcy50b0FycmF5KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWMuc291cmNlUm9vdCk7XG4gICAgc21jLmZpbGUgPSBhU291cmNlTWFwLl9maWxlO1xuICAgIHNtYy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgICBzbWMuX2Fic29sdXRlU291cmNlcyA9IHNtYy5fc291cmNlcy50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICByZXR1cm4gdXRpbC5jb21wdXRlU291cmNlVVJMKHNtYy5zb3VyY2VSb290LCBzLCBhU291cmNlTWFwVVJMKTtcbiAgICB9KTtcblxuICAgIC8vIEJlY2F1c2Ugd2UgYXJlIG1vZGlmeWluZyB0aGUgZW50cmllcyAoYnkgY29udmVydGluZyBzdHJpbmcgc291cmNlcyBhbmRcbiAgICAvLyBuYW1lcyB0byBpbmRpY2VzIGludG8gdGhlIHNvdXJjZXMgYW5kIG5hbWVzIEFycmF5U2V0cyksIHdlIGhhdmUgdG8gbWFrZVxuICAgIC8vIGEgY29weSBvZiB0aGUgZW50cnkgb3IgZWxzZSBiYWQgdGhpbmdzIGhhcHBlbi4gU2hhcmVkIG11dGFibGUgc3RhdGVcbiAgICAvLyBzdHJpa2VzIGFnYWluISBTZWUgZ2l0aHViIGlzc3VlICMxOTEuXG5cbiAgICB2YXIgZ2VuZXJhdGVkTWFwcGluZ3MgPSBhU291cmNlTWFwLl9tYXBwaW5ncy50b0FycmF5KCkuc2xpY2UoKTtcbiAgICB2YXIgZGVzdEdlbmVyYXRlZE1hcHBpbmdzID0gc21jLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBbXTtcbiAgICB2YXIgZGVzdE9yaWdpbmFsTWFwcGluZ3MgPSBzbWMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzcmNNYXBwaW5nID0gZ2VuZXJhdGVkTWFwcGluZ3NbaV07XG4gICAgICB2YXIgZGVzdE1hcHBpbmcgPSBuZXcgTWFwcGluZztcbiAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBzcmNNYXBwaW5nLmdlbmVyYXRlZExpbmU7XG4gICAgICBkZXN0TWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBzcmNNYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKHNyY01hcHBpbmcuc291cmNlKSB7XG4gICAgICAgIGRlc3RNYXBwaW5nLnNvdXJjZSA9IHNvdXJjZXMuaW5kZXhPZihzcmNNYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIGRlc3RNYXBwaW5nLm9yaWdpbmFsTGluZSA9IHNyY01hcHBpbmcub3JpZ2luYWxMaW5lO1xuICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHNyY01hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgaWYgKHNyY01hcHBpbmcubmFtZSkge1xuICAgICAgICAgIGRlc3RNYXBwaW5nLm5hbWUgPSBuYW1lcy5pbmRleE9mKHNyY01hcHBpbmcubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXN0T3JpZ2luYWxNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICAgIH1cblxuICAgICAgZGVzdEdlbmVyYXRlZE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgIH1cblxuICAgIHF1aWNrU29ydChzbWMuX19vcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcblxuICAgIHJldHVybiBzbWM7XG4gIH07XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnc291cmNlcycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Fic29sdXRlU291cmNlcy5zbGljZSgpO1xuICB9XG59KTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBKSVQgd2l0aCBhIG5pY2Ugc2hhcGUgLyBoaWRkZW4gY2xhc3MuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmcoKSB7XG4gIHRoaXMuZ2VuZXJhdGVkTGluZSA9IDA7XG4gIHRoaXMuZ2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB0aGlzLm9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHRoaXMub3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB0aGlzLm5hbWUgPSBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdmFyIGdlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzU291cmNlID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gYVN0ci5sZW5ndGg7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY2FjaGVkU2VnbWVudHMgPSB7fTtcbiAgICB2YXIgdGVtcCA9IHt9O1xuICAgIHZhciBvcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgdmFyIGdlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdmFyIG1hcHBpbmcsIHN0ciwgc2VnbWVudCwgZW5kLCB2YWx1ZTtcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJzsnKSB7XG4gICAgICAgIGdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoYVN0ci5jaGFyQXQoaW5kZXgpID09PSAnLCcpIHtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBtYXBwaW5nID0gbmV3IE1hcHBpbmcoKTtcbiAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRMaW5lID0gZ2VuZXJhdGVkTGluZTtcblxuICAgICAgICAvLyBCZWNhdXNlIGVhY2ggb2Zmc2V0IGlzIGVuY29kZWQgcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIG9uZSxcbiAgICAgICAgLy8gbWFueSBzZWdtZW50cyBvZnRlbiBoYXZlIHRoZSBzYW1lIGVuY29kaW5nLiBXZSBjYW4gZXhwbG9pdCB0aGlzXG4gICAgICAgIC8vIGZhY3QgYnkgY2FjaGluZyB0aGUgcGFyc2VkIHZhcmlhYmxlIGxlbmd0aCBmaWVsZHMgb2YgZWFjaCBzZWdtZW50LFxuICAgICAgICAvLyBhbGxvd2luZyB1cyB0byBhdm9pZCBhIHNlY29uZCBwYXJzZSBpZiB3ZSBlbmNvdW50ZXIgdGhlIHNhbWVcbiAgICAgICAgLy8gc2VnbWVudCBhZ2Fpbi5cbiAgICAgICAgZm9yIChlbmQgPSBpbmRleDsgZW5kIDwgbGVuZ3RoOyBlbmQrKykge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yKGFTdHIsIGVuZCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHIgPSBhU3RyLnNsaWNlKGluZGV4LCBlbmQpO1xuXG4gICAgICAgIHNlZ21lbnQgPSBjYWNoZWRTZWdtZW50c1tzdHJdO1xuICAgICAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICAgIGluZGV4ICs9IHN0ci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCA9IFtdO1xuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgYmFzZTY0VkxRLmRlY29kZShhU3RyLCBpbmRleCwgdGVtcCk7XG4gICAgICAgICAgICB2YWx1ZSA9IHRlbXAudmFsdWU7XG4gICAgICAgICAgICBpbmRleCA9IHRlbXAucmVzdDtcbiAgICAgICAgICAgIHNlZ21lbnQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlLCBidXQgbm8gbGluZSBhbmQgY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlIGFuZCBsaW5lLCBidXQgbm8gY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGVkU2VnbWVudHNbc3RyXSA9IHNlZ21lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZW5lcmF0ZWQgY29sdW1uLlxuICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uICsgc2VnbWVudFswXTtcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gT3JpZ2luYWwgc291cmNlLlxuICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gcHJldmlvdXNTb3VyY2UgKyBzZWdtZW50WzFdO1xuICAgICAgICAgIHByZXZpb3VzU291cmNlICs9IHNlZ21lbnRbMV07XG5cbiAgICAgICAgICAvLyBPcmlnaW5hbCBsaW5lLlxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID0gcHJldmlvdXNPcmlnaW5hbExpbmUgKyBzZWdtZW50WzJdO1xuICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmU7XG4gICAgICAgICAgLy8gTGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkXG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgKz0gMTtcblxuICAgICAgICAgIC8vIE9yaWdpbmFsIGNvbHVtbi5cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gcHJldmlvdXNPcmlnaW5hbENvbHVtbiArIHNlZ21lbnRbM107XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiA0KSB7XG4gICAgICAgICAgICAvLyBPcmlnaW5hbCBuYW1lLlxuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gcHJldmlvdXNOYW1lICsgc2VnbWVudFs0XTtcbiAgICAgICAgICAgIHByZXZpb3VzTmFtZSArPSBzZWdtZW50WzRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdlbmVyYXRlZE1hcHBpbmdzLnB1c2gobWFwcGluZyk7XG4gICAgICAgIGlmICh0eXBlb2YgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgb3JpZ2luYWxNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVpY2tTb3J0KGdlbmVyYXRlZE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKTtcbiAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBnZW5lcmF0ZWRNYXBwaW5ncztcblxuICAgIHF1aWNrU29ydChvcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncyA9IG9yaWdpbmFsTWFwcGluZ3M7XG4gIH07XG5cbi8qKlxuICogRmluZCB0aGUgbWFwcGluZyB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgaHlwb3RoZXRpY2FsIFwibmVlZGxlXCIgbWFwcGluZyB0aGF0XG4gKiB3ZSBhcmUgc2VhcmNoaW5nIGZvciBpbiB0aGUgZ2l2ZW4gXCJoYXlzdGFja1wiIG9mIG1hcHBpbmdzLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZE1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9maW5kTWFwcGluZyhhTmVlZGxlLCBhTWFwcGluZ3MsIGFMaW5lTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbHVtbk5hbWUsIGFDb21wYXJhdG9yLCBhQmlhcykge1xuICAgIC8vIFRvIHJldHVybiB0aGUgcG9zaXRpb24gd2UgYXJlIHNlYXJjaGluZyBmb3IsIHdlIG11c3QgZmlyc3QgZmluZCB0aGVcbiAgICAvLyBtYXBwaW5nIGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHRoZW4gcmV0dXJuIHRoZSBvcHBvc2l0ZSBwb3NpdGlvbiBpdFxuICAgIC8vIHBvaW50cyB0by4gQmVjYXVzZSB0aGUgbWFwcGluZ3MgYXJlIHNvcnRlZCwgd2UgY2FuIHVzZSBiaW5hcnkgc2VhcmNoIHRvXG4gICAgLy8gZmluZCB0aGUgYmVzdCBtYXBwaW5nLlxuXG4gICAgaWYgKGFOZWVkbGVbYUxpbmVOYW1lXSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMaW5lIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthTGluZU5hbWVdKTtcbiAgICB9XG4gICAgaWYgKGFOZWVkbGVbYUNvbHVtbk5hbWVdIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29sdW1uIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthQ29sdW1uTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBiaW5hcnlTZWFyY2guc2VhcmNoKGFOZWVkbGUsIGFNYXBwaW5ncywgYUNvbXBhcmF0b3IsIGFCaWFzKTtcbiAgfTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBsYXN0IGNvbHVtbiBmb3IgZWFjaCBnZW5lcmF0ZWQgbWFwcGluZy4gVGhlIGxhc3QgY29sdW1uIGlzXG4gKiBpbmNsdXNpdmUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbXB1dGVDb2x1bW5TcGFucyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NvbXB1dGVDb2x1bW5TcGFucygpIHtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgLy8gTWFwcGluZ3MgZG8gbm90IGNvbnRhaW4gYSBmaWVsZCBmb3IgdGhlIGxhc3QgZ2VuZXJhdGVkIGNvbHVtbnQuIFdlXG4gICAgICAvLyBjYW4gY29tZSB1cCB3aXRoIGFuIG9wdGltaXN0aWMgZXN0aW1hdGUsIGhvd2V2ZXIsIGJ5IGFzc3VtaW5nIHRoYXRcbiAgICAgIC8vIG1hcHBpbmdzIGFyZSBjb250aWd1b3VzIChpLmUuIGdpdmVuIHR3byBjb25zZWN1dGl2ZSBtYXBwaW5ncywgdGhlXG4gICAgICAvLyBmaXJzdCBtYXBwaW5nIGVuZHMgd2hlcmUgdGhlIHNlY29uZCBvbmUgc3RhcnRzKS5cbiAgICAgIGlmIChpbmRleCArIDEgPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5leHRNYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC0gMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgbGFzdCBtYXBwaW5nIGZvciBlYWNoIGxpbmUgc3BhbnMgdGhlIGVudGlyZSBsaW5lLlxuICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gSW5maW5pdHk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0XG4gKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGxpbmUgbnVtYmVyXG4gKiAgICAgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuICBUaGVcbiAqICAgICBjb2x1bW4gbnVtYmVyIGlzIDAtYmFzZWQuXG4gKiAgIC0gbmFtZTogVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIsIG9yIG51bGwuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9vcmlnaW5hbFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIGdlbmVyYXRlZExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgZ2VuZXJhdGVkQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpXG4gICAgfTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgbmVlZGxlLFxuICAgICAgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MsXG4gICAgICBcImdlbmVyYXRlZExpbmVcIixcbiAgICAgIFwiZ2VuZXJhdGVkQ29sdW1uXCIsXG4gICAgICB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkLFxuICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdzb3VyY2UnLCBudWxsKTtcbiAgICAgICAgaWYgKHNvdXJjZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuYXQoc291cmNlKTtcbiAgICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwodGhpcy5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbmFtZScsIG51bGwpO1xuICAgICAgICBpZiAobmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgIG5hbWUgPSB0aGlzLl9uYW1lcy5hdChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbExpbmUnLCBudWxsKSxcbiAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbENvbHVtbicsIG51bGwpLFxuICAgICAgICAgIG5hbWU6IG5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlOiBudWxsLFxuICAgICAgbGluZTogbnVsbCxcbiAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgIG5hbWU6IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHdlIGhhdmUgdGhlIHNvdXJjZSBjb250ZW50IGZvciBldmVyeSBzb3VyY2UgaW4gdGhlIHNvdXJjZVxuICogbWFwLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gQmFzaWNTb3VyY2VNYXBDb25zdW1lcl9oYXNDb250ZW50c09mQWxsU291cmNlcygpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnQubGVuZ3RoID49IHRoaXMuX3NvdXJjZXMuc2l6ZSgpICYmXG4gICAgICAhdGhpcy5zb3VyY2VzQ29udGVudC5zb21lKGZ1bmN0aW9uIChzYykgeyByZXR1cm4gc2MgPT0gbnVsbDsgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlIGNvbnRlbnQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIHRoZSB1cmwgb2YgdGhlXG4gKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gKiBhdmFpbGFibGUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChhU291cmNlKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbaW5kZXhdO1xuICAgIH1cblxuICAgIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICByZWxhdGl2ZVNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5zb3VyY2VSb290LCByZWxhdGl2ZVNvdXJjZSk7XG4gICAgfVxuXG4gICAgdmFyIHVybDtcbiAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGxcbiAgICAgICAgJiYgKHVybCA9IHV0aWwudXJsUGFyc2UodGhpcy5zb3VyY2VSb290KSkpIHtcbiAgICAgIC8vIFhYWDogZmlsZTovLyBVUklzIGFuZCBhYnNvbHV0ZSBwYXRocyBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZm9yXG4gICAgICAvLyBtYW55IHVzZXJzLiBXZSBjYW4gaGVscCB0aGVtIG91dCB3aGVuIHRoZXkgZXhwZWN0IGZpbGU6Ly8gVVJJcyB0b1xuICAgICAgLy8gYmVoYXZlIGxpa2UgaXQgd291bGQgaWYgdGhleSB3ZXJlIHJ1bm5pbmcgYSBsb2NhbCBIVFRQIHNlcnZlci4gU2VlXG4gICAgICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD04ODU1OTcuXG4gICAgICB2YXIgZmlsZVVyaUFic1BhdGggPSByZWxhdGl2ZVNvdXJjZS5yZXBsYWNlKC9eZmlsZTpcXC9cXC8vLCBcIlwiKTtcbiAgICAgIGlmICh1cmwuc2NoZW1lID09IFwiZmlsZVwiXG4gICAgICAgICAgJiYgdGhpcy5fc291cmNlcy5oYXMoZmlsZVVyaUFic1BhdGgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihmaWxlVXJpQWJzUGF0aCldXG4gICAgICB9XG5cbiAgICAgIGlmICgoIXVybC5wYXRoIHx8IHVybC5wYXRoID09IFwiL1wiKVxuICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKFwiL1wiICsgcmVsYXRpdmVTb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihcIi9cIiArIHJlbGF0aXZlU291cmNlKV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHJlY3Vyc2l2ZWx5IGZyb21cbiAgICAvLyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IuIEluIHRoYXQgY2FzZSwgd2VcbiAgICAvLyBkb24ndCB3YW50IHRvIHRocm93IGlmIHdlIGNhbid0IGZpbmQgdGhlIHNvdXJjZSAtIHdlIGp1c3Qgd2FudCB0b1xuICAgIC8vIHJldHVybiBudWxsLCBzbyB3ZSBwcm92aWRlIGEgZmxhZyB0byBleGl0IGdyYWNlZnVsbHkuXG4gICAgaWYgKG51bGxPbk1pc3NpbmcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCInICsgcmVsYXRpdmVTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyk7XG4gICAgc291cmNlID0gdGhpcy5fZmluZFNvdXJjZUluZGV4KHNvdXJjZSk7XG4gICAgaWYgKHNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxpbmU6IG51bGwsXG4gICAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBvcmlnaW5hbExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICB9O1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcoXG4gICAgICBuZWVkbGUsXG4gICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgXCJvcmlnaW5hbExpbmVcIixcbiAgICAgIFwib3JpZ2luYWxDb2x1bW5cIixcbiAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICB1dGlsLmdldEFyZyhhQXJncywgJ2JpYXMnLCBTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORClcbiAgICApO1xuXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gbmVlZGxlLnNvdXJjZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgbGFzdENvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2xhc3RHZW5lcmF0ZWRDb2x1bW4nLCBudWxsKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgIH07XG4gIH07XG5cbmV4cG9ydHMuQmFzaWNTb3VyY2VNYXBDb25zdW1lciA9IEJhc2ljU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQW4gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwYXJzZWQgc291cmNlIG1hcCB3aGljaFxuICogd2UgY2FuIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbi4gSXQgZGlmZmVycyBmcm9tIEJhc2ljU291cmNlTWFwQ29uc3VtZXIgaW5cbiAqIHRoYXQgaXQgdGFrZXMgXCJpbmRleGVkXCIgc291cmNlIG1hcHMgKGkuZS4gb25lcyB3aXRoIGEgXCJzZWN0aW9uc1wiIGZpZWxkKSBhc1xuICogaW5wdXQuXG4gKlxuICogVGhlIGZpcnN0IHBhcmFtZXRlciBpcyBhIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3IgYWxyZWFkeVxuICogcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYyBmb3IgaW5kZXhlZCBzb3VyY2UgbWFwcywgdGhleVxuICogaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gKlxuICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICogICAtIHNlY3Rpb25zOiBBIGxpc3Qgb2Ygc2VjdGlvbiBkZWZpbml0aW9ucy5cbiAqXG4gKiBFYWNoIHZhbHVlIHVuZGVyIHRoZSBcInNlY3Rpb25zXCIgZmllbGQgaGFzIHR3byBmaWVsZHM6XG4gKiAgIC0gb2Zmc2V0OiBUaGUgb2Zmc2V0IGludG8gdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBhdCB3aGljaCB0aGlzIHNlY3Rpb25cbiAqICAgICAgIGJlZ2lucyB0byBhcHBseSwgZGVmaW5lZCBhcyBhbiBvYmplY3Qgd2l0aCBhIFwibGluZVwiIGFuZCBcImNvbHVtblwiXG4gKiAgICAgICBmaWVsZC5cbiAqICAgLSBtYXA6IEEgc291cmNlIG1hcCBkZWZpbml0aW9uLiBUaGlzIHNvdXJjZSBtYXAgY291bGQgYWxzbyBiZSBpbmRleGVkLFxuICogICAgICAgYnV0IGRvZXNuJ3QgaGF2ZSB0byBiZS5cbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSBcIm1hcFwiIGZpZWxkLCBpdCdzIGFsc28gcG9zc2libGUgdG8gaGF2ZSBhIFwidXJsXCIgZmllbGRcbiAqIHNwZWNpZnlpbmcgYSBVUkwgdG8gcmV0cmlldmUgYSBzb3VyY2UgbWFwIGZyb20sIGJ1dCB0aGF0J3MgY3VycmVudGx5XG4gKiB1bnN1cHBvcnRlZC5cbiAqXG4gKiBIZXJlJ3MgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF0sIGJ1dFxuICogbW9kaWZpZWQgdG8gb21pdCBhIHNlY3Rpb24gd2hpY2ggdXNlcyB0aGUgXCJ1cmxcIiBmaWVsZC5cbiAqXG4gKiAge1xuICogICAgdmVyc2lvbiA6IDMsXG4gKiAgICBmaWxlOiBcImFwcC5qc1wiLFxuICogICAgc2VjdGlvbnM6IFt7XG4gKiAgICAgIG9mZnNldDoge2xpbmU6MTAwLCBjb2x1bW46MTB9LFxuICogICAgICBtYXA6IHtcbiAqICAgICAgICB2ZXJzaW9uIDogMyxcbiAqICAgICAgICBmaWxlOiBcInNlY3Rpb24uanNcIixcbiAqICAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICAgbWFwcGluZ3M6IFwiQUFBQSxFOztBQkNERTtcIlxuICogICAgICB9XG4gKiAgICB9XSxcbiAqICB9XG4gKlxuICogVGhlIHNlY29uZCBwYXJhbWV0ZXIsIGlmIGdpdmVuLCBpcyBhIHN0cmluZyB3aG9zZSB2YWx1ZSBpcyB0aGUgVVJMXG4gKiBhdCB3aGljaCB0aGUgc291cmNlIG1hcCB3YXMgZm91bmQuICBUaGlzIFVSTCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlXG4gKiBzb3VyY2VzIGFycmF5LlxuICpcbiAqIFswXTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xVTFSR0FlaFF3UnlwVVRvdkYxS1JscGlPRnplMGItXzJnYzZmQUgwS1kway9lZGl0I2hlYWRpbmc9aC41MzVlczN4ZXByZ3RcbiAqL1xuZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNlY3Rpb25zID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc2VjdGlvbnMnKTtcblxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgdmFyIGxhc3RPZmZzZXQgPSB7XG4gICAgbGluZTogLTEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHRoaXMuX3NlY3Rpb25zID0gc2VjdGlvbnMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgaWYgKHMudXJsKSB7XG4gICAgICAvLyBUaGUgdXJsIGZpZWxkIHdpbGwgcmVxdWlyZSBzdXBwb3J0IGZvciBhc3luY2hyb25pY2l0eS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8xNlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdXBwb3J0IGZvciB1cmwgZmllbGQgaW4gc2VjdGlvbnMgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0ID0gdXRpbC5nZXRBcmcocywgJ29mZnNldCcpO1xuICAgIHZhciBvZmZzZXRMaW5lID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnbGluZScpO1xuICAgIHZhciBvZmZzZXRDb2x1bW4gPSB1dGlsLmdldEFyZyhvZmZzZXQsICdjb2x1bW4nKTtcblxuICAgIGlmIChvZmZzZXRMaW5lIDwgbGFzdE9mZnNldC5saW5lIHx8XG4gICAgICAgIChvZmZzZXRMaW5lID09PSBsYXN0T2Zmc2V0LmxpbmUgJiYgb2Zmc2V0Q29sdW1uIDwgbGFzdE9mZnNldC5jb2x1bW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3Rpb24gb2Zmc2V0cyBtdXN0IGJlIG9yZGVyZWQgYW5kIG5vbi1vdmVybGFwcGluZy4nKTtcbiAgICB9XG4gICAgbGFzdE9mZnNldCA9IG9mZnNldDtcblxuICAgIHJldHVybiB7XG4gICAgICBnZW5lcmF0ZWRPZmZzZXQ6IHtcbiAgICAgICAgLy8gVGhlIG9mZnNldCBmaWVsZHMgYXJlIDAtYmFzZWQsIGJ1dCB3ZSB1c2UgMS1iYXNlZCBpbmRpY2VzIHdoZW5cbiAgICAgICAgLy8gZW5jb2RpbmcvZGVjb2RpbmcgZnJvbSBWTFEuXG4gICAgICAgIGdlbmVyYXRlZExpbmU6IG9mZnNldExpbmUgKyAxLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG9mZnNldENvbHVtbiArIDFcbiAgICAgIH0sXG4gICAgICBjb25zdW1lcjogbmV3IFNvdXJjZU1hcENvbnN1bWVyKHV0aWwuZ2V0QXJnKHMsICdtYXAnKSwgYVNvdXJjZU1hcFVSTClcbiAgICB9XG4gIH0pO1xufVxuXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdzb3VyY2VzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICBzb3VyY2VzLnB1c2godGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VzO1xuICB9XG59KTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBjb2x1bW5cbiAqICAgICBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gb2JqZWN0IGlzIHJldHVybmVkIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSwgb3IgbnVsbC5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgIH07XG5cbiAgICAvLyBGaW5kIHRoZSBzZWN0aW9uIGNvbnRhaW5pbmcgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbiB3ZSdyZSB0cnlpbmcgdG8gbWFwXG4gICAgLy8gdG8gYW4gb3JpZ2luYWwgcG9zaXRpb24uXG4gICAgdmFyIHNlY3Rpb25JbmRleCA9IGJpbmFyeVNlYXJjaC5zZWFyY2gobmVlZGxlLCB0aGlzLl9zZWN0aW9ucyxcbiAgICAgIGZ1bmN0aW9uKG5lZWRsZSwgc2VjdGlvbikge1xuICAgICAgICB2YXIgY21wID0gbmVlZGxlLmdlbmVyYXRlZExpbmUgLSBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lO1xuICAgICAgICBpZiAoY21wKSB7XG4gICAgICAgICAgcmV0dXJuIGNtcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAobmVlZGxlLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgICAgICAgc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgIH0pO1xuICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbc2VjdGlvbkluZGV4XTtcblxuICAgIGlmICghc2VjdGlvbikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiBudWxsLFxuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIG5hbWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlY3Rpb24uY29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICBsaW5lOiBuZWVkbGUuZ2VuZXJhdGVkTGluZSAtXG4gICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICBjb2x1bW46IG5lZWRsZS5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmVcbiAgICAgICAgID8gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uIC0gMVxuICAgICAgICAgOiAwKSxcbiAgICAgIGJpYXM6IGFBcmdzLmJpYXNcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIHRoZSBzb3VyY2UgY29udGVudCBmb3IgZXZlcnkgc291cmNlIGluIHRoZSBzb3VyY2VcbiAqIG1hcCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2hhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWN0aW9ucy5ldmVyeShmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIHMuY29uc3VtZXIuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMoKTtcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAqIG9yaWdpbmFsIHNvdXJjZSBmaWxlLiBSZXR1cm5zIG51bGwgaWYgbm8gb3JpZ2luYWwgc291cmNlIGNvbnRlbnQgaXNcbiAqIGF2YWlsYWJsZS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5zb3VyY2VDb250ZW50Rm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIHZhciBjb250ZW50ID0gc2VjdGlvbi5jb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIHRydWUpO1xuICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChudWxsT25NaXNzaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuIFxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIC8vIE9ubHkgY29uc2lkZXIgdGhpcyBzZWN0aW9uIGlmIHRoZSByZXF1ZXN0ZWQgc291cmNlIGlzIGluIHRoZSBsaXN0IG9mXG4gICAgICAvLyBzb3VyY2VzIG9mIHRoZSBjb25zdW1lci5cbiAgICAgIGlmIChzZWN0aW9uLmNvbnN1bWVyLl9maW5kU291cmNlSW5kZXgodXRpbC5nZXRBcmcoYUFyZ3MsICdzb3VyY2UnKSkgPT09IC0xKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIGdlbmVyYXRlZFBvc2l0aW9uID0gc2VjdGlvbi5jb25zdW1lci5nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncyk7XG4gICAgICBpZiAoZ2VuZXJhdGVkUG9zaXRpb24pIHtcbiAgICAgICAgdmFyIHJldCA9IHtcbiAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWRQb3NpdGlvbi5saW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWRQb3NpdGlvbi5jb2x1bW4gK1xuICAgICAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IGdlbmVyYXRlZFBvc2l0aW9uLmxpbmVcbiAgICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgICA6IDApXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IG51bGwsXG4gICAgICBjb2x1bW46IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fcGFyc2VNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuICAgICAgdmFyIHNlY3Rpb25NYXBwaW5ncyA9IHNlY3Rpb24uY29uc3VtZXIuX2dlbmVyYXRlZE1hcHBpbmdzO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWN0aW9uTWFwcGluZ3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG1hcHBpbmcgPSBzZWN0aW9uTWFwcGluZ3Nbal07XG5cbiAgICAgICAgdmFyIHNvdXJjZSA9IHNlY3Rpb24uY29uc3VtZXIuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc2VjdGlvbi5jb25zdW1lci5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIHRoaXMuX3NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuXG4gICAgICAgIHZhciBuYW1lID0gbnVsbDtcbiAgICAgICAgaWYgKG1hcHBpbmcubmFtZSkge1xuICAgICAgICAgIG5hbWUgPSBzZWN0aW9uLmNvbnN1bWVyLl9uYW1lcy5hdChtYXBwaW5nLm5hbWUpO1xuICAgICAgICAgIHRoaXMuX25hbWVzLmFkZChuYW1lKTtcbiAgICAgICAgICBuYW1lID0gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBtYXBwaW5ncyBjb21pbmcgZnJvbSB0aGUgY29uc3VtZXIgZm9yIHRoZSBzZWN0aW9uIGhhdmVcbiAgICAgICAgLy8gZ2VuZXJhdGVkIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlY3Rpb24sIHNvIHdlXG4gICAgICAgIC8vIG5lZWQgdG8gb2Zmc2V0IHRoZW0gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb25jYXRlbmF0ZWRcbiAgICAgICAgLy8gZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAgIHZhciBhZGp1c3RlZE1hcHBpbmcgPSB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgZ2VuZXJhdGVkTGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbWFwcGluZy5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgIDogMCksXG4gICAgICAgICAgb3JpZ2luYWxMaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgaWYgKHR5cGVvZiBhZGp1c3RlZE1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHF1aWNrU29ydCh0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgIHF1aWNrU29ydCh0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG4gIH07XG5cbmV4cG9ydHMuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyID0gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qc1xuLy8gbW9kdWxlIGlkID0gN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbmV4cG9ydHMuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCA9IDI7XG5cbi8qKlxuICogUmVjdXJzaXZlIGltcGxlbWVudGF0aW9uIG9mIGJpbmFyeSBzZWFyY2guXG4gKlxuICogQHBhcmFtIGFMb3cgSW5kaWNlcyBoZXJlIGFuZCBsb3dlciBkbyBub3QgY29udGFpbiB0aGUgbmVlZGxlLlxuICogQHBhcmFtIGFIaWdoIEluZGljZXMgaGVyZSBhbmQgaGlnaGVyIGRvIG5vdCBjb250YWluIHRoZSBuZWVkbGUuXG4gKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCBiZWluZyBzZWFyY2hlZCBmb3IuXG4gKiBAcGFyYW0gYUhheXN0YWNrIFRoZSBub24tZW1wdHkgYXJyYXkgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgRnVuY3Rpb24gd2hpY2ggdGFrZXMgdHdvIGVsZW1lbnRzIGFuZCByZXR1cm5zIC0xLCAwLCBvciAxLlxuICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICovXG5mdW5jdGlvbiByZWN1cnNpdmVTZWFyY2goYUxvdywgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gdGVybWluYXRlcyB3aGVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6XG4gIC8vXG4gIC8vICAgMS4gV2UgZmluZCB0aGUgZXhhY3QgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gIC8vXG4gIC8vICAgMi4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBidXQgd2UgY2FuIHJldHVybiB0aGUgaW5kZXggb2ZcbiAgLy8gICAgICB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQuXG4gIC8vXG4gIC8vICAgMy4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBhbmQgdGhlcmUgaXMgbm8gbmV4dC1jbG9zZXN0XG4gIC8vICAgICAgZWxlbWVudCB0aGFuIHRoZSBvbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IsIHNvIHdlIHJldHVybiAtMS5cbiAgdmFyIG1pZCA9IE1hdGguZmxvb3IoKGFIaWdoIC0gYUxvdykgLyAyKSArIGFMb3c7XG4gIHZhciBjbXAgPSBhQ29tcGFyZShhTmVlZGxlLCBhSGF5c3RhY2tbbWlkXSwgdHJ1ZSk7XG4gIGlmIChjbXAgPT09IDApIHtcbiAgICAvLyBGb3VuZCB0aGUgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gICAgcmV0dXJuIG1pZDtcbiAgfVxuICBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBncmVhdGVyIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKGFIaWdoIC0gbWlkID4gMSkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgaW4gdGhlIHVwcGVyIGhhbGYuXG4gICAgICByZXR1cm4gcmVjdXJzaXZlU2VhcmNoKG1pZCwgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZXhhY3QgbmVlZGxlIGVsZW1lbnQgd2FzIG5vdCBmb3VuZCBpbiB0aGlzIGhheXN0YWNrLiBEZXRlcm1pbmUgaWZcbiAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgIGlmIChhQmlhcyA9PSBleHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EKSB7XG4gICAgICByZXR1cm4gYUhpZ2ggPCBhSGF5c3RhY2subGVuZ3RoID8gYUhpZ2ggOiAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBsZXNzIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKG1pZCAtIGFMb3cgPiAxKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBpbiB0aGUgbG93ZXIgaGFsZi5cbiAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2goYUxvdywgbWlkLCBhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcyk7XG4gICAgfVxuXG4gICAgLy8gd2UgYXJlIGluIHRlcm1pbmF0aW9uIGNhc2UgKDMpIG9yICgyKSBhbmQgcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSB0aGluZy5cbiAgICBpZiAoYUJpYXMgPT0gZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCkge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFMb3cgPCAwID8gLTEgOiBhTG93O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNlYXJjaCB3aGljaCB3aWxsIGFsd2F5cyB0cnkgYW5kIHJldHVyblxuICogdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IGVsZW1lbnQgaWYgdGhlcmUgaXMgbm8gZXhhY3QgaGl0LiBUaGlzIGlzIGJlY2F1c2VcbiAqIG1hcHBpbmdzIGJldHdlZW4gb3JpZ2luYWwgYW5kIGdlbmVyYXRlZCBsaW5lL2NvbCBwYWlycyBhcmUgc2luZ2xlIHBvaW50cyxcbiAqIGFuZCB0aGVyZSBpcyBhbiBpbXBsaWNpdCByZWdpb24gYmV0d2VlbiBlYWNoIG9mIHRoZW0sIHNvIGEgbWlzcyBqdXN0IG1lYW5zXG4gKiB0aGF0IHlvdSBhcmVuJ3Qgb24gdGhlIHZlcnkgc3RhcnQgb2YgYSByZWdpb24uXG4gKlxuICogQHBhcmFtIGFOZWVkbGUgVGhlIGVsZW1lbnQgeW91IGFyZSBsb29raW5nIGZvci5cbiAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIGFycmF5IHRoYXQgaXMgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgQSBmdW5jdGlvbiB3aGljaCB0YWtlcyB0aGUgbmVlZGxlIGFuZCBhbiBlbGVtZW50IGluIHRoZVxuICogICAgIGFycmF5IGFuZCByZXR1cm5zIC0xLCAwLCBvciAxIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuZWVkbGUgaXMgbGVzc1xuICogICAgIHRoYW4sIGVxdWFsIHRvLCBvciBncmVhdGVyIHRoYW4gdGhlIGVsZW1lbnQsIHJlc3BlY3RpdmVseS5cbiAqIEBwYXJhbSBhQmlhcyBFaXRoZXIgJ2JpbmFyeVNlYXJjaC5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJy5cbiAqL1xuZXhwb3J0cy5zZWFyY2ggPSBmdW5jdGlvbiBzZWFyY2goYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgaWYgKGFIYXlzdGFjay5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICB2YXIgaW5kZXggPSByZWN1cnNpdmVTZWFyY2goLTEsIGFIYXlzdGFjay5sZW5ndGgsIGFOZWVkbGUsIGFIYXlzdGFjayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFDb21wYXJlLCBhQmlhcyB8fCBleHBvcnRzLkdSRUFURVNUX0xPV0VSX0JPVU5EKTtcbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8vIFdlIGhhdmUgZm91bmQgZWl0aGVyIHRoZSBleGFjdCBlbGVtZW50LCBvciB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQgdGhhblxuICAvLyB0aGUgb25lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLiBIb3dldmVyLCB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSBzdWNoXG4gIC8vIGVsZW1lbnQuIE1ha2Ugc3VyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBzbWFsbGVzdCBvZiB0aGVzZS5cbiAgd2hpbGUgKGluZGV4IC0gMSA+PSAwKSB7XG4gICAgaWYgKGFDb21wYXJlKGFIYXlzdGFja1tpbmRleF0sIGFIYXlzdGFja1tpbmRleCAtIDFdLCB0cnVlKSAhPT0gMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC0taW5kZXg7XG4gIH1cblxuICByZXR1cm4gaW5kZXg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmluYXJ5LXNlYXJjaC5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8vIEl0IHR1cm5zIG91dCB0aGF0IHNvbWUgKG1vc3Q/KSBKYXZhU2NyaXB0IGVuZ2luZXMgZG9uJ3Qgc2VsZi1ob3N0XG4vLyBgQXJyYXkucHJvdG90eXBlLnNvcnRgLiBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgQysrIHdpbGwgbGlrZWx5IHJlbWFpblxuLy8gZmFzdGVyIHRoYW4gSlMgd2hlbiBkb2luZyByYXcgQ1BVLWludGVuc2l2ZSBzb3J0aW5nLiBIb3dldmVyLCB3aGVuIHVzaW5nIGFcbi8vIGN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uLCBjYWxsaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIFZNJ3MgQysrIGFuZFxuLy8gSklUJ2QgSlMgaXMgcmF0aGVyIHNsb3cgKmFuZCogbG9zZXMgSklUIHR5cGUgaW5mb3JtYXRpb24sIHJlc3VsdGluZyBpblxuLy8gd29yc2UgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRoYW4gd291bGQgYmUgb3B0aW1hbC4gSW5cbi8vIGZhY3QsIHdoZW4gc29ydGluZyB3aXRoIGEgY29tcGFyYXRvciwgdGhlc2UgY29zdHMgb3V0d2VpZ2ggdGhlIGJlbmVmaXRzIG9mXG4vLyBzb3J0aW5nIGluIEMrKy4gQnkgdXNpbmcgb3VyIG93biBKUy1pbXBsZW1lbnRlZCBRdWljayBTb3J0IChiZWxvdyksIHdlIGdldFxuLy8gYSB+MzUwMG1zIG1lYW4gc3BlZWQtdXAgaW4gYGJlbmNoL2JlbmNoLmh0bWxgLlxuXG4vKipcbiAqIFN3YXAgdGhlIGVsZW1lbnRzIGluZGV4ZWQgYnkgYHhgIGFuZCBgeWAgaW4gdGhlIGFycmF5IGBhcnlgLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIFRoZSBhcnJheS5cbiAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gKiAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpdGVtLlxuICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHNlY29uZCBpdGVtLlxuICovXG5mdW5jdGlvbiBzd2FwKGFyeSwgeCwgeSkge1xuICB2YXIgdGVtcCA9IGFyeVt4XTtcbiAgYXJ5W3hdID0gYXJ5W3ldO1xuICBhcnlbeV0gPSB0ZW1wO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciB3aXRoaW4gdGhlIHJhbmdlIGBsb3cgLi4gaGlnaGAgaW5jbHVzaXZlLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBsb3dcbiAqICAgICAgICBUaGUgbG93ZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhpZ2hcbiAqICAgICAgICBUaGUgdXBwZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICovXG5mdW5jdGlvbiByYW5kb21JbnRJblJhbmdlKGxvdywgaGlnaCkge1xuICByZXR1cm4gTWF0aC5yb3VuZChsb3cgKyAoTWF0aC5yYW5kb20oKSAqIChoaWdoIC0gbG93KSkpO1xufVxuXG4vKipcbiAqIFRoZSBRdWljayBTb3J0IGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAqICAgICAgICBBbiBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwXG4gKiAgICAgICAgU3RhcnQgaW5kZXggb2YgdGhlIGFycmF5XG4gKiBAcGFyYW0ge051bWJlcn0gclxuICogICAgICAgIEVuZCBpbmRleCBvZiB0aGUgYXJyYXlcbiAqL1xuZnVuY3Rpb24gZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCByKSB7XG4gIC8vIElmIG91ciBsb3dlciBib3VuZCBpcyBsZXNzIHRoYW4gb3VyIHVwcGVyIGJvdW5kLCB3ZSAoMSkgcGFydGl0aW9uIHRoZVxuICAvLyBhcnJheSBpbnRvIHR3byBwaWVjZXMgYW5kICgyKSByZWN1cnNlIG9uIGVhY2ggaGFsZi4gSWYgaXQgaXMgbm90LCB0aGlzIGlzXG4gIC8vIHRoZSBlbXB0eSBhcnJheSBhbmQgb3VyIGJhc2UgY2FzZS5cblxuICBpZiAocCA8IHIpIHtcbiAgICAvLyAoMSkgUGFydGl0aW9uaW5nLlxuICAgIC8vXG4gICAgLy8gVGhlIHBhcnRpdGlvbmluZyBjaG9vc2VzIGEgcGl2b3QgYmV0d2VlbiBgcGAgYW5kIGByYCBhbmQgbW92ZXMgYWxsXG4gICAgLy8gZWxlbWVudHMgdGhhdCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdCB0byB0aGUgYmVmb3JlIGl0LCBhbmRcbiAgICAvLyBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBpdCBhZnRlciBpdC4gVGhlIGVmZmVjdCBpcyB0aGF0XG4gICAgLy8gb25jZSBwYXJ0aXRpb24gaXMgZG9uZSwgdGhlIHBpdm90IGlzIGluIHRoZSBleGFjdCBwbGFjZSBpdCB3aWxsIGJlIHdoZW5cbiAgICAvLyB0aGUgYXJyYXkgaXMgcHV0IGluIHNvcnRlZCBvcmRlciwgYW5kIGl0IHdpbGwgbm90IG5lZWQgdG8gYmUgbW92ZWRcbiAgICAvLyBhZ2Fpbi4gVGhpcyBydW5zIGluIE8obikgdGltZS5cblxuICAgIC8vIEFsd2F5cyBjaG9vc2UgYSByYW5kb20gcGl2b3Qgc28gdGhhdCBhbiBpbnB1dCBhcnJheSB3aGljaCBpcyByZXZlcnNlXG4gICAgLy8gc29ydGVkIGRvZXMgbm90IGNhdXNlIE8obl4yKSBydW5uaW5nIHRpbWUuXG4gICAgdmFyIHBpdm90SW5kZXggPSByYW5kb21JbnRJblJhbmdlKHAsIHIpO1xuICAgIHZhciBpID0gcCAtIDE7XG5cbiAgICBzd2FwKGFyeSwgcGl2b3RJbmRleCwgcik7XG4gICAgdmFyIHBpdm90ID0gYXJ5W3JdO1xuXG4gICAgLy8gSW1tZWRpYXRlbHkgYWZ0ZXIgYGpgIGlzIGluY3JlbWVudGVkIGluIHRoaXMgbG9vcCwgdGhlIGZvbGxvd2luZyBob2xkXG4gICAgLy8gdHJ1ZTpcbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbcCAuLiBpXWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdC5cbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbaSsxIC4uIGotMV1gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGl2b3QuXG4gICAgZm9yICh2YXIgaiA9IHA7IGogPCByOyBqKyspIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFyeVtqXSwgcGl2b3QpIDw9IDApIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICBzd2FwKGFyeSwgaSwgaik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dhcChhcnksIGkgKyAxLCBqKTtcbiAgICB2YXIgcSA9IGkgKyAxO1xuXG4gICAgLy8gKDIpIFJlY3Vyc2Ugb24gZWFjaCBoYWxmLlxuXG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCBxIC0gMSk7XG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBxICsgMSwgcik7XG4gIH1cbn1cblxuLyoqXG4gKiBTb3J0IHRoZSBnaXZlbiBhcnJheSBpbi1wbGFjZSB3aXRoIHRoZSBnaXZlbiBjb21wYXJhdG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb21wYXJhdG9yXG4gKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICovXG5leHBvcnRzLnF1aWNrU29ydCA9IGZ1bmN0aW9uIChhcnksIGNvbXBhcmF0b3IpIHtcbiAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCAwLCBhcnkubGVuZ3RoIC0gMSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvcXVpY2stc29ydC5qc1xuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBTb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL3NvdXJjZS1tYXAtZ2VuZXJhdG9yJykuU291cmNlTWFwR2VuZXJhdG9yO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuLy8gTWF0Y2hlcyBhIFdpbmRvd3Mtc3R5bGUgYFxcclxcbmAgbmV3bGluZSBvciBhIGBcXG5gIG5ld2xpbmUgdXNlZCBieSBhbGwgb3RoZXJcbi8vIG9wZXJhdGluZyBzeXN0ZW1zIHRoZXNlIGRheXMgKGNhcHR1cmluZyB0aGUgcmVzdWx0KS5cbnZhciBSRUdFWF9ORVdMSU5FID0gLyhcXHI/XFxuKS87XG5cbi8vIE5ld2xpbmUgY2hhcmFjdGVyIGNvZGUgZm9yIGNoYXJDb2RlQXQoKSBjb21wYXJpc29uc1xudmFyIE5FV0xJTkVfQ09ERSA9IDEwO1xuXG4vLyBQcml2YXRlIHN5bWJvbCBmb3IgaWRlbnRpZnlpbmcgYFNvdXJjZU5vZGVgcyB3aGVuIG11bHRpcGxlIHZlcnNpb25zIG9mXG4vLyB0aGUgc291cmNlLW1hcCBsaWJyYXJ5IGFyZSBsb2FkZWQuIFRoaXMgTVVTVCBOT1QgQ0hBTkdFIGFjcm9zc1xuLy8gdmVyc2lvbnMhXG52YXIgaXNTb3VyY2VOb2RlID0gXCIkJCRpc1NvdXJjZU5vZGUkJCRcIjtcblxuLyoqXG4gKiBTb3VyY2VOb2RlcyBwcm92aWRlIGEgd2F5IHRvIGFic3RyYWN0IG92ZXIgaW50ZXJwb2xhdGluZy9jb25jYXRlbmF0aW5nXG4gKiBzbmlwcGV0cyBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBzb3VyY2UgY29kZSB3aGlsZSBtYWludGFpbmluZyB0aGUgbGluZSBhbmRcbiAqIGNvbHVtbiBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwYXJhbSBhTGluZSBUaGUgb3JpZ2luYWwgbGluZSBudW1iZXIuXG4gKiBAcGFyYW0gYUNvbHVtbiBUaGUgb3JpZ2luYWwgY29sdW1uIG51bWJlci5cbiAqIEBwYXJhbSBhU291cmNlIFRoZSBvcmlnaW5hbCBzb3VyY2UncyBmaWxlbmFtZS5cbiAqIEBwYXJhbSBhQ2h1bmtzIE9wdGlvbmFsLiBBbiBhcnJheSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBzbmlwcGV0cyBvZlxuICogICAgICAgIGdlbmVyYXRlZCBKUywgb3Igb3RoZXIgU291cmNlTm9kZXMuXG4gKiBAcGFyYW0gYU5hbWUgVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIuXG4gKi9cbmZ1bmN0aW9uIFNvdXJjZU5vZGUoYUxpbmUsIGFDb2x1bW4sIGFTb3VyY2UsIGFDaHVua3MsIGFOYW1lKSB7XG4gIHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgdGhpcy5zb3VyY2VDb250ZW50cyA9IHt9O1xuICB0aGlzLmxpbmUgPSBhTGluZSA9PSBudWxsID8gbnVsbCA6IGFMaW5lO1xuICB0aGlzLmNvbHVtbiA9IGFDb2x1bW4gPT0gbnVsbCA/IG51bGwgOiBhQ29sdW1uO1xuICB0aGlzLnNvdXJjZSA9IGFTb3VyY2UgPT0gbnVsbCA/IG51bGwgOiBhU291cmNlO1xuICB0aGlzLm5hbWUgPSBhTmFtZSA9PSBudWxsID8gbnVsbCA6IGFOYW1lO1xuICB0aGlzW2lzU291cmNlTm9kZV0gPSB0cnVlO1xuICBpZiAoYUNodW5rcyAhPSBudWxsKSB0aGlzLmFkZChhQ2h1bmtzKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgU291cmNlTm9kZSBmcm9tIGdlbmVyYXRlZCBjb2RlIGFuZCBhIFNvdXJjZU1hcENvbnN1bWVyLlxuICpcbiAqIEBwYXJhbSBhR2VuZXJhdGVkQ29kZSBUaGUgZ2VuZXJhdGVkIGNvZGVcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXG4gKiBAcGFyYW0gYVJlbGF0aXZlUGF0aCBPcHRpb25hbC4gVGhlIHBhdGggdGhhdCByZWxhdGl2ZSBzb3VyY2VzIGluIHRoZVxuICogICAgICAgIFNvdXJjZU1hcENvbnN1bWVyIHNob3VsZCBiZSByZWxhdGl2ZSB0by5cbiAqL1xuU291cmNlTm9kZS5mcm9tU3RyaW5nV2l0aFNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAoYUdlbmVyYXRlZENvZGUsIGFTb3VyY2VNYXBDb25zdW1lciwgYVJlbGF0aXZlUGF0aCkge1xuICAgIC8vIFRoZSBTb3VyY2VOb2RlIHdlIHdhbnQgdG8gZmlsbCB3aXRoIHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgIC8vIGFuZCB0aGUgU291cmNlTWFwXG4gICAgdmFyIG5vZGUgPSBuZXcgU291cmNlTm9kZSgpO1xuXG4gICAgLy8gQWxsIGV2ZW4gaW5kaWNlcyBvZiB0aGlzIGFycmF5IGFyZSBvbmUgbGluZSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4gICAgLy8gd2hpbGUgYWxsIG9kZCBpbmRpY2VzIGFyZSB0aGUgbmV3bGluZXMgYmV0d2VlbiB0d28gYWRqYWNlbnQgbGluZXNcbiAgICAvLyAoc2luY2UgYFJFR0VYX05FV0xJTkVgIGNhcHR1cmVzIGl0cyBtYXRjaCkuXG4gICAgLy8gUHJvY2Vzc2VkIGZyYWdtZW50cyBhcmUgYWNjZXNzZWQgYnkgY2FsbGluZyBgc2hpZnROZXh0TGluZWAuXG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzID0gYUdlbmVyYXRlZENvZGUuc3BsaXQoUkVHRVhfTkVXTElORSk7XG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzSW5kZXggPSAwO1xuICAgIHZhciBzaGlmdE5leHRMaW5lID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbGluZUNvbnRlbnRzID0gZ2V0TmV4dExpbmUoKTtcbiAgICAgIC8vIFRoZSBsYXN0IGxpbmUgb2YgYSBmaWxlIG1pZ2h0IG5vdCBoYXZlIGEgbmV3bGluZS5cbiAgICAgIHZhciBuZXdMaW5lID0gZ2V0TmV4dExpbmUoKSB8fCBcIlwiO1xuICAgICAgcmV0dXJuIGxpbmVDb250ZW50cyArIG5ld0xpbmU7XG5cbiAgICAgIGZ1bmN0aW9uIGdldE5leHRMaW5lKCkge1xuICAgICAgICByZXR1cm4gcmVtYWluaW5nTGluZXNJbmRleCA8IHJlbWFpbmluZ0xpbmVzLmxlbmd0aCA/XG4gICAgICAgICAgICByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4KytdIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBXZSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBwb3NpdGlvbiBvZiBcInJlbWFpbmluZ0xpbmVzXCJcbiAgICB2YXIgbGFzdEdlbmVyYXRlZExpbmUgPSAxLCBsYXN0R2VuZXJhdGVkQ29sdW1uID0gMDtcblxuICAgIC8vIFRoZSBnZW5lcmF0ZSBTb3VyY2VOb2RlcyB3ZSBuZWVkIGEgY29kZSByYW5nZS5cbiAgICAvLyBUbyBleHRyYWN0IGl0IGN1cnJlbnQgYW5kIGxhc3QgbWFwcGluZyBpcyB1c2VkLlxuICAgIC8vIEhlcmUgd2Ugc3RvcmUgdGhlIGxhc3QgbWFwcGluZy5cbiAgICB2YXIgbGFzdE1hcHBpbmcgPSBudWxsO1xuXG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLmVhY2hNYXBwaW5nKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcgIT09IG51bGwpIHtcbiAgICAgICAgLy8gV2UgYWRkIHRoZSBjb2RlIGZyb20gXCJsYXN0TWFwcGluZ1wiIHRvIFwibWFwcGluZ1wiOlxuICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGVyZSBpcyBhIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgIGlmIChsYXN0R2VuZXJhdGVkTGluZSA8IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIC8vIEFzc29jaWF0ZSBmaXJzdCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgICAgLy8gVGhlIHJlbWFpbmluZyBjb2RlIGlzIGFkZGVkIHdpdGhvdXQgbWFwcGluZ1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBjb2RlIGJldHdlZW4gXCJsYXN0R2VuZXJhdGVkQ29sdW1uXCIgYW5kXG4gICAgICAgICAgLy8gXCJtYXBwaW5nLmdlbmVyYXRlZENvbHVtblwiIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgdmFyIG5leHRMaW5lID0gcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gfHwgJyc7XG4gICAgICAgICAgdmFyIGNvZGUgPSBuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICAgIHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdID0gbmV4dExpbmUuc3Vic3RyKG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBjb2RlKTtcbiAgICAgICAgICAvLyBObyBtb3JlIHJlbWFpbmluZyBjb2RlLCBjb250aW51ZVxuICAgICAgICAgIGxhc3RNYXBwaW5nID0gbWFwcGluZztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFdlIGFkZCB0aGUgZ2VuZXJhdGVkIGNvZGUgdW50aWwgdGhlIGZpcnN0IG1hcHBpbmdcbiAgICAgIC8vIHRvIHRoZSBTb3VyY2VOb2RlIHdpdGhvdXQgYW55IG1hcHBpbmcuXG4gICAgICAvLyBFYWNoIGxpbmUgaXMgYWRkZWQgYXMgc2VwYXJhdGUgc3RyaW5nLlxuICAgICAgd2hpbGUgKGxhc3RHZW5lcmF0ZWRMaW5lIDwgbWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIG5vZGUuYWRkKHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICB9XG4gICAgICBpZiAobGFzdEdlbmVyYXRlZENvbHVtbiA8IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKSB7XG4gICAgICAgIHZhciBuZXh0TGluZSA9IHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdIHx8ICcnO1xuICAgICAgICBub2RlLmFkZChuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pKTtcbiAgICAgICAgcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gPSBuZXh0TGluZS5zdWJzdHIobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICB9XG4gICAgICBsYXN0TWFwcGluZyA9IG1hcHBpbmc7XG4gICAgfSwgdGhpcyk7XG4gICAgLy8gV2UgaGF2ZSBwcm9jZXNzZWQgYWxsIG1hcHBpbmdzLlxuICAgIGlmIChyZW1haW5pbmdMaW5lc0luZGV4IDwgcmVtYWluaW5nTGluZXMubGVuZ3RoKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcpIHtcbiAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSByZW1haW5pbmcgY29kZSBpbiB0aGUgY3VycmVudCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgc2hpZnROZXh0TGluZSgpKTtcbiAgICAgIH1cbiAgICAgIC8vIGFuZCBhZGQgdGhlIHJlbWFpbmluZyBsaW5lcyB3aXRob3V0IGFueSBtYXBwaW5nXG4gICAgICBub2RlLmFkZChyZW1haW5pbmdMaW5lcy5zcGxpY2UocmVtYWluaW5nTGluZXNJbmRleCkuam9pbihcIlwiKSk7XG4gICAgfVxuXG4gICAgLy8gQ29weSBzb3VyY2VzQ29udGVudCBpbnRvIFNvdXJjZU5vZGVcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoYVJlbGF0aXZlUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbm9kZTtcblxuICAgIGZ1bmN0aW9uIGFkZE1hcHBpbmdXaXRoQ29kZShtYXBwaW5nLCBjb2RlKSB7XG4gICAgICBpZiAobWFwcGluZyA9PT0gbnVsbCB8fCBtYXBwaW5nLnNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5vZGUuYWRkKGNvZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFSZWxhdGl2ZVBhdGhcbiAgICAgICAgICA/IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBtYXBwaW5nLnNvdXJjZSlcbiAgICAgICAgICA6IG1hcHBpbmcuc291cmNlO1xuICAgICAgICBub2RlLmFkZChuZXcgU291cmNlTm9kZShtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm5hbWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoaXMgc291cmNlIG5vZGUuXG4gKlxuICogQHBhcmFtIGFDaHVuayBBIHN0cmluZyBzbmlwcGV0IG9mIGdlbmVyYXRlZCBKUyBjb2RlLCBhbm90aGVyIGluc3RhbmNlIG9mXG4gKiAgICAgICAgU291cmNlTm9kZSwgb3IgYW4gYXJyYXkgd2hlcmUgZWFjaCBtZW1iZXIgaXMgb25lIG9mIHRob3NlIHRoaW5ncy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gU291cmNlTm9kZV9hZGQoYUNodW5rKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFDaHVuaykpIHtcbiAgICBhQ2h1bmsuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgIHRoaXMuYWRkKGNodW5rKTtcbiAgICB9LCB0aGlzKTtcbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgaWYgKGFDaHVuaykge1xuICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGFDaHVuayk7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBcIkV4cGVjdGVkIGEgU291cmNlTm9kZSwgc3RyaW5nLCBvciBhbiBhcnJheSBvZiBTb3VyY2VOb2RlcyBhbmQgc3RyaW5ncy4gR290IFwiICsgYUNodW5rXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBzb3VyY2Ugbm9kZS5cbiAqXG4gKiBAcGFyYW0gYUNodW5rIEEgc3RyaW5nIHNuaXBwZXQgb2YgZ2VuZXJhdGVkIEpTIGNvZGUsIGFub3RoZXIgaW5zdGFuY2Ugb2ZcbiAqICAgICAgICBTb3VyY2VOb2RlLCBvciBhbiBhcnJheSB3aGVyZSBlYWNoIG1lbWJlciBpcyBvbmUgb2YgdGhvc2UgdGhpbmdzLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5wcmVwZW5kID0gZnVuY3Rpb24gU291cmNlTm9kZV9wcmVwZW5kKGFDaHVuaykge1xuICBpZiAoQXJyYXkuaXNBcnJheShhQ2h1bmspKSB7XG4gICAgZm9yICh2YXIgaSA9IGFDaHVuay5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHRoaXMucHJlcGVuZChhQ2h1bmtbaV0pO1xuICAgIH1cbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgdGhpcy5jaGlsZHJlbi51bnNoaWZ0KGFDaHVuayk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIFwiRXhwZWN0ZWQgYSBTb3VyY2VOb2RlLCBzdHJpbmcsIG9yIGFuIGFycmF5IG9mIFNvdXJjZU5vZGVzIGFuZCBzdHJpbmdzLiBHb3QgXCIgKyBhQ2h1bmtcbiAgICApO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXYWxrIG92ZXIgdGhlIHRyZWUgb2YgSlMgc25pcHBldHMgaW4gdGhpcyBub2RlIGFuZCBpdHMgY2hpbGRyZW4uIFRoZVxuICogd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBmb3IgZWFjaCBzbmlwcGV0IG9mIEpTIGFuZCBpcyBwYXNzZWQgdGhhdFxuICogc25pcHBldCBhbmQgdGhlIGl0cyBvcmlnaW5hbCBhc3NvY2lhdGVkIHNvdXJjZSdzIGxpbmUvY29sdW1uIGxvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2FsayA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfd2FsayhhRm4pIHtcbiAgdmFyIGNodW5rO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNodW5rID0gdGhpcy5jaGlsZHJlbltpXTtcbiAgICBpZiAoY2h1bmtbaXNTb3VyY2VOb2RlXSkge1xuICAgICAgY2h1bmsud2FsayhhRm4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmIChjaHVuayAhPT0gJycpIHtcbiAgICAgICAgYUZuKGNodW5rLCB7IHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxpbmUsXG4gICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBMaWtlIGBTdHJpbmcucHJvdG90eXBlLmpvaW5gIGV4Y2VwdCBmb3IgU291cmNlTm9kZXMuIEluc2VydHMgYGFTdHJgIGJldHdlZW5cbiAqIGVhY2ggb2YgYHRoaXMuY2hpbGRyZW5gLlxuICpcbiAqIEBwYXJhbSBhU2VwIFRoZSBzZXBhcmF0b3IuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBTb3VyY2VOb2RlX2pvaW4oYVNlcCkge1xuICB2YXIgbmV3Q2hpbGRyZW47XG4gIHZhciBpO1xuICB2YXIgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgbmV3Q2hpbGRyZW4gPSBbXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuLTE7IGkrKykge1xuICAgICAgbmV3Q2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2ldKTtcbiAgICAgIG5ld0NoaWxkcmVuLnB1c2goYVNlcCk7XG4gICAgfVxuICAgIG5ld0NoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltpXSk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IG5ld0NoaWxkcmVuO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBDYWxsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSBvbiB0aGUgdmVyeSByaWdodC1tb3N0IHNvdXJjZSBzbmlwcGV0LiBVc2VmdWxcbiAqIGZvciB0cmltbWluZyB3aGl0ZXNwYWNlIGZyb20gdGhlIGVuZCBvZiBhIHNvdXJjZSBub2RlLCBldGMuXG4gKlxuICogQHBhcmFtIGFQYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlcGxhY2UuXG4gKiBAcGFyYW0gYVJlcGxhY2VtZW50IFRoZSB0aGluZyB0byByZXBsYWNlIHRoZSBwYXR0ZXJuIHdpdGguXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnJlcGxhY2VSaWdodCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfcmVwbGFjZVJpZ2h0KGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpIHtcbiAgdmFyIGxhc3RDaGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgaWYgKGxhc3RDaGlsZFtpc1NvdXJjZU5vZGVdKSB7XG4gICAgbGFzdENoaWxkLnJlcGxhY2VSaWdodChhUGF0dGVybiwgYVJlcGxhY2VtZW50KTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgbGFzdENoaWxkID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXSA9IGxhc3RDaGlsZC5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpO1xuICB9XG4gIGVsc2Uge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaCgnJy5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS4gVGhpcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3JcbiAqIGluIHRoZSBzb3VyY2VzQ29udGVudCBmaWVsZC5cbiAqXG4gKiBAcGFyYW0gYVNvdXJjZUZpbGUgVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZVxuICogQHBhcmFtIGFTb3VyY2VDb250ZW50IFRoZSBjb250ZW50IG9mIHRoZSBzb3VyY2UgZmlsZVxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgIHRoaXMuc291cmNlQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhhU291cmNlRmlsZSldID0gYVNvdXJjZUNvbnRlbnQ7XG4gIH07XG5cbi8qKlxuICogV2FsayBvdmVyIHRoZSB0cmVlIG9mIFNvdXJjZU5vZGVzLiBUaGUgd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2hcbiAqIHNvdXJjZSBmaWxlIGNvbnRlbnQgYW5kIGlzIHBhc3NlZCB0aGUgZmlsZW5hbWUgYW5kIHNvdXJjZSBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2Fsa1NvdXJjZUNvbnRlbnRzID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV93YWxrU291cmNlQ29udGVudHMoYUZuKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ldW2lzU291cmNlTm9kZV0pIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbltpXS53YWxrU291cmNlQ29udGVudHMoYUZuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc291cmNlcyA9IE9iamVjdC5rZXlzKHRoaXMuc291cmNlQ29udGVudHMpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzb3VyY2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBhRm4odXRpbC5mcm9tU2V0U3RyaW5nKHNvdXJjZXNbaV0pLCB0aGlzLnNvdXJjZUNvbnRlbnRzW3NvdXJjZXNbaV1dKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzb3VyY2Ugbm9kZS4gV2Fsa3Mgb3ZlciB0aGUgdHJlZVxuICogYW5kIGNvbmNhdGVuYXRlcyBhbGwgdGhlIHZhcmlvdXMgc25pcHBldHMgdG9nZXRoZXIgdG8gb25lIHN0cmluZy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3RvU3RyaW5nKCkge1xuICB2YXIgc3RyID0gXCJcIjtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaykge1xuICAgIHN0ciArPSBjaHVuaztcbiAgfSk7XG4gIHJldHVybiBzdHI7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNvdXJjZSBub2RlIGFsb25nIHdpdGggYSBzb3VyY2VcbiAqIG1hcC5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmdXaXRoU291cmNlTWFwID0gZnVuY3Rpb24gU291cmNlTm9kZV90b1N0cmluZ1dpdGhTb3VyY2VNYXAoYUFyZ3MpIHtcbiAgdmFyIGdlbmVyYXRlZCA9IHtcbiAgICBjb2RlOiBcIlwiLFxuICAgIGxpbmU6IDEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHZhciBtYXAgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKTtcbiAgdmFyIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgdmFyIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxMaW5lID0gbnVsbDtcbiAgdmFyIGxhc3RPcmlnaW5hbENvbHVtbiA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxOYW1lID0gbnVsbDtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaywgb3JpZ2luYWwpIHtcbiAgICBnZW5lcmF0ZWQuY29kZSArPSBjaHVuaztcbiAgICBpZiAob3JpZ2luYWwuc291cmNlICE9PSBudWxsXG4gICAgICAgICYmIG9yaWdpbmFsLmxpbmUgIT09IG51bGxcbiAgICAgICAgJiYgb3JpZ2luYWwuY29sdW1uICE9PSBudWxsKSB7XG4gICAgICBpZihsYXN0T3JpZ2luYWxTb3VyY2UgIT09IG9yaWdpbmFsLnNvdXJjZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsTGluZSAhPT0gb3JpZ2luYWwubGluZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsQ29sdW1uICE9PSBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbE5hbWUgIT09IG9yaWdpbmFsLm5hbWUpIHtcbiAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgIHNvdXJjZTogb3JpZ2luYWwuc291cmNlLFxuICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgY29sdW1uOiBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hbWU6IG9yaWdpbmFsLm5hbWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICBsYXN0T3JpZ2luYWxMaW5lID0gb3JpZ2luYWwubGluZTtcbiAgICAgIGxhc3RPcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgIGxhc3RPcmlnaW5hbE5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICBtYXAuYWRkTWFwcGluZyh7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkLmNvbHVtblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGlkeCA9IDAsIGxlbmd0aCA9IGNodW5rLmxlbmd0aDsgaWR4IDwgbGVuZ3RoOyBpZHgrKykge1xuICAgICAgaWYgKGNodW5rLmNoYXJDb2RlQXQoaWR4KSA9PT0gTkVXTElORV9DT0RFKSB7XG4gICAgICAgIGdlbmVyYXRlZC5saW5lKys7XG4gICAgICAgIGdlbmVyYXRlZC5jb2x1bW4gPSAwO1xuICAgICAgICAvLyBNYXBwaW5ncyBlbmQgYXQgZW9sXG4gICAgICAgIGlmIChpZHggKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICAgICAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiBvcmlnaW5hbC5zb3VyY2UsXG4gICAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IG9yaWdpbmFsLmNvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZTogb3JpZ2luYWwubmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZW5lcmF0ZWQuY29sdW1uKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgdGhpcy53YWxrU291cmNlQ29udGVudHMoZnVuY3Rpb24gKHNvdXJjZUZpbGUsIHNvdXJjZUNvbnRlbnQpIHtcbiAgICBtYXAuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBzb3VyY2VDb250ZW50KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgY29kZTogZ2VuZXJhdGVkLmNvZGUsIG1hcDogbWFwIH07XG59O1xuXG5leHBvcnRzLlNvdXJjZU5vZGUgPSBTb3VyY2VOb2RlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW5vZGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file
diff --git a/assets/node_modules/postcss/node_modules/source-map/dist/source-map.js b/assets/node_modules/postcss/node_modules/source-map/dist/source-map.js
deleted file mode 100644
index b4eb087..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/dist/source-map.js
+++ /dev/null
@@ -1,3233 +0,0 @@
-(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 sourceRelative = sourceFile;
- if (sourceRoot !== null) {
- sourceRelative = util.relative(sourceRoot, sourceFile);
- }
-
- if (!generator._sources.has(sourceRelative)) {
- generator._sources.add(sourceRelative);
- }
-
- 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+))?(.*)$/;
- 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) === '/' || urlRegexp.test(aPath);
- };
-
- /**
- * 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 = 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 || onlyCompareOriginal) {
- return cmp;
- }
-
- cmp = mappingA.generatedColumn - mappingB.generatedColumn;
- if (cmp !== 0) {
- return cmp;
- }
-
- cmp = mappingA.generatedLine - mappingB.generatedLine;
- if (cmp !== 0) {
- return cmp;
- }
-
- return strcmp(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 = 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.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
-
- function strcmp(aStr1, aStr2) {
- if (aStr1 === aStr2) {
- return 0;
- }
-
- if (aStr1 === null) {
- return 1; // aStr2 !== null
- }
-
- if (aStr2 === null) {
- return -1; // aStr1 !== null
- }
-
- 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;
-
- /**
- * Strip any JSON XSSI avoidance prefix from the string (as documented
- * in the source maps specification), and then parse the string as
- * JSON.
- */
- function parseSourceMapInput(str) {
- return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ''));
- }
- exports.parseSourceMapInput = parseSourceMapInput;
-
- /**
- * Compute the URL of a source given the the source root, the source's
- * URL, and the source map's URL.
- */
- function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {
- sourceURL = sourceURL || '';
-
- if (sourceRoot) {
- // This follows what Chrome does.
- if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {
- sourceRoot += '/';
- }
- // The spec says:
- // Line 4: An optional source root, useful for relocating source
- // files on a server or removing repeated values in the
- // “sources” entry. This value is prepended to the individual
- // entries in the “source” field.
- sourceURL = sourceRoot + sourceURL;
- }
-
- // Historically, SourceMapConsumer did not take the sourceMapURL as
- // a parameter. This mode is still somewhat supported, which is why
- // this code block is conditional. However, it's preferable to pass
- // the source map URL to SourceMapConsumer, so that this function
- // can implement the source URL resolution algorithm as outlined in
- // the spec. This block is basically the equivalent of:
- // new URL(sourceURL, sourceMapURL).toString()
- // ... except it avoids using URL, which wasn't available in the
- // older releases of node still supported by this library.
- //
- // The spec says:
- // If the sources are not absolute URLs after prepending of the
- // “sourceRoot”, the sources are resolved relative to the
- // SourceMap (like resolving script src in a html document).
- if (sourceMapURL) {
- var parsed = urlParse(sourceMapURL);
- if (!parsed) {
- throw new Error("sourceMapURL could not be parsed");
- }
- if (parsed.path) {
- // Strip the last path component, but keep the "/".
- var index = parsed.path.lastIndexOf('/');
- if (index >= 0) {
- parsed.path = parsed.path.substring(0, index + 1);
- }
- }
- sourceURL = join(urlGenerate(parsed), sourceURL);
- }
-
- return normalize(sourceURL);
- }
- exports.computeSourceURL = computeSourceURL;
-
-
-/***/ }),
-/* 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, aSourceMapURL) {
- var sourceMap = aSourceMap;
- if (typeof aSourceMap === 'string') {
- sourceMap = util.parseSourceMapInput(aSourceMap);
- }
-
- return sourceMap.sections != null
- ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)
- : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);
- }
-
- SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {
- return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);
- }
-
- /**
- * 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', {
- configurable: true,
- enumerable: true,
- get: function () {
- if (!this.__generatedMappings) {
- this._parseMappings(this._mappings, this.sourceRoot);
- }
-
- return this.__generatedMappings;
- }
- });
-
- SourceMapConsumer.prototype.__originalMappings = null;
- Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
- configurable: true,
- enumerable: true,
- 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);
- source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);
- 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. The line number is 1-based.
- * - column: Optional. the column number in the original source.
- * The column number is 0-based.
- *
- * and an array of objects is returned, each with the following properties:
- *
- * - line: The line number in the generated source, or null. The
- * line number is 1-based.
- * - column: The column number in the generated source, or null.
- * The column number is 0-based.
- */
- 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)
- };
-
- needle.source = this._findSourceIndex(needle.source);
- if (needle.source < 0) {
- return [];
- }
-
- 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 first 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;"
- * }
- *
- * The second parameter, if given, is a string whose value is the URL
- * at which the source map was found. This URL is used to compute the
- * sources array.
- *
- * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
- */
- function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {
- var sourceMap = aSourceMap;
- if (typeof aSourceMap === 'string') {
- sourceMap = util.parseSourceMapInput(aSourceMap);
- }
-
- 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);
- }
-
- if (sourceRoot) {
- sourceRoot = util.normalize(sourceRoot);
- }
-
- 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._absoluteSources = this._sources.toArray().map(function (s) {
- return util.computeSourceURL(sourceRoot, s, aSourceMapURL);
- });
-
- this.sourceRoot = sourceRoot;
- this.sourcesContent = sourcesContent;
- this._mappings = mappings;
- this._sourceMapURL = aSourceMapURL;
- this.file = file;
- }
-
- BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
- BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
-
- /**
- * Utility function to find the index of a source. Returns -1 if not
- * found.
- */
- BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {
- var relativeSource = aSource;
- if (this.sourceRoot != null) {
- relativeSource = util.relative(this.sourceRoot, relativeSource);
- }
-
- if (this._sources.has(relativeSource)) {
- return this._sources.indexOf(relativeSource);
- }
-
- // Maybe aSource is an absolute URL as returned by |sources|. In
- // this case we can't simply undo the transform.
- var i;
- for (i = 0; i < this._absoluteSources.length; ++i) {
- if (this._absoluteSources[i] == aSource) {
- return i;
- }
- }
-
- return -1;
- };
-
- /**
- * Create a BasicSourceMapConsumer from a SourceMapGenerator.
- *
- * @param SourceMapGenerator aSourceMap
- * The source map that will be consumed.
- * @param String aSourceMapURL
- * The URL at which the source map can be found (optional)
- * @returns BasicSourceMapConsumer
- */
- BasicSourceMapConsumer.fromSourceMap =
- function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {
- 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;
- smc._sourceMapURL = aSourceMapURL;
- smc._absoluteSources = smc._sources.toArray().map(function (s) {
- return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);
- });
-
- // 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._absoluteSources.slice();
- }
- });
-
- /**
- * 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. The line number
- * is 1-based.
- * - column: The column number in the generated source. The column
- * number is 0-based.
- * - 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. The
- * line number is 1-based.
- * - column: The column number in the original source, or null. The
- * column number is 0-based.
- * - 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);
- source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);
- }
- 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;
- }
-
- var index = this._findSourceIndex(aSource);
- if (index >= 0) {
- return this.sourcesContent[index];
- }
-
- var relativeSource = aSource;
- if (this.sourceRoot != null) {
- relativeSource = util.relative(this.sourceRoot, relativeSource);
- }
-
- 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 = relativeSource.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("/" + relativeSource)) {
- return this.sourcesContent[this._sources.indexOf("/" + relativeSource)];
- }
- }
-
- // 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('"' + relativeSource + '" 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. The line number
- * is 1-based.
- * - column: The column number in the original source. The column
- * number is 0-based.
- * - 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. The
- * line number is 1-based.
- * - column: The column number in the generated source, or null.
- * The column number is 0-based.
- */
- BasicSourceMapConsumer.prototype.generatedPositionFor =
- function SourceMapConsumer_generatedPositionFor(aArgs) {
- var source = util.getArg(aArgs, 'source');
- source = this._findSourceIndex(source);
- if (source < 0) {
- return {
- line: null,
- column: null,
- lastColumn: null
- };
- }
-
- 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 first 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;"
- * }
- * }],
- * }
- *
- * The second parameter, if given, is a string whose value is the URL
- * at which the source map was found. This URL is used to compute the
- * sources array.
- *
- * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
- */
- function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {
- var sourceMap = aSourceMap;
- if (typeof aSourceMap === 'string') {
- sourceMap = util.parseSourceMapInput(aSourceMap);
- }
-
- 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'), aSourceMapURL)
- }
- });
- }
-
- 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. The line number
- * is 1-based.
- * - column: The column number in the generated source. The column
- * number is 0-based.
- *
- * 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. The
- * line number is 1-based.
- * - column: The column number in the original source, or null. The
- * column number is 0-based.
- * - 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. The line number
- * is 1-based.
- * - column: The column number in the original source. The column
- * number is 0-based.
- *
- * and an object is returned with the following properties:
- *
- * - line: The line number in the generated source, or null. The
- * line number is 1-based.
- * - column: The column number in the generated source, or null.
- * The column number is 0-based.
- */
- 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._findSourceIndex(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);
- source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);
- this._sources.add(source);
- source = this._sources.indexOf(source);
-
- var name = null;
- if (mapping.name) {
- 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/assets/node_modules/postcss/node_modules/source-map/dist/source-map.min.js b/assets/node_modules/postcss/node_modules/source-map/dist/source-map.min.js
deleted file mode 100644
index c7c72da..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/dist/source-map.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-!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(t){var o=t;null!==n&&(o=i.relative(n,t)),r._sources.has(o)||r._sources.add(o);var s=e.sourceContentFor(t);null!=s&&r.setSourceContent(t,s)}),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(v);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(y))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=f(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:f(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=f(e.source,n.source),0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t?t:f(e.name,n.name)))))}function f(e,n){return e===n?0:null===e?1:null===n?-1: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)))))}function m(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))}function _(e,n,r){if(n=n||"",e&&("/"!==e[e.length-1]&&"/"!==n[0]&&(e+="/"),n=e+n),r){var a=t(r);if(!a)throw new Error("sourceMapURL could not be parsed");if(a.path){var u=a.path.lastIndexOf("/");u>=0&&(a.path=a.path.substring(0,u+1))}n=s(o(a),n)}return i(n)}n.getArg=r;var v=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,y=/^data:.+\,.+$/;n.urlParse=t,n.urlGenerate=o,n.normalize=i,n.join=s,n.isAbsolute=function(e){return"/"===e.charAt(0)||v.test(e)},n.relative=a;var C=function(){var e=Object.create(null);return!("__proto__"in e)}();n.toSetString=C?u:l,n.fromSetString=C?u:c,n.compareByOriginalPositions=p,n.compareByGeneratedPositionsDeflated=h,n.compareByGeneratedPositionsInflated=d,n.parseSourceMapInput=m,n.computeSourceURL=_},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,n){var r=e;return"string"==typeof e&&(r=a.parseSourceMapInput(e)),null!=r.sections?new s(r,n):new o(r,n)}function o(e,n){var r=e;"string"==typeof e&&(r=a.parseSourceMapInput(e));var t=a.getArg(r,"version"),o=a.getArg(r,"sources"),i=a.getArg(r,"names",[]),s=a.getArg(r,"sourceRoot",null),u=a.getArg(r,"sourcesContent",null),c=a.getArg(r,"mappings"),g=a.getArg(r,"file",null);if(t!=this._version)throw new Error("Unsupported version: "+t);s&&(s=a.normalize(s)),o=o.map(String).map(a.normalize).map(function(e){return s&&a.isAbsolute(s)&&a.isAbsolute(e)?a.relative(s,e):e}),this._names=l.fromArray(i.map(String),!0),this._sources=l.fromArray(o,!0),this._absoluteSources=this._sources.toArray().map(function(e){return a.computeSourceURL(s,e,n)}),this.sourceRoot=s,this.sourcesContent=u,this._mappings=c,this._sourceMapURL=n,this.file=g}function i(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function s(e,n){var r=e;"string"==typeof e&&(r=a.parseSourceMapInput(e));var o=a.getArg(r,"version"),i=a.getArg(r,"sections");if(o!=this._version)throw new Error("Unsupported version: "+o);this._sources=new l,this._names=new l;var s={line:-1,column:0};this._sections=i.map(function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var r=a.getArg(e,"offset"),o=a.getArg(r,"line"),i=a.getArg(r,"column");if(o<s.line||o===s.line&&i<s.column)throw new Error("Section offsets must be ordered and non-overlapping.");return s=r,{generatedOffset:{generatedLine:o+1,generatedColumn:i+1},consumer:new t(a.getArg(e,"map"),n)}})}var a=r(4),u=r(8),l=r(5).ArraySet,c=r(2),g=r(9).quickSort;t.fromSourceMap=function(e,n){return o.fromSourceMap(e,n)},t.prototype._version=3,t.prototype.__generatedMappings=null,Object.defineProperty(t.prototype,"_generatedMappings",{configurable:!0,enumerable:!0,get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),t.prototype.__originalMappings=null,Object.defineProperty(t.prototype,"_originalMappings",{configurable:!0,enumerable:!0,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 n=a.computeSourceURL(u,n,this._sourceMapURL),{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(r.source=this._findSourceIndex(r.source),r.source<0)return[];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.prototype._findSourceIndex=function(e){var n=e;if(null!=this.sourceRoot&&(n=a.relative(this.sourceRoot,n)),this._sources.has(n))return this._sources.indexOf(n);var r;for(r=0;r<this._absoluteSources.length;++r)if(this._absoluteSources[r]==e)return r;return-1},o.fromSourceMap=function(e,n){var r=Object.create(o.prototype),t=r._names=l.fromArray(e._names.toArray(),!0),s=r._sources=l.fromArray(e._sources.toArray(),!0);r.sourceRoot=e._sourceRoot,r.sourcesContent=e._generateSourcesContent(r._sources.toArray(),r.sourceRoot),r.file=e._file,r._sourceMapURL=n,r._absoluteSources=r._sources.toArray().map(function(e){return a.computeSourceURL(r.sourceRoot,e,n)});for(var u=e._mappings.toArray().slice(),c=r.__generatedMappings=[],p=r.__originalMappings=[],h=0,f=u.length;h<f;h++){var d=u[h],m=new i;m.generatedLine=d.generatedLine,m.generatedColumn=d.generatedColumn,d.source&&(m.source=s.indexOf(d.source),m.originalLine=d.originalLine,m.originalColumn=d.originalColumn,d.name&&(m.name=t.indexOf(d.name)),p.push(m)),c.push(m)}return g(r.__originalMappings,a.compareByOriginalPositions),r},o.prototype._version=3,Object.defineProperty(o.prototype,"sources",{get:function(){return this._absoluteSources.slice()}}),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={},S=[],A=[];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])),A.push(r),"number"==typeof r.originalLine&&S.push(r)}g(A,a.compareByGeneratedPositionsDeflated),this.__generatedMappings=A,g(S,a.compareByOriginalPositions),this.__originalMappings=S},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),i=a.computeSourceURL(this.sourceRoot,i,this._sourceMapURL));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;var r=this._findSourceIndex(e);if(r>=0)return this.sourcesContent[r];var t=e;null!=this.sourceRoot&&(t=a.relative(this.sourceRoot,t));var o;if(null!=this.sourceRoot&&(o=a.urlParse(this.sourceRoot))){var i=t.replace(/^file:\/\//,"");if("file"==o.scheme&&this._sources.has(i))return this.sourcesContent[this._sources.indexOf(i)];if((!o.path||"/"==o.path)&&this._sources.has("/"+t))return this.sourcesContent[this._sources.indexOf("/"+t)]}if(n)return null;throw new Error('"'+t+'" is not in the SourceMap.')},o.prototype.generatedPositionFor=function(e){var n=a.getArg(e,"source");if(n=this._findSourceIndex(n),n<0)return{line:null,column:null,lastColumn:null};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._findSourceIndex(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);u=a.computeSourceURL(t.consumer.sourceRoot,u,this._sourceMapURL),this._sources.add(u),u=this._sources.indexOf(u);var l=null;s.name&&(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/assets/node_modules/postcss/node_modules/source-map/dist/source-map.min.js.map b/assets/node_modules/postcss/node_modules/source-map/dist/source-map.min.js.map
deleted file mode 100644
index d2cc86e..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/dist/source-map.min.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///source-map.min.js","webpack:///webpack/bootstrap 0fd5815da764db5fb9fe","webpack:///./source-map.js","webpack:///./lib/source-map-generator.js","webpack:///./lib/base64-vlq.js","webpack:///./lib/base64.js","webpack:///./lib/util.js","webpack:///./lib/array-set.js","webpack:///./lib/mapping-list.js","webpack:///./lib/source-map-consumer.js","webpack:///./lib/binary-search.js","webpack:///./lib/quick-sort.js","webpack:///./lib/source-node.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","SourceMapGenerator","SourceMapConsumer","SourceNode","aArgs","_file","util","getArg","_sourceRoot","_skipValidation","_sources","ArraySet","_names","_mappings","MappingList","_sourcesContents","base64VLQ","prototype","_version","fromSourceMap","aSourceMapConsumer","sourceRoot","generator","file","eachMapping","mapping","newMapping","generated","line","generatedLine","column","generatedColumn","source","relative","original","originalLine","originalColumn","name","addMapping","sources","forEach","sourceFile","sourceRelative","has","add","content","sourceContentFor","setSourceContent","_validateMapping","String","aSourceFile","aSourceContent","Object","create","toSetString","keys","length","applySourceMap","aSourceMapPath","Error","newSources","newNames","unsortedForEach","originalPositionFor","join","aGenerated","aOriginal","aSource","aName","JSON","stringify","_serializeMappings","next","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","result","mappings","toArray","i","len","compareByGeneratedPositionsInflated","encode","indexOf","_generateSourcesContent","aSources","aSourceRoot","map","key","hasOwnProperty","toJSON","version","names","sourcesContent","toString","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","base64","VLQ_BASE_SHIFT","VLQ_BASE","VLQ_BASE_MASK","VLQ_CONTINUATION_BIT","digit","encoded","vlq","decode","aStr","aIndex","aOutParam","continuation","strLen","shift","charCodeAt","charAt","value","rest","intToCharMap","split","number","TypeError","charCode","bigA","bigZ","littleA","littleZ","zero","nine","plus","slash","littleOffset","numberOffset","aDefaultValue","arguments","urlParse","aUrl","match","urlRegexp","scheme","auth","host","port","path","urlGenerate","aParsedUrl","url","normalize","aPath","part","isAbsolute","parts","up","splice","aRoot","aPathUrl","aRootUrl","dataUrlRegexp","joined","replace","level","index","lastIndexOf","slice","Array","substr","identity","s","isProtoString","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","strcmp","compareByGeneratedPositionsDeflated","onlyCompareGenerated","aStr1","aStr2","parseSourceMapInput","str","parse","computeSourceURL","sourceURL","sourceMapURL","parsed","substring","test","supportsNullProto","obj","_array","_set","hasNativeMap","Map","fromArray","aArray","aAllowDuplicates","set","size","getOwnPropertyNames","sStr","isDuplicate","idx","push","get","at","aIdx","generatedPositionAfter","lineA","lineB","columnA","columnB","_sorted","_last","aCallback","aThisArg","aMapping","sort","aSourceMap","aSourceMapURL","sourceMap","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","_absoluteSources","_sourceMapURL","Mapping","lastOffset","_sections","offset","offsetLine","offsetColumn","generatedOffset","consumer","binarySearch","quickSort","__generatedMappings","defineProperty","configurable","enumerable","_parseMappings","__originalMappings","_charIsMappingSeparator","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","context","order","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findSourceIndex","_findMapping","undefined","lastColumn","relativeSource","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","segment","end","cachedSegments","temp","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","search","computeColumnSpans","nextMapping","lastGeneratedColumn","Infinity","hasContentsOfAllSources","some","sc","nullOnMissing","fileUriAbsPath","generatedPositionFor","constructor","j","sectionIndex","section","bias","every","generatedPosition","ret","sectionMappings","adjustedMapping","recursiveSearch","aLow","aHigh","aHaystack","aCompare","mid","Math","floor","swap","ary","x","y","randomIntInRange","low","high","round","random","doQuickSort","comparator","r","pivotIndex","pivot","q","aLine","aColumn","aChunks","children","sourceContents","isSourceNode","REGEX_NEWLINE","NEWLINE_CODE","fromStringWithSourceMap","aGeneratedCode","aRelativePath","addMappingWithCode","code","node","remainingLines","remainingLinesIndex","shiftNextLine","getNextLine","lineContents","newLine","lastGeneratedLine","lastMapping","nextLine","aChunk","isArray","chunk","prepend","unshift","walk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","walkSourceContents","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent"],"mappings":"CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,IACA,kBAAAG,gBAAAC,IACAD,UAAAH,GACA,gBAAAC,SACAA,QAAA,UAAAD,IAEAD,EAAA,UAAAC,KACCK,KAAA,WACD,MCAgB,UAAUC,GCN1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAP,OAGA,IAAAC,GAAAO,EAAAD,IACAP,WACAS,GAAAF,EACAG,QAAA,EAUA,OANAL,GAAAE,GAAAI,KAAAV,EAAAD,QAAAC,IAAAD,QAAAM,GAGAL,EAAAS,QAAA,EAGAT,EAAAD,QAvBA,GAAAQ,KAqCA,OATAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAQ,EAAA,GAGAR,EAAA,KDgBM,SAAUL,EAAQD,EAASM,GEjDjCN,EAAAe,mBAAAT,EAAA,GAAAS,mBACAf,EAAAgB,kBAAAV,EAAA,GAAAU,kBACAhB,EAAAiB,WAAAX,EAAA,IAAAW,YF6DM,SAAUhB,EAAQD,EAASM,GGhDjC,QAAAS,GAAAG,GACAA,IACAA,MAEAd,KAAAe,MAAAC,EAAAC,OAAAH,EAAA,aACAd,KAAAkB,YAAAF,EAAAC,OAAAH,EAAA,mBACAd,KAAAmB,gBAAAH,EAAAC,OAAAH,EAAA,qBACAd,KAAAoB,SAAA,GAAAC,GACArB,KAAAsB,OAAA,GAAAD,GACArB,KAAAuB,UAAA,GAAAC,GACAxB,KAAAyB,iBAAA,KAvBA,GAAAC,GAAAxB,EAAA,GACAc,EAAAd,EAAA,GACAmB,EAAAnB,EAAA,GAAAmB,SACAG,EAAAtB,EAAA,GAAAsB,WAuBAb,GAAAgB,UAAAC,SAAA,EAOAjB,EAAAkB,cACA,SAAAC,GACA,GAAAC,GAAAD,EAAAC,WACAC,EAAA,GAAArB,IACAsB,KAAAH,EAAAG,KACAF,cA2CA,OAzCAD,GAAAI,YAAA,SAAAC,GACA,GAAAC,IACAC,WACAC,KAAAH,EAAAI,cACAC,OAAAL,EAAAM,iBAIA,OAAAN,EAAAO,SACAN,EAAAM,OAAAP,EAAAO,OACA,MAAAX,IACAK,EAAAM,OAAA1B,EAAA2B,SAAAZ,EAAAK,EAAAM,SAGAN,EAAAQ,UACAN,KAAAH,EAAAU,aACAL,OAAAL,EAAAW,gBAGA,MAAAX,EAAAY,OACAX,EAAAW,KAAAZ,EAAAY,OAIAf,EAAAgB,WAAAZ,KAEAN,EAAAmB,QAAAC,QAAA,SAAAC,GACA,GAAAC,GAAAD,CACA,QAAApB,IACAqB,EAAApC,EAAA2B,SAAAZ,EAAAoB,IAGAnB,EAAAZ,SAAAiC,IAAAD,IACApB,EAAAZ,SAAAkC,IAAAF,EAGA,IAAAG,GAAAzB,EAAA0B,iBAAAL,EACA,OAAAI,GACAvB,EAAAyB,iBAAAN,EAAAI,KAGAvB,GAaArB,EAAAgB,UAAAqB,WACA,SAAAlC,GACA,GAAAuB,GAAArB,EAAAC,OAAAH,EAAA,aACA8B,EAAA5B,EAAAC,OAAAH,EAAA,iBACA4B,EAAA1B,EAAAC,OAAAH,EAAA,eACAiC,EAAA/B,EAAAC,OAAAH,EAAA,YAEAd,MAAAmB,iBACAnB,KAAA0D,iBAAArB,EAAAO,EAAAF,EAAAK,GAGA,MAAAL,IACAA,EAAAiB,OAAAjB,GACA1C,KAAAoB,SAAAiC,IAAAX,IACA1C,KAAAoB,SAAAkC,IAAAZ,IAIA,MAAAK,IACAA,EAAAY,OAAAZ,GACA/C,KAAAsB,OAAA+B,IAAAN,IACA/C,KAAAsB,OAAAgC,IAAAP,IAIA/C,KAAAuB,UAAA+B,KACAf,cAAAF,EAAAC,KACAG,gBAAAJ,EAAAG,OACAK,aAAA,MAAAD,KAAAN,KACAQ,eAAA,MAAAF,KAAAJ,OACAE,SACAK,UAOApC,EAAAgB,UAAA8B,iBACA,SAAAG,EAAAC,GACA,GAAAnB,GAAAkB,CACA,OAAA5D,KAAAkB,cACAwB,EAAA1B,EAAA2B,SAAA3C,KAAAkB,YAAAwB,IAGA,MAAAmB,GAGA7D,KAAAyB,mBACAzB,KAAAyB,iBAAAqC,OAAAC,OAAA,OAEA/D,KAAAyB,iBAAAT,EAAAgD,YAAAtB,IAAAmB,GACK7D,KAAAyB,yBAGLzB,MAAAyB,iBAAAT,EAAAgD,YAAAtB,IACA,IAAAoB,OAAAG,KAAAjE,KAAAyB,kBAAAyC,SACAlE,KAAAyB,iBAAA,QAqBAd,EAAAgB,UAAAwC,eACA,SAAArC,EAAA8B,EAAAQ,GACA,GAAAjB,GAAAS,CAEA,UAAAA,EAAA,CACA,SAAA9B,EAAAG,KACA,SAAAoC,OACA,gJAIAlB,GAAArB,EAAAG,KAEA,GAAAF,GAAA/B,KAAAkB,WAEA,OAAAa,IACAoB,EAAAnC,EAAA2B,SAAAZ,EAAAoB,GAIA,IAAAmB,GAAA,GAAAjD,GACAkD,EAAA,GAAAlD,EAGArB,MAAAuB,UAAAiD,gBAAA,SAAArC,GACA,GAAAA,EAAAO,SAAAS,GAAA,MAAAhB,EAAAU,aAAA,CAEA,GAAAD,GAAAd,EAAA2C,qBACAnC,KAAAH,EAAAU,aACAL,OAAAL,EAAAW,gBAEA,OAAAF,EAAAF,SAEAP,EAAAO,OAAAE,EAAAF,OACA,MAAA0B,IACAjC,EAAAO,OAAA1B,EAAA0D,KAAAN,EAAAjC,EAAAO,SAEA,MAAAX,IACAI,EAAAO,OAAA1B,EAAA2B,SAAAZ,EAAAI,EAAAO,SAEAP,EAAAU,aAAAD,EAAAN,KACAH,EAAAW,eAAAF,EAAAJ,OACA,MAAAI,EAAAG,OACAZ,EAAAY,KAAAH,EAAAG,OAKA,GAAAL,GAAAP,EAAAO,MACA,OAAAA,GAAA4B,EAAAjB,IAAAX,IACA4B,EAAAhB,IAAAZ,EAGA,IAAAK,GAAAZ,EAAAY,IACA,OAAAA,GAAAwB,EAAAlB,IAAAN,IACAwB,EAAAjB,IAAAP,IAGK/C,MACLA,KAAAoB,SAAAkD,EACAtE,KAAAsB,OAAAiD,EAGAzC,EAAAmB,QAAAC,QAAA,SAAAC,GACA,GAAAI,GAAAzB,EAAA0B,iBAAAL,EACA,OAAAI,IACA,MAAAa,IACAjB,EAAAnC,EAAA0D,KAAAN,EAAAjB,IAEA,MAAApB,IACAoB,EAAAnC,EAAA2B,SAAAZ,EAAAoB,IAEAnD,KAAAyD,iBAAAN,EAAAI,KAEKvD,OAcLW,EAAAgB,UAAA+B,iBACA,SAAAiB,EAAAC,EAAAC,EACAC,GAKA,GAAAF,GAAA,gBAAAA,GAAAtC,MAAA,gBAAAsC,GAAApC,OACA,SAAA6B,OACA,+OAMA,OAAAM,GAAA,QAAAA,IAAA,UAAAA,IACAA,EAAArC,KAAA,GAAAqC,EAAAnC,QAAA,IACAoC,GAAAC,GAAAC,MAIAH,GAAA,QAAAA,IAAA,UAAAA,IACAC,GAAA,QAAAA,IAAA,UAAAA,IACAD,EAAArC,KAAA,GAAAqC,EAAAnC,QAAA,GACAoC,EAAAtC,KAAA,GAAAsC,EAAApC,QAAA,GACAqC,GAKA,SAAAR,OAAA,oBAAAU,KAAAC,WACA3C,UAAAsC,EACAjC,OAAAmC,EACAjC,SAAAgC,EACA7B,KAAA+B,MASAnE,EAAAgB,UAAAsD,mBACA,WAcA,OANAC,GACA/C,EACAgD,EACAC,EAVAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,GAMAC,EAAA5F,KAAAuB,UAAAsE,UACAC,EAAA,EAAAC,EAAAH,EAAA1B,OAA0C4B,EAAAC,EAASD,IAAA,CAInD,GAHA3D,EAAAyD,EAAAE,GACAZ,EAAA,GAEA/C,EAAAI,gBAAA+C,EAEA,IADAD,EAAA,EACAlD,EAAAI,gBAAA+C,GACAJ,GAAA,IACAI,QAIA,IAAAQ,EAAA,GACA,IAAA9E,EAAAgF,oCAAA7D,EAAAyD,EAAAE,EAAA,IACA,QAEAZ,IAAA,IAIAA,GAAAxD,EAAAuE,OAAA9D,EAAAM,gBACA4C,GACAA,EAAAlD,EAAAM,gBAEA,MAAAN,EAAAO,SACA0C,EAAApF,KAAAoB,SAAA8E,QAAA/D,EAAAO,QACAwC,GAAAxD,EAAAuE,OAAAb,EAAAM,GACAA,EAAAN,EAGAF,GAAAxD,EAAAuE,OAAA9D,EAAAU,aAAA,EACA2C,GACAA,EAAArD,EAAAU,aAAA,EAEAqC,GAAAxD,EAAAuE,OAAA9D,EAAAW,eACAyC,GACAA,EAAApD,EAAAW,eAEA,MAAAX,EAAAY,OACAoC,EAAAnF,KAAAsB,OAAA4E,QAAA/D,EAAAY,MACAmC,GAAAxD,EAAAuE,OAAAd,EAAAM,GACAA,EAAAN,IAIAQ,GAAAT,EAGA,MAAAS,IAGAhF,EAAAgB,UAAAwE,wBACA,SAAAC,EAAAC,GACA,MAAAD,GAAAE,IAAA,SAAA5D,GACA,IAAA1C,KAAAyB,iBACA,WAEA,OAAA4E,IACA3D,EAAA1B,EAAA2B,SAAA0D,EAAA3D,GAEA,IAAA6D,GAAAvF,EAAAgD,YAAAtB,EACA,OAAAoB,QAAAnC,UAAA6E,eAAAjG,KAAAP,KAAAyB,iBAAA8E,GACAvG,KAAAyB,iBAAA8E,GACA,MACKvG,OAMLW,EAAAgB,UAAA8E,OACA,WACA,GAAAH,IACAI,QAAA1G,KAAA4B,SACAqB,QAAAjD,KAAAoB,SAAAyE,UACAc,MAAA3G,KAAAsB,OAAAuE,UACAD,SAAA5F,KAAAiF,qBAYA,OAVA,OAAAjF,KAAAe,QACAuF,EAAArE,KAAAjC,KAAAe,OAEA,MAAAf,KAAAkB,cACAoF,EAAAvE,WAAA/B,KAAAkB,aAEAlB,KAAAyB,mBACA6E,EAAAM,eAAA5G,KAAAmG,wBAAAG,EAAArD,QAAAqD,EAAAvE,aAGAuE,GAMA3F,EAAAgB,UAAAkF,SACA,WACA,MAAA9B,MAAAC,UAAAhF,KAAAyG,WAGA7G,EAAAe,sBH2EM,SAAUd,EAAQD,EAASM,GI/ajC,QAAA4G,GAAAC,GACA,MAAAA,GAAA,IACAA,GAAA,MACAA,GAAA,KASA,QAAAC,GAAAD,GACA,GAAAE,GAAA,OAAAF,GACAG,EAAAH,GAAA,CACA,OAAAE,IACAC,EACAA,EAhDA,GAAAC,GAAAjH,EAAA,GAcAkH,EAAA,EAGAC,EAAA,GAAAD,EAGAE,EAAAD,EAAA,EAGAE,EAAAF,CA+BAzH,GAAAqG,OAAA,SAAAc,GACA,GACAS,GADAC,EAAA,GAGAC,EAAAZ,EAAAC,EAEA,GACAS,GAAAE,EAAAJ,EACAI,KAAAN,EACAM,EAAA,IAGAF,GAAAD,GAEAE,GAAAN,EAAAlB,OAAAuB,SACGE,EAAA,EAEH,OAAAD,IAOA7H,EAAA+H,OAAA,SAAAC,EAAAC,EAAAC,GACA,GAGAC,GAAAP,EAHAQ,EAAAJ,EAAA1D,OACAyB,EAAA,EACAsC,EAAA,CAGA,IACA,GAAAJ,GAAAG,EACA,SAAA3D,OAAA,6CAIA,IADAmD,EAAAL,EAAAQ,OAAAC,EAAAM,WAAAL,MACAL,KAAA,EACA,SAAAnD,OAAA,yBAAAuD,EAAAO,OAAAN,EAAA,GAGAE,MAAAP,EAAAD,GACAC,GAAAF,EACA3B,GAAA6B,GAAAS,EACAA,GAAAb,QACGW,EAEHD,GAAAM,MAAApB,EAAArB,GACAmC,EAAAO,KAAAR,IJ2fM,SAAUhI,EAAQD,GK9nBxB,GAAA0I,GAAA,mEAAAC,MAAA,GAKA3I,GAAAqG,OAAA,SAAAuC,GACA,MAAAA,KAAAF,EAAApE,OACA,MAAAoE,GAAAE,EAEA,UAAAC,WAAA,6BAAAD,IAOA5I,EAAA+H,OAAA,SAAAe,GACA,GAAAC,GAAA,GACAC,EAAA,GAEAC,EAAA,GACAC,EAAA,IAEAC,EAAA,GACAC,EAAA,GAEAC,EAAA,GACAC,EAAA,GAEAC,EAAA,GACAC,EAAA,EAGA,OAAAT,IAAAD,MAAAE,EACAF,EAAAC,EAIAE,GAAAH,MAAAI,EACAJ,EAAAG,EAAAM,EAIAJ,GAAAL,MAAAM,EACAN,EAAAK,EAAAK,EAIAV,GAAAO,EACA,GAIAP,GAAAQ,EACA,IAIA,IL6oBM,SAAUrJ,EAAQD,GM7rBxB,QAAAqB,GAAAH,EAAAgE,EAAAuE,GACA,GAAAvE,IAAAhE,GACA,MAAAA,GAAAgE,EACG,QAAAwE,UAAApF,OACH,MAAAmF,EAEA,UAAAhF,OAAA,IAAAS,EAAA,6BAQA,QAAAyE,GAAAC,GACA,GAAAC,GAAAD,EAAAC,MAAAC,EACA,OAAAD,IAIAE,OAAAF,EAAA,GACAG,KAAAH,EAAA,GACAI,KAAAJ,EAAA,GACAK,KAAAL,EAAA,GACAM,KAAAN,EAAA,IAPA,KAYA,QAAAO,GAAAC,GACA,GAAAC,GAAA,EAiBA,OAhBAD,GAAAN,SACAO,GAAAD,EAAAN,OAAA,KAEAO,GAAA,KACAD,EAAAL,OACAM,GAAAD,EAAAL,KAAA,KAEAK,EAAAJ,OACAK,GAAAD,EAAAJ,MAEAI,EAAAH,OACAI,GAAA,IAAAD,EAAAH,MAEAG,EAAAF,OACAG,GAAAD,EAAAF,MAEAG,EAeA,QAAAC,GAAAC,GACA,GAAAL,GAAAK,EACAF,EAAAX,EAAAa,EACA,IAAAF,EAAA,CACA,IAAAA,EAAAH,KACA,MAAAK,EAEAL,GAAAG,EAAAH,KAKA,OAAAM,GAHAC,EAAA1K,EAAA0K,WAAAP,GAEAQ,EAAAR,EAAAxB,MAAA,OACAiC,EAAA,EAAA1E,EAAAyE,EAAArG,OAAA,EAA8C4B,GAAA,EAAQA,IACtDuE,EAAAE,EAAAzE,GACA,MAAAuE,EACAE,EAAAE,OAAA3E,EAAA,GACK,OAAAuE,EACLG,IACKA,EAAA,IACL,KAAAH,GAIAE,EAAAE,OAAA3E,EAAA,EAAA0E,GACAA,EAAA,IAEAD,EAAAE,OAAA3E,EAAA,GACA0E,KAUA,OANAT,GAAAQ,EAAA7F,KAAA,KAEA,KAAAqF,IACAA,EAAAO,EAAA,SAGAJ,GACAA,EAAAH,OACAC,EAAAE,IAEAH,EAoBA,QAAArF,GAAAgG,EAAAN,GACA,KAAAM,IACAA,EAAA,KAEA,KAAAN,IACAA,EAAA,IAEA,IAAAO,GAAApB,EAAAa,GACAQ,EAAArB,EAAAmB,EAMA,IALAE,IACAF,EAAAE,EAAAb,MAAA,KAIAY,MAAAhB,OAIA,MAHAiB,KACAD,EAAAhB,OAAAiB,EAAAjB,QAEAK,EAAAW,EAGA,IAAAA,GAAAP,EAAAX,MAAAoB,GACA,MAAAT,EAIA,IAAAQ,MAAAf,OAAAe,EAAAb,KAEA,MADAa,GAAAf,KAAAO,EACAJ,EAAAY,EAGA,IAAAE,GAAA,MAAAV,EAAAjC,OAAA,GACAiC,EACAD,EAAAO,EAAAK,QAAA,eAAAX,EAEA,OAAAQ,IACAA,EAAAb,KAAAe,EACAd,EAAAY,IAEAE,EAcA,QAAAnI,GAAA+H,EAAAN,GACA,KAAAM,IACAA,EAAA,KAGAA,IAAAK,QAAA,SAOA,KADA,GAAAC,GAAA,EACA,IAAAZ,EAAAlE,QAAAwE,EAAA,OACA,GAAAO,GAAAP,EAAAQ,YAAA,IACA,IAAAD,EAAA,EACA,MAAAb,EAOA,IADAM,IAAAS,MAAA,EAAAF,GACAP,EAAAjB,MAAA,qBACA,MAAAW,KAGAY,EAIA,MAAAI,OAAAJ,EAAA,GAAAtG,KAAA,OAAA0F,EAAAiB,OAAAX,EAAAxG,OAAA,GASA,QAAAoH,GAAAC,GACA,MAAAA,GAYA,QAAAvH,GAAA4D,GACA,MAAA4D,GAAA5D,GACA,IAAAA,EAGAA,EAIA,QAAA6D,GAAA7D,GACA,MAAA4D,GAAA5D,GACAA,EAAAuD,MAAA,GAGAvD,EAIA,QAAA4D,GAAAD,GACA,IAAAA,EACA,QAGA,IAAArH,GAAAqH,EAAArH,MAEA,IAAAA,EAAA,EACA,QAGA,SAAAqH,EAAArD,WAAAhE,EAAA,IACA,KAAAqH,EAAArD,WAAAhE,EAAA,IACA,MAAAqH,EAAArD,WAAAhE,EAAA,IACA,MAAAqH,EAAArD,WAAAhE,EAAA,IACA,MAAAqH,EAAArD,WAAAhE,EAAA,IACA,MAAAqH,EAAArD,WAAAhE,EAAA,IACA,MAAAqH,EAAArD,WAAAhE,EAAA,IACA,KAAAqH,EAAArD,WAAAhE,EAAA,IACA,KAAAqH,EAAArD,WAAAhE,EAAA,GACA,QAGA,QAAA4B,GAAA5B,EAAA,GAA2B4B,GAAA,EAAQA,IACnC,QAAAyF,EAAArD,WAAApC,GACA,QAIA,UAWA,QAAA4F,GAAAC,EAAAC,EAAAC,GACA,GAAAC,GAAAC,EAAAJ,EAAAjJ,OAAAkJ,EAAAlJ,OACA,YAAAoJ,EACAA,GAGAA,EAAAH,EAAA9I,aAAA+I,EAAA/I,aACA,IAAAiJ,EACAA,GAGAA,EAAAH,EAAA7I,eAAA8I,EAAA9I,eACA,IAAAgJ,GAAAD,EACAC,GAGAA,EAAAH,EAAAlJ,gBAAAmJ,EAAAnJ,gBACA,IAAAqJ,EACAA,GAGAA,EAAAH,EAAApJ,cAAAqJ,EAAArJ,cACA,IAAAuJ,EACAA,EAGAC,EAAAJ,EAAA5I,KAAA6I,EAAA7I,UAaA,QAAAiJ,GAAAL,EAAAC,EAAAK,GACA,GAAAH,GAAAH,EAAApJ,cAAAqJ,EAAArJ,aACA,YAAAuJ,EACAA,GAGAA,EAAAH,EAAAlJ,gBAAAmJ,EAAAnJ,gBACA,IAAAqJ,GAAAG,EACAH,GAGAA,EAAAC,EAAAJ,EAAAjJ,OAAAkJ,EAAAlJ,QACA,IAAAoJ,EACAA,GAGAA,EAAAH,EAAA9I,aAAA+I,EAAA/I,aACA,IAAAiJ,EACAA,GAGAA,EAAAH,EAAA7I,eAAA8I,EAAA9I,eACA,IAAAgJ,EACAA,EAGAC,EAAAJ,EAAA5I,KAAA6I,EAAA7I,UAIA,QAAAgJ,GAAAG,EAAAC,GACA,MAAAD,KAAAC,EACA,EAGA,OAAAD,EACA,EAGA,OAAAC,GACA,EAGAD,EAAAC,EACA,GAGA,EAOA,QAAAnG,GAAA2F,EAAAC,GACA,GAAAE,GAAAH,EAAApJ,cAAAqJ,EAAArJ,aACA,YAAAuJ,EACAA,GAGAA,EAAAH,EAAAlJ,gBAAAmJ,EAAAnJ,gBACA,IAAAqJ,EACAA,GAGAA,EAAAC,EAAAJ,EAAAjJ,OAAAkJ,EAAAlJ,QACA,IAAAoJ,EACAA,GAGAA,EAAAH,EAAA9I,aAAA+I,EAAA/I,aACA,IAAAiJ,EACAA,GAGAA,EAAAH,EAAA7I,eAAA8I,EAAA9I,eACA,IAAAgJ,EACAA,EAGAC,EAAAJ,EAAA5I,KAAA6I,EAAA7I,UASA,QAAAqJ,GAAAC,GACA,MAAAtH,MAAAuH,MAAAD,EAAAtB,QAAA,iBAAsC,KAQtC,QAAAwB,GAAAxK,EAAAyK,EAAAC,GA8BA,GA7BAD,KAAA,GAEAzK,IAEA,MAAAA,IAAAmC,OAAA,UAAAsI,EAAA,KACAzK,GAAA,KAOAyK,EAAAzK,EAAAyK,GAiBAC,EAAA,CACA,GAAAC,GAAAnD,EAAAkD,EACA,KAAAC,EACA,SAAArI,OAAA,mCAEA,IAAAqI,EAAA3C,KAAA,CAEA,GAAAkB,GAAAyB,EAAA3C,KAAAmB,YAAA,IACAD,IAAA,IACAyB,EAAA3C,KAAA2C,EAAA3C,KAAA4C,UAAA,EAAA1B,EAAA,IAGAuB,EAAA9H,EAAAsF,EAAA0C,GAAAF,GAGA,MAAArC,GAAAqC,GA3cA5M,EAAAqB,QAEA,IAAAyI,GAAA,iEACAmB,EAAA,eAeAjL,GAAA2J,WAsBA3J,EAAAoK,cAwDApK,EAAAuK,YA2DAvK,EAAA8E,OAEA9E,EAAA0K,WAAA,SAAAF,GACA,YAAAA,EAAAjC,OAAA,IAAAuB,EAAAkD,KAAAxC,IAyCAxK,EAAA+C,UAEA,IAAAkK,GAAA,WACA,GAAAC,GAAAhJ,OAAAC,OAAA,KACA,sBAAA+I,MAuBAlN,GAAAoE,YAAA6I,EAAAvB,EAAAtH,EASApE,EAAA6L,cAAAoB,EAAAvB,EAAAG,EAsEA7L,EAAA8L,6BAuCA9L,EAAAoM,sCAsDApM,EAAAoG,sCAUApG,EAAAwM,sBAqDAxM,EAAA2M,oBNqtBM,SAAU1M,EAAQD,EAASM,GO3qCjC,QAAAmB,KACArB,KAAA+M,UACA/M,KAAAgN,KAAAC,EAAA,GAAAC,KAAApJ,OAAAC,OAAA,MAZA,GAAA/C,GAAAd,EAAA,GACAmD,EAAAS,OAAAnC,UAAA6E,eACAyG,EAAA,mBAAAC,IAgBA7L,GAAA8L,UAAA,SAAAC,EAAAC,GAEA,OADAC,GAAA,GAAAjM,GACAyE,EAAA,EAAAC,EAAAqH,EAAAlJ,OAAsC4B,EAAAC,EAASD,IAC/CwH,EAAAhK,IAAA8J,EAAAtH,GAAAuH,EAEA,OAAAC,IASAjM,EAAAM,UAAA4L,KAAA,WACA,MAAAN,GAAAjN,KAAAgN,KAAAO,KAAAzJ,OAAA0J,oBAAAxN,KAAAgN,MAAA9I,QAQA7C,EAAAM,UAAA2B,IAAA,SAAAsE,EAAAyF,GACA,GAAAI,GAAAR,EAAArF,EAAA5G,EAAAgD,YAAA4D,GACA8F,EAAAT,EAAAjN,KAAAqD,IAAAuE,GAAAvE,EAAA9C,KAAAP,KAAAgN,KAAAS,GACAE,EAAA3N,KAAA+M,OAAA7I,MACAwJ,KAAAL,GACArN,KAAA+M,OAAAa,KAAAhG,GAEA8F,IACAT,EACAjN,KAAAgN,KAAAM,IAAA1F,EAAA+F,GAEA3N,KAAAgN,KAAAS,GAAAE,IAUAtM,EAAAM,UAAA0B,IAAA,SAAAuE,GACA,GAAAqF,EACA,MAAAjN,MAAAgN,KAAA3J,IAAAuE,EAEA,IAAA6F,GAAAzM,EAAAgD,YAAA4D,EACA,OAAAvE,GAAA9C,KAAAP,KAAAgN,KAAAS,IASApM,EAAAM,UAAAuE,QAAA,SAAA0B,GACA,GAAAqF,EAAA,CACA,GAAAU,GAAA3N,KAAAgN,KAAAa,IAAAjG,EACA,IAAA+F,GAAA,EACA,MAAAA,OAEG,CACH,GAAAF,GAAAzM,EAAAgD,YAAA4D,EACA,IAAAvE,EAAA9C,KAAAP,KAAAgN,KAAAS,GACA,MAAAzN,MAAAgN,KAAAS,GAIA,SAAApJ,OAAA,IAAAuD,EAAA,yBAQAvG,EAAAM,UAAAmM,GAAA,SAAAC,GACA,GAAAA,GAAA,GAAAA,EAAA/N,KAAA+M,OAAA7I,OACA,MAAAlE,MAAA+M,OAAAgB,EAEA,UAAA1J,OAAA,yBAAA0J,IAQA1M,EAAAM,UAAAkE,QAAA,WACA,MAAA7F,MAAA+M,OAAA5B,SAGAvL,EAAAyB,YPmsCM,SAAUxB,EAAQD,EAASM,GQ9yCjC,QAAA8N,GAAArC,EAAAC,GAEA,GAAAqC,GAAAtC,EAAApJ,cACA2L,EAAAtC,EAAArJ,cACA4L,EAAAxC,EAAAlJ,gBACA2L,EAAAxC,EAAAnJ,eACA,OAAAyL,GAAAD,GAAAC,GAAAD,GAAAG,GAAAD,GACAnN,EAAAgF,oCAAA2F,EAAAC,IAAA,EAQA,QAAApK,KACAxB,KAAA+M,UACA/M,KAAAqO,SAAA,EAEArO,KAAAsO,OAAgB/L,eAAA,EAAAE,gBAAA,GAzBhB,GAAAzB,GAAAd,EAAA,EAkCAsB,GAAAG,UAAA6C,gBACA,SAAA+J,EAAAC,GACAxO,KAAA+M,OAAA7J,QAAAqL,EAAAC,IAQAhN,EAAAG,UAAA2B,IAAA,SAAAmL,GACAT,EAAAhO,KAAAsO,MAAAG,IACAzO,KAAAsO,MAAAG,EACAzO,KAAA+M,OAAAa,KAAAa,KAEAzO,KAAAqO,SAAA,EACArO,KAAA+M,OAAAa,KAAAa,KAaAjN,EAAAG,UAAAkE,QAAA,WAKA,MAJA7F,MAAAqO,UACArO,KAAA+M,OAAA2B,KAAA1N,EAAAgF,qCACAhG,KAAAqO,SAAA,GAEArO,KAAA+M,QAGAnN,EAAA4B,eRk0CM,SAAU3B,EAAQD,EAASM,GSn4CjC,QAAAU,GAAA+N,EAAAC,GACA,GAAAC,GAAAF,CAKA,OAJA,gBAAAA,KACAE,EAAA7N,EAAAoL,oBAAAuC,IAGA,MAAAE,EAAAC,SACA,GAAAC,GAAAF,EAAAD,GACA,GAAAI,GAAAH,EAAAD,GA0QA,QAAAI,GAAAL,EAAAC,GACA,GAAAC,GAAAF,CACA,iBAAAA,KACAE,EAAA7N,EAAAoL,oBAAAuC,GAGA,IAAAjI,GAAA1F,EAAAC,OAAA4N,EAAA,WACA5L,EAAAjC,EAAAC,OAAA4N,EAAA,WAGAlI,EAAA3F,EAAAC,OAAA4N,EAAA,YACA9M,EAAAf,EAAAC,OAAA4N,EAAA,mBACAjI,EAAA5F,EAAAC,OAAA4N,EAAA,uBACAjJ,EAAA5E,EAAAC,OAAA4N,EAAA,YACA5M,EAAAjB,EAAAC,OAAA4N,EAAA,YAIA,IAAAnI,GAAA1G,KAAA4B,SACA,SAAAyC,OAAA,wBAAAqC,EAGA3E,KACAA,EAAAf,EAAAmJ,UAAApI,IAGAkB,IACAqD,IAAA3C,QAIA2C,IAAAtF,EAAAmJ,WAKA7D,IAAA,SAAA5D,GACA,MAAAX,IAAAf,EAAAsJ,WAAAvI,IAAAf,EAAAsJ,WAAA5H,GACA1B,EAAA2B,SAAAZ,EAAAW,GACAA,IAOA1C,KAAAsB,OAAAD,EAAA8L,UAAAxG,EAAAL,IAAA3C,SAAA,GACA3D,KAAAoB,SAAAC,EAAA8L,UAAAlK,GAAA,GAEAjD,KAAAiP,iBAAAjP,KAAAoB,SAAAyE,UAAAS,IAAA,SAAAiF,GACA,MAAAvK,GAAAuL,iBAAAxK,EAAAwJ,EAAAqD,KAGA5O,KAAA+B,aACA/B,KAAA4G,iBACA5G,KAAAuB,UAAAqE,EACA5F,KAAAkP,cAAAN,EACA5O,KAAAiC,OA4GA,QAAAkN,KACAnP,KAAAuC,cAAA,EACAvC,KAAAyC,gBAAA,EACAzC,KAAA0C,OAAA,KACA1C,KAAA6C,aAAA,KACA7C,KAAA8C,eAAA,KACA9C,KAAA+C,KAAA,KAkaA,QAAAgM,GAAAJ,EAAAC,GACA,GAAAC,GAAAF,CACA,iBAAAA,KACAE,EAAA7N,EAAAoL,oBAAAuC,GAGA,IAAAjI,GAAA1F,EAAAC,OAAA4N,EAAA,WACAC,EAAA9N,EAAAC,OAAA4N,EAAA,WAEA,IAAAnI,GAAA1G,KAAA4B,SACA,SAAAyC,OAAA,wBAAAqC,EAGA1G,MAAAoB,SAAA,GAAAC,GACArB,KAAAsB,OAAA,GAAAD,EAEA,IAAA+N,IACA9M,MAAA,EACAE,OAAA,EAEAxC,MAAAqP,UAAAP,EAAAxI,IAAA,SAAAiF,GACA,GAAAA,EAAArB,IAGA,SAAA7F,OAAA,qDAEA,IAAAiL,GAAAtO,EAAAC,OAAAsK,EAAA,UACAgE,EAAAvO,EAAAC,OAAAqO,EAAA,QACAE,EAAAxO,EAAAC,OAAAqO,EAAA,SAEA,IAAAC,EAAAH,EAAA9M,MACAiN,IAAAH,EAAA9M,MAAAkN,EAAAJ,EAAA5M,OACA,SAAA6B,OAAA,uDAIA,OAFA+K,GAAAE,GAGAG,iBAGAlN,cAAAgN,EAAA,EACA9M,gBAAA+M,EAAA,GAEAE,SAAA,GAAA9O,GAAAI,EAAAC,OAAAsK,EAAA,OAAAqD,MAh5BA,GAAA5N,GAAAd,EAAA,GACAyP,EAAAzP,EAAA,GACAmB,EAAAnB,EAAA,GAAAmB,SACAK,EAAAxB,EAAA,GACA0P,EAAA1P,EAAA,GAAA0P,SAaAhP,GAAAiB,cAAA,SAAA8M,EAAAC,GACA,MAAAI,GAAAnN,cAAA8M,EAAAC,IAMAhO,EAAAe,UAAAC,SAAA,EAgCAhB,EAAAe,UAAAkO,oBAAA,KACA/L,OAAAgM,eAAAlP,EAAAe,UAAA,sBACAoO,cAAA,EACAC,YAAA,EACAnC,IAAA,WAKA,MAJA7N,MAAA6P,qBACA7P,KAAAiQ,eAAAjQ,KAAAuB,UAAAvB,KAAA+B,YAGA/B,KAAA6P,uBAIAjP,EAAAe,UAAAuO,mBAAA,KACApM,OAAAgM,eAAAlP,EAAAe,UAAA,qBACAoO,cAAA,EACAC,YAAA,EACAnC,IAAA,WAKA,MAJA7N,MAAAkQ,oBACAlQ,KAAAiQ,eAAAjQ,KAAAuB,UAAAvB,KAAA+B,YAGA/B,KAAAkQ,sBAIAtP,EAAAe,UAAAwO,wBACA,SAAAvI,EAAAqD,GACA,GAAAxK,GAAAmH,EAAAO,OAAA8C,EACA,aAAAxK,GAAmB,MAAAA,GAQnBG,EAAAe,UAAAsO,eACA,SAAArI,EAAAvB,GACA,SAAAhC,OAAA,6CAGAzD,EAAAwP,gBAAA,EACAxP,EAAAyP,eAAA,EAEAzP,EAAA0P,qBAAA,EACA1P,EAAA2P,kBAAA,EAkBA3P,EAAAe,UAAAO,YACA,SAAAqM,EAAAiC,EAAAC,GACA,GAGA7K,GAHA8K,EAAAF,GAAA,KACAG,EAAAF,GAAA7P,EAAAwP,eAGA,QAAAO,GACA,IAAA/P,GAAAwP,gBACAxK,EAAA5F,KAAA4Q,kBACA,MACA,KAAAhQ,GAAAyP,eACAzK,EAAA5F,KAAA6Q,iBACA,MACA,SACA,SAAAxM,OAAA,+BAGA,GAAAtC,GAAA/B,KAAA+B,UACA6D,GAAAU,IAAA,SAAAnE,GACA,GAAAO,GAAA,OAAAP,EAAAO,OAAA,KAAA1C,KAAAoB,SAAA0M,GAAA3L,EAAAO,OAEA,OADAA,GAAA1B,EAAAuL,iBAAAxK,EAAAW,EAAA1C,KAAAkP,gBAEAxM,SACAH,cAAAJ,EAAAI,cACAE,gBAAAN,EAAAM,gBACAI,aAAAV,EAAAU,aACAC,eAAAX,EAAAW,eACAC,KAAA,OAAAZ,EAAAY,KAAA,KAAA/C,KAAAsB,OAAAwM,GAAA3L,EAAAY,QAEK/C,MAAAkD,QAAAqL,EAAAmC,IAyBL9P,EAAAe,UAAAmP,yBACA,SAAAhQ,GACA,GAAAwB,GAAAtB,EAAAC,OAAAH,EAAA,QAMAiQ,GACArO,OAAA1B,EAAAC,OAAAH,EAAA,UACA+B,aAAAP,EACAQ,eAAA9B,EAAAC,OAAAH,EAAA,YAIA,IADAiQ,EAAArO,OAAA1C,KAAAgR,iBAAAD,EAAArO,QACAqO,EAAArO,OAAA,EACA,QAGA,IAAAkD,MAEAqF,EAAAjL,KAAAiR,aAAAF,EACA/Q,KAAA6Q,kBACA,eACA,iBACA7P,EAAA0K,2BACAiE,EAAAY,kBACA,IAAAtF,GAAA,GACA,GAAA9I,GAAAnC,KAAA6Q,kBAAA5F,EAEA,IAAAiG,SAAApQ,EAAA0B,OAOA,IANA,GAAAK,GAAAV,EAAAU,aAMAV,KAAAU,kBACA+C,EAAAgI,MACAtL,KAAAtB,EAAAC,OAAAkB,EAAA,sBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,wBACAgP,WAAAnQ,EAAAC,OAAAkB,EAAA,8BAGAA,EAAAnC,KAAA6Q,oBAAA5F,OASA,KANA,GAAAnI,GAAAX,EAAAW,eAMAX,GACAA,EAAAU,eAAAP,GACAH,EAAAW,mBACA8C,EAAAgI,MACAtL,KAAAtB,EAAAC,OAAAkB,EAAA,sBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,wBACAgP,WAAAnQ,EAAAC,OAAAkB,EAAA,8BAGAA,EAAAnC,KAAA6Q,oBAAA5F,GAKA,MAAArF,IAGAhG,EAAAgB,oBAgGAoO,EAAArN,UAAAmC,OAAAC,OAAAnD,EAAAe,WACAqN,EAAArN,UAAA+N,SAAA9O,EAMAoO,EAAArN,UAAAqP,iBAAA,SAAAnM,GACA,GAAAuM,GAAAvM,CAKA,IAJA,MAAA7E,KAAA+B,aACAqP,EAAApQ,EAAA2B,SAAA3C,KAAA+B,WAAAqP,IAGApR,KAAAoB,SAAAiC,IAAA+N,GACA,MAAApR,MAAAoB,SAAA8E,QAAAkL,EAKA,IAAAtL,EACA,KAAAA,EAAA,EAAaA,EAAA9F,KAAAiP,iBAAA/K,SAAkC4B,EAC/C,GAAA9F,KAAAiP,iBAAAnJ,IAAAjB,EACA,MAAAiB,EAIA,WAYAkJ,EAAAnN,cACA,SAAA8M,EAAAC,GACA,GAAAyC,GAAAvN,OAAAC,OAAAiL,EAAArN,WAEAgF,EAAA0K,EAAA/P,OAAAD,EAAA8L,UAAAwB,EAAArN,OAAAuE,WAAA,GACA5C,EAAAoO,EAAAjQ,SAAAC,EAAA8L,UAAAwB,EAAAvN,SAAAyE,WAAA,EACAwL,GAAAtP,WAAA4M,EAAAzN,YACAmQ,EAAAzK,eAAA+H,EAAAxI,wBAAAkL,EAAAjQ,SAAAyE,UACAwL,EAAAtP,YACAsP,EAAApP,KAAA0M,EAAA5N,MACAsQ,EAAAnC,cAAAN,EACAyC,EAAApC,iBAAAoC,EAAAjQ,SAAAyE,UAAAS,IAAA,SAAAiF,GACA,MAAAvK,GAAAuL,iBAAA8E,EAAAtP,WAAAwJ,EAAAqD,IAYA,QAJA0C,GAAA3C,EAAApN,UAAAsE,UAAAsF,QACAoG,EAAAF,EAAAxB,uBACA2B,EAAAH,EAAAnB,sBAEApK,EAAA,EAAA5B,EAAAoN,EAAApN,OAAsD4B,EAAA5B,EAAY4B,IAAA,CAClE,GAAA2L,GAAAH,EAAAxL,GACA4L,EAAA,GAAAvC,EACAuC,GAAAnP,cAAAkP,EAAAlP,cACAmP,EAAAjP,gBAAAgP,EAAAhP,gBAEAgP,EAAA/O,SACAgP,EAAAhP,OAAAO,EAAAiD,QAAAuL,EAAA/O,QACAgP,EAAA7O,aAAA4O,EAAA5O,aACA6O,EAAA5O,eAAA2O,EAAA3O,eAEA2O,EAAA1O,OACA2O,EAAA3O,KAAA4D,EAAAT,QAAAuL,EAAA1O,OAGAyO,EAAA5D,KAAA8D,IAGAH,EAAA3D,KAAA8D,GAKA,MAFA9B,GAAAyB,EAAAnB,mBAAAlP,EAAA0K,4BAEA2F,GAMArC,EAAArN,UAAAC,SAAA,EAKAkC,OAAAgM,eAAAd,EAAArN,UAAA,WACAkM,IAAA,WACA,MAAA7N,MAAAiP,iBAAA9D,WAqBA6D,EAAArN,UAAAsO,eACA,SAAArI,EAAAvB,GAeA,IAdA,GAYAlE,GAAAkK,EAAAsF,EAAAC,EAAAxJ,EAZA7F,EAAA,EACA8C,EAAA,EACAG,EAAA,EACAD,EAAA,EACAG,EAAA,EACAD,EAAA,EACAvB,EAAA0D,EAAA1D,OACA+G,EAAA,EACA4G,KACAC,KACAC,KACAT,KAGArG,EAAA/G,GACA,SAAA0D,EAAAO,OAAA8C,GACA1I,IACA0I,IACA5F,EAAA,MAEA,UAAAuC,EAAAO,OAAA8C,GACAA,QAEA,CASA,IARA9I,EAAA,GAAAgN,GACAhN,EAAAI,gBAOAqP,EAAA3G,EAAyB2G,EAAA1N,IACzBlE,KAAAmQ,wBAAAvI,EAAAgK,GADuCA,KAQvC,GAHAvF,EAAAzE,EAAAuD,MAAAF,EAAA2G,GAEAD,EAAAE,EAAAxF,GAEApB,GAAAoB,EAAAnI,WACS,CAET,IADAyN,KACA1G,EAAA2G,GACAlQ,EAAAiG,OAAAC,EAAAqD,EAAA6G,GACA1J,EAAA0J,EAAA1J,MACA6C,EAAA6G,EAAAzJ,KACAsJ,EAAA/D,KAAAxF,EAGA,QAAAuJ,EAAAzN,OACA,SAAAG,OAAA,yCAGA,QAAAsN,EAAAzN,OACA,SAAAG,OAAA,yCAGAwN,GAAAxF,GAAAsF,EAIAxP,EAAAM,gBAAA4C,EAAAsM,EAAA,GACAtM,EAAAlD,EAAAM,gBAEAkP,EAAAzN,OAAA,IAEA/B,EAAAO,OAAAgD,EAAAiM,EAAA,GACAjM,GAAAiM,EAAA,GAGAxP,EAAAU,aAAA2C,EAAAmM,EAAA,GACAnM,EAAArD,EAAAU,aAEAV,EAAAU,cAAA,EAGAV,EAAAW,eAAAyC,EAAAoM,EAAA,GACApM,EAAApD,EAAAW,eAEA6O,EAAAzN,OAAA,IAEA/B,EAAAY,KAAA0C,EAAAkM,EAAA,GACAlM,GAAAkM,EAAA,KAIAL,EAAA1D,KAAAzL,GACA,gBAAAA,GAAAU,cACAkP,EAAAnE,KAAAzL,GAKAyN,EAAA0B,EAAAtQ,EAAAgL,qCACAhM,KAAA6P,oBAAAyB,EAEA1B,EAAAmC,EAAA/Q,EAAA0K,4BACA1L,KAAAkQ,mBAAA6B,GAOA/C,EAAArN,UAAAsP,aACA,SAAAe,EAAAC,EAAAC,EACAC,EAAAC,EAAAC,GAMA,GAAAL,EAAAE,IAAA,EACA,SAAAzJ,WAAA,gDACAuJ,EAAAE,GAEA,IAAAF,EAAAG,GAAA,EACA,SAAA1J,WAAA,kDACAuJ,EAAAG,GAGA,OAAAxC,GAAA2C,OAAAN,EAAAC,EAAAG,EAAAC,IAOArD,EAAArN,UAAA4Q,mBACA,WACA,OAAAtH,GAAA,EAAuBA,EAAAjL,KAAA4Q,mBAAA1M,SAAwC+G,EAAA,CAC/D,GAAA9I,GAAAnC,KAAA4Q,mBAAA3F,EAMA,IAAAA,EAAA,EAAAjL,KAAA4Q,mBAAA1M,OAAA,CACA,GAAAsO,GAAAxS,KAAA4Q,mBAAA3F,EAAA,EAEA,IAAA9I,EAAAI,gBAAAiQ,EAAAjQ,cAAA,CACAJ,EAAAsQ,oBAAAD,EAAA/P,gBAAA,CACA,WAKAN,EAAAsQ,oBAAAC,MA4BA1D,EAAArN,UAAA8C,oBACA,SAAA3D,GACA,GAAAiQ,IACAxO,cAAAvB,EAAAC,OAAAH,EAAA,QACA2B,gBAAAzB,EAAAC,OAAAH,EAAA,WAGAmK,EAAAjL,KAAAiR,aACAF,EACA/Q,KAAA4Q,mBACA,gBACA,kBACA5P,EAAAgL,oCACAhL,EAAAC,OAAAH,EAAA,OAAAF,EAAA0P,sBAGA,IAAArF,GAAA,GACA,GAAA9I,GAAAnC,KAAA4Q,mBAAA3F,EAEA,IAAA9I,EAAAI,gBAAAwO,EAAAxO,cAAA,CACA,GAAAG,GAAA1B,EAAAC,OAAAkB,EAAA,cACA,QAAAO,IACAA,EAAA1C,KAAAoB,SAAA0M,GAAApL,GACAA,EAAA1B,EAAAuL,iBAAAvM,KAAA+B,WAAAW,EAAA1C,KAAAkP,eAEA,IAAAnM,GAAA/B,EAAAC,OAAAkB,EAAA,YAIA,OAHA,QAAAY,IACAA,EAAA/C,KAAAsB,OAAAwM,GAAA/K,KAGAL,SACAJ,KAAAtB,EAAAC,OAAAkB,EAAA,qBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,uBACAY,SAKA,OACAL,OAAA,KACAJ,KAAA,KACAE,OAAA,KACAO,KAAA,OAQAiM,EAAArN,UAAAgR,wBACA,WACA,QAAA3S,KAAA4G,iBAGA5G,KAAA4G,eAAA1C,QAAAlE,KAAAoB,SAAAmM,SACAvN,KAAA4G,eAAAgM,KAAA,SAAAC,GAA+C,aAAAA,MAQ/C7D,EAAArN,UAAA6B,iBACA,SAAAqB,EAAAiO,GACA,IAAA9S,KAAA4G,eACA,WAGA,IAAAqE,GAAAjL,KAAAgR,iBAAAnM,EACA,IAAAoG,GAAA,EACA,MAAAjL,MAAA4G,eAAAqE,EAGA,IAAAmG,GAAAvM,CACA,OAAA7E,KAAA+B,aACAqP,EAAApQ,EAAA2B,SAAA3C,KAAA+B,WAAAqP,GAGA,IAAAlH,EACA,UAAAlK,KAAA+B,aACAmI,EAAAlJ,EAAAuI,SAAAvJ,KAAA+B,aAAA,CAKA,GAAAgR,GAAA3B,EAAArG,QAAA,gBACA,YAAAb,EAAAP,QACA3J,KAAAoB,SAAAiC,IAAA0P,GACA,MAAA/S,MAAA4G,eAAA5G,KAAAoB,SAAA8E,QAAA6M,GAGA,MAAA7I,EAAAH,MAAA,KAAAG,EAAAH,OACA/J,KAAAoB,SAAAiC,IAAA,IAAA+N,GACA,MAAApR,MAAA4G,eAAA5G,KAAAoB,SAAA8E,QAAA,IAAAkL,IAQA,GAAA0B,EACA,WAGA,UAAAzO,OAAA,IAAA+M,EAAA,+BA2BApC,EAAArN,UAAAqR,qBACA,SAAAlS,GACA,GAAA4B,GAAA1B,EAAAC,OAAAH,EAAA,SAEA,IADA4B,EAAA1C,KAAAgR,iBAAAtO,GACAA,EAAA,EACA,OACAJ,KAAA,KACAE,OAAA,KACA2O,WAAA,KAIA,IAAAJ,IACArO,SACAG,aAAA7B,EAAAC,OAAAH,EAAA,QACAgC,eAAA9B,EAAAC,OAAAH,EAAA,WAGAmK,EAAAjL,KAAAiR,aACAF,EACA/Q,KAAA6Q,kBACA,eACA,iBACA7P,EAAA0K,2BACA1K,EAAAC,OAAAH,EAAA,OAAAF,EAAA0P,sBAGA,IAAArF,GAAA,GACA,GAAA9I,GAAAnC,KAAA6Q,kBAAA5F,EAEA,IAAA9I,EAAAO,SAAAqO,EAAArO,OACA,OACAJ,KAAAtB,EAAAC,OAAAkB,EAAA,sBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,wBACAgP,WAAAnQ,EAAAC,OAAAkB,EAAA,6BAKA,OACAG,KAAA,KACAE,OAAA,KACA2O,WAAA,OAIAvR,EAAAoP,yBAmGAD,EAAApN,UAAAmC,OAAAC,OAAAnD,EAAAe,WACAoN,EAAApN,UAAAsR,YAAArS,EAKAmO,EAAApN,UAAAC,SAAA,EAKAkC,OAAAgM,eAAAf,EAAApN,UAAA,WACAkM,IAAA,WAEA,OADA5K,MACA6C,EAAA,EAAmBA,EAAA9F,KAAAqP,UAAAnL,OAA2B4B,IAC9C,OAAAoN,GAAA,EAAqBA,EAAAlT,KAAAqP,UAAAvJ,GAAA4J,SAAAzM,QAAAiB,OAA+CgP,IACpEjQ,EAAA2K,KAAA5N,KAAAqP,UAAAvJ,GAAA4J,SAAAzM,QAAAiQ,GAGA,OAAAjQ,MAuBA8L,EAAApN,UAAA8C,oBACA,SAAA3D,GACA,GAAAiQ,IACAxO,cAAAvB,EAAAC,OAAAH,EAAA,QACA2B,gBAAAzB,EAAAC,OAAAH,EAAA,WAKAqS,EAAAxD,EAAA2C,OAAAvB,EAAA/Q,KAAAqP,UACA,SAAA0B,EAAAqC,GACA,GAAAtH,GAAAiF,EAAAxO,cAAA6Q,EAAA3D,gBAAAlN,aACA,OAAAuJ,GACAA,EAGAiF,EAAAtO,gBACA2Q,EAAA3D,gBAAAhN,kBAEA2Q,EAAApT,KAAAqP,UAAA8D,EAEA,OAAAC,GASAA,EAAA1D,SAAAjL,qBACAnC,KAAAyO,EAAAxO,eACA6Q,EAAA3D,gBAAAlN,cAAA,GACAC,OAAAuO,EAAAtO,iBACA2Q,EAAA3D,gBAAAlN,gBAAAwO,EAAAxO,cACA6Q,EAAA3D,gBAAAhN,gBAAA,EACA,GACA4Q,KAAAvS,EAAAuS,QAdA3Q,OAAA,KACAJ,KAAA,KACAE,OAAA,KACAO,KAAA,OAmBAgM,EAAApN,UAAAgR,wBACA,WACA,MAAA3S,MAAAqP,UAAAiE,MAAA,SAAA/H,GACA,MAAAA,GAAAmE,SAAAiD,6BASA5D,EAAApN,UAAA6B,iBACA,SAAAqB,EAAAiO,GACA,OAAAhN,GAAA,EAAmBA,EAAA9F,KAAAqP,UAAAnL,OAA2B4B,IAAA,CAC9C,GAAAsN,GAAApT,KAAAqP,UAAAvJ,GAEAvC,EAAA6P,EAAA1D,SAAAlM,iBAAAqB,GAAA,EACA,IAAAtB,EACA,MAAAA,GAGA,GAAAuP,EACA,WAGA,UAAAzO,OAAA,IAAAQ,EAAA,+BAsBAkK,EAAApN,UAAAqR,qBACA,SAAAlS,GACA,OAAAgF,GAAA,EAAmBA,EAAA9F,KAAAqP,UAAAnL,OAA2B4B,IAAA,CAC9C,GAAAsN,GAAApT,KAAAqP,UAAAvJ,EAIA,IAAAsN,EAAA1D,SAAAsB,iBAAAhQ,EAAAC,OAAAH,EAAA,iBAGA,GAAAyS,GAAAH,EAAA1D,SAAAsD,qBAAAlS,EACA,IAAAyS,EAAA,CACA,GAAAC,IACAlR,KAAAiR,EAAAjR,MACA8Q,EAAA3D,gBAAAlN,cAAA,GACAC,OAAA+Q,EAAA/Q,QACA4Q,EAAA3D,gBAAAlN,gBAAAgR,EAAAjR,KACA8Q,EAAA3D,gBAAAhN,gBAAA,EACA,GAEA,OAAA+Q,KAIA,OACAlR,KAAA,KACAE,OAAA,OASAuM,EAAApN,UAAAsO,eACA,SAAArI,EAAAvB,GACArG,KAAA6P,uBACA7P,KAAAkQ,qBACA,QAAApK,GAAA,EAAmBA,EAAA9F,KAAAqP,UAAAnL,OAA2B4B,IAG9C,OAFAsN,GAAApT,KAAAqP,UAAAvJ,GACA2N,EAAAL,EAAA1D,SAAAkB,mBACAsC,EAAA,EAAqBA,EAAAO,EAAAvP,OAA4BgP,IAAA,CACjD,GAAA/Q,GAAAsR,EAAAP,GAEAxQ,EAAA0Q,EAAA1D,SAAAtO,SAAA0M,GAAA3L,EAAAO,OACAA,GAAA1B,EAAAuL,iBAAA6G,EAAA1D,SAAA3N,WAAAW,EAAA1C,KAAAkP,eACAlP,KAAAoB,SAAAkC,IAAAZ,GACAA,EAAA1C,KAAAoB,SAAA8E,QAAAxD,EAEA,IAAAK,GAAA,IACAZ,GAAAY,OACAA,EAAAqQ,EAAA1D,SAAApO,OAAAwM,GAAA3L,EAAAY,MACA/C,KAAAsB,OAAAgC,IAAAP,GACAA,EAAA/C,KAAAsB,OAAA4E,QAAAnD,GAOA,IAAA2Q,IACAhR,SACAH,cAAAJ,EAAAI,eACA6Q,EAAA3D,gBAAAlN,cAAA,GACAE,gBAAAN,EAAAM,iBACA2Q,EAAA3D,gBAAAlN,gBAAAJ,EAAAI,cACA6Q,EAAA3D,gBAAAhN,gBAAA,EACA,GACAI,aAAAV,EAAAU,aACAC,eAAAX,EAAAW,eACAC,OAGA/C,MAAA6P,oBAAAjC,KAAA8F,GACA,gBAAAA,GAAA7Q,cACA7C,KAAAkQ,mBAAAtC,KAAA8F,GAKA9D,EAAA5P,KAAA6P,oBAAA7O,EAAAgL,qCACA4D,EAAA5P,KAAAkQ,mBAAAlP,EAAA0K,6BAGA9L,EAAAmP,4BTu5CM,SAAUlP,EAAQD,GUx/ExB,QAAA+T,GAAAC,EAAAC,EAAA7B,EAAA8B,EAAAC,EAAA1B,GAUA,GAAA2B,GAAAC,KAAAC,OAAAL,EAAAD,GAAA,GAAAA,EACA9H,EAAAiI,EAAA/B,EAAA8B,EAAAE,IAAA,EACA,YAAAlI,EAEAkI,EAEAlI,EAAA,EAEA+H,EAAAG,EAAA,EAEAL,EAAAK,EAAAH,EAAA7B,EAAA8B,EAAAC,EAAA1B,GAKAA,GAAAzS,EAAA2Q,kBACAsD,EAAAC,EAAA5P,OAAA2P,GAAA,EAEAG,EAKAA,EAAAJ,EAAA,EAEAD,EAAAC,EAAAI,EAAAhC,EAAA8B,EAAAC,EAAA1B,GAIAA,GAAAzS,EAAA2Q,kBACAyD,EAEAJ,EAAA,KAAAA,EA1DAhU,EAAA0Q,qBAAA,EACA1Q,EAAA2Q,kBAAA,EAgFA3Q,EAAA0S,OAAA,SAAAN,EAAA8B,EAAAC,EAAA1B,GACA,OAAAyB,EAAA5P,OACA,QAGA,IAAA+G,GAAA0I,GAAA,EAAAG,EAAA5P,OAAA8N,EAAA8B,EACAC,EAAA1B,GAAAzS,EAAA0Q,qBACA,IAAArF,EAAA,EACA,QAMA,MAAAA,EAAA,MACA,IAAA8I,EAAAD,EAAA7I,GAAA6I,EAAA7I,EAAA,UAGAA,CAGA,OAAAA,KVuhFM,SAAUpL,EAAQD,GWzmFxB,QAAAuU,GAAAC,EAAAC,EAAAC,GACA,GAAAxC,GAAAsC,EAAAC,EACAD,GAAAC,GAAAD,EAAAE,GACAF,EAAAE,GAAAxC,EAWA,QAAAyC,GAAAC,EAAAC,GACA,MAAAR,MAAAS,MAAAF,EAAAP,KAAAU,UAAAF,EAAAD,IAeA,QAAAI,GAAAR,EAAAS,EAAAnU,EAAAoU,GAKA,GAAApU,EAAAoU,EAAA,CAYA,GAAAC,GAAAR,EAAA7T,EAAAoU,GACAhP,EAAApF,EAAA,CAEAyT,GAAAC,EAAAW,EAAAD,EASA,QARAE,GAAAZ,EAAAU,GAQA5B,EAAAxS,EAAmBwS,EAAA4B,EAAO5B,IAC1B2B,EAAAT,EAAAlB,GAAA8B,IAAA,IACAlP,GAAA,EACAqO,EAAAC,EAAAtO,EAAAoN,GAIAiB,GAAAC,EAAAtO,EAAA,EAAAoN,EACA,IAAA+B,GAAAnP,EAAA,CAIA8O,GAAAR,EAAAS,EAAAnU,EAAAuU,EAAA,GACAL,EAAAR,EAAAS,EAAAI,EAAA,EAAAH,IAYAlV,EAAAgQ,UAAA,SAAAwE,EAAAS,GACAD,EAAAR,EAAAS,EAAA,EAAAT,EAAAlQ,OAAA,KX4oFM,SAAUrE,EAAQD,EAASM,GY1tFjC,QAAAW,GAAAqU,EAAAC,EAAAtQ,EAAAuQ,EAAAtQ,GACA9E,KAAAqV,YACArV,KAAAsV,kBACAtV,KAAAsC,KAAA,MAAA4S,EAAA,KAAAA,EACAlV,KAAAwC,OAAA,MAAA2S,EAAA,KAAAA,EACAnV,KAAA0C,OAAA,MAAAmC,EAAA,KAAAA,EACA7E,KAAA+C,KAAA,MAAA+B,EAAA,KAAAA,EACA9E,KAAAuV,IAAA,EACA,MAAAH,GAAApV,KAAAsD,IAAA8R,GAnCA,GAAAzU,GAAAT,EAAA,GAAAS,mBACAK,EAAAd,EAAA,GAIAsV,EAAA,UAGAC,EAAA,GAKAF,EAAA,oBAiCA1U,GAAA6U,wBACA,SAAAC,EAAA7T,EAAA8T,GA+FA,QAAAC,GAAA1T,EAAA2T,GACA,UAAA3T,GAAA+O,SAAA/O,EAAAO,OACAqT,EAAAzS,IAAAwS,OACO,CACP,GAAApT,GAAAkT,EACA5U,EAAA0D,KAAAkR,EAAAzT,EAAAO,QACAP,EAAAO,MACAqT,GAAAzS,IAAA,GAAAzC,GAAAsB,EAAAU,aACAV,EAAAW,eACAJ,EACAoT,EACA3T,EAAAY,QAvGA,GAAAgT,GAAA,GAAAlV,GAMAmV,EAAAL,EAAApN,MAAAiN,GACAS,EAAA,EACAC,EAAA,WAMA,QAAAC,KACA,MAAAF,GAAAD,EAAA9R,OACA8R,EAAAC,KAAA/E,OAPA,GAAAkF,GAAAD,IAEAE,EAAAF,KAAA,EACA,OAAAC,GAAAC,GASAC,EAAA,EAAA7D,EAAA,EAKA8D,EAAA,IAgEA,OA9DAzU,GAAAI,YAAA,SAAAC,GACA,UAAAoU,EAAA,CAGA,KAAAD,EAAAnU,EAAAI,eAMS,CAIT,GAAAiU,GAAAR,EAAAC,IAAA,GACAH,EAAAU,EAAAnL,OAAA,EAAAlJ,EAAAM,gBACAgQ,EAOA,OANAuD,GAAAC,GAAAO,EAAAnL,OAAAlJ,EAAAM,gBACAgQ,GACAA,EAAAtQ,EAAAM,gBACAoT,EAAAU,EAAAT,QAEAS,EAAApU,GAhBA0T,EAAAU,EAAAL,KACAI,IACA7D,EAAA,EAqBA,KAAA6D,EAAAnU,EAAAI,eACAwT,EAAAzS,IAAA4S,KACAI,GAEA,IAAA7D,EAAAtQ,EAAAM,gBAAA,CACA,GAAA+T,GAAAR,EAAAC,IAAA,EACAF,GAAAzS,IAAAkT,EAAAnL,OAAA,EAAAlJ,EAAAM,kBACAuT,EAAAC,GAAAO,EAAAnL,OAAAlJ,EAAAM,iBACAgQ,EAAAtQ,EAAAM,gBAEA8T,EAAApU,GACKnC,MAELiW,EAAAD,EAAA9R,SACAqS,GAEAV,EAAAU,EAAAL,KAGAH,EAAAzS,IAAA0S,EAAAvL,OAAAwL,GAAAvR,KAAA,MAIA5C,EAAAmB,QAAAC,QAAA,SAAAC,GACA,GAAAI,GAAAzB,EAAA0B,iBAAAL,EACA,OAAAI,IACA,MAAAqS,IACAzS,EAAAnC,EAAA0D,KAAAkR,EAAAzS,IAEA4S,EAAAtS,iBAAAN,EAAAI,MAIAwS,GAwBAlV,EAAAc,UAAA2B,IAAA,SAAAmT,GACA,GAAArL,MAAAsL,QAAAD,GACAA,EAAAvT,QAAA,SAAAyT,GACA3W,KAAAsD,IAAAqT,IACK3W,UAEL,KAAAyW,EAAAlB,IAAA,gBAAAkB,GAMA,SAAAhO,WACA,8EAAAgO,EANAA,IACAzW,KAAAqV,SAAAzH,KAAA6I,GAQA,MAAAzW,OASAa,EAAAc,UAAAiV,QAAA,SAAAH,GACA,GAAArL,MAAAsL,QAAAD,GACA,OAAA3Q,GAAA2Q,EAAAvS,OAAA,EAAiC4B,GAAA,EAAQA,IACzC9F,KAAA4W,QAAAH,EAAA3Q,QAGA,KAAA2Q,EAAAlB,IAAA,gBAAAkB,GAIA,SAAAhO,WACA,8EAAAgO,EAJAzW,MAAAqV,SAAAwB,QAAAJ,GAOA,MAAAzW,OAUAa,EAAAc,UAAAmV,KAAA,SAAAC,GAEA,OADAJ,GACA7Q,EAAA,EAAAC,EAAA/F,KAAAqV,SAAAnR,OAA6C4B,EAAAC,EAASD,IACtD6Q,EAAA3W,KAAAqV,SAAAvP,GACA6Q,EAAApB,GACAoB,EAAAG,KAAAC,GAGA,KAAAJ,GACAI,EAAAJ,GAAoBjU,OAAA1C,KAAA0C,OACpBJ,KAAAtC,KAAAsC,KACAE,OAAAxC,KAAAwC,OACAO,KAAA/C,KAAA+C,QAYAlC,EAAAc,UAAA+C,KAAA,SAAAsS,GACA,GAAAC,GACAnR,EACAC,EAAA/F,KAAAqV,SAAAnR,MACA,IAAA6B,EAAA,GAEA,IADAkR,KACAnR,EAAA,EAAeA,EAAAC,EAAA,EAAWD,IAC1BmR,EAAArJ,KAAA5N,KAAAqV,SAAAvP,IACAmR,EAAArJ,KAAAoJ,EAEAC,GAAArJ,KAAA5N,KAAAqV,SAAAvP,IACA9F,KAAAqV,SAAA4B,EAEA,MAAAjX,OAUAa,EAAAc,UAAAuV,aAAA,SAAAC,EAAAC,GACA,GAAAC,GAAArX,KAAAqV,SAAArV,KAAAqV,SAAAnR,OAAA,EAUA,OATAmT,GAAA9B,GACA8B,EAAAH,aAAAC,EAAAC,GAEA,gBAAAC,GACArX,KAAAqV,SAAArV,KAAAqV,SAAAnR,OAAA,GAAAmT,EAAAtM,QAAAoM,EAAAC,GAGApX,KAAAqV,SAAAzH,KAAA,GAAA7C,QAAAoM,EAAAC,IAEApX,MAUAa,EAAAc,UAAA8B,iBACA,SAAAG,EAAAC,GACA7D,KAAAsV,eAAAtU,EAAAgD,YAAAJ,IAAAC,GASAhD,EAAAc,UAAA2V,mBACA,SAAAP,GACA,OAAAjR,GAAA,EAAAC,EAAA/F,KAAAqV,SAAAnR,OAA+C4B,EAAAC,EAASD,IACxD9F,KAAAqV,SAAAvP,GAAAyP,IACAvV,KAAAqV,SAAAvP,GAAAwR,mBAAAP,EAKA,QADA9T,GAAAa,OAAAG,KAAAjE,KAAAsV,gBACAxP,EAAA,EAAAC,EAAA9C,EAAAiB,OAAyC4B,EAAAC,EAASD,IAClDiR,EAAA/V,EAAAyK,cAAAxI,EAAA6C,IAAA9F,KAAAsV,eAAArS,EAAA6C,MAQAjF,EAAAc,UAAAkF,SAAA,WACA,GAAAwF,GAAA,EAIA,OAHArM,MAAA8W,KAAA,SAAAH,GACAtK,GAAAsK,IAEAtK,GAOAxL,EAAAc,UAAA4V,sBAAA,SAAAzW,GACA,GAAAuB,IACAyT,KAAA,GACAxT,KAAA,EACAE,OAAA,GAEA8D,EAAA,GAAA3F,GAAAG,GACA0W,GAAA,EACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,IAqEA,OApEA5X,MAAA8W,KAAA,SAAAH,EAAA/T,GACAP,EAAAyT,MAAAa,EACA,OAAA/T,EAAAF,QACA,OAAAE,EAAAN,MACA,OAAAM,EAAAJ,QACAiV,IAAA7U,EAAAF,QACAgV,IAAA9U,EAAAN,MACAqV,IAAA/U,EAAAJ,QACAoV,IAAAhV,EAAAG,MACAuD,EAAAtD,YACAN,OAAAE,EAAAF,OACAE,UACAN,KAAAM,EAAAN,KACAE,OAAAI,EAAAJ,QAEAH,WACAC,KAAAD,EAAAC,KACAE,OAAAH,EAAAG,QAEAO,KAAAH,EAAAG,OAGA0U,EAAA7U,EAAAF,OACAgV,EAAA9U,EAAAN,KACAqV,EAAA/U,EAAAJ,OACAoV,EAAAhV,EAAAG,KACAyU,GAAA,GACKA,IACLlR,EAAAtD,YACAX,WACAC,KAAAD,EAAAC,KACAE,OAAAH,EAAAG,UAGAiV,EAAA,KACAD,GAAA,EAEA,QAAA7J,GAAA,EAAAzJ,EAAAyS,EAAAzS,OAA4CyJ,EAAAzJ,EAAcyJ,IAC1DgJ,EAAAzO,WAAAyF,KAAA8H,GACApT,EAAAC,OACAD,EAAAG,OAAA,EAEAmL,EAAA,IAAAzJ,GACAuT,EAAA,KACAD,GAAA,GACSA,GACTlR,EAAAtD,YACAN,OAAAE,EAAAF,OACAE,UACAN,KAAAM,EAAAN,KACAE,OAAAI,EAAAJ,QAEAH,WACAC,KAAAD,EAAAC,KACAE,OAAAH,EAAAG,QAEAO,KAAAH,EAAAG,QAIAV,EAAAG,WAIAxC,KAAAsX,mBAAA,SAAAnU,EAAA0U,GACAvR,EAAA7C,iBAAAN,EAAA0U,MAGU/B,KAAAzT,EAAAyT,KAAAxP,QAGV1G,EAAAiB","file":"source-map.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"sourceMap\"] = factory();\n\telse\n\t\troot[\"sourceMap\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"sourceMap\"] = factory();\n\telse\n\t\troot[\"sourceMap\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*\n\t * Copyright 2009-2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE.txt or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\texports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;\n\texports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer;\n\texports.SourceNode = __webpack_require__(10).SourceNode;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar base64VLQ = __webpack_require__(2);\n\tvar util = __webpack_require__(4);\n\tvar ArraySet = __webpack_require__(5).ArraySet;\n\tvar MappingList = __webpack_require__(6).MappingList;\n\t\n\t/**\n\t * An instance of the SourceMapGenerator represents a source map which is\n\t * being built incrementally. You may pass an object with the following\n\t * properties:\n\t *\n\t * - file: The filename of the generated source.\n\t * - sourceRoot: A root for all relative URLs in this source map.\n\t */\n\tfunction SourceMapGenerator(aArgs) {\n\t if (!aArgs) {\n\t aArgs = {};\n\t }\n\t this._file = util.getArg(aArgs, 'file', null);\n\t this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n\t this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n\t this._sources = new ArraySet();\n\t this._names = new ArraySet();\n\t this._mappings = new MappingList();\n\t this._sourcesContents = null;\n\t}\n\t\n\tSourceMapGenerator.prototype._version = 3;\n\t\n\t/**\n\t * Creates a new SourceMapGenerator based on a SourceMapConsumer\n\t *\n\t * @param aSourceMapConsumer The SourceMap.\n\t */\n\tSourceMapGenerator.fromSourceMap =\n\t function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n\t var sourceRoot = aSourceMapConsumer.sourceRoot;\n\t var generator = new SourceMapGenerator({\n\t file: aSourceMapConsumer.file,\n\t sourceRoot: sourceRoot\n\t });\n\t aSourceMapConsumer.eachMapping(function (mapping) {\n\t var newMapping = {\n\t generated: {\n\t line: mapping.generatedLine,\n\t column: mapping.generatedColumn\n\t }\n\t };\n\t\n\t if (mapping.source != null) {\n\t newMapping.source = mapping.source;\n\t if (sourceRoot != null) {\n\t newMapping.source = util.relative(sourceRoot, newMapping.source);\n\t }\n\t\n\t newMapping.original = {\n\t line: mapping.originalLine,\n\t column: mapping.originalColumn\n\t };\n\t\n\t if (mapping.name != null) {\n\t newMapping.name = mapping.name;\n\t }\n\t }\n\t\n\t generator.addMapping(newMapping);\n\t });\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var sourceRelative = sourceFile;\n\t if (sourceRoot !== null) {\n\t sourceRelative = util.relative(sourceRoot, sourceFile);\n\t }\n\t\n\t if (!generator._sources.has(sourceRelative)) {\n\t generator._sources.add(sourceRelative);\n\t }\n\t\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t generator.setSourceContent(sourceFile, content);\n\t }\n\t });\n\t return generator;\n\t };\n\t\n\t/**\n\t * Add a single mapping from original source line and column to the generated\n\t * source's line and column for this source map being created. The mapping\n\t * object should have the following properties:\n\t *\n\t * - generated: An object with the generated line and column positions.\n\t * - original: An object with the original line and column positions.\n\t * - source: The original source file (relative to the sourceRoot).\n\t * - name: An optional original token name for this mapping.\n\t */\n\tSourceMapGenerator.prototype.addMapping =\n\t function SourceMapGenerator_addMapping(aArgs) {\n\t var generated = util.getArg(aArgs, 'generated');\n\t var original = util.getArg(aArgs, 'original', null);\n\t var source = util.getArg(aArgs, 'source', null);\n\t var name = util.getArg(aArgs, 'name', null);\n\t\n\t if (!this._skipValidation) {\n\t this._validateMapping(generated, original, source, name);\n\t }\n\t\n\t if (source != null) {\n\t source = String(source);\n\t if (!this._sources.has(source)) {\n\t this._sources.add(source);\n\t }\n\t }\n\t\n\t if (name != null) {\n\t name = String(name);\n\t if (!this._names.has(name)) {\n\t this._names.add(name);\n\t }\n\t }\n\t\n\t this._mappings.add({\n\t generatedLine: generated.line,\n\t generatedColumn: generated.column,\n\t originalLine: original != null && original.line,\n\t originalColumn: original != null && original.column,\n\t source: source,\n\t name: name\n\t });\n\t };\n\t\n\t/**\n\t * Set the source content for a source file.\n\t */\n\tSourceMapGenerator.prototype.setSourceContent =\n\t function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n\t var source = aSourceFile;\n\t if (this._sourceRoot != null) {\n\t source = util.relative(this._sourceRoot, source);\n\t }\n\t\n\t if (aSourceContent != null) {\n\t // Add the source content to the _sourcesContents map.\n\t // Create a new _sourcesContents map if the property is null.\n\t if (!this._sourcesContents) {\n\t this._sourcesContents = Object.create(null);\n\t }\n\t this._sourcesContents[util.toSetString(source)] = aSourceContent;\n\t } else if (this._sourcesContents) {\n\t // Remove the source file from the _sourcesContents map.\n\t // If the _sourcesContents map is empty, set the property to null.\n\t delete this._sourcesContents[util.toSetString(source)];\n\t if (Object.keys(this._sourcesContents).length === 0) {\n\t this._sourcesContents = null;\n\t }\n\t }\n\t };\n\t\n\t/**\n\t * Applies the mappings of a sub-source-map for a specific source file to the\n\t * source map being generated. Each mapping to the supplied source file is\n\t * rewritten using the supplied source map. Note: The resolution for the\n\t * resulting mappings is the minimium of this map and the supplied map.\n\t *\n\t * @param aSourceMapConsumer The source map to be applied.\n\t * @param aSourceFile Optional. The filename of the source file.\n\t * If omitted, SourceMapConsumer's file property will be used.\n\t * @param aSourceMapPath Optional. The dirname of the path to the source map\n\t * to be applied. If relative, it is relative to the SourceMapConsumer.\n\t * This parameter is needed when the two source maps aren't in the same\n\t * directory, and the source map to be applied contains relative source\n\t * paths. If so, those relative source paths need to be rewritten\n\t * relative to the SourceMapGenerator.\n\t */\n\tSourceMapGenerator.prototype.applySourceMap =\n\t function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n\t var sourceFile = aSourceFile;\n\t // If aSourceFile is omitted, we will use the file property of the SourceMap\n\t if (aSourceFile == null) {\n\t if (aSourceMapConsumer.file == null) {\n\t throw new Error(\n\t 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n\t 'or the source map\\'s \"file\" property. Both were omitted.'\n\t );\n\t }\n\t sourceFile = aSourceMapConsumer.file;\n\t }\n\t var sourceRoot = this._sourceRoot;\n\t // Make \"sourceFile\" relative if an absolute Url is passed.\n\t if (sourceRoot != null) {\n\t sourceFile = util.relative(sourceRoot, sourceFile);\n\t }\n\t // Applying the SourceMap can add and remove items from the sources and\n\t // the names array.\n\t var newSources = new ArraySet();\n\t var newNames = new ArraySet();\n\t\n\t // Find mappings for the \"sourceFile\"\n\t this._mappings.unsortedForEach(function (mapping) {\n\t if (mapping.source === sourceFile && mapping.originalLine != null) {\n\t // Check if it can be mapped by the source map, then update the mapping.\n\t var original = aSourceMapConsumer.originalPositionFor({\n\t line: mapping.originalLine,\n\t column: mapping.originalColumn\n\t });\n\t if (original.source != null) {\n\t // Copy mapping\n\t mapping.source = original.source;\n\t if (aSourceMapPath != null) {\n\t mapping.source = util.join(aSourceMapPath, mapping.source)\n\t }\n\t if (sourceRoot != null) {\n\t mapping.source = util.relative(sourceRoot, mapping.source);\n\t }\n\t mapping.originalLine = original.line;\n\t mapping.originalColumn = original.column;\n\t if (original.name != null) {\n\t mapping.name = original.name;\n\t }\n\t }\n\t }\n\t\n\t var source = mapping.source;\n\t if (source != null && !newSources.has(source)) {\n\t newSources.add(source);\n\t }\n\t\n\t var name = mapping.name;\n\t if (name != null && !newNames.has(name)) {\n\t newNames.add(name);\n\t }\n\t\n\t }, this);\n\t this._sources = newSources;\n\t this._names = newNames;\n\t\n\t // Copy sourcesContents of applied map.\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t if (aSourceMapPath != null) {\n\t sourceFile = util.join(aSourceMapPath, sourceFile);\n\t }\n\t if (sourceRoot != null) {\n\t sourceFile = util.relative(sourceRoot, sourceFile);\n\t }\n\t this.setSourceContent(sourceFile, content);\n\t }\n\t }, this);\n\t };\n\t\n\t/**\n\t * A mapping can have one of the three levels of data:\n\t *\n\t * 1. Just the generated position.\n\t * 2. The Generated position, original position, and original source.\n\t * 3. Generated and original position, original source, as well as a name\n\t * token.\n\t *\n\t * To maintain consistency, we validate that any new mapping being added falls\n\t * in to one of these categories.\n\t */\n\tSourceMapGenerator.prototype._validateMapping =\n\t function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n\t aName) {\n\t // When aOriginal is truthy but has empty values for .line and .column,\n\t // it is most likely a programmer error. In this case we throw a very\n\t // specific error message to try to guide them the right way.\n\t // For example: https://github.com/Polymer/polymer-bundler/pull/519\n\t if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n\t throw new Error(\n\t 'original.line and original.column are not numbers -- you probably meant to omit ' +\n\t 'the original mapping entirely and only map the generated position. If so, pass ' +\n\t 'null for the original mapping instead of an object with empty or null values.'\n\t );\n\t }\n\t\n\t if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n\t && aGenerated.line > 0 && aGenerated.column >= 0\n\t && !aOriginal && !aSource && !aName) {\n\t // Case 1.\n\t return;\n\t }\n\t else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n\t && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n\t && aGenerated.line > 0 && aGenerated.column >= 0\n\t && aOriginal.line > 0 && aOriginal.column >= 0\n\t && aSource) {\n\t // Cases 2 and 3.\n\t return;\n\t }\n\t else {\n\t throw new Error('Invalid mapping: ' + JSON.stringify({\n\t generated: aGenerated,\n\t source: aSource,\n\t original: aOriginal,\n\t name: aName\n\t }));\n\t }\n\t };\n\t\n\t/**\n\t * Serialize the accumulated mappings in to the stream of base 64 VLQs\n\t * specified by the source map format.\n\t */\n\tSourceMapGenerator.prototype._serializeMappings =\n\t function SourceMapGenerator_serializeMappings() {\n\t var previousGeneratedColumn = 0;\n\t var previousGeneratedLine = 1;\n\t var previousOriginalColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousName = 0;\n\t var previousSource = 0;\n\t var result = '';\n\t var next;\n\t var mapping;\n\t var nameIdx;\n\t var sourceIdx;\n\t\n\t var mappings = this._mappings.toArray();\n\t for (var i = 0, len = mappings.length; i < len; i++) {\n\t mapping = mappings[i];\n\t next = ''\n\t\n\t if (mapping.generatedLine !== previousGeneratedLine) {\n\t previousGeneratedColumn = 0;\n\t while (mapping.generatedLine !== previousGeneratedLine) {\n\t next += ';';\n\t previousGeneratedLine++;\n\t }\n\t }\n\t else {\n\t if (i > 0) {\n\t if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n\t continue;\n\t }\n\t next += ',';\n\t }\n\t }\n\t\n\t next += base64VLQ.encode(mapping.generatedColumn\n\t - previousGeneratedColumn);\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (mapping.source != null) {\n\t sourceIdx = this._sources.indexOf(mapping.source);\n\t next += base64VLQ.encode(sourceIdx - previousSource);\n\t previousSource = sourceIdx;\n\t\n\t // lines are stored 0-based in SourceMap spec version 3\n\t next += base64VLQ.encode(mapping.originalLine - 1\n\t - previousOriginalLine);\n\t previousOriginalLine = mapping.originalLine - 1;\n\t\n\t next += base64VLQ.encode(mapping.originalColumn\n\t - previousOriginalColumn);\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (mapping.name != null) {\n\t nameIdx = this._names.indexOf(mapping.name);\n\t next += base64VLQ.encode(nameIdx - previousName);\n\t previousName = nameIdx;\n\t }\n\t }\n\t\n\t result += next;\n\t }\n\t\n\t return result;\n\t };\n\t\n\tSourceMapGenerator.prototype._generateSourcesContent =\n\t function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n\t return aSources.map(function (source) {\n\t if (!this._sourcesContents) {\n\t return null;\n\t }\n\t if (aSourceRoot != null) {\n\t source = util.relative(aSourceRoot, source);\n\t }\n\t var key = util.toSetString(source);\n\t return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n\t ? this._sourcesContents[key]\n\t : null;\n\t }, this);\n\t };\n\t\n\t/**\n\t * Externalize the source map.\n\t */\n\tSourceMapGenerator.prototype.toJSON =\n\t function SourceMapGenerator_toJSON() {\n\t var map = {\n\t version: this._version,\n\t sources: this._sources.toArray(),\n\t names: this._names.toArray(),\n\t mappings: this._serializeMappings()\n\t };\n\t if (this._file != null) {\n\t map.file = this._file;\n\t }\n\t if (this._sourceRoot != null) {\n\t map.sourceRoot = this._sourceRoot;\n\t }\n\t if (this._sourcesContents) {\n\t map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n\t }\n\t\n\t return map;\n\t };\n\t\n\t/**\n\t * Render the source map being generated to a string.\n\t */\n\tSourceMapGenerator.prototype.toString =\n\t function SourceMapGenerator_toString() {\n\t return JSON.stringify(this.toJSON());\n\t };\n\t\n\texports.SourceMapGenerator = SourceMapGenerator;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t *\n\t * Based on the Base 64 VLQ implementation in Closure Compiler:\n\t * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n\t *\n\t * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n\t * Redistribution and use in source and binary forms, with or without\n\t * modification, are permitted provided that the following conditions are\n\t * met:\n\t *\n\t * * Redistributions of source code must retain the above copyright\n\t * notice, this list of conditions and the following disclaimer.\n\t * * Redistributions in binary form must reproduce the above\n\t * copyright notice, this list of conditions and the following\n\t * disclaimer in the documentation and/or other materials provided\n\t * with the distribution.\n\t * * Neither the name of Google Inc. nor the names of its\n\t * contributors may be used to endorse or promote products derived\n\t * from this software without specific prior written permission.\n\t *\n\t * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\t * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n\t * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n\t * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n\t * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n\t * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n\t * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\t * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\t * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\t * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t */\n\t\n\tvar base64 = __webpack_require__(3);\n\t\n\t// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n\t// length quantities we use in the source map spec, the first bit is the sign,\n\t// the next four bits are the actual value, and the 6th bit is the\n\t// continuation bit. The continuation bit tells us whether there are more\n\t// digits in this value following this digit.\n\t//\n\t// Continuation\n\t// | Sign\n\t// | |\n\t// V V\n\t// 101011\n\t\n\tvar VLQ_BASE_SHIFT = 5;\n\t\n\t// binary: 100000\n\tvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\t\n\t// binary: 011111\n\tvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\t\n\t// binary: 100000\n\tvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\t\n\t/**\n\t * Converts from a two-complement value to a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n\t * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n\t */\n\tfunction toVLQSigned(aValue) {\n\t return aValue < 0\n\t ? ((-aValue) << 1) + 1\n\t : (aValue << 1) + 0;\n\t}\n\t\n\t/**\n\t * Converts to a two-complement value from a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n\t * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n\t */\n\tfunction fromVLQSigned(aValue) {\n\t var isNegative = (aValue & 1) === 1;\n\t var shifted = aValue >> 1;\n\t return isNegative\n\t ? -shifted\n\t : shifted;\n\t}\n\t\n\t/**\n\t * Returns the base 64 VLQ encoded value.\n\t */\n\texports.encode = function base64VLQ_encode(aValue) {\n\t var encoded = \"\";\n\t var digit;\n\t\n\t var vlq = toVLQSigned(aValue);\n\t\n\t do {\n\t digit = vlq & VLQ_BASE_MASK;\n\t vlq >>>= VLQ_BASE_SHIFT;\n\t if (vlq > 0) {\n\t // There are still more digits in this value, so we must make sure the\n\t // continuation bit is marked.\n\t digit |= VLQ_CONTINUATION_BIT;\n\t }\n\t encoded += base64.encode(digit);\n\t } while (vlq > 0);\n\t\n\t return encoded;\n\t};\n\t\n\t/**\n\t * Decodes the next base 64 VLQ value from the given string and returns the\n\t * value and the rest of the string via the out parameter.\n\t */\n\texports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n\t var strLen = aStr.length;\n\t var result = 0;\n\t var shift = 0;\n\t var continuation, digit;\n\t\n\t do {\n\t if (aIndex >= strLen) {\n\t throw new Error(\"Expected more digits in base 64 VLQ value.\");\n\t }\n\t\n\t digit = base64.decode(aStr.charCodeAt(aIndex++));\n\t if (digit === -1) {\n\t throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n\t }\n\t\n\t continuation = !!(digit & VLQ_CONTINUATION_BIT);\n\t digit &= VLQ_BASE_MASK;\n\t result = result + (digit << shift);\n\t shift += VLQ_BASE_SHIFT;\n\t } while (continuation);\n\t\n\t aOutParam.value = fromVLQSigned(result);\n\t aOutParam.rest = aIndex;\n\t};\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\t\n\t/**\n\t * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n\t */\n\texports.encode = function (number) {\n\t if (0 <= number && number < intToCharMap.length) {\n\t return intToCharMap[number];\n\t }\n\t throw new TypeError(\"Must be between 0 and 63: \" + number);\n\t};\n\t\n\t/**\n\t * Decode a single base 64 character code digit to an integer. Returns -1 on\n\t * failure.\n\t */\n\texports.decode = function (charCode) {\n\t var bigA = 65; // 'A'\n\t var bigZ = 90; // 'Z'\n\t\n\t var littleA = 97; // 'a'\n\t var littleZ = 122; // 'z'\n\t\n\t var zero = 48; // '0'\n\t var nine = 57; // '9'\n\t\n\t var plus = 43; // '+'\n\t var slash = 47; // '/'\n\t\n\t var littleOffset = 26;\n\t var numberOffset = 52;\n\t\n\t // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n\t if (bigA <= charCode && charCode <= bigZ) {\n\t return (charCode - bigA);\n\t }\n\t\n\t // 26 - 51: abcdefghijklmnopqrstuvwxyz\n\t if (littleA <= charCode && charCode <= littleZ) {\n\t return (charCode - littleA + littleOffset);\n\t }\n\t\n\t // 52 - 61: 0123456789\n\t if (zero <= charCode && charCode <= nine) {\n\t return (charCode - zero + numberOffset);\n\t }\n\t\n\t // 62: +\n\t if (charCode == plus) {\n\t return 62;\n\t }\n\t\n\t // 63: /\n\t if (charCode == slash) {\n\t return 63;\n\t }\n\t\n\t // Invalid base64 digit.\n\t return -1;\n\t};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\t/**\n\t * This is a helper function for getting values from parameter/options\n\t * objects.\n\t *\n\t * @param args The object we are extracting values from\n\t * @param name The name of the property we are getting.\n\t * @param defaultValue An optional value to return if the property is missing\n\t * from the object. If this is not specified and the property is missing, an\n\t * error will be thrown.\n\t */\n\tfunction getArg(aArgs, aName, aDefaultValue) {\n\t if (aName in aArgs) {\n\t return aArgs[aName];\n\t } else if (arguments.length === 3) {\n\t return aDefaultValue;\n\t } else {\n\t throw new Error('\"' + aName + '\" is a required argument.');\n\t }\n\t}\n\texports.getArg = getArg;\n\t\n\tvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\n\tvar dataUrlRegexp = /^data:.+\\,.+$/;\n\t\n\tfunction urlParse(aUrl) {\n\t var match = aUrl.match(urlRegexp);\n\t if (!match) {\n\t return null;\n\t }\n\t return {\n\t scheme: match[1],\n\t auth: match[2],\n\t host: match[3],\n\t port: match[4],\n\t path: match[5]\n\t };\n\t}\n\texports.urlParse = urlParse;\n\t\n\tfunction urlGenerate(aParsedUrl) {\n\t var url = '';\n\t if (aParsedUrl.scheme) {\n\t url += aParsedUrl.scheme + ':';\n\t }\n\t url += '//';\n\t if (aParsedUrl.auth) {\n\t url += aParsedUrl.auth + '@';\n\t }\n\t if (aParsedUrl.host) {\n\t url += aParsedUrl.host;\n\t }\n\t if (aParsedUrl.port) {\n\t url += \":\" + aParsedUrl.port\n\t }\n\t if (aParsedUrl.path) {\n\t url += aParsedUrl.path;\n\t }\n\t return url;\n\t}\n\texports.urlGenerate = urlGenerate;\n\t\n\t/**\n\t * Normalizes a path, or the path portion of a URL:\n\t *\n\t * - Replaces consecutive slashes with one slash.\n\t * - Removes unnecessary '.' parts.\n\t * - Removes unnecessary '<dir>/..' parts.\n\t *\n\t * Based on code in the Node.js 'path' core module.\n\t *\n\t * @param aPath The path or url to normalize.\n\t */\n\tfunction normalize(aPath) {\n\t var path = aPath;\n\t var url = urlParse(aPath);\n\t if (url) {\n\t if (!url.path) {\n\t return aPath;\n\t }\n\t path = url.path;\n\t }\n\t var isAbsolute = exports.isAbsolute(path);\n\t\n\t var parts = path.split(/\\/+/);\n\t for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n\t part = parts[i];\n\t if (part === '.') {\n\t parts.splice(i, 1);\n\t } else if (part === '..') {\n\t up++;\n\t } else if (up > 0) {\n\t if (part === '') {\n\t // The first part is blank if the path is absolute. Trying to go\n\t // above the root is a no-op. Therefore we can remove all '..' parts\n\t // directly after the root.\n\t parts.splice(i + 1, up);\n\t up = 0;\n\t } else {\n\t parts.splice(i, 2);\n\t up--;\n\t }\n\t }\n\t }\n\t path = parts.join('/');\n\t\n\t if (path === '') {\n\t path = isAbsolute ? '/' : '.';\n\t }\n\t\n\t if (url) {\n\t url.path = path;\n\t return urlGenerate(url);\n\t }\n\t return path;\n\t}\n\texports.normalize = normalize;\n\t\n\t/**\n\t * Joins two paths/URLs.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be joined with the root.\n\t *\n\t * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n\t * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n\t * first.\n\t * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n\t * is updated with the result and aRoot is returned. Otherwise the result\n\t * is returned.\n\t * - If aPath is absolute, the result is aPath.\n\t * - Otherwise the two paths are joined with a slash.\n\t * - Joining for example 'http://' and 'www.example.com' is also supported.\n\t */\n\tfunction join(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t if (aPath === \"\") {\n\t aPath = \".\";\n\t }\n\t var aPathUrl = urlParse(aPath);\n\t var aRootUrl = urlParse(aRoot);\n\t if (aRootUrl) {\n\t aRoot = aRootUrl.path || '/';\n\t }\n\t\n\t // `join(foo, '//www.example.org')`\n\t if (aPathUrl && !aPathUrl.scheme) {\n\t if (aRootUrl) {\n\t aPathUrl.scheme = aRootUrl.scheme;\n\t }\n\t return urlGenerate(aPathUrl);\n\t }\n\t\n\t if (aPathUrl || aPath.match(dataUrlRegexp)) {\n\t return aPath;\n\t }\n\t\n\t // `join('http://', 'www.example.com')`\n\t if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n\t aRootUrl.host = aPath;\n\t return urlGenerate(aRootUrl);\n\t }\n\t\n\t var joined = aPath.charAt(0) === '/'\n\t ? aPath\n\t : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\t\n\t if (aRootUrl) {\n\t aRootUrl.path = joined;\n\t return urlGenerate(aRootUrl);\n\t }\n\t return joined;\n\t}\n\texports.join = join;\n\t\n\texports.isAbsolute = function (aPath) {\n\t return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n\t};\n\t\n\t/**\n\t * Make a path relative to a URL or another path.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be made relative to aRoot.\n\t */\n\tfunction relative(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t\n\t aRoot = aRoot.replace(/\\/$/, '');\n\t\n\t // It is possible for the path to be above the root. In this case, simply\n\t // checking whether the root is a prefix of the path won't work. Instead, we\n\t // need to remove components from the root one by one, until either we find\n\t // a prefix that fits, or we run out of components to remove.\n\t var level = 0;\n\t while (aPath.indexOf(aRoot + '/') !== 0) {\n\t var index = aRoot.lastIndexOf(\"/\");\n\t if (index < 0) {\n\t return aPath;\n\t }\n\t\n\t // If the only part of the root that is left is the scheme (i.e. http://,\n\t // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n\t // have exhausted all components, so the path is not relative to the root.\n\t aRoot = aRoot.slice(0, index);\n\t if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n\t return aPath;\n\t }\n\t\n\t ++level;\n\t }\n\t\n\t // Make sure we add a \"../\" for each component we removed from the root.\n\t return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n\t}\n\texports.relative = relative;\n\t\n\tvar supportsNullProto = (function () {\n\t var obj = Object.create(null);\n\t return !('__proto__' in obj);\n\t}());\n\t\n\tfunction identity (s) {\n\t return s;\n\t}\n\t\n\t/**\n\t * Because behavior goes wacky when you set `__proto__` on objects, we\n\t * have to prefix all the strings in our set with an arbitrary character.\n\t *\n\t * See https://github.com/mozilla/source-map/pull/31 and\n\t * https://github.com/mozilla/source-map/issues/30\n\t *\n\t * @param String aStr\n\t */\n\tfunction toSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return '$' + aStr;\n\t }\n\t\n\t return aStr;\n\t}\n\texports.toSetString = supportsNullProto ? identity : toSetString;\n\t\n\tfunction fromSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return aStr.slice(1);\n\t }\n\t\n\t return aStr;\n\t}\n\texports.fromSetString = supportsNullProto ? identity : fromSetString;\n\t\n\tfunction isProtoString(s) {\n\t if (!s) {\n\t return false;\n\t }\n\t\n\t var length = s.length;\n\t\n\t if (length < 9 /* \"__proto__\".length */) {\n\t return false;\n\t }\n\t\n\t if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n\t s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n\t s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n\t s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 9) !== 95 /* '_' */) {\n\t return false;\n\t }\n\t\n\t for (var i = length - 10; i >= 0; i--) {\n\t if (s.charCodeAt(i) !== 36 /* '$' */) {\n\t return false;\n\t }\n\t }\n\t\n\t return true;\n\t}\n\t\n\t/**\n\t * Comparator between two mappings where the original positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same original source/line/column, but different generated\n\t * line and column the same. Useful when searching for a mapping with a\n\t * stubbed out mapping.\n\t */\n\tfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n\t var cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0 || onlyCompareOriginal) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByOriginalPositions = compareByOriginalPositions;\n\t\n\t/**\n\t * Comparator between two mappings with deflated source and name indices where\n\t * the generated positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same generated line and column, but different\n\t * source/name/original line and column the same. Useful when searching for a\n\t * mapping with a stubbed out mapping.\n\t */\n\tfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0 || onlyCompareGenerated) {\n\t return cmp;\n\t }\n\t\n\t cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\t\n\tfunction strcmp(aStr1, aStr2) {\n\t if (aStr1 === aStr2) {\n\t return 0;\n\t }\n\t\n\t if (aStr1 === null) {\n\t return 1; // aStr2 !== null\n\t }\n\t\n\t if (aStr2 === null) {\n\t return -1; // aStr1 !== null\n\t }\n\t\n\t if (aStr1 > aStr2) {\n\t return 1;\n\t }\n\t\n\t return -1;\n\t}\n\t\n\t/**\n\t * Comparator between two mappings with inflated source and name strings where\n\t * the generated positions are compared.\n\t */\n\tfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\t\n\t/**\n\t * Strip any JSON XSSI avoidance prefix from the string (as documented\n\t * in the source maps specification), and then parse the string as\n\t * JSON.\n\t */\n\tfunction parseSourceMapInput(str) {\n\t return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n\t}\n\texports.parseSourceMapInput = parseSourceMapInput;\n\t\n\t/**\n\t * Compute the URL of a source given the the source root, the source's\n\t * URL, and the source map's URL.\n\t */\n\tfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n\t sourceURL = sourceURL || '';\n\t\n\t if (sourceRoot) {\n\t // This follows what Chrome does.\n\t if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n\t sourceRoot += '/';\n\t }\n\t // The spec says:\n\t // Line 4: An optional source root, useful for relocating source\n\t // files on a server or removing repeated values in the\n\t // “sources” entry. This value is prepended to the individual\n\t // entries in the “source” field.\n\t sourceURL = sourceRoot + sourceURL;\n\t }\n\t\n\t // Historically, SourceMapConsumer did not take the sourceMapURL as\n\t // a parameter. This mode is still somewhat supported, which is why\n\t // this code block is conditional. However, it's preferable to pass\n\t // the source map URL to SourceMapConsumer, so that this function\n\t // can implement the source URL resolution algorithm as outlined in\n\t // the spec. This block is basically the equivalent of:\n\t // new URL(sourceURL, sourceMapURL).toString()\n\t // ... except it avoids using URL, which wasn't available in the\n\t // older releases of node still supported by this library.\n\t //\n\t // The spec says:\n\t // If the sources are not absolute URLs after prepending of the\n\t // “sourceRoot”, the sources are resolved relative to the\n\t // SourceMap (like resolving script src in a html document).\n\t if (sourceMapURL) {\n\t var parsed = urlParse(sourceMapURL);\n\t if (!parsed) {\n\t throw new Error(\"sourceMapURL could not be parsed\");\n\t }\n\t if (parsed.path) {\n\t // Strip the last path component, but keep the \"/\".\n\t var index = parsed.path.lastIndexOf('/');\n\t if (index >= 0) {\n\t parsed.path = parsed.path.substring(0, index + 1);\n\t }\n\t }\n\t sourceURL = join(urlGenerate(parsed), sourceURL);\n\t }\n\t\n\t return normalize(sourceURL);\n\t}\n\texports.computeSourceURL = computeSourceURL;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar hasNativeMap = typeof Map !== \"undefined\";\n\t\n\t/**\n\t * A data structure which is a combination of an array and a set. Adding a new\n\t * member is O(1), testing for membership is O(1), and finding the index of an\n\t * element is O(1). Removing elements from the set is not supported. Only\n\t * strings are supported for membership.\n\t */\n\tfunction ArraySet() {\n\t this._array = [];\n\t this._set = hasNativeMap ? new Map() : Object.create(null);\n\t}\n\t\n\t/**\n\t * Static method for creating ArraySet instances from an existing array.\n\t */\n\tArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n\t var set = new ArraySet();\n\t for (var i = 0, len = aArray.length; i < len; i++) {\n\t set.add(aArray[i], aAllowDuplicates);\n\t }\n\t return set;\n\t};\n\t\n\t/**\n\t * Return how many unique items are in this ArraySet. If duplicates have been\n\t * added, than those do not count towards the size.\n\t *\n\t * @returns Number\n\t */\n\tArraySet.prototype.size = function ArraySet_size() {\n\t return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n\t};\n\t\n\t/**\n\t * Add the given string to this set.\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n\t var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n\t var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n\t var idx = this._array.length;\n\t if (!isDuplicate || aAllowDuplicates) {\n\t this._array.push(aStr);\n\t }\n\t if (!isDuplicate) {\n\t if (hasNativeMap) {\n\t this._set.set(aStr, idx);\n\t } else {\n\t this._set[sStr] = idx;\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Is the given string a member of this set?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.has = function ArraySet_has(aStr) {\n\t if (hasNativeMap) {\n\t return this._set.has(aStr);\n\t } else {\n\t var sStr = util.toSetString(aStr);\n\t return has.call(this._set, sStr);\n\t }\n\t};\n\t\n\t/**\n\t * What is the index of the given string in the array?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n\t if (hasNativeMap) {\n\t var idx = this._set.get(aStr);\n\t if (idx >= 0) {\n\t return idx;\n\t }\n\t } else {\n\t var sStr = util.toSetString(aStr);\n\t if (has.call(this._set, sStr)) {\n\t return this._set[sStr];\n\t }\n\t }\n\t\n\t throw new Error('\"' + aStr + '\" is not in the set.');\n\t};\n\t\n\t/**\n\t * What is the element at the given index?\n\t *\n\t * @param Number aIdx\n\t */\n\tArraySet.prototype.at = function ArraySet_at(aIdx) {\n\t if (aIdx >= 0 && aIdx < this._array.length) {\n\t return this._array[aIdx];\n\t }\n\t throw new Error('No element indexed by ' + aIdx);\n\t};\n\t\n\t/**\n\t * Returns the array representation of this set (which has the proper indices\n\t * indicated by indexOf). Note that this is a copy of the internal array used\n\t * for storing the members so that no one can mess with internal state.\n\t */\n\tArraySet.prototype.toArray = function ArraySet_toArray() {\n\t return this._array.slice();\n\t};\n\t\n\texports.ArraySet = ArraySet;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2014 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\t\n\t/**\n\t * Determine whether mappingB is after mappingA with respect to generated\n\t * position.\n\t */\n\tfunction generatedPositionAfter(mappingA, mappingB) {\n\t // Optimized for most common case\n\t var lineA = mappingA.generatedLine;\n\t var lineB = mappingB.generatedLine;\n\t var columnA = mappingA.generatedColumn;\n\t var columnB = mappingB.generatedColumn;\n\t return lineB > lineA || lineB == lineA && columnB >= columnA ||\n\t util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n\t}\n\t\n\t/**\n\t * A data structure to provide a sorted view of accumulated mappings in a\n\t * performance conscious manner. It trades a neglibable overhead in general\n\t * case for a large speedup in case of mappings being added in order.\n\t */\n\tfunction MappingList() {\n\t this._array = [];\n\t this._sorted = true;\n\t // Serves as infimum\n\t this._last = {generatedLine: -1, generatedColumn: 0};\n\t}\n\t\n\t/**\n\t * Iterate through internal items. This method takes the same arguments that\n\t * `Array.prototype.forEach` takes.\n\t *\n\t * NOTE: The order of the mappings is NOT guaranteed.\n\t */\n\tMappingList.prototype.unsortedForEach =\n\t function MappingList_forEach(aCallback, aThisArg) {\n\t this._array.forEach(aCallback, aThisArg);\n\t };\n\t\n\t/**\n\t * Add the given source mapping.\n\t *\n\t * @param Object aMapping\n\t */\n\tMappingList.prototype.add = function MappingList_add(aMapping) {\n\t if (generatedPositionAfter(this._last, aMapping)) {\n\t this._last = aMapping;\n\t this._array.push(aMapping);\n\t } else {\n\t this._sorted = false;\n\t this._array.push(aMapping);\n\t }\n\t};\n\t\n\t/**\n\t * Returns the flat, sorted array of mappings. The mappings are sorted by\n\t * generated position.\n\t *\n\t * WARNING: This method returns internal data without copying, for\n\t * performance. The return value must NOT be mutated, and should be treated as\n\t * an immutable borrow. If you want to take ownership, you must make your own\n\t * copy.\n\t */\n\tMappingList.prototype.toArray = function MappingList_toArray() {\n\t if (!this._sorted) {\n\t this._array.sort(util.compareByGeneratedPositionsInflated);\n\t this._sorted = true;\n\t }\n\t return this._array;\n\t};\n\t\n\texports.MappingList = MappingList;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\tvar binarySearch = __webpack_require__(8);\n\tvar ArraySet = __webpack_require__(5).ArraySet;\n\tvar base64VLQ = __webpack_require__(2);\n\tvar quickSort = __webpack_require__(9).quickSort;\n\t\n\tfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = util.parseSourceMapInput(aSourceMap);\n\t }\n\t\n\t return sourceMap.sections != null\n\t ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n\t : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n\t}\n\t\n\tSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n\t return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n\t}\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tSourceMapConsumer.prototype._version = 3;\n\t\n\t// `__generatedMappings` and `__originalMappings` are arrays that hold the\n\t// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n\t// are lazily instantiated, accessed via the `_generatedMappings` and\n\t// `_originalMappings` getters respectively, and we only parse the mappings\n\t// and create these arrays once queried for a source location. We jump through\n\t// these hoops because there can be many thousands of mappings, and parsing\n\t// them is expensive, so we only want to do it if we must.\n\t//\n\t// Each object in the arrays is of the form:\n\t//\n\t// {\n\t// generatedLine: The line number in the generated code,\n\t// generatedColumn: The column number in the generated code,\n\t// source: The path to the original source file that generated this\n\t// chunk of code,\n\t// originalLine: The line number in the original source that\n\t// corresponds to this chunk of generated code,\n\t// originalColumn: The column number in the original source that\n\t// corresponds to this chunk of generated code,\n\t// name: The name of the original symbol which generated this chunk of\n\t// code.\n\t// }\n\t//\n\t// All properties except for `generatedLine` and `generatedColumn` can be\n\t// `null`.\n\t//\n\t// `_generatedMappings` is ordered by the generated positions.\n\t//\n\t// `_originalMappings` is ordered by the original positions.\n\t\n\tSourceMapConsumer.prototype.__generatedMappings = null;\n\tObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n\t configurable: true,\n\t enumerable: true,\n\t get: function () {\n\t if (!this.__generatedMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__generatedMappings;\n\t }\n\t});\n\t\n\tSourceMapConsumer.prototype.__originalMappings = null;\n\tObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n\t configurable: true,\n\t enumerable: true,\n\t get: function () {\n\t if (!this.__originalMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__originalMappings;\n\t }\n\t});\n\t\n\tSourceMapConsumer.prototype._charIsMappingSeparator =\n\t function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n\t var c = aStr.charAt(index);\n\t return c === \";\" || c === \",\";\n\t };\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t throw new Error(\"Subclasses must implement _parseMappings\");\n\t };\n\t\n\tSourceMapConsumer.GENERATED_ORDER = 1;\n\tSourceMapConsumer.ORIGINAL_ORDER = 2;\n\t\n\tSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\n\tSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\t\n\t/**\n\t * Iterate over each mapping between an original source/line/column and a\n\t * generated line/column in this source map.\n\t *\n\t * @param Function aCallback\n\t * The function that is called with each mapping.\n\t * @param Object aContext\n\t * Optional. If specified, this object will be the value of `this` every\n\t * time that `aCallback` is called.\n\t * @param aOrder\n\t * Either `SourceMapConsumer.GENERATED_ORDER` or\n\t * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n\t * iterate over the mappings sorted by the generated file's line/column\n\t * order or the original's source/line/column order, respectively. Defaults to\n\t * `SourceMapConsumer.GENERATED_ORDER`.\n\t */\n\tSourceMapConsumer.prototype.eachMapping =\n\t function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n\t var context = aContext || null;\n\t var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\t\n\t var mappings;\n\t switch (order) {\n\t case SourceMapConsumer.GENERATED_ORDER:\n\t mappings = this._generatedMappings;\n\t break;\n\t case SourceMapConsumer.ORIGINAL_ORDER:\n\t mappings = this._originalMappings;\n\t break;\n\t default:\n\t throw new Error(\"Unknown order of iteration.\");\n\t }\n\t\n\t var sourceRoot = this.sourceRoot;\n\t mappings.map(function (mapping) {\n\t var source = mapping.source === null ? null : this._sources.at(mapping.source);\n\t source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n\t return {\n\t source: source,\n\t generatedLine: mapping.generatedLine,\n\t generatedColumn: mapping.generatedColumn,\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: mapping.name === null ? null : this._names.at(mapping.name)\n\t };\n\t }, this).forEach(aCallback, context);\n\t };\n\t\n\t/**\n\t * Returns all generated line and column information for the original source,\n\t * line, and column provided. If no column is provided, returns all mappings\n\t * corresponding to a either the line we are searching for or the next\n\t * closest line that has any mappings. Otherwise, returns all mappings\n\t * corresponding to the given line and either the column we are searching for\n\t * or the next closest column that has any offsets.\n\t *\n\t * The only argument is an object with the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source. The line number is 1-based.\n\t * - column: Optional. the column number in the original source.\n\t * The column number is 0-based.\n\t *\n\t * and an array of objects is returned, each with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the generated source, or null.\n\t * The column number is 0-based.\n\t */\n\tSourceMapConsumer.prototype.allGeneratedPositionsFor =\n\t function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n\t var line = util.getArg(aArgs, 'line');\n\t\n\t // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n\t // returns the index of the closest mapping less than the needle. By\n\t // setting needle.originalColumn to 0, we thus find the last mapping for\n\t // the given line, provided such a mapping exists.\n\t var needle = {\n\t source: util.getArg(aArgs, 'source'),\n\t originalLine: line,\n\t originalColumn: util.getArg(aArgs, 'column', 0)\n\t };\n\t\n\t needle.source = this._findSourceIndex(needle.source);\n\t if (needle.source < 0) {\n\t return [];\n\t }\n\t\n\t var mappings = [];\n\t\n\t var index = this._findMapping(needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t binarySearch.LEAST_UPPER_BOUND);\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (aArgs.column === undefined) {\n\t var originalLine = mapping.originalLine;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we found. Since\n\t // mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we found.\n\t while (mapping && mapping.originalLine === originalLine) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t } else {\n\t var originalColumn = mapping.originalColumn;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we were searching for.\n\t // Since mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we are searching for.\n\t while (mapping &&\n\t mapping.originalLine === line &&\n\t mapping.originalColumn == originalColumn) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t }\n\t }\n\t\n\t return mappings;\n\t };\n\t\n\texports.SourceMapConsumer = SourceMapConsumer;\n\t\n\t/**\n\t * A BasicSourceMapConsumer instance represents a parsed source map which we can\n\t * query for information about the original file positions by giving it a file\n\t * position in the generated source.\n\t *\n\t * The first parameter is the raw source map (either as a JSON string, or\n\t * already parsed to an object). According to the spec, source maps have the\n\t * following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - sources: An array of URLs to the original source files.\n\t * - names: An array of identifiers which can be referrenced by individual mappings.\n\t * - sourceRoot: Optional. The URL root from which all sources are relative.\n\t * - sourcesContent: Optional. An array of contents of the original source files.\n\t * - mappings: A string of base64 VLQs which contain the actual mappings.\n\t * - file: Optional. The generated file this source map is associated with.\n\t *\n\t * Here is an example source map, taken from the source map spec[0]:\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"out.js\",\n\t * sourceRoot : \"\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AA,AB;;ABCDE;\"\n\t * }\n\t *\n\t * The second parameter, if given, is a string whose value is the URL\n\t * at which the source map was found. This URL is used to compute the\n\t * sources array.\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n\t */\n\tfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = util.parseSourceMapInput(aSourceMap);\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sources = util.getArg(sourceMap, 'sources');\n\t // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n\t // requires the array) to play nice here.\n\t var names = util.getArg(sourceMap, 'names', []);\n\t var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n\t var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n\t var mappings = util.getArg(sourceMap, 'mappings');\n\t var file = util.getArg(sourceMap, 'file', null);\n\t\n\t // Once again, Sass deviates from the spec and supplies the version as a\n\t // string rather than a number, so we use loose equality checking here.\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t if (sourceRoot) {\n\t sourceRoot = util.normalize(sourceRoot);\n\t }\n\t\n\t sources = sources\n\t .map(String)\n\t // Some source maps produce relative source paths like \"./foo.js\" instead of\n\t // \"foo.js\". Normalize these first so that future comparisons will succeed.\n\t // See bugzil.la/1090768.\n\t .map(util.normalize)\n\t // Always ensure that absolute sources are internally stored relative to\n\t // the source root, if the source root is absolute. Not doing this would\n\t // be particularly problematic when the source root is a prefix of the\n\t // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n\t .map(function (source) {\n\t return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n\t ? util.relative(sourceRoot, source)\n\t : source;\n\t });\n\t\n\t // Pass `true` below to allow duplicate names and sources. While source maps\n\t // are intended to be compressed and deduplicated, the TypeScript compiler\n\t // sometimes generates source maps with duplicates in them. See Github issue\n\t // #72 and bugzil.la/889492.\n\t this._names = ArraySet.fromArray(names.map(String), true);\n\t this._sources = ArraySet.fromArray(sources, true);\n\t\n\t this._absoluteSources = this._sources.toArray().map(function (s) {\n\t return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n\t });\n\t\n\t this.sourceRoot = sourceRoot;\n\t this.sourcesContent = sourcesContent;\n\t this._mappings = mappings;\n\t this._sourceMapURL = aSourceMapURL;\n\t this.file = file;\n\t}\n\t\n\tBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\t\n\t/**\n\t * Utility function to find the index of a source. Returns -1 if not\n\t * found.\n\t */\n\tBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n\t var relativeSource = aSource;\n\t if (this.sourceRoot != null) {\n\t relativeSource = util.relative(this.sourceRoot, relativeSource);\n\t }\n\t\n\t if (this._sources.has(relativeSource)) {\n\t return this._sources.indexOf(relativeSource);\n\t }\n\t\n\t // Maybe aSource is an absolute URL as returned by |sources|. In\n\t // this case we can't simply undo the transform.\n\t var i;\n\t for (i = 0; i < this._absoluteSources.length; ++i) {\n\t if (this._absoluteSources[i] == aSource) {\n\t return i;\n\t }\n\t }\n\t\n\t return -1;\n\t};\n\t\n\t/**\n\t * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n\t *\n\t * @param SourceMapGenerator aSourceMap\n\t * The source map that will be consumed.\n\t * @param String aSourceMapURL\n\t * The URL at which the source map can be found (optional)\n\t * @returns BasicSourceMapConsumer\n\t */\n\tBasicSourceMapConsumer.fromSourceMap =\n\t function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n\t var smc = Object.create(BasicSourceMapConsumer.prototype);\n\t\n\t var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n\t var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n\t smc.sourceRoot = aSourceMap._sourceRoot;\n\t smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n\t smc.sourceRoot);\n\t smc.file = aSourceMap._file;\n\t smc._sourceMapURL = aSourceMapURL;\n\t smc._absoluteSources = smc._sources.toArray().map(function (s) {\n\t return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n\t });\n\t\n\t // Because we are modifying the entries (by converting string sources and\n\t // names to indices into the sources and names ArraySets), we have to make\n\t // a copy of the entry or else bad things happen. Shared mutable state\n\t // strikes again! See github issue #191.\n\t\n\t var generatedMappings = aSourceMap._mappings.toArray().slice();\n\t var destGeneratedMappings = smc.__generatedMappings = [];\n\t var destOriginalMappings = smc.__originalMappings = [];\n\t\n\t for (var i = 0, length = generatedMappings.length; i < length; i++) {\n\t var srcMapping = generatedMappings[i];\n\t var destMapping = new Mapping;\n\t destMapping.generatedLine = srcMapping.generatedLine;\n\t destMapping.generatedColumn = srcMapping.generatedColumn;\n\t\n\t if (srcMapping.source) {\n\t destMapping.source = sources.indexOf(srcMapping.source);\n\t destMapping.originalLine = srcMapping.originalLine;\n\t destMapping.originalColumn = srcMapping.originalColumn;\n\t\n\t if (srcMapping.name) {\n\t destMapping.name = names.indexOf(srcMapping.name);\n\t }\n\t\n\t destOriginalMappings.push(destMapping);\n\t }\n\t\n\t destGeneratedMappings.push(destMapping);\n\t }\n\t\n\t quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\t\n\t return smc;\n\t };\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tBasicSourceMapConsumer.prototype._version = 3;\n\t\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t return this._absoluteSources.slice();\n\t }\n\t});\n\t\n\t/**\n\t * Provide the JIT with a nice shape / hidden class.\n\t */\n\tfunction Mapping() {\n\t this.generatedLine = 0;\n\t this.generatedColumn = 0;\n\t this.source = null;\n\t this.originalLine = null;\n\t this.originalColumn = null;\n\t this.name = null;\n\t}\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tBasicSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t var generatedLine = 1;\n\t var previousGeneratedColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousOriginalColumn = 0;\n\t var previousSource = 0;\n\t var previousName = 0;\n\t var length = aStr.length;\n\t var index = 0;\n\t var cachedSegments = {};\n\t var temp = {};\n\t var originalMappings = [];\n\t var generatedMappings = [];\n\t var mapping, str, segment, end, value;\n\t\n\t while (index < length) {\n\t if (aStr.charAt(index) === ';') {\n\t generatedLine++;\n\t index++;\n\t previousGeneratedColumn = 0;\n\t }\n\t else if (aStr.charAt(index) === ',') {\n\t index++;\n\t }\n\t else {\n\t mapping = new Mapping();\n\t mapping.generatedLine = generatedLine;\n\t\n\t // Because each offset is encoded relative to the previous one,\n\t // many segments often have the same encoding. We can exploit this\n\t // fact by caching the parsed variable length fields of each segment,\n\t // allowing us to avoid a second parse if we encounter the same\n\t // segment again.\n\t for (end = index; end < length; end++) {\n\t if (this._charIsMappingSeparator(aStr, end)) {\n\t break;\n\t }\n\t }\n\t str = aStr.slice(index, end);\n\t\n\t segment = cachedSegments[str];\n\t if (segment) {\n\t index += str.length;\n\t } else {\n\t segment = [];\n\t while (index < end) {\n\t base64VLQ.decode(aStr, index, temp);\n\t value = temp.value;\n\t index = temp.rest;\n\t segment.push(value);\n\t }\n\t\n\t if (segment.length === 2) {\n\t throw new Error('Found a source, but no line and column');\n\t }\n\t\n\t if (segment.length === 3) {\n\t throw new Error('Found a source and line, but no column');\n\t }\n\t\n\t cachedSegments[str] = segment;\n\t }\n\t\n\t // Generated column.\n\t mapping.generatedColumn = previousGeneratedColumn + segment[0];\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (segment.length > 1) {\n\t // Original source.\n\t mapping.source = previousSource + segment[1];\n\t previousSource += segment[1];\n\t\n\t // Original line.\n\t mapping.originalLine = previousOriginalLine + segment[2];\n\t previousOriginalLine = mapping.originalLine;\n\t // Lines are stored 0-based\n\t mapping.originalLine += 1;\n\t\n\t // Original column.\n\t mapping.originalColumn = previousOriginalColumn + segment[3];\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (segment.length > 4) {\n\t // Original name.\n\t mapping.name = previousName + segment[4];\n\t previousName += segment[4];\n\t }\n\t }\n\t\n\t generatedMappings.push(mapping);\n\t if (typeof mapping.originalLine === 'number') {\n\t originalMappings.push(mapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t this.__generatedMappings = generatedMappings;\n\t\n\t quickSort(originalMappings, util.compareByOriginalPositions);\n\t this.__originalMappings = originalMappings;\n\t };\n\t\n\t/**\n\t * Find the mapping that best matches the hypothetical \"needle\" mapping that\n\t * we are searching for in the given \"haystack\" of mappings.\n\t */\n\tBasicSourceMapConsumer.prototype._findMapping =\n\t function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n\t aColumnName, aComparator, aBias) {\n\t // To return the position we are searching for, we must first find the\n\t // mapping for the given position and then return the opposite position it\n\t // points to. Because the mappings are sorted, we can use binary search to\n\t // find the best mapping.\n\t\n\t if (aNeedle[aLineName] <= 0) {\n\t throw new TypeError('Line must be greater than or equal to 1, got '\n\t + aNeedle[aLineName]);\n\t }\n\t if (aNeedle[aColumnName] < 0) {\n\t throw new TypeError('Column must be greater than or equal to 0, got '\n\t + aNeedle[aColumnName]);\n\t }\n\t\n\t return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n\t };\n\t\n\t/**\n\t * Compute the last column for each generated mapping. The last column is\n\t * inclusive.\n\t */\n\tBasicSourceMapConsumer.prototype.computeColumnSpans =\n\t function SourceMapConsumer_computeColumnSpans() {\n\t for (var index = 0; index < this._generatedMappings.length; ++index) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t // Mappings do not contain a field for the last generated columnt. We\n\t // can come up with an optimistic estimate, however, by assuming that\n\t // mappings are contiguous (i.e. given two consecutive mappings, the\n\t // first mapping ends where the second one starts).\n\t if (index + 1 < this._generatedMappings.length) {\n\t var nextMapping = this._generatedMappings[index + 1];\n\t\n\t if (mapping.generatedLine === nextMapping.generatedLine) {\n\t mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n\t continue;\n\t }\n\t }\n\t\n\t // The last mapping for each line spans the entire line.\n\t mapping.lastGeneratedColumn = Infinity;\n\t }\n\t };\n\t\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source. The line number\n\t * is 1-based.\n\t * - column: The column number in the generated source. The column\n\t * number is 0-based.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the original source, or null. The\n\t * column number is 0-based.\n\t * - name: The original identifier, or null.\n\t */\n\tBasicSourceMapConsumer.prototype.originalPositionFor =\n\t function SourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._generatedMappings,\n\t \"generatedLine\",\n\t \"generatedColumn\",\n\t util.compareByGeneratedPositionsDeflated,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t if (mapping.generatedLine === needle.generatedLine) {\n\t var source = util.getArg(mapping, 'source', null);\n\t if (source !== null) {\n\t source = this._sources.at(source);\n\t source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n\t }\n\t var name = util.getArg(mapping, 'name', null);\n\t if (name !== null) {\n\t name = this._names.at(name);\n\t }\n\t return {\n\t source: source,\n\t line: util.getArg(mapping, 'originalLine', null),\n\t column: util.getArg(mapping, 'originalColumn', null),\n\t name: name\n\t };\n\t }\n\t }\n\t\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t };\n\t\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function BasicSourceMapConsumer_hasContentsOfAllSources() {\n\t if (!this.sourcesContent) {\n\t return false;\n\t }\n\t return this.sourcesContent.length >= this._sources.size() &&\n\t !this.sourcesContent.some(function (sc) { return sc == null; });\n\t };\n\t\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tBasicSourceMapConsumer.prototype.sourceContentFor =\n\t function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t if (!this.sourcesContent) {\n\t return null;\n\t }\n\t\n\t var index = this._findSourceIndex(aSource);\n\t if (index >= 0) {\n\t return this.sourcesContent[index];\n\t }\n\t\n\t var relativeSource = aSource;\n\t if (this.sourceRoot != null) {\n\t relativeSource = util.relative(this.sourceRoot, relativeSource);\n\t }\n\t\n\t var url;\n\t if (this.sourceRoot != null\n\t && (url = util.urlParse(this.sourceRoot))) {\n\t // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n\t // many users. We can help them out when they expect file:// URIs to\n\t // behave like it would if they were running a local HTTP server. See\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n\t var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n\t if (url.scheme == \"file\"\n\t && this._sources.has(fileUriAbsPath)) {\n\t return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n\t }\n\t\n\t if ((!url.path || url.path == \"/\")\n\t && this._sources.has(\"/\" + relativeSource)) {\n\t return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n\t }\n\t }\n\t\n\t // This function is used recursively from\n\t // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n\t // don't want to throw if we can't find the source - we just want to\n\t // return null, so we provide a flag to exit gracefully.\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source. The line number\n\t * is 1-based.\n\t * - column: The column number in the original source. The column\n\t * number is 0-based.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the generated source, or null.\n\t * The column number is 0-based.\n\t */\n\tBasicSourceMapConsumer.prototype.generatedPositionFor =\n\t function SourceMapConsumer_generatedPositionFor(aArgs) {\n\t var source = util.getArg(aArgs, 'source');\n\t source = this._findSourceIndex(source);\n\t if (source < 0) {\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t }\n\t\n\t var needle = {\n\t source: source,\n\t originalLine: util.getArg(aArgs, 'line'),\n\t originalColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (mapping.source === needle.source) {\n\t return {\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t };\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t };\n\t\n\texports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\t\n\t/**\n\t * An IndexedSourceMapConsumer instance represents a parsed source map which\n\t * we can query for information. It differs from BasicSourceMapConsumer in\n\t * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n\t * input.\n\t *\n\t * The first parameter is a raw source map (either as a JSON string, or already\n\t * parsed to an object). According to the spec for indexed source maps, they\n\t * have the following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - file: Optional. The generated file this source map is associated with.\n\t * - sections: A list of section definitions.\n\t *\n\t * Each value under the \"sections\" field has two fields:\n\t * - offset: The offset into the original specified at which this section\n\t * begins to apply, defined as an object with a \"line\" and \"column\"\n\t * field.\n\t * - map: A source map definition. This source map could also be indexed,\n\t * but doesn't have to be.\n\t *\n\t * Instead of the \"map\" field, it's also possible to have a \"url\" field\n\t * specifying a URL to retrieve a source map from, but that's currently\n\t * unsupported.\n\t *\n\t * Here's an example source map, taken from the source map spec[0], but\n\t * modified to omit a section which uses the \"url\" field.\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"app.js\",\n\t * sections: [{\n\t * offset: {line:100, column:10},\n\t * map: {\n\t * version : 3,\n\t * file: \"section.js\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AAAA,E;;ABCDE;\"\n\t * }\n\t * }],\n\t * }\n\t *\n\t * The second parameter, if given, is a string whose value is the URL\n\t * at which the source map was found. This URL is used to compute the\n\t * sources array.\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n\t */\n\tfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = util.parseSourceMapInput(aSourceMap);\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sections = util.getArg(sourceMap, 'sections');\n\t\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t this._sources = new ArraySet();\n\t this._names = new ArraySet();\n\t\n\t var lastOffset = {\n\t line: -1,\n\t column: 0\n\t };\n\t this._sections = sections.map(function (s) {\n\t if (s.url) {\n\t // The url field will require support for asynchronicity.\n\t // See https://github.com/mozilla/source-map/issues/16\n\t throw new Error('Support for url field in sections not implemented.');\n\t }\n\t var offset = util.getArg(s, 'offset');\n\t var offsetLine = util.getArg(offset, 'line');\n\t var offsetColumn = util.getArg(offset, 'column');\n\t\n\t if (offsetLine < lastOffset.line ||\n\t (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n\t throw new Error('Section offsets must be ordered and non-overlapping.');\n\t }\n\t lastOffset = offset;\n\t\n\t return {\n\t generatedOffset: {\n\t // The offset fields are 0-based, but we use 1-based indices when\n\t // encoding/decoding from VLQ.\n\t generatedLine: offsetLine + 1,\n\t generatedColumn: offsetColumn + 1\n\t },\n\t consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n\t }\n\t });\n\t}\n\t\n\tIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tIndexedSourceMapConsumer.prototype._version = 3;\n\t\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t var sources = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n\t sources.push(this._sections[i].consumer.sources[j]);\n\t }\n\t }\n\t return sources;\n\t }\n\t});\n\t\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source. The line number\n\t * is 1-based.\n\t * - column: The column number in the generated source. The column\n\t * number is 0-based.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the original source, or null. The\n\t * column number is 0-based.\n\t * - name: The original identifier, or null.\n\t */\n\tIndexedSourceMapConsumer.prototype.originalPositionFor =\n\t function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t // Find the section containing the generated position we're trying to map\n\t // to an original position.\n\t var sectionIndex = binarySearch.search(needle, this._sections,\n\t function(needle, section) {\n\t var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n\t if (cmp) {\n\t return cmp;\n\t }\n\t\n\t return (needle.generatedColumn -\n\t section.generatedOffset.generatedColumn);\n\t });\n\t var section = this._sections[sectionIndex];\n\t\n\t if (!section) {\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t }\n\t\n\t return section.consumer.originalPositionFor({\n\t line: needle.generatedLine -\n\t (section.generatedOffset.generatedLine - 1),\n\t column: needle.generatedColumn -\n\t (section.generatedOffset.generatedLine === needle.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t bias: aArgs.bias\n\t });\n\t };\n\t\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n\t return this._sections.every(function (s) {\n\t return s.consumer.hasContentsOfAllSources();\n\t });\n\t };\n\t\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tIndexedSourceMapConsumer.prototype.sourceContentFor =\n\t function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t var content = section.consumer.sourceContentFor(aSource, true);\n\t if (content) {\n\t return content;\n\t }\n\t }\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source. The line number\n\t * is 1-based.\n\t * - column: The column number in the original source. The column\n\t * number is 0-based.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null. The\n\t * line number is 1-based. \n\t * - column: The column number in the generated source, or null.\n\t * The column number is 0-based.\n\t */\n\tIndexedSourceMapConsumer.prototype.generatedPositionFor =\n\t function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t // Only consider this section if the requested source is in the list of\n\t // sources of the consumer.\n\t if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n\t continue;\n\t }\n\t var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n\t if (generatedPosition) {\n\t var ret = {\n\t line: generatedPosition.line +\n\t (section.generatedOffset.generatedLine - 1),\n\t column: generatedPosition.column +\n\t (section.generatedOffset.generatedLine === generatedPosition.line\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0)\n\t };\n\t return ret;\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null\n\t };\n\t };\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tIndexedSourceMapConsumer.prototype._parseMappings =\n\t function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t this.__generatedMappings = [];\n\t this.__originalMappings = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t var sectionMappings = section.consumer._generatedMappings;\n\t for (var j = 0; j < sectionMappings.length; j++) {\n\t var mapping = sectionMappings[j];\n\t\n\t var source = section.consumer._sources.at(mapping.source);\n\t source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n\t this._sources.add(source);\n\t source = this._sources.indexOf(source);\n\t\n\t var name = null;\n\t if (mapping.name) {\n\t name = section.consumer._names.at(mapping.name);\n\t this._names.add(name);\n\t name = this._names.indexOf(name);\n\t }\n\t\n\t // The mappings coming from the consumer for the section have\n\t // generated positions relative to the start of the section, so we\n\t // need to offset them to be relative to the start of the concatenated\n\t // generated file.\n\t var adjustedMapping = {\n\t source: source,\n\t generatedLine: mapping.generatedLine +\n\t (section.generatedOffset.generatedLine - 1),\n\t generatedColumn: mapping.generatedColumn +\n\t (section.generatedOffset.generatedLine === mapping.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: name\n\t };\n\t\n\t this.__generatedMappings.push(adjustedMapping);\n\t if (typeof adjustedMapping.originalLine === 'number') {\n\t this.__originalMappings.push(adjustedMapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t quickSort(this.__originalMappings, util.compareByOriginalPositions);\n\t };\n\t\n\texports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\texports.GREATEST_LOWER_BOUND = 1;\n\texports.LEAST_UPPER_BOUND = 2;\n\t\n\t/**\n\t * Recursive implementation of binary search.\n\t *\n\t * @param aLow Indices here and lower do not contain the needle.\n\t * @param aHigh Indices here and higher do not contain the needle.\n\t * @param aNeedle The element being searched for.\n\t * @param aHaystack The non-empty array being searched.\n\t * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t */\n\tfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n\t // This function terminates when one of the following is true:\n\t //\n\t // 1. We find the exact element we are looking for.\n\t //\n\t // 2. We did not find the exact element, but we can return the index of\n\t // the next-closest element.\n\t //\n\t // 3. We did not find the exact element, and there is no next-closest\n\t // element than the one we are searching for, so we return -1.\n\t var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n\t var cmp = aCompare(aNeedle, aHaystack[mid], true);\n\t if (cmp === 0) {\n\t // Found the element we are looking for.\n\t return mid;\n\t }\n\t else if (cmp > 0) {\n\t // Our needle is greater than aHaystack[mid].\n\t if (aHigh - mid > 1) {\n\t // The element is in the upper half.\n\t return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // The exact needle element was not found in this haystack. Determine if\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return aHigh < aHaystack.length ? aHigh : -1;\n\t } else {\n\t return mid;\n\t }\n\t }\n\t else {\n\t // Our needle is less than aHaystack[mid].\n\t if (mid - aLow > 1) {\n\t // The element is in the lower half.\n\t return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return mid;\n\t } else {\n\t return aLow < 0 ? -1 : aLow;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * This is an implementation of binary search which will always try and return\n\t * the index of the closest element if there is no exact hit. This is because\n\t * mappings between original and generated line/col pairs are single points,\n\t * and there is an implicit region between each of them, so a miss just means\n\t * that you aren't on the very start of a region.\n\t *\n\t * @param aNeedle The element you are looking for.\n\t * @param aHaystack The array that is being searched.\n\t * @param aCompare A function which takes the needle and an element in the\n\t * array and returns -1, 0, or 1 depending on whether the needle is less\n\t * than, equal to, or greater than the element, respectively.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n\t */\n\texports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n\t if (aHaystack.length === 0) {\n\t return -1;\n\t }\n\t\n\t var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n\t aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n\t if (index < 0) {\n\t return -1;\n\t }\n\t\n\t // We have found either the exact element, or the next-closest element than\n\t // the one we are searching for. However, there may be more than one such\n\t // element. Make sure we always return the smallest of these.\n\t while (index - 1 >= 0) {\n\t if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n\t break;\n\t }\n\t --index;\n\t }\n\t\n\t return index;\n\t};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\t// It turns out that some (most?) JavaScript engines don't self-host\n\t// `Array.prototype.sort`. This makes sense because C++ will likely remain\n\t// faster than JS when doing raw CPU-intensive sorting. However, when using a\n\t// custom comparator function, calling back and forth between the VM's C++ and\n\t// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n\t// worse generated code for the comparator function than would be optimal. In\n\t// fact, when sorting with a comparator, these costs outweigh the benefits of\n\t// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n\t// a ~3500ms mean speed-up in `bench/bench.html`.\n\t\n\t/**\n\t * Swap the elements indexed by `x` and `y` in the array `ary`.\n\t *\n\t * @param {Array} ary\n\t * The array.\n\t * @param {Number} x\n\t * The index of the first item.\n\t * @param {Number} y\n\t * The index of the second item.\n\t */\n\tfunction swap(ary, x, y) {\n\t var temp = ary[x];\n\t ary[x] = ary[y];\n\t ary[y] = temp;\n\t}\n\t\n\t/**\n\t * Returns a random integer within the range `low .. high` inclusive.\n\t *\n\t * @param {Number} low\n\t * The lower bound on the range.\n\t * @param {Number} high\n\t * The upper bound on the range.\n\t */\n\tfunction randomIntInRange(low, high) {\n\t return Math.round(low + (Math.random() * (high - low)));\n\t}\n\t\n\t/**\n\t * The Quick Sort algorithm.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t * @param {Number} p\n\t * Start index of the array\n\t * @param {Number} r\n\t * End index of the array\n\t */\n\tfunction doQuickSort(ary, comparator, p, r) {\n\t // If our lower bound is less than our upper bound, we (1) partition the\n\t // array into two pieces and (2) recurse on each half. If it is not, this is\n\t // the empty array and our base case.\n\t\n\t if (p < r) {\n\t // (1) Partitioning.\n\t //\n\t // The partitioning chooses a pivot between `p` and `r` and moves all\n\t // elements that are less than or equal to the pivot to the before it, and\n\t // all the elements that are greater than it after it. The effect is that\n\t // once partition is done, the pivot is in the exact place it will be when\n\t // the array is put in sorted order, and it will not need to be moved\n\t // again. This runs in O(n) time.\n\t\n\t // Always choose a random pivot so that an input array which is reverse\n\t // sorted does not cause O(n^2) running time.\n\t var pivotIndex = randomIntInRange(p, r);\n\t var i = p - 1;\n\t\n\t swap(ary, pivotIndex, r);\n\t var pivot = ary[r];\n\t\n\t // Immediately after `j` is incremented in this loop, the following hold\n\t // true:\n\t //\n\t // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n\t //\n\t // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n\t for (var j = p; j < r; j++) {\n\t if (comparator(ary[j], pivot) <= 0) {\n\t i += 1;\n\t swap(ary, i, j);\n\t }\n\t }\n\t\n\t swap(ary, i + 1, j);\n\t var q = i + 1;\n\t\n\t // (2) Recurse on each half.\n\t\n\t doQuickSort(ary, comparator, p, q - 1);\n\t doQuickSort(ary, comparator, q + 1, r);\n\t }\n\t}\n\t\n\t/**\n\t * Sort the given array in-place with the given comparator function.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t */\n\texports.quickSort = function (ary, comparator) {\n\t doQuickSort(ary, comparator, 0, ary.length - 1);\n\t};\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;\n\tvar util = __webpack_require__(4);\n\t\n\t// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n\t// operating systems these days (capturing the result).\n\tvar REGEX_NEWLINE = /(\\r?\\n)/;\n\t\n\t// Newline character code for charCodeAt() comparisons\n\tvar NEWLINE_CODE = 10;\n\t\n\t// Private symbol for identifying `SourceNode`s when multiple versions of\n\t// the source-map library are loaded. This MUST NOT CHANGE across\n\t// versions!\n\tvar isSourceNode = \"$$$isSourceNode$$$\";\n\t\n\t/**\n\t * SourceNodes provide a way to abstract over interpolating/concatenating\n\t * snippets of generated JavaScript source code while maintaining the line and\n\t * column information associated with the original source code.\n\t *\n\t * @param aLine The original line number.\n\t * @param aColumn The original column number.\n\t * @param aSource The original source's filename.\n\t * @param aChunks Optional. An array of strings which are snippets of\n\t * generated JS, or other SourceNodes.\n\t * @param aName The original identifier.\n\t */\n\tfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n\t this.children = [];\n\t this.sourceContents = {};\n\t this.line = aLine == null ? null : aLine;\n\t this.column = aColumn == null ? null : aColumn;\n\t this.source = aSource == null ? null : aSource;\n\t this.name = aName == null ? null : aName;\n\t this[isSourceNode] = true;\n\t if (aChunks != null) this.add(aChunks);\n\t}\n\t\n\t/**\n\t * Creates a SourceNode from generated code and a SourceMapConsumer.\n\t *\n\t * @param aGeneratedCode The generated code\n\t * @param aSourceMapConsumer The SourceMap for the generated code\n\t * @param aRelativePath Optional. The path that relative sources in the\n\t * SourceMapConsumer should be relative to.\n\t */\n\tSourceNode.fromStringWithSourceMap =\n\t function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n\t // The SourceNode we want to fill with the generated code\n\t // and the SourceMap\n\t var node = new SourceNode();\n\t\n\t // All even indices of this array are one line of the generated code,\n\t // while all odd indices are the newlines between two adjacent lines\n\t // (since `REGEX_NEWLINE` captures its match).\n\t // Processed fragments are accessed by calling `shiftNextLine`.\n\t var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n\t var remainingLinesIndex = 0;\n\t var shiftNextLine = function() {\n\t var lineContents = getNextLine();\n\t // The last line of a file might not have a newline.\n\t var newLine = getNextLine() || \"\";\n\t return lineContents + newLine;\n\t\n\t function getNextLine() {\n\t return remainingLinesIndex < remainingLines.length ?\n\t remainingLines[remainingLinesIndex++] : undefined;\n\t }\n\t };\n\t\n\t // We need to remember the position of \"remainingLines\"\n\t var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\t\n\t // The generate SourceNodes we need a code range.\n\t // To extract it current and last mapping is used.\n\t // Here we store the last mapping.\n\t var lastMapping = null;\n\t\n\t aSourceMapConsumer.eachMapping(function (mapping) {\n\t if (lastMapping !== null) {\n\t // We add the code from \"lastMapping\" to \"mapping\":\n\t // First check if there is a new line in between.\n\t if (lastGeneratedLine < mapping.generatedLine) {\n\t // Associate first line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t lastGeneratedLine++;\n\t lastGeneratedColumn = 0;\n\t // The remaining code is added without mapping\n\t } else {\n\t // There is no new line in between.\n\t // Associate the code between \"lastGeneratedColumn\" and\n\t // \"mapping.generatedColumn\" with \"lastMapping\"\n\t var nextLine = remainingLines[remainingLinesIndex] || '';\n\t var code = nextLine.substr(0, mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t addMappingWithCode(lastMapping, code);\n\t // No more remaining code, continue\n\t lastMapping = mapping;\n\t return;\n\t }\n\t }\n\t // We add the generated code until the first mapping\n\t // to the SourceNode without any mapping.\n\t // Each line is added as separate string.\n\t while (lastGeneratedLine < mapping.generatedLine) {\n\t node.add(shiftNextLine());\n\t lastGeneratedLine++;\n\t }\n\t if (lastGeneratedColumn < mapping.generatedColumn) {\n\t var nextLine = remainingLines[remainingLinesIndex] || '';\n\t node.add(nextLine.substr(0, mapping.generatedColumn));\n\t remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t }\n\t lastMapping = mapping;\n\t }, this);\n\t // We have processed all mappings.\n\t if (remainingLinesIndex < remainingLines.length) {\n\t if (lastMapping) {\n\t // Associate the remaining code in the current line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t }\n\t // and add the remaining lines without any mapping\n\t node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n\t }\n\t\n\t // Copy sourcesContent into SourceNode\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t if (aRelativePath != null) {\n\t sourceFile = util.join(aRelativePath, sourceFile);\n\t }\n\t node.setSourceContent(sourceFile, content);\n\t }\n\t });\n\t\n\t return node;\n\t\n\t function addMappingWithCode(mapping, code) {\n\t if (mapping === null || mapping.source === undefined) {\n\t node.add(code);\n\t } else {\n\t var source = aRelativePath\n\t ? util.join(aRelativePath, mapping.source)\n\t : mapping.source;\n\t node.add(new SourceNode(mapping.originalLine,\n\t mapping.originalColumn,\n\t source,\n\t code,\n\t mapping.name));\n\t }\n\t }\n\t };\n\t\n\t/**\n\t * Add a chunk of generated JS to this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\tSourceNode.prototype.add = function SourceNode_add(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t aChunk.forEach(function (chunk) {\n\t this.add(chunk);\n\t }, this);\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t if (aChunk) {\n\t this.children.push(aChunk);\n\t }\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Add a chunk of generated JS to the beginning of this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\tSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t for (var i = aChunk.length-1; i >= 0; i--) {\n\t this.prepend(aChunk[i]);\n\t }\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t this.children.unshift(aChunk);\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Walk over the tree of JS snippets in this node and its children. The\n\t * walking function is called once for each snippet of JS and is passed that\n\t * snippet and the its original associated source's line/column location.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\tSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n\t var chunk;\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t chunk = this.children[i];\n\t if (chunk[isSourceNode]) {\n\t chunk.walk(aFn);\n\t }\n\t else {\n\t if (chunk !== '') {\n\t aFn(chunk, { source: this.source,\n\t line: this.line,\n\t column: this.column,\n\t name: this.name });\n\t }\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n\t * each of `this.children`.\n\t *\n\t * @param aSep The separator.\n\t */\n\tSourceNode.prototype.join = function SourceNode_join(aSep) {\n\t var newChildren;\n\t var i;\n\t var len = this.children.length;\n\t if (len > 0) {\n\t newChildren = [];\n\t for (i = 0; i < len-1; i++) {\n\t newChildren.push(this.children[i]);\n\t newChildren.push(aSep);\n\t }\n\t newChildren.push(this.children[i]);\n\t this.children = newChildren;\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Call String.prototype.replace on the very right-most source snippet. Useful\n\t * for trimming whitespace from the end of a source node, etc.\n\t *\n\t * @param aPattern The pattern to replace.\n\t * @param aReplacement The thing to replace the pattern with.\n\t */\n\tSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n\t var lastChild = this.children[this.children.length - 1];\n\t if (lastChild[isSourceNode]) {\n\t lastChild.replaceRight(aPattern, aReplacement);\n\t }\n\t else if (typeof lastChild === 'string') {\n\t this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n\t }\n\t else {\n\t this.children.push(''.replace(aPattern, aReplacement));\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Set the source content for a source file. This will be added to the SourceMapGenerator\n\t * in the sourcesContent field.\n\t *\n\t * @param aSourceFile The filename of the source file\n\t * @param aSourceContent The content of the source file\n\t */\n\tSourceNode.prototype.setSourceContent =\n\t function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n\t this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n\t };\n\t\n\t/**\n\t * Walk over the tree of SourceNodes. The walking function is called for each\n\t * source file content and is passed the filename and source content.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\tSourceNode.prototype.walkSourceContents =\n\t function SourceNode_walkSourceContents(aFn) {\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t if (this.children[i][isSourceNode]) {\n\t this.children[i].walkSourceContents(aFn);\n\t }\n\t }\n\t\n\t var sources = Object.keys(this.sourceContents);\n\t for (var i = 0, len = sources.length; i < len; i++) {\n\t aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n\t }\n\t };\n\t\n\t/**\n\t * Return the string representation of this source node. Walks over the tree\n\t * and concatenates all the various snippets together to one string.\n\t */\n\tSourceNode.prototype.toString = function SourceNode_toString() {\n\t var str = \"\";\n\t this.walk(function (chunk) {\n\t str += chunk;\n\t });\n\t return str;\n\t};\n\t\n\t/**\n\t * Returns the string representation of this source node along with a source\n\t * map.\n\t */\n\tSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n\t var generated = {\n\t code: \"\",\n\t line: 1,\n\t column: 0\n\t };\n\t var map = new SourceMapGenerator(aArgs);\n\t var sourceMappingActive = false;\n\t var lastOriginalSource = null;\n\t var lastOriginalLine = null;\n\t var lastOriginalColumn = null;\n\t var lastOriginalName = null;\n\t this.walk(function (chunk, original) {\n\t generated.code += chunk;\n\t if (original.source !== null\n\t && original.line !== null\n\t && original.column !== null) {\n\t if(lastOriginalSource !== original.source\n\t || lastOriginalLine !== original.line\n\t || lastOriginalColumn !== original.column\n\t || lastOriginalName !== original.name) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t lastOriginalSource = original.source;\n\t lastOriginalLine = original.line;\n\t lastOriginalColumn = original.column;\n\t lastOriginalName = original.name;\n\t sourceMappingActive = true;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t }\n\t });\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t }\n\t for (var idx = 0, length = chunk.length; idx < length; idx++) {\n\t if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n\t generated.line++;\n\t generated.column = 0;\n\t // Mappings end at eol\n\t if (idx + 1 === length) {\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t } else {\n\t generated.column++;\n\t }\n\t }\n\t });\n\t this.walkSourceContents(function (sourceFile, sourceContent) {\n\t map.setSourceContent(sourceFile, sourceContent);\n\t });\n\t\n\t return { code: generated.code, map: map };\n\t};\n\t\n\texports.SourceNode = SourceNode;\n\n\n/***/ })\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// source-map.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 0fd5815da764db5fb9fe","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./source-map.js\n// module id = 0\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-map-generator.js\n// module id = 1\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/base64-vlq.js\n// module id = 2\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/base64.js\n// module id = 3\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // “sources” entry. This value is prepended to the individual\n // entries in the “source” field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // “sourceRoot”, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/util.js\n// module id = 4\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/array-set.js\n// module id = 5\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/mapping-list.js\n// module id = 6\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-map-consumer.js\n// module id = 7\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/binary-search.js\n// module id = 8\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/quick-sort.js\n// module id = 9\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-node.js\n// module id = 10\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file
diff --git a/assets/node_modules/postcss/node_modules/source-map/lib/array-set.js b/assets/node_modules/postcss/node_modules/source-map/lib/array-set.js
deleted file mode 100644
index fbd5c81..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/lib/array-set.js
+++ /dev/null
@@ -1,121 +0,0 @@
-/* -*- 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/assets/node_modules/postcss/node_modules/source-map/lib/base64-vlq.js b/assets/node_modules/postcss/node_modules/source-map/lib/base64-vlq.js
deleted file mode 100644
index 612b404..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/lib/base64-vlq.js
+++ /dev/null
@@ -1,140 +0,0 @@
-/* -*- 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/assets/node_modules/postcss/node_modules/source-map/lib/base64.js b/assets/node_modules/postcss/node_modules/source-map/lib/base64.js
deleted file mode 100644
index 8aa86b3..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/lib/base64.js
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -*- 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/assets/node_modules/postcss/node_modules/source-map/lib/binary-search.js b/assets/node_modules/postcss/node_modules/source-map/lib/binary-search.js
deleted file mode 100644
index 010ac94..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/lib/binary-search.js
+++ /dev/null
@@ -1,111 +0,0 @@
-/* -*- 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/assets/node_modules/postcss/node_modules/source-map/lib/mapping-list.js b/assets/node_modules/postcss/node_modules/source-map/lib/mapping-list.js
deleted file mode 100644
index 06d1274..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/lib/mapping-list.js
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- 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/assets/node_modules/postcss/node_modules/source-map/lib/quick-sort.js b/assets/node_modules/postcss/node_modules/source-map/lib/quick-sort.js
deleted file mode 100644
index 6a7caad..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/lib/quick-sort.js
+++ /dev/null
@@ -1,114 +0,0 @@
-/* -*- 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/assets/node_modules/postcss/node_modules/source-map/lib/source-map-consumer.js b/assets/node_modules/postcss/node_modules/source-map/lib/source-map-consumer.js
deleted file mode 100644
index 7b99d1d..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/lib/source-map-consumer.js
+++ /dev/null
@@ -1,1145 +0,0 @@
-/* -*- 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, aSourceMapURL) {
- var sourceMap = aSourceMap;
- if (typeof aSourceMap === 'string') {
- sourceMap = util.parseSourceMapInput(aSourceMap);
- }
-
- return sourceMap.sections != null
- ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)
- : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);
-}
-
-SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {
- return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);
-}
-
-/**
- * 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', {
- configurable: true,
- enumerable: true,
- get: function () {
- if (!this.__generatedMappings) {
- this._parseMappings(this._mappings, this.sourceRoot);
- }
-
- return this.__generatedMappings;
- }
-});
-
-SourceMapConsumer.prototype.__originalMappings = null;
-Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
- configurable: true,
- enumerable: true,
- 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);
- source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);
- 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. The line number is 1-based.
- * - column: Optional. the column number in the original source.
- * The column number is 0-based.
- *
- * and an array of objects is returned, each with the following properties:
- *
- * - line: The line number in the generated source, or null. The
- * line number is 1-based.
- * - column: The column number in the generated source, or null.
- * The column number is 0-based.
- */
-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)
- };
-
- needle.source = this._findSourceIndex(needle.source);
- if (needle.source < 0) {
- return [];
- }
-
- 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 first 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;"
- * }
- *
- * The second parameter, if given, is a string whose value is the URL
- * at which the source map was found. This URL is used to compute the
- * sources array.
- *
- * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
- */
-function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {
- var sourceMap = aSourceMap;
- if (typeof aSourceMap === 'string') {
- sourceMap = util.parseSourceMapInput(aSourceMap);
- }
-
- 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);
- }
-
- if (sourceRoot) {
- sourceRoot = util.normalize(sourceRoot);
- }
-
- 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._absoluteSources = this._sources.toArray().map(function (s) {
- return util.computeSourceURL(sourceRoot, s, aSourceMapURL);
- });
-
- this.sourceRoot = sourceRoot;
- this.sourcesContent = sourcesContent;
- this._mappings = mappings;
- this._sourceMapURL = aSourceMapURL;
- this.file = file;
-}
-
-BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
-BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
-
-/**
- * Utility function to find the index of a source. Returns -1 if not
- * found.
- */
-BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {
- var relativeSource = aSource;
- if (this.sourceRoot != null) {
- relativeSource = util.relative(this.sourceRoot, relativeSource);
- }
-
- if (this._sources.has(relativeSource)) {
- return this._sources.indexOf(relativeSource);
- }
-
- // Maybe aSource is an absolute URL as returned by |sources|. In
- // this case we can't simply undo the transform.
- var i;
- for (i = 0; i < this._absoluteSources.length; ++i) {
- if (this._absoluteSources[i] == aSource) {
- return i;
- }
- }
-
- return -1;
-};
-
-/**
- * Create a BasicSourceMapConsumer from a SourceMapGenerator.
- *
- * @param SourceMapGenerator aSourceMap
- * The source map that will be consumed.
- * @param String aSourceMapURL
- * The URL at which the source map can be found (optional)
- * @returns BasicSourceMapConsumer
- */
-BasicSourceMapConsumer.fromSourceMap =
- function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {
- 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;
- smc._sourceMapURL = aSourceMapURL;
- smc._absoluteSources = smc._sources.toArray().map(function (s) {
- return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);
- });
-
- // 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._absoluteSources.slice();
- }
-});
-
-/**
- * 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. The line number
- * is 1-based.
- * - column: The column number in the generated source. The column
- * number is 0-based.
- * - 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. The
- * line number is 1-based.
- * - column: The column number in the original source, or null. The
- * column number is 0-based.
- * - 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);
- source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);
- }
- 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;
- }
-
- var index = this._findSourceIndex(aSource);
- if (index >= 0) {
- return this.sourcesContent[index];
- }
-
- var relativeSource = aSource;
- if (this.sourceRoot != null) {
- relativeSource = util.relative(this.sourceRoot, relativeSource);
- }
-
- 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 = relativeSource.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("/" + relativeSource)) {
- return this.sourcesContent[this._sources.indexOf("/" + relativeSource)];
- }
- }
-
- // 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('"' + relativeSource + '" 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. The line number
- * is 1-based.
- * - column: The column number in the original source. The column
- * number is 0-based.
- * - 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. The
- * line number is 1-based.
- * - column: The column number in the generated source, or null.
- * The column number is 0-based.
- */
-BasicSourceMapConsumer.prototype.generatedPositionFor =
- function SourceMapConsumer_generatedPositionFor(aArgs) {
- var source = util.getArg(aArgs, 'source');
- source = this._findSourceIndex(source);
- if (source < 0) {
- return {
- line: null,
- column: null,
- lastColumn: null
- };
- }
-
- 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 first 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;"
- * }
- * }],
- * }
- *
- * The second parameter, if given, is a string whose value is the URL
- * at which the source map was found. This URL is used to compute the
- * sources array.
- *
- * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
- */
-function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {
- var sourceMap = aSourceMap;
- if (typeof aSourceMap === 'string') {
- sourceMap = util.parseSourceMapInput(aSourceMap);
- }
-
- 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'), aSourceMapURL)
- }
- });
-}
-
-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. The line number
- * is 1-based.
- * - column: The column number in the generated source. The column
- * number is 0-based.
- *
- * 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. The
- * line number is 1-based.
- * - column: The column number in the original source, or null. The
- * column number is 0-based.
- * - 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. The line number
- * is 1-based.
- * - column: The column number in the original source. The column
- * number is 0-based.
- *
- * and an object is returned with the following properties:
- *
- * - line: The line number in the generated source, or null. The
- * line number is 1-based.
- * - column: The column number in the generated source, or null.
- * The column number is 0-based.
- */
-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._findSourceIndex(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);
- source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);
- this._sources.add(source);
- source = this._sources.indexOf(source);
-
- var name = null;
- if (mapping.name) {
- 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/assets/node_modules/postcss/node_modules/source-map/lib/source-map-generator.js b/assets/node_modules/postcss/node_modules/source-map/lib/source-map-generator.js
deleted file mode 100644
index 508bcfb..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/lib/source-map-generator.js
+++ /dev/null
@@ -1,425 +0,0 @@
-/* -*- 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 sourceRelative = sourceFile;
- if (sourceRoot !== null) {
- sourceRelative = util.relative(sourceRoot, sourceFile);
- }
-
- if (!generator._sources.has(sourceRelative)) {
- generator._sources.add(sourceRelative);
- }
-
- 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/assets/node_modules/postcss/node_modules/source-map/lib/source-node.js b/assets/node_modules/postcss/node_modules/source-map/lib/source-node.js
deleted file mode 100644
index 8bcdbe3..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/lib/source-node.js
+++ /dev/null
@@ -1,413 +0,0 @@
-/* -*- 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/assets/node_modules/postcss/node_modules/source-map/lib/util.js b/assets/node_modules/postcss/node_modules/source-map/lib/util.js
deleted file mode 100644
index 3ca92e5..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/lib/util.js
+++ /dev/null
@@ -1,488 +0,0 @@
-/* -*- 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+))?(.*)$/;
-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) === '/' || urlRegexp.test(aPath);
-};
-
-/**
- * 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 = 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 || onlyCompareOriginal) {
- return cmp;
- }
-
- cmp = mappingA.generatedColumn - mappingB.generatedColumn;
- if (cmp !== 0) {
- return cmp;
- }
-
- cmp = mappingA.generatedLine - mappingB.generatedLine;
- if (cmp !== 0) {
- return cmp;
- }
-
- return strcmp(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 = 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.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
-
-function strcmp(aStr1, aStr2) {
- if (aStr1 === aStr2) {
- return 0;
- }
-
- if (aStr1 === null) {
- return 1; // aStr2 !== null
- }
-
- if (aStr2 === null) {
- return -1; // aStr1 !== null
- }
-
- 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;
-
-/**
- * Strip any JSON XSSI avoidance prefix from the string (as documented
- * in the source maps specification), and then parse the string as
- * JSON.
- */
-function parseSourceMapInput(str) {
- return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ''));
-}
-exports.parseSourceMapInput = parseSourceMapInput;
-
-/**
- * Compute the URL of a source given the the source root, the source's
- * URL, and the source map's URL.
- */
-function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {
- sourceURL = sourceURL || '';
-
- if (sourceRoot) {
- // This follows what Chrome does.
- if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {
- sourceRoot += '/';
- }
- // The spec says:
- // Line 4: An optional source root, useful for relocating source
- // files on a server or removing repeated values in the
- // “sources” entry. This value is prepended to the individual
- // entries in the “source” field.
- sourceURL = sourceRoot + sourceURL;
- }
-
- // Historically, SourceMapConsumer did not take the sourceMapURL as
- // a parameter. This mode is still somewhat supported, which is why
- // this code block is conditional. However, it's preferable to pass
- // the source map URL to SourceMapConsumer, so that this function
- // can implement the source URL resolution algorithm as outlined in
- // the spec. This block is basically the equivalent of:
- // new URL(sourceURL, sourceMapURL).toString()
- // ... except it avoids using URL, which wasn't available in the
- // older releases of node still supported by this library.
- //
- // The spec says:
- // If the sources are not absolute URLs after prepending of the
- // “sourceRoot”, the sources are resolved relative to the
- // SourceMap (like resolving script src in a html document).
- if (sourceMapURL) {
- var parsed = urlParse(sourceMapURL);
- if (!parsed) {
- throw new Error("sourceMapURL could not be parsed");
- }
- if (parsed.path) {
- // Strip the last path component, but keep the "/".
- var index = parsed.path.lastIndexOf('/');
- if (index >= 0) {
- parsed.path = parsed.path.substring(0, index + 1);
- }
- }
- sourceURL = join(urlGenerate(parsed), sourceURL);
- }
-
- return normalize(sourceURL);
-}
-exports.computeSourceURL = computeSourceURL;
diff --git a/assets/node_modules/postcss/node_modules/source-map/package.json b/assets/node_modules/postcss/node_modules/source-map/package.json
deleted file mode 100644
index 2466341..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/package.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "name": "source-map",
- "description": "Generates and consumes source maps",
- "version": "0.6.1",
- "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",
- "source-map.d.ts",
- "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/assets/node_modules/postcss/node_modules/source-map/source-map.d.ts b/assets/node_modules/postcss/node_modules/source-map/source-map.d.ts
deleted file mode 100644
index 8f972b0..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/source-map.d.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-export interface StartOfSourceMap {
- file?: string;
- sourceRoot?: string;
-}
-
-export interface RawSourceMap extends StartOfSourceMap {
- version: string;
- sources: string[];
- names: string[];
- sourcesContent?: string[];
- mappings: string;
-}
-
-export interface Position {
- line: number;
- column: number;
-}
-
-export interface LineRange extends Position {
- lastColumn: number;
-}
-
-export interface FindPosition extends Position {
- // SourceMapConsumer.GREATEST_LOWER_BOUND or SourceMapConsumer.LEAST_UPPER_BOUND
- bias?: number;
-}
-
-export interface SourceFindPosition extends FindPosition {
- source: string;
-}
-
-export interface MappedPosition extends Position {
- source: string;
- name?: string;
-}
-
-export interface MappingItem {
- source: string;
- generatedLine: number;
- generatedColumn: number;
- originalLine: number;
- originalColumn: number;
- name: string;
-}
-
-export class SourceMapConsumer {
- static GENERATED_ORDER: number;
- static ORIGINAL_ORDER: number;
-
- static GREATEST_LOWER_BOUND: number;
- static LEAST_UPPER_BOUND: number;
-
- constructor(rawSourceMap: RawSourceMap);
- computeColumnSpans(): void;
- originalPositionFor(generatedPosition: FindPosition): MappedPosition;
- generatedPositionFor(originalPosition: SourceFindPosition): LineRange;
- allGeneratedPositionsFor(originalPosition: MappedPosition): Position[];
- hasContentsOfAllSources(): boolean;
- sourceContentFor(source: string, returnNullOnMissing?: boolean): string;
- eachMapping(callback: (mapping: MappingItem) => void, context?: any, order?: number): void;
-}
-
-export interface Mapping {
- generated: Position;
- original: Position;
- source: string;
- name?: string;
-}
-
-export class SourceMapGenerator {
- constructor(startOfSourceMap?: StartOfSourceMap);
- static fromSourceMap(sourceMapConsumer: SourceMapConsumer): SourceMapGenerator;
- addMapping(mapping: Mapping): void;
- setSourceContent(sourceFile: string, sourceContent: string): void;
- applySourceMap(sourceMapConsumer: SourceMapConsumer, sourceFile?: string, sourceMapPath?: string): void;
- toString(): string;
-}
-
-export interface CodeWithSourceMap {
- code: string;
- map: SourceMapGenerator;
-}
-
-export class SourceNode {
- constructor();
- constructor(line: number, column: number, source: string);
- constructor(line: number, column: number, source: string, chunk?: string, name?: string);
- static fromStringWithSourceMap(code: string, sourceMapConsumer: SourceMapConsumer, relativePath?: string): SourceNode;
- add(chunk: string): void;
- prepend(chunk: string): void;
- setSourceContent(sourceFile: string, sourceContent: string): void;
- walk(fn: (chunk: string, mapping: MappedPosition) => void): void;
- walkSourceContents(fn: (file: string, content: string) => void): void;
- join(sep: string): SourceNode;
- replaceRight(pattern: string, replacement: string): SourceNode;
- toString(): string;
- toStringWithSourceMap(startOfSourceMap?: StartOfSourceMap): CodeWithSourceMap;
-}
diff --git a/assets/node_modules/postcss/node_modules/source-map/source-map.js b/assets/node_modules/postcss/node_modules/source-map/source-map.js
deleted file mode 100644
index bc88fe8..0000000
--- a/assets/node_modules/postcss/node_modules/source-map/source-map.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- * 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/assets/node_modules/postcss/node_modules/supports-color/browser.js b/assets/node_modules/postcss/node_modules/supports-color/browser.js
deleted file mode 100644
index 62afa3a..0000000
--- a/assets/node_modules/postcss/node_modules/supports-color/browser.js
+++ /dev/null
@@ -1,5 +0,0 @@
-'use strict';
-module.exports = {
- stdout: false,
- stderr: false
-};
diff --git a/assets/node_modules/postcss/node_modules/supports-color/index.js b/assets/node_modules/postcss/node_modules/supports-color/index.js
deleted file mode 100644
index 0477d30..0000000
--- a/assets/node_modules/postcss/node_modules/supports-color/index.js
+++ /dev/null
@@ -1,138 +0,0 @@
-'use strict';
-const os = require('os');
-const hasFlag = require('has-flag');
-
-const {env} = process;
-
-let forceColor;
-if (hasFlag('no-color') ||
- hasFlag('no-colors') ||
- hasFlag('color=false') ||
- hasFlag('color=never')) {
- forceColor = 0;
-} else if (hasFlag('color') ||
- hasFlag('colors') ||
- hasFlag('color=true') ||
- hasFlag('color=always')) {
- forceColor = 1;
-}
-if ('FORCE_COLOR' in env) {
- if (env.FORCE_COLOR === true || env.FORCE_COLOR === 'true') {
- forceColor = 1;
- } else if (env.FORCE_COLOR === false || env.FORCE_COLOR === 'false') {
- forceColor = 0;
- } else {
- forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);
- }
-}
-
-function translateLevel(level) {
- if (level === 0) {
- return false;
- }
-
- return {
- level,
- hasBasic: true,
- has256: level >= 2,
- has16m: level >= 3
- };
-}
-
-function supportsColor(stream) {
- if (forceColor === 0) {
- 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 === undefined) {
- return 0;
- }
-
- const min = forceColor || 0;
-
- if (env.TERM === 'dumb') {
- return min;
- }
-
- 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;
- }
-
- 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/assets/node_modules/postcss/node_modules/supports-color/license b/assets/node_modules/postcss/node_modules/supports-color/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/postcss/node_modules/supports-color/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/postcss/node_modules/supports-color/package.json b/assets/node_modules/postcss/node_modules/supports-color/package.json
deleted file mode 100644
index db4ded2..0000000
--- a/assets/node_modules/postcss/node_modules/supports-color/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "name": "supports-color",
- "version": "6.1.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": ">=6"
- },
- "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.23.0"
- },
- "browser": "browser.js"
-}
diff --git a/assets/node_modules/postcss/node_modules/supports-color/readme.md b/assets/node_modules/postcss/node_modules/supports-color/readme.md
deleted file mode 100644
index d4cc58a..0000000
--- a/assets/node_modules/postcss/node_modules/supports-color/readme.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# 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
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-supports-color?utm_source=npm-supports-color&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
-
----
-
-
-## 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.
-
-For situations where using `--color` is not possible, use the environment variable `FORCE_COLOR=1` (level 1), `FORCE_COLOR=2` (level 2), or `FORCE_COLOR=3` (level 3) 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.
-
-
-## Security
-
-To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
-
-
-## 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/assets/node_modules/postcss/package.json b/assets/node_modules/postcss/package.json
deleted file mode 100644
index 3c5626b..0000000
--- a/assets/node_modules/postcss/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "name": "postcss",
- "version": "7.0.26",
- "description": "Tool for transforming styles with JS plugins",
- "engines": {
- "node": ">=6.0.0"
- },
- "keywords": ["css", "postcss", "rework", "preprocessor", "parser", "source map", "transform", "manipulation", "transpiler"],
- "funding": {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- "author": "Andrey Sitnik <andrey@sitnik.ru>",
- "license": "MIT",
- "homepage": "https://postcss.org/",
- "repository": "postcss/postcss",
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "main": "lib/postcss",
- "types": "lib/postcss.d.ts",
- "husky": {
- "hooks": {
- "pre-commit": "lint-staged"
- }
- },
- "browser": {
- "./lib/terminal-highlight": false,
- "supports-color": false,
- "chalk": false,
- "fs": false
- },
- "browserslist": ["last 2 version", "not dead", "not Explorer 11", "not ExplorerMobile 11", "node 6"]
-} \ No newline at end of file
diff --git a/assets/node_modules/punycode/LICENSE-MIT.txt b/assets/node_modules/punycode/LICENSE-MIT.txt
deleted file mode 100644
index a41e0a7..0000000
--- a/assets/node_modules/punycode/LICENSE-MIT.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-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/assets/node_modules/punycode/README.md b/assets/node_modules/punycode/README.md
deleted file mode 100644
index ee2f9d6..0000000
--- a/assets/node_modules/punycode/README.md
+++ /dev/null
@@ -1,122 +0,0 @@
-# Punycode.js [![Build status](https://travis-ci.org/bestiejs/punycode.js.svg?branch=master)](https://travis-ci.org/bestiejs/punycode.js) [![Code coverage status](http://img.shields.io/codecov/c/github/bestiejs/punycode.js.svg)](https://codecov.io/gh/bestiejs/punycode.js) [![Dependency status](https://gemnasium.com/bestiejs/punycode.js.svg)](https://gemnasium.com/bestiejs/punycode.js)
-
-Punycode.js is a robust Punycode converter that fully complies to [RFC 3492](https://tools.ietf.org/html/rfc3492) and [RFC 5891](https://tools.ietf.org/html/rfc5891).
-
-This JavaScript library is the result of comparing, optimizing and documenting different open-source implementations of the Punycode algorithm:
-
-* [The C example code from RFC 3492](https://tools.ietf.org/html/rfc3492#appendix-C)
-* [`punycode.c` by _Markus W. Scherer_ (IBM)](http://opensource.apple.com/source/ICU/ICU-400.42/icuSources/common/punycode.c)
-* [`punycode.c` by _Ben Noordhuis_](https://github.com/bnoordhuis/punycode/blob/master/punycode.c)
-* [JavaScript implementation by _some_](http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion/301287#301287)
-* [`punycode.js` by _Ben Noordhuis_](https://github.com/joyent/node/blob/426298c8c1c0d5b5224ac3658c41e7c2a3fe9377/lib/punycode.js) (note: [not fully compliant](https://github.com/joyent/node/issues/2072))
-
-This project was [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with Node.js from [v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc) until [v7](https://github.com/nodejs/node/pull/7941) (soft-deprecated).
-
-The current version supports recent versions of Node.js only. It provides a CommonJS module and an ES6 module. For the old version that offers the same functionality with broader support, including Rhino, Ringo, Narwhal, and web browsers, see [v1.4.1](https://github.com/bestiejs/punycode.js/releases/tag/v1.4.1).
-
-## Installation
-
-Via [npm](https://www.npmjs.com/):
-
-```bash
-npm install punycode --save
-```
-
-In [Node.js](https://nodejs.org/):
-
-```js
-const punycode = require('punycode');
-```
-
-## API
-
-### `punycode.decode(string)`
-
-Converts a Punycode string of ASCII symbols to a string of Unicode symbols.
-
-```js
-// decode domain name parts
-punycode.decode('maana-pta'); // 'mañana'
-punycode.decode('--dqo34k'); // '☃-⌘'
-```
-
-### `punycode.encode(string)`
-
-Converts a string of Unicode symbols to a Punycode string of ASCII symbols.
-
-```js
-// encode domain name parts
-punycode.encode('mañana'); // 'maana-pta'
-punycode.encode('☃-⌘'); // '--dqo34k'
-```
-
-### `punycode.toUnicode(input)`
-
-Converts a Punycode string representing a domain name or an email address to Unicode. Only the Punycoded parts of the input will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode.
-
-```js
-// decode domain names
-punycode.toUnicode('xn--maana-pta.com');
-// → 'mañana.com'
-punycode.toUnicode('xn----dqo34k.com');
-// → '☃-⌘.com'
-
-// decode email addresses
-punycode.toUnicode('джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq');
-// → 'джумла@джpумлатест.bрфa'
-```
-
-### `punycode.toASCII(input)`
-
-Converts a lowercased Unicode string representing a domain name or an email address to Punycode. Only the non-ASCII parts of the input will be converted, i.e. it doesn’t matter if you call it with a domain that’s already in ASCII.
-
-```js
-// encode domain names
-punycode.toASCII('mañana.com');
-// → 'xn--maana-pta.com'
-punycode.toASCII('☃-⌘.com');
-// → 'xn----dqo34k.com'
-
-// encode email addresses
-punycode.toASCII('джумла@джpумлатест.bрфa');
-// → 'джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq'
-```
-
-### `punycode.ucs2`
-
-#### `punycode.ucs2.decode(string)`
-
-Creates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](https://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16.
-
-```js
-punycode.ucs2.decode('abc');
-// → [0x61, 0x62, 0x63]
-// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE:
-punycode.ucs2.decode('\uD834\uDF06');
-// → [0x1D306]
-```
-
-#### `punycode.ucs2.encode(codePoints)`
-
-Creates a string based on an array of numeric code point values.
-
-```js
-punycode.ucs2.encode([0x61, 0x62, 0x63]);
-// → 'abc'
-punycode.ucs2.encode([0x1D306]);
-// → '\uD834\uDF06'
-```
-
-### `punycode.version`
-
-A string representing the current Punycode.js version number.
-
-## Author
-
-| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") |
-|---|
-| [Mathias Bynens](https://mathiasbynens.be/) |
-
-## License
-
-Punycode.js is available under the [MIT](https://mths.be/mit) license.
diff --git a/assets/node_modules/punycode/package.json b/assets/node_modules/punycode/package.json
deleted file mode 100644
index 9202ccf..0000000
--- a/assets/node_modules/punycode/package.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "punycode",
- "version": "2.1.1",
- "description": "A robust Punycode converter that fully complies to RFC 3492 and RFC 5891, and works on nearly all JavaScript platforms.",
- "homepage": "https://mths.be/punycode",
- "main": "punycode.js",
- "jsnext:main": "punycode.es6.js",
- "module": "punycode.es6.js",
- "engines": {
- "node": ">=6"
- },
- "keywords": [
- "punycode",
- "unicode",
- "idn",
- "idna",
- "dns",
- "url",
- "domain"
- ],
- "license": "MIT",
- "author": {
- "name": "Mathias Bynens",
- "url": "https://mathiasbynens.be/"
- },
- "contributors": [
- {
- "name": "Mathias Bynens",
- "url": "https://mathiasbynens.be/"
- }
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/bestiejs/punycode.js.git"
- },
- "bugs": "https://github.com/bestiejs/punycode.js/issues",
- "files": [
- "LICENSE-MIT.txt",
- "punycode.js",
- "punycode.es6.js"
- ],
- "scripts": {
- "test": "mocha tests",
- "prepublish": "node scripts/prepublish.js"
- },
- "devDependencies": {
- "codecov": "^1.0.1",
- "istanbul": "^0.4.1",
- "mocha": "^2.5.3"
- },
- "jspm": {
- "map": {
- "./punycode.js": {
- "node": "@node/punycode"
- }
- }
- }
-}
diff --git a/assets/node_modules/punycode/punycode.es6.js b/assets/node_modules/punycode/punycode.es6.js
deleted file mode 100644
index 4610bc9..0000000
--- a/assets/node_modules/punycode/punycode.es6.js
+++ /dev/null
@@ -1,441 +0,0 @@
-'use strict';
-
-/** Highest positive signed 32-bit float value */
-const maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1
-
-/** Bootstring parameters */
-const base = 36;
-const tMin = 1;
-const tMax = 26;
-const skew = 38;
-const damp = 700;
-const initialBias = 72;
-const initialN = 128; // 0x80
-const delimiter = '-'; // '\x2D'
-
-/** Regular expressions */
-const regexPunycode = /^xn--/;
-const regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars
-const regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators
-
-/** Error messages */
-const errors = {
- 'overflow': 'Overflow: input needs wider integers to process',
- 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
- 'invalid-input': 'Invalid input'
-};
-
-/** Convenience shortcuts */
-const baseMinusTMin = base - tMin;
-const floor = Math.floor;
-const stringFromCharCode = String.fromCharCode;
-
-/*--------------------------------------------------------------------------*/
-
-/**
- * A generic error utility function.
- * @private
- * @param {String} type The error type.
- * @returns {Error} Throws a `RangeError` with the applicable error message.
- */
-function error(type) {
- throw new RangeError(errors[type]);
-}
-
-/**
- * A generic `Array#map` utility function.
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} callback The function that gets called for every array
- * item.
- * @returns {Array} A new array of values returned by the callback function.
- */
-function map(array, fn) {
- const result = [];
- let length = array.length;
- while (length--) {
- result[length] = fn(array[length]);
- }
- return result;
-}
-
-/**
- * A simple `Array#map`-like wrapper to work with domain name strings or email
- * addresses.
- * @private
- * @param {String} domain The domain name or email address.
- * @param {Function} callback The function that gets called for every
- * character.
- * @returns {Array} A new string of characters returned by the callback
- * function.
- */
-function mapDomain(string, fn) {
- const parts = string.split('@');
- let result = '';
- if (parts.length > 1) {
- // In email addresses, only the domain name should be punycoded. Leave
- // the local part (i.e. everything up to `@`) intact.
- result = parts[0] + '@';
- string = parts[1];
- }
- // Avoid `split(regex)` for IE8 compatibility. See #17.
- string = string.replace(regexSeparators, '\x2E');
- const labels = string.split('.');
- const encoded = map(labels, fn).join('.');
- return result + encoded;
-}
-
-/**
- * Creates an array containing the numeric code points of each Unicode
- * character in the string. While JavaScript uses UCS-2 internally,
- * this function will convert a pair of surrogate halves (each of which
- * UCS-2 exposes as separate characters) into a single code point,
- * matching UTF-16.
- * @see `punycode.ucs2.encode`
- * @see <https://mathiasbynens.be/notes/javascript-encoding>
- * @memberOf punycode.ucs2
- * @name decode
- * @param {String} string The Unicode input string (UCS-2).
- * @returns {Array} The new array of code points.
- */
-function ucs2decode(string) {
- const output = [];
- let counter = 0;
- const length = string.length;
- while (counter < length) {
- const value = string.charCodeAt(counter++);
- if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
- // It's a high surrogate, and there is a next character.
- const extra = string.charCodeAt(counter++);
- if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.
- output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
- } else {
- // It's an unmatched surrogate; only append this code unit, in case the
- // next code unit is the high surrogate of a surrogate pair.
- output.push(value);
- counter--;
- }
- } else {
- output.push(value);
- }
- }
- return output;
-}
-
-/**
- * Creates a string based on an array of numeric code points.
- * @see `punycode.ucs2.decode`
- * @memberOf punycode.ucs2
- * @name encode
- * @param {Array} codePoints The array of numeric code points.
- * @returns {String} The new Unicode string (UCS-2).
- */
-const ucs2encode = array => String.fromCodePoint(...array);
-
-/**
- * Converts a basic code point into a digit/integer.
- * @see `digitToBasic()`
- * @private
- * @param {Number} codePoint The basic numeric code point value.
- * @returns {Number} The numeric value of a basic code point (for use in
- * representing integers) in the range `0` to `base - 1`, or `base` if
- * the code point does not represent a value.
- */
-const basicToDigit = function(codePoint) {
- if (codePoint - 0x30 < 0x0A) {
- return codePoint - 0x16;
- }
- if (codePoint - 0x41 < 0x1A) {
- return codePoint - 0x41;
- }
- if (codePoint - 0x61 < 0x1A) {
- return codePoint - 0x61;
- }
- return base;
-};
-
-/**
- * Converts a digit/integer into a basic code point.
- * @see `basicToDigit()`
- * @private
- * @param {Number} digit The numeric value of a basic code point.
- * @returns {Number} The basic code point whose value (when used for
- * representing integers) is `digit`, which needs to be in the range
- * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
- * used; else, the lowercase form is used. The behavior is undefined
- * if `flag` is non-zero and `digit` has no uppercase form.
- */
-const digitToBasic = function(digit, flag) {
- // 0..25 map to ASCII a..z or A..Z
- // 26..35 map to ASCII 0..9
- return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
-};
-
-/**
- * Bias adaptation function as per section 3.4 of RFC 3492.
- * https://tools.ietf.org/html/rfc3492#section-3.4
- * @private
- */
-const adapt = function(delta, numPoints, firstTime) {
- let k = 0;
- delta = firstTime ? floor(delta / damp) : delta >> 1;
- delta += floor(delta / numPoints);
- for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
- delta = floor(delta / baseMinusTMin);
- }
- return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
-};
-
-/**
- * Converts a Punycode string of ASCII-only symbols to a string of Unicode
- * symbols.
- * @memberOf punycode
- * @param {String} input The Punycode string of ASCII-only symbols.
- * @returns {String} The resulting string of Unicode symbols.
- */
-const decode = function(input) {
- // Don't use UCS-2.
- const output = [];
- const inputLength = input.length;
- let i = 0;
- let n = initialN;
- let bias = initialBias;
-
- // Handle the basic code points: let `basic` be the number of input code
- // points before the last delimiter, or `0` if there is none, then copy
- // the first basic code points to the output.
-
- let basic = input.lastIndexOf(delimiter);
- if (basic < 0) {
- basic = 0;
- }
-
- for (let j = 0; j < basic; ++j) {
- // if it's not a basic code point
- if (input.charCodeAt(j) >= 0x80) {
- error('not-basic');
- }
- output.push(input.charCodeAt(j));
- }
-
- // Main decoding loop: start just after the last delimiter if any basic code
- // points were copied; start at the beginning otherwise.
-
- for (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
-
- // `index` is the index of the next character to be consumed.
- // Decode a generalized variable-length integer into `delta`,
- // which gets added to `i`. The overflow checking is easier
- // if we increase `i` as we go, then subtract off its starting
- // value at the end to obtain `delta`.
- let oldi = i;
- for (let w = 1, k = base; /* no condition */; k += base) {
-
- if (index >= inputLength) {
- error('invalid-input');
- }
-
- const digit = basicToDigit(input.charCodeAt(index++));
-
- if (digit >= base || digit > floor((maxInt - i) / w)) {
- error('overflow');
- }
-
- i += digit * w;
- const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
-
- if (digit < t) {
- break;
- }
-
- const baseMinusT = base - t;
- if (w > floor(maxInt / baseMinusT)) {
- error('overflow');
- }
-
- w *= baseMinusT;
-
- }
-
- const out = output.length + 1;
- bias = adapt(i - oldi, out, oldi == 0);
-
- // `i` was supposed to wrap around from `out` to `0`,
- // incrementing `n` each time, so we'll fix that now:
- if (floor(i / out) > maxInt - n) {
- error('overflow');
- }
-
- n += floor(i / out);
- i %= out;
-
- // Insert `n` at position `i` of the output.
- output.splice(i++, 0, n);
-
- }
-
- return String.fromCodePoint(...output);
-};
-
-/**
- * Converts a string of Unicode symbols (e.g. a domain name label) to a
- * Punycode string of ASCII-only symbols.
- * @memberOf punycode
- * @param {String} input The string of Unicode symbols.
- * @returns {String} The resulting Punycode string of ASCII-only symbols.
- */
-const encode = function(input) {
- const output = [];
-
- // Convert the input in UCS-2 to an array of Unicode code points.
- input = ucs2decode(input);
-
- // Cache the length.
- let inputLength = input.length;
-
- // Initialize the state.
- let n = initialN;
- let delta = 0;
- let bias = initialBias;
-
- // Handle the basic code points.
- for (const currentValue of input) {
- if (currentValue < 0x80) {
- output.push(stringFromCharCode(currentValue));
- }
- }
-
- let basicLength = output.length;
- let handledCPCount = basicLength;
-
- // `handledCPCount` is the number of code points that have been handled;
- // `basicLength` is the number of basic code points.
-
- // Finish the basic string with a delimiter unless it's empty.
- if (basicLength) {
- output.push(delimiter);
- }
-
- // Main encoding loop:
- while (handledCPCount < inputLength) {
-
- // All non-basic code points < n have been handled already. Find the next
- // larger one:
- let m = maxInt;
- for (const currentValue of input) {
- if (currentValue >= n && currentValue < m) {
- m = currentValue;
- }
- }
-
- // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
- // but guard against overflow.
- const handledCPCountPlusOne = handledCPCount + 1;
- if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
- error('overflow');
- }
-
- delta += (m - n) * handledCPCountPlusOne;
- n = m;
-
- for (const currentValue of input) {
- if (currentValue < n && ++delta > maxInt) {
- error('overflow');
- }
- if (currentValue == n) {
- // Represent delta as a generalized variable-length integer.
- let q = delta;
- for (let k = base; /* no condition */; k += base) {
- const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
- if (q < t) {
- break;
- }
- const qMinusT = q - t;
- const baseMinusT = base - t;
- output.push(
- stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
- );
- q = floor(qMinusT / baseMinusT);
- }
-
- output.push(stringFromCharCode(digitToBasic(q, 0)));
- bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
- delta = 0;
- ++handledCPCount;
- }
- }
-
- ++delta;
- ++n;
-
- }
- return output.join('');
-};
-
-/**
- * Converts a Punycode string representing a domain name or an email address
- * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
- * it doesn't matter if you call it on a string that has already been
- * converted to Unicode.
- * @memberOf punycode
- * @param {String} input The Punycoded domain name or email address to
- * convert to Unicode.
- * @returns {String} The Unicode representation of the given Punycode
- * string.
- */
-const toUnicode = function(input) {
- return mapDomain(input, function(string) {
- return regexPunycode.test(string)
- ? decode(string.slice(4).toLowerCase())
- : string;
- });
-};
-
-/**
- * Converts a Unicode string representing a domain name or an email address to
- * Punycode. Only the non-ASCII parts of the domain name will be converted,
- * i.e. it doesn't matter if you call it with a domain that's already in
- * ASCII.
- * @memberOf punycode
- * @param {String} input The domain name or email address to convert, as a
- * Unicode string.
- * @returns {String} The Punycode representation of the given domain name or
- * email address.
- */
-const toASCII = function(input) {
- return mapDomain(input, function(string) {
- return regexNonASCII.test(string)
- ? 'xn--' + encode(string)
- : string;
- });
-};
-
-/*--------------------------------------------------------------------------*/
-
-/** Define the public API */
-const punycode = {
- /**
- * A string representing the current Punycode.js version number.
- * @memberOf punycode
- * @type String
- */
- 'version': '2.1.0',
- /**
- * An object of methods to convert from JavaScript's internal character
- * representation (UCS-2) to Unicode code points, and back.
- * @see <https://mathiasbynens.be/notes/javascript-encoding>
- * @memberOf punycode
- * @type Object
- */
- 'ucs2': {
- 'decode': ucs2decode,
- 'encode': ucs2encode
- },
- 'decode': decode,
- 'encode': encode,
- 'toASCII': toASCII,
- 'toUnicode': toUnicode
-};
-
-export { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };
-export default punycode;
diff --git a/assets/node_modules/punycode/punycode.js b/assets/node_modules/punycode/punycode.js
deleted file mode 100644
index ea61fd0..0000000
--- a/assets/node_modules/punycode/punycode.js
+++ /dev/null
@@ -1,440 +0,0 @@
-'use strict';
-
-/** Highest positive signed 32-bit float value */
-const maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1
-
-/** Bootstring parameters */
-const base = 36;
-const tMin = 1;
-const tMax = 26;
-const skew = 38;
-const damp = 700;
-const initialBias = 72;
-const initialN = 128; // 0x80
-const delimiter = '-'; // '\x2D'
-
-/** Regular expressions */
-const regexPunycode = /^xn--/;
-const regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars
-const regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators
-
-/** Error messages */
-const errors = {
- 'overflow': 'Overflow: input needs wider integers to process',
- 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
- 'invalid-input': 'Invalid input'
-};
-
-/** Convenience shortcuts */
-const baseMinusTMin = base - tMin;
-const floor = Math.floor;
-const stringFromCharCode = String.fromCharCode;
-
-/*--------------------------------------------------------------------------*/
-
-/**
- * A generic error utility function.
- * @private
- * @param {String} type The error type.
- * @returns {Error} Throws a `RangeError` with the applicable error message.
- */
-function error(type) {
- throw new RangeError(errors[type]);
-}
-
-/**
- * A generic `Array#map` utility function.
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} callback The function that gets called for every array
- * item.
- * @returns {Array} A new array of values returned by the callback function.
- */
-function map(array, fn) {
- const result = [];
- let length = array.length;
- while (length--) {
- result[length] = fn(array[length]);
- }
- return result;
-}
-
-/**
- * A simple `Array#map`-like wrapper to work with domain name strings or email
- * addresses.
- * @private
- * @param {String} domain The domain name or email address.
- * @param {Function} callback The function that gets called for every
- * character.
- * @returns {Array} A new string of characters returned by the callback
- * function.
- */
-function mapDomain(string, fn) {
- const parts = string.split('@');
- let result = '';
- if (parts.length > 1) {
- // In email addresses, only the domain name should be punycoded. Leave
- // the local part (i.e. everything up to `@`) intact.
- result = parts[0] + '@';
- string = parts[1];
- }
- // Avoid `split(regex)` for IE8 compatibility. See #17.
- string = string.replace(regexSeparators, '\x2E');
- const labels = string.split('.');
- const encoded = map(labels, fn).join('.');
- return result + encoded;
-}
-
-/**
- * Creates an array containing the numeric code points of each Unicode
- * character in the string. While JavaScript uses UCS-2 internally,
- * this function will convert a pair of surrogate halves (each of which
- * UCS-2 exposes as separate characters) into a single code point,
- * matching UTF-16.
- * @see `punycode.ucs2.encode`
- * @see <https://mathiasbynens.be/notes/javascript-encoding>
- * @memberOf punycode.ucs2
- * @name decode
- * @param {String} string The Unicode input string (UCS-2).
- * @returns {Array} The new array of code points.
- */
-function ucs2decode(string) {
- const output = [];
- let counter = 0;
- const length = string.length;
- while (counter < length) {
- const value = string.charCodeAt(counter++);
- if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
- // It's a high surrogate, and there is a next character.
- const extra = string.charCodeAt(counter++);
- if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.
- output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
- } else {
- // It's an unmatched surrogate; only append this code unit, in case the
- // next code unit is the high surrogate of a surrogate pair.
- output.push(value);
- counter--;
- }
- } else {
- output.push(value);
- }
- }
- return output;
-}
-
-/**
- * Creates a string based on an array of numeric code points.
- * @see `punycode.ucs2.decode`
- * @memberOf punycode.ucs2
- * @name encode
- * @param {Array} codePoints The array of numeric code points.
- * @returns {String} The new Unicode string (UCS-2).
- */
-const ucs2encode = array => String.fromCodePoint(...array);
-
-/**
- * Converts a basic code point into a digit/integer.
- * @see `digitToBasic()`
- * @private
- * @param {Number} codePoint The basic numeric code point value.
- * @returns {Number} The numeric value of a basic code point (for use in
- * representing integers) in the range `0` to `base - 1`, or `base` if
- * the code point does not represent a value.
- */
-const basicToDigit = function(codePoint) {
- if (codePoint - 0x30 < 0x0A) {
- return codePoint - 0x16;
- }
- if (codePoint - 0x41 < 0x1A) {
- return codePoint - 0x41;
- }
- if (codePoint - 0x61 < 0x1A) {
- return codePoint - 0x61;
- }
- return base;
-};
-
-/**
- * Converts a digit/integer into a basic code point.
- * @see `basicToDigit()`
- * @private
- * @param {Number} digit The numeric value of a basic code point.
- * @returns {Number} The basic code point whose value (when used for
- * representing integers) is `digit`, which needs to be in the range
- * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
- * used; else, the lowercase form is used. The behavior is undefined
- * if `flag` is non-zero and `digit` has no uppercase form.
- */
-const digitToBasic = function(digit, flag) {
- // 0..25 map to ASCII a..z or A..Z
- // 26..35 map to ASCII 0..9
- return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
-};
-
-/**
- * Bias adaptation function as per section 3.4 of RFC 3492.
- * https://tools.ietf.org/html/rfc3492#section-3.4
- * @private
- */
-const adapt = function(delta, numPoints, firstTime) {
- let k = 0;
- delta = firstTime ? floor(delta / damp) : delta >> 1;
- delta += floor(delta / numPoints);
- for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
- delta = floor(delta / baseMinusTMin);
- }
- return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
-};
-
-/**
- * Converts a Punycode string of ASCII-only symbols to a string of Unicode
- * symbols.
- * @memberOf punycode
- * @param {String} input The Punycode string of ASCII-only symbols.
- * @returns {String} The resulting string of Unicode symbols.
- */
-const decode = function(input) {
- // Don't use UCS-2.
- const output = [];
- const inputLength = input.length;
- let i = 0;
- let n = initialN;
- let bias = initialBias;
-
- // Handle the basic code points: let `basic` be the number of input code
- // points before the last delimiter, or `0` if there is none, then copy
- // the first basic code points to the output.
-
- let basic = input.lastIndexOf(delimiter);
- if (basic < 0) {
- basic = 0;
- }
-
- for (let j = 0; j < basic; ++j) {
- // if it's not a basic code point
- if (input.charCodeAt(j) >= 0x80) {
- error('not-basic');
- }
- output.push(input.charCodeAt(j));
- }
-
- // Main decoding loop: start just after the last delimiter if any basic code
- // points were copied; start at the beginning otherwise.
-
- for (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
-
- // `index` is the index of the next character to be consumed.
- // Decode a generalized variable-length integer into `delta`,
- // which gets added to `i`. The overflow checking is easier
- // if we increase `i` as we go, then subtract off its starting
- // value at the end to obtain `delta`.
- let oldi = i;
- for (let w = 1, k = base; /* no condition */; k += base) {
-
- if (index >= inputLength) {
- error('invalid-input');
- }
-
- const digit = basicToDigit(input.charCodeAt(index++));
-
- if (digit >= base || digit > floor((maxInt - i) / w)) {
- error('overflow');
- }
-
- i += digit * w;
- const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
-
- if (digit < t) {
- break;
- }
-
- const baseMinusT = base - t;
- if (w > floor(maxInt / baseMinusT)) {
- error('overflow');
- }
-
- w *= baseMinusT;
-
- }
-
- const out = output.length + 1;
- bias = adapt(i - oldi, out, oldi == 0);
-
- // `i` was supposed to wrap around from `out` to `0`,
- // incrementing `n` each time, so we'll fix that now:
- if (floor(i / out) > maxInt - n) {
- error('overflow');
- }
-
- n += floor(i / out);
- i %= out;
-
- // Insert `n` at position `i` of the output.
- output.splice(i++, 0, n);
-
- }
-
- return String.fromCodePoint(...output);
-};
-
-/**
- * Converts a string of Unicode symbols (e.g. a domain name label) to a
- * Punycode string of ASCII-only symbols.
- * @memberOf punycode
- * @param {String} input The string of Unicode symbols.
- * @returns {String} The resulting Punycode string of ASCII-only symbols.
- */
-const encode = function(input) {
- const output = [];
-
- // Convert the input in UCS-2 to an array of Unicode code points.
- input = ucs2decode(input);
-
- // Cache the length.
- let inputLength = input.length;
-
- // Initialize the state.
- let n = initialN;
- let delta = 0;
- let bias = initialBias;
-
- // Handle the basic code points.
- for (const currentValue of input) {
- if (currentValue < 0x80) {
- output.push(stringFromCharCode(currentValue));
- }
- }
-
- let basicLength = output.length;
- let handledCPCount = basicLength;
-
- // `handledCPCount` is the number of code points that have been handled;
- // `basicLength` is the number of basic code points.
-
- // Finish the basic string with a delimiter unless it's empty.
- if (basicLength) {
- output.push(delimiter);
- }
-
- // Main encoding loop:
- while (handledCPCount < inputLength) {
-
- // All non-basic code points < n have been handled already. Find the next
- // larger one:
- let m = maxInt;
- for (const currentValue of input) {
- if (currentValue >= n && currentValue < m) {
- m = currentValue;
- }
- }
-
- // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
- // but guard against overflow.
- const handledCPCountPlusOne = handledCPCount + 1;
- if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
- error('overflow');
- }
-
- delta += (m - n) * handledCPCountPlusOne;
- n = m;
-
- for (const currentValue of input) {
- if (currentValue < n && ++delta > maxInt) {
- error('overflow');
- }
- if (currentValue == n) {
- // Represent delta as a generalized variable-length integer.
- let q = delta;
- for (let k = base; /* no condition */; k += base) {
- const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
- if (q < t) {
- break;
- }
- const qMinusT = q - t;
- const baseMinusT = base - t;
- output.push(
- stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
- );
- q = floor(qMinusT / baseMinusT);
- }
-
- output.push(stringFromCharCode(digitToBasic(q, 0)));
- bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
- delta = 0;
- ++handledCPCount;
- }
- }
-
- ++delta;
- ++n;
-
- }
- return output.join('');
-};
-
-/**
- * Converts a Punycode string representing a domain name or an email address
- * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
- * it doesn't matter if you call it on a string that has already been
- * converted to Unicode.
- * @memberOf punycode
- * @param {String} input The Punycoded domain name or email address to
- * convert to Unicode.
- * @returns {String} The Unicode representation of the given Punycode
- * string.
- */
-const toUnicode = function(input) {
- return mapDomain(input, function(string) {
- return regexPunycode.test(string)
- ? decode(string.slice(4).toLowerCase())
- : string;
- });
-};
-
-/**
- * Converts a Unicode string representing a domain name or an email address to
- * Punycode. Only the non-ASCII parts of the domain name will be converted,
- * i.e. it doesn't matter if you call it with a domain that's already in
- * ASCII.
- * @memberOf punycode
- * @param {String} input The domain name or email address to convert, as a
- * Unicode string.
- * @returns {String} The Punycode representation of the given domain name or
- * email address.
- */
-const toASCII = function(input) {
- return mapDomain(input, function(string) {
- return regexNonASCII.test(string)
- ? 'xn--' + encode(string)
- : string;
- });
-};
-
-/*--------------------------------------------------------------------------*/
-
-/** Define the public API */
-const punycode = {
- /**
- * A string representing the current Punycode.js version number.
- * @memberOf punycode
- * @type String
- */
- 'version': '2.1.0',
- /**
- * An object of methods to convert from JavaScript's internal character
- * representation (UCS-2) to Unicode code points, and back.
- * @see <https://mathiasbynens.be/notes/javascript-encoding>
- * @memberOf punycode
- * @type Object
- */
- 'ucs2': {
- 'decode': ucs2decode,
- 'encode': ucs2encode
- },
- 'decode': decode,
- 'encode': encode,
- 'toASCII': toASCII,
- 'toUnicode': toUnicode
-};
-
-module.exports = punycode;
diff --git a/assets/node_modules/quick-lru/index.d.ts b/assets/node_modules/quick-lru/index.d.ts
deleted file mode 100644
index c382e51..0000000
--- a/assets/node_modules/quick-lru/index.d.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-declare namespace QuickLRU {
- interface Options {
- /**
- The maximum number of items before evicting the least recently used items.
- */
- readonly maxSize: number;
- }
-}
-
-declare class QuickLRU<KeyType extends unknown, ValueType extends unknown>
- implements Iterable<[KeyType, ValueType]> {
- /**
- The stored item count.
- */
- readonly size: number;
-
- /**
- Simple ["Least Recently Used" (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29).
-
- The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop.
-
- @example
- ```
- import QuickLRU = require('quick-lru');
-
- const lru = new QuickLRU({maxSize: 1000});
-
- lru.set('🦄', '🌈');
-
- lru.has('🦄');
- //=> true
-
- lru.get('🦄');
- //=> '🌈'
- ```
- */
- constructor(options: QuickLRU.Options);
-
- [Symbol.iterator](): IterableIterator<[KeyType, ValueType]>;
-
- /**
- Set an item.
-
- @returns The list instance.
- */
- set(key: KeyType, value: ValueType): this;
-
- /**
- Get an item.
-
- @returns The stored item or `undefined`.
- */
- get(key: KeyType): ValueType | undefined;
-
- /**
- Check if an item exists.
- */
- has(key: KeyType): boolean;
-
- /**
- Get an item without marking it as recently used.
-
- @returns The stored item or `undefined`.
- */
- peek(key: KeyType): ValueType | undefined;
-
- /**
- Delete an item.
-
- @returns `true` if the item is removed or `false` if the item doesn't exist.
- */
- delete(key: KeyType): boolean;
-
- /**
- Delete all items.
- */
- clear(): void;
-
- /**
- Iterable for all the keys.
- */
- keys(): IterableIterator<KeyType>;
-
- /**
- Iterable for all the values.
- */
- values(): IterableIterator<ValueType>;
-}
-
-export = QuickLRU;
diff --git a/assets/node_modules/quick-lru/index.js b/assets/node_modules/quick-lru/index.js
deleted file mode 100644
index b7b1760..0000000
--- a/assets/node_modules/quick-lru/index.js
+++ /dev/null
@@ -1,115 +0,0 @@
-'use strict';
-
-class QuickLRU {
- constructor(options = {}) {
- if (!(options.maxSize && options.maxSize > 0)) {
- throw new TypeError('`maxSize` must be a number greater than 0');
- }
-
- this.maxSize = options.maxSize;
- this.cache = new Map();
- this.oldCache = new Map();
- this._size = 0;
- }
-
- _set(key, value) {
- this.cache.set(key, value);
- this._size++;
-
- if (this._size >= this.maxSize) {
- this._size = 0;
- this.oldCache = this.cache;
- this.cache = new Map();
- }
- }
-
- get(key) {
- if (this.cache.has(key)) {
- return this.cache.get(key);
- }
-
- if (this.oldCache.has(key)) {
- const value = this.oldCache.get(key);
- this.oldCache.delete(key);
- this._set(key, value);
- return value;
- }
- }
-
- set(key, value) {
- if (this.cache.has(key)) {
- this.cache.set(key, value);
- } else {
- this._set(key, value);
- }
-
- return this;
- }
-
- has(key) {
- return this.cache.has(key) || this.oldCache.has(key);
- }
-
- peek(key) {
- if (this.cache.has(key)) {
- return this.cache.get(key);
- }
-
- if (this.oldCache.has(key)) {
- return this.oldCache.get(key);
- }
- }
-
- delete(key) {
- const deleted = this.cache.delete(key);
- if (deleted) {
- this._size--;
- }
-
- return this.oldCache.delete(key) || deleted;
- }
-
- clear() {
- this.cache.clear();
- this.oldCache.clear();
- this._size = 0;
- }
-
- * keys() {
- for (const [key] of this) {
- yield key;
- }
- }
-
- * values() {
- for (const [, value] of this) {
- yield value;
- }
- }
-
- * [Symbol.iterator]() {
- for (const item of this.cache) {
- yield item;
- }
-
- for (const item of this.oldCache) {
- const [key] = item;
- if (!this.cache.has(key)) {
- yield item;
- }
- }
- }
-
- get size() {
- let oldCacheSize = 0;
- for (const key of this.oldCache.keys()) {
- if (!this.cache.has(key)) {
- oldCacheSize++;
- }
- }
-
- return this._size + oldCacheSize;
- }
-}
-
-module.exports = QuickLRU;
diff --git a/assets/node_modules/quick-lru/license b/assets/node_modules/quick-lru/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/quick-lru/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/quick-lru/package.json b/assets/node_modules/quick-lru/package.json
deleted file mode 100644
index 46c175b..0000000
--- a/assets/node_modules/quick-lru/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "quick-lru",
- "version": "4.0.1",
- "description": "Simple \"Least Recently Used\" (LRU) cache",
- "license": "MIT",
- "repository": "sindresorhus/quick-lru",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && nyc ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "lru",
- "quick",
- "cache",
- "caching",
- "least",
- "recently",
- "used",
- "fast",
- "map",
- "hash",
- "buffer"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "coveralls": "^3.0.3",
- "nyc": "^14.1.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/quick-lru/readme.md b/assets/node_modules/quick-lru/readme.md
deleted file mode 100644
index 2b87001..0000000
--- a/assets/node_modules/quick-lru/readme.md
+++ /dev/null
@@ -1,93 +0,0 @@
-# quick-lru [![Build Status](https://travis-ci.org/sindresorhus/quick-lru.svg?branch=master)](https://travis-ci.org/sindresorhus/quick-lru) [![Coverage Status](https://coveralls.io/repos/github/sindresorhus/quick-lru/badge.svg?branch=master)](https://coveralls.io/github/sindresorhus/quick-lru?branch=master)
-
-> Simple ["Least Recently Used" (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29)
-
-Useful when you need to cache something and limit memory usage.
-
-Inspired by the [`hashlru` algorithm](https://github.com/dominictarr/hashlru#algorithm), but instead uses [`Map`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map) to support keys of any type, not just strings, and values can be `undefined`.
-
-
-## Install
-
-```
-$ npm install quick-lru
-```
-
-
-## Usage
-
-```js
-const QuickLRU = require('quick-lru');
-
-const lru = new QuickLRU({maxSize: 1000});
-
-lru.set('🦄', '🌈');
-
-lru.has('🦄');
-//=> true
-
-lru.get('🦄');
-//=> '🌈'
-```
-
-
-## API
-
-### new QuickLRU(options?)
-
-Returns a new instance.
-
-### options
-
-Type: `object`
-
-#### maxSize
-
-*Required*<br>
-Type: `number`
-
-The maximum number of items before evicting the least recently used items.
-
-### Instance
-
-The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop.
-
-Both `key` and `value` can be of any type.
-
-#### .set(key, value)
-
-Set an item. Returns the instance.
-
-#### .get(key)
-
-Get an item.
-
-#### .has(key)
-
-Check if an item exists.
-
-#### .peek(key)
-
-Get an item without marking it as recently used.
-
-#### .delete(key)
-
-Delete an item.
-
-Returns `true` if the item is removed or `false` if the item doesn't exist.
-
-#### .clear()
-
-Delete all items.
-
-#### .keys()
-
-Iterable for all the keys.
-
-#### .values()
-
-Iterable for all the values.
-
-#### .size
-
-The stored item count.
diff --git a/assets/node_modules/read-pkg-up/index.d.ts b/assets/node_modules/read-pkg-up/index.d.ts
deleted file mode 100644
index acb4c8c..0000000
--- a/assets/node_modules/read-pkg-up/index.d.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-import {Except} from 'type-fest';
-import readPkg = require('read-pkg');
-
-declare namespace readPkgUp {
- type Options = {
- /**
- Directory to start looking for a package.json file.
-
- @default process.cwd()
- */
- cwd?: string;
- } & Except<readPkg.Options, 'cwd'>;
-
- type NormalizeOptions = {
- /**
- Directory to start looking for a package.json file.
-
- @default process.cwd()
- */
- cwd?: string;
- } & Except<readPkg.NormalizeOptions, 'cwd'>;
-
- type PackageJson = readPkg.PackageJson;
- type NormalizedPackageJson = readPkg.NormalizedPackageJson;
-
- interface ReadResult {
- packageJson: PackageJson;
- path: string;
- }
-
- interface NormalizedReadResult {
- packageJson: NormalizedPackageJson;
- path: string;
- }
-}
-
-declare const readPkgUp: {
- /**
- Read the closest `package.json` file.
-
- @example
- ```
- import readPkgUp = require('read-pkg-up');
-
- (async () => {
- console.log(await readPkgUp());
- // {
- // packageJson: {
- // name: 'awesome-package',
- // version: '1.0.0',
- // …
- // },
- // path: '/Users/sindresorhus/dev/awesome-package/package.json'
- // }
- })();
- ```
- */
- (options?: readPkgUp.NormalizeOptions): Promise<
- readPkgUp.NormalizedReadResult | undefined
- >;
- (options: readPkgUp.Options): Promise<readPkgUp.ReadResult | undefined>;
-
- /**
- Synchronously read the closest `package.json` file.
-
- @example
- ```
- import readPkgUp = require('read-pkg-up');
-
- console.log(readPkgUp.sync());
- // {
- // packageJson: {
- // name: 'awesome-package',
- // version: '1.0.0',
- // …
- // },
- // path: '/Users/sindresorhus/dev/awesome-package/package.json'
- // }
- ```
- */
- sync(
- options?: readPkgUp.NormalizeOptions
- ): readPkgUp.NormalizedReadResult | undefined;
- sync(options: readPkgUp.Options): readPkgUp.ReadResult | undefined;
-};
-
-export = readPkgUp;
diff --git a/assets/node_modules/read-pkg-up/index.js b/assets/node_modules/read-pkg-up/index.js
deleted file mode 100644
index bf8ae3c..0000000
--- a/assets/node_modules/read-pkg-up/index.js
+++ /dev/null
@@ -1,30 +0,0 @@
-'use strict';
-const path = require('path');
-const findUp = require('find-up');
-const readPkg = require('read-pkg');
-
-module.exports = async options => {
- const filePath = await findUp('package.json', options);
-
- if (!filePath) {
- return;
- }
-
- return {
- packageJson: await readPkg({...options, cwd: path.dirname(filePath)}),
- path: filePath
- };
-};
-
-module.exports.sync = options => {
- const filePath = findUp.sync('package.json', options);
-
- if (!filePath) {
- return;
- }
-
- return {
- packageJson: readPkg.sync({...options, cwd: path.dirname(filePath)}),
- path: filePath
- };
-};
diff --git a/assets/node_modules/read-pkg-up/license b/assets/node_modules/read-pkg-up/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/read-pkg-up/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/read-pkg-up/package.json b/assets/node_modules/read-pkg-up/package.json
deleted file mode 100644
index 09a6d49..0000000
--- a/assets/node_modules/read-pkg-up/package.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "name": "read-pkg-up",
- "version": "7.0.1",
- "description": "Read the closest package.json file",
- "license": "MIT",
- "repository": "sindresorhus/read-pkg-up",
- "funding": "https://github.com/sponsors/sindresorhus",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "json",
- "read",
- "parse",
- "file",
- "fs",
- "graceful",
- "load",
- "package",
- "find",
- "up",
- "find-up",
- "findup",
- "look-up",
- "look",
- "search",
- "match",
- "resolve",
- "parent",
- "parents",
- "folder",
- "directory",
- "walk",
- "walking",
- "path"
- ],
- "dependencies": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- },
- "devDependencies": {
- "ava": "^2.4.0",
- "tsd": "^0.9.0",
- "xo": "^0.25.3"
- }
-}
diff --git a/assets/node_modules/read-pkg-up/readme.md b/assets/node_modules/read-pkg-up/readme.md
deleted file mode 100644
index cb8e98a..0000000
--- a/assets/node_modules/read-pkg-up/readme.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# read-pkg-up [![Build Status](https://travis-ci.org/sindresorhus/read-pkg-up.svg?branch=master)](https://travis-ci.org/sindresorhus/read-pkg-up)
-
-> Read the closest package.json file
-
-## Why
-
-- [Finds the closest package.json](https://github.com/sindresorhus/find-up)
-- [Gracefully handles filesystem issues](https://github.com/isaacs/node-graceful-fs)
-- [Throws more helpful JSON errors](https://github.com/sindresorhus/parse-json)
-- [Normalizes the data](https://github.com/npm/normalize-package-data#what-normalization-currently-entails)
-
-## Install
-
-```
-$ npm install read-pkg-up
-```
-
-## Usage
-
-```js
-const readPkgUp = require('read-pkg-up');
-
-(async () => {
- console.log(await readPkgUp());
- /*
- {
- packageJson: {
- name: 'awesome-package',
- version: '1.0.0',
- …
- },
- path: '/Users/sindresorhus/dev/awesome-package/package.json'
- }
- */
-})();
-```
-
-## API
-
-### readPkgUp(options?)
-
-Returns a `Promise<object>` or `Promise<undefined>` if no `package.json` was found.
-
-### readPkgUp.sync(options?)
-
-Returns the result object or `undefined` if no `package.json` was found.
-
-#### options
-
-Type: `object`
-
-##### cwd
-
-Type: `string`\
-Default: `process.cwd()`
-
-Directory to start looking for a package.json file.
-
-##### normalize
-
-Type: `boolean`\
-Default: `true`
-
-[Normalize](https://github.com/npm/normalize-package-data#what-normalization-currently-entails) the package data.
-
-## read-pkg-up for enterprise
-
-Available as part of the Tidelift Subscription.
-
-The maintainers of read-pkg-up and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-read-pkg-up?utm_source=npm-read-pkg-up&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
-
-## Related
-
-- [read-pkg](https://github.com/sindresorhus/read-pkg) - Read a package.json file
-- [pkg-up](https://github.com/sindresorhus/pkg-up) - Find the closest package.json file
-- [find-up](https://github.com/sindresorhus/find-up) - Find a file by walking up parent directories
-- [pkg-conf](https://github.com/sindresorhus/pkg-conf) - Get namespaced config from the closest package.json
diff --git a/assets/node_modules/read-pkg/index.d.ts b/assets/node_modules/read-pkg/index.d.ts
deleted file mode 100644
index a937926..0000000
--- a/assets/node_modules/read-pkg/index.d.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-import * as typeFest from 'type-fest';
-import normalize = require('normalize-package-data');
-
-declare namespace readPkg {
- interface Options {
- /**
- [Normalize](https://github.com/npm/normalize-package-data#what-normalization-currently-entails) the package data.
-
- @default true
- */
- readonly normalize?: boolean;
-
- /**
- Current working directory.
-
- @default process.cwd()
- */
- readonly cwd?: string;
- }
-
- interface NormalizeOptions extends Options {
- readonly normalize?: true;
- }
-
- type NormalizedPackageJson = PackageJson & normalize.Package;
- type PackageJson = typeFest.PackageJson;
-}
-
-declare const readPkg: {
- /**
- @returns The parsed JSON.
-
- @example
- ```
- import readPkg = require('read-pkg');
-
- (async () => {
- console.log(await readPkg());
- //=> {name: 'read-pkg', …}
-
- console.log(await readPkg({cwd: 'some-other-directory'});
- //=> {name: 'unicorn', …}
- })();
- ```
- */
- (options?: readPkg.NormalizeOptions): Promise<readPkg.NormalizedPackageJson>;
- (options: readPkg.Options): Promise<readPkg.PackageJson>;
-
- /**
- @returns The parsed JSON.
-
- @example
- ```
- import readPkg = require('read-pkg');
-
- console.log(readPkg.sync());
- //=> {name: 'read-pkg', …}
-
- console.log(readPkg.sync({cwd: 'some-other-directory'});
- //=> {name: 'unicorn', …}
- ```
- */
- sync(options?: readPkg.NormalizeOptions): readPkg.NormalizedPackageJson;
- sync(options: readPkg.Options): readPkg.PackageJson;
-};
-
-export = readPkg;
diff --git a/assets/node_modules/read-pkg/index.js b/assets/node_modules/read-pkg/index.js
deleted file mode 100644
index c1243a8..0000000
--- a/assets/node_modules/read-pkg/index.js
+++ /dev/null
@@ -1,41 +0,0 @@
-'use strict';
-const {promisify} = require('util');
-const fs = require('fs');
-const path = require('path');
-const parseJson = require('parse-json');
-
-const readFileAsync = promisify(fs.readFile);
-
-module.exports = async options => {
- options = {
- cwd: process.cwd(),
- normalize: true,
- ...options
- };
-
- const filePath = path.resolve(options.cwd, 'package.json');
- const json = parseJson(await readFileAsync(filePath, 'utf8'));
-
- if (options.normalize) {
- require('normalize-package-data')(json);
- }
-
- return json;
-};
-
-module.exports.sync = options => {
- options = {
- cwd: process.cwd(),
- normalize: true,
- ...options
- };
-
- const filePath = path.resolve(options.cwd, 'package.json');
- const json = parseJson(fs.readFileSync(filePath, 'utf8'));
-
- if (options.normalize) {
- require('normalize-package-data')(json);
- }
-
- return json;
-};
diff --git a/assets/node_modules/read-pkg/license b/assets/node_modules/read-pkg/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/read-pkg/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/read-pkg/node_modules/type-fest/index.d.ts b/assets/node_modules/read-pkg/node_modules/type-fest/index.d.ts
deleted file mode 100644
index 4ef4b18..0000000
--- a/assets/node_modules/read-pkg/node_modules/type-fest/index.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-// Basic
-export * from './source/basic';
-
-// Utilities
-export {Except} from './source/except';
-export {Mutable} from './source/mutable';
-export {Merge} from './source/merge';
-export {MergeExclusive} from './source/merge-exclusive';
-export {RequireAtLeastOne} from './source/require-at-least-one';
-export {ReadonlyDeep} from './source/readonly-deep';
-export {LiteralUnion} from './source/literal-union';
-export {Promisable} from './source/promisable';
-
-// Miscellaneous
-export {PackageJson} from './source/package-json';
diff --git a/assets/node_modules/read-pkg/node_modules/type-fest/license b/assets/node_modules/read-pkg/node_modules/type-fest/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/read-pkg/node_modules/type-fest/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/read-pkg/node_modules/type-fest/package.json b/assets/node_modules/read-pkg/node_modules/type-fest/package.json
deleted file mode 100644
index 2345809..0000000
--- a/assets/node_modules/read-pkg/node_modules/type-fest/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "name": "type-fest",
- "version": "0.6.0",
- "description": "A collection of essential TypeScript types",
- "license": "(MIT OR CC0-1.0)",
- "repository": "sindresorhus/type-fest",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && tsd"
- },
- "files": [
- "index.d.ts",
- "source"
- ],
- "keywords": [
- "typescript",
- "ts",
- "types",
- "utility",
- "util",
- "utilities",
- "omit",
- "merge",
- "json"
- ],
- "devDependencies": {
- "@sindresorhus/tsconfig": "^0.4.0",
- "@typescript-eslint/eslint-plugin": "^1.9.0",
- "@typescript-eslint/parser": "^1.10.2",
- "eslint-config-xo-typescript": "^0.14.0",
- "tsd": "^0.7.3",
- "xo": "^0.24.0"
- },
- "xo": {
- "extends": "xo-typescript",
- "extensions": [
- "ts"
- ],
- "rules": {
- "import/no-unresolved": "off",
- "@typescript-eslint/indent": "off"
- }
- }
-}
diff --git a/assets/node_modules/read-pkg/node_modules/type-fest/readme.md b/assets/node_modules/read-pkg/node_modules/type-fest/readme.md
deleted file mode 100644
index ff3840c..0000000
--- a/assets/node_modules/read-pkg/node_modules/type-fest/readme.md
+++ /dev/null
@@ -1,119 +0,0 @@
-<div align="center">
- <br>
- <br>
- <img src="media/logo.svg" alt="type-fest" height="300">
- <br>
- <br>
- <b>A collection of essential TypeScript types</b>
- <br>
- <hr>
-</div>
-<br>
-<br>
-
-[![Build Status](https://travis-ci.com/sindresorhus/type-fest.svg?branch=master)](https://travis-ci.com/sindresorhus/type-fest)
-[![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4)
-<!-- Commented out until they actually show anything
-[![npm dependents](https://badgen.net/npm/dependents/type-fest)](https://www.npmjs.com/package/type-fest?activeTab=dependents) [![npm downloads](https://badgen.net/npm/dt/type-fest)](https://www.npmjs.com/package/type-fest)
--->
-
-Many of the types here should have been built-in. You can help by suggesting some of them to the [TypeScript project](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md).
-
-Either add this package as a dependency or copy-paste the needed types. No credit required. 👌
-
-PR welcome for additional commonly needed types and docs improvements. Read the [contributing guidelines](.github/contributing.md) first.
-
-
-## Install
-
-```
-$ npm install type-fest
-```
-
-*Requires TypeScript >=3.2*
-
-
-## Usage
-
-```ts
-import {Except} from 'type-fest';
-
-type Foo = {
- unicorn: string;
- rainbow: boolean;
-};
-
-type FooWithoutRainbow = Except<Foo, 'rainbow'>;
-//=> {unicorn: string}
-```
-
-
-## API
-
-Click the type names for complete docs.
-
-### Basic
-
-- [`Primitive`](source/basic.d.ts) - Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
-- [`Class`](source/basic.d.ts) - Matches a [`class` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes).
-- [`TypedArray`](source/basic.d.ts) - Matches any [typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray), like `Uint8Array` or `Float64Array`.
-- [`JsonObject`](source/basic.d.ts) - Matches a JSON object.
-- [`JsonArray`](source/basic.d.ts) - Matches a JSON array.
-- [`JsonValue`](source/basic.d.ts) - Matches any valid JSON value.
-- [`ObservableLike`](source/basic.d.ts) - Matches a value that is like an [Observable](https://github.com/tc39/proposal-observable).
-
-### Utilities
-
-- [`Except`](source/except.d.ts) - Create a type from an object type without certain keys. This is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type).
-- [`Mutable`](source/mutable.d.ts) - Convert an object with `readonly` properties into a mutable object. Inverse of `Readonly<T>`.
-- [`Merge`](source/merge.d.ts) - Merge two types into a new type. Keys of the second type overrides keys of the first type.
-- [`MergeExclusive`](source/merge-exclusive.d.ts) - Create a type that has mutually exclusive properties.
-- [`RequireAtLeastOne`](source/require-at-least-one.d.ts) - Create a type that requires at least one of the given properties.
-- [`ReadonlyDeep`](source/readonly-deep.d.ts) - Create a deeply immutable version of a `object`/`Map`/`Set`/`Array` type.
-- [`LiteralUnion`](source/literal-union.d.ts) - Create a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union. Workaround for [Microsoft/TypeScript#29729](https://github.com/Microsoft/TypeScript/issues/29729).
-- [`Promisable`](source/promisable.d.ts) - Create a type that represents either the value or the value wrapped in `PromiseLike`.
-
-### Miscellaneous
-
-- [`PackageJson`](source/package-json.d.ts) - Type for [npm's `package.json` file](https://docs.npmjs.com/creating-a-package-json-file).
-
-
-## Declined types
-
-*If we decline a type addition, we will make sure to document the better solution here.*
-
-- [`Diff` and `Spread`](https://github.com/sindresorhus/type-fest/pull/7) - The PR author didn't provide any real-world use-cases and the PR went stale. If you think this type is useful, provide some real-world use-cases and we might reconsider.
-
-
-## Tips
-
-### Built-in types
-
-There are many advanced types most users don't know about.
-
-- [`Partial<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1401-L1406) - Make all properties in `T` optional.
-- [`Required<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1408-L1413) - Make all properties in `T` required.
-- [`Readonly<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1415-L1420) - Make all properties in `T` readonly.
-- [`Pick<T, K>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1422-L1427) - From `T`, pick a set of properties whose keys are in the union `K`.
-- [`Record<K, T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1429-L1434) - Construct a type with a set of properties `K` of type `T`.
-- [`Exclude<T, U>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1436-L1439) - Exclude from `T` those types that are assignable to `U`.
-- [`Extract<T, U>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1441-L1444) - Extract from `T` those types that are assignable to `U`.
-- [`NonNullable<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1446-L1449) - Exclude `null` and `undefined` from `T`.
-- [`Parameters<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1451-L1454) - Obtain the parameters of a function type in a tuple.
-- [`ConstructorParameters<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1456-L1459) - Obtain the parameters of a constructor function type in a tuple.
-- [`ReturnType<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1461-L1464) – Obtain the return type of a function type.
-- [`InstanceType<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1466-L1469) – Obtain the instance type of a constructor function type.
-
-You can find some examples in the [TypeScript docs](https://www.typescriptlang.org/docs/handbook/advanced-types.html#predefined-conditional-types).
-
-
-## Maintainers
-
-- [Sindre Sorhus](https://github.com/sindresorhus)
-- [Jarek Radosz](https://github.com/CvX)
-- [Dimitri Benin](https://github.com/BendingBender)
-
-
-## License
-
-(MIT OR CC0-1.0)
diff --git a/assets/node_modules/read-pkg/node_modules/type-fest/source/basic.d.ts b/assets/node_modules/read-pkg/node_modules/type-fest/source/basic.d.ts
deleted file mode 100644
index f308c5f..0000000
--- a/assets/node_modules/read-pkg/node_modules/type-fest/source/basic.d.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-/// <reference lib="esnext"/>
-
-// TODO: This can just be `export type Primitive = not object` when the `not` keyword is out.
-/**
-Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
-*/
-export type Primitive =
- | null
- | undefined
- | string
- | number
- | boolean
- | symbol
- | bigint;
-
-// TODO: Remove the `= unknown` sometime in the future when most users are on TS 3.5 as it's now the default
-/**
-Matches a [`class` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes).
-*/
-export type Class<T = unknown> = new(...arguments_: any[]) => T;
-
-/**
-Matches any [typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray), like `Uint8Array` or `Float64Array`.
-*/
-export type TypedArray =
- | Int8Array
- | Uint8Array
- | Uint8ClampedArray
- | Int16Array
- | Uint16Array
- | Int32Array
- | Uint32Array
- | Float32Array
- | Float64Array
- | BigInt64Array
- | BigUint64Array;
-
-/**
-Matches a JSON object.
-
-This type can be useful to enforce some input to be JSON-compatible or as a super-type to be extended from. Don't use this as a direct return type as the user would have to double-cast it: `jsonObject as unknown as CustomResponse`. Instead, you could extend your CustomResponse type from it to ensure your type only uses JSON-compatible types: `interface CustomResponse extends JsonObject { … }`.
-*/
-export type JsonObject = {[key: string]: JsonValue};
-
-/**
-Matches a JSON array.
-*/
-export interface JsonArray extends Array<JsonValue> {}
-
-/**
-Matches any valid JSON value.
-*/
-export type JsonValue = string | number | boolean | null | JsonObject | JsonArray;
-
-declare global {
- interface SymbolConstructor {
- readonly observable: symbol;
- }
-}
-
-/**
-Matches a value that is like an [Observable](https://github.com/tc39/proposal-observable).
-*/
-export interface ObservableLike {
- subscribe(observer: (value: unknown) => void): void;
- [Symbol.observable](): ObservableLike;
-}
diff --git a/assets/node_modules/read-pkg/node_modules/type-fest/source/except.d.ts b/assets/node_modules/read-pkg/node_modules/type-fest/source/except.d.ts
deleted file mode 100644
index 7dedbaa..0000000
--- a/assets/node_modules/read-pkg/node_modules/type-fest/source/except.d.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
-Create a type from an object type without certain keys.
-
-This type is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). The `Omit` type does not restrict the omitted keys to be keys present on the given type, while `Except` does. The benefits of a stricter type are avoiding typos and allowing the compiler to pick up on rename refactors automatically.
-
-Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/30825) if you want to have the stricter version as a built-in in TypeScript.
-
-@example
-```
-import {Except} from 'type-fest';
-
-type Foo = {
- a: number;
- b: string;
- c: boolean;
-};
-
-type FooWithoutA = Except<Foo, 'a' | 'c'>;
-//=> {b: string};
-```
-*/
-export type Except<ObjectType, KeysType extends keyof ObjectType> = Pick<ObjectType, Exclude<keyof ObjectType, KeysType>>;
diff --git a/assets/node_modules/read-pkg/node_modules/type-fest/source/literal-union.d.ts b/assets/node_modules/read-pkg/node_modules/type-fest/source/literal-union.d.ts
deleted file mode 100644
index 52e8de6..0000000
--- a/assets/node_modules/read-pkg/node_modules/type-fest/source/literal-union.d.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import {Primitive} from './basic';
-
-/**
-Allows creating a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union.
-
-Currently, when a union type of a primitive type is combined with literal types, TypeScript loses all information about the combined literals. Thus, when such type is used in an IDE with autocompletion, no suggestions are made for the declared literals.
-
-This type is a workaround for [Microsoft/TypeScript#29729](https://github.com/Microsoft/TypeScript/issues/29729). It will be removed as soon as it's not needed anymore.
-
-@example
-```
-import {LiteralUnion} from 'type-fest';
-
-// Before
-
-type Pet = 'dog' | 'cat' | string;
-
-const pet: Pet = '';
-// Start typing in your TypeScript-enabled IDE.
-// You **will not** get auto-completion for `dog` and `cat` literals.
-
-// After
-
-type Pet2 = LiteralUnion<'dog' | 'cat', string>;
-
-const pet: Pet2 = '';
-// You **will** get auto-completion for `dog` and `cat` literals.
-```
- */
-export type LiteralUnion<
- LiteralType extends BaseType,
- BaseType extends Primitive
-> = LiteralType | (BaseType & {_?: never});
diff --git a/assets/node_modules/read-pkg/node_modules/type-fest/source/merge-exclusive.d.ts b/assets/node_modules/read-pkg/node_modules/type-fest/source/merge-exclusive.d.ts
deleted file mode 100644
index 6290f42..0000000
--- a/assets/node_modules/read-pkg/node_modules/type-fest/source/merge-exclusive.d.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-// Helper type. Not useful on its own.
-type Without<FirstType, SecondType> = {[KeyType in Exclude<keyof FirstType, keyof SecondType>]?: never};
-
-/**
-Create a type that has mutually exclusive properties.
-
-This type was inspired by [this comment](https://github.com/Microsoft/TypeScript/issues/14094#issuecomment-373782604).
-
-This type works with a helper type, called `Without`. `Without<FirstType, SecondType>` produces a type that has only keys from `FirstType` which are not present on `SecondType` and sets the value type for these keys to `never`. This helper type is then used in `MergeExclusive` to remove keys from either `FirstType` or `SecondType`.
-
-@example
-```
-import {MergeExclusive} from 'type-fest';
-
-interface ExclusiveVariation1 {
- exclusive1: boolean;
-}
-
-interface ExclusiveVariation2 {
- exclusive2: string;
-}
-
-type ExclusiveOptions = MergeExclusive<ExclusiveVariation1, ExclusiveVariation2>;
-
-let exclusiveOptions: ExclusiveOptions;
-
-exclusiveOptions = {exclusive1: true};
-//=> Works
-exclusiveOptions = {exclusive2: 'hi'};
-//=> Works
-exclusiveOptions = {exclusive1: true, exclusive2: 'hi'};
-//=> Error
-```
-*/
-export type MergeExclusive<FirstType, SecondType> =
- (FirstType | SecondType) extends object ?
- (Without<FirstType, SecondType> & SecondType) | (Without<SecondType, FirstType> & FirstType) :
- FirstType | SecondType;
-
diff --git a/assets/node_modules/read-pkg/node_modules/type-fest/source/merge.d.ts b/assets/node_modules/read-pkg/node_modules/type-fest/source/merge.d.ts
deleted file mode 100644
index 4b3920b..0000000
--- a/assets/node_modules/read-pkg/node_modules/type-fest/source/merge.d.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import {Except} from './except';
-
-/**
-Merge two types into a new type. Keys of the second type overrides keys of the first type.
-
-@example
-```
-import {Merge} from 'type-fest';
-
-type Foo = {
- a: number;
- b: string;
-};
-
-type Bar = {
- b: number;
-};
-
-const ab: Merge<Foo, Bar> = {a: 1, b: 2};
-```
-*/
-export type Merge<FirstType, SecondType> = Except<FirstType, Extract<keyof FirstType, keyof SecondType>> & SecondType;
diff --git a/assets/node_modules/read-pkg/node_modules/type-fest/source/mutable.d.ts b/assets/node_modules/read-pkg/node_modules/type-fest/source/mutable.d.ts
deleted file mode 100644
index 5c98039..0000000
--- a/assets/node_modules/read-pkg/node_modules/type-fest/source/mutable.d.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
-Convert an object with `readonly` properties into a mutable object. Inverse of `Readonly<T>`.
-
-This can be used to [store and mutate options within a class](https://github.com/sindresorhus/pageres/blob/4a5d05fca19a5fbd2f53842cbf3eb7b1b63bddd2/source/index.ts#L72), [edit `readonly` objects within tests](https://stackoverflow.com/questions/50703834), and [construct a `readonly` object within a function](https://github.com/Microsoft/TypeScript/issues/24509).
-
-@example
-```
-import {Mutable} from 'type-fest';
-
-type Foo = {
- readonly a: number;
- readonly b: string;
-};
-
-const mutableFoo: Mutable<Foo> = {a: 1, b: '2'};
-mutableFoo.a = 3;
-```
-*/
-export type Mutable<ObjectType> = {
- // For each `Key` in the keys of `ObjectType`, make a mapped type by removing the `readonly` modifier from the property.
- -readonly [KeyType in keyof ObjectType]: ObjectType[KeyType];
-};
diff --git a/assets/node_modules/read-pkg/node_modules/type-fest/source/package-json.d.ts b/assets/node_modules/read-pkg/node_modules/type-fest/source/package-json.d.ts
deleted file mode 100644
index 3179e58..0000000
--- a/assets/node_modules/read-pkg/node_modules/type-fest/source/package-json.d.ts
+++ /dev/null
@@ -1,501 +0,0 @@
-import {LiteralUnion} from '..';
-
-declare namespace PackageJson {
- /**
- A person who has been involved in creating or maintaining the package.
- */
- export type Person =
- | string
- | {
- name: string;
- url?: string;
- email?: string;
- };
-
- export type BugsLocation =
- | string
- | {
- /**
- The URL to the package's issue tracker.
- */
- url?: string;
-
- /**
- The email address to which issues should be reported.
- */
- email?: string;
- };
-
- export interface DirectoryLocations {
- /**
- Location for executable scripts. Sugar to generate entries in the `bin` property by walking the folder.
- */
- bin?: string;
-
- /**
- Location for Markdown files.
- */
- doc?: string;
-
- /**
- Location for example scripts.
- */
- example?: string;
-
- /**
- Location for the bulk of the library.
- */
- lib?: string;
-
- /**
- Location for man pages. Sugar to generate a `man` array by walking the folder.
- */
- man?: string;
-
- /**
- Location for test files.
- */
- test?: string;
-
- [directoryType: string]: unknown;
- }
-
- export type Scripts = {
- /**
- Run **before** the package is published (Also run on local `npm install` without any arguments).
- */
- prepublish?: string;
-
- /**
- Run both **before** the package is packed and published, and on local `npm install` without any arguments. This is run **after** `prepublish`, but **before** `prepublishOnly`.
- */
- prepare?: string;
-
- /**
- Run **before** the package is prepared and packed, **only** on `npm publish`.
- */
- prepublishOnly?: string;
-
- /**
- Run **before** a tarball is packed (on `npm pack`, `npm publish`, and when installing git dependencies).
- */
- prepack?: string;
-
- /**
- Run **after** the tarball has been generated and moved to its final destination.
- */
- postpack?: string;
-
- /**
- Run **after** the package is published.
- */
- publish?: string;
-
- /**
- Run **after** the package is published.
- */
- postpublish?: string;
-
- /**
- Run **before** the package is installed.
- */
- preinstall?: string;
-
- /**
- Run **after** the package is installed.
- */
- install?: string;
-
- /**
- Run **after** the package is installed and after `install`.
- */
- postinstall?: string;
-
- /**
- Run **before** the package is uninstalled and before `uninstall`.
- */
- preuninstall?: string;
-
- /**
- Run **before** the package is uninstalled.
- */
- uninstall?: string;
-
- /**
- Run **after** the package is uninstalled.
- */
- postuninstall?: string;
-
- /**
- Run **before** bump the package version and before `version`.
- */
- preversion?: string;
-
- /**
- Run **before** bump the package version.
- */
- version?: string;
-
- /**
- Run **after** bump the package version.
- */
- postversion?: string;
-
- /**
- Run with the `npm test` command, before `test`.
- */
- pretest?: string;
-
- /**
- Run with the `npm test` command.
- */
- test?: string;
-
- /**
- Run with the `npm test` command, after `test`.
- */
- posttest?: string;
-
- /**
- Run with the `npm stop` command, before `stop`.
- */
- prestop?: string;
-
- /**
- Run with the `npm stop` command.
- */
- stop?: string;
-
- /**
- Run with the `npm stop` command, after `stop`.
- */
- poststop?: string;
-
- /**
- Run with the `npm start` command, before `start`.
- */
- prestart?: string;
-
- /**
- Run with the `npm start` command.
- */
- start?: string;
-
- /**
- Run with the `npm start` command, after `start`.
- */
- poststart?: string;
-
- /**
- Run with the `npm restart` command, before `restart`. Note: `npm restart` will run the `stop` and `start` scripts if no `restart` script is provided.
- */
- prerestart?: string;
-
- /**
- Run with the `npm restart` command. Note: `npm restart` will run the `stop` and `start` scripts if no `restart` script is provided.
- */
- restart?: string;
-
- /**
- Run with the `npm restart` command, after `restart`. Note: `npm restart` will run the `stop` and `start` scripts if no `restart` script is provided.
- */
- postrestart?: string;
- } & {
- [scriptName: string]: string;
- };
-
- /**
- Dependencies of the package. The version range is a string which has one or more space-separated descriptors. Dependencies can also be identified with a tarball or Git URL.
- */
- export interface Dependency {
- [packageName: string]: string;
- }
-
- export interface NonStandardEntryPoints {
- /**
- An ECMAScript module ID that is the primary entry point to the program.
- */
- module?: string;
-
- /**
- A module ID with untranspiled code that is the primary entry point to the program.
- */
- esnext?:
- | string
- | {
- main?: string;
- browser?: string;
- [moduleName: string]: string | undefined;
- };
-
- /**
- A hint to JavaScript bundlers or component tools when packaging modules for client side use.
- */
- browser?:
- | string
- | {
- [moduleName: string]: string | false;
- };
- }
-
- export interface TypeScriptConfiguration {
- /**
- Location of the bundled TypeScript declaration file.
- */
- types?: string;
-
- /**
- Location of the bundled TypeScript declaration file. Alias of `types`.
- */
- typings?: string;
- }
-
- export interface YarnConfiguration {
- /**
- If your package only allows one version of a given dependency, and you’d like to enforce the same behavior as `yarn install --flat` on the command line, set this to `true`.
-
- Note that if your `package.json` contains `"flat": true` and other packages depend on yours (e.g. you are building a library rather than an application), those other packages will also need `"flat": true` in their `package.json` or be installed with `yarn install --flat` on the command-line.
- */
- flat?: boolean;
-
- /**
- Selective version resolutions. Allows the definition of custom package versions inside dependencies without manual edits in the `yarn.lock` file.
- */
- resolutions?: Dependency;
- }
-
- export interface JSPMConfiguration {
- /**
- JSPM configuration.
- */
- jspm?: PackageJson;
- }
-}
-
-/**
-Type for [npm's `package.json` file](https://docs.npmjs.com/creating-a-package-json-file). Also includes types for fields used by other popular projects, like TypeScript and Yarn.
-*/
-export type PackageJson = {
- /**
- The name of the package.
- */
- name?: string;
-
- /**
- Package version, parseable by [`node-semver`](https://github.com/npm/node-semver).
- */
- version?: string;
-
- /**
- Package description, listed in `npm search`.
- */
- description?: string;
-
- /**
- Keywords associated with package, listed in `npm search`.
- */
- keywords?: string[];
-
- /**
- The URL to the package's homepage.
- */
- homepage?: LiteralUnion<'.', string>;
-
- /**
- The URL to the package's issue tracker and/or the email address to which issues should be reported.
- */
- bugs?: PackageJson.BugsLocation;
-
- /**
- The license for the package.
- */
- license?: string;
-
- /**
- The licenses for the package.
- */
- licenses?: Array<{
- type?: string;
- url?: string;
- }>;
-
- author?: PackageJson.Person;
-
- /**
- A list of people who contributed to the package.
- */
- contributors?: PackageJson.Person[];
-
- /**
- A list of people who maintain the package.
- */
- maintainers?: PackageJson.Person[];
-
- /**
- The files included in the package.
- */
- files?: string[];
-
- /**
- The module ID that is the primary entry point to the program.
- */
- main?: string;
-
- /**
- The executable files that should be installed into the `PATH`.
- */
- bin?:
- | string
- | {
- [binary: string]: string;
- };
-
- /**
- Filenames to put in place for the `man` program to find.
- */
- man?: string | string[];
-
- /**
- Indicates the structure of the package.
- */
- directories?: PackageJson.DirectoryLocations;
-
- /**
- Location for the code repository.
- */
- repository?:
- | string
- | {
- type: string;
- url: string;
- };
-
- /**
- Script commands that are run at various times in the lifecycle of the package. The key is the lifecycle event, and the value is the command to run at that point.
- */
- scripts?: PackageJson.Scripts;
-
- /**
- Is used to set configuration parameters used in package scripts that persist across upgrades.
- */
- config?: {
- [configKey: string]: unknown;
- };
-
- /**
- The dependencies of the package.
- */
- dependencies?: PackageJson.Dependency;
-
- /**
- Additional tooling dependencies that are not required for the package to work. Usually test, build, or documentation tooling.
- */
- devDependencies?: PackageJson.Dependency;
-
- /**
- Dependencies that are skipped if they fail to install.
- */
- optionalDependencies?: PackageJson.Dependency;
-
- /**
- Dependencies that will usually be required by the package user directly or via another dependency.
- */
- peerDependencies?: PackageJson.Dependency;
-
- /**
- Package names that are bundled when the package is published.
- */
- bundledDependencies?: string[];
-
- /**
- Alias of `bundledDependencies`.
- */
- bundleDependencies?: string[];
-
- /**
- Engines that this package runs on.
- */
- engines?: {
- [EngineName in 'npm' | 'node' | string]: string;
- };
-
- /**
- @deprecated
- */
- engineStrict?: boolean;
-
- /**
- Operating systems the module runs on.
- */
- os?: Array<LiteralUnion<
- | 'aix'
- | 'darwin'
- | 'freebsd'
- | 'linux'
- | 'openbsd'
- | 'sunos'
- | 'win32'
- | '!aix'
- | '!darwin'
- | '!freebsd'
- | '!linux'
- | '!openbsd'
- | '!sunos'
- | '!win32',
- string
- >>;
-
- /**
- CPU architectures the module runs on.
- */
- cpu?: Array<LiteralUnion<
- | 'arm'
- | 'arm64'
- | 'ia32'
- | 'mips'
- | 'mipsel'
- | 'ppc'
- | 'ppc64'
- | 's390'
- | 's390x'
- | 'x32'
- | 'x64'
- | '!arm'
- | '!arm64'
- | '!ia32'
- | '!mips'
- | '!mipsel'
- | '!ppc'
- | '!ppc64'
- | '!s390'
- | '!s390x'
- | '!x32'
- | '!x64',
- string
- >>;
-
- /**
- If set to `true`, a warning will be shown if package is installed locally. Useful if the package is primarily a command-line application that should be installed globally.
-
- @deprecated
- */
- preferGlobal?: boolean;
-
- /**
- If set to `true`, then npm will refuse to publish it.
- */
- private?: boolean;
-
- /**
- * A set of config values that will be used at publish-time. It's especially handy to set the tag, registry or access, to ensure that a given package is not tagged with 'latest', published to the global public registry or that a scoped module is private by default.
- */
- publishConfig?: {
- [config: string]: unknown;
- };
-} &
-PackageJson.NonStandardEntryPoints &
-PackageJson.TypeScriptConfiguration &
-PackageJson.YarnConfiguration &
-PackageJson.JSPMConfiguration & {
- [key: string]: unknown;
-};
diff --git a/assets/node_modules/read-pkg/node_modules/type-fest/source/promisable.d.ts b/assets/node_modules/read-pkg/node_modules/type-fest/source/promisable.d.ts
deleted file mode 100644
index 71242a5..0000000
--- a/assets/node_modules/read-pkg/node_modules/type-fest/source/promisable.d.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
-Create a type that represents either the value or the value wrapped in `PromiseLike`.
-
-Use-cases:
-- A function accepts a callback that may either return a value synchronously or may return a promised value.
-- This type could be the return type of `Promise#then()`, `Promise#catch()`, and `Promise#finally()` callbacks.
-
-Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/31394) if you want to have this type as a built-in in TypeScript.
-
-@example
-```
-import {Promisable} from 'type-fest';
-
-async function logger(getLogEntry: () => Promisable<string>): Promise<void> {
- const entry = await getLogEntry();
- console.log(entry);
-}
-
-logger(() => 'foo');
-logger(() => Promise.resolve('bar'));
-```
-*/
-export type Promisable<T> = T | PromiseLike<T>;
diff --git a/assets/node_modules/read-pkg/node_modules/type-fest/source/readonly-deep.d.ts b/assets/node_modules/read-pkg/node_modules/type-fest/source/readonly-deep.d.ts
deleted file mode 100644
index 8de4677..0000000
--- a/assets/node_modules/read-pkg/node_modules/type-fest/source/readonly-deep.d.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-import {Primitive} from './basic';
-
-/**
-Convert `object`s, `Map`s, `Set`s, and `Array`s and all of their properties/elements into immutable structures recursively.
-
-This is useful when a deeply nested structure needs to be exposed as completely immutable, for example, an imported JSON module or when receiving an API response that is passed around.
-
-Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/13923) if you want to have this type as a built-in in TypeScript.
-
-@example
-```
-// data.json
-{
- "foo": ["bar"]
-}
-
-// main.ts
-import {ReadonlyDeep} from 'type-fest';
-import dataJson = require('./data.json');
-
-const data: ReadonlyDeep<typeof dataJson> = dataJson;
-
-export default data;
-
-// test.ts
-import data from './main';
-
-data.foo.push('bar');
-//=> error TS2339: Property 'push' does not exist on type 'readonly string[]'
-```
-*/
-export type ReadonlyDeep<T> = T extends Primitive | ((...arguments: any[]) => unknown)
- ? T
- : T extends ReadonlyMap<infer KeyType, infer ValueType>
- ? ReadonlyMapDeep<KeyType, ValueType>
- : T extends ReadonlySet<infer ItemType>
- ? ReadonlySetDeep<ItemType>
- : T extends object
- ? ReadonlyObjectDeep<T>
- : unknown;
-
-/**
-Same as `ReadonlyDeep`, but accepts only `ReadonlyMap`s as inputs. Internal helper for `ReadonlyDeep`.
-*/
-interface ReadonlyMapDeep<KeyType, ValueType>
- extends ReadonlyMap<ReadonlyDeep<KeyType>, ReadonlyDeep<ValueType>> {}
-
-/**
-Same as `ReadonlyDeep`, but accepts only `ReadonlySet`s as inputs. Internal helper for `ReadonlyDeep`.
-*/
-interface ReadonlySetDeep<ItemType>
- extends ReadonlySet<ReadonlyDeep<ItemType>> {}
-
-/**
-Same as `ReadonlyDeep`, but accepts only `object`s as inputs. Internal helper for `ReadonlyDeep`.
-*/
-type ReadonlyObjectDeep<ObjectType extends object> = {
- readonly [PropertyType in keyof ObjectType]: ReadonlyDeep<ObjectType[PropertyType]>
-};
diff --git a/assets/node_modules/read-pkg/node_modules/type-fest/source/require-at-least-one.d.ts b/assets/node_modules/read-pkg/node_modules/type-fest/source/require-at-least-one.d.ts
deleted file mode 100644
index 2200d49..0000000
--- a/assets/node_modules/read-pkg/node_modules/type-fest/source/require-at-least-one.d.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import {Except} from './except';
-
-/**
-Create a type that requires at least one of the given properties. The remaining properties are kept as is.
-
-@example
-```
-import {RequireAtLeastOne} from 'type-fest';
-
-type Responder = {
- text?: () => string;
- json?: () => string;
-
- secure?: boolean;
-};
-
-const responder: RequireAtLeastOne<Responder, 'text' | 'json'> = {
- json: () => '{"message": "ok"}',
- secure: true
-};
-```
-*/
-export type RequireAtLeastOne<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> =
- {
- // For each Key in KeysType make a mapped type
- [Key in KeysType]: (
- // …by picking that Key's type and making it required
- Required<Pick<ObjectType, Key>>
- )
- }[KeysType]
- // …then, make intersection types by adding the remaining properties to each mapped type.
- & Except<ObjectType, KeysType>;
diff --git a/assets/node_modules/read-pkg/package.json b/assets/node_modules/read-pkg/package.json
deleted file mode 100644
index 05dc532..0000000
--- a/assets/node_modules/read-pkg/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "name": "read-pkg",
- "version": "5.2.0",
- "description": "Read a package.json file",
- "license": "MIT",
- "repository": "sindresorhus/read-pkg",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "json",
- "read",
- "parse",
- "file",
- "fs",
- "graceful",
- "load",
- "package",
- "normalize"
- ],
- "dependencies": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "devDependencies": {
- "ava": "^2.2.0",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- },
- "xo": {
- "ignores": [
- "test/test.js"
- ]
- }
-}
diff --git a/assets/node_modules/read-pkg/readme.md b/assets/node_modules/read-pkg/readme.md
deleted file mode 100644
index 74afd10..0000000
--- a/assets/node_modules/read-pkg/readme.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# read-pkg [![Build Status](https://travis-ci.org/sindresorhus/read-pkg.svg?branch=master)](https://travis-ci.org/sindresorhus/read-pkg)
-
-> Read a package.json file
-
-
-## Why
-
-- [Gracefully handles filesystem issues](https://github.com/isaacs/node-graceful-fs)
-- [Throws more helpful JSON errors](https://github.com/sindresorhus/parse-json)
-- [Normalizes the data](https://github.com/npm/normalize-package-data#what-normalization-currently-entails)
-
-
-## Install
-
-```
-$ npm install read-pkg
-```
-
-
-## Usage
-
-```js
-const readPkg = require('read-pkg');
-
-(async () => {
- console.log(await readPkg());
- //=> {name: 'read-pkg', …}
-
- console.log(await readPkg({cwd: 'some-other-directory'}));
- //=> {name: 'unicorn', …}
-})();
-```
-
-
-## API
-
-### readPkg(options?)
-
-Returns a `Promise<object>` with the parsed JSON.
-
-### readPkg.sync(options?)
-
-Returns the parsed JSON.
-
-#### options
-
-Type: `object`
-
-##### cwd
-
-Type: `string`<br>
-Default: `process.cwd()`
-
-Current working directory.
-
-##### normalize
-
-Type: `boolean`<br>
-Default: `true`
-
-[Normalize](https://github.com/npm/normalize-package-data#what-normalization-currently-entails) the package data.
-
-
-## Related
-
-- [read-pkg-up](https://github.com/sindresorhus/read-pkg-up) - Read the closest package.json file
-- [write-pkg](https://github.com/sindresorhus/write-pkg) - Write a `package.json` file
-- [load-json-file](https://github.com/sindresorhus/load-json-file) - Read and parse a JSON file
-
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-read-pkg?utm_source=npm-read-pkg&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
diff --git a/assets/node_modules/readable-stream/CONTRIBUTING.md b/assets/node_modules/readable-stream/CONTRIBUTING.md
deleted file mode 100644
index f478d58..0000000
--- a/assets/node_modules/readable-stream/CONTRIBUTING.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Developer's Certificate of Origin 1.1
-
-By making a contribution to this project, I certify that:
-
-* (a) The contribution was created in whole or in part by me and I
- have the right to submit it under the open source license
- indicated in the file; or
-
-* (b) The contribution is based upon previous work that, to the best
- of my knowledge, is covered under an appropriate open source
- license and I have the right under that license to submit that
- work with modifications, whether created in whole or in part
- by me, under the same open source license (unless I am
- permitted to submit under a different license), as indicated
- in the file; or
-
-* (c) The contribution was provided directly to me by some other
- person who certified (a), (b) or (c) and I have not modified
- it.
-
-* (d) I understand and agree that this project and the contribution
- are public and that a record of the contribution (including all
- personal information I submit with it, including my sign-off) is
- maintained indefinitely and may be redistributed consistent with
- this project or the open source license(s) involved.
-
-## Moderation Policy
-
-The [Node.js Moderation Policy] applies to this WG.
-
-## Code of Conduct
-
-The [Node.js Code of Conduct][] applies to this WG.
-
-[Node.js Code of Conduct]:
-https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md
-[Node.js Moderation Policy]:
-https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md
diff --git a/assets/node_modules/readable-stream/GOVERNANCE.md b/assets/node_modules/readable-stream/GOVERNANCE.md
deleted file mode 100644
index 16ffb93..0000000
--- a/assets/node_modules/readable-stream/GOVERNANCE.md
+++ /dev/null
@@ -1,136 +0,0 @@
-### Streams Working Group
-
-The Node.js Streams is jointly governed by a Working Group
-(WG)
-that is responsible for high-level guidance of the project.
-
-The WG has final authority over this project including:
-
-* Technical direction
-* Project governance and process (including this policy)
-* Contribution policy
-* GitHub repository hosting
-* Conduct guidelines
-* Maintaining the list of additional Collaborators
-
-For the current list of WG members, see the project
-[README.md](./README.md#current-project-team-members).
-
-### Collaborators
-
-The readable-stream GitHub repository is
-maintained by the WG and additional Collaborators who are added by the
-WG on an ongoing basis.
-
-Individuals making significant and valuable contributions are made
-Collaborators and given commit-access to the project. These
-individuals are identified by the WG and their addition as
-Collaborators is discussed during the WG meeting.
-
-_Note:_ If you make a significant contribution and are not considered
-for commit-access log an issue or contact a WG member directly and it
-will be brought up in the next WG meeting.
-
-Modifications of the contents of the readable-stream repository are
-made on
-a collaborative basis. Anybody with a GitHub account may propose a
-modification via pull request and it will be considered by the project
-Collaborators. All pull requests must be reviewed and accepted by a
-Collaborator with sufficient expertise who is able to take full
-responsibility for the change. In the case of pull requests proposed
-by an existing Collaborator, an additional Collaborator is required
-for sign-off. Consensus should be sought if additional Collaborators
-participate and there is disagreement around a particular
-modification. See _Consensus Seeking Process_ below for further detail
-on the consensus model used for governance.
-
-Collaborators may opt to elevate significant or controversial
-modifications, or modifications that have not found consensus to the
-WG for discussion by assigning the ***WG-agenda*** tag to a pull
-request or issue. The WG should serve as the final arbiter where
-required.
-
-For the current list of Collaborators, see the project
-[README.md](./README.md#members).
-
-### WG Membership
-
-WG seats are not time-limited. There is no fixed size of the WG.
-However, the expected target is between 6 and 12, to ensure adequate
-coverage of important areas of expertise, balanced with the ability to
-make decisions efficiently.
-
-There is no specific set of requirements or qualifications for WG
-membership beyond these rules.
-
-The WG may add additional members to the WG by unanimous consensus.
-
-A WG member may be removed from the WG by voluntary resignation, or by
-unanimous consensus of all other WG members.
-
-Changes to WG membership should be posted in the agenda, and may be
-suggested as any other agenda item (see "WG Meetings" below).
-
-If an addition or removal is proposed during a meeting, and the full
-WG is not in attendance to participate, then the addition or removal
-is added to the agenda for the subsequent meeting. This is to ensure
-that all members are given the opportunity to participate in all
-membership decisions. If a WG member is unable to attend a meeting
-where a planned membership decision is being made, then their consent
-is assumed.
-
-No more than 1/3 of the WG members may be affiliated with the same
-employer. If removal or resignation of a WG member, or a change of
-employment by a WG member, creates a situation where more than 1/3 of
-the WG membership shares an employer, then the situation must be
-immediately remedied by the resignation or removal of one or more WG
-members affiliated with the over-represented employer(s).
-
-### WG Meetings
-
-The WG meets occasionally on a Google Hangout On Air. A designated moderator
-approved by the WG runs the meeting. Each meeting should be
-published to YouTube.
-
-Items are added to the WG agenda that are considered contentious or
-are modifications of governance, contribution policy, WG membership,
-or release process.
-
-The intention of the agenda is not to approve or review all patches;
-that should happen continuously on GitHub and be handled by the larger
-group of Collaborators.
-
-Any community member or contributor can ask that something be added to
-the next meeting's agenda by logging a GitHub Issue. Any Collaborator,
-WG member or the moderator can add the item to the agenda by adding
-the ***WG-agenda*** tag to the issue.
-
-Prior to each WG meeting the moderator will share the Agenda with
-members of the WG. WG members can add any items they like to the
-agenda at the beginning of each meeting. The moderator and the WG
-cannot veto or remove items.
-
-The WG may invite persons or representatives from certain projects to
-participate in a non-voting capacity.
-
-The moderator is responsible for summarizing the discussion of each
-agenda item and sends it as a pull request after the meeting.
-
-### Consensus Seeking Process
-
-The WG follows a
-[Consensus
-Seeking](http://en.wikipedia.org/wiki/Consensus-seeking_decision-making)
-decision-making model.
-
-When an agenda item has appeared to reach a consensus the moderator
-will ask "Does anyone object?" as a final call for dissent from the
-consensus.
-
-If an agenda item cannot reach a consensus a WG member can call for
-either a closing vote or a vote to table the issue to the next
-meeting. The call for a vote must be seconded by a majority of the WG
-or else the discussion will continue. Simple majority wins.
-
-Note that changes to WG membership require a majority consensus. See
-"WG Membership" above.
diff --git a/assets/node_modules/readable-stream/LICENSE b/assets/node_modules/readable-stream/LICENSE
deleted file mode 100644
index 2873b3b..0000000
--- a/assets/node_modules/readable-stream/LICENSE
+++ /dev/null
@@ -1,47 +0,0 @@
-Node.js is licensed for use as follows:
-
-"""
-Copyright Node.js contributors. 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.
-"""
-
-This license applies to parts of Node.js originating from the
-https://github.com/joyent/node repository:
-
-"""
-Copyright Joyent, Inc. and other Node contributors. 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/assets/node_modules/readable-stream/README.md b/assets/node_modules/readable-stream/README.md
deleted file mode 100644
index 19117c1..0000000
--- a/assets/node_modules/readable-stream/README.md
+++ /dev/null
@@ -1,106 +0,0 @@
-# readable-stream
-
-***Node.js core streams for userland*** [![Build Status](https://travis-ci.com/nodejs/readable-stream.svg?branch=master)](https://travis-ci.com/nodejs/readable-stream)
-
-
-[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/)
-[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/)
-
-
-[![Sauce Test Status](https://saucelabs.com/browser-matrix/readabe-stream.svg)](https://saucelabs.com/u/readabe-stream)
-
-```bash
-npm install --save readable-stream
-```
-
-This package is a mirror of the streams implementations in Node.js.
-
-Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v10.18.1/docs/api/stream.html).
-
-If you want to guarantee a stable streams base, regardless of what version of
-Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html).
-
-As of version 2.0.0 **readable-stream** uses semantic versioning.
-
-## Version 3.x.x
-
-v3.x.x of `readable-stream` is a cut from Node 10. This version supports Node 6, 8, and 10, as well as evergreen browsers, IE 11 and latest Safari. The breaking changes introduced by v3 are composed by the combined breaking changes in [Node v9](https://nodejs.org/en/blog/release/v9.0.0/) and [Node v10](https://nodejs.org/en/blog/release/v10.0.0/), as follows:
-
-1. Error codes: https://github.com/nodejs/node/pull/13310,
- https://github.com/nodejs/node/pull/13291,
- https://github.com/nodejs/node/pull/16589,
- https://github.com/nodejs/node/pull/15042,
- https://github.com/nodejs/node/pull/15665,
- https://github.com/nodejs/readable-stream/pull/344
-2. 'readable' have precedence over flowing
- https://github.com/nodejs/node/pull/18994
-3. make virtual methods errors consistent
- https://github.com/nodejs/node/pull/18813
-4. updated streams error handling
- https://github.com/nodejs/node/pull/18438
-5. writable.end should return this.
- https://github.com/nodejs/node/pull/18780
-6. readable continues to read when push('')
- https://github.com/nodejs/node/pull/18211
-7. add custom inspect to BufferList
- https://github.com/nodejs/node/pull/17907
-8. always defer 'readable' with nextTick
- https://github.com/nodejs/node/pull/17979
-
-## Version 2.x.x
-v2.x.x of `readable-stream` is a cut of the stream module from Node 8 (there have been no semver-major changes from Node 4 to 8). This version supports all Node.js versions from 0.8, as well as evergreen browsers and IE 10 & 11.
-
-### Big Thanks
-
-Cross-browser Testing Platform and Open Source <3 Provided by [Sauce Labs][sauce]
-
-# Usage
-
-You can swap your `require('stream')` with `require('readable-stream')`
-without any changes, if you are just using one of the main classes and
-functions.
-
-```js
-const {
- Readable,
- Writable,
- Transform,
- Duplex,
- pipeline,
- finished
-} = require('readable-stream')
-````
-
-Note that `require('stream')` will return `Stream`, while
-`require('readable-stream')` will return `Readable`. We discourage using
-whatever is exported directly, but rather use one of the properties as
-shown in the example above.
-
-# Streams Working Group
-
-`readable-stream` is maintained by the Streams Working Group, which
-oversees the development and maintenance of the Streams API within
-Node.js. The responsibilities of the Streams Working Group include:
-
-* Addressing stream issues on the Node.js issue tracker.
-* Authoring and editing stream documentation within the Node.js project.
-* Reviewing changes to stream subclasses within the Node.js project.
-* Redirecting changes to streams from the Node.js project to this
- project.
-* Assisting in the implementation of stream providers within Node.js.
-* Recommending versions of `readable-stream` to be included in Node.js.
-* Messaging about the future of streams to give the community advance
- notice of changes.
-
-<a name="members"></a>
-## Team Members
-
-* **Calvin Metcalf** ([@calvinmetcalf](https://github.com/calvinmetcalf)) &lt;calvin.metcalf@gmail.com&gt;
- - Release GPG key: F3EF5F62A87FC27A22E643F714CE4FF5015AA242
-* **Mathias Buus** ([@mafintosh](https://github.com/mafintosh)) &lt;mathiasbuus@gmail.com&gt;
-* **Matteo Collina** ([@mcollina](https://github.com/mcollina)) &lt;matteo.collina@gmail.com&gt;
- - Release GPG key: 3ABC01543F22DD2239285CDD818674489FBC127E
-* **Irina Shestak** ([@lrlna](https://github.com/lrlna)) &lt;shestak.irina@gmail.com&gt;
-* **Yoshua Wyuts** ([@yoshuawuyts](https://github.com/yoshuawuyts)) &lt;yoshuawuyts@gmail.com&gt;
-
-[sauce]: https://saucelabs.com
diff --git a/assets/node_modules/readable-stream/errors-browser.js b/assets/node_modules/readable-stream/errors-browser.js
deleted file mode 100644
index fb8e73e..0000000
--- a/assets/node_modules/readable-stream/errors-browser.js
+++ /dev/null
@@ -1,127 +0,0 @@
-'use strict';
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var codes = {};
-
-function createErrorType(code, message, Base) {
- if (!Base) {
- Base = Error;
- }
-
- function getMessage(arg1, arg2, arg3) {
- if (typeof message === 'string') {
- return message;
- } else {
- return message(arg1, arg2, arg3);
- }
- }
-
- var NodeError =
- /*#__PURE__*/
- function (_Base) {
- _inheritsLoose(NodeError, _Base);
-
- function NodeError(arg1, arg2, arg3) {
- return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;
- }
-
- return NodeError;
- }(Base);
-
- NodeError.prototype.name = Base.name;
- NodeError.prototype.code = code;
- codes[code] = NodeError;
-} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js
-
-
-function oneOf(expected, thing) {
- if (Array.isArray(expected)) {
- var len = expected.length;
- expected = expected.map(function (i) {
- return String(i);
- });
-
- if (len > 2) {
- return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1];
- } else if (len === 2) {
- return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]);
- } else {
- return "of ".concat(thing, " ").concat(expected[0]);
- }
- } else {
- return "of ".concat(thing, " ").concat(String(expected));
- }
-} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
-
-
-function startsWith(str, search, pos) {
- return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;
-} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
-
-
-function endsWith(str, search, this_len) {
- if (this_len === undefined || this_len > str.length) {
- this_len = str.length;
- }
-
- return str.substring(this_len - search.length, this_len) === search;
-} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
-
-
-function includes(str, search, start) {
- if (typeof start !== 'number') {
- start = 0;
- }
-
- if (start + search.length > str.length) {
- return false;
- } else {
- return str.indexOf(search, start) !== -1;
- }
-}
-
-createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {
- return 'The value "' + value + '" is invalid for option "' + name + '"';
-}, TypeError);
-createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {
- // determiner: 'must be' or 'must not be'
- var determiner;
-
- if (typeof expected === 'string' && startsWith(expected, 'not ')) {
- determiner = 'must not be';
- expected = expected.replace(/^not /, '');
- } else {
- determiner = 'must be';
- }
-
- var msg;
-
- if (endsWith(name, ' argument')) {
- // For cases like 'first argument'
- msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type'));
- } else {
- var type = includes(name, '.') ? 'property' : 'argument';
- msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type'));
- }
-
- msg += ". Received type ".concat(typeof actual);
- return msg;
-}, TypeError);
-createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');
-createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {
- return 'The ' + name + ' method is not implemented';
-});
-createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');
-createErrorType('ERR_STREAM_DESTROYED', function (name) {
- return 'Cannot call ' + name + ' after a stream was destroyed';
-});
-createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');
-createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');
-createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');
-createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);
-createErrorType('ERR_UNKNOWN_ENCODING', function (arg) {
- return 'Unknown encoding: ' + arg;
-}, TypeError);
-createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');
-module.exports.codes = codes;
diff --git a/assets/node_modules/readable-stream/errors.js b/assets/node_modules/readable-stream/errors.js
deleted file mode 100644
index 8471526..0000000
--- a/assets/node_modules/readable-stream/errors.js
+++ /dev/null
@@ -1,116 +0,0 @@
-'use strict';
-
-const codes = {};
-
-function createErrorType(code, message, Base) {
- if (!Base) {
- Base = Error
- }
-
- function getMessage (arg1, arg2, arg3) {
- if (typeof message === 'string') {
- return message
- } else {
- return message(arg1, arg2, arg3)
- }
- }
-
- class NodeError extends Base {
- constructor (arg1, arg2, arg3) {
- super(getMessage(arg1, arg2, arg3));
- }
- }
-
- NodeError.prototype.name = Base.name;
- NodeError.prototype.code = code;
-
- codes[code] = NodeError;
-}
-
-// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js
-function oneOf(expected, thing) {
- if (Array.isArray(expected)) {
- const len = expected.length;
- expected = expected.map((i) => String(i));
- if (len > 2) {
- return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` +
- expected[len - 1];
- } else if (len === 2) {
- return `one of ${thing} ${expected[0]} or ${expected[1]}`;
- } else {
- return `of ${thing} ${expected[0]}`;
- }
- } else {
- return `of ${thing} ${String(expected)}`;
- }
-}
-
-// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
-function startsWith(str, search, pos) {
- return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;
-}
-
-// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
-function endsWith(str, search, this_len) {
- if (this_len === undefined || this_len > str.length) {
- this_len = str.length;
- }
- return str.substring(this_len - search.length, this_len) === search;
-}
-
-// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
-function includes(str, search, start) {
- if (typeof start !== 'number') {
- start = 0;
- }
-
- if (start + search.length > str.length) {
- return false;
- } else {
- return str.indexOf(search, start) !== -1;
- }
-}
-
-createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {
- return 'The value "' + value + '" is invalid for option "' + name + '"'
-}, TypeError);
-createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {
- // determiner: 'must be' or 'must not be'
- let determiner;
- if (typeof expected === 'string' && startsWith(expected, 'not ')) {
- determiner = 'must not be';
- expected = expected.replace(/^not /, '');
- } else {
- determiner = 'must be';
- }
-
- let msg;
- if (endsWith(name, ' argument')) {
- // For cases like 'first argument'
- msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`;
- } else {
- const type = includes(name, '.') ? 'property' : 'argument';
- msg = `The "${name}" ${type} ${determiner} ${oneOf(expected, 'type')}`;
- }
-
- msg += `. Received type ${typeof actual}`;
- return msg;
-}, TypeError);
-createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');
-createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {
- return 'The ' + name + ' method is not implemented'
-});
-createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');
-createErrorType('ERR_STREAM_DESTROYED', function (name) {
- return 'Cannot call ' + name + ' after a stream was destroyed';
-});
-createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');
-createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');
-createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');
-createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);
-createErrorType('ERR_UNKNOWN_ENCODING', function (arg) {
- return 'Unknown encoding: ' + arg
-}, TypeError);
-createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');
-
-module.exports.codes = codes;
diff --git a/assets/node_modules/readable-stream/experimentalWarning.js b/assets/node_modules/readable-stream/experimentalWarning.js
deleted file mode 100644
index 78e8414..0000000
--- a/assets/node_modules/readable-stream/experimentalWarning.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict'
-
-var experimentalWarnings = new Set();
-
-function emitExperimentalWarning(feature) {
- if (experimentalWarnings.has(feature)) return;
- var msg = feature + ' is an experimental feature. This feature could ' +
- 'change at any time';
- experimentalWarnings.add(feature);
- process.emitWarning(msg, 'ExperimentalWarning');
-}
-
-function noop() {}
-
-module.exports.emitExperimentalWarning = process.emitWarning
- ? emitExperimentalWarning
- : noop;
diff --git a/assets/node_modules/readable-stream/lib/_stream_duplex.js b/assets/node_modules/readable-stream/lib/_stream_duplex.js
deleted file mode 100644
index 6752519..0000000
--- a/assets/node_modules/readable-stream/lib/_stream_duplex.js
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright Joyent, Inc. and other Node 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.
-// a duplex stream is just a stream that is both readable and writable.
-// Since JS doesn't have multiple prototypal inheritance, this class
-// prototypally inherits from Readable, and then parasitically from
-// Writable.
-'use strict';
-/*<replacement>*/
-
-var objectKeys = Object.keys || function (obj) {
- var keys = [];
-
- for (var key in obj) {
- keys.push(key);
- }
-
- return keys;
-};
-/*</replacement>*/
-
-
-module.exports = Duplex;
-
-var Readable = require('./_stream_readable');
-
-var Writable = require('./_stream_writable');
-
-require('inherits')(Duplex, Readable);
-
-{
- // Allow the keys array to be GC'ed.
- var keys = objectKeys(Writable.prototype);
-
- for (var v = 0; v < keys.length; v++) {
- var method = keys[v];
- if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
- }
-}
-
-function Duplex(options) {
- if (!(this instanceof Duplex)) return new Duplex(options);
- Readable.call(this, options);
- Writable.call(this, options);
- this.allowHalfOpen = true;
-
- if (options) {
- if (options.readable === false) this.readable = false;
- if (options.writable === false) this.writable = false;
-
- if (options.allowHalfOpen === false) {
- this.allowHalfOpen = false;
- this.once('end', onend);
- }
- }
-}
-
-Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function get() {
- return this._writableState.highWaterMark;
- }
-});
-Object.defineProperty(Duplex.prototype, 'writableBuffer', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function get() {
- return this._writableState && this._writableState.getBuffer();
- }
-});
-Object.defineProperty(Duplex.prototype, 'writableLength', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function get() {
- return this._writableState.length;
- }
-}); // the no-half-open enforcer
-
-function onend() {
- // If the writable side ended, then we're ok.
- if (this._writableState.ended) return; // no more data can be written.
- // But allow more writes to happen in this tick.
-
- process.nextTick(onEndNT, this);
-}
-
-function onEndNT(self) {
- self.end();
-}
-
-Object.defineProperty(Duplex.prototype, 'destroyed', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function get() {
- if (this._readableState === undefined || this._writableState === undefined) {
- return false;
- }
-
- return this._readableState.destroyed && this._writableState.destroyed;
- },
- set: function set(value) {
- // we ignore the value if the stream
- // has not been initialized yet
- if (this._readableState === undefined || this._writableState === undefined) {
- return;
- } // backward compatibility, the user is explicitly
- // managing destroyed
-
-
- this._readableState.destroyed = value;
- this._writableState.destroyed = value;
- }
-}); \ No newline at end of file
diff --git a/assets/node_modules/readable-stream/lib/_stream_passthrough.js b/assets/node_modules/readable-stream/lib/_stream_passthrough.js
deleted file mode 100644
index 32e7414..0000000
--- a/assets/node_modules/readable-stream/lib/_stream_passthrough.js
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright Joyent, Inc. and other Node 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.
-// a passthrough stream.
-// basically just the most minimal sort of Transform stream.
-// Every written chunk gets output as-is.
-'use strict';
-
-module.exports = PassThrough;
-
-var Transform = require('./_stream_transform');
-
-require('inherits')(PassThrough, Transform);
-
-function PassThrough(options) {
- if (!(this instanceof PassThrough)) return new PassThrough(options);
- Transform.call(this, options);
-}
-
-PassThrough.prototype._transform = function (chunk, encoding, cb) {
- cb(null, chunk);
-}; \ No newline at end of file
diff --git a/assets/node_modules/readable-stream/lib/_stream_readable.js b/assets/node_modules/readable-stream/lib/_stream_readable.js
deleted file mode 100644
index 192d451..0000000
--- a/assets/node_modules/readable-stream/lib/_stream_readable.js
+++ /dev/null
@@ -1,1124 +0,0 @@
-// Copyright Joyent, Inc. and other Node 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.
-'use strict';
-
-module.exports = Readable;
-/*<replacement>*/
-
-var Duplex;
-/*</replacement>*/
-
-Readable.ReadableState = ReadableState;
-/*<replacement>*/
-
-var EE = require('events').EventEmitter;
-
-var EElistenerCount = function EElistenerCount(emitter, type) {
- return emitter.listeners(type).length;
-};
-/*</replacement>*/
-
-/*<replacement>*/
-
-
-var Stream = require('./internal/streams/stream');
-/*</replacement>*/
-
-
-var Buffer = require('buffer').Buffer;
-
-var OurUint8Array = global.Uint8Array || function () {};
-
-function _uint8ArrayToBuffer(chunk) {
- return Buffer.from(chunk);
-}
-
-function _isUint8Array(obj) {
- return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
-}
-/*<replacement>*/
-
-
-var debugUtil = require('util');
-
-var debug;
-
-if (debugUtil && debugUtil.debuglog) {
- debug = debugUtil.debuglog('stream');
-} else {
- debug = function debug() {};
-}
-/*</replacement>*/
-
-
-var BufferList = require('./internal/streams/buffer_list');
-
-var destroyImpl = require('./internal/streams/destroy');
-
-var _require = require('./internal/streams/state'),
- getHighWaterMark = _require.getHighWaterMark;
-
-var _require$codes = require('../errors').codes,
- ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,
- ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,
- ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,
- ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.
-
-
-var StringDecoder;
-var createReadableStreamAsyncIterator;
-var from;
-
-require('inherits')(Readable, Stream);
-
-var errorOrDestroy = destroyImpl.errorOrDestroy;
-var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
-
-function prependListener(emitter, event, fn) {
- // Sadly this is not cacheable as some libraries bundle their own
- // event emitter implementation with them.
- if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any
- // userland ones. NEVER DO THIS. This is here only because this code needs
- // to continue to work with older versions of Node.js that do not include
- // the prependListener() method. The goal is to eventually remove this hack.
-
- if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
-}
-
-function ReadableState(options, stream, isDuplex) {
- Duplex = Duplex || require('./_stream_duplex');
- options = options || {}; // Duplex streams are both readable and writable, but share
- // the same options object.
- // However, some cases require setting options to different
- // values for the readable and the writable sides of the duplex stream.
- // These options can be provided separately as readableXXX and writableXXX.
-
- if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to
- // make all the buffer merging and length checks go away
-
- this.objectMode = !!options.objectMode;
- if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer
- // Note: 0 is a valid value, means "don't call _read preemptively ever"
-
- this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the
- // linked list can remove elements from the beginning faster than
- // array.shift()
-
- this.buffer = new BufferList();
- this.length = 0;
- this.pipes = null;
- this.pipesCount = 0;
- this.flowing = null;
- this.ended = false;
- this.endEmitted = false;
- this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted
- // immediately, or on a later tick. We set this to true at first, because
- // any actions that shouldn't happen until "later" should generally also
- // not happen before the first read call.
-
- this.sync = true; // whenever we return null, then we set a flag to say
- // that we're awaiting a 'readable' event emission.
-
- this.needReadable = false;
- this.emittedReadable = false;
- this.readableListening = false;
- this.resumeScheduled = false;
- this.paused = true; // Should close be emitted on destroy. Defaults to true.
-
- this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')
-
- this.autoDestroy = !!options.autoDestroy; // has it been destroyed
-
- this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
-
- this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s
-
- this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled
-
- this.readingMore = false;
- this.decoder = null;
- this.encoding = null;
-
- if (options.encoding) {
- if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
- this.decoder = new StringDecoder(options.encoding);
- this.encoding = options.encoding;
- }
-}
-
-function Readable(options) {
- Duplex = Duplex || require('./_stream_duplex');
- if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside
- // the ReadableState constructor, at least with V8 6.5
-
- var isDuplex = this instanceof Duplex;
- this._readableState = new ReadableState(options, this, isDuplex); // legacy
-
- this.readable = true;
-
- if (options) {
- if (typeof options.read === 'function') this._read = options.read;
- if (typeof options.destroy === 'function') this._destroy = options.destroy;
- }
-
- Stream.call(this);
-}
-
-Object.defineProperty(Readable.prototype, 'destroyed', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function get() {
- if (this._readableState === undefined) {
- return false;
- }
-
- return this._readableState.destroyed;
- },
- set: function set(value) {
- // we ignore the value if the stream
- // has not been initialized yet
- if (!this._readableState) {
- return;
- } // backward compatibility, the user is explicitly
- // managing destroyed
-
-
- this._readableState.destroyed = value;
- }
-});
-Readable.prototype.destroy = destroyImpl.destroy;
-Readable.prototype._undestroy = destroyImpl.undestroy;
-
-Readable.prototype._destroy = function (err, cb) {
- cb(err);
-}; // Manually shove something into the read() buffer.
-// This returns true if the highWaterMark has not been hit yet,
-// similar to how Writable.write() returns true if you should
-// write() some more.
-
-
-Readable.prototype.push = function (chunk, encoding) {
- var state = this._readableState;
- var skipChunkCheck;
-
- if (!state.objectMode) {
- if (typeof chunk === 'string') {
- encoding = encoding || state.defaultEncoding;
-
- if (encoding !== state.encoding) {
- chunk = Buffer.from(chunk, encoding);
- encoding = '';
- }
-
- skipChunkCheck = true;
- }
- } else {
- skipChunkCheck = true;
- }
-
- return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
-}; // Unshift should *always* be something directly out of read()
-
-
-Readable.prototype.unshift = function (chunk) {
- return readableAddChunk(this, chunk, null, true, false);
-};
-
-function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
- debug('readableAddChunk', chunk);
- var state = stream._readableState;
-
- if (chunk === null) {
- state.reading = false;
- onEofChunk(stream, state);
- } else {
- var er;
- if (!skipChunkCheck) er = chunkInvalid(state, chunk);
-
- if (er) {
- errorOrDestroy(stream, er);
- } else if (state.objectMode || chunk && chunk.length > 0) {
- if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
- chunk = _uint8ArrayToBuffer(chunk);
- }
-
- if (addToFront) {
- if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);
- } else if (state.ended) {
- errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());
- } else if (state.destroyed) {
- return false;
- } else {
- state.reading = false;
-
- if (state.decoder && !encoding) {
- chunk = state.decoder.write(chunk);
- if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
- } else {
- addChunk(stream, state, chunk, false);
- }
- }
- } else if (!addToFront) {
- state.reading = false;
- maybeReadMore(stream, state);
- }
- } // We can push more data if we are below the highWaterMark.
- // Also, if we have no data yet, we can stand some more bytes.
- // This is to work around cases where hwm=0, such as the repl.
-
-
- return !state.ended && (state.length < state.highWaterMark || state.length === 0);
-}
-
-function addChunk(stream, state, chunk, addToFront) {
- if (state.flowing && state.length === 0 && !state.sync) {
- state.awaitDrain = 0;
- stream.emit('data', chunk);
- } else {
- // update the buffer info.
- state.length += state.objectMode ? 1 : chunk.length;
- if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
- if (state.needReadable) emitReadable(stream);
- }
-
- maybeReadMore(stream, state);
-}
-
-function chunkInvalid(state, chunk) {
- var er;
-
- if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
- er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);
- }
-
- return er;
-}
-
-Readable.prototype.isPaused = function () {
- return this._readableState.flowing === false;
-}; // backwards compatibility.
-
-
-Readable.prototype.setEncoding = function (enc) {
- if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
- var decoder = new StringDecoder(enc);
- this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8
-
- this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:
-
- var p = this._readableState.buffer.head;
- var content = '';
-
- while (p !== null) {
- content += decoder.write(p.data);
- p = p.next;
- }
-
- this._readableState.buffer.clear();
-
- if (content !== '') this._readableState.buffer.push(content);
- this._readableState.length = content.length;
- return this;
-}; // Don't raise the hwm > 1GB
-
-
-var MAX_HWM = 0x40000000;
-
-function computeNewHighWaterMark(n) {
- if (n >= MAX_HWM) {
- // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.
- n = MAX_HWM;
- } else {
- // Get the next highest power of 2 to prevent increasing hwm excessively in
- // tiny amounts
- n--;
- n |= n >>> 1;
- n |= n >>> 2;
- n |= n >>> 4;
- n |= n >>> 8;
- n |= n >>> 16;
- n++;
- }
-
- return n;
-} // This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-
-
-function howMuchToRead(n, state) {
- if (n <= 0 || state.length === 0 && state.ended) return 0;
- if (state.objectMode) return 1;
-
- if (n !== n) {
- // Only flow one buffer at a time
- if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
- } // If we're asking for more than the current hwm, then raise the hwm.
-
-
- if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
- if (n <= state.length) return n; // Don't have enough
-
- if (!state.ended) {
- state.needReadable = true;
- return 0;
- }
-
- return state.length;
-} // you can override either this method, or the async _read(n) below.
-
-
-Readable.prototype.read = function (n) {
- debug('read', n);
- n = parseInt(n, 10);
- var state = this._readableState;
- var nOrig = n;
- if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we
- // already have a bunch of data in the buffer, then just trigger
- // the 'readable' event and move on.
-
- if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {
- debug('read: emitReadable', state.length, state.ended);
- if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
- return null;
- }
-
- n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.
-
- if (n === 0 && state.ended) {
- if (state.length === 0) endReadable(this);
- return null;
- } // All the actual chunk generation logic needs to be
- // *below* the call to _read. The reason is that in certain
- // synthetic stream cases, such as passthrough streams, _read
- // may be a completely synchronous operation which may change
- // the state of the read buffer, providing enough data when
- // before there was *not* enough.
- //
- // So, the steps are:
- // 1. Figure out what the state of things will be after we do
- // a read from the buffer.
- //
- // 2. If that resulting state will trigger a _read, then call _read.
- // Note that this may be asynchronous, or synchronous. Yes, it is
- // deeply ugly to write APIs this way, but that still doesn't mean
- // that the Readable class should behave improperly, as streams are
- // designed to be sync/async agnostic.
- // Take note if the _read call is sync or async (ie, if the read call
- // has returned yet), so that we know whether or not it's safe to emit
- // 'readable' etc.
- //
- // 3. Actually pull the requested chunks out of the buffer and return.
- // if we need a readable event, then we need to do some reading.
-
-
- var doRead = state.needReadable;
- debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some
-
- if (state.length === 0 || state.length - n < state.highWaterMark) {
- doRead = true;
- debug('length less than watermark', doRead);
- } // however, if we've ended, then there's no point, and if we're already
- // reading, then it's unnecessary.
-
-
- if (state.ended || state.reading) {
- doRead = false;
- debug('reading or ended', doRead);
- } else if (doRead) {
- debug('do read');
- state.reading = true;
- state.sync = true; // if the length is currently zero, then we *need* a readable event.
-
- if (state.length === 0) state.needReadable = true; // call internal read method
-
- this._read(state.highWaterMark);
-
- state.sync = false; // If _read pushed data synchronously, then `reading` will be false,
- // and we need to re-evaluate how much data we can return to the user.
-
- if (!state.reading) n = howMuchToRead(nOrig, state);
- }
-
- var ret;
- if (n > 0) ret = fromList(n, state);else ret = null;
-
- if (ret === null) {
- state.needReadable = state.length <= state.highWaterMark;
- n = 0;
- } else {
- state.length -= n;
- state.awaitDrain = 0;
- }
-
- if (state.length === 0) {
- // If we have nothing in the buffer, then we want to know
- // as soon as we *do* get something into the buffer.
- if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.
-
- if (nOrig !== n && state.ended) endReadable(this);
- }
-
- if (ret !== null) this.emit('data', ret);
- return ret;
-};
-
-function onEofChunk(stream, state) {
- debug('onEofChunk');
- if (state.ended) return;
-
- if (state.decoder) {
- var chunk = state.decoder.end();
-
- if (chunk && chunk.length) {
- state.buffer.push(chunk);
- state.length += state.objectMode ? 1 : chunk.length;
- }
- }
-
- state.ended = true;
-
- if (state.sync) {
- // if we are sync, wait until next tick to emit the data.
- // Otherwise we risk emitting data in the flow()
- // the readable code triggers during a read() call
- emitReadable(stream);
- } else {
- // emit 'readable' now to make sure it gets picked up.
- state.needReadable = false;
-
- if (!state.emittedReadable) {
- state.emittedReadable = true;
- emitReadable_(stream);
- }
- }
-} // Don't emit readable right away in sync mode, because this can trigger
-// another read() call => stack overflow. This way, it might trigger
-// a nextTick recursion warning, but that's not so bad.
-
-
-function emitReadable(stream) {
- var state = stream._readableState;
- debug('emitReadable', state.needReadable, state.emittedReadable);
- state.needReadable = false;
-
- if (!state.emittedReadable) {
- debug('emitReadable', state.flowing);
- state.emittedReadable = true;
- process.nextTick(emitReadable_, stream);
- }
-}
-
-function emitReadable_(stream) {
- var state = stream._readableState;
- debug('emitReadable_', state.destroyed, state.length, state.ended);
-
- if (!state.destroyed && (state.length || state.ended)) {
- stream.emit('readable');
- state.emittedReadable = false;
- } // The stream needs another readable event if
- // 1. It is not flowing, as the flow mechanism will take
- // care of it.
- // 2. It is not ended.
- // 3. It is below the highWaterMark, so we can schedule
- // another readable later.
-
-
- state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;
- flow(stream);
-} // at this point, the user has presumably seen the 'readable' event,
-// and called read() to consume some data. that may have triggered
-// in turn another _read(n) call, in which case reading = true if
-// it's in progress.
-// However, if we're not ended, or reading, and the length < hwm,
-// then go ahead and try to read some more preemptively.
-
-
-function maybeReadMore(stream, state) {
- if (!state.readingMore) {
- state.readingMore = true;
- process.nextTick(maybeReadMore_, stream, state);
- }
-}
-
-function maybeReadMore_(stream, state) {
- // Attempt to read more data if we should.
- //
- // The conditions for reading more data are (one of):
- // - Not enough data buffered (state.length < state.highWaterMark). The loop
- // is responsible for filling the buffer with enough data if such data
- // is available. If highWaterMark is 0 and we are not in the flowing mode
- // we should _not_ attempt to buffer any extra data. We'll get more data
- // when the stream consumer calls read() instead.
- // - No data in the buffer, and the stream is in flowing mode. In this mode
- // the loop below is responsible for ensuring read() is called. Failing to
- // call read here would abort the flow and there's no other mechanism for
- // continuing the flow if the stream consumer has just subscribed to the
- // 'data' event.
- //
- // In addition to the above conditions to keep reading data, the following
- // conditions prevent the data from being read:
- // - The stream has ended (state.ended).
- // - There is already a pending 'read' operation (state.reading). This is a
- // case where the the stream has called the implementation defined _read()
- // method, but they are processing the call asynchronously and have _not_
- // called push() with new data. In this case we skip performing more
- // read()s. The execution ends in this method again after the _read() ends
- // up calling push() with more data.
- while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {
- var len = state.length;
- debug('maybeReadMore read 0');
- stream.read(0);
- if (len === state.length) // didn't get any data, stop spinning.
- break;
- }
-
- state.readingMore = false;
-} // abstract method. to be overridden in specific implementation classes.
-// call cb(er, data) where data is <= n in length.
-// for virtual (non-string, non-buffer) streams, "length" is somewhat
-// arbitrary, and perhaps not very meaningful.
-
-
-Readable.prototype._read = function (n) {
- errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));
-};
-
-Readable.prototype.pipe = function (dest, pipeOpts) {
- var src = this;
- var state = this._readableState;
-
- switch (state.pipesCount) {
- case 0:
- state.pipes = dest;
- break;
-
- case 1:
- state.pipes = [state.pipes, dest];
- break;
-
- default:
- state.pipes.push(dest);
- break;
- }
-
- state.pipesCount += 1;
- debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
- var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
- var endFn = doEnd ? onend : unpipe;
- if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);
- dest.on('unpipe', onunpipe);
-
- function onunpipe(readable, unpipeInfo) {
- debug('onunpipe');
-
- if (readable === src) {
- if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
- unpipeInfo.hasUnpiped = true;
- cleanup();
- }
- }
- }
-
- function onend() {
- debug('onend');
- dest.end();
- } // when the dest drains, it reduces the awaitDrain counter
- // on the source. This would be more elegant with a .once()
- // handler in flow(), but adding and removing repeatedly is
- // too slow.
-
-
- var ondrain = pipeOnDrain(src);
- dest.on('drain', ondrain);
- var cleanedUp = false;
-
- function cleanup() {
- debug('cleanup'); // cleanup event handlers once the pipe is broken
-
- dest.removeListener('close', onclose);
- dest.removeListener('finish', onfinish);
- dest.removeListener('drain', ondrain);
- dest.removeListener('error', onerror);
- dest.removeListener('unpipe', onunpipe);
- src.removeListener('end', onend);
- src.removeListener('end', unpipe);
- src.removeListener('data', ondata);
- cleanedUp = true; // if the reader is waiting for a drain event from this
- // specific writer, then it would cause it to never start
- // flowing again.
- // So, if this is awaiting a drain, then we just call it now.
- // If we don't know, then assume that we are waiting for one.
-
- if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
- }
-
- src.on('data', ondata);
-
- function ondata(chunk) {
- debug('ondata');
- var ret = dest.write(chunk);
- debug('dest.write', ret);
-
- if (ret === false) {
- // If the user unpiped during `dest.write()`, it is possible
- // to get stuck in a permanently paused state if that write
- // also returned false.
- // => Check whether `dest` is still a piping destination.
- if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
- debug('false write response, pause', state.awaitDrain);
- state.awaitDrain++;
- }
-
- src.pause();
- }
- } // if the dest has an error, then stop piping into it.
- // however, don't suppress the throwing behavior for this.
-
-
- function onerror(er) {
- debug('onerror', er);
- unpipe();
- dest.removeListener('error', onerror);
- if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);
- } // Make sure our error handler is attached before userland ones.
-
-
- prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.
-
- function onclose() {
- dest.removeListener('finish', onfinish);
- unpipe();
- }
-
- dest.once('close', onclose);
-
- function onfinish() {
- debug('onfinish');
- dest.removeListener('close', onclose);
- unpipe();
- }
-
- dest.once('finish', onfinish);
-
- function unpipe() {
- debug('unpipe');
- src.unpipe(dest);
- } // tell the dest that it's being piped to
-
-
- dest.emit('pipe', src); // start the flow if it hasn't been started already.
-
- if (!state.flowing) {
- debug('pipe resume');
- src.resume();
- }
-
- return dest;
-};
-
-function pipeOnDrain(src) {
- return function pipeOnDrainFunctionResult() {
- var state = src._readableState;
- debug('pipeOnDrain', state.awaitDrain);
- if (state.awaitDrain) state.awaitDrain--;
-
- if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
- state.flowing = true;
- flow(src);
- }
- };
-}
-
-Readable.prototype.unpipe = function (dest) {
- var state = this._readableState;
- var unpipeInfo = {
- hasUnpiped: false
- }; // if we're not piping anywhere, then do nothing.
-
- if (state.pipesCount === 0) return this; // just one destination. most common case.
-
- if (state.pipesCount === 1) {
- // passed in one, but it's not the right one.
- if (dest && dest !== state.pipes) return this;
- if (!dest) dest = state.pipes; // got a match.
-
- state.pipes = null;
- state.pipesCount = 0;
- state.flowing = false;
- if (dest) dest.emit('unpipe', this, unpipeInfo);
- return this;
- } // slow case. multiple pipe destinations.
-
-
- if (!dest) {
- // remove all.
- var dests = state.pipes;
- var len = state.pipesCount;
- state.pipes = null;
- state.pipesCount = 0;
- state.flowing = false;
-
- for (var i = 0; i < len; i++) {
- dests[i].emit('unpipe', this, {
- hasUnpiped: false
- });
- }
-
- return this;
- } // try to find the right one.
-
-
- var index = indexOf(state.pipes, dest);
- if (index === -1) return this;
- state.pipes.splice(index, 1);
- state.pipesCount -= 1;
- if (state.pipesCount === 1) state.pipes = state.pipes[0];
- dest.emit('unpipe', this, unpipeInfo);
- return this;
-}; // set up data events if they are asked for
-// Ensure readable listeners eventually get something
-
-
-Readable.prototype.on = function (ev, fn) {
- var res = Stream.prototype.on.call(this, ev, fn);
- var state = this._readableState;
-
- if (ev === 'data') {
- // update readableListening so that resume() may be a no-op
- // a few lines down. This is needed to support once('readable').
- state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused
-
- if (state.flowing !== false) this.resume();
- } else if (ev === 'readable') {
- if (!state.endEmitted && !state.readableListening) {
- state.readableListening = state.needReadable = true;
- state.flowing = false;
- state.emittedReadable = false;
- debug('on readable', state.length, state.reading);
-
- if (state.length) {
- emitReadable(this);
- } else if (!state.reading) {
- process.nextTick(nReadingNextTick, this);
- }
- }
- }
-
- return res;
-};
-
-Readable.prototype.addListener = Readable.prototype.on;
-
-Readable.prototype.removeListener = function (ev, fn) {
- var res = Stream.prototype.removeListener.call(this, ev, fn);
-
- if (ev === 'readable') {
- // We need to check if there is someone still listening to
- // readable and reset the state. However this needs to happen
- // after readable has been emitted but before I/O (nextTick) to
- // support once('readable', fn) cycles. This means that calling
- // resume within the same tick will have no
- // effect.
- process.nextTick(updateReadableListening, this);
- }
-
- return res;
-};
-
-Readable.prototype.removeAllListeners = function (ev) {
- var res = Stream.prototype.removeAllListeners.apply(this, arguments);
-
- if (ev === 'readable' || ev === undefined) {
- // We need to check if there is someone still listening to
- // readable and reset the state. However this needs to happen
- // after readable has been emitted but before I/O (nextTick) to
- // support once('readable', fn) cycles. This means that calling
- // resume within the same tick will have no
- // effect.
- process.nextTick(updateReadableListening, this);
- }
-
- return res;
-};
-
-function updateReadableListening(self) {
- var state = self._readableState;
- state.readableListening = self.listenerCount('readable') > 0;
-
- if (state.resumeScheduled && !state.paused) {
- // flowing needs to be set to true now, otherwise
- // the upcoming resume will not flow.
- state.flowing = true; // crude way to check if we should resume
- } else if (self.listenerCount('data') > 0) {
- self.resume();
- }
-}
-
-function nReadingNextTick(self) {
- debug('readable nexttick read 0');
- self.read(0);
-} // pause() and resume() are remnants of the legacy readable stream API
-// If the user uses them, then switch into old mode.
-
-
-Readable.prototype.resume = function () {
- var state = this._readableState;
-
- if (!state.flowing) {
- debug('resume'); // we flow only if there is no one listening
- // for readable, but we still have to call
- // resume()
-
- state.flowing = !state.readableListening;
- resume(this, state);
- }
-
- state.paused = false;
- return this;
-};
-
-function resume(stream, state) {
- if (!state.resumeScheduled) {
- state.resumeScheduled = true;
- process.nextTick(resume_, stream, state);
- }
-}
-
-function resume_(stream, state) {
- debug('resume', state.reading);
-
- if (!state.reading) {
- stream.read(0);
- }
-
- state.resumeScheduled = false;
- stream.emit('resume');
- flow(stream);
- if (state.flowing && !state.reading) stream.read(0);
-}
-
-Readable.prototype.pause = function () {
- debug('call pause flowing=%j', this._readableState.flowing);
-
- if (this._readableState.flowing !== false) {
- debug('pause');
- this._readableState.flowing = false;
- this.emit('pause');
- }
-
- this._readableState.paused = true;
- return this;
-};
-
-function flow(stream) {
- var state = stream._readableState;
- debug('flow', state.flowing);
-
- while (state.flowing && stream.read() !== null) {
- ;
- }
-} // wrap an old-style stream as the async data source.
-// This is *not* part of the readable stream interface.
-// It is an ugly unfortunate mess of history.
-
-
-Readable.prototype.wrap = function (stream) {
- var _this = this;
-
- var state = this._readableState;
- var paused = false;
- stream.on('end', function () {
- debug('wrapped end');
-
- if (state.decoder && !state.ended) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length) _this.push(chunk);
- }
-
- _this.push(null);
- });
- stream.on('data', function (chunk) {
- debug('wrapped data');
- if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode
-
- if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
-
- var ret = _this.push(chunk);
-
- if (!ret) {
- paused = true;
- stream.pause();
- }
- }); // proxy all the other methods.
- // important when wrapping filters and duplexes.
-
- for (var i in stream) {
- if (this[i] === undefined && typeof stream[i] === 'function') {
- this[i] = function methodWrap(method) {
- return function methodWrapReturnFunction() {
- return stream[method].apply(stream, arguments);
- };
- }(i);
- }
- } // proxy certain important events.
-
-
- for (var n = 0; n < kProxyEvents.length; n++) {
- stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
- } // when we try to consume some more bytes, simply unpause the
- // underlying stream.
-
-
- this._read = function (n) {
- debug('wrapped _read', n);
-
- if (paused) {
- paused = false;
- stream.resume();
- }
- };
-
- return this;
-};
-
-if (typeof Symbol === 'function') {
- Readable.prototype[Symbol.asyncIterator] = function () {
- if (createReadableStreamAsyncIterator === undefined) {
- createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');
- }
-
- return createReadableStreamAsyncIterator(this);
- };
-}
-
-Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function get() {
- return this._readableState.highWaterMark;
- }
-});
-Object.defineProperty(Readable.prototype, 'readableBuffer', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function get() {
- return this._readableState && this._readableState.buffer;
- }
-});
-Object.defineProperty(Readable.prototype, 'readableFlowing', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function get() {
- return this._readableState.flowing;
- },
- set: function set(state) {
- if (this._readableState) {
- this._readableState.flowing = state;
- }
- }
-}); // exposed for testing purposes only.
-
-Readable._fromList = fromList;
-Object.defineProperty(Readable.prototype, 'readableLength', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function get() {
- return this._readableState.length;
- }
-}); // Pluck off n bytes from an array of buffers.
-// Length is the combined lengths of all the buffers in the list.
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-
-function fromList(n, state) {
- // nothing buffered
- if (state.length === 0) return null;
- var ret;
- if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
- // read it all, truncate the list
- if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);
- state.buffer.clear();
- } else {
- // read part of list
- ret = state.buffer.consume(n, state.decoder);
- }
- return ret;
-}
-
-function endReadable(stream) {
- var state = stream._readableState;
- debug('endReadable', state.endEmitted);
-
- if (!state.endEmitted) {
- state.ended = true;
- process.nextTick(endReadableNT, state, stream);
- }
-}
-
-function endReadableNT(state, stream) {
- debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.
-
- if (!state.endEmitted && state.length === 0) {
- state.endEmitted = true;
- stream.readable = false;
- stream.emit('end');
-
- if (state.autoDestroy) {
- // In case of duplex streams we need a way to detect
- // if the writable side is ready for autoDestroy as well
- var wState = stream._writableState;
-
- if (!wState || wState.autoDestroy && wState.finished) {
- stream.destroy();
- }
- }
- }
-}
-
-if (typeof Symbol === 'function') {
- Readable.from = function (iterable, opts) {
- if (from === undefined) {
- from = require('./internal/streams/from');
- }
-
- return from(Readable, iterable, opts);
- };
-}
-
-function indexOf(xs, x) {
- for (var i = 0, l = xs.length; i < l; i++) {
- if (xs[i] === x) return i;
- }
-
- return -1;
-} \ No newline at end of file
diff --git a/assets/node_modules/readable-stream/lib/_stream_transform.js b/assets/node_modules/readable-stream/lib/_stream_transform.js
deleted file mode 100644
index 41a738c..0000000
--- a/assets/node_modules/readable-stream/lib/_stream_transform.js
+++ /dev/null
@@ -1,201 +0,0 @@
-// Copyright Joyent, Inc. and other Node 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.
-// a transform stream is a readable/writable stream where you do
-// something with the data. Sometimes it's called a "filter",
-// but that's not a great name for it, since that implies a thing where
-// some bits pass through, and others are simply ignored. (That would
-// be a valid example of a transform, of course.)
-//
-// While the output is causally related to the input, it's not a
-// necessarily symmetric or synchronous transformation. For example,
-// a zlib stream might take multiple plain-text writes(), and then
-// emit a single compressed chunk some time in the future.
-//
-// Here's how this works:
-//
-// The Transform stream has all the aspects of the readable and writable
-// stream classes. When you write(chunk), that calls _write(chunk,cb)
-// internally, and returns false if there's a lot of pending writes
-// buffered up. When you call read(), that calls _read(n) until
-// there's enough pending readable data buffered up.
-//
-// In a transform stream, the written data is placed in a buffer. When
-// _read(n) is called, it transforms the queued up data, calling the
-// buffered _write cb's as it consumes chunks. If consuming a single
-// written chunk would result in multiple output chunks, then the first
-// outputted bit calls the readcb, and subsequent chunks just go into
-// the read buffer, and will cause it to emit 'readable' if necessary.
-//
-// This way, back-pressure is actually determined by the reading side,
-// since _read has to be called to start processing a new chunk. However,
-// a pathological inflate type of transform can cause excessive buffering
-// here. For example, imagine a stream where every byte of input is
-// interpreted as an integer from 0-255, and then results in that many
-// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
-// 1kb of data being output. In this case, you could write a very small
-// amount of input, and end up with a very large amount of output. In
-// such a pathological inflating mechanism, there'd be no way to tell
-// the system to stop doing the transform. A single 4MB write could
-// cause the system to run out of memory.
-//
-// However, even in such a pathological case, only a single written chunk
-// would be consumed, and then the rest would wait (un-transformed) until
-// the results of the previous transformed chunk were consumed.
-'use strict';
-
-module.exports = Transform;
-
-var _require$codes = require('../errors').codes,
- ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,
- ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,
- ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,
- ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;
-
-var Duplex = require('./_stream_duplex');
-
-require('inherits')(Transform, Duplex);
-
-function afterTransform(er, data) {
- var ts = this._transformState;
- ts.transforming = false;
- var cb = ts.writecb;
-
- if (cb === null) {
- return this.emit('error', new ERR_MULTIPLE_CALLBACK());
- }
-
- ts.writechunk = null;
- ts.writecb = null;
- if (data != null) // single equals check for both `null` and `undefined`
- this.push(data);
- cb(er);
- var rs = this._readableState;
- rs.reading = false;
-
- if (rs.needReadable || rs.length < rs.highWaterMark) {
- this._read(rs.highWaterMark);
- }
-}
-
-function Transform(options) {
- if (!(this instanceof Transform)) return new Transform(options);
- Duplex.call(this, options);
- this._transformState = {
- afterTransform: afterTransform.bind(this),
- needTransform: false,
- transforming: false,
- writecb: null,
- writechunk: null,
- writeencoding: null
- }; // start out asking for a readable event once data is transformed.
-
- this._readableState.needReadable = true; // we have implemented the _read method, and done the other things
- // that Readable wants before the first _read call, so unset the
- // sync guard flag.
-
- this._readableState.sync = false;
-
- if (options) {
- if (typeof options.transform === 'function') this._transform = options.transform;
- if (typeof options.flush === 'function') this._flush = options.flush;
- } // When the writable side finishes, then flush out anything remaining.
-
-
- this.on('prefinish', prefinish);
-}
-
-function prefinish() {
- var _this = this;
-
- if (typeof this._flush === 'function' && !this._readableState.destroyed) {
- this._flush(function (er, data) {
- done(_this, er, data);
- });
- } else {
- done(this, null, null);
- }
-}
-
-Transform.prototype.push = function (chunk, encoding) {
- this._transformState.needTransform = false;
- return Duplex.prototype.push.call(this, chunk, encoding);
-}; // This is the part where you do stuff!
-// override this function in implementation classes.
-// 'chunk' is an input chunk.
-//
-// Call `push(newChunk)` to pass along transformed output
-// to the readable side. You may call 'push' zero or more times.
-//
-// Call `cb(err)` when you are done with this chunk. If you pass
-// an error, then that'll put the hurt on the whole operation. If you
-// never call cb(), then you'll never get another chunk.
-
-
-Transform.prototype._transform = function (chunk, encoding, cb) {
- cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));
-};
-
-Transform.prototype._write = function (chunk, encoding, cb) {
- var ts = this._transformState;
- ts.writecb = cb;
- ts.writechunk = chunk;
- ts.writeencoding = encoding;
-
- if (!ts.transforming) {
- var rs = this._readableState;
- if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
- }
-}; // Doesn't matter what the args are here.
-// _transform does all the work.
-// That we got here means that the readable side wants more data.
-
-
-Transform.prototype._read = function (n) {
- var ts = this._transformState;
-
- if (ts.writechunk !== null && !ts.transforming) {
- ts.transforming = true;
-
- this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
- } else {
- // mark that we need a transform, so that any data that comes in
- // will get processed, now that we've asked for it.
- ts.needTransform = true;
- }
-};
-
-Transform.prototype._destroy = function (err, cb) {
- Duplex.prototype._destroy.call(this, err, function (err2) {
- cb(err2);
- });
-};
-
-function done(stream, er, data) {
- if (er) return stream.emit('error', er);
- if (data != null) // single equals check for both `null` and `undefined`
- stream.push(data); // TODO(BridgeAR): Write a test for these two error cases
- // if there's nothing in the write buffer, then that means
- // that nothing more will ever be provided
-
- if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();
- if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();
- return stream.push(null);
-} \ No newline at end of file
diff --git a/assets/node_modules/readable-stream/lib/_stream_writable.js b/assets/node_modules/readable-stream/lib/_stream_writable.js
deleted file mode 100644
index a2634d7..0000000
--- a/assets/node_modules/readable-stream/lib/_stream_writable.js
+++ /dev/null
@@ -1,697 +0,0 @@
-// Copyright Joyent, Inc. and other Node 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.
-// A bit simpler than readable streams.
-// Implement an async ._write(chunk, encoding, cb), and it'll handle all
-// the drain event emission and buffering.
-'use strict';
-
-module.exports = Writable;
-/* <replacement> */
-
-function WriteReq(chunk, encoding, cb) {
- this.chunk = chunk;
- this.encoding = encoding;
- this.callback = cb;
- this.next = null;
-} // It seems a linked list but it is not
-// there will be only 2 of these for each stream
-
-
-function CorkedRequest(state) {
- var _this = this;
-
- this.next = null;
- this.entry = null;
-
- this.finish = function () {
- onCorkedFinish(_this, state);
- };
-}
-/* </replacement> */
-
-/*<replacement>*/
-
-
-var Duplex;
-/*</replacement>*/
-
-Writable.WritableState = WritableState;
-/*<replacement>*/
-
-var internalUtil = {
- deprecate: require('util-deprecate')
-};
-/*</replacement>*/
-
-/*<replacement>*/
-
-var Stream = require('./internal/streams/stream');
-/*</replacement>*/
-
-
-var Buffer = require('buffer').Buffer;
-
-var OurUint8Array = global.Uint8Array || function () {};
-
-function _uint8ArrayToBuffer(chunk) {
- return Buffer.from(chunk);
-}
-
-function _isUint8Array(obj) {
- return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
-}
-
-var destroyImpl = require('./internal/streams/destroy');
-
-var _require = require('./internal/streams/state'),
- getHighWaterMark = _require.getHighWaterMark;
-
-var _require$codes = require('../errors').codes,
- ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,
- ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,
- ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,
- ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,
- ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,
- ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,
- ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,
- ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;
-
-var errorOrDestroy = destroyImpl.errorOrDestroy;
-
-require('inherits')(Writable, Stream);
-
-function nop() {}
-
-function WritableState(options, stream, isDuplex) {
- Duplex = Duplex || require('./_stream_duplex');
- options = options || {}; // Duplex streams are both readable and writable, but share
- // the same options object.
- // However, some cases require setting options to different
- // values for the readable and the writable sides of the duplex stream,
- // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.
-
- if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream
- // contains buffers or objects.
-
- this.objectMode = !!options.objectMode;
- if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false
- // Note: 0 is a valid value, means that we always return false if
- // the entire buffer is not flushed immediately on write()
-
- this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called
-
- this.finalCalled = false; // drain event flag.
-
- this.needDrain = false; // at the start of calling end()
-
- this.ending = false; // when end() has been called, and returned
-
- this.ended = false; // when 'finish' is emitted
-
- this.finished = false; // has it been destroyed
-
- this.destroyed = false; // should we decode strings into buffers before passing to _write?
- // this is here so that some node-core streams can optimize string
- // handling at a lower level.
-
- var noDecode = options.decodeStrings === false;
- this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
-
- this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement
- // of how much we're waiting to get pushed to some underlying
- // socket or file.
-
- this.length = 0; // a flag to see when we're in the middle of a write.
-
- this.writing = false; // when true all writes will be buffered until .uncork() call
-
- this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,
- // or on a later tick. We set this to true at first, because any
- // actions that shouldn't happen until "later" should generally also
- // not happen before the first write call.
-
- this.sync = true; // a flag to know if we're processing previously buffered items, which
- // may call the _write() callback in the same tick, so that we don't
- // end up in an overlapped onwrite situation.
-
- this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)
-
- this.onwrite = function (er) {
- onwrite(stream, er);
- }; // the callback that the user supplies to write(chunk,encoding,cb)
-
-
- this.writecb = null; // the amount that is being written when _write is called.
-
- this.writelen = 0;
- this.bufferedRequest = null;
- this.lastBufferedRequest = null; // number of pending user-supplied write callbacks
- // this must be 0 before 'finish' can be emitted
-
- this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs
- // This is relevant for synchronous Transform streams
-
- this.prefinished = false; // True if the error was already emitted and should not be thrown again
-
- this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.
-
- this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')
-
- this.autoDestroy = !!options.autoDestroy; // count buffered requests
-
- this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always
- // one allocated and free to use, and we maintain at most two
-
- this.corkedRequestsFree = new CorkedRequest(this);
-}
-
-WritableState.prototype.getBuffer = function getBuffer() {
- var current = this.bufferedRequest;
- var out = [];
-
- while (current) {
- out.push(current);
- current = current.next;
- }
-
- return out;
-};
-
-(function () {
- try {
- Object.defineProperty(WritableState.prototype, 'buffer', {
- get: internalUtil.deprecate(function writableStateBufferGetter() {
- return this.getBuffer();
- }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
- });
- } catch (_) {}
-})(); // Test _writableState for inheritance to account for Duplex streams,
-// whose prototype chain only points to Readable.
-
-
-var realHasInstance;
-
-if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
- realHasInstance = Function.prototype[Symbol.hasInstance];
- Object.defineProperty(Writable, Symbol.hasInstance, {
- value: function value(object) {
- if (realHasInstance.call(this, object)) return true;
- if (this !== Writable) return false;
- return object && object._writableState instanceof WritableState;
- }
- });
-} else {
- realHasInstance = function realHasInstance(object) {
- return object instanceof this;
- };
-}
-
-function Writable(options) {
- Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.
- // `realHasInstance` is necessary because using plain `instanceof`
- // would return false, as no `_writableState` property is attached.
- // Trying to use the custom `instanceof` for Writable here will also break the
- // Node.js LazyTransform implementation, which has a non-trivial getter for
- // `_writableState` that would lead to infinite recursion.
- // Checking for a Stream.Duplex instance is faster here instead of inside
- // the WritableState constructor, at least with V8 6.5
-
- var isDuplex = this instanceof Duplex;
- if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);
- this._writableState = new WritableState(options, this, isDuplex); // legacy.
-
- this.writable = true;
-
- if (options) {
- if (typeof options.write === 'function') this._write = options.write;
- if (typeof options.writev === 'function') this._writev = options.writev;
- if (typeof options.destroy === 'function') this._destroy = options.destroy;
- if (typeof options.final === 'function') this._final = options.final;
- }
-
- Stream.call(this);
-} // Otherwise people can pipe Writable streams, which is just wrong.
-
-
-Writable.prototype.pipe = function () {
- errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());
-};
-
-function writeAfterEnd(stream, cb) {
- var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb
-
- errorOrDestroy(stream, er);
- process.nextTick(cb, er);
-} // Checks that a user-supplied chunk is valid, especially for the particular
-// mode the stream is in. Currently this means that `null` is never accepted
-// and undefined/non-string values are only allowed in object mode.
-
-
-function validChunk(stream, state, chunk, cb) {
- var er;
-
- if (chunk === null) {
- er = new ERR_STREAM_NULL_VALUES();
- } else if (typeof chunk !== 'string' && !state.objectMode) {
- er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);
- }
-
- if (er) {
- errorOrDestroy(stream, er);
- process.nextTick(cb, er);
- return false;
- }
-
- return true;
-}
-
-Writable.prototype.write = function (chunk, encoding, cb) {
- var state = this._writableState;
- var ret = false;
-
- var isBuf = !state.objectMode && _isUint8Array(chunk);
-
- if (isBuf && !Buffer.isBuffer(chunk)) {
- chunk = _uint8ArrayToBuffer(chunk);
- }
-
- if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
- if (typeof cb !== 'function') cb = nop;
- if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
- state.pendingcb++;
- ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
- }
- return ret;
-};
-
-Writable.prototype.cork = function () {
- this._writableState.corked++;
-};
-
-Writable.prototype.uncork = function () {
- var state = this._writableState;
-
- if (state.corked) {
- state.corked--;
- if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
- }
-};
-
-Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
- // node::ParseEncoding() requires lower case.
- if (typeof encoding === 'string') encoding = encoding.toLowerCase();
- if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);
- this._writableState.defaultEncoding = encoding;
- return this;
-};
-
-Object.defineProperty(Writable.prototype, 'writableBuffer', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function get() {
- return this._writableState && this._writableState.getBuffer();
- }
-});
-
-function decodeChunk(state, chunk, encoding) {
- if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
- chunk = Buffer.from(chunk, encoding);
- }
-
- return chunk;
-}
-
-Object.defineProperty(Writable.prototype, 'writableHighWaterMark', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function get() {
- return this._writableState.highWaterMark;
- }
-}); // if we're already writing something, then just put this
-// in the queue, and wait our turn. Otherwise, call _write
-// If we return false, then we need a drain event, so set that flag.
-
-function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
- if (!isBuf) {
- var newChunk = decodeChunk(state, chunk, encoding);
-
- if (chunk !== newChunk) {
- isBuf = true;
- encoding = 'buffer';
- chunk = newChunk;
- }
- }
-
- var len = state.objectMode ? 1 : chunk.length;
- state.length += len;
- var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.
-
- if (!ret) state.needDrain = true;
-
- if (state.writing || state.corked) {
- var last = state.lastBufferedRequest;
- state.lastBufferedRequest = {
- chunk: chunk,
- encoding: encoding,
- isBuf: isBuf,
- callback: cb,
- next: null
- };
-
- if (last) {
- last.next = state.lastBufferedRequest;
- } else {
- state.bufferedRequest = state.lastBufferedRequest;
- }
-
- state.bufferedRequestCount += 1;
- } else {
- doWrite(stream, state, false, len, chunk, encoding, cb);
- }
-
- return ret;
-}
-
-function doWrite(stream, state, writev, len, chunk, encoding, cb) {
- state.writelen = len;
- state.writecb = cb;
- state.writing = true;
- state.sync = true;
- if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
- state.sync = false;
-}
-
-function onwriteError(stream, state, sync, er, cb) {
- --state.pendingcb;
-
- if (sync) {
- // defer the callback if we are being called synchronously
- // to avoid piling up things on the stack
- process.nextTick(cb, er); // this can emit finish, and it will always happen
- // after error
-
- process.nextTick(finishMaybe, stream, state);
- stream._writableState.errorEmitted = true;
- errorOrDestroy(stream, er);
- } else {
- // the caller expect this to happen before if
- // it is async
- cb(er);
- stream._writableState.errorEmitted = true;
- errorOrDestroy(stream, er); // this can emit finish, but finish must
- // always follow error
-
- finishMaybe(stream, state);
- }
-}
-
-function onwriteStateUpdate(state) {
- state.writing = false;
- state.writecb = null;
- state.length -= state.writelen;
- state.writelen = 0;
-}
-
-function onwrite(stream, er) {
- var state = stream._writableState;
- var sync = state.sync;
- var cb = state.writecb;
- if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();
- onwriteStateUpdate(state);
- if (er) onwriteError(stream, state, sync, er, cb);else {
- // Check if we're actually ready to finish, but don't emit yet
- var finished = needFinish(state) || stream.destroyed;
-
- if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
- clearBuffer(stream, state);
- }
-
- if (sync) {
- process.nextTick(afterWrite, stream, state, finished, cb);
- } else {
- afterWrite(stream, state, finished, cb);
- }
- }
-}
-
-function afterWrite(stream, state, finished, cb) {
- if (!finished) onwriteDrain(stream, state);
- state.pendingcb--;
- cb();
- finishMaybe(stream, state);
-} // Must force callback to be called on nextTick, so that we don't
-// emit 'drain' before the write() consumer gets the 'false' return
-// value, and has a chance to attach a 'drain' listener.
-
-
-function onwriteDrain(stream, state) {
- if (state.length === 0 && state.needDrain) {
- state.needDrain = false;
- stream.emit('drain');
- }
-} // if there's something in the buffer waiting, then process it
-
-
-function clearBuffer(stream, state) {
- state.bufferProcessing = true;
- var entry = state.bufferedRequest;
-
- if (stream._writev && entry && entry.next) {
- // Fast case, write everything using _writev()
- var l = state.bufferedRequestCount;
- var buffer = new Array(l);
- var holder = state.corkedRequestsFree;
- holder.entry = entry;
- var count = 0;
- var allBuffers = true;
-
- while (entry) {
- buffer[count] = entry;
- if (!entry.isBuf) allBuffers = false;
- entry = entry.next;
- count += 1;
- }
-
- buffer.allBuffers = allBuffers;
- doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time
- // as the hot path ends with doWrite
-
- state.pendingcb++;
- state.lastBufferedRequest = null;
-
- if (holder.next) {
- state.corkedRequestsFree = holder.next;
- holder.next = null;
- } else {
- state.corkedRequestsFree = new CorkedRequest(state);
- }
-
- state.bufferedRequestCount = 0;
- } else {
- // Slow case, write chunks one-by-one
- while (entry) {
- var chunk = entry.chunk;
- var encoding = entry.encoding;
- var cb = entry.callback;
- var len = state.objectMode ? 1 : chunk.length;
- doWrite(stream, state, false, len, chunk, encoding, cb);
- entry = entry.next;
- state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then
- // it means that we need to wait until it does.
- // also, that means that the chunk and cb are currently
- // being processed, so move the buffer counter past them.
-
- if (state.writing) {
- break;
- }
- }
-
- if (entry === null) state.lastBufferedRequest = null;
- }
-
- state.bufferedRequest = entry;
- state.bufferProcessing = false;
-}
-
-Writable.prototype._write = function (chunk, encoding, cb) {
- cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));
-};
-
-Writable.prototype._writev = null;
-
-Writable.prototype.end = function (chunk, encoding, cb) {
- var state = this._writableState;
-
- if (typeof chunk === 'function') {
- cb = chunk;
- chunk = null;
- encoding = null;
- } else if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks
-
- if (state.corked) {
- state.corked = 1;
- this.uncork();
- } // ignore unnecessary end() calls.
-
-
- if (!state.ending) endWritable(this, state, cb);
- return this;
-};
-
-Object.defineProperty(Writable.prototype, 'writableLength', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function get() {
- return this._writableState.length;
- }
-});
-
-function needFinish(state) {
- return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
-}
-
-function callFinal(stream, state) {
- stream._final(function (err) {
- state.pendingcb--;
-
- if (err) {
- errorOrDestroy(stream, err);
- }
-
- state.prefinished = true;
- stream.emit('prefinish');
- finishMaybe(stream, state);
- });
-}
-
-function prefinish(stream, state) {
- if (!state.prefinished && !state.finalCalled) {
- if (typeof stream._final === 'function' && !state.destroyed) {
- state.pendingcb++;
- state.finalCalled = true;
- process.nextTick(callFinal, stream, state);
- } else {
- state.prefinished = true;
- stream.emit('prefinish');
- }
- }
-}
-
-function finishMaybe(stream, state) {
- var need = needFinish(state);
-
- if (need) {
- prefinish(stream, state);
-
- if (state.pendingcb === 0) {
- state.finished = true;
- stream.emit('finish');
-
- if (state.autoDestroy) {
- // In case of duplex streams we need a way to detect
- // if the readable side is ready for autoDestroy as well
- var rState = stream._readableState;
-
- if (!rState || rState.autoDestroy && rState.endEmitted) {
- stream.destroy();
- }
- }
- }
- }
-
- return need;
-}
-
-function endWritable(stream, state, cb) {
- state.ending = true;
- finishMaybe(stream, state);
-
- if (cb) {
- if (state.finished) process.nextTick(cb);else stream.once('finish', cb);
- }
-
- state.ended = true;
- stream.writable = false;
-}
-
-function onCorkedFinish(corkReq, state, err) {
- var entry = corkReq.entry;
- corkReq.entry = null;
-
- while (entry) {
- var cb = entry.callback;
- state.pendingcb--;
- cb(err);
- entry = entry.next;
- } // reuse the free corkReq.
-
-
- state.corkedRequestsFree.next = corkReq;
-}
-
-Object.defineProperty(Writable.prototype, 'destroyed', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function get() {
- if (this._writableState === undefined) {
- return false;
- }
-
- return this._writableState.destroyed;
- },
- set: function set(value) {
- // we ignore the value if the stream
- // has not been initialized yet
- if (!this._writableState) {
- return;
- } // backward compatibility, the user is explicitly
- // managing destroyed
-
-
- this._writableState.destroyed = value;
- }
-});
-Writable.prototype.destroy = destroyImpl.destroy;
-Writable.prototype._undestroy = destroyImpl.undestroy;
-
-Writable.prototype._destroy = function (err, cb) {
- cb(err);
-}; \ No newline at end of file
diff --git a/assets/node_modules/readable-stream/lib/internal/streams/async_iterator.js b/assets/node_modules/readable-stream/lib/internal/streams/async_iterator.js
deleted file mode 100644
index 9fb615a..0000000
--- a/assets/node_modules/readable-stream/lib/internal/streams/async_iterator.js
+++ /dev/null
@@ -1,207 +0,0 @@
-'use strict';
-
-var _Object$setPrototypeO;
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var finished = require('./end-of-stream');
-
-var kLastResolve = Symbol('lastResolve');
-var kLastReject = Symbol('lastReject');
-var kError = Symbol('error');
-var kEnded = Symbol('ended');
-var kLastPromise = Symbol('lastPromise');
-var kHandlePromise = Symbol('handlePromise');
-var kStream = Symbol('stream');
-
-function createIterResult(value, done) {
- return {
- value: value,
- done: done
- };
-}
-
-function readAndResolve(iter) {
- var resolve = iter[kLastResolve];
-
- if (resolve !== null) {
- var data = iter[kStream].read(); // we defer if data is null
- // we can be expecting either 'end' or
- // 'error'
-
- if (data !== null) {
- iter[kLastPromise] = null;
- iter[kLastResolve] = null;
- iter[kLastReject] = null;
- resolve(createIterResult(data, false));
- }
- }
-}
-
-function onReadable(iter) {
- // we wait for the next tick, because it might
- // emit an error with process.nextTick
- process.nextTick(readAndResolve, iter);
-}
-
-function wrapForNext(lastPromise, iter) {
- return function (resolve, reject) {
- lastPromise.then(function () {
- if (iter[kEnded]) {
- resolve(createIterResult(undefined, true));
- return;
- }
-
- iter[kHandlePromise](resolve, reject);
- }, reject);
- };
-}
-
-var AsyncIteratorPrototype = Object.getPrototypeOf(function () {});
-var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {
- get stream() {
- return this[kStream];
- },
-
- next: function next() {
- var _this = this;
-
- // if we have detected an error in the meanwhile
- // reject straight away
- var error = this[kError];
-
- if (error !== null) {
- return Promise.reject(error);
- }
-
- if (this[kEnded]) {
- return Promise.resolve(createIterResult(undefined, true));
- }
-
- if (this[kStream].destroyed) {
- // We need to defer via nextTick because if .destroy(err) is
- // called, the error will be emitted via nextTick, and
- // we cannot guarantee that there is no error lingering around
- // waiting to be emitted.
- return new Promise(function (resolve, reject) {
- process.nextTick(function () {
- if (_this[kError]) {
- reject(_this[kError]);
- } else {
- resolve(createIterResult(undefined, true));
- }
- });
- });
- } // if we have multiple next() calls
- // we will wait for the previous Promise to finish
- // this logic is optimized to support for await loops,
- // where next() is only called once at a time
-
-
- var lastPromise = this[kLastPromise];
- var promise;
-
- if (lastPromise) {
- promise = new Promise(wrapForNext(lastPromise, this));
- } else {
- // fast path needed to support multiple this.push()
- // without triggering the next() queue
- var data = this[kStream].read();
-
- if (data !== null) {
- return Promise.resolve(createIterResult(data, false));
- }
-
- promise = new Promise(this[kHandlePromise]);
- }
-
- this[kLastPromise] = promise;
- return promise;
- }
-}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {
- return this;
-}), _defineProperty(_Object$setPrototypeO, "return", function _return() {
- var _this2 = this;
-
- // destroy(err, cb) is a private API
- // we can guarantee we have that here, because we control the
- // Readable class this is attached to
- return new Promise(function (resolve, reject) {
- _this2[kStream].destroy(null, function (err) {
- if (err) {
- reject(err);
- return;
- }
-
- resolve(createIterResult(undefined, true));
- });
- });
-}), _Object$setPrototypeO), AsyncIteratorPrototype);
-
-var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {
- var _Object$create;
-
- var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {
- value: stream,
- writable: true
- }), _defineProperty(_Object$create, kLastResolve, {
- value: null,
- writable: true
- }), _defineProperty(_Object$create, kLastReject, {
- value: null,
- writable: true
- }), _defineProperty(_Object$create, kError, {
- value: null,
- writable: true
- }), _defineProperty(_Object$create, kEnded, {
- value: stream._readableState.endEmitted,
- writable: true
- }), _defineProperty(_Object$create, kHandlePromise, {
- value: function value(resolve, reject) {
- var data = iterator[kStream].read();
-
- if (data) {
- iterator[kLastPromise] = null;
- iterator[kLastResolve] = null;
- iterator[kLastReject] = null;
- resolve(createIterResult(data, false));
- } else {
- iterator[kLastResolve] = resolve;
- iterator[kLastReject] = reject;
- }
- },
- writable: true
- }), _Object$create));
- iterator[kLastPromise] = null;
- finished(stream, function (err) {
- if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {
- var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise
- // returned by next() and store the error
-
- if (reject !== null) {
- iterator[kLastPromise] = null;
- iterator[kLastResolve] = null;
- iterator[kLastReject] = null;
- reject(err);
- }
-
- iterator[kError] = err;
- return;
- }
-
- var resolve = iterator[kLastResolve];
-
- if (resolve !== null) {
- iterator[kLastPromise] = null;
- iterator[kLastResolve] = null;
- iterator[kLastReject] = null;
- resolve(createIterResult(undefined, true));
- }
-
- iterator[kEnded] = true;
- });
- stream.on('readable', onReadable.bind(null, iterator));
- return iterator;
-};
-
-module.exports = createReadableStreamAsyncIterator; \ No newline at end of file
diff --git a/assets/node_modules/readable-stream/lib/internal/streams/buffer_list.js b/assets/node_modules/readable-stream/lib/internal/streams/buffer_list.js
deleted file mode 100644
index 98fe97f..0000000
--- a/assets/node_modules/readable-stream/lib/internal/streams/buffer_list.js
+++ /dev/null
@@ -1,191 +0,0 @@
-'use strict';
-
-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 _objectSpread(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; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var _require = require('buffer'),
- Buffer = _require.Buffer;
-
-var _require2 = require('util'),
- inspect = _require2.inspect;
-
-var custom = inspect && inspect.custom || 'inspect';
-
-function copyBuffer(src, target, offset) {
- Buffer.prototype.copy.call(src, target, offset);
-}
-
-module.exports =
-/*#__PURE__*/
-function () {
- function BufferList() {
- this.head = null;
- this.tail = null;
- this.length = 0;
- }
-
- var _proto = BufferList.prototype;
-
- _proto.push = function push(v) {
- var entry = {
- data: v,
- next: null
- };
- if (this.length > 0) this.tail.next = entry;else this.head = entry;
- this.tail = entry;
- ++this.length;
- };
-
- _proto.unshift = function unshift(v) {
- var entry = {
- data: v,
- next: this.head
- };
- if (this.length === 0) this.tail = entry;
- this.head = entry;
- ++this.length;
- };
-
- _proto.shift = function shift() {
- if (this.length === 0) return;
- var ret = this.head.data;
- if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
- --this.length;
- return ret;
- };
-
- _proto.clear = function clear() {
- this.head = this.tail = null;
- this.length = 0;
- };
-
- _proto.join = function join(s) {
- if (this.length === 0) return '';
- var p = this.head;
- var ret = '' + p.data;
-
- while (p = p.next) {
- ret += s + p.data;
- }
-
- return ret;
- };
-
- _proto.concat = function concat(n) {
- if (this.length === 0) return Buffer.alloc(0);
- var ret = Buffer.allocUnsafe(n >>> 0);
- var p = this.head;
- var i = 0;
-
- while (p) {
- copyBuffer(p.data, ret, i);
- i += p.data.length;
- p = p.next;
- }
-
- return ret;
- } // Consumes a specified amount of bytes or characters from the buffered data.
- ;
-
- _proto.consume = function consume(n, hasStrings) {
- var ret;
-
- if (n < this.head.data.length) {
- // `slice` is the same for buffers and strings.
- ret = this.head.data.slice(0, n);
- this.head.data = this.head.data.slice(n);
- } else if (n === this.head.data.length) {
- // First chunk is a perfect match.
- ret = this.shift();
- } else {
- // Result spans more than one buffer.
- ret = hasStrings ? this._getString(n) : this._getBuffer(n);
- }
-
- return ret;
- };
-
- _proto.first = function first() {
- return this.head.data;
- } // Consumes a specified amount of characters from the buffered data.
- ;
-
- _proto._getString = function _getString(n) {
- var p = this.head;
- var c = 1;
- var ret = p.data;
- n -= ret.length;
-
- while (p = p.next) {
- var str = p.data;
- var nb = n > str.length ? str.length : n;
- if (nb === str.length) ret += str;else ret += str.slice(0, n);
- n -= nb;
-
- if (n === 0) {
- if (nb === str.length) {
- ++c;
- if (p.next) this.head = p.next;else this.head = this.tail = null;
- } else {
- this.head = p;
- p.data = str.slice(nb);
- }
-
- break;
- }
-
- ++c;
- }
-
- this.length -= c;
- return ret;
- } // Consumes a specified amount of bytes from the buffered data.
- ;
-
- _proto._getBuffer = function _getBuffer(n) {
- var ret = Buffer.allocUnsafe(n);
- var p = this.head;
- var c = 1;
- p.data.copy(ret);
- n -= p.data.length;
-
- while (p = p.next) {
- var buf = p.data;
- var nb = n > buf.length ? buf.length : n;
- buf.copy(ret, ret.length - n, 0, nb);
- n -= nb;
-
- if (n === 0) {
- if (nb === buf.length) {
- ++c;
- if (p.next) this.head = p.next;else this.head = this.tail = null;
- } else {
- this.head = p;
- p.data = buf.slice(nb);
- }
-
- break;
- }
-
- ++c;
- }
-
- this.length -= c;
- return ret;
- } // Make sure the linked list only shows the minimal necessary information.
- ;
-
- _proto[custom] = function (_, options) {
- return inspect(this, _objectSpread({}, options, {
- // Only inspect one level.
- depth: 0,
- // It should not recurse.
- customInspect: false
- }));
- };
-
- return BufferList;
-}(); \ No newline at end of file
diff --git a/assets/node_modules/readable-stream/lib/internal/streams/destroy.js b/assets/node_modules/readable-stream/lib/internal/streams/destroy.js
deleted file mode 100644
index 3268a16..0000000
--- a/assets/node_modules/readable-stream/lib/internal/streams/destroy.js
+++ /dev/null
@@ -1,105 +0,0 @@
-'use strict'; // undocumented cb() API, needed for core, not for public API
-
-function destroy(err, cb) {
- var _this = this;
-
- var readableDestroyed = this._readableState && this._readableState.destroyed;
- var writableDestroyed = this._writableState && this._writableState.destroyed;
-
- if (readableDestroyed || writableDestroyed) {
- if (cb) {
- cb(err);
- } else if (err) {
- if (!this._writableState) {
- process.nextTick(emitErrorNT, this, err);
- } else if (!this._writableState.errorEmitted) {
- this._writableState.errorEmitted = true;
- process.nextTick(emitErrorNT, this, err);
- }
- }
-
- return this;
- } // we set destroyed to true before firing error callbacks in order
- // to make it re-entrance safe in case destroy() is called within callbacks
-
-
- if (this._readableState) {
- this._readableState.destroyed = true;
- } // if this is a duplex stream mark the writable part as destroyed as well
-
-
- if (this._writableState) {
- this._writableState.destroyed = true;
- }
-
- this._destroy(err || null, function (err) {
- if (!cb && err) {
- if (!_this._writableState) {
- process.nextTick(emitErrorAndCloseNT, _this, err);
- } else if (!_this._writableState.errorEmitted) {
- _this._writableState.errorEmitted = true;
- process.nextTick(emitErrorAndCloseNT, _this, err);
- } else {
- process.nextTick(emitCloseNT, _this);
- }
- } else if (cb) {
- process.nextTick(emitCloseNT, _this);
- cb(err);
- } else {
- process.nextTick(emitCloseNT, _this);
- }
- });
-
- return this;
-}
-
-function emitErrorAndCloseNT(self, err) {
- emitErrorNT(self, err);
- emitCloseNT(self);
-}
-
-function emitCloseNT(self) {
- if (self._writableState && !self._writableState.emitClose) return;
- if (self._readableState && !self._readableState.emitClose) return;
- self.emit('close');
-}
-
-function undestroy() {
- if (this._readableState) {
- this._readableState.destroyed = false;
- this._readableState.reading = false;
- this._readableState.ended = false;
- this._readableState.endEmitted = false;
- }
-
- if (this._writableState) {
- this._writableState.destroyed = false;
- this._writableState.ended = false;
- this._writableState.ending = false;
- this._writableState.finalCalled = false;
- this._writableState.prefinished = false;
- this._writableState.finished = false;
- this._writableState.errorEmitted = false;
- }
-}
-
-function emitErrorNT(self, err) {
- self.emit('error', err);
-}
-
-function errorOrDestroy(stream, err) {
- // We have tests that rely on errors being emitted
- // in the same tick, so changing this is semver major.
- // For now when you opt-in to autoDestroy we allow
- // the error to be emitted nextTick. In a future
- // semver major update we should change the default to this.
- var rState = stream._readableState;
- var wState = stream._writableState;
- if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);
-}
-
-module.exports = {
- destroy: destroy,
- undestroy: undestroy,
- errorOrDestroy: errorOrDestroy
-}; \ No newline at end of file
diff --git a/assets/node_modules/readable-stream/lib/internal/streams/end-of-stream.js b/assets/node_modules/readable-stream/lib/internal/streams/end-of-stream.js
deleted file mode 100644
index 831f286..0000000
--- a/assets/node_modules/readable-stream/lib/internal/streams/end-of-stream.js
+++ /dev/null
@@ -1,104 +0,0 @@
-// Ported from https://github.com/mafintosh/end-of-stream with
-// permission from the author, Mathias Buus (@mafintosh).
-'use strict';
-
-var ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;
-
-function once(callback) {
- var called = false;
- return function () {
- if (called) return;
- called = true;
-
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
-
- callback.apply(this, args);
- };
-}
-
-function noop() {}
-
-function isRequest(stream) {
- return stream.setHeader && typeof stream.abort === 'function';
-}
-
-function eos(stream, opts, callback) {
- if (typeof opts === 'function') return eos(stream, null, opts);
- if (!opts) opts = {};
- callback = once(callback || noop);
- var readable = opts.readable || opts.readable !== false && stream.readable;
- var writable = opts.writable || opts.writable !== false && stream.writable;
-
- var onlegacyfinish = function onlegacyfinish() {
- if (!stream.writable) onfinish();
- };
-
- var writableEnded = stream._writableState && stream._writableState.finished;
-
- var onfinish = function onfinish() {
- writable = false;
- writableEnded = true;
- if (!readable) callback.call(stream);
- };
-
- var readableEnded = stream._readableState && stream._readableState.endEmitted;
-
- var onend = function onend() {
- readable = false;
- readableEnded = true;
- if (!writable) callback.call(stream);
- };
-
- var onerror = function onerror(err) {
- callback.call(stream, err);
- };
-
- var onclose = function onclose() {
- var err;
-
- if (readable && !readableEnded) {
- if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();
- return callback.call(stream, err);
- }
-
- if (writable && !writableEnded) {
- if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();
- return callback.call(stream, err);
- }
- };
-
- var onrequest = function onrequest() {
- stream.req.on('finish', onfinish);
- };
-
- if (isRequest(stream)) {
- stream.on('complete', onfinish);
- stream.on('abort', onclose);
- if (stream.req) onrequest();else stream.on('request', onrequest);
- } else if (writable && !stream._writableState) {
- // legacy streams
- stream.on('end', onlegacyfinish);
- stream.on('close', onlegacyfinish);
- }
-
- stream.on('end', onend);
- stream.on('finish', onfinish);
- if (opts.error !== false) stream.on('error', onerror);
- stream.on('close', onclose);
- return function () {
- stream.removeListener('complete', onfinish);
- stream.removeListener('abort', onclose);
- stream.removeListener('request', onrequest);
- if (stream.req) stream.req.removeListener('finish', onfinish);
- stream.removeListener('end', onlegacyfinish);
- stream.removeListener('close', onlegacyfinish);
- stream.removeListener('finish', onfinish);
- stream.removeListener('end', onend);
- stream.removeListener('error', onerror);
- stream.removeListener('close', onclose);
- };
-}
-
-module.exports = eos; \ No newline at end of file
diff --git a/assets/node_modules/readable-stream/lib/internal/streams/from-browser.js b/assets/node_modules/readable-stream/lib/internal/streams/from-browser.js
deleted file mode 100644
index a4ce56f..0000000
--- a/assets/node_modules/readable-stream/lib/internal/streams/from-browser.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = function () {
- throw new Error('Readable.from is not available in the browser')
-};
diff --git a/assets/node_modules/readable-stream/lib/internal/streams/from.js b/assets/node_modules/readable-stream/lib/internal/streams/from.js
deleted file mode 100644
index 6c41284..0000000
--- a/assets/node_modules/readable-stream/lib/internal/streams/from.js
+++ /dev/null
@@ -1,64 +0,0 @@
-'use strict';
-
-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); }); }; }
-
-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 _objectSpread(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; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-var ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE;
-
-function from(Readable, iterable, opts) {
- var iterator;
-
- if (iterable && typeof iterable.next === 'function') {
- iterator = iterable;
- } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable);
-
- var readable = new Readable(_objectSpread({
- objectMode: true
- }, opts)); // Reading boolean to protect against _read
- // being called before last iteration completion.
-
- var reading = false;
-
- readable._read = function () {
- if (!reading) {
- reading = true;
- next();
- }
- };
-
- function next() {
- return _next2.apply(this, arguments);
- }
-
- function _next2() {
- _next2 = _asyncToGenerator(function* () {
- try {
- var _ref = yield iterator.next(),
- value = _ref.value,
- done = _ref.done;
-
- if (done) {
- readable.push(null);
- } else if (readable.push((yield value))) {
- next();
- } else {
- reading = false;
- }
- } catch (err) {
- readable.destroy(err);
- }
- });
- return _next2.apply(this, arguments);
- }
-
- return readable;
-}
-
-module.exports = from; \ No newline at end of file
diff --git a/assets/node_modules/readable-stream/lib/internal/streams/pipeline.js b/assets/node_modules/readable-stream/lib/internal/streams/pipeline.js
deleted file mode 100644
index 6589909..0000000
--- a/assets/node_modules/readable-stream/lib/internal/streams/pipeline.js
+++ /dev/null
@@ -1,97 +0,0 @@
-// Ported from https://github.com/mafintosh/pump with
-// permission from the author, Mathias Buus (@mafintosh).
-'use strict';
-
-var eos;
-
-function once(callback) {
- var called = false;
- return function () {
- if (called) return;
- called = true;
- callback.apply(void 0, arguments);
- };
-}
-
-var _require$codes = require('../../../errors').codes,
- ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,
- ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;
-
-function noop(err) {
- // Rethrow the error if it exists to avoid swallowing it
- if (err) throw err;
-}
-
-function isRequest(stream) {
- return stream.setHeader && typeof stream.abort === 'function';
-}
-
-function destroyer(stream, reading, writing, callback) {
- callback = once(callback);
- var closed = false;
- stream.on('close', function () {
- closed = true;
- });
- if (eos === undefined) eos = require('./end-of-stream');
- eos(stream, {
- readable: reading,
- writable: writing
- }, function (err) {
- if (err) return callback(err);
- closed = true;
- callback();
- });
- var destroyed = false;
- return function (err) {
- if (closed) return;
- if (destroyed) return;
- destroyed = true; // request.destroy just do .end - .abort is what we want
-
- if (isRequest(stream)) return stream.abort();
- if (typeof stream.destroy === 'function') return stream.destroy();
- callback(err || new ERR_STREAM_DESTROYED('pipe'));
- };
-}
-
-function call(fn) {
- fn();
-}
-
-function pipe(from, to) {
- return from.pipe(to);
-}
-
-function popCallback(streams) {
- if (!streams.length) return noop;
- if (typeof streams[streams.length - 1] !== 'function') return noop;
- return streams.pop();
-}
-
-function pipeline() {
- for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {
- streams[_key] = arguments[_key];
- }
-
- var callback = popCallback(streams);
- if (Array.isArray(streams[0])) streams = streams[0];
-
- if (streams.length < 2) {
- throw new ERR_MISSING_ARGS('streams');
- }
-
- var error;
- var destroys = streams.map(function (stream, i) {
- var reading = i < streams.length - 1;
- var writing = i > 0;
- return destroyer(stream, reading, writing, function (err) {
- if (!error) error = err;
- if (err) destroys.forEach(call);
- if (reading) return;
- destroys.forEach(call);
- callback(error);
- });
- });
- return streams.reduce(pipe);
-}
-
-module.exports = pipeline; \ No newline at end of file
diff --git a/assets/node_modules/readable-stream/lib/internal/streams/state.js b/assets/node_modules/readable-stream/lib/internal/streams/state.js
deleted file mode 100644
index 19887eb..0000000
--- a/assets/node_modules/readable-stream/lib/internal/streams/state.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict';
-
-var ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;
-
-function highWaterMarkFrom(options, isDuplex, duplexKey) {
- return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;
-}
-
-function getHighWaterMark(state, options, duplexKey, isDuplex) {
- var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);
-
- if (hwm != null) {
- if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {
- var name = isDuplex ? duplexKey : 'highWaterMark';
- throw new ERR_INVALID_OPT_VALUE(name, hwm);
- }
-
- return Math.floor(hwm);
- } // Default value
-
-
- return state.objectMode ? 16 : 16 * 1024;
-}
-
-module.exports = {
- getHighWaterMark: getHighWaterMark
-}; \ No newline at end of file
diff --git a/assets/node_modules/readable-stream/lib/internal/streams/stream-browser.js b/assets/node_modules/readable-stream/lib/internal/streams/stream-browser.js
deleted file mode 100644
index 9332a3f..0000000
--- a/assets/node_modules/readable-stream/lib/internal/streams/stream-browser.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('events').EventEmitter;
diff --git a/assets/node_modules/readable-stream/lib/internal/streams/stream.js b/assets/node_modules/readable-stream/lib/internal/streams/stream.js
deleted file mode 100644
index ce2ad5b..0000000
--- a/assets/node_modules/readable-stream/lib/internal/streams/stream.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('stream');
diff --git a/assets/node_modules/readable-stream/package.json b/assets/node_modules/readable-stream/package.json
deleted file mode 100644
index 33d56ab..0000000
--- a/assets/node_modules/readable-stream/package.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "name": "readable-stream",
- "version": "3.5.0",
- "description": "Streams3, a user-land copy of the stream library from Node.js",
- "main": "readable.js",
- "engines": {
- "node": ">= 6"
- },
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "devDependencies": {
- "@babel/cli": "^7.2.0",
- "@babel/core": "^7.2.0",
- "@babel/polyfill": "^7.0.0",
- "@babel/preset-env": "^7.2.0",
- "airtap": "0.0.9",
- "assert": "^1.4.0",
- "bl": "^2.0.0",
- "deep-strict-equal": "^0.2.0",
- "events.once": "^2.0.2",
- "glob": "^7.1.2",
- "gunzip-maybe": "^1.4.1",
- "hyperquest": "^2.1.3",
- "lolex": "^2.6.0",
- "nyc": "^11.0.0",
- "pump": "^3.0.0",
- "rimraf": "^2.6.2",
- "tap": "^12.0.0",
- "tape": "^4.9.0",
- "tar-fs": "^1.16.2",
- "util-promisify": "^2.1.0"
- },
- "scripts": {
- "test": "tap -J --no-esm test/parallel/*.js test/ours/*.js",
- "ci": "TAP=1 tap --no-esm test/parallel/*.js test/ours/*.js | tee test.tap",
- "test-browsers": "airtap --sauce-connect --loopback airtap.local -- test/browser.js",
- "test-browser-local": "airtap --open --local -- test/browser.js",
- "cover": "nyc npm test",
- "report": "nyc report --reporter=lcov",
- "update-browser-errors": "babel -o errors-browser.js errors.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/nodejs/readable-stream"
- },
- "keywords": [
- "readable",
- "stream",
- "pipe"
- ],
- "browser": {
- "util": false,
- "worker_threads": false,
- "./errors": "./errors-browser.js",
- "./readable.js": "./readable-browser.js",
- "./lib/internal/streams/from.js": "./lib/internal/streams/from-browser.js",
- "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js"
- },
- "nyc": {
- "include": [
- "lib/**.js"
- ]
- },
- "license": "MIT"
-}
diff --git a/assets/node_modules/readable-stream/readable-browser.js b/assets/node_modules/readable-stream/readable-browser.js
deleted file mode 100644
index adbf60d..0000000
--- a/assets/node_modules/readable-stream/readable-browser.js
+++ /dev/null
@@ -1,9 +0,0 @@
-exports = module.exports = require('./lib/_stream_readable.js');
-exports.Stream = exports;
-exports.Readable = exports;
-exports.Writable = require('./lib/_stream_writable.js');
-exports.Duplex = require('./lib/_stream_duplex.js');
-exports.Transform = require('./lib/_stream_transform.js');
-exports.PassThrough = require('./lib/_stream_passthrough.js');
-exports.finished = require('./lib/internal/streams/end-of-stream.js');
-exports.pipeline = require('./lib/internal/streams/pipeline.js');
diff --git a/assets/node_modules/readable-stream/readable.js b/assets/node_modules/readable-stream/readable.js
deleted file mode 100644
index 9e0ca12..0000000
--- a/assets/node_modules/readable-stream/readable.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var Stream = require('stream');
-if (process.env.READABLE_STREAM === 'disable' && Stream) {
- module.exports = Stream.Readable;
- Object.assign(module.exports, Stream);
- module.exports.Stream = Stream;
-} else {
- exports = module.exports = require('./lib/_stream_readable.js');
- exports.Stream = Stream || exports;
- exports.Readable = exports;
- exports.Writable = require('./lib/_stream_writable.js');
- exports.Duplex = require('./lib/_stream_duplex.js');
- exports.Transform = require('./lib/_stream_transform.js');
- exports.PassThrough = require('./lib/_stream_passthrough.js');
- exports.finished = require('./lib/internal/streams/end-of-stream.js');
- exports.pipeline = require('./lib/internal/streams/pipeline.js');
-}
diff --git a/assets/node_modules/readdirp/LICENSE b/assets/node_modules/readdirp/LICENSE
deleted file mode 100644
index 037cbb4..0000000
--- a/assets/node_modules/readdirp/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2012-2019 Thorsten Lorenz, Paul Miller (https://paulmillr.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/assets/node_modules/readdirp/README.md b/assets/node_modules/readdirp/README.md
deleted file mode 100644
index b3b3127..0000000
--- a/assets/node_modules/readdirp/README.md
+++ /dev/null
@@ -1,120 +0,0 @@
-# readdirp [![Weekly downloads](https://img.shields.io/npm/dw/readdirp.svg)](https://github.com/paulmillr/readdirp)
-
-> Recursive version of [fs.readdir](https://nodejs.org/api/fs.html#fs_fs_readdir_path_options_callback). Exposes a **stream API** and a **promise API**.
-
-[![NPM](https://nodei.co/npm/readdirp.png)](https://www.npmjs.com/package/readdirp)
-
-```sh
-npm install readdirp
-```
-
-```javascript
-const readdirp = require('readdirp');
-
-// Use streams to achieve small RAM & CPU footprint.
-// 1) Streams example with for-await.
-for await (const entry of readdirp('.')) {
- const {path} = entry;
- console.log(`${JSON.stringify({path})}`);
-}
-
-// 2) Streams example, non for-await.
-// Print out all JS files along with their size within the current folder & subfolders.
-readdirp('.', {fileFilter: '*.js', alwaysStat: true})
- .on('data', (entry) => {
- const {path, stats: {size}} = entry;
- console.log(`${JSON.stringify({path, size})}`);
- })
- // Optionally call stream.destroy() in `warn()` in order to abort and cause 'close' to be emitted
- .on('warn', error => console.error('non-fatal error', error))
- .on('error', error => console.error('fatal error', error))
- .on('end', () => console.log('done'));
-
-// 3) Promise example. More RAM and CPU than streams / for-await.
-const files = await readdirp.promise('.');
-console.log(files.map(file => file.path));
-
-// Other options.
-readdirp('test', {
- fileFilter: '*.js',
- directoryFilter: ['!.git', '!*modules']
- // directoryFilter: (di) => di.basename.length === 9
- type: 'files_directories',
- depth: 1
-});
-```
-
-For more examples, check out `examples` directory.
-
-## API
-
-`const stream = readdirp(root[, options])` — **Stream API**
-
-- Reads given root recursively and returns a `stream` of [entry infos](#entryinfo)
-- Optionally can be used like `for await (const entry of stream)` with node.js 10+ (`asyncIterator`).
-- `on('data', (entry) => {})` [entry info](#entryinfo) for every file / dir.
-- `on('warn', (error) => {})` non-fatal `Error` that prevents a file / dir from being processed. Example: inaccessible to the user.
-- `on('error', (error) => {})` fatal `Error` which also ends the stream. Example: illegal options where passed.
-- `on('end')` — we are done. Called when all entries were found and no more will be emitted.
-- `on('close')` — stream is destroyed via `stream.destroy()`.
- Could be useful if you want to manually abort even on a non fatal error.
- At that point the stream is no longer `readable` and no more entries, warning or errors are emitted
-- To learn more about streams, consult the very detailed [nodejs streams documentation](https://nodejs.org/api/stream.html)
- or the [stream-handbook](https://github.com/substack/stream-handbook)
-
-`const entries = await readdirp.promise(root[, options])` — **Promise API**. Returns a list of [entry infos](#entryinfo).
-
-First argument is awalys `root`, path in which to start reading and recursing into subdirectories.
-
-### options
-
-- `fileFilter: ["*.js"]`: filter to include or exclude files. A `Function`, Glob string or Array of glob strings.
- - **Function**: a function that takes an entry info as a parameter and returns true to include or false to exclude the entry
- - **Glob string**: a string (e.g., `*.js`) which is matched using [picomatch](https://github.com/micromatch/picomatch), so go there for more
- information. Globstars (`**`) are not supported since specifying a recursive pattern for an already recursive function doesn't make sense. Negated globs (as explained in the minimatch documentation) are allowed, e.g., `!*.txt` matches everything but text files.
- - **Array of glob strings**: either need to be all inclusive or all exclusive (negated) patterns otherwise an error is thrown.
- `['*.json', '*.js']` includes all JavaScript and Json files.
- `['!.git', '!node_modules']` includes all directories except the '.git' and 'node_modules'.
- - Directories that do not pass a filter will not be recursed into.
-- `directoryFilter: ['!.git']`: filter to include/exclude directories found and to recurse into. Directories that do not pass a filter will not be recursed into.
-- `depth: 5`: depth at which to stop recursing even if more subdirectories are found
-- `type: 'files'`: determines if data events on the stream should be emitted for `'files'` (default), `'directories'`, `'files_directories'`, or `'all'`. Setting to `'all'` will also include entries for other types of file descriptors like character devices, unix sockets and named pipes.
-- `alwaysStat: false`: always return `stats` property for every file. Setting it to `true` can double readdir execution time - use it only when you need file `size`, `mtime` etc. Cannot be enabled on node <10.10.0.
-- `lstat: false`: include symlink entries in the stream along with files. When `true`, `fs.lstat` would be used instead of `fs.stat`
-
-### `EntryInfo`
-
-Has the following properties:
-
-- `path: 'assets/javascripts/react.js'`: path to the file/directory (relative to given root)
-- `fullPath: '/Users/dev/projects/app/assets/javascripts/react.js'`: full path to the file/directory found
-- `basename: 'react.js'`: name of the file/directory
-- `dirent: fs.Dirent`: built-in [dir entry object](https://nodejs.org/api/fs.html#fs_class_fs_dirent) - only with `alwaysStat: false`
-- `stats: fs.Stats`: built in [stat object](https://nodejs.org/api/fs.html#fs_class_fs_stats) - only with `alwaysStat: true`
-
-## Changelog
-
-- 3.3 (Dec 6, 2019) stabilizes RAM consumption and enables perf management with `highWaterMark` option. Fixes race conditions related to `for-await` looping.
-- 3.2 (Oct 14, 2019) improves performance by 250% and makes streams implementation more idiomatic.
-- 3.1 (Jul 7, 2019) brings `bigint` support to `stat` output on Windows. This is backwards-incompatible for some cases. Be careful. It you use it incorrectly, you'll see "TypeError: Cannot mix BigInt and other types, use explicit conversions".
-- 3.0 brings huge performance improvements and stream backpressure support.
-- Upgrading 2.x to 3.x:
- - Signature changed from `readdirp(options)` to `readdirp(root, options)`
- - Replaced callback API with promise API.
- - Renamed `entryType` option to `type`
- - Renamed `entryType: 'both'` to `'files_directories'`
- - `EntryInfo`
- - Renamed `stat` to `stats`
- - Emitted only when `alwaysStat: true`
- - `dirent` is emitted instead of `stats` by default with `alwaysStat: false`
- - Renamed `name` to `basename`
- - Removed `parentDir` and `fullParentDir` properties
-- Supported node.js versions:
- - 3.x: node 8+
- - 2.x: node 0.6+
-
-## License
-
-Copyright (c) 2012-2019 Thorsten Lorenz, Paul Miller (<https://paulmillr.com>)
-
-MIT License, see [LICENSE](LICENSE) file.
diff --git a/assets/node_modules/readdirp/index.d.ts b/assets/node_modules/readdirp/index.d.ts
deleted file mode 100644
index 2ef9860..0000000
--- a/assets/node_modules/readdirp/index.d.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-// TypeScript Version: 3.2
-
-/// <reference types="node" lib="esnext" />
-
-import * as fs from 'fs';
-import { Readable } from 'stream';
-
-declare namespace readdir {
- interface EntryInfo {
- path: string;
- fullPath: string;
- basename: string;
- stats?: fs.Stats;
- dirent?: fs.Dirent;
- }
-
- interface ReaddirpOptions {
- root?: string;
- fileFilter?: string | string[] | ((entry: EntryInfo) => boolean);
- directoryFilter?: (entry: EntryInfo) => boolean;
- type?: 'files' | 'directories' | 'files_directories' | 'all';
- lstat?: boolean;
- depth?: number;
- alwaysStat?: boolean;
- }
-
- interface ReaddirpStream extends Readable, AsyncIterable<EntryInfo> {
- read(): EntryInfo;
- [Symbol.asyncIterator](): AsyncIterableIterator<EntryInfo>;
- }
-
- function promise(
- root: string,
- options?: ReaddirpOptions
- ): Promise<EntryInfo[]>;
-}
-
-declare function readdir(
- root: string,
- options?: readdir.ReaddirpOptions
-): readdir.ReaddirpStream;
-
-export = readdir;
diff --git a/assets/node_modules/readdirp/index.js b/assets/node_modules/readdirp/index.js
deleted file mode 100644
index d033a3f..0000000
--- a/assets/node_modules/readdirp/index.js
+++ /dev/null
@@ -1,254 +0,0 @@
-'use strict';
-
-const fs = require('fs');
-const { Readable } = require('stream');
-const sysPath = require('path');
-const { promisify } = require('util');
-const picomatch = require('picomatch');
-
-const readdir = promisify(fs.readdir);
-const stat = promisify(fs.stat);
-const lstat = promisify(fs.lstat);
-
-/**
- * @typedef {Object} EntryInfo
- * @property {String} path
- * @property {String} fullPath
- * @property {fs.Stats=} stats
- * @property {fs.Dirent=} dirent
- * @property {String} basename
- */
-
-const BANG = '!';
-const NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP']);
-const FILE_TYPE = 'files';
-const DIR_TYPE = 'directories';
-const FILE_DIR_TYPE = 'files_directories';
-const EVERYTHING_TYPE = 'all';
-const ALL_TYPES = [FILE_TYPE, DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE];
-
-const isNormalFlowError = error => NORMAL_FLOW_ERRORS.has(error.code);
-
-const normalizeFilter = filter => {
- if (filter === undefined) return;
- if (typeof filter === 'function') return filter;
-
- if (typeof filter === 'string') {
- const glob = picomatch(filter.trim());
- return entry => glob(entry.basename);
- }
-
- if (Array.isArray(filter)) {
- const positive = [];
- const negative = [];
- for (const item of filter) {
- const trimmed = item.trim();
- if (trimmed.charAt(0) === BANG) {
- negative.push(picomatch(trimmed.slice(1)));
- } else {
- positive.push(picomatch(trimmed));
- }
- }
-
- if (negative.length > 0) {
- if (positive.length > 0) {
- return entry =>
- positive.some(f => f(entry.basename)) && !negative.some(f => f(entry.basename));
- }
- return entry => !negative.some(f => f(entry.basename));
- }
- return entry => positive.some(f => f(entry.basename));
- }
-};
-
-class ReaddirpStream extends Readable {
- static get defaultOptions() {
- return {
- root: '.',
- /* eslint-disable no-unused-vars */
- fileFilter: (path) => true,
- directoryFilter: (path) => true,
- /* eslint-enable no-unused-vars */
- type: FILE_TYPE,
- lstat: false,
- depth: 2147483648,
- alwaysStat: false
- };
- }
-
- constructor(options = {}) {
- super({
- objectMode: true,
- autoDestroy: true,
- highWaterMark: options.highWaterMark || 4096
- });
- const opts = { ...ReaddirpStream.defaultOptions, ...options };
- const { root, type } = opts;
-
- this._fileFilter = normalizeFilter(opts.fileFilter);
- this._directoryFilter = normalizeFilter(opts.directoryFilter);
-
- const statMethod = opts.lstat ? lstat : stat;
- // Use bigint stats if it's windows and stat() supports options (node 10+).
- if (process.platform === 'win32' && stat.length === 3) {
- this._stat = path => statMethod(path, { bigint: true });
- } else {
- this._stat = statMethod;
- }
-
- this._maxDepth = opts.depth;
- this._wantsDir = [DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);
- this._wantsFile = [FILE_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);
- this._wantsEverything = type === EVERYTHING_TYPE;
- this._root = sysPath.resolve(root);
- this._isDirent = ('Dirent' in fs) && !opts.alwaysStat;
- this._statsProp = this._isDirent ? 'dirent' : 'stats';
- this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent };
-
- // Launch stream with one parent, the root dir.
- try {
- this.parents = [this._exploreDir(root, 1)];
- } catch (error) {
- this.destroy(error);
- }
- this.reading = false;
- this.parent = undefined;
- }
-
- async _read(batch) {
- if (this.reading) return;
- this.reading = true;
-
- try {
- while (!this.destroyed && batch > 0) {
- const { path, depth, files = [] } = this.parent || {};
-
- if (files.length > 0) {
- const slice = files.splice(0, batch).map(dirent => this._formatEntry(dirent, path));
- for (const entry of await Promise.all(slice)) {
- if (this._isDirAndMatchesFilter(entry)) {
- if (depth <= this._maxDepth) {
- this.parents.push(this._exploreDir(entry.fullPath, depth + 1));
- }
-
- if (this._wantsDir) {
- this.push(entry);
- batch--;
- }
- } else if (this._isFileAndMatchesFilter(entry)) {
- if (this._wantsFile) {
- this.push(entry);
- batch--;
- }
- }
- }
- } else {
- const parent = this.parents.pop();
- if (!parent) {
- this.push(null);
- break;
- }
- this.parent = await parent;
- }
- }
- } catch (error) {
- this.destroy(error);
- } finally {
- this.reading = false;
- }
- }
-
- async _exploreDir(path, depth) {
- let files;
- try {
- files = await readdir(path, this._rdOptions);
- } catch (error) {
- this._onError(error);
- }
- return {files, depth, path};
- }
-
- async _formatEntry(dirent, path) {
- const basename = this._isDirent ? dirent.name : dirent;
- const fullPath = sysPath.resolve(sysPath.join(path, basename));
- const entry = {path: sysPath.relative(this._root, fullPath), fullPath, basename};
- try {
- entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);
- } catch (err) {
- this._onError(err);
- }
- return entry;
- }
-
- _onError(err) {
- if (isNormalFlowError(err) && !this.destroyed) {
- this.emit('warn', err);
- } else {
- throw err;
- }
- }
-
- _isDirAndMatchesFilter(entry) {
- // entry may be undefined, because a warning or an error were emitted
- // and the statsProp is undefined
- const stats = entry && entry[this._statsProp];
- return stats && stats.isDirectory() && this._directoryFilter(entry);
- }
-
- _isFileAndMatchesFilter(entry) {
- const stats = entry && entry[this._statsProp];
- const isFileType = stats && (
- (this._wantsEverything && !stats.isDirectory()) ||
- (stats.isFile() || stats.isSymbolicLink())
- );
- return isFileType && this._fileFilter(entry);
- }
-}
-
-/**
- * @typedef {Object} ReaddirpArguments
- * @property {Function=} fileFilter
- * @property {Function=} directoryFilter
- * @property {String=} type
- * @property {Number=} depth
- * @property {String=} root
- * @property {Boolean=} lstat
- * @property {Boolean=} bigint
- */
-
-/**
- * Main function which ends up calling readdirRec and reads all files and directories in given root recursively.
- * @param {String} root Root directory
- * @param {ReaddirpArguments=} options Options to specify root (start directory), filters and recursion depth
- */
-const readdirp = (root, options = {}) => {
- let type = options.entryType || options.type;
- if (type === 'both') type = FILE_DIR_TYPE; // backwards-compatibility
- if (type) options.type = type;
- if (!root) {
- throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)');
- } else if (typeof root !== 'string') {
- throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)');
- } else if (type && !ALL_TYPES.includes(type)) {
- throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`);
- }
-
- options.root = root;
- return new ReaddirpStream(options);
-};
-
-const readdirpPromise = (root, options = {}) => {
- return new Promise((resolve, reject) => {
- const files = [];
- readdirp(root, options)
- .on('data', entry => files.push(entry))
- .on('end', () => resolve(files))
- .on('error', error => reject(error));
- });
-};
-
-readdirp.promise = readdirpPromise;
-readdirp.ReaddirpStream = ReaddirpStream;
-readdirp.default = readdirp;
-
-module.exports = readdirp;
diff --git a/assets/node_modules/readdirp/package.json b/assets/node_modules/readdirp/package.json
deleted file mode 100644
index 186d8a5..0000000
--- a/assets/node_modules/readdirp/package.json
+++ /dev/null
@@ -1,121 +0,0 @@
-{
- "name": "readdirp",
- "description": "Recursive version of fs.readdir with streaming API.",
- "version": "3.3.0",
- "homepage": "https://github.com/paulmillr/readdirp",
- "repository": {
- "type": "git",
- "url": "git://github.com/paulmillr/readdirp.git"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/paulmillr/readdirp/issues"
- },
- "author": "Thorsten Lorenz <thlorenz@gmx.de> (thlorenz.com)",
- "contributors": [
- "Thorsten Lorenz <thlorenz@gmx.de> (thlorenz.com)",
- "Paul Miller (https://paulmillr.com)"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=8.10.0"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "recursive",
- "fs",
- "stream",
- "streams",
- "readdir",
- "filesystem",
- "find",
- "filter"
- ],
- "scripts": {
- "dtslint": "dtslint",
- "nyc": "nyc",
- "mocha": "mocha --exit",
- "lint": "eslint --report-unused-disable-directives --ignore-path .gitignore .",
- "test": "npm run lint && nyc npm run mocha"
- },
- "dependencies": {
- "picomatch": "^2.0.7"
- },
- "devDependencies": {
- "@types/node": "^12",
- "chai": "^4.2",
- "chai-subset": "^1.6",
- "dtslint": "^2.0.0",
- "eslint": "^6.6.0",
- "mocha": "^6.2.2",
- "nyc": "^14.1.1",
- "rimraf": "^3.0.0"
- },
- "nyc": {
- "reporter": [
- "html",
- "text"
- ]
- },
- "eslintConfig": {
- "root": true,
- "extends": "eslint:recommended",
- "parserOptions": {
- "ecmaVersion": 9,
- "sourceType": "script"
- },
- "env": {
- "node": true,
- "es6": true
- },
- "rules": {
- "array-callback-return": "error",
- "no-empty": [
- "error",
- {
- "allowEmptyCatch": true
- }
- ],
- "no-else-return": [
- "error",
- {
- "allowElseIf": false
- }
- ],
- "no-lonely-if": "error",
- "no-var": "error",
- "object-shorthand": "error",
- "prefer-arrow-callback": [
- "error",
- {
- "allowNamedFunctions": true
- }
- ],
- "prefer-const": [
- "error",
- {
- "ignoreReadBeforeAssign": true
- }
- ],
- "prefer-destructuring": [
- "error",
- {
- "object": true,
- "array": false
- }
- ],
- "prefer-spread": "error",
- "prefer-template": "error",
- "radix": "error",
- "semi": "error",
- "strict": "error",
- "quotes": [
- "error",
- "single"
- ]
- }
- }
-}
diff --git a/assets/node_modules/redent/index.d.ts b/assets/node_modules/redent/index.d.ts
deleted file mode 100644
index 67b94c7..0000000
--- a/assets/node_modules/redent/index.d.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import {Options as IndentStringOptions} from 'indent-string';
-
-declare namespace redent {
- type Options = IndentStringOptions;
-}
-
-/**
-[Strip redundant indentation](https://github.com/sindresorhus/strip-indent) and [indent the string](https://github.com/sindresorhus/indent-string).
-
-@param string - The string to normalize indentation.
-@param count - How many times you want `options.indent` repeated. Default: `0`.
-
-@example
-```
-import redent = require('redent');
-
-redent('\n foo\n bar\n', 1);
-//=> '\n foo\n bar\n'
-```
-*/
-declare function redent(
- string: string,
- count?: number,
- options?: redent.Options
-): string;
-
-export = redent;
diff --git a/assets/node_modules/redent/index.js b/assets/node_modules/redent/index.js
deleted file mode 100644
index 9457849..0000000
--- a/assets/node_modules/redent/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-'use strict';
-const stripIndent = require('strip-indent');
-const indentString = require('indent-string');
-
-module.exports = (string, count = 0, options) => indentString(stripIndent(string), count, options);
diff --git a/assets/node_modules/redent/license b/assets/node_modules/redent/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/redent/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/redent/package.json b/assets/node_modules/redent/package.json
deleted file mode 100644
index 89b5021..0000000
--- a/assets/node_modules/redent/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "redent",
- "version": "3.0.0",
- "description": "Strip redundant indentation and indent the string",
- "license": "MIT",
- "repository": "sindresorhus/redent",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "string",
- "strip",
- "trim",
- "indent",
- "indentation",
- "add",
- "reindent",
- "normalize",
- "remove",
- "whitespace",
- "space"
- ],
- "dependencies": {
- "indent-string": "^4.0.0",
- "strip-indent": "^3.0.0"
- },
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/redent/readme.md b/assets/node_modules/redent/readme.md
deleted file mode 100644
index 8a186c2..0000000
--- a/assets/node_modules/redent/readme.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# redent [![Build Status](https://travis-ci.org/sindresorhus/redent.svg?branch=master)](https://travis-ci.org/sindresorhus/redent)
-
-> [Strip redundant indentation](https://github.com/sindresorhus/strip-indent) and [indent the string](https://github.com/sindresorhus/indent-string)
-
-
-## Install
-
-```
-$ npm install redent
-```
-
-
-## Usage
-
-```js
-const redent = require('redent');
-
-redent('\n foo\n bar\n', 1);
-//=> '\n foo\n bar\n'
-```
-
-
-## API
-
-### redent(string, [count], [options])
-
-#### string
-
-Type: `string`
-
-The string to normalize indentation.
-
-#### count
-
-Type: `number`<br>
-Default: `0`
-
-How many times you want `options.indent` repeated.
-
-#### options
-
-Type: `object`
-
-##### indent
-
-Type: `string`<br>
-Default: `' '`
-
-The string to use for the indent.
-
-##### includeEmptyLines
-
-Type: `boolean`<br>
-Default: `false`
-
-Also indent empty lines.
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/regenerator-runtime/LICENSE b/assets/node_modules/regenerator-runtime/LICENSE
deleted file mode 100644
index cde61b6..0000000
--- a/assets/node_modules/regenerator-runtime/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2014-present, Facebook, Inc.
-
-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/assets/node_modules/regenerator-runtime/README.md b/assets/node_modules/regenerator-runtime/README.md
deleted file mode 100644
index d93386a..0000000
--- a/assets/node_modules/regenerator-runtime/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# regenerator-runtime
-
-Standalone runtime for
-[Regenerator](https://github.com/facebook/regenerator)-compiled generator
-and `async` functions.
-
-To import the runtime as a module (recommended), either of the following
-import styles will work:
-```js
-// CommonJS
-const regeneratorRuntime = require("regenerator-runtime");
-
-// ECMAScript 2015
-import regeneratorRuntime from "regenerator-runtime";
-```
-
-To ensure that `regeneratorRuntime` is defined globally, either of the
-following styles will work:
-```js
-// CommonJS
-require("regenerator-runtime/runtime");
-
-// ECMAScript 2015
-import "regenerator-runtime/runtime";
-```
-
-To get the absolute file system path of `runtime.js`, evaluate the
-following expression:
-```js
-require("regenerator-runtime/path").path
-```
diff --git a/assets/node_modules/regenerator-runtime/package.json b/assets/node_modules/regenerator-runtime/package.json
deleted file mode 100644
index f6d369d..0000000
--- a/assets/node_modules/regenerator-runtime/package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "regenerator-runtime",
- "author": "Ben Newman <bn@cs.stanford.edu>",
- "description": "Runtime for Regenerator-compiled generator and async functions.",
- "version": "0.13.3",
- "main": "runtime.js",
- "keywords": [
- "regenerator",
- "runtime",
- "generator",
- "async"
- ],
- "sideEffects": true,
- "repository": {
- "type": "git",
- "url": "https://github.com/facebook/regenerator/tree/master/packages/regenerator-runtime"
- },
- "license": "MIT"
-}
diff --git a/assets/node_modules/regenerator-runtime/path.js b/assets/node_modules/regenerator-runtime/path.js
deleted file mode 100644
index ced878b..0000000
--- a/assets/node_modules/regenerator-runtime/path.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * Copyright (c) 2014-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-exports.path = require("path").join(
- __dirname,
- "runtime.js"
-);
diff --git a/assets/node_modules/regenerator-runtime/runtime.js b/assets/node_modules/regenerator-runtime/runtime.js
deleted file mode 100644
index 92d1815..0000000
--- a/assets/node_modules/regenerator-runtime/runtime.js
+++ /dev/null
@@ -1,726 +0,0 @@
-/**
- * Copyright (c) 2014-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-var runtime = (function (exports) {
- "use strict";
-
- var Op = Object.prototype;
- var hasOwn = Op.hasOwnProperty;
- var undefined; // More compressible than void 0.
- var $Symbol = typeof Symbol === "function" ? Symbol : {};
- var iteratorSymbol = $Symbol.iterator || "@@iterator";
- var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
- var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
-
- function wrap(innerFn, outerFn, self, tryLocsList) {
- // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
- var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
- var generator = Object.create(protoGenerator.prototype);
- var context = new Context(tryLocsList || []);
-
- // The ._invoke method unifies the implementations of the .next,
- // .throw, and .return methods.
- generator._invoke = makeInvokeMethod(innerFn, self, context);
-
- return generator;
- }
- exports.wrap = wrap;
-
- // Try/catch helper to minimize deoptimizations. Returns a completion
- // record like context.tryEntries[i].completion. This interface could
- // have been (and was previously) designed to take a closure to be
- // invoked without arguments, but in all the cases we care about we
- // already have an existing method we want to call, so there's no need
- // to create a new function object. We can even get away with assuming
- // the method takes exactly one argument, since that happens to be true
- // in every case, so we don't have to touch the arguments object. The
- // only additional allocation required is the completion record, which
- // has a stable shape and so hopefully should be cheap to allocate.
- function tryCatch(fn, obj, arg) {
- try {
- return { type: "normal", arg: fn.call(obj, arg) };
- } catch (err) {
- return { type: "throw", arg: err };
- }
- }
-
- var GenStateSuspendedStart = "suspendedStart";
- var GenStateSuspendedYield = "suspendedYield";
- var GenStateExecuting = "executing";
- var GenStateCompleted = "completed";
-
- // Returning this object from the innerFn has the same effect as
- // breaking out of the dispatch switch statement.
- var ContinueSentinel = {};
-
- // Dummy constructor functions that we use as the .constructor and
- // .constructor.prototype properties for functions that return Generator
- // objects. For full spec compliance, you may wish to configure your
- // minifier not to mangle the names of these two functions.
- function Generator() {}
- function GeneratorFunction() {}
- function GeneratorFunctionPrototype() {}
-
- // This is a polyfill for %IteratorPrototype% for environments that
- // don't natively support it.
- var IteratorPrototype = {};
- IteratorPrototype[iteratorSymbol] = function () {
- return this;
- };
-
- var getProto = Object.getPrototypeOf;
- var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
- if (NativeIteratorPrototype &&
- NativeIteratorPrototype !== Op &&
- hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
- // This environment has a native %IteratorPrototype%; use it instead
- // of the polyfill.
- IteratorPrototype = NativeIteratorPrototype;
- }
-
- var Gp = GeneratorFunctionPrototype.prototype =
- Generator.prototype = Object.create(IteratorPrototype);
- GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
- GeneratorFunctionPrototype.constructor = GeneratorFunction;
- GeneratorFunctionPrototype[toStringTagSymbol] =
- GeneratorFunction.displayName = "GeneratorFunction";
-
- // Helper for defining the .next, .throw, and .return methods of the
- // Iterator interface in terms of a single ._invoke method.
- function defineIteratorMethods(prototype) {
- ["next", "throw", "return"].forEach(function(method) {
- prototype[method] = function(arg) {
- return this._invoke(method, arg);
- };
- });
- }
-
- exports.isGeneratorFunction = function(genFun) {
- var ctor = typeof genFun === "function" && genFun.constructor;
- return ctor
- ? ctor === GeneratorFunction ||
- // For the native GeneratorFunction constructor, the best we can
- // do is to check its .name property.
- (ctor.displayName || ctor.name) === "GeneratorFunction"
- : false;
- };
-
- exports.mark = function(genFun) {
- if (Object.setPrototypeOf) {
- Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
- } else {
- genFun.__proto__ = GeneratorFunctionPrototype;
- if (!(toStringTagSymbol in genFun)) {
- genFun[toStringTagSymbol] = "GeneratorFunction";
- }
- }
- genFun.prototype = Object.create(Gp);
- return genFun;
- };
-
- // Within the body of any async function, `await x` is transformed to
- // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
- // `hasOwn.call(value, "__await")` to determine if the yielded value is
- // meant to be awaited.
- exports.awrap = function(arg) {
- return { __await: arg };
- };
-
- function AsyncIterator(generator) {
- function invoke(method, arg, resolve, reject) {
- var record = tryCatch(generator[method], generator, arg);
- if (record.type === "throw") {
- reject(record.arg);
- } else {
- var result = record.arg;
- var value = result.value;
- if (value &&
- typeof value === "object" &&
- hasOwn.call(value, "__await")) {
- return Promise.resolve(value.__await).then(function(value) {
- invoke("next", value, resolve, reject);
- }, function(err) {
- invoke("throw", err, resolve, reject);
- });
- }
-
- return Promise.resolve(value).then(function(unwrapped) {
- // When a yielded Promise is resolved, its final value becomes
- // the .value of the Promise<{value,done}> result for the
- // current iteration.
- result.value = unwrapped;
- resolve(result);
- }, function(error) {
- // If a rejected Promise was yielded, throw the rejection back
- // into the async generator function so it can be handled there.
- return invoke("throw", error, resolve, reject);
- });
- }
- }
-
- var previousPromise;
-
- function enqueue(method, arg) {
- function callInvokeWithMethodAndArg() {
- return new Promise(function(resolve, reject) {
- invoke(method, arg, resolve, reject);
- });
- }
-
- return previousPromise =
- // If enqueue has been called before, then we want to wait until
- // all previous Promises have been resolved before calling invoke,
- // so that results are always delivered in the correct order. If
- // enqueue has not been called before, then it is important to
- // call invoke immediately, without waiting on a callback to fire,
- // so that the async generator function has the opportunity to do
- // any necessary setup in a predictable way. This predictability
- // is why the Promise constructor synchronously invokes its
- // executor callback, and why async functions synchronously
- // execute code before the first await. Since we implement simple
- // async functions in terms of async generators, it is especially
- // important to get this right, even though it requires care.
- previousPromise ? previousPromise.then(
- callInvokeWithMethodAndArg,
- // Avoid propagating failures to Promises returned by later
- // invocations of the iterator.
- callInvokeWithMethodAndArg
- ) : callInvokeWithMethodAndArg();
- }
-
- // Define the unified helper method that is used to implement .next,
- // .throw, and .return (see defineIteratorMethods).
- this._invoke = enqueue;
- }
-
- defineIteratorMethods(AsyncIterator.prototype);
- AsyncIterator.prototype[asyncIteratorSymbol] = function () {
- return this;
- };
- exports.AsyncIterator = AsyncIterator;
-
- // Note that simple async functions are implemented on top of
- // AsyncIterator objects; they just return a Promise for the value of
- // the final result produced by the iterator.
- exports.async = function(innerFn, outerFn, self, tryLocsList) {
- var iter = new AsyncIterator(
- wrap(innerFn, outerFn, self, tryLocsList)
- );
-
- return exports.isGeneratorFunction(outerFn)
- ? iter // If outerFn is a generator, return the full iterator.
- : iter.next().then(function(result) {
- return result.done ? result.value : iter.next();
- });
- };
-
- function makeInvokeMethod(innerFn, self, context) {
- var state = GenStateSuspendedStart;
-
- return function invoke(method, arg) {
- if (state === GenStateExecuting) {
- throw new Error("Generator is already running");
- }
-
- if (state === GenStateCompleted) {
- if (method === "throw") {
- throw arg;
- }
-
- // Be forgiving, per 25.3.3.3.3 of the spec:
- // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
- return doneResult();
- }
-
- context.method = method;
- context.arg = arg;
-
- while (true) {
- var delegate = context.delegate;
- if (delegate) {
- var delegateResult = maybeInvokeDelegate(delegate, context);
- if (delegateResult) {
- if (delegateResult === ContinueSentinel) continue;
- return delegateResult;
- }
- }
-
- if (context.method === "next") {
- // Setting context._sent for legacy support of Babel's
- // function.sent implementation.
- context.sent = context._sent = context.arg;
-
- } else if (context.method === "throw") {
- if (state === GenStateSuspendedStart) {
- state = GenStateCompleted;
- throw context.arg;
- }
-
- context.dispatchException(context.arg);
-
- } else if (context.method === "return") {
- context.abrupt("return", context.arg);
- }
-
- state = GenStateExecuting;
-
- var record = tryCatch(innerFn, self, context);
- if (record.type === "normal") {
- // If an exception is thrown from innerFn, we leave state ===
- // GenStateExecuting and loop back for another invocation.
- state = context.done
- ? GenStateCompleted
- : GenStateSuspendedYield;
-
- if (record.arg === ContinueSentinel) {
- continue;
- }
-
- return {
- value: record.arg,
- done: context.done
- };
-
- } else if (record.type === "throw") {
- state = GenStateCompleted;
- // Dispatch the exception by looping back around to the
- // context.dispatchException(context.arg) call above.
- context.method = "throw";
- context.arg = record.arg;
- }
- }
- };
- }
-
- // Call delegate.iterator[context.method](context.arg) and handle the
- // result, either by returning a { value, done } result from the
- // delegate iterator, or by modifying context.method and context.arg,
- // setting context.delegate to null, and returning the ContinueSentinel.
- function maybeInvokeDelegate(delegate, context) {
- var method = delegate.iterator[context.method];
- if (method === undefined) {
- // A .throw or .return when the delegate iterator has no .throw
- // method always terminates the yield* loop.
- context.delegate = null;
-
- if (context.method === "throw") {
- // Note: ["return"] must be used for ES3 parsing compatibility.
- if (delegate.iterator["return"]) {
- // If the delegate iterator has a return method, give it a
- // chance to clean up.
- context.method = "return";
- context.arg = undefined;
- maybeInvokeDelegate(delegate, context);
-
- if (context.method === "throw") {
- // If maybeInvokeDelegate(context) changed context.method from
- // "return" to "throw", let that override the TypeError below.
- return ContinueSentinel;
- }
- }
-
- context.method = "throw";
- context.arg = new TypeError(
- "The iterator does not provide a 'throw' method");
- }
-
- return ContinueSentinel;
- }
-
- var record = tryCatch(method, delegate.iterator, context.arg);
-
- if (record.type === "throw") {
- context.method = "throw";
- context.arg = record.arg;
- context.delegate = null;
- return ContinueSentinel;
- }
-
- var info = record.arg;
-
- if (! info) {
- context.method = "throw";
- context.arg = new TypeError("iterator result is not an object");
- context.delegate = null;
- return ContinueSentinel;
- }
-
- if (info.done) {
- // Assign the result of the finished delegate to the temporary
- // variable specified by delegate.resultName (see delegateYield).
- context[delegate.resultName] = info.value;
-
- // Resume execution at the desired location (see delegateYield).
- context.next = delegate.nextLoc;
-
- // If context.method was "throw" but the delegate handled the
- // exception, let the outer generator proceed normally. If
- // context.method was "next", forget context.arg since it has been
- // "consumed" by the delegate iterator. If context.method was
- // "return", allow the original .return call to continue in the
- // outer generator.
- if (context.method !== "return") {
- context.method = "next";
- context.arg = undefined;
- }
-
- } else {
- // Re-yield the result returned by the delegate method.
- return info;
- }
-
- // The delegate iterator is finished, so forget it and continue with
- // the outer generator.
- context.delegate = null;
- return ContinueSentinel;
- }
-
- // Define Generator.prototype.{next,throw,return} in terms of the
- // unified ._invoke helper method.
- defineIteratorMethods(Gp);
-
- Gp[toStringTagSymbol] = "Generator";
-
- // A Generator should always return itself as the iterator object when the
- // @@iterator function is called on it. Some browsers' implementations of the
- // iterator prototype chain incorrectly implement this, causing the Generator
- // object to not be returned from this call. This ensures that doesn't happen.
- // See https://github.com/facebook/regenerator/issues/274 for more details.
- Gp[iteratorSymbol] = function() {
- return this;
- };
-
- Gp.toString = function() {
- return "[object Generator]";
- };
-
- function pushTryEntry(locs) {
- var entry = { tryLoc: locs[0] };
-
- if (1 in locs) {
- entry.catchLoc = locs[1];
- }
-
- if (2 in locs) {
- entry.finallyLoc = locs[2];
- entry.afterLoc = locs[3];
- }
-
- this.tryEntries.push(entry);
- }
-
- function resetTryEntry(entry) {
- var record = entry.completion || {};
- record.type = "normal";
- delete record.arg;
- entry.completion = record;
- }
-
- function Context(tryLocsList) {
- // The root entry object (effectively a try statement without a catch
- // or a finally block) gives us a place to store values thrown from
- // locations where there is no enclosing try statement.
- this.tryEntries = [{ tryLoc: "root" }];
- tryLocsList.forEach(pushTryEntry, this);
- this.reset(true);
- }
-
- exports.keys = function(object) {
- var keys = [];
- for (var key in object) {
- keys.push(key);
- }
- keys.reverse();
-
- // Rather than returning an object with a next method, we keep
- // things simple and return the next function itself.
- return function next() {
- while (keys.length) {
- var key = keys.pop();
- if (key in object) {
- next.value = key;
- next.done = false;
- return next;
- }
- }
-
- // To avoid creating an additional object, we just hang the .value
- // and .done properties off the next function object itself. This
- // also ensures that the minifier will not anonymize the function.
- next.done = true;
- return next;
- };
- };
-
- function values(iterable) {
- if (iterable) {
- var iteratorMethod = iterable[iteratorSymbol];
- if (iteratorMethod) {
- return iteratorMethod.call(iterable);
- }
-
- if (typeof iterable.next === "function") {
- return iterable;
- }
-
- if (!isNaN(iterable.length)) {
- var i = -1, next = function next() {
- while (++i < iterable.length) {
- if (hasOwn.call(iterable, i)) {
- next.value = iterable[i];
- next.done = false;
- return next;
- }
- }
-
- next.value = undefined;
- next.done = true;
-
- return next;
- };
-
- return next.next = next;
- }
- }
-
- // Return an iterator with no values.
- return { next: doneResult };
- }
- exports.values = values;
-
- function doneResult() {
- return { value: undefined, done: true };
- }
-
- Context.prototype = {
- constructor: Context,
-
- reset: function(skipTempReset) {
- this.prev = 0;
- this.next = 0;
- // Resetting context._sent for legacy support of Babel's
- // function.sent implementation.
- this.sent = this._sent = undefined;
- this.done = false;
- this.delegate = null;
-
- this.method = "next";
- this.arg = undefined;
-
- this.tryEntries.forEach(resetTryEntry);
-
- if (!skipTempReset) {
- for (var name in this) {
- // Not sure about the optimal order of these conditions:
- if (name.charAt(0) === "t" &&
- hasOwn.call(this, name) &&
- !isNaN(+name.slice(1))) {
- this[name] = undefined;
- }
- }
- }
- },
-
- stop: function() {
- this.done = true;
-
- var rootEntry = this.tryEntries[0];
- var rootRecord = rootEntry.completion;
- if (rootRecord.type === "throw") {
- throw rootRecord.arg;
- }
-
- return this.rval;
- },
-
- dispatchException: function(exception) {
- if (this.done) {
- throw exception;
- }
-
- var context = this;
- function handle(loc, caught) {
- record.type = "throw";
- record.arg = exception;
- context.next = loc;
-
- if (caught) {
- // If the dispatched exception was caught by a catch block,
- // then let that catch block handle the exception normally.
- context.method = "next";
- context.arg = undefined;
- }
-
- return !! caught;
- }
-
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
- var entry = this.tryEntries[i];
- var record = entry.completion;
-
- if (entry.tryLoc === "root") {
- // Exception thrown outside of any try block that could handle
- // it, so set the completion value of the entire function to
- // throw the exception.
- return handle("end");
- }
-
- if (entry.tryLoc <= this.prev) {
- var hasCatch = hasOwn.call(entry, "catchLoc");
- var hasFinally = hasOwn.call(entry, "finallyLoc");
-
- if (hasCatch && hasFinally) {
- if (this.prev < entry.catchLoc) {
- return handle(entry.catchLoc, true);
- } else if (this.prev < entry.finallyLoc) {
- return handle(entry.finallyLoc);
- }
-
- } else if (hasCatch) {
- if (this.prev < entry.catchLoc) {
- return handle(entry.catchLoc, true);
- }
-
- } else if (hasFinally) {
- if (this.prev < entry.finallyLoc) {
- return handle(entry.finallyLoc);
- }
-
- } else {
- throw new Error("try statement without catch or finally");
- }
- }
- }
- },
-
- abrupt: function(type, arg) {
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
- var entry = this.tryEntries[i];
- if (entry.tryLoc <= this.prev &&
- hasOwn.call(entry, "finallyLoc") &&
- this.prev < entry.finallyLoc) {
- var finallyEntry = entry;
- break;
- }
- }
-
- if (finallyEntry &&
- (type === "break" ||
- type === "continue") &&
- finallyEntry.tryLoc <= arg &&
- arg <= finallyEntry.finallyLoc) {
- // Ignore the finally entry if control is not jumping to a
- // location outside the try/catch block.
- finallyEntry = null;
- }
-
- var record = finallyEntry ? finallyEntry.completion : {};
- record.type = type;
- record.arg = arg;
-
- if (finallyEntry) {
- this.method = "next";
- this.next = finallyEntry.finallyLoc;
- return ContinueSentinel;
- }
-
- return this.complete(record);
- },
-
- complete: function(record, afterLoc) {
- if (record.type === "throw") {
- throw record.arg;
- }
-
- if (record.type === "break" ||
- record.type === "continue") {
- this.next = record.arg;
- } else if (record.type === "return") {
- this.rval = this.arg = record.arg;
- this.method = "return";
- this.next = "end";
- } else if (record.type === "normal" && afterLoc) {
- this.next = afterLoc;
- }
-
- return ContinueSentinel;
- },
-
- finish: function(finallyLoc) {
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
- var entry = this.tryEntries[i];
- if (entry.finallyLoc === finallyLoc) {
- this.complete(entry.completion, entry.afterLoc);
- resetTryEntry(entry);
- return ContinueSentinel;
- }
- }
- },
-
- "catch": function(tryLoc) {
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
- var entry = this.tryEntries[i];
- if (entry.tryLoc === tryLoc) {
- var record = entry.completion;
- if (record.type === "throw") {
- var thrown = record.arg;
- resetTryEntry(entry);
- }
- return thrown;
- }
- }
-
- // The context.catch method must only be called with a location
- // argument that corresponds to a known catch block.
- throw new Error("illegal catch attempt");
- },
-
- delegateYield: function(iterable, resultName, nextLoc) {
- this.delegate = {
- iterator: values(iterable),
- resultName: resultName,
- nextLoc: nextLoc
- };
-
- if (this.method === "next") {
- // Deliberately forget the last sent value so that we don't
- // accidentally pass it on to the delegate.
- this.arg = undefined;
- }
-
- return ContinueSentinel;
- }
- };
-
- // Regardless of whether this script is executing as a CommonJS module
- // or not, return the runtime object so that we can declare the variable
- // regeneratorRuntime in the outer scope, which allows this module to be
- // injected easily by `bin/regenerator --include-runtime script.js`.
- return exports;
-
-}(
- // If this script is executing as a CommonJS module, use module.exports
- // as the regeneratorRuntime namespace. Otherwise create a new empty
- // object. Either way, the resulting object will be used to initialize
- // the regeneratorRuntime variable at the top of this file.
- typeof module === "object" ? module.exports : {}
-));
-
-try {
- regeneratorRuntime = runtime;
-} catch (accidentalStrictMode) {
- // This module should not be running in strict mode, so the above
- // assignment should always work unless something is misconfigured. Just
- // in case runtime.js accidentally runs in strict mode, we can escape
- // strict mode using a global Function call. This could conceivably fail
- // if a Content Security Policy forbids using Function, but in that case
- // the proper solution is to fix the accidental strict mode problem. If
- // you've misconfigured your bundler to force strict mode and applied a
- // CSP to forbid Function, and you're not willing to fix either of those
- // problems, please detail your unique predicament in a GitHub issue.
- Function("r", "regeneratorRuntime = r")(runtime);
-}
diff --git a/assets/node_modules/remark-parse/index.js b/assets/node_modules/remark-parse/index.js
deleted file mode 100644
index 39cc24a..0000000
--- a/assets/node_modules/remark-parse/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict'
-
-var unherit = require('unherit')
-var xtend = require('xtend')
-var Parser = require('./lib/parser.js')
-
-module.exports = parse
-parse.Parser = Parser
-
-function parse(options) {
- var settings = this.data('settings')
- var Local = unherit(Parser)
-
- Local.prototype.options = xtend(Local.prototype.options, settings, options)
-
- this.Parser = Local
-}
diff --git a/assets/node_modules/remark-parse/lib/block-elements.js b/assets/node_modules/remark-parse/lib/block-elements.js
deleted file mode 100644
index c73efac..0000000
--- a/assets/node_modules/remark-parse/lib/block-elements.js
+++ /dev/null
@@ -1,70 +0,0 @@
-'use strict'
-
-module.exports = [
- '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',
- 'hgroup',
- 'hr',
- 'html',
- 'iframe',
- 'legend',
- 'li',
- 'link',
- 'main',
- 'menu',
- 'menuitem',
- 'meta',
- 'nav',
- 'noframes',
- 'ol',
- 'optgroup',
- 'option',
- 'p',
- 'param',
- 'pre',
- 'section',
- 'source',
- 'title',
- 'summary',
- 'table',
- 'tbody',
- 'td',
- 'tfoot',
- 'th',
- 'thead',
- 'title',
- 'tr',
- 'track',
- 'ul'
-]
diff --git a/assets/node_modules/remark-parse/lib/decode.js b/assets/node_modules/remark-parse/lib/decode.js
deleted file mode 100644
index 3a1edc0..0000000
--- a/assets/node_modules/remark-parse/lib/decode.js
+++ /dev/null
@@ -1,58 +0,0 @@
-'use strict'
-
-var xtend = require('xtend')
-var entities = require('parse-entities')
-
-module.exports = factory
-
-// Factory to create an entity decoder.
-function factory(ctx) {
- decoder.raw = decodeRaw
-
- return decoder
-
- // Normalize `position` to add an `indent`.
- function normalize(position) {
- var offsets = ctx.offset
- var line = position.line
- var result = []
-
- while (++line) {
- if (!(line in offsets)) {
- break
- }
-
- result.push((offsets[line] || 0) + 1)
- }
-
- return {start: position, indent: result}
- }
-
- // Decode `value` (at `position`) into text-nodes.
- function decoder(value, position, handler) {
- entities(value, {
- position: normalize(position),
- warning: handleWarning,
- text: handler,
- reference: handler,
- textContext: ctx,
- referenceContext: ctx
- })
- }
-
- // Decode `value` (at `position`) into a string.
- function decodeRaw(value, position, options) {
- return entities(
- value,
- xtend(options, {position: normalize(position), warning: handleWarning})
- )
- }
-
- // Handle a warning.
- // See <https://github.com/wooorm/parse-entities> for the warnings.
- function handleWarning(reason, position, code) {
- if (code !== 3) {
- ctx.file.message(reason, position)
- }
- }
-}
diff --git a/assets/node_modules/remark-parse/lib/defaults.js b/assets/node_modules/remark-parse/lib/defaults.js
deleted file mode 100644
index 7776e3c..0000000
--- a/assets/node_modules/remark-parse/lib/defaults.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict'
-
-module.exports = {
- position: true,
- gfm: true,
- commonmark: false,
- footnotes: false,
- pedantic: false,
- blocks: require('./block-elements')
-}
diff --git a/assets/node_modules/remark-parse/lib/locate/break.js b/assets/node_modules/remark-parse/lib/locate/break.js
deleted file mode 100644
index f5479e7..0000000
--- a/assets/node_modules/remark-parse/lib/locate/break.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict'
-
-module.exports = locate
-
-function locate(value, fromIndex) {
- var index = value.indexOf('\n', fromIndex)
-
- while (index > fromIndex) {
- if (value.charAt(index - 1) !== ' ') {
- break
- }
-
- index--
- }
-
- return index
-}
diff --git a/assets/node_modules/remark-parse/lib/locate/code-inline.js b/assets/node_modules/remark-parse/lib/locate/code-inline.js
deleted file mode 100644
index 2419717..0000000
--- a/assets/node_modules/remark-parse/lib/locate/code-inline.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-module.exports = locate
-
-function locate(value, fromIndex) {
- return value.indexOf('`', fromIndex)
-}
diff --git a/assets/node_modules/remark-parse/lib/locate/delete.js b/assets/node_modules/remark-parse/lib/locate/delete.js
deleted file mode 100644
index 18b2f63..0000000
--- a/assets/node_modules/remark-parse/lib/locate/delete.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-module.exports = locate
-
-function locate(value, fromIndex) {
- return value.indexOf('~~', fromIndex)
-}
diff --git a/assets/node_modules/remark-parse/lib/locate/emphasis.js b/assets/node_modules/remark-parse/lib/locate/emphasis.js
deleted file mode 100644
index afec4ff..0000000
--- a/assets/node_modules/remark-parse/lib/locate/emphasis.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict'
-
-module.exports = locate
-
-function locate(value, fromIndex) {
- var asterisk = value.indexOf('*', fromIndex)
- var underscore = value.indexOf('_', fromIndex)
-
- if (underscore === -1) {
- return asterisk
- }
-
- if (asterisk === -1) {
- return underscore
- }
-
- return underscore < asterisk ? underscore : asterisk
-}
diff --git a/assets/node_modules/remark-parse/lib/locate/escape.js b/assets/node_modules/remark-parse/lib/locate/escape.js
deleted file mode 100644
index 9f61acf..0000000
--- a/assets/node_modules/remark-parse/lib/locate/escape.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-module.exports = locate
-
-function locate(value, fromIndex) {
- return value.indexOf('\\', fromIndex)
-}
diff --git a/assets/node_modules/remark-parse/lib/locate/link.js b/assets/node_modules/remark-parse/lib/locate/link.js
deleted file mode 100644
index df7b33b..0000000
--- a/assets/node_modules/remark-parse/lib/locate/link.js
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict'
-
-module.exports = locate
-
-function locate(value, fromIndex) {
- var link = value.indexOf('[', fromIndex)
- var image = value.indexOf('![', fromIndex)
-
- if (image === -1) {
- return link
- }
-
- // Link can never be `-1` if an image is found, so we don’t need to check
- // for that :)
- return link < image ? link : image
-}
diff --git a/assets/node_modules/remark-parse/lib/locate/strong.js b/assets/node_modules/remark-parse/lib/locate/strong.js
deleted file mode 100644
index 44b95cd..0000000
--- a/assets/node_modules/remark-parse/lib/locate/strong.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict'
-
-module.exports = locate
-
-function locate(value, fromIndex) {
- var asterisk = value.indexOf('**', fromIndex)
- var underscore = value.indexOf('__', fromIndex)
-
- if (underscore === -1) {
- return asterisk
- }
-
- if (asterisk === -1) {
- return underscore
- }
-
- return underscore < asterisk ? underscore : asterisk
-}
diff --git a/assets/node_modules/remark-parse/lib/locate/tag.js b/assets/node_modules/remark-parse/lib/locate/tag.js
deleted file mode 100644
index 6a5d210..0000000
--- a/assets/node_modules/remark-parse/lib/locate/tag.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-module.exports = locate
-
-function locate(value, fromIndex) {
- return value.indexOf('<', fromIndex)
-}
diff --git a/assets/node_modules/remark-parse/lib/locate/url.js b/assets/node_modules/remark-parse/lib/locate/url.js
deleted file mode 100644
index e5bf5bf..0000000
--- a/assets/node_modules/remark-parse/lib/locate/url.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict'
-
-module.exports = locate
-
-var protocols = ['https://', 'http://', 'mailto:']
-
-function locate(value, fromIndex) {
- var length = protocols.length
- var index = -1
- var min = -1
- var position
-
- if (!this.options.gfm) {
- return -1
- }
-
- while (++index < length) {
- position = value.indexOf(protocols[index], fromIndex)
-
- if (position !== -1 && (position < min || min === -1)) {
- min = position
- }
- }
-
- return min
-}
diff --git a/assets/node_modules/remark-parse/lib/parse.js b/assets/node_modules/remark-parse/lib/parse.js
deleted file mode 100644
index 59aac69..0000000
--- a/assets/node_modules/remark-parse/lib/parse.js
+++ /dev/null
@@ -1,42 +0,0 @@
-'use strict'
-
-var xtend = require('xtend')
-var removePosition = require('unist-util-remove-position')
-
-module.exports = parse
-
-var lineFeed = '\n'
-var lineBreaksExpression = /\r\n|\r/g
-
-// Parse the bound file.
-function parse() {
- var self = this
- var value = String(self.file)
- var start = {line: 1, column: 1, offset: 0}
- var content = xtend(start)
- var node
-
- // Clean non-unix newlines: `\r\n` and `\r` are all changed to `\n`.
- // This should not affect positional information.
- value = value.replace(lineBreaksExpression, lineFeed)
-
- // BOM.
- if (value.charCodeAt(0) === 0xfeff) {
- value = value.slice(1)
-
- content.column++
- content.offset++
- }
-
- node = {
- type: 'root',
- children: self.tokenizeBlock(value, content),
- position: {start: start, end: self.eof || xtend(start)}
- }
-
- if (!self.options.position) {
- removePosition(node, true)
- }
-
- return node
-}
diff --git a/assets/node_modules/remark-parse/lib/parser.js b/assets/node_modules/remark-parse/lib/parser.js
deleted file mode 100644
index 4add90e..0000000
--- a/assets/node_modules/remark-parse/lib/parser.js
+++ /dev/null
@@ -1,149 +0,0 @@
-'use strict'
-
-var xtend = require('xtend')
-var toggle = require('state-toggle')
-var vfileLocation = require('vfile-location')
-var unescape = require('./unescape')
-var decode = require('./decode')
-var tokenizer = require('./tokenizer')
-
-module.exports = Parser
-
-function Parser(doc, file) {
- this.file = file
- this.offset = {}
- this.options = xtend(this.options)
- this.setOptions({})
-
- this.inList = false
- this.inBlock = false
- this.inLink = false
- this.atStart = true
-
- this.toOffset = vfileLocation(file).toOffset
- this.unescape = unescape(this, 'escape')
- this.decode = decode(this)
-}
-
-var proto = Parser.prototype
-
-// Expose core.
-proto.setOptions = require('./set-options')
-proto.parse = require('./parse')
-
-// Expose `defaults`.
-proto.options = require('./defaults')
-
-// Enter and exit helpers.
-proto.exitStart = toggle('atStart', true)
-proto.enterList = toggle('inList', false)
-proto.enterLink = toggle('inLink', false)
-proto.enterBlock = toggle('inBlock', false)
-
-// Nodes that can interupt a paragraph:
-//
-// ```markdown
-// A paragraph, followed by a thematic break.
-// ___
-// ```
-//
-// In the above example, the thematic break “interupts” the paragraph.
-proto.interruptParagraph = [
- ['thematicBreak'],
- ['atxHeading'],
- ['fencedCode'],
- ['blockquote'],
- ['html'],
- ['setextHeading', {commonmark: false}],
- ['definition', {commonmark: false}],
- ['footnote', {commonmark: false}]
-]
-
-// Nodes that can interupt a list:
-//
-// ```markdown
-// - One
-// ___
-// ```
-//
-// In the above example, the thematic break “interupts” the list.
-proto.interruptList = [
- ['atxHeading', {pedantic: false}],
- ['fencedCode', {pedantic: false}],
- ['thematicBreak', {pedantic: false}],
- ['definition', {commonmark: false}],
- ['footnote', {commonmark: false}]
-]
-
-// Nodes that can interupt a blockquote:
-//
-// ```markdown
-// > A paragraph.
-// ___
-// ```
-//
-// In the above example, the thematic break “interupts” the blockquote.
-proto.interruptBlockquote = [
- ['indentedCode', {commonmark: true}],
- ['fencedCode', {commonmark: true}],
- ['atxHeading', {commonmark: true}],
- ['setextHeading', {commonmark: true}],
- ['thematicBreak', {commonmark: true}],
- ['html', {commonmark: true}],
- ['list', {commonmark: true}],
- ['definition', {commonmark: false}],
- ['footnote', {commonmark: false}]
-]
-
-// Handlers.
-proto.blockTokenizers = {
- newline: require('./tokenize/newline'),
- indentedCode: require('./tokenize/code-indented'),
- fencedCode: require('./tokenize/code-fenced'),
- blockquote: require('./tokenize/blockquote'),
- atxHeading: require('./tokenize/heading-atx'),
- thematicBreak: require('./tokenize/thematic-break'),
- list: require('./tokenize/list'),
- setextHeading: require('./tokenize/heading-setext'),
- html: require('./tokenize/html-block'),
- footnote: require('./tokenize/footnote-definition'),
- definition: require('./tokenize/definition'),
- table: require('./tokenize/table'),
- paragraph: require('./tokenize/paragraph')
-}
-
-proto.inlineTokenizers = {
- escape: require('./tokenize/escape'),
- autoLink: require('./tokenize/auto-link'),
- url: require('./tokenize/url'),
- html: require('./tokenize/html-inline'),
- link: require('./tokenize/link'),
- reference: require('./tokenize/reference'),
- strong: require('./tokenize/strong'),
- emphasis: require('./tokenize/emphasis'),
- deletion: require('./tokenize/delete'),
- code: require('./tokenize/code-inline'),
- break: require('./tokenize/break'),
- text: require('./tokenize/text')
-}
-
-// Expose precedence.
-proto.blockMethods = keys(proto.blockTokenizers)
-proto.inlineMethods = keys(proto.inlineTokenizers)
-
-// Tokenizers.
-proto.tokenizeBlock = tokenizer('block')
-proto.tokenizeInline = tokenizer('inline')
-proto.tokenizeFactory = tokenizer
-
-// Get all keys in `value`.
-function keys(value) {
- var result = []
- var key
-
- for (key in value) {
- result.push(key)
- }
-
- return result
-}
diff --git a/assets/node_modules/remark-parse/lib/set-options.js b/assets/node_modules/remark-parse/lib/set-options.js
deleted file mode 100644
index 5877099..0000000
--- a/assets/node_modules/remark-parse/lib/set-options.js
+++ /dev/null
@@ -1,46 +0,0 @@
-'use strict'
-
-var xtend = require('xtend')
-var escapes = require('markdown-escapes')
-var defaults = require('./defaults')
-
-module.exports = setOptions
-
-function setOptions(options) {
- var self = this
- var current = self.options
- var key
- var value
-
- if (options == null) {
- options = {}
- } else if (typeof options === 'object') {
- options = xtend(options)
- } else {
- throw new Error('Invalid value `' + options + '` for setting `options`')
- }
-
- for (key in defaults) {
- value = options[key]
-
- if (value == null) {
- value = current[key]
- }
-
- if (
- (key !== 'blocks' && typeof value !== 'boolean') ||
- (key === 'blocks' && typeof value !== 'object')
- ) {
- throw new Error(
- 'Invalid value `' + value + '` for setting `options.' + key + '`'
- )
- }
-
- options[key] = value
- }
-
- self.options = options
- self.escape = escapes(options)
-
- return self
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/auto-link.js b/assets/node_modules/remark-parse/lib/tokenize/auto-link.js
deleted file mode 100644
index c73480f..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/auto-link.js
+++ /dev/null
@@ -1,133 +0,0 @@
-'use strict'
-
-var whitespace = require('is-whitespace-character')
-var decode = require('parse-entities')
-var locate = require('../locate/tag')
-
-module.exports = autoLink
-autoLink.locator = locate
-autoLink.notInLink = true
-
-var lessThan = '<'
-var greaterThan = '>'
-var atSign = '@'
-var slash = '/'
-var mailto = 'mailto:'
-var mailtoLength = mailto.length
-
-function autoLink(eat, value, silent) {
- var self = this
- var subvalue = ''
- var length = value.length
- var index = 0
- var queue = ''
- var hasAtCharacter = false
- var link = ''
- var character
- var now
- var content
- var tokenizers
- var exit
-
- if (value.charAt(0) !== lessThan) {
- return
- }
-
- index++
- subvalue = lessThan
-
- while (index < length) {
- character = value.charAt(index)
-
- if (
- whitespace(character) ||
- character === greaterThan ||
- character === atSign ||
- (character === ':' && value.charAt(index + 1) === slash)
- ) {
- break
- }
-
- queue += character
- index++
- }
-
- if (!queue) {
- return
- }
-
- link += queue
- queue = ''
-
- character = value.charAt(index)
- link += character
- index++
-
- if (character === atSign) {
- hasAtCharacter = true
- } else {
- if (character !== ':' || value.charAt(index + 1) !== slash) {
- return
- }
-
- link += slash
- index++
- }
-
- while (index < length) {
- character = value.charAt(index)
-
- if (whitespace(character) || character === greaterThan) {
- break
- }
-
- queue += character
- index++
- }
-
- character = value.charAt(index)
-
- if (!queue || character !== greaterThan) {
- return
- }
-
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true
- }
-
- link += queue
- content = link
- subvalue += link + character
- now = eat.now()
- now.column++
- now.offset++
-
- if (hasAtCharacter) {
- if (link.slice(0, mailtoLength).toLowerCase() === mailto) {
- content = content.substr(mailtoLength)
- now.column += mailtoLength
- now.offset += mailtoLength
- } else {
- link = mailto + link
- }
- }
-
- // Temporarily remove all tokenizers except text in autolinks.
- tokenizers = self.inlineTokenizers
- self.inlineTokenizers = {text: tokenizers.text}
-
- exit = self.enterLink()
-
- content = self.tokenizeInline(content, now)
-
- self.inlineTokenizers = tokenizers
- exit()
-
- return eat(subvalue)({
- type: 'link',
- title: null,
- url: decode(link, {nonTerminated: false}),
- children: content
- })
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/blockquote.js b/assets/node_modules/remark-parse/lib/tokenize/blockquote.js
deleted file mode 100644
index 2960e85..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/blockquote.js
+++ /dev/null
@@ -1,124 +0,0 @@
-'use strict'
-
-var trim = require('trim')
-var interrupt = require('../util/interrupt')
-
-module.exports = blockquote
-
-var lineFeed = '\n'
-var tab = '\t'
-var space = ' '
-var greaterThan = '>'
-
-function blockquote(eat, value, silent) {
- var self = this
- var offsets = self.offset
- var tokenizers = self.blockTokenizers
- var interruptors = self.interruptBlockquote
- var now = eat.now()
- var currentLine = now.line
- var length = value.length
- var values = []
- var contents = []
- var indents = []
- var add
- var index = 0
- var character
- var rest
- var nextIndex
- var content
- var line
- var startIndex
- var prefixed
- var exit
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== space && character !== tab) {
- break
- }
-
- index++
- }
-
- if (value.charAt(index) !== greaterThan) {
- return
- }
-
- if (silent) {
- return true
- }
-
- index = 0
-
- while (index < length) {
- nextIndex = value.indexOf(lineFeed, index)
- startIndex = index
- prefixed = false
-
- if (nextIndex === -1) {
- nextIndex = length
- }
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== space && character !== tab) {
- break
- }
-
- index++
- }
-
- if (value.charAt(index) === greaterThan) {
- index++
- prefixed = true
-
- if (value.charAt(index) === space) {
- index++
- }
- } else {
- index = startIndex
- }
-
- content = value.slice(index, nextIndex)
-
- if (!prefixed && !trim(content)) {
- index = startIndex
- break
- }
-
- if (!prefixed) {
- rest = value.slice(index)
-
- // Check if the following code contains a possible block.
- if (interrupt(interruptors, tokenizers, self, [eat, rest, true])) {
- break
- }
- }
-
- line = startIndex === index ? content : value.slice(startIndex, nextIndex)
-
- indents.push(index - startIndex)
- values.push(line)
- contents.push(content)
-
- index = nextIndex + 1
- }
-
- index = -1
- length = indents.length
- add = eat(values.join(lineFeed))
-
- while (++index < length) {
- offsets[currentLine] = (offsets[currentLine] || 0) + indents[index]
- currentLine++
- }
-
- exit = self.enterBlock()
- contents = self.tokenizeBlock(contents.join(lineFeed), now)
- exit()
-
- return add({type: 'blockquote', children: contents})
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/break.js b/assets/node_modules/remark-parse/lib/tokenize/break.js
deleted file mode 100644
index b68ca6d..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/break.js
+++ /dev/null
@@ -1,42 +0,0 @@
-'use strict'
-
-var locate = require('../locate/break')
-
-module.exports = hardBreak
-hardBreak.locator = locate
-
-var space = ' '
-var lineFeed = '\n'
-var minBreakLength = 2
-
-function hardBreak(eat, value, silent) {
- var length = value.length
- var index = -1
- var queue = ''
- var character
-
- while (++index < length) {
- character = value.charAt(index)
-
- if (character === lineFeed) {
- if (index < minBreakLength) {
- return
- }
-
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true
- }
-
- queue += character
-
- return eat(queue)({type: 'break'})
- }
-
- if (character !== space) {
- return
- }
-
- queue += character
- }
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/code-fenced.js b/assets/node_modules/remark-parse/lib/tokenize/code-fenced.js
deleted file mode 100644
index 53a7629..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/code-fenced.js
+++ /dev/null
@@ -1,255 +0,0 @@
-'use strict'
-
-var trim = require('trim-trailing-lines')
-
-module.exports = fencedCode
-
-var lineFeed = '\n'
-var tab = '\t'
-var space = ' '
-var tilde = '~'
-var graveAccent = '`'
-
-var minFenceCount = 3
-var tabSize = 4
-
-function fencedCode(eat, value, silent) {
- var self = this
- var gfm = self.options.gfm
- var length = value.length + 1
- var index = 0
- var subvalue = ''
- var fenceCount
- var marker
- var character
- var flag
- var lang
- var meta
- var queue
- var content
- var exdentedContent
- var closing
- var exdentedClosing
- var indent
- var now
-
- if (!gfm) {
- return
- }
-
- // Eat initial spacing.
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== space && character !== tab) {
- break
- }
-
- subvalue += character
- index++
- }
-
- indent = index
-
- // Eat the fence.
- character = value.charAt(index)
-
- if (character !== tilde && character !== graveAccent) {
- return
- }
-
- index++
- marker = character
- fenceCount = 1
- subvalue += character
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== marker) {
- break
- }
-
- subvalue += character
- fenceCount++
- index++
- }
-
- if (fenceCount < minFenceCount) {
- return
- }
-
- // Eat spacing before flag.
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== space && character !== tab) {
- break
- }
-
- subvalue += character
- index++
- }
-
- // Eat flag.
- flag = ''
- queue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (
- character === lineFeed ||
- character === tilde ||
- character === graveAccent
- ) {
- break
- }
-
- if (character === space || character === tab) {
- queue += character
- } else {
- flag += queue + character
- queue = ''
- }
-
- index++
- }
-
- character = value.charAt(index)
-
- if (character && character !== lineFeed) {
- return
- }
-
- if (silent) {
- return true
- }
-
- now = eat.now()
- now.column += subvalue.length
- now.offset += subvalue.length
-
- subvalue += flag
- flag = self.decode.raw(self.unescape(flag), now)
-
- if (queue) {
- subvalue += queue
- }
-
- queue = ''
- closing = ''
- exdentedClosing = ''
- content = ''
- exdentedContent = ''
-
- // Eat content.
- while (index < length) {
- character = value.charAt(index)
- content += closing
- exdentedContent += exdentedClosing
- closing = ''
- exdentedClosing = ''
-
- if (character !== lineFeed) {
- content += character
- exdentedClosing += character
- index++
- continue
- }
-
- // Add the newline to `subvalue` if its the first character. Otherwise,
- // add it to the `closing` queue.
- if (content) {
- closing += character
- exdentedClosing += character
- } else {
- subvalue += character
- }
-
- queue = ''
- index++
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== space) {
- break
- }
-
- queue += character
- index++
- }
-
- closing += queue
- exdentedClosing += queue.slice(indent)
-
- if (queue.length >= tabSize) {
- continue
- }
-
- queue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== marker) {
- break
- }
-
- queue += character
- index++
- }
-
- closing += queue
- exdentedClosing += queue
-
- if (queue.length < fenceCount) {
- continue
- }
-
- queue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== space && character !== tab) {
- break
- }
-
- closing += character
- exdentedClosing += character
- index++
- }
-
- if (!character || character === lineFeed) {
- break
- }
- }
-
- subvalue += content + closing
-
- // Get lang and meta from the flag.
- index = -1
- length = flag.length
-
- while (++index < length) {
- character = flag.charAt(index)
-
- if (character === space || character === tab) {
- if (!lang) {
- lang = flag.slice(0, index)
- }
- } else if (lang) {
- meta = flag.slice(index)
- break
- }
- }
-
- return eat(subvalue)({
- type: 'code',
- lang: lang || flag || null,
- meta: meta || null,
- value: trim(exdentedContent)
- })
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/code-indented.js b/assets/node_modules/remark-parse/lib/tokenize/code-indented.js
deleted file mode 100644
index 53a666f..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/code-indented.js
+++ /dev/null
@@ -1,98 +0,0 @@
-'use strict'
-
-var repeat = require('repeat-string')
-var trim = require('trim-trailing-lines')
-
-module.exports = indentedCode
-
-var lineFeed = '\n'
-var tab = '\t'
-var space = ' '
-
-var tabSize = 4
-var codeIndent = repeat(space, tabSize)
-
-function indentedCode(eat, value, silent) {
- var index = -1
- var length = value.length
- var subvalue = ''
- var content = ''
- var subvalueQueue = ''
- var contentQueue = ''
- var character
- var blankQueue
- var indent
-
- while (++index < length) {
- character = value.charAt(index)
-
- if (indent) {
- indent = false
-
- subvalue += subvalueQueue
- content += contentQueue
- subvalueQueue = ''
- contentQueue = ''
-
- if (character === lineFeed) {
- subvalueQueue = character
- contentQueue = character
- } else {
- subvalue += character
- content += character
-
- while (++index < length) {
- character = value.charAt(index)
-
- if (!character || character === lineFeed) {
- contentQueue = character
- subvalueQueue = character
- break
- }
-
- subvalue += character
- content += character
- }
- }
- } else if (
- character === space &&
- value.charAt(index + 1) === character &&
- value.charAt(index + 2) === character &&
- value.charAt(index + 3) === character
- ) {
- subvalueQueue += codeIndent
- index += 3
- indent = true
- } else if (character === tab) {
- subvalueQueue += character
- indent = true
- } else {
- blankQueue = ''
-
- while (character === tab || character === space) {
- blankQueue += character
- character = value.charAt(++index)
- }
-
- if (character !== lineFeed) {
- break
- }
-
- subvalueQueue += blankQueue + character
- contentQueue += character
- }
- }
-
- if (content) {
- if (silent) {
- return true
- }
-
- return eat(subvalue)({
- type: 'code',
- lang: null,
- meta: null,
- value: trim(content)
- })
- }
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/code-inline.js b/assets/node_modules/remark-parse/lib/tokenize/code-inline.js
deleted file mode 100644
index eef27e6..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/code-inline.js
+++ /dev/null
@@ -1,108 +0,0 @@
-'use strict'
-
-var whitespace = require('is-whitespace-character')
-var locate = require('../locate/code-inline')
-
-module.exports = inlineCode
-inlineCode.locator = locate
-
-var graveAccent = '`'
-
-function inlineCode(eat, value, silent) {
- var length = value.length
- var index = 0
- var queue = ''
- var tickQueue = ''
- var contentQueue
- var subqueue
- var count
- var openingCount
- var subvalue
- var character
- var found
- var next
-
- while (index < length) {
- if (value.charAt(index) !== graveAccent) {
- break
- }
-
- queue += graveAccent
- index++
- }
-
- if (!queue) {
- return
- }
-
- subvalue = queue
- openingCount = index
- queue = ''
- next = value.charAt(index)
- count = 0
-
- while (index < length) {
- character = next
- next = value.charAt(index + 1)
-
- if (character === graveAccent) {
- count++
- tickQueue += character
- } else {
- count = 0
- queue += character
- }
-
- if (count && next !== graveAccent) {
- if (count === openingCount) {
- subvalue += queue + tickQueue
- found = true
- break
- }
-
- queue += tickQueue
- tickQueue = ''
- }
-
- index++
- }
-
- if (!found) {
- if (openingCount % 2 !== 0) {
- return
- }
-
- queue = ''
- }
-
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true
- }
-
- contentQueue = ''
- subqueue = ''
- length = queue.length
- index = -1
-
- while (++index < length) {
- character = queue.charAt(index)
-
- if (whitespace(character)) {
- subqueue += character
- continue
- }
-
- if (subqueue) {
- if (contentQueue) {
- contentQueue += subqueue
- }
-
- subqueue = ''
- }
-
- contentQueue += character
- }
-
- return eat(subvalue)({type: 'inlineCode', value: contentQueue})
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/definition.js b/assets/node_modules/remark-parse/lib/tokenize/definition.js
deleted file mode 100644
index 9c7dcbb..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/definition.js
+++ /dev/null
@@ -1,275 +0,0 @@
-'use strict'
-
-var whitespace = require('is-whitespace-character')
-var normalize = require('../util/normalize')
-
-module.exports = definition
-definition.notInList = true
-definition.notInBlock = true
-
-var quotationMark = '"'
-var apostrophe = "'"
-var backslash = '\\'
-var lineFeed = '\n'
-var tab = '\t'
-var space = ' '
-var leftSquareBracket = '['
-var rightSquareBracket = ']'
-var leftParenthesis = '('
-var rightParenthesis = ')'
-var colon = ':'
-var lessThan = '<'
-var greaterThan = '>'
-
-function definition(eat, value, silent) {
- var self = this
- var commonmark = self.options.commonmark
- var index = 0
- var length = value.length
- var subvalue = ''
- var beforeURL
- var beforeTitle
- var queue
- var character
- var test
- var identifier
- var url
- var title
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== space && character !== tab) {
- break
- }
-
- subvalue += character
- index++
- }
-
- character = value.charAt(index)
-
- if (character !== leftSquareBracket) {
- return
- }
-
- index++
- subvalue += character
- queue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character === rightSquareBracket) {
- break
- } else if (character === backslash) {
- queue += character
- index++
- character = value.charAt(index)
- }
-
- queue += character
- index++
- }
-
- if (
- !queue ||
- value.charAt(index) !== rightSquareBracket ||
- value.charAt(index + 1) !== colon
- ) {
- return
- }
-
- identifier = queue
- subvalue += queue + rightSquareBracket + colon
- index = subvalue.length
- queue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== tab && character !== space && character !== lineFeed) {
- break
- }
-
- subvalue += character
- index++
- }
-
- character = value.charAt(index)
- queue = ''
- beforeURL = subvalue
-
- if (character === lessThan) {
- index++
-
- while (index < length) {
- character = value.charAt(index)
-
- if (!isEnclosedURLCharacter(character)) {
- break
- }
-
- queue += character
- index++
- }
-
- character = value.charAt(index)
-
- if (character === isEnclosedURLCharacter.delimiter) {
- subvalue += lessThan + queue + character
- index++
- } else {
- if (commonmark) {
- return
- }
-
- index -= queue.length + 1
- queue = ''
- }
- }
-
- if (!queue) {
- while (index < length) {
- character = value.charAt(index)
-
- if (!isUnclosedURLCharacter(character)) {
- break
- }
-
- queue += character
- index++
- }
-
- subvalue += queue
- }
-
- if (!queue) {
- return
- }
-
- url = queue
- queue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== tab && character !== space && character !== lineFeed) {
- break
- }
-
- queue += character
- index++
- }
-
- character = value.charAt(index)
- test = null
-
- if (character === quotationMark) {
- test = quotationMark
- } else if (character === apostrophe) {
- test = apostrophe
- } else if (character === leftParenthesis) {
- test = rightParenthesis
- }
-
- if (!test) {
- queue = ''
- index = subvalue.length
- } else if (queue) {
- subvalue += queue + character
- index = subvalue.length
- queue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character === test) {
- break
- }
-
- if (character === lineFeed) {
- index++
- character = value.charAt(index)
-
- if (character === lineFeed || character === test) {
- return
- }
-
- queue += lineFeed
- }
-
- queue += character
- index++
- }
-
- character = value.charAt(index)
-
- if (character !== test) {
- return
- }
-
- beforeTitle = subvalue
- subvalue += queue + character
- index++
- title = queue
- queue = ''
- } else {
- return
- }
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== tab && character !== space) {
- break
- }
-
- subvalue += character
- index++
- }
-
- character = value.charAt(index)
-
- if (!character || character === lineFeed) {
- if (silent) {
- return true
- }
-
- beforeURL = eat(beforeURL).test().end
- url = self.decode.raw(self.unescape(url), beforeURL, {nonTerminated: false})
-
- if (title) {
- beforeTitle = eat(beforeTitle).test().end
- title = self.decode.raw(self.unescape(title), beforeTitle)
- }
-
- return eat(subvalue)({
- type: 'definition',
- identifier: normalize(identifier),
- label: identifier,
- title: title || null,
- url: url
- })
- }
-}
-
-// Check if `character` can be inside an enclosed URI.
-function isEnclosedURLCharacter(character) {
- return (
- character !== greaterThan &&
- character !== leftSquareBracket &&
- character !== rightSquareBracket
- )
-}
-
-isEnclosedURLCharacter.delimiter = greaterThan
-
-// Check if `character` can be inside an unclosed URI.
-function isUnclosedURLCharacter(character) {
- return (
- character !== leftSquareBracket &&
- character !== rightSquareBracket &&
- !whitespace(character)
- )
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/delete.js b/assets/node_modules/remark-parse/lib/tokenize/delete.js
deleted file mode 100644
index 3513634..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/delete.js
+++ /dev/null
@@ -1,60 +0,0 @@
-'use strict'
-
-var whitespace = require('is-whitespace-character')
-var locate = require('../locate/delete')
-
-module.exports = strikethrough
-strikethrough.locator = locate
-
-var tilde = '~'
-var fence = '~~'
-
-function strikethrough(eat, value, silent) {
- var self = this
- var character = ''
- var previous = ''
- var preceding = ''
- var subvalue = ''
- var index
- var length
- var now
-
- if (
- !self.options.gfm ||
- value.charAt(0) !== tilde ||
- value.charAt(1) !== tilde ||
- whitespace(value.charAt(2))
- ) {
- return
- }
-
- index = 1
- length = value.length
- now = eat.now()
- now.column += 2
- now.offset += 2
-
- while (++index < length) {
- character = value.charAt(index)
-
- if (
- character === tilde &&
- previous === tilde &&
- (!preceding || !whitespace(preceding))
- ) {
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true
- }
-
- return eat(fence + subvalue + fence)({
- type: 'delete',
- children: self.tokenizeInline(subvalue, now)
- })
- }
-
- subvalue += previous
- preceding = previous
- previous = character
- }
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/emphasis.js b/assets/node_modules/remark-parse/lib/tokenize/emphasis.js
deleted file mode 100644
index 2cbfd31..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/emphasis.js
+++ /dev/null
@@ -1,86 +0,0 @@
-'use strict'
-
-var trim = require('trim')
-var word = require('is-word-character')
-var whitespace = require('is-whitespace-character')
-var locate = require('../locate/emphasis')
-
-module.exports = emphasis
-emphasis.locator = locate
-
-var asterisk = '*'
-var underscore = '_'
-var backslash = '\\'
-
-function emphasis(eat, value, silent) {
- var self = this
- var index = 0
- var character = value.charAt(index)
- var now
- var pedantic
- var marker
- var queue
- var subvalue
- var length
- var prev
-
- if (character !== asterisk && character !== underscore) {
- return
- }
-
- pedantic = self.options.pedantic
- subvalue = character
- marker = character
- length = value.length
- index++
- queue = ''
- character = ''
-
- if (pedantic && whitespace(value.charAt(index))) {
- return
- }
-
- while (index < length) {
- prev = character
- character = value.charAt(index)
-
- if (character === marker && (!pedantic || !whitespace(prev))) {
- character = value.charAt(++index)
-
- if (character !== marker) {
- if (!trim(queue) || prev === marker) {
- return
- }
-
- if (!pedantic && marker === underscore && word(character)) {
- queue += marker
- continue
- }
-
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true
- }
-
- now = eat.now()
- now.column++
- now.offset++
-
- return eat(subvalue + queue + marker)({
- type: 'emphasis',
- children: self.tokenizeInline(queue, now)
- })
- }
-
- queue += marker
- }
-
- if (!pedantic && character === backslash) {
- queue += character
- character = value.charAt(++index)
- }
-
- queue += character
- index++
- }
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/escape.js b/assets/node_modules/remark-parse/lib/tokenize/escape.js
deleted file mode 100644
index 1cac353..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/escape.js
+++ /dev/null
@@ -1,34 +0,0 @@
-'use strict'
-
-var locate = require('../locate/escape')
-
-module.exports = escape
-escape.locator = locate
-
-var lineFeed = '\n'
-var backslash = '\\'
-
-function escape(eat, value, silent) {
- var self = this
- var character
- var node
-
- if (value.charAt(0) === backslash) {
- character = value.charAt(1)
-
- if (self.escape.indexOf(character) !== -1) {
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true
- }
-
- if (character === lineFeed) {
- node = {type: 'break'}
- } else {
- node = {type: 'text', value: character}
- }
-
- return eat(backslash + character)(node)
- }
- }
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/footnote-definition.js b/assets/node_modules/remark-parse/lib/tokenize/footnote-definition.js
deleted file mode 100644
index 62d8ce7..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/footnote-definition.js
+++ /dev/null
@@ -1,186 +0,0 @@
-'use strict'
-
-var whitespace = require('is-whitespace-character')
-var normalize = require('../util/normalize')
-
-module.exports = footnoteDefinition
-footnoteDefinition.notInList = true
-footnoteDefinition.notInBlock = true
-
-var backslash = '\\'
-var lineFeed = '\n'
-var tab = '\t'
-var space = ' '
-var leftSquareBracket = '['
-var rightSquareBracket = ']'
-var caret = '^'
-var colon = ':'
-
-var EXPRESSION_INITIAL_TAB = /^( {4}|\t)?/gm
-
-function footnoteDefinition(eat, value, silent) {
- var self = this
- var offsets = self.offset
- var index
- var length
- var subvalue
- var now
- var currentLine
- var content
- var queue
- var subqueue
- var character
- var identifier
- var add
- var exit
-
- if (!self.options.footnotes) {
- return
- }
-
- index = 0
- length = value.length
- subvalue = ''
- now = eat.now()
- currentLine = now.line
-
- while (index < length) {
- character = value.charAt(index)
-
- if (!whitespace(character)) {
- break
- }
-
- subvalue += character
- index++
- }
-
- if (
- value.charAt(index) !== leftSquareBracket ||
- value.charAt(index + 1) !== caret
- ) {
- return
- }
-
- subvalue += leftSquareBracket + caret
- index = subvalue.length
- queue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character === rightSquareBracket) {
- break
- } else if (character === backslash) {
- queue += character
- index++
- character = value.charAt(index)
- }
-
- queue += character
- index++
- }
-
- if (
- !queue ||
- value.charAt(index) !== rightSquareBracket ||
- value.charAt(index + 1) !== colon
- ) {
- return
- }
-
- if (silent) {
- return true
- }
-
- identifier = queue
- subvalue += queue + rightSquareBracket + colon
- index = subvalue.length
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== tab && character !== space) {
- break
- }
-
- subvalue += character
- index++
- }
-
- now.column += subvalue.length
- now.offset += subvalue.length
- queue = ''
- content = ''
- subqueue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character === lineFeed) {
- subqueue = character
- index++
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== lineFeed) {
- break
- }
-
- subqueue += character
- index++
- }
-
- queue += subqueue
- subqueue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== space) {
- break
- }
-
- subqueue += character
- index++
- }
-
- if (subqueue.length === 0) {
- break
- }
-
- queue += subqueue
- }
-
- if (queue) {
- content += queue
- queue = ''
- }
-
- content += character
- index++
- }
-
- subvalue += content
-
- content = content.replace(EXPRESSION_INITIAL_TAB, function(line) {
- offsets[currentLine] = (offsets[currentLine] || 0) + line.length
- currentLine++
-
- return ''
- })
-
- add = eat(subvalue)
-
- exit = self.enterBlock()
- content = self.tokenizeBlock(content, now)
- exit()
-
- return add({
- type: 'footnoteDefinition',
- identifier: normalize(identifier),
- label: identifier,
- children: content
- })
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/heading-atx.js b/assets/node_modules/remark-parse/lib/tokenize/heading-atx.js
deleted file mode 100644
index dfa2849..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/heading-atx.js
+++ /dev/null
@@ -1,135 +0,0 @@
-'use strict'
-
-module.exports = atxHeading
-
-var lineFeed = '\n'
-var tab = '\t'
-var space = ' '
-var numberSign = '#'
-
-var maxFenceCount = 6
-
-function atxHeading(eat, value, silent) {
- var self = this
- var pedantic = self.options.pedantic
- var length = value.length + 1
- var index = -1
- var now = eat.now()
- var subvalue = ''
- var content = ''
- var character
- var queue
- var depth
-
- // Eat initial spacing.
- while (++index < length) {
- character = value.charAt(index)
-
- if (character !== space && character !== tab) {
- index--
- break
- }
-
- subvalue += character
- }
-
- // Eat hashes.
- depth = 0
-
- while (++index <= length) {
- character = value.charAt(index)
-
- if (character !== numberSign) {
- index--
- break
- }
-
- subvalue += character
- depth++
- }
-
- if (depth > maxFenceCount) {
- return
- }
-
- if (!depth || (!pedantic && value.charAt(index + 1) === numberSign)) {
- return
- }
-
- length = value.length + 1
-
- // Eat intermediate white-space.
- queue = ''
-
- while (++index < length) {
- character = value.charAt(index)
-
- if (character !== space && character !== tab) {
- index--
- break
- }
-
- queue += character
- }
-
- // Exit when not in pedantic mode without spacing.
- if (!pedantic && queue.length === 0 && character && character !== lineFeed) {
- return
- }
-
- if (silent) {
- return true
- }
-
- // Eat content.
- subvalue += queue
- queue = ''
- content = ''
-
- while (++index < length) {
- character = value.charAt(index)
-
- if (!character || character === lineFeed) {
- break
- }
-
- if (character !== space && character !== tab && character !== numberSign) {
- content += queue + character
- queue = ''
- continue
- }
-
- while (character === space || character === tab) {
- queue += character
- character = value.charAt(++index)
- }
-
- // `#` without a queue is part of the content.
- if (!pedantic && content && !queue && character === numberSign) {
- content += character
- continue
- }
-
- while (character === numberSign) {
- queue += character
- character = value.charAt(++index)
- }
-
- while (character === space || character === tab) {
- queue += character
- character = value.charAt(++index)
- }
-
- index--
- }
-
- now.column += subvalue.length
- now.offset += subvalue.length
- subvalue += content + queue
-
- return eat(subvalue)({
- type: 'heading',
- depth: depth,
- children: self.tokenizeInline(content, now)
- })
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/heading-setext.js b/assets/node_modules/remark-parse/lib/tokenize/heading-setext.js
deleted file mode 100644
index 1427623..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/heading-setext.js
+++ /dev/null
@@ -1,102 +0,0 @@
-'use strict'
-
-module.exports = setextHeading
-
-var lineFeed = '\n'
-var tab = '\t'
-var space = ' '
-var equalsTo = '='
-var dash = '-'
-
-var maxIndent = 3
-
-var equalsToDepth = 1
-var dashDepth = 2
-
-function setextHeading(eat, value, silent) {
- var self = this
- var now = eat.now()
- var length = value.length
- var index = -1
- var subvalue = ''
- var content
- var queue
- var character
- var marker
- var depth
-
- // Eat initial indentation.
- while (++index < length) {
- character = value.charAt(index)
-
- if (character !== space || index >= maxIndent) {
- index--
- break
- }
-
- subvalue += character
- }
-
- // Eat content.
- content = ''
- queue = ''
-
- while (++index < length) {
- character = value.charAt(index)
-
- if (character === lineFeed) {
- index--
- break
- }
-
- if (character === space || character === tab) {
- queue += character
- } else {
- content += queue + character
- queue = ''
- }
- }
-
- now.column += subvalue.length
- now.offset += subvalue.length
- subvalue += content + queue
-
- // Ensure the content is followed by a newline and a valid marker.
- character = value.charAt(++index)
- marker = value.charAt(++index)
-
- if (character !== lineFeed || (marker !== equalsTo && marker !== dash)) {
- return
- }
-
- subvalue += character
-
- // Eat Setext-line.
- queue = marker
- depth = marker === equalsTo ? equalsToDepth : dashDepth
-
- while (++index < length) {
- character = value.charAt(index)
-
- if (character !== marker) {
- if (character !== lineFeed) {
- return
- }
-
- index--
- break
- }
-
- queue += character
- }
-
- if (silent) {
- return true
- }
-
- return eat(subvalue + queue)({
- type: 'heading',
- depth: depth,
- children: self.tokenizeInline(content, now)
- })
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/html-block.js b/assets/node_modules/remark-parse/lib/tokenize/html-block.js
deleted file mode 100644
index 149a718..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/html-block.js
+++ /dev/null
@@ -1,111 +0,0 @@
-'use strict'
-
-var openCloseTag = require('../util/html').openCloseTag
-
-module.exports = blockHtml
-
-var tab = '\t'
-var space = ' '
-var lineFeed = '\n'
-var lessThan = '<'
-
-var rawOpenExpression = /^<(script|pre|style)(?=(\s|>|$))/i
-var rawCloseExpression = /<\/(script|pre|style)>/i
-var commentOpenExpression = /^<!--/
-var commentCloseExpression = /-->/
-var instructionOpenExpression = /^<\?/
-var instructionCloseExpression = /\?>/
-var directiveOpenExpression = /^<![A-Za-z]/
-var directiveCloseExpression = />/
-var cdataOpenExpression = /^<!\[CDATA\[/
-var cdataCloseExpression = /\]\]>/
-var elementCloseExpression = /^$/
-var otherElementOpenExpression = new RegExp(openCloseTag.source + '\\s*$')
-
-function blockHtml(eat, value, silent) {
- var self = this
- var blocks = self.options.blocks.join('|')
- var elementOpenExpression = new RegExp(
- '^</?(' + blocks + ')(?=(\\s|/?>|$))',
- 'i'
- )
- var length = value.length
- var index = 0
- var next
- var line
- var offset
- var character
- var count
- var sequence
- var subvalue
-
- var sequences = [
- [rawOpenExpression, rawCloseExpression, true],
- [commentOpenExpression, commentCloseExpression, true],
- [instructionOpenExpression, instructionCloseExpression, true],
- [directiveOpenExpression, directiveCloseExpression, true],
- [cdataOpenExpression, cdataCloseExpression, true],
- [elementOpenExpression, elementCloseExpression, true],
- [otherElementOpenExpression, elementCloseExpression, false]
- ]
-
- // Eat initial spacing.
- while (index < length) {
- character = value.charAt(index)
-
- if (character !== tab && character !== space) {
- break
- }
-
- index++
- }
-
- if (value.charAt(index) !== lessThan) {
- return
- }
-
- next = value.indexOf(lineFeed, index + 1)
- next = next === -1 ? length : next
- line = value.slice(index, next)
- offset = -1
- count = sequences.length
-
- while (++offset < count) {
- if (sequences[offset][0].test(line)) {
- sequence = sequences[offset]
- break
- }
- }
-
- if (!sequence) {
- return
- }
-
- if (silent) {
- return sequence[2]
- }
-
- index = next
-
- if (!sequence[1].test(line)) {
- while (index < length) {
- next = value.indexOf(lineFeed, index + 1)
- next = next === -1 ? length : next
- line = value.slice(index + 1, next)
-
- if (sequence[1].test(line)) {
- if (line) {
- index = next
- }
-
- break
- }
-
- index = next
- }
- }
-
- subvalue = value.slice(0, index)
-
- return eat(subvalue)({type: 'html', value: subvalue})
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/html-inline.js b/assets/node_modules/remark-parse/lib/tokenize/html-inline.js
deleted file mode 100644
index cca4fb4..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/html-inline.js
+++ /dev/null
@@ -1,59 +0,0 @@
-'use strict'
-
-var alphabetical = require('is-alphabetical')
-var locate = require('../locate/tag')
-var tag = require('../util/html').tag
-
-module.exports = inlineHTML
-inlineHTML.locator = locate
-
-var lessThan = '<'
-var questionMark = '?'
-var exclamationMark = '!'
-var slash = '/'
-
-var htmlLinkOpenExpression = /^<a /i
-var htmlLinkCloseExpression = /^<\/a>/i
-
-function inlineHTML(eat, value, silent) {
- var self = this
- var length = value.length
- var character
- var subvalue
-
- if (value.charAt(0) !== lessThan || length < 3) {
- return
- }
-
- character = value.charAt(1)
-
- if (
- !alphabetical(character) &&
- character !== questionMark &&
- character !== exclamationMark &&
- character !== slash
- ) {
- return
- }
-
- subvalue = value.match(tag)
-
- if (!subvalue) {
- return
- }
-
- /* istanbul ignore if - not used yet. */
- if (silent) {
- return true
- }
-
- subvalue = subvalue[0]
-
- if (!self.inLink && htmlLinkOpenExpression.test(subvalue)) {
- self.inLink = true
- } else if (self.inLink && htmlLinkCloseExpression.test(subvalue)) {
- self.inLink = false
- }
-
- return eat(subvalue)({type: 'html', value: subvalue})
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/link.js b/assets/node_modules/remark-parse/lib/tokenize/link.js
deleted file mode 100644
index ab4d3fa..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/link.js
+++ /dev/null
@@ -1,381 +0,0 @@
-'use strict'
-
-var whitespace = require('is-whitespace-character')
-var locate = require('../locate/link')
-
-module.exports = link
-link.locator = locate
-
-var lineFeed = '\n'
-var exclamationMark = '!'
-var quotationMark = '"'
-var apostrophe = "'"
-var leftParenthesis = '('
-var rightParenthesis = ')'
-var lessThan = '<'
-var greaterThan = '>'
-var leftSquareBracket = '['
-var backslash = '\\'
-var rightSquareBracket = ']'
-var graveAccent = '`'
-
-function link(eat, value, silent) {
- var self = this
- var subvalue = ''
- var index = 0
- var character = value.charAt(0)
- var pedantic = self.options.pedantic
- var commonmark = self.options.commonmark
- var gfm = self.options.gfm
- var closed
- var count
- var opening
- var beforeURL
- var beforeTitle
- var subqueue
- var hasMarker
- var isImage
- var content
- var marker
- var length
- var title
- var depth
- var queue
- var url
- var now
- var exit
- var node
-
- // Detect whether this is an image.
- if (character === exclamationMark) {
- isImage = true
- subvalue = character
- character = value.charAt(++index)
- }
-
- // Eat the opening.
- if (character !== leftSquareBracket) {
- return
- }
-
- // Exit when this is a link and we’re already inside a link.
- if (!isImage && self.inLink) {
- return
- }
-
- subvalue += character
- queue = ''
- index++
-
- // Eat the content.
- length = value.length
- now = eat.now()
- depth = 0
-
- now.column += index
- now.offset += index
-
- while (index < length) {
- character = value.charAt(index)
- subqueue = character
-
- if (character === graveAccent) {
- // Inline-code in link content.
- count = 1
-
- while (value.charAt(index + 1) === graveAccent) {
- subqueue += character
- index++
- count++
- }
-
- if (!opening) {
- opening = count
- } else if (count >= opening) {
- opening = 0
- }
- } else if (character === backslash) {
- // Allow brackets to be escaped.
- index++
- subqueue += value.charAt(index)
- } else if ((!opening || gfm) && character === leftSquareBracket) {
- // In GFM mode, brackets in code still count. In all other modes,
- // they don’t.
- depth++
- } else if ((!opening || gfm) && character === rightSquareBracket) {
- if (depth) {
- depth--
- } else {
- // Allow white-space between content and url in GFM mode.
- if (!pedantic) {
- while (index < length) {
- character = value.charAt(index + 1)
-
- if (!whitespace(character)) {
- break
- }
-
- subqueue += character
- index++
- }
- }
-
- if (value.charAt(index + 1) !== leftParenthesis) {
- return
- }
-
- subqueue += leftParenthesis
- closed = true
- index++
-
- break
- }
- }
-
- queue += subqueue
- subqueue = ''
- index++
- }
-
- // Eat the content closing.
- if (!closed) {
- return
- }
-
- content = queue
- subvalue += queue + subqueue
- index++
-
- // Eat white-space.
- while (index < length) {
- character = value.charAt(index)
-
- if (!whitespace(character)) {
- break
- }
-
- subvalue += character
- index++
- }
-
- // Eat the URL.
- character = value.charAt(index)
- queue = ''
- beforeURL = subvalue
-
- if (character === lessThan) {
- index++
- beforeURL += lessThan
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character === greaterThan) {
- break
- }
-
- if (commonmark && character === lineFeed) {
- return
- }
-
- queue += character
- index++
- }
-
- if (value.charAt(index) !== greaterThan) {
- return
- }
-
- subvalue += lessThan + queue + greaterThan
- url = queue
- index++
- } else {
- character = null
- subqueue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (
- subqueue &&
- (character === quotationMark ||
- character === apostrophe ||
- (commonmark && character === leftParenthesis))
- ) {
- break
- }
-
- if (whitespace(character)) {
- if (!pedantic) {
- break
- }
-
- subqueue += character
- } else {
- if (character === leftParenthesis) {
- depth++
- } else if (character === rightParenthesis) {
- if (depth === 0) {
- break
- }
-
- depth--
- }
-
- queue += subqueue
- subqueue = ''
-
- if (character === backslash) {
- queue += backslash
- character = value.charAt(++index)
- }
-
- queue += character
- }
-
- index++
- }
-
- subvalue += queue
- url = queue
- index = subvalue.length
- }
-
- // Eat white-space.
- queue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (!whitespace(character)) {
- break
- }
-
- queue += character
- index++
- }
-
- character = value.charAt(index)
- subvalue += queue
-
- // Eat the title.
- if (
- queue &&
- (character === quotationMark ||
- character === apostrophe ||
- (commonmark && character === leftParenthesis))
- ) {
- index++
- subvalue += character
- queue = ''
- marker = character === leftParenthesis ? rightParenthesis : character
- beforeTitle = subvalue
-
- // In commonmark-mode, things are pretty easy: the marker cannot occur
- // inside the title. Non-commonmark does, however, support nested
- // delimiters.
- if (commonmark) {
- while (index < length) {
- character = value.charAt(index)
-
- if (character === marker) {
- break
- }
-
- if (character === backslash) {
- queue += backslash
- character = value.charAt(++index)
- }
-
- index++
- queue += character
- }
-
- character = value.charAt(index)
-
- if (character !== marker) {
- return
- }
-
- title = queue
- subvalue += queue + character
- index++
-
- while (index < length) {
- character = value.charAt(index)
-
- if (!whitespace(character)) {
- break
- }
-
- subvalue += character
- index++
- }
- } else {
- subqueue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character === marker) {
- if (hasMarker) {
- queue += marker + subqueue
- subqueue = ''
- }
-
- hasMarker = true
- } else if (!hasMarker) {
- queue += character
- } else if (character === rightParenthesis) {
- subvalue += queue + marker + subqueue
- title = queue
- break
- } else if (whitespace(character)) {
- subqueue += character
- } else {
- queue += marker + subqueue + character
- subqueue = ''
- hasMarker = false
- }
-
- index++
- }
- }
- }
-
- if (value.charAt(index) !== rightParenthesis) {
- return
- }
-
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true
- }
-
- subvalue += rightParenthesis
-
- url = self.decode.raw(self.unescape(url), eat(beforeURL).test().end, {
- nonTerminated: false
- })
-
- if (title) {
- beforeTitle = eat(beforeTitle).test().end
- title = self.decode.raw(self.unescape(title), beforeTitle)
- }
-
- node = {
- type: isImage ? 'image' : 'link',
- title: title || null,
- url: url
- }
-
- if (isImage) {
- node.alt = self.decode.raw(self.unescape(content), now) || null
- } else {
- exit = self.enterLink()
- node.children = self.tokenizeInline(content, now)
- exit()
- }
-
- return eat(subvalue)(node)
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/list.js b/assets/node_modules/remark-parse/lib/tokenize/list.js
deleted file mode 100644
index 8cdefdc..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/list.js
+++ /dev/null
@@ -1,452 +0,0 @@
-'use strict'
-
-/* eslint-disable max-params */
-
-var trim = require('trim')
-var repeat = require('repeat-string')
-var decimal = require('is-decimal')
-var getIndent = require('../util/get-indentation')
-var removeIndent = require('../util/remove-indentation')
-var interrupt = require('../util/interrupt')
-
-module.exports = list
-
-var asterisk = '*'
-var underscore = '_'
-var plusSign = '+'
-var dash = '-'
-var dot = '.'
-var space = ' '
-var lineFeed = '\n'
-var tab = '\t'
-var rightParenthesis = ')'
-var lowercaseX = 'x'
-
-var tabSize = 4
-var looseListItemExpression = /\n\n(?!\s*$)/
-var taskItemExpression = /^\[([ \t]|x|X)][ \t]/
-var bulletExpression = /^([ \t]*)([*+-]|\d+[.)])( {1,4}(?! )| |\t|$|(?=\n))([^\n]*)/
-var pedanticBulletExpression = /^([ \t]*)([*+-]|\d+[.)])([ \t]+)/
-var initialIndentExpression = /^( {1,4}|\t)?/gm
-
-function list(eat, value, silent) {
- var self = this
- var commonmark = self.options.commonmark
- var pedantic = self.options.pedantic
- var tokenizers = self.blockTokenizers
- var interuptors = self.interruptList
- var index = 0
- var length = value.length
- var start = null
- var size = 0
- var queue
- var ordered
- var character
- var marker
- var nextIndex
- var startIndex
- var prefixed
- var currentMarker
- var content
- var line
- var prevEmpty
- var empty
- var items
- var allLines
- var emptyLines
- var item
- var enterTop
- var exitBlockquote
- var spread = false
- var node
- var now
- var end
- var indented
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character === tab) {
- size += tabSize - (size % tabSize)
- } else if (character === space) {
- size++
- } else {
- break
- }
-
- index++
- }
-
- if (size >= tabSize) {
- return
- }
-
- character = value.charAt(index)
-
- if (character === asterisk || character === plusSign || character === dash) {
- marker = character
- ordered = false
- } else {
- ordered = true
- queue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (!decimal(character)) {
- break
- }
-
- queue += character
- index++
- }
-
- character = value.charAt(index)
-
- if (
- !queue ||
- !(character === dot || (commonmark && character === rightParenthesis))
- ) {
- return
- }
-
- start = parseInt(queue, 10)
- marker = character
- }
-
- character = value.charAt(++index)
-
- if (
- character !== space &&
- character !== tab &&
- (pedantic || (character !== lineFeed && character !== ''))
- ) {
- return
- }
-
- if (silent) {
- return true
- }
-
- index = 0
- items = []
- allLines = []
- emptyLines = []
-
- while (index < length) {
- nextIndex = value.indexOf(lineFeed, index)
- startIndex = index
- prefixed = false
- indented = false
-
- if (nextIndex === -1) {
- nextIndex = length
- }
-
- end = index + tabSize
- size = 0
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character === tab) {
- size += tabSize - (size % tabSize)
- } else if (character === space) {
- size++
- } else {
- break
- }
-
- index++
- }
-
- if (size >= tabSize) {
- indented = true
- }
-
- if (item && size >= item.indent) {
- indented = true
- }
-
- character = value.charAt(index)
- currentMarker = null
-
- if (!indented) {
- if (
- character === asterisk ||
- character === plusSign ||
- character === dash
- ) {
- currentMarker = character
- index++
- size++
- } else {
- queue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (!decimal(character)) {
- break
- }
-
- queue += character
- index++
- }
-
- character = value.charAt(index)
- index++
-
- if (
- queue &&
- (character === dot || (commonmark && character === rightParenthesis))
- ) {
- currentMarker = character
- size += queue.length + 1
- }
- }
-
- if (currentMarker) {
- character = value.charAt(index)
-
- if (character === tab) {
- size += tabSize - (size % tabSize)
- index++
- } else if (character === space) {
- end = index + tabSize
-
- while (index < end) {
- if (value.charAt(index) !== space) {
- break
- }
-
- index++
- size++
- }
-
- if (index === end && value.charAt(index) === space) {
- index -= tabSize - 1
- size -= tabSize - 1
- }
- } else if (character !== lineFeed && character !== '') {
- currentMarker = null
- }
- }
- }
-
- if (currentMarker) {
- if (!pedantic && marker !== currentMarker) {
- break
- }
-
- prefixed = true
- } else {
- if (!commonmark && !indented && value.charAt(startIndex) === space) {
- indented = true
- } else if (commonmark && item) {
- indented = size >= item.indent || size > tabSize
- }
-
- prefixed = false
- index = startIndex
- }
-
- line = value.slice(startIndex, nextIndex)
- content = startIndex === index ? line : value.slice(index, nextIndex)
-
- if (
- currentMarker === asterisk ||
- currentMarker === underscore ||
- currentMarker === dash
- ) {
- if (tokenizers.thematicBreak.call(self, eat, line, true)) {
- break
- }
- }
-
- prevEmpty = empty
- empty = !prefixed && !trim(content).length
-
- if (indented && item) {
- item.value = item.value.concat(emptyLines, line)
- allLines = allLines.concat(emptyLines, line)
- emptyLines = []
- } else if (prefixed) {
- if (emptyLines.length !== 0) {
- spread = true
- item.value.push('')
- item.trail = emptyLines.concat()
- }
-
- item = {
- value: [line],
- indent: size,
- trail: []
- }
-
- items.push(item)
- allLines = allLines.concat(emptyLines, line)
- emptyLines = []
- } else if (empty) {
- if (prevEmpty && !commonmark) {
- break
- }
-
- emptyLines.push(line)
- } else {
- if (prevEmpty) {
- break
- }
-
- if (interrupt(interuptors, tokenizers, self, [eat, line, true])) {
- break
- }
-
- item.value = item.value.concat(emptyLines, line)
- allLines = allLines.concat(emptyLines, line)
- emptyLines = []
- }
-
- index = nextIndex + 1
- }
-
- node = eat(allLines.join(lineFeed)).reset({
- type: 'list',
- ordered: ordered,
- start: start,
- spread: spread,
- children: []
- })
-
- enterTop = self.enterList()
- exitBlockquote = self.enterBlock()
- index = -1
- length = items.length
-
- while (++index < length) {
- item = items[index].value.join(lineFeed)
- now = eat.now()
-
- eat(item)(listItem(self, item, now), node)
-
- item = items[index].trail.join(lineFeed)
-
- if (index !== length - 1) {
- item += lineFeed
- }
-
- eat(item)
- }
-
- enterTop()
- exitBlockquote()
-
- return node
-}
-
-function listItem(ctx, value, position) {
- var offsets = ctx.offset
- var fn = ctx.options.pedantic ? pedanticListItem : normalListItem
- var checked = null
- var task
- var indent
-
- value = fn.apply(null, arguments)
-
- if (ctx.options.gfm) {
- task = value.match(taskItemExpression)
-
- if (task) {
- indent = task[0].length
- checked = task[1].toLowerCase() === lowercaseX
- offsets[position.line] += indent
- value = value.slice(indent)
- }
- }
-
- return {
- type: 'listItem',
- spread: looseListItemExpression.test(value),
- checked: checked,
- children: ctx.tokenizeBlock(value, position)
- }
-}
-
-// Create a list-item using overly simple mechanics.
-function pedanticListItem(ctx, value, position) {
- var offsets = ctx.offset
- var line = position.line
-
- // Remove the list-item’s bullet.
- value = value.replace(pedanticBulletExpression, replacer)
-
- // The initial line was also matched by the below, so we reset the `line`.
- line = position.line
-
- return value.replace(initialIndentExpression, replacer)
-
- // A simple replacer which removed all matches, and adds their length to
- // `offset`.
- function replacer($0) {
- offsets[line] = (offsets[line] || 0) + $0.length
- line++
-
- return ''
- }
-}
-
-// Create a list-item using sane mechanics.
-function normalListItem(ctx, value, position) {
- var offsets = ctx.offset
- var line = position.line
- var max
- var bullet
- var rest
- var lines
- var trimmedLines
- var index
- var length
-
- // Remove the list-item’s bullet.
- value = value.replace(bulletExpression, replacer)
-
- lines = value.split(lineFeed)
-
- trimmedLines = removeIndent(value, getIndent(max).indent).split(lineFeed)
-
- // We replaced the initial bullet with something else above, which was used
- // to trick `removeIndentation` into removing some more characters when
- // possible. However, that could result in the initial line to be stripped
- // more than it should be.
- trimmedLines[0] = rest
-
- offsets[line] = (offsets[line] || 0) + bullet.length
- line++
-
- index = 0
- length = lines.length
-
- while (++index < length) {
- offsets[line] =
- (offsets[line] || 0) + lines[index].length - trimmedLines[index].length
- line++
- }
-
- return trimmedLines.join(lineFeed)
-
- function replacer($0, $1, $2, $3, $4) {
- bullet = $1 + $2 + $3
- rest = $4
-
- // Make sure that the first nine numbered list items can indent with an
- // extra space. That is, when the bullet did not receive an extra final
- // space.
- if (Number($2) < 10 && bullet.length % 2 === 1) {
- $2 = space + $2
- }
-
- max = $1 + repeat(space, $2.length) + $3
-
- return max + rest
- }
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/newline.js b/assets/node_modules/remark-parse/lib/tokenize/newline.js
deleted file mode 100644
index 680020c..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/newline.js
+++ /dev/null
@@ -1,48 +0,0 @@
-'use strict'
-
-var whitespace = require('is-whitespace-character')
-
-module.exports = newline
-
-var lineFeed = '\n'
-
-function newline(eat, value, silent) {
- var character = value.charAt(0)
- var length
- var subvalue
- var queue
- var index
-
- if (character !== lineFeed) {
- return
- }
-
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true
- }
-
- index = 1
- length = value.length
- subvalue = character
- queue = ''
-
- while (index < length) {
- character = value.charAt(index)
-
- if (!whitespace(character)) {
- break
- }
-
- queue += character
-
- if (character === lineFeed) {
- subvalue += queue
- queue = ''
- }
-
- index++
- }
-
- eat(subvalue)
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/paragraph.js b/assets/node_modules/remark-parse/lib/tokenize/paragraph.js
deleted file mode 100644
index 13db0ff..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/paragraph.js
+++ /dev/null
@@ -1,117 +0,0 @@
-'use strict'
-
-var trim = require('trim')
-var decimal = require('is-decimal')
-var trimTrailingLines = require('trim-trailing-lines')
-var interrupt = require('../util/interrupt')
-
-module.exports = paragraph
-
-var tab = '\t'
-var lineFeed = '\n'
-var space = ' '
-
-var tabSize = 4
-
-// Tokenise paragraph.
-function paragraph(eat, value, silent) {
- var self = this
- var settings = self.options
- var commonmark = settings.commonmark
- var gfm = settings.gfm
- var tokenizers = self.blockTokenizers
- var interruptors = self.interruptParagraph
- var index = value.indexOf(lineFeed)
- var length = value.length
- var position
- var subvalue
- var character
- var size
- var now
-
- while (index < length) {
- // Eat everything if there’s no following newline.
- if (index === -1) {
- index = length
- break
- }
-
- // Stop if the next character is NEWLINE.
- if (value.charAt(index + 1) === lineFeed) {
- break
- }
-
- // In commonmark-mode, following indented lines are part of the paragraph.
- if (commonmark) {
- size = 0
- position = index + 1
-
- while (position < length) {
- character = value.charAt(position)
-
- if (character === tab) {
- size = tabSize
- break
- } else if (character === space) {
- size++
- } else {
- break
- }
-
- position++
- }
-
- if (size >= tabSize && character !== lineFeed) {
- index = value.indexOf(lineFeed, index + 1)
- continue
- }
- }
-
- subvalue = value.slice(index + 1)
-
- // Check if the following code contains a possible block.
- if (interrupt(interruptors, tokenizers, self, [eat, subvalue, true])) {
- break
- }
-
- // Break if the following line starts a list, when already in a list, or
- // when in commonmark, or when in gfm mode and the bullet is *not* numeric.
- if (
- tokenizers.list.call(self, eat, subvalue, true) &&
- (self.inList ||
- commonmark ||
- (gfm && !decimal(trim.left(subvalue).charAt(0))))
- ) {
- break
- }
-
- position = index
- index = value.indexOf(lineFeed, index + 1)
-
- if (index !== -1 && trim(value.slice(position, index)) === '') {
- index = position
- break
- }
- }
-
- subvalue = value.slice(0, index)
-
- if (trim(subvalue) === '') {
- eat(subvalue)
-
- return null
- }
-
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true
- }
-
- now = eat.now()
- subvalue = trimTrailingLines(subvalue)
-
- return eat(subvalue)({
- type: 'paragraph',
- children: self.tokenizeInline(subvalue, now)
- })
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/reference.js b/assets/node_modules/remark-parse/lib/tokenize/reference.js
deleted file mode 100644
index 911e35b..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/reference.js
+++ /dev/null
@@ -1,215 +0,0 @@
-'use strict'
-
-var whitespace = require('is-whitespace-character')
-var locate = require('../locate/link')
-var normalize = require('../util/normalize')
-
-module.exports = reference
-reference.locator = locate
-
-var link = 'link'
-var image = 'image'
-var footnote = 'footnote'
-var shortcut = 'shortcut'
-var collapsed = 'collapsed'
-var full = 'full'
-var space = ' '
-var exclamationMark = '!'
-var leftSquareBracket = '['
-var backslash = '\\'
-var rightSquareBracket = ']'
-var caret = '^'
-
-function reference(eat, value, silent) {
- var self = this
- var commonmark = self.options.commonmark
- var character = value.charAt(0)
- var index = 0
- var length = value.length
- var subvalue = ''
- var intro = ''
- var type = link
- var referenceType = shortcut
- var content
- var identifier
- var now
- var node
- var exit
- var queue
- var bracketed
- var depth
-
- // Check whether we’re eating an image.
- if (character === exclamationMark) {
- type = image
- intro = character
- character = value.charAt(++index)
- }
-
- if (character !== leftSquareBracket) {
- return
- }
-
- index++
- intro += character
- queue = ''
-
- // Check whether we’re eating a footnote.
- if (self.options.footnotes && value.charAt(index) === caret) {
- // Exit if `![^` is found, so the `!` will be seen as text after this,
- // and we’ll enter this function again when `[^` is found.
- if (type === image) {
- return
- }
-
- intro += caret
- index++
- type = footnote
- }
-
- // Eat the text.
- depth = 0
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character === leftSquareBracket) {
- bracketed = true
- depth++
- } else if (character === rightSquareBracket) {
- if (!depth) {
- break
- }
-
- depth--
- }
-
- if (character === backslash) {
- queue += backslash
- character = value.charAt(++index)
- }
-
- queue += character
- index++
- }
-
- subvalue = queue
- content = queue
- character = value.charAt(index)
-
- if (character !== rightSquareBracket) {
- return
- }
-
- index++
- subvalue += character
- queue = ''
-
- if (!commonmark) {
- // The original markdown syntax definition explicitly allows for whitespace
- // between the link text and link label; commonmark departs from this, in
- // part to improve support for shortcut reference links
- while (index < length) {
- character = value.charAt(index)
-
- if (!whitespace(character)) {
- break
- }
-
- queue += character
- index++
- }
- }
-
- character = value.charAt(index)
-
- // Inline footnotes cannot have an identifier.
- if (type !== footnote && character === leftSquareBracket) {
- identifier = ''
- queue += character
- index++
-
- while (index < length) {
- character = value.charAt(index)
-
- if (character === leftSquareBracket || character === rightSquareBracket) {
- break
- }
-
- if (character === backslash) {
- identifier += backslash
- character = value.charAt(++index)
- }
-
- identifier += character
- index++
- }
-
- character = value.charAt(index)
-
- if (character === rightSquareBracket) {
- referenceType = identifier ? full : collapsed
- queue += identifier + character
- index++
- } else {
- identifier = ''
- }
-
- subvalue += queue
- queue = ''
- } else {
- if (!content) {
- return
- }
-
- identifier = content
- }
-
- // Brackets cannot be inside the identifier.
- if (referenceType !== full && bracketed) {
- return
- }
-
- subvalue = intro + subvalue
-
- if (type === link && self.inLink) {
- return null
- }
-
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true
- }
-
- if (type === footnote && content.indexOf(space) !== -1) {
- return eat(subvalue)({
- type: footnote,
- children: this.tokenizeInline(content, eat.now())
- })
- }
-
- now = eat.now()
- now.column += intro.length
- now.offset += intro.length
- identifier = referenceType === full ? identifier : content
-
- node = {
- type: type + 'Reference',
- identifier: normalize(identifier),
- label: identifier
- }
-
- if (type === link || type === image) {
- node.referenceType = referenceType
- }
-
- if (type === link) {
- exit = self.enterLink()
- node.children = self.tokenizeInline(content, now)
- exit()
- } else if (type === image) {
- node.alt = self.decode.raw(self.unescape(content), now) || null
- }
-
- return eat(subvalue)(node)
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/strong.js b/assets/node_modules/remark-parse/lib/tokenize/strong.js
deleted file mode 100644
index 3e36462..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/strong.js
+++ /dev/null
@@ -1,85 +0,0 @@
-'use strict'
-
-var trim = require('trim')
-var whitespace = require('is-whitespace-character')
-var locate = require('../locate/strong')
-
-module.exports = strong
-strong.locator = locate
-
-var backslash = '\\'
-var asterisk = '*'
-var underscore = '_'
-
-function strong(eat, value, silent) {
- var self = this
- var index = 0
- var character = value.charAt(index)
- var now
- var pedantic
- var marker
- var queue
- var subvalue
- var length
- var prev
-
- if (
- (character !== asterisk && character !== underscore) ||
- value.charAt(++index) !== character
- ) {
- return
- }
-
- pedantic = self.options.pedantic
- marker = character
- subvalue = marker + marker
- length = value.length
- index++
- queue = ''
- character = ''
-
- if (pedantic && whitespace(value.charAt(index))) {
- return
- }
-
- while (index < length) {
- prev = character
- character = value.charAt(index)
-
- if (
- character === marker &&
- value.charAt(index + 1) === marker &&
- (!pedantic || !whitespace(prev))
- ) {
- character = value.charAt(index + 2)
-
- if (character !== marker) {
- if (!trim(queue)) {
- return
- }
-
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true
- }
-
- now = eat.now()
- now.column += 2
- now.offset += 2
-
- return eat(subvalue + queue + subvalue)({
- type: 'strong',
- children: self.tokenizeInline(queue, now)
- })
- }
- }
-
- if (!pedantic && character === backslash) {
- queue += character
- character = value.charAt(++index)
- }
-
- queue += character
- index++
- }
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/table.js b/assets/node_modules/remark-parse/lib/tokenize/table.js
deleted file mode 100644
index 8a7b434..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/table.js
+++ /dev/null
@@ -1,259 +0,0 @@
-'use strict'
-
-var whitespace = require('is-whitespace-character')
-
-module.exports = table
-
-var tab = '\t'
-var lineFeed = '\n'
-var space = ' '
-var dash = '-'
-var colon = ':'
-var backslash = '\\'
-var graveAccent = '`'
-var verticalBar = '|'
-
-var minColumns = 1
-var minRows = 2
-
-var left = 'left'
-var center = 'center'
-var right = 'right'
-
-function table(eat, value, silent) {
- var self = this
- var index
- var alignments
- var alignment
- var subvalue
- var row
- var length
- var lines
- var queue
- var character
- var hasDash
- var align
- var cell
- var preamble
- var count
- var opening
- var now
- var position
- var lineCount
- var line
- var rows
- var table
- var lineIndex
- var pipeIndex
- var first
-
- // Exit when not in gfm-mode.
- if (!self.options.gfm) {
- return
- }
-
- // Get the rows.
- // Detecting tables soon is hard, so there are some checks for performance
- // here, such as the minimum number of rows, and allowed characters in the
- // alignment row.
- index = 0
- lineCount = 0
- length = value.length + 1
- lines = []
-
- while (index < length) {
- lineIndex = value.indexOf(lineFeed, index)
- pipeIndex = value.indexOf(verticalBar, index + 1)
-
- if (lineIndex === -1) {
- lineIndex = value.length
- }
-
- if (pipeIndex === -1 || pipeIndex > lineIndex) {
- if (lineCount < minRows) {
- return
- }
-
- break
- }
-
- lines.push(value.slice(index, lineIndex))
- lineCount++
- index = lineIndex + 1
- }
-
- // Parse the alignment row.
- subvalue = lines.join(lineFeed)
- alignments = lines.splice(1, 1)[0] || []
- index = 0
- length = alignments.length
- lineCount--
- alignment = false
- align = []
-
- while (index < length) {
- character = alignments.charAt(index)
-
- if (character === verticalBar) {
- hasDash = null
-
- if (alignment === false) {
- if (first === false) {
- return
- }
- } else {
- align.push(alignment)
- alignment = false
- }
-
- first = false
- } else if (character === dash) {
- hasDash = true
- alignment = alignment || null
- } else if (character === colon) {
- if (alignment === left) {
- alignment = center
- } else if (hasDash && alignment === null) {
- alignment = right
- } else {
- alignment = left
- }
- } else if (!whitespace(character)) {
- return
- }
-
- index++
- }
-
- if (alignment !== false) {
- align.push(alignment)
- }
-
- // Exit when without enough columns.
- if (align.length < minColumns) {
- return
- }
-
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true
- }
-
- // Parse the rows.
- position = -1
- rows = []
-
- table = eat(subvalue).reset({type: 'table', align: align, children: rows})
-
- while (++position < lineCount) {
- line = lines[position]
- row = {type: 'tableRow', children: []}
-
- // Eat a newline character when this is not the first row.
- if (position) {
- eat(lineFeed)
- }
-
- // Eat the row.
- eat(line).reset(row, table)
-
- length = line.length + 1
- index = 0
- queue = ''
- cell = ''
- preamble = true
- count = null
- opening = null
-
- while (index < length) {
- character = line.charAt(index)
-
- if (character === tab || character === space) {
- if (cell) {
- queue += character
- } else {
- eat(character)
- }
-
- index++
- continue
- }
-
- if (character === '' || character === verticalBar) {
- if (preamble) {
- eat(character)
- } else {
- if (character && opening) {
- queue += character
- index++
- continue
- }
-
- if ((cell || character) && !preamble) {
- subvalue = cell
-
- if (queue.length > 1) {
- if (character) {
- subvalue += queue.slice(0, queue.length - 1)
- queue = queue.charAt(queue.length - 1)
- } else {
- subvalue += queue
- queue = ''
- }
- }
-
- now = eat.now()
-
- eat(subvalue)(
- {type: 'tableCell', children: self.tokenizeInline(cell, now)},
- row
- )
- }
-
- eat(queue + character)
-
- queue = ''
- cell = ''
- }
- } else {
- if (queue) {
- cell += queue
- queue = ''
- }
-
- cell += character
-
- if (character === backslash && index !== length - 2) {
- cell += line.charAt(index + 1)
- index++
- }
-
- if (character === graveAccent) {
- count = 1
-
- while (line.charAt(index + 1) === character) {
- cell += character
- index++
- count++
- }
-
- if (!opening) {
- opening = count
- } else if (count >= opening) {
- opening = 0
- }
- }
- }
-
- preamble = false
- index++
- }
-
- // Eat the alignment row.
- if (!position) {
- eat(lineFeed + alignments)
- }
- }
-
- return table
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/text.js b/assets/node_modules/remark-parse/lib/tokenize/text.js
deleted file mode 100644
index c9085ee..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/text.js
+++ /dev/null
@@ -1,57 +0,0 @@
-'use strict'
-
-module.exports = text
-
-function text(eat, value, silent) {
- var self = this
- var methods
- var tokenizers
- var index
- var length
- var subvalue
- var position
- var tokenizer
- var name
- var min
- var now
-
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true
- }
-
- methods = self.inlineMethods
- length = methods.length
- tokenizers = self.inlineTokenizers
- index = -1
- min = value.length
-
- while (++index < length) {
- name = methods[index]
-
- if (name === 'text' || !tokenizers[name]) {
- continue
- }
-
- tokenizer = tokenizers[name].locator
-
- if (!tokenizer) {
- eat.file.fail('Missing locator: `' + name + '`')
- }
-
- position = tokenizer.call(self, value, 1)
-
- if (position !== -1 && position < min) {
- min = position
- }
- }
-
- subvalue = value.slice(0, min)
- now = eat.now()
-
- self.decode(subvalue, now, handler)
-
- function handler(content, position, source) {
- eat(source || content)({type: 'text', value: content})
- }
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/thematic-break.js b/assets/node_modules/remark-parse/lib/tokenize/thematic-break.js
deleted file mode 100644
index 6844c8c..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/thematic-break.js
+++ /dev/null
@@ -1,70 +0,0 @@
-'use strict'
-
-module.exports = thematicBreak
-
-var tab = '\t'
-var lineFeed = '\n'
-var space = ' '
-var asterisk = '*'
-var dash = '-'
-var underscore = '_'
-
-var maxCount = 3
-
-function thematicBreak(eat, value, silent) {
- var index = -1
- var length = value.length + 1
- var subvalue = ''
- var character
- var marker
- var markerCount
- var queue
-
- while (++index < length) {
- character = value.charAt(index)
-
- if (character !== tab && character !== space) {
- break
- }
-
- subvalue += character
- }
-
- if (
- character !== asterisk &&
- character !== dash &&
- character !== underscore
- ) {
- return
- }
-
- marker = character
- subvalue += character
- markerCount = 1
- queue = ''
-
- while (++index < length) {
- character = value.charAt(index)
-
- if (character === marker) {
- markerCount++
- subvalue += queue + marker
- queue = ''
- } else if (character === space) {
- queue += character
- } else if (
- markerCount >= maxCount &&
- (!character || character === lineFeed)
- ) {
- subvalue += queue
-
- if (silent) {
- return true
- }
-
- return eat(subvalue)({type: 'thematicBreak'})
- } else {
- return
- }
- }
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenize/url.js b/assets/node_modules/remark-parse/lib/tokenize/url.js
deleted file mode 100644
index ee72e66..0000000
--- a/assets/node_modules/remark-parse/lib/tokenize/url.js
+++ /dev/null
@@ -1,153 +0,0 @@
-'use strict'
-
-var decode = require('parse-entities')
-var whitespace = require('is-whitespace-character')
-var locate = require('../locate/url')
-
-module.exports = url
-url.locator = locate
-url.notInLink = true
-
-var quotationMark = '"'
-var apostrophe = "'"
-var leftParenthesis = '('
-var rightParenthesis = ')'
-var comma = ','
-var dot = '.'
-var colon = ':'
-var semicolon = ';'
-var lessThan = '<'
-var atSign = '@'
-var leftSquareBracket = '['
-var rightSquareBracket = ']'
-
-var http = 'http://'
-var https = 'https://'
-var mailto = 'mailto:'
-
-var protocols = [http, https, mailto]
-
-var protocolsLength = protocols.length
-
-function url(eat, value, silent) {
- var self = this
- var subvalue
- var content
- var character
- var index
- var position
- var protocol
- var match
- var length
- var queue
- var parenCount
- var nextCharacter
- var tokenizers
- var exit
-
- if (!self.options.gfm) {
- return
- }
-
- subvalue = ''
- index = -1
-
- while (++index < protocolsLength) {
- protocol = protocols[index]
- match = value.slice(0, protocol.length)
-
- if (match.toLowerCase() === protocol) {
- subvalue = match
- break
- }
- }
-
- if (!subvalue) {
- return
- }
-
- index = subvalue.length
- length = value.length
- queue = ''
- parenCount = 0
-
- while (index < length) {
- character = value.charAt(index)
-
- if (whitespace(character) || character === lessThan) {
- break
- }
-
- if (
- character === dot ||
- character === comma ||
- character === colon ||
- character === semicolon ||
- character === quotationMark ||
- character === apostrophe ||
- character === rightParenthesis ||
- character === rightSquareBracket
- ) {
- nextCharacter = value.charAt(index + 1)
-
- if (!nextCharacter || whitespace(nextCharacter)) {
- break
- }
- }
-
- if (character === leftParenthesis || character === leftSquareBracket) {
- parenCount++
- }
-
- if (character === rightParenthesis || character === rightSquareBracket) {
- parenCount--
-
- if (parenCount < 0) {
- break
- }
- }
-
- queue += character
- index++
- }
-
- if (!queue) {
- return
- }
-
- subvalue += queue
- content = subvalue
-
- if (protocol === mailto) {
- position = queue.indexOf(atSign)
-
- if (position === -1 || position === length - 1) {
- return
- }
-
- content = content.substr(mailto.length)
- }
-
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true
- }
-
- exit = self.enterLink()
-
- // Temporarily remove all tokenizers except text in url.
- tokenizers = self.inlineTokenizers
- self.inlineTokenizers = {text: tokenizers.text}
-
- content = self.tokenizeInline(content, eat.now())
-
- self.inlineTokenizers = tokenizers
- exit()
-
- return eat(subvalue)({
- type: 'link',
- title: null,
- url: decode(subvalue, {nonTerminated: false}),
- children: content
- })
-}
diff --git a/assets/node_modules/remark-parse/lib/tokenizer.js b/assets/node_modules/remark-parse/lib/tokenizer.js
deleted file mode 100644
index f8eff5c..0000000
--- a/assets/node_modules/remark-parse/lib/tokenizer.js
+++ /dev/null
@@ -1,314 +0,0 @@
-'use strict'
-
-module.exports = factory
-
-// Construct a tokenizer. This creates both `tokenizeInline` and `tokenizeBlock`.
-function factory(type) {
- return tokenize
-
- // Tokenizer for a bound `type`.
- function tokenize(value, location) {
- var self = this
- var offset = self.offset
- var tokens = []
- var methods = self[type + 'Methods']
- var tokenizers = self[type + 'Tokenizers']
- var line = location.line
- var column = location.column
- var index
- var length
- var method
- var name
- var matched
- var valueLength
-
- // Trim white space only lines.
- if (!value) {
- return tokens
- }
-
- // Expose on `eat`.
- eat.now = now
- eat.file = self.file
-
- // Sync initial offset.
- updatePosition('')
-
- // Iterate over `value`, and iterate over all tokenizers. When one eats
- // something, re-iterate with the remaining value. If no tokenizer eats,
- // something failed (should not happen) and an exception is thrown.
- while (value) {
- index = -1
- length = methods.length
- matched = false
-
- while (++index < length) {
- name = methods[index]
- method = tokenizers[name]
-
- if (
- method &&
- /* istanbul ignore next */ (!method.onlyAtStart || self.atStart) &&
- (!method.notInList || !self.inList) &&
- (!method.notInBlock || !self.inBlock) &&
- (!method.notInLink || !self.inLink)
- ) {
- valueLength = value.length
-
- method.apply(self, [eat, value])
-
- matched = valueLength !== value.length
-
- if (matched) {
- break
- }
- }
- }
-
- /* istanbul ignore if */
- if (!matched) {
- self.file.fail(new Error('Infinite loop'), eat.now())
- }
- }
-
- self.eof = now()
-
- return tokens
-
- // Update line, column, and offset based on `value`.
- function updatePosition(subvalue) {
- var lastIndex = -1
- var index = subvalue.indexOf('\n')
-
- while (index !== -1) {
- line++
- lastIndex = index
- index = subvalue.indexOf('\n', index + 1)
- }
-
- if (lastIndex === -1) {
- column += subvalue.length
- } else {
- column = subvalue.length - lastIndex
- }
-
- if (line in offset) {
- if (lastIndex !== -1) {
- column += offset[line]
- } else if (column <= offset[line]) {
- column = offset[line] + 1
- }
- }
- }
-
- // Get offset. Called before the first character is eaten to retrieve the
- // range’s offsets.
- function getOffset() {
- var indentation = []
- var pos = line + 1
-
- // Done. Called when the last character is eaten to retrieve the range’s
- // offsets.
- return function() {
- var last = line + 1
-
- while (pos < last) {
- indentation.push((offset[pos] || 0) + 1)
-
- pos++
- }
-
- return indentation
- }
- }
-
- // Get the current position.
- function now() {
- var pos = {line: line, column: column}
-
- pos.offset = self.toOffset(pos)
-
- return pos
- }
-
- // Store position information for a node.
- function Position(start) {
- this.start = start
- this.end = now()
- }
-
- // Throw when a value is incorrectly eaten. This shouldn’t happen but will
- // throw on new, incorrect rules.
- function validateEat(subvalue) {
- /* istanbul ignore if */
- if (value.substring(0, subvalue.length) !== subvalue) {
- // Capture stack-trace.
- self.file.fail(
- new Error(
- 'Incorrectly eaten value: please report this warning on https://git.io/vg5Ft'
- ),
- now()
- )
- }
- }
-
- // Mark position and patch `node.position`.
- function position() {
- var before = now()
-
- return update
-
- // Add the position to a node.
- function update(node, indent) {
- var prev = node.position
- var start = prev ? prev.start : before
- var combined = []
- var n = prev && prev.end.line
- var l = before.line
-
- node.position = new Position(start)
-
- // If there was already a `position`, this node was merged. Fixing
- // `start` wasn’t hard, but the indent is different. Especially
- // because some information, the indent between `n` and `l` wasn’t
- // tracked. Luckily, that space is (should be?) empty, so we can
- // safely check for it now.
- if (prev && indent && prev.indent) {
- combined = prev.indent
-
- if (n < l) {
- while (++n < l) {
- combined.push((offset[n] || 0) + 1)
- }
-
- combined.push(before.column)
- }
-
- indent = combined.concat(indent)
- }
-
- node.position.indent = indent || []
-
- return node
- }
- }
-
- // Add `node` to `parent`s children or to `tokens`. Performs merges where
- // possible.
- function add(node, parent) {
- var children = parent ? parent.children : tokens
- var prev = children[children.length - 1]
- var fn
-
- if (
- prev &&
- node.type === prev.type &&
- (node.type === 'text' || node.type === 'blockquote') &&
- mergeable(prev) &&
- mergeable(node)
- ) {
- fn = node.type === 'text' ? mergeText : mergeBlockquote
- node = fn.call(self, prev, node)
- }
-
- if (node !== prev) {
- children.push(node)
- }
-
- if (self.atStart && tokens.length !== 0) {
- self.exitStart()
- }
-
- return node
- }
-
- // Remove `subvalue` from `value`. `subvalue` must be at the start of
- // `value`.
- function eat(subvalue) {
- var indent = getOffset()
- var pos = position()
- var current = now()
-
- validateEat(subvalue)
-
- apply.reset = reset
- reset.test = test
- apply.test = test
-
- value = value.substring(subvalue.length)
-
- updatePosition(subvalue)
-
- indent = indent()
-
- return apply
-
- // Add the given arguments, add `position` to the returned node, and
- // return the node.
- function apply(node, parent) {
- return pos(add(pos(node), parent), indent)
- }
-
- // Functions just like apply, but resets the content: the line and
- // column are reversed, and the eaten value is re-added. This is
- // useful for nodes with a single type of content, such as lists and
- // tables. See `apply` above for what parameters are expected.
- function reset() {
- var node = apply.apply(null, arguments)
-
- line = current.line
- column = current.column
- value = subvalue + value
-
- return node
- }
-
- // Test the position, after eating, and reverse to a not-eaten state.
- function test() {
- var result = pos({})
-
- line = current.line
- column = current.column
- value = subvalue + value
-
- return result.position
- }
- }
- }
-}
-
-// Check whether a node is mergeable with adjacent nodes.
-function mergeable(node) {
- var start
- var end
-
- if (node.type !== 'text' || !node.position) {
- return true
- }
-
- start = node.position.start
- end = node.position.end
-
- // Only merge nodes which occupy the same size as their `value`.
- return (
- start.line !== end.line || end.column - start.column === node.value.length
- )
-}
-
-// Merge two text nodes: `node` into `prev`.
-function mergeText(prev, node) {
- prev.value += node.value
-
- return prev
-}
-
-// Merge two blockquotes: `node` into `prev`, unless in CommonMark mode.
-function mergeBlockquote(prev, node) {
- if (this.options.commonmark) {
- return node
- }
-
- prev.children = prev.children.concat(node.children)
-
- return prev
-}
diff --git a/assets/node_modules/remark-parse/lib/unescape.js b/assets/node_modules/remark-parse/lib/unescape.js
deleted file mode 100644
index 90cdb74..0000000
--- a/assets/node_modules/remark-parse/lib/unescape.js
+++ /dev/null
@@ -1,36 +0,0 @@
-'use strict'
-
-module.exports = factory
-
-var backslash = '\\'
-
-// Factory to de-escape a value, based on a list at `key` in `ctx`.
-function factory(ctx, key) {
- return unescape
-
- // De-escape a string using the expression at `key` in `ctx`.
- function unescape(value) {
- var prev = 0
- var index = value.indexOf(backslash)
- var escape = ctx[key]
- var queue = []
- var character
-
- while (index !== -1) {
- queue.push(value.slice(prev, index))
- prev = index + 1
- character = value.charAt(prev)
-
- // If the following character is not a valid escape, add the slash.
- if (!character || escape.indexOf(character) === -1) {
- queue.push(backslash)
- }
-
- index = value.indexOf(backslash, prev + 1)
- }
-
- queue.push(value.slice(prev))
-
- return queue.join('')
- }
-}
diff --git a/assets/node_modules/remark-parse/lib/util/get-indentation.js b/assets/node_modules/remark-parse/lib/util/get-indentation.js
deleted file mode 100644
index 5ab3efd..0000000
--- a/assets/node_modules/remark-parse/lib/util/get-indentation.js
+++ /dev/null
@@ -1,33 +0,0 @@
-'use strict'
-
-module.exports = indentation
-
-var tab = '\t'
-var space = ' '
-
-var spaceSize = 1
-var tabSize = 4
-
-// Gets indentation information for a line.
-function indentation(value) {
- var index = 0
- var indent = 0
- var character = value.charAt(index)
- var stops = {}
- var size
-
- while (character === tab || character === space) {
- size = character === tab ? tabSize : spaceSize
-
- indent += size
-
- if (size > 1) {
- indent = Math.floor(indent / size) * size
- }
-
- stops[indent] = index
- character = value.charAt(++index)
- }
-
- return {indent: indent, stops: stops}
-}
diff --git a/assets/node_modules/remark-parse/lib/util/html.js b/assets/node_modules/remark-parse/lib/util/html.js
deleted file mode 100644
index 49b7a38..0000000
--- a/assets/node_modules/remark-parse/lib/util/html.js
+++ /dev/null
@@ -1,34 +0,0 @@
-'use strict'
-
-var attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*'
-var unquoted = '[^"\'=<>`\\u0000-\\u0020]+'
-var singleQuoted = "'[^']*'"
-var doubleQuoted = '"[^"]*"'
-var attributeValue =
- '(?:' + unquoted + '|' + singleQuoted + '|' + doubleQuoted + ')'
-var attribute =
- '(?:\\s+' + attributeName + '(?:\\s*=\\s*' + attributeValue + ')?)'
-var openTag = '<[A-Za-z][A-Za-z0-9\\-]*' + attribute + '*\\s*\\/?>'
-var closeTag = '<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>'
-var comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->'
-var processing = '<[?].*?[?]>'
-var declaration = '<![A-Za-z]+\\s+[^>]*>'
-var cdata = '<!\\[CDATA\\[[\\s\\S]*?\\]\\]>'
-
-exports.openCloseTag = new RegExp('^(?:' + openTag + '|' + closeTag + ')')
-
-exports.tag = new RegExp(
- '^(?:' +
- openTag +
- '|' +
- closeTag +
- '|' +
- comment +
- '|' +
- processing +
- '|' +
- declaration +
- '|' +
- cdata +
- ')'
-)
diff --git a/assets/node_modules/remark-parse/lib/util/interrupt.js b/assets/node_modules/remark-parse/lib/util/interrupt.js
deleted file mode 100644
index e707c8b..0000000
--- a/assets/node_modules/remark-parse/lib/util/interrupt.js
+++ /dev/null
@@ -1,35 +0,0 @@
-'use strict'
-
-module.exports = interrupt
-
-function interrupt(interruptors, tokenizers, ctx, params) {
- var length = interruptors.length
- var index = -1
- var interruptor
- var config
-
- while (++index < length) {
- interruptor = interruptors[index]
- config = interruptor[1] || {}
-
- if (
- config.pedantic !== undefined &&
- config.pedantic !== ctx.options.pedantic
- ) {
- continue
- }
-
- if (
- config.commonmark !== undefined &&
- config.commonmark !== ctx.options.commonmark
- ) {
- continue
- }
-
- if (tokenizers[interruptor[0]].apply(ctx, params)) {
- return true
- }
- }
-
- return false
-}
diff --git a/assets/node_modules/remark-parse/lib/util/normalize.js b/assets/node_modules/remark-parse/lib/util/normalize.js
deleted file mode 100644
index 7057c0a..0000000
--- a/assets/node_modules/remark-parse/lib/util/normalize.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict'
-
-var collapseWhiteSpace = require('collapse-white-space')
-
-module.exports = normalize
-
-// Normalize an identifier. Collapses multiple white space characters into a
-// single space, and removes casing.
-function normalize(value) {
- return collapseWhiteSpace(value).toLowerCase()
-}
diff --git a/assets/node_modules/remark-parse/lib/util/remove-indentation.js b/assets/node_modules/remark-parse/lib/util/remove-indentation.js
deleted file mode 100644
index 06b6a78..0000000
--- a/assets/node_modules/remark-parse/lib/util/remove-indentation.js
+++ /dev/null
@@ -1,77 +0,0 @@
-'use strict'
-
-var trim = require('trim')
-var repeat = require('repeat-string')
-var getIndent = require('./get-indentation')
-
-module.exports = indentation
-
-var tab = '\t'
-var lineFeed = '\n'
-var space = ' '
-var exclamationMark = '!'
-
-// Remove the minimum indent from every line in `value`. Supports both tab,
-// spaced, and mixed indentation (as well as possible).
-function indentation(value, maximum) {
- var values = value.split(lineFeed)
- var position = values.length + 1
- var minIndent = Infinity
- var matrix = []
- var index
- var indentation
- var stops
- var padding
-
- values.unshift(repeat(space, maximum) + exclamationMark)
-
- while (position--) {
- indentation = getIndent(values[position])
-
- matrix[position] = indentation.stops
-
- if (trim(values[position]).length === 0) {
- continue
- }
-
- if (indentation.indent) {
- if (indentation.indent > 0 && indentation.indent < minIndent) {
- minIndent = indentation.indent
- }
- } else {
- minIndent = Infinity
-
- break
- }
- }
-
- if (minIndent !== Infinity) {
- position = values.length
-
- while (position--) {
- stops = matrix[position]
- index = minIndent
-
- while (index && !(index in stops)) {
- index--
- }
-
- if (
- trim(values[position]).length !== 0 &&
- minIndent &&
- index !== minIndent
- ) {
- padding = tab
- } else {
- padding = ''
- }
-
- values[position] =
- padding + values[position].slice(index in stops ? stops[index] + 1 : 0)
- }
- }
-
- values.shift()
-
- return values.join(lineFeed)
-}
diff --git a/assets/node_modules/remark-parse/package.json b/assets/node_modules/remark-parse/package.json
deleted file mode 100644
index eb12799..0000000
--- a/assets/node_modules/remark-parse/package.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "name": "remark-parse",
- "version": "6.0.3",
- "description": "Markdown parser for remark",
- "license": "MIT",
- "keywords": [
- "markdown",
- "abstract",
- "syntax",
- "tree",
- "ast",
- "parse"
- ],
- "homepage": "https://remark.js.org",
- "repository": "https://github.com/remarkjs/remark/tree/master/packages/remark-parse",
- "bugs": "https://github.com/remarkjs/remark/issues",
- "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
- "contributors": [
- "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
- "Eugene Sharygin <eush77@gmail.com>",
- "Junyoung Choi <fluke8259@gmail.com>",
- "Elijah Hamovitz <elijahhamovitz@gmail.com>",
- "Ika <ikatyang@gmail.com>"
- ],
- "files": [
- "index.js",
- "lib"
- ],
- "dependencies": {
- "collapse-white-space": "^1.0.2",
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-whitespace-character": "^1.0.0",
- "is-word-character": "^1.0.0",
- "markdown-escapes": "^1.0.0",
- "parse-entities": "^1.1.0",
- "repeat-string": "^1.5.4",
- "state-toggle": "^1.0.0",
- "trim": "0.0.1",
- "trim-trailing-lines": "^1.0.0",
- "unherit": "^1.0.4",
- "unist-util-remove-position": "^1.0.0",
- "vfile-location": "^2.0.0",
- "xtend": "^4.0.1"
- },
- "devDependencies": {
- "tape": "^4.9.1",
- "unified": "^7.0.0",
- "vfile": "^3.0.0"
- },
- "scripts": {
- "test": "tape test.js"
- },
- "xo": false
-}
diff --git a/assets/node_modules/remark-parse/readme.md b/assets/node_modules/remark-parse/readme.md
deleted file mode 100644
index 554be2a..0000000
--- a/assets/node_modules/remark-parse/readme.md
+++ /dev/null
@@ -1,506 +0,0 @@
-# remark-parse [![Travis][build-badge]][build-status] [![Coverage][coverage-badge]][coverage-status] [![Downloads][dl-badge]][dl] [![Size][size-badge]][size] [![Chat][chat-badge]][chat]
-
-[Parser][] for [**unified**][unified].
-Parses markdown to [**mdast**][mdast] syntax trees.
-Used in the [**remark** processor][processor] but can be used on its own as
-well.
-Can be [extended][extend] to change how markdown is parsed.
-
-* * *
-
-**Announcing the unified collective! 🎉
-[Read more about it on Medium »][announcement]**
-
-## Sponsors
-
-<!--lint ignore no-html maximum-line-length-->
-
-<table>
- <tr valign="top">
- <td width="20%" align="center">
- <a href="https://zeit.co"><img src="https://avatars1.githubusercontent.com/u/14985020?s=400&v=4"></a>
- <br><br>🥇
- <a href="https://zeit.co">ZEIT</a>
- </td>
- <td width="20%" align="center">
- <a href="https://www.gatsbyjs.org"><img src="https://avatars1.githubusercontent.com/u/12551863?s=400&v=4"></a>
- <br><br>🥇
- <a href="https://www.gatsbyjs.org">Gatsby</a></td>
- <td width="20%" align="center">
- <a href="https://compositor.io"><img src="https://avatars1.githubusercontent.com/u/19245838?s=400&v=4"></a>
- <br><br>🥉
- <a href="https://compositor.io">Compositor</a>
- </td>
- <td width="20%" align="center">
- <a href="https://www.holloway.com"><img src="https://avatars1.githubusercontent.com/u/35904294?s=400&v=4"></a>
- <br><br>
- <a href="https://www.holloway.com">Holloway</a>
- </td>
- <td width="20%" align="center">
- <br><br><br><br>
- <a href="https://opencollective.com/unified"><strong>You?</strong>
- </td>
- </tr>
-</table>
-
-## Installation
-
-[npm][]:
-
-```sh
-npm install remark-parse
-```
-
-## Usage
-
-```js
-var unified = require('unified')
-var createStream = require('unified-stream')
-var markdown = require('remark-parse')
-var html = require('remark-html')
-
-var processor = unified()
- .use(markdown, {commonmark: true})
- .use(html)
-
-process.stdin.pipe(createStream(processor)).pipe(process.stdout)
-```
-
-## Table of Contents
-
-* [API](#api)
- * [processor.use(parse\[, options\])](#processoruseparse-options)
- * [parse.Parser](#parseparser)
-* [Extending the Parser](#extending-the-parser)
- * [Parser#blockTokenizers](#parserblocktokenizers)
- * [Parser#blockMethods](#parserblockmethods)
- * [Parser#inlineTokenizers](#parserinlinetokenizers)
- * [Parser#inlineMethods](#parserinlinemethods)
- * [function tokenizer(eat, value, silent)](#function-tokenizereat-value-silent)
- * [tokenizer.locator(value, fromIndex)](#tokenizerlocatorvalue-fromindex)
- * [eat(subvalue)](#eatsubvalue)
- * [add(node\[, parent\])](#addnode-parent)
- * [add.test()](#addtest)
- * [add.reset(node\[, parent\])](#addresetnode-parent)
- * [Turning off a tokenizer](#turning-off-a-tokenizer)
-* [License](#license)
-
-## API
-
-### `processor.use(parse[, options])`
-
-Configure the `processor` to read markdown as input and process
-[**mdast**][mdast] syntax trees.
-
-##### `options`
-
-Options are passed directly, or passed later through [`processor.data()`][data].
-
-##### `options.gfm`
-
-```md
-hello ~~hi~~ world
-```
-
-GFM mode (`boolean`, default: `true`) turns on:
-
-* [Fenced code blocks](https://help.github.com/articles/github-flavored-markdown/#fenced-code-blocks)
-* [Autolinking of URLs](https://help.github.com/articles/github-flavored-markdown/#url-autolinking)
-* [Deletions (strikethrough)](https://help.github.com/articles/github-flavored-markdown/#strikethrough)
-* [Task lists](https://help.github.com/articles/writing-on-github/#task-lists)
-* [Tables](https://help.github.com/articles/github-flavored-markdown/#tables)
-
-##### `options.commonmark`
-
-```md
-This is a paragraph
- and this is also part of the preceding paragraph.
-```
-
-CommonMark mode (`boolean`, default: `false`) allows:
-
-* Empty lines to split blockquotes
-* Parentheses (`(` and `)`) around for link and image titles
-* Any escaped [ASCII-punctuation][escapes] character
-* Closing parenthesis (`)`) as an ordered list marker
-* URL definitions (and footnotes, when enabled) in blockquotes
-
-CommonMark mode disallows:
-
-* Code directly following a paragraph
-* ATX-headings (`# Hash headings`) without spacing after opening hashes
- or and before closing hashes
-* Setext headings (`Underline headings\n---`) when following a paragraph
-* Newlines in link and image titles
-* White space in link and image URLs in auto-links (links in brackets,
- `<` and `>`)
-* Lazy blockquote continuation, lines not preceded by a closing angle
- bracket (`>`), for lists, code, and thematicBreak
-
-##### `options.footnotes`
-
-```md
-Something something[^or something?].
-
-And something else[^1].
-
-[^1]: This reference footnote contains a paragraph...
-
- * ...and a list
-```
-
-Footnotes mode (`boolean`, default: `false`) enables reference footnotes and
-inline footnotes. Both are wrapped in square brackets and preceded by a caret
-(`^`), and can be referenced from inside other footnotes.
-
-##### `options.blocks`
-
-```md
-<block>foo
-</block>
-```
-
-Blocks (`Array.<string>`, default: list of [block HTML elements][blocks])
-exposes let’s users define block-level HTML elements.
-
-##### `options.pedantic`
-
-```md
-Check out some_file_name.txt
-```
-
-Pedantic mode (`boolean`, default: `false`) turns on:
-
-* Emphasis (`_alpha_`) and importance (`__bravo__`) with underscores
- in words
-* Unordered lists with different markers (`*`, `-`, `+`)
-* If `commonmark` is also turned on, ordered lists with different
- markers (`.`, `)`)
-* And pedantic mode removes less spaces in list-items (at most four,
- instead of the whole indent)
-
-### `parse.Parser`
-
-Access to the [parser][], if you need it.
-
-## Extending the Parser
-
-Most often, using transformers to manipulate a syntax tree produces
-the desired output. Sometimes, mainly when introducing new syntactic
-entities with a certain level of precedence, interfacing with the parser
-is necessary.
-
-If the `remark-parse` plugin is used, it adds a [`Parser`][parser] constructor
-to the `processor`. Other plugins can add tokenizers to the parser’s prototype
-to change how markdown is parsed.
-
-The below plugin adds a [tokenizer][] for at-mentions.
-
-```js
-module.exports = mentions
-
-function mentions() {
- var Parser = this.Parser
- var tokenizers = Parser.prototype.inlineTokenizers
- var methods = Parser.prototype.inlineMethods
-
- // Add an inline tokenizer (defined in the following example).
- tokenizers.mention = tokenizeMention
-
- // Run it just before `text`.
- methods.splice(methods.indexOf('text'), 0, 'mention')
-}
-```
-
-### `Parser#blockTokenizers`
-
-An object mapping tokenizer names to [tokenizer][]s. These
-tokenizers (for example: `fencedCode`, `table`, and `paragraph`) eat
-from the start of a value to a line ending.
-
-See `#blockMethods` below for a list of methods that are included by
-default.
-
-### `Parser#blockMethods`
-
-Array of `blockTokenizers` names (`string`) specifying the order in
-which they run.
-
-<!--methods-block start-->
-
-* `newline`
-* `indentedCode`
-* `fencedCode`
-* `blockquote`
-* `atxHeading`
-* `thematicBreak`
-* `list`
-* `setextHeading`
-* `html`
-* `footnote`
-* `definition`
-* `table`
-* `paragraph`
-
-<!--methods-block end-->
-
-### `Parser#inlineTokenizers`
-
-An object mapping tokenizer names to [tokenizer][]s. These tokenizers
-(for example: `url`, `reference`, and `emphasis`) eat from the start
-of a value. To increase performance, they depend on [locator][]s.
-
-See `#inlineMethods` below for a list of methods that are included by
-default.
-
-### `Parser#inlineMethods`
-
-Array of `inlineTokenizers` names (`string`) specifying the order in
-which they run.
-
-<!--methods-inline start-->
-
-* `escape`
-* `autoLink`
-* `url`
-* `html`
-* `link`
-* `reference`
-* `strong`
-* `emphasis`
-* `deletion`
-* `code`
-* `break`
-* `text`
-
-<!--methods-inline end-->
-
-### `function tokenizer(eat, value, silent)`
-
-```js
-tokenizeMention.notInLink = true
-tokenizeMention.locator = locateMention
-
-function tokenizeMention(eat, value, silent) {
- var match = /^@(\w+)/.exec(value)
-
- if (match) {
- if (silent) {
- return true
- }
-
- return eat(match[0])({
- type: 'link',
- url: 'https://social-network/' + match[1],
- children: [{type: 'text', value: match[0]}]
- })
- }
-}
-```
-
-The parser knows two types of tokenizers: block level and inline level.
-Block level tokenizers are the same as inline level tokenizers, with
-the exception that the latter must have a [locator][].
-
-Tokenizers _test_ whether a document starts with a certain syntactic
-entity. In _silent_ mode, they return whether that test passes.
-In _normal_ mode, they consume that token, a process which is called
-“eating”. Locators enable tokenizers to function faster by providing
-information on where the next entity may occur.
-
-###### Signatures
-
-* `Node? = tokenizer(eat, value)`
-* `boolean? = tokenizer(eat, value, silent)`
-
-###### Parameters
-
-* `eat` ([`Function`][eat]) — Eat, when applicable, an entity
-* `value` (`string`) — Value which may start an entity
-* `silent` (`boolean`, optional) — Whether to detect or consume
-
-###### Properties
-
-* `locator` ([`Function`][locator])
- — Required for inline tokenizers
-* `onlyAtStart` (`boolean`)
- — Whether nodes can only be found at the beginning of the document
-* `notInBlock` (`boolean`)
- — Whether nodes cannot be in blockquotes, lists, or footnote
- definitions
-* `notInList` (`boolean`)
- — Whether nodes cannot be in lists
-* `notInLink` (`boolean`)
- — Whether nodes cannot be in links
-
-###### Returns
-
-* In _silent_ mode, whether a node can be found at the start of `value`
-* In _normal_ mode, a node if it can be found at the start of `value`
-
-### `tokenizer.locator(value, fromIndex)`
-
-```js
-function locateMention(value, fromIndex) {
- return value.indexOf('@', fromIndex)
-}
-```
-
-Locators are required for inline tokenization to keep the process
-performant. Locators enable inline tokenizers to function faster by
-providing information on the where the next entity occurs. Locators
-may be wrong, it’s OK if there actually isn’t a node to be found at
-the index they return, but they must skip any nodes.
-
-###### Parameters
-
-* `value` (`string`) — Value which may contain an entity
-* `fromIndex` (`number`) — Position to start searching at
-
-###### Returns
-
-Index at which an entity may start, and `-1` otherwise.
-
-### `eat(subvalue)`
-
-```js
-var add = eat('foo')
-```
-
-Eat `subvalue`, which is a string at the start of the
-[tokenize][tokenizer]d `value` (it’s tracked to ensure the correct
-value is eaten).
-
-###### Parameters
-
-* `subvalue` (`string`) - Value to eat.
-
-###### Returns
-
-[`add`][add].
-
-### `add(node[, parent])`
-
-```js
-var add = eat('foo')
-
-add({type: 'text', value: 'foo'})
-```
-
-Add [positional information][location] to `node` and add it to `parent`.
-
-###### Parameters
-
-* `node` ([`Node`][node]) - Node to patch position on and insert
-* `parent` ([`Node`][node], optional) - Place to add `node` to in
- the syntax tree. Defaults to the currently processed node
-
-###### Returns
-
-The given `node`.
-
-### `add.test()`
-
-Get the [positional information][location] which would be patched on
-`node` by `add`.
-
-###### Returns
-
-[`Location`][location].
-
-### `add.reset(node[, parent])`
-
-`add`, but resets the internal location. Useful for example in
-lists, where the same content is first eaten for a list, and later
-for list items
-
-###### Parameters
-
-* `node` ([`Node`][node]) - Node to patch position on and insert
-* `parent` ([`Node`][node], optional) - Place to add `node` to in
- the syntax tree. Defaults to the currently processed node
-
-###### Returns
-
-The given `node`.
-
-### Turning off a tokenizer
-
-In rare situations, you may want to turn off a tokenizer to avoid parsing
-that syntactic feature. This can be done by replacing the tokenizer from
-your Parser’s `blockTokenizers` (or `blockMethods`) or `inlineTokenizers`
-(or `inlineMethods`).
-
-The following example turns off indented code blocks:
-
-```js
-remarkParse.Parser.prototype.blockTokenizers.indentedCode = indentedCode
-
-function indentedCode() {
- return true
-}
-```
-
-Preferably, just use [this plugin](https://github.com/zestedesavoir/zmarkdown/tree/master/packages/remark-disable-tokenizers).
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/remarkjs/remark/master.svg
-
-[build-status]: https://travis-ci.org/remarkjs/remark
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/remarkjs/remark.svg
-
-[coverage-status]: https://codecov.io/github/remarkjs/remark
-
-[dl-badge]: https://img.shields.io/npm/dm/remark-parse.svg
-
-[dl]: https://www.npmjs.com/package/remark-parse
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/remark-parse.svg
-
-[size]: https://bundlephobia.com/result?p=remark-parse
-
-[chat-badge]: https://img.shields.io/badge/join%20the%20community-on%20spectrum-7b16ff.svg
-
-[chat]: https://spectrum.chat/unified/remark
-
-[license]: https://github.com/remarkjs/remark/blob/master/license
-
-[author]: https://wooorm.com
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[unified]: https://github.com/unifiedjs/unified
-
-[data]: https://github.com/unifiedjs/unified#processordatakey-value
-
-[processor]: https://github.com/remarkjs/remark/blob/master/packages/remark
-
-[mdast]: https://github.com/syntax-tree/mdast
-
-[escapes]: https://spec.commonmark.org/0.28/#backslash-escapes
-
-[node]: https://github.com/syntax-tree/unist#node
-
-[location]: https://github.com/syntax-tree/unist#location
-
-[parser]: https://github.com/unifiedjs/unified#processorparser
-
-[extend]: #extending-the-parser
-
-[tokenizer]: #function-tokenizereat-value-silent
-
-[locator]: #tokenizerlocatorvalue-fromindex
-
-[eat]: #eatsubvalue
-
-[add]: #addnode-parent
-
-[blocks]: https://github.com/remarkjs/remark/blob/master/packages/remark-parse/lib/block-elements.js
-
-[announcement]: https://medium.com/unifiedjs/collectively-evolving-through-crowdsourcing-22c359ea95cc
diff --git a/assets/node_modules/remark-stringify/index.js b/assets/node_modules/remark-stringify/index.js
deleted file mode 100644
index baf7ca4..0000000
--- a/assets/node_modules/remark-stringify/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict'
-
-var unherit = require('unherit')
-var xtend = require('xtend')
-var Compiler = require('./lib/compiler.js')
-
-module.exports = stringify
-stringify.Compiler = Compiler
-
-function stringify(options) {
- var Local = unherit(Compiler)
- Local.prototype.options = xtend(
- Local.prototype.options,
- this.data('settings'),
- options
- )
- this.Compiler = Local
-}
diff --git a/assets/node_modules/remark-stringify/lib/compiler.js b/assets/node_modules/remark-stringify/lib/compiler.js
deleted file mode 100644
index 213314f..0000000
--- a/assets/node_modules/remark-stringify/lib/compiler.js
+++ /dev/null
@@ -1,63 +0,0 @@
-'use strict'
-
-var xtend = require('xtend')
-var toggle = require('state-toggle')
-
-module.exports = Compiler
-
-// Construct a new compiler.
-function Compiler(tree, file) {
- this.inLink = false
- this.inTable = false
- this.tree = tree
- this.file = file
- this.options = xtend(this.options)
- this.setOptions({})
-}
-
-var proto = Compiler.prototype
-
-// Enter and exit helpers. */
-proto.enterLink = toggle('inLink', false)
-proto.enterTable = toggle('inTable', false)
-proto.enterLinkReference = require('./util/enter-link-reference')
-
-// Configuration.
-proto.options = require('./defaults')
-proto.setOptions = require('./set-options')
-
-proto.compile = require('./macro/compile')
-proto.visit = require('./macro/one')
-proto.all = require('./macro/all')
-proto.block = require('./macro/block')
-proto.visitOrderedItems = require('./macro/ordered-items')
-proto.visitUnorderedItems = require('./macro/unordered-items')
-
-// Expose visitors.
-proto.visitors = {
- root: require('./visitors/root'),
- text: require('./visitors/text'),
- heading: require('./visitors/heading'),
- paragraph: require('./visitors/paragraph'),
- blockquote: require('./visitors/blockquote'),
- list: require('./visitors/list'),
- listItem: require('./visitors/list-item'),
- inlineCode: require('./visitors/inline-code'),
- code: require('./visitors/code'),
- html: require('./visitors/html'),
- thematicBreak: require('./visitors/thematic-break'),
- strong: require('./visitors/strong'),
- emphasis: require('./visitors/emphasis'),
- break: require('./visitors/break'),
- delete: require('./visitors/delete'),
- link: require('./visitors/link'),
- linkReference: require('./visitors/link-reference'),
- imageReference: require('./visitors/image-reference'),
- definition: require('./visitors/definition'),
- image: require('./visitors/image'),
- footnote: require('./visitors/footnote'),
- footnoteReference: require('./visitors/footnote-reference'),
- footnoteDefinition: require('./visitors/footnote-definition'),
- table: require('./visitors/table'),
- tableCell: require('./visitors/table-cell')
-}
diff --git a/assets/node_modules/remark-stringify/lib/defaults.js b/assets/node_modules/remark-stringify/lib/defaults.js
deleted file mode 100644
index fa19a36..0000000
--- a/assets/node_modules/remark-stringify/lib/defaults.js
+++ /dev/null
@@ -1,28 +0,0 @@
-'use strict'
-
-module.exports = {
- gfm: true,
- commonmark: false,
- pedantic: false,
- entities: 'false',
- setext: false,
- closeAtx: false,
- looseTable: false,
- spacedTable: true,
- paddedTable: true,
- stringLength: stringLength,
- incrementListMarker: true,
- fences: false,
- fence: '`',
- bullet: '-',
- listItemIndent: 'tab',
- rule: '*',
- ruleSpaces: true,
- ruleRepetition: 3,
- strong: '*',
- emphasis: '_'
-}
-
-function stringLength(value) {
- return value.length
-}
diff --git a/assets/node_modules/remark-stringify/lib/escape.js b/assets/node_modules/remark-stringify/lib/escape.js
deleted file mode 100644
index a0d966e..0000000
--- a/assets/node_modules/remark-stringify/lib/escape.js
+++ /dev/null
@@ -1,299 +0,0 @@
-'use strict'
-
-var decimal = require('is-decimal')
-var alphanumeric = require('is-alphanumeric')
-var whitespace = require('is-whitespace-character')
-var escapes = require('markdown-escapes')
-var prefix = require('./util/entity-prefix-length')
-
-module.exports = factory
-
-var tab = '\t'
-var lineFeed = '\n'
-var space = ' '
-var numberSign = '#'
-var ampersand = '&'
-var leftParenthesis = '('
-var rightParenthesis = ')'
-var asterisk = '*'
-var plusSign = '+'
-var dash = '-'
-var dot = '.'
-var colon = ':'
-var lessThan = '<'
-var greaterThan = '>'
-var leftSquareBracket = '['
-var backslash = '\\'
-var rightSquareBracket = ']'
-var underscore = '_'
-var graveAccent = '`'
-var verticalBar = '|'
-var tilde = '~'
-var exclamationMark = '!'
-
-var entities = {
- '<': '&lt;',
- ':': '&#x3A;',
- '&': '&amp;',
- '|': '&#x7C;',
- '~': '&#x7E;'
-}
-
-var shortcut = 'shortcut'
-var mailto = 'mailto'
-var https = 'https'
-var http = 'http'
-
-var blankExpression = /\n\s*$/
-
-// Factory to escape characters.
-function factory(options) {
- return escape
-
- // Escape punctuation characters in a node’s value.
- function escape(value, node, parent) {
- var self = this
- var gfm = options.gfm
- var commonmark = options.commonmark
- var pedantic = options.pedantic
- var markers = commonmark ? [dot, rightParenthesis] : [dot]
- var siblings = parent && parent.children
- var index = siblings && siblings.indexOf(node)
- var prev = siblings && siblings[index - 1]
- var next = siblings && siblings[index + 1]
- var length = value.length
- var escapable = escapes(options)
- var position = -1
- var queue = []
- var escaped = queue
- var afterNewLine
- var character
- var wordCharBefore
- var wordCharAfter
- var offset
- var replace
-
- if (prev) {
- afterNewLine = text(prev) && blankExpression.test(prev.value)
- } else {
- afterNewLine =
- !parent || parent.type === 'root' || parent.type === 'paragraph'
- }
-
- while (++position < length) {
- character = value.charAt(position)
- replace = false
-
- if (character === '\n') {
- afterNewLine = true
- } else if (
- character === backslash ||
- character === graveAccent ||
- character === asterisk ||
- (character === exclamationMark &&
- value.charAt(position + 1) === leftSquareBracket) ||
- character === leftSquareBracket ||
- character === lessThan ||
- (character === ampersand && prefix(value.slice(position)) > 0) ||
- (character === rightSquareBracket && self.inLink) ||
- (gfm && character === tilde && value.charAt(position + 1) === tilde) ||
- (gfm &&
- character === verticalBar &&
- (self.inTable || alignment(value, position))) ||
- (character === underscore &&
- // Delegate leading/trailing underscores to the multinode version below.
- position > 0 &&
- position < length - 1 &&
- (pedantic ||
- !alphanumeric(value.charAt(position - 1)) ||
- !alphanumeric(value.charAt(position + 1)))) ||
- (gfm && !self.inLink && character === colon && protocol(queue.join('')))
- ) {
- replace = true
- } else if (afterNewLine) {
- if (
- character === greaterThan ||
- character === numberSign ||
- character === asterisk ||
- character === dash ||
- character === plusSign
- ) {
- replace = true
- } else if (decimal(character)) {
- offset = position + 1
-
- while (offset < length) {
- if (!decimal(value.charAt(offset))) {
- break
- }
-
- offset++
- }
-
- if (markers.indexOf(value.charAt(offset)) !== -1) {
- next = value.charAt(offset + 1)
-
- if (!next || next === space || next === tab || next === lineFeed) {
- queue.push(value.slice(position, offset))
- position = offset
- character = value.charAt(position)
- replace = true
- }
- }
- }
- }
-
- if (afterNewLine && !whitespace(character)) {
- afterNewLine = false
- }
-
- queue.push(replace ? one(character) : character)
- }
-
- // Multi-node versions.
- if (siblings && text(node)) {
- // Check for an opening parentheses after a link-reference (which can be
- // joined by white-space).
- if (prev && prev.referenceType === shortcut) {
- position = -1
- length = escaped.length
-
- while (++position < length) {
- character = escaped[position]
-
- if (character === space || character === tab) {
- continue
- }
-
- if (character === leftParenthesis || character === colon) {
- escaped[position] = one(character)
- }
-
- break
- }
-
- // If the current node is all spaces / tabs, preceded by a shortcut,
- // and followed by a text starting with `(`, escape it.
- if (
- text(next) &&
- position === length &&
- next.value.charAt(0) === leftParenthesis
- ) {
- escaped.push(backslash)
- }
- }
-
- // Ensure non-auto-links are not seen as links. This pattern needs to
- // check the preceding nodes too.
- if (
- gfm &&
- !self.inLink &&
- text(prev) &&
- value.charAt(0) === colon &&
- protocol(prev.value.slice(-6))
- ) {
- escaped[0] = one(colon)
- }
-
- // Escape ampersand if it would otherwise start an entity.
- if (
- text(next) &&
- value.charAt(length - 1) === ampersand &&
- prefix(ampersand + next.value) !== 0
- ) {
- escaped[escaped.length - 1] = one(ampersand)
- }
-
- // Escape exclamation marks immediately followed by links.
- if (
- next &&
- next.type === 'link' &&
- value.charAt(length - 1) === exclamationMark
- ) {
- escaped[escaped.length - 1] = one(exclamationMark)
- }
-
- // Escape double tildes in GFM.
- if (
- gfm &&
- text(next) &&
- value.charAt(length - 1) === tilde &&
- next.value.charAt(0) === tilde
- ) {
- escaped.splice(escaped.length - 1, 0, backslash)
- }
-
- // Escape underscores, but not mid-word (unless in pedantic mode).
- wordCharBefore = text(prev) && alphanumeric(prev.value.slice(-1))
- wordCharAfter = text(next) && alphanumeric(next.value.charAt(0))
-
- if (length === 1) {
- if (
- value === underscore &&
- (pedantic || !wordCharBefore || !wordCharAfter)
- ) {
- escaped.unshift(backslash)
- }
- } else {
- if (
- value.charAt(0) === underscore &&
- (pedantic || !wordCharBefore || !alphanumeric(value.charAt(1)))
- ) {
- escaped.unshift(backslash)
- }
-
- if (
- value.charAt(length - 1) === underscore &&
- (pedantic ||
- !wordCharAfter ||
- !alphanumeric(value.charAt(length - 2)))
- ) {
- escaped.splice(escaped.length - 1, 0, backslash)
- }
- }
- }
-
- return escaped.join('')
-
- function one(character) {
- return escapable.indexOf(character) === -1
- ? entities[character]
- : backslash + character
- }
- }
-}
-
-// Check if `index` in `value` is inside an alignment row.
-function alignment(value, index) {
- var start = value.lastIndexOf(lineFeed, index)
- var end = value.indexOf(lineFeed, index)
- var char
-
- end = end === -1 ? value.length : end
-
- while (++start < end) {
- char = value.charAt(start)
-
- if (
- char !== colon &&
- char !== dash &&
- char !== space &&
- char !== verticalBar
- ) {
- return false
- }
- }
-
- return true
-}
-
-// Check if `node` is a text node.
-function text(node) {
- return node && node.type === 'text'
-}
-
-// Check if `value` ends in a protocol.
-function protocol(value) {
- var val = value.slice(-6).toLowerCase()
- return val === mailto || val.slice(-5) === https || val.slice(-4) === http
-}
diff --git a/assets/node_modules/remark-stringify/lib/macro/all.js b/assets/node_modules/remark-stringify/lib/macro/all.js
deleted file mode 100644
index ae470ee..0000000
--- a/assets/node_modules/remark-stringify/lib/macro/all.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict'
-
-module.exports = all
-
-// Visit all children of `parent`.
-function all(parent) {
- var self = this
- var children = parent.children
- var length = children.length
- var results = []
- var index = -1
-
- while (++index < length) {
- results[index] = self.visit(children[index], parent)
- }
-
- return results
-}
diff --git a/assets/node_modules/remark-stringify/lib/macro/block.js b/assets/node_modules/remark-stringify/lib/macro/block.js
deleted file mode 100644
index ede130e..0000000
--- a/assets/node_modules/remark-stringify/lib/macro/block.js
+++ /dev/null
@@ -1,54 +0,0 @@
-'use strict'
-
-module.exports = block
-
-var lineFeed = '\n'
-
-var blank = lineFeed + lineFeed
-var triple = blank + lineFeed
-var comment = blank + '<!---->' + blank
-
-// Stringify a block node with block children (e.g., `root` or `blockquote`).
-// Knows about code following a list, or adjacent lists with similar bullets,
-// and places an extra line feed between them.
-function block(node) {
- var self = this
- var options = self.options
- var fences = options.fences
- var gap = options.commonmark ? comment : triple
- var values = []
- var children = node.children
- var length = children.length
- var index = -1
- var prev
- var child
-
- while (++index < length) {
- prev = child
- child = children[index]
-
- if (prev) {
- // A list preceding another list that are equally ordered, or a
- // list preceding an indented code block, need a gap between them,
- // so as not to see them as one list, or content of the list,
- // respectively.
- //
- // In commonmark, only something that breaks both up can do that,
- // so we opt for an empty, invisible comment. In other flavours,
- // two blank lines are fine.
- if (
- prev.type === 'list' &&
- ((child.type === 'list' && prev.ordered === child.ordered) ||
- (child.type === 'code' && (!child.lang && !fences)))
- ) {
- values.push(gap)
- } else {
- values.push(blank)
- }
- }
-
- values.push(self.visit(child, node))
- }
-
- return values.join('')
-}
diff --git a/assets/node_modules/remark-stringify/lib/macro/compile.js b/assets/node_modules/remark-stringify/lib/macro/compile.js
deleted file mode 100644
index 8c85304..0000000
--- a/assets/node_modules/remark-stringify/lib/macro/compile.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict'
-
-var compact = require('mdast-util-compact')
-
-module.exports = compile
-
-// Stringify the given tree.
-function compile() {
- return this.visit(compact(this.tree, this.options.commonmark))
-}
diff --git a/assets/node_modules/remark-stringify/lib/macro/one.js b/assets/node_modules/remark-stringify/lib/macro/one.js
deleted file mode 100644
index 38e5782..0000000
--- a/assets/node_modules/remark-stringify/lib/macro/one.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict'
-
-module.exports = one
-
-function one(node, parent) {
- var self = this
- var visitors = self.visitors
-
- // Fail on unknown nodes.
- if (typeof visitors[node.type] !== 'function') {
- self.file.fail(
- new Error(
- 'Missing compiler for node of type `' + node.type + '`: `' + node + '`'
- ),
- node
- )
- }
-
- return visitors[node.type].call(self, node, parent)
-}
diff --git a/assets/node_modules/remark-stringify/lib/macro/ordered-items.js b/assets/node_modules/remark-stringify/lib/macro/ordered-items.js
deleted file mode 100644
index 2e2fee2..0000000
--- a/assets/node_modules/remark-stringify/lib/macro/ordered-items.js
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict'
-
-module.exports = orderedItems
-
-var lineFeed = '\n'
-var dot = '.'
-
-var blank = lineFeed + lineFeed
-
-// Visit ordered list items.
-//
-// Starts the list with
-// `node.start` and increments each following list item
-// bullet by one:
-//
-// 2. foo
-// 3. bar
-//
-// In `incrementListMarker: false` mode, does not increment
-// each marker and stays on `node.start`:
-//
-// 1. foo
-// 1. bar
-function orderedItems(node) {
- var self = this
- var fn = self.visitors.listItem
- var increment = self.options.incrementListMarker
- var values = []
- var start = node.start
- var children = node.children
- var length = children.length
- var index = -1
- var bullet
-
- start = start == null ? 1 : start
-
- while (++index < length) {
- bullet = (increment ? start + index : start) + dot
- values[index] = fn.call(self, children[index], node, index, bullet)
- }
-
- return values.join(node.spread ? blank : lineFeed)
-}
diff --git a/assets/node_modules/remark-stringify/lib/macro/unordered-items.js b/assets/node_modules/remark-stringify/lib/macro/unordered-items.js
deleted file mode 100644
index 4780014..0000000
--- a/assets/node_modules/remark-stringify/lib/macro/unordered-items.js
+++ /dev/null
@@ -1,24 +0,0 @@
-'use strict'
-
-module.exports = unorderedItems
-
-var lineFeed = '\n'
-
-var blank = lineFeed + lineFeed
-
-// Visit unordered list items. Uses `options.bullet` as each item’s bullet.
-function unorderedItems(node) {
- var self = this
- var bullet = self.options.bullet
- var fn = self.visitors.listItem
- var children = node.children
- var length = children.length
- var index = -1
- var values = []
-
- while (++index < length) {
- values[index] = fn.call(self, children[index], node, index, bullet)
- }
-
- return values.join(node.spread ? blank : lineFeed)
-}
diff --git a/assets/node_modules/remark-stringify/lib/set-options.js b/assets/node_modules/remark-stringify/lib/set-options.js
deleted file mode 100644
index 1f5c343..0000000
--- a/assets/node_modules/remark-stringify/lib/set-options.js
+++ /dev/null
@@ -1,160 +0,0 @@
-'use strict'
-
-var xtend = require('xtend')
-var encode = require('stringify-entities')
-var defaults = require('./defaults')
-var escapeFactory = require('./escape')
-var identity = require('./util/identity')
-
-module.exports = setOptions
-
-// Map of applicable enums.
-var maps = {
- entities: {true: true, false: true, numbers: true, escape: true},
- bullet: {'*': true, '-': true, '+': true},
- rule: {'-': true, _: true, '*': true},
- listItemIndent: {tab: true, mixed: true, 1: true},
- emphasis: {_: true, '*': true},
- strong: {_: true, '*': true},
- fence: {'`': true, '~': true}
-}
-
-// Expose `validate`.
-var validate = {
- boolean: validateBoolean,
- string: validateString,
- number: validateNumber,
- function: validateFunction
-}
-
-// Set options. Does not overwrite previously set options.
-function setOptions(options) {
- var self = this
- var current = self.options
- var ruleRepetition
- var key
-
- if (options == null) {
- options = {}
- } else if (typeof options === 'object') {
- options = xtend(options)
- } else {
- throw new Error('Invalid value `' + options + '` for setting `options`')
- }
-
- for (key in defaults) {
- validate[typeof defaults[key]](options, key, current[key], maps[key])
- }
-
- ruleRepetition = options.ruleRepetition
-
- if (ruleRepetition && ruleRepetition < 3) {
- raise(ruleRepetition, 'options.ruleRepetition')
- }
-
- self.encode = encodeFactory(String(options.entities))
- self.escape = escapeFactory(options)
-
- self.options = options
-
- return self
-}
-
-// Validate a value to be boolean. Defaults to `def`. Raises an exception with
-// `context[name]` when not a boolean.
-function validateBoolean(context, name, def) {
- var value = context[name]
-
- if (value == null) {
- value = def
- }
-
- if (typeof value !== 'boolean') {
- raise(value, 'options.' + name)
- }
-
- context[name] = value
-}
-
-// Validate a value to be boolean. Defaults to `def`. Raises an exception with
-// `context[name]` when not a boolean.
-function validateNumber(context, name, def) {
- var value = context[name]
-
- if (value == null) {
- value = def
- }
-
- if (isNaN(value)) {
- raise(value, 'options.' + name)
- }
-
- context[name] = value
-}
-
-// Validate a value to be in `map`. Defaults to `def`. Raises an exception
-// with `context[name]` when not in `map`.
-function validateString(context, name, def, map) {
- var value = context[name]
-
- if (value == null) {
- value = def
- }
-
- value = String(value)
-
- if (!(value in map)) {
- raise(value, 'options.' + name)
- }
-
- context[name] = value
-}
-
-// Validate a value to be function. Defaults to `def`. Raises an exception
-// with `context[name]` when not a function.
-function validateFunction(context, name, def) {
- var value = context[name]
-
- if (value == null) {
- value = def
- }
-
- if (typeof value !== 'function') {
- raise(value, 'options.' + name)
- }
-
- context[name] = value
-}
-
-// Factory to encode HTML entities. Creates a no-operation function when
-// `type` is `'false'`, a function which encodes using named references when
-// `type` is `'true'`, and a function which encodes using numbered references
-// when `type` is `'numbers'`.
-function encodeFactory(type) {
- var options = {}
-
- if (type === 'false') {
- return identity
- }
-
- if (type === 'true') {
- options.useNamedReferences = true
- }
-
- if (type === 'escape') {
- options.escapeOnly = true
- options.useNamedReferences = true
- }
-
- return wrapped
-
- // Encode HTML entities using the bound options.
- function wrapped(value) {
- return encode(value, options)
- }
-}
-
-// Throw an exception with in its `message` `value` and `name`.
-function raise(value, name) {
- throw new Error('Invalid value `' + value + '` for setting `' + name + '`')
-}
diff --git a/assets/node_modules/remark-stringify/lib/util/copy-identifier-encoding.js b/assets/node_modules/remark-stringify/lib/util/copy-identifier-encoding.js
deleted file mode 100644
index a3de269..0000000
--- a/assets/node_modules/remark-stringify/lib/util/copy-identifier-encoding.js
+++ /dev/null
@@ -1,67 +0,0 @@
-'use strict'
-
-var entityPrefixLength = require('./entity-prefix-length')
-
-module.exports = copy
-
-var ampersand = '&'
-
-var punctuationExppresion = /[-!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~_]/
-
-// For shortcut and collapsed reference links, the contents is also an
-// identifier, so we need to restore the original encoding and escaping
-// that were present in the source string.
-//
-// This function takes the unescaped & unencoded value from shortcut’s
-// child nodes and the identifier and encodes the former according to
-// the latter.
-function copy(value, identifier) {
- var length = value.length
- var count = identifier.length
- var result = []
- var position = 0
- var index = 0
- var start
-
- while (index < length) {
- // Take next non-punctuation characters from `value`.
- start = index
-
- while (index < length && !punctuationExppresion.test(value.charAt(index))) {
- index += 1
- }
-
- result.push(value.slice(start, index))
-
- // Advance `position` to the next punctuation character.
- while (
- position < count &&
- !punctuationExppresion.test(identifier.charAt(position))
- ) {
- position += 1
- }
-
- // Take next punctuation characters from `identifier`.
- start = position
-
- while (
- position < count &&
- punctuationExppresion.test(identifier.charAt(position))
- ) {
- if (identifier.charAt(position) === ampersand) {
- position += entityPrefixLength(identifier.slice(position))
- }
-
- position += 1
- }
-
- result.push(identifier.slice(start, position))
-
- // Advance `index` to the next non-punctuation character.
- while (index < length && punctuationExppresion.test(value.charAt(index))) {
- index += 1
- }
- }
-
- return result.join('')
-}
diff --git a/assets/node_modules/remark-stringify/lib/util/enclose-title.js b/assets/node_modules/remark-stringify/lib/util/enclose-title.js
deleted file mode 100644
index f11639f..0000000
--- a/assets/node_modules/remark-stringify/lib/util/enclose-title.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict'
-
-module.exports = enclose
-
-var quotationMark = '"'
-var apostrophe = "'"
-
-// There is currently no way to support nested delimiters across Markdown.pl,
-// CommonMark, and GitHub (RedCarpet). The following code supports Markdown.pl
-// and GitHub.
-// CommonMark is not supported when mixing double- and single quotes inside a
-// title.
-function enclose(title) {
- var delimiter =
- title.indexOf(quotationMark) === -1 ? quotationMark : apostrophe
- return delimiter + title + delimiter
-}
diff --git a/assets/node_modules/remark-stringify/lib/util/enclose-uri.js b/assets/node_modules/remark-stringify/lib/util/enclose-uri.js
deleted file mode 100644
index d162de9..0000000
--- a/assets/node_modules/remark-stringify/lib/util/enclose-uri.js
+++ /dev/null
@@ -1,33 +0,0 @@
-'use strict'
-
-var count = require('ccount')
-
-module.exports = enclose
-
-var leftParenthesis = '('
-var rightParenthesis = ')'
-var lessThan = '<'
-var greaterThan = '>'
-
-var expression = /\s/
-
-// Wrap `url` in angle brackets when needed, or when
-// forced.
-// In links, images, and definitions, the URL part needs
-// to be enclosed when it:
-//
-// - has a length of `0`
-// - contains white-space
-// - has more or less opening than closing parentheses
-function enclose(uri, always) {
- if (
- always ||
- uri.length === 0 ||
- expression.test(uri) ||
- count(uri, leftParenthesis) !== count(uri, rightParenthesis)
- ) {
- return lessThan + uri + greaterThan
- }
-
- return uri
-}
diff --git a/assets/node_modules/remark-stringify/lib/util/enter-link-reference.js b/assets/node_modules/remark-stringify/lib/util/enter-link-reference.js
deleted file mode 100644
index d0fe557..0000000
--- a/assets/node_modules/remark-stringify/lib/util/enter-link-reference.js
+++ /dev/null
@@ -1,33 +0,0 @@
-'use strict'
-
-var identity = require('./identity')
-
-module.exports = enter
-
-// Shortcut and collapsed link references need no escaping and encoding during
-// the processing of child nodes (it must be implied from identifier).
-//
-// This toggler turns encoding and escaping off for shortcut and collapsed
-// references.
-//
-// Implies `enterLink`.
-function enter(compiler, node) {
- var encode = compiler.encode
- var escape = compiler.escape
- var exitLink = compiler.enterLink()
-
- if (node.referenceType !== 'shortcut' && node.referenceType !== 'collapsed') {
- return exitLink
- }
-
- compiler.escape = identity
- compiler.encode = identity
-
- return exit
-
- function exit() {
- compiler.encode = encode
- compiler.escape = escape
- exitLink()
- }
-}
diff --git a/assets/node_modules/remark-stringify/lib/util/entity-prefix-length.js b/assets/node_modules/remark-stringify/lib/util/entity-prefix-length.js
deleted file mode 100644
index 2ba771c..0000000
--- a/assets/node_modules/remark-stringify/lib/util/entity-prefix-length.js
+++ /dev/null
@@ -1,23 +0,0 @@
-'use strict'
-
-var decode = require('parse-entities')
-
-module.exports = length
-
-var ampersand = '&'
-
-// Returns the length of HTML entity that is a prefix of the given string
-// (excluding the ampersand), 0 if it does not start with an entity.
-function length(value) {
- var prefix
-
- /* istanbul ignore if - Currently also tested for at implemention, but we
- * keep it here because that’s proper. */
- if (value.charAt(0) !== ampersand) {
- return 0
- }
-
- prefix = value.split(ampersand, 2).join(ampersand)
-
- return prefix.length - decode(prefix).length
-}
diff --git a/assets/node_modules/remark-stringify/lib/util/identity.js b/assets/node_modules/remark-stringify/lib/util/identity.js
deleted file mode 100644
index 45a34f7..0000000
--- a/assets/node_modules/remark-stringify/lib/util/identity.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-module.exports = identity
-
-function identity(value) {
- return value
-}
diff --git a/assets/node_modules/remark-stringify/lib/util/label.js b/assets/node_modules/remark-stringify/lib/util/label.js
deleted file mode 100644
index 5718d79..0000000
--- a/assets/node_modules/remark-stringify/lib/util/label.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict'
-
-module.exports = label
-
-var leftSquareBracket = '['
-var rightSquareBracket = ']'
-
-var shortcut = 'shortcut'
-var collapsed = 'collapsed'
-
-// Stringify a reference label.
-// Because link references are easily, mistakingly, created (for example,
-// `[foo]`), reference nodes have an extra property depicting how it looked in
-// the original document, so stringification can cause minimal changes.
-function label(node) {
- var type = node.referenceType
-
- if (type === shortcut) {
- return ''
- }
-
- return (
- leftSquareBracket +
- (type === collapsed ? '' : node.label || node.identifier) +
- rightSquareBracket
- )
-}
diff --git a/assets/node_modules/remark-stringify/lib/util/pad.js b/assets/node_modules/remark-stringify/lib/util/pad.js
deleted file mode 100644
index 8f9d085..0000000
--- a/assets/node_modules/remark-stringify/lib/util/pad.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict'
-
-var repeat = require('repeat-string')
-
-module.exports = pad
-
-var lineFeed = '\n'
-var space = ' '
-
-var tabSize = 4
-
-// Pad `value` with `level * tabSize` spaces. Respects lines. Ignores empty
-// lines.
-function pad(value, level) {
- var values = value.split(lineFeed)
- var index = values.length
- var padding = repeat(space, level * tabSize)
-
- while (index--) {
- if (values[index].length !== 0) {
- values[index] = padding + values[index]
- }
- }
-
- return values.join(lineFeed)
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/blockquote.js b/assets/node_modules/remark-stringify/lib/visitors/blockquote.js
deleted file mode 100644
index 6b5187a..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/blockquote.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict'
-
-module.exports = blockquote
-
-var lineFeed = '\n'
-var space = ' '
-var greaterThan = '>'
-
-function blockquote(node) {
- var values = this.block(node).split(lineFeed)
- var result = []
- var length = values.length
- var index = -1
- var value
-
- while (++index < length) {
- value = values[index]
- result[index] = (value ? space : '') + value
- }
-
- return greaterThan + result.join(lineFeed + greaterThan)
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/break.js b/assets/node_modules/remark-stringify/lib/visitors/break.js
deleted file mode 100644
index 86e8c16..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/break.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict'
-
-module.exports = lineBreak
-
-var backslash = '\\'
-var lineFeed = '\n'
-var space = ' '
-
-var commonmark = backslash + lineFeed
-var normal = space + space + lineFeed
-
-function lineBreak() {
- return this.options.commonmark ? commonmark : normal
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/code.js b/assets/node_modules/remark-stringify/lib/visitors/code.js
deleted file mode 100644
index e037858..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/code.js
+++ /dev/null
@@ -1,79 +0,0 @@
-'use strict'
-
-var streak = require('longest-streak')
-var repeat = require('repeat-string')
-var pad = require('../util/pad')
-
-module.exports = code
-
-var lineFeed = '\n'
-var space = ' '
-
-// Stringify code.
-// Creates indented code when:
-//
-// - No language tag exists
-// - Not in `fences: true` mode
-// - A non-empty value exists
-//
-// Otherwise, GFM fenced code is created:
-//
-// ````markdown
-// ```js
-// foo();
-// ```
-// ````
-//
-// When in ``fence: `~` `` mode, uses tildes as fences:
-//
-// ```markdown
-// ~~~js
-// foo();
-// ~~~
-// ```
-//
-// Knows about internal fences:
-//
-// `````markdown
-// ````markdown
-// ```javascript
-// foo();
-// ```
-// ````
-// `````
-function code(node, parent) {
- var self = this
- var value = node.value
- var options = self.options
- var marker = options.fence
- var info = node.lang || ''
- var fence
-
- if (info && node.meta) {
- info += space + node.meta
- }
-
- info = self.encode(self.escape(info, node))
-
- // Without (needed) fences.
- if (!info && !options.fences && value) {
- // Throw when pedantic, in a list item which isn’t compiled using a tab.
- if (
- parent &&
- parent.type === 'listItem' &&
- options.listItemIndent !== 'tab' &&
- options.pedantic
- ) {
- self.file.fail(
- 'Cannot indent code properly. See https://git.io/fxKR8',
- node.position
- )
- }
-
- return pad(value, 1)
- }
-
- fence = repeat(marker, Math.max(streak(value, marker) + 1, 3))
-
- return fence + info + lineFeed + value + lineFeed + fence
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/definition.js b/assets/node_modules/remark-stringify/lib/visitors/definition.js
deleted file mode 100644
index 11bd7af..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/definition.js
+++ /dev/null
@@ -1,36 +0,0 @@
-'use strict'
-
-var uri = require('../util/enclose-uri')
-var title = require('../util/enclose-title')
-
-module.exports = definition
-
-var space = ' '
-var colon = ':'
-var leftSquareBracket = '['
-var rightSquareBracket = ']'
-
-// Stringify an URL definition.
-//
-// Is smart about enclosing `url` (see `encloseURI()`) and `title` (see
-// `encloseTitle()`).
-//
-// ```markdown
-// [foo]: <foo at bar dot com> 'An "example" e-mail'
-// ```
-function definition(node) {
- var content = uri(node.url)
-
- if (node.title) {
- content += space + title(node.title)
- }
-
- return (
- leftSquareBracket +
- (node.label || node.identifier) +
- rightSquareBracket +
- colon +
- space +
- content
- )
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/delete.js b/assets/node_modules/remark-stringify/lib/visitors/delete.js
deleted file mode 100644
index 0586a98..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/delete.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict'
-
-module.exports = strikethrough
-
-var tilde = '~'
-
-var fence = tilde + tilde
-
-function strikethrough(node) {
- return fence + this.all(node).join('') + fence
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/emphasis.js b/assets/node_modules/remark-stringify/lib/visitors/emphasis.js
deleted file mode 100644
index d2fec56..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/emphasis.js
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict'
-
-module.exports = emphasis
-
-var underscore = '_'
-var asterisk = '*'
-
-// Stringify an `emphasis`.
-//
-// The marker used is configurable through `emphasis`, which defaults to an
-// underscore (`'_'`) but also accepts an asterisk (`'*'`):
-//
-// ```markdown
-// *foo*
-// ```
-//
-// In `pedantic` mode, text which itself contains an underscore will cause the
-// marker to default to an asterisk instead:
-//
-// ```markdown
-// *foo_bar*
-// ```
-function emphasis(node) {
- var marker = this.options.emphasis
- var content = this.all(node).join('')
-
- // When in pedantic mode, prevent using underscore as the marker when there
- // are underscores in the content.
- if (
- this.options.pedantic &&
- marker === underscore &&
- content.indexOf(marker) !== -1
- ) {
- marker = asterisk
- }
-
- return marker + content + marker
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/footnote-definition.js b/assets/node_modules/remark-stringify/lib/visitors/footnote-definition.js
deleted file mode 100644
index 42d27f4..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/footnote-definition.js
+++ /dev/null
@@ -1,30 +0,0 @@
-'use strict'
-
-var repeat = require('repeat-string')
-
-var lineFeed = '\n'
-var space = ' '
-var colon = ':'
-var leftSquareBracket = '['
-var rightSquareBracket = ']'
-var caret = '^'
-
-var tabSize = 4
-var blank = lineFeed + lineFeed
-var indent = repeat(space, tabSize)
-
-module.exports = footnoteDefinition
-
-function footnoteDefinition(node) {
- var content = this.all(node).join(blank + indent)
-
- return (
- leftSquareBracket +
- caret +
- (node.label || node.identifier) +
- rightSquareBracket +
- colon +
- space +
- content
- )
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/footnote-reference.js b/assets/node_modules/remark-stringify/lib/visitors/footnote-reference.js
deleted file mode 100644
index 1ee9b4c..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/footnote-reference.js
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict'
-
-module.exports = footnoteReference
-
-var leftSquareBracket = '['
-var rightSquareBracket = ']'
-var caret = '^'
-
-function footnoteReference(node) {
- return (
- leftSquareBracket +
- caret +
- (node.label || node.identifier) +
- rightSquareBracket
- )
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/footnote.js b/assets/node_modules/remark-stringify/lib/visitors/footnote.js
deleted file mode 100644
index 9269bd4..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/footnote.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-module.exports = footnote
-
-var leftSquareBracket = '['
-var rightSquareBracket = ']'
-var caret = '^'
-
-function footnote(node) {
- return (
- leftSquareBracket + caret + this.all(node).join('') + rightSquareBracket
- )
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/heading.js b/assets/node_modules/remark-stringify/lib/visitors/heading.js
deleted file mode 100644
index 9f432d2..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/heading.js
+++ /dev/null
@@ -1,51 +0,0 @@
-'use strict'
-
-var repeat = require('repeat-string')
-
-module.exports = heading
-
-var lineFeed = '\n'
-var space = ' '
-var numberSign = '#'
-var dash = '-'
-var equalsTo = '='
-
-// Stringify a heading.
-//
-// In `setext: true` mode and when `depth` is smaller than three, creates a
-// setext header:
-//
-// ```markdown
-// Foo
-// ===
-// ```
-//
-// Otherwise, an ATX header is generated:
-//
-// ```markdown
-// ### Foo
-// ```
-//
-// In `closeAtx: true` mode, the header is closed with hashes:
-//
-// ```markdown
-// ### Foo ###
-// ```
-function heading(node) {
- var self = this
- var depth = node.depth
- var setext = self.options.setext
- var closeAtx = self.options.closeAtx
- var content = self.all(node).join('')
- var prefix
-
- if (setext && depth < 3) {
- return (
- content + lineFeed + repeat(depth === 1 ? equalsTo : dash, content.length)
- )
- }
-
- prefix = repeat(numberSign, node.depth)
-
- return prefix + space + content + (closeAtx ? space + prefix : '')
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/html.js b/assets/node_modules/remark-stringify/lib/visitors/html.js
deleted file mode 100644
index 105cb37..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/html.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-module.exports = html
-
-function html(node) {
- return node.value
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/image-reference.js b/assets/node_modules/remark-stringify/lib/visitors/image-reference.js
deleted file mode 100644
index f78be47..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/image-reference.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict'
-
-var label = require('../util/label')
-
-module.exports = imageReference
-
-var leftSquareBracket = '['
-var rightSquareBracket = ']'
-var exclamationMark = '!'
-
-function imageReference(node) {
- return (
- exclamationMark +
- leftSquareBracket +
- (this.encode(node.alt, node) || '') +
- rightSquareBracket +
- label(node)
- )
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/image.js b/assets/node_modules/remark-stringify/lib/visitors/image.js
deleted file mode 100644
index cc5cebb..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/image.js
+++ /dev/null
@@ -1,47 +0,0 @@
-'use strict'
-
-var uri = require('../util/enclose-uri')
-var title = require('../util/enclose-title')
-
-module.exports = image
-
-var space = ' '
-var leftParenthesis = '('
-var rightParenthesis = ')'
-var leftSquareBracket = '['
-var rightSquareBracket = ']'
-var exclamationMark = '!'
-
-// Stringify an image.
-//
-// Is smart about enclosing `url` (see `encloseURI()`) and `title` (see
-// `encloseTitle()`).
-//
-// ```markdown
-// ![foo](</fav icon.png> 'My "favourite" icon')
-// ```
-//
-// Supports named entities in `url`, `alt`, and `title` when in
-// `settings.encode` mode.
-function image(node) {
- var self = this
- var content = uri(self.encode(node.url || '', node))
- var exit = self.enterLink()
- var alt = self.encode(self.escape(node.alt || '', node))
-
- exit()
-
- if (node.title) {
- content += space + title(self.encode(node.title, node))
- }
-
- return (
- exclamationMark +
- leftSquareBracket +
- alt +
- rightSquareBracket +
- leftParenthesis +
- content +
- rightParenthesis
- )
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/inline-code.js b/assets/node_modules/remark-stringify/lib/visitors/inline-code.js
deleted file mode 100644
index 6586a85..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/inline-code.js
+++ /dev/null
@@ -1,41 +0,0 @@
-'use strict'
-
-var streak = require('longest-streak')
-var repeat = require('repeat-string')
-
-module.exports = inlineCode
-
-var space = ' '
-var graveAccent = '`'
-
-// Stringify inline code.
-//
-// Knows about internal ticks (`\``), and ensures one more tick is used to
-// enclose the inline code:
-//
-// ````markdown
-// ```foo ``bar`` baz```
-// ````
-//
-// Even knows about inital and final ticks:
-//
-// ``markdown
-// `` `foo ``
-// `` foo` ``
-// ```
-function inlineCode(node) {
- var value = node.value
- var ticks = repeat(graveAccent, streak(value, graveAccent) + 1)
- var start = ticks
- var end = ticks
-
- if (value.charAt(0) === graveAccent) {
- start += space
- }
-
- if (value.charAt(value.length - 1) === graveAccent) {
- end = space + end
- }
-
- return start + value + end
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/link-reference.js b/assets/node_modules/remark-stringify/lib/visitors/link-reference.js
deleted file mode 100644
index 2785bc6..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/link-reference.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict'
-
-var copy = require('../util/copy-identifier-encoding')
-var label = require('../util/label')
-
-module.exports = linkReference
-
-var leftSquareBracket = '['
-var rightSquareBracket = ']'
-
-var shortcut = 'shortcut'
-var collapsed = 'collapsed'
-
-function linkReference(node) {
- var self = this
- var type = node.referenceType
- var exit = self.enterLinkReference(self, node)
- var value = self.all(node).join('')
-
- exit()
-
- if (type === shortcut || type === collapsed) {
- value = copy(value, node.label || node.identifier)
- }
-
- return leftSquareBracket + value + rightSquareBracket + label(node)
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/link.js b/assets/node_modules/remark-stringify/lib/visitors/link.js
deleted file mode 100644
index 35484ab..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/link.js
+++ /dev/null
@@ -1,65 +0,0 @@
-'use strict'
-
-var uri = require('../util/enclose-uri')
-var title = require('../util/enclose-title')
-
-module.exports = link
-
-var space = ' '
-var leftSquareBracket = '['
-var rightSquareBracket = ']'
-var leftParenthesis = '('
-var rightParenthesis = ')'
-
-// Expression for a protocol:
-// See <http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax>.
-var protocol = /^[a-z][a-z+.-]+:\/?/i
-
-// Stringify a link.
-//
-// When no title exists, the compiled `children` equal `url`, and `url` starts
-// with a protocol, an auto link is created:
-//
-// ```markdown
-// <http://example.com>
-// ```
-//
-// Otherwise, is smart about enclosing `url` (see `encloseURI()`) and `title`
-// (see `encloseTitle()`).
-// ```
-//
-// ```markdown
-// [foo](<foo at bar dot com> 'An "example" e-mail')
-// ```
-//
-// Supports named entities in the `url` and `title` when in `settings.encode`
-// mode.
-function link(node) {
- var self = this
- var content = self.encode(node.url || '', node)
- var exit = self.enterLink()
- var escaped = self.encode(self.escape(node.url || '', node))
- var value = self.all(node).join('')
-
- exit()
-
- if (node.title == null && protocol.test(content) && escaped === value) {
- // Backslash escapes do not work in autolinks, so we do not escape.
- return uri(self.encode(node.url), true)
- }
-
- content = uri(content)
-
- if (node.title) {
- content += space + title(self.encode(self.escape(node.title, node), node))
- }
-
- return (
- leftSquareBracket +
- value +
- rightSquareBracket +
- leftParenthesis +
- content +
- rightParenthesis
- )
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/list-item.js b/assets/node_modules/remark-stringify/lib/visitors/list-item.js
deleted file mode 100644
index 15de8f8..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/list-item.js
+++ /dev/null
@@ -1,75 +0,0 @@
-'use strict'
-
-var repeat = require('repeat-string')
-var pad = require('../util/pad')
-
-module.exports = listItem
-
-var lineFeed = '\n'
-var space = ' '
-var leftSquareBracket = '['
-var rightSquareBracket = ']'
-var lowercaseX = 'x'
-
-var ceil = Math.ceil
-var blank = lineFeed + lineFeed
-
-var tabSize = 4
-
-// Stringify a list item.
-//
-// Prefixes the content with a checked checkbox when `checked: true`:
-//
-// ```markdown
-// [x] foo
-// ```
-//
-// Prefixes the content with an unchecked checkbox when `checked: false`:
-//
-// ```markdown
-// [ ] foo
-// ```
-function listItem(node, parent, position, bullet) {
- var self = this
- var style = self.options.listItemIndent
- var marker = bullet || self.options.bullet
- var spread = node.spread == null ? true : node.spread
- var checked = node.checked
- var children = node.children
- var length = children.length
- var values = []
- var index = -1
- var value
- var indent
- var spacing
-
- while (++index < length) {
- values[index] = self.visit(children[index], node)
- }
-
- value = values.join(spread ? blank : lineFeed)
-
- if (typeof checked === 'boolean') {
- // Note: I’d like to be able to only add the space between the check and
- // the value, but unfortunately github does not support empty list-items
- // with a checkbox :(
- value =
- leftSquareBracket +
- (checked ? lowercaseX : space) +
- rightSquareBracket +
- space +
- value
- }
-
- if (style === '1' || (style === 'mixed' && value.indexOf(lineFeed) === -1)) {
- indent = marker.length + 1
- spacing = space
- } else {
- indent = ceil((marker.length + 1) / tabSize) * tabSize
- spacing = repeat(space, indent - marker.length)
- }
-
- return value
- ? marker + spacing + pad(value, indent / tabSize).slice(indent)
- : marker
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/list.js b/assets/node_modules/remark-stringify/lib/visitors/list.js
deleted file mode 100644
index a394ab8..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/list.js
+++ /dev/null
@@ -1,8 +0,0 @@
-'use strict'
-
-module.exports = list
-
-function list(node) {
- var fn = node.ordered ? this.visitOrderedItems : this.visitUnorderedItems
- return fn.call(this, node)
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/paragraph.js b/assets/node_modules/remark-stringify/lib/visitors/paragraph.js
deleted file mode 100644
index a9654e3..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/paragraph.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-module.exports = paragraph
-
-function paragraph(node) {
- return this.all(node).join('')
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/root.js b/assets/node_modules/remark-stringify/lib/visitors/root.js
deleted file mode 100644
index 33f30fe..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/root.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict'
-
-module.exports = root
-
-var lineFeed = '\n'
-
-// Stringify a root.
-// Adds a final newline to ensure valid POSIX files. */
-function root(node) {
- return this.block(node) + lineFeed
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/strong.js b/assets/node_modules/remark-stringify/lib/visitors/strong.js
deleted file mode 100644
index b7445ac..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/strong.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict'
-
-var repeat = require('repeat-string')
-
-module.exports = strong
-
-// Stringify a `strong`.
-//
-// The marker used is configurable by `strong`, which defaults to an asterisk
-// (`'*'`) but also accepts an underscore (`'_'`):
-//
-// ```markdown
-// __foo__
-// ```
-function strong(node) {
- var marker = repeat(this.options.strong, 2)
- return marker + this.all(node).join('') + marker
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/table-cell.js b/assets/node_modules/remark-stringify/lib/visitors/table-cell.js
deleted file mode 100644
index cd9d3fe..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/table-cell.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-module.exports = tableCell
-
-function tableCell(node) {
- return this.all(node).join('')
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/table.js b/assets/node_modules/remark-stringify/lib/visitors/table.js
deleted file mode 100644
index e246103..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/table.js
+++ /dev/null
@@ -1,68 +0,0 @@
-'use strict'
-
-var markdownTable = require('markdown-table')
-
-module.exports = table
-
-var space = ' '
-var verticalBar = '|'
-
-// Stringify table.
-//
-// Creates a fenced table by default, but not in `looseTable: true` mode:
-//
-// ```markdown
-// Foo | Bar
-// :-: | ---
-// Baz | Qux
-//
-// NOTE: Be careful with `looseTable: true` mode, as a loose table inside an
-// indented code block on GitHub renders as an actual table!
-//
-// Creates a spaced table by default, but not in `spacedTable: false`:
-//
-// ```markdown
-// |Foo|Bar|
-// |:-:|---|
-// |Baz|Qux|
-// ```
-function table(node) {
- var self = this
- var options = self.options
- var loose = options.looseTable
- var spaced = options.spacedTable
- var pad = options.paddedTable
- var stringLength = options.stringLength
- var rows = node.children
- var index = rows.length
- var exit = self.enterTable()
- var result = []
- var start
- var end
-
- while (index--) {
- result[index] = self.all(rows[index])
- }
-
- exit()
-
- if (loose) {
- start = ''
- end = ''
- } else if (spaced) {
- start = verticalBar + space
- end = space + verticalBar
- } else {
- start = verticalBar
- end = verticalBar
- }
-
- return markdownTable(result, {
- align: node.align,
- pad: pad,
- start: start,
- end: end,
- stringLength: stringLength,
- delimiter: spaced ? space + verticalBar + space : verticalBar
- })
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/text.js b/assets/node_modules/remark-stringify/lib/visitors/text.js
deleted file mode 100644
index 53d0aff..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/text.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict'
-
-module.exports = text
-
-// Stringify text.
-// Supports named entities in `settings.encode: true` mode:
-//
-// ```markdown
-// AT&amp;T
-// ```
-//
-// Supports numbered entities in `settings.encode: numbers` mode:
-//
-// ```markdown
-// AT&#x26;T
-// ```
-function text(node, parent) {
- return this.encode(this.escape(node.value, node, parent), node)
-}
diff --git a/assets/node_modules/remark-stringify/lib/visitors/thematic-break.js b/assets/node_modules/remark-stringify/lib/visitors/thematic-break.js
deleted file mode 100644
index 4cd249f..0000000
--- a/assets/node_modules/remark-stringify/lib/visitors/thematic-break.js
+++ /dev/null
@@ -1,31 +0,0 @@
-'use strict'
-
-var repeat = require('repeat-string')
-
-module.exports = thematic
-
-var space = ' '
-
-// Stringify a `thematic-break`.
-// The character used is configurable through `rule`: (`'_'`):
-//
-// ```markdown
-// ___
-// ```
-//
-// The number of repititions is defined through `ruleRepetition` (`6`):
-//
-// ```markdown
-// ******
-// ```
-//
-// Whether spaces delimit each character, is configured through `ruleSpaces`
-// (`true`):
-// ```markdown
-// * * *
-// ```
-function thematic() {
- var options = this.options
- var rule = repeat(options.rule, options.ruleRepetition)
- return options.ruleSpaces ? rule.split('').join(space) : rule
-}
diff --git a/assets/node_modules/remark-stringify/package.json b/assets/node_modules/remark-stringify/package.json
deleted file mode 100644
index 76dff9e..0000000
--- a/assets/node_modules/remark-stringify/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "name": "remark-stringify",
- "version": "6.0.4",
- "description": "Markdown compiler for remark",
- "license": "MIT",
- "keywords": [
- "markdown",
- "abstract",
- "syntax",
- "tree",
- "ast",
- "stringify"
- ],
- "homepage": "https://remark.js.org",
- "repository": "https://github.com/remarkjs/remark/tree/master/packages/remark-stringify",
- "bugs": "https://github.com/remarkjs/remark/issues",
- "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
- "contributors": [
- "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
- "Eugene Sharygin <eush77@gmail.com>"
- ],
- "files": [
- "index.js",
- "lib"
- ],
- "dependencies": {
- "ccount": "^1.0.0",
- "is-alphanumeric": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-whitespace-character": "^1.0.0",
- "longest-streak": "^2.0.1",
- "markdown-escapes": "^1.0.0",
- "markdown-table": "^1.1.0",
- "mdast-util-compact": "^1.0.0",
- "parse-entities": "^1.0.2",
- "repeat-string": "^1.5.4",
- "state-toggle": "^1.0.0",
- "stringify-entities": "^1.0.1",
- "unherit": "^1.0.4",
- "xtend": "^4.0.1"
- },
- "devDependencies": {
- "tape": "^4.9.1",
- "unified": "^7.0.0",
- "unist-builder": "^1.0.3",
- "unist-util-visit": "^1.4.0",
- "wcwidth": "^1.0.1"
- },
- "scripts": {
- "test": "tape test.js"
- },
- "xo": false
-}
diff --git a/assets/node_modules/remark-stringify/readme.md b/assets/node_modules/remark-stringify/readme.md
deleted file mode 100644
index b5ec974..0000000
--- a/assets/node_modules/remark-stringify/readme.md
+++ /dev/null
@@ -1,311 +0,0 @@
-# remark-stringify [![Travis][build-badge]][build-status] [![Coverage][coverage-badge]][coverage-status] [![Downloads][dl-badge]][dl] [![Size][size-badge]][size] [![Chat][chat-badge]][chat]
-
-[Compiler][] for [**unified**][unified].
-Stringifies [**mdast**][mdast] syntax trees to markdown.
-Used in the [**remark** processor][processor] but can be used on its own as
-well.
-Can be [extended][extend] to change how markdown is parsed.
-
-* * *
-
-**Announcing the unified collective! 🎉
-[Read more about it on Medium »][announcement]**
-
-## Sponsors
-
-<!--lint ignore no-html maximum-line-length-->
-
-<table>
- <tr valign="top">
- <td width="20%" align="center">
- <a href="https://zeit.co"><img src="https://avatars1.githubusercontent.com/u/14985020?s=400&v=4"></a>
- <br><br>🥇
- <a href="https://zeit.co">ZEIT</a>
- </td>
- <td width="20%" align="center">
- <a href="https://www.gatsbyjs.org"><img src="https://avatars1.githubusercontent.com/u/12551863?s=400&v=4"></a>
- <br><br>🥇
- <a href="https://www.gatsbyjs.org">Gatsby</a></td>
- <td width="20%" align="center">
- <a href="https://compositor.io"><img src="https://avatars1.githubusercontent.com/u/19245838?s=400&v=4"></a>
- <br><br>🥉
- <a href="https://compositor.io">Compositor</a>
- </td>
- <td width="20%" align="center">
- <a href="https://www.holloway.com"><img src="https://avatars1.githubusercontent.com/u/35904294?s=400&v=4"></a>
- <br><br>
- <a href="https://www.holloway.com">Holloway</a>
- </td>
- <td width="20%" align="center">
- <br><br><br><br>
- <a href="https://opencollective.com/unified"><strong>You?</strong>
- </td>
- </tr>
-</table>
-
-## Installation
-
-[npm][]:
-
-```sh
-npm install remark-stringify
-```
-
-## Usage
-
-```js
-var unified = require('unified')
-var createStream = require('unified-stream')
-var parse = require('remark-parse')
-var toc = require('remark-toc')
-var stringify = require('remark-stringify')
-
-var processor = unified()
- .use(parse)
- .use(toc)
- .use(stringify, {
- bullet: '*',
- fence: '~',
- fences: true,
- incrementListMarker: false
- })
-
-process.stdin.pipe(createStream(processor)).pipe(process.stdout)
-```
-
-## Table of Contents
-
-* [API](#api)
- * [processor.use(stringify\[, options\])](#processorusestringify-options)
- * [stringify.Compiler](#stringifycompiler)
-* [Extending the Compiler](#extending-the-compiler)
- * [Compiler#visitors](#compilervisitors)
- * [function visitor(node\[, parent\])](#function-visitornode-parent)
-* [License](#license)
-
-## API
-
-### `processor.use(stringify[, options])`
-
-Configure the `processor` to stringify [**mdast**][mdast] syntax trees
-to markdown.
-
-##### `options`
-
-Options are passed directly, or passed later through [`processor.data()`][data].
-
-###### `options.gfm`
-
-Stringify with the required escapes for GFM compatible markdown (`boolean`,
-default: `true`).
-
-* Escape pipes (`|`, for tables)
-* Escape colons (`:`, for literal URLs)
-* Escape tildes (`~`, for strike-through)
-
-###### `options.commonmark`
-
-Stringify for CommonMark compatible markdown (`boolean`, default: `false`).
-
-* Compile adjacent blockquotes separately
-* Escape more characters using slashes, instead of as entities
-
-###### `options.pedantic`
-
-Stringify for pedantic compatible markdown (`boolean`, default: `false`).
-
-* Escape underscores in words
-
-###### `options.entities`
-
-How to stringify entities (`string` or `boolean`, default: `false`):
-
-* `true` — Entities are generated for special HTML characters
- (`&` > `&amp;`) and non-ASCII characters (`©` > `&copy;`).
- If named entities are not (widely) supported, numbered character
- references are used (`’` > `&#x2019;`)
-* `'numbers'` — Numbered entities are generated (`&` > `&#x26;`)
- for special HTML characters and non-ASCII characters
-* `'escape'` — Special HTML characters are encoded (`&` >
- `&amp;`, `’` > `&#x2019;`), non-ASCII characters not (ö persists)
-
-###### `options.setext`
-
-Compile headings, when possible, in Setext-style (`boolean`, default: `false`).
-Uses `=` for level one headings and `-` for level two headings. Other heading
-levels are compiled as ATX (respecting `closeAtx`).
-
-###### `options.closeAtx`
-
-Compile ATX headings with the same amount of closing hashes as opening hashes
-(`boolean`, default: `false`).
-
-###### `options.looseTable`
-
-Create tables without fences: initial and final pipes (`boolean`, default:
-`false`).
-
-###### `options.spacedTable`
-
-Create tables without spacing between pipes and content (`boolean`, default:
-`true`).
-
-###### `options.paddedTable`
-
-Create tables with padding in each cell so that they are the same size
-(`boolean`, default: `true`).
-
-###### `options.stringLength`
-
-Function passed to [`markdown-table`][markdown-table] to detect the length of a
-table cell (`Function`, default: [`s => s.length`][string-length]).
-
-###### `options.fence`
-
-Fence marker to use for code blocks (`'~'` or ``'`'``, default: ``'`'``).
-
-###### `options.fences`
-
-Stringify code blocks without language with fences (`boolean`, default:
-`false`).
-
-###### `options.bullet`
-
-Bullet marker to use for unordered list items (`'-'`, `'*'`, or `'+'`,
-default: `'-'`).
-
-###### `options.listItemIndent`
-
-How to indent the content from list items (`'tab'`, `'mixed'` or `'1'`,
-default: `'tab'`).
-
-* `'tab'`: use tab stops (4 spaces)
-* `'1'`: use one space
-* `'mixed'`: use `1` for tight and `tab` for loose list items
-
-###### `options.incrementListMarker`
-
-Whether to increment ordered list item bullets (`boolean`, default: `true`).
-
-###### `options.rule`
-
-Marker to use for thematic breaks / horizontal rules (`'-'`, `'*'`, or `'_'`,
-default: `'*'`).
-
-###### `options.ruleRepetition`
-
-Number of markers to use for thematic breaks / horizontal rules (`number`,
-default: `3`). Should be `3` or more.
-
-###### `options.ruleSpaces`
-
-Whether to pad thematic break (horizontal rule) markers with spaces (`boolean`,
-default `true`).
-
-###### `options.strong`
-
-Marker to use for importance (`'_'` or `'*'`, default `'*'`).
-
-###### `options.emphasis`
-
-Marker to use for emphasis (`'_'` or `'*'`, default `'_'`).
-
-### `stringify.Compiler`
-
-Access to the raw [compiler][], if you need it.
-
-## Extending the Compiler
-
-If this plugin is used, it adds a [`Compiler`][compiler] constructor
-to the `processor`. Other plugins can change and add visitors on
-the compiler’s prototype to change how markdown is stringified.
-
-The below plugin modifies a [visitor][] to add an extra blank line
-before level two headings.
-
-```js
-module.exports = gap
-
-function gap() {
- var Compiler = this.Compiler
- var visitors = Compiler.prototype.visitors
- var original = visitors.heading
-
- visitors.heading = heading
-
- function heading(node) {
- return (node.depth === 2 ? '\n' : '') + original.apply(this, arguments)
- }
-}
-```
-
-### `Compiler#visitors`
-
-An object mapping [node][] types to [`visitor`][visitor]s.
-
-### `function visitor(node[, parent])`
-
-Stringify `node`.
-
-###### Parameters
-
-* `node` ([`Node`][node]) — Node to compile
-* `parent` ([`Node`][node], optional) — Parent of `node`
-
-###### Returns
-
-`string`, the compiled given `node`.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/remarkjs/remark/master.svg
-
-[build-status]: https://travis-ci.org/remarkjs/remark
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/remarkjs/remark.svg
-
-[coverage-status]: https://codecov.io/github/remarkjs/remark
-
-[dl-badge]: https://img.shields.io/npm/dm/remark-stringify.svg
-
-[dl]: https://www.npmjs.com/package/remark-stringify
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/remark-stringify.svg
-
-[size]: https://bundlephobia.com/result?p=remark-stringify
-
-[chat-badge]: https://img.shields.io/badge/join%20the%20community-on%20spectrum-7b16ff.svg
-
-[chat]: https://spectrum.chat/unified/remark
-
-[license]: https://github.com/remarkjs/remark/blob/master/license
-
-[author]: https://wooorm.com
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[unified]: https://github.com/unifiedjs/unified
-
-[processor]: https://github.com/remarkjs/remark
-
-[data]: https://github.com/unifiedjs/unified#processordatakey-value
-
-[compiler]: https://github.com/unifiedjs/unified#processorcompiler
-
-[mdast]: https://github.com/syntax-tree/mdast
-
-[node]: https://github.com/syntax-tree/unist#node
-
-[extend]: #extending-the-compiler
-
-[visitor]: #function-visitornode-parent
-
-[markdown-table]: https://github.com/wooorm/markdown-table
-
-[string-length]: https://github.com/wooorm/markdown-table#stringlengthcell
-
-[announcement]: https://medium.com/unifiedjs/collectively-evolving-through-crowdsourcing-22c359ea95cc
diff --git a/assets/node_modules/remark/index.js b/assets/node_modules/remark/index.js
deleted file mode 100644
index 148d2de..0000000
--- a/assets/node_modules/remark/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict'
-
-var unified = require('unified')
-var parse = require('remark-parse')
-var stringify = require('remark-stringify')
-
-module.exports = unified()
- .use(parse)
- .use(stringify)
- .freeze()
diff --git a/assets/node_modules/remark/package.json b/assets/node_modules/remark/package.json
deleted file mode 100644
index 0bbeefb..0000000
--- a/assets/node_modules/remark/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "remark",
- "version": "10.0.1",
- "description": "Markdown processor powered by plugins",
- "license": "MIT",
- "keywords": [
- "markdown",
- "abstract",
- "syntax",
- "tree",
- "ast",
- "parse",
- "stringify",
- "process"
- ],
- "homepage": "https://remark.js.org",
- "repository": "https://github.com/remarkjs/remark/tree/master/packages/remark",
- "bugs": "https://github.com/remarkjs/remark/issues",
- "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
- "contributors": [
- "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
- ],
- "files": [
- "index.js"
- ],
- "dependencies": {
- "remark-parse": "^6.0.0",
- "remark-stringify": "^6.0.0",
- "unified": "^7.0.0"
- },
- "devDependencies": {
- "tape": "^4.9.1"
- },
- "scripts": {
- "test": "tape test.js"
- },
- "xo": false
-}
diff --git a/assets/node_modules/remark/readme.md b/assets/node_modules/remark/readme.md
deleted file mode 100644
index 5411cf0..0000000
--- a/assets/node_modules/remark/readme.md
+++ /dev/null
@@ -1,190 +0,0 @@
-# remark [![Travis][build-badge]][build-status] [![Coverage][coverage-badge]][coverage-status] [![Downloads][dl-badge]][dl] [![Size][size-badge]][size] [![Chat][chat-badge]][chat]
-
-[**remark**][remark] is a markdown processor powered by [plugins][] part of the
-[unified][] [collective][].
-
-* API by [`unified`][unified]
-* Parses markdown to the tree with [`remark-parse`][parse]
-* [**mdast**][mdast] syntax tree
-* [Plugins][] transform the tree
-* Compiles the tree to markdown using [`remark-stringify`][stringify]
-
-Don’t need the parser? Or the compiler? [That’s OK][unified-usage].
-
-* * *
-
-**Announcing the unified collective! 🎉
-[Read more about it on Medium »][announcement]**
-
-## Sponsors
-
-<!--lint ignore no-html maximum-line-length-->
-
-<table>
- <tr valign="top">
- <td width="20%" align="center">
- <a href="https://zeit.co"><img src="https://avatars1.githubusercontent.com/u/14985020?s=400&v=4"></a>
- <br><br>🥇
- <a href="https://zeit.co">ZEIT</a>
- </td>
- <td width="20%" align="center">
- <a href="https://www.gatsbyjs.org"><img src="https://avatars1.githubusercontent.com/u/12551863?s=400&v=4"></a>
- <br><br>🥇
- <a href="https://www.gatsbyjs.org">Gatsby</a></td>
- <td width="20%" align="center">
- <a href="https://compositor.io"><img src="https://avatars1.githubusercontent.com/u/19245838?s=400&v=4"></a>
- <br><br>🥉
- <a href="https://compositor.io">Compositor</a>
- </td>
- <td width="20%" align="center">
- <a href="https://www.holloway.com"><img src="https://avatars1.githubusercontent.com/u/35904294?s=400&v=4"></a>
- <br><br>
- <a href="https://www.holloway.com">Holloway</a>
- </td>
- <td width="20%" align="center">
- <br><br><br><br>
- <a href="https://opencollective.com/unified"><strong>You?</strong>
- </td>
- </tr>
-</table>
-
-## Installation
-
-[npm][]:
-
-```sh
-npm install remark
-```
-
-## Usage
-
-###### Common example
-
-This example lints markdown and turns it into HTML.
-
-```js
-var remark = require('remark')
-var recommended = require('remark-preset-lint-recommended')
-var html = require('remark-html')
-var report = require('vfile-reporter')
-
-remark()
- .use(recommended)
- .use(html)
- .process('## Hello world!', function(err, file) {
- console.error(report(err || file))
- console.log(String(file))
- })
-```
-
-Yields:
-
-```txt
-1:1 warning Missing newline character at end of file final-newline remark-lint
-
-⚠ 1 warning
-```
-
-```html
-<h2>Hello world!</h2>
-```
-
-###### Settings through data
-
-This example prettifies markdown and configures [`remark-parse`][parse] and
-[`remark-stringify`][stringify] through [data][].
-
-```js
-var remark = require('remark')
-
-remark()
- .data('settings', {commonmark: true, emphasis: '*', strong: '*'})
- .process('_Emphasis_ and __importance__', function(err, file) {
- if (err) throw err
- console.log(String(file))
- })
-```
-
-Yields:
-
-```markdown
-*Emphasis* and **importance**
-```
-
-###### Settings through a preset
-
-This example prettifies markdown and configures [`remark-parse`][parse] and
-[`remark-stringify`][stringify] through a [preset][].
-
-```js
-var remark = require('remark')
-
-remark()
- .use({
- settings: {commonmark: true, emphasis: '*', strong: '*'}
- })
- .process('_Emphasis_ and __importance__', function(err, file) {
- if (err) throw err
- console.log(String(file))
- })
-```
-
-Yields:
-
-```markdown
-*Emphasis* and **importance**
-```
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/remarkjs/remark/master.svg
-
-[build-status]: https://travis-ci.org/remarkjs/remark
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/remarkjs/remark.svg
-
-[coverage-status]: https://codecov.io/github/remarkjs/remark
-
-[dl-badge]: https://img.shields.io/npm/dm/remark.svg
-
-[dl]: https://www.npmjs.com/package/remark
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/remark.svg
-
-[size]: https://bundlephobia.com/result?p=remark
-
-[chat-badge]: https://img.shields.io/badge/join%20the%20community-on%20spectrum-7b16ff.svg
-
-[chat]: https://spectrum.chat/unified/remark
-
-[license]: https://github.com/remarkjs/remark/blob/master/license
-
-[author]: https://wooorm.com
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[remark]: https://github.com/remarkjs/remark
-
-[unified]: https://github.com/unifiedjs/unified
-
-[mdast]: https://github.com/syntax-tree/mdast
-
-[parse]: https://github.com/remarkjs/remark/blob/master/packages/remark-parse
-
-[stringify]: https://github.com/remarkjs/remark/blob/master/packages/remark-stringify
-
-[plugins]: https://github.com/remarkjs/remark/blob/master/doc/plugins.md
-
-[unified-usage]: https://github.com/unifiedjs/unified#usage
-
-[preset]: https://github.com/unifiedjs/unified#preset
-
-[data]: https://github.com/unifiedjs/unified#processordatakey-value
-
-[collective]: https://opencollective.com/unified
-
-[announcement]: https://medium.com/unifiedjs/collectively-evolving-through-crowdsourcing-22c359ea95cc
diff --git a/assets/node_modules/repeat-string/LICENSE b/assets/node_modules/repeat-string/LICENSE
deleted file mode 100644
index 39245ac..0000000
--- a/assets/node_modules/repeat-string/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2016, Jon Schlinkert.
-
-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/assets/node_modules/repeat-string/README.md b/assets/node_modules/repeat-string/README.md
deleted file mode 100644
index aaa5e91..0000000
--- a/assets/node_modules/repeat-string/README.md
+++ /dev/null
@@ -1,136 +0,0 @@
-# repeat-string [![NPM version](https://img.shields.io/npm/v/repeat-string.svg?style=flat)](https://www.npmjs.com/package/repeat-string) [![NPM monthly downloads](https://img.shields.io/npm/dm/repeat-string.svg?style=flat)](https://npmjs.org/package/repeat-string) [![NPM total downloads](https://img.shields.io/npm/dt/repeat-string.svg?style=flat)](https://npmjs.org/package/repeat-string) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/repeat-string.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/repeat-string)
-
-> Repeat the given string n times. Fastest implementation for repeating a string.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save repeat-string
-```
-
-## Usage
-
-### [repeat](index.js#L41)
-
-Repeat the given `string` the specified `number` of times.
-
-**Example:**
-
-**Example**
-
-```js
-var repeat = require('repeat-string');
-repeat('A', 5);
-//=> AAAAA
-```
-
-**Params**
-
-* `string` **{String}**: The string to repeat
-* `number` **{Number}**: The number of times to repeat the string
-* `returns` **{String}**: Repeated string
-
-## Benchmarks
-
-Repeat string is significantly faster than the native method (which is itself faster than [repeating](https://github.com/sindresorhus/repeating)):
-
-```sh
-# 2x
-repeat-string █████████████████████████ (26,953,977 ops/sec)
-repeating █████████ (9,855,695 ops/sec)
-native ██████████████████ (19,453,895 ops/sec)
-
-# 3x
-repeat-string █████████████████████████ (19,445,252 ops/sec)
-repeating ███████████ (8,661,565 ops/sec)
-native ████████████████████ (16,020,598 ops/sec)
-
-# 10x
-repeat-string █████████████████████████ (23,792,521 ops/sec)
-repeating █████████ (8,571,332 ops/sec)
-native ███████████████ (14,582,955 ops/sec)
-
-# 50x
-repeat-string █████████████████████████ (23,640,179 ops/sec)
-repeating █████ (5,505,509 ops/sec)
-native ██████████ (10,085,557 ops/sec)
-
-# 250x
-repeat-string █████████████████████████ (23,489,618 ops/sec)
-repeating ████ (3,962,937 ops/sec)
-native ████████ (7,724,892 ops/sec)
-
-# 2000x
-repeat-string █████████████████████████ (20,315,172 ops/sec)
-repeating ████ (3,297,079 ops/sec)
-native ███████ (6,203,331 ops/sec)
-
-# 20000x
-repeat-string █████████████████████████ (23,382,915 ops/sec)
-repeating ███ (2,980,058 ops/sec)
-native █████ (5,578,808 ops/sec)
-```
-
-**Run the benchmarks**
-
-Install dev dependencies:
-
-```sh
-npm i -d && node benchmark
-```
-
-## About
-
-### Related projects
-
-[repeat-element](https://www.npmjs.com/package/repeat-element): Create an array by repeating the given value n times. | [homepage](https://github.com/jonschlinkert/repeat-element "Create an array by repeating the given value n times.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Contributors
-
-| **Commits** | **Contributor**<br/> |
-| --- | --- |
-| 51 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 2 | [LinusU](https://github.com/LinusU) |
-| 2 | [tbusser](https://github.com/tbusser) |
-| 1 | [doowb](https://github.com/doowb) |
-| 1 | [wooorm](https://github.com/wooorm) |
-
-### Building docs
-
-_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_
-
-To generate the readme and API documentation with [verb](https://github.com/verbose/verb):
-
-```sh
-$ npm install -g verb verb-generate-readme && verb
-```
-
-### Running tests
-
-Install dev dependencies:
-
-```sh
-$ npm install -d && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2016, [Jon Schlinkert](http://github.com/jonschlinkert).
-Released under the [MIT license](https://github.com/jonschlinkert/repeat-string/blob/master/LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.2.0, on October 23, 2016._ \ No newline at end of file
diff --git a/assets/node_modules/repeat-string/index.js b/assets/node_modules/repeat-string/index.js
deleted file mode 100644
index 4459afd..0000000
--- a/assets/node_modules/repeat-string/index.js
+++ /dev/null
@@ -1,70 +0,0 @@
-/*!
- * repeat-string <https://github.com/jonschlinkert/repeat-string>
- *
- * Copyright (c) 2014-2015, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-
-'use strict';
-
-/**
- * Results cache
- */
-
-var res = '';
-var cache;
-
-/**
- * Expose `repeat`
- */
-
-module.exports = repeat;
-
-/**
- * Repeat the given `string` the specified `number`
- * of times.
- *
- * **Example:**
- *
- * ```js
- * var repeat = require('repeat-string');
- * repeat('A', 5);
- * //=> AAAAA
- * ```
- *
- * @param {String} `string` The string to repeat
- * @param {Number} `number` The number of times to repeat the string
- * @return {String} Repeated string
- * @api public
- */
-
-function repeat(str, num) {
- if (typeof str !== 'string') {
- throw new TypeError('expected a string');
- }
-
- // cover common, quick use cases
- if (num === 1) return str;
- if (num === 2) return str + str;
-
- var max = str.length * num;
- if (cache !== str || typeof cache === 'undefined') {
- cache = str;
- res = '';
- } else if (res.length >= max) {
- return res.substr(0, max);
- }
-
- while (max > res.length && num > 1) {
- if (num & 1) {
- res += str;
- }
-
- num >>= 1;
- str += str;
- }
-
- res += str;
- res = res.substr(0, max);
- return res;
-}
diff --git a/assets/node_modules/repeat-string/package.json b/assets/node_modules/repeat-string/package.json
deleted file mode 100644
index 09f8892..0000000
--- a/assets/node_modules/repeat-string/package.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "name": "repeat-string",
- "description": "Repeat the given string n times. Fastest implementation for repeating a string.",
- "version": "1.6.1",
- "homepage": "https://github.com/jonschlinkert/repeat-string",
- "author": "Jon Schlinkert (http://github.com/jonschlinkert)",
- "contributors": [
- "Brian Woodward <brian.woodward@gmail.com> (https://github.com/doowb)",
- "Jon Schlinkert <jon.schlinkert@sellside.com> (http://twitter.com/jonschlinkert)",
- "Linus Unnebäck <linus@folkdatorn.se> (http://linus.unnebäck.se)",
- "Thijs Busser <tbusser@gmail.com> (http://tbusser.net)",
- "Titus <tituswormer@gmail.com> (wooorm.com)"
- ],
- "repository": "jonschlinkert/repeat-string",
- "bugs": {
- "url": "https://github.com/jonschlinkert/repeat-string/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10"
- },
- "scripts": {
- "test": "mocha"
- },
- "devDependencies": {
- "ansi-cyan": "^0.1.1",
- "benchmarked": "^0.2.5",
- "gulp-format-md": "^0.1.11",
- "isobject": "^2.1.0",
- "mocha": "^3.1.2",
- "repeating": "^3.0.0",
- "text-table": "^0.2.0",
- "yargs-parser": "^4.0.2"
- },
- "keywords": [
- "fast",
- "fastest",
- "fill",
- "left",
- "left-pad",
- "multiple",
- "pad",
- "padding",
- "repeat",
- "repeating",
- "repetition",
- "right",
- "right-pad",
- "string",
- "times"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": [
- "repeat-element"
- ]
- },
- "helpers": [
- "./benchmark/helper.js"
- ],
- "reflinks": [
- "verb"
- ]
- }
-}
diff --git a/assets/node_modules/replace-ext/LICENSE b/assets/node_modules/replace-ext/LICENSE
deleted file mode 100755
index fd38d69..0000000
--- a/assets/node_modules/replace-ext/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Blaine Bublitz <blaine.bublitz@gmail.com>, Eric Schoffstall <yo@contra.io> 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/assets/node_modules/replace-ext/README.md b/assets/node_modules/replace-ext/README.md
deleted file mode 100644
index 8775983..0000000
--- a/assets/node_modules/replace-ext/README.md
+++ /dev/null
@@ -1,50 +0,0 @@
-<p align="center">
- <a href="http://gulpjs.com">
- <img height="257" width="114" src="https://raw.githubusercontent.com/gulpjs/artwork/master/gulp-2x.png">
- </a>
-</p>
-
-# replace-ext
-
-[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][travis-image]][travis-url] [![AppVeyor Build Status][appveyor-image]][appveyor-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Gitter chat][gitter-image]][gitter-url]
-
-Replaces a file extension with another one.
-
-## Usage
-
-```js
-var replaceExt = require('replace-ext');
-
-var path = '/some/dir/file.js';
-var newPath = replaceExt(path, '.coffee');
-
-console.log(newPath); // /some/dir/file.coffee
-```
-
-## API
-
-### `replaceExt(path, extension)`
-
-Replaces the extension from `path` with `extension` and returns the updated path string.
-
-Does not replace the extension if `path` is not a string or is empty.
-
-## License
-
-MIT
-
-[downloads-image]: http://img.shields.io/npm/dm/replace-ext.svg
-[npm-url]: https://www.npmjs.com/package/replace-ext
-[npm-image]: http://img.shields.io/npm/v/replace-ext.svg
-
-[travis-url]: https://travis-ci.org/gulpjs/replace-ext
-[travis-image]: http://img.shields.io/travis/gulpjs/replace-ext.svg?label=travis-ci
-
-[appveyor-url]: https://ci.appveyor.com/project/gulpjs/replace-ext
-[appveyor-image]: https://img.shields.io/appveyor/ci/gulpjs/replace-ext.svg?label=appveyor
-
-[coveralls-url]: https://coveralls.io/r/gulpjs/replace-ext
-[coveralls-image]: http://img.shields.io/coveralls/gulpjs/replace-ext/master.svg
-
-[gitter-url]: https://gitter.im/gulpjs/gulp
-[gitter-image]: https://badges.gitter.im/gulpjs/gulp.svg
diff --git a/assets/node_modules/replace-ext/index.js b/assets/node_modules/replace-ext/index.js
deleted file mode 100644
index 7cb7789..0000000
--- a/assets/node_modules/replace-ext/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict';
-
-var path = require('path');
-
-function replaceExt(npath, ext) {
- if (typeof npath !== 'string') {
- return npath;
- }
-
- if (npath.length === 0) {
- return npath;
- }
-
- var nFileName = path.basename(npath, path.extname(npath)) + ext;
- return path.join(path.dirname(npath), nFileName);
-}
-
-module.exports = replaceExt;
diff --git a/assets/node_modules/replace-ext/package.json b/assets/node_modules/replace-ext/package.json
deleted file mode 100644
index 27dbe31..0000000
--- a/assets/node_modules/replace-ext/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "replace-ext",
- "version": "1.0.0",
- "description": "Replaces a file extension with another one",
- "author": "Gulp Team <team@gulpjs.com> (http://gulpjs.com/)",
- "contributors": [
- "Eric Schoffstall <yo@contra.io>",
- "Blaine Bublitz <blaine.bublitz@gmail.com>"
- ],
- "repository": "gulpjs/replace-ext",
- "license": "MIT",
- "engines": {
- "node": ">= 0.10"
- },
- "main": "index.js",
- "files": [
- "LICENSE",
- "index.js"
- ],
- "scripts": {
- "lint": "eslint . && jscs index.js test/",
- "pretest": "npm run lint",
- "test": "mocha --async-only",
- "cover": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly",
- "coveralls": "npm run cover && istanbul-coveralls"
- },
- "dependencies": {},
- "devDependencies": {
- "eslint": "^1.10.3",
- "eslint-config-gulp": "^2.0.0",
- "expect": "^1.16.0",
- "istanbul": "^0.4.3",
- "istanbul-coveralls": "^1.0.3",
- "jscs": "^2.3.5",
- "jscs-preset-gulp": "^1.0.0",
- "mocha": "^2.4.5"
- },
- "keywords": [
- "gulp",
- "extensions",
- "filepath",
- "basename"
- ]
-}
diff --git a/assets/node_modules/resolve-from/index.d.ts b/assets/node_modules/resolve-from/index.d.ts
deleted file mode 100644
index dd5f5ef..0000000
--- a/assets/node_modules/resolve-from/index.d.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-declare const resolveFrom: {
- /**
- Resolve the path of a module like [`require.resolve()`](https://nodejs.org/api/globals.html#globals_require_resolve) but from a given path.
-
- @param fromDirectory - Directory to resolve from.
- @param moduleId - What you would use in `require()`.
- @returns Resolved module path. Throws when the module can't be found.
-
- @example
- ```
- import resolveFrom = require('resolve-from');
-
- // There is a file at `./foo/bar.js`
-
- resolveFrom('foo', './bar');
- //=> '/Users/sindresorhus/dev/test/foo/bar.js'
- ```
- */
- (fromDirectory: string, moduleId: string): string;
-
- /**
- Resolve the path of a module like [`require.resolve()`](https://nodejs.org/api/globals.html#globals_require_resolve) but from a given path.
-
- @param fromDirectory - Directory to resolve from.
- @param moduleId - What you would use in `require()`.
- @returns Resolved module path or `undefined` when the module can't be found.
- */
- silent(fromDirectory: string, moduleId: string): string | undefined;
-};
-
-export = resolveFrom;
diff --git a/assets/node_modules/resolve-from/index.js b/assets/node_modules/resolve-from/index.js
deleted file mode 100644
index 44f291c..0000000
--- a/assets/node_modules/resolve-from/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-'use strict';
-const path = require('path');
-const Module = require('module');
-const fs = require('fs');
-
-const resolveFrom = (fromDirectory, moduleId, silent) => {
- if (typeof fromDirectory !== 'string') {
- throw new TypeError(`Expected \`fromDir\` to be of type \`string\`, got \`${typeof fromDirectory}\``);
- }
-
- if (typeof moduleId !== 'string') {
- throw new TypeError(`Expected \`moduleId\` to be of type \`string\`, got \`${typeof moduleId}\``);
- }
-
- try {
- fromDirectory = fs.realpathSync(fromDirectory);
- } catch (error) {
- if (error.code === 'ENOENT') {
- fromDirectory = path.resolve(fromDirectory);
- } else if (silent) {
- return;
- } else {
- throw error;
- }
- }
-
- const fromFile = path.join(fromDirectory, 'noop.js');
-
- const resolveFileName = () => Module._resolveFilename(moduleId, {
- id: fromFile,
- filename: fromFile,
- paths: Module._nodeModulePaths(fromDirectory)
- });
-
- if (silent) {
- try {
- return resolveFileName();
- } catch (error) {
- return;
- }
- }
-
- return resolveFileName();
-};
-
-module.exports = (fromDirectory, moduleId) => resolveFrom(fromDirectory, moduleId);
-module.exports.silent = (fromDirectory, moduleId) => resolveFrom(fromDirectory, moduleId, true);
diff --git a/assets/node_modules/resolve-from/license b/assets/node_modules/resolve-from/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/resolve-from/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/resolve-from/package.json b/assets/node_modules/resolve-from/package.json
deleted file mode 100644
index 733df16..0000000
--- a/assets/node_modules/resolve-from/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "name": "resolve-from",
- "version": "5.0.0",
- "description": "Resolve the path of a module like `require.resolve()` but from a given path",
- "license": "MIT",
- "repository": "sindresorhus/resolve-from",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "require",
- "resolve",
- "path",
- "module",
- "from",
- "like",
- "import"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/resolve-from/readme.md b/assets/node_modules/resolve-from/readme.md
deleted file mode 100644
index fd4f46f..0000000
--- a/assets/node_modules/resolve-from/readme.md
+++ /dev/null
@@ -1,72 +0,0 @@
-# resolve-from [![Build Status](https://travis-ci.org/sindresorhus/resolve-from.svg?branch=master)](https://travis-ci.org/sindresorhus/resolve-from)
-
-> Resolve the path of a module like [`require.resolve()`](https://nodejs.org/api/globals.html#globals_require_resolve) but from a given path
-
-
-## Install
-
-```
-$ npm install resolve-from
-```
-
-
-## Usage
-
-```js
-const resolveFrom = require('resolve-from');
-
-// There is a file at `./foo/bar.js`
-
-resolveFrom('foo', './bar');
-//=> '/Users/sindresorhus/dev/test/foo/bar.js'
-```
-
-
-## API
-
-### resolveFrom(fromDirectory, moduleId)
-
-Like `require()`, throws when the module can't be found.
-
-### resolveFrom.silent(fromDirectory, moduleId)
-
-Returns `undefined` instead of throwing when the module can't be found.
-
-#### fromDirectory
-
-Type: `string`
-
-Directory to resolve from.
-
-#### moduleId
-
-Type: `string`
-
-What you would use in `require()`.
-
-
-## Tip
-
-Create a partial using a bound function if you want to resolve from the same `fromDirectory` multiple times:
-
-```js
-const resolveFromFoo = resolveFrom.bind(null, 'foo');
-
-resolveFromFoo('./bar');
-resolveFromFoo('./baz');
-```
-
-
-## Related
-
-- [resolve-cwd](https://github.com/sindresorhus/resolve-cwd) - Resolve the path of a module from the current working directory
-- [import-from](https://github.com/sindresorhus/import-from) - Import a module from a given path
-- [import-cwd](https://github.com/sindresorhus/import-cwd) - Import a module from the current working directory
-- [resolve-pkg](https://github.com/sindresorhus/resolve-pkg) - Resolve the path of a package regardless of it having an entry point
-- [import-lazy](https://github.com/sindresorhus/import-lazy) - Import a module lazily
-- [resolve-global](https://github.com/sindresorhus/resolve-global) - Resolve the path of a globally installed module
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/resolve/.eslintignore b/assets/node_modules/resolve/.eslintignore
deleted file mode 100644
index 3c3629e..0000000
--- a/assets/node_modules/resolve/.eslintignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/assets/node_modules/resolve/.eslintrc b/assets/node_modules/resolve/.eslintrc
deleted file mode 100644
index a22863c..0000000
--- a/assets/node_modules/resolve/.eslintrc
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "extends": "@ljharb",
- "root": true,
- "rules": {
- "array-bracket-newline": 0,
- "array-element-newline": 0,
- "indent": [2, 4],
- "strict": 0,
- "complexity": 0,
- "consistent-return": 0,
- "curly": 0,
- "dot-notation": [2, { "allowKeywords": true }],
- "func-name-matching": 0,
- "func-style": 0,
- "global-require": 0,
- "id-length": [2, { "min": 1, "max": 30 }],
- "max-lines-per-function": 0,
- "max-nested-callbacks": 0,
- "max-params": 0,
- "max-statements-per-line": [2, { "max": 2 }],
- "max-statements": 0,
- "no-magic-numbers": 0,
- "no-console": 0,
- "no-shadow": 0,
- "no-unused-vars": [2, { "vars": "all", "args": "none" }],
- "no-use-before-define": 0,
- "object-curly-newline": 0,
- "operator-linebreak": [2, "before"],
- "sort-keys": 0,
- },
- "overrides": [
- {
- "files": "test/resolver/nested_symlinks/mylib/*.js",
- "rules": {
- "no-throw-literal": 0,
- },
- },
- ],
-}
diff --git a/assets/node_modules/resolve/.travis.yml b/assets/node_modules/resolve/.travis.yml
deleted file mode 100644
index 5ed0fa5..0000000
--- a/assets/node_modules/resolve/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-version: ~> 1.0
-language: node_js
-os:
- - linux
-import:
- - ljharb/travis-ci:node/all.yml
- - ljharb/travis-ci:node/pretest.yml
- - ljharb/travis-ci:node/posttest.yml
diff --git a/assets/node_modules/resolve/LICENSE b/assets/node_modules/resolve/LICENSE
deleted file mode 100644
index ff4fce2..0000000
--- a/assets/node_modules/resolve/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2012 James Halliday
-
-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/assets/node_modules/resolve/appveyor.yml b/assets/node_modules/resolve/appveyor.yml
deleted file mode 100644
index 729e8ea..0000000
--- a/assets/node_modules/resolve/appveyor.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-version: 1.0.{build}
-skip_branch_with_pr: true
-build: off
-
-environment:
- matrix:
- - nodejs_version: "12"
- - nodejs_version: "11"
- - nodejs_version: "10"
- - nodejs_version: "9"
- - nodejs_version: "8"
- - nodejs_version: "7"
- - nodejs_version: "6"
- - nodejs_version: "5"
- - nodejs_version: "4"
- - nodejs_version: "3"
- - nodejs_version: "2"
- - nodejs_version: "1"
- - nodejs_version: "0.12"
- - nodejs_version: "0.10"
- - nodejs_version: "0.8"
- - nodejs_version: "0.6"
-matrix:
- # fast_finish: true
- allow_failures:
- - nodejs_version: "0.8"
- - nodejs_version: "0.6"
-
-platform:
- - x86
- - x64
-
-# Install scripts. (runs after repo cloning)
-install:
- # Fix symlinks in working copy (see https://github.com/appveyor/ci/issues/650#issuecomment-186592582) / https://github.com/charleskorn/batect/commit/d08986802ec43086902958c4ee7e57ff3e71dbef
- - git config core.symlinks true
- - git reset --hard
- # Get the latest stable version of Node.js or io.js
- - ps: Install-Product node $env:nodejs_version $env:platform
- - IF %nodejs_version% EQU 0.6 npm config set strict-ssl false && npm -g install npm@1.3
- - IF %nodejs_version% EQU 0.8 npm config set strict-ssl false && npm -g install npm@1.4.28 && npm install -g npm@4.5
- - set PATH=%APPDATA%\npm;%PATH%
- #- IF %nodejs_version% NEQ 0.6 AND %nodejs_version% NEQ 0.8 npm -g install npm
- # install modules
- - npm install
-
-# Post-install test scripts.
-test_script:
- # Output useful info for debugging.
- - node --version
- - npm --version
- # run tests
- - npm run tests-only
diff --git a/assets/node_modules/resolve/example/async.js b/assets/node_modules/resolve/example/async.js
deleted file mode 100644
index 20e65dc..0000000
--- a/assets/node_modules/resolve/example/async.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var resolve = require('../');
-resolve('tap', { basedir: __dirname }, function (err, res) {
- if (err) console.error(err);
- else console.log(res);
-});
diff --git a/assets/node_modules/resolve/example/sync.js b/assets/node_modules/resolve/example/sync.js
deleted file mode 100644
index 54b2cc1..0000000
--- a/assets/node_modules/resolve/example/sync.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var resolve = require('../');
-var res = resolve.sync('tap', { basedir: __dirname });
-console.log(res);
diff --git a/assets/node_modules/resolve/index.js b/assets/node_modules/resolve/index.js
deleted file mode 100644
index 125d814..0000000
--- a/assets/node_modules/resolve/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var async = require('./lib/async');
-async.core = require('./lib/core');
-async.isCore = require('./lib/is-core');
-async.sync = require('./lib/sync');
-
-module.exports = async;
diff --git a/assets/node_modules/resolve/lib/async.js b/assets/node_modules/resolve/lib/async.js
deleted file mode 100644
index eedb74f..0000000
--- a/assets/node_modules/resolve/lib/async.js
+++ /dev/null
@@ -1,290 +0,0 @@
-var fs = require('fs');
-var path = require('path');
-var caller = require('./caller.js');
-var nodeModulesPaths = require('./node-modules-paths.js');
-var normalizeOptions = require('./normalize-options.js');
-var isCore = require('./is-core');
-
-var defaultIsFile = function isFile(file, cb) {
- fs.stat(file, function (err, stat) {
- if (!err) {
- return cb(null, stat.isFile() || stat.isFIFO());
- }
- if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
- return cb(err);
- });
-};
-
-var defaultIsDir = function isDirectory(dir, cb) {
- fs.stat(dir, function (err, stat) {
- if (!err) {
- return cb(null, stat.isDirectory());
- }
- if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
- return cb(err);
- });
-};
-
-var maybeUnwrapSymlink = function maybeUnwrapSymlink(x, opts, cb) {
- if (opts && opts.preserveSymlinks === false) {
- fs.realpath(x, function (realPathErr, realPath) {
- if (realPathErr && realPathErr.code !== 'ENOENT') cb(realPathErr);
- else cb(null, realPathErr ? x : realPath);
- });
- } else {
- cb(null, x);
- }
-};
-
-var getPackageCandidates = function getPackageCandidates(x, start, opts) {
- var dirs = nodeModulesPaths(start, opts, x);
- for (var i = 0; i < dirs.length; i++) {
- dirs[i] = path.join(dirs[i], x);
- }
- return dirs;
-};
-
-module.exports = function resolve(x, options, callback) {
- var cb = callback;
- var opts = options;
- if (typeof options === 'function') {
- cb = opts;
- opts = {};
- }
- if (typeof x !== 'string') {
- var err = new TypeError('Path must be a string.');
- return process.nextTick(function () {
- cb(err);
- });
- }
-
- opts = normalizeOptions(x, opts);
-
- var isFile = opts.isFile || defaultIsFile;
- var isDirectory = opts.isDirectory || defaultIsDir;
- var readFile = opts.readFile || fs.readFile;
- var packageIterator = opts.packageIterator;
-
- var extensions = opts.extensions || ['.js'];
- var basedir = opts.basedir || path.dirname(caller());
- var parent = opts.filename || basedir;
-
- opts.paths = opts.paths || [];
-
- // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
- var absoluteStart = path.resolve(basedir);
-
- maybeUnwrapSymlink(
- absoluteStart,
- opts,
- function (err, realStart) {
- if (err) cb(err);
- else init(realStart);
- }
- );
-
- var res;
- function init(basedir) {
- if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) {
- res = path.resolve(basedir, x);
- if (x === '..' || x.slice(-1) === '/') res += '/';
- if ((/\/$/).test(x) && res === basedir) {
- loadAsDirectory(res, opts.package, onfile);
- } else loadAsFile(res, opts.package, onfile);
- } else if (isCore(x)) {
- return cb(null, x);
- } else loadNodeModules(x, basedir, function (err, n, pkg) {
- if (err) cb(err);
- else if (n) {
- return maybeUnwrapSymlink(n, opts, function (err, realN) {
- if (err) {
- cb(err);
- } else {
- cb(null, realN, pkg);
- }
- });
- } else {
- var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
- moduleError.code = 'MODULE_NOT_FOUND';
- cb(moduleError);
- }
- });
- }
-
- function onfile(err, m, pkg) {
- if (err) cb(err);
- else if (m) cb(null, m, pkg);
- else loadAsDirectory(res, function (err, d, pkg) {
- if (err) cb(err);
- else if (d) {
- maybeUnwrapSymlink(d, opts, function (err, realD) {
- if (err) {
- cb(err);
- } else {
- cb(null, realD, pkg);
- }
- });
- } else {
- var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
- moduleError.code = 'MODULE_NOT_FOUND';
- cb(moduleError);
- }
- });
- }
-
- function loadAsFile(x, thePackage, callback) {
- var loadAsFilePackage = thePackage;
- var cb = callback;
- if (typeof loadAsFilePackage === 'function') {
- cb = loadAsFilePackage;
- loadAsFilePackage = undefined;
- }
-
- var exts = [''].concat(extensions);
- load(exts, x, loadAsFilePackage);
-
- function load(exts, x, loadPackage) {
- if (exts.length === 0) return cb(null, undefined, loadPackage);
- var file = x + exts[0];
-
- var pkg = loadPackage;
- if (pkg) onpkg(null, pkg);
- else loadpkg(path.dirname(file), onpkg);
-
- function onpkg(err, pkg_, dir) {
- pkg = pkg_;
- if (err) return cb(err);
- if (dir && pkg && opts.pathFilter) {
- var rfile = path.relative(dir, file);
- var rel = rfile.slice(0, rfile.length - exts[0].length);
- var r = opts.pathFilter(pkg, x, rel);
- if (r) return load(
- [''].concat(extensions.slice()),
- path.resolve(dir, r),
- pkg
- );
- }
- isFile(file, onex);
- }
- function onex(err, ex) {
- if (err) return cb(err);
- if (ex) return cb(null, file, pkg);
- load(exts.slice(1), x, pkg);
- }
- }
- }
-
- function loadpkg(dir, cb) {
- if (dir === '' || dir === '/') return cb(null);
- if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) {
- return cb(null);
- }
- if ((/[/\\]node_modules[/\\]*$/).test(dir)) return cb(null);
-
- maybeUnwrapSymlink(dir, opts, function (unwrapErr, pkgdir) {
- if (unwrapErr) return loadpkg(path.dirname(dir), cb);
- var pkgfile = path.join(pkgdir, 'package.json');
- isFile(pkgfile, function (err, ex) {
- // on err, ex is false
- if (!ex) return loadpkg(path.dirname(dir), cb);
-
- readFile(pkgfile, function (err, body) {
- if (err) cb(err);
- try { var pkg = JSON.parse(body); } catch (jsonErr) {}
-
- if (pkg && opts.packageFilter) {
- pkg = opts.packageFilter(pkg, pkgfile);
- }
- cb(null, pkg, dir);
- });
- });
- });
- }
-
- function loadAsDirectory(x, loadAsDirectoryPackage, callback) {
- var cb = callback;
- var fpkg = loadAsDirectoryPackage;
- if (typeof fpkg === 'function') {
- cb = fpkg;
- fpkg = opts.package;
- }
-
- maybeUnwrapSymlink(x, opts, function (unwrapErr, pkgdir) {
- if (unwrapErr) return cb(unwrapErr);
- var pkgfile = path.join(pkgdir, 'package.json');
- isFile(pkgfile, function (err, ex) {
- if (err) return cb(err);
- if (!ex) return loadAsFile(path.join(x, 'index'), fpkg, cb);
-
- readFile(pkgfile, function (err, body) {
- if (err) return cb(err);
- try {
- var pkg = JSON.parse(body);
- } catch (jsonErr) {}
-
- if (pkg && opts.packageFilter) {
- pkg = opts.packageFilter(pkg, pkgfile);
- }
-
- if (pkg && pkg.main) {
- if (typeof pkg.main !== 'string') {
- var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string');
- mainError.code = 'INVALID_PACKAGE_MAIN';
- return cb(mainError);
- }
- if (pkg.main === '.' || pkg.main === './') {
- pkg.main = 'index';
- }
- loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) {
- if (err) return cb(err);
- if (m) return cb(null, m, pkg);
- if (!pkg) return loadAsFile(path.join(x, 'index'), pkg, cb);
-
- var dir = path.resolve(x, pkg.main);
- loadAsDirectory(dir, pkg, function (err, n, pkg) {
- if (err) return cb(err);
- if (n) return cb(null, n, pkg);
- loadAsFile(path.join(x, 'index'), pkg, cb);
- });
- });
- return;
- }
-
- loadAsFile(path.join(x, '/index'), pkg, cb);
- });
- });
- });
- }
-
- function processDirs(cb, dirs) {
- if (dirs.length === 0) return cb(null, undefined);
- var dir = dirs[0];
-
- isDirectory(path.dirname(dir), isdir);
-
- function isdir(err, isdir) {
- if (err) return cb(err);
- if (!isdir) return processDirs(cb, dirs.slice(1));
- loadAsFile(dir, opts.package, onfile);
- }
-
- function onfile(err, m, pkg) {
- if (err) return cb(err);
- if (m) return cb(null, m, pkg);
- loadAsDirectory(dir, opts.package, ondir);
- }
-
- function ondir(err, n, pkg) {
- if (err) return cb(err);
- if (n) return cb(null, n, pkg);
- processDirs(cb, dirs.slice(1));
- }
- }
- function loadNodeModules(x, start, cb) {
- var thunk = function () { return getPackageCandidates(x, start, opts); };
- processDirs(
- cb,
- packageIterator ? packageIterator(x, start, thunk, opts) : thunk()
- );
- }
-};
diff --git a/assets/node_modules/resolve/lib/caller.js b/assets/node_modules/resolve/lib/caller.js
deleted file mode 100644
index b14a280..0000000
--- a/assets/node_modules/resolve/lib/caller.js
+++ /dev/null
@@ -1,8 +0,0 @@
-module.exports = function () {
- // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
- var origPrepareStackTrace = Error.prepareStackTrace;
- Error.prepareStackTrace = function (_, stack) { return stack; };
- var stack = (new Error()).stack;
- Error.prepareStackTrace = origPrepareStackTrace;
- return stack[2].getFileName();
-};
diff --git a/assets/node_modules/resolve/lib/core.js b/assets/node_modules/resolve/lib/core.js
deleted file mode 100644
index 0877650..0000000
--- a/assets/node_modules/resolve/lib/core.js
+++ /dev/null
@@ -1,53 +0,0 @@
-var current = (process.versions && process.versions.node && process.versions.node.split('.')) || [];
-
-function specifierIncluded(specifier) {
- var parts = specifier.split(' ');
- var op = parts.length > 1 ? parts[0] : '=';
- var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.');
-
- for (var i = 0; i < 3; ++i) {
- var cur = Number(current[i] || 0);
- var ver = Number(versionParts[i] || 0);
- if (cur === ver) {
- continue; // eslint-disable-line no-restricted-syntax, no-continue
- }
- if (op === '<') {
- return cur < ver;
- } else if (op === '>=') {
- return cur >= ver;
- } else {
- return false;
- }
- }
- return op === '>=';
-}
-
-function matchesRange(range) {
- var specifiers = range.split(/ ?&& ?/);
- if (specifiers.length === 0) { return false; }
- for (var i = 0; i < specifiers.length; ++i) {
- if (!specifierIncluded(specifiers[i])) { return false; }
- }
- return true;
-}
-
-function versionIncluded(specifierValue) {
- if (typeof specifierValue === 'boolean') { return specifierValue; }
- if (specifierValue && typeof specifierValue === 'object') {
- for (var i = 0; i < specifierValue.length; ++i) {
- if (matchesRange(specifierValue[i])) { return true; }
- }
- return false;
- }
- return matchesRange(specifierValue);
-}
-
-var data = require('./core.json');
-
-var core = {};
-for (var mod in data) { // eslint-disable-line no-restricted-syntax
- if (Object.prototype.hasOwnProperty.call(data, mod)) {
- core[mod] = versionIncluded(data[mod]);
- }
-}
-module.exports = core;
diff --git a/assets/node_modules/resolve/lib/core.json b/assets/node_modules/resolve/lib/core.json
deleted file mode 100644
index d5c85d2..0000000
--- a/assets/node_modules/resolve/lib/core.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "assert": true,
- "async_hooks": ">= 8",
- "buffer_ieee754": "< 0.9.7",
- "buffer": true,
- "child_process": true,
- "cluster": true,
- "console": true,
- "constants": true,
- "crypto": true,
- "_debug_agent": ">= 1 && < 8",
- "_debugger": "< 8",
- "dgram": true,
- "dns": true,
- "domain": true,
- "events": true,
- "freelist": "< 6",
- "fs": true,
- "fs/promises": ">= 10 && < 10.1",
- "_http_agent": ">= 0.11.1",
- "_http_client": ">= 0.11.1",
- "_http_common": ">= 0.11.1",
- "_http_incoming": ">= 0.11.1",
- "_http_outgoing": ">= 0.11.1",
- "_http_server": ">= 0.11.1",
- "http": true,
- "http2": ">= 8.8",
- "https": true,
- "inspector": ">= 8.0.0",
- "_linklist": "< 8",
- "module": true,
- "net": true,
- "node-inspect/lib/_inspect": ">= 7.6.0 && < 12",
- "node-inspect/lib/internal/inspect_client": ">= 7.6.0 && < 12",
- "node-inspect/lib/internal/inspect_repl": ">= 7.6.0 && < 12",
- "os": true,
- "path": true,
- "perf_hooks": ">= 8.5",
- "process": ">= 1",
- "punycode": true,
- "querystring": true,
- "readline": true,
- "repl": true,
- "smalloc": ">= 0.11.5 && < 3",
- "_stream_duplex": ">= 0.9.4",
- "_stream_transform": ">= 0.9.4",
- "_stream_wrap": ">= 1.4.1",
- "_stream_passthrough": ">= 0.9.4",
- "_stream_readable": ">= 0.9.4",
- "_stream_writable": ">= 0.9.4",
- "stream": true,
- "string_decoder": true,
- "sys": true,
- "timers": true,
- "_tls_common": ">= 0.11.13",
- "_tls_legacy": ">= 0.11.3 && < 10",
- "_tls_wrap": ">= 0.11.3",
- "tls": true,
- "trace_events": ">= 10",
- "tty": true,
- "url": true,
- "util": true,
- "v8/tools/arguments": ">= 10 && < 12",
- "v8/tools/codemap": [">= 4.4.0 && < 5", ">= 5.2.0 && < 12"],
- "v8/tools/consarray": [">= 4.4.0 && < 5", ">= 5.2.0 && < 12"],
- "v8/tools/csvparser": [">= 4.4.0 && < 5", ">= 5.2.0 && < 12"],
- "v8/tools/logreader": [">= 4.4.0 && < 5", ">= 5.2.0 && < 12"],
- "v8/tools/profile_view": [">= 4.4.0 && < 5", ">= 5.2.0 && < 12"],
- "v8/tools/splaytree": [">= 4.4.0 && < 5", ">= 5.2.0 && < 12"],
- "v8": ">= 1",
- "vm": true,
- "wasi": ">= 13.4 && < 13.5",
- "worker_threads": ">= 11.7",
- "zlib": true
-}
diff --git a/assets/node_modules/resolve/lib/is-core.js b/assets/node_modules/resolve/lib/is-core.js
deleted file mode 100644
index 48bc96c..0000000
--- a/assets/node_modules/resolve/lib/is-core.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var core = require('./core');
-
-module.exports = function isCore(x) {
- return Object.prototype.hasOwnProperty.call(core, x);
-};
diff --git a/assets/node_modules/resolve/lib/node-modules-paths.js b/assets/node_modules/resolve/lib/node-modules-paths.js
deleted file mode 100644
index 2b43813..0000000
--- a/assets/node_modules/resolve/lib/node-modules-paths.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var path = require('path');
-var parse = path.parse || require('path-parse');
-
-var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) {
- var prefix = '/';
- if ((/^([A-Za-z]:)/).test(absoluteStart)) {
- prefix = '';
- } else if ((/^\\\\/).test(absoluteStart)) {
- prefix = '\\\\';
- }
-
- var paths = [absoluteStart];
- var parsed = parse(absoluteStart);
- while (parsed.dir !== paths[paths.length - 1]) {
- paths.push(parsed.dir);
- parsed = parse(parsed.dir);
- }
-
- return paths.reduce(function (dirs, aPath) {
- return dirs.concat(modules.map(function (moduleDir) {
- return path.resolve(prefix, aPath, moduleDir);
- }));
- }, []);
-};
-
-module.exports = function nodeModulesPaths(start, opts, request) {
- var modules = opts && opts.moduleDirectory
- ? [].concat(opts.moduleDirectory)
- : ['node_modules'];
-
- if (opts && typeof opts.paths === 'function') {
- return opts.paths(
- request,
- start,
- function () { return getNodeModulesDirs(start, modules); },
- opts
- );
- }
-
- var dirs = getNodeModulesDirs(start, modules);
- return opts && opts.paths ? dirs.concat(opts.paths) : dirs;
-};
diff --git a/assets/node_modules/resolve/lib/normalize-options.js b/assets/node_modules/resolve/lib/normalize-options.js
deleted file mode 100644
index 4b56904..0000000
--- a/assets/node_modules/resolve/lib/normalize-options.js
+++ /dev/null
@@ -1,10 +0,0 @@
-module.exports = function (x, opts) {
- /**
- * This file is purposefully a passthrough. It's expected that third-party
- * environments will override it at runtime in order to inject special logic
- * into `resolve` (by manipulating the options). One such example is the PnP
- * code path in Yarn.
- */
-
- return opts || {};
-};
diff --git a/assets/node_modules/resolve/lib/sync.js b/assets/node_modules/resolve/lib/sync.js
deleted file mode 100644
index b2d50ae..0000000
--- a/assets/node_modules/resolve/lib/sync.js
+++ /dev/null
@@ -1,183 +0,0 @@
-var isCore = require('./is-core');
-var fs = require('fs');
-var path = require('path');
-var caller = require('./caller.js');
-var nodeModulesPaths = require('./node-modules-paths.js');
-var normalizeOptions = require('./normalize-options.js');
-
-var defaultIsFile = function isFile(file) {
- try {
- var stat = fs.statSync(file);
- } catch (e) {
- if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
- throw e;
- }
- return stat.isFile() || stat.isFIFO();
-};
-
-var defaultIsDir = function isDirectory(dir) {
- try {
- var stat = fs.statSync(dir);
- } catch (e) {
- if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
- throw e;
- }
- return stat.isDirectory();
-};
-
-var maybeUnwrapSymlink = function maybeUnwrapSymlink(x, opts) {
- if (opts && opts.preserveSymlinks === false) {
- try {
- return fs.realpathSync(x);
- } catch (realPathErr) {
- if (realPathErr.code !== 'ENOENT') {
- throw realPathErr;
- }
- }
- }
- return x;
-};
-
-var getPackageCandidates = function getPackageCandidates(x, start, opts) {
- var dirs = nodeModulesPaths(start, opts, x);
- for (var i = 0; i < dirs.length; i++) {
- dirs[i] = path.join(dirs[i], x);
- }
- return dirs;
-};
-
-module.exports = function resolveSync(x, options) {
- if (typeof x !== 'string') {
- throw new TypeError('Path must be a string.');
- }
- var opts = normalizeOptions(x, options);
-
- var isFile = opts.isFile || defaultIsFile;
- var readFileSync = opts.readFileSync || fs.readFileSync;
- var isDirectory = opts.isDirectory || defaultIsDir;
- var packageIterator = opts.packageIterator;
-
- var extensions = opts.extensions || ['.js'];
- var basedir = opts.basedir || path.dirname(caller());
- var parent = opts.filename || basedir;
-
- opts.paths = opts.paths || [];
-
- // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
- var absoluteStart = maybeUnwrapSymlink(path.resolve(basedir), opts);
-
- if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) {
- var res = path.resolve(absoluteStart, x);
- if (x === '..' || x.slice(-1) === '/') res += '/';
- var m = loadAsFileSync(res) || loadAsDirectorySync(res);
- if (m) return maybeUnwrapSymlink(m, opts);
- } else if (isCore(x)) {
- return x;
- } else {
- var n = loadNodeModulesSync(x, absoluteStart);
- if (n) return maybeUnwrapSymlink(n, opts);
- }
-
- var err = new Error("Cannot find module '" + x + "' from '" + parent + "'");
- err.code = 'MODULE_NOT_FOUND';
- throw err;
-
- function loadAsFileSync(x) {
- var pkg = loadpkg(path.dirname(x));
-
- if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) {
- var rfile = path.relative(pkg.dir, x);
- var r = opts.pathFilter(pkg.pkg, x, rfile);
- if (r) {
- x = path.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign
- }
- }
-
- if (isFile(x)) {
- return x;
- }
-
- for (var i = 0; i < extensions.length; i++) {
- var file = x + extensions[i];
- if (isFile(file)) {
- return file;
- }
- }
- }
-
- function loadpkg(dir) {
- if (dir === '' || dir === '/') return;
- if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) {
- return;
- }
- if ((/[/\\]node_modules[/\\]*$/).test(dir)) return;
-
- var pkgfile = path.join(maybeUnwrapSymlink(dir, opts), 'package.json');
-
- if (!isFile(pkgfile)) {
- return loadpkg(path.dirname(dir));
- }
-
- var body = readFileSync(pkgfile);
-
- try {
- var pkg = JSON.parse(body);
- } catch (jsonErr) {}
-
- if (pkg && opts.packageFilter) {
- // v2 will pass pkgfile
- pkg = opts.packageFilter(pkg, /*pkgfile,*/ dir); // eslint-disable-line spaced-comment
- }
-
- return { pkg: pkg, dir: dir };
- }
-
- function loadAsDirectorySync(x) {
- var pkgfile = path.join(maybeUnwrapSymlink(x, opts), '/package.json');
- if (isFile(pkgfile)) {
- try {
- var body = readFileSync(pkgfile, 'UTF8');
- var pkg = JSON.parse(body);
- } catch (e) {}
-
- if (pkg && opts.packageFilter) {
- // v2 will pass pkgfile
- pkg = opts.packageFilter(pkg, /*pkgfile,*/ x); // eslint-disable-line spaced-comment
- }
-
- if (pkg && pkg.main) {
- if (typeof pkg.main !== 'string') {
- var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string');
- mainError.code = 'INVALID_PACKAGE_MAIN';
- throw mainError;
- }
- if (pkg.main === '.' || pkg.main === './') {
- pkg.main = 'index';
- }
- try {
- var m = loadAsFileSync(path.resolve(x, pkg.main));
- if (m) return m;
- var n = loadAsDirectorySync(path.resolve(x, pkg.main));
- if (n) return n;
- } catch (e) {}
- }
- }
-
- return loadAsFileSync(path.join(x, '/index'));
- }
-
- function loadNodeModulesSync(x, start) {
- var thunk = function () { return getPackageCandidates(x, start, opts); };
- var dirs = packageIterator ? packageIterator(x, start, thunk, opts) : thunk();
-
- for (var i = 0; i < dirs.length; i++) {
- var dir = dirs[i];
- if (isDirectory(path.dirname(dir))) {
- var m = loadAsFileSync(dir);
- if (m) return m;
- var n = loadAsDirectorySync(dir);
- if (n) return n;
- }
- }
- }
-};
diff --git a/assets/node_modules/resolve/package.json b/assets/node_modules/resolve/package.json
deleted file mode 100644
index 43f6288..0000000
--- a/assets/node_modules/resolve/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "name": "resolve",
- "description": "resolve like require.resolve() on behalf of files asynchronously and synchronously",
- "version": "1.15.0",
- "repository": {
- "type": "git",
- "url": "git://github.com/browserify/resolve.git"
- },
- "main": "index.js",
- "keywords": [
- "resolve",
- "require",
- "node",
- "module"
- ],
- "scripts": {
- "prepublish": "safe-publish-latest",
- "lint": "eslint .",
- "pretests-only": "cd ./test/resolver/nested_symlinks && node mylib/sync && node mylib/async",
- "tests-only": "tape test/*.js",
- "pretest": "npm run lint",
- "test": "npm run --silent tests-only",
- "posttest": "npm run test:multirepo",
- "test:multirepo": "cd ./test/resolver/multirepo && npm install && npm test"
- },
- "devDependencies": {
- "@ljharb/eslint-config": "^15.1.0",
- "array.prototype.map": "^1.0.2",
- "eslint": "^6.8.0",
- "object-keys": "^1.1.1",
- "safe-publish-latest": "^1.1.4",
- "tap": "0.4.13",
- "tape": "^5.0.0-next.4"
- },
- "license": "MIT",
- "author": {
- "name": "James Halliday",
- "email": "mail@substack.net",
- "url": "http://substack.net"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- },
- "dependencies": {
- "path-parse": "^1.0.6"
- }
-}
diff --git a/assets/node_modules/resolve/readme.markdown b/assets/node_modules/resolve/readme.markdown
deleted file mode 100644
index 60c20d9..0000000
--- a/assets/node_modules/resolve/readme.markdown
+++ /dev/null
@@ -1,220 +0,0 @@
-# resolve
-
-implements the [node `require.resolve()`
-algorithm](https://nodejs.org/api/modules.html#modules_all_together)
-such that you can `require.resolve()` on behalf of a file asynchronously and
-synchronously
-
-[![build status](https://secure.travis-ci.org/browserify/resolve.png)](http://travis-ci.org/browserify/resolve)
-
-# example
-
-asynchronously resolve:
-
-```js
-var resolve = require('resolve');
-resolve('tap', { basedir: __dirname }, function (err, res) {
- if (err) console.error(err);
- else console.log(res);
-});
-```
-
-```
-$ node example/async.js
-/home/substack/projects/node-resolve/node_modules/tap/lib/main.js
-```
-
-synchronously resolve:
-
-```js
-var resolve = require('resolve');
-var res = resolve.sync('tap', { basedir: __dirname });
-console.log(res);
-```
-
-```
-$ node example/sync.js
-/home/substack/projects/node-resolve/node_modules/tap/lib/main.js
-```
-
-# methods
-
-```js
-var resolve = require('resolve');
-```
-
-## resolve(id, opts={}, cb)
-
-Asynchronously resolve the module path string `id` into `cb(err, res [, pkg])`, where `pkg` (if defined) is the data from `package.json`.
-
-options are:
-
-* opts.basedir - directory to begin resolving from
-
-* opts.package - `package.json` data applicable to the module being loaded
-
-* opts.extensions - array of file extensions to search in order
-
-* opts.readFile - how to read files asynchronously
-
-* opts.isFile - function to asynchronously test whether a file exists
-
-* opts.isDirectory - function to asynchronously test whether a directory exists
-
-* `opts.packageFilter(pkg, pkgfile, dir)` - transform the parsed package.json contents before looking at the "main" field
- * pkg - package data
- * pkgfile - path to package.json
- * dir - directory for package.json
-
-* `opts.pathFilter(pkg, path, relativePath)` - transform a path within a package
- * pkg - package data
- * path - the path being resolved
- * relativePath - the path relative from the package.json location
- * returns - a relative path that will be joined from the package.json location
-
-* opts.paths - require.paths array to use if nothing is found on the normal `node_modules` recursive walk (probably don't use this)
-
- For advanced users, `paths` can also be a `opts.paths(request, start, opts)` function
- * request - the import specifier being resolved
- * start - lookup path
- * getNodeModulesDirs - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution
- * opts - the resolution options
-
-* `opts.packageIterator(request, start, opts)` - return the list of candidate paths where the packages sources may be found (probably don't use this)
- * request - the import specifier being resolved
- * start - lookup path
- * getPackageCandidates - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution
- * opts - the resolution options
-
-* opts.moduleDirectory - directory (or directories) in which to recursively look for modules. default: `"node_modules"`
-
-* opts.preserveSymlinks - if true, doesn't resolve `basedir` to real path before resolving.
-This is the way Node resolves dependencies when executed with the [--preserve-symlinks](https://nodejs.org/api/all.html#cli_preserve_symlinks) flag.
-**Note:** this property is currently `true` by default but it will be changed to
-`false` in the next major version because *Node's resolution algorithm does not preserve symlinks by default*.
-
-default `opts` values:
-
-```js
-{
- paths: [],
- basedir: __dirname,
- extensions: ['.js'],
- readFile: fs.readFile,
- isFile: function isFile(file, cb) {
- fs.stat(file, function (err, stat) {
- if (!err) {
- return cb(null, stat.isFile() || stat.isFIFO());
- }
- if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
- return cb(err);
- });
- },
- isDirectory: function isDirectory(dir, cb) {
- fs.stat(dir, function (err, stat) {
- if (!err) {
- return cb(null, stat.isDirectory());
- }
- if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
- return cb(err);
- });
- },
- moduleDirectory: 'node_modules',
- preserveSymlinks: true
-}
-```
-
-## resolve.sync(id, opts)
-
-Synchronously resolve the module path string `id`, returning the result and
-throwing an error when `id` can't be resolved.
-
-options are:
-
-* opts.basedir - directory to begin resolving from
-
-* opts.extensions - array of file extensions to search in order
-
-* opts.readFile - how to read files synchronously
-
-* opts.isFile - function to synchronously test whether a file exists
-
-* opts.isDirectory - function to synchronously test whether a directory exists
-
-* `opts.packageFilter(pkg, dir)` - transform the parsed package.json contents before looking at the "main" field
- * pkg - package data
- * dir - directory for package.json (Note: the second argument will change to "pkgfile" in v2)
-
-* `opts.pathFilter(pkg, path, relativePath)` - transform a path within a package
- * pkg - package data
- * path - the path being resolved
- * relativePath - the path relative from the package.json location
- * returns - a relative path that will be joined from the package.json location
-
-* opts.paths - require.paths array to use if nothing is found on the normal `node_modules` recursive walk (probably don't use this)
-
- For advanced users, `paths` can also be a `opts.paths(request, start, opts)` function
- * request - the import specifier being resolved
- * start - lookup path
- * getNodeModulesDirs - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution
- * opts - the resolution options
-
-* `opts.packageIterator(request, start, opts)` - return the list of candidate paths where the packages sources may be found (probably don't use this)
- * request - the import specifier being resolved
- * start - lookup path
- * getPackageCandidates - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution
- * opts - the resolution options
-
-* opts.moduleDirectory - directory (or directories) in which to recursively look for modules. default: `"node_modules"`
-
-* opts.preserveSymlinks - if true, doesn't resolve `basedir` to real path before resolving.
-This is the way Node resolves dependencies when executed with the [--preserve-symlinks](https://nodejs.org/api/all.html#cli_preserve_symlinks) flag.
-**Note:** this property is currently `true` by default but it will be changed to
-`false` in the next major version because *Node's resolution algorithm does not preserve symlinks by default*.
-
-default `opts` values:
-
-```js
-{
- paths: [],
- basedir: __dirname,
- extensions: ['.js'],
- readFileSync: fs.readFileSync,
- isFile: function isFile(file) {
- try {
- var stat = fs.statSync(file);
- } catch (e) {
- if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
- throw e;
- }
- return stat.isFile() || stat.isFIFO();
- },
- isDirectory: function isDirectory(dir) {
- try {
- var stat = fs.statSync(dir);
- } catch (e) {
- if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
- throw e;
- }
- return stat.isDirectory();
- },
- moduleDirectory: 'node_modules',
- preserveSymlinks: true
-}
-```
-
-## resolve.isCore(pkg)
-
-Return whether a package is in core.
-
-# install
-
-With [npm](https://npmjs.org) do:
-
-```sh
-npm install resolve
-```
-
-# license
-
-MIT
diff --git a/assets/node_modules/resolve/test/.eslintrc b/assets/node_modules/resolve/test/.eslintrc
deleted file mode 100644
index ddd262d..0000000
--- a/assets/node_modules/resolve/test/.eslintrc
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "rules": {
- "max-lines": 0
- }
-}
diff --git a/assets/node_modules/resolve/test/core.js b/assets/node_modules/resolve/test/core.js
deleted file mode 100644
index 4c111e1..0000000
--- a/assets/node_modules/resolve/test/core.js
+++ /dev/null
@@ -1,85 +0,0 @@
-var test = require('tape');
-var keys = require('object-keys');
-var resolve = require('../');
-
-test('core modules', function (t) {
- t.test('isCore()', function (st) {
- st.ok(resolve.isCore('fs'));
- st.ok(resolve.isCore('net'));
- st.ok(resolve.isCore('http'));
-
- st.ok(!resolve.isCore('seq'));
- st.ok(!resolve.isCore('../'));
-
- st.ok(!resolve.isCore('toString'));
-
- st.end();
- });
-
- t.test('core list', function (st) {
- var cores = keys(resolve.core);
- st.plan(cores.length);
-
- for (var i = 0; i < cores.length; ++i) {
- var mod = cores[i];
- if (resolve.core[mod]) {
- st.doesNotThrow(
- function () { require(mod); }, // eslint-disable-line no-loop-func
- mod + ' supported; requiring does not throw'
- );
- } else {
- st.throws(
- function () { require(mod); }, // eslint-disable-line no-loop-func
- mod + ' not supported; requiring throws'
- );
- }
- }
-
- st.end();
- });
-
- t.test('core via repl module', { skip: !resolve.core.repl }, function (st) {
- var libs = require('repl')._builtinLibs; // eslint-disable-line no-underscore-dangle
- if (!libs) {
- st.skip('module.builtinModules does not exist');
- return st.end();
- }
- for (var i = 0; i < libs.length; ++i) {
- var mod = libs[i];
- st.ok(resolve.core[mod], mod + ' is a core module');
- st.doesNotThrow(
- function () { require(mod); }, // eslint-disable-line no-loop-func
- 'requiring ' + mod + ' does not throw'
- );
- }
- st.end();
- });
-
- t.test('core via builtinModules list', { skip: !resolve.core.module }, function (st) {
- var libs = require('module').builtinModules;
- if (!libs) {
- st.skip('module.builtinModules does not exist');
- return st.end();
- }
- var blacklist = [
- '_debug_agent',
- 'v8/tools/tickprocessor-driver',
- 'v8/tools/SourceMap',
- 'v8/tools/tickprocessor',
- 'v8/tools/profile'
- ];
- for (var i = 0; i < libs.length; ++i) {
- var mod = libs[i];
- if (blacklist.indexOf(mod) === -1) {
- st.ok(resolve.core[mod], mod + ' is a core module');
- st.doesNotThrow(
- function () { require(mod); }, // eslint-disable-line no-loop-func
- 'requiring ' + mod + ' does not throw'
- );
- }
- }
- st.end();
- });
-
- t.end();
-});
diff --git a/assets/node_modules/resolve/test/dotdot.js b/assets/node_modules/resolve/test/dotdot.js
deleted file mode 100644
index 3080665..0000000
--- a/assets/node_modules/resolve/test/dotdot.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var path = require('path');
-var test = require('tape');
-var resolve = require('../');
-
-test('dotdot', function (t) {
- t.plan(4);
- var dir = path.join(__dirname, '/dotdot/abc');
-
- resolve('..', { basedir: dir }, function (err, res, pkg) {
- t.ifError(err);
- t.equal(res, path.join(__dirname, 'dotdot/index.js'));
- });
-
- resolve('.', { basedir: dir }, function (err, res, pkg) {
- t.ifError(err);
- t.equal(res, path.join(dir, 'index.js'));
- });
-});
-
-test('dotdot sync', function (t) {
- t.plan(2);
- var dir = path.join(__dirname, '/dotdot/abc');
-
- var a = resolve.sync('..', { basedir: dir });
- t.equal(a, path.join(__dirname, 'dotdot/index.js'));
-
- var b = resolve.sync('.', { basedir: dir });
- t.equal(b, path.join(dir, 'index.js'));
-});
diff --git a/assets/node_modules/resolve/test/dotdot/abc/index.js b/assets/node_modules/resolve/test/dotdot/abc/index.js
deleted file mode 100644
index 67f2534..0000000
--- a/assets/node_modules/resolve/test/dotdot/abc/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var x = require('..');
-console.log(x);
diff --git a/assets/node_modules/resolve/test/dotdot/index.js b/assets/node_modules/resolve/test/dotdot/index.js
deleted file mode 100644
index 643f9fc..0000000
--- a/assets/node_modules/resolve/test/dotdot/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 'whatever';
diff --git a/assets/node_modules/resolve/test/faulty_basedir.js b/assets/node_modules/resolve/test/faulty_basedir.js
deleted file mode 100644
index 5f2141a..0000000
--- a/assets/node_modules/resolve/test/faulty_basedir.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var test = require('tape');
-var path = require('path');
-var resolve = require('../');
-
-test('faulty basedir must produce error in windows', { skip: process.platform !== 'win32' }, function (t) {
- t.plan(1);
-
- var resolverDir = 'C:\\a\\b\\c\\d';
-
- resolve('tape/lib/test.js', { basedir: resolverDir }, function (err, res, pkg) {
- t.equal(!!err, true);
- });
-});
-
-test('non-existent basedir should not throw when preserveSymlinks is false', function (t) {
- t.plan(2);
-
- var opts = {
- basedir: path.join(path.sep, 'unreal', 'path', 'that', 'does', 'not', 'exist'),
- preserveSymlinks: false
- };
-
- var module = './dotdot/abc';
-
- resolve(module, opts, function (err, res) {
- t.equal(err.code, 'MODULE_NOT_FOUND');
- t.equal(res, undefined);
- });
-});
diff --git a/assets/node_modules/resolve/test/filter.js b/assets/node_modules/resolve/test/filter.js
deleted file mode 100644
index 8f8cccd..0000000
--- a/assets/node_modules/resolve/test/filter.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var path = require('path');
-var test = require('tape');
-var resolve = require('../');
-
-test('filter', function (t) {
- t.plan(4);
- var dir = path.join(__dirname, 'resolver');
- var packageFilterArgs;
- resolve('./baz', {
- basedir: dir,
- packageFilter: function (pkg, pkgfile) {
- pkg.main = 'doom'; // eslint-disable-line no-param-reassign
- packageFilterArgs = [pkg, pkgfile];
- return pkg;
- }
- }, function (err, res, pkg) {
- if (err) t.fail(err);
-
- t.equal(res, path.join(dir, 'baz/doom.js'), 'changing the package "main" works');
-
- var packageData = packageFilterArgs[0];
- t.equal(pkg, packageData, 'first packageFilter argument is "pkg"');
- t.equal(packageData.main, 'doom', 'package "main" was altered');
-
- var packageFile = packageFilterArgs[1];
- t.equal(
- packageFile,
- path.join(dir, 'baz/package.json'),
- 'second packageFilter argument is "pkgfile"'
- );
-
- t.end();
- });
-});
diff --git a/assets/node_modules/resolve/test/filter_sync.js b/assets/node_modules/resolve/test/filter_sync.js
deleted file mode 100644
index 8a43b98..0000000
--- a/assets/node_modules/resolve/test/filter_sync.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var path = require('path');
-var test = require('tape');
-var resolve = require('../');
-
-test('filter', function (t) {
- var dir = path.join(__dirname, 'resolver');
- var packageFilterArgs;
- var res = resolve.sync('./baz', {
- basedir: dir,
- // NOTE: in v2.x, this will be `pkg, pkgfile, dir`, but must remain "broken" here in v1.x for compatibility
- packageFilter: function (pkg, /*pkgfile,*/ dir) { // eslint-disable-line spaced-comment
- pkg.main = 'doom'; // eslint-disable-line no-param-reassign
- packageFilterArgs = 'is 1.x' ? [pkg, dir] : [pkg, pkgfile, dir]; // eslint-disable-line no-constant-condition, no-undef
- return pkg;
- }
- });
-
- t.equal(res, path.join(dir, 'baz/doom.js'), 'changing the package "main" works');
-
- var packageData = packageFilterArgs[0];
- t.equal(packageData.main, 'doom', 'package "main" was altered');
-
- if (!'is 1.x') { // eslint-disable-line no-constant-condition
- var packageFile = packageFilterArgs[1];
- t.equal(packageFile, path.join(dir, 'baz', 'package.json'), 'package.json path is correct');
- }
-
- var packageDir = packageFilterArgs['is 1.x' ? 1 : 2]; // eslint-disable-line no-constant-condition
- // eslint-disable-next-line no-constant-condition
- t.equal(packageDir, path.join(dir, 'baz'), ('is 1.x' ? 'second' : 'third') + ' packageFilter argument is "dir"');
-
- t.end();
-});
diff --git a/assets/node_modules/resolve/test/mock.js b/assets/node_modules/resolve/test/mock.js
deleted file mode 100644
index d4f57a3..0000000
--- a/assets/node_modules/resolve/test/mock.js
+++ /dev/null
@@ -1,169 +0,0 @@
-var path = require('path');
-var test = require('tape');
-var resolve = require('../');
-
-test('mock', function (t) {
- t.plan(8);
-
- var files = {};
- files[path.resolve('/foo/bar/baz.js')] = 'beep';
-
- var dirs = {};
- dirs[path.resolve('/foo/bar')] = true;
-
- function opts(basedir) {
- return {
- basedir: path.resolve(basedir),
- isFile: function (file, cb) {
- cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
- },
- isDirectory: function (dir, cb) {
- cb(null, !!dirs[path.resolve(dir)]);
- },
- readFile: function (file, cb) {
- cb(null, files[path.resolve(file)]);
- }
- };
- }
-
- resolve('./baz', opts('/foo/bar'), function (err, res, pkg) {
- if (err) return t.fail(err);
- t.equal(res, path.resolve('/foo/bar/baz.js'));
- t.equal(pkg, undefined);
- });
-
- resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) {
- if (err) return t.fail(err);
- t.equal(res, path.resolve('/foo/bar/baz.js'));
- t.equal(pkg, undefined);
- });
-
- resolve('baz', opts('/foo/bar'), function (err, res) {
- t.equal(err.message, "Cannot find module 'baz' from '" + path.resolve('/foo/bar') + "'");
- t.equal(err.code, 'MODULE_NOT_FOUND');
- });
-
- resolve('../baz', opts('/foo/bar'), function (err, res) {
- t.equal(err.message, "Cannot find module '../baz' from '" + path.resolve('/foo/bar') + "'");
- t.equal(err.code, 'MODULE_NOT_FOUND');
- });
-});
-
-test('mock from package', function (t) {
- t.plan(8);
-
- var files = {};
- files[path.resolve('/foo/bar/baz.js')] = 'beep';
-
- var dirs = {};
- dirs[path.resolve('/foo/bar')] = true;
-
- function opts(basedir) {
- return {
- basedir: path.resolve(basedir),
- isFile: function (file, cb) {
- cb(null, Object.prototype.hasOwnProperty.call(files, file));
- },
- isDirectory: function (dir, cb) {
- cb(null, !!dirs[path.resolve(dir)]);
- },
- 'package': { main: 'bar' },
- readFile: function (file, cb) {
- cb(null, files[file]);
- }
- };
- }
-
- resolve('./baz', opts('/foo/bar'), function (err, res, pkg) {
- if (err) return t.fail(err);
- t.equal(res, path.resolve('/foo/bar/baz.js'));
- t.equal(pkg && pkg.main, 'bar');
- });
-
- resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) {
- if (err) return t.fail(err);
- t.equal(res, path.resolve('/foo/bar/baz.js'));
- t.equal(pkg && pkg.main, 'bar');
- });
-
- resolve('baz', opts('/foo/bar'), function (err, res) {
- t.equal(err.message, "Cannot find module 'baz' from '" + path.resolve('/foo/bar') + "'");
- t.equal(err.code, 'MODULE_NOT_FOUND');
- });
-
- resolve('../baz', opts('/foo/bar'), function (err, res) {
- t.equal(err.message, "Cannot find module '../baz' from '" + path.resolve('/foo/bar') + "'");
- t.equal(err.code, 'MODULE_NOT_FOUND');
- });
-});
-
-test('mock package', function (t) {
- t.plan(2);
-
- var files = {};
- files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep';
- files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({
- main: './baz.js'
- });
-
- var dirs = {};
- dirs[path.resolve('/foo')] = true;
- dirs[path.resolve('/foo/node_modules')] = true;
-
- function opts(basedir) {
- return {
- basedir: path.resolve(basedir),
- isFile: function (file, cb) {
- cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
- },
- isDirectory: function (dir, cb) {
- cb(null, !!dirs[path.resolve(dir)]);
- },
- readFile: function (file, cb) {
- cb(null, files[path.resolve(file)]);
- }
- };
- }
-
- resolve('bar', opts('/foo'), function (err, res, pkg) {
- if (err) return t.fail(err);
- t.equal(res, path.resolve('/foo/node_modules/bar/baz.js'));
- t.equal(pkg && pkg.main, './baz.js');
- });
-});
-
-test('mock package from package', function (t) {
- t.plan(2);
-
- var files = {};
- files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep';
- files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({
- main: './baz.js'
- });
-
- var dirs = {};
- dirs[path.resolve('/foo')] = true;
- dirs[path.resolve('/foo/node_modules')] = true;
-
- function opts(basedir) {
- return {
- basedir: path.resolve(basedir),
- isFile: function (file, cb) {
- cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
- },
- isDirectory: function (dir, cb) {
- cb(null, !!dirs[path.resolve(dir)]);
- },
- 'package': { main: 'bar' },
- readFile: function (file, cb) {
- cb(null, files[path.resolve(file)]);
- }
- };
- }
-
- resolve('bar', opts('/foo'), function (err, res, pkg) {
- if (err) return t.fail(err);
- t.equal(res, path.resolve('/foo/node_modules/bar/baz.js'));
- t.equal(pkg && pkg.main, './baz.js');
- });
-});
diff --git a/assets/node_modules/resolve/test/mock_sync.js b/assets/node_modules/resolve/test/mock_sync.js
deleted file mode 100644
index af06ae1..0000000
--- a/assets/node_modules/resolve/test/mock_sync.js
+++ /dev/null
@@ -1,80 +0,0 @@
-var path = require('path');
-var test = require('tape');
-var resolve = require('../');
-
-test('mock', function (t) {
- t.plan(4);
-
- var files = {};
- files[path.resolve('/foo/bar/baz.js')] = 'beep';
-
- var dirs = {};
- dirs[path.resolve('/foo/bar')] = true;
-
- function opts(basedir) {
- return {
- basedir: path.resolve(basedir),
- isFile: function (file) {
- return Object.prototype.hasOwnProperty.call(files, path.resolve(file));
- },
- isDirectory: function (dir) {
- return !!dirs[path.resolve(dir)];
- },
- readFileSync: function (file) {
- return files[path.resolve(file)];
- }
- };
- }
-
- t.equal(
- resolve.sync('./baz', opts('/foo/bar')),
- path.resolve('/foo/bar/baz.js')
- );
-
- t.equal(
- resolve.sync('./baz.js', opts('/foo/bar')),
- path.resolve('/foo/bar/baz.js')
- );
-
- t.throws(function () {
- resolve.sync('baz', opts('/foo/bar'));
- });
-
- t.throws(function () {
- resolve.sync('../baz', opts('/foo/bar'));
- });
-});
-
-test('mock package', function (t) {
- t.plan(1);
-
- var files = {};
- files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep';
- files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({
- main: './baz.js'
- });
-
- var dirs = {};
- dirs[path.resolve('/foo')] = true;
- dirs[path.resolve('/foo/node_modules')] = true;
-
- function opts(basedir) {
- return {
- basedir: path.resolve(basedir),
- isFile: function (file) {
- return Object.prototype.hasOwnProperty.call(files, path.resolve(file));
- },
- isDirectory: function (dir) {
- return !!dirs[path.resolve(dir)];
- },
- readFileSync: function (file) {
- return files[path.resolve(file)];
- }
- };
- }
-
- t.equal(
- resolve.sync('bar', opts('/foo')),
- path.resolve('/foo/node_modules/bar/baz.js')
- );
-});
diff --git a/assets/node_modules/resolve/test/module_dir.js b/assets/node_modules/resolve/test/module_dir.js
deleted file mode 100644
index b50e5bb..0000000
--- a/assets/node_modules/resolve/test/module_dir.js
+++ /dev/null
@@ -1,56 +0,0 @@
-var path = require('path');
-var test = require('tape');
-var resolve = require('../');
-
-test('moduleDirectory strings', function (t) {
- t.plan(4);
- var dir = path.join(__dirname, 'module_dir');
- var xopts = {
- basedir: dir,
- moduleDirectory: 'xmodules'
- };
- resolve('aaa', xopts, function (err, res, pkg) {
- t.ifError(err);
- t.equal(res, path.join(dir, '/xmodules/aaa/index.js'));
- });
-
- var yopts = {
- basedir: dir,
- moduleDirectory: 'ymodules'
- };
- resolve('aaa', yopts, function (err, res, pkg) {
- t.ifError(err);
- t.equal(res, path.join(dir, '/ymodules/aaa/index.js'));
- });
-});
-
-test('moduleDirectory array', function (t) {
- t.plan(6);
- var dir = path.join(__dirname, 'module_dir');
- var aopts = {
- basedir: dir,
- moduleDirectory: ['xmodules', 'ymodules', 'zmodules']
- };
- resolve('aaa', aopts, function (err, res, pkg) {
- t.ifError(err);
- t.equal(res, path.join(dir, '/xmodules/aaa/index.js'));
- });
-
- var bopts = {
- basedir: dir,
- moduleDirectory: ['zmodules', 'ymodules', 'xmodules']
- };
- resolve('aaa', bopts, function (err, res, pkg) {
- t.ifError(err);
- t.equal(res, path.join(dir, '/ymodules/aaa/index.js'));
- });
-
- var copts = {
- basedir: dir,
- moduleDirectory: ['xmodules', 'ymodules', 'zmodules']
- };
- resolve('bbb', copts, function (err, res, pkg) {
- t.ifError(err);
- t.equal(res, path.join(dir, '/zmodules/bbb/main.js'));
- });
-});
diff --git a/assets/node_modules/resolve/test/module_dir/xmodules/aaa/index.js b/assets/node_modules/resolve/test/module_dir/xmodules/aaa/index.js
deleted file mode 100644
index dd7cf7b..0000000
--- a/assets/node_modules/resolve/test/module_dir/xmodules/aaa/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = function (x) { return x * 100; };
diff --git a/assets/node_modules/resolve/test/module_dir/ymodules/aaa/index.js b/assets/node_modules/resolve/test/module_dir/ymodules/aaa/index.js
deleted file mode 100644
index ef2d4d4..0000000
--- a/assets/node_modules/resolve/test/module_dir/ymodules/aaa/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = function (x) { return x + 100; };
diff --git a/assets/node_modules/resolve/test/module_dir/zmodules/bbb/main.js b/assets/node_modules/resolve/test/module_dir/zmodules/bbb/main.js
deleted file mode 100644
index e8ba629..0000000
--- a/assets/node_modules/resolve/test/module_dir/zmodules/bbb/main.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = function (n) { return n * 111; };
diff --git a/assets/node_modules/resolve/test/module_dir/zmodules/bbb/package.json b/assets/node_modules/resolve/test/module_dir/zmodules/bbb/package.json
deleted file mode 100644
index c13b8cf..0000000
--- a/assets/node_modules/resolve/test/module_dir/zmodules/bbb/package.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "main": "main.js"
-}
diff --git a/assets/node_modules/resolve/test/node-modules-paths.js b/assets/node_modules/resolve/test/node-modules-paths.js
deleted file mode 100644
index 675441d..0000000
--- a/assets/node_modules/resolve/test/node-modules-paths.js
+++ /dev/null
@@ -1,143 +0,0 @@
-var test = require('tape');
-var path = require('path');
-var parse = path.parse || require('path-parse');
-var keys = require('object-keys');
-
-var nodeModulesPaths = require('../lib/node-modules-paths');
-
-var verifyDirs = function verifyDirs(t, start, dirs, moduleDirectories, paths) {
- var moduleDirs = [].concat(moduleDirectories || 'node_modules');
- if (paths) {
- for (var k = 0; k < paths.length; ++k) {
- moduleDirs.push(path.basename(paths[k]));
- }
- }
-
- var foundModuleDirs = {};
- var uniqueDirs = {};
- var parsedDirs = {};
- for (var i = 0; i < dirs.length; ++i) {
- var parsed = parse(dirs[i]);
- if (!foundModuleDirs[parsed.base]) { foundModuleDirs[parsed.base] = 0; }
- foundModuleDirs[parsed.base] += 1;
- parsedDirs[parsed.dir] = true;
- uniqueDirs[dirs[i]] = true;
- }
- t.equal(keys(parsedDirs).length >= start.split(path.sep).length, true, 'there are >= dirs than "start" has');
- var foundModuleDirNames = keys(foundModuleDirs);
- t.deepEqual(foundModuleDirNames, moduleDirs, 'all desired module dirs were found');
- t.equal(keys(uniqueDirs).length, dirs.length, 'all dirs provided were unique');
-
- var counts = {};
- for (var j = 0; j < foundModuleDirNames.length; ++j) {
- counts[foundModuleDirs[j]] = true;
- }
- t.equal(keys(counts).length, 1, 'all found module directories had the same count');
-};
-
-test('node-modules-paths', function (t) {
- t.test('no options', function (t) {
- var start = path.join(__dirname, 'resolver');
- var dirs = nodeModulesPaths(start);
-
- verifyDirs(t, start, dirs);
-
- t.end();
- });
-
- t.test('empty options', function (t) {
- var start = path.join(__dirname, 'resolver');
- var dirs = nodeModulesPaths(start, {});
-
- verifyDirs(t, start, dirs);
-
- t.end();
- });
-
- t.test('with paths=array option', function (t) {
- var start = path.join(__dirname, 'resolver');
- var paths = ['a', 'b'];
- var dirs = nodeModulesPaths(start, { paths: paths });
-
- verifyDirs(t, start, dirs, null, paths);
-
- t.end();
- });
-
- t.test('with paths=function option', function (t) {
- var paths = function paths(request, absoluteStart, getNodeModulesDirs, opts) {
- return getNodeModulesDirs().concat(path.join(absoluteStart, 'not node modules', request));
- };
-
- var start = path.join(__dirname, 'resolver');
- var dirs = nodeModulesPaths(start, { paths: paths }, 'pkg');
-
- verifyDirs(t, start, dirs, null, [path.join(start, 'not node modules', 'pkg')]);
-
- t.end();
- });
-
- t.test('with paths=function skipping node modules resolution', function (t) {
- var paths = function paths(request, absoluteStart, getNodeModulesDirs, opts) {
- return [];
- };
- var start = path.join(__dirname, 'resolver');
- var dirs = nodeModulesPaths(start, { paths: paths });
- t.deepEqual(dirs, [], 'no node_modules was computed');
- t.end();
- });
-
- t.test('with moduleDirectory option', function (t) {
- var start = path.join(__dirname, 'resolver');
- var moduleDirectory = 'not node modules';
- var dirs = nodeModulesPaths(start, { moduleDirectory: moduleDirectory });
-
- verifyDirs(t, start, dirs, moduleDirectory);
-
- t.end();
- });
-
- t.test('with 1 moduleDirectory and paths options', function (t) {
- var start = path.join(__dirname, 'resolver');
- var paths = ['a', 'b'];
- var moduleDirectory = 'not node modules';
- var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectory });
-
- verifyDirs(t, start, dirs, moduleDirectory, paths);
-
- t.end();
- });
-
- t.test('with 1+ moduleDirectory and paths options', function (t) {
- var start = path.join(__dirname, 'resolver');
- var paths = ['a', 'b'];
- var moduleDirectories = ['not node modules', 'other modules'];
- var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectories });
-
- verifyDirs(t, start, dirs, moduleDirectories, paths);
-
- t.end();
- });
-
- t.test('combine paths correctly on Windows', function (t) {
- var start = 'C:\\Users\\username\\myProject\\src';
- var paths = [];
- var moduleDirectories = ['node_modules', start];
- var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectories });
-
- t.equal(dirs.indexOf(path.resolve(start)) > -1, true, 'should contain start dir');
-
- t.end();
- });
-
- t.test('combine paths correctly on non-Windows', { skip: process.platform === 'win32' }, function (t) {
- var start = '/Users/username/git/myProject/src';
- var paths = [];
- var moduleDirectories = ['node_modules', '/Users/username/git/myProject/src'];
- var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectories });
-
- t.equal(dirs.indexOf(path.resolve(start)) > -1, true, 'should contain start dir');
-
- t.end();
- });
-});
diff --git a/assets/node_modules/resolve/test/node_path.js b/assets/node_modules/resolve/test/node_path.js
deleted file mode 100644
index d06aa4e..0000000
--- a/assets/node_modules/resolve/test/node_path.js
+++ /dev/null
@@ -1,70 +0,0 @@
-var fs = require('fs');
-var path = require('path');
-var test = require('tape');
-var resolve = require('../');
-
-test('$NODE_PATH', function (t) {
- t.plan(8);
-
- var isDir = function (dir, cb) {
- if (dir === '/node_path' || dir === 'node_path/x') {
- return cb(null, true);
- }
- fs.stat(dir, function (err, stat) {
- if (!err) {
- return cb(null, stat.isDirectory());
- }
- if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
- return cb(err);
- });
- };
-
- resolve('aaa', {
- paths: [
- path.join(__dirname, '/node_path/x'),
- path.join(__dirname, '/node_path/y')
- ],
- basedir: __dirname,
- isDirectory: isDir
- }, function (err, res) {
- t.error(err);
- t.equal(res, path.join(__dirname, '/node_path/x/aaa/index.js'), 'aaa resolves');
- });
-
- resolve('bbb', {
- paths: [
- path.join(__dirname, '/node_path/x'),
- path.join(__dirname, '/node_path/y')
- ],
- basedir: __dirname,
- isDirectory: isDir
- }, function (err, res) {
- t.error(err);
- t.equal(res, path.join(__dirname, '/node_path/y/bbb/index.js'), 'bbb resolves');
- });
-
- resolve('ccc', {
- paths: [
- path.join(__dirname, '/node_path/x'),
- path.join(__dirname, '/node_path/y')
- ],
- basedir: __dirname,
- isDirectory: isDir
- }, function (err, res) {
- t.error(err);
- t.equal(res, path.join(__dirname, '/node_path/x/ccc/index.js'), 'ccc resolves');
- });
-
- // ensure that relative paths still resolve against the regular `node_modules` correctly
- resolve('tap', {
- paths: [
- 'node_path'
- ],
- basedir: path.join(__dirname, 'node_path/x'),
- isDirectory: isDir
- }, function (err, res) {
- var root = require('tap/package.json').main;
- t.error(err);
- t.equal(res, path.resolve(__dirname, '..', 'node_modules/tap', root), 'tap resolves');
- });
-});
diff --git a/assets/node_modules/resolve/test/node_path/x/aaa/index.js b/assets/node_modules/resolve/test/node_path/x/aaa/index.js
deleted file mode 100644
index ad70d0b..0000000
--- a/assets/node_modules/resolve/test/node_path/x/aaa/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 'A';
diff --git a/assets/node_modules/resolve/test/node_path/x/ccc/index.js b/assets/node_modules/resolve/test/node_path/x/ccc/index.js
deleted file mode 100644
index a64132e..0000000
--- a/assets/node_modules/resolve/test/node_path/x/ccc/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 'C';
diff --git a/assets/node_modules/resolve/test/node_path/y/bbb/index.js b/assets/node_modules/resolve/test/node_path/y/bbb/index.js
deleted file mode 100644
index 4d0f32e..0000000
--- a/assets/node_modules/resolve/test/node_path/y/bbb/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 'B';
diff --git a/assets/node_modules/resolve/test/node_path/y/ccc/index.js b/assets/node_modules/resolve/test/node_path/y/ccc/index.js
deleted file mode 100644
index 793315e..0000000
--- a/assets/node_modules/resolve/test/node_path/y/ccc/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 'CY';
diff --git a/assets/node_modules/resolve/test/nonstring.js b/assets/node_modules/resolve/test/nonstring.js
deleted file mode 100644
index ef63c40..0000000
--- a/assets/node_modules/resolve/test/nonstring.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var test = require('tape');
-var resolve = require('../');
-
-test('nonstring', function (t) {
- t.plan(1);
- resolve(555, function (err, res, pkg) {
- t.ok(err);
- });
-});
diff --git a/assets/node_modules/resolve/test/pathfilter.js b/assets/node_modules/resolve/test/pathfilter.js
deleted file mode 100644
index 16519ae..0000000
--- a/assets/node_modules/resolve/test/pathfilter.js
+++ /dev/null
@@ -1,75 +0,0 @@
-var path = require('path');
-var test = require('tape');
-var resolve = require('../');
-
-var resolverDir = path.join(__dirname, '/pathfilter/deep_ref');
-
-var pathFilterFactory = function (t) {
- return function (pkg, x, remainder) {
- t.equal(pkg.version, '1.2.3');
- t.equal(x, path.join(resolverDir, 'node_modules/deep/ref'));
- t.equal(remainder, 'ref');
- return 'alt';
- };
-};
-
-test('#62: deep module references and the pathFilter', function (t) {
- t.test('deep/ref.js', function (st) {
- st.plan(3);
-
- resolve('deep/ref', { basedir: resolverDir }, function (err, res, pkg) {
- if (err) st.fail(err);
-
- st.equal(pkg.version, '1.2.3');
- st.equal(res, path.join(resolverDir, 'node_modules/deep/ref.js'));
- });
-
- var res = resolve.sync('deep/ref', { basedir: resolverDir });
- st.equal(res, path.join(resolverDir, 'node_modules/deep/ref.js'));
- });
-
- t.test('deep/deeper/ref', function (st) {
- st.plan(4);
-
- resolve(
- 'deep/deeper/ref',
- { basedir: resolverDir },
- function (err, res, pkg) {
- if (err) t.fail(err);
- st.notEqual(pkg, undefined);
- st.equal(pkg.version, '1.2.3');
- st.equal(res, path.join(resolverDir, 'node_modules/deep/deeper/ref.js'));
- }
- );
-
- var res = resolve.sync(
- 'deep/deeper/ref',
- { basedir: resolverDir }
- );
- st.equal(res, path.join(resolverDir, 'node_modules/deep/deeper/ref.js'));
- });
-
- t.test('deep/ref alt', function (st) {
- st.plan(8);
-
- var pathFilter = pathFilterFactory(st);
-
- var res = resolve.sync(
- 'deep/ref',
- { basedir: resolverDir, pathFilter: pathFilter }
- );
- st.equal(res, path.join(resolverDir, 'node_modules/deep/alt.js'));
-
- resolve(
- 'deep/ref',
- { basedir: resolverDir, pathFilter: pathFilter },
- function (err, res, pkg) {
- if (err) st.fail(err);
- st.equal(res, path.join(resolverDir, 'node_modules/deep/alt.js'));
- st.end();
- }
- );
- });
-
- t.end();
-});
diff --git a/assets/node_modules/resolve/test/pathfilter/deep_ref/main.js b/assets/node_modules/resolve/test/pathfilter/deep_ref/main.js
deleted file mode 100644
index e69de29..0000000
--- a/assets/node_modules/resolve/test/pathfilter/deep_ref/main.js
+++ /dev/null
diff --git a/assets/node_modules/resolve/test/precedence.js b/assets/node_modules/resolve/test/precedence.js
deleted file mode 100644
index 2febb59..0000000
--- a/assets/node_modules/resolve/test/precedence.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var path = require('path');
-var test = require('tape');
-var resolve = require('../');
-
-test('precedence', function (t) {
- t.plan(3);
- var dir = path.join(__dirname, 'precedence/aaa');
-
- resolve('./', { basedir: dir }, function (err, res, pkg) {
- t.ifError(err);
- t.equal(res, path.join(dir, 'index.js'));
- t.equal(pkg.name, 'resolve');
- });
-});
-
-test('./ should not load ${dir}.js', function (t) { // eslint-disable-line no-template-curly-in-string
- t.plan(1);
- var dir = path.join(__dirname, 'precedence/bbb');
-
- resolve('./', { basedir: dir }, function (err, res, pkg) {
- t.ok(err);
- });
-});
diff --git a/assets/node_modules/resolve/test/precedence/aaa.js b/assets/node_modules/resolve/test/precedence/aaa.js
deleted file mode 100644
index b83a3e7..0000000
--- a/assets/node_modules/resolve/test/precedence/aaa.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 'wtf';
diff --git a/assets/node_modules/resolve/test/precedence/aaa/index.js b/assets/node_modules/resolve/test/precedence/aaa/index.js
deleted file mode 100644
index e0f8f6a..0000000
--- a/assets/node_modules/resolve/test/precedence/aaa/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 'okok';
diff --git a/assets/node_modules/resolve/test/precedence/aaa/main.js b/assets/node_modules/resolve/test/precedence/aaa/main.js
deleted file mode 100644
index 93542a9..0000000
--- a/assets/node_modules/resolve/test/precedence/aaa/main.js
+++ /dev/null
@@ -1 +0,0 @@
-console.log(require('./'));
diff --git a/assets/node_modules/resolve/test/precedence/bbb.js b/assets/node_modules/resolve/test/precedence/bbb.js
deleted file mode 100644
index 2298f47..0000000
--- a/assets/node_modules/resolve/test/precedence/bbb.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = '>_<';
diff --git a/assets/node_modules/resolve/test/precedence/bbb/main.js b/assets/node_modules/resolve/test/precedence/bbb/main.js
deleted file mode 100644
index 716b81d..0000000
--- a/assets/node_modules/resolve/test/precedence/bbb/main.js
+++ /dev/null
@@ -1 +0,0 @@
-console.log(require('./')); // should throw
diff --git a/assets/node_modules/resolve/test/resolver.js b/assets/node_modules/resolve/test/resolver.js
deleted file mode 100644
index 8d55cde..0000000
--- a/assets/node_modules/resolve/test/resolver.js
+++ /dev/null
@@ -1,434 +0,0 @@
-var path = require('path');
-var test = require('tape');
-var resolve = require('../');
-
-test('async foo', function (t) {
- t.plan(12);
- var dir = path.join(__dirname, 'resolver');
-
- resolve('./foo', { basedir: dir }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'foo.js'));
- t.equal(pkg && pkg.name, 'resolve');
- });
-
- resolve('./foo.js', { basedir: dir }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'foo.js'));
- t.equal(pkg && pkg.name, 'resolve');
- });
-
- resolve('./foo', { basedir: dir, 'package': { main: 'resolver' } }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'foo.js'));
- t.equal(pkg && pkg.main, 'resolver');
- });
-
- resolve('./foo.js', { basedir: dir, 'package': { main: 'resolver' } }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'foo.js'));
- t.equal(pkg.main, 'resolver');
- });
-
- resolve('./foo', { basedir: dir, filename: path.join(dir, 'baz.js') }, function (err, res) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'foo.js'));
- });
-
- resolve('foo', { basedir: dir }, function (err) {
- t.equal(err.message, "Cannot find module 'foo' from '" + path.resolve(dir) + "'");
- t.equal(err.code, 'MODULE_NOT_FOUND');
- });
-
- // Test that filename is reported as the "from" value when passed.
- resolve('foo', { basedir: dir, filename: path.join(dir, 'baz.js') }, function (err) {
- t.equal(err.message, "Cannot find module 'foo' from '" + path.join(dir, 'baz.js') + "'");
- });
-});
-
-test('bar', function (t) {
- t.plan(6);
- var dir = path.join(__dirname, 'resolver');
-
- resolve('foo', { basedir: dir + '/bar' }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js'));
- t.equal(pkg, undefined);
- });
-
- resolve('foo', { basedir: dir + '/bar' }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js'));
- t.equal(pkg, undefined);
- });
-
- resolve('foo', { basedir: dir + '/bar', 'package': { main: 'bar' } }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js'));
- t.equal(pkg.main, 'bar');
- });
-});
-
-test('baz', function (t) {
- t.plan(4);
- var dir = path.join(__dirname, 'resolver');
-
- resolve('./baz', { basedir: dir }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'baz/quux.js'));
- t.equal(pkg.main, 'quux.js');
- });
-
- resolve('./baz', { basedir: dir, 'package': { main: 'resolver' } }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'baz/quux.js'));
- t.equal(pkg.main, 'quux.js');
- });
-});
-
-test('biz', function (t) {
- t.plan(24);
- var dir = path.join(__dirname, 'resolver/biz/node_modules');
-
- resolve('./grux', { basedir: dir }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'grux/index.js'));
- t.equal(pkg, undefined);
- });
-
- resolve('./grux', { basedir: dir, 'package': { main: 'biz' } }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'grux/index.js'));
- t.equal(pkg.main, 'biz');
- });
-
- resolve('./garply', { basedir: dir }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'garply/lib/index.js'));
- t.equal(pkg.main, './lib');
- });
-
- resolve('./garply', { basedir: dir, 'package': { main: 'biz' } }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'garply/lib/index.js'));
- t.equal(pkg.main, './lib');
- });
-
- resolve('tiv', { basedir: dir + '/grux' }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'tiv/index.js'));
- t.equal(pkg, undefined);
- });
-
- resolve('tiv', { basedir: dir + '/grux', 'package': { main: 'grux' } }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'tiv/index.js'));
- t.equal(pkg.main, 'grux');
- });
-
- resolve('tiv', { basedir: dir + '/garply' }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'tiv/index.js'));
- t.equal(pkg, undefined);
- });
-
- resolve('tiv', { basedir: dir + '/garply', 'package': { main: './lib' } }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'tiv/index.js'));
- t.equal(pkg.main, './lib');
- });
-
- resolve('grux', { basedir: dir + '/tiv' }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'grux/index.js'));
- t.equal(pkg, undefined);
- });
-
- resolve('grux', { basedir: dir + '/tiv', 'package': { main: 'tiv' } }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'grux/index.js'));
- t.equal(pkg.main, 'tiv');
- });
-
- resolve('garply', { basedir: dir + '/tiv' }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'garply/lib/index.js'));
- t.equal(pkg.main, './lib');
- });
-
- resolve('garply', { basedir: dir + '/tiv', 'package': { main: 'tiv' } }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'garply/lib/index.js'));
- t.equal(pkg.main, './lib');
- });
-});
-
-test('quux', function (t) {
- t.plan(2);
- var dir = path.join(__dirname, 'resolver/quux');
-
- resolve('./foo', { basedir: dir, 'package': { main: 'quux' } }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'foo/index.js'));
- t.equal(pkg.main, 'quux');
- });
-});
-
-test('normalize', function (t) {
- t.plan(2);
- var dir = path.join(__dirname, 'resolver/biz/node_modules/grux');
-
- resolve('../grux', { basedir: dir }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'index.js'));
- t.equal(pkg, undefined);
- });
-});
-
-test('cup', function (t) {
- t.plan(5);
- var dir = path.join(__dirname, 'resolver');
-
- resolve('./cup', { basedir: dir, extensions: ['.js', '.coffee'] }, function (err, res) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'cup.coffee'));
- });
-
- resolve('./cup.coffee', { basedir: dir }, function (err, res) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'cup.coffee'));
- });
-
- resolve('./cup', { basedir: dir, extensions: ['.js'] }, function (err, res) {
- t.equal(err.message, "Cannot find module './cup' from '" + path.resolve(dir) + "'");
- t.equal(err.code, 'MODULE_NOT_FOUND');
- });
-
- // Test that filename is reported as the "from" value when passed.
- resolve('./cup', { basedir: dir, extensions: ['.js'], filename: path.join(dir, 'cupboard.js') }, function (err, res) {
- t.equal(err.message, "Cannot find module './cup' from '" + path.join(dir, 'cupboard.js') + "'");
- });
-});
-
-test('mug', function (t) {
- t.plan(3);
- var dir = path.join(__dirname, 'resolver');
-
- resolve('./mug', { basedir: dir }, function (err, res) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'mug.js'));
- });
-
- resolve('./mug', { basedir: dir, extensions: ['.coffee', '.js'] }, function (err, res) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, '/mug.coffee'));
- });
-
- resolve('./mug', { basedir: dir, extensions: ['.js', '.coffee'] }, function (err, res) {
- t.equal(res, path.join(dir, '/mug.js'));
- });
-});
-
-test('other path', function (t) {
- t.plan(6);
- var resolverDir = path.join(__dirname, 'resolver');
- var dir = path.join(resolverDir, 'bar');
- var otherDir = path.join(resolverDir, 'other_path');
-
- resolve('root', { basedir: dir, paths: [otherDir] }, function (err, res) {
- if (err) t.fail(err);
- t.equal(res, path.join(resolverDir, 'other_path/root.js'));
- });
-
- resolve('lib/other-lib', { basedir: dir, paths: [otherDir] }, function (err, res) {
- if (err) t.fail(err);
- t.equal(res, path.join(resolverDir, 'other_path/lib/other-lib.js'));
- });
-
- resolve('root', { basedir: dir }, function (err, res) {
- t.equal(err.message, "Cannot find module 'root' from '" + path.resolve(dir) + "'");
- t.equal(err.code, 'MODULE_NOT_FOUND');
- });
-
- resolve('zzz', { basedir: dir, paths: [otherDir] }, function (err, res) {
- t.equal(err.message, "Cannot find module 'zzz' from '" + path.resolve(dir) + "'");
- t.equal(err.code, 'MODULE_NOT_FOUND');
- });
-});
-
-test('path iterator', function (t) {
- t.plan(2);
-
- var resolverDir = path.join(__dirname, 'resolver');
-
- var exactIterator = function (x, start, getPackageCandidates, opts) {
- return [path.join(resolverDir, x)];
- };
-
- resolve('baz', { packageIterator: exactIterator }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(resolverDir, 'baz/quux.js'));
- t.equal(pkg && pkg.name, 'baz');
- });
-});
-
-test('incorrect main', function (t) {
- t.plan(1);
-
- var resolverDir = path.join(__dirname, 'resolver');
- var dir = path.join(resolverDir, 'incorrect_main');
-
- resolve('./incorrect_main', { basedir: resolverDir }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'index.js'));
- });
-});
-
-test('without basedir', function (t) {
- t.plan(1);
-
- var dir = path.join(__dirname, 'resolver/without_basedir');
- var tester = require(path.join(dir, 'main.js'));
-
- tester(t, function (err, res, pkg) {
- if (err) {
- t.fail(err);
- } else {
- t.equal(res, path.join(dir, 'node_modules/mymodule.js'));
- }
- });
-});
-
-test('#52 - incorrectly resolves module-paths like "./someFolder/" when there is a file of the same name', function (t) {
- t.plan(2);
-
- var dir = path.join(__dirname, 'resolver');
-
- resolve('./foo', { basedir: path.join(dir, 'same_names') }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'same_names/foo.js'));
- });
-
- resolve('./foo/', { basedir: path.join(dir, 'same_names') }, function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'same_names/foo/index.js'));
- });
-});
-
-test('async: #121 - treating an existing file as a dir when no basedir', function (t) {
- var testFile = path.basename(__filename);
-
- t.test('sanity check', function (st) {
- st.plan(1);
- resolve('./' + testFile, function (err, res, pkg) {
- if (err) t.fail(err);
- st.equal(res, __filename, 'sanity check');
- });
- });
-
- t.test('with a fake directory', function (st) {
- st.plan(4);
-
- resolve('./' + testFile + '/blah', function (err, res, pkg) {
- st.ok(err, 'there is an error');
- st.notOk(res, 'no result');
-
- st.equal(err && err.code, 'MODULE_NOT_FOUND', 'error code matches require.resolve');
- st.equal(
- err && err.message,
- 'Cannot find module \'./' + testFile + '/blah\' from \'' + __dirname + '\'',
- 'can not find nonexistent module'
- );
- st.end();
- });
- });
-
- t.end();
-});
-
-test('async dot main', function (t) {
- var start = new Date();
- t.plan(3);
- resolve('./resolver/dot_main', function (err, ret) {
- t.notOk(err);
- t.equal(ret, path.join(__dirname, 'resolver/dot_main/index.js'));
- t.ok(new Date() - start < 50, 'resolve.sync timedout');
- t.end();
- });
-});
-
-test('async dot slash main', function (t) {
- var start = new Date();
- t.plan(3);
- resolve('./resolver/dot_slash_main', function (err, ret) {
- t.notOk(err);
- t.equal(ret, path.join(__dirname, 'resolver/dot_slash_main/index.js'));
- t.ok(new Date() - start < 50, 'resolve.sync timedout');
- t.end();
- });
-});
-
-test('not a directory', function (t) {
- t.plan(6);
- var path = './foo';
- resolve(path, { basedir: __filename }, function (err, res, pkg) {
- t.ok(err, 'a non-directory errors');
- t.equal(arguments.length, 1);
- t.equal(res, undefined);
- t.equal(pkg, undefined);
-
- t.equal(err && err.message, 'Cannot find module \'' + path + '\' from \'' + __filename + '\'');
- t.equal(err && err.code, 'MODULE_NOT_FOUND');
- });
-});
-
-test('non-string "main" field in package.json', function (t) {
- t.plan(5);
-
- var dir = path.join(__dirname, 'resolver');
- resolve('./invalid_main', { basedir: dir }, function (err, res, pkg) {
- t.ok(err, 'errors on non-string main');
- t.equal(err.message, 'package “invalid main” `main` must be a string');
- t.equal(err.code, 'INVALID_PACKAGE_MAIN');
- t.equal(res, undefined, 'res is undefined');
- t.equal(pkg, undefined, 'pkg is undefined');
- });
-});
-
-test('non-string "main" field in package.json', function (t) {
- t.plan(5);
-
- var dir = path.join(__dirname, 'resolver');
- resolve('./invalid_main', { basedir: dir }, function (err, res, pkg) {
- t.ok(err, 'errors on non-string main');
- t.equal(err.message, 'package “invalid main” `main` must be a string');
- t.equal(err.code, 'INVALID_PACKAGE_MAIN');
- t.equal(res, undefined, 'res is undefined');
- t.equal(pkg, undefined, 'pkg is undefined');
- });
-});
-
-test('browser field in package.json', function (t) {
- t.plan(3);
-
- var dir = path.join(__dirname, 'resolver');
- resolve(
- './browser_field',
- {
- basedir: dir,
- packageFilter: function packageFilter(pkg) {
- if (pkg.browser) {
- pkg.main = pkg.browser; // eslint-disable-line no-param-reassign
- delete pkg.browser; // eslint-disable-line no-param-reassign
- }
- return pkg;
- }
- },
- function (err, res, pkg) {
- if (err) t.fail(err);
- t.equal(res, path.join(dir, 'browser_field', 'b.js'));
- t.equal(pkg && pkg.main, 'b');
- t.equal(pkg && pkg.browser, undefined);
- }
- );
-});
diff --git a/assets/node_modules/resolve/test/resolver/baz/doom.js b/assets/node_modules/resolve/test/resolver/baz/doom.js
deleted file mode 100644
index e69de29..0000000
--- a/assets/node_modules/resolve/test/resolver/baz/doom.js
+++ /dev/null
diff --git a/assets/node_modules/resolve/test/resolver/baz/package.json b/assets/node_modules/resolve/test/resolver/baz/package.json
deleted file mode 100644
index 2f77720..0000000
--- a/assets/node_modules/resolve/test/resolver/baz/package.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "name": "baz",
- "main": "quux.js"
-}
diff --git a/assets/node_modules/resolve/test/resolver/baz/quux.js b/assets/node_modules/resolve/test/resolver/baz/quux.js
deleted file mode 100644
index bd816ea..0000000
--- a/assets/node_modules/resolve/test/resolver/baz/quux.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 1;
diff --git a/assets/node_modules/resolve/test/resolver/browser_field/a.js b/assets/node_modules/resolve/test/resolver/browser_field/a.js
deleted file mode 100644
index e69de29..0000000
--- a/assets/node_modules/resolve/test/resolver/browser_field/a.js
+++ /dev/null
diff --git a/assets/node_modules/resolve/test/resolver/browser_field/b.js b/assets/node_modules/resolve/test/resolver/browser_field/b.js
deleted file mode 100644
index e69de29..0000000
--- a/assets/node_modules/resolve/test/resolver/browser_field/b.js
+++ /dev/null
diff --git a/assets/node_modules/resolve/test/resolver/browser_field/package.json b/assets/node_modules/resolve/test/resolver/browser_field/package.json
deleted file mode 100644
index bf406f0..0000000
--- a/assets/node_modules/resolve/test/resolver/browser_field/package.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "name": "browser_field",
- "main": "a",
- "browser": "b"
-}
diff --git a/assets/node_modules/resolve/test/resolver/cup.coffee b/assets/node_modules/resolve/test/resolver/cup.coffee
deleted file mode 100644
index 8b13789..0000000
--- a/assets/node_modules/resolve/test/resolver/cup.coffee
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/assets/node_modules/resolve/test/resolver/dot_main/index.js b/assets/node_modules/resolve/test/resolver/dot_main/index.js
deleted file mode 100644
index bd816ea..0000000
--- a/assets/node_modules/resolve/test/resolver/dot_main/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 1;
diff --git a/assets/node_modules/resolve/test/resolver/dot_main/package.json b/assets/node_modules/resolve/test/resolver/dot_main/package.json
deleted file mode 100644
index d7f4fc8..0000000
--- a/assets/node_modules/resolve/test/resolver/dot_main/package.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "main": "."
-}
diff --git a/assets/node_modules/resolve/test/resolver/dot_slash_main/index.js b/assets/node_modules/resolve/test/resolver/dot_slash_main/index.js
deleted file mode 100644
index bd816ea..0000000
--- a/assets/node_modules/resolve/test/resolver/dot_slash_main/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 1;
diff --git a/assets/node_modules/resolve/test/resolver/dot_slash_main/package.json b/assets/node_modules/resolve/test/resolver/dot_slash_main/package.json
deleted file mode 100644
index f51287b..0000000
--- a/assets/node_modules/resolve/test/resolver/dot_slash_main/package.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "main": "./"
-}
diff --git a/assets/node_modules/resolve/test/resolver/foo.js b/assets/node_modules/resolve/test/resolver/foo.js
deleted file mode 100644
index bd816ea..0000000
--- a/assets/node_modules/resolve/test/resolver/foo.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 1;
diff --git a/assets/node_modules/resolve/test/resolver/incorrect_main/index.js b/assets/node_modules/resolve/test/resolver/incorrect_main/index.js
deleted file mode 100644
index bc1fb0a..0000000
--- a/assets/node_modules/resolve/test/resolver/incorrect_main/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// this is the actual main file 'index.js', not 'wrong.js' like the package.json would indicate
-module.exports = 1;
diff --git a/assets/node_modules/resolve/test/resolver/incorrect_main/package.json b/assets/node_modules/resolve/test/resolver/incorrect_main/package.json
deleted file mode 100644
index b718804..0000000
--- a/assets/node_modules/resolve/test/resolver/incorrect_main/package.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "main": "wrong.js"
-}
diff --git a/assets/node_modules/resolve/test/resolver/invalid_main/package.json b/assets/node_modules/resolve/test/resolver/invalid_main/package.json
deleted file mode 100644
index 0cf8279..0000000
--- a/assets/node_modules/resolve/test/resolver/invalid_main/package.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "name": "invalid main",
- "main": [
- "why is this a thing",
- "srsly omg wtf"
- ]
-}
diff --git a/assets/node_modules/resolve/test/resolver/mug.coffee b/assets/node_modules/resolve/test/resolver/mug.coffee
deleted file mode 100644
index e69de29..0000000
--- a/assets/node_modules/resolve/test/resolver/mug.coffee
+++ /dev/null
diff --git a/assets/node_modules/resolve/test/resolver/mug.js b/assets/node_modules/resolve/test/resolver/mug.js
deleted file mode 100644
index e69de29..0000000
--- a/assets/node_modules/resolve/test/resolver/mug.js
+++ /dev/null
diff --git a/assets/node_modules/resolve/test/resolver/multirepo/lerna.json b/assets/node_modules/resolve/test/resolver/multirepo/lerna.json
deleted file mode 100644
index d6707ca..0000000
--- a/assets/node_modules/resolve/test/resolver/multirepo/lerna.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "packages": [
- "packages/*"
- ],
- "version": "0.0.0"
-}
diff --git a/assets/node_modules/resolve/test/resolver/multirepo/package.json b/assets/node_modules/resolve/test/resolver/multirepo/package.json
deleted file mode 100644
index 8508f9d..0000000
--- a/assets/node_modules/resolve/test/resolver/multirepo/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "monorepo-symlink-test",
- "private": true,
- "version": "0.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "postinstall": "lerna bootstrap",
- "test": "node packages/package-a"
- },
- "author": "",
- "license": "MIT",
- "dependencies": {
- "jquery": "^3.3.1",
- "resolve": "../../../"
- },
- "devDependencies": {
- "lerna": "^3.4.3"
- }
-}
diff --git a/assets/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js b/assets/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js
deleted file mode 100644
index 8875a32..0000000
--- a/assets/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js
+++ /dev/null
@@ -1,35 +0,0 @@
-'use strict';
-
-var assert = require('assert');
-var path = require('path');
-var resolve = require('resolve');
-
-var basedir = __dirname + '/node_modules/@my-scope/package-b';
-
-var expected = path.join(__dirname, '../../node_modules/jquery/dist/jquery.js');
-
-/*
- * preserveSymlinks === false
- * will search NPM package from
- * - packages/package-b/node_modules
- * - packages/node_modules
- * - node_modules
- */
-assert.equal(resolve.sync('jquery', { basedir: basedir, preserveSymlinks: false }), expected);
-assert.equal(resolve.sync('../../node_modules/jquery', { basedir: basedir, preserveSymlinks: false }), expected);
-
-/*
- * preserveSymlinks === true
- * will search NPM package from
- * - packages/package-a/node_modules/@my-scope/packages/package-b/node_modules
- * - packages/package-a/node_modules/@my-scope/packages/node_modules
- * - packages/package-a/node_modules/@my-scope/node_modules
- * - packages/package-a/node_modules/node_modules
- * - packages/package-a/node_modules
- * - packages/node_modules
- * - node_modules
- */
-assert.equal(resolve.sync('jquery', { basedir: basedir, preserveSymlinks: true }), expected);
-assert.equal(resolve.sync('../../../../../node_modules/jquery', { basedir: basedir, preserveSymlinks: true }), expected);
-
-console.log(' * all monorepo paths successfully resolved through symlinks');
diff --git a/assets/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json b/assets/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json
deleted file mode 100644
index 204de51..0000000
--- a/assets/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "name": "@my-scope/package-a",
- "version": "0.0.0",
- "private": true,
- "description": "",
- "license": "MIT",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: run tests from root\" && exit 1"
- },
- "dependencies": {
- "@my-scope/package-b": "^0.0.0"
- }
-}
diff --git a/assets/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js b/assets/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js
deleted file mode 100644
index e69de29..0000000
--- a/assets/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js
+++ /dev/null
diff --git a/assets/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json b/assets/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json
deleted file mode 100644
index f57c3b5..0000000
--- a/assets/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "name": "@my-scope/package-b",
- "private": true,
- "version": "0.0.0",
- "description": "",
- "license": "MIT",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: run tests from root\" && exit 1"
- },
- "dependencies": {
- "@my-scope/package-a": "^0.0.0"
- }
-}
diff --git a/assets/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js b/assets/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js
deleted file mode 100644
index 9b4846a..0000000
--- a/assets/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var a = require.resolve('buffer/').replace(process.cwd(), '$CWD');
-var b;
-var c;
-
-var test = function test() {
- console.log(a, ': require.resolve, preserveSymlinks ' + (process.execArgv.indexOf('preserve-symlinks') > -1 ? 'true' : 'false'));
- console.log(b, ': preserveSymlinks true');
- console.log(c, ': preserveSymlinks false');
-
- if (a !== b && a !== c) {
- throw 'async: no match';
- }
- console.log('async: success! a matched either b or c\n');
-};
-
-require('resolve')('buffer/', { preserveSymlinks: true }, function (err, result) {
- if (err) { throw err; }
- b = result.replace(process.cwd(), '$CWD');
- if (b && c) { test(); }
-});
-require('resolve')('buffer/', { preserveSymlinks: false }, function (err, result) {
- if (err) { throw err; }
- c = result.replace(process.cwd(), '$CWD');
- if (b && c) { test(); }
-});
-
diff --git a/assets/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json b/assets/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json
deleted file mode 100644
index acfe9e9..0000000
--- a/assets/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "mylib",
- "version": "0.0.0",
- "description": "",
- "private": true,
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "buffer": "*"
- }
-}
diff --git a/assets/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js b/assets/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js
deleted file mode 100644
index 3283efc..0000000
--- a/assets/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var a = require.resolve('buffer/').replace(process.cwd(), '$CWD');
-var b = require('resolve').sync('buffer/', { preserveSymlinks: true }).replace(process.cwd(), '$CWD');
-var c = require('resolve').sync('buffer/', { preserveSymlinks: false }).replace(process.cwd(), '$CWD');
-
-console.log(a, ': require.resolve, preserveSymlinks ' + (process.execArgv.indexOf('preserve-symlinks') > -1 ? 'true' : 'false'));
-console.log(b, ': preserveSymlinks true');
-console.log(c, ': preserveSymlinks false');
-
-if (a !== b && a !== c) {
- throw 'sync: no match';
-}
-console.log('sync: success! a matched either b or c\n');
diff --git a/assets/node_modules/resolve/test/resolver/other_path/lib/other-lib.js b/assets/node_modules/resolve/test/resolver/other_path/lib/other-lib.js
deleted file mode 100644
index e69de29..0000000
--- a/assets/node_modules/resolve/test/resolver/other_path/lib/other-lib.js
+++ /dev/null
diff --git a/assets/node_modules/resolve/test/resolver/other_path/root.js b/assets/node_modules/resolve/test/resolver/other_path/root.js
deleted file mode 100644
index e69de29..0000000
--- a/assets/node_modules/resolve/test/resolver/other_path/root.js
+++ /dev/null
diff --git a/assets/node_modules/resolve/test/resolver/quux/foo/index.js b/assets/node_modules/resolve/test/resolver/quux/foo/index.js
deleted file mode 100644
index bd816ea..0000000
--- a/assets/node_modules/resolve/test/resolver/quux/foo/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 1;
diff --git a/assets/node_modules/resolve/test/resolver/same_names/foo.js b/assets/node_modules/resolve/test/resolver/same_names/foo.js
deleted file mode 100644
index 888cae3..0000000
--- a/assets/node_modules/resolve/test/resolver/same_names/foo.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 42;
diff --git a/assets/node_modules/resolve/test/resolver/same_names/foo/index.js b/assets/node_modules/resolve/test/resolver/same_names/foo/index.js
deleted file mode 100644
index bd816ea..0000000
--- a/assets/node_modules/resolve/test/resolver/same_names/foo/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 1;
diff --git a/assets/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js b/assets/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js
deleted file mode 100644
index e69de29..0000000
--- a/assets/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js
+++ /dev/null
diff --git a/assets/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep b/assets/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep
deleted file mode 100644
index e69de29..0000000
--- a/assets/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep
+++ /dev/null
diff --git a/assets/node_modules/resolve/test/resolver/symlinked/package/bar.js b/assets/node_modules/resolve/test/resolver/symlinked/package/bar.js
deleted file mode 100644
index cb1c2c0..0000000
--- a/assets/node_modules/resolve/test/resolver/symlinked/package/bar.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 'bar';
diff --git a/assets/node_modules/resolve/test/resolver/symlinked/package/package.json b/assets/node_modules/resolve/test/resolver/symlinked/package/package.json
deleted file mode 100644
index 8e1b585..0000000
--- a/assets/node_modules/resolve/test/resolver/symlinked/package/package.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "main": "bar.js"
-} \ No newline at end of file
diff --git a/assets/node_modules/resolve/test/resolver/without_basedir/main.js b/assets/node_modules/resolve/test/resolver/without_basedir/main.js
deleted file mode 100644
index 5b31975..0000000
--- a/assets/node_modules/resolve/test/resolver/without_basedir/main.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var resolve = require('../../../');
-
-module.exports = function (t, cb) {
- resolve('mymodule', null, cb);
-};
diff --git a/assets/node_modules/resolve/test/resolver_sync.js b/assets/node_modules/resolve/test/resolver_sync.js
deleted file mode 100644
index a4a8ca4..0000000
--- a/assets/node_modules/resolve/test/resolver_sync.js
+++ /dev/null
@@ -1,344 +0,0 @@
-var path = require('path');
-var test = require('tape');
-var resolve = require('../');
-
-test('foo', function (t) {
- var dir = path.join(__dirname, 'resolver');
-
- t.equal(
- resolve.sync('./foo', { basedir: dir }),
- path.join(dir, 'foo.js')
- );
-
- t.equal(
- resolve.sync('./foo.js', { basedir: dir }),
- path.join(dir, 'foo.js')
- );
-
- t.equal(
- resolve.sync('./foo.js', { basedir: dir, filename: path.join(dir, 'bar.js') }),
- path.join(dir, 'foo.js')
- );
-
- t.throws(function () {
- resolve.sync('foo', { basedir: dir });
- });
-
- // Test that filename is reported as the "from" value when passed.
- t.throws(
- function () {
- resolve.sync('foo', { basedir: dir, filename: path.join(dir, 'bar.js') });
- },
- {
- name: 'Error',
- message: "Cannot find module 'foo' from '" + path.join(dir, 'bar.js') + "'"
- }
- );
-
- t.end();
-});
-
-test('bar', function (t) {
- var dir = path.join(__dirname, 'resolver');
-
- t.equal(
- resolve.sync('foo', { basedir: path.join(dir, 'bar') }),
- path.join(dir, 'bar/node_modules/foo/index.js')
- );
- t.end();
-});
-
-test('baz', function (t) {
- var dir = path.join(__dirname, 'resolver');
-
- t.equal(
- resolve.sync('./baz', { basedir: dir }),
- path.join(dir, 'baz/quux.js')
- );
- t.end();
-});
-
-test('biz', function (t) {
- var dir = path.join(__dirname, 'resolver/biz/node_modules');
- t.equal(
- resolve.sync('./grux', { basedir: dir }),
- path.join(dir, 'grux/index.js')
- );
-
- t.equal(
- resolve.sync('tiv', { basedir: path.join(dir, 'grux') }),
- path.join(dir, 'tiv/index.js')
- );
-
- t.equal(
- resolve.sync('grux', { basedir: path.join(dir, 'tiv') }),
- path.join(dir, 'grux/index.js')
- );
- t.end();
-});
-
-test('normalize', function (t) {
- var dir = path.join(__dirname, 'resolver/biz/node_modules/grux');
- t.equal(
- resolve.sync('../grux', { basedir: dir }),
- path.join(dir, 'index.js')
- );
- t.end();
-});
-
-test('cup', function (t) {
- var dir = path.join(__dirname, 'resolver');
- t.equal(
- resolve.sync('./cup', {
- basedir: dir,
- extensions: ['.js', '.coffee']
- }),
- path.join(dir, 'cup.coffee')
- );
-
- t.equal(
- resolve.sync('./cup.coffee', { basedir: dir }),
- path.join(dir, 'cup.coffee')
- );
-
- t.throws(function () {
- resolve.sync('./cup', {
- basedir: dir,
- extensions: ['.js']
- });
- });
-
- t.end();
-});
-
-test('mug', function (t) {
- var dir = path.join(__dirname, 'resolver');
- t.equal(
- resolve.sync('./mug', { basedir: dir }),
- path.join(dir, 'mug.js')
- );
-
- t.equal(
- resolve.sync('./mug', {
- basedir: dir,
- extensions: ['.coffee', '.js']
- }),
- path.join(dir, 'mug.coffee')
- );
-
- t.equal(
- resolve.sync('./mug', {
- basedir: dir,
- extensions: ['.js', '.coffee']
- }),
- path.join(dir, 'mug.js')
- );
-
- t.end();
-});
-
-test('other path', function (t) {
- var resolverDir = path.join(__dirname, 'resolver');
- var dir = path.join(resolverDir, 'bar');
- var otherDir = path.join(resolverDir, 'other_path');
-
- t.equal(
- resolve.sync('root', {
- basedir: dir,
- paths: [otherDir]
- }),
- path.join(resolverDir, 'other_path/root.js')
- );
-
- t.equal(
- resolve.sync('lib/other-lib', {
- basedir: dir,
- paths: [otherDir]
- }),
- path.join(resolverDir, 'other_path/lib/other-lib.js')
- );
-
- t.throws(function () {
- resolve.sync('root', { basedir: dir });
- });
-
- t.throws(function () {
- resolve.sync('zzz', {
- basedir: dir,
- paths: [otherDir]
- });
- });
-
- t.end();
-});
-
-test('path iterator', function (t) {
- var resolverDir = path.join(__dirname, 'resolver');
-
- var exactIterator = function (x, start, getPackageCandidates, opts) {
- return [path.join(resolverDir, x)];
- };
-
- t.equal(
- resolve.sync('baz', { packageIterator: exactIterator }),
- path.join(resolverDir, 'baz/quux.js')
- );
-
- t.end();
-});
-
-test('incorrect main', function (t) {
- var resolverDir = path.join(__dirname, 'resolver');
- var dir = path.join(resolverDir, 'incorrect_main');
-
- t.equal(
- resolve.sync('./incorrect_main', { basedir: resolverDir }),
- path.join(dir, 'index.js')
- );
-
- t.end();
-});
-
-var stubStatSync = function stubStatSync(fn) {
- var fs = require('fs');
- var statSync = fs.statSync;
- try {
- fs.statSync = function () {
- throw new EvalError('Unknown Error');
- };
- return fn();
- } finally {
- fs.statSync = statSync;
- }
-};
-
-test('#79 - re-throw non ENOENT errors from stat', function (t) {
- var dir = path.join(__dirname, 'resolver');
-
- stubStatSync(function () {
- t.throws(function () {
- resolve.sync('foo', { basedir: dir });
- }, /Unknown Error/);
- });
-
- t.end();
-});
-
-test('#52 - incorrectly resolves module-paths like "./someFolder/" when there is a file of the same name', function (t) {
- var dir = path.join(__dirname, 'resolver');
-
- t.equal(
- resolve.sync('./foo', { basedir: path.join(dir, 'same_names') }),
- path.join(dir, 'same_names/foo.js')
- );
- t.equal(
- resolve.sync('./foo/', { basedir: path.join(dir, 'same_names') }),
- path.join(dir, 'same_names/foo/index.js')
- );
- t.end();
-});
-
-test('sync: #121 - treating an existing file as a dir when no basedir', function (t) {
- var testFile = path.basename(__filename);
-
- t.test('sanity check', function (st) {
- st.equal(
- resolve.sync('./' + testFile),
- __filename,
- 'sanity check'
- );
- st.end();
- });
-
- t.test('with a fake directory', function (st) {
- function run() { return resolve.sync('./' + testFile + '/blah'); }
-
- st.throws(run, 'throws an error');
-
- try {
- run();
- } catch (e) {
- st.equal(e.code, 'MODULE_NOT_FOUND', 'error code matches require.resolve');
- st.equal(
- e.message,
- 'Cannot find module \'./' + testFile + '/blah\' from \'' + __dirname + '\'',
- 'can not find nonexistent module'
- );
- }
-
- st.end();
- });
-
- t.end();
-});
-
-test('sync dot main', function (t) {
- var start = new Date();
- t.equal(resolve.sync('./resolver/dot_main'), path.join(__dirname, 'resolver/dot_main/index.js'));
- t.ok(new Date() - start < 50, 'resolve.sync timedout');
- t.end();
-});
-
-test('sync dot slash main', function (t) {
- var start = new Date();
- t.equal(resolve.sync('./resolver/dot_slash_main'), path.join(__dirname, 'resolver/dot_slash_main/index.js'));
- t.ok(new Date() - start < 50, 'resolve.sync timedout');
- t.end();
-});
-
-test('not a directory', function (t) {
- var path = './foo';
- try {
- resolve.sync(path, { basedir: __filename });
- t.fail();
- } catch (err) {
- t.ok(err, 'a non-directory errors');
- t.equal(err && err.message, 'Cannot find module \'' + path + "' from '" + __filename + "'");
- t.equal(err && err.code, 'MODULE_NOT_FOUND');
- }
- t.end();
-});
-
-test('non-string "main" field in package.json', function (t) {
- var dir = path.join(__dirname, 'resolver');
- try {
- var result = resolve.sync('./invalid_main', { basedir: dir });
- t.equal(result, undefined, 'result should not exist');
- t.fail('should not get here');
- } catch (err) {
- t.ok(err, 'errors on non-string main');
- t.equal(err.message, 'package “invalid main” `main` must be a string');
- t.equal(err.code, 'INVALID_PACKAGE_MAIN');
- }
- t.end();
-});
-
-test('non-string "main" field in package.json', function (t) {
- var dir = path.join(__dirname, 'resolver');
- try {
- var result = resolve.sync('./invalid_main', { basedir: dir });
- t.equal(result, undefined, 'result should not exist');
- t.fail('should not get here');
- } catch (err) {
- t.ok(err, 'errors on non-string main');
- t.equal(err.message, 'package “invalid main” `main` must be a string');
- t.equal(err.code, 'INVALID_PACKAGE_MAIN');
- }
- t.end();
-});
-
-test('browser field in package.json', function (t) {
- var dir = path.join(__dirname, 'resolver');
- var res = resolve.sync('./browser_field', {
- basedir: dir,
- packageFilter: function packageFilter(pkg) {
- if (pkg.browser) {
- pkg.main = pkg.browser; // eslint-disable-line no-param-reassign
- delete pkg.browser; // eslint-disable-line no-param-reassign
- }
- return pkg;
- }
- });
- t.equal(res, path.join(dir, 'browser_field', 'b.js'));
- t.end();
-});
diff --git a/assets/node_modules/resolve/test/shadowed_core.js b/assets/node_modules/resolve/test/shadowed_core.js
deleted file mode 100644
index 98c52a7..0000000
--- a/assets/node_modules/resolve/test/shadowed_core.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var test = require('tape');
-var resolve = require('../');
-var path = require('path');
-
-test('shadowed core modules still return core module', function (t) {
- t.plan(2);
-
- resolve('util', { basedir: path.join(__dirname, 'shadowed_core') }, function (err, res) {
- t.ifError(err);
- t.equal(res, 'util');
- });
-});
-
-test('shadowed core modules still return core module [sync]', function (t) {
- t.plan(1);
-
- var res = resolve.sync('util', { basedir: path.join(__dirname, 'shadowed_core') });
-
- t.equal(res, 'util');
-});
-
-test('shadowed core modules return shadow when appending `/`', function (t) {
- t.plan(2);
-
- resolve('util/', { basedir: path.join(__dirname, 'shadowed_core') }, function (err, res) {
- t.ifError(err);
- t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js'));
- });
-});
-
-test('shadowed core modules return shadow when appending `/` [sync]', function (t) {
- t.plan(1);
-
- var res = resolve.sync('util/', { basedir: path.join(__dirname, 'shadowed_core') });
-
- t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js'));
-});
-
diff --git a/assets/node_modules/resolve/test/shadowed_core/node_modules/util/index.js b/assets/node_modules/resolve/test/shadowed_core/node_modules/util/index.js
deleted file mode 100644
index e69de29..0000000
--- a/assets/node_modules/resolve/test/shadowed_core/node_modules/util/index.js
+++ /dev/null
diff --git a/assets/node_modules/resolve/test/subdirs.js b/assets/node_modules/resolve/test/subdirs.js
deleted file mode 100644
index b7b8450..0000000
--- a/assets/node_modules/resolve/test/subdirs.js
+++ /dev/null
@@ -1,13 +0,0 @@
-var test = require('tape');
-var resolve = require('../');
-var path = require('path');
-
-test('subdirs', function (t) {
- t.plan(2);
-
- var dir = path.join(__dirname, '/subdirs');
- resolve('a/b/c/x.json', { basedir: dir }, function (err, res) {
- t.ifError(err);
- t.equal(res, path.join(dir, 'node_modules/a/b/c/x.json'));
- });
-});
diff --git a/assets/node_modules/resolve/test/symlinks.js b/assets/node_modules/resolve/test/symlinks.js
deleted file mode 100644
index 152d14e..0000000
--- a/assets/node_modules/resolve/test/symlinks.js
+++ /dev/null
@@ -1,173 +0,0 @@
-var path = require('path');
-var fs = require('fs');
-var test = require('tape');
-var map = require('array.prototype.map');
-var resolve = require('../');
-
-var symlinkDir = path.join(__dirname, 'resolver', 'symlinked', 'symlink');
-var packageDir = path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'package');
-var modADir = path.join(__dirname, 'symlinks', 'source', 'node_modules', 'mod-a');
-var symlinkModADir = path.join(__dirname, 'symlinks', 'dest', 'node_modules', 'mod-a');
-try {
- fs.unlinkSync(symlinkDir);
-} catch (err) {}
-try {
- fs.unlinkSync(packageDir);
-} catch (err) {}
-try {
- fs.unlinkSync(modADir);
-} catch (err) {}
-try {
- fs.unlinkSync(symlinkModADir);
-} catch (err) {}
-
-try {
- fs.symlinkSync('./_/symlink_target', symlinkDir, 'dir');
-} catch (err) {
- // if fails then it is probably on Windows and lets try to create a junction
- fs.symlinkSync(path.join(__dirname, 'resolver', 'symlinked', '_', 'symlink_target') + '\\', symlinkDir, 'junction');
-}
-try {
- fs.symlinkSync('../../package', packageDir, 'dir');
-} catch (err) {
- // if fails then it is probably on Windows and lets try to create a junction
- fs.symlinkSync(path.join(__dirname, '..', '..', 'package') + '\\', packageDir, 'junction');
-}
-try {
- fs.symlinkSync('../../source/node_modules/mod-a', symlinkModADir, 'dir');
-} catch (err) {
- // if fails then it is probably on Windows and lets try to create a junction
- fs.symlinkSync(path.join(__dirname, '..', '..', 'source', 'node_modules', 'mod-a') + '\\', symlinkModADir, 'junction');
-}
-
-test('symlink', function (t) {
- t.plan(2);
-
- resolve('foo', { basedir: symlinkDir, preserveSymlinks: false }, function (err, res, pkg) {
- t.error(err);
- t.equal(res, path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'foo.js'));
- });
-});
-
-test('sync symlink when preserveSymlinks = true', function (t) {
- t.plan(4);
-
- resolve('foo', { basedir: symlinkDir }, function (err, res, pkg) {
- t.ok(err, 'there is an error');
- t.notOk(res, 'no result');
-
- t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error code matches require.resolve');
- t.equal(
- err && err.message,
- 'Cannot find module \'foo\' from \'' + symlinkDir + '\'',
- 'can not find nonexistent module'
- );
- });
-});
-
-test('sync symlink', function (t) {
- var start = new Date();
- t.doesNotThrow(function () {
- t.equal(resolve.sync('foo', { basedir: symlinkDir, preserveSymlinks: false }), path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'foo.js'));
- });
- t.ok(new Date() - start < 50, 'resolve.sync timedout');
- t.end();
-});
-
-test('sync symlink when preserveSymlinks = true', function (t) {
- t.throws(function () {
- resolve.sync('foo', { basedir: symlinkDir });
- }, /Cannot find module 'foo'/);
- t.end();
-});
-
-test('sync symlink from node_modules to other dir when preserveSymlinks = false', function (t) {
- var basedir = path.join(__dirname, 'resolver', 'symlinked', '_');
- var fn = resolve.sync('package', { basedir: basedir, preserveSymlinks: false });
-
- t.equal(fn, path.resolve(__dirname, 'resolver/symlinked/package/bar.js'));
- t.end();
-});
-
-test('async symlink from node_modules to other dir when preserveSymlinks = false', function (t) {
- t.plan(2);
- var basedir = path.join(__dirname, 'resolver', 'symlinked', '_');
- resolve('package', { basedir: basedir, preserveSymlinks: false }, function (err, result) {
- t.notOk(err, 'no error');
- t.equal(result, path.resolve(__dirname, 'resolver/symlinked/package/bar.js'));
- });
-});
-
-test('packageFilter', function (t) {
- function relative(x) {
- return path.relative(__dirname, x);
- }
-
- function testPackageFilter(preserveSymlinks) {
- return function (st) {
- st.plan('is 1.x' ? 3 : 5); // eslint-disable-line no-constant-condition
-
- var destMain = 'symlinks/dest/node_modules/mod-a/index.js';
- var destPkg = 'symlinks/dest/node_modules/mod-a/package.json';
- var sourceMain = 'symlinks/source/node_modules/mod-a/index.js';
- var sourcePkg = 'symlinks/source/node_modules/mod-a/package.json';
- var destDir = path.join(__dirname, 'symlinks', 'dest');
-
- /* eslint multiline-comment-style: 0 */
- /* v2.x will restore these tests
- var packageFilterPath = [];
- var actualPath = resolve.sync('mod-a', {
- basedir: destDir,
- preserveSymlinks: preserveSymlinks,
- packageFilter: function (pkg, pkgfile, dir) {
- packageFilterPath.push(pkgfile);
- }
- });
- st.equal(
- relative(actualPath),
- path.normalize(preserveSymlinks ? destMain : sourceMain),
- 'sync: actual path is correct'
- );
- st.deepEqual(
- map(packageFilterPath, relative),
- map(preserveSymlinks ? [destPkg, destPkg] : [sourcePkg, sourcePkg], path.normalize),
- 'sync: packageFilter pkgfile arg is correct'
- );
- */
-
- var asyncPackageFilterPath = [];
- resolve(
- 'mod-a',
- {
- basedir: destDir,
- preserveSymlinks: preserveSymlinks,
- packageFilter: function (pkg, pkgfile) {
- asyncPackageFilterPath.push(pkgfile);
- }
- },
- function (err, actualPath) {
- st.error(err, 'no error');
- st.equal(
- relative(actualPath),
- path.normalize(preserveSymlinks ? destMain : sourceMain),
- 'async: actual path is correct'
- );
- st.deepEqual(
- map(asyncPackageFilterPath, relative),
- map(
- preserveSymlinks ? [destPkg, destPkg, destPkg] : [sourcePkg, sourcePkg, sourcePkg],
- path.normalize
- ),
- 'async: packageFilter pkgfile arg is correct'
- );
- }
- );
- };
- }
-
- t.test('preserveSymlinks: false', testPackageFilter(false));
-
- t.test('preserveSymlinks: true', testPackageFilter(true));
-
- t.end();
-});
diff --git a/assets/node_modules/reusify/.coveralls.yml b/assets/node_modules/reusify/.coveralls.yml
deleted file mode 100644
index 359f683..0000000
--- a/assets/node_modules/reusify/.coveralls.yml
+++ /dev/null
@@ -1 +0,0 @@
-repo_token: yIxhFqtaaz5iGVYfie9mODehFYogm8S8L
diff --git a/assets/node_modules/reusify/.travis.yml b/assets/node_modules/reusify/.travis.yml
deleted file mode 100644
index 1970476..0000000
--- a/assets/node_modules/reusify/.travis.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-language: node_js
-sudo: false
-
-node_js:
- - 9
- - 8
- - 7
- - 6
- - 5
- - 4
- - 4.0
- - iojs-v3
- - iojs-v2
- - iojs-v1
- - 0.12
- - 0.10
-
-cache:
- directories:
- - node_modules
-
-after_script:
-- npm run coverage
-
-notifications:
- email:
- on_success: never
- on_failure: always
diff --git a/assets/node_modules/reusify/LICENSE b/assets/node_modules/reusify/LICENSE
deleted file mode 100644
index fbf3a01..0000000
--- a/assets/node_modules/reusify/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Matteo Collina
-
-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/assets/node_modules/reusify/README.md b/assets/node_modules/reusify/README.md
deleted file mode 100644
index badcb7c..0000000
--- a/assets/node_modules/reusify/README.md
+++ /dev/null
@@ -1,145 +0,0 @@
-# reusify
-
-[![npm version][npm-badge]][npm-url]
-[![Build Status][travis-badge]][travis-url]
-[![Coverage Status][coveralls-badge]][coveralls-url]
-
-Reuse your objects and functions for maximum speed. This technique will
-make any function run ~10% faster. You call your functions a
-lot, and it adds up quickly in hot code paths.
-
-```
-$ node benchmarks/createNoCodeFunction.js
-Total time 53133
-Total iterations 100000000
-Iteration/s 1882069.5236482036
-
-$ node benchmarks/reuseNoCodeFunction.js
-Total time 50617
-Total iterations 100000000
-Iteration/s 1975620.838848608
-```
-
-The above benchmark uses fibonacci to simulate a real high-cpu load.
-The actual numbers might differ for your use case, but the difference
-should not.
-
-The benchmark was taken using Node v6.10.0.
-
-This library was extracted from
-[fastparallel](http://npm.im/fastparallel).
-
-## Example
-
-```js
-var reusify = require('reusify')
-var fib = require('reusify/benchmarks/fib')
-var instance = reusify(MyObject)
-
-// get an object from the cache,
-// or creates a new one when cache is empty
-var obj = instance.get()
-
-// set the state
-obj.num = 100
-obj.func()
-
-// reset the state.
-// if the state contains any external object
-// do not use delete operator (it is slow)
-// prefer set them to null
-obj.num = 0
-
-// store an object in the cache
-instance.release(obj)
-
-function MyObject () {
- // you need to define this property
- // so V8 can compile MyObject into an
- // hidden class
- this.next = null
- this.num = 0
-
- var that = this
-
- // this function is never reallocated,
- // so it can be optimized by V8
- this.func = function () {
- if (null) {
- // do nothing
- } else {
- // calculates fibonacci
- fib(that.num)
- }
- }
-}
-```
-
-The above example was intended for synchronous code, let's see async:
-```js
-var reusify = require('reusify')
-var instance = reusify(MyObject)
-
-for (var i = 0; i < 100; i++) {
- getData(i, console.log)
-}
-
-function getData (value, cb) {
- var obj = instance.get()
-
- obj.value = value
- obj.cb = cb
- obj.run()
-}
-
-function MyObject () {
- this.next = null
- this.value = null
-
- var that = this
-
- this.run = function () {
- asyncOperation(that.value, that.handle)
- }
-
- this.handle = function (err, result) {
- that.cb(err, result)
- that.value = null
- that.cb = null
- instance.release(that)
- }
-}
-```
-
-Also note how in the above examples, the code, that consumes an istance of `MyObject`,
-reset the state to initial condition, just before storing it in the cache.
-That's needed so that every subsequent request for an instance from the cache,
-could get a clean instance.
-
-## Why
-
-It is faster because V8 doesn't have to collect all the functions you
-create. On a short-lived benchmark, it is as fast as creating the
-nested function, but on a longer time frame it creates less
-pressure on the garbage collector.
-
-## Other examples
-If you want to see some complex example, checkout [middie](https://github.com/fastify/middie) and [steed](https://github.com/mcollina/steed).
-
-## Acknowledgements
-
-Thanks to [Trevor Norris](https://github.com/trevnorris) for
-getting me down the rabbit hole of performance, and thanks to [Mathias
-Buss](http://github.com/mafintosh) for suggesting me to share this
-trick.
-
-## License
-
-MIT
-
-[npm-badge]: https://badge.fury.io/js/reusify.svg
-[npm-url]: https://badge.fury.io/js/reusify
-[travis-badge]: https://api.travis-ci.org/mcollina/reusify.svg
-[travis-url]: https://travis-ci.org/mcollina/reusify
-[coveralls-badge]: https://coveralls.io/repos/mcollina/reusify/badge.svg?branch=master&service=github
-[coveralls-url]: https://coveralls.io/github/mcollina/reusify?branch=master
diff --git a/assets/node_modules/reusify/benchmarks/createNoCodeFunction.js b/assets/node_modules/reusify/benchmarks/createNoCodeFunction.js
deleted file mode 100644
index ce1aac7..0000000
--- a/assets/node_modules/reusify/benchmarks/createNoCodeFunction.js
+++ /dev/null
@@ -1,30 +0,0 @@
-'use strict'
-
-var fib = require('./fib')
-var max = 100000000
-var start = Date.now()
-
-// create a funcion with the typical error
-// pattern, that delegates the heavy load
-// to something else
-function createNoCodeFunction () {
- /* eslint no-constant-condition: "off" */
- var num = 100
-
- ;(function () {
- if (null) {
- // do nothing
- } else {
- fib(num)
- }
- })()
-}
-
-for (var i = 0; i < max; i++) {
- createNoCodeFunction()
-}
-
-var time = Date.now() - start
-console.log('Total time', time)
-console.log('Total iterations', max)
-console.log('Iteration/s', max / time * 1000)
diff --git a/assets/node_modules/reusify/benchmarks/fib.js b/assets/node_modules/reusify/benchmarks/fib.js
deleted file mode 100644
index e22cc48..0000000
--- a/assets/node_modules/reusify/benchmarks/fib.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-function fib (num) {
- var fib = []
-
- fib[0] = 0
- fib[1] = 1
- for (var i = 2; i <= num; i++) {
- fib[i] = fib[i - 2] + fib[i - 1]
- }
-}
-
-module.exports = fib
diff --git a/assets/node_modules/reusify/benchmarks/reuseNoCodeFunction.js b/assets/node_modules/reusify/benchmarks/reuseNoCodeFunction.js
deleted file mode 100644
index 3358d6e..0000000
--- a/assets/node_modules/reusify/benchmarks/reuseNoCodeFunction.js
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict'
-
-var reusify = require('../')
-var fib = require('./fib')
-var instance = reusify(MyObject)
-var max = 100000000
-var start = Date.now()
-
-function reuseNoCodeFunction () {
- var obj = instance.get()
- obj.num = 100
- obj.func()
- obj.num = 0
- instance.release(obj)
-}
-
-function MyObject () {
- this.next = null
- var that = this
- this.num = 0
- this.func = function () {
- /* eslint no-constant-condition: "off" */
- if (null) {
- // do nothing
- } else {
- fib(that.num)
- }
- }
-}
-
-for (var i = 0; i < max; i++) {
- reuseNoCodeFunction()
-}
-
-var time = Date.now() - start
-console.log('Total time', time)
-console.log('Total iterations', max)
-console.log('Iteration/s', max / time * 1000)
diff --git a/assets/node_modules/reusify/package.json b/assets/node_modules/reusify/package.json
deleted file mode 100644
index ee66aee..0000000
--- a/assets/node_modules/reusify/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "reusify",
- "version": "1.0.4",
- "description": "Reuse objects and functions with style",
- "main": "reusify.js",
- "scripts": {
- "lint": "standard",
- "test": "tape test.js | faucet",
- "istanbul": "istanbul cover tape test.js",
- "coverage": "npm run istanbul; cat coverage/lcov.info | coveralls"
- },
- "pre-commit": [
- "lint",
- "test"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/mcollina/reusify.git"
- },
- "keywords": [
- "reuse",
- "object",
- "performance",
- "function",
- "fast"
- ],
- "author": "Matteo Collina <hello@matteocollina.com>",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/mcollina/reusify/issues"
- },
- "homepage": "https://github.com/mcollina/reusify#readme",
- "engines": {
- "node": ">=0.10.0",
- "iojs": ">=1.0.0"
- },
- "devDependencies": {
- "coveralls": "^2.13.3",
- "faucet": "0.0.1",
- "istanbul": "^0.4.5",
- "pre-commit": "^1.2.2",
- "standard": "^10.0.3",
- "tape": "^4.8.0"
- }
-}
diff --git a/assets/node_modules/reusify/reusify.js b/assets/node_modules/reusify/reusify.js
deleted file mode 100644
index e6f36f3..0000000
--- a/assets/node_modules/reusify/reusify.js
+++ /dev/null
@@ -1,33 +0,0 @@
-'use strict'
-
-function reusify (Constructor) {
- var head = new Constructor()
- var tail = head
-
- function get () {
- var current = head
-
- if (current.next) {
- head = current.next
- } else {
- head = new Constructor()
- tail = head
- }
-
- current.next = null
-
- return current
- }
-
- function release (obj) {
- tail.next = obj
- tail = obj
- }
-
- return {
- get: get,
- release: release
- }
-}
-
-module.exports = reusify
diff --git a/assets/node_modules/reusify/test.js b/assets/node_modules/reusify/test.js
deleted file mode 100644
index 929cfd7..0000000
--- a/assets/node_modules/reusify/test.js
+++ /dev/null
@@ -1,66 +0,0 @@
-'use strict'
-
-var test = require('tape')
-var reusify = require('./')
-
-test('reuse objects', function (t) {
- t.plan(6)
-
- function MyObject () {
- t.pass('constructor called')
- this.next = null
- }
-
- var instance = reusify(MyObject)
- var obj = instance.get()
-
- t.notEqual(obj, instance.get(), 'two instance created')
- t.notOk(obj.next, 'next must be null')
-
- instance.release(obj)
-
- // the internals keeps a hot copy ready for reuse
- // putting this one back in the queue
- instance.release(instance.get())
-
- // comparing the old one with the one we got
- // never do this in real code, after release you
- // should never reuse that instance
- t.equal(obj, instance.get(), 'instance must be reused')
-})
-
-test('reuse more than 2 objects', function (t) {
- function MyObject () {
- t.pass('constructor called')
- this.next = null
- }
-
- var instance = reusify(MyObject)
- var obj = instance.get()
- var obj2 = instance.get()
- var obj3 = instance.get()
-
- t.notOk(obj.next, 'next must be null')
- t.notOk(obj2.next, 'next must be null')
- t.notOk(obj3.next, 'next must be null')
-
- t.notEqual(obj, obj2)
- t.notEqual(obj, obj3)
- t.notEqual(obj3, obj2)
-
- instance.release(obj)
- instance.release(obj2)
- instance.release(obj3)
-
- // skip one
- instance.get()
-
- var obj4 = instance.get()
- var obj5 = instance.get()
- var obj6 = instance.get()
-
- t.equal(obj4, obj)
- t.equal(obj5, obj2)
- t.equal(obj6, obj3)
- t.end()
-})
diff --git a/assets/node_modules/rimraf/LICENSE b/assets/node_modules/rimraf/LICENSE
deleted file mode 100644
index 19129e3..0000000
--- a/assets/node_modules/rimraf/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-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/assets/node_modules/rimraf/README.md b/assets/node_modules/rimraf/README.md
deleted file mode 100644
index 423b8cf..0000000
--- a/assets/node_modules/rimraf/README.md
+++ /dev/null
@@ -1,101 +0,0 @@
-[![Build Status](https://travis-ci.org/isaacs/rimraf.svg?branch=master)](https://travis-ci.org/isaacs/rimraf) [![Dependency Status](https://david-dm.org/isaacs/rimraf.svg)](https://david-dm.org/isaacs/rimraf) [![devDependency Status](https://david-dm.org/isaacs/rimraf/dev-status.svg)](https://david-dm.org/isaacs/rimraf#info=devDependencies)
-
-The [UNIX command](http://en.wikipedia.org/wiki/Rm_(Unix)) `rm -rf` for node.
-
-Install with `npm install rimraf`, or just drop rimraf.js somewhere.
-
-## API
-
-`rimraf(f, [opts], callback)`
-
-The first parameter will be interpreted as a globbing pattern for files. If you
-want to disable globbing you can do so with `opts.disableGlob` (defaults to
-`false`). This might be handy, for instance, if you have filenames that contain
-globbing wildcard characters.
-
-The callback will be called with an error if there is one. Certain
-errors are handled for you:
-
-* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of
- `opts.maxBusyTries` times before giving up, adding 100ms of wait
- between each attempt. The default `maxBusyTries` is 3.
-* `ENOENT` - If the file doesn't exist, rimraf will return
- successfully, since your desired outcome is already the case.
-* `EMFILE` - Since `readdir` requires opening a file descriptor, it's
- possible to hit `EMFILE` if too many file descriptors are in use.
- In the sync case, there's nothing to be done for this. But in the
- async case, rimraf will gradually back off with timeouts up to
- `opts.emfileWait` ms, which defaults to 1000.
-
-## options
-
-* unlink, chmod, stat, lstat, rmdir, readdir,
- unlinkSync, chmodSync, statSync, lstatSync, rmdirSync, readdirSync
-
- In order to use a custom file system library, you can override
- specific fs functions on the options object.
-
- If any of these functions are present on the options object, then
- the supplied function will be used instead of the default fs
- method.
-
- Sync methods are only relevant for `rimraf.sync()`, of course.
-
- For example:
-
- ```javascript
- var myCustomFS = require('some-custom-fs')
-
- rimraf('some-thing', myCustomFS, callback)
- ```
-
-* maxBusyTries
-
- If an `EBUSY`, `ENOTEMPTY`, or `EPERM` error code is encountered
- on Windows systems, then rimraf will retry with a linear backoff
- wait of 100ms longer on each try. The default maxBusyTries is 3.
-
- Only relevant for async usage.
-
-* emfileWait
-
- If an `EMFILE` error is encountered, then rimraf will retry
- repeatedly with a linear backoff of 1ms longer on each try, until
- the timeout counter hits this max. The default limit is 1000.
-
- If you repeatedly encounter `EMFILE` errors, then consider using
- [graceful-fs](http://npm.im/graceful-fs) in your program.
-
- Only relevant for async usage.
-
-* glob
-
- Set to `false` to disable [glob](http://npm.im/glob) pattern
- matching.
-
- Set to an object to pass options to the glob module. The default
- glob options are `{ nosort: true, silent: true }`.
-
- Glob version 6 is used in this module.
-
- Relevant for both sync and async usage.
-
-* disableGlob
-
- Set to any non-falsey value to disable globbing entirely.
- (Equivalent to setting `glob: false`.)
-
-## rimraf.sync
-
-It can remove stuff synchronously, too. But that's not so good. Use
-the async API. It's better.
-
-## CLI
-
-If installed with `npm install rimraf -g` it can be used as a global
-command `rimraf <path> [<path> ...]` which is useful for cross platform support.
-
-## mkdirp
-
-If you need to create a directory recursively, check out
-[mkdirp](https://github.com/substack/node-mkdirp).
diff --git a/assets/node_modules/rimraf/bin.js b/assets/node_modules/rimraf/bin.js
deleted file mode 100755
index 0d1e17b..0000000
--- a/assets/node_modules/rimraf/bin.js
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env node
-
-var rimraf = require('./')
-
-var help = false
-var dashdash = false
-var noglob = false
-var args = process.argv.slice(2).filter(function(arg) {
- if (dashdash)
- return !!arg
- else if (arg === '--')
- dashdash = true
- else if (arg === '--no-glob' || arg === '-G')
- noglob = true
- else if (arg === '--glob' || arg === '-g')
- noglob = false
- else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/))
- help = true
- else
- return !!arg
-})
-
-if (help || args.length === 0) {
- // If they didn't ask for help, then this is not a "success"
- var log = help ? console.log : console.error
- log('Usage: rimraf <path> [<path> ...]')
- log('')
- log(' Deletes all files and folders at "path" recursively.')
- log('')
- log('Options:')
- log('')
- log(' -h, --help Display this usage info')
- log(' -G, --no-glob Do not expand glob patterns in arguments')
- log(' -g, --glob Expand glob patterns in arguments (default)')
- process.exit(help ? 0 : 1)
-} else
- go(0)
-
-function go (n) {
- if (n >= args.length)
- return
- var options = {}
- if (noglob)
- options = { glob: false }
- rimraf(args[n], options, function (er) {
- if (er)
- throw er
- go(n+1)
- })
-}
diff --git a/assets/node_modules/rimraf/package.json b/assets/node_modules/rimraf/package.json
deleted file mode 100644
index 783fae9..0000000
--- a/assets/node_modules/rimraf/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "name": "rimraf",
- "version": "2.6.3",
- "main": "rimraf.js",
- "description": "A deep deletion module for node (like `rm -rf`)",
- "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
- "license": "ISC",
- "repository": "git://github.com/isaacs/rimraf.git",
- "scripts": {
- "preversion": "npm test",
- "postversion": "npm publish",
- "postpublish": "git push origin --all; git push origin --tags",
- "test": "tap test/*.js"
- },
- "bin": "./bin.js",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "files": [
- "LICENSE",
- "README.md",
- "bin.js",
- "rimraf.js"
- ],
- "devDependencies": {
- "mkdirp": "^0.5.1",
- "tap": "^12.1.1"
- }
-}
diff --git a/assets/node_modules/rimraf/rimraf.js b/assets/node_modules/rimraf/rimraf.js
deleted file mode 100644
index e80dd10..0000000
--- a/assets/node_modules/rimraf/rimraf.js
+++ /dev/null
@@ -1,364 +0,0 @@
-module.exports = rimraf
-rimraf.sync = rimrafSync
-
-var assert = require("assert")
-var path = require("path")
-var fs = require("fs")
-var glob = require("glob")
-var _0666 = parseInt('666', 8)
-
-var defaultGlobOpts = {
- nosort: true,
- silent: true
-}
-
-// for EMFILE handling
-var timeout = 0
-
-var isWindows = (process.platform === "win32")
-
-function defaults (options) {
- var methods = [
- 'unlink',
- 'chmod',
- 'stat',
- 'lstat',
- 'rmdir',
- 'readdir'
- ]
- methods.forEach(function(m) {
- options[m] = options[m] || fs[m]
- m = m + 'Sync'
- options[m] = options[m] || fs[m]
- })
-
- options.maxBusyTries = options.maxBusyTries || 3
- options.emfileWait = options.emfileWait || 1000
- if (options.glob === false) {
- options.disableGlob = true
- }
- options.disableGlob = options.disableGlob || false
- options.glob = options.glob || defaultGlobOpts
-}
-
-function rimraf (p, options, cb) {
- if (typeof options === 'function') {
- cb = options
- options = {}
- }
-
- assert(p, 'rimraf: missing path')
- assert.equal(typeof p, 'string', 'rimraf: path should be a string')
- assert.equal(typeof cb, 'function', 'rimraf: callback function required')
- assert(options, 'rimraf: invalid options argument provided')
- assert.equal(typeof options, 'object', 'rimraf: options should be object')
-
- defaults(options)
-
- var busyTries = 0
- var errState = null
- var n = 0
-
- if (options.disableGlob || !glob.hasMagic(p))
- return afterGlob(null, [p])
-
- options.lstat(p, function (er, stat) {
- if (!er)
- return afterGlob(null, [p])
-
- glob(p, options.glob, afterGlob)
- })
-
- function next (er) {
- errState = errState || er
- if (--n === 0)
- cb(errState)
- }
-
- function afterGlob (er, results) {
- if (er)
- return cb(er)
-
- n = results.length
- if (n === 0)
- return cb()
-
- results.forEach(function (p) {
- rimraf_(p, options, function CB (er) {
- if (er) {
- if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") &&
- busyTries < options.maxBusyTries) {
- busyTries ++
- var time = busyTries * 100
- // try again, with the same exact callback as this one.
- return setTimeout(function () {
- rimraf_(p, options, CB)
- }, time)
- }
-
- // this one won't happen if graceful-fs is used.
- if (er.code === "EMFILE" && timeout < options.emfileWait) {
- return setTimeout(function () {
- rimraf_(p, options, CB)
- }, timeout ++)
- }
-
- // already gone
- if (er.code === "ENOENT") er = null
- }
-
- timeout = 0
- next(er)
- })
- })
- }
-}
-
-// Two possible strategies.
-// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR
-// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR
-//
-// Both result in an extra syscall when you guess wrong. However, there
-// are likely far more normal files in the world than directories. This
-// is based on the assumption that a the average number of files per
-// directory is >= 1.
-//
-// If anyone ever complains about this, then I guess the strategy could
-// be made configurable somehow. But until then, YAGNI.
-function rimraf_ (p, options, cb) {
- assert(p)
- assert(options)
- assert(typeof cb === 'function')
-
- // sunos lets the root user unlink directories, which is... weird.
- // so we have to lstat here and make sure it's not a dir.
- options.lstat(p, function (er, st) {
- if (er && er.code === "ENOENT")
- return cb(null)
-
- // Windows can EPERM on stat. Life is suffering.
- if (er && er.code === "EPERM" && isWindows)
- fixWinEPERM(p, options, er, cb)
-
- if (st && st.isDirectory())
- return rmdir(p, options, er, cb)
-
- options.unlink(p, function (er) {
- if (er) {
- if (er.code === "ENOENT")
- return cb(null)
- if (er.code === "EPERM")
- return (isWindows)
- ? fixWinEPERM(p, options, er, cb)
- : rmdir(p, options, er, cb)
- if (er.code === "EISDIR")
- return rmdir(p, options, er, cb)
- }
- return cb(er)
- })
- })
-}
-
-function fixWinEPERM (p, options, er, cb) {
- assert(p)
- assert(options)
- assert(typeof cb === 'function')
- if (er)
- assert(er instanceof Error)
-
- options.chmod(p, _0666, function (er2) {
- if (er2)
- cb(er2.code === "ENOENT" ? null : er)
- else
- options.stat(p, function(er3, stats) {
- if (er3)
- cb(er3.code === "ENOENT" ? null : er)
- else if (stats.isDirectory())
- rmdir(p, options, er, cb)
- else
- options.unlink(p, cb)
- })
- })
-}
-
-function fixWinEPERMSync (p, options, er) {
- assert(p)
- assert(options)
- if (er)
- assert(er instanceof Error)
-
- try {
- options.chmodSync(p, _0666)
- } catch (er2) {
- if (er2.code === "ENOENT")
- return
- else
- throw er
- }
-
- try {
- var stats = options.statSync(p)
- } catch (er3) {
- if (er3.code === "ENOENT")
- return
- else
- throw er
- }
-
- if (stats.isDirectory())
- rmdirSync(p, options, er)
- else
- options.unlinkSync(p)
-}
-
-function rmdir (p, options, originalEr, cb) {
- assert(p)
- assert(options)
- if (originalEr)
- assert(originalEr instanceof Error)
- assert(typeof cb === 'function')
-
- // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)
- // if we guessed wrong, and it's not a directory, then
- // raise the original error.
- options.rmdir(p, function (er) {
- if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM"))
- rmkids(p, options, cb)
- else if (er && er.code === "ENOTDIR")
- cb(originalEr)
- else
- cb(er)
- })
-}
-
-function rmkids(p, options, cb) {
- assert(p)
- assert(options)
- assert(typeof cb === 'function')
-
- options.readdir(p, function (er, files) {
- if (er)
- return cb(er)
- var n = files.length
- if (n === 0)
- return options.rmdir(p, cb)
- var errState
- files.forEach(function (f) {
- rimraf(path.join(p, f), options, function (er) {
- if (errState)
- return
- if (er)
- return cb(errState = er)
- if (--n === 0)
- options.rmdir(p, cb)
- })
- })
- })
-}
-
-// this looks simpler, and is strictly *faster*, but will
-// tie up the JavaScript thread and fail on excessively
-// deep directory trees.
-function rimrafSync (p, options) {
- options = options || {}
- defaults(options)
-
- assert(p, 'rimraf: missing path')
- assert.equal(typeof p, 'string', 'rimraf: path should be a string')
- assert(options, 'rimraf: missing options')
- assert.equal(typeof options, 'object', 'rimraf: options should be object')
-
- var results
-
- if (options.disableGlob || !glob.hasMagic(p)) {
- results = [p]
- } else {
- try {
- options.lstatSync(p)
- results = [p]
- } catch (er) {
- results = glob.sync(p, options.glob)
- }
- }
-
- if (!results.length)
- return
-
- for (var i = 0; i < results.length; i++) {
- var p = results[i]
-
- try {
- var st = options.lstatSync(p)
- } catch (er) {
- if (er.code === "ENOENT")
- return
-
- // Windows can EPERM on stat. Life is suffering.
- if (er.code === "EPERM" && isWindows)
- fixWinEPERMSync(p, options, er)
- }
-
- try {
- // sunos lets the root user unlink directories, which is... weird.
- if (st && st.isDirectory())
- rmdirSync(p, options, null)
- else
- options.unlinkSync(p)
- } catch (er) {
- if (er.code === "ENOENT")
- return
- if (er.code === "EPERM")
- return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)
- if (er.code !== "EISDIR")
- throw er
-
- rmdirSync(p, options, er)
- }
- }
-}
-
-function rmdirSync (p, options, originalEr) {
- assert(p)
- assert(options)
- if (originalEr)
- assert(originalEr instanceof Error)
-
- try {
- options.rmdirSync(p)
- } catch (er) {
- if (er.code === "ENOENT")
- return
- if (er.code === "ENOTDIR")
- throw originalEr
- if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")
- rmkidsSync(p, options)
- }
-}
-
-function rmkidsSync (p, options) {
- assert(p)
- assert(options)
- options.readdirSync(p).forEach(function (f) {
- rimrafSync(path.join(p, f), options)
- })
-
- // We only end up here once we got ENOTEMPTY at least once, and
- // at this point, we are guaranteed to have removed all the kids.
- // So, we know that it won't be ENOENT or ENOTDIR or anything else.
- // try really hard to delete stuff on windows, because it has a
- // PROFOUNDLY annoying habit of not closing handles promptly when
- // files are deleted, resulting in spurious ENOTEMPTY errors.
- var retries = isWindows ? 100 : 1
- var i = 0
- do {
- var threw = true
- try {
- var ret = options.rmdirSync(p, options)
- threw = false
- return ret
- } finally {
- if (++i < retries && threw)
- continue
- }
- } while (true)
-}
diff --git a/assets/node_modules/run-parallel/LICENSE b/assets/node_modules/run-parallel/LICENSE
deleted file mode 100644
index c7e6852..0000000
--- a/assets/node_modules/run-parallel/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-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/assets/node_modules/run-parallel/README.md b/assets/node_modules/run-parallel/README.md
deleted file mode 100644
index edc3da4..0000000
--- a/assets/node_modules/run-parallel/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# run-parallel [![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/run-parallel/master.svg
-[travis-url]: https://travis-ci.org/feross/run-parallel
-[npm-image]: https://img.shields.io/npm/v/run-parallel.svg
-[npm-url]: https://npmjs.org/package/run-parallel
-[downloads-image]: https://img.shields.io/npm/dm/run-parallel.svg
-[downloads-url]: https://npmjs.org/package/run-parallel
-[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg
-[standard-url]: https://standardjs.com
-
-### Run an array of functions in parallel
-
-![parallel](https://raw.githubusercontent.com/feross/run-parallel/master/img.png) [![Sauce Test Status](https://saucelabs.com/browser-matrix/run-parallel.svg)](https://saucelabs.com/u/run-parallel)
-
-### install
-
-```
-npm install run-parallel
-```
-
-### usage
-
-#### parallel(tasks, [callback])
-
-Run the `tasks` array of functions in parallel, without waiting until the previous
-function has completed. If any of the functions pass an error to its callback, the main
-`callback` is immediately called with the value of the error. Once the `tasks` have
-completed, the results are passed to the final `callback` as an array.
-
-It is also possible to use an object instead of an array. Each property will be run as a
-function and the results will be passed to the final `callback` as an object instead of
-an array. This can be a more readable way of handling the results.
-
-##### arguments
-
-- `tasks` - An array or object containing functions to run. Each function is passed a
-`callback(err, result)` which it must call on completion with an error `err` (which can
-be `null`) and an optional `result` value.
-- `callback(err, results)` - An optional callback to run once all the functions have
-completed. This function gets a results array (or object) containing all the result
-arguments passed to the task callbacks.
-
-##### example
-
-```js
-var parallel = require('run-parallel')
-
-parallel([
- function (callback) {
- setTimeout(function () {
- callback(null, 'one')
- }, 200)
- },
- function (callback) {
- setTimeout(function () {
- callback(null, 'two')
- }, 100)
- }
-],
-// optional callback
-function (err, results) {
- // the results array will equal ['one','two'] even though
- // the second function had a shorter timeout.
-})
-```
-
-This module is basically equavalent to
-[`async.parallel`](https://github.com/caolan/async#paralleltasks-callback), but it's
-handy to just have the one function you need instead of the kitchen sink. Modularity!
-Especially handy if you're serving to the browser and need to reduce your javascript
-bundle size.
-
-Works great in the browser with [browserify](http://browserify.org/)!
-
-### see also
-
-- [run-auto](https://github.com/feross/run-auto)
-- [run-parallel-limit](https://github.com/feross/run-parallel-limit)
-- [run-series](https://github.com/feross/run-series)
-- [run-waterfall](https://github.com/feross/run-waterfall)
-
-### license
-
-MIT. Copyright (c) [Feross Aboukhadijeh](http://feross.org).
diff --git a/assets/node_modules/run-parallel/index.js b/assets/node_modules/run-parallel/index.js
deleted file mode 100644
index e2f38d7..0000000
--- a/assets/node_modules/run-parallel/index.js
+++ /dev/null
@@ -1,48 +0,0 @@
-module.exports = runParallel
-
-function runParallel (tasks, cb) {
- var results, pending, keys
- var isSync = true
-
- if (Array.isArray(tasks)) {
- results = []
- pending = tasks.length
- } else {
- keys = Object.keys(tasks)
- results = {}
- pending = keys.length
- }
-
- function done (err) {
- function end () {
- if (cb) cb(err, results)
- cb = null
- }
- if (isSync) process.nextTick(end)
- else end()
- }
-
- function each (i, err, result) {
- results[i] = result
- if (--pending === 0 || err) {
- done(err)
- }
- }
-
- if (!pending) {
- // empty
- done(null)
- } else if (keys) {
- // object
- keys.forEach(function (key) {
- tasks[key](function (err, result) { each(key, err, result) })
- })
- } else {
- // array
- tasks.forEach(function (task, i) {
- task(function (err, result) { each(i, err, result) })
- })
- }
-
- isSync = false
-}
diff --git a/assets/node_modules/run-parallel/package.json b/assets/node_modules/run-parallel/package.json
deleted file mode 100644
index 8774dfc..0000000
--- a/assets/node_modules/run-parallel/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "run-parallel",
- "description": "Run an array of functions in parallel",
- "version": "1.1.9",
- "author": {
- "name": "Feross Aboukhadijeh",
- "email": "feross@feross.org",
- "url": "http://feross.org/"
- },
- "bugs": {
- "url": "https://github.com/feross/run-parallel/issues"
- },
- "dependencies": {},
- "devDependencies": {
- "airtap": "0.0.4",
- "standard": "*",
- "tape": "^4.0.0"
- },
- "homepage": "https://github.com/feross/run-parallel",
- "keywords": [
- "parallel",
- "async",
- "function",
- "callback",
- "asynchronous",
- "run",
- "array",
- "run parallel"
- ],
- "license": "MIT",
- "main": "index.js",
- "repository": {
- "type": "git",
- "url": "git://github.com/feross/run-parallel.git"
- },
- "scripts": {
- "test": "standard && npm run test-node && npm run test-browser",
- "test-browser": "airtap -- test/*.js",
- "test-browser-local": "airtap --local -- test/*.js",
- "test-node": "tape test/*.js"
- }
-}
diff --git a/assets/node_modules/safe-buffer/LICENSE b/assets/node_modules/safe-buffer/LICENSE
deleted file mode 100644
index 0c068ce..0000000
--- a/assets/node_modules/safe-buffer/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/safe-buffer/README.md b/assets/node_modules/safe-buffer/README.md
deleted file mode 100644
index e9a81af..0000000
--- a/assets/node_modules/safe-buffer/README.md
+++ /dev/null
@@ -1,584 +0,0 @@
-# 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/assets/node_modules/safe-buffer/index.d.ts b/assets/node_modules/safe-buffer/index.d.ts
deleted file mode 100644
index e9fed80..0000000
--- a/assets/node_modules/safe-buffer/index.d.ts
+++ /dev/null
@@ -1,187 +0,0 @@
-declare module "safe-buffer" {
- export class Buffer {
- length: number
- write(string: string, offset?: number, length?: number, encoding?: string): number;
- toString(encoding?: string, start?: number, end?: number): string;
- toJSON(): { type: 'Buffer', data: any[] };
- equals(otherBuffer: Buffer): boolean;
- compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;
- copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;
- slice(start?: number, end?: number): Buffer;
- writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number;
- readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number;
- readIntLE(offset: number, byteLength: number, noAssert?: boolean): number;
- readIntBE(offset: number, byteLength: number, noAssert?: boolean): number;
- readUInt8(offset: number, noAssert?: boolean): number;
- readUInt16LE(offset: number, noAssert?: boolean): number;
- readUInt16BE(offset: number, noAssert?: boolean): number;
- readUInt32LE(offset: number, noAssert?: boolean): number;
- readUInt32BE(offset: number, noAssert?: boolean): number;
- readInt8(offset: number, noAssert?: boolean): number;
- readInt16LE(offset: number, noAssert?: boolean): number;
- readInt16BE(offset: number, noAssert?: boolean): number;
- readInt32LE(offset: number, noAssert?: boolean): number;
- readInt32BE(offset: number, noAssert?: boolean): number;
- readFloatLE(offset: number, noAssert?: boolean): number;
- readFloatBE(offset: number, noAssert?: boolean): number;
- readDoubleLE(offset: number, noAssert?: boolean): number;
- readDoubleBE(offset: number, noAssert?: boolean): number;
- swap16(): Buffer;
- swap32(): Buffer;
- swap64(): Buffer;
- writeUInt8(value: number, offset: number, noAssert?: boolean): number;
- writeUInt16LE(value: number, offset: number, noAssert?: boolean): number;
- writeUInt16BE(value: number, offset: number, noAssert?: boolean): number;
- writeUInt32LE(value: number, offset: number, noAssert?: boolean): number;
- writeUInt32BE(value: number, offset: number, noAssert?: boolean): number;
- writeInt8(value: number, offset: number, noAssert?: boolean): number;
- writeInt16LE(value: number, offset: number, noAssert?: boolean): number;
- writeInt16BE(value: number, offset: number, noAssert?: boolean): number;
- writeInt32LE(value: number, offset: number, noAssert?: boolean): number;
- writeInt32BE(value: number, offset: number, noAssert?: boolean): number;
- writeFloatLE(value: number, offset: number, noAssert?: boolean): number;
- writeFloatBE(value: number, offset: number, noAssert?: boolean): number;
- writeDoubleLE(value: number, offset: number, noAssert?: boolean): number;
- writeDoubleBE(value: number, offset: number, noAssert?: boolean): number;
- fill(value: any, offset?: number, end?: number): this;
- indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;
- lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;
- includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean;
-
- /**
- * Allocates a new buffer containing the given {str}.
- *
- * @param str String to store in buffer.
- * @param encoding encoding to use, optional. Default is 'utf8'
- */
- constructor (str: string, encoding?: string);
- /**
- * Allocates a new buffer of {size} octets.
- *
- * @param size count of octets to allocate.
- */
- constructor (size: number);
- /**
- * Allocates a new buffer containing the given {array} of octets.
- *
- * @param array The octets to store.
- */
- constructor (array: Uint8Array);
- /**
- * Produces a Buffer backed by the same allocated memory as
- * the given {ArrayBuffer}.
- *
- *
- * @param arrayBuffer The ArrayBuffer with which to share memory.
- */
- constructor (arrayBuffer: ArrayBuffer);
- /**
- * Allocates a new buffer containing the given {array} of octets.
- *
- * @param array The octets to store.
- */
- constructor (array: any[]);
- /**
- * Copies the passed {buffer} data onto a new {Buffer} instance.
- *
- * @param buffer The buffer to copy.
- */
- constructor (buffer: Buffer);
- prototype: Buffer;
- /**
- * Allocates a new Buffer using an {array} of octets.
- *
- * @param array
- */
- static from(array: any[]): Buffer;
- /**
- * 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.
- * The optional {byteOffset} and {length} arguments specify a memory range
- * within the {arrayBuffer} that will be shared by the Buffer.
- *
- * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer()
- * @param byteOffset
- * @param length
- */
- static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer;
- /**
- * Copies the passed {buffer} data onto a new Buffer instance.
- *
- * @param buffer
- */
- static from(buffer: Buffer): Buffer;
- /**
- * 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'.
- *
- * @param str
- */
- static from(str: string, encoding?: string): Buffer;
- /**
- * Returns true if {obj} is a Buffer
- *
- * @param obj object to test.
- */
- static isBuffer(obj: any): obj is Buffer;
- /**
- * Returns true if {encoding} is a valid encoding argument.
- * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'
- *
- * @param encoding string to test.
- */
- static isEncoding(encoding: string): boolean;
- /**
- * Gives the actual byte length of a string. encoding defaults to 'utf8'.
- * This is not the same as String.prototype.length since that returns the number of characters in a string.
- *
- * @param string string to test.
- * @param encoding encoding used to evaluate (defaults to 'utf8')
- */
- static byteLength(string: string, encoding?: string): number;
- /**
- * Returns a buffer which is the result of concatenating all the buffers in the list together.
- *
- * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer.
- * If the list has exactly one item, then the first item of the list is returned.
- * If the list has more than one item, then a new Buffer is created.
- *
- * @param list An array of Buffer objects to concatenate
- * @param totalLength Total length of the buffers when concatenated.
- * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly.
- */
- static concat(list: Buffer[], totalLength?: number): Buffer;
- /**
- * The same as buf1.compare(buf2).
- */
- static compare(buf1: Buffer, buf2: Buffer): number;
- /**
- * Allocates a new buffer of {size} octets.
- *
- * @param size count of octets to allocate.
- * @param fill if specified, buffer will be initialized by calling buf.fill(fill).
- * If parameter is omitted, buffer will be filled with zeros.
- * @param encoding encoding used for call to buf.fill while initalizing
- */
- static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer;
- /**
- * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents
- * of the newly created Buffer are unknown and may contain sensitive data.
- *
- * @param size count of octets to allocate
- */
- static allocUnsafe(size: number): Buffer;
- /**
- * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents
- * of the newly created Buffer are unknown and may contain sensitive data.
- *
- * @param size count of octets to allocate
- */
- static allocUnsafeSlow(size: number): Buffer;
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/safe-buffer/index.js b/assets/node_modules/safe-buffer/index.js
deleted file mode 100644
index 22438da..0000000
--- a/assets/node_modules/safe-buffer/index.js
+++ /dev/null
@@ -1,62 +0,0 @@
-/* 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/assets/node_modules/safe-buffer/package.json b/assets/node_modules/safe-buffer/package.json
deleted file mode 100644
index 623fbc3..0000000
--- a/assets/node_modules/safe-buffer/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "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/assets/node_modules/sass/README.md b/assets/node_modules/sass/README.md
deleted file mode 100644
index 6017ac5..0000000
--- a/assets/node_modules/sass/README.md
+++ /dev/null
@@ -1,206 +0,0 @@
-A pure JavaScript implementation of [Sass][sass]. **Sass makes CSS fun again**.
-
-<table>
- <tr>
- <td>
- <img width="118px" alt="Sass logo" src="https://rawgit.com/sass/sass-site/master/source/assets/img/logos/logo.svg" />
- </td>
- <td valign="middle">
- <a href="https://www.npmjs.com/package/sass"><img width="100%" alt="npm statistics" src="https://nodei.co/npm/sass.png?downloads=true"></a>
- </td>
- <td valign="middle">
- <a href="https://travis-ci.org/sass/dart-sass"><img alt="Travis build status" src="https://api.travis-ci.org/sass/dart-sass.svg?branch=master"></a>
- <br>
- <a href="https://ci.appveyor.com/project/nex3/dart-sass"><img alt="Appveyor build status" src="https://ci.appveyor.com/api/projects/status/84rl9hvu8uoecgef?svg=true"></a>
- </td>
- </tr>
-</table>
-
-[sass]: https://sass-lang.com/
-
-This package is a distribution of [Dart Sass][], compiled to pure JavaScript
-with no native code or external dependencies. It provides a command-line `sass`
-executable and a Node.js API.
-
-[Dart Sass]: https://github.com/sass/dart-sass
-
-* [Usage](#usage)
-* [API](#api)
-* [See Also](#see-also)
-* [Behavioral Differences from Ruby Sass](#behavioral-differences-from-ruby-sass)
-
-## Usage
-
-You can install Sass globally using `npm install -g sass` which will provide
-access to the `sass` executable. You can also add it to your project using
-`npm install --save-dev sass`. This provides the executable as well as a
-library:
-
-[npm]: https://www.npmjs.com/package/sass
-
-```js
-var sass = require('sass');
-
-sass.render({file: scss_filename}, function(err, result) { /* ... */ });
-
-// OR
-
-var result = sass.renderSync({file: scss_filename});
-```
-
-[See below](#api) for details on Dart Sass's JavaScript API.
-
-## API
-
-When installed via npm, Dart Sass supports a JavaScript API that's fully
-compatible with [Node Sass][] (with a few exceptions listed below), with support
-for both the `render()` and `renderSync()` functions. See [the Sass
-website][js api] for full API documentation!
-
-[Node Sass]: https://github.com/sass/node-sass
-[js api]: https://sass-lang.com/documentation/js-api
-
-Note however that by default, **`renderSync()` is more than twice as fast as
-`render()`** due to the overhead of asynchronous callbacks. To avoid this
-performance hit, `render()` can use the [`fibers`][fibers] package to call
-asynchronous importers from the synchronous code path. To enable this, pass the
-`Fiber` class to the `fiber` option:
-
-[fibers]: https://www.npmjs.com/package/fibers
-
-```js
-var sass = require("sass");
-var Fiber = require("fibers");
-
-sass.render({
- file: "input.scss",
- importer: function(url, prev, done) {
- // ...
- },
- fiber: Fiber
-}, function(err, result) {
- // ...
-});
-```
-
-Both `render()` and `renderSync()` support the following options:
-
-* [`data`](https://github.com/sass/node-sass#data)
-* [`file`](https://github.com/sass/node-sass#file)
-* [`functions`](https://github.com/sass/node-sass#functions--v300---experimental)
-* [`importer`](https://github.com/sass/node-sass#importer--v200---experimental)
-* [`includePaths`](https://github.com/sass/node-sass#includepaths)
-* [`indentType`](https://github.com/sass/node-sass#indenttype)
-* [`indentWidth`](https://github.com/sass/node-sass#indentwidth)
-* [`indentedSyntax`](https://github.com/sass/node-sass#indentedsyntax)
-* [`linefeed`](https://github.com/sass/node-sass#linefeed)
-* [`omitSourceMapUrl`](https://github.com/sass/node-sass#omitsourcemapurl)
-* [`outFile`](https://github.com/sass/node-sass#outfile)
-* [`sourceMapContents`](https://github.com/sass/node-sass#sourcemapcontents)
-* [`sourceMapEmbed`](https://github.com/sass/node-sass#sourcemapembed)
-* [`sourceMapRoot`](https://github.com/sass/node-sass#sourcemaproot)
-* [`sourceMap`](https://github.com/sass/node-sass#sourcemap)
-* Only the `"expanded"` and `"compressed"` values of
- [`outputStyle`](https://github.com/sass/node-sass#outputstyle) are supported.
-
-No support is intended for the following options:
-
-* [`precision`](https://github.com/sass/node-sass#precision). Dart Sass defaults
- to a sufficiently high precision for all existing browsers, and making this
- customizable would make the code substantially less efficient.
-
-* [`sourceComments`](https://github.com/sass/node-sass#sourcecomments). Source
- maps are the recommended way of locating the origin of generated selectors.
-
-## See Also
-
-* [Dart Sass][], from which this package is compiled, can be used either as a
- stand-alone executable or as a Dart library. Running Dart Sass on the Dart VM
- is substantially faster than running the pure JavaScript version, so this may
- be appropriate for performance-sensitive applications. The Dart API is also
- (currently) more user-friendly than the JavaScript API. See
- [the Dart Sass README][Using Dart Sass] for details on how to use it.
-
-* [Node Sass][], which is a wrapper around [LibSass][], the C++ implementation
- of Sass. Node Sass supports the same API as this package and is also faster
- (although it's usually a little slower than Dart Sass). However, it requires a
- native library which may be difficult to install, and it's generally slower to
- add features and fix bugs.
-
-[Using Dart Sass]: https://github.com/sass/dart-sass#using-dart-sass
-[Node Sass]: https://www.npmjs.com/package/node-sass
-[LibSass]: https://sass-lang.com/libsass
-
-## Behavioral Differences from Ruby Sass
-
-There are a few intentional behavioral differences between Dart Sass and Ruby
-Sass. These are generally places where Ruby Sass has an undesired behavior, and
-it's substantially easier to implement the correct behavior than it would be to
-implement compatible behavior. These should all have tracking bugs against Ruby
-Sass to update the reference behavior.
-
-1. `@extend` only accepts simple selectors, as does the second argument of
- `selector-extend()`. See [issue 1599][].
-
-2. Subject selectors are not supported. See [issue 1126][].
-
-3. Pseudo selector arguments are parsed as `<declaration-value>`s rather than
- having a more limited custom parsing. See [issue 2120][].
-
-4. The numeric precision is set to 10. See [issue 1122][].
-
-5. The indented syntax parser is more flexible: it doesn't require consistent
- indentation across the whole document. See [issue 2176][].
-
-6. Colors do not support channel-by-channel arithmetic. See [issue 2144][].
-
-7. Unitless numbers aren't `==` to unit numbers with the same value. In
- addition, map keys follow the same logic as `==`-equality. See
- [issue 1496][].
-
-8. `rgba()` and `hsla()` alpha values with percentage units are interpreted as
- percentages. Other units are forbidden. See [issue 1525][].
-
-9. Too many variable arguments passed to a function is an error. See
- [issue 1408][].
-
-10. Allow `@extend` to reach outside a media query if there's an identical
- `@extend` defined outside that query. This isn't tracked explicitly, because
- it'll be irrelevant when [issue 1050][] is fixed.
-
-11. Some selector pseudos containing placeholder selectors will be compiled
- where they wouldn't be in Ruby Sass. This better matches the semantics of
- the selectors in question, and is more efficient. See [issue 2228][].
-
-12. The old-style `:property value` syntax is not supported in the indented
- syntax. See [issue 2245][].
-
-13. The reference combinator is not supported. See [issue 303][].
-
-14. Universal selector unification is symmetrical. See [issue 2247][].
-
-15. `@extend` doesn't produce an error if it matches but fails to unify. See
- [issue 2250][].
-
-16. Dart Sass currently only supports UTF-8 documents. We'd like to support
- more, but Dart currently doesn't support them. See [dart-lang/sdk#11744][],
- for example.
-
-[issue 1599]: https://github.com/sass/sass/issues/1599
-[issue 1126]: https://github.com/sass/sass/issues/1126
-[issue 2120]: https://github.com/sass/sass/issues/2120
-[issue 1122]: https://github.com/sass/sass/issues/1122
-[issue 2176]: https://github.com/sass/sass/issues/2176
-[issue 2144]: https://github.com/sass/sass/issues/2144
-[issue 1496]: https://github.com/sass/sass/issues/1496
-[issue 1525]: https://github.com/sass/sass/issues/1525
-[issue 1408]: https://github.com/sass/sass/issues/1408
-[issue 1050]: https://github.com/sass/sass/issues/1050
-[issue 2228]: https://github.com/sass/sass/issues/2228
-[issue 2245]: https://github.com/sass/sass/issues/2245
-[issue 303]: https://github.com/sass/sass/issues/303
-[issue 2247]: https://github.com/sass/sass/issues/2247
-[issue 2250]: https://github.com/sass/sass/issues/2250
-[dart-lang/sdk#11744]: https://github.com/dart-lang/sdk/issues/11744
-
-Disclaimer: this is not an official Google product.
diff --git a/assets/node_modules/sass/package.json b/assets/node_modules/sass/package.json
deleted file mode 100644
index 1a00f5a..0000000
--- a/assets/node_modules/sass/package.json
+++ /dev/null
@@ -1 +0,0 @@
-{"name":"sass","description":"A pure JavaScript implementation of Sass.","license":"MIT","bugs":"https://github.com/sass/dart-sass/issues","homepage":"https://github.com/sass/dart-sass","repository":{"type":"git","url":"https://github.com/sass/dart-sass"},"author":{"name":"Natalie Weizenbaum","email":"nweiz@google.com","url":"https://github.com/nex3"},"engines":{"node":">=8.9.0"},"dependencies":{"chokidar":">=2.0.0 <4.0.0"},"main":"sass.dart.js","bin":"sass.js","keywords":["style","scss","sass","preprocessor","css"],"version":"1.25.0"} \ No newline at end of file
diff --git a/assets/node_modules/sass/sass.dart.js b/assets/node_modules/sass/sass.dart.js
deleted file mode 100644
index 0cf5c0e..0000000
--- a/assets/node_modules/sass/sass.dart.js
+++ /dev/null
@@ -1,56282 +0,0 @@
-// make sure to keep this as 'var'
-// we don't want block scoping
-
-var dartNodePreambleSelf = typeof global !== "undefined" ? global : window;
-
-var self = Object.create(dartNodePreambleSelf);
-
-self.scheduleImmediate = self.setImmediate
- ? function (cb) {
- dartNodePreambleSelf.setImmediate(cb);
- }
- : function(cb) {
- setTimeout(cb, 0);
- };
-
-// CommonJS globals.
-self.exports = exports;
-
-// Node.js specific exports, check to see if they exist & or polyfilled
-
-if (typeof process !== "undefined") {
- self.process = process;
-}
-
-if (typeof __dirname !== "undefined") {
- self.__dirname = __dirname;
-}
-
-if (typeof __filename !== "undefined") {
- self.__filename = __filename;
-}
-
-// if we're running in a browser, Dart supports most of this out of box
-// make sure we only run these in Node.js environment
-if (!dartNodePreambleSelf.window) {
- // This line is to:
- // 1) Prevent Webpack from bundling.
- // 2) In Webpack on Node.js, make sure we're using the native Node.js require, which is available via __non_webpack_require__
- // https://github.com/mbullington/node_preamble.dart/issues/18#issuecomment-527305561
- var url = ("undefined" !== typeof __webpack_require__ ? __non_webpack_require__ : require)("url");
-
- self.location = {
- get href() {
- if (url.pathToFileURL) {
- return url.pathToFileURL(process.cwd()).href + "/";
- } else {
- // This isn't really a correct transformation, but it's the best we have
- // for versions of Node <10.12.0 which introduced `url.pathToFileURL()`.
- // For example, it will fail for paths that contain characters that need
- // to be escaped in URLs.
- return "file://" + (function() {
- var cwd = process.cwd();
- if (process.platform != "win32") return cwd;
- return "/" + cwd.replace(/\\/g, "/");
- })() + "/"
- }
- }
- };
-
- (function() {
- function computeCurrentScript() {
- try {
- throw new Error();
- } catch(e) {
- var stack = e.stack;
- var re = new RegExp("^ *at [^(]*\\((.*):[0-9]*:[0-9]*\\)$", "mg");
- var lastMatch = null;
- do {
- var match = re.exec(stack);
- if (match != null) lastMatch = match;
- } while (match != null);
- return lastMatch[1];
- }
- }
-
- var cachedCurrentScript = null;
- self.document = {
- get currentScript() {
- if (cachedCurrentScript == null) {
- cachedCurrentScript = {src: computeCurrentScript()};
- }
- return cachedCurrentScript;
- }
- };
- })();
-
- self.dartDeferredLibraryLoader = function(uri, successCallback, errorCallback) {
- try {
- load(uri);
- successCallback();
- } catch (error) {
- errorCallback(error);
- }
- };
-}
-
-self.fs = require("fs");
-self.chokidar = require("chokidar");
-self.readline = require("readline");
-// Generated by dart2js (fast startup emitter, strong, trust primitives, omit checks, lax runtime type), the Dart to JavaScript compiler version: 2.7.0.
-// The code supports the following hooks:
-// dartPrint(message):
-// if this function is defined it is called instead of the Dart [print]
-// method.
-//
-// dartMainRunner(main, args):
-// if this function is defined, the Dart [main] method will not be invoked
-// directly. Instead, a closure that will invoke [main], and its arguments
-// [args] is passed to [dartMainRunner].
-//
-// dartDeferredLibraryLoader(uri, successCallback, errorCallback):
-// if this function is defined, it will be called when a deferred library
-// is loaded. It should load and eval the javascript of `uri`, and call
-// successCallback. If it fails to do so, it should call errorCallback with
-// an error.
-//
-// dartCallInstrumentation(id, qualifiedName):
-// if this function is defined, it will be called at each entry of a
-// method or constructor. Used only when compiling programs with
-// --experiment-call-instrumentation.
-{
-}
-(function dartProgram() {
- function copyProperties(from, to) {
- var keys = Object.keys(from);
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- to[key] = from[key];
- }
- }
- var supportsDirectProtoAccess = function() {
- var cls = function() {
- };
- cls.prototype = {p: {}};
- var object = new cls();
- if (!(object.__proto__ && object.__proto__.p === cls.prototype.p))
- return false;
- try {
- if (typeof navigator != "undefined" && typeof navigator.userAgent == "string" && navigator.userAgent.indexOf("Chrome/") >= 0)
- return true;
- if (typeof version == "function" && version.length == 0) {
- var v = version();
- if (/^\d+\.\d+\.\d+\.\d+$/.test(v))
- return true;
- }
- } catch (_) {
- }
- return false;
- }();
- function setFunctionNamesIfNecessary(holders) {
- function t() {
- }
- ;
- if (typeof t.name == "string")
- return;
- for (var i = 0; i < holders.length; i++) {
- var holder = holders[i];
- var keys = Object.keys(holder);
- for (var j = 0; j < keys.length; j++) {
- var key = keys[j];
- var f = holder[key];
- if (typeof f == 'function')
- f.name = key;
- }
- }
- }
- function inherit(cls, sup) {
- cls.prototype.constructor = cls;
- cls.prototype["$is" + cls.name] = cls;
- if (sup != null) {
- if (supportsDirectProtoAccess) {
- cls.prototype.__proto__ = sup.prototype;
- return;
- }
- var clsPrototype = Object.create(sup.prototype);
- copyProperties(cls.prototype, clsPrototype);
- cls.prototype = clsPrototype;
- }
- }
- function inheritMany(sup, classes) {
- for (var i = 0; i < classes.length; i++)
- inherit(classes[i], sup);
- }
- function mixin(cls, mixin) {
- copyProperties(mixin.prototype, cls.prototype);
- cls.prototype.constructor = cls;
- }
- function lazy(holder, name, getterName, initializer) {
- var uninitializedSentinel = holder;
- holder[name] = uninitializedSentinel;
- holder[getterName] = function() {
- holder[getterName] = function() {
- H.throwCyclicInit(name);
- };
- var result;
- var sentinelInProgress = initializer;
- try {
- if (holder[name] === uninitializedSentinel) {
- result = holder[name] = sentinelInProgress;
- result = holder[name] = initializer();
- } else
- result = holder[name];
- } finally {
- if (result === sentinelInProgress)
- holder[name] = null;
- holder[getterName] = function() {
- return this[name];
- };
- }
- return result;
- };
- }
- function makeConstList(list) {
- list.immutable$list = Array;
- list.fixed$length = Array;
- return list;
- }
- function convertToFastObject(properties) {
- function t() {
- }
- t.prototype = properties;
- new t();
- return properties;
- }
- function convertAllToFastObject(arrayOfObjects) {
- for (var i = 0; i < arrayOfObjects.length; ++i)
- convertToFastObject(arrayOfObjects[i]);
- }
- var functionCounter = 0;
- function tearOffGetter(funcs, applyTrampolineIndex, reflectionInfo, name, isIntercepted) {
- return isIntercepted ? new Function("funcs", "applyTrampolineIndex", "reflectionInfo", "name", "H", "c", "return function tearOff_" + name + functionCounter++ + "(receiver) {" + "if (c === null) c = " + "H.closureFromTearOff" + "(" + "this, funcs, applyTrampolineIndex, reflectionInfo, false, true, name);" + "return new c(this, funcs[0], receiver, name);" + "}")(funcs, applyTrampolineIndex, reflectionInfo, name, H, null) : new Function("funcs", "applyTrampolineIndex", "reflectionInfo", "name", "H", "c", "return function tearOff_" + name + functionCounter++ + "() {" + "if (c === null) c = " + "H.closureFromTearOff" + "(" + "this, funcs, applyTrampolineIndex, reflectionInfo, false, false, name);" + "return new c(this, funcs[0], null, name);" + "}")(funcs, applyTrampolineIndex, reflectionInfo, name, H, null);
- }
- function tearOff(funcs, applyTrampolineIndex, reflectionInfo, isStatic, name, isIntercepted) {
- var cache = null;
- return isStatic ? function() {
- if (cache === null)
- cache = H.closureFromTearOff(this, funcs, applyTrampolineIndex, reflectionInfo, true, false, name).prototype;
- return cache;
- } : tearOffGetter(funcs, applyTrampolineIndex, reflectionInfo, name, isIntercepted);
- }
- var typesOffset = 0;
- function installTearOff(container, getterName, isStatic, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex) {
- var funs = [];
- for (var i = 0; i < funsOrNames.length; i++) {
- var fun = funsOrNames[i];
- if (typeof fun == 'string')
- fun = container[fun];
- fun.$callName = callNames[i];
- funs.push(fun);
- }
- var fun = funs[0];
- fun.$requiredArgCount = requiredParameterCount;
- fun.$defaultValues = optionalParameterDefaultValues;
- var reflectionInfo = funType;
- if (typeof reflectionInfo == "number")
- reflectionInfo += typesOffset;
- var name = funsOrNames[0];
- fun.$stubName = name;
- var getterFunction = tearOff(funs, applyIndex || 0, reflectionInfo, isStatic, name, isIntercepted);
- container[getterName] = getterFunction;
- if (isStatic)
- fun.$tearOff = getterFunction;
- }
- function installStaticTearOff(container, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex) {
- return installTearOff(container, getterName, true, false, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex);
- }
- function installInstanceTearOff(container, getterName, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex) {
- return installTearOff(container, getterName, false, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex);
- }
- function setOrUpdateInterceptorsByTag(newTags) {
- var tags = init.interceptorsByTag;
- if (!tags) {
- init.interceptorsByTag = newTags;
- return;
- }
- copyProperties(newTags, tags);
- }
- function setOrUpdateLeafTags(newTags) {
- var tags = init.leafTags;
- if (!tags) {
- init.leafTags = newTags;
- return;
- }
- copyProperties(newTags, tags);
- }
- function updateTypes(newTypes) {
- var types = init.types;
- var length = types.length;
- types.push.apply(types, newTypes);
- return length;
- }
- function updateHolder(holder, newHolder) {
- copyProperties(newHolder, holder);
- return holder;
- }
- var hunkHelpers = function() {
- var mkInstance = function(isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, applyIndex) {
- return function(container, getterName, name, funType) {
- return installInstanceTearOff(container, getterName, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, [name], funType, applyIndex);
- };
- },
- mkStatic = function(requiredParameterCount, optionalParameterDefaultValues, callNames, applyIndex) {
- return function(container, getterName, name, funType) {
- return installStaticTearOff(container, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, [name], funType, applyIndex);
- };
- };
- return {inherit: inherit, inheritMany: inheritMany, mixin: mixin, installStaticTearOff: installStaticTearOff, installInstanceTearOff: installInstanceTearOff, _instance_0u: mkInstance(0, 0, null, ["call$0"], 0), _instance_1u: mkInstance(0, 1, null, ["call$1"], 0), _instance_2u: mkInstance(0, 2, null, ["call$2"], 0), _instance_0i: mkInstance(1, 0, null, ["call$0"], 0), _instance_1i: mkInstance(1, 1, null, ["call$1"], 0), _instance_2i: mkInstance(1, 2, null, ["call$2"], 0), _static_0: mkStatic(0, null, ["call$0"], 0), _static_1: mkStatic(1, null, ["call$1"], 0), _static_2: mkStatic(2, null, ["call$2"], 0), makeConstList: makeConstList, lazy: lazy, updateHolder: updateHolder, convertToFastObject: convertToFastObject, setFunctionNamesIfNecessary: setFunctionNamesIfNecessary, updateTypes: updateTypes, setOrUpdateInterceptorsByTag: setOrUpdateInterceptorsByTag, setOrUpdateLeafTags: setOrUpdateLeafTags};
- }();
- function initializeDeferredHunk(hunk) {
- typesOffset = init.types.length;
- hunk(hunkHelpers, init, holders, $);
- }
- function getGlobalFromName(name) {
- for (var i = 0; i < holders.length; i++) {
- if (holders[i] == C)
- continue;
- if (holders[i][name])
- return holders[i][name];
- }
- }
- var C = {},
- H = {JS_CONST: function JS_CONST() {
- },
- CastIterable_CastIterable: function(source, $S, $T) {
- if (H.checkSubtype(source, "$isEfficientLengthIterable", [$S], "$asEfficientLengthIterable"))
- return new H._EfficientLengthCastIterable(source, [$S, $T]);
- return new H.CastIterable(source, [$S, $T]);
- },
- hexDigitValue: function(char) {
- var letter,
- digit = char ^ 48;
- if (digit <= 9)
- return digit;
- letter = char | 32;
- if (97 <= letter && letter <= 102)
- return letter - 87;
- return -1;
- },
- SubListIterable$: function(_iterable, _start, _endOrLength, $E) {
- P.RangeError_checkNotNegative(_start, "start");
- if (_endOrLength != null) {
- P.RangeError_checkNotNegative(_endOrLength, "end");
- if (_start > _endOrLength)
- H.throwExpression(P.RangeError$range(_start, 0, _endOrLength, "start", null));
- }
- return new H.SubListIterable(_iterable, _start, _endOrLength, [$E]);
- },
- MappedIterable_MappedIterable: function(iterable, $function, $S, $T) {
- if (!!J.getInterceptor$(iterable).$isEfficientLengthIterable)
- return new H.EfficientLengthMappedIterable(iterable, $function, [$S, $T]);
- return new H.MappedIterable(iterable, $function, [$S, $T]);
- },
- TakeIterable_TakeIterable: function(iterable, takeCount, $E) {
- P.RangeError_checkNotNegative(takeCount, "takeCount");
- if (!!J.getInterceptor$(iterable).$isEfficientLengthIterable)
- return new H.EfficientLengthTakeIterable(iterable, takeCount, [$E]);
- return new H.TakeIterable(iterable, takeCount, [$E]);
- },
- SkipIterable_SkipIterable: function(iterable, count, $E) {
- var _s5_ = "count";
- if (!!J.getInterceptor$(iterable).$isEfficientLengthIterable) {
- if (count == null)
- H.throwExpression(P.ArgumentError$notNull(_s5_));
- P.RangeError_checkNotNegative(count, _s5_);
- return new H.EfficientLengthSkipIterable(iterable, count, [$E]);
- }
- if (count == null)
- H.throwExpression(P.ArgumentError$notNull(_s5_));
- P.RangeError_checkNotNegative(count, _s5_);
- return new H.SkipIterable(iterable, count, [$E]);
- },
- FollowedByIterable_FollowedByIterable$firstEfficient: function(first, second, $E) {
- if (H.checkSubtype(second, "$isEfficientLengthIterable", [$E], "$asEfficientLengthIterable"))
- return new H.EfficientLengthFollowedByIterable(first, second, [$E]);
- return new H.FollowedByIterable(first, second, [$E]);
- },
- IterableElementError_noElement: function() {
- return new P.StateError("No element");
- },
- IterableElementError_tooMany: function() {
- return new P.StateError("Too many elements");
- },
- IterableElementError_tooFew: function() {
- return new P.StateError("Too few elements");
- },
- Sort_sort: function(a, compare) {
- H.Sort__doSort(a, 0, J.get$length$asx(a) - 1, compare);
- },
- Sort__doSort: function(a, left, right, compare) {
- if (right - left <= 32)
- H.Sort__insertionSort(a, left, right, compare);
- else
- H.Sort__dualPivotQuicksort(a, left, right, compare);
- },
- Sort__insertionSort: function(a, left, right, compare) {
- var i, t1, el, j, j0;
- for (i = left + 1, t1 = J.getInterceptor$asx(a); i <= right; ++i) {
- el = t1.$index(a, i);
- j = i;
- while (true) {
- if (!(j > left && compare.call$2(t1.$index(a, j - 1), el) > 0))
- break;
- j0 = j - 1;
- t1.$indexSet(a, j, t1.$index(a, j0));
- j = j0;
- }
- t1.$indexSet(a, j, el);
- }
- },
- Sort__dualPivotQuicksort: function(a, left, right, compare) {
- var t0, less, great, k, ak, comp, great0, less0, pivots_are_equal, t2,
- sixth = C.JSInt_methods._tdivFast$1(right - left + 1, 6),
- index1 = left + sixth,
- index5 = right - sixth,
- index3 = C.JSInt_methods._tdivFast$1(left + right, 2),
- index2 = index3 - sixth,
- index4 = index3 + sixth,
- t1 = J.getInterceptor$asx(a),
- el1 = t1.$index(a, index1),
- el2 = t1.$index(a, index2),
- el3 = t1.$index(a, index3),
- el4 = t1.$index(a, index4),
- el5 = t1.$index(a, index5);
- if (compare.call$2(el1, el2) > 0) {
- t0 = el2;
- el2 = el1;
- el1 = t0;
- }
- if (compare.call$2(el4, el5) > 0) {
- t0 = el5;
- el5 = el4;
- el4 = t0;
- }
- if (compare.call$2(el1, el3) > 0) {
- t0 = el3;
- el3 = el1;
- el1 = t0;
- }
- if (compare.call$2(el2, el3) > 0) {
- t0 = el3;
- el3 = el2;
- el2 = t0;
- }
- if (compare.call$2(el1, el4) > 0) {
- t0 = el4;
- el4 = el1;
- el1 = t0;
- }
- if (compare.call$2(el3, el4) > 0) {
- t0 = el4;
- el4 = el3;
- el3 = t0;
- }
- if (compare.call$2(el2, el5) > 0) {
- t0 = el5;
- el5 = el2;
- el2 = t0;
- }
- if (compare.call$2(el2, el3) > 0) {
- t0 = el3;
- el3 = el2;
- el2 = t0;
- }
- if (compare.call$2(el4, el5) > 0) {
- t0 = el5;
- el5 = el4;
- el4 = t0;
- }
- t1.$indexSet(a, index1, el1);
- t1.$indexSet(a, index3, el3);
- t1.$indexSet(a, index5, el5);
- t1.$indexSet(a, index2, t1.$index(a, left));
- t1.$indexSet(a, index4, t1.$index(a, right));
- less = left + 1;
- great = right - 1;
- if (J.$eq$(compare.call$2(el2, el4), 0)) {
- for (k = less; k <= great; ++k) {
- ak = t1.$index(a, k);
- comp = compare.call$2(ak, el2);
- if (comp === 0)
- continue;
- if (comp < 0) {
- if (k !== less) {
- t1.$indexSet(a, k, t1.$index(a, less));
- t1.$indexSet(a, less, ak);
- }
- ++less;
- } else
- for (; true;) {
- comp = compare.call$2(t1.$index(a, great), el2);
- if (comp > 0) {
- --great;
- continue;
- } else {
- great0 = great - 1;
- if (comp < 0) {
- t1.$indexSet(a, k, t1.$index(a, less));
- less0 = less + 1;
- t1.$indexSet(a, less, t1.$index(a, great));
- t1.$indexSet(a, great, ak);
- great = great0;
- less = less0;
- break;
- } else {
- t1.$indexSet(a, k, t1.$index(a, great));
- t1.$indexSet(a, great, ak);
- great = great0;
- break;
- }
- }
- }
- }
- pivots_are_equal = true;
- } else {
- for (k = less; k <= great; ++k) {
- ak = t1.$index(a, k);
- if (compare.call$2(ak, el2) < 0) {
- if (k !== less) {
- t1.$indexSet(a, k, t1.$index(a, less));
- t1.$indexSet(a, less, ak);
- }
- ++less;
- } else if (compare.call$2(ak, el4) > 0)
- for (; true;)
- if (compare.call$2(t1.$index(a, great), el4) > 0) {
- --great;
- if (great < k)
- break;
- continue;
- } else {
- great0 = great - 1;
- if (compare.call$2(t1.$index(a, great), el2) < 0) {
- t1.$indexSet(a, k, t1.$index(a, less));
- less0 = less + 1;
- t1.$indexSet(a, less, t1.$index(a, great));
- t1.$indexSet(a, great, ak);
- less = less0;
- } else {
- t1.$indexSet(a, k, t1.$index(a, great));
- t1.$indexSet(a, great, ak);
- }
- great = great0;
- break;
- }
- }
- pivots_are_equal = false;
- }
- t2 = less - 1;
- t1.$indexSet(a, left, t1.$index(a, t2));
- t1.$indexSet(a, t2, el2);
- t2 = great + 1;
- t1.$indexSet(a, right, t1.$index(a, t2));
- t1.$indexSet(a, t2, el4);
- H.Sort__doSort(a, left, less - 2, compare);
- H.Sort__doSort(a, great + 2, right, compare);
- if (pivots_are_equal)
- return;
- if (less < index1 && great > index5) {
- for (; J.$eq$(compare.call$2(t1.$index(a, less), el2), 0);)
- ++less;
- for (; J.$eq$(compare.call$2(t1.$index(a, great), el4), 0);)
- --great;
- for (k = less; k <= great; ++k) {
- ak = t1.$index(a, k);
- if (compare.call$2(ak, el2) === 0) {
- if (k !== less) {
- t1.$indexSet(a, k, t1.$index(a, less));
- t1.$indexSet(a, less, ak);
- }
- ++less;
- } else if (compare.call$2(ak, el4) === 0)
- for (; true;)
- if (compare.call$2(t1.$index(a, great), el4) === 0) {
- --great;
- if (great < k)
- break;
- continue;
- } else {
- great0 = great - 1;
- if (compare.call$2(t1.$index(a, great), el2) < 0) {
- t1.$indexSet(a, k, t1.$index(a, less));
- less0 = less + 1;
- t1.$indexSet(a, less, t1.$index(a, great));
- t1.$indexSet(a, great, ak);
- less = less0;
- } else {
- t1.$indexSet(a, k, t1.$index(a, great));
- t1.$indexSet(a, great, ak);
- }
- great = great0;
- break;
- }
- }
- H.Sort__doSort(a, less, great, compare);
- } else
- H.Sort__doSort(a, less, great, compare);
- },
- _CastIterableBase: function _CastIterableBase() {
- },
- CastIterator: function CastIterator(t0, t1) {
- this._source = t0;
- this.$ti = t1;
- },
- CastIterable: function CastIterable(t0, t1) {
- this._source = t0;
- this.$ti = t1;
- },
- _EfficientLengthCastIterable: function _EfficientLengthCastIterable(t0, t1) {
- this._source = t0;
- this.$ti = t1;
- },
- _CastListBase: function _CastListBase() {
- },
- _CastListBase_sort_closure: function _CastListBase_sort_closure(t0, t1) {
- this.$this = t0;
- this.compare = t1;
- },
- CastList: function CastList(t0, t1) {
- this._source = t0;
- this.$ti = t1;
- },
- CastSet: function CastSet(t0, t1, t2) {
- this._source = t0;
- this._emptySet = t1;
- this.$ti = t2;
- },
- CastQueue: function CastQueue(t0, t1) {
- this._source = t0;
- this.$ti = t1;
- },
- CodeUnits: function CodeUnits(t0) {
- this.__internal$_string = t0;
- },
- EfficientLengthIterable: function EfficientLengthIterable() {
- },
- ListIterable: function ListIterable() {
- },
- SubListIterable: function SubListIterable(t0, t1, t2, t3) {
- var _ = this;
- _.__internal$_iterable = t0;
- _.__internal$_start = t1;
- _._endOrLength = t2;
- _.$ti = t3;
- },
- ListIterator: function ListIterator(t0, t1) {
- var _ = this;
- _.__internal$_iterable = t0;
- _.__internal$_length = t1;
- _.__internal$_index = 0;
- _.__internal$_current = null;
- },
- MappedIterable: function MappedIterable(t0, t1, t2) {
- this.__internal$_iterable = t0;
- this._f = t1;
- this.$ti = t2;
- },
- EfficientLengthMappedIterable: function EfficientLengthMappedIterable(t0, t1, t2) {
- this.__internal$_iterable = t0;
- this._f = t1;
- this.$ti = t2;
- },
- MappedIterator: function MappedIterator(t0, t1) {
- this.__internal$_current = null;
- this._iterator = t0;
- this._f = t1;
- },
- MappedListIterable: function MappedListIterable(t0, t1, t2) {
- this._source = t0;
- this._f = t1;
- this.$ti = t2;
- },
- WhereIterable: function WhereIterable(t0, t1, t2) {
- this.__internal$_iterable = t0;
- this._f = t1;
- this.$ti = t2;
- },
- WhereIterator: function WhereIterator(t0, t1) {
- this._iterator = t0;
- this._f = t1;
- },
- ExpandIterable: function ExpandIterable(t0, t1, t2) {
- this.__internal$_iterable = t0;
- this._f = t1;
- this.$ti = t2;
- },
- ExpandIterator: function ExpandIterator(t0, t1, t2) {
- var _ = this;
- _._iterator = t0;
- _._f = t1;
- _._currentExpansion = t2;
- _.__internal$_current = null;
- },
- TakeIterable: function TakeIterable(t0, t1, t2) {
- this.__internal$_iterable = t0;
- this._takeCount = t1;
- this.$ti = t2;
- },
- EfficientLengthTakeIterable: function EfficientLengthTakeIterable(t0, t1, t2) {
- this.__internal$_iterable = t0;
- this._takeCount = t1;
- this.$ti = t2;
- },
- TakeIterator: function TakeIterator(t0, t1) {
- this._iterator = t0;
- this._remaining = t1;
- },
- SkipIterable: function SkipIterable(t0, t1, t2) {
- this.__internal$_iterable = t0;
- this._skipCount = t1;
- this.$ti = t2;
- },
- EfficientLengthSkipIterable: function EfficientLengthSkipIterable(t0, t1, t2) {
- this.__internal$_iterable = t0;
- this._skipCount = t1;
- this.$ti = t2;
- },
- SkipIterator: function SkipIterator(t0, t1) {
- this._iterator = t0;
- this._skipCount = t1;
- },
- SkipWhileIterable: function SkipWhileIterable(t0, t1, t2) {
- this.__internal$_iterable = t0;
- this._f = t1;
- this.$ti = t2;
- },
- SkipWhileIterator: function SkipWhileIterator(t0, t1) {
- this._iterator = t0;
- this._f = t1;
- this._hasSkipped = false;
- },
- EmptyIterable: function EmptyIterable(t0) {
- this.$ti = t0;
- },
- EmptyIterator: function EmptyIterator() {
- },
- FollowedByIterable: function FollowedByIterable(t0, t1, t2) {
- this.__internal$_first = t0;
- this._second = t1;
- this.$ti = t2;
- },
- EfficientLengthFollowedByIterable: function EfficientLengthFollowedByIterable(t0, t1, t2) {
- this.__internal$_first = t0;
- this._second = t1;
- this.$ti = t2;
- },
- FollowedByIterator: function FollowedByIterator(t0, t1) {
- this._currentIterator = t0;
- this._nextIterable = t1;
- },
- WhereTypeIterable: function WhereTypeIterable(t0, t1) {
- this._source = t0;
- this.$ti = t1;
- },
- WhereTypeIterator: function WhereTypeIterator(t0, t1) {
- this._source = t0;
- this.$ti = t1;
- },
- FixedLengthListMixin: function FixedLengthListMixin() {
- },
- UnmodifiableListMixin: function UnmodifiableListMixin() {
- },
- UnmodifiableListBase: function UnmodifiableListBase() {
- },
- ReversedListIterable: function ReversedListIterable(t0, t1) {
- this._source = t0;
- this.$ti = t1;
- },
- Symbol: function Symbol(t0) {
- this.__internal$_name = t0;
- },
- __CastListBase__CastIterableBase_ListMixin: function __CastListBase__CastIterableBase_ListMixin() {
- },
- ConstantMap_ConstantMap$from: function(other, $K, $V) {
- var allStrings, k, object, containsProto, protoValue, $length, v,
- keys = P.List_List$from(other.get$keys(), true, $K),
- t1 = keys.length,
- _i = 0;
- while (true) {
- if (!(_i < t1)) {
- allStrings = true;
- break;
- }
- k = keys[_i];
- if (typeof k !== "string") {
- allStrings = false;
- break;
- }
- ++_i;
- }
- if (allStrings) {
- object = {};
- for (containsProto = false, protoValue = null, $length = 0, _i = 0; _i < keys.length; keys.length === t1 || (0, H.throwConcurrentModificationError)(keys), ++_i) {
- k = keys[_i];
- v = other.$index(0, k);
- if (!J.$eq$(k, "__proto__")) {
- if (!object.hasOwnProperty(k))
- ++$length;
- object[k] = v;
- } else {
- protoValue = v;
- containsProto = true;
- }
- }
- if (containsProto)
- return new H.ConstantProtoMap(protoValue, $length + 1, object, keys, [$K, $V]);
- return new H.ConstantStringMap($length, object, keys, [$K, $V]);
- }
- return new H.ConstantMapView(P.LinkedHashMap_LinkedHashMap$from(other, $K, $V), [$K, $V]);
- },
- ConstantMap__throwUnmodifiable: function() {
- throw H.wrapException(P.UnsupportedError$("Cannot modify unmodifiable Map"));
- },
- instantiate1: function(f, T1) {
- var t1 = new H.Instantiation1(f, [T1]);
- t1.Instantiation$1(f);
- return t1;
- },
- unminifyOrTag: function(rawClassName) {
- var preserved = H.unmangleGlobalNameIfPreservedAnyways(rawClassName);
- if (typeof preserved === "string")
- return preserved;
- return rawClassName;
- },
- getType: function(index) {
- return init.types[index];
- },
- isJsIndexable: function(object, record) {
- var result;
- if (record != null) {
- result = record.x;
- if (result != null)
- return result;
- }
- return !!J.getInterceptor$(object).$isJavaScriptIndexingBehavior;
- },
- S: function(value) {
- var res;
- if (typeof value === "string")
- return value;
- if (typeof value === "number") {
- if (value !== 0)
- return "" + value;
- } else if (true === value)
- return "true";
- else if (false === value)
- return "false";
- else if (value == null)
- return "null";
- res = J.toString$0$(value);
- if (typeof res !== "string")
- throw H.wrapException(H.argumentErrorValue(value));
- return res;
- },
- Primitives_objectHashCode: function(object) {
- var hash = object.$identityHash;
- if (hash == null) {
- hash = Math.random() * 0x3fffffff | 0;
- object.$identityHash = hash;
- }
- return hash;
- },
- Primitives_parseInt: function(source, radix) {
- var match, decimalMatch, maxCharCode, digitsPart, t1, i;
- if (typeof source !== "string")
- H.throwExpression(H.argumentErrorValue(source));
- match = /^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i.exec(source);
- if (match == null)
- return;
- decimalMatch = match[3];
- if (radix == null) {
- if (decimalMatch != null)
- return parseInt(source, 10);
- if (match[2] != null)
- return parseInt(source, 16);
- return;
- }
- if (radix < 2 || radix > 36)
- throw H.wrapException(P.RangeError$range(radix, 2, 36, "radix", null));
- if (radix === 10 && decimalMatch != null)
- return parseInt(source, 10);
- if (radix < 10 || decimalMatch == null) {
- maxCharCode = radix <= 10 ? 47 + radix : 86 + radix;
- digitsPart = match[1];
- for (t1 = digitsPart.length, i = 0; i < t1; ++i)
- if ((C.JSString_methods._codeUnitAt$1(digitsPart, i) | 32) > maxCharCode)
- return;
- }
- return parseInt(source, radix);
- },
- Primitives_parseDouble: function(source) {
- var result, trimmed;
- if (!/^\s*[+-]?(?:Infinity|NaN|(?:\.\d+|\d+(?:\.\d*)?)(?:[eE][+-]?\d+)?)\s*$/.test(source))
- return;
- result = parseFloat(source);
- if (isNaN(result)) {
- trimmed = C.JSString_methods.trim$0(source);
- if (trimmed === "NaN" || trimmed === "+NaN" || trimmed === "-NaN")
- return result;
- return;
- }
- return result;
- },
- Primitives_objectTypeName: function(object) {
- return H.Primitives__objectClassName(object) + H._joinArguments(H.getRuntimeTypeInfo(object), 0, null);
- },
- Primitives__objectClassName: function(object) {
- var interceptorConstructorName, $name, t1, dispatchName, objectConstructor, match, decompiledName,
- interceptor = J.getInterceptor$(object),
- interceptorConstructor = interceptor.constructor;
- if (typeof interceptorConstructor == "function") {
- interceptorConstructorName = interceptorConstructor.name;
- $name = typeof interceptorConstructorName === "string" ? interceptorConstructorName : null;
- } else
- $name = null;
- t1 = $name == null;
- if (t1 || interceptor === C.Interceptor_methods || !!interceptor.$isUnknownJavaScriptObject) {
- dispatchName = C.C_JS_CONST(object);
- if (t1)
- $name = dispatchName;
- if (dispatchName === "Object") {
- objectConstructor = object.constructor;
- if (typeof objectConstructor == "function") {
- match = String(objectConstructor).match(/^\s*function\s*([\w$]*)\s*\(/);
- decompiledName = match == null ? null : match[1];
- if (typeof decompiledName === "string" && /^\w+$/.test(decompiledName))
- $name = decompiledName;
- }
- }
- return $name;
- }
- $name = $name;
- return H.unminifyOrTag($name.length > 1 && C.JSString_methods._codeUnitAt$1($name, 0) === 36 ? C.JSString_methods.substring$1($name, 1) : $name);
- },
- Primitives_currentUri: function() {
- if (!!self.location)
- return self.location.href;
- return;
- },
- Primitives__fromCharCodeApply: function(array) {
- var result, i, i0, chunkEnd,
- end = J.get$length$asx(array);
- if (end <= 500)
- return String.fromCharCode.apply(null, array);
- for (result = "", i = 0; i < end; i = i0) {
- i0 = i + 500;
- chunkEnd = i0 < end ? i0 : end;
- result += String.fromCharCode.apply(null, array.slice(i, chunkEnd));
- }
- return result;
- },
- Primitives_stringFromCodePoints: function(codePoints) {
- var t1, i,
- a = H.setRuntimeTypeInfo([], [P.int]);
- for (t1 = J.get$iterator$ax(codePoints); t1.moveNext$0();) {
- i = t1.get$current(t1);
- if (typeof i !== "number" || Math.floor(i) !== i)
- throw H.wrapException(H.argumentErrorValue(i));
- if (i <= 65535)
- a.push(i);
- else if (i <= 1114111) {
- a.push(55296 + (C.JSInt_methods._shrOtherPositive$1(i - 65536, 10) & 1023));
- a.push(56320 + (i & 1023));
- } else
- throw H.wrapException(H.argumentErrorValue(i));
- }
- return H.Primitives__fromCharCodeApply(a);
- },
- Primitives_stringFromCharCodes: function(charCodes) {
- var t1, i;
- for (t1 = J.get$iterator$ax(charCodes); t1.moveNext$0();) {
- i = t1.get$current(t1);
- if (typeof i !== "number" || Math.floor(i) !== i)
- throw H.wrapException(H.argumentErrorValue(i));
- if (i < 0)
- throw H.wrapException(H.argumentErrorValue(i));
- if (i > 65535)
- return H.Primitives_stringFromCodePoints(charCodes);
- }
- return H.Primitives__fromCharCodeApply(charCodes);
- },
- Primitives_stringFromNativeUint8List: function(charCodes, start, end) {
- var i, result, i0, chunkEnd;
- if (end <= 500 && start === 0 && end === charCodes.length)
- return String.fromCharCode.apply(null, charCodes);
- for (i = start, result = ""; i < end; i = i0) {
- i0 = i + 500;
- chunkEnd = i0 < end ? i0 : end;
- result += String.fromCharCode.apply(null, charCodes.subarray(i, chunkEnd));
- }
- return result;
- },
- Primitives_stringFromCharCode: function(charCode) {
- var bits;
- if (0 <= charCode) {
- if (charCode <= 65535)
- return String.fromCharCode(charCode);
- if (charCode <= 1114111) {
- bits = charCode - 65536;
- return String.fromCharCode((55296 | C.JSInt_methods._shrOtherPositive$1(bits, 10)) >>> 0, 56320 | bits & 1023);
- }
- }
- throw H.wrapException(P.RangeError$range(charCode, 0, 1114111, null, null));
- },
- Primitives_lazyAsJsDate: function(receiver) {
- if (receiver.date === void 0)
- receiver.date = new Date(receiver._value);
- return receiver.date;
- },
- Primitives_getYear: function(receiver) {
- var t1 = H.Primitives_lazyAsJsDate(receiver).getFullYear() + 0;
- return t1;
- },
- Primitives_getMonth: function(receiver) {
- var t1 = H.Primitives_lazyAsJsDate(receiver).getMonth() + 1;
- return t1;
- },
- Primitives_getDay: function(receiver) {
- var t1 = H.Primitives_lazyAsJsDate(receiver).getDate() + 0;
- return t1;
- },
- Primitives_getHours: function(receiver) {
- var t1 = H.Primitives_lazyAsJsDate(receiver).getHours() + 0;
- return t1;
- },
- Primitives_getMinutes: function(receiver) {
- var t1 = H.Primitives_lazyAsJsDate(receiver).getMinutes() + 0;
- return t1;
- },
- Primitives_getSeconds: function(receiver) {
- var t1 = H.Primitives_lazyAsJsDate(receiver).getSeconds() + 0;
- return t1;
- },
- Primitives_getMilliseconds: function(receiver) {
- var t1 = H.Primitives_lazyAsJsDate(receiver).getMilliseconds() + 0;
- return t1;
- },
- Primitives_functionNoSuchMethod: function($function, positionalArguments, namedArguments) {
- var $arguments, namedArgumentList, t1 = {};
- t1.argumentCount = 0;
- $arguments = [];
- namedArgumentList = [];
- t1.argumentCount = positionalArguments.length;
- C.JSArray_methods.addAll$1($arguments, positionalArguments);
- t1.names = "";
- if (namedArguments != null && !namedArguments.get$isEmpty(namedArguments))
- namedArguments.forEach$1(0, new H.Primitives_functionNoSuchMethod_closure(t1, namedArgumentList, $arguments));
- "" + t1.argumentCount;
- return J.noSuchMethod$1$($function, new H.JSInvocationMirror(C.Symbol_call, 0, $arguments, namedArgumentList, 0));
- },
- Primitives_applyFunction: function($function, positionalArguments, namedArguments) {
- var t1, $arguments, argumentCount, jsStub;
- if (positionalArguments instanceof Array)
- t1 = namedArguments == null || namedArguments.get$isEmpty(namedArguments);
- else
- t1 = false;
- if (t1) {
- $arguments = positionalArguments;
- argumentCount = $arguments.length;
- if (argumentCount === 0) {
- if (!!$function.call$0)
- return $function.call$0();
- } else if (argumentCount === 1) {
- if (!!$function.call$1)
- return $function.call$1($arguments[0]);
- } else if (argumentCount === 2) {
- if (!!$function.call$2)
- return $function.call$2($arguments[0], $arguments[1]);
- } else if (argumentCount === 3) {
- if (!!$function.call$3)
- return $function.call$3($arguments[0], $arguments[1], $arguments[2]);
- } else if (argumentCount === 4) {
- if (!!$function.call$4)
- return $function.call$4($arguments[0], $arguments[1], $arguments[2], $arguments[3]);
- } else if (argumentCount === 5)
- if (!!$function.call$5)
- return $function.call$5($arguments[0], $arguments[1], $arguments[2], $arguments[3], $arguments[4]);
- jsStub = $function["call" + "$" + argumentCount];
- if (jsStub != null)
- return jsStub.apply($function, $arguments);
- }
- return H.Primitives__genericApplyFunction2($function, positionalArguments, namedArguments);
- },
- Primitives__genericApplyFunction2: function($function, positionalArguments, namedArguments) {
- var $arguments, argumentCount, requiredParameterCount, defaultValuesClosure, t1, defaultValues, interceptor, jsFunction, keys, _i, used, t2;
- if (positionalArguments != null)
- $arguments = positionalArguments instanceof Array ? positionalArguments : P.List_List$from(positionalArguments, true, null);
- else
- $arguments = [];
- argumentCount = $arguments.length;
- requiredParameterCount = $function.$requiredArgCount;
- if (argumentCount < requiredParameterCount)
- return H.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
- defaultValuesClosure = $function.$defaultValues;
- t1 = defaultValuesClosure == null;
- defaultValues = !t1 ? defaultValuesClosure() : null;
- interceptor = J.getInterceptor$($function);
- jsFunction = interceptor["call*"];
- if (typeof jsFunction === "string")
- jsFunction = interceptor[jsFunction];
- if (t1) {
- if (namedArguments != null && namedArguments.get$isNotEmpty(namedArguments))
- return H.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
- if (argumentCount === requiredParameterCount)
- return jsFunction.apply($function, $arguments);
- return H.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
- }
- if (defaultValues instanceof Array) {
- if (namedArguments != null && namedArguments.get$isNotEmpty(namedArguments))
- return H.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
- if (argumentCount > requiredParameterCount + defaultValues.length)
- return H.Primitives_functionNoSuchMethod($function, $arguments, null);
- C.JSArray_methods.addAll$1($arguments, defaultValues.slice(argumentCount - requiredParameterCount));
- return jsFunction.apply($function, $arguments);
- } else {
- if (argumentCount > requiredParameterCount)
- return H.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
- keys = Object.keys(defaultValues);
- if (namedArguments == null)
- for (t1 = keys.length, _i = 0; _i < keys.length; keys.length === t1 || (0, H.throwConcurrentModificationError)(keys), ++_i)
- C.JSArray_methods.add$1($arguments, defaultValues[keys[_i]]);
- else {
- for (t1 = keys.length, used = 0, _i = 0; _i < keys.length; keys.length === t1 || (0, H.throwConcurrentModificationError)(keys), ++_i) {
- t2 = keys[_i];
- if (namedArguments.containsKey$1(t2)) {
- ++used;
- C.JSArray_methods.add$1($arguments, namedArguments.$index(0, t2));
- } else
- C.JSArray_methods.add$1($arguments, defaultValues[t2]);
- }
- if (used !== namedArguments.get$length(namedArguments))
- return H.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
- }
- return jsFunction.apply($function, $arguments);
- }
- },
- diagnoseIndexError: function(indexable, index) {
- var $length, _s5_ = "index";
- if (typeof index !== "number" || Math.floor(index) !== index)
- return new P.ArgumentError(true, index, _s5_, null);
- $length = J.get$length$asx(indexable);
- if (index < 0 || index >= $length)
- return P.IndexError$(index, indexable, _s5_, null, $length);
- return P.RangeError$value(index, _s5_, null);
- },
- diagnoseRangeError: function(start, end, $length) {
- var _s13_ = "Invalid value";
- if (start < 0 || start > $length)
- return new P.RangeError(0, $length, true, start, "start", _s13_);
- if (end != null)
- if (end < start || end > $length)
- return new P.RangeError(start, $length, true, end, "end", _s13_);
- return new P.ArgumentError(true, end, "end", null);
- },
- argumentErrorValue: function(object) {
- return new P.ArgumentError(true, object, null, null);
- },
- checkNum: function(value) {
- if (typeof value !== "number")
- throw H.wrapException(H.argumentErrorValue(value));
- return value;
- },
- wrapException: function(ex) {
- var wrapper;
- if (ex == null)
- ex = new P.NullThrownError();
- wrapper = new Error();
- wrapper.dartException = ex;
- if ("defineProperty" in Object) {
- Object.defineProperty(wrapper, "message", {get: H.toStringWrapper});
- wrapper.name = "";
- } else
- wrapper.toString = H.toStringWrapper;
- return wrapper;
- },
- toStringWrapper: function() {
- return J.toString$0$(this.dartException);
- },
- throwExpression: function(ex) {
- throw H.wrapException(ex);
- },
- throwConcurrentModificationError: function(collection) {
- throw H.wrapException(P.ConcurrentModificationError$(collection));
- },
- TypeErrorDecoder_extractPattern: function(message) {
- var match, $arguments, argumentsExpr, expr, method, receiver;
- message = H.quoteStringForRegExp(message.replace(String({}), '$receiver$'));
- match = message.match(/\\\$[a-zA-Z]+\\\$/g);
- if (match == null)
- match = H.setRuntimeTypeInfo([], [P.String]);
- $arguments = match.indexOf("\\$arguments\\$");
- argumentsExpr = match.indexOf("\\$argumentsExpr\\$");
- expr = match.indexOf("\\$expr\\$");
- method = match.indexOf("\\$method\\$");
- receiver = match.indexOf("\\$receiver\\$");
- return new H.TypeErrorDecoder(message.replace(new RegExp('\\\\\\$arguments\\\\\\$', 'g'), '((?:x|[^x])*)').replace(new RegExp('\\\\\\$argumentsExpr\\\\\\$', 'g'), '((?:x|[^x])*)').replace(new RegExp('\\\\\\$expr\\\\\\$', 'g'), '((?:x|[^x])*)').replace(new RegExp('\\\\\\$method\\\\\\$', 'g'), '((?:x|[^x])*)').replace(new RegExp('\\\\\\$receiver\\\\\\$', 'g'), '((?:x|[^x])*)'), $arguments, argumentsExpr, expr, method, receiver);
- },
- TypeErrorDecoder_provokeCallErrorOn: function(expression) {
- return function($expr$) {
- var $argumentsExpr$ = '$arguments$';
- try {
- $expr$.$method$($argumentsExpr$);
- } catch (e) {
- return e.message;
- }
- }(expression);
- },
- TypeErrorDecoder_provokePropertyErrorOn: function(expression) {
- return function($expr$) {
- try {
- $expr$.$method$;
- } catch (e) {
- return e.message;
- }
- }(expression);
- },
- NullError$: function(_message, match) {
- return new H.NullError(_message, match == null ? null : match.method);
- },
- JsNoSuchMethodError$: function(_message, match) {
- var t1 = match == null,
- t2 = t1 ? null : match.method;
- return new H.JsNoSuchMethodError(_message, t2, t1 ? null : match.receiver);
- },
- unwrapException: function(ex) {
- var message, number, ieErrorCode, nsme, notClosure, nullCall, nullLiteralCall, undefCall, undefLiteralCall, nullProperty, undefProperty, undefLiteralProperty, match, t2, _null = null,
- t1 = new H.unwrapException_saveStackTrace(ex);
- if (ex == null)
- return;
- if (ex instanceof H.ExceptionAndStackTrace)
- return t1.call$1(ex.dartException);
- if (typeof ex !== "object")
- return ex;
- if ("dartException" in ex)
- return t1.call$1(ex.dartException);
- else if (!("message" in ex))
- return ex;
- message = ex.message;
- if ("number" in ex && typeof ex.number == "number") {
- number = ex.number;
- ieErrorCode = number & 65535;
- if ((C.JSInt_methods._shrOtherPositive$1(number, 16) & 8191) === 10)
- switch (ieErrorCode) {
- case 438:
- return t1.call$1(H.JsNoSuchMethodError$(H.S(message) + " (Error " + ieErrorCode + ")", _null));
- case 445:
- case 5007:
- return t1.call$1(H.NullError$(H.S(message) + " (Error " + ieErrorCode + ")", _null));
- }
- }
- if (ex instanceof TypeError) {
- nsme = $.$get$TypeErrorDecoder_noSuchMethodPattern();
- notClosure = $.$get$TypeErrorDecoder_notClosurePattern();
- nullCall = $.$get$TypeErrorDecoder_nullCallPattern();
- nullLiteralCall = $.$get$TypeErrorDecoder_nullLiteralCallPattern();
- undefCall = $.$get$TypeErrorDecoder_undefinedCallPattern();
- undefLiteralCall = $.$get$TypeErrorDecoder_undefinedLiteralCallPattern();
- nullProperty = $.$get$TypeErrorDecoder_nullPropertyPattern();
- $.$get$TypeErrorDecoder_nullLiteralPropertyPattern();
- undefProperty = $.$get$TypeErrorDecoder_undefinedPropertyPattern();
- undefLiteralProperty = $.$get$TypeErrorDecoder_undefinedLiteralPropertyPattern();
- match = nsme.matchTypeError$1(message);
- if (match != null)
- return t1.call$1(H.JsNoSuchMethodError$(message, match));
- else {
- match = notClosure.matchTypeError$1(message);
- if (match != null) {
- match.method = "call";
- return t1.call$1(H.JsNoSuchMethodError$(message, match));
- } else {
- match = nullCall.matchTypeError$1(message);
- if (match == null) {
- match = nullLiteralCall.matchTypeError$1(message);
- if (match == null) {
- match = undefCall.matchTypeError$1(message);
- if (match == null) {
- match = undefLiteralCall.matchTypeError$1(message);
- if (match == null) {
- match = nullProperty.matchTypeError$1(message);
- if (match == null) {
- match = nullLiteralCall.matchTypeError$1(message);
- if (match == null) {
- match = undefProperty.matchTypeError$1(message);
- if (match == null) {
- match = undefLiteralProperty.matchTypeError$1(message);
- t2 = match != null;
- } else
- t2 = true;
- } else
- t2 = true;
- } else
- t2 = true;
- } else
- t2 = true;
- } else
- t2 = true;
- } else
- t2 = true;
- } else
- t2 = true;
- if (t2)
- return t1.call$1(H.NullError$(message, match));
- }
- }
- return t1.call$1(new H.UnknownJsTypeError(typeof message === "string" ? message : ""));
- }
- if (ex instanceof RangeError) {
- if (typeof message === "string" && message.indexOf("call stack") !== -1)
- return new P.StackOverflowError();
- message = function(ex) {
- try {
- return String(ex);
- } catch (e) {
- }
- return null;
- }(ex);
- return t1.call$1(new P.ArgumentError(false, _null, _null, typeof message === "string" ? message.replace(/^RangeError:\s*/, "") : message));
- }
- if (typeof InternalError == "function" && ex instanceof InternalError)
- if (typeof message === "string" && message === "too much recursion")
- return new P.StackOverflowError();
- return ex;
- },
- getTraceFromException: function(exception) {
- var trace;
- if (exception instanceof H.ExceptionAndStackTrace)
- return exception.stackTrace;
- if (exception == null)
- return new H._StackTrace(exception);
- trace = exception.$cachedTrace;
- if (trace != null)
- return trace;
- return exception.$cachedTrace = new H._StackTrace(exception);
- },
- objectHashCode: function(object) {
- if (object == null || typeof object != 'object')
- return J.get$hashCode$(object);
- else
- return H.Primitives_objectHashCode(object);
- },
- fillLiteralMap: function(keyValuePairs, result) {
- var index, index0, index1,
- $length = keyValuePairs.length;
- for (index = 0; index < $length; index = index1) {
- index0 = index + 1;
- index1 = index0 + 1;
- result.$indexSet(0, keyValuePairs[index], keyValuePairs[index0]);
- }
- return result;
- },
- fillLiteralSet: function(values, result) {
- var index,
- $length = values.length;
- for (index = 0; index < $length; ++index)
- result.add$1(0, values[index]);
- return result;
- },
- invokeClosure: function(closure, numberOfArguments, arg1, arg2, arg3, arg4) {
- switch (numberOfArguments) {
- case 0:
- return closure.call$0();
- case 1:
- return closure.call$1(arg1);
- case 2:
- return closure.call$2(arg1, arg2);
- case 3:
- return closure.call$3(arg1, arg2, arg3);
- case 4:
- return closure.call$4(arg1, arg2, arg3, arg4);
- }
- throw H.wrapException(new P._Exception("Unsupported number of arguments for wrapped closure"));
- },
- convertDartClosureToJS: function(closure, arity) {
- var $function;
- if (closure == null)
- return;
- $function = closure.$identity;
- if (!!$function)
- return $function;
- $function = function(closure, arity, invoke) {
- return function(a1, a2, a3, a4) {
- return invoke(closure, arity, a1, a2, a3, a4);
- };
- }(closure, arity, H.invokeClosure);
- closure.$identity = $function;
- return $function;
- },
- Closure_fromTearOff: function(receiver, functions, applyTrampolineIndex, reflectionInfo, isStatic, isIntercepted, propertyName) {
- var $constructor, t1, trampoline, signatureFunction, applyTrampoline, i, stub, stubCallName, _null = null,
- $function = functions[0],
- callName = $function.$callName,
- $prototype = isStatic ? Object.create(new H.StaticClosure().constructor.prototype) : Object.create(new H.BoundClosure(_null, _null, _null, _null).constructor.prototype);
- $prototype.$initialize = $prototype.constructor;
- if (isStatic)
- $constructor = function static_tear_off() {
- this.$initialize();
- };
- else {
- t1 = $.Closure_functionCounter;
- $.Closure_functionCounter = t1 + 1;
- t1 = new Function("a,b,c,d" + t1, "this.$initialize(a,b,c,d" + t1 + ")");
- $constructor = t1;
- }
- $prototype.constructor = $constructor;
- $constructor.prototype = $prototype;
- if (!isStatic) {
- trampoline = H.Closure_forwardCallTo(receiver, $function, isIntercepted);
- trampoline.$reflectionInfo = reflectionInfo;
- } else {
- $prototype.$static_name = propertyName;
- trampoline = $function;
- }
- signatureFunction = H.Closure__computeSignatureFunctionLegacy(reflectionInfo, isStatic, isIntercepted);
- $prototype.$signature = signatureFunction;
- $prototype[callName] = trampoline;
- for (applyTrampoline = trampoline, i = 1; i < functions.length; ++i) {
- stub = functions[i];
- stubCallName = stub.$callName;
- if (stubCallName != null) {
- stub = isStatic ? stub : H.Closure_forwardCallTo(receiver, stub, isIntercepted);
- $prototype[stubCallName] = stub;
- }
- if (i === applyTrampolineIndex) {
- stub.$reflectionInfo = reflectionInfo;
- applyTrampoline = stub;
- }
- }
- $prototype["call*"] = applyTrampoline;
- $prototype.$requiredArgCount = $function.$requiredArgCount;
- $prototype.$defaultValues = $function.$defaultValues;
- return $constructor;
- },
- Closure__computeSignatureFunctionLegacy: function(functionType, isStatic, isIntercepted) {
- var getReceiver;
- if (typeof functionType == "number")
- return function(getType, t) {
- return function() {
- return getType(t);
- };
- }(H.getType, functionType);
- if (typeof functionType == "function")
- if (isStatic)
- return functionType;
- else {
- getReceiver = isIntercepted ? H.BoundClosure_receiverOf : H.BoundClosure_selfOf;
- return function(f, r) {
- return function() {
- return f.apply({$receiver: r(this)}, arguments);
- };
- }(functionType, getReceiver);
- }
- throw H.wrapException("Error in functionType of tearoff");
- },
- Closure_cspForwardCall: function(arity, isSuperCall, stubName, $function) {
- var getSelf = H.BoundClosure_selfOf;
- switch (isSuperCall ? -1 : arity) {
- case 0:
- return function(n, S) {
- return function() {
- return S(this)[n]();
- };
- }(stubName, getSelf);
- case 1:
- return function(n, S) {
- return function(a) {
- return S(this)[n](a);
- };
- }(stubName, getSelf);
- case 2:
- return function(n, S) {
- return function(a, b) {
- return S(this)[n](a, b);
- };
- }(stubName, getSelf);
- case 3:
- return function(n, S) {
- return function(a, b, c) {
- return S(this)[n](a, b, c);
- };
- }(stubName, getSelf);
- case 4:
- return function(n, S) {
- return function(a, b, c, d) {
- return S(this)[n](a, b, c, d);
- };
- }(stubName, getSelf);
- case 5:
- return function(n, S) {
- return function(a, b, c, d, e) {
- return S(this)[n](a, b, c, d, e);
- };
- }(stubName, getSelf);
- default:
- return function(f, s) {
- return function() {
- return f.apply(s(this), arguments);
- };
- }($function, getSelf);
- }
- },
- Closure_forwardCallTo: function(receiver, $function, isIntercepted) {
- var stubName, arity, lookedUpFunction, t1, t2, selfName, $arguments;
- if (isIntercepted)
- return H.Closure_forwardInterceptedCallTo(receiver, $function);
- stubName = $function.$stubName;
- arity = $function.length;
- lookedUpFunction = receiver[stubName];
- t1 = $function == null ? lookedUpFunction == null : $function === lookedUpFunction;
- t2 = !t1 || arity >= 27;
- if (t2)
- return H.Closure_cspForwardCall(arity, !t1, stubName, $function);
- if (arity === 0) {
- t1 = $.Closure_functionCounter;
- $.Closure_functionCounter = t1 + 1;
- selfName = "self" + H.S(t1);
- t1 = "return function(){var " + selfName + " = this.";
- t2 = $.BoundClosure_selfFieldNameCache;
- return new Function(t1 + H.S(t2 == null ? $.BoundClosure_selfFieldNameCache = H.BoundClosure_computeFieldNamed("self") : t2) + ";return " + selfName + "." + H.S(stubName) + "();}")();
- }
- $arguments = "abcdefghijklmnopqrstuvwxyz".split("").splice(0, arity).join(",");
- t1 = $.Closure_functionCounter;
- $.Closure_functionCounter = t1 + 1;
- $arguments += H.S(t1);
- t1 = "return function(" + $arguments + "){return this.";
- t2 = $.BoundClosure_selfFieldNameCache;
- return new Function(t1 + H.S(t2 == null ? $.BoundClosure_selfFieldNameCache = H.BoundClosure_computeFieldNamed("self") : t2) + "." + H.S(stubName) + "(" + $arguments + ");}")();
- },
- Closure_cspForwardInterceptedCall: function(arity, isSuperCall, $name, $function) {
- var getSelf = H.BoundClosure_selfOf,
- getReceiver = H.BoundClosure_receiverOf;
- switch (isSuperCall ? -1 : arity) {
- case 0:
- throw H.wrapException(H.RuntimeError$("Intercepted function with no arguments."));
- case 1:
- return function(n, s, r) {
- return function() {
- return s(this)[n](r(this));
- };
- }($name, getSelf, getReceiver);
- case 2:
- return function(n, s, r) {
- return function(a) {
- return s(this)[n](r(this), a);
- };
- }($name, getSelf, getReceiver);
- case 3:
- return function(n, s, r) {
- return function(a, b) {
- return s(this)[n](r(this), a, b);
- };
- }($name, getSelf, getReceiver);
- case 4:
- return function(n, s, r) {
- return function(a, b, c) {
- return s(this)[n](r(this), a, b, c);
- };
- }($name, getSelf, getReceiver);
- case 5:
- return function(n, s, r) {
- return function(a, b, c, d) {
- return s(this)[n](r(this), a, b, c, d);
- };
- }($name, getSelf, getReceiver);
- case 6:
- return function(n, s, r) {
- return function(a, b, c, d, e) {
- return s(this)[n](r(this), a, b, c, d, e);
- };
- }($name, getSelf, getReceiver);
- default:
- return function(f, s, r, a) {
- return function() {
- a = [r(this)];
- Array.prototype.push.apply(a, arguments);
- return f.apply(s(this), a);
- };
- }($function, getSelf, getReceiver);
- }
- },
- Closure_forwardInterceptedCallTo: function(receiver, $function) {
- var t2, stubName, arity, lookedUpFunction, t3, t4, $arguments,
- t1 = $.BoundClosure_selfFieldNameCache;
- if (t1 == null)
- t1 = $.BoundClosure_selfFieldNameCache = H.BoundClosure_computeFieldNamed("self");
- t2 = $.BoundClosure_receiverFieldNameCache;
- if (t2 == null)
- t2 = $.BoundClosure_receiverFieldNameCache = H.BoundClosure_computeFieldNamed("receiver");
- stubName = $function.$stubName;
- arity = $function.length;
- lookedUpFunction = receiver[stubName];
- t3 = $function == null ? lookedUpFunction == null : $function === lookedUpFunction;
- t4 = !t3 || arity >= 28;
- if (t4)
- return H.Closure_cspForwardInterceptedCall(arity, !t3, stubName, $function);
- if (arity === 1) {
- t1 = "return function(){return this." + H.S(t1) + "." + H.S(stubName) + "(this." + H.S(t2) + ");";
- t2 = $.Closure_functionCounter;
- $.Closure_functionCounter = t2 + 1;
- return new Function(t1 + H.S(t2) + "}")();
- }
- $arguments = "abcdefghijklmnopqrstuvwxyz".split("").splice(0, arity - 1).join(",");
- t1 = "return function(" + $arguments + "){return this." + H.S(t1) + "." + H.S(stubName) + "(this." + H.S(t2) + ", " + $arguments + ");";
- t2 = $.Closure_functionCounter;
- $.Closure_functionCounter = t2 + 1;
- return new Function(t1 + H.S(t2) + "}")();
- },
- closureFromTearOff: function(receiver, functions, applyTrampolineIndex, reflectionInfo, isStatic, isIntercepted, $name) {
- return H.Closure_fromTearOff(receiver, functions, applyTrampolineIndex, reflectionInfo, !!isStatic, !!isIntercepted, $name);
- },
- BoundClosure_selfOf: function(closure) {
- return closure._self;
- },
- BoundClosure_receiverOf: function(closure) {
- return closure._receiver;
- },
- BoundClosure_computeFieldNamed: function(fieldName) {
- var t1, i, $name,
- template = new H.BoundClosure("self", "target", "receiver", "name"),
- names = J.JSArray_markFixedList(Object.getOwnPropertyNames(template));
- for (t1 = names.length, i = 0; i < t1; ++i) {
- $name = names[i];
- if (template[$name] === fieldName)
- return $name;
- }
- },
- stringTypeCast: function(value) {
- if (typeof value === "string" || value == null)
- return value;
- throw H.wrapException(H.CastErrorImplementation$(value, "String"));
- },
- boolTypeCast: function(value) {
- if (typeof value === "boolean" || value == null)
- return value;
- throw H.wrapException(H.CastErrorImplementation$(value, "bool"));
- },
- intTypeCast: function(value) {
- if (typeof value === "number" && Math.floor(value) === value || value == null)
- return value;
- throw H.wrapException(H.CastErrorImplementation$(value, "int"));
- },
- propertyTypeCastError: function(value, property) {
- throw H.wrapException(H.CastErrorImplementation$(value, H.unminifyOrTag(property.substring(3))));
- },
- interceptedTypeCast: function(value, property) {
- var t1;
- if (value != null)
- t1 = (typeof value === "object" || typeof value === "function") && J.getInterceptor$(value)[property];
- else
- t1 = true;
- if (t1)
- return value;
- H.propertyTypeCastError(value, property);
- },
- numberOrStringSuperNativeTypeCast: function(value, property) {
- if (value == null)
- return value;
- if (typeof value === "string")
- return value;
- if (typeof value === "number")
- return value;
- if (J.getInterceptor$(value)[property])
- return value;
- H.propertyTypeCastError(value, property);
- },
- extractFunctionTypeObjectFromInternal: function(o) {
- var signature;
- if ("$signature" in o) {
- signature = o.$signature;
- if (typeof signature == "number")
- return init.types[signature];
- else
- return o.$signature();
- }
- return;
- },
- functionTypeTest: function(value, functionTypeRti) {
- var functionTypeObject;
- if (typeof value == "function")
- return true;
- functionTypeObject = H.extractFunctionTypeObjectFromInternal(J.getInterceptor$(value));
- if (functionTypeObject == null)
- return false;
- return H._isFunctionSubtype(functionTypeObject, null, functionTypeRti, null);
- },
- CastErrorImplementation$: function(value, type) {
- return new H.CastErrorImplementation("CastError: " + P.Error_safeToString(value) + ": type '" + H.S(H._typeDescription(value)) + "' is not a subtype of type '" + type + "'");
- },
- _typeDescription: function(value) {
- var functionTypeObject,
- t1 = J.getInterceptor$(value);
- if (!!t1.$isClosure) {
- functionTypeObject = H.extractFunctionTypeObjectFromInternal(t1);
- if (functionTypeObject != null)
- return H.runtimeTypeToString(functionTypeObject);
- return "Closure";
- }
- return H.Primitives_objectTypeName(value);
- },
- throwCyclicInit: function(staticName) {
- throw H.wrapException(new P.CyclicInitializationError(staticName));
- },
- RuntimeError$: function(message) {
- return new H.RuntimeError(message);
- },
- getIsolateAffinityTag: function($name) {
- return init.getIsolateTag($name);
- },
- setRuntimeTypeInfo: function(target, rti) {
- target.$ti = rti;
- return target;
- },
- getRuntimeTypeInfo: function(target) {
- if (target == null)
- return;
- return target.$ti;
- },
- getRuntimeTypeArguments: function(interceptor, object, substitutionName) {
- return H.substitute(interceptor["$as" + H.S(substitutionName)], H.getRuntimeTypeInfo(object));
- },
- getRuntimeTypeArgumentIntercepted: function(interceptor, target, substitutionName, index) {
- var $arguments = H.substitute(interceptor["$as" + H.S(substitutionName)], H.getRuntimeTypeInfo(target));
- return $arguments == null ? null : $arguments[index];
- },
- getRuntimeTypeArgument: function(target, substitutionName, index) {
- var $arguments = H.substitute(target["$as" + H.S(substitutionName)], H.getRuntimeTypeInfo(target));
- return $arguments == null ? null : $arguments[index];
- },
- getTypeArgumentByIndex: function(target, index) {
- var rti = H.getRuntimeTypeInfo(target);
- return rti == null ? null : rti[index];
- },
- runtimeTypeToString: function(rti) {
- return H._runtimeTypeToString(rti, null);
- },
- _runtimeTypeToString: function(rti, genericContext) {
- if (rti == null)
- return "dynamic";
- if (rti === -1)
- return "void";
- if (typeof rti === "object" && rti !== null && rti.constructor === Array)
- return H.unminifyOrTag(rti[0].name) + H._joinArguments(rti, 1, genericContext);
- if (typeof rti == "function")
- return H.unminifyOrTag(rti.name);
- if (rti === -2)
- return "dynamic";
- if (typeof rti === "number") {
- if (genericContext == null || rti < 0 || rti >= genericContext.length)
- return "unexpected-generic-index:" + H.S(rti);
- return H.S(genericContext[genericContext.length - rti - 1]);
- }
- if ('func' in rti)
- return H._functionRtiToString(rti, genericContext);
- if ('futureOr' in rti)
- return "FutureOr<" + H._runtimeTypeToString("type" in rti ? rti.type : null, genericContext) + ">";
- return "unknown-reified-type";
- },
- _functionRtiToString: function(rti, genericContext) {
- var boundsRti, outerContextLength, offset, i, i0, typeParameters, typeSep, boundRti, returnTypeText, $arguments, t1, argumentsText, sep, _i, argument, optionalArguments, namedArguments, t2, t3, _s2_ = ", ";
- if ("bounds" in rti) {
- boundsRti = rti.bounds;
- if (genericContext == null) {
- genericContext = H.setRuntimeTypeInfo([], [P.String]);
- outerContextLength = null;
- } else
- outerContextLength = genericContext.length;
- offset = genericContext.length;
- for (i = boundsRti.length, i0 = i; i0 > 0; --i0)
- genericContext.push("T" + (offset + i0));
- for (typeParameters = "<", typeSep = "", i0 = 0; i0 < i; ++i0, typeSep = _s2_) {
- typeParameters = C.JSString_methods.$add(typeParameters + typeSep, genericContext[genericContext.length - i0 - 1]);
- boundRti = boundsRti[i0];
- if (boundRti != null && boundRti !== P.Object)
- typeParameters += " extends " + H._runtimeTypeToString(boundRti, genericContext);
- }
- typeParameters += ">";
- } else {
- typeParameters = "";
- outerContextLength = null;
- }
- returnTypeText = !!rti.v ? "void" : H._runtimeTypeToString(rti.ret, genericContext);
- if ("args" in rti) {
- $arguments = rti.args;
- for (t1 = $arguments.length, argumentsText = "", sep = "", _i = 0; _i < t1; ++_i, sep = _s2_) {
- argument = $arguments[_i];
- argumentsText = argumentsText + sep + H._runtimeTypeToString(argument, genericContext);
- }
- } else {
- argumentsText = "";
- sep = "";
- }
- if ("opt" in rti) {
- optionalArguments = rti.opt;
- argumentsText += sep + "[";
- for (t1 = optionalArguments.length, sep = "", _i = 0; _i < t1; ++_i, sep = _s2_) {
- argument = optionalArguments[_i];
- argumentsText = argumentsText + sep + H._runtimeTypeToString(argument, genericContext);
- }
- argumentsText += "]";
- }
- if ("named" in rti) {
- namedArguments = rti.named;
- argumentsText += sep + "{";
- for (t1 = H.extractKeys(namedArguments), t2 = t1.length, sep = "", _i = 0; _i < t2; ++_i, sep = _s2_) {
- t3 = t1[_i];
- argumentsText = argumentsText + sep + H._runtimeTypeToString(namedArguments[t3], genericContext) + (" " + H.S(t3));
- }
- argumentsText += "}";
- }
- if (outerContextLength != null)
- genericContext.length = outerContextLength;
- return typeParameters + "(" + argumentsText + ") => " + returnTypeText;
- },
- _joinArguments: function(types, startIndex, genericContext) {
- var buffer, index, separator, allDynamic, t1, argument;
- if (types == null)
- return "";
- buffer = new P.StringBuffer("");
- for (index = startIndex, separator = "", allDynamic = true, t1 = ""; index < types.length; ++index, separator = ", ") {
- buffer._contents = t1 + separator;
- argument = types[index];
- if (argument != null)
- allDynamic = false;
- t1 = buffer._contents += H._runtimeTypeToString(argument, genericContext);
- }
- return "<" + buffer.toString$0(0) + ">";
- },
- getRti: function(o) {
- var functionRti, type, rti,
- t1 = J.getInterceptor$(o);
- if (!!t1.$isClosure) {
- functionRti = H.extractFunctionTypeObjectFromInternal(t1);
- if (functionRti != null)
- return functionRti;
- }
- type = t1.constructor;
- if (typeof o != "object")
- return type;
- rti = H.getRuntimeTypeInfo(o);
- if (rti != null) {
- rti = rti.slice();
- rti.splice(0, 0, type);
- type = rti;
- }
- return type;
- },
- getRuntimeType: function(object) {
- return new H.TypeImpl(H.getRti(object));
- },
- substitute: function(substitution, $arguments) {
- if (substitution == null)
- return $arguments;
- substitution = substitution.apply(null, $arguments);
- if (substitution == null)
- return;
- if (typeof substitution === "object" && substitution !== null && substitution.constructor === Array)
- return substitution;
- if (typeof substitution == "function")
- return substitution.apply(null, $arguments);
- return $arguments;
- },
- checkSubtype: function(object, isField, checks, asField) {
- var $arguments, interceptor;
- if (object == null)
- return false;
- $arguments = H.getRuntimeTypeInfo(object);
- interceptor = J.getInterceptor$(object);
- if (interceptor[isField] == null)
- return false;
- return H.areSubtypes(H.substitute(interceptor[asField], $arguments), null, checks, null);
- },
- subtypeCast: function(object, isField, checks, asField) {
- if (object == null)
- return object;
- if (H.checkSubtype(object, isField, checks, asField))
- return object;
- throw H.wrapException(H.CastErrorImplementation$(object, function(str, names) {
- return str.replace(/[^<,> ]+/g, function(m) {
- return names[m] || m;
- });
- }(H.unminifyOrTag(isField.substring(3)) + H._joinArguments(checks, 0, null), init.mangledGlobalNames)));
- },
- areSubtypes: function(s, sEnv, t, tEnv) {
- var len, i;
- if (t == null)
- return true;
- if (s == null) {
- len = t.length;
- for (i = 0; i < len; ++i)
- if (!H._isSubtype(null, null, t[i], tEnv))
- return false;
- return true;
- }
- len = s.length;
- for (i = 0; i < len; ++i)
- if (!H._isSubtype(s[i], sEnv, t[i], tEnv))
- return false;
- return true;
- },
- computeSignature: function(signature, context, contextName) {
- return signature.apply(context, H.substitute(J.getInterceptor$(context)["$as" + H.S(contextName)], H.getRuntimeTypeInfo(context)));
- },
- isSupertypeOfNullRecursive: function(type) {
- var typeArgument;
- if (typeof type === "number")
- return false;
- if ('futureOr' in type) {
- typeArgument = "type" in type ? type.type : null;
- return type == null || type.name === "Object" || type.name === "Null" || type === -1 || type === -2 || H.isSupertypeOfNullRecursive(typeArgument);
- }
- return false;
- },
- checkSubtypeOfRuntimeType: function(o, t) {
- var type, rti;
- if (o == null)
- return t == null || t.name === "Object" || t.name === "Null" || t === -1 || t === -2 || H.isSupertypeOfNullRecursive(t);
- if (t == null || t === -1 || t.name === "Object" || t === -2)
- return true;
- if (typeof t == "object") {
- if ('futureOr' in t)
- if (H.checkSubtypeOfRuntimeType(o, "type" in t ? t.type : null))
- return true;
- if ('func' in t)
- return H.functionTypeTest(o, t);
- }
- type = J.getInterceptor$(o).constructor;
- rti = H.getRuntimeTypeInfo(o);
- if (rti != null) {
- rti = rti.slice();
- rti.splice(0, 0, type);
- type = rti;
- }
- return H._isSubtype(type, null, t, null);
- },
- subtypeOfRuntimeTypeCast: function(object, type) {
- if (object != null && !H.checkSubtypeOfRuntimeType(object, type))
- throw H.wrapException(H.CastErrorImplementation$(object, H.runtimeTypeToString(type)));
- return object;
- },
- _isSubtype: function(s, sEnv, t, tEnv) {
- var t1, typeOfS, tTypeArgument, futureSubstitution, futureArguments, t2, typeOfT, typeOfTString, substitution, _null = null;
- if (s === t)
- return true;
- if (t == null || t === -1 || t.name === "Object" || t === -2)
- return true;
- if (s === -2)
- return true;
- if (s == null || s === -1 || s.name === "Object" || s === -2) {
- if (typeof t === "number")
- return false;
- if ('futureOr' in t)
- return H._isSubtype(s, sEnv, "type" in t ? t.type : _null, tEnv);
- return false;
- }
- if (typeof s === "number")
- return H._isSubtype(sEnv[s], sEnv, t, tEnv);
- if (typeof t === "number")
- return false;
- if (s.name === "Null")
- return true;
- t1 = typeof s === "object" && s !== null && s.constructor === Array;
- typeOfS = t1 ? s[0] : s;
- if ('futureOr' in t) {
- tTypeArgument = "type" in t ? t.type : _null;
- if ('futureOr' in s)
- return H._isSubtype("type" in s ? s.type : _null, sEnv, tTypeArgument, tEnv);
- else if (H._isSubtype(s, sEnv, tTypeArgument, tEnv))
- return true;
- else {
- if (!('$is' + "Future" in typeOfS.prototype))
- return false;
- futureSubstitution = typeOfS.prototype["$as" + "Future"];
- futureArguments = H.substitute(futureSubstitution, t1 ? s.slice(1) : _null);
- return H._isSubtype(typeof futureArguments === "object" && futureArguments !== null && futureArguments.constructor === Array ? futureArguments[0] : _null, sEnv, tTypeArgument, tEnv);
- }
- }
- if ('func' in t)
- return H._isFunctionSubtype(s, sEnv, t, tEnv);
- if ('func' in s)
- return t.name === "Function";
- t2 = typeof t === "object" && t !== null && t.constructor === Array;
- typeOfT = t2 ? t[0] : t;
- if (typeOfT !== typeOfS) {
- typeOfTString = typeOfT.name;
- if (!('$is' + typeOfTString in typeOfS.prototype))
- return false;
- substitution = typeOfS.prototype["$as" + typeOfTString];
- } else
- substitution = _null;
- if (!t2)
- return true;
- t1 = t1 ? s.slice(1) : _null;
- t2 = t.slice(1);
- return H.areSubtypes(H.substitute(substitution, t1), sEnv, t2, tEnv);
- },
- _isFunctionSubtype: function(s, sEnv, t, tEnv) {
- var sBounds, tBounds, sParameterTypes, tParameterTypes, sOptionalParameterTypes, tOptionalParameterTypes, sParametersLen, tParametersLen, sOptionalParametersLen, tOptionalParametersLen, pos, tPos, sPos, sNamedParameters, tNamedParameters;
- if (!('func' in s))
- return false;
- if ("bounds" in s) {
- if (!("bounds" in t))
- return false;
- sBounds = s.bounds;
- tBounds = t.bounds;
- if (sBounds.length !== tBounds.length)
- return false;
- sEnv = sEnv == null ? sBounds : sBounds.concat(sEnv);
- tEnv = tEnv == null ? tBounds : tBounds.concat(tEnv);
- } else if ("bounds" in t)
- return false;
- if (!H._isSubtype(s.ret, sEnv, t.ret, tEnv))
- return false;
- sParameterTypes = s.args;
- tParameterTypes = t.args;
- sOptionalParameterTypes = s.opt;
- tOptionalParameterTypes = t.opt;
- sParametersLen = sParameterTypes != null ? sParameterTypes.length : 0;
- tParametersLen = tParameterTypes != null ? tParameterTypes.length : 0;
- sOptionalParametersLen = sOptionalParameterTypes != null ? sOptionalParameterTypes.length : 0;
- tOptionalParametersLen = tOptionalParameterTypes != null ? tOptionalParameterTypes.length : 0;
- if (sParametersLen > tParametersLen)
- return false;
- if (sParametersLen + sOptionalParametersLen < tParametersLen + tOptionalParametersLen)
- return false;
- for (pos = 0; pos < sParametersLen; ++pos)
- if (!H._isSubtype(tParameterTypes[pos], tEnv, sParameterTypes[pos], sEnv))
- return false;
- for (tPos = pos, sPos = 0; tPos < tParametersLen; ++sPos, ++tPos)
- if (!H._isSubtype(tParameterTypes[tPos], tEnv, sOptionalParameterTypes[sPos], sEnv))
- return false;
- for (tPos = 0; tPos < tOptionalParametersLen; ++sPos, ++tPos)
- if (!H._isSubtype(tOptionalParameterTypes[tPos], tEnv, sOptionalParameterTypes[sPos], sEnv))
- return false;
- sNamedParameters = s.named;
- tNamedParameters = t.named;
- if (tNamedParameters == null)
- return true;
- if (sNamedParameters == null)
- return false;
- return H.namedParametersSubtypeCheck(sNamedParameters, sEnv, tNamedParameters, tEnv);
- },
- namedParametersSubtypeCheck: function(s, sEnv, t, tEnv) {
- var t1, i, $name,
- names = Object.getOwnPropertyNames(t);
- for (t1 = names.length, i = 0; i < t1; ++i) {
- $name = names[i];
- if (!Object.hasOwnProperty.call(s, $name))
- return false;
- if (!H._isSubtype(t[$name], tEnv, s[$name], sEnv))
- return false;
- }
- return true;
- },
- instantiatedGenericFunctionType: function(genericFunctionRti, parameters) {
- if (genericFunctionRti == null)
- return;
- return H.finishBindInstantiatedFunctionType(genericFunctionRti, {func: 1}, parameters, 0);
- },
- finishBindInstantiatedFunctionType: function(rti, result, parameters, depth) {
- var namedParameters, boundNamed, names, t1, _i, $name;
- if ("v" in rti)
- result.v = rti.v;
- else if ("ret" in rti)
- result.ret = H.bindInstantiatedType(rti.ret, parameters, depth);
- if ("args" in rti)
- result.args = H.bindInstantiatedTypes(rti.args, parameters, depth);
- if ("opt" in rti)
- result.opt = H.bindInstantiatedTypes(rti.opt, parameters, depth);
- if ("named" in rti) {
- namedParameters = rti.named;
- boundNamed = {};
- names = Object.keys(namedParameters);
- for (t1 = names.length, _i = 0; _i < t1; ++_i) {
- $name = names[_i];
- boundNamed[$name] = H.bindInstantiatedType(namedParameters[$name], parameters, depth);
- }
- result.named = boundNamed;
- }
- return result;
- },
- bindInstantiatedType: function(rti, parameters, depth) {
- var result, bounds;
- if (rti == null)
- return rti;
- if (rti === -1)
- return rti;
- if (typeof rti == "function")
- return rti;
- if (typeof rti === "number") {
- if (rti < depth)
- return rti;
- return parameters[rti - depth];
- }
- if (typeof rti === "object" && rti !== null && rti.constructor === Array)
- return H.bindInstantiatedTypes(rti, parameters, depth);
- if ('func' in rti) {
- result = {func: 1};
- if ("bounds" in rti) {
- bounds = rti.bounds;
- depth += bounds.length;
- result.bounds = H.bindInstantiatedTypes(bounds, parameters, depth);
- }
- return H.finishBindInstantiatedFunctionType(rti, result, parameters, depth);
- }
- throw H.wrapException(P.ArgumentError$("Unknown RTI format in bindInstantiatedType."));
- },
- bindInstantiatedTypes: function(rti, parameters, depth) {
- var t1, i,
- array = rti.slice();
- for (t1 = array.length, i = 0; i < t1; ++i)
- array[i] = H.bindInstantiatedType(array[i], parameters, depth);
- return array;
- },
- defineProperty: function(obj, property, value) {
- Object.defineProperty(obj, property, {value: value, enumerable: false, writable: true, configurable: true});
- },
- lookupAndCacheInterceptor: function(obj) {
- var interceptor, interceptorClass, mark, t1,
- tag = $.getTagFunction.call$1(obj),
- record = $.dispatchRecordsForInstanceTags[tag];
- if (record != null) {
- Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
- return record.i;
- }
- interceptor = $.interceptorsForUncacheableTags[tag];
- if (interceptor != null)
- return interceptor;
- interceptorClass = init.interceptorsByTag[tag];
- if (interceptorClass == null) {
- tag = $.alternateTagFunction.call$2(obj, tag);
- if (tag != null) {
- record = $.dispatchRecordsForInstanceTags[tag];
- if (record != null) {
- Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
- return record.i;
- }
- interceptor = $.interceptorsForUncacheableTags[tag];
- if (interceptor != null)
- return interceptor;
- interceptorClass = init.interceptorsByTag[tag];
- }
- }
- if (interceptorClass == null)
- return;
- interceptor = interceptorClass.prototype;
- mark = tag[0];
- if (mark === "!") {
- record = H.makeLeafDispatchRecord(interceptor);
- $.dispatchRecordsForInstanceTags[tag] = record;
- Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
- return record.i;
- }
- if (mark === "~") {
- $.interceptorsForUncacheableTags[tag] = interceptor;
- return interceptor;
- }
- if (mark === "-") {
- t1 = H.makeLeafDispatchRecord(interceptor);
- Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true});
- return t1.i;
- }
- if (mark === "+")
- return H.patchInteriorProto(obj, interceptor);
- if (mark === "*")
- throw H.wrapException(P.UnimplementedError$(tag));
- if (init.leafTags[tag] === true) {
- t1 = H.makeLeafDispatchRecord(interceptor);
- Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true});
- return t1.i;
- } else
- return H.patchInteriorProto(obj, interceptor);
- },
- patchInteriorProto: function(obj, interceptor) {
- var proto = Object.getPrototypeOf(obj);
- Object.defineProperty(proto, init.dispatchPropertyName, {value: J.makeDispatchRecord(interceptor, proto, null, null), enumerable: false, writable: true, configurable: true});
- return interceptor;
- },
- makeLeafDispatchRecord: function(interceptor) {
- return J.makeDispatchRecord(interceptor, false, null, !!interceptor.$isJavaScriptIndexingBehavior);
- },
- makeDefaultDispatchRecord: function(tag, interceptorClass, proto) {
- var interceptor = interceptorClass.prototype;
- if (init.leafTags[tag] === true)
- return H.makeLeafDispatchRecord(interceptor);
- else
- return J.makeDispatchRecord(interceptor, proto, null, null);
- },
- initNativeDispatch: function() {
- if (true === $.initNativeDispatchFlag)
- return;
- $.initNativeDispatchFlag = true;
- H.initNativeDispatchContinue();
- },
- initNativeDispatchContinue: function() {
- var map, tags, fun, i, tag, proto, record, interceptorClass;
- $.dispatchRecordsForInstanceTags = Object.create(null);
- $.interceptorsForUncacheableTags = Object.create(null);
- H.initHooks();
- map = init.interceptorsByTag;
- tags = Object.getOwnPropertyNames(map);
- if (typeof window != "undefined") {
- window;
- fun = function() {
- };
- for (i = 0; i < tags.length; ++i) {
- tag = tags[i];
- proto = $.prototypeForTagFunction.call$1(tag);
- if (proto != null) {
- record = H.makeDefaultDispatchRecord(tag, map[tag], proto);
- if (record != null) {
- Object.defineProperty(proto, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
- fun.prototype = proto;
- }
- }
- }
- }
- for (i = 0; i < tags.length; ++i) {
- tag = tags[i];
- if (/^[A-Za-z_]/.test(tag)) {
- interceptorClass = map[tag];
- map["!" + tag] = interceptorClass;
- map["~" + tag] = interceptorClass;
- map["-" + tag] = interceptorClass;
- map["+" + tag] = interceptorClass;
- map["*" + tag] = interceptorClass;
- }
- }
- },
- initHooks: function() {
- var transformers, i, transformer, getTag, getUnknownTag, prototypeForTag,
- hooks = C.C_JS_CONST0();
- hooks = H.applyHooksTransformer(C.C_JS_CONST1, H.applyHooksTransformer(C.C_JS_CONST2, H.applyHooksTransformer(C.C_JS_CONST3, H.applyHooksTransformer(C.C_JS_CONST3, H.applyHooksTransformer(C.C_JS_CONST4, H.applyHooksTransformer(C.C_JS_CONST5, H.applyHooksTransformer(C.C_JS_CONST6(C.C_JS_CONST), hooks)))))));
- if (typeof dartNativeDispatchHooksTransformer != "undefined") {
- transformers = dartNativeDispatchHooksTransformer;
- if (typeof transformers == "function")
- transformers = [transformers];
- if (transformers.constructor == Array)
- for (i = 0; i < transformers.length; ++i) {
- transformer = transformers[i];
- if (typeof transformer == "function")
- hooks = transformer(hooks) || hooks;
- }
- }
- getTag = hooks.getTag;
- getUnknownTag = hooks.getUnknownTag;
- prototypeForTag = hooks.prototypeForTag;
- $.getTagFunction = new H.initHooks_closure(getTag);
- $.alternateTagFunction = new H.initHooks_closure0(getUnknownTag);
- $.prototypeForTagFunction = new H.initHooks_closure1(prototypeForTag);
- },
- applyHooksTransformer: function(transformer, hooks) {
- return transformer(hooks) || hooks;
- },
- JSSyntaxRegExp_makeNative: function(source, multiLine, caseSensitive, unicode, dotAll, global) {
- var m = multiLine ? "m" : "",
- i = caseSensitive ? "" : "i",
- u = unicode ? "u" : "",
- s = dotAll ? "s" : "",
- g = global ? "g" : "",
- regexp = function(source, modifiers) {
- try {
- return new RegExp(source, modifiers);
- } catch (e) {
- return e;
- }
- }(source, m + i + u + s + g);
- if (regexp instanceof RegExp)
- return regexp;
- throw H.wrapException(P.FormatException$("Illegal RegExp pattern (" + String(regexp) + ")", source, null));
- },
- stringContainsUnchecked: function(receiver, other, startIndex) {
- var t1, t2;
- if (typeof other === "string")
- return receiver.indexOf(other, startIndex) >= 0;
- else {
- t1 = J.getInterceptor$(other);
- if (!!t1.$isJSSyntaxRegExp) {
- t1 = C.JSString_methods.substring$1(receiver, startIndex);
- t2 = other._nativeRegExp;
- return t2.test(t1);
- } else {
- t1 = t1.allMatches$1(other, C.JSString_methods.substring$1(receiver, startIndex));
- return !t1.get$isEmpty(t1);
- }
- }
- },
- escapeReplacement: function(replacement) {
- if (replacement.indexOf("$", 0) >= 0)
- return replacement.replace(/\$/g, "$$$$");
- return replacement;
- },
- stringReplaceFirstRE: function(receiver, regexp, replacement, startIndex) {
- var match = regexp._execGlobal$2(receiver, startIndex);
- if (match == null)
- return receiver;
- return H.stringReplaceRangeUnchecked(receiver, match._match.index, match.get$end(match), replacement);
- },
- quoteStringForRegExp: function(string) {
- if (/[[\]{}()*+?.\\^$|]/.test(string))
- return string.replace(/[[\]{}()*+?.\\^$|]/g, "\\$&");
- return string;
- },
- stringReplaceAllUnchecked: function(receiver, pattern, replacement) {
- var nativeRegexp;
- if (typeof pattern === "string")
- return H.stringReplaceAllUncheckedString(receiver, pattern, replacement);
- if (pattern instanceof H.JSSyntaxRegExp) {
- nativeRegexp = pattern.get$_nativeGlobalVersion();
- nativeRegexp.lastIndex = 0;
- return receiver.replace(nativeRegexp, H.escapeReplacement(replacement));
- }
- if (pattern == null)
- H.throwExpression(H.argumentErrorValue(pattern));
- throw H.wrapException("String.replaceAll(Pattern) UNIMPLEMENTED");
- },
- stringReplaceAllUncheckedString: function(receiver, pattern, replacement) {
- var $length, t1, i, index;
- if (pattern === "") {
- if (receiver === "")
- return replacement;
- $length = receiver.length;
- for (t1 = replacement, i = 0; i < $length; ++i)
- t1 = t1 + receiver[i] + replacement;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- }
- index = receiver.indexOf(pattern, 0);
- if (index < 0)
- return receiver;
- if (receiver.length < 500 || replacement.indexOf("$", 0) >= 0)
- return receiver.split(pattern).join(replacement);
- return receiver.replace(new RegExp(H.quoteStringForRegExp(pattern), 'g'), H.escapeReplacement(replacement));
- },
- stringReplaceFirstUnchecked: function(receiver, pattern, replacement, startIndex) {
- var index, t1, matches, match;
- if (typeof pattern === "string") {
- index = receiver.indexOf(pattern, startIndex);
- if (index < 0)
- return receiver;
- return H.stringReplaceRangeUnchecked(receiver, index, index + pattern.length, replacement);
- }
- t1 = J.getInterceptor$(pattern);
- if (!!t1.$isJSSyntaxRegExp)
- return startIndex === 0 ? receiver.replace(pattern._nativeRegExp, H.escapeReplacement(replacement)) : H.stringReplaceFirstRE(receiver, pattern, replacement, startIndex);
- if (pattern == null)
- H.throwExpression(H.argumentErrorValue(pattern));
- t1 = t1.allMatches$2(pattern, receiver, startIndex);
- matches = t1.get$iterator(t1);
- if (!matches.moveNext$0())
- return receiver;
- match = matches.get$current(matches);
- return C.JSString_methods.replaceRange$3(receiver, match.get$start(match), match.get$end(match), replacement);
- },
- stringReplaceRangeUnchecked: function(receiver, start, end, replacement) {
- var prefix = receiver.substring(0, start),
- suffix = receiver.substring(end);
- return prefix + H.S(replacement) + suffix;
- },
- ConstantMapView: function ConstantMapView(t0, t1) {
- this._collection$_map = t0;
- this.$ti = t1;
- },
- ConstantMap: function ConstantMap() {
- },
- ConstantStringMap: function ConstantStringMap(t0, t1, t2, t3) {
- var _ = this;
- _.__js_helper$_length = t0;
- _._jsObject = t1;
- _._keys = t2;
- _.$ti = t3;
- },
- ConstantStringMap_values_closure: function ConstantStringMap_values_closure(t0) {
- this.$this = t0;
- },
- ConstantProtoMap: function ConstantProtoMap(t0, t1, t2, t3, t4) {
- var _ = this;
- _._protoValue = t0;
- _.__js_helper$_length = t1;
- _._jsObject = t2;
- _._keys = t3;
- _.$ti = t4;
- },
- _ConstantMapKeyIterable: function _ConstantMapKeyIterable(t0, t1) {
- this._map = t0;
- this.$ti = t1;
- },
- Instantiation: function Instantiation() {
- },
- Instantiation1: function Instantiation1(t0, t1) {
- this._genericClosure = t0;
- this.$ti = t1;
- },
- JSInvocationMirror: function JSInvocationMirror(t0, t1, t2, t3, t4) {
- var _ = this;
- _.__js_helper$_memberName = t0;
- _._kind = t1;
- _._arguments = t2;
- _._namedArgumentNames = t3;
- _._typeArgumentCount = t4;
- },
- Primitives_functionNoSuchMethod_closure: function Primitives_functionNoSuchMethod_closure(t0, t1, t2) {
- this._box_0 = t0;
- this.namedArgumentList = t1;
- this.$arguments = t2;
- },
- TypeErrorDecoder: function TypeErrorDecoder(t0, t1, t2, t3, t4, t5) {
- var _ = this;
- _._pattern = t0;
- _._arguments = t1;
- _._argumentsExpr = t2;
- _._expr = t3;
- _._method = t4;
- _._receiver = t5;
- },
- NullError: function NullError(t0, t1) {
- this._message = t0;
- this._method = t1;
- },
- JsNoSuchMethodError: function JsNoSuchMethodError(t0, t1, t2) {
- this._message = t0;
- this._method = t1;
- this._receiver = t2;
- },
- UnknownJsTypeError: function UnknownJsTypeError(t0) {
- this._message = t0;
- },
- ExceptionAndStackTrace: function ExceptionAndStackTrace(t0, t1) {
- this.dartException = t0;
- this.stackTrace = t1;
- },
- unwrapException_saveStackTrace: function unwrapException_saveStackTrace(t0) {
- this.ex = t0;
- },
- _StackTrace: function _StackTrace(t0) {
- this._exception = t0;
- this._trace = null;
- },
- Closure: function Closure() {
- },
- TearOffClosure: function TearOffClosure() {
- },
- StaticClosure: function StaticClosure() {
- },
- BoundClosure: function BoundClosure(t0, t1, t2, t3) {
- var _ = this;
- _._self = t0;
- _._target = t1;
- _._receiver = t2;
- _.__js_helper$_name = t3;
- },
- CastErrorImplementation: function CastErrorImplementation(t0) {
- this.message = t0;
- },
- RuntimeError: function RuntimeError(t0) {
- this.message = t0;
- },
- TypeImpl: function TypeImpl(t0) {
- this._rti = t0;
- this._hashCode = this.__typeName = null;
- },
- JsLinkedHashMap: function JsLinkedHashMap(t0) {
- var _ = this;
- _.__js_helper$_length = 0;
- _._last = _._first = _._rest = _._nums = _._strings = null;
- _._modifications = 0;
- _.$ti = t0;
- },
- JsLinkedHashMap_values_closure: function JsLinkedHashMap_values_closure(t0) {
- this.$this = t0;
- },
- JsLinkedHashMap_addAll_closure: function JsLinkedHashMap_addAll_closure(t0) {
- this.$this = t0;
- },
- LinkedHashMapCell: function LinkedHashMapCell(t0, t1) {
- var _ = this;
- _.hashMapCellKey = t0;
- _.hashMapCellValue = t1;
- _._previous = _._next = null;
- },
- LinkedHashMapKeyIterable: function LinkedHashMapKeyIterable(t0, t1) {
- this._map = t0;
- this.$ti = t1;
- },
- LinkedHashMapKeyIterator: function LinkedHashMapKeyIterator(t0, t1) {
- var _ = this;
- _._map = t0;
- _._modifications = t1;
- _.__js_helper$_current = _._cell = null;
- },
- initHooks_closure: function initHooks_closure(t0) {
- this.getTag = t0;
- },
- initHooks_closure0: function initHooks_closure0(t0) {
- this.getUnknownTag = t0;
- },
- initHooks_closure1: function initHooks_closure1(t0) {
- this.prototypeForTag = t0;
- },
- JSSyntaxRegExp: function JSSyntaxRegExp(t0, t1) {
- var _ = this;
- _.pattern = t0;
- _._nativeRegExp = t1;
- _._nativeAnchoredRegExp = _._nativeGlobalRegExp = null;
- },
- _MatchImplementation: function _MatchImplementation(t0) {
- this._match = t0;
- },
- _AllMatchesIterable: function _AllMatchesIterable(t0, t1, t2) {
- this._re = t0;
- this._string = t1;
- this.__js_helper$_start = t2;
- },
- _AllMatchesIterator: function _AllMatchesIterator(t0, t1, t2) {
- var _ = this;
- _._regExp = t0;
- _._string = t1;
- _._nextIndex = t2;
- _.__js_helper$_current = null;
- },
- StringMatch: function StringMatch(t0, t1) {
- this.start = t0;
- this.pattern = t1;
- },
- _StringAllMatchesIterable: function _StringAllMatchesIterable(t0, t1, t2) {
- this._input = t0;
- this._pattern = t1;
- this.__js_helper$_index = t2;
- },
- _StringAllMatchesIterator: function _StringAllMatchesIterator(t0, t1, t2) {
- var _ = this;
- _._input = t0;
- _._pattern = t1;
- _.__js_helper$_index = t2;
- _.__js_helper$_current = null;
- },
- _ensureNativeList: function(list) {
- return list;
- },
- NativeInt8List__create1: function(arg) {
- return new Int8Array(arg);
- },
- NativeUint8List_NativeUint8List$view: function(buffer, offsetInBytes, $length) {
- var t1 = new Uint8Array(buffer, offsetInBytes, $length);
- return t1;
- },
- _checkValidIndex: function(index, list, $length) {
- if (index >>> 0 !== index || index >= $length)
- throw H.wrapException(H.diagnoseIndexError(list, index));
- },
- _checkValidRange: function(start, end, $length) {
- var t1;
- if (!(start >>> 0 !== start))
- if (end == null)
- t1 = start > $length;
- else
- t1 = end >>> 0 !== end || start > end || end > $length;
- else
- t1 = true;
- if (t1)
- throw H.wrapException(H.diagnoseRangeError(start, end, $length));
- if (end == null)
- return $length;
- return end;
- },
- NativeTypedData: function NativeTypedData() {
- },
- NativeTypedArray: function NativeTypedArray() {
- },
- NativeTypedArrayOfDouble: function NativeTypedArrayOfDouble() {
- },
- NativeTypedArrayOfInt: function NativeTypedArrayOfInt() {
- },
- NativeFloat32List: function NativeFloat32List() {
- },
- NativeFloat64List: function NativeFloat64List() {
- },
- NativeInt16List: function NativeInt16List() {
- },
- NativeInt32List: function NativeInt32List() {
- },
- NativeInt8List: function NativeInt8List() {
- },
- NativeUint16List: function NativeUint16List() {
- },
- NativeUint32List: function NativeUint32List() {
- },
- NativeUint8ClampedList: function NativeUint8ClampedList() {
- },
- NativeUint8List: function NativeUint8List() {
- },
- _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin: function _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin() {
- },
- _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin: function _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin() {
- },
- _NativeTypedArrayOfInt_NativeTypedArray_ListMixin: function _NativeTypedArrayOfInt_NativeTypedArray_ListMixin() {
- },
- _NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin: function _NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin() {
- },
- extractKeys: function(victim) {
- return J.JSArray_JSArray$markFixed(victim ? Object.keys(victim) : [], null);
- },
- unmangleGlobalNameIfPreservedAnyways: function($name) {
- return init.mangledGlobalNames[$name];
- },
- printString: function(string) {
- if (typeof dartPrint == "function") {
- dartPrint(string);
- return;
- }
- if (typeof console == "object" && typeof console.log != "undefined") {
- console.log(string);
- return;
- }
- if (typeof window == "object")
- return;
- if (typeof print == "function") {
- print(string);
- return;
- }
- throw "Unable to print message: " + String(string);
- }
- },
- J = {
- makeDispatchRecord: function(interceptor, proto, extension, indexability) {
- return {i: interceptor, p: proto, e: extension, x: indexability};
- },
- getNativeInterceptor: function(object) {
- var proto, objectProto, $constructor, interceptor,
- record = object[init.dispatchPropertyName];
- if (record == null)
- if ($.initNativeDispatchFlag == null) {
- H.initNativeDispatch();
- record = object[init.dispatchPropertyName];
- }
- if (record != null) {
- proto = record.p;
- if (false === proto)
- return record.i;
- if (true === proto)
- return object;
- objectProto = Object.getPrototypeOf(object);
- if (proto === objectProto)
- return record.i;
- if (record.e === objectProto)
- throw H.wrapException(P.UnimplementedError$("Return interceptor for " + H.S(proto(object, record))));
- }
- $constructor = object.constructor;
- interceptor = $constructor == null ? null : $constructor[$.$get$JS_INTEROP_INTERCEPTOR_TAG()];
- if (interceptor != null)
- return interceptor;
- interceptor = H.lookupAndCacheInterceptor(object);
- if (interceptor != null)
- return interceptor;
- if (typeof object == "function")
- return C.JavaScriptFunction_methods;
- proto = Object.getPrototypeOf(object);
- if (proto == null)
- return C.PlainJavaScriptObject_methods;
- if (proto === Object.prototype)
- return C.PlainJavaScriptObject_methods;
- if (typeof $constructor == "function") {
- Object.defineProperty($constructor, $.$get$JS_INTEROP_INTERCEPTOR_TAG(), {value: C.UnknownJavaScriptObject_methods, enumerable: false, writable: true, configurable: true});
- return C.UnknownJavaScriptObject_methods;
- }
- return C.UnknownJavaScriptObject_methods;
- },
- JSArray_JSArray$fixed: function($length, $E) {
- if (typeof $length !== "number" || Math.floor($length) !== $length)
- throw H.wrapException(P.ArgumentError$value($length, "length", "is not an integer"));
- if ($length < 0 || $length > 4294967295)
- throw H.wrapException(P.RangeError$range($length, 0, 4294967295, "length", null));
- return J.JSArray_JSArray$markFixed(new Array($length), $E);
- },
- JSArray_JSArray$markFixed: function(allocation, $E) {
- return J.JSArray_markFixedList(H.setRuntimeTypeInfo(allocation, [$E]));
- },
- JSArray_markFixedList: function(list) {
- list.fixed$length = Array;
- return list;
- },
- JSArray_markUnmodifiableList: function(list) {
- list.fixed$length = Array;
- list.immutable$list = Array;
- return list;
- },
- JSArray__compareAny: function(a, b) {
- return J.compareTo$1$ns(a, b);
- },
- JSString__isWhitespace: function(codeUnit) {
- if (codeUnit < 256)
- switch (codeUnit) {
- case 9:
- case 10:
- case 11:
- case 12:
- case 13:
- case 32:
- case 133:
- case 160:
- return true;
- default:
- return false;
- }
- switch (codeUnit) {
- case 5760:
- case 8192:
- case 8193:
- case 8194:
- case 8195:
- case 8196:
- case 8197:
- case 8198:
- case 8199:
- case 8200:
- case 8201:
- case 8202:
- case 8232:
- case 8233:
- case 8239:
- case 8287:
- case 12288:
- case 65279:
- return true;
- default:
- return false;
- }
- },
- JSString__skipLeadingWhitespace: function(string, index) {
- var t1, codeUnit;
- for (t1 = string.length; index < t1;) {
- codeUnit = C.JSString_methods._codeUnitAt$1(string, index);
- if (codeUnit !== 32 && codeUnit !== 13 && !J.JSString__isWhitespace(codeUnit))
- break;
- ++index;
- }
- return index;
- },
- JSString__skipTrailingWhitespace: function(string, index) {
- var index0, codeUnit;
- for (; index > 0; index = index0) {
- index0 = index - 1;
- codeUnit = C.JSString_methods.codeUnitAt$1(string, index0);
- if (codeUnit !== 32 && codeUnit !== 13 && !J.JSString__isWhitespace(codeUnit))
- break;
- }
- return index;
- },
- getInterceptor$: function(receiver) {
- if (typeof receiver == "number") {
- if (Math.floor(receiver) == receiver)
- return J.JSInt.prototype;
- return J.JSDouble.prototype;
- }
- if (typeof receiver == "string")
- return J.JSString.prototype;
- if (receiver == null)
- return J.JSNull.prototype;
- if (typeof receiver == "boolean")
- return J.JSBool.prototype;
- if (receiver.constructor == Array)
- return J.JSArray.prototype;
- if (typeof receiver != "object") {
- if (typeof receiver == "function")
- return J.JavaScriptFunction.prototype;
- return receiver;
- }
- if (receiver instanceof P.Object)
- return receiver;
- return J.getNativeInterceptor(receiver);
- },
- getInterceptor$ansx: function(receiver) {
- if (typeof receiver == "number")
- return J.JSNumber.prototype;
- if (typeof receiver == "string")
- return J.JSString.prototype;
- if (receiver == null)
- return receiver;
- if (receiver.constructor == Array)
- return J.JSArray.prototype;
- if (typeof receiver != "object") {
- if (typeof receiver == "function")
- return J.JavaScriptFunction.prototype;
- return receiver;
- }
- if (receiver instanceof P.Object)
- return receiver;
- return J.getNativeInterceptor(receiver);
- },
- getInterceptor$asx: function(receiver) {
- if (typeof receiver == "string")
- return J.JSString.prototype;
- if (receiver == null)
- return receiver;
- if (receiver.constructor == Array)
- return J.JSArray.prototype;
- if (typeof receiver != "object") {
- if (typeof receiver == "function")
- return J.JavaScriptFunction.prototype;
- return receiver;
- }
- if (receiver instanceof P.Object)
- return receiver;
- return J.getNativeInterceptor(receiver);
- },
- getInterceptor$ax: function(receiver) {
- if (receiver == null)
- return receiver;
- if (receiver.constructor == Array)
- return J.JSArray.prototype;
- if (typeof receiver != "object") {
- if (typeof receiver == "function")
- return J.JavaScriptFunction.prototype;
- return receiver;
- }
- if (receiver instanceof P.Object)
- return receiver;
- return J.getNativeInterceptor(receiver);
- },
- getInterceptor$n: function(receiver) {
- if (typeof receiver == "number")
- return J.JSNumber.prototype;
- if (receiver == null)
- return receiver;
- if (!(receiver instanceof P.Object))
- return J.UnknownJavaScriptObject.prototype;
- return receiver;
- },
- getInterceptor$ns: function(receiver) {
- if (typeof receiver == "number")
- return J.JSNumber.prototype;
- if (typeof receiver == "string")
- return J.JSString.prototype;
- if (receiver == null)
- return receiver;
- if (!(receiver instanceof P.Object))
- return J.UnknownJavaScriptObject.prototype;
- return receiver;
- },
- getInterceptor$s: function(receiver) {
- if (typeof receiver == "string")
- return J.JSString.prototype;
- if (receiver == null)
- return receiver;
- if (!(receiver instanceof P.Object))
- return J.UnknownJavaScriptObject.prototype;
- return receiver;
- },
- getInterceptor$x: function(receiver) {
- if (receiver == null)
- return receiver;
- if (typeof receiver != "object") {
- if (typeof receiver == "function")
- return J.JavaScriptFunction.prototype;
- return receiver;
- }
- if (receiver instanceof P.Object)
- return receiver;
- return J.getNativeInterceptor(receiver);
- },
- set$context$x: function(receiver, value) {
- return J.getInterceptor$x(receiver).set$context(receiver, value);
- },
- set$dartValue$x: function(receiver, value) {
- return J.getInterceptor$x(receiver).set$dartValue(receiver, value);
- },
- set$info$x: function(receiver, value) {
- return J.getInterceptor$x(receiver).set$info(receiver, value);
- },
- set$length$asx: function(receiver, value) {
- return J.getInterceptor$asx(receiver).set$length(receiver, value);
- },
- set$render$x: function(receiver, value) {
- return J.getInterceptor$x(receiver).set$render(receiver, value);
- },
- set$renderSync$x: function(receiver, value) {
- return J.getInterceptor$x(receiver).set$renderSync(receiver, value);
- },
- set$run_$x: function(receiver, value) {
- return J.getInterceptor$x(receiver).set$run_(receiver, value);
- },
- set$types$x: function(receiver, value) {
- return J.getInterceptor$x(receiver).set$types(receiver, value);
- },
- get$code$x: function(receiver) {
- return J.getInterceptor$x(receiver).get$code(receiver);
- },
- get$current$x: function(receiver) {
- return J.getInterceptor$x(receiver).get$current(receiver);
- },
- get$dartValue$x: function(receiver) {
- return J.getInterceptor$x(receiver).get$dartValue(receiver);
- },
- get$end$x: function(receiver) {
- return J.getInterceptor$x(receiver).get$end(receiver);
- },
- get$env$x: function(receiver) {
- return J.getInterceptor$x(receiver).get$env(receiver);
- },
- get$fiber$x: function(receiver) {
- return J.getInterceptor$x(receiver).get$fiber(receiver);
- },
- get$file$x: function(receiver) {
- return J.getInterceptor$x(receiver).get$file(receiver);
- },
- get$first$ax: function(receiver) {
- return J.getInterceptor$ax(receiver).get$first(receiver);
- },
- get$functions$x: function(receiver) {
- return J.getInterceptor$x(receiver).get$functions(receiver);
- },
- get$hashCode$: function(receiver) {
- return J.getInterceptor$(receiver).get$hashCode(receiver);
- },
- get$isEmpty$asx: function(receiver) {
- return J.getInterceptor$asx(receiver).get$isEmpty(receiver);
- },
- get$isNotEmpty$asx: function(receiver) {
- return J.getInterceptor$asx(receiver).get$isNotEmpty(receiver);
- },
- get$isTTY$x: function(receiver) {
- return J.getInterceptor$x(receiver).get$isTTY(receiver);
- },
- get$iterator$ax: function(receiver) {
- return J.getInterceptor$ax(receiver).get$iterator(receiver);
- },
- get$last$ax: function(receiver) {
- return J.getInterceptor$ax(receiver).get$last(receiver);
- },
- get$length$asx: function(receiver) {
- return J.getInterceptor$asx(receiver).get$length(receiver);
- },
- get$message$x: function(receiver) {
- return J.getInterceptor$x(receiver).get$message(receiver);
- },
- get$mtime$x: function(receiver) {
- return J.getInterceptor$x(receiver).get$mtime(receiver);
- },
- get$options$x: function(receiver) {
- return J.getInterceptor$x(receiver).get$options(receiver);
- },
- get$path$x: function(receiver) {
- return J.getInterceptor$x(receiver).get$path(receiver);
- },
- get$platform$x: function(receiver) {
- return J.getInterceptor$x(receiver).get$platform(receiver);
- },
- get$reversed$ax: function(receiver) {
- return J.getInterceptor$ax(receiver).get$reversed(receiver);
- },
- get$single$ax: function(receiver) {
- return J.getInterceptor$ax(receiver).get$single(receiver);
- },
- $add$ansx: function(receiver, a0) {
- if (typeof receiver == "number" && typeof a0 == "number")
- return receiver + a0;
- return J.getInterceptor$ansx(receiver).$add(receiver, a0);
- },
- $eq$: function(receiver, a0) {
- if (receiver == null)
- return a0 == null;
- if (typeof receiver != "object")
- return a0 != null && receiver === a0;
- return J.getInterceptor$(receiver).$eq(receiver, a0);
- },
- $index$asx: function(receiver, a0) {
- if (typeof a0 === "number")
- if (receiver.constructor == Array || typeof receiver == "string" || H.isJsIndexable(receiver, receiver[init.dispatchPropertyName]))
- if (a0 >>> 0 === a0 && a0 < receiver.length)
- return receiver[a0];
- return J.getInterceptor$asx(receiver).$index(receiver, a0);
- },
- $indexSet$ax: function(receiver, a0, a1) {
- if (typeof a0 === "number")
- if ((receiver.constructor == Array || H.isJsIndexable(receiver, receiver[init.dispatchPropertyName])) && !receiver.immutable$list && a0 >>> 0 === a0 && a0 < receiver.length)
- return receiver[a0] = a1;
- return J.getInterceptor$ax(receiver).$indexSet(receiver, a0, a1);
- },
- _codeUnitAt$1$s: function(receiver, a0) {
- return J.getInterceptor$s(receiver)._codeUnitAt$1(receiver, a0);
- },
- add$1$ax: function(receiver, a0) {
- return J.getInterceptor$ax(receiver).add$1(receiver, a0);
- },
- addAll$1$ax: function(receiver, a0) {
- return J.getInterceptor$ax(receiver).addAll$1(receiver, a0);
- },
- any$1$ax: function(receiver, a0) {
- return J.getInterceptor$ax(receiver).any$1(receiver, a0);
- },
- apply$2$x: function(receiver, a0, a1) {
- return J.getInterceptor$x(receiver).apply$2(receiver, a0, a1);
- },
- cast$1$0$ax: function(receiver, $T1) {
- return J.getInterceptor$ax(receiver).cast$1$0(receiver, $T1);
- },
- ceil$0$n: function(receiver) {
- return J.getInterceptor$n(receiver).ceil$0(receiver);
- },
- clamp$2$n: function(receiver, a0, a1) {
- return J.getInterceptor$n(receiver).clamp$2(receiver, a0, a1);
- },
- close$0$x: function(receiver) {
- return J.getInterceptor$x(receiver).close$0(receiver);
- },
- codeUnitAt$1$s: function(receiver, a0) {
- return J.getInterceptor$s(receiver).codeUnitAt$1(receiver, a0);
- },
- compareTo$1$ns: function(receiver, a0) {
- return J.getInterceptor$ns(receiver).compareTo$1(receiver, a0);
- },
- contains$1$asx: function(receiver, a0) {
- return J.getInterceptor$asx(receiver).contains$1(receiver, a0);
- },
- createInterface$1$x: function(receiver, a0) {
- return J.getInterceptor$x(receiver).createInterface$1(receiver, a0);
- },
- elementAt$1$ax: function(receiver, a0) {
- return J.getInterceptor$ax(receiver).elementAt$1(receiver, a0);
- },
- endsWith$1$s: function(receiver, a0) {
- return J.getInterceptor$s(receiver).endsWith$1(receiver, a0);
- },
- every$1$ax: function(receiver, a0) {
- return J.getInterceptor$ax(receiver).every$1(receiver, a0);
- },
- existsSync$1$x: function(receiver, a0) {
- return J.getInterceptor$x(receiver).existsSync$1(receiver, a0);
- },
- expand$1$1$ax: function(receiver, a0, $T1) {
- return J.getInterceptor$ax(receiver).expand$1$1(receiver, a0, $T1);
- },
- fillRange$3$ax: function(receiver, a0, a1, a2) {
- return J.getInterceptor$ax(receiver).fillRange$3(receiver, a0, a1, a2);
- },
- floor$0$n: function(receiver) {
- return J.getInterceptor$n(receiver).floor$0(receiver);
- },
- fold$2$ax: function(receiver, a0, a1) {
- return J.getInterceptor$ax(receiver).fold$2(receiver, a0, a1);
- },
- getTime$0$x: function(receiver) {
- return J.getInterceptor$x(receiver).getTime$0(receiver);
- },
- indexOf$1$asx: function(receiver, a0) {
- return J.getInterceptor$asx(receiver).indexOf$1(receiver, a0);
- },
- isDirectory$0$x: function(receiver) {
- return J.getInterceptor$x(receiver).isDirectory$0(receiver);
- },
- isFile$0$x: function(receiver) {
- return J.getInterceptor$x(receiver).isFile$0(receiver);
- },
- join$0$ax: function(receiver) {
- return J.getInterceptor$ax(receiver).join$0(receiver);
- },
- join$1$ax: function(receiver, a0) {
- return J.getInterceptor$ax(receiver).join$1(receiver, a0);
- },
- map$1$ax: function(receiver, a0) {
- return J.getInterceptor$ax(receiver).map$1(receiver, a0);
- },
- map$1$1$ax: function(receiver, a0, $T1) {
- return J.getInterceptor$ax(receiver).map$1$1(receiver, a0, $T1);
- },
- matchAsPrefix$2$s: function(receiver, a0, a1) {
- return J.getInterceptor$s(receiver).matchAsPrefix$2(receiver, a0, a1);
- },
- mkdirSync$1$x: function(receiver, a0) {
- return J.getInterceptor$x(receiver).mkdirSync$1(receiver, a0);
- },
- noSuchMethod$1$: function(receiver, a0) {
- return J.getInterceptor$(receiver).noSuchMethod$1(receiver, a0);
- },
- on$2$x: function(receiver, a0, a1) {
- return J.getInterceptor$x(receiver).on$2(receiver, a0, a1);
- },
- padRight$1$s: function(receiver, a0) {
- return J.getInterceptor$s(receiver).padRight$1(receiver, a0);
- },
- readFileSync$2$x: function(receiver, a0, a1) {
- return J.getInterceptor$x(receiver).readFileSync$2(receiver, a0, a1);
- },
- readdirSync$1$x: function(receiver, a0) {
- return J.getInterceptor$x(receiver).readdirSync$1(receiver, a0);
- },
- remove$1$ax: function(receiver, a0) {
- return J.getInterceptor$ax(receiver).remove$1(receiver, a0);
- },
- replaceRange$3$asx: function(receiver, a0, a1, a2) {
- return J.getInterceptor$asx(receiver).replaceRange$3(receiver, a0, a1, a2);
- },
- round$0$n: function(receiver) {
- return J.getInterceptor$n(receiver).round$0(receiver);
- },
- run$0$x: function(receiver) {
- return J.getInterceptor$x(receiver).run$0(receiver);
- },
- run$1$x: function(receiver, a0) {
- return J.getInterceptor$x(receiver).run$1(receiver, a0);
- },
- setPrompt$1$x: function(receiver, a0) {
- return J.getInterceptor$x(receiver).setPrompt$1(receiver, a0);
- },
- setRange$4$ax: function(receiver, a0, a1, a2, a3) {
- return J.getInterceptor$ax(receiver).setRange$4(receiver, a0, a1, a2, a3);
- },
- skip$1$ax: function(receiver, a0) {
- return J.getInterceptor$ax(receiver).skip$1(receiver, a0);
- },
- sort$1$ax: function(receiver, a0) {
- return J.getInterceptor$ax(receiver).sort$1(receiver, a0);
- },
- startsWith$1$s: function(receiver, a0) {
- return J.getInterceptor$s(receiver).startsWith$1(receiver, a0);
- },
- startsWith$2$s: function(receiver, a0, a1) {
- return J.getInterceptor$s(receiver).startsWith$2(receiver, a0, a1);
- },
- statSync$1$x: function(receiver, a0) {
- return J.getInterceptor$x(receiver).statSync$1(receiver, a0);
- },
- substring$1$s: function(receiver, a0) {
- return J.getInterceptor$s(receiver).substring$1(receiver, a0);
- },
- substring$2$s: function(receiver, a0, a1) {
- return J.getInterceptor$s(receiver).substring$2(receiver, a0, a1);
- },
- take$1$ax: function(receiver, a0) {
- return J.getInterceptor$ax(receiver).take$1(receiver, a0);
- },
- toList$0$ax: function(receiver) {
- return J.getInterceptor$ax(receiver).toList$0(receiver);
- },
- toList$1$growable$ax: function(receiver, a0) {
- return J.getInterceptor$ax(receiver).toList$1$growable(receiver, a0);
- },
- toRadixString$1$n: function(receiver, a0) {
- return J.getInterceptor$n(receiver).toRadixString$1(receiver, a0);
- },
- toSet$0$ax: function(receiver) {
- return J.getInterceptor$ax(receiver).toSet$0(receiver);
- },
- toString$0$: function(receiver) {
- return J.getInterceptor$(receiver).toString$0(receiver);
- },
- toString$1$color$: function(receiver, a0) {
- return J.getInterceptor$(receiver).toString$1$color(receiver, a0);
- },
- trim$0$s: function(receiver) {
- return J.getInterceptor$s(receiver).trim$0(receiver);
- },
- unlinkSync$1$x: function(receiver, a0) {
- return J.getInterceptor$x(receiver).unlinkSync$1(receiver, a0);
- },
- watch$2$x: function(receiver, a0, a1) {
- return J.getInterceptor$x(receiver).watch$2(receiver, a0, a1);
- },
- where$1$ax: function(receiver, a0) {
- return J.getInterceptor$ax(receiver).where$1(receiver, a0);
- },
- write$1$x: function(receiver, a0) {
- return J.getInterceptor$x(receiver).write$1(receiver, a0);
- },
- writeFileSync$2$x: function(receiver, a0, a1) {
- return J.getInterceptor$x(receiver).writeFileSync$2(receiver, a0, a1);
- },
- yield$0$x: function(receiver) {
- return J.getInterceptor$x(receiver).yield$0(receiver);
- },
- Interceptor: function Interceptor() {
- },
- JSBool: function JSBool() {
- },
- JSNull: function JSNull() {
- },
- JavaScriptObject: function JavaScriptObject() {
- },
- PlainJavaScriptObject: function PlainJavaScriptObject() {
- },
- UnknownJavaScriptObject: function UnknownJavaScriptObject() {
- },
- JavaScriptFunction: function JavaScriptFunction() {
- },
- JSArray: function JSArray(t0) {
- this.$ti = t0;
- },
- JSUnmodifiableArray: function JSUnmodifiableArray(t0) {
- this.$ti = t0;
- },
- ArrayIterator: function ArrayIterator(t0, t1) {
- var _ = this;
- _._iterable = t0;
- _._length = t1;
- _._index = 0;
- _._current = null;
- },
- JSNumber: function JSNumber() {
- },
- JSInt: function JSInt() {
- },
- JSDouble: function JSDouble() {
- },
- JSString: function JSString() {
- }
- },
- P = {
- _AsyncRun__initializeScheduleImmediate: function() {
- var div, span, t1 = {};
- if (self.scheduleImmediate != null)
- return P.async__AsyncRun__scheduleImmediateJsOverride$closure();
- if (self.MutationObserver != null && self.document != null) {
- div = self.document.createElement("div");
- span = self.document.createElement("span");
- t1.storedCallback = null;
- new self.MutationObserver(H.convertDartClosureToJS(new P._AsyncRun__initializeScheduleImmediate_internalCallback(t1), 1)).observe(div, {childList: true});
- return new P._AsyncRun__initializeScheduleImmediate_closure(t1, div, span);
- } else if (self.setImmediate != null)
- return P.async__AsyncRun__scheduleImmediateWithSetImmediate$closure();
- return P.async__AsyncRun__scheduleImmediateWithTimer$closure();
- },
- _AsyncRun__scheduleImmediateJsOverride: function(callback) {
- self.scheduleImmediate(H.convertDartClosureToJS(new P._AsyncRun__scheduleImmediateJsOverride_internalCallback(callback), 0));
- },
- _AsyncRun__scheduleImmediateWithSetImmediate: function(callback) {
- self.setImmediate(H.convertDartClosureToJS(new P._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback(callback), 0));
- },
- _AsyncRun__scheduleImmediateWithTimer: function(callback) {
- P.Timer__createTimer(C.Duration_0, callback);
- },
- Timer__createTimer: function(duration, callback) {
- var milliseconds = C.JSInt_methods._tdivFast$1(duration._duration, 1000);
- return P._TimerImpl$(milliseconds < 0 ? 0 : milliseconds, callback);
- },
- _TimerImpl$: function(milliseconds, callback) {
- var t1 = new P._TimerImpl(true);
- t1._TimerImpl$2(milliseconds, callback);
- return t1;
- },
- _TimerImpl$periodic: function(milliseconds, callback) {
- var t1 = new P._TimerImpl(false);
- t1._TimerImpl$periodic$2(milliseconds, callback);
- return t1;
- },
- _makeAsyncAwaitCompleter: function($T) {
- return new P._AsyncAwaitCompleter(new P._Future($.Zone__current, [$T]), [$T]);
- },
- _asyncStartSync: function(bodyFunction, completer) {
- bodyFunction.call$2(0, null);
- completer.isSync = true;
- return completer._future;
- },
- _asyncAwait: function(object, bodyFunction) {
- P._awaitOnObject(object, bodyFunction);
- },
- _asyncReturn: function(object, completer) {
- completer.complete$1(object);
- },
- _asyncRethrow: function(object, completer) {
- completer.completeError$2(H.unwrapException(object), H.getTraceFromException(object));
- },
- _awaitOnObject: function(object, bodyFunction) {
- var future, _null = null,
- thenCallback = new P._awaitOnObject_closure(bodyFunction),
- errorCallback = new P._awaitOnObject_closure0(bodyFunction),
- t1 = J.getInterceptor$(object);
- if (!!t1.$is_Future)
- object._thenAwait$1$2(thenCallback, errorCallback, _null);
- else if (!!t1.$isFuture)
- object.then$1$2$onError(thenCallback, errorCallback, _null);
- else {
- future = new P._Future($.Zone__current, [null]);
- future._async$_state = 4;
- future._resultOrListeners = object;
- future._thenAwait$1$2(thenCallback, _null, _null);
- }
- },
- _wrapJsFunctionForAsync: function($function) {
- var $protected = function(fn, ERROR) {
- return function(errorCode, result) {
- while (true)
- try {
- fn(errorCode, result);
- break;
- } catch (error) {
- result = error;
- errorCode = ERROR;
- }
- };
- }($function, 1);
- return $.Zone__current.registerBinaryCallback$1(new P._wrapJsFunctionForAsync_closure($protected));
- },
- _asyncStarHelper: function(object, bodyFunctionOrErrorCode, controller) {
- var t1, t2, stream;
- if (bodyFunctionOrErrorCode === 0) {
- t1 = controller.cancelationFuture;
- if (t1 != null)
- t1._completeWithValue$1(null);
- else
- controller.controller.close$0(0);
- return;
- } else if (bodyFunctionOrErrorCode === 1) {
- t1 = controller.cancelationFuture;
- if (t1 != null)
- t1._completeError$2(H.unwrapException(object), H.getTraceFromException(object));
- else {
- t1 = H.unwrapException(object);
- t2 = H.getTraceFromException(object);
- controller.controller.addError$2(t1, t2);
- controller.controller.close$0(0);
- }
- return;
- }
- if (object instanceof P._IterationMarker) {
- if (controller.cancelationFuture != null) {
- bodyFunctionOrErrorCode.call$2(2, null);
- return;
- }
- t1 = object.state;
- if (t1 === 0) {
- t1 = object.value;
- controller.controller.add$1(0, t1);
- P.scheduleMicrotask(new P._asyncStarHelper_closure(controller, bodyFunctionOrErrorCode));
- return;
- } else if (t1 === 1) {
- stream = object.value;
- controller.controller.addStream$2$cancelOnError(stream, false).then$1(new P._asyncStarHelper_closure0(controller, bodyFunctionOrErrorCode));
- return;
- }
- }
- P._awaitOnObject(object, bodyFunctionOrErrorCode);
- },
- _streamOfController: function(controller) {
- var t1 = controller.controller;
- t1.toString;
- return new P._ControllerStream(t1, [H.getTypeArgumentByIndex(t1, 0)]);
- },
- _AsyncStarStreamController$: function(body, $T) {
- var t1 = new P._AsyncStarStreamController([$T]);
- t1._AsyncStarStreamController$1(body, $T);
- return t1;
- },
- _makeAsyncStarStreamController: function(body, $T) {
- return P._AsyncStarStreamController$(body, $T);
- },
- _IterationMarker_yieldStar: function(values) {
- return new P._IterationMarker(values, 1);
- },
- _IterationMarker_endOfIteration: function() {
- return C._IterationMarker_null_2;
- },
- _IterationMarker_yieldSingle: function(value) {
- return new P._IterationMarker(value, 0);
- },
- _IterationMarker_uncaughtError: function(error) {
- return new P._IterationMarker(error, 3);
- },
- _makeSyncStarIterable: function(body, $T) {
- return new P._SyncStarIterable(body, [$T]);
- },
- Future_Future$error: function(error, stackTrace, $T) {
- var t1, replacement;
- if (error == null)
- error = new P.NullThrownError();
- t1 = $.Zone__current;
- if (t1 !== C.C__RootZone) {
- replacement = t1.errorCallback$2(error, stackTrace);
- if (replacement != null) {
- error = replacement.error;
- if (error == null)
- error = new P.NullThrownError();
- stackTrace = replacement.stackTrace;
- }
- }
- t1 = new P._Future($.Zone__current, [$T]);
- t1._asyncCompleteError$2(error, stackTrace);
- return t1;
- },
- Future_wait: function(futures, $T) {
- var handleError, future, pos, e, st, t3, t4, exception, _box_0 = {}, cleanUp = null,
- eagerError = false,
- t1 = [P.List, $T],
- t2 = [t1],
- result = new P._Future($.Zone__current, t2);
- _box_0.values = null;
- _box_0.remaining = 0;
- _box_0.stackTrace = _box_0.error = null;
- handleError = new P.Future_wait_handleError(_box_0, cleanUp, eagerError, result);
- try {
- for (t3 = J.get$iterator$ax(futures), t4 = P.Null; t3.moveNext$0();) {
- future = t3.get$current(t3);
- pos = _box_0.remaining;
- future.then$1$2$onError(new P.Future_wait_closure(_box_0, pos, result, cleanUp, eagerError, $T), handleError, t4);
- ++_box_0.remaining;
- }
- t3 = _box_0.remaining;
- if (t3 === 0) {
- t2 = new P._Future($.Zone__current, t2);
- t2._asyncComplete$1(C.List_empty15);
- return t2;
- }
- t2 = new Array(t3);
- t2.fixed$length = Array;
- _box_0.values = H.setRuntimeTypeInfo(t2, [$T]);
- } catch (exception) {
- e = H.unwrapException(exception);
- st = H.getTraceFromException(exception);
- if (_box_0.remaining === 0 || eagerError)
- return P.Future_Future$error(e, st, t1);
- else {
- _box_0.error = e;
- _box_0.stackTrace = st;
- }
- }
- return result;
- },
- _Future$zoneValue: function(value, _zone, $T) {
- var t1 = new P._Future(_zone, [$T]);
- t1._async$_state = 4;
- t1._resultOrListeners = value;
- return t1;
- },
- _Future__chainForeignFuture: function(source, target) {
- var e, s, exception;
- target._async$_state = 1;
- try {
- source.then$1$2$onError(new P._Future__chainForeignFuture_closure(target), new P._Future__chainForeignFuture_closure0(target), P.Null);
- } catch (exception) {
- e = H.unwrapException(exception);
- s = H.getTraceFromException(exception);
- P.scheduleMicrotask(new P._Future__chainForeignFuture_closure1(target, e, s));
- }
- },
- _Future__chainCoreFuture: function(source, target) {
- var t1, listeners;
- for (; t1 = source._async$_state, t1 === 2;)
- source = source._resultOrListeners;
- if (t1 >= 4) {
- listeners = target._removeListeners$0();
- target._async$_state = source._async$_state;
- target._resultOrListeners = source._resultOrListeners;
- P._Future__propagateToListeners(target, listeners);
- } else {
- listeners = target._resultOrListeners;
- target._async$_state = 2;
- target._resultOrListeners = source;
- source._prependListeners$1(listeners);
- }
- },
- _Future__propagateToListeners: function(source, listeners) {
- var _box_0, hasError, t2, listeners0, sourceResult, t3, zone, oldZone, current, result, _box_1 = {},
- t1 = _box_1.source = source;
- for (; true;) {
- _box_0 = {};
- hasError = t1._async$_state === 8;
- if (listeners == null) {
- if (hasError) {
- t2 = t1._resultOrListeners;
- t1._zone.handleUncaughtError$2(t2.error, t2.stackTrace);
- }
- return;
- }
- for (; listeners0 = listeners._nextListener, listeners0 != null; listeners = listeners0) {
- listeners._nextListener = null;
- P._Future__propagateToListeners(_box_1.source, listeners);
- }
- t1 = _box_1.source;
- sourceResult = t1._resultOrListeners;
- _box_0.listenerHasError = hasError;
- _box_0.listenerValueOrError = sourceResult;
- t2 = !hasError;
- if (t2) {
- t3 = listeners.state;
- t3 = (t3 & 1) !== 0 || (t3 & 15) === 8;
- } else
- t3 = true;
- if (t3) {
- t3 = listeners.result;
- zone = t3._zone;
- if (hasError) {
- t1 = t1._zone;
- t1.toString;
- t1 = !(t1 == zone || t1.get$errorZone() === zone.get$errorZone());
- } else
- t1 = false;
- if (t1) {
- t1 = _box_1.source;
- t2 = t1._resultOrListeners;
- t1._zone.handleUncaughtError$2(t2.error, t2.stackTrace);
- return;
- }
- oldZone = $.Zone__current;
- if (oldZone != zone)
- $.Zone__current = zone;
- else
- oldZone = null;
- t1 = listeners.state;
- if ((t1 & 15) === 8)
- new P._Future__propagateToListeners_handleWhenCompleteCallback(_box_1, _box_0, listeners, hasError).call$0();
- else if (t2) {
- if ((t1 & 1) !== 0)
- new P._Future__propagateToListeners_handleValueCallback(_box_0, listeners, sourceResult).call$0();
- } else if ((t1 & 2) !== 0)
- new P._Future__propagateToListeners_handleError(_box_1, _box_0, listeners).call$0();
- if (oldZone != null)
- $.Zone__current = oldZone;
- t1 = _box_0.listenerValueOrError;
- if (!!J.getInterceptor$(t1).$isFuture) {
- if (t1._async$_state >= 4) {
- current = t3._resultOrListeners;
- t3._resultOrListeners = null;
- listeners = t3._reverseListeners$1(current);
- t3._async$_state = t1._async$_state;
- t3._resultOrListeners = t1._resultOrListeners;
- _box_1.source = t1;
- continue;
- } else
- P._Future__chainCoreFuture(t1, t3);
- return;
- }
- }
- result = listeners.result;
- current = result._resultOrListeners;
- result._resultOrListeners = null;
- listeners = result._reverseListeners$1(current);
- t1 = _box_0.listenerHasError;
- t2 = _box_0.listenerValueOrError;
- if (!t1) {
- result._async$_state = 4;
- result._resultOrListeners = t2;
- } else {
- result._async$_state = 8;
- result._resultOrListeners = t2;
- }
- _box_1.source = result;
- t1 = result;
- }
- },
- _registerErrorHandler: function(errorHandler, zone) {
- if (H.functionTypeTest(errorHandler, {func: 1, args: [P.Object, P.StackTrace]}))
- return zone.registerBinaryCallback$1(errorHandler);
- if (H.functionTypeTest(errorHandler, {func: 1, args: [P.Object]}))
- return zone.registerUnaryCallback$1(errorHandler);
- throw H.wrapException(P.ArgumentError$value(errorHandler, "onError", "Error handler must accept one Object or one Object and a StackTrace as arguments, and return a a valid result"));
- },
- _microtaskLoop: function() {
- var t1, t2;
- for (; t1 = $._nextCallback, t1 != null;) {
- $._lastPriorityCallback = null;
- t2 = t1.next;
- $._nextCallback = t2;
- if (t2 == null)
- $._lastCallback = null;
- t1.callback.call$0();
- }
- },
- _startMicrotaskLoop: function() {
- $._isInCallbackLoop = true;
- try {
- P._microtaskLoop();
- } finally {
- $._lastPriorityCallback = null;
- $._isInCallbackLoop = false;
- if ($._nextCallback != null)
- $.$get$_AsyncRun__scheduleImmediateClosure().call$1(P.async___startMicrotaskLoop$closure());
- }
- },
- _scheduleAsyncCallback: function(callback) {
- var newEntry = new P._AsyncCallbackEntry(callback);
- if ($._nextCallback == null) {
- $._nextCallback = $._lastCallback = newEntry;
- if (!$._isInCallbackLoop)
- $.$get$_AsyncRun__scheduleImmediateClosure().call$1(P.async___startMicrotaskLoop$closure());
- } else
- $._lastCallback = $._lastCallback.next = newEntry;
- },
- _schedulePriorityAsyncCallback: function(callback) {
- var entry, t2,
- t1 = $._nextCallback;
- if (t1 == null) {
- P._scheduleAsyncCallback(callback);
- $._lastPriorityCallback = $._lastCallback;
- return;
- }
- entry = new P._AsyncCallbackEntry(callback);
- t2 = $._lastPriorityCallback;
- if (t2 == null) {
- entry.next = t1;
- $._nextCallback = $._lastPriorityCallback = entry;
- } else {
- entry.next = t2.next;
- $._lastPriorityCallback = t2.next = entry;
- if (entry.next == null)
- $._lastCallback = entry;
- }
- },
- scheduleMicrotask: function(callback) {
- var t1, _null = null,
- currentZone = $.Zone__current;
- if (C.C__RootZone === currentZone) {
- P._rootScheduleMicrotask(_null, _null, C.C__RootZone, callback);
- return;
- }
- if (C.C__RootZone === currentZone.get$_scheduleMicrotask().zone)
- t1 = C.C__RootZone.get$errorZone() === currentZone.get$errorZone();
- else
- t1 = false;
- if (t1) {
- P._rootScheduleMicrotask(_null, _null, currentZone, currentZone.registerCallback$1(callback));
- return;
- }
- t1 = $.Zone__current;
- t1.scheduleMicrotask$1(t1.bindCallbackGuarded$1(callback));
- },
- Stream_Stream$fromFuture: function(future, $T) {
- var _null = null,
- controller = new P._SyncStreamController(_null, _null, _null, _null, [$T]);
- future.then$1$2$onError(new P.Stream_Stream$fromFuture_closure(controller, $T), new P.Stream_Stream$fromFuture_closure0(controller), P.Null);
- return new P._ControllerStream(controller, [$T]);
- },
- StreamIterator_StreamIterator: function(stream) {
- return new P._StreamIterator(stream == null ? H.throwExpression(P.ArgumentError$notNull("stream")) : stream);
- },
- StreamController_StreamController: function(onCancel, onListen, onPause, onResume, sync, $T) {
- return sync ? new P._SyncStreamController(onListen, onPause, onResume, onCancel, [$T]) : new P._AsyncStreamController(onListen, onPause, onResume, onCancel, [$T]);
- },
- _runGuarded: function(notificationHandler) {
- var e, s, exception;
- if (notificationHandler == null)
- return;
- try {
- notificationHandler.call$0();
- } catch (exception) {
- e = H.unwrapException(exception);
- s = H.getTraceFromException(exception);
- $.Zone__current.handleUncaughtError$2(e, s);
- }
- },
- _nullDataHandler: function(value) {
- },
- _nullErrorHandler: function(error, stackTrace) {
- $.Zone__current.handleUncaughtError$2(error, stackTrace);
- },
- _nullDoneHandler: function() {
- },
- _StreamIterator$: function(stream) {
- return new P._StreamIterator(stream == null ? H.throwExpression(P.ArgumentError$notNull("stream")) : stream);
- },
- _addErrorWithReplacement: function(sink, error, stackTrace) {
- var replacement = $.Zone__current.errorCallback$2(error, stackTrace);
- if (replacement != null) {
- error = replacement.error;
- if (error == null)
- error = new P.NullThrownError();
- stackTrace = replacement.stackTrace;
- }
- sink._addError$2(error, stackTrace);
- },
- Timer_Timer: function(duration, callback) {
- var t1 = $.Zone__current;
- if (t1 === C.C__RootZone)
- return t1.createTimer$2(duration, callback);
- return t1.createTimer$2(duration, t1.bindCallbackGuarded$1(callback));
- },
- _parentDelegate: function(zone) {
- if (zone.get$parent() == null)
- return;
- return zone.get$parent().get$_delegate();
- },
- _rootHandleUncaughtError: function($self, $parent, zone, error, stackTrace) {
- var t1 = {};
- t1.error = error;
- P._schedulePriorityAsyncCallback(new P._rootHandleUncaughtError_closure(t1, stackTrace));
- },
- _rootRun: function($self, $parent, zone, f) {
- var old,
- t1 = $.Zone__current;
- if (t1 == zone)
- return f.call$0();
- $.Zone__current = zone;
- old = t1;
- try {
- t1 = f.call$0();
- return t1;
- } finally {
- $.Zone__current = old;
- }
- },
- _rootRunUnary: function($self, $parent, zone, f, arg) {
- var old,
- t1 = $.Zone__current;
- if (t1 == zone)
- return f.call$1(arg);
- $.Zone__current = zone;
- old = t1;
- try {
- t1 = f.call$1(arg);
- return t1;
- } finally {
- $.Zone__current = old;
- }
- },
- _rootRunBinary: function($self, $parent, zone, f, arg1, arg2) {
- var old,
- t1 = $.Zone__current;
- if (t1 == zone)
- return f.call$2(arg1, arg2);
- $.Zone__current = zone;
- old = t1;
- try {
- t1 = f.call$2(arg1, arg2);
- return t1;
- } finally {
- $.Zone__current = old;
- }
- },
- _rootRegisterCallback: function($self, $parent, zone, f) {
- return f;
- },
- _rootRegisterUnaryCallback: function($self, $parent, zone, f) {
- return f;
- },
- _rootRegisterBinaryCallback: function($self, $parent, zone, f) {
- return f;
- },
- _rootErrorCallback: function($self, $parent, zone, error, stackTrace) {
- return;
- },
- _rootScheduleMicrotask: function($self, $parent, zone, f) {
- var t1 = C.C__RootZone !== zone;
- if (t1)
- f = !(!t1 || C.C__RootZone.get$errorZone() === zone.get$errorZone()) ? zone.bindCallbackGuarded$1(f) : zone.bindCallback$1(f);
- P._scheduleAsyncCallback(f);
- },
- _rootCreateTimer: function($self, $parent, zone, duration, callback) {
- callback = zone.bindCallback$1(callback);
- return P.Timer__createTimer(duration, callback);
- },
- _rootCreatePeriodicTimer: function($self, $parent, zone, duration, callback) {
- var milliseconds;
- callback = zone.bindUnaryCallback$2$1(callback, null, P.Timer);
- milliseconds = C.JSInt_methods._tdivFast$1(duration._duration, 1000);
- return P._TimerImpl$periodic(milliseconds < 0 ? 0 : milliseconds, callback);
- },
- _rootPrint: function($self, $parent, zone, line) {
- H.printString(line);
- },
- _printToZone: function(line) {
- $.Zone__current.print$1(line);
- },
- _rootFork: function($self, $parent, zone, specification, zoneValues) {
- var valueMap, t1, t2;
- $.printToZone = P.async___printToZone$closure();
- if (specification == null)
- specification = C._ZoneSpecification_ALf;
- if (zoneValues == null)
- valueMap = zone.get$_async$_map();
- else
- valueMap = P.HashMap_HashMap$from(zoneValues, null, null);
- t1 = new P._CustomZone(zone, valueMap);
- t2 = zone.get$_run();
- t1._run = t2;
- t2 = zone.get$_runUnary();
- t1._runUnary = t2;
- t2 = zone.get$_runBinary();
- t1._runBinary = t2;
- t2 = zone.get$_registerCallback();
- t1._registerCallback = t2;
- t2 = zone.get$_registerUnaryCallback();
- t1._registerUnaryCallback = t2;
- t2 = zone.get$_registerBinaryCallback();
- t1._registerBinaryCallback = t2;
- t2 = zone.get$_errorCallback();
- t1._errorCallback = t2;
- t2 = zone.get$_scheduleMicrotask();
- t1._scheduleMicrotask = t2;
- t2 = zone.get$_createTimer();
- t1._createTimer = t2;
- t2 = zone.get$_createPeriodicTimer();
- t1._createPeriodicTimer = t2;
- t2 = zone.get$_print();
- t1._print = t2;
- t2 = zone.get$_fork();
- t1._fork = t2;
- t2 = specification.handleUncaughtError;
- t1._handleUncaughtError = t2 != null ? new P._ZoneFunction(t1, t2) : zone.get$_handleUncaughtError();
- return t1;
- },
- runZoned: function(body, zoneValues) {
- var zoneSpecification = null,
- t1 = P._runZoned(body, zoneValues, zoneSpecification);
- return t1;
- },
- _runZoned: function(body, zoneValues, specification) {
- return $.Zone__current.fork$2$specification$zoneValues(specification, zoneValues).run$1(0, body);
- },
- _AsyncRun__initializeScheduleImmediate_internalCallback: function _AsyncRun__initializeScheduleImmediate_internalCallback(t0) {
- this._box_0 = t0;
- },
- _AsyncRun__initializeScheduleImmediate_closure: function _AsyncRun__initializeScheduleImmediate_closure(t0, t1, t2) {
- this._box_0 = t0;
- this.div = t1;
- this.span = t2;
- },
- _AsyncRun__scheduleImmediateJsOverride_internalCallback: function _AsyncRun__scheduleImmediateJsOverride_internalCallback(t0) {
- this.callback = t0;
- },
- _AsyncRun__scheduleImmediateWithSetImmediate_internalCallback: function _AsyncRun__scheduleImmediateWithSetImmediate_internalCallback(t0) {
- this.callback = t0;
- },
- _TimerImpl: function _TimerImpl(t0) {
- this._once = t0;
- this._handle = null;
- this._tick = 0;
- },
- _TimerImpl_internalCallback: function _TimerImpl_internalCallback(t0, t1) {
- this.$this = t0;
- this.callback = t1;
- },
- _TimerImpl$periodic_closure: function _TimerImpl$periodic_closure(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.milliseconds = t1;
- _.start = t2;
- _.callback = t3;
- },
- _AsyncAwaitCompleter: function _AsyncAwaitCompleter(t0, t1) {
- this._future = t0;
- this.isSync = false;
- this.$ti = t1;
- },
- _awaitOnObject_closure: function _awaitOnObject_closure(t0) {
- this.bodyFunction = t0;
- },
- _awaitOnObject_closure0: function _awaitOnObject_closure0(t0) {
- this.bodyFunction = t0;
- },
- _wrapJsFunctionForAsync_closure: function _wrapJsFunctionForAsync_closure(t0) {
- this.$protected = t0;
- },
- _asyncStarHelper_closure: function _asyncStarHelper_closure(t0, t1) {
- this.controller = t0;
- this.bodyFunctionOrErrorCode = t1;
- },
- _asyncStarHelper_closure0: function _asyncStarHelper_closure0(t0, t1) {
- this.controller = t0;
- this.bodyFunctionOrErrorCode = t1;
- },
- _AsyncStarStreamController: function _AsyncStarStreamController(t0) {
- var _ = this;
- _.controller = null;
- _.isSuspended = false;
- _.cancelationFuture = null;
- _.$ti = t0;
- },
- _AsyncStarStreamController__resumeBody: function _AsyncStarStreamController__resumeBody(t0) {
- this.body = t0;
- },
- _AsyncStarStreamController__resumeBody_closure: function _AsyncStarStreamController__resumeBody_closure(t0) {
- this.body = t0;
- },
- _AsyncStarStreamController_closure0: function _AsyncStarStreamController_closure0(t0) {
- this._resumeBody = t0;
- },
- _AsyncStarStreamController_closure1: function _AsyncStarStreamController_closure1(t0, t1) {
- this.$this = t0;
- this._resumeBody = t1;
- },
- _AsyncStarStreamController_closure: function _AsyncStarStreamController_closure(t0, t1) {
- this.$this = t0;
- this.body = t1;
- },
- _AsyncStarStreamController__closure: function _AsyncStarStreamController__closure(t0) {
- this.body = t0;
- },
- _IterationMarker: function _IterationMarker(t0, t1) {
- this.value = t0;
- this.state = t1;
- },
- _SyncStarIterator: function _SyncStarIterator(t0) {
- var _ = this;
- _._body = t0;
- _._suspendedBodies = _._nestedIterator = _._async$_current = null;
- },
- _SyncStarIterable: function _SyncStarIterable(t0, t1) {
- this._outerHelper = t0;
- this.$ti = t1;
- },
- _BroadcastStream: function _BroadcastStream(t0, t1) {
- this._async$_controller = t0;
- this.$ti = t1;
- },
- _BroadcastSubscription: function _BroadcastSubscription(t0, t1, t2, t3) {
- var _ = this;
- _._eventState = 0;
- _._async$_previous = _._async$_next = null;
- _._async$_controller = t0;
- _._onDone = _._onError = _._onData = null;
- _._zone = t1;
- _._async$_state = t2;
- _._pending = _._cancelFuture = null;
- _.$ti = t3;
- },
- _BroadcastStreamController: function _BroadcastStreamController() {
- },
- _SyncBroadcastStreamController: function _SyncBroadcastStreamController(t0, t1, t2) {
- var _ = this;
- _.onListen = t0;
- _.onCancel = t1;
- _._async$_state = 0;
- _._doneFuture = _._addStreamState = _._lastSubscription = _._firstSubscription = null;
- _.$ti = t2;
- },
- _SyncBroadcastStreamController__sendData_closure: function _SyncBroadcastStreamController__sendData_closure(t0) {
- this.data = t0;
- },
- _SyncBroadcastStreamController__sendError_closure: function _SyncBroadcastStreamController__sendError_closure(t0, t1) {
- this.error = t0;
- this.stackTrace = t1;
- },
- _SyncBroadcastStreamController__sendDone_closure: function _SyncBroadcastStreamController__sendDone_closure() {
- },
- Future: function Future() {
- },
- Future_wait_handleError: function Future_wait_handleError(t0, t1, t2, t3) {
- var _ = this;
- _._box_0 = t0;
- _.cleanUp = t1;
- _.eagerError = t2;
- _.result = t3;
- },
- Future_wait_closure: function Future_wait_closure(t0, t1, t2, t3, t4, t5) {
- var _ = this;
- _._box_0 = t0;
- _.pos = t1;
- _.result = t2;
- _.cleanUp = t3;
- _.eagerError = t4;
- _.T = t5;
- },
- _Completer: function _Completer() {
- },
- _AsyncCompleter: function _AsyncCompleter(t0, t1) {
- this.future = t0;
- this.$ti = t1;
- },
- _FutureListener: function _FutureListener(t0, t1, t2, t3) {
- var _ = this;
- _._nextListener = null;
- _.result = t0;
- _.state = t1;
- _.callback = t2;
- _.errorCallback = t3;
- },
- _Future: function _Future(t0, t1) {
- var _ = this;
- _._async$_state = 0;
- _._zone = t0;
- _._resultOrListeners = null;
- _.$ti = t1;
- },
- _Future__addListener_closure: function _Future__addListener_closure(t0, t1) {
- this.$this = t0;
- this.listener = t1;
- },
- _Future__prependListeners_closure: function _Future__prependListeners_closure(t0, t1) {
- this._box_0 = t0;
- this.$this = t1;
- },
- _Future__chainForeignFuture_closure: function _Future__chainForeignFuture_closure(t0) {
- this.target = t0;
- },
- _Future__chainForeignFuture_closure0: function _Future__chainForeignFuture_closure0(t0) {
- this.target = t0;
- },
- _Future__chainForeignFuture_closure1: function _Future__chainForeignFuture_closure1(t0, t1, t2) {
- this.target = t0;
- this.e = t1;
- this.s = t2;
- },
- _Future__asyncComplete_closure: function _Future__asyncComplete_closure(t0, t1) {
- this.$this = t0;
- this.value = t1;
- },
- _Future__chainFuture_closure: function _Future__chainFuture_closure(t0, t1) {
- this.$this = t0;
- this.value = t1;
- },
- _Future__asyncCompleteError_closure: function _Future__asyncCompleteError_closure(t0, t1, t2) {
- this.$this = t0;
- this.error = t1;
- this.stackTrace = t2;
- },
- _Future__propagateToListeners_handleWhenCompleteCallback: function _Future__propagateToListeners_handleWhenCompleteCallback(t0, t1, t2, t3) {
- var _ = this;
- _._box_1 = t0;
- _._box_0 = t1;
- _.listener = t2;
- _.hasError = t3;
- },
- _Future__propagateToListeners_handleWhenCompleteCallback_closure: function _Future__propagateToListeners_handleWhenCompleteCallback_closure(t0) {
- this.originalSource = t0;
- },
- _Future__propagateToListeners_handleValueCallback: function _Future__propagateToListeners_handleValueCallback(t0, t1, t2) {
- this._box_0 = t0;
- this.listener = t1;
- this.sourceResult = t2;
- },
- _Future__propagateToListeners_handleError: function _Future__propagateToListeners_handleError(t0, t1, t2) {
- this._box_1 = t0;
- this._box_0 = t1;
- this.listener = t2;
- },
- _AsyncCallbackEntry: function _AsyncCallbackEntry(t0) {
- this.callback = t0;
- this.next = null;
- },
- Stream: function Stream() {
- },
- Stream_Stream$fromFuture_closure: function Stream_Stream$fromFuture_closure(t0, t1) {
- this.controller = t0;
- this.T = t1;
- },
- Stream_Stream$fromFuture_closure0: function Stream_Stream$fromFuture_closure0(t0) {
- this.controller = t0;
- },
- Stream_length_closure: function Stream_length_closure(t0, t1) {
- this._box_0 = t0;
- this.$this = t1;
- },
- Stream_length_closure0: function Stream_length_closure0(t0, t1) {
- this._box_0 = t0;
- this.future = t1;
- },
- StreamSubscription: function StreamSubscription() {
- },
- EventSink: function EventSink() {
- },
- StreamTransformerBase: function StreamTransformerBase() {
- },
- _StreamController: function _StreamController() {
- },
- _StreamController__subscribe_closure: function _StreamController__subscribe_closure(t0) {
- this.$this = t0;
- },
- _StreamController__recordCancel_complete: function _StreamController__recordCancel_complete(t0) {
- this.$this = t0;
- },
- _SyncStreamControllerDispatch: function _SyncStreamControllerDispatch() {
- },
- _AsyncStreamControllerDispatch: function _AsyncStreamControllerDispatch() {
- },
- _AsyncStreamController: function _AsyncStreamController(t0, t1, t2, t3, t4) {
- var _ = this;
- _._varData = null;
- _._async$_state = 0;
- _._doneFuture = null;
- _.onListen = t0;
- _.onPause = t1;
- _.onResume = t2;
- _.onCancel = t3;
- _.$ti = t4;
- },
- _SyncStreamController: function _SyncStreamController(t0, t1, t2, t3, t4) {
- var _ = this;
- _._varData = null;
- _._async$_state = 0;
- _._doneFuture = null;
- _.onListen = t0;
- _.onPause = t1;
- _.onResume = t2;
- _.onCancel = t3;
- _.$ti = t4;
- },
- _ControllerStream: function _ControllerStream(t0, t1) {
- this._async$_controller = t0;
- this.$ti = t1;
- },
- _ControllerSubscription: function _ControllerSubscription(t0, t1, t2, t3) {
- var _ = this;
- _._async$_controller = t0;
- _._onDone = _._onError = _._onData = null;
- _._zone = t1;
- _._async$_state = t2;
- _._pending = _._cancelFuture = null;
- _.$ti = t3;
- },
- _AddStreamState: function _AddStreamState() {
- },
- _AddStreamState_cancel_closure: function _AddStreamState_cancel_closure(t0) {
- this.$this = t0;
- },
- _StreamControllerAddStreamState: function _StreamControllerAddStreamState(t0, t1, t2) {
- this.varData = t0;
- this.addStreamFuture = t1;
- this.addSubscription = t2;
- },
- _BufferingStreamSubscription: function _BufferingStreamSubscription() {
- },
- _BufferingStreamSubscription__sendError_sendError: function _BufferingStreamSubscription__sendError_sendError(t0, t1, t2) {
- this.$this = t0;
- this.error = t1;
- this.stackTrace = t2;
- },
- _BufferingStreamSubscription__sendDone_sendDone: function _BufferingStreamSubscription__sendDone_sendDone(t0) {
- this.$this = t0;
- },
- _StreamImpl: function _StreamImpl() {
- },
- _DelayedEvent: function _DelayedEvent() {
- },
- _DelayedData: function _DelayedData(t0) {
- this.value = t0;
- this.next = null;
- },
- _DelayedError: function _DelayedError(t0, t1) {
- this.error = t0;
- this.stackTrace = t1;
- this.next = null;
- },
- _DelayedDone: function _DelayedDone() {
- },
- _PendingEvents: function _PendingEvents() {
- },
- _PendingEvents_schedule_closure: function _PendingEvents_schedule_closure(t0, t1) {
- this.$this = t0;
- this.dispatch = t1;
- },
- _StreamImplEvents: function _StreamImplEvents() {
- this.lastPendingEvent = this.firstPendingEvent = null;
- this._async$_state = 0;
- },
- _DoneStreamSubscription: function _DoneStreamSubscription(t0, t1, t2) {
- var _ = this;
- _._zone = t0;
- _._async$_state = 0;
- _._onDone = t1;
- _.$ti = t2;
- },
- _StreamIterator: function _StreamIterator(t0) {
- this._subscription = null;
- this._stateData = t0;
- this._isPaused = false;
- },
- _ForwardingStream: function _ForwardingStream() {
- },
- _ForwardingStreamSubscription: function _ForwardingStreamSubscription(t0, t1, t2, t3) {
- var _ = this;
- _._stream = t0;
- _._onDone = _._onError = _._onData = _._subscription = null;
- _._zone = t1;
- _._async$_state = t2;
- _._pending = _._cancelFuture = null;
- _.$ti = t3;
- },
- _ExpandStream: function _ExpandStream(t0, t1, t2) {
- this._expand = t0;
- this._async$_source = t1;
- this.$ti = t2;
- },
- Timer: function Timer() {
- },
- AsyncError: function AsyncError(t0, t1) {
- this.error = t0;
- this.stackTrace = t1;
- },
- _ZoneFunction: function _ZoneFunction(t0, t1) {
- this.zone = t0;
- this.$function = t1;
- },
- ZoneSpecification: function ZoneSpecification() {
- },
- _ZoneSpecification: function _ZoneSpecification(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) {
- var _ = this;
- _.handleUncaughtError = t0;
- _.run = t1;
- _.runUnary = t2;
- _.runBinary = t3;
- _.registerCallback = t4;
- _.registerUnaryCallback = t5;
- _.registerBinaryCallback = t6;
- _.errorCallback = t7;
- _.scheduleMicrotask = t8;
- _.createTimer = t9;
- _.createPeriodicTimer = t10;
- _.print = t11;
- _.fork = t12;
- },
- ZoneDelegate: function ZoneDelegate() {
- },
- Zone: function Zone() {
- },
- _ZoneDelegate: function _ZoneDelegate(t0) {
- this._delegationTarget = t0;
- },
- _Zone: function _Zone() {
- },
- _CustomZone: function _CustomZone(t0, t1) {
- var _ = this;
- _._delegateCache = _._handleUncaughtError = _._fork = _._print = _._createPeriodicTimer = _._createTimer = _._scheduleMicrotask = _._errorCallback = _._registerBinaryCallback = _._registerUnaryCallback = _._registerCallback = _._runBinary = _._runUnary = _._run = null;
- _.parent = t0;
- _._async$_map = t1;
- },
- _CustomZone_bindCallback_closure: function _CustomZone_bindCallback_closure(t0, t1) {
- this.$this = t0;
- this.registered = t1;
- },
- _CustomZone_bindUnaryCallback_closure: function _CustomZone_bindUnaryCallback_closure(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.registered = t1;
- _.T = t2;
- _.R = t3;
- },
- _CustomZone_bindCallbackGuarded_closure: function _CustomZone_bindCallbackGuarded_closure(t0, t1) {
- this.$this = t0;
- this.registered = t1;
- },
- _rootHandleUncaughtError_closure: function _rootHandleUncaughtError_closure(t0, t1) {
- this._box_0 = t0;
- this.stackTrace = t1;
- },
- _RootZone: function _RootZone() {
- },
- _RootZone_bindCallback_closure: function _RootZone_bindCallback_closure(t0, t1) {
- this.$this = t0;
- this.f = t1;
- },
- _RootZone_bindCallbackGuarded_closure: function _RootZone_bindCallbackGuarded_closure(t0, t1) {
- this.$this = t0;
- this.f = t1;
- },
- HashMap_HashMap: function($K, $V) {
- return new P._HashMap([$K, $V]);
- },
- _HashMap__getTableEntry: function(table, key) {
- var entry = table[key];
- return entry === table ? null : entry;
- },
- _HashMap__setTableEntry: function(table, key, value) {
- if (value == null)
- table[key] = table;
- else
- table[key] = value;
- },
- _HashMap__newHashTable: function() {
- var table = Object.create(null);
- P._HashMap__setTableEntry(table, "<non-identifier-key>", table);
- delete table["<non-identifier-key>"];
- return table;
- },
- LinkedHashMap_LinkedHashMap: function(equals, hashCode, isValidKey, $K, $V) {
- if (isValidKey == null)
- if (hashCode == null) {
- if (equals == null)
- return new H.JsLinkedHashMap([$K, $V]);
- hashCode = P.collection___defaultHashCode$closure();
- } else {
- if (P.core__identityHashCode$closure() === hashCode && P.core__identical$closure() === equals)
- return P._LinkedIdentityHashMap__LinkedIdentityHashMap$es6($K, $V);
- if (equals == null)
- equals = P.collection___defaultEquals$closure();
- }
- else {
- if (hashCode == null)
- hashCode = P.collection___defaultHashCode$closure();
- if (equals == null)
- equals = P.collection___defaultEquals$closure();
- }
- return P._LinkedCustomHashMap$(equals, hashCode, isValidKey, $K, $V);
- },
- LinkedHashMap_LinkedHashMap$_literal: function(keyValuePairs, $K, $V) {
- return H.fillLiteralMap(keyValuePairs, new H.JsLinkedHashMap([$K, $V]));
- },
- LinkedHashMap_LinkedHashMap$_empty: function($K, $V) {
- return new H.JsLinkedHashMap([$K, $V]);
- },
- LinkedHashMap__makeLiteral: function(keyValuePairs) {
- return H.fillLiteralMap(keyValuePairs, new H.JsLinkedHashMap([null, null]));
- },
- _LinkedIdentityHashMap__LinkedIdentityHashMap$es6: function($K, $V) {
- return new P._LinkedIdentityHashMap([$K, $V]);
- },
- _LinkedCustomHashMap$: function(_equals, _hashCode, validKey, $K, $V) {
- var t1 = validKey != null ? validKey : new P._LinkedCustomHashMap_closure($K);
- return new P._LinkedCustomHashMap(_equals, _hashCode, t1, [$K, $V]);
- },
- LinkedHashSet_LinkedHashSet: function($E) {
- return new P._LinkedHashSet([$E]);
- },
- LinkedHashSet_LinkedHashSet$_empty: function($E) {
- return new P._LinkedHashSet([$E]);
- },
- LinkedHashSet_LinkedHashSet$_literal: function(values, $E) {
- return H.fillLiteralSet(values, new P._LinkedHashSet([$E]));
- },
- _LinkedHashSet__newHashTable: function() {
- var table = Object.create(null);
- table["<non-identifier-key>"] = table;
- delete table["<non-identifier-key>"];
- return table;
- },
- _LinkedHashSetIterator$: function(_set, _modifications) {
- var t1 = new P._LinkedHashSetIterator(_set, _modifications);
- t1._collection$_cell = _set._collection$_first;
- return t1;
- },
- UnmodifiableListView$: function(source, $E) {
- return new P.UnmodifiableListView(source, [$E]);
- },
- _defaultEquals: function(a, b) {
- return J.$eq$(a, b);
- },
- _defaultHashCode: function(a) {
- return J.get$hashCode$(a);
- },
- HashMap_HashMap$from: function(other, $K, $V) {
- var result = P.HashMap_HashMap($K, $V);
- other.forEach$1(0, new P.HashMap_HashMap$from_closure(result));
- return result;
- },
- IterableBase_iterableToShortString: function(iterable, leftDelimiter, rightDelimiter) {
- var parts, t1;
- if (P._isToStringVisiting(iterable)) {
- if (leftDelimiter === "(" && rightDelimiter === ")")
- return "(...)";
- return leftDelimiter + "..." + rightDelimiter;
- }
- parts = H.setRuntimeTypeInfo([], [P.String]);
- $._toStringVisiting.push(iterable);
- try {
- P._iterablePartsToStrings(iterable, parts);
- } finally {
- $._toStringVisiting.pop();
- }
- t1 = P.StringBuffer__writeAll(leftDelimiter, parts, ", ") + rightDelimiter;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- IterableBase_iterableToFullString: function(iterable, leftDelimiter, rightDelimiter) {
- var buffer, t1;
- if (P._isToStringVisiting(iterable))
- return leftDelimiter + "..." + rightDelimiter;
- buffer = new P.StringBuffer(leftDelimiter);
- $._toStringVisiting.push(iterable);
- try {
- t1 = buffer;
- t1._contents = P.StringBuffer__writeAll(t1._contents, iterable, ", ");
- } finally {
- $._toStringVisiting.pop();
- }
- buffer._contents += rightDelimiter;
- t1 = buffer._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- _isToStringVisiting: function(o) {
- var t1, i;
- for (t1 = $._toStringVisiting.length, i = 0; i < t1; ++i)
- if (o === $._toStringVisiting[i])
- return true;
- return false;
- },
- _iterablePartsToStrings: function(iterable, parts) {
- var next, ultimateString, penultimateString, penultimate, ultimate, ultimate0, elision,
- it = iterable.get$iterator(iterable),
- $length = 0, count = 0;
- while (true) {
- if (!($length < 80 || count < 3))
- break;
- if (!it.moveNext$0())
- return;
- next = H.S(it.get$current(it));
- parts.push(next);
- $length += next.length + 2;
- ++count;
- }
- if (!it.moveNext$0()) {
- if (count <= 5)
- return;
- ultimateString = parts.pop();
- penultimateString = parts.pop();
- } else {
- penultimate = it.get$current(it);
- ++count;
- if (!it.moveNext$0()) {
- if (count <= 4) {
- parts.push(H.S(penultimate));
- return;
- }
- ultimateString = H.S(penultimate);
- penultimateString = parts.pop();
- $length += ultimateString.length + 2;
- } else {
- ultimate = it.get$current(it);
- ++count;
- for (; it.moveNext$0(); penultimate = ultimate, ultimate = ultimate0) {
- ultimate0 = it.get$current(it);
- ++count;
- if (count > 100) {
- while (true) {
- if (!($length > 75 && count > 3))
- break;
- $length -= parts.pop().length + 2;
- --count;
- }
- parts.push("...");
- return;
- }
- }
- penultimateString = H.S(penultimate);
- ultimateString = H.S(ultimate);
- $length += ultimateString.length + penultimateString.length + 4;
- }
- }
- if (count > parts.length + 2) {
- $length += 5;
- elision = "...";
- } else
- elision = null;
- while (true) {
- if (!($length > 80 && parts.length > 3))
- break;
- $length -= parts.pop().length + 2;
- if (elision == null) {
- $length += 5;
- elision = "...";
- }
- }
- if (elision != null)
- parts.push(elision);
- parts.push(penultimateString);
- parts.push(ultimateString);
- },
- LinkedHashMap_LinkedHashMap$from: function(other, $K, $V) {
- var result = P.LinkedHashMap_LinkedHashMap(null, null, null, $K, $V);
- other.forEach$1(0, new P.LinkedHashMap_LinkedHashMap$from_closure(result));
- return result;
- },
- LinkedHashMap_LinkedHashMap$of: function(other, $K, $V) {
- var t1 = P.LinkedHashMap_LinkedHashMap(null, null, null, $K, $V);
- t1.addAll$1(0, other);
- return t1;
- },
- LinkedHashSet_LinkedHashSet$from: function(elements, $E) {
- var t1,
- result = P.LinkedHashSet_LinkedHashSet($E);
- for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();)
- result.add$1(0, t1.get$current(t1));
- return result;
- },
- LinkedHashSet_LinkedHashSet$of: function(elements, $E) {
- var t1 = P.LinkedHashSet_LinkedHashSet($E);
- t1.addAll$1(0, elements);
- return t1;
- },
- ListMixin__compareAny: function(a, b) {
- return J.compareTo$1$ns(a, b);
- },
- MapBase_mapToString: function(m) {
- var result, t1 = {};
- if (P._isToStringVisiting(m))
- return "{...}";
- result = new P.StringBuffer("");
- try {
- $._toStringVisiting.push(m);
- result._contents += "{";
- t1.first = true;
- m.forEach$1(0, new P.MapBase_mapToString_closure(t1, result));
- result._contents += "}";
- } finally {
- $._toStringVisiting.pop();
- }
- t1 = result._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- MapBase__id: function(x) {
- return x;
- },
- MapBase__fillMapWithMappedIterable: function(map, iterable, key, value) {
- var t1, _i, element;
- for (t1 = iterable.length, _i = 0; _i < t1; ++_i) {
- element = iterable[_i];
- map.$indexSet(0, P.MapBase__id(element), value.call$1(element));
- }
- },
- MapBase__fillMapWithIterables: function(map, keys, values) {
- var keyIterator = keys.get$iterator(keys),
- valueIterator = values.get$iterator(values),
- hasNextKey = keyIterator.moveNext$0(),
- hasNextValue = valueIterator.moveNext$0();
- while (true) {
- if (!(hasNextKey && hasNextValue))
- break;
- map.$indexSet(0, keyIterator.get$current(keyIterator), valueIterator.get$current(valueIterator));
- hasNextKey = keyIterator.moveNext$0();
- hasNextValue = valueIterator.moveNext$0();
- }
- if (hasNextKey || hasNextValue)
- throw H.wrapException(P.ArgumentError$("Iterables do not have same length."));
- },
- ListQueue$: function($E) {
- var t1 = new P.ListQueue([$E]),
- t2 = new Array(8);
- t2.fixed$length = Array;
- t1._collection$_table = H.setRuntimeTypeInfo(t2, [$E]);
- return t1;
- },
- ListQueue_ListQueue$of: function(elements, $E) {
- var t1 = P.ListQueue$($E);
- t1.addAll$1(0, elements);
- return t1;
- },
- ListQueue__nextPowerOf2: function(number) {
- var nextNumber;
- number = (number << 1 >>> 0) - 1;
- for (; true; number = nextNumber) {
- nextNumber = (number & number - 1) >>> 0;
- if (nextNumber === 0)
- return number;
- }
- },
- _ListQueueIterator$: function(queue) {
- return new P._ListQueueIterator(queue, queue._collection$_tail, queue._modificationCount, queue._collection$_head);
- },
- _HashMap: function _HashMap(t0) {
- var _ = this;
- _._collection$_length = 0;
- _._collection$_keys = _._collection$_rest = _._collection$_nums = _._collection$_strings = null;
- _.$ti = t0;
- },
- _HashMap_values_closure: function _HashMap_values_closure(t0) {
- this.$this = t0;
- },
- _HashMap_addAll_closure: function _HashMap_addAll_closure(t0) {
- this.$this = t0;
- },
- _HashMapKeyIterable: function _HashMapKeyIterable(t0, t1) {
- this._collection$_map = t0;
- this.$ti = t1;
- },
- _HashMapKeyIterator: function _HashMapKeyIterator(t0, t1) {
- var _ = this;
- _._collection$_map = t0;
- _._collection$_keys = t1;
- _._offset = 0;
- _._collection$_current = null;
- },
- _LinkedIdentityHashMap: function _LinkedIdentityHashMap(t0) {
- var _ = this;
- _.__js_helper$_length = 0;
- _._last = _._first = _._rest = _._nums = _._strings = null;
- _._modifications = 0;
- _.$ti = t0;
- },
- _LinkedCustomHashMap: function _LinkedCustomHashMap(t0, t1, t2, t3) {
- var _ = this;
- _._equals = t0;
- _._collection$_hashCode = t1;
- _._validKey = t2;
- _.__js_helper$_length = 0;
- _._last = _._first = _._rest = _._nums = _._strings = null;
- _._modifications = 0;
- _.$ti = t3;
- },
- _LinkedCustomHashMap_closure: function _LinkedCustomHashMap_closure(t0) {
- this.K = t0;
- },
- _LinkedHashSet: function _LinkedHashSet(t0) {
- var _ = this;
- _._collection$_length = 0;
- _._collection$_last = _._collection$_first = _._collection$_rest = _._collection$_nums = _._collection$_strings = null;
- _._collection$_modifications = 0;
- _.$ti = t0;
- },
- _LinkedIdentityHashSet: function _LinkedIdentityHashSet(t0) {
- var _ = this;
- _._collection$_length = 0;
- _._collection$_last = _._collection$_first = _._collection$_rest = _._collection$_nums = _._collection$_strings = null;
- _._collection$_modifications = 0;
- _.$ti = t0;
- },
- _LinkedHashSetCell: function _LinkedHashSetCell(t0) {
- this._element = t0;
- this._collection$_previous = this._collection$_next = null;
- },
- _LinkedHashSetIterator: function _LinkedHashSetIterator(t0, t1) {
- var _ = this;
- _._set = t0;
- _._collection$_modifications = t1;
- _._collection$_current = _._collection$_cell = null;
- },
- UnmodifiableListView: function UnmodifiableListView(t0, t1) {
- this._collection$_source = t0;
- this.$ti = t1;
- },
- HashMap_HashMap$from_closure: function HashMap_HashMap$from_closure(t0) {
- this.result = t0;
- },
- IterableBase: function IterableBase() {
- },
- LinkedHashMap_LinkedHashMap$from_closure: function LinkedHashMap_LinkedHashMap$from_closure(t0) {
- this.result = t0;
- },
- ListBase: function ListBase() {
- },
- ListMixin: function ListMixin() {
- },
- MapBase: function MapBase() {
- },
- MapBase_mapToString_closure: function MapBase_mapToString_closure(t0, t1) {
- this._box_0 = t0;
- this.result = t1;
- },
- MapMixin: function MapMixin() {
- },
- MapMixin_entries_closure: function MapMixin_entries_closure(t0) {
- this.$this = t0;
- },
- UnmodifiableMapBase: function UnmodifiableMapBase() {
- },
- _MapBaseValueIterable: function _MapBaseValueIterable(t0, t1) {
- this._collection$_map = t0;
- this.$ti = t1;
- },
- _MapBaseValueIterator: function _MapBaseValueIterator(t0, t1) {
- this._collection$_keys = t0;
- this._collection$_map = t1;
- this._collection$_current = null;
- },
- _UnmodifiableMapMixin: function _UnmodifiableMapMixin() {
- },
- MapView: function MapView() {
- },
- UnmodifiableMapView: function UnmodifiableMapView(t0, t1) {
- this._collection$_map = t0;
- this.$ti = t1;
- },
- Queue: function Queue() {
- },
- ListQueue: function ListQueue(t0) {
- var _ = this;
- _._collection$_table = null;
- _._modificationCount = _._collection$_tail = _._collection$_head = 0;
- _.$ti = t0;
- },
- _ListQueueIterator: function _ListQueueIterator(t0, t1, t2, t3) {
- var _ = this;
- _._queue = t0;
- _._end = t1;
- _._modificationCount = t2;
- _._position = t3;
- _._collection$_current = null;
- },
- _SetBase: function _SetBase() {
- },
- _ListBase_Object_ListMixin: function _ListBase_Object_ListMixin() {
- },
- _UnmodifiableMapView_MapView__UnmodifiableMapMixin: function _UnmodifiableMapView_MapView__UnmodifiableMapMixin() {
- },
- Utf8Decoder__convertIntercepted: function(allowMalformed, codeUnits, start, end) {
- if (codeUnits instanceof Uint8Array)
- return P.Utf8Decoder__convertInterceptedUint8List(false, codeUnits, start, end);
- return;
- },
- Utf8Decoder__convertInterceptedUint8List: function(allowMalformed, codeUnits, start, end) {
- var t1, $length,
- decoder = $.$get$Utf8Decoder__decoder();
- if (decoder == null)
- return;
- t1 = 0 === start;
- if (t1 && true)
- return P.Utf8Decoder__useTextDecoderChecked(decoder, codeUnits);
- $length = codeUnits.length;
- end = P.RangeError_checkValidRange(start, end, $length);
- if (t1 && end === $length)
- return P.Utf8Decoder__useTextDecoderChecked(decoder, codeUnits);
- return P.Utf8Decoder__useTextDecoderChecked(decoder, codeUnits.subarray(start, end));
- },
- Utf8Decoder__useTextDecoderChecked: function(decoder, codeUnits) {
- if (P.Utf8Decoder__unsafe(codeUnits))
- return;
- return P.Utf8Decoder__useTextDecoderUnchecked(decoder, codeUnits);
- },
- Utf8Decoder__useTextDecoderUnchecked: function(decoder, codeUnits) {
- var t1, exception;
- try {
- t1 = decoder.decode(codeUnits);
- return t1;
- } catch (exception) {
- H.unwrapException(exception);
- }
- return;
- },
- Utf8Decoder__unsafe: function(codeUnits) {
- var i,
- limit = codeUnits.length - 2;
- for (i = 0; i < limit; ++i)
- if (codeUnits[i] === 237)
- if ((codeUnits[i + 1] & 224) === 160)
- return true;
- return false;
- },
- Utf8Decoder__makeDecoder: function() {
- var t1, exception;
- try {
- t1 = new TextDecoder("utf-8", {fatal: true});
- return t1;
- } catch (exception) {
- H.unwrapException(exception);
- }
- return;
- },
- _scanOneByteCharacters: function(units, from, endIndex) {
- var t1, i, unit;
- for (t1 = J.getInterceptor$asx(units), i = from; i < endIndex; ++i) {
- unit = t1.$index(units, i);
- if ((unit & 127) !== unit)
- return i - from;
- }
- return endIndex - from;
- },
- Base64Codec__checkPadding: function(source, sourceIndex, sourceEnd, firstPadding, paddingCount, $length) {
- if (C.JSInt_methods.$mod($length, 4) !== 0)
- throw H.wrapException(P.FormatException$("Invalid base64 padding, padded length must be multiple of four, is " + $length, source, sourceEnd));
- if (firstPadding + paddingCount !== $length)
- throw H.wrapException(P.FormatException$("Invalid base64 padding, '=' not at the end", source, sourceIndex));
- if (paddingCount > 2)
- throw H.wrapException(P.FormatException$("Invalid base64 padding, more than two '=' characters", source, sourceIndex));
- },
- _Base64Encoder_encodeChunk: function(alphabet, bytes, start, end, isLast, output, outputIndex, state) {
- var t1, i, byteOr, byte, outputIndex0, outputIndex1,
- bits = state >>> 2,
- expectedChars = 3 - (state & 3);
- for (t1 = J.getInterceptor$asx(bytes), i = start, byteOr = 0; i < end; ++i) {
- byte = t1.$index(bytes, i);
- byteOr = (byteOr | byte) >>> 0;
- bits = (bits << 8 | byte) & 16777215;
- --expectedChars;
- if (expectedChars === 0) {
- outputIndex0 = outputIndex + 1;
- output[outputIndex] = C.JSString_methods._codeUnitAt$1(alphabet, bits >>> 18 & 63);
- outputIndex = outputIndex0 + 1;
- output[outputIndex0] = C.JSString_methods._codeUnitAt$1(alphabet, bits >>> 12 & 63);
- outputIndex0 = outputIndex + 1;
- output[outputIndex] = C.JSString_methods._codeUnitAt$1(alphabet, bits >>> 6 & 63);
- outputIndex = outputIndex0 + 1;
- output[outputIndex0] = C.JSString_methods._codeUnitAt$1(alphabet, bits & 63);
- bits = 0;
- expectedChars = 3;
- }
- }
- if (byteOr >= 0 && byteOr <= 255) {
- if (isLast && expectedChars < 3) {
- outputIndex0 = outputIndex + 1;
- outputIndex1 = outputIndex0 + 1;
- if (3 - expectedChars === 1) {
- output[outputIndex] = C.JSString_methods._codeUnitAt$1(alphabet, bits >>> 2 & 63);
- output[outputIndex0] = C.JSString_methods._codeUnitAt$1(alphabet, bits << 4 & 63);
- output[outputIndex1] = 61;
- output[outputIndex1 + 1] = 61;
- } else {
- output[outputIndex] = C.JSString_methods._codeUnitAt$1(alphabet, bits >>> 10 & 63);
- output[outputIndex0] = C.JSString_methods._codeUnitAt$1(alphabet, bits >>> 4 & 63);
- output[outputIndex1] = C.JSString_methods._codeUnitAt$1(alphabet, bits << 2 & 63);
- output[outputIndex1 + 1] = 61;
- }
- return 0;
- }
- return (bits << 2 | 3 - expectedChars) >>> 0;
- }
- for (i = start; i < end;) {
- byte = t1.$index(bytes, i);
- if (byte < 0 || byte > 255)
- break;
- ++i;
- }
- throw H.wrapException(P.ArgumentError$value(bytes, "Not a byte value at index " + i + ": 0x" + J.toRadixString$1$n(t1.$index(bytes, i), 16), null));
- },
- JsonUnsupportedObjectError$: function(unsupportedObject, cause, partialResult) {
- return new P.JsonUnsupportedObjectError(unsupportedObject, cause);
- },
- _defaultToEncodable: function(object) {
- return object.toJson$0();
- },
- _JsonStringStringifier_stringify: function(object, toEncodable, indent) {
- var t1,
- output = new P.StringBuffer("");
- P._JsonStringStringifier_printOn(object, output, toEncodable, indent);
- t1 = output._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- _JsonStringStringifier_printOn: function(object, output, toEncodable, indent) {
- var stringifier = new P._JsonStringStringifier(output, [], P.convert___defaultToEncodable$closure());
- stringifier.writeObject$1(object);
- },
- AsciiCodec: function AsciiCodec() {
- },
- _UnicodeSubsetEncoder: function _UnicodeSubsetEncoder() {
- },
- AsciiEncoder: function AsciiEncoder(t0) {
- this._subsetMask = t0;
- },
- Base64Codec: function Base64Codec() {
- },
- Base64Encoder: function Base64Encoder() {
- },
- _Base64Encoder: function _Base64Encoder(t0) {
- this._state = 0;
- this._alphabet = t0;
- },
- _BufferCachingBase64Encoder: function _BufferCachingBase64Encoder(t0) {
- this.bufferCache = null;
- this._state = 0;
- this._alphabet = t0;
- },
- _Base64EncoderSink: function _Base64EncoderSink() {
- },
- _AsciiBase64EncoderSink: function _AsciiBase64EncoderSink(t0, t1) {
- this._sink = t0;
- this._encoder = t1;
- },
- _Utf8Base64EncoderSink: function _Utf8Base64EncoderSink(t0, t1) {
- this._sink = t0;
- this._encoder = t1;
- },
- ByteConversionSink: function ByteConversionSink() {
- },
- ByteConversionSinkBase: function ByteConversionSinkBase() {
- },
- ChunkedConversionSink: function ChunkedConversionSink() {
- },
- Codec: function Codec() {
- },
- Converter: function Converter() {
- },
- Encoding: function Encoding() {
- },
- JsonUnsupportedObjectError: function JsonUnsupportedObjectError(t0, t1) {
- this.unsupportedObject = t0;
- this.cause = t1;
- },
- JsonCyclicError: function JsonCyclicError(t0, t1) {
- this.unsupportedObject = t0;
- this.cause = t1;
- },
- JsonCodec: function JsonCodec() {
- },
- JsonEncoder: function JsonEncoder(t0) {
- this._toEncodable = t0;
- },
- _JsonStringifier: function _JsonStringifier() {
- },
- _JsonStringifier_writeMap_closure: function _JsonStringifier_writeMap_closure(t0, t1) {
- this._box_0 = t0;
- this.keyValueList = t1;
- },
- _JsonStringStringifier: function _JsonStringStringifier(t0, t1, t2) {
- this._sink = t0;
- this._seen = t1;
- this._toEncodable = t2;
- },
- StringConversionSinkBase: function StringConversionSinkBase() {
- },
- StringConversionSinkMixin: function StringConversionSinkMixin() {
- },
- _StringSinkConversionSink: function _StringSinkConversionSink(t0) {
- this._stringSink = t0;
- },
- _StringCallbackSink: function _StringCallbackSink(t0, t1) {
- this._convert$_callback = t0;
- this._stringSink = t1;
- },
- _StringAdapterSink: function _StringAdapterSink(t0) {
- this._sink = t0;
- },
- _Utf8StringSinkAdapter: function _Utf8StringSinkAdapter(t0, t1) {
- this._decoder = t0;
- this._sink = t1;
- },
- _Utf8ConversionSink: function _Utf8ConversionSink(t0, t1, t2) {
- this._decoder = t0;
- this._chunkedSink = t1;
- this._buffer = t2;
- },
- Utf8Codec: function Utf8Codec() {
- },
- Utf8Encoder: function Utf8Encoder() {
- },
- _Utf8Encoder: function _Utf8Encoder(t0) {
- this._bufferIndex = this._carry = 0;
- this._buffer = t0;
- },
- Utf8Decoder: function Utf8Decoder(t0) {
- this._allowMalformed = t0;
- },
- _Utf8Decoder: function _Utf8Decoder(t0, t1) {
- var _ = this;
- _._allowMalformed = t0;
- _._stringSink = t1;
- _._isFirstCharacter = true;
- _._extraUnits = _._expectedUnits = _._convert$_value = 0;
- },
- identityHashCode: function(object) {
- return H.objectHashCode(object);
- },
- Function_apply: function($function, positionalArguments) {
- return H.Primitives_applyFunction($function, positionalArguments, null);
- },
- int_parse: function(source, onError, radix) {
- var value = H.Primitives_parseInt(source, radix);
- if (value != null)
- return value;
- if (onError != null)
- return onError.call$1(source);
- throw H.wrapException(P.FormatException$(source, null, null));
- },
- double_parse: function(source) {
- var value = H.Primitives_parseDouble(source);
- if (value != null)
- return value;
- throw H.wrapException(P.FormatException$("Invalid double", source, null));
- },
- Error__objectToString: function(object) {
- if (object instanceof H.Closure)
- return object.toString$0(0);
- return "Instance of '" + H.S(H.Primitives_objectTypeName(object)) + "'";
- },
- List_List$filled: function($length, fill, $E) {
- var t1, i,
- result = J.JSArray_JSArray$fixed($length, $E);
- if ($length !== 0 && fill != null)
- for (t1 = result.length, i = 0; i < t1; ++i)
- result[i] = fill;
- return result;
- },
- List_List$from: function(elements, growable, $E) {
- var t1,
- list = H.setRuntimeTypeInfo([], [$E]);
- for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();)
- list.push(t1.get$current(t1));
- if (growable)
- return list;
- return J.JSArray_markFixedList(list);
- },
- List_List$unmodifiable: function(elements, $E) {
- return J.JSArray_markUnmodifiableList(P.List_List$from(elements, false, $E));
- },
- String_String$fromCharCodes: function(charCodes, start, end) {
- var len;
- if (typeof charCodes === "object" && charCodes !== null && charCodes.constructor === Array) {
- len = charCodes.length;
- end = P.RangeError_checkValidRange(start, end, len);
- return H.Primitives_stringFromCharCodes(start > 0 || end < len ? C.JSArray_methods.sublist$2(charCodes, start, end) : charCodes);
- }
- if (!!J.getInterceptor$(charCodes).$isNativeUint8List)
- return H.Primitives_stringFromNativeUint8List(charCodes, start, P.RangeError_checkValidRange(start, end, charCodes.length));
- return P.String__stringFromIterable(charCodes, start, end);
- },
- String_String$fromCharCode: function(charCode) {
- return H.Primitives_stringFromCharCode(charCode);
- },
- String__stringFromIterable: function(charCodes, start, end) {
- var t1, it, i, list, _null = null;
- if (start < 0)
- throw H.wrapException(P.RangeError$range(start, 0, J.get$length$asx(charCodes), _null, _null));
- t1 = end == null;
- if (!t1 && end < start)
- throw H.wrapException(P.RangeError$range(end, start, J.get$length$asx(charCodes), _null, _null));
- it = J.get$iterator$ax(charCodes);
- for (i = 0; i < start; ++i)
- if (!it.moveNext$0())
- throw H.wrapException(P.RangeError$range(start, 0, i, _null, _null));
- list = [];
- if (t1)
- for (; it.moveNext$0();)
- list.push(it.get$current(it));
- else
- for (i = start; i < end; ++i) {
- if (!it.moveNext$0())
- throw H.wrapException(P.RangeError$range(end, start, i, _null, _null));
- list.push(it.get$current(it));
- }
- return H.Primitives_stringFromCharCodes(list);
- },
- RegExp_RegExp: function(source, multiLine) {
- return new H.JSSyntaxRegExp(source, H.JSSyntaxRegExp_makeNative(source, multiLine, true, false, false, false));
- },
- identical: function(a, b) {
- return a == null ? b == null : a === b;
- },
- StringBuffer__writeAll: function(string, objects, separator) {
- var iterator = J.get$iterator$ax(objects);
- if (!iterator.moveNext$0())
- return string;
- if (separator.length === 0) {
- do
- string += H.S(iterator.get$current(iterator));
- while (iterator.moveNext$0());
- } else {
- string += H.S(iterator.get$current(iterator));
- for (; iterator.moveNext$0();)
- string = string + separator + H.S(iterator.get$current(iterator));
- }
- return string;
- },
- NoSuchMethodError$: function(receiver, memberName, positionalArguments, namedArguments) {
- return new P.NoSuchMethodError(receiver, memberName, positionalArguments, namedArguments);
- },
- Uri_base: function() {
- var uri = H.Primitives_currentUri();
- if (uri != null)
- return P.Uri_parse(uri);
- throw H.wrapException(P.UnsupportedError$("'Uri.base' is not supported"));
- },
- _Uri__uriEncode: function(canonicalTable, text, encoding, spaceToPlus) {
- var t1, bytes, i, t2, byte,
- _s16_ = "0123456789ABCDEF";
- if (encoding === C.C_Utf8Codec) {
- t1 = $.$get$_Uri__needsNoEncoding()._nativeRegExp;
- if (typeof text !== "string")
- H.throwExpression(H.argumentErrorValue(text));
- t1 = t1.test(text);
- } else
- t1 = false;
- if (t1)
- return text;
- bytes = encoding.get$encoder().convert$1(text);
- for (t1 = bytes.length, i = 0, t2 = ""; i < t1; ++i) {
- byte = bytes[i];
- if (byte < 128 && (canonicalTable[byte >>> 4] & 1 << (byte & 15)) !== 0)
- t2 += H.Primitives_stringFromCharCode(byte);
- else
- t2 = spaceToPlus && byte === 32 ? t2 + "+" : t2 + "%" + _s16_[byte >>> 4 & 15] + _s16_[byte & 15];
- }
- return t2.charCodeAt(0) == 0 ? t2 : t2;
- },
- StackTrace_current: function() {
- var stackTrace, exception;
- if ($.$get$_hasErrorStackProperty())
- return H.getTraceFromException(new Error());
- try {
- throw H.wrapException("");
- } catch (exception) {
- H.unwrapException(exception);
- stackTrace = H.getTraceFromException(exception);
- return stackTrace;
- }
- },
- DateTime$_withValue: function(_value, isUtc) {
- var t1;
- if (Math.abs(_value) <= 864e13)
- t1 = false;
- else
- t1 = true;
- if (t1)
- H.throwExpression(P.ArgumentError$("DateTime is outside valid range: " + _value));
- return new P.DateTime(_value, false);
- },
- DateTime__fourDigits: function(n) {
- var absN = Math.abs(n),
- sign = n < 0 ? "-" : "";
- if (absN >= 1000)
- return "" + n;
- if (absN >= 100)
- return sign + "0" + absN;
- if (absN >= 10)
- return sign + "00" + absN;
- return sign + "000" + absN;
- },
- DateTime__threeDigits: function(n) {
- if (n >= 100)
- return "" + n;
- if (n >= 10)
- return "0" + n;
- return "00" + n;
- },
- DateTime__twoDigits: function(n) {
- if (n >= 10)
- return "" + n;
- return "0" + n;
- },
- Duration$: function(milliseconds) {
- return new P.Duration(1000 * milliseconds);
- },
- Error_safeToString: function(object) {
- if (typeof object === "number" || typeof object === "boolean" || null == object)
- return J.toString$0$(object);
- if (typeof object === "string")
- return JSON.stringify(object);
- return P.Error__objectToString(object);
- },
- ArgumentError$: function(message) {
- return new P.ArgumentError(false, null, null, message);
- },
- ArgumentError$value: function(value, $name, message) {
- return new P.ArgumentError(true, value, $name, message);
- },
- ArgumentError$notNull: function($name) {
- return new P.ArgumentError(false, null, $name, "Must not be null");
- },
- RangeError$: function(message) {
- var _null = null;
- return new P.RangeError(_null, _null, false, _null, _null, message);
- },
- RangeError$value: function(value, $name, message) {
- return new P.RangeError(null, null, true, value, $name, message != null ? message : "Value not in range");
- },
- RangeError$range: function(invalidValue, minValue, maxValue, $name, message) {
- return new P.RangeError(minValue, maxValue, true, invalidValue, $name, "Invalid value");
- },
- RangeError_checkValueInInterval: function(value, minValue, maxValue, $name) {
- if (value < minValue || value > maxValue)
- throw H.wrapException(P.RangeError$range(value, minValue, maxValue, $name, null));
- },
- RangeError_checkValidIndex: function(index, indexable, $name) {
- var $length = indexable.get$length(indexable);
- if (0 > index || index >= $length)
- throw H.wrapException(P.IndexError$(index, indexable, $name == null ? "index" : $name, null, $length));
- },
- RangeError_checkValidRange: function(start, end, $length) {
- if (0 > start || start > $length)
- throw H.wrapException(P.RangeError$range(start, 0, $length, "start", null));
- if (end != null) {
- if (start > end || end > $length)
- throw H.wrapException(P.RangeError$range(end, start, $length, "end", null));
- return end;
- }
- return $length;
- },
- RangeError_checkNotNegative: function(value, $name) {
- if (value < 0)
- throw H.wrapException(P.RangeError$range(value, 0, null, $name, null));
- },
- IndexError$: function(invalidValue, indexable, $name, message, $length) {
- var t1 = $length == null ? J.get$length$asx(indexable) : $length;
- return new P.IndexError(t1, true, invalidValue, $name, "Index out of range");
- },
- UnsupportedError$: function(message) {
- return new P.UnsupportedError(message);
- },
- UnimplementedError$: function(message) {
- return new P.UnimplementedError(message);
- },
- StateError$: function(message) {
- return new P.StateError(message);
- },
- ConcurrentModificationError$: function(modifiedObject) {
- return new P.ConcurrentModificationError(modifiedObject);
- },
- FormatException$: function(message, source, offset) {
- return new P.FormatException(message, source, offset);
- },
- Iterable_Iterable$generate: function(count, generator, $E) {
- if (count <= 0)
- return new H.EmptyIterable([$E]);
- return new P._GeneratorIterable(count, generator, [$E]);
- },
- List_List$generate: function($length, generator, growable, $E) {
- var result, t1, i;
- if (growable) {
- result = H.setRuntimeTypeInfo([], [$E]);
- C.JSArray_methods.set$length(result, $length);
- } else {
- t1 = new Array($length);
- t1.fixed$length = Array;
- result = H.setRuntimeTypeInfo(t1, [$E]);
- }
- for (i = 0; i < $length; ++i)
- result[i] = generator.call$1(i);
- return result;
- },
- print: function(object) {
- var line = H.S(object),
- t1 = $.printToZone;
- if (t1 == null)
- H.printString(line);
- else
- t1.call$1(line);
- },
- Set_castFrom: function(source, newSet, $S, $T) {
- return new H.CastSet(source, newSet, [$S, $T]);
- },
- _combineSurrogatePair: function(start, end) {
- return 65536 + ((start & 1023) << 10) + (end & 1023);
- },
- Uri_Uri$dataFromString: function($content, encoding, mimeType) {
- var encodingName, t1,
- buffer = new P.StringBuffer(""),
- indices = H.setRuntimeTypeInfo([-1], [P.int]);
- if (encoding == null)
- encodingName = null;
- else
- encodingName = "utf-8";
- if (encoding == null)
- encoding = C.C_AsciiCodec;
- P.UriData__writeUri(mimeType, encodingName, null, buffer, indices);
- indices.push(buffer._contents.length);
- buffer._contents += ",";
- P.UriData__uriEncodeBytes(C.List_CVk, encoding.encode$1($content), buffer);
- t1 = buffer._contents;
- return new P.UriData(t1.charCodeAt(0) == 0 ? t1 : t1, indices, null).get$uri();
- },
- Uri_parse: function(uri) {
- var delta, t1, indices, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, isSimple, scheme, t2, schemeAuth, queryStart0, pathStart0, _null = null,
- end = uri.length;
- if (end >= 5) {
- delta = ((J._codeUnitAt$1$s(uri, 4) ^ 58) * 3 | C.JSString_methods._codeUnitAt$1(uri, 0) ^ 100 | C.JSString_methods._codeUnitAt$1(uri, 1) ^ 97 | C.JSString_methods._codeUnitAt$1(uri, 2) ^ 116 | C.JSString_methods._codeUnitAt$1(uri, 3) ^ 97) >>> 0;
- if (delta === 0)
- return P.UriData__parse(end < end ? C.JSString_methods.substring$2(uri, 0, end) : uri, 5, _null).get$uri();
- else if (delta === 32)
- return P.UriData__parse(C.JSString_methods.substring$2(uri, 5, end), 0, _null).get$uri();
- }
- t1 = new Array(8);
- t1.fixed$length = Array;
- indices = H.setRuntimeTypeInfo(t1, [P.int]);
- indices[0] = 0;
- indices[1] = -1;
- indices[2] = -1;
- indices[7] = -1;
- indices[3] = 0;
- indices[4] = 0;
- indices[5] = end;
- indices[6] = end;
- if (P._scan(uri, 0, end, 0, indices) >= 14)
- indices[7] = end;
- schemeEnd = indices[1];
- if (schemeEnd >= 0)
- if (P._scan(uri, 0, schemeEnd, 20, indices) === 20)
- indices[7] = schemeEnd;
- hostStart = indices[2] + 1;
- portStart = indices[3];
- pathStart = indices[4];
- queryStart = indices[5];
- fragmentStart = indices[6];
- if (fragmentStart < queryStart)
- queryStart = fragmentStart;
- if (pathStart < hostStart)
- pathStart = queryStart;
- else if (pathStart <= schemeEnd)
- pathStart = schemeEnd + 1;
- if (portStart < hostStart)
- portStart = pathStart;
- isSimple = indices[7] < 0;
- if (isSimple)
- if (hostStart > schemeEnd + 3) {
- scheme = _null;
- isSimple = false;
- } else {
- t1 = portStart > 0;
- if (t1 && portStart + 1 === pathStart) {
- scheme = _null;
- isSimple = false;
- } else {
- if (!(queryStart < end && queryStart === pathStart + 2 && J.startsWith$2$s(uri, "..", pathStart)))
- t2 = queryStart > pathStart + 2 && J.startsWith$2$s(uri, "/..", queryStart - 3);
- else
- t2 = true;
- if (t2) {
- scheme = _null;
- isSimple = false;
- } else {
- if (schemeEnd === 4)
- if (J.startsWith$2$s(uri, "file", 0)) {
- if (hostStart <= 0) {
- if (!C.JSString_methods.startsWith$2(uri, "/", pathStart)) {
- schemeAuth = "file:///";
- delta = 3;
- } else {
- schemeAuth = "file://";
- delta = 2;
- }
- uri = schemeAuth + C.JSString_methods.substring$2(uri, pathStart, end);
- schemeEnd -= 0;
- t1 = delta - 0;
- queryStart += t1;
- fragmentStart += t1;
- end = uri.length;
- hostStart = 7;
- portStart = 7;
- pathStart = 7;
- } else if (pathStart === queryStart) {
- queryStart0 = queryStart + 1;
- ++fragmentStart;
- uri = C.JSString_methods.replaceRange$3(uri, pathStart, queryStart, "/");
- ++end;
- queryStart = queryStart0;
- }
- scheme = "file";
- } else if (C.JSString_methods.startsWith$2(uri, "http", 0)) {
- if (t1 && portStart + 3 === pathStart && C.JSString_methods.startsWith$2(uri, "80", portStart + 1)) {
- pathStart0 = pathStart - 3;
- queryStart -= 3;
- fragmentStart -= 3;
- uri = C.JSString_methods.replaceRange$3(uri, portStart, pathStart, "");
- end -= 3;
- pathStart = pathStart0;
- }
- scheme = "http";
- } else
- scheme = _null;
- else if (schemeEnd === 5 && J.startsWith$2$s(uri, "https", 0)) {
- if (t1 && portStart + 4 === pathStart && J.startsWith$2$s(uri, "443", portStart + 1)) {
- pathStart0 = pathStart - 4;
- queryStart -= 4;
- fragmentStart -= 4;
- uri = J.replaceRange$3$asx(uri, portStart, pathStart, "");
- end -= 3;
- pathStart = pathStart0;
- }
- scheme = "https";
- } else
- scheme = _null;
- isSimple = true;
- }
- }
- }
- else
- scheme = _null;
- if (isSimple) {
- t1 = uri.length;
- if (end < t1) {
- uri = J.substring$2$s(uri, 0, end);
- schemeEnd -= 0;
- hostStart -= 0;
- portStart -= 0;
- pathStart -= 0;
- queryStart -= 0;
- fragmentStart -= 0;
- }
- return new P._SimpleUri(uri, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, scheme);
- }
- return P._Uri__Uri$notSimple(uri, 0, end, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, scheme);
- },
- Uri_decodeComponent: function(encodedComponent) {
- return P._Uri__uriDecode(encodedComponent, 0, encodedComponent.length, C.C_Utf8Codec, false);
- },
- Uri__parseIPv4Address: function(host, start, end) {
- var i, partStart, partIndex, char, part, partIndex0, _null = null,
- _s43_ = "IPv4 address should contain exactly 4 parts",
- _s37_ = "each part must be in the range 0..255",
- error = new P.Uri__parseIPv4Address_error(host),
- result = new Uint8Array(4);
- for (i = start, partStart = i, partIndex = 0; i < end; ++i) {
- char = C.JSString_methods.codeUnitAt$1(host, i);
- if (char !== 46) {
- if ((char ^ 48) > 9)
- error.call$2("invalid character", i);
- } else {
- if (partIndex === 3)
- error.call$2(_s43_, i);
- part = P.int_parse(C.JSString_methods.substring$2(host, partStart, i), _null, _null);
- if (part > 255)
- error.call$2(_s37_, partStart);
- partIndex0 = partIndex + 1;
- result[partIndex] = part;
- partStart = i + 1;
- partIndex = partIndex0;
- }
- }
- if (partIndex !== 3)
- error.call$2(_s43_, end);
- part = P.int_parse(C.JSString_methods.substring$2(host, partStart, end), _null, _null);
- if (part > 255)
- error.call$2(_s37_, partStart);
- result[partIndex] = part;
- return result;
- },
- Uri_parseIPv6Address: function(host, start, end) {
- var parts, i, partStart, wildcardSeen, seenDot, char, atEnd, t1, last, bytes, wildCardLength, index, value, j,
- error = new P.Uri_parseIPv6Address_error(host),
- parseHex = new P.Uri_parseIPv6Address_parseHex(error, host);
- if (host.length < 2)
- error.call$1("address is too short");
- parts = H.setRuntimeTypeInfo([], [P.int]);
- for (i = start, partStart = i, wildcardSeen = false, seenDot = false; i < end; ++i) {
- char = C.JSString_methods.codeUnitAt$1(host, i);
- if (char === 58) {
- if (i === start) {
- ++i;
- if (C.JSString_methods.codeUnitAt$1(host, i) !== 58)
- error.call$2("invalid start colon.", i);
- partStart = i;
- }
- if (i === partStart) {
- if (wildcardSeen)
- error.call$2("only one wildcard `::` is allowed", i);
- parts.push(-1);
- wildcardSeen = true;
- } else
- parts.push(parseHex.call$2(partStart, i));
- partStart = i + 1;
- } else if (char === 46)
- seenDot = true;
- }
- if (parts.length === 0)
- error.call$1("too few parts");
- atEnd = partStart === end;
- t1 = C.JSArray_methods.get$last(parts);
- if (atEnd && t1 !== -1)
- error.call$2("expected a part after last `:`", end);
- if (!atEnd)
- if (!seenDot)
- parts.push(parseHex.call$2(partStart, end));
- else {
- last = P.Uri__parseIPv4Address(host, partStart, end);
- parts.push((last[0] << 8 | last[1]) >>> 0);
- parts.push((last[2] << 8 | last[3]) >>> 0);
- }
- if (wildcardSeen) {
- if (parts.length > 7)
- error.call$1("an address with a wildcard must have less than 7 parts");
- } else if (parts.length !== 8)
- error.call$1("an address without a wildcard must contain exactly 8 parts");
- bytes = new Uint8Array(16);
- for (t1 = parts.length, wildCardLength = 9 - t1, i = 0, index = 0; i < t1; ++i) {
- value = parts[i];
- if (value === -1)
- for (j = 0; j < wildCardLength; ++j) {
- bytes[index] = 0;
- bytes[index + 1] = 0;
- index += 2;
- }
- else {
- bytes[index] = C.JSInt_methods._shrOtherPositive$1(value, 8);
- bytes[index + 1] = value & 255;
- index += 2;
- }
- }
- return bytes;
- },
- _Uri__Uri$notSimple: function(uri, start, end, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, scheme) {
- var userInfoStart, userInfo, host, t1, port, path, query, _null = null;
- if (scheme == null)
- if (schemeEnd > start)
- scheme = P._Uri__makeScheme(uri, start, schemeEnd);
- else {
- if (schemeEnd === start)
- P._Uri__fail(uri, start, "Invalid empty scheme");
- scheme = "";
- }
- if (hostStart > start) {
- userInfoStart = schemeEnd + 3;
- userInfo = userInfoStart < hostStart ? P._Uri__makeUserInfo(uri, userInfoStart, hostStart - 1) : "";
- host = P._Uri__makeHost(uri, hostStart, portStart, false);
- t1 = portStart + 1;
- port = t1 < pathStart ? P._Uri__makePort(P.int_parse(J.substring$2$s(uri, t1, pathStart), new P._Uri__Uri$notSimple_closure(uri, portStart), _null), scheme) : _null;
- } else {
- port = _null;
- host = port;
- userInfo = "";
- }
- path = P._Uri__makePath(uri, pathStart, queryStart, _null, scheme, host != null);
- query = queryStart < fragmentStart ? P._Uri__makeQuery(uri, queryStart + 1, fragmentStart, _null) : _null;
- return new P._Uri(scheme, userInfo, host, port, path, query, fragmentStart < end ? P._Uri__makeFragment(uri, fragmentStart + 1, end) : _null);
- },
- _Uri__Uri: function(host, path, pathSegments, scheme) {
- var userInfo, query, fragment, port, isFile, t1, hasAuthority, t2, _null = null;
- scheme = P._Uri__makeScheme(scheme, 0, scheme == null ? 0 : scheme.length);
- userInfo = P._Uri__makeUserInfo(_null, 0, 0);
- host = P._Uri__makeHost(host, 0, host == null ? 0 : host.length, false);
- query = P._Uri__makeQuery(_null, 0, 0, _null);
- fragment = P._Uri__makeFragment(_null, 0, 0);
- port = P._Uri__makePort(_null, scheme);
- isFile = scheme === "file";
- if (host == null)
- t1 = userInfo.length !== 0 || port != null || isFile;
- else
- t1 = false;
- if (t1)
- host = "";
- t1 = host == null;
- hasAuthority = !t1;
- path = P._Uri__makePath(path, 0, path == null ? 0 : path.length, pathSegments, scheme, hasAuthority);
- t2 = scheme.length === 0;
- if (t2 && t1 && !C.JSString_methods.startsWith$1(path, "/"))
- path = P._Uri__normalizeRelativePath(path, !t2 || hasAuthority);
- else
- path = P._Uri__removeDotSegments(path);
- return new P._Uri(scheme, userInfo, t1 && C.JSString_methods.startsWith$1(path, "//") ? "" : host, port, path, query, fragment);
- },
- _Uri__defaultPort: function(scheme) {
- if (scheme === "http")
- return 80;
- if (scheme === "https")
- return 443;
- return 0;
- },
- _Uri__fail: function(uri, index, message) {
- throw H.wrapException(P.FormatException$(message, uri, index));
- },
- _Uri__Uri$file: function(path, windows) {
- return windows ? P._Uri__makeWindowsFileUrl(path, false) : P._Uri__makeFileUri(path, false);
- },
- _Uri__checkNonWindowsPathReservedCharacters: function(segments, argumentError) {
- C.JSArray_methods.forEach$1(segments, new P._Uri__checkNonWindowsPathReservedCharacters_closure(false));
- },
- _Uri__checkWindowsPathReservedCharacters: function(segments, argumentError, firstSegment) {
- var t1, t2, t3;
- for (t1 = H.SubListIterable$(segments, firstSegment, null, H.getTypeArgumentByIndex(segments, 0)), t1 = new H.ListIterator(t1, t1.get$length(t1)); t1.moveNext$0();) {
- t2 = t1.__internal$_current;
- t3 = P.RegExp_RegExp('["*/:<>?\\\\|]', false);
- t2.length;
- if (H.stringContainsUnchecked(t2, t3, 0))
- if (argumentError)
- throw H.wrapException(P.ArgumentError$("Illegal character in path"));
- else
- throw H.wrapException(P.UnsupportedError$("Illegal character in path: " + H.S(t2)));
- }
- },
- _Uri__checkWindowsDriveLetter: function(charCode, argumentError) {
- var t1,
- _s21_ = "Illegal drive letter ";
- if (!(65 <= charCode && charCode <= 90))
- t1 = 97 <= charCode && charCode <= 122;
- else
- t1 = true;
- if (t1)
- return;
- if (argumentError)
- throw H.wrapException(P.ArgumentError$(_s21_ + P.String_String$fromCharCode(charCode)));
- else
- throw H.wrapException(P.UnsupportedError$(_s21_ + P.String_String$fromCharCode(charCode)));
- },
- _Uri__makeFileUri: function(path, slashTerminated) {
- var _null = null,
- segments = H.setRuntimeTypeInfo(path.split("/"), [P.String]);
- if (C.JSString_methods.startsWith$1(path, "/"))
- return P._Uri__Uri(_null, _null, segments, "file");
- else
- return P._Uri__Uri(_null, _null, segments, _null);
- },
- _Uri__makeWindowsFileUrl: function(path, slashTerminated) {
- var t1, pathSegments, pathStart, hostPart, _s1_ = "\\", _null = null, _s4_ = "file";
- if (C.JSString_methods.startsWith$1(path, "\\\\?\\"))
- if (C.JSString_methods.startsWith$2(path, "UNC\\", 4))
- path = C.JSString_methods.replaceRange$3(path, 0, 7, _s1_);
- else {
- path = C.JSString_methods.substring$1(path, 4);
- if (path.length < 3 || C.JSString_methods._codeUnitAt$1(path, 1) !== 58 || C.JSString_methods._codeUnitAt$1(path, 2) !== 92)
- throw H.wrapException(P.ArgumentError$("Windows paths with \\\\?\\ prefix must be absolute"));
- }
- else
- path = H.stringReplaceAllUnchecked(path, "/", _s1_);
- t1 = path.length;
- if (t1 > 1 && C.JSString_methods._codeUnitAt$1(path, 1) === 58) {
- P._Uri__checkWindowsDriveLetter(C.JSString_methods._codeUnitAt$1(path, 0), true);
- if (t1 === 2 || C.JSString_methods._codeUnitAt$1(path, 2) !== 92)
- throw H.wrapException(P.ArgumentError$("Windows paths with drive letter must be absolute"));
- pathSegments = H.setRuntimeTypeInfo(path.split(_s1_), [P.String]);
- P._Uri__checkWindowsPathReservedCharacters(pathSegments, true, 1);
- return P._Uri__Uri(_null, _null, pathSegments, _s4_);
- }
- if (C.JSString_methods.startsWith$1(path, _s1_))
- if (C.JSString_methods.startsWith$2(path, _s1_, 1)) {
- pathStart = C.JSString_methods.indexOf$2(path, _s1_, 2);
- t1 = pathStart < 0;
- hostPart = t1 ? C.JSString_methods.substring$1(path, 2) : C.JSString_methods.substring$2(path, 2, pathStart);
- pathSegments = H.setRuntimeTypeInfo((t1 ? "" : C.JSString_methods.substring$1(path, pathStart + 1)).split(_s1_), [P.String]);
- P._Uri__checkWindowsPathReservedCharacters(pathSegments, true, 0);
- return P._Uri__Uri(hostPart, _null, pathSegments, _s4_);
- } else {
- pathSegments = H.setRuntimeTypeInfo(path.split(_s1_), [P.String]);
- P._Uri__checkWindowsPathReservedCharacters(pathSegments, true, 0);
- return P._Uri__Uri(_null, _null, pathSegments, _s4_);
- }
- else {
- pathSegments = H.setRuntimeTypeInfo(path.split(_s1_), [P.String]);
- P._Uri__checkWindowsPathReservedCharacters(pathSegments, true, 0);
- return P._Uri__Uri(_null, _null, pathSegments, _null);
- }
- },
- _Uri__makePort: function(port, scheme) {
- if (port != null && port === P._Uri__defaultPort(scheme))
- return;
- return port;
- },
- _Uri__makeHost: function(host, start, end, strictIPv6) {
- var t1, t2, index, zoneIDstart, zoneID, i;
- if (host == null)
- return;
- if (start === end)
- return "";
- if (C.JSString_methods.codeUnitAt$1(host, start) === 91) {
- t1 = end - 1;
- if (C.JSString_methods.codeUnitAt$1(host, t1) !== 93)
- P._Uri__fail(host, start, "Missing end `]` to match `[` in host");
- t2 = start + 1;
- index = P._Uri__checkZoneID(host, t2, t1);
- if (index < t1) {
- zoneIDstart = index + 1;
- zoneID = P._Uri__normalizeZoneID(host, C.JSString_methods.startsWith$2(host, "25", zoneIDstart) ? index + 3 : zoneIDstart, t1, "%25");
- } else
- zoneID = "";
- P.Uri_parseIPv6Address(host, t2, index);
- return C.JSString_methods.substring$2(host, start, index).toLowerCase() + zoneID + "]";
- }
- for (i = start; i < end; ++i)
- if (C.JSString_methods.codeUnitAt$1(host, i) === 58) {
- index = C.JSString_methods.indexOf$2(host, "%", start);
- index = index >= start && index < end ? index : end;
- if (index < end) {
- zoneIDstart = index + 1;
- zoneID = P._Uri__normalizeZoneID(host, C.JSString_methods.startsWith$2(host, "25", zoneIDstart) ? index + 3 : zoneIDstart, end, "%25");
- } else
- zoneID = "";
- P.Uri_parseIPv6Address(host, start, index);
- return "[" + C.JSString_methods.substring$2(host, start, index) + zoneID + "]";
- }
- return P._Uri__normalizeRegName(host, start, end);
- },
- _Uri__checkZoneID: function(host, start, end) {
- var index = C.JSString_methods.indexOf$2(host, "%", start);
- return index >= start && index < end ? index : end;
- },
- _Uri__normalizeZoneID: function(host, start, end, prefix) {
- var index, sectionStart, isNormalized, char, replacement, t1, t2, tail, sourceLength,
- buffer = prefix !== "" ? new P.StringBuffer(prefix) : null;
- for (index = start, sectionStart = index, isNormalized = true; index < end;) {
- char = C.JSString_methods.codeUnitAt$1(host, index);
- if (char === 37) {
- replacement = P._Uri__normalizeEscape(host, index, true);
- t1 = replacement == null;
- if (t1 && isNormalized) {
- index += 3;
- continue;
- }
- if (buffer == null)
- buffer = new P.StringBuffer("");
- t2 = buffer._contents += C.JSString_methods.substring$2(host, sectionStart, index);
- if (t1)
- replacement = C.JSString_methods.substring$2(host, index, index + 3);
- else if (replacement === "%")
- P._Uri__fail(host, index, "ZoneID should not contain % anymore");
- buffer._contents = t2 + replacement;
- index += 3;
- sectionStart = index;
- isNormalized = true;
- } else if (char < 127 && (C.List_nxB[char >>> 4] & 1 << (char & 15)) !== 0) {
- if (isNormalized && 65 <= char && 90 >= char) {
- if (buffer == null)
- buffer = new P.StringBuffer("");
- if (sectionStart < index) {
- buffer._contents += C.JSString_methods.substring$2(host, sectionStart, index);
- sectionStart = index;
- }
- isNormalized = false;
- }
- ++index;
- } else {
- if ((char & 64512) === 55296 && index + 1 < end) {
- tail = C.JSString_methods.codeUnitAt$1(host, index + 1);
- if ((tail & 64512) === 56320) {
- char = 65536 | (char & 1023) << 10 | tail & 1023;
- sourceLength = 2;
- } else
- sourceLength = 1;
- } else
- sourceLength = 1;
- if (buffer == null)
- buffer = new P.StringBuffer("");
- buffer._contents += C.JSString_methods.substring$2(host, sectionStart, index);
- buffer._contents += P._Uri__escapeChar(char);
- index += sourceLength;
- sectionStart = index;
- }
- }
- if (buffer == null)
- return C.JSString_methods.substring$2(host, start, end);
- if (sectionStart < end)
- buffer._contents += C.JSString_methods.substring$2(host, sectionStart, end);
- t1 = buffer._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- _Uri__normalizeRegName: function(host, start, end) {
- var index, sectionStart, buffer, isNormalized, char, replacement, t1, slice, t2, sourceLength, tail;
- for (index = start, sectionStart = index, buffer = null, isNormalized = true; index < end;) {
- char = C.JSString_methods.codeUnitAt$1(host, index);
- if (char === 37) {
- replacement = P._Uri__normalizeEscape(host, index, true);
- t1 = replacement == null;
- if (t1 && isNormalized) {
- index += 3;
- continue;
- }
- if (buffer == null)
- buffer = new P.StringBuffer("");
- slice = C.JSString_methods.substring$2(host, sectionStart, index);
- t2 = buffer._contents += !isNormalized ? slice.toLowerCase() : slice;
- if (t1) {
- replacement = C.JSString_methods.substring$2(host, index, index + 3);
- sourceLength = 3;
- } else if (replacement === "%") {
- replacement = "%25";
- sourceLength = 1;
- } else
- sourceLength = 3;
- buffer._contents = t2 + replacement;
- index += sourceLength;
- sectionStart = index;
- isNormalized = true;
- } else if (char < 127 && (C.List_qNA[char >>> 4] & 1 << (char & 15)) !== 0) {
- if (isNormalized && 65 <= char && 90 >= char) {
- if (buffer == null)
- buffer = new P.StringBuffer("");
- if (sectionStart < index) {
- buffer._contents += C.JSString_methods.substring$2(host, sectionStart, index);
- sectionStart = index;
- }
- isNormalized = false;
- }
- ++index;
- } else if (char <= 93 && (C.List_2Vk[char >>> 4] & 1 << (char & 15)) !== 0)
- P._Uri__fail(host, index, "Invalid character");
- else {
- if ((char & 64512) === 55296 && index + 1 < end) {
- tail = C.JSString_methods.codeUnitAt$1(host, index + 1);
- if ((tail & 64512) === 56320) {
- char = 65536 | (char & 1023) << 10 | tail & 1023;
- sourceLength = 2;
- } else
- sourceLength = 1;
- } else
- sourceLength = 1;
- if (buffer == null)
- buffer = new P.StringBuffer("");
- slice = C.JSString_methods.substring$2(host, sectionStart, index);
- buffer._contents += !isNormalized ? slice.toLowerCase() : slice;
- buffer._contents += P._Uri__escapeChar(char);
- index += sourceLength;
- sectionStart = index;
- }
- }
- if (buffer == null)
- return C.JSString_methods.substring$2(host, start, end);
- if (sectionStart < end) {
- slice = C.JSString_methods.substring$2(host, sectionStart, end);
- buffer._contents += !isNormalized ? slice.toLowerCase() : slice;
- }
- t1 = buffer._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- _Uri__makeScheme: function(scheme, start, end) {
- var i, containsUpperCase, codeUnit;
- if (start === end)
- return "";
- if (!P._Uri__isAlphabeticCharacter(J.getInterceptor$s(scheme)._codeUnitAt$1(scheme, start)))
- P._Uri__fail(scheme, start, "Scheme not starting with alphabetic character");
- for (i = start, containsUpperCase = false; i < end; ++i) {
- codeUnit = C.JSString_methods._codeUnitAt$1(scheme, i);
- if (!(codeUnit < 128 && (C.List_JYB[codeUnit >>> 4] & 1 << (codeUnit & 15)) !== 0))
- P._Uri__fail(scheme, i, "Illegal scheme character");
- if (65 <= codeUnit && codeUnit <= 90)
- containsUpperCase = true;
- }
- scheme = C.JSString_methods.substring$2(scheme, start, end);
- return P._Uri__canonicalizeScheme(containsUpperCase ? scheme.toLowerCase() : scheme);
- },
- _Uri__canonicalizeScheme: function(scheme) {
- if (scheme === "http")
- return "http";
- if (scheme === "file")
- return "file";
- if (scheme === "https")
- return "https";
- if (scheme === "package")
- return "package";
- return scheme;
- },
- _Uri__makeUserInfo: function(userInfo, start, end) {
- if (userInfo == null)
- return "";
- return P._Uri__normalizeOrSubstring(userInfo, start, end, C.List_gRj, false);
- },
- _Uri__makePath: function(path, start, end, pathSegments, scheme, hasAuthority) {
- var result,
- isFile = scheme === "file",
- ensureLeadingSlash = isFile || hasAuthority,
- t1 = path == null;
- if (t1 && pathSegments == null)
- return isFile ? "/" : "";
- t1 = !t1;
- if (t1 && pathSegments != null)
- throw H.wrapException(P.ArgumentError$("Both path and pathSegments specified"));
- if (t1)
- result = P._Uri__normalizeOrSubstring(path, start, end, C.List_qg4, true);
- else {
- pathSegments.toString;
- result = new H.MappedListIterable(pathSegments, new P._Uri__makePath_closure(), [H.getTypeArgumentByIndex(pathSegments, 0), P.String]).join$1(0, "/");
- }
- if (result.length === 0) {
- if (isFile)
- return "/";
- } else if (ensureLeadingSlash && !C.JSString_methods.startsWith$1(result, "/"))
- result = "/" + result;
- return P._Uri__normalizePath(result, scheme, hasAuthority);
- },
- _Uri__normalizePath: function(path, scheme, hasAuthority) {
- var t1 = scheme.length === 0;
- if (t1 && !hasAuthority && !C.JSString_methods.startsWith$1(path, "/"))
- return P._Uri__normalizeRelativePath(path, !t1 || hasAuthority);
- return P._Uri__removeDotSegments(path);
- },
- _Uri__makeQuery: function(query, start, end, queryParameters) {
- if (query != null)
- return P._Uri__normalizeOrSubstring(query, start, end, C.List_CVk, true);
- return;
- },
- _Uri__makeFragment: function(fragment, start, end) {
- if (fragment == null)
- return;
- return P._Uri__normalizeOrSubstring(fragment, start, end, C.List_CVk, true);
- },
- _Uri__normalizeEscape: function(source, index, lowerCase) {
- var firstDigit, secondDigit, firstDigitValue, secondDigitValue, value,
- t1 = index + 2;
- if (t1 >= source.length)
- return "%";
- firstDigit = C.JSString_methods.codeUnitAt$1(source, index + 1);
- secondDigit = C.JSString_methods.codeUnitAt$1(source, t1);
- firstDigitValue = H.hexDigitValue(firstDigit);
- secondDigitValue = H.hexDigitValue(secondDigit);
- if (firstDigitValue < 0 || secondDigitValue < 0)
- return "%";
- value = firstDigitValue * 16 + secondDigitValue;
- if (value < 127 && (C.List_nxB[C.JSInt_methods._shrOtherPositive$1(value, 4)] & 1 << (value & 15)) !== 0)
- return H.Primitives_stringFromCharCode(lowerCase && 65 <= value && 90 >= value ? (value | 32) >>> 0 : value);
- if (firstDigit >= 97 || secondDigit >= 97)
- return C.JSString_methods.substring$2(source, index, index + 3).toUpperCase();
- return;
- },
- _Uri__escapeChar: function(char) {
- var t1, codeUnits, flag, encodedBytes, index, byte,
- _s16_ = "0123456789ABCDEF";
- if (char < 128) {
- t1 = new Array(3);
- t1.fixed$length = Array;
- codeUnits = H.setRuntimeTypeInfo(t1, [P.int]);
- codeUnits[0] = 37;
- codeUnits[1] = C.JSString_methods._codeUnitAt$1(_s16_, char >>> 4);
- codeUnits[2] = C.JSString_methods._codeUnitAt$1(_s16_, char & 15);
- } else {
- if (char > 2047)
- if (char > 65535) {
- flag = 240;
- encodedBytes = 4;
- } else {
- flag = 224;
- encodedBytes = 3;
- }
- else {
- flag = 192;
- encodedBytes = 2;
- }
- t1 = new Array(3 * encodedBytes);
- t1.fixed$length = Array;
- codeUnits = H.setRuntimeTypeInfo(t1, [P.int]);
- for (index = 0; --encodedBytes, encodedBytes >= 0; flag = 128) {
- byte = C.JSInt_methods._shrReceiverPositive$1(char, 6 * encodedBytes) & 63 | flag;
- codeUnits[index] = 37;
- codeUnits[index + 1] = C.JSString_methods._codeUnitAt$1(_s16_, byte >>> 4);
- codeUnits[index + 2] = C.JSString_methods._codeUnitAt$1(_s16_, byte & 15);
- index += 3;
- }
- }
- return P.String_String$fromCharCodes(codeUnits, 0, null);
- },
- _Uri__normalizeOrSubstring: function(component, start, end, charTable, escapeDelimiters) {
- var t1 = P._Uri__normalize(component, start, end, charTable, escapeDelimiters);
- return t1 == null ? C.JSString_methods.substring$2(component, start, end) : t1;
- },
- _Uri__normalize: function(component, start, end, charTable, escapeDelimiters) {
- var t1, index, sectionStart, buffer, char, replacement, sourceLength, t2, tail;
- for (t1 = !escapeDelimiters, index = start, sectionStart = index, buffer = null; index < end;) {
- char = C.JSString_methods.codeUnitAt$1(component, index);
- if (char < 127 && (charTable[char >>> 4] & 1 << (char & 15)) !== 0)
- ++index;
- else {
- if (char === 37) {
- replacement = P._Uri__normalizeEscape(component, index, false);
- if (replacement == null) {
- index += 3;
- continue;
- }
- if ("%" === replacement) {
- replacement = "%25";
- sourceLength = 1;
- } else
- sourceLength = 3;
- } else if (t1 && char <= 93 && (C.List_2Vk[char >>> 4] & 1 << (char & 15)) !== 0) {
- P._Uri__fail(component, index, "Invalid character");
- replacement = null;
- sourceLength = null;
- } else {
- if ((char & 64512) === 55296) {
- t2 = index + 1;
- if (t2 < end) {
- tail = C.JSString_methods.codeUnitAt$1(component, t2);
- if ((tail & 64512) === 56320) {
- char = 65536 | (char & 1023) << 10 | tail & 1023;
- sourceLength = 2;
- } else
- sourceLength = 1;
- } else
- sourceLength = 1;
- } else
- sourceLength = 1;
- replacement = P._Uri__escapeChar(char);
- }
- if (buffer == null)
- buffer = new P.StringBuffer("");
- buffer._contents += C.JSString_methods.substring$2(component, sectionStart, index);
- buffer._contents += H.S(replacement);
- index += sourceLength;
- sectionStart = index;
- }
- }
- if (buffer == null)
- return;
- if (sectionStart < end)
- buffer._contents += C.JSString_methods.substring$2(component, sectionStart, end);
- t1 = buffer._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- _Uri__mayContainDotSegments: function(path) {
- if (C.JSString_methods.startsWith$1(path, "."))
- return true;
- return C.JSString_methods.indexOf$1(path, "/.") !== -1;
- },
- _Uri__removeDotSegments: function(path) {
- var output, t1, t2, appendSlash, _i, segment;
- if (!P._Uri__mayContainDotSegments(path))
- return path;
- output = H.setRuntimeTypeInfo([], [P.String]);
- for (t1 = path.split("/"), t2 = t1.length, appendSlash = false, _i = 0; _i < t2; ++_i) {
- segment = t1[_i];
- if (J.$eq$(segment, "..")) {
- if (output.length !== 0) {
- output.pop();
- if (output.length === 0)
- output.push("");
- }
- appendSlash = true;
- } else if ("." === segment)
- appendSlash = true;
- else {
- output.push(segment);
- appendSlash = false;
- }
- }
- if (appendSlash)
- output.push("");
- return C.JSArray_methods.join$1(output, "/");
- },
- _Uri__normalizeRelativePath: function(path, allowScheme) {
- var output, t1, t2, appendSlash, _i, segment;
- if (!P._Uri__mayContainDotSegments(path))
- return !allowScheme ? P._Uri__escapeScheme(path) : path;
- output = H.setRuntimeTypeInfo([], [P.String]);
- for (t1 = path.split("/"), t2 = t1.length, appendSlash = false, _i = 0; _i < t2; ++_i) {
- segment = t1[_i];
- if (".." === segment)
- if (output.length !== 0 && C.JSArray_methods.get$last(output) !== "..") {
- output.pop();
- appendSlash = true;
- } else {
- output.push("..");
- appendSlash = false;
- }
- else if ("." === segment)
- appendSlash = true;
- else {
- output.push(segment);
- appendSlash = false;
- }
- }
- t1 = output.length;
- if (t1 !== 0)
- t1 = t1 === 1 && output[0].length === 0;
- else
- t1 = true;
- if (t1)
- return "./";
- if (appendSlash || C.JSArray_methods.get$last(output) === "..")
- output.push("");
- if (!allowScheme)
- output[0] = P._Uri__escapeScheme(output[0]);
- return C.JSArray_methods.join$1(output, "/");
- },
- _Uri__escapeScheme: function(path) {
- var i, char,
- t1 = path.length;
- if (t1 >= 2 && P._Uri__isAlphabeticCharacter(J._codeUnitAt$1$s(path, 0)))
- for (i = 1; i < t1; ++i) {
- char = C.JSString_methods._codeUnitAt$1(path, i);
- if (char === 58)
- return C.JSString_methods.substring$2(path, 0, i) + "%3A" + C.JSString_methods.substring$1(path, i + 1);
- if (char > 127 || (C.List_JYB[char >>> 4] & 1 << (char & 15)) === 0)
- break;
- }
- return path;
- },
- _Uri__toWindowsFilePath: function(uri) {
- var hasDriveLetter, t2, host,
- segments = uri.get$pathSegments(),
- t1 = segments.length;
- if (t1 > 0 && J.get$length$asx(segments[0]) === 2 && J.codeUnitAt$1$s(segments[0], 1) === 58) {
- P._Uri__checkWindowsDriveLetter(J.codeUnitAt$1$s(segments[0], 0), false);
- P._Uri__checkWindowsPathReservedCharacters(segments, false, 1);
- hasDriveLetter = true;
- } else {
- P._Uri__checkWindowsPathReservedCharacters(segments, false, 0);
- hasDriveLetter = false;
- }
- t2 = uri.get$hasAbsolutePath() && !hasDriveLetter ? "\\" : "";
- if (uri.get$hasAuthority()) {
- host = uri.get$host();
- if (host.length !== 0)
- t2 = t2 + "\\" + H.S(host) + "\\";
- }
- t2 = P.StringBuffer__writeAll(t2, segments, "\\");
- t1 = hasDriveLetter && t1 === 1 ? t2 + "\\" : t2;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- _Uri__hexCharPairToByte: function(s, pos) {
- var byte, i, charCode;
- for (byte = 0, i = 0; i < 2; ++i) {
- charCode = C.JSString_methods._codeUnitAt$1(s, pos + i);
- if (48 <= charCode && charCode <= 57)
- byte = byte * 16 + charCode - 48;
- else {
- charCode |= 32;
- if (97 <= charCode && charCode <= 102)
- byte = byte * 16 + charCode - 87;
- else
- throw H.wrapException(P.ArgumentError$("Invalid URL encoding"));
- }
- }
- return byte;
- },
- _Uri__uriDecode: function(text, start, end, encoding, plusToSpace) {
- var simple, codeUnit, t2, bytes,
- t1 = J.getInterceptor$s(text),
- i = start;
- while (true) {
- if (!(i < end)) {
- simple = true;
- break;
- }
- codeUnit = t1._codeUnitAt$1(text, i);
- if (codeUnit <= 127)
- if (codeUnit !== 37)
- t2 = false;
- else
- t2 = true;
- else
- t2 = true;
- if (t2) {
- simple = false;
- break;
- }
- ++i;
- }
- if (simple) {
- if (C.C_Utf8Codec !== encoding)
- t2 = false;
- else
- t2 = true;
- if (t2)
- return t1.substring$2(text, start, end);
- else
- bytes = new H.CodeUnits(t1.substring$2(text, start, end));
- } else {
- bytes = H.setRuntimeTypeInfo([], [P.int]);
- for (i = start; i < end; ++i) {
- codeUnit = t1._codeUnitAt$1(text, i);
- if (codeUnit > 127)
- throw H.wrapException(P.ArgumentError$("Illegal percent encoding in URI"));
- if (codeUnit === 37) {
- if (i + 3 > text.length)
- throw H.wrapException(P.ArgumentError$("Truncated URI"));
- bytes.push(P._Uri__hexCharPairToByte(text, i + 1));
- i += 2;
- } else
- bytes.push(codeUnit);
- }
- }
- return new P.Utf8Decoder(false).convert$1(bytes);
- },
- _Uri__isAlphabeticCharacter: function(codeUnit) {
- var lowerCase = codeUnit | 32;
- return 97 <= lowerCase && lowerCase <= 122;
- },
- UriData__writeUri: function(mimeType, charsetName, parameters, buffer, indices) {
- var t1, slashIndex;
- if (mimeType == null || mimeType === "text/plain")
- mimeType = "";
- if (mimeType.length === 0 || mimeType === "application/octet-stream")
- t1 = buffer._contents += mimeType;
- else {
- slashIndex = P.UriData__validateMimeType(mimeType);
- if (slashIndex < 0)
- throw H.wrapException(P.ArgumentError$value(mimeType, "mimeType", "Invalid MIME type"));
- t1 = buffer._contents += H.S(P._Uri__uriEncode(C.List_qFt, C.JSString_methods.substring$2(mimeType, 0, slashIndex), C.C_Utf8Codec, false));
- buffer._contents = t1 + "/";
- t1 = buffer._contents += H.S(P._Uri__uriEncode(C.List_qFt, C.JSString_methods.substring$1(mimeType, slashIndex + 1), C.C_Utf8Codec, false));
- }
- if (charsetName != null) {
- indices.push(t1.length);
- indices.push(buffer._contents.length + 8);
- buffer._contents += ";charset=";
- buffer._contents += H.S(P._Uri__uriEncode(C.List_qFt, charsetName, C.C_Utf8Codec, false));
- }
- },
- UriData__validateMimeType: function(mimeType) {
- var t1, slashIndex, i;
- for (t1 = mimeType.length, slashIndex = -1, i = 0; i < t1; ++i) {
- if (C.JSString_methods._codeUnitAt$1(mimeType, i) !== 47)
- continue;
- if (slashIndex < 0) {
- slashIndex = i;
- continue;
- }
- return -1;
- }
- return slashIndex;
- },
- UriData__parse: function(text, start, sourceUri) {
- var t1, i, slashIndex, char, equalsIndex, lastSeparator, t2, data,
- _s17_ = "Invalid MIME type",
- indices = H.setRuntimeTypeInfo([start - 1], [P.int]);
- for (t1 = text.length, i = start, slashIndex = -1, char = null; i < t1; ++i) {
- char = C.JSString_methods._codeUnitAt$1(text, i);
- if (char === 44 || char === 59)
- break;
- if (char === 47) {
- if (slashIndex < 0) {
- slashIndex = i;
- continue;
- }
- throw H.wrapException(P.FormatException$(_s17_, text, i));
- }
- }
- if (slashIndex < 0 && i > start)
- throw H.wrapException(P.FormatException$(_s17_, text, i));
- for (; char !== 44;) {
- indices.push(i);
- ++i;
- for (equalsIndex = -1; i < t1; ++i) {
- char = C.JSString_methods._codeUnitAt$1(text, i);
- if (char === 61) {
- if (equalsIndex < 0)
- equalsIndex = i;
- } else if (char === 59 || char === 44)
- break;
- }
- if (equalsIndex >= 0)
- indices.push(equalsIndex);
- else {
- lastSeparator = C.JSArray_methods.get$last(indices);
- if (char !== 44 || i !== lastSeparator + 7 || !C.JSString_methods.startsWith$2(text, "base64", lastSeparator + 1))
- throw H.wrapException(P.FormatException$("Expecting '='", text, i));
- break;
- }
- }
- indices.push(i);
- t2 = i + 1;
- if ((indices.length & 1) === 1)
- text = C.C_Base64Codec.normalize$3(text, t2, t1);
- else {
- data = P._Uri__normalize(text, t2, t1, C.List_CVk, true);
- if (data != null)
- text = C.JSString_methods.replaceRange$3(text, t2, t1, data);
- }
- return new P.UriData(text, indices, sourceUri);
- },
- UriData__uriEncodeBytes: function(canonicalTable, bytes, buffer) {
- var t1, byteOr, i, byte,
- _s16_ = "0123456789ABCDEF";
- for (t1 = J.getInterceptor$asx(bytes), byteOr = 0, i = 0; i < t1.get$length(bytes); ++i) {
- byte = t1.$index(bytes, i);
- byteOr |= byte;
- if (byte < 128 && (canonicalTable[C.JSInt_methods._shrOtherPositive$1(byte, 4)] & 1 << (byte & 15)) !== 0)
- buffer._contents += H.Primitives_stringFromCharCode(byte);
- else {
- buffer._contents += H.Primitives_stringFromCharCode(37);
- buffer._contents += H.Primitives_stringFromCharCode(C.JSString_methods._codeUnitAt$1(_s16_, C.JSInt_methods._shrOtherPositive$1(byte, 4)));
- buffer._contents += H.Primitives_stringFromCharCode(C.JSString_methods._codeUnitAt$1(_s16_, byte & 15));
- }
- }
- if ((byteOr & 4294967040) >>> 0 !== 0)
- for (i = 0; i < t1.get$length(bytes); ++i) {
- byte = t1.$index(bytes, i);
- if (byte < 0 || byte > 255)
- throw H.wrapException(P.ArgumentError$value(byte, "non-byte value", null));
- }
- },
- _createTables: function() {
- var _s77_ = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-._~!$&'()*+,;=",
- _s1_ = ".", _s1_0 = ":", _s1_1 = "/", _s1_2 = "?", _s1_3 = "#",
- tables = P.List_List$generate(22, new P._createTables_closure(), true, P.Uint8List),
- t1 = new P._createTables_build(tables),
- t2 = new P._createTables_setChars(),
- t3 = new P._createTables_setRange(),
- b = t1.call$2(0, 225);
- t2.call$3(b, _s77_, 1);
- t2.call$3(b, _s1_, 14);
- t2.call$3(b, _s1_0, 34);
- t2.call$3(b, _s1_1, 3);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(14, 225);
- t2.call$3(b, _s77_, 1);
- t2.call$3(b, _s1_, 15);
- t2.call$3(b, _s1_0, 34);
- t2.call$3(b, _s1_1, 234);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(15, 225);
- t2.call$3(b, _s77_, 1);
- t2.call$3(b, "%", 225);
- t2.call$3(b, _s1_0, 34);
- t2.call$3(b, _s1_1, 9);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(1, 225);
- t2.call$3(b, _s77_, 1);
- t2.call$3(b, _s1_0, 34);
- t2.call$3(b, _s1_1, 10);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(2, 235);
- t2.call$3(b, _s77_, 139);
- t2.call$3(b, _s1_1, 131);
- t2.call$3(b, _s1_, 146);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(3, 235);
- t2.call$3(b, _s77_, 11);
- t2.call$3(b, _s1_1, 68);
- t2.call$3(b, _s1_, 18);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(4, 229);
- t2.call$3(b, _s77_, 5);
- t3.call$3(b, "AZ", 229);
- t2.call$3(b, _s1_0, 102);
- t2.call$3(b, "@", 68);
- t2.call$3(b, "[", 232);
- t2.call$3(b, _s1_1, 138);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(5, 229);
- t2.call$3(b, _s77_, 5);
- t3.call$3(b, "AZ", 229);
- t2.call$3(b, _s1_0, 102);
- t2.call$3(b, "@", 68);
- t2.call$3(b, _s1_1, 138);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(6, 231);
- t3.call$3(b, "19", 7);
- t2.call$3(b, "@", 68);
- t2.call$3(b, _s1_1, 138);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(7, 231);
- t3.call$3(b, "09", 7);
- t2.call$3(b, "@", 68);
- t2.call$3(b, _s1_1, 138);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- t2.call$3(t1.call$2(8, 8), "]", 5);
- b = t1.call$2(9, 235);
- t2.call$3(b, _s77_, 11);
- t2.call$3(b, _s1_, 16);
- t2.call$3(b, _s1_1, 234);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(16, 235);
- t2.call$3(b, _s77_, 11);
- t2.call$3(b, _s1_, 17);
- t2.call$3(b, _s1_1, 234);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(17, 235);
- t2.call$3(b, _s77_, 11);
- t2.call$3(b, _s1_1, 9);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(10, 235);
- t2.call$3(b, _s77_, 11);
- t2.call$3(b, _s1_, 18);
- t2.call$3(b, _s1_1, 234);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(18, 235);
- t2.call$3(b, _s77_, 11);
- t2.call$3(b, _s1_, 19);
- t2.call$3(b, _s1_1, 234);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(19, 235);
- t2.call$3(b, _s77_, 11);
- t2.call$3(b, _s1_1, 234);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(11, 235);
- t2.call$3(b, _s77_, 11);
- t2.call$3(b, _s1_1, 10);
- t2.call$3(b, _s1_2, 172);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(12, 236);
- t2.call$3(b, _s77_, 12);
- t2.call$3(b, _s1_2, 12);
- t2.call$3(b, _s1_3, 205);
- b = t1.call$2(13, 237);
- t2.call$3(b, _s77_, 13);
- t2.call$3(b, _s1_2, 13);
- t3.call$3(t1.call$2(20, 245), "az", 21);
- b = t1.call$2(21, 245);
- t3.call$3(b, "az", 21);
- t3.call$3(b, "09", 21);
- t2.call$3(b, "+-.", 21);
- return tables;
- },
- _scan: function(uri, start, end, state, indices) {
- var t1, i, table, char, transition,
- tables = $.$get$_scannerTables();
- for (t1 = J.getInterceptor$s(uri), i = start; i < end; ++i) {
- table = tables[state];
- char = t1._codeUnitAt$1(uri, i) ^ 96;
- transition = table[char > 95 ? 31 : char];
- state = transition & 31;
- indices[transition >>> 5] = i;
- }
- return state;
- },
- NoSuchMethodError_toString_closure: function NoSuchMethodError_toString_closure(t0, t1) {
- this._box_0 = t0;
- this.sb = t1;
- },
- bool: function bool() {
- },
- DateTime: function DateTime(t0, t1) {
- this._value = t0;
- this.isUtc = t1;
- },
- double: function double() {
- },
- Duration: function Duration(t0) {
- this._duration = t0;
- },
- Duration_toString_sixDigits: function Duration_toString_sixDigits() {
- },
- Duration_toString_twoDigits: function Duration_toString_twoDigits() {
- },
- Error: function Error() {
- },
- NullThrownError: function NullThrownError() {
- },
- ArgumentError: function ArgumentError(t0, t1, t2, t3) {
- var _ = this;
- _._hasValue = t0;
- _.invalidValue = t1;
- _.name = t2;
- _.message = t3;
- },
- RangeError: function RangeError(t0, t1, t2, t3, t4, t5) {
- var _ = this;
- _.start = t0;
- _.end = t1;
- _._hasValue = t2;
- _.invalidValue = t3;
- _.name = t4;
- _.message = t5;
- },
- IndexError: function IndexError(t0, t1, t2, t3, t4) {
- var _ = this;
- _.length = t0;
- _._hasValue = t1;
- _.invalidValue = t2;
- _.name = t3;
- _.message = t4;
- },
- NoSuchMethodError: function NoSuchMethodError(t0, t1, t2, t3) {
- var _ = this;
- _._core$_receiver = t0;
- _._memberName = t1;
- _._core$_arguments = t2;
- _._namedArguments = t3;
- },
- UnsupportedError: function UnsupportedError(t0) {
- this.message = t0;
- },
- UnimplementedError: function UnimplementedError(t0) {
- this.message = t0;
- },
- StateError: function StateError(t0) {
- this.message = t0;
- },
- ConcurrentModificationError: function ConcurrentModificationError(t0) {
- this.modifiedObject = t0;
- },
- OutOfMemoryError: function OutOfMemoryError() {
- },
- StackOverflowError: function StackOverflowError() {
- },
- CyclicInitializationError: function CyclicInitializationError(t0) {
- this.variableName = t0;
- },
- _Exception: function _Exception(t0) {
- this.message = t0;
- },
- FormatException: function FormatException(t0, t1, t2) {
- this.message = t0;
- this.source = t1;
- this.offset = t2;
- },
- Function: function Function() {
- },
- int: function int() {
- },
- Iterable: function Iterable() {
- },
- _GeneratorIterable: function _GeneratorIterable(t0, t1, t2) {
- this.length = t0;
- this._generator = t1;
- this.$ti = t2;
- },
- Iterator: function Iterator() {
- },
- List: function List() {
- },
- Map: function Map() {
- },
- MapEntry: function MapEntry(t0, t1, t2) {
- this.key = t0;
- this.value = t1;
- this.$ti = t2;
- },
- Null: function Null() {
- },
- num: function num() {
- },
- Object: function Object() {
- },
- Match: function Match() {
- },
- RegExpMatch: function RegExpMatch() {
- },
- Set: function Set() {
- },
- StackTrace: function StackTrace() {
- },
- _StringStackTrace: function _StringStackTrace(t0) {
- this._core$_stackTrace = t0;
- },
- String: function String() {
- },
- Runes: function Runes(t0) {
- this.string = t0;
- },
- RuneIterator: function RuneIterator(t0) {
- var _ = this;
- _.string = t0;
- _._nextPosition = _._core$_position = 0;
- _._currentCodePoint = null;
- },
- StringBuffer: function StringBuffer(t0) {
- this._contents = t0;
- },
- StringSink: function StringSink() {
- },
- Symbol0: function Symbol0() {
- },
- Uri: function Uri() {
- },
- Uri__parseIPv4Address_error: function Uri__parseIPv4Address_error(t0) {
- this.host = t0;
- },
- Uri_parseIPv6Address_error: function Uri_parseIPv6Address_error(t0) {
- this.host = t0;
- },
- Uri_parseIPv6Address_parseHex: function Uri_parseIPv6Address_parseHex(t0, t1) {
- this.error = t0;
- this.host = t1;
- },
- _Uri: function _Uri(t0, t1, t2, t3, t4, t5, t6) {
- var _ = this;
- _.scheme = t0;
- _._userInfo = t1;
- _._host = t2;
- _._port = t3;
- _.path = t4;
- _._query = t5;
- _._fragment = t6;
- _._hashCodeCache = _._text = _._pathSegments = null;
- },
- _Uri__Uri$notSimple_closure: function _Uri__Uri$notSimple_closure(t0, t1) {
- this.uri = t0;
- this.portStart = t1;
- },
- _Uri__checkNonWindowsPathReservedCharacters_closure: function _Uri__checkNonWindowsPathReservedCharacters_closure(t0) {
- this.argumentError = t0;
- },
- _Uri__makePath_closure: function _Uri__makePath_closure() {
- },
- UriData: function UriData(t0, t1, t2) {
- this._text = t0;
- this._separatorIndices = t1;
- this._uriCache = t2;
- },
- _createTables_closure: function _createTables_closure() {
- },
- _createTables_build: function _createTables_build(t0) {
- this.tables = t0;
- },
- _createTables_setChars: function _createTables_setChars() {
- },
- _createTables_setRange: function _createTables_setRange() {
- },
- _SimpleUri: function _SimpleUri(t0, t1, t2, t3, t4, t5, t6, t7) {
- var _ = this;
- _._uri = t0;
- _._schemeEnd = t1;
- _._hostStart = t2;
- _._portStart = t3;
- _._pathStart = t4;
- _._queryStart = t5;
- _._fragmentStart = t6;
- _._schemeCache = t7;
- _._hashCodeCache = null;
- },
- _DataUri: function _DataUri(t0, t1, t2, t3, t4, t5, t6) {
- var _ = this;
- _.scheme = t0;
- _._userInfo = t1;
- _._host = t2;
- _._port = t3;
- _.path = t4;
- _._query = t5;
- _._fragment = t6;
- _._hashCodeCache = _._text = _._pathSegments = null;
- },
- max: function(a, b) {
- return Math.max(H.checkNum(a), H.checkNum(b));
- },
- pow: function(x, exponent) {
- H.checkNum(x);
- H.checkNum(exponent);
- return Math.pow(x, exponent);
- },
- Random_Random: function() {
- return C.C__JSRandom;
- },
- _JSRandom: function _JSRandom() {
- },
- Uint8List: function Uint8List() {
- },
- _convertDartFunctionFast: function(f) {
- var ret,
- existing = f.$dart_jsFunction;
- if (existing != null)
- return existing;
- ret = function(_call, f) {
- return function() {
- return _call(f, Array.prototype.slice.apply(arguments));
- };
- }(P._callDartFunctionFast, f);
- ret[$.$get$DART_CLOSURE_PROPERTY_NAME()] = f;
- f.$dart_jsFunction = ret;
- return ret;
- },
- _convertDartFunctionFastCaptureThis: function(f) {
- var ret,
- existing = f._$dart_jsFunctionCaptureThis;
- if (existing != null)
- return existing;
- ret = function(_call, f) {
- return function() {
- return _call(f, this, Array.prototype.slice.apply(arguments));
- };
- }(P._callDartFunctionFastCaptureThis, f);
- ret[$.$get$DART_CLOSURE_PROPERTY_NAME()] = f;
- f._$dart_jsFunctionCaptureThis = ret;
- return ret;
- },
- _callDartFunctionFast: function(callback, $arguments) {
- return P.Function_apply(callback, $arguments);
- },
- _callDartFunctionFastCaptureThis: function(callback, $self, $arguments) {
- var t1 = [$self];
- C.JSArray_methods.addAll$1(t1, $arguments);
- return P.Function_apply(callback, t1);
- },
- allowInterop: function(f) {
- if (typeof f == "function")
- return f;
- else
- return P._convertDartFunctionFast(f);
- },
- allowInteropCaptureThis: function(f) {
- if (typeof f == "function")
- throw H.wrapException(P.ArgumentError$("Function is already a JS function so cannot capture this."));
- else
- return P._convertDartFunctionFastCaptureThis(f);
- },
- callConstructor: function(constr, $arguments) {
- var args, factoryFunction;
- if ($arguments instanceof Array)
- switch ($arguments.length) {
- case 0:
- return new constr();
- case 1:
- return new constr($arguments[0]);
- case 2:
- return new constr($arguments[0], $arguments[1]);
- case 3:
- return new constr($arguments[0], $arguments[1], $arguments[2]);
- case 4:
- return new constr($arguments[0], $arguments[1], $arguments[2], $arguments[3]);
- }
- args = [null];
- C.JSArray_methods.addAll$1(args, $arguments);
- factoryFunction = constr.bind.apply(constr, args);
- String(factoryFunction);
- return new factoryFunction();
- }
- },
- N = {ArgParser: function ArgParser(t0, t1, t2, t3, t4, t5) {
- var _ = this;
- _._arg_parser$_options = t0;
- _.options = t1;
- _.commands = t2;
- _._optionsAndSeparators = t3;
- _.allowTrailingOptions = t4;
- _.usageLineLength = t5;
- }, ArgParser_findByAbbreviation_closure: function ArgParser_findByAbbreviation_closure(t0) {
- this.abbr = t0;
- }, ArgParser_findByAbbreviation_closure0: function ArgParser_findByAbbreviation_closure0() {
- }, SupportsCondition: function SupportsCondition() {
- }, AttributeSelector: function AttributeSelector(t0, t1, t2, t3) {
- var _ = this;
- _.name = t0;
- _.op = t1;
- _.value = t2;
- _.modifier = t3;
- }, AttributeOperator: function AttributeOperator(t0) {
- this._attribute$_text = t0;
- }, IDSelector: function IDSelector(t0) {
- this.name = t0;
- }, IDSelector_unify_closure: function IDSelector_unify_closure(t0) {
- this.$this = t0;
- }, PlaceholderSelector: function PlaceholderSelector(t0) {
- this.name = t0;
- }, UniversalSelector: function UniversalSelector(t0) {
- this.namespace = t0;
- }, NoSourceMapBuffer: function NoSourceMapBuffer(t0) {
- this._no_source_map_buffer$_buffer = t0;
- },
- serialize: function(node, charset, indentWidth, inspect, lineFeed, sourceMap, style, useSpaces) {
- var t1, css, t2, prefix, t3,
- visitor = N._SerializeVisitor$(indentWidth == null ? 2 : indentWidth, inspect, lineFeed, true, sourceMap, style, useSpaces);
- node.accept$1(visitor);
- t1 = visitor._serialize$_buffer;
- css = t1.toString$0(0);
- if (charset) {
- t2 = new H.CodeUnits(css);
- t2 = t2.any$1(t2, new N.serialize_closure());
- } else
- t2 = false;
- if (t2)
- prefix = style === C.OutputStyle_compressed ? "\ufeff" : '@charset "UTF-8";\n';
- else
- prefix = "";
- t2 = prefix + css;
- t3 = sourceMap ? t1.buildSourceMap$1$prefix(prefix) : null;
- if (sourceMap)
- t1.get$sourceFiles();
- return new N.SerializeResult(t2, t3);
- },
- serializeValue: function(value, inspect, quote) {
- var visitor = N._SerializeVisitor$(null, inspect, null, quote, false, null, true);
- value.accept$1(visitor);
- return visitor._serialize$_buffer.toString$0(0);
- },
- _SerializeVisitor$: function(indentWidth, inspect, lineFeed, quote, sourceMap, style, useSpaces) {
- var t1 = sourceMap ? new D.SourceMapBuffer(new P.StringBuffer(""), H.setRuntimeTypeInfo([], [L.Entry]), P.LinkedHashMap_LinkedHashMap$_empty(P.Uri, Y.SourceFile)) : new N.NoSourceMapBuffer(new P.StringBuffer("")),
- t2 = style == null ? C.OutputStyle_expanded : style,
- t3 = useSpaces ? 32 : 9,
- t4 = indentWidth == null ? 2 : indentWidth,
- t5 = lineFeed == null ? C.LineFeed_D6m : lineFeed;
- P.RangeError_checkValueInInterval(t4, 0, 10, "indentWidth");
- return new N._SerializeVisitor(t1, t2, inspect, quote, t3, t4, t5);
- },
- serialize_closure: function serialize_closure() {
- },
- _SerializeVisitor: function _SerializeVisitor(t0, t1, t2, t3, t4, t5, t6) {
- var _ = this;
- _._serialize$_buffer = t0;
- _._indentation = 0;
- _._style = t1;
- _._inspect = t2;
- _._quote = t3;
- _._indentCharacter = t4;
- _._indentWidth = t5;
- _._lineFeed = t6;
- },
- _SerializeVisitor_visitCssComment_closure: function _SerializeVisitor_visitCssComment_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _SerializeVisitor_visitCssAtRule_closure: function _SerializeVisitor_visitCssAtRule_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _SerializeVisitor_visitCssMediaRule_closure: function _SerializeVisitor_visitCssMediaRule_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _SerializeVisitor_visitCssImport_closure: function _SerializeVisitor_visitCssImport_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _SerializeVisitor_visitCssImport__closure: function _SerializeVisitor_visitCssImport__closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _SerializeVisitor_visitCssKeyframeBlock_closure: function _SerializeVisitor_visitCssKeyframeBlock_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _SerializeVisitor_visitCssStyleRule_closure: function _SerializeVisitor_visitCssStyleRule_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _SerializeVisitor_visitCssSupportsRule_closure: function _SerializeVisitor_visitCssSupportsRule_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _SerializeVisitor_visitCssDeclaration_closure: function _SerializeVisitor_visitCssDeclaration_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _SerializeVisitor_visitCssDeclaration_closure0: function _SerializeVisitor_visitCssDeclaration_closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _SerializeVisitor_visitList_closure: function _SerializeVisitor_visitList_closure() {
- },
- _SerializeVisitor_visitList_closure0: function _SerializeVisitor_visitList_closure0(t0, t1) {
- this.$this = t0;
- this.value = t1;
- },
- _SerializeVisitor_visitList_closure1: function _SerializeVisitor_visitList_closure1(t0) {
- this.$this = t0;
- },
- _SerializeVisitor_visitMap_closure: function _SerializeVisitor_visitMap_closure(t0, t1) {
- this.$this = t0;
- this.map = t1;
- },
- _SerializeVisitor_visitSelectorList_closure: function _SerializeVisitor_visitSelectorList_closure() {
- },
- _SerializeVisitor__write_closure: function _SerializeVisitor__write_closure(t0, t1) {
- this.$this = t0;
- this.value = t1;
- },
- _SerializeVisitor__visitChildren_closure: function _SerializeVisitor__visitChildren_closure(t0, t1, t2) {
- this._box_0 = t0;
- this.$this = t1;
- this.children = t2;
- },
- OutputStyle: function OutputStyle(t0) {
- this._serialize$_name = t0;
- },
- LineFeed: function LineFeed(t0, t1) {
- this.name = t0;
- this.text = t1;
- },
- SerializeResult: function SerializeResult(t0, t1) {
- this.css = t0;
- this.sourceMap = t1;
- },
- warn: function(message, deprecation) {
- var warnDefinition = $.Zone__current.$index(0, C.Symbol__warn);
- if (warnDefinition == null)
- throw H.wrapException(P.ArgumentError$("warn() may only be called within a custom function or importer callback."));
- warnDefinition.call$2(message, deprecation);
- },
- withWarnCallback: function(warn, callback) {
- return P.runZoned(new N.withWarnCallback_closure(callback), P.LinkedHashMap__makeLiteral([C.Symbol__warn, warn]));
- },
- withWarnCallback_closure: function withWarnCallback_closure(t0) {
- this.callback = t0;
- },
- UnparsedFrame: function UnparsedFrame(t0, t1) {
- this.uri = t0;
- this.member = t1;
- }
- },
- Z = {
- ArgParserException$: function(message, commands) {
- return new Z.ArgParserException(commands == null ? C.List_empty : P.List_List$unmodifiable(commands, P.String), message, null, null);
- },
- ArgParserException: function ArgParserException(t0, t1, t2, t3) {
- var _ = this;
- _.commands = t0;
- _.message = t1;
- _.source = t2;
- _.offset = t3;
- },
- Argument: function Argument(t0, t1, t2) {
- this.name = t0;
- this.defaultValue = t1;
- this.span = t2;
- },
- ConfiguredVariable: function ConfiguredVariable(t0, t1, t2, t3) {
- var _ = this;
- _.name = t0;
- _.expression = t1;
- _.isGuarded = t2;
- _.span = t3;
- },
- BooleanExpression: function BooleanExpression(t0, t1) {
- this.value = t0;
- this.span = t1;
- },
- VariableDeclaration$: function($name, expression, span, comment, global, guarded, namespace) {
- if (namespace != null && global)
- H.throwExpression(P.ArgumentError$("Other modules' members can't be defined with !global."));
- return new Z.VariableDeclaration(namespace, $name, expression, guarded, global, span);
- },
- VariableDeclaration: function VariableDeclaration(t0, t1, t2, t3, t4, t5) {
- var _ = this;
- _.namespace = t0;
- _.name = t1;
- _.expression = t2;
- _.isGuarded = t3;
- _.isGlobal = t4;
- _.span = t5;
- },
- ConfiguredValue: function ConfiguredValue(t0, t1, t2) {
- this.value = t0;
- this.configurationSpan = t1;
- this.assignmentNode = t2;
- },
- InterpolationBuffer: function InterpolationBuffer(t0, t1) {
- this._interpolation_buffer$_text = t0;
- this._interpolation_buffer$_contents = t1;
- },
- RenderContext: function RenderContext() {
- },
- closure141: function closure141() {
- },
- _closure19: function _closure19() {
- },
- _closure20: function _closure20() {
- },
- MergedMapView$: function(maps, $K, $V) {
- var t1 = new Z.MergedMapView(P.LinkedHashMap_LinkedHashMap$_empty($K, [P.Map, $K, $V]), [$K, $V]);
- t1.MergedMapView$1(maps, $K, $V);
- return t1;
- },
- MergedMapView: function MergedMapView(t0, t1) {
- this._mapsByKey = t0;
- this.$ti = t1;
- },
- SassBoolean: function SassBoolean(t0) {
- this.value = t0;
- },
- LineScanner: function LineScanner(t0, t1) {
- var _ = this;
- _._line_scanner$_column = _._line_scanner$_line = 0;
- _.sourceUrl = t0;
- _.string = t1;
- _._string_scanner$_position = 0;
- _._lastMatchPosition = _._lastMatch = null;
- }
- },
- V = {
- ArgResults$_: function(_parser, _parsed, $name, command, rest, $arguments) {
- return new V.ArgResults(_parser, _parsed, $name, new P.UnmodifiableListView(rest, [P.String]));
- },
- ArgResults: function ArgResults(t0, t1, t2, t3) {
- var _ = this;
- _._parser = t0;
- _._parsed = t1;
- _.name = t2;
- _.rest = t3;
- },
- ErrorResult: function ErrorResult(t0, t1) {
- this.error = t0;
- this.stackTrace = t1;
- },
- ModifiableCssStylesheet: function ModifiableCssStylesheet(t0, t1, t2) {
- var _ = this;
- _.span = t0;
- _.children = t1;
- _._children = t2;
- _._indexInParent = _._parent = null;
- _.isGroupEnd = false;
- },
- CssStylesheet: function CssStylesheet(t0, t1) {
- this.children = t0;
- this.span = t1;
- },
- AtRootQuery: function AtRootQuery(t0, t1, t2, t3) {
- var _ = this;
- _.include = t0;
- _.names = t1;
- _._all = t2;
- _._at_root_query$_rule = t3;
- },
- BinaryOperationExpression: function BinaryOperationExpression(t0, t1, t2, t3) {
- var _ = this;
- _.operator = t0;
- _.left = t1;
- _.right = t2;
- _.allowsSlash = t3;
- },
- BinaryOperator: function BinaryOperator(t0, t1, t2) {
- this.name = t0;
- this.operator = t1;
- this.precedence = t2;
- },
- AtRootRule: function AtRootRule(t0, t1, t2, t3) {
- var _ = this;
- _.query = t0;
- _.span = t1;
- _.children = t2;
- _.hasDeclarations = t3;
- },
- EachRule: function EachRule(t0, t1, t2, t3, t4) {
- var _ = this;
- _.variables = t0;
- _.list = t1;
- _.span = t2;
- _.children = t3;
- _.hasDeclarations = t4;
- },
- EachRule_toString_closure: function EachRule_toString_closure() {
- },
- IfRule: function IfRule(t0, t1, t2) {
- this.clauses = t0;
- this.lastClause = t1;
- this.span = t2;
- },
- IfRule_toString_closure: function IfRule_toString_closure(t0) {
- this._box_0 = t0;
- },
- IfClause: function IfClause(t0, t1, t2) {
- this.expression = t0;
- this.children = t1;
- this.hasDeclarations = t2;
- },
- IfClause$__closure: function IfClause$__closure() {
- },
- IfClause$___closure: function IfClause$___closure() {
- },
- Stylesheet$: function(children, span, plainCss) {
- var t1 = H.setRuntimeTypeInfo([], [T.UseRule]),
- t2 = H.setRuntimeTypeInfo([], [L.ForwardRule]),
- t3 = P.List_List$unmodifiable(children, O.Statement),
- t4 = C.JSArray_methods.any$1(t3, new M.ParentStatement_closure());
- t1 = new V.Stylesheet(span, plainCss, t1, t2, t3, t4);
- t1.Stylesheet$3$plainCss(children, span, plainCss);
- return t1;
- },
- Stylesheet_Stylesheet$parse: function(contents, syntax, logger, url) {
- var t1, t2, t3, t4;
- switch (syntax) {
- case C.Syntax_Sass:
- contents.toString;
- t1 = new H.CodeUnits(contents);
- t2 = H.setRuntimeTypeInfo([0], [P.int]);
- t3 = typeof url === "string";
- t4 = t3 ? P.Uri_parse(url) : H.interceptedTypeCast(url, "$isUri");
- t2 = new Y.SourceFile(t4, t2, new Uint32Array(H._ensureNativeList(t1.toList$0(t1))));
- t2.SourceFile$decoded$2$url(t1, url);
- t1 = t3 ? P.Uri_parse(url) : H.interceptedTypeCast(url, "$isUri");
- t3 = logger == null ? C.StderrLogger_false : logger;
- return new U.SassParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), new S.SpanScanner(t2, t1, contents), t3).parse$0();
- case C.Syntax_SCSS:
- t1 = S.SpanScanner$(contents, url);
- t2 = logger == null ? C.StderrLogger_false : logger;
- return new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), t1, t2).parse$0();
- case C.Syntax_CSS:
- contents.toString;
- t1 = new H.CodeUnits(contents);
- t2 = H.setRuntimeTypeInfo([0], [P.int]);
- t3 = typeof url === "string";
- t4 = t3 ? P.Uri_parse(url) : H.interceptedTypeCast(url, "$isUri");
- t2 = new Y.SourceFile(t4, t2, new Uint32Array(H._ensureNativeList(t1.toList$0(t1))));
- t2.SourceFile$decoded$2$url(t1, url);
- t1 = t3 ? P.Uri_parse(url) : H.interceptedTypeCast(url, "$isUri");
- t3 = logger == null ? C.StderrLogger_false : logger;
- return new Q.CssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), new S.SpanScanner(t2, t1, contents), t3).parse$0();
- default:
- throw H.wrapException(P.ArgumentError$("Unknown syntax " + syntax.toString$0(0) + "."));
- }
- },
- Stylesheet: function Stylesheet(t0, t1, t2, t3, t4, t5) {
- var _ = this;
- _.span = t0;
- _.plainCss = t1;
- _._uses = t2;
- _._forwards = t3;
- _.children = t4;
- _.hasDeclarations = t5;
- },
- JSError: function JSError() {
- },
- AtRootQueryParser: function AtRootQueryParser(t0, t1) {
- this.scanner = t0;
- this.logger = t1;
- },
- AtRootQueryParser_parse_closure: function AtRootQueryParser_parse_closure(t0) {
- this.$this = t0;
- },
- StylesheetParser: function StylesheetParser() {
- },
- StylesheetParser_parse_closure: function StylesheetParser_parse_closure(t0) {
- this.$this = t0;
- },
- StylesheetParser_parse__closure: function StylesheetParser_parse__closure(t0) {
- this.$this = t0;
- },
- StylesheetParser_parse__closure0: function StylesheetParser_parse__closure0() {
- },
- StylesheetParser_parseArgumentDeclaration_closure: function StylesheetParser_parseArgumentDeclaration_closure(t0) {
- this.$this = t0;
- },
- StylesheetParser_parseVariableDeclaration_closure: function StylesheetParser_parseVariableDeclaration_closure(t0) {
- this.$this = t0;
- },
- StylesheetParser_parseUseRule_closure: function StylesheetParser_parseUseRule_closure(t0) {
- this.$this = t0;
- },
- StylesheetParser__parseSingleProduction_closure: function StylesheetParser__parseSingleProduction_closure(t0, t1) {
- this.$this = t0;
- this.production = t1;
- },
- StylesheetParser_parseSignature_closure: function StylesheetParser_parseSignature_closure(t0) {
- this.$this = t0;
- },
- StylesheetParser__statement_closure: function StylesheetParser__statement_closure(t0) {
- this.$this = t0;
- },
- StylesheetParser_variableDeclarationWithoutNamespace_closure: function StylesheetParser_variableDeclarationWithoutNamespace_closure(t0, t1) {
- this._box_0 = t0;
- this.$this = t1;
- },
- StylesheetParser_variableDeclarationWithoutNamespace_closure0: function StylesheetParser_variableDeclarationWithoutNamespace_closure0(t0) {
- this.declaration = t0;
- },
- StylesheetParser__declarationOrBuffer_closure: function StylesheetParser__declarationOrBuffer_closure(t0) {
- this.name = t0;
- },
- StylesheetParser__declarationOrBuffer_closure0: function StylesheetParser__declarationOrBuffer_closure0(t0, t1) {
- this._box_0 = t0;
- this.name = t1;
- },
- StylesheetParser__styleRule_closure: function StylesheetParser__styleRule_closure(t0, t1, t2) {
- this._box_0 = t0;
- this.$this = t1;
- this.wasInStyleRule = t2;
- },
- StylesheetParser__propertyOrVariableDeclaration_closure: function StylesheetParser__propertyOrVariableDeclaration_closure(t0) {
- this._box_0 = t0;
- },
- StylesheetParser__propertyOrVariableDeclaration_closure0: function StylesheetParser__propertyOrVariableDeclaration_closure0(t0, t1) {
- this._box_0 = t0;
- this.value = t1;
- },
- StylesheetParser__atRootRule_closure: function StylesheetParser__atRootRule_closure(t0) {
- this.query = t0;
- },
- StylesheetParser__atRootRule_closure0: function StylesheetParser__atRootRule_closure0() {
- },
- StylesheetParser__eachRule_closure: function StylesheetParser__eachRule_closure(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.wasInControlDirective = t1;
- _.variables = t2;
- _.list = t3;
- },
- StylesheetParser__functionRule_closure: function StylesheetParser__functionRule_closure(t0, t1, t2) {
- this.name = t0;
- this.$arguments = t1;
- this.precedingComment = t2;
- },
- StylesheetParser__forRule_closure: function StylesheetParser__forRule_closure(t0, t1) {
- this._box_0 = t0;
- this.$this = t1;
- },
- StylesheetParser__forRule_closure0: function StylesheetParser__forRule_closure0(t0, t1, t2, t3, t4, t5) {
- var _ = this;
- _._box_0 = t0;
- _.$this = t1;
- _.wasInControlDirective = t2;
- _.variable = t3;
- _.from = t4;
- _.to = t5;
- },
- StylesheetParser__memberList_closure: function StylesheetParser__memberList_closure(t0, t1, t2) {
- this.$this = t0;
- this.variables = t1;
- this.identifiers = t2;
- },
- StylesheetParser__includeRule_closure: function StylesheetParser__includeRule_closure(t0) {
- this._box_0 = t0;
- },
- StylesheetParser_mediaRule_closure: function StylesheetParser_mediaRule_closure(t0) {
- this.query = t0;
- },
- StylesheetParser__mixinRule_closure: function StylesheetParser__mixinRule_closure(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.name = t1;
- _.$arguments = t2;
- _.precedingComment = t3;
- },
- StylesheetParser_mozDocumentRule_closure: function StylesheetParser_mozDocumentRule_closure(t0, t1, t2, t3) {
- var _ = this;
- _._box_0 = t0;
- _.$this = t1;
- _.name = t2;
- _.value = t3;
- },
- StylesheetParser_supportsRule_closure: function StylesheetParser_supportsRule_closure(t0) {
- this.condition = t0;
- },
- StylesheetParser__whileRule_closure: function StylesheetParser__whileRule_closure(t0, t1, t2) {
- this.$this = t0;
- this.wasInControlDirective = t1;
- this.condition = t2;
- },
- StylesheetParser_unknownAtRule_closure: function StylesheetParser_unknownAtRule_closure(t0, t1) {
- this._box_0 = t0;
- this.name = t1;
- },
- StylesheetParser_expression_resetState: function StylesheetParser_expression_resetState(t0, t1, t2) {
- this._box_0 = t0;
- this.$this = t1;
- this.start = t2;
- },
- StylesheetParser_expression_resolveOneOperation: function StylesheetParser_expression_resolveOneOperation(t0, t1) {
- this._box_0 = t0;
- this.$this = t1;
- },
- StylesheetParser_expression_resolveOperations: function StylesheetParser_expression_resolveOperations(t0, t1) {
- this._box_0 = t0;
- this.resolveOneOperation = t1;
- },
- StylesheetParser_expression_addSingleExpression: function StylesheetParser_expression_addSingleExpression(t0, t1, t2, t3) {
- var _ = this;
- _._box_0 = t0;
- _.$this = t1;
- _.resetState = t2;
- _.resolveOperations = t3;
- },
- StylesheetParser_expression_addOperator: function StylesheetParser_expression_addOperator(t0, t1, t2) {
- this._box_0 = t0;
- this.$this = t1;
- this.resolveOneOperation = t2;
- },
- StylesheetParser_expression_resolveSpaceExpressions: function StylesheetParser_expression_resolveSpaceExpressions(t0, t1) {
- this._box_0 = t0;
- this.resolveOperations = t1;
- },
- StylesheetParser__expressionUntilComma_closure: function StylesheetParser__expressionUntilComma_closure(t0) {
- this.$this = t0;
- },
- StylesheetParser__unicodeRange_closure: function StylesheetParser__unicodeRange_closure() {
- },
- StylesheetParser__unicodeRange_closure0: function StylesheetParser__unicodeRange_closure0() {
- },
- StylesheetParser_identifierLike_closure: function StylesheetParser_identifierLike_closure(t0, t1) {
- this.$this = t0;
- this.start = t1;
- },
- StylesheetParser__expressionUntilComparison_closure: function StylesheetParser__expressionUntilComparison_closure(t0) {
- this.$this = t0;
- },
- StylesheetParser__publicIdentifier_closure: function StylesheetParser__publicIdentifier_closure(t0, t1) {
- this.$this = t0;
- this.start = t1;
- },
- cloneCssStylesheet: function(stylesheet, extender) {
- var result = extender.clone$0(),
- t1 = stylesheet.get$span(),
- t2 = B.ModifiableCssNode,
- t3 = H.setRuntimeTypeInfo([], [t2]);
- return new S.Tuple2(new V._CloneCssVisitor(result.item2)._visitChildren$2(new V.ModifiableCssStylesheet(t1, new P.UnmodifiableListView(t3, [t2]), t3), stylesheet), result.item1, [V.ModifiableCssStylesheet, F.Extender]);
- },
- _CloneCssVisitor: function _CloneCssVisitor(t0) {
- this._oldToNewSelectors = t0;
- },
- SourceLocation$: function(offset, column, line, sourceUrl) {
- var t1 = line == null,
- t2 = t1 ? 0 : line;
- if (offset < 0)
- H.throwExpression(P.RangeError$("Offset may not be negative, was " + offset + "."));
- else if (!t1 && line < 0)
- H.throwExpression(P.RangeError$("Line may not be negative, was " + H.S(line) + "."));
- else if (column < 0)
- H.throwExpression(P.RangeError$("Column may not be negative, was " + column + "."));
- return new V.SourceLocation(sourceUrl, offset, t2, column);
- },
- SourceLocation: function SourceLocation(t0, t1, t2, t3) {
- var _ = this;
- _.sourceUrl = t0;
- _.offset = t1;
- _.line = t2;
- _.column = t3;
- },
- SourceSpan: function SourceSpan() {
- },
- SourceSpanBase: function SourceSpanBase() {
- }
- },
- G = {Option: function Option(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) {
- var _ = this;
- _.name = t0;
- _.abbr = t1;
- _.help = t2;
- _.valueHelp = t3;
- _.allowed = t4;
- _.allowedHelp = t5;
- _.defaultsTo = t6;
- _.negatable = t7;
- _.callback = t8;
- _.type = t9;
- _.splitCommas = t10;
- _.hide = t11;
- }, OptionType: function OptionType(t0) {
- this.name = t0;
- },
- Parser$0: function(commandName, grammar, args, $parent, rest) {
- var t1 = P.String,
- t2 = H.setRuntimeTypeInfo([], [t1]);
- if (rest != null)
- C.JSArray_methods.addAll$1(t2, rest);
- return new G.Parser0(commandName, $parent, grammar, args, t2, P.LinkedHashMap_LinkedHashMap$_empty(t1, null));
- },
- Parser0: function Parser0(t0, t1, t2, t3, t4, t5) {
- var _ = this;
- _.commandName = t0;
- _.parent = t1;
- _.grammar = t2;
- _.args = t3;
- _.rest = t4;
- _.results = t5;
- },
- Parser_parse_closure: function Parser_parse_closure(t0) {
- this.$this = t0;
- },
- Parser_setOption_closure: function Parser_setOption_closure() {
- },
- Usage: function Usage(t0, t1) {
- var _ = this;
- _.optionsAndSeparators = t0;
- _.buffer = null;
- _.currentColumn = 0;
- _.columnWidths = null;
- _.newlinesNeeded = _.numHelpLines = 0;
- _.lineLength = t1;
- },
- Usage_generate_closure: function Usage_generate_closure() {
- },
- Usage_buildAllowedList_closure: function Usage_buildAllowedList_closure(t0) {
- this.option = t0;
- },
- StreamQueue: function StreamQueue(t0, t1, t2, t3) {
- var _ = this;
- _._stream_queue$_source = t0;
- _._stream_queue$_subscription = null;
- _._isDone = false;
- _._eventsReceived = 0;
- _._eventQueue = t1;
- _._requestQueue = t2;
- _.$ti = t3;
- },
- StreamQueue__ensureListening_closure: function StreamQueue__ensureListening_closure(t0) {
- this.$this = t0;
- },
- StreamQueue__ensureListening_closure1: function StreamQueue__ensureListening_closure1(t0) {
- this.$this = t0;
- },
- StreamQueue__ensureListening_closure0: function StreamQueue__ensureListening_closure0(t0) {
- this.$this = t0;
- },
- _EventRequest: function _EventRequest() {
- },
- _NextRequest: function _NextRequest(t0, t1) {
- this._completer = t0;
- this.$ti = t1;
- },
- ModifiableCssMediaRule$: function(queries, span) {
- var t1 = P.List_List$unmodifiable(queries, F.CssMediaQuery),
- t2 = B.ModifiableCssNode,
- t3 = H.setRuntimeTypeInfo([], [t2]);
- if (J.get$isEmpty$asx(queries))
- H.throwExpression(P.ArgumentError$value(queries, "queries", "may not be empty."));
- return new G.ModifiableCssMediaRule(t1, span, new P.UnmodifiableListView(t3, [t2]), t3);
- },
- ModifiableCssMediaRule: function ModifiableCssMediaRule(t0, t1, t2, t3) {
- var _ = this;
- _.queries = t0;
- _.span = t1;
- _.children = t2;
- _._children = t3;
- _._indexInParent = _._parent = null;
- _.isGroupEnd = false;
- },
- MediaRule: function MediaRule(t0, t1, t2, t3) {
- var _ = this;
- _.query = t0;
- _.span = t1;
- _.children = t2;
- _.hasDeclarations = t3;
- },
- WhileRule: function WhileRule(t0, t1, t2, t3) {
- var _ = this;
- _.condition = t0;
- _.span = t1;
- _.children = t2;
- _.hasDeclarations = t3;
- },
- Module: function Module() {
- },
- Types: function Types() {
- },
- Parser_isIdentifier: function(text) {
- var exception, logger = null;
- try {
- G.Parser$(text, logger, null)._parseIdentifier$0();
- return true;
- } catch (exception) {
- if (H.unwrapException(exception) instanceof E.SassFormatException)
- return false;
- else
- throw exception;
- }
- },
- Parser$: function(contents, logger, url) {
- var t1, t2, t3, t4;
- contents.toString;
- t1 = new H.CodeUnits(contents);
- t2 = H.setRuntimeTypeInfo([0], [P.int]);
- t3 = typeof url === "string";
- t4 = t3 ? P.Uri_parse(url) : H.interceptedTypeCast(url, "$isUri");
- t2 = new Y.SourceFile(t4, t2, new Uint32Array(H._ensureNativeList(t1.toList$0(t1))));
- t2.SourceFile$decoded$2$url(t1, url);
- t1 = t3 ? P.Uri_parse(url) : H.interceptedTypeCast(url, "$isUri");
- t3 = logger == null ? C.StderrLogger_false : logger;
- return new G.Parser(new S.SpanScanner(t2, t1, contents), t3);
- },
- Parser: function Parser(t0, t1) {
- this.scanner = t0;
- this.logger = t1;
- },
- Parser__parseIdentifier_closure: function Parser__parseIdentifier_closure(t0) {
- this.$this = t0;
- },
- FixedLengthListBuilder: function FixedLengthListBuilder(t0, t1) {
- this._list = t0;
- this._fixed_length_list_builder$_index = 0;
- this.$ti = t1;
- },
- SourceSpanFormatException$: function(message, span, source) {
- return new G.SourceSpanFormatException(source, message, span);
- },
- SourceSpanException: function SourceSpanException() {
- },
- SourceSpanFormatException: function SourceSpanFormatException(t0, t1, t2) {
- this.source = t0;
- this._span_exception$_message = t1;
- this._span = t2;
- }
- },
- E = {Result: function Result() {
- }, PosixStyle: function PosixStyle(t0, t1, t2) {
- this.separatorPattern = t0;
- this.needsSeparatorPattern = t1;
- this.rootPattern = t2;
- }, UserDefinedCallable: function UserDefinedCallable(t0, t1, t2) {
- this.declaration = t0;
- this.environment = t1;
- this.$ti = t2;
- },
- SassException$: function(message, span) {
- return new E.SassException(message, span);
- },
- MultiSpanSassException$: function(message, span, primaryLabel, secondarySpans) {
- return new E.MultiSpanSassException(primaryLabel, H.ConstantMap_ConstantMap$from(secondarySpans, Y.FileSpan, P.String), message, span);
- },
- SassRuntimeException$: function(message, span, trace) {
- return new E.SassRuntimeException(trace, message, span);
- },
- MultiSpanSassRuntimeException$: function(message, span, primaryLabel, secondarySpans, trace) {
- return new E.MultiSpanSassRuntimeException(trace, primaryLabel, H.ConstantMap_ConstantMap$from(secondarySpans, Y.FileSpan, P.String), message, span);
- },
- SassFormatException$: function(message, span) {
- return new E.SassFormatException(message, span);
- },
- SassScriptException$: function(message) {
- return new E.SassScriptException(message);
- },
- MultiSpanSassScriptException$: function(message, primaryLabel, secondarySpans) {
- return new E.MultiSpanSassScriptException(primaryLabel, H.ConstantMap_ConstantMap$from(secondarySpans, Y.FileSpan, P.String), message);
- },
- SassException: function SassException(t0, t1) {
- this._span_exception$_message = t0;
- this._span = t1;
- },
- MultiSpanSassException: function MultiSpanSassException(t0, t1, t2, t3) {
- var _ = this;
- _.primaryLabel = t0;
- _.secondarySpans = t1;
- _._span_exception$_message = t2;
- _._span = t3;
- },
- SassRuntimeException: function SassRuntimeException(t0, t1, t2) {
- this.trace = t0;
- this._span_exception$_message = t1;
- this._span = t2;
- },
- MultiSpanSassRuntimeException: function MultiSpanSassRuntimeException(t0, t1, t2, t3, t4) {
- var _ = this;
- _.trace = t0;
- _.primaryLabel = t1;
- _.secondarySpans = t2;
- _._span_exception$_message = t3;
- _._span = t4;
- },
- SassFormatException: function SassFormatException(t0, t1) {
- this._span_exception$_message = t0;
- this._span = t1;
- },
- SassScriptException: function SassScriptException(t0) {
- this.message = t0;
- },
- MultiSpanSassScriptException: function MultiSpanSassScriptException(t0, t1, t2) {
- this.primaryLabel = t0;
- this.secondarySpans = t1;
- this.message = t2;
- },
- ImporterResult: function ImporterResult(t0, t1, t2) {
- this.contents = t0;
- this._sourceMapUrl = t1;
- this.syntax = t2;
- },
- FiberClass: function FiberClass() {
- },
- Fiber: function Fiber() {
- },
- KeyframeSelectorParser: function KeyframeSelectorParser(t0, t1) {
- this.scanner = t0;
- this.logger = t1;
- },
- KeyframeSelectorParser_parse_closure: function KeyframeSelectorParser_parse_closure(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor$0: function(functions, importCache, logger, nodeImporter, sourceMap) {
- var t6, t7,
- t1 = P.String,
- t2 = P.Uri,
- t3 = [G.Module, B.AsyncCallable],
- t4 = B.AstNode,
- t5 = H.setRuntimeTypeInfo([], [[S.Tuple2, P.String, B.AstNode]]);
- if (nodeImporter == null)
- t6 = importCache == null ? O.AsyncImportCache$none(logger) : importCache;
- else
- t6 = null;
- t7 = logger == null ? C.StderrLogger_false : logger;
- t5 = new E._EvaluateVisitor0(t6, nodeImporter, P.LinkedHashMap_LinkedHashMap$_empty(t1, B.AsyncCallable), P.LinkedHashMap_LinkedHashMap$_empty(t2, t3), P.LinkedHashMap_LinkedHashMap$_empty(t2, t3), P.LinkedHashMap_LinkedHashMap$_empty(t2, t4), t7, sourceMap, Q.AsyncEnvironment$(sourceMap), P.LinkedHashSet_LinkedHashSet$_empty(t1), P.LinkedHashMap_LinkedHashMap$_empty(t2, t4), t5, C.Configuration_Map_empty_null_true);
- t5._EvaluateVisitor$5$functions$importCache$logger$nodeImporter$sourceMap0(functions, importCache, logger, nodeImporter, sourceMap);
- return t5;
- },
- _ArgumentResults$0: function(positional, named, separator, namedNodes, positionalNodes) {
- return new E._ArgumentResults0(positional, positionalNodes, named, namedNodes, separator);
- },
- _EvaluateVisitor0: function _EvaluateVisitor0(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) {
- var _ = this;
- _._async_evaluate$_importCache = t0;
- _._async_evaluate$_nodeImporter = t1;
- _._async_evaluate$_builtInFunctions = t2;
- _._async_evaluate$_builtInModules = t3;
- _._async_evaluate$_modules = t4;
- _._async_evaluate$_moduleNodes = t5;
- _._async_evaluate$_logger = t6;
- _._async_evaluate$_sourceMap = t7;
- _._async_evaluate$_environment = t8;
- _._async_evaluate$_declarationName = _._async_evaluate$_parent = _._async_evaluate$_mediaQueries = _._async_evaluate$_styleRule = null;
- _._async_evaluate$_member = "root stylesheet";
- _._async_evaluate$_importSpan = _._async_evaluate$_callableNode = null;
- _._async_evaluate$_inKeyframes = _._async_evaluate$_atRootExcludingStyleRule = _._async_evaluate$_inUnknownAtRule = _._async_evaluate$_inFunction = false;
- _._async_evaluate$_includedFiles = t9;
- _._async_evaluate$_activeModules = t10;
- _._async_evaluate$_stack = t11;
- _._async_evaluate$_extender = _._async_evaluate$_outOfOrderImports = _._async_evaluate$_endOfImports = _._async_evaluate$_root = _._async_evaluate$_stylesheet = _._async_evaluate$_importer = null;
- _._async_evaluate$_configuration = t12;
- },
- _EvaluateVisitor_closure9: function _EvaluateVisitor_closure9(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_closure10: function _EvaluateVisitor_closure10(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_closure11: function _EvaluateVisitor_closure11(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_closure12: function _EvaluateVisitor_closure12(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_closure13: function _EvaluateVisitor_closure13(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_closure14: function _EvaluateVisitor_closure14(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_closure15: function _EvaluateVisitor_closure15(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_closure16: function _EvaluateVisitor_closure16(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor__closure8: function _EvaluateVisitor__closure8(t0, t1, t2) {
- this.$this = t0;
- this.name = t1;
- this.module = t2;
- },
- _EvaluateVisitor_closure17: function _EvaluateVisitor_closure17(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor__closure6: function _EvaluateVisitor__closure6() {
- },
- _EvaluateVisitor__closure7: function _EvaluateVisitor__closure7() {
- },
- _EvaluateVisitor_closure18: function _EvaluateVisitor_closure18(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor__closure4: function _EvaluateVisitor__closure4(t0, t1) {
- this.values = t0;
- this.span = t1;
- },
- _EvaluateVisitor__closure5: function _EvaluateVisitor__closure5(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_run_closure0: function _EvaluateVisitor_run_closure0(t0, t1, t2) {
- this.$this = t0;
- this.node = t1;
- this.importer = t2;
- },
- _EvaluateVisitor__withWarnCallback_closure0: function _EvaluateVisitor__withWarnCallback_closure0(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor__loadModule_closure0: function _EvaluateVisitor__loadModule_closure0(t0, t1, t2, t3, t4, t5, t6) {
- var _ = this;
- _.$this = t0;
- _.url = t1;
- _.nodeWithSpan = t2;
- _.baseUrl = t3;
- _.namesInErrors = t4;
- _.configuration = t5;
- _.callback = t6;
- },
- _EvaluateVisitor__execute_closure0: function _EvaluateVisitor__execute_closure0(t0, t1, t2, t3, t4, t5) {
- var _ = this;
- _._box_0 = t0;
- _.$this = t1;
- _.importer = t2;
- _.stylesheet = t3;
- _.extender = t4;
- _.configuration = t5;
- },
- _EvaluateVisitor__combineCss_closure2: function _EvaluateVisitor__combineCss_closure2() {
- },
- _EvaluateVisitor__combineCss_closure3: function _EvaluateVisitor__combineCss_closure3(t0) {
- this.selectors = t0;
- },
- _EvaluateVisitor__combineCss_closure4: function _EvaluateVisitor__combineCss_closure4() {
- },
- _EvaluateVisitor__extendModules_closure1: function _EvaluateVisitor__extendModules_closure1(t0) {
- this.originalSelectors = t0;
- },
- _EvaluateVisitor__extendModules_closure2: function _EvaluateVisitor__extendModules_closure2() {
- },
- _EvaluateVisitor__topologicalModules_visitModule0: function _EvaluateVisitor__topologicalModules_visitModule0(t0, t1) {
- this.seen = t0;
- this.sorted = t1;
- },
- _EvaluateVisitor_visitAtRootRule_closure2: function _EvaluateVisitor_visitAtRootRule_closure2(t0, t1) {
- this.$this = t0;
- this.resolved = t1;
- },
- _EvaluateVisitor_visitAtRootRule_closure3: function _EvaluateVisitor_visitAtRootRule_closure3(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitAtRootRule_closure4: function _EvaluateVisitor_visitAtRootRule_closure4(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor__scopeForAtRoot_closure5: function _EvaluateVisitor__scopeForAtRoot_closure5(t0, t1, t2) {
- this.$this = t0;
- this.newParent = t1;
- this.node = t2;
- },
- _EvaluateVisitor__scopeForAtRoot_closure6: function _EvaluateVisitor__scopeForAtRoot_closure6(t0, t1) {
- this.$this = t0;
- this.innerScope = t1;
- },
- _EvaluateVisitor__scopeForAtRoot_closure7: function _EvaluateVisitor__scopeForAtRoot_closure7(t0, t1) {
- this.$this = t0;
- this.innerScope = t1;
- },
- _EvaluateVisitor__scopeForAtRoot__closure0: function _EvaluateVisitor__scopeForAtRoot__closure0(t0, t1) {
- this.innerScope = t0;
- this.callback = t1;
- },
- _EvaluateVisitor__scopeForAtRoot_closure8: function _EvaluateVisitor__scopeForAtRoot_closure8(t0, t1) {
- this.$this = t0;
- this.innerScope = t1;
- },
- _EvaluateVisitor__scopeForAtRoot_closure9: function _EvaluateVisitor__scopeForAtRoot_closure9() {
- },
- _EvaluateVisitor__scopeForAtRoot_closure10: function _EvaluateVisitor__scopeForAtRoot_closure10(t0, t1) {
- this.$this = t0;
- this.innerScope = t1;
- },
- _EvaluateVisitor_visitContentRule_closure0: function _EvaluateVisitor_visitContentRule_closure0(t0, t1) {
- this.$this = t0;
- this.content = t1;
- },
- _EvaluateVisitor_visitDeclaration_closure0: function _EvaluateVisitor_visitDeclaration_closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitEachRule_closure2: function _EvaluateVisitor_visitEachRule_closure2(t0, t1, t2) {
- this.$this = t0;
- this.node = t1;
- this.nodeWithSpan = t2;
- },
- _EvaluateVisitor_visitEachRule_closure3: function _EvaluateVisitor_visitEachRule_closure3(t0, t1, t2) {
- this.$this = t0;
- this.node = t1;
- this.nodeWithSpan = t2;
- },
- _EvaluateVisitor_visitEachRule_closure4: function _EvaluateVisitor_visitEachRule_closure4(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.list = t1;
- _.setVariables = t2;
- _.node = t3;
- },
- _EvaluateVisitor_visitEachRule__closure0: function _EvaluateVisitor_visitEachRule__closure0(t0, t1, t2) {
- this.$this = t0;
- this.setVariables = t1;
- this.node = t2;
- },
- _EvaluateVisitor_visitEachRule___closure0: function _EvaluateVisitor_visitEachRule___closure0(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_visitExtendRule_closure0: function _EvaluateVisitor_visitExtendRule_closure0(t0, t1) {
- this.$this = t0;
- this.targetText = t1;
- },
- _EvaluateVisitor_visitAtRule_closure1: function _EvaluateVisitor_visitAtRule_closure1(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitAtRule__closure0: function _EvaluateVisitor_visitAtRule__closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitAtRule_closure2: function _EvaluateVisitor_visitAtRule_closure2() {
- },
- _EvaluateVisitor_visitForRule_closure4: function _EvaluateVisitor_visitForRule_closure4(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitForRule_closure5: function _EvaluateVisitor_visitForRule_closure5(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitForRule_closure6: function _EvaluateVisitor_visitForRule_closure6(t0, t1) {
- this.fromNumber = t0;
- this.toNumber = t1;
- },
- _EvaluateVisitor_visitForRule_closure7: function _EvaluateVisitor_visitForRule_closure7(t0) {
- this.toNumber = t0;
- },
- _EvaluateVisitor_visitForRule_closure8: function _EvaluateVisitor_visitForRule_closure8(t0, t1, t2, t3, t4) {
- var _ = this;
- _._box_0 = t0;
- _.$this = t1;
- _.node = t2;
- _.from = t3;
- _.direction = t4;
- },
- _EvaluateVisitor_visitForRule__closure0: function _EvaluateVisitor_visitForRule__closure0(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_visitForwardRule_closure1: function _EvaluateVisitor_visitForwardRule_closure1(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitForwardRule_closure2: function _EvaluateVisitor_visitForwardRule_closure2(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor__assertConfigurationIsEmpty_closure0: function _EvaluateVisitor__assertConfigurationIsEmpty_closure0(t0, t1, t2) {
- this.$this = t0;
- this.only = t1;
- this.nameInError = t2;
- },
- _EvaluateVisitor_visitIfRule_closure0: function _EvaluateVisitor_visitIfRule_closure0(t0, t1) {
- this._box_0 = t0;
- this.$this = t1;
- },
- _EvaluateVisitor_visitIfRule__closure0: function _EvaluateVisitor_visitIfRule__closure0(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor__visitDynamicImport_closure0: function _EvaluateVisitor__visitDynamicImport_closure0(t0, t1) {
- this.$this = t0;
- this.$import = t1;
- },
- _EvaluateVisitor__visitDynamicImport__closure0: function _EvaluateVisitor__visitDynamicImport__closure0(t0, t1, t2, t3, t4) {
- var _ = this;
- _._box_0 = t0;
- _.$this = t1;
- _.importer = t2;
- _.stylesheet = t3;
- _.environment = t4;
- },
- _EvaluateVisitor_visitIncludeRule_closure2: function _EvaluateVisitor_visitIncludeRule_closure2(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitIncludeRule_closure3: function _EvaluateVisitor_visitIncludeRule_closure3(t0) {
- this.node = t0;
- },
- _EvaluateVisitor_visitIncludeRule_closure4: function _EvaluateVisitor_visitIncludeRule_closure4(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.contentCallable = t1;
- _.mixin = t2;
- _.nodeWithSpan = t3;
- },
- _EvaluateVisitor_visitIncludeRule__closure0: function _EvaluateVisitor_visitIncludeRule__closure0(t0, t1, t2) {
- this.$this = t0;
- this.mixin = t1;
- this.nodeWithSpan = t2;
- },
- _EvaluateVisitor_visitIncludeRule___closure0: function _EvaluateVisitor_visitIncludeRule___closure0(t0, t1, t2) {
- this.$this = t0;
- this.mixin = t1;
- this.nodeWithSpan = t2;
- },
- _EvaluateVisitor_visitIncludeRule____closure0: function _EvaluateVisitor_visitIncludeRule____closure0(t0, t1) {
- this.$this = t0;
- this.statement = t1;
- },
- _EvaluateVisitor_visitMediaRule_closure1: function _EvaluateVisitor_visitMediaRule_closure1(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.mergedQueries = t1;
- _.queries = t2;
- _.node = t3;
- },
- _EvaluateVisitor_visitMediaRule__closure0: function _EvaluateVisitor_visitMediaRule__closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitMediaRule___closure0: function _EvaluateVisitor_visitMediaRule___closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitMediaRule_closure2: function _EvaluateVisitor_visitMediaRule_closure2(t0) {
- this.mergedQueries = t0;
- },
- _EvaluateVisitor__visitMediaQueries_closure0: function _EvaluateVisitor__visitMediaQueries_closure0(t0, t1) {
- this.$this = t0;
- this.resolved = t1;
- },
- _EvaluateVisitor_visitStyleRule_closure6: function _EvaluateVisitor_visitStyleRule_closure6(t0, t1) {
- this.$this = t0;
- this.selectorText = t1;
- },
- _EvaluateVisitor_visitStyleRule_closure7: function _EvaluateVisitor_visitStyleRule_closure7(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitStyleRule_closure8: function _EvaluateVisitor_visitStyleRule_closure8() {
- },
- _EvaluateVisitor_visitStyleRule_closure9: function _EvaluateVisitor_visitStyleRule_closure9(t0, t1) {
- this.$this = t0;
- this.selectorText = t1;
- },
- _EvaluateVisitor_visitStyleRule_closure10: function _EvaluateVisitor_visitStyleRule_closure10(t0, t1) {
- this._box_0 = t0;
- this.$this = t1;
- },
- _EvaluateVisitor_visitStyleRule_closure11: function _EvaluateVisitor_visitStyleRule_closure11(t0, t1, t2) {
- this.$this = t0;
- this.rule = t1;
- this.node = t2;
- },
- _EvaluateVisitor_visitStyleRule__closure0: function _EvaluateVisitor_visitStyleRule__closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitStyleRule_closure12: function _EvaluateVisitor_visitStyleRule_closure12() {
- },
- _EvaluateVisitor_visitSupportsRule_closure1: function _EvaluateVisitor_visitSupportsRule_closure1(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitSupportsRule__closure0: function _EvaluateVisitor_visitSupportsRule__closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitSupportsRule_closure2: function _EvaluateVisitor_visitSupportsRule_closure2() {
- },
- _EvaluateVisitor_visitVariableDeclaration_closure2: function _EvaluateVisitor_visitVariableDeclaration_closure2(t0, t1, t2) {
- this.$this = t0;
- this.node = t1;
- this.override = t2;
- },
- _EvaluateVisitor_visitVariableDeclaration_closure3: function _EvaluateVisitor_visitVariableDeclaration_closure3(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitVariableDeclaration_closure4: function _EvaluateVisitor_visitVariableDeclaration_closure4(t0, t1, t2) {
- this.$this = t0;
- this.node = t1;
- this.value = t2;
- },
- _EvaluateVisitor_visitUseRule_closure0: function _EvaluateVisitor_visitUseRule_closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitWarnRule_closure0: function _EvaluateVisitor_visitWarnRule_closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitWhileRule_closure0: function _EvaluateVisitor_visitWhileRule_closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitWhileRule__closure0: function _EvaluateVisitor_visitWhileRule__closure0(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_visitBinaryOperationExpression_closure0: function _EvaluateVisitor_visitBinaryOperationExpression_closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitVariableExpression_closure0: function _EvaluateVisitor_visitVariableExpression_closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitListExpression_closure0: function _EvaluateVisitor_visitListExpression_closure0(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_visitFunctionExpression_closure1: function _EvaluateVisitor_visitFunctionExpression_closure1(t0, t1, t2) {
- this.$this = t0;
- this.node = t1;
- this.plainName = t2;
- },
- _EvaluateVisitor_visitFunctionExpression_closure2: function _EvaluateVisitor_visitFunctionExpression_closure2(t0, t1, t2) {
- this._box_0 = t0;
- this.$this = t1;
- this.node = t2;
- },
- _EvaluateVisitor__runUserDefinedCallable_closure0: function _EvaluateVisitor__runUserDefinedCallable_closure0(t0, t1, t2, t3, t4) {
- var _ = this;
- _.$this = t0;
- _.callable = t1;
- _.evaluated = t2;
- _.nodeWithSpan = t3;
- _.run = t4;
- },
- _EvaluateVisitor__runUserDefinedCallable__closure0: function _EvaluateVisitor__runUserDefinedCallable__closure0(t0, t1, t2, t3, t4) {
- var _ = this;
- _.$this = t0;
- _.evaluated = t1;
- _.callable = t2;
- _.nodeWithSpan = t3;
- _.run = t4;
- },
- _EvaluateVisitor__runUserDefinedCallable___closure0: function _EvaluateVisitor__runUserDefinedCallable___closure0(t0, t1, t2, t3, t4) {
- var _ = this;
- _.$this = t0;
- _.evaluated = t1;
- _.callable = t2;
- _.nodeWithSpan = t3;
- _.run = t4;
- },
- _EvaluateVisitor__runUserDefinedCallable____closure0: function _EvaluateVisitor__runUserDefinedCallable____closure0() {
- },
- _EvaluateVisitor__runFunctionCallable_closure0: function _EvaluateVisitor__runFunctionCallable_closure0(t0, t1) {
- this.$this = t0;
- this.callable = t1;
- },
- _EvaluateVisitor__runBuiltInCallable_closure1: function _EvaluateVisitor__runBuiltInCallable_closure1(t0, t1, t2) {
- this.overload = t0;
- this.evaluated = t1;
- this.namedSet = t2;
- },
- _EvaluateVisitor__runBuiltInCallable_closure2: function _EvaluateVisitor__runBuiltInCallable_closure2() {
- },
- _EvaluateVisitor__evaluateArguments_closure2: function _EvaluateVisitor__evaluateArguments_closure2(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor__evaluateArguments_closure3: function _EvaluateVisitor__evaluateArguments_closure3(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor__evaluateArguments_closure4: function _EvaluateVisitor__evaluateArguments_closure4(t0, t1, t2) {
- this.named = t0;
- this.namedNodes = t1;
- this.restNodeForSpan = t2;
- },
- _EvaluateVisitor__evaluateMacroArguments_closure3: function _EvaluateVisitor__evaluateMacroArguments_closure3() {
- },
- _EvaluateVisitor__evaluateMacroArguments_closure4: function _EvaluateVisitor__evaluateMacroArguments_closure4() {
- },
- _EvaluateVisitor__evaluateMacroArguments_closure5: function _EvaluateVisitor__evaluateMacroArguments_closure5(t0) {
- this.named = t0;
- },
- _EvaluateVisitor__evaluateMacroArguments_closure6: function _EvaluateVisitor__evaluateMacroArguments_closure6() {
- },
- _EvaluateVisitor__addRestMap_closure1: function _EvaluateVisitor__addRestMap_closure1(t0) {
- this.T = t0;
- },
- _EvaluateVisitor__addRestMap_closure2: function _EvaluateVisitor__addRestMap_closure2(t0, t1, t2, t3, t4) {
- var _ = this;
- _._box_0 = t0;
- _.$this = t1;
- _.values = t2;
- _.map = t3;
- _.nodeWithSpan = t4;
- },
- _EvaluateVisitor__verifyArguments_closure0: function _EvaluateVisitor__verifyArguments_closure0(t0, t1, t2) {
- this.$arguments = t0;
- this.positional = t1;
- this.named = t2;
- },
- _EvaluateVisitor_visitStringExpression_closure0: function _EvaluateVisitor_visitStringExpression_closure0(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_visitCssAtRule_closure1: function _EvaluateVisitor_visitCssAtRule_closure1(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitCssAtRule_closure2: function _EvaluateVisitor_visitCssAtRule_closure2() {
- },
- _EvaluateVisitor_visitCssKeyframeBlock_closure1: function _EvaluateVisitor_visitCssKeyframeBlock_closure1(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitCssKeyframeBlock_closure2: function _EvaluateVisitor_visitCssKeyframeBlock_closure2() {
- },
- _EvaluateVisitor_visitCssMediaRule_closure1: function _EvaluateVisitor_visitCssMediaRule_closure1(t0, t1, t2) {
- this.$this = t0;
- this.mergedQueries = t1;
- this.node = t2;
- },
- _EvaluateVisitor_visitCssMediaRule__closure0: function _EvaluateVisitor_visitCssMediaRule__closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitCssMediaRule___closure0: function _EvaluateVisitor_visitCssMediaRule___closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitCssMediaRule_closure2: function _EvaluateVisitor_visitCssMediaRule_closure2(t0) {
- this.mergedQueries = t0;
- },
- _EvaluateVisitor_visitCssStyleRule_closure1: function _EvaluateVisitor_visitCssStyleRule_closure1(t0, t1, t2) {
- this.$this = t0;
- this.rule = t1;
- this.node = t2;
- },
- _EvaluateVisitor_visitCssStyleRule__closure0: function _EvaluateVisitor_visitCssStyleRule__closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitCssStyleRule_closure2: function _EvaluateVisitor_visitCssStyleRule_closure2() {
- },
- _EvaluateVisitor_visitCssSupportsRule_closure1: function _EvaluateVisitor_visitCssSupportsRule_closure1(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitCssSupportsRule__closure0: function _EvaluateVisitor_visitCssSupportsRule__closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitCssSupportsRule_closure2: function _EvaluateVisitor_visitCssSupportsRule_closure2() {
- },
- _EvaluateVisitor__performInterpolation_closure0: function _EvaluateVisitor__performInterpolation_closure0(t0, t1) {
- this.$this = t0;
- this.warnForColor = t1;
- },
- _EvaluateVisitor__serialize_closure0: function _EvaluateVisitor__serialize_closure0(t0, t1) {
- this.value = t0;
- this.quote = t1;
- },
- _EvaluateVisitor__stackTrace_closure0: function _EvaluateVisitor__stackTrace_closure0(t0) {
- this.$this = t0;
- },
- _ImportedCssVisitor0: function _ImportedCssVisitor0(t0) {
- this._async_evaluate$_visitor = t0;
- },
- _ImportedCssVisitor_visitCssAtRule_closure0: function _ImportedCssVisitor_visitCssAtRule_closure0() {
- },
- _ImportedCssVisitor_visitCssMediaRule_closure0: function _ImportedCssVisitor_visitCssMediaRule_closure0(t0) {
- this.hasBeenMerged = t0;
- },
- _ImportedCssVisitor_visitCssStyleRule_closure0: function _ImportedCssVisitor_visitCssStyleRule_closure0() {
- },
- _ImportedCssVisitor_visitCssSupportsRule_closure0: function _ImportedCssVisitor_visitCssSupportsRule_closure0() {
- },
- EvaluateResult: function EvaluateResult(t0, t1) {
- this.stylesheet = t0;
- this.includedFiles = t1;
- },
- _ArgumentResults0: function _ArgumentResults0(t0, t1, t2, t3, t4) {
- var _ = this;
- _.positional = t0;
- _.positionalNodes = t1;
- _.named = t2;
- _.namedNodes = t3;
- _.separator = t4;
- },
- StringScannerException$: function(message, span, source) {
- return new E.StringScannerException(source, message, span);
- },
- StringScannerException: function StringScannerException(t0, t1, t2) {
- this.source = t0;
- this._span_exception$_message = t1;
- this._span = t2;
- },
- WatchEvent: function WatchEvent(t0, t1) {
- this.type = t0;
- this.path = t1;
- },
- ChangeType: function ChangeType(t0) {
- this._watch_event$_name = t0;
- }
- },
- F = {ValueResult: function ValueResult(t0, t1) {
- this.value = t0;
- this.$ti = t1;
- }, UrlStyle: function UrlStyle(t0, t1, t2, t3) {
- var _ = this;
- _.separatorPattern = t0;
- _.needsSeparatorPattern = t1;
- _.rootPattern = t2;
- _.relativeRootPattern = t3;
- },
- CssMediaQuery$: function(type, features, modifier) {
- return new F.CssMediaQuery(modifier, type, features == null ? C.List_empty : P.List_List$unmodifiable(features, P.String));
- },
- CssMediaQuery: function CssMediaQuery(t0, t1, t2) {
- this.modifier = t0;
- this.type = t1;
- this.features = t2;
- },
- _SingletonCssMediaQueryMergeResult: function _SingletonCssMediaQueryMergeResult(t0) {
- this._media_query$_name = t0;
- },
- MediaQuerySuccessfulMergeResult: function MediaQuerySuccessfulMergeResult(t0) {
- this.query = t0;
- },
- ModifiableCssImport$: function(url, span, media, supports) {
- return new F.ModifiableCssImport(url, supports, media == null ? null : P.List_List$unmodifiable(media, F.CssMediaQuery), span);
- },
- ModifiableCssImport: function ModifiableCssImport(t0, t1, t2, t3) {
- var _ = this;
- _.url = t0;
- _.supports = t1;
- _.media = t2;
- _.span = t3;
- _._indexInParent = _._parent = null;
- _.isGroupEnd = false;
- },
- ModifiableCssValue: function ModifiableCssValue(t0, t1, t2) {
- this.value = t0;
- this.span = t1;
- this.$ti = t2;
- },
- CssValue: function CssValue(t0, t1, t2) {
- this.value = t0;
- this.span = t1;
- this.$ti = t2;
- },
- FunctionExpression: function FunctionExpression(t0, t1, t2, t3) {
- var _ = this;
- _.namespace = t0;
- _.name = t1;
- _.$arguments = t2;
- _.span = t3;
- },
- ValueExpression: function ValueExpression(t0, t1) {
- this.value = t0;
- this.span = t1;
- },
- Import: function Import() {
- },
- TypeSelector: function TypeSelector(t0) {
- this.name = t0;
- },
- main: function(args) {
- return F.main$body(args);
- },
- main$body: function(args) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], printError, graph, source, destination, error, stackTrace, error0, stackTrace0, error1, error2, stackTrace1, buffer, options, t1, t2, t3, t4, exception, _box_0, $async$exception, $async$exception1, $async$temp1;
- var $async$main = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1) {
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- _box_0 = {};
- _box_0.printedError = false;
- printError = new F.main_printError(_box_0);
- _box_0.options = null;
- $async$handler = 4;
- options = B.ExecutableOptions_ExecutableOptions$parse(args);
- _box_0.options = options;
- t1 = options._options;
- $._glyphs = !(t1.wasParsed$1("unicode") ? H.boolTypeCast(t1.$index(0, "unicode")) : $._glyphs !== C.C_AsciiGlyphSet) ? C.C_AsciiGlyphSet : C.C_UnicodeGlyphSet;
- $async$goto = H.boolTypeCast(_box_0.options._options.$index(0, "version")) ? 7 : 8;
- break;
- case 7:
- // then
- $async$temp1 = P;
- $async$goto = 9;
- return P._asyncAwait(F._loadVersion(), $async$main);
- case 9:
- // returning from await.
- $async$temp1.print($async$result);
- self.process.exitCode = 0;
- // goto return
- $async$goto = 1;
- break;
- case 8:
- // join
- $async$goto = _box_0.options.get$interactive() ? 10 : 11;
- break;
- case 10:
- // then
- $async$goto = 12;
- return P._asyncAwait(Y.repl(_box_0.options), $async$main);
- case 12:
- // returning from await.
- // goto return
- $async$goto = 1;
- break;
- case 11:
- // join
- t1 = H.setRuntimeTypeInfo([], [M.Importer]);
- t2 = H.subtypeCast(_box_0.options._options.$index(0, "load-path"), "$isList", [P.String], "$asList");
- t3 = _box_0.options;
- t4 = P.Uri;
- graph = new M.StylesheetGraph(P.LinkedHashMap_LinkedHashMap$_empty(t4, M.StylesheetNode), R.ImportCache$(t1, t2, H.boolTypeCast(t3._options.$index(0, "quiet")) ? $.$get$Logger_quiet() : new S.StderrLogger(t3.get$color())), P.LinkedHashMap_LinkedHashMap$_empty(t4, P.DateTime));
- $async$goto = H.boolTypeCast(_box_0.options._options.$index(0, "watch")) ? 13 : 14;
- break;
- case 13:
- // then
- $async$goto = 15;
- return P._asyncAwait(A.watch(_box_0.options, graph), $async$main);
- case 15:
- // returning from await.
- // goto return
- $async$goto = 1;
- break;
- case 14:
- // join
- t1 = _box_0.options, t1._ensureSources$0(), t1 = J.get$iterator$ax(t1._sourcesToDestinations.get$keys());
- case 16:
- // for condition
- if (!t1.moveNext$0()) {
- // goto after for
- $async$goto = 17;
- break;
- }
- source = t1.get$current(t1);
- t2 = _box_0.options;
- t2._ensureSources$0();
- destination = t2._sourcesToDestinations.$index(0, source);
- $async$handler = 19;
- t2 = _box_0.options;
- $async$goto = 22;
- return P._asyncAwait(D.compileStylesheet(t2, graph, source, destination, H.boolTypeCast(t2._options.$index(0, "update"))), $async$main);
- case 22:
- // returning from await.
- $async$handler = 4;
- // goto after finally
- $async$goto = 21;
- break;
- case 19:
- // catch
- $async$handler = 18;
- $async$exception = $async$currentError;
- t2 = H.unwrapException($async$exception);
- t3 = J.getInterceptor$(t2);
- if (!!t3.$isSassException) {
- error = t2;
- stackTrace = H.getTraceFromException($async$exception);
- new F.main_closure0(_box_0, destination).call$0();
- t2 = _box_0.options._options;
- if (t2._parser.options._collection$_map.$index(0, "color") == null)
- H.throwExpression(P.ArgumentError$('Could not find an option named "color".'));
- if (t2._parsed.containsKey$1("color"))
- t2 = H.boolTypeCast(t2.$index(0, "color"));
- else {
- t2 = self.process.stdout.isTTY;
- if (t2 == null)
- t2 = false;
- }
- t2 = J.toString$1$color$(error, t2);
- t3 = H.boolTypeCast(_box_0.options._options.$index(0, "trace")) ? stackTrace : null;
- printError.call$2(t2, t3);
- if (!J.$eq$(self.process.exitCode, 66))
- self.process.exitCode = 65;
- if (H.boolTypeCast(_box_0.options._options.$index(0, "stop-on-error"))) {
- // goto return
- $async$goto = 1;
- break;
- }
- } else if (!!t3.$isFileSystemException) {
- error0 = t2;
- stackTrace0 = H.getTraceFromException($async$exception);
- t2 = error0.path;
- t2 = "Error reading " + H.S($.$get$context().relative$2$from(t2, null)) + ": " + error0.message + ".";
- t3 = H.boolTypeCast(_box_0.options._options.$index(0, "trace")) ? stackTrace0 : null;
- printError.call$2(t2, t3);
- self.process.exitCode = 66;
- if (H.boolTypeCast(_box_0.options._options.$index(0, "stop-on-error"))) {
- // goto return
- $async$goto = 1;
- break;
- }
- } else
- throw $async$exception;
- // goto after finally
- $async$goto = 21;
- break;
- case 18:
- // uncaught
- // goto catch
- $async$goto = 4;
- break;
- case 21:
- // after finally
- // goto for condition
- $async$goto = 16;
- break;
- case 17:
- // after for
- $async$handler = 2;
- // goto after finally
- $async$goto = 6;
- break;
- case 4:
- // catch
- $async$handler = 3;
- $async$exception1 = $async$currentError;
- t1 = H.unwrapException($async$exception1);
- if (t1 instanceof B.UsageException) {
- error1 = t1;
- P.print(H.S(error1.message) + "\n");
- P.print("Usage: sass <input.scss> [output.css]\n sass <input.scss>:<output.css> <input/>:<output/> <dir/>\n");
- t1 = $.$get$ExecutableOptions__parser();
- P.print(new G.Usage(t1._optionsAndSeparators, t1.usageLineLength).generate$0());
- self.process.exitCode = 64;
- } else {
- error2 = t1;
- stackTrace1 = H.getTraceFromException($async$exception1);
- buffer = new P.StringBuffer("");
- t1 = _box_0.options;
- if (t1 != null && t1.get$color())
- buffer._contents += "\x1b[31m\x1b[1m";
- buffer._contents += "Unexpected exception:";
- t1 = _box_0.options;
- if (t1 != null && t1.get$color())
- buffer._contents += "\x1b[0m";
- buffer._contents += "\n";
- buffer._contents += H.S(error2) + "\n";
- t1 = buffer._contents;
- printError.call$2(t1.charCodeAt(0) == 0 ? t1 : t1, stackTrace1);
- self.process.exitCode = 255;
- }
- // goto after finally
- $async$goto = 6;
- break;
- case 3:
- // uncaught
- // goto rethrow
- $async$goto = 2;
- break;
- case 6:
- // after finally
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- case 2:
- // rethrow
- return P._asyncRethrow($async$currentError, $async$completer);
- }
- });
- return P._asyncStartSync($async$main, $async$completer);
- },
- _loadVersion: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.String),
- $async$returnValue;
- var $async$_loadVersion = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$returnValue = "1.25.0 compiled with dart2js 2.7.0";
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_loadVersion, $async$completer);
- },
- main_printError: function main_printError(t0) {
- this._box_0 = t0;
- },
- main_closure0: function main_closure0(t0, t1) {
- this._box_0 = t0;
- this.destination = t1;
- },
- Extender__extendOrReplace: function(selector, source, targets, mode) {
- var t2, t3, t4, _i, complex, t5, t6, t7, _i0, extender, _null = null,
- t1 = source.components,
- map = P.LinkedHashMap_LinkedHashMap(_null, _null, _null, S.ComplexSelector, S.Extension);
- P.MapBase__fillMapWithMappedIterable(map, t1, _null, new F.Extender__extendOrReplace_closure());
- for (t1 = targets.components, t2 = t1.length, t3 = M.SimpleSelector, t4 = [P.Map, S.ComplexSelector, S.Extension], _i = 0; _i < t2; ++_i) {
- complex = t1[_i];
- t5 = complex.components;
- if (t5.length !== 1)
- throw H.wrapException(E.SassScriptException$("Can't extend complex selector " + H.S(complex) + "."));
- t6 = P.LinkedHashMap_LinkedHashMap$_empty(t3, t4);
- for (t5 = H.interceptedTypeCast(C.JSArray_methods.get$first(t5), "$isCompoundSelector").components, t7 = t5.length, _i0 = 0; _i0 < t7; ++_i0)
- t6.$indexSet(0, t5[_i0], map);
- extender = F.Extender$_mode(mode);
- if (!selector.get$isInvisible())
- extender._originals.addAll$1(0, selector.components);
- selector = extender._extendList$3(selector, t6, _null);
- }
- return selector;
- },
- Extender$_mode: function(_mode) {
- var t1 = M.SimpleSelector;
- return new F.Extender(P.LinkedHashMap_LinkedHashMap$_empty(t1, [P.Set, [F.ModifiableCssValue, D.SelectorList]]), P.LinkedHashMap_LinkedHashMap$_empty(t1, [P.Map, S.ComplexSelector, S.Extension]), P.LinkedHashMap_LinkedHashMap$_empty(t1, [P.List, S.Extension]), P.LinkedHashMap_LinkedHashMap$_empty([F.ModifiableCssValue, D.SelectorList], [P.List, F.CssMediaQuery]), P._LinkedIdentityHashMap__LinkedIdentityHashMap$es6(t1, P.int), new P._LinkedIdentityHashSet([S.ComplexSelector]), _mode);
- },
- Extender: function Extender(t0, t1, t2, t3, t4, t5, t6) {
- var _ = this;
- _._selectors = t0;
- _._extensions = t1;
- _._extensionsByExtender = t2;
- _._mediaContexts = t3;
- _._sourceSpecificity = t4;
- _._originals = t5;
- _._mode = t6;
- },
- Extender__extendOrReplace_closure: function Extender__extendOrReplace_closure() {
- },
- Extender_extensionsWhereTarget_closure: function Extender_extensionsWhereTarget_closure() {
- },
- Extender__registerSelector_closure: function Extender__registerSelector_closure() {
- },
- Extender_addExtension_closure: function Extender_addExtension_closure() {
- },
- Extender_addExtension_closure0: function Extender_addExtension_closure0() {
- },
- Extender_addExtension_closure1: function Extender_addExtension_closure1(t0) {
- this.complex = t0;
- },
- Extender__extendExistingExtensions_closure: function Extender__extendExistingExtensions_closure() {
- },
- Extender__extendExistingExtensions_closure0: function Extender__extendExistingExtensions_closure0() {
- },
- Extender_addExtensions_closure: function Extender_addExtensions_closure(t0, t1, t2) {
- this._box_0 = t0;
- this.$this = t1;
- this.extender = t2;
- },
- Extender_addExtensions__closure: function Extender_addExtensions__closure(t0, t1, t2, t3, t4) {
- var _ = this;
- _._box_0 = t0;
- _.existingSources = t1;
- _.extensionsForTarget = t2;
- _.selectorsForTarget = t3;
- _.target = t4;
- },
- Extender_addExtensions___closure: function Extender_addExtensions___closure() {
- },
- Extender_addExtensions___closure0: function Extender_addExtensions___closure0(t0) {
- this.extension = t0;
- },
- Extender__extendList_closure: function Extender__extendList_closure() {
- },
- Extender__extendComplex_closure: function Extender__extendComplex_closure(t0) {
- this.complex = t0;
- },
- Extender__extendComplex_closure0: function Extender__extendComplex_closure0(t0, t1, t2) {
- this._box_0 = t0;
- this.$this = t1;
- this.complex = t2;
- },
- Extender__extendComplex__closure: function Extender__extendComplex__closure() {
- },
- Extender__extendComplex__closure0: function Extender__extendComplex__closure0(t0, t1, t2, t3) {
- var _ = this;
- _._box_0 = t0;
- _.$this = t1;
- _.complex = t2;
- _.path = t3;
- },
- Extender__extendComplex___closure: function Extender__extendComplex___closure() {
- },
- Extender__extendCompound_closure: function Extender__extendCompound_closure(t0) {
- this.mediaQueryContext = t0;
- },
- Extender__extendCompound_closure0: function Extender__extendCompound_closure0(t0, t1) {
- this._box_1 = t0;
- this.mediaQueryContext = t1;
- },
- Extender__extendCompound__closure: function Extender__extendCompound__closure() {
- },
- Extender__extendCompound__closure0: function Extender__extendCompound__closure0(t0) {
- this._box_0 = t0;
- },
- Extender__extendCompound_closure1: function Extender__extendCompound_closure1() {
- },
- Extender__extendCompound_closure2: function Extender__extendCompound_closure2() {
- },
- Extender__extendSimple_withoutPseudo: function Extender__extendSimple_withoutPseudo(t0, t1, t2) {
- this.$this = t0;
- this.extensions = t1;
- this.targetsUsed = t2;
- },
- Extender__extendSimple_closure: function Extender__extendSimple_closure(t0, t1) {
- this.$this = t0;
- this.withoutPseudo = t1;
- },
- Extender__extendPseudo_closure: function Extender__extendPseudo_closure() {
- },
- Extender__extendPseudo_closure0: function Extender__extendPseudo_closure0() {
- },
- Extender__extendPseudo_closure1: function Extender__extendPseudo_closure1() {
- },
- Extender__extendPseudo_closure2: function Extender__extendPseudo_closure2(t0) {
- this.pseudo = t0;
- },
- Extender__extendPseudo_closure3: function Extender__extendPseudo_closure3(t0) {
- this.pseudo = t0;
- },
- Extender__trim_closure: function Extender__trim_closure(t0, t1) {
- this._box_0 = t0;
- this.complex1 = t1;
- },
- Extender__trim_closure0: function Extender__trim_closure0(t0, t1) {
- this._box_0 = t0;
- this.complex1 = t1;
- },
- Extender_clone_closure: function Extender_clone_closure(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.newSelectors = t1;
- _.oldToNewSelectors = t2;
- _.newMediaContexts = t3;
- },
- FilesystemImporter: function FilesystemImporter(t0) {
- this._loadPath = t0;
- },
- NodeImporter__addSassPath: function($async$includePaths) {
- return P._makeSyncStarIterable(function() {
- var includePaths = $async$includePaths;
- var $async$goto = 0, $async$handler = 2, $async$currentError, sassPath;
- return function $async$NodeImporter__addSassPath($async$errorCode, $async$result) {
- if ($async$errorCode === 1) {
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._IterationMarker_yieldStar(includePaths);
- case 3:
- // after yield
- sassPath = H.stringTypeCast(J.get$env$x(self.process).SASS_PATH);
- if (sassPath == null) {
- // goto return
- $async$goto = 1;
- break;
- }
- $async$goto = 4;
- return P._IterationMarker_yieldStar(H.setRuntimeTypeInfo(sassPath.split(J.$eq$(J.get$platform$x(self.process), "win32") ? ";" : ":"), [P.String]));
- case 4:
- // after yield
- case 1:
- // return
- return P._IterationMarker_endOfIteration();
- case 2:
- // rethrow
- return P._IterationMarker_uncaughtError($async$currentError);
- }
- };
- }, P.String);
- },
- NodeImporter: function NodeImporter(t0, t1, t2) {
- this._implementation$_context = t0;
- this._includePaths = t1;
- this._implementation$_importers = t2;
- },
- NodeImporter__tryPath_closure: function NodeImporter__tryPath_closure(t0) {
- this.path = t0;
- },
- realCasePath: function(path) {
- var t1, basename, matches;
- if (!(J.$eq$(J.get$platform$x(self.process), "win32") || J.$eq$(J.get$platform$x(self.process), "darwin")))
- return path;
- t1 = $.$get$context();
- basename = X.ParsedPath_ParsedPath$parse(path, t1.style).get$basename();
- matches = J.where$1$ax(B.listDir(t1.dirname$1(path), false), new F.realCasePath_closure(basename)).toList$0(0);
- if (matches.length !== 1)
- return path;
- return C.JSArray_methods.get$first(matches);
- },
- realCasePath_closure: function realCasePath_closure(t0) {
- this.basename = t0;
- },
- _QuietLogger: function _QuietLogger() {
- },
- JSFunction: function JSFunction() {
- },
- NodeImporterResult: function NodeImporterResult() {
- },
- MediaQueryParser: function MediaQueryParser(t0, t1) {
- this.scanner = t0;
- this.logger = t1;
- },
- MediaQueryParser_parse_closure: function MediaQueryParser_parse_closure(t0) {
- this.$this = t0;
- },
- PrefixedMapView: function PrefixedMapView(t0, t1, t2) {
- this._prefixed_map_view$_map = t0;
- this._prefix = t1;
- this.$ti = t2;
- },
- _PrefixedKeys: function _PrefixedKeys(t0) {
- this._view = t0;
- },
- _PrefixedKeys_iterator_closure: function _PrefixedKeys_iterator_closure(t0) {
- this.$this = t0;
- },
- Value: function Value() {
- },
- SassFunction: function SassFunction(t0) {
- this.callable = t0;
- },
- _FindDependenciesVisitor: function _FindDependenciesVisitor(t0, t1) {
- this._usesAndForwards = t0;
- this._imports = t1;
- },
- unwrapValue: function(object) {
- var value;
- if (object != null) {
- if (object instanceof F.Value)
- return object;
- value = object.dartValue;
- if (value != null && value instanceof F.Value)
- return value;
- if (object instanceof self.Error)
- throw H.wrapException(object);
- }
- throw H.wrapException(H.S(object) + " must be a Sass value type.");
- },
- wrapValue: function(value) {
- var t1 = J.getInterceptor$(value);
- if (!!t1.$isSassColor)
- return P.callConstructor($.$get$colorConstructor(), [null, null, null, null, value]);
- if (!!t1.$isSassList)
- return P.callConstructor($.$get$listConstructor(), [null, null, value]);
- if (!!t1.$isSassMap)
- return P.callConstructor($.$get$mapConstructor(), [null, value]);
- if (!!t1.$isSassNumber)
- return P.callConstructor($.$get$numberConstructor(), [null, null, value]);
- if (!!t1.$isSassString)
- return P.callConstructor($.$get$stringConstructor(), [null, value]);
- return value;
- }
- },
- Y = {StreamCompleter: function StreamCompleter(t0, t1) {
- this._stream_completer$_stream = t0;
- this.$ti = t1;
- }, _CompleterStream: function _CompleterStream(t0) {
- this._sourceStream = this._stream_completer$_controller = null;
- this.$ti = t0;
- },
- mapMap: function(map, key, value, K1, V1, K2, V2) {
- var result, t1 = {};
- t1.key = key;
- t1.value = value;
- if (key == null)
- t1.key = new Y.mapMap_closure(K2, K1, V1);
- if (value == null)
- t1.value = new Y.mapMap_closure0(V2, K1, V1);
- result = P.LinkedHashMap_LinkedHashMap$_empty(K2, V2);
- map.forEach$1(0, new Y.mapMap_closure1(t1, result, K1, V1));
- return result;
- },
- groupBy: function(values, key, $S, $T) {
- var t1, _i, element,
- map = P.LinkedHashMap_LinkedHashMap$_empty($T, [P.List, $S]);
- for (t1 = values.length, _i = 0; _i < values.length; values.length === t1 || (0, H.throwConcurrentModificationError)(values), ++_i) {
- element = values[_i];
- J.add$1$ax(map.putIfAbsent$2(key.call$1(element), new Y.groupBy_closure($S)), element);
- }
- return map;
- },
- minBy: function(values, orderBy, $S, $T) {
- var t1, minValue, minOrderBy, element, elementOrderBy,
- compare = B.defaultCompare($T);
- for (t1 = new H.MappedIterator(J.get$iterator$ax(values.__internal$_iterable), values._f), minValue = null, minOrderBy = null; t1.moveNext$0();) {
- element = t1.__internal$_current;
- elementOrderBy = orderBy.call$1(element);
- if (minOrderBy == null || compare.call$2(elementOrderBy, minOrderBy) < 0) {
- minOrderBy = elementOrderBy;
- minValue = element;
- }
- }
- return minValue;
- },
- mapMap_closure: function mapMap_closure(t0, t1, t2) {
- this.K2 = t0;
- this.K1 = t1;
- this.V1 = t2;
- },
- mapMap_closure0: function mapMap_closure0(t0, t1, t2) {
- this.V2 = t0;
- this.K1 = t1;
- this.V1 = t2;
- },
- mapMap_closure1: function mapMap_closure1(t0, t1, t2, t3) {
- var _ = this;
- _._box_0 = t0;
- _.result = t1;
- _.K1 = t2;
- _.V1 = t3;
- },
- groupBy_closure: function groupBy_closure(t0) {
- this.S = t0;
- },
- ContentBlock: function ContentBlock(t0, t1, t2, t3, t4) {
- var _ = this;
- _.name = t0;
- _.$arguments = t1;
- _.span = t2;
- _.children = t3;
- _.hasDeclarations = t4;
- },
- WarnRule: function WarnRule(t0, t1) {
- this.expression = t0;
- this.span = t1;
- },
- unifyComplex: function(complexes) {
- var t2, unifiedBase, base, t3, t4, _i, complexesWithoutBases,
- t1 = J.getInterceptor$asx(complexes);
- if (t1.get$length(complexes) === 1)
- return complexes;
- for (t2 = t1.get$iterator(complexes), unifiedBase = null; t2.moveNext$0();) {
- base = J.get$last$ax(t2.get$current(t2));
- if (base instanceof X.CompoundSelector)
- if (unifiedBase == null)
- unifiedBase = base.components;
- else
- for (t3 = base.components, t4 = t3.length, _i = 0; _i < t4; ++_i) {
- unifiedBase = t3[_i].unify$1(unifiedBase);
- if (unifiedBase == null)
- return;
- }
- else
- return;
- }
- complexesWithoutBases = t1.map$1$1(complexes, new Y.unifyComplex_closure(), [P.List, S.ComplexSelectorComponent]).toList$0(0);
- J.add$1$ax(C.JSArray_methods.get$last(complexesWithoutBases), X.CompoundSelector$(unifiedBase));
- return Y.weave(complexesWithoutBases);
- },
- unifyCompound: function(compound1, compound2) {
- var t1, result, _i;
- for (t1 = compound1.length, result = compound2, _i = 0; _i < t1; ++_i) {
- result = compound1[_i].unify$1(result);
- if (result == null)
- return;
- }
- return X.CompoundSelector$(result);
- },
- unifyUniversalAndElement: function(selector1, selector2) {
- var namespace1, name1, t1, namespace2, name2, namespace, $name,
- _s45_ = "must be a UniversalSelector or a TypeSelector";
- if (!!selector1.$isUniversalSelector) {
- namespace1 = selector1.namespace;
- name1 = null;
- } else if (!!selector1.$isTypeSelector) {
- t1 = selector1.name;
- namespace1 = t1.namespace;
- name1 = t1.name;
- } else
- throw H.wrapException(P.ArgumentError$value(selector1, "selector1", _s45_));
- t1 = J.getInterceptor$(selector2);
- if (!!t1.$isUniversalSelector) {
- namespace2 = selector2.namespace;
- name2 = null;
- } else if (!!t1.$isTypeSelector) {
- t1 = selector2.name;
- namespace2 = t1.namespace;
- name2 = t1.name;
- } else
- throw H.wrapException(P.ArgumentError$value(selector2, "selector2", _s45_));
- if (namespace1 == namespace2 || namespace2 === "*")
- namespace = namespace1;
- else {
- if (namespace1 !== "*")
- return;
- namespace = namespace2;
- }
- if (name1 == name2 || name2 == null)
- $name = name1;
- else {
- if (!(name1 == null || name1 === "*"))
- return;
- $name = name2;
- }
- return $name == null ? new N.UniversalSelector(namespace) : new F.TypeSelector(new D.QualifiedName($name, namespace));
- },
- weave: function(complexes) {
- var t2, t3, t4, target, _i, parents, newPrefixes, parentPrefixes, t5,
- t1 = [[P.List, S.ComplexSelectorComponent]],
- prefixes = H.setRuntimeTypeInfo([J.toList$0$ax(C.JSArray_methods.get$first(complexes))], t1);
- for (t2 = H.SubListIterable$(complexes, 1, null, H.getTypeArgumentByIndex(complexes, 0)), t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();) {
- t3 = t2.__internal$_current;
- t4 = J.getInterceptor$asx(t3);
- if (t4.get$isEmpty(t3))
- continue;
- target = t4.get$last(t3);
- if (t4.get$length(t3) === 1) {
- for (t3 = prefixes.length, _i = 0; _i < prefixes.length; prefixes.length === t3 || (0, H.throwConcurrentModificationError)(prefixes), ++_i)
- J.add$1$ax(prefixes[_i], target);
- continue;
- }
- parents = t4.take$1(t3, t4.get$length(t3) - 1).toList$0(0);
- newPrefixes = H.setRuntimeTypeInfo([], t1);
- for (t3 = prefixes.length, _i = 0; _i < prefixes.length; prefixes.length === t3 || (0, H.throwConcurrentModificationError)(prefixes), ++_i) {
- parentPrefixes = Y._weaveParents(prefixes[_i], parents);
- if (parentPrefixes == null)
- continue;
- for (t4 = parentPrefixes.get$iterator(parentPrefixes); t4.moveNext$0();) {
- t5 = t4.get$current(t4);
- J.add$1$ax(t5, target);
- newPrefixes.push(t5);
- }
- }
- prefixes = newPrefixes;
- }
- return prefixes;
- },
- _weaveParents: function(parents1, parents2) {
- var finalCombinators, root1, root2, root, groups1, groups2, lcs, t2, t3, choices, t4, _i, group, t5,
- t1 = S.ComplexSelectorComponent,
- queue1 = P.ListQueue_ListQueue$of(parents1, t1),
- queue2 = P.ListQueue_ListQueue$of(parents2, t1),
- initialCombinators = Y._mergeInitialCombinators(queue1, queue2);
- if (initialCombinators == null)
- return;
- finalCombinators = Y._mergeFinalCombinators(queue1, queue2, null);
- if (finalCombinators == null)
- return;
- root1 = Y._firstIfRoot(queue1);
- root2 = Y._firstIfRoot(queue2);
- t1 = root1 != null;
- if (t1 && root2 != null) {
- root = Y.unifyCompound(root1.components, root2.components);
- if (root == null)
- return;
- queue1.addFirst$1(root);
- queue2.addFirst$1(root);
- } else if (t1)
- queue2.addFirst$1(root1);
- else if (root2 != null)
- queue1.addFirst$1(root2);
- groups1 = Y._groupSelectors(queue1);
- groups2 = Y._groupSelectors(queue2);
- t1 = [P.List, S.ComplexSelectorComponent];
- lcs = B.longestCommonSubsequence(groups2, groups1, new Y._weaveParents_closure(), t1);
- t2 = [P.Iterable, S.ComplexSelectorComponent];
- t3 = [t2];
- choices = H.setRuntimeTypeInfo([H.setRuntimeTypeInfo([initialCombinators], t3)], [[P.List, [P.Iterable, S.ComplexSelectorComponent]]]);
- for (t4 = lcs.length, _i = 0; _i < lcs.length; lcs.length === t4 || (0, H.throwConcurrentModificationError)(lcs), ++_i) {
- group = lcs[_i];
- t5 = Y._chunks(groups1, groups2, new Y._weaveParents_closure0(group), t1);
- choices.push(new H.MappedListIterable(t5, new Y._weaveParents_closure1(), [H.getTypeArgumentByIndex(t5, 0), t2]).toList$0(0));
- choices.push(H.setRuntimeTypeInfo([group], t3));
- groups1.removeFirst$0();
- groups2.removeFirst$0();
- }
- t3 = Y._chunks(groups1, groups2, new Y._weaveParents_closure2(), t1);
- choices.push(new H.MappedListIterable(t3, new Y._weaveParents_closure3(), [H.getTypeArgumentByIndex(t3, 0), t2]).toList$0(0));
- C.JSArray_methods.addAll$1(choices, finalCombinators);
- return J.map$1$1$ax(Y.paths(new H.WhereIterable(choices, new Y._weaveParents_closure4(), [H.getTypeArgumentByIndex(choices, 0)]), t2), new Y._weaveParents_closure5(), t1);
- },
- _firstIfRoot: function(queue) {
- var first;
- if (queue._collection$_head === queue._collection$_tail)
- return;
- first = queue.get$first(queue);
- if (first instanceof X.CompoundSelector) {
- if (!Y._hasRoot(first))
- return;
- queue.removeFirst$0();
- return first;
- } else
- return;
- },
- _mergeInitialCombinators: function(components1, components2) {
- var t3, combinators2, lcs,
- t1 = S.Combinator,
- t2 = [t1],
- combinators1 = H.setRuntimeTypeInfo([], t2);
- while (true) {
- if (!components1.get$isEmpty(components1)) {
- t3 = components1._collection$_head;
- if (t3 === components1._collection$_tail)
- H.throwExpression(H.IterableElementError_noElement());
- t3 = components1._collection$_table[t3] instanceof S.Combinator;
- } else
- t3 = false;
- if (!t3)
- break;
- combinators1.push(H.interceptedTypeCast(components1.removeFirst$0(), "$isCombinator"));
- }
- combinators2 = H.setRuntimeTypeInfo([], t2);
- while (true) {
- if (!components2.get$isEmpty(components2)) {
- t2 = components2._collection$_head;
- if (t2 === components2._collection$_tail)
- H.throwExpression(H.IterableElementError_noElement());
- t2 = components2._collection$_table[t2] instanceof S.Combinator;
- } else
- t2 = false;
- if (!t2)
- break;
- combinators2.push(H.interceptedTypeCast(components2.removeFirst$0(), "$isCombinator"));
- }
- lcs = B.longestCommonSubsequence(combinators1, combinators2, null, t1);
- if (C.C_ListEquality.equals$2(lcs, combinators1))
- return combinators2;
- if (C.C_ListEquality.equals$2(lcs, combinators2))
- return combinators1;
- return;
- },
- _mergeFinalCombinators: function(components1, components2, result) {
- var t1, t2, combinators1, combinators2, lcs, combinator1, combinator2, compound1, compound2, choices, unified, followingSiblingSelector, nextSiblingSelector, _null = null;
- if (result == null)
- result = Q.QueueList$(_null, [P.List, [P.List, S.ComplexSelectorComponent]]);
- if (components1._collection$_head === components1._collection$_tail || !(components1.get$last(components1) instanceof S.Combinator))
- t1 = components2._collection$_head === components2._collection$_tail || !(components2.get$last(components2) instanceof S.Combinator);
- else
- t1 = false;
- if (t1)
- return result;
- t1 = S.Combinator;
- t2 = [t1];
- combinators1 = H.setRuntimeTypeInfo([], t2);
- while (true) {
- if (!(!components1.get$isEmpty(components1) && components1.get$last(components1) instanceof S.Combinator))
- break;
- combinators1.push(H.interceptedTypeCast(components1.removeLast$0(0), "$isCombinator"));
- }
- combinators2 = H.setRuntimeTypeInfo([], t2);
- while (true) {
- if (!(!components2.get$isEmpty(components2) && components2.get$last(components2) instanceof S.Combinator))
- break;
- combinators2.push(H.interceptedTypeCast(components2.removeLast$0(0), "$isCombinator"));
- }
- t2 = combinators1.length;
- if (t2 > 1 || combinators2.length > 1) {
- lcs = B.longestCommonSubsequence(combinators1, combinators2, _null, t1);
- if (C.C_ListEquality.equals$2(lcs, combinators1))
- result.addFirst$1(H.setRuntimeTypeInfo([P.List_List$from(new H.ReversedListIterable(combinators2, [H.getTypeArgumentByIndex(combinators2, 0)]), true, S.ComplexSelectorComponent)], [[P.List, S.ComplexSelectorComponent]]));
- else if (C.C_ListEquality.equals$2(lcs, combinators2))
- result.addFirst$1(H.setRuntimeTypeInfo([P.List_List$from(new H.ReversedListIterable(combinators1, [H.getTypeArgumentByIndex(combinators1, 0)]), true, S.ComplexSelectorComponent)], [[P.List, S.ComplexSelectorComponent]]));
- else
- return;
- return result;
- }
- combinator1 = t2 === 0 ? _null : C.JSArray_methods.get$first(combinators1);
- combinator2 = combinators2.length === 0 ? _null : C.JSArray_methods.get$first(combinators2);
- t1 = combinator1 != null;
- if (t1 && combinator2 != null) {
- compound1 = H.interceptedTypeCast(components1.removeLast$0(0), "$isCompoundSelector");
- compound2 = H.interceptedTypeCast(components2.removeLast$0(0), "$isCompoundSelector");
- t1 = combinator1 === C.Combinator_CzM;
- if (t1 && combinator2 === C.Combinator_CzM) {
- compound1.toString;
- if (Y.compoundIsSuperselector(compound1, compound2, _null))
- result.addFirst$1(H.setRuntimeTypeInfo([H.setRuntimeTypeInfo([compound2, C.Combinator_CzM], [S.ComplexSelectorComponent])], [[P.List, S.ComplexSelectorComponent]]));
- else {
- compound2.toString;
- t1 = [S.ComplexSelectorComponent];
- t2 = [[P.List, S.ComplexSelectorComponent]];
- if (Y.compoundIsSuperselector(compound2, compound1, _null))
- result.addFirst$1(H.setRuntimeTypeInfo([H.setRuntimeTypeInfo([compound1, C.Combinator_CzM], t1)], t2));
- else {
- choices = H.setRuntimeTypeInfo([H.setRuntimeTypeInfo([compound1, C.Combinator_CzM, compound2, C.Combinator_CzM], t1), H.setRuntimeTypeInfo([compound2, C.Combinator_CzM, compound1, C.Combinator_CzM], t1)], t2);
- unified = Y.unifyCompound(compound1.components, compound2.components);
- if (unified != null)
- choices.push(H.setRuntimeTypeInfo([unified, C.Combinator_CzM], t1));
- result.addFirst$1(choices);
- }
- }
- } else {
- if (!(t1 && combinator2 === C.Combinator_uzg))
- t2 = combinator1 === C.Combinator_uzg && combinator2 === C.Combinator_CzM;
- else
- t2 = true;
- if (t2) {
- followingSiblingSelector = t1 ? compound1 : compound2;
- nextSiblingSelector = t1 ? compound2 : compound1;
- followingSiblingSelector.toString;
- t1 = [S.ComplexSelectorComponent];
- t2 = [[P.List, S.ComplexSelectorComponent]];
- if (Y.compoundIsSuperselector(followingSiblingSelector, nextSiblingSelector, _null))
- result.addFirst$1(H.setRuntimeTypeInfo([H.setRuntimeTypeInfo([nextSiblingSelector, C.Combinator_uzg], t1)], t2));
- else {
- unified = Y.unifyCompound(compound1.components, compound2.components);
- t2 = H.setRuntimeTypeInfo([], t2);
- t2.push(H.setRuntimeTypeInfo([followingSiblingSelector, C.Combinator_CzM, nextSiblingSelector, C.Combinator_uzg], t1));
- if (unified != null)
- t2.push(H.setRuntimeTypeInfo([unified, C.Combinator_uzg], t1));
- result.addFirst$1(t2);
- }
- } else {
- if (combinator1 === C.Combinator_sgq)
- t2 = combinator2 === C.Combinator_uzg || combinator2 === C.Combinator_CzM;
- else
- t2 = false;
- if (t2) {
- result.addFirst$1(H.setRuntimeTypeInfo([H.setRuntimeTypeInfo([compound2, combinator2], [S.ComplexSelectorComponent])], [[P.List, S.ComplexSelectorComponent]]));
- components1._collection$_add$1(compound1);
- components1._collection$_add$1(C.Combinator_sgq);
- } else {
- if (combinator2 === C.Combinator_sgq)
- t1 = combinator1 === C.Combinator_uzg || t1;
- else
- t1 = false;
- if (t1) {
- result.addFirst$1(H.setRuntimeTypeInfo([H.setRuntimeTypeInfo([compound1, combinator1], [S.ComplexSelectorComponent])], [[P.List, S.ComplexSelectorComponent]]));
- components2._collection$_add$1(compound2);
- components2._collection$_add$1(C.Combinator_sgq);
- } else if (combinator1 === combinator2) {
- unified = Y.unifyCompound(compound1.components, compound2.components);
- if (unified == null)
- return;
- result.addFirst$1(H.setRuntimeTypeInfo([H.setRuntimeTypeInfo([unified, combinator1], [S.ComplexSelectorComponent])], [[P.List, S.ComplexSelectorComponent]]));
- } else
- return;
- }
- }
- }
- return Y._mergeFinalCombinators(components1, components2, result);
- } else if (t1) {
- if (combinator1 === C.Combinator_sgq)
- if (!components2.get$isEmpty(components2)) {
- t1 = H.interceptedTypeCast(components2.get$last(components2), "$isCompoundSelector");
- t2 = H.interceptedTypeCast(components1.get$last(components1), "$isCompoundSelector");
- t1.toString;
- t2 = Y.compoundIsSuperselector(t1, t2, _null);
- t1 = t2;
- } else
- t1 = false;
- else
- t1 = false;
- if (t1)
- components2.removeLast$0(0);
- result.addFirst$1(H.setRuntimeTypeInfo([H.setRuntimeTypeInfo([components1.removeLast$0(0), combinator1], [S.ComplexSelectorComponent])], [[P.List, S.ComplexSelectorComponent]]));
- return Y._mergeFinalCombinators(components1, components2, result);
- } else {
- if (combinator2 === C.Combinator_sgq)
- if (!components1.get$isEmpty(components1)) {
- t1 = H.interceptedTypeCast(components1.get$last(components1), "$isCompoundSelector");
- t2 = H.interceptedTypeCast(components2.get$last(components2), "$isCompoundSelector");
- t1.toString;
- t2 = Y.compoundIsSuperselector(t1, t2, _null);
- t1 = t2;
- } else
- t1 = false;
- else
- t1 = false;
- if (t1)
- components1.removeLast$0(0);
- result.addFirst$1(H.setRuntimeTypeInfo([H.setRuntimeTypeInfo([components2.removeLast$0(0), combinator2], [S.ComplexSelectorComponent])], [[P.List, S.ComplexSelectorComponent]]));
- return Y._mergeFinalCombinators(components1, components2, result);
- }
- },
- _mustUnify: function(complex1, complex2) {
- var t2, t3, t4,
- t1 = P.LinkedHashSet_LinkedHashSet(M.SimpleSelector);
- for (t2 = J.get$iterator$ax(complex1); t2.moveNext$0();) {
- t3 = t2.get$current(t2);
- if (t3 instanceof X.CompoundSelector)
- for (t3 = C.JSArray_methods.get$iterator(t3.components), t4 = new H.WhereIterator(t3, Y.functions___isUnique$closure()); t4.moveNext$0();)
- t1.add$1(0, t3.get$current(t3));
- }
- if (t1._collection$_length === 0)
- return false;
- return J.any$1$ax(complex2, new Y._mustUnify_closure(t1));
- },
- _isUnique: function(simple) {
- var t1 = J.getInterceptor$(simple);
- if (!t1.$isIDSelector)
- t1 = !!t1.$isPseudoSelector && !simple.isClass;
- else
- t1 = true;
- return t1;
- },
- _chunks: function(queue1, queue2, done, $T) {
- var chunk2, t2, t3, _i,
- t1 = [$T],
- chunk1 = H.setRuntimeTypeInfo([], t1);
- for (; !done.call$1(queue1);)
- chunk1.push(queue1.removeFirst$0());
- chunk2 = H.setRuntimeTypeInfo([], t1);
- for (; !done.call$1(queue2);)
- chunk2.push(queue2.removeFirst$0());
- t2 = chunk1.length === 0;
- if (t2 && chunk2.length === 0)
- return H.setRuntimeTypeInfo([], [[P.List, $T]]);
- if (t2)
- return H.setRuntimeTypeInfo([chunk2], [[P.List, $T]]);
- if (chunk2.length === 0)
- return H.setRuntimeTypeInfo([chunk1], [[P.List, $T]]);
- t2 = H.setRuntimeTypeInfo([], t1);
- for (t3 = chunk1.length, _i = 0; _i < chunk1.length; chunk1.length === t3 || (0, H.throwConcurrentModificationError)(chunk1), ++_i)
- t2.push(chunk1[_i]);
- for (t3 = chunk2.length, _i = 0; _i < chunk2.length; chunk2.length === t3 || (0, H.throwConcurrentModificationError)(chunk2), ++_i)
- t2.push(chunk2[_i]);
- t1 = H.setRuntimeTypeInfo([], t1);
- for (t3 = chunk2.length, _i = 0; _i < chunk2.length; chunk2.length === t3 || (0, H.throwConcurrentModificationError)(chunk2), ++_i)
- t1.push(chunk2[_i]);
- for (t3 = chunk1.length, _i = 0; _i < chunk1.length; chunk1.length === t3 || (0, H.throwConcurrentModificationError)(chunk1), ++_i)
- t1.push(chunk1[_i]);
- return H.setRuntimeTypeInfo([t2, t1], [[P.List, $T]]);
- },
- paths: function(choices, $T) {
- return J.fold$2$ax(choices, H.setRuntimeTypeInfo([H.setRuntimeTypeInfo([], [$T])], [[P.List, $T]]), new Y.paths_closure($T));
- },
- _groupSelectors: function(complex) {
- var t1, group, t2, t3,
- groups = Q.QueueList$(null, [P.List, S.ComplexSelectorComponent]),
- iterator = P._ListQueueIterator$(complex);
- if (!iterator.moveNext$0())
- return groups;
- t1 = [S.ComplexSelectorComponent];
- group = H.setRuntimeTypeInfo([iterator._collection$_current], t1);
- groups._queue_list$_add$1(group);
- for (; iterator.moveNext$0();) {
- t2 = C.JSArray_methods.get$last(group) instanceof S.Combinator || iterator._collection$_current instanceof S.Combinator;
- t3 = iterator._collection$_current;
- if (t2)
- group.push(t3);
- else {
- group = H.setRuntimeTypeInfo([t3], t1);
- groups._queue_list$_add$1(group);
- }
- }
- return groups;
- },
- _hasRoot: function(compound) {
- return C.JSArray_methods.any$1(compound.components, new Y._hasRoot_closure());
- },
- listIsSuperslector: function(list1, list2) {
- return C.JSArray_methods.every$1(list2, new Y.listIsSuperslector_closure(list1));
- },
- complexIsParentSuperselector: function(complex1, complex2) {
- var t2, base, t3, t4,
- t1 = J.getInterceptor$ax(complex1);
- if (t1.get$first(complex1) instanceof S.Combinator)
- return false;
- t2 = J.getInterceptor$ax(complex2);
- if (t2.get$first(complex2) instanceof S.Combinator)
- return false;
- if (t1.get$length(complex1) > t2.get$length(complex2))
- return false;
- base = X.CompoundSelector$(H.setRuntimeTypeInfo([new N.PlaceholderSelector("<temp>")], [M.SimpleSelector]));
- t3 = [S.ComplexSelectorComponent];
- t4 = H.setRuntimeTypeInfo([], t3);
- for (t1 = t1.get$iterator(complex1); t1.moveNext$0();)
- t4.push(t1.get$current(t1));
- t4.push(base);
- t1 = H.setRuntimeTypeInfo([], t3);
- for (t2 = t2.get$iterator(complex2); t2.moveNext$0();)
- t1.push(t2.get$current(t2));
- t1.push(base);
- return Y.complexIsSuperselector(t4, t1);
- },
- complexIsSuperselector: function(complex1, complex2) {
- var t1, i1, i2, remaining1, remaining2, t2, afterSuperselector, afterSuperselector0, t3, compound2, i10, combinator1, combinator2;
- if (C.JSArray_methods.get$last(complex1) instanceof S.Combinator)
- return false;
- if (C.JSArray_methods.get$last(complex2) instanceof S.Combinator)
- return false;
- for (t1 = H.getTypeArgumentByIndex(complex2, 0), i1 = 0, i2 = 0; true;) {
- remaining1 = complex1.length - i1;
- remaining2 = complex2.length - i2;
- if (remaining1 === 0 || remaining2 === 0)
- return false;
- if (remaining1 > remaining2)
- return false;
- t2 = complex1[i1];
- if (t2 instanceof S.Combinator)
- return false;
- if (complex2[i2] instanceof S.Combinator)
- return false;
- H.interceptedTypeCast(t2, "$isCompoundSelector");
- if (remaining1 === 1)
- return Y.compoundIsSuperselector(t2, H.interceptedTypeCast(C.JSArray_methods.get$last(complex2), "$isCompoundSelector"), H.SubListIterable$(complex2, 0, complex2.length - 1, t1).skip$1(0, i2));
- afterSuperselector = i2 + 1;
- for (afterSuperselector0 = afterSuperselector; afterSuperselector0 < complex2.length; ++afterSuperselector0) {
- t3 = afterSuperselector0 - 1;
- compound2 = complex2[t3];
- if (compound2 instanceof X.CompoundSelector)
- if (Y.compoundIsSuperselector(t2, compound2, H.SubListIterable$(complex2, 0, t3, t1).skip$1(0, afterSuperselector)))
- break;
- }
- if (afterSuperselector0 === complex2.length)
- return false;
- i10 = i1 + 1;
- combinator1 = complex1[i10];
- combinator2 = complex2[afterSuperselector0];
- if (combinator1 instanceof S.Combinator) {
- if (!(combinator2 instanceof S.Combinator))
- return false;
- if (combinator1 === C.Combinator_CzM) {
- if (combinator2 === C.Combinator_sgq)
- return false;
- } else if (combinator2 !== combinator1)
- return false;
- if (remaining1 === 3 && remaining2 > 3)
- return false;
- i1 += 2;
- i2 = afterSuperselector0 + 1;
- } else {
- if (combinator2 instanceof S.Combinator) {
- if (combinator2 !== C.Combinator_sgq)
- return false;
- i2 = afterSuperselector0 + 1;
- } else
- i2 = afterSuperselector0;
- i1 = i10;
- }
- }
- },
- compoundIsSuperselector: function(compound1, compound2, parents) {
- var t1, t2, _i, simple1, simple2;
- for (t1 = compound1.components, t2 = t1.length, _i = 0; _i < t2; ++_i) {
- simple1 = t1[_i];
- if (simple1 instanceof D.PseudoSelector && simple1.selector != null) {
- if (!Y._selectorPseudoIsSuperselector(simple1, compound2, parents))
- return false;
- } else if (!Y._simpleIsSuperselectorOfCompound(simple1, compound2))
- return false;
- }
- for (t1 = compound2.components, t2 = t1.length, _i = 0; _i < t2; ++_i) {
- simple2 = t1[_i];
- if (simple2 instanceof D.PseudoSelector && !simple2.isClass && simple2.selector == null && !Y._simpleIsSuperselectorOfCompound(simple2, compound1))
- return false;
- }
- return true;
- },
- _simpleIsSuperselectorOfCompound: function(simple, compound) {
- return C.JSArray_methods.any$1(compound.components, new Y._simpleIsSuperselectorOfCompound_closure(simple));
- },
- _selectorPseudoIsSuperselector: function(pseudo1, compound2, parents) {
- switch (pseudo1.normalizedName) {
- case "matches":
- case "any":
- return Y._selectorPseudosNamed(compound2, pseudo1.name, true).any$1(0, new Y._selectorPseudoIsSuperselector_closure(pseudo1)) || C.JSArray_methods.any$1(pseudo1.selector.components, new Y._selectorPseudoIsSuperselector_closure0(parents, compound2));
- case "has":
- case "host":
- case "host-context":
- return Y._selectorPseudosNamed(compound2, pseudo1.name, true).any$1(0, new Y._selectorPseudoIsSuperselector_closure1(pseudo1));
- case "slotted":
- return Y._selectorPseudosNamed(compound2, pseudo1.name, false).any$1(0, new Y._selectorPseudoIsSuperselector_closure2(pseudo1));
- case "not":
- return C.JSArray_methods.every$1(pseudo1.selector.components, new Y._selectorPseudoIsSuperselector_closure3(compound2, pseudo1));
- case "current":
- return Y._selectorPseudosNamed(compound2, pseudo1.name, true).any$1(0, new Y._selectorPseudoIsSuperselector_closure4(pseudo1));
- case "nth-child":
- case "nth-last-child":
- return C.JSArray_methods.any$1(compound2.components, new Y._selectorPseudoIsSuperselector_closure5(pseudo1));
- default:
- throw H.wrapException("unreachable");
- }
- },
- _selectorPseudosNamed: function(compound, $name, isClass) {
- var t1 = D.PseudoSelector;
- return new H.WhereIterable(new H.WhereTypeIterable(compound.components, [t1]), new Y._selectorPseudosNamed_closure(isClass, $name), [t1]);
- },
- unifyComplex_closure: function unifyComplex_closure() {
- },
- _weaveParents_closure: function _weaveParents_closure() {
- },
- _weaveParents_closure0: function _weaveParents_closure0(t0) {
- this.group = t0;
- },
- _weaveParents_closure1: function _weaveParents_closure1() {
- },
- _weaveParents__closure1: function _weaveParents__closure1() {
- },
- _weaveParents_closure2: function _weaveParents_closure2() {
- },
- _weaveParents_closure3: function _weaveParents_closure3() {
- },
- _weaveParents__closure0: function _weaveParents__closure0() {
- },
- _weaveParents_closure4: function _weaveParents_closure4() {
- },
- _weaveParents_closure5: function _weaveParents_closure5() {
- },
- _weaveParents__closure: function _weaveParents__closure() {
- },
- _mustUnify_closure: function _mustUnify_closure(t0) {
- this.uniqueSelectors = t0;
- },
- _mustUnify__closure: function _mustUnify__closure(t0) {
- this.uniqueSelectors = t0;
- },
- paths_closure: function paths_closure(t0) {
- this.T = t0;
- },
- paths__closure: function paths__closure(t0, t1) {
- this.paths = t0;
- this.T = t1;
- },
- paths___closure: function paths___closure(t0, t1) {
- this.option = t0;
- this.T = t1;
- },
- _hasRoot_closure: function _hasRoot_closure() {
- },
- listIsSuperslector_closure: function listIsSuperslector_closure(t0) {
- this.list1 = t0;
- },
- listIsSuperslector__closure: function listIsSuperslector__closure(t0) {
- this.complex1 = t0;
- },
- _simpleIsSuperselectorOfCompound_closure: function _simpleIsSuperselectorOfCompound_closure(t0) {
- this.simple = t0;
- },
- _simpleIsSuperselectorOfCompound__closure: function _simpleIsSuperselectorOfCompound__closure(t0) {
- this.simple = t0;
- },
- _selectorPseudoIsSuperselector_closure: function _selectorPseudoIsSuperselector_closure(t0) {
- this.pseudo1 = t0;
- },
- _selectorPseudoIsSuperselector_closure0: function _selectorPseudoIsSuperselector_closure0(t0, t1) {
- this.parents = t0;
- this.compound2 = t1;
- },
- _selectorPseudoIsSuperselector_closure1: function _selectorPseudoIsSuperselector_closure1(t0) {
- this.pseudo1 = t0;
- },
- _selectorPseudoIsSuperselector_closure2: function _selectorPseudoIsSuperselector_closure2(t0) {
- this.pseudo1 = t0;
- },
- _selectorPseudoIsSuperselector_closure3: function _selectorPseudoIsSuperselector_closure3(t0, t1) {
- this.compound2 = t0;
- this.pseudo1 = t1;
- },
- _selectorPseudoIsSuperselector__closure: function _selectorPseudoIsSuperselector__closure(t0, t1) {
- this.complex = t0;
- this.pseudo1 = t1;
- },
- _selectorPseudoIsSuperselector___closure: function _selectorPseudoIsSuperselector___closure(t0) {
- this.simple2 = t0;
- },
- _selectorPseudoIsSuperselector___closure0: function _selectorPseudoIsSuperselector___closure0(t0) {
- this.simple2 = t0;
- },
- _selectorPseudoIsSuperselector_closure4: function _selectorPseudoIsSuperselector_closure4(t0) {
- this.pseudo1 = t0;
- },
- _selectorPseudoIsSuperselector_closure5: function _selectorPseudoIsSuperselector_closure5(t0) {
- this.pseudo1 = t0;
- },
- _selectorPseudosNamed_closure: function _selectorPseudosNamed_closure(t0, t1) {
- this.isClass = t0;
- this.name = t1;
- },
- closure: function closure() {
- },
- Chokidar: function Chokidar() {
- },
- ChokidarOptions: function ChokidarOptions() {
- },
- ChokidarWatcher: function ChokidarWatcher() {
- },
- SourceFile$decoded: function(decodedChars, url) {
- var t1 = H.setRuntimeTypeInfo([0], [P.int]),
- t2 = typeof url === "string" ? P.Uri_parse(url) : H.interceptedTypeCast(url, "$isUri");
- t1 = new Y.SourceFile(t2, t1, new Uint32Array(H._ensureNativeList(J.toList$0$ax(decodedChars))));
- t1.SourceFile$decoded$2$url(decodedChars, url);
- return t1;
- },
- FileLocation$_: function(file, offset) {
- if (offset < 0)
- H.throwExpression(P.RangeError$("Offset may not be negative, was " + offset + "."));
- else if (offset > file._decodedChars.length)
- H.throwExpression(P.RangeError$("Offset " + offset + " must not be greater than the number of characters in the file, " + file.get$length(file) + "."));
- return new Y.FileLocation(file, offset);
- },
- _FileSpan$: function(file, _start, _end) {
- if (_end < _start)
- H.throwExpression(P.ArgumentError$("End " + _end + " must come after start " + _start + "."));
- else if (_end > file._decodedChars.length)
- H.throwExpression(P.RangeError$("End " + _end + " must not be greater than the number of characters in the file, " + file.get$length(file) + "."));
- else if (_start < 0)
- H.throwExpression(P.RangeError$("Start may not be negative, was " + _start + "."));
- return new Y._FileSpan(file, _start, _end);
- },
- SourceFile: function SourceFile(t0, t1, t2) {
- var _ = this;
- _.url = t0;
- _._lineStarts = t1;
- _._decodedChars = t2;
- _._cachedLine = null;
- },
- FileLocation: function FileLocation(t0, t1) {
- this.file = t0;
- this.offset = t1;
- },
- FileSpan: function FileSpan() {
- },
- _FileSpan: function _FileSpan(t0, t1, t2) {
- this.file = t0;
- this._start = t1;
- this._file$_end = t2;
- },
- SourceSpanMixin: function SourceSpanMixin() {
- },
- Trace_Trace$from: function(trace) {
- if (trace == null)
- throw H.wrapException(P.ArgumentError$("Cannot create a Trace from null."));
- if (!!trace.$isTrace)
- return trace;
- if (!!trace.$isChain)
- return trace.toTrace$0();
- return new T.LazyTrace(new Y.Trace_Trace$from_closure(trace));
- },
- Trace_Trace$parse: function(trace) {
- var error, t1, exception;
- try {
- if (trace.length === 0) {
- t1 = A.Frame;
- t1 = P.List_List$unmodifiable(H.setRuntimeTypeInfo([], [t1]), t1);
- return new Y.Trace(t1, new P._StringStackTrace(null));
- }
- if (J.getInterceptor$asx(trace).contains$1(trace, $.$get$_v8Trace())) {
- t1 = Y.Trace$parseV8(trace);
- return t1;
- }
- if (C.JSString_methods.contains$1(trace, "\tat ")) {
- t1 = Y.Trace$parseJSCore(trace);
- return t1;
- }
- if (C.JSString_methods.contains$1(trace, $.$get$_firefoxSafariTrace())) {
- t1 = Y.Trace$parseFirefox(trace);
- return t1;
- }
- if (C.JSString_methods.contains$1(trace, "===== asynchronous gap ===========================\n")) {
- t1 = U.Chain_Chain$parse(trace).toTrace$0();
- return t1;
- }
- if (C.JSString_methods.contains$1(trace, $.$get$_friendlyTrace())) {
- t1 = Y.Trace$parseFriendly(trace);
- return t1;
- }
- t1 = P.List_List$unmodifiable(Y.Trace__parseVM(trace), A.Frame);
- return new Y.Trace(t1, new P._StringStackTrace(trace));
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (!!J.getInterceptor$(t1).$isFormatException) {
- error = t1;
- throw H.wrapException(P.FormatException$(H.S(J.get$message$x(error)) + "\nStack trace:\n" + H.S(trace), null, null));
- } else
- throw exception;
- }
- },
- Trace__parseVM: function(trace) {
- var $frames,
- t1 = J.trim$0$s(trace),
- lines = H.setRuntimeTypeInfo(H.stringReplaceAllUnchecked(t1, "<asynchronous suspension>\n", "").split("\n"), [P.String]);
- t1 = H.SubListIterable$(lines, 0, lines.length - 1, H.getTypeArgumentByIndex(lines, 0));
- $frames = new H.MappedListIterable(t1, new Y.Trace__parseVM_closure(), [H.getTypeArgumentByIndex(t1, 0), A.Frame]).toList$0(0);
- if (!J.endsWith$1$s(C.JSArray_methods.get$last(lines), ".da"))
- C.JSArray_methods.add$1($frames, A.Frame_Frame$parseVM(C.JSArray_methods.get$last(lines)));
- return $frames;
- },
- Trace$parseV8: function(trace) {
- var t2,
- t1 = H.setRuntimeTypeInfo(trace.split("\n"), [P.String]);
- t1 = H.SubListIterable$(t1, 1, null, H.getTypeArgumentByIndex(t1, 0)).super$Iterable$skipWhile(0, new Y.Trace$parseV8_closure());
- t2 = A.Frame;
- return new Y.Trace(P.List_List$unmodifiable(H.MappedIterable_MappedIterable(t1, new Y.Trace$parseV8_closure0(), H.getTypeArgumentByIndex(t1, 0), t2), t2), new P._StringStackTrace(trace));
- },
- Trace$parseJSCore: function(trace) {
- var t1 = H.setRuntimeTypeInfo(trace.split("\n"), [P.String]),
- t2 = H.getTypeArgumentByIndex(t1, 0),
- t3 = A.Frame;
- return new Y.Trace(P.List_List$unmodifiable(new H.MappedIterable(new H.WhereIterable(t1, new Y.Trace$parseJSCore_closure(), [t2]), new Y.Trace$parseJSCore_closure0(), [t2, t3]), t3), new P._StringStackTrace(trace));
- },
- Trace$parseFirefox: function(trace) {
- var t1 = H.setRuntimeTypeInfo(C.JSString_methods.trim$0(trace).split("\n"), [P.String]),
- t2 = H.getTypeArgumentByIndex(t1, 0),
- t3 = A.Frame;
- return new Y.Trace(P.List_List$unmodifiable(new H.MappedIterable(new H.WhereIterable(t1, new Y.Trace$parseFirefox_closure(), [t2]), new Y.Trace$parseFirefox_closure0(), [t2, t3]), t3), new P._StringStackTrace(trace));
- },
- Trace$parseFriendly: function(trace) {
- var t2, t3,
- t1 = A.Frame;
- if (trace.length === 0)
- t2 = H.setRuntimeTypeInfo([], [t1]);
- else {
- t2 = H.setRuntimeTypeInfo(J.trim$0$s(trace).split("\n"), [P.String]);
- t3 = H.getTypeArgumentByIndex(t2, 0);
- t3 = new H.MappedIterable(new H.WhereIterable(t2, new Y.Trace$parseFriendly_closure(), [t3]), new Y.Trace$parseFriendly_closure0(), [t3, t1]);
- t2 = t3;
- }
- return new Y.Trace(P.List_List$unmodifiable(t2, t1), new P._StringStackTrace(trace));
- },
- Trace: function Trace(t0, t1) {
- this.frames = t0;
- this.original = t1;
- },
- Trace_Trace$from_closure: function Trace_Trace$from_closure(t0) {
- this.trace = t0;
- },
- Trace__parseVM_closure: function Trace__parseVM_closure() {
- },
- Trace$parseV8_closure: function Trace$parseV8_closure() {
- },
- Trace$parseV8_closure0: function Trace$parseV8_closure0() {
- },
- Trace$parseJSCore_closure: function Trace$parseJSCore_closure() {
- },
- Trace$parseJSCore_closure0: function Trace$parseJSCore_closure0() {
- },
- Trace$parseFirefox_closure: function Trace$parseFirefox_closure() {
- },
- Trace$parseFirefox_closure0: function Trace$parseFirefox_closure0() {
- },
- Trace$parseFriendly_closure: function Trace$parseFriendly_closure() {
- },
- Trace$parseFriendly_closure0: function Trace$parseFriendly_closure0() {
- },
- Trace_terse_closure: function Trace_terse_closure() {
- },
- Trace_foldFrames_closure: function Trace_foldFrames_closure(t0) {
- this.oldPredicate = t0;
- },
- Trace_foldFrames_closure0: function Trace_foldFrames_closure0(t0) {
- this._box_0 = t0;
- },
- Trace_toString_closure0: function Trace_toString_closure0() {
- },
- Trace_toString_closure: function Trace_toString_closure(t0) {
- this.longest = t0;
- },
- repl: function(options) {
- return Y.repl$body(options);
- },
- repl$body: function(options) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$handler = 1, $async$currentError, $async$next = [], repl, logger, evaluator, line, declaration, error, stackTrace, t6, t7, t8, t9, line0, exception, t1, t2, t3, t4, t5, repl0;
- var $async$repl = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1) {
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = P.String;
- t2 = [t1];
- t3 = H.setRuntimeTypeInfo([], t2);
- t4 = C.JSString_methods.$mul(" ", 3);
- t5 = $.$get$alwaysValid();
- repl0 = new Q.Repl(">> ", t4, t5, t3);
- repl0._adapter = new B.ReplAdapter(repl0);
- repl = repl0;
- t3 = options._options;
- logger = new T.TrackingLogger(H.boolTypeCast(t3.$index(0, "quiet")) ? $.$get$Logger_quiet() : new S.StderrLogger(options.get$color()));
- t4 = D.absolute(".");
- evaluator = new R.Evaluator(R._EvaluateVisitor$(null, R.ImportCache$(C.List_empty10, H.subtypeCast(t3.$index(0, "load-path"), "$isList", t2, "$asList"), logger), logger, null, false), new F.FilesystemImporter(t4));
- t4 = P._StreamIterator$(repl._adapter.runAsync$0());
- $async$handler = 2;
- t2 = Z.VariableDeclaration, t3 = [P.int];
- case 5:
- // for condition
- $async$goto = 7;
- return P._asyncAwait(t4.moveNext$0(), $async$repl);
- case 7:
- // returning from await.
- if (!$async$result) {
- // goto after for
- $async$goto = 6;
- break;
- }
- line = t4.get$current(t4);
- if (J.trim$0$s(line).length === 0) {
- // goto for condition
- $async$goto = 5;
- break;
- }
- try {
- if (J.startsWith$1$s(line, "@")) {
- t5 = evaluator;
- t6 = line;
- t7 = logger;
- t6.toString;
- t8 = new H.CodeUnits(t6);
- t9 = H.setRuntimeTypeInfo([0], t3);
- t9 = new Y.SourceFile(null, t9, new Uint32Array(H._ensureNativeList(t8.toList$0(t8))));
- t9.SourceFile$decoded$2$url(t8, null);
- if (t7 == null)
- t7 = C.StderrLogger_false;
- t7 = new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), new S.SpanScanner(t9, null, t6), t7).parseUseRule$0();
- t5._visitor.runStatement$2(t5._importer, t7);
- // goto for condition
- $async$goto = 5;
- break;
- }
- t5 = line;
- t5.toString;
- t6 = new H.CodeUnits(t5);
- t7 = H.setRuntimeTypeInfo([0], t3);
- t7 = new Y.SourceFile(null, t7, new Uint32Array(H._ensureNativeList(t6.toList$0(t6))));
- t7.SourceFile$decoded$2$url(t6, null);
- if (new G.Parser(new S.SpanScanner(t7, null, t5), C.StderrLogger_false)._isVariableDeclarationLike$0()) {
- t5 = line;
- t6 = logger;
- t5.toString;
- t7 = new H.CodeUnits(t5);
- t8 = H.setRuntimeTypeInfo([0], t3);
- t8 = new Y.SourceFile(null, t8, new Uint32Array(H._ensureNativeList(t7.toList$0(t7))));
- t8.SourceFile$decoded$2$url(t7, null);
- if (t6 == null)
- t6 = C.StderrLogger_false;
- declaration = new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), new S.SpanScanner(t8, null, t5), t6).parseVariableDeclaration$0();
- t6 = evaluator;
- t6._visitor.runStatement$2(t6._importer, declaration);
- t6 = evaluator;
- t5 = declaration.name;
- t8 = declaration.span;
- t7 = declaration.namespace;
- line0 = H.S(t6._visitor.runExpression$2(t6._importer, new S.VariableExpression(t7, t5, t8)));
- t5 = $.printToZone;
- if (t5 == null)
- H.printString(line0);
- else
- t5.call$1(line0);
- } else {
- t5 = evaluator;
- t6 = line;
- t7 = logger;
- t6.toString;
- t8 = new H.CodeUnits(t6);
- t9 = H.setRuntimeTypeInfo([0], t3);
- t9 = new Y.SourceFile(null, t9, new Uint32Array(H._ensureNativeList(t8.toList$0(t8))));
- t9.SourceFile$decoded$2$url(t8, null);
- if (t7 == null)
- t7 = C.StderrLogger_false;
- t7 = new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), new S.SpanScanner(t9, null, t6), t7);
- t7 = t7._parseSingleProduction$1(t7.get$expression());
- line0 = H.S(t5._visitor.runExpression$2(t5._importer, t7));
- t5 = $.printToZone;
- if (t5 == null)
- H.printString(line0);
- else
- t5.call$1(line0);
- }
- } catch (exception) {
- t5 = H.unwrapException(exception);
- if (t5 instanceof E.SassException) {
- error = t5;
- stackTrace = H.getTraceFromException(exception);
- Y._logError(error, stackTrace, line, repl, options, logger);
- } else
- throw exception;
- }
- // goto for condition
- $async$goto = 5;
- break;
- case 6:
- // after for
- $async$next.push(4);
- // goto finally
- $async$goto = 3;
- break;
- case 2:
- // uncaught
- $async$next = [1];
- case 3:
- // finally
- $async$handler = 1;
- $async$goto = 8;
- return P._asyncAwait(t4.cancel$0(), $async$repl);
- case 8:
- // returning from await.
- // goto the next finally handler
- $async$goto = $async$next.pop();
- break;
- case 4:
- // after finally
- // implicit return
- return P._asyncReturn(null, $async$completer);
- case 1:
- // rethrow
- return P._asyncRethrow($async$currentError, $async$completer);
- }
- });
- return P._asyncStartSync($async$repl, $async$completer);
- },
- _logError: function(error, stackTrace, line, repl, options, logger) {
- var t1, t2, spacesBeforeError;
- if (G.SourceSpanException.prototype.get$span.call(error).file.url == null)
- if (!H.boolTypeCast(options._options.$index(0, "quiet")))
- t1 = logger._emittedDebug || logger._emittedWarning;
- else
- t1 = false;
- else
- t1 = true;
- if (t1) {
- P.print(error.toString$1$color(0, options.get$color()));
- return;
- }
- t1 = options.get$color() ? "\x1b[31m" : "";
- t2 = G.SourceSpanException.prototype.get$span.call(error);
- t2 = Y.FileLocation$_(t2.file, t2._start);
- spacesBeforeError = repl.prompt.length + t2.file.getColumn$1(t2.offset);
- if (options.get$color()) {
- t2 = G.SourceSpanException.prototype.get$span.call(error);
- t2 = Y.FileLocation$_(t2.file, t2._start);
- t2 = t2.file.getColumn$1(t2.offset) < line.length;
- } else
- t2 = false;
- if (t2) {
- t1 += "\x1b[1F\x1b[" + spacesBeforeError + "C";
- t2 = G.SourceSpanException.prototype.get$span.call(error);
- t2 = t1 + (P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(t2.file._decodedChars, t2._start, t2._file$_end), 0, null) + "\n");
- t1 = t2;
- }
- t1 += C.JSString_methods.$mul(" ", spacesBeforeError);
- t2 = G.SourceSpanException.prototype.get$span.call(error);
- t2 = t1 + (C.JSString_methods.$mul("^", Math.max(1, t2._file$_end - t2._start)) + "\n");
- t1 = options.get$color() ? t2 + "\x1b[0m" : t2;
- t1 += "Error: " + H.S(error._span_exception$_message) + "\n";
- if (H.boolTypeCast(options._options.$index(0, "trace")))
- t1 += Y.Trace_Trace$from(stackTrace).get$terse().toString$0(0);
- P.print(C.JSString_methods.trimRight$0(t1.charCodeAt(0) == 0 ? t1 : t1));
- }
- },
- L = {StreamGroup: function StreamGroup(t0, t1, t2) {
- var _ = this;
- _._controller = null;
- _._closed = false;
- _._stream_group$_state = t0;
- _._subscriptions = t1;
- _.$ti = t2;
- }, StreamGroup_add_closure: function StreamGroup_add_closure() {
- }, StreamGroup_add_closure0: function StreamGroup_add_closure0(t0, t1) {
- this.$this = t0;
- this.stream = t1;
- }, StreamGroup__onListen_closure: function StreamGroup__onListen_closure(t0) {
- this.$this = t0;
- }, StreamGroup__onCancel_closure: function StreamGroup__onCancel_closure() {
- }, StreamGroup__onCancel_closure0: function StreamGroup__onCancel_closure0() {
- }, StreamGroup__listenToStream_closure: function StreamGroup__listenToStream_closure(t0, t1) {
- this.$this = t0;
- this.stream = t1;
- }, _StreamGroupState: function _StreamGroupState(t0) {
- this.name = t0;
- },
- UnmodifiableSetMixin__throw: function() {
- throw H.wrapException(P.UnsupportedError$("Cannot modify an unmodifiable Set"));
- },
- UnmodifiableSetView: function UnmodifiableSetView(t0, t1) {
- this._base = t0;
- this.$ti = t1;
- },
- UnmodifiableSetMixin: function UnmodifiableSetMixin() {
- },
- _UnmodifiableSetView_DelegatingSet_UnmodifiableSetMixin: function _UnmodifiableSetView_DelegatingSet_UnmodifiableSetMixin() {
- },
- WindowsStyle: function WindowsStyle(t0, t1, t2, t3) {
- var _ = this;
- _.separatorPattern = t0;
- _.needsSeparatorPattern = t1;
- _.rootPattern = t2;
- _.relativeRootPattern = t3;
- },
- WindowsStyle_absolutePathToUri_closure: function WindowsStyle_absolutePathToUri_closure() {
- },
- ModifiableCssDeclaration$: function($name, value, span, valueSpanForMap) {
- return new L.ModifiableCssDeclaration($name, value, valueSpanForMap == null ? span : valueSpanForMap, span);
- },
- ModifiableCssDeclaration: function ModifiableCssDeclaration(t0, t1, t2, t3) {
- var _ = this;
- _.name = t0;
- _.value = t1;
- _.valueSpanForMap = t2;
- _.span = t3;
- _._indexInParent = _._parent = null;
- _.isGroupEnd = false;
- },
- IfExpression: function IfExpression(t0, t1) {
- this.$arguments = t0;
- this.span = t1;
- },
- Declaration$: function($name, span, children, value) {
- var t1;
- children = children == null ? null : P.List_List$unmodifiable(children, O.Statement);
- t1 = children == null ? null : C.JSArray_methods.any$1(children, new M.ParentStatement_closure());
- return new L.Declaration($name, value, span, children, t1 === true);
- },
- Declaration: function Declaration(t0, t1, t2, t3, t4) {
- var _ = this;
- _.name = t0;
- _.value = t1;
- _.span = t2;
- _.children = t3;
- _.hasDeclarations = t4;
- },
- ForwardRule: function ForwardRule(t0, t1, t2, t3, t4, t5, t6, t7) {
- var _ = this;
- _.url = t0;
- _.shownMixinsAndFunctions = t1;
- _.shownVariables = t2;
- _.hiddenMixinsAndFunctions = t3;
- _.hiddenVariables = t4;
- _.prefix = t5;
- _.configuration = t6;
- _.span = t7;
- },
- ForwardRule__memberList_closure: function ForwardRule__memberList_closure() {
- },
- LoudComment: function LoudComment(t0) {
- this.text = t0;
- },
- SupportsDeclaration: function SupportsDeclaration(t0, t1, t2) {
- this.name = t0;
- this.value = t1;
- this.span = t2;
- },
- PlainCssCallable: function PlainCssCallable(t0) {
- this.name = t0;
- },
- ExtendMode: function ExtendMode(t0) {
- this.name = t0;
- },
- RenderContextOptions: function RenderContextOptions() {
- },
- ScssParser: function ScssParser(t0, t1, t2) {
- var _ = this;
- _._isUseAllowed = true;
- _._stylesheet$_inMixin = false;
- _._mixinHasContent = null;
- _._inParentheses = _._inStyleRule = _._stylesheet$_inUnknownAtRule = _._inControlDirective = _._inContentBlock = false;
- _._globalVariables = t0;
- _.lastSilentComment = null;
- _.scanner = t1;
- _.logger = t2;
- },
- Entry: function Entry(t0, t1, t2) {
- this.source = t0;
- this.target = t1;
- this.identifierName = t2;
- },
- _StreamTransformer__defaultHandleError: function(error, stackTrace, sink) {
- sink.addError$2(error, stackTrace);
- },
- _StreamTransformer: function _StreamTransformer(t0, t1, t2, t3) {
- var _ = this;
- _._from_handlers$_handleData = t0;
- _._from_handlers$_handleDone = t1;
- _._from_handlers$_handleError = t2;
- _.$ti = t3;
- },
- _StreamTransformer_bind_closure: function _StreamTransformer_bind_closure(t0, t1, t2, t3) {
- var _ = this;
- _._box_1 = t0;
- _.$this = t1;
- _.values = t2;
- _.controller = t3;
- },
- _StreamTransformer_bind__closure: function _StreamTransformer_bind__closure(t0, t1) {
- this.$this = t0;
- this.controller = t1;
- },
- _StreamTransformer_bind__closure1: function _StreamTransformer_bind__closure1(t0, t1) {
- this.$this = t0;
- this.controller = t1;
- },
- _StreamTransformer_bind__closure0: function _StreamTransformer_bind__closure0(t0, t1, t2) {
- this._box_0 = t0;
- this.$this = t1;
- this.controller = t2;
- },
- _StreamTransformer_bind__closure2: function _StreamTransformer_bind__closure2(t0, t1) {
- this._box_1 = t0;
- this._box_0 = t1;
- },
- encodeVlq: function(value) {
- var res, signBit, digit, t1;
- if (value < $.$get$MIN_INT32() || value > $.$get$MAX_INT32())
- throw H.wrapException(P.ArgumentError$("expected 32 bit int, got: " + value));
- res = H.setRuntimeTypeInfo([], [P.String]);
- if (value < 0) {
- value = -value;
- signBit = 1;
- } else
- signBit = 0;
- value = value << 1 | signBit;
- do {
- digit = value & 31;
- value = value >>> 5;
- t1 = value > 0;
- res.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[t1 ? digit | 32 : digit]);
- } while (t1);
- return res;
- }
- },
- Q = {Repl: function Repl(t0, t1, t2, t3) {
- var _ = this;
- _.prompt = t0;
- _.continuation = t1;
- _.validator = t2;
- _._adapter = null;
- _.history = t3;
- }, closure142: function closure142() {
- },
- QueueList$: function(initialCapacity, $E) {
- var t1 = new Q.QueueList(0, 0, [$E]);
- t1.QueueList$1(initialCapacity, $E);
- return t1;
- },
- QueueList_QueueList$from: function(source, $E) {
- var $length, queue,
- t1 = J.getInterceptor$(source);
- if (!!t1.$isList) {
- $length = t1.get$length(source);
- queue = Q.QueueList$($length + 1, $E);
- J.setRange$4$ax(queue._table, 0, $length, source, 0);
- queue._tail = $length;
- return queue;
- } else {
- t1 = Q.QueueList$(null, $E);
- t1.addAll$1(0, source);
- return t1;
- }
- },
- QueueList__nextPowerOf2: function(number) {
- var nextNumber;
- number = (number << 1 >>> 0) - 1;
- for (; true; number = nextNumber) {
- nextNumber = (number & number - 1) >>> 0;
- if (nextNumber === 0)
- return number;
- }
- },
- QueueList: function QueueList(t0, t1, t2) {
- var _ = this;
- _._table = null;
- _._head = t0;
- _._tail = t1;
- _.$ti = t2;
- },
- _CastQueueList: function _CastQueueList(t0, t1, t2, t3) {
- var _ = this;
- _._queue_list$_delegate = t0;
- _._table = null;
- _._head = t1;
- _._tail = t2;
- _.$ti = t3;
- },
- _QueueList_Object_ListMixin: function _QueueList_Object_ListMixin() {
- },
- StaticImport: function StaticImport(t0, t1, t2, t3) {
- var _ = this;
- _.url = t0;
- _.supports = t1;
- _.media = t2;
- _.span = t3;
- },
- ContentRule: function ContentRule(t0, t1) {
- this.span = t0;
- this.$arguments = t1;
- },
- DebugRule: function DebugRule(t0, t1) {
- this.expression = t0;
- this.span = t1;
- },
- AsyncEnvironment$: function(sourceMap) {
- var _null = null,
- t1 = P.String,
- t2 = [G.Module, B.AsyncCallable],
- t3 = B.AstNode,
- t4 = H.setRuntimeTypeInfo([], [t2]),
- t5 = H.setRuntimeTypeInfo([P.LinkedHashMap_LinkedHashMap$_empty(t1, F.Value)], [[P.Map, P.String, F.Value]]),
- t6 = sourceMap ? H.setRuntimeTypeInfo([P.LinkedHashMap_LinkedHashMap$_empty(t1, t3)], [[P.Map, P.String, B.AstNode]]) : _null,
- t7 = P.int,
- t8 = B.AsyncCallable,
- t9 = [[P.Map, P.String, B.AsyncCallable]];
- return new Q.AsyncEnvironment(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), P.LinkedHashMap_LinkedHashMap$_empty(t1, t3), _null, _null, _null, _null, _null, t4, t5, t6, P.LinkedHashMap_LinkedHashMap$_empty(t1, t7), H.setRuntimeTypeInfo([P.LinkedHashMap_LinkedHashMap$_empty(t1, t8)], t9), P.LinkedHashMap_LinkedHashMap$_empty(t1, t7), H.setRuntimeTypeInfo([P.LinkedHashMap_LinkedHashMap$_empty(t1, t8)], t9), P.LinkedHashMap_LinkedHashMap$_empty(t1, t7), _null);
- },
- AsyncEnvironment$_: function(_modules, _namespaceNodes, _globalModules, _globalModuleNodes, _forwardedModules, _forwardedModuleNodes, _nestedForwardedModules, _allModules, _variables, _variableNodes, _functions, _mixins, _content) {
- var t1 = P.String,
- t2 = P.int;
- return new Q.AsyncEnvironment(_modules, _namespaceNodes, _globalModules, _globalModuleNodes, _forwardedModules, _forwardedModuleNodes, _nestedForwardedModules, _allModules, _variables, _variableNodes, P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _functions, P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _mixins, P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _content);
- },
- _EnvironmentModule__EnvironmentModule0: function(environment, css, extender, forwarded) {
- var t1, t2, t3, t4, t5, t6;
- if (forwarded == null)
- forwarded = C.List_empty13;
- t1 = Q._EnvironmentModule__makeModulesByVariable0(forwarded);
- t2 = H.getTypeArgumentByIndex(forwarded, 0);
- t3 = Q._EnvironmentModule__memberMap0(C.JSArray_methods.get$first(environment._async_environment$_variables), new H.MappedListIterable(forwarded, new Q._EnvironmentModule__EnvironmentModule_closure5(), [t2, [P.Map, P.String, F.Value]]), F.Value);
- t4 = environment._async_environment$_variableNodes;
- t4 = t4 == null ? null : Q._EnvironmentModule__memberMap0(C.JSArray_methods.get$first(t4), new H.MappedListIterable(forwarded, new Q._EnvironmentModule__EnvironmentModule_closure6(), [t2, [P.Map, P.String, B.AstNode]]), B.AstNode);
- t2 = [t2, [P.Map, P.String, B.AsyncCallable]];
- t5 = B.AsyncCallable;
- t6 = Q._EnvironmentModule__memberMap0(C.JSArray_methods.get$first(environment._async_environment$_functions), new H.MappedListIterable(forwarded, new Q._EnvironmentModule__EnvironmentModule_closure7(), t2), t5);
- t5 = Q._EnvironmentModule__memberMap0(C.JSArray_methods.get$first(environment._async_environment$_mixins), new H.MappedListIterable(forwarded, new Q._EnvironmentModule__EnvironmentModule_closure8(), t2), t5);
- t2 = J.get$isNotEmpty$asx(css.get$children()) || C.JSArray_methods.any$1(environment._async_environment$_allModules, new Q._EnvironmentModule__EnvironmentModule_closure9());
- return Q._EnvironmentModule$_0(environment, css, extender, t1, t3, t4, t6, t5, t2, !extender.get$isEmpty(extender) || C.JSArray_methods.any$1(environment._async_environment$_allModules, new Q._EnvironmentModule__EnvironmentModule_closure10()));
- },
- _EnvironmentModule__makeModulesByVariable0: function(forwarded) {
- var modulesByVariable, _i, module, t2, t3,
- t1 = forwarded.length;
- if (t1 === 0)
- return C.Map_empty5;
- modulesByVariable = P.LinkedHashMap_LinkedHashMap$_empty(P.String, [G.Module, B.AsyncCallable]);
- for (_i = 0; _i < forwarded.length; forwarded.length === t1 || (0, H.throwConcurrentModificationError)(forwarded), ++_i) {
- module = forwarded[_i];
- if (module instanceof Q._EnvironmentModule0) {
- for (t2 = module._async_environment$_modulesByVariable.get$values(), t2 = t2.get$iterator(t2); t2.moveNext$0();) {
- t3 = t2.get$current(t2);
- B.setAll(modulesByVariable, t3.get$variables().get$keys(), t3);
- }
- B.setAll(modulesByVariable, C.JSArray_methods.get$first(module._async_environment$_environment._async_environment$_variables).get$keys(), module);
- } else
- B.setAll(modulesByVariable, module.get$variables().get$keys(), module);
- }
- return modulesByVariable;
- },
- _EnvironmentModule__memberMap0: function(localMap, otherMaps, $V) {
- var t1, t2, t3;
- localMap = new U.PublicMemberMapView(localMap, [$V]);
- if (otherMaps.get$length(otherMaps) === 0)
- return localMap;
- t1 = H.setRuntimeTypeInfo([], [[P.Map, P.String, $V]]);
- for (t2 = new H.ListIterator(otherMaps, otherMaps.get$length(otherMaps)); t2.moveNext$0();) {
- t3 = t2.__internal$_current;
- if (t3.get$isNotEmpty(t3))
- t1.push(t3);
- }
- t1.push(localMap);
- if (t1.length === 1)
- return localMap;
- return Z.MergedMapView$(t1, P.String, $V);
- },
- _EnvironmentModule$_0: function(_environment, css, extender, _modulesByVariable, variables, variableNodes, functions, mixins, transitivelyContainsCss, transitivelyContainsExtensions) {
- return new Q._EnvironmentModule0(_environment._async_environment$_allModules, variables, variableNodes, functions, mixins, extender, css, transitivelyContainsCss, transitivelyContainsExtensions, _environment, _modulesByVariable);
- },
- AsyncEnvironment: function AsyncEnvironment(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) {
- var _ = this;
- _._async_environment$_modules = t0;
- _._async_environment$_namespaceNodes = t1;
- _._async_environment$_globalModules = t2;
- _._async_environment$_globalModuleNodes = t3;
- _._async_environment$_forwardedModules = t4;
- _._async_environment$_forwardedModuleNodes = t5;
- _._async_environment$_nestedForwardedModules = t6;
- _._async_environment$_allModules = t7;
- _._async_environment$_variables = t8;
- _._async_environment$_variableNodes = t9;
- _._async_environment$_variableIndices = t10;
- _._async_environment$_functions = t11;
- _._async_environment$_functionIndices = t12;
- _._async_environment$_mixins = t13;
- _._async_environment$_mixinIndices = t14;
- _._async_environment$_content = t15;
- _._async_environment$_inMixin = false;
- _._async_environment$_inSemiGlobalScope = true;
- _._async_environment$_lastVariableIndex = _._async_environment$_lastVariableName = null;
- },
- AsyncEnvironment_importForwards_closure: function AsyncEnvironment_importForwards_closure() {
- },
- AsyncEnvironment_importForwards_closure0: function AsyncEnvironment_importForwards_closure0() {
- },
- AsyncEnvironment_importForwards_closure1: function AsyncEnvironment_importForwards_closure1() {
- },
- AsyncEnvironment_importForwards_closure2: function AsyncEnvironment_importForwards_closure2() {
- },
- AsyncEnvironment__getVariableFromGlobalModule_closure: function AsyncEnvironment__getVariableFromGlobalModule_closure(t0) {
- this.name = t0;
- },
- AsyncEnvironment_setVariable_closure: function AsyncEnvironment_setVariable_closure(t0, t1) {
- this.$this = t0;
- this.name = t1;
- },
- AsyncEnvironment_setVariable_closure0: function AsyncEnvironment_setVariable_closure0(t0) {
- this.name = t0;
- },
- AsyncEnvironment_setVariable_closure1: function AsyncEnvironment_setVariable_closure1(t0, t1) {
- this.$this = t0;
- this.name = t1;
- },
- AsyncEnvironment__getFunctionFromGlobalModule_closure: function AsyncEnvironment__getFunctionFromGlobalModule_closure(t0) {
- this.name = t0;
- },
- AsyncEnvironment__getMixinFromGlobalModule_closure: function AsyncEnvironment__getMixinFromGlobalModule_closure(t0) {
- this.name = t0;
- },
- _EnvironmentModule0: function _EnvironmentModule0(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) {
- var _ = this;
- _.upstream = t0;
- _.variables = t1;
- _.variableNodes = t2;
- _.functions = t3;
- _.mixins = t4;
- _.extender = t5;
- _.css = t6;
- _.transitivelyContainsCss = t7;
- _.transitivelyContainsExtensions = t8;
- _._async_environment$_environment = t9;
- _._async_environment$_modulesByVariable = t10;
- },
- _EnvironmentModule__EnvironmentModule_closure5: function _EnvironmentModule__EnvironmentModule_closure5() {
- },
- _EnvironmentModule__EnvironmentModule_closure6: function _EnvironmentModule__EnvironmentModule_closure6() {
- },
- _EnvironmentModule__EnvironmentModule_closure7: function _EnvironmentModule__EnvironmentModule_closure7() {
- },
- _EnvironmentModule__EnvironmentModule_closure8: function _EnvironmentModule__EnvironmentModule_closure8() {
- },
- _EnvironmentModule__EnvironmentModule_closure9: function _EnvironmentModule__EnvironmentModule_closure9() {
- },
- _EnvironmentModule__EnvironmentModule_closure10: function _EnvironmentModule__EnvironmentModule_closure10() {
- },
- BuiltInCallable$function: function($name, $arguments, callback, url) {
- var t1 = S.SpanScanner$("@function " + $name + "(" + $arguments + ") {", url);
- return new Q.BuiltInCallable($name, H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), t1, C.StderrLogger_false).parseArgumentDeclaration$0(), callback, [B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}])], [[S.Tuple2, B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}]]));
- },
- BuiltInCallable$mixin: function($name, $arguments, callback, url) {
- var t1 = S.SpanScanner$("@mixin " + $name + "(" + $arguments + ") {", url);
- return new Q.BuiltInCallable($name, H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), t1, C.StderrLogger_false).parseArgumentDeclaration$0(), new Q.BuiltInCallable$mixin_closure(callback), [B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}])], [[S.Tuple2, B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}]]));
- },
- BuiltInCallable$parsed: function($name, $arguments, callback) {
- return new Q.BuiltInCallable($name, H.setRuntimeTypeInfo([new S.Tuple2($arguments, callback, [B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}])], [[S.Tuple2, B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}]]));
- },
- BuiltInCallable$overloadedFunction: function($name, overloads) {
- var t2, t3, t4, t5, t6, t7, t8, t9, t10,
- t1 = H.setRuntimeTypeInfo([], [[S.Tuple2, B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}]]);
- for (t2 = overloads.get$entries(), t2 = t2.get$iterator(t2), t3 = [B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}], t4 = P.String, t5 = Z.VariableDeclaration, t6 = [P.int]; t2.moveNext$0();) {
- t7 = t2.get$current(t2);
- t8 = "@function " + $name + "(" + H.S(t7.key) + ") {";
- t9 = new H.CodeUnits(t8);
- t10 = H.setRuntimeTypeInfo([0], t6);
- t10 = new Y.SourceFile(null, t10, new Uint32Array(H._ensureNativeList(t9.toList$0(t9))));
- t10.SourceFile$decoded$2$url(t9, null);
- t1.push(new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t4, t5), new S.SpanScanner(t10, null, t8), C.StderrLogger_false).parseArgumentDeclaration$0(), t7.value, t3));
- }
- return new Q.BuiltInCallable($name, t1);
- },
- BuiltInCallable: function BuiltInCallable(t0, t1) {
- this.name = t0;
- this._overloads = t1;
- },
- BuiltInCallable$mixin_closure: function BuiltInCallable$mixin_closure(t0) {
- this.callback = t0;
- },
- _function5: function($name, $arguments, callback) {
- var t1 = S.SpanScanner$("@function " + $name + "(" + $arguments + ") {", "sass:meta");
- return new Q.BuiltInCallable($name, H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), t1, C.StderrLogger_false).parseArgumentDeclaration$0(), callback, [B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}])], [[S.Tuple2, B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}]]));
- },
- closure101: function closure101() {
- },
- closure102: function closure102() {
- },
- closure103: function closure103() {
- },
- closure104: function closure104() {
- },
- _closure13: function _closure13() {
- },
- BuiltInModule$: function($name, functions, mixins, variables, $T) {
- var t1 = P._Uri__Uri(null, $name, null, "sass"),
- t2 = Q.BuiltInModule__callableMap(functions, $T),
- t3 = Q.BuiltInModule__callableMap(mixins, $T),
- t4 = variables == null ? C.Map_empty2 : new P.UnmodifiableMapView(variables, [P.String, F.Value]);
- return new Q.BuiltInModule(t1, t2, t3, t4, [$T]);
- },
- BuiltInModule__callableMap: function(callables, $T) {
- var t2, t3, _i, callable,
- t1 = P.String;
- if (callables == null)
- t2 = P.LinkedHashMap_LinkedHashMap$_empty(t1, $T);
- else {
- t2 = P.LinkedHashMap_LinkedHashMap$_empty(t1, $T);
- for (t3 = callables.length, _i = 0; _i < callables.length; callables.length === t3 || (0, H.throwConcurrentModificationError)(callables), ++_i) {
- callable = callables[_i];
- t2.$indexSet(0, callable.get$name(), callable);
- }
- t2 = new P.UnmodifiableMapView(t2, [t1, $T]);
- }
- return new P.UnmodifiableMapView(t2, [t1, $T]);
- },
- BuiltInModule: function BuiltInModule(t0, t1, t2, t3, t4) {
- var _ = this;
- _.url = t0;
- _.functions = t1;
- _.mixins = t2;
- _.variables = t3;
- _.$ti = t4;
- },
- closure105: function closure105() {
- },
- CssParser: function CssParser(t0, t1, t2) {
- var _ = this;
- _._isUseAllowed = true;
- _._stylesheet$_inMixin = false;
- _._mixinHasContent = null;
- _._inParentheses = _._inStyleRule = _._stylesheet$_inUnknownAtRule = _._inControlDirective = _._inContentBlock = false;
- _._globalVariables = t0;
- _.lastSilentComment = null;
- _.scanner = t1;
- _.logger = t2;
- }
- },
- B = {ReplAdapter: function ReplAdapter(t0) {
- this.repl = t0;
- this.rl = null;
- }, ReplAdapter_runAsync_closure: function ReplAdapter_runAsync_closure(t0) {
- this.controller = t0;
- }, Stdin: function Stdin() {
- }, Stdout: function Stdout() {
- }, ReadlineModule: function ReadlineModule() {
- }, ReadlineOptions: function ReadlineOptions() {
- }, ReadlineInterface: function ReadlineInterface() {
- },
- defaultCompare: function($T) {
- return new B.defaultCompare_closure($T);
- },
- defaultCompare_closure: function defaultCompare_closure(t0) {
- this.T = t0;
- },
- InternalStyle: function InternalStyle() {
- },
- ModifiableCssNode: function ModifiableCssNode() {
- },
- ModifiableCssParentNode: function ModifiableCssParentNode() {
- },
- ModifiableCssSupportsRule: function ModifiableCssSupportsRule(t0, t1, t2, t3) {
- var _ = this;
- _.condition = t0;
- _.span = t1;
- _.children = t2;
- _._children = t3;
- _._indexInParent = _._parent = null;
- _.isGroupEnd = false;
- },
- CssNode: function CssNode() {
- },
- CssParentNode: function CssParentNode() {
- },
- AstNode: function AstNode() {
- },
- _FakeAstNode: function _FakeAstNode(t0) {
- this._callback = t0;
- },
- ArgumentDeclaration_ArgumentDeclaration$parse: function(contents, url) {
- var t1 = S.SpanScanner$(contents, url);
- return new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), t1, C.StderrLogger_false).parseArgumentDeclaration$0();
- },
- ArgumentDeclaration: function ArgumentDeclaration(t0, t1, t2) {
- this.$arguments = t0;
- this.restArgument = t1;
- this.span = t2;
- },
- ArgumentDeclaration_verify_closure: function ArgumentDeclaration_verify_closure() {
- },
- ArgumentDeclaration_verify_closure0: function ArgumentDeclaration_verify_closure0() {
- },
- DynamicImport: function DynamicImport(t0, t1) {
- this.url = t0;
- this.span = t1;
- },
- SassNode: function SassNode() {
- },
- ForRule: function ForRule(t0, t1, t2, t3, t4, t5, t6) {
- var _ = this;
- _.variable = t0;
- _.from = t1;
- _.to = t2;
- _.isExclusive = t3;
- _.span = t4;
- _.children = t5;
- _.hasDeclarations = t6;
- },
- ImportRule: function ImportRule(t0, t1) {
- this.imports = t0;
- this.span = t1;
- },
- ReturnRule: function ReturnRule(t0, t1) {
- this.expression = t0;
- this.span = t1;
- },
- SilentComment: function SilentComment(t0, t1) {
- this.text = t0;
- this.span = t1;
- },
- SupportsRule: function SupportsRule(t0, t1, t2, t3) {
- var _ = this;
- _.condition = t0;
- _.span = t1;
- _.children = t2;
- _.hasDeclarations = t3;
- },
- AsyncCallable: function AsyncCallable() {
- },
- ExecutableOptions__separator: function(text) {
- var t1 = $.$get$ExecutableOptions__separatorBar(),
- t2 = C.JSString_methods.$mul(t1, 3) + " ",
- t3 = self.process.stdout.isTTY;
- t2 = t2 + ((t3 == null ? false : t3) ? "\x1b[1m" : "") + text;
- t3 = self.process.stdout.isTTY;
- return t2 + ((t3 == null ? false : t3) ? "\x1b[0m" : "") + " " + C.JSString_methods.$mul(t1, 35 - text.length);
- },
- ExecutableOptions__fail: function(message) {
- return H.throwExpression(B.UsageException$(message));
- },
- ExecutableOptions_ExecutableOptions$parse: function(args) {
- var options, error, t1, t2, exception;
- try {
- t1 = $.$get$ExecutableOptions__parser();
- t1.toString;
- t2 = H.setRuntimeTypeInfo(args.slice(0), [H.getTypeArgumentByIndex(args, 0)]);
- t1 = G.Parser$0(null, t1, t2, null, null).parse$0();
- if (t1.wasParsed$1("poll") && !H.boolTypeCast(t1.$index(0, "watch")))
- B.ExecutableOptions__fail("--poll may not be passed without --watch.");
- options = new B.ExecutableOptions(t1);
- if (H.boolTypeCast(options._options.$index(0, "help")))
- B.ExecutableOptions__fail("Compile Sass to CSS.");
- return options;
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (!!J.getInterceptor$(t1).$isFormatException) {
- error = t1;
- B.ExecutableOptions__fail(J.get$message$x(error));
- } else
- throw exception;
- }
- },
- UsageException$: function(message) {
- return new B.UsageException(message);
- },
- ExecutableOptions: function ExecutableOptions(t0) {
- var _ = this;
- _._options = t0;
- _._sourceDirectoriesToDestinations = _._sourcesToDestinations = _._interactive = null;
- },
- ExecutableOptions_closure: function ExecutableOptions_closure() {
- },
- ExecutableOptions_emitErrorCss_closure: function ExecutableOptions_emitErrorCss_closure() {
- },
- UsageException: function UsageException(t0) {
- this.message = t0;
- },
- AsyncImporter: function AsyncImporter() {
- },
- inImportRule: function(callback) {
- var t1,
- wasInImportRule = $._inImportRule;
- $._inImportRule = true;
- try {
- t1 = callback.call$0();
- return t1;
- } finally {
- $._inImportRule = wasInImportRule;
- }
- },
- resolveImportPath: function(path) {
- var t1,
- extension = X.ParsedPath_ParsedPath$parse(path, $.$get$context().style)._splitExtension$0()[1];
- if (extension === ".sass" || extension === ".scss" || extension === ".css") {
- t1 = $._inImportRule ? new B.resolveImportPath_closure(path, extension).call$0() : null;
- return t1 == null ? B._exactlyOne(B._tryPath(path)) : t1;
- }
- t1 = $._inImportRule ? new B.resolveImportPath_closure0(path).call$0() : null;
- if (t1 == null)
- t1 = B._exactlyOne(B._tryPathWithExtensions(path));
- return t1 == null ? B._tryPathAsDirectory(path) : t1;
- },
- _tryPathWithExtensions: function(path) {
- var result = B._tryPath(J.$add$ansx(path, ".sass"));
- C.JSArray_methods.addAll$1(result, B._tryPath(path + ".scss"));
- return result.length !== 0 ? result : B._tryPath(path + ".css");
- },
- _tryPath: function(path) {
- var t1 = $.$get$context(),
- partial = D.join(t1.dirname$1(path), "_" + H.S(X.ParsedPath_ParsedPath$parse(path, t1.style).get$basename()), null);
- t1 = H.setRuntimeTypeInfo([], [P.String]);
- if (B.fileExists(partial))
- t1.push(partial);
- if (B.fileExists(path))
- t1.push(path);
- return t1;
- },
- _tryPathAsDirectory: function(path) {
- var t1;
- if (!B.dirExists(path))
- return;
- t1 = $._inImportRule ? new B._tryPathAsDirectory_closure(path).call$0() : null;
- return t1 == null ? B._exactlyOne(B._tryPathWithExtensions(D.join(path, "index", null))) : t1;
- },
- _exactlyOne: function(paths) {
- var t1 = paths.length;
- if (t1 === 0)
- return;
- if (t1 === 1)
- return C.JSArray_methods.get$first(paths);
- throw H.wrapException("It's not clear which file to import. Found:\n" + C.JSArray_methods.map$1$1(paths, new B._exactlyOne_closure(), P.String).join$1(0, "\n"));
- },
- resolveImportPath_closure: function resolveImportPath_closure(t0, t1) {
- this.path = t0;
- this.extension = t1;
- },
- resolveImportPath_closure0: function resolveImportPath_closure0(t0) {
- this.path = t0;
- },
- _tryPathAsDirectory_closure: function _tryPathAsDirectory_closure(t0) {
- this.path = t0;
- },
- _exactlyOne_closure: function _exactlyOne_closure() {
- },
- readFile: function(path) {
- var t1, t2, t3, sourceFile, i,
- contents = H.stringTypeCast(B._readFile(path, "utf8"));
- if (!J.getInterceptor$asx(contents).contains$1(contents, "\ufffd"))
- return contents;
- t1 = $.$get$context().toUri$1(path);
- t2 = new H.CodeUnits(contents);
- t3 = H.setRuntimeTypeInfo([0], [P.int]);
- sourceFile = new Y.SourceFile(t1, t3, new Uint32Array(H._ensureNativeList(t2.toList$0(t2))));
- sourceFile.SourceFile$decoded$2$url(t2, t1);
- for (t1 = contents.length, i = 0; i < t1; ++i) {
- if (C.JSString_methods._codeUnitAt$1(contents, i) !== 65533)
- continue;
- throw H.wrapException(E.SassException$("Invalid UTF-8.", Y.FileLocation$_(sourceFile, i).pointSpan$0()));
- }
- return contents;
- },
- _readFile: function(path, encoding) {
- return B._systemErrorToFileSystemException(new B._readFile_closure(path, encoding));
- },
- writeFile: function(path, contents) {
- return B._systemErrorToFileSystemException(new B.writeFile_closure(path, contents));
- },
- deleteFile: function(path) {
- return B._systemErrorToFileSystemException(new B.deleteFile_closure(path));
- },
- readStdin: function() {
- return B.readStdin$body();
- },
- readStdin$body: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.String),
- $async$returnValue, sink, t1, t2, t3, completer;
- var $async$readStdin = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = {};
- t2 = P.String;
- t3 = new P._Future($.Zone__current, [t2]);
- completer = new P._AsyncCompleter(t3, [t2]);
- t1.contents = null;
- sink = new P.Utf8Decoder(false).startChunkedConversion$1(new P._StringCallbackSink(new B.readStdin_closure(t1, completer), new P.StringBuffer("")));
- J.on$2$x(self.process.stdin, "data", P.allowInterop(new B.readStdin_closure0(sink)));
- J.on$2$x(self.process.stdin, "end", P.allowInterop(new B.readStdin_closure1(sink)));
- J.on$2$x(self.process.stdin, "error", P.allowInterop(new B.readStdin_closure2(completer)));
- $async$returnValue = t3;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$readStdin, $async$completer);
- },
- fileExists: function(path) {
- return B._systemErrorToFileSystemException(new B.fileExists_closure(path));
- },
- dirExists: function(path) {
- return B._systemErrorToFileSystemException(new B.dirExists_closure(path));
- },
- ensureDir: function(path) {
- return B._systemErrorToFileSystemException(new B.ensureDir_closure(path));
- },
- listDir: function(path, recursive) {
- return B._systemErrorToFileSystemException(new B.listDir_closure(recursive, path));
- },
- modificationTime: function(path) {
- return B._systemErrorToFileSystemException(new B.modificationTime_closure(path));
- },
- _systemErrorToFileSystemException: function(callback) {
- var error, systemError, t1, exception, t2;
- try {
- t1 = callback.call$0();
- return t1;
- } catch (exception) {
- error = H.unwrapException(exception);
- systemError = H.interceptedTypeCast(error, "$is_SystemError");
- t1 = systemError;
- t2 = J.getInterceptor$x(t1);
- throw H.wrapException(new B.FileSystemException(J.substring$2$s(t2.get$message(t1), (H.S(t2.get$code(t1)) + ": ").length, J.get$length$asx(t2.get$message(t1)) - (", " + H.S(t2.get$syscall(t1)) + " '" + H.S(t2.get$path(t1)) + "'").length), J.get$path$x(systemError)));
- }
- },
- isWindows: function() {
- return J.$eq$(J.get$platform$x(self.process), "win32");
- },
- watchDir: function(path, poll) {
- var t2, t3, t4, t1 = {},
- watcher = J.watch$2$x(self.chokidar, path, {disableGlobbing: true, usePolling: poll});
- t1.controller = null;
- t2 = J.getInterceptor$x(watcher);
- t2.on$2(watcher, "add", P.allowInterop(new B.watchDir_closure(t1)));
- t2.on$2(watcher, "change", P.allowInterop(new B.watchDir_closure0(t1)));
- t2.on$2(watcher, "unlink", P.allowInterop(new B.watchDir_closure1(t1)));
- t2.on$2(watcher, "error", P.allowInterop(new B.watchDir_closure2(t1)));
- t3 = [P.Stream, E.WatchEvent];
- t4 = new P._Future($.Zone__current, [t3]);
- t2.on$2(watcher, "ready", P.allowInterop(new B.watchDir_closure3(t1, watcher, new P._AsyncCompleter(t4, [t3]))));
- return t4;
- },
- _FS: function _FS() {
- },
- _Stat: function _Stat() {
- },
- _Date: function _Date() {
- },
- _Stderr: function _Stderr() {
- },
- _Stdin: function _Stdin() {
- },
- _SystemError: function _SystemError() {
- },
- _Process: function _Process() {
- },
- FileSystemException: function FileSystemException(t0, t1) {
- this.message = t0;
- this.path = t1;
- },
- Stderr: function Stderr(t0) {
- this._stderr = t0;
- },
- _readFile_closure: function _readFile_closure(t0, t1) {
- this.path = t0;
- this.encoding = t1;
- },
- writeFile_closure: function writeFile_closure(t0, t1) {
- this.path = t0;
- this.contents = t1;
- },
- deleteFile_closure: function deleteFile_closure(t0) {
- this.path = t0;
- },
- readStdin_closure: function readStdin_closure(t0, t1) {
- this._box_0 = t0;
- this.completer = t1;
- },
- readStdin_closure0: function readStdin_closure0(t0) {
- this.sink = t0;
- },
- readStdin_closure1: function readStdin_closure1(t0) {
- this.sink = t0;
- },
- readStdin_closure2: function readStdin_closure2(t0) {
- this.completer = t0;
- },
- fileExists_closure: function fileExists_closure(t0) {
- this.path = t0;
- },
- dirExists_closure: function dirExists_closure(t0) {
- this.path = t0;
- },
- ensureDir_closure: function ensureDir_closure(t0) {
- this.path = t0;
- },
- listDir_closure: function listDir_closure(t0, t1) {
- this.recursive = t0;
- this.path = t1;
- },
- listDir__closure: function listDir__closure(t0) {
- this.path = t0;
- },
- listDir__closure0: function listDir__closure0() {
- },
- listDir_closure_list: function listDir_closure_list() {
- },
- listDir__list_closure: function listDir__list_closure(t0, t1) {
- this.parent = t0;
- this.list = t1;
- },
- modificationTime_closure: function modificationTime_closure(t0) {
- this.path = t0;
- },
- watchDir_closure: function watchDir_closure(t0) {
- this._box_0 = t0;
- },
- watchDir_closure0: function watchDir_closure0(t0) {
- this._box_0 = t0;
- },
- watchDir_closure1: function watchDir_closure1(t0) {
- this._box_0 = t0;
- },
- watchDir_closure2: function watchDir_closure2(t0) {
- this._box_0 = t0;
- },
- watchDir_closure3: function watchDir_closure3(t0, t1, t2) {
- this._box_0 = t0;
- this.watcher = t1;
- this.completer = t2;
- },
- watchDir__closure: function watchDir__closure(t0) {
- this.watcher = t0;
- },
- ShadowedModuleView_ifNecessary: function(inner, functions, mixins, variables, $T) {
- return B.ShadowedModuleView__needsBlacklist(inner.get$variables(), variables) || B.ShadowedModuleView__needsBlacklist(inner.get$functions(inner), functions) || B.ShadowedModuleView__needsBlacklist(inner.get$mixins(), mixins) ? new B.ShadowedModuleView(inner, B.ShadowedModuleView__shadowedMap(inner.get$variables(), variables, F.Value), B.ShadowedModuleView__shadowedMap(inner.get$variableNodes(), variables, B.AstNode), B.ShadowedModuleView__shadowedMap(inner.get$functions(inner), functions, $T), B.ShadowedModuleView__shadowedMap(inner.get$mixins(), mixins, $T), [$T]) : null;
- },
- ShadowedModuleView__shadowedMap: function(map, blocklist, $V) {
- if (map == null || !B.ShadowedModuleView__needsBlacklist(map, blocklist))
- return map;
- return K.LimitedMapView$blocklist(map, blocklist, P.String, $V);
- },
- ShadowedModuleView__needsBlacklist: function(map, blocklist) {
- var t1 = map.get$isNotEmpty(map) && blocklist.any$1(0, map.get$containsKey());
- return t1;
- },
- ShadowedModuleView: function ShadowedModuleView(t0, t1, t2, t3, t4, t5) {
- var _ = this;
- _._shadowed_view$_inner = t0;
- _.variables = t1;
- _.variableNodes = t2;
- _.functions = t3;
- _.mixins = t4;
- _.$ti = t5;
- },
- main0: function() {
- J.set$run_$x(self.exports, P.allowInterop(new B.main_closure()));
- J.set$render$x(self.exports, P.allowInterop(B.node___render$closure()));
- J.set$renderSync$x(self.exports, P.allowInterop(B.node___renderSync$closure()));
- J.set$info$x(self.exports, "dart-sass\t1.25.0\t(Sass Compiler)\t[Dart]\ndart2js\t2.7.0\t(Dart Compiler)\t[Dart]");
- J.set$types$x(self.exports, {Boolean: $.$get$booleanConstructor(), Color: $.$get$colorConstructor(), List: $.$get$listConstructor(), Map: $.$get$mapConstructor(), Null: $.$get$nullConstructor(), Number: $.$get$numberConstructor(), String: $.$get$stringConstructor(), Error: self.Error});
- },
- _render: function(options, callback) {
- var t1 = J.getInterceptor$x(options);
- if (t1.get$fiber(options) != null)
- J.run$0$x(t1.get$fiber(options).call$1(P.allowInterop(new B._render_closure(callback, options))));
- else
- B._renderAsync(options).then$1$2$onError(new B._render_closure0(callback), new B._render_closure1(callback), P.Null);
- },
- _renderAsync: function(options) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(U.RenderResult),
- $async$returnValue, t2, t3, t4, t5, t6, t7, t8, t9, result, start, t1, file;
- var $async$_renderAsync = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- start = new P.DateTime(Date.now(), false);
- t1 = J.getInterceptor$x(options);
- file = t1.get$file(options) == null ? null : D.absolute(t1.get$file(options));
- $async$goto = t1.get$data(options) != null ? 3 : 5;
- break;
- case 3:
- // then
- t2 = t1.get$data(options);
- t3 = B._parseImporter(options, start);
- t4 = B._parseFunctions(options, true);
- t5 = t1.get$indentedSyntax(options);
- t5 = !J.$eq$(t5, false) && t5 != null ? C.Syntax_Sass : null;
- t6 = B._parseOutputStyle(t1.get$outputStyle(options));
- t7 = J.$eq$(t1.get$indentType(options), "tab");
- t8 = B._parseIndentWidth(t1.get$indentWidth(options));
- t9 = B._parseLineFeed(t1.get$linefeed(options));
- t1 = t1.get$file(options) == null ? "stdin" : J.toString$0$($.$get$context().toUri$1(file));
- $async$goto = 6;
- return P._asyncAwait(X.compileStringAsync(t2, true, t4, null, null, t8, t9, null, t3, B._enableSourceMaps(options), t6, t5, t1, !t7), $async$_renderAsync);
- case 6:
- // returning from await.
- result = $async$result;
- // goto join
- $async$goto = 4;
- break;
- case 5:
- // else
- $async$goto = t1.get$file(options) != null ? 7 : 9;
- break;
- case 7:
- // then
- t2 = B._parseImporter(options, start);
- t3 = B._parseFunctions(options, true);
- t4 = t1.get$indentedSyntax(options);
- t4 = !J.$eq$(t4, false) && t4 != null ? C.Syntax_Sass : null;
- t5 = B._parseOutputStyle(t1.get$outputStyle(options));
- t6 = J.$eq$(t1.get$indentType(options), "tab");
- $async$goto = 10;
- return P._asyncAwait(X.compileAsync(file, true, t3, null, B._parseIndentWidth(t1.get$indentWidth(options)), B._parseLineFeed(t1.get$linefeed(options)), null, t2, B._enableSourceMaps(options), t5, t4, !t6), $async$_renderAsync);
- case 10:
- // returning from await.
- result = $async$result;
- // goto join
- $async$goto = 8;
- break;
- case 9:
- // else
- throw H.wrapException(P.ArgumentError$("Either options.data or options.file must be set."));
- case 8:
- // join
- case 4:
- // join
- $async$returnValue = B._newRenderResult(options, result, start);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_renderAsync, $async$completer);
- },
- _renderSync: function(options) {
- var start, file, result, error, error0, t1, t2, t3, t4, t5, t6, t7, t8, t9, exception, _null = null;
- try {
- start = new P.DateTime(Date.now(), false);
- t1 = J.getInterceptor$x(options);
- file = t1.get$file(options) == null ? _null : D.absolute(t1.get$file(options));
- result = null;
- if (t1.get$data(options) != null) {
- t2 = t1.get$data(options);
- t3 = B._parseImporter(options, start);
- t4 = B._parseFunctions(options, false);
- t5 = t1.get$indentedSyntax(options);
- t5 = !J.$eq$(t5, false) && t5 != null ? C.Syntax_Sass : _null;
- t6 = B._parseOutputStyle(t1.get$outputStyle(options));
- t7 = J.$eq$(t1.get$indentType(options), "tab");
- t8 = B._parseIndentWidth(t1.get$indentWidth(options));
- t9 = B._parseLineFeed(t1.get$linefeed(options));
- t1 = t1.get$file(options) == null ? "stdin" : J.toString$0$($.$get$context().toUri$1(file));
- result = U.compileString(t2, true, new H.CastList(t4, [H.getTypeArgumentByIndex(t4, 0), D.Callable]), _null, _null, t8, t9, _null, t3, B._enableSourceMaps(options), t6, t5, t1, !t7);
- } else if (t1.get$file(options) != null) {
- t2 = B._parseImporter(options, start);
- t3 = B._parseFunctions(options, false);
- t4 = t1.get$indentedSyntax(options);
- t4 = !J.$eq$(t4, false) && t4 != null ? C.Syntax_Sass : _null;
- t5 = B._parseOutputStyle(t1.get$outputStyle(options));
- t6 = J.$eq$(t1.get$indentType(options), "tab");
- result = U.compile(file, true, new H.CastList(t3, [H.getTypeArgumentByIndex(t3, 0), D.Callable]), _null, B._parseIndentWidth(t1.get$indentWidth(options)), B._parseLineFeed(t1.get$linefeed(options)), _null, t2, B._enableSourceMaps(options), t5, t4, !t6);
- } else {
- t1 = P.ArgumentError$("Either options.data or options.file must be set.");
- throw H.wrapException(t1);
- }
- t1 = B._newRenderResult(options, result, start);
- return t1;
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (t1 instanceof E.SassException) {
- error = t1;
- t1 = B._wrapException(error);
- $.$get$_jsThrow().call$1(t1);
- } else {
- error0 = t1;
- t1 = B._newRenderError(J.toString$0$(error0), _null, _null, _null, 3);
- $.$get$_jsThrow().call$1(t1);
- }
- }
- throw H.wrapException("unreachable");
- },
- _wrapException: function(exception) {
- var t3, t4,
- t1 = C.JSString_methods.replaceFirst$2(exception.toString$0(0), "Error: ", ""),
- t2 = G.SourceSpanException.prototype.get$span.call(exception);
- t2 = Y.FileLocation$_(t2.file, t2._start);
- t2 = t2.file.getLine$1(t2.offset);
- t3 = G.SourceSpanException.prototype.get$span.call(exception);
- t3 = Y.FileLocation$_(t3.file, t3._start);
- t3 = t3.file.getColumn$1(t3.offset);
- if (G.SourceSpanException.prototype.get$span.call(exception).file.url == null)
- t4 = "stdin";
- else {
- t4 = G.SourceSpanException.prototype.get$span.call(exception).file;
- t4 = $.$get$context().style.pathFromUri$1(M._parseUri(t4.url));
- }
- return B._newRenderError(t1, t3 + 1, t4, t2 + 1, 1);
- },
- _parseFunctions: function(options, asynch) {
- var result,
- t1 = J.getInterceptor$x(options);
- if (t1.get$functions(options) == null)
- return C.List_empty11;
- result = H.setRuntimeTypeInfo([], [B.AsyncCallable]);
- B.jsForEach(t1.get$functions(options), new B._parseFunctions_closure(options, result, asynch));
- return result;
- },
- _parseImporter: function(options, start) {
- var importers, t2, t3, includePaths, t4, t5, t6, t7, _i, t8, t9, t10, context,
- t1 = J.getInterceptor$x(options);
- if (t1.get$importer(options) == null)
- importers = H.setRuntimeTypeInfo([], [F.JSFunction]);
- else {
- t2 = F.JSFunction;
- importers = !!J.getInterceptor$(t1.get$importer(options)).$isList ? J.cast$1$0$ax(H.subtypeCast(t1.get$importer(options), "$isList", [P.Object], "$asList"), t2) : H.setRuntimeTypeInfo([H.interceptedTypeCast(t1.get$importer(options), "$isJSFunction")], [t2]);
- }
- t2 = t1.get$includePaths(options);
- if (t2 == null)
- t2 = [];
- t3 = P.String;
- includePaths = P.List_List$from(t2, true, t3);
- t2 = J.getInterceptor$asx(importers);
- if (t2.get$isNotEmpty(importers)) {
- t4 = t1.get$file(options);
- t5 = t1.get$data(options);
- t6 = H.setRuntimeTypeInfo([], [t3]);
- t6.push(D.current());
- for (t7 = includePaths.length, _i = 0; _i < includePaths.length; includePaths.length === t7 || (0, H.throwConcurrentModificationError)(includePaths), ++_i)
- t6.push(includePaths[_i]);
- t6 = C.JSArray_methods.join$1(t6, J.$eq$(J.get$platform$x(self.process), "win32") ? ";" : ":");
- t7 = J.$eq$(t1.get$indentType(options), "tab") ? 1 : 0;
- t8 = B._parseIndentWidth(t1.get$indentWidth(options));
- if (t8 == null)
- t8 = 2;
- t9 = B._parseLineFeed(t1.get$linefeed(options));
- t10 = t1.get$file(options);
- if (t10 == null)
- t10 = "data";
- context = {options: {file: t4, data: t5, includePaths: t6, precision: 10, style: 1, indentType: t7, indentWidth: t8, linefeed: t9.text, result: {stats: {entry: t10, start: start._value}}}};
- J.set$context$x(J.get$options$x(context), context);
- } else
- context = null;
- if (t1.get$fiber(options) != null)
- importers = t2.map$1$1(importers, new B._parseImporter_closure(options), F.JSFunction).toList$0(0);
- return new F.NodeImporter(context, P.List_List$unmodifiable(F.NodeImporter__addSassPath(includePaths), t3), P.List_List$unmodifiable(J.cast$1$0$ax(importers, null), F.JSFunction));
- },
- _parseOutputStyle: function(style) {
- if (style == null || style === "expanded")
- return C.OutputStyle_expanded;
- if (style === "compressed")
- return C.OutputStyle_compressed;
- throw H.wrapException(P.ArgumentError$('Unsupported output style "' + H.S(style) + '".'));
- },
- _parseIndentWidth: function(width) {
- if (width == null)
- return;
- return typeof width === "number" && Math.floor(width) === width ? width : P.int_parse(J.toString$0$(width), null, null);
- },
- _parseLineFeed: function(str) {
- switch (str) {
- case "cr":
- return C.LineFeed_kMT;
- case "crlf":
- return C.LineFeed_Mss;
- case "lfcr":
- return C.LineFeed_a1Y;
- default:
- return C.LineFeed_D6m;
- }
- },
- _newRenderResult: function(options, result, start) {
- var t3, t4, sourceMapPath, sourceMapDir, sourceMapDirUrl, i, source, t5, t6, sourceMapBytes, buffer, indices, url, _null = null,
- t1 = Date.now(),
- t2 = result._serialize,
- css = t2.css;
- if (B._enableSourceMaps(options)) {
- t3 = J.getInterceptor$x(options);
- t4 = t3.get$sourceMap(options);
- sourceMapPath = typeof t4 === "string" ? H.stringTypeCast(t3.get$sourceMap(options)) : J.$add$ansx(t3.get$outFile(options), ".map");
- t4 = $.$get$context();
- sourceMapDir = t4.dirname$1(sourceMapPath);
- t2 = t2.sourceMap;
- t2.sourceRoot = t3.get$sourceMapRoot(options);
- if (t3.get$outFile(options) == null)
- if (t3.get$file(options) == null)
- t2.targetUrl = "stdin.css";
- else
- t2.targetUrl = J.toString$0$(t4.toUri$1(t4.withoutExtension$1(t3.get$file(options)) + ".css"));
- else
- t2.targetUrl = J.toString$0$(t4.toUri$1(t4.relative$2$from(t3.get$outFile(options), sourceMapDir)));
- sourceMapDirUrl = J.toString$0$(t4.toUri$1(sourceMapDir));
- for (t4 = t2.urls, i = 0; i < t4.length; ++i) {
- source = t4[i];
- if (source === "stdin")
- continue;
- t5 = $.$get$url();
- t6 = t5.style;
- if (t6.rootLength$1(source) <= 0 || t6.isRootRelative$1(source))
- continue;
- t4[i] = t5.relative$2$from(source, sourceMapDirUrl);
- }
- t4 = t3.get$sourceMapContents(options);
- t2 = C.C_JsonCodec.encode$2$toEncodable(t2.toJson$1$includeSourceContents(!J.$eq$(t4, false) && t4 != null), _null);
- sourceMapBytes = self.Buffer.from(t2, "utf8");
- t2 = t3.get$omitSourceMapUrl(options);
- if (!(!J.$eq$(t2, false) && t2 != null)) {
- t2 = t3.get$sourceMapEmbed(options);
- if (!J.$eq$(t2, false) && t2 != null) {
- buffer = new P.StringBuffer("");
- indices = H.setRuntimeTypeInfo([-1], [P.int]);
- P.UriData__writeUri("application/json", _null, _null, buffer, indices);
- indices.push(buffer._contents.length);
- t2 = buffer._contents += ";base64,";
- indices.push(t2.length - 1);
- C.C_Base64Encoder.startChunkedConversion$1(new P._StringSinkConversionSink(buffer)).addSlice$4(sourceMapBytes, 0, sourceMapBytes.length, true);
- t2 = buffer._contents;
- url = new P.UriData(t2.charCodeAt(0) == 0 ? t2 : t2, indices, _null).get$uri();
- } else {
- if (t3.get$outFile(options) == null)
- t2 = sourceMapPath;
- else {
- t2 = t3.get$outFile(options);
- t3 = $.$get$context();
- t2 = t3.relative$2$from(sourceMapPath, t3.dirname$1(t2));
- }
- url = $.$get$context().toUri$1(t2);
- }
- css += "\n\n/*# sourceMappingURL=" + H.S(url) + " */";
- }
- } else
- sourceMapBytes = _null;
- t2 = self.Buffer.from(css, "utf8");
- t3 = J.get$file$x(options);
- if (t3 == null)
- t3 = "data";
- t4 = start._value;
- t1 = new P.DateTime(t1, false)._value;
- return {css: t2, map: sourceMapBytes, stats: {entry: t3, start: t4, end: t1, duration: C.JSInt_methods._tdivFast$1(P.Duration$(t1 - t4)._duration, 1000), includedFiles: result._evaluate.includedFiles.toList$0(0)}};
- },
- _enableSourceMaps: function(options) {
- var t1 = J.getInterceptor$x(options),
- t2 = t1.get$sourceMap(options);
- if (typeof t2 !== "string") {
- t2 = t1.get$sourceMap(options);
- t1 = !J.$eq$(t2, false) && t2 != null && t1.get$outFile(options) != null;
- } else
- t1 = true;
- return t1;
- },
- _newRenderError: function(message, column, file, line, $status) {
- var error = new self.Error(message);
- error.formatted = "Error: " + H.S(message);
- if (line != null)
- error.line = line;
- if (column != null)
- error.column = column;
- if (file != null)
- error.file = file;
- error.status = $status;
- return error;
- },
- main_closure: function main_closure() {
- },
- _render_closure: function _render_closure(t0, t1) {
- this.callback = t0;
- this.options = t1;
- },
- _render_closure0: function _render_closure0(t0) {
- this.callback = t0;
- },
- _render_closure1: function _render_closure1(t0) {
- this.callback = t0;
- },
- _parseFunctions_closure: function _parseFunctions_closure(t0, t1, t2) {
- this.options = t0;
- this.result = t1;
- this.asynch = t2;
- },
- _parseFunctions__closure: function _parseFunctions__closure(t0, t1) {
- this.options = t0;
- this.callback = t1;
- },
- _parseFunctions___closure0: function _parseFunctions___closure0(t0) {
- this.fiber = t0;
- },
- _parseFunctions____closure: function _parseFunctions____closure(t0, t1) {
- this.fiber = t0;
- this.result = t1;
- },
- _parseFunctions__closure0: function _parseFunctions__closure0(t0) {
- this.callback = t0;
- },
- _parseFunctions__closure1: function _parseFunctions__closure1(t0) {
- this.callback = t0;
- },
- _parseFunctions___closure: function _parseFunctions___closure(t0) {
- this.completer = t0;
- },
- _parseImporter_closure: function _parseImporter_closure(t0) {
- this.options = t0;
- },
- _parseImporter__closure: function _parseImporter__closure(t0, t1) {
- this.options = t0;
- this.importer = t1;
- },
- _parseImporter___closure: function _parseImporter___closure(t0) {
- this.fiber = t0;
- },
- _parseImporter____closure: function _parseImporter____closure(t0, t1) {
- this.fiber = t0;
- this.result = t1;
- },
- forwardToString: function(klass) {
- klass.prototype.toString = P.allowInteropCaptureThis(new B.forwardToString_closure());
- },
- jsForEach: function(object, callback) {
- var t1, t2;
- for (t1 = J.get$iterator$ax(self.Object.keys(object)); t1.moveNext$0();) {
- t2 = t1.get$current(t1);
- callback.call$2(t2, object[t2]);
- }
- },
- createClass: function($name, $constructor, methods) {
- var klass = P.allowInteropCaptureThis($constructor),
- t1 = {value: $name};
- self.Object.defineProperty(klass, "name", t1);
- methods.forEach$1(0, new B.createClass_closure(klass.prototype));
- return klass;
- },
- injectSuperclass: function(object, $constructor) {
- var t1,
- $prototype = self.Object.getPrototypeOf(object),
- $parent = self.Object.getPrototypeOf($prototype);
- if ($parent != null) {
- t1 = $constructor.prototype;
- self.Object.setPrototypeOf(t1, $parent);
- }
- t1 = $constructor.prototype;
- t1 = self.Object.create(t1);
- self.Object.setPrototypeOf($prototype, t1);
- },
- forwardToString_closure: function forwardToString_closure() {
- },
- createClass_closure: function createClass_closure(t0) {
- this.$prototype = t0;
- },
- _PropertyDescriptor: function _PropertyDescriptor() {
- },
- toSentence: function(iter, conjunction) {
- if (iter.get$length(iter) === 1)
- return J.toString$0$(iter.get$first(iter));
- return iter.take$1(0, iter.get$length(iter) - 1).join$1(0, ", ") + (" " + conjunction + " " + H.S(iter.get$last(iter)));
- },
- indent: function(string, indentation) {
- var t1 = P.String,
- t2 = H.setRuntimeTypeInfo(string.split("\n"), [t1]);
- return new H.MappedListIterable(t2, new B.indent_closure(indentation), [H.getTypeArgumentByIndex(t2, 0), t1]).join$1(0, "\n");
- },
- pluralize: function($name, number, plural) {
- if (number === 1)
- return $name;
- if (plural != null)
- return plural;
- return $name + "s";
- },
- trimAscii: function(string, excludeEscape) {
- var start = B._firstNonWhitespace(string);
- return start == null ? "" : J.substring$2$s(string, start, B._lastNonWhitespace(string, true) + 1);
- },
- trimAsciiRight: function(string, excludeEscape) {
- var end = B._lastNonWhitespace(string, excludeEscape);
- return end == null ? "" : J.substring$2$s(string, 0, end + 1);
- },
- _firstNonWhitespace: function(string) {
- var t1, i, t2;
- for (t1 = string.length, i = 0; i < t1; ++i) {
- t2 = C.JSString_methods._codeUnitAt$1(string, i);
- if (!(t2 === 32 || t2 === 9 || t2 === 10 || t2 === 13 || t2 === 12))
- return i;
- }
- return;
- },
- _lastNonWhitespace: function(string, excludeEscape) {
- var t1, i, t2, codeUnit;
- for (t1 = string.length, i = t1 - 1, t2 = J.getInterceptor$s(string); i >= 0; --i) {
- codeUnit = t2.codeUnitAt$1(string, i);
- if (!(codeUnit === 32 || codeUnit === 9 || codeUnit === 10 || codeUnit === 13 || codeUnit === 12))
- if (excludeEscape && i !== 0 && i !== t1 && codeUnit === 92)
- return i + 1;
- else
- return i;
- }
- return;
- },
- isPublic: function(member) {
- var start = J._codeUnitAt$1$s(member, 0);
- return start !== 45 && start !== 95;
- },
- flattenVertically: function(iterable, $T) {
- var result,
- queues = new H.MappedListIterable(iterable, new B.flattenVertically_closure($T), [H.getRuntimeTypeArgument(iterable, "ListIterable", 0), [Q.QueueList, $T]]).toList$0(0);
- if (queues.length === 1)
- return C.JSArray_methods.get$first(queues);
- result = H.setRuntimeTypeInfo([], [$T]);
- for (; queues.length !== 0;) {
- if (!!queues.fixed$length)
- H.throwExpression(P.UnsupportedError$("removeWhere"));
- C.JSArray_methods._removeWhere$2(queues, new B.flattenVertically_closure0(result), true);
- }
- return result;
- },
- firstOrNull: function(iterable) {
- var iterator = J.get$iterator$ax(iterable);
- return iterator.moveNext$0() ? iterator.get$current(iterator) : null;
- },
- codepointIndexToCodeUnitIndex: function(string, codepointIndex) {
- var t1, codeUnitIndex, i, codeUnitIndex0, t2;
- for (t1 = J.getInterceptor$s(string), codeUnitIndex = 0, i = 0; i < codepointIndex; ++i) {
- codeUnitIndex0 = codeUnitIndex + 1;
- t2 = t1._codeUnitAt$1(string, codeUnitIndex);
- codeUnitIndex = t2 >= 55296 && t2 <= 56319 ? codeUnitIndex0 + 1 : codeUnitIndex0;
- }
- return codeUnitIndex;
- },
- codeUnitIndexToCodepointIndex: function(string, codeUnitIndex) {
- var t1, codepointIndex, i, t2;
- for (t1 = J.getInterceptor$s(string), codepointIndex = 0, i = 0; i < codeUnitIndex; i = (t2 >= 55296 && t2 <= 56319 ? i + 1 : i) + 1) {
- ++codepointIndex;
- t2 = t1._codeUnitAt$1(string, i);
- }
- return codepointIndex;
- },
- frameForSpan: function(span, member, url) {
- var t2, t3, t4,
- t1 = url == null ? span.file.url : url;
- if (t1 == null)
- t1 = $.$get$_noSourceUrl();
- t2 = span.file;
- t3 = span._start;
- t4 = Y.FileLocation$_(t2, t3);
- t4 = t4.file.getLine$1(t4.offset);
- t3 = Y.FileLocation$_(t2, t3);
- return new A.Frame(t1, t4 + 1, t3.file.getColumn$1(t3.offset) + 1, member);
- },
- spanForList: function(nodes) {
- var left, right;
- if (nodes.length === 0)
- return;
- left = C.JSArray_methods.get$first(nodes).get$span();
- if (left == null)
- return;
- right = C.JSArray_methods.get$last(nodes).get$span();
- if (right == null)
- return;
- return left.expand$1(0, right);
- },
- declarationName: function(span) {
- var text = P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(span.file._decodedChars, span._start, span._file$_end), 0, null);
- return B.trimAsciiRight(C.JSString_methods.substring$2(text, 0, C.JSString_methods.indexOf$1(text, ":")), false);
- },
- unvendor: function($name) {
- var i,
- t1 = $name.length;
- if (t1 < 2)
- return $name;
- if (J.getInterceptor$s($name)._codeUnitAt$1($name, 0) !== 45)
- return $name;
- if (C.JSString_methods._codeUnitAt$1($name, 1) === 45)
- return $name;
- for (i = 2; i < t1; ++i)
- if (C.JSString_methods._codeUnitAt$1($name, i) === 45)
- return C.JSString_methods.substring$1($name, i + 1);
- return $name;
- },
- equalsIgnoreCase: function(string1, string2) {
- var t1, i;
- if (string1 == string2)
- return true;
- if (string1 == null || string2 == null)
- return false;
- t1 = string1.length;
- if (t1 !== string2.length)
- return false;
- for (i = 0; i < t1; ++i)
- if (!T.characterEqualsIgnoreCase(C.JSString_methods._codeUnitAt$1(string1, i), C.JSString_methods._codeUnitAt$1(string2, i)))
- return false;
- return true;
- },
- startsWithIgnoreCase: function(string, prefix) {
- var t2, i,
- t1 = prefix.length;
- if (string.length < t1)
- return false;
- for (t2 = J.getInterceptor$s(string), i = 0; i < t1; ++i)
- if (!T.characterEqualsIgnoreCase(t2._codeUnitAt$1(string, i), C.JSString_methods._codeUnitAt$1(prefix, i)))
- return false;
- return true;
- },
- mapInPlace: function(list, $function) {
- var i;
- for (i = 0; i < list.length; ++i)
- list[i] = $function.call$1(list[i]);
- },
- longestCommonSubsequence: function(list1, list2, select, $T) {
- var t1, lengths, selections, t2, i, i0, j, selection, t3, j0, t4, t5;
- if (select == null)
- select = new B.longestCommonSubsequence_closure($T);
- t1 = J.getInterceptor$asx(list1);
- lengths = P.List_List$generate(t1.get$length(list1) + 1, new B.longestCommonSubsequence_closure0(list2), false, [P.List, P.int]);
- selections = P.List_List$generate(t1.get$length(list1), new B.longestCommonSubsequence_closure1(list2, $T), false, [P.List, $T]);
- for (t2 = J.getInterceptor$asx(list2), i = 0; i < t1.get$length(list1); i = i0)
- for (i0 = i + 1, j = 0; j < t2.get$length(list2); j = j0) {
- selection = select.call$2(t1.$index(list1, i), t2.$index(list2, j));
- J.$indexSet$ax(selections[i], j, selection);
- t3 = lengths[i0];
- j0 = j + 1;
- if (selection == null) {
- t4 = J.$index$asx(t3, j);
- t5 = J.$index$asx(lengths[i], j0);
- t5 = Math.max(H.checkNum(t4), H.checkNum(t5));
- t4 = t5;
- } else
- t4 = J.$index$asx(lengths[i], j) + 1;
- J.$indexSet$ax(t3, j0, t4);
- }
- return new B.longestCommonSubsequence_backtrack(selections, lengths, $T).call$2(t1.get$length(list1) - 1, t2.get$length(list2) - 1);
- },
- removeFirstWhere: function(list, test, orElse) {
- var toRemove, element,
- t1 = list.length,
- _i = 0;
- while (true) {
- if (!(_i < list.length)) {
- toRemove = null;
- break;
- }
- c$0: {
- element = list[_i];
- if (!test.call$1(element))
- break c$0;
- toRemove = element;
- break;
- }
- list.length === t1 || (0, H.throwConcurrentModificationError)(list);
- ++_i;
- }
- if (toRemove == null)
- return orElse.call$0();
- else {
- C.JSArray_methods.remove$1(list, toRemove);
- return toRemove;
- }
- },
- mapAddAll2: function(destination, source) {
- source.forEach$1(0, new B.mapAddAll2_closure(destination));
- },
- setAll: function(map, keys, value) {
- var t1;
- for (t1 = J.get$iterator$ax(keys); t1.moveNext$0();)
- map.$indexSet(0, t1.get$current(t1), value);
- },
- rotateSlice: function(list, start, end) {
- var i, next,
- element = list.$index(0, end - 1);
- for (i = start; i < end; ++i, element = next) {
- next = list.$index(0, i);
- list.$indexSet(0, i, element);
- }
- },
- mapAsync: function(iterable, callback, $E, $F) {
- return B.mapAsync$body(iterable, callback, $E, $F, [P.Iterable, $F]);
- },
- mapAsync$body: function(iterable, callback, $E, $F, $async$type) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter($async$type),
- $async$returnValue, t2, _i, t1, $async$temp1;
- var $async$mapAsync = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = H.setRuntimeTypeInfo([], [$F]);
- t2 = iterable.length, _i = 0;
- case 3:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 5;
- break;
- }
- $async$temp1 = t1;
- $async$goto = 6;
- return P._asyncAwait(callback.call$1(iterable[_i]), $async$mapAsync);
- case 6:
- // returning from await.
- $async$temp1.push($async$result);
- case 4:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 3;
- break;
- case 5:
- // after for
- $async$returnValue = t1;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$mapAsync, $async$completer);
- },
- putIfAbsentAsync: function(map, key, ifAbsent, $K, $V) {
- return B.putIfAbsentAsync$body(map, key, ifAbsent, $K, $V, $V);
- },
- putIfAbsentAsync$body: function(map, key, ifAbsent, $K, $V, $async$type) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter($async$type),
- $async$returnValue, value;
- var $async$putIfAbsentAsync = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if (map.containsKey$1(key)) {
- $async$returnValue = map.$index(0, key);
- // goto return
- $async$goto = 1;
- break;
- }
- $async$goto = 3;
- return P._asyncAwait(ifAbsent.call$0(), $async$putIfAbsentAsync);
- case 3:
- // returning from await.
- value = $async$result;
- map.$indexSet(0, key, value);
- $async$returnValue = value;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$putIfAbsentAsync, $async$completer);
- },
- mapMapAsync: function(map, value, K1, V1, K2, V2) {
- return B.mapMapAsync$body(map, value, K1, V1, K2, V2, [P.Map, K2, V2]);
- },
- mapMapAsync$body: function(map, value, K1, V1, K2, V2, $async$type) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter($async$type),
- $async$returnValue, t1, mapKey, mapValue, key, result, $async$temp1, $async$temp2;
- var $async$mapMapAsync = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- key = new B.mapMapAsync_closure(K2, K1, V1);
- result = P.LinkedHashMap_LinkedHashMap$_empty(K2, V2);
- t1 = J.get$iterator$ax(map.get$keys());
- case 3:
- // for condition
- if (!t1.moveNext$0()) {
- // goto after for
- $async$goto = 4;
- break;
- }
- mapKey = t1.get$current(t1);
- mapValue = map.$index(0, mapKey);
- $async$temp1 = result;
- $async$goto = 5;
- return P._asyncAwait(key.call$2(mapKey, mapValue), $async$mapMapAsync);
- case 5:
- // returning from await.
- $async$temp2 = $async$result;
- $async$goto = 6;
- return P._asyncAwait(value.call$2(mapKey, mapValue), $async$mapMapAsync);
- case 6:
- // returning from await.
- $async$temp1.$indexSet(0, $async$temp2, $async$result);
- // goto for condition
- $async$goto = 3;
- break;
- case 4:
- // after for
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$mapMapAsync, $async$completer);
- },
- copyMapOfMap: function(map, K1, K2, $V) {
- var t1 = [P.Map, K2, $V];
- return Y.mapMap(map, null, new B.copyMapOfMap_closure(K2, $V), K1, t1, K1, t1);
- },
- copyMapOfList: function(map, $K, $E) {
- var t1 = [P.List, $E];
- return Y.mapMap(map, null, new B.copyMapOfList_closure(), $K, t1, $K, t1);
- },
- SpanExtensions_trim: function(_this) {
- var t3, end, end0,
- t1 = _this.file,
- t2 = _this._start,
- text = P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(t1._decodedChars, t2, _this._file$_end), 0, null),
- start = 0;
- while (true) {
- t3 = C.JSString_methods._codeUnitAt$1(text, start);
- if (!(t3 === 32 || t3 === 9 || t3 === 10 || t3 === 13 || t3 === 12))
- break;
- ++start;
- }
- end = text.length - 1;
- end0 = end;
- while (true) {
- t3 = C.JSString_methods.codeUnitAt$1(text, end0);
- if (!(t3 === 32 || t3 === 9 || t3 === 10 || t3 === 13 || t3 === 12))
- break;
- --end0;
- }
- return start === 0 && end0 === end ? _this : t1.span$2(Y.FileLocation$_(t1, t2).offset + start, Y.FileLocation$_(t1, t2).offset + end0 + 1);
- },
- indent_closure: function indent_closure(t0) {
- this.indentation = t0;
- },
- flattenVertically_closure: function flattenVertically_closure(t0) {
- this.T = t0;
- },
- flattenVertically_closure0: function flattenVertically_closure0(t0) {
- this.result = t0;
- },
- longestCommonSubsequence_closure: function longestCommonSubsequence_closure(t0) {
- this.T = t0;
- },
- longestCommonSubsequence_closure0: function longestCommonSubsequence_closure0(t0) {
- this.list2 = t0;
- },
- longestCommonSubsequence_closure1: function longestCommonSubsequence_closure1(t0, t1) {
- this.list2 = t0;
- this.T = t1;
- },
- longestCommonSubsequence_backtrack: function longestCommonSubsequence_backtrack(t0, t1, t2) {
- this.selections = t0;
- this.lengths = t1;
- this.T = t2;
- },
- mapAddAll2_closure: function mapAddAll2_closure(t0) {
- this.destination = t0;
- },
- mapMapAsync_closure: function mapMapAsync_closure(t0, t1, t2) {
- this.K2 = t0;
- this.K1 = t1;
- this.V1 = t2;
- },
- copyMapOfMap_closure: function copyMapOfMap_closure(t0, t1) {
- this.K2 = t0;
- this.V = t1;
- },
- copyMapOfList_closure: function copyMapOfList_closure() {
- },
- isAlphabetic: function(char) {
- var t1;
- if (!(char >= 65 && char <= 90))
- t1 = char >= 97 && char <= 122;
- else
- t1 = true;
- return t1;
- },
- isDriveLetter: function(path, index) {
- var t1 = path.length,
- t2 = index + 2;
- if (t1 < t2)
- return false;
- if (!B.isAlphabetic(C.JSString_methods.codeUnitAt$1(path, index)))
- return false;
- if (C.JSString_methods.codeUnitAt$1(path, index + 1) !== 58)
- return false;
- if (t1 === t2)
- return true;
- return C.JSString_methods.codeUnitAt$1(path, t2) === 47;
- },
- isAllTheSame: function(iter) {
- var t1, lastValue, value;
- for (t1 = new H.ListIterator(iter, iter.get$length(iter)), lastValue = null; t1.moveNext$0();) {
- value = t1.__internal$_current;
- if (lastValue == null)
- lastValue = value;
- else if (!J.$eq$(value, lastValue))
- return false;
- }
- return true;
- },
- replaceFirstNull: function(list, element) {
- var index = C.JSArray_methods.indexOf$1(list, null);
- if (index < 0)
- throw H.wrapException(P.ArgumentError$(H.S(list) + " contains no null elements."));
- list[index] = element;
- },
- replaceWithNull: function(list, element) {
- var index = C.JSArray_methods.indexOf$1(list, element);
- if (index < 0)
- throw H.wrapException(P.ArgumentError$(H.S(list) + " contains no elements matching " + element.toString$0(0) + "."));
- list[index] = null;
- },
- countCodeUnits: function(string, codeUnit) {
- var t1, count;
- for (t1 = new H.CodeUnits(string), t1 = new H.ListIterator(t1, t1.get$length(t1)), count = 0; t1.moveNext$0();)
- if (t1.__internal$_current === codeUnit)
- ++count;
- return count;
- },
- findLineStart: function(context, text, column) {
- var beginningOfLine, index, lineStart;
- if (text.length === 0)
- for (beginningOfLine = 0; true;) {
- index = C.JSString_methods.indexOf$2(context, "\n", beginningOfLine);
- if (index === -1)
- return context.length - beginningOfLine >= column ? beginningOfLine : null;
- if (index - beginningOfLine >= column)
- return beginningOfLine;
- beginningOfLine = index + 1;
- }
- index = C.JSString_methods.indexOf$1(context, text);
- for (; index !== -1;) {
- lineStart = index === 0 ? 0 : C.JSString_methods.lastIndexOf$2(context, "\n", index - 1) + 1;
- if (column === index - lineStart)
- return lineStart;
- index = C.JSString_methods.indexOf$2(context, text, index + 1);
- }
- return;
- },
- validateErrorArgs: function(string, match, position, $length) {
- var t2,
- t1 = position != null;
- if (t1)
- if (position < 0)
- throw H.wrapException(P.RangeError$("position must be greater than or equal to 0."));
- else if (position > string.length)
- throw H.wrapException(P.RangeError$("position must be less than or equal to the string length."));
- t2 = $length != null;
- if (t2 && $length < 0)
- throw H.wrapException(P.RangeError$("length must be greater than or equal to 0."));
- if (t1 && t2 && position + $length > string.length)
- throw H.wrapException(P.RangeError$("position plus length must not go beyond the end of the string."));
- }
- },
- O = {
- EmptyUnmodifiableSet__throw: function() {
- throw H.wrapException(P.UnsupportedError$("Cannot modify an unmodifiable Set"));
- },
- EmptyUnmodifiableSet: function EmptyUnmodifiableSet(t0) {
- this.$ti = t0;
- },
- Style__getPlatformStyle: function() {
- if (P.Uri_base().get$scheme() !== "file")
- return $.$get$Style_url();
- var t1 = P.Uri_base();
- if (!C.JSString_methods.endsWith$1(t1.get$path(t1), "/"))
- return $.$get$Style_url();
- if (P._Uri__Uri(null, "a/b", null, null).toFilePath$0() === "a\\b")
- return $.$get$Style_windows();
- return $.$get$Style_posix();
- },
- Style: function Style() {
- },
- NullExpression: function NullExpression(t0) {
- this.span = t0;
- },
- Statement: function Statement() {
- },
- AsyncImportCache$none: function(logger) {
- var t1 = logger == null ? C.StderrLogger_false : logger,
- t2 = P.Uri;
- return new O.AsyncImportCache(C.List_empty14, t1, P.LinkedHashMap_LinkedHashMap$_empty([S.Tuple2, P.Uri, P.bool], [S.Tuple3, B.AsyncImporter, P.Uri, P.Uri]), P.LinkedHashMap_LinkedHashMap$_empty(t2, V.Stylesheet), P.LinkedHashMap_LinkedHashMap$_empty(t2, E.ImporterResult));
- },
- AsyncImportCache__toImporters: function(importers, loadPaths, packageResolver) {
- var _i, t2, t3, path, _null = null,
- sassPath = H.stringTypeCast(J.get$env$x(self.process).SASS_PATH),
- t1 = H.setRuntimeTypeInfo([], [B.AsyncImporter]);
- for (_i = 0; false; ++_i)
- t1.push(importers[_i]);
- if (loadPaths != null)
- for (t2 = J.get$iterator$ax(loadPaths); t2.moveNext$0();) {
- t3 = t2.get$current(t2);
- t1.push(new F.FilesystemImporter($.$get$context().absolute$7(t3, _null, _null, _null, _null, _null, _null)));
- }
- if (sassPath != null) {
- t2 = sassPath.split(J.$eq$(J.get$platform$x(self.process), "win32") ? ";" : ":");
- t3 = t2.length;
- _i = 0;
- for (; _i < t3; ++_i) {
- path = t2[_i];
- t1.push(new F.FilesystemImporter($.$get$context().absolute$7(path, _null, _null, _null, _null, _null, _null)));
- }
- }
- return t1;
- },
- AsyncImportCache: function AsyncImportCache(t0, t1, t2, t3, t4) {
- var _ = this;
- _._async_import_cache$_importers = t0;
- _._async_import_cache$_logger = t1;
- _._async_import_cache$_canonicalizeCache = t2;
- _._async_import_cache$_importCache = t3;
- _._async_import_cache$_resultsCache = t4;
- },
- AsyncImportCache_canonicalize_closure: function AsyncImportCache_canonicalize_closure(t0, t1, t2) {
- this.$this = t0;
- this.url = t1;
- this.forImport = t2;
- },
- AsyncImportCache__canonicalize_closure: function AsyncImportCache__canonicalize_closure(t0, t1) {
- this.importer = t0;
- this.url = t1;
- },
- AsyncImportCache_importCanonical_closure: function AsyncImportCache_importCanonical_closure(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.importer = t1;
- _.canonicalUrl = t2;
- _.originalUrl = t3;
- },
- AsyncImportCache_humanize_closure: function AsyncImportCache_humanize_closure(t0) {
- this.canonicalUrl = t0;
- },
- AsyncImportCache_humanize_closure0: function AsyncImportCache_humanize_closure0() {
- },
- AsyncImportCache_humanize_closure1: function AsyncImportCache_humanize_closure1() {
- },
- Environment$: function(sourceMap) {
- var _null = null,
- t1 = P.String,
- t2 = [G.Module, D.Callable],
- t3 = B.AstNode,
- t4 = H.setRuntimeTypeInfo([], [t2]),
- t5 = H.setRuntimeTypeInfo([P.LinkedHashMap_LinkedHashMap$_empty(t1, F.Value)], [[P.Map, P.String, F.Value]]),
- t6 = sourceMap ? H.setRuntimeTypeInfo([P.LinkedHashMap_LinkedHashMap$_empty(t1, t3)], [[P.Map, P.String, B.AstNode]]) : _null,
- t7 = P.int,
- t8 = D.Callable,
- t9 = [[P.Map, P.String, D.Callable]];
- return new O.Environment(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), P.LinkedHashMap_LinkedHashMap$_empty(t1, t3), _null, _null, _null, _null, _null, t4, t5, t6, P.LinkedHashMap_LinkedHashMap$_empty(t1, t7), H.setRuntimeTypeInfo([P.LinkedHashMap_LinkedHashMap$_empty(t1, t8)], t9), P.LinkedHashMap_LinkedHashMap$_empty(t1, t7), H.setRuntimeTypeInfo([P.LinkedHashMap_LinkedHashMap$_empty(t1, t8)], t9), P.LinkedHashMap_LinkedHashMap$_empty(t1, t7), _null);
- },
- Environment$_: function(_modules, _namespaceNodes, _globalModules, _globalModuleNodes, _forwardedModules, _forwardedModuleNodes, _nestedForwardedModules, _allModules, _variables, _variableNodes, _functions, _mixins, _content) {
- var t1 = P.String,
- t2 = P.int;
- return new O.Environment(_modules, _namespaceNodes, _globalModules, _globalModuleNodes, _forwardedModules, _forwardedModuleNodes, _nestedForwardedModules, _allModules, _variables, _variableNodes, P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _functions, P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _mixins, P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _content);
- },
- _EnvironmentModule__EnvironmentModule: function(environment, css, extender, forwarded) {
- var t1, t2, t3, t4, t5, t6;
- if (forwarded == null)
- forwarded = C.List_empty0;
- t1 = O._EnvironmentModule__makeModulesByVariable(forwarded);
- t2 = H.getTypeArgumentByIndex(forwarded, 0);
- t3 = O._EnvironmentModule__memberMap(C.JSArray_methods.get$first(environment._variables), new H.MappedListIterable(forwarded, new O._EnvironmentModule__EnvironmentModule_closure(), [t2, [P.Map, P.String, F.Value]]), F.Value);
- t4 = environment._variableNodes;
- t4 = t4 == null ? null : O._EnvironmentModule__memberMap(C.JSArray_methods.get$first(t4), new H.MappedListIterable(forwarded, new O._EnvironmentModule__EnvironmentModule_closure0(), [t2, [P.Map, P.String, B.AstNode]]), B.AstNode);
- t2 = [t2, [P.Map, P.String, D.Callable]];
- t5 = D.Callable;
- t6 = O._EnvironmentModule__memberMap(C.JSArray_methods.get$first(environment._functions), new H.MappedListIterable(forwarded, new O._EnvironmentModule__EnvironmentModule_closure1(), t2), t5);
- t5 = O._EnvironmentModule__memberMap(C.JSArray_methods.get$first(environment._mixins), new H.MappedListIterable(forwarded, new O._EnvironmentModule__EnvironmentModule_closure2(), t2), t5);
- t2 = J.get$isNotEmpty$asx(css.get$children()) || C.JSArray_methods.any$1(environment._allModules, new O._EnvironmentModule__EnvironmentModule_closure3());
- return O._EnvironmentModule$_(environment, css, extender, t1, t3, t4, t6, t5, t2, !extender.get$isEmpty(extender) || C.JSArray_methods.any$1(environment._allModules, new O._EnvironmentModule__EnvironmentModule_closure4()));
- },
- _EnvironmentModule__makeModulesByVariable: function(forwarded) {
- var modulesByVariable, _i, module, t2, t3,
- t1 = forwarded.length;
- if (t1 === 0)
- return C.Map_empty0;
- modulesByVariable = P.LinkedHashMap_LinkedHashMap$_empty(P.String, [G.Module, D.Callable]);
- for (_i = 0; _i < forwarded.length; forwarded.length === t1 || (0, H.throwConcurrentModificationError)(forwarded), ++_i) {
- module = forwarded[_i];
- if (module instanceof O._EnvironmentModule) {
- for (t2 = module._modulesByVariable.get$values(), t2 = t2.get$iterator(t2); t2.moveNext$0();) {
- t3 = t2.get$current(t2);
- B.setAll(modulesByVariable, t3.get$variables().get$keys(), t3);
- }
- B.setAll(modulesByVariable, C.JSArray_methods.get$first(module._environment._variables).get$keys(), module);
- } else
- B.setAll(modulesByVariable, module.get$variables().get$keys(), module);
- }
- return modulesByVariable;
- },
- _EnvironmentModule__memberMap: function(localMap, otherMaps, $V) {
- var t1, t2, t3;
- localMap = new U.PublicMemberMapView(localMap, [$V]);
- if (otherMaps.get$length(otherMaps) === 0)
- return localMap;
- t1 = H.setRuntimeTypeInfo([], [[P.Map, P.String, $V]]);
- for (t2 = new H.ListIterator(otherMaps, otherMaps.get$length(otherMaps)); t2.moveNext$0();) {
- t3 = t2.__internal$_current;
- if (t3.get$isNotEmpty(t3))
- t1.push(t3);
- }
- t1.push(localMap);
- if (t1.length === 1)
- return localMap;
- return Z.MergedMapView$(t1, P.String, $V);
- },
- _EnvironmentModule$_: function(_environment, css, extender, _modulesByVariable, variables, variableNodes, functions, mixins, transitivelyContainsCss, transitivelyContainsExtensions) {
- return new O._EnvironmentModule(_environment._allModules, variables, variableNodes, functions, mixins, extender, css, transitivelyContainsCss, transitivelyContainsExtensions, _environment, _modulesByVariable);
- },
- Environment: function Environment(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) {
- var _ = this;
- _._environment$_modules = t0;
- _._namespaceNodes = t1;
- _._globalModules = t2;
- _._globalModuleNodes = t3;
- _._forwardedModules = t4;
- _._forwardedModuleNodes = t5;
- _._nestedForwardedModules = t6;
- _._allModules = t7;
- _._variables = t8;
- _._variableNodes = t9;
- _._variableIndices = t10;
- _._functions = t11;
- _._functionIndices = t12;
- _._mixins = t13;
- _._mixinIndices = t14;
- _._content = t15;
- _._inMixin = false;
- _._inSemiGlobalScope = true;
- _._lastVariableIndex = _._lastVariableName = null;
- },
- Environment_importForwards_closure: function Environment_importForwards_closure() {
- },
- Environment_importForwards_closure0: function Environment_importForwards_closure0() {
- },
- Environment_importForwards_closure1: function Environment_importForwards_closure1() {
- },
- Environment_importForwards_closure2: function Environment_importForwards_closure2() {
- },
- Environment__getVariableFromGlobalModule_closure: function Environment__getVariableFromGlobalModule_closure(t0) {
- this.name = t0;
- },
- Environment_setVariable_closure: function Environment_setVariable_closure(t0, t1) {
- this.$this = t0;
- this.name = t1;
- },
- Environment_setVariable_closure0: function Environment_setVariable_closure0(t0) {
- this.name = t0;
- },
- Environment_setVariable_closure1: function Environment_setVariable_closure1(t0, t1) {
- this.$this = t0;
- this.name = t1;
- },
- Environment__getFunctionFromGlobalModule_closure: function Environment__getFunctionFromGlobalModule_closure(t0) {
- this.name = t0;
- },
- Environment__getMixinFromGlobalModule_closure: function Environment__getMixinFromGlobalModule_closure(t0) {
- this.name = t0;
- },
- _EnvironmentModule: function _EnvironmentModule(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) {
- var _ = this;
- _.upstream = t0;
- _.variables = t1;
- _.variableNodes = t2;
- _.functions = t3;
- _.mixins = t4;
- _.extender = t5;
- _.css = t6;
- _.transitivelyContainsCss = t7;
- _.transitivelyContainsExtensions = t8;
- _._environment = t9;
- _._modulesByVariable = t10;
- },
- _EnvironmentModule__EnvironmentModule_closure: function _EnvironmentModule__EnvironmentModule_closure() {
- },
- _EnvironmentModule__EnvironmentModule_closure0: function _EnvironmentModule__EnvironmentModule_closure0() {
- },
- _EnvironmentModule__EnvironmentModule_closure1: function _EnvironmentModule__EnvironmentModule_closure1() {
- },
- _EnvironmentModule__EnvironmentModule_closure2: function _EnvironmentModule__EnvironmentModule_closure2() {
- },
- _EnvironmentModule__EnvironmentModule_closure3: function _EnvironmentModule__EnvironmentModule_closure3() {
- },
- _EnvironmentModule__EnvironmentModule_closure4: function _EnvironmentModule__EnvironmentModule_closure4() {
- },
- closure116: function closure116() {
- },
- _closure14: function _closure14() {
- },
- _closure15: function _closure15() {
- },
- SassNull: function SassNull() {
- }
- },
- U = {DefaultEquality: function DefaultEquality() {
- }, ListEquality: function ListEquality() {
- }, _MapEntry: function _MapEntry(t0, t1, t2) {
- this.equality = t0;
- this.key = t1;
- this.value = t2;
- }, MapEquality: function MapEquality() {
- }, ModifiableCssAtRule: function ModifiableCssAtRule(t0, t1, t2, t3, t4, t5) {
- var _ = this;
- _.name = t0;
- _.value = t1;
- _.isChildless = t2;
- _.span = t3;
- _.children = t4;
- _._children = t5;
- _._indexInParent = _._parent = null;
- _.isGroupEnd = false;
- }, ModifiableCssKeyframeBlock: function ModifiableCssKeyframeBlock(t0, t1, t2, t3) {
- var _ = this;
- _.selector = t0;
- _.span = t1;
- _.children = t2;
- _._children = t3;
- _._indexInParent = _._parent = null;
- _.isGroupEnd = false;
- },
- AtRule$: function($name, span, children, value) {
- var t1 = children == null ? null : P.List_List$unmodifiable(children, O.Statement),
- t2 = t1 == null ? null : C.JSArray_methods.any$1(t1, new M.ParentStatement_closure());
- return new U.AtRule($name, value, span, t1, t2 === true);
- },
- AtRule: function AtRule(t0, t1, t2, t3, t4) {
- var _ = this;
- _.name = t0;
- _.value = t1;
- _.span = t2;
- _.children = t3;
- _.hasDeclarations = t4;
- },
- SupportsOperation: function SupportsOperation(t0, t1, t2, t3) {
- var _ = this;
- _.left = t0;
- _.right = t1;
- _.operator = t2;
- _.span = t3;
- },
- compile: function(path, charset, functions, importCache, indentWidth, lineFeed, logger, nodeImporter, sourceMap, style, syntax, useSpaces) {
- var t1, t2, stylesheet;
- if (nodeImporter == null)
- t1 = syntax == null || syntax === M.Syntax_forPath(path);
- else
- t1 = false;
- if (t1) {
- if (importCache == null)
- importCache = R.ImportCache$none(logger);
- t1 = D.absolute(".");
- t2 = $.$get$context();
- stylesheet = importCache.importCanonical$3(new F.FilesystemImporter(t1), t2.toUri$1(t2.canonicalize$1(path)), t2.toUri$1(path));
- } else {
- t1 = B.readFile(path);
- t2 = syntax == null ? M.Syntax_forPath(path) : syntax;
- stylesheet = V.Stylesheet_Stylesheet$parse(t1, t2, logger, $.$get$context().toUri$1(path));
- }
- return U._compileStylesheet(stylesheet, logger, importCache, nodeImporter, new F.FilesystemImporter(D.absolute(".")), functions, style, useSpaces, indentWidth, lineFeed, sourceMap, charset);
- },
- compileString: function(source, charset, functions, importCache, importer, indentWidth, lineFeed, logger, nodeImporter, sourceMap, style, syntax, url, useSpaces) {
- var stylesheet = V.Stylesheet_Stylesheet$parse(source, syntax == null ? C.Syntax_SCSS : syntax, logger, url);
- return U._compileStylesheet(stylesheet, logger, importCache, nodeImporter, importer == null ? new F.FilesystemImporter(D.absolute(".")) : importer, functions, style, useSpaces, indentWidth, lineFeed, sourceMap, charset);
- },
- _compileStylesheet: function(stylesheet, logger, importCache, nodeImporter, importer, functions, style, useSpaces, indentWidth, lineFeed, sourceMap, charset) {
- var evaluateResult = R._EvaluateVisitor$(functions, importCache, logger, nodeImporter, sourceMap).run$2(0, importer, stylesheet),
- serializeResult = N.serialize(evaluateResult.stylesheet, charset, indentWidth, false, lineFeed, sourceMap, style, useSpaces),
- t1 = serializeResult.sourceMap;
- if (t1 != null && importCache != null)
- B.mapInPlace(t1.urls, new U._compileStylesheet_closure(stylesheet, importCache));
- return new X.CompileResult(evaluateResult, serializeResult);
- },
- _compileStylesheet_closure: function _compileStylesheet_closure(t0, t1) {
- this.stylesheet = t0;
- this.importCache = t1;
- },
- RenderResult: function RenderResult() {
- },
- RenderResultStats: function RenderResultStats() {
- },
- SassParser: function SassParser(t0, t1, t2) {
- var _ = this;
- _._currentIndentation = 0;
- _._spaces = _._nextIndentationEnd = _._nextIndentation = null;
- _._isUseAllowed = true;
- _._stylesheet$_inMixin = false;
- _._mixinHasContent = null;
- _._inParentheses = _._inStyleRule = _._stylesheet$_inUnknownAtRule = _._inControlDirective = _._inContentBlock = false;
- _._globalVariables = t0;
- _.lastSilentComment = null;
- _.scanner = t1;
- _.logger = t2;
- },
- SassParser_children_closure: function SassParser_children_closure(t0, t1, t2) {
- this.$this = t0;
- this.children = t1;
- this.child = t2;
- },
- MultiDirWatcher: function MultiDirWatcher(t0, t1, t2) {
- this._watchers = t0;
- this._group = t1;
- this._poll = t2;
- },
- PublicMemberMapView: function PublicMemberMapView(t0, t1) {
- this._inner = t0;
- this.$ti = t1;
- },
- Highlighter$: function(span, color) {
- var t1 = U.Highlighter__collateLines(H.setRuntimeTypeInfo([U._Highlight$(span, null, true)], [U._Highlight])),
- t2 = new U.Highlighter_closure(color).call$0(),
- t3 = C.JSInt_methods.toString$0(C.JSArray_methods.get$last(t1).number + 1),
- t4 = U.Highlighter__contiguous(t1) ? 0 : 3,
- t5 = P.int,
- t6 = H.getTypeArgumentByIndex(t1, 0);
- return new U.Highlighter(t1, t2, null, 1 + Math.max(t3.length, t4), new H.MappedListIterable(t1, new U.Highlighter$__closure(), [t6, t5]).reduce$1(0, H.instantiate1(P.math__max$closure(), t5)), !B.isAllTheSame(new H.MappedListIterable(t1, new U.Highlighter$__closure0(), [t6, P.Object])), new P.StringBuffer(""));
- },
- Highlighter$multiple: function(primarySpan, primaryLabel, secondarySpans, color, primaryColor, secondaryColor) {
- var t2, t3, t4, t5, t6, t7,
- t1 = H.setRuntimeTypeInfo([], [U._Highlight]);
- t1.push(U._Highlight$(primarySpan, primaryLabel, true));
- for (t2 = secondarySpans.get$entries(), t2 = t2.get$iterator(t2); t2.moveNext$0();) {
- t3 = t2.get$current(t2);
- t1.push(U._Highlight$(t3.key, t3.value, false));
- }
- t1 = U.Highlighter__collateLines(t1);
- if (color)
- t2 = "\x1b[31m";
- else
- t2 = null;
- if (color)
- t3 = "\x1b[34m";
- else
- t3 = null;
- t4 = C.JSInt_methods.toString$0(C.JSArray_methods.get$last(t1).number + 1);
- t5 = U.Highlighter__contiguous(t1) ? 0 : 3;
- t6 = P.int;
- t7 = H.getTypeArgumentByIndex(t1, 0);
- return new U.Highlighter(t1, t2, t3, 1 + Math.max(t4.length, t5), new H.MappedListIterable(t1, new U.Highlighter$__closure(), [t7, t6]).reduce$1(0, H.instantiate1(P.math__max$closure(), t6)), !B.isAllTheSame(new H.MappedListIterable(t1, new U.Highlighter$__closure0(), [t7, P.Object])), new P.StringBuffer(""));
- },
- Highlighter__contiguous: function(lines) {
- var i, thisLine, nextLine;
- for (i = 0; i < lines.length - 1;) {
- thisLine = lines[i];
- ++i;
- nextLine = lines[i];
- if (thisLine.number + 1 !== nextLine.number && J.$eq$(thisLine.url, nextLine.url))
- return false;
- }
- return true;
- },
- Highlighter__collateLines: function(highlights) {
- var t1, t2,
- highlightsByUrl = Y.groupBy(highlights, new U.Highlighter__collateLines_closure(), U._Highlight, null);
- for (t1 = highlightsByUrl.get$values(), t1 = t1.get$iterator(t1); t1.moveNext$0();)
- J.sort$1$ax(t1.get$current(t1), new U.Highlighter__collateLines_closure0());
- t1 = highlightsByUrl.get$values();
- t2 = U._Line;
- return P.List_List$from(new H.ExpandIterable(t1, new U.Highlighter__collateLines_closure1(), [H.getRuntimeTypeArgument(t1, "Iterable", 0), t2]), true, t2);
- },
- _Highlight$: function(span, label, primary) {
- return new U._Highlight(new U._Highlight_closure(span).call$0(), primary, label);
- },
- _Highlight__normalizeNewlines: function(span) {
- var endOffset, t1, i, t2, t3, t4,
- text = span.get$text();
- if (!C.JSString_methods.contains$1(text, "\r\n"))
- return span;
- endOffset = span.get$end(span).get$offset();
- for (t1 = text.length - 1, i = 0; i < t1; ++i)
- if (C.JSString_methods._codeUnitAt$1(text, i) === 13 && C.JSString_methods._codeUnitAt$1(text, i + 1) === 10)
- --endOffset;
- t1 = span.get$start(span);
- t2 = span.get$sourceUrl();
- t3 = span.get$end(span).get$line();
- t2 = V.SourceLocation$(endOffset, span.get$end(span).get$column(), t3, t2);
- t3 = H.stringReplaceAllUnchecked(text, "\r\n", "\n");
- t4 = span.get$context(span);
- return X.SourceSpanWithContext$(t1, t2, t3, H.stringReplaceAllUnchecked(t4, "\r\n", "\n"));
- },
- _Highlight__normalizeTrailingNewline: function(span) {
- var context, text, start, end, t1, t2, t3;
- if (!C.JSString_methods.endsWith$1(span.get$context(span), "\n"))
- return span;
- if (C.JSString_methods.endsWith$1(span.get$text(), "\n\n"))
- return span;
- context = C.JSString_methods.substring$2(span.get$context(span), 0, span.get$context(span).length - 1);
- text = span.get$text();
- start = span.get$start(span);
- end = span.get$end(span);
- if (C.JSString_methods.endsWith$1(span.get$text(), "\n") && B.findLineStart(span.get$context(span), span.get$text(), span.get$start(span).get$column()) + span.get$start(span).get$column() + span.get$length(span) === span.get$context(span).length) {
- text = C.JSString_methods.substring$2(span.get$text(), 0, span.get$text().length - 1);
- if (text.length === 0)
- end = start;
- else {
- t1 = span.get$end(span).get$offset();
- t2 = span.get$sourceUrl();
- t3 = span.get$end(span).get$line();
- end = V.SourceLocation$(t1 - 1, U._Highlight__lastLineLength(context), t3 - 1, t2);
- start = span.get$start(span).get$offset() === span.get$end(span).get$offset() ? end : span.get$start(span);
- }
- }
- return X.SourceSpanWithContext$(start, end, text, context);
- },
- _Highlight__normalizeEndOfLine: function(span) {
- var text, t1, t2, t3, t4;
- if (span.get$end(span).get$column() !== 0)
- return span;
- if (span.get$end(span).get$line() == span.get$start(span).get$line())
- return span;
- text = C.JSString_methods.substring$2(span.get$text(), 0, span.get$text().length - 1);
- t1 = span.get$start(span);
- t2 = span.get$end(span).get$offset();
- t3 = span.get$sourceUrl();
- t4 = span.get$end(span).get$line();
- t3 = V.SourceLocation$(t2 - 1, text.length - C.JSString_methods.lastIndexOf$1(text, "\n") - 1, t4 - 1, t3);
- return X.SourceSpanWithContext$(t1, t3, text, C.JSString_methods.endsWith$1(span.get$context(span), "\n") ? C.JSString_methods.substring$2(span.get$context(span), 0, span.get$context(span).length - 1) : span.get$context(span));
- },
- _Highlight__lastLineLength: function(text) {
- var t1 = text.length;
- if (t1 === 0)
- return 0;
- else if (C.JSString_methods.codeUnitAt$1(text, t1 - 1) === 10)
- return t1 === 1 ? 0 : t1 - C.JSString_methods.lastIndexOf$2(text, "\n", t1 - 2) - 1;
- else
- return t1 - C.JSString_methods.lastIndexOf$1(text, "\n") - 1;
- },
- Highlighter: function Highlighter(t0, t1, t2, t3, t4, t5, t6) {
- var _ = this;
- _._lines = t0;
- _._primaryColor = t1;
- _._secondaryColor = t2;
- _._paddingBeforeSidebar = t3;
- _._maxMultilineSpans = t4;
- _._multipleFiles = t5;
- _._highlighter$_buffer = t6;
- },
- Highlighter_closure: function Highlighter_closure(t0) {
- this.color = t0;
- },
- Highlighter$__closure: function Highlighter$__closure() {
- },
- Highlighter$___closure: function Highlighter$___closure() {
- },
- Highlighter$__closure0: function Highlighter$__closure0() {
- },
- Highlighter__collateLines_closure: function Highlighter__collateLines_closure() {
- },
- Highlighter__collateLines_closure0: function Highlighter__collateLines_closure0() {
- },
- Highlighter__collateLines_closure1: function Highlighter__collateLines_closure1() {
- },
- Highlighter__collateLines__closure: function Highlighter__collateLines__closure(t0) {
- this.line = t0;
- },
- Highlighter_highlight_closure: function Highlighter_highlight_closure() {
- },
- Highlighter_highlight_closure0: function Highlighter_highlight_closure0() {
- },
- Highlighter__writeFileStart_closure: function Highlighter__writeFileStart_closure(t0) {
- this.$this = t0;
- },
- Highlighter__writeMultilineHighlights_closure: function Highlighter__writeMultilineHighlights_closure(t0, t1, t2) {
- this.$this = t0;
- this.startLine = t1;
- this.line = t2;
- },
- Highlighter__writeMultilineHighlights_closure0: function Highlighter__writeMultilineHighlights_closure0(t0, t1) {
- this.$this = t0;
- this.highlight = t1;
- },
- Highlighter__writeMultilineHighlights_closure1: function Highlighter__writeMultilineHighlights_closure1(t0) {
- this.$this = t0;
- },
- Highlighter__writeMultilineHighlights_closure2: function Highlighter__writeMultilineHighlights_closure2(t0, t1, t2, t3, t4, t5, t6) {
- var _ = this;
- _._box_0 = t0;
- _.$this = t1;
- _.current = t2;
- _.startLine = t3;
- _.line = t4;
- _.highlight = t5;
- _.endLine = t6;
- },
- Highlighter__writeMultilineHighlights__closure: function Highlighter__writeMultilineHighlights__closure(t0, t1) {
- this._box_0 = t0;
- this.$this = t1;
- },
- Highlighter__writeMultilineHighlights__closure0: function Highlighter__writeMultilineHighlights__closure0(t0, t1) {
- this.$this = t0;
- this.vertical = t1;
- },
- Highlighter__writeHighlightedText_closure: function Highlighter__writeHighlightedText_closure(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.text = t1;
- _.startColumn = t2;
- _.endColumn = t3;
- },
- Highlighter__writeIndicator_closure: function Highlighter__writeIndicator_closure(t0, t1, t2) {
- this.$this = t0;
- this.line = t1;
- this.highlight = t2;
- },
- Highlighter__writeIndicator_closure0: function Highlighter__writeIndicator_closure0(t0, t1, t2) {
- this.$this = t0;
- this.line = t1;
- this.highlight = t2;
- },
- Highlighter__writeIndicator_closure1: function Highlighter__writeIndicator_closure1(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.coversWholeLine = t1;
- _.line = t2;
- _.highlight = t3;
- },
- Highlighter__writeSidebar_closure: function Highlighter__writeSidebar_closure(t0, t1, t2) {
- this._box_0 = t0;
- this.$this = t1;
- this.end = t2;
- },
- _Highlight: function _Highlight(t0, t1, t2) {
- this.span = t0;
- this.isPrimary = t1;
- this.label = t2;
- },
- _Highlight_closure: function _Highlight_closure(t0) {
- this.span = t0;
- },
- _Line: function _Line(t0, t1, t2, t3) {
- var _ = this;
- _.text = t0;
- _.number = t1;
- _.url = t2;
- _.highlights = t3;
- },
- Chain_Chain$parse: function(chain) {
- var t1, t2,
- _s26_ = "<asynchronous suspension>\n",
- _s51_ = "===== asynchronous gap ===========================\n";
- if (chain.length === 0) {
- t1 = Y.Trace;
- return new U.Chain(P.List_List$unmodifiable(H.setRuntimeTypeInfo([], [t1]), t1));
- }
- if (C.JSString_methods.contains$1(chain, _s26_)) {
- t1 = H.setRuntimeTypeInfo(chain.split(_s26_), [P.String]);
- t2 = Y.Trace;
- return new U.Chain(P.List_List$unmodifiable(new H.MappedListIterable(t1, new U.Chain_Chain$parse_closure(), [H.getTypeArgumentByIndex(t1, 0), t2]), t2));
- }
- if (!C.JSString_methods.contains$1(chain, _s51_)) {
- t1 = Y.Trace;
- return new U.Chain(P.List_List$unmodifiable(H.setRuntimeTypeInfo([Y.Trace_Trace$parse(chain)], [t1]), t1));
- }
- t1 = H.setRuntimeTypeInfo(chain.split(_s51_), [P.String]);
- t2 = Y.Trace;
- return new U.Chain(P.List_List$unmodifiable(new H.MappedListIterable(t1, new U.Chain_Chain$parse_closure0(), [H.getTypeArgumentByIndex(t1, 0), t2]), t2));
- },
- Chain: function Chain(t0) {
- this.traces = t0;
- },
- Chain_Chain$parse_closure: function Chain_Chain$parse_closure() {
- },
- Chain_Chain$parse_closure0: function Chain_Chain$parse_closure0() {
- },
- Chain_toTrace_closure: function Chain_toTrace_closure() {
- },
- Chain_toString_closure0: function Chain_toString_closure0() {
- },
- Chain_toString__closure0: function Chain_toString__closure0() {
- },
- Chain_toString_closure: function Chain_toString_closure(t0) {
- this.longest = t0;
- },
- Chain_toString__closure: function Chain_toString__closure(t0) {
- this.longest = t0;
- }
- },
- M = {_DelegatingIterableBase: function _DelegatingIterableBase() {
- }, DelegatingIterable: function DelegatingIterable() {
- }, DelegatingSet: function DelegatingSet(t0, t1) {
- this._base = t0;
- this.$ti = t1;
- }, MapKeySet: function MapKeySet(t0, t1) {
- this._baseMap = t0;
- this.$ti = t1;
- }, _MapKeySet__DelegatingIterableBase_UnmodifiableSetMixin: function _MapKeySet__DelegatingIterableBase_UnmodifiableSetMixin() {
- },
- Context_Context: function(style) {
- var current = style == null ? D.current() : ".";
- if (style == null)
- style = $.$get$Style_platform();
- return new M.Context(style, current);
- },
- _parseUri: function(uri) {
- if (typeof uri === "string")
- return P.Uri_parse(uri);
- if (!!J.getInterceptor$(uri).$isUri)
- return uri;
- throw H.wrapException(P.ArgumentError$value(uri, "uri", "Value must be a String or a Uri"));
- },
- _validateArgList: function(method, args) {
- var numArgs, i, numArgs0, message, t1, t2;
- for (numArgs = args.length, i = 1; i < numArgs; ++i) {
- if (args[i] == null || args[i - 1] != null)
- continue;
- for (; numArgs >= 1; numArgs = numArgs0) {
- numArgs0 = numArgs - 1;
- if (args[numArgs0] != null)
- break;
- }
- message = new P.StringBuffer("");
- t1 = method + "(";
- message._contents = t1;
- t2 = H.SubListIterable$(args, 0, numArgs, H.getTypeArgumentByIndex(args, 0));
- t2 = t1 + new H.MappedListIterable(t2, new M._validateArgList_closure(), [H.getTypeArgumentByIndex(t2, 0), P.String]).join$1(0, ", ");
- message._contents = t2;
- message._contents = t2 + ("): part " + (i - 1) + " was null, but part " + i + " was not.");
- throw H.wrapException(P.ArgumentError$(message.toString$0(0)));
- }
- },
- Context: function Context(t0, t1) {
- this.style = t0;
- this._context$_current = t1;
- },
- Context_join_closure: function Context_join_closure() {
- },
- Context_joinAll_closure: function Context_joinAll_closure() {
- },
- Context_split_closure: function Context_split_closure() {
- },
- _validateArgList_closure: function _validateArgList_closure() {
- },
- _PathDirection: function _PathDirection(t0) {
- this.name = t0;
- },
- _PathRelation: function _PathRelation(t0) {
- this.name = t0;
- },
- CallableDeclaration: function CallableDeclaration() {
- },
- FunctionRule: function FunctionRule(t0, t1, t2, t3, t4) {
- var _ = this;
- _.name = t0;
- _.$arguments = t1;
- _.span = t2;
- _.children = t3;
- _.hasDeclarations = t4;
- },
- ParentStatement: function ParentStatement() {
- },
- ParentStatement_closure: function ParentStatement_closure() {
- },
- ParentStatement__closure: function ParentStatement__closure() {
- },
- SupportsNegation: function SupportsNegation(t0, t1) {
- this.condition = t0;
- this.span = t1;
- },
- ParentSelector: function ParentSelector(t0) {
- this.suffix = t0;
- },
- SimpleSelector: function SimpleSelector() {
- },
- Importer: function Importer() {
- },
- StylesheetNode$_: function(_stylesheet, importer, canonicalUrl, allUpstream) {
- var t1 = new M.StylesheetNode(importer, canonicalUrl, allUpstream.item1, allUpstream.item2, P.LinkedHashSet_LinkedHashSet$_empty(M.StylesheetNode));
- t1.StylesheetNode$_$4(_stylesheet, importer, canonicalUrl, allUpstream);
- return t1;
- },
- StylesheetGraph: function StylesheetGraph(t0, t1, t2) {
- this._nodes = t0;
- this.importCache = t1;
- this._transitiveModificationTimes = t2;
- },
- StylesheetGraph_modifiedSince_transitiveModificationTime: function StylesheetGraph_modifiedSince_transitiveModificationTime(t0) {
- this.$this = t0;
- },
- StylesheetGraph_modifiedSince_transitiveModificationTime_closure: function StylesheetGraph_modifiedSince_transitiveModificationTime_closure(t0, t1) {
- this.node = t0;
- this.transitiveModificationTime = t1;
- },
- StylesheetGraph__add_closure: function StylesheetGraph__add_closure(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.url = t1;
- _.baseImporter = t2;
- _.baseUrl = t3;
- },
- StylesheetGraph_addCanonical_closure: function StylesheetGraph_addCanonical_closure(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.importer = t1;
- _.canonicalUrl = t2;
- _.originalUrl = t3;
- },
- StylesheetGraph_addCanonical_closure0: function StylesheetGraph_addCanonical_closure0(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.stylesheet = t1;
- _.importer = t2;
- _.canonicalUrl = t3;
- },
- StylesheetGraph_reload_closure: function StylesheetGraph_reload_closure(t0, t1, t2) {
- this.$this = t0;
- this.node = t1;
- this.canonicalUrl = t2;
- },
- StylesheetGraph__nodeFor_closure: function StylesheetGraph__nodeFor_closure(t0, t1, t2, t3, t4) {
- var _ = this;
- _.$this = t0;
- _.url = t1;
- _.baseImporter = t2;
- _.baseUrl = t3;
- _.forImport = t4;
- },
- StylesheetGraph__nodeFor_closure0: function StylesheetGraph__nodeFor_closure0(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.importer = t1;
- _.canonicalUrl = t2;
- _.resolvedUrl = t3;
- },
- StylesheetNode: function StylesheetNode(t0, t1, t2, t3, t4) {
- var _ = this;
- _.importer = t0;
- _.canonicalUrl = t1;
- _._upstream = t2;
- _._upstreamImports = t3;
- _._downstream = t4;
- },
- Syntax_forPath: function(path) {
- switch (X.ParsedPath_ParsedPath$parse(path, $.$get$context().style)._splitExtension$0()[1]) {
- case ".sass":
- return C.Syntax_Sass;
- case ".css":
- return C.Syntax_CSS;
- default:
- return C.Syntax_SCSS;
- }
- },
- Syntax: function Syntax(t0) {
- this._name = t0;
- }
- },
- X = {
- ParsedPath_ParsedPath$parse: function(path, style) {
- var t1, parts, separators, start, i,
- root = style.getRoot$1(path),
- isRootRelative = style.isRootRelative$1(path);
- if (root != null)
- path = J.substring$1$s(path, root.length);
- t1 = [P.String];
- parts = H.setRuntimeTypeInfo([], t1);
- separators = H.setRuntimeTypeInfo([], t1);
- t1 = path.length;
- if (t1 !== 0 && style.isSeparator$1(C.JSString_methods._codeUnitAt$1(path, 0))) {
- separators.push(path[0]);
- start = 1;
- } else {
- separators.push("");
- start = 0;
- }
- for (i = start; i < t1; ++i)
- if (style.isSeparator$1(C.JSString_methods._codeUnitAt$1(path, i))) {
- parts.push(C.JSString_methods.substring$2(path, start, i));
- separators.push(path[i]);
- start = i + 1;
- }
- if (start < t1) {
- parts.push(C.JSString_methods.substring$1(path, start));
- separators.push("");
- }
- return new X.ParsedPath(style, root, isRootRelative, parts, separators);
- },
- ParsedPath: function ParsedPath(t0, t1, t2, t3, t4) {
- var _ = this;
- _.style = t0;
- _.root = t1;
- _.isRootRelative = t2;
- _.parts = t3;
- _.separators = t4;
- },
- ParsedPath_normalize_closure: function ParsedPath_normalize_closure(t0) {
- this.$this = t0;
- },
- ParsedPath__splitExtension_closure: function ParsedPath__splitExtension_closure() {
- },
- ParsedPath__splitExtension_closure0: function ParsedPath__splitExtension_closure0() {
- },
- PathException$: function(message) {
- return new X.PathException(message);
- },
- PathException: function PathException(t0) {
- this.message = t0;
- },
- ModifiableCssStyleRule$: function(selector, span, originalSelector) {
- var t1 = originalSelector == null ? selector.value : originalSelector,
- t2 = B.ModifiableCssNode,
- t3 = H.setRuntimeTypeInfo([], [t2]);
- return new X.ModifiableCssStyleRule(selector, t1, span, new P.UnmodifiableListView(t3, [t2]), t3);
- },
- ModifiableCssStyleRule: function ModifiableCssStyleRule(t0, t1, t2, t3, t4) {
- var _ = this;
- _.selector = t0;
- _.originalSelector = t1;
- _.span = t2;
- _.children = t3;
- _._children = t4;
- _._indexInParent = _._parent = null;
- _.isGroupEnd = false;
- },
- ArgumentInvocation$: function(positional, named, span, keywordRest, rest) {
- var t1 = T.Expression;
- return new X.ArgumentInvocation(P.List_List$unmodifiable(positional, t1), H.ConstantMap_ConstantMap$from(named, P.String, t1), rest, keywordRest, span);
- },
- ArgumentInvocation: function ArgumentInvocation(t0, t1, t2, t3, t4) {
- var _ = this;
- _.positional = t0;
- _.named = t1;
- _.rest = t2;
- _.keywordRest = t3;
- _.span = t4;
- },
- UnaryOperationExpression: function UnaryOperationExpression(t0, t1, t2) {
- this.operator = t0;
- this.operand = t1;
- this.span = t2;
- },
- UnaryOperator: function UnaryOperator(t0, t1) {
- this.name = t0;
- this.operator = t1;
- },
- Interpolation$: function(contents, span) {
- var t1 = new X.Interpolation(P.List_List$unmodifiable(contents, P.Object), span);
- t1.Interpolation$2(contents, span);
- return t1;
- },
- Interpolation: function Interpolation(t0, t1) {
- this.contents = t0;
- this.span = t1;
- },
- Interpolation_toString_closure: function Interpolation_toString_closure() {
- },
- ExtendRule: function ExtendRule(t0, t1, t2) {
- this.selector = t0;
- this.isOptional = t1;
- this.span = t2;
- },
- StyleRule: function StyleRule(t0, t1, t2, t3) {
- var _ = this;
- _.selector = t0;
- _.span = t1;
- _.children = t2;
- _.hasDeclarations = t3;
- },
- SupportsInterpolation: function SupportsInterpolation(t0, t1) {
- this.expression = t0;
- this.span = t1;
- },
- ClassSelector: function ClassSelector(t0) {
- this.name = t0;
- },
- CompoundSelector$: function(components) {
- var t1 = P.List_List$unmodifiable(components, M.SimpleSelector);
- if (t1.length === 0)
- H.throwExpression(P.ArgumentError$("components may not be empty."));
- return new X.CompoundSelector(t1);
- },
- CompoundSelector: function CompoundSelector(t0) {
- this.components = t0;
- this._compound$_maxSpecificity = this._compound$_minSpecificity = null;
- },
- CompoundSelector_isInvisible_closure: function CompoundSelector_isInvisible_closure() {
- },
- compileAsync: function(path, charset, functions, importCache, indentWidth, lineFeed, logger, nodeImporter, sourceMap, style, syntax, useSpaces) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(X.CompileResult),
- $async$returnValue, t1, t2, stylesheet;
- var $async$compileAsync = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if (nodeImporter == null)
- t1 = syntax == null || syntax === M.Syntax_forPath(path);
- else
- t1 = false;
- $async$goto = t1 ? 3 : 5;
- break;
- case 3:
- // then
- if (importCache == null)
- importCache = O.AsyncImportCache$none(logger);
- t1 = D.absolute(".");
- t2 = $.$get$context();
- $async$goto = 6;
- return P._asyncAwait(importCache.importCanonical$3(new F.FilesystemImporter(t1), t2.toUri$1(t2.canonicalize$1(path)), t2.toUri$1(path)), $async$compileAsync);
- case 6:
- // returning from await.
- stylesheet = $async$result;
- // goto join
- $async$goto = 4;
- break;
- case 5:
- // else
- t1 = B.readFile(path);
- t2 = syntax == null ? M.Syntax_forPath(path) : syntax;
- stylesheet = V.Stylesheet_Stylesheet$parse(t1, t2, logger, $.$get$context().toUri$1(path));
- case 4:
- // join
- $async$goto = 7;
- return P._asyncAwait(X._compileStylesheet0(stylesheet, logger, importCache, nodeImporter, new F.FilesystemImporter(D.absolute(".")), functions, style, useSpaces, indentWidth, lineFeed, sourceMap, charset), $async$compileAsync);
- case 7:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$compileAsync, $async$completer);
- },
- compileStringAsync: function(source, charset, functions, importCache, importer, indentWidth, lineFeed, logger, nodeImporter, sourceMap, style, syntax, url, useSpaces) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(X.CompileResult),
- $async$returnValue, stylesheet;
- var $async$compileStringAsync = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- stylesheet = V.Stylesheet_Stylesheet$parse(source, syntax == null ? C.Syntax_SCSS : syntax, logger, url);
- $async$returnValue = X._compileStylesheet0(stylesheet, logger, importCache, nodeImporter, importer == null ? new F.FilesystemImporter(D.absolute(".")) : importer, functions, style, useSpaces, indentWidth, lineFeed, sourceMap, charset);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$compileStringAsync, $async$completer);
- },
- _compileStylesheet0: function(stylesheet, logger, importCache, nodeImporter, importer, functions, style, useSpaces, indentWidth, lineFeed, sourceMap, charset) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(X.CompileResult),
- $async$returnValue, evaluateResult, serializeResult, t1;
- var $async$_compileStylesheet0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait(E._EvaluateVisitor$0(functions, importCache, logger, nodeImporter, sourceMap).run$2(0, importer, stylesheet), $async$_compileStylesheet0);
- case 3:
- // returning from await.
- evaluateResult = $async$result;
- serializeResult = N.serialize(evaluateResult.stylesheet, charset, indentWidth, false, lineFeed, sourceMap, style, useSpaces);
- t1 = serializeResult.sourceMap;
- if (t1 != null && importCache != null)
- B.mapInPlace(t1.urls, new X._compileStylesheet_closure0(stylesheet, importCache));
- $async$returnValue = new X.CompileResult(evaluateResult, serializeResult);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_compileStylesheet0, $async$completer);
- },
- _compileStylesheet_closure0: function _compileStylesheet_closure0(t0, t1) {
- this.stylesheet = t0;
- this.importCache = t1;
- },
- CompileResult: function CompileResult(t0, t1) {
- this._evaluate = t0;
- this._serialize = t1;
- },
- closure70: function closure70() {
- },
- closure71: function closure71() {
- },
- SourceSpanWithContext$: function(start, end, text, _context) {
- var t1 = new X.SourceSpanWithContext(_context, start, end, text);
- t1.SourceSpanBase$3(start, end, text);
- if (!C.JSString_methods.contains$1(_context, text))
- H.throwExpression(P.ArgumentError$('The context line "' + _context + '" must contain "' + text + '".'));
- if (B.findLineStart(_context, text, start.get$column()) == null)
- H.throwExpression(P.ArgumentError$('The span text "' + text + '" must start at column ' + (start.get$column() + 1) + ' in a line within "' + _context + '".'));
- return t1;
- },
- SourceSpanWithContext: function SourceSpanWithContext(t0, t1, t2, t3) {
- var _ = this;
- _._context = t0;
- _.start = t1;
- _.end = t2;
- _.text = t3;
- },
- StringScanner$: function(string, position, sourceUrl) {
- var t1 = typeof sourceUrl === "string" ? P.Uri_parse(sourceUrl) : H.interceptedTypeCast(sourceUrl, "$isUri");
- return new X.StringScanner(t1, string);
- },
- StringScanner: function StringScanner(t0, t1) {
- var _ = this;
- _.sourceUrl = t0;
- _.string = t1;
- _._string_scanner$_position = 0;
- _._lastMatchPosition = _._lastMatch = null;
- },
- _combine: function(hash, value) {
- hash = 536870911 & hash + value;
- hash = 536870911 & hash + ((524287 & hash) << 10);
- return hash ^ hash >>> 6;
- },
- _finish: function(hash) {
- hash = 536870911 & hash + ((67108863 & hash) << 3);
- hash ^= hash >>> 11;
- return 536870911 & hash + ((16383 & hash) << 15);
- }
- },
- K = {
- PathMap__create: function(context, $V) {
- var t1 = {};
- t1.context = context;
- t1.context = $.$get$context();
- return P.LinkedHashMap_LinkedHashMap(new K.PathMap__create_closure(t1), new K.PathMap__create_closure0(t1), new K.PathMap__create_closure1(), P.String, $V);
- },
- PathMap: function PathMap(t0, t1) {
- this._collection$_map = t0;
- this.$ti = t1;
- },
- PathMap__create_closure: function PathMap__create_closure(t0) {
- this._box_0 = t0;
- },
- PathMap__create_closure0: function PathMap__create_closure0(t0) {
- this._box_0 = t0;
- },
- PathMap__create_closure1: function PathMap__create_closure1() {
- },
- ColorExpression: function ColorExpression(t0) {
- this.value = t0;
- },
- _functionString: function($name, $arguments) {
- return new D.SassString($name + "(" + J.map$1$1$ax($arguments, new K._functionString_closure(), P.String).join$1(0, ", ") + ")", false);
- },
- _removedColorFunction: function($name, argument, negative) {
- var t1 = S.SpanScanner$("@function " + $name + "($color, $amount) {", "sass:color");
- return new Q.BuiltInCallable($name, H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), t1, C.StderrLogger_false).parseArgumentDeclaration$0(), new K._removedColorFunction_closure($name, argument, negative), [B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}])], [[S.Tuple2, B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}]]));
- },
- _rgb: function($name, $arguments) {
- var t2, red, green, blue, t3, _null = null,
- t1 = J.getInterceptor$asx($arguments),
- alpha = t1.get$length($arguments) > 3 ? t1.$index($arguments, 3) : _null;
- if (!t1.$index($arguments, 0).get$isSpecialNumber())
- if (!t1.$index($arguments, 1).get$isSpecialNumber())
- if (!t1.$index($arguments, 2).get$isSpecialNumber()) {
- t2 = alpha == null ? _null : alpha.get$isSpecialNumber();
- t2 = t2 === true;
- } else
- t2 = true;
- else
- t2 = true;
- else
- t2 = true;
- if (t2)
- return K._functionString($name, $arguments);
- red = t1.$index($arguments, 0).assertNumber$1("red");
- green = t1.$index($arguments, 1).assertNumber$1("green");
- blue = t1.$index($arguments, 2).assertNumber$1("blue");
- t1 = T.fuzzyRound(K._percentageOrUnitless(red, 255, "red"));
- t2 = T.fuzzyRound(K._percentageOrUnitless(green, 255, "green"));
- t3 = T.fuzzyRound(K._percentageOrUnitless(blue, 255, "blue"));
- return K.SassColor$rgb(t1, t2, t3, alpha == null ? _null : K._percentageOrUnitless(alpha.assertNumber$1("alpha"), 1, "alpha"), _null);
- },
- _rgbTwoArg: function($name, $arguments) {
- var first, t2, color,
- t1 = J.getInterceptor$asx($arguments);
- if (t1.$index($arguments, 0).get$isVar())
- return K._functionString($name, $arguments);
- else if (t1.$index($arguments, 1).get$isVar()) {
- first = t1.$index($arguments, 0);
- if (first instanceof K.SassColor) {
- t2 = $name + "(" + H.S(first.get$red()) + ", " + H.S(first.get$green()) + ", " + H.S(first.get$blue()) + ", ";
- t1 = t1.$index($arguments, 1);
- t1.toString;
- return new D.SassString(t2 + N.serializeValue(t1, false, true) + ")", false);
- } else
- return K._functionString($name, $arguments);
- } else if (t1.$index($arguments, 1).get$isSpecialNumber()) {
- color = t1.$index($arguments, 0).assertColor$1("color");
- t2 = $name + "(" + H.S(color.get$red()) + ", " + H.S(color.get$green()) + ", " + H.S(color.get$blue()) + ", ";
- t1 = t1.$index($arguments, 1);
- t1.toString;
- return new D.SassString(t2 + N.serializeValue(t1, false, true) + ")", false);
- }
- return t1.$index($arguments, 0).assertColor$1("color").changeAlpha$1(K._percentageOrUnitless(t1.$index($arguments, 1).assertNumber$1("alpha"), 1, "alpha"));
- },
- _hsl: function($name, $arguments) {
- var t2, hue, saturation, lightness, t3,
- t1 = J.getInterceptor$asx($arguments),
- alpha = t1.get$length($arguments) > 3 ? t1.$index($arguments, 3) : null;
- if (!t1.$index($arguments, 0).get$isSpecialNumber())
- if (!t1.$index($arguments, 1).get$isSpecialNumber())
- if (!t1.$index($arguments, 2).get$isSpecialNumber()) {
- t2 = alpha == null ? null : alpha.get$isSpecialNumber();
- t2 = t2 === true;
- } else
- t2 = true;
- else
- t2 = true;
- else
- t2 = true;
- if (t2)
- return K._functionString($name, $arguments);
- hue = t1.$index($arguments, 0).assertNumber$1("hue");
- saturation = t1.$index($arguments, 1).assertNumber$1("saturation");
- lightness = t1.$index($arguments, 2).assertNumber$1("lightness");
- t1 = J.clamp$2$n(saturation.value, 0, 100);
- t2 = J.clamp$2$n(lightness.value, 0, 100);
- t3 = alpha == null ? null : K._percentageOrUnitless(alpha.assertNumber$1("alpha"), 1, "alpha");
- return K.SassColor$hsl(hue.value, t1, t2, t3);
- },
- _parseChannels: function($name, argumentNames, channels) {
- var isCommaSeparated, isBracketed, buffer, t1, list, maybeSlashSeparated, t2, t3,
- _s17_ = "$channels must be",
- _s32_ = "$channels must be an unbracketed";
- if (channels.get$isVar())
- return K._functionString($name, H.setRuntimeTypeInfo([channels], [F.Value]));
- isCommaSeparated = channels.get$separator() === C.ListSeparator_comma;
- isBracketed = channels.get$hasBrackets();
- if (isCommaSeparated || isBracketed) {
- buffer = new P.StringBuffer(_s17_);
- if (isBracketed) {
- buffer._contents = _s32_;
- t1 = _s32_;
- } else
- t1 = _s17_;
- if (isCommaSeparated) {
- t1 += isBracketed ? "," : " a";
- buffer._contents = t1;
- t1 = buffer._contents = t1 + " space-separated";
- }
- buffer._contents = t1 + " list.";
- throw H.wrapException(E.SassScriptException$(buffer.toString$0(0)));
- }
- list = channels.get$asList();
- t1 = list.length;
- if (t1 > 3)
- throw H.wrapException(E.SassScriptException$("Only 3 elements allowed, but " + t1 + " were passed."));
- else if (t1 < 3) {
- if (!C.JSArray_methods.any$1(list, new K._parseChannels_closure()))
- if (list.length !== 0) {
- t1 = C.JSArray_methods.get$last(list);
- if (t1 instanceof D.SassString)
- if (t1.hasQuotes) {
- t1 = t1.text;
- t1 = B.startsWithIgnoreCase(t1, "var(") && J.contains$1$asx(t1, "/");
- } else
- t1 = false;
- else
- t1 = false;
- } else
- t1 = false;
- else
- t1 = true;
- if (t1)
- return K._functionString($name, H.setRuntimeTypeInfo([channels], [F.Value]));
- else
- throw H.wrapException(E.SassScriptException$("Missing element " + argumentNames[list.length] + "."));
- }
- maybeSlashSeparated = list[2];
- t1 = J.getInterceptor$(maybeSlashSeparated);
- if (!!t1.$isSassNumber && maybeSlashSeparated.asSlash != null) {
- t1 = list[0];
- t2 = list[1];
- t3 = maybeSlashSeparated.asSlash;
- return H.setRuntimeTypeInfo([t1, t2, t3.item1, t3.item2], [F.Value]);
- } else if (!!t1.$isSassString && !maybeSlashSeparated.hasQuotes && J.contains$1$asx(maybeSlashSeparated.text, "/"))
- return K._functionString($name, H.setRuntimeTypeInfo([channels], [F.Value]));
- else
- return list;
- },
- _percentageOrUnitless: function(number, max, $name) {
- var value;
- if (!(number.numeratorUnits.length !== 0 || number.denominatorUnits.length !== 0))
- value = number.value;
- else if (number.hasUnit$1("%"))
- value = max * number.value / 100;
- else
- throw H.wrapException(E.SassScriptException$("$" + $name + ": Expected " + number.toString$0(0) + ' to have no units or "%".'));
- return J.clamp$2$n(value, 0, max);
- },
- _mixColors: function(color1, color2, weight) {
- var weightScale = weight.valueInRange$3(0, 100, "weight") / 100,
- normalizedWeight = weightScale * 2 - 1,
- t1 = color1.alpha,
- t2 = color2.alpha,
- alphaDistance = t1 - t2,
- t3 = normalizedWeight * alphaDistance,
- weight1 = ((t3 === -1 ? normalizedWeight : (normalizedWeight + alphaDistance) / (1 + t3)) + 1) / 2,
- weight2 = 1 - weight1;
- return K.SassColor$rgb(T.fuzzyRound(color1.get$red() * weight1 + color2.get$red() * weight2), T.fuzzyRound(color1.get$green() * weight1 + color2.get$green() * weight2), T.fuzzyRound(color1.get$blue() * weight1 + color2.get$blue() * weight2), t1 * weightScale + t2 * (1 - weightScale), null);
- },
- _opacify: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments),
- color = t1.$index($arguments, 0).assertColor$1("color");
- return color.changeAlpha$1(C.JSNumber_methods.clamp$2(color.alpha + t1.$index($arguments, 1).assertNumber$1("amount").valueInRange$3(0, 1, "amount"), 0, 1));
- },
- _transparentize: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments),
- color = t1.$index($arguments, 0).assertColor$1("color");
- return color.changeAlpha$1(C.JSNumber_methods.clamp$2(color.alpha - t1.$index($arguments, 1).assertNumber$1("amount").valueInRange$3(0, 1, "amount"), 0, 1));
- },
- _function4: function($name, $arguments, callback) {
- var t1 = S.SpanScanner$("@function " + $name + "(" + $arguments + ") {", "sass:color");
- return new Q.BuiltInCallable($name, H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), t1, C.StderrLogger_false).parseArgumentDeclaration$0(), callback, [B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}])], [[S.Tuple2, B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}]]));
- },
- closure43: function closure43() {
- },
- closure44: function closure44() {
- },
- closure45: function closure45() {
- },
- closure46: function closure46() {
- },
- closure47: function closure47() {
- },
- closure48: function closure48() {
- },
- closure49: function closure49() {
- },
- closure50: function closure50() {
- },
- closure51: function closure51() {
- },
- closure52: function closure52() {
- },
- closure53: function closure53() {
- },
- closure54: function closure54() {
- },
- closure55: function closure55() {
- },
- closure56: function closure56() {
- },
- closure57: function closure57() {
- },
- closure58: function closure58() {
- },
- closure59: function closure59() {
- },
- closure60: function closure60() {
- },
- closure61: function closure61() {
- },
- closure62: function closure62() {
- },
- closure63: function closure63() {
- },
- closure64: function closure64() {
- },
- closure65: function closure65() {
- },
- closure66: function closure66() {
- },
- closure67: function closure67() {
- },
- closure68: function closure68() {
- },
- _closure10: function _closure10() {
- },
- closure69: function closure69() {
- },
- closure96: function closure96() {
- },
- closure97: function closure97() {
- },
- closure98: function closure98() {
- },
- closure99: function closure99() {
- },
- _closure12: function _closure12() {
- },
- closure100: function closure100() {
- },
- closure83: function closure83() {
- },
- closure82: function closure82() {
- },
- closure81: function closure81() {
- },
- closure80: function closure80() {
- },
- closure79: function closure79() {
- },
- closure78: function closure78() {
- },
- closure77: function closure77() {
- },
- closure76: function closure76() {
- },
- closure74: function closure74() {
- },
- closure_getInRange0: function closure_getInRange0(t0) {
- this.keywords = t0;
- },
- _closure9: function _closure9() {
- },
- closure73: function closure73() {
- },
- closure_getScale: function closure_getScale(t0) {
- this.keywords = t0;
- },
- closure_scaleValue: function closure_scaleValue() {
- },
- _closure8: function _closure8() {
- },
- closure72: function closure72() {
- },
- closure_getInRange: function closure_getInRange(t0) {
- this.keywords = t0;
- },
- _closure7: function _closure7() {
- },
- closure75: function closure75() {
- },
- closure_hexString: function closure_hexString() {
- },
- _functionString_closure: function _functionString_closure() {
- },
- _removedColorFunction_closure: function _removedColorFunction_closure(t0, t1, t2) {
- this.name = t0;
- this.argument = t1;
- this.negative = t2;
- },
- _parseChannels_closure: function _parseChannels_closure() {
- },
- _fuzzyRoundIfZero: function(number) {
- if (!(Math.abs(number - 0) < $.$get$epsilon()))
- return number;
- return C.JSNumber_methods.get$isNegative(number) ? -0.0 : 0;
- },
- _coerceToRad: function(number) {
- var error, t1, t2, exception;
- try {
- t1 = [P.String];
- t2 = H.setRuntimeTypeInfo(["rad"], t1);
- t1 = H.setRuntimeTypeInfo([], t1);
- t2 = T.SassNumber$withUnits(number.valueInUnits$2(t2, t1), t1, t2);
- return t2;
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (t1 instanceof E.SassScriptException) {
- error = t1;
- if (!C.JSString_methods.startsWith$1(error.message, "Incompatible units"))
- throw exception;
- throw H.wrapException(E.SassScriptException$("$number: Expected " + number.toString$0(0) + " to be an angle."));
- } else
- throw exception;
- }
- },
- _numberFunction: function($name, transform) {
- var t1 = S.SpanScanner$("@function " + $name + "($number) {", "sass:math");
- return new Q.BuiltInCallable($name, H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), t1, C.StderrLogger_false).parseArgumentDeclaration$0(), new K._numberFunction_closure(transform), [B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}])], [[S.Tuple2, B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}]]));
- },
- _function1: function($name, $arguments, callback) {
- var t1 = S.SpanScanner$("@function " + $name + "(" + $arguments + ") {", "sass:math");
- return new Q.BuiltInCallable($name, H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), t1, C.StderrLogger_false).parseArgumentDeclaration$0(), callback, [B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}])], [[S.Tuple2, B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}]]));
- },
- closure25: function closure25() {
- },
- closure91: function closure91() {
- },
- closure24: function closure24() {
- },
- closure23: function closure23() {
- },
- closure22: function closure22() {
- },
- closure26: function closure26() {
- },
- closure89: function closure89() {
- },
- _closure11: function _closure11() {
- },
- closure88: function closure88() {
- },
- closure87: function closure87() {
- },
- closure85: function closure85() {
- },
- closure95: function closure95() {
- },
- closure94: function closure94() {
- },
- closure93: function closure93() {
- },
- closure92: function closure92() {
- },
- closure90: function closure90() {
- },
- closure86: function closure86() {
- },
- closure84: function closure84() {
- },
- closure18: function closure18() {
- },
- closure17: function closure17() {
- },
- closure19: function closure19() {
- },
- closure21: function closure21() {
- },
- closure20: function closure20() {
- },
- _numberFunction_closure: function _numberFunction_closure(t0) {
- this.transform = t0;
- },
- _NodeSassColor: function _NodeSassColor() {
- },
- closure131: function closure131() {
- },
- closure132: function closure132() {
- },
- closure133: function closure133() {
- },
- closure134: function closure134() {
- },
- closure135: function closure135() {
- },
- closure136: function closure136() {
- },
- closure137: function closure137() {
- },
- closure138: function closure138() {
- },
- closure139: function closure139() {
- },
- closure140: function closure140() {
- },
- LimitedMapView$safelist: function(_map, safelist, $K, $V) {
- return new K.LimitedMapView(_map, safelist._base.intersection$1(new M.MapKeySet(_map, [P.Object])), [$K, $V]);
- },
- LimitedMapView$blocklist: function(_map, blocklist, $K, $V) {
- var t2, key,
- t1 = P.LinkedHashSet_LinkedHashSet($K);
- for (t2 = J.get$iterator$ax(_map.get$keys()); t2.moveNext$0();) {
- key = t2.get$current(t2);
- if (!blocklist.contains$1(0, key))
- t1.add$1(0, key);
- }
- return new K.LimitedMapView(_map, t1, [$K, $V]);
- },
- LimitedMapView: function LimitedMapView(t0, t1, t2) {
- this._limited_map_view$_map = t0;
- this._limited_map_view$_keys = t1;
- this.$ti = t2;
- },
- SassColor$rgb: function(_red, _green, _blue, alpha, originalSpan) {
- var t1 = new K.SassColor(_red, _green, _blue, null, null, null, alpha == null ? 1 : T.fuzzyAssertRange(alpha, 0, 1, "alpha"), originalSpan);
- P.RangeError_checkValueInInterval(t1.get$red(), 0, 255, "red");
- P.RangeError_checkValueInInterval(t1.get$green(), 0, 255, "green");
- P.RangeError_checkValueInInterval(t1.get$blue(), 0, 255, "blue");
- return t1;
- },
- SassColor$hsl: function(hue, saturation, lightness, alpha) {
- var _null = null,
- t1 = C.JSNumber_methods.$mod(hue, 360),
- t2 = T.fuzzyAssertRange(saturation, 0, 100, "saturation"),
- t3 = T.fuzzyAssertRange(lightness, 0, 100, "lightness");
- return new K.SassColor(_null, _null, _null, t1, t2, t3, alpha == null ? 1 : T.fuzzyAssertRange(alpha, 0, 1, "alpha"), _null);
- },
- SassColor: function SassColor(t0, t1, t2, t3, t4, t5, t6, t7) {
- var _ = this;
- _._red = t0;
- _._green = t1;
- _._blue = t2;
- _._hue = t3;
- _._saturation = t4;
- _._lightness = t5;
- _.alpha = t6;
- _.originalSpan = t7;
- },
- UnicodeGlyphSet: function UnicodeGlyphSet() {
- }
- },
- R = {ModifiableCssComment: function ModifiableCssComment(t0, t1) {
- var _ = this;
- _.text = t0;
- _.span = t1;
- _._indexInParent = _._parent = null;
- _.isGroupEnd = false;
- },
- ImportCache$: function(importers, loadPaths, logger) {
- var t1 = R.ImportCache__toImporters(importers, loadPaths, null),
- t2 = logger == null ? C.StderrLogger_false : logger,
- t3 = P.Uri;
- return new R.ImportCache(t1, t2, P.LinkedHashMap_LinkedHashMap$_empty([S.Tuple2, P.Uri, P.bool], [S.Tuple3, M.Importer, P.Uri, P.Uri]), P.LinkedHashMap_LinkedHashMap$_empty(t3, V.Stylesheet), P.LinkedHashMap_LinkedHashMap$_empty(t3, E.ImporterResult));
- },
- ImportCache$none: function(logger) {
- var t1 = logger == null ? C.StderrLogger_false : logger,
- t2 = P.Uri;
- return new R.ImportCache(C.List_empty10, t1, P.LinkedHashMap_LinkedHashMap$_empty([S.Tuple2, P.Uri, P.bool], [S.Tuple3, M.Importer, P.Uri, P.Uri]), P.LinkedHashMap_LinkedHashMap$_empty(t2, V.Stylesheet), P.LinkedHashMap_LinkedHashMap$_empty(t2, E.ImporterResult));
- },
- ImportCache__toImporters: function(importers, loadPaths, packageResolver) {
- var _i, t2, t3, path, _null = null,
- sassPath = H.stringTypeCast(J.get$env$x(self.process).SASS_PATH),
- t1 = H.setRuntimeTypeInfo([], [M.Importer]);
- for (_i = 0; false; ++_i)
- t1.push(importers[_i]);
- if (loadPaths != null)
- for (t2 = J.get$iterator$ax(loadPaths); t2.moveNext$0();) {
- t3 = t2.get$current(t2);
- t1.push(new F.FilesystemImporter($.$get$context().absolute$7(t3, _null, _null, _null, _null, _null, _null)));
- }
- if (sassPath != null) {
- t2 = sassPath.split(J.$eq$(J.get$platform$x(self.process), "win32") ? ";" : ":");
- t3 = t2.length;
- _i = 0;
- for (; _i < t3; ++_i) {
- path = t2[_i];
- t1.push(new F.FilesystemImporter($.$get$context().absolute$7(path, _null, _null, _null, _null, _null, _null)));
- }
- }
- return t1;
- },
- ImportCache: function ImportCache(t0, t1, t2, t3, t4) {
- var _ = this;
- _._importers = t0;
- _._import_cache$_logger = t1;
- _._canonicalizeCache = t2;
- _._import_cache$_importCache = t3;
- _._resultsCache = t4;
- },
- ImportCache_canonicalize_closure: function ImportCache_canonicalize_closure(t0, t1, t2) {
- this.$this = t0;
- this.url = t1;
- this.forImport = t2;
- },
- ImportCache__canonicalize_closure: function ImportCache__canonicalize_closure(t0, t1) {
- this.importer = t0;
- this.url = t1;
- },
- ImportCache_importCanonical_closure: function ImportCache_importCanonical_closure(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.importer = t1;
- _.canonicalUrl = t2;
- _.originalUrl = t3;
- },
- ImportCache_humanize_closure: function ImportCache_humanize_closure(t0) {
- this.canonicalUrl = t0;
- },
- ImportCache_humanize_closure0: function ImportCache_humanize_closure0() {
- },
- ImportCache_humanize_closure1: function ImportCache_humanize_closure1() {
- },
- ForwardedModuleView$: function(_inner, _rule, $T) {
- var t5,
- t1 = _rule.prefix,
- t2 = _rule.shownVariables,
- t3 = _rule.hiddenVariables,
- t4 = R.ForwardedModuleView__forwardedMap(_inner.get$variables(), t1, t2, t3, F.Value);
- t2 = _inner.get$variableNodes() == null ? null : R.ForwardedModuleView__forwardedMap(_inner.get$variableNodes(), t1, t2, t3, B.AstNode);
- t3 = _rule.shownMixinsAndFunctions;
- t5 = _rule.hiddenMixinsAndFunctions;
- return new R.ForwardedModuleView(_inner, _rule, t4, t2, R.ForwardedModuleView__forwardedMap(_inner.get$functions(_inner), t1, t3, t5, $T), R.ForwardedModuleView__forwardedMap(_inner.get$mixins(), t1, t3, t5, $T), [$T]);
- },
- ForwardedModuleView__forwardedMap: function(map, prefix, safelist, blocklist, $V) {
- var t2,
- t1 = prefix == null;
- if (t1)
- if (safelist == null)
- if (blocklist != null) {
- t2 = blocklist._base;
- t2 = t2.get$isEmpty(t2);
- } else
- t2 = true;
- else
- t2 = false;
- else
- t2 = false;
- if (t2)
- return map;
- if (!t1)
- map = new F.PrefixedMapView(map, prefix, [$V]);
- if (safelist != null)
- map = K.LimitedMapView$safelist(map, safelist, P.String, $V);
- else {
- if (blocklist != null) {
- t1 = blocklist._base;
- t1 = t1.get$isNotEmpty(t1);
- } else
- t1 = false;
- if (t1)
- map = K.LimitedMapView$blocklist(map, blocklist, P.String, $V);
- }
- return map;
- },
- ForwardedModuleView: function ForwardedModuleView(t0, t1, t2, t3, t4, t5, t6) {
- var _ = this;
- _._forwarded_view$_inner = t0;
- _._rule = t1;
- _.variables = t2;
- _.variableNodes = t3;
- _.functions = t4;
- _.mixins = t5;
- _.$ti = t6;
- },
- RenderOptions: function RenderOptions() {
- },
- UnprefixedMapView: function UnprefixedMapView(t0, t1, t2) {
- this._unprefixed_map_view$_map = t0;
- this._unprefixed_map_view$_prefix = t1;
- this.$ti = t2;
- },
- _UnprefixedKeys: function _UnprefixedKeys(t0) {
- this._unprefixed_map_view$_view = t0;
- },
- _UnprefixedKeys_iterator_closure: function _UnprefixedKeys_iterator_closure(t0) {
- this.$this = t0;
- },
- _UnprefixedKeys_iterator_closure0: function _UnprefixedKeys_iterator_closure0(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor$: function(functions, importCache, logger, nodeImporter, sourceMap) {
- var t6, t7,
- t1 = P.String,
- t2 = P.Uri,
- t3 = [G.Module, D.Callable],
- t4 = B.AstNode,
- t5 = H.setRuntimeTypeInfo([], [[S.Tuple2, P.String, B.AstNode]]);
- if (nodeImporter == null)
- t6 = importCache == null ? R.ImportCache$none(logger) : importCache;
- else
- t6 = null;
- t7 = logger == null ? C.StderrLogger_false : logger;
- t5 = new R._EvaluateVisitor(t6, nodeImporter, P.LinkedHashMap_LinkedHashMap$_empty(t1, D.Callable), P.LinkedHashMap_LinkedHashMap$_empty(t2, t3), P.LinkedHashMap_LinkedHashMap$_empty(t2, t3), P.LinkedHashMap_LinkedHashMap$_empty(t2, t4), t7, sourceMap, O.Environment$(sourceMap), P.LinkedHashSet_LinkedHashSet$_empty(t1), P.LinkedHashMap_LinkedHashMap$_empty(t2, t4), t5, C.Configuration_Map_empty_null_true);
- t5._EvaluateVisitor$5$functions$importCache$logger$nodeImporter$sourceMap(functions, importCache, logger, nodeImporter, sourceMap);
- return t5;
- },
- _ArgumentResults$: function(positional, named, separator, namedNodes, positionalNodes) {
- return new R._ArgumentResults(positional, positionalNodes, named, namedNodes, separator);
- },
- Evaluator: function Evaluator(t0, t1) {
- this._visitor = t0;
- this._importer = t1;
- },
- _EvaluateVisitor: function _EvaluateVisitor(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) {
- var _ = this;
- _._importCache = t0;
- _._nodeImporter = t1;
- _._builtInFunctions = t2;
- _._builtInModules = t3;
- _._modules = t4;
- _._moduleNodes = t5;
- _._logger = t6;
- _._sourceMap = t7;
- _._evaluate$_environment = t8;
- _._declarationName = _._evaluate$_parent = _._mediaQueries = _._styleRule = null;
- _._member = "root stylesheet";
- _._importSpan = _._callableNode = null;
- _._inKeyframes = _._atRootExcludingStyleRule = _._inUnknownAtRule = _._inFunction = false;
- _._includedFiles = t9;
- _._activeModules = t10;
- _._stack = t11;
- _._extender = _._outOfOrderImports = _._endOfImports = _._root = _._stylesheet = _._importer = null;
- _._configuration = t12;
- },
- _EvaluateVisitor_closure: function _EvaluateVisitor_closure(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_closure0: function _EvaluateVisitor_closure0(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_closure1: function _EvaluateVisitor_closure1(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_closure2: function _EvaluateVisitor_closure2(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_closure3: function _EvaluateVisitor_closure3(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_closure4: function _EvaluateVisitor_closure4(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_closure5: function _EvaluateVisitor_closure5(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_closure6: function _EvaluateVisitor_closure6(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor__closure3: function _EvaluateVisitor__closure3(t0, t1, t2) {
- this.$this = t0;
- this.name = t1;
- this.module = t2;
- },
- _EvaluateVisitor_closure7: function _EvaluateVisitor_closure7(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor__closure1: function _EvaluateVisitor__closure1() {
- },
- _EvaluateVisitor__closure2: function _EvaluateVisitor__closure2() {
- },
- _EvaluateVisitor_closure8: function _EvaluateVisitor_closure8(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor__closure: function _EvaluateVisitor__closure(t0, t1) {
- this.values = t0;
- this.span = t1;
- },
- _EvaluateVisitor__closure0: function _EvaluateVisitor__closure0(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_run_closure: function _EvaluateVisitor_run_closure(t0, t1, t2) {
- this.$this = t0;
- this.node = t1;
- this.importer = t2;
- },
- _EvaluateVisitor_runExpression_closure: function _EvaluateVisitor_runExpression_closure(t0, t1, t2) {
- this.$this = t0;
- this.importer = t1;
- this.expression = t2;
- },
- _EvaluateVisitor_runExpression__closure: function _EvaluateVisitor_runExpression__closure(t0, t1) {
- this.$this = t0;
- this.expression = t1;
- },
- _EvaluateVisitor_runStatement_closure: function _EvaluateVisitor_runStatement_closure(t0, t1, t2) {
- this.$this = t0;
- this.importer = t1;
- this.statement = t2;
- },
- _EvaluateVisitor_runStatement__closure: function _EvaluateVisitor_runStatement__closure(t0, t1) {
- this.$this = t0;
- this.statement = t1;
- },
- _EvaluateVisitor__withWarnCallback_closure: function _EvaluateVisitor__withWarnCallback_closure(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor__loadModule_closure: function _EvaluateVisitor__loadModule_closure(t0, t1, t2, t3, t4, t5, t6) {
- var _ = this;
- _.$this = t0;
- _.url = t1;
- _.nodeWithSpan = t2;
- _.baseUrl = t3;
- _.namesInErrors = t4;
- _.configuration = t5;
- _.callback = t6;
- },
- _EvaluateVisitor__execute_closure: function _EvaluateVisitor__execute_closure(t0, t1, t2, t3, t4, t5) {
- var _ = this;
- _._box_0 = t0;
- _.$this = t1;
- _.importer = t2;
- _.stylesheet = t3;
- _.extender = t4;
- _.configuration = t5;
- },
- _EvaluateVisitor__combineCss_closure: function _EvaluateVisitor__combineCss_closure() {
- },
- _EvaluateVisitor__combineCss_closure0: function _EvaluateVisitor__combineCss_closure0(t0) {
- this.selectors = t0;
- },
- _EvaluateVisitor__combineCss_closure1: function _EvaluateVisitor__combineCss_closure1() {
- },
- _EvaluateVisitor__extendModules_closure: function _EvaluateVisitor__extendModules_closure(t0) {
- this.originalSelectors = t0;
- },
- _EvaluateVisitor__extendModules_closure0: function _EvaluateVisitor__extendModules_closure0() {
- },
- _EvaluateVisitor__topologicalModules_visitModule: function _EvaluateVisitor__topologicalModules_visitModule(t0, t1) {
- this.seen = t0;
- this.sorted = t1;
- },
- _EvaluateVisitor_visitAtRootRule_closure: function _EvaluateVisitor_visitAtRootRule_closure(t0, t1) {
- this.$this = t0;
- this.resolved = t1;
- },
- _EvaluateVisitor_visitAtRootRule_closure0: function _EvaluateVisitor_visitAtRootRule_closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitAtRootRule_closure1: function _EvaluateVisitor_visitAtRootRule_closure1(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor__scopeForAtRoot_closure: function _EvaluateVisitor__scopeForAtRoot_closure(t0, t1, t2) {
- this.$this = t0;
- this.newParent = t1;
- this.node = t2;
- },
- _EvaluateVisitor__scopeForAtRoot_closure0: function _EvaluateVisitor__scopeForAtRoot_closure0(t0, t1) {
- this.$this = t0;
- this.innerScope = t1;
- },
- _EvaluateVisitor__scopeForAtRoot_closure1: function _EvaluateVisitor__scopeForAtRoot_closure1(t0, t1) {
- this.$this = t0;
- this.innerScope = t1;
- },
- _EvaluateVisitor__scopeForAtRoot__closure: function _EvaluateVisitor__scopeForAtRoot__closure(t0, t1) {
- this.innerScope = t0;
- this.callback = t1;
- },
- _EvaluateVisitor__scopeForAtRoot_closure2: function _EvaluateVisitor__scopeForAtRoot_closure2(t0, t1) {
- this.$this = t0;
- this.innerScope = t1;
- },
- _EvaluateVisitor__scopeForAtRoot_closure3: function _EvaluateVisitor__scopeForAtRoot_closure3() {
- },
- _EvaluateVisitor__scopeForAtRoot_closure4: function _EvaluateVisitor__scopeForAtRoot_closure4(t0, t1) {
- this.$this = t0;
- this.innerScope = t1;
- },
- _EvaluateVisitor_visitContentRule_closure: function _EvaluateVisitor_visitContentRule_closure(t0, t1) {
- this.$this = t0;
- this.content = t1;
- },
- _EvaluateVisitor_visitDeclaration_closure: function _EvaluateVisitor_visitDeclaration_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitEachRule_closure: function _EvaluateVisitor_visitEachRule_closure(t0, t1, t2) {
- this.$this = t0;
- this.node = t1;
- this.nodeWithSpan = t2;
- },
- _EvaluateVisitor_visitEachRule_closure0: function _EvaluateVisitor_visitEachRule_closure0(t0, t1, t2) {
- this.$this = t0;
- this.node = t1;
- this.nodeWithSpan = t2;
- },
- _EvaluateVisitor_visitEachRule_closure1: function _EvaluateVisitor_visitEachRule_closure1(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.list = t1;
- _.setVariables = t2;
- _.node = t3;
- },
- _EvaluateVisitor_visitEachRule__closure: function _EvaluateVisitor_visitEachRule__closure(t0, t1, t2) {
- this.$this = t0;
- this.setVariables = t1;
- this.node = t2;
- },
- _EvaluateVisitor_visitEachRule___closure: function _EvaluateVisitor_visitEachRule___closure(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_visitExtendRule_closure: function _EvaluateVisitor_visitExtendRule_closure(t0, t1) {
- this.$this = t0;
- this.targetText = t1;
- },
- _EvaluateVisitor_visitAtRule_closure: function _EvaluateVisitor_visitAtRule_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitAtRule__closure: function _EvaluateVisitor_visitAtRule__closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitAtRule_closure0: function _EvaluateVisitor_visitAtRule_closure0() {
- },
- _EvaluateVisitor_visitForRule_closure: function _EvaluateVisitor_visitForRule_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitForRule_closure0: function _EvaluateVisitor_visitForRule_closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitForRule_closure1: function _EvaluateVisitor_visitForRule_closure1(t0, t1) {
- this.fromNumber = t0;
- this.toNumber = t1;
- },
- _EvaluateVisitor_visitForRule_closure2: function _EvaluateVisitor_visitForRule_closure2(t0) {
- this.toNumber = t0;
- },
- _EvaluateVisitor_visitForRule_closure3: function _EvaluateVisitor_visitForRule_closure3(t0, t1, t2, t3, t4) {
- var _ = this;
- _._box_0 = t0;
- _.$this = t1;
- _.node = t2;
- _.from = t3;
- _.direction = t4;
- },
- _EvaluateVisitor_visitForRule__closure: function _EvaluateVisitor_visitForRule__closure(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_visitForwardRule_closure: function _EvaluateVisitor_visitForwardRule_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitForwardRule_closure0: function _EvaluateVisitor_visitForwardRule_closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor__assertConfigurationIsEmpty_closure: function _EvaluateVisitor__assertConfigurationIsEmpty_closure(t0, t1, t2) {
- this.$this = t0;
- this.only = t1;
- this.nameInError = t2;
- },
- _EvaluateVisitor_visitIfRule_closure: function _EvaluateVisitor_visitIfRule_closure(t0, t1) {
- this._box_0 = t0;
- this.$this = t1;
- },
- _EvaluateVisitor_visitIfRule__closure: function _EvaluateVisitor_visitIfRule__closure(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor__visitDynamicImport_closure: function _EvaluateVisitor__visitDynamicImport_closure(t0, t1) {
- this.$this = t0;
- this.$import = t1;
- },
- _EvaluateVisitor__visitDynamicImport__closure: function _EvaluateVisitor__visitDynamicImport__closure(t0, t1, t2, t3, t4) {
- var _ = this;
- _._box_0 = t0;
- _.$this = t1;
- _.importer = t2;
- _.stylesheet = t3;
- _.environment = t4;
- },
- _EvaluateVisitor_visitIncludeRule_closure: function _EvaluateVisitor_visitIncludeRule_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitIncludeRule_closure0: function _EvaluateVisitor_visitIncludeRule_closure0(t0) {
- this.node = t0;
- },
- _EvaluateVisitor_visitIncludeRule_closure1: function _EvaluateVisitor_visitIncludeRule_closure1(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.contentCallable = t1;
- _.mixin = t2;
- _.nodeWithSpan = t3;
- },
- _EvaluateVisitor_visitIncludeRule__closure: function _EvaluateVisitor_visitIncludeRule__closure(t0, t1, t2) {
- this.$this = t0;
- this.mixin = t1;
- this.nodeWithSpan = t2;
- },
- _EvaluateVisitor_visitIncludeRule___closure: function _EvaluateVisitor_visitIncludeRule___closure(t0, t1, t2) {
- this.$this = t0;
- this.mixin = t1;
- this.nodeWithSpan = t2;
- },
- _EvaluateVisitor_visitIncludeRule____closure: function _EvaluateVisitor_visitIncludeRule____closure(t0, t1) {
- this.$this = t0;
- this.statement = t1;
- },
- _EvaluateVisitor_visitMediaRule_closure: function _EvaluateVisitor_visitMediaRule_closure(t0, t1, t2, t3) {
- var _ = this;
- _.$this = t0;
- _.mergedQueries = t1;
- _.queries = t2;
- _.node = t3;
- },
- _EvaluateVisitor_visitMediaRule__closure: function _EvaluateVisitor_visitMediaRule__closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitMediaRule___closure: function _EvaluateVisitor_visitMediaRule___closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitMediaRule_closure0: function _EvaluateVisitor_visitMediaRule_closure0(t0) {
- this.mergedQueries = t0;
- },
- _EvaluateVisitor__visitMediaQueries_closure: function _EvaluateVisitor__visitMediaQueries_closure(t0, t1) {
- this.$this = t0;
- this.resolved = t1;
- },
- _EvaluateVisitor_visitStyleRule_closure: function _EvaluateVisitor_visitStyleRule_closure(t0, t1) {
- this.$this = t0;
- this.selectorText = t1;
- },
- _EvaluateVisitor_visitStyleRule_closure0: function _EvaluateVisitor_visitStyleRule_closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitStyleRule_closure1: function _EvaluateVisitor_visitStyleRule_closure1() {
- },
- _EvaluateVisitor_visitStyleRule_closure2: function _EvaluateVisitor_visitStyleRule_closure2(t0, t1) {
- this.$this = t0;
- this.selectorText = t1;
- },
- _EvaluateVisitor_visitStyleRule_closure3: function _EvaluateVisitor_visitStyleRule_closure3(t0, t1) {
- this._box_0 = t0;
- this.$this = t1;
- },
- _EvaluateVisitor_visitStyleRule_closure4: function _EvaluateVisitor_visitStyleRule_closure4(t0, t1, t2) {
- this.$this = t0;
- this.rule = t1;
- this.node = t2;
- },
- _EvaluateVisitor_visitStyleRule__closure: function _EvaluateVisitor_visitStyleRule__closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitStyleRule_closure5: function _EvaluateVisitor_visitStyleRule_closure5() {
- },
- _EvaluateVisitor_visitSupportsRule_closure: function _EvaluateVisitor_visitSupportsRule_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitSupportsRule__closure: function _EvaluateVisitor_visitSupportsRule__closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitSupportsRule_closure0: function _EvaluateVisitor_visitSupportsRule_closure0() {
- },
- _EvaluateVisitor_visitVariableDeclaration_closure: function _EvaluateVisitor_visitVariableDeclaration_closure(t0, t1, t2) {
- this.$this = t0;
- this.node = t1;
- this.override = t2;
- },
- _EvaluateVisitor_visitVariableDeclaration_closure0: function _EvaluateVisitor_visitVariableDeclaration_closure0(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitVariableDeclaration_closure1: function _EvaluateVisitor_visitVariableDeclaration_closure1(t0, t1, t2) {
- this.$this = t0;
- this.node = t1;
- this.value = t2;
- },
- _EvaluateVisitor_visitUseRule_closure: function _EvaluateVisitor_visitUseRule_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitWarnRule_closure: function _EvaluateVisitor_visitWarnRule_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitWhileRule_closure: function _EvaluateVisitor_visitWhileRule_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitWhileRule__closure: function _EvaluateVisitor_visitWhileRule__closure(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_visitBinaryOperationExpression_closure: function _EvaluateVisitor_visitBinaryOperationExpression_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitVariableExpression_closure: function _EvaluateVisitor_visitVariableExpression_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitListExpression_closure: function _EvaluateVisitor_visitListExpression_closure(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_visitFunctionExpression_closure: function _EvaluateVisitor_visitFunctionExpression_closure(t0, t1, t2) {
- this.$this = t0;
- this.node = t1;
- this.plainName = t2;
- },
- _EvaluateVisitor_visitFunctionExpression_closure0: function _EvaluateVisitor_visitFunctionExpression_closure0(t0, t1, t2) {
- this._box_0 = t0;
- this.$this = t1;
- this.node = t2;
- },
- _EvaluateVisitor__runUserDefinedCallable_closure: function _EvaluateVisitor__runUserDefinedCallable_closure(t0, t1, t2, t3, t4) {
- var _ = this;
- _.$this = t0;
- _.callable = t1;
- _.evaluated = t2;
- _.nodeWithSpan = t3;
- _.run = t4;
- },
- _EvaluateVisitor__runUserDefinedCallable__closure: function _EvaluateVisitor__runUserDefinedCallable__closure(t0, t1, t2, t3, t4) {
- var _ = this;
- _.$this = t0;
- _.evaluated = t1;
- _.callable = t2;
- _.nodeWithSpan = t3;
- _.run = t4;
- },
- _EvaluateVisitor__runUserDefinedCallable___closure: function _EvaluateVisitor__runUserDefinedCallable___closure(t0, t1, t2, t3, t4) {
- var _ = this;
- _.$this = t0;
- _.evaluated = t1;
- _.callable = t2;
- _.nodeWithSpan = t3;
- _.run = t4;
- },
- _EvaluateVisitor__runUserDefinedCallable____closure: function _EvaluateVisitor__runUserDefinedCallable____closure() {
- },
- _EvaluateVisitor__runFunctionCallable_closure: function _EvaluateVisitor__runFunctionCallable_closure(t0, t1) {
- this.$this = t0;
- this.callable = t1;
- },
- _EvaluateVisitor__runBuiltInCallable_closure: function _EvaluateVisitor__runBuiltInCallable_closure(t0, t1, t2) {
- this.overload = t0;
- this.evaluated = t1;
- this.namedSet = t2;
- },
- _EvaluateVisitor__runBuiltInCallable_closure0: function _EvaluateVisitor__runBuiltInCallable_closure0() {
- },
- _EvaluateVisitor__evaluateArguments_closure: function _EvaluateVisitor__evaluateArguments_closure(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor__evaluateArguments_closure0: function _EvaluateVisitor__evaluateArguments_closure0(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor__evaluateArguments_closure1: function _EvaluateVisitor__evaluateArguments_closure1(t0, t1, t2) {
- this.named = t0;
- this.namedNodes = t1;
- this.restNodeForSpan = t2;
- },
- _EvaluateVisitor__evaluateMacroArguments_closure: function _EvaluateVisitor__evaluateMacroArguments_closure() {
- },
- _EvaluateVisitor__evaluateMacroArguments_closure0: function _EvaluateVisitor__evaluateMacroArguments_closure0() {
- },
- _EvaluateVisitor__evaluateMacroArguments_closure1: function _EvaluateVisitor__evaluateMacroArguments_closure1(t0) {
- this.named = t0;
- },
- _EvaluateVisitor__evaluateMacroArguments_closure2: function _EvaluateVisitor__evaluateMacroArguments_closure2() {
- },
- _EvaluateVisitor__addRestMap_closure: function _EvaluateVisitor__addRestMap_closure(t0) {
- this.T = t0;
- },
- _EvaluateVisitor__addRestMap_closure0: function _EvaluateVisitor__addRestMap_closure0(t0, t1, t2, t3, t4) {
- var _ = this;
- _._box_0 = t0;
- _.$this = t1;
- _.values = t2;
- _.map = t3;
- _.nodeWithSpan = t4;
- },
- _EvaluateVisitor__verifyArguments_closure: function _EvaluateVisitor__verifyArguments_closure(t0, t1, t2) {
- this.$arguments = t0;
- this.positional = t1;
- this.named = t2;
- },
- _EvaluateVisitor_visitStringExpression_closure: function _EvaluateVisitor_visitStringExpression_closure(t0) {
- this.$this = t0;
- },
- _EvaluateVisitor_visitCssAtRule_closure: function _EvaluateVisitor_visitCssAtRule_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitCssAtRule_closure0: function _EvaluateVisitor_visitCssAtRule_closure0() {
- },
- _EvaluateVisitor_visitCssKeyframeBlock_closure: function _EvaluateVisitor_visitCssKeyframeBlock_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitCssKeyframeBlock_closure0: function _EvaluateVisitor_visitCssKeyframeBlock_closure0() {
- },
- _EvaluateVisitor_visitCssMediaRule_closure: function _EvaluateVisitor_visitCssMediaRule_closure(t0, t1, t2) {
- this.$this = t0;
- this.mergedQueries = t1;
- this.node = t2;
- },
- _EvaluateVisitor_visitCssMediaRule__closure: function _EvaluateVisitor_visitCssMediaRule__closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitCssMediaRule___closure: function _EvaluateVisitor_visitCssMediaRule___closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitCssMediaRule_closure0: function _EvaluateVisitor_visitCssMediaRule_closure0(t0) {
- this.mergedQueries = t0;
- },
- _EvaluateVisitor_visitCssStyleRule_closure: function _EvaluateVisitor_visitCssStyleRule_closure(t0, t1, t2) {
- this.$this = t0;
- this.rule = t1;
- this.node = t2;
- },
- _EvaluateVisitor_visitCssStyleRule__closure: function _EvaluateVisitor_visitCssStyleRule__closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitCssStyleRule_closure0: function _EvaluateVisitor_visitCssStyleRule_closure0() {
- },
- _EvaluateVisitor_visitCssSupportsRule_closure: function _EvaluateVisitor_visitCssSupportsRule_closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitCssSupportsRule__closure: function _EvaluateVisitor_visitCssSupportsRule__closure(t0, t1) {
- this.$this = t0;
- this.node = t1;
- },
- _EvaluateVisitor_visitCssSupportsRule_closure0: function _EvaluateVisitor_visitCssSupportsRule_closure0() {
- },
- _EvaluateVisitor__performInterpolation_closure: function _EvaluateVisitor__performInterpolation_closure(t0, t1) {
- this.$this = t0;
- this.warnForColor = t1;
- },
- _EvaluateVisitor__serialize_closure: function _EvaluateVisitor__serialize_closure(t0, t1) {
- this.value = t0;
- this.quote = t1;
- },
- _EvaluateVisitor__stackTrace_closure: function _EvaluateVisitor__stackTrace_closure(t0) {
- this.$this = t0;
- },
- _ImportedCssVisitor: function _ImportedCssVisitor(t0) {
- this._visitor = t0;
- },
- _ImportedCssVisitor_visitCssAtRule_closure: function _ImportedCssVisitor_visitCssAtRule_closure() {
- },
- _ImportedCssVisitor_visitCssMediaRule_closure: function _ImportedCssVisitor_visitCssMediaRule_closure(t0) {
- this.hasBeenMerged = t0;
- },
- _ImportedCssVisitor_visitCssStyleRule_closure: function _ImportedCssVisitor_visitCssStyleRule_closure() {
- },
- _ImportedCssVisitor_visitCssSupportsRule_closure: function _ImportedCssVisitor_visitCssSupportsRule_closure() {
- },
- _ArgumentResults: function _ArgumentResults(t0, t1, t2, t3, t4) {
- var _ = this;
- _.positional = t0;
- _.positionalNodes = t1;
- _.named = t2;
- _.namedNodes = t3;
- _.separator = t4;
- },
- _collectToList: function(element, soFar, $T) {
- if (soFar == null)
- soFar = H.setRuntimeTypeInfo([], [$T]);
- J.add$1$ax(soFar, element);
- return soFar;
- },
- _debounceAggregate: function(duration, collect, $T, $R) {
- var t1 = {};
- t1.soFar = t1.timer = null;
- t1.shouldClose = false;
- return new L._StreamTransformer(new R._debounceAggregate_closure(t1, duration, collect), new R._debounceAggregate_closure0(t1), H.instantiate1(L.from_handlers__StreamTransformer__defaultHandleError$closure(), $R), [$T, $R]);
- },
- _debounceAggregate_closure: function _debounceAggregate_closure(t0, t1, t2) {
- this._box_0 = t0;
- this.duration = t1;
- this.collect = t2;
- },
- _debounceAggregate__closure: function _debounceAggregate__closure(t0, t1) {
- this._box_0 = t0;
- this.sink = t1;
- },
- _debounceAggregate_closure0: function _debounceAggregate_closure0(t0) {
- this._box_0 = t0;
- }
- },
- T = {Expression: function Expression() {
- }, NumberExpression: function NumberExpression(t0, t1, t2) {
- this.value = t0;
- this.unit = t1;
- this.span = t2;
- }, ParenthesizedExpression: function ParenthesizedExpression(t0, t1) {
- this.expression = t0;
- this.span = t1;
- }, SelectorExpression: function SelectorExpression(t0) {
- this.span = t0;
- }, MixinRule: function MixinRule(t0, t1, t2, t3, t4, t5) {
- var _ = this;
- _.hasContent = t0;
- _.name = t1;
- _.$arguments = t2;
- _.span = t3;
- _.children = t4;
- _.hasDeclarations = t5;
- },
- UseRule$: function(url, namespace, span, configuration) {
- var t1 = new T.UseRule(url, namespace, configuration == null ? C.List_empty7 : P.List_List$unmodifiable(configuration, Z.ConfiguredVariable), span);
- t1.UseRule$4$configuration(url, namespace, span, configuration);
- return t1;
- },
- UseRule: function UseRule(t0, t1, t2, t3) {
- var _ = this;
- _.url = t0;
- _.namespace = t1;
- _.configuration = t2;
- _.span = t3;
- },
- Selector: function Selector() {
- },
- EmptyExtender: function EmptyExtender() {
- },
- _prependParent: function(compound) {
- var t3, _i,
- t1 = compound.components,
- first = C.JSArray_methods.get$first(t1),
- t2 = J.getInterceptor$(first);
- if (!!t2.$isUniversalSelector)
- return;
- if (!!t2.$isTypeSelector) {
- t2 = first.name;
- if (t2.namespace != null)
- return;
- t3 = H.setRuntimeTypeInfo([], [M.SimpleSelector]);
- t3.push(new M.ParentSelector(t2.name));
- for (t1 = H.SubListIterable$(t1, 1, null, H.getTypeArgumentByIndex(t1, 0)), t1 = new H.ListIterator(t1, t1.get$length(t1)); t1.moveNext$0();)
- t3.push(t1.__internal$_current);
- return X.CompoundSelector$(t3);
- } else {
- t2 = H.setRuntimeTypeInfo([], [M.SimpleSelector]);
- t2.push(new M.ParentSelector(null));
- for (t3 = t1.length, _i = 0; _i < t3; ++_i)
- t2.push(t1[_i]);
- return X.CompoundSelector$(t2);
- }
- },
- _function0: function($name, $arguments, callback) {
- var t1 = S.SpanScanner$("@function " + $name + "(" + $arguments + ") {", "sass:selector");
- return new Q.BuiltInCallable($name, H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), t1, C.StderrLogger_false).parseArgumentDeclaration$0(), callback, [B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}])], [[S.Tuple2, B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}]]));
- },
- closure13: function closure13() {
- },
- _closure1: function _closure1() {
- },
- _closure2: function _closure2() {
- },
- closure12: function closure12() {
- },
- _closure: function _closure() {
- },
- _closure0: function _closure0() {
- },
- __closure: function __closure(t0) {
- this.parent = t0;
- },
- closure11: function closure11() {
- },
- closure10: function closure10() {
- },
- closure9: function closure9() {
- },
- closure16: function closure16() {
- },
- closure15: function closure15() {
- },
- _closure3: function _closure3() {
- },
- closure14: function closure14() {
- },
- TrackingLogger: function TrackingLogger(t0) {
- this._tracking$_logger = t0;
- this._emittedDebug = this._emittedWarning = false;
- },
- _parseNumber: function(value, unit) {
- var t1, t2, invalidUnit, operands, numerator, denominator, numeratorUnits, denominatorUnits;
- if (unit == null || unit.length === 0)
- return new T.SassNumber(value, C.List_empty, C.List_empty, null);
- if (!J.contains$1$asx(unit, "*") && !C.JSString_methods.contains$1(unit, "/")) {
- t1 = P.String;
- t2 = H.setRuntimeTypeInfo([unit], [t1]);
- t1 = P.List_List$unmodifiable(t2, t1);
- return new T.SassNumber(value, t1, C.List_empty, null);
- }
- invalidUnit = new P.ArgumentError(true, unit, "unit", "is invalid.");
- operands = unit.split("/");
- t1 = operands.length;
- if (t1 > 2)
- throw H.wrapException(invalidUnit);
- numerator = operands[0];
- denominator = t1 === 1 ? null : operands[1];
- t1 = P.String;
- numeratorUnits = numerator.length === 0 ? H.setRuntimeTypeInfo([], [t1]) : H.setRuntimeTypeInfo(numerator.split("*"), [t1]);
- if (C.JSArray_methods.any$1(numeratorUnits, new T._parseNumber_closure()))
- throw H.wrapException(invalidUnit);
- denominatorUnits = denominator == null ? H.setRuntimeTypeInfo([], [t1]) : H.setRuntimeTypeInfo(denominator.split("*"), [t1]);
- if (C.JSArray_methods.any$1(denominatorUnits, new T._parseNumber_closure0()))
- throw H.wrapException(invalidUnit);
- return T.SassNumber$withUnits(value, denominatorUnits, numeratorUnits);
- },
- _NodeSassNumber: function _NodeSassNumber() {
- },
- closure110: function closure110() {
- },
- closure111: function closure111() {
- },
- closure112: function closure112() {
- },
- closure113: function closure113() {
- },
- closure114: function closure114() {
- },
- closure115: function closure115() {
- },
- _parseNumber_closure: function _parseNumber_closure() {
- },
- _parseNumber_closure0: function _parseNumber_closure0() {
- },
- SelectorParser: function SelectorParser(t0, t1, t2, t3) {
- var _ = this;
- _._allowParent = t0;
- _._allowPlaceholder = t1;
- _.scanner = t2;
- _.logger = t3;
- },
- SelectorParser_parse_closure: function SelectorParser_parse_closure(t0) {
- this.$this = t0;
- },
- SelectorParser_parseCompoundSelector_closure: function SelectorParser_parseCompoundSelector_closure(t0) {
- this.$this = t0;
- },
- SassNumber$: function(value, unit) {
- var t1 = unit == null ? null : H.setRuntimeTypeInfo([unit], [P.String]);
- t1 = t1 == null ? C.List_empty : P.List_List$unmodifiable(t1, P.String);
- return new T.SassNumber(value, t1, C.List_empty, null);
- },
- SassNumber$withUnits: function(value, denominatorUnits, numeratorUnits) {
- var t1 = numeratorUnits == null ? C.List_empty : P.List_List$unmodifiable(numeratorUnits, P.String);
- return new T.SassNumber(value, t1, denominatorUnits == null ? C.List_empty : P.List_List$unmodifiable(denominatorUnits, P.String), null);
- },
- SassNumber: function SassNumber(t0, t1, t2, t3) {
- var _ = this;
- _.value = t0;
- _.numeratorUnits = t1;
- _.denominatorUnits = t2;
- _.asSlash = t3;
- },
- SassNumber_valueInUnits_closure: function SassNumber_valueInUnits_closure(t0, t1, t2) {
- this._box_0 = t0;
- this.$this = t1;
- this.newNumerator = t2;
- },
- SassNumber_valueInUnits_closure0: function SassNumber_valueInUnits_closure0(t0, t1, t2) {
- this.$this = t0;
- this.newNumerators = t1;
- this.newDenominators = t2;
- },
- SassNumber_valueInUnits_closure1: function SassNumber_valueInUnits_closure1(t0, t1, t2) {
- this._box_0 = t0;
- this.$this = t1;
- this.newDenominator = t2;
- },
- SassNumber_valueInUnits_closure2: function SassNumber_valueInUnits_closure2(t0, t1, t2) {
- this.$this = t0;
- this.newNumerators = t1;
- this.newDenominators = t2;
- },
- SassNumber_modulo_closure: function SassNumber_modulo_closure() {
- },
- SassNumber_plus_closure: function SassNumber_plus_closure() {
- },
- SassNumber_minus_closure: function SassNumber_minus_closure() {
- },
- SassNumber__multiplyUnits_closure: function SassNumber__multiplyUnits_closure(t0, t1, t2) {
- this._box_0 = t0;
- this.$this = t1;
- this.numerator = t2;
- },
- SassNumber__multiplyUnits_closure0: function SassNumber__multiplyUnits_closure0(t0, t1) {
- this.newNumerators = t0;
- this.numerator = t1;
- },
- SassNumber__multiplyUnits_closure1: function SassNumber__multiplyUnits_closure1(t0, t1, t2) {
- this._box_0 = t0;
- this.$this = t1;
- this.numerator = t2;
- },
- SassNumber__multiplyUnits_closure2: function SassNumber__multiplyUnits_closure2(t0, t1) {
- this.newNumerators = t0;
- this.numerator = t1;
- },
- SassNumber__areAnyConvertible_closure: function SassNumber__areAnyConvertible_closure(t0, t1) {
- this.$this = t0;
- this.units2 = t1;
- },
- SassNumber__canonicalMultiplier_closure: function SassNumber__canonicalMultiplier_closure() {
- },
- SingleMapping_SingleMapping$fromEntries: function(entries) {
- var lines, t1, t2, urls, t3, files, t4, t5, targetEntries, lineNum, _i, sourceEntry, sourceUrl, t6, urlId, _null = null,
- sourceEntries = P.List_List$from(entries, true, _null);
- C.JSArray_methods.sort$0(sourceEntries);
- lines = H.setRuntimeTypeInfo([], [T.TargetLineEntry]);
- t1 = P.String;
- t2 = P.int;
- urls = P.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
- t3 = Y.SourceFile;
- files = P.LinkedHashMap_LinkedHashMap$_empty(t2, t3);
- for (t4 = sourceEntries.length, t5 = [T.TargetEntry], targetEntries = _null, lineNum = targetEntries, _i = 0; _i < sourceEntries.length; sourceEntries.length === t4 || (0, H.throwConcurrentModificationError)(sourceEntries), ++_i) {
- sourceEntry = sourceEntries[_i];
- if (lineNum == null || sourceEntry.get$target().get$line() > lineNum) {
- lineNum = sourceEntry.get$target().get$line();
- targetEntries = H.setRuntimeTypeInfo([], t5);
- lines.push(new T.TargetLineEntry(lineNum, targetEntries));
- }
- if (sourceEntry.get$source() == null)
- targetEntries.push(new T.TargetEntry(sourceEntry.get$target().get$column(), _null, _null, _null, _null));
- else {
- sourceUrl = sourceEntry.get$source().get$sourceUrl();
- t6 = sourceUrl == null ? "" : sourceUrl.toString$0(0);
- urlId = urls.putIfAbsent$2(t6, new T.SingleMapping_SingleMapping$fromEntries_closure(urls));
- if (sourceEntry.get$source() instanceof Y.FileLocation)
- files.putIfAbsent$2(urlId, new T.SingleMapping_SingleMapping$fromEntries_closure0(sourceEntry));
- sourceEntry.get$identifierName();
- targetEntries.push(new T.TargetEntry(sourceEntry.get$target().get$column(), urlId, sourceEntry.get$source().get$line(), sourceEntry.get$source().get$column(), _null));
- }
- }
- t4 = urls.get$values();
- t3 = H.MappedIterable_MappedIterable(t4, new T.SingleMapping_SingleMapping$fromEntries_closure1(files), H.getRuntimeTypeArgument(t4, "Iterable", 0), t3);
- t3 = P.List_List$from(t3, true, H.getRuntimeTypeArgument(t3, "Iterable", 0));
- t4 = urls.get$keys();
- t4 = P.List_List$from(t4, true, H.getRuntimeTypeArgument(t4, "Iterable", 0));
- t2 = P.LinkedHashMap_LinkedHashMap$_empty(t1, t2).get$keys();
- return new T.SingleMapping(t4, P.List_List$from(t2, true, H.getRuntimeTypeArgument(t2, "Iterable", 0)), t3, lines, _null, P.LinkedHashMap_LinkedHashMap$_empty(t1, _null));
- },
- Mapping: function Mapping() {
- },
- SingleMapping: function SingleMapping(t0, t1, t2, t3, t4, t5) {
- var _ = this;
- _.urls = t0;
- _.names = t1;
- _.files = t2;
- _.lines = t3;
- _.targetUrl = t4;
- _.sourceRoot = null;
- _.extensions = t5;
- },
- SingleMapping_SingleMapping$fromEntries_closure: function SingleMapping_SingleMapping$fromEntries_closure(t0) {
- this.urls = t0;
- },
- SingleMapping_SingleMapping$fromEntries_closure0: function SingleMapping_SingleMapping$fromEntries_closure0(t0) {
- this.sourceEntry = t0;
- },
- SingleMapping_SingleMapping$fromEntries_closure1: function SingleMapping_SingleMapping$fromEntries_closure1(t0) {
- this.files = t0;
- },
- SingleMapping_toJson_closure: function SingleMapping_toJson_closure() {
- },
- SingleMapping_toJson_closure0: function SingleMapping_toJson_closure0(t0) {
- this.result = t0;
- },
- TargetLineEntry: function TargetLineEntry(t0, t1) {
- this.line = t0;
- this.entries = t1;
- },
- TargetEntry: function TargetEntry(t0, t1, t2, t3, t4) {
- var _ = this;
- _.column = t0;
- _.sourceUrlId = t1;
- _.sourceLine = t2;
- _.sourceColumn = t3;
- _.sourceNameId = t4;
- },
- LazyTrace: function LazyTrace(t0) {
- this._thunk = t0;
- this._lazy_trace$_inner = null;
- },
- LazyTrace_terse_closure: function LazyTrace_terse_closure(t0) {
- this.$this = t0;
- },
- isWhitespace: function(character) {
- return character === 32 || character === 9 || T.isNewline(character);
- },
- isNewline: function(character) {
- return character === 10 || character === 13 || character === 12;
- },
- isAlphabetic0: function(character) {
- var t1;
- if (!(character >= 97 && character <= 122))
- t1 = character >= 65 && character <= 90;
- else
- t1 = true;
- return t1;
- },
- isDigit: function(character) {
- return character != null && character >= 48 && character <= 57;
- },
- isHex: function(character) {
- if (character == null)
- return false;
- if (T.isDigit(character))
- return true;
- if (character >= 97 && character <= 102)
- return true;
- if (character >= 65 && character <= 70)
- return true;
- return false;
- },
- isPrivate: function(identifier) {
- var first = C.JSString_methods._codeUnitAt$1(identifier, 0);
- return first === 45 || first === 95;
- },
- asHex: function(character) {
- if (character <= 57)
- return character - 48;
- if (character <= 70)
- return 10 + character - 65;
- return 10 + character - 97;
- },
- hexCharFor: function(number) {
- return number < 10 ? 48 + number : 87 + number;
- },
- opposite: function(character) {
- switch (character) {
- case 40:
- return 41;
- case 123:
- return 125;
- case 91:
- return 93;
- default:
- return;
- }
- },
- characterEqualsIgnoreCase: function(character1, character2) {
- var upperCase1;
- if (character1 === character2)
- return true;
- if ((character1 ^ character2) !== 32)
- return false;
- upperCase1 = character1 & 4294967263;
- return upperCase1 >= 65 && upperCase1 <= 90;
- },
- fuzzyEquals: function(number1, number2) {
- return Math.abs(number1 - number2) < $.$get$epsilon();
- },
- fuzzyLessThan: function(number1, number2) {
- return number1 < number2 && !(Math.abs(number1 - number2) < $.$get$epsilon());
- },
- fuzzyLessThanOrEquals: function(number1, number2) {
- return number1 < number2 || Math.abs(number1 - number2) < $.$get$epsilon();
- },
- fuzzyGreaterThan: function(number1, number2) {
- return number1 > number2 && !(Math.abs(number1 - number2) < $.$get$epsilon());
- },
- fuzzyGreaterThanOrEquals: function(number1, number2) {
- return number1 > number2 || Math.abs(number1 - number2) < $.$get$epsilon();
- },
- fuzzyIsInt: function(number) {
- if (typeof number === "number" && Math.floor(number) === number)
- return true;
- return Math.abs(C.JSNumber_methods.$mod(Math.abs(number - 0.5), 1) - 0.5) < $.$get$epsilon();
- },
- fuzzyRound: function(number) {
- var t1;
- if (number > 0) {
- t1 = C.JSNumber_methods.$mod(number, 1);
- return t1 < 0.5 && !(Math.abs(t1 - 0.5) < $.$get$epsilon()) ? C.JSNumber_methods.floor$0(number) : C.JSNumber_methods.ceil$0(number);
- } else {
- t1 = C.JSNumber_methods.$mod(number, 1);
- return t1 < 0.5 || Math.abs(t1 - 0.5) < $.$get$epsilon() ? C.JSNumber_methods.floor$0(number) : C.JSNumber_methods.ceil$0(number);
- }
- },
- fuzzyCheckRange: function(number, min, max) {
- var t1 = $.$get$epsilon();
- if (Math.abs(number - min) < t1)
- return min;
- if (Math.abs(number - max) < t1)
- return max;
- if (number > min && number < max)
- return number;
- return;
- },
- fuzzyAssertRange: function(number, min, max, $name) {
- var result = T.fuzzyCheckRange(number, min, max);
- if (result != null)
- return result;
- throw H.wrapException(P.RangeError$value(number, $name, "must be between " + min + " and " + max + "."));
- }
- },
- D = {ListExpression: function ListExpression(t0, t1, t2, t3) {
- var _ = this;
- _.contents = t0;
- _.separator = t1;
- _.hasBrackets = t2;
- _.span = t3;
- }, ListExpression_toString_closure: function ListExpression_toString_closure(t0) {
- this.$this = t0;
- }, StringExpression: function StringExpression(t0, t1) {
- this.text = t0;
- this.hasQuotes = t1;
- }, ErrorRule: function ErrorRule(t0, t1) {
- this.expression = t0;
- this.span = t1;
- },
- SelectorList$: function(components) {
- var t1 = P.List_List$unmodifiable(components, S.ComplexSelector);
- if (t1.length === 0)
- H.throwExpression(P.ArgumentError$("components may not be empty."));
- return new D.SelectorList(t1);
- },
- SelectorList_SelectorList$parse: function(contents, allowParent, allowPlaceholder, logger) {
- var t1 = S.SpanScanner$(contents, null);
- return new T.SelectorParser(allowParent, allowPlaceholder, t1, logger == null ? C.StderrLogger_false : logger).parse$0();
- },
- SelectorList: function SelectorList(t0) {
- this.components = t0;
- },
- SelectorList_isInvisible_closure: function SelectorList_isInvisible_closure() {
- },
- SelectorList_asSassList_closure: function SelectorList_asSassList_closure() {
- },
- SelectorList_asSassList__closure: function SelectorList_asSassList__closure() {
- },
- SelectorList_unify_closure: function SelectorList_unify_closure(t0) {
- this.other = t0;
- },
- SelectorList_unify__closure: function SelectorList_unify__closure(t0) {
- this.complex1 = t0;
- },
- SelectorList_unify___closure: function SelectorList_unify___closure() {
- },
- SelectorList_resolveParentSelectors_closure: function SelectorList_resolveParentSelectors_closure(t0, t1, t2) {
- this.$this = t0;
- this.implicitParent = t1;
- this.parent = t2;
- },
- SelectorList_resolveParentSelectors__closure: function SelectorList_resolveParentSelectors__closure(t0) {
- this.complex = t0;
- },
- SelectorList_resolveParentSelectors__closure0: function SelectorList_resolveParentSelectors__closure0(t0) {
- this._box_0 = t0;
- },
- SelectorList__complexContainsParentSelector_closure: function SelectorList__complexContainsParentSelector_closure() {
- },
- SelectorList__complexContainsParentSelector__closure: function SelectorList__complexContainsParentSelector__closure() {
- },
- SelectorList__resolveParentSelectorsCompound_closure: function SelectorList__resolveParentSelectorsCompound_closure() {
- },
- SelectorList__resolveParentSelectorsCompound_closure0: function SelectorList__resolveParentSelectorsCompound_closure0(t0) {
- this.parent = t0;
- },
- SelectorList__resolveParentSelectorsCompound_closure1: function SelectorList__resolveParentSelectorsCompound_closure1(t0, t1) {
- this.compound = t0;
- this.resolvedMembers = t1;
- },
- PseudoSelector$: function($name, argument, element, selector) {
- var t1 = !element,
- t2 = t1 && !D.PseudoSelector__isFakePseudoElement($name);
- return new D.PseudoSelector($name, B.unvendor($name), t2, t1, argument, selector);
- },
- PseudoSelector__isFakePseudoElement: function($name) {
- switch (C.JSString_methods._codeUnitAt$1($name, 0)) {
- case 97:
- case 65:
- return B.equalsIgnoreCase($name, "after");
- case 98:
- case 66:
- return B.equalsIgnoreCase($name, "before");
- case 102:
- case 70:
- return B.equalsIgnoreCase($name, "first-line") || B.equalsIgnoreCase($name, "first-letter");
- default:
- return false;
- }
- },
- PseudoSelector: function PseudoSelector(t0, t1, t2, t3, t4, t5) {
- var _ = this;
- _.name = t0;
- _.normalizedName = t1;
- _.isClass = t2;
- _.isSyntacticClass = t3;
- _.argument = t4;
- _.selector = t5;
- _._pseudo$_maxSpecificity = _._pseudo$_minSpecificity = null;
- },
- QualifiedName: function QualifiedName(t0, t1) {
- this.name = t0;
- this.namespace = t1;
- },
- Callable: function Callable() {
- },
- compileStylesheet: function(options, graph, source, destination, ifModified) {
- return D.compileStylesheet$body(options, graph, source, destination, ifModified);
- },
- compileStylesheet$body: function(options, graph, source, destination, ifModified) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], syntax, result, importCache, error, exception, t1, t2, t3, t4, t5, t6, t7, result0, css, buffer, sourceName, destinationName, importer, $async$exception;
- var $async$compileStylesheet = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1) {
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- importer = new F.FilesystemImporter(D.absolute("."));
- if (ifModified)
- try {
- if (source != null && destination != null && !graph.modifiedSince$3($.$get$context().toUri$1(source), B.modificationTime(destination), importer)) {
- // goto return
- $async$goto = 1;
- break;
- }
- } catch (exception) {
- if (!(H.unwrapException(exception) instanceof B.FileSystemException))
- throw exception;
- }
- syntax = null;
- if (H.boolTypeCast(options._ifParsed$1("indented")) === true)
- syntax = C.Syntax_Sass;
- else if (source != null)
- syntax = M.Syntax_forPath(source);
- else
- syntax = C.Syntax_SCSS;
- result = null;
- $async$handler = 4;
- t1 = options._options;
- $async$goto = H.boolTypeCast(t1.$index(0, "async")) ? 7 : 9;
- break;
- case 7:
- // then
- t2 = H.setRuntimeTypeInfo([], [B.AsyncImporter]);
- t3 = H.subtypeCast(t1.$index(0, "load-path"), "$isList", [P.String], "$asList");
- t4 = H.boolTypeCast(t1.$index(0, "quiet")) ? $.$get$Logger_quiet() : new S.StderrLogger(options.get$color());
- t3 = O.AsyncImportCache__toImporters(t2, t3, null);
- t2 = t4 == null ? C.StderrLogger_false : t4;
- t4 = P.Uri;
- importCache = new O.AsyncImportCache(t3, t2, P.LinkedHashMap_LinkedHashMap$_empty([S.Tuple2, P.Uri, P.bool], [S.Tuple3, B.AsyncImporter, P.Uri, P.Uri]), P.LinkedHashMap_LinkedHashMap$_empty(t4, V.Stylesheet), P.LinkedHashMap_LinkedHashMap$_empty(t4, E.ImporterResult));
- $async$goto = source == null ? 10 : 12;
- break;
- case 10:
- // then
- $async$goto = 13;
- return P._asyncAwait(B.readStdin(), $async$compileStylesheet);
- case 13:
- // returning from await.
- t2 = $async$result;
- t3 = syntax;
- t4 = H.boolTypeCast(t1.$index(0, "quiet")) ? $.$get$Logger_quiet() : new S.StderrLogger(options.get$color());
- t5 = D.absolute(".");
- t6 = J.$eq$(t1.$index(0, "style"), "compressed") ? C.OutputStyle_compressed : C.OutputStyle_expanded;
- t7 = options.get$emitSourceMap();
- $async$goto = 14;
- return P._asyncAwait(X.compileStringAsync(t2, H.boolTypeCast(t1.$index(0, "charset")), null, importCache, new F.FilesystemImporter(t5), null, null, t4, null, t7, t6, t3, null, true), $async$compileStylesheet);
- case 14:
- // returning from await.
- result0 = $async$result;
- // goto join
- $async$goto = 11;
- break;
- case 12:
- // else
- t2 = syntax;
- t3 = H.boolTypeCast(t1.$index(0, "quiet")) ? $.$get$Logger_quiet() : new S.StderrLogger(options.get$color());
- t4 = J.$eq$(t1.$index(0, "style"), "compressed") ? C.OutputStyle_compressed : C.OutputStyle_expanded;
- t5 = options.get$emitSourceMap();
- $async$goto = 15;
- return P._asyncAwait(X.compileAsync(source, H.boolTypeCast(t1.$index(0, "charset")), null, importCache, null, null, t3, null, t5, t4, t2, true), $async$compileStylesheet);
- case 15:
- // returning from await.
- result0 = $async$result;
- case 11:
- // join
- result = result0;
- // goto join
- $async$goto = 8;
- break;
- case 9:
- // else
- $async$goto = source == null ? 16 : 18;
- break;
- case 16:
- // then
- $async$goto = 19;
- return P._asyncAwait(B.readStdin(), $async$compileStylesheet);
- case 19:
- // returning from await.
- t2 = $async$result;
- t3 = syntax;
- t4 = H.boolTypeCast(t1.$index(0, "quiet")) ? $.$get$Logger_quiet() : new S.StderrLogger(options.get$color());
- t5 = D.absolute(".");
- t6 = J.$eq$(t1.$index(0, "style"), "compressed") ? C.OutputStyle_compressed : C.OutputStyle_expanded;
- t7 = options.get$emitSourceMap();
- result0 = U.compileString(t2, H.boolTypeCast(t1.$index(0, "charset")), null, graph.importCache, new F.FilesystemImporter(t5), null, null, t4, null, t7, t6, t3, null, true);
- // goto join
- $async$goto = 17;
- break;
- case 18:
- // else
- t2 = syntax;
- t3 = H.boolTypeCast(t1.$index(0, "quiet")) ? $.$get$Logger_quiet() : new S.StderrLogger(options.get$color());
- t4 = J.$eq$(t1.$index(0, "style"), "compressed") ? C.OutputStyle_compressed : C.OutputStyle_expanded;
- t5 = options.get$emitSourceMap();
- result0 = U.compile(source, H.boolTypeCast(t1.$index(0, "charset")), null, graph.importCache, null, null, t3, null, t5, t4, t2, true);
- case 17:
- // join
- result = result0;
- case 8:
- // join
- $async$handler = 2;
- // goto after finally
- $async$goto = 6;
- break;
- case 4:
- // catch
- $async$handler = 3;
- $async$exception = $async$currentError;
- t1 = H.unwrapException($async$exception);
- if (t1 instanceof E.SassException) {
- error = t1;
- if (options.get$emitErrorCss())
- if (destination == null)
- P.print(error.toCssString$0());
- else {
- B.ensureDir($.$get$context().dirname$1(destination));
- B.writeFile(destination, error.toCssString$0() + "\n");
- }
- throw $async$exception;
- } else
- throw $async$exception;
- // goto after finally
- $async$goto = 6;
- break;
- case 3:
- // uncaught
- // goto rethrow
- $async$goto = 2;
- break;
- case 6:
- // after finally
- css = result._serialize.css + D._writeSourceMap(options, result._serialize.sourceMap, destination);
- if (destination == null) {
- if (css.length !== 0)
- P.print(css);
- } else {
- B.ensureDir($.$get$context().dirname$1(destination));
- B.writeFile(destination, css + "\n");
- }
- t1 = options._options;
- if (!H.boolTypeCast(t1.$index(0, "quiet")))
- t1 = !H.boolTypeCast(t1.$index(0, "update")) && !H.boolTypeCast(t1.$index(0, "watch"));
- else
- t1 = true;
- if (t1) {
- // goto return
- $async$goto = 1;
- break;
- }
- buffer = new P.StringBuffer("");
- t1 = options.get$color() ? buffer._contents = "\x1b[32m" : "";
- if (source == null)
- sourceName = "stdin";
- else {
- t2 = $.$get$context();
- sourceName = t2.prettyUri$1(t2.toUri$1(source));
- }
- t2 = $.$get$context();
- destinationName = t2.prettyUri$1(t2.toUri$1(destination));
- t1 += "Compiled " + H.S(sourceName) + " to " + H.S(destinationName) + ".";
- buffer._contents = t1;
- if (options.get$color())
- buffer._contents = t1 + "\x1b[0m";
- P.print(buffer);
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- case 2:
- // rethrow
- return P._asyncRethrow($async$currentError, $async$completer);
- }
- });
- return P._asyncStartSync($async$compileStylesheet, $async$completer);
- },
- _writeSourceMap: function(options, sourceMap, destination) {
- var t1, sourceMapText, url, sourceMapPath, t2;
- if (sourceMap == null)
- return "";
- if (destination != null) {
- t1 = $.$get$context();
- sourceMap.targetUrl = J.toString$0$(t1.toUri$1(X.ParsedPath_ParsedPath$parse(destination, t1.style).get$basename()));
- }
- B.mapInPlace(sourceMap.urls, new D._writeSourceMap_closure(options, destination));
- t1 = options._options;
- sourceMapText = C.C_JsonCodec.encode$2$toEncodable(sourceMap.toJson$1$includeSourceContents(H.boolTypeCast(t1.$index(0, "embed-sources"))), null);
- if (H.boolTypeCast(t1.$index(0, "embed-source-map")))
- url = P.Uri_Uri$dataFromString(sourceMapText, C.C_Utf8Codec, "application/json");
- else {
- sourceMapPath = J.$add$ansx(destination, ".map");
- t2 = $.$get$context();
- B.ensureDir(t2.dirname$1(sourceMapPath));
- B.writeFile(sourceMapPath, sourceMapText);
- url = t2.toUri$1(t2.relative$2$from(sourceMapPath, t2.dirname$1(destination)));
- }
- t1 = (J.$eq$(t1.$index(0, "style"), "compressed") ? C.OutputStyle_compressed : C.OutputStyle_expanded) === C.OutputStyle_compressed ? "" : "\n\n";
- return t1 + ("/*# sourceMappingURL=" + H.S(url) + " */");
- },
- _writeSourceMap_closure: function _writeSourceMap_closure(t0, t1) {
- this.options = t0;
- this.destination = t1;
- },
- _function3: function($name, $arguments, callback) {
- var t1 = S.SpanScanner$("@function " + $name + "(" + $arguments + ") {", "sass:list");
- return new Q.BuiltInCallable($name, H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), t1, C.StderrLogger_false).parseArgumentDeclaration$0(), callback, [B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}])], [[S.Tuple2, B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}]]));
- },
- closure42: function closure42() {
- },
- closure41: function closure41() {
- },
- closure40: function closure40() {
- },
- closure39: function closure39() {
- },
- closure38: function closure38() {
- },
- closure37: function closure37() {
- },
- _closure4: function _closure4() {
- },
- _closure5: function _closure5(t0) {
- this._box_0 = t0;
- },
- _closure6: function _closure6(t0) {
- this._box_0 = t0;
- },
- closure36: function closure36() {
- },
- closure34: function closure34() {
- },
- closure35: function closure35() {
- },
- _codepointForIndex: function(index, lengthInCodepoints, allowNegative) {
- var result;
- if (index === 0)
- return 0;
- if (index > 0)
- return Math.min(index - 1, H.checkNum(lengthInCodepoints));
- result = lengthInCodepoints + index;
- if (result < 0 && !allowNegative)
- return 0;
- return result;
- },
- _function: function($name, $arguments, callback) {
- var t1 = S.SpanScanner$("@function " + $name + "(" + $arguments + ") {", "sass:string");
- return new Q.BuiltInCallable($name, H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), t1, C.StderrLogger_false).parseArgumentDeclaration$0(), callback, [B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}])], [[S.Tuple2, B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}]]));
- },
- closure8: function closure8() {
- },
- closure7: function closure7() {
- },
- closure3: function closure3() {
- },
- closure2: function closure2() {
- },
- closure1: function closure1() {
- },
- closure0: function closure0() {
- },
- closure6: function closure6() {
- },
- closure5: function closure5() {
- },
- closure4: function closure4() {
- },
- Exports: function Exports() {
- },
- _NodeSassList: function _NodeSassList() {
- },
- closure124: function closure124() {
- },
- _closure18: function _closure18() {
- },
- closure125: function closure125() {
- },
- closure126: function closure126() {
- },
- closure127: function closure127() {
- },
- closure128: function closure128() {
- },
- closure129: function closure129() {
- },
- closure130: function closure130() {
- },
- _NodeSassString: function _NodeSassString() {
- },
- closure106: function closure106() {
- },
- closure107: function closure107() {
- },
- closure108: function closure108() {
- },
- closure109: function closure109() {
- },
- SourceMapBuffer: function SourceMapBuffer(t0, t1, t2) {
- var _ = this;
- _._source_map_buffer$_buffer = t0;
- _._entries = t1;
- _._sourceFiles = t2;
- _._column = _._line = 0;
- _._inSpan = false;
- },
- SourceMapBuffer_sourceFiles_closure: function SourceMapBuffer_sourceFiles_closure() {
- },
- SourceMapBuffer__addEntry_closure: function SourceMapBuffer__addEntry_closure(t0) {
- this.source = t0;
- },
- SourceMapBuffer_buildSourceMap_closure: function SourceMapBuffer_buildSourceMap_closure(t0, t1) {
- this._box_0 = t0;
- this.prefixLength = t1;
- },
- SassArgumentList: function SassArgumentList(t0, t1, t2, t3) {
- var _ = this;
- _._keywords = t0;
- _._wereKeywordsAccessed = false;
- _._list$_contents = t1;
- _.separator = t2;
- _.hasBrackets = t3;
- },
- SassList$: function(contents, separator, brackets) {
- var t1 = new D.SassList(P.List_List$unmodifiable(contents, F.Value), separator, brackets);
- t1.SassList$3$brackets(contents, separator, brackets);
- return t1;
- },
- SassList: function SassList(t0, t1, t2) {
- this._list$_contents = t0;
- this.separator = t1;
- this.hasBrackets = t2;
- },
- SassList_isBlank_closure: function SassList_isBlank_closure() {
- },
- ListSeparator: function ListSeparator(t0) {
- this._list$_name = t0;
- },
- SassString$: function(text, quotes) {
- return new D.SassString(text, quotes);
- },
- SassString: function SassString(t0, t1) {
- this.text = t0;
- this.hasQuotes = t1;
- this._sassLength = null;
- },
- RecursiveStatementVisitor: function RecursiveStatementVisitor() {
- },
- SourceLocationMixin: function SourceLocationMixin() {
- },
- current: function() {
- var exception, t1, path, lastIndex, uri = null;
- try {
- uri = P.Uri_base();
- } catch (exception) {
- if (!!J.getInterceptor$(H.unwrapException(exception)).$isException) {
- t1 = $._current;
- if (t1 != null)
- return t1;
- throw exception;
- } else
- throw exception;
- }
- if (J.$eq$(uri, $._currentUriBase))
- return $._current;
- $._currentUriBase = uri;
- if ($.$get$Style_platform() == $.$get$Style_url())
- return $._current = uri.resolve$1(".").toString$0(0);
- else {
- path = uri.toFilePath$0();
- lastIndex = path.length - 1;
- return $._current = lastIndex === 0 ? path : C.JSString_methods.substring$2(path, 0, lastIndex);
- }
- },
- absolute: function(part1) {
- var _null = null;
- return $.$get$context().absolute$7(part1, _null, _null, _null, _null, _null, _null);
- },
- dirname: function(path) {
- return $.$get$context().dirname$1(path);
- },
- join: function(part1, part2, part3) {
- var _null = null;
- return $.$get$context().join$8(0, part1, part2, part3, _null, _null, _null, _null, _null);
- }
- },
- A = {MapExpression: function MapExpression(t0, t1) {
- this.pairs = t0;
- this.span = t1;
- }, MapExpression_toString_closure: function MapExpression_toString_closure() {
- }, IncludeRule: function IncludeRule(t0, t1, t2, t3, t4) {
- var _ = this;
- _.namespace = t0;
- _.name = t1;
- _.$arguments = t2;
- _.content = t3;
- _.span = t4;
- }, Configuration: function Configuration(t0, t1, t2) {
- this._values = t0;
- this.nodeWithSpan = t1;
- this.isImplicit = t2;
- },
- watch: function(options, graph) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$returnValue, t4, t5, t6, t7, dirWatcher, watcher, destination, t1, t2, t3;
- var $async$watch = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = P.String;
- t2 = [t1];
- t3 = H.setRuntimeTypeInfo([], t2);
- for (options._ensureSources$0(), t4 = J.get$iterator$ax(options._sourceDirectoriesToDestinations.get$keys()); t4.moveNext$0();)
- t3.push(t4.get$current(t4));
- for (options._ensureSources$0(), t4 = J.map$1$1$ax(options._sourcesToDestinations.get$keys(), D.path__dirname$closure(), t1), t4 = t4.get$iterator(t4); t4.moveNext$0();)
- t3.push(t4.get$current(t4));
- for (t4 = options._options, t2 = J.get$iterator$ax(H.subtypeCast(t4.$index(0, "load-path"), "$isList", t2, "$asList")); t2.moveNext$0();)
- t3.push(t2.get$current(t2));
- t2 = H.boolTypeCast(t4.$index(0, "poll"));
- t5 = [P.Stream, E.WatchEvent];
- t6 = E.WatchEvent;
- t7 = new L.StreamGroup(C._StreamGroupState_dormant, new H.JsLinkedHashMap([t5, [P.StreamSubscription, E.WatchEvent]]), [t6]);
- t7._controller = P.StreamController_StreamController(t7.get$_onCancel(), t7.get$_onListen(), t7.get$_onPause(), t7.get$_onResume(), true, t6);
- dirWatcher = new U.MultiDirWatcher(P.LinkedHashMap_LinkedHashMap$_empty(t1, t5), t7, t2);
- $async$goto = 3;
- return P._asyncAwait(P.Future_wait(new H.MappedListIterable(t3, new A.watch_closure(dirWatcher), [H.getTypeArgumentByIndex(t3, 0), [P.Future, -1]]), -1), $async$watch);
- case 3:
- // returning from await.
- watcher = new A._Watcher(options, graph);
- options._ensureSources$0(), t1 = J.get$iterator$ax(options._sourcesToDestinations.get$keys());
- case 4:
- // for condition
- if (!t1.moveNext$0()) {
- // goto after for
- $async$goto = 5;
- break;
- }
- t2 = t1.get$current(t1);
- options._ensureSources$0();
- destination = options._sourcesToDestinations.$index(0, t2);
- t3 = $.$get$context();
- graph.addCanonical$3(new F.FilesystemImporter(t3.absolute$7(".", null, null, null, null, null, null)), t3.toUri$1(t3.canonicalize$1(t2)), t3.toUri$1(t2));
- $async$goto = 6;
- return P._asyncAwait(watcher.compile$3$ifModified(t2, destination, true), $async$watch);
- case 6:
- // returning from await.
- if (!$async$result && H.boolTypeCast(t4.$index(0, "stop-on-error"))) {
- dirWatcher._group._controller._subscribe$4(null, null, null, false).cancel$0();
- // goto return
- $async$goto = 1;
- break;
- }
- // goto for condition
- $async$goto = 4;
- break;
- case 5:
- // after for
- P.print("Sass is watching for changes. Press Ctrl-C to stop.\n");
- $async$goto = 7;
- return P._asyncAwait(watcher.watch$1(0, dirWatcher), $async$watch);
- case 7:
- // returning from await.
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$watch, $async$completer);
- },
- watch_closure: function watch_closure(t0) {
- this.dirWatcher = t0;
- },
- _Watcher: function _Watcher(t0, t1) {
- this._watch$_options = t0;
- this._graph = t1;
- },
- _Watcher__debounceEvents_closure: function _Watcher__debounceEvents_closure() {
- },
- _Watcher__debounceEvents__closure: function _Watcher__debounceEvents__closure(t0) {
- this.typeForPath = t0;
- },
- _Watcher__retryPotentialImports_recanonicalize: function _Watcher__retryPotentialImports_recanonicalize(t0, t1, t2, t3) {
- var _ = this;
- _._box_0 = t0;
- _.$this = t1;
- _.name = t2;
- _.node = t3;
- },
- MergedExtension_merge: function(left, right) {
- var t2, t3, t4,
- t1 = left.extender;
- if (!J.$eq$(t1, right.extender) || !J.$eq$(left.target, right.target))
- throw H.wrapException(P.ArgumentError$(left.toString$0(0) + " and " + right.toString$0(0) + " aren't the same extension."));
- t2 = left.mediaContext;
- t3 = t2 == null;
- if (!t3) {
- t4 = right.mediaContext;
- t4 = t4 != null && !C.C_ListEquality.equals$2(t2, t4);
- } else
- t4 = false;
- if (t4)
- throw H.wrapException(E.SassException$("From " + left.span.message$1(0, "") + "\nYou may not @extend the same selector from within different media queries.", right.span));
- if (right.isOptional && right.mediaContext == null)
- return left;
- if (left.isOptional && t3)
- return right;
- if (t3)
- t2 = right.mediaContext;
- t3 = left.specificity;
- if (t3 == null)
- t3 = t1.get$maxSpecificity();
- return new A.MergedExtension(left, right, t1, left.target, t3, true, false, t2, left.extenderSpan, left.span);
- },
- MergedExtension: function MergedExtension(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) {
- var _ = this;
- _.left = t0;
- _.right = t1;
- _.extender = t2;
- _.target = t3;
- _.specificity = t4;
- _.isOptional = t5;
- _.isOriginal = t6;
- _.mediaContext = t7;
- _.extenderSpan = t8;
- _.span = t9;
- },
- _function2: function($name, $arguments, callback) {
- var t1 = S.SpanScanner$("@function " + $name + "(" + $arguments + ") {", "sass:map");
- return new Q.BuiltInCallable($name, H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), t1, C.StderrLogger_false).parseArgumentDeclaration$0(), callback, [B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}])], [[S.Tuple2, B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}]]));
- },
- closure33: function closure33() {
- },
- closure32: function closure32() {
- },
- closure30: function closure30() {
- },
- closure31: function closure31() {
- },
- closure29: function closure29() {
- },
- closure28: function closure28() {
- },
- closure27: function closure27() {
- },
- _NodeSassMap: function _NodeSassMap() {
- },
- closure117: function closure117() {
- },
- _closure16: function _closure16() {
- },
- _closure17: function _closure17() {
- },
- closure118: function closure118() {
- },
- closure119: function closure119() {
- },
- closure120: function closure120() {
- },
- closure121: function closure121() {
- },
- closure122: function closure122() {
- },
- closure123: function closure123() {
- },
- SassMap: function SassMap(t0) {
- this.contents = t0;
- },
- SassMap_asList_closure: function SassMap_asList_closure(t0) {
- this.result = t0;
- },
- Frame_Frame$parseVM: function(frame) {
- return A.Frame__catchFormatException(frame, new A.Frame_Frame$parseVM_closure(frame));
- },
- Frame_Frame$parseV8: function(frame) {
- return A.Frame__catchFormatException(frame, new A.Frame_Frame$parseV8_closure(frame));
- },
- Frame_Frame$parseFirefox: function(frame) {
- return A.Frame__catchFormatException(frame, new A.Frame_Frame$parseFirefox_closure(frame));
- },
- Frame_Frame$parseFriendly: function(frame) {
- return A.Frame__catchFormatException(frame, new A.Frame_Frame$parseFriendly_closure(frame));
- },
- Frame__uriOrPathToUri: function(uriOrPath) {
- if (J.getInterceptor$asx(uriOrPath).contains$1(uriOrPath, $.$get$Frame__uriRegExp()))
- return P.Uri_parse(uriOrPath);
- else if (C.JSString_methods.contains$1(uriOrPath, $.$get$Frame__windowsRegExp()))
- return P._Uri__Uri$file(uriOrPath, true);
- else if (C.JSString_methods.startsWith$1(uriOrPath, "/"))
- return P._Uri__Uri$file(uriOrPath, false);
- if (C.JSString_methods.contains$1(uriOrPath, "\\"))
- return $.$get$windows().toUri$1(uriOrPath);
- return P.Uri_parse(uriOrPath);
- },
- Frame__catchFormatException: function(text, body) {
- var t1, exception;
- try {
- t1 = body.call$0();
- return t1;
- } catch (exception) {
- if (!!J.getInterceptor$(H.unwrapException(exception)).$isFormatException)
- return new N.UnparsedFrame(P._Uri__Uri(null, "unparsed", null, null), text);
- else
- throw exception;
- }
- },
- Frame: function Frame(t0, t1, t2, t3) {
- var _ = this;
- _.uri = t0;
- _.line = t1;
- _.column = t2;
- _.member = t3;
- },
- Frame_Frame$parseVM_closure: function Frame_Frame$parseVM_closure(t0) {
- this.frame = t0;
- },
- Frame_Frame$parseV8_closure: function Frame_Frame$parseV8_closure(t0) {
- this.frame = t0;
- },
- Frame_Frame$parseV8_closure_parseLocation: function Frame_Frame$parseV8_closure_parseLocation(t0) {
- this.frame = t0;
- },
- Frame_Frame$parseFirefox_closure: function Frame_Frame$parseFirefox_closure(t0) {
- this.frame = t0;
- },
- Frame_Frame$parseFriendly_closure: function Frame_Frame$parseFriendly_closure(t0) {
- this.frame = t0;
- },
- AsciiGlyphSet: function AsciiGlyphSet() {
- }
- },
- S = {VariableExpression: function VariableExpression(t0, t1, t2) {
- this.namespace = t0;
- this.name = t1;
- this.span = t2;
- },
- ComplexSelector$: function(components, lineBreak) {
- var t1 = P.List_List$unmodifiable(components, S.ComplexSelectorComponent);
- if (t1.length === 0)
- H.throwExpression(P.ArgumentError$("components may not be empty."));
- return new S.ComplexSelector(t1, lineBreak);
- },
- ComplexSelector: function ComplexSelector(t0, t1) {
- var _ = this;
- _.components = t0;
- _.lineBreak = t1;
- _._complex$_isInvisible = _._maxSpecificity = _._minSpecificity = null;
- },
- ComplexSelector_isInvisible_closure: function ComplexSelector_isInvisible_closure() {
- },
- ComplexSelectorComponent: function ComplexSelectorComponent() {
- },
- Combinator: function Combinator(t0) {
- this._complex$_text = t0;
- },
- AsyncBuiltInCallable$mixin: function($name, $arguments, callback, url) {
- var t1 = S.SpanScanner$("@mixin " + $name + "(" + $arguments + ") {", url);
- return new S.AsyncBuiltInCallable($name, new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), t1, C.StderrLogger_false).parseArgumentDeclaration$0(), new S.AsyncBuiltInCallable$mixin_closure(callback));
- },
- AsyncBuiltInCallable: function AsyncBuiltInCallable(t0, t1, t2) {
- this.name = t0;
- this._async_built_in$_arguments = t1;
- this._async_built_in$_callback = t2;
- },
- AsyncBuiltInCallable$mixin_closure: function AsyncBuiltInCallable$mixin_closure(t0) {
- this.callback = t0;
- },
- Extension$oneOff: function(extender, isOriginal, specificity) {
- var _null = null;
- return new S.Extension(extender, _null, specificity == null ? extender.get$maxSpecificity() : specificity, true, isOriginal, _null, _null, _null);
- },
- Extension: function Extension(t0, t1, t2, t3, t4, t5, t6, t7) {
- var _ = this;
- _.extender = t0;
- _.target = t1;
- _.specificity = t2;
- _.isOptional = t3;
- _.isOriginal = t4;
- _.mediaContext = t5;
- _.extenderSpan = t6;
- _.span = t7;
- },
- StderrLogger: function StderrLogger(t0) {
- this.color = t0;
- },
- SpanScanner$: function(string, sourceUrl) {
- var t1, t2, t3, t4;
- string.toString;
- t1 = new H.CodeUnits(string);
- t2 = H.setRuntimeTypeInfo([0], [P.int]);
- t3 = typeof sourceUrl === "string";
- t4 = t3 ? P.Uri_parse(sourceUrl) : H.interceptedTypeCast(sourceUrl, "$isUri");
- t2 = new Y.SourceFile(t4, t2, new Uint32Array(H._ensureNativeList(t1.toList$0(t1))));
- t2.SourceFile$decoded$2$url(t1, sourceUrl);
- t1 = t3 ? P.Uri_parse(sourceUrl) : H.interceptedTypeCast(sourceUrl, "$isUri");
- return new S.SpanScanner(t2, t1, string);
- },
- SpanScanner: function SpanScanner(t0, t1, t2) {
- var _ = this;
- _._sourceFile = t0;
- _.sourceUrl = t1;
- _.string = t2;
- _._string_scanner$_position = 0;
- _._lastMatchPosition = _._lastMatch = null;
- },
- _SpanScannerState: function _SpanScannerState(t0, t1) {
- this._scanner = t0;
- this.position = t1;
- },
- Tuple2: function Tuple2(t0, t1, t2) {
- this.item1 = t0;
- this.item2 = t1;
- this.$ti = t2;
- },
- Tuple3: function Tuple3(t0, t1, t2, t3) {
- var _ = this;
- _.item1 = t0;
- _.item2 = t1;
- _.item3 = t2;
- _.$ti = t3;
- }
- };
- var holders = [C, H, J, P, N, Z, V, G, E, F, Y, L, Q, B, O, U, M, X, K, R, T, D, A, S];
- hunkHelpers.setFunctionNamesIfNecessary(holders);
- var $ = {};
- H.JS_CONST.prototype = {};
- J.Interceptor.prototype = {
- $eq: function(receiver, other) {
- return receiver === other;
- },
- get$hashCode: function(receiver) {
- return H.Primitives_objectHashCode(receiver);
- },
- toString$0: function(receiver) {
- return "Instance of '" + H.S(H.Primitives_objectTypeName(receiver)) + "'";
- },
- noSuchMethod$1: function(receiver, invocation) {
- throw H.wrapException(P.NoSuchMethodError$(receiver, invocation.get$memberName(), invocation.get$positionalArguments(), invocation.get$namedArguments()));
- }
- };
- J.JSBool.prototype = {
- toString$0: function(receiver) {
- return String(receiver);
- },
- get$hashCode: function(receiver) {
- return receiver ? 519018 : 218159;
- },
- $isbool: 1
- };
- J.JSNull.prototype = {
- $eq: function(receiver, other) {
- return null == other;
- },
- toString$0: function(receiver) {
- return "null";
- },
- get$hashCode: function(receiver) {
- return 0;
- },
- noSuchMethod$1: function(receiver, invocation) {
- return this.super$Interceptor$noSuchMethod(receiver, invocation);
- },
- $isNull: 1
- };
- J.JavaScriptObject.prototype = {
- get$hashCode: function(receiver) {
- return 0;
- },
- toString$0: function(receiver) {
- return String(receiver);
- },
- $is_SystemError: 1,
- $isJSError: 1,
- $isFunction: 1,
- $isJSFunction: 1,
- $isNodeImporterResult: 1,
- $isRenderOptions: 1,
- $isRenderResult: 1,
- $is_NodeSassColor: 1,
- $is_NodeSassList: 1,
- $is_NodeSassMap: 1,
- $is_NodeSassNumber: 1,
- $is_NodeSassString: 1,
- get$isTTY: function(obj) {
- return obj.isTTY;
- },
- get$write: function(obj) {
- return obj.write;
- },
- write$1: function(receiver, p0) {
- return receiver.write(p0);
- },
- createInterface$1: function(receiver, p0) {
- return receiver.createInterface(p0);
- },
- on$2: function(receiver, p0, p1) {
- return receiver.on(p0, p1);
- },
- get$close: function(obj) {
- return obj.close;
- },
- close$0: function(receiver) {
- return receiver.close();
- },
- setPrompt$1: function(receiver, p0) {
- return receiver.setPrompt(p0);
- },
- readFileSync$2: function(receiver, p0, p1) {
- return receiver.readFileSync(p0, p1);
- },
- writeFileSync$2: function(receiver, p0, p1) {
- return receiver.writeFileSync(p0, p1);
- },
- existsSync$1: function(receiver, p0) {
- return receiver.existsSync(p0);
- },
- mkdirSync$1: function(receiver, p0) {
- return receiver.mkdirSync(p0);
- },
- statSync$1: function(receiver, p0) {
- return receiver.statSync(p0);
- },
- unlinkSync$1: function(receiver, p0) {
- return receiver.unlinkSync(p0);
- },
- readdirSync$1: function(receiver, p0) {
- return receiver.readdirSync(p0);
- },
- isFile$0: function(receiver) {
- return receiver.isFile();
- },
- isDirectory$0: function(receiver) {
- return receiver.isDirectory();
- },
- get$mtime: function(obj) {
- return obj.mtime;
- },
- getTime$0: function(receiver) {
- return receiver.getTime();
- },
- get$message: function(obj) {
- return obj.message;
- },
- message$1: function(receiver, p0) {
- return receiver.message(p0);
- },
- get$code: function(obj) {
- return obj.code;
- },
- get$syscall: function(obj) {
- return obj.syscall;
- },
- get$path: function(obj) {
- return obj.path;
- },
- get$platform: function(obj) {
- return obj.platform;
- },
- get$env: function(obj) {
- return obj.env;
- },
- watch$2: function(receiver, p0, p1) {
- return receiver.watch(p0, p1);
- },
- set$run_: function(obj, v) {
- return obj.run_ = v;
- },
- set$render: function(obj, v) {
- return obj.render = v;
- },
- set$renderSync: function(obj, v) {
- return obj.renderSync = v;
- },
- set$info: function(obj, v) {
- return obj.info = v;
- },
- set$types: function(obj, v) {
- return obj.types = v;
- },
- call$1: function(receiver, p0) {
- return receiver.call(p0);
- },
- call$1$1: function(receiver, p0) {
- return receiver.call(p0);
- },
- get$current: function(obj) {
- return obj.current;
- },
- yield$0: function(receiver) {
- return receiver.yield();
- },
- run$1: function(receiver, p0) {
- return receiver.run(p0);
- },
- run$0: function(receiver) {
- return receiver.run();
- },
- call$0: function(receiver) {
- return receiver.call();
- },
- call$2: function(receiver, p0, p1) {
- return receiver.call(p0, p1);
- },
- call$3: function(receiver, p0, p1, p2) {
- return receiver.call(p0, p1, p2);
- },
- call$1$3: function(receiver, p0, p1, p2) {
- return receiver.call(p0, p1, p2);
- },
- call$2$2: function(receiver, p0, p1) {
- return receiver.call(p0, p1);
- },
- call$1$0: function(receiver) {
- return receiver.call();
- },
- apply$2: function(receiver, p0, p1) {
- return receiver.apply(p0, p1);
- },
- get$file: function(obj) {
- return obj.file;
- },
- get$contents: function(obj) {
- return obj.contents;
- },
- get$options: function(obj) {
- return obj.options;
- },
- get$data: function(obj) {
- return obj.data;
- },
- get$includePaths: function(obj) {
- return obj.includePaths;
- },
- get$indentType: function(obj) {
- return obj.indentType;
- },
- get$indentWidth: function(obj) {
- return obj.indentWidth;
- },
- get$linefeed: function(obj) {
- return obj.linefeed;
- },
- set$context: function(obj, v) {
- return obj.context = v;
- },
- get$importer: function(obj) {
- return obj.importer;
- },
- get$functions: function(obj) {
- return obj.functions;
- },
- get$indentedSyntax: function(obj) {
- return obj.indentedSyntax;
- },
- get$omitSourceMapUrl: function(obj) {
- return obj.omitSourceMapUrl;
- },
- get$outFile: function(obj) {
- return obj.outFile;
- },
- get$outputStyle: function(obj) {
- return obj.outputStyle;
- },
- get$fiber: function(obj) {
- return obj.fiber;
- },
- get$sourceMap: function(obj) {
- return obj.sourceMap;
- },
- get$sourceMapContents: function(obj) {
- return obj.sourceMapContents;
- },
- get$sourceMapEmbed: function(obj) {
- return obj.sourceMapEmbed;
- },
- get$sourceMapRoot: function(obj) {
- return obj.sourceMapRoot;
- },
- map$1$1: function(receiver, p0) {
- return receiver.map(p0);
- },
- map$1: function(receiver, p0) {
- return receiver.map(p0);
- },
- get$start: function(obj) {
- return obj.start;
- },
- get$end: function(obj) {
- return obj.end;
- },
- get$dartValue: function(obj) {
- return obj.dartValue;
- },
- set$dartValue: function(obj, v) {
- return obj.dartValue = v;
- }
- };
- J.PlainJavaScriptObject.prototype = {};
- J.UnknownJavaScriptObject.prototype = {};
- J.JavaScriptFunction.prototype = {
- toString$0: function(receiver) {
- var dartClosure = receiver[$.$get$DART_CLOSURE_PROPERTY_NAME()];
- if (dartClosure == null)
- return this.super$JavaScriptObject$toString(receiver);
- return "JavaScript function for " + H.S(J.toString$0$(dartClosure));
- },
- $signature: function() {
- return {func: 1, opt: [,,,,,,,,,,,,,,,,]};
- },
- $isFunction: 1
- };
- J.JSArray.prototype = {
- cast$1$0: function(receiver, $R) {
- return new H.CastList(receiver, [H.getTypeArgumentByIndex(receiver, 0), $R]);
- },
- add$1: function(receiver, value) {
- if (!!receiver.fixed$length)
- H.throwExpression(P.UnsupportedError$("add"));
- receiver.push(value);
- },
- removeAt$1: function(receiver, index) {
- var t1;
- if (!!receiver.fixed$length)
- H.throwExpression(P.UnsupportedError$("removeAt"));
- t1 = receiver.length;
- if (index >= t1)
- throw H.wrapException(P.RangeError$value(index, null, null));
- return receiver.splice(index, 1)[0];
- },
- insert$2: function(receiver, index, value) {
- var t1;
- if (!!receiver.fixed$length)
- H.throwExpression(P.UnsupportedError$("insert"));
- t1 = receiver.length;
- if (index > t1)
- throw H.wrapException(P.RangeError$value(index, null, null));
- receiver.splice(index, 0, value);
- },
- insertAll$2: function(receiver, index, iterable) {
- var t1, insertionLength, end;
- if (!!receiver.fixed$length)
- H.throwExpression(P.UnsupportedError$("insertAll"));
- P.RangeError_checkValueInInterval(index, 0, receiver.length, "index");
- t1 = J.getInterceptor$(iterable);
- if (!t1.$isEfficientLengthIterable)
- iterable = t1.toList$0(iterable);
- insertionLength = J.get$length$asx(iterable);
- this.set$length(receiver, receiver.length + insertionLength);
- end = index + insertionLength;
- this.setRange$4(receiver, end, receiver.length, receiver, index);
- this.setRange$3(receiver, index, end, iterable);
- },
- setAll$2: function(receiver, index, iterable) {
- var t1, index0;
- if (!!receiver.immutable$list)
- H.throwExpression(P.UnsupportedError$("setAll"));
- P.RangeError_checkValueInInterval(index, 0, receiver.length, "index");
- for (t1 = J.get$iterator$ax(iterable); t1.moveNext$0(); index = index0) {
- index0 = index + 1;
- this.$indexSet(receiver, index, t1.get$current(t1));
- }
- },
- removeLast$0: function(receiver) {
- if (!!receiver.fixed$length)
- H.throwExpression(P.UnsupportedError$("removeLast"));
- if (receiver.length === 0)
- throw H.wrapException(H.diagnoseIndexError(receiver, -1));
- return receiver.pop();
- },
- remove$1: function(receiver, element) {
- var i;
- if (!!receiver.fixed$length)
- H.throwExpression(P.UnsupportedError$("remove"));
- for (i = 0; i < receiver.length; ++i)
- if (J.$eq$(receiver[i], element)) {
- receiver.splice(i, 1);
- return true;
- }
- return false;
- },
- _removeWhere$2: function(receiver, test, removeMatching) {
- var i, element, t1, retained = [],
- end = receiver.length;
- for (i = 0; i < end; ++i) {
- element = receiver[i];
- if (!test.call$1(element))
- retained.push(element);
- if (receiver.length !== end)
- throw H.wrapException(P.ConcurrentModificationError$(receiver));
- }
- t1 = retained.length;
- if (t1 === end)
- return;
- this.set$length(receiver, t1);
- for (i = 0; i < retained.length; ++i)
- receiver[i] = retained[i];
- },
- where$1: function(receiver, f) {
- return new H.WhereIterable(receiver, f, [H.getTypeArgumentByIndex(receiver, 0)]);
- },
- expand$1$1: function(receiver, f, $T) {
- return new H.ExpandIterable(receiver, f, [H.getTypeArgumentByIndex(receiver, 0), $T]);
- },
- addAll$1: function(receiver, collection) {
- var t1;
- if (!!receiver.fixed$length)
- H.throwExpression(P.UnsupportedError$("addAll"));
- for (t1 = J.get$iterator$ax(collection); t1.moveNext$0();)
- receiver.push(t1.get$current(t1));
- },
- forEach$1: function(receiver, f) {
- var i,
- end = receiver.length;
- for (i = 0; i < end; ++i) {
- f.call$1(receiver[i]);
- if (receiver.length !== end)
- throw H.wrapException(P.ConcurrentModificationError$(receiver));
- }
- },
- map$1$1: function(receiver, f, $T) {
- return new H.MappedListIterable(receiver, f, [H.getTypeArgumentByIndex(receiver, 0), $T]);
- },
- map$1: function($receiver, f) {
- return this.map$1$1($receiver, f, null);
- },
- join$1: function(receiver, separator) {
- var i,
- list = new Array(receiver.length);
- list.fixed$length = Array;
- for (i = 0; i < receiver.length; ++i)
- list[i] = H.S(receiver[i]);
- return list.join(separator);
- },
- join$0: function($receiver) {
- return this.join$1($receiver, "");
- },
- take$1: function(receiver, n) {
- return H.SubListIterable$(receiver, 0, n, H.getTypeArgumentByIndex(receiver, 0));
- },
- skip$1: function(receiver, n) {
- return H.SubListIterable$(receiver, n, null, H.getTypeArgumentByIndex(receiver, 0));
- },
- fold$1$2: function(receiver, initialValue, combine) {
- var value, i,
- $length = receiver.length;
- for (value = initialValue, i = 0; i < $length; ++i) {
- value = combine.call$2(value, receiver[i]);
- if (receiver.length !== $length)
- throw H.wrapException(P.ConcurrentModificationError$(receiver));
- }
- return value;
- },
- fold$2: function($receiver, initialValue, combine) {
- return this.fold$1$2($receiver, initialValue, combine, null);
- },
- firstWhere$2$orElse: function(receiver, test, orElse) {
- var i, element,
- end = receiver.length;
- for (i = 0; i < end; ++i) {
- element = receiver[i];
- if (test.call$1(element))
- return element;
- if (receiver.length !== end)
- throw H.wrapException(P.ConcurrentModificationError$(receiver));
- }
- if (orElse != null)
- return orElse.call$0();
- throw H.wrapException(H.IterableElementError_noElement());
- },
- lastWhere$2$orElse: function(receiver, test, orElse) {
- var i, element,
- $length = receiver.length;
- for (i = $length - 1; i >= 0; --i) {
- element = receiver[i];
- if (test.call$1(element))
- return element;
- if ($length !== receiver.length)
- throw H.wrapException(P.ConcurrentModificationError$(receiver));
- }
- if (orElse != null)
- return orElse.call$0();
- throw H.wrapException(H.IterableElementError_noElement());
- },
- elementAt$1: function(receiver, index) {
- return receiver[index];
- },
- sublist$2: function(receiver, start, end) {
- if (start < 0 || start > receiver.length)
- throw H.wrapException(P.RangeError$range(start, 0, receiver.length, "start", null));
- if (end == null)
- end = receiver.length;
- else if (end < start || end > receiver.length)
- throw H.wrapException(P.RangeError$range(end, start, receiver.length, "end", null));
- if (start === end)
- return H.setRuntimeTypeInfo([], [H.getTypeArgumentByIndex(receiver, 0)]);
- return H.setRuntimeTypeInfo(receiver.slice(start, end), [H.getTypeArgumentByIndex(receiver, 0)]);
- },
- sublist$1: function($receiver, start) {
- return this.sublist$2($receiver, start, null);
- },
- getRange$2: function(receiver, start, end) {
- P.RangeError_checkValidRange(start, end, receiver.length);
- return H.SubListIterable$(receiver, start, end, H.getTypeArgumentByIndex(receiver, 0));
- },
- get$first: function(receiver) {
- if (receiver.length > 0)
- return receiver[0];
- throw H.wrapException(H.IterableElementError_noElement());
- },
- get$last: function(receiver) {
- var t1 = receiver.length;
- if (t1 > 0)
- return receiver[t1 - 1];
- throw H.wrapException(H.IterableElementError_noElement());
- },
- get$single: function(receiver) {
- var t1 = receiver.length;
- if (t1 === 1)
- return receiver[0];
- if (t1 === 0)
- throw H.wrapException(H.IterableElementError_noElement());
- throw H.wrapException(H.IterableElementError_tooMany());
- },
- removeRange$2: function(receiver, start, end) {
- if (!!receiver.fixed$length)
- H.throwExpression(P.UnsupportedError$("removeRange"));
- P.RangeError_checkValidRange(start, end, receiver.length);
- receiver.splice(start, end - start);
- },
- setRange$4: function(receiver, start, end, iterable, skipCount) {
- var $length, t1, otherStart, otherList, i;
- if (!!receiver.immutable$list)
- H.throwExpression(P.UnsupportedError$("setRange"));
- P.RangeError_checkValidRange(start, end, receiver.length);
- $length = end - start;
- if ($length === 0)
- return;
- P.RangeError_checkNotNegative(skipCount, "skipCount");
- t1 = J.getInterceptor$(iterable);
- if (!!t1.$isList) {
- otherStart = skipCount;
- otherList = iterable;
- } else {
- otherList = t1.skip$1(iterable, skipCount).toList$1$growable(0, false);
- otherStart = 0;
- }
- t1 = J.getInterceptor$asx(otherList);
- if (otherStart + $length > t1.get$length(otherList))
- throw H.wrapException(H.IterableElementError_tooFew());
- if (otherStart < start)
- for (i = $length - 1; i >= 0; --i)
- receiver[start + i] = t1.$index(otherList, otherStart + i);
- else
- for (i = 0; i < $length; ++i)
- receiver[start + i] = t1.$index(otherList, otherStart + i);
- },
- setRange$3: function($receiver, start, end, iterable) {
- return this.setRange$4($receiver, start, end, iterable, 0);
- },
- fillRange$3: function(receiver, start, end, fillValue) {
- var i;
- if (!!receiver.immutable$list)
- H.throwExpression(P.UnsupportedError$("fill range"));
- P.RangeError_checkValidRange(start, end, receiver.length);
- for (i = start; i < end; ++i)
- receiver[i] = fillValue;
- },
- any$1: function(receiver, test) {
- var i,
- end = receiver.length;
- for (i = 0; i < end; ++i) {
- if (test.call$1(receiver[i]))
- return true;
- if (receiver.length !== end)
- throw H.wrapException(P.ConcurrentModificationError$(receiver));
- }
- return false;
- },
- every$1: function(receiver, test) {
- var i,
- end = receiver.length;
- for (i = 0; i < end; ++i) {
- if (!test.call$1(receiver[i]))
- return false;
- if (receiver.length !== end)
- throw H.wrapException(P.ConcurrentModificationError$(receiver));
- }
- return true;
- },
- get$reversed: function(receiver) {
- return new H.ReversedListIterable(receiver, [H.getTypeArgumentByIndex(receiver, 0)]);
- },
- sort$1: function(receiver, compare) {
- if (!!receiver.immutable$list)
- H.throwExpression(P.UnsupportedError$("sort"));
- H.Sort_sort(receiver, compare == null ? J._interceptors_JSArray__compareAny$closure() : compare);
- },
- sort$0: function($receiver) {
- return this.sort$1($receiver, null);
- },
- indexOf$1: function(receiver, element) {
- var i;
- if (0 >= receiver.length)
- return -1;
- for (i = 0; i < receiver.length; ++i)
- if (J.$eq$(receiver[i], element))
- return i;
- return -1;
- },
- contains$1: function(receiver, other) {
- var i;
- for (i = 0; i < receiver.length; ++i)
- if (J.$eq$(receiver[i], other))
- return true;
- return false;
- },
- get$isEmpty: function(receiver) {
- return receiver.length === 0;
- },
- get$isNotEmpty: function(receiver) {
- return receiver.length !== 0;
- },
- toString$0: function(receiver) {
- return P.IterableBase_iterableToFullString(receiver, "[", "]");
- },
- toList$1$growable: function(receiver, growable) {
- var t1 = H.getTypeArgumentByIndex(receiver, 0);
- return growable ? H.setRuntimeTypeInfo(receiver.slice(0), [t1]) : J.JSArray_JSArray$markFixed(receiver.slice(0), t1);
- },
- toList$0: function($receiver) {
- return this.toList$1$growable($receiver, true);
- },
- toSet$0: function(receiver) {
- return P.LinkedHashSet_LinkedHashSet$from(receiver, H.getTypeArgumentByIndex(receiver, 0));
- },
- get$iterator: function(receiver) {
- return new J.ArrayIterator(receiver, receiver.length);
- },
- get$hashCode: function(receiver) {
- return H.Primitives_objectHashCode(receiver);
- },
- get$length: function(receiver) {
- return receiver.length;
- },
- set$length: function(receiver, newLength) {
- if (!!receiver.fixed$length)
- H.throwExpression(P.UnsupportedError$("set length"));
- if (newLength < 0)
- throw H.wrapException(P.RangeError$range(newLength, 0, null, "newLength", null));
- receiver.length = newLength;
- },
- $index: function(receiver, index) {
- if (typeof index !== "number" || Math.floor(index) !== index)
- throw H.wrapException(H.diagnoseIndexError(receiver, index));
- if (index >= receiver.length || index < 0)
- throw H.wrapException(H.diagnoseIndexError(receiver, index));
- return receiver[index];
- },
- $indexSet: function(receiver, index, value) {
- if (!!receiver.immutable$list)
- H.throwExpression(P.UnsupportedError$("indexed set"));
- if (typeof index !== "number" || Math.floor(index) !== index)
- throw H.wrapException(H.diagnoseIndexError(receiver, index));
- if (index >= receiver.length || index < 0)
- throw H.wrapException(H.diagnoseIndexError(receiver, index));
- receiver[index] = value;
- },
- $add: function(receiver, other) {
- var totalLength = receiver.length + other.length,
- t1 = H.setRuntimeTypeInfo([], [H.getTypeArgumentByIndex(receiver, 0)]);
- this.set$length(t1, totalLength);
- this.setRange$3(t1, 0, receiver.length, receiver);
- this.setRange$3(t1, receiver.length, totalLength, other);
- return t1;
- },
- $isEfficientLengthIterable: 1,
- $isIterable: 1,
- $isList: 1
- };
- J.JSUnmodifiableArray.prototype = {};
- J.ArrayIterator.prototype = {
- get$current: function(_) {
- return this._current;
- },
- moveNext$0: function() {
- var t2, _this = this,
- t1 = _this._iterable,
- $length = t1.length;
- if (_this._length !== $length)
- throw H.wrapException(H.throwConcurrentModificationError(t1));
- t2 = _this._index;
- if (t2 >= $length) {
- _this._current = null;
- return false;
- }
- _this._current = t1[t2];
- _this._index = t2 + 1;
- return true;
- }
- };
- J.JSNumber.prototype = {
- compareTo$1: function(receiver, b) {
- var bIsNegative;
- if (typeof b !== "number")
- throw H.wrapException(H.argumentErrorValue(b));
- if (receiver < b)
- return -1;
- else if (receiver > b)
- return 1;
- else if (receiver === b) {
- if (receiver === 0) {
- bIsNegative = this.get$isNegative(b);
- if (this.get$isNegative(receiver) === bIsNegative)
- return 0;
- if (this.get$isNegative(receiver))
- return -1;
- return 1;
- }
- return 0;
- } else if (isNaN(receiver)) {
- if (isNaN(b))
- return 0;
- return 1;
- } else
- return -1;
- },
- get$isNegative: function(receiver) {
- return receiver === 0 ? 1 / receiver < 0 : receiver < 0;
- },
- ceil$0: function(receiver) {
- var truncated, d;
- if (receiver >= 0) {
- if (receiver <= 2147483647) {
- truncated = receiver | 0;
- return receiver === truncated ? truncated : truncated + 1;
- }
- } else if (receiver >= -2147483648)
- return receiver | 0;
- d = Math.ceil(receiver);
- if (isFinite(d))
- return d;
- throw H.wrapException(P.UnsupportedError$("" + receiver + ".ceil()"));
- },
- floor$0: function(receiver) {
- var truncated, d;
- if (receiver >= 0) {
- if (receiver <= 2147483647)
- return receiver | 0;
- } else if (receiver >= -2147483648) {
- truncated = receiver | 0;
- return receiver === truncated ? truncated : truncated - 1;
- }
- d = Math.floor(receiver);
- if (isFinite(d))
- return d;
- throw H.wrapException(P.UnsupportedError$("" + receiver + ".floor()"));
- },
- round$0: function(receiver) {
- if (receiver > 0) {
- if (receiver !== 1 / 0)
- return Math.round(receiver);
- } else if (receiver > -1 / 0)
- return 0 - Math.round(0 - receiver);
- throw H.wrapException(P.UnsupportedError$("" + receiver + ".round()"));
- },
- clamp$2: function(receiver, lowerLimit, upperLimit) {
- if (C.JSInt_methods.compareTo$1(lowerLimit, upperLimit) > 0)
- throw H.wrapException(H.argumentErrorValue(lowerLimit));
- if (this.compareTo$1(receiver, lowerLimit) < 0)
- return lowerLimit;
- if (this.compareTo$1(receiver, upperLimit) > 0)
- return upperLimit;
- return receiver;
- },
- toRadixString$1: function(receiver, radix) {
- var result, match, exponent, t1;
- if (radix < 2 || radix > 36)
- throw H.wrapException(P.RangeError$range(radix, 2, 36, "radix", null));
- result = receiver.toString(radix);
- if (C.JSString_methods.codeUnitAt$1(result, result.length - 1) !== 41)
- return result;
- match = /^([\da-z]+)(?:\.([\da-z]+))?\(e\+(\d+)\)$/.exec(result);
- if (match == null)
- H.throwExpression(P.UnsupportedError$("Unexpected toString result: " + result));
- result = match[1];
- exponent = +match[3];
- t1 = match[2];
- if (t1 != null) {
- result += t1;
- exponent -= t1.length;
- }
- return result + C.JSString_methods.$mul("0", exponent);
- },
- toString$0: function(receiver) {
- if (receiver === 0 && 1 / receiver < 0)
- return "-0.0";
- else
- return "" + receiver;
- },
- get$hashCode: function(receiver) {
- var absolute, floorLog2, factor, scaled,
- intValue = receiver | 0;
- if (receiver === intValue)
- return 536870911 & intValue;
- absolute = Math.abs(receiver);
- floorLog2 = Math.log(absolute) / 0.6931471805599453 | 0;
- factor = Math.pow(2, floorLog2);
- scaled = absolute < 1 ? absolute / factor : factor / absolute;
- return 536870911 & ((scaled * 9007199254740992 | 0) + (scaled * 3542243181176521 | 0)) * 599197 + floorLog2 * 1259;
- },
- $add: function(receiver, other) {
- if (typeof other !== "number")
- throw H.wrapException(H.argumentErrorValue(other));
- return receiver + other;
- },
- $mod: function(receiver, other) {
- var result = receiver % other;
- if (result === 0)
- return 0;
- if (result > 0)
- return result;
- if (other < 0)
- return result - other;
- else
- return result + other;
- },
- $tdiv: function(receiver, other) {
- if ((receiver | 0) === receiver)
- if (other >= 1 || other < -1)
- return receiver / other | 0;
- return this._tdivSlow$1(receiver, other);
- },
- _tdivFast$1: function(receiver, other) {
- return (receiver | 0) === receiver ? receiver / other | 0 : this._tdivSlow$1(receiver, other);
- },
- _tdivSlow$1: function(receiver, other) {
- var quotient = receiver / other;
- if (quotient >= -2147483648 && quotient <= 2147483647)
- return quotient | 0;
- if (quotient > 0) {
- if (quotient !== 1 / 0)
- return Math.floor(quotient);
- } else if (quotient > -1 / 0)
- return Math.ceil(quotient);
- throw H.wrapException(P.UnsupportedError$("Result of truncating division is " + H.S(quotient) + ": " + H.S(receiver) + " ~/ " + other));
- },
- _shrOtherPositive$1: function(receiver, other) {
- var t1;
- if (receiver > 0)
- t1 = this._shrBothPositive$1(receiver, other);
- else {
- t1 = other > 31 ? 31 : other;
- t1 = receiver >> t1 >>> 0;
- }
- return t1;
- },
- _shrReceiverPositive$1: function(receiver, other) {
- if (other < 0)
- throw H.wrapException(H.argumentErrorValue(other));
- return this._shrBothPositive$1(receiver, other);
- },
- _shrBothPositive$1: function(receiver, other) {
- return other > 31 ? 0 : receiver >>> other;
- },
- $isComparable: 1,
- $asComparable: function() {
- return [P.num];
- },
- $isdouble: 1,
- $isnum: 1
- };
- J.JSInt.prototype = {$isint: 1};
- J.JSDouble.prototype = {};
- J.JSString.prototype = {
- codeUnitAt$1: function(receiver, index) {
- if (typeof index !== "number" || Math.floor(index) !== index)
- throw H.wrapException(H.diagnoseIndexError(receiver, index));
- if (index < 0)
- throw H.wrapException(H.diagnoseIndexError(receiver, index));
- if (index >= receiver.length)
- H.throwExpression(H.diagnoseIndexError(receiver, index));
- return receiver.charCodeAt(index);
- },
- _codeUnitAt$1: function(receiver, index) {
- if (index >= receiver.length)
- throw H.wrapException(H.diagnoseIndexError(receiver, index));
- return receiver.charCodeAt(index);
- },
- allMatches$2: function(receiver, string, start) {
- var t1;
- if (typeof string !== "string")
- H.throwExpression(H.argumentErrorValue(string));
- t1 = string.length;
- if (start > t1)
- throw H.wrapException(P.RangeError$range(start, 0, t1, null, null));
- return new H._StringAllMatchesIterable(string, receiver, start);
- },
- allMatches$1: function($receiver, string) {
- return this.allMatches$2($receiver, string, 0);
- },
- matchAsPrefix$2: function(receiver, string, start) {
- var t1, t2, i;
- if (start < 0 || start > string.length)
- throw H.wrapException(P.RangeError$range(start, 0, string.length, null, null));
- t1 = receiver.length;
- if (start + t1 > string.length)
- return;
- for (t2 = J.getInterceptor$s(string), i = 0; i < t1; ++i)
- if (t2.codeUnitAt$1(string, start + i) !== this._codeUnitAt$1(receiver, i))
- return;
- return new H.StringMatch(start, receiver);
- },
- $add: function(receiver, other) {
- if (typeof other !== "string")
- throw H.wrapException(P.ArgumentError$value(other, null, null));
- return receiver + other;
- },
- endsWith$1: function(receiver, other) {
- var otherLength = other.length,
- t1 = receiver.length;
- if (otherLength > t1)
- return false;
- return other === this.substring$1(receiver, t1 - otherLength);
- },
- replaceFirst$2: function(receiver, from, to) {
- P.RangeError_checkValueInInterval(0, 0, receiver.length, "startIndex");
- return H.stringReplaceFirstUnchecked(receiver, from, to, 0);
- },
- replaceRange$3: function(receiver, start, end, replacement) {
- if (typeof replacement !== "string")
- H.throwExpression(H.argumentErrorValue(replacement));
- end = P.RangeError_checkValidRange(start, end, receiver.length);
- return H.stringReplaceRangeUnchecked(receiver, start, end, replacement);
- },
- startsWith$2: function(receiver, pattern, index) {
- var endIndex;
- if (typeof index !== "number" || Math.floor(index) !== index)
- H.throwExpression(H.argumentErrorValue(index));
- if (index < 0 || index > receiver.length)
- throw H.wrapException(P.RangeError$range(index, 0, receiver.length, null, null));
- if (typeof pattern === "string") {
- endIndex = index + pattern.length;
- if (endIndex > receiver.length)
- return false;
- return pattern === receiver.substring(index, endIndex);
- }
- return J.matchAsPrefix$2$s(pattern, receiver, index) != null;
- },
- startsWith$1: function($receiver, pattern) {
- return this.startsWith$2($receiver, pattern, 0);
- },
- substring$2: function(receiver, startIndex, endIndex) {
- var _null = null;
- if (typeof startIndex !== "number" || Math.floor(startIndex) !== startIndex)
- H.throwExpression(H.argumentErrorValue(startIndex));
- if (endIndex == null)
- endIndex = receiver.length;
- if (startIndex < 0)
- throw H.wrapException(P.RangeError$value(startIndex, _null, _null));
- if (startIndex > endIndex)
- throw H.wrapException(P.RangeError$value(startIndex, _null, _null));
- if (endIndex > receiver.length)
- throw H.wrapException(P.RangeError$value(endIndex, _null, _null));
- return receiver.substring(startIndex, endIndex);
- },
- substring$1: function($receiver, startIndex) {
- return this.substring$2($receiver, startIndex, null);
- },
- trim$0: function(receiver) {
- var startIndex, t1, endIndex0,
- result = receiver.trim(),
- endIndex = result.length;
- if (endIndex === 0)
- return result;
- if (this._codeUnitAt$1(result, 0) === 133) {
- startIndex = J.JSString__skipLeadingWhitespace(result, 1);
- if (startIndex === endIndex)
- return "";
- } else
- startIndex = 0;
- t1 = endIndex - 1;
- endIndex0 = this.codeUnitAt$1(result, t1) === 133 ? J.JSString__skipTrailingWhitespace(result, t1) : endIndex;
- if (startIndex === 0 && endIndex0 === endIndex)
- return result;
- return result.substring(startIndex, endIndex0);
- },
- trimRight$0: function(receiver) {
- var result, endIndex, t1;
- if (typeof receiver.trimRight != "undefined") {
- result = receiver.trimRight();
- endIndex = result.length;
- if (endIndex === 0)
- return result;
- t1 = endIndex - 1;
- if (this.codeUnitAt$1(result, t1) === 133)
- endIndex = J.JSString__skipTrailingWhitespace(result, t1);
- } else {
- endIndex = J.JSString__skipTrailingWhitespace(receiver, receiver.length);
- result = receiver;
- }
- if (endIndex === result.length)
- return result;
- if (endIndex === 0)
- return "";
- return result.substring(0, endIndex);
- },
- $mul: function(receiver, times) {
- var s, result;
- if (0 >= times)
- return "";
- if (times === 1 || receiver.length === 0)
- return receiver;
- if (times !== times >>> 0)
- throw H.wrapException(C.C_OutOfMemoryError);
- for (s = receiver, result = ""; true;) {
- if ((times & 1) === 1)
- result = s + result;
- times = times >>> 1;
- if (times === 0)
- break;
- s += s;
- }
- return result;
- },
- padLeft$2: function(receiver, width, padding) {
- var delta = width - receiver.length;
- if (delta <= 0)
- return receiver;
- return this.$mul(padding, delta) + receiver;
- },
- padRight$1: function(receiver, width) {
- var delta = width - receiver.length;
- if (delta <= 0)
- return receiver;
- return receiver + this.$mul(" ", delta);
- },
- indexOf$2: function(receiver, pattern, start) {
- var t1, t2, i;
- if (pattern == null)
- H.throwExpression(H.argumentErrorValue(pattern));
- if (start < 0 || start > receiver.length)
- throw H.wrapException(P.RangeError$range(start, 0, receiver.length, null, null));
- if (typeof pattern === "string")
- return receiver.indexOf(pattern, start);
- for (t1 = receiver.length, t2 = J.getInterceptor$s(pattern), i = start; i <= t1; ++i)
- if (t2.matchAsPrefix$2(pattern, receiver, i) != null)
- return i;
- return -1;
- },
- indexOf$1: function($receiver, pattern) {
- return this.indexOf$2($receiver, pattern, 0);
- },
- lastIndexOf$2: function(receiver, pattern, start) {
- var t1, t2, i;
- if (pattern == null)
- H.throwExpression(H.argumentErrorValue(pattern));
- if (start == null)
- start = receiver.length;
- else if (start < 0 || start > receiver.length)
- throw H.wrapException(P.RangeError$range(start, 0, receiver.length, null, null));
- if (typeof pattern === "string") {
- t1 = pattern.length;
- t2 = receiver.length;
- if (start + t1 > t2)
- start = t2 - t1;
- return receiver.lastIndexOf(pattern, start);
- }
- for (t1 = J.getInterceptor$s(pattern), i = start; i >= 0; --i)
- if (t1.matchAsPrefix$2(pattern, receiver, i) != null)
- return i;
- return -1;
- },
- lastIndexOf$1: function($receiver, pattern) {
- return this.lastIndexOf$2($receiver, pattern, null);
- },
- contains$2: function(receiver, other, startIndex) {
- var t1;
- if (other == null)
- H.throwExpression(H.argumentErrorValue(other));
- t1 = receiver.length;
- if (startIndex > t1)
- throw H.wrapException(P.RangeError$range(startIndex, 0, t1, null, null));
- return H.stringContainsUnchecked(receiver, other, startIndex);
- },
- contains$1: function($receiver, other) {
- return this.contains$2($receiver, other, 0);
- },
- get$isNotEmpty: function(receiver) {
- return receiver.length !== 0;
- },
- compareTo$1: function(receiver, other) {
- var t1;
- if (typeof other !== "string")
- throw H.wrapException(H.argumentErrorValue(other));
- if (receiver === other)
- t1 = 0;
- else
- t1 = receiver < other ? -1 : 1;
- return t1;
- },
- toString$0: function(receiver) {
- return receiver;
- },
- get$hashCode: function(receiver) {
- var t1, hash, i;
- for (t1 = receiver.length, hash = 0, i = 0; i < t1; ++i) {
- hash = 536870911 & hash + receiver.charCodeAt(i);
- hash = 536870911 & hash + ((524287 & hash) << 10);
- hash ^= hash >> 6;
- }
- hash = 536870911 & hash + ((67108863 & hash) << 3);
- hash ^= hash >> 11;
- return 536870911 & hash + ((16383 & hash) << 15);
- },
- get$length: function(receiver) {
- return receiver.length;
- },
- $isComparable: 1,
- $asComparable: function() {
- return [P.String];
- },
- $isString: 1
- };
- H._CastIterableBase.prototype = {
- get$iterator: function(_) {
- return new H.CastIterator(J.get$iterator$ax(this.get$_source()), this.$ti);
- },
- get$length: function(_) {
- return J.get$length$asx(this.get$_source());
- },
- get$isEmpty: function(_) {
- return J.get$isEmpty$asx(this.get$_source());
- },
- get$isNotEmpty: function(_) {
- return J.get$isNotEmpty$asx(this.get$_source());
- },
- skip$1: function(_, count) {
- return H.CastIterable_CastIterable(J.skip$1$ax(this.get$_source(), count), H.getTypeArgumentByIndex(this, 0), H.getTypeArgumentByIndex(this, 1));
- },
- take$1: function(_, count) {
- return H.CastIterable_CastIterable(J.take$1$ax(this.get$_source(), count), H.getTypeArgumentByIndex(this, 0), H.getTypeArgumentByIndex(this, 1));
- },
- elementAt$1: function(_, index) {
- return H.subtypeOfRuntimeTypeCast(J.elementAt$1$ax(this.get$_source(), index), H.getTypeArgumentByIndex(this, 1));
- },
- get$first: function(_) {
- return H.subtypeOfRuntimeTypeCast(J.get$first$ax(this.get$_source()), H.getTypeArgumentByIndex(this, 1));
- },
- get$last: function(_) {
- return H.subtypeOfRuntimeTypeCast(J.get$last$ax(this.get$_source()), H.getTypeArgumentByIndex(this, 1));
- },
- get$single: function(_) {
- return H.subtypeOfRuntimeTypeCast(J.get$single$ax(this.get$_source()), H.getTypeArgumentByIndex(this, 1));
- },
- contains$1: function(_, other) {
- return J.contains$1$asx(this.get$_source(), other);
- },
- toString$0: function(_) {
- return J.toString$0$(this.get$_source());
- },
- $asIterable: function($S, $T) {
- return [$T];
- }
- };
- H.CastIterator.prototype = {
- moveNext$0: function() {
- return this._source.moveNext$0();
- },
- get$current: function(_) {
- var t1 = this._source;
- return H.subtypeOfRuntimeTypeCast(t1.get$current(t1), H.getTypeArgumentByIndex(this, 1));
- }
- };
- H.CastIterable.prototype = {
- cast$1$0: function(_, $R) {
- return H.CastIterable_CastIterable(this._source, H.getTypeArgumentByIndex(this, 0), $R);
- },
- get$_source: function() {
- return this._source;
- }
- };
- H._EfficientLengthCastIterable.prototype = {$isEfficientLengthIterable: 1,
- $asEfficientLengthIterable: function($S, $T) {
- return [$T];
- }
- };
- H._CastListBase.prototype = {
- $index: function(_, index) {
- return H.subtypeOfRuntimeTypeCast(J.$index$asx(this._source, index), H.getTypeArgumentByIndex(this, 1));
- },
- $indexSet: function(_, index, value) {
- J.$indexSet$ax(this._source, index, H.subtypeOfRuntimeTypeCast(value, H.getTypeArgumentByIndex(this, 0)));
- },
- set$length: function(_, $length) {
- J.set$length$asx(this._source, $length);
- },
- add$1: function(_, value) {
- J.add$1$ax(this._source, H.subtypeOfRuntimeTypeCast(value, H.getTypeArgumentByIndex(this, 0)));
- },
- addAll$1: function(_, values) {
- J.addAll$1$ax(this._source, H.CastIterable_CastIterable(values, H.getTypeArgumentByIndex(this, 1), H.getTypeArgumentByIndex(this, 0)));
- },
- sort$1: function(_, compare) {
- var t1 = compare == null ? null : new H._CastListBase_sort_closure(this, compare);
- J.sort$1$ax(this._source, t1);
- },
- setRange$4: function(_, start, end, iterable, skipCount) {
- J.setRange$4$ax(this._source, start, end, H.CastIterable_CastIterable(iterable, H.getTypeArgumentByIndex(this, 1), H.getTypeArgumentByIndex(this, 0)), skipCount);
- },
- fillRange$3: function(_, start, end, fillValue) {
- J.fillRange$3$ax(this._source, start, end, H.subtypeOfRuntimeTypeCast(fillValue, H.getTypeArgumentByIndex(this, 0)));
- },
- $isEfficientLengthIterable: 1,
- $asEfficientLengthIterable: function($S, $T) {
- return [$T];
- },
- $asListMixin: function($S, $T) {
- return [$T];
- },
- $isList: 1,
- $asList: function($S, $T) {
- return [$T];
- }
- };
- H._CastListBase_sort_closure.prototype = {
- call$2: function(v1, v2) {
- var t1 = H.getTypeArgumentByIndex(this.$this, 1);
- return this.compare.call$2(H.subtypeOfRuntimeTypeCast(v1, t1), H.subtypeOfRuntimeTypeCast(v2, t1));
- },
- $signature: function() {
- var t1 = H.getTypeArgumentByIndex(this.$this, 0);
- return {func: 1, ret: P.int, args: [t1, t1]};
- }
- };
- H.CastList.prototype = {
- cast$1$0: function(_, $R) {
- return new H.CastList(this._source, [H.getTypeArgumentByIndex(this, 0), $R]);
- },
- get$_source: function() {
- return this._source;
- }
- };
- H.CastSet.prototype = {
- cast$1$0: function(_, $R) {
- return new H.CastSet(this._source, this._emptySet, [H.getTypeArgumentByIndex(this, 0), $R]);
- },
- add$1: function(_, value) {
- return this._source.add$1(0, H.subtypeOfRuntimeTypeCast(value, H.getTypeArgumentByIndex(this, 0)));
- },
- addAll$1: function(_, elements) {
- this._source.addAll$1(0, H.CastIterable_CastIterable(elements, H.getTypeArgumentByIndex(this, 1), H.getTypeArgumentByIndex(this, 0)));
- },
- toSet$0: function(_) {
- var t1 = this._emptySet,
- result = t1 == null ? P.LinkedHashSet_LinkedHashSet(H.getTypeArgumentByIndex(this, 1)) : t1.call$0();
- result.addAll$1(0, this);
- return result;
- },
- $isEfficientLengthIterable: 1,
- $asEfficientLengthIterable: function($S, $T) {
- return [$T];
- },
- $isSet: 1,
- $asSet: function($S, $T) {
- return [$T];
- },
- get$_source: function() {
- return this._source;
- }
- };
- H.CastQueue.prototype = {
- cast$1$0: function(_, $R) {
- return new H.CastQueue(this._source, [H.getTypeArgumentByIndex(this, 0), $R]);
- },
- add$1: function(_, value) {
- this._source._collection$_add$1(H.subtypeOfRuntimeTypeCast(value, H.getTypeArgumentByIndex(this, 0)));
- },
- $isEfficientLengthIterable: 1,
- $asEfficientLengthIterable: function($S, $T) {
- return [$T];
- },
- $isQueue: 1,
- $asQueue: function($S, $T) {
- return [$T];
- },
- get$_source: function() {
- return this._source;
- }
- };
- H.CodeUnits.prototype = {
- get$length: function(_) {
- return this.__internal$_string.length;
- },
- $index: function(_, i) {
- return C.JSString_methods.codeUnitAt$1(this.__internal$_string, i);
- },
- $asEfficientLengthIterable: function() {
- return [P.int];
- },
- $asListMixin: function() {
- return [P.int];
- },
- $asIterable: function() {
- return [P.int];
- },
- $asList: function() {
- return [P.int];
- }
- };
- H.EfficientLengthIterable.prototype = {};
- H.ListIterable.prototype = {
- get$iterator: function(_) {
- return new H.ListIterator(this, this.get$length(this));
- },
- get$isEmpty: function(_) {
- return this.get$length(this) === 0;
- },
- get$first: function(_) {
- if (this.get$length(this) === 0)
- throw H.wrapException(H.IterableElementError_noElement());
- return this.elementAt$1(0, 0);
- },
- get$last: function(_) {
- var _this = this;
- if (_this.get$length(_this) === 0)
- throw H.wrapException(H.IterableElementError_noElement());
- return _this.elementAt$1(0, _this.get$length(_this) - 1);
- },
- get$single: function(_) {
- var _this = this;
- if (_this.get$length(_this) === 0)
- throw H.wrapException(H.IterableElementError_noElement());
- if (_this.get$length(_this) > 1)
- throw H.wrapException(H.IterableElementError_tooMany());
- return _this.elementAt$1(0, 0);
- },
- contains$1: function(_, element) {
- var i, _this = this,
- $length = _this.get$length(_this);
- for (i = 0; i < $length; ++i) {
- if (J.$eq$(_this.elementAt$1(0, i), element))
- return true;
- if ($length !== _this.get$length(_this))
- throw H.wrapException(P.ConcurrentModificationError$(_this));
- }
- return false;
- },
- any$1: function(_, test) {
- var i, _this = this,
- $length = _this.get$length(_this);
- for (i = 0; i < $length; ++i) {
- if (test.call$1(_this.elementAt$1(0, i)))
- return true;
- if ($length !== _this.get$length(_this))
- throw H.wrapException(P.ConcurrentModificationError$(_this));
- }
- return false;
- },
- join$1: function(_, separator) {
- var first, t1, i, _this = this,
- $length = _this.get$length(_this);
- if (separator.length !== 0) {
- if ($length === 0)
- return "";
- first = H.S(_this.elementAt$1(0, 0));
- if ($length !== _this.get$length(_this))
- throw H.wrapException(P.ConcurrentModificationError$(_this));
- for (t1 = first, i = 1; i < $length; ++i) {
- t1 = t1 + separator + H.S(_this.elementAt$1(0, i));
- if ($length !== _this.get$length(_this))
- throw H.wrapException(P.ConcurrentModificationError$(_this));
- }
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- } else {
- for (i = 0, t1 = ""; i < $length; ++i) {
- t1 += H.S(_this.elementAt$1(0, i));
- if ($length !== _this.get$length(_this))
- throw H.wrapException(P.ConcurrentModificationError$(_this));
- }
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- }
- },
- join$0: function($receiver) {
- return this.join$1($receiver, "");
- },
- where$1: function(_, test) {
- return this.super$Iterable$where(0, test);
- },
- map$1$1: function(_, f, $T) {
- return new H.MappedListIterable(this, f, [H.getRuntimeTypeArgument(this, "ListIterable", 0), $T]);
- },
- reduce$1: function(_, combine) {
- var value, i, _this = this,
- $length = _this.get$length(_this);
- if ($length === 0)
- throw H.wrapException(H.IterableElementError_noElement());
- value = _this.elementAt$1(0, 0);
- for (i = 1; i < $length; ++i) {
- value = combine.call$2(value, _this.elementAt$1(0, i));
- if ($length !== _this.get$length(_this))
- throw H.wrapException(P.ConcurrentModificationError$(_this));
- }
- return value;
- },
- fold$1$2: function(_, initialValue, combine) {
- var value, i, _this = this,
- $length = _this.get$length(_this);
- for (value = initialValue, i = 0; i < $length; ++i) {
- value = combine.call$2(value, _this.elementAt$1(0, i));
- if ($length !== _this.get$length(_this))
- throw H.wrapException(P.ConcurrentModificationError$(_this));
- }
- return value;
- },
- fold$2: function($receiver, initialValue, combine) {
- return this.fold$1$2($receiver, initialValue, combine, null);
- },
- skip$1: function(_, count) {
- return H.SubListIterable$(this, count, null, H.getRuntimeTypeArgument(this, "ListIterable", 0));
- },
- take$1: function(_, count) {
- return H.SubListIterable$(this, 0, count, H.getRuntimeTypeArgument(this, "ListIterable", 0));
- },
- toList$1$growable: function(_, growable) {
- var result, t2, i, _this = this,
- t1 = H.getRuntimeTypeArgument(_this, "ListIterable", 0);
- if (growable) {
- result = H.setRuntimeTypeInfo([], [t1]);
- C.JSArray_methods.set$length(result, _this.get$length(_this));
- } else {
- t2 = new Array(_this.get$length(_this));
- t2.fixed$length = Array;
- result = H.setRuntimeTypeInfo(t2, [t1]);
- }
- for (i = 0; i < _this.get$length(_this); ++i)
- result[i] = _this.elementAt$1(0, i);
- return result;
- },
- toList$0: function($receiver) {
- return this.toList$1$growable($receiver, true);
- },
- toSet$0: function(_) {
- var i, _this = this,
- result = P.LinkedHashSet_LinkedHashSet(H.getRuntimeTypeArgument(_this, "ListIterable", 0));
- for (i = 0; i < _this.get$length(_this); ++i)
- result.add$1(0, _this.elementAt$1(0, i));
- return result;
- }
- };
- H.SubListIterable.prototype = {
- get$_endIndex: function() {
- var $length = J.get$length$asx(this.__internal$_iterable),
- t1 = this._endOrLength;
- if (t1 == null || t1 > $length)
- return $length;
- return t1;
- },
- get$_startIndex: function() {
- var $length = J.get$length$asx(this.__internal$_iterable),
- t1 = this.__internal$_start;
- if (t1 > $length)
- return $length;
- return t1;
- },
- get$length: function(_) {
- var t2,
- $length = J.get$length$asx(this.__internal$_iterable),
- t1 = this.__internal$_start;
- if (t1 >= $length)
- return 0;
- t2 = this._endOrLength;
- if (t2 == null || t2 >= $length)
- return $length - t1;
- return t2 - t1;
- },
- elementAt$1: function(_, index) {
- var _this = this,
- realIndex = _this.get$_startIndex() + index;
- if (index < 0 || realIndex >= _this.get$_endIndex())
- throw H.wrapException(P.IndexError$(index, _this, "index", null, null));
- return J.elementAt$1$ax(_this.__internal$_iterable, realIndex);
- },
- skip$1: function(_, count) {
- var newStart, t1, _this = this;
- P.RangeError_checkNotNegative(count, "count");
- newStart = _this.__internal$_start + count;
- t1 = _this._endOrLength;
- if (t1 != null && newStart >= t1)
- return new H.EmptyIterable(_this.$ti);
- return H.SubListIterable$(_this.__internal$_iterable, newStart, t1, H.getTypeArgumentByIndex(_this, 0));
- },
- take$1: function(_, count) {
- var t1, t2, newEnd, _this = this;
- P.RangeError_checkNotNegative(count, "count");
- t1 = _this._endOrLength;
- t2 = _this.__internal$_start;
- if (t1 == null)
- return H.SubListIterable$(_this.__internal$_iterable, t2, t2 + count, H.getTypeArgumentByIndex(_this, 0));
- else {
- newEnd = t2 + count;
- if (t1 < newEnd)
- return _this;
- return H.SubListIterable$(_this.__internal$_iterable, t2, newEnd, H.getTypeArgumentByIndex(_this, 0));
- }
- },
- toList$1$growable: function(_, growable) {
- var $length, t3, result, t4, i, _this = this,
- start = _this.__internal$_start,
- t1 = _this.__internal$_iterable,
- t2 = J.getInterceptor$asx(t1),
- end = t2.get$length(t1),
- end0 = _this._endOrLength;
- if (end0 != null && end0 < end)
- end = end0;
- $length = end - start;
- if ($length < 0)
- $length = 0;
- t3 = _this.$ti;
- if (growable) {
- result = H.setRuntimeTypeInfo([], t3);
- C.JSArray_methods.set$length(result, $length);
- } else {
- t4 = new Array($length);
- t4.fixed$length = Array;
- result = H.setRuntimeTypeInfo(t4, t3);
- }
- for (i = 0; i < $length; ++i) {
- result[i] = t2.elementAt$1(t1, start + i);
- if (t2.get$length(t1) < end)
- throw H.wrapException(P.ConcurrentModificationError$(_this));
- }
- return result;
- },
- toList$0: function($receiver) {
- return this.toList$1$growable($receiver, true);
- }
- };
- H.ListIterator.prototype = {
- get$current: function(_) {
- return this.__internal$_current;
- },
- moveNext$0: function() {
- var t3, _this = this,
- t1 = _this.__internal$_iterable,
- t2 = J.getInterceptor$asx(t1),
- $length = t2.get$length(t1);
- if (_this.__internal$_length !== $length)
- throw H.wrapException(P.ConcurrentModificationError$(t1));
- t3 = _this.__internal$_index;
- if (t3 >= $length) {
- _this.__internal$_current = null;
- return false;
- }
- _this.__internal$_current = t2.elementAt$1(t1, t3);
- ++_this.__internal$_index;
- return true;
- }
- };
- H.MappedIterable.prototype = {
- get$iterator: function(_) {
- return new H.MappedIterator(J.get$iterator$ax(this.__internal$_iterable), this._f);
- },
- get$length: function(_) {
- return J.get$length$asx(this.__internal$_iterable);
- },
- get$isEmpty: function(_) {
- return J.get$isEmpty$asx(this.__internal$_iterable);
- },
- get$first: function(_) {
- return this._f.call$1(J.get$first$ax(this.__internal$_iterable));
- },
- get$last: function(_) {
- return this._f.call$1(J.get$last$ax(this.__internal$_iterable));
- },
- get$single: function(_) {
- return this._f.call$1(J.get$single$ax(this.__internal$_iterable));
- },
- elementAt$1: function(_, index) {
- return this._f.call$1(J.elementAt$1$ax(this.__internal$_iterable, index));
- },
- $asIterable: function($S, $T) {
- return [$T];
- }
- };
- H.EfficientLengthMappedIterable.prototype = {$isEfficientLengthIterable: 1,
- $asEfficientLengthIterable: function($S, $T) {
- return [$T];
- }
- };
- H.MappedIterator.prototype = {
- moveNext$0: function() {
- var _this = this,
- t1 = _this._iterator;
- if (t1.moveNext$0()) {
- _this.__internal$_current = _this._f.call$1(t1.get$current(t1));
- return true;
- }
- _this.__internal$_current = null;
- return false;
- },
- get$current: function(_) {
- return this.__internal$_current;
- }
- };
- H.MappedListIterable.prototype = {
- get$length: function(_) {
- return J.get$length$asx(this._source);
- },
- elementAt$1: function(_, index) {
- return this._f.call$1(J.elementAt$1$ax(this._source, index));
- },
- $asEfficientLengthIterable: function($S, $T) {
- return [$T];
- },
- $asListIterable: function($S, $T) {
- return [$T];
- },
- $asIterable: function($S, $T) {
- return [$T];
- }
- };
- H.WhereIterable.prototype = {
- get$iterator: function(_) {
- return new H.WhereIterator(J.get$iterator$ax(this.__internal$_iterable), this._f);
- },
- map$1$1: function(_, f, $T) {
- return new H.MappedIterable(this, f, [H.getTypeArgumentByIndex(this, 0), $T]);
- }
- };
- H.WhereIterator.prototype = {
- moveNext$0: function() {
- var t1, t2;
- for (t1 = this._iterator, t2 = this._f; t1.moveNext$0();)
- if (t2.call$1(t1.get$current(t1)))
- return true;
- return false;
- },
- get$current: function(_) {
- var t1 = this._iterator;
- return t1.get$current(t1);
- }
- };
- H.ExpandIterable.prototype = {
- get$iterator: function(_) {
- return new H.ExpandIterator(J.get$iterator$ax(this.__internal$_iterable), this._f, C.C_EmptyIterator);
- },
- $asIterable: function($S, $T) {
- return [$T];
- }
- };
- H.ExpandIterator.prototype = {
- get$current: function(_) {
- return this.__internal$_current;
- },
- moveNext$0: function() {
- var t2, t3, _this = this,
- t1 = _this._currentExpansion;
- if (t1 == null)
- return false;
- for (t2 = _this._iterator, t3 = _this._f; !t1.moveNext$0();) {
- _this.__internal$_current = null;
- if (t2.moveNext$0()) {
- _this._currentExpansion = null;
- t1 = J.get$iterator$ax(t3.call$1(t2.get$current(t2)));
- _this._currentExpansion = t1;
- } else
- return false;
- }
- t1 = _this._currentExpansion;
- _this.__internal$_current = t1.get$current(t1);
- return true;
- }
- };
- H.TakeIterable.prototype = {
- get$iterator: function(_) {
- return new H.TakeIterator(J.get$iterator$ax(this.__internal$_iterable), this._takeCount);
- }
- };
- H.EfficientLengthTakeIterable.prototype = {
- get$length: function(_) {
- var iterableLength = J.get$length$asx(this.__internal$_iterable),
- t1 = this._takeCount;
- if (iterableLength > t1)
- return t1;
- return iterableLength;
- },
- $isEfficientLengthIterable: 1
- };
- H.TakeIterator.prototype = {
- moveNext$0: function() {
- if (--this._remaining >= 0)
- return this._iterator.moveNext$0();
- this._remaining = -1;
- return false;
- },
- get$current: function(_) {
- var t1;
- if (this._remaining < 0)
- return;
- t1 = this._iterator;
- return t1.get$current(t1);
- }
- };
- H.SkipIterable.prototype = {
- skip$1: function(_, count) {
- if (count == null)
- H.throwExpression(P.ArgumentError$notNull("count"));
- P.RangeError_checkNotNegative(count, "count");
- return new H.SkipIterable(this.__internal$_iterable, this._skipCount + count, this.$ti);
- },
- get$iterator: function(_) {
- return new H.SkipIterator(J.get$iterator$ax(this.__internal$_iterable), this._skipCount);
- }
- };
- H.EfficientLengthSkipIterable.prototype = {
- get$length: function(_) {
- var $length = J.get$length$asx(this.__internal$_iterable) - this._skipCount;
- if ($length >= 0)
- return $length;
- return 0;
- },
- skip$1: function(_, count) {
- if (count == null)
- H.throwExpression(P.ArgumentError$notNull("count"));
- P.RangeError_checkNotNegative(count, "count");
- return new H.EfficientLengthSkipIterable(this.__internal$_iterable, this._skipCount + count, this.$ti);
- },
- $isEfficientLengthIterable: 1
- };
- H.SkipIterator.prototype = {
- moveNext$0: function() {
- var t1, i;
- for (t1 = this._iterator, i = 0; i < this._skipCount; ++i)
- t1.moveNext$0();
- this._skipCount = 0;
- return t1.moveNext$0();
- },
- get$current: function(_) {
- var t1 = this._iterator;
- return t1.get$current(t1);
- }
- };
- H.SkipWhileIterable.prototype = {
- get$iterator: function(_) {
- return new H.SkipWhileIterator(J.get$iterator$ax(this.__internal$_iterable), this._f);
- }
- };
- H.SkipWhileIterator.prototype = {
- moveNext$0: function() {
- var t1, t2, _this = this;
- if (!_this._hasSkipped) {
- _this._hasSkipped = true;
- for (t1 = _this._iterator, t2 = _this._f; t1.moveNext$0();)
- if (!t2.call$1(t1.get$current(t1)))
- return true;
- }
- return _this._iterator.moveNext$0();
- },
- get$current: function(_) {
- var t1 = this._iterator;
- return t1.get$current(t1);
- }
- };
- H.EmptyIterable.prototype = {
- get$iterator: function(_) {
- return C.C_EmptyIterator;
- },
- get$isEmpty: function(_) {
- return true;
- },
- get$length: function(_) {
- return 0;
- },
- get$first: function(_) {
- throw H.wrapException(H.IterableElementError_noElement());
- },
- get$last: function(_) {
- throw H.wrapException(H.IterableElementError_noElement());
- },
- get$single: function(_) {
- throw H.wrapException(H.IterableElementError_noElement());
- },
- elementAt$1: function(_, index) {
- throw H.wrapException(P.RangeError$range(index, 0, 0, "index", null));
- },
- contains$1: function(_, element) {
- return false;
- },
- join$1: function(_, separator) {
- return "";
- },
- join$0: function($receiver) {
- return this.join$1($receiver, "");
- },
- where$1: function(_, test) {
- return this;
- },
- map$1$1: function(_, f, $T) {
- return new H.EmptyIterable([$T]);
- },
- skip$1: function(_, count) {
- P.RangeError_checkNotNegative(count, "count");
- return this;
- },
- take$1: function(_, count) {
- P.RangeError_checkNotNegative(count, "count");
- return this;
- },
- toList$1$growable: function(_, growable) {
- var t2,
- t1 = this.$ti;
- if (growable)
- t1 = H.setRuntimeTypeInfo([], t1);
- else {
- t2 = new Array(0);
- t2.fixed$length = Array;
- t1 = H.setRuntimeTypeInfo(t2, t1);
- }
- return t1;
- },
- toList$0: function($receiver) {
- return this.toList$1$growable($receiver, true);
- },
- toSet$0: function(_) {
- return P.LinkedHashSet_LinkedHashSet(H.getTypeArgumentByIndex(this, 0));
- }
- };
- H.EmptyIterator.prototype = {
- moveNext$0: function() {
- return false;
- },
- get$current: function(_) {
- return;
- }
- };
- H.FollowedByIterable.prototype = {
- get$iterator: function(_) {
- return new H.FollowedByIterator(J.get$iterator$ax(this.__internal$_first), this._second);
- },
- get$length: function(_) {
- var t1 = this._second;
- return J.get$length$asx(this.__internal$_first) + t1.get$length(t1);
- },
- get$isEmpty: function(_) {
- var t1;
- if (J.get$isEmpty$asx(this.__internal$_first)) {
- t1 = this._second;
- t1 = t1.get$isEmpty(t1);
- } else
- t1 = false;
- return t1;
- },
- get$isNotEmpty: function(_) {
- var t1;
- if (!J.get$isNotEmpty$asx(this.__internal$_first)) {
- t1 = this._second;
- t1 = t1.get$isNotEmpty(t1);
- } else
- t1 = true;
- return t1;
- },
- contains$1: function(_, value) {
- var t1;
- if (!J.contains$1$asx(this.__internal$_first, value)) {
- t1 = this._second;
- t1 = t1.contains$1(t1, value);
- } else
- t1 = true;
- return t1;
- },
- get$first: function(_) {
- var t1,
- iterator = J.get$iterator$ax(this.__internal$_first);
- if (iterator.moveNext$0())
- return iterator.get$current(iterator);
- t1 = this._second;
- return t1.get$first(t1);
- },
- get$last: function(_) {
- var last,
- t1 = this._second,
- iterator = t1.get$iterator(t1);
- if (iterator.moveNext$0()) {
- last = iterator.get$current(iterator);
- for (; iterator.moveNext$0();)
- last = iterator.get$current(iterator);
- return last;
- }
- return J.get$last$ax(this.__internal$_first);
- }
- };
- H.EfficientLengthFollowedByIterable.prototype = {
- skip$1: function(_, count) {
- var _this = this,
- t1 = _this.__internal$_first,
- t2 = J.getInterceptor$asx(t1),
- firstLength = t2.get$length(t1);
- if (count >= firstLength) {
- t1 = _this._second;
- return t1.skip$1(t1, count - firstLength);
- }
- return new H.EfficientLengthFollowedByIterable(t2.skip$1(t1, count), _this._second, _this.$ti);
- },
- take$1: function(_, count) {
- var t1 = this.__internal$_first,
- t2 = J.getInterceptor$asx(t1),
- firstLength = t2.get$length(t1);
- if (count <= firstLength)
- return t2.take$1(t1, count);
- t2 = this._second;
- return new H.EfficientLengthFollowedByIterable(t1, t2.take$1(t2, count - firstLength), this.$ti);
- },
- elementAt$1: function(_, index) {
- var t1 = this.__internal$_first,
- t2 = J.getInterceptor$asx(t1),
- firstLength = t2.get$length(t1);
- if (index < firstLength)
- return t2.elementAt$1(t1, index);
- t1 = this._second;
- return t1.elementAt$1(t1, index - firstLength);
- },
- get$first: function(_) {
- var t1 = this.__internal$_first,
- t2 = J.getInterceptor$asx(t1);
- if (t2.get$isNotEmpty(t1))
- return t2.get$first(t1);
- t1 = this._second;
- return t1.get$first(t1);
- },
- get$last: function(_) {
- var t1 = this._second;
- if (t1.get$isNotEmpty(t1))
- return t1.get$last(t1);
- return J.get$last$ax(this.__internal$_first);
- },
- $isEfficientLengthIterable: 1
- };
- H.FollowedByIterator.prototype = {
- moveNext$0: function() {
- var t1, _this = this;
- if (_this._currentIterator.moveNext$0())
- return true;
- t1 = _this._nextIterable;
- if (t1 != null) {
- t1 = t1.get$iterator(t1);
- _this._currentIterator = t1;
- _this._nextIterable = null;
- return t1.moveNext$0();
- }
- return false;
- },
- get$current: function(_) {
- var t1 = this._currentIterator;
- return t1.get$current(t1);
- }
- };
- H.WhereTypeIterable.prototype = {
- get$iterator: function(_) {
- return new H.WhereTypeIterator(J.get$iterator$ax(this._source), this.$ti);
- }
- };
- H.WhereTypeIterator.prototype = {
- moveNext$0: function() {
- var t1, t2, t3;
- for (t1 = this._source, t2 = H.getTypeArgumentByIndex(this, 0); t1.moveNext$0();) {
- t3 = t1.get$current(t1);
- if (H.checkSubtypeOfRuntimeType(t3, t2))
- return true;
- }
- return false;
- },
- get$current: function(_) {
- var t1 = this._source;
- return t1.get$current(t1);
- }
- };
- H.FixedLengthListMixin.prototype = {
- set$length: function(receiver, newLength) {
- throw H.wrapException(P.UnsupportedError$("Cannot change the length of a fixed-length list"));
- },
- add$1: function(receiver, value) {
- throw H.wrapException(P.UnsupportedError$("Cannot add to a fixed-length list"));
- },
- addAll$1: function(receiver, iterable) {
- throw H.wrapException(P.UnsupportedError$("Cannot add to a fixed-length list"));
- }
- };
- H.UnmodifiableListMixin.prototype = {
- $indexSet: function(_, index, value) {
- throw H.wrapException(P.UnsupportedError$("Cannot modify an unmodifiable list"));
- },
- set$length: function(_, newLength) {
- throw H.wrapException(P.UnsupportedError$("Cannot change the length of an unmodifiable list"));
- },
- add$1: function(_, value) {
- throw H.wrapException(P.UnsupportedError$("Cannot add to an unmodifiable list"));
- },
- addAll$1: function(_, iterable) {
- throw H.wrapException(P.UnsupportedError$("Cannot add to an unmodifiable list"));
- },
- sort$1: function(_, compare) {
- throw H.wrapException(P.UnsupportedError$("Cannot modify an unmodifiable list"));
- },
- setRange$4: function(_, start, end, iterable, skipCount) {
- throw H.wrapException(P.UnsupportedError$("Cannot modify an unmodifiable list"));
- },
- fillRange$3: function(_, start, end, fillValue) {
- throw H.wrapException(P.UnsupportedError$("Cannot modify an unmodifiable list"));
- }
- };
- H.UnmodifiableListBase.prototype = {};
- H.ReversedListIterable.prototype = {
- get$length: function(_) {
- return J.get$length$asx(this._source);
- },
- elementAt$1: function(_, index) {
- var t1 = this._source,
- t2 = J.getInterceptor$asx(t1);
- return t2.elementAt$1(t1, t2.get$length(t1) - 1 - index);
- }
- };
- H.Symbol.prototype = {
- get$hashCode: function(_) {
- var hash = this._hashCode;
- if (hash != null)
- return hash;
- hash = 536870911 & 664597 * J.get$hashCode$(this.__internal$_name);
- this._hashCode = hash;
- return hash;
- },
- toString$0: function(_) {
- return 'Symbol("' + H.S(this.__internal$_name) + '")';
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof H.Symbol && this.__internal$_name == other.__internal$_name;
- },
- $isSymbol0: 1
- };
- H.__CastListBase__CastIterableBase_ListMixin.prototype = {};
- H.ConstantMapView.prototype = {};
- H.ConstantMap.prototype = {
- get$isEmpty: function(_) {
- return this.get$length(this) === 0;
- },
- get$isNotEmpty: function(_) {
- return this.get$length(this) !== 0;
- },
- toString$0: function(_) {
- return P.MapBase_mapToString(this);
- },
- $indexSet: function(_, key, val) {
- return H.ConstantMap__throwUnmodifiable();
- },
- putIfAbsent$2: function(key, ifAbsent) {
- return H.ConstantMap__throwUnmodifiable();
- },
- remove$1: function(_, key) {
- return H.ConstantMap__throwUnmodifiable();
- },
- addAll$1: function(_, other) {
- return H.ConstantMap__throwUnmodifiable();
- },
- get$entries: function() {
- return this.entries$body$ConstantMap([P.MapEntry, H.getTypeArgumentByIndex(this, 0), H.getTypeArgumentByIndex(this, 1)]);
- },
- entries$body$ConstantMap: function($async$type) {
- var $async$self = this;
- return P._makeSyncStarIterable(function() {
- var $async$goto = 0, $async$handler = 1, $async$currentError, t1, t2, key;
- return function $async$get$entries($async$errorCode, $async$result) {
- if ($async$errorCode === 1) {
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.get$keys(), t1 = t1.get$iterator(t1), t2 = $async$self.$ti;
- case 2:
- // for condition
- if (!t1.moveNext$0()) {
- // goto after for
- $async$goto = 3;
- break;
- }
- key = t1.get$current(t1);
- $async$goto = 4;
- return new P.MapEntry(key, $async$self.$index(0, key), t2);
- case 4:
- // after yield
- // goto for condition
- $async$goto = 2;
- break;
- case 3:
- // after for
- // implicit return
- return P._IterationMarker_endOfIteration();
- case 1:
- // rethrow
- return P._IterationMarker_uncaughtError($async$currentError);
- }
- };
- }, $async$type);
- },
- $isMap: 1
- };
- H.ConstantStringMap.prototype = {
- get$length: function(_) {
- return this.__js_helper$_length;
- },
- containsKey$1: function(key) {
- if (typeof key !== "string")
- return false;
- if ("__proto__" === key)
- return false;
- return this._jsObject.hasOwnProperty(key);
- },
- $index: function(_, key) {
- if (!this.containsKey$1(key))
- return;
- return this._fetch$1(key);
- },
- _fetch$1: function(key) {
- return this._jsObject[key];
- },
- forEach$1: function(_, f) {
- var t1, i, key,
- keys = this._keys;
- for (t1 = keys.length, i = 0; i < t1; ++i) {
- key = keys[i];
- f.call$2(key, this._fetch$1(key));
- }
- },
- get$keys: function() {
- return new H._ConstantMapKeyIterable(this, [H.getTypeArgumentByIndex(this, 0)]);
- },
- get$values: function() {
- var _this = this;
- return H.MappedIterable_MappedIterable(_this._keys, new H.ConstantStringMap_values_closure(_this), H.getTypeArgumentByIndex(_this, 0), H.getTypeArgumentByIndex(_this, 1));
- }
- };
- H.ConstantStringMap_values_closure.prototype = {
- call$1: function(key) {
- return this.$this._fetch$1(key);
- },
- $signature: function() {
- var t1 = this.$this;
- return {func: 1, ret: H.getTypeArgumentByIndex(t1, 1), args: [H.getTypeArgumentByIndex(t1, 0)]};
- }
- };
- H.ConstantProtoMap.prototype = {
- containsKey$1: function(key) {
- if (typeof key !== "string")
- return false;
- if ("__proto__" === key)
- return true;
- return this._jsObject.hasOwnProperty(key);
- },
- _fetch$1: function(key) {
- return "__proto__" === key ? this._protoValue : this._jsObject[key];
- }
- };
- H._ConstantMapKeyIterable.prototype = {
- get$iterator: function(_) {
- var t1 = this._map._keys;
- return new J.ArrayIterator(t1, t1.length);
- },
- get$length: function(_) {
- return this._map._keys.length;
- }
- };
- H.Instantiation.prototype = {
- Instantiation$1: function(_genericClosure) {
- if (false)
- H.instantiatedGenericFunctionType(0, 0);
- },
- toString$0: function(_) {
- var types = "<" + C.JSArray_methods.join$1(this.get$_types(), ", ") + ">";
- return H.S(this._genericClosure) + " with " + types;
- }
- };
- H.Instantiation1.prototype = {
- get$_types: function() {
- return [new H.TypeImpl(H.getTypeArgumentByIndex(this, 0))];
- },
- call$0: function() {
- return this._genericClosure.call$1$0(this.$ti[0]);
- },
- call$2: function(a0, a1) {
- return this._genericClosure.call$1$2(a0, a1, this.$ti[0]);
- },
- call$3: function(a0, a1, a2) {
- return this._genericClosure.call$1$3(a0, a1, a2, this.$ti[0]);
- },
- call$4: function(a0, a1, a2, a3) {
- return this._genericClosure.call$1$4(a0, a1, a2, a3, this.$ti[0]);
- },
- $signature: function() {
- return H.instantiatedGenericFunctionType(H.extractFunctionTypeObjectFromInternal(this._genericClosure), this.$ti);
- }
- };
- H.JSInvocationMirror.prototype = {
- get$memberName: function() {
- var t1 = this.__js_helper$_memberName;
- return t1;
- },
- get$positionalArguments: function() {
- var t1, argumentCount, list, index, _this = this;
- if (_this._kind === 1)
- return C.List_empty12;
- t1 = _this._arguments;
- argumentCount = t1.length - _this._namedArgumentNames.length - _this._typeArgumentCount;
- if (argumentCount === 0)
- return C.List_empty12;
- list = [];
- for (index = 0; index < argumentCount; ++index)
- list.push(t1[index]);
- return J.JSArray_markUnmodifiableList(list);
- },
- get$namedArguments: function() {
- var t1, namedArgumentCount, t2, namedArgumentsStartIndex, t3, map, i, _this = this;
- if (_this._kind !== 0)
- return C.Map_empty4;
- t1 = _this._namedArgumentNames;
- namedArgumentCount = t1.length;
- t2 = _this._arguments;
- namedArgumentsStartIndex = t2.length - namedArgumentCount - _this._typeArgumentCount;
- if (namedArgumentCount === 0)
- return C.Map_empty4;
- t3 = P.Symbol0;
- map = new H.JsLinkedHashMap([t3, null]);
- for (i = 0; i < namedArgumentCount; ++i)
- map.$indexSet(0, new H.Symbol(t1[i]), t2[namedArgumentsStartIndex + i]);
- return new H.ConstantMapView(map, [t3, null]);
- }
- };
- H.Primitives_functionNoSuchMethod_closure.prototype = {
- call$2: function($name, argument) {
- var t1 = this._box_0;
- t1.names = t1.names + "$" + H.S($name);
- this.namedArgumentList.push($name);
- this.$arguments.push(argument);
- ++t1.argumentCount;
- }
- };
- H.TypeErrorDecoder.prototype = {
- matchTypeError$1: function(message) {
- var result, t1, _this = this,
- match = new RegExp(_this._pattern).exec(message);
- if (match == null)
- return;
- result = Object.create(null);
- t1 = _this._arguments;
- if (t1 !== -1)
- result.arguments = match[t1 + 1];
- t1 = _this._argumentsExpr;
- if (t1 !== -1)
- result.argumentsExpr = match[t1 + 1];
- t1 = _this._expr;
- if (t1 !== -1)
- result.expr = match[t1 + 1];
- t1 = _this._method;
- if (t1 !== -1)
- result.method = match[t1 + 1];
- t1 = _this._receiver;
- if (t1 !== -1)
- result.receiver = match[t1 + 1];
- return result;
- }
- };
- H.NullError.prototype = {
- toString$0: function(_) {
- var t1 = this._method;
- if (t1 == null)
- return "NoSuchMethodError: " + H.S(this._message);
- return "NoSuchMethodError: method not found: '" + t1 + "' on null";
- }
- };
- H.JsNoSuchMethodError.prototype = {
- toString$0: function(_) {
- var t2, _this = this,
- _s38_ = "NoSuchMethodError: method not found: '",
- t1 = _this._method;
- if (t1 == null)
- return "NoSuchMethodError: " + H.S(_this._message);
- t2 = _this._receiver;
- if (t2 == null)
- return _s38_ + t1 + "' (" + H.S(_this._message) + ")";
- return _s38_ + t1 + "' on '" + t2 + "' (" + H.S(_this._message) + ")";
- }
- };
- H.UnknownJsTypeError.prototype = {
- toString$0: function(_) {
- var t1 = this._message;
- return t1.length === 0 ? "Error" : "Error: " + t1;
- }
- };
- H.ExceptionAndStackTrace.prototype = {};
- H.unwrapException_saveStackTrace.prototype = {
- call$1: function(error) {
- if (!!J.getInterceptor$(error).$isError)
- if (error.$thrownJsError == null)
- error.$thrownJsError = this.ex;
- return error;
- },
- $signature: 10
- };
- H._StackTrace.prototype = {
- toString$0: function(_) {
- var trace,
- t1 = this._trace;
- if (t1 != null)
- return t1;
- t1 = this._exception;
- trace = t1 !== null && typeof t1 === "object" ? t1.stack : null;
- return this._trace = trace == null ? "" : trace;
- },
- $isStackTrace: 1
- };
- H.Closure.prototype = {
- toString$0: function(_) {
- var $constructor = this.constructor,
- $name = $constructor == null ? null : $constructor.name;
- return "Closure '" + H.unminifyOrTag($name == null ? "unknown" : $name) + "'";
- },
- $isFunction: 1,
- get$$call: function() {
- return this;
- },
- "call*": "call$1",
- $requiredArgCount: 1,
- $defaultValues: null
- };
- H.TearOffClosure.prototype = {};
- H.StaticClosure.prototype = {
- toString$0: function(_) {
- var $name = this.$static_name;
- if ($name == null)
- return "Closure of unknown static method";
- return "Closure '" + H.unminifyOrTag($name) + "'";
- }
- };
- H.BoundClosure.prototype = {
- $eq: function(_, other) {
- var _this = this;
- if (other == null)
- return false;
- if (_this === other)
- return true;
- if (!(other instanceof H.BoundClosure))
- return false;
- return _this._self === other._self && _this._target === other._target && _this._receiver === other._receiver;
- },
- get$hashCode: function(_) {
- var receiverHashCode,
- t1 = this._receiver;
- if (t1 == null)
- receiverHashCode = H.Primitives_objectHashCode(this._self);
- else
- receiverHashCode = typeof t1 !== "object" ? J.get$hashCode$(t1) : H.Primitives_objectHashCode(t1);
- return (receiverHashCode ^ H.Primitives_objectHashCode(this._target)) >>> 0;
- },
- toString$0: function(_) {
- var receiver = this._receiver;
- if (receiver == null)
- receiver = this._self;
- return "Closure '" + H.S(this.__js_helper$_name) + "' of " + ("Instance of '" + H.S(H.Primitives_objectTypeName(receiver)) + "'");
- }
- };
- H.CastErrorImplementation.prototype = {
- toString$0: function(_) {
- return this.message;
- },
- get$message: function(receiver) {
- return this.message;
- }
- };
- H.RuntimeError.prototype = {
- toString$0: function(_) {
- return "RuntimeError: " + H.S(this.message);
- },
- get$message: function(receiver) {
- return this.message;
- }
- };
- H.TypeImpl.prototype = {
- get$_typeName: function() {
- var t1 = this.__typeName;
- return t1 == null ? this.__typeName = H.runtimeTypeToString(this._rti) : t1;
- },
- toString$0: function(_) {
- return this.get$_typeName();
- },
- get$hashCode: function(_) {
- var t1 = this._hashCode;
- return t1 == null ? this._hashCode = C.JSString_methods.get$hashCode(this.get$_typeName()) : t1;
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof H.TypeImpl && this.get$_typeName() === other.get$_typeName();
- }
- };
- H.JsLinkedHashMap.prototype = {
- get$length: function(_) {
- return this.__js_helper$_length;
- },
- get$isEmpty: function(_) {
- return this.__js_helper$_length === 0;
- },
- get$isNotEmpty: function(_) {
- return !this.get$isEmpty(this);
- },
- get$keys: function() {
- return new H.LinkedHashMapKeyIterable(this, [H.getTypeArgumentByIndex(this, 0)]);
- },
- get$values: function() {
- var _this = this;
- return H.MappedIterable_MappedIterable(_this.get$keys(), new H.JsLinkedHashMap_values_closure(_this), H.getTypeArgumentByIndex(_this, 0), H.getTypeArgumentByIndex(_this, 1));
- },
- containsKey$1: function(key) {
- var strings, nums, _this = this;
- if (typeof key === "string") {
- strings = _this._strings;
- if (strings == null)
- return false;
- return _this._containsTableEntry$2(strings, key);
- } else if (typeof key === "number" && (key & 0x3ffffff) === key) {
- nums = _this._nums;
- if (nums == null)
- return false;
- return _this._containsTableEntry$2(nums, key);
- } else
- return _this.internalContainsKey$1(key);
- },
- internalContainsKey$1: function(key) {
- var _this = this,
- rest = _this._rest;
- if (rest == null)
- return false;
- return _this.internalFindBucketIndex$2(_this._getTableBucket$2(rest, _this.internalComputeHashCode$1(key)), key) >= 0;
- },
- addAll$1: function(_, other) {
- other.forEach$1(0, new H.JsLinkedHashMap_addAll_closure(this));
- },
- $index: function(_, key) {
- var strings, cell, t1, nums, _this = this;
- if (typeof key === "string") {
- strings = _this._strings;
- if (strings == null)
- return;
- cell = _this._getTableCell$2(strings, key);
- t1 = cell == null ? null : cell.hashMapCellValue;
- return t1;
- } else if (typeof key === "number" && (key & 0x3ffffff) === key) {
- nums = _this._nums;
- if (nums == null)
- return;
- cell = _this._getTableCell$2(nums, key);
- t1 = cell == null ? null : cell.hashMapCellValue;
- return t1;
- } else
- return _this.internalGet$1(key);
- },
- internalGet$1: function(key) {
- var bucket, index, _this = this,
- rest = _this._rest;
- if (rest == null)
- return;
- bucket = _this._getTableBucket$2(rest, _this.internalComputeHashCode$1(key));
- index = _this.internalFindBucketIndex$2(bucket, key);
- if (index < 0)
- return;
- return bucket[index].hashMapCellValue;
- },
- $indexSet: function(_, key, value) {
- var strings, nums, _this = this;
- if (typeof key === "string") {
- strings = _this._strings;
- _this._addHashTableEntry$3(strings == null ? _this._strings = _this._newHashTable$0() : strings, key, value);
- } else if (typeof key === "number" && (key & 0x3ffffff) === key) {
- nums = _this._nums;
- _this._addHashTableEntry$3(nums == null ? _this._nums = _this._newHashTable$0() : nums, key, value);
- } else
- _this.internalSet$2(key, value);
- },
- internalSet$2: function(key, value) {
- var hash, bucket, index, _this = this,
- rest = _this._rest;
- if (rest == null)
- rest = _this._rest = _this._newHashTable$0();
- hash = _this.internalComputeHashCode$1(key);
- bucket = _this._getTableBucket$2(rest, hash);
- if (bucket == null)
- _this._setTableEntry$3(rest, hash, [_this._newLinkedCell$2(key, value)]);
- else {
- index = _this.internalFindBucketIndex$2(bucket, key);
- if (index >= 0)
- bucket[index].hashMapCellValue = value;
- else
- bucket.push(_this._newLinkedCell$2(key, value));
- }
- },
- putIfAbsent$2: function(key, ifAbsent) {
- var value;
- if (this.containsKey$1(key))
- return this.$index(0, key);
- value = ifAbsent.call$0();
- this.$indexSet(0, key, value);
- return value;
- },
- remove$1: function(_, key) {
- var _this = this;
- if (typeof key === "string")
- return _this.__js_helper$_removeHashTableEntry$2(_this._strings, key);
- else if (typeof key === "number" && (key & 0x3ffffff) === key)
- return _this.__js_helper$_removeHashTableEntry$2(_this._nums, key);
- else
- return _this.internalRemove$1(key);
- },
- internalRemove$1: function(key) {
- var hash, bucket, index, cell, _this = this,
- rest = _this._rest;
- if (rest == null)
- return;
- hash = _this.internalComputeHashCode$1(key);
- bucket = _this._getTableBucket$2(rest, hash);
- index = _this.internalFindBucketIndex$2(bucket, key);
- if (index < 0)
- return;
- cell = bucket.splice(index, 1)[0];
- _this.__js_helper$_unlinkCell$1(cell);
- if (bucket.length === 0)
- _this._deleteTableEntry$2(rest, hash);
- return cell.hashMapCellValue;
- },
- clear$0: function(_) {
- var _this = this;
- if (_this.__js_helper$_length > 0) {
- _this._strings = _this._nums = _this._rest = _this._first = _this._last = null;
- _this.__js_helper$_length = 0;
- _this._modified$0();
- }
- },
- forEach$1: function(_, action) {
- var _this = this,
- cell = _this._first,
- modifications = _this._modifications;
- for (; cell != null;) {
- action.call$2(cell.hashMapCellKey, cell.hashMapCellValue);
- if (modifications !== _this._modifications)
- throw H.wrapException(P.ConcurrentModificationError$(_this));
- cell = cell._next;
- }
- },
- _addHashTableEntry$3: function(table, key, value) {
- var cell = this._getTableCell$2(table, key);
- if (cell == null)
- this._setTableEntry$3(table, key, this._newLinkedCell$2(key, value));
- else
- cell.hashMapCellValue = value;
- },
- __js_helper$_removeHashTableEntry$2: function(table, key) {
- var cell;
- if (table == null)
- return;
- cell = this._getTableCell$2(table, key);
- if (cell == null)
- return;
- this.__js_helper$_unlinkCell$1(cell);
- this._deleteTableEntry$2(table, key);
- return cell.hashMapCellValue;
- },
- _modified$0: function() {
- this._modifications = this._modifications + 1 & 67108863;
- },
- _newLinkedCell$2: function(key, value) {
- var last, _this = this,
- cell = new H.LinkedHashMapCell(key, value);
- if (_this._first == null)
- _this._first = _this._last = cell;
- else {
- last = _this._last;
- cell._previous = last;
- _this._last = last._next = cell;
- }
- ++_this.__js_helper$_length;
- _this._modified$0();
- return cell;
- },
- __js_helper$_unlinkCell$1: function(cell) {
- var _this = this,
- previous = cell._previous,
- next = cell._next;
- if (previous == null)
- _this._first = next;
- else
- previous._next = next;
- if (next == null)
- _this._last = previous;
- else
- next._previous = previous;
- --_this.__js_helper$_length;
- _this._modified$0();
- },
- internalComputeHashCode$1: function(key) {
- return J.get$hashCode$(key) & 0x3ffffff;
- },
- internalFindBucketIndex$2: function(bucket, key) {
- var $length, i;
- if (bucket == null)
- return -1;
- $length = bucket.length;
- for (i = 0; i < $length; ++i)
- if (J.$eq$(bucket[i].hashMapCellKey, key))
- return i;
- return -1;
- },
- toString$0: function(_) {
- return P.MapBase_mapToString(this);
- },
- _getTableCell$2: function(table, key) {
- return table[key];
- },
- _getTableBucket$2: function(table, key) {
- return table[key];
- },
- _setTableEntry$3: function(table, key, value) {
- table[key] = value;
- },
- _deleteTableEntry$2: function(table, key) {
- delete table[key];
- },
- _containsTableEntry$2: function(table, key) {
- return this._getTableCell$2(table, key) != null;
- },
- _newHashTable$0: function() {
- var _s20_ = "<non-identifier-key>",
- table = Object.create(null);
- this._setTableEntry$3(table, _s20_, table);
- this._deleteTableEntry$2(table, _s20_);
- return table;
- }
- };
- H.JsLinkedHashMap_values_closure.prototype = {
- call$1: function(each) {
- return this.$this.$index(0, each);
- },
- $signature: function() {
- var t1 = this.$this;
- return {func: 1, ret: H.getTypeArgumentByIndex(t1, 1), args: [H.getTypeArgumentByIndex(t1, 0)]};
- }
- };
- H.JsLinkedHashMap_addAll_closure.prototype = {
- call$2: function(key, value) {
- this.$this.$indexSet(0, key, value);
- },
- $signature: function() {
- var t1 = this.$this;
- return {func: 1, ret: P.Null, args: [H.getTypeArgumentByIndex(t1, 0), H.getTypeArgumentByIndex(t1, 1)]};
- }
- };
- H.LinkedHashMapCell.prototype = {};
- H.LinkedHashMapKeyIterable.prototype = {
- get$length: function(_) {
- return this._map.__js_helper$_length;
- },
- get$isEmpty: function(_) {
- return this._map.__js_helper$_length === 0;
- },
- get$iterator: function(_) {
- var t1 = this._map,
- t2 = new H.LinkedHashMapKeyIterator(t1, t1._modifications);
- t2._cell = t1._first;
- return t2;
- },
- contains$1: function(_, element) {
- return this._map.containsKey$1(element);
- }
- };
- H.LinkedHashMapKeyIterator.prototype = {
- get$current: function(_) {
- return this.__js_helper$_current;
- },
- moveNext$0: function() {
- var _this = this,
- t1 = _this._map;
- if (_this._modifications !== t1._modifications)
- throw H.wrapException(P.ConcurrentModificationError$(t1));
- else {
- t1 = _this._cell;
- if (t1 == null) {
- _this.__js_helper$_current = null;
- return false;
- } else {
- _this.__js_helper$_current = t1.hashMapCellKey;
- _this._cell = t1._next;
- return true;
- }
- }
- }
- };
- H.initHooks_closure.prototype = {
- call$1: function(o) {
- return this.getTag(o);
- },
- $signature: 10
- };
- H.initHooks_closure0.prototype = {
- call$2: function(o, tag) {
- return this.getUnknownTag(o, tag);
- }
- };
- H.initHooks_closure1.prototype = {
- call$1: function(tag) {
- return this.prototypeForTag(tag);
- }
- };
- H.JSSyntaxRegExp.prototype = {
- toString$0: function(_) {
- return "RegExp/" + this.pattern + "/" + this._nativeRegExp.flags;
- },
- get$_nativeGlobalVersion: function() {
- var _this = this,
- t1 = _this._nativeGlobalRegExp;
- if (t1 != null)
- return t1;
- t1 = _this._nativeRegExp;
- return _this._nativeGlobalRegExp = H.JSSyntaxRegExp_makeNative(_this.pattern, t1.multiline, !t1.ignoreCase, t1.unicode, t1.dotAll, true);
- },
- get$_nativeAnchoredVersion: function() {
- var _this = this,
- t1 = _this._nativeAnchoredRegExp;
- if (t1 != null)
- return t1;
- t1 = _this._nativeRegExp;
- return _this._nativeAnchoredRegExp = H.JSSyntaxRegExp_makeNative(_this.pattern + "|()", t1.multiline, !t1.ignoreCase, t1.unicode, t1.dotAll, true);
- },
- firstMatch$1: function(string) {
- var m;
- if (typeof string !== "string")
- H.throwExpression(H.argumentErrorValue(string));
- m = this._nativeRegExp.exec(string);
- if (m == null)
- return;
- return new H._MatchImplementation(m);
- },
- allMatches$2: function(_, string, start) {
- var t1 = string.length;
- if (start > t1)
- throw H.wrapException(P.RangeError$range(start, 0, t1, null, null));
- return new H._AllMatchesIterable(this, string, start);
- },
- allMatches$1: function($receiver, string) {
- return this.allMatches$2($receiver, string, 0);
- },
- _execGlobal$2: function(string, start) {
- var match,
- regexp = this.get$_nativeGlobalVersion();
- regexp.lastIndex = start;
- match = regexp.exec(string);
- if (match == null)
- return;
- return new H._MatchImplementation(match);
- },
- _execAnchored$2: function(string, start) {
- var match,
- regexp = this.get$_nativeAnchoredVersion();
- regexp.lastIndex = start;
- match = regexp.exec(string);
- if (match == null)
- return;
- if (match.pop() != null)
- return;
- return new H._MatchImplementation(match);
- },
- matchAsPrefix$2: function(_, string, start) {
- if (start < 0 || start > string.length)
- throw H.wrapException(P.RangeError$range(start, 0, string.length, null, null));
- return this._execAnchored$2(string, start);
- }
- };
- H._MatchImplementation.prototype = {
- get$start: function(_) {
- return this._match.index;
- },
- get$end: function(_) {
- var t1 = this._match;
- return t1.index + t1[0].length;
- },
- $isMatch: 1,
- $isRegExpMatch: 1
- };
- H._AllMatchesIterable.prototype = {
- get$iterator: function(_) {
- return new H._AllMatchesIterator(this._re, this._string, this.__js_helper$_start);
- },
- $asIterable: function() {
- return [P.RegExpMatch];
- }
- };
- H._AllMatchesIterator.prototype = {
- get$current: function(_) {
- return this.__js_helper$_current;
- },
- moveNext$0: function() {
- var t2, t3, match, nextIndex, _this = this,
- t1 = _this._string;
- if (t1 == null)
- return false;
- t2 = _this._nextIndex;
- if (t2 <= t1.length) {
- t3 = _this._regExp;
- match = t3._execGlobal$2(t1, t2);
- if (match != null) {
- _this.__js_helper$_current = match;
- nextIndex = match.get$end(match);
- if (match._match.index === nextIndex) {
- if (t3._nativeRegExp.unicode) {
- t1 = _this._nextIndex;
- t2 = t1 + 1;
- t3 = _this._string;
- if (t2 < t3.length) {
- t1 = J.getInterceptor$s(t3).codeUnitAt$1(t3, t1);
- if (t1 >= 55296 && t1 <= 56319) {
- t1 = C.JSString_methods.codeUnitAt$1(t3, t2);
- t1 = t1 >= 56320 && t1 <= 57343;
- } else
- t1 = false;
- } else
- t1 = false;
- } else
- t1 = false;
- nextIndex = (t1 ? nextIndex + 1 : nextIndex) + 1;
- }
- _this._nextIndex = nextIndex;
- return true;
- }
- }
- _this._string = _this.__js_helper$_current = null;
- return false;
- }
- };
- H.StringMatch.prototype = {
- get$end: function(_) {
- return this.start + this.pattern.length;
- },
- group$1: function(group_) {
- if (group_ !== 0)
- throw H.wrapException(P.RangeError$value(group_, null, null));
- return this.pattern;
- },
- $isMatch: 1,
- get$start: function(receiver) {
- return this.start;
- }
- };
- H._StringAllMatchesIterable.prototype = {
- get$iterator: function(_) {
- return new H._StringAllMatchesIterator(this._input, this._pattern, this.__js_helper$_index);
- },
- get$first: function(_) {
- var t1 = this._pattern,
- index = this._input.indexOf(t1, this.__js_helper$_index);
- if (index >= 0)
- return new H.StringMatch(index, t1);
- throw H.wrapException(H.IterableElementError_noElement());
- },
- $asIterable: function() {
- return [P.Match];
- }
- };
- H._StringAllMatchesIterator.prototype = {
- moveNext$0: function() {
- var index, end, _this = this,
- t1 = _this.__js_helper$_index,
- t2 = _this._pattern,
- t3 = t2.length,
- t4 = _this._input,
- t5 = t4.length;
- if (t1 + t3 > t5) {
- _this.__js_helper$_current = null;
- return false;
- }
- index = t4.indexOf(t2, t1);
- if (index < 0) {
- _this.__js_helper$_index = t5 + 1;
- _this.__js_helper$_current = null;
- return false;
- }
- end = index + t3;
- _this.__js_helper$_current = new H.StringMatch(index, t2);
- _this.__js_helper$_index = end === _this.__js_helper$_index ? end + 1 : end;
- return true;
- },
- get$current: function(_) {
- return this.__js_helper$_current;
- }
- };
- H.NativeTypedData.prototype = {
- _invalidPosition$3: function(receiver, position, $length, $name) {
- if (typeof position !== "number" || Math.floor(position) !== position)
- throw H.wrapException(P.ArgumentError$value(position, $name, "Invalid list position"));
- else
- throw H.wrapException(P.RangeError$range(position, 0, $length, $name, null));
- },
- _checkPosition$3: function(receiver, position, $length, $name) {
- if (position >>> 0 !== position || position > $length)
- this._invalidPosition$3(receiver, position, $length, $name);
- }
- };
- H.NativeTypedArray.prototype = {
- get$length: function(receiver) {
- return receiver.length;
- },
- _setRangeFast$4: function(receiver, start, end, source, skipCount) {
- var count, sourceLength,
- targetLength = receiver.length;
- this._checkPosition$3(receiver, start, targetLength, "start");
- this._checkPosition$3(receiver, end, targetLength, "end");
- if (start > end)
- throw H.wrapException(P.RangeError$range(start, 0, end, null, null));
- count = end - start;
- if (skipCount < 0)
- throw H.wrapException(P.ArgumentError$(skipCount));
- sourceLength = source.length;
- if (sourceLength - skipCount < count)
- throw H.wrapException(P.StateError$("Not enough elements"));
- if (skipCount !== 0 || sourceLength !== count)
- source = source.subarray(skipCount, skipCount + count);
- receiver.set(source, start);
- },
- $isJavaScriptIndexingBehavior: 1,
- $asJavaScriptIndexingBehavior: function() {
- }
- };
- H.NativeTypedArrayOfDouble.prototype = {
- $index: function(receiver, index) {
- H._checkValidIndex(index, receiver, receiver.length);
- return receiver[index];
- },
- $indexSet: function(receiver, index, value) {
- H._checkValidIndex(index, receiver, receiver.length);
- receiver[index] = value;
- },
- setRange$4: function(receiver, start, end, iterable, skipCount) {
- if (!!J.getInterceptor$(iterable).$isNativeTypedArrayOfDouble) {
- this._setRangeFast$4(receiver, start, end, iterable, skipCount);
- return;
- }
- this.super$ListMixin$setRange(receiver, start, end, iterable, skipCount);
- },
- $isEfficientLengthIterable: 1,
- $asEfficientLengthIterable: function() {
- return [P.double];
- },
- $asListMixin: function() {
- return [P.double];
- },
- $isIterable: 1,
- $asIterable: function() {
- return [P.double];
- },
- $isList: 1,
- $asList: function() {
- return [P.double];
- }
- };
- H.NativeTypedArrayOfInt.prototype = {
- $indexSet: function(receiver, index, value) {
- H._checkValidIndex(index, receiver, receiver.length);
- receiver[index] = value;
- },
- setRange$4: function(receiver, start, end, iterable, skipCount) {
- if (!!J.getInterceptor$(iterable).$isNativeTypedArrayOfInt) {
- this._setRangeFast$4(receiver, start, end, iterable, skipCount);
- return;
- }
- this.super$ListMixin$setRange(receiver, start, end, iterable, skipCount);
- },
- $isEfficientLengthIterable: 1,
- $asEfficientLengthIterable: function() {
- return [P.int];
- },
- $asListMixin: function() {
- return [P.int];
- },
- $isIterable: 1,
- $asIterable: function() {
- return [P.int];
- },
- $isList: 1,
- $asList: function() {
- return [P.int];
- }
- };
- H.NativeFloat32List.prototype = {
- sublist$2: function(receiver, start, end) {
- return new Float32Array(receiver.subarray(start, H._checkValidRange(start, end, receiver.length)));
- }
- };
- H.NativeFloat64List.prototype = {
- sublist$2: function(receiver, start, end) {
- return new Float64Array(receiver.subarray(start, H._checkValidRange(start, end, receiver.length)));
- }
- };
- H.NativeInt16List.prototype = {
- $index: function(receiver, index) {
- H._checkValidIndex(index, receiver, receiver.length);
- return receiver[index];
- },
- sublist$2: function(receiver, start, end) {
- return new Int16Array(receiver.subarray(start, H._checkValidRange(start, end, receiver.length)));
- }
- };
- H.NativeInt32List.prototype = {
- $index: function(receiver, index) {
- H._checkValidIndex(index, receiver, receiver.length);
- return receiver[index];
- },
- sublist$2: function(receiver, start, end) {
- return new Int32Array(receiver.subarray(start, H._checkValidRange(start, end, receiver.length)));
- }
- };
- H.NativeInt8List.prototype = {
- $index: function(receiver, index) {
- H._checkValidIndex(index, receiver, receiver.length);
- return receiver[index];
- },
- sublist$2: function(receiver, start, end) {
- return new Int8Array(receiver.subarray(start, H._checkValidRange(start, end, receiver.length)));
- }
- };
- H.NativeUint16List.prototype = {
- $index: function(receiver, index) {
- H._checkValidIndex(index, receiver, receiver.length);
- return receiver[index];
- },
- sublist$2: function(receiver, start, end) {
- return new Uint16Array(receiver.subarray(start, H._checkValidRange(start, end, receiver.length)));
- }
- };
- H.NativeUint32List.prototype = {
- $index: function(receiver, index) {
- H._checkValidIndex(index, receiver, receiver.length);
- return receiver[index];
- },
- sublist$2: function(receiver, start, end) {
- return new Uint32Array(receiver.subarray(start, H._checkValidRange(start, end, receiver.length)));
- }
- };
- H.NativeUint8ClampedList.prototype = {
- get$length: function(receiver) {
- return receiver.length;
- },
- $index: function(receiver, index) {
- H._checkValidIndex(index, receiver, receiver.length);
- return receiver[index];
- },
- sublist$2: function(receiver, start, end) {
- return new Uint8ClampedArray(receiver.subarray(start, H._checkValidRange(start, end, receiver.length)));
- }
- };
- H.NativeUint8List.prototype = {
- get$length: function(receiver) {
- return receiver.length;
- },
- $index: function(receiver, index) {
- H._checkValidIndex(index, receiver, receiver.length);
- return receiver[index];
- },
- sublist$2: function(receiver, start, end) {
- return new Uint8Array(receiver.subarray(start, H._checkValidRange(start, end, receiver.length)));
- },
- $isNativeUint8List: 1,
- $isUint8List: 1
- };
- H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.prototype = {};
- H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.prototype = {};
- H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.prototype = {};
- H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.prototype = {};
- P._AsyncRun__initializeScheduleImmediate_internalCallback.prototype = {
- call$1: function(_) {
- var t1 = this._box_0,
- f = t1.storedCallback;
- t1.storedCallback = null;
- f.call$0();
- },
- $signature: 20
- };
- P._AsyncRun__initializeScheduleImmediate_closure.prototype = {
- call$1: function(callback) {
- var t1, t2;
- this._box_0.storedCallback = callback;
- t1 = this.div;
- t2 = this.span;
- t1.firstChild ? t1.removeChild(t2) : t1.appendChild(t2);
- }
- };
- P._AsyncRun__scheduleImmediateJsOverride_internalCallback.prototype = {
- call$0: function() {
- this.callback.call$0();
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback.prototype = {
- call$0: function() {
- this.callback.call$0();
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._TimerImpl.prototype = {
- _TimerImpl$2: function(milliseconds, callback) {
- if (self.setTimeout != null)
- this._handle = self.setTimeout(H.convertDartClosureToJS(new P._TimerImpl_internalCallback(this, callback), 0), milliseconds);
- else
- throw H.wrapException(P.UnsupportedError$("`setTimeout()` not found."));
- },
- _TimerImpl$periodic$2: function(milliseconds, callback) {
- if (self.setTimeout != null)
- this._handle = self.setInterval(H.convertDartClosureToJS(new P._TimerImpl$periodic_closure(this, milliseconds, Date.now(), callback), 0), milliseconds);
- else
- throw H.wrapException(P.UnsupportedError$("Periodic timer."));
- },
- cancel$0: function() {
- if (self.setTimeout != null) {
- var t1 = this._handle;
- if (t1 == null)
- return;
- if (this._once)
- self.clearTimeout(t1);
- else
- self.clearInterval(t1);
- this._handle = null;
- } else
- throw H.wrapException(P.UnsupportedError$("Canceling a timer."));
- }
- };
- P._TimerImpl_internalCallback.prototype = {
- call$0: function() {
- var t1 = this.$this;
- t1._handle = null;
- t1._tick = 1;
- this.callback.call$0();
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._TimerImpl$periodic_closure.prototype = {
- call$0: function() {
- var duration, _this = this,
- t1 = _this.$this,
- tick = t1._tick + 1,
- t2 = _this.milliseconds;
- if (t2 > 0) {
- duration = Date.now() - _this.start;
- if (duration > (tick + 1) * t2)
- tick = C.JSInt_methods.$tdiv(duration, t2);
- }
- t1._tick = tick;
- _this.callback.call$1(t1);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._AsyncAwaitCompleter.prototype = {
- complete$1: function(value) {
- var t1 = !this.isSync || H.checkSubtype(value, "$isFuture", this.$ti, "$asFuture"),
- t2 = this._future;
- if (t1)
- t2._asyncComplete$1(value);
- else
- t2._completeWithValue$1(value);
- },
- completeError$2: function(e, st) {
- var t1 = this._future;
- if (this.isSync)
- t1._completeError$2(e, st);
- else
- t1._asyncCompleteError$2(e, st);
- }
- };
- P._awaitOnObject_closure.prototype = {
- call$1: function(result) {
- return this.bodyFunction.call$2(0, result);
- },
- $signature: 50
- };
- P._awaitOnObject_closure0.prototype = {
- call$2: function(error, stackTrace) {
- this.bodyFunction.call$2(1, new H.ExceptionAndStackTrace(error, stackTrace));
- },
- "call*": "call$2",
- $requiredArgCount: 2,
- $signature: 15
- };
- P._wrapJsFunctionForAsync_closure.prototype = {
- call$2: function(errorCode, result) {
- this.$protected(errorCode, result);
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- P._asyncStarHelper_closure.prototype = {
- call$0: function() {
- var t1 = this.controller,
- t2 = t1.controller,
- t3 = t2._async$_state;
- if ((t3 & 1) !== 0 ? (t2.get$_subscription()._async$_state & 4) !== 0 : (t3 & 2) === 0) {
- t1.isSuspended = true;
- return;
- }
- this.bodyFunctionOrErrorCode.call$2(null, 0);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._asyncStarHelper_closure0.prototype = {
- call$1: function(_) {
- var errorCode = this.controller.cancelationFuture != null ? 2 : 0;
- this.bodyFunctionOrErrorCode.call$2(errorCode, null);
- },
- $signature: 20
- };
- P._AsyncStarStreamController.prototype = {
- add$1: function(_, $event) {
- return this.controller.add$1(0, $event);
- },
- _AsyncStarStreamController$1: function(body, $T) {
- var t1 = new P._AsyncStarStreamController__resumeBody(body);
- this.controller = P.StreamController_StreamController(new P._AsyncStarStreamController_closure(this, body), new P._AsyncStarStreamController_closure0(t1), null, new P._AsyncStarStreamController_closure1(this, t1), false, $T);
- }
- };
- P._AsyncStarStreamController__resumeBody.prototype = {
- call$0: function() {
- P.scheduleMicrotask(new P._AsyncStarStreamController__resumeBody_closure(this.body));
- }
- };
- P._AsyncStarStreamController__resumeBody_closure.prototype = {
- call$0: function() {
- this.body.call$2(0, null);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._AsyncStarStreamController_closure0.prototype = {
- call$0: function() {
- this._resumeBody.call$0();
- }
- };
- P._AsyncStarStreamController_closure1.prototype = {
- call$0: function() {
- var t1 = this.$this;
- if (t1.isSuspended) {
- t1.isSuspended = false;
- this._resumeBody.call$0();
- }
- }
- };
- P._AsyncStarStreamController_closure.prototype = {
- call$0: function() {
- var t1 = this.$this;
- if ((t1.controller._async$_state & 4) === 0) {
- t1.cancelationFuture = new P._Future($.Zone__current, [null]);
- if (t1.isSuspended) {
- t1.isSuspended = false;
- P.scheduleMicrotask(new P._AsyncStarStreamController__closure(this.body));
- }
- return t1.cancelationFuture;
- }
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._AsyncStarStreamController__closure.prototype = {
- call$0: function() {
- this.body.call$2(2, null);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._IterationMarker.prototype = {
- toString$0: function(_) {
- return "IterationMarker(" + this.state + ", " + H.S(this.value) + ")";
- }
- };
- P._SyncStarIterator.prototype = {
- get$current: function(_) {
- var t1 = this._nestedIterator;
- if (t1 == null)
- return this._async$_current;
- return t1.get$current(t1);
- },
- moveNext$0: function() {
- var t1, value, state, inner, _this = this;
- for (; true;) {
- t1 = _this._nestedIterator;
- if (t1 != null)
- if (t1.moveNext$0())
- return true;
- else
- _this._nestedIterator = null;
- value = function(body, SUCCESS, ERROR) {
- var errorValue,
- errorCode = SUCCESS;
- while (true)
- try {
- return body(errorCode, errorValue);
- } catch (error) {
- errorValue = error;
- errorCode = ERROR;
- }
- }(_this._body, 0, 1);
- if (value instanceof P._IterationMarker) {
- state = value.state;
- if (state === 2) {
- t1 = _this._suspendedBodies;
- if (t1 == null || t1.length === 0) {
- _this._async$_current = null;
- return false;
- }
- _this._body = t1.pop();
- continue;
- } else {
- t1 = value.value;
- if (state === 3)
- throw t1;
- else {
- inner = J.get$iterator$ax(t1);
- if (!!inner.$is_SyncStarIterator) {
- t1 = _this._suspendedBodies;
- if (t1 == null)
- t1 = _this._suspendedBodies = [];
- t1.push(_this._body);
- _this._body = inner._body;
- continue;
- } else {
- _this._nestedIterator = inner;
- continue;
- }
- }
- }
- } else {
- _this._async$_current = value;
- return true;
- }
- }
- return false;
- }
- };
- P._SyncStarIterable.prototype = {
- get$iterator: function(_) {
- return new P._SyncStarIterator(this._outerHelper());
- }
- };
- P._BroadcastStream.prototype = {
- get$isBroadcast: function() {
- return true;
- }
- };
- P._BroadcastSubscription.prototype = {
- _async$_onPause$0: function() {
- },
- _async$_onResume$0: function() {
- }
- };
- P._BroadcastStreamController.prototype = {
- set$onPause: function(onPauseHandler) {
- throw H.wrapException(P.UnsupportedError$("Broadcast stream controllers do not support pause callbacks"));
- },
- set$onResume: function(onResumeHandler) {
- throw H.wrapException(P.UnsupportedError$("Broadcast stream controllers do not support pause callbacks"));
- },
- get$stream: function() {
- return new P._BroadcastStream(this, this.$ti);
- },
- get$_mayAddEvent: function() {
- return this._async$_state < 4;
- },
- _ensureDoneFuture$0: function() {
- var t1 = this._doneFuture;
- if (t1 != null)
- return t1;
- return this._doneFuture = new P._Future($.Zone__current, [null]);
- },
- _removeListener$1: function(subscription) {
- var previous = subscription._async$_previous,
- next = subscription._async$_next;
- if (previous == null)
- this._firstSubscription = next;
- else
- previous._async$_next = next;
- if (next == null)
- this._lastSubscription = previous;
- else
- next._async$_previous = previous;
- subscription._async$_previous = subscription;
- subscription._async$_next = subscription;
- },
- _subscribe$4: function(onData, onError, onDone, cancelOnError) {
- var t1, t2, subscription, oldLast, _this = this;
- if ((_this._async$_state & 4) !== 0) {
- if (onDone == null)
- onDone = P.async___nullDoneHandler$closure();
- t1 = new P._DoneStreamSubscription($.Zone__current, onDone, _this.$ti);
- t1._schedule$0();
- return t1;
- }
- t1 = $.Zone__current;
- t2 = cancelOnError ? 1 : 0;
- subscription = new P._BroadcastSubscription(_this, t1, t2, _this.$ti);
- subscription._BufferingStreamSubscription$4(onData, onError, onDone, cancelOnError, H.getTypeArgumentByIndex(_this, 0));
- subscription._async$_previous = subscription;
- subscription._async$_next = subscription;
- subscription._eventState = _this._async$_state & 1;
- oldLast = _this._lastSubscription;
- _this._lastSubscription = subscription;
- subscription._async$_next = null;
- subscription._async$_previous = oldLast;
- if (oldLast == null)
- _this._firstSubscription = subscription;
- else
- oldLast._async$_next = subscription;
- if (_this._firstSubscription === subscription)
- P._runGuarded(_this.onListen);
- return subscription;
- },
- _recordCancel$1: function(sub) {
- var t1, _this = this;
- if (sub._async$_next === sub)
- return;
- t1 = sub._eventState;
- if ((t1 & 2) !== 0)
- sub._eventState = t1 | 4;
- else {
- _this._removeListener$1(sub);
- if ((_this._async$_state & 2) === 0 && _this._firstSubscription == null)
- _this._callOnCancel$0();
- }
- return;
- },
- _recordPause$1: function(subscription) {
- },
- _recordResume$1: function(subscription) {
- },
- _addEventError$0: function() {
- if ((this._async$_state & 4) !== 0)
- return new P.StateError("Cannot add new events after calling close");
- return new P.StateError("Cannot add new events while doing an addStream");
- },
- add$1: function(_, data) {
- if (!this.get$_mayAddEvent())
- throw H.wrapException(this._addEventError$0());
- this._sendData$1(data);
- },
- addError$2: function(error, stackTrace) {
- var replacement;
- if (error == null)
- error = new P.NullThrownError();
- if (!this.get$_mayAddEvent())
- throw H.wrapException(this._addEventError$0());
- replacement = $.Zone__current.errorCallback$2(error, stackTrace);
- if (replacement != null) {
- error = replacement.error;
- if (error == null)
- error = new P.NullThrownError();
- stackTrace = replacement.stackTrace;
- }
- this._sendError$2(error, stackTrace);
- },
- close$0: function(_) {
- var doneFuture, _this = this;
- if ((_this._async$_state & 4) !== 0)
- return _this._doneFuture;
- if (!_this.get$_mayAddEvent())
- throw H.wrapException(_this._addEventError$0());
- _this._async$_state |= 4;
- doneFuture = _this._ensureDoneFuture$0();
- _this._sendDone$0();
- return doneFuture;
- },
- _forEachListener$1: function(action) {
- var subscription, id, next, _this = this,
- t1 = _this._async$_state;
- if ((t1 & 2) !== 0)
- throw H.wrapException(P.StateError$("Cannot fire new event. Controller is already firing an event"));
- subscription = _this._firstSubscription;
- if (subscription == null)
- return;
- id = t1 & 1;
- _this._async$_state = t1 ^ 3;
- for (; subscription != null;) {
- t1 = subscription._eventState;
- if ((t1 & 1) === id) {
- subscription._eventState = t1 | 2;
- action.call$1(subscription);
- t1 = subscription._eventState ^= 1;
- next = subscription._async$_next;
- if ((t1 & 4) !== 0)
- _this._removeListener$1(subscription);
- subscription._eventState &= 4294967293;
- subscription = next;
- } else
- subscription = subscription._async$_next;
- }
- _this._async$_state &= 4294967293;
- if (_this._firstSubscription == null)
- _this._callOnCancel$0();
- },
- _callOnCancel$0: function() {
- var _this = this;
- if ((_this._async$_state & 4) !== 0 && _this._doneFuture._async$_state === 0)
- _this._doneFuture._asyncComplete$1(null);
- P._runGuarded(_this.onCancel);
- },
- $isEventSink: 1,
- set$onListen: function(val) {
- return this.onListen = val;
- },
- set$onCancel: function(val) {
- return this.onCancel = val;
- }
- };
- P._SyncBroadcastStreamController.prototype = {
- get$_mayAddEvent: function() {
- return P._BroadcastStreamController.prototype.get$_mayAddEvent.call(this) && (this._async$_state & 2) === 0;
- },
- _addEventError$0: function() {
- if ((this._async$_state & 2) !== 0)
- return new P.StateError("Cannot fire new event. Controller is already firing an event");
- return this.super$_BroadcastStreamController$_addEventError();
- },
- _sendData$1: function(data) {
- var _this = this,
- t1 = _this._firstSubscription;
- if (t1 == null)
- return;
- if (t1 === _this._lastSubscription) {
- _this._async$_state |= 2;
- t1._async$_add$1(data);
- _this._async$_state &= 4294967293;
- if (_this._firstSubscription == null)
- _this._callOnCancel$0();
- return;
- }
- _this._forEachListener$1(new P._SyncBroadcastStreamController__sendData_closure(data));
- },
- _sendError$2: function(error, stackTrace) {
- if (this._firstSubscription == null)
- return;
- this._forEachListener$1(new P._SyncBroadcastStreamController__sendError_closure(error, stackTrace));
- },
- _sendDone$0: function() {
- if (this._firstSubscription != null)
- this._forEachListener$1(new P._SyncBroadcastStreamController__sendDone_closure());
- else
- this._doneFuture._asyncComplete$1(null);
- }
- };
- P._SyncBroadcastStreamController__sendData_closure.prototype = {
- call$1: function(subscription) {
- subscription._async$_add$1(this.data);
- }
- };
- P._SyncBroadcastStreamController__sendError_closure.prototype = {
- call$1: function(subscription) {
- subscription._addError$2(this.error, this.stackTrace);
- }
- };
- P._SyncBroadcastStreamController__sendDone_closure.prototype = {
- call$1: function(subscription) {
- subscription._close$0();
- }
- };
- P.Future.prototype = {};
- P.Future_wait_handleError.prototype = {
- call$2: function(theError, theStackTrace) {
- var _this = this,
- t1 = _this._box_0,
- t2 = --t1.remaining;
- if (t1.values != null) {
- t1.values = null;
- if (t1.remaining === 0 || _this.eagerError)
- _this.result._completeError$2(theError, theStackTrace);
- else {
- t1.error = theError;
- t1.stackTrace = theStackTrace;
- }
- } else if (t2 === 0 && !_this.eagerError)
- _this.result._completeError$2(t1.error, t1.stackTrace);
- },
- "call*": "call$2",
- $requiredArgCount: 2,
- $signature: 15
- };
- P.Future_wait_closure.prototype = {
- call$1: function(value) {
- var _this = this,
- t1 = _this._box_0,
- t2 = --t1.remaining,
- t3 = t1.values;
- if (t3 != null) {
- t3[_this.pos] = value;
- if (t2 === 0)
- _this.result._completeWithValue$1(t3);
- } else if (t1.remaining === 0 && !_this.eagerError)
- _this.result._completeError$2(t1.error, t1.stackTrace);
- },
- $signature: function() {
- return {func: 1, ret: P.Null, args: [this.T]};
- }
- };
- P._Completer.prototype = {
- completeError$2: function(error, stackTrace) {
- var t1, replacement;
- if (error == null)
- error = new P.NullThrownError();
- t1 = this.future;
- if (t1._async$_state !== 0)
- throw H.wrapException(P.StateError$("Future already completed"));
- replacement = $.Zone__current.errorCallback$2(error, stackTrace);
- if (replacement != null) {
- error = replacement.error;
- if (error == null)
- error = new P.NullThrownError();
- stackTrace = replacement.stackTrace;
- }
- t1._asyncCompleteError$2(error, stackTrace);
- },
- completeError$1: function(error) {
- return this.completeError$2(error, null);
- }
- };
- P._AsyncCompleter.prototype = {
- complete$1: function(value) {
- var t1 = this.future;
- if (t1._async$_state !== 0)
- throw H.wrapException(P.StateError$("Future already completed"));
- t1._asyncComplete$1(value);
- },
- complete$0: function() {
- return this.complete$1(null);
- }
- };
- P._FutureListener.prototype = {
- matchesErrorTest$1: function(asyncError) {
- if ((this.state & 15) !== 6)
- return true;
- return this.result._zone.runUnary$2(this.callback, asyncError.error);
- },
- handleError$1: function(asyncError) {
- var errorCallback = this.errorCallback,
- t1 = this.result._zone;
- if (H.functionTypeTest(errorCallback, {func: 1, args: [P.Object, P.StackTrace]}))
- return t1.runBinary$3(errorCallback, asyncError.error, asyncError.stackTrace);
- else
- return t1.runUnary$2(errorCallback, asyncError.error);
- }
- };
- P._Future.prototype = {
- then$1$2$onError: function(f, onError, $R) {
- var result,
- currentZone = $.Zone__current;
- if (currentZone !== C.C__RootZone) {
- f = currentZone.registerUnaryCallback$1(f);
- if (onError != null)
- onError = P._registerErrorHandler(onError, currentZone);
- }
- result = new P._Future($.Zone__current, [$R]);
- this._addListener$1(new P._FutureListener(result, onError == null ? 1 : 3, f, onError));
- return result;
- },
- then$1$1: function(f, $R) {
- return this.then$1$2$onError(f, null, $R);
- },
- then$1: function(f) {
- return this.then$1$2$onError(f, null, null);
- },
- _thenAwait$1$2: function(f, onError, $E) {
- var result = new P._Future($.Zone__current, [$E]);
- this._addListener$1(new P._FutureListener(result, (onError == null ? 1 : 3) | 16, f, onError));
- return result;
- },
- whenComplete$1: function(action) {
- var t1 = $.Zone__current,
- result = new P._Future(t1, this.$ti);
- this._addListener$1(new P._FutureListener(result, 8, t1 !== C.C__RootZone ? t1.registerCallback$1(action) : action, null));
- return result;
- },
- _addListener$1: function(listener) {
- var t2, _this = this,
- t1 = _this._async$_state;
- if (t1 <= 1) {
- listener._nextListener = _this._resultOrListeners;
- _this._resultOrListeners = listener;
- } else {
- if (t1 === 2) {
- t1 = _this._resultOrListeners;
- t2 = t1._async$_state;
- if (t2 < 4) {
- t1._addListener$1(listener);
- return;
- }
- _this._async$_state = t2;
- _this._resultOrListeners = t1._resultOrListeners;
- }
- _this._zone.scheduleMicrotask$1(new P._Future__addListener_closure(_this, listener));
- }
- },
- _prependListeners$1: function(listeners) {
- var t1, existingListeners, cursor, cursor0, t2, _this = this, _box_0 = {};
- _box_0.listeners = listeners;
- if (listeners == null)
- return;
- t1 = _this._async$_state;
- if (t1 <= 1) {
- existingListeners = _this._resultOrListeners;
- cursor = _this._resultOrListeners = listeners;
- if (existingListeners != null) {
- for (; cursor0 = cursor._nextListener, cursor0 != null; cursor = cursor0)
- ;
- cursor._nextListener = existingListeners;
- }
- } else {
- if (t1 === 2) {
- t1 = _this._resultOrListeners;
- t2 = t1._async$_state;
- if (t2 < 4) {
- t1._prependListeners$1(listeners);
- return;
- }
- _this._async$_state = t2;
- _this._resultOrListeners = t1._resultOrListeners;
- }
- _box_0.listeners = _this._reverseListeners$1(listeners);
- _this._zone.scheduleMicrotask$1(new P._Future__prependListeners_closure(_box_0, _this));
- }
- },
- _removeListeners$0: function() {
- var current = this._resultOrListeners;
- this._resultOrListeners = null;
- return this._reverseListeners$1(current);
- },
- _reverseListeners$1: function(listeners) {
- var current, prev, next;
- for (current = listeners, prev = null; current != null; prev = current, current = next) {
- next = current._nextListener;
- current._nextListener = prev;
- }
- return prev;
- },
- _complete$1: function(value) {
- var listeners, _this = this,
- t1 = _this.$ti;
- if (H.checkSubtype(value, "$isFuture", t1, "$asFuture"))
- if (H.checkSubtype(value, "$is_Future", t1, null))
- P._Future__chainCoreFuture(value, _this);
- else
- P._Future__chainForeignFuture(value, _this);
- else {
- listeners = _this._removeListeners$0();
- _this._async$_state = 4;
- _this._resultOrListeners = value;
- P._Future__propagateToListeners(_this, listeners);
- }
- },
- _completeWithValue$1: function(value) {
- var _this = this,
- listeners = _this._removeListeners$0();
- _this._async$_state = 4;
- _this._resultOrListeners = value;
- P._Future__propagateToListeners(_this, listeners);
- },
- _completeError$2: function(error, stackTrace) {
- var _this = this,
- listeners = _this._removeListeners$0();
- _this._async$_state = 8;
- _this._resultOrListeners = new P.AsyncError(error, stackTrace);
- P._Future__propagateToListeners(_this, listeners);
- },
- _completeError$1: function(error) {
- return this._completeError$2(error, null);
- },
- _asyncComplete$1: function(value) {
- var _this = this;
- if (H.checkSubtype(value, "$isFuture", _this.$ti, "$asFuture")) {
- _this._chainFuture$1(value);
- return;
- }
- _this._async$_state = 1;
- _this._zone.scheduleMicrotask$1(new P._Future__asyncComplete_closure(_this, value));
- },
- _chainFuture$1: function(value) {
- var _this = this;
- if (H.checkSubtype(value, "$is_Future", _this.$ti, null)) {
- if (value._async$_state === 8) {
- _this._async$_state = 1;
- _this._zone.scheduleMicrotask$1(new P._Future__chainFuture_closure(_this, value));
- } else
- P._Future__chainCoreFuture(value, _this);
- return;
- }
- P._Future__chainForeignFuture(value, _this);
- },
- _asyncCompleteError$2: function(error, stackTrace) {
- this._async$_state = 1;
- this._zone.scheduleMicrotask$1(new P._Future__asyncCompleteError_closure(this, error, stackTrace));
- },
- $isFuture: 1
- };
- P._Future__addListener_closure.prototype = {
- call$0: function() {
- P._Future__propagateToListeners(this.$this, this.listener);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._Future__prependListeners_closure.prototype = {
- call$0: function() {
- P._Future__propagateToListeners(this.$this, this._box_0.listeners);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._Future__chainForeignFuture_closure.prototype = {
- call$1: function(value) {
- var t1 = this.target;
- t1._async$_state = 0;
- t1._complete$1(value);
- },
- $signature: 20
- };
- P._Future__chainForeignFuture_closure0.prototype = {
- call$2: function(error, stackTrace) {
- this.target._completeError$2(error, stackTrace);
- },
- call$1: function(error) {
- return this.call$2(error, null);
- },
- "call*": "call$2",
- $defaultValues: function() {
- return [null];
- },
- $signature: 56
- };
- P._Future__chainForeignFuture_closure1.prototype = {
- call$0: function() {
- this.target._completeError$2(this.e, this.s);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._Future__asyncComplete_closure.prototype = {
- call$0: function() {
- this.$this._completeWithValue$1(this.value);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._Future__chainFuture_closure.prototype = {
- call$0: function() {
- P._Future__chainCoreFuture(this.value, this.$this);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._Future__asyncCompleteError_closure.prototype = {
- call$0: function() {
- this.$this._completeError$2(this.error, this.stackTrace);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._Future__propagateToListeners_handleWhenCompleteCallback.prototype = {
- call$0: function() {
- var e, s, t1, exception, t2, originalSource, _this = this, completeResult = null;
- try {
- t1 = _this.listener;
- completeResult = t1.result._zone.run$1(0, t1.callback);
- } catch (exception) {
- e = H.unwrapException(exception);
- s = H.getTraceFromException(exception);
- if (_this.hasError) {
- t1 = _this._box_1.source._resultOrListeners.error;
- t2 = e;
- t2 = t1 == null ? t2 == null : t1 === t2;
- t1 = t2;
- } else
- t1 = false;
- t2 = _this._box_0;
- if (t1)
- t2.listenerValueOrError = _this._box_1.source._resultOrListeners;
- else
- t2.listenerValueOrError = new P.AsyncError(e, s);
- t2.listenerHasError = true;
- return;
- }
- if (!!J.getInterceptor$(completeResult).$isFuture) {
- if (completeResult instanceof P._Future && completeResult._async$_state >= 4) {
- if (completeResult._async$_state === 8) {
- t1 = _this._box_0;
- t1.listenerValueOrError = completeResult._resultOrListeners;
- t1.listenerHasError = true;
- }
- return;
- }
- originalSource = _this._box_1.source;
- t1 = _this._box_0;
- t1.listenerValueOrError = completeResult.then$1$1(new P._Future__propagateToListeners_handleWhenCompleteCallback_closure(originalSource), null);
- t1.listenerHasError = false;
- }
- }
- };
- P._Future__propagateToListeners_handleWhenCompleteCallback_closure.prototype = {
- call$1: function(_) {
- return this.originalSource;
- },
- $signature: 57
- };
- P._Future__propagateToListeners_handleValueCallback.prototype = {
- call$0: function() {
- var e, s, t1, exception, _this = this;
- try {
- t1 = _this.listener;
- _this._box_0.listenerValueOrError = t1.result._zone.runUnary$2(t1.callback, _this.sourceResult);
- } catch (exception) {
- e = H.unwrapException(exception);
- s = H.getTraceFromException(exception);
- t1 = _this._box_0;
- t1.listenerValueOrError = new P.AsyncError(e, s);
- t1.listenerHasError = true;
- }
- }
- };
- P._Future__propagateToListeners_handleError.prototype = {
- call$0: function() {
- var asyncError, e, s, t1, t2, exception, t3, t4, _this = this;
- try {
- asyncError = _this._box_1.source._resultOrListeners;
- t1 = _this.listener;
- if (t1.matchesErrorTest$1(asyncError) && t1.errorCallback != null) {
- t2 = _this._box_0;
- t2.listenerValueOrError = t1.handleError$1(asyncError);
- t2.listenerHasError = false;
- }
- } catch (exception) {
- e = H.unwrapException(exception);
- s = H.getTraceFromException(exception);
- t1 = _this._box_1.source._resultOrListeners;
- t2 = t1.error;
- t3 = e;
- t4 = _this._box_0;
- if (t2 == null ? t3 == null : t2 === t3)
- t4.listenerValueOrError = t1;
- else
- t4.listenerValueOrError = new P.AsyncError(e, s);
- t4.listenerHasError = true;
- }
- }
- };
- P._AsyncCallbackEntry.prototype = {};
- P.Stream.prototype = {
- get$isBroadcast: function() {
- return false;
- },
- get$length: function(_) {
- var t1 = {},
- future = new P._Future($.Zone__current, [P.int]);
- t1.count = 0;
- this.listen$4$cancelOnError$onDone$onError(new P.Stream_length_closure(t1, this), true, new P.Stream_length_closure0(t1, future), future.get$_completeError());
- return future;
- }
- };
- P.Stream_Stream$fromFuture_closure.prototype = {
- call$1: function(value) {
- var t1 = this.controller;
- t1._async$_add$1(value);
- t1._closeUnchecked$0();
- },
- $signature: function() {
- return {func: 1, ret: P.Null, args: [this.T]};
- }
- };
- P.Stream_Stream$fromFuture_closure0.prototype = {
- call$2: function(error, stackTrace) {
- var t1 = this.controller;
- t1._addError$2(error, stackTrace);
- t1._closeUnchecked$0();
- },
- "call*": "call$2",
- $requiredArgCount: 2,
- $signature: 12
- };
- P.Stream_length_closure.prototype = {
- call$1: function(_) {
- ++this._box_0.count;
- },
- $signature: function() {
- return {func: 1, ret: P.Null, args: [H.getRuntimeTypeArgument(this.$this, "Stream", 0)]};
- }
- };
- P.Stream_length_closure0.prototype = {
- call$0: function() {
- this.future._complete$1(this._box_0.count);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P.StreamSubscription.prototype = {};
- P.EventSink.prototype = {};
- P.StreamTransformerBase.prototype = {};
- P._StreamController.prototype = {
- get$stream: function() {
- return new P._ControllerStream(this, this.$ti);
- },
- get$_pendingEvents: function() {
- if ((this._async$_state & 8) === 0)
- return this._varData;
- return this._varData.varData;
- },
- _ensurePendingEvents$0: function() {
- var t1, state, _this = this;
- if ((_this._async$_state & 8) === 0) {
- t1 = _this._varData;
- return t1 == null ? _this._varData = new P._StreamImplEvents() : t1;
- }
- state = _this._varData;
- t1 = state.varData;
- return t1 == null ? state.varData = new P._StreamImplEvents() : t1;
- },
- get$_subscription: function() {
- if ((this._async$_state & 8) !== 0)
- return this._varData.varData;
- return this._varData;
- },
- _badEventState$0: function() {
- if ((this._async$_state & 4) !== 0)
- return new P.StateError("Cannot add event after closing");
- return new P.StateError("Cannot add event while adding a stream");
- },
- addStream$2$cancelOnError: function(source, cancelOnError) {
- var t2, t3, t4, _this = this,
- t1 = _this._async$_state;
- if (t1 >= 4)
- throw H.wrapException(_this._badEventState$0());
- if ((t1 & 2) !== 0) {
- t1 = new P._Future($.Zone__current, [null]);
- t1._asyncComplete$1(null);
- return t1;
- }
- t1 = _this._varData;
- t2 = new P._Future($.Zone__current, [null]);
- t3 = source.listen$4$cancelOnError$onDone$onError(_this.get$_async$_add(), false, _this.get$_close(), _this.get$_addError());
- t4 = _this._async$_state;
- if ((t4 & 1) !== 0 ? (_this.get$_subscription()._async$_state & 4) !== 0 : (t4 & 2) === 0)
- t3.pause$0(0);
- _this._varData = new P._StreamControllerAddStreamState(t1, t2, t3);
- _this._async$_state |= 8;
- return t2;
- },
- _ensureDoneFuture$0: function() {
- var t1 = this._doneFuture;
- if (t1 == null)
- t1 = this._doneFuture = (this._async$_state & 2) !== 0 ? $.$get$Future__nullFuture() : new P._Future($.Zone__current, [null]);
- return t1;
- },
- add$1: function(_, value) {
- if (this._async$_state >= 4)
- throw H.wrapException(this._badEventState$0());
- this._async$_add$1(value);
- },
- addError$2: function(error, stackTrace) {
- var replacement;
- if (this._async$_state >= 4)
- throw H.wrapException(this._badEventState$0());
- if (error == null)
- error = new P.NullThrownError();
- replacement = $.Zone__current.errorCallback$2(error, stackTrace);
- if (replacement != null) {
- error = replacement.error;
- if (error == null)
- error = new P.NullThrownError();
- stackTrace = replacement.stackTrace;
- }
- this._addError$2(error, stackTrace);
- },
- addError$1: function(error) {
- return this.addError$2(error, null);
- },
- close$0: function(_) {
- var _this = this,
- t1 = _this._async$_state;
- if ((t1 & 4) !== 0)
- return _this._ensureDoneFuture$0();
- if (t1 >= 4)
- throw H.wrapException(_this._badEventState$0());
- _this._closeUnchecked$0();
- return _this._ensureDoneFuture$0();
- },
- _closeUnchecked$0: function() {
- var t1 = this._async$_state |= 4;
- if ((t1 & 1) !== 0)
- this._sendDone$0();
- else if ((t1 & 3) === 0)
- this._ensurePendingEvents$0().add$1(0, C.C__DelayedDone);
- },
- _async$_add$1: function(value) {
- var t1 = this._async$_state;
- if ((t1 & 1) !== 0)
- this._sendData$1(value);
- else if ((t1 & 3) === 0)
- this._ensurePendingEvents$0().add$1(0, new P._DelayedData(value));
- },
- _addError$2: function(error, stackTrace) {
- var t1 = this._async$_state;
- if ((t1 & 1) !== 0)
- this._sendError$2(error, stackTrace);
- else if ((t1 & 3) === 0)
- this._ensurePendingEvents$0().add$1(0, new P._DelayedError(error, stackTrace));
- },
- _close$0: function() {
- var addState = this._varData;
- this._varData = addState.varData;
- this._async$_state &= 4294967287;
- addState.addStreamFuture._asyncComplete$1(null);
- },
- _subscribe$4: function(onData, onError, onDone, cancelOnError) {
- var t1, t2, subscription, pendingEvents, addState, _this = this;
- if ((_this._async$_state & 3) !== 0)
- throw H.wrapException(P.StateError$("Stream has already been listened to."));
- t1 = $.Zone__current;
- t2 = cancelOnError ? 1 : 0;
- subscription = new P._ControllerSubscription(_this, t1, t2, _this.$ti);
- subscription._BufferingStreamSubscription$4(onData, onError, onDone, cancelOnError, H.getTypeArgumentByIndex(_this, 0));
- pendingEvents = _this.get$_pendingEvents();
- t2 = _this._async$_state |= 1;
- if ((t2 & 8) !== 0) {
- addState = _this._varData;
- addState.varData = subscription;
- addState.addSubscription.resume$0();
- } else
- _this._varData = subscription;
- subscription._setPendingEvents$1(pendingEvents);
- subscription._guardCallback$1(new P._StreamController__subscribe_closure(_this));
- return subscription;
- },
- _recordCancel$1: function(subscription) {
- var e, s, t1, exception, result0, _this = this, result = null;
- if ((_this._async$_state & 8) !== 0)
- result = _this._varData.cancel$0();
- _this._varData = null;
- _this._async$_state = _this._async$_state & 4294967286 | 2;
- t1 = _this.onCancel;
- if (t1 != null)
- if (result == null)
- try {
- result = t1.call$0();
- } catch (exception) {
- e = H.unwrapException(exception);
- s = H.getTraceFromException(exception);
- result0 = new P._Future($.Zone__current, [null]);
- result0._asyncCompleteError$2(e, s);
- result = result0;
- }
- else
- result = result.whenComplete$1(t1);
- t1 = new P._StreamController__recordCancel_complete(_this);
- if (result != null)
- result = result.whenComplete$1(t1);
- else
- t1.call$0();
- return result;
- },
- _recordPause$1: function(subscription) {
- if ((this._async$_state & 8) !== 0)
- this._varData.addSubscription.pause$0(0);
- P._runGuarded(this.onPause);
- },
- _recordResume$1: function(subscription) {
- if ((this._async$_state & 8) !== 0)
- this._varData.addSubscription.resume$0();
- P._runGuarded(this.onResume);
- },
- $isEventSink: 1,
- set$onListen: function(val) {
- return this.onListen = val;
- },
- set$onPause: function(val) {
- return this.onPause = val;
- },
- set$onResume: function(val) {
- return this.onResume = val;
- },
- set$onCancel: function(val) {
- return this.onCancel = val;
- }
- };
- P._StreamController__subscribe_closure.prototype = {
- call$0: function() {
- P._runGuarded(this.$this.onListen);
- }
- };
- P._StreamController__recordCancel_complete.prototype = {
- call$0: function() {
- var t1 = this.$this._doneFuture;
- if (t1 != null && t1._async$_state === 0)
- t1._asyncComplete$1(null);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._SyncStreamControllerDispatch.prototype = {
- _sendData$1: function(data) {
- this.get$_subscription()._async$_add$1(data);
- },
- _sendError$2: function(error, stackTrace) {
- this.get$_subscription()._addError$2(error, stackTrace);
- },
- _sendDone$0: function() {
- this.get$_subscription()._close$0();
- }
- };
- P._AsyncStreamControllerDispatch.prototype = {
- _sendData$1: function(data) {
- this.get$_subscription()._addPending$1(new P._DelayedData(data));
- },
- _sendError$2: function(error, stackTrace) {
- this.get$_subscription()._addPending$1(new P._DelayedError(error, stackTrace));
- },
- _sendDone$0: function() {
- this.get$_subscription()._addPending$1(C.C__DelayedDone);
- }
- };
- P._AsyncStreamController.prototype = {};
- P._SyncStreamController.prototype = {};
- P._ControllerStream.prototype = {
- get$hashCode: function(_) {
- return (H.Primitives_objectHashCode(this._async$_controller) ^ 892482866) >>> 0;
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- if (this === other)
- return true;
- return other instanceof P._ControllerStream && other._async$_controller === this._async$_controller;
- }
- };
- P._ControllerSubscription.prototype = {
- _async$_onCancel$0: function() {
- return this._async$_controller._recordCancel$1(this);
- },
- _async$_onPause$0: function() {
- this._async$_controller._recordPause$1(this);
- },
- _async$_onResume$0: function() {
- this._async$_controller._recordResume$1(this);
- }
- };
- P._AddStreamState.prototype = {
- cancel$0: function() {
- var cancel = this.addSubscription.cancel$0();
- if (cancel == null) {
- this.addStreamFuture._asyncComplete$1(null);
- return;
- }
- return cancel.whenComplete$1(new P._AddStreamState_cancel_closure(this));
- }
- };
- P._AddStreamState_cancel_closure.prototype = {
- call$0: function() {
- this.$this.addStreamFuture._asyncComplete$1(null);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._StreamControllerAddStreamState.prototype = {};
- P._BufferingStreamSubscription.prototype = {
- _BufferingStreamSubscription$4: function(onData, onError, onDone, cancelOnError, $T) {
- var handleError, _this = this,
- handleData = onData == null ? P.async___nullDataHandler$closure() : onData,
- t1 = _this._zone;
- _this._onData = t1.registerUnaryCallback$1(handleData);
- handleError = onError == null ? P.async___nullErrorHandler$closure() : onError;
- if (H.functionTypeTest(handleError, {func: 1, ret: -1, args: [P.Object, P.StackTrace]}))
- _this._onError = t1.registerBinaryCallback$1(handleError);
- else if (H.functionTypeTest(handleError, {func: 1, ret: -1, args: [P.Object]}))
- _this._onError = t1.registerUnaryCallback$1(handleError);
- else
- H.throwExpression(P.ArgumentError$("handleError callback must take either an Object (the error), or both an Object (the error) and a StackTrace."));
- _this._onDone = t1.registerCallback$1(onDone == null ? P.async___nullDoneHandler$closure() : onDone);
- },
- _setPendingEvents$1: function(pendingEvents) {
- var _this = this;
- if (pendingEvents == null)
- return;
- _this._pending = pendingEvents;
- if (pendingEvents.lastPendingEvent != null) {
- _this._async$_state = (_this._async$_state | 64) >>> 0;
- pendingEvents.schedule$1(_this);
- }
- },
- pause$1: function(_, resumeSignal) {
- var t2, t3, _this = this,
- t1 = _this._async$_state;
- if ((t1 & 8) !== 0)
- return;
- t2 = (t1 + 128 | 4) >>> 0;
- _this._async$_state = t2;
- if (t1 < 128 && _this._pending != null) {
- t3 = _this._pending;
- if (t3._async$_state === 1)
- t3._async$_state = 3;
- }
- if ((t1 & 4) === 0 && (t2 & 32) === 0)
- _this._guardCallback$1(_this.get$_async$_onPause());
- },
- pause$0: function($receiver) {
- return this.pause$1($receiver, null);
- },
- resume$0: function() {
- var _this = this,
- t1 = _this._async$_state;
- if ((t1 & 8) !== 0)
- return;
- if (t1 >= 128) {
- t1 = _this._async$_state = t1 - 128;
- if (t1 < 128)
- if ((t1 & 64) !== 0 && _this._pending.lastPendingEvent != null)
- _this._pending.schedule$1(_this);
- else {
- t1 = (t1 & 4294967291) >>> 0;
- _this._async$_state = t1;
- if ((t1 & 32) === 0)
- _this._guardCallback$1(_this.get$_async$_onResume());
- }
- }
- },
- cancel$0: function() {
- var _this = this,
- t1 = (_this._async$_state & 4294967279) >>> 0;
- _this._async$_state = t1;
- if ((t1 & 8) === 0)
- _this._cancel$0();
- t1 = _this._cancelFuture;
- return t1 == null ? $.$get$Future__nullFuture() : t1;
- },
- _cancel$0: function() {
- var t2, _this = this,
- t1 = _this._async$_state = (_this._async$_state | 8) >>> 0;
- if ((t1 & 64) !== 0) {
- t2 = _this._pending;
- if (t2._async$_state === 1)
- t2._async$_state = 3;
- }
- if ((t1 & 32) === 0)
- _this._pending = null;
- _this._cancelFuture = _this._async$_onCancel$0();
- },
- _async$_add$1: function(data) {
- var t1 = this._async$_state;
- if ((t1 & 8) !== 0)
- return;
- if (t1 < 32)
- this._sendData$1(data);
- else
- this._addPending$1(new P._DelayedData(data));
- },
- _addError$2: function(error, stackTrace) {
- var t1 = this._async$_state;
- if ((t1 & 8) !== 0)
- return;
- if (t1 < 32)
- this._sendError$2(error, stackTrace);
- else
- this._addPending$1(new P._DelayedError(error, stackTrace));
- },
- _close$0: function() {
- var _this = this,
- t1 = _this._async$_state;
- if ((t1 & 8) !== 0)
- return;
- t1 = (t1 | 2) >>> 0;
- _this._async$_state = t1;
- if (t1 < 32)
- _this._sendDone$0();
- else
- _this._addPending$1(C.C__DelayedDone);
- },
- _async$_onPause$0: function() {
- },
- _async$_onResume$0: function() {
- },
- _async$_onCancel$0: function() {
- return;
- },
- _addPending$1: function($event) {
- var t1, _this = this,
- pending = _this._pending;
- (pending == null ? _this._pending = new P._StreamImplEvents() : pending).add$1(0, $event);
- t1 = _this._async$_state;
- if ((t1 & 64) === 0) {
- t1 = (t1 | 64) >>> 0;
- _this._async$_state = t1;
- if (t1 < 128)
- _this._pending.schedule$1(_this);
- }
- },
- _sendData$1: function(data) {
- var _this = this,
- t1 = _this._async$_state;
- _this._async$_state = (t1 | 32) >>> 0;
- _this._zone.runUnaryGuarded$2(_this._onData, data);
- _this._async$_state = (_this._async$_state & 4294967263) >>> 0;
- _this._checkState$1((t1 & 4) !== 0);
- },
- _sendError$2: function(error, stackTrace) {
- var _this = this,
- t1 = _this._async$_state,
- t2 = new P._BufferingStreamSubscription__sendError_sendError(_this, error, stackTrace);
- if ((t1 & 1) !== 0) {
- _this._async$_state = (t1 | 16) >>> 0;
- _this._cancel$0();
- t1 = _this._cancelFuture;
- if (t1 != null && t1 !== $.$get$Future__nullFuture())
- t1.whenComplete$1(t2);
- else
- t2.call$0();
- } else {
- t2.call$0();
- _this._checkState$1((t1 & 4) !== 0);
- }
- },
- _sendDone$0: function() {
- var t2, _this = this,
- t1 = new P._BufferingStreamSubscription__sendDone_sendDone(_this);
- _this._cancel$0();
- _this._async$_state = (_this._async$_state | 16) >>> 0;
- t2 = _this._cancelFuture;
- if (t2 != null && t2 !== $.$get$Future__nullFuture())
- t2.whenComplete$1(t1);
- else
- t1.call$0();
- },
- _guardCallback$1: function(callback) {
- var _this = this,
- t1 = _this._async$_state;
- _this._async$_state = (t1 | 32) >>> 0;
- callback.call$0();
- _this._async$_state = (_this._async$_state & 4294967263) >>> 0;
- _this._checkState$1((t1 & 4) !== 0);
- },
- _checkState$1: function(wasInputPaused) {
- var t2, isInputPaused, _this = this,
- t1 = _this._async$_state;
- if ((t1 & 64) !== 0 && _this._pending.lastPendingEvent == null) {
- t1 = _this._async$_state = (t1 & 4294967231) >>> 0;
- if ((t1 & 4) !== 0)
- if (t1 < 128) {
- t2 = _this._pending;
- t2 = t2 == null || t2.lastPendingEvent == null;
- } else
- t2 = false;
- else
- t2 = false;
- if (t2) {
- t1 = (t1 & 4294967291) >>> 0;
- _this._async$_state = t1;
- }
- }
- for (; true; wasInputPaused = isInputPaused) {
- if ((t1 & 8) !== 0)
- return _this._pending = null;
- isInputPaused = (t1 & 4) !== 0;
- if (wasInputPaused === isInputPaused)
- break;
- _this._async$_state = (t1 ^ 32) >>> 0;
- if (isInputPaused)
- _this._async$_onPause$0();
- else
- _this._async$_onResume$0();
- t1 = (_this._async$_state & 4294967263) >>> 0;
- _this._async$_state = t1;
- }
- if ((t1 & 64) !== 0 && t1 < 128)
- _this._pending.schedule$1(_this);
- },
- $isStreamSubscription: 1
- };
- P._BufferingStreamSubscription__sendError_sendError.prototype = {
- call$0: function() {
- var onError, t3,
- t1 = this.$this,
- t2 = t1._async$_state;
- if ((t2 & 8) !== 0 && (t2 & 16) === 0)
- return;
- t1._async$_state = (t2 | 32) >>> 0;
- onError = t1._onError;
- t2 = this.error;
- t3 = t1._zone;
- if (H.functionTypeTest(onError, {func: 1, ret: -1, args: [P.Object, P.StackTrace]}))
- t3.runBinaryGuarded$3(onError, t2, this.stackTrace);
- else
- t3.runUnaryGuarded$2(t1._onError, t2);
- t1._async$_state = (t1._async$_state & 4294967263) >>> 0;
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._BufferingStreamSubscription__sendDone_sendDone.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = t1._async$_state;
- if ((t2 & 16) === 0)
- return;
- t1._async$_state = (t2 | 42) >>> 0;
- t1._zone.runGuarded$1(t1._onDone);
- t1._async$_state = (t1._async$_state & 4294967263) >>> 0;
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._StreamImpl.prototype = {
- listen$4$cancelOnError$onDone$onError: function(onData, cancelOnError, onDone, onError) {
- return this._async$_controller._subscribe$4(onData, onError, onDone, true === cancelOnError);
- },
- listen$3$onDone$onError: function(onData, onDone, onError) {
- return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError);
- }
- };
- P._DelayedEvent.prototype = {
- get$next: function() {
- return this.next;
- },
- set$next: function(val) {
- return this.next = val;
- }
- };
- P._DelayedData.prototype = {
- perform$1: function(dispatch) {
- dispatch._sendData$1(this.value);
- }
- };
- P._DelayedError.prototype = {
- perform$1: function(dispatch) {
- dispatch._sendError$2(this.error, this.stackTrace);
- }
- };
- P._DelayedDone.prototype = {
- perform$1: function(dispatch) {
- dispatch._sendDone$0();
- },
- get$next: function() {
- return;
- },
- set$next: function(_) {
- throw H.wrapException(P.StateError$("No events after a done."));
- }
- };
- P._PendingEvents.prototype = {
- schedule$1: function(dispatch) {
- var _this = this,
- t1 = _this._async$_state;
- if (t1 === 1)
- return;
- if (t1 >= 1) {
- _this._async$_state = 1;
- return;
- }
- P.scheduleMicrotask(new P._PendingEvents_schedule_closure(_this, dispatch));
- _this._async$_state = 1;
- }
- };
- P._PendingEvents_schedule_closure.prototype = {
- call$0: function() {
- var $event, t2,
- t1 = this.$this,
- oldState = t1._async$_state;
- t1._async$_state = 0;
- if (oldState === 3)
- return;
- $event = t1.firstPendingEvent;
- t2 = $event.get$next();
- t1.firstPendingEvent = t2;
- if (t2 == null)
- t1.lastPendingEvent = null;
- $event.perform$1(this.dispatch);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._StreamImplEvents.prototype = {
- add$1: function(_, $event) {
- var _this = this,
- t1 = _this.lastPendingEvent;
- if (t1 == null)
- _this.firstPendingEvent = _this.lastPendingEvent = $event;
- else {
- t1.set$next($event);
- _this.lastPendingEvent = $event;
- }
- }
- };
- P._DoneStreamSubscription.prototype = {
- _schedule$0: function() {
- var _this = this;
- if ((_this._async$_state & 2) !== 0)
- return;
- _this._zone.scheduleMicrotask$1(_this.get$_sendDone());
- _this._async$_state = (_this._async$_state | 2) >>> 0;
- },
- pause$1: function(_, resumeSignal) {
- this._async$_state += 4;
- },
- pause$0: function($receiver) {
- return this.pause$1($receiver, null);
- },
- resume$0: function() {
- var t1 = this._async$_state;
- if (t1 >= 4) {
- t1 = this._async$_state = t1 - 4;
- if (t1 < 4 && (t1 & 1) === 0)
- this._schedule$0();
- }
- },
- cancel$0: function() {
- return $.$get$Future__nullFuture();
- },
- _sendDone$0: function() {
- var _this = this,
- t1 = _this._async$_state = (_this._async$_state & 4294967293) >>> 0;
- if (t1 >= 4)
- return;
- _this._async$_state = (t1 | 1) >>> 0;
- _this._zone.runGuarded$1(_this._onDone);
- },
- $isStreamSubscription: 1
- };
- P._StreamIterator.prototype = {
- get$current: function(_) {
- if (this._subscription != null && this._isPaused)
- return this._stateData;
- return;
- },
- moveNext$0: function() {
- var future, _this = this,
- t1 = _this._subscription;
- if (t1 != null) {
- if (_this._isPaused) {
- future = new P._Future($.Zone__current, [P.bool]);
- _this._stateData = future;
- _this._isPaused = false;
- t1.resume$0();
- return future;
- }
- throw H.wrapException(P.StateError$("Already waiting for next."));
- }
- return _this._initializeOrDone$0();
- },
- _initializeOrDone$0: function() {
- var _this = this,
- stateData = _this._stateData;
- if (stateData != null) {
- _this._subscription = stateData.listen$4$cancelOnError$onDone$onError(_this.get$_onData(), true, _this.get$_onDone(), _this.get$_onError());
- return _this._stateData = new P._Future($.Zone__current, [P.bool]);
- }
- return $.$get$Future__falseFuture();
- },
- cancel$0: function() {
- var _this = this,
- subscription = _this._subscription,
- stateData = _this._stateData;
- _this._stateData = null;
- if (subscription != null) {
- _this._subscription = null;
- if (!_this._isPaused)
- stateData._asyncComplete$1(false);
- return subscription.cancel$0();
- }
- return $.$get$Future__nullFuture();
- },
- _onData$1: function(data) {
- var t1, _this = this,
- moveNextFuture = _this._stateData;
- _this._stateData = data;
- _this._isPaused = true;
- moveNextFuture._complete$1(true);
- t1 = _this._subscription;
- if (t1 != null && _this._isPaused)
- t1.pause$0(0);
- },
- _onError$2: function(error, stackTrace) {
- var moveNextFuture = this._stateData;
- this._stateData = this._subscription = null;
- moveNextFuture._completeError$2(error, stackTrace);
- },
- _onError$1: function(error) {
- return this._onError$2(error, null);
- },
- _onDone$0: function() {
- var moveNextFuture = this._stateData;
- this._stateData = this._subscription = null;
- moveNextFuture._complete$1(false);
- }
- };
- P._ForwardingStream.prototype = {
- get$isBroadcast: function() {
- return this._async$_source.get$isBroadcast();
- },
- listen$4$cancelOnError$onDone$onError: function(onData, cancelOnError, onDone, onError) {
- var t1, t2, _this = this;
- cancelOnError = true === cancelOnError;
- t1 = $.Zone__current;
- t2 = cancelOnError ? 1 : 0;
- t2 = new P._ForwardingStreamSubscription(_this, t1, t2, _this.$ti);
- t2._BufferingStreamSubscription$4(onData, onError, onDone, cancelOnError, H.getTypeArgumentByIndex(_this, 1));
- t2._subscription = _this._async$_source.listen$3$onDone$onError(t2.get$_handleData(), t2.get$_handleDone(), t2.get$_handleError());
- return t2;
- },
- listen$3$onDone$onError: function(onData, onDone, onError) {
- return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError);
- },
- _handleData$2: function(data, sink) {
- sink._async$_add$1(data);
- },
- $asStream: function($S, $T) {
- return [$T];
- }
- };
- P._ForwardingStreamSubscription.prototype = {
- _async$_add$1: function(data) {
- if ((this._async$_state & 2) !== 0)
- return;
- this.super$_BufferingStreamSubscription$_add(data);
- },
- _addError$2: function(error, stackTrace) {
- if ((this._async$_state & 2) !== 0)
- return;
- this.super$_BufferingStreamSubscription$_addError(error, stackTrace);
- },
- _async$_onPause$0: function() {
- var t1 = this._subscription;
- if (t1 == null)
- return;
- t1.pause$0(0);
- },
- _async$_onResume$0: function() {
- var t1 = this._subscription;
- if (t1 == null)
- return;
- t1.resume$0();
- },
- _async$_onCancel$0: function() {
- var t1 = this._subscription;
- if (t1 != null) {
- this._subscription = null;
- return t1.cancel$0();
- }
- return;
- },
- _handleData$1: function(data) {
- this._stream._handleData$2(data, this);
- },
- _handleError$2: function(error, stackTrace) {
- this._addError$2(error, stackTrace);
- },
- _handleDone$0: function() {
- this._close$0();
- },
- $asStreamSubscription: function($S, $T) {
- return [$T];
- },
- $as_BufferingStreamSubscription: function($S, $T) {
- return [$T];
- }
- };
- P._ExpandStream.prototype = {
- _handleData$2: function(inputEvent, sink) {
- var value, e, s, t1, exception;
- try {
- for (t1 = J.get$iterator$ax(this._expand.call$1(inputEvent)); t1.moveNext$0();) {
- value = t1.get$current(t1);
- sink._async$_add$1(value);
- }
- } catch (exception) {
- e = H.unwrapException(exception);
- s = H.getTraceFromException(exception);
- P._addErrorWithReplacement(sink, e, s);
- }
- }
- };
- P.Timer.prototype = {};
- P.AsyncError.prototype = {
- toString$0: function(_) {
- return H.S(this.error);
- },
- $isError: 1
- };
- P._ZoneFunction.prototype = {};
- P.ZoneSpecification.prototype = {};
- P._ZoneSpecification.prototype = {$isZoneSpecification: 1};
- P.ZoneDelegate.prototype = {};
- P.Zone.prototype = {};
- P._ZoneDelegate.prototype = {$isZoneDelegate: 1};
- P._Zone.prototype = {$isZone: 1};
- P._CustomZone.prototype = {
- get$_delegate: function() {
- var t1 = this._delegateCache;
- if (t1 != null)
- return t1;
- return this._delegateCache = new P._ZoneDelegate(this);
- },
- get$errorZone: function() {
- return this._handleUncaughtError.zone;
- },
- runGuarded$1: function(f) {
- var e, s, exception;
- try {
- this.run$1(0, f);
- } catch (exception) {
- e = H.unwrapException(exception);
- s = H.getTraceFromException(exception);
- this.handleUncaughtError$2(e, s);
- }
- },
- runUnaryGuarded$1$2: function(f, arg) {
- var e, s, exception;
- try {
- this.runUnary$2(f, arg);
- } catch (exception) {
- e = H.unwrapException(exception);
- s = H.getTraceFromException(exception);
- this.handleUncaughtError$2(e, s);
- }
- },
- runUnaryGuarded$2: function(f, arg) {
- return this.runUnaryGuarded$1$2(f, arg, null);
- },
- runBinaryGuarded$2$3: function(f, arg1, arg2) {
- var e, s, exception;
- try {
- this.runBinary$3(f, arg1, arg2);
- } catch (exception) {
- e = H.unwrapException(exception);
- s = H.getTraceFromException(exception);
- this.handleUncaughtError$2(e, s);
- }
- },
- runBinaryGuarded$3: function(f, arg1, arg2) {
- return this.runBinaryGuarded$2$3(f, arg1, arg2, null, null);
- },
- bindCallback$1$1: function(f) {
- return new P._CustomZone_bindCallback_closure(this, this.registerCallback$1(f));
- },
- bindCallback$1: function(f) {
- return this.bindCallback$1$1(f, null);
- },
- bindUnaryCallback$2$1: function(f, $R, $T) {
- return new P._CustomZone_bindUnaryCallback_closure(this, this.registerUnaryCallback$1(f), $T, $R);
- },
- bindCallbackGuarded$1: function(f) {
- return new P._CustomZone_bindCallbackGuarded_closure(this, this.registerCallback$1(f));
- },
- $index: function(_, key) {
- var value,
- t1 = this._async$_map,
- result = t1.$index(0, key);
- if (result != null || t1.containsKey$1(key))
- return result;
- value = this.parent.$index(0, key);
- if (value != null)
- t1.$indexSet(0, key, value);
- return value;
- },
- handleUncaughtError$2: function(error, stackTrace) {
- var implementation = this._handleUncaughtError,
- t1 = implementation.zone,
- parentDelegate = P._parentDelegate(t1);
- return implementation.$function.call$5(t1, parentDelegate, this, error, stackTrace);
- },
- fork$2$specification$zoneValues: function(specification, zoneValues) {
- var implementation = this._fork,
- t1 = implementation.zone,
- parentDelegate = P._parentDelegate(t1);
- return implementation.$function.call$5(t1, parentDelegate, this, specification, zoneValues);
- },
- run$1$1: function(_, f) {
- var implementation = this._run,
- t1 = implementation.zone,
- parentDelegate = P._parentDelegate(t1);
- return implementation.$function.call$4(t1, parentDelegate, this, f);
- },
- run$1: function($receiver, f) {
- return this.run$1$1($receiver, f, null);
- },
- runUnary$2$2: function(f, arg) {
- var implementation = this._runUnary,
- t1 = implementation.zone,
- parentDelegate = P._parentDelegate(t1);
- return implementation.$function.call$5(t1, parentDelegate, this, f, arg);
- },
- runUnary$2: function(f, arg) {
- return this.runUnary$2$2(f, arg, null, null);
- },
- runBinary$3$3: function(f, arg1, arg2) {
- var implementation = this._runBinary,
- t1 = implementation.zone,
- parentDelegate = P._parentDelegate(t1);
- return implementation.$function.call$6(t1, parentDelegate, this, f, arg1, arg2);
- },
- runBinary$3: function(f, arg1, arg2) {
- return this.runBinary$3$3(f, arg1, arg2, null, null, null);
- },
- registerCallback$1$1: function(callback) {
- var implementation = this._registerCallback,
- t1 = implementation.zone,
- parentDelegate = P._parentDelegate(t1);
- return implementation.$function.call$4(t1, parentDelegate, this, callback);
- },
- registerCallback$1: function(callback) {
- return this.registerCallback$1$1(callback, null);
- },
- registerUnaryCallback$2$1: function(callback) {
- var implementation = this._registerUnaryCallback,
- t1 = implementation.zone,
- parentDelegate = P._parentDelegate(t1);
- return implementation.$function.call$4(t1, parentDelegate, this, callback);
- },
- registerUnaryCallback$1: function(callback) {
- return this.registerUnaryCallback$2$1(callback, null, null);
- },
- registerBinaryCallback$3$1: function(callback) {
- var implementation = this._registerBinaryCallback,
- t1 = implementation.zone,
- parentDelegate = P._parentDelegate(t1);
- return implementation.$function.call$4(t1, parentDelegate, this, callback);
- },
- registerBinaryCallback$1: function(callback) {
- return this.registerBinaryCallback$3$1(callback, null, null, null);
- },
- errorCallback$2: function(error, stackTrace) {
- var parentDelegate,
- implementation = this._errorCallback,
- implementationZone = implementation.zone;
- if (implementationZone === C.C__RootZone)
- return;
- parentDelegate = P._parentDelegate(implementationZone);
- return implementation.$function.call$5(implementationZone, parentDelegate, this, error, stackTrace);
- },
- scheduleMicrotask$1: function(f) {
- var implementation = this._scheduleMicrotask,
- t1 = implementation.zone,
- parentDelegate = P._parentDelegate(t1);
- return implementation.$function.call$4(t1, parentDelegate, this, f);
- },
- createTimer$2: function(duration, f) {
- var implementation = this._createTimer,
- t1 = implementation.zone,
- parentDelegate = P._parentDelegate(t1);
- return implementation.$function.call$5(t1, parentDelegate, this, duration, f);
- },
- print$1: function(line) {
- var implementation = this._print,
- t1 = implementation.zone,
- parentDelegate = P._parentDelegate(t1);
- return implementation.$function.call$4(t1, parentDelegate, this, line);
- },
- get$_run: function() {
- return this._run;
- },
- get$_runUnary: function() {
- return this._runUnary;
- },
- get$_runBinary: function() {
- return this._runBinary;
- },
- get$_registerCallback: function() {
- return this._registerCallback;
- },
- get$_registerUnaryCallback: function() {
- return this._registerUnaryCallback;
- },
- get$_registerBinaryCallback: function() {
- return this._registerBinaryCallback;
- },
- get$_errorCallback: function() {
- return this._errorCallback;
- },
- get$_scheduleMicrotask: function() {
- return this._scheduleMicrotask;
- },
- get$_createTimer: function() {
- return this._createTimer;
- },
- get$_createPeriodicTimer: function() {
- return this._createPeriodicTimer;
- },
- get$_print: function() {
- return this._print;
- },
- get$_fork: function() {
- return this._fork;
- },
- get$_handleUncaughtError: function() {
- return this._handleUncaughtError;
- },
- get$parent: function() {
- return this.parent;
- },
- get$_async$_map: function() {
- return this._async$_map;
- }
- };
- P._CustomZone_bindCallback_closure.prototype = {
- call$0: function() {
- return this.$this.run$1(0, this.registered);
- }
- };
- P._CustomZone_bindUnaryCallback_closure.prototype = {
- call$1: function(arg) {
- return this.$this.runUnary$2(this.registered, arg);
- },
- $signature: function() {
- return {func: 1, ret: this.R, args: [this.T]};
- }
- };
- P._CustomZone_bindCallbackGuarded_closure.prototype = {
- call$0: function() {
- return this.$this.runGuarded$1(this.registered);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._rootHandleUncaughtError_closure.prototype = {
- call$0: function() {
- var error,
- t1 = this._box_0,
- t2 = t1.error;
- t1 = t2 == null ? t1.error = new P.NullThrownError() : t2;
- t2 = this.stackTrace;
- if (t2 == null)
- throw H.wrapException(t1);
- error = H.wrapException(t1);
- error.stack = t2.toString$0(0);
- throw error;
- }
- };
- P._RootZone.prototype = {
- get$_run: function() {
- return C._ZoneFunction__RootZone__rootRun;
- },
- get$_runUnary: function() {
- return C._ZoneFunction__RootZone__rootRunUnary;
- },
- get$_runBinary: function() {
- return C._ZoneFunction__RootZone__rootRunBinary;
- },
- get$_registerCallback: function() {
- return C._ZoneFunction__RootZone__rootRegisterCallback;
- },
- get$_registerUnaryCallback: function() {
- return C._ZoneFunction_Eeh;
- },
- get$_registerBinaryCallback: function() {
- return C._ZoneFunction_7G2;
- },
- get$_errorCallback: function() {
- return C._ZoneFunction__RootZone__rootErrorCallback;
- },
- get$_scheduleMicrotask: function() {
- return C._ZoneFunction__RootZone__rootScheduleMicrotask;
- },
- get$_createTimer: function() {
- return C._ZoneFunction__RootZone__rootCreateTimer;
- },
- get$_createPeriodicTimer: function() {
- return C._ZoneFunction_3bB;
- },
- get$_print: function() {
- return C._ZoneFunction__RootZone__rootPrint;
- },
- get$_fork: function() {
- return C._ZoneFunction__RootZone__rootFork;
- },
- get$_handleUncaughtError: function() {
- return C._ZoneFunction_NMc;
- },
- get$parent: function() {
- return;
- },
- get$_async$_map: function() {
- return $.$get$_RootZone__rootMap();
- },
- get$_delegate: function() {
- var t1 = $._RootZone__rootDelegate;
- if (t1 != null)
- return t1;
- return $._RootZone__rootDelegate = new P._ZoneDelegate(this);
- },
- get$errorZone: function() {
- return this;
- },
- runGuarded$1: function(f) {
- var e, s, exception, _null = null;
- try {
- if (C.C__RootZone === $.Zone__current) {
- f.call$0();
- return;
- }
- P._rootRun(_null, _null, this, f);
- } catch (exception) {
- e = H.unwrapException(exception);
- s = H.getTraceFromException(exception);
- P._rootHandleUncaughtError(_null, _null, this, e, s);
- }
- },
- runUnaryGuarded$1$2: function(f, arg) {
- var e, s, exception, _null = null;
- try {
- if (C.C__RootZone === $.Zone__current) {
- f.call$1(arg);
- return;
- }
- P._rootRunUnary(_null, _null, this, f, arg);
- } catch (exception) {
- e = H.unwrapException(exception);
- s = H.getTraceFromException(exception);
- P._rootHandleUncaughtError(_null, _null, this, e, s);
- }
- },
- runUnaryGuarded$2: function(f, arg) {
- return this.runUnaryGuarded$1$2(f, arg, null);
- },
- runBinaryGuarded$2$3: function(f, arg1, arg2) {
- var e, s, exception, _null = null;
- try {
- if (C.C__RootZone === $.Zone__current) {
- f.call$2(arg1, arg2);
- return;
- }
- P._rootRunBinary(_null, _null, this, f, arg1, arg2);
- } catch (exception) {
- e = H.unwrapException(exception);
- s = H.getTraceFromException(exception);
- P._rootHandleUncaughtError(_null, _null, this, e, s);
- }
- },
- runBinaryGuarded$3: function(f, arg1, arg2) {
- return this.runBinaryGuarded$2$3(f, arg1, arg2, null, null);
- },
- bindCallback$1$1: function(f) {
- return new P._RootZone_bindCallback_closure(this, f);
- },
- bindCallback$1: function(f) {
- return this.bindCallback$1$1(f, null);
- },
- bindCallbackGuarded$1: function(f) {
- return new P._RootZone_bindCallbackGuarded_closure(this, f);
- },
- $index: function(_, key) {
- return;
- },
- handleUncaughtError$2: function(error, stackTrace) {
- P._rootHandleUncaughtError(null, null, this, error, stackTrace);
- },
- fork$2$specification$zoneValues: function(specification, zoneValues) {
- return P._rootFork(null, null, this, specification, zoneValues);
- },
- run$1$1: function(_, f) {
- if ($.Zone__current === C.C__RootZone)
- return f.call$0();
- return P._rootRun(null, null, this, f);
- },
- run$1: function($receiver, f) {
- return this.run$1$1($receiver, f, null);
- },
- runUnary$2$2: function(f, arg) {
- if ($.Zone__current === C.C__RootZone)
- return f.call$1(arg);
- return P._rootRunUnary(null, null, this, f, arg);
- },
- runUnary$2: function(f, arg) {
- return this.runUnary$2$2(f, arg, null, null);
- },
- runBinary$3$3: function(f, arg1, arg2) {
- if ($.Zone__current === C.C__RootZone)
- return f.call$2(arg1, arg2);
- return P._rootRunBinary(null, null, this, f, arg1, arg2);
- },
- runBinary$3: function(f, arg1, arg2) {
- return this.runBinary$3$3(f, arg1, arg2, null, null, null);
- },
- registerCallback$1$1: function(f) {
- return f;
- },
- registerCallback$1: function(f) {
- return this.registerCallback$1$1(f, null);
- },
- registerUnaryCallback$2$1: function(f) {
- return f;
- },
- registerUnaryCallback$1: function(f) {
- return this.registerUnaryCallback$2$1(f, null, null);
- },
- registerBinaryCallback$3$1: function(f) {
- return f;
- },
- registerBinaryCallback$1: function(f) {
- return this.registerBinaryCallback$3$1(f, null, null, null);
- },
- errorCallback$2: function(error, stackTrace) {
- return;
- },
- scheduleMicrotask$1: function(f) {
- P._rootScheduleMicrotask(null, null, this, f);
- },
- createTimer$2: function(duration, f) {
- return P.Timer__createTimer(duration, f);
- },
- print$1: function(line) {
- H.printString(line);
- }
- };
- P._RootZone_bindCallback_closure.prototype = {
- call$0: function() {
- return this.$this.run$1(0, this.f);
- }
- };
- P._RootZone_bindCallbackGuarded_closure.prototype = {
- call$0: function() {
- return this.$this.runGuarded$1(this.f);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- P._HashMap.prototype = {
- get$length: function(_) {
- return this._collection$_length;
- },
- get$isEmpty: function(_) {
- return this._collection$_length === 0;
- },
- get$isNotEmpty: function(_) {
- return this._collection$_length !== 0;
- },
- get$keys: function() {
- return new P._HashMapKeyIterable(this, [H.getTypeArgumentByIndex(this, 0)]);
- },
- get$values: function() {
- var _this = this,
- t1 = H.getTypeArgumentByIndex(_this, 0);
- return H.MappedIterable_MappedIterable(new P._HashMapKeyIterable(_this, [t1]), new P._HashMap_values_closure(_this), t1, H.getTypeArgumentByIndex(_this, 1));
- },
- containsKey$1: function(key) {
- var strings, nums;
- if (typeof key === "string" && key !== "__proto__") {
- strings = this._collection$_strings;
- return strings == null ? false : strings[key] != null;
- } else if (typeof key === "number" && (key & 1073741823) === key) {
- nums = this._collection$_nums;
- return nums == null ? false : nums[key] != null;
- } else
- return this._containsKey$1(key);
- },
- _containsKey$1: function(key) {
- var rest = this._collection$_rest;
- if (rest == null)
- return false;
- return this._findBucketIndex$2(this._getBucket$2(rest, key), key) >= 0;
- },
- addAll$1: function(_, other) {
- other.forEach$1(0, new P._HashMap_addAll_closure(this));
- },
- $index: function(_, key) {
- var strings, t1, nums;
- if (typeof key === "string" && key !== "__proto__") {
- strings = this._collection$_strings;
- t1 = strings == null ? null : P._HashMap__getTableEntry(strings, key);
- return t1;
- } else if (typeof key === "number" && (key & 1073741823) === key) {
- nums = this._collection$_nums;
- t1 = nums == null ? null : P._HashMap__getTableEntry(nums, key);
- return t1;
- } else
- return this._get$1(key);
- },
- _get$1: function(key) {
- var bucket, index,
- rest = this._collection$_rest;
- if (rest == null)
- return;
- bucket = this._getBucket$2(rest, key);
- index = this._findBucketIndex$2(bucket, key);
- return index < 0 ? null : bucket[index + 1];
- },
- $indexSet: function(_, key, value) {
- var strings, nums, _this = this;
- if (typeof key === "string" && key !== "__proto__") {
- strings = _this._collection$_strings;
- _this._collection$_addHashTableEntry$3(strings == null ? _this._collection$_strings = P._HashMap__newHashTable() : strings, key, value);
- } else if (typeof key === "number" && (key & 1073741823) === key) {
- nums = _this._collection$_nums;
- _this._collection$_addHashTableEntry$3(nums == null ? _this._collection$_nums = P._HashMap__newHashTable() : nums, key, value);
- } else
- _this._set$2(key, value);
- },
- _set$2: function(key, value) {
- var hash, bucket, index, _this = this,
- rest = _this._collection$_rest;
- if (rest == null)
- rest = _this._collection$_rest = P._HashMap__newHashTable();
- hash = _this._computeHashCode$1(key);
- bucket = rest[hash];
- if (bucket == null) {
- P._HashMap__setTableEntry(rest, hash, [key, value]);
- ++_this._collection$_length;
- _this._collection$_keys = null;
- } else {
- index = _this._findBucketIndex$2(bucket, key);
- if (index >= 0)
- bucket[index + 1] = value;
- else {
- bucket.push(key, value);
- ++_this._collection$_length;
- _this._collection$_keys = null;
- }
- }
- },
- putIfAbsent$2: function(key, ifAbsent) {
- var value;
- if (this.containsKey$1(key))
- return this.$index(0, key);
- value = ifAbsent.call$0();
- this.$indexSet(0, key, value);
- return value;
- },
- remove$1: function(_, key) {
- var t1;
- if (typeof key === "string" && key !== "__proto__")
- return this._removeHashTableEntry$2(this._collection$_strings, key);
- else {
- t1 = this._remove$1(key);
- return t1;
- }
- },
- _remove$1: function(key) {
- var bucket, index, _this = this,
- rest = _this._collection$_rest;
- if (rest == null)
- return;
- bucket = _this._getBucket$2(rest, key);
- index = _this._findBucketIndex$2(bucket, key);
- if (index < 0)
- return;
- --_this._collection$_length;
- _this._collection$_keys = null;
- return bucket.splice(index, 2)[1];
- },
- forEach$1: function(_, action) {
- var $length, i, key, _this = this,
- keys = _this._computeKeys$0();
- for ($length = keys.length, i = 0; i < $length; ++i) {
- key = keys[i];
- action.call$2(key, _this.$index(0, key));
- if (keys !== _this._collection$_keys)
- throw H.wrapException(P.ConcurrentModificationError$(_this));
- }
- },
- _computeKeys$0: function() {
- var result, strings, names, entries, index, i, nums, rest, bucket, $length, i0, _this = this,
- t1 = _this._collection$_keys;
- if (t1 != null)
- return t1;
- result = new Array(_this._collection$_length);
- result.fixed$length = Array;
- strings = _this._collection$_strings;
- if (strings != null) {
- names = Object.getOwnPropertyNames(strings);
- entries = names.length;
- for (index = 0, i = 0; i < entries; ++i) {
- result[index] = names[i];
- ++index;
- }
- } else
- index = 0;
- nums = _this._collection$_nums;
- if (nums != null) {
- names = Object.getOwnPropertyNames(nums);
- entries = names.length;
- for (i = 0; i < entries; ++i) {
- result[index] = +names[i];
- ++index;
- }
- }
- rest = _this._collection$_rest;
- if (rest != null) {
- names = Object.getOwnPropertyNames(rest);
- entries = names.length;
- for (i = 0; i < entries; ++i) {
- bucket = rest[names[i]];
- $length = bucket.length;
- for (i0 = 0; i0 < $length; i0 += 2) {
- result[index] = bucket[i0];
- ++index;
- }
- }
- }
- return _this._collection$_keys = result;
- },
- _collection$_addHashTableEntry$3: function(table, key, value) {
- if (table[key] == null) {
- ++this._collection$_length;
- this._collection$_keys = null;
- }
- P._HashMap__setTableEntry(table, key, value);
- },
- _removeHashTableEntry$2: function(table, key) {
- var value;
- if (table != null && table[key] != null) {
- value = P._HashMap__getTableEntry(table, key);
- delete table[key];
- --this._collection$_length;
- this._collection$_keys = null;
- return value;
- } else
- return;
- },
- _computeHashCode$1: function(key) {
- return J.get$hashCode$(key) & 1073741823;
- },
- _getBucket$2: function(table, key) {
- return table[this._computeHashCode$1(key)];
- },
- _findBucketIndex$2: function(bucket, key) {
- var $length, i;
- if (bucket == null)
- return -1;
- $length = bucket.length;
- for (i = 0; i < $length; i += 2)
- if (J.$eq$(bucket[i], key))
- return i;
- return -1;
- }
- };
- P._HashMap_values_closure.prototype = {
- call$1: function(each) {
- return this.$this.$index(0, each);
- },
- $signature: function() {
- var t1 = this.$this;
- return {func: 1, ret: H.getTypeArgumentByIndex(t1, 1), args: [H.getTypeArgumentByIndex(t1, 0)]};
- }
- };
- P._HashMap_addAll_closure.prototype = {
- call$2: function(key, value) {
- this.$this.$indexSet(0, key, value);
- },
- $signature: function() {
- var t1 = this.$this;
- return {func: 1, ret: P.Null, args: [H.getTypeArgumentByIndex(t1, 0), H.getTypeArgumentByIndex(t1, 1)]};
- }
- };
- P._HashMapKeyIterable.prototype = {
- get$length: function(_) {
- return this._collection$_map._collection$_length;
- },
- get$isEmpty: function(_) {
- return this._collection$_map._collection$_length === 0;
- },
- get$iterator: function(_) {
- var t1 = this._collection$_map;
- return new P._HashMapKeyIterator(t1, t1._computeKeys$0());
- },
- contains$1: function(_, element) {
- return this._collection$_map.containsKey$1(element);
- }
- };
- P._HashMapKeyIterator.prototype = {
- get$current: function(_) {
- return this._collection$_current;
- },
- moveNext$0: function() {
- var _this = this,
- keys = _this._collection$_keys,
- offset = _this._offset,
- t1 = _this._collection$_map;
- if (keys !== t1._collection$_keys)
- throw H.wrapException(P.ConcurrentModificationError$(t1));
- else if (offset >= keys.length) {
- _this._collection$_current = null;
- return false;
- } else {
- _this._collection$_current = keys[offset];
- _this._offset = offset + 1;
- return true;
- }
- }
- };
- P._LinkedIdentityHashMap.prototype = {
- internalComputeHashCode$1: function(key) {
- return H.objectHashCode(key) & 1073741823;
- },
- internalFindBucketIndex$2: function(bucket, key) {
- var $length, i, t1;
- if (bucket == null)
- return -1;
- $length = bucket.length;
- for (i = 0; i < $length; ++i) {
- t1 = bucket[i].hashMapCellKey;
- if (t1 == null ? key == null : t1 === key)
- return i;
- }
- return -1;
- }
- };
- P._LinkedCustomHashMap.prototype = {
- $index: function(_, key) {
- if (!this._validKey.call$1(key))
- return;
- return this.super$JsLinkedHashMap$internalGet(key);
- },
- $indexSet: function(_, key, value) {
- this.super$JsLinkedHashMap$internalSet(key, value);
- },
- containsKey$1: function(key) {
- if (!this._validKey.call$1(key))
- return false;
- return this.super$JsLinkedHashMap$internalContainsKey(key);
- },
- remove$1: function(_, key) {
- if (!this._validKey.call$1(key))
- return;
- return this.super$JsLinkedHashMap$internalRemove(key);
- },
- internalComputeHashCode$1: function(key) {
- return this._collection$_hashCode.call$1(key) & 1073741823;
- },
- internalFindBucketIndex$2: function(bucket, key) {
- var $length, t1, i;
- if (bucket == null)
- return -1;
- $length = bucket.length;
- for (t1 = this._equals, i = 0; i < $length; ++i)
- if (t1.call$2(bucket[i].hashMapCellKey, key))
- return i;
- return -1;
- }
- };
- P._LinkedCustomHashMap_closure.prototype = {
- call$1: function(v) {
- return H.checkSubtypeOfRuntimeType(v, this.K);
- },
- $signature: 21
- };
- P._LinkedHashSet.prototype = {
- _newSet$0: function() {
- return new P._LinkedHashSet(this.$ti);
- },
- _newSimilarSet$1$0: function($R) {
- return new P._LinkedHashSet([$R]);
- },
- _newSimilarSet$0: function() {
- return this._newSimilarSet$1$0(null);
- },
- get$iterator: function(_) {
- var t1 = new P._LinkedHashSetIterator(this, this._collection$_modifications);
- t1._collection$_cell = this._collection$_first;
- return t1;
- },
- get$length: function(_) {
- return this._collection$_length;
- },
- get$isEmpty: function(_) {
- return this._collection$_length === 0;
- },
- get$isNotEmpty: function(_) {
- return this._collection$_length !== 0;
- },
- contains$1: function(_, object) {
- var strings, nums;
- if (typeof object === "string" && object !== "__proto__") {
- strings = this._collection$_strings;
- if (strings == null)
- return false;
- return strings[object] != null;
- } else if (typeof object === "number" && (object & 1073741823) === object) {
- nums = this._collection$_nums;
- if (nums == null)
- return false;
- return nums[object] != null;
- } else
- return this._contains$1(object);
- },
- _contains$1: function(object) {
- var rest = this._collection$_rest;
- if (rest == null)
- return false;
- return this._findBucketIndex$2(this._getBucket$2(rest, object), object) >= 0;
- },
- get$first: function(_) {
- var t1 = this._collection$_first;
- if (t1 == null)
- throw H.wrapException(P.StateError$("No elements"));
- return t1._element;
- },
- get$last: function(_) {
- var t1 = this._collection$_last;
- if (t1 == null)
- throw H.wrapException(P.StateError$("No elements"));
- return t1._element;
- },
- add$1: function(_, element) {
- var strings, nums, _this = this;
- if (typeof element === "string" && element !== "__proto__") {
- strings = _this._collection$_strings;
- return _this._collection$_addHashTableEntry$2(strings == null ? _this._collection$_strings = P._LinkedHashSet__newHashTable() : strings, element);
- } else if (typeof element === "number" && (element & 1073741823) === element) {
- nums = _this._collection$_nums;
- return _this._collection$_addHashTableEntry$2(nums == null ? _this._collection$_nums = P._LinkedHashSet__newHashTable() : nums, element);
- } else
- return _this._collection$_add$1(element);
- },
- _collection$_add$1: function(element) {
- var hash, bucket, _this = this,
- rest = _this._collection$_rest;
- if (rest == null)
- rest = _this._collection$_rest = P._LinkedHashSet__newHashTable();
- hash = _this._computeHashCode$1(element);
- bucket = rest[hash];
- if (bucket == null)
- rest[hash] = [_this._collection$_newLinkedCell$1(element)];
- else {
- if (_this._findBucketIndex$2(bucket, element) >= 0)
- return false;
- bucket.push(_this._collection$_newLinkedCell$1(element));
- }
- return true;
- },
- remove$1: function(_, object) {
- var _this = this;
- if (typeof object === "string" && object !== "__proto__")
- return _this._removeHashTableEntry$2(_this._collection$_strings, object);
- else if (typeof object === "number" && (object & 1073741823) === object)
- return _this._removeHashTableEntry$2(_this._collection$_nums, object);
- else
- return _this._remove$1(object);
- },
- _remove$1: function(object) {
- var bucket, index, _this = this,
- rest = _this._collection$_rest;
- if (rest == null)
- return false;
- bucket = _this._getBucket$2(rest, object);
- index = _this._findBucketIndex$2(bucket, object);
- if (index < 0)
- return false;
- _this._unlinkCell$1(bucket.splice(index, 1)[0]);
- return true;
- },
- _collection$_addHashTableEntry$2: function(table, element) {
- if (table[element] != null)
- return false;
- table[element] = this._collection$_newLinkedCell$1(element);
- return true;
- },
- _removeHashTableEntry$2: function(table, element) {
- var cell;
- if (table == null)
- return false;
- cell = table[element];
- if (cell == null)
- return false;
- this._unlinkCell$1(cell);
- delete table[element];
- return true;
- },
- _collection$_modified$0: function() {
- this._collection$_modifications = 1073741823 & this._collection$_modifications + 1;
- },
- _collection$_newLinkedCell$1: function(element) {
- var last, _this = this,
- cell = new P._LinkedHashSetCell(element);
- if (_this._collection$_first == null)
- _this._collection$_first = _this._collection$_last = cell;
- else {
- last = _this._collection$_last;
- cell._collection$_previous = last;
- _this._collection$_last = last._collection$_next = cell;
- }
- ++_this._collection$_length;
- _this._collection$_modified$0();
- return cell;
- },
- _unlinkCell$1: function(cell) {
- var _this = this,
- previous = cell._collection$_previous,
- next = cell._collection$_next;
- if (previous == null)
- _this._collection$_first = next;
- else
- previous._collection$_next = next;
- if (next == null)
- _this._collection$_last = previous;
- else
- next._collection$_previous = previous;
- --_this._collection$_length;
- _this._collection$_modified$0();
- },
- _computeHashCode$1: function(element) {
- return J.get$hashCode$(element) & 1073741823;
- },
- _getBucket$2: function(table, element) {
- return table[this._computeHashCode$1(element)];
- },
- _findBucketIndex$2: function(bucket, element) {
- var $length, i;
- if (bucket == null)
- return -1;
- $length = bucket.length;
- for (i = 0; i < $length; ++i)
- if (J.$eq$(bucket[i]._element, element))
- return i;
- return -1;
- }
- };
- P._LinkedIdentityHashSet.prototype = {
- _newSet$0: function() {
- return new P._LinkedIdentityHashSet(this.$ti);
- },
- _newSimilarSet$1$0: function($R) {
- return new P._LinkedIdentityHashSet([$R]);
- },
- _newSimilarSet$0: function() {
- return this._newSimilarSet$1$0(null);
- },
- _computeHashCode$1: function(key) {
- return H.objectHashCode(key) & 1073741823;
- },
- _findBucketIndex$2: function(bucket, element) {
- var $length, i, t1;
- if (bucket == null)
- return -1;
- $length = bucket.length;
- for (i = 0; i < $length; ++i) {
- t1 = bucket[i]._element;
- if (t1 == null ? element == null : t1 === element)
- return i;
- }
- return -1;
- }
- };
- P._LinkedHashSetCell.prototype = {};
- P._LinkedHashSetIterator.prototype = {
- get$current: function(_) {
- return this._collection$_current;
- },
- moveNext$0: function() {
- var _this = this,
- t1 = _this._set;
- if (_this._collection$_modifications !== t1._collection$_modifications)
- throw H.wrapException(P.ConcurrentModificationError$(t1));
- else {
- t1 = _this._collection$_cell;
- if (t1 == null) {
- _this._collection$_current = null;
- return false;
- } else {
- _this._collection$_current = t1._element;
- _this._collection$_cell = t1._collection$_next;
- return true;
- }
- }
- }
- };
- P.UnmodifiableListView.prototype = {
- cast$1$0: function(_, $R) {
- return new P.UnmodifiableListView(J.cast$1$0$ax(this._collection$_source, $R), [$R]);
- },
- get$length: function(_) {
- return J.get$length$asx(this._collection$_source);
- },
- $index: function(_, index) {
- return J.elementAt$1$ax(this._collection$_source, index);
- }
- };
- P.HashMap_HashMap$from_closure.prototype = {
- call$2: function(k, v) {
- this.result.$indexSet(0, k, v);
- },
- $signature: 12
- };
- P.IterableBase.prototype = {};
- P.LinkedHashMap_LinkedHashMap$from_closure.prototype = {
- call$2: function(k, v) {
- this.result.$indexSet(0, k, v);
- },
- $signature: 12
- };
- P.ListBase.prototype = {$isEfficientLengthIterable: 1, $isIterable: 1, $isList: 1};
- P.ListMixin.prototype = {
- get$iterator: function(receiver) {
- return new H.ListIterator(receiver, this.get$length(receiver));
- },
- elementAt$1: function(receiver, index) {
- return this.$index(receiver, index);
- },
- get$isEmpty: function(receiver) {
- return this.get$length(receiver) === 0;
- },
- get$isNotEmpty: function(receiver) {
- return !this.get$isEmpty(receiver);
- },
- get$first: function(receiver) {
- if (this.get$length(receiver) === 0)
- throw H.wrapException(H.IterableElementError_noElement());
- return this.$index(receiver, 0);
- },
- get$last: function(receiver) {
- if (this.get$length(receiver) === 0)
- throw H.wrapException(H.IterableElementError_noElement());
- return this.$index(receiver, this.get$length(receiver) - 1);
- },
- get$single: function(receiver) {
- if (this.get$length(receiver) === 0)
- throw H.wrapException(H.IterableElementError_noElement());
- if (this.get$length(receiver) > 1)
- throw H.wrapException(H.IterableElementError_tooMany());
- return this.$index(receiver, 0);
- },
- contains$1: function(receiver, element) {
- var i,
- $length = this.get$length(receiver);
- for (i = 0; i < $length; ++i) {
- if (J.$eq$(this.$index(receiver, i), element))
- return true;
- if ($length !== this.get$length(receiver))
- throw H.wrapException(P.ConcurrentModificationError$(receiver));
- }
- return false;
- },
- every$1: function(receiver, test) {
- var i,
- $length = this.get$length(receiver);
- for (i = 0; i < $length; ++i) {
- if (!test.call$1(this.$index(receiver, i)))
- return false;
- if ($length !== this.get$length(receiver))
- throw H.wrapException(P.ConcurrentModificationError$(receiver));
- }
- return true;
- },
- any$1: function(receiver, test) {
- var i,
- $length = this.get$length(receiver);
- for (i = 0; i < $length; ++i) {
- if (test.call$1(this.$index(receiver, i)))
- return true;
- if ($length !== this.get$length(receiver))
- throw H.wrapException(P.ConcurrentModificationError$(receiver));
- }
- return false;
- },
- join$1: function(receiver, separator) {
- var t1;
- if (this.get$length(receiver) === 0)
- return "";
- t1 = P.StringBuffer__writeAll("", receiver, separator);
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- join$0: function($receiver) {
- return this.join$1($receiver, "");
- },
- where$1: function(receiver, test) {
- return new H.WhereIterable(receiver, test, [H.getRuntimeTypeArgumentIntercepted(this, receiver, "ListMixin", 0)]);
- },
- map$1$1: function(receiver, f, $T) {
- return new H.MappedListIterable(receiver, f, [H.getRuntimeTypeArgumentIntercepted(this, receiver, "ListMixin", 0), $T]);
- },
- expand$1$1: function(receiver, f, $T) {
- return new H.ExpandIterable(receiver, f, [H.getRuntimeTypeArgumentIntercepted(this, receiver, "ListMixin", 0), $T]);
- },
- skip$1: function(receiver, count) {
- return H.SubListIterable$(receiver, count, null, H.getRuntimeTypeArgumentIntercepted(this, receiver, "ListMixin", 0));
- },
- take$1: function(receiver, count) {
- return H.SubListIterable$(receiver, 0, count, H.getRuntimeTypeArgumentIntercepted(this, receiver, "ListMixin", 0));
- },
- toList$1$growable: function(receiver, growable) {
- var result, t2, i, _this = this,
- t1 = H.getRuntimeTypeArgumentIntercepted(_this, receiver, "ListMixin", 0);
- if (growable) {
- result = H.setRuntimeTypeInfo([], [t1]);
- C.JSArray_methods.set$length(result, _this.get$length(receiver));
- } else {
- t2 = new Array(_this.get$length(receiver));
- t2.fixed$length = Array;
- result = H.setRuntimeTypeInfo(t2, [t1]);
- }
- for (i = 0; i < _this.get$length(receiver); ++i)
- result[i] = _this.$index(receiver, i);
- return result;
- },
- toList$0: function($receiver) {
- return this.toList$1$growable($receiver, true);
- },
- toSet$0: function(receiver) {
- var i,
- result = P.LinkedHashSet_LinkedHashSet(H.getRuntimeTypeArgumentIntercepted(this, receiver, "ListMixin", 0));
- for (i = 0; i < this.get$length(receiver); ++i)
- result.add$1(0, this.$index(receiver, i));
- return result;
- },
- add$1: function(receiver, element) {
- var t1 = this.get$length(receiver);
- this.set$length(receiver, t1 + 1);
- this.$indexSet(receiver, t1, element);
- },
- addAll$1: function(receiver, iterable) {
- var t1, element, i0,
- i = this.get$length(receiver);
- for (t1 = J.get$iterator$ax(iterable); t1.moveNext$0(); i = i0) {
- element = t1.get$current(t1);
- i0 = i + 1;
- this.set$length(receiver, i0);
- this.$indexSet(receiver, i, element);
- }
- },
- cast$1$0: function(receiver, $R) {
- return new H.CastList(receiver, [H.getRuntimeTypeArgumentIntercepted(this, receiver, "ListMixin", 0), $R]);
- },
- sort$1: function(receiver, compare) {
- H.Sort_sort(receiver, compare == null ? P.collection_ListMixin__compareAny$closure() : compare);
- },
- sublist$2: function(receiver, start, end) {
- var $length, result, i,
- listLength = this.get$length(receiver);
- P.RangeError_checkValidRange(start, end, listLength);
- $length = end - start;
- result = H.setRuntimeTypeInfo([], [H.getRuntimeTypeArgumentIntercepted(this, receiver, "ListMixin", 0)]);
- C.JSArray_methods.set$length(result, $length);
- for (i = 0; i < $length; ++i)
- result[i] = this.$index(receiver, start + i);
- return result;
- },
- getRange$2: function(receiver, start, end) {
- P.RangeError_checkValidRange(start, end, this.get$length(receiver));
- return H.SubListIterable$(receiver, start, end, H.getRuntimeTypeArgumentIntercepted(this, receiver, "ListMixin", 0));
- },
- fillRange$3: function(receiver, start, end, fill) {
- var i;
- P.RangeError_checkValidRange(start, end, this.get$length(receiver));
- for (i = start; i < end; ++i)
- this.$indexSet(receiver, i, fill);
- },
- setRange$4: function(receiver, start, end, iterable, skipCount) {
- var $length, otherStart, otherList, t1, i, _this = this;
- P.RangeError_checkValidRange(start, end, _this.get$length(receiver));
- $length = end - start;
- if ($length === 0)
- return;
- P.RangeError_checkNotNegative(skipCount, "skipCount");
- if (H.checkSubtype(iterable, "$isList", [H.getRuntimeTypeArgumentIntercepted(_this, receiver, "ListMixin", 0)], "$asList")) {
- otherStart = skipCount;
- otherList = iterable;
- } else {
- otherList = J.skip$1$ax(iterable, skipCount).toList$1$growable(0, false);
- otherStart = 0;
- }
- t1 = J.getInterceptor$asx(otherList);
- if (otherStart + $length > t1.get$length(otherList))
- throw H.wrapException(H.IterableElementError_tooFew());
- if (otherStart < start)
- for (i = $length - 1; i >= 0; --i)
- _this.$indexSet(receiver, start + i, t1.$index(otherList, otherStart + i));
- else
- for (i = 0; i < $length; ++i)
- _this.$indexSet(receiver, start + i, t1.$index(otherList, otherStart + i));
- },
- get$reversed: function(receiver) {
- return new H.ReversedListIterable(receiver, [H.getRuntimeTypeArgumentIntercepted(this, receiver, "ListMixin", 0)]);
- },
- toString$0: function(receiver) {
- return P.IterableBase_iterableToFullString(receiver, "[", "]");
- }
- };
- P.MapBase.prototype = {};
- P.MapBase_mapToString_closure.prototype = {
- call$2: function(k, v) {
- var t2,
- t1 = this._box_0;
- if (!t1.first)
- this.result._contents += ", ";
- t1.first = false;
- t1 = this.result;
- t2 = t1._contents += H.S(k);
- t1._contents = t2 + ": ";
- t1._contents += H.S(v);
- },
- $signature: 12
- };
- P.MapMixin.prototype = {
- forEach$1: function(_, action) {
- var t1, key;
- for (t1 = J.get$iterator$ax(this.get$keys()); t1.moveNext$0();) {
- key = t1.get$current(t1);
- action.call$2(key, this.$index(0, key));
- }
- },
- addAll$1: function(_, other) {
- var t1, key;
- for (t1 = J.get$iterator$ax(other.get$keys()); t1.moveNext$0();) {
- key = t1.get$current(t1);
- this.$indexSet(0, key, other.$index(0, key));
- }
- },
- putIfAbsent$2: function(key, ifAbsent) {
- var t1;
- if (this.containsKey$1(key))
- return this.$index(0, key);
- t1 = ifAbsent.call$0();
- this.$indexSet(0, key, t1);
- return t1;
- },
- get$entries: function() {
- var _this = this;
- return J.map$1$1$ax(_this.get$keys(), new P.MapMixin_entries_closure(_this), [P.MapEntry, H.getRuntimeTypeArgument(_this, "MapMixin", 0), H.getRuntimeTypeArgument(_this, "MapMixin", 1)]);
- },
- containsKey$1: function(key) {
- return J.contains$1$asx(this.get$keys(), key);
- },
- get$length: function(_) {
- return J.get$length$asx(this.get$keys());
- },
- get$isEmpty: function(_) {
- return J.get$isEmpty$asx(this.get$keys());
- },
- get$isNotEmpty: function(_) {
- return J.get$isNotEmpty$asx(this.get$keys());
- },
- get$values: function() {
- return new P._MapBaseValueIterable(this, [H.getRuntimeTypeArgument(this, "MapMixin", 0), H.getRuntimeTypeArgument(this, "MapMixin", 1)]);
- },
- toString$0: function(_) {
- return P.MapBase_mapToString(this);
- },
- $isMap: 1
- };
- P.MapMixin_entries_closure.prototype = {
- call$1: function(key) {
- var t1 = this.$this;
- return new P.MapEntry(key, t1.$index(0, key), [H.getRuntimeTypeArgument(t1, "MapMixin", 0), H.getRuntimeTypeArgument(t1, "MapMixin", 1)]);
- },
- $signature: function() {
- var t1 = this.$this,
- t2 = H.getRuntimeTypeArgument(t1, "MapMixin", 0);
- return {func: 1, ret: [P.MapEntry, t2, H.getRuntimeTypeArgument(t1, "MapMixin", 1)], args: [t2]};
- }
- };
- P.UnmodifiableMapBase.prototype = {};
- P._MapBaseValueIterable.prototype = {
- get$length: function(_) {
- var t1 = this._collection$_map;
- return t1.get$length(t1);
- },
- get$isEmpty: function(_) {
- var t1 = this._collection$_map;
- return t1.get$isEmpty(t1);
- },
- get$isNotEmpty: function(_) {
- var t1 = this._collection$_map;
- return t1.get$isNotEmpty(t1);
- },
- get$first: function(_) {
- var t1 = this._collection$_map;
- return t1.$index(0, J.get$first$ax(t1.get$keys()));
- },
- get$single: function(_) {
- var t1 = this._collection$_map;
- return t1.$index(0, J.get$single$ax(t1.get$keys()));
- },
- get$last: function(_) {
- var t1 = this._collection$_map;
- return t1.$index(0, J.get$last$ax(t1.get$keys()));
- },
- get$iterator: function(_) {
- var t1 = this._collection$_map;
- return new P._MapBaseValueIterator(J.get$iterator$ax(t1.get$keys()), t1);
- },
- $asEfficientLengthIterable: function($K, $V) {
- return [$V];
- },
- $asIterable: function($K, $V) {
- return [$V];
- }
- };
- P._MapBaseValueIterator.prototype = {
- moveNext$0: function() {
- var _this = this,
- t1 = _this._collection$_keys;
- if (t1.moveNext$0()) {
- _this._collection$_current = _this._collection$_map.$index(0, t1.get$current(t1));
- return true;
- }
- _this._collection$_current = null;
- return false;
- },
- get$current: function(_) {
- return this._collection$_current;
- }
- };
- P._UnmodifiableMapMixin.prototype = {
- $indexSet: function(_, key, value) {
- throw H.wrapException(P.UnsupportedError$("Cannot modify unmodifiable map"));
- },
- addAll$1: function(_, other) {
- throw H.wrapException(P.UnsupportedError$("Cannot modify unmodifiable map"));
- },
- remove$1: function(_, key) {
- throw H.wrapException(P.UnsupportedError$("Cannot modify unmodifiable map"));
- },
- putIfAbsent$2: function(key, ifAbsent) {
- throw H.wrapException(P.UnsupportedError$("Cannot modify unmodifiable map"));
- }
- };
- P.MapView.prototype = {
- $index: function(_, key) {
- return this._collection$_map.$index(0, key);
- },
- $indexSet: function(_, key, value) {
- this._collection$_map.$indexSet(0, key, value);
- },
- addAll$1: function(_, other) {
- this._collection$_map.addAll$1(0, other);
- },
- putIfAbsent$2: function(key, ifAbsent) {
- return this._collection$_map.putIfAbsent$2(key, ifAbsent);
- },
- containsKey$1: function(key) {
- return this._collection$_map.containsKey$1(key);
- },
- forEach$1: function(_, action) {
- this._collection$_map.forEach$1(0, action);
- },
- get$isEmpty: function(_) {
- var t1 = this._collection$_map;
- return t1.get$isEmpty(t1);
- },
- get$isNotEmpty: function(_) {
- var t1 = this._collection$_map;
- return t1.get$isNotEmpty(t1);
- },
- get$length: function(_) {
- var t1 = this._collection$_map;
- return t1.get$length(t1);
- },
- get$keys: function() {
- return this._collection$_map.get$keys();
- },
- remove$1: function(_, key) {
- return this._collection$_map.remove$1(0, key);
- },
- toString$0: function(_) {
- return J.toString$0$(this._collection$_map);
- },
- get$values: function() {
- return this._collection$_map.get$values();
- },
- get$entries: function() {
- return this._collection$_map.get$entries();
- },
- $isMap: 1
- };
- P.UnmodifiableMapView.prototype = {};
- P.Queue.prototype = {$isEfficientLengthIterable: 1, $isIterable: 1};
- P.ListQueue.prototype = {
- cast$1$0: function(_, $R) {
- return new H.CastQueue(this, [H.getTypeArgumentByIndex(this, 0), $R]);
- },
- get$iterator: function(_) {
- var _this = this;
- return new P._ListQueueIterator(_this, _this._collection$_tail, _this._modificationCount, _this._collection$_head);
- },
- get$isEmpty: function(_) {
- return this._collection$_head === this._collection$_tail;
- },
- get$length: function(_) {
- return (this._collection$_tail - this._collection$_head & this._collection$_table.length - 1) >>> 0;
- },
- get$first: function(_) {
- var t1 = this._collection$_head;
- if (t1 === this._collection$_tail)
- throw H.wrapException(H.IterableElementError_noElement());
- return this._collection$_table[t1];
- },
- get$last: function(_) {
- var t1 = this._collection$_head,
- t2 = this._collection$_tail;
- if (t1 === t2)
- throw H.wrapException(H.IterableElementError_noElement());
- t1 = this._collection$_table;
- return t1[(t2 - 1 & t1.length - 1) >>> 0];
- },
- get$single: function(_) {
- var _this = this;
- if (_this._collection$_head === _this._collection$_tail)
- throw H.wrapException(H.IterableElementError_noElement());
- if (_this.get$length(_this) > 1)
- throw H.wrapException(H.IterableElementError_tooMany());
- return _this._collection$_table[_this._collection$_head];
- },
- elementAt$1: function(_, index) {
- var t1;
- P.RangeError_checkValidIndex(index, this, null);
- t1 = this._collection$_table;
- return t1[(this._collection$_head + index & t1.length - 1) >>> 0];
- },
- toList$1$growable: function(_, growable) {
- var list, t2, _this = this,
- t1 = _this.$ti;
- if (growable) {
- list = H.setRuntimeTypeInfo([], t1);
- C.JSArray_methods.set$length(list, _this.get$length(_this));
- } else {
- t2 = new Array(_this.get$length(_this));
- t2.fixed$length = Array;
- list = H.setRuntimeTypeInfo(t2, t1);
- }
- _this._collection$_writeToList$1(list);
- return list;
- },
- toList$0: function($receiver) {
- return this.toList$1$growable($receiver, true);
- },
- add$1: function(_, value) {
- this._collection$_add$1(value);
- },
- addAll$1: function(_, elements) {
- var addCount, $length, t2, t3, t4, newTable, endSpace, preSpace, _this = this,
- t1 = _this.$ti;
- if (H.checkSubtype(elements, "$isList", t1, "$asList")) {
- addCount = J.get$length$asx(elements);
- $length = _this.get$length(_this);
- t2 = $length + addCount;
- t3 = _this._collection$_table;
- t4 = t3.length;
- if (t2 >= t4) {
- t3 = new Array(P.ListQueue__nextPowerOf2(t2 + C.JSInt_methods._shrOtherPositive$1(t2, 1)));
- t3.fixed$length = Array;
- newTable = H.setRuntimeTypeInfo(t3, t1);
- _this._collection$_tail = _this._collection$_writeToList$1(newTable);
- _this._collection$_table = newTable;
- _this._collection$_head = 0;
- C.JSArray_methods.setRange$4(newTable, $length, t2, elements, 0);
- _this._collection$_tail += addCount;
- } else {
- t1 = _this._collection$_tail;
- endSpace = t4 - t1;
- if (addCount < endSpace) {
- C.JSArray_methods.setRange$4(t3, t1, t1 + addCount, elements, 0);
- _this._collection$_tail += addCount;
- } else {
- preSpace = addCount - endSpace;
- C.JSArray_methods.setRange$4(t3, t1, t1 + endSpace, elements, 0);
- C.JSArray_methods.setRange$4(_this._collection$_table, 0, preSpace, elements, endSpace);
- _this._collection$_tail = preSpace;
- }
- }
- ++_this._modificationCount;
- } else
- for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();)
- _this._collection$_add$1(t1.get$current(t1));
- },
- toString$0: function(_) {
- return P.IterableBase_iterableToFullString(this, "{", "}");
- },
- addFirst$1: function(value) {
- var _this = this,
- t1 = _this._collection$_head,
- t2 = _this._collection$_table;
- t1 = _this._collection$_head = (t1 - 1 & t2.length - 1) >>> 0;
- t2[t1] = value;
- if (t1 === _this._collection$_tail)
- _this._collection$_grow$0();
- ++_this._modificationCount;
- },
- removeFirst$0: function() {
- var t2, result, _this = this,
- t1 = _this._collection$_head;
- if (t1 === _this._collection$_tail)
- throw H.wrapException(H.IterableElementError_noElement());
- ++_this._modificationCount;
- t2 = _this._collection$_table;
- result = t2[t1];
- t2[t1] = null;
- _this._collection$_head = (t1 + 1 & t2.length - 1) >>> 0;
- return result;
- },
- removeLast$0: function(_) {
- var result, _this = this,
- t1 = _this._collection$_head,
- t2 = _this._collection$_tail;
- if (t1 === t2)
- throw H.wrapException(H.IterableElementError_noElement());
- ++_this._modificationCount;
- t1 = _this._collection$_table;
- t2 = _this._collection$_tail = (t2 - 1 & t1.length - 1) >>> 0;
- result = t1[t2];
- t1[t2] = null;
- return result;
- },
- _collection$_add$1: function(element) {
- var _this = this,
- t1 = _this._collection$_table,
- t2 = _this._collection$_tail;
- t1[t2] = element;
- t1 = (t2 + 1 & t1.length - 1) >>> 0;
- _this._collection$_tail = t1;
- if (_this._collection$_head === t1)
- _this._collection$_grow$0();
- ++_this._modificationCount;
- },
- _collection$_grow$0: function() {
- var newTable, t2, split, _this = this,
- t1 = new Array(_this._collection$_table.length * 2);
- t1.fixed$length = Array;
- newTable = H.setRuntimeTypeInfo(t1, _this.$ti);
- t1 = _this._collection$_table;
- t2 = _this._collection$_head;
- split = t1.length - t2;
- C.JSArray_methods.setRange$4(newTable, 0, split, t1, t2);
- C.JSArray_methods.setRange$4(newTable, split, split + _this._collection$_head, _this._collection$_table, 0);
- _this._collection$_head = 0;
- _this._collection$_tail = _this._collection$_table.length;
- _this._collection$_table = newTable;
- },
- _collection$_writeToList$1: function(target) {
- var $length, firstPartSize, _this = this,
- t1 = _this._collection$_head,
- t2 = _this._collection$_tail,
- t3 = _this._collection$_table;
- if (t1 <= t2) {
- $length = t2 - t1;
- C.JSArray_methods.setRange$4(target, 0, $length, t3, t1);
- return $length;
- } else {
- firstPartSize = t3.length - t1;
- C.JSArray_methods.setRange$4(target, 0, firstPartSize, t3, t1);
- C.JSArray_methods.setRange$4(target, firstPartSize, firstPartSize + _this._collection$_tail, _this._collection$_table, 0);
- return _this._collection$_tail + firstPartSize;
- }
- },
- $isQueue: 1
- };
- P._ListQueueIterator.prototype = {
- get$current: function(_) {
- return this._collection$_current;
- },
- moveNext$0: function() {
- var t2, _this = this,
- t1 = _this._queue;
- if (_this._modificationCount !== t1._modificationCount)
- H.throwExpression(P.ConcurrentModificationError$(t1));
- t2 = _this._position;
- if (t2 === _this._end) {
- _this._collection$_current = null;
- return false;
- }
- t1 = t1._collection$_table;
- _this._collection$_current = t1[t2];
- _this._position = (t2 + 1 & t1.length - 1) >>> 0;
- return true;
- }
- };
- P._SetBase.prototype = {
- cast$1$0: function(_, $R) {
- return P.Set_castFrom(this, this.get$_newSimilarSet(), H.getTypeArgumentByIndex(this, 0), $R);
- },
- difference$1: function(other) {
- var t1, element,
- result = this._newSet$0();
- for (t1 = this.get$iterator(this); t1.moveNext$0();) {
- element = t1.get$current(t1);
- if (!other.contains$1(0, element))
- result.add$1(0, element);
- }
- return result;
- },
- intersection$1: function(other) {
- var t1, t2, element,
- result = this._newSet$0();
- for (t1 = this.get$iterator(this), t2 = other._baseMap; t1.moveNext$0();) {
- element = t1.get$current(t1);
- if (t2.containsKey$1(element))
- result.add$1(0, element);
- }
- return result;
- },
- toSet$0: function(_) {
- var t1 = this._newSet$0();
- t1.addAll$1(0, this);
- return t1;
- },
- get$isEmpty: function(_) {
- return this.get$length(this) === 0;
- },
- get$isNotEmpty: function(_) {
- return this.get$length(this) !== 0;
- },
- followedBy$1: function(_, other) {
- return H.FollowedByIterable_FollowedByIterable$firstEfficient(this, other, H.getTypeArgumentByIndex(this, 0));
- },
- addAll$1: function(_, elements) {
- var t1;
- for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();)
- this.add$1(0, t1.get$current(t1));
- },
- removeAll$1: function(elements) {
- var t1;
- for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();)
- this.remove$1(0, t1.get$current(t1));
- },
- toList$1$growable: function(_, growable) {
- var result, t2, i, i0, _this = this,
- t1 = _this.$ti;
- if (growable) {
- result = H.setRuntimeTypeInfo([], t1);
- C.JSArray_methods.set$length(result, _this.get$length(_this));
- } else {
- t2 = new Array(_this.get$length(_this));
- t2.fixed$length = Array;
- result = H.setRuntimeTypeInfo(t2, t1);
- }
- for (t1 = _this.get$iterator(_this), i = 0; t1.moveNext$0(); i = i0) {
- i0 = i + 1;
- result[i] = t1.get$current(t1);
- }
- return result;
- },
- toList$0: function($receiver) {
- return this.toList$1$growable($receiver, true);
- },
- map$1$1: function(_, f, $T) {
- return new H.EfficientLengthMappedIterable(this, f, [H.getTypeArgumentByIndex(this, 0), $T]);
- },
- get$single: function(_) {
- var it, _this = this;
- if (_this.get$length(_this) > 1)
- throw H.wrapException(H.IterableElementError_tooMany());
- it = _this.get$iterator(_this);
- if (!it.moveNext$0())
- throw H.wrapException(H.IterableElementError_noElement());
- return it.get$current(it);
- },
- toString$0: function(_) {
- return P.IterableBase_iterableToFullString(this, "{", "}");
- },
- where$1: function(_, f) {
- return new H.WhereIterable(this, f, this.$ti);
- },
- join$1: function(_, separator) {
- var t1,
- iterator = this.get$iterator(this);
- if (!iterator.moveNext$0())
- return "";
- if (separator === "") {
- t1 = "";
- do
- t1 += H.S(iterator.get$current(iterator));
- while (iterator.moveNext$0());
- } else {
- t1 = H.S(iterator.get$current(iterator));
- for (; iterator.moveNext$0();)
- t1 = t1 + separator + H.S(iterator.get$current(iterator));
- }
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- join$0: function($receiver) {
- return this.join$1($receiver, "");
- },
- any$1: function(_, test) {
- var t1;
- for (t1 = this.get$iterator(this); t1.moveNext$0();)
- if (test.call$1(t1.get$current(t1)))
- return true;
- return false;
- },
- take$1: function(_, n) {
- return H.TakeIterable_TakeIterable(this, n, H.getTypeArgumentByIndex(this, 0));
- },
- skip$1: function(_, n) {
- return H.SkipIterable_SkipIterable(this, n, H.getTypeArgumentByIndex(this, 0));
- },
- get$first: function(_) {
- var it = this.get$iterator(this);
- if (!it.moveNext$0())
- throw H.wrapException(H.IterableElementError_noElement());
- return it.get$current(it);
- },
- get$last: function(_) {
- var result,
- it = this.get$iterator(this);
- if (!it.moveNext$0())
- throw H.wrapException(H.IterableElementError_noElement());
- do
- result = it.get$current(it);
- while (it.moveNext$0());
- return result;
- },
- elementAt$1: function(_, index) {
- var t1, elementIndex, element, _s5_ = "index";
- if (index == null)
- H.throwExpression(P.ArgumentError$notNull(_s5_));
- P.RangeError_checkNotNegative(index, _s5_);
- for (t1 = this.get$iterator(this), elementIndex = 0; t1.moveNext$0();) {
- element = t1.get$current(t1);
- if (index === elementIndex)
- return element;
- ++elementIndex;
- }
- throw H.wrapException(P.IndexError$(index, this, _s5_, null, elementIndex));
- },
- $isEfficientLengthIterable: 1,
- $isIterable: 1,
- $isSet: 1
- };
- P._ListBase_Object_ListMixin.prototype = {};
- P._UnmodifiableMapView_MapView__UnmodifiableMapMixin.prototype = {};
- P.AsciiCodec.prototype = {
- encode$1: function(source) {
- return C.AsciiEncoder_127.convert$1(source);
- },
- get$encoder: function() {
- return C.AsciiEncoder_127;
- }
- };
- P._UnicodeSubsetEncoder.prototype = {
- convert$1: function(string) {
- var t1, t2, i, codeUnit,
- $length = P.RangeError_checkValidRange(0, null, string.length) - 0,
- result = new Uint8Array($length);
- for (t1 = ~this._subsetMask, t2 = J.getInterceptor$s(string), i = 0; i < $length; ++i) {
- codeUnit = t2._codeUnitAt$1(string, i);
- if ((codeUnit & t1) !== 0)
- throw H.wrapException(P.ArgumentError$value(string, "string", "Contains invalid characters."));
- result[i] = codeUnit;
- }
- return result;
- },
- $asConverter: function() {
- return [P.String, [P.List, P.int]];
- }
- };
- P.AsciiEncoder.prototype = {};
- P.Base64Codec.prototype = {
- get$encoder: function() {
- return C.C_Base64Encoder;
- },
- normalize$3: function(source, start, end) {
- var inverseAlphabet, i, sliceStart, buffer, firstPadding, firstPaddingSourceIndex, paddingCount, i0, char, i1, digit1, digit2, char0, value, t1, t2, endLength, $length,
- _s31_ = "Invalid base64 encoding length ";
- end = P.RangeError_checkValidRange(start, end, source.length);
- inverseAlphabet = $.$get$_Base64Decoder__inverseAlphabet();
- for (i = start, sliceStart = i, buffer = null, firstPadding = -1, firstPaddingSourceIndex = -1, paddingCount = 0; i < end; i = i0) {
- i0 = i + 1;
- char = C.JSString_methods._codeUnitAt$1(source, i);
- if (char === 37) {
- i1 = i0 + 2;
- if (i1 <= end) {
- digit1 = H.hexDigitValue(C.JSString_methods._codeUnitAt$1(source, i0));
- digit2 = H.hexDigitValue(C.JSString_methods._codeUnitAt$1(source, i0 + 1));
- char0 = digit1 * 16 + digit2 - (digit2 & 256);
- if (char0 === 37)
- char0 = -1;
- i0 = i1;
- } else
- char0 = -1;
- } else
- char0 = char;
- if (0 <= char0 && char0 <= 127) {
- value = inverseAlphabet[char0];
- if (value >= 0) {
- char0 = C.JSString_methods.codeUnitAt$1("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", value);
- if (char0 === char)
- continue;
- char = char0;
- } else {
- if (value === -1) {
- if (firstPadding < 0) {
- t1 = buffer == null ? null : buffer._contents.length;
- if (t1 == null)
- t1 = 0;
- firstPadding = t1 + (i - sliceStart);
- firstPaddingSourceIndex = i;
- }
- ++paddingCount;
- if (char === 61)
- continue;
- }
- char = char0;
- }
- if (value !== -2) {
- if (buffer == null)
- buffer = new P.StringBuffer("");
- buffer._contents += C.JSString_methods.substring$2(source, sliceStart, i);
- buffer._contents += H.Primitives_stringFromCharCode(char);
- sliceStart = i0;
- continue;
- }
- }
- throw H.wrapException(P.FormatException$("Invalid base64 data", source, i));
- }
- if (buffer != null) {
- t1 = buffer._contents += C.JSString_methods.substring$2(source, sliceStart, end);
- t2 = t1.length;
- if (firstPadding >= 0)
- P.Base64Codec__checkPadding(source, firstPaddingSourceIndex, end, firstPadding, paddingCount, t2);
- else {
- endLength = C.JSInt_methods.$mod(t2 - 1, 4) + 1;
- if (endLength === 1)
- throw H.wrapException(P.FormatException$(_s31_, source, end));
- for (; endLength < 4;) {
- t1 += "=";
- buffer._contents = t1;
- ++endLength;
- }
- }
- t1 = buffer._contents;
- return C.JSString_methods.replaceRange$3(source, start, end, t1.charCodeAt(0) == 0 ? t1 : t1);
- }
- $length = end - start;
- if (firstPadding >= 0)
- P.Base64Codec__checkPadding(source, firstPaddingSourceIndex, end, firstPadding, paddingCount, $length);
- else {
- endLength = C.JSInt_methods.$mod($length, 4);
- if (endLength === 1)
- throw H.wrapException(P.FormatException$(_s31_, source, end));
- if (endLength > 1)
- source = C.JSString_methods.replaceRange$3(source, end, end, endLength === 2 ? "==" : "=");
- }
- return source;
- },
- $asCodec: function() {
- return [[P.List, P.int], P.String];
- }
- };
- P.Base64Encoder.prototype = {
- convert$1: function(input) {
- var t1 = J.getInterceptor$asx(input);
- if (t1.get$isEmpty(input))
- return "";
- return P.String_String$fromCharCodes(new P._Base64Encoder("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/").encode$4(input, 0, t1.get$length(input), true), 0, null);
- },
- startChunkedConversion$1: function(sink) {
- var t1,
- _s64_ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- if (!!sink.$isStringConversionSink) {
- t1 = sink.asUtf8Sink$1(false);
- return new P._Utf8Base64EncoderSink(t1, new P._Base64Encoder(_s64_));
- }
- return new P._AsciiBase64EncoderSink(sink, new P._BufferCachingBase64Encoder(_s64_));
- },
- $asConverter: function() {
- return [[P.List, P.int], P.String];
- }
- };
- P._Base64Encoder.prototype = {
- createBuffer$1: function(bufferLength) {
- return new Uint8Array(bufferLength);
- },
- encode$4: function(bytes, start, end, isLast) {
- var output, _this = this,
- byteCount = (_this._state & 3) + (end - start),
- fullChunks = C.JSInt_methods._tdivFast$1(byteCount, 3),
- bufferLength = fullChunks * 4;
- if (isLast && byteCount - fullChunks * 3 > 0)
- bufferLength += 4;
- output = _this.createBuffer$1(bufferLength);
- _this._state = P._Base64Encoder_encodeChunk(_this._alphabet, bytes, start, end, isLast, output, 0, _this._state);
- if (bufferLength > 0)
- return output;
- return;
- }
- };
- P._BufferCachingBase64Encoder.prototype = {
- createBuffer$1: function(bufferLength) {
- var t1 = this.bufferCache;
- if (t1 == null || t1.length < bufferLength)
- t1 = this.bufferCache = new Uint8Array(bufferLength);
- t1 = t1.buffer;
- t1.toString;
- return H.NativeUint8List_NativeUint8List$view(t1, 0, bufferLength);
- }
- };
- P._Base64EncoderSink.prototype = {
- add$1: function(_, source) {
- this._add$4(source, 0, J.get$length$asx(source), false);
- },
- close$0: function(_) {
- this._add$4(null, 0, 0, true);
- },
- addSlice$4: function(source, start, end, isLast) {
- P.RangeError_checkValidRange(start, end, source.length);
- this._add$4(source, start, end, isLast);
- }
- };
- P._AsciiBase64EncoderSink.prototype = {
- _add$4: function(source, start, end, isLast) {
- var buffer = this._encoder.encode$4(source, start, end, isLast);
- if (buffer != null)
- this._sink.add$1(0, P.String_String$fromCharCodes(buffer, 0, null));
- if (isLast)
- this._sink.close$0(0);
- }
- };
- P._Utf8Base64EncoderSink.prototype = {
- _add$4: function(source, start, end, isLast) {
- var buffer = this._encoder.encode$4(source, start, end, isLast);
- if (buffer != null)
- this._sink.addSlice$4(buffer, 0, buffer.length, isLast);
- }
- };
- P.ByteConversionSink.prototype = {};
- P.ByteConversionSinkBase.prototype = {};
- P.ChunkedConversionSink.prototype = {};
- P.Codec.prototype = {
- encode$1: function(input) {
- return this.get$encoder().convert$1(input);
- }
- };
- P.Converter.prototype = {};
- P.Encoding.prototype = {
- $asCodec: function() {
- return [P.String, [P.List, P.int]];
- }
- };
- P.JsonUnsupportedObjectError.prototype = {
- toString$0: function(_) {
- var safeString = P.Error_safeToString(this.unsupportedObject);
- return (this.cause != null ? "Converting object to an encodable object failed:" : "Converting object did not return an encodable object:") + " " + safeString;
- }
- };
- P.JsonCyclicError.prototype = {
- toString$0: function(_) {
- return "Cyclic error in JSON stringify";
- }
- };
- P.JsonCodec.prototype = {
- encode$2$toEncodable: function(value, toEncodable) {
- var t1 = P._JsonStringStringifier_stringify(value, this.get$encoder()._toEncodable, null);
- return t1;
- },
- get$encoder: function() {
- return C.JsonEncoder_null;
- },
- $asCodec: function() {
- return [P.Object, P.String];
- }
- };
- P.JsonEncoder.prototype = {
- convert$1: function(object) {
- var t1,
- output = new P.StringBuffer("");
- P._JsonStringStringifier_printOn(object, output, this._toEncodable, null);
- t1 = output._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- $asConverter: function() {
- return [P.Object, P.String];
- }
- };
- P._JsonStringifier.prototype = {
- writeStringContent$1: function(s) {
- var t1, offset, i, charCode, t2, _this = this,
- $length = s.length;
- for (t1 = J.getInterceptor$s(s), offset = 0, i = 0; i < $length; ++i) {
- charCode = t1._codeUnitAt$1(s, i);
- if (charCode > 92)
- continue;
- if (charCode < 32) {
- if (i > offset)
- _this.writeStringSlice$3(s, offset, i);
- offset = i + 1;
- _this.writeCharCode$1(92);
- switch (charCode) {
- case 8:
- _this.writeCharCode$1(98);
- break;
- case 9:
- _this.writeCharCode$1(116);
- break;
- case 10:
- _this.writeCharCode$1(110);
- break;
- case 12:
- _this.writeCharCode$1(102);
- break;
- case 13:
- _this.writeCharCode$1(114);
- break;
- default:
- _this.writeCharCode$1(117);
- _this.writeCharCode$1(48);
- _this.writeCharCode$1(48);
- t2 = charCode >>> 4 & 15;
- _this.writeCharCode$1(t2 < 10 ? 48 + t2 : 87 + t2);
- t2 = charCode & 15;
- _this.writeCharCode$1(t2 < 10 ? 48 + t2 : 87 + t2);
- break;
- }
- } else if (charCode === 34 || charCode === 92) {
- if (i > offset)
- _this.writeStringSlice$3(s, offset, i);
- offset = i + 1;
- _this.writeCharCode$1(92);
- _this.writeCharCode$1(charCode);
- }
- }
- if (offset === 0)
- _this.writeString$1(s);
- else if (offset < $length)
- _this.writeStringSlice$3(s, offset, $length);
- },
- _checkCycle$1: function(object) {
- var t1, t2, i, t3;
- for (t1 = this._seen, t2 = t1.length, i = 0; i < t2; ++i) {
- t3 = t1[i];
- if (object == null ? t3 == null : object === t3)
- throw H.wrapException(new P.JsonCyclicError(object, null));
- }
- t1.push(object);
- },
- writeObject$1: function(object) {
- var customJson, e, t1, exception, _this = this;
- if (_this.writeJsonValue$1(object))
- return;
- _this._checkCycle$1(object);
- try {
- customJson = _this._toEncodable.call$1(object);
- if (!_this.writeJsonValue$1(customJson)) {
- t1 = P.JsonUnsupportedObjectError$(object, null, _this.get$_partialResult());
- throw H.wrapException(t1);
- }
- _this._seen.pop();
- } catch (exception) {
- e = H.unwrapException(exception);
- t1 = P.JsonUnsupportedObjectError$(object, e, _this.get$_partialResult());
- throw H.wrapException(t1);
- }
- },
- writeJsonValue$1: function(object) {
- var t1, success, _this = this;
- if (typeof object === "number") {
- if (!isFinite(object))
- return false;
- _this.writeNumber$1(object);
- return true;
- } else if (object === true) {
- _this.writeString$1("true");
- return true;
- } else if (object === false) {
- _this.writeString$1("false");
- return true;
- } else if (object == null) {
- _this.writeString$1("null");
- return true;
- } else if (typeof object === "string") {
- _this.writeString$1('"');
- _this.writeStringContent$1(object);
- _this.writeString$1('"');
- return true;
- } else {
- t1 = J.getInterceptor$(object);
- if (!!t1.$isList) {
- _this._checkCycle$1(object);
- _this.writeList$1(object);
- _this._seen.pop();
- return true;
- } else if (!!t1.$isMap) {
- _this._checkCycle$1(object);
- success = _this.writeMap$1(object);
- _this._seen.pop();
- return success;
- } else
- return false;
- }
- },
- writeList$1: function(list) {
- var t1, i, _this = this;
- _this.writeString$1("[");
- t1 = J.getInterceptor$asx(list);
- if (t1.get$isNotEmpty(list)) {
- _this.writeObject$1(t1.$index(list, 0));
- for (i = 1; i < t1.get$length(list); ++i) {
- _this.writeString$1(",");
- _this.writeObject$1(t1.$index(list, i));
- }
- }
- _this.writeString$1("]");
- },
- writeMap$1: function(map) {
- var t1, keyValueList, i, separator, _this = this, _box_0 = {};
- if (map.get$isEmpty(map)) {
- _this.writeString$1("{}");
- return true;
- }
- t1 = map.get$length(map) * 2;
- keyValueList = new Array(t1);
- keyValueList.fixed$length = Array;
- i = _box_0.i = 0;
- _box_0.allStringKeys = true;
- map.forEach$1(0, new P._JsonStringifier_writeMap_closure(_box_0, keyValueList));
- if (!_box_0.allStringKeys)
- return false;
- _this.writeString$1("{");
- for (separator = '"'; i < t1; i += 2, separator = ',"') {
- _this.writeString$1(separator);
- _this.writeStringContent$1(keyValueList[i]);
- _this.writeString$1('":');
- _this.writeObject$1(keyValueList[i + 1]);
- }
- _this.writeString$1("}");
- return true;
- }
- };
- P._JsonStringifier_writeMap_closure.prototype = {
- call$2: function(key, value) {
- var t1, t2, t3, i;
- if (typeof key !== "string")
- this._box_0.allStringKeys = false;
- t1 = this.keyValueList;
- t2 = this._box_0;
- t3 = t2.i;
- i = t2.i = t3 + 1;
- t1[t3] = key;
- t2.i = i + 1;
- t1[i] = value;
- },
- $signature: 12
- };
- P._JsonStringStringifier.prototype = {
- get$_partialResult: function() {
- var t1 = this._sink;
- return !!t1.$isStringBuffer ? t1.toString$0(0) : null;
- },
- writeNumber$1: function(number) {
- this._sink.write$1(0, C.JSNumber_methods.toString$0(number));
- },
- writeString$1: function(string) {
- this._sink.write$1(0, string);
- },
- writeStringSlice$3: function(string, start, end) {
- this._sink.write$1(0, C.JSString_methods.substring$2(string, start, end));
- },
- writeCharCode$1: function(charCode) {
- this._sink.writeCharCode$1(charCode);
- }
- };
- P.StringConversionSinkBase.prototype = {};
- P.StringConversionSinkMixin.prototype = {
- add$1: function(_, str) {
- this.addSlice$4(str, 0, str.length, false);
- },
- asUtf8Sink$1: function(allowMalformed) {
- var t1 = new P.StringBuffer("");
- return new P._Utf8ConversionSink(new P._Utf8Decoder(false, t1), this, t1);
- },
- $isStringConversionSink: 1
- };
- P._StringSinkConversionSink.prototype = {
- close$0: function(_) {
- },
- addSlice$4: function(str, start, end, isLast) {
- var t1, t2, i;
- if (start !== 0 || end !== str.length)
- for (t1 = this._stringSink, t2 = J.getInterceptor$s(str), i = start; i < end; ++i)
- t1._contents += H.Primitives_stringFromCharCode(t2._codeUnitAt$1(str, i));
- else
- this._stringSink._contents += H.S(str);
- if (isLast)
- this.close$0(0);
- },
- add$1: function(_, str) {
- this._stringSink._contents += H.S(str);
- },
- asUtf8Sink$1: function(allowMalformed) {
- return new P._Utf8StringSinkAdapter(new P._Utf8Decoder(false, this._stringSink), this);
- }
- };
- P._StringCallbackSink.prototype = {
- close$0: function(_) {
- var t1 = this._stringSink,
- t2 = t1._contents;
- t1._contents = "";
- this._convert$_callback.call$1(t2.charCodeAt(0) == 0 ? t2 : t2);
- },
- asUtf8Sink$1: function(allowMalformed) {
- return new P._Utf8StringSinkAdapter(new P._Utf8Decoder(false, this._stringSink), this);
- }
- };
- P._StringAdapterSink.prototype = {
- add$1: function(_, str) {
- this._sink.add$1(0, str);
- },
- addSlice$4: function(str, start, end, isLast) {
- var t1 = start === 0 && end === str.length,
- t2 = this._sink;
- if (t1)
- t2.add$1(0, str);
- else
- t2.add$1(0, J.substring$2$s(str, start, end));
- if (isLast)
- t2.close$0(0);
- },
- close$0: function(_) {
- this._sink.close$0(0);
- }
- };
- P._Utf8StringSinkAdapter.prototype = {
- close$0: function(_) {
- this._decoder.flush$0();
- this._sink.close$0(0);
- },
- add$1: function(_, chunk) {
- this._decoder.convert$3(chunk, 0, J.get$length$asx(chunk));
- },
- addSlice$4: function(codeUnits, startIndex, endIndex, isLast) {
- this._decoder.convert$3(codeUnits, startIndex, endIndex);
- if (isLast)
- this.close$0(0);
- }
- };
- P._Utf8ConversionSink.prototype = {
- close$0: function(_) {
- var t1, t2, t3, accumulated;
- this._decoder.flush$0();
- t1 = this._buffer;
- t2 = t1._contents;
- t3 = this._chunkedSink;
- if (t2.length !== 0) {
- accumulated = t2.charCodeAt(0) == 0 ? t2 : t2;
- t1._contents = "";
- t3.addSlice$4(accumulated, 0, accumulated.length, true);
- } else
- t3.close$0(0);
- },
- add$1: function(_, chunk) {
- this.addSlice$4(chunk, 0, J.get$length$asx(chunk), false);
- },
- addSlice$4: function(chunk, startIndex, endIndex, isLast) {
- var t1, t2, accumulated, _this = this;
- _this._decoder.convert$3(chunk, startIndex, endIndex);
- t1 = _this._buffer;
- t2 = t1._contents;
- if (t2.length !== 0) {
- accumulated = t2.charCodeAt(0) == 0 ? t2 : t2;
- _this._chunkedSink.addSlice$4(accumulated, 0, accumulated.length, isLast);
- t1._contents = "";
- return;
- }
- if (isLast)
- _this.close$0(0);
- }
- };
- P.Utf8Codec.prototype = {
- get$encoder: function() {
- return C.C_Utf8Encoder;
- }
- };
- P.Utf8Encoder.prototype = {
- convert$1: function(string) {
- var t1, encoder,
- end = P.RangeError_checkValidRange(0, null, string.length),
- $length = end - 0;
- if ($length === 0)
- return new Uint8Array(0);
- t1 = new Uint8Array($length * 3);
- encoder = new P._Utf8Encoder(t1);
- if (encoder._fillBuffer$3(string, 0, end) !== end)
- encoder._writeSurrogate$2(J.codeUnitAt$1$s(string, end - 1), 0);
- return C.NativeUint8List_methods.sublist$2(t1, 0, encoder._bufferIndex);
- },
- $asConverter: function() {
- return [P.String, [P.List, P.int]];
- }
- };
- P._Utf8Encoder.prototype = {
- _writeSurrogate$2: function(leadingSurrogate, nextCodeUnit) {
- var rune, _this = this,
- t1 = _this._buffer,
- t2 = _this._bufferIndex,
- t3 = t2 + 1;
- if ((nextCodeUnit & 64512) === 56320) {
- rune = 65536 + ((leadingSurrogate & 1023) << 10) | nextCodeUnit & 1023;
- _this._bufferIndex = t3;
- t1[t2] = 240 | rune >>> 18;
- t2 = _this._bufferIndex = t3 + 1;
- t1[t3] = 128 | rune >>> 12 & 63;
- t3 = _this._bufferIndex = t2 + 1;
- t1[t2] = 128 | rune >>> 6 & 63;
- _this._bufferIndex = t3 + 1;
- t1[t3] = 128 | rune & 63;
- return true;
- } else {
- _this._bufferIndex = t3;
- t1[t2] = 224 | leadingSurrogate >>> 12;
- t2 = _this._bufferIndex = t3 + 1;
- t1[t3] = 128 | leadingSurrogate >>> 6 & 63;
- _this._bufferIndex = t2 + 1;
- t1[t2] = 128 | leadingSurrogate & 63;
- return false;
- }
- },
- _fillBuffer$3: function(str, start, end) {
- var t1, t2, t3, stringIndex, codeUnit, t4, stringIndex0, t5, _this = this;
- if (start !== end && (J.codeUnitAt$1$s(str, end - 1) & 64512) === 55296)
- --end;
- for (t1 = _this._buffer, t2 = t1.length, t3 = J.getInterceptor$s(str), stringIndex = start; stringIndex < end; ++stringIndex) {
- codeUnit = t3._codeUnitAt$1(str, stringIndex);
- if (codeUnit <= 127) {
- t4 = _this._bufferIndex;
- if (t4 >= t2)
- break;
- _this._bufferIndex = t4 + 1;
- t1[t4] = codeUnit;
- } else if ((codeUnit & 64512) === 55296) {
- if (_this._bufferIndex + 3 >= t2)
- break;
- stringIndex0 = stringIndex + 1;
- if (_this._writeSurrogate$2(codeUnit, C.JSString_methods._codeUnitAt$1(str, stringIndex0)))
- stringIndex = stringIndex0;
- } else if (codeUnit <= 2047) {
- t4 = _this._bufferIndex;
- t5 = t4 + 1;
- if (t5 >= t2)
- break;
- _this._bufferIndex = t5;
- t1[t4] = 192 | codeUnit >>> 6;
- _this._bufferIndex = t5 + 1;
- t1[t5] = 128 | codeUnit & 63;
- } else {
- t4 = _this._bufferIndex;
- if (t4 + 2 >= t2)
- break;
- t5 = _this._bufferIndex = t4 + 1;
- t1[t4] = 224 | codeUnit >>> 12;
- t4 = _this._bufferIndex = t5 + 1;
- t1[t5] = 128 | codeUnit >>> 6 & 63;
- _this._bufferIndex = t4 + 1;
- t1[t4] = 128 | codeUnit & 63;
- }
- }
- return stringIndex;
- }
- };
- P.Utf8Decoder.prototype = {
- convert$1: function(codeUnits) {
- var end, oneBytes, firstPart, buffer, start, isFirstCharacter, decoder, t1,
- result = P.Utf8Decoder__convertIntercepted(false, codeUnits, 0, null);
- if (result != null)
- return result;
- end = P.RangeError_checkValidRange(0, null, J.get$length$asx(codeUnits));
- oneBytes = P._scanOneByteCharacters(codeUnits, 0, end);
- if (oneBytes > 0) {
- firstPart = P.String_String$fromCharCodes(codeUnits, 0, oneBytes);
- if (oneBytes === end)
- return firstPart;
- buffer = new P.StringBuffer(firstPart);
- start = oneBytes;
- isFirstCharacter = false;
- } else {
- start = 0;
- buffer = null;
- isFirstCharacter = true;
- }
- if (buffer == null)
- buffer = new P.StringBuffer("");
- decoder = new P._Utf8Decoder(false, buffer);
- decoder._isFirstCharacter = isFirstCharacter;
- decoder.convert$3(codeUnits, start, end);
- decoder.flush$2(codeUnits, end);
- t1 = buffer._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- startChunkedConversion$1: function(sink) {
- return (!!sink.$isStringConversionSink ? sink : new P._StringAdapterSink(sink)).asUtf8Sink$1(false);
- },
- $asConverter: function() {
- return [[P.List, P.int], P.String];
- }
- };
- P._Utf8Decoder.prototype = {
- flush$2: function(source, offset) {
- var t1;
- if (this._expectedUnits > 0) {
- t1 = P.FormatException$("Unfinished UTF-8 octet sequence", source, offset);
- throw H.wrapException(t1);
- }
- },
- flush$0: function() {
- return this.flush$2(null, null);
- },
- convert$3: function(codeUnits, startIndex, endIndex) {
- var t1, t2, i, unit, t3, oneBytes, i0, i1, t4, _this = this,
- _s21_ = "Bad UTF-8 encoding 0x",
- value = _this._convert$_value,
- expectedUnits = _this._expectedUnits,
- extraUnits = _this._extraUnits;
- _this._extraUnits = _this._expectedUnits = _this._convert$_value = 0;
- $label0$0:
- for (t1 = J.getInterceptor$asx(codeUnits), t2 = _this._stringSink, i = startIndex; true; i = i1) {
- $label1$1:
- if (expectedUnits > 0) {
- do {
- if (i === endIndex)
- break $label0$0;
- unit = t1.$index(codeUnits, i);
- if ((unit & 192) !== 128) {
- t3 = P.FormatException$(_s21_ + C.JSInt_methods.toRadixString$1(unit, 16), codeUnits, i);
- throw H.wrapException(t3);
- } else {
- value = (value << 6 | unit & 63) >>> 0;
- --expectedUnits;
- ++i;
- }
- } while (expectedUnits > 0);
- if (value <= C.List_127_2047_65535_1114111[extraUnits - 1]) {
- t3 = P.FormatException$("Overlong encoding of 0x" + C.JSInt_methods.toRadixString$1(value, 16), codeUnits, i - extraUnits - 1);
- throw H.wrapException(t3);
- }
- if (value > 1114111) {
- t3 = P.FormatException$("Character outside valid Unicode range: 0x" + C.JSInt_methods.toRadixString$1(value, 16), codeUnits, i - extraUnits - 1);
- throw H.wrapException(t3);
- }
- if (!_this._isFirstCharacter || value !== 65279)
- t2._contents += H.Primitives_stringFromCharCode(value);
- _this._isFirstCharacter = false;
- }
- for (t3 = i < endIndex; t3;) {
- oneBytes = P._scanOneByteCharacters(codeUnits, i, endIndex);
- if (oneBytes > 0) {
- _this._isFirstCharacter = false;
- i0 = i + oneBytes;
- t2._contents += P.String_String$fromCharCodes(codeUnits, i, i0);
- if (i0 === endIndex)
- break;
- } else
- i0 = i;
- i1 = i0 + 1;
- unit = t1.$index(codeUnits, i0);
- if (unit < 0) {
- t4 = P.FormatException$("Negative UTF-8 code unit: -0x" + C.JSInt_methods.toRadixString$1(-unit, 16), codeUnits, i1 - 1);
- throw H.wrapException(t4);
- } else {
- if ((unit & 224) === 192) {
- value = unit & 31;
- expectedUnits = 1;
- extraUnits = 1;
- continue $label0$0;
- }
- if ((unit & 240) === 224) {
- value = unit & 15;
- expectedUnits = 2;
- extraUnits = 2;
- continue $label0$0;
- }
- if ((unit & 248) === 240 && unit < 245) {
- value = unit & 7;
- expectedUnits = 3;
- extraUnits = 3;
- continue $label0$0;
- }
- t4 = P.FormatException$(_s21_ + C.JSInt_methods.toRadixString$1(unit, 16), codeUnits, i1 - 1);
- throw H.wrapException(t4);
- }
- }
- break $label0$0;
- }
- if (expectedUnits > 0) {
- _this._convert$_value = value;
- _this._expectedUnits = expectedUnits;
- _this._extraUnits = extraUnits;
- }
- }
- };
- P.NoSuchMethodError_toString_closure.prototype = {
- call$2: function(key, value) {
- var t3,
- t1 = this.sb,
- t2 = this._box_0;
- t1._contents += t2.comma;
- t3 = t1._contents += H.S(key.__internal$_name);
- t1._contents = t3 + ": ";
- t1._contents += P.Error_safeToString(value);
- t2.comma = ", ";
- }
- };
- P.bool.prototype = {};
- P.DateTime.prototype = {
- add$1: function(_, duration) {
- return P.DateTime$_withValue(C.JSInt_methods.$add(this._value, duration.get$inMilliseconds()), false);
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof P.DateTime && this._value === other._value && true;
- },
- compareTo$1: function(_, other) {
- return C.JSInt_methods.compareTo$1(this._value, other._value);
- },
- get$hashCode: function(_) {
- var t1 = this._value;
- return (t1 ^ C.JSInt_methods._shrOtherPositive$1(t1, 30)) & 1073741823;
- },
- toString$0: function(_) {
- var _this = this,
- y = P.DateTime__fourDigits(H.Primitives_getYear(_this)),
- m = P.DateTime__twoDigits(H.Primitives_getMonth(_this)),
- d = P.DateTime__twoDigits(H.Primitives_getDay(_this)),
- h = P.DateTime__twoDigits(H.Primitives_getHours(_this)),
- min = P.DateTime__twoDigits(H.Primitives_getMinutes(_this)),
- sec = P.DateTime__twoDigits(H.Primitives_getSeconds(_this)),
- ms = P.DateTime__threeDigits(H.Primitives_getMilliseconds(_this)),
- t1 = y + "-" + m + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms;
- return t1;
- },
- $isComparable: 1,
- $asComparable: function() {
- return [P.DateTime];
- }
- };
- P.double.prototype = {};
- P.Duration.prototype = {
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof P.Duration && this._duration === other._duration;
- },
- get$hashCode: function(_) {
- return C.JSInt_methods.get$hashCode(this._duration);
- },
- compareTo$1: function(_, other) {
- return C.JSInt_methods.compareTo$1(this._duration, other._duration);
- },
- toString$0: function(_) {
- var twoDigitMinutes, twoDigitSeconds, sixDigitUs,
- t1 = new P.Duration_toString_twoDigits(),
- t2 = this._duration;
- if (t2 < 0)
- return "-" + new P.Duration(0 - t2).toString$0(0);
- twoDigitMinutes = t1.call$1(C.JSInt_methods._tdivFast$1(t2, 60000000) % 60);
- twoDigitSeconds = t1.call$1(C.JSInt_methods._tdivFast$1(t2, 1000000) % 60);
- sixDigitUs = new P.Duration_toString_sixDigits().call$1(t2 % 1000000);
- return "" + C.JSInt_methods._tdivFast$1(t2, 3600000000) + ":" + H.S(twoDigitMinutes) + ":" + H.S(twoDigitSeconds) + "." + H.S(sixDigitUs);
- },
- $isComparable: 1,
- $asComparable: function() {
- return [P.Duration];
- }
- };
- P.Duration_toString_sixDigits.prototype = {
- call$1: function(n) {
- if (n >= 100000)
- return "" + n;
- if (n >= 10000)
- return "0" + n;
- if (n >= 1000)
- return "00" + n;
- if (n >= 100)
- return "000" + n;
- if (n >= 10)
- return "0000" + n;
- return "00000" + n;
- },
- $signature: 17
- };
- P.Duration_toString_twoDigits.prototype = {
- call$1: function(n) {
- if (n >= 10)
- return "" + n;
- return "0" + n;
- },
- $signature: 17
- };
- P.Error.prototype = {};
- P.NullThrownError.prototype = {
- toString$0: function(_) {
- return "Throw of null.";
- }
- };
- P.ArgumentError.prototype = {
- get$_errorName: function() {
- return "Invalid argument" + (!this._hasValue ? "(s)" : "");
- },
- get$_errorExplanation: function() {
- return "";
- },
- toString$0: function(_) {
- var message, prefix, explanation, errorValue, _this = this,
- t1 = _this.name,
- nameString = t1 != null ? " (" + t1 + ")" : "";
- t1 = _this.message;
- message = t1 == null ? "" : ": " + H.S(t1);
- prefix = _this.get$_errorName() + nameString + message;
- if (!_this._hasValue)
- return prefix;
- explanation = _this.get$_errorExplanation();
- errorValue = P.Error_safeToString(_this.invalidValue);
- return prefix + explanation + ": " + errorValue;
- },
- get$message: function(receiver) {
- return this.message;
- }
- };
- P.RangeError.prototype = {
- get$_errorName: function() {
- return "RangeError";
- },
- get$_errorExplanation: function() {
- var explanation, t2,
- t1 = this.start;
- if (t1 == null) {
- t1 = this.end;
- explanation = t1 != null ? ": Not less than or equal to " + H.S(t1) : "";
- } else {
- t2 = this.end;
- if (t2 == null)
- explanation = ": Not greater than or equal to " + H.S(t1);
- else if (t2 > t1)
- explanation = ": Not in range " + H.S(t1) + ".." + H.S(t2) + ", inclusive";
- else
- explanation = t2 < t1 ? ": Valid value range is empty" : ": Only valid value is " + H.S(t1);
- }
- return explanation;
- }
- };
- P.IndexError.prototype = {
- get$_errorName: function() {
- return "RangeError";
- },
- get$_errorExplanation: function() {
- if (this.invalidValue < 0)
- return ": index must not be negative";
- var t1 = this.length;
- if (t1 === 0)
- return ": no indices are valid";
- return ": index should be less than " + t1;
- },
- get$length: function(receiver) {
- return this.length;
- }
- };
- P.NoSuchMethodError.prototype = {
- toString$0: function(_) {
- var t1, t2, _i, t3, t4, argument, receiverText, actualParameters, _this = this, _box_0 = {},
- sb = new P.StringBuffer("");
- _box_0.comma = "";
- for (t1 = _this._core$_arguments, t2 = t1.length, _i = 0, t3 = "", t4 = ""; _i < t2; ++_i, t4 = ", ") {
- argument = t1[_i];
- sb._contents = t3 + t4;
- t3 = sb._contents += P.Error_safeToString(argument);
- _box_0.comma = ", ";
- }
- _this._namedArguments.forEach$1(0, new P.NoSuchMethodError_toString_closure(_box_0, sb));
- receiverText = P.Error_safeToString(_this._core$_receiver);
- actualParameters = sb.toString$0(0);
- t1 = "NoSuchMethodError: method not found: '" + H.S(_this._memberName.__internal$_name) + "'\nReceiver: " + receiverText + "\nArguments: [" + actualParameters + "]";
- return t1;
- }
- };
- P.UnsupportedError.prototype = {
- toString$0: function(_) {
- return "Unsupported operation: " + this.message;
- },
- get$message: function(receiver) {
- return this.message;
- }
- };
- P.UnimplementedError.prototype = {
- toString$0: function(_) {
- var t1 = this.message;
- return t1 != null ? "UnimplementedError: " + t1 : "UnimplementedError";
- },
- get$message: function(receiver) {
- return this.message;
- }
- };
- P.StateError.prototype = {
- toString$0: function(_) {
- return "Bad state: " + this.message;
- },
- get$message: function(receiver) {
- return this.message;
- }
- };
- P.ConcurrentModificationError.prototype = {
- toString$0: function(_) {
- var t1 = this.modifiedObject;
- if (t1 == null)
- return "Concurrent modification during iteration.";
- return "Concurrent modification during iteration: " + P.Error_safeToString(t1) + ".";
- }
- };
- P.OutOfMemoryError.prototype = {
- toString$0: function(_) {
- return "Out of Memory";
- },
- $isError: 1
- };
- P.StackOverflowError.prototype = {
- toString$0: function(_) {
- return "Stack Overflow";
- },
- $isError: 1
- };
- P.CyclicInitializationError.prototype = {
- toString$0: function(_) {
- var t1 = this.variableName;
- return t1 == null ? "Reading static variable during its initialization" : "Reading static variable '" + t1 + "' during its initialization";
- }
- };
- P._Exception.prototype = {
- toString$0: function(_) {
- return "Exception: " + this.message;
- },
- $isException: 1,
- get$message: function(receiver) {
- return this.message;
- }
- };
- P.FormatException.prototype = {
- toString$0: function(_) {
- var source, lineNum, lineStart, previousCharWasCR, i, char, lineEnd, end, start, prefix, postfix, slice,
- t1 = this.message,
- report = t1 != null && "" !== t1 ? "FormatException: " + H.S(t1) : "FormatException",
- offset = this.offset,
- objectSource = this.source;
- if (typeof objectSource === "string") {
- if (offset != null)
- t1 = offset < 0 || offset > objectSource.length;
- else
- t1 = false;
- if (t1)
- offset = null;
- if (offset == null) {
- source = objectSource.length > 78 ? C.JSString_methods.substring$2(objectSource, 0, 75) + "..." : objectSource;
- return report + "\n" + source;
- }
- for (lineNum = 1, lineStart = 0, previousCharWasCR = false, i = 0; i < offset; ++i) {
- char = C.JSString_methods._codeUnitAt$1(objectSource, i);
- if (char === 10) {
- if (lineStart !== i || !previousCharWasCR)
- ++lineNum;
- lineStart = i + 1;
- previousCharWasCR = false;
- } else if (char === 13) {
- ++lineNum;
- lineStart = i + 1;
- previousCharWasCR = true;
- }
- }
- report = lineNum > 1 ? report + (" (at line " + lineNum + ", character " + (offset - lineStart + 1) + ")\n") : report + (" (at character " + (offset + 1) + ")\n");
- lineEnd = objectSource.length;
- for (i = offset; i < lineEnd; ++i) {
- char = C.JSString_methods.codeUnitAt$1(objectSource, i);
- if (char === 10 || char === 13) {
- lineEnd = i;
- break;
- }
- }
- if (lineEnd - lineStart > 78)
- if (offset - lineStart < 75) {
- end = lineStart + 75;
- start = lineStart;
- prefix = "";
- postfix = "...";
- } else {
- if (lineEnd - offset < 75) {
- start = lineEnd - 75;
- end = lineEnd;
- postfix = "";
- } else {
- start = offset - 36;
- end = offset + 36;
- postfix = "...";
- }
- prefix = "...";
- }
- else {
- end = lineEnd;
- start = lineStart;
- prefix = "";
- postfix = "";
- }
- slice = C.JSString_methods.substring$2(objectSource, start, end);
- return report + prefix + slice + postfix + "\n" + C.JSString_methods.$mul(" ", offset - start + prefix.length) + "^\n";
- } else
- return offset != null ? report + (" (at offset " + H.S(offset) + ")") : report;
- },
- $isException: 1,
- get$message: function(receiver) {
- return this.message;
- },
- get$source: function() {
- return this.source;
- }
- };
- P.Function.prototype = {};
- P.int.prototype = {};
- P.Iterable.prototype = {
- cast$1$0: function(_, $R) {
- return H.CastIterable_CastIterable(this, H.getRuntimeTypeArgument(this, "Iterable", 0), $R);
- },
- followedBy$1: function(_, other) {
- var _this = this,
- t1 = H.getRuntimeTypeArgument(_this, "Iterable", 0);
- if (H.checkSubtype(_this, "$isEfficientLengthIterable", [t1], "$asEfficientLengthIterable"))
- return H.FollowedByIterable_FollowedByIterable$firstEfficient(_this, other, t1);
- return new H.FollowedByIterable(_this, other, [t1]);
- },
- map$1$1: function(_, f, $T) {
- return H.MappedIterable_MappedIterable(this, f, H.getRuntimeTypeArgument(this, "Iterable", 0), $T);
- },
- where$1: function(_, test) {
- return new H.WhereIterable(this, test, [H.getRuntimeTypeArgument(this, "Iterable", 0)]);
- },
- expand$1$1: function(_, f, $T) {
- return new H.ExpandIterable(this, f, [H.getRuntimeTypeArgument(this, "Iterable", 0), $T]);
- },
- contains$1: function(_, element) {
- var t1;
- for (t1 = this.get$iterator(this); t1.moveNext$0();)
- if (J.$eq$(t1.get$current(t1), element))
- return true;
- return false;
- },
- fold$1$2: function(_, initialValue, combine) {
- var t1, value;
- for (t1 = this.get$iterator(this), value = initialValue; t1.moveNext$0();)
- value = combine.call$2(value, t1.get$current(t1));
- return value;
- },
- fold$2: function($receiver, initialValue, combine) {
- return this.fold$1$2($receiver, initialValue, combine, null);
- },
- join$1: function(_, separator) {
- var t1,
- iterator = this.get$iterator(this);
- if (!iterator.moveNext$0())
- return "";
- if (separator === "") {
- t1 = "";
- do
- t1 += H.S(iterator.get$current(iterator));
- while (iterator.moveNext$0());
- } else {
- t1 = H.S(iterator.get$current(iterator));
- for (; iterator.moveNext$0();)
- t1 = t1 + separator + H.S(iterator.get$current(iterator));
- }
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- join$0: function($receiver) {
- return this.join$1($receiver, "");
- },
- any$1: function(_, test) {
- var t1;
- for (t1 = this.get$iterator(this); t1.moveNext$0();)
- if (test.call$1(t1.get$current(t1)))
- return true;
- return false;
- },
- toList$1$growable: function(_, growable) {
- return P.List_List$from(this, growable, H.getRuntimeTypeArgument(this, "Iterable", 0));
- },
- toList$0: function($receiver) {
- return this.toList$1$growable($receiver, true);
- },
- toSet$0: function(_) {
- return P.LinkedHashSet_LinkedHashSet$from(this, H.getRuntimeTypeArgument(this, "Iterable", 0));
- },
- get$length: function(_) {
- var count,
- it = this.get$iterator(this);
- for (count = 0; it.moveNext$0();)
- ++count;
- return count;
- },
- get$isEmpty: function(_) {
- return !this.get$iterator(this).moveNext$0();
- },
- get$isNotEmpty: function(_) {
- return !this.get$isEmpty(this);
- },
- take$1: function(_, count) {
- return H.TakeIterable_TakeIterable(this, count, H.getRuntimeTypeArgument(this, "Iterable", 0));
- },
- skip$1: function(_, count) {
- return H.SkipIterable_SkipIterable(this, count, H.getRuntimeTypeArgument(this, "Iterable", 0));
- },
- skipWhile$1: function(_, test) {
- return new H.SkipWhileIterable(this, test, [H.getRuntimeTypeArgument(this, "Iterable", 0)]);
- },
- get$first: function(_) {
- var it = this.get$iterator(this);
- if (!it.moveNext$0())
- throw H.wrapException(H.IterableElementError_noElement());
- return it.get$current(it);
- },
- get$last: function(_) {
- var result,
- it = this.get$iterator(this);
- if (!it.moveNext$0())
- throw H.wrapException(H.IterableElementError_noElement());
- do
- result = it.get$current(it);
- while (it.moveNext$0());
- return result;
- },
- get$single: function(_) {
- var result,
- it = this.get$iterator(this);
- if (!it.moveNext$0())
- throw H.wrapException(H.IterableElementError_noElement());
- result = it.get$current(it);
- if (it.moveNext$0())
- throw H.wrapException(H.IterableElementError_tooMany());
- return result;
- },
- firstWhere$2$orElse: function(_, test, orElse) {
- var t1, element;
- for (t1 = this.get$iterator(this); t1.moveNext$0();) {
- element = t1.get$current(t1);
- if (test.call$1(element))
- return element;
- }
- return orElse.call$0();
- },
- elementAt$1: function(_, index) {
- var t1, elementIndex, element, _s5_ = "index";
- if (index == null)
- H.throwExpression(P.ArgumentError$notNull(_s5_));
- P.RangeError_checkNotNegative(index, _s5_);
- for (t1 = this.get$iterator(this), elementIndex = 0; t1.moveNext$0();) {
- element = t1.get$current(t1);
- if (index === elementIndex)
- return element;
- ++elementIndex;
- }
- throw H.wrapException(P.IndexError$(index, this, _s5_, null, elementIndex));
- },
- toString$0: function(_) {
- return P.IterableBase_iterableToShortString(this, "(", ")");
- }
- };
- P._GeneratorIterable.prototype = {
- elementAt$1: function(_, index) {
- P.RangeError_checkValidIndex(index, this, null);
- return this._generator.call$1(index);
- },
- get$length: function(receiver) {
- return this.length;
- }
- };
- P.Iterator.prototype = {};
- P.List.prototype = {$isEfficientLengthIterable: 1, $isIterable: 1};
- P.Map.prototype = {};
- P.MapEntry.prototype = {
- toString$0: function(_) {
- return "MapEntry(" + H.S(this.key) + ": " + H.S(this.value) + ")";
- }
- };
- P.Null.prototype = {
- get$hashCode: function(_) {
- return P.Object.prototype.get$hashCode.call(this, this);
- },
- toString$0: function(_) {
- return "null";
- }
- };
- P.num.prototype = {$isComparable: 1,
- $asComparable: function() {
- return [P.num];
- }
- };
- P.Object.prototype = {constructor: P.Object, $isObject: 1,
- $eq: function(_, other) {
- return this === other;
- },
- get$hashCode: function(_) {
- return H.Primitives_objectHashCode(this);
- },
- toString$0: function(_) {
- return "Instance of '" + H.S(H.Primitives_objectTypeName(this)) + "'";
- },
- noSuchMethod$1: function(_, invocation) {
- throw H.wrapException(P.NoSuchMethodError$(this, invocation.get$memberName(), invocation.get$positionalArguments(), invocation.get$namedArguments()));
- },
- toString: function() {
- return this.toString$0(this);
- }
- };
- P.Match.prototype = {};
- P.RegExpMatch.prototype = {$isMatch: 1};
- P.Set.prototype = {};
- P.StackTrace.prototype = {};
- P._StringStackTrace.prototype = {
- toString$0: function(_) {
- return this._core$_stackTrace;
- },
- $isStackTrace: 1
- };
- P.String.prototype = {$isComparable: 1,
- $asComparable: function() {
- return [P.String];
- }
- };
- P.Runes.prototype = {
- get$iterator: function(_) {
- return new P.RuneIterator(this.string);
- },
- get$last: function(_) {
- var code, previousCode,
- t1 = this.string,
- t2 = t1.length;
- if (t2 === 0)
- throw H.wrapException(P.StateError$("No elements."));
- code = C.JSString_methods.codeUnitAt$1(t1, t2 - 1);
- if ((code & 64512) === 56320 && t2 > 1) {
- previousCode = C.JSString_methods.codeUnitAt$1(t1, t2 - 2);
- if ((previousCode & 64512) === 55296)
- return P._combineSurrogatePair(previousCode, code);
- }
- return code;
- },
- $asIterable: function() {
- return [P.int];
- }
- };
- P.RuneIterator.prototype = {
- get$current: function(_) {
- return this._currentCodePoint;
- },
- moveNext$0: function() {
- var codeUnit, nextPosition, nextCodeUnit, _this = this,
- t1 = _this._core$_position = _this._nextPosition,
- t2 = _this.string,
- t3 = t2.length;
- if (t1 === t3) {
- _this._currentCodePoint = null;
- return false;
- }
- codeUnit = C.JSString_methods._codeUnitAt$1(t2, t1);
- nextPosition = t1 + 1;
- if ((codeUnit & 64512) === 55296 && nextPosition < t3) {
- nextCodeUnit = C.JSString_methods._codeUnitAt$1(t2, nextPosition);
- if ((nextCodeUnit & 64512) === 56320) {
- _this._nextPosition = nextPosition + 1;
- _this._currentCodePoint = P._combineSurrogatePair(codeUnit, nextCodeUnit);
- return true;
- }
- }
- _this._nextPosition = nextPosition;
- _this._currentCodePoint = codeUnit;
- return true;
- }
- };
- P.StringBuffer.prototype = {
- get$length: function(_) {
- return this._contents.length;
- },
- write$1: function(_, obj) {
- this._contents += H.S(obj);
- },
- writeCharCode$1: function(charCode) {
- this._contents += H.Primitives_stringFromCharCode(charCode);
- },
- toString$0: function(_) {
- var t1 = this._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- }
- };
- P.StringSink.prototype = {};
- P.Symbol0.prototype = {};
- P.Uri.prototype = {};
- P.Uri__parseIPv4Address_error.prototype = {
- call$2: function(msg, position) {
- throw H.wrapException(P.FormatException$("Illegal IPv4 address, " + msg, this.host, position));
- }
- };
- P.Uri_parseIPv6Address_error.prototype = {
- call$2: function(msg, position) {
- throw H.wrapException(P.FormatException$("Illegal IPv6 address, " + msg, this.host, position));
- },
- call$1: function(msg) {
- return this.call$2(msg, null);
- }
- };
- P.Uri_parseIPv6Address_parseHex.prototype = {
- call$2: function(start, end) {
- var value;
- if (end - start > 4)
- this.error.call$2("an IPv6 part can only contain a maximum of 4 hex digits", start);
- value = P.int_parse(C.JSString_methods.substring$2(this.host, start, end), null, 16);
- if (value < 0 || value > 65535)
- this.error.call$2("each part must be in the range of `0x0..0xFFFF`", start);
- return value;
- }
- };
- P._Uri.prototype = {
- get$userInfo: function() {
- return this._userInfo;
- },
- get$host: function() {
- var t1 = this._host;
- if (t1 == null)
- return "";
- if (C.JSString_methods.startsWith$1(t1, "["))
- return C.JSString_methods.substring$2(t1, 1, t1.length - 1);
- return t1;
- },
- get$port: function() {
- var t1 = this._port;
- if (t1 == null)
- return P._Uri__defaultPort(this.scheme);
- return t1;
- },
- get$query: function() {
- var t1 = this._query;
- return t1 == null ? "" : t1;
- },
- get$fragment: function() {
- var t1 = this._fragment;
- return t1 == null ? "" : t1;
- },
- get$pathSegments: function() {
- var pathToSplit, t1, t2,
- result = this._pathSegments;
- if (result != null)
- return result;
- pathToSplit = this.path;
- if (pathToSplit.length !== 0 && C.JSString_methods._codeUnitAt$1(pathToSplit, 0) === 47)
- pathToSplit = C.JSString_methods.substring$1(pathToSplit, 1);
- if (pathToSplit === "")
- result = C.List_empty;
- else {
- t1 = P.String;
- t2 = H.setRuntimeTypeInfo(pathToSplit.split("/"), [t1]);
- result = P.List_List$unmodifiable(new H.MappedListIterable(t2, P.core_Uri_decodeComponent$closure(), [H.getTypeArgumentByIndex(t2, 0), null]), t1);
- }
- return this._pathSegments = result;
- },
- _mergePaths$2: function(base, reference) {
- var backCount, refStart, baseEnd, newEnd, delta, t1;
- for (backCount = 0, refStart = 0; C.JSString_methods.startsWith$2(reference, "../", refStart);) {
- refStart += 3;
- ++backCount;
- }
- baseEnd = C.JSString_methods.lastIndexOf$1(base, "/");
- while (true) {
- if (!(baseEnd > 0 && backCount > 0))
- break;
- newEnd = C.JSString_methods.lastIndexOf$2(base, "/", baseEnd - 1);
- if (newEnd < 0)
- break;
- delta = baseEnd - newEnd;
- t1 = delta !== 2;
- if (!t1 || delta === 3)
- if (C.JSString_methods.codeUnitAt$1(base, newEnd + 1) === 46)
- t1 = !t1 || C.JSString_methods.codeUnitAt$1(base, newEnd + 2) === 46;
- else
- t1 = false;
- else
- t1 = false;
- if (t1)
- break;
- --backCount;
- baseEnd = newEnd;
- }
- return C.JSString_methods.replaceRange$3(base, baseEnd + 1, null, C.JSString_methods.substring$1(reference, refStart - 3 * backCount));
- },
- resolve$1: function(reference) {
- return this.resolveUri$1(P.Uri_parse(reference));
- },
- resolveUri$1: function(reference) {
- var targetScheme, targetUserInfo, targetHost, targetPort, targetPath, targetQuery, t1, mergedPath, t2, _this = this, _null = null;
- if (reference.get$scheme().length !== 0) {
- targetScheme = reference.get$scheme();
- if (reference.get$hasAuthority()) {
- targetUserInfo = reference.get$userInfo();
- targetHost = reference.get$host();
- targetPort = reference.get$hasPort() ? reference.get$port() : _null;
- } else {
- targetPort = _null;
- targetHost = targetPort;
- targetUserInfo = "";
- }
- targetPath = P._Uri__removeDotSegments(reference.get$path(reference));
- targetQuery = reference.get$hasQuery() ? reference.get$query() : _null;
- } else {
- targetScheme = _this.scheme;
- if (reference.get$hasAuthority()) {
- targetUserInfo = reference.get$userInfo();
- targetHost = reference.get$host();
- targetPort = P._Uri__makePort(reference.get$hasPort() ? reference.get$port() : _null, targetScheme);
- targetPath = P._Uri__removeDotSegments(reference.get$path(reference));
- targetQuery = reference.get$hasQuery() ? reference.get$query() : _null;
- } else {
- targetUserInfo = _this._userInfo;
- targetHost = _this._host;
- targetPort = _this._port;
- if (reference.get$path(reference) === "") {
- targetPath = _this.path;
- targetQuery = reference.get$hasQuery() ? reference.get$query() : _this._query;
- } else {
- if (reference.get$hasAbsolutePath())
- targetPath = P._Uri__removeDotSegments(reference.get$path(reference));
- else {
- t1 = _this.path;
- if (t1.length === 0)
- if (targetHost == null)
- targetPath = targetScheme.length === 0 ? reference.get$path(reference) : P._Uri__removeDotSegments(reference.get$path(reference));
- else
- targetPath = P._Uri__removeDotSegments("/" + reference.get$path(reference));
- else {
- mergedPath = _this._mergePaths$2(t1, reference.get$path(reference));
- t2 = targetScheme.length === 0;
- if (!t2 || targetHost != null || C.JSString_methods.startsWith$1(t1, "/"))
- targetPath = P._Uri__removeDotSegments(mergedPath);
- else
- targetPath = P._Uri__normalizeRelativePath(mergedPath, !t2 || targetHost != null);
- }
- }
- targetQuery = reference.get$hasQuery() ? reference.get$query() : _null;
- }
- }
- }
- return new P._Uri(targetScheme, targetUserInfo, targetHost, targetPort, targetPath, targetQuery, reference.get$hasFragment() ? reference.get$fragment() : _null);
- },
- get$hasAuthority: function() {
- return this._host != null;
- },
- get$hasPort: function() {
- return this._port != null;
- },
- get$hasQuery: function() {
- return this._query != null;
- },
- get$hasFragment: function() {
- return this._fragment != null;
- },
- get$hasAbsolutePath: function() {
- return C.JSString_methods.startsWith$1(this.path, "/");
- },
- toFilePath$0: function() {
- var windows, pathSegments, _this = this,
- t1 = _this.scheme;
- if (t1 !== "" && t1 !== "file")
- throw H.wrapException(P.UnsupportedError$("Cannot extract a file path from a " + H.S(t1) + " URI"));
- t1 = _this._query;
- if ((t1 == null ? "" : t1) !== "")
- throw H.wrapException(P.UnsupportedError$("Cannot extract a file path from a URI with a query component"));
- t1 = _this._fragment;
- if ((t1 == null ? "" : t1) !== "")
- throw H.wrapException(P.UnsupportedError$("Cannot extract a file path from a URI with a fragment component"));
- windows = $.$get$_Uri__isWindowsCached();
- if (windows)
- t1 = P._Uri__toWindowsFilePath(_this);
- else {
- if (_this._host != null && _this.get$host() !== "")
- H.throwExpression(P.UnsupportedError$("Cannot extract a non-Windows file path from a file URI with an authority"));
- pathSegments = _this.get$pathSegments();
- P._Uri__checkNonWindowsPathReservedCharacters(pathSegments, false);
- t1 = P.StringBuffer__writeAll(C.JSString_methods.startsWith$1(_this.path, "/") ? "/" : "", pathSegments, "/");
- t1 = t1.charCodeAt(0) == 0 ? t1 : t1;
- }
- return t1;
- },
- toString$0: function(_) {
- var t2, t3, t4, _this = this,
- t1 = _this._text;
- if (t1 == null) {
- t1 = _this.scheme;
- t2 = t1.length !== 0 ? H.S(t1) + ":" : "";
- t3 = _this._host;
- t4 = t3 == null;
- if (!t4 || t1 === "file") {
- t1 = t2 + "//";
- t2 = _this._userInfo;
- if (t2.length !== 0)
- t1 = t1 + H.S(t2) + "@";
- if (!t4)
- t1 += t3;
- t2 = _this._port;
- if (t2 != null)
- t1 = t1 + ":" + H.S(t2);
- } else
- t1 = t2;
- t1 += _this.path;
- t2 = _this._query;
- if (t2 != null)
- t1 = t1 + "?" + t2;
- t2 = _this._fragment;
- if (t2 != null)
- t1 = t1 + "#" + t2;
- t1 = _this._text = t1.charCodeAt(0) == 0 ? t1 : t1;
- }
- return t1;
- },
- $eq: function(_, other) {
- var t1, t2, _this = this;
- if (other == null)
- return false;
- if (_this === other)
- return true;
- if (!!J.getInterceptor$(other).$isUri)
- if (_this.scheme == other.get$scheme())
- if (_this._host != null === other.get$hasAuthority())
- if (_this._userInfo == other.get$userInfo())
- if (_this.get$host() == other.get$host())
- if (_this.get$port() == other.get$port())
- if (_this.path === other.get$path(other)) {
- t1 = _this._query;
- t2 = t1 == null;
- if (!t2 === other.get$hasQuery()) {
- if (t2)
- t1 = "";
- if (t1 === other.get$query()) {
- t1 = _this._fragment;
- t2 = t1 == null;
- if (!t2 === other.get$hasFragment()) {
- if (t2)
- t1 = "";
- t1 = t1 === other.get$fragment();
- } else
- t1 = false;
- } else
- t1 = false;
- } else
- t1 = false;
- } else
- t1 = false;
- else
- t1 = false;
- else
- t1 = false;
- else
- t1 = false;
- else
- t1 = false;
- else
- t1 = false;
- else
- t1 = false;
- return t1;
- },
- get$hashCode: function(_) {
- var t1 = this._hashCodeCache;
- return t1 == null ? this._hashCodeCache = C.JSString_methods.get$hashCode(this.toString$0(0)) : t1;
- },
- $isUri: 1,
- get$scheme: function() {
- return this.scheme;
- },
- get$path: function(receiver) {
- return this.path;
- }
- };
- P._Uri__Uri$notSimple_closure.prototype = {
- call$1: function(_) {
- throw H.wrapException(P.FormatException$("Invalid port", this.uri, this.portStart + 1));
- }
- };
- P._Uri__checkNonWindowsPathReservedCharacters_closure.prototype = {
- call$1: function(segment) {
- var _s23_ = "Illegal path character ";
- if (J.contains$1$asx(segment, "/"))
- if (this.argumentError)
- throw H.wrapException(P.ArgumentError$(_s23_ + segment));
- else
- throw H.wrapException(P.UnsupportedError$(_s23_ + segment));
- }
- };
- P._Uri__makePath_closure.prototype = {
- call$1: function(s) {
- return P._Uri__uriEncode(C.List_qg40, s, C.C_Utf8Codec, false);
- }
- };
- P.UriData.prototype = {
- get$uri: function() {
- var t2, queryIndex, end, query, _this = this, _null = null,
- t1 = _this._uriCache;
- if (t1 != null)
- return t1;
- t1 = _this._text;
- t2 = _this._separatorIndices[0] + 1;
- queryIndex = C.JSString_methods.indexOf$2(t1, "?", t2);
- end = t1.length;
- if (queryIndex >= 0) {
- query = P._Uri__normalizeOrSubstring(t1, queryIndex + 1, end, C.List_CVk, false);
- end = queryIndex;
- } else
- query = _null;
- return _this._uriCache = new P._DataUri("data", _null, _null, _null, P._Uri__normalizeOrSubstring(t1, t2, end, C.List_qg4, false), query, _null);
- },
- toString$0: function(_) {
- var t1 = this._text;
- return this._separatorIndices[0] === -1 ? "data:" + t1 : t1;
- }
- };
- P._createTables_closure.prototype = {
- call$1: function(_) {
- return new Uint8Array(96);
- },
- $signature: 83
- };
- P._createTables_build.prototype = {
- call$2: function(state, defaultTransition) {
- var t1 = this.tables[state];
- J.fillRange$3$ax(t1, 0, 96, defaultTransition);
- return t1;
- },
- $signature: 37
- };
- P._createTables_setChars.prototype = {
- call$3: function(target, chars, transition) {
- var t1, i;
- for (t1 = chars.length, i = 0; i < t1; ++i)
- target[C.JSString_methods._codeUnitAt$1(chars, i) ^ 96] = transition;
- }
- };
- P._createTables_setRange.prototype = {
- call$3: function(target, range, transition) {
- var i, n;
- for (i = C.JSString_methods._codeUnitAt$1(range, 0), n = C.JSString_methods._codeUnitAt$1(range, 1); i <= n; ++i)
- target[(i ^ 96) >>> 0] = transition;
- }
- };
- P._SimpleUri.prototype = {
- get$hasAuthority: function() {
- return this._hostStart > 0;
- },
- get$hasPort: function() {
- return this._hostStart > 0 && this._portStart + 1 < this._pathStart;
- },
- get$hasQuery: function() {
- return this._queryStart < this._fragmentStart;
- },
- get$hasFragment: function() {
- return this._fragmentStart < this._uri.length;
- },
- get$_isFile: function() {
- return this._schemeEnd === 4 && C.JSString_methods.startsWith$1(this._uri, "file");
- },
- get$_isHttp: function() {
- return this._schemeEnd === 4 && C.JSString_methods.startsWith$1(this._uri, "http");
- },
- get$_isHttps: function() {
- return this._schemeEnd === 5 && C.JSString_methods.startsWith$1(this._uri, "https");
- },
- get$hasAbsolutePath: function() {
- return C.JSString_methods.startsWith$2(this._uri, "/", this._pathStart);
- },
- get$scheme: function() {
- var t2, _this = this,
- _s7_ = "package",
- t1 = _this._schemeEnd;
- if (t1 <= 0)
- return "";
- t2 = _this._schemeCache;
- if (t2 != null)
- return t2;
- if (_this.get$_isHttp())
- t1 = _this._schemeCache = "http";
- else if (_this.get$_isHttps()) {
- _this._schemeCache = "https";
- t1 = "https";
- } else if (_this.get$_isFile()) {
- _this._schemeCache = "file";
- t1 = "file";
- } else if (t1 === 7 && C.JSString_methods.startsWith$1(_this._uri, _s7_)) {
- _this._schemeCache = _s7_;
- t1 = _s7_;
- } else {
- t1 = C.JSString_methods.substring$2(_this._uri, 0, t1);
- _this._schemeCache = t1;
- }
- return t1;
- },
- get$userInfo: function() {
- var t1 = this._hostStart,
- t2 = this._schemeEnd + 3;
- return t1 > t2 ? C.JSString_methods.substring$2(this._uri, t2, t1 - 1) : "";
- },
- get$host: function() {
- var t1 = this._hostStart;
- return t1 > 0 ? C.JSString_methods.substring$2(this._uri, t1, this._portStart) : "";
- },
- get$port: function() {
- var _this = this;
- if (_this.get$hasPort())
- return P.int_parse(C.JSString_methods.substring$2(_this._uri, _this._portStart + 1, _this._pathStart), null, null);
- if (_this.get$_isHttp())
- return 80;
- if (_this.get$_isHttps())
- return 443;
- return 0;
- },
- get$path: function(_) {
- return C.JSString_methods.substring$2(this._uri, this._pathStart, this._queryStart);
- },
- get$query: function() {
- var t1 = this._queryStart,
- t2 = this._fragmentStart;
- return t1 < t2 ? C.JSString_methods.substring$2(this._uri, t1 + 1, t2) : "";
- },
- get$fragment: function() {
- var t1 = this._fragmentStart,
- t2 = this._uri;
- return t1 < t2.length ? C.JSString_methods.substring$1(t2, t1 + 1) : "";
- },
- get$pathSegments: function() {
- var t2, parts, i,
- start = this._pathStart,
- end = this._queryStart,
- t1 = this._uri;
- if (C.JSString_methods.startsWith$2(t1, "/", start))
- ++start;
- if (start == end)
- return C.List_empty;
- t2 = P.String;
- parts = H.setRuntimeTypeInfo([], [t2]);
- for (i = start; i < end; ++i)
- if (C.JSString_methods.codeUnitAt$1(t1, i) === 47) {
- parts.push(C.JSString_methods.substring$2(t1, start, i));
- start = i + 1;
- }
- parts.push(C.JSString_methods.substring$2(t1, start, end));
- return P.List_List$unmodifiable(parts, t2);
- },
- _isPort$1: function(port) {
- var portDigitStart = this._portStart + 1;
- return portDigitStart + port.length === this._pathStart && C.JSString_methods.startsWith$2(this._uri, port, portDigitStart);
- },
- removeFragment$0: function() {
- var _this = this,
- t1 = _this._fragmentStart,
- t2 = _this._uri;
- if (t1 >= t2.length)
- return _this;
- return new P._SimpleUri(C.JSString_methods.substring$2(t2, 0, t1), _this._schemeEnd, _this._hostStart, _this._portStart, _this._pathStart, _this._queryStart, t1, _this._schemeCache);
- },
- resolve$1: function(reference) {
- return this.resolveUri$1(P.Uri_parse(reference));
- },
- resolveUri$1: function(reference) {
- if (reference instanceof P._SimpleUri)
- return this._simpleMerge$2(this, reference);
- return this._toNonSimple$0().resolveUri$1(reference);
- },
- _simpleMerge$2: function(base, ref) {
- var t2, t3, isSimple, delta, refStart, baseStart, baseEnd, baseUri, baseStart0, backCount, refStart0, insert,
- t1 = ref._schemeEnd;
- if (t1 > 0)
- return ref;
- t2 = ref._hostStart;
- if (t2 > 0) {
- t3 = base._schemeEnd;
- if (t3 <= 0)
- return ref;
- if (base.get$_isFile())
- isSimple = ref._pathStart != ref._queryStart;
- else if (base.get$_isHttp())
- isSimple = !ref._isPort$1("80");
- else
- isSimple = !base.get$_isHttps() || !ref._isPort$1("443");
- if (isSimple) {
- delta = t3 + 1;
- return new P._SimpleUri(C.JSString_methods.substring$2(base._uri, 0, delta) + C.JSString_methods.substring$1(ref._uri, t1 + 1), t3, t2 + delta, ref._portStart + delta, ref._pathStart + delta, ref._queryStart + delta, ref._fragmentStart + delta, base._schemeCache);
- } else
- return this._toNonSimple$0().resolveUri$1(ref);
- }
- refStart = ref._pathStart;
- t1 = ref._queryStart;
- if (refStart == t1) {
- t2 = ref._fragmentStart;
- if (t1 < t2) {
- t3 = base._queryStart;
- delta = t3 - t1;
- return new P._SimpleUri(C.JSString_methods.substring$2(base._uri, 0, t3) + C.JSString_methods.substring$1(ref._uri, t1), base._schemeEnd, base._hostStart, base._portStart, base._pathStart, t1 + delta, t2 + delta, base._schemeCache);
- }
- t1 = ref._uri;
- if (t2 < t1.length) {
- t3 = base._fragmentStart;
- return new P._SimpleUri(C.JSString_methods.substring$2(base._uri, 0, t3) + C.JSString_methods.substring$1(t1, t2), base._schemeEnd, base._hostStart, base._portStart, base._pathStart, base._queryStart, t2 + (t3 - t2), base._schemeCache);
- }
- return base.removeFragment$0();
- }
- t2 = ref._uri;
- if (C.JSString_methods.startsWith$2(t2, "/", refStart)) {
- t3 = base._pathStart;
- delta = t3 - refStart;
- return new P._SimpleUri(C.JSString_methods.substring$2(base._uri, 0, t3) + C.JSString_methods.substring$1(t2, refStart), base._schemeEnd, base._hostStart, base._portStart, t3, t1 + delta, ref._fragmentStart + delta, base._schemeCache);
- }
- baseStart = base._pathStart;
- baseEnd = base._queryStart;
- if (baseStart == baseEnd && base._hostStart > 0) {
- for (; C.JSString_methods.startsWith$2(t2, "../", refStart);)
- refStart += 3;
- delta = baseStart - refStart + 1;
- return new P._SimpleUri(C.JSString_methods.substring$2(base._uri, 0, baseStart) + "/" + C.JSString_methods.substring$1(t2, refStart), base._schemeEnd, base._hostStart, base._portStart, baseStart, t1 + delta, ref._fragmentStart + delta, base._schemeCache);
- }
- baseUri = base._uri;
- for (baseStart0 = baseStart; C.JSString_methods.startsWith$2(baseUri, "../", baseStart0);)
- baseStart0 += 3;
- backCount = 0;
- while (true) {
- refStart0 = refStart + 3;
- if (!(refStart0 <= t1 && C.JSString_methods.startsWith$2(t2, "../", refStart)))
- break;
- ++backCount;
- refStart = refStart0;
- }
- for (insert = ""; baseEnd > baseStart0;) {
- --baseEnd;
- if (C.JSString_methods.codeUnitAt$1(baseUri, baseEnd) === 47) {
- if (backCount === 0) {
- insert = "/";
- break;
- }
- --backCount;
- insert = "/";
- }
- }
- if (baseEnd === baseStart0 && base._schemeEnd <= 0 && !C.JSString_methods.startsWith$2(baseUri, "/", baseStart)) {
- refStart -= backCount * 3;
- insert = "";
- }
- delta = baseEnd - refStart + insert.length;
- return new P._SimpleUri(C.JSString_methods.substring$2(baseUri, 0, baseEnd) + insert + C.JSString_methods.substring$1(t2, refStart), base._schemeEnd, base._hostStart, base._portStart, baseStart, t1 + delta, ref._fragmentStart + delta, base._schemeCache);
- },
- toFilePath$0: function() {
- var t1, t2, windows, _this = this;
- if (_this._schemeEnd >= 0 && !_this.get$_isFile())
- throw H.wrapException(P.UnsupportedError$("Cannot extract a file path from a " + H.S(_this.get$scheme()) + " URI"));
- t1 = _this._queryStart;
- t2 = _this._uri;
- if (t1 < t2.length) {
- if (t1 < _this._fragmentStart)
- throw H.wrapException(P.UnsupportedError$("Cannot extract a file path from a URI with a query component"));
- throw H.wrapException(P.UnsupportedError$("Cannot extract a file path from a URI with a fragment component"));
- }
- windows = $.$get$_Uri__isWindowsCached();
- if (windows)
- t1 = P._Uri__toWindowsFilePath(_this);
- else {
- if (_this._hostStart < _this._portStart)
- H.throwExpression(P.UnsupportedError$("Cannot extract a non-Windows file path from a file URI with an authority"));
- t1 = C.JSString_methods.substring$2(t2, _this._pathStart, t1);
- }
- return t1;
- },
- get$hashCode: function(_) {
- var t1 = this._hashCodeCache;
- return t1 == null ? this._hashCodeCache = C.JSString_methods.get$hashCode(this._uri) : t1;
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- if (this === other)
- return true;
- return !!J.getInterceptor$(other).$isUri && this._uri === other.toString$0(0);
- },
- _toNonSimple$0: function() {
- var _this = this, _null = null,
- t1 = _this.get$scheme(),
- t2 = _this.get$userInfo(),
- t3 = _this._hostStart > 0 ? _this.get$host() : _null,
- t4 = _this.get$hasPort() ? _this.get$port() : _null,
- t5 = _this._uri,
- t6 = _this._queryStart,
- t7 = C.JSString_methods.substring$2(t5, _this._pathStart, t6),
- t8 = _this._fragmentStart;
- t6 = t6 < t8 ? _this.get$query() : _null;
- return new P._Uri(t1, t2, t3, t4, t7, t6, t8 < t5.length ? _this.get$fragment() : _null);
- },
- toString$0: function(_) {
- return this._uri;
- },
- $isUri: 1
- };
- P._DataUri.prototype = {};
- P._JSRandom.prototype = {
- nextInt$1: function(max) {
- if (max <= 0 || max > 4294967296)
- throw H.wrapException(P.RangeError$("max must be in range 0 < max \u2264 2^32, was " + max));
- return Math.random() * max >>> 0;
- },
- nextDouble$0: function() {
- return Math.random();
- }
- };
- P.Uint8List.prototype = {$isEfficientLengthIterable: 1,
- $asEfficientLengthIterable: function() {
- return [P.int];
- },
- $isIterable: 1,
- $asIterable: function() {
- return [P.int];
- },
- $isList: 1,
- $asList: function() {
- return [P.int];
- }
- };
- N.ArgParser.prototype = {
- addFlag$6$abbr$defaultsTo$help$hide$negatable: function($name, abbr, defaultsTo, help, hide, negatable) {
- var _null = null;
- this._addOption$11$hide$negatable($name, abbr, help, _null, _null, _null, defaultsTo, _null, C.OptionType_nMZ, hide, negatable);
- },
- addFlag$2$hide: function($name, hide) {
- return this.addFlag$6$abbr$defaultsTo$help$hide$negatable($name, null, false, null, hide, true);
- },
- addFlag$2$help: function($name, help) {
- return this.addFlag$6$abbr$defaultsTo$help$hide$negatable($name, null, false, help, false, true);
- },
- addFlag$3$defaultsTo$help: function($name, defaultsTo, help) {
- return this.addFlag$6$abbr$defaultsTo$help$hide$negatable($name, null, defaultsTo, help, false, true);
- },
- addFlag$3$help$negatable: function($name, help, negatable) {
- return this.addFlag$6$abbr$defaultsTo$help$hide$negatable($name, null, false, help, false, negatable);
- },
- addFlag$4$abbr$help$negatable: function($name, abbr, help, negatable) {
- return this.addFlag$6$abbr$defaultsTo$help$hide$negatable($name, abbr, false, help, false, negatable);
- },
- addFlag$3$abbr$help: function($name, abbr, help) {
- return this.addFlag$6$abbr$defaultsTo$help$hide$negatable($name, abbr, false, help, false, true);
- },
- addOption$7$abbr$allowed$defaultsTo$help$hide$valueHelp: function($name, abbr, allowed, defaultsTo, help, hide, valueHelp) {
- this._addOption$11$hide$splitCommas($name, abbr, help, valueHelp, allowed, null, defaultsTo, null, C.OptionType_YwU, hide, null);
- },
- addOption$2$hide: function($name, hide) {
- return this.addOption$7$abbr$allowed$defaultsTo$help$hide$valueHelp($name, null, null, null, null, hide, null);
- },
- addOption$6$abbr$allowed$defaultsTo$help$valueHelp: function($name, abbr, allowed, defaultsTo, help, valueHelp) {
- return this.addOption$7$abbr$allowed$defaultsTo$help$hide$valueHelp($name, abbr, allowed, defaultsTo, help, false, valueHelp);
- },
- addOption$4$allowed$defaultsTo$help: function($name, allowed, defaultsTo, help) {
- return this.addOption$7$abbr$allowed$defaultsTo$help$hide$valueHelp($name, null, allowed, defaultsTo, help, false, null);
- },
- addMultiOption$5$abbr$help$splitCommas$valueHelp: function($name, abbr, help, splitCommas, valueHelp) {
- var t1 = H.setRuntimeTypeInfo([], [P.String]);
- this._addOption$11$hide$splitCommas($name, abbr, help, valueHelp, null, null, t1, null, C.OptionType_qyr, false, false);
- },
- _addOption$12$hide$negatable$splitCommas: function($name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo, callback, type, hide, negatable, splitCommas) {
- var t2, existing, t3, option,
- t1 = this._arg_parser$_options;
- if (t1.containsKey$1($name))
- throw H.wrapException(P.ArgumentError$('Duplicate option "' + $name + '".'));
- t2 = abbr != null;
- if (t2) {
- existing = this.findByAbbreviation$1(abbr);
- if (existing != null)
- throw H.wrapException(P.ArgumentError$('Abbreviation "' + abbr + '" is already used by "' + existing.name + '".'));
- }
- t3 = allowed == null ? null : P.List_List$unmodifiable(allowed, P.String);
- option = new G.Option($name, abbr, help, valueHelp, t3, null, defaultsTo, negatable, callback, type, splitCommas == null ? type === C.OptionType_qyr : splitCommas, hide);
- if ($name.length === 0)
- H.throwExpression(P.ArgumentError$("Name cannot be empty."));
- else if (C.JSString_methods.startsWith$1($name, "-"))
- H.throwExpression(P.ArgumentError$("Name " + $name + ' cannot start with "-".'));
- t3 = $.$get$Option__invalidChars()._nativeRegExp;
- if (t3.test($name))
- H.throwExpression(P.ArgumentError$('Name "' + $name + '" contains invalid characters.'));
- if (t2) {
- if (abbr.length !== 1)
- H.throwExpression(P.ArgumentError$("Abbreviation must be null or have length 1."));
- else if (abbr === "-")
- H.throwExpression(P.ArgumentError$('Abbreviation cannot be "-".'));
- if (t3.test(abbr))
- H.throwExpression(P.ArgumentError$("Abbreviation is an invalid character."));
- }
- t1.$indexSet(0, $name, option);
- this._optionsAndSeparators.push(option);
- },
- _addOption$11$hide$splitCommas: function($name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo, callback, type, hide, splitCommas) {
- return this._addOption$12$hide$negatable$splitCommas($name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo, callback, type, hide, false, splitCommas);
- },
- _addOption$11$hide$negatable: function($name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo, callback, type, hide, negatable) {
- return this._addOption$12$hide$negatable$splitCommas($name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo, callback, type, hide, negatable, null);
- },
- findByAbbreviation$1: function(abbr) {
- return this.options._collection$_map.get$values().firstWhere$2$orElse(0, new N.ArgParser_findByAbbreviation_closure(abbr), new N.ArgParser_findByAbbreviation_closure0());
- }
- };
- N.ArgParser_findByAbbreviation_closure.prototype = {
- call$1: function(option) {
- return option.abbr == this.abbr;
- }
- };
- N.ArgParser_findByAbbreviation_closure0.prototype = {
- call$0: function() {
- return;
- }
- };
- Z.ArgParserException.prototype = {};
- V.ArgResults.prototype = {
- $index: function(_, $name) {
- var t1 = this._parser.options._collection$_map;
- if (!t1.containsKey$1($name))
- throw H.wrapException(P.ArgumentError$('Could not find an option named "' + $name + '".'));
- return t1.$index(0, $name).getOrDefault$1(this._parsed.$index(0, $name));
- },
- wasParsed$1: function($name) {
- if (this._parser.options._collection$_map.$index(0, $name) == null)
- throw H.wrapException(P.ArgumentError$('Could not find an option named "' + H.S($name) + '".'));
- return this._parsed.containsKey$1($name);
- }
- };
- G.Option.prototype = {
- getOrDefault$1: function(value) {
- var t1;
- if (value != null)
- return value;
- if (this.type === C.OptionType_qyr) {
- t1 = this.defaultsTo;
- return t1 == null ? H.setRuntimeTypeInfo([], [P.String]) : t1;
- }
- return this.defaultsTo;
- }
- };
- G.OptionType.prototype = {};
- G.Parser0.prototype = {
- parse$0: function() {
- var commandName, commandParser, error, t3, t4, t5, t6, t7, command, exception, _this = this,
- t1 = _this.args,
- t2 = H.setRuntimeTypeInfo(t1.slice(0), [H.getTypeArgumentByIndex(t1, 0)]),
- commandResults = null;
- for (t3 = _this.rest, t4 = _this.grammar, t5 = !t4.allowTrailingOptions, t6 = t4.commands._collection$_map; t1.length !== 0;) {
- t7 = t1[0];
- if (t7 === "--") {
- C.JSArray_methods.removeAt$1(t1, 0);
- break;
- }
- command = t6.$index(0, t7);
- if (command != null) {
- if (t3.length !== 0)
- H.throwExpression(Z.ArgParserException$("Cannot specify arguments before a command.", null));
- commandName = C.JSArray_methods.removeAt$1(t1, 0);
- t5 = P.String;
- t6 = [t5];
- t7 = H.setRuntimeTypeInfo([], t6);
- C.JSArray_methods.addAll$1(t7, t3);
- commandParser = new G.Parser0(commandName, _this, command, t1, t7, P.LinkedHashMap_LinkedHashMap$_empty(t5, null));
- try {
- commandResults = commandParser.parse$0();
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (t1 instanceof Z.ArgParserException) {
- error = t1;
- if (commandName == null)
- throw exception;
- t1 = error.message;
- t6 = H.setRuntimeTypeInfo([commandName], t6);
- C.JSArray_methods.addAll$1(t6, error.commands);
- throw H.wrapException(Z.ArgParserException$(t1, t6));
- } else
- throw exception;
- }
- C.JSArray_methods.set$length(t3, 0);
- break;
- }
- if (_this.parseSoloOption$0())
- continue;
- if (_this.parseAbbreviation$1(_this))
- continue;
- if (_this.parseLongOption$0())
- continue;
- if (t5)
- break;
- t3.push(C.JSArray_methods.removeAt$1(t1, 0));
- }
- t4.options._collection$_map.forEach$1(0, new G.Parser_parse_closure(_this));
- C.JSArray_methods.addAll$1(t3, t1);
- C.JSArray_methods.set$length(t1, 0);
- return V.ArgResults$_(t4, _this.results, _this.commandName, commandResults, t3, t2);
- },
- readNextArgAsValue$1: function(option) {
- var t1 = this.args,
- t2 = t1.length,
- t3 = 'Missing argument for "' + option.name + '".';
- if (t2 === 0)
- H.throwExpression(Z.ArgParserException$(t3, null));
- this.setOption$3(this.results, option, t1[0]);
- C.JSArray_methods.removeAt$1(t1, 0);
- },
- parseSoloOption$0: function() {
- var t2, option, _this = this,
- t1 = _this.args,
- soloOpt = $.$get$_soloOpt().firstMatch$1(t1[0]);
- if (soloOpt == null)
- return false;
- t2 = soloOpt._match;
- option = _this.grammar.findByAbbreviation$1(t2[1]);
- if (option == null) {
- t1 = _this.parent;
- t2 = 'Could not find an option or flag "-' + H.S(t2[1]) + '".';
- if (t1 == null)
- H.throwExpression(Z.ArgParserException$(t2, null));
- return t1.parseSoloOption$0();
- }
- C.JSArray_methods.removeAt$1(t1, 0);
- if (option.type === C.OptionType_nMZ)
- _this.results.$indexSet(0, option.name, true);
- else
- _this.readNextArgAsValue$1(option);
- return true;
- },
- parseAbbreviation$1: function(innermostCommand) {
- var t2, c, first, t3, t4, i, i0, _this = this,
- t1 = _this.args,
- abbrOpt = $.$get$_abbrOpt().firstMatch$1(t1[0]);
- if (abbrOpt == null)
- return false;
- t2 = abbrOpt._match;
- c = J.substring$2$s(t2[1], 0, 1);
- first = _this.grammar.findByAbbreviation$1(c);
- if (first == null) {
- t1 = _this.parent;
- t2 = 'Could not find an option with short name "-' + c + '".';
- if (t1 == null)
- H.throwExpression(Z.ArgParserException$(t2, null));
- return t1.parseAbbreviation$1(innermostCommand);
- } else if (first.type !== C.OptionType_nMZ)
- _this.setOption$3(_this.results, first, J.substring$1$s(t2[1], 1) + H.S(t2[2]));
- else {
- t3 = t2[2];
- t4 = 'Option "-' + c + '" is a flag and cannot handle value "' + J.substring$1$s(t2[1], 1) + H.S(t3) + '".';
- if (t3 !== "")
- H.throwExpression(Z.ArgParserException$(t4, null));
- for (i = 0; t3 = t2[1], i < t3.length; i = i0) {
- i0 = i + 1;
- innermostCommand.parseShortFlag$1(J.substring$2$s(t3, i, i0));
- }
- }
- C.JSArray_methods.removeAt$1(t1, 0);
- return true;
- },
- parseShortFlag$1: function(c) {
- var t1, t2,
- option = this.grammar.findByAbbreviation$1(c);
- if (option == null) {
- t1 = this.parent;
- t2 = 'Could not find an option with short name "-' + c + '".';
- if (t1 == null)
- H.throwExpression(Z.ArgParserException$(t2, null));
- t1.parseShortFlag$1(c);
- return;
- }
- t1 = option.type;
- t2 = 'Option "-' + c + '" must be a flag to be in a collapsed "-".';
- if (t1 !== C.OptionType_nMZ)
- H.throwExpression(Z.ArgParserException$(t2, null));
- this.results.$indexSet(0, option.name, true);
- },
- parseLongOption$0: function() {
- var t2, $name, t3, option, _this = this, _null = null,
- _s32_ = 'Could not find an option named "',
- t1 = _this.args,
- longOpt = $.$get$_longOpt().firstMatch$1(t1[0]);
- if (longOpt == null)
- return false;
- t2 = longOpt._match;
- $name = t2[1];
- t3 = _this.grammar.options._collection$_map;
- option = t3.$index(0, $name);
- if (option != null) {
- C.JSArray_methods.removeAt$1(t1, 0);
- if (option.type === C.OptionType_nMZ) {
- t1 = t2[3];
- t2 = 'Flag option "' + H.S($name) + '" should not be given a value.';
- if (t1 != null)
- H.throwExpression(Z.ArgParserException$(t2, _null));
- _this.results.$indexSet(0, option.name, true);
- } else {
- t1 = t2[3];
- if (t1 != null)
- _this.setOption$3(_this.results, option, t1);
- else
- _this.readNextArgAsValue$1(option);
- }
- } else if (J.getInterceptor$s($name).startsWith$1($name, "no-")) {
- $name = C.JSString_methods.substring$1($name, 3);
- option = t3.$index(0, $name);
- if (option == null) {
- t1 = _this.parent;
- t2 = _s32_ + $name + '".';
- if (t1 == null)
- H.throwExpression(Z.ArgParserException$(t2, _null));
- return t1.parseLongOption$0();
- }
- C.JSArray_methods.removeAt$1(t1, 0);
- t1 = option.type;
- t2 = 'Cannot negate non-flag option "' + $name + '".';
- if (t1 !== C.OptionType_nMZ)
- H.throwExpression(Z.ArgParserException$(t2, _null));
- t1 = option.negatable;
- t2 = 'Cannot negate option "' + $name + '".';
- if (!t1)
- H.throwExpression(Z.ArgParserException$(t2, _null));
- _this.results.$indexSet(0, option.name, false);
- } else {
- t1 = _this.parent;
- t2 = _s32_ + $name + '".';
- if (t1 == null)
- H.throwExpression(Z.ArgParserException$(t2, _null));
- return t1.parseLongOption$0();
- }
- return true;
- },
- setOption$3: function(results, option, value) {
- var list, t1, t2, t3, _i, element;
- if (option.type !== C.OptionType_qyr) {
- this._validateAllowed$2(option, value);
- results.$indexSet(0, option.name, value);
- return;
- }
- list = results.putIfAbsent$2(option.name, new G.Parser_setOption_closure());
- if (option.splitCommas)
- for (t1 = value.split(","), t2 = t1.length, t3 = J.getInterceptor$ax(list), _i = 0; _i < t2; ++_i) {
- element = t1[_i];
- this._validateAllowed$2(option, element);
- t3.add$1(list, element);
- }
- else {
- this._validateAllowed$2(option, value);
- J.add$1$ax(list, value);
- }
- },
- _validateAllowed$2: function(option, value) {
- var t2,
- t1 = option.allowed;
- if (t1 == null)
- return;
- t1 = C.JSArray_methods.contains$1(t1, value);
- t2 = '"' + H.S(value) + '" is not an allowed value for option "' + option.name + '".';
- if (!t1)
- H.throwExpression(Z.ArgParserException$(t2, null));
- }
- };
- G.Parser_parse_closure.prototype = {
- call$2: function($name, option) {
- var t1 = option.callback;
- if (t1 == null)
- return;
- t1.call$1(option.getOrDefault$1(this.$this.results.$index(0, $name)));
- }
- };
- G.Parser_setOption_closure.prototype = {
- call$0: function() {
- return H.setRuntimeTypeInfo([], [P.String]);
- }
- };
- G.Usage.prototype = {
- generate$0: function() {
- var t1, t2, _i, optionOrSeparator, t3, t4, allowedNames, t5, t6, _i0, $name, isDefault, t7, _this = this;
- _this.buffer = new P.StringBuffer("");
- _this.calculateColumnWidths$0();
- for (t1 = _this.optionsAndSeparators, t2 = t1.length, _i = 0; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- optionOrSeparator = t1[_i];
- if (typeof optionOrSeparator === "string") {
- t3 = _this.buffer;
- t4 = t3._contents;
- t3._contents = (t4.length !== 0 ? t3._contents = t4 + "\n\n" : t4) + optionOrSeparator;
- _this.newlinesNeeded = 1;
- continue;
- }
- H.interceptedTypeCast(optionOrSeparator, "$isOption");
- if (optionOrSeparator.hide)
- continue;
- t3 = optionOrSeparator.abbr;
- _this.write$2(0, 0, t3 == null ? "" : "-" + t3 + ", ");
- _this.write$2(0, 1, _this.getLongOption$1(optionOrSeparator));
- t3 = optionOrSeparator.help;
- if (t3 != null)
- _this.write$2(0, 2, t3);
- t3 = optionOrSeparator.allowedHelp;
- if (t3 != null) {
- allowedNames = J.toList$1$growable$ax(t3.get$keys(), false);
- if (!!allowedNames.immutable$list)
- H.throwExpression(P.UnsupportedError$("sort"));
- t4 = allowedNames.length - 1;
- if (t4 - 0 <= 32)
- H.Sort__insertionSort(allowedNames, 0, t4, J._interceptors_JSArray__compareAny$closure());
- else
- H.Sort__dualPivotQuicksort(allowedNames, 0, t4, J._interceptors_JSArray__compareAny$closure());
- ++_this.newlinesNeeded;
- _this.numHelpLines = _this.currentColumn = 0;
- for (t4 = allowedNames.length, t5 = optionOrSeparator.defaultsTo, t6 = !!J.getInterceptor$(t5).$isList, _i0 = 0; _i0 < allowedNames.length; allowedNames.length === t4 || (0, H.throwConcurrentModificationError)(allowedNames), ++_i0) {
- $name = allowedNames[_i0];
- isDefault = t6 ? C.JSArray_methods.contains$1(t5, $name) : t5 == null ? $name == null : t5 === $name;
- t7 = " [" + H.S($name) + "]";
- _this.write$2(0, 1, t7 + (isDefault ? " (default)" : ""));
- _this.write$2(0, 2, t3.$index(0, $name));
- }
- ++_this.newlinesNeeded;
- _this.numHelpLines = _this.currentColumn = 0;
- } else if (optionOrSeparator.allowed != null)
- _this.write$2(0, 2, _this.buildAllowedList$1(optionOrSeparator));
- else {
- t3 = optionOrSeparator.type;
- if (t3 === C.OptionType_nMZ) {
- if (optionOrSeparator.defaultsTo === true)
- _this.write$2(0, 2, "(defaults to on)");
- } else if (t3 === C.OptionType_qyr) {
- t3 = optionOrSeparator.defaultsTo;
- if (t3 != null && J.get$isNotEmpty$asx(t3))
- _this.write$2(0, 2, "(defaults to " + J.map$1$ax(t3, new G.Usage_generate_closure()).join$1(0, ", ") + ")");
- } else {
- t3 = optionOrSeparator.defaultsTo;
- if (t3 != null)
- _this.write$2(0, 2, '(defaults to "' + H.S(t3) + '")');
- }
- }
- if (_this.numHelpLines > 1) {
- ++_this.newlinesNeeded;
- _this.numHelpLines = _this.currentColumn = 0;
- }
- }
- return J.toString$0$(_this.buffer);
- },
- getLongOption$1: function(option) {
- var t1 = option.name,
- result = option.negatable ? "--[no-]" + t1 : "--" + t1;
- t1 = option.valueHelp;
- return t1 != null ? result + ("=<" + t1 + ">") : result;
- },
- calculateColumnWidths$0: function() {
- var t1, t2, abbr, title, _i, option, t3, t4, t5, allowed, isDefault, t6;
- for (t1 = this.optionsAndSeparators, t2 = t1.length, abbr = 0, title = 0, _i = 0; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- option = t1[_i];
- if (!(option instanceof G.Option))
- continue;
- if (option.hide)
- continue;
- t3 = option.abbr;
- abbr = Math.max(abbr, (t3 == null ? "" : "-" + t3 + ", ").length);
- title = Math.max(title, this.getLongOption$1(option).length);
- t3 = option.allowedHelp;
- if (t3 != null)
- for (t3 = J.get$iterator$ax(t3.get$keys()), t4 = option.defaultsTo, t5 = !!J.getInterceptor$(t4).$isList; t3.moveNext$0();) {
- allowed = t3.get$current(t3);
- isDefault = t5 ? C.JSArray_methods.contains$1(t4, allowed) : t4 == null ? allowed == null : t4 === allowed;
- t6 = " [" + H.S(allowed) + "]";
- title = Math.max(title, (t6 + (isDefault ? " (default)" : "")).length);
- }
- }
- this.columnWidths = H.setRuntimeTypeInfo([abbr, title + 4], [P.int]);
- },
- write$2: function(_, column, text) {
- var t1, _i,
- lines = H.setRuntimeTypeInfo(text.split("\n"), [P.String]);
- this.columnWidths.length;
- while (true) {
- if (!(lines.length !== 0 && J.trim$0$s(lines[0]) === ""))
- break;
- if (!!lines.fixed$length)
- H.throwExpression(P.UnsupportedError$("removeRange"));
- P.RangeError_checkValidRange(0, 1, lines.length);
- lines.splice(0, 1);
- }
- while (true) {
- t1 = lines.length;
- if (!(t1 !== 0 && J.trim$0$s(lines[t1 - 1]) === ""))
- break;
- lines.pop();
- }
- for (t1 = lines.length, _i = 0; _i < lines.length; lines.length === t1 || (0, H.throwConcurrentModificationError)(lines), ++_i)
- this.writeLine$2(column, lines[_i]);
- },
- writeLine$2: function(column, text) {
- var t1, t2, _this = this;
- for (; t1 = _this.newlinesNeeded, t1 > 0;) {
- _this.buffer._contents += "\n";
- _this.newlinesNeeded = t1 - 1;
- }
- for (; t1 = _this.currentColumn, t1 !== column;) {
- t2 = _this.buffer;
- if (t1 < 2)
- t2._contents += C.JSString_methods.$mul(" ", _this.columnWidths[t1]);
- else
- t2._contents += "\n";
- _this.currentColumn = (_this.currentColumn + 1) % 3;
- }
- t1 = _this.columnWidths;
- t1.length;
- t2 = _this.buffer;
- if (column < 2)
- t2._contents += J.padRight$1$s(text, t1[column]);
- else {
- t2.toString;
- t2._contents += H.S(text);
- }
- _this.currentColumn = (_this.currentColumn + 1) % 3;
- t1 = column === 2;
- if (t1)
- ++_this.newlinesNeeded;
- if (t1)
- ++_this.numHelpLines;
- else
- _this.numHelpLines = 0;
- },
- buildAllowedList$1: function(option) {
- var t2, first, _i, t3, allowed,
- t1 = option.defaultsTo,
- isDefault = !!J.getInterceptor$(t1).$isList ? C.JSArray_methods.get$contains(t1) : new G.Usage_buildAllowedList_closure(option);
- for (t1 = option.allowed, t2 = t1.length, first = true, _i = 0, t3 = "["; _i < t2; ++_i, first = false) {
- allowed = t1[_i];
- if (!first)
- t3 += ", ";
- t3 += H.S(allowed);
- if (isDefault.call$1(allowed))
- t3 += " (default)";
- }
- t1 = t3 + "]";
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- }
- };
- G.Usage_generate_closure.prototype = {
- call$1: function(value) {
- return '"' + H.S(value) + '"';
- },
- $signature: 38
- };
- G.Usage_buildAllowedList_closure.prototype = {
- call$1: function(value) {
- var t1 = this.option.defaultsTo;
- return value == null ? t1 == null : value === t1;
- },
- $signature: 21
- };
- V.ErrorResult.prototype = {
- complete$1: function(completer) {
- completer.completeError$2(this.error, this.stackTrace);
- },
- get$hashCode: function(_) {
- return (J.get$hashCode$(this.error) ^ J.get$hashCode$(this.stackTrace) ^ 492929599) >>> 0;
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof V.ErrorResult && J.$eq$(this.error, other.error) && this.stackTrace == other.stackTrace;
- },
- $isResult: 1,
- $asResult: function() {
- return [P.Null];
- }
- };
- E.Result.prototype = {};
- F.ValueResult.prototype = {
- complete$1: function(completer) {
- completer.complete$1(this.value);
- },
- get$hashCode: function(_) {
- return (J.get$hashCode$(this.value) ^ 842997089) >>> 0;
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof F.ValueResult && J.$eq$(this.value, other.value);
- },
- $isResult: 1
- };
- Y.StreamCompleter.prototype = {
- setSourceStream$1: function(sourceStream) {
- var t1 = this._stream_completer$_stream;
- if (t1._sourceStream != null)
- throw H.wrapException(P.StateError$("Source stream already set"));
- t1._sourceStream = sourceStream;
- if (t1._stream_completer$_controller != null)
- t1._linkStreamToController$0();
- },
- setError$2: function(error, stackTrace) {
- var t1 = H.getTypeArgumentByIndex(this, 0);
- this.setSourceStream$1(P.Stream_Stream$fromFuture(P.Future_Future$error(error, stackTrace, t1), t1));
- },
- setError$1: function(error) {
- return this.setError$2(error, null);
- }
- };
- Y._CompleterStream.prototype = {
- listen$4$cancelOnError$onDone$onError: function(onData, cancelOnError, onDone, onError) {
- var t1, _this = this, _null = null;
- if (_this._stream_completer$_controller == null) {
- t1 = _this._sourceStream;
- if (t1 != null && !t1.get$isBroadcast())
- return _this._sourceStream.listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError);
- _this._stream_completer$_controller = P.StreamController_StreamController(_null, _null, _null, _null, true, H.getTypeArgumentByIndex(_this, 0));
- if (_this._sourceStream != null)
- _this._linkStreamToController$0();
- }
- t1 = _this._stream_completer$_controller;
- t1.toString;
- return new P._ControllerStream(t1, [H.getTypeArgumentByIndex(t1, 0)]).listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError);
- },
- listen$3$onDone$onError: function(onData, onDone, onError) {
- return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError);
- },
- listen$1: function(onData) {
- return this.listen$4$cancelOnError$onDone$onError(onData, null, null, null);
- },
- _linkStreamToController$0: function() {
- var t1 = this._stream_completer$_controller.addStream$2$cancelOnError(this._sourceStream, false),
- t2 = this._stream_completer$_controller;
- t1.whenComplete$1(t2.get$close(t2));
- }
- };
- L.StreamGroup.prototype = {
- add$1: function(_, stream) {
- var t1, _this = this;
- if (_this._closed)
- throw H.wrapException(P.StateError$("Can't add a Stream to a closed StreamGroup."));
- t1 = _this._stream_group$_state;
- if (t1 === C._StreamGroupState_dormant)
- _this._subscriptions.putIfAbsent$2(stream, new L.StreamGroup_add_closure());
- else if (t1 === C._StreamGroupState_canceled)
- return stream.listen$1(null).cancel$0();
- else
- _this._subscriptions.putIfAbsent$2(stream, new L.StreamGroup_add_closure0(_this, stream));
- return;
- },
- remove$1: function(_, stream) {
- var t1 = this._subscriptions,
- subscription = t1.remove$1(0, stream),
- future = subscription == null ? null : subscription.cancel$0();
- if (this._closed && t1.get$isEmpty(t1))
- this._controller.close$0(0);
- return future;
- },
- _onListen$0: function() {
- this._stream_group$_state = C._StreamGroupState_listening;
- this._subscriptions.forEach$1(0, new L.StreamGroup__onListen_closure(this));
- },
- _onPause$0: function() {
- this._stream_group$_state = C._StreamGroupState_paused;
- for (var t1 = this._subscriptions.get$values(), t1 = t1.get$iterator(t1); t1.moveNext$0();)
- t1.get$current(t1).pause$0(0);
- },
- _onResume$0: function() {
- this._stream_group$_state = C._StreamGroupState_listening;
- for (var t1 = this._subscriptions.get$values(), t1 = t1.get$iterator(t1); t1.moveNext$0();)
- t1.get$current(t1).resume$0();
- },
- _onCancel$0: function() {
- var t1, t2, t3, futures;
- this._stream_group$_state = C._StreamGroupState_canceled;
- t1 = this._subscriptions;
- t2 = t1.get$values();
- t2 = H.MappedIterable_MappedIterable(t2, new L.StreamGroup__onCancel_closure(), H.getRuntimeTypeArgument(t2, "Iterable", 0), [P.Future,,]);
- t3 = H.getRuntimeTypeArgument(t2, "Iterable", 0);
- futures = P.List_List$from(new H.WhereIterable(t2, new L.StreamGroup__onCancel_closure0(), [t3]), true, t3);
- t1.clear$0(0);
- return futures.length === 0 ? null : P.Future_wait(futures, null);
- },
- _listenToStream$1: function(stream) {
- var t1 = this._controller,
- subscription = stream.listen$3$onDone$onError(t1.get$add(t1), new L.StreamGroup__listenToStream_closure(this, stream), t1.get$addError());
- if (this._stream_group$_state === C._StreamGroupState_paused)
- subscription.pause$0(0);
- return subscription;
- }
- };
- L.StreamGroup_add_closure.prototype = {
- call$0: function() {
- return;
- }
- };
- L.StreamGroup_add_closure0.prototype = {
- call$0: function() {
- return this.$this._listenToStream$1(this.stream);
- }
- };
- L.StreamGroup__onListen_closure.prototype = {
- call$2: function(stream, subscription) {
- var t1;
- if (subscription != null)
- return;
- t1 = this.$this;
- t1._subscriptions.$indexSet(0, stream, t1._listenToStream$1(stream));
- }
- };
- L.StreamGroup__onCancel_closure.prototype = {
- call$1: function(subscription) {
- return subscription.cancel$0();
- }
- };
- L.StreamGroup__onCancel_closure0.prototype = {
- call$1: function(future) {
- return future != null;
- }
- };
- L.StreamGroup__listenToStream_closure.prototype = {
- call$0: function() {
- return this.$this.remove$1(0, this.stream);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- L._StreamGroupState.prototype = {
- toString$0: function(_) {
- return this.name;
- }
- };
- G.StreamQueue.prototype = {
- get$next: function() {
- var t1 = this.$ti,
- t2 = new P._Future($.Zone__current, t1);
- this._addRequest$1(new G._NextRequest(new P._AsyncCompleter(t2, t1), t1));
- return t2;
- },
- _updateRequests$0: function() {
- var t1, t2, t3, _this = this;
- for (t1 = _this._requestQueue, t2 = _this._eventQueue; !t1.get$isEmpty(t1);) {
- t3 = t1._collection$_head;
- if (t3 === t1._collection$_tail)
- H.throwExpression(H.IterableElementError_noElement());
- if (t1._collection$_table[t3].update$2(t2, _this._isDone))
- t1.removeFirst$0();
- else
- return;
- }
- if (!_this._isDone)
- _this._stream_queue$_subscription.pause$0(0);
- },
- _ensureListening$0: function() {
- var t1, _this = this;
- if (_this._isDone)
- return;
- t1 = _this._stream_queue$_subscription;
- if (t1 == null)
- _this._stream_queue$_subscription = _this._stream_queue$_source.listen$3$onDone$onError(new G.StreamQueue__ensureListening_closure(_this), new G.StreamQueue__ensureListening_closure0(_this), new G.StreamQueue__ensureListening_closure1(_this));
- else
- t1.resume$0();
- },
- _addResult$1: function(result) {
- ++this._eventsReceived;
- this._eventQueue._queue_list$_add$1(result);
- this._updateRequests$0();
- },
- _addRequest$1: function(request) {
- var _this = this,
- t1 = _this._requestQueue;
- if (t1._collection$_head === t1._collection$_tail) {
- if (request.update$2(_this._eventQueue, _this._isDone))
- return;
- _this._ensureListening$0();
- }
- t1._collection$_add$1(request);
- }
- };
- G.StreamQueue__ensureListening_closure.prototype = {
- call$1: function(data) {
- var t1 = this.$this;
- t1._addResult$1(new F.ValueResult(data, [H.getTypeArgumentByIndex(t1, 0)]));
- },
- $signature: function() {
- return {func: 1, ret: P.Null, args: [H.getTypeArgumentByIndex(this.$this, 0)]};
- }
- };
- G.StreamQueue__ensureListening_closure1.prototype = {
- call$2: function(error, stackTrace) {
- this.$this._addResult$1(new V.ErrorResult(error, stackTrace));
- },
- "call*": "call$2",
- $requiredArgCount: 2,
- $signature: 15
- };
- G.StreamQueue__ensureListening_closure0.prototype = {
- call$0: function() {
- var t1 = this.$this;
- t1._stream_queue$_subscription = null;
- t1._isDone = true;
- t1._updateRequests$0();
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- G._EventRequest.prototype = {};
- G._NextRequest.prototype = {
- update$2: function(events, isDone) {
- if (!events.get$isEmpty(events)) {
- events.removeFirst$0().complete$1(this._completer);
- return true;
- }
- if (isDone) {
- this._completer.completeError$2(new P.StateError("No elements"), P.StackTrace_current());
- return true;
- }
- return false;
- },
- $is_EventRequest: 1
- };
- Q.Repl.prototype = {};
- Q.closure142.prototype = {
- call$1: function(text) {
- return true;
- }
- };
- B.ReplAdapter.prototype = {
- runAsync$0: function() {
- var $async$runAsync$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- switch ($async$errorCode) {
- case 2:
- $async$next = $async$nextWhenCanceled;
- $async$goto = $async$next.pop();
- break;
- case 1:
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = J.get$isTTY$x(self.process.stdin);
- output = (t1 == null ? false : t1) ? self.process.stdout : null;
- t1 = $async$self.repl;
- $prompt = t1.prompt;
- $async$self.rl = J.createInterface$1$x($.$get$readline(), {input: self.process.stdin, output: output, prompt: $prompt});
- t2 = P.String;
- controller = P.StreamController_StreamController(null, null, null, null, false, t2);
- queue = new G.StreamQueue(new P._ControllerStream(controller, [H.getTypeArgumentByIndex(controller, 0)]), Q.QueueList$(null, [E.Result, t2]), P.ListQueue$([G._EventRequest,,]), [t2]);
- J.on$2$x($async$self.rl, "line", P.allowInterop(new B.ReplAdapter_runAsync_closure(controller)));
- prompt0 = t1.continuation, prompt1 = $prompt, statement = "";
- case 3:
- // for condition
- // trivial condition
- t2 = J.get$isTTY$x(self.process.stdin);
- if (t2 == null ? false : t2)
- J.write$1$x(self.process.stdout, prompt1);
- $async$goto = 5;
- return P._asyncStarHelper(queue.get$next(), $async$runAsync$0, $async$controller);
- case 5:
- // returning from await.
- line = $async$result;
- t2 = J.get$isTTY$x(self.process.stdin);
- if (!(t2 == null ? false : t2)) {
- line0 = prompt1 + H.S(line);
- t2 = $.printToZone;
- if (t2 == null)
- H.printString(line0);
- else
- t2.call$1(line0);
- }
- statement = C.JSString_methods.$add(statement, line);
- $async$goto = t1.validator.call$1(statement) ? 6 : 8;
- break;
- case 6:
- // then
- $async$goto = 9;
- $async$nextWhenCanceled = [1];
- return P._asyncStarHelper(P._IterationMarker_yieldSingle(statement), $async$runAsync$0, $async$controller);
- case 9:
- // after yield
- J.setPrompt$1$x($async$self.rl, $prompt);
- prompt1 = $prompt;
- statement = "";
- // goto join
- $async$goto = 7;
- break;
- case 8:
- // else
- statement += "\n";
- J.setPrompt$1$x($async$self.rl, prompt0);
- prompt1 = prompt0;
- case 7:
- // join
- // goto for condition
- $async$goto = 3;
- break;
- case 4:
- // after for
- case 1:
- // return
- return P._asyncStarHelper(null, 0, $async$controller);
- case 2:
- // rethrow
- return P._asyncStarHelper($async$currentError, 1, $async$controller);
- }
- });
- var $async$goto = 0,
- $async$controller = P._makeAsyncStarStreamController($async$runAsync$0, P.String),
- $async$nextWhenCanceled, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, $prompt, t2, controller, queue, prompt0, prompt1, statement, line, line0, t1, output;
- return P._streamOfController($async$controller);
- }
- };
- B.ReplAdapter_runAsync_closure.prototype = {
- call$1: function(value) {
- this.controller.add$1(0, value);
- },
- call$0: function() {
- return this.call$1(null);
- },
- "call*": "call$1",
- $requiredArgCount: 0,
- $defaultValues: function() {
- return [null];
- },
- $signature: 22
- };
- B.Stdin.prototype = {};
- B.Stdout.prototype = {};
- B.ReadlineModule.prototype = {};
- B.ReadlineOptions.prototype = {};
- B.ReadlineInterface.prototype = {};
- O.EmptyUnmodifiableSet.prototype = {
- get$iterator: function(_) {
- return C.C_EmptyIterator;
- },
- get$length: function(_) {
- return 0;
- },
- cast$1$0: function(_, $T) {
- return new O.EmptyUnmodifiableSet([$T]);
- },
- contains$1: function(_, element) {
- return false;
- },
- toSet$0: function(_) {
- return P.LinkedHashSet_LinkedHashSet(H.getTypeArgumentByIndex(this, 0));
- },
- add$1: function(_, value) {
- return O.EmptyUnmodifiableSet__throw();
- },
- addAll$1: function(_, elements) {
- return O.EmptyUnmodifiableSet__throw();
- },
- $isEfficientLengthIterable: 1,
- $isSet: 1
- };
- U.DefaultEquality.prototype = {};
- U.ListEquality.prototype = {
- equals$2: function(list1, list2) {
- var t1, $length, t2, i;
- if (list1 == null ? list2 == null : list1 === list2)
- return true;
- if (list1 == null || list2 == null)
- return false;
- t1 = J.getInterceptor$asx(list1);
- $length = t1.get$length(list1);
- t2 = J.getInterceptor$asx(list2);
- if ($length !== t2.get$length(list2))
- return false;
- for (i = 0; i < $length; ++i)
- if (!J.$eq$(t1.$index(list1, i), t2.$index(list2, i)))
- return false;
- return true;
- },
- hash$1: function(list) {
- var t1, hash, i;
- for (t1 = list.length, hash = 0, i = 0; i < t1; ++i) {
- hash = hash + J.get$hashCode$(list[i]) & 2147483647;
- hash = hash + (hash << 10 >>> 0) & 2147483647;
- hash ^= hash >>> 6;
- }
- hash = hash + (hash << 3 >>> 0) & 2147483647;
- hash ^= hash >>> 11;
- return hash + (hash << 15 >>> 0) & 2147483647;
- }
- };
- U._MapEntry.prototype = {
- get$hashCode: function(_) {
- return 3 * J.get$hashCode$(this.key) + 7 * J.get$hashCode$(this.value) & 2147483647;
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof U._MapEntry && J.$eq$(this.key, other.key) && J.$eq$(this.value, other.value);
- }
- };
- U.MapEquality.prototype = {
- equals$2: function(map1, map2) {
- var equalElementCounts, t1, key, entry, count;
- if (map1 === map2)
- return true;
- if (map1.get$length(map1) !== map2.get$length(map2))
- return false;
- equalElementCounts = P.HashMap_HashMap(U._MapEntry, P.int);
- for (t1 = J.get$iterator$ax(map1.get$keys()); t1.moveNext$0();) {
- key = t1.get$current(t1);
- entry = new U._MapEntry(this, key, map1.$index(0, key));
- count = equalElementCounts.$index(0, entry);
- equalElementCounts.$indexSet(0, entry, (count == null ? 0 : count) + 1);
- }
- for (t1 = J.get$iterator$ax(map2.get$keys()); t1.moveNext$0();) {
- key = t1.get$current(t1);
- entry = new U._MapEntry(this, key, map2.$index(0, key));
- count = equalElementCounts.$index(0, entry);
- if (count == null || count === 0)
- return false;
- equalElementCounts.$indexSet(0, entry, count - 1);
- }
- return true;
- },
- hash$1: function(map) {
- var t1, hash, key;
- for (t1 = J.get$iterator$ax(map.get$keys()), hash = 0; t1.moveNext$0();) {
- key = t1.get$current(t1);
- hash = hash + 3 * J.get$hashCode$(key) + 7 * J.get$hashCode$(map.$index(0, key)) & 2147483647;
- }
- hash = hash + (hash << 3 >>> 0) & 2147483647;
- hash ^= hash >>> 11;
- return hash + (hash << 15 >>> 0) & 2147483647;
- }
- };
- Y.mapMap_closure.prototype = {
- call$2: function(mapKey, _) {
- return H.subtypeOfRuntimeTypeCast(mapKey, this.K2);
- },
- $signature: function() {
- return {func: 1, ret: this.K2, args: [this.K1, this.V1]};
- }
- };
- Y.mapMap_closure0.prototype = {
- call$2: function(_, mapValue) {
- return H.subtypeOfRuntimeTypeCast(mapValue, this.V2);
- },
- $signature: function() {
- return {func: 1, ret: this.V2, args: [this.K1, this.V1]};
- }
- };
- Y.mapMap_closure1.prototype = {
- call$2: function(mapKey, mapValue) {
- var t1 = this._box_0;
- this.result.$indexSet(0, t1.key.call$2(mapKey, mapValue), t1.value.call$2(mapKey, mapValue));
- },
- $signature: function() {
- return {func: 1, ret: P.Null, args: [this.K1, this.V1]};
- }
- };
- Y.groupBy_closure.prototype = {
- call$0: function() {
- return H.setRuntimeTypeInfo([], [this.S]);
- }
- };
- Q.QueueList.prototype = {
- QueueList$1: function(initialCapacity, $E) {
- var t1;
- if (initialCapacity == null || initialCapacity < 8)
- initialCapacity = 8;
- else if ((initialCapacity & initialCapacity - 1) >>> 0 !== 0)
- initialCapacity = Q.QueueList__nextPowerOf2(initialCapacity);
- t1 = new Array(initialCapacity);
- t1.fixed$length = Array;
- this._table = H.setRuntimeTypeInfo(t1, [$E]);
- },
- add$1: function(_, element) {
- this._queue_list$_add$1(element);
- },
- addAll$1: function(_, iterable) {
- var addCount, $length, endSpace, preSpace, _this = this,
- t1 = J.getInterceptor$(iterable);
- if (!!t1.$isList) {
- addCount = t1.get$length(iterable);
- $length = _this.get$length(_this);
- t1 = $length + addCount;
- if (t1 >= J.get$length$asx(_this._table)) {
- _this._preGrow$1(t1);
- J.setRange$4$ax(_this._table, $length, t1, iterable, 0);
- _this.set$_tail(_this.get$_tail() + addCount);
- } else {
- endSpace = J.get$length$asx(_this._table) - _this.get$_tail();
- t1 = _this._table;
- if (addCount < endSpace) {
- J.setRange$4$ax(t1, _this.get$_tail(), _this.get$_tail() + addCount, iterable, 0);
- _this.set$_tail(_this.get$_tail() + addCount);
- } else {
- preSpace = addCount - endSpace;
- J.setRange$4$ax(t1, _this.get$_tail(), _this.get$_tail() + endSpace, iterable, 0);
- J.setRange$4$ax(_this._table, 0, preSpace, iterable, endSpace);
- _this.set$_tail(preSpace);
- }
- }
- } else
- for (t1 = t1.get$iterator(iterable); t1.moveNext$0();)
- _this._queue_list$_add$1(t1.get$current(t1));
- },
- cast$1$0: function(_, $T) {
- var t1 = new Q._CastQueueList(this, null, null, [H.getRuntimeTypeArgument(this, "QueueList", 0), $T]);
- t1._table = J.cast$1$0$ax(this._table, $T);
- return t1;
- },
- toString$0: function(_) {
- return P.IterableBase_iterableToFullString(this, "{", "}");
- },
- addFirst$1: function(element) {
- var _this = this;
- _this.set$_head((_this.get$_head() - 1 & J.get$length$asx(_this._table) - 1) >>> 0);
- J.$indexSet$ax(_this._table, _this.get$_head(), element);
- if (_this.get$_head() == _this.get$_tail())
- _this._grow$0();
- },
- removeFirst$0: function() {
- var result, _this = this;
- if (_this.get$_head() == _this.get$_tail())
- throw H.wrapException(P.StateError$("No element"));
- result = J.$index$asx(_this._table, _this.get$_head());
- J.$indexSet$ax(_this._table, _this.get$_head(), null);
- _this.set$_head((_this.get$_head() + 1 & J.get$length$asx(_this._table) - 1) >>> 0);
- return result;
- },
- get$length: function(_) {
- return (this.get$_tail() - this.get$_head() & J.get$length$asx(this._table) - 1) >>> 0;
- },
- set$length: function(_, value) {
- var delta, newTail, t1, t2, _this = this;
- if (value < 0)
- throw H.wrapException(P.RangeError$("Length " + value + " may not be negative."));
- delta = value - _this.get$length(_this);
- if (delta >= 0) {
- if (J.get$length$asx(_this._table) <= value)
- _this._preGrow$1(value);
- _this.set$_tail((_this.get$_tail() + delta & J.get$length$asx(_this._table) - 1) >>> 0);
- return;
- }
- newTail = _this.get$_tail() + delta;
- t1 = _this._table;
- if (newTail >= 0)
- J.fillRange$3$ax(t1, newTail, _this.get$_tail(), null);
- else {
- newTail += J.get$length$asx(t1);
- J.fillRange$3$ax(_this._table, 0, _this.get$_tail(), null);
- t1 = _this._table;
- t2 = J.getInterceptor$asx(t1);
- t2.fillRange$3(t1, newTail, t2.get$length(t1), null);
- }
- _this.set$_tail(newTail);
- },
- $index: function(_, index) {
- var _this = this;
- if (index < 0 || index >= _this.get$length(_this))
- throw H.wrapException(P.RangeError$("Index " + H.S(index) + " must be in the range [0.." + _this.get$length(_this) + ")."));
- return J.$index$asx(_this._table, (_this.get$_head() + index & J.get$length$asx(_this._table) - 1) >>> 0);
- },
- $indexSet: function(_, index, value) {
- var _this = this;
- if (index < 0 || index >= _this.get$length(_this))
- throw H.wrapException(P.RangeError$("Index " + H.S(index) + " must be in the range [0.." + _this.get$length(_this) + ")."));
- J.$indexSet$ax(_this._table, (_this.get$_head() + index & J.get$length$asx(_this._table) - 1) >>> 0, value);
- },
- _queue_list$_add$1: function(element) {
- var _this = this;
- J.$indexSet$ax(_this._table, _this.get$_tail(), element);
- _this.set$_tail((_this.get$_tail() + 1 & J.get$length$asx(_this._table) - 1) >>> 0);
- if (_this.get$_head() == _this.get$_tail())
- _this._grow$0();
- },
- _grow$0: function() {
- var newTable, split, _this = this,
- t1 = new Array(J.get$length$asx(_this._table) * 2);
- t1.fixed$length = Array;
- newTable = H.setRuntimeTypeInfo(t1, [H.getRuntimeTypeArgument(_this, "QueueList", 0)]);
- split = J.get$length$asx(_this._table) - _this.get$_head();
- C.JSArray_methods.setRange$4(newTable, 0, split, _this._table, _this.get$_head());
- C.JSArray_methods.setRange$4(newTable, split, split + _this.get$_head(), _this._table, 0);
- _this.set$_head(0);
- _this.set$_tail(J.get$length$asx(_this._table));
- _this._table = newTable;
- },
- _writeToList$1: function(target) {
- var $length, firstPartSize, _this = this;
- if (_this.get$_head() <= _this.get$_tail()) {
- $length = _this.get$_tail() - _this.get$_head();
- C.JSArray_methods.setRange$4(target, 0, $length, _this._table, _this.get$_head());
- return $length;
- } else {
- firstPartSize = J.get$length$asx(_this._table) - _this.get$_head();
- C.JSArray_methods.setRange$4(target, 0, firstPartSize, _this._table, _this.get$_head());
- C.JSArray_methods.setRange$4(target, firstPartSize, firstPartSize + _this.get$_tail(), _this._table, 0);
- return _this.get$_tail() + firstPartSize;
- }
- },
- _preGrow$1: function(newElementCount) {
- var newTable, _this = this,
- t1 = new Array(Q.QueueList__nextPowerOf2(newElementCount + C.JSInt_methods._shrOtherPositive$1(newElementCount, 1)));
- t1.fixed$length = Array;
- newTable = H.setRuntimeTypeInfo(t1, [H.getRuntimeTypeArgument(_this, "QueueList", 0)]);
- _this.set$_tail(_this._writeToList$1(newTable));
- _this._table = newTable;
- _this.set$_head(0);
- },
- $isEfficientLengthIterable: 1,
- $isQueue: 1,
- $isIterable: 1,
- $isList: 1,
- get$_head: function() {
- return this._head;
- },
- get$_tail: function() {
- return this._tail;
- },
- set$_head: function(val) {
- return this._head = val;
- },
- set$_tail: function(val) {
- return this._tail = val;
- }
- };
- Q._CastQueueList.prototype = {
- get$_head: function() {
- return this._queue_list$_delegate.get$_head();
- },
- set$_head: function(value) {
- this._queue_list$_delegate.set$_head(value);
- },
- get$_tail: function() {
- return this._queue_list$_delegate.get$_tail();
- },
- set$_tail: function(value) {
- this._queue_list$_delegate.set$_tail(value);
- },
- $asEfficientLengthIterable: function($S, $T) {
- return [$T];
- },
- $asListMixin: function($S, $T) {
- return [$T];
- },
- $asQueue: function($S, $T) {
- return [$T];
- },
- $asIterable: function($S, $T) {
- return [$T];
- },
- $asList: function($S, $T) {
- return [$T];
- },
- $asQueueList: function($S, $T) {
- return [$T];
- }
- };
- Q._QueueList_Object_ListMixin.prototype = {};
- L.UnmodifiableSetView.prototype = {};
- L.UnmodifiableSetMixin.prototype = {
- add$1: function(_, value) {
- return L.UnmodifiableSetMixin__throw();
- },
- addAll$1: function(_, elements) {
- return L.UnmodifiableSetMixin__throw();
- }
- };
- L._UnmodifiableSetView_DelegatingSet_UnmodifiableSetMixin.prototype = {};
- B.defaultCompare_closure.prototype = {
- call$2: function(value1, value2) {
- return J.compareTo$1$ns(H.numberOrStringSuperNativeTypeCast(value1, "$isComparable"), value2);
- },
- $signature: function() {
- var t1 = this.T;
- return {func: 1, ret: P.int, args: [t1, t1]};
- }
- };
- M._DelegatingIterableBase.prototype = {
- cast$1$0: function(_, $T) {
- return J.cast$1$0$ax(this.get$_base(), $T);
- },
- contains$1: function(_, element) {
- return J.contains$1$asx(this.get$_base(), element);
- },
- elementAt$1: function(_, index) {
- return J.elementAt$1$ax(this.get$_base(), index);
- },
- get$first: function(_) {
- return J.get$first$ax(this.get$_base());
- },
- get$isEmpty: function(_) {
- return J.get$isEmpty$asx(this.get$_base());
- },
- get$isNotEmpty: function(_) {
- return J.get$isNotEmpty$asx(this.get$_base());
- },
- get$iterator: function(_) {
- return J.get$iterator$ax(this.get$_base());
- },
- join$1: function(_, separator) {
- return J.join$1$ax(this.get$_base(), separator);
- },
- join$0: function($receiver) {
- return this.join$1($receiver, "");
- },
- get$last: function(_) {
- return J.get$last$ax(this.get$_base());
- },
- get$length: function(_) {
- return J.get$length$asx(this.get$_base());
- },
- map$1$1: function(_, f, $T) {
- return J.map$1$1$ax(this.get$_base(), f, $T);
- },
- get$single: function(_) {
- return J.get$single$ax(this.get$_base());
- },
- skip$1: function(_, n) {
- return J.skip$1$ax(this.get$_base(), n);
- },
- take$1: function(_, n) {
- return J.take$1$ax(this.get$_base(), n);
- },
- toList$1$growable: function(_, growable) {
- return J.toList$1$growable$ax(this.get$_base(), growable);
- },
- toList$0: function($receiver) {
- return this.toList$1$growable($receiver, true);
- },
- toSet$0: function(_) {
- return J.toSet$0$ax(this.get$_base());
- },
- where$1: function(_, test) {
- return J.where$1$ax(this.get$_base(), test);
- },
- toString$0: function(_) {
- return J.toString$0$(this.get$_base());
- },
- $isIterable: 1
- };
- M.DelegatingIterable.prototype = {
- get$_base: function() {
- return this._base;
- }
- };
- M.DelegatingSet.prototype = {
- add$1: function(_, value) {
- return this._base.add$1(0, value);
- },
- addAll$1: function(_, elements) {
- this._base.addAll$1(0, elements);
- },
- cast$1$0: function(_, $T) {
- var t1 = this._base;
- return P.Set_castFrom(t1, t1.get$_newSimilarSet(), H.getTypeArgumentByIndex(t1, 0), $T);
- },
- toSet$0: function(_) {
- return new M.DelegatingSet(this._base.toSet$0(0), this.$ti);
- },
- $isEfficientLengthIterable: 1,
- $isSet: 1
- };
- M.MapKeySet.prototype = {
- get$_base: function() {
- return this._baseMap.get$keys();
- },
- cast$1$0: function(_, $T) {
- var _this = this,
- t1 = [$T];
- if (H.checkSubtype(_this, "$isMapKeySet", t1, null))
- return H.subtypeCast(_this, "$isMapKeySet", t1, "$asMapKeySet");
- return P.Set_castFrom(_this, null, H.getTypeArgumentByIndex(_this, 0), $T);
- },
- contains$1: function(_, element) {
- return this._baseMap.containsKey$1(element);
- },
- get$isEmpty: function(_) {
- var t1 = this._baseMap;
- return t1.get$isEmpty(t1);
- },
- get$isNotEmpty: function(_) {
- var t1 = this._baseMap;
- return t1.get$isNotEmpty(t1);
- },
- get$length: function(_) {
- var t1 = this._baseMap;
- return t1.get$length(t1);
- },
- toString$0: function(_) {
- return "{" + J.join$1$ax(this._baseMap.get$keys(), ", ") + "}";
- },
- $isEfficientLengthIterable: 1,
- $isSet: 1
- };
- M._MapKeySet__DelegatingIterableBase_UnmodifiableSetMixin.prototype = {};
- M.Context.prototype = {
- absolute$7: function(part1, part2, part3, part4, part5, part6, part7) {
- var t1;
- M._validateArgList("absolute", H.setRuntimeTypeInfo([part1, part2, part3, part4, part5, part6, part7], [P.String]));
- t1 = this.style;
- t1 = t1.rootLength$1(part1) > 0 && !t1.isRootRelative$1(part1);
- if (t1)
- return part1;
- t1 = this._context$_current;
- return this.join$8(0, t1 != null ? t1 : D.current(), part1, part2, part3, part4, part5, part6, part7);
- },
- absolute$1: function(part1) {
- return this.absolute$7(part1, null, null, null, null, null, null);
- },
- dirname$1: function(path) {
- var t1, t2,
- parsed = X.ParsedPath_ParsedPath$parse(path, this.style);
- parsed.removeTrailingSeparators$0();
- t1 = parsed.parts;
- t2 = t1.length;
- if (t2 === 0) {
- t1 = parsed.root;
- return t1 == null ? "." : t1;
- }
- if (t2 === 1) {
- t1 = parsed.root;
- return t1 == null ? "." : t1;
- }
- C.JSArray_methods.removeLast$0(t1);
- C.JSArray_methods.removeLast$0(parsed.separators);
- parsed.removeTrailingSeparators$0();
- return parsed.toString$0(0);
- },
- join$8: function(_, part1, part2, part3, part4, part5, part6, part7, part8) {
- var parts = H.setRuntimeTypeInfo([part1, part2, part3, part4, part5, part6, part7, part8], [P.String]);
- M._validateArgList("join", parts);
- return this.joinAll$1(new H.WhereIterable(parts, new M.Context_join_closure(), [H.getTypeArgumentByIndex(parts, 0)]));
- },
- join$2: function($receiver, part1, part2) {
- return this.join$8($receiver, part1, part2, null, null, null, null, null, null);
- },
- joinAll$1: function(parts) {
- var t1, t2, t3, needsSeparator, isAbsoluteAndNotRootRelative, t4, t5, parsed, path;
- for (t1 = parts.get$iterator(parts), t2 = new H.WhereIterator(t1, new M.Context_joinAll_closure()), t3 = this.style, needsSeparator = false, isAbsoluteAndNotRootRelative = false, t4 = ""; t2.moveNext$0();) {
- t5 = t1.get$current(t1);
- if (t3.isRootRelative$1(t5) && isAbsoluteAndNotRootRelative) {
- parsed = X.ParsedPath_ParsedPath$parse(t5, t3);
- path = t4.charCodeAt(0) == 0 ? t4 : t4;
- t4 = C.JSString_methods.substring$2(path, 0, t3.rootLength$2$withDrive(path, true));
- parsed.root = t4;
- if (t3.needsSeparator$1(t4))
- parsed.separators[0] = t3.get$separator();
- t4 = parsed.toString$0(0);
- } else if (t3.rootLength$1(t5) > 0) {
- isAbsoluteAndNotRootRelative = !t3.isRootRelative$1(t5);
- t4 = H.S(t5);
- } else {
- if (!(t5.length !== 0 && t3.containsSeparator$1(t5[0])))
- if (needsSeparator)
- t4 += t3.get$separator();
- t4 += H.S(t5);
- }
- needsSeparator = t3.needsSeparator$1(t5);
- }
- return t4.charCodeAt(0) == 0 ? t4 : t4;
- },
- split$1: function(_, path) {
- var parsed = X.ParsedPath_ParsedPath$parse(path, this.style),
- t1 = parsed.parts,
- t2 = H.getTypeArgumentByIndex(t1, 0);
- t2 = P.List_List$from(new H.WhereIterable(t1, new M.Context_split_closure(), [t2]), true, t2);
- parsed.parts = t2;
- t1 = parsed.root;
- if (t1 != null)
- C.JSArray_methods.insert$2(t2, 0, t1);
- return parsed.parts;
- },
- canonicalize$1: function(path) {
- var t1, parsed;
- path = this.absolute$1(path);
- t1 = this.style;
- if (t1 != $.$get$Style_windows() && !this._needsNormalization$1(path))
- return path;
- parsed = X.ParsedPath_ParsedPath$parse(path, t1);
- parsed.normalize$1$canonicalize(true);
- return parsed.toString$0(0);
- },
- normalize$1: function(path) {
- var parsed;
- if (!this._needsNormalization$1(path))
- return path;
- parsed = X.ParsedPath_ParsedPath$parse(path, this.style);
- parsed.normalize$0();
- return parsed.toString$0(0);
- },
- _needsNormalization$1: function(path) {
- var t1, root, t2, i, start, previous, t3, previousPrevious, codeUnit, t4;
- path.toString;
- t1 = this.style;
- root = t1.rootLength$1(path);
- if (root !== 0) {
- if (t1 === $.$get$Style_windows())
- for (t2 = J.getInterceptor$s(path), i = 0; i < root; ++i)
- if (t2._codeUnitAt$1(path, i) === 47)
- return true;
- start = root;
- previous = 47;
- } else {
- start = 0;
- previous = null;
- }
- for (t2 = new H.CodeUnits(path).__internal$_string, t3 = t2.length, i = start, previousPrevious = null; i < t3; ++i, previousPrevious = previous, previous = codeUnit) {
- codeUnit = C.JSString_methods.codeUnitAt$1(t2, i);
- if (t1.isSeparator$1(codeUnit)) {
- if (t1 === $.$get$Style_windows() && codeUnit === 47)
- return true;
- if (previous != null && t1.isSeparator$1(previous))
- return true;
- if (previous === 46)
- t4 = previousPrevious == null || previousPrevious === 46 || t1.isSeparator$1(previousPrevious);
- else
- t4 = false;
- if (t4)
- return true;
- }
- }
- if (previous == null)
- return true;
- if (t1.isSeparator$1(previous))
- return true;
- if (previous === 46)
- t1 = previousPrevious == null || t1.isSeparator$1(previousPrevious) || previousPrevious === 46;
- else
- t1 = false;
- if (t1)
- return true;
- return false;
- },
- relative$2$from: function(path, from) {
- var fromParsed, pathParsed, t2, t3, _this = this,
- _s26_ = 'Unable to find a path to "',
- t1 = from == null;
- if (t1 && _this.style.rootLength$1(path) <= 0)
- return _this.normalize$1(path);
- if (t1) {
- t1 = _this._context$_current;
- from = t1 != null ? t1 : D.current();
- } else
- from = _this.absolute$1(from);
- t1 = _this.style;
- if (t1.rootLength$1(from) <= 0 && t1.rootLength$1(path) > 0)
- return _this.normalize$1(path);
- if (t1.rootLength$1(path) <= 0 || t1.isRootRelative$1(path))
- path = _this.absolute$1(path);
- if (t1.rootLength$1(path) <= 0 && t1.rootLength$1(from) > 0)
- throw H.wrapException(X.PathException$(_s26_ + H.S(path) + '" from "' + H.S(from) + '".'));
- fromParsed = X.ParsedPath_ParsedPath$parse(from, t1);
- fromParsed.normalize$0();
- pathParsed = X.ParsedPath_ParsedPath$parse(path, t1);
- pathParsed.normalize$0();
- t2 = fromParsed.parts;
- if (t2.length !== 0 && J.$eq$(t2[0], "."))
- return pathParsed.toString$0(0);
- t2 = fromParsed.root;
- t3 = pathParsed.root;
- if (t2 != t3)
- t2 = t2 == null || t3 == null || !t1.pathsEqual$2(t2, t3);
- else
- t2 = false;
- if (t2)
- return pathParsed.toString$0(0);
- while (true) {
- t2 = fromParsed.parts;
- if (t2.length !== 0) {
- t3 = pathParsed.parts;
- t2 = t3.length !== 0 && t1.pathsEqual$2(t2[0], t3[0]);
- } else
- t2 = false;
- if (!t2)
- break;
- C.JSArray_methods.removeAt$1(fromParsed.parts, 0);
- C.JSArray_methods.removeAt$1(fromParsed.separators, 1);
- C.JSArray_methods.removeAt$1(pathParsed.parts, 0);
- C.JSArray_methods.removeAt$1(pathParsed.separators, 1);
- }
- t2 = fromParsed.parts;
- if (t2.length !== 0 && J.$eq$(t2[0], ".."))
- throw H.wrapException(X.PathException$(_s26_ + H.S(path) + '" from "' + H.S(from) + '".'));
- t2 = P.String;
- C.JSArray_methods.insertAll$2(pathParsed.parts, 0, P.List_List$filled(fromParsed.parts.length, "..", t2));
- t3 = pathParsed.separators;
- t3[0] = "";
- C.JSArray_methods.insertAll$2(t3, 1, P.List_List$filled(fromParsed.parts.length, t1.get$separator(), t2));
- t1 = pathParsed.parts;
- t2 = t1.length;
- if (t2 === 0)
- return ".";
- if (t2 > 1 && J.$eq$(C.JSArray_methods.get$last(t1), ".")) {
- C.JSArray_methods.removeLast$0(pathParsed.parts);
- t1 = pathParsed.separators;
- C.JSArray_methods.removeLast$0(t1);
- C.JSArray_methods.removeLast$0(t1);
- C.JSArray_methods.add$1(t1, "");
- }
- pathParsed.root = "";
- pathParsed.removeTrailingSeparators$0();
- return pathParsed.toString$0(0);
- },
- relative$1: function(path) {
- return this.relative$2$from(path, null);
- },
- _isWithinOrEquals$2: function($parent, child) {
- var relative, childIsRootRelative, parentIsRootRelative, result, exception, _this = this,
- t1 = _this.style,
- parentIsAbsolute = t1.rootLength$1($parent) > 0,
- childIsAbsolute = t1.rootLength$1(child) > 0;
- if (parentIsAbsolute && !childIsAbsolute) {
- child = _this.absolute$1(child);
- if (t1.isRootRelative$1($parent))
- $parent = _this.absolute$1($parent);
- } else if (childIsAbsolute && !parentIsAbsolute) {
- $parent = _this.absolute$1($parent);
- if (t1.isRootRelative$1(child))
- child = _this.absolute$1(child);
- } else if (childIsAbsolute && parentIsAbsolute) {
- childIsRootRelative = t1.isRootRelative$1(child);
- parentIsRootRelative = t1.isRootRelative$1($parent);
- if (childIsRootRelative && !parentIsRootRelative)
- child = _this.absolute$1(child);
- else if (parentIsRootRelative && !childIsRootRelative)
- $parent = _this.absolute$1($parent);
- }
- result = _this._isWithinOrEqualsFast$2($parent, child);
- if (result !== C._PathRelation_inconclusive)
- return result;
- relative = null;
- try {
- relative = _this.relative$2$from(child, $parent);
- } catch (exception) {
- if (H.unwrapException(exception) instanceof X.PathException)
- return C._PathRelation_different;
- else
- throw exception;
- }
- if (t1.rootLength$1(relative) > 0)
- return C._PathRelation_different;
- if (J.$eq$(relative, "."))
- return C._PathRelation_equal;
- if (J.$eq$(relative, ".."))
- return C._PathRelation_different;
- return J.get$length$asx(relative) >= 3 && J.startsWith$1$s(relative, "..") && t1.isSeparator$1(J.codeUnitAt$1$s(relative, 2)) ? C._PathRelation_different : C._PathRelation_within;
- },
- _isWithinOrEqualsFast$2: function($parent, child) {
- var t1, parentRootLength, childRootLength, t2, t3, i, childIndex, parentIndex, lastCodeUnit, lastParentSeparator, parentCodeUnit, childCodeUnit, parentIndex0, t4, direction, _this = this;
- if ($parent === ".")
- $parent = "";
- t1 = _this.style;
- parentRootLength = t1.rootLength$1($parent);
- childRootLength = t1.rootLength$1(child);
- if (parentRootLength !== childRootLength)
- return C._PathRelation_different;
- for (t2 = J.getInterceptor$s($parent), t3 = J.getInterceptor$s(child), i = 0; i < parentRootLength; ++i)
- if (!t1.codeUnitsEqual$2(t2._codeUnitAt$1($parent, i), t3._codeUnitAt$1(child, i)))
- return C._PathRelation_different;
- t2 = $parent.length;
- childIndex = childRootLength;
- parentIndex = parentRootLength;
- lastCodeUnit = 47;
- lastParentSeparator = null;
- while (true) {
- if (!(parentIndex < t2 && childIndex < child.length))
- break;
- c$0: {
- parentCodeUnit = C.JSString_methods.codeUnitAt$1($parent, parentIndex);
- childCodeUnit = t3.codeUnitAt$1(child, childIndex);
- if (t1.codeUnitsEqual$2(parentCodeUnit, childCodeUnit)) {
- if (t1.isSeparator$1(parentCodeUnit))
- lastParentSeparator = parentIndex;
- ++parentIndex;
- ++childIndex;
- lastCodeUnit = parentCodeUnit;
- break c$0;
- }
- if (t1.isSeparator$1(parentCodeUnit) && t1.isSeparator$1(lastCodeUnit)) {
- parentIndex0 = parentIndex + 1;
- lastParentSeparator = parentIndex;
- parentIndex = parentIndex0;
- break c$0;
- } else if (t1.isSeparator$1(childCodeUnit) && t1.isSeparator$1(lastCodeUnit)) {
- ++childIndex;
- break c$0;
- }
- if (parentCodeUnit === 46 && t1.isSeparator$1(lastCodeUnit)) {
- ++parentIndex;
- if (parentIndex === t2)
- break;
- parentCodeUnit = C.JSString_methods.codeUnitAt$1($parent, parentIndex);
- if (t1.isSeparator$1(parentCodeUnit)) {
- parentIndex0 = parentIndex + 1;
- lastParentSeparator = parentIndex;
- parentIndex = parentIndex0;
- break c$0;
- }
- if (parentCodeUnit === 46) {
- ++parentIndex;
- if (parentIndex === t2 || t1.isSeparator$1(C.JSString_methods.codeUnitAt$1($parent, parentIndex)))
- return C._PathRelation_inconclusive;
- }
- }
- if (childCodeUnit === 46 && t1.isSeparator$1(lastCodeUnit)) {
- ++childIndex;
- t4 = child.length;
- if (childIndex === t4)
- break;
- childCodeUnit = C.JSString_methods.codeUnitAt$1(child, childIndex);
- if (t1.isSeparator$1(childCodeUnit)) {
- ++childIndex;
- break c$0;
- }
- if (childCodeUnit === 46) {
- ++childIndex;
- if (childIndex === t4 || t1.isSeparator$1(C.JSString_methods.codeUnitAt$1(child, childIndex)))
- return C._PathRelation_inconclusive;
- }
- }
- if (_this._pathDirection$2(child, childIndex) !== C._PathDirection_988)
- return C._PathRelation_inconclusive;
- if (_this._pathDirection$2($parent, parentIndex) !== C._PathDirection_988)
- return C._PathRelation_inconclusive;
- return C._PathRelation_different;
- }
- }
- if (childIndex === child.length) {
- if (parentIndex === t2 || t1.isSeparator$1(C.JSString_methods.codeUnitAt$1($parent, parentIndex)))
- lastParentSeparator = parentIndex;
- else if (lastParentSeparator == null)
- lastParentSeparator = Math.max(0, parentRootLength - 1);
- direction = _this._pathDirection$2($parent, lastParentSeparator);
- if (direction === C._PathDirection_8Gl)
- return C._PathRelation_equal;
- return direction === C._PathDirection_ZGD ? C._PathRelation_inconclusive : C._PathRelation_different;
- }
- direction = _this._pathDirection$2(child, childIndex);
- if (direction === C._PathDirection_8Gl)
- return C._PathRelation_equal;
- if (direction === C._PathDirection_ZGD)
- return C._PathRelation_inconclusive;
- return t1.isSeparator$1(C.JSString_methods.codeUnitAt$1(child, childIndex)) || t1.isSeparator$1(lastCodeUnit) ? C._PathRelation_within : C._PathRelation_different;
- },
- _pathDirection$2: function(path, index) {
- var t1, t2, i, depth, reachedRoot, i0, t3;
- for (t1 = path.length, t2 = this.style, i = index, depth = 0, reachedRoot = false; i < t1;) {
- while (true) {
- if (!(i < t1 && t2.isSeparator$1(C.JSString_methods.codeUnitAt$1(path, i))))
- break;
- ++i;
- }
- if (i === t1)
- break;
- i0 = i;
- while (true) {
- if (!(i0 < t1 && !t2.isSeparator$1(C.JSString_methods.codeUnitAt$1(path, i0))))
- break;
- ++i0;
- }
- t3 = i0 - i;
- if (!(t3 === 1 && C.JSString_methods.codeUnitAt$1(path, i) === 46))
- if (t3 === 2 && C.JSString_methods.codeUnitAt$1(path, i) === 46 && C.JSString_methods.codeUnitAt$1(path, i + 1) === 46) {
- --depth;
- if (depth < 0)
- break;
- if (depth === 0)
- reachedRoot = true;
- } else
- ++depth;
- if (i0 === t1)
- break;
- i = i0 + 1;
- }
- if (depth < 0)
- return C._PathDirection_ZGD;
- if (depth === 0)
- return C._PathDirection_8Gl;
- if (reachedRoot)
- return C._PathDirection_FIw;
- return C._PathDirection_988;
- },
- hash$1: function(path) {
- var result, parsed, _this = this;
- path = _this.absolute$1(path);
- result = _this._hashFast$1(path);
- if (result != null)
- return result;
- parsed = X.ParsedPath_ParsedPath$parse(path, _this.style);
- parsed.normalize$0();
- return _this._hashFast$1(parsed.toString$0(0));
- },
- _hashFast$1: function(path) {
- var t1, t2, hash, beginning, wasSeparator, i, codeUnit, t3, next;
- for (t1 = path.length, t2 = this.style, hash = 4603, beginning = true, wasSeparator = true, i = 0; i < t1; ++i) {
- codeUnit = t2.canonicalizeCodeUnit$1(C.JSString_methods._codeUnitAt$1(path, i));
- if (t2.isSeparator$1(codeUnit)) {
- wasSeparator = true;
- continue;
- }
- if (codeUnit === 46 && wasSeparator) {
- t3 = i + 1;
- if (t3 === t1)
- break;
- next = C.JSString_methods._codeUnitAt$1(path, t3);
- if (t2.isSeparator$1(next))
- continue;
- if (!beginning)
- if (next === 46) {
- t3 = i + 2;
- t3 = t3 === t1 || t2.isSeparator$1(C.JSString_methods._codeUnitAt$1(path, t3));
- } else
- t3 = false;
- else
- t3 = false;
- if (t3)
- return;
- }
- hash = ((hash & 67108863) * 33 ^ codeUnit) >>> 0;
- beginning = false;
- wasSeparator = false;
- }
- return hash;
- },
- withoutExtension$1: function(path) {
- var i,
- parsed = X.ParsedPath_ParsedPath$parse(path, this.style);
- for (i = parsed.parts.length - 1; i >= 0; --i)
- if (J.get$length$asx(parsed.parts[i]) !== 0) {
- parsed.parts[i] = parsed._splitExtension$0()[0];
- break;
- }
- return parsed.toString$0(0);
- },
- toUri$1: function(path) {
- var t2,
- t1 = this.style;
- if (t1.rootLength$1(path) <= 0)
- return t1.relativePathToUri$1(path);
- else {
- t2 = this._context$_current;
- return t1.absolutePathToUri$1(this.join$2(0, t2 != null ? t2 : D.current(), path));
- }
- },
- prettyUri$1: function(uri) {
- var path, rel, _this = this,
- typedUri = M._parseUri(uri);
- if (typedUri.get$scheme() === "file" && _this.style == $.$get$Style_url())
- return typedUri.toString$0(0);
- else if (typedUri.get$scheme() !== "file" && typedUri.get$scheme() !== "" && _this.style != $.$get$Style_url())
- return typedUri.toString$0(0);
- path = _this.normalize$1(_this.style.pathFromUri$1(M._parseUri(typedUri)));
- rel = _this.relative$1(path);
- return _this.split$1(0, rel).length > _this.split$1(0, path).length ? path : rel;
- }
- };
- M.Context_join_closure.prototype = {
- call$1: function(part) {
- return part != null;
- }
- };
- M.Context_joinAll_closure.prototype = {
- call$1: function(part) {
- return part !== "";
- }
- };
- M.Context_split_closure.prototype = {
- call$1: function(part) {
- return part.length !== 0;
- }
- };
- M._validateArgList_closure.prototype = {
- call$1: function(arg) {
- return arg == null ? "null" : '"' + arg + '"';
- }
- };
- M._PathDirection.prototype = {
- toString$0: function(_) {
- return this.name;
- }
- };
- M._PathRelation.prototype = {
- toString$0: function(_) {
- return this.name;
- }
- };
- B.InternalStyle.prototype = {
- getRoot$1: function(path) {
- var $length = this.rootLength$1(path);
- if ($length > 0)
- return J.substring$2$s(path, 0, $length);
- return this.isRootRelative$1(path) ? path[0] : null;
- },
- relativePathToUri$1: function(path) {
- var segments = M.Context_Context(this).split$1(0, path);
- if (this.isSeparator$1(J.codeUnitAt$1$s(path, path.length - 1)))
- C.JSArray_methods.add$1(segments, "");
- return P._Uri__Uri(null, null, segments, null);
- },
- codeUnitsEqual$2: function(codeUnit1, codeUnit2) {
- return codeUnit1 === codeUnit2;
- },
- pathsEqual$2: function(path1, path2) {
- return path1 == path2;
- },
- canonicalizeCodeUnit$1: function(codeUnit) {
- return codeUnit;
- },
- canonicalizePart$1: function(part) {
- return part;
- }
- };
- X.ParsedPath.prototype = {
- get$basename: function() {
- var _this = this,
- t1 = P.String,
- copy = new X.ParsedPath(_this.style, _this.root, _this.isRootRelative, P.List_List$from(_this.parts, true, t1), P.List_List$from(_this.separators, true, t1));
- copy.removeTrailingSeparators$0();
- t1 = copy.parts;
- if (t1.length === 0) {
- t1 = _this.root;
- return t1 == null ? "" : t1;
- }
- return C.JSArray_methods.get$last(t1);
- },
- get$hasTrailingSeparator: function() {
- var t1 = this.parts;
- if (t1.length !== 0)
- t1 = J.$eq$(C.JSArray_methods.get$last(t1), "") || !J.$eq$(C.JSArray_methods.get$last(this.separators), "");
- else
- t1 = false;
- return t1;
- },
- removeTrailingSeparators$0: function() {
- var t1, t2, _this = this;
- while (true) {
- t1 = _this.parts;
- if (!(t1.length !== 0 && J.$eq$(C.JSArray_methods.get$last(t1), "")))
- break;
- C.JSArray_methods.removeLast$0(_this.parts);
- C.JSArray_methods.removeLast$0(_this.separators);
- }
- t1 = _this.separators;
- t2 = t1.length;
- if (t2 !== 0)
- t1[t2 - 1] = "";
- },
- normalize$1$canonicalize: function(canonicalize) {
- var t2, t3, t4, leadingDoubles, _i, part, t5, newSeparators, _this = this,
- t1 = P.String,
- newParts = H.setRuntimeTypeInfo([], [t1]);
- for (t2 = _this.parts, t3 = t2.length, t4 = _this.style, leadingDoubles = 0, _i = 0; _i < t2.length; t2.length === t3 || (0, H.throwConcurrentModificationError)(t2), ++_i) {
- part = t2[_i];
- t5 = J.getInterceptor$(part);
- if (!(t5.$eq(part, ".") || t5.$eq(part, "")))
- if (t5.$eq(part, ".."))
- if (newParts.length !== 0)
- newParts.pop();
- else
- ++leadingDoubles;
- else
- newParts.push(canonicalize ? t4.canonicalizePart$1(part) : part);
- }
- if (_this.root == null)
- C.JSArray_methods.insertAll$2(newParts, 0, P.List_List$filled(leadingDoubles, "..", t1));
- if (newParts.length === 0 && _this.root == null)
- newParts.push(".");
- newSeparators = P.List_List$generate(newParts.length, new X.ParsedPath_normalize_closure(_this), true, t1);
- t1 = _this.root;
- C.JSArray_methods.insert$2(newSeparators, 0, t1 != null && newParts.length !== 0 && t4.needsSeparator$1(t1) ? t4.get$separator() : "");
- _this.parts = newParts;
- _this.separators = newSeparators;
- t1 = _this.root;
- if (t1 != null && t4 === $.$get$Style_windows()) {
- if (canonicalize)
- t1 = _this.root = t1.toLowerCase();
- t1.toString;
- _this.root = H.stringReplaceAllUnchecked(t1, "/", "\\");
- }
- _this.removeTrailingSeparators$0();
- },
- normalize$0: function() {
- return this.normalize$1$canonicalize(false);
- },
- toString$0: function(_) {
- var i, _this = this,
- t1 = _this.root;
- t1 = t1 != null ? t1 : "";
- for (i = 0; i < _this.parts.length; ++i)
- t1 = t1 + H.S(_this.separators[i]) + H.S(_this.parts[i]);
- t1 += H.S(C.JSArray_methods.get$last(_this.separators));
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- _splitExtension$0: function() {
- var lastDot,
- file = C.JSArray_methods.lastWhere$2$orElse(this.parts, new X.ParsedPath__splitExtension_closure(), new X.ParsedPath__splitExtension_closure0());
- if (file == null)
- return H.setRuntimeTypeInfo(["", ""], [P.String]);
- if (file === "..")
- return H.setRuntimeTypeInfo(["..", ""], [P.String]);
- lastDot = C.JSString_methods.lastIndexOf$1(file, ".");
- if (lastDot <= 0)
- return H.setRuntimeTypeInfo([file, ""], [P.String]);
- return H.setRuntimeTypeInfo([C.JSString_methods.substring$2(file, 0, lastDot), C.JSString_methods.substring$1(file, lastDot)], [P.String]);
- }
- };
- X.ParsedPath_normalize_closure.prototype = {
- call$1: function(_) {
- return this.$this.style.get$separator();
- },
- $signature: 17
- };
- X.ParsedPath__splitExtension_closure.prototype = {
- call$1: function(p) {
- return p !== "";
- }
- };
- X.ParsedPath__splitExtension_closure0.prototype = {
- call$0: function() {
- return;
- }
- };
- X.PathException.prototype = {
- toString$0: function(_) {
- return "PathException: " + this.message;
- },
- $isException: 1,
- get$message: function(receiver) {
- return this.message;
- }
- };
- K.PathMap.prototype = {
- $asMap: function($V) {
- return [P.String, $V];
- }
- };
- K.PathMap__create_closure.prototype = {
- call$2: function(path1, path2) {
- if (path1 == null)
- return path2 == null;
- if (path2 == null)
- return false;
- return this._box_0.context._isWithinOrEquals$2(path1, path2) === C._PathRelation_equal;
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- K.PathMap__create_closure0.prototype = {
- call$1: function(path) {
- return path == null ? 0 : this._box_0.context.hash$1(path);
- }
- };
- K.PathMap__create_closure1.prototype = {
- call$1: function(path) {
- return typeof path === "string" || path == null;
- },
- $signature: 21
- };
- O.Style.prototype = {
- toString$0: function(_) {
- return this.get$name();
- }
- };
- E.PosixStyle.prototype = {
- containsSeparator$1: function(path) {
- return C.JSString_methods.contains$1(path, "/");
- },
- isSeparator$1: function(codeUnit) {
- return codeUnit === 47;
- },
- needsSeparator$1: function(path) {
- var t1 = path.length;
- return t1 !== 0 && J.codeUnitAt$1$s(path, t1 - 1) !== 47;
- },
- rootLength$2$withDrive: function(path, withDrive) {
- if (path.length !== 0 && J._codeUnitAt$1$s(path, 0) === 47)
- return 1;
- return 0;
- },
- rootLength$1: function(path) {
- return this.rootLength$2$withDrive(path, false);
- },
- isRootRelative$1: function(path) {
- return false;
- },
- pathFromUri$1: function(uri) {
- var t1;
- if (uri.get$scheme() === "" || uri.get$scheme() === "file") {
- t1 = uri.get$path(uri);
- return P._Uri__uriDecode(t1, 0, t1.length, C.C_Utf8Codec, false);
- }
- throw H.wrapException(P.ArgumentError$("Uri " + uri.toString$0(0) + " must have scheme 'file:'."));
- },
- absolutePathToUri$1: function(path) {
- var parsed = X.ParsedPath_ParsedPath$parse(path, this),
- t1 = parsed.parts;
- if (t1.length === 0)
- C.JSArray_methods.addAll$1(t1, H.setRuntimeTypeInfo(["", ""], [P.String]));
- else if (parsed.get$hasTrailingSeparator())
- C.JSArray_methods.add$1(parsed.parts, "");
- return P._Uri__Uri(null, null, parsed.parts, "file");
- },
- get$name: function() {
- return "posix";
- },
- get$separator: function() {
- return "/";
- }
- };
- F.UrlStyle.prototype = {
- containsSeparator$1: function(path) {
- return C.JSString_methods.contains$1(path, "/");
- },
- isSeparator$1: function(codeUnit) {
- return codeUnit === 47;
- },
- needsSeparator$1: function(path) {
- var t1 = path.length;
- if (t1 === 0)
- return false;
- if (J.getInterceptor$s(path).codeUnitAt$1(path, t1 - 1) !== 47)
- return true;
- return C.JSString_methods.endsWith$1(path, "://") && this.rootLength$1(path) === t1;
- },
- rootLength$2$withDrive: function(path, withDrive) {
- var i, codeUnit, index, t2,
- t1 = path.length;
- if (t1 === 0)
- return 0;
- if (J.getInterceptor$s(path)._codeUnitAt$1(path, 0) === 47)
- return 1;
- for (i = 0; i < t1; ++i) {
- codeUnit = C.JSString_methods._codeUnitAt$1(path, i);
- if (codeUnit === 47)
- return 0;
- if (codeUnit === 58) {
- if (i === 0)
- return 0;
- index = C.JSString_methods.indexOf$2(path, "/", C.JSString_methods.startsWith$2(path, "//", i + 1) ? i + 3 : i);
- if (index <= 0)
- return t1;
- if (!withDrive || t1 < index + 3)
- return index;
- if (!C.JSString_methods.startsWith$1(path, "file://"))
- return index;
- if (!B.isDriveLetter(path, index + 1))
- return index;
- t2 = index + 3;
- return t1 === t2 ? t2 : index + 4;
- }
- }
- return 0;
- },
- rootLength$1: function(path) {
- return this.rootLength$2$withDrive(path, false);
- },
- isRootRelative$1: function(path) {
- return path.length !== 0 && J._codeUnitAt$1$s(path, 0) === 47;
- },
- pathFromUri$1: function(uri) {
- return J.toString$0$(uri);
- },
- relativePathToUri$1: function(path) {
- return P.Uri_parse(path);
- },
- absolutePathToUri$1: function(path) {
- return P.Uri_parse(path);
- },
- get$name: function() {
- return "url";
- },
- get$separator: function() {
- return "/";
- }
- };
- L.WindowsStyle.prototype = {
- containsSeparator$1: function(path) {
- return C.JSString_methods.contains$1(path, "/");
- },
- isSeparator$1: function(codeUnit) {
- return codeUnit === 47 || codeUnit === 92;
- },
- needsSeparator$1: function(path) {
- var t1 = path.length;
- if (t1 === 0)
- return false;
- t1 = J.codeUnitAt$1$s(path, t1 - 1);
- return !(t1 === 47 || t1 === 92);
- },
- rootLength$2$withDrive: function(path, withDrive) {
- var t2, index,
- t1 = path.length;
- if (t1 === 0)
- return 0;
- t2 = J.getInterceptor$s(path)._codeUnitAt$1(path, 0);
- if (t2 === 47)
- return 1;
- if (t2 === 92) {
- if (t1 < 2 || C.JSString_methods._codeUnitAt$1(path, 1) !== 92)
- return 1;
- index = C.JSString_methods.indexOf$2(path, "\\", 2);
- if (index > 0) {
- index = C.JSString_methods.indexOf$2(path, "\\", index + 1);
- if (index > 0)
- return index;
- }
- return t1;
- }
- if (t1 < 3)
- return 0;
- if (!B.isAlphabetic(t2))
- return 0;
- if (C.JSString_methods._codeUnitAt$1(path, 1) !== 58)
- return 0;
- t1 = C.JSString_methods._codeUnitAt$1(path, 2);
- if (!(t1 === 47 || t1 === 92))
- return 0;
- return 3;
- },
- rootLength$1: function(path) {
- return this.rootLength$2$withDrive(path, false);
- },
- isRootRelative$1: function(path) {
- return this.rootLength$1(path) === 1;
- },
- pathFromUri$1: function(uri) {
- var path, t1;
- if (uri.get$scheme() !== "" && uri.get$scheme() !== "file")
- throw H.wrapException(P.ArgumentError$("Uri " + uri.toString$0(0) + " must have scheme 'file:'."));
- path = uri.get$path(uri);
- if (uri.get$host() === "") {
- if (path.length >= 3 && C.JSString_methods.startsWith$1(path, "/") && B.isDriveLetter(path, 1))
- path = C.JSString_methods.replaceFirst$2(path, "/", "");
- } else
- path = "\\\\" + H.S(uri.get$host()) + path;
- t1 = H.stringReplaceAllUnchecked(path, "/", "\\");
- return P._Uri__uriDecode(t1, 0, t1.length, C.C_Utf8Codec, false);
- },
- absolutePathToUri$1: function(path) {
- var rootParts, t2,
- parsed = X.ParsedPath_ParsedPath$parse(path, this),
- t1 = parsed.root;
- if (J.startsWith$1$s(t1, "\\\\")) {
- t1 = H.setRuntimeTypeInfo(t1.split("\\"), [P.String]);
- rootParts = new H.WhereIterable(t1, new L.WindowsStyle_absolutePathToUri_closure(), [H.getTypeArgumentByIndex(t1, 0)]);
- C.JSArray_methods.insert$2(parsed.parts, 0, rootParts.get$last(rootParts));
- if (parsed.get$hasTrailingSeparator())
- C.JSArray_methods.add$1(parsed.parts, "");
- return P._Uri__Uri(rootParts.get$first(rootParts), null, parsed.parts, "file");
- } else {
- if (parsed.parts.length === 0 || parsed.get$hasTrailingSeparator())
- C.JSArray_methods.add$1(parsed.parts, "");
- t1 = parsed.parts;
- t2 = parsed.root;
- t2.toString;
- t2 = H.stringReplaceAllUnchecked(t2, "/", "");
- C.JSArray_methods.insert$2(t1, 0, H.stringReplaceAllUnchecked(t2, "\\", ""));
- return P._Uri__Uri(null, null, parsed.parts, "file");
- }
- },
- codeUnitsEqual$2: function(codeUnit1, codeUnit2) {
- var upperCase1;
- if (codeUnit1 === codeUnit2)
- return true;
- if (codeUnit1 === 47)
- return codeUnit2 === 92;
- if (codeUnit1 === 92)
- return codeUnit2 === 47;
- if ((codeUnit1 ^ codeUnit2) !== 32)
- return false;
- upperCase1 = codeUnit1 | 32;
- return upperCase1 >= 97 && upperCase1 <= 122;
- },
- pathsEqual$2: function(path1, path2) {
- var t1, t2, i;
- if (path1 == path2)
- return true;
- t1 = path1.length;
- if (t1 !== path2.length)
- return false;
- for (t2 = J.getInterceptor$s(path2), i = 0; i < t1; ++i)
- if (!this.codeUnitsEqual$2(C.JSString_methods._codeUnitAt$1(path1, i), t2._codeUnitAt$1(path2, i)))
- return false;
- return true;
- },
- canonicalizeCodeUnit$1: function(codeUnit) {
- if (codeUnit === 47)
- return 92;
- if (codeUnit < 65)
- return codeUnit;
- if (codeUnit > 90)
- return codeUnit;
- return codeUnit | 32;
- },
- canonicalizePart$1: function(part) {
- return part.toLowerCase();
- },
- get$name: function() {
- return "windows";
- },
- get$separator: function() {
- return "\\";
- }
- };
- L.WindowsStyle_absolutePathToUri_closure.prototype = {
- call$1: function(part) {
- return part !== "";
- }
- };
- F.CssMediaQuery.prototype = {
- merge$1: function(other) {
- var _i, t8, negativeFeatures, features, type, modifier, fewerFeatures, fewerFeatures0, moreFeatures, _this = this, _null = null, _s3_ = "all",
- t1 = _this.modifier,
- ourModifier = t1 == null ? _null : t1.toLowerCase(),
- t2 = _this.type,
- t3 = t2 == null,
- ourType = t3 ? _null : t2.toLowerCase(),
- t4 = other.modifier,
- theirModifier = t4 == null ? _null : t4.toLowerCase(),
- t5 = other.type,
- t6 = t5 == null,
- theirType = t6 ? _null : t5.toLowerCase(),
- t7 = ourType == null;
- if (t7 && theirType == null) {
- t1 = P.String;
- t2 = H.setRuntimeTypeInfo([], [t1]);
- for (t3 = _this.features, t4 = t3.length, _i = 0; _i < t4; ++_i)
- t2.push(t3[_i]);
- for (t3 = other.features, t4 = t3.length, _i = 0; _i < t4; ++_i)
- t2.push(t3[_i]);
- return new F.MediaQuerySuccessfulMergeResult(new F.CssMediaQuery(_null, _null, P.List_List$unmodifiable(t2, t1)));
- }
- t8 = ourModifier === "not";
- if (t8 !== (theirModifier === "not")) {
- if (ourType == theirType) {
- negativeFeatures = t8 ? _this.features : other.features;
- if (C.JSArray_methods.every$1(negativeFeatures, C.JSArray_methods.get$contains(t8 ? other.features : _this.features)))
- return C._SingletonCssMediaQueryMergeResult_empty;
- else
- return C._SingletonCssMediaQueryMergeResult_unrepresentable;
- } else if (t3 || B.equalsIgnoreCase(t2, _s3_) || t6 || B.equalsIgnoreCase(t5, _s3_))
- return C._SingletonCssMediaQueryMergeResult_unrepresentable;
- if (t8) {
- features = other.features;
- type = theirType;
- modifier = theirModifier;
- } else {
- features = _this.features;
- type = ourType;
- modifier = ourModifier;
- }
- } else if (t8) {
- if (ourType != theirType)
- return C._SingletonCssMediaQueryMergeResult_unrepresentable;
- fewerFeatures = _this.features;
- fewerFeatures0 = other.features;
- t3 = fewerFeatures.length > fewerFeatures0.length;
- moreFeatures = t3 ? fewerFeatures : fewerFeatures0;
- if (t3)
- fewerFeatures = fewerFeatures0;
- if (!C.JSArray_methods.every$1(fewerFeatures, C.JSArray_methods.get$contains(moreFeatures)))
- return C._SingletonCssMediaQueryMergeResult_unrepresentable;
- features = moreFeatures;
- type = ourType;
- modifier = ourModifier;
- } else if (t3 || B.equalsIgnoreCase(t2, _s3_)) {
- type = (t6 || B.equalsIgnoreCase(t5, _s3_)) && t7 ? _null : theirType;
- t3 = H.setRuntimeTypeInfo([], [P.String]);
- for (t6 = _this.features, t7 = t6.length, _i = 0; _i < t7; ++_i)
- t3.push(t6[_i]);
- for (t6 = other.features, t7 = t6.length, _i = 0; _i < t7; ++_i)
- t3.push(t6[_i]);
- features = t3;
- modifier = theirModifier;
- } else {
- if (t6 || B.equalsIgnoreCase(t5, _s3_)) {
- t3 = H.setRuntimeTypeInfo([], [P.String]);
- for (t6 = _this.features, t7 = t6.length, _i = 0; _i < t7; ++_i)
- t3.push(t6[_i]);
- for (t6 = other.features, t7 = t6.length, _i = 0; _i < t7; ++_i)
- t3.push(t6[_i]);
- features = t3;
- modifier = ourModifier;
- } else {
- if (ourType != theirType)
- return C._SingletonCssMediaQueryMergeResult_empty;
- else {
- modifier = ourModifier == null ? theirModifier : ourModifier;
- t3 = H.setRuntimeTypeInfo([], [P.String]);
- for (t6 = _this.features, t7 = t6.length, _i = 0; _i < t7; ++_i)
- t3.push(t6[_i]);
- for (t6 = other.features, t7 = t6.length, _i = 0; _i < t7; ++_i)
- t3.push(t6[_i]);
- }
- features = t3;
- }
- type = ourType;
- }
- t2 = type == ourType ? t2 : t5;
- return new F.MediaQuerySuccessfulMergeResult(F.CssMediaQuery$(t2, features, modifier == ourModifier ? t1 : t4));
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof F.CssMediaQuery && other.modifier == this.modifier && other.type == this.type && C.C_ListEquality.equals$2(other.features, this.features);
- },
- get$hashCode: function(_) {
- return J.get$hashCode$(this.modifier) ^ J.get$hashCode$(this.type) ^ C.C_ListEquality.hash$1(this.features);
- },
- toString$0: function(_) {
- var t2, _this = this,
- t1 = _this.modifier;
- t1 = t1 != null ? t1 + " " : "";
- t2 = _this.type;
- if (t2 != null) {
- t1 += t2;
- if (_this.features.length !== 0)
- t1 += " and ";
- }
- t1 += C.JSArray_methods.join$1(_this.features, " and ");
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- }
- };
- F._SingletonCssMediaQueryMergeResult.prototype = {
- toString$0: function(_) {
- return this._media_query$_name;
- }
- };
- F.MediaQuerySuccessfulMergeResult.prototype = {};
- U.ModifiableCssAtRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitCssAtRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- copyWithoutChildren$0: function() {
- var _this = this,
- t1 = B.ModifiableCssNode,
- t2 = H.setRuntimeTypeInfo([], [t1]);
- return new U.ModifiableCssAtRule(_this.name, _this.value, _this.isChildless, _this.span, new P.UnmodifiableListView(t2, [t1]), t2);
- },
- addChild$1: function(child) {
- this.super$ModifiableCssParentNode$addChild(child);
- },
- $isCssAtRule: 1,
- get$isChildless: function() {
- return this.isChildless;
- },
- get$span: function() {
- return this.span;
- }
- };
- R.ModifiableCssComment.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitCssComment$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- $isCssComment: 1,
- get$span: function() {
- return this.span;
- }
- };
- L.ModifiableCssDeclaration.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitCssDeclaration$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- get$span: function() {
- return this.span;
- }
- };
- F.ModifiableCssImport.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitCssImport$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- $isCssImport: 1,
- get$span: function() {
- return this.span;
- }
- };
- U.ModifiableCssKeyframeBlock.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitCssKeyframeBlock$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- copyWithoutChildren$0: function() {
- var t1 = B.ModifiableCssNode,
- t2 = H.setRuntimeTypeInfo([], [t1]);
- return new U.ModifiableCssKeyframeBlock(this.selector, this.span, new P.UnmodifiableListView(t2, [t1]), t2);
- },
- get$span: function() {
- return this.span;
- }
- };
- G.ModifiableCssMediaRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitCssMediaRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- copyWithoutChildren$0: function() {
- return G.ModifiableCssMediaRule$(this.queries, this.span);
- },
- $isCssMediaRule: 1,
- get$span: function() {
- return this.span;
- }
- };
- B.ModifiableCssNode.prototype = {
- get$hasFollowingSibling: function() {
- var siblings, i, t2,
- t1 = this._parent;
- if (t1 == null)
- return false;
- siblings = t1.children;
- for (i = this._indexInParent + 1, t1 = siblings._collection$_source, t2 = J.getInterceptor$asx(t1); i < t2.get$length(t1); ++i)
- if (!this._node0$_isInvisible$1(t2.elementAt$1(t1, i)))
- return true;
- return false;
- },
- _node0$_isInvisible$1: function(node) {
- if (!!J.getInterceptor$(node).$isCssParentNode) {
- if (!!node.$isCssAtRule)
- return false;
- if (!!node.$isCssStyleRule && node.selector.value.get$isInvisible())
- return true;
- return J.every$1$ax(node.get$children(), this.get$_node0$_isInvisible());
- } else
- return false;
- },
- get$isGroupEnd: function() {
- return this.isGroupEnd;
- }
- };
- B.ModifiableCssParentNode.prototype = {
- get$isChildless: function() {
- return false;
- },
- addChild$1: function(child) {
- var t1;
- child._parent = this;
- t1 = this._children;
- child._indexInParent = t1.length;
- t1.push(child);
- },
- $isCssParentNode: 1,
- get$children: function() {
- return this.children;
- }
- };
- X.ModifiableCssStyleRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitCssStyleRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- copyWithoutChildren$0: function() {
- return X.ModifiableCssStyleRule$(this.selector, this.span, this.originalSelector);
- },
- $isCssStyleRule: 1,
- get$span: function() {
- return this.span;
- }
- };
- V.ModifiableCssStylesheet.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitCssStylesheet$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- copyWithoutChildren$0: function() {
- var t1 = B.ModifiableCssNode,
- t2 = H.setRuntimeTypeInfo([], [t1]);
- return new V.ModifiableCssStylesheet(this.span, new P.UnmodifiableListView(t2, [t1]), t2);
- },
- $isCssStylesheet: 1,
- get$span: function() {
- return this.span;
- }
- };
- B.ModifiableCssSupportsRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitCssSupportsRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- copyWithoutChildren$0: function() {
- var t1 = B.ModifiableCssNode,
- t2 = H.setRuntimeTypeInfo([], [t1]);
- return new B.ModifiableCssSupportsRule(this.condition, this.span, new P.UnmodifiableListView(t2, [t1]), t2);
- },
- $isCssSupportsRule: 1,
- get$span: function() {
- return this.span;
- }
- };
- F.ModifiableCssValue.prototype = {
- toString$0: function(_) {
- return J.toString$0$(this.value);
- },
- $isCssValue: 1,
- $isAstNode: 1,
- get$value: function(receiver) {
- return this.value;
- },
- get$span: function() {
- return this.span;
- }
- };
- B.CssNode.prototype = {
- toString$0: function(_) {
- return N.serialize(this, true, null, true, null, false, null, true).css;
- }
- };
- B.CssParentNode.prototype = {};
- V.CssStylesheet.prototype = {
- get$isGroupEnd: function() {
- return false;
- },
- get$isChildless: function() {
- return false;
- },
- accept$1$1: function(visitor) {
- return visitor.visitCssStylesheet$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- get$children: function() {
- return this.children;
- },
- get$span: function() {
- return this.span;
- }
- };
- F.CssValue.prototype = {
- toString$0: function(_) {
- return J.toString$0$(this.value);
- },
- $isAstNode: 1,
- get$value: function(receiver) {
- return this.value;
- },
- get$span: function() {
- return this.span;
- }
- };
- B.AstNode.prototype = {};
- B._FakeAstNode.prototype = {
- get$span: function() {
- return this._callback.call$0();
- },
- $isAstNode: 1
- };
- Z.Argument.prototype = {
- toString$0: function(_) {
- var t1 = this.defaultValue,
- t2 = this.name;
- return t1 == null ? t2 : t2 + ": " + t1.toString$0(0);
- },
- $isAstNode: 1,
- get$span: function() {
- return this.span;
- }
- };
- B.ArgumentDeclaration.prototype = {
- get$spanWithName: function() {
- var t3, t4,
- t1 = this.span,
- t2 = t1.file,
- text = P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(t2._decodedChars, 0, null), 0, null),
- i = Y.FileLocation$_(t2, t1._start).offset - 1;
- while (true) {
- if (i > 0) {
- t3 = C.JSString_methods.codeUnitAt$1(text, i);
- t3 = t3 === 32 || t3 === 9 || t3 === 10 || t3 === 13 || t3 === 12;
- } else
- t3 = false;
- if (!t3)
- break;
- --i;
- }
- t3 = C.JSString_methods.codeUnitAt$1(text, i);
- if (!(t3 === 95 || T.isAlphabetic0(t3) || t3 >= 128 || T.isDigit(t3) || t3 === 45))
- return t1;
- --i;
- while (true) {
- if (i >= 0) {
- t3 = C.JSString_methods.codeUnitAt$1(text, i);
- if (t3 !== 95) {
- if (!(t3 >= 97 && t3 <= 122))
- t4 = t3 >= 65 && t3 <= 90;
- else
- t4 = true;
- t4 = t4 || t3 >= 128;
- } else
- t4 = true;
- if (!t4) {
- t4 = t3 >= 48 && t3 <= 57;
- t3 = t4 || t3 === 45;
- } else
- t3 = true;
- } else
- t3 = false;
- if (!t3)
- break;
- --i;
- }
- t3 = i + 1;
- t4 = C.JSString_methods.codeUnitAt$1(text, t3);
- if (!(t4 === 95 || T.isAlphabetic0(t4) || t4 >= 128))
- return t1;
- return B.SpanExtensions_trim(t2.span$2(t3, Y.FileLocation$_(t2, t1._file$_end).offset));
- },
- get$originalRestArgument: function() {
- var t1, text;
- if (this.restArgument == null)
- return;
- t1 = this.span;
- text = P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(t1.file._decodedChars, t1._start, t1._file$_end), 0, null);
- return C.JSString_methods.substring$2(C.JSString_methods.substring$1(text, C.JSString_methods.lastIndexOf$1(text, "$")), 0, C.JSString_methods.indexOf$1(text, "."));
- },
- verify$2: function(positional, names) {
- var t1, t2, t3, namedUsed, i, argument, t4, unknownNames, _this = this,
- _s10_ = "invocation",
- _s8_ = "argument";
- for (t1 = _this.$arguments, t2 = t1.length, t3 = names._baseMap, namedUsed = 0, i = 0; i < t2; ++i) {
- argument = t1[i];
- if (i < positional) {
- t4 = argument.name;
- if (t3.containsKey$1(t4))
- throw H.wrapException(E.SassScriptException$("Argument " + H.S(_this._originalArgumentName$1(t4)) + " was passed both by position and by name."));
- } else {
- t4 = argument.name;
- if (t3.containsKey$1(t4))
- ++namedUsed;
- else if (argument.defaultValue == null)
- throw H.wrapException(E.MultiSpanSassScriptException$("Missing argument " + H.S(_this._originalArgumentName$1(t4)) + ".", _s10_, P.LinkedHashMap_LinkedHashMap$_literal([_this.get$spanWithName(), "declaration"], Y.FileSpan, P.String)));
- }
- }
- if (_this.restArgument != null)
- return;
- if (positional > t2) {
- t1 = "Only " + t2 + " ";
- throw H.wrapException(E.MultiSpanSassScriptException$(t1 + (names.get$isEmpty(names) ? "" : "positional ") + B.pluralize(_s8_, t2, null) + " allowed, but " + positional + " " + B.pluralize("was", positional, "were") + " passed.", _s10_, P.LinkedHashMap_LinkedHashMap$_literal([_this.get$spanWithName(), "declaration"], Y.FileSpan, P.String)));
- }
- if (namedUsed < t3.get$length(t3)) {
- t2 = P.String;
- unknownNames = P.LinkedHashSet_LinkedHashSet$of(names, t2);
- t3 = P.Object;
- unknownNames.removeAll$1(new H.MappedListIterable(t1, new B.ArgumentDeclaration_verify_closure(), [H.getTypeArgumentByIndex(t1, 0), t3]));
- throw H.wrapException(E.MultiSpanSassScriptException$("No " + B.pluralize(_s8_, unknownNames._collection$_length, null) + " named " + H.S(B.toSentence(unknownNames.map$1$1(0, new B.ArgumentDeclaration_verify_closure0(), t3), "or")) + ".", _s10_, P.LinkedHashMap_LinkedHashMap$_literal([_this.get$spanWithName(), "declaration"], Y.FileSpan, t2)));
- }
- },
- _originalArgumentName$1: function($name) {
- var t1, t2, _i, argument, t3, text, end;
- if ($name === this.restArgument)
- return this.get$originalRestArgument();
- for (t1 = this.$arguments, t2 = t1.length, _i = 0; _i < t2; ++_i) {
- argument = t1[_i];
- if (argument.name === $name) {
- if (argument.defaultValue == null) {
- t1 = argument.span;
- t2 = t1._start;
- t3 = t1.file._decodedChars;
- t3 = P.String_String$fromCharCodes(new Uint32Array(t3.subarray(t2, H._checkValidRange(t2, t1._file$_end, t3.length))), 0, null);
- t1 = t3;
- } else {
- t1 = argument.span;
- t2 = t1._start;
- t3 = t1.file._decodedChars;
- text = P.String_String$fromCharCodes(new Uint32Array(t3.subarray(t2, H._checkValidRange(t2, t1._file$_end, t3.length))), 0, null);
- t3 = C.JSString_methods.substring$2(text, 0, C.JSString_methods.indexOf$1(text, ":"));
- end = B._lastNonWhitespace(t3, false);
- t1 = end == null ? "" : C.JSString_methods.substring$2(t3, 0, end + 1);
- }
- return t1;
- }
- }
- throw H.wrapException(P.ArgumentError$('This declaration has no argument named "$' + $name + '".'));
- },
- matches$2: function(positional, names) {
- var t1, t2, t3, namedUsed, i, argument;
- for (t1 = this.$arguments, t2 = t1.length, t3 = names._baseMap, namedUsed = 0, i = 0; i < t2; ++i) {
- argument = t1[i];
- if (i < positional) {
- if (t3.containsKey$1(argument.name))
- return false;
- } else if (t3.containsKey$1(argument.name))
- ++namedUsed;
- else if (argument.defaultValue == null)
- return false;
- }
- if (this.restArgument != null)
- return true;
- if (positional > t2)
- return false;
- if (namedUsed < t3.get$length(t3))
- return false;
- return true;
- },
- toString$0: function(_) {
- var t2, t3, _i,
- t1 = H.setRuntimeTypeInfo([], [P.String]);
- for (t2 = this.$arguments, t3 = t2.length, _i = 0; _i < t3; ++_i)
- t1.push(J.toString$0$(t2[_i]));
- t2 = this.restArgument;
- if (t2 != null)
- t1.push(t2 + "...");
- return C.JSArray_methods.join$1(t1, ", ");
- },
- $isAstNode: 1,
- get$span: function() {
- return this.span;
- }
- };
- B.ArgumentDeclaration_verify_closure.prototype = {
- call$1: function(argument) {
- return argument.name;
- }
- };
- B.ArgumentDeclaration_verify_closure0.prototype = {
- call$1: function($name) {
- return "$" + H.S($name);
- }
- };
- X.ArgumentInvocation.prototype = {
- get$isEmpty: function(_) {
- var t1;
- if (this.positional.length === 0) {
- t1 = this.named;
- t1 = t1.get$isEmpty(t1) && this.rest == null;
- } else
- t1 = false;
- return t1;
- },
- toString$0: function(_) {
- var t2, t3, _i, t4, _this = this,
- t1 = H.setRuntimeTypeInfo([], [P.Object]);
- for (t2 = _this.positional, t3 = t2.length, _i = 0; _i < t3; ++_i)
- t1.push(t2[_i]);
- for (t2 = _this.named, t3 = J.get$iterator$ax(t2.get$keys()); t3.moveNext$0();) {
- t4 = t3.get$current(t3);
- t1.push(H.S(t4) + ": " + H.S(t2.$index(0, t4)));
- }
- t2 = _this.rest;
- if (t2 != null)
- t1.push(t2.toString$0(0) + "...");
- t2 = _this.keywordRest;
- if (t2 != null)
- t1.push(t2.toString$0(0) + "...");
- return "(" + C.JSArray_methods.join$1(t1, ", ") + ")";
- },
- $isAstNode: 1,
- get$span: function() {
- return this.span;
- }
- };
- V.AtRootQuery.prototype = {
- excludes$1: function(node) {
- var _this = this;
- if (_this._all)
- return !_this.include;
- if (_this._at_root_query$_rule && !!J.getInterceptor$(node).$isCssStyleRule)
- return !_this.include;
- return _this.names.contains$1(0, _this._nameFor$1(node)) !== _this.include;
- },
- _nameFor$1: function(node) {
- var t1 = J.getInterceptor$(node);
- if (!!t1.$isCssMediaRule)
- return "media";
- if (!!t1.$isCssSupportsRule)
- return "supports";
- if (!!t1.$isCssAtRule) {
- t1 = node.name;
- return t1.get$value(t1).toLowerCase();
- }
- return;
- }
- };
- Z.ConfiguredVariable.prototype = {
- toString$0: function(_) {
- var t1 = "$" + this.name + ": " + H.S(this.expression);
- return t1 + (this.isGuarded ? " !default" : "");
- },
- $isAstNode: 1,
- get$span: function() {
- return this.span;
- }
- };
- T.Expression.prototype = {$isAstNode: 1};
- V.BinaryOperationExpression.prototype = {
- get$span: function() {
- var right,
- left = this.left;
- for (; left instanceof V.BinaryOperationExpression;)
- left = left.left;
- right = this.right;
- for (; right instanceof V.BinaryOperationExpression;)
- right = right.right;
- return B.spanForList(H.setRuntimeTypeInfo([left, right], [B.AstNode]));
- },
- accept$1$1: function(visitor) {
- return visitor.visitBinaryOperationExpression$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t2, right, rightNeedsParens, _this = this,
- left = _this.left,
- leftNeedsParens = left instanceof V.BinaryOperationExpression && left.operator.precedence < _this.operator.precedence,
- t1 = leftNeedsParens ? H.Primitives_stringFromCharCode(40) : "";
- t1 += H.S(left);
- if (leftNeedsParens)
- t1 += H.Primitives_stringFromCharCode(41);
- t2 = _this.operator;
- t1 = t1 + H.Primitives_stringFromCharCode(32) + t2.operator + H.Primitives_stringFromCharCode(32);
- right = _this.right;
- rightNeedsParens = right instanceof V.BinaryOperationExpression && right.operator.precedence <= t2.precedence;
- if (rightNeedsParens)
- t1 += H.Primitives_stringFromCharCode(40);
- t1 += H.S(right);
- if (rightNeedsParens)
- t1 += H.Primitives_stringFromCharCode(41);
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- $isAstNode: 1,
- $isExpression: 1
- };
- V.BinaryOperator.prototype = {
- toString$0: function(_) {
- return this.name;
- }
- };
- Z.BooleanExpression.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitBooleanExpression$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return String(this.value);
- },
- $isAstNode: 1,
- $isExpression: 1,
- get$span: function() {
- return this.span;
- }
- };
- K.ColorExpression.prototype = {
- get$span: function() {
- return this.value.originalSpan;
- },
- accept$1$1: function(visitor) {
- return visitor.visitColorExpression$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return N.serializeValue(this.value, true, true);
- },
- $isAstNode: 1,
- $isExpression: 1
- };
- F.FunctionExpression.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitFunctionExpression$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = this.namespace;
- t1 = t1 != null ? t1 + "." : "";
- t1 += this.name.toString$0(0) + this.$arguments.toString$0(0);
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- $isAstNode: 1,
- $isExpression: 1,
- get$span: function() {
- return this.span;
- }
- };
- L.IfExpression.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitIfExpression$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return "if" + this.$arguments.toString$0(0);
- },
- $isAstNode: 1,
- $isExpression: 1,
- get$span: function() {
- return this.span;
- }
- };
- D.ListExpression.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitListExpression$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var _this = this,
- t1 = _this.hasBrackets,
- t2 = t1 ? H.Primitives_stringFromCharCode(91) : "",
- t3 = _this.contents,
- t4 = _this.separator === C.ListSeparator_comma ? ", " : " ";
- t4 = t2 + new H.MappedListIterable(t3, new D.ListExpression_toString_closure(_this), [H.getTypeArgumentByIndex(t3, 0), P.String]).join$1(0, t4);
- t1 = t1 ? t4 + H.Primitives_stringFromCharCode(93) : t4;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- _list0$_elementNeedsParens$1: function(expression) {
- var t2,
- t1 = J.getInterceptor$(expression);
- if (!!t1.$isListExpression) {
- if (expression.contents.length < 2)
- return false;
- if (expression.hasBrackets)
- return false;
- t1 = this.separator;
- t2 = t1 === C.ListSeparator_comma;
- return t2 ? t2 : t1 !== C.ListSeparator_undecided;
- }
- if (this.separator !== C.ListSeparator_space)
- return false;
- if (!!t1.$isUnaryOperationExpression) {
- t1 = expression.operator;
- return t1 === C.UnaryOperator_j2w || t1 === C.UnaryOperator_U4G;
- }
- return false;
- },
- $isAstNode: 1,
- $isExpression: 1,
- get$span: function() {
- return this.span;
- }
- };
- D.ListExpression_toString_closure.prototype = {
- call$1: function(element) {
- return this.$this._list0$_elementNeedsParens$1(element) ? "(" + H.S(element) + ")" : J.toString$0$(element);
- }
- };
- A.MapExpression.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitMapExpression$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = this.pairs;
- return "(" + new H.MappedListIterable(t1, new A.MapExpression_toString_closure(), [H.getTypeArgumentByIndex(t1, 0), P.String]).join$1(0, ", ") + ")";
- },
- $isAstNode: 1,
- $isExpression: 1,
- get$span: function() {
- return this.span;
- }
- };
- A.MapExpression_toString_closure.prototype = {
- call$1: function(pair) {
- return H.S(pair.item1) + ": " + H.S(pair.item2);
- }
- };
- O.NullExpression.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitNullExpression$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return "null";
- },
- $isAstNode: 1,
- $isExpression: 1,
- get$span: function() {
- return this.span;
- }
- };
- T.NumberExpression.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitNumberExpression$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = H.S(this.value),
- t2 = this.unit;
- return t1 + (t2 == null ? "" : t2);
- },
- $isAstNode: 1,
- $isExpression: 1,
- get$span: function() {
- return this.span;
- }
- };
- T.ParenthesizedExpression.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitParenthesizedExpression$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return J.toString$0$(this.expression);
- },
- $isAstNode: 1,
- $isExpression: 1,
- get$span: function() {
- return this.span;
- }
- };
- T.SelectorExpression.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitSelectorExpression$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return "&";
- },
- $isAstNode: 1,
- $isExpression: 1,
- get$span: function() {
- return this.span;
- }
- };
- D.StringExpression.prototype = {
- get$span: function() {
- return this.text.span;
- },
- accept$1$1: function(visitor) {
- return visitor.visitStringExpression$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- asInterpolation$1$static: function($static) {
- var quote, t1, t2, buffer, t3, t4, t5, _i, value, t6, t7, i, codeUnit, next, t8, _this = this;
- if (!_this.hasQuotes)
- return _this.text;
- quote = _this._bestQuote$0();
- t1 = new P.StringBuffer("");
- t2 = [];
- buffer = new Z.InterpolationBuffer(t1, t2);
- t1._contents += H.Primitives_stringFromCharCode(quote);
- for (t3 = _this.text, t4 = t3.contents, t5 = t4.length, _i = 0; _i < t5; ++_i) {
- value = t4[_i];
- if (!!J.getInterceptor$(value).$isExpression) {
- buffer._flushText$0();
- t2.push(value);
- } else if (typeof value === "string")
- for (t6 = value.length, t7 = t6 - 1, i = 0; i < t6; ++i) {
- codeUnit = C.JSString_methods._codeUnitAt$1(value, i);
- if (codeUnit === 10 || codeUnit === 13 || codeUnit === 12) {
- t1._contents += H.Primitives_stringFromCharCode(92);
- t1._contents += H.Primitives_stringFromCharCode(97);
- if (i !== t7) {
- next = C.JSString_methods._codeUnitAt$1(value, i + 1);
- if (next === 32 || next === 9 || next === 10 || next === 13 || next === 12 || T.isHex(next))
- t1._contents += H.Primitives_stringFromCharCode(32);
- }
- } else {
- if (codeUnit !== quote)
- if (codeUnit !== 92)
- t8 = $static && codeUnit === 35 && i < t7 && C.JSString_methods._codeUnitAt$1(value, i + 1) === 123;
- else
- t8 = true;
- else
- t8 = true;
- if (t8)
- t1._contents += H.Primitives_stringFromCharCode(92);
- t1._contents += H.Primitives_stringFromCharCode(codeUnit);
- }
- }
- }
- t1._contents += H.Primitives_stringFromCharCode(quote);
- return buffer.interpolation$1(t3.span);
- },
- asInterpolation$0: function() {
- return this.asInterpolation$1$static(false);
- },
- _bestQuote$0: function() {
- var t1, t2, containsDoubleQuote, _i, value, t3, i, codeUnit;
- for (t1 = this.text.contents, t2 = t1.length, containsDoubleQuote = false, _i = 0; _i < t2; ++_i) {
- value = t1[_i];
- if (typeof value === "string")
- for (t3 = value.length, i = 0; i < t3; ++i) {
- codeUnit = C.JSString_methods._codeUnitAt$1(value, i);
- if (codeUnit === 39)
- return 34;
- if (codeUnit === 34)
- containsDoubleQuote = true;
- }
- }
- return containsDoubleQuote ? 39 : 34;
- },
- toString$0: function(_) {
- return this.asInterpolation$0().toString$0(0);
- },
- $isAstNode: 1,
- $isExpression: 1
- };
- X.UnaryOperationExpression.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitUnaryOperationExpression$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = this.operator,
- t2 = t1.operator;
- t1 = t1 === C.UnaryOperator_not_not ? t2 + H.Primitives_stringFromCharCode(32) : t2;
- t1 += H.S(this.operand);
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- $isAstNode: 1,
- $isExpression: 1,
- get$span: function() {
- return this.span;
- }
- };
- X.UnaryOperator.prototype = {
- toString$0: function(_) {
- return this.name;
- }
- };
- F.ValueExpression.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitValueExpression$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return J.toString$0$(this.value);
- },
- $isAstNode: 1,
- $isExpression: 1,
- get$span: function() {
- return this.span;
- }
- };
- S.VariableExpression.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitVariableExpression$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = this.namespace;
- t1 = t1 != null ? "$" + (t1 + ".") : "$";
- t1 += this.name;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- $isAstNode: 1,
- $isExpression: 1,
- get$span: function() {
- return this.span;
- }
- };
- F.Import.prototype = {$isAstNode: 1};
- B.DynamicImport.prototype = {
- toString$0: function(_) {
- return new D.StringExpression(X.Interpolation$(H.setRuntimeTypeInfo([this.url], [P.Object]), null), true).asInterpolation$1$static(true).get$asPlain();
- },
- $isAstNode: 1,
- $isImport: 1,
- get$span: function() {
- return this.span;
- }
- };
- Q.StaticImport.prototype = {
- toString$0: function(_) {
- var t1 = this.url.toString$0(0),
- t2 = this.supports;
- if (t2 != null)
- t1 += " supports(" + t2.toString$0(0) + ")";
- t2 = this.media;
- if (t2 != null)
- t1 += " " + t2.toString$0(0);
- t1 += H.Primitives_stringFromCharCode(59);
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- $isAstNode: 1,
- $isImport: 1,
- get$span: function() {
- return this.span;
- }
- };
- X.Interpolation.prototype = {
- get$asPlain: function() {
- var first,
- t1 = this.contents,
- t2 = t1.length;
- if (t2 === 0)
- return "";
- if (t2 > 1)
- return;
- first = C.JSArray_methods.get$first(t1);
- return typeof first === "string" ? first : null;
- },
- Interpolation$2: function(contents, span) {
- var t1, t2, i, t3, t4,
- _s8_ = "contents";
- for (t1 = this.contents, t2 = t1.length, i = 0; i < t2; ++i) {
- t3 = t1[i];
- t4 = typeof t3 === "string";
- if (!t4 && !J.getInterceptor$(t3).$isExpression)
- throw H.wrapException(P.ArgumentError$value(t1, _s8_, "May only contains Strings or Expressions."));
- if (i !== 0) {
- t3 = t1[i - 1];
- t3 = typeof t3 === "string" && t4;
- } else
- t3 = false;
- if (t3)
- throw H.wrapException(P.ArgumentError$value(t1, _s8_, "May not contain adjacent Strings."));
- }
- },
- toString$0: function(_) {
- var t1 = this.contents;
- return new H.MappedListIterable(t1, new X.Interpolation_toString_closure(), [H.getTypeArgumentByIndex(t1, 0), P.String]).join$0(0);
- },
- $isAstNode: 1,
- get$span: function() {
- return this.span;
- }
- };
- X.Interpolation_toString_closure.prototype = {
- call$1: function(value) {
- return typeof value === "string" ? value : "#{" + H.S(value) + "}";
- },
- $signature: 13
- };
- B.SassNode.prototype = {};
- O.Statement.prototype = {$isAstNode: 1};
- V.AtRootRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitAtRootRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var buffer = new P.StringBuffer("@at-root "),
- t1 = this.query;
- if (t1 != null)
- buffer._contents = "@at-root " + (t1.toString$0(0) + " ");
- t1 = this.children;
- return buffer.toString$0(0) + " {" + (t1 && C.JSArray_methods).join$1(t1, " ") + "}";
- },
- get$span: function() {
- return this.span;
- }
- };
- U.AtRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitAtRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = "@" + this.name.toString$0(0),
- buffer = new P.StringBuffer(t1),
- t2 = this.value;
- if (t2 != null)
- buffer._contents = t1 + (" " + t2.toString$0(0));
- t1 = this.children;
- return t1 == null ? buffer.toString$0(0) + ";" : buffer.toString$0(0) + " {" + C.JSArray_methods.join$1(t1, " ") + "}";
- },
- get$span: function() {
- return this.span;
- }
- };
- M.CallableDeclaration.prototype = {
- get$span: function() {
- return this.span;
- }
- };
- Y.ContentBlock.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitContentBlock$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t2,
- t1 = this.$arguments;
- t1 = t1.$arguments.length === 0 && t1.restArgument == null ? "" : " using (" + H.S(t1) + ")";
- t2 = this.children;
- return t1 + (" {" + (t2 && C.JSArray_methods).join$1(t2, " ") + "}");
- }
- };
- Q.ContentRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitContentRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = this.$arguments;
- return t1.get$isEmpty(t1) ? "@content;" : "@content(" + t1.toString$0(0) + ");";
- },
- $isAstNode: 1,
- $isStatement: 1,
- get$span: function() {
- return this.span;
- }
- };
- Q.DebugRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitDebugRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return "@debug " + H.S(this.expression) + ";";
- },
- $isAstNode: 1,
- $isStatement: 1,
- get$span: function() {
- return this.span;
- }
- };
- L.Declaration.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitDeclaration$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return H.S(this.name) + ": " + H.S(this.value) + ";";
- },
- get$span: function() {
- return this.span;
- }
- };
- V.EachRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitEachRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = this.variables,
- t2 = this.children;
- return "@each " + new H.MappedListIterable(t1, new V.EachRule_toString_closure(), [H.getTypeArgumentByIndex(t1, 0), P.String]).join$1(0, ", ") + " in " + H.S(this.list) + " {" + (t2 && C.JSArray_methods).join$1(t2, " ") + "}";
- },
- get$span: function() {
- return this.span;
- }
- };
- V.EachRule_toString_closure.prototype = {
- call$1: function(variable) {
- return C.JSString_methods.$add("$", variable);
- }
- };
- D.ErrorRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitErrorRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return "@error " + H.S(this.expression) + ";";
- },
- $isAstNode: 1,
- $isStatement: 1,
- get$span: function() {
- return this.span;
- }
- };
- X.ExtendRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitExtendRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return "@extend " + this.selector.toString$0(0);
- },
- $isAstNode: 1,
- $isStatement: 1,
- get$span: function() {
- return this.span;
- }
- };
- B.ForRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitForRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var _this = this,
- t1 = "@for $" + _this.variable + " from " + H.S(_this.from) + " ",
- t2 = _this.children;
- return t1 + (_this.isExclusive ? "to" : "through") + " " + H.S(_this.to) + " {" + (t2 && C.JSArray_methods).join$1(t2, " ") + "}";
- },
- get$span: function() {
- return this.span;
- }
- };
- L.ForwardRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitForwardRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var _this = this,
- t1 = "@forward " + H.S(new D.StringExpression(X.Interpolation$(H.setRuntimeTypeInfo([J.toString$0$(_this.url)], [P.Object]), null), true).asInterpolation$1$static(true).get$asPlain()),
- t2 = _this.shownMixinsAndFunctions;
- if (t2 != null)
- t1 = t1 + " show " + _this._forward_rule$_memberList$2(t2, _this.shownVariables);
- else {
- t2 = _this.hiddenMixinsAndFunctions;
- if (t2 != null)
- t1 = t1 + " hide " + _this._forward_rule$_memberList$2(t2, _this.hiddenVariables);
- }
- t2 = _this.prefix;
- if (t2 != null)
- t1 += " as " + t2 + "*";
- t2 = _this.configuration;
- t1 = (t2.length !== 0 ? t1 + (" with (" + C.JSArray_methods.join$1(t2, ", ") + ")") : t1) + ";";
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- _forward_rule$_memberList$2: function(mixinsAndFunctions, variables) {
- var t1 = this.shownVariables._base.map$1$1(0, new L.ForwardRule__memberList_closure(), P.String);
- return this.shownMixinsAndFunctions._base.followedBy$1(0, t1).join$1(0, ", ");
- },
- $isAstNode: 1,
- $isStatement: 1,
- get$span: function() {
- return this.span;
- }
- };
- L.ForwardRule__memberList_closure.prototype = {
- call$1: function($name) {
- return "$" + H.S($name);
- }
- };
- M.FunctionRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitFunctionRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = this.children;
- return "@function " + H.S(this.name) + "(" + H.S(this.$arguments) + ") {" + (t1 && C.JSArray_methods).join$1(t1, " ") + "}";
- }
- };
- V.IfRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitIfRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t2, t1 = {};
- t1.first = true;
- t2 = this.clauses;
- return new H.MappedListIterable(t2, new V.IfRule_toString_closure(t1), [H.getTypeArgumentByIndex(t2, 0), P.String]).join$1(0, " ");
- },
- $isAstNode: 1,
- $isStatement: 1,
- get$span: function() {
- return this.span;
- }
- };
- V.IfRule_toString_closure.prototype = {
- call$1: function(clause) {
- var t1 = this._box_0,
- $name = t1.first ? "if" : "else";
- t1.first = false;
- return "@" + $name + " " + H.S(clause.expression) + " {" + C.JSArray_methods.join$1(clause.children, " ") + "}";
- }
- };
- V.IfClause.prototype = {
- toString$0: function(_) {
- var t1 = this.expression;
- t1 = t1 == null ? "@else" : "@if " + t1.toString$0(0);
- return t1 + (" {" + C.JSArray_methods.join$1(this.children, " ") + "}");
- }
- };
- V.IfClause$__closure.prototype = {
- call$1: function(child) {
- var t1 = J.getInterceptor$(child);
- if (!t1.$isVariableDeclaration)
- if (!t1.$isFunctionRule)
- if (!t1.$isMixinRule)
- t1 = !!t1.$isImportRule && C.JSArray_methods.any$1(child.imports, new V.IfClause$___closure());
- else
- t1 = true;
- else
- t1 = true;
- else
- t1 = true;
- return t1;
- }
- };
- V.IfClause$___closure.prototype = {
- call$1: function($import) {
- return $import instanceof B.DynamicImport;
- }
- };
- B.ImportRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitImportRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return "@import " + C.JSArray_methods.join$1(this.imports, ", ") + ";";
- },
- $isAstNode: 1,
- $isStatement: 1,
- get$span: function() {
- return this.span;
- }
- };
- A.IncludeRule.prototype = {
- get$spanWithoutContent: function() {
- var t2, t3,
- t1 = this.span;
- if (!(this.content == null)) {
- t2 = t1.file;
- t3 = this.$arguments.span;
- t3 = B.SpanExtensions_trim(t2.span$2(Y.FileLocation$_(t2, t1._start).offset, Y.FileLocation$_(t3.file, t3._file$_end).offset));
- t1 = t3;
- }
- return t1;
- },
- accept$1$1: function(visitor) {
- return visitor.visitIncludeRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t2, _this = this,
- t1 = _this.namespace;
- t1 = t1 != null ? "@include " + (t1 + ".") : "@include ";
- t1 += _this.name;
- t2 = _this.$arguments;
- if (!t2.get$isEmpty(t2))
- t1 += "(" + t2.toString$0(0) + ")";
- t2 = _this.content;
- t1 += t2 == null ? ";" : " " + t2.toString$0(0);
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- $isAstNode: 1,
- $isStatement: 1,
- get$span: function() {
- return this.span;
- }
- };
- L.LoudComment.prototype = {
- get$span: function() {
- return this.text.span;
- },
- accept$1$1: function(visitor) {
- return visitor.visitLoudComment$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return this.text.toString$0(0);
- },
- $isAstNode: 1,
- $isStatement: 1
- };
- G.MediaRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitMediaRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = this.children;
- return "@media " + this.query.toString$0(0) + " {" + (t1 && C.JSArray_methods).join$1(t1, " ") + "}";
- },
- get$span: function() {
- return this.span;
- }
- };
- T.MixinRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitMixinRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = "@mixin " + H.S(this.name),
- t2 = this.$arguments;
- if (!(t2.$arguments.length === 0 && t2.restArgument == null))
- t1 += "(" + H.S(t2) + ")";
- t2 = this.children;
- t2 = t1 + (" {" + (t2 && C.JSArray_methods).join$1(t2, " ") + "}");
- return t2.charCodeAt(0) == 0 ? t2 : t2;
- }
- };
- M.ParentStatement.prototype = {$isAstNode: 1, $isStatement: 1};
- M.ParentStatement_closure.prototype = {
- call$1: function(child) {
- var t1 = J.getInterceptor$(child);
- if (!t1.$isVariableDeclaration)
- if (!t1.$isFunctionRule)
- if (!t1.$isMixinRule)
- t1 = !!t1.$isImportRule && C.JSArray_methods.any$1(child.imports, new M.ParentStatement__closure());
- else
- t1 = true;
- else
- t1 = true;
- else
- t1 = true;
- return t1;
- }
- };
- M.ParentStatement__closure.prototype = {
- call$1: function($import) {
- return $import instanceof B.DynamicImport;
- }
- };
- B.ReturnRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitReturnRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return "@return " + H.S(this.expression) + ";";
- },
- $isAstNode: 1,
- $isStatement: 1,
- get$span: function() {
- return this.span;
- }
- };
- B.SilentComment.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitSilentComment$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return this.text;
- },
- $isAstNode: 1,
- $isStatement: 1,
- get$span: function() {
- return this.span;
- }
- };
- X.StyleRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitStyleRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = this.children;
- return this.selector.toString$0(0) + " {" + (t1 && C.JSArray_methods).join$1(t1, " ") + "}";
- },
- get$span: function() {
- return this.span;
- }
- };
- V.Stylesheet.prototype = {
- Stylesheet$3$plainCss: function(children, span, plainCss) {
- var t1, t2, t3, t4, _i, child, t5;
- for (t1 = this.children, t2 = t1.length, t3 = this._forwards, t4 = this._uses, _i = 0; _i < t2; ++_i) {
- child = t1[_i];
- t5 = J.getInterceptor$(child);
- if (!!t5.$isUseRule)
- t4.push(child);
- else if (!!t5.$isForwardRule)
- t3.push(child);
- else if (!t5.$isSilentComment && !t5.$isLoudComment && !t5.$isVariableDeclaration)
- break;
- }
- },
- accept$1$1: function(visitor) {
- return visitor.visitStylesheet$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = this.children;
- return (t1 && C.JSArray_methods).join$1(t1, " ");
- },
- get$span: function() {
- return this.span;
- }
- };
- B.SupportsRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitSupportsRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = this.children;
- return "@supports " + this.condition.toString$0(0) + " {" + (t1 && C.JSArray_methods).join$1(t1, " ") + "}";
- },
- get$span: function() {
- return this.span;
- }
- };
- T.UseRule.prototype = {
- UseRule$4$configuration: function(url, namespace, span, configuration) {
- var t1, t2, _i, variable;
- for (t1 = this.configuration, t2 = t1.length, _i = 0; _i < t2; ++_i) {
- variable = t1[_i];
- if (variable.isGuarded)
- throw H.wrapException(P.ArgumentError$value(variable, "configured variable", "can't be guarded in a @use rule."));
- }
- },
- accept$1$1: function(visitor) {
- return visitor.visitUseRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = this.url,
- t2 = "@use " + H.S(new D.StringExpression(X.Interpolation$(H.setRuntimeTypeInfo([J.toString$0$(t1)], [P.Object]), null), true).asInterpolation$1$static(true).get$asPlain()),
- basename = t1.get$pathSegments().length === 0 ? "" : C.JSArray_methods.get$last(t1.get$pathSegments()),
- dot = J.getInterceptor$asx(basename).indexOf$1(basename, ".");
- t1 = this.namespace;
- if (t1 !== C.JSString_methods.substring$2(basename, 0, dot === -1 ? basename.length : dot))
- t1 = t2 + (" as " + (t1 == null ? "*" : t1));
- else
- t1 = t2;
- t2 = this.configuration;
- t1 = (t2.length !== 0 ? t1 + (" with (" + C.JSArray_methods.join$1(t2, ", ") + ")") : t1) + ";";
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- $isAstNode: 1,
- $isStatement: 1,
- get$span: function() {
- return this.span;
- }
- };
- Z.VariableDeclaration.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitVariableDeclaration$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = this.namespace;
- t1 = t1 != null ? "$" + (t1 + ".") : "$";
- t1 += this.name + ": " + H.S(this.expression) + ";";
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- $isAstNode: 1,
- $isStatement: 1,
- get$span: function() {
- return this.span;
- }
- };
- Y.WarnRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitWarnRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- return "@warn " + H.S(this.expression) + ";";
- },
- $isAstNode: 1,
- $isStatement: 1,
- get$span: function() {
- return this.span;
- }
- };
- G.WhileRule.prototype = {
- accept$1$1: function(visitor) {
- return visitor.visitWhileRule$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- toString$0: function(_) {
- var t1 = this.children;
- return "@while " + H.S(this.condition) + " {" + (t1 && C.JSArray_methods).join$1(t1, " ") + "}";
- },
- get$span: function() {
- return this.span;
- }
- };
- N.SupportsCondition.prototype = {};
- L.SupportsDeclaration.prototype = {
- toString$0: function(_) {
- return "(" + H.S(this.name) + ": " + H.S(this.value) + ")";
- },
- $isAstNode: 1,
- get$span: function() {
- return this.span;
- }
- };
- X.SupportsInterpolation.prototype = {
- toString$0: function(_) {
- return "#{" + H.S(this.expression) + "}";
- },
- $isAstNode: 1,
- get$span: function() {
- return this.span;
- }
- };
- M.SupportsNegation.prototype = {
- toString$0: function(_) {
- var t1 = this.condition;
- if (!!t1.$isSupportsNegation || !!t1.$isSupportsOperation)
- return "not (" + t1.toString$0(0) + ")";
- else
- return "not " + t1.toString$0(0);
- },
- $isAstNode: 1,
- get$span: function() {
- return this.span;
- }
- };
- U.SupportsOperation.prototype = {
- toString$0: function(_) {
- var _this = this;
- return _this._operation$_parenthesize$1(_this.left) + " " + _this.operator + " " + _this._operation$_parenthesize$1(_this.right);
- },
- _operation$_parenthesize$1: function(condition) {
- var t1;
- if (!condition.$isSupportsNegation)
- t1 = !!condition.$isSupportsOperation && condition.operator === this.operator;
- else
- t1 = true;
- return t1 ? "(" + condition.toString$0(0) + ")" : condition.toString$0(0);
- },
- $isAstNode: 1,
- get$span: function() {
- return this.span;
- }
- };
- T.Selector.prototype = {
- get$isInvisible: function() {
- return false;
- },
- toString$0: function(_) {
- var visitor = N._SerializeVisitor$(null, true, null, true, false, null, true);
- this.accept$1(visitor);
- return visitor._serialize$_buffer.toString$0(0);
- }
- };
- N.AttributeSelector.prototype = {
- accept$1$1: function(visitor) {
- var t2, _this = this,
- t1 = visitor._serialize$_buffer;
- t1.writeCharCode$1(91);
- t1.write$1(0, _this.name);
- t2 = _this.op;
- if (t2 != null) {
- t1.write$1(0, t2);
- t2 = _this.value;
- if (G.Parser_isIdentifier(t2) && !J.startsWith$1$s(t2, "--")) {
- t1.write$1(0, t2);
- t2 = _this.modifier;
- if (t2 != null)
- t1.writeCharCode$1(32);
- } else {
- visitor._visitQuotedString$1(t2);
- t2 = _this.modifier;
- if (t2 != null)
- if (visitor._style !== C.OutputStyle_compressed)
- t1.writeCharCode$1(32);
- }
- if (t2 != null)
- t1.write$1(0, t2);
- }
- t1.writeCharCode$1(93);
- return;
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- $eq: function(_, other) {
- var _this = this;
- if (other == null)
- return false;
- return other instanceof N.AttributeSelector && other.name.$eq(0, _this.name) && other.op == _this.op && other.value == _this.value && other.modifier == _this.modifier;
- },
- get$hashCode: function(_) {
- var _this = this,
- t1 = _this.name;
- return (C.JSString_methods.get$hashCode(t1.name) ^ J.get$hashCode$(t1.namespace) ^ J.get$hashCode$(_this.op) ^ J.get$hashCode$(_this.value) ^ J.get$hashCode$(_this.modifier)) >>> 0;
- }
- };
- N.AttributeOperator.prototype = {
- toString$0: function(_) {
- return this._attribute$_text;
- }
- };
- X.ClassSelector.prototype = {
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof X.ClassSelector && other.name === this.name;
- },
- accept$1$1: function(visitor) {
- var t1 = visitor._serialize$_buffer;
- t1.writeCharCode$1(46);
- t1.write$1(0, this.name);
- return;
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- addSuffix$1: function(suffix) {
- return new X.ClassSelector(this.name + suffix);
- },
- get$hashCode: function(_) {
- return C.JSString_methods.get$hashCode(this.name);
- }
- };
- S.ComplexSelector.prototype = {
- get$minSpecificity: function() {
- if (this._minSpecificity == null)
- this._computeSpecificity$0();
- return this._minSpecificity;
- },
- get$maxSpecificity: function() {
- if (this._maxSpecificity == null)
- this._computeSpecificity$0();
- return this._maxSpecificity;
- },
- get$isInvisible: function() {
- var t1 = this._complex$_isInvisible;
- if (t1 != null)
- return t1;
- return this._complex$_isInvisible = C.JSArray_methods.any$1(this.components, new S.ComplexSelector_isInvisible_closure());
- },
- accept$1$1: function(visitor) {
- return visitor.visitComplexSelector$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- _computeSpecificity$0: function() {
- var t1, t2, component, t3, _this = this,
- _i = _this._maxSpecificity = _this._minSpecificity = 0;
- for (t1 = _this.components, t2 = t1.length; _i < t2; ++_i) {
- component = t1[_i];
- if (component instanceof X.CompoundSelector) {
- t3 = _this._minSpecificity;
- if (component._compound$_minSpecificity == null)
- component._compound$_computeSpecificity$0();
- _this._minSpecificity = t3 + component._compound$_minSpecificity;
- t3 = _this._maxSpecificity;
- if (component._compound$_maxSpecificity == null)
- component._compound$_computeSpecificity$0();
- _this._maxSpecificity = t3 + component._compound$_maxSpecificity;
- }
- }
- },
- get$hashCode: function(_) {
- return C.C_ListEquality.hash$1(this.components);
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof S.ComplexSelector && C.C_ListEquality.equals$2(this.components, other.components);
- }
- };
- S.ComplexSelector_isInvisible_closure.prototype = {
- call$1: function(component) {
- return component instanceof X.CompoundSelector && component.get$isInvisible();
- }
- };
- S.ComplexSelectorComponent.prototype = {};
- S.Combinator.prototype = {
- toString$0: function(_) {
- return this._complex$_text;
- },
- $isComplexSelectorComponent: 1
- };
- X.CompoundSelector.prototype = {
- get$isInvisible: function() {
- return C.JSArray_methods.any$1(this.components, new X.CompoundSelector_isInvisible_closure());
- },
- accept$1$1: function(visitor) {
- return visitor.visitCompoundSelector$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- _compound$_computeSpecificity$0: function() {
- var t1, t2, simple, _this = this,
- _i = _this._compound$_maxSpecificity = _this._compound$_minSpecificity = 0;
- for (t1 = _this.components, t2 = t1.length; _i < t2; ++_i) {
- simple = t1[_i];
- _this._compound$_minSpecificity = _this._compound$_minSpecificity + simple.get$minSpecificity();
- _this._compound$_maxSpecificity = _this._compound$_maxSpecificity + simple.get$maxSpecificity();
- }
- },
- get$hashCode: function(_) {
- return C.C_ListEquality.hash$1(this.components);
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof X.CompoundSelector && C.C_ListEquality.equals$2(this.components, other.components);
- },
- $isComplexSelectorComponent: 1
- };
- X.CompoundSelector_isInvisible_closure.prototype = {
- call$1: function(component) {
- return component.get$isInvisible();
- }
- };
- N.IDSelector.prototype = {
- get$minSpecificity: function() {
- return H.intTypeCast(Math.pow(M.SimpleSelector.prototype.get$minSpecificity.call(this), 2));
- },
- accept$1$1: function(visitor) {
- var t1 = visitor._serialize$_buffer;
- t1.writeCharCode$1(35);
- t1.write$1(0, this.name);
- return;
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- addSuffix$1: function(suffix) {
- return new N.IDSelector(this.name + suffix);
- },
- unify$1: function(compound) {
- if (C.JSArray_methods.any$1(compound, new N.IDSelector_unify_closure(this)))
- return;
- return this.super$SimpleSelector$unify(compound);
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof N.IDSelector && other.name === this.name;
- },
- get$hashCode: function(_) {
- return C.JSString_methods.get$hashCode(this.name);
- }
- };
- N.IDSelector_unify_closure.prototype = {
- call$1: function(simple) {
- var t1;
- if (simple instanceof N.IDSelector) {
- t1 = simple.name;
- t1 = this.$this.name !== t1;
- } else
- t1 = false;
- return t1;
- }
- };
- D.SelectorList.prototype = {
- get$isInvisible: function() {
- return C.JSArray_methods.every$1(this.components, new D.SelectorList_isInvisible_closure());
- },
- get$asSassList: function() {
- var t1 = this.components;
- return D.SassList$(new H.MappedListIterable(t1, new D.SelectorList_asSassList_closure(), [H.getTypeArgumentByIndex(t1, 0), F.Value]), C.ListSeparator_comma, false);
- },
- accept$1$1: function(visitor) {
- return visitor.visitSelectorList$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- unify$1: function(other) {
- var t1 = this.components,
- t2 = S.ComplexSelector,
- contents = P.List_List$from(new H.ExpandIterable(t1, new D.SelectorList_unify_closure(other), [H.getTypeArgumentByIndex(t1, 0), t2]), true, t2);
- return contents.length === 0 ? null : D.SelectorList$(contents);
- },
- resolveParentSelectors$2$implicitParent: function($parent, implicitParent) {
- var t1, _this = this;
- if ($parent == null) {
- if (!C.JSArray_methods.any$1(_this.components, _this.get$_complexContainsParentSelector()))
- return _this;
- throw H.wrapException(E.SassScriptException$('Top-level selectors may not contain the parent selector "&".'));
- }
- t1 = _this.components;
- return D.SelectorList$(B.flattenVertically(new H.MappedListIterable(t1, new D.SelectorList_resolveParentSelectors_closure(_this, implicitParent, $parent), [H.getTypeArgumentByIndex(t1, 0), [P.Iterable, S.ComplexSelector]]), S.ComplexSelector));
- },
- resolveParentSelectors$1: function($parent) {
- return this.resolveParentSelectors$2$implicitParent($parent, true);
- },
- _complexContainsParentSelector$1: function(complex) {
- return C.JSArray_methods.any$1(complex.components, new D.SelectorList__complexContainsParentSelector_closure());
- },
- _resolveParentSelectorsCompound$2: function(compound, $parent) {
- var resolvedMembers0, parentSelector, t1,
- resolvedMembers = compound.components,
- containsSelectorPseudo = C.JSArray_methods.any$1(resolvedMembers, new D.SelectorList__resolveParentSelectorsCompound_closure());
- if (!containsSelectorPseudo && !(C.JSArray_methods.get$first(resolvedMembers) instanceof M.ParentSelector))
- return;
- resolvedMembers0 = containsSelectorPseudo ? new H.MappedListIterable(resolvedMembers, new D.SelectorList__resolveParentSelectorsCompound_closure0($parent), [H.getTypeArgumentByIndex(resolvedMembers, 0), M.SimpleSelector]) : resolvedMembers;
- parentSelector = C.JSArray_methods.get$first(resolvedMembers);
- if (parentSelector instanceof M.ParentSelector) {
- if (resolvedMembers.length === 1 && parentSelector.suffix == null)
- return $parent.components;
- } else
- return H.setRuntimeTypeInfo([S.ComplexSelector$(H.setRuntimeTypeInfo([X.CompoundSelector$(resolvedMembers0)], [S.ComplexSelectorComponent]), false)], [S.ComplexSelector]);
- t1 = $parent.components;
- return new H.MappedListIterable(t1, new D.SelectorList__resolveParentSelectorsCompound_closure1(compound, resolvedMembers0), [H.getTypeArgumentByIndex(t1, 0), S.ComplexSelector]);
- },
- get$hashCode: function(_) {
- return C.C_ListEquality.hash$1(this.components);
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof D.SelectorList && C.C_ListEquality.equals$2(this.components, other.components);
- }
- };
- D.SelectorList_isInvisible_closure.prototype = {
- call$1: function(complex) {
- return complex.get$isInvisible();
- }
- };
- D.SelectorList_asSassList_closure.prototype = {
- call$1: function(complex) {
- var t1 = complex.components;
- return D.SassList$(new H.MappedListIterable(t1, new D.SelectorList_asSassList__closure(), [H.getTypeArgumentByIndex(t1, 0), F.Value]), C.ListSeparator_space, false);
- }
- };
- D.SelectorList_asSassList__closure.prototype = {
- call$1: function(component) {
- return new D.SassString(J.toString$0$(component), false);
- }
- };
- D.SelectorList_unify_closure.prototype = {
- call$1: function(complex1) {
- var t1 = this.other.components;
- return new H.ExpandIterable(t1, new D.SelectorList_unify__closure(complex1), [H.getTypeArgumentByIndex(t1, 0), S.ComplexSelector]);
- }
- };
- D.SelectorList_unify__closure.prototype = {
- call$1: function(complex2) {
- var unified = Y.unifyComplex(H.setRuntimeTypeInfo([this.complex1.components, complex2.components], [[P.List, S.ComplexSelectorComponent]]));
- if (unified == null)
- return C.List_empty5;
- return J.map$1$1$ax(unified, new D.SelectorList_unify___closure(), S.ComplexSelector);
- }
- };
- D.SelectorList_unify___closure.prototype = {
- call$1: function(complex) {
- return S.ComplexSelector$(complex, false);
- }
- };
- D.SelectorList_resolveParentSelectors_closure.prototype = {
- call$1: function(complex) {
- var t2, t3, newComplexes, t4, t5, t6, t7, _i, component, resolved, t8, _i0, previousLineBreaks, newComplexes0, t9, i, newComplex, i0, lineBreak, t10, t11, t12, t13, t14, t15, _i1, _this = this, _box_0 = {},
- t1 = _this.$this;
- if (!t1._complexContainsParentSelector$1(complex)) {
- if (!_this.implicitParent)
- return H.setRuntimeTypeInfo([complex], [S.ComplexSelector]);
- t1 = _this.parent.components;
- return new H.MappedListIterable(t1, new D.SelectorList_resolveParentSelectors__closure(complex), [H.getTypeArgumentByIndex(t1, 0), S.ComplexSelector]);
- }
- t2 = [S.ComplexSelectorComponent];
- t3 = [[P.List, S.ComplexSelectorComponent]];
- newComplexes = H.setRuntimeTypeInfo([H.setRuntimeTypeInfo([], t2)], t3);
- t4 = [P.bool];
- _box_0.lineBreaks = H.setRuntimeTypeInfo([false], t4);
- for (t5 = complex.components, t6 = t5.length, t7 = _this.parent, _i = 0; _i < t6; ++_i) {
- component = t5[_i];
- if (component instanceof X.CompoundSelector) {
- resolved = t1._resolveParentSelectorsCompound$2(component, t7);
- if (resolved == null) {
- for (t8 = newComplexes.length, _i0 = 0; _i0 < newComplexes.length; newComplexes.length === t8 || (0, H.throwConcurrentModificationError)(newComplexes), ++_i0)
- newComplexes[_i0].push(component);
- continue;
- }
- previousLineBreaks = _box_0.lineBreaks;
- newComplexes0 = H.setRuntimeTypeInfo([], t3);
- _box_0.lineBreaks = H.setRuntimeTypeInfo([], t4);
- for (t8 = newComplexes.length, t9 = J.getInterceptor$ax(resolved), i = 0, _i0 = 0; _i0 < newComplexes.length; newComplexes.length === t8 || (0, H.throwConcurrentModificationError)(newComplexes), ++_i0, i = i0) {
- newComplex = newComplexes[_i0];
- i0 = i + 1;
- lineBreak = previousLineBreaks[i];
- for (t10 = t9.get$iterator(resolved), t11 = !lineBreak; t10.moveNext$0();) {
- t12 = t10.get$current(t10);
- t13 = H.setRuntimeTypeInfo([], t2);
- for (t14 = C.JSArray_methods.get$iterator(newComplex); t14.moveNext$0();)
- t13.push(t14.get$current(t14));
- for (t14 = t12.components, t15 = t14.length, _i1 = 0; _i1 < t15; ++_i1)
- t13.push(t14[_i1]);
- newComplexes0.push(t13);
- t13 = _box_0.lineBreaks;
- t13.push(!t11 || t12.lineBreak);
- }
- }
- newComplexes = newComplexes0;
- } else
- for (t8 = newComplexes.length, _i0 = 0; _i0 < newComplexes.length; newComplexes.length === t8 || (0, H.throwConcurrentModificationError)(newComplexes), ++_i0)
- newComplexes[_i0].push(component);
- }
- _box_0.i = 0;
- return new H.MappedListIterable(newComplexes, new D.SelectorList_resolveParentSelectors__closure0(_box_0), [H.getTypeArgumentByIndex(newComplexes, 0), S.ComplexSelector]);
- }
- };
- D.SelectorList_resolveParentSelectors__closure.prototype = {
- call$1: function(parentComplex) {
- var t2, t3, _i, t4,
- t1 = H.setRuntimeTypeInfo([], [S.ComplexSelectorComponent]);
- for (t2 = parentComplex.components, t3 = t2.length, _i = 0; _i < t3; ++_i)
- t1.push(t2[_i]);
- for (t2 = this.complex, t3 = t2.components, t4 = t3.length, _i = 0; _i < t4; ++_i)
- t1.push(t3[_i]);
- return S.ComplexSelector$(t1, t2.lineBreak || parentComplex.lineBreak);
- }
- };
- D.SelectorList_resolveParentSelectors__closure0.prototype = {
- call$1: function(newComplex) {
- var t1 = this._box_0;
- return S.ComplexSelector$(newComplex, t1.lineBreaks[t1.i++]);
- }
- };
- D.SelectorList__complexContainsParentSelector_closure.prototype = {
- call$1: function(component) {
- return component instanceof X.CompoundSelector && C.JSArray_methods.any$1(component.components, new D.SelectorList__complexContainsParentSelector__closure());
- }
- };
- D.SelectorList__complexContainsParentSelector__closure.prototype = {
- call$1: function(simple) {
- var t1 = J.getInterceptor$(simple);
- if (!t1.$isParentSelector)
- if (!!t1.$isPseudoSelector) {
- t1 = simple.selector;
- t1 = t1 != null && C.JSArray_methods.any$1(t1.components, t1.get$_complexContainsParentSelector());
- } else
- t1 = false;
- else
- t1 = true;
- return t1;
- }
- };
- D.SelectorList__resolveParentSelectorsCompound_closure.prototype = {
- call$1: function(simple) {
- var t1;
- if (simple instanceof D.PseudoSelector) {
- t1 = simple.selector;
- t1 = t1 != null && C.JSArray_methods.any$1(t1.components, t1.get$_complexContainsParentSelector());
- } else
- t1 = false;
- return t1;
- }
- };
- D.SelectorList__resolveParentSelectorsCompound_closure0.prototype = {
- call$1: function(simple) {
- var t1, t2, t3;
- if (simple instanceof D.PseudoSelector) {
- t1 = simple.selector;
- if (t1 == null)
- return simple;
- if (!C.JSArray_methods.any$1(t1.components, t1.get$_complexContainsParentSelector()))
- return simple;
- t1 = t1.resolveParentSelectors$2$implicitParent(this.parent, false);
- t2 = simple.name;
- t3 = simple.isClass;
- return D.PseudoSelector$(t2, simple.argument, !t3, t1);
- } else
- return simple;
- }
- };
- D.SelectorList__resolveParentSelectorsCompound_closure1.prototype = {
- call$1: function(complex) {
- var suffix, t2, t3, t4, last, _i,
- t1 = complex.components,
- lastComponent = C.JSArray_methods.get$last(t1);
- if (!(lastComponent instanceof X.CompoundSelector))
- throw H.wrapException(E.SassScriptException$('Parent "' + H.S(complex) + '" is incompatible with this selector.'));
- suffix = H.interceptedTypeCast(C.JSArray_methods.get$first(this.compound.components), "$isParentSelector").suffix;
- t2 = [M.SimpleSelector];
- if (suffix != null) {
- t2 = H.setRuntimeTypeInfo([], t2);
- for (t3 = lastComponent.components, t4 = H.SubListIterable$(t3, 0, t3.length - 1, H.getTypeArgumentByIndex(t3, 0)), t4 = new H.ListIterator(t4, t4.get$length(t4)); t4.moveNext$0();)
- t2.push(t4.__internal$_current);
- t2.push(C.JSArray_methods.get$last(t3).addSuffix$1(suffix));
- for (t3 = J.skip$1$ax(this.resolvedMembers, 1), t3 = new H.ListIterator(t3, t3.get$length(t3)); t3.moveNext$0();)
- t2.push(t3.__internal$_current);
- last = X.CompoundSelector$(t2);
- } else {
- t2 = H.setRuntimeTypeInfo([], t2);
- for (t3 = lastComponent.components, t4 = t3.length, _i = 0; _i < t4; ++_i)
- t2.push(t3[_i]);
- for (t3 = J.skip$1$ax(this.resolvedMembers, 1), t3 = new H.ListIterator(t3, t3.get$length(t3)); t3.moveNext$0();)
- t2.push(t3.__internal$_current);
- last = X.CompoundSelector$(t2);
- }
- t2 = H.setRuntimeTypeInfo([], [S.ComplexSelectorComponent]);
- for (t1 = H.SubListIterable$(t1, 0, t1.length - 1, H.getTypeArgumentByIndex(t1, 0)), t1 = new H.ListIterator(t1, t1.get$length(t1)); t1.moveNext$0();)
- t2.push(t1.__internal$_current);
- t2.push(last);
- return S.ComplexSelector$(t2, complex.lineBreak);
- }
- };
- M.ParentSelector.prototype = {
- accept$1$1: function(visitor) {
- var t2,
- t1 = visitor._serialize$_buffer;
- t1.writeCharCode$1(38);
- t2 = this.suffix;
- if (t2 != null)
- t1.write$1(0, t2);
- return;
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- unify$1: function(compound) {
- return H.throwExpression(P.UnsupportedError$("& doesn't support unification."));
- }
- };
- N.PlaceholderSelector.prototype = {
- get$isInvisible: function() {
- return true;
- },
- accept$1$1: function(visitor) {
- var t1 = visitor._serialize$_buffer;
- t1.writeCharCode$1(37);
- t1.write$1(0, this.name);
- return;
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- addSuffix$1: function(suffix) {
- return new N.PlaceholderSelector(this.name + suffix);
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof N.PlaceholderSelector && other.name === this.name;
- },
- get$hashCode: function(_) {
- return C.JSString_methods.get$hashCode(this.name);
- }
- };
- D.PseudoSelector.prototype = {
- get$minSpecificity: function() {
- if (this._pseudo$_minSpecificity == null)
- this._pseudo$_computeSpecificity$0();
- return this._pseudo$_minSpecificity;
- },
- get$maxSpecificity: function() {
- if (this._pseudo$_maxSpecificity == null)
- this._pseudo$_computeSpecificity$0();
- return this._pseudo$_maxSpecificity;
- },
- get$isInvisible: function() {
- var t1 = this.selector;
- if (t1 == null)
- return false;
- return this.name !== "not" && t1.get$isInvisible();
- },
- addSuffix$1: function(suffix) {
- var _this = this;
- if (_this.argument != null || _this.selector != null)
- _this.super$SimpleSelector$addSuffix(suffix);
- return D.PseudoSelector$(_this.name + suffix, null, !_this.isClass, null);
- },
- unify$1: function(compound) {
- var result, t1, t2, addedThis, _i, simple, _this = this;
- if (compound.length === 1 && C.JSArray_methods.get$first(compound) instanceof N.UniversalSelector)
- return C.JSArray_methods.get$first(compound).unify$1(H.setRuntimeTypeInfo([_this], [M.SimpleSelector]));
- if (C.JSArray_methods.contains$1(compound, _this))
- return compound;
- result = H.setRuntimeTypeInfo([], [M.SimpleSelector]);
- for (t1 = compound.length, t2 = !_this.isClass, addedThis = false, _i = 0; _i < compound.length; compound.length === t1 || (0, H.throwConcurrentModificationError)(compound), ++_i) {
- simple = compound[_i];
- if (simple instanceof D.PseudoSelector && !simple.isClass) {
- if (t2)
- return;
- result.push(_this);
- addedThis = true;
- }
- result.push(simple);
- }
- if (!addedThis)
- result.push(_this);
- return result;
- },
- _pseudo$_computeSpecificity$0: function() {
- var t1, _i, t2, complex, t3, t4, _this = this;
- if (!_this.isClass) {
- _this._pseudo$_maxSpecificity = _this._pseudo$_minSpecificity = 1;
- return;
- }
- t1 = _this.selector;
- if (t1 == null) {
- _this._pseudo$_minSpecificity = M.SimpleSelector.prototype.get$minSpecificity.call(_this);
- _this._pseudo$_maxSpecificity = M.SimpleSelector.prototype.get$maxSpecificity.call(_this);
- return;
- }
- if (_this.name === "not") {
- _i = _this._pseudo$_maxSpecificity = _this._pseudo$_minSpecificity = 0;
- for (t1 = t1.components, t2 = t1.length; _i < t2; ++_i) {
- complex = t1[_i];
- t3 = _this._pseudo$_minSpecificity;
- if (complex._minSpecificity == null)
- complex._computeSpecificity$0();
- t4 = complex._minSpecificity;
- _this._pseudo$_minSpecificity = Math.max(H.checkNum(t3), H.checkNum(t4));
- t4 = _this._pseudo$_maxSpecificity;
- if (complex._maxSpecificity == null)
- complex._computeSpecificity$0();
- t3 = complex._maxSpecificity;
- _this._pseudo$_maxSpecificity = Math.max(H.checkNum(t4), H.checkNum(t3));
- }
- } else {
- _this._pseudo$_minSpecificity = H.intTypeCast(Math.pow(M.SimpleSelector.prototype.get$minSpecificity.call(_this), 3));
- _i = _this._pseudo$_maxSpecificity = 0;
- for (t1 = t1.components, t2 = t1.length; _i < t2; ++_i) {
- complex = t1[_i];
- t3 = _this._pseudo$_minSpecificity;
- if (complex._minSpecificity == null)
- complex._computeSpecificity$0();
- t4 = complex._minSpecificity;
- _this._pseudo$_minSpecificity = Math.min(H.checkNum(t3), H.checkNum(t4));
- t4 = _this._pseudo$_maxSpecificity;
- if (complex._maxSpecificity == null)
- complex._computeSpecificity$0();
- t3 = complex._maxSpecificity;
- _this._pseudo$_maxSpecificity = Math.max(H.checkNum(t4), H.checkNum(t3));
- }
- }
- },
- accept$1$1: function(visitor) {
- return visitor.visitPseudoSelector$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- $eq: function(_, other) {
- var _this = this;
- if (other == null)
- return false;
- return other instanceof D.PseudoSelector && other.name === _this.name && other.isClass === _this.isClass && other.argument == _this.argument && J.$eq$(other.selector, _this.selector);
- },
- get$hashCode: function(_) {
- var _this = this;
- return (C.JSString_methods.get$hashCode(_this.name) ^ C.JSBool_methods.get$hashCode(!_this.isClass) ^ J.get$hashCode$(_this.argument) ^ J.get$hashCode$(_this.selector)) >>> 0;
- }
- };
- D.QualifiedName.prototype = {
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof D.QualifiedName && other.name === this.name && other.namespace == this.namespace;
- },
- get$hashCode: function(_) {
- return C.JSString_methods.get$hashCode(this.name) ^ J.get$hashCode$(this.namespace);
- },
- toString$0: function(_) {
- var t1 = this.namespace,
- t2 = this.name;
- return t1 == null ? t2 : t1 + "|" + t2;
- }
- };
- M.SimpleSelector.prototype = {
- get$minSpecificity: function() {
- return 1000;
- },
- get$maxSpecificity: function() {
- return this.get$minSpecificity();
- },
- addSuffix$1: function(suffix) {
- return H.throwExpression(E.SassScriptException$('Invalid parent selector "' + this.toString$0(0) + '"'));
- },
- unify$1: function(compound) {
- var result, t1, addedThis, _i, simple, _this = this;
- if (compound.length === 1 && C.JSArray_methods.get$first(compound) instanceof N.UniversalSelector)
- return C.JSArray_methods.get$first(compound).unify$1(H.setRuntimeTypeInfo([_this], [M.SimpleSelector]));
- if (C.JSArray_methods.contains$1(compound, _this))
- return compound;
- result = H.setRuntimeTypeInfo([], [M.SimpleSelector]);
- for (t1 = compound.length, addedThis = false, _i = 0; _i < compound.length; compound.length === t1 || (0, H.throwConcurrentModificationError)(compound), ++_i) {
- simple = compound[_i];
- if (!addedThis && simple instanceof D.PseudoSelector) {
- result.push(_this);
- addedThis = true;
- }
- result.push(simple);
- }
- if (!addedThis)
- result.push(_this);
- return result;
- }
- };
- F.TypeSelector.prototype = {
- get$minSpecificity: function() {
- return 1;
- },
- accept$1$1: function(visitor) {
- visitor._serialize$_buffer.write$1(0, this.name);
- return;
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- addSuffix$1: function(suffix) {
- var t1 = this.name;
- return new F.TypeSelector(new D.QualifiedName(t1.name + suffix, t1.namespace));
- },
- unify$1: function(compound) {
- var unified, t1, t2, _i;
- if (C.JSArray_methods.get$first(compound) instanceof N.UniversalSelector || C.JSArray_methods.get$first(compound) instanceof F.TypeSelector) {
- unified = Y.unifyUniversalAndElement(this, C.JSArray_methods.get$first(compound));
- if (unified == null)
- return;
- t1 = H.setRuntimeTypeInfo([], [M.SimpleSelector]);
- t1.push(unified);
- for (t2 = H.SubListIterable$(compound, 1, null, H.getTypeArgumentByIndex(compound, 0)), t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();)
- t1.push(t2.__internal$_current);
- return t1;
- } else {
- t1 = H.setRuntimeTypeInfo([], [M.SimpleSelector]);
- t1.push(this);
- for (t2 = compound.length, _i = 0; _i < compound.length; compound.length === t2 || (0, H.throwConcurrentModificationError)(compound), ++_i)
- t1.push(compound[_i]);
- return t1;
- }
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof F.TypeSelector && other.name.$eq(0, this.name);
- },
- get$hashCode: function(_) {
- var t1 = this.name;
- return C.JSString_methods.get$hashCode(t1.name) ^ J.get$hashCode$(t1.namespace);
- }
- };
- N.UniversalSelector.prototype = {
- get$minSpecificity: function() {
- return 0;
- },
- accept$1$1: function(visitor) {
- var t2,
- t1 = this.namespace;
- if (t1 != null) {
- t2 = visitor._serialize$_buffer;
- t2.write$1(0, t1);
- t2.writeCharCode$1(124);
- }
- visitor._serialize$_buffer.writeCharCode$1(42);
- return;
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- unify$1: function(compound) {
- var unified, t1, t2, _i, _this = this;
- if (C.JSArray_methods.get$first(compound) instanceof N.UniversalSelector || C.JSArray_methods.get$first(compound) instanceof F.TypeSelector) {
- unified = Y.unifyUniversalAndElement(_this, C.JSArray_methods.get$first(compound));
- if (unified == null)
- return;
- t1 = H.setRuntimeTypeInfo([], [M.SimpleSelector]);
- t1.push(unified);
- for (t2 = H.SubListIterable$(compound, 1, null, H.getTypeArgumentByIndex(compound, 0)), t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();)
- t1.push(t2.__internal$_current);
- return t1;
- }
- t1 = _this.namespace;
- if (t1 != null && t1 !== "*") {
- t1 = H.setRuntimeTypeInfo([], [M.SimpleSelector]);
- t1.push(_this);
- for (t2 = compound.length, _i = 0; _i < compound.length; compound.length === t2 || (0, H.throwConcurrentModificationError)(compound), ++_i)
- t1.push(compound[_i]);
- return t1;
- }
- if (compound.length !== 0)
- return compound;
- return H.setRuntimeTypeInfo([_this], [M.SimpleSelector]);
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof N.UniversalSelector && other.namespace == this.namespace;
- },
- get$hashCode: function(_) {
- return J.get$hashCode$(this.namespace);
- }
- };
- X._compileStylesheet_closure0.prototype = {
- call$1: function(url) {
- var t1, t2, _null = null;
- if (url === "")
- t1 = J.toString$0$(P.Uri_Uri$dataFromString(P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(this.stylesheet.span.file._decodedChars, 0, _null), 0, _null), C.C_Utf8Codec, _null));
- else {
- t1 = P.Uri_parse(url);
- t2 = this.importCache._async_import_cache$_resultsCache.$index(0, t1);
- t2 = t2 == null ? _null : t2.get$sourceMapUrl();
- t1 = J.toString$0$(t2 == null ? t1 : t2);
- }
- return t1;
- }
- };
- X.CompileResult.prototype = {};
- Q.AsyncEnvironment.prototype = {
- closure$0: function() {
- var t7, t8, t9, _this = this,
- t1 = _this._async_environment$_globalModules,
- t2 = _this._async_environment$_globalModuleNodes,
- t3 = _this._async_environment$_forwardedModules,
- t4 = _this._async_environment$_forwardedModuleNodes,
- t5 = _this._async_environment$_nestedForwardedModules,
- t6 = _this._async_environment$_variables;
- t6 = H.setRuntimeTypeInfo(t6.slice(0), [H.getTypeArgumentByIndex(t6, 0)]);
- t7 = _this._async_environment$_variableNodes;
- if (t7 == null)
- t7 = null;
- else
- t7 = H.setRuntimeTypeInfo(t7.slice(0), [H.getTypeArgumentByIndex(t7, 0)]);
- t8 = _this._async_environment$_functions;
- t8 = H.setRuntimeTypeInfo(t8.slice(0), [H.getTypeArgumentByIndex(t8, 0)]);
- t9 = _this._async_environment$_mixins;
- t9 = H.setRuntimeTypeInfo(t9.slice(0), [H.getTypeArgumentByIndex(t9, 0)]);
- return Q.AsyncEnvironment$_(_this._async_environment$_modules, _this._async_environment$_namespaceNodes, t1, t2, t3, t4, t5, _this._async_environment$_allModules, t6, t7, t8, t9, _this._async_environment$_content);
- },
- addModule$3$namespace: function(module, nodeWithSpan, namespace) {
- var t1, t2, _this = this;
- if (namespace == null) {
- t1 = _this._async_environment$_globalModules;
- if (t1 == null)
- t1 = _this._async_environment$_globalModules = P.LinkedHashSet_LinkedHashSet$_empty([G.Module, B.AsyncCallable]);
- if (_this._async_environment$_globalModuleNodes == null)
- _this._async_environment$_globalModuleNodes = P.LinkedHashMap_LinkedHashMap$_empty([G.Module, B.AsyncCallable], B.AstNode);
- t1.add$1(0, module);
- _this._async_environment$_globalModuleNodes.$indexSet(0, module, nodeWithSpan);
- _this._async_environment$_allModules.push(module);
- for (t1 = J.get$iterator$ax(C.JSArray_methods.get$first(_this._async_environment$_variables).get$keys()); t1.moveNext$0();) {
- t2 = t1.get$current(t1);
- if (module.get$variables().containsKey$1(t2))
- throw H.wrapException(E.SassScriptException$('This module and the new module both define a variable named "$' + H.S(t2) + '".'));
- }
- } else {
- t1 = _this._async_environment$_modules;
- if (t1.containsKey$1(namespace))
- throw H.wrapException(E.MultiSpanSassScriptException$("There's already a module with namespace \"" + namespace + '".', "new @use", P.LinkedHashMap_LinkedHashMap$_literal([_this._async_environment$_namespaceNodes.$index(0, namespace).get$span(), "original @use"], Y.FileSpan, P.String)));
- t1.$indexSet(0, namespace, module);
- _this._async_environment$_namespaceNodes.$indexSet(0, namespace, nodeWithSpan);
- _this._async_environment$_allModules.push(module);
- }
- },
- forwardModule$2: function(module, rule) {
- var view, t1, t2, t3, t4, t5, _i, other, _this = this;
- if (_this._async_environment$_forwardedModules == null)
- _this._async_environment$_forwardedModules = H.setRuntimeTypeInfo([], [[G.Module, B.AsyncCallable]]);
- if (_this._async_environment$_forwardedModuleNodes == null)
- _this._async_environment$_forwardedModuleNodes = P.LinkedHashMap_LinkedHashMap$_empty([G.Module, B.AsyncCallable], B.AstNode);
- view = R.ForwardedModuleView$(module, rule, B.AsyncCallable);
- for (t1 = _this._async_environment$_forwardedModules, t2 = t1.length, t3 = view.variables, t4 = view.functions, t5 = view.mixins, _i = 0; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- other = t1[_i];
- _this._async_environment$_assertNoConflicts$5(t3, other.get$variables(), "variable", other, rule);
- _this._async_environment$_assertNoConflicts$5(t4, J.get$functions$x(other), "function", other, rule);
- _this._async_environment$_assertNoConflicts$5(t5, other.get$mixins(), "mixin", other, rule);
- }
- _this._async_environment$_allModules.push(module);
- _this._async_environment$_forwardedModules.push(view);
- _this._async_environment$_forwardedModuleNodes.$indexSet(0, view, rule);
- },
- _async_environment$_assertNoConflicts$5: function(newMembers, oldMembers, type, other, newModuleNodeWithSpan) {
- var larger, smaller, t1, $name;
- if (newMembers.get$length(newMembers) < oldMembers.get$length(oldMembers)) {
- larger = oldMembers;
- smaller = newMembers;
- } else {
- larger = newMembers;
- smaller = oldMembers;
- }
- for (t1 = J.get$iterator$ax(smaller.get$keys()); t1.moveNext$0();) {
- $name = t1.get$current(t1);
- if (larger.containsKey$1($name)) {
- if (type === "variable")
- $name = "$" + H.S($name);
- throw H.wrapException(E.MultiSpanSassScriptException$("Two forwarded modules both define a " + type + " named " + H.S($name) + ".", "new @forward", P.LinkedHashMap_LinkedHashMap$_literal([this._async_environment$_forwardedModuleNodes.$index(0, other).get$span(), "original @forward"], Y.FileSpan, P.String)));
- }
- }
- },
- importForwards$1: function(module) {
- var t2, t3, forwardedVariableNames, forwardedFunctionNames, forwardedMixinNames, t4, t5, _i, shadowed, t6, i, _this = this,
- t1 = module._async_environment$_environment,
- forwarded = t1._async_environment$_forwardedModules;
- if (forwarded == null)
- return;
- if (_this._async_environment$_globalModules == null)
- _this._async_environment$_globalModules = P.LinkedHashSet_LinkedHashSet$_empty([G.Module, B.AsyncCallable]);
- if (_this._async_environment$_globalModuleNodes == null)
- _this._async_environment$_globalModuleNodes = P.LinkedHashMap_LinkedHashMap$_empty([G.Module, B.AsyncCallable], B.AstNode);
- if (_this._async_environment$_forwardedModules == null)
- _this._async_environment$_forwardedModules = H.setRuntimeTypeInfo([], [[G.Module, B.AsyncCallable]]);
- if (_this._async_environment$_forwardedModuleNodes == null)
- _this._async_environment$_forwardedModuleNodes = P.LinkedHashMap_LinkedHashMap$_empty([G.Module, B.AsyncCallable], B.AstNode);
- t2 = P.String;
- t3 = [H.getTypeArgumentByIndex(forwarded, 0), t2];
- forwardedVariableNames = P.LinkedHashSet_LinkedHashSet$from(new H.ExpandIterable(forwarded, new Q.AsyncEnvironment_importForwards_closure(), t3), t2);
- forwardedFunctionNames = P.LinkedHashSet_LinkedHashSet$from(new H.ExpandIterable(forwarded, new Q.AsyncEnvironment_importForwards_closure0(), t3), t2);
- forwardedMixinNames = P.LinkedHashSet_LinkedHashSet$from(new H.ExpandIterable(forwarded, new Q.AsyncEnvironment_importForwards_closure1(), t3), t2);
- t2 = _this._async_environment$_variables;
- t3 = t2.length;
- if (t3 === 1) {
- for (t3 = _this._async_environment$_globalModules.toList$0(0), t4 = t3.length, t5 = B.AsyncCallable, _i = 0; _i < t3.length; t3.length === t4 || (0, H.throwConcurrentModificationError)(t3), ++_i) {
- module = t3[_i];
- shadowed = B.ShadowedModuleView_ifNecessary(module, forwardedFunctionNames, forwardedMixinNames, forwardedVariableNames, t5);
- if (shadowed != null) {
- _this._async_environment$_globalModules.remove$1(0, module);
- _this._async_environment$_globalModules.add$1(0, shadowed);
- t6 = _this._async_environment$_globalModuleNodes;
- t6.$indexSet(0, shadowed, t6.remove$1(0, module));
- }
- }
- for (i = 0; t3 = _this._async_environment$_forwardedModules, i < t3.length; ++i) {
- module = t3[i];
- shadowed = B.ShadowedModuleView_ifNecessary(module, forwardedFunctionNames, forwardedMixinNames, forwardedVariableNames, t5);
- if (shadowed != null) {
- _this._async_environment$_forwardedModules[i] = shadowed;
- t3 = _this._async_environment$_forwardedModuleNodes;
- t3.$indexSet(0, shadowed, t3.remove$1(0, module));
- }
- }
- _this._async_environment$_globalModules.addAll$1(0, forwarded);
- _this._async_environment$_globalModuleNodes.addAll$1(0, t1._async_environment$_forwardedModuleNodes);
- t3 = _this._async_environment$_forwardedModules;
- (t3 && C.JSArray_methods).addAll$1(t3, forwarded);
- _this._async_environment$_forwardedModuleNodes.addAll$1(0, t1._async_environment$_forwardedModuleNodes);
- } else {
- t1 = _this._async_environment$_nestedForwardedModules;
- J.addAll$1$ax(C.JSArray_methods.get$last(t1 == null ? _this._async_environment$_nestedForwardedModules = P.List_List$generate(t3 - 1, new Q.AsyncEnvironment_importForwards_closure2(), true, [P.List, [G.Module, B.AsyncCallable]]) : t1), forwarded);
- }
- for (t1 = P._LinkedHashSetIterator$(forwardedVariableNames, forwardedVariableNames._collection$_modifications), t3 = _this._async_environment$_variableNodes, t4 = t3 != null, t5 = _this._async_environment$_variableIndices; t1.moveNext$0();) {
- t6 = t1._collection$_current;
- t5.remove$1(0, t6);
- J.remove$1$ax(C.JSArray_methods.get$last(t2), t6);
- if (t4)
- J.remove$1$ax(C.JSArray_methods.get$last(t3), t6);
- }
- for (t1 = P._LinkedHashSetIterator$(forwardedFunctionNames, forwardedFunctionNames._collection$_modifications), t2 = _this._async_environment$_functionIndices, t3 = _this._async_environment$_functions; t1.moveNext$0();) {
- t4 = t1._collection$_current;
- t2.remove$1(0, t4);
- J.remove$1$ax(C.JSArray_methods.get$last(t3), t4);
- }
- for (t1 = P._LinkedHashSetIterator$(forwardedMixinNames, forwardedMixinNames._collection$_modifications), t2 = _this._async_environment$_mixinIndices, t3 = _this._async_environment$_mixins; t1.moveNext$0();) {
- t4 = t1._collection$_current;
- t2.remove$1(0, t4);
- J.remove$1$ax(C.JSArray_methods.get$last(t3), t4);
- }
- },
- getVariable$2$namespace: function($name, namespace) {
- var t1, index, _this = this;
- if (namespace != null)
- return _this._async_environment$_getModule$1(namespace).get$variables().$index(0, $name);
- if (_this._async_environment$_lastVariableName === $name) {
- t1 = J.$index$asx(_this._async_environment$_variables[_this._async_environment$_lastVariableIndex], $name);
- return t1 == null ? _this._async_environment$_getVariableFromGlobalModule$1($name) : t1;
- }
- t1 = _this._async_environment$_variableIndices;
- index = t1.$index(0, $name);
- if (index != null) {
- _this._async_environment$_lastVariableName = $name;
- _this._async_environment$_lastVariableIndex = index;
- t1 = J.$index$asx(_this._async_environment$_variables[index], $name);
- return t1 == null ? _this._async_environment$_getVariableFromGlobalModule$1($name) : t1;
- }
- index = _this._async_environment$_variableIndex$1($name);
- if (index == null)
- return _this._async_environment$_getVariableFromGlobalModule$1($name);
- _this._async_environment$_lastVariableName = $name;
- _this._async_environment$_lastVariableIndex = index;
- t1.$indexSet(0, $name, index);
- t1 = J.$index$asx(_this._async_environment$_variables[index], $name);
- return t1 == null ? _this._async_environment$_getVariableFromGlobalModule$1($name) : t1;
- },
- getVariable$1: function($name) {
- return this.getVariable$2$namespace($name, null);
- },
- _async_environment$_getVariableFromGlobalModule$1: function($name) {
- return this._async_environment$_fromOneModule$2("variable", new Q.AsyncEnvironment__getVariableFromGlobalModule_closure($name));
- },
- getVariableNode$2$namespace: function($name, namespace) {
- var t1, index, _this = this;
- if (namespace != null)
- return _this._async_environment$_getModule$1(namespace).get$variableNodes().$index(0, $name);
- if (_this._async_environment$_lastVariableName === $name) {
- t1 = J.$index$asx(_this._async_environment$_variableNodes[_this._async_environment$_lastVariableIndex], $name);
- return t1 == null ? _this._async_environment$_getVariableNodeFromGlobalModule$1($name) : t1;
- }
- t1 = _this._async_environment$_variableIndices;
- index = t1.$index(0, $name);
- if (index != null) {
- _this._async_environment$_lastVariableName = $name;
- _this._async_environment$_lastVariableIndex = index;
- t1 = J.$index$asx(_this._async_environment$_variableNodes[index], $name);
- return t1 == null ? _this._async_environment$_getVariableNodeFromGlobalModule$1($name) : t1;
- }
- index = _this._async_environment$_variableIndex$1($name);
- if (index == null)
- return _this._async_environment$_getVariableNodeFromGlobalModule$1($name);
- _this._async_environment$_lastVariableName = $name;
- _this._async_environment$_lastVariableIndex = index;
- t1.$indexSet(0, $name, index);
- t1 = J.$index$asx(_this._async_environment$_variableNodes[index], $name);
- return t1 == null ? _this._async_environment$_getVariableNodeFromGlobalModule$1($name) : t1;
- },
- _async_environment$_getVariableNodeFromGlobalModule$1: function($name) {
- var t1, value;
- this._async_environment$_lastVariableName = $name;
- this._async_environment$_lastVariableIndex = 0;
- t1 = this._async_environment$_globalModules;
- if (t1 == null)
- return;
- for (t1 = P._LinkedHashSetIterator$(t1, t1._collection$_modifications); t1.moveNext$0();) {
- value = t1._collection$_current.get$variableNodes().$index(0, $name);
- if (value != null)
- return value;
- }
- return;
- },
- globalVariableExists$2$namespace: function($name, namespace) {
- if (namespace != null)
- return this._async_environment$_getModule$1(namespace).get$variables().containsKey$1($name);
- if (C.JSArray_methods.get$first(this._async_environment$_variables).containsKey$1($name))
- return true;
- return this._async_environment$_getVariableFromGlobalModule$1($name) != null;
- },
- globalVariableExists$1: function($name) {
- return this.globalVariableExists$2$namespace($name, null);
- },
- _async_environment$_variableIndex$1: function($name) {
- var t1, i;
- for (t1 = this._async_environment$_variables, i = t1.length - 1; i >= 0; --i)
- if (t1[i].containsKey$1($name))
- return i;
- return;
- },
- setVariable$5$global$namespace: function($name, value, nodeWithSpan, global, namespace) {
- var t1, moduleWithName, t2, t3, index, _this = this;
- if (namespace != null) {
- _this._async_environment$_getModule$1(namespace).setVariable$3($name, value, nodeWithSpan);
- return;
- }
- if (global || _this._async_environment$_variables.length === 1) {
- _this._async_environment$_variableIndices.putIfAbsent$2($name, new Q.AsyncEnvironment_setVariable_closure(_this, $name));
- t1 = _this._async_environment$_variables;
- if (!C.JSArray_methods.get$first(t1).containsKey$1($name) && _this._async_environment$_globalModules != null) {
- moduleWithName = _this._async_environment$_fromOneModule$2("variable", new Q.AsyncEnvironment_setVariable_closure0($name));
- if (moduleWithName != null) {
- moduleWithName.setVariable$3($name, value, nodeWithSpan);
- return;
- }
- }
- J.$indexSet$ax(C.JSArray_methods.get$first(t1), $name, value);
- t1 = _this._async_environment$_variableNodes;
- if (t1 != null)
- J.$indexSet$ax(C.JSArray_methods.get$first(t1), $name, nodeWithSpan);
- return;
- }
- if (_this._async_environment$_nestedForwardedModules != null && !_this._async_environment$_variableIndices.containsKey$1($name) && _this._async_environment$_variableIndex$1($name) == null)
- for (t1 = _this._async_environment$_nestedForwardedModules, t1.toString, t1 = new H.ReversedListIterable(t1, [H.getTypeArgumentByIndex(t1, 0)]), t1 = new H.ListIterator(t1, t1.get$length(t1)); t1.moveNext$0();)
- for (t2 = J.get$reversed$ax(t1.__internal$_current), t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();) {
- t3 = t2.__internal$_current;
- if (t3.get$variables().containsKey$1($name)) {
- t3.setVariable$3($name, value, nodeWithSpan);
- return;
- }
- }
- index = _this._async_environment$_lastVariableName === $name ? _this._async_environment$_lastVariableIndex : _this._async_environment$_variableIndices.putIfAbsent$2($name, new Q.AsyncEnvironment_setVariable_closure1(_this, $name));
- if (!_this._async_environment$_inSemiGlobalScope && index === 0) {
- index = _this._async_environment$_variables.length - 1;
- _this._async_environment$_variableIndices.$indexSet(0, $name, index);
- }
- _this._async_environment$_lastVariableName = $name;
- _this._async_environment$_lastVariableIndex = index;
- J.$indexSet$ax(_this._async_environment$_variables[index], $name, value);
- t1 = _this._async_environment$_variableNodes;
- if (t1 != null)
- J.$indexSet$ax(t1[index], $name, nodeWithSpan);
- },
- setVariable$4$global: function($name, value, nodeWithSpan, global) {
- return this.setVariable$5$global$namespace($name, value, nodeWithSpan, global, null);
- },
- setLocalVariable$3: function($name, value, nodeWithSpan) {
- var index, _this = this,
- t1 = _this._async_environment$_variables,
- t2 = t1.length;
- _this._async_environment$_lastVariableName = $name;
- index = _this._async_environment$_lastVariableIndex = t2 - 1;
- _this._async_environment$_variableIndices.$indexSet(0, $name, index);
- J.$indexSet$ax(t1[index], $name, value);
- t1 = _this._async_environment$_variableNodes;
- if (t1 != null)
- J.$indexSet$ax(t1[index], $name, nodeWithSpan);
- },
- getFunction$2$namespace: function($name, namespace) {
- var t1, index, _this = this;
- if (namespace != null) {
- t1 = _this._async_environment$_getModule$1(namespace);
- return t1.get$functions(t1).$index(0, $name);
- }
- t1 = _this._async_environment$_functionIndices;
- index = t1.$index(0, $name);
- if (index != null) {
- t1 = J.$index$asx(_this._async_environment$_functions[index], $name);
- return t1 == null ? _this._async_environment$_getFunctionFromGlobalModule$1($name) : t1;
- }
- index = _this._async_environment$_functionIndex$1($name);
- if (index == null)
- return _this._async_environment$_getFunctionFromGlobalModule$1($name);
- t1.$indexSet(0, $name, index);
- t1 = J.$index$asx(_this._async_environment$_functions[index], $name);
- return t1 == null ? _this._async_environment$_getFunctionFromGlobalModule$1($name) : t1;
- },
- _async_environment$_getFunctionFromGlobalModule$1: function($name) {
- return this._async_environment$_fromOneModule$2("function", new Q.AsyncEnvironment__getFunctionFromGlobalModule_closure($name));
- },
- _async_environment$_functionIndex$1: function($name) {
- var t1, i;
- for (t1 = this._async_environment$_functions, i = t1.length - 1; i >= 0; --i)
- if (t1[i].containsKey$1($name))
- return i;
- return;
- },
- getMixin$2$namespace: function($name, namespace) {
- var t1, index, _this = this;
- if (namespace != null)
- return _this._async_environment$_getModule$1(namespace).get$mixins().$index(0, $name);
- t1 = _this._async_environment$_mixinIndices;
- index = t1.$index(0, $name);
- if (index != null) {
- t1 = J.$index$asx(_this._async_environment$_mixins[index], $name);
- return t1 == null ? _this._async_environment$_getMixinFromGlobalModule$1($name) : t1;
- }
- index = _this._async_environment$_mixinIndex$1($name);
- if (index == null)
- return _this._async_environment$_getMixinFromGlobalModule$1($name);
- t1.$indexSet(0, $name, index);
- t1 = J.$index$asx(_this._async_environment$_mixins[index], $name);
- return t1 == null ? _this._async_environment$_getMixinFromGlobalModule$1($name) : t1;
- },
- _async_environment$_getMixinFromGlobalModule$1: function($name) {
- return this._async_environment$_fromOneModule$2("mixin", new Q.AsyncEnvironment__getMixinFromGlobalModule_closure($name));
- },
- _async_environment$_mixinIndex$1: function($name) {
- var t1, i;
- for (t1 = this._async_environment$_mixins, i = t1.length - 1; i >= 0; --i)
- if (t1[i].containsKey$1($name))
- return i;
- return;
- },
- withContent$2: function($content, callback) {
- return this.withContent$body$AsyncEnvironment($content, callback);
- },
- withContent$body$AsyncEnvironment: function($content, callback) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$self = this, oldContent;
- var $async$withContent$2 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- oldContent = $async$self._async_environment$_content;
- $async$self._async_environment$_content = $content;
- $async$goto = 2;
- return P._asyncAwait(callback.call$0(), $async$withContent$2);
- case 2:
- // returning from await.
- $async$self._async_environment$_content = oldContent;
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$withContent$2, $async$completer);
- },
- asMixin$1: function(callback) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$self = this, oldInMixin;
- var $async$asMixin$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- oldInMixin = $async$self._async_environment$_inMixin;
- $async$self._async_environment$_inMixin = true;
- $async$goto = 2;
- return P._asyncAwait(callback.call$0(), $async$asMixin$1);
- case 2:
- // returning from await.
- $async$self._async_environment$_inMixin = oldInMixin;
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$asMixin$1, $async$completer);
- },
- scope$1$3$semiGlobal$when: function(callback, semiGlobal, when, $T) {
- return this.scope$body$AsyncEnvironment(callback, semiGlobal, when, $T, $T);
- },
- scope$1$1: function(callback, $T) {
- return this.scope$1$3$semiGlobal$when(callback, false, true, $T);
- },
- scope$1$2$when: function(callback, when, $T) {
- return this.scope$1$3$semiGlobal$when(callback, false, when, $T);
- },
- scope$1$2$semiGlobal: function(callback, semiGlobal, $T) {
- return this.scope$1$3$semiGlobal$when(callback, semiGlobal, true, $T);
- },
- scope$body$AsyncEnvironment: function(callback, semiGlobal, when, $T, $async$type) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter($async$type),
- $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, wasInSemiGlobalScope, wasInSemiGlobalScope0, $name, name0, name1, t1, t2, t3, t4, t5;
- var $async$scope$1$3$semiGlobal$when = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1) {
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = !when ? 3 : 4;
- break;
- case 3:
- // then
- wasInSemiGlobalScope = $async$self._async_environment$_inSemiGlobalScope;
- $async$self._async_environment$_inSemiGlobalScope = semiGlobal;
- $async$handler = 5;
- $async$goto = 8;
- return P._asyncAwait(callback.call$0(), $async$scope$1$3$semiGlobal$when);
- case 8:
- // returning from await.
- t1 = $async$result;
- $async$returnValue = t1;
- $async$next = [1];
- // goto finally
- $async$goto = 6;
- break;
- $async$next.push(7);
- // goto finally
- $async$goto = 6;
- break;
- case 5:
- // uncaught
- $async$next = [2];
- case 6:
- // finally
- $async$handler = 2;
- $async$self._async_environment$_inSemiGlobalScope = wasInSemiGlobalScope;
- // goto the next finally handler
- $async$goto = $async$next.pop();
- break;
- case 7:
- // after finally
- case 4:
- // join
- semiGlobal = semiGlobal && $async$self._async_environment$_inSemiGlobalScope;
- wasInSemiGlobalScope0 = $async$self._async_environment$_inSemiGlobalScope;
- $async$self._async_environment$_inSemiGlobalScope = semiGlobal;
- t1 = $async$self._async_environment$_variables;
- t2 = P.String;
- C.JSArray_methods.add$1(t1, P.LinkedHashMap_LinkedHashMap$_empty(t2, F.Value));
- t3 = $async$self._async_environment$_variableNodes;
- if (t3 != null)
- C.JSArray_methods.add$1(t3, P.LinkedHashMap_LinkedHashMap$_empty(t2, B.AstNode));
- t3 = $async$self._async_environment$_functions;
- t4 = B.AsyncCallable;
- C.JSArray_methods.add$1(t3, P.LinkedHashMap_LinkedHashMap$_empty(t2, t4));
- t5 = $async$self._async_environment$_mixins;
- C.JSArray_methods.add$1(t5, P.LinkedHashMap_LinkedHashMap$_empty(t2, t4));
- t4 = $async$self._async_environment$_nestedForwardedModules;
- if (t4 != null)
- C.JSArray_methods.add$1(t4, H.setRuntimeTypeInfo([], [[G.Module, B.AsyncCallable]]));
- $async$handler = 9;
- $async$goto = 12;
- return P._asyncAwait(callback.call$0(), $async$scope$1$3$semiGlobal$when);
- case 12:
- // returning from await.
- t2 = $async$result;
- $async$returnValue = t2;
- $async$next = [1];
- // goto finally
- $async$goto = 10;
- break;
- $async$next.push(11);
- // goto finally
- $async$goto = 10;
- break;
- case 9:
- // uncaught
- $async$next = [2];
- case 10:
- // finally
- $async$handler = 2;
- $async$self._async_environment$_inSemiGlobalScope = wasInSemiGlobalScope0;
- $async$self._async_environment$_lastVariableIndex = $async$self._async_environment$_lastVariableName = null;
- for (t1 = J.get$iterator$ax(C.JSArray_methods.removeLast$0(t1).get$keys()), t2 = $async$self._async_environment$_variableIndices; t1.moveNext$0();) {
- $name = t1.get$current(t1);
- t2.remove$1(0, $name);
- }
- for (t1 = J.get$iterator$ax(C.JSArray_methods.removeLast$0(t3).get$keys()), t2 = $async$self._async_environment$_functionIndices; t1.moveNext$0();) {
- name0 = t1.get$current(t1);
- t2.remove$1(0, name0);
- }
- for (t1 = J.get$iterator$ax(C.JSArray_methods.removeLast$0(t5).get$keys()), t2 = $async$self._async_environment$_mixinIndices; t1.moveNext$0();) {
- name1 = t1.get$current(t1);
- t2.remove$1(0, name1);
- }
- t1 = $async$self._async_environment$_nestedForwardedModules;
- if (t1 != null)
- C.JSArray_methods.removeLast$0(t1);
- // goto the next finally handler
- $async$goto = $async$next.pop();
- break;
- case 11:
- // after finally
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- case 2:
- // rethrow
- return P._asyncRethrow($async$currentError, $async$completer);
- }
- });
- return P._asyncStartSync($async$scope$1$3$semiGlobal$when, $async$completer);
- },
- toImplicitConfiguration$0: function() {
- var t2, t3, t4, t5, i, values, nodes, t6, t7,
- t1 = P.String,
- configuration = P.LinkedHashMap_LinkedHashMap$_empty(t1, Z.ConfiguredValue);
- for (t2 = this._async_environment$_variables, t3 = this._async_environment$_variableNodes, t4 = t3 == null, t5 = B.AstNode, i = 0; i < t2.length; ++i) {
- values = t2[i];
- nodes = t4 ? P.LinkedHashMap_LinkedHashMap$_empty(t1, t5) : t3[i];
- for (t6 = J.get$iterator$ax(values.get$keys()); t6.moveNext$0();) {
- t7 = t6.get$current(t6);
- configuration.$indexSet(0, t7, new Z.ConfiguredValue(values.$index(0, t7), null, nodes.$index(0, t7)));
- }
- }
- return new A.Configuration(configuration, null, true);
- },
- _async_environment$_getModule$1: function(namespace) {
- var module = this._async_environment$_modules.$index(0, namespace);
- if (module != null)
- return module;
- throw H.wrapException(E.SassScriptException$('There is no module with the namespace "' + namespace + '".'));
- },
- _async_environment$_fromOneModule$1$2: function(type, callback) {
- var t2, value, valueInModule, t3, t4, t5,
- t1 = this._async_environment$_nestedForwardedModules;
- if (t1 != null)
- for (t1 = new H.ReversedListIterable(t1, [H.getTypeArgumentByIndex(t1, 0)]), t1 = new H.ListIterator(t1, t1.get$length(t1)); t1.moveNext$0();)
- for (t2 = J.get$reversed$ax(t1.__internal$_current), t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();) {
- value = callback.call$1(t2.__internal$_current);
- if (value != null)
- return value;
- }
- t1 = this._async_environment$_globalModules;
- if (t1 == null)
- return;
- for (t1 = P._LinkedHashSetIterator$(t1, t1._collection$_modifications), value = null; t1.moveNext$0();) {
- valueInModule = callback.call$1(t1._collection$_current);
- if (valueInModule == null)
- continue;
- if (value != null) {
- t1 = "This " + type + " is available from multiple global modules.";
- t2 = type + " use";
- t3 = P.LinkedHashMap_LinkedHashMap$_empty(Y.FileSpan, P.String);
- for (t4 = this._async_environment$_globalModuleNodes.get$entries(), t4 = t4.get$iterator(t4); t4.moveNext$0();) {
- t5 = t4.get$current(t4);
- if (callback.call$1(t5.key) != null)
- t3.$indexSet(0, t5.value.get$span(), "includes " + type);
- }
- throw H.wrapException(E.MultiSpanSassScriptException$(t1, t2, t3));
- }
- value = valueInModule;
- }
- return value;
- },
- _async_environment$_fromOneModule$2: function(type, callback) {
- return this._async_environment$_fromOneModule$1$2(type, callback, null);
- }
- };
- Q.AsyncEnvironment_importForwards_closure.prototype = {
- call$1: function(module) {
- return module.get$variables().get$keys();
- }
- };
- Q.AsyncEnvironment_importForwards_closure0.prototype = {
- call$1: function(module) {
- return module.get$functions(module).get$keys();
- }
- };
- Q.AsyncEnvironment_importForwards_closure1.prototype = {
- call$1: function(module) {
- return module.get$mixins().get$keys();
- }
- };
- Q.AsyncEnvironment_importForwards_closure2.prototype = {
- call$1: function(_) {
- return H.setRuntimeTypeInfo([], [[G.Module, B.AsyncCallable]]);
- },
- $signature: 49
- };
- Q.AsyncEnvironment__getVariableFromGlobalModule_closure.prototype = {
- call$1: function(module) {
- return module.get$variables().$index(0, this.name);
- }
- };
- Q.AsyncEnvironment_setVariable_closure.prototype = {
- call$0: function() {
- var t1 = this.$this;
- t1._async_environment$_lastVariableName = this.name;
- return t1._async_environment$_lastVariableIndex = 0;
- }
- };
- Q.AsyncEnvironment_setVariable_closure0.prototype = {
- call$1: function(module) {
- return module.get$variables().containsKey$1(this.name) ? module : null;
- }
- };
- Q.AsyncEnvironment_setVariable_closure1.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = t1._async_environment$_variableIndex$1(this.name);
- return t2 == null ? t1._async_environment$_variables.length - 1 : t2;
- }
- };
- Q.AsyncEnvironment__getFunctionFromGlobalModule_closure.prototype = {
- call$1: function(module) {
- return module.get$functions(module).$index(0, this.name);
- }
- };
- Q.AsyncEnvironment__getMixinFromGlobalModule_closure.prototype = {
- call$1: function(module) {
- return module.get$mixins().$index(0, this.name);
- }
- };
- Q._EnvironmentModule0.prototype = {
- get$url: function() {
- return this.css.get$span().file.url;
- },
- setVariable$3: function($name, value, nodeWithSpan) {
- var t1, t2,
- module = this._async_environment$_modulesByVariable.$index(0, $name);
- if (module != null) {
- module.setVariable$3($name, value, nodeWithSpan);
- return;
- }
- t1 = this._async_environment$_environment;
- t2 = t1._async_environment$_variables;
- if (!C.JSArray_methods.get$first(t2).containsKey$1($name))
- throw H.wrapException(E.SassScriptException$("Undefined variable."));
- J.$indexSet$ax(C.JSArray_methods.get$first(t2), $name, value);
- t1 = t1._async_environment$_variableNodes;
- if (t1 != null)
- J.$indexSet$ax(C.JSArray_methods.get$first(t1), $name, nodeWithSpan);
- return;
- },
- cloneCss$0: function() {
- var newCssAndExtender, _this = this,
- t1 = _this.css;
- if (J.get$isEmpty$asx(t1.get$children()))
- return _this;
- newCssAndExtender = V.cloneCssStylesheet(t1, _this.extender);
- return Q._EnvironmentModule$_0(_this._async_environment$_environment, newCssAndExtender.item1, newCssAndExtender.item2, _this._async_environment$_modulesByVariable, _this.variables, _this.variableNodes, _this.functions, _this.mixins, _this.transitivelyContainsCss, _this.transitivelyContainsExtensions);
- },
- toString$0: function(_) {
- var t1 = this.css.get$span().file;
- return $.$get$context().prettyUri$1(t1.url);
- },
- $isModule: 1,
- $asModule: function() {
- return [B.AsyncCallable];
- },
- get$upstream: function() {
- return this.upstream;
- },
- get$variables: function() {
- return this.variables;
- },
- get$variableNodes: function() {
- return this.variableNodes;
- },
- get$functions: function(receiver) {
- return this.functions;
- },
- get$mixins: function() {
- return this.mixins;
- },
- get$extender: function() {
- return this.extender;
- },
- get$css: function(receiver) {
- return this.css;
- },
- get$transitivelyContainsCss: function() {
- return this.transitivelyContainsCss;
- },
- get$transitivelyContainsExtensions: function() {
- return this.transitivelyContainsExtensions;
- }
- };
- Q._EnvironmentModule__EnvironmentModule_closure5.prototype = {
- call$1: function(module) {
- return module.get$variables();
- }
- };
- Q._EnvironmentModule__EnvironmentModule_closure6.prototype = {
- call$1: function(module) {
- return module.get$variableNodes();
- }
- };
- Q._EnvironmentModule__EnvironmentModule_closure7.prototype = {
- call$1: function(module) {
- return module.get$functions(module);
- }
- };
- Q._EnvironmentModule__EnvironmentModule_closure8.prototype = {
- call$1: function(module) {
- return module.get$mixins();
- }
- };
- Q._EnvironmentModule__EnvironmentModule_closure9.prototype = {
- call$1: function(module) {
- return module.get$transitivelyContainsCss();
- }
- };
- Q._EnvironmentModule__EnvironmentModule_closure10.prototype = {
- call$1: function(module) {
- return module.get$transitivelyContainsExtensions();
- }
- };
- O.AsyncImportCache.prototype = {
- canonicalize$4$baseImporter$baseUrl$forImport: function(url, baseImporter, baseUrl, forImport) {
- return this.canonicalize$body$AsyncImportCache(url, baseImporter, baseUrl, forImport);
- },
- canonicalize$body$AsyncImportCache: function(url, baseImporter, baseUrl, forImport) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter([S.Tuple3, B.AsyncImporter, P.Uri, P.Uri]),
- $async$returnValue, $async$self = this, resolvedUrl, canonicalUrl, t1;
- var $async$canonicalize$4$baseImporter$baseUrl$forImport = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = baseImporter != null ? 3 : 4;
- break;
- case 3:
- // then
- resolvedUrl = baseUrl != null ? baseUrl.resolveUri$1(url) : url;
- $async$goto = 5;
- return P._asyncAwait($async$self._async_import_cache$_canonicalize$3(baseImporter, resolvedUrl, forImport), $async$canonicalize$4$baseImporter$baseUrl$forImport);
- case 5:
- // returning from await.
- canonicalUrl = $async$result;
- if (canonicalUrl != null) {
- t1 = P.Uri;
- $async$returnValue = new S.Tuple3(baseImporter, canonicalUrl, resolvedUrl, [B.AsyncImporter, t1, t1]);
- // goto return
- $async$goto = 1;
- break;
- }
- case 4:
- // join
- $async$goto = 6;
- return P._asyncAwait(B.putIfAbsentAsync($async$self._async_import_cache$_canonicalizeCache, new S.Tuple2(url, forImport, [P.Uri, P.bool]), new O.AsyncImportCache_canonicalize_closure($async$self, url, forImport), [S.Tuple2, P.Uri, P.bool], [S.Tuple3, B.AsyncImporter, P.Uri, P.Uri]), $async$canonicalize$4$baseImporter$baseUrl$forImport);
- case 6:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$canonicalize$4$baseImporter$baseUrl$forImport, $async$completer);
- },
- _async_import_cache$_canonicalize$3: function(importer, url, forImport) {
- return this._canonicalize$body$AsyncImportCache(importer, url, forImport);
- },
- _canonicalize$body$AsyncImportCache: function(importer, url, forImport) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Uri),
- $async$returnValue, $async$self = this, result;
- var $async$_async_import_cache$_canonicalize$3 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait(forImport ? B.inImportRule(new O.AsyncImportCache__canonicalize_closure(importer, url)) : importer.canonicalize$1(url), $async$_async_import_cache$_canonicalize$3);
- case 3:
- // returning from await.
- result = $async$result;
- if ((result == null ? null : result.get$scheme()) === "")
- $async$self._async_import_cache$_logger.warn$2$deprecation("Importer " + H.S(importer) + " canonicalized " + H.S(url) + " to " + H.S(result) + ".\nRelative canonical URLs are deprecated and will eventually be disallowed.\n", true);
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_import_cache$_canonicalize$3, $async$completer);
- },
- import$4$baseImporter$baseUrl$forImport: function(url, baseImporter, baseUrl, forImport) {
- return this.import$body$AsyncImportCache(url, baseImporter, baseUrl, forImport);
- },
- import$body$AsyncImportCache: function(url, baseImporter, baseUrl, forImport) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter([S.Tuple2, B.AsyncImporter, V.Stylesheet]),
- $async$returnValue, $async$self = this, t1, tuple, $async$temp1, $async$temp2;
- var $async$import$4$baseImporter$baseUrl$forImport = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait($async$self.canonicalize$4$baseImporter$baseUrl$forImport(url, baseImporter, baseUrl, forImport), $async$import$4$baseImporter$baseUrl$forImport);
- case 3:
- // returning from await.
- tuple = $async$result;
- if (tuple == null) {
- // goto return
- $async$goto = 1;
- break;
- }
- t1 = tuple.item1;
- $async$temp1 = S;
- $async$temp2 = t1;
- $async$goto = 4;
- return P._asyncAwait($async$self.importCanonical$3(t1, tuple.item2, tuple.item3), $async$import$4$baseImporter$baseUrl$forImport);
- case 4:
- // returning from await.
- $async$returnValue = new $async$temp1.Tuple2($async$temp2, $async$result, [B.AsyncImporter, V.Stylesheet]);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$import$4$baseImporter$baseUrl$forImport, $async$completer);
- },
- importCanonical$3: function(importer, canonicalUrl, originalUrl) {
- return this.importCanonical$body$AsyncImportCache(importer, canonicalUrl, originalUrl);
- },
- importCanonical$body$AsyncImportCache: function(importer, canonicalUrl, originalUrl) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(V.Stylesheet),
- $async$returnValue, $async$self = this;
- var $async$importCanonical$3 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait(B.putIfAbsentAsync($async$self._async_import_cache$_importCache, canonicalUrl, new O.AsyncImportCache_importCanonical_closure($async$self, importer, canonicalUrl, originalUrl), P.Uri, V.Stylesheet), $async$importCanonical$3);
- case 3:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$importCanonical$3, $async$completer);
- },
- humanize$1: function(canonicalUrl) {
- var t1 = this._async_import_cache$_canonicalizeCache.get$values(),
- t2 = H.getRuntimeTypeArgument(t1, "Iterable", 0),
- t3 = P.Uri,
- url = Y.minBy(new H.MappedIterable(new H.WhereIterable(t1, new O.AsyncImportCache_humanize_closure(canonicalUrl), [t2]), new O.AsyncImportCache_humanize_closure0(), [t2, t3]), new O.AsyncImportCache_humanize_closure1(), t3, null);
- if (url == null)
- return canonicalUrl;
- t1 = $.$get$url();
- return url.resolve$1(X.ParsedPath_ParsedPath$parse(canonicalUrl.get$path(canonicalUrl), t1.style).get$basename());
- }
- };
- O.AsyncImportCache_canonicalize_closure.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter([S.Tuple3, B.AsyncImporter, P.Uri, P.Uri]),
- $async$returnValue, $async$self = this, t1, t2, t3, t4, t5, _i, importer, canonicalUrl;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this, t2 = t1._async_import_cache$_importers, t3 = t2.length, t4 = $async$self.url, t5 = $async$self.forImport, _i = 0;
- case 3:
- // for condition
- if (!(_i < t2.length)) {
- // goto after for
- $async$goto = 5;
- break;
- }
- importer = t2[_i];
- $async$goto = 6;
- return P._asyncAwait(t1._async_import_cache$_canonicalize$3(importer, t4, t5), $async$call$0);
- case 6:
- // returning from await.
- canonicalUrl = $async$result;
- if (canonicalUrl != null) {
- t1 = P.Uri;
- $async$returnValue = new S.Tuple3(importer, canonicalUrl, t4, [B.AsyncImporter, t1, t1]);
- // goto return
- $async$goto = 1;
- break;
- }
- case 4:
- // for update
- t2.length === t3 || (0, H.throwConcurrentModificationError)(t2), ++_i;
- // goto for condition
- $async$goto = 3;
- break;
- case 5:
- // after for
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- O.AsyncImportCache__canonicalize_closure.prototype = {
- call$0: function() {
- return this.importer.canonicalize$1(this.url);
- }
- };
- O.AsyncImportCache_importCanonical_closure.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(V.Stylesheet),
- $async$returnValue, $async$self = this, t2, t3, t4, t5, t1, result;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.canonicalUrl;
- $async$goto = 3;
- return P._asyncAwait($async$self.importer.load$1(t1), $async$call$0);
- case 3:
- // returning from await.
- result = $async$result;
- if (result == null) {
- // goto return
- $async$goto = 1;
- break;
- }
- t2 = $async$self.$this;
- t2._async_import_cache$_resultsCache.$indexSet(0, t1, result);
- t3 = result.contents;
- t4 = result.syntax;
- t5 = $async$self.originalUrl;
- t1 = t5 == null ? t1 : t5.resolveUri$1(t1);
- $async$returnValue = V.Stylesheet_Stylesheet$parse(t3, t4, t2._async_import_cache$_logger, t1);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- O.AsyncImportCache_humanize_closure.prototype = {
- call$1: function(tuple) {
- var t1 = tuple == null ? null : tuple.item2;
- return J.$eq$(t1, this.canonicalUrl);
- }
- };
- O.AsyncImportCache_humanize_closure0.prototype = {
- call$1: function(tuple) {
- return tuple.item3;
- }
- };
- O.AsyncImportCache_humanize_closure1.prototype = {
- call$1: function(url) {
- return J.get$length$asx(J.get$path$x(url));
- },
- $signature: 10
- };
- D.Callable.prototype = {};
- B.AsyncCallable.prototype = {};
- S.AsyncBuiltInCallable.prototype = {
- callbackFor$2: function(positional, names) {
- return new S.Tuple2(this._async_built_in$_arguments, this._async_built_in$_callback, [B.ArgumentDeclaration, {func: 1, ret: {futureOr: 1, type: F.Value}, args: [[P.List, F.Value]]}]);
- },
- $isAsyncCallable: 1,
- get$name: function() {
- return this.name;
- }
- };
- S.AsyncBuiltInCallable$mixin_closure.prototype = {
- call$1: function($arguments) {
- return this.$call$body$AsyncBuiltInCallable$mixin_closure($arguments);
- },
- $call$body$AsyncBuiltInCallable$mixin_closure: function($arguments) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$returnValue, $async$self = this;
- var $async$call$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait($async$self.callback.call$1($arguments), $async$call$1);
- case 3:
- // returning from await.
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$1, $async$completer);
- }
- };
- Q.BuiltInCallable.prototype = {
- callbackFor$2: function(positional, names) {
- var t1, t2, fuzzyMatch, minMismatchDistance, _i, overload, t3, mismatchDistance, t4;
- for (t1 = this._overloads, t2 = t1.length, fuzzyMatch = null, minMismatchDistance = null, _i = 0; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- overload = t1[_i];
- t3 = overload.item1;
- if (t3.matches$2(positional, names))
- return overload;
- mismatchDistance = t3.$arguments.length - positional;
- if (minMismatchDistance != null) {
- t3 = Math.abs(mismatchDistance);
- t4 = Math.abs(minMismatchDistance);
- if (t3 > t4)
- continue;
- if (t3 === t4 && mismatchDistance < 0)
- continue;
- }
- minMismatchDistance = mismatchDistance;
- fuzzyMatch = overload;
- }
- return fuzzyMatch;
- },
- withName$1: function($name) {
- return new Q.BuiltInCallable($name, this._overloads);
- },
- $isCallable: 1,
- $isAsyncCallable: 1,
- $isAsyncBuiltInCallable: 1,
- get$name: function() {
- return this.name;
- }
- };
- Q.BuiltInCallable$mixin_closure.prototype = {
- call$1: function($arguments) {
- this.callback.call$1($arguments);
- return;
- },
- $signature: 23
- };
- L.PlainCssCallable.prototype = {
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof L.PlainCssCallable && this.name == other.name;
- },
- get$hashCode: function(_) {
- return J.get$hashCode$(this.name);
- },
- $isCallable: 1,
- $isAsyncCallable: 1,
- get$name: function() {
- return this.name;
- }
- };
- E.UserDefinedCallable.prototype = {
- get$name: function() {
- return this.declaration.name;
- },
- $isCallable: 1,
- $isAsyncCallable: 1
- };
- X.closure70.prototype = {
- call$2: function(_, color) {
- return color;
- }
- };
- X.closure71.prototype = {
- call$2: function($name, _) {
- return $name;
- }
- };
- U._compileStylesheet_closure.prototype = {
- call$1: function(url) {
- var t1, t2, _null = null;
- if (url === "")
- t1 = J.toString$0$(P.Uri_Uri$dataFromString(P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(this.stylesheet.span.file._decodedChars, 0, _null), 0, _null), C.C_Utf8Codec, _null));
- else {
- t1 = P.Uri_parse(url);
- t2 = this.importCache._resultsCache.$index(0, t1);
- t2 = t2 == null ? _null : t2.get$sourceMapUrl();
- t1 = J.toString$0$(t2 == null ? t1 : t2);
- }
- return t1;
- }
- };
- A.Configuration.prototype = {
- throughForward$1: function($forward) {
- var t3, t4,
- newValues = this._values,
- t1 = P.String,
- t2 = Z.ConfiguredValue;
- if (newValues.get$isEmpty(newValues))
- return C.Configuration_Map_empty_null_true;
- t3 = $forward.prefix;
- if (t3 != null)
- newValues = new R.UnprefixedMapView(newValues, t3, [t2]);
- t3 = $forward.shownVariables;
- if (t3 != null)
- newValues = K.LimitedMapView$safelist(newValues, t3, t1, t2);
- else {
- t3 = $forward.hiddenVariables;
- if (t3 == null)
- t4 = null;
- else {
- t4 = t3._base;
- t4 = t4.get$isNotEmpty(t4);
- }
- if (t4 === true)
- newValues = K.LimitedMapView$blocklist(newValues, t3, t1, t2);
- }
- return this.isImplicit ? new A.Configuration(newValues, null, true) : new A.Configuration(newValues, this.nodeWithSpan, false);
- }
- };
- Z.ConfiguredValue.prototype = {};
- O.Environment.prototype = {
- closure$0: function() {
- var t7, t8, t9, _this = this,
- t1 = _this._globalModules,
- t2 = _this._globalModuleNodes,
- t3 = _this._forwardedModules,
- t4 = _this._forwardedModuleNodes,
- t5 = _this._nestedForwardedModules,
- t6 = _this._variables;
- t6 = H.setRuntimeTypeInfo(t6.slice(0), [H.getTypeArgumentByIndex(t6, 0)]);
- t7 = _this._variableNodes;
- if (t7 == null)
- t7 = null;
- else
- t7 = H.setRuntimeTypeInfo(t7.slice(0), [H.getTypeArgumentByIndex(t7, 0)]);
- t8 = _this._functions;
- t8 = H.setRuntimeTypeInfo(t8.slice(0), [H.getTypeArgumentByIndex(t8, 0)]);
- t9 = _this._mixins;
- t9 = H.setRuntimeTypeInfo(t9.slice(0), [H.getTypeArgumentByIndex(t9, 0)]);
- return O.Environment$_(_this._environment$_modules, _this._namespaceNodes, t1, t2, t3, t4, t5, _this._allModules, t6, t7, t8, t9, _this._content);
- },
- addModule$3$namespace: function(module, nodeWithSpan, namespace) {
- var t1, t2, _this = this;
- if (namespace == null) {
- t1 = _this._globalModules;
- if (t1 == null)
- t1 = _this._globalModules = P.LinkedHashSet_LinkedHashSet$_empty([G.Module, D.Callable]);
- if (_this._globalModuleNodes == null)
- _this._globalModuleNodes = P.LinkedHashMap_LinkedHashMap$_empty([G.Module, D.Callable], B.AstNode);
- t1.add$1(0, module);
- _this._globalModuleNodes.$indexSet(0, module, nodeWithSpan);
- _this._allModules.push(module);
- for (t1 = J.get$iterator$ax(C.JSArray_methods.get$first(_this._variables).get$keys()); t1.moveNext$0();) {
- t2 = t1.get$current(t1);
- if (module.get$variables().containsKey$1(t2))
- throw H.wrapException(E.SassScriptException$('This module and the new module both define a variable named "$' + H.S(t2) + '".'));
- }
- } else {
- t1 = _this._environment$_modules;
- if (t1.containsKey$1(namespace))
- throw H.wrapException(E.MultiSpanSassScriptException$("There's already a module with namespace \"" + namespace + '".', "new @use", P.LinkedHashMap_LinkedHashMap$_literal([_this._namespaceNodes.$index(0, namespace).get$span(), "original @use"], Y.FileSpan, P.String)));
- t1.$indexSet(0, namespace, module);
- _this._namespaceNodes.$indexSet(0, namespace, nodeWithSpan);
- _this._allModules.push(module);
- }
- },
- forwardModule$2: function(module, rule) {
- var view, t1, t2, t3, t4, t5, _i, other, _this = this;
- if (_this._forwardedModules == null)
- _this._forwardedModules = H.setRuntimeTypeInfo([], [[G.Module, D.Callable]]);
- if (_this._forwardedModuleNodes == null)
- _this._forwardedModuleNodes = P.LinkedHashMap_LinkedHashMap$_empty([G.Module, D.Callable], B.AstNode);
- view = R.ForwardedModuleView$(module, rule, D.Callable);
- for (t1 = _this._forwardedModules, t2 = t1.length, t3 = view.variables, t4 = view.functions, t5 = view.mixins, _i = 0; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- other = t1[_i];
- _this._assertNoConflicts$5(t3, other.get$variables(), "variable", other, rule);
- _this._assertNoConflicts$5(t4, J.get$functions$x(other), "function", other, rule);
- _this._assertNoConflicts$5(t5, other.get$mixins(), "mixin", other, rule);
- }
- _this._allModules.push(module);
- _this._forwardedModules.push(view);
- _this._forwardedModuleNodes.$indexSet(0, view, rule);
- },
- _assertNoConflicts$5: function(newMembers, oldMembers, type, other, newModuleNodeWithSpan) {
- var larger, smaller, t1, $name;
- if (newMembers.get$length(newMembers) < oldMembers.get$length(oldMembers)) {
- larger = oldMembers;
- smaller = newMembers;
- } else {
- larger = newMembers;
- smaller = oldMembers;
- }
- for (t1 = J.get$iterator$ax(smaller.get$keys()); t1.moveNext$0();) {
- $name = t1.get$current(t1);
- if (larger.containsKey$1($name)) {
- if (type === "variable")
- $name = "$" + H.S($name);
- throw H.wrapException(E.MultiSpanSassScriptException$("Two forwarded modules both define a " + type + " named " + H.S($name) + ".", "new @forward", P.LinkedHashMap_LinkedHashMap$_literal([this._forwardedModuleNodes.$index(0, other).get$span(), "original @forward"], Y.FileSpan, P.String)));
- }
- }
- },
- importForwards$1: function(module) {
- var t2, t3, forwardedVariableNames, forwardedFunctionNames, forwardedMixinNames, t4, t5, _i, shadowed, t6, i, _this = this,
- t1 = module._environment,
- forwarded = t1._forwardedModules;
- if (forwarded == null)
- return;
- if (_this._globalModules == null)
- _this._globalModules = P.LinkedHashSet_LinkedHashSet$_empty([G.Module, D.Callable]);
- if (_this._globalModuleNodes == null)
- _this._globalModuleNodes = P.LinkedHashMap_LinkedHashMap$_empty([G.Module, D.Callable], B.AstNode);
- if (_this._forwardedModules == null)
- _this._forwardedModules = H.setRuntimeTypeInfo([], [[G.Module, D.Callable]]);
- if (_this._forwardedModuleNodes == null)
- _this._forwardedModuleNodes = P.LinkedHashMap_LinkedHashMap$_empty([G.Module, D.Callable], B.AstNode);
- t2 = P.String;
- t3 = [H.getTypeArgumentByIndex(forwarded, 0), t2];
- forwardedVariableNames = P.LinkedHashSet_LinkedHashSet$from(new H.ExpandIterable(forwarded, new O.Environment_importForwards_closure(), t3), t2);
- forwardedFunctionNames = P.LinkedHashSet_LinkedHashSet$from(new H.ExpandIterable(forwarded, new O.Environment_importForwards_closure0(), t3), t2);
- forwardedMixinNames = P.LinkedHashSet_LinkedHashSet$from(new H.ExpandIterable(forwarded, new O.Environment_importForwards_closure1(), t3), t2);
- t2 = _this._variables;
- t3 = t2.length;
- if (t3 === 1) {
- for (t3 = _this._globalModules.toList$0(0), t4 = t3.length, t5 = D.Callable, _i = 0; _i < t3.length; t3.length === t4 || (0, H.throwConcurrentModificationError)(t3), ++_i) {
- module = t3[_i];
- shadowed = B.ShadowedModuleView_ifNecessary(module, forwardedFunctionNames, forwardedMixinNames, forwardedVariableNames, t5);
- if (shadowed != null) {
- _this._globalModules.remove$1(0, module);
- _this._globalModules.add$1(0, shadowed);
- t6 = _this._globalModuleNodes;
- t6.$indexSet(0, shadowed, t6.remove$1(0, module));
- }
- }
- for (i = 0; t3 = _this._forwardedModules, i < t3.length; ++i) {
- module = t3[i];
- shadowed = B.ShadowedModuleView_ifNecessary(module, forwardedFunctionNames, forwardedMixinNames, forwardedVariableNames, t5);
- if (shadowed != null) {
- _this._forwardedModules[i] = shadowed;
- t3 = _this._forwardedModuleNodes;
- t3.$indexSet(0, shadowed, t3.remove$1(0, module));
- }
- }
- _this._globalModules.addAll$1(0, forwarded);
- _this._globalModuleNodes.addAll$1(0, t1._forwardedModuleNodes);
- t3 = _this._forwardedModules;
- (t3 && C.JSArray_methods).addAll$1(t3, forwarded);
- _this._forwardedModuleNodes.addAll$1(0, t1._forwardedModuleNodes);
- } else {
- t1 = _this._nestedForwardedModules;
- J.addAll$1$ax(C.JSArray_methods.get$last(t1 == null ? _this._nestedForwardedModules = P.List_List$generate(t3 - 1, new O.Environment_importForwards_closure2(), true, [P.List, [G.Module, D.Callable]]) : t1), forwarded);
- }
- for (t1 = P._LinkedHashSetIterator$(forwardedVariableNames, forwardedVariableNames._collection$_modifications), t3 = _this._variableNodes, t4 = t3 != null, t5 = _this._variableIndices; t1.moveNext$0();) {
- t6 = t1._collection$_current;
- t5.remove$1(0, t6);
- J.remove$1$ax(C.JSArray_methods.get$last(t2), t6);
- if (t4)
- J.remove$1$ax(C.JSArray_methods.get$last(t3), t6);
- }
- for (t1 = P._LinkedHashSetIterator$(forwardedFunctionNames, forwardedFunctionNames._collection$_modifications), t2 = _this._functionIndices, t3 = _this._functions; t1.moveNext$0();) {
- t4 = t1._collection$_current;
- t2.remove$1(0, t4);
- J.remove$1$ax(C.JSArray_methods.get$last(t3), t4);
- }
- for (t1 = P._LinkedHashSetIterator$(forwardedMixinNames, forwardedMixinNames._collection$_modifications), t2 = _this._mixinIndices, t3 = _this._mixins; t1.moveNext$0();) {
- t4 = t1._collection$_current;
- t2.remove$1(0, t4);
- J.remove$1$ax(C.JSArray_methods.get$last(t3), t4);
- }
- },
- getVariable$2$namespace: function($name, namespace) {
- var t1, index, _this = this;
- if (namespace != null)
- return _this._getModule$1(namespace).get$variables().$index(0, $name);
- if (_this._lastVariableName === $name) {
- t1 = J.$index$asx(_this._variables[_this._lastVariableIndex], $name);
- return t1 == null ? _this._getVariableFromGlobalModule$1($name) : t1;
- }
- t1 = _this._variableIndices;
- index = t1.$index(0, $name);
- if (index != null) {
- _this._lastVariableName = $name;
- _this._lastVariableIndex = index;
- t1 = J.$index$asx(_this._variables[index], $name);
- return t1 == null ? _this._getVariableFromGlobalModule$1($name) : t1;
- }
- index = _this._variableIndex$1($name);
- if (index == null)
- return _this._getVariableFromGlobalModule$1($name);
- _this._lastVariableName = $name;
- _this._lastVariableIndex = index;
- t1.$indexSet(0, $name, index);
- t1 = J.$index$asx(_this._variables[index], $name);
- return t1 == null ? _this._getVariableFromGlobalModule$1($name) : t1;
- },
- getVariable$1: function($name) {
- return this.getVariable$2$namespace($name, null);
- },
- _getVariableFromGlobalModule$1: function($name) {
- return this._fromOneModule$2("variable", new O.Environment__getVariableFromGlobalModule_closure($name));
- },
- getVariableNode$2$namespace: function($name, namespace) {
- var t1, index, _this = this;
- if (namespace != null)
- return _this._getModule$1(namespace).get$variableNodes().$index(0, $name);
- if (_this._lastVariableName === $name) {
- t1 = J.$index$asx(_this._variableNodes[_this._lastVariableIndex], $name);
- return t1 == null ? _this._getVariableNodeFromGlobalModule$1($name) : t1;
- }
- t1 = _this._variableIndices;
- index = t1.$index(0, $name);
- if (index != null) {
- _this._lastVariableName = $name;
- _this._lastVariableIndex = index;
- t1 = J.$index$asx(_this._variableNodes[index], $name);
- return t1 == null ? _this._getVariableNodeFromGlobalModule$1($name) : t1;
- }
- index = _this._variableIndex$1($name);
- if (index == null)
- return _this._getVariableNodeFromGlobalModule$1($name);
- _this._lastVariableName = $name;
- _this._lastVariableIndex = index;
- t1.$indexSet(0, $name, index);
- t1 = J.$index$asx(_this._variableNodes[index], $name);
- return t1 == null ? _this._getVariableNodeFromGlobalModule$1($name) : t1;
- },
- _getVariableNodeFromGlobalModule$1: function($name) {
- var t1, value;
- this._lastVariableName = $name;
- this._lastVariableIndex = 0;
- t1 = this._globalModules;
- if (t1 == null)
- return;
- for (t1 = P._LinkedHashSetIterator$(t1, t1._collection$_modifications); t1.moveNext$0();) {
- value = t1._collection$_current.get$variableNodes().$index(0, $name);
- if (value != null)
- return value;
- }
- return;
- },
- globalVariableExists$2$namespace: function($name, namespace) {
- if (namespace != null)
- return this._getModule$1(namespace).get$variables().containsKey$1($name);
- if (C.JSArray_methods.get$first(this._variables).containsKey$1($name))
- return true;
- return this._getVariableFromGlobalModule$1($name) != null;
- },
- globalVariableExists$1: function($name) {
- return this.globalVariableExists$2$namespace($name, null);
- },
- _variableIndex$1: function($name) {
- var t1, i;
- for (t1 = this._variables, i = t1.length - 1; i >= 0; --i)
- if (t1[i].containsKey$1($name))
- return i;
- return;
- },
- setVariable$5$global$namespace: function($name, value, nodeWithSpan, global, namespace) {
- var t1, moduleWithName, t2, t3, index, _this = this;
- if (namespace != null) {
- _this._getModule$1(namespace).setVariable$3($name, value, nodeWithSpan);
- return;
- }
- if (global || _this._variables.length === 1) {
- _this._variableIndices.putIfAbsent$2($name, new O.Environment_setVariable_closure(_this, $name));
- t1 = _this._variables;
- if (!C.JSArray_methods.get$first(t1).containsKey$1($name) && _this._globalModules != null) {
- moduleWithName = _this._fromOneModule$2("variable", new O.Environment_setVariable_closure0($name));
- if (moduleWithName != null) {
- moduleWithName.setVariable$3($name, value, nodeWithSpan);
- return;
- }
- }
- J.$indexSet$ax(C.JSArray_methods.get$first(t1), $name, value);
- t1 = _this._variableNodes;
- if (t1 != null)
- J.$indexSet$ax(C.JSArray_methods.get$first(t1), $name, nodeWithSpan);
- return;
- }
- if (_this._nestedForwardedModules != null && !_this._variableIndices.containsKey$1($name) && _this._variableIndex$1($name) == null)
- for (t1 = _this._nestedForwardedModules, t1.toString, t1 = new H.ReversedListIterable(t1, [H.getTypeArgumentByIndex(t1, 0)]), t1 = new H.ListIterator(t1, t1.get$length(t1)); t1.moveNext$0();)
- for (t2 = J.get$reversed$ax(t1.__internal$_current), t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();) {
- t3 = t2.__internal$_current;
- if (t3.get$variables().containsKey$1($name)) {
- t3.setVariable$3($name, value, nodeWithSpan);
- return;
- }
- }
- index = _this._lastVariableName === $name ? _this._lastVariableIndex : _this._variableIndices.putIfAbsent$2($name, new O.Environment_setVariable_closure1(_this, $name));
- if (!_this._inSemiGlobalScope && index === 0) {
- index = _this._variables.length - 1;
- _this._variableIndices.$indexSet(0, $name, index);
- }
- _this._lastVariableName = $name;
- _this._lastVariableIndex = index;
- J.$indexSet$ax(_this._variables[index], $name, value);
- t1 = _this._variableNodes;
- if (t1 != null)
- J.$indexSet$ax(t1[index], $name, nodeWithSpan);
- },
- setVariable$4$global: function($name, value, nodeWithSpan, global) {
- return this.setVariable$5$global$namespace($name, value, nodeWithSpan, global, null);
- },
- setLocalVariable$3: function($name, value, nodeWithSpan) {
- var index, _this = this,
- t1 = _this._variables,
- t2 = t1.length;
- _this._lastVariableName = $name;
- index = _this._lastVariableIndex = t2 - 1;
- _this._variableIndices.$indexSet(0, $name, index);
- J.$indexSet$ax(t1[index], $name, value);
- t1 = _this._variableNodes;
- if (t1 != null)
- J.$indexSet$ax(t1[index], $name, nodeWithSpan);
- },
- getFunction$2$namespace: function($name, namespace) {
- var t1, index, _this = this;
- if (namespace != null) {
- t1 = _this._getModule$1(namespace);
- return t1.get$functions(t1).$index(0, $name);
- }
- t1 = _this._functionIndices;
- index = t1.$index(0, $name);
- if (index != null) {
- t1 = J.$index$asx(_this._functions[index], $name);
- return t1 == null ? _this._getFunctionFromGlobalModule$1($name) : t1;
- }
- index = _this._functionIndex$1($name);
- if (index == null)
- return _this._getFunctionFromGlobalModule$1($name);
- t1.$indexSet(0, $name, index);
- t1 = J.$index$asx(_this._functions[index], $name);
- return t1 == null ? _this._getFunctionFromGlobalModule$1($name) : t1;
- },
- _getFunctionFromGlobalModule$1: function($name) {
- return this._fromOneModule$2("function", new O.Environment__getFunctionFromGlobalModule_closure($name));
- },
- _functionIndex$1: function($name) {
- var t1, i;
- for (t1 = this._functions, i = t1.length - 1; i >= 0; --i)
- if (t1[i].containsKey$1($name))
- return i;
- return;
- },
- getMixin$2$namespace: function($name, namespace) {
- var t1, index, _this = this;
- if (namespace != null)
- return _this._getModule$1(namespace).get$mixins().$index(0, $name);
- t1 = _this._mixinIndices;
- index = t1.$index(0, $name);
- if (index != null) {
- t1 = J.$index$asx(_this._mixins[index], $name);
- return t1 == null ? _this._getMixinFromGlobalModule$1($name) : t1;
- }
- index = _this._mixinIndex$1($name);
- if (index == null)
- return _this._getMixinFromGlobalModule$1($name);
- t1.$indexSet(0, $name, index);
- t1 = J.$index$asx(_this._mixins[index], $name);
- return t1 == null ? _this._getMixinFromGlobalModule$1($name) : t1;
- },
- _getMixinFromGlobalModule$1: function($name) {
- return this._fromOneModule$2("mixin", new O.Environment__getMixinFromGlobalModule_closure($name));
- },
- _mixinIndex$1: function($name) {
- var t1, i;
- for (t1 = this._mixins, i = t1.length - 1; i >= 0; --i)
- if (t1[i].containsKey$1($name))
- return i;
- return;
- },
- scope$1$3$semiGlobal$when: function(callback, semiGlobal, when) {
- var wasInSemiGlobalScope, wasInSemiGlobalScope0, $name, name0, name1, t1, t2, t3, t4, t5, _this = this;
- if (!when) {
- wasInSemiGlobalScope = _this._inSemiGlobalScope;
- _this._inSemiGlobalScope = semiGlobal;
- try {
- t1 = callback.call$0();
- return t1;
- } finally {
- _this._inSemiGlobalScope = wasInSemiGlobalScope;
- }
- }
- semiGlobal = semiGlobal && _this._inSemiGlobalScope;
- wasInSemiGlobalScope0 = _this._inSemiGlobalScope;
- _this._inSemiGlobalScope = semiGlobal;
- t1 = _this._variables;
- t2 = P.String;
- C.JSArray_methods.add$1(t1, P.LinkedHashMap_LinkedHashMap$_empty(t2, F.Value));
- t3 = _this._variableNodes;
- if (t3 != null)
- C.JSArray_methods.add$1(t3, P.LinkedHashMap_LinkedHashMap$_empty(t2, B.AstNode));
- t3 = _this._functions;
- t4 = D.Callable;
- C.JSArray_methods.add$1(t3, P.LinkedHashMap_LinkedHashMap$_empty(t2, t4));
- t5 = _this._mixins;
- C.JSArray_methods.add$1(t5, P.LinkedHashMap_LinkedHashMap$_empty(t2, t4));
- t4 = _this._nestedForwardedModules;
- if (t4 != null)
- C.JSArray_methods.add$1(t4, H.setRuntimeTypeInfo([], [[G.Module, D.Callable]]));
- try {
- t2 = callback.call$0();
- return t2;
- } finally {
- _this._inSemiGlobalScope = wasInSemiGlobalScope0;
- _this._lastVariableIndex = _this._lastVariableName = null;
- for (t1 = J.get$iterator$ax(C.JSArray_methods.removeLast$0(t1).get$keys()), t2 = _this._variableIndices; t1.moveNext$0();) {
- $name = t1.get$current(t1);
- t2.remove$1(0, $name);
- }
- for (t1 = J.get$iterator$ax(C.JSArray_methods.removeLast$0(t3).get$keys()), t2 = _this._functionIndices; t1.moveNext$0();) {
- name0 = t1.get$current(t1);
- t2.remove$1(0, name0);
- }
- for (t1 = J.get$iterator$ax(C.JSArray_methods.removeLast$0(t5).get$keys()), t2 = _this._mixinIndices; t1.moveNext$0();) {
- name1 = t1.get$current(t1);
- t2.remove$1(0, name1);
- }
- t1 = _this._nestedForwardedModules;
- if (t1 != null)
- C.JSArray_methods.removeLast$0(t1);
- }
- },
- scope$1$1: function(callback, $T) {
- return this.scope$1$3$semiGlobal$when(callback, false, true, $T);
- },
- scope$1$2$when: function(callback, when, $T) {
- return this.scope$1$3$semiGlobal$when(callback, false, when, $T);
- },
- scope$1$2$semiGlobal: function(callback, semiGlobal, $T) {
- return this.scope$1$3$semiGlobal$when(callback, semiGlobal, true, $T);
- },
- toImplicitConfiguration$0: function() {
- var t2, t3, t4, t5, i, values, nodes, t6, t7,
- t1 = P.String,
- configuration = P.LinkedHashMap_LinkedHashMap$_empty(t1, Z.ConfiguredValue);
- for (t2 = this._variables, t3 = this._variableNodes, t4 = t3 == null, t5 = B.AstNode, i = 0; i < t2.length; ++i) {
- values = t2[i];
- nodes = t4 ? P.LinkedHashMap_LinkedHashMap$_empty(t1, t5) : t3[i];
- for (t6 = J.get$iterator$ax(values.get$keys()); t6.moveNext$0();) {
- t7 = t6.get$current(t6);
- configuration.$indexSet(0, t7, new Z.ConfiguredValue(values.$index(0, t7), null, nodes.$index(0, t7)));
- }
- }
- return new A.Configuration(configuration, null, true);
- },
- _getModule$1: function(namespace) {
- var module = this._environment$_modules.$index(0, namespace);
- if (module != null)
- return module;
- throw H.wrapException(E.SassScriptException$('There is no module with the namespace "' + namespace + '".'));
- },
- _fromOneModule$1$2: function(type, callback) {
- var t2, value, valueInModule, t3, t4, t5,
- t1 = this._nestedForwardedModules;
- if (t1 != null)
- for (t1 = new H.ReversedListIterable(t1, [H.getTypeArgumentByIndex(t1, 0)]), t1 = new H.ListIterator(t1, t1.get$length(t1)); t1.moveNext$0();)
- for (t2 = J.get$reversed$ax(t1.__internal$_current), t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();) {
- value = callback.call$1(t2.__internal$_current);
- if (value != null)
- return value;
- }
- t1 = this._globalModules;
- if (t1 == null)
- return;
- for (t1 = P._LinkedHashSetIterator$(t1, t1._collection$_modifications), value = null; t1.moveNext$0();) {
- valueInModule = callback.call$1(t1._collection$_current);
- if (valueInModule == null)
- continue;
- if (value != null) {
- t1 = "This " + type + " is available from multiple global modules.";
- t2 = type + " use";
- t3 = P.LinkedHashMap_LinkedHashMap$_empty(Y.FileSpan, P.String);
- for (t4 = this._globalModuleNodes.get$entries(), t4 = t4.get$iterator(t4); t4.moveNext$0();) {
- t5 = t4.get$current(t4);
- if (callback.call$1(t5.key) != null)
- t3.$indexSet(0, t5.value.get$span(), "includes " + type);
- }
- throw H.wrapException(E.MultiSpanSassScriptException$(t1, t2, t3));
- }
- value = valueInModule;
- }
- return value;
- },
- _fromOneModule$2: function(type, callback) {
- return this._fromOneModule$1$2(type, callback, null);
- }
- };
- O.Environment_importForwards_closure.prototype = {
- call$1: function(module) {
- return module.get$variables().get$keys();
- }
- };
- O.Environment_importForwards_closure0.prototype = {
- call$1: function(module) {
- return module.get$functions(module).get$keys();
- }
- };
- O.Environment_importForwards_closure1.prototype = {
- call$1: function(module) {
- return module.get$mixins().get$keys();
- }
- };
- O.Environment_importForwards_closure2.prototype = {
- call$1: function(_) {
- return H.setRuntimeTypeInfo([], [[G.Module, D.Callable]]);
- },
- $signature: 61
- };
- O.Environment__getVariableFromGlobalModule_closure.prototype = {
- call$1: function(module) {
- return module.get$variables().$index(0, this.name);
- }
- };
- O.Environment_setVariable_closure.prototype = {
- call$0: function() {
- var t1 = this.$this;
- t1._lastVariableName = this.name;
- return t1._lastVariableIndex = 0;
- }
- };
- O.Environment_setVariable_closure0.prototype = {
- call$1: function(module) {
- return module.get$variables().containsKey$1(this.name) ? module : null;
- }
- };
- O.Environment_setVariable_closure1.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = t1._variableIndex$1(this.name);
- return t2 == null ? t1._variables.length - 1 : t2;
- }
- };
- O.Environment__getFunctionFromGlobalModule_closure.prototype = {
- call$1: function(module) {
- return module.get$functions(module).$index(0, this.name);
- }
- };
- O.Environment__getMixinFromGlobalModule_closure.prototype = {
- call$1: function(module) {
- return module.get$mixins().$index(0, this.name);
- }
- };
- O._EnvironmentModule.prototype = {
- get$url: function() {
- return this.css.get$span().file.url;
- },
- setVariable$3: function($name, value, nodeWithSpan) {
- var t1, t2,
- module = this._modulesByVariable.$index(0, $name);
- if (module != null) {
- module.setVariable$3($name, value, nodeWithSpan);
- return;
- }
- t1 = this._environment;
- t2 = t1._variables;
- if (!C.JSArray_methods.get$first(t2).containsKey$1($name))
- throw H.wrapException(E.SassScriptException$("Undefined variable."));
- J.$indexSet$ax(C.JSArray_methods.get$first(t2), $name, value);
- t1 = t1._variableNodes;
- if (t1 != null)
- J.$indexSet$ax(C.JSArray_methods.get$first(t1), $name, nodeWithSpan);
- return;
- },
- cloneCss$0: function() {
- var newCssAndExtender, _this = this,
- t1 = _this.css;
- if (J.get$isEmpty$asx(t1.get$children()))
- return _this;
- newCssAndExtender = V.cloneCssStylesheet(t1, _this.extender);
- return O._EnvironmentModule$_(_this._environment, newCssAndExtender.item1, newCssAndExtender.item2, _this._modulesByVariable, _this.variables, _this.variableNodes, _this.functions, _this.mixins, _this.transitivelyContainsCss, _this.transitivelyContainsExtensions);
- },
- toString$0: function(_) {
- var t1 = this.css.get$span().file;
- return $.$get$context().prettyUri$1(t1.url);
- },
- $isModule: 1,
- $asModule: function() {
- return [D.Callable];
- },
- get$upstream: function() {
- return this.upstream;
- },
- get$variables: function() {
- return this.variables;
- },
- get$variableNodes: function() {
- return this.variableNodes;
- },
- get$functions: function(receiver) {
- return this.functions;
- },
- get$mixins: function() {
- return this.mixins;
- },
- get$extender: function() {
- return this.extender;
- },
- get$css: function(receiver) {
- return this.css;
- },
- get$transitivelyContainsCss: function() {
- return this.transitivelyContainsCss;
- },
- get$transitivelyContainsExtensions: function() {
- return this.transitivelyContainsExtensions;
- }
- };
- O._EnvironmentModule__EnvironmentModule_closure.prototype = {
- call$1: function(module) {
- return module.get$variables();
- }
- };
- O._EnvironmentModule__EnvironmentModule_closure0.prototype = {
- call$1: function(module) {
- return module.get$variableNodes();
- }
- };
- O._EnvironmentModule__EnvironmentModule_closure1.prototype = {
- call$1: function(module) {
- return module.get$functions(module);
- }
- };
- O._EnvironmentModule__EnvironmentModule_closure2.prototype = {
- call$1: function(module) {
- return module.get$mixins();
- }
- };
- O._EnvironmentModule__EnvironmentModule_closure3.prototype = {
- call$1: function(module) {
- return module.get$transitivelyContainsCss();
- }
- };
- O._EnvironmentModule__EnvironmentModule_closure4.prototype = {
- call$1: function(module) {
- return module.get$transitivelyContainsExtensions();
- }
- };
- E.SassException.prototype = {
- get$trace: function() {
- var t1 = A.Frame;
- return new Y.Trace(P.List_List$unmodifiable(H.setRuntimeTypeInfo([B.frameForSpan(G.SourceSpanException.prototype.get$span.call(this), "root stylesheet", null)], [t1]), t1), new P._StringStackTrace(null));
- },
- get$span: function() {
- return G.SourceSpanException.prototype.get$span.call(this);
- },
- toString$1$color: function(_, color) {
- var t2, _i, frame, t3,
- buffer = new P.StringBuffer(""),
- t1 = "Error: " + H.S(this._span_exception$_message) + "\n";
- buffer._contents = t1;
- buffer._contents = t1 + G.SourceSpanException.prototype.get$span.call(this).highlight$1$color(color);
- for (t1 = this.get$trace().toString$0(0).split("\n"), t2 = t1.length, _i = 0; _i < t2; ++_i) {
- frame = t1[_i];
- if (J.get$length$asx(frame) === 0)
- continue;
- t3 = buffer._contents += "\n";
- buffer._contents = t3 + (" " + H.S(frame));
- }
- t1 = buffer._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- toString$0: function($receiver) {
- return this.toString$1$color($receiver, null);
- },
- toCssString$0: function() {
- var stringMessage, rune,
- t1 = $._glyphs,
- t2 = $._glyphs = C.C_AsciiGlyphSet,
- t3 = this.toString$1$color(0, false),
- commentMessage = H.stringReplaceAllUnchecked(t3, "*/", "*\u2215");
- $._glyphs = t1 === C.C_AsciiGlyphSet ? t2 : C.C_UnicodeGlyphSet;
- stringMessage = new P.StringBuffer("");
- for (t1 = new P.RuneIterator(N.serializeValue(new D.SassString(this.toString$1$color(0, false), true), true, true)); t1.moveNext$0();) {
- rune = t1._currentCodePoint;
- if (rune > 255) {
- stringMessage._contents += H.Primitives_stringFromCharCode(92);
- stringMessage._contents += C.JSInt_methods.toRadixString$1(rune, 16);
- t2 = stringMessage._contents += H.Primitives_stringFromCharCode(32);
- } else
- t2 = stringMessage._contents += H.Primitives_stringFromCharCode(rune);
- }
- return "/* " + C.JSArray_methods.join$1(H.setRuntimeTypeInfo(commentMessage.split("\n"), [P.String]), "\n * ") + ' */\n\nbody::before {\n font-family: "Source Code Pro", "SF Mono", Monaco, Inconsolata, "Fira Mono",\n "Droid Sans Mono", monospace, monospace;\n white-space: pre;\n display: block;\n padding: 1em;\n margin-bottom: 1em;\n border-bottom: 2px solid black;\n content: ' + stringMessage.toString$0(0) + ";\n}";
- }
- };
- E.MultiSpanSassException.prototype = {
- toString$1$color: function(_, color) {
- var t2, _i, frame, t3, _this = this,
- useColor = color === true && true,
- buffer = new P.StringBuffer(""),
- t1 = "Error: " + H.S(_this._span_exception$_message) + "\n";
- buffer._contents = t1;
- buffer._contents = t1 + U.Highlighter$multiple(G.SourceSpanException.prototype.get$span.call(_this), _this.primaryLabel, _this.secondarySpans, useColor, null, null).highlight$0();
- for (t1 = _this.get$trace().toString$0(0).split("\n"), t2 = t1.length, _i = 0; _i < t2; ++_i) {
- frame = t1[_i];
- if (J.get$length$asx(frame) === 0)
- continue;
- t3 = buffer._contents += "\n";
- buffer._contents = t3 + (" " + H.S(frame));
- }
- t1 = buffer._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- toString$0: function($receiver) {
- return this.toString$1$color($receiver, null);
- }
- };
- E.SassRuntimeException.prototype = {
- get$trace: function() {
- return this.trace;
- }
- };
- E.MultiSpanSassRuntimeException.prototype = {$isSassRuntimeException: 1,
- get$trace: function() {
- return this.trace;
- }
- };
- E.SassFormatException.prototype = {
- get$source: function() {
- return P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(G.SourceSpanException.prototype.get$span.call(this).file._decodedChars, 0, null), 0, null);
- },
- $isFormatException: 1,
- $isSourceSpanFormatException: 1
- };
- E.SassScriptException.prototype = {
- toString$0: function(_) {
- return this.message + "\n\nBUG: This should include a source span!";
- },
- get$message: function(receiver) {
- return this.message;
- }
- };
- E.MultiSpanSassScriptException.prototype = {};
- F.main_printError.prototype = {
- call$2: function(error, stackTrace) {
- var t1 = this._box_0;
- if (t1.printedError)
- $.$get$stderr().writeln$0();
- t1.printedError = true;
- t1 = $.$get$stderr();
- t1.writeln$1(error);
- if (stackTrace != null) {
- t1.writeln$0();
- t1.writeln$1(C.JSString_methods.trimRight$0(Y.Trace_Trace$from(stackTrace).get$terse().toString$0(0)));
- }
- }
- };
- F.main_closure0.prototype = {
- call$0: function() {
- var t1, exception;
- try {
- t1 = this.destination;
- if (t1 != null && !this._box_0.options.get$emitErrorCss())
- B.deleteFile(t1);
- } catch (exception) {
- if (!(H.unwrapException(exception) instanceof B.FileSystemException))
- throw exception;
- }
- }
- };
- D._writeSourceMap_closure.prototype = {
- call$1: function(url) {
- return J.toString$0$(this.options.sourceMapUrl$2(P.Uri_parse(url), this.destination));
- }
- };
- B.ExecutableOptions.prototype = {
- get$interactive: function() {
- var t2, invalidOptions, _i, option,
- t1 = this._interactive;
- if (t1 != null)
- return t1;
- t1 = this._options;
- t2 = H.boolTypeCast(t1.$index(0, "interactive"));
- this._interactive = t2;
- if (!t2)
- return false;
- invalidOptions = ["stdin", "indented", "style", "source-map", "source-map-urls", "embed-sources", "embed-source-map", "update", "watch"];
- for (t2 = t1._parser.options._collection$_map, _i = 0; _i < 9; ++_i) {
- option = invalidOptions[_i];
- if (t2.$index(0, option) == null)
- H.throwExpression(P.ArgumentError$('Could not find an option named "' + option + '".'));
- if (t1._parsed.containsKey$1(option))
- throw H.wrapException(B.UsageException$("--" + option + " isn't allowed with --interactive."));
- }
- return true;
- },
- get$color: function() {
- var t1 = this._options;
- if (t1.wasParsed$1("color"))
- t1 = H.boolTypeCast(t1.$index(0, "color"));
- else {
- t1 = self.process.stdout.isTTY;
- if (t1 == null)
- t1 = false;
- }
- return t1;
- },
- get$emitErrorCss: function() {
- var t1 = H.boolTypeCast(this._options.$index(0, "error-css"));
- if (t1 == null) {
- this._ensureSources$0();
- t1 = this._sourcesToDestinations.get$values().any$1(0, new B.ExecutableOptions_emitErrorCss_closure());
- }
- return t1;
- },
- _ensureSources$0: function() {
- var t1, stdin, t2, t3, $directories, t4, colonArgs, positionalArgs, t5, t6, t7, message, target, source, destination, seen, i, t8, t9, _this = this, _null = null,
- _s18_ = 'Duplicate source "';
- if (_this._sourcesToDestinations != null)
- return;
- t1 = _this._options;
- stdin = H.boolTypeCast(t1.$index(0, "stdin"));
- t2 = t1.rest;
- if (t2.get$length(t2) === 0 && !stdin)
- B.ExecutableOptions__fail("Compile Sass to CSS.");
- t3 = P.String;
- $directories = P.LinkedHashSet_LinkedHashSet$_empty(t3);
- for (t4 = new H.ListIterator(t2, t2.get$length(t2)), colonArgs = false, positionalArgs = false; t4.moveNext$0();) {
- t5 = t4.__internal$_current;
- t6 = t5.length;
- if (t6 === 0)
- B.ExecutableOptions__fail('Invalid argument "".');
- if (H.stringContainsUnchecked(t5, ":", 0)) {
- if (t6 > 2) {
- t7 = J.getInterceptor$s(t5)._codeUnitAt$1(t5, 0);
- if (!(t7 >= 97 && t7 <= 122))
- t7 = t7 >= 65 && t7 <= 90;
- else
- t7 = true;
- t7 = t7 && C.JSString_methods._codeUnitAt$1(t5, 1) === 58;
- } else
- t7 = false;
- if (t7) {
- if (2 > t6)
- H.throwExpression(P.RangeError$range(2, 0, t6, _null, _null));
- t6 = H.stringContainsUnchecked(t5, ":", 2);
- } else
- t6 = true;
- } else
- t6 = false;
- if (t6)
- colonArgs = true;
- else if (B.dirExists(t5))
- $directories.add$1(0, t5);
- else
- positionalArgs = true;
- }
- if (positionalArgs || t2.get$length(t2) === 0) {
- if (colonArgs)
- B.ExecutableOptions__fail('Positional and ":" arguments may not both be used.');
- else if (stdin) {
- if (J.get$length$asx(t2._collection$_source) > 1)
- B.ExecutableOptions__fail("Only one argument is allowed with --stdin.");
- else if (H.boolTypeCast(t1.$index(0, "update")))
- B.ExecutableOptions__fail("--update is not allowed with --stdin.");
- else if (H.boolTypeCast(t1.$index(0, "watch")))
- B.ExecutableOptions__fail("--watch is not allowed with --stdin.");
- _this._sourcesToDestinations = H.ConstantMap_ConstantMap$from(P.LinkedHashMap__makeLiteral([null, t2.get$length(t2) === 0 ? _null : t2.get$first(t2)]), t3, t3);
- } else {
- t4 = t2._collection$_source;
- t5 = J.getInterceptor$asx(t4);
- if (t5.get$length(t4) > 2)
- B.ExecutableOptions__fail("Only two positional args may be passed.");
- else if ($directories._collection$_length !== 0) {
- message = 'Directory "' + H.S($directories.get$first($directories)) + '" may not be a positional arg.';
- target = t2.get$last(t2);
- B.ExecutableOptions__fail(J.$eq$($directories.get$first($directories), t2.get$first(t2)) && !B.fileExists(target) ? message + ('\nTo compile all CSS in "' + H.S($directories.get$first($directories)) + '" to "' + H.S(target) + '", use `sass ' + H.S($directories.get$first($directories)) + ":" + H.S(target) + "`.") : message);
- } else {
- source = J.$eq$(t2.get$first(t2), "-") ? _null : t2.get$first(t2);
- destination = t5.get$length(t4) === 1 ? _null : t2.get$last(t2);
- if (destination == null)
- if (H.boolTypeCast(t1.$index(0, "update")))
- B.ExecutableOptions__fail("--update is not allowed when printing to stdout.");
- else if (H.boolTypeCast(t1.$index(0, "watch")))
- B.ExecutableOptions__fail("--watch is not allowed when printing to stdout.");
- t1 = P.LinkedHashMap_LinkedHashMap$_literal([source, destination], t3, t3);
- t2 = K.PathMap__create(_null, t3);
- t2.addAll$1(0, t1);
- _this._sourcesToDestinations = new P.UnmodifiableMapView(new K.PathMap(t2, [t3]), [t3, t3]);
- }
- }
- _this._sourceDirectoriesToDestinations = C.Map_empty6;
- return;
- }
- if (stdin)
- B.ExecutableOptions__fail('--stdin may not be used with ":" arguments.');
- seen = P.LinkedHashSet_LinkedHashSet$_empty(t3);
- t1 = K.PathMap__create(_null, t3);
- t4 = [t3];
- t5 = K.PathMap__create(_null, t3);
- for (t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();) {
- t6 = t2.__internal$_current;
- if ($directories.contains$1(0, t6)) {
- if (!seen.add$1(0, t6))
- B.ExecutableOptions__fail(_s18_ + H.S(t6) + '".');
- t5.$indexSet(0, t6, t6);
- t1.addAll$1(0, _this._listSourceDirectory$2(t6, t6));
- continue;
- }
- for (t7 = t6.length, destination = _null, source = destination, i = 0; i < t7; ++i) {
- if (i === 1) {
- t8 = i - 1;
- if (t7 > t8 + 2) {
- t9 = C.JSString_methods.codeUnitAt$1(t6, t8);
- if (!(t9 >= 97 && t9 <= 122))
- t9 = t9 >= 65 && t9 <= 90;
- else
- t9 = true;
- t8 = t9 && C.JSString_methods.codeUnitAt$1(t6, t8 + 1) === 58;
- } else
- t8 = false;
- } else
- t8 = false;
- if (t8)
- continue;
- if (C.JSString_methods._codeUnitAt$1(t6, i) === 58)
- if (source == null) {
- source = C.JSString_methods.substring$2(t6, 0, i);
- destination = C.JSString_methods.substring$1(t6, i + 1);
- } else {
- if (i === source.length + 2) {
- t8 = i - 1;
- if (t7 > t8 + 2) {
- t9 = C.JSString_methods.codeUnitAt$1(t6, t8);
- if (!(t9 >= 97 && t9 <= 122))
- t9 = t9 >= 65 && t9 <= 90;
- else
- t9 = true;
- t8 = t9 && C.JSString_methods.codeUnitAt$1(t6, t8 + 1) === 58;
- } else
- t8 = false;
- t8 = !t8;
- } else
- t8 = true;
- if (t8)
- B.ExecutableOptions__fail('"' + t6 + '" may only contain one ":".');
- }
- }
- if (!seen.add$1(0, source))
- B.ExecutableOptions__fail(_s18_ + H.S(source) + '".');
- if (source === "-")
- t1.$indexSet(0, _null, destination);
- else if (B.dirExists(source)) {
- t5.$indexSet(0, source, destination);
- t1.addAll$1(0, _this._listSourceDirectory$2(source, destination));
- } else
- t1.$indexSet(0, source, destination);
- }
- t2 = [t3, t3];
- _this._sourcesToDestinations = new P.UnmodifiableMapView(new K.PathMap(t1, t4), t2);
- _this._sourceDirectoriesToDestinations = new P.UnmodifiableMapView(new K.PathMap(t5, t4), t2);
- },
- _listSourceDirectory$2: function(source, destination) {
- var t2, t3, t4, t5, _null = null,
- t1 = P.String;
- t1 = P.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
- for (t2 = J.get$iterator$ax(B.listDir(source, true)), t3 = source == destination; t2.moveNext$0();) {
- t4 = t2.get$current(t2);
- if (this._isEntrypoint$1(t4))
- t5 = !(t3 && X.ParsedPath_ParsedPath$parse(t4, $.$get$context().style)._splitExtension$0()[1] === ".css");
- else
- t5 = false;
- if (t5) {
- t5 = $.$get$context();
- t1.$indexSet(0, t4, t5.join$8(0, destination, t5.withoutExtension$1(t5.relative$2$from(t4, source)) + ".css", _null, _null, _null, _null, _null, _null));
- }
- }
- return t1;
- },
- _isEntrypoint$1: function(path) {
- var extension,
- t1 = $.$get$context().style;
- if (J.startsWith$1$s(X.ParsedPath_ParsedPath$parse(path, t1).get$basename(), "_"))
- return false;
- extension = X.ParsedPath_ParsedPath$parse(path, t1)._splitExtension$0()[1];
- return extension === ".scss" || extension === ".sass" || extension === ".css";
- },
- get$emitSourceMap: function() {
- var t2, writeToStdout, _this = this,
- _s10_ = "source-map",
- _s15_ = "source-map-urls",
- _s13_ = "embed-sources",
- _s16_ = "embed-source-map",
- t1 = _this._options;
- if (!H.boolTypeCast(t1.$index(0, _s10_)))
- if (t1.wasParsed$1(_s15_))
- B.ExecutableOptions__fail("--source-map-urls isn't allowed with --no-source-map.");
- else if (t1.wasParsed$1(_s13_))
- B.ExecutableOptions__fail("--embed-sources isn't allowed with --no-source-map.");
- else if (t1.wasParsed$1(_s16_))
- B.ExecutableOptions__fail("--embed-source-map isn't allowed with --no-source-map.");
- _this._ensureSources$0();
- t2 = _this._sourcesToDestinations;
- if (t2.get$length(t2) === 1) {
- _this._ensureSources$0();
- t2 = _this._sourcesToDestinations.get$values();
- writeToStdout = t2.get$single(t2) == null;
- } else
- writeToStdout = false;
- if (!writeToStdout)
- return H.boolTypeCast(t1.$index(0, _s10_));
- if (J.$eq$(_this._ifParsed$1(_s15_), "relative"))
- B.ExecutableOptions__fail("--source-map-urls=relative isn't allowed when printing to stdout.");
- if (H.boolTypeCast(t1.$index(0, _s16_)))
- return H.boolTypeCast(t1.$index(0, _s10_));
- else if (J.$eq$(_this._ifParsed$1(_s10_), true))
- B.ExecutableOptions__fail("When printing to stdout, --source-map requires --embed-source-map.");
- else if (t1.wasParsed$1(_s15_))
- B.ExecutableOptions__fail("When printing to stdout, --source-map-urls requires --embed-source-map.");
- else if (H.boolTypeCast(t1.$index(0, _s13_)))
- B.ExecutableOptions__fail("When printing to stdout, --embed-sources requires --embed-source-map.");
- else
- return false;
- },
- sourceMapUrl$2: function(url, destination) {
- var t1, path;
- if (url.get$scheme().length !== 0 && url.get$scheme() !== "file")
- return url;
- t1 = $.$get$context();
- path = t1.style.pathFromUri$1(M._parseUri(url));
- return t1.toUri$1(J.$eq$(this._options.$index(0, "source-map-urls"), "relative") ? t1.relative$2$from(path, t1.dirname$1(destination)) : D.absolute(path));
- },
- _ifParsed$1: function($name) {
- var t1 = this._options;
- return t1.wasParsed$1($name) ? t1.$index(0, $name) : null;
- }
- };
- B.ExecutableOptions_closure.prototype = {
- call$0: function() {
- var t1 = P.String,
- t2 = G.Option,
- t3 = P.LinkedHashMap_LinkedHashMap$_empty(t1, t2),
- t4 = N.ArgParser,
- t5 = [],
- parser = new N.ArgParser(t3, new P.UnmodifiableMapView(t3, [t1, t2]), new P.UnmodifiableMapView(P.LinkedHashMap_LinkedHashMap$_empty(t1, t4), [t1, t4]), t5, true, null);
- parser.addOption$2$hide("precision", true);
- parser.addFlag$2$hide("async", true);
- t5.push(B.ExecutableOptions__separator("Input and Output"));
- parser.addFlag$2$help("stdin", "Read the stylesheet from stdin.");
- parser.addFlag$2$help("indented", "Use the indented syntax for input from stdin.");
- parser.addMultiOption$5$abbr$help$splitCommas$valueHelp("load-path", "I", "A path to use when resolving imports.\nMay be passed multiple times.", false, "PATH");
- t1 = [t1];
- parser.addOption$6$abbr$allowed$defaultsTo$help$valueHelp("style", "s", H.setRuntimeTypeInfo(["expanded", "compressed"], t1), "expanded", "Output style.", "NAME");
- parser.addFlag$3$defaultsTo$help("charset", true, "Emit a @charset or BOM for CSS with non-ASCII characters.");
- parser.addFlag$3$defaultsTo$help("error-css", null, "When an error occurs, emit a stylesheet describing it.\nDefaults to true when compiling to a file.");
- parser.addFlag$3$help$negatable("update", "Only compile out-of-date stylesheets.", false);
- t5.push(B.ExecutableOptions__separator("Source Maps"));
- parser.addFlag$3$defaultsTo$help("source-map", true, "Whether to generate source maps.");
- parser.addOption$4$allowed$defaultsTo$help("source-map-urls", H.setRuntimeTypeInfo(["relative", "absolute"], t1), "relative", "How to link from source maps to source files.");
- parser.addFlag$3$defaultsTo$help("embed-sources", false, "Embed source file contents in source maps.");
- parser.addFlag$3$defaultsTo$help("embed-source-map", false, "Embed source map contents in CSS.");
- t5.push(B.ExecutableOptions__separator("Other"));
- parser.addFlag$3$help$negatable("watch", "Watch stylesheets and recompile when they change.", false);
- parser.addFlag$2$help("poll", "Manually check for changes rather than using a native watcher.\nOnly valid with --watch.");
- parser.addFlag$2$help("stop-on-error", "Don't compile more files once an error is encountered.");
- parser.addFlag$4$abbr$help$negatable("interactive", "i", "Run an interactive SassScript shell.", false);
- parser.addFlag$3$abbr$help("color", "c", "Whether to use terminal colors for messages.");
- parser.addFlag$2$help("unicode", "Whether to use Unicode characters for messages.");
- parser.addFlag$3$abbr$help("quiet", "q", "Don't print warnings.");
- parser.addFlag$2$help("trace", "Print full Dart stack traces for exceptions.");
- parser.addFlag$4$abbr$help$negatable("help", "h", "Print this usage information.", false);
- parser.addFlag$3$help$negatable("version", "Print the version of Dart Sass.", false);
- return parser;
- }
- };
- B.ExecutableOptions_emitErrorCss_closure.prototype = {
- call$1: function(destination) {
- return destination != null;
- }
- };
- B.UsageException.prototype = {$isException: 1,
- get$message: function(receiver) {
- return this.message;
- }
- };
- A.watch_closure.prototype = {
- call$1: function(dir) {
- for (; !B.dirExists(dir);)
- dir = $.$get$context().dirname$1(dir);
- return this.dirWatcher.watch$1(0, dir);
- }
- };
- A._Watcher.prototype = {
- compile$3$ifModified: function(source, destination, ifModified) {
- return this.compile$body$_Watcher(source, destination, ifModified);
- },
- compile$2: function(source, destination) {
- return this.compile$3$ifModified(source, destination, false);
- },
- compile$body$_Watcher: function(source, destination, ifModified) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.bool),
- $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, error, stackTrace, error0, stackTrace0, exception, t1, t2, $async$exception;
- var $async$compile$3$ifModified = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1) {
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$handler = 4;
- $async$goto = 7;
- return P._asyncAwait(D.compileStylesheet($async$self._watch$_options, $async$self._graph, source, destination, ifModified), $async$compile$3$ifModified);
- case 7:
- // returning from await.
- $async$returnValue = true;
- // goto return
- $async$goto = 1;
- break;
- $async$handler = 2;
- // goto after finally
- $async$goto = 6;
- break;
- case 4:
- // catch
- $async$handler = 3;
- $async$exception = $async$currentError;
- t1 = H.unwrapException($async$exception);
- t2 = J.getInterceptor$(t1);
- if (!!t2.$isSassException) {
- error = t1;
- stackTrace = H.getTraceFromException($async$exception);
- t1 = $async$self._watch$_options;
- if (!t1.get$emitErrorCss())
- $async$self._delete$1(destination);
- $async$self._printError$2(J.toString$1$color$(error, t1.get$color()), stackTrace);
- self.process.exitCode = 65;
- $async$returnValue = false;
- // goto return
- $async$goto = 1;
- break;
- } else if (!!t2.$isFileSystemException) {
- error0 = t1;
- stackTrace0 = H.getTraceFromException($async$exception);
- t1 = error0.path;
- $async$self._printError$2("Error reading " + H.S($.$get$context().relative$2$from(t1, null)) + ": " + error0.message + ".", stackTrace0);
- self.process.exitCode = 66;
- $async$returnValue = false;
- // goto return
- $async$goto = 1;
- break;
- } else
- throw $async$exception;
- // goto after finally
- $async$goto = 6;
- break;
- case 3:
- // uncaught
- // goto rethrow
- $async$goto = 2;
- break;
- case 6:
- // after finally
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- case 2:
- // rethrow
- return P._asyncRethrow($async$currentError, $async$completer);
- }
- });
- return P._asyncStartSync($async$compile$3$ifModified, $async$completer);
- },
- _delete$1: function(path) {
- var buffer, t1, exception;
- try {
- B.deleteFile(path);
- buffer = new P.StringBuffer("");
- t1 = this._watch$_options;
- if (t1.get$color())
- buffer._contents += "\x1b[33m";
- buffer._contents += "Deleted " + H.S(path) + ".";
- if (t1.get$color())
- buffer._contents += "\x1b[0m";
- P.print(buffer);
- } catch (exception) {
- if (!(H.unwrapException(exception) instanceof B.FileSystemException))
- throw exception;
- }
- },
- _printError$2: function(message, stackTrace) {
- var t2,
- t1 = $.$get$stderr();
- t1.writeln$1(message);
- t2 = this._watch$_options._options;
- if (H.boolTypeCast(t2.$index(0, "trace"))) {
- t1.writeln$0();
- t1.writeln$1(C.JSString_methods.trimRight$0(Y.Trace_Trace$from(stackTrace).get$terse().toString$0(0)));
- }
- if (!H.boolTypeCast(t2.$index(0, "stop-on-error")))
- t1.writeln$0();
- },
- watch$1: function(_, watcher) {
- return this.watch$body$_Watcher(_, watcher);
- },
- watch$body$_Watcher: function(_, watcher) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, $event, extension, success, success0, success1, t2, t1;
- var $async$watch$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1) {
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = watcher._group._controller;
- t1.toString;
- t1 = P._StreamIterator$($async$self._debounceEvents$1(new P._ControllerStream(t1, [H.getTypeArgumentByIndex(t1, 0)])));
- $async$handler = 3;
- t2 = $async$self._watch$_options._options;
- case 6:
- // for condition
- $async$goto = 8;
- return P._asyncAwait(t1.moveNext$0(), $async$watch$1);
- case 8:
- // returning from await.
- if (!$async$result) {
- // goto after for
- $async$goto = 7;
- break;
- }
- $event = t1.get$current(t1);
- extension = X.ParsedPath_ParsedPath$parse($event.path, $.$get$context().style)._splitExtension$0()[1];
- if (!J.$eq$(extension, ".sass") && !J.$eq$(extension, ".scss") && !J.$eq$(extension, ".css")) {
- // goto for condition
- $async$goto = 6;
- break;
- }
- case 9:
- // switch
- switch ($event.type) {
- case C.ChangeType_modify:
- // goto case
- $async$goto = 11;
- break;
- case C.ChangeType_add:
- // goto case
- $async$goto = 12;
- break;
- case C.ChangeType_remove:
- // goto case
- $async$goto = 13;
- break;
- default:
- // goto after switch
- $async$goto = 10;
- break;
- }
- break;
- case 11:
- // case
- $async$goto = 14;
- return P._asyncAwait($async$self._handleModify$1($event.path), $async$watch$1);
- case 14:
- // returning from await.
- success = $async$result;
- if (!success && H.boolTypeCast(t2.$index(0, "stop-on-error"))) {
- $async$next = [1];
- // goto finally
- $async$goto = 4;
- break;
- }
- // goto after switch
- $async$goto = 10;
- break;
- case 12:
- // case
- $async$goto = 15;
- return P._asyncAwait($async$self._handleAdd$1($event.path), $async$watch$1);
- case 15:
- // returning from await.
- success0 = $async$result;
- if (!success0 && H.boolTypeCast(t2.$index(0, "stop-on-error"))) {
- $async$next = [1];
- // goto finally
- $async$goto = 4;
- break;
- }
- // goto after switch
- $async$goto = 10;
- break;
- case 13:
- // case
- $async$goto = 16;
- return P._asyncAwait($async$self._handleRemove$1($event.path), $async$watch$1);
- case 16:
- // returning from await.
- success1 = $async$result;
- if (!success1 && H.boolTypeCast(t2.$index(0, "stop-on-error"))) {
- $async$next = [1];
- // goto finally
- $async$goto = 4;
- break;
- }
- // goto after switch
- $async$goto = 10;
- break;
- case 10:
- // after switch
- // goto for condition
- $async$goto = 6;
- break;
- case 7:
- // after for
- $async$next.push(5);
- // goto finally
- $async$goto = 4;
- break;
- case 3:
- // uncaught
- $async$next = [2];
- case 4:
- // finally
- $async$handler = 2;
- $async$goto = 17;
- return P._asyncAwait(t1.cancel$0(), $async$watch$1);
- case 17:
- // returning from await.
- // goto the next finally handler
- $async$goto = $async$next.pop();
- break;
- case 5:
- // after finally
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- case 2:
- // rethrow
- return P._asyncRethrow($async$currentError, $async$completer);
- }
- });
- return P._asyncStartSync($async$watch$1, $async$completer);
- },
- _handleModify$1: function(path) {
- return this._handleModify$body$_Watcher(path);
- },
- _handleModify$body$_Watcher: function(path) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.bool),
- $async$returnValue, $async$self = this, t2, node, t1, url;
- var $async$_handleModify$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $.$get$context();
- url = t1.toUri$1(t1.canonicalize$1(path));
- t1 = $async$self._graph;
- t2 = t1._nodes;
- if (!t2.containsKey$1(url)) {
- $async$returnValue = $async$self._handleAdd$1(path);
- // goto return
- $async$goto = 1;
- break;
- }
- node = t2.$index(0, url);
- t1.reload$1(url);
- $async$goto = 3;
- return P._asyncAwait($async$self._recompileDownstream$1(H.setRuntimeTypeInfo([node], [M.StylesheetNode])), $async$_handleModify$1);
- case 3:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_handleModify$1, $async$completer);
- },
- _handleAdd$1: function(path) {
- return this._handleAdd$body$_Watcher(path);
- },
- _handleAdd$body$_Watcher: function(path) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.bool),
- $async$returnValue, $async$self = this, destination, t1, t2;
- var $async$_handleAdd$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait($async$self._retryPotentialImports$1(path), $async$_handleAdd$1);
- case 3:
- // returning from await.
- if (!$async$result && H.boolTypeCast($async$self._watch$_options._options.$index(0, "stop-on-error"))) {
- $async$returnValue = false;
- // goto return
- $async$goto = 1;
- break;
- }
- destination = $async$self._destinationFor$1(path);
- if (destination == null) {
- $async$returnValue = true;
- // goto return
- $async$goto = 1;
- break;
- }
- t1 = D.absolute(".");
- t2 = $.$get$context();
- $async$self._graph.addCanonical$3(new F.FilesystemImporter(t1), t2.toUri$1(t2.canonicalize$1(path)), t2.toUri$1(path));
- $async$goto = 4;
- return P._asyncAwait($async$self.compile$2(path, destination), $async$_handleAdd$1);
- case 4:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_handleAdd$1, $async$completer);
- },
- _handleRemove$1: function(path) {
- return this._handleRemove$body$_Watcher(path);
- },
- _handleRemove$body$_Watcher: function(path) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.bool),
- $async$returnValue, $async$self = this, t2, destination, t1, url;
- var $async$_handleRemove$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $.$get$context();
- url = t1.toUri$1(t1.canonicalize$1(path));
- $async$goto = 3;
- return P._asyncAwait($async$self._retryPotentialImports$1(path), $async$_handleRemove$1);
- case 3:
- // returning from await.
- if (!$async$result && H.boolTypeCast($async$self._watch$_options._options.$index(0, "stop-on-error"))) {
- $async$returnValue = false;
- // goto return
- $async$goto = 1;
- break;
- }
- t1 = $async$self._graph;
- t2 = t1._nodes;
- if (!t2.containsKey$1(url)) {
- $async$returnValue = true;
- // goto return
- $async$goto = 1;
- break;
- }
- destination = $async$self._destinationFor$1(path);
- if (destination != null)
- $async$self._delete$1(destination);
- t2 = t2.$index(0, url)._downstream;
- t1.remove$1(0, url);
- $async$goto = 4;
- return P._asyncAwait($async$self._recompileDownstream$1(new L.UnmodifiableSetView(t2, [M.StylesheetNode])), $async$_handleRemove$1);
- case 4:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_handleRemove$1, $async$completer);
- },
- _debounceEvents$1: function(events) {
- var t1 = E.WatchEvent,
- t2 = R._debounceAggregate(P.Duration$(25), H.instantiate1(R.rate_limit___collectToList$closure(), t1), t1, [P.List, t1]).bind$1(events);
- return new P._ExpandStream(new A._Watcher__debounceEvents_closure(), t2, [H.getRuntimeTypeArgument(t2, "Stream", 0), t1]);
- },
- _recompileDownstream$1: function(nodes) {
- return this._recompileDownstream$body$_Watcher(nodes);
- },
- _recompileDownstream$body$_Watcher: function(nodes) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.bool),
- $async$returnValue, $async$self = this, t2, allSucceeded, node, success, t1, seen, toRecompile;
- var $async$_recompileDownstream$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = M.StylesheetNode;
- seen = P.LinkedHashSet_LinkedHashSet$_empty(t1);
- toRecompile = P.ListQueue_ListQueue$of(nodes, t1);
- t1 = [t1], t2 = $async$self._watch$_options._options, allSucceeded = true;
- case 3:
- // for condition
- if (!!toRecompile.get$isEmpty(toRecompile)) {
- // goto after for
- $async$goto = 4;
- break;
- }
- node = toRecompile.removeFirst$0();
- if (!seen.add$1(0, node)) {
- // goto for condition
- $async$goto = 3;
- break;
- }
- $async$goto = 5;
- return P._asyncAwait($async$self._compileIfEntrypoint$1(node.canonicalUrl), $async$_recompileDownstream$1);
- case 5:
- // returning from await.
- success = $async$result;
- allSucceeded = allSucceeded && success;
- if (!success && H.boolTypeCast(t2.$index(0, "stop-on-error"))) {
- $async$returnValue = false;
- // goto return
- $async$goto = 1;
- break;
- }
- toRecompile.addAll$1(0, new L.UnmodifiableSetView(node._downstream, t1));
- // goto for condition
- $async$goto = 3;
- break;
- case 4:
- // after for
- $async$returnValue = allSucceeded;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_recompileDownstream$1, $async$completer);
- },
- _compileIfEntrypoint$1: function(url) {
- return this._compileIfEntrypoint$body$_Watcher(url);
- },
- _compileIfEntrypoint$body$_Watcher: function(url) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.bool),
- $async$returnValue, $async$self = this, source, destination;
- var $async$_compileIfEntrypoint$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if (url.get$scheme() !== "file") {
- $async$returnValue = true;
- // goto return
- $async$goto = 1;
- break;
- }
- source = $.$get$context().style.pathFromUri$1(M._parseUri(url));
- destination = $async$self._destinationFor$1(source);
- if (destination == null) {
- $async$returnValue = true;
- // goto return
- $async$goto = 1;
- break;
- }
- $async$goto = 3;
- return P._asyncAwait($async$self.compile$2(source, destination), $async$_compileIfEntrypoint$1);
- case 3:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_compileIfEntrypoint$1, $async$completer);
- },
- _destinationFor$1: function(source) {
- var destination, t2, t3, t4, _null = null,
- t1 = this._watch$_options;
- t1._ensureSources$0();
- destination = t1._sourcesToDestinations.$index(0, source);
- if (destination != null)
- return destination;
- t2 = $.$get$context();
- if (J.startsWith$1$s(X.ParsedPath_ParsedPath$parse(source, t2.style).get$basename(), "_"))
- return;
- for (t1._ensureSources$0(), t3 = J.get$iterator$ax(t1._sourceDirectoriesToDestinations.get$keys()); t3.moveNext$0();) {
- t4 = t3.get$current(t3);
- if (t2._isWithinOrEquals$2(t4, source) !== C._PathRelation_within)
- continue;
- t1._ensureSources$0();
- destination = t2.join$8(0, t1._sourceDirectoriesToDestinations.$index(0, t4), t2.withoutExtension$1(t2.relative$2$from(source, t4)) + ".css", _null, _null, _null, _null, _null, _null);
- if (destination !== source)
- return destination;
- }
- return;
- },
- _retryPotentialImports$1: function(path) {
- return this._retryPotentialImports$body$_Watcher(path);
- },
- _retryPotentialImports$body$_Watcher: function(path) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.bool),
- $async$returnValue, $async$self = this, t1, _box_0, t2, recanonicalize, t3, t4, $name, changed;
- var $async$_retryPotentialImports$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $name = $async$self._watch$_name$1(X.ParsedPath_ParsedPath$parse(path, $.$get$context().style).get$basename());
- changed = H.setRuntimeTypeInfo([], [M.StylesheetNode]);
- for (t1 = $async$self._graph._nodes.get$values(), t1 = t1.get$iterator(t1); t1.moveNext$0();) {
- _box_0 = {};
- t2 = t1.get$current(t1);
- _box_0.importChanged = false;
- recanonicalize = new A._Watcher__retryPotentialImports_recanonicalize(_box_0, $async$self, $name, t2);
- for (t3 = t2._upstream.get$entries(), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
- t4 = t3.get$current(t3);
- recanonicalize.call$3$forImport(t4.key, t4.value, false);
- }
- for (t3 = t2._upstreamImports.get$entries(), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
- t4 = t3.get$current(t3);
- recanonicalize.call$3$forImport(t4.key, t4.value, true);
- }
- if (_box_0.importChanged)
- changed.push(t2);
- }
- $async$goto = 3;
- return P._asyncAwait($async$self._recompileDownstream$1(changed), $async$_retryPotentialImports$1);
- case 3:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_retryPotentialImports$1, $async$completer);
- },
- _watch$_name$1: function(basename) {
- basename = $.$get$context().withoutExtension$1(basename);
- return C.JSString_methods.startsWith$1(basename, "_") ? C.JSString_methods.substring$1(basename, 1) : basename;
- }
- };
- A._Watcher__debounceEvents_closure.prototype = {
- call$1: function(buffer) {
- var t3, t4, t5, oldType,
- t1 = E.ChangeType,
- t2 = K.PathMap__create(null, t1);
- for (t3 = J.get$iterator$ax(buffer); t3.moveNext$0();) {
- t4 = t3.get$current(t3);
- t5 = t4.path;
- oldType = t2.$index(0, t5);
- if (oldType == null)
- t2.$indexSet(0, t5, t4.type);
- else if (t4.type === C.ChangeType_remove)
- t2.$indexSet(0, t5, C.ChangeType_remove);
- else if (oldType !== C.ChangeType_add)
- t2.$indexSet(0, t5, C.ChangeType_modify);
- }
- return t2.get$keys().map$1$1(0, new A._Watcher__debounceEvents__closure(new K.PathMap(t2, [t1])), E.WatchEvent);
- }
- };
- A._Watcher__debounceEvents__closure.prototype = {
- call$1: function(path) {
- return new E.WatchEvent(this.typeForPath._collection$_map.$index(0, path), path);
- }
- };
- A._Watcher__retryPotentialImports_recanonicalize.prototype = {
- call$3$forImport: function(url, upstream, forImport) {
- var newCanonicalUrl, t3, exception, _this = this,
- t1 = _this.$this,
- t2 = $.$get$url();
- if (t1._watch$_name$1(X.ParsedPath_ParsedPath$parse(url.get$path(url), t2.style).get$basename()) !== _this.name)
- return;
- t1 = t1._graph;
- t1._transitiveModificationTimes.clear$0(0);
- t1 = t1.importCache;
- t2 = t1._canonicalizeCache;
- t3 = [P.Uri, P.bool];
- t2.remove$1(0, new S.Tuple2(url, false, t3));
- t2.remove$1(0, new S.Tuple2(url, true, t3));
- t2 = _this._box_0;
- if (!t2.importChanged) {
- newCanonicalUrl = null;
- try {
- t3 = _this.node;
- t3 = t1.canonicalize$4$baseImporter$baseUrl$forImport(url, t3.importer, t3.canonicalUrl, forImport);
- newCanonicalUrl = t3 == null ? null : t3.item2;
- } catch (exception) {
- H.unwrapException(exception);
- }
- t1 = newCanonicalUrl;
- t2.importChanged = !J.$eq$(t1, upstream == null ? null : upstream.canonicalUrl);
- }
- },
- call$2: function(url, upstream) {
- return this.call$3$forImport(url, upstream, null);
- }
- };
- T.EmptyExtender.prototype = {
- get$isEmpty: function(_) {
- return true;
- },
- get$simpleSelectors: function() {
- return C.C_EmptyUnmodifiableSet;
- },
- extensionsWhereTarget$1: function(callback) {
- return C.List_empty3;
- },
- addExtensions$1: function(extenders) {
- throw H.wrapException(P.UnsupportedError$("addExtensions() can't be called for a const Extender."));
- },
- clone$0: function() {
- return C.Tuple2_EmptyExtender_Map_empty;
- },
- $isExtender: 1
- };
- F.Extender.prototype = {
- get$isEmpty: function(_) {
- var t1 = this._extensions;
- return t1.get$isEmpty(t1);
- },
- get$simpleSelectors: function() {
- return new M.MapKeySet(this._selectors, [M.SimpleSelector]);
- },
- extensionsWhereTarget$1: function($async$callback) {
- var $async$self = this;
- return P._makeSyncStarIterable(function() {
- var callback = $async$callback;
- var $async$goto = 0, $async$handler = 1, $async$currentError, t1, t2, t3, t4;
- return function $async$extensionsWhereTarget$1($async$errorCode, $async$result) {
- if ($async$errorCode === 1) {
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self._extensions, t2 = t1.get$keys(), t2 = t2.get$iterator(t2);
- case 2:
- // for condition
- if (!t2.moveNext$0()) {
- // goto after for
- $async$goto = 3;
- break;
- }
- t3 = t2.get$current(t2);
- if (!callback.call$1(t3)) {
- // goto for condition
- $async$goto = 2;
- break;
- }
- t3 = t1.$index(0, t3).get$values(), t3 = t3.get$iterator(t3);
- case 4:
- // for condition
- if (!t3.moveNext$0()) {
- // goto after for
- $async$goto = 5;
- break;
- }
- t4 = t3.get$current(t3);
- $async$goto = t4 instanceof A.MergedExtension ? 6 : 8;
- break;
- case 6:
- // then
- t4 = t4.unmerge$0();
- $async$goto = 9;
- return P._IterationMarker_yieldStar(new H.WhereIterable(t4, new F.Extender_extensionsWhereTarget_closure(), [H.getTypeArgumentByIndex(t4, 0)]));
- case 9:
- // after yield
- // goto join
- $async$goto = 7;
- break;
- case 8:
- // else
- $async$goto = !t4.isOptional ? 10 : 11;
- break;
- case 10:
- // then
- $async$goto = 12;
- return t4;
- case 12:
- // after yield
- case 11:
- // join
- case 7:
- // join
- // goto for condition
- $async$goto = 4;
- break;
- case 5:
- // after for
- // goto for condition
- $async$goto = 2;
- break;
- case 3:
- // after for
- // implicit return
- return P._IterationMarker_endOfIteration();
- case 1:
- // rethrow
- return P._IterationMarker_uncaughtError($async$currentError);
- }
- };
- }, S.Extension);
- },
- addSelector$3: function(selector, span, mediaContext) {
- var error, t1, t2, t3, _i, exception, modifiableSelector, _this = this,
- originalSelector = selector;
- if (!originalSelector.get$isInvisible())
- for (t1 = originalSelector.components, t2 = t1.length, t3 = _this._originals, _i = 0; _i < t2; ++_i)
- t3.add$1(0, t1[_i]);
- t1 = _this._extensions;
- if (t1.get$isNotEmpty(t1))
- try {
- selector = _this._extendList$3(originalSelector, t1, mediaContext);
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (t1 instanceof E.SassException) {
- error = t1;
- throw H.wrapException(E.SassException$("From " + error.get$span().message$1(0, "") + "\n" + H.S(error._span_exception$_message), span));
- } else
- throw exception;
- }
- modifiableSelector = new F.ModifiableCssValue(selector, span, [D.SelectorList]);
- if (mediaContext != null)
- _this._mediaContexts.$indexSet(0, modifiableSelector, mediaContext);
- _this._registerSelector$2(selector, modifiableSelector);
- return modifiableSelector;
- },
- _registerSelector$2: function(list, selector) {
- var t1, t2, t3, _i, t4, t5, _i0, component, t6, t7, _i1, simple;
- for (t1 = list.components, t2 = t1.length, t3 = this._selectors, _i = 0; _i < t2; ++_i)
- for (t4 = t1[_i].components, t5 = t4.length, _i0 = 0; _i0 < t5; ++_i0) {
- component = t4[_i0];
- if (component instanceof X.CompoundSelector)
- for (t6 = component.components, t7 = t6.length, _i1 = 0; _i1 < t7; ++_i1) {
- simple = t6[_i1];
- J.add$1$ax(t3.putIfAbsent$2(simple, new F.Extender__registerSelector_closure()), selector);
- if (simple instanceof D.PseudoSelector && simple.selector != null)
- this._registerSelector$2(simple.selector, selector);
- }
- }
- },
- addExtension$4: function(extender, target, extend, mediaContext) {
- var t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, newExtensions, _i, complex, t12, state, existingState, t13, _i0, component, t14, t15, _i1, simple, newExtensionsByTarget, additionalExtensions, _this = this,
- selectors = _this._selectors.$index(0, target),
- t1 = _this._extensionsByExtender,
- existingExtensions = t1.$index(0, target),
- sources = _this._extensions.putIfAbsent$2(target, new F.Extender_addExtension_closure());
- for (t2 = extender.value.components, t3 = t2.length, t4 = selectors == null, t5 = _this._sourceSpecificity, t6 = extender.span, t7 = extend.span, t8 = extend.isOptional, t9 = existingExtensions != null, t10 = S.ComplexSelector, t11 = S.Extension, newExtensions = null, _i = 0; _i < t3; ++_i) {
- complex = t2[_i];
- if (complex._maxSpecificity == null)
- complex._computeSpecificity$0();
- t12 = complex._maxSpecificity;
- state = new S.Extension(complex, target, t12, t8, false, mediaContext, t6, t7);
- existingState = sources.$index(0, complex);
- if (existingState != null) {
- sources.$indexSet(0, complex, A.MergedExtension_merge(existingState, state));
- continue;
- }
- sources.$indexSet(0, complex, state);
- for (t12 = complex.components, t13 = t12.length, _i0 = 0; _i0 < t13; ++_i0) {
- component = t12[_i0];
- if (component instanceof X.CompoundSelector)
- for (t14 = component.components, t15 = t14.length, _i1 = 0; _i1 < t15; ++_i1) {
- simple = t14[_i1];
- J.add$1$ax(t1.putIfAbsent$2(simple, new F.Extender_addExtension_closure0()), state);
- t5.putIfAbsent$2(simple, new F.Extender_addExtension_closure1(complex));
- }
- }
- if (!t4 || t9) {
- if (newExtensions == null)
- newExtensions = P.LinkedHashMap_LinkedHashMap$_empty(t10, t11);
- newExtensions.$indexSet(0, complex, state);
- }
- }
- if (newExtensions == null)
- return;
- newExtensionsByTarget = P.LinkedHashMap_LinkedHashMap$_literal([target, newExtensions], M.SimpleSelector, [P.Map, S.ComplexSelector, S.Extension]);
- if (t9) {
- additionalExtensions = _this._extendExistingExtensions$2(existingExtensions, newExtensionsByTarget);
- if (additionalExtensions != null)
- B.mapAddAll2(newExtensionsByTarget, additionalExtensions);
- }
- if (!t4)
- _this._extendExistingSelectors$2(selectors, newExtensionsByTarget);
- },
- _extendExistingExtensions$2: function(extensions, newExtensions) {
- var extension, selectors, error, t1, t2, t3, t4, t5, t6, additionalExtensions, _i, sources, exception, containsExtension, t7, t8, first, _i0, complex, t9, t10, t11, t12, t13, t14, withExtender, existingExtension, _i1, component, _i2;
- for (t1 = J.toList$0$ax(extensions), t2 = t1.length, t3 = this._extensionsByExtender, t4 = M.SimpleSelector, t5 = [P.Map, S.ComplexSelector, S.Extension], t6 = this._extensions, additionalExtensions = null, _i = 0; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- extension = t1[_i];
- sources = t6.$index(0, extension.target);
- selectors = null;
- try {
- selectors = this._extendComplex$3(extension.extender, newExtensions, extension.mediaContext);
- if (selectors == null)
- continue;
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (t1 instanceof E.SassException) {
- error = t1;
- throw H.wrapException(E.SassException$("From " + extension.extenderSpan.message$1(0, "") + "\n" + H.S(error._span_exception$_message), error.get$span()));
- } else
- throw exception;
- }
- containsExtension = J.$eq$(J.get$first$ax(selectors), extension.extender);
- for (t7 = selectors, t8 = t7.length, first = false, _i0 = 0; _i0 < t7.length; t7.length === t8 || (0, H.throwConcurrentModificationError)(t7), ++_i0) {
- complex = t7[_i0];
- if (containsExtension && first) {
- first = false;
- continue;
- }
- t9 = extension;
- t10 = t9.target;
- t11 = t9.extenderSpan;
- t12 = t9.span;
- t13 = t9.mediaContext;
- t14 = t9.specificity;
- t9 = t9.isOptional;
- if (t14 == null) {
- if (complex._maxSpecificity == null)
- complex._computeSpecificity$0();
- t14 = complex._maxSpecificity;
- }
- withExtender = new S.Extension(complex, t10, t14, t9, false, t13, t11, t12);
- existingExtension = sources.$index(0, complex);
- if (existingExtension != null)
- sources.$indexSet(0, complex, A.MergedExtension_merge(existingExtension, withExtender));
- else {
- sources.$indexSet(0, complex, withExtender);
- for (t9 = complex.components, t10 = t9.length, _i1 = 0; _i1 < t10; ++_i1) {
- component = t9[_i1];
- if (component instanceof X.CompoundSelector)
- for (t11 = component.components, t12 = t11.length, _i2 = 0; _i2 < t12; ++_i2)
- J.add$1$ax(t3.putIfAbsent$2(t11[_i2], new F.Extender__extendExistingExtensions_closure()), withExtender);
- }
- if (newExtensions.containsKey$1(extension.target)) {
- if (additionalExtensions == null)
- additionalExtensions = P.LinkedHashMap_LinkedHashMap$_empty(t4, t5);
- additionalExtensions.putIfAbsent$2(extension.target, new F.Extender__extendExistingExtensions_closure0()).$indexSet(0, complex, withExtender);
- }
- }
- }
- if (!containsExtension)
- sources.remove$1(0, extension.extender);
- }
- return additionalExtensions;
- },
- _extendExistingSelectors$2: function(selectors, newExtensions) {
- var selector, error, t1, t2, oldValue, exception;
- for (t1 = selectors.get$iterator(selectors), t2 = this._mediaContexts; t1.moveNext$0();) {
- selector = t1.get$current(t1);
- oldValue = selector.value;
- try {
- selector.value = this._extendList$3(selector.value, newExtensions, t2.$index(0, selector));
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (t1 instanceof E.SassException) {
- error = t1;
- throw H.wrapException(E.SassException$("From " + selector.span.message$1(0, "") + "\n" + H.S(error._span_exception$_message), error.get$span()));
- } else
- throw exception;
- }
- if (oldValue == selector.value)
- continue;
- this._registerSelector$2(selector.value, selector);
- }
- },
- addExtensions$1: function(extenders) {
- var t1, t2, t3, _this = this, _box_0 = {};
- _box_0.newExtensions = _box_0.selectorsToExtend = _box_0.extensionsToExtend = null;
- for (t1 = J.get$iterator$ax(extenders), t2 = _this._sourceSpecificity; t1.moveNext$0();) {
- t3 = t1.get$current(t1);
- if (t3.get$isEmpty(t3))
- continue;
- t2.addAll$1(0, t3.get$_sourceSpecificity());
- t3.get$_extensions().forEach$1(0, new F.Extender_addExtensions_closure(_box_0, _this, t3));
- }
- t1 = _box_0.newExtensions;
- if (t1 == null)
- return;
- t2 = _box_0.extensionsToExtend;
- if (t2 != null)
- _this._extendExistingExtensions$2(t2, t1);
- t1 = _box_0.selectorsToExtend;
- if (t1 != null)
- _this._extendExistingSelectors$2(t1, _box_0.newExtensions);
- },
- _extendList$3: function(list, extensions, mediaQueryContext) {
- var t1, t2, t3, extended, i, complex, result, t4;
- for (t1 = list.components, t2 = t1.length, t3 = [S.ComplexSelector], extended = null, i = 0; i < t2; ++i) {
- complex = t1[i];
- result = this._extendComplex$3(complex, extensions, mediaQueryContext);
- if (result == null) {
- if (extended != null)
- extended.push(complex);
- } else {
- if (extended == null)
- if (i === 0)
- extended = H.setRuntimeTypeInfo([], t3);
- else {
- t4 = C.JSArray_methods.sublist$2(t1, 0, i);
- extended = H.setRuntimeTypeInfo(t4.slice(0), [H.getTypeArgumentByIndex(t4, 0)]);
- }
- C.JSArray_methods.addAll$1(extended, result);
- }
- }
- if (extended == null)
- return list;
- t1 = this._originals;
- return D.SelectorList$(J.where$1$ax(this._trim$2(extended, t1.get$contains(t1)), new F.Extender__extendList_closure()));
- },
- _extendComplex$3: function(complex, extensions, mediaQueryContext) {
- var t1, t2, t3, t4, t5, t6, t7, extendedNotExpanded, i, component, extended, result, t8,
- _s28_ = "components may not be empty.",
- _box_0 = {},
- isOriginal = this._originals.contains$1(0, complex);
- for (t1 = complex.components, t2 = t1.length, t3 = S.ComplexSelector, t4 = [t3], t5 = S.ComplexSelectorComponent, t6 = [t5], t7 = [P.List, S.ComplexSelector], extendedNotExpanded = null, i = 0; i < t2; ++i) {
- component = t1[i];
- if (component instanceof X.CompoundSelector) {
- extended = this._extendCompound$4$inOriginal(component, extensions, mediaQueryContext, isOriginal);
- if (extended == null) {
- if (extendedNotExpanded != null) {
- result = P.List_List$from(H.setRuntimeTypeInfo([component], t6), false, t5);
- result.fixed$length = Array;
- result.immutable$list = Array;
- t8 = result;
- if (t8.length === 0)
- H.throwExpression(P.ArgumentError$(_s28_));
- C.JSArray_methods.add$1(extendedNotExpanded, H.setRuntimeTypeInfo([new S.ComplexSelector(t8, false)], t4));
- }
- } else {
- if (extendedNotExpanded == null) {
- t8 = H.SubListIterable$(t1, 0, i, H.getTypeArgumentByIndex(t1, 0));
- extendedNotExpanded = new H.MappedListIterable(t8, new F.Extender__extendComplex_closure(complex), [H.getTypeArgumentByIndex(t8, 0), t7]).toList$0(0);
- }
- C.JSArray_methods.add$1(extendedNotExpanded, extended);
- }
- } else if (extendedNotExpanded != null) {
- result = P.List_List$from(H.setRuntimeTypeInfo([component], t6), false, t5);
- result.fixed$length = Array;
- result.immutable$list = Array;
- t8 = result;
- if (t8.length === 0)
- H.throwExpression(P.ArgumentError$(_s28_));
- C.JSArray_methods.add$1(extendedNotExpanded, H.setRuntimeTypeInfo([new S.ComplexSelector(t8, false)], t4));
- }
- }
- if (extendedNotExpanded == null)
- return;
- _box_0.first = true;
- t1 = J.expand$1$1$ax(Y.paths(extendedNotExpanded, t3), new F.Extender__extendComplex_closure0(_box_0, this, complex), t3);
- return P.List_List$from(t1, true, H.getRuntimeTypeArgument(t1, "Iterable", 0));
- },
- _extendCompound$4$inOriginal: function(compound, extensions, mediaQueryContext, inOriginal) {
- var t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, options, i, simple, extended, result, t13, t14, _this = this, _null = null,
- _s28_ = "components may not be empty.",
- _box_1 = {},
- t1 = _this._mode,
- targetsUsed = t1 === C.ExtendMode_normal || extensions.get$length(extensions) < 2 ? _null : P.LinkedHashSet_LinkedHashSet$_empty(M.SimpleSelector);
- for (t2 = compound.components, t3 = t2.length, t4 = [[P.List, S.Extension]], t5 = S.Extension, t6 = [t5], t7 = S.ComplexSelectorComponent, t8 = [t7], t9 = H.getTypeArgumentByIndex(t2, 0), t10 = M.SimpleSelector, t11 = _this._sourceSpecificity, t12 = [t10], options = _null, i = 0; i < t3; ++i) {
- simple = t2[i];
- extended = _this._extendSimple$4(simple, extensions, mediaQueryContext, targetsUsed);
- if (extended == null) {
- if (options != null) {
- result = P.List_List$from(H.setRuntimeTypeInfo([simple], t12), false, t10);
- result.fixed$length = Array;
- result.immutable$list = Array;
- t13 = result;
- if (t13.length === 0)
- H.throwExpression(P.ArgumentError$(_s28_));
- result = P.List_List$from(H.setRuntimeTypeInfo([new X.CompoundSelector(t13)], t8), false, t7);
- result.fixed$length = Array;
- result.immutable$list = Array;
- t13 = result;
- if (t13.length === 0)
- H.throwExpression(P.ArgumentError$(_s28_));
- t14 = t11.$index(0, simple);
- if (t14 == null)
- t14 = 0;
- options.push(H.setRuntimeTypeInfo([new S.Extension(new S.ComplexSelector(t13, false), _null, t14, true, true, _null, _null, _null)], t6));
- }
- } else {
- if (options == null) {
- options = H.setRuntimeTypeInfo([], t4);
- if (i !== 0) {
- result = P.List_List$from(H.SubListIterable$(t2, 0, i, t9), false, t10);
- result.fixed$length = Array;
- result.immutable$list = Array;
- t13 = result;
- compound = new X.CompoundSelector(t13);
- if (t13.length === 0)
- H.throwExpression(P.ArgumentError$(_s28_));
- result = P.List_List$from(H.setRuntimeTypeInfo([compound], t8), false, t7);
- result.fixed$length = Array;
- result.immutable$list = Array;
- t13 = result;
- if (t13.length === 0)
- H.throwExpression(P.ArgumentError$(_s28_));
- t14 = _this._sourceSpecificityFor$1(compound);
- options.push(H.setRuntimeTypeInfo([new S.Extension(new S.ComplexSelector(t13, false), _null, t14, true, true, _null, _null, _null)], t6));
- }
- }
- C.JSArray_methods.addAll$1(options, extended);
- }
- }
- if (options == null)
- return;
- if (targetsUsed != null && targetsUsed._collection$_length !== extensions.get$length(extensions))
- return;
- if (options.length === 1)
- return J.map$1$1$ax(C.JSArray_methods.get$first(options), new F.Extender__extendCompound_closure(mediaQueryContext), S.ComplexSelector).toList$0(0);
- _box_1.first = t1 !== C.ExtendMode_replace;
- t1 = J.map$1$1$ax(Y.paths(options, t5), new F.Extender__extendCompound_closure0(_box_1, mediaQueryContext), [P.List, S.ComplexSelector]).where$1(0, new F.Extender__extendCompound_closure1());
- t2 = S.ComplexSelector;
- return P.List_List$from(new H.ExpandIterable(t1, new F.Extender__extendCompound_closure2(), [H.getTypeArgumentByIndex(t1, 0), t2]), true, t2);
- },
- _extendSimple$4: function(simple, extensions, mediaQueryContext, targetsUsed) {
- var extended, result,
- t1 = new F.Extender__extendSimple_withoutPseudo(this, extensions, targetsUsed);
- if (simple instanceof D.PseudoSelector && simple.selector != null) {
- extended = this._extendPseudo$3(simple, extensions, mediaQueryContext);
- if (extended != null)
- return new H.MappedListIterable(extended, new F.Extender__extendSimple_closure(this, t1), [H.getTypeArgumentByIndex(extended, 0), [P.List, S.Extension]]);
- }
- result = t1.call$1(simple);
- return result == null ? null : H.setRuntimeTypeInfo([result], [[P.List, S.Extension]]);
- },
- _extensionForSimple$1: function(simple) {
- var t1 = S.ComplexSelector$(H.setRuntimeTypeInfo([X.CompoundSelector$(H.setRuntimeTypeInfo([simple], [M.SimpleSelector]))], [S.ComplexSelectorComponent]), false),
- t2 = this._sourceSpecificity.$index(0, simple);
- return S.Extension$oneOff(t1, true, t2 == null ? 0 : t2);
- },
- _extendPseudo$3: function(pseudo, extensions, mediaQueryContext) {
- var complexes, t2, result,
- t1 = pseudo.selector,
- extended = this._extendList$3(t1, extensions, mediaQueryContext);
- if (extended == t1)
- return;
- complexes = extended.components;
- t2 = pseudo.normalizedName === "not";
- if (t2 && !C.JSArray_methods.any$1(t1.components, new F.Extender__extendPseudo_closure()) && C.JSArray_methods.any$1(complexes, new F.Extender__extendPseudo_closure0()))
- complexes = new H.WhereIterable(complexes, new F.Extender__extendPseudo_closure1(), [H.getTypeArgumentByIndex(complexes, 0)]);
- complexes = J.expand$1$1$ax(complexes, new F.Extender__extendPseudo_closure2(pseudo), S.ComplexSelector);
- t1 = t2 && t1.components.length === 1;
- t2 = D.PseudoSelector;
- if (t1) {
- t1 = H.MappedIterable_MappedIterable(complexes, new F.Extender__extendPseudo_closure3(pseudo), H.getRuntimeTypeArgument(complexes, "Iterable", 0), t2);
- result = P.List_List$from(t1, true, H.getRuntimeTypeArgument(t1, "Iterable", 0));
- return result.length === 0 ? null : result;
- } else
- return H.setRuntimeTypeInfo([D.PseudoSelector$(pseudo.name, pseudo.argument, !pseudo.isClass, D.SelectorList$(complexes))], [t2]);
- },
- _trim$2: function(selectors, isOriginal) {
- var result, i, t1, numOriginals, _box_0, complex1, j, t2, t3, _i, component;
- if (selectors.length > 100)
- return selectors;
- result = Q.QueueList$(null, S.ComplexSelector);
- $label0$0:
- for (i = selectors.length - 1, t1 = H.getTypeArgumentByIndex(selectors, 0), numOriginals = 0; i >= 0; --i) {
- _box_0 = {};
- complex1 = selectors[i];
- if (isOriginal.call$1(complex1)) {
- for (j = 0; j < numOriginals; ++j)
- if (J.$eq$(result.$index(0, j), complex1)) {
- B.rotateSlice(result, 0, j + 1);
- continue $label0$0;
- }
- ++numOriginals;
- result.addFirst$1(complex1);
- continue $label0$0;
- }
- _box_0.maxSpecificity = 0;
- for (t2 = complex1.components, t3 = t2.length, _i = 0; _i < t3; ++_i) {
- component = t2[_i];
- if (component instanceof X.CompoundSelector)
- _box_0.maxSpecificity = Math.max(_box_0.maxSpecificity, this._sourceSpecificityFor$1(component));
- }
- if (result.any$1(result, new F.Extender__trim_closure(_box_0, complex1)))
- continue $label0$0;
- if (H.SubListIterable$(selectors, 0, i, t1).any$1(0, new F.Extender__trim_closure0(_box_0, complex1)))
- continue $label0$0;
- result.addFirst$1(complex1);
- }
- return result;
- },
- _sourceSpecificityFor$1: function(compound) {
- var t1, t2, t3, specificity, _i, t4;
- for (t1 = compound.components, t2 = t1.length, t3 = this._sourceSpecificity, specificity = 0, _i = 0; _i < t2; ++_i) {
- t4 = t3.$index(0, t1[_i]);
- specificity = Math.max(specificity, H.checkNum(t4 == null ? 0 : t4));
- }
- return specificity;
- },
- clone$0: function() {
- var t3, t4, _this = this,
- t1 = M.SimpleSelector,
- newSelectors = P.LinkedHashMap_LinkedHashMap$_empty(t1, [P.Set, [F.ModifiableCssValue, D.SelectorList]]),
- t2 = [F.ModifiableCssValue, D.SelectorList],
- newMediaContexts = P.LinkedHashMap_LinkedHashMap$_empty(t2, [P.List, F.CssMediaQuery]),
- oldToNewSelectors = P.LinkedHashMap_LinkedHashMap$_empty([F.CssValue, D.SelectorList], t2);
- _this._selectors.forEach$1(0, new F.Extender_clone_closure(_this, newSelectors, oldToNewSelectors, newMediaContexts));
- t2 = S.ComplexSelector;
- t3 = S.Extension;
- t4 = B.copyMapOfMap(_this._extensions, t1, t2, t3);
- t3 = B.copyMapOfList(_this._extensionsByExtender, t1, t3);
- t1 = P._LinkedIdentityHashMap__LinkedIdentityHashMap$es6(t1, P.int);
- t1.addAll$1(0, _this._sourceSpecificity);
- t2 = new P._LinkedIdentityHashSet([t2]);
- t2.addAll$1(0, _this._originals);
- return new S.Tuple2(new F.Extender(newSelectors, t4, t3, newMediaContexts, t1, t2, C.ExtendMode_normal), oldToNewSelectors, [F.Extender, [P.Map, [F.CssValue, D.SelectorList], [F.ModifiableCssValue, D.SelectorList]]]);
- },
- get$_extensions: function() {
- return this._extensions;
- },
- get$_sourceSpecificity: function() {
- return this._sourceSpecificity;
- }
- };
- F.Extender__extendOrReplace_closure.prototype = {
- call$1: function(complex) {
- return S.Extension$oneOff(H.interceptedTypeCast(complex, "$isComplexSelector"), false, null);
- },
- $signature: 63
- };
- F.Extender_extensionsWhereTarget_closure.prototype = {
- call$1: function(extension) {
- return !extension.isOptional;
- }
- };
- F.Extender__registerSelector_closure.prototype = {
- call$0: function() {
- return P.LinkedHashSet_LinkedHashSet$_empty([F.ModifiableCssValue, D.SelectorList]);
- }
- };
- F.Extender_addExtension_closure.prototype = {
- call$0: function() {
- return P.LinkedHashMap_LinkedHashMap$_empty(S.ComplexSelector, S.Extension);
- }
- };
- F.Extender_addExtension_closure0.prototype = {
- call$0: function() {
- return H.setRuntimeTypeInfo([], [S.Extension]);
- }
- };
- F.Extender_addExtension_closure1.prototype = {
- call$0: function() {
- return this.complex.get$maxSpecificity();
- }
- };
- F.Extender__extendExistingExtensions_closure.prototype = {
- call$0: function() {
- return H.setRuntimeTypeInfo([], [S.Extension]);
- }
- };
- F.Extender__extendExistingExtensions_closure0.prototype = {
- call$0: function() {
- return P.LinkedHashMap_LinkedHashMap$_empty(S.ComplexSelector, S.Extension);
- }
- };
- F.Extender_addExtensions_closure.prototype = {
- call$2: function(target, newSources) {
- var t1, extensionsForTarget, t2, t3, t4, selectorsForTarget, t5, existingSources, _this = this;
- if (target instanceof N.PlaceholderSelector && T.isPrivate(target.name))
- return;
- t1 = _this.$this;
- extensionsForTarget = t1._extensionsByExtender.$index(0, target);
- t2 = extensionsForTarget == null;
- if (!t2) {
- t3 = _this._box_0;
- t4 = t3.extensionsToExtend;
- C.JSArray_methods.addAll$1(t4 == null ? t3.extensionsToExtend = H.setRuntimeTypeInfo([], [S.Extension]) : t4, extensionsForTarget);
- }
- selectorsForTarget = t1._selectors.$index(0, target);
- t3 = selectorsForTarget != null;
- if (t3) {
- t4 = _this._box_0;
- t5 = t4.selectorsToExtend;
- (t5 == null ? t4.selectorsToExtend = P.LinkedHashSet_LinkedHashSet$_empty([F.ModifiableCssValue, D.SelectorList]) : t5).addAll$1(0, selectorsForTarget);
- }
- t1 = t1._extensions;
- existingSources = t1.$index(0, target);
- if (existingSources == null) {
- t4 = _this.extender;
- t1.$indexSet(0, target, t4.get$_extensions().$index(0, target));
- if (!t2 || t3) {
- t1 = _this._box_0;
- t2 = t1.newExtensions;
- t1 = t2 == null ? t1.newExtensions = P.LinkedHashMap_LinkedHashMap$_empty(M.SimpleSelector, [P.Map, S.ComplexSelector, S.Extension]) : t2;
- t1.$indexSet(0, target, t4.get$_extensions().$index(0, target));
- }
- } else
- newSources.forEach$1(0, new F.Extender_addExtensions__closure(_this._box_0, existingSources, extensionsForTarget, selectorsForTarget, target));
- }
- };
- F.Extender_addExtensions__closure.prototype = {
- call$2: function(extender, extension) {
- var t2, _this = this,
- t1 = _this.existingSources;
- if (t1.containsKey$1(extender))
- return;
- t1.$indexSet(0, extender, extension);
- if (_this.extensionsForTarget != null || _this.selectorsForTarget != null) {
- t1 = _this._box_0;
- t2 = t1.newExtensions;
- t1 = t2 == null ? t1.newExtensions = P.LinkedHashMap_LinkedHashMap$_empty(M.SimpleSelector, [P.Map, S.ComplexSelector, S.Extension]) : t2;
- t1.putIfAbsent$2(_this.target, new F.Extender_addExtensions___closure()).putIfAbsent$2(extender, new F.Extender_addExtensions___closure0(extension));
- }
- }
- };
- F.Extender_addExtensions___closure.prototype = {
- call$0: function() {
- return P.LinkedHashMap_LinkedHashMap$_empty(S.ComplexSelector, S.Extension);
- }
- };
- F.Extender_addExtensions___closure0.prototype = {
- call$0: function() {
- return this.extension;
- }
- };
- F.Extender__extendList_closure.prototype = {
- call$1: function(complex) {
- return complex != null;
- }
- };
- F.Extender__extendComplex_closure.prototype = {
- call$1: function(component) {
- return H.setRuntimeTypeInfo([S.ComplexSelector$(H.setRuntimeTypeInfo([component], [S.ComplexSelectorComponent]), this.complex.lineBreak)], [S.ComplexSelector]);
- }
- };
- F.Extender__extendComplex_closure0.prototype = {
- call$1: function(path) {
- var t1 = Y.weave(J.map$1$1$ax(path, new F.Extender__extendComplex__closure(), [P.List, S.ComplexSelectorComponent]).toList$0(0));
- return new H.MappedListIterable(t1, new F.Extender__extendComplex__closure0(this._box_0, this.$this, this.complex, path), [H.getTypeArgumentByIndex(t1, 0), S.ComplexSelector]);
- }
- };
- F.Extender__extendComplex__closure.prototype = {
- call$1: function(complex) {
- return complex.components;
- }
- };
- F.Extender__extendComplex__closure0.prototype = {
- call$1: function(components) {
- var _this = this,
- t1 = _this.complex,
- outputComplex = S.ComplexSelector$(components, t1.lineBreak || J.any$1$ax(_this.path, new F.Extender__extendComplex___closure())),
- t2 = _this._box_0;
- if (t2.first && _this.$this._originals.contains$1(0, t1))
- _this.$this._originals.add$1(0, outputComplex);
- t2.first = false;
- return outputComplex;
- }
- };
- F.Extender__extendComplex___closure.prototype = {
- call$1: function(inputComplex) {
- return inputComplex.lineBreak;
- }
- };
- F.Extender__extendCompound_closure.prototype = {
- call$1: function(state) {
- state.assertCompatibleMediaContext$1(this.mediaQueryContext);
- return state.extender;
- }
- };
- F.Extender__extendCompound_closure0.prototype = {
- call$1: function(path) {
- var complexes, toUnify, originals, t3, _box_0 = {},
- t1 = this._box_1,
- t2 = [P.List, S.ComplexSelectorComponent];
- if (t1.first) {
- t1.first = false;
- complexes = H.setRuntimeTypeInfo([H.setRuntimeTypeInfo([X.CompoundSelector$(J.expand$1$1$ax(path, new F.Extender__extendCompound__closure(), M.SimpleSelector))], [S.ComplexSelectorComponent])], [t2]);
- } else {
- toUnify = Q.QueueList$(null, t2);
- for (t1 = J.get$iterator$ax(path), t2 = [M.SimpleSelector], originals = null; t1.moveNext$0();) {
- t3 = t1.get$current(t1);
- if (t3.isOriginal) {
- if (originals == null)
- originals = H.setRuntimeTypeInfo([], t2);
- C.JSArray_methods.addAll$1(originals, H.interceptedTypeCast(C.JSArray_methods.get$last(t3.extender.components), "$isCompoundSelector").components);
- } else
- toUnify._queue_list$_add$1(t3.extender.components);
- }
- if (originals != null)
- toUnify.addFirst$1(H.setRuntimeTypeInfo([X.CompoundSelector$(originals)], [S.ComplexSelectorComponent]));
- complexes = Y.unifyComplex(toUnify);
- if (complexes == null)
- return;
- }
- _box_0.lineBreak = false;
- for (t1 = J.get$iterator$ax(path), t2 = this.mediaQueryContext; t1.moveNext$0();) {
- t3 = t1.get$current(t1);
- t3.assertCompatibleMediaContext$1(t2);
- _box_0.lineBreak = _box_0.lineBreak || t3.extender.lineBreak;
- }
- return J.map$1$1$ax(complexes, new F.Extender__extendCompound__closure0(_box_0), S.ComplexSelector).toList$0(0);
- }
- };
- F.Extender__extendCompound__closure.prototype = {
- call$1: function(state) {
- return H.interceptedTypeCast(C.JSArray_methods.get$last(state.extender.components), "$isCompoundSelector").components;
- }
- };
- F.Extender__extendCompound__closure0.prototype = {
- call$1: function(components) {
- return S.ComplexSelector$(components, this._box_0.lineBreak);
- }
- };
- F.Extender__extendCompound_closure1.prototype = {
- call$1: function(complexes) {
- return complexes != null;
- }
- };
- F.Extender__extendCompound_closure2.prototype = {
- call$1: function(l) {
- return l;
- }
- };
- F.Extender__extendSimple_withoutPseudo.prototype = {
- call$1: function(simple) {
- var t1, t2,
- extenders = this.extensions.$index(0, simple);
- if (extenders == null)
- return;
- t1 = this.targetsUsed;
- if (t1 != null)
- t1.add$1(0, simple);
- t1 = this.$this;
- if (t1._mode === C.ExtendMode_replace) {
- t1 = extenders.get$values();
- return P.List_List$from(t1, true, H.getRuntimeTypeArgument(t1, "Iterable", 0));
- }
- t2 = H.setRuntimeTypeInfo([], [S.Extension]);
- t2.push(t1._extensionForSimple$1(simple));
- for (t1 = extenders.get$values(), t1 = t1.get$iterator(t1); t1.moveNext$0();)
- t2.push(t1.get$current(t1));
- return t2;
- }
- };
- F.Extender__extendSimple_closure.prototype = {
- call$1: function(pseudo) {
- var t1 = this.withoutPseudo.call$1(pseudo);
- return t1 == null ? H.setRuntimeTypeInfo([this.$this._extensionForSimple$1(pseudo)], [S.Extension]) : t1;
- }
- };
- F.Extender__extendPseudo_closure.prototype = {
- call$1: function(complex) {
- return complex.components.length > 1;
- }
- };
- F.Extender__extendPseudo_closure0.prototype = {
- call$1: function(complex) {
- return complex.components.length === 1;
- }
- };
- F.Extender__extendPseudo_closure1.prototype = {
- call$1: function(complex) {
- return complex.components.length <= 1;
- }
- };
- F.Extender__extendPseudo_closure2.prototype = {
- call$1: function(complex) {
- var innerPseudo, t2,
- t1 = complex.components;
- if (t1.length !== 1)
- return H.setRuntimeTypeInfo([complex], [S.ComplexSelector]);
- if (!(C.JSArray_methods.get$first(t1) instanceof X.CompoundSelector))
- return H.setRuntimeTypeInfo([complex], [S.ComplexSelector]);
- t1 = H.interceptedTypeCast(C.JSArray_methods.get$first(t1), "$isCompoundSelector").components;
- if (t1.length !== 1)
- return H.setRuntimeTypeInfo([complex], [S.ComplexSelector]);
- if (!(C.JSArray_methods.get$first(t1) instanceof D.PseudoSelector))
- return H.setRuntimeTypeInfo([complex], [S.ComplexSelector]);
- innerPseudo = H.interceptedTypeCast(C.JSArray_methods.get$first(t1), "$isPseudoSelector");
- t1 = innerPseudo.selector;
- if (t1 == null)
- return H.setRuntimeTypeInfo([complex], [S.ComplexSelector]);
- t2 = this.pseudo;
- switch (t2.normalizedName) {
- case "not":
- if (innerPseudo.normalizedName !== "matches")
- return H.setRuntimeTypeInfo([], [S.ComplexSelector]);
- return t1.components;
- case "matches":
- case "any":
- case "current":
- case "nth-child":
- case "nth-last-child":
- if (innerPseudo.name !== t2.name)
- return H.setRuntimeTypeInfo([], [S.ComplexSelector]);
- if (innerPseudo.argument != t2.argument)
- return H.setRuntimeTypeInfo([], [S.ComplexSelector]);
- return t1.components;
- case "has":
- case "host":
- case "host-context":
- case "slotted":
- return H.setRuntimeTypeInfo([complex], [S.ComplexSelector]);
- default:
- return H.setRuntimeTypeInfo([], [S.ComplexSelector]);
- }
- }
- };
- F.Extender__extendPseudo_closure3.prototype = {
- call$1: function(complex) {
- var t1 = this.pseudo;
- return D.PseudoSelector$(t1.name, t1.argument, !t1.isClass, D.SelectorList$(H.setRuntimeTypeInfo([complex], [S.ComplexSelector])));
- }
- };
- F.Extender__trim_closure.prototype = {
- call$1: function(complex2) {
- return complex2.get$minSpecificity() >= this._box_0.maxSpecificity && Y.complexIsSuperselector(complex2.components, this.complex1.components);
- }
- };
- F.Extender__trim_closure0.prototype = {
- call$1: function(complex2) {
- return complex2.get$minSpecificity() >= this._box_0.maxSpecificity && Y.complexIsSuperselector(complex2.components, this.complex1.components);
- }
- };
- F.Extender_clone_closure.prototype = {
- call$2: function(simple, selectors) {
- var t1, t2, t3, t4, t5, t6, newSelector, mediaContext, _this = this,
- newSelectorSet = P.LinkedHashSet_LinkedHashSet$_empty([F.ModifiableCssValue, D.SelectorList]);
- _this.newSelectors.$indexSet(0, simple, newSelectorSet);
- for (t1 = selectors.get$iterator(selectors), t2 = [D.SelectorList], t3 = _this.oldToNewSelectors, t4 = _this.$this._mediaContexts, t5 = _this.newMediaContexts; t1.moveNext$0();) {
- t6 = t1.get$current(t1);
- newSelector = new F.ModifiableCssValue(t6.value, t6.span, t2);
- newSelectorSet.add$1(0, newSelector);
- t3.$indexSet(0, t6, newSelector);
- mediaContext = t4.$index(0, t6);
- if (mediaContext != null)
- t5.$indexSet(0, newSelector, mediaContext);
- }
- }
- };
- S.Extension.prototype = {
- assertCompatibleMediaContext$1: function(mediaContext) {
- var t1 = this.mediaContext;
- if (t1 == null)
- return;
- if (mediaContext != null && C.C_ListEquality.equals$2(t1, mediaContext))
- return;
- throw H.wrapException(E.SassException$("You may not @extend selectors across media queries.", this.span));
- },
- toString$0: function(_) {
- var t1 = H.S(this.extender) + " {@extend " + H.S(this.target);
- return t1 + (this.isOptional ? " !optional" : "") + "}";
- },
- get$target: function() {
- return this.target;
- },
- get$span: function() {
- return this.span;
- }
- };
- Y.unifyComplex_closure.prototype = {
- call$1: function(complex) {
- var t1 = J.getInterceptor$asx(complex);
- return t1.sublist$2(complex, 0, t1.get$length(complex) - 1);
- }
- };
- Y._weaveParents_closure.prototype = {
- call$2: function(group1, group2) {
- var unified, t1;
- if (C.C_ListEquality.equals$2(group1, group2))
- return group1;
- if (!(J.get$first$ax(group1) instanceof X.CompoundSelector) || !(J.get$first$ax(group2) instanceof X.CompoundSelector))
- return;
- if (Y.complexIsParentSuperselector(group1, group2))
- return group2;
- if (Y.complexIsParentSuperselector(group2, group1))
- return group1;
- if (!Y._mustUnify(group1, group2))
- return;
- unified = Y.unifyComplex(H.setRuntimeTypeInfo([group1, group2], [[P.List, S.ComplexSelectorComponent]]));
- if (unified == null)
- return;
- t1 = J.getInterceptor$asx(unified);
- if (t1.get$length(unified) > 1)
- return;
- return t1.get$first(unified);
- }
- };
- Y._weaveParents_closure0.prototype = {
- call$1: function(sequence) {
- return Y.complexIsParentSuperselector(sequence.get$first(sequence), this.group);
- }
- };
- Y._weaveParents_closure1.prototype = {
- call$1: function(chunk) {
- return J.expand$1$1$ax(chunk, new Y._weaveParents__closure1(), S.ComplexSelectorComponent);
- }
- };
- Y._weaveParents__closure1.prototype = {
- call$1: function(group) {
- return group;
- }
- };
- Y._weaveParents_closure2.prototype = {
- call$1: function(sequence) {
- return sequence.get$length(sequence) === 0;
- }
- };
- Y._weaveParents_closure3.prototype = {
- call$1: function(chunk) {
- return J.expand$1$1$ax(chunk, new Y._weaveParents__closure0(), S.ComplexSelectorComponent);
- }
- };
- Y._weaveParents__closure0.prototype = {
- call$1: function(group) {
- return group;
- }
- };
- Y._weaveParents_closure4.prototype = {
- call$1: function(choice) {
- return J.get$isNotEmpty$asx(choice);
- }
- };
- Y._weaveParents_closure5.prototype = {
- call$1: function(path) {
- var t1 = J.expand$1$1$ax(path, new Y._weaveParents__closure(), S.ComplexSelectorComponent);
- return P.List_List$from(t1, true, H.getRuntimeTypeArgument(t1, "Iterable", 0));
- }
- };
- Y._weaveParents__closure.prototype = {
- call$1: function(group) {
- return group;
- }
- };
- Y._mustUnify_closure.prototype = {
- call$1: function(component) {
- return component instanceof X.CompoundSelector && C.JSArray_methods.any$1(component.components, new Y._mustUnify__closure(this.uniqueSelectors));
- }
- };
- Y._mustUnify__closure.prototype = {
- call$1: function(simple) {
- var t1 = J.getInterceptor$(simple);
- if (!t1.$isIDSelector)
- t1 = !!t1.$isPseudoSelector && !simple.isClass;
- else
- t1 = true;
- return t1 && this.uniqueSelectors.contains$1(0, simple);
- }
- };
- Y.paths_closure.prototype = {
- call$2: function(paths, choice) {
- var t1 = this.T;
- t1 = J.expand$1$1$ax(choice, new Y.paths__closure(paths, t1), [P.List, t1]);
- return P.List_List$from(t1, true, H.getRuntimeTypeArgument(t1, "Iterable", 0));
- }
- };
- Y.paths__closure.prototype = {
- call$1: function(option) {
- var t1 = this.T;
- return J.map$1$1$ax(this.paths, new Y.paths___closure(option, t1), [P.List, t1]);
- },
- $signature: function() {
- var t1 = this.T;
- return {func: 1, ret: [P.Iterable, [P.List, t1]], args: [t1]};
- }
- };
- Y.paths___closure.prototype = {
- call$1: function(path) {
- var t2,
- t1 = H.setRuntimeTypeInfo([], [this.T]);
- for (t2 = J.get$iterator$ax(path); t2.moveNext$0();)
- t1.push(t2.get$current(t2));
- t1.push(this.option);
- return t1;
- }
- };
- Y._hasRoot_closure.prototype = {
- call$1: function(simple) {
- return simple instanceof D.PseudoSelector && simple.isClass && simple.normalizedName === "root";
- }
- };
- Y.listIsSuperslector_closure.prototype = {
- call$1: function(complex1) {
- return C.JSArray_methods.any$1(this.list1, new Y.listIsSuperslector__closure(complex1));
- }
- };
- Y.listIsSuperslector__closure.prototype = {
- call$1: function(complex2) {
- return Y.complexIsSuperselector(complex2.components, this.complex1.components);
- }
- };
- Y._simpleIsSuperselectorOfCompound_closure.prototype = {
- call$1: function(theirSimple) {
- var t1 = this.simple;
- if (J.$eq$(t1, theirSimple))
- return true;
- if (theirSimple instanceof D.PseudoSelector && theirSimple.selector != null && $._subselectorPseudos.contains$1(0, theirSimple.normalizedName))
- return C.JSArray_methods.every$1(theirSimple.selector.components, new Y._simpleIsSuperselectorOfCompound__closure(t1));
- else
- return false;
- }
- };
- Y._simpleIsSuperselectorOfCompound__closure.prototype = {
- call$1: function(complex) {
- var t1 = complex.components;
- if (t1.length !== 1)
- return false;
- return C.JSArray_methods.contains$1(H.interceptedTypeCast(C.JSArray_methods.get$single(t1), "$isCompoundSelector").components, this.simple);
- }
- };
- Y._selectorPseudoIsSuperselector_closure.prototype = {
- call$1: function(pseudo2) {
- var t1 = pseudo2.selector;
- return Y.listIsSuperslector(this.pseudo1.selector.components, t1.components);
- }
- };
- Y._selectorPseudoIsSuperselector_closure0.prototype = {
- call$1: function(complex1) {
- var t1 = complex1.components,
- t2 = H.setRuntimeTypeInfo([], [S.ComplexSelectorComponent]),
- t3 = this.parents;
- if (t3 != null)
- for (t3 = t3.get$iterator(t3); t3.moveNext$0();)
- t2.push(t3.get$current(t3));
- t2.push(this.compound2);
- return Y.complexIsSuperselector(t1, t2);
- }
- };
- Y._selectorPseudoIsSuperselector_closure1.prototype = {
- call$1: function(pseudo2) {
- var t1 = pseudo2.selector;
- return Y.listIsSuperslector(this.pseudo1.selector.components, t1.components);
- }
- };
- Y._selectorPseudoIsSuperselector_closure2.prototype = {
- call$1: function(pseudo2) {
- var t1 = pseudo2.selector;
- return Y.listIsSuperslector(this.pseudo1.selector.components, t1.components);
- }
- };
- Y._selectorPseudoIsSuperselector_closure3.prototype = {
- call$1: function(complex) {
- return C.JSArray_methods.any$1(this.compound2.components, new Y._selectorPseudoIsSuperselector__closure(complex, this.pseudo1));
- }
- };
- Y._selectorPseudoIsSuperselector__closure.prototype = {
- call$1: function(simple2) {
- var compound1, _this = this,
- t1 = J.getInterceptor$(simple2);
- if (!!t1.$isTypeSelector) {
- compound1 = C.JSArray_methods.get$last(_this.complex.components);
- return compound1 instanceof X.CompoundSelector && C.JSArray_methods.any$1(compound1.components, new Y._selectorPseudoIsSuperselector___closure(simple2));
- } else if (!!t1.$isIDSelector) {
- compound1 = C.JSArray_methods.get$last(_this.complex.components);
- return compound1 instanceof X.CompoundSelector && C.JSArray_methods.any$1(compound1.components, new Y._selectorPseudoIsSuperselector___closure0(simple2));
- } else if (!!t1.$isPseudoSelector && simple2.name === _this.pseudo1.name && simple2.selector != null)
- return Y.listIsSuperslector(simple2.selector.components, H.setRuntimeTypeInfo([_this.complex], [S.ComplexSelector]));
- else
- return false;
- }
- };
- Y._selectorPseudoIsSuperselector___closure.prototype = {
- call$1: function(simple1) {
- var t1;
- if (simple1 instanceof F.TypeSelector) {
- t1 = this.simple2.name.$eq(0, simple1.name);
- t1 = !t1;
- } else
- t1 = false;
- return t1;
- }
- };
- Y._selectorPseudoIsSuperselector___closure0.prototype = {
- call$1: function(simple1) {
- var t1;
- if (simple1 instanceof N.IDSelector) {
- t1 = simple1.name;
- t1 = this.simple2.name !== t1;
- } else
- t1 = false;
- return t1;
- }
- };
- Y._selectorPseudoIsSuperselector_closure4.prototype = {
- call$1: function(pseudo2) {
- return J.$eq$(this.pseudo1.selector, pseudo2.selector);
- }
- };
- Y._selectorPseudoIsSuperselector_closure5.prototype = {
- call$1: function(pseudo2) {
- var t1, t2;
- if (pseudo2 instanceof D.PseudoSelector) {
- t1 = this.pseudo1;
- if (pseudo2.name === t1.name)
- if (pseudo2.argument == t1.argument) {
- t2 = pseudo2.selector;
- t2 = Y.listIsSuperslector(t1.selector.components, t2.components);
- t1 = t2;
- } else
- t1 = false;
- else
- t1 = false;
- } else
- t1 = false;
- return t1;
- }
- };
- Y._selectorPseudosNamed_closure.prototype = {
- call$1: function(pseudo) {
- return pseudo.isClass === this.isClass && pseudo.selector != null && pseudo.name === this.name;
- }
- };
- A.MergedExtension.prototype = {
- unmerge$0: function() {
- var $async$self = this;
- return P._makeSyncStarIterable(function() {
- var $async$goto = 0, $async$handler = 1, $async$currentError, t1;
- return function $async$unmerge$0($async$errorCode, $async$result) {
- if ($async$errorCode === 1) {
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.left;
- $async$goto = !!t1.$isMergedExtension ? 2 : 4;
- break;
- case 2:
- // then
- $async$goto = 5;
- return P._IterationMarker_yieldStar(t1.unmerge$0());
- case 5:
- // after yield
- // goto join
- $async$goto = 3;
- break;
- case 4:
- // else
- $async$goto = 6;
- return t1;
- case 6:
- // after yield
- case 3:
- // join
- $async$goto = 7;
- return $async$self.right;
- case 7:
- // after yield
- // implicit return
- return P._IterationMarker_endOfIteration();
- case 1:
- // rethrow
- return P._IterationMarker_uncaughtError($async$currentError);
- }
- };
- }, S.Extension);
- }
- };
- L.ExtendMode.prototype = {
- toString$0: function(_) {
- return this.name;
- }
- };
- Y.closure.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments);
- return t1.$index($arguments, 0).get$isTruthy() ? t1.$index($arguments, 1) : t1.$index($arguments, 2);
- },
- $signature: 0
- };
- K.closure43.prototype = {
- call$1: function($arguments) {
- return K._rgb("rgb", $arguments);
- },
- $signature: 0
- };
- K.closure44.prototype = {
- call$1: function($arguments) {
- return K._rgb("rgb", $arguments);
- },
- $signature: 0
- };
- K.closure45.prototype = {
- call$1: function($arguments) {
- return K._rgbTwoArg("rgb", $arguments);
- },
- $signature: 0
- };
- K.closure46.prototype = {
- call$1: function($arguments) {
- var parsed = K._parseChannels("rgb", H.setRuntimeTypeInfo(["$red", "$green", "$blue"], [P.String]), J.get$first$ax($arguments));
- return parsed instanceof D.SassString ? parsed : K._rgb("rgb", H.subtypeCast(parsed, "$isList", [F.Value], "$asList"));
- },
- $signature: 0
- };
- K.closure47.prototype = {
- call$1: function($arguments) {
- return K._rgb("rgba", $arguments);
- },
- $signature: 0
- };
- K.closure48.prototype = {
- call$1: function($arguments) {
- return K._rgb("rgba", $arguments);
- },
- $signature: 0
- };
- K.closure49.prototype = {
- call$1: function($arguments) {
- return K._rgbTwoArg("rgba", $arguments);
- },
- $signature: 0
- };
- K.closure50.prototype = {
- call$1: function($arguments) {
- var parsed = K._parseChannels("rgba", H.setRuntimeTypeInfo(["$red", "$green", "$blue"], [P.String]), J.get$first$ax($arguments));
- return parsed instanceof D.SassString ? parsed : K._rgb("rgba", H.subtypeCast(parsed, "$isList", [F.Value], "$asList"));
- },
- $signature: 0
- };
- K.closure51.prototype = {
- call$1: function($arguments) {
- var color, t2,
- t1 = J.getInterceptor$asx($arguments),
- weight = t1.$index($arguments, 1).assertNumber$1("weight");
- if (t1.$index($arguments, 0) instanceof T.SassNumber) {
- if (weight.value !== 100 || !weight.hasUnit$1("%"))
- throw H.wrapException("Only one argument may be passed to the plain-CSS invert() function.");
- return K._functionString("invert", t1.take$1($arguments, 1));
- }
- color = t1.$index($arguments, 0).assertColor$1("color");
- t1 = color.get$red();
- t2 = color.get$green();
- return K._mixColors(color.changeRgb$3$blue$green$red(255 - color.get$blue(), 255 - t2, 255 - t1), color, weight);
- },
- $signature: 0
- };
- K.closure52.prototype = {
- call$1: function($arguments) {
- return K._hsl("hsl", $arguments);
- },
- $signature: 0
- };
- K.closure53.prototype = {
- call$1: function($arguments) {
- return K._hsl("hsl", $arguments);
- },
- $signature: 0
- };
- K.closure54.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments);
- if (t1.$index($arguments, 0).get$isVar() || t1.$index($arguments, 1).get$isVar())
- return K._functionString("hsl", $arguments);
- else
- throw H.wrapException(E.SassScriptException$("Missing argument $lightness."));
- },
- $signature: 4
- };
- K.closure55.prototype = {
- call$1: function($arguments) {
- var parsed = K._parseChannels("hsl", H.setRuntimeTypeInfo(["$hue", "$saturation", "$lightness"], [P.String]), J.get$first$ax($arguments));
- return parsed instanceof D.SassString ? parsed : K._hsl("hsl", H.subtypeCast(parsed, "$isList", [F.Value], "$asList"));
- },
- $signature: 0
- };
- K.closure56.prototype = {
- call$1: function($arguments) {
- return K._hsl("hsla", $arguments);
- },
- $signature: 0
- };
- K.closure57.prototype = {
- call$1: function($arguments) {
- return K._hsl("hsla", $arguments);
- },
- $signature: 0
- };
- K.closure58.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments);
- if (t1.$index($arguments, 0).get$isVar() || t1.$index($arguments, 1).get$isVar())
- return K._functionString("hsla", $arguments);
- else
- throw H.wrapException(E.SassScriptException$("Missing argument $lightness."));
- },
- $signature: 4
- };
- K.closure59.prototype = {
- call$1: function($arguments) {
- var parsed = K._parseChannels("hsla", H.setRuntimeTypeInfo(["$hue", "$saturation", "$lightness"], [P.String]), J.get$first$ax($arguments));
- return parsed instanceof D.SassString ? parsed : K._hsl("hsla", H.subtypeCast(parsed, "$isList", [F.Value], "$asList"));
- },
- $signature: 0
- };
- K.closure60.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments);
- if (t1.$index($arguments, 0) instanceof T.SassNumber)
- return K._functionString("grayscale", $arguments);
- return t1.$index($arguments, 0).assertColor$1("color").changeHsl$1$saturation(0);
- },
- $signature: 0
- };
- K.closure61.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments),
- color = t1.$index($arguments, 0).assertColor$1("color"),
- degrees = t1.$index($arguments, 1).assertNumber$1("degrees");
- return color.changeHsl$1$hue(color.get$hue() + degrees.value);
- },
- $signature: 6
- };
- K.closure62.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments),
- color = t1.$index($arguments, 0).assertColor$1("color"),
- amount = t1.$index($arguments, 1).assertNumber$1("amount");
- return color.changeHsl$1$lightness(C.JSNumber_methods.clamp$2(color.get$lightness() + amount.valueInRange$3(0, 100, "amount"), 0, 100));
- },
- $signature: 6
- };
- K.closure63.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments),
- color = t1.$index($arguments, 0).assertColor$1("color"),
- amount = t1.$index($arguments, 1).assertNumber$1("amount");
- return color.changeHsl$1$lightness(C.JSNumber_methods.clamp$2(color.get$lightness() - amount.valueInRange$3(0, 100, "amount"), 0, 100));
- },
- $signature: 6
- };
- K.closure64.prototype = {
- call$1: function($arguments) {
- return new D.SassString("saturate(" + N.serializeValue(J.$index$asx($arguments, 0).assertNumber$1("amount"), false, true) + ")", false);
- },
- $signature: 4
- };
- K.closure65.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments),
- color = t1.$index($arguments, 0).assertColor$1("color"),
- amount = t1.$index($arguments, 1).assertNumber$1("amount");
- return color.changeHsl$1$saturation(C.JSNumber_methods.clamp$2(color.get$saturation() + amount.valueInRange$3(0, 100, "amount"), 0, 100));
- },
- $signature: 6
- };
- K.closure66.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments),
- color = t1.$index($arguments, 0).assertColor$1("color"),
- amount = t1.$index($arguments, 1).assertNumber$1("amount");
- return color.changeHsl$1$saturation(C.JSNumber_methods.clamp$2(color.get$saturation() - amount.valueInRange$3(0, 100, "amount"), 0, 100));
- },
- $signature: 6
- };
- K.closure67.prototype = {
- call$1: function($arguments) {
- var color,
- argument = J.$index$asx($arguments, 0);
- if (argument instanceof D.SassString && !argument.hasQuotes && J.contains$1$asx(argument.text, $.$get$_microsoftFilterStart()))
- return K._functionString("alpha", $arguments);
- color = argument.assertColor$1("color");
- return new T.SassNumber(color.alpha, C.List_empty, C.List_empty, null);
- },
- $signature: 0
- };
- K.closure68.prototype = {
- call$1: function($arguments) {
- var t1,
- argList = J.$index$asx($arguments, 0).get$asList();
- if (argList.length !== 0 && C.JSArray_methods.every$1(argList, new K._closure10()))
- return K._functionString("alpha", $arguments);
- t1 = argList.length;
- if (t1 === 0)
- throw H.wrapException(E.SassScriptException$("Missing argument $color."));
- else
- throw H.wrapException(E.SassScriptException$("Only 1 argument allowed, but " + t1 + " were passed."));
- },
- $signature: 4
- };
- K._closure10.prototype = {
- call$1: function(argument) {
- return argument instanceof D.SassString && !argument.hasQuotes && J.contains$1$asx(argument.text, $.$get$_microsoftFilterStart());
- }
- };
- K.closure69.prototype = {
- call$1: function($arguments) {
- var color,
- t1 = J.getInterceptor$asx($arguments);
- if (t1.$index($arguments, 0) instanceof T.SassNumber)
- return K._functionString("opacity", $arguments);
- color = t1.$index($arguments, 0).assertColor$1("color");
- return new T.SassNumber(color.alpha, C.List_empty, C.List_empty, null);
- },
- $signature: 0
- };
- K.closure96.prototype = {
- call$1: function($arguments) {
- var result, color, t2,
- t1 = J.getInterceptor$asx($arguments),
- weight = t1.$index($arguments, 1).assertNumber$1("weight");
- if (t1.$index($arguments, 0) instanceof T.SassNumber) {
- if (weight.value !== 100 || !weight.hasUnit$1("%"))
- throw H.wrapException("Only one argument may be passed to the plain-CSS invert() function.");
- result = K._functionString("invert", t1.take$1($arguments, 1));
- N.warn("Passing a number to color.invert() is deprecated.\n\nRecommendation: " + result.toString$0(0), false);
- return result;
- }
- color = t1.$index($arguments, 0).assertColor$1("color");
- t1 = color.get$red();
- t2 = color.get$green();
- return K._mixColors(color.changeRgb$3$blue$green$red(255 - color.get$blue(), 255 - t2, 255 - t1), color, weight);
- },
- $signature: 0
- };
- K.closure97.prototype = {
- call$1: function($arguments) {
- var result,
- t1 = J.getInterceptor$asx($arguments);
- if (t1.$index($arguments, 0) instanceof T.SassNumber) {
- result = K._functionString("grayscale", t1.take$1($arguments, 1));
- N.warn("Passing a number to color.grayscale() is deprecated.\n\nRecommendation: " + result.toString$0(0), false);
- return result;
- }
- return t1.$index($arguments, 0).assertColor$1("color").changeHsl$1$saturation(0);
- },
- $signature: 0
- };
- K.closure98.prototype = {
- call$1: function($arguments) {
- var result, color,
- argument = J.$index$asx($arguments, 0);
- if (argument instanceof D.SassString && !argument.hasQuotes && J.contains$1$asx(argument.text, $.$get$_microsoftFilterStart())) {
- result = K._functionString("alpha", $arguments);
- N.warn("Using color.alpha() for a Microsoft filter is deprecated.\n\nRecommendation: " + result.toString$0(0), false);
- return result;
- }
- color = argument.assertColor$1("color");
- return new T.SassNumber(color.alpha, C.List_empty, C.List_empty, null);
- },
- $signature: 0
- };
- K.closure99.prototype = {
- call$1: function($arguments) {
- var result,
- t1 = J.getInterceptor$asx($arguments);
- if (C.JSArray_methods.every$1(t1.$index($arguments, 0).get$asList(), new K._closure12())) {
- result = K._functionString("alpha", $arguments);
- N.warn("Using color.alpha() for a Microsoft filter is deprecated.\n\nRecommendation: " + result.toString$0(0), false);
- return result;
- }
- throw H.wrapException(E.SassScriptException$("Only 1 argument allowed, but " + t1.get$length($arguments) + " were passed."));
- },
- $signature: 4
- };
- K._closure12.prototype = {
- call$1: function(argument) {
- return argument instanceof D.SassString && !argument.hasQuotes && J.contains$1$asx(argument.text, $.$get$_microsoftFilterStart());
- }
- };
- K.closure100.prototype = {
- call$1: function($arguments) {
- var result, color,
- t1 = J.getInterceptor$asx($arguments);
- if (t1.$index($arguments, 0) instanceof T.SassNumber) {
- result = K._functionString("opacity", $arguments);
- N.warn("Passing a number to color.opacity() is deprecated.\n\nRecommendation: " + result.toString$0(0), false);
- return result;
- }
- color = t1.$index($arguments, 0).assertColor$1("color");
- return new T.SassNumber(color.alpha, C.List_empty, C.List_empty, null);
- },
- $signature: 0
- };
- K.closure83.prototype = {
- call$1: function($arguments) {
- var t1 = J.get$first$ax($arguments).assertColor$1("color").get$red();
- return new T.SassNumber(t1, C.List_empty, C.List_empty, null);
- },
- $signature: 1
- };
- K.closure82.prototype = {
- call$1: function($arguments) {
- var t1 = J.get$first$ax($arguments).assertColor$1("color").get$green();
- return new T.SassNumber(t1, C.List_empty, C.List_empty, null);
- },
- $signature: 1
- };
- K.closure81.prototype = {
- call$1: function($arguments) {
- var t1 = J.get$first$ax($arguments).assertColor$1("color").get$blue();
- return new T.SassNumber(t1, C.List_empty, C.List_empty, null);
- },
- $signature: 1
- };
- K.closure80.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments);
- return K._mixColors(t1.$index($arguments, 0).assertColor$1("color1"), t1.$index($arguments, 1).assertColor$1("color2"), t1.$index($arguments, 2).assertNumber$1("weight"));
- },
- $signature: 6
- };
- K.closure79.prototype = {
- call$1: function($arguments) {
- var t1 = J.get$first$ax($arguments).assertColor$1("color").get$hue(),
- t2 = P.String,
- t3 = H.setRuntimeTypeInfo(["deg"], [t2]);
- t2 = P.List_List$unmodifiable(t3, t2);
- return new T.SassNumber(t1, t2, C.List_empty, null);
- },
- $signature: 1
- };
- K.closure78.prototype = {
- call$1: function($arguments) {
- var t1 = J.get$first$ax($arguments).assertColor$1("color").get$saturation(),
- t2 = P.String,
- t3 = H.setRuntimeTypeInfo(["%"], [t2]);
- t2 = P.List_List$unmodifiable(t3, t2);
- return new T.SassNumber(t1, t2, C.List_empty, null);
- },
- $signature: 1
- };
- K.closure77.prototype = {
- call$1: function($arguments) {
- var t1 = J.get$first$ax($arguments).assertColor$1("color").get$lightness(),
- t2 = P.String,
- t3 = H.setRuntimeTypeInfo(["%"], [t2]);
- t2 = P.List_List$unmodifiable(t3, t2);
- return new T.SassNumber(t1, t2, C.List_empty, null);
- },
- $signature: 1
- };
- K.closure76.prototype = {
- call$1: function($arguments) {
- var color = J.$index$asx($arguments, 0).assertColor$1("color");
- return color.changeHsl$1$hue(color.get$hue() + 180);
- },
- $signature: 6
- };
- K.closure74.prototype = {
- call$1: function($arguments) {
- var keywords, t2, red, green, blue, hue, saturation, lightness, alpha, hasRgb, hasHsl, t3, t4, t5, _null = null,
- t1 = J.getInterceptor$asx($arguments),
- color = t1.$index($arguments, 0).assertColor$1("color"),
- argumentList = H.interceptedTypeCast(t1.$index($arguments, 1), "$isSassArgumentList");
- if (argumentList._list$_contents.length !== 0)
- throw H.wrapException(E.SassScriptException$("Only one positional argument is allowed. All other arguments must be passed by name."));
- argumentList._wereKeywordsAccessed = true;
- keywords = P.LinkedHashMap_LinkedHashMap$of(argumentList._keywords, P.String, F.Value);
- t1 = new K.closure_getInRange0(keywords);
- t2 = t1.call$3("red", -255, 255);
- red = t2 == null ? _null : T.fuzzyRound(t2);
- t2 = t1.call$3("green", -255, 255);
- green = t2 == null ? _null : T.fuzzyRound(t2);
- t2 = t1.call$3("blue", -255, 255);
- blue = t2 == null ? _null : T.fuzzyRound(t2);
- t2 = keywords.remove$1(0, "hue");
- t2 = t2 == null ? _null : t2.assertNumber$1("hue");
- hue = t2 == null ? _null : t2.value;
- saturation = t1.call$3("saturation", -100, 100);
- lightness = t1.call$3("lightness", -100, 100);
- alpha = t1.call$3("alpha", -1, 1);
- if (keywords.get$isNotEmpty(keywords))
- throw H.wrapException(E.SassScriptException$("No " + B.pluralize("argument", keywords.get$length(keywords), _null) + " named " + H.S(B.toSentence(keywords.get$keys().map$1$1(0, new K._closure9(), P.Object), "or")) + "."));
- t1 = red == null;
- hasRgb = !t1 || green != null || blue != null;
- t2 = hue == null;
- hasHsl = !t2 || saturation != null || lightness != null;
- if (hasRgb) {
- if (hasHsl)
- throw H.wrapException(E.SassScriptException$("RGB parameters may not be passed along with HSL parameters."));
- t2 = color.get$red();
- t2 = H.intTypeCast(C.JSInt_methods.clamp$2(t2 + (t1 ? 0 : red), 0, 255));
- t3 = color.get$green();
- t1 = H.intTypeCast(C.JSInt_methods.clamp$2(t3 + (green == null ? 0 : green), 0, 255));
- t3 = color.get$blue();
- t3 = H.intTypeCast(C.JSInt_methods.clamp$2(t3 + (blue == null ? 0 : blue), 0, 255));
- t4 = alpha == null ? 0 : alpha;
- return color.changeRgb$4$alpha$blue$green$red(C.JSNumber_methods.clamp$2(color.alpha + t4, 0, 1), t3, t1, t2);
- } else if (hasHsl) {
- t1 = color.get$hue();
- t2 = t2 ? 0 : hue;
- t3 = color.get$saturation();
- t3 = C.JSNumber_methods.clamp$2(t3 + (saturation == null ? 0 : saturation), 0, 100);
- t4 = color.get$lightness();
- t4 = C.JSNumber_methods.clamp$2(t4 + (lightness == null ? 0 : lightness), 0, 100);
- t5 = alpha == null ? 0 : alpha;
- return color.changeHsl$4$alpha$hue$lightness$saturation(C.JSNumber_methods.clamp$2(color.alpha + t5, 0, 1), t1 + t2, t4, t3);
- } else if (alpha != null)
- return color.changeAlpha$1(C.JSNumber_methods.clamp$2(color.alpha + alpha, 0, 1));
- else
- return color;
- },
- $signature: 6
- };
- K.closure_getInRange0.prototype = {
- call$3: function($name, min, max) {
- var t1 = this.keywords.remove$1(0, $name);
- t1 = t1 == null ? null : t1.assertNumber$1($name);
- return t1 == null ? null : t1.valueInRange$3(min, max, $name);
- }
- };
- K._closure9.prototype = {
- call$1: function($name) {
- return "$" + H.S($name);
- }
- };
- K.closure73.prototype = {
- call$1: function($arguments) {
- var keywords, t2, red, green, blue, saturation, lightness, alpha, hasRgb, hasHsl, t3, t4,
- t1 = J.getInterceptor$asx($arguments),
- color = t1.$index($arguments, 0).assertColor$1("color"),
- argumentList = H.interceptedTypeCast(t1.$index($arguments, 1), "$isSassArgumentList");
- if (argumentList._list$_contents.length !== 0)
- throw H.wrapException(E.SassScriptException$("Only one positional argument is allowed. All other arguments must be passed by name."));
- argumentList._wereKeywordsAccessed = true;
- keywords = P.LinkedHashMap_LinkedHashMap$of(argumentList._keywords, P.String, F.Value);
- t1 = new K.closure_getScale(keywords);
- t2 = new K.closure_scaleValue();
- red = t1.call$1("red");
- green = t1.call$1("green");
- blue = t1.call$1("blue");
- saturation = t1.call$1("saturation");
- lightness = t1.call$1("lightness");
- alpha = t1.call$1("alpha");
- if (keywords.get$isNotEmpty(keywords))
- throw H.wrapException(E.SassScriptException$("No " + B.pluralize("argument", keywords.get$length(keywords), null) + " named " + H.S(B.toSentence(keywords.get$keys().map$1$1(0, new K._closure8(), P.Object), "or")) + "."));
- hasRgb = red != null || green != null || blue != null;
- hasHsl = saturation != null || lightness != null;
- if (hasRgb) {
- if (hasHsl)
- throw H.wrapException(E.SassScriptException$("RGB parameters may not be passed along with HSL parameters."));
- t1 = T.fuzzyRound(t2.call$3(color.get$red(), red, 255));
- t3 = T.fuzzyRound(t2.call$3(color.get$green(), green, 255));
- t4 = T.fuzzyRound(t2.call$3(color.get$blue(), blue, 255));
- return color.changeRgb$4$alpha$blue$green$red(t2.call$3(color.alpha, alpha, 1), t4, t3, t1);
- } else if (hasHsl) {
- t1 = t2.call$3(color.get$saturation(), saturation, 100);
- t3 = t2.call$3(color.get$lightness(), lightness, 100);
- return color.changeHsl$3$alpha$lightness$saturation(t2.call$3(color.alpha, alpha, 1), t3, t1);
- } else if (alpha != null)
- return color.changeAlpha$1(t2.call$3(color.alpha, alpha, 1));
- else
- return color;
- },
- $signature: 6
- };
- K.closure_getScale.prototype = {
- call$1: function($name) {
- var number,
- value = this.keywords.remove$1(0, $name);
- if (value == null)
- return;
- number = value.assertNumber$1($name);
- number.assertUnit$2("%", $name);
- return number.valueInRange$3(-100, 100, $name) / 100;
- }
- };
- K.closure_scaleValue.prototype = {
- call$3: function(current, scale, max) {
- if (scale == null)
- return current;
- return current + (scale > 0 ? max - current : current) * scale;
- }
- };
- K._closure8.prototype = {
- call$1: function($name) {
- return "$" + H.S($name);
- }
- };
- K.closure72.prototype = {
- call$1: function($arguments) {
- var keywords, t2, red, green, blue, hue, saturation, lightness, alpha, hasRgb, hasHsl, _null = null,
- t1 = J.getInterceptor$asx($arguments),
- color = t1.$index($arguments, 0).assertColor$1("color"),
- argumentList = H.interceptedTypeCast(t1.$index($arguments, 1), "$isSassArgumentList");
- if (argumentList._list$_contents.length !== 0)
- throw H.wrapException(E.SassScriptException$("Only one positional argument is allowed. All other arguments must be passed by name."));
- argumentList._wereKeywordsAccessed = true;
- keywords = P.LinkedHashMap_LinkedHashMap$of(argumentList._keywords, P.String, F.Value);
- t1 = new K.closure_getInRange(keywords);
- t2 = t1.call$3("red", 0, 255);
- red = t2 == null ? _null : T.fuzzyRound(t2);
- t2 = t1.call$3("green", 0, 255);
- green = t2 == null ? _null : T.fuzzyRound(t2);
- t2 = t1.call$3("blue", 0, 255);
- blue = t2 == null ? _null : T.fuzzyRound(t2);
- t2 = keywords.remove$1(0, "hue");
- t2 = t2 == null ? _null : t2.assertNumber$1("hue");
- hue = t2 == null ? _null : t2.value;
- saturation = t1.call$3("saturation", 0, 100);
- lightness = t1.call$3("lightness", 0, 100);
- alpha = t1.call$3("alpha", 0, 1);
- if (keywords.get$isNotEmpty(keywords))
- throw H.wrapException(E.SassScriptException$("No " + B.pluralize("argument", keywords.get$length(keywords), _null) + " named " + H.S(B.toSentence(keywords.get$keys().map$1$1(0, new K._closure7(), P.Object), "or")) + "."));
- hasRgb = red != null || green != null || blue != null;
- hasHsl = hue != null || saturation != null || lightness != null;
- if (hasRgb) {
- if (hasHsl)
- throw H.wrapException(E.SassScriptException$("RGB parameters may not be passed along with HSL parameters."));
- return color.changeRgb$4$alpha$blue$green$red(alpha, blue, green, red);
- } else if (hasHsl)
- return color.changeHsl$4$alpha$hue$lightness$saturation(alpha, hue, lightness, saturation);
- else if (alpha != null)
- return color.changeAlpha$1(alpha);
- else
- return color;
- },
- $signature: 6
- };
- K.closure_getInRange.prototype = {
- call$3: function($name, min, max) {
- var t1 = this.keywords.remove$1(0, $name);
- t1 = t1 == null ? null : t1.assertNumber$1($name);
- return t1 == null ? null : t1.valueInRange$3(min, max, $name);
- }
- };
- K._closure7.prototype = {
- call$1: function($name) {
- return "$" + H.S($name);
- }
- };
- K.closure75.prototype = {
- call$1: function($arguments) {
- var color = J.$index$asx($arguments, 0).assertColor$1("color"),
- t1 = new K.closure_hexString();
- return new D.SassString("#" + H.S(t1.call$1(T.fuzzyRound(color.alpha * 255))) + H.S(t1.call$1(color.get$red())) + H.S(t1.call$1(color.get$green())) + H.S(t1.call$1(color.get$blue())), false);
- },
- $signature: 4
- };
- K.closure_hexString.prototype = {
- call$1: function(component) {
- return C.JSString_methods.padLeft$2(J.toRadixString$1$n(component, 16), 2, "0").toUpperCase();
- },
- $signature: 17
- };
- K._functionString_closure.prototype = {
- call$1: function(argument) {
- argument.toString;
- return N.serializeValue(argument, false, true);
- }
- };
- K._removedColorFunction_closure.prototype = {
- call$1: function($arguments) {
- var t1 = this.name,
- t2 = J.getInterceptor$asx($arguments),
- t3 = "The function " + t1 + "() isn't in the sass:color module.\n\nRecommendation: color.adjust(" + H.S(t2.$index($arguments, 0)) + ", $" + this.argument + ": ";
- throw H.wrapException(E.SassScriptException$(t3 + (this.negative ? "-" : "") + H.S(t2.$index($arguments, 1)) + ")\n\nMore info: https://sass-lang.com/documentation/functions/color#" + t1));
- },
- $signature: 23
- };
- K._parseChannels_closure.prototype = {
- call$1: function(value) {
- return value.get$isVar();
- }
- };
- D.closure42.prototype = {
- call$1: function($arguments) {
- var t1 = J.$index$asx($arguments, 0).get$asList().length;
- return new T.SassNumber(t1, C.List_empty, C.List_empty, null);
- },
- $signature: 1
- };
- D.closure41.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments),
- list = t1.$index($arguments, 0),
- index = t1.$index($arguments, 1);
- return list.get$asList()[list.sassIndexToListIndex$2(index, "n")];
- },
- $signature: 0
- };
- D.closure40.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments),
- list = t1.$index($arguments, 0),
- index = t1.$index($arguments, 1),
- value = t1.$index($arguments, 2),
- t2 = list.get$asList(),
- newList = H.setRuntimeTypeInfo(t2.slice(0), [H.getTypeArgumentByIndex(t2, 0)]);
- newList[list.sassIndexToListIndex$2(index, "n")] = value;
- return t1.$index($arguments, 0).changeListContents$1(newList);
- },
- $signature: 7
- };
- D.closure39.prototype = {
- call$1: function($arguments) {
- var separator, bracketed, t2, t3, _i,
- t1 = J.getInterceptor$asx($arguments),
- list1 = t1.$index($arguments, 0),
- list2 = t1.$index($arguments, 1),
- separatorParam = t1.$index($arguments, 2).assertString$1("separator"),
- bracketedParam = t1.$index($arguments, 3);
- t1 = separatorParam.text;
- if (t1 === "auto")
- if (list1.get$separator() !== C.ListSeparator_undecided)
- separator = list1.get$separator();
- else
- separator = list2.get$separator() !== C.ListSeparator_undecided ? list2.get$separator() : C.ListSeparator_space;
- else if (t1 === "space")
- separator = C.ListSeparator_space;
- else {
- if (t1 !== "comma")
- throw H.wrapException(E.SassScriptException$('$separator: Must be "space", "comma", or "auto".'));
- separator = C.ListSeparator_comma;
- }
- bracketed = bracketedParam instanceof D.SassString && bracketedParam.text === "auto" ? list1.get$hasBrackets() : bracketedParam.get$isTruthy();
- t1 = H.setRuntimeTypeInfo([], [F.Value]);
- for (t2 = list1.get$asList(), t3 = t2.length, _i = 0; _i < t2.length; t2.length === t3 || (0, H.throwConcurrentModificationError)(t2), ++_i)
- t1.push(t2[_i]);
- for (t2 = list2.get$asList(), t3 = t2.length, _i = 0; _i < t2.length; t2.length === t3 || (0, H.throwConcurrentModificationError)(t2), ++_i)
- t1.push(t2[_i]);
- return D.SassList$(t1, separator, bracketed);
- },
- $signature: 7
- };
- D.closure38.prototype = {
- call$1: function($arguments) {
- var separator, t2, t3, _i,
- t1 = J.getInterceptor$asx($arguments),
- list = t1.$index($arguments, 0),
- value = t1.$index($arguments, 1);
- t1 = t1.$index($arguments, 2).assertString$1("separator").text;
- if (t1 === "auto")
- separator = list.get$separator() === C.ListSeparator_undecided ? C.ListSeparator_space : list.get$separator();
- else if (t1 === "space")
- separator = C.ListSeparator_space;
- else {
- if (t1 !== "comma")
- throw H.wrapException(E.SassScriptException$('$separator: Must be "space", "comma", or "auto".'));
- separator = C.ListSeparator_comma;
- }
- t1 = H.setRuntimeTypeInfo([], [F.Value]);
- for (t2 = list.get$asList(), t3 = t2.length, _i = 0; _i < t2.length; t2.length === t3 || (0, H.throwConcurrentModificationError)(t2), ++_i)
- t1.push(t2[_i]);
- t1.push(value);
- return list.changeListContents$2$separator(t1, separator);
- },
- $signature: 7
- };
- D.closure37.prototype = {
- call$1: function($arguments) {
- var results, t2, result, _box_0 = {},
- t1 = J.$index$asx($arguments, 0).get$asList(),
- lists = new H.MappedListIterable(t1, new D._closure4(), [H.getTypeArgumentByIndex(t1, 0), [P.List, F.Value]]).toList$0(0);
- if (lists.length === 0)
- return C.SassList_lmy;
- _box_0.i = 0;
- results = H.setRuntimeTypeInfo([], [D.SassList]);
- for (t1 = F.Value, t2 = [H.getTypeArgumentByIndex(lists, 0), t1]; C.JSArray_methods.every$1(lists, new D._closure5(_box_0));) {
- result = P.List_List$from(new H.MappedListIterable(lists, new D._closure6(_box_0), t2), false, t1);
- result.fixed$length = Array;
- result.immutable$list = Array;
- results.push(new D.SassList(result, C.ListSeparator_space, false));
- ++_box_0.i;
- }
- return D.SassList$(results, C.ListSeparator_comma, false);
- },
- $signature: 7
- };
- D._closure4.prototype = {
- call$1: function(list) {
- return list.get$asList();
- }
- };
- D._closure5.prototype = {
- call$1: function(list) {
- return this._box_0.i !== J.get$length$asx(list);
- }
- };
- D._closure6.prototype = {
- call$1: function(list) {
- return J.$index$asx(list, this._box_0.i);
- },
- $signature: 0
- };
- D.closure36.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments),
- index = C.JSArray_methods.indexOf$1(t1.$index($arguments, 0).get$asList(), t1.$index($arguments, 1));
- if (index === -1)
- t1 = C.C_SassNull;
- else
- t1 = new T.SassNumber(index + 1, C.List_empty, C.List_empty, null);
- return t1;
- },
- $signature: 0
- };
- D.closure34.prototype = {
- call$1: function($arguments) {
- return J.$index$asx($arguments, 0).get$separator() === C.ListSeparator_comma ? new D.SassString("comma", false) : new D.SassString("space", false);
- },
- $signature: 4
- };
- D.closure35.prototype = {
- call$1: function($arguments) {
- return J.$index$asx($arguments, 0).get$hasBrackets() ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- A.closure33.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments);
- t1 = t1.$index($arguments, 0).assertMap$1("map").contents.$index(0, t1.$index($arguments, 1));
- return t1 == null ? C.C_SassNull : t1;
- },
- $signature: 0
- };
- A.closure32.prototype = {
- call$1: function($arguments) {
- var t2, t3, t4,
- t1 = J.getInterceptor$asx($arguments),
- map1 = t1.$index($arguments, 0).assertMap$1("map1"),
- map2 = t1.$index($arguments, 1).assertMap$1("map2");
- t1 = F.Value;
- t2 = P.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
- for (t3 = map1.contents.get$entries(), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
- t4 = t3.get$current(t3);
- t2.$indexSet(0, t4.key, t4.value);
- }
- for (t3 = map2.contents.get$entries(), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
- t4 = t3.get$current(t3);
- t2.$indexSet(0, t4.key, t4.value);
- }
- return new A.SassMap(H.ConstantMap_ConstantMap$from(t2, t1, t1));
- },
- $signature: 9
- };
- A.closure30.prototype = {
- call$1: function($arguments) {
- return J.$index$asx($arguments, 0).assertMap$1("map");
- },
- $signature: 9
- };
- A.closure31.prototype = {
- call$1: function($arguments) {
- var t4, _i, mutableMap,
- t1 = J.getInterceptor$asx($arguments),
- map = t1.$index($arguments, 0).assertMap$1("map"),
- t2 = F.Value,
- t3 = H.setRuntimeTypeInfo([], [t2]);
- t3.push(t1.$index($arguments, 1));
- for (t1 = t1.$index($arguments, 2).get$asList(), t4 = t1.length, _i = 0; _i < t1.length; t1.length === t4 || (0, H.throwConcurrentModificationError)(t1), ++_i)
- t3.push(t1[_i]);
- mutableMap = P.LinkedHashMap_LinkedHashMap$of(map.contents, t2, t2);
- for (t1 = t3.length, _i = 0; _i < t3.length; t3.length === t1 || (0, H.throwConcurrentModificationError)(t3), ++_i)
- mutableMap.remove$1(0, t3[_i]);
- return new A.SassMap(H.ConstantMap_ConstantMap$from(mutableMap, t2, t2));
- },
- $signature: 9
- };
- A.closure29.prototype = {
- call$1: function($arguments) {
- return D.SassList$(J.$index$asx($arguments, 0).assertMap$1("map").contents.get$keys(), C.ListSeparator_comma, false);
- },
- $signature: 7
- };
- A.closure28.prototype = {
- call$1: function($arguments) {
- return D.SassList$(J.$index$asx($arguments, 0).assertMap$1("map").contents.get$values(), C.ListSeparator_comma, false);
- },
- $signature: 7
- };
- A.closure27.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments);
- return t1.$index($arguments, 0).assertMap$1("map").contents.containsKey$1(t1.$index($arguments, 1)) ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- K.closure25.prototype = {
- call$1: function(value) {
- return J.ceil$0$n(value);
- },
- $signature: 24
- };
- K.closure91.prototype = {
- call$1: function($arguments) {
- var t2, t3, arg2, arg2Name, unit1, unit2,
- _s11_ = "is unitless",
- t1 = J.getInterceptor$asx($arguments),
- min = t1.$index($arguments, 0).assertNumber$1("min"),
- number = t1.$index($arguments, 1).assertNumber$1("number"),
- max = t1.$index($arguments, 2).assertNumber$1("max");
- t1 = min.numeratorUnits.length === 0;
- t2 = !t1 || min.denominatorUnits.length !== 0;
- t3 = number.numeratorUnits.length === 0;
- if (t2 === (!t3 || number.denominatorUnits.length !== 0)) {
- t2 = !t3 || number.denominatorUnits.length !== 0;
- t2 = t2 === (max.numeratorUnits.length !== 0 || max.denominatorUnits.length !== 0);
- } else
- t2 = false;
- if (t2) {
- if (min.greaterThanOrEquals$1(max).value)
- return min;
- if (min.greaterThanOrEquals$1(number).value)
- return min;
- if (number.greaterThanOrEquals$1(max).value)
- return max;
- return number;
- }
- t2 = !t1 || min.denominatorUnits.length !== 0;
- arg2 = t2 !== (!t3 || number.denominatorUnits.length !== 0) ? number : max;
- t2 = !t1 || min.denominatorUnits.length !== 0;
- arg2Name = t2 !== (!t3 || number.denominatorUnits.length !== 0) ? "$number" : "$max";
- unit1 = !t1 || min.denominatorUnits.length !== 0 ? "has unit " + min.get$unitString() : _s11_;
- unit2 = arg2.numeratorUnits.length !== 0 || arg2.denominatorUnits.length !== 0 ? "has unit " + arg2.get$unitString() : _s11_;
- throw H.wrapException(E.SassScriptException$("$min " + unit1 + " but " + arg2Name + " " + unit2 + ". Arguments must all have units or all be unitless."));
- },
- $signature: 1
- };
- K.closure24.prototype = {
- call$1: function(value) {
- return J.floor$0$n(value);
- },
- $signature: 24
- };
- K.closure23.prototype = {
- call$1: function($arguments) {
- var t1, t2, max, _i, number;
- for (t1 = J.$index$asx($arguments, 0).get$asList(), t2 = t1.length, max = null, _i = 0; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- number = t1[_i].assertNumber$0();
- if (max == null || max.lessThan$1(number).value)
- max = number;
- }
- if (max != null)
- return max;
- throw H.wrapException(E.SassScriptException$("At least one argument must be passed."));
- },
- $signature: 1
- };
- K.closure22.prototype = {
- call$1: function($arguments) {
- var t1, t2, min, _i, number;
- for (t1 = J.$index$asx($arguments, 0).get$asList(), t2 = t1.length, min = null, _i = 0; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- number = t1[_i].assertNumber$0();
- if (min == null || min.greaterThan$1(number).value)
- min = number;
- }
- if (min != null)
- return min;
- throw H.wrapException(E.SassScriptException$("At least one argument must be passed."));
- },
- $signature: 1
- };
- K.closure26.prototype = {
- call$1: function(value) {
- return Math.abs(value);
- },
- $signature: 39
- };
- K.closure89.prototype = {
- call$1: function($arguments) {
- var numeratorUnits, denominatorUnits, subtotal, i, number, t2, t3, t4, t5, t6, t7, result, unit1, unit2,
- _s11_ = "is unitless",
- t1 = J.$index$asx($arguments, 0).get$asList(),
- numbers = new H.MappedListIterable(t1, new K._closure11(), [H.getTypeArgumentByIndex(t1, 0), T.SassNumber]).toList$0(0);
- if (numbers.length === 0)
- throw H.wrapException(E.SassScriptException$("At least one argument must be passed."));
- t1 = numbers[0];
- numeratorUnits = t1.numeratorUnits;
- denominatorUnits = t1.denominatorUnits;
- for (t1 = P.String, subtotal = 0, i = 0; i < numbers.length; ++i) {
- number = numbers[i];
- t2 = number.numeratorUnits;
- t3 = t2.length === 0;
- t4 = !t3 || number.denominatorUnits.length !== 0;
- t5 = numbers[0];
- t6 = t5.numeratorUnits;
- t7 = t6.length === 0;
- if (t4 === (!t7 || t5.denominatorUnits.length !== 0)) {
- t2 = number.valueInUnits$2(numeratorUnits, denominatorUnits);
- result = P.List_List$from(numeratorUnits, false, t1);
- result.fixed$length = Array;
- result.immutable$list = Array;
- result = P.List_List$from(denominatorUnits, false, t1);
- result.fixed$length = Array;
- result.immutable$list = Array;
- H.checkNum(t2);
- subtotal += Math.pow(t2, 2);
- } else {
- if (!t7 || t5.denominatorUnits.length !== 0)
- unit1 = "has unit " + (!t7 || t5.denominatorUnits.length !== 0 ? t5._unitString$2(t6, t5.denominatorUnits) : "");
- else
- unit1 = _s11_;
- if (!t3 || number.denominatorUnits.length !== 0)
- unit2 = "has unit " + (!t3 || number.denominatorUnits.length !== 0 ? number._unitString$2(t2, number.denominatorUnits) : "");
- else
- unit2 = _s11_;
- throw H.wrapException(E.SassScriptException$("Argument 1 " + unit1 + " but argument " + (i + 1) + " " + unit2 + ". Arguments must all have units or all be unitless."));
- }
- }
- return T.SassNumber$withUnits(Math.sqrt(subtotal), denominatorUnits, numeratorUnits);
- },
- $signature: 1
- };
- K._closure11.prototype = {
- call$1: function(argument) {
- return argument.assertNumber$0();
- }
- };
- K.closure88.prototype = {
- call$1: function($arguments) {
- var numberValue, base, baseValue, t2,
- _s18_ = " to have no units.",
- t1 = J.getInterceptor$asx($arguments),
- number = t1.$index($arguments, 0).assertNumber$1("number");
- if (number.numeratorUnits.length !== 0 || number.denominatorUnits.length !== 0)
- throw H.wrapException(E.SassScriptException$("$number: Expected " + number.toString$0(0) + _s18_));
- numberValue = K._fuzzyRoundIfZero(number.value);
- if (J.$eq$(t1.$index($arguments, 1), C.C_SassNull)) {
- t1 = Math.log(H.checkNum(numberValue));
- return new T.SassNumber(t1, C.List_empty, C.List_empty, null);
- }
- base = t1.$index($arguments, 1).assertNumber$1("base");
- if (base.numeratorUnits.length !== 0 || base.denominatorUnits.length !== 0)
- throw H.wrapException(E.SassScriptException$("$base: Expected " + base.toString$0(0) + _s18_));
- t1 = base.value;
- baseValue = Math.abs(t1 - 1) < $.$get$epsilon() ? T.fuzzyRound(t1) : K._fuzzyRoundIfZero(t1);
- t1 = Math.log(H.checkNum(numberValue));
- t2 = Math.log(H.checkNum(baseValue));
- return new T.SassNumber(t1 / t2, C.List_empty, C.List_empty, null);
- },
- $signature: 1
- };
- K.closure87.prototype = {
- call$1: function($arguments) {
- var baseValue, exponentValue, t2, _null = null,
- _s18_ = " to have no units.",
- t1 = J.getInterceptor$asx($arguments),
- base = t1.$index($arguments, 0).assertNumber$1("base"),
- exponent = t1.$index($arguments, 1).assertNumber$1("exponent");
- if (base.numeratorUnits.length !== 0 || base.denominatorUnits.length !== 0)
- throw H.wrapException(E.SassScriptException$("$base: Expected " + base.toString$0(0) + _s18_));
- else if (exponent.numeratorUnits.length !== 0 || exponent.denominatorUnits.length !== 0)
- throw H.wrapException(E.SassScriptException$("$exponent: Expected " + exponent.toString$0(0) + _s18_));
- baseValue = K._fuzzyRoundIfZero(base.value);
- exponentValue = K._fuzzyRoundIfZero(exponent.value);
- t1 = $.$get$epsilon();
- if (Math.abs(Math.abs(baseValue) - 1) < t1) {
- exponentValue.toString;
- t2 = exponentValue == 1 / 0 || exponentValue == -1 / 0;
- } else
- t2 = false;
- if (t2)
- return new T.SassNumber(0 / 0, C.List_empty, C.List_empty, _null);
- else if (Math.abs(baseValue - 0) < t1) {
- exponentValue.toString;
- if (isFinite(exponentValue))
- if (T.fuzzyIsInt(exponentValue))
- t1 = C.JSInt_methods.$mod(T.fuzzyIsInt(exponentValue) ? J.round$0$n(exponentValue) : _null, 2) === 1;
- else
- t1 = false;
- else
- t1 = false;
- if (t1)
- exponentValue = T.fuzzyRound(exponentValue);
- } else {
- if (isFinite(baseValue))
- if (baseValue < 0 && true) {
- exponentValue.toString;
- t1 = isFinite(exponentValue) && T.fuzzyIsInt(exponentValue);
- } else
- t1 = false;
- else
- t1 = false;
- if (t1)
- exponentValue = T.fuzzyRound(exponentValue);
- else {
- if (baseValue == 1 / 0 || baseValue == -1 / 0)
- if (baseValue < 0 && true) {
- exponentValue.toString;
- if (isFinite(exponentValue))
- if (T.fuzzyIsInt(exponentValue))
- t1 = C.JSInt_methods.$mod(T.fuzzyIsInt(exponentValue) ? J.round$0$n(exponentValue) : _null, 2) === 1;
- else
- t1 = false;
- else
- t1 = false;
- } else
- t1 = false;
- else
- t1 = false;
- if (t1)
- exponentValue = T.fuzzyRound(exponentValue);
- }
- }
- H.checkNum(exponentValue);
- t1 = Math.pow(baseValue, exponentValue);
- return new T.SassNumber(t1, C.List_empty, C.List_empty, _null);
- },
- $signature: 1
- };
- K.closure85.prototype = {
- call$1: function($arguments) {
- var t1,
- number = J.$index$asx($arguments, 0).assertNumber$1("number");
- if (number.numeratorUnits.length !== 0 || number.denominatorUnits.length !== 0)
- throw H.wrapException(E.SassScriptException$("$number: Expected " + number.toString$0(0) + " to have no units."));
- t1 = Math.sqrt(H.checkNum(K._fuzzyRoundIfZero(number.value)));
- return new T.SassNumber(t1, C.List_empty, C.List_empty, null);
- },
- $signature: 1
- };
- K.closure95.prototype = {
- call$1: function($arguments) {
- var numberValue,
- number = J.$index$asx($arguments, 0).assertNumber$1("number");
- if (number.numeratorUnits.length !== 0 || number.denominatorUnits.length !== 0)
- throw H.wrapException(E.SassScriptException$("$number: Expected " + number.toString$0(0) + " to have no units."));
- numberValue = number.value;
- if (Math.abs(Math.abs(numberValue) - 1) < $.$get$epsilon())
- numberValue = T.fuzzyRound(numberValue);
- return T.SassNumber$withUnits(Math.acos(numberValue) * 180 / 3.141592653589793, null, H.setRuntimeTypeInfo(["deg"], [P.String]));
- },
- $signature: 1
- };
- K.closure94.prototype = {
- call$1: function($arguments) {
- var t1,
- number = J.$index$asx($arguments, 0).assertNumber$1("number");
- if (number.numeratorUnits.length !== 0 || number.denominatorUnits.length !== 0)
- throw H.wrapException(E.SassScriptException$("$number: Expected " + number.toString$0(0) + " to have no units."));
- t1 = number.value;
- return T.SassNumber$withUnits(Math.asin(H.checkNum(Math.abs(Math.abs(t1) - 1) < $.$get$epsilon() ? T.fuzzyRound(t1) : K._fuzzyRoundIfZero(t1))) * 180 / 3.141592653589793, null, H.setRuntimeTypeInfo(["deg"], [P.String]));
- },
- $signature: 1
- };
- K.closure93.prototype = {
- call$1: function($arguments) {
- var number = J.$index$asx($arguments, 0).assertNumber$1("number");
- if (number.numeratorUnits.length !== 0 || number.denominatorUnits.length !== 0)
- throw H.wrapException(E.SassScriptException$("$number: Expected " + number.toString$0(0) + " to have no units."));
- return T.SassNumber$withUnits(Math.atan(H.checkNum(K._fuzzyRoundIfZero(number.value))) * 180 / 3.141592653589793, null, H.setRuntimeTypeInfo(["deg"], [P.String]));
- },
- $signature: 1
- };
- K.closure92.prototype = {
- call$1: function($arguments) {
- var t2, t3, t4, unit1, unit2, xValue,
- _s11_ = "is unitless",
- t1 = J.getInterceptor$asx($arguments),
- y = t1.$index($arguments, 0).assertNumber$1("y"),
- x = t1.$index($arguments, 1).assertNumber$1("x");
- t1 = y.numeratorUnits;
- t2 = t1.length === 0;
- t3 = !t2 || y.denominatorUnits.length !== 0;
- t4 = x.numeratorUnits.length === 0;
- if (t3 !== (!t4 || x.denominatorUnits.length !== 0)) {
- unit1 = !t2 || y.denominatorUnits.length !== 0 ? "has unit " + y.get$unitString() : _s11_;
- unit2 = !t4 || x.denominatorUnits.length !== 0 ? "has unit " + x.get$unitString() : _s11_;
- throw H.wrapException(E.SassScriptException$("$y " + unit1 + " but $x " + unit2 + ". Arguments must all have units or all be unitless."));
- }
- t2 = y.denominatorUnits;
- xValue = K._fuzzyRoundIfZero(T.SassNumber$withUnits(x.valueInUnits$2(t1, t2), t2, t1).value);
- return T.SassNumber$withUnits(Math.atan2(H.checkNum(K._fuzzyRoundIfZero(y.value)), H.checkNum(xValue)) * 180 / 3.141592653589793, null, H.setRuntimeTypeInfo(["deg"], [P.String]));
- },
- $signature: 1
- };
- K.closure90.prototype = {
- call$1: function($arguments) {
- var t1 = Math.cos(H.checkNum(K._coerceToRad(J.$index$asx($arguments, 0).assertNumber$1("number")).value));
- return new T.SassNumber(t1, C.List_empty, C.List_empty, null);
- },
- $signature: 1
- };
- K.closure86.prototype = {
- call$1: function($arguments) {
- var t1 = Math.sin(H.checkNum(K._fuzzyRoundIfZero(K._coerceToRad(J.$index$asx($arguments, 0).assertNumber$1("number")).value)));
- return new T.SassNumber(t1, C.List_empty, C.List_empty, null);
- },
- $signature: 1
- };
- K.closure84.prototype = {
- call$1: function($arguments) {
- var t1 = K._coerceToRad(J.$index$asx($arguments, 0).assertNumber$1("number")).value,
- t2 = C.JSNumber_methods.$mod(t1 - 1.5707963267948966, 6.283185307179586),
- t3 = $.$get$epsilon();
- if (Math.abs(t2 - 0) < t3)
- return new T.SassNumber(1 / 0, C.List_empty, C.List_empty, null);
- else if (Math.abs(C.JSNumber_methods.$mod(t1 + 1.5707963267948966, 6.283185307179586) - 0) < t3)
- return new T.SassNumber(-1 / 0, C.List_empty, C.List_empty, null);
- else {
- t1 = Math.tan(H.checkNum(K._fuzzyRoundIfZero(t1)));
- return new T.SassNumber(t1, C.List_empty, C.List_empty, null);
- }
- },
- $signature: 1
- };
- K.closure18.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments);
- return t1.$index($arguments, 0).assertNumber$1("number1").isComparableTo$1(t1.$index($arguments, 1).assertNumber$1("number2")) ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- K.closure17.prototype = {
- call$1: function($arguments) {
- var number = J.$index$asx($arguments, 0).assertNumber$1("number");
- return !(number.numeratorUnits.length !== 0 || number.denominatorUnits.length !== 0) ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- K.closure19.prototype = {
- call$1: function($arguments) {
- return new D.SassString(J.$index$asx($arguments, 0).assertNumber$1("number").get$unitString(), true);
- },
- $signature: 4
- };
- K.closure21.prototype = {
- call$1: function($arguments) {
- var t1, t2,
- number = J.$index$asx($arguments, 0).assertNumber$1("number");
- number.assertNoUnits$1("number");
- t1 = P.String;
- t2 = H.setRuntimeTypeInfo(["%"], [t1]);
- t1 = P.List_List$unmodifiable(t2, t1);
- return new T.SassNumber(number.value * 100, t1, C.List_empty, null);
- },
- $signature: 1
- };
- K.closure20.prototype = {
- call$1: function($arguments) {
- var limit,
- t1 = J.getInterceptor$asx($arguments);
- if (J.$eq$(t1.$index($arguments, 0), C.C_SassNull)) {
- t1 = $.$get$_random0().nextDouble$0();
- return new T.SassNumber(t1, C.List_empty, C.List_empty, null);
- }
- limit = t1.$index($arguments, 0).assertNumber$1("limit").assertInt$1("limit");
- if (limit < 1)
- throw H.wrapException(E.SassScriptException$("$limit: Must be greater than 0, was " + limit + "."));
- t1 = $.$get$_random0().nextInt$1(limit);
- return new T.SassNumber(t1 + 1, C.List_empty, C.List_empty, null);
- },
- $signature: 1
- };
- K._numberFunction_closure.prototype = {
- call$1: function($arguments) {
- var number = J.$index$asx($arguments, 0).assertNumber$1("number");
- return T.SassNumber$withUnits(this.transform.call$1(number.value), number.denominatorUnits, number.numeratorUnits);
- },
- $signature: 1
- };
- Q.closure101.prototype = {
- call$1: function($arguments) {
- return $._features.contains$1(0, J.$index$asx($arguments, 0).assertString$1("feature").text) ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- Q.closure102.prototype = {
- call$1: function($arguments) {
- return new D.SassString(J.toString$0$(J.get$first$ax($arguments)), false);
- },
- $signature: 4
- };
- Q.closure103.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$(J.$index$asx($arguments, 0));
- if (!!t1.$isSassArgumentList)
- return new D.SassString("arglist", false);
- if (!!t1.$isSassBoolean)
- return new D.SassString("bool", false);
- if (!!t1.$isSassColor)
- return new D.SassString("color", false);
- if (!!t1.$isSassList)
- return new D.SassString("list", false);
- if (!!t1.$isSassMap)
- return new D.SassString("map", false);
- if (!!t1.$isSassNull)
- return new D.SassString("null", false);
- if (!!t1.$isSassNumber)
- return new D.SassString("number", false);
- if (!!t1.$isSassFunction)
- return new D.SassString("function", false);
- return new D.SassString("string", false);
- },
- $signature: 4
- };
- Q.closure104.prototype = {
- call$1: function($arguments) {
- var t1,
- argumentList = J.$index$asx($arguments, 0);
- if (argumentList instanceof D.SassArgumentList) {
- argumentList._wereKeywordsAccessed = true;
- t1 = F.Value;
- return new A.SassMap(H.ConstantMap_ConstantMap$from(Y.mapMap(argumentList._keywords, new Q._closure13(), null, P.String, t1, t1, t1), t1, t1));
- } else
- throw H.wrapException("$args: " + H.S(argumentList) + " is not an argument list.");
- },
- $signature: 9
- };
- Q._closure13.prototype = {
- call$2: function(key, _) {
- return new D.SassString(key, false);
- }
- };
- T.closure13.prototype = {
- call$1: function($arguments) {
- var selectors = J.$index$asx($arguments, 0).get$asList();
- if (selectors.length === 0)
- throw H.wrapException(E.SassScriptException$("$selectors: At least one selector must be passed."));
- return new H.MappedListIterable(selectors, new T._closure1(), [H.getTypeArgumentByIndex(selectors, 0), D.SelectorList]).reduce$1(0, new T._closure2()).get$asSassList();
- },
- $signature: 7
- };
- T._closure1.prototype = {
- call$1: function(selector) {
- return selector.assertSelector$1$allowParent(true);
- }
- };
- T._closure2.prototype = {
- call$2: function($parent, child) {
- return child.resolveParentSelectors$1($parent);
- }
- };
- T.closure12.prototype = {
- call$1: function($arguments) {
- var selectors = J.$index$asx($arguments, 0).get$asList();
- if (selectors.length === 0)
- throw H.wrapException(E.SassScriptException$("$selectors: At least one selector must be passed."));
- return new H.MappedListIterable(selectors, new T._closure(), [H.getTypeArgumentByIndex(selectors, 0), D.SelectorList]).reduce$1(0, new T._closure0()).get$asSassList();
- },
- $signature: 7
- };
- T._closure.prototype = {
- call$1: function(selector) {
- return selector.assertSelector$0();
- }
- };
- T._closure0.prototype = {
- call$2: function($parent, child) {
- var t1 = child.components;
- return D.SelectorList$(new H.MappedListIterable(t1, new T.__closure($parent), [H.getTypeArgumentByIndex(t1, 0), S.ComplexSelector])).resolveParentSelectors$1($parent);
- }
- };
- T.__closure.prototype = {
- call$1: function(complex) {
- var newCompound, t2,
- t1 = complex.components,
- compound = C.JSArray_methods.get$first(t1);
- if (compound instanceof X.CompoundSelector) {
- newCompound = T._prependParent(compound);
- if (newCompound == null)
- throw H.wrapException(E.SassScriptException$("Can't append " + H.S(complex) + " to " + H.S(this.parent) + "."));
- t2 = H.setRuntimeTypeInfo([], [S.ComplexSelectorComponent]);
- t2.push(newCompound);
- for (t1 = H.SubListIterable$(t1, 1, null, H.getTypeArgumentByIndex(t1, 0)), t1 = new H.ListIterator(t1, t1.get$length(t1)); t1.moveNext$0();)
- t2.push(t1.__internal$_current);
- return S.ComplexSelector$(t2, false);
- } else
- throw H.wrapException(E.SassScriptException$("Can't append " + H.S(complex) + " to " + H.S(this.parent) + "."));
- }
- };
- T.closure11.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments),
- selector = t1.$index($arguments, 0).assertSelector$1$name("selector"),
- target = t1.$index($arguments, 1).assertSelector$1$name("extendee");
- return F.Extender__extendOrReplace(selector, t1.$index($arguments, 2).assertSelector$1$name("extender"), target, C.ExtendMode_allTargets).get$asSassList();
- },
- $signature: 7
- };
- T.closure10.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments),
- selector = t1.$index($arguments, 0).assertSelector$1$name("selector"),
- target = t1.$index($arguments, 1).assertSelector$1$name("original");
- return F.Extender__extendOrReplace(selector, t1.$index($arguments, 2).assertSelector$1$name("replacement"), target, C.ExtendMode_replace).get$asSassList();
- },
- $signature: 7
- };
- T.closure9.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments),
- result = t1.$index($arguments, 0).assertSelector$1$name("selector1").unify$1(t1.$index($arguments, 1).assertSelector$1$name("selector2"));
- return result == null ? C.C_SassNull : result.get$asSassList();
- },
- $signature: 0
- };
- T.closure16.prototype = {
- call$1: function($arguments) {
- var t1 = J.getInterceptor$asx($arguments),
- selector1 = t1.$index($arguments, 0).assertSelector$1$name("super"),
- selector2 = t1.$index($arguments, 1).assertSelector$1$name("sub");
- return Y.listIsSuperslector(selector1.components, selector2.components) ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- T.closure15.prototype = {
- call$1: function($arguments) {
- var t1 = J.$index$asx($arguments, 0).assertCompoundSelector$1$name("selector").components;
- return D.SassList$(new H.MappedListIterable(t1, new T._closure3(), [H.getTypeArgumentByIndex(t1, 0), F.Value]), C.ListSeparator_comma, false);
- },
- $signature: 7
- };
- T._closure3.prototype = {
- call$1: function(simple) {
- return new D.SassString(J.toString$0$(simple), false);
- }
- };
- T.closure14.prototype = {
- call$1: function($arguments) {
- return J.$index$asx($arguments, 0).assertSelector$1$name("selector").get$asSassList();
- },
- $signature: 7
- };
- D.closure8.prototype = {
- call$1: function($arguments) {
- var string = J.$index$asx($arguments, 0).assertString$1("string");
- if (!string.hasQuotes)
- return string;
- return new D.SassString(string.text, false);
- },
- $signature: 4
- };
- D.closure7.prototype = {
- call$1: function($arguments) {
- var string = J.$index$asx($arguments, 0).assertString$1("string");
- if (string.hasQuotes)
- return string;
- return new D.SassString(string.text, true);
- },
- $signature: 4
- };
- D.closure3.prototype = {
- call$1: function($arguments) {
- var t1 = J.$index$asx($arguments, 0).assertString$1("string").get$sassLength();
- return new T.SassNumber(t1, C.List_empty, C.List_empty, null);
- },
- $signature: 1
- };
- D.closure2.prototype = {
- call$1: function($arguments) {
- var indexInt, codeUnitIndex, _s5_ = "index",
- t1 = J.getInterceptor$asx($arguments),
- string = t1.$index($arguments, 0).assertString$1("string"),
- insert = t1.$index($arguments, 1).assertString$1("insert"),
- index = t1.$index($arguments, 2).assertNumber$1(_s5_);
- index.assertNoUnits$1(_s5_);
- indexInt = index.assertInt$1(_s5_);
- if (indexInt < 0)
- indexInt = string.get$sassLength() + indexInt + 2;
- t1 = string.text;
- codeUnitIndex = B.codepointIndexToCodeUnitIndex(t1, D._codepointForIndex(indexInt, string.get$sassLength(), false));
- return new D.SassString(J.replaceRange$3$asx(t1, codeUnitIndex, codeUnitIndex, insert.text), string.hasQuotes);
- },
- $signature: 4
- };
- D.closure1.prototype = {
- call$1: function($arguments) {
- var codepointIndex,
- t1 = J.getInterceptor$asx($arguments),
- t2 = t1.$index($arguments, 0).assertString$1("string").text,
- codeUnitIndex = J.indexOf$1$asx(t2, t1.$index($arguments, 1).assertString$1("substring").text);
- if (codeUnitIndex === -1)
- return C.C_SassNull;
- codepointIndex = B.codeUnitIndexToCodepointIndex(t2, codeUnitIndex);
- return new T.SassNumber(codepointIndex + 1, C.List_empty, C.List_empty, null);
- },
- $signature: 0
- };
- D.closure0.prototype = {
- call$1: function($arguments) {
- var lengthInCodepoints, endInt, startCodepoint, endCodepoint,
- t1 = J.getInterceptor$asx($arguments),
- string = t1.$index($arguments, 0).assertString$1("string"),
- start = t1.$index($arguments, 1).assertNumber$1("start-at"),
- end = t1.$index($arguments, 2).assertNumber$1("end-at");
- start.assertNoUnits$1("start");
- end.assertNoUnits$1("end");
- lengthInCodepoints = string.get$sassLength();
- endInt = end.assertInt$0();
- if (endInt === 0)
- return string.hasQuotes ? $.$get$_emptyQuoted() : $.$get$_emptyUnquoted();
- startCodepoint = D._codepointForIndex(start.assertInt$0(), lengthInCodepoints, false);
- endCodepoint = D._codepointForIndex(endInt, lengthInCodepoints, true);
- if (endCodepoint === lengthInCodepoints)
- --endCodepoint;
- if (endCodepoint < startCodepoint)
- return string.hasQuotes ? $.$get$_emptyQuoted() : $.$get$_emptyUnquoted();
- t1 = string.text;
- return new D.SassString(J.substring$2$s(t1, B.codepointIndexToCodeUnitIndex(t1, startCodepoint), B.codepointIndexToCodeUnitIndex(t1, endCodepoint + 1)), string.hasQuotes);
- },
- $signature: 4
- };
- D.closure6.prototype = {
- call$1: function($arguments) {
- var t1, t2, t3, i, t4, t5,
- string = J.$index$asx($arguments, 0).assertString$1("string");
- for (t1 = string.text, t2 = t1.length, t3 = J.getInterceptor$s(t1), i = 0, t4 = ""; i < t2; ++i) {
- t5 = t3._codeUnitAt$1(t1, i);
- t4 += H.Primitives_stringFromCharCode(t5 >= 97 && t5 <= 122 ? t5 & 4294967263 : t5);
- }
- return new D.SassString(t4.charCodeAt(0) == 0 ? t4 : t4, string.hasQuotes);
- },
- $signature: 4
- };
- D.closure5.prototype = {
- call$1: function($arguments) {
- var t1, t2, t3, i, t4, t5,
- string = J.$index$asx($arguments, 0).assertString$1("string");
- for (t1 = string.text, t2 = t1.length, t3 = J.getInterceptor$s(t1), i = 0, t4 = ""; i < t2; ++i) {
- t5 = t3._codeUnitAt$1(t1, i);
- t4 += H.Primitives_stringFromCharCode(t5 >= 65 && t5 <= 90 ? t5 | 32 : t5);
- }
- return new D.SassString(t4.charCodeAt(0) == 0 ? t4 : t4, string.hasQuotes);
- },
- $signature: 4
- };
- D.closure4.prototype = {
- call$1: function($arguments) {
- var t1 = $.$get$_previousUniqueId() + ($.$get$_random().nextInt$1(36) + 1);
- $._previousUniqueId = t1;
- if (t1 > Math.pow(36, 6))
- $._previousUniqueId = C.JSInt_methods.$mod($.$get$_previousUniqueId(), H.intTypeCast(Math.pow(36, 6)));
- return new D.SassString("u" + C.JSString_methods.padLeft$2(J.toRadixString$1$n($.$get$_previousUniqueId(), 36), 6, "0"), false);
- },
- $signature: 4
- };
- R.ImportCache.prototype = {
- canonicalize$4$baseImporter$baseUrl$forImport: function(url, baseImporter, baseUrl, forImport) {
- var resolvedUrl, canonicalUrl, t1;
- if (baseImporter != null) {
- resolvedUrl = baseUrl != null ? baseUrl.resolveUri$1(url) : url;
- canonicalUrl = this._canonicalize$3(baseImporter, resolvedUrl, forImport);
- if (canonicalUrl != null) {
- t1 = P.Uri;
- return new S.Tuple3(baseImporter, canonicalUrl, resolvedUrl, [M.Importer, t1, t1]);
- }
- }
- return this._canonicalizeCache.putIfAbsent$2(new S.Tuple2(url, forImport, [P.Uri, P.bool]), new R.ImportCache_canonicalize_closure(this, url, forImport));
- },
- canonicalize$3$baseImporter$baseUrl: function(url, baseImporter, baseUrl) {
- return this.canonicalize$4$baseImporter$baseUrl$forImport(url, baseImporter, baseUrl, false);
- },
- _canonicalize$3: function(importer, url, forImport) {
- var result = forImport ? B.inImportRule(new R.ImportCache__canonicalize_closure(importer, url)) : importer.canonicalize$1(url);
- if ((result == null ? null : result.get$scheme()) === "")
- this._import_cache$_logger.warn$2$deprecation("Importer " + H.S(importer) + " canonicalized " + H.S(url) + " to " + H.S(result) + ".\nRelative canonical URLs are deprecated and will eventually be disallowed.\n", true);
- return result;
- },
- import$4$baseImporter$baseUrl$forImport: function(url, baseImporter, baseUrl, forImport) {
- var t1,
- tuple = this.canonicalize$4$baseImporter$baseUrl$forImport(url, baseImporter, baseUrl, forImport);
- if (tuple == null)
- return;
- t1 = tuple.item1;
- return new S.Tuple2(t1, this.importCanonical$3(t1, tuple.item2, tuple.item3), [M.Importer, V.Stylesheet]);
- },
- importCanonical$3: function(importer, canonicalUrl, originalUrl) {
- return this._import_cache$_importCache.putIfAbsent$2(canonicalUrl, new R.ImportCache_importCanonical_closure(this, importer, canonicalUrl, originalUrl));
- },
- importCanonical$2: function(importer, canonicalUrl) {
- return this.importCanonical$3(importer, canonicalUrl, null);
- },
- humanize$1: function(canonicalUrl) {
- var t1 = this._canonicalizeCache.get$values(),
- t2 = H.getRuntimeTypeArgument(t1, "Iterable", 0),
- t3 = P.Uri,
- url = Y.minBy(new H.MappedIterable(new H.WhereIterable(t1, new R.ImportCache_humanize_closure(canonicalUrl), [t2]), new R.ImportCache_humanize_closure0(), [t2, t3]), new R.ImportCache_humanize_closure1(), t3, null);
- if (url == null)
- return canonicalUrl;
- t1 = $.$get$url();
- return url.resolve$1(X.ParsedPath_ParsedPath$parse(canonicalUrl.get$path(canonicalUrl), t1.style).get$basename());
- },
- clearImport$1: function(canonicalUrl) {
- this._resultsCache.remove$1(0, canonicalUrl);
- this._import_cache$_importCache.remove$1(0, canonicalUrl);
- }
- };
- R.ImportCache_canonicalize_closure.prototype = {
- call$0: function() {
- var t1, t2, t3, t4, t5, _i, importer, canonicalUrl;
- for (t1 = this.$this, t2 = t1._importers, t3 = t2.length, t4 = this.url, t5 = this.forImport, _i = 0; _i < t2.length; t2.length === t3 || (0, H.throwConcurrentModificationError)(t2), ++_i) {
- importer = t2[_i];
- canonicalUrl = t1._canonicalize$3(importer, t4, t5);
- if (canonicalUrl != null) {
- t1 = P.Uri;
- return new S.Tuple3(importer, canonicalUrl, t4, [M.Importer, t1, t1]);
- }
- }
- return;
- }
- };
- R.ImportCache__canonicalize_closure.prototype = {
- call$0: function() {
- return this.importer.canonicalize$1(this.url);
- }
- };
- R.ImportCache_importCanonical_closure.prototype = {
- call$0: function() {
- var t3, _this = this,
- t1 = _this.canonicalUrl,
- result = _this.importer.load$1(t1),
- t2 = _this.$this;
- t2._resultsCache.$indexSet(0, t1, result);
- t3 = _this.originalUrl;
- t1 = t3 == null ? t1 : t3.resolveUri$1(t1);
- return V.Stylesheet_Stylesheet$parse(result.contents, result.syntax, t2._import_cache$_logger, t1);
- }
- };
- R.ImportCache_humanize_closure.prototype = {
- call$1: function(tuple) {
- var t1 = tuple == null ? null : tuple.item2;
- return J.$eq$(t1, this.canonicalUrl);
- }
- };
- R.ImportCache_humanize_closure0.prototype = {
- call$1: function(tuple) {
- return tuple.item3;
- }
- };
- R.ImportCache_humanize_closure1.prototype = {
- call$1: function(url) {
- return J.get$length$asx(J.get$path$x(url));
- },
- $signature: 10
- };
- M.Importer.prototype = {
- modificationTime$1: function(url) {
- return new P.DateTime(Date.now(), false);
- }
- };
- B.AsyncImporter.prototype = {};
- F.FilesystemImporter.prototype = {
- canonicalize$1: function(url) {
- var t1, resolved;
- if (url.get$scheme() !== "file" && url.get$scheme() !== "")
- return;
- t1 = $.$get$context();
- resolved = B.resolveImportPath(D.join(this._loadPath, t1.style.pathFromUri$1(M._parseUri(url)), null));
- return resolved == null ? null : t1.toUri$1(t1.canonicalize$1(resolved));
- },
- load$1: function(url) {
- var t3,
- t1 = $.$get$context(),
- path = t1.style.pathFromUri$1(M._parseUri(url)),
- t2 = B.readFile(path);
- t1 = J.$eq$(J.get$platform$x(self.process), "win32") || J.$eq$(J.get$platform$x(self.process), "darwin") ? t1.toUri$1(F.realCasePath(path)) : url;
- t3 = M.Syntax_forPath(path);
- if ((t1 == null ? null : t1.get$scheme()) === "")
- H.throwExpression(P.ArgumentError$value(t1, "sourceMapUrl", "must be absolute"));
- return new E.ImporterResult(t2, t1, t3);
- },
- modificationTime$1: function(url) {
- return B.modificationTime($.$get$context().style.pathFromUri$1(M._parseUri(url)));
- },
- toString$0: function(_) {
- return this._loadPath;
- }
- };
- F.NodeImporter.prototype = {
- load$3: function(url, previous, forImport) {
- var result, previousString, t1, t2, t3, t4, _i, value, _this = this,
- parsed = P.Uri_parse(url);
- if (parsed.get$scheme() === "" || parsed.get$scheme() === "file") {
- result = _this._resolveRelativePath$3($.$get$context().style.pathFromUri$1(M._parseUri(parsed)), previous, forImport);
- if (result != null)
- return result;
- }
- previousString = previous.get$scheme() === "file" ? $.$get$context().style.pathFromUri$1(M._parseUri(previous)) : previous.toString$0(0);
- for (t1 = _this._implementation$_importers, t2 = t1.length, t3 = _this._implementation$_context, t4 = [P.Object], _i = 0; _i < t2; ++_i) {
- value = J.apply$2$x(t1[_i], t3, H.setRuntimeTypeInfo([url, previousString], t4));
- if (value != null)
- return _this._handleImportResult$4(url, previous, value, forImport);
- }
- return _this._resolveLoadPathFromUrl$3(parsed, previous, forImport);
- },
- loadAsync$3: function(url, previous, forImport) {
- return this.loadAsync$body$NodeImporter(url, previous, forImport);
- },
- loadAsync$body$NodeImporter: function(url, previous, forImport) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter([S.Tuple2, P.String, P.String]),
- $async$returnValue, $async$self = this, result, previousString, t1, t2, _i, value, parsed;
- var $async$loadAsync$3 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- parsed = P.Uri_parse(url);
- if (parsed.get$scheme() === "" || parsed.get$scheme() === "file") {
- result = $async$self._resolveRelativePath$3($.$get$context().style.pathFromUri$1(M._parseUri(parsed)), previous, forImport);
- if (result != null) {
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- }
- }
- previousString = previous.get$scheme() === "file" ? $.$get$context().style.pathFromUri$1(M._parseUri(previous)) : previous.toString$0(0);
- t1 = $async$self._implementation$_importers, t2 = t1.length, _i = 0;
- case 3:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 5;
- break;
- }
- $async$goto = 6;
- return P._asyncAwait($async$self._callImporterAsync$3(t1[_i], url, previousString), $async$loadAsync$3);
- case 6:
- // returning from await.
- value = $async$result;
- if (value != null) {
- $async$returnValue = $async$self._handleImportResult$4(url, previous, value, forImport);
- // goto return
- $async$goto = 1;
- break;
- }
- case 4:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 3;
- break;
- case 5:
- // after for
- $async$returnValue = $async$self._resolveLoadPathFromUrl$3(parsed, previous, forImport);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$loadAsync$3, $async$completer);
- },
- _resolveRelativePath$3: function(path, previous, forImport) {
- var result,
- t1 = $.$get$context(),
- t2 = t1.style;
- if (t2.rootLength$1(path) > 0)
- return this._tryPath$2(path, forImport);
- if (previous.get$scheme() === "file") {
- result = this._tryPath$2(D.join(t1.dirname$1(t2.pathFromUri$1(M._parseUri(previous))), path, null), forImport);
- if (result != null)
- return result;
- }
- return;
- },
- _resolveLoadPathFromUrl$3: function(url, previous, forImport) {
- return url.get$scheme() === "" || url.get$scheme() === "file" ? this._resolveLoadPath$3($.$get$context().style.pathFromUri$1(M._parseUri(url)), previous, forImport) : null;
- },
- _resolveLoadPath$3: function(path, previous, forImport) {
- var t1, t2, _i, includePath, t3, result, _null = null,
- cwdResult = this._tryPath$2(D.absolute(path), forImport);
- if (cwdResult != null)
- return cwdResult;
- for (t1 = this._includePaths, t2 = t1.length, _i = 0; _i < t2; ++_i) {
- includePath = t1[_i];
- t3 = $.$get$context();
- result = this._tryPath$2(t3.absolute$7(t3.join$8(0, includePath, path, _null, _null, _null, _null, _null, _null), _null, _null, _null, _null, _null, _null), forImport);
- if (result != null)
- return result;
- }
- return;
- },
- _tryPath$2: function(path, forImport) {
- var t1,
- resolved = forImport ? B.inImportRule(new F.NodeImporter__tryPath_closure(path)) : B.resolveImportPath(path);
- if (resolved == null)
- t1 = null;
- else {
- t1 = P.String;
- t1 = new S.Tuple2(B.readFile(resolved), J.toString$0$($.$get$context().toUri$1(resolved)), [t1, t1]);
- }
- return t1;
- },
- _handleImportResult$4: function(url, previous, value, forImport) {
- var t1, resolved, t2;
- if (value instanceof self.Error)
- throw H.wrapException(value);
- t1 = J.getInterceptor$(value);
- if (!t1.$isNodeImporterResult)
- return;
- if (t1.get$file(value) != null) {
- resolved = this._resolveRelativePath$3(t1.get$file(value), previous, forImport);
- if (resolved == null)
- resolved = this._resolveLoadPath$3(t1.get$file(value), previous, forImport);
- if (resolved != null)
- return resolved;
- throw H.wrapException("Can't find stylesheet to import.");
- } else {
- t1 = t1.get$contents(value);
- if (t1 == null)
- t1 = "";
- t2 = P.String;
- return new S.Tuple2(t1, url, [t2, t2]);
- }
- },
- _callImporterAsync$3: function(importer, url, previousString) {
- return this._callImporterAsync$body$NodeImporter(importer, url, previousString);
- },
- _callImporterAsync$body$NodeImporter: function(importer, url, previousString) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Object),
- $async$returnValue, $async$self = this, t1, t2, result;
- var $async$_callImporterAsync$3 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = P.Object;
- t2 = new P._Future($.Zone__current, [t1]);
- result = J.apply$2$x(importer, $async$self._implementation$_context, H.setRuntimeTypeInfo([url, previousString, P.allowInterop(new P._AsyncCompleter(t2, [t1]).get$complete())], [t1]));
- $async$goto = H.boolTypeCast($.$get$_isUndefined().call$1(result)) ? 3 : 4;
- break;
- case 3:
- // then
- $async$goto = 5;
- return P._asyncAwait(t2, $async$_callImporterAsync$3);
- case 5:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 4:
- // join
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_callImporterAsync$3, $async$completer);
- }
- };
- F.NodeImporter__tryPath_closure.prototype = {
- call$0: function() {
- return B.resolveImportPath(this.path);
- }
- };
- E.ImporterResult.prototype = {
- get$sourceMapUrl: function() {
- var t1 = this._sourceMapUrl;
- return t1 == null ? P.Uri_Uri$dataFromString(this.contents, C.C_Utf8Codec, null) : t1;
- }
- };
- B.resolveImportPath_closure.prototype = {
- call$0: function() {
- return B._exactlyOne(B._tryPath($.$get$context().withoutExtension$1(this.path) + ".import" + this.extension));
- }
- };
- B.resolveImportPath_closure0.prototype = {
- call$0: function() {
- return B._exactlyOne(B._tryPathWithExtensions(H.S(this.path) + ".import"));
- }
- };
- B._tryPathAsDirectory_closure.prototype = {
- call$0: function() {
- return B._exactlyOne(B._tryPathWithExtensions(D.join(this.path, "index.import", null)));
- }
- };
- B._exactlyOne_closure.prototype = {
- call$1: function(path) {
- var t1 = $.$get$context();
- return C.JSString_methods.$add(" ", t1.prettyUri$1(t1.toUri$1(path)));
- }
- };
- Z.InterpolationBuffer.prototype = {
- add$1: function(_, expression) {
- this._flushText$0();
- this._interpolation_buffer$_contents.push(expression);
- },
- addInterpolation$1: function(interpolation) {
- var first, t1, t2, _this = this,
- toAdd = interpolation.contents;
- if (toAdd.length === 0)
- return;
- first = C.JSArray_methods.get$first(toAdd);
- if (typeof first === "string") {
- _this._interpolation_buffer$_text._contents += first;
- toAdd = H.SubListIterable$(toAdd, 1, null, H.getTypeArgumentByIndex(toAdd, 0));
- }
- _this._flushText$0();
- t1 = _this._interpolation_buffer$_contents;
- C.JSArray_methods.addAll$1(t1, toAdd);
- t2 = C.JSArray_methods.get$last(t1);
- if (typeof t2 === "string")
- _this._interpolation_buffer$_text._contents += H.S(t1.pop());
- },
- _flushText$0: function() {
- var t1 = this._interpolation_buffer$_text,
- t2 = t1._contents;
- if (t2.length === 0)
- return;
- this._interpolation_buffer$_contents.push(t2.charCodeAt(0) == 0 ? t2 : t2);
- t1._contents = "";
- },
- interpolation$1: function(span) {
- var t2, t3, _i,
- t1 = H.setRuntimeTypeInfo([], [P.Object]);
- for (t2 = this._interpolation_buffer$_contents, t3 = t2.length, _i = 0; _i < t2.length; t2.length === t3 || (0, H.throwConcurrentModificationError)(t2), ++_i)
- t1.push(t2[_i]);
- t2 = this._interpolation_buffer$_text._contents;
- if (t2.length !== 0)
- t1.push(t2.charCodeAt(0) == 0 ? t2 : t2);
- return X.Interpolation$(t1, span);
- },
- toString$0: function(_) {
- var t1, t2, _i, t3, element;
- for (t1 = this._interpolation_buffer$_contents, t2 = t1.length, _i = 0, t3 = ""; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- element = t1[_i];
- t3 = typeof element === "string" ? t3 + element : t3 + "#{" + H.S(element) + H.Primitives_stringFromCharCode(125);
- }
- t1 = t3 + this._interpolation_buffer$_text.toString$0(0);
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- }
- };
- F.realCasePath_closure.prototype = {
- call$1: function(realPath) {
- return B.equalsIgnoreCase(X.ParsedPath_ParsedPath$parse(realPath, $.$get$context().style).get$basename(), this.basename);
- }
- };
- B._FS.prototype = {};
- B._Stat.prototype = {};
- B._Date.prototype = {};
- B._Stderr.prototype = {};
- B._Stdin.prototype = {};
- B._SystemError.prototype = {};
- B._Process.prototype = {};
- B.FileSystemException.prototype = {
- toString$0: function(_) {
- var t1 = $.$get$context();
- return H.S(t1.prettyUri$1(t1.toUri$1(this.path))) + ": " + this.message;
- },
- get$message: function(receiver) {
- return this.message;
- },
- get$path: function(receiver) {
- return this.path;
- }
- };
- B.Stderr.prototype = {
- writeln$1: function(object) {
- J.write$1$x(this._stderr, H.S(object == null ? "" : object) + "\n");
- },
- writeln$0: function() {
- return this.writeln$1(null);
- }
- };
- B._readFile_closure.prototype = {
- call$0: function() {
- return J.readFileSync$2$x(self.fs, this.path, this.encoding);
- }
- };
- B.writeFile_closure.prototype = {
- call$0: function() {
- return J.writeFileSync$2$x(self.fs, this.path, this.contents);
- }
- };
- B.deleteFile_closure.prototype = {
- call$0: function() {
- return J.unlinkSync$1$x(self.fs, this.path);
- }
- };
- B.readStdin_closure.prototype = {
- call$1: function(result) {
- this._box_0.contents = result;
- this.completer.complete$1(result);
- }
- };
- B.readStdin_closure0.prototype = {
- call$1: function(chunk) {
- this.sink.add$1(0, H.subtypeCast(chunk, "$isList", [P.int], "$asList"));
- },
- call$0: function() {
- return this.call$1(null);
- },
- "call*": "call$1",
- $requiredArgCount: 0,
- $defaultValues: function() {
- return [null];
- },
- $signature: 18
- };
- B.readStdin_closure1.prototype = {
- call$1: function(_) {
- this.sink.close$0(0);
- },
- call$0: function() {
- return this.call$1(null);
- },
- "call*": "call$1",
- $requiredArgCount: 0,
- $defaultValues: function() {
- return [null];
- },
- $signature: 18
- };
- B.readStdin_closure2.prototype = {
- call$1: function(e) {
- var t1 = $.$get$stderr();
- t1.writeln$1("Failed to read from stdin");
- t1.writeln$1(e);
- this.completer.completeError$1(e);
- },
- call$0: function() {
- return this.call$1(null);
- },
- "call*": "call$1",
- $requiredArgCount: 0,
- $defaultValues: function() {
- return [null];
- },
- $signature: 18
- };
- B.fileExists_closure.prototype = {
- call$0: function() {
- var error, systemError, exception,
- t1 = this.path;
- if (!J.existsSync$1$x(self.fs, t1))
- return false;
- try {
- t1 = J.isFile$0$x(J.statSync$1$x(self.fs, t1));
- return t1;
- } catch (exception) {
- error = H.unwrapException(exception);
- systemError = H.interceptedTypeCast(error, "$is_SystemError");
- if (J.$eq$(J.get$code$x(systemError), "ENOENT"))
- return false;
- throw exception;
- }
- }
- };
- B.dirExists_closure.prototype = {
- call$0: function() {
- var error, systemError, exception,
- t1 = this.path;
- if (!J.existsSync$1$x(self.fs, t1))
- return false;
- try {
- t1 = J.isDirectory$0$x(J.statSync$1$x(self.fs, t1));
- return t1;
- } catch (exception) {
- error = H.unwrapException(exception);
- systemError = H.interceptedTypeCast(error, "$is_SystemError");
- if (J.$eq$(J.get$code$x(systemError), "ENOENT"))
- return false;
- throw exception;
- }
- }
- };
- B.ensureDir_closure.prototype = {
- call$0: function() {
- var error, systemError, exception, t1;
- try {
- J.mkdirSync$1$x(self.fs, this.path);
- } catch (exception) {
- error = H.unwrapException(exception);
- systemError = H.interceptedTypeCast(error, "$is_SystemError");
- if (J.$eq$(J.get$code$x(systemError), "EEXIST"))
- return;
- if (!J.$eq$(J.get$code$x(systemError), "ENOENT"))
- throw exception;
- t1 = this.path;
- B.ensureDir($.$get$context().dirname$1(t1));
- J.mkdirSync$1$x(self.fs, t1);
- }
- }
- };
- B.listDir_closure.prototype = {
- call$0: function() {
- var t1 = this.path;
- if (!this.recursive)
- return J.map$1$1$ax(J.readdirSync$1$x(self.fs, t1), new B.listDir__closure(t1), P.String).where$1(0, new B.listDir__closure0());
- else
- return new B.listDir_closure_list().call$1(t1);
- }
- };
- B.listDir__closure.prototype = {
- call$1: function(child) {
- return D.join(this.path, H.stringTypeCast(child), null);
- },
- $signature: 13
- };
- B.listDir__closure0.prototype = {
- call$1: function(child) {
- return !B.dirExists(child);
- }
- };
- B.listDir_closure_list.prototype = {
- call$1: function($parent) {
- return J.expand$1$1$ax(J.readdirSync$1$x(self.fs, $parent), new B.listDir__list_closure($parent, this), P.String);
- }
- };
- B.listDir__list_closure.prototype = {
- call$1: function(child) {
- var path = D.join(this.parent, H.stringTypeCast(child), null);
- return B.dirExists(path) ? this.list.call$1(path) : H.setRuntimeTypeInfo([path], [P.String]);
- },
- $signature: 41
- };
- B.modificationTime_closure.prototype = {
- call$0: function() {
- var t2,
- t1 = J.getTime$0$x(J.get$mtime$x(J.statSync$1$x(self.fs, this.path)));
- if (Math.abs(t1) <= 864e13)
- t2 = false;
- else
- t2 = true;
- if (t2)
- H.throwExpression(P.ArgumentError$("DateTime is outside valid range: " + H.S(t1)));
- return new P.DateTime(t1, false);
- }
- };
- B.watchDir_closure.prototype = {
- call$2: function(path, _) {
- var t1 = this._box_0.controller;
- return t1 == null ? null : t1.add$1(0, new E.WatchEvent(C.ChangeType_add, path));
- },
- call$1: function(path) {
- return this.call$2(path, null);
- },
- "call*": "call$2",
- $defaultValues: function() {
- return [null];
- }
- };
- B.watchDir_closure0.prototype = {
- call$2: function(path, _) {
- var t1 = this._box_0.controller;
- return t1 == null ? null : t1.add$1(0, new E.WatchEvent(C.ChangeType_modify, path));
- },
- call$1: function(path) {
- return this.call$2(path, null);
- },
- "call*": "call$2",
- $defaultValues: function() {
- return [null];
- }
- };
- B.watchDir_closure1.prototype = {
- call$1: function(path) {
- var t1 = this._box_0.controller;
- return t1 == null ? null : t1.add$1(0, new E.WatchEvent(C.ChangeType_remove, path));
- }
- };
- B.watchDir_closure2.prototype = {
- call$1: function(error) {
- var t1 = this._box_0.controller;
- return t1 == null ? null : t1.addError$1(error);
- },
- $signature: 8
- };
- B.watchDir_closure3.prototype = {
- call$0: function() {
- var controller = P.StreamController_StreamController(new B.watchDir__closure(this.watcher), null, null, null, false, E.WatchEvent);
- this._box_0.controller = controller;
- this.completer.complete$1(new P._ControllerStream(controller, [H.getTypeArgumentByIndex(controller, 0)]));
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- B.watchDir__closure.prototype = {
- call$0: function() {
- J.close$0$x(this.watcher);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- F._QuietLogger.prototype = {
- warn$4$deprecation$span$trace: function(message, deprecation, span, trace) {
- },
- warn$2$deprecation: function(message, deprecation) {
- return this.warn$4$deprecation$span$trace(message, deprecation, null, null);
- },
- warn$2$span: function(message, span) {
- return this.warn$4$deprecation$span$trace(message, false, span, null);
- },
- warn$3$deprecation$span: function(message, deprecation, span) {
- return this.warn$4$deprecation$span$trace(message, deprecation, span, null);
- },
- warn$2$trace: function(message, trace) {
- return this.warn$4$deprecation$span$trace(message, false, null, trace);
- },
- debug$2: function(message, span) {
- }
- };
- S.StderrLogger.prototype = {
- warn$4$deprecation$span$trace: function(message, deprecation, span, trace) {
- var t2, t3,
- t1 = this.color;
- if (t1) {
- t2 = $.$get$stderr();
- t3 = t2._stderr;
- J.write$1$x(t3, "\x1b[33m\x1b[1m");
- if (deprecation)
- J.write$1$x(t3, "Deprecation ");
- J.write$1$x(t3, "Warning\x1b[0m");
- } else {
- if (deprecation)
- J.write$1$x($.$get$stderr()._stderr, "DEPRECATION ");
- t2 = $.$get$stderr();
- J.write$1$x(t2._stderr, "WARNING");
- }
- if (span == null)
- t2.writeln$1(": " + H.S(message));
- else if (trace != null)
- t2.writeln$1(": " + H.S(message) + "\n\n" + span.highlight$1$color(t1));
- else
- t2.writeln$1(" on " + span.message$2$color(0, C.JSString_methods.$add("\n", message), t1));
- if (trace != null)
- t2.writeln$1(B.indent(C.JSString_methods.trimRight$0(trace.toString$0(0)), 4));
- t2.writeln$0();
- },
- warn$2$deprecation: function(message, deprecation) {
- return this.warn$4$deprecation$span$trace(message, deprecation, null, null);
- },
- warn$2$span: function(message, span) {
- return this.warn$4$deprecation$span$trace(message, false, span, null);
- },
- warn$3$deprecation$span: function(message, deprecation, span) {
- return this.warn$4$deprecation$span$trace(message, deprecation, span, null);
- },
- warn$2$trace: function(message, trace) {
- return this.warn$4$deprecation$span$trace(message, false, null, trace);
- },
- debug$2: function(message, span) {
- var url, t3, t4,
- t1 = span.file,
- t2 = span._start;
- if (Y.FileLocation$_(t1, t2).file.url == null)
- url = "-";
- else {
- t3 = Y.FileLocation$_(t1, t2);
- url = $.$get$context().prettyUri$1(t3.file.url);
- }
- t3 = $.$get$stderr();
- t4 = H.S(url) + ":";
- t2 = Y.FileLocation$_(t1, t2);
- t2 = t4 + (t2.file.getLine$1(t2.offset) + 1) + " ";
- t4 = t3._stderr;
- J.write$1$x(t4, t2);
- J.write$1$x(t4, this.color ? "\x1b[1mDebug\x1b[0m" : "DEBUG");
- t3.writeln$1(": " + H.S(message));
- }
- };
- T.TrackingLogger.prototype = {
- warn$4$deprecation$span$trace: function(message, deprecation, span, trace) {
- this._emittedWarning = true;
- this._tracking$_logger.warn$4$deprecation$span$trace(message, deprecation, span, trace);
- },
- warn$2$deprecation: function(message, deprecation) {
- return this.warn$4$deprecation$span$trace(message, deprecation, null, null);
- },
- warn$2$span: function(message, span) {
- return this.warn$4$deprecation$span$trace(message, false, span, null);
- },
- warn$3$deprecation$span: function(message, deprecation, span) {
- return this.warn$4$deprecation$span$trace(message, deprecation, span, null);
- },
- warn$2$trace: function(message, trace) {
- return this.warn$4$deprecation$span$trace(message, false, null, trace);
- },
- debug$2: function(message, span) {
- this._emittedDebug = true;
- this._tracking$_logger.debug$2(message, span);
- }
- };
- G.Module.prototype = {};
- Q.BuiltInModule.prototype = {
- get$upstream: function() {
- return C.List_empty4;
- },
- get$variableNodes: function() {
- return C.Map_empty1;
- },
- get$extender: function() {
- return C.C_EmptyExtender;
- },
- get$css: function(_) {
- return new V.CssStylesheet(C.List_empty1, Y.SourceFile$decoded(C.List_empty2, this.url).span$2(0, 0));
- },
- get$transitivelyContainsCss: function() {
- return false;
- },
- get$transitivelyContainsExtensions: function() {
- return false;
- },
- setVariable$3: function($name, value, nodeWithSpan) {
- if (!this.variables.containsKey$1($name))
- throw H.wrapException(E.SassScriptException$("Undefined variable."));
- throw H.wrapException(E.SassScriptException$("Cannot modify built-in variable."));
- },
- cloneCss$0: function() {
- return this;
- },
- $isModule: 1,
- get$url: function() {
- return this.url;
- },
- get$functions: function(receiver) {
- return this.functions;
- },
- get$mixins: function() {
- return this.mixins;
- },
- get$variables: function() {
- return this.variables;
- }
- };
- R.ForwardedModuleView.prototype = {
- get$url: function() {
- return this._forwarded_view$_inner.get$url();
- },
- get$upstream: function() {
- return this._forwarded_view$_inner.get$upstream();
- },
- get$extender: function() {
- return this._forwarded_view$_inner.get$extender();
- },
- get$css: function(_) {
- var t1 = this._forwarded_view$_inner;
- return t1.get$css(t1);
- },
- get$transitivelyContainsCss: function() {
- return this._forwarded_view$_inner.get$transitivelyContainsCss();
- },
- get$transitivelyContainsExtensions: function() {
- return this._forwarded_view$_inner.get$transitivelyContainsExtensions();
- },
- setVariable$3: function($name, value, nodeWithSpan) {
- var _s19_ = "Undefined variable.",
- t1 = this._rule,
- t2 = t1.shownVariables;
- if (t2 != null && !t2._base.contains$1(0, $name))
- throw H.wrapException(E.SassScriptException$(_s19_));
- else {
- t2 = t1.hiddenVariables;
- if (t2 != null && t2._base.contains$1(0, $name))
- throw H.wrapException(E.SassScriptException$(_s19_));
- }
- t1 = t1.prefix;
- if (t1 != null) {
- if (!C.JSString_methods.startsWith$1($name, t1))
- throw H.wrapException(E.SassScriptException$(_s19_));
- $name = C.JSString_methods.substring$1($name, t1.length);
- }
- return this._forwarded_view$_inner.setVariable$3($name, value, nodeWithSpan);
- },
- cloneCss$0: function() {
- return R.ForwardedModuleView$(this._forwarded_view$_inner.cloneCss$0(), this._rule, H.getTypeArgumentByIndex(this, 0));
- },
- $isModule: 1,
- get$variables: function() {
- return this.variables;
- },
- get$variableNodes: function() {
- return this.variableNodes;
- },
- get$functions: function(receiver) {
- return this.functions;
- },
- get$mixins: function() {
- return this.mixins;
- }
- };
- B.ShadowedModuleView.prototype = {
- get$url: function() {
- return this._shadowed_view$_inner.get$url();
- },
- get$upstream: function() {
- return this._shadowed_view$_inner.get$upstream();
- },
- get$extender: function() {
- return this._shadowed_view$_inner.get$extender();
- },
- get$css: function(_) {
- var t1 = this._shadowed_view$_inner;
- return t1.get$css(t1);
- },
- get$transitivelyContainsCss: function() {
- return this._shadowed_view$_inner.get$transitivelyContainsCss();
- },
- get$transitivelyContainsExtensions: function() {
- return this._shadowed_view$_inner.get$transitivelyContainsExtensions();
- },
- setVariable$3: function($name, value, nodeWithSpan) {
- if (!this.variables.containsKey$1($name))
- throw H.wrapException(E.SassScriptException$("Undefined variable."));
- else
- return this._shadowed_view$_inner.setVariable$3($name, value, nodeWithSpan);
- },
- cloneCss$0: function() {
- var _this = this;
- return new B.ShadowedModuleView(_this._shadowed_view$_inner.cloneCss$0(), _this.variables, _this.variableNodes, _this.functions, _this.mixins, _this.$ti);
- },
- $isModule: 1,
- get$variables: function() {
- return this.variables;
- },
- get$variableNodes: function() {
- return this.variableNodes;
- },
- get$functions: function(receiver) {
- return this.functions;
- },
- get$mixins: function() {
- return this.mixins;
- }
- };
- B.main_closure.prototype = {
- call$1: function(args) {
- return F.main(P.List_List$from(H.subtypeCast(args, "$isList", [P.Object], "$asList"), true, P.String));
- },
- $signature: 42
- };
- B._render_closure.prototype = {
- call$0: function() {
- var error, exception;
- try {
- this.callback.call$2(null, B._renderSync(this.options));
- } catch (exception) {
- error = H.unwrapException(exception);
- this.callback.call$2(H.interceptedTypeCast(error, "$isJSError"), null);
- }
- return;
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- B._render_closure0.prototype = {
- call$1: function(result) {
- this.callback.call$2(null, result);
- }
- };
- B._render_closure1.prototype = {
- call$2: function(error, stackTrace) {
- var _null = null,
- t1 = J.getInterceptor$(error),
- t2 = this.callback;
- if (!!t1.$isSassException)
- t2.call$2(B._wrapException(error), _null);
- else
- t2.call$2(B._newRenderError(t1.toString$0(error), _null, _null, _null, 3), _null);
- },
- "call*": "call$2",
- $requiredArgCount: 2,
- $signature: 43
- };
- B._parseFunctions_closure.prototype = {
- call$2: function(signature, callback) {
- var error, t1, exception, _this = this, tuple = null;
- try {
- t1 = S.SpanScanner$(signature, null);
- tuple = new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.VariableDeclaration), t1, C.StderrLogger_false).parseSignature$0();
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (t1 instanceof E.SassFormatException) {
- error = t1;
- throw H.wrapException(E.SassFormatException$('Invalid signature "' + H.S(signature) + '": ' + H.S(error._span_exception$_message), error.get$span()));
- } else
- throw exception;
- }
- t1 = _this.options;
- if (J.get$fiber$x(t1) != null)
- _this.result.push(Q.BuiltInCallable$parsed(tuple.item1, tuple.item2, new B._parseFunctions__closure(t1, callback)));
- else {
- t1 = _this.result;
- if (!_this.asynch)
- t1.push(Q.BuiltInCallable$parsed(tuple.item1, tuple.item2, new B._parseFunctions__closure0(callback)));
- else
- t1.push(new S.AsyncBuiltInCallable(tuple.item1, tuple.item2, new B._parseFunctions__closure1(callback)));
- }
- },
- $signature: 44
- };
- B._parseFunctions__closure.prototype = {
- call$1: function($arguments) {
- var result,
- t1 = this.options,
- t2 = J.getInterceptor$x(t1),
- fiber = J.get$current$x(t2.get$fiber(t1)),
- t3 = P.Object,
- t4 = H.setRuntimeTypeInfo([], [t3]);
- for (t3 = J.map$1$1$ax($arguments, F.value0__wrapValue$closure(), t3), t3 = t3.get$iterator(t3); t3.moveNext$0();)
- t4.push(t3.get$current(t3));
- t4.push(P.allowInterop(new B._parseFunctions___closure0(fiber)));
- result = P.Function_apply(H.interceptedTypeCast(this.callback, "$isFunction"), t4);
- return F.unwrapValue(H.boolTypeCast($.$get$_isUndefined().call$1(result)) ? J.yield$0$x(t2.get$fiber(t1)) : result);
- },
- $signature: 0
- };
- B._parseFunctions___closure0.prototype = {
- call$1: function(result) {
- P.scheduleMicrotask(new B._parseFunctions____closure(this.fiber, result));
- },
- call$0: function() {
- return this.call$1(null);
- },
- "call*": "call$1",
- $requiredArgCount: 0,
- $defaultValues: function() {
- return [null];
- },
- $signature: 18
- };
- B._parseFunctions____closure.prototype = {
- call$0: function() {
- return J.run$1$x(this.fiber, this.result);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- B._parseFunctions__closure0.prototype = {
- call$1: function($arguments) {
- return F.unwrapValue(P.Function_apply(H.interceptedTypeCast(this.callback, "$isFunction"), J.map$1$1$ax($arguments, F.value0__wrapValue$closure(), P.Object).toList$0(0)));
- },
- $signature: 0
- };
- B._parseFunctions__closure1.prototype = {
- call$1: function($arguments) {
- return this.$call$body$_parseFunctions__closure($arguments);
- },
- $call$body$_parseFunctions__closure: function($arguments) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, result, t1, completer, t2, $async$temp1;
- var $async$call$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = P.Object;
- completer = new P._AsyncCompleter(new P._Future($.Zone__current, [t1]), [t1]);
- t2 = H.setRuntimeTypeInfo([], [t1]);
- for (t1 = J.map$1$1$ax($arguments, F.value0__wrapValue$closure(), t1), t1 = t1.get$iterator(t1); t1.moveNext$0();)
- t2.push(t1.get$current(t1));
- t2.push(P.allowInterop(new B._parseFunctions___closure(completer)));
- result = P.Function_apply(H.interceptedTypeCast($async$self.callback, "$isFunction"), t2);
- $async$temp1 = F;
- $async$goto = H.boolTypeCast($.$get$_isUndefined().call$1(result)) ? 3 : 5;
- break;
- case 3:
- // then
- $async$goto = 6;
- return P._asyncAwait(completer.future, $async$call$1);
- case 6:
- // returning from await.
- // goto join
- $async$goto = 4;
- break;
- case 5:
- // else
- $async$result = result;
- case 4:
- // join
- $async$returnValue = $async$temp1.unwrapValue($async$result);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$1, $async$completer);
- }
- };
- B._parseFunctions___closure.prototype = {
- call$1: function(result) {
- return this.completer.complete$1(result);
- },
- call$0: function() {
- return this.call$1(null);
- },
- "call*": "call$1",
- $requiredArgCount: 0,
- $defaultValues: function() {
- return [null];
- },
- $signature: 30
- };
- B._parseImporter_closure.prototype = {
- call$1: function(importer) {
- return H.interceptedTypeCast(P.allowInteropCaptureThis(new B._parseImporter__closure(this.options, importer)), "$isJSFunction");
- }
- };
- B._parseImporter__closure.prototype = {
- call$4: function(thisArg, url, previous, _) {
- var t1 = this.options,
- t2 = J.getInterceptor$x(t1),
- result = J.apply$2$x(this.importer, thisArg, H.setRuntimeTypeInfo([url, previous, P.allowInterop(new B._parseImporter___closure(J.get$current$x(t2.get$fiber(t1))))], [P.Object]));
- if (H.boolTypeCast($.$get$_isUndefined().call$1(result)))
- return J.yield$0$x(t2.get$fiber(t1));
- return result;
- },
- call$3: function(thisArg, url, previous) {
- return this.call$4(thisArg, url, previous, null);
- },
- "call*": "call$4",
- $requiredArgCount: 3,
- $defaultValues: function() {
- return [null];
- }
- };
- B._parseImporter___closure.prototype = {
- call$1: function(result) {
- P.scheduleMicrotask(new B._parseImporter____closure(this.fiber, result));
- },
- $signature: 45
- };
- B._parseImporter____closure.prototype = {
- call$0: function() {
- return J.run$1$x(this.fiber, this.result);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- Y.Chokidar.prototype = {};
- Y.ChokidarOptions.prototype = {};
- Y.ChokidarWatcher.prototype = {};
- V.JSError.prototype = {};
- D.Exports.prototype = {};
- E.FiberClass.prototype = {};
- E.Fiber.prototype = {};
- F.JSFunction.prototype = {};
- F.NodeImporterResult.prototype = {};
- Z.RenderContext.prototype = {};
- L.RenderContextOptions.prototype = {};
- R.RenderOptions.prototype = {};
- U.RenderResult.prototype = {};
- U.RenderResultStats.prototype = {};
- G.Types.prototype = {};
- B.forwardToString_closure.prototype = {
- call$1: function(thisArg) {
- return J.toString$0$(thisArg);
- },
- $signature: 13
- };
- B.createClass_closure.prototype = {
- call$2: function($name, body) {
- this.$prototype[$name] = P.allowInteropCaptureThis(body);
- }
- };
- B._PropertyDescriptor.prototype = {};
- Z.closure141.prototype = {
- call$0: function() {
- var $constructor = P.allowInterop(new Z._closure19());
- B.injectSuperclass(C.SassBoolean_true, $constructor);
- B.forwardToString($constructor);
- $constructor.prototype.getValue = P.allowInteropCaptureThis(new Z._closure20());
- $constructor.TRUE = C.SassBoolean_true;
- $constructor.FALSE = C.SassBoolean_false;
- return $constructor;
- }
- };
- Z._closure19.prototype = {
- call$1: function(_) {
- throw H.wrapException("new sass.types.Boolean() isn't allowed.\nUse sass.types.Boolean.TRUE or sass.types.Boolean.FALSE instead.");
- },
- call$0: function() {
- return this.call$1(null);
- },
- "call*": "call$1",
- $requiredArgCount: 0,
- $defaultValues: function() {
- return [null];
- },
- $signature: 22
- };
- Z._closure20.prototype = {
- call$1: function(thisArg) {
- return thisArg === C.SassBoolean_true;
- },
- $signature: 3
- };
- K._NodeSassColor.prototype = {};
- K.closure131.prototype = {
- call$6: function(thisArg, redOrArgb, green, blue, alpha, dartValue) {
- var red, t1, t2, t3, t4;
- if (dartValue != null) {
- J.set$dartValue$x(thisArg, dartValue);
- return;
- }
- if (green == null) {
- H.intTypeCast(redOrArgb);
- alpha = C.JSInt_methods._shrOtherPositive$1(redOrArgb, 24) / 255;
- red = C.JSInt_methods.$mod(C.JSInt_methods._shrOtherPositive$1(redOrArgb, 16), 256);
- green = C.JSInt_methods.$mod(C.JSInt_methods._shrOtherPositive$1(redOrArgb, 8), 256);
- blue = C.JSInt_methods.$mod(redOrArgb, 256);
- } else
- red = redOrArgb;
- t1 = C.JSNumber_methods.round$0(J.clamp$2$n(red, 0, 255));
- t2 = C.JSNumber_methods.round$0(C.JSNumber_methods.clamp$2(green, 0, 255));
- t3 = C.JSNumber_methods.round$0(J.clamp$2$n(blue, 0, 255));
- t4 = alpha == null ? null : C.JSNumber_methods.clamp$2(alpha, 0, 1);
- J.set$dartValue$x(thisArg, K.SassColor$rgb(t1, t2, t3, t4 == null ? 1 : t4, null));
- },
- call$2: function(thisArg, redOrArgb) {
- return this.call$6(thisArg, redOrArgb, null, null, null, null);
- },
- call$3: function(thisArg, redOrArgb, green) {
- return this.call$6(thisArg, redOrArgb, green, null, null, null);
- },
- call$4: function(thisArg, redOrArgb, green, blue) {
- return this.call$6(thisArg, redOrArgb, green, blue, null, null);
- },
- call$5: function(thisArg, redOrArgb, green, blue, alpha) {
- return this.call$6(thisArg, redOrArgb, green, blue, alpha, null);
- },
- "call*": "call$6",
- $requiredArgCount: 2,
- $defaultValues: function() {
- return [null, null, null, null];
- }
- };
- K.closure132.prototype = {
- call$1: function(thisArg) {
- return J.get$dartValue$x(thisArg).get$red();
- }
- };
- K.closure133.prototype = {
- call$1: function(thisArg) {
- return J.get$dartValue$x(thisArg).get$green();
- }
- };
- K.closure134.prototype = {
- call$1: function(thisArg) {
- return J.get$dartValue$x(thisArg).get$blue();
- }
- };
- K.closure135.prototype = {
- call$1: function(thisArg) {
- return J.get$dartValue$x(thisArg).alpha;
- }
- };
- K.closure136.prototype = {
- call$2: function(thisArg, value) {
- var t1 = J.getInterceptor$x(thisArg);
- t1.set$dartValue(thisArg, t1.get$dartValue(thisArg).changeRgb$1$red(C.JSNumber_methods.round$0(J.clamp$2$n(value, 0, 255))));
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- K.closure137.prototype = {
- call$2: function(thisArg, value) {
- var t1 = J.getInterceptor$x(thisArg);
- t1.set$dartValue(thisArg, t1.get$dartValue(thisArg).changeRgb$1$green(C.JSNumber_methods.round$0(J.clamp$2$n(value, 0, 255))));
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- K.closure138.prototype = {
- call$2: function(thisArg, value) {
- var t1 = J.getInterceptor$x(thisArg);
- t1.set$dartValue(thisArg, t1.get$dartValue(thisArg).changeRgb$1$blue(C.JSNumber_methods.round$0(J.clamp$2$n(value, 0, 255))));
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- K.closure139.prototype = {
- call$2: function(thisArg, value) {
- var t1 = J.getInterceptor$x(thisArg);
- t1.set$dartValue(thisArg, t1.get$dartValue(thisArg).changeRgb$1$alpha(J.clamp$2$n(value, 0, 1)));
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- K.closure140.prototype = {
- call$1: function(thisArg) {
- return J.toString$0$(J.get$dartValue$x(thisArg));
- }
- };
- D._NodeSassList.prototype = {};
- D.closure124.prototype = {
- call$4: function(thisArg, $length, commaSeparator, dartValue) {
- var t1;
- if (dartValue == null) {
- t1 = P.Iterable_Iterable$generate($length, new D._closure18(), F.Value);
- t1 = D.SassList$(t1, commaSeparator !== false ? C.ListSeparator_comma : C.ListSeparator_space, false);
- } else
- t1 = dartValue;
- J.set$dartValue$x(thisArg, t1);
- },
- call$2: function(thisArg, $length) {
- return this.call$4(thisArg, $length, null, null);
- },
- call$3: function(thisArg, $length, commaSeparator) {
- return this.call$4(thisArg, $length, commaSeparator, null);
- },
- "call*": "call$4",
- $requiredArgCount: 2,
- $defaultValues: function() {
- return [null, null];
- }
- };
- D._closure18.prototype = {
- call$1: function(_) {
- return C.C_SassNull;
- },
- $signature: 26
- };
- D.closure125.prototype = {
- call$2: function(thisArg, index) {
- return F.wrapValue(J.get$dartValue$x(thisArg)._list$_contents[index]);
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- D.closure126.prototype = {
- call$3: function(thisArg, index, value) {
- var t1 = J.getInterceptor$x(thisArg),
- t2 = t1.get$dartValue(thisArg)._list$_contents,
- mutable = H.setRuntimeTypeInfo(t2.slice(0), [H.getTypeArgumentByIndex(t2, 0)]);
- mutable[index] = F.unwrapValue(value);
- t1.set$dartValue(thisArg, t1.get$dartValue(thisArg).changeListContents$1(mutable));
- },
- "call*": "call$3",
- $requiredArgCount: 3
- };
- D.closure127.prototype = {
- call$1: function(thisArg) {
- return J.get$dartValue$x(thisArg).separator === C.ListSeparator_comma;
- }
- };
- D.closure128.prototype = {
- call$2: function(thisArg, isComma) {
- var t1 = J.getInterceptor$x(thisArg),
- t2 = t1.get$dartValue(thisArg)._list$_contents,
- t3 = isComma ? C.ListSeparator_comma : C.ListSeparator_space;
- t1.set$dartValue(thisArg, D.SassList$(t2, t3, t1.get$dartValue(thisArg).hasBrackets));
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- D.closure129.prototype = {
- call$1: function(thisArg) {
- return J.get$dartValue$x(thisArg)._list$_contents.length;
- }
- };
- D.closure130.prototype = {
- call$1: function(thisArg) {
- return J.toString$0$(J.get$dartValue$x(thisArg));
- }
- };
- A._NodeSassMap.prototype = {};
- A.closure117.prototype = {
- call$3: function(thisArg, $length, dartValue) {
- var t1, t2, t3, map;
- if (dartValue == null) {
- t1 = F.Value;
- t2 = P.Iterable_Iterable$generate($length, new A._closure16(), t1);
- t3 = P.Iterable_Iterable$generate($length, new A._closure17(), t1);
- map = P.LinkedHashMap_LinkedHashMap(null, null, null, t1, t1);
- P.MapBase__fillMapWithIterables(map, t2, t3);
- t1 = new A.SassMap(H.ConstantMap_ConstantMap$from(map, t1, t1));
- } else
- t1 = dartValue;
- J.set$dartValue$x(thisArg, t1);
- },
- call$2: function(thisArg, $length) {
- return this.call$3(thisArg, $length, null);
- },
- "call*": "call$3",
- $requiredArgCount: 2,
- $defaultValues: function() {
- return [null];
- }
- };
- A._closure16.prototype = {
- call$1: function(i) {
- return new T.SassNumber(i, C.List_empty, C.List_empty, null);
- },
- $signature: 47
- };
- A._closure17.prototype = {
- call$1: function(_) {
- return C.C_SassNull;
- },
- $signature: 26
- };
- A.closure118.prototype = {
- call$2: function(thisArg, index) {
- return F.wrapValue(J.elementAt$1$ax(J.get$dartValue$x(thisArg).contents.get$keys(), index));
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- A.closure119.prototype = {
- call$2: function(thisArg, index) {
- return F.wrapValue(J.get$dartValue$x(thisArg).contents.get$values().elementAt$1(0, index));
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- A.closure120.prototype = {
- call$1: function(thisArg) {
- var t1 = J.get$dartValue$x(thisArg).contents;
- return t1.get$length(t1);
- }
- };
- A.closure121.prototype = {
- call$3: function(thisArg, index, key) {
- var newKey, t2, newMap, t3, i, t4,
- t1 = J.getInterceptor$x(thisArg),
- oldMap = t1.get$dartValue(thisArg).contents;
- P.RangeError_checkValidIndex(index, oldMap, "index");
- newKey = F.unwrapValue(key);
- t2 = F.Value;
- newMap = P.LinkedHashMap_LinkedHashMap$_empty(t2, t2);
- for (t3 = J.get$iterator$ax(t1.get$dartValue(thisArg).contents.get$keys()), i = 0; t3.moveNext$0();) {
- t4 = t3.get$current(t3);
- if (i === index)
- newMap.$indexSet(0, newKey, oldMap.$index(0, t4));
- else {
- if (newKey.$eq(0, t4))
- throw H.wrapException(P.ArgumentError$value(key, "key", "is already in the map"));
- newMap.$indexSet(0, t4, oldMap.$index(0, t4));
- }
- ++i;
- }
- t1.set$dartValue(thisArg, new A.SassMap(H.ConstantMap_ConstantMap$from(newMap, t2, t2)));
- },
- "call*": "call$3",
- $requiredArgCount: 3
- };
- A.closure122.prototype = {
- call$3: function(thisArg, index, value) {
- var t4, t5,
- t1 = J.getInterceptor$x(thisArg),
- key = J.elementAt$1$ax(t1.get$dartValue(thisArg).contents.get$keys(), index),
- t2 = F.Value,
- t3 = P.LinkedHashMap_LinkedHashMap$_empty(t2, t2);
- for (t4 = t1.get$dartValue(thisArg).contents.get$entries(), t4 = t4.get$iterator(t4); t4.moveNext$0();) {
- t5 = t4.get$current(t4);
- t3.$indexSet(0, t5.key, t5.value);
- }
- t3.$indexSet(0, key, F.unwrapValue(value));
- t1.set$dartValue(thisArg, new A.SassMap(H.ConstantMap_ConstantMap$from(t3, t2, t2)));
- },
- "call*": "call$3",
- $requiredArgCount: 3
- };
- A.closure123.prototype = {
- call$1: function(thisArg) {
- return J.toString$0$(J.get$dartValue$x(thisArg));
- }
- };
- O.closure116.prototype = {
- call$0: function() {
- var $constructor = P.allowInterop(new O._closure14());
- B.injectSuperclass(C.C_SassNull, $constructor);
- B.forwardToString($constructor);
- $constructor.NULL = C.C_SassNull;
- C.C_SassNull.toString = P.allowInterop(new O._closure15());
- return $constructor;
- }
- };
- O._closure14.prototype = {
- call$1: function(_) {
- throw H.wrapException("new sass.types.Null() isn't allowed. Use sass.types.Null.NULL instead.");
- },
- call$0: function() {
- return this.call$1(null);
- },
- "call*": "call$1",
- $requiredArgCount: 0,
- $defaultValues: function() {
- return [null];
- },
- $signature: 22
- };
- O._closure15.prototype = {
- call$0: function() {
- return "null";
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- T._NodeSassNumber.prototype = {};
- T.closure110.prototype = {
- call$4: function(thisArg, value, unit, dartValue) {
- J.set$dartValue$x(thisArg, dartValue == null ? T._parseNumber(value, unit) : dartValue);
- },
- call$2: function(thisArg, value) {
- return this.call$4(thisArg, value, null, null);
- },
- call$3: function(thisArg, value, unit) {
- return this.call$4(thisArg, value, unit, null);
- },
- "call*": "call$4",
- $requiredArgCount: 2,
- $defaultValues: function() {
- return [null, null];
- }
- };
- T.closure111.prototype = {
- call$1: function(thisArg) {
- return J.get$dartValue$x(thisArg).value;
- }
- };
- T.closure112.prototype = {
- call$2: function(thisArg, value) {
- var t1 = J.getInterceptor$x(thisArg),
- t2 = t1.get$dartValue(thisArg).numeratorUnits;
- t1.set$dartValue(thisArg, T.SassNumber$withUnits(value, t1.get$dartValue(thisArg).denominatorUnits, t2));
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- T.closure113.prototype = {
- call$1: function(thisArg) {
- var t1 = J.getInterceptor$x(thisArg),
- t2 = C.JSArray_methods.join$1(t1.get$dartValue(thisArg).numeratorUnits, "*");
- return t2 + (t1.get$dartValue(thisArg).denominatorUnits.length === 0 ? "" : "/") + C.JSArray_methods.join$1(t1.get$dartValue(thisArg).denominatorUnits, "*");
- }
- };
- T.closure114.prototype = {
- call$2: function(thisArg, unit) {
- var t1 = J.getInterceptor$x(thisArg);
- t1.set$dartValue(thisArg, T._parseNumber(t1.get$dartValue(thisArg).value, unit));
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- T.closure115.prototype = {
- call$1: function(thisArg) {
- return J.toString$0$(J.get$dartValue$x(thisArg));
- }
- };
- T._parseNumber_closure.prototype = {
- call$1: function(unit) {
- return unit.length === 0;
- }
- };
- T._parseNumber_closure0.prototype = {
- call$1: function(unit) {
- return unit.length === 0;
- }
- };
- D._NodeSassString.prototype = {};
- D.closure106.prototype = {
- call$3: function(thisArg, value, dartValue) {
- J.set$dartValue$x(thisArg, dartValue == null ? new D.SassString(value, false) : dartValue);
- },
- call$2: function(thisArg, value) {
- return this.call$3(thisArg, value, null);
- },
- "call*": "call$3",
- $requiredArgCount: 2,
- $defaultValues: function() {
- return [null];
- }
- };
- D.closure107.prototype = {
- call$1: function(thisArg) {
- return J.get$dartValue$x(thisArg).text;
- }
- };
- D.closure108.prototype = {
- call$2: function(thisArg, value) {
- J.set$dartValue$x(thisArg, new D.SassString(value, false));
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- D.closure109.prototype = {
- call$1: function(thisArg) {
- return J.toString$0$(J.get$dartValue$x(thisArg));
- }
- };
- V.AtRootQueryParser.prototype = {
- parse$0: function() {
- return this.wrapSpanFormatException$1(new V.AtRootQueryParser_parse_closure(this));
- }
- };
- V.AtRootQueryParser_parse_closure.prototype = {
- call$0: function() {
- var include, atRules,
- t1 = this.$this,
- t2 = t1.scanner;
- t2.expectChar$1(40);
- t1.whitespace$0();
- include = t1.scanIdentifier$1("with");
- if (!include)
- t1.expectIdentifier$2$name("without", '"with" or "without"');
- t1.whitespace$0();
- t2.expectChar$1(58);
- t1.whitespace$0();
- atRules = P.LinkedHashSet_LinkedHashSet$_empty(P.String);
- do {
- atRules.add$1(0, t1.identifier$0().toLowerCase());
- t1.whitespace$0();
- } while (t1.lookingAtIdentifier$0());
- t2.expectChar$1(41);
- t2.expectDone$0();
- return new V.AtRootQuery(include, atRules, atRules.contains$1(0, "all"), atRules.contains$1(0, "rule"));
- }
- };
- Q.closure105.prototype = {
- call$1: function($function) {
- return $function.name;
- }
- };
- Q.CssParser.prototype = {
- get$plainCss: function() {
- return true;
- },
- silentComment$0: function() {
- var t1 = this.scanner,
- t2 = t1._string_scanner$_position;
- this.super$Parser$silentComment();
- this.error$2("Silent comments aren't allowed in plain CSS.", t1.spanFrom$1(new S._SpanScannerState(t1, t2)));
- },
- atRule$2$root: function(child, root) {
- var $name, urlStart, next, url, urlSpan, queries, t2, t3, t4, t5, t6, _this = this,
- t1 = _this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- t1.expectChar$1(64);
- $name = _this.interpolatedIdentifier$0();
- _this.whitespace$0();
- switch ($name.get$asPlain()) {
- case "at-root":
- case "content":
- case "debug":
- case "each":
- case "error":
- case "extend":
- case "for":
- case "function":
- case "if":
- case "include":
- case "mixin":
- case "return":
- case "warn":
- case "while":
- _this.almostAnyValue$0();
- _this.error$2("This at-rule isn't allowed in plain CSS.", t1.spanFrom$1(start));
- break;
- case "charset":
- _this.string$0();
- if (!root)
- _this.error$2("This at-rule is not allowed here.", t1.spanFrom$1(start));
- return;
- case "import":
- urlStart = new S._SpanScannerState(t1, t1._string_scanner$_position);
- next = t1.peekChar$0();
- url = next === 117 || next === 85 ? _this.dynamicUrl$0() : new D.StringExpression(_this.interpolatedString$0().asInterpolation$1$static(true), false);
- urlSpan = t1.spanFrom$1(urlStart);
- _this.whitespace$0();
- queries = _this.tryImportQueries$0();
- _this.expectStatementSeparator$1("@import rule");
- t2 = X.Interpolation$(H.setRuntimeTypeInfo([url], [P.Object]), urlSpan);
- t3 = t1.spanFrom$1(urlStart);
- t4 = queries == null;
- t5 = t4 ? null : queries.item1;
- t4 = t4 ? null : queries.item2;
- t6 = F.Import;
- t3 = H.setRuntimeTypeInfo([new Q.StaticImport(t2, t5, t4, t3)], [t6]);
- t1 = t1.spanFrom$1(start);
- return new B.ImportRule(P.List_List$unmodifiable(t3, t6), t1);
- case "media":
- return _this.mediaRule$1(start);
- case "-moz-document":
- return _this.mozDocumentRule$2(start, $name);
- case "supports":
- return _this.supportsRule$1(start);
- default:
- return _this.unknownAtRule$2(start, $name);
- }
- },
- identifierLike$0: function() {
- var t2, $arguments, _this = this,
- t1 = _this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position),
- identifier = _this.interpolatedIdentifier$0(),
- plain = identifier.get$asPlain(),
- specialFunction = _this.trySpecialFunction$2(plain.toLowerCase(), start);
- if (specialFunction != null)
- return specialFunction;
- t2 = t1._string_scanner$_position;
- if (!t1.scanChar$1(40))
- return new D.StringExpression(identifier, false);
- $arguments = H.setRuntimeTypeInfo([], [T.Expression]);
- if (!t1.scanChar$1(41)) {
- do {
- _this.whitespace$0();
- $arguments.push(_this.expression$1$singleEquals(true));
- _this.whitespace$0();
- } while (t1.scanChar$1(44));
- t1.expectChar$1(41);
- }
- if ($.$get$_disallowedFunctionNames().contains$1(0, plain))
- _this.error$2("This function isn't allowed in plain CSS.", t1.spanFrom$1(start));
- return new F.FunctionExpression(null, X.Interpolation$(H.setRuntimeTypeInfo([new D.StringExpression(identifier, false)], [P.Object]), identifier.span), X.ArgumentInvocation$($arguments, C.Map_empty3, t1.spanFrom$1(new S._SpanScannerState(t1, t2)), null, null), t1.spanFrom$1(start));
- }
- };
- E.KeyframeSelectorParser.prototype = {
- parse$0: function() {
- return this.wrapSpanFormatException$1(new E.KeyframeSelectorParser_parse_closure(this));
- },
- _percentage$0: function() {
- var t3, next,
- t1 = this.scanner,
- t2 = t1.scanChar$1(43) ? H.Primitives_stringFromCharCode(43) : "",
- second = t1.peekChar$0();
- if (!T.isDigit(second) && second !== 46)
- t1.error$1("Expected number.");
- while (true) {
- t3 = t1.peekChar$0();
- if (!(t3 != null && t3 >= 48 && t3 <= 57))
- break;
- t2 += H.Primitives_stringFromCharCode(t1.readChar$0());
- }
- if (t1.peekChar$0() === 46) {
- t2 += H.Primitives_stringFromCharCode(t1.readChar$0());
- while (true) {
- t3 = t1.peekChar$0();
- if (!(t3 != null && t3 >= 48 && t3 <= 57))
- break;
- t2 += H.Primitives_stringFromCharCode(t1.readChar$0());
- }
- }
- if (this.scanIdentifier$1("e")) {
- t2 += t1.readChar$0();
- next = t1.peekChar$0();
- if (next === 43 || next === 45)
- t2 += t1.readChar$0();
- if (!T.isDigit(t1.peekChar$0()))
- t1.error$1("Expected digit.");
- while (true) {
- t3 = t1.peekChar$0();
- if (!(t3 != null && t3 >= 48 && t3 <= 57))
- break;
- t2 += H.Primitives_stringFromCharCode(t1.readChar$0());
- }
- }
- t1.expectChar$1(37);
- t2 += H.Primitives_stringFromCharCode(37);
- return t2.charCodeAt(0) == 0 ? t2 : t2;
- }
- };
- E.KeyframeSelectorParser_parse_closure.prototype = {
- call$0: function() {
- var selectors = H.setRuntimeTypeInfo([], [P.String]),
- t1 = this.$this,
- t2 = t1.scanner;
- do {
- t1.whitespace$0();
- if (t1.lookingAtIdentifier$0())
- if (t1.scanIdentifier$1("from"))
- selectors.push("from");
- else {
- t1.expectIdentifier$2$name("to", '"to" or "from"');
- selectors.push("to");
- }
- else
- selectors.push(t1._percentage$0());
- t1.whitespace$0();
- } while (t2.scanChar$1(44));
- t2.expectDone$0();
- return selectors;
- }
- };
- F.MediaQueryParser.prototype = {
- parse$0: function() {
- return this.wrapSpanFormatException$1(new F.MediaQueryParser_parse_closure(this));
- },
- _mediaQuery$0: function() {
- var identifier1, identifier2, type, modifier, t2, features, _this = this, _null = null,
- t1 = _this.scanner;
- if (t1.peekChar$0() !== 40) {
- identifier1 = _this.identifier$0();
- _this.whitespace$0();
- if (!_this.lookingAtIdentifier$0())
- return F.CssMediaQuery$(identifier1, _null, _null);
- identifier2 = _this.identifier$0();
- _this.whitespace$0();
- if (B.equalsIgnoreCase(identifier2, "and")) {
- type = identifier1;
- modifier = _null;
- } else {
- if (_this.scanIdentifier$1("and"))
- _this.whitespace$0();
- else
- return F.CssMediaQuery$(identifier2, _null, identifier1);
- type = identifier2;
- modifier = identifier1;
- }
- } else {
- type = _null;
- modifier = type;
- }
- t2 = P.String;
- features = H.setRuntimeTypeInfo([], [t2]);
- do {
- _this.whitespace$0();
- t1.expectChar$1(40);
- features.push("(" + _this.declarationValue$0() + ")");
- t1.expectChar$1(41);
- _this.whitespace$0();
- } while (_this.scanIdentifier$1("and"));
- if (type == null)
- return new F.CssMediaQuery(_null, _null, P.List_List$unmodifiable(features, t2));
- else
- return F.CssMediaQuery$(type, features, modifier);
- }
- };
- F.MediaQueryParser_parse_closure.prototype = {
- call$0: function() {
- var queries = H.setRuntimeTypeInfo([], [F.CssMediaQuery]),
- t1 = this.$this,
- t2 = t1.scanner;
- do {
- t1.whitespace$0();
- queries.push(t1._mediaQuery$0());
- } while (t2.scanChar$1(44));
- t2.expectDone$0();
- return queries;
- }
- };
- G.Parser.prototype = {
- _parseIdentifier$0: function() {
- return this.wrapSpanFormatException$1(new G.Parser__parseIdentifier_closure(this));
- },
- _isVariableDeclarationLike$0: function() {
- var _this = this,
- t1 = _this.scanner;
- if (!t1.scanChar$1(36))
- return false;
- if (!_this.lookingAtIdentifier$0())
- return false;
- _this.identifier$0();
- _this.whitespace$0();
- return t1.scanChar$1(58);
- },
- whitespace$0: function() {
- do
- this.whitespaceWithoutComments$0();
- while (this.scanComment$0());
- },
- whitespaceWithoutComments$0: function() {
- var t3,
- t1 = this.scanner,
- t2 = t1.string.length;
- while (true) {
- if (t1._string_scanner$_position !== t2) {
- t3 = t1.peekChar$0();
- t3 = t3 === 32 || t3 === 9 || t3 === 10 || t3 === 13 || t3 === 12;
- } else
- t3 = false;
- if (!t3)
- break;
- t1.readChar$0();
- }
- },
- spaces$0: function() {
- var t3,
- t1 = this.scanner,
- t2 = t1.string.length;
- while (true) {
- if (t1._string_scanner$_position !== t2) {
- t3 = t1.peekChar$0();
- t3 = t3 === 32 || t3 === 9;
- } else
- t3 = false;
- if (!t3)
- break;
- t1.readChar$0();
- }
- },
- scanComment$0: function() {
- var next,
- t1 = this.scanner;
- if (t1.peekChar$0() !== 47)
- return false;
- next = t1.peekChar$1(1);
- if (next === 47) {
- this.silentComment$0();
- return true;
- } else if (next === 42) {
- this.loudComment$0();
- return true;
- } else
- return false;
- },
- silentComment$0: function() {
- var t2, t3,
- t1 = this.scanner;
- t1.expect$1("//");
- t2 = t1.string.length;
- while (true) {
- if (t1._string_scanner$_position !== t2) {
- t3 = t1.peekChar$0();
- t3 = !(t3 === 10 || t3 === 13 || t3 === 12);
- } else
- t3 = false;
- if (!t3)
- break;
- t1.readChar$0();
- }
- },
- loudComment$0: function() {
- var next,
- t1 = this.scanner;
- t1.expect$1("/*");
- for (; true;) {
- if (t1.readChar$0() !== 42)
- continue;
- do
- next = t1.readChar$0();
- while (next === 42);
- if (next === 47)
- break;
- }
- },
- identifier$2$normalize$unit: function(normalize, unit) {
- var t2, first, _this = this,
- _s20_ = "Expected identifier.",
- text = new P.StringBuffer(""),
- t1 = _this.scanner;
- if (t1.scanChar$1(45)) {
- t2 = text._contents = H.Primitives_stringFromCharCode(45);
- if (t1.scanChar$1(45)) {
- text._contents = t2 + H.Primitives_stringFromCharCode(45);
- _this._identifierBody$3$normalize$unit(text, normalize, unit);
- t1 = text._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- }
- } else
- t2 = "";
- first = t1.peekChar$0();
- if (first == null)
- t1.error$1(_s20_);
- else if (normalize && first === 95) {
- t1.readChar$0();
- text._contents = t2 + H.Primitives_stringFromCharCode(45);
- } else if (first === 95 || T.isAlphabetic0(first) || first >= 128)
- text._contents = t2 + H.Primitives_stringFromCharCode(t1.readChar$0());
- else if (first === 92)
- text._contents = t2 + H.S(_this.escape$1$identifierStart(true));
- else
- t1.error$1(_s20_);
- _this._identifierBody$3$normalize$unit(text, normalize, unit);
- t1 = text._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- identifier$0: function() {
- return this.identifier$2$normalize$unit(false, false);
- },
- identifier$1$normalize: function(normalize) {
- return this.identifier$2$normalize$unit(normalize, false);
- },
- identifier$1$unit: function(unit) {
- return this.identifier$2$normalize$unit(false, unit);
- },
- _identifierBody$3$normalize$unit: function(text, normalize, unit) {
- var t1, next, second, t2;
- for (t1 = this.scanner; true;) {
- next = t1.peekChar$0();
- if (next == null)
- break;
- else if (unit && next === 45) {
- second = t1.peekChar$1(1);
- if (second != null)
- if (second !== 46)
- t2 = second >= 48 && second <= 57;
- else
- t2 = true;
- else
- t2 = false;
- if (t2)
- break;
- text._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- } else if (normalize && next === 95) {
- t1.readChar$0();
- text._contents += H.Primitives_stringFromCharCode(45);
- } else {
- if (next !== 95) {
- if (!(next >= 97 && next <= 122))
- t2 = next >= 65 && next <= 90;
- else
- t2 = true;
- t2 = t2 || next >= 128;
- } else
- t2 = true;
- if (!t2) {
- t2 = next >= 48 && next <= 57;
- t2 = t2 || next === 45;
- } else
- t2 = true;
- if (t2)
- text._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- else if (next === 92)
- text._contents += H.S(this.escape$0());
- else
- break;
- }
- }
- },
- _identifierBody$1: function(text) {
- return this._identifierBody$3$normalize$unit(text, false, false);
- },
- string$0: function() {
- var t2, buffer, next,
- t1 = this.scanner,
- quote = t1.readChar$0();
- if (quote !== 39 && quote !== 34) {
- t2 = t1._string_scanner$_position;
- t1.error$2$position("Expected string.", t2 - 1);
- }
- buffer = new P.StringBuffer("");
- for (; true;) {
- next = t1.peekChar$0();
- if (next === quote) {
- t1.readChar$0();
- break;
- } else if (next == null || next === 10 || next === 13 || next === 12)
- t1.error$1("Expected " + H.Primitives_stringFromCharCode(quote) + ".");
- else if (next === 92) {
- t2 = t1.peekChar$1(1);
- if (t2 === 10 || t2 === 13 || t2 === 12) {
- t1.readChar$0();
- t1.readChar$0();
- } else
- buffer._contents += H.Primitives_stringFromCharCode(this.escapeCharacter$0());
- } else
- buffer._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- }
- t1 = buffer._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- naturalNumber$0: function() {
- var number, t2,
- t1 = this.scanner,
- first = t1.readChar$0();
- if (!T.isDigit(first))
- t1.error$2$position("Expected digit.", t1._string_scanner$_position - 1);
- number = first - 48;
- while (true) {
- t2 = t1.peekChar$0();
- if (!(t2 != null && t2 >= 48 && t2 <= 57))
- break;
- number = number * 10 + (t1.readChar$0() - 48);
- }
- return number;
- },
- declarationValue$1$allowEmpty: function(allowEmpty) {
- var t1, t2, wroteNewline, next, start, end, t3, url, _this = this,
- buffer = new P.StringBuffer(""),
- brackets = H.setRuntimeTypeInfo([], [P.int]);
- $label0$1:
- for (t1 = _this.scanner, t2 = _this.get$string(), wroteNewline = false; true;) {
- next = t1.peekChar$0();
- switch (next) {
- case 92:
- buffer._contents += H.S(_this.escape$1$identifierStart(true));
- wroteNewline = false;
- break;
- case 34:
- case 39:
- start = t1._string_scanner$_position;
- t2.call$0();
- end = t1._string_scanner$_position;
- buffer._contents += J.substring$2$s(t1.string, start, end);
- wroteNewline = false;
- break;
- case 47:
- if (t1.peekChar$1(1) === 42) {
- t3 = _this.get$loudComment();
- start = t1._string_scanner$_position;
- t3.call$0();
- end = t1._string_scanner$_position;
- buffer._contents += J.substring$2$s(t1.string, start, end);
- } else
- buffer._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- wroteNewline = false;
- break;
- case 32:
- case 9:
- if (!wroteNewline) {
- t3 = t1.peekChar$1(1);
- t3 = !(t3 === 32 || t3 === 9 || t3 === 10 || t3 === 13 || t3 === 12);
- } else
- t3 = true;
- if (t3)
- buffer._contents += H.Primitives_stringFromCharCode(32);
- t1.readChar$0();
- break;
- case 10:
- case 13:
- case 12:
- t3 = t1.peekChar$1(-1);
- if (!(t3 === 10 || t3 === 13 || t3 === 12))
- buffer._contents += "\n";
- t1.readChar$0();
- wroteNewline = true;
- break;
- case 40:
- case 123:
- case 91:
- buffer._contents += H.Primitives_stringFromCharCode(next);
- brackets.push(T.opposite(t1.readChar$0()));
- wroteNewline = false;
- break;
- case 41:
- case 125:
- case 93:
- if (brackets.length === 0)
- break $label0$1;
- buffer._contents += H.Primitives_stringFromCharCode(next);
- t1.expectChar$1(brackets.pop());
- wroteNewline = false;
- break;
- case 59:
- if (brackets.length === 0)
- break $label0$1;
- buffer._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- break;
- case 117:
- case 85:
- url = _this.tryUrl$0();
- if (url != null)
- buffer._contents += url;
- else
- buffer._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- wroteNewline = false;
- break;
- default:
- if (next == null)
- break $label0$1;
- if (_this.lookingAtIdentifier$0())
- buffer._contents += _this.identifier$0();
- else
- buffer._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- wroteNewline = false;
- break;
- }
- }
- if (brackets.length !== 0)
- t1.expectChar$1(C.JSArray_methods.get$last(brackets));
- if (!allowEmpty && buffer._contents.length === 0)
- t1.error$1("Expected token.");
- t1 = buffer._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- declarationValue$0: function() {
- return this.declarationValue$1$allowEmpty(false);
- },
- tryUrl$0: function() {
- var buffer, next, t2, _this = this,
- t1 = _this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- if (!_this.scanIdentifier$1("url"))
- return;
- if (!t1.scanChar$1(40)) {
- t1.set$state(start);
- return;
- }
- _this.whitespace$0();
- buffer = new P.StringBuffer("");
- buffer._contents = "url(";
- for (; true;) {
- next = t1.peekChar$0();
- if (next == null)
- break;
- else {
- if (next !== 37)
- if (next !== 38)
- if (next !== 35)
- t2 = next >= 42 && next <= 126 || next >= 128;
- else
- t2 = true;
- else
- t2 = true;
- else
- t2 = true;
- if (t2)
- buffer._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- else if (next === 92)
- buffer._contents += H.S(_this.escape$0());
- else if (next === 32 || next === 9 || next === 10 || next === 13 || next === 12) {
- _this.whitespace$0();
- if (t1.peekChar$0() !== 41)
- break;
- } else if (next === 41) {
- t2 = buffer._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- return t2.charCodeAt(0) == 0 ? t2 : t2;
- } else
- break;
- }
- }
- t1.set$state(start);
- return;
- },
- variableName$0: function() {
- this.scanner.expectChar$1(36);
- return this.identifier$1$normalize(true);
- },
- escape$1$identifierStart: function(identifierStart) {
- var first, value, i, next,
- t1 = this.scanner;
- t1.expectChar$1(92);
- first = t1.peekChar$0();
- if (first == null)
- return "";
- else if (T.isNewline(first)) {
- t1.error$1("Expected escape sequence.");
- value = 0;
- } else if (T.isHex(first)) {
- for (value = 0, i = 0; i < 6; ++i) {
- next = t1.peekChar$0();
- if (next == null || !T.isHex(next))
- break;
- value = value * 16 + T.asHex(t1.readChar$0());
- }
- this.scanCharIf$1(T.character__isWhitespace$closure());
- } else
- value = t1.readChar$0();
- if (identifierStart)
- t1 = value === 95 || T.isAlphabetic0(value) || value >= 128;
- else
- t1 = value === 95 || T.isAlphabetic0(value) || value >= 128 || T.isDigit(value) || value === 45;
- if (t1)
- return H.Primitives_stringFromCharCode(value);
- else {
- if (value > 31)
- if (value !== 127)
- t1 = identifierStart && T.isDigit(value);
- else
- t1 = true;
- else
- t1 = true;
- if (t1) {
- t1 = H.Primitives_stringFromCharCode(92);
- if (value > 15)
- t1 += H.Primitives_stringFromCharCode(T.hexCharFor(C.JSInt_methods._shrOtherPositive$1(value, 4)));
- t1 = t1 + H.Primitives_stringFromCharCode(T.hexCharFor(value & 15)) + H.Primitives_stringFromCharCode(32);
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- } else
- return P.String_String$fromCharCodes(H.setRuntimeTypeInfo([92, value], [P.int]), 0, null);
- }
- },
- escape$0: function() {
- return this.escape$1$identifierStart(false);
- },
- escapeCharacter$0: function() {
- var first, value, i, next, t2,
- t1 = this.scanner;
- t1.expectChar$1(92);
- first = t1.peekChar$0();
- if (first == null)
- return 65533;
- else if (T.isNewline(first))
- t1.error$1("Expected escape sequence.");
- else if (T.isHex(first)) {
- for (value = 0, i = 0; i < 6; ++i) {
- next = t1.peekChar$0();
- if (next == null || !T.isHex(next))
- break;
- value = (value << 4 >>> 0) + T.asHex(t1.readChar$0());
- }
- t2 = t1.peekChar$0();
- if (t2 === 32 || t2 === 9 || T.isNewline(t2))
- t1.readChar$0();
- if (value !== 0)
- t1 = value >= 55296 && value <= 57343 || value >= 1114111;
- else
- t1 = true;
- if (t1)
- return 65533;
- else
- return value;
- } else
- return t1.readChar$0();
- },
- scanCharIf$1: function(condition) {
- var t1 = this.scanner;
- if (!condition.call$1(t1.peekChar$0()))
- return false;
- t1.readChar$0();
- return true;
- },
- scanCharIgnoreCase$1: function(letter) {
- var t1 = this.scanner;
- if ((t1.peekChar$0() | 32) !== letter)
- return false;
- t1.readChar$0();
- return true;
- },
- expectCharIgnoreCase$1: function(letter) {
- var t2, t3,
- t1 = this.scanner;
- if ((t1.readChar$0() | 32) === letter)
- return;
- t2 = 'Expected "' + H.Primitives_stringFromCharCode(letter) + '".';
- t3 = t1._string_scanner$_position;
- t1.error$2$position(t2, t3 - 1);
- },
- lookingAtNumber$0: function() {
- var second, third,
- t1 = this.scanner,
- first = t1.peekChar$0();
- if (first == null)
- return false;
- if (T.isDigit(first))
- return true;
- if (first === 46) {
- second = t1.peekChar$1(1);
- return second != null && T.isDigit(second);
- } else if (first === 43 || first === 45) {
- second = t1.peekChar$1(1);
- if (second == null)
- return false;
- if (T.isDigit(second))
- return true;
- if (second !== 46)
- return false;
- third = t1.peekChar$1(2);
- return third != null && T.isDigit(third);
- } else
- return false;
- },
- lookingAtIdentifier$1: function($forward) {
- var t1, first, second;
- if ($forward == null)
- $forward = 0;
- t1 = this.scanner;
- first = t1.peekChar$1($forward);
- if (first == null)
- return false;
- if (first === 95 || T.isAlphabetic0(first) || first >= 128 || first === 92)
- return true;
- if (first !== 45)
- return false;
- second = t1.peekChar$1($forward + 1);
- if (second == null)
- return false;
- return second === 95 || T.isAlphabetic0(second) || second >= 128 || second === 92 || second === 45;
- },
- lookingAtIdentifier$0: function() {
- return this.lookingAtIdentifier$1(null);
- },
- lookingAtIdentifierBody$0: function() {
- var t1,
- next = this.scanner.peekChar$0();
- if (next != null)
- t1 = next === 95 || T.isAlphabetic0(next) || next >= 128 || T.isDigit(next) || next === 45 || next === 92;
- else
- t1 = false;
- return t1;
- },
- scanIdentifier$1: function(text) {
- var t1, start, t2, i, _this = this;
- if (!_this.lookingAtIdentifier$0())
- return false;
- t1 = _this.scanner;
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- for (t2 = text.length, i = 0; i < t2; ++i) {
- if (_this.scanCharIgnoreCase$1(C.JSString_methods._codeUnitAt$1(text, i)))
- continue;
- if (start._scanner !== t1)
- H.throwExpression(P.ArgumentError$("The given LineScannerState was not returned by this LineScanner."));
- t2 = start.position;
- if (t2 < 0 || t2 > t1.string.length)
- H.throwExpression(P.ArgumentError$("Invalid position " + t2));
- t1._string_scanner$_position = t2;
- t1._lastMatch = null;
- return false;
- }
- if (!_this.lookingAtIdentifierBody$0())
- return true;
- t1.set$state(start);
- return false;
- },
- expectIdentifier$2$name: function(text, $name) {
- var t1, start, t2, i;
- if ($name == null)
- $name = '"' + text + '"';
- t1 = this.scanner;
- start = t1._string_scanner$_position;
- for (t2 = text.length, i = 0; i < t2; ++i) {
- if (this.scanCharIgnoreCase$1(C.JSString_methods._codeUnitAt$1(text, i)))
- continue;
- t1.error$2$position("Expected " + $name + ".", start);
- }
- if (!this.lookingAtIdentifierBody$0())
- return;
- t1.error$2$position("Expected " + $name, start);
- },
- expectIdentifier$1: function(text) {
- return this.expectIdentifier$2$name(text, null);
- },
- rawText$1: function(consumer) {
- var t1 = this.scanner,
- start = t1._string_scanner$_position;
- consumer.call$0();
- return t1.substring$1(0, start);
- },
- error$2: function(message, span) {
- return H.throwExpression(E.StringScannerException$(message, span, this.scanner.string));
- },
- withErrorMessage$1$2: function(message, callback) {
- var error, t1, exception;
- try {
- t1 = callback.call$0();
- return t1;
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (!!J.getInterceptor$(t1).$isSourceSpanFormatException) {
- error = t1;
- throw H.wrapException(G.SourceSpanFormatException$(message, error.get$span(), error.get$source()));
- } else
- throw exception;
- }
- },
- withErrorMessage$2: function(message, callback) {
- return this.withErrorMessage$1$2(message, callback, null);
- },
- wrapSpanFormatException$1$1: function(callback) {
- var error, span, startPosition, t1, exception;
- try {
- t1 = callback.call$0();
- return t1;
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (!!J.getInterceptor$(t1).$isSourceSpanFormatException) {
- error = t1;
- span = error.get$span();
- if (B.startsWithIgnoreCase(error._span_exception$_message, "expected")) {
- t1 = span;
- t1 = t1._file$_end - t1._start === 0;
- } else
- t1 = false;
- if (t1) {
- t1 = span;
- startPosition = this._firstNewlineBefore$1(Y.FileLocation$_(t1.file, t1._start).offset);
- t1 = span;
- if (!J.$eq$(startPosition, Y.FileLocation$_(t1.file, t1._start).offset))
- span = span.file.span$2(startPosition, startPosition);
- }
- throw H.wrapException(E.SassFormatException$(error._span_exception$_message, span));
- } else
- throw exception;
- }
- },
- wrapSpanFormatException$1: function(callback) {
- return this.wrapSpanFormatException$1$1(callback, null);
- },
- _firstNewlineBefore$1: function(position) {
- var t1, t2, lastNewline, codeUnit,
- index = position - 1;
- for (t1 = this.scanner.string, t2 = J.getInterceptor$s(t1), lastNewline = null; index >= 0;) {
- codeUnit = t2.codeUnitAt$1(t1, index);
- if (!(codeUnit === 32 || codeUnit === 9 || codeUnit === 10 || codeUnit === 13 || codeUnit === 12))
- return lastNewline == null ? position : lastNewline;
- if (codeUnit === 10 || codeUnit === 13 || codeUnit === 12)
- lastNewline = index;
- --index;
- }
- return position;
- }
- };
- G.Parser__parseIdentifier_closure.prototype = {
- call$0: function() {
- var t1 = this.$this,
- result = t1.identifier$0();
- t1.scanner.expectDone$0();
- return result;
- }
- };
- U.SassParser.prototype = {
- get$currentIndentation: function() {
- return this._currentIndentation;
- },
- get$indented: function() {
- return true;
- },
- styleRuleSelector$0: function() {
- var t4,
- t1 = this.scanner,
- t2 = t1._string_scanner$_position,
- t3 = new P.StringBuffer(""),
- buffer = new Z.InterpolationBuffer(t3, []);
- do {
- buffer.addInterpolation$1(this.almostAnyValue$0());
- t4 = t3._contents += H.Primitives_stringFromCharCode(10);
- } while (C.JSString_methods.endsWith$1(C.JSString_methods.trimRight$0(t4.charCodeAt(0) == 0 ? t4 : t4), ",") && this.scanCharIf$1(T.character__isNewline$closure()));
- return buffer.interpolation$1(t1.spanFrom$1(new S._SpanScannerState(t1, t2)));
- },
- expectStatementSeparator$1: function($name) {
- var _this = this;
- if (!_this.atEndOfStatement$0())
- _this._expectNewline$0();
- if (_this._peekIndentation$0() <= _this._currentIndentation)
- return;
- _this.scanner.error$2$position("Nothing may be indented " + ($name == null ? "here" : "beneath a " + $name) + ".", _this._nextIndentationEnd.position);
- },
- expectStatementSeparator$0: function() {
- return this.expectStatementSeparator$1(null);
- },
- atEndOfStatement$0: function() {
- var next = this.scanner.peekChar$0();
- return next == null || T.isNewline(next);
- },
- lookingAtChildren$0: function() {
- return this.atEndOfStatement$0() && this._peekIndentation$0() > this._currentIndentation;
- },
- importArgument$0: function() {
- var url, span, innerError, start, next, t2, exception, _this = this,
- t1 = _this.scanner;
- switch (t1.peekChar$0()) {
- case 117:
- case 85:
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- if (_this.scanIdentifier$1("url"))
- if (t1.scanChar$1(40)) {
- t1.set$state(start);
- return _this.super$StylesheetParser$importArgument();
- } else
- t1.set$state(start);
- break;
- case 39:
- case 34:
- return _this.super$StylesheetParser$importArgument();
- }
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- next = t1.peekChar$0();
- while (true) {
- if (next != null)
- if (next !== 44)
- if (next !== 59)
- t2 = !(next === 10 || next === 13 || next === 12);
- else
- t2 = false;
- else
- t2 = false;
- else
- t2 = false;
- if (!t2)
- break;
- t1.readChar$0();
- next = t1.peekChar$0();
- }
- url = t1.substring$1(0, start.position);
- span = t1.spanFrom$1(start);
- if (_this.isPlainImportUrl$1(url))
- return new Q.StaticImport(X.Interpolation$(H.setRuntimeTypeInfo([N.serializeValue(new D.SassString(url, true), true, true)], [P.Object]), span), null, null, span);
- else
- try {
- t1 = _this.parseImportUrl$1(url);
- return new B.DynamicImport(t1, span);
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (!!J.getInterceptor$(t1).$isFormatException) {
- innerError = t1;
- _this.error$2("Invalid URL: " + H.S(J.get$message$x(innerError)), span);
- } else
- throw exception;
- }
- },
- scanElse$1: function(ifIndentation) {
- var t1, t2, startIndentation, startNextIndentation, startNextIndentationEnd, _this = this;
- if (_this._peekIndentation$0() != ifIndentation)
- return false;
- t1 = _this.scanner;
- t2 = t1._string_scanner$_position;
- startIndentation = _this._currentIndentation;
- startNextIndentation = _this._nextIndentation;
- startNextIndentationEnd = _this._nextIndentationEnd;
- _this._readIndentation$0();
- if (t1.scanChar$1(64) && _this.scanIdentifier$1("else"))
- return true;
- t1.set$state(new S._SpanScannerState(t1, t2));
- _this._currentIndentation = startIndentation;
- _this._nextIndentation = startNextIndentation;
- _this._nextIndentationEnd = startNextIndentationEnd;
- return false;
- },
- children$1: function(child) {
- var children = H.setRuntimeTypeInfo([], [O.Statement]);
- this._whileIndentedLower$1(new U.SassParser_children_closure(this, children, child));
- return children;
- },
- statements$1: function(statement) {
- var statements, t2, child,
- t1 = this.scanner,
- first = t1.peekChar$0();
- if (first === 9 || first === 32)
- t1.error$3$length$position("Indenting at the beginning of the document is illegal.", t1._string_scanner$_position, 0);
- statements = H.setRuntimeTypeInfo([], [O.Statement]);
- for (t2 = t1.string.length; t1._string_scanner$_position !== t2;) {
- child = this._child$1(statement);
- if (child != null)
- statements.push(child);
- this._readIndentation$0();
- }
- return statements;
- },
- _child$1: function(child) {
- var _this = this,
- t1 = _this.scanner;
- switch (t1.peekChar$0()) {
- case 13:
- case 10:
- case 12:
- return;
- case 36:
- return _this.variableDeclarationWithoutNamespace$0();
- case 47:
- switch (t1.peekChar$1(1)) {
- case 47:
- return _this._silentComment$0();
- case 42:
- return _this._loudComment$0();
- default:
- return child.call$0();
- }
- default:
- return child.call$0();
- }
- },
- _silentComment$0: function() {
- var buffer, parentIndentation, t3, commentPrefix, i, t4, i0, t5, t6, _this = this,
- t1 = _this.scanner,
- t2 = t1._string_scanner$_position;
- t1.expect$1("//");
- buffer = new P.StringBuffer("");
- parentIndentation = _this._currentIndentation;
- t3 = t1.string;
- $label0$0:
- do {
- commentPrefix = t1.scanChar$1(47) ? "///" : "//";
- for (i = commentPrefix.length; true;) {
- t4 = buffer._contents += commentPrefix;
- for (i0 = i; i0 < _this._currentIndentation - parentIndentation; ++i0) {
- t4 += H.Primitives_stringFromCharCode(32);
- buffer._contents = t4;
- }
- t5 = t3.length;
- while (true) {
- if (t1._string_scanner$_position !== t5) {
- t6 = t1.peekChar$0();
- t6 = !(t6 === 10 || t6 === 13 || t6 === 12);
- } else
- t6 = false;
- if (!t6)
- break;
- t4 += H.Primitives_stringFromCharCode(t1.readChar$0());
- buffer._contents = t4;
- }
- buffer._contents = t4 + "\n";
- if (_this._peekIndentation$0() < parentIndentation)
- break $label0$0;
- if (_this._peekIndentation$0() === parentIndentation) {
- if (t1.peekChar$1(1 + parentIndentation) === 47 && t1.peekChar$1(2 + parentIndentation) === 47)
- _this._readIndentation$0();
- break;
- }
- _this._readIndentation$0();
- }
- } while (t1.scan$1("//"));
- t3 = buffer._contents;
- return _this.lastSilentComment = new B.SilentComment(t3.charCodeAt(0) == 0 ? t3 : t3, t1.spanFrom$1(new S._SpanScannerState(t1, t2)));
- },
- _loudComment$0: function() {
- var t3, t4, buffer, parentIndentation, t5, first, beginningOfComment, t6, end, i, t7, _this = this,
- t1 = _this.scanner,
- t2 = t1._string_scanner$_position;
- t1.expect$1("/*");
- t3 = new P.StringBuffer("");
- t4 = [];
- buffer = new Z.InterpolationBuffer(t3, t4);
- t3._contents = "/*";
- parentIndentation = _this._currentIndentation;
- for (t5 = t1.string, first = true; true; first = false) {
- if (first) {
- beginningOfComment = t1._string_scanner$_position;
- _this.spaces$0();
- t6 = t1.peekChar$0();
- if (t6 === 10 || t6 === 13 || t6 === 12) {
- _this._readIndentation$0();
- t3._contents += H.Primitives_stringFromCharCode(32);
- } else {
- end = t1._string_scanner$_position;
- t3._contents += J.substring$2$s(t5, beginningOfComment, end);
- }
- } else {
- t6 = t3._contents += "\n";
- t3._contents = t6 + " * ";
- }
- for (i = 3; i < _this._currentIndentation - parentIndentation; ++i)
- t3._contents += H.Primitives_stringFromCharCode(32);
- $label0$1:
- for (t6 = t5.length; t1._string_scanner$_position !== t6;)
- switch (t1.peekChar$0()) {
- case 10:
- case 13:
- case 12:
- break $label0$1;
- case 35:
- if (t1.peekChar$1(1) === 123) {
- t7 = _this.singleInterpolation$0();
- buffer._flushText$0();
- t4.push(t7);
- } else
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- break;
- default:
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- break;
- }
- if (_this._peekIndentation$0() <= parentIndentation)
- break;
- for (; _this._lookingAtDoubleNewline$0();) {
- _this._expectNewline$0();
- t6 = t3._contents += "\n";
- t3._contents = t6 + " *";
- }
- _this._readIndentation$0();
- }
- t4 = t3._contents;
- if (!C.JSString_methods.endsWith$1(C.JSString_methods.trimRight$0(t4.charCodeAt(0) == 0 ? t4 : t4), "*/"))
- t3._contents += " */";
- return new L.LoudComment(buffer.interpolation$1(t1.spanFrom$1(new S._SpanScannerState(t1, t2))));
- },
- whitespaceWithoutComments$0: function() {
- var t1, t2, next;
- for (t1 = this.scanner, t2 = t1.string.length; t1._string_scanner$_position !== t2;) {
- next = t1.peekChar$0();
- if (next !== 9 && next !== 32)
- break;
- t1.readChar$0();
- }
- },
- loudComment$0: function() {
- var next,
- t1 = this.scanner;
- t1.expect$1("/*");
- for (; true;) {
- next = t1.readChar$0();
- if (next === 10 || next === 13 || next === 12)
- t1.error$1("expected */.");
- if (next !== 42)
- continue;
- do
- next = t1.readChar$0();
- while (next === 42);
- if (next === 47)
- break;
- }
- },
- _expectNewline$0: function() {
- var t1 = this.scanner;
- switch (t1.peekChar$0()) {
- case 59:
- t1.error$1("semicolons aren't allowed in the indented syntax.");
- break;
- case 13:
- t1.readChar$0();
- if (t1.peekChar$0() === 10)
- t1.readChar$0();
- return;
- case 10:
- case 12:
- t1.readChar$0();
- return;
- default:
- t1.error$1("expected newline.");
- }
- },
- _lookingAtDoubleNewline$0: function() {
- var nextChar,
- t1 = this.scanner;
- switch (t1.peekChar$0()) {
- case 13:
- nextChar = t1.peekChar$1(1);
- if (nextChar === 10)
- return T.isNewline(t1.peekChar$1(2));
- return nextChar === 13 || nextChar === 12;
- case 10:
- case 12:
- return T.isNewline(t1.peekChar$1(1));
- default:
- return false;
- }
- },
- _whileIndentedLower$1: function(body) {
- var t1, t2, childIndentation, indentation, t3, t4, t5, _this = this,
- parentIndentation = _this._currentIndentation;
- for (t1 = _this.scanner, t2 = t1._sourceFile, childIndentation = null; _this._peekIndentation$0() > parentIndentation;) {
- indentation = _this._readIndentation$0();
- if (childIndentation == null)
- childIndentation = indentation;
- if (childIndentation != indentation) {
- t3 = "Inconsistent indentation, expected " + H.S(childIndentation) + " spaces.";
- t4 = t1._string_scanner$_position;
- t5 = t2.getColumn$1(t4);
- t1.error$3$length$position(t3, t2.getColumn$1(t1._string_scanner$_position), t4 - t5);
- }
- body.call$0();
- }
- },
- _readIndentation$0: function() {
- var _this = this;
- if (_this._nextIndentation == null)
- _this._peekIndentation$0();
- _this._currentIndentation = _this._nextIndentation;
- _this.scanner.set$state(_this._nextIndentationEnd);
- _this._nextIndentationEnd = _this._nextIndentation = null;
- return _this._currentIndentation;
- },
- _peekIndentation$0: function() {
- var t2, t3, start, containsTab, containsSpace, next, t4, _this = this,
- t1 = _this._nextIndentation;
- if (t1 != null)
- return t1;
- t1 = _this.scanner;
- t2 = t1._string_scanner$_position;
- t3 = t1.string.length;
- if (t2 === t3) {
- _this._nextIndentation = 0;
- _this._nextIndentationEnd = new S._SpanScannerState(t1, t2);
- return 0;
- }
- start = new S._SpanScannerState(t1, t2);
- if (!_this.scanCharIf$1(T.character__isNewline$closure()))
- t1.error$2$position("Expected newline.", t1._string_scanner$_position);
- do {
- _this._nextIndentation = 0;
- for (containsTab = false, containsSpace = false; true;) {
- next = t1.peekChar$0();
- if (next === 32)
- containsSpace = true;
- else {
- if (next !== 9)
- break;
- containsTab = true;
- }
- _this._nextIndentation = _this._nextIndentation + 1;
- t1.readChar$0();
- }
- t2 = t1._string_scanner$_position;
- if (t2 === t3) {
- _this._nextIndentation = 0;
- _this._nextIndentationEnd = new S._SpanScannerState(t1, t2);
- t1.set$state(start);
- return 0;
- }
- } while (_this.scanCharIf$1(T.character__isNewline$closure()));
- if (containsTab) {
- if (containsSpace) {
- t2 = t1._string_scanner$_position;
- t3 = t1._sourceFile;
- t4 = t3.getColumn$1(t2);
- t1.error$3$length$position("Tabs and spaces may not be mixed.", t3.getColumn$1(t1._string_scanner$_position), t2 - t4);
- } else if (_this._spaces === true) {
- t2 = t1._string_scanner$_position;
- t3 = t1._sourceFile;
- t4 = t3.getColumn$1(t2);
- t1.error$3$length$position("Expected spaces, was tabs.", t3.getColumn$1(t1._string_scanner$_position), t2 - t4);
- }
- } else if (containsSpace && _this._spaces === false) {
- t2 = t1._string_scanner$_position;
- t3 = t1._sourceFile;
- t4 = t3.getColumn$1(t2);
- t1.error$3$length$position("Expected tabs, was spaces.", t3.getColumn$1(t1._string_scanner$_position), t2 - t4);
- }
- if (_this._nextIndentation > 0)
- if (_this._spaces == null)
- _this._spaces = containsSpace;
- _this._nextIndentationEnd = new S._SpanScannerState(t1, t1._string_scanner$_position);
- t1.set$state(start);
- return _this._nextIndentation;
- }
- };
- U.SassParser_children_closure.prototype = {
- call$0: function() {
- this.children.push(this.$this._child$1(this.child));
- }
- };
- L.ScssParser.prototype = {
- get$indented: function() {
- return false;
- },
- get$currentIndentation: function() {
- return;
- },
- styleRuleSelector$0: function() {
- return this.almostAnyValue$0();
- },
- expectStatementSeparator$1: function($name) {
- var t1, next;
- this.whitespaceWithoutComments$0();
- t1 = this.scanner;
- if (t1._string_scanner$_position === t1.string.length)
- return;
- next = t1.peekChar$0();
- if (next === 59 || next === 125)
- return;
- t1.expectChar$1(59);
- },
- expectStatementSeparator$0: function() {
- return this.expectStatementSeparator$1(null);
- },
- atEndOfStatement$0: function() {
- var next = this.scanner.peekChar$0();
- return next == null || next === 59 || next === 125 || next === 123;
- },
- lookingAtChildren$0: function() {
- return this.scanner.peekChar$0() === 123;
- },
- scanElse$1: function(_) {
- var t3, _this = this,
- t1 = _this.scanner,
- t2 = t1._string_scanner$_position;
- _this.whitespace$0();
- t3 = t1._string_scanner$_position;
- if (t1.scanChar$1(64)) {
- if (_this.scanIdentifier$1("else"))
- return true;
- if (_this.scanIdentifier$1("elseif")) {
- _this.logger.warn$3$deprecation$span('@elseif is deprecated and will not be supported in future Sass versions.\nUse "@else if" instead.', true, t1.spanFrom$1(new S._SpanScannerState(t1, t3)));
- t1.set$position(t1._string_scanner$_position - 2);
- return true;
- }
- }
- t1.set$state(new S._SpanScannerState(t1, t2));
- return false;
- },
- children$1: function(child) {
- var children, _this = this,
- t1 = _this.scanner;
- t1.expectChar$1(123);
- _this.whitespaceWithoutComments$0();
- children = H.setRuntimeTypeInfo([], [O.Statement]);
- for (; true;)
- switch (t1.peekChar$0()) {
- case 36:
- children.push(_this.variableDeclarationWithoutNamespace$0());
- break;
- case 47:
- switch (t1.peekChar$1(1)) {
- case 47:
- children.push(_this._scss$_silentComment$0());
- _this.whitespaceWithoutComments$0();
- break;
- case 42:
- children.push(_this._scss$_loudComment$0());
- _this.whitespaceWithoutComments$0();
- break;
- default:
- children.push(child.call$0());
- break;
- }
- break;
- case 59:
- t1.readChar$0();
- _this.whitespaceWithoutComments$0();
- break;
- case 125:
- t1.expectChar$1(125);
- return children;
- default:
- children.push(child.call$0());
- break;
- }
- },
- statements$1: function(statement) {
- var t1, t2, child, _this = this,
- statements = H.setRuntimeTypeInfo([], [O.Statement]);
- _this.whitespaceWithoutComments$0();
- for (t1 = _this.scanner, t2 = t1.string.length; t1._string_scanner$_position !== t2;)
- switch (t1.peekChar$0()) {
- case 36:
- statements.push(_this.variableDeclarationWithoutNamespace$0());
- break;
- case 47:
- switch (t1.peekChar$1(1)) {
- case 47:
- statements.push(_this._scss$_silentComment$0());
- _this.whitespaceWithoutComments$0();
- break;
- case 42:
- statements.push(_this._scss$_loudComment$0());
- _this.whitespaceWithoutComments$0();
- break;
- default:
- child = statement.call$0();
- if (child != null)
- statements.push(child);
- break;
- }
- break;
- case 59:
- t1.readChar$0();
- _this.whitespaceWithoutComments$0();
- break;
- default:
- child = statement.call$0();
- if (child != null)
- statements.push(child);
- break;
- }
- return statements;
- },
- _scss$_silentComment$0: function() {
- var t2, t3, _this = this,
- t1 = _this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- t1.expect$1("//");
- t2 = t1.string.length;
- do {
- while (true) {
- if (t1._string_scanner$_position !== t2) {
- t3 = t1.readChar$0();
- t3 = !(t3 === 10 || t3 === 13 || t3 === 12);
- } else
- t3 = false;
- if (!t3)
- break;
- }
- if (t1._string_scanner$_position === t2)
- break;
- _this.whitespaceWithoutComments$0();
- } while (t1.scan$1("//"));
- if (_this.get$plainCss())
- _this.error$2("Silent comments aren't allowed in plain CSS.", t1.spanFrom$1(start));
- return _this.lastSilentComment = new B.SilentComment(t1.substring$1(0, start.position), t1.spanFrom$1(start));
- },
- _scss$_loudComment$0: function() {
- var t3, t4, buffer, t5, endPosition,
- t1 = this.scanner,
- t2 = t1._string_scanner$_position;
- t1.expect$1("/*");
- t3 = new P.StringBuffer("");
- t4 = [];
- buffer = new Z.InterpolationBuffer(t3, t4);
- t3._contents = "/*";
- for (; true;)
- switch (t1.peekChar$0()) {
- case 35:
- if (t1.peekChar$1(1) === 123) {
- t5 = this.singleInterpolation$0();
- buffer._flushText$0();
- t4.push(t5);
- } else
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- break;
- case 42:
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- if (t1.peekChar$0() !== 47)
- break;
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- endPosition = t1._string_scanner$_position;
- return new L.LoudComment(buffer.interpolation$1(Y._FileSpan$(t1._sourceFile, new S._SpanScannerState(t1, t2).position, endPosition)));
- case 13:
- t1.readChar$0();
- if (t1.peekChar$0() !== 10)
- t3._contents += H.Primitives_stringFromCharCode(10);
- break;
- case 12:
- t1.readChar$0();
- t3._contents += H.Primitives_stringFromCharCode(10);
- break;
- default:
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- break;
- }
- }
- };
- T.SelectorParser.prototype = {
- parse$0: function() {
- return this.wrapSpanFormatException$1(new T.SelectorParser_parse_closure(this));
- },
- parseCompoundSelector$0: function() {
- return this.wrapSpanFormatException$1(new T.SelectorParser_parseCompoundSelector_closure(this));
- },
- _selectorList$0: function() {
- var t3, t4, lineBreak, _this = this,
- t1 = _this.scanner,
- t2 = t1._sourceFile,
- previousLine = t2.getLine$1(t1._string_scanner$_position),
- components = H.setRuntimeTypeInfo([_this._complexSelector$0()], [S.ComplexSelector]);
- _this.whitespace$0();
- for (t3 = t1.string; t1.scanChar$1(44);) {
- _this.whitespace$0();
- if (t1.peekChar$0() === 44)
- continue;
- t4 = t1._string_scanner$_position;
- if (t4 === t3.length)
- break;
- lineBreak = t2.getLine$1(t4) != previousLine;
- if (lineBreak)
- previousLine = t2.getLine$1(t1._string_scanner$_position);
- components.push(_this._complexSelector$1$lineBreak(lineBreak));
- }
- return D.SelectorList$(components);
- },
- _complexSelector$1$lineBreak: function(lineBreak) {
- var t1, next, _this = this,
- _s58_ = '"&" may only used at the beginning of a compound selector.',
- components = H.setRuntimeTypeInfo([], [S.ComplexSelectorComponent]);
- $label0$1:
- for (t1 = _this.scanner; true;) {
- _this.whitespace$0();
- next = t1.peekChar$0();
- switch (next) {
- case 43:
- t1.readChar$0();
- components.push(C.Combinator_uzg);
- break;
- case 62:
- t1.readChar$0();
- components.push(C.Combinator_sgq);
- break;
- case 126:
- t1.readChar$0();
- components.push(C.Combinator_CzM);
- break;
- case 91:
- case 46:
- case 35:
- case 37:
- case 58:
- case 38:
- case 42:
- case 124:
- components.push(_this._compoundSelector$0());
- if (t1.peekChar$0() === 38)
- t1.error$1(_s58_);
- break;
- default:
- if (next == null || !_this.lookingAtIdentifier$0())
- break $label0$1;
- components.push(_this._compoundSelector$0());
- if (t1.peekChar$0() === 38)
- t1.error$1(_s58_);
- break;
- }
- }
- if (components.length === 0)
- t1.error$1("expected selector.");
- return S.ComplexSelector$(components, lineBreak);
- },
- _complexSelector$0: function() {
- return this._complexSelector$1$lineBreak(false);
- },
- _compoundSelector$0: function() {
- var t2,
- components = H.setRuntimeTypeInfo([this._simpleSelector$0()], [M.SimpleSelector]),
- t1 = this.scanner;
- while (true) {
- t2 = t1.peekChar$0();
- if (!(t2 === 42 || t2 === 91 || t2 === 46 || t2 === 35 || t2 === 37 || t2 === 58))
- break;
- components.push(this._simpleSelector$1$allowParent(false));
- }
- return X.CompoundSelector$(components);
- },
- _simpleSelector$1$allowParent: function(allowParent) {
- var $name, text, t2, suffix, _this = this,
- t1 = _this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- if (allowParent == null)
- allowParent = _this._allowParent;
- switch (t1.peekChar$0()) {
- case 91:
- return _this._attributeSelector$0();
- case 46:
- t1.expectChar$1(46);
- return new X.ClassSelector(_this.identifier$0());
- case 35:
- t1.expectChar$1(35);
- return new N.IDSelector(_this.identifier$0());
- case 37:
- t1.expectChar$1(37);
- $name = _this.identifier$0();
- if (!_this._allowPlaceholder)
- _this.error$2("Placeholder selectors aren't allowed here.", t1.spanFrom$1(start));
- return new N.PlaceholderSelector($name);
- case 58:
- return _this._pseudoSelector$0();
- case 38:
- t1.expectChar$1(38);
- if (_this.lookingAtIdentifierBody$0()) {
- text = new P.StringBuffer("");
- _this._identifierBody$1(text);
- if (text._contents.length === 0)
- t1.error$1("Expected identifier body.");
- t2 = text._contents;
- suffix = t2.charCodeAt(0) == 0 ? t2 : t2;
- } else
- suffix = null;
- if (!allowParent)
- _this.error$2("Parent selectors aren't allowed here.", t1.spanFrom$1(start));
- return new M.ParentSelector(suffix);
- default:
- return _this._typeOrUniversalSelector$0();
- }
- },
- _simpleSelector$0: function() {
- return this._simpleSelector$1$allowParent(null);
- },
- _attributeSelector$0: function() {
- var $name, operator, next, value, modifier, _this = this, _null = null,
- t1 = _this.scanner;
- t1.expectChar$1(91);
- _this.whitespace$0();
- $name = _this._attributeName$0();
- _this.whitespace$0();
- if (t1.scanChar$1(93))
- return new N.AttributeSelector($name, _null, _null, _null);
- operator = _this._attributeOperator$0();
- _this.whitespace$0();
- next = t1.peekChar$0();
- value = next === 39 || next === 34 ? _this.string$0() : _this.identifier$0();
- _this.whitespace$0();
- modifier = T.isAlphabetic0(t1.peekChar$0()) ? H.Primitives_stringFromCharCode(t1.readChar$0()) : _null;
- t1.expectChar$1(93);
- return new N.AttributeSelector($name, operator, value, modifier);
- },
- _attributeName$0: function() {
- var nameOrNamespace, _this = this,
- t1 = _this.scanner;
- if (t1.scanChar$1(42)) {
- t1.expectChar$1(124);
- return new D.QualifiedName(_this.identifier$0(), "*");
- }
- nameOrNamespace = _this.identifier$0();
- if (t1.peekChar$0() !== 124 || t1.peekChar$1(1) === 61)
- return new D.QualifiedName(nameOrNamespace, null);
- t1.readChar$0();
- return new D.QualifiedName(_this.identifier$0(), nameOrNamespace);
- },
- _attributeOperator$0: function() {
- var t1 = this.scanner,
- t2 = t1._string_scanner$_position;
- switch (t1.readChar$0()) {
- case 61:
- return C.AttributeOperator_sEs;
- case 126:
- t1.expectChar$1(61);
- return C.AttributeOperator_fz1;
- case 124:
- t1.expectChar$1(61);
- return C.AttributeOperator_AuK;
- case 94:
- t1.expectChar$1(61);
- return C.AttributeOperator_4L5;
- case 36:
- t1.expectChar$1(61);
- return C.AttributeOperator_mOX;
- case 42:
- t1.expectChar$1(61);
- return C.AttributeOperator_gqZ;
- default:
- t1.error$2$position('Expected "]".', t2);
- }
- },
- _pseudoSelector$0: function() {
- var element, $name, unvendored, selector, argument, t2, _this = this, _null = null,
- t1 = _this.scanner;
- t1.expectChar$1(58);
- element = t1.scanChar$1(58);
- $name = _this.identifier$0();
- if (!t1.scanChar$1(40))
- return D.PseudoSelector$($name, _null, element, _null);
- _this.whitespace$0();
- unvendored = B.unvendor($name);
- if (element)
- if ($._selectorPseudoElements.contains$1(0, unvendored)) {
- selector = _this._selectorList$0();
- argument = _null;
- } else {
- argument = _this.declarationValue$1$allowEmpty(true);
- selector = _null;
- }
- else if ($._selectorPseudoClasses.contains$1(0, unvendored)) {
- selector = _this._selectorList$0();
- argument = _null;
- } else if (unvendored === "nth-child" || unvendored === "nth-last-child") {
- argument = _this._aNPlusB$0();
- _this.whitespace$0();
- t2 = t1.peekChar$1(-1);
- if ((t2 === 32 || t2 === 9 || T.isNewline(t2)) && t1.peekChar$0() !== 41) {
- _this.expectIdentifier$1("of");
- argument += " of";
- _this.whitespace$0();
- selector = _this._selectorList$0();
- } else
- selector = _null;
- } else {
- argument = C.JSString_methods.trimRight$0(_this.declarationValue$1$allowEmpty(true));
- selector = _null;
- }
- t1.expectChar$1(41);
- return D.PseudoSelector$($name, argument, element, selector);
- },
- _aNPlusB$0: function() {
- var t2, first, t3, next, last, _this = this,
- t1 = _this.scanner;
- switch (t1.peekChar$0()) {
- case 101:
- case 69:
- _this.expectIdentifier$1("even");
- return "even";
- case 111:
- case 79:
- _this.expectIdentifier$1("odd");
- return "odd";
- case 43:
- case 45:
- t2 = H.Primitives_stringFromCharCode(t1.readChar$0());
- break;
- default:
- t2 = "";
- }
- first = t1.peekChar$0();
- if (first != null && T.isDigit(first)) {
- while (true) {
- t3 = t1.peekChar$0();
- if (!(t3 != null && t3 >= 48 && t3 <= 57))
- break;
- t2 += H.Primitives_stringFromCharCode(t1.readChar$0());
- }
- _this.whitespace$0();
- if (!_this.scanCharIgnoreCase$1(110))
- return t2.charCodeAt(0) == 0 ? t2 : t2;
- } else
- _this.expectCharIgnoreCase$1(110);
- t2 += H.Primitives_stringFromCharCode(110);
- _this.whitespace$0();
- next = t1.peekChar$0();
- if (next !== 43 && next !== 45)
- return t2.charCodeAt(0) == 0 ? t2 : t2;
- t2 += H.Primitives_stringFromCharCode(t1.readChar$0());
- _this.whitespace$0();
- last = t1.peekChar$0();
- if (last == null || !T.isDigit(last))
- t1.error$1("Expected a number.");
- while (true) {
- t3 = t1.peekChar$0();
- if (!(t3 != null && t3 >= 48 && t3 <= 57))
- break;
- t2 += H.Primitives_stringFromCharCode(t1.readChar$0());
- }
- return t2.charCodeAt(0) == 0 ? t2 : t2;
- },
- _typeOrUniversalSelector$0: function() {
- var nameOrNamespace, _this = this,
- t1 = _this.scanner,
- first = t1.peekChar$0();
- if (first === 42) {
- t1.readChar$0();
- if (!t1.scanChar$1(124))
- return new N.UniversalSelector(null);
- if (t1.scanChar$1(42))
- return new N.UniversalSelector("*");
- else
- return new F.TypeSelector(new D.QualifiedName(_this.identifier$0(), "*"));
- } else if (first === 124) {
- t1.readChar$0();
- if (t1.scanChar$1(42))
- return new N.UniversalSelector("");
- else
- return new F.TypeSelector(new D.QualifiedName(_this.identifier$0(), ""));
- }
- nameOrNamespace = _this.identifier$0();
- if (!t1.scanChar$1(124))
- return new F.TypeSelector(new D.QualifiedName(nameOrNamespace, null));
- else if (t1.scanChar$1(42))
- return new N.UniversalSelector(nameOrNamespace);
- else
- return new F.TypeSelector(new D.QualifiedName(_this.identifier$0(), nameOrNamespace));
- }
- };
- T.SelectorParser_parse_closure.prototype = {
- call$0: function() {
- var t1 = this.$this,
- selector = t1._selectorList$0();
- t1 = t1.scanner;
- if (t1._string_scanner$_position !== t1.string.length)
- t1.error$1("expected selector.");
- return selector;
- }
- };
- T.SelectorParser_parseCompoundSelector_closure.prototype = {
- call$0: function() {
- var t1 = this.$this,
- compound = t1._compoundSelector$0();
- t1 = t1.scanner;
- if (t1._string_scanner$_position !== t1.string.length)
- t1.error$1("expected selector.");
- return compound;
- }
- };
- V.StylesheetParser.prototype = {
- parse$0: function() {
- return this.wrapSpanFormatException$1(new V.StylesheetParser_parse_closure(this));
- },
- parseArgumentDeclaration$0: function() {
- return this._parseSingleProduction$1(new V.StylesheetParser_parseArgumentDeclaration_closure(this));
- },
- parseVariableDeclaration$0: function() {
- return this._parseSingleProduction$1(new V.StylesheetParser_parseVariableDeclaration_closure(this));
- },
- parseUseRule$0: function() {
- return this._parseSingleProduction$1(new V.StylesheetParser_parseUseRule_closure(this));
- },
- _parseSingleProduction$1$1: function(production) {
- return this.wrapSpanFormatException$1(new V.StylesheetParser__parseSingleProduction_closure(this, production));
- },
- _parseSingleProduction$1: function(production) {
- return this._parseSingleProduction$1$1(production, null);
- },
- parseSignature$0: function() {
- return this.wrapSpanFormatException$1(new V.StylesheetParser_parseSignature_closure(this));
- },
- _statement$1$root: function(root) {
- var t2, _this = this,
- t1 = _this.scanner;
- switch (t1.peekChar$0()) {
- case 64:
- return _this.atRule$2$root(new V.StylesheetParser__statement_closure(_this), root);
- case 43:
- if (!_this.get$indented() || !_this.lookingAtIdentifier$1(1))
- return _this._stylesheet$_styleRule$0();
- _this._isUseAllowed = false;
- t2 = t1._string_scanner$_position;
- t1.readChar$0();
- return _this._includeRule$1(new S._SpanScannerState(t1, t2));
- case 61:
- if (!_this.get$indented())
- return _this._stylesheet$_styleRule$0();
- _this._isUseAllowed = false;
- t2 = t1._string_scanner$_position;
- t1.readChar$0();
- _this.whitespace$0();
- return _this._mixinRule$1(new S._SpanScannerState(t1, t2));
- case 125:
- t1.error$2$length('unmatched "}".', 1);
- break;
- default:
- return _this._inStyleRule || _this._stylesheet$_inUnknownAtRule || _this._stylesheet$_inMixin || _this._inContentBlock ? _this._declarationOrStyleRule$0() : _this._variableDeclarationOrStyleRule$0();
- }
- },
- _statement$0: function() {
- return this._statement$1$root(false);
- },
- _variableDeclarationWithNamespace$0: function() {
- var t1 = this.scanner,
- t2 = t1._string_scanner$_position,
- namespace = this.identifier$0();
- t1.expectChar$1(46);
- return this.variableDeclarationWithoutNamespace$2(namespace, new S._SpanScannerState(t1, t2));
- },
- variableDeclarationWithoutNamespace$2: function(namespace, start) {
- var precedingComment, t1, $name, t2, value, flagStart, guarded, global, flag, endPosition, declaration, _this = this, _box_0 = {};
- _box_0.start = start;
- precedingComment = _this.lastSilentComment;
- _this.lastSilentComment = null;
- if (start == null) {
- t1 = _this.scanner;
- _box_0.start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- }
- $name = _this.variableName$0();
- t1 = namespace != null;
- if (t1)
- _this._assertPublic$2($name, new V.StylesheetParser_variableDeclarationWithoutNamespace_closure(_box_0, _this));
- if (_this.get$plainCss())
- _this.error$2("Sass variables aren't allowed in plain CSS.", _this.scanner.spanFrom$1(_box_0.start));
- _this.whitespace$0();
- t2 = _this.scanner;
- t2.expectChar$1(58);
- _this.whitespace$0();
- value = _this.expression$0();
- flagStart = new S._SpanScannerState(t2, t2._string_scanner$_position);
- for (guarded = false, global = false; t2.scanChar$1(33);) {
- flag = _this.identifier$0();
- if (flag === "default")
- guarded = true;
- else if (flag === "global") {
- if (t1) {
- endPosition = t2._string_scanner$_position;
- _this.error$2("!global isn't allowed for variables in other modules.", Y._FileSpan$(t2._sourceFile, flagStart.position, endPosition));
- }
- global = true;
- } else {
- endPosition = t2._string_scanner$_position;
- _this.error$2("Invalid flag name.", Y._FileSpan$(t2._sourceFile, flagStart.position, endPosition));
- }
- _this.whitespace$0();
- flagStart = new S._SpanScannerState(t2, t2._string_scanner$_position);
- }
- _this.expectStatementSeparator$1("variable declaration");
- declaration = Z.VariableDeclaration$($name, value, t2.spanFrom$1(_box_0.start), precedingComment, global, guarded, namespace);
- if (global)
- _this._globalVariables.putIfAbsent$2($name, new V.StylesheetParser_variableDeclarationWithoutNamespace_closure0(declaration));
- return declaration;
- },
- variableDeclarationWithoutNamespace$0: function() {
- return this.variableDeclarationWithoutNamespace$2(null, null);
- },
- _variableDeclarationOrStyleRule$0: function() {
- var t1, t2, variableOrInterpolation, t3, _this = this;
- if (_this.get$plainCss())
- return _this._stylesheet$_styleRule$0();
- if (_this.get$indented() && _this.scanner.scanChar$1(92))
- return _this._stylesheet$_styleRule$0();
- if (!_this.lookingAtIdentifier$0())
- return _this._stylesheet$_styleRule$0();
- t1 = _this.scanner;
- t2 = t1._string_scanner$_position;
- variableOrInterpolation = _this._variableDeclarationOrInterpolation$0();
- if (!!variableOrInterpolation.$isVariableDeclaration)
- return variableOrInterpolation;
- else {
- t3 = new Z.InterpolationBuffer(new P.StringBuffer(""), []);
- t3.addInterpolation$1(H.interceptedTypeCast(variableOrInterpolation, "$isInterpolation"));
- return _this._stylesheet$_styleRule$2(t3, new S._SpanScannerState(t1, t2));
- }
- },
- _declarationOrStyleRule$0: function() {
- var t1, t2, declarationOrBuffer, _this = this;
- if (_this.get$plainCss() && _this._inStyleRule && !_this._stylesheet$_inUnknownAtRule)
- return _this._propertyOrVariableDeclaration$0();
- if (_this.get$indented() && _this.scanner.scanChar$1(92))
- return _this._stylesheet$_styleRule$0();
- t1 = _this.scanner;
- t2 = t1._string_scanner$_position;
- declarationOrBuffer = _this._declarationOrBuffer$0();
- return !!J.getInterceptor$(declarationOrBuffer).$isStatement ? declarationOrBuffer : _this._stylesheet$_styleRule$2(H.interceptedTypeCast(declarationOrBuffer, "$isInterpolationBuffer"), new S._SpanScannerState(t1, t2));
- },
- _declarationOrBuffer$0: function() {
- var midBuffer, couldBeSelector, beforeDeclaration, additional, t3, startsWithPunctuation, variableOrInterpolation, t4, $name, value, postColonWhitespace, t5, exception, _this = this, t1 = {},
- t2 = _this.scanner,
- start = new S._SpanScannerState(t2, t2._string_scanner$_position),
- nameBuffer = new Z.InterpolationBuffer(new P.StringBuffer(""), []),
- first = t2.peekChar$0();
- if (first !== 58)
- if (first !== 42)
- if (first !== 46)
- t3 = first === 35 && t2.peekChar$1(1) !== 123;
- else
- t3 = true;
- else
- t3 = true;
- else
- t3 = true;
- if (t3) {
- t3 = t2.readChar$0();
- nameBuffer._interpolation_buffer$_text._contents += H.Primitives_stringFromCharCode(t3);
- t3 = _this.rawText$1(_this.get$whitespace());
- nameBuffer._interpolation_buffer$_text._contents += t3;
- startsWithPunctuation = true;
- } else
- startsWithPunctuation = false;
- if (!_this._lookingAtInterpolatedIdentifier$0())
- return nameBuffer;
- variableOrInterpolation = startsWithPunctuation ? _this.interpolatedIdentifier$0() : _this._variableDeclarationOrInterpolation$0();
- if (!!variableOrInterpolation.$isVariableDeclaration)
- return variableOrInterpolation;
- else
- nameBuffer.addInterpolation$1(H.interceptedTypeCast(variableOrInterpolation, "$isInterpolation"));
- _this._isUseAllowed = false;
- if (t2.matches$1("/*")) {
- t3 = _this.rawText$1(_this.get$loudComment());
- nameBuffer._interpolation_buffer$_text._contents += t3;
- }
- midBuffer = new P.StringBuffer("");
- t3 = _this.get$whitespace();
- midBuffer._contents += _this.rawText$1(t3);
- t4 = t2._string_scanner$_position;
- if (!t2.scanChar$1(58)) {
- if (midBuffer._contents.length !== 0)
- nameBuffer._interpolation_buffer$_text._contents += H.Primitives_stringFromCharCode(32);
- return nameBuffer;
- }
- midBuffer._contents += H.Primitives_stringFromCharCode(58);
- $name = nameBuffer.interpolation$1(t2.spanFrom$2(start, new S._SpanScannerState(t2, t4)));
- first = C.JSArray_methods.get$first($name.contents);
- if (C.JSString_methods.startsWith$1(typeof first === "string" ? first : "", "--")) {
- value = _this._interpolatedDeclarationValue$0();
- _this.expectStatementSeparator$1("custom property");
- return L.Declaration$($name, t2.spanFrom$1(start), null, value);
- }
- if (t2.scanChar$1(58)) {
- t1 = nameBuffer;
- t2 = t1._interpolation_buffer$_text;
- t2._contents += H.S(midBuffer);
- t2._contents += H.Primitives_stringFromCharCode(58);
- return t1;
- } else if (_this.get$indented() && _this._lookingAtInterpolatedIdentifier$0()) {
- t1 = nameBuffer;
- t1._interpolation_buffer$_text._contents += H.S(midBuffer);
- return t1;
- }
- postColonWhitespace = _this.rawText$1(t3);
- if (_this.lookingAtChildren$0())
- return _this._withChildren$3(_this.get$_declarationChild(), start, new V.StylesheetParser__declarationOrBuffer_closure($name));
- midBuffer._contents += postColonWhitespace;
- couldBeSelector = postColonWhitespace.length === 0 && _this._lookingAtInterpolatedIdentifier$0();
- beforeDeclaration = new S._SpanScannerState(t2, t2._string_scanner$_position);
- t1.value = null;
- try {
- if (_this.lookingAtChildren$0()) {
- t3 = H.setRuntimeTypeInfo([], [P.Object]);
- t4 = Y.FileLocation$_(t2._sourceFile, t2._string_scanner$_position);
- t5 = t4.offset;
- value = new D.StringExpression(X.Interpolation$(t3, Y._FileSpan$(t4.file, t5, t5)), true);
- } else
- value = _this.expression$0();
- t3 = t1.value = value;
- if (_this.lookingAtChildren$0()) {
- if (couldBeSelector)
- _this.expectStatementSeparator$0();
- } else if (!_this.atEndOfStatement$0())
- _this.expectStatementSeparator$0();
- } catch (exception) {
- if (!!J.getInterceptor$(H.unwrapException(exception)).$isFormatException) {
- if (!couldBeSelector)
- throw exception;
- t2.set$state(beforeDeclaration);
- additional = _this.almostAnyValue$0();
- if (!_this.get$indented() && t2.peekChar$0() === 59)
- throw exception;
- nameBuffer._interpolation_buffer$_text._contents += H.S(midBuffer);
- nameBuffer.addInterpolation$1(additional);
- return nameBuffer;
- } else
- throw exception;
- }
- if (_this.lookingAtChildren$0())
- return _this._withChildren$3(_this.get$_declarationChild(), start, new V.StylesheetParser__declarationOrBuffer_closure0(t1, $name));
- else {
- _this.expectStatementSeparator$0();
- return L.Declaration$($name, t2.spanFrom$1(start), null, t3);
- }
- },
- _variableDeclarationOrInterpolation$0: function() {
- var t1, start, identifier, t2, buffer, _this = this;
- if (!_this.lookingAtIdentifier$0())
- return _this.interpolatedIdentifier$0();
- t1 = _this.scanner;
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- identifier = _this.identifier$0();
- if (t1.matches$1(".$")) {
- t1.readChar$0();
- return _this.variableDeclarationWithoutNamespace$2(identifier, start);
- } else {
- t2 = new P.StringBuffer("");
- buffer = new Z.InterpolationBuffer(t2, []);
- t2._contents = identifier;
- if (_this._lookingAtInterpolatedIdentifierBody$0())
- buffer.addInterpolation$1(_this.interpolatedIdentifier$0());
- return buffer.interpolation$1(t1.spanFrom$1(start));
- }
- },
- _stylesheet$_styleRule$2: function(buffer, start) {
- var t2, interpolation, t3, wasInStyleRule, _this = this, t1 = {};
- t1.start = start;
- _this._isUseAllowed = false;
- if (start == null) {
- t2 = _this.scanner;
- t2 = t1.start = new S._SpanScannerState(t2, t2._string_scanner$_position);
- } else
- t2 = start;
- interpolation = t1.interpolation = _this.styleRuleSelector$0();
- if (buffer != null) {
- buffer.addInterpolation$1(interpolation);
- t3 = t1.interpolation = buffer.interpolation$1(_this.scanner.spanFrom$1(t2));
- } else
- t3 = interpolation;
- if (t3.contents.length === 0)
- _this.scanner.error$1('expected "}".');
- wasInStyleRule = _this._inStyleRule;
- _this._inStyleRule = true;
- return _this._withChildren$3(_this.get$_statement(), t2, new V.StylesheetParser__styleRule_closure(t1, _this, wasInStyleRule));
- },
- _stylesheet$_styleRule$0: function() {
- return this._stylesheet$_styleRule$2(null, null);
- },
- _propertyOrVariableDeclaration$0: function() {
- var first, t3, nameBuffer, variableOrInterpolation, $name, value, _this = this,
- _s48_ = "Nested declarations aren't allowed in plain CSS.",
- t1 = {},
- t2 = _this.scanner,
- start = new S._SpanScannerState(t2, t2._string_scanner$_position);
- t1.name = null;
- first = t2.peekChar$0();
- if (first !== 58)
- if (first !== 42)
- if (first !== 46)
- t3 = first === 35 && t2.peekChar$1(1) !== 123;
- else
- t3 = true;
- else
- t3 = true;
- else
- t3 = true;
- if (t3) {
- t3 = new P.StringBuffer("");
- nameBuffer = new Z.InterpolationBuffer(t3, []);
- t3._contents += H.Primitives_stringFromCharCode(t2.readChar$0());
- t3._contents += _this.rawText$1(_this.get$whitespace());
- nameBuffer.addInterpolation$1(_this.interpolatedIdentifier$0());
- t3 = t1.name = nameBuffer.interpolation$1(t2.spanFrom$1(start));
- } else if (!_this.get$plainCss()) {
- variableOrInterpolation = _this._variableDeclarationOrInterpolation$0();
- if (!!variableOrInterpolation.$isVariableDeclaration)
- return variableOrInterpolation;
- else {
- H.interceptedTypeCast(variableOrInterpolation, "$isInterpolation");
- t1.name = variableOrInterpolation;
- }
- t3 = variableOrInterpolation;
- } else {
- $name = _this.interpolatedIdentifier$0();
- t1.name = $name;
- t3 = $name;
- }
- _this.whitespace$0();
- t2.expectChar$1(58);
- _this.whitespace$0();
- if (_this.lookingAtChildren$0()) {
- if (_this.get$plainCss())
- t2.error$1(_s48_);
- return _this._withChildren$3(_this.get$_declarationChild(), start, new V.StylesheetParser__propertyOrVariableDeclaration_closure(t1));
- }
- value = _this.expression$0();
- if (_this.lookingAtChildren$0()) {
- if (_this.get$plainCss())
- t2.error$1(_s48_);
- return _this._withChildren$3(_this.get$_declarationChild(), start, new V.StylesheetParser__propertyOrVariableDeclaration_closure0(t1, value));
- } else {
- _this.expectStatementSeparator$0();
- return L.Declaration$(t3, t2.spanFrom$1(start), null, value);
- }
- },
- _declarationChild$0: function() {
- if (this.scanner.peekChar$0() === 64)
- return this._declarationAtRule$0();
- return this._propertyOrVariableDeclaration$0();
- },
- atRule$2$root: function(child, root) {
- var $name, wasUseAllowed, value, optional, _this = this,
- t1 = _this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- t1.expectChar$2$name(64, "@-rule");
- $name = _this.interpolatedIdentifier$0();
- _this.whitespace$0();
- wasUseAllowed = _this._isUseAllowed;
- _this._isUseAllowed = false;
- switch ($name.get$asPlain()) {
- case "at-root":
- return _this._atRootRule$1(start);
- case "charset":
- _this._isUseAllowed = wasUseAllowed;
- if (!root)
- _this._disallowedAtRule$1(start);
- _this.string$0();
- return;
- case "content":
- return _this._contentRule$1(start);
- case "debug":
- return _this._debugRule$1(start);
- case "each":
- return _this._eachRule$2(start, child);
- case "else":
- return _this._disallowedAtRule$1(start);
- case "error":
- return _this._errorRule$1(start);
- case "extend":
- if (!_this._inStyleRule && !_this._stylesheet$_inMixin && !_this._inContentBlock)
- _this.error$2("@extend may only be used within style rules.", t1.spanFrom$1(start));
- value = _this.almostAnyValue$0();
- optional = t1.scanChar$1(33);
- if (optional)
- _this.expectIdentifier$1("optional");
- _this.expectStatementSeparator$1("@extend rule");
- return new X.ExtendRule(value, optional, t1.spanFrom$1(start));
- case "for":
- return _this._forRule$2(start, child);
- case "forward":
- _this._isUseAllowed = wasUseAllowed;
- if (!root)
- _this._disallowedAtRule$1(start);
- return _this._forwardRule$1(start);
- case "function":
- return _this._functionRule$1(start);
- case "if":
- return _this._ifRule$2(start, child);
- case "import":
- return _this._importRule$1(start);
- case "include":
- return _this._includeRule$1(start);
- case "media":
- return _this.mediaRule$1(start);
- case "mixin":
- return _this._mixinRule$1(start);
- case "-moz-document":
- return _this.mozDocumentRule$2(start, $name);
- case "return":
- return _this._disallowedAtRule$1(start);
- case "supports":
- return _this.supportsRule$1(start);
- case "use":
- _this._isUseAllowed = wasUseAllowed;
- if (!root)
- _this._disallowedAtRule$1(start);
- return _this._useRule$1(start);
- case "warn":
- return _this._warnRule$1(start);
- case "while":
- return _this._whileRule$2(start, child);
- default:
- return _this.unknownAtRule$2(start, $name);
- }
- },
- _declarationAtRule$0: function() {
- var _this = this,
- t1 = _this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- switch (_this._plainAtRuleName$0()) {
- case "content":
- return _this._contentRule$1(start);
- case "debug":
- return _this._debugRule$1(start);
- case "each":
- return _this._eachRule$2(start, _this.get$_declarationChild());
- case "else":
- return _this._disallowedAtRule$1(start);
- case "error":
- return _this._errorRule$1(start);
- case "for":
- return _this._forRule$2(start, _this.get$_declarationAtRule());
- case "if":
- return _this._ifRule$2(start, _this.get$_declarationChild());
- case "include":
- return _this._includeRule$1(start);
- case "warn":
- return _this._warnRule$1(start);
- case "while":
- return _this._whileRule$2(start, _this.get$_declarationChild());
- default:
- return _this._disallowedAtRule$1(start);
- }
- },
- _functionChild$0: function() {
- var state, variableDeclarationError, statement, t2, exception, start, value, _this = this,
- t1 = _this.scanner;
- if (t1.peekChar$0() !== 64) {
- state = new S._SpanScannerState(t1, t1._string_scanner$_position);
- try {
- t2 = _this._variableDeclarationWithNamespace$0();
- return t2;
- } catch (exception) {
- t2 = H.unwrapException(exception);
- if (!!J.getInterceptor$(t2).$isSourceSpanFormatException) {
- variableDeclarationError = t2;
- t1.set$state(state);
- statement = null;
- try {
- statement = _this._declarationOrStyleRule$0();
- } catch (exception) {
- if (!!J.getInterceptor$(H.unwrapException(exception)).$isSourceSpanFormatException)
- throw H.wrapException(variableDeclarationError);
- else
- throw exception;
- }
- _this.error$2("@function rules may not contain " + (statement instanceof X.StyleRule ? "style rules" : "declarations") + ".", statement.get$span());
- } else
- throw exception;
- }
- }
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- switch (_this._plainAtRuleName$0()) {
- case "debug":
- return _this._debugRule$1(start);
- case "each":
- return _this._eachRule$2(start, _this.get$_functionChild());
- case "else":
- return _this._disallowedAtRule$1(start);
- case "error":
- return _this._errorRule$1(start);
- case "for":
- return _this._forRule$2(start, _this.get$_functionChild());
- case "if":
- return _this._ifRule$2(start, _this.get$_functionChild());
- case "return":
- value = _this.expression$0();
- _this.expectStatementSeparator$1("@return rule");
- return new B.ReturnRule(value, t1.spanFrom$1(start));
- case "warn":
- return _this._warnRule$1(start);
- case "while":
- return _this._whileRule$2(start, _this.get$_functionChild());
- default:
- return _this._disallowedAtRule$1(start);
- }
- },
- _plainAtRuleName$0: function() {
- this.scanner.expectChar$2$name(64, "@-rule");
- var $name = this.identifier$0();
- this.whitespace$0();
- return $name;
- },
- _atRootRule$1: function(start) {
- var query, t2, t3, _this = this,
- t1 = _this.scanner;
- if (t1.peekChar$0() === 40) {
- query = _this._atRootQuery$0();
- _this.whitespace$0();
- return _this._withChildren$3(_this.get$_statement(), start, new V.StylesheetParser__atRootRule_closure(query));
- } else if (_this.lookingAtChildren$0())
- return _this._withChildren$3(_this.get$_statement(), start, new V.StylesheetParser__atRootRule_closure0());
- else {
- t2 = O.Statement;
- t3 = H.setRuntimeTypeInfo([_this._stylesheet$_styleRule$0()], [t2]);
- t1 = t1.spanFrom$1(start);
- t2 = P.List_List$unmodifiable(t3, t2);
- t3 = C.JSArray_methods.any$1(t2, new M.ParentStatement_closure());
- return new V.AtRootRule(null, t1, t2, t3);
- }
- },
- _atRootQuery$0: function() {
- var interpolation, t2, t3, t4, buffer, t5, _this = this,
- t1 = _this.scanner;
- if (t1.peekChar$0() === 35) {
- interpolation = _this.singleInterpolation$0();
- return X.Interpolation$(H.setRuntimeTypeInfo([interpolation], [P.Object]), interpolation.get$span());
- }
- t2 = t1._string_scanner$_position;
- t3 = new P.StringBuffer("");
- t4 = [];
- buffer = new Z.InterpolationBuffer(t3, t4);
- t1.expectChar$1(40);
- t3._contents += H.Primitives_stringFromCharCode(40);
- _this.whitespace$0();
- t5 = _this.expression$0();
- buffer._flushText$0();
- t4.push(t5);
- if (t1.scanChar$1(58)) {
- _this.whitespace$0();
- t3._contents += H.Primitives_stringFromCharCode(58);
- t3._contents += H.Primitives_stringFromCharCode(32);
- t5 = _this.expression$0();
- buffer._flushText$0();
- t4.push(t5);
- }
- t1.expectChar$1(41);
- _this.whitespace$0();
- t3._contents += H.Primitives_stringFromCharCode(41);
- return buffer.interpolation$1(t1.spanFrom$1(new S._SpanScannerState(t1, t2)));
- },
- _contentRule$1: function(start) {
- var t1, $arguments, t2, t3, _this = this;
- if (!_this._stylesheet$_inMixin)
- _this.error$2("@content is only allowed within mixin declarations.", _this.scanner.spanFrom$1(start));
- _this.whitespace$0();
- t1 = _this.scanner;
- if (t1.peekChar$0() === 40)
- $arguments = _this._argumentInvocation$1$mixin(true);
- else {
- t2 = Y.FileLocation$_(t1._sourceFile, t1._string_scanner$_position);
- t3 = t2.offset;
- $arguments = new X.ArgumentInvocation(C.List_empty8, C.Map_empty3, null, null, Y._FileSpan$(t2.file, t3, t3));
- }
- _this._mixinHasContent = true;
- _this.expectStatementSeparator$1("@content rule");
- return new Q.ContentRule(t1.spanFrom$1(start), $arguments);
- },
- _debugRule$1: function(start) {
- var value = this.expression$0();
- this.expectStatementSeparator$1("@debug rule");
- return new Q.DebugRule(value, this.scanner.spanFrom$1(start));
- },
- _eachRule$2: function(start, child) {
- var variables, t1, _this = this,
- wasInControlDirective = _this._inControlDirective;
- _this._inControlDirective = true;
- variables = H.setRuntimeTypeInfo([_this.variableName$0()], [P.String]);
- _this.whitespace$0();
- for (t1 = _this.scanner; t1.scanChar$1(44);) {
- _this.whitespace$0();
- t1.expectChar$1(36);
- variables.push(_this.identifier$1$normalize(true));
- _this.whitespace$0();
- }
- _this.expectIdentifier$1("in");
- _this.whitespace$0();
- return _this._withChildren$3(child, start, new V.StylesheetParser__eachRule_closure(_this, wasInControlDirective, variables, _this.expression$0()));
- },
- _errorRule$1: function(start) {
- var value = this.expression$0();
- this.expectStatementSeparator$1("@error rule");
- return new D.ErrorRule(value, this.scanner.spanFrom$1(start));
- },
- _functionRule$1: function(start) {
- var $name, $arguments, _this = this,
- precedingComment = _this.lastSilentComment;
- _this.lastSilentComment = null;
- $name = _this.identifier$1$normalize(true);
- _this.whitespace$0();
- $arguments = _this._argumentDeclaration$0();
- if (_this._stylesheet$_inMixin || _this._inContentBlock)
- _this.error$2("Mixins may not contain function declarations.", _this.scanner.spanFrom$1(start));
- else if (_this._inControlDirective)
- _this.error$2("Functions may not be declared in control directives.", _this.scanner.spanFrom$1(start));
- switch (B.unvendor($name)) {
- case "calc":
- case "element":
- case "expression":
- case "url":
- case "and":
- case "or":
- case "not":
- _this.error$2("Invalid function name.", _this.scanner.spanFrom$1(start));
- break;
- }
- _this.whitespace$0();
- return _this._withChildren$3(_this.get$_functionChild(), start, new V.StylesheetParser__functionRule_closure($name, $arguments, precedingComment));
- },
- _forRule$2: function(start, child) {
- var variable, from, _this = this, t1 = {},
- wasInControlDirective = _this._inControlDirective;
- _this._inControlDirective = true;
- variable = _this.variableName$0();
- _this.whitespace$0();
- _this.expectIdentifier$1("from");
- _this.whitespace$0();
- t1.exclusive = null;
- from = _this.expression$1$until(new V.StylesheetParser__forRule_closure(t1, _this));
- if (t1.exclusive == null)
- _this.scanner.error$1('Expected "to" or "through".');
- _this.whitespace$0();
- return _this._withChildren$3(child, start, new V.StylesheetParser__forRule_closure0(t1, _this, wasInControlDirective, variable, from, _this.expression$0()));
- },
- _forwardRule$1: function(start) {
- var prefix, members, shownMixinsAndFunctions, shownVariables, hiddenVariables, hiddenMixinsAndFunctions, configuration, span, t1, t2, t3, t4, _this = this, _null = null,
- url = _this._urlString$0();
- _this.whitespace$0();
- if (_this.scanIdentifier$1("as")) {
- _this.whitespace$0();
- prefix = _this.identifier$1$normalize(true);
- _this.scanner.expectChar$1(42);
- _this.whitespace$0();
- } else
- prefix = _null;
- if (_this.scanIdentifier$1("show")) {
- members = _this._memberList$0();
- shownMixinsAndFunctions = members.item1;
- shownVariables = members.item2;
- hiddenVariables = _null;
- hiddenMixinsAndFunctions = hiddenVariables;
- } else {
- if (_this.scanIdentifier$1("hide")) {
- members = _this._memberList$0();
- hiddenMixinsAndFunctions = members.item1;
- hiddenVariables = members.item2;
- } else {
- hiddenVariables = _null;
- hiddenMixinsAndFunctions = hiddenVariables;
- }
- shownVariables = _null;
- shownMixinsAndFunctions = shownVariables;
- }
- configuration = _this._stylesheet$_configuration$1$allowGuarded(true);
- _this.expectStatementSeparator$1("@forward rule");
- span = _this.scanner.spanFrom$1(start);
- if (!_this._isUseAllowed)
- _this.error$2("@forward rules must be written before any other rules.", span);
- if (shownMixinsAndFunctions != null) {
- t1 = P.String;
- t2 = P.LinkedHashSet_LinkedHashSet$of(shownMixinsAndFunctions, t1);
- t3 = [t1];
- t1 = P.LinkedHashSet_LinkedHashSet$of(shownVariables, t1);
- t4 = configuration == null ? C.List_empty7 : P.List_List$unmodifiable(configuration, Z.ConfiguredVariable);
- return new L.ForwardRule(url, new L.UnmodifiableSetView(t2, t3), new L.UnmodifiableSetView(t1, t3), _null, _null, prefix, t4, span);
- } else if (hiddenMixinsAndFunctions != null) {
- t1 = P.String;
- t2 = P.LinkedHashSet_LinkedHashSet$of(hiddenMixinsAndFunctions, t1);
- t3 = [t1];
- t1 = P.LinkedHashSet_LinkedHashSet$of(hiddenVariables, t1);
- t4 = configuration == null ? C.List_empty7 : P.List_List$unmodifiable(configuration, Z.ConfiguredVariable);
- return new L.ForwardRule(url, _null, _null, new L.UnmodifiableSetView(t2, t3), new L.UnmodifiableSetView(t1, t3), prefix, t4, span);
- } else
- return new L.ForwardRule(url, _null, _null, _null, _null, prefix, configuration == null ? C.List_empty7 : P.List_List$unmodifiable(configuration, Z.ConfiguredVariable), span);
- },
- _memberList$0: function() {
- var _this = this,
- t1 = P.String,
- identifiers = P.LinkedHashSet_LinkedHashSet$_empty(t1),
- variables = P.LinkedHashSet_LinkedHashSet$_empty(t1);
- t1 = _this.scanner;
- do {
- _this.whitespace$0();
- _this.withErrorMessage$2("Expected variable, mixin, or function name", new V.StylesheetParser__memberList_closure(_this, variables, identifiers));
- _this.whitespace$0();
- } while (t1.scanChar$1(44));
- t1 = [P.Set, P.String];
- return new S.Tuple2(identifiers, variables, [t1, t1]);
- },
- _ifRule$2: function(start, child) {
- var condition, children, t1, t2, t3, clauses, lastClause, result, t4, span, _this = this,
- ifIndentation = _this.get$currentIndentation(),
- wasInControlDirective = _this._inControlDirective;
- _this._inControlDirective = true;
- condition = _this.expression$0();
- children = _this.children$1(child);
- _this.whitespaceWithoutComments$0();
- t1 = O.Statement;
- t2 = P.List_List$unmodifiable(children, t1);
- t3 = V.IfClause;
- clauses = H.setRuntimeTypeInfo([new V.IfClause(condition, t2, C.JSArray_methods.any$1(t2, new V.IfClause$__closure()))], [t3]);
- while (true) {
- if (!_this.scanElse$1(ifIndentation)) {
- lastClause = null;
- break;
- }
- _this.whitespace$0();
- if (_this.scanIdentifier$1("if")) {
- _this.whitespace$0();
- t2 = _this.expression$0();
- result = P.List_List$from(_this.children$1(child), false, t1);
- result.fixed$length = Array;
- result.immutable$list = Array;
- t4 = result;
- clauses.push(new V.IfClause(t2, t4, C.JSArray_methods.any$1(t4, new V.IfClause$__closure())));
- } else {
- result = P.List_List$from(_this.children$1(child), false, t1);
- result.fixed$length = Array;
- result.immutable$list = Array;
- t1 = result;
- lastClause = new V.IfClause(null, t1, C.JSArray_methods.any$1(t1, new V.IfClause$__closure()));
- break;
- }
- }
- _this._inControlDirective = wasInControlDirective;
- span = _this.scanner.spanFrom$1(start);
- _this.whitespaceWithoutComments$0();
- return new V.IfRule(P.List_List$unmodifiable(clauses, t3), lastClause, span);
- },
- _importRule$1: function(start) {
- var argument, _this = this,
- t1 = F.Import,
- imports = H.setRuntimeTypeInfo([], [t1]),
- t2 = _this.scanner;
- do {
- _this.whitespace$0();
- argument = _this.importArgument$0();
- if ((_this._inControlDirective || _this._stylesheet$_inMixin) && argument instanceof B.DynamicImport)
- _this._disallowedAtRule$1(start);
- imports.push(argument);
- _this.whitespace$0();
- } while (t2.scanChar$1(44));
- _this.expectStatementSeparator$1("@import rule");
- t2 = t2.spanFrom$1(start);
- return new B.ImportRule(P.List_List$unmodifiable(imports, t1), t2);
- },
- importArgument$0: function() {
- var url, urlSpan, innerError, queries, t2, t3, t4, exception, _this = this, _null = null,
- t1 = _this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position),
- next = t1.peekChar$0();
- if (next === 117 || next === 85) {
- url = _this.dynamicUrl$0();
- _this.whitespace$0();
- queries = _this.tryImportQueries$0();
- t2 = X.Interpolation$(H.setRuntimeTypeInfo([url], [P.Object]), t1.spanFrom$1(start));
- t1 = t1.spanFrom$1(start);
- t3 = queries == null;
- t4 = t3 ? _null : queries.item1;
- return new Q.StaticImport(t2, t4, t3 ? _null : queries.item2, t1);
- }
- url = _this.string$0();
- urlSpan = t1.spanFrom$1(start);
- _this.whitespace$0();
- queries = _this.tryImportQueries$0();
- if (_this.isPlainImportUrl$1(url) || queries != null) {
- t2 = urlSpan;
- t2 = X.Interpolation$(H.setRuntimeTypeInfo([P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(t2.file._decodedChars, t2._start, t2._file$_end), 0, _null)], [P.Object]), urlSpan);
- t1 = t1.spanFrom$1(start);
- t3 = queries == null;
- t4 = t3 ? _null : queries.item1;
- return new Q.StaticImport(t2, t4, t3 ? _null : queries.item2, t1);
- } else
- try {
- t1 = _this.parseImportUrl$1(url);
- return new B.DynamicImport(t1, urlSpan);
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (!!J.getInterceptor$(t1).$isFormatException) {
- innerError = t1;
- _this.error$2("Invalid URL: " + H.S(J.get$message$x(innerError)), urlSpan);
- } else
- throw exception;
- }
- },
- parseImportUrl$1: function(url) {
- var t1 = $.$get$windows();
- if (t1.style.rootLength$1(url) > 0)
- return J.toString$0$(t1.toUri$1(url));
- P.Uri_parse(url);
- return url;
- },
- isPlainImportUrl$1: function(url) {
- var first;
- if (url.length < 5)
- return false;
- if (C.JSString_methods.endsWith$1(url, ".css"))
- return true;
- first = C.JSString_methods._codeUnitAt$1(url, 0);
- if (first === 47)
- return C.JSString_methods._codeUnitAt$1(url, 1) === 47;
- if (first !== 104)
- return false;
- return C.JSString_methods.startsWith$1(url, "http://") || C.JSString_methods.startsWith$1(url, "https://");
- },
- tryImportQueries$0: function() {
- var t1, start, supports, $name, media, _this = this;
- if (_this.scanIdentifier$1("supports")) {
- t1 = _this.scanner;
- t1.expectChar$1(40);
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- if (_this.scanIdentifier$1("not")) {
- _this.whitespace$0();
- supports = new M.SupportsNegation(_this._supportsConditionInParens$0(), t1.spanFrom$1(start));
- } else if (t1.peekChar$0() === 40)
- supports = _this._supportsCondition$0();
- else {
- $name = _this.expression$0();
- t1.expectChar$1(58);
- _this.whitespace$0();
- supports = new L.SupportsDeclaration($name, _this.expression$0(), t1.spanFrom$1(start));
- }
- t1.expectChar$1(41);
- _this.whitespace$0();
- } else
- supports = null;
- media = _this._lookingAtInterpolatedIdentifier$0() || _this.scanner.peekChar$0() === 40 ? _this._mediaQueryList$0() : null;
- if (supports == null && media == null)
- return;
- return new S.Tuple2(supports, media, [N.SupportsCondition, X.Interpolation]);
- },
- _includeRule$1: function(start) {
- var name0, namespace, $arguments, t3, t4, wasInContentBlock, $content, _this = this, _null = null, t1 = {},
- $name = _this.identifier$0(),
- t2 = _this.scanner;
- if (t2.scanChar$1(46)) {
- name0 = _this._publicIdentifier$0();
- namespace = $name;
- $name = name0;
- } else {
- $name = H.stringReplaceAllUnchecked($name, "_", "-");
- namespace = _null;
- }
- _this.whitespace$0();
- if (t2.peekChar$0() === 40)
- $arguments = _this._argumentInvocation$1$mixin(true);
- else {
- t3 = Y.FileLocation$_(t2._sourceFile, t2._string_scanner$_position);
- t4 = t3.offset;
- $arguments = new X.ArgumentInvocation(C.List_empty8, C.Map_empty3, _null, _null, Y._FileSpan$(t3.file, t4, t4));
- }
- _this.whitespace$0();
- t1.contentArguments = null;
- if (_this.scanIdentifier$1("using")) {
- _this.whitespace$0();
- t3 = t1.contentArguments = _this._argumentDeclaration$0();
- _this.whitespace$0();
- } else
- t3 = _null;
- t3 = t3 == null;
- if (!t3 || _this.lookingAtChildren$0()) {
- if (t3) {
- t3 = Y.FileLocation$_(t2._sourceFile, t2._string_scanner$_position);
- t4 = t3.offset;
- t1.contentArguments = new B.ArgumentDeclaration(C.List_empty9, _null, Y._FileSpan$(t3.file, t4, t4));
- }
- wasInContentBlock = _this._inContentBlock;
- _this._inContentBlock = true;
- $content = _this._withChildren$3(_this.get$_statement(), start, new V.StylesheetParser__includeRule_closure(t1));
- _this._inContentBlock = wasInContentBlock;
- } else {
- _this.expectStatementSeparator$0();
- $content = _null;
- }
- t1 = t2.spanFrom$2(start, start);
- return new A.IncludeRule(namespace, $name, $arguments, $content, t1.expand$1(0, ($content == null ? $arguments : $content).get$span()));
- },
- mediaRule$1: function(start) {
- return this._withChildren$3(this.get$_statement(), start, new V.StylesheetParser_mediaRule_closure(this._mediaQueryList$0()));
- },
- _mixinRule$1: function(start) {
- var $name, t1, $arguments, t2, t3, _this = this,
- precedingComment = _this.lastSilentComment;
- _this.lastSilentComment = null;
- $name = _this.identifier$1$normalize(true);
- _this.whitespace$0();
- t1 = _this.scanner;
- if (t1.peekChar$0() === 40)
- $arguments = _this._argumentDeclaration$0();
- else {
- t2 = Y.FileLocation$_(t1._sourceFile, t1._string_scanner$_position);
- t3 = t2.offset;
- $arguments = new B.ArgumentDeclaration(C.List_empty9, null, Y._FileSpan$(t2.file, t3, t3));
- }
- if (_this._stylesheet$_inMixin || _this._inContentBlock)
- _this.error$2("Mixins may not contain mixin declarations.", t1.spanFrom$1(start));
- else if (_this._inControlDirective)
- _this.error$2("Mixins may not be declared in control directives.", t1.spanFrom$1(start));
- _this.whitespace$0();
- _this._stylesheet$_inMixin = true;
- _this._mixinHasContent = false;
- return _this._withChildren$3(_this.get$_statement(), start, new V.StylesheetParser__mixinRule_closure(_this, $name, $arguments, precedingComment));
- },
- mozDocumentRule$2: function(start, $name) {
- var t5, t6, identifier, contents, argument, trailing, endPosition, start0, end, _this = this, _box_0 = {},
- t1 = _this.scanner,
- t2 = t1._string_scanner$_position,
- t3 = new P.StringBuffer(""),
- t4 = [],
- buffer = new Z.InterpolationBuffer(t3, t4);
- _box_0.needsDeprecationWarning = false;
- for (t5 = _this.get$whitespace(); true;) {
- if (t1.peekChar$0() === 35) {
- t6 = _this.singleInterpolation$0();
- buffer._flushText$0();
- t4.push(t6);
- _box_0.needsDeprecationWarning = true;
- } else {
- t6 = t1._string_scanner$_position;
- identifier = _this.identifier$0();
- switch (identifier) {
- case "url":
- case "url-prefix":
- case "domain":
- contents = _this._tryUrlContents$2$name(new S._SpanScannerState(t1, t6), identifier);
- if (contents != null)
- buffer.addInterpolation$1(contents);
- else {
- t1.expectChar$1(40);
- _this.whitespace$0();
- argument = _this.interpolatedString$0();
- t1.expectChar$1(41);
- t3._contents += identifier;
- t3._contents += H.Primitives_stringFromCharCode(40);
- buffer.addInterpolation$1(argument.asInterpolation$0());
- t3._contents += H.Primitives_stringFromCharCode(41);
- }
- t6 = t3._contents;
- trailing = t6.charCodeAt(0) == 0 ? t6 : t6;
- if (!C.JSString_methods.endsWith$1(trailing, "url-prefix()") && !C.JSString_methods.endsWith$1(trailing, "url-prefix('')") && !C.JSString_methods.endsWith$1(trailing, 'url-prefix("")'))
- _box_0.needsDeprecationWarning = true;
- break;
- case "regexp":
- t3._contents += "regexp(";
- t1.expectChar$1(40);
- buffer.addInterpolation$1(_this.interpolatedString$0().asInterpolation$0());
- t1.expectChar$1(41);
- t3._contents += H.Primitives_stringFromCharCode(41);
- _box_0.needsDeprecationWarning = true;
- break;
- default:
- endPosition = t1._string_scanner$_position;
- _this.error$2("Invalid function name.", Y._FileSpan$(t1._sourceFile, t6, endPosition));
- }
- }
- _this.whitespace$0();
- if (!t1.scanChar$1(44))
- break;
- t3._contents += H.Primitives_stringFromCharCode(44);
- start0 = t1._string_scanner$_position;
- t5.call$0();
- end = t1._string_scanner$_position;
- t3._contents += J.substring$2$s(t1.string, start0, end);
- }
- return _this._withChildren$3(_this.get$_statement(), start, new V.StylesheetParser_mozDocumentRule_closure(_box_0, _this, $name, buffer.interpolation$1(t1.spanFrom$1(new S._SpanScannerState(t1, t2)))));
- },
- supportsRule$1: function(start) {
- var _this = this,
- condition = _this._supportsCondition$0();
- _this.whitespace$0();
- return _this._withChildren$3(_this.get$_statement(), start, new V.StylesheetParser_supportsRule_closure(condition));
- },
- _useRule$1: function(start) {
- var namespace, configuration, span, _this = this,
- _s9_ = "@use rule",
- url = _this._urlString$0();
- _this.whitespace$0();
- namespace = _this._useNamespace$2(url, start);
- _this.whitespace$0();
- configuration = _this._stylesheet$_configuration$0();
- _this.expectStatementSeparator$1(_s9_);
- span = _this.scanner.spanFrom$1(start);
- if (!_this._isUseAllowed)
- _this.error$2("@use rules must be written before any other rules.", span);
- _this.expectStatementSeparator$1(_s9_);
- return T.UseRule$(url, namespace, span, configuration);
- },
- _useNamespace$2: function(url, start) {
- var namespace, basename, dot, t1, exception, _this = this;
- if (_this.scanIdentifier$1("as")) {
- _this.whitespace$0();
- return _this.scanner.scanChar$1(42) ? null : _this.identifier$0();
- }
- basename = url.get$pathSegments().length === 0 ? "" : C.JSArray_methods.get$last(url.get$pathSegments());
- dot = J.getInterceptor$asx(basename).indexOf$1(basename, ".");
- namespace = C.JSString_methods.substring$2(basename, 0, dot === -1 ? basename.length : dot);
- try {
- t1 = G.Parser$(namespace, _this.logger, null)._parseIdentifier$0();
- return t1;
- } catch (exception) {
- if (H.unwrapException(exception) instanceof E.SassFormatException)
- _this.error$2('Invalid Sass identifier "' + H.S(namespace) + '"', _this.scanner.spanFrom$1(start));
- else
- throw exception;
- }
- },
- _stylesheet$_configuration$1$allowGuarded: function(allowGuarded) {
- var variableNames, configuration, t1, t2, $name, expression, t3, guarded, endPosition, span, _this = this;
- if (!_this.scanIdentifier$1("with"))
- return;
- variableNames = P.LinkedHashSet_LinkedHashSet$_empty(P.String);
- configuration = H.setRuntimeTypeInfo([], [Z.ConfiguredVariable]);
- _this.whitespace$0();
- t1 = _this.scanner;
- t1.expectChar$1(40);
- for (; true;) {
- _this.whitespace$0();
- t2 = t1._string_scanner$_position;
- t1.expectChar$1(36);
- $name = _this.identifier$1$normalize(true);
- _this.whitespace$0();
- t1.expectChar$1(58);
- _this.whitespace$0();
- expression = _this._expressionUntilComma$0();
- t3 = t1._string_scanner$_position;
- if (allowGuarded && t1.scanChar$1(33))
- if (_this.identifier$0() === "default")
- guarded = true;
- else {
- endPosition = t1._string_scanner$_position;
- _this.error$2("Invalid flag name.", Y._FileSpan$(t1._sourceFile, t3, endPosition));
- guarded = false;
- }
- else
- guarded = false;
- endPosition = t1._string_scanner$_position;
- span = Y._FileSpan$(t1._sourceFile, t2, endPosition);
- if (variableNames.contains$1(0, $name))
- _this.error$2("The same variable may only be configured once.", span);
- variableNames.add$1(0, $name);
- configuration.push(new Z.ConfiguredVariable($name, expression, guarded, span));
- if (!t1.scanChar$1(44))
- break;
- _this.whitespace$0();
- if (!_this._lookingAtExpression$0())
- break;
- }
- t1.expectChar$1(41);
- return configuration;
- },
- _stylesheet$_configuration$0: function() {
- return this._stylesheet$_configuration$1$allowGuarded(false);
- },
- _warnRule$1: function(start) {
- var value = this.expression$0();
- this.expectStatementSeparator$1("@warn rule");
- return new Y.WarnRule(value, this.scanner.spanFrom$1(start));
- },
- _whileRule$2: function(start, child) {
- var _this = this,
- wasInControlDirective = _this._inControlDirective;
- _this._inControlDirective = true;
- return _this._withChildren$3(child, start, new V.StylesheetParser__whileRule_closure(_this, wasInControlDirective, _this.expression$0()));
- },
- unknownAtRule$2: function(start, $name) {
- var t2, t3, rule, _this = this, t1 = {},
- wasInUnknownAtRule = _this._stylesheet$_inUnknownAtRule;
- _this._stylesheet$_inUnknownAtRule = true;
- t1.value = null;
- t2 = _this.scanner;
- t3 = t2.peekChar$0() !== 33 && !_this.atEndOfStatement$0() ? t1.value = _this.almostAnyValue$0() : null;
- if (_this.lookingAtChildren$0())
- rule = _this._withChildren$3(_this.get$_statement(), start, new V.StylesheetParser_unknownAtRule_closure(t1, $name));
- else {
- _this.expectStatementSeparator$0();
- rule = U.AtRule$($name, t2.spanFrom$1(start), null, t3);
- }
- _this._stylesheet$_inUnknownAtRule = wasInUnknownAtRule;
- return rule;
- },
- _disallowedAtRule$1: function(start) {
- this.almostAnyValue$0();
- this.error$2("This at-rule is not allowed here.", this.scanner.spanFrom$1(start));
- },
- _argumentDeclaration$0: function() {
- var t3, $arguments, named, restArgument, t4, $name, defaultValue, endPosition, _this = this,
- t1 = _this.scanner,
- t2 = t1._string_scanner$_position;
- t1.expectChar$1(40);
- _this.whitespace$0();
- t3 = Z.Argument;
- $arguments = H.setRuntimeTypeInfo([], [t3]);
- named = P.LinkedHashSet_LinkedHashSet$_empty(P.String);
- while (true) {
- if (!(t1.peekChar$0() === 36)) {
- restArgument = null;
- break;
- }
- t4 = t1._string_scanner$_position;
- t1.expectChar$1(36);
- $name = _this.identifier$1$normalize(true);
- _this.whitespace$0();
- if (t1.scanChar$1(58)) {
- _this.whitespace$0();
- defaultValue = _this._expressionUntilComma$0();
- } else {
- if (t1.scanChar$1(46)) {
- t1.expectChar$1(46);
- t1.expectChar$1(46);
- _this.whitespace$0();
- restArgument = $name;
- break;
- }
- defaultValue = null;
- }
- endPosition = t1._string_scanner$_position;
- $arguments.push(new Z.Argument($name, defaultValue, Y._FileSpan$(t1._sourceFile, t4, endPosition)));
- if (!named.add$1(0, $name))
- _this.error$2("Duplicate argument.", C.JSArray_methods.get$last($arguments).span);
- if (!t1.scanChar$1(44)) {
- restArgument = null;
- break;
- }
- _this.whitespace$0();
- }
- t1.expectChar$1(41);
- t1 = t1.spanFrom$1(new S._SpanScannerState(t1, t2));
- return new B.ArgumentDeclaration(P.List_List$unmodifiable($arguments, t3), restArgument, t1);
- },
- _argumentInvocation$1$mixin: function(mixin) {
- var t3, positional, named, keywordRest, rest, expression, t4, _this = this,
- t1 = _this.scanner,
- t2 = t1._string_scanner$_position;
- t1.expectChar$1(40);
- _this.whitespace$0();
- t3 = T.Expression;
- positional = H.setRuntimeTypeInfo([], [t3]);
- named = P.LinkedHashMap_LinkedHashMap$_empty(P.String, t3);
- t3 = !mixin;
- rest = null;
- while (true) {
- if (!_this._lookingAtExpression$0()) {
- keywordRest = null;
- break;
- }
- expression = _this._expressionUntilComma$1$singleEquals(t3);
- _this.whitespace$0();
- if (expression instanceof S.VariableExpression && t1.scanChar$1(58)) {
- _this.whitespace$0();
- t4 = expression.name;
- if (named.containsKey$1(t4))
- _this.error$2("Duplicate argument.", expression.span);
- named.$indexSet(0, t4, _this._expressionUntilComma$1$singleEquals(t3));
- } else if (t1.scanChar$1(46)) {
- t1.expectChar$1(46);
- t1.expectChar$1(46);
- if (rest != null) {
- _this.whitespace$0();
- keywordRest = expression;
- break;
- }
- rest = expression;
- } else if (named.get$isNotEmpty(named))
- t1.expect$1("...");
- else
- positional.push(expression);
- _this.whitespace$0();
- if (!t1.scanChar$1(44)) {
- keywordRest = null;
- break;
- }
- _this.whitespace$0();
- }
- t1.expectChar$1(41);
- return X.ArgumentInvocation$(positional, named, t1.spanFrom$1(new S._SpanScannerState(t1, t2)), keywordRest, rest);
- },
- _argumentInvocation$0: function() {
- return this._argumentInvocation$1$mixin(false);
- },
- expression$3$bracketList$singleEquals$until: function(bracketList, singleEquals, until) {
- var t2, beforeBracket, t3, wasInParentheses, resetState, resolveOneOperation, resolveOperations, addSingleExpression, addOperator, resolveSpaceExpressions, t4, first, next, t5, _this = this,
- _s20_ = "Expected expression.",
- _box_0 = {},
- t1 = until != null;
- if (t1 && until.call$0())
- _this.scanner.error$1(_s20_);
- if (bracketList) {
- t2 = _this.scanner;
- beforeBracket = new S._SpanScannerState(t2, t2._string_scanner$_position);
- t2.expectChar$1(91);
- _this.whitespace$0();
- if (t2.scanChar$1(93)) {
- t1 = T.Expression;
- t3 = H.setRuntimeTypeInfo([], [t1]);
- t2 = t2.spanFrom$1(beforeBracket);
- t1 = P.List_List$unmodifiable(t3, t1);
- return new D.ListExpression(t1, C.ListSeparator_undecided, true, t2);
- }
- } else
- beforeBracket = null;
- t2 = _this.scanner;
- t3 = t2._string_scanner$_position;
- wasInParentheses = _this._inParentheses;
- _box_0.operands = _box_0.operators = _box_0.spaceExpressions = _box_0.singleEqualsOperand = _box_0.commaExpressions = null;
- _box_0.allowSlash = _this.lookingAtNumber$0();
- _box_0.singleExpression = _this._singleExpression$0();
- resetState = new V.StylesheetParser_expression_resetState(_box_0, _this, new S._SpanScannerState(t2, t3));
- resolveOneOperation = new V.StylesheetParser_expression_resolveOneOperation(_box_0, _this);
- resolveOperations = new V.StylesheetParser_expression_resolveOperations(_box_0, resolveOneOperation);
- addSingleExpression = new V.StylesheetParser_expression_addSingleExpression(_box_0, _this, resetState, resolveOperations);
- addOperator = new V.StylesheetParser_expression_addOperator(_box_0, _this, resolveOneOperation);
- resolveSpaceExpressions = new V.StylesheetParser_expression_resolveSpaceExpressions(_box_0, resolveOperations);
- $label0$0:
- for (t3 = T.Expression, t4 = [t3]; true;) {
- _this.whitespace$0();
- if (t1 && until.call$0())
- break $label0$0;
- first = t2.peekChar$0();
- switch (first) {
- case 40:
- addSingleExpression.call$1(_this._parentheses$0());
- break;
- case 91:
- addSingleExpression.call$1(_this.expression$1$bracketList(true));
- break;
- case 36:
- addSingleExpression.call$1(_this._variable$0());
- break;
- case 38:
- addSingleExpression.call$1(_this._selector$0());
- break;
- case 39:
- case 34:
- addSingleExpression.call$1(_this.interpolatedString$0());
- break;
- case 35:
- addSingleExpression.call$1(_this._hashExpression$0());
- break;
- case 61:
- t2.readChar$0();
- if (singleEquals && t2.peekChar$0() !== 61) {
- resolveSpaceExpressions.call$0();
- _box_0.singleEqualsOperand = _box_0.singleExpression;
- _box_0.singleExpression = null;
- } else {
- t2.expectChar$1(61);
- addOperator.call$1(C.BinaryOperator_YlX);
- }
- break;
- case 33:
- next = t2.peekChar$1(1);
- if (next === 61) {
- t2.readChar$0();
- t2.readChar$0();
- addOperator.call$1(C.BinaryOperator_i5H);
- } else {
- if (next != null)
- if ((next | 32) !== 105)
- t5 = next === 32 || next === 9 || next === 10 || next === 13 || next === 12;
- else
- t5 = true;
- else
- t5 = true;
- if (t5)
- addSingleExpression.call$1(_this._importantExpression$0());
- else
- break $label0$0;
- }
- break;
- case 60:
- t2.readChar$0();
- addOperator.call$1(t2.scanChar$1(61) ? C.BinaryOperator_33h : C.BinaryOperator_8qt);
- break;
- case 62:
- t2.readChar$0();
- addOperator.call$1(t2.scanChar$1(61) ? C.BinaryOperator_1da : C.BinaryOperator_AcR0);
- break;
- case 42:
- t2.readChar$0();
- addOperator.call$1(C.BinaryOperator_O1M);
- break;
- case 43:
- if (_box_0.singleExpression == null)
- addSingleExpression.call$1(_this._unaryOperation$0());
- else {
- t2.readChar$0();
- addOperator.call$1(C.BinaryOperator_AcR);
- }
- break;
- case 45:
- next = t2.peekChar$1(1);
- if (next != null && next >= 48 && next <= 57 || next === 46)
- if (_box_0.singleExpression != null) {
- t5 = t2.peekChar$1(-1);
- t5 = t5 === 32 || t5 === 9 || t5 === 10 || t5 === 13 || t5 === 12;
- } else
- t5 = true;
- else
- t5 = false;
- if (t5)
- addSingleExpression.call$2$number(_this._number$0(), true);
- else if (_this._lookingAtInterpolatedIdentifier$0())
- addSingleExpression.call$1(_this.identifierLike$0());
- else if (_box_0.singleExpression == null)
- addSingleExpression.call$1(_this._unaryOperation$0());
- else {
- t2.readChar$0();
- addOperator.call$1(C.BinaryOperator_iyO);
- }
- break;
- case 47:
- if (_box_0.singleExpression == null)
- addSingleExpression.call$1(_this._unaryOperation$0());
- else {
- t2.readChar$0();
- addOperator.call$1(C.BinaryOperator_RTB);
- }
- break;
- case 37:
- t2.readChar$0();
- addOperator.call$1(C.BinaryOperator_2ad);
- break;
- case 48:
- case 49:
- case 50:
- case 51:
- case 52:
- case 53:
- case 54:
- case 55:
- case 56:
- case 57:
- addSingleExpression.call$2$number(_this._number$0(), true);
- break;
- case 46:
- if (t2.peekChar$1(1) === 46)
- break $label0$0;
- addSingleExpression.call$2$number(_this._number$0(), true);
- break;
- case 97:
- if (!_this.get$plainCss() && _this.scanIdentifier$1("and"))
- addOperator.call$1(C.BinaryOperator_and_and_2);
- else
- addSingleExpression.call$1(_this.identifierLike$0());
- break;
- case 111:
- if (!_this.get$plainCss() && _this.scanIdentifier$1("or"))
- addOperator.call$1(C.BinaryOperator_or_or_1);
- else
- addSingleExpression.call$1(_this.identifierLike$0());
- break;
- case 117:
- case 85:
- if (t2.peekChar$1(1) === 43)
- addSingleExpression.call$1(_this._unicodeRange$0());
- else
- addSingleExpression.call$1(_this.identifierLike$0());
- break;
- case 98:
- case 99:
- case 100:
- case 101:
- case 102:
- case 103:
- case 104:
- case 105:
- case 106:
- case 107:
- case 108:
- case 109:
- case 110:
- case 112:
- case 113:
- case 114:
- case 115:
- case 116:
- case 118:
- case 119:
- case 120:
- case 121:
- case 122:
- case 65:
- case 66:
- case 67:
- case 68:
- case 69:
- case 70:
- case 71:
- case 72:
- case 73:
- case 74:
- case 75:
- case 76:
- case 77:
- case 78:
- case 79:
- case 80:
- case 81:
- case 82:
- case 83:
- case 84:
- case 86:
- case 87:
- case 88:
- case 89:
- case 90:
- case 95:
- case 92:
- addSingleExpression.call$1(_this.identifierLike$0());
- break;
- case 44:
- if (_this._inParentheses) {
- _this._inParentheses = false;
- if (_box_0.allowSlash) {
- resetState.call$0();
- break;
- }
- }
- if (_box_0.commaExpressions == null)
- _box_0.commaExpressions = H.setRuntimeTypeInfo([], t4);
- if (_box_0.singleExpression == null)
- t2.error$1(_s20_);
- resolveSpaceExpressions.call$0();
- _box_0.commaExpressions.push(_box_0.singleExpression);
- t2.readChar$0();
- _box_0.allowSlash = true;
- _box_0.singleExpression = null;
- break;
- default:
- if (first != null && first >= 128) {
- addSingleExpression.call$1(_this.identifierLike$0());
- break;
- } else
- break $label0$0;
- }
- }
- if (bracketList)
- t2.expectChar$1(93);
- if (_box_0.commaExpressions != null) {
- resolveSpaceExpressions.call$0();
- _this._inParentheses = wasInParentheses;
- t1 = _box_0.singleExpression;
- if (t1 != null)
- _box_0.commaExpressions.push(t1);
- t1 = _box_0.commaExpressions;
- t2 = bracketList ? t2.spanFrom$1(beforeBracket) : null;
- t3 = P.List_List$unmodifiable(t1, t3);
- return new D.ListExpression(t3, C.ListSeparator_comma, bracketList, t2 == null ? B.spanForList(t3) : t2);
- } else if (bracketList && _box_0.spaceExpressions != null && _box_0.singleEqualsOperand == null) {
- resolveOperations.call$0();
- t1 = _box_0.spaceExpressions;
- t1.push(_box_0.singleExpression);
- t2 = t2.spanFrom$1(beforeBracket);
- t3 = P.List_List$unmodifiable(t1, t3);
- return new D.ListExpression(t3, C.ListSeparator_space, true, t2);
- } else {
- resolveSpaceExpressions.call$0();
- if (bracketList) {
- t1 = H.setRuntimeTypeInfo([_box_0.singleExpression], t4);
- t2 = t2.spanFrom$1(beforeBracket);
- t3 = P.List_List$unmodifiable(t1, t3);
- _box_0.singleExpression = new D.ListExpression(t3, C.ListSeparator_undecided, true, t2);
- }
- return _box_0.singleExpression;
- }
- },
- expression$0: function() {
- return this.expression$3$bracketList$singleEquals$until(false, false, null);
- },
- expression$2$singleEquals$until: function(singleEquals, until) {
- return this.expression$3$bracketList$singleEquals$until(false, singleEquals, until);
- },
- expression$1$bracketList: function(bracketList) {
- return this.expression$3$bracketList$singleEquals$until(bracketList, false, null);
- },
- expression$1$singleEquals: function(singleEquals) {
- return this.expression$3$bracketList$singleEquals$until(false, singleEquals, null);
- },
- expression$1$until: function(until) {
- return this.expression$3$bracketList$singleEquals$until(false, false, until);
- },
- _expressionUntilComma$1$singleEquals: function(singleEquals) {
- return this.expression$2$singleEquals$until(singleEquals, new V.StylesheetParser__expressionUntilComma_closure(this));
- },
- _expressionUntilComma$0: function() {
- return this._expressionUntilComma$1$singleEquals(false);
- },
- _singleExpression$0: function() {
- var next, _this = this,
- t1 = _this.scanner,
- first = t1.peekChar$0();
- switch (first) {
- case 40:
- return _this._parentheses$0();
- case 47:
- return _this._unaryOperation$0();
- case 46:
- return _this._number$0();
- case 91:
- return _this.expression$1$bracketList(true);
- case 36:
- return _this._variable$0();
- case 38:
- return _this._selector$0();
- case 39:
- case 34:
- return _this.interpolatedString$0();
- case 35:
- return _this._hashExpression$0();
- case 43:
- next = t1.peekChar$1(1);
- return T.isDigit(next) || next === 46 ? _this._number$0() : _this._unaryOperation$0();
- case 45:
- return _this._minusExpression$0();
- case 33:
- return _this._importantExpression$0();
- case 117:
- case 85:
- if (t1.peekChar$1(1) === 43)
- return _this._unicodeRange$0();
- else
- return _this.identifierLike$0();
- case 48:
- case 49:
- case 50:
- case 51:
- case 52:
- case 53:
- case 54:
- case 55:
- case 56:
- case 57:
- return _this._number$0();
- case 97:
- case 98:
- case 99:
- case 100:
- case 101:
- case 102:
- case 103:
- case 104:
- case 105:
- case 106:
- case 107:
- case 108:
- case 109:
- case 110:
- case 111:
- case 112:
- case 113:
- case 114:
- case 115:
- case 116:
- case 118:
- case 119:
- case 120:
- case 121:
- case 122:
- case 65:
- case 66:
- case 67:
- case 68:
- case 69:
- case 70:
- case 71:
- case 72:
- case 73:
- case 74:
- case 75:
- case 76:
- case 77:
- case 78:
- case 79:
- case 80:
- case 81:
- case 82:
- case 83:
- case 84:
- case 86:
- case 87:
- case 88:
- case 89:
- case 90:
- case 95:
- case 92:
- return _this.identifierLike$0();
- default:
- if (first != null && first >= 128)
- return _this.identifierLike$0();
- t1.error$1("Expected expression.");
- }
- },
- _parentheses$0: function() {
- var wasInParentheses, start, first, expressions, t1, t2, t3, _this = this;
- if (_this.get$plainCss())
- _this.scanner.error$2$length("Parentheses aren't allowed in plain CSS.", 1);
- wasInParentheses = _this._inParentheses;
- _this._inParentheses = true;
- try {
- t1 = _this.scanner;
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- t1.expectChar$1(40);
- _this.whitespace$0();
- if (!_this._lookingAtExpression$0()) {
- t1.expectChar$1(41);
- t2 = T.Expression;
- t3 = H.setRuntimeTypeInfo([], [t2]);
- t1 = t1.spanFrom$1(start);
- t2 = P.List_List$unmodifiable(t3, t2);
- return new D.ListExpression(t2, C.ListSeparator_undecided, false, t1);
- }
- first = _this._expressionUntilComma$0();
- if (t1.scanChar$1(58)) {
- _this.whitespace$0();
- t1 = _this._stylesheet$_map$2(first, start);
- return t1;
- }
- if (!t1.scanChar$1(44)) {
- t1.expectChar$1(41);
- t1 = t1.spanFrom$1(start);
- return new T.ParenthesizedExpression(first, t1);
- }
- _this.whitespace$0();
- t2 = T.Expression;
- expressions = H.setRuntimeTypeInfo([first], [t2]);
- for (; true;) {
- if (!_this._lookingAtExpression$0())
- break;
- J.add$1$ax(expressions, _this._expressionUntilComma$0());
- if (!t1.scanChar$1(44))
- break;
- _this.whitespace$0();
- }
- t1.expectChar$1(41);
- t1 = t1.spanFrom$1(start);
- t2 = P.List_List$unmodifiable(expressions, t2);
- return new D.ListExpression(t2, C.ListSeparator_comma, false, t1);
- } finally {
- _this._inParentheses = wasInParentheses;
- }
- },
- _stylesheet$_map$2: function(first, start) {
- var t2, pairs, t3, key, _this = this,
- t1 = T.Expression;
- t1 = [t1, t1];
- t2 = [S.Tuple2, T.Expression, T.Expression];
- pairs = H.setRuntimeTypeInfo([new S.Tuple2(first, _this._expressionUntilComma$0(), t1)], [t2]);
- for (t3 = _this.scanner; t3.scanChar$1(44);) {
- _this.whitespace$0();
- if (!_this._lookingAtExpression$0())
- break;
- key = _this._expressionUntilComma$0();
- t3.expectChar$1(58);
- _this.whitespace$0();
- pairs.push(new S.Tuple2(key, _this._expressionUntilComma$0(), t1));
- }
- t3.expectChar$1(41);
- t1 = t3.spanFrom$1(start);
- return new A.MapExpression(P.List_List$unmodifiable(pairs, t2), t1);
- },
- _hashExpression$0: function() {
- var start, first, t2, identifier, buffer, _this = this,
- t1 = _this.scanner;
- if (t1.peekChar$1(1) === 123)
- return _this.identifierLike$0();
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- t1.expectChar$1(35);
- first = t1.peekChar$0();
- if (first != null && T.isDigit(first))
- return new K.ColorExpression(_this._hexColorContents$1(start));
- t2 = t1._string_scanner$_position;
- identifier = _this.interpolatedIdentifier$0();
- if (_this._isHexColor$1(identifier)) {
- t1.set$state(new S._SpanScannerState(t1, t2));
- return new K.ColorExpression(_this._hexColorContents$1(start));
- }
- t2 = new P.StringBuffer("");
- buffer = new Z.InterpolationBuffer(t2, []);
- t2._contents += H.Primitives_stringFromCharCode(35);
- buffer.addInterpolation$1(identifier);
- return new D.StringExpression(buffer.interpolation$1(t1.spanFrom$1(start)), false);
- },
- _hexColorContents$1: function(start) {
- var red, green, blue, alpha, digit4, t2, t3, _this = this,
- digit1 = _this._hexDigit$0(),
- digit2 = _this._hexDigit$0(),
- digit3 = _this._hexDigit$0(),
- t1 = _this.scanner;
- if (!T.isHex(t1.peekChar$0())) {
- red = (digit1 << 4 >>> 0) + digit1;
- green = (digit2 << 4 >>> 0) + digit2;
- blue = (digit3 << 4 >>> 0) + digit3;
- alpha = 1;
- } else {
- digit4 = _this._hexDigit$0();
- t2 = digit1 << 4 >>> 0;
- t3 = digit3 << 4 >>> 0;
- if (!T.isHex(t1.peekChar$0())) {
- red = t2 + digit1;
- green = (digit2 << 4 >>> 0) + digit2;
- blue = t3 + digit3;
- alpha = ((digit4 << 4 >>> 0) + digit4) / 255;
- } else {
- red = t2 + digit2;
- green = t3 + digit4;
- blue = (_this._hexDigit$0() << 4 >>> 0) + _this._hexDigit$0();
- alpha = T.isHex(t1.peekChar$0()) ? ((_this._hexDigit$0() << 4 >>> 0) + _this._hexDigit$0()) / 255 : 1;
- }
- }
- return K.SassColor$rgb(red, green, blue, alpha, t1.spanFrom$1(start));
- },
- _isHexColor$1: function(interpolation) {
- var t1,
- plain = interpolation.get$asPlain();
- if (plain == null)
- return false;
- t1 = plain.length;
- if (t1 !== 3 && t1 !== 4 && t1 !== 6 && t1 !== 8)
- return false;
- t1 = new H.CodeUnits(plain);
- return t1.every$1(t1, T.character__isHex$closure());
- },
- _hexDigit$0: function() {
- var t1 = this.scanner,
- char = t1.peekChar$0();
- if (char == null || !T.isHex(char))
- t1.error$1("Expected hex digit.");
- return T.asHex(t1.readChar$0());
- },
- _minusExpression$0: function() {
- var _this = this,
- next = _this.scanner.peekChar$1(1);
- if (T.isDigit(next) || next === 46)
- return _this._number$0();
- if (_this._lookingAtInterpolatedIdentifier$0())
- return _this.identifierLike$0();
- return _this._unaryOperation$0();
- },
- _importantExpression$0: function() {
- var t1 = this.scanner,
- t2 = t1._string_scanner$_position;
- t1.readChar$0();
- this.whitespace$0();
- this.expectIdentifier$1("important");
- t2 = t1.spanFrom$1(new S._SpanScannerState(t1, t2));
- return new D.StringExpression(X.Interpolation$(H.setRuntimeTypeInfo(["!important"], [P.Object]), t2), false);
- },
- _unaryOperation$0: function() {
- var _this = this,
- t1 = _this.scanner,
- t2 = t1._string_scanner$_position,
- operator = _this._unaryOperatorFor$1(t1.readChar$0());
- if (operator == null)
- t1.error$2$position("Expected unary operator.", t1._string_scanner$_position - 1);
- else if (_this.get$plainCss() && operator !== C.UnaryOperator_zDx)
- t1.error$3$length$position("Operators aren't allowed in plain CSS.", 1, t1._string_scanner$_position - 1);
- _this.whitespace$0();
- return new X.UnaryOperationExpression(operator, _this._singleExpression$0(), t1.spanFrom$1(new S._SpanScannerState(t1, t2)));
- },
- _unaryOperatorFor$1: function(character) {
- switch (character) {
- case 43:
- return C.UnaryOperator_j2w;
- case 45:
- return C.UnaryOperator_U4G;
- case 47:
- return C.UnaryOperator_zDx;
- default:
- return;
- }
- },
- _number$0: function() {
- var number, t4, unit, t5, _this = this,
- t1 = _this.scanner,
- t2 = t1._string_scanner$_position,
- first = t1.peekChar$0(),
- t3 = first === 45,
- sign = t3 ? -1 : 1;
- if (first === 43 || t3)
- t1.readChar$0();
- number = t1.peekChar$0() === 46 ? 0 : _this.naturalNumber$0();
- t3 = _this._tryDecimal$1$allowTrailingDot(t1._string_scanner$_position !== t2);
- t4 = _this._tryExponent$0();
- if (t1.scanChar$1(37))
- unit = "%";
- else {
- if (_this.lookingAtIdentifier$0())
- t5 = t1.peekChar$0() !== 45 || t1.peekChar$1(1) !== 45;
- else
- t5 = false;
- unit = t5 ? _this.identifier$1$unit(true) : null;
- }
- return new T.NumberExpression(sign * ((number + t3) * t4), unit, t1.spanFrom$1(new S._SpanScannerState(t1, t2)));
- },
- _tryDecimal$1$allowTrailingDot: function(allowTrailingDot) {
- var t2,
- t1 = this.scanner,
- start = t1._string_scanner$_position;
- if (t1.peekChar$0() !== 46)
- return 0;
- if (!T.isDigit(t1.peekChar$1(1))) {
- if (allowTrailingDot)
- return 0;
- t1.error$2$position("Expected digit.", t1._string_scanner$_position + 1);
- }
- t1.readChar$0();
- while (true) {
- t2 = t1.peekChar$0();
- if (!(t2 != null && t2 >= 48 && t2 <= 57))
- break;
- t1.readChar$0();
- }
- return P.double_parse(t1.substring$1(0, start));
- },
- _tryExponent$0: function() {
- var next, t2, exponentSign, exponent,
- t1 = this.scanner,
- first = t1.peekChar$0();
- if (first !== 101 && first !== 69)
- return 1;
- next = t1.peekChar$1(1);
- if (!T.isDigit(next) && next !== 45 && next !== 43)
- return 1;
- t1.readChar$0();
- t2 = next === 45;
- exponentSign = t2 ? -1 : 1;
- if (next === 43 || t2)
- t1.readChar$0();
- if (!T.isDigit(t1.peekChar$0()))
- t1.error$1("Expected digit.");
- exponent = 0;
- while (true) {
- t2 = t1.peekChar$0();
- if (!(t2 != null && t2 >= 48 && t2 <= 57))
- break;
- exponent = exponent * 10 + (t1.readChar$0() - 48);
- }
- return Math.pow(10, exponentSign * exponent);
- },
- _unicodeRange$0: function() {
- var i, t2, j, _this = this,
- t1 = _this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- _this.expectCharIgnoreCase$1(117);
- t1.expectChar$1(43);
- for (i = 0; i < 6; ++i)
- if (!_this.scanCharIf$1(new V.StylesheetParser__unicodeRange_closure()))
- break;
- if (t1.scanChar$1(63)) {
- ++i;
- for (; i < 6; ++i)
- if (!t1.scanChar$1(63))
- break;
- t2 = t1.substring$1(0, start.position);
- t1 = t1.spanFrom$1(start);
- return new D.StringExpression(X.Interpolation$(H.setRuntimeTypeInfo([t2], [P.Object]), t1), false);
- }
- if (i === 0)
- t1.error$1('Expected hex digit or "?".');
- if (t1.scanChar$1(45)) {
- for (j = 0; j < 6; ++j)
- if (!_this.scanCharIf$1(new V.StylesheetParser__unicodeRange_closure0()))
- break;
- if (j === 0)
- t1.error$1("Expected hex digit.");
- }
- if (_this._lookingAtInterpolatedIdentifierBody$0())
- t1.error$1("Expected end of identifier.");
- t2 = t1.substring$1(0, start.position);
- t1 = t1.spanFrom$1(start);
- return new D.StringExpression(X.Interpolation$(H.setRuntimeTypeInfo([t2], [P.Object]), t1), false);
- },
- _variable$0: function() {
- var _this = this,
- t1 = _this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position),
- $name = _this.variableName$0();
- if (_this.get$plainCss())
- _this.error$2("Sass variables aren't allowed in plain CSS.", t1.spanFrom$1(start));
- return new S.VariableExpression(null, $name, t1.spanFrom$1(start));
- },
- _selector$0: function() {
- var t1, start, _this = this;
- if (_this.get$plainCss())
- _this.scanner.error$2$length("The parent selector isn't allowed in plain CSS.", 1);
- t1 = _this.scanner;
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- t1.expectChar$1(38);
- if (t1.scanChar$1(38)) {
- _this.logger.warn$2$span('In Sass, "&&" means two copies of the parent selector. You probably want to use "and" instead.', t1.spanFrom$1(start));
- t1.set$position(t1._string_scanner$_position - 1);
- }
- return new T.SelectorExpression(t1.spanFrom$1(start));
- },
- interpolatedString$0: function() {
- var t3, t4, buffer, next, second, t5,
- t1 = this.scanner,
- t2 = t1._string_scanner$_position,
- quote = t1.readChar$0();
- if (quote !== 39 && quote !== 34)
- t1.error$2$position("Expected string.", t2);
- t3 = new P.StringBuffer("");
- t4 = [];
- buffer = new Z.InterpolationBuffer(t3, t4);
- for (; true;) {
- next = t1.peekChar$0();
- if (next === quote) {
- t1.readChar$0();
- break;
- } else if (next == null || next === 10 || next === 13 || next === 12)
- t1.error$1("Expected " + H.Primitives_stringFromCharCode(quote) + ".");
- else if (next === 92) {
- second = t1.peekChar$1(1);
- if (second === 10 || second === 13 || second === 12) {
- t1.readChar$0();
- t1.readChar$0();
- if (second === 13)
- t1.scanChar$1(10);
- } else
- t3._contents += H.Primitives_stringFromCharCode(this.escapeCharacter$0());
- } else if (next === 35)
- if (t1.peekChar$1(1) === 123) {
- t5 = this.singleInterpolation$0();
- buffer._flushText$0();
- t4.push(t5);
- } else
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- else
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- }
- return new D.StringExpression(buffer.interpolation$1(t1.spanFrom$1(new S._SpanScannerState(t1, t2))), true);
- },
- identifierLike$0: function() {
- var invocation, lower, color, specialFunction, $name, _this = this,
- t1 = _this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position),
- identifier = _this.interpolatedIdentifier$0(),
- plain = identifier.get$asPlain(),
- t2 = plain == null;
- if (!t2) {
- if (plain === "if") {
- invocation = _this._argumentInvocation$0();
- return new L.IfExpression(invocation, B.spanForList(H.setRuntimeTypeInfo([identifier, invocation], [B.AstNode])));
- } else if (plain === "not") {
- _this.whitespace$0();
- return new X.UnaryOperationExpression(C.UnaryOperator_not_not, _this._singleExpression$0(), identifier.span);
- }
- lower = plain.toLowerCase();
- if (t1.peekChar$0() !== 40) {
- switch (plain) {
- case "false":
- return new Z.BooleanExpression(false, identifier.span);
- case "null":
- return new O.NullExpression(identifier.span);
- case "true":
- return new Z.BooleanExpression(true, identifier.span);
- }
- color = $.$get$colorsByName().$index(0, lower);
- if (color != null)
- return new K.ColorExpression(K.SassColor$rgb(color.get$red(), color.get$green(), color.get$blue(), color.alpha, identifier.span));
- }
- specialFunction = _this.trySpecialFunction$2(lower, start);
- if (specialFunction != null)
- return specialFunction;
- }
- switch (t1.peekChar$0()) {
- case 46:
- if (t1.peekChar$1(1) === 46)
- return new D.StringExpression(identifier, false);
- t1.readChar$0();
- if (t2)
- _this.error$2("Interpolation isn't allowed in namespaces.", identifier.span);
- if (t1.peekChar$0() === 36) {
- $name = _this.variableName$0();
- _this._assertPublic$2($name, new V.StylesheetParser_identifierLike_closure(_this, start));
- return new S.VariableExpression(plain, $name, t1.spanFrom$1(start));
- }
- t2 = t1._string_scanner$_position;
- return new F.FunctionExpression(plain, X.Interpolation$(H.setRuntimeTypeInfo([_this._publicIdentifier$0()], [P.Object]), t1.spanFrom$1(new S._SpanScannerState(t1, t2))), _this._argumentInvocation$0(), t1.spanFrom$1(start));
- case 40:
- return new F.FunctionExpression(null, identifier, _this._argumentInvocation$0(), t1.spanFrom$1(start));
- default:
- return new D.StringExpression(identifier, false);
- }
- },
- trySpecialFunction$2: function($name, start) {
- var t1, buffer, t2, t3, next, contents, _this = this;
- switch (B.unvendor($name)) {
- case "calc":
- case "element":
- case "expression":
- if (!_this.scanner.scanChar$1(40))
- return;
- t1 = new P.StringBuffer("");
- buffer = new Z.InterpolationBuffer(t1, []);
- t1._contents = $name;
- t1._contents += H.Primitives_stringFromCharCode(40);
- break;
- case "min":
- case "max":
- t1 = _this.scanner;
- t2 = t1._string_scanner$_position;
- if (!t1.scanChar$1(40))
- return;
- _this.whitespace$0();
- t3 = new P.StringBuffer("");
- buffer = new Z.InterpolationBuffer(t3, []);
- t3._contents = $name;
- t3._contents += H.Primitives_stringFromCharCode(40);
- if (!_this._tryMinMaxContents$1(buffer)) {
- t1.set$state(new S._SpanScannerState(t1, t2));
- return;
- }
- return new D.StringExpression(buffer.interpolation$1(t1.spanFrom$1(start)), false);
- case "progid":
- t1 = _this.scanner;
- if (!t1.scanChar$1(58))
- return;
- t2 = new P.StringBuffer("");
- buffer = new Z.InterpolationBuffer(t2, []);
- t2._contents = $name;
- t2._contents += H.Primitives_stringFromCharCode(58);
- next = t1.peekChar$0();
- while (true) {
- if (next != null) {
- if (!(next >= 97 && next <= 122))
- t3 = next >= 65 && next <= 90;
- else
- t3 = true;
- t3 = t3 || next === 46;
- } else
- t3 = false;
- if (!t3)
- break;
- t2._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- next = t1.peekChar$0();
- }
- t1.expectChar$1(40);
- t2._contents += H.Primitives_stringFromCharCode(40);
- break;
- case "url":
- contents = _this._tryUrlContents$1(start);
- return contents == null ? null : new D.StringExpression(contents, false);
- default:
- return;
- }
- buffer.addInterpolation$1(_this._interpolatedDeclarationValue$1$allowEmpty(true).text);
- t1 = _this.scanner;
- t1.expectChar$1(41);
- buffer._interpolation_buffer$_text._contents += H.Primitives_stringFromCharCode(41);
- return new D.StringExpression(buffer.interpolation$1(t1.spanFrom$1(start)), false);
- },
- _tryMinMaxContents$2$allowComma: function(buffer, allowComma) {
- var t1, t2, t3, t4, start, end, exception, t5, _this = this;
- for (t1 = _this.scanner, t2 = buffer._interpolation_buffer$_text, t3 = !allowComma, t4 = _this.get$_number(); true;) {
- switch (t1.peekChar$0()) {
- case 45:
- case 43:
- case 48:
- case 49:
- case 50:
- case 51:
- case 52:
- case 53:
- case 54:
- case 55:
- case 56:
- case 57:
- try {
- start = t1._string_scanner$_position;
- t4.call$0();
- end = t1._string_scanner$_position;
- t2._contents += J.substring$2$s(t1.string, start, end);
- } catch (exception) {
- if (!!J.getInterceptor$(H.unwrapException(exception)).$isFormatException)
- return false;
- else
- throw exception;
- }
- break;
- case 35:
- if (t1.peekChar$1(1) !== 123)
- return false;
- t5 = _this.singleInterpolation$0();
- buffer._flushText$0();
- buffer._interpolation_buffer$_contents.push(t5);
- break;
- case 99:
- case 67:
- if (!_this._tryMinMaxFunction$2(buffer, "calc"))
- return false;
- break;
- case 101:
- case 69:
- if (!_this._tryMinMaxFunction$2(buffer, "env"))
- return false;
- break;
- case 118:
- case 86:
- if (!_this._tryMinMaxFunction$2(buffer, "var"))
- return false;
- break;
- case 40:
- t2._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- if (!_this._tryMinMaxContents$2$allowComma(buffer, false))
- return false;
- break;
- case 109:
- case 77:
- t1.readChar$0();
- if (_this.scanCharIgnoreCase$1(105)) {
- if (!_this.scanCharIgnoreCase$1(110))
- return false;
- t2._contents += "min(";
- } else if (_this.scanCharIgnoreCase$1(97)) {
- if (!_this.scanCharIgnoreCase$1(120))
- return false;
- t2._contents += "max(";
- } else
- return false;
- if (!t1.scanChar$1(40))
- return false;
- if (!_this._tryMinMaxContents$1(buffer))
- return false;
- break;
- default:
- return false;
- }
- _this.whitespace$0();
- switch (t1.peekChar$0()) {
- case 41:
- t2._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- return true;
- case 43:
- case 45:
- case 42:
- case 47:
- t2._contents += H.Primitives_stringFromCharCode(32);
- t2._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- t2._contents += H.Primitives_stringFromCharCode(32);
- break;
- case 44:
- if (t3)
- return false;
- t2._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- t2._contents += H.Primitives_stringFromCharCode(32);
- break;
- default:
- return false;
- }
- _this.whitespace$0();
- }
- },
- _tryMinMaxContents$1: function(buffer) {
- return this._tryMinMaxContents$2$allowComma(buffer, true);
- },
- _tryMinMaxFunction$2: function(buffer, $name) {
- var t1, t2;
- if (!this.scanIdentifier$1($name))
- return false;
- t1 = this.scanner;
- if (!t1.scanChar$1(40))
- return false;
- t2 = buffer._interpolation_buffer$_text;
- t2._contents += $name;
- t2._contents += H.Primitives_stringFromCharCode(40);
- buffer.addInterpolation$1(this._interpolatedDeclarationValue$1$allowEmpty(true).asInterpolation$0());
- t2._contents += H.Primitives_stringFromCharCode(41);
- if (!t1.scanChar$1(41))
- return false;
- return true;
- },
- _tryUrlContents$2$name: function(start, $name) {
- var t3, t4, buffer, next, t5, endPosition, _this = this,
- t1 = _this.scanner,
- t2 = t1._string_scanner$_position;
- if (!t1.scanChar$1(40))
- return;
- _this.whitespaceWithoutComments$0();
- t3 = new P.StringBuffer("");
- t4 = [];
- buffer = new Z.InterpolationBuffer(t3, t4);
- t3._contents = $name == null ? "url" : $name;
- t3._contents += H.Primitives_stringFromCharCode(40);
- for (; true;) {
- next = t1.peekChar$0();
- if (next == null)
- break;
- else {
- if (next !== 33)
- if (next !== 37)
- if (next !== 38)
- t5 = next >= 42 && next <= 126 || next >= 128;
- else
- t5 = true;
- else
- t5 = true;
- else
- t5 = true;
- if (t5)
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- else if (next === 92)
- t3._contents += H.S(_this.escape$0());
- else if (next === 35)
- if (t1.peekChar$1(1) === 123) {
- t5 = _this.singleInterpolation$0();
- buffer._flushText$0();
- t4.push(t5);
- } else
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- else if (next === 32 || next === 9 || next === 10 || next === 13 || next === 12) {
- _this.whitespaceWithoutComments$0();
- if (t1.peekChar$0() !== 41)
- break;
- } else if (next === 41) {
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- endPosition = t1._string_scanner$_position;
- return buffer.interpolation$1(Y._FileSpan$(t1._sourceFile, start.position, endPosition));
- } else
- break;
- }
- }
- t1.set$state(new S._SpanScannerState(t1, t2));
- return;
- },
- _tryUrlContents$1: function(start) {
- return this._tryUrlContents$2$name(start, null);
- },
- dynamicUrl$0: function() {
- var contents, _this = this,
- t1 = _this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- _this.expectIdentifier$1("url");
- contents = _this._tryUrlContents$1(start);
- if (contents != null)
- return new D.StringExpression(contents, false);
- return new F.FunctionExpression(null, X.Interpolation$(H.setRuntimeTypeInfo(["url"], [P.Object]), t1.spanFrom$1(start)), _this._argumentInvocation$0(), t1.spanFrom$1(start));
- },
- almostAnyValue$0: function() {
- var t4, next, commentStart, end, t5, contents, _this = this,
- t1 = _this.scanner,
- t2 = t1._string_scanner$_position,
- t3 = new P.StringBuffer(""),
- buffer = new Z.InterpolationBuffer(t3, []);
- $label0$1:
- for (t4 = t1.string; true;) {
- next = t1.peekChar$0();
- switch (next) {
- case 92:
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- break;
- case 34:
- case 39:
- buffer.addInterpolation$1(_this.interpolatedString$0().asInterpolation$0());
- break;
- case 47:
- commentStart = t1._string_scanner$_position;
- if (_this.scanComment$0()) {
- end = t1._string_scanner$_position;
- t3._contents += J.substring$2$s(t4, commentStart, end);
- } else
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- break;
- case 35:
- if (t1.peekChar$1(1) === 123)
- buffer.addInterpolation$1(_this.interpolatedIdentifier$0());
- else
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- break;
- case 13:
- case 10:
- case 12:
- if (_this.get$indented())
- break $label0$1;
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- break;
- case 33:
- case 59:
- case 123:
- case 125:
- break $label0$1;
- case 117:
- case 85:
- t5 = t1._string_scanner$_position;
- if (!_this.scanIdentifier$1("url")) {
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- break;
- }
- contents = _this._tryUrlContents$1(new S._SpanScannerState(t1, t5));
- if (contents == null) {
- if (t5 < 0 || t5 > t4.length)
- H.throwExpression(P.ArgumentError$("Invalid position " + t5));
- t1._string_scanner$_position = t5;
- t1._lastMatch = null;
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- } else
- buffer.addInterpolation$1(contents);
- break;
- default:
- if (next == null)
- break $label0$1;
- if (_this.lookingAtIdentifier$0())
- t3._contents += _this.identifier$0();
- else
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- break;
- }
- }
- return buffer.interpolation$1(t1.spanFrom$1(new S._SpanScannerState(t1, t2)));
- },
- _interpolatedDeclarationValue$1$allowEmpty: function(allowEmpty) {
- var t4, wroteNewline, next, t5, start, end, contents, _this = this,
- t1 = _this.scanner,
- t2 = t1._string_scanner$_position,
- t3 = new P.StringBuffer(""),
- buffer = new Z.InterpolationBuffer(t3, []),
- brackets = H.setRuntimeTypeInfo([], [P.int]);
- $label0$1:
- for (t4 = t1.string, wroteNewline = false; true;) {
- next = t1.peekChar$0();
- switch (next) {
- case 92:
- t3._contents += H.S(_this.escape$1$identifierStart(true));
- wroteNewline = false;
- break;
- case 34:
- case 39:
- buffer.addInterpolation$1(_this.interpolatedString$0().asInterpolation$0());
- wroteNewline = false;
- break;
- case 47:
- if (t1.peekChar$1(1) === 42) {
- t5 = _this.get$loudComment();
- start = t1._string_scanner$_position;
- t5.call$0();
- end = t1._string_scanner$_position;
- t3._contents += J.substring$2$s(t4, start, end);
- } else
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- wroteNewline = false;
- break;
- case 35:
- if (t1.peekChar$1(1) === 123)
- buffer.addInterpolation$1(_this.interpolatedIdentifier$0());
- else
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- wroteNewline = false;
- break;
- case 32:
- case 9:
- if (!wroteNewline) {
- t5 = t1.peekChar$1(1);
- t5 = !(t5 === 32 || t5 === 9 || t5 === 10 || t5 === 13 || t5 === 12);
- } else
- t5 = true;
- if (t5)
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- else
- t1.readChar$0();
- break;
- case 10:
- case 13:
- case 12:
- if (_this.get$indented())
- break $label0$1;
- t5 = t1.peekChar$1(-1);
- if (!(t5 === 10 || t5 === 13 || t5 === 12))
- t3._contents += "\n";
- t1.readChar$0();
- wroteNewline = true;
- break;
- case 40:
- case 123:
- case 91:
- t3._contents += H.Primitives_stringFromCharCode(next);
- brackets.push(T.opposite(t1.readChar$0()));
- wroteNewline = false;
- break;
- case 41:
- case 125:
- case 93:
- if (brackets.length === 0)
- break $label0$1;
- t3._contents += H.Primitives_stringFromCharCode(next);
- t1.expectChar$1(brackets.pop());
- wroteNewline = false;
- break;
- case 59:
- if (brackets.length === 0)
- break $label0$1;
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- break;
- case 117:
- case 85:
- t5 = t1._string_scanner$_position;
- if (!_this.scanIdentifier$1("url")) {
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- wroteNewline = false;
- break;
- }
- contents = _this._tryUrlContents$1(new S._SpanScannerState(t1, t5));
- if (contents == null) {
- if (t5 < 0 || t5 > t4.length)
- H.throwExpression(P.ArgumentError$("Invalid position " + t5));
- t1._string_scanner$_position = t5;
- t1._lastMatch = null;
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- } else
- buffer.addInterpolation$1(contents);
- wroteNewline = false;
- break;
- default:
- if (next == null)
- break $label0$1;
- if (_this.lookingAtIdentifier$0())
- t3._contents += _this.identifier$0();
- else
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- wroteNewline = false;
- break;
- }
- }
- if (brackets.length !== 0)
- t1.expectChar$1(C.JSArray_methods.get$last(brackets));
- if (!allowEmpty && buffer._interpolation_buffer$_contents.length === 0 && t3._contents.length === 0)
- t1.error$1("Expected token.");
- return new D.StringExpression(buffer.interpolation$1(t1.spanFrom$1(new S._SpanScannerState(t1, t2))), false);
- },
- _interpolatedDeclarationValue$0: function() {
- return this._interpolatedDeclarationValue$1$allowEmpty(false);
- },
- interpolatedIdentifier$0: function() {
- var first, _this = this,
- _s20_ = "Expected identifier.",
- t1 = _this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position),
- t2 = new P.StringBuffer(""),
- t3 = [],
- buffer = new Z.InterpolationBuffer(t2, t3);
- if (t1.scanChar$1(45)) {
- t2._contents += H.Primitives_stringFromCharCode(45);
- if (t1.scanChar$1(45)) {
- t2._contents += H.Primitives_stringFromCharCode(45);
- _this._interpolatedIdentifierBody$1(buffer);
- return buffer.interpolation$1(t1.spanFrom$1(start));
- }
- }
- first = t1.peekChar$0();
- if (first == null)
- t1.error$1(_s20_);
- else if (first === 95 || T.isAlphabetic0(first) || first >= 128)
- t2._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- else if (first === 92)
- t2._contents += H.S(_this.escape$1$identifierStart(true));
- else if (first === 35 && t1.peekChar$1(1) === 123) {
- t2 = _this.singleInterpolation$0();
- buffer._flushText$0();
- t3.push(t2);
- } else
- t1.error$1(_s20_);
- _this._interpolatedIdentifierBody$1(buffer);
- return buffer.interpolation$1(t1.spanFrom$1(start));
- },
- _interpolatedIdentifierBody$1: function(buffer) {
- var t1, t2, t3, next, t4;
- for (t1 = buffer._interpolation_buffer$_contents, t2 = this.scanner, t3 = buffer._interpolation_buffer$_text; true;) {
- next = t2.peekChar$0();
- if (next == null)
- break;
- else {
- if (next !== 95)
- if (next !== 45) {
- if (!(next >= 97 && next <= 122))
- t4 = next >= 65 && next <= 90;
- else
- t4 = true;
- if (!t4)
- t4 = next >= 48 && next <= 57;
- else
- t4 = true;
- t4 = t4 || next >= 128;
- } else
- t4 = true;
- else
- t4 = true;
- if (t4)
- t3._contents += H.Primitives_stringFromCharCode(t2.readChar$0());
- else if (next === 92)
- t3._contents += H.S(this.escape$0());
- else if (next === 35 && t2.peekChar$1(1) === 123) {
- t4 = this.singleInterpolation$0();
- buffer._flushText$0();
- t1.push(t4);
- } else
- break;
- }
- }
- },
- singleInterpolation$0: function() {
- var contents, _this = this,
- t1 = _this.scanner,
- t2 = t1._string_scanner$_position;
- t1.expect$1("#{");
- _this.whitespace$0();
- contents = _this.expression$0();
- t1.expectChar$1(125);
- if (_this.get$plainCss())
- _this.error$2("Interpolation isn't allowed in plain CSS.", t1.spanFrom$1(new S._SpanScannerState(t1, t2)));
- return contents;
- },
- _mediaQueryList$0: function() {
- var t1 = this.scanner,
- t2 = t1._string_scanner$_position,
- t3 = new P.StringBuffer(""),
- buffer = new Z.InterpolationBuffer(t3, []);
- for (; true;) {
- this.whitespace$0();
- this._stylesheet$_mediaQuery$1(buffer);
- if (!t1.scanChar$1(44))
- break;
- t3._contents += H.Primitives_stringFromCharCode(44);
- t3._contents += H.Primitives_stringFromCharCode(32);
- }
- return buffer.interpolation$1(t1.spanFrom$1(new S._SpanScannerState(t1, t2)));
- },
- _stylesheet$_mediaQuery$1: function(buffer) {
- var t1, identifier, _this = this;
- if (_this.scanner.peekChar$0() !== 40) {
- buffer.addInterpolation$1(_this.interpolatedIdentifier$0());
- _this.whitespace$0();
- if (!_this._lookingAtInterpolatedIdentifier$0())
- return;
- t1 = buffer._interpolation_buffer$_text;
- t1._contents += H.Primitives_stringFromCharCode(32);
- identifier = _this.interpolatedIdentifier$0();
- _this.whitespace$0();
- if (B.equalsIgnoreCase(identifier.get$asPlain(), "and"))
- t1._contents += " and ";
- else {
- buffer.addInterpolation$1(identifier);
- if (_this.scanIdentifier$1("and")) {
- _this.whitespace$0();
- t1._contents += " and ";
- } else
- return;
- }
- }
- for (t1 = buffer._interpolation_buffer$_text; true;) {
- _this.whitespace$0();
- buffer.addInterpolation$1(_this._mediaFeature$0());
- _this.whitespace$0();
- if (!_this.scanIdentifier$1("and"))
- break;
- t1._contents += " and ";
- }
- },
- _mediaFeature$0: function() {
- var interpolation, t2, t3, t4, buffer, t5, next, isAngle, _this = this,
- t1 = _this.scanner;
- if (t1.peekChar$0() === 35) {
- interpolation = _this.singleInterpolation$0();
- return X.Interpolation$(H.setRuntimeTypeInfo([interpolation], [P.Object]), interpolation.get$span());
- }
- t2 = t1._string_scanner$_position;
- t3 = new P.StringBuffer("");
- t4 = [];
- buffer = new Z.InterpolationBuffer(t3, t4);
- t1.expectChar$1(40);
- t3._contents += H.Primitives_stringFromCharCode(40);
- _this.whitespace$0();
- t5 = _this._expressionUntilComparison$0();
- buffer._flushText$0();
- t4.push(t5);
- if (t1.scanChar$1(58)) {
- _this.whitespace$0();
- t3._contents += H.Primitives_stringFromCharCode(58);
- t3._contents += H.Primitives_stringFromCharCode(32);
- t5 = _this.expression$0();
- buffer._flushText$0();
- t4.push(t5);
- } else {
- next = t1.peekChar$0();
- isAngle = next === 60 || next === 62;
- if (isAngle || next === 61) {
- t3._contents += H.Primitives_stringFromCharCode(32);
- t3._contents += H.Primitives_stringFromCharCode(t1.readChar$0());
- if (isAngle && t1.scanChar$1(61))
- t3._contents += H.Primitives_stringFromCharCode(61);
- t3._contents += H.Primitives_stringFromCharCode(32);
- _this.whitespace$0();
- t5 = _this._expressionUntilComparison$0();
- buffer._flushText$0();
- t4.push(t5);
- if (isAngle && t1.scanChar$1(next)) {
- t3._contents += H.Primitives_stringFromCharCode(32);
- t3._contents += H.Primitives_stringFromCharCode(next);
- if (t1.scanChar$1(61))
- t3._contents += H.Primitives_stringFromCharCode(61);
- t3._contents += H.Primitives_stringFromCharCode(32);
- _this.whitespace$0();
- t5 = _this._expressionUntilComparison$0();
- buffer._flushText$0();
- t4.push(t5);
- }
- }
- }
- t1.expectChar$1(41);
- _this.whitespace$0();
- t3._contents += H.Primitives_stringFromCharCode(41);
- return buffer.interpolation$1(t1.spanFrom$1(new S._SpanScannerState(t1, t2)));
- },
- _expressionUntilComparison$0: function() {
- return this.expression$1$until(new V.StylesheetParser__expressionUntilComparison_closure(this));
- },
- _supportsCondition$0: function() {
- var condition, operator, right, endPosition, lowerOperator, _this = this,
- t1 = _this.scanner,
- t2 = t1._string_scanner$_position,
- first = t1.peekChar$0();
- if (first !== 40 && first !== 35) {
- t2 = t1._string_scanner$_position;
- _this.expectIdentifier$1("not");
- _this.whitespace$0();
- return new M.SupportsNegation(_this._supportsConditionInParens$0(), t1.spanFrom$1(new S._SpanScannerState(t1, t2)));
- }
- condition = _this._supportsConditionInParens$0();
- _this.whitespace$0();
- for (; _this.lookingAtIdentifier$0();) {
- if (_this.scanIdentifier$1("or"))
- operator = "or";
- else {
- _this.expectIdentifier$1("and");
- operator = "and";
- }
- _this.whitespace$0();
- right = _this._supportsConditionInParens$0();
- endPosition = t1._string_scanner$_position;
- condition = new U.SupportsOperation(condition, right, operator, Y._FileSpan$(t1._sourceFile, t2, endPosition));
- lowerOperator = operator.toLowerCase();
- if (lowerOperator !== "and" && lowerOperator !== "or")
- H.throwExpression(P.ArgumentError$value(operator, "operator", 'may only be "and" or "or".'));
- _this.whitespace$0();
- }
- return condition;
- },
- _supportsConditionInParens$0: function() {
- var next, condition, negation, $name, value, _this = this,
- t1 = _this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- if (t1.peekChar$0() === 35)
- return new X.SupportsInterpolation(_this.singleInterpolation$0(), t1.spanFrom$1(start));
- t1.expectChar$1(40);
- _this.whitespace$0();
- next = t1.peekChar$0();
- if (next === 40 || next === 35) {
- condition = _this._supportsCondition$0();
- _this.whitespace$0();
- t1.expectChar$1(41);
- return condition;
- }
- if (next === 110 || next === 78) {
- negation = _this._trySupportsNegation$0();
- if (negation != null) {
- t1.expectChar$1(41);
- return negation;
- }
- }
- $name = _this.expression$0();
- t1.expectChar$1(58);
- _this.whitespace$0();
- value = _this.expression$0();
- t1.expectChar$1(41);
- return new L.SupportsDeclaration($name, value, t1.spanFrom$1(start));
- },
- _trySupportsNegation$0: function() {
- var next, _this = this,
- t1 = _this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position);
- if (!_this.scanIdentifier$1("not") || t1._string_scanner$_position === t1.string.length) {
- t1.set$state(start);
- return;
- }
- next = t1.peekChar$0();
- if (!(next === 32 || next === 9 || T.isNewline(next)) && next !== 40) {
- t1.set$state(start);
- return;
- }
- _this.whitespace$0();
- return new M.SupportsNegation(_this._supportsConditionInParens$0(), t1.spanFrom$1(start));
- },
- _lookingAtInterpolatedIdentifier$0: function() {
- var second,
- t1 = this.scanner,
- first = t1.peekChar$0();
- if (first == null)
- return false;
- if (first === 95 || T.isAlphabetic0(first) || first >= 128 || first === 92)
- return true;
- if (first === 35)
- return t1.peekChar$1(1) === 123;
- if (first !== 45)
- return false;
- second = t1.peekChar$1(1);
- if (second == null)
- return false;
- if (second === 35)
- return t1.peekChar$1(2) === 123;
- return second === 95 || T.isAlphabetic0(second) || second >= 128 || second === 92 || second === 45;
- },
- _lookingAtInterpolatedIdentifierBody$0: function() {
- var t1 = this.scanner,
- first = t1.peekChar$0();
- if (first == null)
- return false;
- if (first === 95 || T.isAlphabetic0(first) || first >= 128 || T.isDigit(first) || first === 45 || first === 92)
- return true;
- return first === 35 && t1.peekChar$1(1) === 123;
- },
- _lookingAtExpression$0: function() {
- var next,
- t1 = this.scanner,
- character = t1.peekChar$0();
- if (character == null)
- return false;
- if (character === 46)
- return t1.peekChar$1(1) !== 46;
- if (character === 33) {
- next = t1.peekChar$1(1);
- if (next != null)
- if ((next | 32) !== 105)
- t1 = next === 32 || next === 9 || T.isNewline(next);
- else
- t1 = true;
- else
- t1 = true;
- return t1;
- }
- if (character !== 40)
- if (character !== 47)
- if (character !== 91)
- if (character !== 39)
- if (character !== 34)
- if (character !== 35)
- if (character !== 43)
- if (character !== 45)
- if (character !== 92)
- if (character !== 36)
- if (character !== 38)
- t1 = character === 95 || T.isAlphabetic0(character) || character >= 128 || T.isDigit(character);
- else
- t1 = true;
- else
- t1 = true;
- else
- t1 = true;
- else
- t1 = true;
- else
- t1 = true;
- else
- t1 = true;
- else
- t1 = true;
- else
- t1 = true;
- else
- t1 = true;
- else
- t1 = true;
- else
- t1 = true;
- return t1;
- },
- _withChildren$1$3: function(child, start, create) {
- var result = create.call$2(this.children$1(child), this.scanner.spanFrom$1(start));
- this.whitespaceWithoutComments$0();
- return result;
- },
- _withChildren$3: function(child, start, create) {
- return this._withChildren$1$3(child, start, create, null);
- },
- _urlString$0: function() {
- var innerError, t2, exception,
- t1 = this.scanner,
- start = new S._SpanScannerState(t1, t1._string_scanner$_position),
- url = this.string$0();
- try {
- t2 = P.Uri_parse(url);
- return t2;
- } catch (exception) {
- t2 = H.unwrapException(exception);
- if (!!J.getInterceptor$(t2).$isFormatException) {
- innerError = t2;
- this.error$2("Invalid URL: " + H.S(J.get$message$x(innerError)), t1.spanFrom$1(start));
- } else
- throw exception;
- }
- },
- _publicIdentifier$0: function() {
- var _this = this,
- t1 = _this.scanner,
- t2 = t1._string_scanner$_position,
- result = _this.identifier$1$normalize(true);
- _this._assertPublic$2(result, new V.StylesheetParser__publicIdentifier_closure(_this, new S._SpanScannerState(t1, t2)));
- return result;
- },
- _assertPublic$2: function(identifier, span) {
- if (!T.isPrivate(identifier))
- return;
- this.error$2("Private members can't be accessed from outside their modules.", span.call$0());
- },
- get$plainCss: function() {
- return false;
- }
- };
- V.StylesheetParser_parse_closure.prototype = {
- call$0: function() {
- var statements, t4,
- t1 = this.$this,
- t2 = t1.scanner,
- t3 = t2._string_scanner$_position;
- t2.scanChar$1(65279);
- statements = t1.statements$1(new V.StylesheetParser_parse__closure(t1));
- t2.expectDone$0();
- t4 = t1._globalVariables.get$values();
- C.JSArray_methods.addAll$1(statements, H.MappedIterable_MappedIterable(t4, new V.StylesheetParser_parse__closure0(), H.getRuntimeTypeArgument(t4, "Iterable", 0), O.Statement));
- return V.Stylesheet$(statements, t2.spanFrom$1(new S._SpanScannerState(t2, t3)), t1.get$plainCss());
- }
- };
- V.StylesheetParser_parse__closure.prototype = {
- call$0: function() {
- return this.$this._statement$1$root(true);
- }
- };
- V.StylesheetParser_parse__closure0.prototype = {
- call$1: function(declaration) {
- return Z.VariableDeclaration$(declaration.name, new O.NullExpression(declaration.expression.get$span()), declaration.span, null, false, true, null);
- }
- };
- V.StylesheetParser_parseArgumentDeclaration_closure.prototype = {
- call$0: function() {
- var $arguments,
- t1 = this.$this,
- t2 = t1.scanner;
- t2.expectChar$2$name(64, "@-rule");
- t1.identifier$0();
- t1.whitespace$0();
- t1.identifier$0();
- $arguments = t1._argumentDeclaration$0();
- t1.whitespace$0();
- t2.expectChar$1(123);
- return $arguments;
- }
- };
- V.StylesheetParser_parseVariableDeclaration_closure.prototype = {
- call$0: function() {
- var t1 = this.$this;
- return t1.lookingAtIdentifier$0() ? t1._variableDeclarationWithNamespace$0() : t1.variableDeclarationWithoutNamespace$0();
- }
- };
- V.StylesheetParser_parseUseRule_closure.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = t1.scanner,
- t3 = t2._string_scanner$_position;
- t2.expectChar$2$name(64, "@-rule");
- t1.expectIdentifier$1("use");
- t1.whitespace$0();
- return t1._useRule$1(new S._SpanScannerState(t2, t3));
- }
- };
- V.StylesheetParser__parseSingleProduction_closure.prototype = {
- call$0: function() {
- var result = this.production.call$0();
- this.$this.scanner.expectDone$0();
- return result;
- }
- };
- V.StylesheetParser_parseSignature_closure.prototype = {
- call$0: function() {
- var t2, $arguments, t3,
- t1 = this.$this,
- $name = t1.identifier$0();
- t1.whitespace$0();
- t2 = t1.scanner;
- if (t2.peekChar$0() === 40)
- $arguments = t1._argumentDeclaration$0();
- else {
- t1 = Y.FileLocation$_(t2._sourceFile, t2._string_scanner$_position);
- t3 = t1.offset;
- $arguments = new B.ArgumentDeclaration(C.List_empty9, null, Y._FileSpan$(t1.file, t3, t3));
- }
- t2.expectDone$0();
- return new S.Tuple2($name, $arguments, [P.String, B.ArgumentDeclaration]);
- }
- };
- V.StylesheetParser__statement_closure.prototype = {
- call$0: function() {
- return this.$this._statement$0();
- }
- };
- V.StylesheetParser_variableDeclarationWithoutNamespace_closure.prototype = {
- call$0: function() {
- return this.$this.scanner.spanFrom$1(this._box_0.start);
- }
- };
- V.StylesheetParser_variableDeclarationWithoutNamespace_closure0.prototype = {
- call$0: function() {
- return this.declaration;
- }
- };
- V.StylesheetParser__declarationOrBuffer_closure.prototype = {
- call$2: function(children, span) {
- return L.Declaration$(this.name, span, children, null);
- }
- };
- V.StylesheetParser__declarationOrBuffer_closure0.prototype = {
- call$2: function(children, span) {
- return L.Declaration$(this.name, span, children, this._box_0.value);
- }
- };
- V.StylesheetParser__styleRule_closure.prototype = {
- call$2: function(children, span) {
- var t2, t3, t4, _this = this,
- t1 = _this.$this;
- if (t1.get$indented() && children.length === 0)
- t1.logger.warn$2$span("This selector doesn't have any properties and won't be rendered.", _this._box_0.interpolation.span);
- t1._inStyleRule = _this.wasInStyleRule;
- t2 = _this._box_0;
- t3 = t2.interpolation;
- t2 = t1.scanner.spanFrom$1(t2.start);
- t1 = P.List_List$unmodifiable(children, O.Statement);
- t4 = C.JSArray_methods.any$1(t1, new M.ParentStatement_closure());
- return new X.StyleRule(t3, t2, t1, t4);
- }
- };
- V.StylesheetParser__propertyOrVariableDeclaration_closure.prototype = {
- call$2: function(children, span) {
- return L.Declaration$(this._box_0.name, span, children, null);
- }
- };
- V.StylesheetParser__propertyOrVariableDeclaration_closure0.prototype = {
- call$2: function(children, span) {
- return L.Declaration$(this._box_0.name, span, children, this.value);
- }
- };
- V.StylesheetParser__atRootRule_closure.prototype = {
- call$2: function(children, span) {
- var t1 = P.List_List$unmodifiable(children, O.Statement),
- t2 = C.JSArray_methods.any$1(t1, new M.ParentStatement_closure());
- return new V.AtRootRule(this.query, span, t1, t2);
- }
- };
- V.StylesheetParser__atRootRule_closure0.prototype = {
- call$2: function(children, span) {
- var t1 = P.List_List$unmodifiable(children, O.Statement),
- t2 = C.JSArray_methods.any$1(t1, new M.ParentStatement_closure());
- return new V.AtRootRule(null, span, t1, t2);
- }
- };
- V.StylesheetParser__eachRule_closure.prototype = {
- call$2: function(children, span) {
- var t1, t2, t3, _this = this;
- _this.$this._inControlDirective = _this.wasInControlDirective;
- t1 = P.List_List$unmodifiable(_this.variables, P.String);
- t2 = P.List_List$unmodifiable(children, O.Statement);
- t3 = C.JSArray_methods.any$1(t2, new M.ParentStatement_closure());
- return new V.EachRule(t1, _this.list, span, t2, t3);
- }
- };
- V.StylesheetParser__functionRule_closure.prototype = {
- call$2: function(children, span) {
- var t1 = P.List_List$unmodifiable(children, O.Statement),
- t2 = C.JSArray_methods.any$1(t1, new M.ParentStatement_closure());
- return new M.FunctionRule(this.name, this.$arguments, span, t1, t2);
- }
- };
- V.StylesheetParser__forRule_closure.prototype = {
- call$0: function() {
- var t1 = this.$this;
- if (!t1.lookingAtIdentifier$0())
- return false;
- if (t1.scanIdentifier$1("to"))
- return this._box_0.exclusive = true;
- else if (t1.scanIdentifier$1("through")) {
- this._box_0.exclusive = false;
- return true;
- } else
- return false;
- }
- };
- V.StylesheetParser__forRule_closure0.prototype = {
- call$2: function(children, span) {
- var t1, t2, t3, _this = this;
- _this.$this._inControlDirective = _this.wasInControlDirective;
- t1 = _this._box_0.exclusive;
- t2 = P.List_List$unmodifiable(children, O.Statement);
- t3 = C.JSArray_methods.any$1(t2, new M.ParentStatement_closure());
- return new B.ForRule(_this.variable, _this.from, _this.to, t1, span, t2, t3);
- }
- };
- V.StylesheetParser__memberList_closure.prototype = {
- call$0: function() {
- var t1 = this.$this;
- if (t1.scanner.peekChar$0() === 36)
- this.variables.add$1(0, t1.variableName$0());
- else
- this.identifiers.add$1(0, t1.identifier$1$normalize(true));
- }
- };
- V.StylesheetParser__includeRule_closure.prototype = {
- call$2: function(children, span) {
- var t1 = this._box_0.contentArguments,
- t2 = P.List_List$unmodifiable(children, O.Statement),
- t3 = C.JSArray_methods.any$1(t2, new M.ParentStatement_closure());
- return new Y.ContentBlock(null, t1, span, t2, t3);
- }
- };
- V.StylesheetParser_mediaRule_closure.prototype = {
- call$2: function(children, span) {
- var t1 = P.List_List$unmodifiable(children, O.Statement),
- t2 = C.JSArray_methods.any$1(t1, new M.ParentStatement_closure());
- return new G.MediaRule(this.query, span, t1, t2);
- }
- };
- V.StylesheetParser__mixinRule_closure.prototype = {
- call$2: function(children, span) {
- var t2,
- t1 = this.$this,
- hadContent = t1._mixinHasContent;
- t1._stylesheet$_inMixin = false;
- t1._mixinHasContent = null;
- t1 = P.List_List$unmodifiable(children, O.Statement);
- t2 = C.JSArray_methods.any$1(t1, new M.ParentStatement_closure());
- return new T.MixinRule(hadContent, this.name, this.$arguments, span, t1, t2);
- }
- };
- V.StylesheetParser_mozDocumentRule_closure.prototype = {
- call$2: function(children, span) {
- var _this = this;
- if (_this._box_0.needsDeprecationWarning)
- _this.$this.logger.warn$3$deprecation$span("@-moz-document is deprecated and support will be removed from Sass in a future\nrelase. For details, see http://bit.ly/moz-document.\n", true, span);
- return U.AtRule$(_this.name, span, children, _this.value);
- }
- };
- V.StylesheetParser_supportsRule_closure.prototype = {
- call$2: function(children, span) {
- var t1 = P.List_List$unmodifiable(children, O.Statement),
- t2 = C.JSArray_methods.any$1(t1, new M.ParentStatement_closure());
- return new B.SupportsRule(this.condition, span, t1, t2);
- }
- };
- V.StylesheetParser__whileRule_closure.prototype = {
- call$2: function(children, span) {
- var t1, t2;
- this.$this._inControlDirective = this.wasInControlDirective;
- t1 = P.List_List$unmodifiable(children, O.Statement);
- t2 = C.JSArray_methods.any$1(t1, new M.ParentStatement_closure());
- return new G.WhileRule(this.condition, span, t1, t2);
- }
- };
- V.StylesheetParser_unknownAtRule_closure.prototype = {
- call$2: function(children, span) {
- return U.AtRule$(this.name, span, children, this._box_0.value);
- }
- };
- V.StylesheetParser_expression_resetState.prototype = {
- call$0: function() {
- var t2,
- t1 = this._box_0;
- t1.operands = t1.operators = t1.spaceExpressions = t1.commaExpressions = null;
- t2 = this.$this;
- t2.scanner.set$state(this.start);
- t1.allowSlash = t2.lookingAtNumber$0();
- t1.singleExpression = t2._singleExpression$0();
- }
- };
- V.StylesheetParser_expression_resolveOneOperation.prototype = {
- call$0: function() {
- var t2, t3,
- t1 = this._box_0,
- operator = t1.operators.pop();
- if (operator !== C.BinaryOperator_RTB)
- t1.allowSlash = false;
- t2 = t1.allowSlash && !this.$this._inParentheses;
- t3 = t1.operands;
- if (t2)
- t1.singleExpression = new V.BinaryOperationExpression(C.BinaryOperator_RTB, t3.pop(), t1.singleExpression, true);
- else
- t1.singleExpression = new V.BinaryOperationExpression(operator, t3.pop(), t1.singleExpression, false);
- }
- };
- V.StylesheetParser_expression_resolveOperations.prototype = {
- call$0: function() {
- var t2,
- t1 = this._box_0;
- if (t1.operators == null)
- return;
- for (t2 = this.resolveOneOperation; t1.operators.length !== 0;)
- t2.call$0();
- }
- };
- V.StylesheetParser_expression_addSingleExpression.prototype = {
- call$2$number: function(expression, number) {
- var t2, _this = this,
- t1 = _this._box_0;
- if (t1.singleExpression != null) {
- t2 = _this.$this;
- if (t2._inParentheses) {
- t2._inParentheses = false;
- if (t1.allowSlash) {
- _this.resetState.call$0();
- return;
- }
- }
- if (t1.spaceExpressions == null)
- t1.spaceExpressions = H.setRuntimeTypeInfo([], [T.Expression]);
- _this.resolveOperations.call$0();
- t1.spaceExpressions.push(t1.singleExpression);
- t1.allowSlash = number;
- } else if (!number)
- t1.allowSlash = false;
- t1.singleExpression = expression;
- },
- call$1: function(expression) {
- return this.call$2$number(expression, false);
- }
- };
- V.StylesheetParser_expression_addOperator.prototype = {
- call$1: function(operator) {
- var t2, t3, t4, t5, singleExpression,
- t1 = this.$this;
- if (t1.get$plainCss() && operator !== C.BinaryOperator_RTB) {
- t2 = t1.scanner;
- t3 = operator.operator.length;
- t2.error$3$length$position("Operators aren't allowed in plain CSS.", t3, t2._string_scanner$_position - t3);
- }
- t2 = this._box_0;
- t2.allowSlash = t2.allowSlash && operator === C.BinaryOperator_RTB;
- if (t2.operators == null)
- t2.operators = H.setRuntimeTypeInfo([], [V.BinaryOperator]);
- if (t2.operands == null)
- t2.operands = H.setRuntimeTypeInfo([], [T.Expression]);
- t3 = this.resolveOneOperation;
- t4 = operator.precedence;
- while (true) {
- t5 = t2.operators;
- if (!(t5.length !== 0 && (t5 && C.JSArray_methods).get$last(t5).precedence >= t4))
- break;
- t3.call$0();
- }
- t2.operators.push(operator);
- t2.operands.push(t2.singleExpression);
- t1.whitespace$0();
- t2.allowSlash = t2.allowSlash && t1.lookingAtNumber$0();
- singleExpression = t1._singleExpression$0();
- t2.singleExpression = singleExpression;
- t2.allowSlash = t2.allowSlash && singleExpression instanceof T.NumberExpression;
- }
- };
- V.StylesheetParser_expression_resolveSpaceExpressions.prototype = {
- call$0: function() {
- var t1, t2, t3;
- this.resolveOperations.call$0();
- t1 = this._box_0;
- t2 = t1.spaceExpressions;
- if (t2 != null) {
- t2.push(t1.singleExpression);
- t2 = P.List_List$unmodifiable(t1.spaceExpressions, T.Expression);
- t3 = B.spanForList(t2);
- t1.singleExpression = new D.ListExpression(t2, C.ListSeparator_space, false, t3);
- t1.spaceExpressions = null;
- }
- t2 = t1.singleEqualsOperand;
- if (t2 != null) {
- t1.singleExpression = new V.BinaryOperationExpression(C.BinaryOperator_kjl, t2, t1.singleExpression, false);
- t1.singleEqualsOperand = null;
- }
- }
- };
- V.StylesheetParser__expressionUntilComma_closure.prototype = {
- call$0: function() {
- return this.$this.scanner.peekChar$0() === 44;
- }
- };
- V.StylesheetParser__unicodeRange_closure.prototype = {
- call$1: function(char) {
- return char != null && T.isHex(char);
- },
- $signature: 11
- };
- V.StylesheetParser__unicodeRange_closure0.prototype = {
- call$1: function(char) {
- return char != null && T.isHex(char);
- },
- $signature: 11
- };
- V.StylesheetParser_identifierLike_closure.prototype = {
- call$0: function() {
- return this.$this.scanner.spanFrom$1(this.start);
- }
- };
- V.StylesheetParser__expressionUntilComparison_closure.prototype = {
- call$0: function() {
- var t1 = this.$this.scanner,
- next = t1.peekChar$0();
- if (next === 61)
- return t1.peekChar$1(1) !== 61;
- return next === 60 || next === 62;
- }
- };
- V.StylesheetParser__publicIdentifier_closure.prototype = {
- call$0: function() {
- return this.$this.scanner.spanFrom$1(this.start);
- }
- };
- M.StylesheetGraph.prototype = {
- modifiedSince$3: function(url, since, baseImporter) {
- var node = this._stylesheet_graph$_add$3(url, baseImporter, null);
- if (node == null)
- return true;
- return new M.StylesheetGraph_modifiedSince_transitiveModificationTime(this).call$1(node)._value > since._value;
- },
- _stylesheet_graph$_add$3: function(url, baseImporter, baseUrl) {
- var tuple = this._ignoreErrors$1(new M.StylesheetGraph__add_closure(this, url, baseImporter, baseUrl));
- if (tuple == null)
- return;
- return this.addCanonical$3(tuple.item1, tuple.item2, tuple.item3);
- },
- addCanonical$3: function(importer, canonicalUrl, originalUrl) {
- var _this = this,
- stylesheet = _this._ignoreErrors$1(new M.StylesheetGraph_addCanonical_closure(_this, importer, canonicalUrl, originalUrl));
- if (stylesheet == null)
- return;
- return _this._nodes.putIfAbsent$2(canonicalUrl, new M.StylesheetGraph_addCanonical_closure0(_this, stylesheet, importer, canonicalUrl));
- },
- _upstreamNodes$3: function(stylesheet, baseImporter, baseUrl) {
- var t4, t5, t6, t7, t8,
- t1 = P.Uri,
- active = P.LinkedHashSet_LinkedHashSet$_literal([baseUrl], t1),
- t2 = [t1],
- t3 = H.setRuntimeTypeInfo([], t2);
- t2 = H.setRuntimeTypeInfo([], t2);
- new F._FindDependenciesVisitor(t3, t2).visitChildren$1(stylesheet);
- t4 = [P.List, P.Uri];
- t5 = M.StylesheetNode;
- t6 = P.LinkedHashMap_LinkedHashMap$_empty(t1, t5);
- for (t7 = C.JSArray_methods.get$iterator(t3); t7.moveNext$0();) {
- t8 = t7.get$current(t7);
- t6.$indexSet(0, t8, this._nodeFor$4(t8, baseImporter, baseUrl, active));
- }
- t1 = P.LinkedHashMap_LinkedHashMap$_empty(t1, t5);
- for (t2 = J.get$iterator$ax(new S.Tuple2(t3, t2, [t4, t4]).item2); t2.moveNext$0();) {
- t3 = t2.get$current(t2);
- t1.$indexSet(0, t3, this._nodeFor$5$forImport(t3, baseImporter, baseUrl, active, true));
- }
- t2 = [P.Map, P.Uri, M.StylesheetNode];
- return new S.Tuple2(t6, t1, [t2, t2]);
- },
- reload$1: function(canonicalUrl) {
- var stylesheet, _this = this,
- node = _this._nodes.$index(0, canonicalUrl);
- if (node == null)
- throw H.wrapException(P.StateError$(H.S(canonicalUrl) + " is not in the dependency graph."));
- _this._transitiveModificationTimes.clear$0(0);
- _this.importCache.clearImport$1(canonicalUrl);
- stylesheet = _this._ignoreErrors$1(new M.StylesheetGraph_reload_closure(_this, node, canonicalUrl));
- if (stylesheet == null) {
- _this.remove$1(0, canonicalUrl);
- return;
- }
- node._replaceUpstream$1(_this._upstreamNodes$3(stylesheet, node.importer, canonicalUrl));
- return node;
- },
- remove$1: function(_, canonicalUrl) {
- var node = this._nodes.remove$1(0, canonicalUrl);
- if (node == null)
- throw H.wrapException(P.StateError$(H.S(canonicalUrl) + " is not in the dependency graph."));
- this._transitiveModificationTimes.clear$0(0);
- this.importCache.clearImport$1(canonicalUrl);
- node._stylesheet_graph$_remove$0();
- },
- _nodeFor$5$forImport: function(url, baseImporter, baseUrl, active, forImport) {
- var importer, canonicalUrl, resolvedUrl, t1, stylesheet, node, _this = this,
- tuple = _this._ignoreErrors$1(new M.StylesheetGraph__nodeFor_closure(_this, url, baseImporter, baseUrl, forImport));
- if (tuple == null)
- return;
- importer = tuple.item1;
- canonicalUrl = tuple.item2;
- resolvedUrl = tuple.item3;
- t1 = _this._nodes;
- if (t1.containsKey$1(canonicalUrl))
- return t1.$index(0, canonicalUrl);
- if (active.contains$1(0, canonicalUrl))
- return;
- stylesheet = _this._ignoreErrors$1(new M.StylesheetGraph__nodeFor_closure0(_this, importer, canonicalUrl, resolvedUrl));
- if (stylesheet == null)
- return;
- active.add$1(0, canonicalUrl);
- node = M.StylesheetNode$_(stylesheet, importer, canonicalUrl, _this._upstreamNodes$3(stylesheet, importer, canonicalUrl));
- active.remove$1(0, canonicalUrl);
- t1.$indexSet(0, canonicalUrl, node);
- return node;
- },
- _nodeFor$4: function(url, baseImporter, baseUrl, active) {
- return this._nodeFor$5$forImport(url, baseImporter, baseUrl, active, false);
- },
- _ignoreErrors$1$1: function(callback) {
- var t1, exception;
- try {
- t1 = callback.call$0();
- return t1;
- } catch (exception) {
- H.unwrapException(exception);
- return;
- }
- },
- _ignoreErrors$1: function(callback) {
- return this._ignoreErrors$1$1(callback, null);
- }
- };
- M.StylesheetGraph_modifiedSince_transitiveModificationTime.prototype = {
- call$1: function(node) {
- return this.$this._transitiveModificationTimes.putIfAbsent$2(node.canonicalUrl, new M.StylesheetGraph_modifiedSince_transitiveModificationTime_closure(node, this));
- }
- };
- M.StylesheetGraph_modifiedSince_transitiveModificationTime_closure.prototype = {
- call$0: function() {
- var t2, t3, upstreamTime,
- t1 = this.node,
- latest = t1.importer.modificationTime$1(t1.canonicalUrl);
- for (t1 = t1._upstream.get$values().followedBy$1(0, t1._upstreamImports.get$values()), t1 = new H.FollowedByIterator(J.get$iterator$ax(t1.__internal$_first), t1._second), t2 = this.transitiveModificationTime; t1.moveNext$0();) {
- t3 = t1._currentIterator;
- t3 = t3.get$current(t3);
- upstreamTime = t3 == null ? new P.DateTime(Date.now(), false) : t2.call$1(t3);
- if (upstreamTime._value > latest._value)
- latest = upstreamTime;
- }
- return latest;
- }
- };
- M.StylesheetGraph__add_closure.prototype = {
- call$0: function() {
- var _this = this;
- return _this.$this.importCache.canonicalize$3$baseImporter$baseUrl(_this.url, _this.baseImporter, _this.baseUrl);
- }
- };
- M.StylesheetGraph_addCanonical_closure.prototype = {
- call$0: function() {
- var _this = this;
- return _this.$this.importCache.importCanonical$3(_this.importer, _this.canonicalUrl, _this.originalUrl);
- }
- };
- M.StylesheetGraph_addCanonical_closure0.prototype = {
- call$0: function() {
- var _this = this,
- t1 = _this.stylesheet,
- t2 = _this.importer,
- t3 = _this.canonicalUrl;
- return M.StylesheetNode$_(t1, t2, t3, _this.$this._upstreamNodes$3(t1, t2, t3));
- }
- };
- M.StylesheetGraph_reload_closure.prototype = {
- call$0: function() {
- return this.$this.importCache.importCanonical$2(this.node.importer, this.canonicalUrl);
- }
- };
- M.StylesheetGraph__nodeFor_closure.prototype = {
- call$0: function() {
- var _this = this;
- return _this.$this.importCache.canonicalize$4$baseImporter$baseUrl$forImport(_this.url, _this.baseImporter, _this.baseUrl, _this.forImport);
- }
- };
- M.StylesheetGraph__nodeFor_closure0.prototype = {
- call$0: function() {
- var _this = this;
- return _this.$this.importCache.importCanonical$3(_this.importer, _this.canonicalUrl, _this.resolvedUrl);
- }
- };
- M.StylesheetNode.prototype = {
- StylesheetNode$_$4: function(_stylesheet, importer, canonicalUrl, allUpstream) {
- var t1, t2;
- for (t1 = this._upstream.get$values().followedBy$1(0, this._upstreamImports.get$values()), t1 = new H.FollowedByIterator(J.get$iterator$ax(t1.__internal$_first), t1._second); t1.moveNext$0();) {
- t2 = t1._currentIterator;
- t2 = t2.get$current(t2);
- if (t2 != null)
- t2._downstream.add$1(0, this);
- }
- },
- _replaceUpstream$1: function(allUpstream) {
- var t3, t4, t5, _this = this,
- t1 = M.StylesheetNode,
- t2 = P.LinkedHashSet_LinkedHashSet(t1);
- for (t3 = _this._upstream.get$values(), t3 = t3.get$iterator(t3); t3.moveNext$0();)
- t2.add$1(0, t3.get$current(t3));
- for (t3 = _this._upstreamImports.get$values(), t3 = t3.get$iterator(t3); t3.moveNext$0();)
- t2.add$1(0, t3.get$current(t3));
- t2.remove$1(0, null);
- t1 = P.LinkedHashSet_LinkedHashSet(t1);
- for (t3 = allUpstream.item1, t4 = t3.get$values(), t4 = t4.get$iterator(t4); t4.moveNext$0();)
- t1.add$1(0, t4.get$current(t4));
- for (t4 = allUpstream.item2, t5 = t4.get$values(), t5 = t5.get$iterator(t5); t5.moveNext$0();)
- t1.add$1(0, t5.get$current(t5));
- t1.remove$1(0, null);
- for (t5 = t2.difference$1(t1), t5 = P._LinkedHashSetIterator$(t5, t5._collection$_modifications); t5.moveNext$0();)
- t5._collection$_current._downstream.remove$1(0, _this);
- for (t1 = t1.difference$1(t2), t1 = P._LinkedHashSetIterator$(t1, t1._collection$_modifications); t1.moveNext$0();)
- t1._collection$_current._downstream.add$1(0, _this);
- _this._upstream = t3;
- _this._upstreamImports = t4;
- },
- _stylesheet_graph$_remove$0: function() {
- var t2, t3, t4, _i, url, _this = this,
- t1 = P.LinkedHashSet_LinkedHashSet(M.StylesheetNode);
- for (t2 = _this._upstream.get$values(), t2 = t2.get$iterator(t2); t2.moveNext$0();)
- t1.add$1(0, t2.get$current(t2));
- for (t2 = _this._upstreamImports.get$values(), t2 = t2.get$iterator(t2); t2.moveNext$0();)
- t1.add$1(0, t2.get$current(t2));
- t1 = P._LinkedHashSetIterator$(t1, t1._collection$_modifications);
- for (; t1.moveNext$0();) {
- t2 = t1._collection$_current;
- if (t2 == null)
- continue;
- t2._downstream.remove$1(0, _this);
- }
- for (t1 = _this._downstream, t1 = t1.get$iterator(t1); t1.moveNext$0();) {
- t2 = t1.get$current(t1);
- for (t3 = J.toList$0$ax(t2._upstream.get$keys()), t4 = t3.length, _i = 0; _i < t3.length; t3.length === t4 || (0, H.throwConcurrentModificationError)(t3), ++_i) {
- url = t3[_i];
- if (J.$eq$(t2._upstream.$index(0, url), _this)) {
- t2._upstream.$indexSet(0, url, null);
- break;
- }
- }
- for (t3 = J.toList$0$ax(t2._upstreamImports.get$keys()), t4 = t3.length, _i = 0; _i < t3.length; t3.length === t4 || (0, H.throwConcurrentModificationError)(t3), ++_i) {
- url = t3[_i];
- if (J.$eq$(t2._upstreamImports.$index(0, url), _this)) {
- t2._upstreamImports.$indexSet(0, url, null);
- break;
- }
- }
- }
- }
- };
- M.Syntax.prototype = {
- toString$0: function(_) {
- return this._name;
- }
- };
- G.FixedLengthListBuilder.prototype = {
- add$1: function(_, element) {
- var t1, _this = this;
- _this._checkUnbuilt$0();
- t1 = _this._fixed_length_list_builder$_index;
- _this._list[t1] = element;
- _this._fixed_length_list_builder$_index = t1 + 1;
- },
- addAll$1: function(_, elements) {
- var _this = this;
- _this._checkUnbuilt$0();
- C.JSArray_methods.setAll$2(_this._list, _this._fixed_length_list_builder$_index, elements);
- _this._fixed_length_list_builder$_index = _this._fixed_length_list_builder$_index + elements.length;
- },
- addRange$3: function(elements, start, end) {
- var $length, t1, _this = this;
- _this._checkUnbuilt$0();
- $length = (end == null ? J.get$length$asx(elements._collection$_source) : end) - start;
- t1 = _this._fixed_length_list_builder$_index;
- C.JSArray_methods.setRange$4(_this._list, t1, t1 + $length, elements, start);
- _this._fixed_length_list_builder$_index += $length;
- },
- addRange$2: function(elements, start) {
- return this.addRange$3(elements, start, null);
- },
- build$0: function() {
- this._checkUnbuilt$0();
- this._fixed_length_list_builder$_index = -1;
- return this._list;
- },
- _checkUnbuilt$0: function() {
- if (this._fixed_length_list_builder$_index === -1)
- throw H.wrapException(P.StateError$("build() has already been called."));
- }
- };
- K.LimitedMapView.prototype = {
- get$keys: function() {
- return this._limited_map_view$_keys;
- },
- get$length: function(_) {
- return this._limited_map_view$_keys._collection$_length;
- },
- get$isEmpty: function(_) {
- return this._limited_map_view$_keys._collection$_length === 0;
- },
- get$isNotEmpty: function(_) {
- return this._limited_map_view$_keys._collection$_length !== 0;
- },
- $index: function(_, key) {
- return this._limited_map_view$_keys.contains$1(0, key) ? this._limited_map_view$_map.$index(0, key) : null;
- },
- containsKey$1: function(key) {
- return this._limited_map_view$_keys.contains$1(0, key);
- },
- remove$1: function(_, key) {
- return this._limited_map_view$_keys.contains$1(0, key) ? this._limited_map_view$_map.remove$1(0, key) : null;
- }
- };
- Z.MergedMapView.prototype = {
- get$keys: function() {
- return this._mapsByKey.get$keys();
- },
- get$length: function(_) {
- var t1 = this._mapsByKey;
- return t1.get$length(t1);
- },
- get$isEmpty: function(_) {
- var t1 = this._mapsByKey;
- return t1.get$isEmpty(t1);
- },
- get$isNotEmpty: function(_) {
- var t1 = this._mapsByKey;
- return t1.get$isNotEmpty(t1);
- },
- MergedMapView$1: function(maps, $K, $V) {
- var t1, t2, t3, _i, map, t4, t5;
- for (t1 = maps.length, t2 = this._mapsByKey, t3 = [$K, $V], _i = 0; _i < maps.length; maps.length === t1 || (0, H.throwConcurrentModificationError)(maps), ++_i) {
- map = maps[_i];
- if (H.checkSubtype(map, "$isMergedMapView", t3, null))
- for (t4 = map._mapsByKey.get$values(), t4 = t4.get$iterator(t4); t4.moveNext$0();) {
- t5 = t4.get$current(t4);
- B.setAll(t2, t5.get$keys(), t5);
- }
- else
- B.setAll(t2, map.get$keys(), map);
- }
- },
- $index: function(_, key) {
- var child = this._mapsByKey.$index(0, key);
- return child == null ? null : child.$index(0, key);
- },
- $indexSet: function(_, key, value) {
- var child = this._mapsByKey.$index(0, key);
- if (child == null)
- throw H.wrapException(P.UnsupportedError$("New entries may not be added to MergedMapView."));
- child.$indexSet(0, key, value);
- },
- remove$1: function(_, key) {
- throw H.wrapException(P.UnsupportedError$("Entries may not be removed from MergedMapView."));
- },
- containsKey$1: function(key) {
- return this._mapsByKey.containsKey$1(key);
- }
- };
- U.MultiDirWatcher.prototype = {
- watch$1: function(_, directory) {
- var t1, t2, t3, t4, isParentOfExistingDir, _i, existingDir, t5, future, completer;
- for (t1 = this._watchers, t2 = t1.get$keys(), t2 = P.List_List$from(t2, true, H.getRuntimeTypeArgument(t2, "Iterable", 0)), t3 = t2.length, t4 = this._group, isParentOfExistingDir = false, _i = 0; _i < t2.length; t2.length === t3 || (0, H.throwConcurrentModificationError)(t2), ++_i) {
- existingDir = t2[_i];
- if (!isParentOfExistingDir) {
- t5 = $.$get$context();
- t5 = t5._isWithinOrEquals$2(existingDir, directory) === C._PathRelation_equal || t5._isWithinOrEquals$2(existingDir, directory) === C._PathRelation_within;
- } else
- t5 = false;
- if (t5) {
- t1 = new P._Future($.Zone__current, [-1]);
- t1._asyncComplete$1(null);
- return t1;
- }
- if ($.$get$context()._isWithinOrEquals$2(directory, existingDir) === C._PathRelation_within) {
- t4.remove$1(0, t1.remove$1(0, existingDir));
- isParentOfExistingDir = true;
- }
- }
- future = B.watchDir(directory, this._poll);
- t2 = E.WatchEvent;
- t3 = new Y._CompleterStream([t2]);
- completer = new Y.StreamCompleter(t3, [t2]);
- future.then$1$2$onError(completer.get$setSourceStream(), completer.get$setError(), -1);
- t1.$indexSet(0, directory, t3);
- t4.add$1(0, t3);
- return future;
- }
- };
- N.NoSourceMapBuffer.prototype = {
- get$length: function(_) {
- return this._no_source_map_buffer$_buffer._contents.length;
- },
- get$sourceFiles: function() {
- return C.Map_empty;
- },
- forSpan$1$2: function(span, callback) {
- return callback.call$0();
- },
- forSpan$2: function(span, callback) {
- return this.forSpan$1$2(span, callback, null);
- },
- write$1: function(_, object) {
- this._no_source_map_buffer$_buffer._contents += H.S(object);
- return;
- },
- writeCharCode$1: function(charCode) {
- this._no_source_map_buffer$_buffer._contents += H.Primitives_stringFromCharCode(charCode);
- return;
- },
- toString$0: function(_) {
- var t1 = this._no_source_map_buffer$_buffer._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- buildSourceMap$1$prefix: function(prefix) {
- return H.throwExpression(P.UnsupportedError$("NoSourceMapBuffer.buildSourceMap() is not supported."));
- },
- $isStringBuffer: 1
- };
- F.PrefixedMapView.prototype = {
- get$keys: function() {
- return new F._PrefixedKeys(this);
- },
- get$length: function(_) {
- var t1 = this._prefixed_map_view$_map;
- return t1.get$length(t1);
- },
- get$isEmpty: function(_) {
- var t1 = this._prefixed_map_view$_map;
- return t1.get$isEmpty(t1);
- },
- get$isNotEmpty: function(_) {
- var t1 = this._prefixed_map_view$_map;
- return t1.get$isNotEmpty(t1);
- },
- $index: function(_, key) {
- return typeof key === "string" && C.JSString_methods.startsWith$1(key, this._prefix) ? this._prefixed_map_view$_map.$index(0, J.substring$1$s(key, this._prefix.length)) : null;
- },
- containsKey$1: function(key) {
- return typeof key === "string" && C.JSString_methods.startsWith$1(key, this._prefix) && this._prefixed_map_view$_map.containsKey$1(J.substring$1$s(key, this._prefix.length));
- },
- $asMapMixin: function($V) {
- return [P.String, $V];
- },
- $asMap: function($V) {
- return [P.String, $V];
- }
- };
- F._PrefixedKeys.prototype = {
- get$length: function(_) {
- var t1 = this._view._prefixed_map_view$_map;
- return t1.get$length(t1);
- },
- get$iterator: function(_) {
- var t1 = J.map$1$1$ax(this._view._prefixed_map_view$_map.get$keys(), new F._PrefixedKeys_iterator_closure(this), P.String);
- return t1.get$iterator(t1);
- },
- contains$1: function(_, key) {
- return this._view.containsKey$1(key);
- },
- $asIterable: function() {
- return [P.String];
- }
- };
- F._PrefixedKeys_iterator_closure.prototype = {
- call$1: function(key) {
- return this.$this._view._prefix + H.S(key);
- }
- };
- U.PublicMemberMapView.prototype = {
- get$keys: function() {
- return J.where$1$ax(this._inner.get$keys(), B.utils__isPublic$closure());
- },
- containsKey$1: function(key) {
- return typeof key === "string" && B.isPublic(key) && this._inner.containsKey$1(key);
- },
- $index: function(_, key) {
- if (typeof key === "string" && B.isPublic(key))
- return this._inner.$index(0, key);
- return;
- },
- $asMapMixin: function($V) {
- return [P.String, $V];
- },
- $asMap: function($V) {
- return [P.String, $V];
- }
- };
- D.SourceMapBuffer.prototype = {
- get$sourceFiles: function() {
- var t1 = Y.SourceFile,
- t2 = P.String;
- return new P.UnmodifiableMapView(Y.mapMap(this._sourceFiles, new D.SourceMapBuffer_sourceFiles_closure(), null, P.Uri, t1, t2, t1), [t2, t1]);
- },
- get$_targetLocation: function() {
- var t1 = this._source_map_buffer$_buffer._contents,
- t2 = this._line;
- return V.SourceLocation$(t1.length, this._column, t2, null);
- },
- get$length: function(_) {
- return this._source_map_buffer$_buffer._contents.length;
- },
- forSpan$1$2: function(span, callback) {
- var t1, _this = this,
- wasInSpan = _this._inSpan;
- _this._inSpan = true;
- _this._addEntry$2(Y.FileLocation$_(span.file, span._start), _this.get$_targetLocation());
- try {
- t1 = callback.call$0();
- return t1;
- } finally {
- _this._inSpan = wasInSpan;
- }
- },
- forSpan$2: function(span, callback) {
- return this.forSpan$1$2(span, callback, null);
- },
- _addEntry$2: function(source, target) {
- var entry, t2,
- t1 = this._entries;
- if (t1.length !== 0) {
- entry = C.JSArray_methods.get$last(t1);
- t2 = entry.source;
- if (t2.file.getLine$1(t2.offset) == source.file.getLine$1(source.offset) && entry.target.line === target.line)
- return;
- if (entry.target.offset === target.offset)
- return;
- }
- this._sourceFiles.putIfAbsent$2(source.file.url, new D.SourceMapBuffer__addEntry_closure(source));
- t1.push(new L.Entry(source, target, null));
- },
- write$1: function(_, object) {
- var t1, i,
- string = J.toString$0$(object);
- this._source_map_buffer$_buffer._contents += H.S(string);
- for (t1 = string.length, i = 0; i < t1; ++i)
- if (C.JSString_methods._codeUnitAt$1(string, i) === 10)
- this._writeLine$0();
- else
- ++this._column;
- },
- writeCharCode$1: function(charCode) {
- this._source_map_buffer$_buffer._contents += H.Primitives_stringFromCharCode(charCode);
- if (charCode === 10)
- this._writeLine$0();
- else
- ++this._column;
- },
- _writeLine$0: function() {
- var _this = this,
- t1 = _this._entries;
- if (C.JSArray_methods.get$last(t1).target.line === _this._line && C.JSArray_methods.get$last(t1).target.column === _this._column)
- t1.pop();
- ++_this._line;
- _this._column = 0;
- if (_this._inSpan)
- t1.push(new L.Entry(C.JSArray_methods.get$last(t1).source, _this.get$_targetLocation(), null));
- },
- toString$0: function(_) {
- var t1 = this._source_map_buffer$_buffer._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- buildSourceMap$1$prefix: function(prefix) {
- var i, t2, prefixColumn, _box_0 = {},
- t1 = prefix.length;
- if (t1 === 0)
- return T.SingleMapping_SingleMapping$fromEntries(this._entries);
- _box_0.prefixColumn = _box_0.prefixLines = 0;
- for (i = 0, t2 = 0; i < t1; ++i)
- if (C.JSString_methods._codeUnitAt$1(prefix, i) === 10) {
- ++_box_0.prefixLines;
- _box_0.prefixColumn = 0;
- t2 = 0;
- } else {
- prefixColumn = t2 + 1;
- _box_0.prefixColumn = prefixColumn;
- t2 = prefixColumn;
- }
- t2 = this._entries;
- return T.SingleMapping_SingleMapping$fromEntries(new H.MappedListIterable(t2, new D.SourceMapBuffer_buildSourceMap_closure(_box_0, t1), [H.getTypeArgumentByIndex(t2, 0), L.Entry]));
- },
- $isStringBuffer: 1
- };
- D.SourceMapBuffer_sourceFiles_closure.prototype = {
- call$2: function(url, _) {
- return J.toString$0$(url);
- },
- $signature: 54
- };
- D.SourceMapBuffer__addEntry_closure.prototype = {
- call$0: function() {
- return this.source.file;
- }
- };
- D.SourceMapBuffer_buildSourceMap_closure.prototype = {
- call$1: function(entry) {
- var t1 = entry.source,
- t2 = entry.target,
- t3 = t2.line,
- t4 = this._box_0,
- t5 = t4.prefixLines;
- t4 = t3 === 0 ? t4.prefixColumn : 0;
- return new L.Entry(t1, V.SourceLocation$(t2.offset + this.prefixLength, t2.column + t4, t3 + t5, null), entry.identifierName);
- }
- };
- R.UnprefixedMapView.prototype = {
- get$keys: function() {
- return new R._UnprefixedKeys(this);
- },
- $index: function(_, key) {
- return typeof key === "string" ? this._unprefixed_map_view$_map.$index(0, J.$add$ansx(this._unprefixed_map_view$_prefix, key)) : null;
- },
- containsKey$1: function(key) {
- return typeof key === "string" && this._unprefixed_map_view$_map.containsKey$1(J.$add$ansx(this._unprefixed_map_view$_prefix, key));
- },
- remove$1: function(_, key) {
- return typeof key === "string" ? this._unprefixed_map_view$_map.remove$1(0, J.$add$ansx(this._unprefixed_map_view$_prefix, key)) : null;
- },
- $asMapMixin: function($V) {
- return [P.String, $V];
- },
- $asMap: function($V) {
- return [P.String, $V];
- }
- };
- R._UnprefixedKeys.prototype = {
- get$iterator: function(_) {
- var t1 = J.where$1$ax(this._unprefixed_map_view$_view._unprefixed_map_view$_map.get$keys(), new R._UnprefixedKeys_iterator_closure(this)).map$1$1(0, new R._UnprefixedKeys_iterator_closure0(this), P.String);
- return t1.get$iterator(t1);
- },
- contains$1: function(_, key) {
- return this._unprefixed_map_view$_view.containsKey$1(key);
- },
- $asIterable: function() {
- return [P.String];
- }
- };
- R._UnprefixedKeys_iterator_closure.prototype = {
- call$1: function(key) {
- return J.startsWith$1$s(key, this.$this._unprefixed_map_view$_view._unprefixed_map_view$_prefix);
- }
- };
- R._UnprefixedKeys_iterator_closure0.prototype = {
- call$1: function(key) {
- return J.substring$1$s(key, this.$this._unprefixed_map_view$_view._unprefixed_map_view$_prefix.length);
- }
- };
- B.indent_closure.prototype = {
- call$1: function(line) {
- return C.JSString_methods.$add(C.JSString_methods.$mul(" ", this.indentation), line);
- }
- };
- B.flattenVertically_closure.prototype = {
- call$1: function(inner) {
- return Q.QueueList_QueueList$from(inner, this.T);
- }
- };
- B.flattenVertically_closure0.prototype = {
- call$1: function(queue) {
- this.result.push(queue.removeFirst$0());
- return queue.get$length(queue) === 0;
- }
- };
- B.longestCommonSubsequence_closure.prototype = {
- call$2: function(element1, element2) {
- return J.$eq$(element1, element2) ? element1 : null;
- },
- $signature: function() {
- var t1 = this.T;
- return {func: 1, ret: t1, args: [t1, t1]};
- }
- };
- B.longestCommonSubsequence_closure0.prototype = {
- call$1: function(_) {
- return P.List_List$filled(J.get$length$asx(this.list2) + 1, 0, P.int);
- },
- $signature: 55
- };
- B.longestCommonSubsequence_closure1.prototype = {
- call$1: function(_) {
- var t1 = new Array(J.get$length$asx(this.list2));
- t1.fixed$length = Array;
- return H.setRuntimeTypeInfo(t1, [this.T]);
- },
- $signature: function() {
- return {func: 1, ret: [P.List, this.T], args: [P.int]};
- }
- };
- B.longestCommonSubsequence_backtrack.prototype = {
- call$2: function(i, j) {
- var selection, t1, _this = this;
- if (i === -1 || j === -1)
- return H.setRuntimeTypeInfo([], [_this.T]);
- selection = J.$index$asx(_this.selections[i], j);
- if (selection != null) {
- t1 = _this.call$2(i - 1, j - 1);
- J.add$1$ax(t1, selection);
- return t1;
- }
- t1 = _this.lengths;
- return J.$index$asx(t1[i + 1], j) > J.$index$asx(t1[i], j + 1) ? _this.call$2(i, j - 1) : _this.call$2(i - 1, j);
- }
- };
- B.mapAddAll2_closure.prototype = {
- call$2: function(key, inner) {
- var t1 = this.destination;
- if (t1.containsKey$1(key))
- t1.$index(0, key).addAll$1(0, inner);
- else
- t1.$indexSet(0, key, inner);
- }
- };
- B.mapMapAsync_closure.prototype = {
- call$2: function(mapKey, _) {
- return this.$call$body$mapMapAsync_closure(mapKey, _, this.K2);
- },
- $call$body$mapMapAsync_closure: function(mapKey, _, $async$type) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter($async$type),
- $async$returnValue, $async$self = this;
- var $async$call$2 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$returnValue = H.subtypeOfRuntimeTypeCast(mapKey, $async$self.K2);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$2, $async$completer);
- },
- $signature: function() {
- return {func: 1, ret: [P.Future, this.K2], args: [this.K1, this.V1]};
- }
- };
- B.copyMapOfMap_closure.prototype = {
- call$2: function(_, innerMap) {
- return P.LinkedHashMap_LinkedHashMap$of(innerMap, this.K2, this.V);
- }
- };
- B.copyMapOfList_closure.prototype = {
- call$2: function(_, list) {
- return J.toList$0$ax(list);
- }
- };
- F.Value.prototype = {
- get$isTruthy: function() {
- return true;
- },
- get$separator: function() {
- return C.ListSeparator_undecided;
- },
- get$hasBrackets: function() {
- return false;
- },
- get$asList: function() {
- return H.setRuntimeTypeInfo([this], [F.Value]);
- },
- get$lengthAsList: function() {
- return 1;
- },
- get$isBlank: function() {
- return false;
- },
- get$isSpecialNumber: function() {
- return false;
- },
- get$isVar: function() {
- return false;
- },
- get$realNull: function() {
- return this;
- },
- sassIndexToListIndex$2: function(sassIndex, $name) {
- var _this = this,
- index = sassIndex.assertNumber$1($name).assertInt$1($name);
- if (index === 0)
- throw H.wrapException(_this._value$_exception$2("List index may not be 0.", $name));
- if (Math.abs(index) > _this.get$lengthAsList())
- throw H.wrapException(_this._value$_exception$2("Invalid index " + sassIndex.toString$0(0) + " for a list with " + _this.get$lengthAsList() + " elements.", $name));
- return index < 0 ? _this.get$lengthAsList() + index : index - 1;
- },
- assertColor$1: function($name) {
- return H.throwExpression(this._value$_exception$2(this.toString$0(0) + " is not a color.", $name));
- },
- assertFunction$1: function($name) {
- return H.throwExpression(this._value$_exception$2(this.toString$0(0) + " is not a function reference.", $name));
- },
- assertMap$1: function($name) {
- return H.throwExpression(this._value$_exception$2(this.toString$0(0) + " is not a map.", $name));
- },
- assertNumber$1: function($name) {
- return H.throwExpression(this._value$_exception$2(this.toString$0(0) + " is not a number.", $name));
- },
- assertNumber$0: function() {
- return this.assertNumber$1(null);
- },
- assertString$1: function($name) {
- return H.throwExpression(this._value$_exception$2(this.toString$0(0) + " is not a string.", $name));
- },
- assertSelector$2$allowParent$name: function(allowParent, $name) {
- var error, t1, exception,
- string = this._selectorString$1($name);
- try {
- t1 = D.SelectorList_SelectorList$parse(string, allowParent, true, null);
- return t1;
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (t1 instanceof E.SassFormatException) {
- error = t1;
- throw H.wrapException(this._value$_exception$2(C.JSString_methods.replaceFirst$2(J.toString$0$(error), "Error: ", ""), $name));
- } else
- throw exception;
- }
- },
- assertSelector$1$name: function($name) {
- return this.assertSelector$2$allowParent$name(false, $name);
- },
- assertSelector$0: function() {
- return this.assertSelector$2$allowParent$name(false, null);
- },
- assertSelector$1$allowParent: function(allowParent) {
- return this.assertSelector$2$allowParent$name(allowParent, null);
- },
- assertCompoundSelector$1$name: function($name) {
- var error, t1, exception,
- allowParent = false,
- string = this._selectorString$1($name);
- try {
- t1 = S.SpanScanner$(string, null);
- t1 = new T.SelectorParser(allowParent, true, t1, C.StderrLogger_false).parseCompoundSelector$0();
- return t1;
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (t1 instanceof E.SassFormatException) {
- error = t1;
- throw H.wrapException(this._value$_exception$2(C.JSString_methods.replaceFirst$2(J.toString$0$(error), "Error: ", ""), $name));
- } else
- throw exception;
- }
- },
- _selectorString$1: function($name) {
- var string = this._selectorStringOrNull$0();
- if (string != null)
- return string;
- throw H.wrapException(this._value$_exception$2(this.toString$0(0) + " is not a valid selector: it must be a string,\na list of strings, or a list of lists of strings.", $name));
- },
- _selectorString$0: function() {
- return this._selectorString$1(null);
- },
- _selectorStringOrNull$0: function() {
- var t1, t2, result, t3, _i, complex, t4, string, compound, _this = this;
- if (!!_this.$isSassString)
- return _this.text;
- if (!_this.$isSassList)
- return;
- t1 = _this._list$_contents;
- t2 = t1.length;
- if (t2 === 0)
- return;
- result = H.setRuntimeTypeInfo([], [P.String]);
- t3 = _this.separator === C.ListSeparator_comma;
- if (t3)
- for (_i = 0; _i < t2; ++_i) {
- complex = t1[_i];
- t4 = J.getInterceptor$(complex);
- if (!!t4.$isSassString)
- result.push(complex.text);
- else if (!!t4.$isSassList && complex.separator === C.ListSeparator_space) {
- string = complex._selectorString$0();
- result.push(string);
- } else
- return;
- }
- else
- for (_i = 0; _i < t2; ++_i) {
- compound = t1[_i];
- if (compound instanceof D.SassString)
- result.push(compound.text);
- else
- return;
- }
- return C.JSArray_methods.join$1(result, t3 ? ", " : " ");
- },
- changeListContents$2$separator: function(contents, separator) {
- var t1 = separator == null ? this.get$separator() : separator,
- t2 = this.get$hasBrackets();
- return D.SassList$(contents, t1, t2);
- },
- changeListContents$1: function(contents) {
- return this.changeListContents$2$separator(contents, null);
- },
- greaterThan$1: function(other) {
- return H.throwExpression(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " > " + H.S(other) + '".'));
- },
- greaterThanOrEquals$1: function(other) {
- return H.throwExpression(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " >= " + H.S(other) + '".'));
- },
- lessThan$1: function(other) {
- return H.throwExpression(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " < " + H.S(other) + '".'));
- },
- lessThanOrEquals$1: function(other) {
- return H.throwExpression(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " <= " + H.S(other) + '".'));
- },
- times$1: function(other) {
- return H.throwExpression(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " * " + H.S(other) + '".'));
- },
- modulo$1: function(other) {
- return H.throwExpression(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " % " + H.S(other) + '".'));
- },
- plus$1: function(other) {
- var t1;
- if (other instanceof D.SassString)
- return new D.SassString(C.JSString_methods.$add(N.serializeValue(this, false, true), other.text), other.hasQuotes);
- else {
- t1 = N.serializeValue(this, false, true);
- other.toString;
- return new D.SassString(t1 + N.serializeValue(other, false, true), false);
- }
- },
- minus$1: function(other) {
- var t1 = N.serializeValue(this, false, true) + "-";
- other.toString;
- return new D.SassString(t1 + N.serializeValue(other, false, true), false);
- },
- dividedBy$1: function(other) {
- var t1 = N.serializeValue(this, false, true) + "/";
- other.toString;
- return new D.SassString(t1 + N.serializeValue(other, false, true), false);
- },
- unaryPlus$0: function() {
- return new D.SassString("+" + N.serializeValue(this, false, true), false);
- },
- unaryMinus$0: function() {
- return new D.SassString("-" + N.serializeValue(this, false, true), false);
- },
- unaryNot$0: function() {
- return C.SassBoolean_false;
- },
- withoutSlash$0: function() {
- return this;
- },
- toString$0: function(_) {
- return N.serializeValue(this, true, true);
- },
- _value$_exception$2: function(message, $name) {
- return new E.SassScriptException($name == null ? message : "$" + $name + ": " + message);
- }
- };
- D.SassArgumentList.prototype = {};
- Z.SassBoolean.prototype = {
- get$isTruthy: function() {
- return this.value;
- },
- accept$1$1: function(visitor) {
- return visitor._serialize$_buffer.write$1(0, String(this.value));
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- unaryNot$0: function() {
- return this.value ? C.SassBoolean_false : C.SassBoolean_true;
- }
- };
- K.SassColor.prototype = {
- get$red: function() {
- if (this._red == null)
- this._hslToRgb$0();
- return this._red;
- },
- get$green: function() {
- if (this._green == null)
- this._hslToRgb$0();
- return this._green;
- },
- get$blue: function() {
- if (this._blue == null)
- this._hslToRgb$0();
- return this._blue;
- },
- get$hue: function() {
- if (this._hue == null)
- this._rgbToHsl$0();
- return this._hue;
- },
- get$saturation: function() {
- if (this._saturation == null)
- this._rgbToHsl$0();
- return this._saturation;
- },
- get$lightness: function() {
- if (this._lightness == null)
- this._rgbToHsl$0();
- return this._lightness;
- },
- get$original: function() {
- var t1 = this.originalSpan;
- return t1 == null ? null : P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(t1.file._decodedChars, t1._start, t1._file$_end), 0, null);
- },
- accept$1$1: function(visitor) {
- return visitor.visitColor$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- assertColor$1: function($name) {
- return this;
- },
- changeRgb$4$alpha$blue$green$red: function(alpha, blue, green, red) {
- var _this = this,
- t1 = red == null ? _this.get$red() : red,
- t2 = green == null ? _this.get$green() : green,
- t3 = blue == null ? _this.get$blue() : blue;
- return K.SassColor$rgb(t1, t2, t3, alpha == null ? _this.alpha : alpha, null);
- },
- changeRgb$3$blue$green$red: function(blue, green, red) {
- return this.changeRgb$4$alpha$blue$green$red(null, blue, green, red);
- },
- changeRgb$1$alpha: function(alpha) {
- return this.changeRgb$4$alpha$blue$green$red(alpha, null, null, null);
- },
- changeRgb$1$blue: function(blue) {
- return this.changeRgb$4$alpha$blue$green$red(null, blue, null, null);
- },
- changeRgb$1$green: function(green) {
- return this.changeRgb$4$alpha$blue$green$red(null, null, green, null);
- },
- changeRgb$1$red: function(red) {
- return this.changeRgb$4$alpha$blue$green$red(null, null, null, red);
- },
- changeHsl$4$alpha$hue$lightness$saturation: function(alpha, hue, lightness, saturation) {
- var _this = this,
- t1 = hue == null ? _this.get$hue() : hue,
- t2 = saturation == null ? _this.get$saturation() : saturation,
- t3 = lightness == null ? _this.get$lightness() : lightness;
- return K.SassColor$hsl(t1, t2, t3, alpha == null ? _this.alpha : alpha);
- },
- changeHsl$3$alpha$lightness$saturation: function(alpha, lightness, saturation) {
- return this.changeHsl$4$alpha$hue$lightness$saturation(alpha, null, lightness, saturation);
- },
- changeHsl$1$saturation: function(saturation) {
- return this.changeHsl$4$alpha$hue$lightness$saturation(null, null, null, saturation);
- },
- changeHsl$1$lightness: function(lightness) {
- return this.changeHsl$4$alpha$hue$lightness$saturation(null, null, lightness, null);
- },
- changeHsl$1$hue: function(hue) {
- return this.changeHsl$4$alpha$hue$lightness$saturation(null, hue, null, null);
- },
- changeAlpha$1: function(alpha) {
- var _this = this;
- return new K.SassColor(_this._red, _this._green, _this._blue, _this._hue, _this._saturation, _this._lightness, T.fuzzyAssertRange(alpha, 0, 1, "alpha"), null);
- },
- plus$1: function(other) {
- var t1 = J.getInterceptor$(other);
- if (!t1.$isSassNumber && !t1.$isSassColor)
- return this.super$Value$plus(other);
- throw H.wrapException(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " + " + H.S(other) + '".'));
- },
- minus$1: function(other) {
- var t1 = J.getInterceptor$(other);
- if (!t1.$isSassNumber && !t1.$isSassColor)
- return this.super$Value$minus(other);
- throw H.wrapException(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " - " + H.S(other) + '".'));
- },
- dividedBy$1: function(other) {
- var t1 = J.getInterceptor$(other);
- if (!t1.$isSassNumber && !t1.$isSassColor)
- return this.super$Value$dividedBy(other);
- throw H.wrapException(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " / " + H.S(other) + '".'));
- },
- modulo$1: function(other) {
- return H.throwExpression(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " % " + H.S(other) + '".'));
- },
- $eq: function(_, other) {
- var _this = this;
- if (other == null)
- return false;
- return other instanceof K.SassColor && other.get$red() == _this.get$red() && other.get$green() == _this.get$green() && other.get$blue() == _this.get$blue() && other.alpha === _this.alpha;
- },
- get$hashCode: function(_) {
- var _this = this;
- return J.get$hashCode$(_this.get$red()) ^ J.get$hashCode$(_this.get$green()) ^ J.get$hashCode$(_this.get$blue()) ^ C.JSNumber_methods.get$hashCode(_this.alpha);
- },
- _rgbToHsl$0: function() {
- var t2, t3, _this = this,
- scaledRed = _this.get$red() / 255,
- scaledGreen = _this.get$green() / 255,
- scaledBlue = _this.get$blue() / 255,
- max = Math.max(Math.max(scaledRed, scaledGreen), scaledBlue),
- min = Math.min(Math.min(scaledRed, scaledGreen), scaledBlue),
- delta = max - min,
- t1 = max === min;
- if (t1)
- _this._hue = 0;
- else if (max === scaledRed)
- _this._hue = C.JSDouble_methods.$mod(60 * (scaledGreen - scaledBlue) / delta, 360);
- else if (max === scaledGreen)
- _this._hue = C.JSNumber_methods.$mod(120 + 60 * (scaledBlue - scaledRed) / delta, 360);
- else if (max === scaledBlue)
- _this._hue = C.JSNumber_methods.$mod(240 + 60 * (scaledRed - scaledGreen) / delta, 360);
- t2 = max + min;
- t3 = 50 * t2;
- _this._lightness = t3;
- if (t1)
- _this._saturation = 0;
- else {
- t1 = 100 * delta;
- if (t3 < 50)
- _this._saturation = t1 / t2;
- else
- _this._saturation = t1 / (2 - max - min);
- }
- },
- _hslToRgb$0: function() {
- var _this = this,
- scaledHue = _this.get$hue() / 360,
- scaledSaturation = _this.get$saturation() / 100,
- scaledLightness = _this.get$lightness() / 100,
- m2 = scaledLightness <= 0.5 ? scaledLightness * (scaledSaturation + 1) : scaledLightness + scaledSaturation - scaledLightness * scaledSaturation,
- m1 = scaledLightness * 2 - m2;
- _this._red = _this._hueToRgb$3(m1, m2, scaledHue + 0.3333333333333333);
- _this._green = _this._hueToRgb$3(m1, m2, scaledHue);
- _this._blue = _this._hueToRgb$3(m1, m2, scaledHue - 0.3333333333333333);
- },
- _hueToRgb$3: function(m1, m2, hue) {
- var result;
- if (hue < 0)
- ++hue;
- if (hue > 1)
- --hue;
- if (hue < 0.16666666666666666)
- result = m1 + (m2 - m1) * hue * 6;
- else if (hue < 0.5)
- result = m2;
- else
- result = hue < 0.6666666666666666 ? m1 + (m2 - m1) * (0.6666666666666666 - hue) * 6 : m1;
- return T.fuzzyRound(result * 255);
- }
- };
- F.SassFunction.prototype = {
- accept$1$1: function(visitor) {
- var t1;
- if (!visitor._inspect)
- H.throwExpression(E.SassScriptException$(this.toString$0(0) + " isn't a valid CSS value."));
- t1 = visitor._serialize$_buffer;
- t1.write$1(0, "get-function(");
- visitor._visitQuotedString$1(this.callable.get$name());
- t1.writeCharCode$1(41);
- return;
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- assertFunction$1: function($name) {
- return this;
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof F.SassFunction && J.$eq$(this.callable, other.callable);
- },
- get$hashCode: function(_) {
- return J.get$hashCode$(this.callable);
- }
- };
- D.SassList.prototype = {
- get$isBlank: function() {
- return C.JSArray_methods.every$1(this._list$_contents, new D.SassList_isBlank_closure());
- },
- get$asList: function() {
- return this._list$_contents;
- },
- get$lengthAsList: function() {
- return this._list$_contents.length;
- },
- SassList$3$brackets: function(contents, separator, brackets) {
- if (this.separator === C.ListSeparator_undecided && this._list$_contents.length > 1)
- throw H.wrapException(P.ArgumentError$("A list with more than one element must have an explicit separator."));
- },
- accept$1$1: function(visitor) {
- return visitor.visitList$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- assertMap$1: function($name) {
- return this._list$_contents.length === 0 ? C.SassMap_Map_empty : this.super$Value$assertMap($name);
- },
- $eq: function(_, other) {
- var t1, _this = this;
- if (other == null)
- return false;
- t1 = J.getInterceptor$(other);
- if (!(!!t1.$isSassList && other.separator === _this.separator && other.hasBrackets === _this.hasBrackets && C.C_ListEquality.equals$2(other._list$_contents, _this._list$_contents)))
- t1 = _this._list$_contents.length === 0 && !!t1.$isSassMap && other.get$asList().length === 0;
- else
- t1 = true;
- return t1;
- },
- get$hashCode: function(_) {
- return C.C_ListEquality.hash$1(this._list$_contents);
- },
- get$separator: function() {
- return this.separator;
- },
- get$hasBrackets: function() {
- return this.hasBrackets;
- }
- };
- D.SassList_isBlank_closure.prototype = {
- call$1: function(element) {
- return element.get$isBlank();
- }
- };
- D.ListSeparator.prototype = {
- toString$0: function(_) {
- return this._list$_name;
- }
- };
- A.SassMap.prototype = {
- get$separator: function() {
- var t1 = this.contents;
- return t1.get$isEmpty(t1) ? C.ListSeparator_undecided : C.ListSeparator_comma;
- },
- get$asList: function() {
- var result = H.setRuntimeTypeInfo([], [F.Value]);
- this.contents.forEach$1(0, new A.SassMap_asList_closure(result));
- return result;
- },
- get$lengthAsList: function() {
- var t1 = this.contents;
- return t1.get$length(t1);
- },
- accept$1$1: function(visitor) {
- return visitor.visitMap$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- assertMap$1: function($name) {
- return this;
- },
- $eq: function(_, other) {
- var t1, t2;
- if (other == null)
- return false;
- t1 = J.getInterceptor$(other);
- if (!(!!t1.$isSassMap && C.C_MapEquality.equals$2(other.contents, this.contents))) {
- t2 = this.contents;
- t1 = t2.get$isEmpty(t2) && !!t1.$isSassList && other._list$_contents.length === 0;
- } else
- t1 = true;
- return t1;
- },
- get$hashCode: function(_) {
- var t1 = this.contents;
- return t1.get$isEmpty(t1) ? C.C_ListEquality.hash$1(C.List_empty6) : C.C_MapEquality.hash$1(t1);
- }
- };
- A.SassMap_asList_closure.prototype = {
- call$2: function(key, value) {
- this.result.push(D.SassList$(H.setRuntimeTypeInfo([key, value], [F.Value]), C.ListSeparator_space, false));
- }
- };
- O.SassNull.prototype = {
- get$isTruthy: function() {
- return false;
- },
- get$isBlank: function() {
- return true;
- },
- get$realNull: function() {
- return;
- },
- accept$1$1: function(visitor) {
- if (visitor._inspect)
- visitor._serialize$_buffer.write$1(0, "null");
- return;
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- unaryNot$0: function() {
- return C.SassBoolean_true;
- }
- };
- T.SassNumber.prototype = {
- get$unitString: function() {
- var _this = this,
- t1 = _this.numeratorUnits;
- return t1.length !== 0 || _this.denominatorUnits.length !== 0 ? _this._unitString$2(t1, _this.denominatorUnits) : "";
- },
- accept$1$1: function(visitor) {
- return visitor.visitNumber$1(this);
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- withoutSlash$0: function() {
- var _this = this;
- if (_this.asSlash == null)
- return _this;
- return new T.SassNumber(_this.value, _this.numeratorUnits, _this.denominatorUnits, null);
- },
- withSlash$2: function(numerator, denominator) {
- var t1 = T.SassNumber;
- return new T.SassNumber(this.value, this.numeratorUnits, this.denominatorUnits, new S.Tuple2(numerator, denominator, [t1, t1]));
- },
- assertNumber$1: function($name) {
- return this;
- },
- assertNumber$0: function() {
- return this.assertNumber$1(null);
- },
- assertInt$1: function($name) {
- var t1 = this.value,
- integer = T.fuzzyIsInt(t1) ? J.round$0$n(t1) : null;
- if (integer != null)
- return integer;
- throw H.wrapException(this._number$_exception$2(this.toString$0(0) + " is not an int.", $name));
- },
- assertInt$0: function() {
- return this.assertInt$1(null);
- },
- valueInRange$3: function(min, max, $name) {
- var _this = this,
- result = T.fuzzyCheckRange(_this.value, min, max);
- if (result != null)
- return result;
- throw H.wrapException(_this._number$_exception$2("Expected " + _this.toString$0(0) + " to be within " + min + _this.get$unitString() + " and " + max + _this.get$unitString() + ".", $name));
- },
- hasUnit$1: function(unit) {
- var t1 = this.numeratorUnits;
- return t1.length === 1 && this.denominatorUnits.length === 0 && J.$eq$(C.JSArray_methods.get$first(t1), unit);
- },
- assertUnit$2: function(unit, $name) {
- if (this.hasUnit$1(unit))
- return;
- throw H.wrapException(this._number$_exception$2("Expected " + this.toString$0(0) + ' to have unit "' + unit + '".', $name));
- },
- assertNoUnits$1: function($name) {
- var _this = this;
- if (!(_this.numeratorUnits.length !== 0 || _this.denominatorUnits.length !== 0))
- return;
- throw H.wrapException(_this._number$_exception$2("Expected " + _this.toString$0(0) + " to have no units.", $name));
- },
- valueInUnits$2: function(newNumerators, newDenominators) {
- var t1, oldNumerators, t2, _i, oldDenominators, t3, _this = this, _box_0 = {};
- if (!(newNumerators.length === 0 && newDenominators.length === 0)) {
- t1 = _this.numeratorUnits;
- if (!(t1.length === 0 && _this.denominatorUnits.length === 0))
- t1 = C.C_ListEquality.equals$2(t1, newNumerators) && C.C_ListEquality.equals$2(_this.denominatorUnits, newDenominators);
- else
- t1 = true;
- } else
- t1 = true;
- if (t1)
- return _this.value;
- _box_0.value = _this.value;
- t1 = _this.numeratorUnits;
- oldNumerators = H.setRuntimeTypeInfo(t1.slice(0), [H.getTypeArgumentByIndex(t1, 0)]);
- for (t2 = newNumerators.length, _i = 0; _i < newNumerators.length; newNumerators.length === t2 || (0, H.throwConcurrentModificationError)(newNumerators), ++_i)
- B.removeFirstWhere(oldNumerators, new T.SassNumber_valueInUnits_closure(_box_0, _this, newNumerators[_i]), new T.SassNumber_valueInUnits_closure0(_this, newNumerators, newDenominators));
- t2 = _this.denominatorUnits;
- oldDenominators = H.setRuntimeTypeInfo(t2.slice(0), [H.getTypeArgumentByIndex(t2, 0)]);
- for (t3 = newDenominators.length, _i = 0; _i < newDenominators.length; newDenominators.length === t3 || (0, H.throwConcurrentModificationError)(newDenominators), ++_i)
- B.removeFirstWhere(oldDenominators, new T.SassNumber_valueInUnits_closure1(_box_0, _this, newDenominators[_i]), new T.SassNumber_valueInUnits_closure2(_this, newNumerators, newDenominators));
- if (oldNumerators.length !== 0 || oldDenominators.length !== 0)
- throw H.wrapException(E.SassScriptException$("Incompatible units " + _this._unitString$2(t1, t2) + " and " + _this._unitString$2(newNumerators, newDenominators) + "."));
- return _box_0.value;
- },
- isComparableTo$1: function(other) {
- var t1, exception;
- if (this.numeratorUnits.length !== 0 || this.denominatorUnits.length !== 0)
- t1 = !(other.numeratorUnits.length !== 0 || other.denominatorUnits.length !== 0);
- else
- t1 = true;
- if (t1)
- return true;
- try {
- this.greaterThan$1(other);
- return true;
- } catch (exception) {
- if (H.unwrapException(exception) instanceof E.SassScriptException)
- return false;
- else
- throw exception;
- }
- },
- greaterThan$1: function(other) {
- if (other instanceof T.SassNumber)
- return this._coerceUnits$2(other, T.number0__fuzzyGreaterThan$closure()) ? C.SassBoolean_true : C.SassBoolean_false;
- throw H.wrapException(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " > " + H.S(other) + '".'));
- },
- greaterThanOrEquals$1: function(other) {
- if (other instanceof T.SassNumber)
- return this._coerceUnits$2(other, T.number0__fuzzyGreaterThanOrEquals$closure()) ? C.SassBoolean_true : C.SassBoolean_false;
- throw H.wrapException(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " >= " + H.S(other) + '".'));
- },
- lessThan$1: function(other) {
- if (other instanceof T.SassNumber)
- return this._coerceUnits$2(other, T.number0__fuzzyLessThan$closure()) ? C.SassBoolean_true : C.SassBoolean_false;
- throw H.wrapException(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " < " + H.S(other) + '".'));
- },
- lessThanOrEquals$1: function(other) {
- if (other instanceof T.SassNumber)
- return this._coerceUnits$2(other, T.number0__fuzzyLessThanOrEquals$closure()) ? C.SassBoolean_true : C.SassBoolean_false;
- throw H.wrapException(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " <= " + H.S(other) + '".'));
- },
- modulo$1: function(other) {
- if (other instanceof T.SassNumber)
- return this._coerceNumber$2(other, new T.SassNumber_modulo_closure());
- throw H.wrapException(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " % " + H.S(other) + '".'));
- },
- plus$1: function(other) {
- var t1 = J.getInterceptor$(other);
- if (!!t1.$isSassNumber)
- return this._coerceNumber$2(other, new T.SassNumber_plus_closure());
- if (!t1.$isSassColor)
- return this.super$Value$plus(other);
- throw H.wrapException(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " + " + other.toString$0(0) + '".'));
- },
- minus$1: function(other) {
- var t1 = J.getInterceptor$(other);
- if (!!t1.$isSassNumber)
- return this._coerceNumber$2(other, new T.SassNumber_minus_closure());
- if (!t1.$isSassColor)
- return this.super$Value$minus(other);
- throw H.wrapException(E.SassScriptException$('Undefined operation "' + this.toString$0(0) + " - " + other.toString$0(0) + '".'));
- },
- times$1: function(other) {
- var _this = this;
- if (other instanceof T.SassNumber)
- return _this._multiplyUnits$5(_this.value * other.value, _this.numeratorUnits, _this.denominatorUnits, other.numeratorUnits, other.denominatorUnits);
- throw H.wrapException(E.SassScriptException$('Undefined operation "' + _this.toString$0(0) + " * " + H.S(other) + '".'));
- },
- dividedBy$1: function(other) {
- var _this = this;
- if (other instanceof T.SassNumber)
- return _this._multiplyUnits$5(_this.value / other.value, _this.numeratorUnits, _this.denominatorUnits, other.denominatorUnits, other.numeratorUnits);
- return _this.super$Value$dividedBy(other);
- },
- unaryPlus$0: function() {
- return this;
- },
- unaryMinus$0: function() {
- return T.SassNumber$withUnits(-this.value, this.denominatorUnits, this.numeratorUnits);
- },
- _coerceNumber$2: function(other, operation) {
- var _this = this,
- result = _this._coerceUnits$2(other, operation),
- t1 = _this.numeratorUnits,
- t2 = t1.length === 0;
- t1 = !t2 || _this.denominatorUnits.length !== 0 ? t1 : other.numeratorUnits;
- return T.SassNumber$withUnits(result, !t2 || _this.denominatorUnits.length !== 0 ? _this.denominatorUnits : other.denominatorUnits, t1);
- },
- _coerceUnits$1$2: function(other, operation) {
- var num1, num2, _this = this,
- t1 = _this.numeratorUnits;
- if (t1.length !== 0 || _this.denominatorUnits.length !== 0) {
- num1 = _this.value;
- num2 = other.valueInUnits$2(t1, _this.denominatorUnits);
- } else {
- num1 = _this.valueInUnits$2(other.numeratorUnits, other.denominatorUnits);
- num2 = other.value;
- }
- return operation.call$2(num1, num2);
- },
- _coerceUnits$2: function(other, operation) {
- return this._coerceUnits$1$2(other, operation, null);
- },
- _multiplyUnits$5: function(value, numerators1, denominators1, numerators2, denominators2) {
- var t1, newNumerators, mutableDenominators2, _i, numerator, mutableDenominators1, _this = this, _box_0 = {};
- _box_0.value = value;
- t1 = numerators1.length;
- if (t1 === 0) {
- if (denominators2.length === 0 && !_this._areAnyConvertible$2(denominators1, numerators2))
- return T.SassNumber$withUnits(value, denominators1, numerators2);
- else if (denominators1.length === 0)
- return T.SassNumber$withUnits(value, denominators2, numerators2);
- } else if (numerators2.length === 0)
- if (denominators2.length === 0)
- return T.SassNumber$withUnits(value, denominators2, numerators1);
- else if (denominators1.length === 0 && !_this._areAnyConvertible$2(numerators1, denominators2))
- return T.SassNumber$withUnits(value, denominators2, numerators1);
- newNumerators = H.setRuntimeTypeInfo([], [P.String]);
- mutableDenominators2 = H.setRuntimeTypeInfo(denominators2.slice(0), [H.getTypeArgumentByIndex(denominators2, 0)]);
- for (_i = 0; _i < t1; ++_i) {
- numerator = numerators1[_i];
- B.removeFirstWhere(mutableDenominators2, new T.SassNumber__multiplyUnits_closure(_box_0, _this, numerator), new T.SassNumber__multiplyUnits_closure0(newNumerators, numerator));
- }
- mutableDenominators1 = H.setRuntimeTypeInfo(denominators1.slice(0), [H.getTypeArgumentByIndex(denominators1, 0)]);
- for (t1 = numerators2.length, _i = 0; _i < t1; ++_i) {
- numerator = numerators2[_i];
- B.removeFirstWhere(mutableDenominators1, new T.SassNumber__multiplyUnits_closure1(_box_0, _this, numerator), new T.SassNumber__multiplyUnits_closure2(newNumerators, numerator));
- }
- t1 = _box_0.value;
- C.JSArray_methods.addAll$1(mutableDenominators1, mutableDenominators2);
- return T.SassNumber$withUnits(t1, mutableDenominators1, newNumerators);
- },
- _areAnyConvertible$2: function(units1, units2) {
- return C.JSArray_methods.any$1(units1, new T.SassNumber__areAnyConvertible_closure(this, units2));
- },
- _conversionFactor$2: function(unit1, unit2) {
- var innerMap;
- if (unit1 == unit2)
- return 1;
- innerMap = $.$get$_conversions().$index(0, unit1);
- if (innerMap == null)
- return;
- return innerMap.$index(0, unit2);
- },
- _unitString$2: function(numerators, denominators) {
- var t1;
- if (numerators.length === 0) {
- t1 = denominators.length;
- if (t1 === 0)
- return "no units";
- if (t1 === 1)
- return J.$add$ansx(C.JSArray_methods.get$single(denominators), "^-1");
- return "(" + C.JSArray_methods.join$1(denominators, "*") + ")^-1";
- }
- if (denominators.length === 0)
- return C.JSArray_methods.join$1(numerators, "*");
- return C.JSArray_methods.join$1(numerators, "*") + "/" + C.JSArray_methods.join$1(denominators, "*");
- },
- $eq: function(_, other) {
- var t1, t2, t3, exception, _this = this;
- if (other == null)
- return false;
- if (other instanceof T.SassNumber) {
- t1 = _this.numeratorUnits.length === 0;
- t2 = !t1 || _this.denominatorUnits.length !== 0;
- t3 = other;
- if (t2 !== (t3.numeratorUnits.length !== 0 || t3.denominatorUnits.length !== 0))
- return false;
- if (!(!t1 || _this.denominatorUnits.length !== 0))
- return Math.abs(_this.value - other.value) < $.$get$epsilon();
- try {
- t1 = _this._coerceUnits$2(other, T.number0__fuzzyEquals$closure());
- return t1;
- } catch (exception) {
- if (H.unwrapException(exception) instanceof E.SassScriptException)
- return false;
- else
- throw exception;
- }
- } else
- return false;
- },
- get$hashCode: function(_) {
- var _this = this;
- return C.JSInt_methods.get$hashCode(C.JSDouble_methods.round$0(_this.value * _this._canonicalMultiplier$1(_this.numeratorUnits) / _this._canonicalMultiplier$1(_this.denominatorUnits) * $.$get$_inverseEpsilon()));
- },
- _canonicalMultiplier$1: function(units) {
- return C.JSArray_methods.fold$2(units, 1, new T.SassNumber__canonicalMultiplier_closure());
- },
- _number$_exception$2: function(message, $name) {
- return new E.SassScriptException($name == null ? message : "$" + $name + ": " + message);
- }
- };
- T.SassNumber_valueInUnits_closure.prototype = {
- call$1: function(oldNumerator) {
- var t1,
- factor = this.$this._conversionFactor$2(this.newNumerator, oldNumerator);
- if (factor == null)
- return false;
- t1 = this._box_0;
- t1.value = t1.value * factor;
- return true;
- }
- };
- T.SassNumber_valueInUnits_closure0.prototype = {
- call$0: function() {
- var t1 = this.$this;
- throw H.wrapException(E.SassScriptException$("Incompatible units " + t1._unitString$2(t1.numeratorUnits, t1.denominatorUnits) + " and " + t1._unitString$2(this.newNumerators, this.newDenominators) + "."));
- }
- };
- T.SassNumber_valueInUnits_closure1.prototype = {
- call$1: function(oldDenominator) {
- var t1,
- factor = this.$this._conversionFactor$2(this.newDenominator, oldDenominator);
- if (factor == null)
- return false;
- t1 = this._box_0;
- t1.value = t1.value / factor;
- return true;
- }
- };
- T.SassNumber_valueInUnits_closure2.prototype = {
- call$0: function() {
- var t1 = this.$this;
- throw H.wrapException(E.SassScriptException$("Incompatible units " + t1._unitString$2(t1.numeratorUnits, t1.denominatorUnits) + " and " + t1._unitString$2(this.newNumerators, this.newDenominators) + "."));
- }
- };
- T.SassNumber_modulo_closure.prototype = {
- call$2: function(num1, num2) {
- var t1;
- if (num2 > 0)
- return C.JSNumber_methods.$mod(num1, num2);
- if (num2 === 0)
- return 0 / 0;
- t1 = C.JSNumber_methods.$mod(num1, num2);
- return t1 === 0 ? 0 : t1 + num2;
- }
- };
- T.SassNumber_plus_closure.prototype = {
- call$2: function(num1, num2) {
- return num1 + num2;
- }
- };
- T.SassNumber_minus_closure.prototype = {
- call$2: function(num1, num2) {
- return num1 - num2;
- }
- };
- T.SassNumber__multiplyUnits_closure.prototype = {
- call$1: function(denominator) {
- var factor = this.$this._conversionFactor$2(this.numerator, denominator);
- if (factor == null)
- return false;
- this._box_0.value /= factor;
- return true;
- }
- };
- T.SassNumber__multiplyUnits_closure0.prototype = {
- call$0: function() {
- this.newNumerators.push(this.numerator);
- return;
- }
- };
- T.SassNumber__multiplyUnits_closure1.prototype = {
- call$1: function(denominator) {
- var factor = this.$this._conversionFactor$2(this.numerator, denominator);
- if (factor == null)
- return false;
- this._box_0.value /= factor;
- return true;
- }
- };
- T.SassNumber__multiplyUnits_closure2.prototype = {
- call$0: function() {
- this.newNumerators.push(this.numerator);
- return;
- }
- };
- T.SassNumber__areAnyConvertible_closure.prototype = {
- call$1: function(unit1) {
- var t1 = $.$get$_conversions();
- if (!t1.containsKey$1(unit1))
- return C.JSArray_methods.contains$1(this.units2, unit1);
- return C.JSArray_methods.any$1(this.units2, t1.$index(0, unit1).get$containsKey());
- }
- };
- T.SassNumber__canonicalMultiplier_closure.prototype = {
- call$2: function(multiplier, unit) {
- var t1,
- innerMap = $.$get$_conversions().$index(0, unit);
- if (innerMap == null)
- t1 = multiplier;
- else {
- t1 = innerMap.get$values();
- t1 = multiplier / t1.get$first(t1);
- }
- return t1;
- }
- };
- D.SassString.prototype = {
- get$sassLength: function() {
- var t1 = this._sassLength;
- if (t1 == null) {
- t1 = this.text;
- t1.toString;
- t1 = new P.Runes(t1);
- t1 = this._sassLength = t1.get$length(t1);
- }
- return t1;
- },
- get$isSpecialNumber: function() {
- var t1, t2;
- if (this.hasQuotes)
- return false;
- t1 = this.text;
- if (t1.length < 6)
- return false;
- t2 = J.getInterceptor$s(t1)._codeUnitAt$1(t1, 0) | 32;
- if (t2 === 99) {
- if ((C.JSString_methods._codeUnitAt$1(t1, 1) | 32) !== 97)
- return false;
- if ((C.JSString_methods._codeUnitAt$1(t1, 2) | 32) !== 108)
- return false;
- if ((C.JSString_methods._codeUnitAt$1(t1, 3) | 32) !== 99)
- return false;
- return C.JSString_methods._codeUnitAt$1(t1, 4) === 40;
- } else if (t2 === 118) {
- if ((C.JSString_methods._codeUnitAt$1(t1, 1) | 32) !== 97)
- return false;
- if ((C.JSString_methods._codeUnitAt$1(t1, 2) | 32) !== 114)
- return false;
- return C.JSString_methods._codeUnitAt$1(t1, 3) === 40;
- } else if (t2 === 101) {
- if ((C.JSString_methods._codeUnitAt$1(t1, 1) | 32) !== 110)
- return false;
- if ((C.JSString_methods._codeUnitAt$1(t1, 2) | 32) !== 118)
- return false;
- return C.JSString_methods._codeUnitAt$1(t1, 3) === 40;
- } else if (t2 === 109) {
- t2 = C.JSString_methods._codeUnitAt$1(t1, 1) | 32;
- if (t2 === 97) {
- if ((C.JSString_methods._codeUnitAt$1(t1, 2) | 32) !== 120)
- return false;
- return C.JSString_methods._codeUnitAt$1(t1, 3) === 40;
- } else if (t2 === 105) {
- if ((C.JSString_methods._codeUnitAt$1(t1, 2) | 32) !== 110)
- return false;
- return C.JSString_methods._codeUnitAt$1(t1, 3) === 40;
- } else
- return false;
- } else
- return false;
- },
- get$isVar: function() {
- if (this.hasQuotes)
- return false;
- var t1 = this.text;
- if (t1.length < 8)
- return false;
- return (J.getInterceptor$s(t1)._codeUnitAt$1(t1, 0) | 32) === 118 && (C.JSString_methods._codeUnitAt$1(t1, 1) | 32) === 97 && (C.JSString_methods._codeUnitAt$1(t1, 2) | 32) === 114 && C.JSString_methods._codeUnitAt$1(t1, 3) === 40;
- },
- get$isBlank: function() {
- return !this.hasQuotes && this.text.length === 0;
- },
- accept$1$1: function(visitor) {
- var t1 = visitor._quote && this.hasQuotes,
- t2 = this.text;
- if (t1)
- visitor._visitQuotedString$1(t2);
- else
- visitor._visitUnquotedString$1(t2);
- return;
- },
- accept$1: function(visitor) {
- return this.accept$1$1(visitor, null);
- },
- assertString$1: function($name) {
- return this;
- },
- plus$1: function(other) {
- var t1 = this.text,
- t2 = this.hasQuotes;
- if (other instanceof D.SassString)
- return new D.SassString(J.$add$ansx(t1, other.text), t2);
- else {
- other.toString;
- return new D.SassString(J.$add$ansx(t1, N.serializeValue(other, false, true)), t2);
- }
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof D.SassString && this.text == other.text;
- },
- get$hashCode: function(_) {
- return J.get$hashCode$(this.text);
- }
- };
- E._EvaluateVisitor0.prototype = {
- _EvaluateVisitor$5$functions$importCache$logger$nodeImporter$sourceMap0: function(functions, importCache, logger, nodeImporter, sourceMap) {
- var t6, t7, t8, t9, t10, t11, t12, metaFunctions, metaMixins, _i, metaModule, module, $function, _this = this,
- _s9_ = "sass:meta",
- t1 = P.String,
- t2 = Z.VariableDeclaration,
- t3 = S.SpanScanner$("@function global-variable-exists($name, $module: null) {", _s9_),
- t4 = [B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}],
- t5 = [[S.Tuple2, B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}]];
- t3 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t3, C.StderrLogger_false).parseArgumentDeclaration$0(), new E._EvaluateVisitor_closure9(_this), t4)], t5);
- t6 = S.SpanScanner$("@function variable-exists($name) {", _s9_);
- t6 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t6, C.StderrLogger_false).parseArgumentDeclaration$0(), new E._EvaluateVisitor_closure10(_this), t4)], t5);
- t7 = S.SpanScanner$("@function function-exists($name, $module: null) {", _s9_);
- t7 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t7, C.StderrLogger_false).parseArgumentDeclaration$0(), new E._EvaluateVisitor_closure11(_this), t4)], t5);
- t8 = S.SpanScanner$("@function mixin-exists($name, $module: null) {", _s9_);
- t8 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t8, C.StderrLogger_false).parseArgumentDeclaration$0(), new E._EvaluateVisitor_closure12(_this), t4)], t5);
- t9 = S.SpanScanner$("@function content-exists() {", _s9_);
- t9 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t9, C.StderrLogger_false).parseArgumentDeclaration$0(), new E._EvaluateVisitor_closure13(_this), t4)], t5);
- t10 = S.SpanScanner$("@function module-variables($module) {", _s9_);
- t10 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t10, C.StderrLogger_false).parseArgumentDeclaration$0(), new E._EvaluateVisitor_closure14(_this), t4)], t5);
- t11 = S.SpanScanner$("@function module-functions($module) {", _s9_);
- t11 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t11, C.StderrLogger_false).parseArgumentDeclaration$0(), new E._EvaluateVisitor_closure15(_this), t4)], t5);
- t12 = S.SpanScanner$("@function get-function($name, $css: false, $module: null) {", _s9_);
- t4 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t12, C.StderrLogger_false).parseArgumentDeclaration$0(), new E._EvaluateVisitor_closure16(_this), t4)], t5);
- t5 = S.SpanScanner$("@function call($function, $args...) {", _s9_);
- metaFunctions = [new Q.BuiltInCallable("global-variable-exists", t3), new Q.BuiltInCallable("variable-exists", t6), new Q.BuiltInCallable("function-exists", t7), new Q.BuiltInCallable("mixin-exists", t8), new Q.BuiltInCallable("content-exists", t9), new Q.BuiltInCallable("module-variables", t10), new Q.BuiltInCallable("module-functions", t11), new Q.BuiltInCallable("get-function", t4), new S.AsyncBuiltInCallable("call", new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t5, C.StderrLogger_false).parseArgumentDeclaration$0(), new E._EvaluateVisitor_closure17(_this))];
- t1 = S.AsyncBuiltInCallable;
- t2 = [t1];
- metaMixins = H.setRuntimeTypeInfo([S.AsyncBuiltInCallable$mixin("load-css", "$module, $with: null", new E._EvaluateVisitor_closure18(_this), _s9_)], t2);
- t2 = H.setRuntimeTypeInfo([], t2);
- for (t3 = $.$get$global(), t3 = new H.ListIterator(t3, t3.get$length(t3)); t3.moveNext$0();)
- t2.push(t3.__internal$_current);
- for (_i = 0; _i < 9; ++_i)
- t2.push(metaFunctions[_i]);
- metaModule = Q.BuiltInModule$("meta", t2, metaMixins, null, t1);
- t1 = H.setRuntimeTypeInfo([], [[Q.BuiltInModule, S.AsyncBuiltInCallable]]);
- for (t2 = $.$get$coreModules(), t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();)
- t1.push(t2.__internal$_current);
- t1.push(metaModule);
- t2 = t1.length;
- t3 = _this._async_evaluate$_builtInModules;
- _i = 0;
- for (; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- module = t1[_i];
- t3.$indexSet(0, module.url, module);
- }
- t1 = H.setRuntimeTypeInfo([], [B.AsyncCallable]);
- if (functions != null)
- for (t2 = functions.length, _i = 0; _i < functions.length; functions.length === t2 || (0, H.throwConcurrentModificationError)(functions), ++_i)
- t1.push(functions[_i]);
- for (t2 = $.$get$globalFunctions(), t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();)
- t1.push(t2.__internal$_current);
- for (_i = 0; _i < 9; ++_i)
- t1.push(metaFunctions[_i]);
- for (t2 = t1.length, t3 = _this._async_evaluate$_builtInFunctions, _i = 0; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- $function = t1[_i];
- t4 = $function.get$name();
- t4.toString;
- t3.$indexSet(0, H.stringReplaceAllUnchecked(t4, "_", "-"), $function);
- }
- },
- run$2: function(_, importer, node) {
- return this.run$body$_EvaluateVisitor(_, importer, node);
- },
- run$body$_EvaluateVisitor: function(_, importer, node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(E.EvaluateResult),
- $async$returnValue, $async$self = this;
- var $async$run$2 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$returnValue = $async$self._async_evaluate$_withWarnCallback$1(new E._EvaluateVisitor_run_closure0($async$self, node, importer));
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$run$2, $async$completer);
- },
- _async_evaluate$_withWarnCallback$1$1: function(callback) {
- return N.withWarnCallback(new E._EvaluateVisitor__withWarnCallback_closure0(this), callback);
- },
- _async_evaluate$_withWarnCallback$1: function(callback) {
- return this._async_evaluate$_withWarnCallback$1$1(callback, null);
- },
- _async_evaluate$_loadModule$7$baseUrl$configuration$namesInErrors: function(url, stackFrame, nodeWithSpan, callback, baseUrl, configuration, namesInErrors) {
- return this._loadModule$body$_EvaluateVisitor(url, stackFrame, nodeWithSpan, callback, baseUrl, configuration, namesInErrors);
- },
- _async_evaluate$_loadModule$5$configuration: function(url, stackFrame, nodeWithSpan, callback, configuration) {
- return this._async_evaluate$_loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, null, configuration, false);
- },
- _async_evaluate$_loadModule$4: function(url, stackFrame, nodeWithSpan, callback) {
- return this._async_evaluate$_loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, null, null, false);
- },
- _loadModule$body$_EvaluateVisitor: function(url, stackFrame, nodeWithSpan, callback, baseUrl, configuration, namesInErrors) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$returnValue, $async$self = this, t1, builtInModule;
- var $async$_async_evaluate$_loadModule$7$baseUrl$configuration$namesInErrors = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- builtInModule = $async$self._async_evaluate$_builtInModules.$index(0, url);
- if (builtInModule != null) {
- if (configuration != null && !configuration.isImplicit) {
- t1 = namesInErrors ? "Built-in module " + H.S(url) + " can't be configured." : "Built-in modules can't be configured.";
- throw H.wrapException($async$self._async_evaluate$_exception$2(t1, nodeWithSpan.get$span()));
- }
- callback.call$1(builtInModule);
- // goto return
- $async$goto = 1;
- break;
- }
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_withStackFrame$1$3(stackFrame, nodeWithSpan, new E._EvaluateVisitor__loadModule_closure0($async$self, url, nodeWithSpan, baseUrl, namesInErrors, configuration, callback), P.Null), $async$_async_evaluate$_loadModule$7$baseUrl$configuration$namesInErrors);
- case 3:
- // returning from await.
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_loadModule$7$baseUrl$configuration$namesInErrors, $async$completer);
- },
- _async_evaluate$_execute$5$configuration$namesInErrors$nodeWithSpan: function(importer, stylesheet, configuration, namesInErrors, nodeWithSpan) {
- return this._execute$body$_EvaluateVisitor(importer, stylesheet, configuration, namesInErrors, nodeWithSpan);
- },
- _async_evaluate$_execute$2: function(importer, stylesheet) {
- return this._async_evaluate$_execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, null, false, null);
- },
- _execute$body$_EvaluateVisitor: function(importer, stylesheet, configuration, namesInErrors, nodeWithSpan) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter([G.Module, B.AsyncCallable]),
- $async$returnValue, $async$self = this, message, existingNode, environment, t3, extender, module, t1, url, t2, alreadyLoaded;
- var $async$_async_evaluate$_execute$5$configuration$namesInErrors$nodeWithSpan = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = {};
- url = stylesheet.span.file.url;
- t2 = $async$self._async_evaluate$_modules;
- alreadyLoaded = t2.$index(0, url);
- if (alreadyLoaded != null) {
- t1 = configuration == null;
- if (!(t1 ? $async$self._async_evaluate$_configuration : configuration).isImplicit) {
- message = namesInErrors ? H.S($.$get$context().prettyUri$1(url)) + ' was already loaded, so it can\'t be configured using "with".' : 'This module was already loaded, so it can\'t be configured using "with".';
- existingNode = $async$self._async_evaluate$_moduleNodes.$index(0, url);
- t2 = P.LinkedHashMap_LinkedHashMap$_empty(Y.FileSpan, P.String);
- if (existingNode != null)
- t2.$indexSet(0, existingNode.get$span(), "original load");
- if (t1)
- t2.$indexSet(0, $async$self._async_evaluate$_configuration.nodeWithSpan.get$span(), "configuration");
- throw H.wrapException(t2.get$isEmpty(t2) ? $async$self._async_evaluate$_exception$1(message) : $async$self._async_evaluate$_multiSpanException$3(message, "new load", t2));
- }
- $async$returnValue = alreadyLoaded;
- // goto return
- $async$goto = 1;
- break;
- }
- environment = Q.AsyncEnvironment$($async$self._async_evaluate$_sourceMap);
- t1.css = null;
- t3 = M.SimpleSelector;
- extender = new F.Extender(P.LinkedHashMap_LinkedHashMap$_empty(t3, [P.Set, [F.ModifiableCssValue, D.SelectorList]]), P.LinkedHashMap_LinkedHashMap$_empty(t3, [P.Map, S.ComplexSelector, S.Extension]), P.LinkedHashMap_LinkedHashMap$_empty(t3, [P.List, S.Extension]), P.LinkedHashMap_LinkedHashMap$_empty([F.ModifiableCssValue, D.SelectorList], [P.List, F.CssMediaQuery]), P._LinkedIdentityHashMap__LinkedIdentityHashMap$es6(t3, P.int), new P._LinkedIdentityHashSet([S.ComplexSelector]), C.ExtendMode_normal);
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_withEnvironment$1$2(environment, new E._EvaluateVisitor__execute_closure0(t1, $async$self, importer, stylesheet, extender, configuration), P.Null), $async$_async_evaluate$_execute$5$configuration$namesInErrors$nodeWithSpan);
- case 3:
- // returning from await.
- module = Q._EnvironmentModule__EnvironmentModule0(environment, t1.css, extender, environment._async_environment$_forwardedModules);
- t2.$indexSet(0, url, module);
- $async$self._async_evaluate$_moduleNodes.$indexSet(0, url, nodeWithSpan);
- $async$returnValue = module;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_execute$5$configuration$namesInErrors$nodeWithSpan, $async$completer);
- },
- _async_evaluate$_addOutOfOrderImports$0: function() {
- var t1, t2, statements, _this = this;
- if (_this._async_evaluate$_outOfOrderImports == null)
- return _this._async_evaluate$_root.children;
- t1 = B.ModifiableCssNode;
- t2 = new Array(J.get$length$asx(_this._async_evaluate$_root.children._collection$_source) + _this._async_evaluate$_outOfOrderImports.length);
- t2.fixed$length = Array;
- statements = new G.FixedLengthListBuilder(H.setRuntimeTypeInfo(t2, [t1]), [t1]);
- statements.addRange$3(_this._async_evaluate$_root.children, 0, _this._async_evaluate$_endOfImports);
- statements.addAll$1(0, _this._async_evaluate$_outOfOrderImports);
- statements.addRange$2(_this._async_evaluate$_root.children, _this._async_evaluate$_endOfImports);
- return statements.build$0();
- },
- _async_evaluate$_combineCss$2$clone: function(root, clone) {
- var selectors, unsatisfiedExtension, sortedModules, t1, t2, imports, css, t3, statements, index, _this = this;
- if (!C.JSArray_methods.any$1(root.get$upstream(), new E._EvaluateVisitor__combineCss_closure2())) {
- selectors = root.get$extender().get$simpleSelectors();
- unsatisfiedExtension = B.firstOrNull(root.get$extender().extensionsWhereTarget$1(new E._EvaluateVisitor__combineCss_closure3(selectors)));
- if (unsatisfiedExtension != null)
- _this._async_evaluate$_throwForUnsatisfiedExtension$1(unsatisfiedExtension);
- return root.get$css(root);
- }
- sortedModules = _this._async_evaluate$_topologicalModules$1(root);
- if (clone)
- sortedModules = new H.MappedListIterable(sortedModules, new E._EvaluateVisitor__combineCss_closure4(), [H.getTypeArgumentByIndex(sortedModules, 0), [G.Module, B.AsyncCallable]]).toList$0(0);
- _this._async_evaluate$_extendModules$1(sortedModules);
- t1 = B.CssNode;
- t2 = [t1];
- imports = H.setRuntimeTypeInfo([], t2);
- css = H.setRuntimeTypeInfo([], t2);
- for (t2 = J.get$reversed$ax(sortedModules), t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();) {
- t3 = t2.__internal$_current;
- statements = t3.get$css(t3).get$children();
- index = _this._async_evaluate$_indexAfterImports$1(statements);
- t3 = J.getInterceptor$ax(statements);
- C.JSArray_methods.addAll$1(imports, t3.getRange$2(statements, 0, index));
- C.JSArray_methods.addAll$1(css, t3.getRange$2(statements, index, t3.get$length(statements)));
- }
- return new V.CssStylesheet(new P.UnmodifiableListView(C.JSArray_methods.$add(imports, css), [t1]), root.get$css(root).get$span());
- },
- _async_evaluate$_combineCss$1: function(root) {
- return this._async_evaluate$_combineCss$2$clone(root, false);
- },
- _async_evaluate$_extendModules$1: function(sortedModules) {
- var t1, t2, originalSelectors, extenders, t3, t4, _i,
- downstreamExtenders = P.LinkedHashMap_LinkedHashMap$_empty(P.Uri, [P.List, F.Extender]),
- unsatisfiedExtensions = new P._LinkedIdentityHashSet([S.Extension]);
- for (t1 = J.get$iterator$ax(sortedModules); t1.moveNext$0();) {
- t2 = t1.get$current(t1);
- originalSelectors = t2.get$extender().get$simpleSelectors().toSet$0(0);
- unsatisfiedExtensions.addAll$1(0, t2.get$extender().extensionsWhereTarget$1(new E._EvaluateVisitor__extendModules_closure1(originalSelectors)));
- extenders = downstreamExtenders.$index(0, t2.get$url());
- if (extenders != null)
- t2.get$extender().addExtensions$1(extenders);
- t3 = t2.get$extender();
- if (t3.get$isEmpty(t3))
- continue;
- for (t3 = t2.get$upstream(), t4 = t3.length, _i = 0; _i < t3.length; t3.length === t4 || (0, H.throwConcurrentModificationError)(t3), ++_i)
- J.add$1$ax(downstreamExtenders.putIfAbsent$2(t3[_i].get$url(), new E._EvaluateVisitor__extendModules_closure2()), t2.get$extender());
- unsatisfiedExtensions.removeAll$1(t2.get$extender().extensionsWhereTarget$1(originalSelectors.get$contains(originalSelectors)));
- }
- if (unsatisfiedExtensions._collection$_length !== 0)
- this._async_evaluate$_throwForUnsatisfiedExtension$1(unsatisfiedExtensions.get$first(unsatisfiedExtensions));
- },
- _async_evaluate$_throwForUnsatisfiedExtension$1: function(extension) {
- throw H.wrapException(E.SassException$('The target selector was not found.\nUse "@extend ' + H.S(extension.target) + ' !optional" to avoid this error.', extension.span));
- },
- _async_evaluate$_topologicalModules$1: function(root) {
- var t1 = [G.Module, B.AsyncCallable],
- sorted = Q.QueueList$(null, t1);
- new E._EvaluateVisitor__topologicalModules_visitModule0(P.LinkedHashSet_LinkedHashSet$_empty(t1), sorted).call$1(root);
- return sorted;
- },
- _async_evaluate$_indexAfterImports$1: function(statements) {
- var t1, lastImport, i, t2;
- for (t1 = J.getInterceptor$asx(statements), lastImport = -1, i = 0; i < t1.get$length(statements); ++i) {
- t2 = J.getInterceptor$(t1.$index(statements, i));
- if (!!t2.$isCssImport)
- lastImport = i;
- else if (!t2.$isCssComment)
- break;
- }
- return lastImport + 1;
- },
- visitStylesheet$1: function(node) {
- return this.visitStylesheet$body$_EvaluateVisitor(node);
- },
- visitStylesheet$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, t1, t2, _i;
- var $async$visitStylesheet$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = node.children, t2 = t1.length, _i = 0;
- case 3:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 5;
- break;
- }
- $async$goto = 6;
- return P._asyncAwait(t1[_i].accept$1($async$self), $async$visitStylesheet$1);
- case 6:
- // returning from await.
- case 4:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 3;
- break;
- case 5:
- // after for
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitStylesheet$1, $async$completer);
- },
- visitAtRootRule$1: function(node) {
- return this.visitAtRootRule$body$_EvaluateVisitor(node);
- },
- visitAtRootRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, root, innerCopy, outerCopy, copy, t1, query, $parent, included, $async$temp1, $async$temp2;
- var $async$visitAtRootRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = node.query;
- $async$goto = t1 != null ? 3 : 5;
- break;
- case 3:
- // then
- $async$temp1 = t1;
- $async$temp2 = E;
- $async$goto = 6;
- return P._asyncAwait($async$self._async_evaluate$_performInterpolation$2$warnForColor(t1, true), $async$visitAtRootRule$1);
- case 6:
- // returning from await.
- $async$result = $async$self._async_evaluate$_adjustParseError$2($async$temp1, new $async$temp2._EvaluateVisitor_visitAtRootRule_closure2($async$self, $async$result));
- // goto join
- $async$goto = 4;
- break;
- case 5:
- // else
- $async$result = C.AtRootQuery_UsS;
- case 4:
- // join
- query = $async$result;
- $parent = $async$self._async_evaluate$_parent;
- included = H.setRuntimeTypeInfo([], [B.ModifiableCssParentNode]);
- for (; !J.getInterceptor$($parent).$isCssStylesheet;) {
- if (!query.excludes$1($parent))
- included.push($parent);
- $parent = $parent._parent;
- }
- root = $async$self._async_evaluate$_trimIncluded$1(included);
- $async$goto = root == $async$self._async_evaluate$_parent ? 7 : 8;
- break;
- case 7:
- // then
- $async$goto = 9;
- return P._asyncAwait($async$self._async_evaluate$_environment.scope$1$2$when(new E._EvaluateVisitor_visitAtRootRule_closure3($async$self, node), node.hasDeclarations, P.Null), $async$visitAtRootRule$1);
- case 9:
- // returning from await.
- // goto return
- $async$goto = 1;
- break;
- case 8:
- // join
- innerCopy = included.length === 0 ? null : C.JSArray_methods.get$first(included).copyWithoutChildren$0();
- for (t1 = H.SubListIterable$(included, 1, null, H.getTypeArgumentByIndex(included, 0)), t1 = new H.ListIterator(t1, t1.get$length(t1)), outerCopy = innerCopy; t1.moveNext$0(); outerCopy = copy) {
- copy = t1.__internal$_current.copyWithoutChildren$0();
- copy.addChild$1(outerCopy);
- }
- if (outerCopy != null)
- root.addChild$1(outerCopy);
- $async$goto = 10;
- return P._asyncAwait($async$self._async_evaluate$_scopeForAtRoot$4(node, innerCopy == null ? root : innerCopy, query, included).call$1(new E._EvaluateVisitor_visitAtRootRule_closure4($async$self, node)), $async$visitAtRootRule$1);
- case 10:
- // returning from await.
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitAtRootRule$1, $async$completer);
- },
- _async_evaluate$_trimIncluded$1: function(nodes) {
- var $parent, innermostContiguous, i, t2, root,
- t1 = nodes.length;
- if (t1 === 0)
- return this._async_evaluate$_root;
- $parent = this._async_evaluate$_parent;
- for (innermostContiguous = null, i = 0; i < t1; ++i) {
- for (; $parent != nodes[i]; innermostContiguous = null)
- $parent = $parent._parent;
- if (innermostContiguous == null)
- innermostContiguous = i;
- $parent = $parent._parent;
- }
- t2 = this._async_evaluate$_root;
- if ($parent != t2)
- return t2;
- root = nodes[innermostContiguous];
- C.JSArray_methods.removeRange$2(nodes, innermostContiguous, t1);
- return root;
- },
- _async_evaluate$_scopeForAtRoot$4: function(node, newParent, query, included) {
- var _this = this,
- scope = new E._EvaluateVisitor__scopeForAtRoot_closure5(_this, newParent, node),
- t1 = query._all,
- t2 = t1 || query._at_root_query$_rule,
- t3 = query.include;
- if (t2 !== t3)
- scope = new E._EvaluateVisitor__scopeForAtRoot_closure6(_this, scope);
- if (t1 ? !t3 : query.names.contains$1(0, "media") !== t3)
- scope = new E._EvaluateVisitor__scopeForAtRoot_closure7(_this, scope);
- if (_this._async_evaluate$_inKeyframes && query.names.contains$1(0, "keyframes") !== t3)
- scope = new E._EvaluateVisitor__scopeForAtRoot_closure8(_this, scope);
- return _this._async_evaluate$_inUnknownAtRule && !C.JSArray_methods.any$1(included, new E._EvaluateVisitor__scopeForAtRoot_closure9()) ? new E._EvaluateVisitor__scopeForAtRoot_closure10(_this, scope) : scope;
- },
- visitContentBlock$1: function(node) {
- return H.throwExpression(P.UnsupportedError$("Evaluation handles @include and its content block together."));
- },
- visitContentRule$1: function(node) {
- return this.visitContentRule$body$_EvaluateVisitor(node);
- },
- visitContentRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, $content;
- var $async$visitContentRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $content = $async$self._async_evaluate$_environment._async_environment$_content;
- if ($content == null) {
- // goto return
- $async$goto = 1;
- break;
- }
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_runUserDefinedCallable$4(node.$arguments, $content, node, new E._EvaluateVisitor_visitContentRule_closure0($async$self, $content)), $async$visitContentRule$1);
- case 3:
- // returning from await.
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitContentRule$1, $async$completer);
- },
- visitDebugRule$1: function(node) {
- return this.visitDebugRule$body$_EvaluateVisitor(node);
- },
- visitDebugRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, value, t1;
- var $async$visitDebugRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait(node.expression.accept$1($async$self), $async$visitDebugRule$1);
- case 3:
- // returning from await.
- value = $async$result;
- t1 = J.getInterceptor$(value);
- t1 = !!t1.$isSassString ? value.text : t1.toString$0(value);
- $async$self._async_evaluate$_logger.debug$2(t1, node.span);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitDebugRule$1, $async$completer);
- },
- visitDeclaration$1: function(node) {
- return this.visitDeclaration$body$_EvaluateVisitor(node);
- },
- visitDeclaration$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, $name, t1, cssValue, t2, oldDeclarationName, $async$temp1;
- var $async$visitDeclaration$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if (!($async$self._async_evaluate$_styleRule != null && !$async$self._async_evaluate$_atRootExcludingStyleRule) && !$async$self._async_evaluate$_inUnknownAtRule && !$async$self._async_evaluate$_inKeyframes)
- throw H.wrapException($async$self._async_evaluate$_exception$2("Declarations may only be used within style rules.", node.span));
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_interpolationToValue$2$warnForColor(node.name, true), $async$visitDeclaration$1);
- case 3:
- // returning from await.
- $name = $async$result;
- t1 = $async$self._async_evaluate$_declarationName;
- if (t1 != null)
- $name = new F.CssValue(t1 + "-" + H.S($name.get$value($name)), $name.get$span(), [P.String]);
- t1 = node.value;
- $async$goto = t1 == null ? 4 : 6;
- break;
- case 4:
- // then
- $async$result = null;
- // goto join
- $async$goto = 5;
- break;
- case 6:
- // else
- $async$temp1 = F;
- $async$goto = 7;
- return P._asyncAwait(t1.accept$1($async$self), $async$visitDeclaration$1);
- case 7:
- // returning from await.
- $async$result = new $async$temp1.CssValue($async$result, t1.get$span(), [F.Value]);
- case 5:
- // join
- cssValue = $async$result;
- if (cssValue != null) {
- t2 = cssValue.value;
- t2 = !t2.get$isBlank() || t2.get$asList().length === 0;
- } else
- t2 = false;
- if (t2) {
- t2 = $async$self._async_evaluate$_parent;
- t1 = $async$self._async_evaluate$_expressionNode$1(t1);
- t1 = t1 == null ? null : t1.get$span();
- t2.addChild$1(L.ModifiableCssDeclaration$($name, cssValue, node.span, t1));
- } else if (J.startsWith$1$s($name.get$value($name), "--"))
- throw H.wrapException($async$self._async_evaluate$_exception$2("Custom property values may not be empty.", t1.get$span()));
- $async$goto = node.children != null ? 8 : 9;
- break;
- case 8:
- // then
- oldDeclarationName = $async$self._async_evaluate$_declarationName;
- $async$self._async_evaluate$_declarationName = $name.get$value($name);
- $async$goto = 10;
- return P._asyncAwait($async$self._async_evaluate$_environment.scope$1$2$when(new E._EvaluateVisitor_visitDeclaration_closure0($async$self, node), node.hasDeclarations, P.Null), $async$visitDeclaration$1);
- case 10:
- // returning from await.
- $async$self._async_evaluate$_declarationName = oldDeclarationName;
- case 9:
- // join
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitDeclaration$1, $async$completer);
- },
- visitEachRule$1: function(node) {
- return this.visitEachRule$body$_EvaluateVisitor(node);
- },
- visitEachRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, t1, list, nodeWithSpan, setVariables;
- var $async$visitEachRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = node.list;
- $async$goto = 3;
- return P._asyncAwait(t1.accept$1($async$self), $async$visitEachRule$1);
- case 3:
- // returning from await.
- list = $async$result;
- nodeWithSpan = $async$self._async_evaluate$_expressionNode$1(t1);
- setVariables = node.variables.length === 1 ? new E._EvaluateVisitor_visitEachRule_closure2($async$self, node, nodeWithSpan) : new E._EvaluateVisitor_visitEachRule_closure3($async$self, node, nodeWithSpan);
- $async$returnValue = $async$self._async_evaluate$_environment.scope$1$2$semiGlobal(new E._EvaluateVisitor_visitEachRule_closure4($async$self, list, setVariables, node), true, F.Value);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitEachRule$1, $async$completer);
- },
- _async_evaluate$_setMultipleVariables$3: function(variables, value, nodeWithSpan) {
- var i,
- list = value.get$asList(),
- t1 = variables.length,
- minLength = Math.min(t1, list.length);
- for (i = 0; i < minLength; ++i)
- this._async_evaluate$_environment.setLocalVariable$3(variables[i], list[i].withoutSlash$0(), nodeWithSpan);
- for (i = minLength; i < t1; ++i)
- this._async_evaluate$_environment.setLocalVariable$3(variables[i], C.C_SassNull, nodeWithSpan);
- },
- visitErrorRule$1: function(node) {
- return this.visitErrorRule$body$_EvaluateVisitor(node);
- },
- visitErrorRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$self = this, $async$temp1, $async$temp2;
- var $async$visitErrorRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$temp1 = H;
- $async$temp2 = J;
- $async$goto = 2;
- return P._asyncAwait(node.expression.accept$1($async$self), $async$visitErrorRule$1);
- case 2:
- // returning from await.
- throw $async$temp1.wrapException($async$self._async_evaluate$_exception$2($async$temp2.toString$0$($async$result), node.span));
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitErrorRule$1, $async$completer);
- },
- visitExtendRule$1: function(node) {
- return this.visitExtendRule$body$_EvaluateVisitor(node);
- },
- visitExtendRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, targetText, t1, t2, _i, t3;
- var $async$visitExtendRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if (!($async$self._async_evaluate$_styleRule != null && !$async$self._async_evaluate$_atRootExcludingStyleRule) || $async$self._async_evaluate$_declarationName != null)
- throw H.wrapException($async$self._async_evaluate$_exception$2("@extend may only be used within style rules.", node.span));
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_interpolationToValue$2$warnForColor(node.selector, true), $async$visitExtendRule$1);
- case 3:
- // returning from await.
- targetText = $async$result;
- for (t1 = $async$self._async_evaluate$_adjustParseError$2(targetText, new E._EvaluateVisitor_visitExtendRule_closure0($async$self, targetText)).components, t2 = t1.length, _i = 0; _i < t2; ++_i) {
- t3 = t1[_i].components;
- if (t3.length !== 1 || !(C.JSArray_methods.get$first(t3) instanceof X.CompoundSelector))
- throw H.wrapException(E.SassFormatException$("complex selectors may not be extended.", targetText.get$span()));
- t3 = H.interceptedTypeCast(C.JSArray_methods.get$first(t3), "$isCompoundSelector").components;
- if (t3.length !== 1)
- throw H.wrapException(E.SassFormatException$("compound selectors may no longer be extended.\nConsider `@extend " + C.JSArray_methods.join$1(t3, ", ") + "` instead.\nSee http://bit.ly/ExtendCompound for details.\n", targetText.get$span()));
- $async$self._async_evaluate$_extender.addExtension$4($async$self._async_evaluate$_styleRule.selector, C.JSArray_methods.get$first(t3), node, $async$self._async_evaluate$_mediaQueries);
- }
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitExtendRule$1, $async$completer);
- },
- visitAtRule$1: function(node) {
- return this.visitAtRule$body$_EvaluateVisitor(node);
- },
- visitAtRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, $name, t1, value, t2, t3, wasInKeyframes, wasInUnknownAtRule;
- var $async$visitAtRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if ($async$self._async_evaluate$_declarationName != null)
- throw H.wrapException($async$self._async_evaluate$_exception$2("At-rules may not be used within nested declarations.", node.span));
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_interpolationToValue$1(node.name), $async$visitAtRule$1);
- case 3:
- // returning from await.
- $name = $async$result;
- t1 = node.value;
- $async$goto = t1 == null ? 4 : 6;
- break;
- case 4:
- // then
- $async$result = null;
- // goto join
- $async$goto = 5;
- break;
- case 6:
- // else
- $async$goto = 7;
- return P._asyncAwait($async$self._async_evaluate$_interpolationToValue$3$trim$warnForColor(t1, true, true), $async$visitAtRule$1);
- case 7:
- // returning from await.
- case 5:
- // join
- value = $async$result;
- if (node.children == null) {
- t1 = $async$self._async_evaluate$_parent;
- t2 = B.ModifiableCssNode;
- t3 = H.setRuntimeTypeInfo([], [t2]);
- t1.addChild$1(new U.ModifiableCssAtRule($name, value, true, node.span, new P.UnmodifiableListView(t3, [t2]), t3));
- // goto return
- $async$goto = 1;
- break;
- }
- wasInKeyframes = $async$self._async_evaluate$_inKeyframes;
- wasInUnknownAtRule = $async$self._async_evaluate$_inUnknownAtRule;
- if (B.unvendor($name.get$value($name)) === "keyframes")
- $async$self._async_evaluate$_inKeyframes = true;
- else
- $async$self._async_evaluate$_inUnknownAtRule = true;
- t1 = B.ModifiableCssNode;
- t2 = H.setRuntimeTypeInfo([], [t1]);
- $async$goto = 8;
- return P._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(new U.ModifiableCssAtRule($name, value, false, node.span, new P.UnmodifiableListView(t2, [t1]), t2), new E._EvaluateVisitor_visitAtRule_closure1($async$self, node), node.hasDeclarations, new E._EvaluateVisitor_visitAtRule_closure2(), U.ModifiableCssAtRule, P.Null), $async$visitAtRule$1);
- case 8:
- // returning from await.
- $async$self._async_evaluate$_inUnknownAtRule = wasInUnknownAtRule;
- $async$self._async_evaluate$_inKeyframes = wasInKeyframes;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitAtRule$1, $async$completer);
- },
- visitForRule$1: function(node) {
- return this.visitForRule$body$_EvaluateVisitor(node);
- },
- visitForRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, t1, t2, t3, fromNumber, t4, toNumber, from, to, direction;
- var $async$visitForRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = {};
- t2 = node.from;
- t3 = T.SassNumber;
- $async$goto = 3;
- return P._asyncAwait($async$self._addExceptionSpanAsync$1$2(t2, new E._EvaluateVisitor_visitForRule_closure4($async$self, node), t3), $async$visitForRule$1);
- case 3:
- // returning from await.
- fromNumber = $async$result;
- t4 = node.to;
- $async$goto = 4;
- return P._asyncAwait($async$self._addExceptionSpanAsync$1$2(t4, new E._EvaluateVisitor_visitForRule_closure5($async$self, node), t3), $async$visitForRule$1);
- case 4:
- // returning from await.
- toNumber = $async$result;
- from = $async$self._async_evaluate$_addExceptionSpan$2(t2, new E._EvaluateVisitor_visitForRule_closure6(fromNumber, toNumber));
- to = t1.to = $async$self._async_evaluate$_addExceptionSpan$2(t4, new E._EvaluateVisitor_visitForRule_closure7(toNumber));
- direction = from > to ? -1 : 1;
- if (from === (!node.isExclusive ? t1.to = to + direction : to)) {
- // goto return
- $async$goto = 1;
- break;
- }
- $async$returnValue = $async$self._async_evaluate$_environment.scope$1$2$semiGlobal(new E._EvaluateVisitor_visitForRule_closure8(t1, $async$self, node, from, direction), true, F.Value);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitForRule$1, $async$completer);
- },
- visitForwardRule$1: function(node) {
- return this.visitForwardRule$body$_EvaluateVisitor(node);
- },
- visitForwardRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, newConfiguration, t4, _i, variable, oldConfiguration, adjustedConfiguration, t1, t2, t3;
- var $async$visitForwardRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- oldConfiguration = $async$self._async_evaluate$_configuration;
- adjustedConfiguration = oldConfiguration.throughForward$1(node);
- t1 = node.configuration;
- t2 = t1.length;
- t3 = node.url;
- $async$goto = t2 !== 0 ? 3 : 5;
- break;
- case 3:
- // then
- $async$goto = 6;
- return P._asyncAwait($async$self._async_evaluate$_addForwardConfiguration$2(adjustedConfiguration, node), $async$visitForwardRule$1);
- case 6:
- // returning from await.
- newConfiguration = $async$result;
- $async$goto = 7;
- return P._asyncAwait($async$self._async_evaluate$_loadModule$5$configuration(t3, "@forward", node, new E._EvaluateVisitor_visitForwardRule_closure1($async$self, node), newConfiguration), $async$visitForwardRule$1);
- case 7:
- // returning from await.
- t3 = P.String;
- t4 = P.LinkedHashSet_LinkedHashSet(t3);
- for (_i = 0; _i < t2; ++_i) {
- variable = t1[_i];
- if (!variable.isGuarded)
- t4.add$1(0, variable.name);
- }
- $async$self._async_evaluate$_removeUsedConfiguration$3$except(adjustedConfiguration, newConfiguration, t4);
- t3 = P.LinkedHashSet_LinkedHashSet(t3);
- for (_i = 0; _i < t2; ++_i)
- t3.add$1(0, t1[_i].name);
- $async$self._async_evaluate$_assertConfigurationIsEmpty$2$only(newConfiguration, t3);
- // goto join
- $async$goto = 4;
- break;
- case 5:
- // else
- $async$self._async_evaluate$_configuration = adjustedConfiguration;
- $async$goto = 8;
- return P._asyncAwait($async$self._async_evaluate$_loadModule$4(t3, "@forward", node, new E._EvaluateVisitor_visitForwardRule_closure2($async$self, node)), $async$visitForwardRule$1);
- case 8:
- // returning from await.
- $async$self._async_evaluate$_configuration = oldConfiguration;
- case 4:
- // join
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitForwardRule$1, $async$completer);
- },
- _async_evaluate$_addForwardConfiguration$2: function(configuration, node) {
- return this._addForwardConfiguration$body$_EvaluateVisitor(configuration, node);
- },
- _addForwardConfiguration$body$_EvaluateVisitor: function(configuration, node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(A.Configuration),
- $async$returnValue, $async$self = this, _i, variable, t4, t5, t1, t2, t3, newValues, $async$temp1, $async$temp2, $async$temp3;
- var $async$_async_evaluate$_addForwardConfiguration$2 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = configuration._values;
- t2 = P.String;
- t3 = Z.ConfiguredValue;
- newValues = P.LinkedHashMap_LinkedHashMap$of(new P.UnmodifiableMapView(t1, [t2, t3]), t2, t3);
- t2 = node.configuration, t3 = t2.length, _i = 0;
- case 3:
- // for condition
- if (!(_i < t3)) {
- // goto after for
- $async$goto = 5;
- break;
- }
- variable = t2[_i];
- if (variable.isGuarded) {
- t4 = variable.name;
- t5 = t1.get$isEmpty(t1) ? null : t1.remove$1(0, t4);
- if (t5 != null && !J.$eq$(t5.value, C.C_SassNull)) {
- newValues.$indexSet(0, t4, t5);
- // goto for update
- $async$goto = 4;
- break;
- }
- }
- t4 = variable.name;
- t5 = variable.expression;
- $async$temp1 = newValues;
- $async$temp2 = t4;
- $async$temp3 = Z;
- $async$goto = 6;
- return P._asyncAwait(t5.accept$1($async$self), $async$_async_evaluate$_addForwardConfiguration$2);
- case 6:
- // returning from await.
- $async$temp1.$indexSet(0, $async$temp2, new $async$temp3.ConfiguredValue($async$result.withoutSlash$0(), variable.span, $async$self._async_evaluate$_expressionNode$1(t5)));
- case 4:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 3;
- break;
- case 5:
- // after for
- $async$returnValue = new A.Configuration(newValues, node, false);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_addForwardConfiguration$2, $async$completer);
- },
- _async_evaluate$_removeUsedConfiguration$3$except: function(upstream, downstream, except) {
- var t1, t2, t3, _i, $name;
- for (t1 = upstream._values, t2 = J.toList$0$ax(t1.get$keys()), t3 = t2.length, _i = 0; _i < t2.length; t2.length === t3 || (0, H.throwConcurrentModificationError)(t2), ++_i) {
- $name = t2[_i];
- if (except.contains$1(0, $name))
- continue;
- if (!downstream._values.containsKey$1($name))
- if (!t1.get$isEmpty(t1))
- t1.remove$1(0, $name);
- }
- },
- _async_evaluate$_assertConfigurationIsEmpty$3$nameInError$only: function(configuration, nameInError, only) {
- configuration._values.forEach$1(0, new E._EvaluateVisitor__assertConfigurationIsEmpty_closure0(this, only, nameInError));
- },
- _async_evaluate$_assertConfigurationIsEmpty$1: function(configuration) {
- return this._async_evaluate$_assertConfigurationIsEmpty$3$nameInError$only(configuration, false, null);
- },
- _async_evaluate$_assertConfigurationIsEmpty$2$only: function(configuration, only) {
- return this._async_evaluate$_assertConfigurationIsEmpty$3$nameInError$only(configuration, false, only);
- },
- _async_evaluate$_assertConfigurationIsEmpty$2$nameInError: function(configuration, nameInError) {
- return this._async_evaluate$_assertConfigurationIsEmpty$3$nameInError$only(configuration, nameInError, null);
- },
- visitFunctionRule$1: function(node) {
- return this.visitFunctionRule$body$_EvaluateVisitor(node);
- },
- visitFunctionRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, t1, t2, t3, index, t4;
- var $async$visitFunctionRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self._async_evaluate$_environment;
- t2 = t1.closure$0();
- t3 = t1._async_environment$_functions;
- index = t3.length - 1;
- t4 = node.name;
- t1._async_environment$_functionIndices.$indexSet(0, t4, index);
- J.$indexSet$ax(t3[index], t4, new E.UserDefinedCallable(node, t2, [Q.AsyncEnvironment]));
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitFunctionRule$1, $async$completer);
- },
- visitIfRule$1: function(node) {
- return this.visitIfRule$body$_EvaluateVisitor(node);
- },
- visitIfRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, t1, t2, _i, clauseToCheck, _box_0;
- var $async$visitIfRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- _box_0 = {};
- _box_0.clause = node.lastClause;
- t1 = node.clauses, t2 = t1.length, _i = 0;
- case 3:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 5;
- break;
- }
- clauseToCheck = t1[_i];
- $async$goto = 6;
- return P._asyncAwait(clauseToCheck.expression.accept$1($async$self), $async$visitIfRule$1);
- case 6:
- // returning from await.
- if ($async$result.get$isTruthy()) {
- _box_0.clause = clauseToCheck;
- // goto after for
- $async$goto = 5;
- break;
- }
- case 4:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 3;
- break;
- case 5:
- // after for
- t1 = _box_0.clause;
- if (t1 == null) {
- // goto return
- $async$goto = 1;
- break;
- }
- $async$goto = 7;
- return P._asyncAwait($async$self._async_evaluate$_environment.scope$1$3$semiGlobal$when(new E._EvaluateVisitor_visitIfRule_closure0(_box_0, $async$self), true, t1.hasDeclarations, F.Value), $async$visitIfRule$1);
- case 7:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitIfRule$1, $async$completer);
- },
- visitImportRule$1: function(node) {
- return this.visitImportRule$body$_EvaluateVisitor(node);
- },
- visitImportRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, t1, t2, _i, $import;
- var $async$visitImportRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = node.imports, t2 = t1.length, _i = 0;
- case 3:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 5;
- break;
- }
- $import = t1[_i];
- $async$goto = $import instanceof B.DynamicImport ? 6 : 8;
- break;
- case 6:
- // then
- $async$goto = 9;
- return P._asyncAwait($async$self._async_evaluate$_visitDynamicImport$1($import), $async$visitImportRule$1);
- case 9:
- // returning from await.
- // goto join
- $async$goto = 7;
- break;
- case 8:
- // else
- $async$goto = 10;
- return P._asyncAwait($async$self._visitStaticImport$1(H.interceptedTypeCast($import, "$isStaticImport")), $async$visitImportRule$1);
- case 10:
- // returning from await.
- case 7:
- // join
- case 4:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 3;
- break;
- case 5:
- // after for
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitImportRule$1, $async$completer);
- },
- _async_evaluate$_visitDynamicImport$1: function($import) {
- return this._async_evaluate$_withStackFrame$1$3("@import", $import, new E._EvaluateVisitor__visitDynamicImport_closure0(this, $import), -1);
- },
- _async_evaluate$_loadStylesheet$4$baseUrl$forImport: function(url, span, baseUrl, forImport) {
- return this._loadStylesheet$body$_EvaluateVisitor(url, span, baseUrl, forImport);
- },
- _async_evaluate$_loadStylesheet$3$baseUrl: function(url, span, baseUrl) {
- return this._async_evaluate$_loadStylesheet$4$baseUrl$forImport(url, span, baseUrl, false);
- },
- _async_evaluate$_loadStylesheet$3$forImport: function(url, span, forImport) {
- return this._async_evaluate$_loadStylesheet$4$baseUrl$forImport(url, span, null, forImport);
- },
- _loadStylesheet$body$_EvaluateVisitor: function(url, span, baseUrl, forImport) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter([S.Tuple2, B.AsyncImporter, V.Stylesheet]),
- $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, stylesheet, tuple, error, error0, message, t1, t2, t3, exception, $async$exception;
- var $async$_async_evaluate$_loadStylesheet$4$baseUrl$forImport = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1) {
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$handler = 4;
- $async$self._async_evaluate$_importSpan = span;
- $async$goto = $async$self._async_evaluate$_nodeImporter != null ? 7 : 9;
- break;
- case 7:
- // then
- $async$goto = 10;
- return P._asyncAwait($async$self._async_evaluate$_importLikeNode$2(url, forImport), $async$_async_evaluate$_loadStylesheet$4$baseUrl$forImport);
- case 10:
- // returning from await.
- stylesheet = $async$result;
- if (stylesheet != null) {
- $async$returnValue = new S.Tuple2(null, stylesheet, [B.AsyncImporter, V.Stylesheet]);
- $async$next = [1];
- // goto finally
- $async$goto = 5;
- break;
- }
- // goto join
- $async$goto = 8;
- break;
- case 9:
- // else
- t1 = P.Uri_parse(url);
- t2 = $async$self._async_evaluate$_importer;
- if (baseUrl == null) {
- t3 = $async$self._async_evaluate$_stylesheet;
- t3 = t3 == null ? null : t3.span;
- t3 = t3 == null ? null : t3.file.url;
- } else
- t3 = baseUrl;
- $async$goto = 11;
- return P._asyncAwait($async$self._async_evaluate$_importCache.import$4$baseImporter$baseUrl$forImport(t1, t2, t3, forImport), $async$_async_evaluate$_loadStylesheet$4$baseUrl$forImport);
- case 11:
- // returning from await.
- tuple = $async$result;
- if (tuple != null) {
- $async$returnValue = tuple;
- $async$next = [1];
- // goto finally
- $async$goto = 5;
- break;
- }
- case 8:
- // join
- if (C.JSString_methods.startsWith$1(url, "package:") && true)
- throw H.wrapException('"package:" URLs aren\'t supported on this platform.');
- else
- throw H.wrapException("Can't find stylesheet to import.");
- $async$next.push(6);
- // goto finally
- $async$goto = 5;
- break;
- case 4:
- // catch
- $async$handler = 3;
- $async$exception = $async$currentError;
- t1 = H.unwrapException($async$exception);
- if (t1 instanceof E.SassException) {
- error = t1;
- t1 = $async$self._async_evaluate$_exception$2(error._span_exception$_message, error.get$span());
- throw H.wrapException(t1);
- } else {
- error0 = t1;
- message = null;
- try {
- message = H.stringTypeCast(J.get$message$x(error0));
- } catch (exception) {
- H.unwrapException($async$exception);
- message = J.toString$0$(error0);
- }
- t1 = $async$self._async_evaluate$_exception$1(message);
- throw H.wrapException(t1);
- }
- $async$next.push(6);
- // goto finally
- $async$goto = 5;
- break;
- case 3:
- // uncaught
- $async$next = [2];
- case 5:
- // finally
- $async$handler = 2;
- $async$self._async_evaluate$_importSpan = null;
- // goto the next finally handler
- $async$goto = $async$next.pop();
- break;
- case 6:
- // after finally
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- case 2:
- // rethrow
- return P._asyncRethrow($async$currentError, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_loadStylesheet$4$baseUrl$forImport, $async$completer);
- },
- _async_evaluate$_importLikeNode$2: function(originalUrl, forImport) {
- return this._importLikeNode$body$_EvaluateVisitor(originalUrl, forImport);
- },
- _importLikeNode$body$_EvaluateVisitor: function(originalUrl, forImport) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(V.Stylesheet),
- $async$returnValue, $async$self = this, result, contents, url, t1;
- var $async$_async_evaluate$_importLikeNode$2 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self._async_evaluate$_stylesheet.span;
- t1 = t1 == null ? null : t1.file.url;
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_nodeImporter.loadAsync$3(originalUrl, t1, forImport), $async$_async_evaluate$_importLikeNode$2);
- case 3:
- // returning from await.
- result = $async$result;
- if (result == null) {
- // goto return
- $async$goto = 1;
- break;
- }
- contents = result.item1;
- url = result.item2;
- t1 = J.getInterceptor$s(url).startsWith$1(url, "file:") ? $.$get$context().style.pathFromUri$1(M._parseUri(url)) : url;
- $async$self._async_evaluate$_includedFiles.add$1(0, t1);
- t1 = C.JSString_methods.startsWith$1(url, "file") ? M.Syntax_forPath(url) : C.Syntax_SCSS;
- $async$returnValue = V.Stylesheet_Stylesheet$parse(contents, t1, $async$self._async_evaluate$_logger, url);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_importLikeNode$2, $async$completer);
- },
- _visitStaticImport$1: function($import) {
- return this._visitStaticImport$body$_EvaluateVisitor($import);
- },
- _visitStaticImport$body$_EvaluateVisitor: function($import) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$returnValue, $async$self = this, resolvedSupports, t1, mediaQuery, node, t2, url, supports, $async$temp1, $async$temp2;
- var $async$_visitStaticImport$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_interpolationToValue$1($import.url), $async$_visitStaticImport$1);
- case 3:
- // returning from await.
- url = $async$result;
- supports = $import.supports;
- $async$goto = supports instanceof L.SupportsDeclaration ? 4 : 6;
- break;
- case 4:
- // then
- $async$temp1 = H;
- $async$goto = 7;
- return P._asyncAwait($async$self._evaluateToCss$1(supports.name), $async$_visitStaticImport$1);
- case 7:
- // returning from await.
- $async$temp1 = $async$temp1.S($async$result) + ": ";
- $async$temp2 = H;
- $async$goto = 8;
- return P._asyncAwait($async$self._evaluateToCss$1(supports.value), $async$_visitStaticImport$1);
- case 8:
- // returning from await.
- resolvedSupports = $async$temp1 + $async$temp2.S($async$result);
- // goto join
- $async$goto = 5;
- break;
- case 6:
- // else
- $async$goto = supports == null ? 9 : 11;
- break;
- case 9:
- // then
- $async$result = null;
- // goto join
- $async$goto = 10;
- break;
- case 11:
- // else
- $async$goto = 12;
- return P._asyncAwait($async$self._async_evaluate$_visitSupportsCondition$1(supports), $async$_visitStaticImport$1);
- case 12:
- // returning from await.
- case 10:
- // join
- resolvedSupports = $async$result;
- case 5:
- // join
- t1 = $import.media;
- $async$goto = t1 == null ? 13 : 15;
- break;
- case 13:
- // then
- $async$result = null;
- // goto join
- $async$goto = 14;
- break;
- case 15:
- // else
- $async$goto = 16;
- return P._asyncAwait($async$self._async_evaluate$_visitMediaQueries$1(t1), $async$_visitStaticImport$1);
- case 16:
- // returning from await.
- case 14:
- // join
- mediaQuery = $async$result;
- t1 = $import.span;
- node = F.ModifiableCssImport$(url, t1, mediaQuery, resolvedSupports == null ? null : new F.CssValue("supports(" + resolvedSupports + ")", supports.get$span(), [P.String]));
- t1 = $async$self._async_evaluate$_parent;
- t2 = $async$self._async_evaluate$_root;
- if (t1 != t2)
- t1.addChild$1(node);
- else if ($async$self._async_evaluate$_endOfImports === J.get$length$asx(t2.children._collection$_source)) {
- $async$self._async_evaluate$_root.addChild$1(node);
- $async$self._async_evaluate$_endOfImports = $async$self._async_evaluate$_endOfImports + 1;
- } else {
- t1 = $async$self._async_evaluate$_outOfOrderImports;
- (t1 == null ? $async$self._async_evaluate$_outOfOrderImports = H.setRuntimeTypeInfo([], [F.ModifiableCssImport]) : t1).push(node);
- }
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_visitStaticImport$1, $async$completer);
- },
- visitIncludeRule$1: function(node) {
- return this.visitIncludeRule$body$_EvaluateVisitor(node);
- },
- visitIncludeRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, nodeWithSpan, t1, t2, t3, contentCallable, mixin;
- var $async$visitIncludeRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- mixin = $async$self._async_evaluate$_addExceptionSpan$2(node, new E._EvaluateVisitor_visitIncludeRule_closure2($async$self, node));
- if (mixin == null)
- throw H.wrapException($async$self._async_evaluate$_exception$2("Undefined mixin.", node.span));
- nodeWithSpan = new B._FakeAstNode(new E._EvaluateVisitor_visitIncludeRule_closure3(node));
- $async$goto = !!mixin.$isAsyncBuiltInCallable ? 3 : 5;
- break;
- case 3:
- // then
- if (node.content != null)
- throw H.wrapException($async$self._async_evaluate$_exception$2("Mixin doesn't accept a content block.", node.span));
- $async$goto = 6;
- return P._asyncAwait($async$self._async_evaluate$_runBuiltInCallable$3(node.$arguments, mixin, nodeWithSpan), $async$visitIncludeRule$1);
- case 6:
- // returning from await.
- // goto join
- $async$goto = 4;
- break;
- case 5:
- // else
- t1 = [Q.AsyncEnvironment];
- $async$goto = H.checkSubtype(mixin, "$isUserDefinedCallable", t1, null) ? 7 : 9;
- break;
- case 7:
- // then
- t2 = node.content;
- t3 = t2 == null;
- if (!t3 && !H.interceptedTypeCast(mixin.declaration, "$isMixinRule").hasContent)
- throw H.wrapException(E.MultiSpanSassRuntimeException$("Mixin doesn't accept a content block.", node.get$spanWithoutContent(), "invocation", P.LinkedHashMap_LinkedHashMap$_literal([mixin.declaration.$arguments.get$spanWithName(), "declaration"], Y.FileSpan, P.String), $async$self._async_evaluate$_stackTrace$1(node.get$spanWithoutContent())));
- contentCallable = t3 ? null : new E.UserDefinedCallable(t2, $async$self._async_evaluate$_environment.closure$0(), t1);
- $async$goto = 10;
- return P._asyncAwait($async$self._async_evaluate$_runUserDefinedCallable$4(node.$arguments, mixin, nodeWithSpan, new E._EvaluateVisitor_visitIncludeRule_closure4($async$self, contentCallable, mixin, nodeWithSpan)), $async$visitIncludeRule$1);
- case 10:
- // returning from await.
- // goto join
- $async$goto = 8;
- break;
- case 9:
- // else
- throw H.wrapException(P.UnsupportedError$("Unknown callable type " + mixin.toString$0(0) + "."));
- case 8:
- // join
- case 4:
- // join
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitIncludeRule$1, $async$completer);
- },
- visitMixinRule$1: function(node) {
- return this.visitMixinRule$body$_EvaluateVisitor(node);
- },
- visitMixinRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, t1, t2, t3, index, t4;
- var $async$visitMixinRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self._async_evaluate$_environment;
- t2 = t1.closure$0();
- t3 = t1._async_environment$_mixins;
- index = t3.length - 1;
- t4 = node.name;
- t1._async_environment$_mixinIndices.$indexSet(0, t4, index);
- J.$indexSet$ax(t3[index], t4, new E.UserDefinedCallable(node, t2, [Q.AsyncEnvironment]));
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitMixinRule$1, $async$completer);
- },
- visitLoudComment$1: function(node) {
- return this.visitLoudComment$body$_EvaluateVisitor(node);
- },
- visitLoudComment$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, t1, t2, $async$temp1, $async$temp2;
- var $async$visitLoudComment$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if ($async$self._async_evaluate$_inFunction) {
- // goto return
- $async$goto = 1;
- break;
- }
- t1 = $async$self._async_evaluate$_parent;
- t2 = $async$self._async_evaluate$_root;
- if (t1 == t2 && $async$self._async_evaluate$_endOfImports === J.get$length$asx(t2.children._collection$_source))
- $async$self._async_evaluate$_endOfImports = $async$self._async_evaluate$_endOfImports + 1;
- t1 = node.text;
- $async$temp1 = $async$self._async_evaluate$_parent;
- $async$temp2 = R;
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_performInterpolation$1(t1), $async$visitLoudComment$1);
- case 3:
- // returning from await.
- $async$temp1.addChild$1(new $async$temp2.ModifiableCssComment($async$result, t1.span));
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitLoudComment$1, $async$completer);
- },
- visitMediaRule$1: function(node) {
- return this.visitMediaRule$body$_EvaluateVisitor(node);
- },
- visitMediaRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, queries, t1, mergedQueries;
- var $async$visitMediaRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if ($async$self._async_evaluate$_declarationName != null)
- throw H.wrapException($async$self._async_evaluate$_exception$2("Media rules may not be used within nested declarations.", node.span));
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_visitMediaQueries$1(node.query), $async$visitMediaRule$1);
- case 3:
- // returning from await.
- queries = $async$result;
- t1 = $async$self._async_evaluate$_mediaQueries;
- mergedQueries = t1 == null ? null : $async$self._async_evaluate$_mergeMediaQueries$2(t1, queries);
- t1 = mergedQueries == null;
- if (!t1 && mergedQueries.length === 0) {
- // goto return
- $async$goto = 1;
- break;
- }
- t1 = t1 ? queries : mergedQueries;
- $async$goto = 4;
- return P._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(G.ModifiableCssMediaRule$(t1, node.span), new E._EvaluateVisitor_visitMediaRule_closure1($async$self, mergedQueries, queries, node), node.hasDeclarations, new E._EvaluateVisitor_visitMediaRule_closure2(mergedQueries), G.ModifiableCssMediaRule, P.Null), $async$visitMediaRule$1);
- case 4:
- // returning from await.
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitMediaRule$1, $async$completer);
- },
- _async_evaluate$_visitMediaQueries$1: function(interpolation) {
- return this._visitMediaQueries$body$_EvaluateVisitor(interpolation);
- },
- _visitMediaQueries$body$_EvaluateVisitor: function(interpolation) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter([P.List, F.CssMediaQuery]),
- $async$returnValue, $async$self = this, $async$temp1, $async$temp2;
- var $async$_async_evaluate$_visitMediaQueries$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$temp1 = interpolation;
- $async$temp2 = E;
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_performInterpolation$2$warnForColor(interpolation, true), $async$_async_evaluate$_visitMediaQueries$1);
- case 3:
- // returning from await.
- $async$returnValue = $async$self._async_evaluate$_adjustParseError$2($async$temp1, new $async$temp2._EvaluateVisitor__visitMediaQueries_closure0($async$self, $async$result));
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_visitMediaQueries$1, $async$completer);
- },
- _async_evaluate$_mergeMediaQueries$2: function(queries1, queries2) {
- var t1, t2, t3, t4, result,
- queries = H.setRuntimeTypeInfo([], [F.CssMediaQuery]);
- for (t1 = J.get$iterator$ax(queries1), t2 = J.getInterceptor$ax(queries2); t1.moveNext$0();) {
- t3 = t1.get$current(t1);
- for (t4 = t2.get$iterator(queries2); t4.moveNext$0();) {
- result = t3.merge$1(t4.get$current(t4));
- if (result === C._SingletonCssMediaQueryMergeResult_empty)
- continue;
- if (result === C._SingletonCssMediaQueryMergeResult_unrepresentable)
- return;
- queries.push(H.interceptedTypeCast(result, "$isMediaQuerySuccessfulMergeResult").query);
- }
- }
- return queries;
- },
- visitReturnRule$1: function(node) {
- return node.expression.accept$1(this);
- },
- visitSilentComment$1: function(node) {
- return this.visitSilentComment$body$_EvaluateVisitor(node);
- },
- visitSilentComment$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue;
- var $async$visitSilentComment$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitSilentComment$1, $async$completer);
- },
- visitStyleRule$1: function(node) {
- return this.visitStyleRule$body$_EvaluateVisitor(node);
- },
- visitStyleRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, t2, selectorText, t3, t4, parsedSelector, rule, oldAtRootExcludingStyleRule, t1;
- var $async$visitStyleRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = {};
- if ($async$self._async_evaluate$_declarationName != null)
- throw H.wrapException($async$self._async_evaluate$_exception$2("Style rules may not be used within nested declarations.", node.span));
- t2 = node.selector;
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_interpolationToValue$3$trim$warnForColor(t2, true, true), $async$visitStyleRule$1);
- case 3:
- // returning from await.
- selectorText = $async$result;
- $async$goto = $async$self._async_evaluate$_inKeyframes ? 4 : 5;
- break;
- case 4:
- // then
- t1 = P.List_List$unmodifiable($async$self._async_evaluate$_adjustParseError$2(t2, new E._EvaluateVisitor_visitStyleRule_closure6($async$self, selectorText)), P.String);
- t3 = B.ModifiableCssNode;
- t4 = H.setRuntimeTypeInfo([], [t3]);
- $async$goto = 6;
- return P._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(new U.ModifiableCssKeyframeBlock(new F.CssValue(t1, t2.span, [[P.List, P.String]]), node.span, new P.UnmodifiableListView(t4, [t3]), t4), new E._EvaluateVisitor_visitStyleRule_closure7($async$self, node), node.hasDeclarations, new E._EvaluateVisitor_visitStyleRule_closure8(), U.ModifiableCssKeyframeBlock, P.Null), $async$visitStyleRule$1);
- case 6:
- // returning from await.
- // goto return
- $async$goto = 1;
- break;
- case 5:
- // join
- t1.parsedSelector = $async$self._async_evaluate$_adjustParseError$2(t2, new E._EvaluateVisitor_visitStyleRule_closure9($async$self, selectorText));
- parsedSelector = $async$self._async_evaluate$_addExceptionSpan$2(t2, new E._EvaluateVisitor_visitStyleRule_closure10(t1, $async$self));
- t1.parsedSelector = parsedSelector;
- rule = X.ModifiableCssStyleRule$($async$self._async_evaluate$_extender.addSelector$3(parsedSelector, t2.span, $async$self._async_evaluate$_mediaQueries), node.span, t1.parsedSelector);
- oldAtRootExcludingStyleRule = $async$self._async_evaluate$_atRootExcludingStyleRule;
- $async$self._async_evaluate$_atRootExcludingStyleRule = false;
- $async$goto = 7;
- return P._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(rule, new E._EvaluateVisitor_visitStyleRule_closure11($async$self, rule, node), node.hasDeclarations, new E._EvaluateVisitor_visitStyleRule_closure12(), X.ModifiableCssStyleRule, P.Null), $async$visitStyleRule$1);
- case 7:
- // returning from await.
- $async$self._async_evaluate$_atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
- if (!($async$self._async_evaluate$_styleRule != null && !oldAtRootExcludingStyleRule)) {
- t1 = $async$self._async_evaluate$_parent.children;
- t1 = !t1.get$isEmpty(t1);
- } else
- t1 = false;
- if (t1) {
- t1 = $async$self._async_evaluate$_parent.children;
- t1.get$last(t1).isGroupEnd = true;
- }
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitStyleRule$1, $async$completer);
- },
- visitSupportsRule$1: function(node) {
- return this.visitSupportsRule$body$_EvaluateVisitor(node);
- },
- visitSupportsRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, t1, t2, t3, t4;
- var $async$visitSupportsRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if ($async$self._async_evaluate$_declarationName != null)
- throw H.wrapException($async$self._async_evaluate$_exception$2("Supports rules may not be used within nested declarations.", node.span));
- t1 = node.condition;
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_visitSupportsCondition$1(t1), $async$visitSupportsRule$1);
- case 3:
- // returning from await.
- t2 = $async$result;
- t1 = t1.get$span();
- t3 = B.ModifiableCssNode;
- t4 = H.setRuntimeTypeInfo([], [t3]);
- $async$goto = 4;
- return P._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(new B.ModifiableCssSupportsRule(new F.CssValue(t2, t1, [P.String]), node.span, new P.UnmodifiableListView(t4, [t3]), t4), new E._EvaluateVisitor_visitSupportsRule_closure1($async$self, node), node.hasDeclarations, new E._EvaluateVisitor_visitSupportsRule_closure2(), B.ModifiableCssSupportsRule, P.Null), $async$visitSupportsRule$1);
- case 4:
- // returning from await.
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitSupportsRule$1, $async$completer);
- },
- _async_evaluate$_visitSupportsCondition$1: function(condition) {
- return this._visitSupportsCondition$body$_EvaluateVisitor(condition);
- },
- _visitSupportsCondition$body$_EvaluateVisitor: function(condition) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.String),
- $async$returnValue, $async$self = this, t2, t1, $async$temp1, $async$temp2;
- var $async$_async_evaluate$_visitSupportsCondition$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = J.getInterceptor$(condition);
- $async$goto = !!t1.$isSupportsOperation ? 3 : 5;
- break;
- case 3:
- // then
- t1 = condition.left;
- t2 = condition.operator;
- $async$temp1 = H;
- $async$goto = 6;
- return P._asyncAwait($async$self._async_evaluate$_parenthesize$2(t1, t2), $async$_async_evaluate$_visitSupportsCondition$1);
- case 6:
- // returning from await.
- $async$temp1 = $async$temp1.S($async$result) + " " + t2 + " ";
- $async$temp2 = H;
- $async$goto = 7;
- return P._asyncAwait($async$self._async_evaluate$_parenthesize$2(condition.right, t2), $async$_async_evaluate$_visitSupportsCondition$1);
- case 7:
- // returning from await.
- $async$returnValue = $async$temp1 + $async$temp2.S($async$result);
- // goto return
- $async$goto = 1;
- break;
- // goto join
- $async$goto = 4;
- break;
- case 5:
- // else
- $async$goto = !!t1.$isSupportsNegation ? 8 : 10;
- break;
- case 8:
- // then
- $async$temp1 = H;
- $async$goto = 11;
- return P._asyncAwait($async$self._async_evaluate$_parenthesize$1(condition.condition), $async$_async_evaluate$_visitSupportsCondition$1);
- case 11:
- // returning from await.
- $async$returnValue = "not " + $async$temp1.S($async$result);
- // goto return
- $async$goto = 1;
- break;
- // goto join
- $async$goto = 9;
- break;
- case 10:
- // else
- $async$goto = !!t1.$isSupportsInterpolation ? 12 : 14;
- break;
- case 12:
- // then
- $async$goto = 15;
- return P._asyncAwait($async$self._evaluateToCss$2$quote(condition.expression, false), $async$_async_evaluate$_visitSupportsCondition$1);
- case 15:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- // goto join
- $async$goto = 13;
- break;
- case 14:
- // else
- $async$goto = !!t1.$isSupportsDeclaration ? 16 : 18;
- break;
- case 16:
- // then
- $async$temp1 = H;
- $async$goto = 19;
- return P._asyncAwait($async$self._evaluateToCss$1(condition.name), $async$_async_evaluate$_visitSupportsCondition$1);
- case 19:
- // returning from await.
- $async$temp1 = "(" + $async$temp1.S($async$result) + ": ";
- $async$temp2 = H;
- $async$goto = 20;
- return P._asyncAwait($async$self._evaluateToCss$1(condition.value), $async$_async_evaluate$_visitSupportsCondition$1);
- case 20:
- // returning from await.
- $async$returnValue = $async$temp1 + $async$temp2.S($async$result) + ")";
- // goto return
- $async$goto = 1;
- break;
- // goto join
- $async$goto = 17;
- break;
- case 18:
- // else
- // goto return
- $async$goto = 1;
- break;
- case 17:
- // join
- case 13:
- // join
- case 9:
- // join
- case 4:
- // join
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_visitSupportsCondition$1, $async$completer);
- },
- _async_evaluate$_parenthesize$2: function(condition, operator) {
- return this._parenthesize$body$_EvaluateVisitor(condition, operator);
- },
- _async_evaluate$_parenthesize$1: function(condition) {
- return this._async_evaluate$_parenthesize$2(condition, null);
- },
- _parenthesize$body$_EvaluateVisitor: function(condition, operator) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.String),
- $async$returnValue, $async$self = this, t1, $async$temp1;
- var $async$_async_evaluate$_parenthesize$2 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if (!condition.$isSupportsNegation)
- if (!!condition.$isSupportsOperation)
- t1 = operator == null || operator !== condition.operator;
- else
- t1 = false;
- else
- t1 = true;
- $async$goto = t1 ? 3 : 5;
- break;
- case 3:
- // then
- $async$temp1 = H;
- $async$goto = 6;
- return P._asyncAwait($async$self._async_evaluate$_visitSupportsCondition$1(condition), $async$_async_evaluate$_parenthesize$2);
- case 6:
- // returning from await.
- $async$returnValue = "(" + $async$temp1.S($async$result) + ")";
- // goto return
- $async$goto = 1;
- break;
- // goto join
- $async$goto = 4;
- break;
- case 5:
- // else
- $async$goto = 7;
- return P._asyncAwait($async$self._async_evaluate$_visitSupportsCondition$1(condition), $async$_async_evaluate$_parenthesize$2);
- case 7:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 4:
- // join
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_parenthesize$2, $async$completer);
- },
- visitVariableDeclaration$1: function(node) {
- return this.visitVariableDeclaration$body$_EvaluateVisitor(node);
- },
- visitVariableDeclaration$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, t1, value, t2, $async$temp1, $async$temp2, $async$temp3;
- var $async$visitVariableDeclaration$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if (node.isGuarded) {
- if (node.namespace == null && $async$self._async_evaluate$_environment._async_environment$_variables.length === 1) {
- t1 = $async$self._async_evaluate$_configuration._values;
- t1 = t1.get$isEmpty(t1) ? null : t1.remove$1(0, node.name);
- if (t1 != null) {
- $async$self._async_evaluate$_addExceptionSpan$2(node, new E._EvaluateVisitor_visitVariableDeclaration_closure2($async$self, node, t1));
- // goto return
- $async$goto = 1;
- break;
- }
- }
- value = $async$self._async_evaluate$_addExceptionSpan$2(node, new E._EvaluateVisitor_visitVariableDeclaration_closure3($async$self, node));
- if (value != null && !value.$eq(0, C.C_SassNull)) {
- // goto return
- $async$goto = 1;
- break;
- }
- }
- if (node.isGlobal && !$async$self._async_evaluate$_environment.globalVariableExists$1(node.name)) {
- t1 = $async$self._async_evaluate$_environment._async_environment$_variables.length === 1 ? "As of Dart Sass 2.0.0, !global assignments won't be able to\ndeclare new variables. Since this assignment is at the root of the stylesheet,\nthe !global flag is unnecessary and can safely be removed." : "As of Dart Sass 2.0.0, !global assignments won't be able to\ndeclare new variables. Consider adding `" + B.declarationName(node.span) + ": null` at the root of the\nstylesheet.";
- t2 = node.span;
- $async$self._async_evaluate$_logger.warn$4$deprecation$span$trace(t1, true, t2, $async$self._async_evaluate$_stackTrace$1(t2));
- }
- $async$temp1 = node;
- $async$temp2 = E;
- $async$temp3 = node;
- $async$goto = 3;
- return P._asyncAwait(node.expression.accept$1($async$self), $async$visitVariableDeclaration$1);
- case 3:
- // returning from await.
- $async$self._async_evaluate$_addExceptionSpan$2($async$temp1, new $async$temp2._EvaluateVisitor_visitVariableDeclaration_closure4($async$self, $async$temp3, $async$result.withoutSlash$0()));
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitVariableDeclaration$1, $async$completer);
- },
- visitUseRule$1: function(node) {
- return this.visitUseRule$body$_EvaluateVisitor(node);
- },
- visitUseRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, configuration, t3, _i, variable, t4, t5, t1, t2, $async$temp1, $async$temp2, $async$temp3;
- var $async$visitUseRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = node.configuration;
- t2 = t1.length;
- $async$goto = t2 === 0 ? 3 : 5;
- break;
- case 3:
- // then
- configuration = C.Configuration_Map_empty_null_true;
- // goto join
- $async$goto = 4;
- break;
- case 5:
- // else
- t3 = P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.ConfiguredValue);
- _i = 0;
- case 6:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 8;
- break;
- }
- variable = t1[_i];
- t4 = variable.name;
- t5 = variable.expression;
- $async$temp1 = t3;
- $async$temp2 = t4;
- $async$temp3 = Z;
- $async$goto = 9;
- return P._asyncAwait(t5.accept$1($async$self), $async$visitUseRule$1);
- case 9:
- // returning from await.
- $async$temp1.$indexSet(0, $async$temp2, new $async$temp3.ConfiguredValue($async$result.withoutSlash$0(), variable.span, $async$self._async_evaluate$_expressionNode$1(t5)));
- case 7:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 6;
- break;
- case 8:
- // after for
- configuration = new A.Configuration(t3, node, false);
- case 4:
- // join
- $async$goto = 10;
- return P._asyncAwait($async$self._async_evaluate$_loadModule$5$configuration(node.url, "@use", node, new E._EvaluateVisitor_visitUseRule_closure0($async$self, node), configuration), $async$visitUseRule$1);
- case 10:
- // returning from await.
- $async$self._async_evaluate$_assertConfigurationIsEmpty$1(configuration);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitUseRule$1, $async$completer);
- },
- visitWarnRule$1: function(node) {
- return this.visitWarnRule$body$_EvaluateVisitor(node);
- },
- visitWarnRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, value, t1;
- var $async$visitWarnRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait($async$self._addExceptionSpanAsync$1$2(node, new E._EvaluateVisitor_visitWarnRule_closure0($async$self, node), F.Value), $async$visitWarnRule$1);
- case 3:
- // returning from await.
- value = $async$result;
- t1 = value instanceof D.SassString ? value.text : $async$self._async_evaluate$_serialize$2(value, node.expression);
- $async$self._async_evaluate$_logger.warn$2$trace(t1, $async$self._async_evaluate$_stackTrace$1(node.span));
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitWarnRule$1, $async$completer);
- },
- visitWhileRule$1: function(node) {
- return this._async_evaluate$_environment.scope$1$3$semiGlobal$when(new E._EvaluateVisitor_visitWhileRule_closure0(this, node), true, node.hasDeclarations, F.Value);
- },
- visitBinaryOperationExpression$1: function(node) {
- return this._addExceptionSpanAsync$1$2(node, new E._EvaluateVisitor_visitBinaryOperationExpression_closure0(this, node), F.Value);
- },
- visitValueExpression$1: function(node) {
- return this.visitValueExpression$body$_EvaluateVisitor(node);
- },
- visitValueExpression$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue;
- var $async$visitValueExpression$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$returnValue = node.value;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitValueExpression$1, $async$completer);
- },
- visitVariableExpression$1: function(node) {
- return this.visitVariableExpression$body$_EvaluateVisitor(node);
- },
- visitVariableExpression$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, result;
- var $async$visitVariableExpression$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- result = $async$self._async_evaluate$_addExceptionSpan$2(node, new E._EvaluateVisitor_visitVariableExpression_closure0($async$self, node));
- if (result != null) {
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- }
- throw H.wrapException($async$self._async_evaluate$_exception$2("Undefined variable.", node.span));
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitVariableExpression$1, $async$completer);
- },
- visitUnaryOperationExpression$1: function(node) {
- return this.visitUnaryOperationExpression$body$_EvaluateVisitor(node);
- },
- visitUnaryOperationExpression$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, operand, t1;
- var $async$visitUnaryOperationExpression$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- $async$outer:
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait(node.operand.accept$1($async$self), $async$visitUnaryOperationExpression$1);
- case 3:
- // returning from await.
- operand = $async$result;
- t1 = node.operator;
- switch (t1) {
- case C.UnaryOperator_j2w:
- $async$returnValue = operand.unaryPlus$0();
- // goto return
- $async$goto = 1;
- break $async$outer;
- case C.UnaryOperator_U4G:
- $async$returnValue = operand.unaryMinus$0();
- // goto return
- $async$goto = 1;
- break $async$outer;
- case C.UnaryOperator_zDx:
- operand.toString;
- $async$returnValue = new D.SassString("/" + N.serializeValue(operand, false, true), false);
- // goto return
- $async$goto = 1;
- break $async$outer;
- case C.UnaryOperator_not_not:
- $async$returnValue = operand.unaryNot$0();
- // goto return
- $async$goto = 1;
- break $async$outer;
- default:
- throw H.wrapException(P.StateError$("Unknown unary operator " + H.S(t1) + "."));
- }
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitUnaryOperationExpression$1, $async$completer);
- },
- visitBooleanExpression$1: function(node) {
- return this.visitBooleanExpression$body$_EvaluateVisitor(node);
- },
- visitBooleanExpression$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(Z.SassBoolean),
- $async$returnValue;
- var $async$visitBooleanExpression$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$returnValue = node.value ? C.SassBoolean_true : C.SassBoolean_false;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitBooleanExpression$1, $async$completer);
- },
- visitIfExpression$1: function(node) {
- return this.visitIfExpression$body$_EvaluateVisitor(node);
- },
- visitIfExpression$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, condition, ifTrue, ifFalse, pair, positional, named, t1;
- var $async$visitIfExpression$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_evaluateMacroArguments$1(node), $async$visitIfExpression$1);
- case 3:
- // returning from await.
- pair = $async$result;
- positional = pair.item1;
- named = pair.item2;
- t1 = J.getInterceptor$asx(positional);
- $async$self._async_evaluate$_verifyArguments$4(t1.get$length(positional), named, $.$get$IfExpression_declaration(), node);
- condition = t1.get$length(positional) > 0 ? t1.$index(positional, 0) : named.$index(0, "condition");
- ifTrue = t1.get$length(positional) > 1 ? t1.$index(positional, 1) : named.$index(0, "if-true");
- ifFalse = t1.get$length(positional) > 2 ? t1.$index(positional, 2) : named.$index(0, "if-false");
- $async$goto = 5;
- return P._asyncAwait(condition.accept$1($async$self), $async$visitIfExpression$1);
- case 5:
- // returning from await.
- $async$goto = 4;
- return P._asyncAwait(($async$result.get$isTruthy() ? ifTrue : ifFalse).accept$1($async$self), $async$visitIfExpression$1);
- case 4:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitIfExpression$1, $async$completer);
- },
- visitNullExpression$1: function(node) {
- return this.visitNullExpression$body$_EvaluateVisitor(node);
- },
- visitNullExpression$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(O.SassNull),
- $async$returnValue;
- var $async$visitNullExpression$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$returnValue = C.C_SassNull;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitNullExpression$1, $async$completer);
- },
- visitNumberExpression$1: function(node) {
- return this.visitNumberExpression$body$_EvaluateVisitor(node);
- },
- visitNumberExpression$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(T.SassNumber),
- $async$returnValue, t1;
- var $async$visitNumberExpression$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = node.unit;
- t1 = t1 == null ? null : H.setRuntimeTypeInfo([t1], [P.String]);
- t1 = t1 == null ? C.List_empty : P.List_List$unmodifiable(t1, P.String);
- $async$returnValue = new T.SassNumber(node.value, t1, C.List_empty, null);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitNumberExpression$1, $async$completer);
- },
- visitParenthesizedExpression$1: function(node) {
- return node.expression.accept$1(this);
- },
- visitColorExpression$1: function(node) {
- return this.visitColorExpression$body$_EvaluateVisitor(node);
- },
- visitColorExpression$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(K.SassColor),
- $async$returnValue;
- var $async$visitColorExpression$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$returnValue = node.value;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitColorExpression$1, $async$completer);
- },
- visitListExpression$1: function(node) {
- return this.visitListExpression$body$_EvaluateVisitor(node);
- },
- visitListExpression$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(D.SassList),
- $async$returnValue, $async$self = this, $async$temp1;
- var $async$visitListExpression$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$temp1 = D;
- $async$goto = 3;
- return P._asyncAwait(B.mapAsync(node.contents, new E._EvaluateVisitor_visitListExpression_closure0($async$self), T.Expression, F.Value), $async$visitListExpression$1);
- case 3:
- // returning from await.
- $async$returnValue = $async$temp1.SassList$($async$result, node.separator, node.hasBrackets);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitListExpression$1, $async$completer);
- },
- visitMapExpression$1: function(node) {
- return this.visitMapExpression$body$_EvaluateVisitor(node);
- },
- visitMapExpression$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(A.SassMap),
- $async$returnValue, $async$self = this, t2, t3, _i, pair, t4, keyValue, valueValue, t1, map, keyNodes;
- var $async$visitMapExpression$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = F.Value;
- map = P.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
- keyNodes = P.LinkedHashMap_LinkedHashMap$_empty(t1, B.AstNode);
- t2 = node.pairs, t3 = t2.length, _i = 0;
- case 3:
- // for condition
- if (!(_i < t3)) {
- // goto after for
- $async$goto = 5;
- break;
- }
- pair = t2[_i];
- t4 = pair.item1;
- $async$goto = 6;
- return P._asyncAwait(t4.accept$1($async$self), $async$visitMapExpression$1);
- case 6:
- // returning from await.
- keyValue = $async$result;
- $async$goto = 7;
- return P._asyncAwait(pair.item2.accept$1($async$self), $async$visitMapExpression$1);
- case 7:
- // returning from await.
- valueValue = $async$result;
- if (map.containsKey$1(keyValue))
- throw H.wrapException(E.MultiSpanSassRuntimeException$("Duplicate key.", t4.get$span(), "second key", P.LinkedHashMap_LinkedHashMap$_literal([keyNodes.$index(0, keyValue).get$span(), "first key"], Y.FileSpan, P.String), $async$self._async_evaluate$_stackTrace$1(t4.get$span())));
- map.$indexSet(0, keyValue, valueValue);
- keyNodes.$indexSet(0, keyValue, t4);
- case 4:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 3;
- break;
- case 5:
- // after for
- $async$returnValue = new A.SassMap(H.ConstantMap_ConstantMap$from(map, t1, t1));
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitMapExpression$1, $async$completer);
- },
- visitFunctionExpression$1: function(node) {
- return this.visitFunctionExpression$body$_EvaluateVisitor(node);
- },
- visitFunctionExpression$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, oldInFunction, result, t1, t2, plainName, $async$temp1, $async$temp2;
- var $async$visitFunctionExpression$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = {};
- t2 = node.name;
- plainName = t2.get$asPlain();
- t1.$function = null;
- $async$goto = (plainName != null ? t1.$function = $async$self._async_evaluate$_addExceptionSpan$2(node, new E._EvaluateVisitor_visitFunctionExpression_closure1($async$self, node, plainName)) : null) == null ? 3 : 4;
- break;
- case 3:
- // then
- if (node.namespace != null)
- throw H.wrapException($async$self._async_evaluate$_exception$2("Undefined function.", node.span));
- $async$temp1 = t1;
- $async$temp2 = L;
- $async$goto = 5;
- return P._asyncAwait($async$self._async_evaluate$_performInterpolation$1(t2), $async$visitFunctionExpression$1);
- case 5:
- // returning from await.
- $async$temp1.$function = new $async$temp2.PlainCssCallable($async$result);
- case 4:
- // join
- oldInFunction = $async$self._async_evaluate$_inFunction;
- $async$self._async_evaluate$_inFunction = true;
- $async$goto = 6;
- return P._asyncAwait($async$self._async_evaluate$_addErrorSpan$1$2(node, new E._EvaluateVisitor_visitFunctionExpression_closure2(t1, $async$self, node), F.Value), $async$visitFunctionExpression$1);
- case 6:
- // returning from await.
- result = $async$result;
- $async$self._async_evaluate$_inFunction = oldInFunction;
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitFunctionExpression$1, $async$completer);
- },
- _async_evaluate$_getFunction$2$namespace: function($name, namespace) {
- var local = this._async_evaluate$_environment.getFunction$2$namespace($name, namespace);
- if (local != null || namespace != null)
- return local;
- return this._async_evaluate$_builtInFunctions.$index(0, $name);
- },
- _async_evaluate$_runUserDefinedCallable$4: function($arguments, callable, nodeWithSpan, run) {
- return this._runUserDefinedCallable$body$_EvaluateVisitor($arguments, callable, nodeWithSpan, run);
- },
- _runUserDefinedCallable$body$_EvaluateVisitor: function($arguments, callable, nodeWithSpan, run) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, evaluated, t1, $name;
- var $async$_async_evaluate$_runUserDefinedCallable$4 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_evaluateArguments$1($arguments), $async$_async_evaluate$_runUserDefinedCallable$4);
- case 3:
- // returning from await.
- evaluated = $async$result;
- t1 = callable.declaration.name;
- $name = t1 == null ? "@content" : t1 + "()";
- $async$goto = 4;
- return P._asyncAwait($async$self._async_evaluate$_withStackFrame$1$3($name, nodeWithSpan, new E._EvaluateVisitor__runUserDefinedCallable_closure0($async$self, callable, evaluated, nodeWithSpan, run), F.Value), $async$_async_evaluate$_runUserDefinedCallable$4);
- case 4:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_runUserDefinedCallable$4, $async$completer);
- },
- _async_evaluate$_runFunctionCallable$3: function($arguments, callable, nodeWithSpan) {
- return this._runFunctionCallable$body$_EvaluateVisitor($arguments, callable, nodeWithSpan);
- },
- _runFunctionCallable$body$_EvaluateVisitor: function($arguments, callable, nodeWithSpan) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, result, t2, t3, first, _i, argument, rest, t1, $async$temp1;
- var $async$_async_evaluate$_runFunctionCallable$3 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = J.getInterceptor$(callable);
- $async$goto = !!t1.$isAsyncBuiltInCallable ? 3 : 5;
- break;
- case 3:
- // then
- $async$goto = 6;
- return P._asyncAwait($async$self._async_evaluate$_runBuiltInCallable$3($arguments, callable, nodeWithSpan), $async$_async_evaluate$_runFunctionCallable$3);
- case 6:
- // returning from await.
- result = $async$result;
- if (result == null)
- throw H.wrapException($async$self._async_evaluate$_exception$2("Custom functions may not return Dart's null.", nodeWithSpan.get$span()));
- $async$returnValue = result.withoutSlash$0();
- // goto return
- $async$goto = 1;
- break;
- // goto join
- $async$goto = 4;
- break;
- case 5:
- // else
- $async$goto = H.checkSubtype(callable, "$isUserDefinedCallable", [Q.AsyncEnvironment], null) ? 7 : 9;
- break;
- case 7:
- // then
- $async$goto = 10;
- return P._asyncAwait($async$self._async_evaluate$_runUserDefinedCallable$4($arguments, callable, nodeWithSpan, new E._EvaluateVisitor__runFunctionCallable_closure0($async$self, callable)), $async$_async_evaluate$_runFunctionCallable$3);
- case 10:
- // returning from await.
- $async$returnValue = $async$result.withoutSlash$0();
- // goto return
- $async$goto = 1;
- break;
- // goto join
- $async$goto = 8;
- break;
- case 9:
- // else
- $async$goto = !!t1.$isPlainCssCallable ? 11 : 13;
- break;
- case 11:
- // then
- t1 = $arguments.named;
- if (t1.get$isNotEmpty(t1) || $arguments.keywordRest != null)
- throw H.wrapException($async$self._async_evaluate$_exception$2("Plain CSS functions don't support keyword arguments.", nodeWithSpan.get$span()));
- t1 = H.S(callable.name) + "(";
- t2 = $arguments.positional, t3 = t2.length, first = true, _i = 0;
- case 14:
- // for condition
- if (!(_i < t3)) {
- // goto after for
- $async$goto = 16;
- break;
- }
- argument = t2[_i];
- if (first)
- first = false;
- else
- t1 += ", ";
- $async$temp1 = H;
- $async$goto = 17;
- return P._asyncAwait($async$self._evaluateToCss$1(argument), $async$_async_evaluate$_runFunctionCallable$3);
- case 17:
- // returning from await.
- t1 += $async$temp1.S($async$result);
- case 15:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 14;
- break;
- case 16:
- // after for
- t2 = $arguments.rest;
- $async$goto = 18;
- return P._asyncAwait(t2 == null ? null : t2.accept$1($async$self), $async$_async_evaluate$_runFunctionCallable$3);
- case 18:
- // returning from await.
- rest = $async$result;
- if (rest != null) {
- if (!first)
- t1 += ", ";
- t2 = t1 + H.S($async$self._async_evaluate$_serialize$2(rest, t2));
- t1 = t2;
- }
- t1 += H.Primitives_stringFromCharCode(41);
- $async$returnValue = new D.SassString(t1.charCodeAt(0) == 0 ? t1 : t1, false);
- // goto return
- $async$goto = 1;
- break;
- // goto join
- $async$goto = 12;
- break;
- case 13:
- // else
- // goto return
- $async$goto = 1;
- break;
- case 12:
- // join
- case 8:
- // join
- case 4:
- // join
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_runFunctionCallable$3, $async$completer);
- },
- _async_evaluate$_runBuiltInCallable$3: function($arguments, callable, nodeWithSpan) {
- return this._runBuiltInCallable$body$_EvaluateVisitor($arguments, callable, nodeWithSpan);
- },
- _runBuiltInCallable$body$_EvaluateVisitor: function($arguments, callable, nodeWithSpan) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, callback, result, error, error0, error1, message, t1, namedSet, tuple, overload, declaredArguments, i, t2, argument, t3, t4, rest, argumentList, exception, evaluated, oldCallableNode, $async$exception;
- var $async$_async_evaluate$_runBuiltInCallable$3 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1) {
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_evaluateArguments$2$trackSpans($arguments, false), $async$_async_evaluate$_runBuiltInCallable$3);
- case 3:
- // returning from await.
- evaluated = $async$result;
- oldCallableNode = $async$self._async_evaluate$_callableNode;
- $async$self._async_evaluate$_callableNode = nodeWithSpan;
- t1 = P.String;
- namedSet = new M.MapKeySet(evaluated.named, [t1]);
- tuple = callable.callbackFor$2(evaluated.positional.length, namedSet);
- overload = tuple.item1;
- callback = tuple.item2;
- $async$self._async_evaluate$_addExceptionSpan$2(nodeWithSpan, new E._EvaluateVisitor__runBuiltInCallable_closure1(overload, evaluated, namedSet));
- declaredArguments = overload.$arguments;
- i = evaluated.positional.length, t2 = declaredArguments.length;
- case 4:
- // for condition
- if (!(i < t2)) {
- // goto after for
- $async$goto = 6;
- break;
- }
- argument = declaredArguments[i];
- t3 = evaluated.positional;
- t4 = evaluated.named.remove$1(0, argument.name);
- $async$goto = t4 == null ? 7 : 8;
- break;
- case 7:
- // then
- t4 = argument.defaultValue;
- $async$goto = 9;
- return P._asyncAwait(t4 == null ? null : t4.accept$1($async$self), $async$_async_evaluate$_runBuiltInCallable$3);
- case 9:
- // returning from await.
- t4 = $async$result;
- case 8:
- // join
- t3.push(t4);
- case 5:
- // for update
- ++i;
- // goto for condition
- $async$goto = 4;
- break;
- case 6:
- // after for
- if (overload.restArgument != null) {
- if (evaluated.positional.length > t2) {
- rest = C.JSArray_methods.sublist$1(evaluated.positional, t2);
- C.JSArray_methods.removeRange$2(evaluated.positional, t2, evaluated.positional.length);
- } else
- rest = C.List_empty6;
- t2 = evaluated.named;
- t3 = evaluated.separator === C.ListSeparator_undecided ? C.ListSeparator_comma : evaluated.separator;
- t4 = F.Value;
- argumentList = new D.SassArgumentList(H.ConstantMap_ConstantMap$from(t2, t1, t4), P.List_List$unmodifiable(rest, t4), t3, false);
- argumentList.SassList$3$brackets(rest, t3, false);
- evaluated.positional.push(argumentList);
- } else
- argumentList = null;
- result = null;
- $async$handler = 11;
- $async$goto = 14;
- return P._asyncAwait(callback.call$1(evaluated.positional), $async$_async_evaluate$_runBuiltInCallable$3);
- case 14:
- // returning from await.
- result = $async$result;
- $async$handler = 2;
- // goto after finally
- $async$goto = 13;
- break;
- case 11:
- // catch
- $async$handler = 10;
- $async$exception = $async$currentError;
- t1 = H.unwrapException($async$exception);
- t2 = J.getInterceptor$(t1);
- if (!!t2.$isSassRuntimeException)
- throw $async$exception;
- else if (!!t2.$isMultiSpanSassScriptException) {
- error = t1;
- throw H.wrapException(E.MultiSpanSassRuntimeException$(error.message, nodeWithSpan.get$span(), error.primaryLabel, error.secondarySpans, $async$self._async_evaluate$_stackTrace$1(nodeWithSpan.get$span())));
- } else if (!!t2.$isMultiSpanSassException) {
- error0 = t1;
- throw H.wrapException(E.MultiSpanSassRuntimeException$(error0._span_exception$_message, error0.get$span(), error0.primaryLabel, error0.secondarySpans, $async$self._async_evaluate$_stackTrace$1(error0.get$span())));
- } else {
- error1 = t1;
- message = null;
- try {
- message = H.stringTypeCast(J.get$message$x(error1));
- } catch (exception) {
- H.unwrapException($async$exception);
- message = J.toString$0$(error1);
- }
- throw H.wrapException($async$self._async_evaluate$_exception$2(message, nodeWithSpan.get$span()));
- }
- // goto after finally
- $async$goto = 13;
- break;
- case 10:
- // uncaught
- // goto rethrow
- $async$goto = 2;
- break;
- case 13:
- // after finally
- $async$self._async_evaluate$_callableNode = oldCallableNode;
- if (argumentList == null) {
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- }
- t2 = evaluated.named;
- if (t2.get$isEmpty(t2)) {
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- }
- if (argumentList._wereKeywordsAccessed) {
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- }
- throw H.wrapException(E.MultiSpanSassRuntimeException$("No " + B.pluralize("argument", J.get$length$asx(evaluated.named.get$keys()), null) + " named " + H.S(B.toSentence(J.map$1$1$ax(evaluated.named.get$keys(), new E._EvaluateVisitor__runBuiltInCallable_closure2(), P.Object), "or")) + ".", nodeWithSpan.get$span(), "invocation", P.LinkedHashMap_LinkedHashMap$_literal([overload.get$spanWithName(), "declaration"], Y.FileSpan, t1), $async$self._async_evaluate$_stackTrace$1(nodeWithSpan.get$span())));
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- case 2:
- // rethrow
- return P._asyncRethrow($async$currentError, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_runBuiltInCallable$3, $async$completer);
- },
- _async_evaluate$_evaluateArguments$2$trackSpans: function($arguments, trackSpans) {
- return this._evaluateArguments$body$_EvaluateVisitor($arguments, trackSpans);
- },
- _async_evaluate$_evaluateArguments$1: function($arguments) {
- return this._async_evaluate$_evaluateArguments$2$trackSpans($arguments, null);
- },
- _evaluateArguments$body$_EvaluateVisitor: function($arguments, trackSpans) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(E._ArgumentResults0),
- $async$returnValue, $async$self = this, t1, t2, t3, t4, _i, t5, t6, t7, named, t8, positionalNodes, namedNodes, rest, restNodeForSpan, separator, keywordRest, keywordRestNodeForSpan, $async$temp1;
- var $async$_async_evaluate$_evaluateArguments$2$trackSpans = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if (trackSpans == null)
- trackSpans = $async$self._async_evaluate$_sourceMap;
- t1 = F.Value;
- t2 = H.setRuntimeTypeInfo([], [t1]);
- t3 = $arguments.positional, t4 = t3.length, _i = 0;
- case 3:
- // for condition
- if (!(_i < t4)) {
- // goto after for
- $async$goto = 5;
- break;
- }
- $async$temp1 = t2;
- $async$goto = 6;
- return P._asyncAwait(t3[_i].accept$1($async$self), $async$_async_evaluate$_evaluateArguments$2$trackSpans);
- case 6:
- // returning from await.
- $async$temp1.push($async$result);
- case 4:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 3;
- break;
- case 5:
- // after for
- t5 = $arguments.named;
- t6 = P.String;
- t7 = T.Expression;
- $async$goto = 7;
- return P._asyncAwait(B.mapMapAsync(t5, new E._EvaluateVisitor__evaluateArguments_closure2($async$self), t6, t7, t6, t1), $async$_async_evaluate$_evaluateArguments$2$trackSpans);
- case 7:
- // returning from await.
- named = $async$result;
- if (trackSpans) {
- t8 = H.setRuntimeTypeInfo([], [B.AstNode]);
- for (_i = 0; _i < t4; ++_i)
- t8.push($async$self._async_evaluate$_expressionNode$1(t3[_i]));
- positionalNodes = t8;
- } else
- positionalNodes = null;
- namedNodes = trackSpans ? Y.mapMap(t5, null, new E._EvaluateVisitor__evaluateArguments_closure3($async$self), t6, t7, t6, B.AstNode) : null;
- t3 = $arguments.rest;
- if (t3 == null) {
- $async$returnValue = E._ArgumentResults$0(t2, named, C.ListSeparator_undecided, namedNodes, positionalNodes);
- // goto return
- $async$goto = 1;
- break;
- }
- $async$goto = 8;
- return P._asyncAwait(t3.accept$1($async$self), $async$_async_evaluate$_evaluateArguments$2$trackSpans);
- case 8:
- // returning from await.
- rest = $async$result;
- restNodeForSpan = trackSpans ? $async$self._async_evaluate$_expressionNode$1(t3) : null;
- t4 = J.getInterceptor$(rest);
- if (!!t4.$isSassMap) {
- $async$self._async_evaluate$_addRestMap$1$3(named, rest, t3, t1);
- if (namedNodes != null) {
- t3 = P.LinkedHashMap_LinkedHashMap$_empty(t6, B.AstNode);
- for (t4 = J.get$iterator$ax(rest.contents.get$keys()); t4.moveNext$0();)
- t3.$indexSet(0, H.interceptedTypeCast(t4.get$current(t4), "$isSassString").text, restNodeForSpan);
- namedNodes.addAll$1(0, t3);
- }
- separator = C.ListSeparator_undecided;
- } else if (!!t4.$isSassList) {
- t3 = rest._list$_contents;
- C.JSArray_methods.addAll$1(t2, t3);
- if (positionalNodes != null)
- C.JSArray_methods.addAll$1(positionalNodes, P.List_List$filled(t3.length, restNodeForSpan, B.AstNode));
- separator = rest.separator;
- if (!!rest.$isSassArgumentList) {
- rest._wereKeywordsAccessed = true;
- rest._keywords.forEach$1(0, new E._EvaluateVisitor__evaluateArguments_closure4(named, namedNodes, restNodeForSpan));
- }
- } else {
- t2.push(rest);
- if (positionalNodes != null)
- positionalNodes.push(restNodeForSpan);
- separator = C.ListSeparator_undecided;
- }
- t3 = $arguments.keywordRest;
- if (t3 == null) {
- $async$returnValue = E._ArgumentResults$0(t2, named, separator, namedNodes, positionalNodes);
- // goto return
- $async$goto = 1;
- break;
- }
- $async$goto = 9;
- return P._asyncAwait(t3.accept$1($async$self), $async$_async_evaluate$_evaluateArguments$2$trackSpans);
- case 9:
- // returning from await.
- keywordRest = $async$result;
- keywordRestNodeForSpan = trackSpans ? $async$self._async_evaluate$_expressionNode$1(t3) : null;
- if (keywordRest instanceof A.SassMap) {
- $async$self._async_evaluate$_addRestMap$1$3(named, keywordRest, t3, t1);
- if (namedNodes != null) {
- t1 = P.LinkedHashMap_LinkedHashMap$_empty(t6, B.AstNode);
- for (t3 = J.get$iterator$ax(keywordRest.contents.get$keys()); t3.moveNext$0();)
- t1.$indexSet(0, H.interceptedTypeCast(t3.get$current(t3), "$isSassString").text, keywordRestNodeForSpan);
- namedNodes.addAll$1(0, t1);
- }
- $async$returnValue = E._ArgumentResults$0(t2, named, separator, namedNodes, positionalNodes);
- // goto return
- $async$goto = 1;
- break;
- } else
- throw H.wrapException($async$self._async_evaluate$_exception$2("Variable keyword arguments must be a map (was " + H.S(keywordRest) + ").", t3.get$span()));
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_evaluateArguments$2$trackSpans, $async$completer);
- },
- _async_evaluate$_evaluateMacroArguments$1: function(invocation) {
- return this._evaluateMacroArguments$body$_EvaluateVisitor(invocation);
- },
- _evaluateMacroArguments$body$_EvaluateVisitor: function(invocation) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter([S.Tuple2, [P.List, T.Expression], [P.Map, P.String, T.Expression]]),
- $async$returnValue, $async$self = this, t3, positional, named, rest, keywordRest, t1, t2;
- var $async$_async_evaluate$_evaluateMacroArguments$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = invocation.$arguments;
- t2 = t1.rest;
- if (t2 == null) {
- $async$returnValue = new S.Tuple2(t1.positional, t1.named, [[P.List, T.Expression], [P.Map, P.String, T.Expression]]);
- // goto return
- $async$goto = 1;
- break;
- }
- t3 = t1.positional;
- positional = H.setRuntimeTypeInfo(t3.slice(0), [H.getTypeArgumentByIndex(t3, 0)]);
- t3 = T.Expression;
- named = P.LinkedHashMap_LinkedHashMap$of(t1.named, P.String, t3);
- $async$goto = 3;
- return P._asyncAwait(t2.accept$1($async$self), $async$_async_evaluate$_evaluateMacroArguments$1);
- case 3:
- // returning from await.
- rest = $async$result;
- t2 = J.getInterceptor$(rest);
- if (!!t2.$isSassMap)
- $async$self._async_evaluate$_addRestMap$1$4(named, rest, invocation, new E._EvaluateVisitor__evaluateMacroArguments_closure3(), t3);
- else if (!!t2.$isSassList) {
- t2 = rest._list$_contents;
- C.JSArray_methods.addAll$1(positional, new H.MappedListIterable(t2, new E._EvaluateVisitor__evaluateMacroArguments_closure4(), [H.getTypeArgumentByIndex(t2, 0), t3]));
- if (!!rest.$isSassArgumentList) {
- rest._wereKeywordsAccessed = true;
- rest._keywords.forEach$1(0, new E._EvaluateVisitor__evaluateMacroArguments_closure5(named));
- }
- } else
- positional.push(new F.ValueExpression(rest, null));
- t1 = t1.keywordRest;
- if (t1 == null) {
- $async$returnValue = new S.Tuple2(positional, named, [[P.List, T.Expression], [P.Map, P.String, T.Expression]]);
- // goto return
- $async$goto = 1;
- break;
- }
- $async$goto = 4;
- return P._asyncAwait(t1.accept$1($async$self), $async$_async_evaluate$_evaluateMacroArguments$1);
- case 4:
- // returning from await.
- keywordRest = $async$result;
- if (keywordRest instanceof A.SassMap) {
- $async$self._async_evaluate$_addRestMap$1$4(named, keywordRest, invocation, new E._EvaluateVisitor__evaluateMacroArguments_closure6(), t3);
- $async$returnValue = new S.Tuple2(positional, named, [[P.List, T.Expression], [P.Map, P.String, T.Expression]]);
- // goto return
- $async$goto = 1;
- break;
- } else
- throw H.wrapException($async$self._async_evaluate$_exception$2("Variable keyword arguments must be a map (was " + H.S(keywordRest) + ").", invocation.span));
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_evaluateMacroArguments$1, $async$completer);
- },
- _async_evaluate$_addRestMap$1$4: function(values, map, nodeWithSpan, convert, $T) {
- var t1 = {};
- t1.convert = convert;
- if (convert == null)
- t1.convert = new E._EvaluateVisitor__addRestMap_closure1($T);
- map.contents.forEach$1(0, new E._EvaluateVisitor__addRestMap_closure2(t1, this, values, map, nodeWithSpan));
- },
- _async_evaluate$_addRestMap$1$3: function(values, map, nodeWithSpan, $T) {
- return this._async_evaluate$_addRestMap$1$4(values, map, nodeWithSpan, null, $T);
- },
- _async_evaluate$_verifyArguments$4: function(positional, named, $arguments, nodeWithSpan) {
- return this._async_evaluate$_addExceptionSpan$2(nodeWithSpan, new E._EvaluateVisitor__verifyArguments_closure0($arguments, positional, named));
- },
- visitSelectorExpression$1: function(node) {
- return this.visitSelectorExpression$body$_EvaluateVisitor(node);
- },
- visitSelectorExpression$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, t1;
- var $async$visitSelectorExpression$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self._async_evaluate$_styleRule;
- if (t1 == null) {
- $async$returnValue = C.C_SassNull;
- // goto return
- $async$goto = 1;
- break;
- }
- $async$returnValue = t1.originalSelector.get$asSassList();
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitSelectorExpression$1, $async$completer);
- },
- visitStringExpression$1: function(node) {
- return this.visitStringExpression$body$_EvaluateVisitor(node);
- },
- visitStringExpression$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(D.SassString),
- $async$returnValue, $async$self = this, $async$temp1, $async$temp2;
- var $async$visitStringExpression$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$temp1 = D;
- $async$temp2 = J;
- $async$goto = 3;
- return P._asyncAwait(B.mapAsync(node.text.contents, new E._EvaluateVisitor_visitStringExpression_closure0($async$self), P.Object, P.String), $async$visitStringExpression$1);
- case 3:
- // returning from await.
- $async$returnValue = new $async$temp1.SassString($async$temp2.join$0$ax($async$result), node.hasQuotes);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitStringExpression$1, $async$completer);
- },
- visitCssAtRule$1: function(node) {
- return this.visitCssAtRule$body$_EvaluateVisitor(node);
- },
- visitCssAtRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$returnValue, $async$self = this, t1, t2, t3, wasInKeyframes, wasInUnknownAtRule;
- var $async$visitCssAtRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if ($async$self._async_evaluate$_declarationName != null)
- throw H.wrapException($async$self._async_evaluate$_exception$2("At-rules may not be used within nested declarations.", node.span));
- if (node.isChildless) {
- t1 = $async$self._async_evaluate$_parent;
- t2 = B.ModifiableCssNode;
- t3 = H.setRuntimeTypeInfo([], [t2]);
- t1.addChild$1(new U.ModifiableCssAtRule(node.name, node.value, true, node.span, new P.UnmodifiableListView(t3, [t2]), t3));
- // goto return
- $async$goto = 1;
- break;
- }
- wasInKeyframes = $async$self._async_evaluate$_inKeyframes;
- wasInUnknownAtRule = $async$self._async_evaluate$_inUnknownAtRule;
- t1 = node.name;
- if (B.unvendor(t1.get$value(t1)) === "keyframes")
- $async$self._async_evaluate$_inKeyframes = true;
- else
- $async$self._async_evaluate$_inUnknownAtRule = true;
- t2 = B.ModifiableCssNode;
- t3 = H.setRuntimeTypeInfo([], [t2]);
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(new U.ModifiableCssAtRule(t1, node.value, false, node.span, new P.UnmodifiableListView(t3, [t2]), t3), new E._EvaluateVisitor_visitCssAtRule_closure1($async$self, node), false, new E._EvaluateVisitor_visitCssAtRule_closure2(), U.ModifiableCssAtRule, P.Null), $async$visitCssAtRule$1);
- case 3:
- // returning from await.
- $async$self._async_evaluate$_inUnknownAtRule = wasInUnknownAtRule;
- $async$self._async_evaluate$_inKeyframes = wasInKeyframes;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitCssAtRule$1, $async$completer);
- },
- visitCssComment$1: function(node) {
- return this.visitCssComment$body$_EvaluateVisitor(node);
- },
- visitCssComment$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$self = this, t1, t2;
- var $async$visitCssComment$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self._async_evaluate$_parent;
- t2 = $async$self._async_evaluate$_root;
- if (t1 == t2 && $async$self._async_evaluate$_endOfImports === J.get$length$asx(t2.children._collection$_source))
- $async$self._async_evaluate$_endOfImports = $async$self._async_evaluate$_endOfImports + 1;
- $async$self._async_evaluate$_parent.addChild$1(new R.ModifiableCssComment(node.text, node.span));
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitCssComment$1, $async$completer);
- },
- visitCssDeclaration$1: function(node) {
- return this.visitCssDeclaration$body$_EvaluateVisitor(node);
- },
- visitCssDeclaration$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$self = this;
- var $async$visitCssDeclaration$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$self._async_evaluate$_parent.addChild$1(L.ModifiableCssDeclaration$(node.name, node.value, node.span, node.valueSpanForMap));
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitCssDeclaration$1, $async$completer);
- },
- visitCssImport$1: function(node) {
- return this.visitCssImport$body$_EvaluateVisitor(node);
- },
- visitCssImport$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$self = this, modifiableNode, t1, t2;
- var $async$visitCssImport$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- modifiableNode = F.ModifiableCssImport$(node.url, node.span, node.media, node.supports);
- t1 = $async$self._async_evaluate$_parent;
- t2 = $async$self._async_evaluate$_root;
- if (t1 != t2)
- t1.addChild$1(modifiableNode);
- else if ($async$self._async_evaluate$_endOfImports === J.get$length$asx(t2.children._collection$_source)) {
- $async$self._async_evaluate$_root.addChild$1(modifiableNode);
- $async$self._async_evaluate$_endOfImports = $async$self._async_evaluate$_endOfImports + 1;
- } else {
- t1 = $async$self._async_evaluate$_outOfOrderImports;
- (t1 == null ? $async$self._async_evaluate$_outOfOrderImports = H.setRuntimeTypeInfo([], [F.ModifiableCssImport]) : t1).push(modifiableNode);
- }
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitCssImport$1, $async$completer);
- },
- visitCssKeyframeBlock$1: function(node) {
- return this.visitCssKeyframeBlock$body$_EvaluateVisitor(node);
- },
- visitCssKeyframeBlock$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$self = this, t1, t2;
- var $async$visitCssKeyframeBlock$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = B.ModifiableCssNode;
- t2 = H.setRuntimeTypeInfo([], [t1]);
- $async$goto = 2;
- return P._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(new U.ModifiableCssKeyframeBlock(node.selector, node.span, new P.UnmodifiableListView(t2, [t1]), t2), new E._EvaluateVisitor_visitCssKeyframeBlock_closure1($async$self, node), false, new E._EvaluateVisitor_visitCssKeyframeBlock_closure2(), U.ModifiableCssKeyframeBlock, P.Null), $async$visitCssKeyframeBlock$1);
- case 2:
- // returning from await.
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitCssKeyframeBlock$1, $async$completer);
- },
- visitCssMediaRule$1: function(node) {
- return this.visitCssMediaRule$body$_EvaluateVisitor(node);
- },
- visitCssMediaRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$returnValue, $async$self = this, t1, mergedQueries;
- var $async$visitCssMediaRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if ($async$self._async_evaluate$_declarationName != null)
- throw H.wrapException($async$self._async_evaluate$_exception$2("Media rules may not be used within nested declarations.", node.span));
- t1 = $async$self._async_evaluate$_mediaQueries;
- mergedQueries = t1 == null ? null : $async$self._async_evaluate$_mergeMediaQueries$2(t1, node.queries);
- t1 = mergedQueries == null;
- if (!t1 && mergedQueries.length === 0) {
- // goto return
- $async$goto = 1;
- break;
- }
- t1 = t1 ? node.queries : mergedQueries;
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(G.ModifiableCssMediaRule$(t1, node.span), new E._EvaluateVisitor_visitCssMediaRule_closure1($async$self, mergedQueries, node), false, new E._EvaluateVisitor_visitCssMediaRule_closure2(mergedQueries), G.ModifiableCssMediaRule, P.Null), $async$visitCssMediaRule$1);
- case 3:
- // returning from await.
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitCssMediaRule$1, $async$completer);
- },
- visitCssStyleRule$1: function(node) {
- return this.visitCssStyleRule$body$_EvaluateVisitor(node);
- },
- visitCssStyleRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$self = this, t1, t2, t3, originalSelector, rule, oldAtRootExcludingStyleRule;
- var $async$visitCssStyleRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if ($async$self._async_evaluate$_declarationName != null)
- throw H.wrapException($async$self._async_evaluate$_exception$2("Style rules may not be used within nested declarations.", node.span));
- t1 = node.selector;
- t2 = t1.value;
- t3 = $async$self._async_evaluate$_styleRule;
- t3 = t3 == null ? null : t3.originalSelector;
- originalSelector = t2.resolveParentSelectors$2$implicitParent(t3, !$async$self._async_evaluate$_atRootExcludingStyleRule);
- rule = X.ModifiableCssStyleRule$($async$self._async_evaluate$_extender.addSelector$3(originalSelector, t1.span, $async$self._async_evaluate$_mediaQueries), node.span, originalSelector);
- oldAtRootExcludingStyleRule = $async$self._async_evaluate$_atRootExcludingStyleRule;
- $async$self._async_evaluate$_atRootExcludingStyleRule = false;
- $async$goto = 2;
- return P._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(rule, new E._EvaluateVisitor_visitCssStyleRule_closure1($async$self, rule, node), false, new E._EvaluateVisitor_visitCssStyleRule_closure2(), X.ModifiableCssStyleRule, P.Null), $async$visitCssStyleRule$1);
- case 2:
- // returning from await.
- $async$self._async_evaluate$_atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
- if (!($async$self._async_evaluate$_styleRule != null && !oldAtRootExcludingStyleRule)) {
- t1 = $async$self._async_evaluate$_parent.children;
- t1 = !t1.get$isEmpty(t1);
- } else
- t1 = false;
- if (t1) {
- t1 = $async$self._async_evaluate$_parent.children;
- t1.get$last(t1).isGroupEnd = true;
- }
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitCssStyleRule$1, $async$completer);
- },
- visitCssStylesheet$1: function(node) {
- return this.visitCssStylesheet$body$_EvaluateVisitor(node);
- },
- visitCssStylesheet$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$self = this, t1;
- var $async$visitCssStylesheet$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = J.get$iterator$ax(node.get$children());
- case 2:
- // for condition
- if (!t1.moveNext$0()) {
- // goto after for
- $async$goto = 3;
- break;
- }
- $async$goto = 4;
- return P._asyncAwait(t1.get$current(t1).accept$1($async$self), $async$visitCssStylesheet$1);
- case 4:
- // returning from await.
- // goto for condition
- $async$goto = 2;
- break;
- case 3:
- // after for
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitCssStylesheet$1, $async$completer);
- },
- visitCssSupportsRule$1: function(node) {
- return this.visitCssSupportsRule$body$_EvaluateVisitor(node);
- },
- visitCssSupportsRule$body$_EvaluateVisitor: function(node) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(-1),
- $async$self = this, t1, t2;
- var $async$visitCssSupportsRule$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if ($async$self._async_evaluate$_declarationName != null)
- throw H.wrapException($async$self._async_evaluate$_exception$2("Supports rules may not be used within nested declarations.", node.span));
- t1 = B.ModifiableCssNode;
- t2 = H.setRuntimeTypeInfo([], [t1]);
- $async$goto = 2;
- return P._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(new B.ModifiableCssSupportsRule(node.condition, node.span, new P.UnmodifiableListView(t2, [t1]), t2), new E._EvaluateVisitor_visitCssSupportsRule_closure1($async$self, node), false, new E._EvaluateVisitor_visitCssSupportsRule_closure2(), B.ModifiableCssSupportsRule, P.Null), $async$visitCssSupportsRule$1);
- case 2:
- // returning from await.
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$visitCssSupportsRule$1, $async$completer);
- },
- _async_evaluate$_handleReturn$1$2: function(list, callback) {
- return this._handleReturn$body$_EvaluateVisitor(list, callback, null);
- },
- _async_evaluate$_handleReturn$2: function(list, callback) {
- return this._async_evaluate$_handleReturn$1$2(list, callback, null);
- },
- _handleReturn$body$_EvaluateVisitor: function(list, callback) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, t1, _i, result;
- var $async$_async_evaluate$_handleReturn$1$2 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = list.length, _i = 0;
- case 3:
- // for condition
- if (!(_i < list.length)) {
- // goto after for
- $async$goto = 5;
- break;
- }
- $async$goto = 6;
- return P._asyncAwait(callback.call$1(list[_i]), $async$_async_evaluate$_handleReturn$1$2);
- case 6:
- // returning from await.
- result = $async$result;
- if (result != null) {
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- }
- case 4:
- // for update
- list.length === t1 || (0, H.throwConcurrentModificationError)(list), ++_i;
- // goto for condition
- $async$goto = 3;
- break;
- case 5:
- // after for
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_handleReturn$1$2, $async$completer);
- },
- _async_evaluate$_withEnvironment$1$2: function(environment, callback, $T) {
- return this._withEnvironment$body$_EvaluateVisitor(environment, callback, $T, $T);
- },
- _withEnvironment$body$_EvaluateVisitor: function(environment, callback, $T, $async$type) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter($async$type),
- $async$returnValue, $async$self = this, result, oldEnvironment;
- var $async$_async_evaluate$_withEnvironment$1$2 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- oldEnvironment = $async$self._async_evaluate$_environment;
- $async$self._async_evaluate$_environment = environment;
- $async$goto = 3;
- return P._asyncAwait(callback.call$0(), $async$_async_evaluate$_withEnvironment$1$2);
- case 3:
- // returning from await.
- result = $async$result;
- $async$self._async_evaluate$_environment = oldEnvironment;
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_withEnvironment$1$2, $async$completer);
- },
- _async_evaluate$_interpolationToValue$3$trim$warnForColor: function(interpolation, trim, warnForColor) {
- return this._interpolationToValue$body$_EvaluateVisitor(interpolation, trim, warnForColor);
- },
- _async_evaluate$_interpolationToValue$1: function(interpolation) {
- return this._async_evaluate$_interpolationToValue$3$trim$warnForColor(interpolation, false, false);
- },
- _async_evaluate$_interpolationToValue$2$warnForColor: function(interpolation, warnForColor) {
- return this._async_evaluate$_interpolationToValue$3$trim$warnForColor(interpolation, false, warnForColor);
- },
- _interpolationToValue$body$_EvaluateVisitor: function(interpolation, trim, warnForColor) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter([F.CssValue, P.String]),
- $async$returnValue, $async$self = this, result, t1;
- var $async$_async_evaluate$_interpolationToValue$3$trim$warnForColor = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_performInterpolation$2$warnForColor(interpolation, warnForColor), $async$_async_evaluate$_interpolationToValue$3$trim$warnForColor);
- case 3:
- // returning from await.
- result = $async$result;
- t1 = trim ? B.trimAscii(result, true) : result;
- $async$returnValue = new F.CssValue(t1, interpolation.span, [P.String]);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_interpolationToValue$3$trim$warnForColor, $async$completer);
- },
- _async_evaluate$_performInterpolation$2$warnForColor: function(interpolation, warnForColor) {
- return this._performInterpolation$body$_EvaluateVisitor(interpolation, warnForColor);
- },
- _async_evaluate$_performInterpolation$1: function(interpolation) {
- return this._async_evaluate$_performInterpolation$2$warnForColor(interpolation, false);
- },
- _performInterpolation$body$_EvaluateVisitor: function(interpolation, warnForColor) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.String),
- $async$returnValue, $async$self = this, $async$temp1;
- var $async$_async_evaluate$_performInterpolation$2$warnForColor = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$temp1 = J;
- $async$goto = 3;
- return P._asyncAwait(B.mapAsync(interpolation.contents, new E._EvaluateVisitor__performInterpolation_closure0($async$self, warnForColor), P.Object, P.String), $async$_async_evaluate$_performInterpolation$2$warnForColor);
- case 3:
- // returning from await.
- $async$returnValue = $async$temp1.join$0$ax($async$result);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_performInterpolation$2$warnForColor, $async$completer);
- },
- _evaluateToCss$2$quote: function(expression, quote) {
- return this._evaluateToCss$body$_EvaluateVisitor(expression, quote);
- },
- _evaluateToCss$1: function(expression) {
- return this._evaluateToCss$2$quote(expression, true);
- },
- _evaluateToCss$body$_EvaluateVisitor: function(expression, quote) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.String),
- $async$returnValue, $async$self = this;
- var $async$_evaluateToCss$2$quote = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait(expression.accept$1($async$self), $async$_evaluateToCss$2$quote);
- case 3:
- // returning from await.
- $async$returnValue = $async$self._async_evaluate$_serialize$3$quote($async$result, expression, quote);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_evaluateToCss$2$quote, $async$completer);
- },
- _async_evaluate$_serialize$3$quote: function(value, nodeWithSpan, quote) {
- return this._async_evaluate$_addExceptionSpan$2(nodeWithSpan, new E._EvaluateVisitor__serialize_closure0(value, quote));
- },
- _async_evaluate$_serialize$2: function(value, nodeWithSpan) {
- return this._async_evaluate$_serialize$3$quote(value, nodeWithSpan, true);
- },
- _async_evaluate$_expressionNode$1: function(expression) {
- if (!this._async_evaluate$_sourceMap)
- return;
- if (expression instanceof S.VariableExpression)
- return this._async_evaluate$_environment.getVariableNode$2$namespace(expression.name, expression.namespace);
- else
- return expression;
- },
- _async_evaluate$_withParent$2$4$scopeWhen$through: function(node, callback, scopeWhen, through, $S, $T) {
- return this._withParent$body$_EvaluateVisitor(node, callback, scopeWhen, through, $S, $T, $T);
- },
- _async_evaluate$_withParent$2$2: function(node, callback, $S, $T) {
- return this._async_evaluate$_withParent$2$4$scopeWhen$through(node, callback, true, null, $S, $T);
- },
- _async_evaluate$_withParent$2$3$scopeWhen: function(node, callback, scopeWhen, $S, $T) {
- return this._async_evaluate$_withParent$2$4$scopeWhen$through(node, callback, scopeWhen, null, $S, $T);
- },
- _withParent$body$_EvaluateVisitor: function(node, callback, scopeWhen, through, $S, $T, $async$type) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter($async$type),
- $async$returnValue, $async$self = this, oldParent, result;
- var $async$_async_evaluate$_withParent$2$4$scopeWhen$through = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$self._async_evaluate$_addChild$2$through(node, through);
- oldParent = $async$self._async_evaluate$_parent;
- $async$self._async_evaluate$_parent = node;
- $async$goto = 3;
- return P._asyncAwait($async$self._async_evaluate$_environment.scope$1$2$when(callback, scopeWhen, $T), $async$_async_evaluate$_withParent$2$4$scopeWhen$through);
- case 3:
- // returning from await.
- result = $async$result;
- $async$self._async_evaluate$_parent = oldParent;
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_withParent$2$4$scopeWhen$through, $async$completer);
- },
- _async_evaluate$_addChild$2$through: function(node, through) {
- var grandparent,
- $parent = this._async_evaluate$_parent;
- if (through != null) {
- for (; through.call$1($parent);)
- $parent = $parent._parent;
- if ($parent.get$hasFollowingSibling()) {
- grandparent = $parent._parent;
- $parent = $parent.copyWithoutChildren$0();
- grandparent.addChild$1($parent);
- }
- }
- $parent.addChild$1(node);
- },
- _async_evaluate$_addChild$1: function(node) {
- return this._async_evaluate$_addChild$2$through(node, null);
- },
- _async_evaluate$_withStyleRule$1$2: function(rule, callback, $T) {
- return this._withStyleRule$body$_EvaluateVisitor(rule, callback, $T, $T);
- },
- _withStyleRule$body$_EvaluateVisitor: function(rule, callback, $T, $async$type) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter($async$type),
- $async$returnValue, $async$self = this, result, oldRule;
- var $async$_async_evaluate$_withStyleRule$1$2 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- oldRule = $async$self._async_evaluate$_styleRule;
- $async$self._async_evaluate$_styleRule = rule;
- $async$goto = 3;
- return P._asyncAwait(callback.call$0(), $async$_async_evaluate$_withStyleRule$1$2);
- case 3:
- // returning from await.
- result = $async$result;
- $async$self._async_evaluate$_styleRule = oldRule;
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_withStyleRule$1$2, $async$completer);
- },
- _async_evaluate$_withMediaQueries$1$2: function(queries, callback, $T) {
- return this._withMediaQueries$body$_EvaluateVisitor(queries, callback, $T, $T);
- },
- _withMediaQueries$body$_EvaluateVisitor: function(queries, callback, $T, $async$type) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter($async$type),
- $async$returnValue, $async$self = this, result, oldMediaQueries;
- var $async$_async_evaluate$_withMediaQueries$1$2 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- oldMediaQueries = $async$self._async_evaluate$_mediaQueries;
- $async$self._async_evaluate$_mediaQueries = queries;
- $async$goto = 3;
- return P._asyncAwait(callback.call$0(), $async$_async_evaluate$_withMediaQueries$1$2);
- case 3:
- // returning from await.
- result = $async$result;
- $async$self._async_evaluate$_mediaQueries = oldMediaQueries;
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_withMediaQueries$1$2, $async$completer);
- },
- _async_evaluate$_withStackFrame$1$3: function(member, nodeWithSpan, callback, $T) {
- return this._withStackFrame$body$_EvaluateVisitor(member, nodeWithSpan, callback, $T, $T);
- },
- _withStackFrame$body$_EvaluateVisitor: function(member, nodeWithSpan, callback, $T, $async$type) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter($async$type),
- $async$returnValue, $async$self = this, oldMember, result, t1;
- var $async$_async_evaluate$_withStackFrame$1$3 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self._async_evaluate$_stack;
- t1.push(new S.Tuple2($async$self._async_evaluate$_member, nodeWithSpan, [P.String, B.AstNode]));
- oldMember = $async$self._async_evaluate$_member;
- $async$self._async_evaluate$_member = member;
- $async$goto = 3;
- return P._asyncAwait(callback.call$0(), $async$_async_evaluate$_withStackFrame$1$3);
- case 3:
- // returning from await.
- result = $async$result;
- $async$self._async_evaluate$_member = oldMember;
- t1.pop();
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_withStackFrame$1$3, $async$completer);
- },
- _async_evaluate$_stackFrame$2: function(member, span) {
- var url = span.file.url;
- return B.frameForSpan(span, member, url != null && this._async_evaluate$_importCache != null ? this._async_evaluate$_importCache.humanize$1(url) : url);
- },
- _async_evaluate$_stackTrace$1: function(span) {
- var t3, _this = this,
- t1 = A.Frame,
- t2 = H.setRuntimeTypeInfo([], [t1]);
- for (t3 = _this._async_evaluate$_stack, t3 = new H.MappedListIterable(t3, new E._EvaluateVisitor__stackTrace_closure0(_this), [H.getTypeArgumentByIndex(t3, 0), t1]), t3 = new H.ListIterator(t3, t3.get$length(t3)); t3.moveNext$0();)
- t2.push(t3.__internal$_current);
- if (span != null)
- t2.push(_this._async_evaluate$_stackFrame$2(_this._async_evaluate$_member, span));
- return new Y.Trace(P.List_List$unmodifiable(new H.ReversedListIterable(t2, [H.getTypeArgumentByIndex(t2, 0)]), t1), new P._StringStackTrace(null));
- },
- _async_evaluate$_stackTrace$0: function() {
- return this._async_evaluate$_stackTrace$1(null);
- },
- _async_evaluate$_warn$3$deprecation: function(message, span, deprecation) {
- return this._async_evaluate$_logger.warn$4$deprecation$span$trace(message, deprecation, span, this._async_evaluate$_stackTrace$1(span));
- },
- _async_evaluate$_warn$2: function(message, span) {
- return this._async_evaluate$_warn$3$deprecation(message, span, false);
- },
- _async_evaluate$_exception$2: function(message, span) {
- var t1 = span == null ? C.JSArray_methods.get$last(this._async_evaluate$_stack).item2.get$span() : span;
- return new E.SassRuntimeException(this._async_evaluate$_stackTrace$1(span), message, t1);
- },
- _async_evaluate$_exception$1: function(message) {
- return this._async_evaluate$_exception$2(message, null);
- },
- _async_evaluate$_multiSpanException$3: function(message, primaryLabel, secondaryLabels) {
- var t1 = C.JSArray_methods.get$last(this._async_evaluate$_stack).item2.get$span();
- return new E.MultiSpanSassRuntimeException(this._async_evaluate$_stackTrace$0(), primaryLabel, H.ConstantMap_ConstantMap$from(secondaryLabels, Y.FileSpan, P.String), message, t1);
- },
- _async_evaluate$_adjustParseError$1$2: function(nodeWithSpan, callback) {
- var error, errorText, span, syntheticFile, syntheticSpan, t1, exception, t2, t3, t4, t5, _null = null;
- try {
- t1 = callback.call$0();
- return t1;
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (t1 instanceof E.SassFormatException) {
- error = t1;
- t1 = error;
- errorText = P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(G.SourceSpanException.prototype.get$span.call(t1).file._decodedChars, 0, _null), 0, _null);
- span = nodeWithSpan.get$span();
- t1 = span;
- t2 = span;
- syntheticFile = C.JSString_methods.replaceRange$3(P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(span.file._decodedChars, 0, _null), 0, _null), Y.FileLocation$_(t1.file, t1._start).offset, Y.FileLocation$_(t2.file, t2._file$_end).offset, errorText);
- t2 = syntheticFile;
- t1 = span.file.url;
- t2.toString;
- t2 = new H.CodeUnits(t2);
- t3 = H.setRuntimeTypeInfo([0], [P.int]);
- t3 = new Y.SourceFile(t1, t3, new Uint32Array(H._ensureNativeList(t2.toList$0(t2))));
- t3.SourceFile$decoded$2$url(t2, t1);
- t1 = span;
- t1 = Y.FileLocation$_(t1.file, t1._start);
- t2 = error;
- t2 = G.SourceSpanException.prototype.get$span.call(t2);
- t2 = Y.FileLocation$_(t2.file, t2._start);
- t4 = span;
- t4 = Y.FileLocation$_(t4.file, t4._start);
- t5 = error;
- t5 = G.SourceSpanException.prototype.get$span.call(t5);
- syntheticSpan = t3.span$2(t1.offset + t2.offset, t4.offset + Y.FileLocation$_(t5.file, t5._file$_end).offset);
- throw H.wrapException(this._async_evaluate$_exception$2(error._span_exception$_message, syntheticSpan));
- } else
- throw exception;
- }
- },
- _async_evaluate$_adjustParseError$2: function(nodeWithSpan, callback) {
- return this._async_evaluate$_adjustParseError$1$2(nodeWithSpan, callback, null);
- },
- _async_evaluate$_addExceptionSpan$1$2: function(nodeWithSpan, callback) {
- var error, error0, t1, exception, t2;
- try {
- t1 = callback.call$0();
- return t1;
- } catch (exception) {
- t1 = H.unwrapException(exception);
- t2 = J.getInterceptor$(t1);
- if (!!t2.$isMultiSpanSassScriptException) {
- error = t1;
- throw H.wrapException(E.MultiSpanSassRuntimeException$(error.message, nodeWithSpan.get$span(), error.primaryLabel, error.secondarySpans, this._async_evaluate$_stackTrace$1(nodeWithSpan.get$span())));
- } else if (!!t2.$isSassScriptException) {
- error0 = t1;
- throw H.wrapException(this._async_evaluate$_exception$2(error0.message, nodeWithSpan.get$span()));
- } else
- throw exception;
- }
- },
- _async_evaluate$_addExceptionSpan$2: function(nodeWithSpan, callback) {
- return this._async_evaluate$_addExceptionSpan$1$2(nodeWithSpan, callback, null);
- },
- _addExceptionSpanAsync$1$2: function(nodeWithSpan, callback, $T) {
- return this._addExceptionSpanAsync$body$_EvaluateVisitor(nodeWithSpan, callback, $T, $T);
- },
- _addExceptionSpanAsync$body$_EvaluateVisitor: function(nodeWithSpan, callback, $T, $async$type) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter($async$type),
- $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, error, error0, t1, exception, t2, $async$exception;
- var $async$_addExceptionSpanAsync$1$2 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1) {
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$handler = 4;
- $async$goto = 7;
- return P._asyncAwait(callback.call$0(), $async$_addExceptionSpanAsync$1$2);
- case 7:
- // returning from await.
- t1 = $async$result;
- $async$returnValue = t1;
- // goto return
- $async$goto = 1;
- break;
- $async$handler = 2;
- // goto after finally
- $async$goto = 6;
- break;
- case 4:
- // catch
- $async$handler = 3;
- $async$exception = $async$currentError;
- t1 = H.unwrapException($async$exception);
- t2 = J.getInterceptor$(t1);
- if (!!t2.$isMultiSpanSassScriptException) {
- error = t1;
- throw H.wrapException(E.MultiSpanSassRuntimeException$(error.message, nodeWithSpan.get$span(), error.primaryLabel, error.secondarySpans, $async$self._async_evaluate$_stackTrace$1(nodeWithSpan.get$span())));
- } else if (!!t2.$isSassScriptException) {
- error0 = t1;
- throw H.wrapException($async$self._async_evaluate$_exception$2(error0.message, nodeWithSpan.get$span()));
- } else
- throw $async$exception;
- // goto after finally
- $async$goto = 6;
- break;
- case 3:
- // uncaught
- // goto rethrow
- $async$goto = 2;
- break;
- case 6:
- // after finally
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- case 2:
- // rethrow
- return P._asyncRethrow($async$currentError, $async$completer);
- }
- });
- return P._asyncStartSync($async$_addExceptionSpanAsync$1$2, $async$completer);
- },
- _async_evaluate$_addErrorSpan$1$2: function(nodeWithSpan, callback, $T) {
- return this._addErrorSpan$body$_EvaluateVisitor(nodeWithSpan, callback, $T, $T);
- },
- _addErrorSpan$body$_EvaluateVisitor: function(nodeWithSpan, callback, $T, $async$type) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter($async$type),
- $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, error, t1, exception, $async$exception;
- var $async$_async_evaluate$_addErrorSpan$1$2 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1) {
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$handler = 4;
- $async$goto = 7;
- return P._asyncAwait(callback.call$0(), $async$_async_evaluate$_addErrorSpan$1$2);
- case 7:
- // returning from await.
- t1 = $async$result;
- $async$returnValue = t1;
- // goto return
- $async$goto = 1;
- break;
- $async$handler = 2;
- // goto after finally
- $async$goto = 6;
- break;
- case 4:
- // catch
- $async$handler = 3;
- $async$exception = $async$currentError;
- t1 = H.unwrapException($async$exception);
- if (!!J.getInterceptor$(t1).$isSassRuntimeException) {
- error = t1;
- t1 = error.get$span();
- if (!C.JSString_methods.startsWith$1(P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(t1.file._decodedChars, t1._start, t1._file$_end), 0, null), "@error"))
- throw $async$exception;
- throw H.wrapException(E.SassRuntimeException$(error._span_exception$_message, nodeWithSpan.get$span(), $async$self._async_evaluate$_stackTrace$0()));
- } else
- throw $async$exception;
- // goto after finally
- $async$goto = 6;
- break;
- case 3:
- // uncaught
- // goto rethrow
- $async$goto = 2;
- break;
- case 6:
- // after finally
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- case 2:
- // rethrow
- return P._asyncRethrow($async$currentError, $async$completer);
- }
- });
- return P._asyncStartSync($async$_async_evaluate$_addErrorSpan$1$2, $async$completer);
- }
- };
- E._EvaluateVisitor_closure9.prototype = {
- call$1: function($arguments) {
- var module, t2,
- t1 = J.getInterceptor$asx($arguments),
- variable = t1.$index($arguments, 0).assertString$1("name");
- t1 = t1.$index($arguments, 1).get$realNull();
- module = t1 == null ? null : t1.assertString$1("module");
- t1 = this.$this._async_evaluate$_environment;
- t2 = variable.text;
- t2.toString;
- t2 = H.stringReplaceAllUnchecked(t2, "_", "-");
- return t1.globalVariableExists$2$namespace(t2, module == null ? null : module.text) ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- E._EvaluateVisitor_closure10.prototype = {
- call$1: function($arguments) {
- var variable = J.$index$asx($arguments, 0).assertString$1("name"),
- t1 = this.$this._async_evaluate$_environment,
- t2 = variable.text;
- t2.toString;
- return t1.getVariable$1(H.stringReplaceAllUnchecked(t2, "_", "-")) != null ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- E._EvaluateVisitor_closure11.prototype = {
- call$1: function($arguments) {
- var module, t2, t3, t4,
- t1 = J.getInterceptor$asx($arguments),
- variable = t1.$index($arguments, 0).assertString$1("name");
- t1 = t1.$index($arguments, 1).get$realNull();
- module = t1 == null ? null : t1.assertString$1("module");
- t1 = this.$this;
- t2 = t1._async_evaluate$_environment;
- t3 = variable.text;
- t3.toString;
- t4 = H.stringReplaceAllUnchecked(t3, "_", "-");
- return t2.getFunction$2$namespace(t4, module == null ? null : module.text) != null || t1._async_evaluate$_builtInFunctions.containsKey$1(t3) ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- E._EvaluateVisitor_closure12.prototype = {
- call$1: function($arguments) {
- var module, t2,
- t1 = J.getInterceptor$asx($arguments),
- variable = t1.$index($arguments, 0).assertString$1("name");
- t1 = t1.$index($arguments, 1).get$realNull();
- module = t1 == null ? null : t1.assertString$1("module");
- t1 = this.$this._async_evaluate$_environment;
- t2 = variable.text;
- t2.toString;
- t2 = H.stringReplaceAllUnchecked(t2, "_", "-");
- return t1.getMixin$2$namespace(t2, module == null ? null : module.text) != null ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- E._EvaluateVisitor_closure13.prototype = {
- call$1: function($arguments) {
- var t1 = this.$this._async_evaluate$_environment;
- if (!t1._async_environment$_inMixin)
- throw H.wrapException(E.SassScriptException$("content-exists() may only be called within a mixin."));
- return t1._async_environment$_content != null ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- E._EvaluateVisitor_closure14.prototype = {
- call$1: function($arguments) {
- var t2, t3, t4,
- t1 = J.$index$asx($arguments, 0).assertString$1("module").text,
- module = this.$this._async_evaluate$_environment._async_environment$_modules.$index(0, t1);
- if (module == null)
- throw H.wrapException('There is no module with namespace "' + H.S(t1) + '".');
- t1 = F.Value;
- t2 = P.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
- for (t3 = module.get$variables().get$entries(), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
- t4 = t3.get$current(t3);
- t2.$indexSet(0, new D.SassString(t4.key, true), t4.value);
- }
- return new A.SassMap(H.ConstantMap_ConstantMap$from(t2, t1, t1));
- },
- $signature: 9
- };
- E._EvaluateVisitor_closure15.prototype = {
- call$1: function($arguments) {
- var t2, t3, t4,
- t1 = J.$index$asx($arguments, 0).assertString$1("module").text,
- module = this.$this._async_evaluate$_environment._async_environment$_modules.$index(0, t1);
- if (module == null)
- throw H.wrapException('There is no module with namespace "' + H.S(t1) + '".');
- t1 = F.Value;
- t2 = P.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
- for (t3 = module.get$functions(module).get$entries(), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
- t4 = t3.get$current(t3);
- t2.$indexSet(0, new D.SassString(t4.key, true), new F.SassFunction(t4.value));
- }
- return new A.SassMap(H.ConstantMap_ConstantMap$from(t2, t1, t1));
- },
- $signature: 9
- };
- E._EvaluateVisitor_closure16.prototype = {
- call$1: function($arguments) {
- var module, callable,
- t1 = J.getInterceptor$asx($arguments),
- $name = t1.$index($arguments, 0).assertString$1("name"),
- css = t1.$index($arguments, 1).get$isTruthy();
- t1 = t1.$index($arguments, 2).get$realNull();
- module = t1 == null ? null : t1.assertString$1("module");
- if (css && module != null)
- throw H.wrapException("$css and $module may not both be passed at once.");
- if (css)
- callable = new L.PlainCssCallable($name.text);
- else {
- t1 = this.$this;
- callable = t1._async_evaluate$_addExceptionSpan$2(t1._async_evaluate$_callableNode, new E._EvaluateVisitor__closure8(t1, $name, module));
- }
- if (callable != null)
- return new F.SassFunction(callable);
- throw H.wrapException("Function not found: " + $name.toString$0(0));
- },
- $signature: 32
- };
- E._EvaluateVisitor__closure8.prototype = {
- call$0: function() {
- var t2,
- t1 = this.name.text;
- t1.toString;
- t1 = H.stringReplaceAllUnchecked(t1, "_", "-");
- t2 = this.module;
- t2 = t2 == null ? null : t2.text;
- return this.$this._async_evaluate$_getFunction$2$namespace(t1, t2);
- }
- };
- E._EvaluateVisitor_closure17.prototype = {
- call$1: function($arguments) {
- return this.$call$body$_EvaluateVisitor_closure0($arguments);
- },
- $call$body$_EvaluateVisitor_closure0: function($arguments) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, t2, t3, t4, t5, t6, t7, t8, invocation, callable, t1, $function, args;
- var $async$call$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = J.getInterceptor$asx($arguments);
- $function = t1.$index($arguments, 0);
- args = H.interceptedTypeCast(t1.$index($arguments, 1), "$isSassArgumentList");
- t1 = T.Expression;
- t2 = H.setRuntimeTypeInfo([], [t1]);
- t3 = P.String;
- t4 = $async$self.$this;
- t5 = t4._async_evaluate$_callableNode.get$span();
- t6 = t4._async_evaluate$_callableNode.get$span();
- args._wereKeywordsAccessed = true;
- t7 = args._keywords;
- if (t7.get$isEmpty(t7))
- t7 = null;
- else {
- args._wereKeywordsAccessed = true;
- t8 = F.Value;
- t8 = new F.ValueExpression(new A.SassMap(H.ConstantMap_ConstantMap$from(Y.mapMap(t7, new E._EvaluateVisitor__closure6(), new E._EvaluateVisitor__closure7(), t3, t8, t8, t8), t8, t8)), t4._async_evaluate$_callableNode.get$span());
- t7 = t8;
- }
- invocation = X.ArgumentInvocation$(t2, P.LinkedHashMap_LinkedHashMap$_empty(t3, t1), t5, t7, new F.ValueExpression(args, t6));
- $async$goto = $function instanceof D.SassString ? 3 : 4;
- break;
- case 3:
- // then
- N.warn("Passing a string to call() is deprecated and will be illegal\nin Dart Sass 2.0.0. Use call(get-function(" + $function.toString$0(0) + ")) instead.", true);
- $async$goto = 5;
- return P._asyncAwait(t4.visitFunctionExpression$1(new F.FunctionExpression(null, X.Interpolation$(H.setRuntimeTypeInfo([$function.text], [P.Object]), t4._async_evaluate$_callableNode.get$span()), invocation, t4._async_evaluate$_callableNode.get$span())), $async$call$1);
- case 5:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 4:
- // join
- callable = $function.assertFunction$1("function").callable;
- $async$goto = !!J.getInterceptor$(callable).$isAsyncCallable ? 6 : 8;
- break;
- case 6:
- // then
- $async$goto = 9;
- return P._asyncAwait(t4._async_evaluate$_runFunctionCallable$3(invocation, callable, t4._async_evaluate$_callableNode), $async$call$1);
- case 9:
- // returning from await.
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- // goto join
- $async$goto = 7;
- break;
- case 8:
- // else
- throw H.wrapException(E.SassScriptException$("The function " + H.S(callable.get$name()) + " is asynchronous.\nThis is probably caused by a bug in a Sass plugin."));
- case 7:
- // join
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$1, $async$completer);
- }
- };
- E._EvaluateVisitor__closure6.prototype = {
- call$2: function(key, _) {
- return new D.SassString(key, false);
- }
- };
- E._EvaluateVisitor__closure7.prototype = {
- call$2: function(_, value) {
- return value;
- }
- };
- E._EvaluateVisitor_closure18.prototype = {
- call$1: function($arguments) {
- return this.$call$body$_EvaluateVisitor_closure($arguments);
- },
- $call$body$_EvaluateVisitor_closure: function($arguments) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$returnValue, $async$self = this, withMap, values, configuration, t2, t3, t1, url;
- var $async$call$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = J.getInterceptor$asx($arguments);
- url = P.Uri_parse(t1.$index($arguments, 0).assertString$1("module").text);
- t1 = t1.$index($arguments, 1).get$realNull();
- t1 = t1 == null ? null : t1.assertMap$1("with");
- withMap = t1 == null ? null : t1.contents;
- if (withMap != null) {
- values = P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.ConfiguredValue);
- t1 = $async$self.$this;
- withMap.forEach$1(0, new E._EvaluateVisitor__closure4(values, t1._async_evaluate$_callableNode.get$span()));
- configuration = new A.Configuration(values, t1._async_evaluate$_callableNode, false);
- } else
- configuration = C.Configuration_Map_empty_null_true;
- t1 = $async$self.$this;
- t2 = t1._async_evaluate$_callableNode;
- t3 = t2.get$span();
- t3 = t3 == null ? null : t3.file.url;
- $async$goto = 3;
- return P._asyncAwait(t1._async_evaluate$_loadModule$7$baseUrl$configuration$namesInErrors(url, "load-css()", t2, new E._EvaluateVisitor__closure5(t1), t3, configuration, true), $async$call$1);
- case 3:
- // returning from await.
- t1._async_evaluate$_assertConfigurationIsEmpty$2$nameInError(configuration, true);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$1, $async$completer);
- }
- };
- E._EvaluateVisitor__closure4.prototype = {
- call$2: function(variable, value) {
- var $name,
- t1 = variable.assertString$1("with key").text;
- t1.toString;
- $name = H.stringReplaceAllUnchecked(t1, "_", "-");
- t1 = this.values;
- if (t1.containsKey$1($name))
- throw H.wrapException("The variable $" + $name + " was configured twice.");
- t1.$indexSet(0, $name, new Z.ConfiguredValue(value, this.span, null));
- }
- };
- E._EvaluateVisitor__closure5.prototype = {
- call$1: function(module) {
- var t1 = this.$this;
- return t1._async_evaluate$_combineCss$2$clone(module, true).accept$1(t1);
- }
- };
- E._EvaluateVisitor_run_closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(E.EvaluateResult),
- $async$returnValue, $async$self = this, t1, t2, url, $async$temp1, $async$temp2;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node;
- t2 = t1.span;
- url = t2 == null ? null : t2.file.url;
- if (url != null) {
- t2 = $async$self.$this;
- t2._async_evaluate$_activeModules.$indexSet(0, url, null);
- if (t2._async_evaluate$_nodeImporter != null)
- if (url.get$scheme() === "file")
- t2._async_evaluate$_includedFiles.add$1(0, $.$get$context().style.pathFromUri$1(M._parseUri(url)));
- else if (url.toString$0(0) !== "stdin")
- t2._async_evaluate$_includedFiles.add$1(0, url.toString$0(0));
- }
- t2 = $async$self.$this;
- $async$temp1 = E;
- $async$temp2 = t2;
- $async$goto = 3;
- return P._asyncAwait(t2._async_evaluate$_execute$2($async$self.importer, t1), $async$call$0);
- case 3:
- // returning from await.
- $async$returnValue = new $async$temp1.EvaluateResult($async$temp2._async_evaluate$_combineCss$1($async$result), t2._async_evaluate$_includedFiles);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor__withWarnCallback_closure0.prototype = {
- call$2: function(message, deprecation) {
- var t1 = this.$this,
- t2 = t1._async_evaluate$_importSpan;
- return t1._async_evaluate$_warn$3$deprecation(message, t2 == null ? t1._async_evaluate$_callableNode.get$span() : t2, deprecation);
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- E._EvaluateVisitor__loadModule_closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$handler = 1, $async$currentError, $async$next = [], $async$self = this, module, error, error0, error1, error2, message, previousLoad, exception, t1, t2, result, importer, stylesheet, canonicalUrl, t3, $async$exception;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1) {
- $async$currentError = $async$result;
- $async$goto = $async$handler;
- }
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- t2 = $async$self.nodeWithSpan;
- $async$goto = 2;
- return P._asyncAwait(t1._async_evaluate$_loadStylesheet$3$baseUrl(J.toString$0$($async$self.url), t2.get$span(), $async$self.baseUrl), $async$call$0);
- case 2:
- // returning from await.
- result = $async$result;
- importer = result.item1;
- stylesheet = result.item2;
- canonicalUrl = stylesheet.span.file.url;
- t3 = t1._async_evaluate$_activeModules;
- if (t3.containsKey$1(canonicalUrl)) {
- message = $async$self.namesInErrors ? "Module loop: " + H.S($.$get$context().prettyUri$1(canonicalUrl)) + " is already being loaded." : "Module loop: this module is already being loaded.";
- previousLoad = t3.$index(0, canonicalUrl);
- throw H.wrapException(previousLoad == null ? t1._async_evaluate$_exception$1(message) : t1._async_evaluate$_multiSpanException$3(message, "new load", P.LinkedHashMap_LinkedHashMap$_literal([previousLoad.get$span(), "original load"], Y.FileSpan, P.String)));
- }
- t3.$indexSet(0, canonicalUrl, t2);
- module = null;
- $async$handler = 3;
- $async$goto = 6;
- return P._asyncAwait(t1._async_evaluate$_execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, $async$self.configuration, $async$self.namesInErrors, t2), $async$call$0);
- case 6:
- // returning from await.
- module = $async$result;
- $async$next.push(5);
- // goto finally
- $async$goto = 4;
- break;
- case 3:
- // uncaught
- $async$next = [1];
- case 4:
- // finally
- $async$handler = 1;
- t3.remove$1(0, canonicalUrl);
- // goto the next finally handler
- $async$goto = $async$next.pop();
- break;
- case 5:
- // after finally
- $async$handler = 8;
- $async$goto = 11;
- return P._asyncAwait($async$self.callback.call$1(module), $async$call$0);
- case 11:
- // returning from await.
- $async$handler = 1;
- // goto after finally
- $async$goto = 10;
- break;
- case 8:
- // catch
- $async$handler = 7;
- $async$exception = $async$currentError;
- t2 = H.unwrapException($async$exception);
- t3 = J.getInterceptor$(t2);
- if (!!t3.$isSassRuntimeException)
- throw $async$exception;
- else if (!!t3.$isMultiSpanSassException) {
- error = t2;
- throw H.wrapException(E.MultiSpanSassRuntimeException$(error._span_exception$_message, error.get$span(), error.primaryLabel, error.secondarySpans, t1._async_evaluate$_stackTrace$1(error.get$span())));
- } else if (!!t3.$isSassException) {
- error0 = t2;
- throw H.wrapException(t1._async_evaluate$_exception$2(error0._span_exception$_message, error0.get$span()));
- } else if (!!t3.$isMultiSpanSassScriptException) {
- error1 = t2;
- throw H.wrapException(t1._async_evaluate$_multiSpanException$3(error1.message, error1.primaryLabel, error1.secondarySpans));
- } else if (!!t3.$isSassScriptException) {
- error2 = t2;
- throw H.wrapException(t1._async_evaluate$_exception$1(error2.message));
- } else
- throw $async$exception;
- // goto after finally
- $async$goto = 10;
- break;
- case 7:
- // uncaught
- // goto rethrow
- $async$goto = 1;
- break;
- case 10:
- // after finally
- // implicit return
- return P._asyncReturn(null, $async$completer);
- case 1:
- // rethrow
- return P._asyncRethrow($async$currentError, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor__execute_closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t2, t3, t4, t5, css, t1, oldImporter, oldStylesheet, oldRoot, oldParent, oldEndOfImports, oldOutOfOrderImports, oldExtender, oldStyleRule, oldMediaQueries, oldDeclarationName, oldInUnknownAtRule, oldAtRootExcludingStyleRule, oldInKeyframes, oldConfiguration;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- oldImporter = t1._async_evaluate$_importer;
- oldStylesheet = t1._async_evaluate$_stylesheet;
- oldRoot = t1._async_evaluate$_root;
- oldParent = t1._async_evaluate$_parent;
- oldEndOfImports = t1._async_evaluate$_endOfImports;
- oldOutOfOrderImports = t1._async_evaluate$_outOfOrderImports;
- oldExtender = t1._async_evaluate$_extender;
- oldStyleRule = t1._async_evaluate$_styleRule;
- oldMediaQueries = t1._async_evaluate$_mediaQueries;
- oldDeclarationName = t1._async_evaluate$_declarationName;
- oldInUnknownAtRule = t1._async_evaluate$_inUnknownAtRule;
- oldAtRootExcludingStyleRule = t1._async_evaluate$_atRootExcludingStyleRule;
- oldInKeyframes = t1._async_evaluate$_inKeyframes;
- oldConfiguration = t1._async_evaluate$_configuration;
- t1._async_evaluate$_importer = $async$self.importer;
- t2 = t1._async_evaluate$_stylesheet = $async$self.stylesheet;
- t3 = t2.span;
- t4 = B.ModifiableCssNode;
- t5 = H.setRuntimeTypeInfo([], [t4]);
- t1._async_evaluate$_parent = t1._async_evaluate$_root = new V.ModifiableCssStylesheet(t3, new P.UnmodifiableListView(t5, [t4]), t5);
- t1._async_evaluate$_endOfImports = 0;
- t1._async_evaluate$_outOfOrderImports = null;
- t1._async_evaluate$_extender = $async$self.extender;
- t1._async_evaluate$_declarationName = t1._async_evaluate$_mediaQueries = t1._async_evaluate$_styleRule = null;
- t1._async_evaluate$_inKeyframes = t1._async_evaluate$_atRootExcludingStyleRule = t1._async_evaluate$_inUnknownAtRule = false;
- t4 = $async$self.configuration;
- if (t4 != null)
- t1._async_evaluate$_configuration = t4;
- $async$goto = 2;
- return P._asyncAwait(t1.visitStylesheet$1(t2), $async$call$0);
- case 2:
- // returning from await.
- css = t1._async_evaluate$_outOfOrderImports == null ? t1._async_evaluate$_root : new V.CssStylesheet(new P.UnmodifiableListView(t1._async_evaluate$_addOutOfOrderImports$0(), [B.CssNode]), t3);
- $async$self._box_0.css = css;
- t1._async_evaluate$_importer = oldImporter;
- t1._async_evaluate$_stylesheet = oldStylesheet;
- t1._async_evaluate$_root = oldRoot;
- t1._async_evaluate$_parent = oldParent;
- t1._async_evaluate$_endOfImports = oldEndOfImports;
- t1._async_evaluate$_outOfOrderImports = oldOutOfOrderImports;
- t1._async_evaluate$_extender = oldExtender;
- t1._async_evaluate$_styleRule = oldStyleRule;
- t1._async_evaluate$_mediaQueries = oldMediaQueries;
- t1._async_evaluate$_declarationName = oldDeclarationName;
- t1._async_evaluate$_inUnknownAtRule = oldInUnknownAtRule;
- t1._async_evaluate$_atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
- t1._async_evaluate$_inKeyframes = oldInKeyframes;
- t1._async_evaluate$_configuration = oldConfiguration;
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor__combineCss_closure2.prototype = {
- call$1: function(module) {
- return module.get$transitivelyContainsCss();
- }
- };
- E._EvaluateVisitor__combineCss_closure3.prototype = {
- call$1: function(target) {
- return !this.selectors.contains$1(0, target);
- }
- };
- E._EvaluateVisitor__combineCss_closure4.prototype = {
- call$1: function(module) {
- return module.cloneCss$0();
- }
- };
- E._EvaluateVisitor__extendModules_closure1.prototype = {
- call$1: function(target) {
- return !this.originalSelectors.contains$1(0, target);
- }
- };
- E._EvaluateVisitor__extendModules_closure2.prototype = {
- call$0: function() {
- return H.setRuntimeTypeInfo([], [F.Extender]);
- }
- };
- E._EvaluateVisitor__topologicalModules_visitModule0.prototype = {
- call$1: function(module) {
- var t1, t2, t3, _i, upstream;
- for (t1 = module.get$upstream(), t2 = t1.length, t3 = this.seen, _i = 0; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- upstream = t1[_i];
- if (upstream.get$transitivelyContainsCss() && t3.add$1(0, upstream))
- this.call$1(upstream);
- }
- this.sorted.addFirst$1(module);
- }
- };
- E._EvaluateVisitor_visitAtRootRule_closure2.prototype = {
- call$0: function() {
- var t1 = S.SpanScanner$(this.resolved, null);
- return new V.AtRootQueryParser(t1, this.$this._async_evaluate$_logger).parse$0();
- }
- };
- E._EvaluateVisitor_visitAtRootRule_closure3.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2, t3, _i;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
- case 2:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 4;
- break;
- }
- $async$goto = 5;
- return P._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
- case 5:
- // returning from await.
- case 3:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 2;
- break;
- case 4:
- // after for
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitAtRootRule_closure4.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2, t3, _i;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
- case 2:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 4;
- break;
- }
- $async$goto = 5;
- return P._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
- case 5:
- // returning from await.
- case 3:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 2;
- break;
- case 4:
- // after for
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- E._EvaluateVisitor__scopeForAtRoot_closure5.prototype = {
- call$1: function(callback) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, oldParent;
- var $async$call$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- oldParent = t1._async_evaluate$_parent;
- t1._async_evaluate$_parent = $async$self.newParent;
- $async$goto = 2;
- return P._asyncAwait(t1._async_evaluate$_environment.scope$1$2$when(callback, $async$self.node.hasDeclarations, -1), $async$call$1);
- case 2:
- // returning from await.
- t1._async_evaluate$_parent = oldParent;
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$1, $async$completer);
- }
- };
- E._EvaluateVisitor__scopeForAtRoot_closure6.prototype = {
- call$1: function(callback) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, oldAtRootExcludingStyleRule;
- var $async$call$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- oldAtRootExcludingStyleRule = t1._async_evaluate$_atRootExcludingStyleRule;
- t1._async_evaluate$_atRootExcludingStyleRule = true;
- $async$goto = 2;
- return P._asyncAwait($async$self.innerScope.call$1(callback), $async$call$1);
- case 2:
- // returning from await.
- t1._async_evaluate$_atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$1, $async$completer);
- }
- };
- E._EvaluateVisitor__scopeForAtRoot_closure7.prototype = {
- call$1: function(callback) {
- return this.$this._async_evaluate$_withMediaQueries$1$2(null, new E._EvaluateVisitor__scopeForAtRoot__closure0(this.innerScope, callback), P.Null);
- }
- };
- E._EvaluateVisitor__scopeForAtRoot__closure0.prototype = {
- call$0: function() {
- return this.innerScope.call$1(this.callback);
- }
- };
- E._EvaluateVisitor__scopeForAtRoot_closure8.prototype = {
- call$1: function(callback) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, wasInKeyframes;
- var $async$call$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- wasInKeyframes = t1._async_evaluate$_inKeyframes;
- t1._async_evaluate$_inKeyframes = false;
- $async$goto = 2;
- return P._asyncAwait($async$self.innerScope.call$1(callback), $async$call$1);
- case 2:
- // returning from await.
- t1._async_evaluate$_inKeyframes = wasInKeyframes;
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$1, $async$completer);
- }
- };
- E._EvaluateVisitor__scopeForAtRoot_closure9.prototype = {
- call$1: function($parent) {
- return !!J.getInterceptor$($parent).$isCssAtRule;
- }
- };
- E._EvaluateVisitor__scopeForAtRoot_closure10.prototype = {
- call$1: function(callback) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, wasInUnknownAtRule;
- var $async$call$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- wasInUnknownAtRule = t1._async_evaluate$_inUnknownAtRule;
- t1._async_evaluate$_inUnknownAtRule = false;
- $async$goto = 2;
- return P._asyncAwait($async$self.innerScope.call$1(callback), $async$call$1);
- case 2:
- // returning from await.
- t1._async_evaluate$_inUnknownAtRule = wasInUnknownAtRule;
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$1, $async$completer);
- }
- };
- E._EvaluateVisitor_visitContentRule_closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$returnValue, $async$self = this, t1, t2, t3, _i;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.content.declaration.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
- case 3:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 5;
- break;
- }
- $async$goto = 6;
- return P._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
- case 6:
- // returning from await.
- case 4:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 3;
- break;
- case 5:
- // after for
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitDeclaration_closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2, t3, _i;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
- case 2:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 4;
- break;
- }
- $async$goto = 5;
- return P._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
- case 5:
- // returning from await.
- case 3:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 2;
- break;
- case 4:
- // after for
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitEachRule_closure2.prototype = {
- call$1: function(value) {
- return this.$this._async_evaluate$_environment.setLocalVariable$3(C.JSArray_methods.get$first(this.node.variables), value.withoutSlash$0(), this.nodeWithSpan);
- }
- };
- E._EvaluateVisitor_visitEachRule_closure3.prototype = {
- call$1: function(value) {
- return this.$this._async_evaluate$_setMultipleVariables$3(this.node.variables, value, this.nodeWithSpan);
- }
- };
- E._EvaluateVisitor_visitEachRule_closure4.prototype = {
- call$0: function() {
- var _this = this,
- t1 = _this.$this;
- return t1._async_evaluate$_handleReturn$2(_this.list.get$asList(), new E._EvaluateVisitor_visitEachRule__closure0(t1, _this.setVariables, _this.node));
- }
- };
- E._EvaluateVisitor_visitEachRule__closure0.prototype = {
- call$1: function(element) {
- var t1;
- this.setVariables.call$1(element);
- t1 = this.$this;
- return t1._async_evaluate$_handleReturn$2(this.node.children, new E._EvaluateVisitor_visitEachRule___closure0(t1));
- }
- };
- E._EvaluateVisitor_visitEachRule___closure0.prototype = {
- call$1: function(child) {
- return child.accept$1(this.$this);
- }
- };
- E._EvaluateVisitor_visitExtendRule_closure0.prototype = {
- call$0: function() {
- var t1 = this.targetText;
- return D.SelectorList_SelectorList$parse(B.trimAscii(t1.get$value(t1), true), false, true, this.$this._async_evaluate$_logger);
- }
- };
- E._EvaluateVisitor_visitAtRule_closure1.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t3, _i, t1, t2;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- t2 = t1._async_evaluate$_styleRule;
- $async$goto = !(t2 != null && !t1._async_evaluate$_atRootExcludingStyleRule) || t1._async_evaluate$_inKeyframes ? 2 : 4;
- break;
- case 2:
- // then
- t2 = $async$self.node.children, t3 = t2.length, _i = 0;
- case 5:
- // for condition
- if (!(_i < t3)) {
- // goto after for
- $async$goto = 7;
- break;
- }
- $async$goto = 8;
- return P._asyncAwait(t2[_i].accept$1(t1), $async$call$0);
- case 8:
- // returning from await.
- case 6:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 5;
- break;
- case 7:
- // after for
- // goto join
- $async$goto = 3;
- break;
- case 4:
- // else
- $async$goto = 9;
- return P._asyncAwait(t1._async_evaluate$_withParent$2$3$scopeWhen(X.ModifiableCssStyleRule$(t2.selector, t2.span, t2.originalSelector), new E._EvaluateVisitor_visitAtRule__closure0(t1, $async$self.node), false, X.ModifiableCssStyleRule, P.Null), $async$call$0);
- case 9:
- // returning from await.
- case 3:
- // join
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitAtRule__closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2, t3, _i;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
- case 2:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 4;
- break;
- }
- $async$goto = 5;
- return P._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
- case 5:
- // returning from await.
- case 3:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 2;
- break;
- case 4:
- // after for
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitAtRule_closure2.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- E._EvaluateVisitor_visitForRule_closure4.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(T.SassNumber),
- $async$returnValue, $async$self = this;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait($async$self.node.from.accept$1($async$self.$this), $async$call$0);
- case 3:
- // returning from await.
- $async$returnValue = $async$result.assertNumber$0();
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitForRule_closure5.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(T.SassNumber),
- $async$returnValue, $async$self = this;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- $async$goto = 3;
- return P._asyncAwait($async$self.node.to.accept$1($async$self.$this), $async$call$0);
- case 3:
- // returning from await.
- $async$returnValue = $async$result.assertNumber$0();
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitForRule_closure6.prototype = {
- call$0: function() {
- var t1 = this.toNumber,
- t2 = t1.numeratorUnits;
- t1 = t1.denominatorUnits;
- return T.SassNumber$withUnits(this.fromNumber.valueInUnits$2(t2, t1), t1, t2).assertInt$0();
- }
- };
- E._EvaluateVisitor_visitForRule_closure7.prototype = {
- call$0: function() {
- return this.toNumber.assertInt$0();
- }
- };
- E._EvaluateVisitor_visitForRule_closure8.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, i, t3, t4, t5, t6, result, t1, t2, nodeWithSpan;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- t2 = $async$self.node;
- nodeWithSpan = t1._async_evaluate$_expressionNode$1(t2.from);
- i = $async$self.from, t3 = $async$self._box_0, t4 = $async$self.direction, t5 = t2.children, t2 = t2.variable;
- case 3:
- // for condition
- if (!(i !== t3.to)) {
- // goto after for
- $async$goto = 5;
- break;
- }
- t6 = t1._async_evaluate$_environment;
- t6.setLocalVariable$3(t2, new T.SassNumber(i, C.List_empty, C.List_empty, null), nodeWithSpan);
- $async$goto = 6;
- return P._asyncAwait(t1._async_evaluate$_handleReturn$2(t5, new E._EvaluateVisitor_visitForRule__closure0(t1)), $async$call$0);
- case 6:
- // returning from await.
- result = $async$result;
- if (result != null) {
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- }
- case 4:
- // for update
- i += t4;
- // goto for condition
- $async$goto = 3;
- break;
- case 5:
- // after for
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitForRule__closure0.prototype = {
- call$1: function(child) {
- return child.accept$1(this.$this);
- }
- };
- E._EvaluateVisitor_visitForwardRule_closure1.prototype = {
- call$1: function(module) {
- this.$this._async_evaluate$_environment.forwardModule$2(module, this.node);
- }
- };
- E._EvaluateVisitor_visitForwardRule_closure2.prototype = {
- call$1: function(module) {
- this.$this._async_evaluate$_environment.forwardModule$2(module, this.node);
- }
- };
- E._EvaluateVisitor__assertConfigurationIsEmpty_closure0.prototype = {
- call$2: function($name, value) {
- var t1 = this.only;
- if (t1 != null && !t1.contains$1(0, $name))
- return;
- t1 = this.nameInError ? "$" + H.S($name) + " was not declared with !default in the @used module." : "This variable was not declared with !default in the @used module.";
- throw H.wrapException(this.$this._async_evaluate$_exception$2(t1, value.configurationSpan));
- }
- };
- E._EvaluateVisitor_visitIfRule_closure0.prototype = {
- call$0: function() {
- var t1 = this.$this;
- return t1._async_evaluate$_handleReturn$2(this._box_0.clause.children, new E._EvaluateVisitor_visitIfRule__closure0(t1));
- }
- };
- E._EvaluateVisitor_visitIfRule__closure0.prototype = {
- call$1: function(child) {
- return child.accept$1(this.$this);
- }
- };
- E._EvaluateVisitor__visitDynamicImport_closure0.prototype = {
- call$0: function() {
- return this.$call$body$_EvaluateVisitor__visitDynamicImport_closure();
- },
- $call$body$_EvaluateVisitor__visitDynamicImport_closure: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$returnValue, $async$self = this, previousLoad, oldImporter, oldStylesheet, t5, t6, t7, t8, t9, t10, t11, environment, module, visitor, _box_0, t1, t2, result, importer, stylesheet, t3, url, t4;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- _box_0 = {};
- t1 = $async$self.$this;
- t2 = $async$self.$import;
- $async$goto = 3;
- return P._asyncAwait(t1._async_evaluate$_loadStylesheet$3$forImport(t2.url, t2.span, true), $async$call$0);
- case 3:
- // returning from await.
- result = $async$result;
- importer = result.item1;
- stylesheet = result.item2;
- t3 = stylesheet.span;
- url = t3.file.url;
- t4 = t1._async_evaluate$_activeModules;
- if (t4.containsKey$1(url)) {
- previousLoad = t4.$index(0, url);
- throw H.wrapException(previousLoad == null ? t1._async_evaluate$_exception$1("This file is already being loaded.") : t1._async_evaluate$_multiSpanException$3("This file is already being loaded.", "new load", P.LinkedHashMap_LinkedHashMap$_literal([previousLoad.get$span(), "original load"], Y.FileSpan, P.String)));
- }
- t4.$indexSet(0, url, t2);
- t2 = new P.UnmodifiableListView(stylesheet._uses, [T.UseRule]);
- if (t2.get$length(t2) === 0) {
- t2 = new P.UnmodifiableListView(stylesheet._forwards, [L.ForwardRule]);
- t2 = t2.get$length(t2) === 0;
- } else
- t2 = false;
- $async$goto = t2 ? 4 : 5;
- break;
- case 4:
- // then
- oldImporter = t1._async_evaluate$_importer;
- oldStylesheet = t1._async_evaluate$_stylesheet;
- t1._async_evaluate$_importer = importer;
- t1._async_evaluate$_stylesheet = stylesheet;
- $async$goto = 6;
- return P._asyncAwait(t1.visitStylesheet$1(stylesheet), $async$call$0);
- case 6:
- // returning from await.
- t1._async_evaluate$_importer = oldImporter;
- t1._async_evaluate$_stylesheet = oldStylesheet;
- t4.remove$1(0, url);
- // goto return
- $async$goto = 1;
- break;
- case 5:
- // join
- _box_0.children = null;
- t2 = t1._async_evaluate$_environment;
- t5 = P.String;
- t6 = [G.Module, B.AsyncCallable];
- t7 = H.setRuntimeTypeInfo([], [t6]);
- t8 = t2._async_environment$_variables;
- t8 = H.setRuntimeTypeInfo(t8.slice(0), [H.getTypeArgumentByIndex(t8, 0)]);
- t9 = t2._async_environment$_variableNodes;
- if (t9 == null)
- t9 = null;
- else
- t9 = H.setRuntimeTypeInfo(t9.slice(0), [H.getTypeArgumentByIndex(t9, 0)]);
- t10 = t2._async_environment$_functions;
- t10 = H.setRuntimeTypeInfo(t10.slice(0), [H.getTypeArgumentByIndex(t10, 0)]);
- t11 = t2._async_environment$_mixins;
- t11 = H.setRuntimeTypeInfo(t11.slice(0), [H.getTypeArgumentByIndex(t11, 0)]);
- environment = Q.AsyncEnvironment$_(P.LinkedHashMap_LinkedHashMap$_empty(t5, t6), P.LinkedHashMap_LinkedHashMap$_empty(t5, B.AstNode), null, null, null, null, null, t7, t8, t9, t10, t11, t2._async_environment$_content);
- $async$goto = 7;
- return P._asyncAwait(t1._async_evaluate$_withEnvironment$1$2(environment, new E._EvaluateVisitor__visitDynamicImport__closure0(_box_0, t1, importer, stylesheet, environment), P.Null), $async$call$0);
- case 7:
- // returning from await.
- module = Q._EnvironmentModule__EnvironmentModule0(environment, new V.CssStylesheet(new P.UnmodifiableListView(C.List_empty1, [B.CssNode]), t3), C.C_EmptyExtender, environment._async_environment$_forwardedModules);
- t1._async_evaluate$_environment.importForwards$1(module);
- $async$goto = module.transitivelyContainsCss ? 8 : 9;
- break;
- case 8:
- // then
- $async$goto = 10;
- return P._asyncAwait(t1._async_evaluate$_combineCss$2$clone(module, module.transitivelyContainsExtensions).accept$1(t1), $async$call$0);
- case 10:
- // returning from await.
- case 9:
- // join
- visitor = new E._ImportedCssVisitor0(t1);
- for (t1 = J.get$iterator$ax(_box_0.children); t1.moveNext$0();)
- t1.get$current(t1).accept$1(visitor);
- t4.remove$1(0, url);
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor__visitDynamicImport__closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t2, t3, t4, t1, oldImporter, oldStylesheet, oldRoot, oldParent, oldEndOfImports, oldOutOfOrderImports, oldConfiguration;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- oldImporter = t1._async_evaluate$_importer;
- oldStylesheet = t1._async_evaluate$_stylesheet;
- oldRoot = t1._async_evaluate$_root;
- oldParent = t1._async_evaluate$_parent;
- oldEndOfImports = t1._async_evaluate$_endOfImports;
- oldOutOfOrderImports = t1._async_evaluate$_outOfOrderImports;
- oldConfiguration = t1._async_evaluate$_configuration;
- t1._async_evaluate$_importer = $async$self.importer;
- t2 = t1._async_evaluate$_stylesheet = $async$self.stylesheet;
- t3 = B.ModifiableCssNode;
- t4 = H.setRuntimeTypeInfo([], [t3]);
- t1._async_evaluate$_parent = t1._async_evaluate$_root = new V.ModifiableCssStylesheet(t2.span, new P.UnmodifiableListView(t4, [t3]), t4);
- t1._async_evaluate$_endOfImports = 0;
- t1._async_evaluate$_outOfOrderImports = null;
- t3 = new P.UnmodifiableListView(t2._forwards, [L.ForwardRule]);
- if (!t3.get$isEmpty(t3))
- t1._async_evaluate$_configuration = $async$self.environment.toImplicitConfiguration$0();
- $async$goto = 2;
- return P._asyncAwait(t1.visitStylesheet$1(t2), $async$call$0);
- case 2:
- // returning from await.
- $async$self._box_0.children = t1._async_evaluate$_addOutOfOrderImports$0();
- t1._async_evaluate$_importer = oldImporter;
- t1._async_evaluate$_stylesheet = oldStylesheet;
- t1._async_evaluate$_root = oldRoot;
- t1._async_evaluate$_parent = oldParent;
- t1._async_evaluate$_endOfImports = oldEndOfImports;
- t1._async_evaluate$_outOfOrderImports = oldOutOfOrderImports;
- t1._async_evaluate$_configuration = oldConfiguration;
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitIncludeRule_closure2.prototype = {
- call$0: function() {
- var t1 = this.node;
- return this.$this._async_evaluate$_environment.getMixin$2$namespace(t1.name, t1.namespace);
- }
- };
- E._EvaluateVisitor_visitIncludeRule_closure3.prototype = {
- call$0: function() {
- return this.node.get$spanWithoutContent();
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- E._EvaluateVisitor_visitIncludeRule_closure4.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$returnValue, $async$self = this, t1;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- $async$goto = 3;
- return P._asyncAwait(t1._async_evaluate$_environment.withContent$2($async$self.contentCallable, new E._EvaluateVisitor_visitIncludeRule__closure0(t1, $async$self.mixin, $async$self.nodeWithSpan)), $async$call$0);
- case 3:
- // returning from await.
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitIncludeRule__closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$returnValue, $async$self = this, t1;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- $async$goto = 3;
- return P._asyncAwait(t1._async_evaluate$_environment.asMixin$1(new E._EvaluateVisitor_visitIncludeRule___closure0(t1, $async$self.mixin, $async$self.nodeWithSpan)), $async$call$0);
- case 3:
- // returning from await.
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitIncludeRule___closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2, t3, t4, t5, _i;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.mixin.declaration.children, t2 = t1.length, t3 = $async$self.$this, t4 = $async$self.nodeWithSpan, t5 = F.Value, _i = 0;
- case 2:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 4;
- break;
- }
- $async$goto = 5;
- return P._asyncAwait(t3._async_evaluate$_addErrorSpan$1$2(t4, new E._EvaluateVisitor_visitIncludeRule____closure0(t3, t1[_i]), t5), $async$call$0);
- case 5:
- // returning from await.
- case 3:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 2;
- break;
- case 4:
- // after for
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitIncludeRule____closure0.prototype = {
- call$0: function() {
- return this.statement.accept$1(this.$this);
- }
- };
- E._EvaluateVisitor_visitMediaRule_closure1.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- t2 = $async$self.mergedQueries;
- if (t2 == null)
- t2 = $async$self.queries;
- $async$goto = 2;
- return P._asyncAwait(t1._async_evaluate$_withMediaQueries$1$2(t2, new E._EvaluateVisitor_visitMediaRule__closure0(t1, $async$self.node), P.Null), $async$call$0);
- case 2:
- // returning from await.
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitMediaRule__closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t3, _i, t1, t2;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- t2 = t1._async_evaluate$_styleRule;
- $async$goto = !(t2 != null && !t1._async_evaluate$_atRootExcludingStyleRule) ? 2 : 4;
- break;
- case 2:
- // then
- t2 = $async$self.node.children, t3 = t2.length, _i = 0;
- case 5:
- // for condition
- if (!(_i < t3)) {
- // goto after for
- $async$goto = 7;
- break;
- }
- $async$goto = 8;
- return P._asyncAwait(t2[_i].accept$1(t1), $async$call$0);
- case 8:
- // returning from await.
- case 6:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 5;
- break;
- case 7:
- // after for
- // goto join
- $async$goto = 3;
- break;
- case 4:
- // else
- $async$goto = 9;
- return P._asyncAwait(t1._async_evaluate$_withParent$2$3$scopeWhen(X.ModifiableCssStyleRule$(t2.selector, t2.span, t2.originalSelector), new E._EvaluateVisitor_visitMediaRule___closure0(t1, $async$self.node), false, X.ModifiableCssStyleRule, P.Null), $async$call$0);
- case 9:
- // returning from await.
- case 3:
- // join
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitMediaRule___closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2, t3, _i;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
- case 2:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 4;
- break;
- }
- $async$goto = 5;
- return P._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
- case 5:
- // returning from await.
- case 3:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 2;
- break;
- case 4:
- // after for
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitMediaRule_closure2.prototype = {
- call$1: function(node) {
- var t1 = J.getInterceptor$(node);
- if (!t1.$isCssStyleRule)
- t1 = this.mergedQueries != null && !!t1.$isCssMediaRule;
- else
- t1 = true;
- return t1;
- }
- };
- E._EvaluateVisitor__visitMediaQueries_closure0.prototype = {
- call$0: function() {
- var t1 = S.SpanScanner$(this.resolved, null);
- return new F.MediaQueryParser(t1, this.$this._async_evaluate$_logger).parse$0();
- }
- };
- E._EvaluateVisitor_visitStyleRule_closure6.prototype = {
- call$0: function() {
- var t1 = this.selectorText;
- t1 = S.SpanScanner$(t1.get$value(t1), null);
- return new E.KeyframeSelectorParser(t1, this.$this._async_evaluate$_logger).parse$0();
- }
- };
- E._EvaluateVisitor_visitStyleRule_closure7.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2, t3, _i;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
- case 2:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 4;
- break;
- }
- $async$goto = 5;
- return P._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
- case 5:
- // returning from await.
- case 3:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 2;
- break;
- case 4:
- // after for
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitStyleRule_closure8.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- E._EvaluateVisitor_visitStyleRule_closure9.prototype = {
- call$0: function() {
- var t2, t3,
- t1 = this.selectorText;
- t1 = t1.get$value(t1);
- t2 = this.$this;
- t3 = !t2._async_evaluate$_stylesheet.plainCss;
- return D.SelectorList_SelectorList$parse(t1, t3, t3, t2._async_evaluate$_logger);
- }
- };
- E._EvaluateVisitor_visitStyleRule_closure10.prototype = {
- call$0: function() {
- var t1 = this._box_0.parsedSelector,
- t2 = this.$this,
- t3 = t2._async_evaluate$_styleRule;
- t3 = t3 == null ? null : t3.originalSelector;
- return t1.resolveParentSelectors$2$implicitParent(t3, !t2._async_evaluate$_atRootExcludingStyleRule);
- }
- };
- E._EvaluateVisitor_visitStyleRule_closure11.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- $async$goto = 2;
- return P._asyncAwait(t1._async_evaluate$_withStyleRule$1$2($async$self.rule, new E._EvaluateVisitor_visitStyleRule__closure0(t1, $async$self.node), P.Null), $async$call$0);
- case 2:
- // returning from await.
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitStyleRule__closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2, t3, _i;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
- case 2:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 4;
- break;
- }
- $async$goto = 5;
- return P._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
- case 5:
- // returning from await.
- case 3:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 2;
- break;
- case 4:
- // after for
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitStyleRule_closure12.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- E._EvaluateVisitor_visitSupportsRule_closure1.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t3, _i, t1, t2;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- t2 = t1._async_evaluate$_styleRule;
- $async$goto = !(t2 != null && !t1._async_evaluate$_atRootExcludingStyleRule) ? 2 : 4;
- break;
- case 2:
- // then
- t2 = $async$self.node.children, t3 = t2.length, _i = 0;
- case 5:
- // for condition
- if (!(_i < t3)) {
- // goto after for
- $async$goto = 7;
- break;
- }
- $async$goto = 8;
- return P._asyncAwait(t2[_i].accept$1(t1), $async$call$0);
- case 8:
- // returning from await.
- case 6:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 5;
- break;
- case 7:
- // after for
- // goto join
- $async$goto = 3;
- break;
- case 4:
- // else
- $async$goto = 9;
- return P._asyncAwait(t1._async_evaluate$_withParent$2$2(X.ModifiableCssStyleRule$(t2.selector, t2.span, t2.originalSelector), new E._EvaluateVisitor_visitSupportsRule__closure0(t1, $async$self.node), X.ModifiableCssStyleRule, P.Null), $async$call$0);
- case 9:
- // returning from await.
- case 3:
- // join
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitSupportsRule__closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2, t3, _i;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
- case 2:
- // for condition
- if (!(_i < t2)) {
- // goto after for
- $async$goto = 4;
- break;
- }
- $async$goto = 5;
- return P._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
- case 5:
- // returning from await.
- case 3:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 2;
- break;
- case 4:
- // after for
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitSupportsRule_closure2.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- E._EvaluateVisitor_visitVariableDeclaration_closure2.prototype = {
- call$0: function() {
- var t1 = this.override;
- this.$this._async_evaluate$_environment.setVariable$4$global(this.node.name, t1.value, t1.assignmentNode, true);
- }
- };
- E._EvaluateVisitor_visitVariableDeclaration_closure3.prototype = {
- call$0: function() {
- var t1 = this.node;
- return this.$this._async_evaluate$_environment.getVariable$2$namespace(t1.name, t1.namespace);
- }
- };
- E._EvaluateVisitor_visitVariableDeclaration_closure4.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = this.node;
- t1._async_evaluate$_environment.setVariable$5$global$namespace(t2.name, this.value, t1._async_evaluate$_expressionNode$1(t2.expression), t2.isGlobal, t2.namespace);
- }
- };
- E._EvaluateVisitor_visitUseRule_closure0.prototype = {
- call$1: function(module) {
- var t1 = this.node;
- this.$this._async_evaluate$_environment.addModule$3$namespace(module, t1, t1.namespace);
- }
- };
- E._EvaluateVisitor_visitWarnRule_closure0.prototype = {
- call$0: function() {
- return this.node.expression.accept$1(this.$this);
- }
- };
- E._EvaluateVisitor_visitWhileRule_closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, t1, t2, t3, result;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node, t2 = t1.condition, t3 = $async$self.$this, t1 = t1.children;
- case 3:
- // for condition
- $async$goto = 5;
- return P._asyncAwait(t2.accept$1(t3), $async$call$0);
- case 5:
- // returning from await.
- if (!$async$result.get$isTruthy()) {
- // goto after for
- $async$goto = 4;
- break;
- }
- $async$goto = 6;
- return P._asyncAwait(t3._async_evaluate$_handleReturn$2(t1, new E._EvaluateVisitor_visitWhileRule__closure0(t3)), $async$call$0);
- case 6:
- // returning from await.
- result = $async$result;
- if (result != null) {
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- }
- // goto for condition
- $async$goto = 3;
- break;
- case 4:
- // after for
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitWhileRule__closure0.prototype = {
- call$1: function(child) {
- return child.accept$1(this.$this);
- }
- };
- E._EvaluateVisitor_visitBinaryOperationExpression_closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, right, result, t1, t2, left, $async$temp1, $async$temp2;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node;
- t2 = $async$self.$this;
- $async$goto = 3;
- return P._asyncAwait(t1.left.accept$1(t2), $async$call$0);
- case 3:
- // returning from await.
- left = $async$result;
- case 4:
- // switch
- switch (t1.operator) {
- case C.BinaryOperator_kjl:
- // goto case
- $async$goto = 6;
- break;
- case C.BinaryOperator_or_or_1:
- // goto case
- $async$goto = 7;
- break;
- case C.BinaryOperator_and_and_2:
- // goto case
- $async$goto = 8;
- break;
- case C.BinaryOperator_YlX:
- // goto case
- $async$goto = 9;
- break;
- case C.BinaryOperator_i5H:
- // goto case
- $async$goto = 10;
- break;
- case C.BinaryOperator_AcR0:
- // goto case
- $async$goto = 11;
- break;
- case C.BinaryOperator_1da:
- // goto case
- $async$goto = 12;
- break;
- case C.BinaryOperator_8qt:
- // goto case
- $async$goto = 13;
- break;
- case C.BinaryOperator_33h:
- // goto case
- $async$goto = 14;
- break;
- case C.BinaryOperator_AcR:
- // goto case
- $async$goto = 15;
- break;
- case C.BinaryOperator_iyO:
- // goto case
- $async$goto = 16;
- break;
- case C.BinaryOperator_O1M:
- // goto case
- $async$goto = 17;
- break;
- case C.BinaryOperator_RTB:
- // goto case
- $async$goto = 18;
- break;
- case C.BinaryOperator_2ad:
- // goto case
- $async$goto = 19;
- break;
- default:
- // goto default
- $async$goto = 20;
- break;
- }
- break;
- case 6:
- // case
- $async$goto = 21;
- return P._asyncAwait(t1.right.accept$1(t2), $async$call$0);
- case 21:
- // returning from await.
- right = $async$result;
- left.toString;
- t1 = N.serializeValue(left, false, true) + "=";
- right.toString;
- $async$returnValue = new D.SassString(t1 + N.serializeValue(right, false, true), false);
- // goto return
- $async$goto = 1;
- break;
- case 7:
- // case
- $async$goto = left.get$isTruthy() ? 22 : 24;
- break;
- case 22:
- // then
- $async$result = left;
- // goto join
- $async$goto = 23;
- break;
- case 24:
- // else
- $async$goto = 25;
- return P._asyncAwait(t1.right.accept$1(t2), $async$call$0);
- case 25:
- // returning from await.
- case 23:
- // join
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 8:
- // case
- $async$goto = left.get$isTruthy() ? 26 : 28;
- break;
- case 26:
- // then
- $async$goto = 29;
- return P._asyncAwait(t1.right.accept$1(t2), $async$call$0);
- case 29:
- // returning from await.
- // goto join
- $async$goto = 27;
- break;
- case 28:
- // else
- $async$result = left;
- case 27:
- // join
- $async$returnValue = $async$result;
- // goto return
- $async$goto = 1;
- break;
- case 9:
- // case
- $async$temp1 = J;
- $async$temp2 = left;
- $async$goto = 30;
- return P._asyncAwait(t1.right.accept$1(t2), $async$call$0);
- case 30:
- // returning from await.
- $async$returnValue = $async$temp1.$eq$($async$temp2, $async$result) ? C.SassBoolean_true : C.SassBoolean_false;
- // goto return
- $async$goto = 1;
- break;
- case 10:
- // case
- $async$temp1 = J;
- $async$temp2 = left;
- $async$goto = 31;
- return P._asyncAwait(t1.right.accept$1(t2), $async$call$0);
- case 31:
- // returning from await.
- $async$returnValue = !$async$temp1.$eq$($async$temp2, $async$result) ? C.SassBoolean_true : C.SassBoolean_false;
- // goto return
- $async$goto = 1;
- break;
- case 11:
- // case
- $async$temp1 = left;
- $async$goto = 32;
- return P._asyncAwait(t1.right.accept$1(t2), $async$call$0);
- case 32:
- // returning from await.
- $async$returnValue = $async$temp1.greaterThan$1($async$result);
- // goto return
- $async$goto = 1;
- break;
- case 12:
- // case
- $async$temp1 = left;
- $async$goto = 33;
- return P._asyncAwait(t1.right.accept$1(t2), $async$call$0);
- case 33:
- // returning from await.
- $async$returnValue = $async$temp1.greaterThanOrEquals$1($async$result);
- // goto return
- $async$goto = 1;
- break;
- case 13:
- // case
- $async$temp1 = left;
- $async$goto = 34;
- return P._asyncAwait(t1.right.accept$1(t2), $async$call$0);
- case 34:
- // returning from await.
- $async$returnValue = $async$temp1.lessThan$1($async$result);
- // goto return
- $async$goto = 1;
- break;
- case 14:
- // case
- $async$temp1 = left;
- $async$goto = 35;
- return P._asyncAwait(t1.right.accept$1(t2), $async$call$0);
- case 35:
- // returning from await.
- $async$returnValue = $async$temp1.lessThanOrEquals$1($async$result);
- // goto return
- $async$goto = 1;
- break;
- case 15:
- // case
- $async$temp1 = left;
- $async$goto = 36;
- return P._asyncAwait(t1.right.accept$1(t2), $async$call$0);
- case 36:
- // returning from await.
- $async$returnValue = $async$temp1.plus$1($async$result);
- // goto return
- $async$goto = 1;
- break;
- case 16:
- // case
- $async$temp1 = left;
- $async$goto = 37;
- return P._asyncAwait(t1.right.accept$1(t2), $async$call$0);
- case 37:
- // returning from await.
- $async$returnValue = $async$temp1.minus$1($async$result);
- // goto return
- $async$goto = 1;
- break;
- case 17:
- // case
- $async$temp1 = left;
- $async$goto = 38;
- return P._asyncAwait(t1.right.accept$1(t2), $async$call$0);
- case 38:
- // returning from await.
- $async$returnValue = $async$temp1.times$1($async$result);
- // goto return
- $async$goto = 1;
- break;
- case 18:
- // case
- $async$goto = 39;
- return P._asyncAwait(t1.right.accept$1(t2), $async$call$0);
- case 39:
- // returning from await.
- right = $async$result;
- result = left.dividedBy$1(right);
- if (t1.allowsSlash && !!left.$isSassNumber && right instanceof T.SassNumber) {
- $async$returnValue = H.interceptedTypeCast(result, "$isSassNumber").withSlash$2(left, right);
- // goto return
- $async$goto = 1;
- break;
- } else {
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- }
- case 19:
- // case
- $async$temp1 = left;
- $async$goto = 40;
- return P._asyncAwait(t1.right.accept$1(t2), $async$call$0);
- case 40:
- // returning from await.
- $async$returnValue = $async$temp1.modulo$1($async$result);
- // goto return
- $async$goto = 1;
- break;
- case 20:
- // default
- // goto return
- $async$goto = 1;
- break;
- case 5:
- // after switch
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitVariableExpression_closure0.prototype = {
- call$0: function() {
- var t1 = this.node;
- return this.$this._async_evaluate$_environment.getVariable$2$namespace(t1.name, t1.namespace);
- }
- };
- E._EvaluateVisitor_visitListExpression_closure0.prototype = {
- call$1: function(expression) {
- return expression.accept$1(this.$this);
- }
- };
- E._EvaluateVisitor_visitFunctionExpression_closure1.prototype = {
- call$0: function() {
- var t1 = this.node.namespace,
- t2 = this.plainName;
- if (t1 == null)
- t2 = H.stringReplaceAllUnchecked(t2, "_", "-");
- return this.$this._async_evaluate$_getFunction$2$namespace(t2, t1);
- }
- };
- E._EvaluateVisitor_visitFunctionExpression_closure2.prototype = {
- call$0: function() {
- var t1 = this.node;
- return this.$this._async_evaluate$_runFunctionCallable$3(t1.$arguments, this._box_0.$function, t1);
- }
- };
- E._EvaluateVisitor__runUserDefinedCallable_closure0.prototype = {
- call$0: function() {
- var _this = this,
- t1 = _this.$this,
- t2 = _this.callable;
- return t1._async_evaluate$_withEnvironment$1$2(t2.environment.closure$0(), new E._EvaluateVisitor__runUserDefinedCallable__closure0(t1, _this.evaluated, t2, _this.nodeWithSpan, _this.run), F.Value);
- }
- };
- E._EvaluateVisitor__runUserDefinedCallable__closure0.prototype = {
- call$0: function() {
- var _this = this,
- t1 = _this.$this;
- return t1._async_evaluate$_environment.scope$1$1(new E._EvaluateVisitor__runUserDefinedCallable___closure0(t1, _this.evaluated, _this.callable, _this.nodeWithSpan, _this.run), F.Value);
- }
- };
- E._EvaluateVisitor__runUserDefinedCallable___closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, declaredArguments, minLength, t8, i, t9, t10, t11, argument, value, t12, rest, argumentList, result, argumentWord, argumentNames, t1, t2, t3, t4, t5, t6, t7;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- t2 = $async$self.evaluated;
- t3 = t2.positional;
- t4 = t3.length;
- t5 = t2.named;
- t6 = $async$self.callable.declaration.$arguments;
- t7 = $async$self.nodeWithSpan;
- t1._async_evaluate$_verifyArguments$4(t4, t5, t6, t7);
- declaredArguments = t6.$arguments;
- t4 = declaredArguments.length;
- minLength = Math.min(t3.length, t4);
- for (t8 = t1._async_evaluate$_sourceMap, i = 0; i < minLength; ++i) {
- t9 = t1._async_evaluate$_environment;
- t10 = declaredArguments[i].name;
- t11 = t3[i].withoutSlash$0();
- t9.setLocalVariable$3(t10, t11, t8 ? t2.positionalNodes[i] : null);
- }
- i = t3.length;
- case 3:
- // for condition
- if (!(i < t4)) {
- // goto after for
- $async$goto = 5;
- break;
- }
- argument = declaredArguments[i];
- t9 = argument.name;
- value = t5.remove$1(0, t9);
- $async$goto = value == null ? 6 : 7;
- break;
- case 6:
- // then
- $async$goto = 8;
- return P._asyncAwait(argument.defaultValue.accept$1(t1), $async$call$0);
- case 8:
- // returning from await.
- value = $async$result;
- case 7:
- // join
- t10 = t1._async_evaluate$_environment;
- t11 = value.withoutSlash$0();
- if (t8) {
- t12 = t2.namedNodes.$index(0, t9);
- if (t12 == null)
- t12 = t1._async_evaluate$_expressionNode$1(argument.defaultValue);
- } else
- t12 = null;
- t10.setLocalVariable$3(t9, t11, t12);
- case 4:
- // for update
- ++i;
- // goto for condition
- $async$goto = 3;
- break;
- case 5:
- // after for
- t8 = t6.restArgument;
- if (t8 != null) {
- rest = t3.length > t4 ? C.JSArray_methods.sublist$1(t3, t4) : C.List_empty6;
- t2 = t2.separator;
- if (t2 === C.ListSeparator_undecided)
- t2 = C.ListSeparator_comma;
- t3 = F.Value;
- argumentList = new D.SassArgumentList(H.ConstantMap_ConstantMap$from(t5, P.String, t3), P.List_List$unmodifiable(rest, t3), t2, false);
- argumentList.SassList$3$brackets(rest, t2, false);
- t1._async_evaluate$_environment.setLocalVariable$3(t8, argumentList, t7);
- } else
- argumentList = null;
- $async$goto = 9;
- return P._asyncAwait($async$self.run.call$0(), $async$call$0);
- case 9:
- // returning from await.
- result = $async$result;
- if (argumentList == null) {
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- }
- if (t5.get$isEmpty(t5)) {
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- }
- if (argumentList._wereKeywordsAccessed) {
- $async$returnValue = result;
- // goto return
- $async$goto = 1;
- break;
- }
- argumentWord = B.pluralize("argument", J.get$length$asx(t5.get$keys()), null);
- argumentNames = B.toSentence(J.map$1$1$ax(t5.get$keys(), new E._EvaluateVisitor__runUserDefinedCallable____closure0(), P.Object), "or");
- throw H.wrapException(E.MultiSpanSassRuntimeException$("No " + argumentWord + " named " + H.S(argumentNames) + ".", t7.get$span(), "invocation", P.LinkedHashMap_LinkedHashMap$_literal([t6.get$spanWithName(), "declaration"], Y.FileSpan, P.String), t1._async_evaluate$_stackTrace$1(t7.get$span())));
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor__runUserDefinedCallable____closure0.prototype = {
- call$1: function($name) {
- return "$" + H.S($name);
- }
- };
- E._EvaluateVisitor__runFunctionCallable_closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(F.Value),
- $async$returnValue, $async$self = this, t1, t2, t3, t4, _i, $returnValue;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.callable.declaration, t2 = t1.children, t3 = t2.length, t4 = $async$self.$this, _i = 0;
- case 3:
- // for condition
- if (!(_i < t3)) {
- // goto after for
- $async$goto = 5;
- break;
- }
- $async$goto = 6;
- return P._asyncAwait(t2[_i].accept$1(t4), $async$call$0);
- case 6:
- // returning from await.
- $returnValue = $async$result;
- if ($returnValue instanceof F.Value) {
- $async$returnValue = $returnValue;
- // goto return
- $async$goto = 1;
- break;
- }
- case 4:
- // for update
- ++_i;
- // goto for condition
- $async$goto = 3;
- break;
- case 5:
- // after for
- throw H.wrapException(t4._async_evaluate$_exception$2("Function finished without @return.", t1.span));
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor__runBuiltInCallable_closure1.prototype = {
- call$0: function() {
- return this.overload.verify$2(this.evaluated.positional.length, this.namedSet);
- }
- };
- E._EvaluateVisitor__runBuiltInCallable_closure2.prototype = {
- call$1: function($name) {
- return "$" + H.S($name);
- }
- };
- E._EvaluateVisitor__evaluateArguments_closure2.prototype = {
- call$2: function(_, expression) {
- return expression.accept$1(this.$this);
- }
- };
- E._EvaluateVisitor__evaluateArguments_closure3.prototype = {
- call$2: function(_, expression) {
- return this.$this._async_evaluate$_expressionNode$1(expression);
- }
- };
- E._EvaluateVisitor__evaluateArguments_closure4.prototype = {
- call$2: function(key, value) {
- var t1;
- this.named.$indexSet(0, key, value);
- t1 = this.namedNodes;
- if (t1 != null)
- t1.$indexSet(0, key, this.restNodeForSpan);
- }
- };
- E._EvaluateVisitor__evaluateMacroArguments_closure3.prototype = {
- call$1: function(value) {
- return new F.ValueExpression(value, null);
- }
- };
- E._EvaluateVisitor__evaluateMacroArguments_closure4.prototype = {
- call$1: function(value) {
- return new F.ValueExpression(value, null);
- }
- };
- E._EvaluateVisitor__evaluateMacroArguments_closure5.prototype = {
- call$2: function(key, value) {
- this.named.$indexSet(0, key, new F.ValueExpression(value, null));
- }
- };
- E._EvaluateVisitor__evaluateMacroArguments_closure6.prototype = {
- call$1: function(value) {
- return new F.ValueExpression(value, null);
- }
- };
- E._EvaluateVisitor__addRestMap_closure1.prototype = {
- call$1: function(value) {
- return H.subtypeOfRuntimeTypeCast(value, this.T);
- }
- };
- E._EvaluateVisitor__addRestMap_closure2.prototype = {
- call$2: function(key, value) {
- var _this = this;
- if (key instanceof D.SassString)
- _this.values.$indexSet(0, key.text, _this._box_0.convert.call$1(value));
- else
- throw H.wrapException(_this.$this._async_evaluate$_exception$2("Variable keyword argument map must have string keys.\n" + H.S(key) + " is not a string in " + _this.map.toString$0(0) + ".", _this.nodeWithSpan.get$span()));
- }
- };
- E._EvaluateVisitor__verifyArguments_closure0.prototype = {
- call$0: function() {
- return this.$arguments.verify$2(this.positional, new M.MapKeySet(this.named, [P.String]));
- }
- };
- E._EvaluateVisitor_visitStringExpression_closure0.prototype = {
- call$1: function(value) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.String),
- $async$returnValue, $async$self = this, t1, result;
- var $async$call$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if (typeof value === "string") {
- $async$returnValue = value;
- // goto return
- $async$goto = 1;
- break;
- }
- H.interceptedTypeCast(value, "$isExpression");
- t1 = $async$self.$this;
- $async$goto = 3;
- return P._asyncAwait(value.accept$1(t1), $async$call$1);
- case 3:
- // returning from await.
- result = $async$result;
- $async$returnValue = result instanceof D.SassString ? result.text : t1._async_evaluate$_serialize$3$quote(result, value, false);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$1, $async$completer);
- },
- $signature: 33
- };
- E._EvaluateVisitor_visitCssAtRule_closure1.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node.children, t1 = new H.ListIterator(t1, t1.get$length(t1)), t2 = $async$self.$this;
- case 2:
- // for condition
- if (!t1.moveNext$0()) {
- // goto after for
- $async$goto = 3;
- break;
- }
- $async$goto = 4;
- return P._asyncAwait(t1.__internal$_current.accept$1(t2), $async$call$0);
- case 4:
- // returning from await.
- // goto for condition
- $async$goto = 2;
- break;
- case 3:
- // after for
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitCssAtRule_closure2.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- E._EvaluateVisitor_visitCssKeyframeBlock_closure1.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node.children, t1 = new H.ListIterator(t1, t1.get$length(t1)), t2 = $async$self.$this;
- case 2:
- // for condition
- if (!t1.moveNext$0()) {
- // goto after for
- $async$goto = 3;
- break;
- }
- $async$goto = 4;
- return P._asyncAwait(t1.__internal$_current.accept$1(t2), $async$call$0);
- case 4:
- // returning from await.
- // goto for condition
- $async$goto = 2;
- break;
- case 3:
- // after for
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitCssKeyframeBlock_closure2.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- E._EvaluateVisitor_visitCssMediaRule_closure1.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- t2 = $async$self.mergedQueries;
- if (t2 == null)
- t2 = $async$self.node.queries;
- $async$goto = 2;
- return P._asyncAwait(t1._async_evaluate$_withMediaQueries$1$2(t2, new E._EvaluateVisitor_visitCssMediaRule__closure0(t1, $async$self.node), P.Null), $async$call$0);
- case 2:
- // returning from await.
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitCssMediaRule__closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- t2 = t1._async_evaluate$_styleRule;
- $async$goto = !(t2 != null && !t1._async_evaluate$_atRootExcludingStyleRule) ? 2 : 4;
- break;
- case 2:
- // then
- t2 = $async$self.node.children, t2 = new H.ListIterator(t2, t2.get$length(t2));
- case 5:
- // for condition
- if (!t2.moveNext$0()) {
- // goto after for
- $async$goto = 6;
- break;
- }
- $async$goto = 7;
- return P._asyncAwait(t2.__internal$_current.accept$1(t1), $async$call$0);
- case 7:
- // returning from await.
- // goto for condition
- $async$goto = 5;
- break;
- case 6:
- // after for
- // goto join
- $async$goto = 3;
- break;
- case 4:
- // else
- $async$goto = 8;
- return P._asyncAwait(t1._async_evaluate$_withParent$2$3$scopeWhen(X.ModifiableCssStyleRule$(t2.selector, t2.span, t2.originalSelector), new E._EvaluateVisitor_visitCssMediaRule___closure0(t1, $async$self.node), false, X.ModifiableCssStyleRule, P.Null), $async$call$0);
- case 8:
- // returning from await.
- case 3:
- // join
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitCssMediaRule___closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node.children, t1 = new H.ListIterator(t1, t1.get$length(t1)), t2 = $async$self.$this;
- case 2:
- // for condition
- if (!t1.moveNext$0()) {
- // goto after for
- $async$goto = 3;
- break;
- }
- $async$goto = 4;
- return P._asyncAwait(t1.__internal$_current.accept$1(t2), $async$call$0);
- case 4:
- // returning from await.
- // goto for condition
- $async$goto = 2;
- break;
- case 3:
- // after for
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitCssMediaRule_closure2.prototype = {
- call$1: function(node) {
- var t1 = J.getInterceptor$(node);
- if (!t1.$isCssStyleRule)
- t1 = this.mergedQueries != null && !!t1.$isCssMediaRule;
- else
- t1 = true;
- return t1;
- }
- };
- E._EvaluateVisitor_visitCssStyleRule_closure1.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- $async$goto = 2;
- return P._asyncAwait(t1._async_evaluate$_withStyleRule$1$2($async$self.rule, new E._EvaluateVisitor_visitCssStyleRule__closure0(t1, $async$self.node), P.Null), $async$call$0);
- case 2:
- // returning from await.
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitCssStyleRule__closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node.children, t1 = new H.ListIterator(t1, t1.get$length(t1)), t2 = $async$self.$this;
- case 2:
- // for condition
- if (!t1.moveNext$0()) {
- // goto after for
- $async$goto = 3;
- break;
- }
- $async$goto = 4;
- return P._asyncAwait(t1.__internal$_current.accept$1(t2), $async$call$0);
- case 4:
- // returning from await.
- // goto for condition
- $async$goto = 2;
- break;
- case 3:
- // after for
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitCssStyleRule_closure2.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- E._EvaluateVisitor_visitCssSupportsRule_closure1.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.$this;
- t2 = t1._async_evaluate$_styleRule;
- $async$goto = !(t2 != null && !t1._async_evaluate$_atRootExcludingStyleRule) ? 2 : 4;
- break;
- case 2:
- // then
- t2 = $async$self.node.children, t2 = new H.ListIterator(t2, t2.get$length(t2));
- case 5:
- // for condition
- if (!t2.moveNext$0()) {
- // goto after for
- $async$goto = 6;
- break;
- }
- $async$goto = 7;
- return P._asyncAwait(t2.__internal$_current.accept$1(t1), $async$call$0);
- case 7:
- // returning from await.
- // goto for condition
- $async$goto = 5;
- break;
- case 6:
- // after for
- // goto join
- $async$goto = 3;
- break;
- case 4:
- // else
- $async$goto = 8;
- return P._asyncAwait(t1._async_evaluate$_withParent$2$2(X.ModifiableCssStyleRule$(t2.selector, t2.span, t2.originalSelector), new E._EvaluateVisitor_visitCssSupportsRule__closure0(t1, $async$self.node), X.ModifiableCssStyleRule, P.Null), $async$call$0);
- case 8:
- // returning from await.
- case 3:
- // join
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitCssSupportsRule__closure0.prototype = {
- call$0: function() {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.Null),
- $async$self = this, t1, t2;
- var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- t1 = $async$self.node.children, t1 = new H.ListIterator(t1, t1.get$length(t1)), t2 = $async$self.$this;
- case 2:
- // for condition
- if (!t1.moveNext$0()) {
- // goto after for
- $async$goto = 3;
- break;
- }
- $async$goto = 4;
- return P._asyncAwait(t1.__internal$_current.accept$1(t2), $async$call$0);
- case 4:
- // returning from await.
- // goto for condition
- $async$goto = 2;
- break;
- case 3:
- // after for
- // implicit return
- return P._asyncReturn(null, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$0, $async$completer);
- }
- };
- E._EvaluateVisitor_visitCssSupportsRule_closure2.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- E._EvaluateVisitor__performInterpolation_closure0.prototype = {
- call$1: function(value) {
- var $async$goto = 0,
- $async$completer = P._makeAsyncAwaitCompleter(P.String),
- $async$returnValue, $async$self = this, t1, result, t2, t3;
- var $async$call$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
- if ($async$errorCode === 1)
- return P._asyncRethrow($async$result, $async$completer);
- while (true)
- switch ($async$goto) {
- case 0:
- // Function start
- if (typeof value === "string") {
- $async$returnValue = value;
- // goto return
- $async$goto = 1;
- break;
- }
- H.interceptedTypeCast(value, "$isExpression");
- t1 = $async$self.$this;
- $async$goto = 3;
- return P._asyncAwait(value.accept$1(t1), $async$call$1);
- case 3:
- // returning from await.
- result = $async$result;
- if ($async$self.warnForColor && result instanceof K.SassColor && $.$get$namesByColor().containsKey$1(result)) {
- t2 = X.Interpolation$(H.setRuntimeTypeInfo([""], [P.Object]), null);
- t3 = $.$get$namesByColor();
- t1._async_evaluate$_warn$2("You probably don't mean to use the color value " + H.S(t3.$index(0, result)) + " in interpolation here.\nIt may end up represented as " + H.S(result) + ', which will likely produce invalid CSS.\nAlways quote color names when using them as strings or map keys (for example, "' + H.S(t3.$index(0, result)) + "\").\nIf you really want to use the color value here, use '" + new V.BinaryOperationExpression(C.BinaryOperator_AcR, new D.StringExpression(t2, true), value, false).toString$0(0) + "'.", value.get$span());
- }
- $async$returnValue = t1._async_evaluate$_serialize$3$quote(result, value, false);
- // goto return
- $async$goto = 1;
- break;
- case 1:
- // return
- return P._asyncReturn($async$returnValue, $async$completer);
- }
- });
- return P._asyncStartSync($async$call$1, $async$completer);
- },
- $signature: 33
- };
- E._EvaluateVisitor__serialize_closure0.prototype = {
- call$0: function() {
- var t1 = this.value;
- t1.toString;
- return N.serializeValue(t1, false, this.quote);
- }
- };
- E._EvaluateVisitor__stackTrace_closure0.prototype = {
- call$1: function(tuple) {
- return this.$this._async_evaluate$_stackFrame$2(tuple.item1, tuple.item2.get$span());
- }
- };
- E._ImportedCssVisitor0.prototype = {
- visitCssAtRule$1: function(node) {
- var t1 = node.isChildless ? null : new E._ImportedCssVisitor_visitCssAtRule_closure0();
- this._async_evaluate$_visitor._async_evaluate$_addChild$2$through(node, t1);
- },
- visitCssComment$1: function(node) {
- return this._async_evaluate$_visitor._async_evaluate$_addChild$1(node);
- },
- visitCssDeclaration$1: function(node) {
- },
- visitCssImport$1: function(node) {
- var t1 = this._async_evaluate$_visitor,
- t2 = t1._async_evaluate$_parent,
- t3 = t1._async_evaluate$_root;
- if (t2 != t3)
- t1._async_evaluate$_addChild$1(node);
- else if (t1._async_evaluate$_endOfImports === J.get$length$asx(t3.children._collection$_source)) {
- t1._async_evaluate$_addChild$1(node);
- t1._async_evaluate$_endOfImports = t1._async_evaluate$_endOfImports + 1;
- } else {
- t2 = t1._async_evaluate$_outOfOrderImports;
- (t2 == null ? t1._async_evaluate$_outOfOrderImports = H.setRuntimeTypeInfo([], [F.ModifiableCssImport]) : t2).push(node);
- }
- },
- visitCssKeyframeBlock$1: function(node) {
- },
- visitCssMediaRule$1: function(node) {
- var t1 = this._async_evaluate$_visitor,
- t2 = t1._async_evaluate$_mediaQueries;
- t1._async_evaluate$_addChild$2$through(node, new E._ImportedCssVisitor_visitCssMediaRule_closure0(t2 == null || t1._async_evaluate$_mergeMediaQueries$2(t2, node.queries) != null));
- },
- visitCssStyleRule$1: function(node) {
- return this._async_evaluate$_visitor._async_evaluate$_addChild$2$through(node, new E._ImportedCssVisitor_visitCssStyleRule_closure0());
- },
- visitCssStylesheet$1: function(node) {
- var t1;
- for (t1 = node.children, t1 = new H.ListIterator(t1, t1.get$length(t1)); t1.moveNext$0();)
- t1.__internal$_current.accept$1(this);
- },
- visitCssSupportsRule$1: function(node) {
- return this._async_evaluate$_visitor._async_evaluate$_addChild$2$through(node, new E._ImportedCssVisitor_visitCssSupportsRule_closure0());
- }
- };
- E._ImportedCssVisitor_visitCssAtRule_closure0.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- E._ImportedCssVisitor_visitCssMediaRule_closure0.prototype = {
- call$1: function(node) {
- var t1 = J.getInterceptor$(node);
- if (!t1.$isCssStyleRule)
- t1 = this.hasBeenMerged && !!t1.$isCssMediaRule;
- else
- t1 = true;
- return t1;
- }
- };
- E._ImportedCssVisitor_visitCssStyleRule_closure0.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- E._ImportedCssVisitor_visitCssSupportsRule_closure0.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- E.EvaluateResult.prototype = {};
- E._ArgumentResults0.prototype = {};
- V._CloneCssVisitor.prototype = {
- visitCssAtRule$1: function(node) {
- var t1 = node.isChildless,
- t2 = B.ModifiableCssNode,
- t3 = H.setRuntimeTypeInfo([], [t2]),
- rule = new U.ModifiableCssAtRule(node.name, node.value, t1, node.span, new P.UnmodifiableListView(t3, [t2]), t3);
- return t1 ? rule : this._visitChildren$2(rule, node);
- },
- visitCssComment$1: function(node) {
- return new R.ModifiableCssComment(node.text, node.span);
- },
- visitCssDeclaration$1: function(node) {
- return L.ModifiableCssDeclaration$(node.name, node.value, node.span, node.valueSpanForMap);
- },
- visitCssImport$1: function(node) {
- return F.ModifiableCssImport$(node.url, node.span, node.media, node.supports);
- },
- visitCssKeyframeBlock$1: function(node) {
- var t1 = B.ModifiableCssNode,
- t2 = H.setRuntimeTypeInfo([], [t1]);
- return this._visitChildren$2(new U.ModifiableCssKeyframeBlock(node.selector, node.span, new P.UnmodifiableListView(t2, [t1]), t2), node);
- },
- visitCssMediaRule$1: function(node) {
- return this._visitChildren$2(G.ModifiableCssMediaRule$(node.queries, node.span), node);
- },
- visitCssStyleRule$1: function(node) {
- var newSelector = this._oldToNewSelectors.$index(0, node.selector);
- if (newSelector == null)
- throw H.wrapException(P.StateError$("The Extender and CssStylesheet passed to cloneCssStylesheet() must come from the same compilation."));
- return this._visitChildren$2(X.ModifiableCssStyleRule$(newSelector, node.span, node.originalSelector), node);
- },
- visitCssStylesheet$1: function(node) {
- var t1 = node.get$span(),
- t2 = B.ModifiableCssNode,
- t3 = H.setRuntimeTypeInfo([], [t2]);
- return this._visitChildren$2(new V.ModifiableCssStylesheet(t1, new P.UnmodifiableListView(t3, [t2]), t3), node);
- },
- visitCssSupportsRule$1: function(node) {
- var t1 = B.ModifiableCssNode,
- t2 = H.setRuntimeTypeInfo([], [t1]);
- return this._visitChildren$2(new B.ModifiableCssSupportsRule(node.condition, node.span, new P.UnmodifiableListView(t2, [t1]), t2), node);
- },
- _visitChildren$1$2: function(newParent, oldParent) {
- var t1, t2, newChild;
- for (t1 = J.get$iterator$ax(oldParent.get$children()); t1.moveNext$0();) {
- t2 = t1.get$current(t1);
- newChild = t2.accept$1(this);
- newChild.isGroupEnd = t2.get$isGroupEnd();
- newParent.addChild$1(newChild);
- }
- return newParent;
- },
- _visitChildren$2: function(newParent, oldParent) {
- return this._visitChildren$1$2(newParent, oldParent, B.ModifiableCssParentNode);
- }
- };
- R.Evaluator.prototype = {};
- R._EvaluateVisitor.prototype = {
- _EvaluateVisitor$5$functions$importCache$logger$nodeImporter$sourceMap: function(functions, importCache, logger, nodeImporter, sourceMap) {
- var t6, t7, t8, t9, t10, t11, t12, t13, metaFunctions, metaMixins, _i, metaModule, module, $function, _this = this,
- _s9_ = "sass:meta",
- t1 = P.String,
- t2 = Z.VariableDeclaration,
- t3 = S.SpanScanner$("@function global-variable-exists($name, $module: null) {", _s9_),
- t4 = [B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}],
- t5 = [[S.Tuple2, B.ArgumentDeclaration, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}]];
- t3 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t3, C.StderrLogger_false).parseArgumentDeclaration$0(), new R._EvaluateVisitor_closure(_this), t4)], t5);
- t6 = S.SpanScanner$("@function variable-exists($name) {", _s9_);
- t6 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t6, C.StderrLogger_false).parseArgumentDeclaration$0(), new R._EvaluateVisitor_closure0(_this), t4)], t5);
- t7 = S.SpanScanner$("@function function-exists($name, $module: null) {", _s9_);
- t7 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t7, C.StderrLogger_false).parseArgumentDeclaration$0(), new R._EvaluateVisitor_closure1(_this), t4)], t5);
- t8 = S.SpanScanner$("@function mixin-exists($name, $module: null) {", _s9_);
- t8 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t8, C.StderrLogger_false).parseArgumentDeclaration$0(), new R._EvaluateVisitor_closure2(_this), t4)], t5);
- t9 = S.SpanScanner$("@function content-exists() {", _s9_);
- t9 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t9, C.StderrLogger_false).parseArgumentDeclaration$0(), new R._EvaluateVisitor_closure3(_this), t4)], t5);
- t10 = S.SpanScanner$("@function module-variables($module) {", _s9_);
- t10 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t10, C.StderrLogger_false).parseArgumentDeclaration$0(), new R._EvaluateVisitor_closure4(_this), t4)], t5);
- t11 = S.SpanScanner$("@function module-functions($module) {", _s9_);
- t11 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t11, C.StderrLogger_false).parseArgumentDeclaration$0(), new R._EvaluateVisitor_closure5(_this), t4)], t5);
- t12 = S.SpanScanner$("@function get-function($name, $css: false, $module: null) {", _s9_);
- t12 = H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t12, C.StderrLogger_false).parseArgumentDeclaration$0(), new R._EvaluateVisitor_closure6(_this), t4)], t5);
- t13 = S.SpanScanner$("@function call($function, $args...) {", _s9_);
- metaFunctions = [new Q.BuiltInCallable("global-variable-exists", t3), new Q.BuiltInCallable("variable-exists", t6), new Q.BuiltInCallable("function-exists", t7), new Q.BuiltInCallable("mixin-exists", t8), new Q.BuiltInCallable("content-exists", t9), new Q.BuiltInCallable("module-variables", t10), new Q.BuiltInCallable("module-functions", t11), new Q.BuiltInCallable("get-function", t12), new Q.BuiltInCallable("call", H.setRuntimeTypeInfo([new S.Tuple2(new L.ScssParser(P.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t13, C.StderrLogger_false).parseArgumentDeclaration$0(), new R._EvaluateVisitor_closure7(_this), t4)], t5))];
- t1 = Q.BuiltInCallable;
- t2 = [t1];
- metaMixins = H.setRuntimeTypeInfo([Q.BuiltInCallable$mixin("load-css", "$module, $with: null", new R._EvaluateVisitor_closure8(_this), _s9_)], t2);
- t2 = H.setRuntimeTypeInfo([], t2);
- for (t3 = $.$get$global(), t3 = new H.ListIterator(t3, t3.get$length(t3)); t3.moveNext$0();)
- t2.push(t3.__internal$_current);
- for (_i = 0; _i < 9; ++_i)
- t2.push(metaFunctions[_i]);
- metaModule = Q.BuiltInModule$("meta", t2, metaMixins, null, t1);
- t1 = H.setRuntimeTypeInfo([], [[Q.BuiltInModule, Q.BuiltInCallable]]);
- for (t2 = $.$get$coreModules(), t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();)
- t1.push(t2.__internal$_current);
- t1.push(metaModule);
- t2 = t1.length;
- t3 = _this._builtInModules;
- _i = 0;
- for (; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- module = t1[_i];
- t3.$indexSet(0, module.url, module);
- }
- t1 = H.setRuntimeTypeInfo([], [D.Callable]);
- if (functions != null)
- for (t2 = new H.ListIterator(functions, functions.get$length(functions)); t2.moveNext$0();)
- t1.push(t2.__internal$_current);
- for (t2 = $.$get$globalFunctions(), t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();)
- t1.push(t2.__internal$_current);
- for (_i = 0; _i < 9; ++_i)
- t1.push(metaFunctions[_i]);
- for (t2 = t1.length, t3 = _this._builtInFunctions, _i = 0; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- $function = t1[_i];
- t4 = $function.get$name();
- t4.toString;
- t3.$indexSet(0, H.stringReplaceAllUnchecked(t4, "_", "-"), $function);
- }
- },
- run$2: function(_, importer, node) {
- return this._withWarnCallback$1(new R._EvaluateVisitor_run_closure(this, node, importer));
- },
- runExpression$2: function(importer, expression) {
- return this._withWarnCallback$1(new R._EvaluateVisitor_runExpression_closure(this, importer, expression));
- },
- runStatement$2: function(importer, statement) {
- return this._withWarnCallback$1(new R._EvaluateVisitor_runStatement_closure(this, importer, statement));
- },
- _withWarnCallback$1$1: function(callback) {
- return N.withWarnCallback(new R._EvaluateVisitor__withWarnCallback_closure(this), callback);
- },
- _withWarnCallback$1: function(callback) {
- return this._withWarnCallback$1$1(callback, null);
- },
- _withFakeStylesheet$1$3: function(importer, nodeWithSpan, callback) {
- var oldStylesheet, t1, _this = this,
- oldImporter = _this._importer;
- _this._importer = importer;
- oldStylesheet = _this._stylesheet;
- _this._stylesheet = V.Stylesheet$(C.List_empty16, nodeWithSpan.get$span(), false);
- try {
- t1 = callback.call$0();
- return t1;
- } finally {
- _this._importer = oldImporter;
- _this._stylesheet = oldStylesheet;
- }
- },
- _withFakeStylesheet$3: function(importer, nodeWithSpan, callback) {
- return this._withFakeStylesheet$1$3(importer, nodeWithSpan, callback, null);
- },
- _loadModule$7$baseUrl$configuration$namesInErrors: function(url, stackFrame, nodeWithSpan, callback, baseUrl, configuration, namesInErrors) {
- var t1, _this = this,
- builtInModule = _this._builtInModules.$index(0, url);
- if (builtInModule != null) {
- if (configuration != null && !configuration.isImplicit) {
- t1 = namesInErrors ? "Built-in module " + H.S(url) + " can't be configured." : "Built-in modules can't be configured.";
- throw H.wrapException(_this._evaluate$_exception$2(t1, nodeWithSpan.get$span()));
- }
- callback.call$1(builtInModule);
- return;
- }
- _this._withStackFrame$3(stackFrame, nodeWithSpan, new R._EvaluateVisitor__loadModule_closure(_this, url, nodeWithSpan, baseUrl, namesInErrors, configuration, callback));
- },
- _loadModule$5$configuration: function(url, stackFrame, nodeWithSpan, callback, configuration) {
- return this._loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, null, configuration, false);
- },
- _loadModule$4: function(url, stackFrame, nodeWithSpan, callback) {
- return this._loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, null, null, false);
- },
- _execute$5$configuration$namesInErrors$nodeWithSpan: function(importer, stylesheet, configuration, namesInErrors, nodeWithSpan) {
- var message, existingNode, environment, t3, extender, module, _this = this, t1 = {},
- url = stylesheet.span.file.url,
- t2 = _this._modules,
- alreadyLoaded = t2.$index(0, url);
- if (alreadyLoaded != null) {
- t1 = configuration == null;
- if (!(t1 ? _this._configuration : configuration).isImplicit) {
- message = namesInErrors ? H.S($.$get$context().prettyUri$1(url)) + ' was already loaded, so it can\'t be configured using "with".' : 'This module was already loaded, so it can\'t be configured using "with".';
- existingNode = _this._moduleNodes.$index(0, url);
- t2 = P.LinkedHashMap_LinkedHashMap$_empty(Y.FileSpan, P.String);
- if (existingNode != null)
- t2.$indexSet(0, existingNode.get$span(), "original load");
- if (t1)
- t2.$indexSet(0, _this._configuration.nodeWithSpan.get$span(), "configuration");
- throw H.wrapException(t2.get$isEmpty(t2) ? _this._evaluate$_exception$1(message) : _this._multiSpanException$3(message, "new load", t2));
- }
- return alreadyLoaded;
- }
- environment = O.Environment$(_this._sourceMap);
- t1.css = null;
- t3 = M.SimpleSelector;
- extender = new F.Extender(P.LinkedHashMap_LinkedHashMap$_empty(t3, [P.Set, [F.ModifiableCssValue, D.SelectorList]]), P.LinkedHashMap_LinkedHashMap$_empty(t3, [P.Map, S.ComplexSelector, S.Extension]), P.LinkedHashMap_LinkedHashMap$_empty(t3, [P.List, S.Extension]), P.LinkedHashMap_LinkedHashMap$_empty([F.ModifiableCssValue, D.SelectorList], [P.List, F.CssMediaQuery]), P._LinkedIdentityHashMap__LinkedIdentityHashMap$es6(t3, P.int), new P._LinkedIdentityHashSet([S.ComplexSelector]), C.ExtendMode_normal);
- _this._withEnvironment$2(environment, new R._EvaluateVisitor__execute_closure(t1, _this, importer, stylesheet, extender, configuration));
- module = O._EnvironmentModule__EnvironmentModule(environment, t1.css, extender, environment._forwardedModules);
- t2.$indexSet(0, url, module);
- _this._moduleNodes.$indexSet(0, url, nodeWithSpan);
- return module;
- },
- _execute$2: function(importer, stylesheet) {
- return this._execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, null, false, null);
- },
- _addOutOfOrderImports$0: function() {
- var t1, t2, statements, _this = this;
- if (_this._outOfOrderImports == null)
- return _this._root.children;
- t1 = B.ModifiableCssNode;
- t2 = new Array(J.get$length$asx(_this._root.children._collection$_source) + _this._outOfOrderImports.length);
- t2.fixed$length = Array;
- statements = new G.FixedLengthListBuilder(H.setRuntimeTypeInfo(t2, [t1]), [t1]);
- statements.addRange$3(_this._root.children, 0, _this._endOfImports);
- statements.addAll$1(0, _this._outOfOrderImports);
- statements.addRange$2(_this._root.children, _this._endOfImports);
- return statements.build$0();
- },
- _combineCss$2$clone: function(root, clone) {
- var selectors, unsatisfiedExtension, sortedModules, t1, t2, imports, css, t3, statements, index, _this = this;
- if (!C.JSArray_methods.any$1(root.get$upstream(), new R._EvaluateVisitor__combineCss_closure())) {
- selectors = root.get$extender().get$simpleSelectors();
- unsatisfiedExtension = B.firstOrNull(root.get$extender().extensionsWhereTarget$1(new R._EvaluateVisitor__combineCss_closure0(selectors)));
- if (unsatisfiedExtension != null)
- _this._throwForUnsatisfiedExtension$1(unsatisfiedExtension);
- return root.get$css(root);
- }
- sortedModules = _this._topologicalModules$1(root);
- if (clone)
- sortedModules = new H.MappedListIterable(sortedModules, new R._EvaluateVisitor__combineCss_closure1(), [H.getTypeArgumentByIndex(sortedModules, 0), [G.Module, D.Callable]]).toList$0(0);
- _this._extendModules$1(sortedModules);
- t1 = B.CssNode;
- t2 = [t1];
- imports = H.setRuntimeTypeInfo([], t2);
- css = H.setRuntimeTypeInfo([], t2);
- for (t2 = J.get$reversed$ax(sortedModules), t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();) {
- t3 = t2.__internal$_current;
- statements = t3.get$css(t3).get$children();
- index = _this._indexAfterImports$1(statements);
- t3 = J.getInterceptor$ax(statements);
- C.JSArray_methods.addAll$1(imports, t3.getRange$2(statements, 0, index));
- C.JSArray_methods.addAll$1(css, t3.getRange$2(statements, index, t3.get$length(statements)));
- }
- return new V.CssStylesheet(new P.UnmodifiableListView(C.JSArray_methods.$add(imports, css), [t1]), root.get$css(root).get$span());
- },
- _combineCss$1: function(root) {
- return this._combineCss$2$clone(root, false);
- },
- _extendModules$1: function(sortedModules) {
- var t1, t2, originalSelectors, extenders, t3, t4, _i,
- downstreamExtenders = P.LinkedHashMap_LinkedHashMap$_empty(P.Uri, [P.List, F.Extender]),
- unsatisfiedExtensions = new P._LinkedIdentityHashSet([S.Extension]);
- for (t1 = J.get$iterator$ax(sortedModules); t1.moveNext$0();) {
- t2 = t1.get$current(t1);
- originalSelectors = t2.get$extender().get$simpleSelectors().toSet$0(0);
- unsatisfiedExtensions.addAll$1(0, t2.get$extender().extensionsWhereTarget$1(new R._EvaluateVisitor__extendModules_closure(originalSelectors)));
- extenders = downstreamExtenders.$index(0, t2.get$url());
- if (extenders != null)
- t2.get$extender().addExtensions$1(extenders);
- t3 = t2.get$extender();
- if (t3.get$isEmpty(t3))
- continue;
- for (t3 = t2.get$upstream(), t4 = t3.length, _i = 0; _i < t3.length; t3.length === t4 || (0, H.throwConcurrentModificationError)(t3), ++_i)
- J.add$1$ax(downstreamExtenders.putIfAbsent$2(t3[_i].get$url(), new R._EvaluateVisitor__extendModules_closure0()), t2.get$extender());
- unsatisfiedExtensions.removeAll$1(t2.get$extender().extensionsWhereTarget$1(originalSelectors.get$contains(originalSelectors)));
- }
- if (unsatisfiedExtensions._collection$_length !== 0)
- this._throwForUnsatisfiedExtension$1(unsatisfiedExtensions.get$first(unsatisfiedExtensions));
- },
- _throwForUnsatisfiedExtension$1: function(extension) {
- throw H.wrapException(E.SassException$('The target selector was not found.\nUse "@extend ' + H.S(extension.target) + ' !optional" to avoid this error.', extension.span));
- },
- _topologicalModules$1: function(root) {
- var t1 = [G.Module, D.Callable],
- sorted = Q.QueueList$(null, t1);
- new R._EvaluateVisitor__topologicalModules_visitModule(P.LinkedHashSet_LinkedHashSet$_empty(t1), sorted).call$1(root);
- return sorted;
- },
- _indexAfterImports$1: function(statements) {
- var t1, lastImport, i, t2;
- for (t1 = J.getInterceptor$asx(statements), lastImport = -1, i = 0; i < t1.get$length(statements); ++i) {
- t2 = J.getInterceptor$(t1.$index(statements, i));
- if (!!t2.$isCssImport)
- lastImport = i;
- else if (!t2.$isCssComment)
- break;
- }
- return lastImport + 1;
- },
- visitStylesheet$1: function(node) {
- var t1, t2, _i;
- for (t1 = node.children, t2 = t1.length, _i = 0; _i < t2; ++_i)
- t1[_i].accept$1(this);
- return;
- },
- visitAtRootRule$1: function(node) {
- var root, innerCopy, outerCopy, copy, _this = this,
- t1 = node.query,
- query = t1 != null ? _this._adjustParseError$2(t1, new R._EvaluateVisitor_visitAtRootRule_closure(_this, _this._performInterpolation$2$warnForColor(t1, true))) : C.AtRootQuery_UsS,
- $parent = _this._evaluate$_parent,
- included = H.setRuntimeTypeInfo([], [B.ModifiableCssParentNode]);
- for (; !J.getInterceptor$($parent).$isCssStylesheet;) {
- if (!query.excludes$1($parent))
- included.push($parent);
- $parent = $parent._parent;
- }
- root = _this._trimIncluded$1(included);
- if (root == _this._evaluate$_parent) {
- _this._evaluate$_environment.scope$1$2$when(new R._EvaluateVisitor_visitAtRootRule_closure0(_this, node), node.hasDeclarations, P.Null);
- return;
- }
- innerCopy = included.length === 0 ? null : C.JSArray_methods.get$first(included).copyWithoutChildren$0();
- for (t1 = H.SubListIterable$(included, 1, null, H.getTypeArgumentByIndex(included, 0)), t1 = new H.ListIterator(t1, t1.get$length(t1)), outerCopy = innerCopy; t1.moveNext$0(); outerCopy = copy) {
- copy = t1.__internal$_current.copyWithoutChildren$0();
- copy.addChild$1(outerCopy);
- }
- if (outerCopy != null)
- root.addChild$1(outerCopy);
- _this._scopeForAtRoot$4(node, innerCopy == null ? root : innerCopy, query, included).call$1(new R._EvaluateVisitor_visitAtRootRule_closure1(_this, node));
- return;
- },
- _trimIncluded$1: function(nodes) {
- var $parent, innermostContiguous, i, t2, root,
- t1 = nodes.length;
- if (t1 === 0)
- return this._root;
- $parent = this._evaluate$_parent;
- for (innermostContiguous = null, i = 0; i < t1; ++i) {
- for (; $parent != nodes[i]; innermostContiguous = null)
- $parent = $parent._parent;
- if (innermostContiguous == null)
- innermostContiguous = i;
- $parent = $parent._parent;
- }
- t2 = this._root;
- if ($parent != t2)
- return t2;
- root = nodes[innermostContiguous];
- C.JSArray_methods.removeRange$2(nodes, innermostContiguous, t1);
- return root;
- },
- _scopeForAtRoot$4: function(node, newParent, query, included) {
- var _this = this,
- scope = new R._EvaluateVisitor__scopeForAtRoot_closure(_this, newParent, node),
- t1 = query._all,
- t2 = t1 || query._at_root_query$_rule,
- t3 = query.include;
- if (t2 !== t3)
- scope = new R._EvaluateVisitor__scopeForAtRoot_closure0(_this, scope);
- if (t1 ? !t3 : query.names.contains$1(0, "media") !== t3)
- scope = new R._EvaluateVisitor__scopeForAtRoot_closure1(_this, scope);
- if (_this._inKeyframes && query.names.contains$1(0, "keyframes") !== t3)
- scope = new R._EvaluateVisitor__scopeForAtRoot_closure2(_this, scope);
- return _this._inUnknownAtRule && !C.JSArray_methods.any$1(included, new R._EvaluateVisitor__scopeForAtRoot_closure3()) ? new R._EvaluateVisitor__scopeForAtRoot_closure4(_this, scope) : scope;
- },
- visitContentBlock$1: function(node) {
- return H.throwExpression(P.UnsupportedError$("Evaluation handles @include and its content block together."));
- },
- visitContentRule$1: function(node) {
- var $content = this._evaluate$_environment._content;
- if ($content == null)
- return;
- this._runUserDefinedCallable$4(node.$arguments, $content, node, new R._EvaluateVisitor_visitContentRule_closure(this, $content));
- return;
- },
- visitDebugRule$1: function(node) {
- var value = node.expression.accept$1(this),
- t1 = J.getInterceptor$(value);
- t1 = !!t1.$isSassString ? value.text : t1.toString$0(value);
- this._logger.debug$2(t1, node.span);
- return;
- },
- visitDeclaration$1: function(node) {
- var $name, t1, cssValue, t2, oldDeclarationName, _this = this;
- if (!(_this._styleRule != null && !_this._atRootExcludingStyleRule) && !_this._inUnknownAtRule && !_this._inKeyframes)
- throw H.wrapException(_this._evaluate$_exception$2("Declarations may only be used within style rules.", node.span));
- $name = _this._interpolationToValue$2$warnForColor(node.name, true);
- t1 = _this._declarationName;
- if (t1 != null)
- $name = new F.CssValue(t1 + "-" + H.S($name.value), $name.span, [P.String]);
- t1 = node.value;
- cssValue = t1 == null ? null : new F.CssValue(t1.accept$1(_this), t1.get$span(), [F.Value]);
- if (cssValue != null) {
- t2 = cssValue.value;
- t2 = !t2.get$isBlank() || t2.get$asList().length === 0;
- } else
- t2 = false;
- if (t2) {
- t2 = _this._evaluate$_parent;
- t1 = _this._expressionNode$1(t1);
- t1 = t1 == null ? null : t1.get$span();
- t2.addChild$1(L.ModifiableCssDeclaration$($name, cssValue, node.span, t1));
- } else if (J.startsWith$1$s($name.value, "--"))
- throw H.wrapException(_this._evaluate$_exception$2("Custom property values may not be empty.", t1.get$span()));
- if (node.children != null) {
- oldDeclarationName = _this._declarationName;
- _this._declarationName = $name.value;
- _this._evaluate$_environment.scope$1$2$when(new R._EvaluateVisitor_visitDeclaration_closure(_this, node), node.hasDeclarations, P.Null);
- _this._declarationName = oldDeclarationName;
- }
- return;
- },
- visitEachRule$1: function(node) {
- var _this = this,
- t1 = node.list,
- list = t1.accept$1(_this),
- nodeWithSpan = _this._expressionNode$1(t1),
- setVariables = node.variables.length === 1 ? new R._EvaluateVisitor_visitEachRule_closure(_this, node, nodeWithSpan) : new R._EvaluateVisitor_visitEachRule_closure0(_this, node, nodeWithSpan);
- return _this._evaluate$_environment.scope$1$2$semiGlobal(new R._EvaluateVisitor_visitEachRule_closure1(_this, list, setVariables, node), true, F.Value);
- },
- _setMultipleVariables$3: function(variables, value, nodeWithSpan) {
- var i,
- list = value.get$asList(),
- t1 = variables.length,
- minLength = Math.min(t1, list.length);
- for (i = 0; i < minLength; ++i)
- this._evaluate$_environment.setLocalVariable$3(variables[i], list[i].withoutSlash$0(), nodeWithSpan);
- for (i = minLength; i < t1; ++i)
- this._evaluate$_environment.setLocalVariable$3(variables[i], C.C_SassNull, nodeWithSpan);
- },
- visitErrorRule$1: function(node) {
- throw H.wrapException(this._evaluate$_exception$2(J.toString$0$(node.expression.accept$1(this)), node.span));
- },
- visitExtendRule$1: function(node) {
- var targetText, t1, t2, _i, t3, _this = this;
- if (!(_this._styleRule != null && !_this._atRootExcludingStyleRule) || _this._declarationName != null)
- throw H.wrapException(_this._evaluate$_exception$2("@extend may only be used within style rules.", node.span));
- targetText = _this._interpolationToValue$2$warnForColor(node.selector, true);
- for (t1 = _this._adjustParseError$2(targetText, new R._EvaluateVisitor_visitExtendRule_closure(_this, targetText)).components, t2 = t1.length, _i = 0; _i < t2; ++_i) {
- t3 = t1[_i].components;
- if (t3.length !== 1 || !(C.JSArray_methods.get$first(t3) instanceof X.CompoundSelector))
- throw H.wrapException(E.SassFormatException$("complex selectors may not be extended.", targetText.span));
- t3 = H.interceptedTypeCast(C.JSArray_methods.get$first(t3), "$isCompoundSelector").components;
- if (t3.length !== 1)
- throw H.wrapException(E.SassFormatException$("compound selectors may no longer be extended.\nConsider `@extend " + C.JSArray_methods.join$1(t3, ", ") + "` instead.\nSee http://bit.ly/ExtendCompound for details.\n", targetText.span));
- _this._extender.addExtension$4(_this._styleRule.selector, C.JSArray_methods.get$first(t3), node, _this._mediaQueries);
- }
- return;
- },
- visitAtRule$1: function(node) {
- var $name, t1, value, t2, t3, wasInKeyframes, wasInUnknownAtRule, _this = this;
- if (_this._declarationName != null)
- throw H.wrapException(_this._evaluate$_exception$2("At-rules may not be used within nested declarations.", node.span));
- $name = _this._interpolationToValue$1(node.name);
- t1 = node.value;
- value = t1 == null ? null : _this._interpolationToValue$3$trim$warnForColor(t1, true, true);
- if (node.children == null) {
- t1 = _this._evaluate$_parent;
- t2 = B.ModifiableCssNode;
- t3 = H.setRuntimeTypeInfo([], [t2]);
- t1.addChild$1(new U.ModifiableCssAtRule($name, value, true, node.span, new P.UnmodifiableListView(t3, [t2]), t3));
- return;
- }
- wasInKeyframes = _this._inKeyframes;
- wasInUnknownAtRule = _this._inUnknownAtRule;
- if (B.unvendor($name.value) === "keyframes")
- _this._inKeyframes = true;
- else
- _this._inUnknownAtRule = true;
- t1 = B.ModifiableCssNode;
- t2 = H.setRuntimeTypeInfo([], [t1]);
- _this._withParent$2$4$scopeWhen$through(new U.ModifiableCssAtRule($name, value, false, node.span, new P.UnmodifiableListView(t2, [t1]), t2), new R._EvaluateVisitor_visitAtRule_closure(_this, node), node.hasDeclarations, new R._EvaluateVisitor_visitAtRule_closure0(), U.ModifiableCssAtRule, P.Null);
- _this._inUnknownAtRule = wasInUnknownAtRule;
- _this._inKeyframes = wasInKeyframes;
- return;
- },
- visitForRule$1: function(node) {
- var _this = this, t1 = {},
- t2 = node.from,
- fromNumber = _this._addExceptionSpan$2(t2, new R._EvaluateVisitor_visitForRule_closure(_this, node)),
- t3 = node.to,
- toNumber = _this._addExceptionSpan$2(t3, new R._EvaluateVisitor_visitForRule_closure0(_this, node)),
- from = _this._addExceptionSpan$2(t2, new R._EvaluateVisitor_visitForRule_closure1(fromNumber, toNumber)),
- to = t1.to = _this._addExceptionSpan$2(t3, new R._EvaluateVisitor_visitForRule_closure2(toNumber)),
- direction = from > to ? -1 : 1;
- if (from === (!node.isExclusive ? t1.to = to + direction : to))
- return;
- return _this._evaluate$_environment.scope$1$2$semiGlobal(new R._EvaluateVisitor_visitForRule_closure3(t1, _this, node, from, direction), true, F.Value);
- },
- visitForwardRule$1: function(node) {
- var newConfiguration, t4, _i, variable, _this = this,
- _s8_ = "@forward",
- oldConfiguration = _this._configuration,
- adjustedConfiguration = oldConfiguration.throughForward$1(node),
- t1 = node.configuration,
- t2 = t1.length,
- t3 = node.url;
- if (t2 !== 0) {
- newConfiguration = _this._addForwardConfiguration$2(adjustedConfiguration, node);
- _this._loadModule$5$configuration(t3, _s8_, node, new R._EvaluateVisitor_visitForwardRule_closure(_this, node), newConfiguration);
- t3 = P.String;
- t4 = P.LinkedHashSet_LinkedHashSet(t3);
- for (_i = 0; _i < t2; ++_i) {
- variable = t1[_i];
- if (!variable.isGuarded)
- t4.add$1(0, variable.name);
- }
- _this._removeUsedConfiguration$3$except(adjustedConfiguration, newConfiguration, t4);
- t3 = P.LinkedHashSet_LinkedHashSet(t3);
- for (_i = 0; _i < t2; ++_i)
- t3.add$1(0, t1[_i].name);
- _this._assertConfigurationIsEmpty$2$only(newConfiguration, t3);
- } else {
- _this._configuration = adjustedConfiguration;
- _this._loadModule$4(t3, _s8_, node, new R._EvaluateVisitor_visitForwardRule_closure0(_this, node));
- _this._configuration = oldConfiguration;
- }
- return;
- },
- _addForwardConfiguration$2: function(configuration, node) {
- var _i, variable, t4, t5,
- t1 = configuration._values,
- t2 = P.String,
- t3 = Z.ConfiguredValue,
- newValues = P.LinkedHashMap_LinkedHashMap$of(new P.UnmodifiableMapView(t1, [t2, t3]), t2, t3);
- for (t2 = node.configuration, t3 = t2.length, _i = 0; _i < t3; ++_i) {
- variable = t2[_i];
- if (variable.isGuarded) {
- t4 = variable.name;
- t5 = t1.get$isEmpty(t1) ? null : t1.remove$1(0, t4);
- if (t5 != null && !J.$eq$(t5.value, C.C_SassNull)) {
- newValues.$indexSet(0, t4, t5);
- continue;
- }
- }
- t4 = variable.name;
- t5 = variable.expression;
- newValues.$indexSet(0, t4, new Z.ConfiguredValue(t5.accept$1(this).withoutSlash$0(), variable.span, this._expressionNode$1(t5)));
- }
- return new A.Configuration(newValues, node, false);
- },
- _removeUsedConfiguration$3$except: function(upstream, downstream, except) {
- var t1, t2, t3, t4, _i, $name;
- for (t1 = upstream._values, t2 = J.toList$0$ax(t1.get$keys()), t3 = t2.length, t4 = downstream._values, _i = 0; _i < t2.length; t2.length === t3 || (0, H.throwConcurrentModificationError)(t2), ++_i) {
- $name = t2[_i];
- if (except.contains$1(0, $name))
- continue;
- if (!t4.containsKey$1($name))
- if (!t1.get$isEmpty(t1))
- t1.remove$1(0, $name);
- }
- },
- _assertConfigurationIsEmpty$3$nameInError$only: function(configuration, nameInError, only) {
- configuration._values.forEach$1(0, new R._EvaluateVisitor__assertConfigurationIsEmpty_closure(this, only, nameInError));
- },
- _assertConfigurationIsEmpty$2$nameInError: function(configuration, nameInError) {
- return this._assertConfigurationIsEmpty$3$nameInError$only(configuration, nameInError, null);
- },
- _assertConfigurationIsEmpty$1: function(configuration) {
- return this._assertConfigurationIsEmpty$3$nameInError$only(configuration, false, null);
- },
- _assertConfigurationIsEmpty$2$only: function(configuration, only) {
- return this._assertConfigurationIsEmpty$3$nameInError$only(configuration, false, only);
- },
- visitFunctionRule$1: function(node) {
- var t1 = this._evaluate$_environment,
- t2 = t1.closure$0(),
- t3 = t1._functions,
- index = t3.length - 1,
- t4 = node.name;
- t1._functionIndices.$indexSet(0, t4, index);
- J.$indexSet$ax(t3[index], t4, new E.UserDefinedCallable(node, t2, [O.Environment]));
- return;
- },
- visitIfRule$1: function(node) {
- var t1, t2, _i, clauseToCheck, _box_0 = {};
- _box_0.clause = node.lastClause;
- for (t1 = node.clauses, t2 = t1.length, _i = 0; _i < t2; ++_i) {
- clauseToCheck = t1[_i];
- if (clauseToCheck.expression.accept$1(this).get$isTruthy()) {
- _box_0.clause = clauseToCheck;
- break;
- }
- }
- t1 = _box_0.clause;
- if (t1 == null)
- return;
- return this._evaluate$_environment.scope$1$3$semiGlobal$when(new R._EvaluateVisitor_visitIfRule_closure(_box_0, this), true, t1.hasDeclarations, F.Value);
- },
- visitImportRule$1: function(node) {
- var t1, t2, t3, t4, t5, _i, $import, t6, result, supports, t7, t8, resolvedSupports, mediaQuery, t9, result0, _this = this, _null = null;
- for (t1 = node.imports, t2 = t1.length, t3 = F.CssMediaQuery, t4 = [P.String], t5 = [F.ModifiableCssImport], _i = 0; _i < t2; ++_i) {
- $import = t1[_i];
- if ($import instanceof B.DynamicImport)
- _this._visitDynamicImport$1($import);
- else {
- H.interceptedTypeCast($import, "$isStaticImport");
- t6 = $import.url;
- result = _this._performInterpolation$2$warnForColor(t6, false);
- supports = $import.supports;
- if (supports instanceof L.SupportsDeclaration) {
- t7 = supports.name;
- t7 = H.S(_this._evaluate$_serialize$3$quote(t7.accept$1(_this), t7, true)) + ": ";
- t8 = supports.value;
- resolvedSupports = t7 + H.S(_this._evaluate$_serialize$3$quote(t8.accept$1(_this), t8, true));
- } else
- resolvedSupports = supports == null ? _null : _this._visitSupportsCondition$1(supports);
- t7 = $import.media;
- mediaQuery = t7 == null ? _null : _this._visitMediaQueries$1(t7);
- t7 = $import.span;
- t8 = resolvedSupports == null ? _null : new F.CssValue("supports(" + resolvedSupports + ")", supports.get$span(), t4);
- if (mediaQuery == null)
- t9 = _null;
- else {
- result0 = P.List_List$from(mediaQuery, false, t3);
- result0.fixed$length = Array;
- result0.immutable$list = Array;
- t9 = result0;
- }
- node = new F.ModifiableCssImport(new F.CssValue(result, t6.span, t4), t8, t9, t7);
- t6 = _this._evaluate$_parent;
- t7 = _this._root;
- if (t6 != t7)
- t6.addChild$1(node);
- else if (_this._endOfImports === J.get$length$asx(t7.children._collection$_source)) {
- t6 = _this._root;
- t6.toString;
- node._parent = t6;
- t6 = t6._children;
- node._indexInParent = t6.length;
- t6.push(node);
- _this._endOfImports = _this._endOfImports + 1;
- } else {
- t6 = _this._outOfOrderImports;
- (t6 == null ? _this._outOfOrderImports = H.setRuntimeTypeInfo([], t5) : t6).push(node);
- }
- }
- }
- return;
- },
- _visitDynamicImport$1: function($import) {
- return this._withStackFrame$3("@import", $import, new R._EvaluateVisitor__visitDynamicImport_closure(this, $import));
- },
- _loadStylesheet$4$baseUrl$forImport: function(url, span, baseUrl, forImport) {
- var stylesheet, tuple, error, error0, message, t1, t2, t3, exception, _this = this;
- try {
- _this._importSpan = span;
- if (_this._nodeImporter != null) {
- stylesheet = _this._importLikeNode$2(url, forImport);
- if (stylesheet != null)
- return new S.Tuple2(null, stylesheet, [M.Importer, V.Stylesheet]);
- } else {
- t1 = P.Uri_parse(url);
- t2 = _this._importer;
- if (baseUrl == null) {
- t3 = _this._stylesheet;
- t3 = t3 == null ? null : t3.span;
- t3 = t3 == null ? null : t3.file.url;
- } else
- t3 = baseUrl;
- tuple = _this._importCache.import$4$baseImporter$baseUrl$forImport(t1, t2, t3, forImport);
- if (tuple != null)
- return tuple;
- }
- if (C.JSString_methods.startsWith$1(url, "package:") && true)
- throw H.wrapException('"package:" URLs aren\'t supported on this platform.');
- else
- throw H.wrapException("Can't find stylesheet to import.");
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (t1 instanceof E.SassException) {
- error = t1;
- t1 = _this._evaluate$_exception$2(error._span_exception$_message, error.get$span());
- throw H.wrapException(t1);
- } else {
- error0 = t1;
- message = null;
- try {
- message = H.stringTypeCast(J.get$message$x(error0));
- } catch (exception) {
- H.unwrapException(exception);
- message = J.toString$0$(error0);
- }
- t1 = _this._evaluate$_exception$1(message);
- throw H.wrapException(t1);
- }
- } finally {
- _this._importSpan = null;
- }
- },
- _loadStylesheet$3$baseUrl: function(url, span, baseUrl) {
- return this._loadStylesheet$4$baseUrl$forImport(url, span, baseUrl, false);
- },
- _loadStylesheet$3$forImport: function(url, span, forImport) {
- return this._loadStylesheet$4$baseUrl$forImport(url, span, null, forImport);
- },
- _importLikeNode$2: function(originalUrl, forImport) {
- var result, contents, url, _this = this,
- t1 = _this._stylesheet.span;
- t1 = t1 == null ? null : t1.file.url;
- result = _this._nodeImporter.load$3(originalUrl, t1, forImport);
- if (result == null)
- return;
- contents = result.item1;
- url = result.item2;
- t1 = J.getInterceptor$s(url).startsWith$1(url, "file:") ? $.$get$context().style.pathFromUri$1(M._parseUri(url)) : url;
- _this._includedFiles.add$1(0, t1);
- t1 = C.JSString_methods.startsWith$1(url, "file") ? M.Syntax_forPath(url) : C.Syntax_SCSS;
- return V.Stylesheet_Stylesheet$parse(contents, t1, _this._logger, url);
- },
- visitIncludeRule$1: function(node) {
- var nodeWithSpan, t1, t2, t3, contentCallable, _this = this,
- _s37_ = "Mixin doesn't accept a content block.",
- mixin = _this._addExceptionSpan$2(node, new R._EvaluateVisitor_visitIncludeRule_closure(_this, node));
- if (mixin == null)
- throw H.wrapException(_this._evaluate$_exception$2("Undefined mixin.", node.span));
- nodeWithSpan = new B._FakeAstNode(new R._EvaluateVisitor_visitIncludeRule_closure0(node));
- if (!!mixin.$isBuiltInCallable) {
- if (node.content != null)
- throw H.wrapException(_this._evaluate$_exception$2(_s37_, node.span));
- _this._runBuiltInCallable$3(node.$arguments, mixin, nodeWithSpan);
- } else {
- t1 = [O.Environment];
- if (H.checkSubtype(mixin, "$isUserDefinedCallable", t1, null)) {
- t2 = node.content;
- t3 = t2 == null;
- if (!t3 && !H.interceptedTypeCast(mixin.declaration, "$isMixinRule").hasContent)
- throw H.wrapException(E.MultiSpanSassRuntimeException$(_s37_, node.get$spanWithoutContent(), "invocation", P.LinkedHashMap_LinkedHashMap$_literal([mixin.declaration.$arguments.get$spanWithName(), "declaration"], Y.FileSpan, P.String), _this._stackTrace$1(node.get$spanWithoutContent())));
- contentCallable = t3 ? null : new E.UserDefinedCallable(t2, _this._evaluate$_environment.closure$0(), t1);
- _this._runUserDefinedCallable$4(node.$arguments, mixin, nodeWithSpan, new R._EvaluateVisitor_visitIncludeRule_closure1(_this, contentCallable, mixin, nodeWithSpan));
- } else
- throw H.wrapException(P.UnsupportedError$("Unknown callable type " + mixin.toString$0(0) + "."));
- }
- return;
- },
- visitMixinRule$1: function(node) {
- var t1 = this._evaluate$_environment,
- t2 = t1.closure$0(),
- t3 = t1._mixins,
- index = t3.length - 1,
- t4 = node.name;
- t1._mixinIndices.$indexSet(0, t4, index);
- J.$indexSet$ax(t3[index], t4, new E.UserDefinedCallable(node, t2, [O.Environment]));
- return;
- },
- visitLoudComment$1: function(node) {
- var t1, t2, _this = this;
- if (_this._inFunction)
- return;
- t1 = _this._evaluate$_parent;
- t2 = _this._root;
- if (t1 == t2 && _this._endOfImports === J.get$length$asx(t2.children._collection$_source))
- _this._endOfImports = _this._endOfImports + 1;
- t1 = node.text;
- _this._evaluate$_parent.addChild$1(new R.ModifiableCssComment(_this._performInterpolation$1(t1), t1.span));
- return;
- },
- visitMediaRule$1: function(node) {
- var queries, t1, mergedQueries, _this = this;
- if (_this._declarationName != null)
- throw H.wrapException(_this._evaluate$_exception$2("Media rules may not be used within nested declarations.", node.span));
- queries = _this._visitMediaQueries$1(node.query);
- t1 = _this._mediaQueries;
- mergedQueries = t1 == null ? null : _this._mergeMediaQueries$2(t1, queries);
- t1 = mergedQueries == null;
- if (!t1 && mergedQueries.length === 0)
- return;
- t1 = t1 ? queries : mergedQueries;
- _this._withParent$2$4$scopeWhen$through(G.ModifiableCssMediaRule$(t1, node.span), new R._EvaluateVisitor_visitMediaRule_closure(_this, mergedQueries, queries, node), node.hasDeclarations, new R._EvaluateVisitor_visitMediaRule_closure0(mergedQueries), G.ModifiableCssMediaRule, P.Null);
- return;
- },
- _visitMediaQueries$1: function(interpolation) {
- return this._adjustParseError$2(interpolation, new R._EvaluateVisitor__visitMediaQueries_closure(this, this._performInterpolation$2$warnForColor(interpolation, true)));
- },
- _mergeMediaQueries$2: function(queries1, queries2) {
- var t1, t2, t3, t4, result,
- queries = H.setRuntimeTypeInfo([], [F.CssMediaQuery]);
- for (t1 = J.get$iterator$ax(queries1), t2 = J.getInterceptor$ax(queries2); t1.moveNext$0();) {
- t3 = t1.get$current(t1);
- for (t4 = t2.get$iterator(queries2); t4.moveNext$0();) {
- result = t3.merge$1(t4.get$current(t4));
- if (result === C._SingletonCssMediaQueryMergeResult_empty)
- continue;
- if (result === C._SingletonCssMediaQueryMergeResult_unrepresentable)
- return;
- queries.push(H.interceptedTypeCast(result, "$isMediaQuerySuccessfulMergeResult").query);
- }
- }
- return queries;
- },
- visitReturnRule$1: function(node) {
- return node.expression.accept$1(this);
- },
- visitSilentComment$1: function(node) {
- return;
- },
- visitStyleRule$1: function(node) {
- var t2, selectorText, t3, t4, parsedSelector, rule, oldAtRootExcludingStyleRule, _this = this, t1 = {};
- if (_this._declarationName != null)
- throw H.wrapException(_this._evaluate$_exception$2("Style rules may not be used within nested declarations.", node.span));
- t2 = node.selector;
- selectorText = _this._interpolationToValue$3$trim$warnForColor(t2, true, true);
- if (_this._inKeyframes) {
- t1 = P.List_List$unmodifiable(_this._adjustParseError$2(t2, new R._EvaluateVisitor_visitStyleRule_closure(_this, selectorText)), P.String);
- t3 = B.ModifiableCssNode;
- t4 = H.setRuntimeTypeInfo([], [t3]);
- _this._withParent$2$4$scopeWhen$through(new U.ModifiableCssKeyframeBlock(new F.CssValue(t1, t2.span, [[P.List, P.String]]), node.span, new P.UnmodifiableListView(t4, [t3]), t4), new R._EvaluateVisitor_visitStyleRule_closure0(_this, node), node.hasDeclarations, new R._EvaluateVisitor_visitStyleRule_closure1(), U.ModifiableCssKeyframeBlock, P.Null);
- return;
- }
- t1.parsedSelector = _this._adjustParseError$2(t2, new R._EvaluateVisitor_visitStyleRule_closure2(_this, selectorText));
- parsedSelector = _this._addExceptionSpan$2(t2, new R._EvaluateVisitor_visitStyleRule_closure3(t1, _this));
- t1.parsedSelector = parsedSelector;
- rule = X.ModifiableCssStyleRule$(_this._extender.addSelector$3(parsedSelector, t2.span, _this._mediaQueries), node.span, t1.parsedSelector);
- oldAtRootExcludingStyleRule = _this._atRootExcludingStyleRule;
- _this._atRootExcludingStyleRule = false;
- _this._withParent$2$4$scopeWhen$through(rule, new R._EvaluateVisitor_visitStyleRule_closure4(_this, rule, node), node.hasDeclarations, new R._EvaluateVisitor_visitStyleRule_closure5(), X.ModifiableCssStyleRule, P.Null);
- _this._atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
- if (!(_this._styleRule != null && !oldAtRootExcludingStyleRule)) {
- t1 = _this._evaluate$_parent.children;
- t1 = !t1.get$isEmpty(t1);
- } else
- t1 = false;
- if (t1) {
- t1 = _this._evaluate$_parent.children;
- t1.get$last(t1).isGroupEnd = true;
- }
- return;
- },
- visitSupportsRule$1: function(node) {
- var t1, t2, t3, t4, _this = this;
- if (_this._declarationName != null)
- throw H.wrapException(_this._evaluate$_exception$2("Supports rules may not be used within nested declarations.", node.span));
- t1 = node.condition;
- t2 = _this._visitSupportsCondition$1(t1);
- t1 = t1.get$span();
- t3 = B.ModifiableCssNode;
- t4 = H.setRuntimeTypeInfo([], [t3]);
- _this._withParent$2$4$scopeWhen$through(new B.ModifiableCssSupportsRule(new F.CssValue(t2, t1, [P.String]), node.span, new P.UnmodifiableListView(t4, [t3]), t4), new R._EvaluateVisitor_visitSupportsRule_closure(_this, node), node.hasDeclarations, new R._EvaluateVisitor_visitSupportsRule_closure0(), B.ModifiableCssSupportsRule, P.Null);
- return;
- },
- _visitSupportsCondition$1: function(condition) {
- var t2, _this = this,
- t1 = J.getInterceptor$(condition);
- if (!!t1.$isSupportsOperation) {
- t1 = condition.left;
- t2 = condition.operator;
- return H.S(_this._parenthesize$2(t1, t2)) + " " + t2 + " " + H.S(_this._parenthesize$2(condition.right, t2));
- } else if (!!t1.$isSupportsNegation)
- return "not " + H.S(_this._parenthesize$1(condition.condition));
- else if (!!t1.$isSupportsInterpolation) {
- t1 = condition.expression;
- return _this._evaluate$_serialize$3$quote(t1.accept$1(_this), t1, false);
- } else if (!!t1.$isSupportsDeclaration) {
- t1 = condition.name;
- t1 = "(" + H.S(_this._evaluate$_serialize$3$quote(t1.accept$1(_this), t1, true)) + ": ";
- t2 = condition.value;
- return t1 + H.S(_this._evaluate$_serialize$3$quote(t2.accept$1(_this), t2, true)) + ")";
- } else
- return;
- },
- _parenthesize$2: function(condition, operator) {
- var t1;
- if (!condition.$isSupportsNegation)
- if (!!condition.$isSupportsOperation)
- t1 = operator == null || operator !== condition.operator;
- else
- t1 = false;
- else
- t1 = true;
- if (t1)
- return "(" + H.S(this._visitSupportsCondition$1(condition)) + ")";
- else
- return this._visitSupportsCondition$1(condition);
- },
- _parenthesize$1: function(condition) {
- return this._parenthesize$2(condition, null);
- },
- visitVariableDeclaration$1: function(node) {
- var t1, value, t2, _this = this;
- if (node.isGuarded) {
- if (node.namespace == null && _this._evaluate$_environment._variables.length === 1) {
- t1 = _this._configuration._values;
- t1 = t1.get$isEmpty(t1) ? null : t1.remove$1(0, node.name);
- if (t1 != null) {
- _this._addExceptionSpan$2(node, new R._EvaluateVisitor_visitVariableDeclaration_closure(_this, node, t1));
- return;
- }
- }
- value = _this._addExceptionSpan$2(node, new R._EvaluateVisitor_visitVariableDeclaration_closure0(_this, node));
- if (value != null && !value.$eq(0, C.C_SassNull))
- return;
- }
- if (node.isGlobal && !_this._evaluate$_environment.globalVariableExists$1(node.name)) {
- t1 = _this._evaluate$_environment._variables.length === 1 ? "As of Dart Sass 2.0.0, !global assignments won't be able to\ndeclare new variables. Since this assignment is at the root of the stylesheet,\nthe !global flag is unnecessary and can safely be removed." : "As of Dart Sass 2.0.0, !global assignments won't be able to\ndeclare new variables. Consider adding `" + B.declarationName(node.span) + ": null` at the root of the\nstylesheet.";
- t2 = node.span;
- _this._logger.warn$4$deprecation$span$trace(t1, true, t2, _this._stackTrace$1(t2));
- }
- _this._addExceptionSpan$2(node, new R._EvaluateVisitor_visitVariableDeclaration_closure1(_this, node, node.expression.accept$1(_this).withoutSlash$0()));
- return;
- },
- visitUseRule$1: function(node) {
- var configuration, t3, _i, variable, t4, t5, _this = this,
- t1 = node.configuration,
- t2 = t1.length;
- if (t2 === 0)
- configuration = C.Configuration_Map_empty_null_true;
- else {
- t3 = P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.ConfiguredValue);
- for (_i = 0; _i < t2; ++_i) {
- variable = t1[_i];
- t4 = variable.name;
- t5 = variable.expression;
- t3.$indexSet(0, t4, new Z.ConfiguredValue(t5.accept$1(_this).withoutSlash$0(), variable.span, _this._expressionNode$1(t5)));
- }
- configuration = new A.Configuration(t3, node, false);
- }
- _this._loadModule$5$configuration(node.url, "@use", node, new R._EvaluateVisitor_visitUseRule_closure(_this, node), configuration);
- _this._assertConfigurationIsEmpty$1(configuration);
- return;
- },
- visitWarnRule$1: function(node) {
- var _this = this,
- value = _this._addExceptionSpan$2(node, new R._EvaluateVisitor_visitWarnRule_closure(_this, node)),
- t1 = value instanceof D.SassString ? value.text : _this._evaluate$_serialize$2(value, node.expression);
- _this._logger.warn$2$trace(t1, _this._stackTrace$1(node.span));
- return;
- },
- visitWhileRule$1: function(node) {
- return this._evaluate$_environment.scope$1$3$semiGlobal$when(new R._EvaluateVisitor_visitWhileRule_closure(this, node), true, node.hasDeclarations, F.Value);
- },
- visitBinaryOperationExpression$1: function(node) {
- return this._addExceptionSpan$2(node, new R._EvaluateVisitor_visitBinaryOperationExpression_closure(this, node));
- },
- visitValueExpression$1: function(node) {
- return node.value;
- },
- visitVariableExpression$1: function(node) {
- var result = this._addExceptionSpan$2(node, new R._EvaluateVisitor_visitVariableExpression_closure(this, node));
- if (result != null)
- return result;
- throw H.wrapException(this._evaluate$_exception$2("Undefined variable.", node.span));
- },
- visitUnaryOperationExpression$1: function(node) {
- var operand = node.operand.accept$1(this),
- t1 = node.operator;
- switch (t1) {
- case C.UnaryOperator_j2w:
- return operand.unaryPlus$0();
- case C.UnaryOperator_U4G:
- return operand.unaryMinus$0();
- case C.UnaryOperator_zDx:
- operand.toString;
- return new D.SassString("/" + N.serializeValue(operand, false, true), false);
- case C.UnaryOperator_not_not:
- return operand.unaryNot$0();
- default:
- throw H.wrapException(P.StateError$("Unknown unary operator " + H.S(t1) + "."));
- }
- },
- visitBooleanExpression$1: function(node) {
- return node.value ? C.SassBoolean_true : C.SassBoolean_false;
- },
- visitIfExpression$1: function(node) {
- var condition, ifTrue, ifFalse, _this = this,
- pair = _this._evaluateMacroArguments$1(node),
- positional = pair.item1,
- named = pair.item2,
- t1 = J.getInterceptor$asx(positional);
- _this._verifyArguments$4(t1.get$length(positional), named, $.$get$IfExpression_declaration(), node);
- condition = t1.get$length(positional) > 0 ? t1.$index(positional, 0) : named.$index(0, "condition");
- ifTrue = t1.get$length(positional) > 1 ? t1.$index(positional, 1) : named.$index(0, "if-true");
- ifFalse = t1.get$length(positional) > 2 ? t1.$index(positional, 2) : named.$index(0, "if-false");
- return (condition.accept$1(_this).get$isTruthy() ? ifTrue : ifFalse).accept$1(_this);
- },
- visitNullExpression$1: function(node) {
- return C.C_SassNull;
- },
- visitNumberExpression$1: function(node) {
- var t1 = node.unit;
- t1 = t1 == null ? null : H.setRuntimeTypeInfo([t1], [P.String]);
- t1 = t1 == null ? C.List_empty : P.List_List$unmodifiable(t1, P.String);
- return new T.SassNumber(node.value, t1, C.List_empty, null);
- },
- visitParenthesizedExpression$1: function(node) {
- return node.expression.accept$1(this);
- },
- visitColorExpression$1: function(node) {
- return node.value;
- },
- visitListExpression$1: function(node) {
- var t1 = node.contents;
- return D.SassList$(new H.MappedListIterable(t1, new R._EvaluateVisitor_visitListExpression_closure(this), [H.getTypeArgumentByIndex(t1, 0), F.Value]), node.separator, node.hasBrackets);
- },
- visitMapExpression$1: function(node) {
- var t2, t3, _i, pair, t4, keyValue, valueValue,
- t1 = F.Value,
- map = P.LinkedHashMap_LinkedHashMap$_empty(t1, t1),
- keyNodes = P.LinkedHashMap_LinkedHashMap$_empty(t1, B.AstNode);
- for (t2 = node.pairs, t3 = t2.length, _i = 0; _i < t3; ++_i) {
- pair = t2[_i];
- t4 = pair.item1;
- keyValue = t4.accept$1(this);
- valueValue = pair.item2.accept$1(this);
- if (map.containsKey$1(keyValue))
- throw H.wrapException(E.MultiSpanSassRuntimeException$("Duplicate key.", t4.get$span(), "second key", P.LinkedHashMap_LinkedHashMap$_literal([keyNodes.$index(0, keyValue).get$span(), "first key"], Y.FileSpan, P.String), this._stackTrace$1(t4.get$span())));
- map.$indexSet(0, keyValue, valueValue);
- keyNodes.$indexSet(0, keyValue, t4);
- }
- return new A.SassMap(H.ConstantMap_ConstantMap$from(map, t1, t1));
- },
- visitFunctionExpression$1: function(node) {
- var oldInFunction, result, _this = this, t1 = {},
- t2 = node.name,
- plainName = t2.get$asPlain();
- t1.$function = null;
- if ((plainName != null ? t1.$function = _this._addExceptionSpan$2(node, new R._EvaluateVisitor_visitFunctionExpression_closure(_this, node, plainName)) : null) == null) {
- if (node.namespace != null)
- throw H.wrapException(_this._evaluate$_exception$2("Undefined function.", node.span));
- t1.$function = new L.PlainCssCallable(_this._performInterpolation$1(t2));
- }
- oldInFunction = _this._inFunction;
- _this._inFunction = true;
- result = _this._addErrorSpan$2(node, new R._EvaluateVisitor_visitFunctionExpression_closure0(t1, _this, node));
- _this._inFunction = oldInFunction;
- return result;
- },
- _getFunction$2$namespace: function($name, namespace) {
- var local = this._evaluate$_environment.getFunction$2$namespace($name, namespace);
- if (local != null || namespace != null)
- return local;
- return this._builtInFunctions.$index(0, $name);
- },
- _runUserDefinedCallable$4: function($arguments, callable, nodeWithSpan, run) {
- var evaluated = this._evaluateArguments$1($arguments),
- t1 = callable.declaration.name,
- $name = t1 == null ? "@content" : t1 + "()";
- return this._withStackFrame$3($name, nodeWithSpan, new R._EvaluateVisitor__runUserDefinedCallable_closure(this, callable, evaluated, nodeWithSpan, run));
- },
- _runFunctionCallable$3: function($arguments, callable, nodeWithSpan) {
- var result, t2, t3, first, _i, argument, rest, _this = this,
- t1 = J.getInterceptor$(callable);
- if (!!t1.$isBuiltInCallable) {
- result = _this._runBuiltInCallable$3($arguments, callable, nodeWithSpan);
- if (result == null)
- throw H.wrapException(_this._evaluate$_exception$2("Custom functions may not return Dart's null.", nodeWithSpan.get$span()));
- return result.withoutSlash$0();
- } else if (H.checkSubtype(callable, "$isUserDefinedCallable", [O.Environment], null))
- return _this._runUserDefinedCallable$4($arguments, callable, nodeWithSpan, new R._EvaluateVisitor__runFunctionCallable_closure(_this, callable)).withoutSlash$0();
- else if (!!t1.$isPlainCssCallable) {
- t1 = $arguments.named;
- if (t1.get$isNotEmpty(t1) || $arguments.keywordRest != null)
- throw H.wrapException(_this._evaluate$_exception$2("Plain CSS functions don't support keyword arguments.", nodeWithSpan.get$span()));
- t1 = H.S(callable.name) + "(";
- for (t2 = $arguments.positional, t3 = t2.length, first = true, _i = 0; _i < t3; ++_i) {
- argument = t2[_i];
- if (first)
- first = false;
- else
- t1 += ", ";
- t1 += H.S(_this._evaluate$_serialize$3$quote(argument.accept$1(_this), argument, true));
- }
- t2 = $arguments.rest;
- rest = t2 == null ? null : t2.accept$1(_this);
- if (rest != null) {
- if (!first)
- t1 += ", ";
- t2 = t1 + H.S(_this._evaluate$_serialize$2(rest, t2));
- t1 = t2;
- }
- t1 += H.Primitives_stringFromCharCode(41);
- return new D.SassString(t1.charCodeAt(0) == 0 ? t1 : t1, false);
- } else
- return;
- },
- _runBuiltInCallable$3: function($arguments, callable, nodeWithSpan) {
- var callback, result, error, error0, error1, message, t1, namedSet, tuple, overload, declaredArguments, i, t2, argument, t3, t4, rest, argumentList, exception, _this = this,
- evaluated = _this._evaluateArguments$2$trackSpans($arguments, false),
- oldCallableNode = _this._callableNode;
- _this._callableNode = nodeWithSpan;
- t1 = P.String;
- namedSet = new M.MapKeySet(evaluated.named, [t1]);
- tuple = callable.callbackFor$2(evaluated.positional.length, namedSet);
- overload = tuple.item1;
- callback = tuple.item2;
- _this._addExceptionSpan$2(nodeWithSpan, new R._EvaluateVisitor__runBuiltInCallable_closure(overload, evaluated, namedSet));
- declaredArguments = overload.$arguments;
- for (i = evaluated.positional.length, t2 = declaredArguments.length; i < t2; ++i) {
- argument = declaredArguments[i];
- t3 = evaluated.positional;
- t4 = evaluated.named.remove$1(0, argument.name);
- if (t4 == null) {
- t4 = argument.defaultValue;
- t4 = t4 == null ? null : t4.accept$1(_this);
- }
- t3.push(t4);
- }
- if (overload.restArgument != null) {
- if (evaluated.positional.length > t2) {
- rest = C.JSArray_methods.sublist$1(evaluated.positional, t2);
- C.JSArray_methods.removeRange$2(evaluated.positional, t2, evaluated.positional.length);
- } else
- rest = C.List_empty6;
- t2 = evaluated.named;
- t3 = evaluated.separator === C.ListSeparator_undecided ? C.ListSeparator_comma : evaluated.separator;
- t4 = F.Value;
- argumentList = new D.SassArgumentList(H.ConstantMap_ConstantMap$from(t2, t1, t4), P.List_List$unmodifiable(rest, t4), t3, false);
- argumentList.SassList$3$brackets(rest, t3, false);
- evaluated.positional.push(argumentList);
- } else
- argumentList = null;
- result = null;
- try {
- result = callback.call$1(evaluated.positional);
- } catch (exception) {
- t1 = H.unwrapException(exception);
- t2 = J.getInterceptor$(t1);
- if (!!t2.$isSassRuntimeException)
- throw exception;
- else if (!!t2.$isMultiSpanSassScriptException) {
- error = t1;
- throw H.wrapException(E.MultiSpanSassRuntimeException$(error.message, nodeWithSpan.get$span(), error.primaryLabel, error.secondarySpans, _this._stackTrace$1(nodeWithSpan.get$span())));
- } else if (!!t2.$isMultiSpanSassException) {
- error0 = t1;
- throw H.wrapException(E.MultiSpanSassRuntimeException$(error0._span_exception$_message, error0.get$span(), error0.primaryLabel, error0.secondarySpans, _this._stackTrace$1(error0.get$span())));
- } else {
- error1 = t1;
- message = null;
- try {
- message = H.stringTypeCast(J.get$message$x(error1));
- } catch (exception) {
- H.unwrapException(exception);
- message = J.toString$0$(error1);
- }
- throw H.wrapException(_this._evaluate$_exception$2(message, nodeWithSpan.get$span()));
- }
- }
- _this._callableNode = oldCallableNode;
- if (argumentList == null)
- return result;
- t2 = evaluated.named;
- if (t2.get$isEmpty(t2))
- return result;
- if (argumentList._wereKeywordsAccessed)
- return result;
- t2 = evaluated.named.get$keys();
- throw H.wrapException(E.MultiSpanSassRuntimeException$("No " + B.pluralize("argument", t2.get$length(t2), null) + " named " + H.S(B.toSentence(evaluated.named.get$keys().map$1$1(0, new R._EvaluateVisitor__runBuiltInCallable_closure0(), P.Object), "or")) + ".", nodeWithSpan.get$span(), "invocation", P.LinkedHashMap_LinkedHashMap$_literal([overload.get$spanWithName(), "declaration"], Y.FileSpan, t1), _this._stackTrace$1(nodeWithSpan.get$span())));
- },
- _evaluateArguments$2$trackSpans: function($arguments, trackSpans) {
- var t1, t2, t3, t4, _i, t5, t6, t7, named, t8, positionalNodes, namedNodes, rest, restNodeForSpan, separator, keywordRest, keywordRestNodeForSpan, _this = this, _null = null;
- if (trackSpans == null)
- trackSpans = _this._sourceMap;
- t1 = F.Value;
- t2 = H.setRuntimeTypeInfo([], [t1]);
- for (t3 = $arguments.positional, t4 = t3.length, _i = 0; _i < t4; ++_i)
- t2.push(t3[_i].accept$1(_this));
- t5 = $arguments.named;
- t6 = P.String;
- t7 = T.Expression;
- named = Y.mapMap(t5, _null, new R._EvaluateVisitor__evaluateArguments_closure(_this), t6, t7, t6, t1);
- if (trackSpans) {
- t8 = H.setRuntimeTypeInfo([], [B.AstNode]);
- for (_i = 0; _i < t4; ++_i)
- t8.push(_this._expressionNode$1(t3[_i]));
- positionalNodes = t8;
- } else
- positionalNodes = _null;
- namedNodes = trackSpans ? Y.mapMap(t5, _null, new R._EvaluateVisitor__evaluateArguments_closure0(_this), t6, t7, t6, B.AstNode) : _null;
- t3 = $arguments.rest;
- if (t3 == null)
- return R._ArgumentResults$(t2, named, C.ListSeparator_undecided, namedNodes, positionalNodes);
- rest = t3.accept$1(_this);
- restNodeForSpan = trackSpans ? _this._expressionNode$1(t3) : _null;
- t4 = J.getInterceptor$(rest);
- if (!!t4.$isSassMap) {
- _this._addRestMap$1$3(named, rest, t3, t1);
- if (namedNodes != null) {
- t3 = P.LinkedHashMap_LinkedHashMap$_empty(t6, B.AstNode);
- for (t4 = J.get$iterator$ax(rest.contents.get$keys()); t4.moveNext$0();)
- t3.$indexSet(0, H.interceptedTypeCast(t4.get$current(t4), "$isSassString").text, restNodeForSpan);
- namedNodes.addAll$1(0, t3);
- }
- separator = C.ListSeparator_undecided;
- } else if (!!t4.$isSassList) {
- t3 = rest._list$_contents;
- C.JSArray_methods.addAll$1(t2, t3);
- if (positionalNodes != null)
- C.JSArray_methods.addAll$1(positionalNodes, P.List_List$filled(t3.length, restNodeForSpan, B.AstNode));
- separator = rest.separator;
- if (!!rest.$isSassArgumentList) {
- rest._wereKeywordsAccessed = true;
- rest._keywords.forEach$1(0, new R._EvaluateVisitor__evaluateArguments_closure1(named, namedNodes, restNodeForSpan));
- }
- } else {
- t2.push(rest);
- if (positionalNodes != null)
- positionalNodes.push(restNodeForSpan);
- separator = C.ListSeparator_undecided;
- }
- t3 = $arguments.keywordRest;
- if (t3 == null)
- return R._ArgumentResults$(t2, named, separator, namedNodes, positionalNodes);
- keywordRest = t3.accept$1(_this);
- keywordRestNodeForSpan = trackSpans ? _this._expressionNode$1(t3) : _null;
- if (keywordRest instanceof A.SassMap) {
- _this._addRestMap$1$3(named, keywordRest, t3, t1);
- if (namedNodes != null) {
- t1 = P.LinkedHashMap_LinkedHashMap$_empty(t6, B.AstNode);
- for (t3 = J.get$iterator$ax(keywordRest.contents.get$keys()); t3.moveNext$0();)
- t1.$indexSet(0, H.interceptedTypeCast(t3.get$current(t3), "$isSassString").text, keywordRestNodeForSpan);
- namedNodes.addAll$1(0, t1);
- }
- return R._ArgumentResults$(t2, named, separator, namedNodes, positionalNodes);
- } else
- throw H.wrapException(_this._evaluate$_exception$2("Variable keyword arguments must be a map (was " + H.S(keywordRest) + ").", t3.get$span()));
- },
- _evaluateArguments$1: function($arguments) {
- return this._evaluateArguments$2$trackSpans($arguments, null);
- },
- _evaluateMacroArguments$1: function(invocation) {
- var t3, positional, named, rest, keywordRest, _this = this,
- t1 = invocation.$arguments,
- t2 = t1.rest;
- if (t2 == null)
- return new S.Tuple2(t1.positional, t1.named, [[P.List, T.Expression], [P.Map, P.String, T.Expression]]);
- t3 = t1.positional;
- positional = H.setRuntimeTypeInfo(t3.slice(0), [H.getTypeArgumentByIndex(t3, 0)]);
- t3 = T.Expression;
- named = P.LinkedHashMap_LinkedHashMap$of(t1.named, P.String, t3);
- rest = t2.accept$1(_this);
- t2 = J.getInterceptor$(rest);
- if (!!t2.$isSassMap)
- _this._addRestMap$1$4(named, rest, invocation, new R._EvaluateVisitor__evaluateMacroArguments_closure(), t3);
- else if (!!t2.$isSassList) {
- t2 = rest._list$_contents;
- C.JSArray_methods.addAll$1(positional, new H.MappedListIterable(t2, new R._EvaluateVisitor__evaluateMacroArguments_closure0(), [H.getTypeArgumentByIndex(t2, 0), t3]));
- if (!!rest.$isSassArgumentList) {
- rest._wereKeywordsAccessed = true;
- rest._keywords.forEach$1(0, new R._EvaluateVisitor__evaluateMacroArguments_closure1(named));
- }
- } else
- positional.push(new F.ValueExpression(rest, null));
- t1 = t1.keywordRest;
- if (t1 == null)
- return new S.Tuple2(positional, named, [[P.List, T.Expression], [P.Map, P.String, T.Expression]]);
- keywordRest = t1.accept$1(_this);
- if (keywordRest instanceof A.SassMap) {
- _this._addRestMap$1$4(named, keywordRest, invocation, new R._EvaluateVisitor__evaluateMacroArguments_closure2(), t3);
- return new S.Tuple2(positional, named, [[P.List, T.Expression], [P.Map, P.String, T.Expression]]);
- } else
- throw H.wrapException(_this._evaluate$_exception$2("Variable keyword arguments must be a map (was " + H.S(keywordRest) + ").", invocation.span));
- },
- _addRestMap$1$4: function(values, map, nodeWithSpan, convert, $T) {
- var t1 = {};
- t1.convert = convert;
- if (convert == null)
- t1.convert = new R._EvaluateVisitor__addRestMap_closure($T);
- map.contents.forEach$1(0, new R._EvaluateVisitor__addRestMap_closure0(t1, this, values, map, nodeWithSpan));
- },
- _addRestMap$1$3: function(values, map, nodeWithSpan, $T) {
- return this._addRestMap$1$4(values, map, nodeWithSpan, null, $T);
- },
- _verifyArguments$4: function(positional, named, $arguments, nodeWithSpan) {
- return this._addExceptionSpan$2(nodeWithSpan, new R._EvaluateVisitor__verifyArguments_closure($arguments, positional, named));
- },
- visitSelectorExpression$1: function(node) {
- var t1 = this._styleRule;
- if (t1 == null)
- return C.C_SassNull;
- return t1.originalSelector.get$asSassList();
- },
- visitStringExpression$1: function(node) {
- var t1 = node.text.contents;
- return new D.SassString(new H.MappedListIterable(t1, new R._EvaluateVisitor_visitStringExpression_closure(this), [H.getTypeArgumentByIndex(t1, 0), P.String]).join$0(0), node.hasQuotes);
- },
- visitCssAtRule$1: function(node) {
- var t1, t2, t3, wasInKeyframes, wasInUnknownAtRule, _this = this;
- if (_this._declarationName != null)
- throw H.wrapException(_this._evaluate$_exception$2("At-rules may not be used within nested declarations.", node.span));
- if (node.isChildless) {
- t1 = _this._evaluate$_parent;
- t2 = B.ModifiableCssNode;
- t3 = H.setRuntimeTypeInfo([], [t2]);
- t1.addChild$1(new U.ModifiableCssAtRule(node.name, node.value, true, node.span, new P.UnmodifiableListView(t3, [t2]), t3));
- return;
- }
- wasInKeyframes = _this._inKeyframes;
- wasInUnknownAtRule = _this._inUnknownAtRule;
- t1 = node.name;
- if (B.unvendor(t1.get$value(t1)) === "keyframes")
- _this._inKeyframes = true;
- else
- _this._inUnknownAtRule = true;
- t2 = B.ModifiableCssNode;
- t3 = H.setRuntimeTypeInfo([], [t2]);
- _this._withParent$2$4$scopeWhen$through(new U.ModifiableCssAtRule(t1, node.value, false, node.span, new P.UnmodifiableListView(t3, [t2]), t3), new R._EvaluateVisitor_visitCssAtRule_closure(_this, node), false, new R._EvaluateVisitor_visitCssAtRule_closure0(), U.ModifiableCssAtRule, P.Null);
- _this._inUnknownAtRule = wasInUnknownAtRule;
- _this._inKeyframes = wasInKeyframes;
- },
- visitCssComment$1: function(node) {
- var _this = this,
- t1 = _this._evaluate$_parent,
- t2 = _this._root;
- if (t1 == t2 && _this._endOfImports === J.get$length$asx(t2.children._collection$_source))
- _this._endOfImports = _this._endOfImports + 1;
- _this._evaluate$_parent.addChild$1(new R.ModifiableCssComment(node.text, node.span));
- },
- visitCssDeclaration$1: function(node) {
- this._evaluate$_parent.addChild$1(L.ModifiableCssDeclaration$(node.name, node.value, node.span, node.valueSpanForMap));
- },
- visitCssImport$1: function(node) {
- var _this = this,
- modifiableNode = F.ModifiableCssImport$(node.url, node.span, node.media, node.supports),
- t1 = _this._evaluate$_parent,
- t2 = _this._root;
- if (t1 != t2)
- t1.addChild$1(modifiableNode);
- else if (_this._endOfImports === J.get$length$asx(t2.children._collection$_source)) {
- _this._root.addChild$1(modifiableNode);
- _this._endOfImports = _this._endOfImports + 1;
- } else {
- t1 = _this._outOfOrderImports;
- (t1 == null ? _this._outOfOrderImports = H.setRuntimeTypeInfo([], [F.ModifiableCssImport]) : t1).push(modifiableNode);
- }
- },
- visitCssKeyframeBlock$1: function(node) {
- var t1 = B.ModifiableCssNode,
- t2 = H.setRuntimeTypeInfo([], [t1]);
- this._withParent$2$4$scopeWhen$through(new U.ModifiableCssKeyframeBlock(node.selector, node.span, new P.UnmodifiableListView(t2, [t1]), t2), new R._EvaluateVisitor_visitCssKeyframeBlock_closure(this, node), false, new R._EvaluateVisitor_visitCssKeyframeBlock_closure0(), U.ModifiableCssKeyframeBlock, P.Null);
- },
- visitCssMediaRule$1: function(node) {
- var t1, mergedQueries, _this = this;
- if (_this._declarationName != null)
- throw H.wrapException(_this._evaluate$_exception$2("Media rules may not be used within nested declarations.", node.span));
- t1 = _this._mediaQueries;
- mergedQueries = t1 == null ? null : _this._mergeMediaQueries$2(t1, node.queries);
- t1 = mergedQueries == null;
- if (!t1 && mergedQueries.length === 0)
- return;
- t1 = t1 ? node.queries : mergedQueries;
- _this._withParent$2$4$scopeWhen$through(G.ModifiableCssMediaRule$(t1, node.span), new R._EvaluateVisitor_visitCssMediaRule_closure(_this, mergedQueries, node), false, new R._EvaluateVisitor_visitCssMediaRule_closure0(mergedQueries), G.ModifiableCssMediaRule, P.Null);
- },
- visitCssStyleRule$1: function(node) {
- var t1, t2, t3, originalSelector, rule, oldAtRootExcludingStyleRule, _this = this;
- if (_this._declarationName != null)
- throw H.wrapException(_this._evaluate$_exception$2("Style rules may not be used within nested declarations.", node.span));
- t1 = node.selector;
- t2 = t1.value;
- t3 = _this._styleRule;
- t3 = t3 == null ? null : t3.originalSelector;
- originalSelector = t2.resolveParentSelectors$2$implicitParent(t3, !_this._atRootExcludingStyleRule);
- rule = X.ModifiableCssStyleRule$(_this._extender.addSelector$3(originalSelector, t1.span, _this._mediaQueries), node.span, originalSelector);
- oldAtRootExcludingStyleRule = _this._atRootExcludingStyleRule;
- _this._atRootExcludingStyleRule = false;
- _this._withParent$2$4$scopeWhen$through(rule, new R._EvaluateVisitor_visitCssStyleRule_closure(_this, rule, node), false, new R._EvaluateVisitor_visitCssStyleRule_closure0(), X.ModifiableCssStyleRule, P.Null);
- _this._atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
- if (!(_this._styleRule != null && !oldAtRootExcludingStyleRule)) {
- t1 = _this._evaluate$_parent.children;
- t1 = !t1.get$isEmpty(t1);
- } else
- t1 = false;
- if (t1) {
- t1 = _this._evaluate$_parent.children;
- t1.get$last(t1).isGroupEnd = true;
- }
- },
- visitCssStylesheet$1: function(node) {
- var t1;
- for (t1 = J.get$iterator$ax(node.get$children()); t1.moveNext$0();)
- t1.get$current(t1).accept$1(this);
- },
- visitCssSupportsRule$1: function(node) {
- var t1, t2, _this = this;
- if (_this._declarationName != null)
- throw H.wrapException(_this._evaluate$_exception$2("Supports rules may not be used within nested declarations.", node.span));
- t1 = B.ModifiableCssNode;
- t2 = H.setRuntimeTypeInfo([], [t1]);
- _this._withParent$2$4$scopeWhen$through(new B.ModifiableCssSupportsRule(node.condition, node.span, new P.UnmodifiableListView(t2, [t1]), t2), new R._EvaluateVisitor_visitCssSupportsRule_closure(_this, node), false, new R._EvaluateVisitor_visitCssSupportsRule_closure0(), B.ModifiableCssSupportsRule, P.Null);
- },
- _handleReturn$1$2: function(list, callback) {
- var t1, _i, result;
- for (t1 = list.length, _i = 0; _i < list.length; list.length === t1 || (0, H.throwConcurrentModificationError)(list), ++_i) {
- result = callback.call$1(list[_i]);
- if (result != null)
- return result;
- }
- return;
- },
- _handleReturn$2: function(list, callback) {
- return this._handleReturn$1$2(list, callback, null);
- },
- _withEnvironment$1$2: function(environment, callback) {
- var result,
- oldEnvironment = this._evaluate$_environment;
- this._evaluate$_environment = environment;
- result = callback.call$0();
- this._evaluate$_environment = oldEnvironment;
- return result;
- },
- _withEnvironment$2: function(environment, callback) {
- return this._withEnvironment$1$2(environment, callback, null);
- },
- _interpolationToValue$3$trim$warnForColor: function(interpolation, trim, warnForColor) {
- var result = this._performInterpolation$2$warnForColor(interpolation, warnForColor),
- t1 = trim ? B.trimAscii(result, true) : result;
- return new F.CssValue(t1, interpolation.span, [P.String]);
- },
- _interpolationToValue$1: function(interpolation) {
- return this._interpolationToValue$3$trim$warnForColor(interpolation, false, false);
- },
- _interpolationToValue$2$warnForColor: function(interpolation, warnForColor) {
- return this._interpolationToValue$3$trim$warnForColor(interpolation, false, warnForColor);
- },
- _performInterpolation$2$warnForColor: function(interpolation, warnForColor) {
- var t1 = interpolation.contents;
- return new H.MappedListIterable(t1, new R._EvaluateVisitor__performInterpolation_closure(this, warnForColor), [H.getTypeArgumentByIndex(t1, 0), P.String]).join$0(0);
- },
- _performInterpolation$1: function(interpolation) {
- return this._performInterpolation$2$warnForColor(interpolation, false);
- },
- _evaluate$_serialize$3$quote: function(value, nodeWithSpan, quote) {
- return this._addExceptionSpan$2(nodeWithSpan, new R._EvaluateVisitor__serialize_closure(value, quote));
- },
- _evaluate$_serialize$2: function(value, nodeWithSpan) {
- return this._evaluate$_serialize$3$quote(value, nodeWithSpan, true);
- },
- _expressionNode$1: function(expression) {
- if (!this._sourceMap)
- return;
- if (expression instanceof S.VariableExpression)
- return this._evaluate$_environment.getVariableNode$2$namespace(expression.name, expression.namespace);
- else
- return expression;
- },
- _withParent$2$4$scopeWhen$through: function(node, callback, scopeWhen, through, $S, $T) {
- var oldParent, result, _this = this;
- _this._addChild$2$through(node, through);
- oldParent = _this._evaluate$_parent;
- _this._evaluate$_parent = node;
- result = _this._evaluate$_environment.scope$1$2$when(callback, scopeWhen, $T);
- _this._evaluate$_parent = oldParent;
- return result;
- },
- _withParent$2$3$scopeWhen: function(node, callback, scopeWhen, $S, $T) {
- return this._withParent$2$4$scopeWhen$through(node, callback, scopeWhen, null, $S, $T);
- },
- _withParent$2$2: function(node, callback, $S, $T) {
- return this._withParent$2$4$scopeWhen$through(node, callback, true, null, $S, $T);
- },
- _addChild$2$through: function(node, through) {
- var grandparent,
- $parent = this._evaluate$_parent;
- if (through != null) {
- for (; through.call$1($parent);)
- $parent = $parent._parent;
- if ($parent.get$hasFollowingSibling()) {
- grandparent = $parent._parent;
- $parent = $parent.copyWithoutChildren$0();
- grandparent.addChild$1($parent);
- }
- }
- $parent.addChild$1(node);
- },
- _addChild$1: function(node) {
- return this._addChild$2$through(node, null);
- },
- _withStyleRule$1$2: function(rule, callback) {
- var result,
- oldRule = this._styleRule;
- this._styleRule = rule;
- result = callback.call$0();
- this._styleRule = oldRule;
- return result;
- },
- _withStyleRule$2: function(rule, callback) {
- return this._withStyleRule$1$2(rule, callback, null);
- },
- _withMediaQueries$1$2: function(queries, callback) {
- var result,
- oldMediaQueries = this._mediaQueries;
- this._mediaQueries = queries;
- result = callback.call$0();
- this._mediaQueries = oldMediaQueries;
- return result;
- },
- _withMediaQueries$2: function(queries, callback) {
- return this._withMediaQueries$1$2(queries, callback, null);
- },
- _withStackFrame$1$3: function(member, nodeWithSpan, callback) {
- var oldMember, result, _this = this,
- t1 = _this._stack;
- t1.push(new S.Tuple2(_this._member, nodeWithSpan, [P.String, B.AstNode]));
- oldMember = _this._member;
- _this._member = member;
- result = callback.call$0();
- _this._member = oldMember;
- t1.pop();
- return result;
- },
- _withStackFrame$3: function(member, nodeWithSpan, callback) {
- return this._withStackFrame$1$3(member, nodeWithSpan, callback, null);
- },
- _stackFrame$2: function(member, span) {
- var url = span.file.url;
- return B.frameForSpan(span, member, url != null && this._importCache != null ? this._importCache.humanize$1(url) : url);
- },
- _stackTrace$1: function(span) {
- var t3, _this = this,
- t1 = A.Frame,
- t2 = H.setRuntimeTypeInfo([], [t1]);
- for (t3 = _this._stack, t3 = new H.MappedListIterable(t3, new R._EvaluateVisitor__stackTrace_closure(_this), [H.getTypeArgumentByIndex(t3, 0), t1]), t3 = new H.ListIterator(t3, t3.get$length(t3)); t3.moveNext$0();)
- t2.push(t3.__internal$_current);
- if (span != null)
- t2.push(_this._stackFrame$2(_this._member, span));
- return new Y.Trace(P.List_List$unmodifiable(new H.ReversedListIterable(t2, [H.getTypeArgumentByIndex(t2, 0)]), t1), new P._StringStackTrace(null));
- },
- _stackTrace$0: function() {
- return this._stackTrace$1(null);
- },
- _warn$3$deprecation: function(message, span, deprecation) {
- return this._logger.warn$4$deprecation$span$trace(message, deprecation, span, this._stackTrace$1(span));
- },
- _warn$2: function(message, span) {
- return this._warn$3$deprecation(message, span, false);
- },
- _evaluate$_exception$2: function(message, span) {
- var t1 = span == null ? C.JSArray_methods.get$last(this._stack).item2.get$span() : span;
- return new E.SassRuntimeException(this._stackTrace$1(span), message, t1);
- },
- _evaluate$_exception$1: function(message) {
- return this._evaluate$_exception$2(message, null);
- },
- _multiSpanException$3: function(message, primaryLabel, secondaryLabels) {
- var t1 = C.JSArray_methods.get$last(this._stack).item2.get$span();
- return new E.MultiSpanSassRuntimeException(this._stackTrace$0(), primaryLabel, H.ConstantMap_ConstantMap$from(secondaryLabels, Y.FileSpan, P.String), message, t1);
- },
- _adjustParseError$1$2: function(nodeWithSpan, callback) {
- var error, errorText, span, syntheticFile, syntheticSpan, t1, exception, t2, t3, t4, t5, _null = null;
- try {
- t1 = callback.call$0();
- return t1;
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (t1 instanceof E.SassFormatException) {
- error = t1;
- t1 = error;
- errorText = P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(G.SourceSpanException.prototype.get$span.call(t1).file._decodedChars, 0, _null), 0, _null);
- span = nodeWithSpan.get$span();
- t1 = span;
- t2 = span;
- syntheticFile = C.JSString_methods.replaceRange$3(P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(span.file._decodedChars, 0, _null), 0, _null), Y.FileLocation$_(t1.file, t1._start).offset, Y.FileLocation$_(t2.file, t2._file$_end).offset, errorText);
- t2 = syntheticFile;
- t1 = span.file.url;
- t2.toString;
- t2 = new H.CodeUnits(t2);
- t3 = H.setRuntimeTypeInfo([0], [P.int]);
- t3 = new Y.SourceFile(t1, t3, new Uint32Array(H._ensureNativeList(t2.toList$0(t2))));
- t3.SourceFile$decoded$2$url(t2, t1);
- t1 = span;
- t1 = Y.FileLocation$_(t1.file, t1._start);
- t2 = error;
- t2 = G.SourceSpanException.prototype.get$span.call(t2);
- t2 = Y.FileLocation$_(t2.file, t2._start);
- t4 = span;
- t4 = Y.FileLocation$_(t4.file, t4._start);
- t5 = error;
- t5 = G.SourceSpanException.prototype.get$span.call(t5);
- syntheticSpan = t3.span$2(t1.offset + t2.offset, t4.offset + Y.FileLocation$_(t5.file, t5._file$_end).offset);
- throw H.wrapException(this._evaluate$_exception$2(error._span_exception$_message, syntheticSpan));
- } else
- throw exception;
- }
- },
- _adjustParseError$2: function(nodeWithSpan, callback) {
- return this._adjustParseError$1$2(nodeWithSpan, callback, null);
- },
- _addExceptionSpan$1$2: function(nodeWithSpan, callback) {
- var error, error0, t1, exception, t2;
- try {
- t1 = callback.call$0();
- return t1;
- } catch (exception) {
- t1 = H.unwrapException(exception);
- t2 = J.getInterceptor$(t1);
- if (!!t2.$isMultiSpanSassScriptException) {
- error = t1;
- throw H.wrapException(E.MultiSpanSassRuntimeException$(error.message, nodeWithSpan.get$span(), error.primaryLabel, error.secondarySpans, this._stackTrace$1(nodeWithSpan.get$span())));
- } else if (!!t2.$isSassScriptException) {
- error0 = t1;
- throw H.wrapException(this._evaluate$_exception$2(error0.message, nodeWithSpan.get$span()));
- } else
- throw exception;
- }
- },
- _addExceptionSpan$2: function(nodeWithSpan, callback) {
- return this._addExceptionSpan$1$2(nodeWithSpan, callback, null);
- },
- _addErrorSpan$1$2: function(nodeWithSpan, callback) {
- var error, t1, exception;
- try {
- t1 = callback.call$0();
- return t1;
- } catch (exception) {
- t1 = H.unwrapException(exception);
- if (!!J.getInterceptor$(t1).$isSassRuntimeException) {
- error = t1;
- t1 = error.get$span();
- if (!C.JSString_methods.startsWith$1(P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(t1.file._decodedChars, t1._start, t1._file$_end), 0, null), "@error"))
- throw exception;
- throw H.wrapException(E.SassRuntimeException$(error._span_exception$_message, nodeWithSpan.get$span(), this._stackTrace$0()));
- } else
- throw exception;
- }
- },
- _addErrorSpan$2: function(nodeWithSpan, callback) {
- return this._addErrorSpan$1$2(nodeWithSpan, callback, null);
- }
- };
- R._EvaluateVisitor_closure.prototype = {
- call$1: function($arguments) {
- var module, t2,
- t1 = J.getInterceptor$asx($arguments),
- variable = t1.$index($arguments, 0).assertString$1("name");
- t1 = t1.$index($arguments, 1).get$realNull();
- module = t1 == null ? null : t1.assertString$1("module");
- t1 = this.$this._evaluate$_environment;
- t2 = variable.text;
- t2.toString;
- t2 = H.stringReplaceAllUnchecked(t2, "_", "-");
- return t1.globalVariableExists$2$namespace(t2, module == null ? null : module.text) ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- R._EvaluateVisitor_closure0.prototype = {
- call$1: function($arguments) {
- var variable = J.$index$asx($arguments, 0).assertString$1("name"),
- t1 = this.$this._evaluate$_environment,
- t2 = variable.text;
- t2.toString;
- return t1.getVariable$1(H.stringReplaceAllUnchecked(t2, "_", "-")) != null ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- R._EvaluateVisitor_closure1.prototype = {
- call$1: function($arguments) {
- var module, t2, t3, t4,
- t1 = J.getInterceptor$asx($arguments),
- variable = t1.$index($arguments, 0).assertString$1("name");
- t1 = t1.$index($arguments, 1).get$realNull();
- module = t1 == null ? null : t1.assertString$1("module");
- t1 = this.$this;
- t2 = t1._evaluate$_environment;
- t3 = variable.text;
- t3.toString;
- t4 = H.stringReplaceAllUnchecked(t3, "_", "-");
- return t2.getFunction$2$namespace(t4, module == null ? null : module.text) != null || t1._builtInFunctions.containsKey$1(t3) ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- R._EvaluateVisitor_closure2.prototype = {
- call$1: function($arguments) {
- var module, t2,
- t1 = J.getInterceptor$asx($arguments),
- variable = t1.$index($arguments, 0).assertString$1("name");
- t1 = t1.$index($arguments, 1).get$realNull();
- module = t1 == null ? null : t1.assertString$1("module");
- t1 = this.$this._evaluate$_environment;
- t2 = variable.text;
- t2.toString;
- t2 = H.stringReplaceAllUnchecked(t2, "_", "-");
- return t1.getMixin$2$namespace(t2, module == null ? null : module.text) != null ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- R._EvaluateVisitor_closure3.prototype = {
- call$1: function($arguments) {
- var t1 = this.$this._evaluate$_environment;
- if (!t1._inMixin)
- throw H.wrapException(E.SassScriptException$("content-exists() may only be called within a mixin."));
- return t1._content != null ? C.SassBoolean_true : C.SassBoolean_false;
- },
- $signature: 5
- };
- R._EvaluateVisitor_closure4.prototype = {
- call$1: function($arguments) {
- var t2, t3, t4,
- t1 = J.$index$asx($arguments, 0).assertString$1("module").text,
- module = this.$this._evaluate$_environment._environment$_modules.$index(0, t1);
- if (module == null)
- throw H.wrapException('There is no module with namespace "' + H.S(t1) + '".');
- t1 = F.Value;
- t2 = P.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
- for (t3 = module.get$variables().get$entries(), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
- t4 = t3.get$current(t3);
- t2.$indexSet(0, new D.SassString(t4.key, true), t4.value);
- }
- return new A.SassMap(H.ConstantMap_ConstantMap$from(t2, t1, t1));
- },
- $signature: 9
- };
- R._EvaluateVisitor_closure5.prototype = {
- call$1: function($arguments) {
- var t2, t3, t4,
- t1 = J.$index$asx($arguments, 0).assertString$1("module").text,
- module = this.$this._evaluate$_environment._environment$_modules.$index(0, t1);
- if (module == null)
- throw H.wrapException('There is no module with namespace "' + H.S(t1) + '".');
- t1 = F.Value;
- t2 = P.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
- for (t3 = module.get$functions(module).get$entries(), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
- t4 = t3.get$current(t3);
- t2.$indexSet(0, new D.SassString(t4.key, true), new F.SassFunction(t4.value));
- }
- return new A.SassMap(H.ConstantMap_ConstantMap$from(t2, t1, t1));
- },
- $signature: 9
- };
- R._EvaluateVisitor_closure6.prototype = {
- call$1: function($arguments) {
- var module, callable,
- t1 = J.getInterceptor$asx($arguments),
- $name = t1.$index($arguments, 0).assertString$1("name"),
- css = t1.$index($arguments, 1).get$isTruthy();
- t1 = t1.$index($arguments, 2).get$realNull();
- module = t1 == null ? null : t1.assertString$1("module");
- if (css && module != null)
- throw H.wrapException("$css and $module may not both be passed at once.");
- if (css)
- callable = new L.PlainCssCallable($name.text);
- else {
- t1 = this.$this;
- callable = t1._addExceptionSpan$2(t1._callableNode, new R._EvaluateVisitor__closure3(t1, $name, module));
- }
- if (callable != null)
- return new F.SassFunction(callable);
- throw H.wrapException("Function not found: " + $name.toString$0(0));
- },
- $signature: 32
- };
- R._EvaluateVisitor__closure3.prototype = {
- call$0: function() {
- var t2,
- t1 = this.name.text;
- t1.toString;
- t1 = H.stringReplaceAllUnchecked(t1, "_", "-");
- t2 = this.module;
- t2 = t2 == null ? null : t2.text;
- return this.$this._getFunction$2$namespace(t1, t2);
- }
- };
- R._EvaluateVisitor_closure7.prototype = {
- call$1: function($arguments) {
- var t2, t3, t4, t5, t6, t7, t8, invocation, callable,
- t1 = J.getInterceptor$asx($arguments),
- $function = t1.$index($arguments, 0),
- args = H.interceptedTypeCast(t1.$index($arguments, 1), "$isSassArgumentList");
- t1 = T.Expression;
- t2 = H.setRuntimeTypeInfo([], [t1]);
- t3 = P.String;
- t4 = this.$this;
- t5 = t4._callableNode.get$span();
- t6 = t4._callableNode.get$span();
- args._wereKeywordsAccessed = true;
- t7 = args._keywords;
- if (t7.get$isEmpty(t7))
- t7 = null;
- else {
- args._wereKeywordsAccessed = true;
- t8 = F.Value;
- t8 = new F.ValueExpression(new A.SassMap(H.ConstantMap_ConstantMap$from(Y.mapMap(t7, new R._EvaluateVisitor__closure1(), new R._EvaluateVisitor__closure2(), t3, t8, t8, t8), t8, t8)), t4._callableNode.get$span());
- t7 = t8;
- }
- invocation = X.ArgumentInvocation$(t2, P.LinkedHashMap_LinkedHashMap$_empty(t3, t1), t5, t7, new F.ValueExpression(args, t6));
- if ($function instanceof D.SassString) {
- N.warn("Passing a string to call() is deprecated and will be illegal\nin Dart Sass 2.0.0. Use call(get-function(" + $function.toString$0(0) + ")) instead.", true);
- return t4.visitFunctionExpression$1(new F.FunctionExpression(null, X.Interpolation$(H.setRuntimeTypeInfo([$function.text], [P.Object]), t4._callableNode.get$span()), invocation, t4._callableNode.get$span()));
- }
- callable = $function.assertFunction$1("function").callable;
- if (!!J.getInterceptor$(callable).$isCallable)
- return t4._runFunctionCallable$3(invocation, callable, t4._callableNode);
- else
- throw H.wrapException(E.SassScriptException$("The function " + H.S(callable.get$name()) + " is asynchronous.\nThis is probably caused by a bug in a Sass plugin."));
- },
- $signature: 0
- };
- R._EvaluateVisitor__closure1.prototype = {
- call$2: function(key, _) {
- return new D.SassString(key, false);
- }
- };
- R._EvaluateVisitor__closure2.prototype = {
- call$2: function(_, value) {
- return value;
- }
- };
- R._EvaluateVisitor_closure8.prototype = {
- call$1: function($arguments) {
- var withMap, values, configuration, t2, t3,
- t1 = J.getInterceptor$asx($arguments),
- url = P.Uri_parse(t1.$index($arguments, 0).assertString$1("module").text);
- t1 = t1.$index($arguments, 1).get$realNull();
- t1 = t1 == null ? null : t1.assertMap$1("with");
- withMap = t1 == null ? null : t1.contents;
- if (withMap != null) {
- values = P.LinkedHashMap_LinkedHashMap$_empty(P.String, Z.ConfiguredValue);
- t1 = this.$this;
- withMap.forEach$1(0, new R._EvaluateVisitor__closure(values, t1._callableNode.get$span()));
- configuration = new A.Configuration(values, t1._callableNode, false);
- } else
- configuration = C.Configuration_Map_empty_null_true;
- t1 = this.$this;
- t2 = t1._callableNode;
- t3 = t2.get$span();
- t3 = t3 == null ? null : t3.file.url;
- t1._loadModule$7$baseUrl$configuration$namesInErrors(url, "load-css()", t2, new R._EvaluateVisitor__closure0(t1), t3, configuration, true);
- t1._assertConfigurationIsEmpty$2$nameInError(configuration, true);
- return;
- },
- $signature: 23
- };
- R._EvaluateVisitor__closure.prototype = {
- call$2: function(variable, value) {
- var $name,
- t1 = variable.assertString$1("with key").text;
- t1.toString;
- $name = H.stringReplaceAllUnchecked(t1, "_", "-");
- t1 = this.values;
- if (t1.containsKey$1($name))
- throw H.wrapException("The variable $" + $name + " was configured twice.");
- t1.$indexSet(0, $name, new Z.ConfiguredValue(value, this.span, null));
- }
- };
- R._EvaluateVisitor__closure0.prototype = {
- call$1: function(module) {
- var t1 = this.$this;
- return t1._combineCss$2$clone(module, true).accept$1(t1);
- }
- };
- R._EvaluateVisitor_run_closure.prototype = {
- call$0: function() {
- var _this = this,
- t1 = _this.node,
- t2 = t1.span,
- url = t2 == null ? null : t2.file.url;
- if (url != null) {
- t2 = _this.$this;
- t2._activeModules.$indexSet(0, url, null);
- if (t2._nodeImporter != null)
- if (url.get$scheme() === "file")
- t2._includedFiles.add$1(0, $.$get$context().style.pathFromUri$1(M._parseUri(url)));
- else if (url.toString$0(0) !== "stdin")
- t2._includedFiles.add$1(0, url.toString$0(0));
- }
- t2 = _this.$this;
- return new E.EvaluateResult(t2._combineCss$1(t2._execute$2(_this.importer, t1)), t2._includedFiles);
- }
- };
- R._EvaluateVisitor_runExpression_closure.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = this.expression;
- return t1._withFakeStylesheet$3(this.importer, t2, new R._EvaluateVisitor_runExpression__closure(t1, t2));
- }
- };
- R._EvaluateVisitor_runExpression__closure.prototype = {
- call$0: function() {
- return this.expression.accept$1(this.$this);
- }
- };
- R._EvaluateVisitor_runStatement_closure.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = this.statement;
- return t1._withFakeStylesheet$3(this.importer, t2, new R._EvaluateVisitor_runStatement__closure(t1, t2));
- }
- };
- R._EvaluateVisitor_runStatement__closure.prototype = {
- call$0: function() {
- return this.statement.accept$1(this.$this);
- }
- };
- R._EvaluateVisitor__withWarnCallback_closure.prototype = {
- call$2: function(message, deprecation) {
- var t1 = this.$this,
- t2 = t1._importSpan;
- return t1._warn$3$deprecation(message, t2 == null ? t1._callableNode.get$span() : t2, deprecation);
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- R._EvaluateVisitor__loadModule_closure.prototype = {
- call$0: function() {
- var module, error, error0, error1, error2, message, previousLoad, exception, _this = this,
- t1 = _this.$this,
- t2 = _this.nodeWithSpan,
- result = t1._loadStylesheet$3$baseUrl(J.toString$0$(_this.url), t2.get$span(), _this.baseUrl),
- importer = result.item1,
- stylesheet = result.item2,
- canonicalUrl = stylesheet.span.file.url,
- t3 = t1._activeModules;
- if (t3.containsKey$1(canonicalUrl)) {
- message = _this.namesInErrors ? "Module loop: " + H.S($.$get$context().prettyUri$1(canonicalUrl)) + " is already being loaded." : "Module loop: this module is already being loaded.";
- previousLoad = t3.$index(0, canonicalUrl);
- throw H.wrapException(previousLoad == null ? t1._evaluate$_exception$1(message) : t1._multiSpanException$3(message, "new load", P.LinkedHashMap_LinkedHashMap$_literal([previousLoad.get$span(), "original load"], Y.FileSpan, P.String)));
- }
- t3.$indexSet(0, canonicalUrl, t2);
- module = null;
- try {
- module = t1._execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, _this.configuration, _this.namesInErrors, t2);
- } finally {
- t3.remove$1(0, canonicalUrl);
- }
- try {
- _this.callback.call$1(module);
- } catch (exception) {
- t2 = H.unwrapException(exception);
- t3 = J.getInterceptor$(t2);
- if (!!t3.$isSassRuntimeException)
- throw exception;
- else if (!!t3.$isMultiSpanSassException) {
- error = t2;
- throw H.wrapException(E.MultiSpanSassRuntimeException$(error._span_exception$_message, error.get$span(), error.primaryLabel, error.secondarySpans, t1._stackTrace$1(error.get$span())));
- } else if (!!t3.$isSassException) {
- error0 = t2;
- throw H.wrapException(t1._evaluate$_exception$2(error0._span_exception$_message, error0.get$span()));
- } else if (!!t3.$isMultiSpanSassScriptException) {
- error1 = t2;
- throw H.wrapException(t1._multiSpanException$3(error1.message, error1.primaryLabel, error1.secondarySpans));
- } else if (!!t3.$isSassScriptException) {
- error2 = t2;
- throw H.wrapException(t1._evaluate$_exception$1(error2.message));
- } else
- throw exception;
- }
- }
- };
- R._EvaluateVisitor__execute_closure.prototype = {
- call$0: function() {
- var t2, t3, t4, t5, css, _this = this,
- t1 = _this.$this,
- oldImporter = t1._importer,
- oldStylesheet = t1._stylesheet,
- oldRoot = t1._root,
- oldParent = t1._evaluate$_parent,
- oldEndOfImports = t1._endOfImports,
- oldOutOfOrderImports = t1._outOfOrderImports,
- oldExtender = t1._extender,
- oldStyleRule = t1._styleRule,
- oldMediaQueries = t1._mediaQueries,
- oldDeclarationName = t1._declarationName,
- oldInUnknownAtRule = t1._inUnknownAtRule,
- oldAtRootExcludingStyleRule = t1._atRootExcludingStyleRule,
- oldInKeyframes = t1._inKeyframes,
- oldConfiguration = t1._configuration;
- t1._importer = _this.importer;
- t2 = t1._stylesheet = _this.stylesheet;
- t3 = t2.span;
- t4 = B.ModifiableCssNode;
- t5 = H.setRuntimeTypeInfo([], [t4]);
- t1._evaluate$_parent = t1._root = new V.ModifiableCssStylesheet(t3, new P.UnmodifiableListView(t5, [t4]), t5);
- t1._endOfImports = 0;
- t1._outOfOrderImports = null;
- t1._extender = _this.extender;
- t1._declarationName = t1._mediaQueries = t1._styleRule = null;
- t1._inKeyframes = t1._atRootExcludingStyleRule = t1._inUnknownAtRule = false;
- t4 = _this.configuration;
- if (t4 != null)
- t1._configuration = t4;
- t1.visitStylesheet$1(t2);
- css = t1._outOfOrderImports == null ? t1._root : new V.CssStylesheet(new P.UnmodifiableListView(t1._addOutOfOrderImports$0(), [B.CssNode]), t3);
- _this._box_0.css = css;
- t1._importer = oldImporter;
- t1._stylesheet = oldStylesheet;
- t1._root = oldRoot;
- t1._evaluate$_parent = oldParent;
- t1._endOfImports = oldEndOfImports;
- t1._outOfOrderImports = oldOutOfOrderImports;
- t1._extender = oldExtender;
- t1._styleRule = oldStyleRule;
- t1._mediaQueries = oldMediaQueries;
- t1._declarationName = oldDeclarationName;
- t1._inUnknownAtRule = oldInUnknownAtRule;
- t1._atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
- t1._inKeyframes = oldInKeyframes;
- t1._configuration = oldConfiguration;
- }
- };
- R._EvaluateVisitor__combineCss_closure.prototype = {
- call$1: function(module) {
- return module.get$transitivelyContainsCss();
- }
- };
- R._EvaluateVisitor__combineCss_closure0.prototype = {
- call$1: function(target) {
- return !this.selectors.contains$1(0, target);
- }
- };
- R._EvaluateVisitor__combineCss_closure1.prototype = {
- call$1: function(module) {
- return module.cloneCss$0();
- }
- };
- R._EvaluateVisitor__extendModules_closure.prototype = {
- call$1: function(target) {
- return !this.originalSelectors.contains$1(0, target);
- }
- };
- R._EvaluateVisitor__extendModules_closure0.prototype = {
- call$0: function() {
- return H.setRuntimeTypeInfo([], [F.Extender]);
- }
- };
- R._EvaluateVisitor__topologicalModules_visitModule.prototype = {
- call$1: function(module) {
- var t1, t2, t3, _i, upstream;
- for (t1 = module.get$upstream(), t2 = t1.length, t3 = this.seen, _i = 0; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- upstream = t1[_i];
- if (upstream.get$transitivelyContainsCss() && t3.add$1(0, upstream))
- this.call$1(upstream);
- }
- this.sorted.addFirst$1(module);
- }
- };
- R._EvaluateVisitor_visitAtRootRule_closure.prototype = {
- call$0: function() {
- var t1 = S.SpanScanner$(this.resolved, null);
- return new V.AtRootQueryParser(t1, this.$this._logger).parse$0();
- }
- };
- R._EvaluateVisitor_visitAtRootRule_closure0.prototype = {
- call$0: function() {
- var t1, t2, t3, _i;
- for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
- t1[_i].accept$1(t3);
- }
- };
- R._EvaluateVisitor_visitAtRootRule_closure1.prototype = {
- call$0: function() {
- var t1, t2, t3, _i;
- for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
- t1[_i].accept$1(t3);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- R._EvaluateVisitor__scopeForAtRoot_closure.prototype = {
- call$1: function(callback) {
- var t1 = this.$this,
- oldParent = t1._evaluate$_parent;
- t1._evaluate$_parent = this.newParent;
- t1._evaluate$_environment.scope$1$2$when(callback, this.node.hasDeclarations, -1);
- t1._evaluate$_parent = oldParent;
- }
- };
- R._EvaluateVisitor__scopeForAtRoot_closure0.prototype = {
- call$1: function(callback) {
- var t1 = this.$this,
- oldAtRootExcludingStyleRule = t1._atRootExcludingStyleRule;
- t1._atRootExcludingStyleRule = true;
- this.innerScope.call$1(callback);
- t1._atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
- }
- };
- R._EvaluateVisitor__scopeForAtRoot_closure1.prototype = {
- call$1: function(callback) {
- return this.$this._withMediaQueries$2(null, new R._EvaluateVisitor__scopeForAtRoot__closure(this.innerScope, callback));
- }
- };
- R._EvaluateVisitor__scopeForAtRoot__closure.prototype = {
- call$0: function() {
- return this.innerScope.call$1(this.callback);
- }
- };
- R._EvaluateVisitor__scopeForAtRoot_closure2.prototype = {
- call$1: function(callback) {
- var t1 = this.$this,
- wasInKeyframes = t1._inKeyframes;
- t1._inKeyframes = false;
- this.innerScope.call$1(callback);
- t1._inKeyframes = wasInKeyframes;
- }
- };
- R._EvaluateVisitor__scopeForAtRoot_closure3.prototype = {
- call$1: function($parent) {
- return !!J.getInterceptor$($parent).$isCssAtRule;
- }
- };
- R._EvaluateVisitor__scopeForAtRoot_closure4.prototype = {
- call$1: function(callback) {
- var t1 = this.$this,
- wasInUnknownAtRule = t1._inUnknownAtRule;
- t1._inUnknownAtRule = false;
- this.innerScope.call$1(callback);
- t1._inUnknownAtRule = wasInUnknownAtRule;
- }
- };
- R._EvaluateVisitor_visitContentRule_closure.prototype = {
- call$0: function() {
- var t1, t2, t3, _i;
- for (t1 = this.content.declaration.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
- t1[_i].accept$1(t3);
- return;
- }
- };
- R._EvaluateVisitor_visitDeclaration_closure.prototype = {
- call$0: function() {
- var t1, t2, t3, _i;
- for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
- t1[_i].accept$1(t3);
- }
- };
- R._EvaluateVisitor_visitEachRule_closure.prototype = {
- call$1: function(value) {
- return this.$this._evaluate$_environment.setLocalVariable$3(C.JSArray_methods.get$first(this.node.variables), value.withoutSlash$0(), this.nodeWithSpan);
- }
- };
- R._EvaluateVisitor_visitEachRule_closure0.prototype = {
- call$1: function(value) {
- return this.$this._setMultipleVariables$3(this.node.variables, value, this.nodeWithSpan);
- }
- };
- R._EvaluateVisitor_visitEachRule_closure1.prototype = {
- call$0: function() {
- var _this = this,
- t1 = _this.$this;
- return t1._handleReturn$2(_this.list.get$asList(), new R._EvaluateVisitor_visitEachRule__closure(t1, _this.setVariables, _this.node));
- }
- };
- R._EvaluateVisitor_visitEachRule__closure.prototype = {
- call$1: function(element) {
- var t1;
- this.setVariables.call$1(element);
- t1 = this.$this;
- return t1._handleReturn$2(this.node.children, new R._EvaluateVisitor_visitEachRule___closure(t1));
- }
- };
- R._EvaluateVisitor_visitEachRule___closure.prototype = {
- call$1: function(child) {
- return child.accept$1(this.$this);
- }
- };
- R._EvaluateVisitor_visitExtendRule_closure.prototype = {
- call$0: function() {
- return D.SelectorList_SelectorList$parse(B.trimAscii(this.targetText.value, true), false, true, this.$this._logger);
- }
- };
- R._EvaluateVisitor_visitAtRule_closure.prototype = {
- call$0: function() {
- var t3, _i,
- t1 = this.$this,
- t2 = t1._styleRule;
- if (!(t2 != null && !t1._atRootExcludingStyleRule) || t1._inKeyframes)
- for (t2 = this.node.children, t3 = t2.length, _i = 0; _i < t3; ++_i)
- t2[_i].accept$1(t1);
- else
- t1._withParent$2$3$scopeWhen(X.ModifiableCssStyleRule$(t2.selector, t2.span, t2.originalSelector), new R._EvaluateVisitor_visitAtRule__closure(t1, this.node), false, X.ModifiableCssStyleRule, P.Null);
- }
- };
- R._EvaluateVisitor_visitAtRule__closure.prototype = {
- call$0: function() {
- var t1, t2, t3, _i;
- for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
- t1[_i].accept$1(t3);
- }
- };
- R._EvaluateVisitor_visitAtRule_closure0.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- R._EvaluateVisitor_visitForRule_closure.prototype = {
- call$0: function() {
- return this.node.from.accept$1(this.$this).assertNumber$0();
- }
- };
- R._EvaluateVisitor_visitForRule_closure0.prototype = {
- call$0: function() {
- return this.node.to.accept$1(this.$this).assertNumber$0();
- }
- };
- R._EvaluateVisitor_visitForRule_closure1.prototype = {
- call$0: function() {
- var t1 = this.toNumber,
- t2 = t1.numeratorUnits;
- t1 = t1.denominatorUnits;
- return T.SassNumber$withUnits(this.fromNumber.valueInUnits$2(t2, t1), t1, t2).assertInt$0();
- }
- };
- R._EvaluateVisitor_visitForRule_closure2.prototype = {
- call$0: function() {
- return this.toNumber.assertInt$0();
- }
- };
- R._EvaluateVisitor_visitForRule_closure3.prototype = {
- call$0: function() {
- var i, t3, t4, t5, t6, result, _this = this,
- t1 = _this.$this,
- t2 = _this.node,
- nodeWithSpan = t1._expressionNode$1(t2.from);
- for (i = _this.from, t3 = _this._box_0, t4 = _this.direction, t5 = t2.children, t2 = t2.variable; i !== t3.to; i += t4) {
- t6 = t1._evaluate$_environment;
- t6.setLocalVariable$3(t2, new T.SassNumber(i, C.List_empty, C.List_empty, null), nodeWithSpan);
- result = t1._handleReturn$2(t5, new R._EvaluateVisitor_visitForRule__closure(t1));
- if (result != null)
- return result;
- }
- return;
- }
- };
- R._EvaluateVisitor_visitForRule__closure.prototype = {
- call$1: function(child) {
- return child.accept$1(this.$this);
- }
- };
- R._EvaluateVisitor_visitForwardRule_closure.prototype = {
- call$1: function(module) {
- this.$this._evaluate$_environment.forwardModule$2(module, this.node);
- }
- };
- R._EvaluateVisitor_visitForwardRule_closure0.prototype = {
- call$1: function(module) {
- this.$this._evaluate$_environment.forwardModule$2(module, this.node);
- }
- };
- R._EvaluateVisitor__assertConfigurationIsEmpty_closure.prototype = {
- call$2: function($name, value) {
- var t1 = this.only;
- if (t1 != null && !t1.contains$1(0, $name))
- return;
- t1 = this.nameInError ? "$" + H.S($name) + " was not declared with !default in the @used module." : "This variable was not declared with !default in the @used module.";
- throw H.wrapException(this.$this._evaluate$_exception$2(t1, value.configurationSpan));
- }
- };
- R._EvaluateVisitor_visitIfRule_closure.prototype = {
- call$0: function() {
- var t1 = this.$this;
- return t1._handleReturn$2(this._box_0.clause.children, new R._EvaluateVisitor_visitIfRule__closure(t1));
- }
- };
- R._EvaluateVisitor_visitIfRule__closure.prototype = {
- call$1: function(child) {
- return child.accept$1(this.$this);
- }
- };
- R._EvaluateVisitor__visitDynamicImport_closure.prototype = {
- call$0: function() {
- var previousLoad, oldImporter, oldStylesheet, t5, t6, t7, t8, t9, t10, t11, environment, module, visitor, _null = null,
- _s34_ = "This file is already being loaded.",
- _box_0 = {},
- t1 = this.$this,
- t2 = this.$import,
- result = t1._loadStylesheet$3$forImport(t2.url, t2.span, true),
- importer = result.item1,
- stylesheet = result.item2,
- t3 = stylesheet.span,
- url = t3.file.url,
- t4 = t1._activeModules;
- if (t4.containsKey$1(url)) {
- previousLoad = t4.$index(0, url);
- throw H.wrapException(previousLoad == null ? t1._evaluate$_exception$1(_s34_) : t1._multiSpanException$3(_s34_, "new load", P.LinkedHashMap_LinkedHashMap$_literal([previousLoad.get$span(), "original load"], Y.FileSpan, P.String)));
- }
- t4.$indexSet(0, url, t2);
- t2 = new P.UnmodifiableListView(stylesheet._uses, [T.UseRule]);
- if (t2.get$length(t2) === 0) {
- t2 = new P.UnmodifiableListView(stylesheet._forwards, [L.ForwardRule]);
- t2 = t2.get$length(t2) === 0;
- } else
- t2 = false;
- if (t2) {
- oldImporter = t1._importer;
- oldStylesheet = t1._stylesheet;
- t1._importer = importer;
- t1._stylesheet = stylesheet;
- t1.visitStylesheet$1(stylesheet);
- t1._importer = oldImporter;
- t1._stylesheet = oldStylesheet;
- t4.remove$1(0, url);
- return;
- }
- _box_0.children = null;
- t2 = t1._evaluate$_environment;
- t5 = P.String;
- t6 = [G.Module, D.Callable];
- t7 = H.setRuntimeTypeInfo([], [t6]);
- t8 = t2._variables;
- t8 = H.setRuntimeTypeInfo(t8.slice(0), [H.getTypeArgumentByIndex(t8, 0)]);
- t9 = t2._variableNodes;
- if (t9 == null)
- t9 = _null;
- else
- t9 = H.setRuntimeTypeInfo(t9.slice(0), [H.getTypeArgumentByIndex(t9, 0)]);
- t10 = t2._functions;
- t10 = H.setRuntimeTypeInfo(t10.slice(0), [H.getTypeArgumentByIndex(t10, 0)]);
- t11 = t2._mixins;
- t11 = H.setRuntimeTypeInfo(t11.slice(0), [H.getTypeArgumentByIndex(t11, 0)]);
- environment = O.Environment$_(P.LinkedHashMap_LinkedHashMap$_empty(t5, t6), P.LinkedHashMap_LinkedHashMap$_empty(t5, B.AstNode), _null, _null, _null, _null, _null, t7, t8, t9, t10, t11, t2._content);
- t1._withEnvironment$2(environment, new R._EvaluateVisitor__visitDynamicImport__closure(_box_0, t1, importer, stylesheet, environment));
- module = O._EnvironmentModule__EnvironmentModule(environment, new V.CssStylesheet(new P.UnmodifiableListView(C.List_empty1, [B.CssNode]), t3), C.C_EmptyExtender, environment._forwardedModules);
- t1._evaluate$_environment.importForwards$1(module);
- if (module.transitivelyContainsCss)
- t1._combineCss$2$clone(module, module.transitivelyContainsExtensions).accept$1(t1);
- visitor = new R._ImportedCssVisitor(t1);
- for (t1 = J.get$iterator$ax(_box_0.children); t1.moveNext$0();)
- t1.get$current(t1).accept$1(visitor);
- t4.remove$1(0, url);
- }
- };
- R._EvaluateVisitor__visitDynamicImport__closure.prototype = {
- call$0: function() {
- var t2, t3, t4, _this = this,
- t1 = _this.$this,
- oldImporter = t1._importer,
- oldStylesheet = t1._stylesheet,
- oldRoot = t1._root,
- oldParent = t1._evaluate$_parent,
- oldEndOfImports = t1._endOfImports,
- oldOutOfOrderImports = t1._outOfOrderImports,
- oldConfiguration = t1._configuration;
- t1._importer = _this.importer;
- t2 = t1._stylesheet = _this.stylesheet;
- t3 = B.ModifiableCssNode;
- t4 = H.setRuntimeTypeInfo([], [t3]);
- t1._evaluate$_parent = t1._root = new V.ModifiableCssStylesheet(t2.span, new P.UnmodifiableListView(t4, [t3]), t4);
- t1._endOfImports = 0;
- t1._outOfOrderImports = null;
- t3 = new P.UnmodifiableListView(t2._forwards, [L.ForwardRule]);
- if (!t3.get$isEmpty(t3))
- t1._configuration = _this.environment.toImplicitConfiguration$0();
- t1.visitStylesheet$1(t2);
- _this._box_0.children = t1._addOutOfOrderImports$0();
- t1._importer = oldImporter;
- t1._stylesheet = oldStylesheet;
- t1._root = oldRoot;
- t1._evaluate$_parent = oldParent;
- t1._endOfImports = oldEndOfImports;
- t1._outOfOrderImports = oldOutOfOrderImports;
- t1._configuration = oldConfiguration;
- }
- };
- R._EvaluateVisitor_visitIncludeRule_closure.prototype = {
- call$0: function() {
- var t1 = this.node;
- return this.$this._evaluate$_environment.getMixin$2$namespace(t1.name, t1.namespace);
- }
- };
- R._EvaluateVisitor_visitIncludeRule_closure0.prototype = {
- call$0: function() {
- return this.node.get$spanWithoutContent();
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- R._EvaluateVisitor_visitIncludeRule_closure1.prototype = {
- call$0: function() {
- var _this = this,
- t1 = _this.$this,
- t2 = t1._evaluate$_environment,
- oldContent = t2._content;
- t2._content = _this.contentCallable;
- new R._EvaluateVisitor_visitIncludeRule__closure(t1, _this.mixin, _this.nodeWithSpan).call$0();
- t2._content = oldContent;
- return;
- }
- };
- R._EvaluateVisitor_visitIncludeRule__closure.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = t1._evaluate$_environment,
- oldInMixin = t2._inMixin;
- t2._inMixin = true;
- new R._EvaluateVisitor_visitIncludeRule___closure(t1, this.mixin, this.nodeWithSpan).call$0();
- t2._inMixin = oldInMixin;
- return;
- }
- };
- R._EvaluateVisitor_visitIncludeRule___closure.prototype = {
- call$0: function() {
- var t1, t2, t3, t4, _i;
- for (t1 = this.mixin.declaration.children, t2 = t1.length, t3 = this.$this, t4 = this.nodeWithSpan, _i = 0; _i < t2; ++_i)
- t3._addErrorSpan$2(t4, new R._EvaluateVisitor_visitIncludeRule____closure(t3, t1[_i]));
- }
- };
- R._EvaluateVisitor_visitIncludeRule____closure.prototype = {
- call$0: function() {
- return this.statement.accept$1(this.$this);
- }
- };
- R._EvaluateVisitor_visitMediaRule_closure.prototype = {
- call$0: function() {
- var _this = this,
- t1 = _this.$this,
- t2 = _this.mergedQueries;
- if (t2 == null)
- t2 = _this.queries;
- t1._withMediaQueries$2(t2, new R._EvaluateVisitor_visitMediaRule__closure(t1, _this.node));
- }
- };
- R._EvaluateVisitor_visitMediaRule__closure.prototype = {
- call$0: function() {
- var t3, _i,
- t1 = this.$this,
- t2 = t1._styleRule;
- if (!(t2 != null && !t1._atRootExcludingStyleRule))
- for (t2 = this.node.children, t3 = t2.length, _i = 0; _i < t3; ++_i)
- t2[_i].accept$1(t1);
- else
- t1._withParent$2$3$scopeWhen(X.ModifiableCssStyleRule$(t2.selector, t2.span, t2.originalSelector), new R._EvaluateVisitor_visitMediaRule___closure(t1, this.node), false, X.ModifiableCssStyleRule, P.Null);
- }
- };
- R._EvaluateVisitor_visitMediaRule___closure.prototype = {
- call$0: function() {
- var t1, t2, t3, _i;
- for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
- t1[_i].accept$1(t3);
- }
- };
- R._EvaluateVisitor_visitMediaRule_closure0.prototype = {
- call$1: function(node) {
- var t1 = J.getInterceptor$(node);
- if (!t1.$isCssStyleRule)
- t1 = this.mergedQueries != null && !!t1.$isCssMediaRule;
- else
- t1 = true;
- return t1;
- }
- };
- R._EvaluateVisitor__visitMediaQueries_closure.prototype = {
- call$0: function() {
- var t1 = S.SpanScanner$(this.resolved, null);
- return new F.MediaQueryParser(t1, this.$this._logger).parse$0();
- }
- };
- R._EvaluateVisitor_visitStyleRule_closure.prototype = {
- call$0: function() {
- var t1 = S.SpanScanner$(this.selectorText.value, null);
- return new E.KeyframeSelectorParser(t1, this.$this._logger).parse$0();
- }
- };
- R._EvaluateVisitor_visitStyleRule_closure0.prototype = {
- call$0: function() {
- var t1, t2, t3, _i;
- for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
- t1[_i].accept$1(t3);
- }
- };
- R._EvaluateVisitor_visitStyleRule_closure1.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- R._EvaluateVisitor_visitStyleRule_closure2.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = !t1._stylesheet.plainCss;
- return D.SelectorList_SelectorList$parse(this.selectorText.value, t2, t2, t1._logger);
- }
- };
- R._EvaluateVisitor_visitStyleRule_closure3.prototype = {
- call$0: function() {
- var t1 = this._box_0.parsedSelector,
- t2 = this.$this,
- t3 = t2._styleRule;
- t3 = t3 == null ? null : t3.originalSelector;
- return t1.resolveParentSelectors$2$implicitParent(t3, !t2._atRootExcludingStyleRule);
- }
- };
- R._EvaluateVisitor_visitStyleRule_closure4.prototype = {
- call$0: function() {
- var t1 = this.$this;
- t1._withStyleRule$2(this.rule, new R._EvaluateVisitor_visitStyleRule__closure(t1, this.node));
- }
- };
- R._EvaluateVisitor_visitStyleRule__closure.prototype = {
- call$0: function() {
- var t1, t2, t3, _i;
- for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
- t1[_i].accept$1(t3);
- }
- };
- R._EvaluateVisitor_visitStyleRule_closure5.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- R._EvaluateVisitor_visitSupportsRule_closure.prototype = {
- call$0: function() {
- var t3, _i,
- t1 = this.$this,
- t2 = t1._styleRule;
- if (!(t2 != null && !t1._atRootExcludingStyleRule))
- for (t2 = this.node.children, t3 = t2.length, _i = 0; _i < t3; ++_i)
- t2[_i].accept$1(t1);
- else
- t1._withParent$2$2(X.ModifiableCssStyleRule$(t2.selector, t2.span, t2.originalSelector), new R._EvaluateVisitor_visitSupportsRule__closure(t1, this.node), X.ModifiableCssStyleRule, P.Null);
- }
- };
- R._EvaluateVisitor_visitSupportsRule__closure.prototype = {
- call$0: function() {
- var t1, t2, t3, _i;
- for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
- t1[_i].accept$1(t3);
- }
- };
- R._EvaluateVisitor_visitSupportsRule_closure0.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- R._EvaluateVisitor_visitVariableDeclaration_closure.prototype = {
- call$0: function() {
- var t1 = this.override;
- this.$this._evaluate$_environment.setVariable$4$global(this.node.name, t1.value, t1.assignmentNode, true);
- }
- };
- R._EvaluateVisitor_visitVariableDeclaration_closure0.prototype = {
- call$0: function() {
- var t1 = this.node;
- return this.$this._evaluate$_environment.getVariable$2$namespace(t1.name, t1.namespace);
- }
- };
- R._EvaluateVisitor_visitVariableDeclaration_closure1.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = this.node;
- t1._evaluate$_environment.setVariable$5$global$namespace(t2.name, this.value, t1._expressionNode$1(t2.expression), t2.isGlobal, t2.namespace);
- }
- };
- R._EvaluateVisitor_visitUseRule_closure.prototype = {
- call$1: function(module) {
- var t1 = this.node;
- this.$this._evaluate$_environment.addModule$3$namespace(module, t1, t1.namespace);
- }
- };
- R._EvaluateVisitor_visitWarnRule_closure.prototype = {
- call$0: function() {
- return this.node.expression.accept$1(this.$this);
- }
- };
- R._EvaluateVisitor_visitWhileRule_closure.prototype = {
- call$0: function() {
- var t1, t2, t3, result;
- for (t1 = this.node, t2 = t1.condition, t3 = this.$this, t1 = t1.children; t2.accept$1(t3).get$isTruthy();) {
- result = t3._handleReturn$2(t1, new R._EvaluateVisitor_visitWhileRule__closure(t3));
- if (result != null)
- return result;
- }
- return;
- }
- };
- R._EvaluateVisitor_visitWhileRule__closure.prototype = {
- call$1: function(child) {
- return child.accept$1(this.$this);
- }
- };
- R._EvaluateVisitor_visitBinaryOperationExpression_closure.prototype = {
- call$0: function() {
- var right, result,
- t1 = this.node,
- t2 = this.$this,
- left = t1.left.accept$1(t2);
- switch (t1.operator) {
- case C.BinaryOperator_kjl:
- right = t1.right.accept$1(t2);
- left.toString;
- t1 = N.serializeValue(left, false, true) + "=";
- right.toString;
- return new D.SassString(t1 + N.serializeValue(right, false, true), false);
- case C.BinaryOperator_or_or_1:
- return left.get$isTruthy() ? left : t1.right.accept$1(t2);
- case C.BinaryOperator_and_and_2:
- return left.get$isTruthy() ? t1.right.accept$1(t2) : left;
- case C.BinaryOperator_YlX:
- return J.$eq$(left, t1.right.accept$1(t2)) ? C.SassBoolean_true : C.SassBoolean_false;
- case C.BinaryOperator_i5H:
- return !J.$eq$(left, t1.right.accept$1(t2)) ? C.SassBoolean_true : C.SassBoolean_false;
- case C.BinaryOperator_AcR0:
- return left.greaterThan$1(t1.right.accept$1(t2));
- case C.BinaryOperator_1da:
- return left.greaterThanOrEquals$1(t1.right.accept$1(t2));
- case C.BinaryOperator_8qt:
- return left.lessThan$1(t1.right.accept$1(t2));
- case C.BinaryOperator_33h:
- return left.lessThanOrEquals$1(t1.right.accept$1(t2));
- case C.BinaryOperator_AcR:
- return left.plus$1(t1.right.accept$1(t2));
- case C.BinaryOperator_iyO:
- return left.minus$1(t1.right.accept$1(t2));
- case C.BinaryOperator_O1M:
- return left.times$1(t1.right.accept$1(t2));
- case C.BinaryOperator_RTB:
- right = t1.right.accept$1(t2);
- result = left.dividedBy$1(right);
- if (t1.allowsSlash && !!left.$isSassNumber && right instanceof T.SassNumber)
- return H.interceptedTypeCast(result, "$isSassNumber").withSlash$2(left, right);
- else
- return result;
- case C.BinaryOperator_2ad:
- return left.modulo$1(t1.right.accept$1(t2));
- default:
- return;
- }
- }
- };
- R._EvaluateVisitor_visitVariableExpression_closure.prototype = {
- call$0: function() {
- var t1 = this.node;
- return this.$this._evaluate$_environment.getVariable$2$namespace(t1.name, t1.namespace);
- }
- };
- R._EvaluateVisitor_visitListExpression_closure.prototype = {
- call$1: function(expression) {
- return expression.accept$1(this.$this);
- }
- };
- R._EvaluateVisitor_visitFunctionExpression_closure.prototype = {
- call$0: function() {
- var t1 = this.node.namespace,
- t2 = this.plainName;
- if (t1 == null)
- t2 = H.stringReplaceAllUnchecked(t2, "_", "-");
- return this.$this._getFunction$2$namespace(t2, t1);
- }
- };
- R._EvaluateVisitor_visitFunctionExpression_closure0.prototype = {
- call$0: function() {
- var t1 = this.node;
- return this.$this._runFunctionCallable$3(t1.$arguments, this._box_0.$function, t1);
- }
- };
- R._EvaluateVisitor__runUserDefinedCallable_closure.prototype = {
- call$0: function() {
- var _this = this,
- t1 = _this.$this,
- t2 = _this.callable;
- return t1._withEnvironment$2(t2.environment.closure$0(), new R._EvaluateVisitor__runUserDefinedCallable__closure(t1, _this.evaluated, t2, _this.nodeWithSpan, _this.run));
- }
- };
- R._EvaluateVisitor__runUserDefinedCallable__closure.prototype = {
- call$0: function() {
- var _this = this,
- t1 = _this.$this;
- return t1._evaluate$_environment.scope$1$1(new R._EvaluateVisitor__runUserDefinedCallable___closure(t1, _this.evaluated, _this.callable, _this.nodeWithSpan, _this.run), F.Value);
- }
- };
- R._EvaluateVisitor__runUserDefinedCallable___closure.prototype = {
- call$0: function() {
- var declaredArguments, minLength, t8, t9, i, t10, t11, t12, argument, value, t13, rest, argumentList, result, argumentWord, argumentNames, _this = this, _null = null,
- t1 = _this.$this,
- t2 = _this.evaluated,
- t3 = t2.positional,
- t4 = t3.length,
- t5 = t2.named,
- t6 = _this.callable.declaration.$arguments,
- t7 = _this.nodeWithSpan;
- t1._verifyArguments$4(t4, t5, t6, t7);
- declaredArguments = t6.$arguments;
- t4 = declaredArguments.length;
- minLength = Math.min(t3.length, t4);
- for (t8 = t1._sourceMap, t9 = t2.positionalNodes, i = 0; i < minLength; ++i) {
- t10 = t1._evaluate$_environment;
- t11 = declaredArguments[i].name;
- t12 = t3[i].withoutSlash$0();
- t10.setLocalVariable$3(t11, t12, t8 ? t9[i] : _null);
- }
- for (i = t3.length, t9 = t2.namedNodes; i < t4; ++i) {
- argument = declaredArguments[i];
- t10 = argument.name;
- value = t5.remove$1(0, t10);
- if (value == null)
- value = argument.defaultValue.accept$1(t1);
- t11 = t1._evaluate$_environment;
- t12 = value.withoutSlash$0();
- if (t8) {
- t13 = t9.$index(0, t10);
- if (t13 == null)
- t13 = t1._expressionNode$1(argument.defaultValue);
- } else
- t13 = _null;
- t11.setLocalVariable$3(t10, t12, t13);
- }
- t8 = t6.restArgument;
- if (t8 != null) {
- rest = t3.length > t4 ? C.JSArray_methods.sublist$1(t3, t4) : C.List_empty6;
- t2 = t2.separator;
- if (t2 === C.ListSeparator_undecided)
- t2 = C.ListSeparator_comma;
- t3 = F.Value;
- argumentList = new D.SassArgumentList(H.ConstantMap_ConstantMap$from(t5, P.String, t3), P.List_List$unmodifiable(rest, t3), t2, false);
- argumentList.SassList$3$brackets(rest, t2, false);
- t1._evaluate$_environment.setLocalVariable$3(t8, argumentList, t7);
- } else
- argumentList = _null;
- result = _this.run.call$0();
- if (argumentList == null)
- return result;
- if (t5.get$isEmpty(t5))
- return result;
- if (argumentList._wereKeywordsAccessed)
- return result;
- t2 = t5.get$keys();
- argumentWord = B.pluralize("argument", t2.get$length(t2), _null);
- t5 = t5.get$keys();
- argumentNames = B.toSentence(H.MappedIterable_MappedIterable(t5, new R._EvaluateVisitor__runUserDefinedCallable____closure(), H.getRuntimeTypeArgument(t5, "Iterable", 0), P.Object), "or");
- throw H.wrapException(E.MultiSpanSassRuntimeException$("No " + argumentWord + " named " + H.S(argumentNames) + ".", t7.get$span(), "invocation", P.LinkedHashMap_LinkedHashMap$_literal([t6.get$spanWithName(), "declaration"], Y.FileSpan, P.String), t1._stackTrace$1(t7.get$span())));
- }
- };
- R._EvaluateVisitor__runUserDefinedCallable____closure.prototype = {
- call$1: function($name) {
- return "$" + H.S($name);
- }
- };
- R._EvaluateVisitor__runFunctionCallable_closure.prototype = {
- call$0: function() {
- var t1, t2, t3, t4, _i, $returnValue;
- for (t1 = this.callable.declaration, t2 = t1.children, t3 = t2.length, t4 = this.$this, _i = 0; _i < t3; ++_i) {
- $returnValue = t2[_i].accept$1(t4);
- if ($returnValue instanceof F.Value)
- return $returnValue;
- }
- throw H.wrapException(t4._evaluate$_exception$2("Function finished without @return.", t1.span));
- }
- };
- R._EvaluateVisitor__runBuiltInCallable_closure.prototype = {
- call$0: function() {
- return this.overload.verify$2(this.evaluated.positional.length, this.namedSet);
- }
- };
- R._EvaluateVisitor__runBuiltInCallable_closure0.prototype = {
- call$1: function($name) {
- return "$" + H.S($name);
- }
- };
- R._EvaluateVisitor__evaluateArguments_closure.prototype = {
- call$2: function(_, expression) {
- return expression.accept$1(this.$this);
- }
- };
- R._EvaluateVisitor__evaluateArguments_closure0.prototype = {
- call$2: function(_, expression) {
- return this.$this._expressionNode$1(expression);
- }
- };
- R._EvaluateVisitor__evaluateArguments_closure1.prototype = {
- call$2: function(key, value) {
- var t1;
- this.named.$indexSet(0, key, value);
- t1 = this.namedNodes;
- if (t1 != null)
- t1.$indexSet(0, key, this.restNodeForSpan);
- }
- };
- R._EvaluateVisitor__evaluateMacroArguments_closure.prototype = {
- call$1: function(value) {
- return new F.ValueExpression(value, null);
- }
- };
- R._EvaluateVisitor__evaluateMacroArguments_closure0.prototype = {
- call$1: function(value) {
- return new F.ValueExpression(value, null);
- }
- };
- R._EvaluateVisitor__evaluateMacroArguments_closure1.prototype = {
- call$2: function(key, value) {
- this.named.$indexSet(0, key, new F.ValueExpression(value, null));
- }
- };
- R._EvaluateVisitor__evaluateMacroArguments_closure2.prototype = {
- call$1: function(value) {
- return new F.ValueExpression(value, null);
- }
- };
- R._EvaluateVisitor__addRestMap_closure.prototype = {
- call$1: function(value) {
- return H.subtypeOfRuntimeTypeCast(value, this.T);
- }
- };
- R._EvaluateVisitor__addRestMap_closure0.prototype = {
- call$2: function(key, value) {
- var _this = this;
- if (key instanceof D.SassString)
- _this.values.$indexSet(0, key.text, _this._box_0.convert.call$1(value));
- else
- throw H.wrapException(_this.$this._evaluate$_exception$2("Variable keyword argument map must have string keys.\n" + H.S(key) + " is not a string in " + _this.map.toString$0(0) + ".", _this.nodeWithSpan.get$span()));
- }
- };
- R._EvaluateVisitor__verifyArguments_closure.prototype = {
- call$0: function() {
- return this.$arguments.verify$2(this.positional, new M.MapKeySet(this.named, [P.String]));
- }
- };
- R._EvaluateVisitor_visitStringExpression_closure.prototype = {
- call$1: function(value) {
- var t1, result;
- if (typeof value === "string")
- return value;
- H.interceptedTypeCast(value, "$isExpression");
- t1 = this.$this;
- result = value.accept$1(t1);
- return result instanceof D.SassString ? result.text : t1._evaluate$_serialize$3$quote(result, value, false);
- },
- $signature: 13
- };
- R._EvaluateVisitor_visitCssAtRule_closure.prototype = {
- call$0: function() {
- var t1, t2;
- for (t1 = this.node.children, t1 = new H.ListIterator(t1, t1.get$length(t1)), t2 = this.$this; t1.moveNext$0();)
- t1.__internal$_current.accept$1(t2);
- }
- };
- R._EvaluateVisitor_visitCssAtRule_closure0.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- R._EvaluateVisitor_visitCssKeyframeBlock_closure.prototype = {
- call$0: function() {
- var t1, t2;
- for (t1 = this.node.children, t1 = new H.ListIterator(t1, t1.get$length(t1)), t2 = this.$this; t1.moveNext$0();)
- t1.__internal$_current.accept$1(t2);
- }
- };
- R._EvaluateVisitor_visitCssKeyframeBlock_closure0.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- R._EvaluateVisitor_visitCssMediaRule_closure.prototype = {
- call$0: function() {
- var _this = this,
- t1 = _this.$this,
- t2 = _this.mergedQueries;
- if (t2 == null)
- t2 = _this.node.queries;
- t1._withMediaQueries$2(t2, new R._EvaluateVisitor_visitCssMediaRule__closure(t1, _this.node));
- }
- };
- R._EvaluateVisitor_visitCssMediaRule__closure.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = t1._styleRule;
- if (!(t2 != null && !t1._atRootExcludingStyleRule))
- for (t2 = this.node.children, t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();)
- t2.__internal$_current.accept$1(t1);
- else
- t1._withParent$2$3$scopeWhen(X.ModifiableCssStyleRule$(t2.selector, t2.span, t2.originalSelector), new R._EvaluateVisitor_visitCssMediaRule___closure(t1, this.node), false, X.ModifiableCssStyleRule, P.Null);
- }
- };
- R._EvaluateVisitor_visitCssMediaRule___closure.prototype = {
- call$0: function() {
- var t1, t2;
- for (t1 = this.node.children, t1 = new H.ListIterator(t1, t1.get$length(t1)), t2 = this.$this; t1.moveNext$0();)
- t1.__internal$_current.accept$1(t2);
- }
- };
- R._EvaluateVisitor_visitCssMediaRule_closure0.prototype = {
- call$1: function(node) {
- var t1 = J.getInterceptor$(node);
- if (!t1.$isCssStyleRule)
- t1 = this.mergedQueries != null && !!t1.$isCssMediaRule;
- else
- t1 = true;
- return t1;
- }
- };
- R._EvaluateVisitor_visitCssStyleRule_closure.prototype = {
- call$0: function() {
- var t1 = this.$this;
- t1._withStyleRule$2(this.rule, new R._EvaluateVisitor_visitCssStyleRule__closure(t1, this.node));
- }
- };
- R._EvaluateVisitor_visitCssStyleRule__closure.prototype = {
- call$0: function() {
- var t1, t2;
- for (t1 = this.node.children, t1 = new H.ListIterator(t1, t1.get$length(t1)), t2 = this.$this; t1.moveNext$0();)
- t1.__internal$_current.accept$1(t2);
- }
- };
- R._EvaluateVisitor_visitCssStyleRule_closure0.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- R._EvaluateVisitor_visitCssSupportsRule_closure.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = t1._styleRule;
- if (!(t2 != null && !t1._atRootExcludingStyleRule))
- for (t2 = this.node.children, t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();)
- t2.__internal$_current.accept$1(t1);
- else
- t1._withParent$2$2(X.ModifiableCssStyleRule$(t2.selector, t2.span, t2.originalSelector), new R._EvaluateVisitor_visitCssSupportsRule__closure(t1, this.node), X.ModifiableCssStyleRule, P.Null);
- }
- };
- R._EvaluateVisitor_visitCssSupportsRule__closure.prototype = {
- call$0: function() {
- var t1, t2;
- for (t1 = this.node.children, t1 = new H.ListIterator(t1, t1.get$length(t1)), t2 = this.$this; t1.moveNext$0();)
- t1.__internal$_current.accept$1(t2);
- }
- };
- R._EvaluateVisitor_visitCssSupportsRule_closure0.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- R._EvaluateVisitor__performInterpolation_closure.prototype = {
- call$1: function(value) {
- var t1, result, t2, t3;
- if (typeof value === "string")
- return value;
- H.interceptedTypeCast(value, "$isExpression");
- t1 = this.$this;
- result = value.accept$1(t1);
- if (this.warnForColor && result instanceof K.SassColor && $.$get$namesByColor().containsKey$1(result)) {
- t2 = X.Interpolation$(H.setRuntimeTypeInfo([""], [P.Object]), null);
- t3 = $.$get$namesByColor();
- t1._warn$2("You probably don't mean to use the color value " + H.S(t3.$index(0, result)) + " in interpolation here.\nIt may end up represented as " + H.S(result) + ', which will likely produce invalid CSS.\nAlways quote color names when using them as strings or map keys (for example, "' + H.S(t3.$index(0, result)) + "\").\nIf you really want to use the color value here, use '" + new V.BinaryOperationExpression(C.BinaryOperator_AcR, new D.StringExpression(t2, true), value, false).toString$0(0) + "'.", value.get$span());
- }
- return t1._evaluate$_serialize$3$quote(result, value, false);
- },
- $signature: 13
- };
- R._EvaluateVisitor__serialize_closure.prototype = {
- call$0: function() {
- var t1 = this.value;
- t1.toString;
- return N.serializeValue(t1, false, this.quote);
- }
- };
- R._EvaluateVisitor__stackTrace_closure.prototype = {
- call$1: function(tuple) {
- return this.$this._stackFrame$2(tuple.item1, tuple.item2.get$span());
- }
- };
- R._ImportedCssVisitor.prototype = {
- visitCssAtRule$1: function(node) {
- var t1 = node.isChildless ? null : new R._ImportedCssVisitor_visitCssAtRule_closure();
- this._visitor._addChild$2$through(node, t1);
- },
- visitCssComment$1: function(node) {
- return this._visitor._addChild$1(node);
- },
- visitCssDeclaration$1: function(node) {
- },
- visitCssImport$1: function(node) {
- var t1 = this._visitor,
- t2 = t1._evaluate$_parent,
- t3 = t1._root;
- if (t2 != t3)
- t1._addChild$1(node);
- else if (t1._endOfImports === J.get$length$asx(t3.children._collection$_source)) {
- t1._addChild$1(node);
- t1._endOfImports = t1._endOfImports + 1;
- } else {
- t2 = t1._outOfOrderImports;
- (t2 == null ? t1._outOfOrderImports = H.setRuntimeTypeInfo([], [F.ModifiableCssImport]) : t2).push(node);
- }
- },
- visitCssKeyframeBlock$1: function(node) {
- },
- visitCssMediaRule$1: function(node) {
- var t1 = this._visitor,
- t2 = t1._mediaQueries;
- t1._addChild$2$through(node, new R._ImportedCssVisitor_visitCssMediaRule_closure(t2 == null || t1._mergeMediaQueries$2(t2, node.queries) != null));
- },
- visitCssStyleRule$1: function(node) {
- return this._visitor._addChild$2$through(node, new R._ImportedCssVisitor_visitCssStyleRule_closure());
- },
- visitCssStylesheet$1: function(node) {
- var t1;
- for (t1 = node.children, t1 = new H.ListIterator(t1, t1.get$length(t1)); t1.moveNext$0();)
- t1.__internal$_current.accept$1(this);
- },
- visitCssSupportsRule$1: function(node) {
- return this._visitor._addChild$2$through(node, new R._ImportedCssVisitor_visitCssSupportsRule_closure());
- }
- };
- R._ImportedCssVisitor_visitCssAtRule_closure.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- R._ImportedCssVisitor_visitCssMediaRule_closure.prototype = {
- call$1: function(node) {
- var t1 = J.getInterceptor$(node);
- if (!t1.$isCssStyleRule)
- t1 = this.hasBeenMerged && !!t1.$isCssMediaRule;
- else
- t1 = true;
- return t1;
- }
- };
- R._ImportedCssVisitor_visitCssStyleRule_closure.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- R._ImportedCssVisitor_visitCssSupportsRule_closure.prototype = {
- call$1: function(node) {
- return !!J.getInterceptor$(node).$isCssStyleRule;
- }
- };
- R._ArgumentResults.prototype = {};
- F._FindDependenciesVisitor.prototype = {
- visitEachRule$1: function(node) {
- },
- visitForRule$1: function(node) {
- },
- visitIfRule$1: function(node) {
- },
- visitWhileRule$1: function(node) {
- },
- visitUseRule$1: function(node) {
- this._usesAndForwards.push(node.url);
- },
- visitForwardRule$1: function(node) {
- this._usesAndForwards.push(node.url);
- },
- visitImportRule$1: function(node) {
- var t1, t2, t3, _i, $import;
- for (t1 = node.imports, t2 = t1.length, t3 = this._imports, _i = 0; _i < t2; ++_i) {
- $import = t1[_i];
- if ($import instanceof B.DynamicImport)
- t3.push(P.Uri_parse($import.url));
- }
- }
- };
- D.RecursiveStatementVisitor.prototype = {
- visitAtRootRule$1: function(node) {
- return this.visitChildren$1(node);
- },
- visitAtRule$1: function(node) {
- return node.children == null ? null : this.visitChildren$1(node);
- },
- visitContentBlock$1: function(node) {
- return;
- },
- visitContentRule$1: function(node) {
- this.visitArgumentInvocation$1(node.$arguments);
- return;
- },
- visitDebugRule$1: function(node) {
- return;
- },
- visitDeclaration$1: function(node) {
- return node.children == null ? null : this.visitChildren$1(node);
- },
- visitErrorRule$1: function(node) {
- return;
- },
- visitExtendRule$1: function(node) {
- return;
- },
- visitFunctionRule$1: function(node) {
- return;
- },
- visitIncludeRule$1: function(node) {
- this.visitArgumentInvocation$1(node.$arguments);
- return;
- },
- visitLoudComment$1: function(node) {
- return;
- },
- visitMediaRule$1: function(node) {
- return this.visitChildren$1(node);
- },
- visitMixinRule$1: function(node) {
- return;
- },
- visitReturnRule$1: function(node) {
- return;
- },
- visitSilentComment$1: function(node) {
- return;
- },
- visitStyleRule$1: function(node) {
- return this.visitChildren$1(node);
- },
- visitStylesheet$1: function(node) {
- return this.visitChildren$1(node);
- },
- visitSupportsRule$1: function(node) {
- return this.visitChildren$1(node);
- },
- visitVariableDeclaration$1: function(node) {
- return;
- },
- visitWarnRule$1: function(node) {
- return;
- },
- visitArgumentInvocation$1: function(invocation) {
- var t1, _i;
- for (t1 = invocation.positional.length, _i = 0; _i < t1; ++_i)
- ;
- for (t1 = invocation.named.get$values(), t1 = t1.get$iterator(t1); t1.moveNext$0();)
- t1.get$current(t1);
- },
- visitChildren$1: function(node) {
- var t1;
- for (t1 = node.children, t1 = (t1 && C.JSArray_methods).get$iterator(t1); t1.moveNext$0();)
- t1.get$current(t1).accept$1(this);
- return;
- }
- };
- N.serialize_closure.prototype = {
- call$1: function(codeUnit) {
- return codeUnit > 127;
- },
- $signature: 11
- };
- N._SerializeVisitor.prototype = {
- visitCssStylesheet$1: function(node) {
- var t1, t2, t3, previous, i, child, _this = this;
- for (t1 = _this._style !== C.OutputStyle_compressed, t2 = _this._serialize$_buffer, t3 = _this._lineFeed.text, previous = null, i = 0; i < J.get$length$asx(node.get$children()); ++i) {
- child = J.$index$asx(node.get$children(), i);
- if (_this._isInvisible$1(child))
- continue;
- if (previous != null) {
- if (!!previous.$isCssParentNode ? previous.get$isChildless() : !previous.$isCssComment)
- t2.writeCharCode$1(59);
- if (t1)
- t2.write$1(0, t3);
- if (previous.get$isGroupEnd())
- if (t1)
- t2.write$1(0, t3);
- }
- child.accept$1(_this);
- previous = child;
- }
- if (previous != null)
- t1 = (!!previous.$isCssParentNode ? previous.get$isChildless() : !previous.$isCssComment) && t1;
- else
- t1 = false;
- if (t1)
- t2.writeCharCode$1(59);
- },
- visitCssComment$1: function(node) {
- this._serialize$_buffer.forSpan$2(node.span, new N._SerializeVisitor_visitCssComment_closure(this, node));
- },
- visitCssAtRule$1: function(node) {
- var t1, _this = this;
- _this._writeIndentation$0();
- t1 = _this._serialize$_buffer;
- t1.forSpan$2(node.span, new N._SerializeVisitor_visitCssAtRule_closure(_this, node));
- if (!node.isChildless) {
- if (_this._style !== C.OutputStyle_compressed)
- t1.writeCharCode$1(32);
- _this._serialize$_visitChildren$1(node.children);
- }
- },
- visitCssMediaRule$1: function(node) {
- var t1, _this = this;
- _this._writeIndentation$0();
- t1 = _this._serialize$_buffer;
- t1.forSpan$2(node.span, new N._SerializeVisitor_visitCssMediaRule_closure(_this, node));
- if (_this._style !== C.OutputStyle_compressed)
- t1.writeCharCode$1(32);
- _this._serialize$_visitChildren$1(node.children);
- },
- visitCssImport$1: function(node) {
- this._writeIndentation$0();
- this._serialize$_buffer.forSpan$2(node.span, new N._SerializeVisitor_visitCssImport_closure(this, node));
- },
- _writeImportUrl$1: function(url) {
- var urlContents, maybeQuote, _this = this;
- if (_this._style !== C.OutputStyle_compressed || J._codeUnitAt$1$s(url, 0) !== 117) {
- _this._serialize$_buffer.write$1(0, url);
- return;
- }
- urlContents = J.substring$2$s(url, 4, url.length - 1);
- maybeQuote = C.JSString_methods._codeUnitAt$1(urlContents, 0);
- if (maybeQuote === 39 || maybeQuote === 34)
- _this._serialize$_buffer.write$1(0, urlContents);
- else
- _this._visitQuotedString$1(urlContents);
- },
- visitCssKeyframeBlock$1: function(node) {
- var t1, _this = this;
- _this._writeIndentation$0();
- t1 = _this._serialize$_buffer;
- t1.forSpan$2(node.selector.span, new N._SerializeVisitor_visitCssKeyframeBlock_closure(_this, node));
- if (_this._style !== C.OutputStyle_compressed)
- t1.writeCharCode$1(32);
- _this._serialize$_visitChildren$1(node.children);
- },
- _visitMediaQuery$1: function(query) {
- var t2, t3, _this = this,
- t1 = query.modifier;
- if (t1 != null) {
- t2 = _this._serialize$_buffer;
- t2.write$1(0, t1);
- t2.writeCharCode$1(32);
- }
- t1 = query.type;
- if (t1 != null) {
- t2 = _this._serialize$_buffer;
- t2.write$1(0, t1);
- if (query.features.length !== 0)
- t2.write$1(0, " and ");
- }
- t1 = query.features;
- t2 = _this._style === C.OutputStyle_compressed ? "and " : " and ";
- t3 = _this._serialize$_buffer;
- _this._writeBetween$3(t1, t2, t3.get$write(t3));
- },
- visitCssStyleRule$1: function(node) {
- var t1, _this = this;
- _this._writeIndentation$0();
- t1 = _this._serialize$_buffer;
- t1.forSpan$2(node.selector.span, new N._SerializeVisitor_visitCssStyleRule_closure(_this, node));
- if (_this._style !== C.OutputStyle_compressed)
- t1.writeCharCode$1(32);
- _this._serialize$_visitChildren$1(node.children);
- },
- visitCssSupportsRule$1: function(node) {
- var t1, _this = this;
- _this._writeIndentation$0();
- t1 = _this._serialize$_buffer;
- t1.forSpan$2(node.span, new N._SerializeVisitor_visitCssSupportsRule_closure(_this, node));
- if (_this._style !== C.OutputStyle_compressed)
- t1.writeCharCode$1(32);
- _this._serialize$_visitChildren$1(node.children);
- },
- visitCssDeclaration$1: function(node) {
- var error, error0, t1, exception, t2, _this = this;
- _this._writeIndentation$0();
- _this._write$1(node.name);
- t1 = _this._serialize$_buffer;
- t1.writeCharCode$1(58);
- if (_this._isParsedCustomProperty$1(node))
- t1.forSpan$2(node.value.span, new N._SerializeVisitor_visitCssDeclaration_closure(_this, node));
- else {
- if (_this._style !== C.OutputStyle_compressed)
- t1.writeCharCode$1(32);
- try {
- t1.forSpan$2(node.valueSpanForMap, new N._SerializeVisitor_visitCssDeclaration_closure0(_this, node));
- } catch (exception) {
- t1 = H.unwrapException(exception);
- t2 = J.getInterceptor$(t1);
- if (!!t2.$isMultiSpanSassScriptException) {
- error = t1;
- throw H.wrapException(E.MultiSpanSassException$(error.message, node.value.span, error.primaryLabel, error.secondarySpans));
- } else if (!!t2.$isSassScriptException) {
- error0 = t1;
- throw H.wrapException(E.SassException$(error0.message, node.value.span));
- } else
- throw exception;
- }
- }
- },
- _isParsedCustomProperty$1: function(node) {
- var value,
- t1 = node.name;
- if (!J.startsWith$1$s(t1.get$value(t1), "--"))
- return false;
- value = node.value.value;
- return value instanceof D.SassString && !value.hasQuotes;
- },
- _writeFoldedValue$1: function(node) {
- var t1, t2, next, t3,
- scanner = X.StringScanner$(H.interceptedTypeCast(node.value.value, "$isSassString").text, null, null);
- for (t1 = scanner.string.length, t2 = this._serialize$_buffer; scanner._string_scanner$_position !== t1;) {
- next = scanner.readChar$0();
- if (next !== 10) {
- t2.writeCharCode$1(next);
- continue;
- }
- t2.writeCharCode$1(32);
- while (true) {
- t3 = scanner.peekChar$0();
- if (!(t3 === 32 || t3 === 9 || t3 === 10 || t3 === 13 || t3 === 12))
- break;
- scanner.readChar$0();
- }
- }
- },
- _writeReindentedValue$1: function(node) {
- var _this = this,
- t1 = node.value,
- value = H.interceptedTypeCast(t1.value, "$isSassString").text,
- minimumIndentation = _this._minimumIndentation$1(value);
- if (minimumIndentation == null) {
- _this._serialize$_buffer.write$1(0, value);
- return;
- } else if (minimumIndentation === -1) {
- t1 = _this._serialize$_buffer;
- t1.write$1(0, B.trimAsciiRight(value, true));
- t1.writeCharCode$1(32);
- return;
- }
- if (t1.span != null) {
- t1 = node.name.get$span();
- t1 = Y.FileLocation$_(t1.file, t1._start);
- minimumIndentation = Math.min(minimumIndentation, t1.file.getColumn$1(t1.offset));
- }
- _this._writeWithIndent$2(value, minimumIndentation);
- },
- _minimumIndentation$1: function(text) {
- var character, t2, min, next, min0,
- scanner = new Z.LineScanner(null, text),
- t1 = text.length;
- while (true) {
- if (scanner._string_scanner$_position !== t1) {
- character = scanner.super$StringScanner$readChar();
- scanner._adjustLineAndColumn$1(character);
- t2 = character !== 10;
- } else
- t2 = false;
- if (!t2)
- break;
- }
- if (scanner._string_scanner$_position === t1)
- return scanner.peekChar$1(-1) === 10 ? -1 : null;
- for (min = null; scanner._string_scanner$_position !== t1;) {
- for (; scanner._string_scanner$_position !== t1;) {
- next = scanner.peekChar$0();
- if (next !== 32 && next !== 9)
- break;
- scanner._adjustLineAndColumn$1(scanner.super$StringScanner$readChar());
- }
- if (scanner._string_scanner$_position === t1 || scanner.scanChar$1(10))
- continue;
- min0 = scanner._line_scanner$_column;
- min = min == null ? min0 : Math.min(min, min0);
- while (true) {
- if (scanner._string_scanner$_position !== t1) {
- character = scanner.super$StringScanner$readChar();
- scanner._adjustLineAndColumn$1(character);
- t2 = character !== 10;
- } else
- t2 = false;
- if (!t2)
- break;
- }
- }
- return min == null ? -1 : min;
- },
- _writeWithIndent$2: function(text, minimumIndentation) {
- var t1, t2, character, t3, lineStart, newlines, end,
- scanner = new Z.LineScanner(null, text);
- for (t1 = text.length, t2 = this._serialize$_buffer; scanner._string_scanner$_position !== t1;) {
- character = scanner.super$StringScanner$readChar();
- scanner._adjustLineAndColumn$1(character);
- if (character === 10)
- break;
- t2.writeCharCode$1(character);
- }
- for (t3 = J.getInterceptor$s(text); true;) {
- lineStart = scanner._string_scanner$_position;
- for (newlines = 1; true;) {
- if (scanner._string_scanner$_position === t1) {
- t2.writeCharCode$1(32);
- return;
- }
- character = scanner.super$StringScanner$readChar();
- scanner._adjustLineAndColumn$1(character);
- if (character === 32 || character === 9)
- continue;
- if (character !== 10)
- break;
- lineStart = scanner._string_scanner$_position;
- ++newlines;
- }
- this._writeTimes$2(10, newlines);
- this._writeIndentation$0();
- end = scanner._string_scanner$_position;
- t2.write$1(0, t3.substring$2(text, lineStart + minimumIndentation, end));
- for (; true;) {
- if (scanner._string_scanner$_position === t1)
- return;
- character = scanner.super$StringScanner$readChar();
- scanner._adjustLineAndColumn$1(character);
- if (character === 10)
- break;
- t2.writeCharCode$1(character);
- }
- }
- },
- visitColor$1: function(value) {
- var $name, hexLength, t2, t3, _this = this,
- t1 = _this._style === C.OutputStyle_compressed;
- if (t1 && Math.abs(value.alpha - 1) < $.$get$epsilon()) {
- $name = $.$get$namesByColor().$index(0, value);
- hexLength = _this._canUseShortHex$1(value) ? 4 : 7;
- if ($name != null && $name.length <= hexLength)
- _this._serialize$_buffer.write$1(0, $name);
- else {
- t1 = _this._serialize$_buffer;
- if (_this._canUseShortHex$1(value)) {
- t1.writeCharCode$1(35);
- t1.writeCharCode$1(T.hexCharFor(value.get$red() & 15));
- t1.writeCharCode$1(T.hexCharFor(value.get$green() & 15));
- t1.writeCharCode$1(T.hexCharFor(value.get$blue() & 15));
- } else {
- t1.writeCharCode$1(35);
- _this._writeHexComponent$1(value.get$red());
- _this._writeHexComponent$1(value.get$green());
- _this._writeHexComponent$1(value.get$blue());
- }
- }
- return;
- }
- if (value.get$original() != null)
- _this._serialize$_buffer.write$1(0, value.get$original());
- else {
- t2 = $.$get$namesByColor();
- if (t2.containsKey$1(value) && !(Math.abs(value.alpha - 0) < $.$get$epsilon()))
- _this._serialize$_buffer.write$1(0, t2.$index(0, value));
- else {
- t2 = value.alpha;
- t3 = _this._serialize$_buffer;
- if (Math.abs(t2 - 1) < $.$get$epsilon()) {
- t3.writeCharCode$1(35);
- _this._writeHexComponent$1(value.get$red());
- _this._writeHexComponent$1(value.get$green());
- _this._writeHexComponent$1(value.get$blue());
- } else {
- t3.write$1(0, "rgba(" + H.S(value.get$red()));
- t3.write$1(0, t1 ? "," : ", ");
- t3.write$1(0, value.get$green());
- t3.write$1(0, t1 ? "," : ", ");
- t3.write$1(0, value.get$blue());
- t3.write$1(0, t1 ? "," : ", ");
- _this._writeNumber$1(t2);
- t3.writeCharCode$1(41);
- }
- }
- }
- },
- _canUseShortHex$1: function(color) {
- var t1 = color.get$red();
- if ((t1 & 15) === C.JSInt_methods._shrOtherPositive$1(t1, 4)) {
- t1 = color.get$green();
- if ((t1 & 15) === C.JSInt_methods._shrOtherPositive$1(t1, 4)) {
- t1 = color.get$blue();
- t1 = (t1 & 15) === C.JSInt_methods._shrOtherPositive$1(t1, 4);
- } else
- t1 = false;
- } else
- t1 = false;
- return t1;
- },
- _writeHexComponent$1: function(color) {
- var t1 = this._serialize$_buffer;
- t1.writeCharCode$1(T.hexCharFor(C.JSInt_methods._shrOtherPositive$1(color, 4)));
- t1.writeCharCode$1(T.hexCharFor(color & 15));
- },
- visitList$1: function(value) {
- var t2, singleton, t3, t4, _this = this,
- t1 = value.hasBrackets;
- if (t1)
- _this._serialize$_buffer.writeCharCode$1(91);
- else if (value._list$_contents.length === 0) {
- if (!_this._inspect)
- throw H.wrapException(E.SassScriptException$("() isn't a valid CSS value."));
- _this._serialize$_buffer.write$1(0, "()");
- return;
- }
- t2 = _this._inspect;
- singleton = t2 && value._list$_contents.length === 1 && value.separator === C.ListSeparator_comma;
- if (singleton && !t1)
- _this._serialize$_buffer.writeCharCode$1(40);
- t3 = value._list$_contents;
- t3 = t2 ? t3 : new H.WhereIterable(t3, new N._SerializeVisitor_visitList_closure(), [H.getTypeArgumentByIndex(t3, 0)]);
- if (value.separator === C.ListSeparator_space)
- t4 = " ";
- else
- t4 = _this._style === C.OutputStyle_compressed ? "," : ", ";
- _this._writeBetween$3(t3, t4, t2 ? new N._SerializeVisitor_visitList_closure0(_this, value) : new N._SerializeVisitor_visitList_closure1(_this));
- if (singleton) {
- t2 = _this._serialize$_buffer;
- t2.writeCharCode$1(44);
- if (!t1)
- t2.writeCharCode$1(41);
- }
- if (t1)
- _this._serialize$_buffer.writeCharCode$1(93);
- },
- _elementNeedsParens$2: function(separator, value) {
- var t1;
- if (value instanceof D.SassList) {
- if (value._list$_contents.length < 2)
- return false;
- if (value.hasBrackets)
- return false;
- t1 = value.separator;
- return separator === C.ListSeparator_comma ? t1 === C.ListSeparator_comma : t1 !== C.ListSeparator_undecided;
- }
- return false;
- },
- visitMap$1: function(map) {
- var t1, _this = this;
- if (!_this._inspect)
- throw H.wrapException(E.SassScriptException$(map.toString$0(0) + " isn't a valid CSS value."));
- t1 = _this._serialize$_buffer;
- t1.writeCharCode$1(40);
- _this._writeBetween$3(map.contents.get$keys(), ", ", new N._SerializeVisitor_visitMap_closure(_this, map));
- t1.writeCharCode$1(41);
- },
- _writeMapElement$1: function(value) {
- var needsParens = value instanceof D.SassList && value.separator === C.ListSeparator_comma && !value.hasBrackets;
- if (needsParens)
- this._serialize$_buffer.writeCharCode$1(40);
- value.accept$1(this);
- if (needsParens)
- this._serialize$_buffer.writeCharCode$1(41);
- },
- visitNumber$1: function(value) {
- var t2, _this = this,
- t1 = value.asSlash;
- if (t1 != null) {
- _this.visitNumber$1(t1.item1);
- _this._serialize$_buffer.writeCharCode$1(47);
- _this.visitNumber$1(t1.item2);
- return;
- }
- _this._writeNumber$1(value.value);
- if (!_this._inspect) {
- t1 = value.numeratorUnits;
- t2 = t1.length;
- if (t2 > 1 || value.denominatorUnits.length !== 0)
- throw H.wrapException(E.SassScriptException$(H.S(value) + " isn't a valid CSS value."));
- if (t2 !== 0)
- _this._serialize$_buffer.write$1(0, C.JSArray_methods.get$first(t1));
- } else
- _this._serialize$_buffer.write$1(0, value.get$unitString());
- },
- _writeNumber$1: function(number) {
- var t1, text, text0, _this = this,
- integer = T.fuzzyIsInt(number) ? J.round$0$n(number) : null;
- if (integer != null) {
- t1 = integer >= 1e21 ? _this._removeExponent$1(C.JSInt_methods.toString$0(integer)) : C.JSInt_methods.toString$0(integer);
- _this._serialize$_buffer.write$1(0, t1);
- return;
- }
- text = number >= 1e21 ? _this._removeExponent$1(C.JSNumber_methods.toString$0(number)) : C.JSNumber_methods.toString$0(number);
- text0 = _this._style === C.OutputStyle_compressed && C.JSString_methods._codeUnitAt$1(text, 0) === 48 ? C.JSString_methods.substring$1(text, 1) : text;
- if (text.length < 12) {
- _this._serialize$_buffer.write$1(0, text0);
- return;
- }
- _this._writeDecimal$1(text0);
- },
- _removeExponent$1: function(text) {
- var exponent, buffer, t2, additionalZeroes, negative, _null = null,
- t1 = text.length,
- i = 0;
- while (true) {
- if (!(i < t1)) {
- exponent = _null;
- buffer = exponent;
- break;
- }
- c$0: {
- if (C.JSString_methods._codeUnitAt$1(text, i) !== 101)
- break c$0;
- buffer = new P.StringBuffer("");
- t2 = H.Primitives_stringFromCharCode(C.JSString_methods._codeUnitAt$1(text, 0));
- buffer._contents = t2;
- if (i > 2)
- buffer._contents = t2 + C.JSString_methods.substring$2(text, 2, i);
- exponent = P.int_parse(C.JSString_methods.substring$2(text, i + 1, t1), _null, _null);
- break;
- }
- ++i;
- }
- if (buffer == null)
- return text;
- if (exponent > 0) {
- t1 = buffer._contents;
- additionalZeroes = exponent - (t1.length - 1);
- for (i = 0; i < additionalZeroes; ++i)
- t1 = buffer._contents += H.Primitives_stringFromCharCode(48);
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- } else {
- negative = C.JSString_methods._codeUnitAt$1(text, 0) === 45;
- t1 = (negative ? H.Primitives_stringFromCharCode(45) : "") + "0.";
- for (i = -1; i > exponent; --i)
- t1 += H.Primitives_stringFromCharCode(48);
- if (negative) {
- t2 = buffer._contents;
- t2 = C.JSString_methods.substring$1(t2.charCodeAt(0) == 0 ? t2 : t2, 1);
- } else
- t2 = buffer;
- t2 = t1 + H.S(t2);
- return t2.charCodeAt(0) == 0 ? t2 : t2;
- }
- },
- _writeDecimal$1: function(text) {
- var t1, t2, textIndex, codeUnit, digits, t3, digitsIndex, digitsIndex0, textIndex0, newDigit, i;
- for (t1 = text.length, t2 = this._serialize$_buffer, textIndex = 0; textIndex < t1; ++textIndex) {
- codeUnit = C.JSString_methods._codeUnitAt$1(text, textIndex);
- if (codeUnit === 46) {
- if (textIndex === t1 - 2 && C.JSString_methods.codeUnitAt$1(text, t1 - 1) === 48)
- return;
- t2.writeCharCode$1(codeUnit);
- ++textIndex;
- break;
- }
- t2.writeCharCode$1(codeUnit);
- }
- if (textIndex === t1)
- return;
- digits = new Uint8Array(10);
- t3 = digits.length;
- digitsIndex = 0;
- while (true) {
- if (!(textIndex < t1 && digitsIndex < t3))
- break;
- digitsIndex0 = digitsIndex + 1;
- textIndex0 = textIndex + 1;
- digits[digitsIndex] = C.JSString_methods._codeUnitAt$1(text, textIndex) - 48;
- digitsIndex = digitsIndex0;
- textIndex = textIndex0;
- }
- if (textIndex !== t1 && C.JSString_methods._codeUnitAt$1(text, textIndex) - 48 >= 5)
- for (; digitsIndex >= 0; digitsIndex = digitsIndex0) {
- digitsIndex0 = digitsIndex - 1;
- newDigit = digits[digitsIndex0] + 1;
- digits[digitsIndex0] = newDigit;
- if (newDigit !== 10)
- break;
- }
- while (true) {
- if (!(digitsIndex > 0 && digits[digitsIndex - 1] === 0))
- break;
- --digitsIndex;
- }
- for (i = 0; i < digitsIndex; ++i)
- t2.writeCharCode$1(48 + digits[i]);
- },
- _visitQuotedString$2$forceDoubleQuote: function(string, forceDoubleQuote) {
- var t1, includesSingleQuote, includesDoubleQuote, i, char, t2, next, quote, _this = this,
- buffer = forceDoubleQuote ? _this._serialize$_buffer : new P.StringBuffer("");
- if (forceDoubleQuote)
- buffer.writeCharCode$1(34);
- for (t1 = string.length, includesSingleQuote = false, includesDoubleQuote = false, i = 0; i < t1; ++i) {
- char = C.JSString_methods._codeUnitAt$1(string, i);
- switch (char) {
- case 39:
- if (forceDoubleQuote)
- buffer.writeCharCode$1(39);
- else {
- if (includesDoubleQuote) {
- _this._visitQuotedString$2$forceDoubleQuote(string, true);
- return;
- } else
- buffer.writeCharCode$1(39);
- includesSingleQuote = true;
- }
- break;
- case 34:
- if (forceDoubleQuote) {
- buffer.writeCharCode$1(92);
- buffer.writeCharCode$1(34);
- } else {
- if (includesSingleQuote) {
- _this._visitQuotedString$2$forceDoubleQuote(string, true);
- return;
- } else
- buffer.writeCharCode$1(34);
- includesDoubleQuote = true;
- }
- break;
- case 0:
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- case 10:
- case 11:
- case 12:
- case 13:
- case 14:
- case 15:
- case 16:
- case 17:
- case 18:
- case 19:
- case 20:
- case 21:
- case 22:
- case 23:
- case 24:
- case 25:
- case 26:
- case 27:
- case 28:
- case 29:
- case 30:
- case 31:
- buffer.writeCharCode$1(92);
- if (char > 15) {
- t2 = char >>> 4;
- buffer.writeCharCode$1(t2 < 10 ? 48 + t2 : 87 + t2);
- }
- t2 = char & 15;
- buffer.writeCharCode$1(t2 < 10 ? 48 + t2 : 87 + t2);
- t2 = i + 1;
- if (t1 === t2)
- break;
- next = C.JSString_methods._codeUnitAt$1(string, t2);
- if (T.isHex(next) || next === 32 || next === 9)
- buffer.writeCharCode$1(32);
- break;
- case 92:
- buffer.writeCharCode$1(92);
- buffer.writeCharCode$1(92);
- break;
- default:
- buffer.writeCharCode$1(char);
- break;
- }
- }
- if (forceDoubleQuote)
- buffer.writeCharCode$1(34);
- else {
- quote = includesDoubleQuote ? 39 : 34;
- t1 = _this._serialize$_buffer;
- t1.writeCharCode$1(quote);
- t1.write$1(0, buffer);
- t1.writeCharCode$1(quote);
- }
- },
- _visitQuotedString$1: function(string) {
- return this._visitQuotedString$2$forceDoubleQuote(string, false);
- },
- _visitUnquotedString$1: function(string) {
- var t1, t2, afterNewline, i, char;
- for (t1 = string.length, t2 = this._serialize$_buffer, afterNewline = false, i = 0; i < t1; ++i) {
- char = C.JSString_methods._codeUnitAt$1(string, i);
- switch (char) {
- case 10:
- t2.writeCharCode$1(32);
- afterNewline = true;
- break;
- case 32:
- if (!afterNewline)
- t2.writeCharCode$1(32);
- break;
- default:
- t2.writeCharCode$1(char);
- afterNewline = false;
- break;
- }
- }
- },
- visitComplexSelector$1: function(complex) {
- var t1, t2, t3, t4, lastComponent, _i, component, t5;
- for (t1 = complex.components, t2 = t1.length, t3 = this._serialize$_buffer, t4 = this._style === C.OutputStyle_compressed, lastComponent = null, _i = 0; _i < t2; ++_i, lastComponent = component) {
- component = t1[_i];
- if (lastComponent != null)
- if (!(t4 && !!lastComponent.$isCombinator))
- t5 = !(t4 && component instanceof S.Combinator);
- else
- t5 = false;
- else
- t5 = false;
- if (t5)
- t3.write$1(0, " ");
- if (component instanceof X.CompoundSelector)
- this.visitCompoundSelector$1(component);
- else
- t3.write$1(0, component);
- }
- },
- visitCompoundSelector$1: function(compound) {
- var t2, t3, _i,
- t1 = this._serialize$_buffer,
- start = t1.get$length(t1);
- for (t2 = compound.components, t3 = t2.length, _i = 0; _i < t3; ++_i)
- t2[_i].accept$1(this);
- if (t1.get$length(t1) === start)
- t1.writeCharCode$1(42);
- },
- visitSelectorList$1: function(list) {
- var complexes, t1, t2, t3, t4, first, t5, _this = this;
- if (_this._inspect)
- complexes = list.components;
- else {
- t1 = list.components;
- complexes = new H.WhereIterable(t1, new N._SerializeVisitor_visitSelectorList_closure(), [H.getTypeArgumentByIndex(t1, 0)]);
- }
- for (t1 = J.get$iterator$ax(complexes), t2 = _this._style !== C.OutputStyle_compressed, t3 = _this._serialize$_buffer, t4 = _this._lineFeed.text, first = true; t1.moveNext$0();) {
- t5 = t1.get$current(t1);
- if (first)
- first = false;
- else {
- t3.writeCharCode$1(44);
- if (t5.lineBreak) {
- if (t2)
- t3.write$1(0, t4);
- } else if (t2)
- t3.writeCharCode$1(32);
- }
- _this.visitComplexSelector$1(t5);
- }
- },
- visitPseudoSelector$1: function(pseudo) {
- var t4, t5, t6,
- t1 = pseudo.selector,
- t2 = t1 == null,
- t3 = !t2;
- if (t3 && pseudo.name === "not" && t1.get$isInvisible())
- return;
- t4 = this._serialize$_buffer;
- t4.writeCharCode$1(58);
- if (!pseudo.isSyntacticClass)
- t4.writeCharCode$1(58);
- t4.write$1(0, pseudo.name);
- t5 = pseudo.argument;
- t6 = t5 == null;
- if (t6 && t2)
- return;
- t4.writeCharCode$1(40);
- if (!t6) {
- t4.write$1(0, t5);
- if (t3)
- t4.writeCharCode$1(32);
- }
- if (t3)
- this.visitSelectorList$1(t1);
- t4.writeCharCode$1(41);
- },
- _write$1: function(value) {
- return this._serialize$_buffer.forSpan$2(value.get$span(), new N._SerializeVisitor__write_closure(this, value));
- },
- _serialize$_visitChildren$1: function(children) {
- var t3, _this = this, t1 = {},
- t2 = _this._serialize$_buffer;
- t2.writeCharCode$1(123);
- if (children.every$1(children, _this.get$_isInvisible())) {
- t2.writeCharCode$1(125);
- return;
- }
- _this._writeLineFeed$0();
- t1.previous = null;
- ++_this._indentation;
- new N._SerializeVisitor__visitChildren_closure(t1, _this, children).call$0();
- --_this._indentation;
- t1 = t1.previous;
- t3 = J.getInterceptor$(t1);
- if ((!!t3.$isCssParentNode ? t1.get$isChildless() : !t3.$isCssComment) && _this._style !== C.OutputStyle_compressed)
- t2.writeCharCode$1(59);
- _this._writeLineFeed$0();
- _this._writeIndentation$0();
- t2.writeCharCode$1(125);
- },
- _writeLineFeed$0: function() {
- if (this._style !== C.OutputStyle_compressed)
- this._serialize$_buffer.write$1(0, this._lineFeed.text);
- },
- _writeIndentation$0: function() {
- var _this = this;
- if (_this._style === C.OutputStyle_compressed)
- return;
- _this._writeTimes$2(_this._indentCharacter, _this._indentation * _this._indentWidth);
- },
- _writeTimes$2: function(char, times) {
- var t1, i;
- for (t1 = this._serialize$_buffer, i = 0; i < times; ++i)
- t1.writeCharCode$1(char);
- },
- _writeBetween$1$3: function(iterable, text, callback) {
- var t1, t2, first, value;
- for (t1 = J.get$iterator$ax(iterable), t2 = this._serialize$_buffer, first = true; t1.moveNext$0();) {
- value = t1.get$current(t1);
- if (first)
- first = false;
- else
- t2.write$1(0, text);
- callback.call$1(value);
- }
- },
- _writeBetween$3: function(iterable, text, callback) {
- return this._writeBetween$1$3(iterable, text, callback, null);
- },
- _isInvisible$1: function(node) {
- if (this._inspect)
- return false;
- if (this._style === C.OutputStyle_compressed && !!J.getInterceptor$(node).$isCssComment && J._codeUnitAt$1$s(node.text, 2) !== 33)
- return true;
- if (!!J.getInterceptor$(node).$isCssParentNode) {
- if (!!node.$isCssAtRule)
- return false;
- if (!!node.$isCssStyleRule && node.selector.value.get$isInvisible())
- return true;
- return J.every$1$ax(node.get$children(), this.get$_isInvisible());
- } else
- return false;
- }
- };
- N._SerializeVisitor_visitCssComment_closure.prototype = {
- call$0: function() {
- var t2, t3, minimumIndentation,
- t1 = this.$this;
- if (t1._style === C.OutputStyle_compressed && J._codeUnitAt$1$s(this.node.text, 2) !== 33)
- return;
- t2 = this.node;
- t3 = t2.text;
- minimumIndentation = t1._minimumIndentation$1(t3);
- if (minimumIndentation == null) {
- t1._writeIndentation$0();
- t1._serialize$_buffer.write$1(0, t3);
- return;
- }
- t2 = t2.span;
- if (t2 != null) {
- t2 = Y.FileLocation$_(t2.file, t2._start);
- minimumIndentation = Math.min(minimumIndentation, t2.file.getColumn$1(t2.offset));
- }
- t1._writeIndentation$0();
- t1._writeWithIndent$2(t3, minimumIndentation);
- }
- };
- N._SerializeVisitor_visitCssAtRule_closure.prototype = {
- call$0: function() {
- var t3,
- t1 = this.$this,
- t2 = t1._serialize$_buffer;
- t2.writeCharCode$1(64);
- t3 = this.node;
- t1._write$1(t3.name);
- t3 = t3.value;
- if (t3 != null) {
- t2.writeCharCode$1(32);
- t1._write$1(t3);
- }
- }
- };
- N._SerializeVisitor_visitCssMediaRule_closure.prototype = {
- call$0: function() {
- var t3, t4,
- t1 = this.$this,
- t2 = t1._serialize$_buffer;
- t2.write$1(0, "@media");
- t3 = t1._style === C.OutputStyle_compressed;
- if (t3) {
- t4 = C.JSArray_methods.get$first(this.node.queries);
- t4 = !(t4.modifier == null && t4.type == null);
- } else
- t4 = true;
- if (t4)
- t2.writeCharCode$1(32);
- t2 = t3 ? "," : ", ";
- t1._writeBetween$3(this.node.queries, t2, t1.get$_visitMediaQuery());
- }
- };
- N._SerializeVisitor_visitCssImport_closure.prototype = {
- call$0: function() {
- var t3, t4, t5, t6,
- t1 = this.$this,
- t2 = t1._serialize$_buffer;
- t2.write$1(0, "@import");
- t3 = t1._style === C.OutputStyle_compressed;
- t4 = !t3;
- if (t4)
- t2.writeCharCode$1(32);
- t5 = this.node;
- t2.forSpan$2(t5.url.get$span(), new N._SerializeVisitor_visitCssImport__closure(t1, t5));
- t6 = t5.supports;
- if (t6 != null) {
- if (t4)
- t2.writeCharCode$1(32);
- t1._write$1(t6);
- }
- t5 = t5.media;
- if (t5 != null) {
- if (t4)
- t2.writeCharCode$1(32);
- t2 = t3 ? "," : ", ";
- t1._writeBetween$3(t5, t2, t1.get$_visitMediaQuery());
- }
- }
- };
- N._SerializeVisitor_visitCssImport__closure.prototype = {
- call$0: function() {
- var t1 = this.node.url;
- return this.$this._writeImportUrl$1(t1.get$value(t1));
- }
- };
- N._SerializeVisitor_visitCssKeyframeBlock_closure.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = t1._style === C.OutputStyle_compressed ? "," : ", ",
- t3 = t1._serialize$_buffer;
- return t1._writeBetween$3(this.node.selector.value, t2, t3.get$write(t3));
- }
- };
- N._SerializeVisitor_visitCssStyleRule_closure.prototype = {
- call$0: function() {
- var t1 = this.node.selector.value;
- t1.toString;
- return this.$this.visitSelectorList$1(t1);
- }
- };
- N._SerializeVisitor_visitCssSupportsRule_closure.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = t1._serialize$_buffer;
- t2.write$1(0, "@supports");
- if (!(t1._style === C.OutputStyle_compressed && J.codeUnitAt$1$s(this.node.condition.value, 0) === 40))
- t2.writeCharCode$1(32);
- t1._write$1(this.node.condition);
- }
- };
- N._SerializeVisitor_visitCssDeclaration_closure.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = this.node;
- if (t1._style === C.OutputStyle_compressed)
- t1._writeFoldedValue$1(t2);
- else
- t1._writeReindentedValue$1(t2);
- }
- };
- N._SerializeVisitor_visitCssDeclaration_closure0.prototype = {
- call$0: function() {
- return this.node.value.value.accept$1(this.$this);
- }
- };
- N._SerializeVisitor_visitList_closure.prototype = {
- call$1: function(element) {
- return !element.get$isBlank();
- }
- };
- N._SerializeVisitor_visitList_closure0.prototype = {
- call$1: function(element) {
- var t1 = this.$this,
- needsParens = t1._elementNeedsParens$2(this.value.separator, element);
- if (needsParens)
- t1._serialize$_buffer.writeCharCode$1(40);
- element.accept$1(t1);
- if (needsParens)
- t1._serialize$_buffer.writeCharCode$1(41);
- }
- };
- N._SerializeVisitor_visitList_closure1.prototype = {
- call$1: function(element) {
- element.accept$1(this.$this);
- }
- };
- N._SerializeVisitor_visitMap_closure.prototype = {
- call$1: function(key) {
- var t1 = this.$this;
- t1._writeMapElement$1(key);
- t1._serialize$_buffer.write$1(0, ": ");
- t1._writeMapElement$1(this.map.contents.$index(0, key));
- }
- };
- N._SerializeVisitor_visitSelectorList_closure.prototype = {
- call$1: function(complex) {
- return !complex.get$isInvisible();
- }
- };
- N._SerializeVisitor__write_closure.prototype = {
- call$0: function() {
- var t1 = this.value;
- return this.$this._serialize$_buffer.write$1(0, t1.get$value(t1));
- }
- };
- N._SerializeVisitor__visitChildren_closure.prototype = {
- call$0: function() {
- var t1, t2, t3, t4, t5, t6, i, child, t7;
- for (t1 = this.children._collection$_source, t2 = J.getInterceptor$asx(t1), t3 = this._box_0, t4 = this.$this, t5 = t4._serialize$_buffer, t6 = t4._lineFeed.text, i = 0; i < t2.get$length(t1); ++i) {
- child = t2.elementAt$1(t1, i);
- if (t4._isInvisible$1(child))
- continue;
- t7 = t3.previous;
- if (t7 != null) {
- if (!!t7.$isCssParentNode ? t7.get$isChildless() : !t7.$isCssComment)
- t5.writeCharCode$1(59);
- t7 = t4._style !== C.OutputStyle_compressed;
- if (t7)
- t5.write$1(0, t6);
- if (t3.previous.get$isGroupEnd())
- if (t7)
- t5.write$1(0, t6);
- }
- t3.previous = child;
- child.accept$1(t4);
- }
- }
- };
- N.OutputStyle.prototype = {
- toString$0: function(_) {
- return this._serialize$_name;
- }
- };
- N.LineFeed.prototype = {
- toString$0: function(_) {
- return this.name;
- }
- };
- N.SerializeResult.prototype = {};
- N.withWarnCallback_closure.prototype = {
- call$0: function() {
- return this.callback.call$0();
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- L.Entry.prototype = {
- compareTo$1: function(_, other) {
- var t1, t2, t3,
- res = this.target.compareTo$1(0, other.target);
- if (res !== 0)
- return res;
- t1 = this.source;
- t2 = J.toString$0$(t1.file.url);
- t3 = other.source;
- res = C.JSString_methods.compareTo$1(t2, J.toString$0$(t3.file.url));
- if (res !== 0)
- return res;
- return t1.compareTo$1(0, t3);
- },
- $isComparable: 1,
- $asComparable: function() {
- return [L.Entry];
- },
- get$source: function() {
- return this.source;
- },
- get$target: function() {
- return this.target;
- },
- get$identifierName: function() {
- return this.identifierName;
- }
- };
- T.Mapping.prototype = {};
- T.SingleMapping.prototype = {
- toJson$1$includeSourceContents: function(includeSourceContents) {
- var t1, t2, line, column, srcLine, srcColumn, srcUrlId, srcNameId, first, _i, entry, nextLine, i, t3, t4, _i0, segment, column0, t5, newUrlId, srcLine0, srcColumn0, srcNameId0, result, _this = this,
- buff = new P.StringBuffer("");
- for (t1 = _this.lines, t2 = t1.length, line = 0, column = 0, srcLine = 0, srcColumn = 0, srcUrlId = 0, srcNameId = 0, first = true, _i = 0; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
- entry = t1[_i];
- nextLine = entry.line;
- if (nextLine > line) {
- for (i = line; i < nextLine; ++i)
- buff._contents += ";";
- line = nextLine;
- column = 0;
- first = true;
- }
- for (t3 = entry.entries, t4 = t3.length, _i0 = 0; _i0 < t3.length; t3.length === t4 || (0, H.throwConcurrentModificationError)(t3), ++_i0, column = column0, first = false) {
- segment = t3[_i0];
- if (!first)
- buff._contents += ",";
- column0 = segment.column;
- t5 = L.encodeVlq(column0 - column);
- t5 = P.StringBuffer__writeAll(buff._contents, t5, "");
- buff._contents = t5;
- newUrlId = segment.sourceUrlId;
- if (newUrlId == null)
- continue;
- t5 = P.StringBuffer__writeAll(t5, L.encodeVlq(newUrlId - srcUrlId), "");
- buff._contents = t5;
- srcLine0 = segment.sourceLine;
- t5 = P.StringBuffer__writeAll(t5, L.encodeVlq(srcLine0 - srcLine), "");
- buff._contents = t5;
- srcColumn0 = segment.sourceColumn;
- t5 = P.StringBuffer__writeAll(t5, L.encodeVlq(srcColumn0 - srcColumn), "");
- buff._contents = t5;
- srcNameId0 = segment.sourceNameId;
- if (srcNameId0 == null) {
- srcUrlId = newUrlId;
- srcColumn = srcColumn0;
- srcLine = srcLine0;
- continue;
- }
- buff._contents = P.StringBuffer__writeAll(t5, L.encodeVlq(srcNameId0 - srcNameId), "");
- srcNameId = srcNameId0;
- srcUrlId = newUrlId;
- srcColumn = srcColumn0;
- srcLine = srcLine0;
- }
- }
- t1 = _this.sourceRoot;
- if (t1 == null)
- t1 = "";
- t2 = buff._contents;
- t3 = P.String;
- result = P.LinkedHashMap_LinkedHashMap$_literal(["version", 3, "sourceRoot", t1, "sources", _this.urls, "names", _this.names, "mappings", t2.charCodeAt(0) == 0 ? t2 : t2], t3, P.Object);
- t1 = _this.targetUrl;
- if (t1 != null)
- result.$indexSet(0, "file", t1);
- if (includeSourceContents) {
- t1 = _this.files;
- result.$indexSet(0, "sourcesContent", new H.MappedListIterable(t1, new T.SingleMapping_toJson_closure(), [H.getTypeArgumentByIndex(t1, 0), t3]).toList$0(0));
- }
- _this.extensions.forEach$1(0, new T.SingleMapping_toJson_closure0(result));
- return result;
- },
- toJson$0: function() {
- return this.toJson$1$includeSourceContents(false);
- },
- toString$0: function(_) {
- var _this = this,
- t1 = H.getRuntimeType(_this).toString$0(0);
- t1 + " : [";
- t1 = t1 + " : [targetUrl: " + H.S(_this.targetUrl) + ", sourceRoot: " + H.S(_this.sourceRoot) + ", urls: " + H.S(_this.urls) + ", names: " + H.S(_this.names) + ", lines: " + H.S(_this.lines) + "]";
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- }
- };
- T.SingleMapping_SingleMapping$fromEntries_closure.prototype = {
- call$0: function() {
- var t1 = this.urls;
- return t1.get$length(t1);
- }
- };
- T.SingleMapping_SingleMapping$fromEntries_closure0.prototype = {
- call$0: function() {
- return H.interceptedTypeCast(this.sourceEntry.get$source(), "$isFileLocation").file;
- }
- };
- T.SingleMapping_SingleMapping$fromEntries_closure1.prototype = {
- call$1: function(i) {
- return this.files.$index(0, i);
- },
- $signature: 59
- };
- T.SingleMapping_toJson_closure.prototype = {
- call$1: function(file) {
- return file == null ? null : P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(file._decodedChars, 0, null), 0, null);
- }
- };
- T.SingleMapping_toJson_closure0.prototype = {
- call$2: function($name, value) {
- this.result.$indexSet(0, $name, value);
- return value;
- }
- };
- T.TargetLineEntry.prototype = {
- toString$0: function(_) {
- return H.getRuntimeType(this).toString$0(0) + ": " + this.line + " " + H.S(this.entries);
- }
- };
- T.TargetEntry.prototype = {
- toString$0: function(_) {
- var _this = this;
- return H.getRuntimeType(_this).toString$0(0) + ": (" + _this.column + ", " + H.S(_this.sourceUrlId) + ", " + H.S(_this.sourceLine) + ", " + H.S(_this.sourceColumn) + ", " + H.S(_this.sourceNameId) + ")";
- }
- };
- Y.SourceFile.prototype = {
- get$length: function(_) {
- return this._decodedChars.length;
- },
- get$lines: function() {
- return this._lineStarts.length;
- },
- SourceFile$decoded$2$url: function(decodedChars, url) {
- var t1, t2, t3, i, c, j;
- for (t1 = this._decodedChars, t2 = t1.length, t3 = this._lineStarts, i = 0; i < t2; ++i) {
- c = t1[i];
- if (c === 13) {
- j = i + 1;
- if (j >= t2 || t1[j] !== 10)
- c = 10;
- }
- if (c === 10)
- t3.push(i + 1);
- }
- },
- span$2: function(start, end) {
- return Y._FileSpan$(this, start, end);
- },
- span$1: function(start) {
- return this.span$2(start, null);
- },
- getLine$1: function(offset) {
- var t1, _this = this;
- if (offset < 0)
- throw H.wrapException(P.RangeError$("Offset may not be negative, was " + offset + "."));
- else if (offset > _this._decodedChars.length)
- throw H.wrapException(P.RangeError$("Offset " + offset + " must not be greater than the number of characters in the file, " + _this.get$length(_this) + "."));
- t1 = _this._lineStarts;
- if (offset < C.JSArray_methods.get$first(t1))
- return -1;
- if (offset >= C.JSArray_methods.get$last(t1))
- return t1.length - 1;
- if (_this._isNearCachedLine$1(offset))
- return _this._cachedLine;
- return _this._cachedLine = _this._binarySearch$1(offset) - 1;
- },
- _isNearCachedLine$1: function(offset) {
- var t2, t3,
- t1 = this._cachedLine;
- if (t1 == null)
- return false;
- t2 = this._lineStarts;
- if (offset < t2[t1])
- return false;
- t3 = t2.length;
- if (t1 >= t3 - 1 || offset < t2[t1 + 1])
- return true;
- if (t1 >= t3 - 2 || offset < t2[t1 + 2]) {
- this._cachedLine = t1 + 1;
- return true;
- }
- return false;
- },
- _binarySearch$1: function(offset) {
- var min, half,
- t1 = this._lineStarts,
- max = t1.length - 1;
- for (min = 0; min < max;) {
- half = min + C.JSInt_methods._tdivFast$1(max - min, 2);
- if (t1[half] > offset)
- max = half;
- else
- min = half + 1;
- }
- return max;
- },
- getColumn$1: function(offset) {
- var line, lineStart, _this = this;
- if (offset < 0)
- throw H.wrapException(P.RangeError$("Offset may not be negative, was " + offset + "."));
- else if (offset > _this._decodedChars.length)
- throw H.wrapException(P.RangeError$("Offset " + offset + " must be not be greater than the number of characters in the file, " + _this.get$length(_this) + "."));
- line = _this.getLine$1(offset);
- lineStart = _this._lineStarts[line];
- if (lineStart > offset)
- throw H.wrapException(P.RangeError$("Line " + H.S(line) + " comes after offset " + offset + "."));
- return offset - lineStart;
- },
- getOffset$1: function(line) {
- var t1, t2, result, t3;
- if (line < 0)
- throw H.wrapException(P.RangeError$("Line may not be negative, was " + H.S(line) + "."));
- else {
- t1 = this._lineStarts;
- t2 = t1.length;
- if (line >= t2)
- throw H.wrapException(P.RangeError$("Line " + H.S(line) + " must be less than the number of lines in the file, " + this.get$lines() + "."));
- }
- result = t1[line];
- if (result <= this._decodedChars.length) {
- t3 = line + 1;
- t1 = t3 < t2 && result >= t1[t3];
- } else
- t1 = true;
- if (t1)
- throw H.wrapException(P.RangeError$("Line " + H.S(line) + " doesn't have 0 columns."));
- return result;
- }
- };
- Y.FileLocation.prototype = {
- get$sourceUrl: function() {
- return this.file.url;
- },
- get$line: function() {
- return this.file.getLine$1(this.offset);
- },
- get$column: function() {
- return this.file.getColumn$1(this.offset);
- },
- pointSpan$0: function() {
- var t1 = this.offset;
- return Y._FileSpan$(this.file, t1, t1);
- },
- get$offset: function() {
- return this.offset;
- }
- };
- Y.FileSpan.prototype = {$isComparable: 1,
- $asComparable: function() {
- return [V.SourceSpan];
- },
- $isSourceSpan: 1,
- $isSourceSpanWithContext: 1
- };
- Y._FileSpan.prototype = {
- get$sourceUrl: function() {
- return this.file.url;
- },
- get$length: function(_) {
- return this._file$_end - this._start;
- },
- get$start: function(_) {
- return Y.FileLocation$_(this.file, this._start);
- },
- get$end: function(_) {
- return Y.FileLocation$_(this.file, this._file$_end);
- },
- get$text: function() {
- return P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(this.file._decodedChars, this._start, this._file$_end), 0, null);
- },
- get$context: function(_) {
- var _this = this,
- t1 = _this.file,
- endOffset = _this._file$_end,
- endLine = t1.getLine$1(endOffset);
- if (t1.getColumn$1(endOffset) === 0 && endLine !== 0) {
- if (endOffset - _this._start === 0)
- return endLine === t1._lineStarts.length - 1 ? "" : P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(t1._decodedChars, t1.getOffset$1(endLine), t1.getOffset$1(endLine + 1)), 0, null);
- } else
- endOffset = endLine === t1._lineStarts.length - 1 ? t1._decodedChars.length : t1.getOffset$1(endLine + 1);
- return P.String_String$fromCharCodes(C.NativeUint32List_methods.sublist$2(t1._decodedChars, t1.getOffset$1(t1.getLine$1(_this._start)), endOffset), 0, null);
- },
- compareTo$1: function(_, other) {
- var result;
- if (!(other instanceof Y._FileSpan))
- return this.super$SourceSpanMixin$compareTo(0, other);
- result = C.JSInt_methods.compareTo$1(this._start, other._start);
- return result === 0 ? C.JSInt_methods.compareTo$1(this._file$_end, other._file$_end) : result;
- },
- $eq: function(_, other) {
- var _this = this;
- if (other == null)
- return false;
- if (!J.getInterceptor$(other).$isFileSpan)
- return _this.super$SourceSpanMixin$$eq(0, other);
- return _this._start === other._start && _this._file$_end === other._file$_end && J.$eq$(_this.file.url, other.file.url);
- },
- get$hashCode: function(_) {
- return Y.SourceSpanMixin.prototype.get$hashCode.call(this, this);
- },
- expand$1: function(_, other) {
- var t3, t4, _this = this,
- t1 = _this.file,
- t2 = other.file;
- if (!J.$eq$(t1.url, t2.url))
- throw H.wrapException(P.ArgumentError$('Source URLs "' + H.S(_this.get$sourceUrl()) + '" and "' + H.S(other.get$sourceUrl()) + "\" don't match."));
- t3 = _this._start;
- t4 = _this._file$_end;
- if (other instanceof Y._FileSpan)
- return Y._FileSpan$(t1, Math.min(t3, other._start), Math.max(t4, other._file$_end));
- else
- return Y._FileSpan$(t1, Math.min(t3, Y.FileLocation$_(t2, other._start).offset), Math.max(t4, Y.FileLocation$_(t2, other._file$_end).offset));
- },
- $isFileSpan: 1,
- $isSourceSpanWithContext: 1
- };
- U.Highlighter.prototype = {
- highlight$0: function() {
- var t2, highlightsByColumn, t3, t4, i, line, lastLine, t5, t6, t7, t8, index, primary, t9, t10, _i, highlight, _this = this,
- t1 = _this._lines;
- _this._writeFileStart$1(C.JSArray_methods.get$first(t1).url);
- t2 = new Array(_this._maxMultilineSpans);
- t2.fixed$length = Array;
- highlightsByColumn = H.setRuntimeTypeInfo(t2, [U._Highlight]);
- for (t2 = _this._highlighter$_buffer, t3 = highlightsByColumn.length !== 0, t4 = _this._primaryColor, i = 0; i < t1.length; ++i) {
- line = t1[i];
- if (i > 0) {
- lastLine = t1[i - 1];
- t5 = lastLine.url;
- t6 = line.url;
- if (!J.$eq$(t5, t6)) {
- _this._writeSidebar$1$end($._glyphs.get$upEnd());
- t2._contents += "\n";
- _this._writeFileStart$1(t6);
- } else if (lastLine.number + 1 !== line.number) {
- _this._writeSidebar$1$text("...");
- t2._contents += "\n";
- }
- }
- for (t5 = line.highlights, t6 = new H.ReversedListIterable(t5, [H.getTypeArgumentByIndex(t5, 0)]), t6 = new H.ListIterator(t6, t6.get$length(t6)); t6.moveNext$0();) {
- t7 = t6.__internal$_current;
- t8 = t7.span;
- if (t8.get$start(t8).get$line() != t8.get$end(t8).get$line() && t8.get$start(t8).get$line() === line.number && _this._isOnlyWhitespace$1(J.substring$2$s(line.text, 0, t8.get$start(t8).get$column()))) {
- index = C.JSArray_methods.indexOf$1(highlightsByColumn, null);
- if (index < 0)
- H.throwExpression(P.ArgumentError$(H.S(highlightsByColumn) + " contains no null elements."));
- highlightsByColumn[index] = t7;
- }
- }
- t6 = line.number;
- _this._writeSidebar$1$line(t6);
- t2._contents += " ";
- _this._writeMultilineHighlights$2(line, highlightsByColumn);
- if (t3)
- t2._contents += " ";
- primary = C.JSArray_methods.firstWhere$2$orElse(t5, new U.Highlighter_highlight_closure(), new U.Highlighter_highlight_closure0());
- t7 = primary != null;
- if (t7) {
- t8 = line.text;
- t9 = primary.span;
- t10 = t9.get$start(t9).get$line() === t6 ? t9.get$start(t9).get$column() : 0;
- _this._writeHighlightedText$4$color(t8, t10, t9.get$end(t9).get$line() === t6 ? t9.get$end(t9).get$column() : t8.length, t4);
- } else
- _this._writeText$1(line.text);
- t2._contents += "\n";
- if (t7)
- _this._writeIndicator$3(line, primary, highlightsByColumn);
- for (t6 = t5.length, _i = 0; _i < t5.length; t5.length === t6 || (0, H.throwConcurrentModificationError)(t5), ++_i) {
- highlight = t5[_i];
- if (highlight.isPrimary)
- continue;
- _this._writeIndicator$3(line, highlight, highlightsByColumn);
- }
- }
- _this._writeSidebar$1$end($._glyphs.get$upEnd());
- t1 = t2._contents;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- _writeFileStart$1: function(url) {
- var _this = this,
- t1 = !_this._multipleFiles || url == null,
- t2 = $._glyphs;
- if (t1)
- _this._writeSidebar$1$end(t2.get$downEnd());
- else {
- _this._writeSidebar$1$end(t2.get$topLeftCorner());
- _this._colorize$2$color(new U.Highlighter__writeFileStart_closure(_this), "\x1b[34m");
- _this._highlighter$_buffer._contents += " " + H.S($.$get$context().prettyUri$1(url));
- }
- _this._highlighter$_buffer._contents += "\n";
- },
- _writeMultilineHighlights$3$current: function(line, highlightsByColumn, current) {
- var t1, currentColor, t2, t3, t4, t5, foundCurrent, _i, highlight, t6, t7, startLine, endLine, _this = this, _null = null, _box_0 = {};
- _box_0.openedOnThisLine = false;
- _box_0.openedOnThisLineColor = null;
- t1 = current == null;
- if (t1)
- currentColor = _null;
- else
- currentColor = current.isPrimary ? _this._primaryColor : _this._secondaryColor;
- for (t2 = highlightsByColumn.length, t3 = _this._secondaryColor, t1 = !t1, t4 = _this._primaryColor, t5 = _this._highlighter$_buffer, foundCurrent = false, _i = 0; _i < t2; ++_i) {
- highlight = highlightsByColumn[_i];
- t6 = highlight == null;
- t7 = t6 ? _null : highlight.span;
- t7 = t7 == null ? _null : t7.get$start(t7);
- startLine = t7 == null ? _null : t7.get$line();
- t7 = t6 ? _null : highlight.span;
- t7 = t7 == null ? _null : t7.get$end(t7);
- endLine = t7 == null ? _null : t7.get$line();
- if (t1 && highlight === current) {
- _this._colorize$2$color(new U.Highlighter__writeMultilineHighlights_closure(_this, startLine, line), currentColor);
- foundCurrent = true;
- } else if (foundCurrent)
- _this._colorize$2$color(new U.Highlighter__writeMultilineHighlights_closure0(_this, highlight), currentColor);
- else if (t6)
- if (_box_0.openedOnThisLine)
- _this._colorize$2$color(new U.Highlighter__writeMultilineHighlights_closure1(_this), _box_0.openedOnThisLineColor);
- else
- t5._contents += " ";
- else {
- t6 = highlight.isPrimary ? t4 : t3;
- _this._colorize$2$color(new U.Highlighter__writeMultilineHighlights_closure2(_box_0, _this, current, startLine, line, highlight, endLine), t6);
- }
- }
- },
- _writeMultilineHighlights$2: function(line, highlightsByColumn) {
- return this._writeMultilineHighlights$3$current(line, highlightsByColumn, null);
- },
- _writeHighlightedText$4$color: function(text, startColumn, endColumn, color) {
- var _this = this;
- _this._writeText$1(J.getInterceptor$s(text).substring$2(text, 0, startColumn));
- _this._colorize$2$color(new U.Highlighter__writeHighlightedText_closure(_this, text, startColumn, endColumn), color);
- _this._writeText$1(C.JSString_methods.substring$2(text, endColumn, text.length));
- },
- _writeIndicator$3: function(line, highlight, highlightsByColumn) {
- var t2, coversWholeLine, _this = this,
- color = highlight.isPrimary ? _this._primaryColor : _this._secondaryColor,
- t1 = highlight.span;
- if (t1.get$start(t1).get$line() == t1.get$end(t1).get$line()) {
- _this._writeSidebar$0();
- t1 = _this._highlighter$_buffer;
- t1._contents += " ";
- _this._writeMultilineHighlights$3$current(line, highlightsByColumn, highlight);
- if (highlightsByColumn.length !== 0)
- t1._contents += " ";
- _this._colorize$2$color(new U.Highlighter__writeIndicator_closure(_this, line, highlight), color);
- t1._contents += "\n";
- } else {
- t2 = line.number;
- if (t1.get$start(t1).get$line() === t2) {
- if (C.JSArray_methods.contains$1(highlightsByColumn, highlight))
- return;
- B.replaceFirstNull(highlightsByColumn, highlight);
- _this._writeSidebar$0();
- t1 = _this._highlighter$_buffer;
- t1._contents += " ";
- _this._writeMultilineHighlights$3$current(line, highlightsByColumn, highlight);
- _this._colorize$2$color(new U.Highlighter__writeIndicator_closure0(_this, line, highlight), color);
- t1._contents += "\n";
- } else if (t1.get$end(t1).get$line() === t2) {
- coversWholeLine = t1.get$end(t1).get$column() === line.text.length;
- if (coversWholeLine && highlight.label == null) {
- B.replaceWithNull(highlightsByColumn, highlight);
- return;
- }
- _this._writeSidebar$0();
- t1 = _this._highlighter$_buffer;
- t1._contents += " ";
- _this._writeMultilineHighlights$3$current(line, highlightsByColumn, highlight);
- _this._colorize$2$color(new U.Highlighter__writeIndicator_closure1(_this, coversWholeLine, line, highlight), color);
- t1._contents += "\n";
- B.replaceWithNull(highlightsByColumn, highlight);
- }
- }
- },
- _writeArrow$3$beginning: function(line, column, beginning) {
- var t2,
- t1 = beginning ? 0 : 1,
- tabs = this._countTabs$1(J.substring$2$s(line.text, 0, column + t1));
- t1 = this._highlighter$_buffer;
- t2 = t1._contents += C.JSString_methods.$mul($._glyphs.get$horizontalLine(), 1 + column + tabs * 3);
- t1._contents = t2 + "^";
- },
- _writeArrow$2: function(line, column) {
- return this._writeArrow$3$beginning(line, column, true);
- },
- _writeLabel$1: function(label) {
- if (label != null)
- this._highlighter$_buffer._contents += " " + label;
- },
- _writeText$1: function(text) {
- var t1, t2, t3;
- for (text.toString, t1 = new H.CodeUnits(text), t1 = new H.ListIterator(t1, t1.get$length(t1)), t2 = this._highlighter$_buffer; t1.moveNext$0();) {
- t3 = t1.__internal$_current;
- if (t3 === 9)
- t2._contents += C.JSString_methods.$mul(" ", 4);
- else
- t2._contents += H.Primitives_stringFromCharCode(t3);
- }
- },
- _writeSidebar$3$end$line$text: function(end, line, text) {
- var t1 = {};
- t1.text = text;
- if (line != null)
- t1.text = C.JSInt_methods.toString$0(line + 1);
- this._colorize$2$color(new U.Highlighter__writeSidebar_closure(t1, this, end), "\x1b[34m");
- },
- _writeSidebar$1$end: function(end) {
- return this._writeSidebar$3$end$line$text(end, null, null);
- },
- _writeSidebar$1$text: function(text) {
- return this._writeSidebar$3$end$line$text(null, null, text);
- },
- _writeSidebar$1$line: function(line) {
- return this._writeSidebar$3$end$line$text(null, line, null);
- },
- _writeSidebar$0: function() {
- return this._writeSidebar$3$end$line$text(null, null, null);
- },
- _countTabs$1: function(text) {
- var t1, count;
- for (t1 = new H.CodeUnits(text), t1 = new H.ListIterator(t1, t1.get$length(t1)), count = 0; t1.moveNext$0();)
- if (t1.__internal$_current === 9)
- ++count;
- return count;
- },
- _isOnlyWhitespace$1: function(text) {
- var t1, t2;
- for (t1 = new H.CodeUnits(text), t1 = new H.ListIterator(t1, t1.get$length(t1)); t1.moveNext$0();) {
- t2 = t1.__internal$_current;
- if (t2 !== 32 && t2 !== 9)
- return false;
- }
- return true;
- },
- _colorize$2$color: function(callback, color) {
- var t1 = this._primaryColor != null;
- if (t1 && color != null)
- this._highlighter$_buffer._contents += color;
- callback.call$0();
- if (t1 && color != null)
- this._highlighter$_buffer._contents += "\x1b[0m";
- }
- };
- U.Highlighter_closure.prototype = {
- call$0: function() {
- var t1 = this.color,
- t2 = J.getInterceptor$(t1);
- if (t2.$eq(t1, true))
- return "\x1b[31m";
- if (t2.$eq(t1, false))
- return;
- return H.stringTypeCast(t1);
- }
- };
- U.Highlighter$__closure.prototype = {
- call$1: function(line) {
- var t1 = line.highlights;
- t1 = new H.WhereIterable(t1, new U.Highlighter$___closure(), [H.getTypeArgumentByIndex(t1, 0)]);
- return t1.get$length(t1);
- }
- };
- U.Highlighter$___closure.prototype = {
- call$1: function(highlight) {
- var t1 = highlight.span;
- return t1.get$start(t1).get$line() != t1.get$end(t1).get$line();
- }
- };
- U.Highlighter$__closure0.prototype = {
- call$1: function(line) {
- return line.url;
- }
- };
- U.Highlighter__collateLines_closure.prototype = {
- call$1: function(highlight) {
- return highlight.get$span().get$sourceUrl();
- },
- $signature: 10
- };
- U.Highlighter__collateLines_closure0.prototype = {
- call$2: function(highlight1, highlight2) {
- return highlight1.span.compareTo$1(0, highlight2.span);
- }
- };
- U.Highlighter__collateLines_closure1.prototype = {
- call$1: function(highlightsForFile) {
- var t1, t2, t3, t4, context, t5, linesBeforeSpan, url, lineNumber, _i, line, activeHighlights, highlightIndex, oldHighlightLength,
- lines = H.setRuntimeTypeInfo([], [U._Line]);
- for (t1 = J.getInterceptor$ax(highlightsForFile), t2 = t1.get$iterator(highlightsForFile), t3 = [U._Highlight]; t2.moveNext$0();) {
- t4 = t2.get$current(t2).span;
- context = t4.get$context(t4);
- t5 = C.JSString_methods.allMatches$1("\n", C.JSString_methods.substring$2(context, 0, B.findLineStart(context, t4.get$text(), t4.get$start(t4).get$column())));
- linesBeforeSpan = t5.get$length(t5);
- url = t4.get$sourceUrl();
- lineNumber = t4.get$start(t4).get$line() - linesBeforeSpan;
- for (t4 = context.split("\n"), t5 = t4.length, _i = 0; _i < t5; ++_i) {
- line = t4[_i];
- if (lines.length === 0 || lineNumber > C.JSArray_methods.get$last(lines).number)
- lines.push(new U._Line(line, lineNumber, url, H.setRuntimeTypeInfo([], t3)));
- ++lineNumber;
- }
- }
- activeHighlights = H.setRuntimeTypeInfo([], t3);
- for (t2 = lines.length, highlightIndex = 0, _i = 0; _i < lines.length; lines.length === t2 || (0, H.throwConcurrentModificationError)(lines), ++_i) {
- line = lines[_i];
- if (!!activeHighlights.fixed$length)
- H.throwExpression(P.UnsupportedError$("removeWhere"));
- C.JSArray_methods._removeWhere$2(activeHighlights, new U.Highlighter__collateLines__closure(line), true);
- oldHighlightLength = activeHighlights.length;
- for (t3 = t1.skip$1(highlightsForFile, highlightIndex), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
- t4 = t3.get$current(t3);
- t5 = t4.span;
- if (t5.get$start(t5).get$line() > line.number)
- break;
- if (!J.$eq$(t5.get$sourceUrl(), line.url))
- break;
- activeHighlights.push(t4);
- }
- highlightIndex += activeHighlights.length - oldHighlightLength;
- C.JSArray_methods.addAll$1(line.highlights, activeHighlights);
- }
- return lines;
- }
- };
- U.Highlighter__collateLines__closure.prototype = {
- call$1: function(highlight) {
- var t1 = highlight.span,
- t2 = this.line;
- return !J.$eq$(t1.get$sourceUrl(), t2.url) || t1.get$end(t1).get$line() < t2.number;
- }
- };
- U.Highlighter_highlight_closure.prototype = {
- call$1: function(highlight) {
- return highlight.isPrimary;
- }
- };
- U.Highlighter_highlight_closure0.prototype = {
- call$0: function() {
- return;
- }
- };
- U.Highlighter__writeFileStart_closure.prototype = {
- call$0: function() {
- this.$this._highlighter$_buffer._contents += C.JSString_methods.$mul($._glyphs.get$horizontalLine(), 2) + ">";
- return;
- }
- };
- U.Highlighter__writeMultilineHighlights_closure.prototype = {
- call$0: function() {
- var t1 = $._glyphs;
- t1 = this.startLine === this.line.number ? t1.get$topLeftCorner() : t1.get$bottomLeftCorner();
- this.$this._highlighter$_buffer._contents += t1;
- }
- };
- U.Highlighter__writeMultilineHighlights_closure0.prototype = {
- call$0: function() {
- var t1 = $._glyphs;
- t1 = this.highlight == null ? t1.get$horizontalLine() : t1.get$cross();
- this.$this._highlighter$_buffer._contents += t1;
- }
- };
- U.Highlighter__writeMultilineHighlights_closure1.prototype = {
- call$0: function() {
- this.$this._highlighter$_buffer._contents += $._glyphs.get$horizontalLine();
- return;
- }
- };
- U.Highlighter__writeMultilineHighlights_closure2.prototype = {
- call$0: function() {
- var _this = this,
- t1 = _this._box_0,
- t2 = t1.openedOnThisLine,
- t3 = $._glyphs,
- vertical = t2 ? t3.get$cross() : t3.get$verticalLine();
- if (_this.current != null)
- _this.$this._highlighter$_buffer._contents += vertical;
- else {
- t2 = _this.line;
- t3 = t2.number;
- if (_this.startLine === t3) {
- t2 = _this.$this;
- t2._colorize$2$color(new U.Highlighter__writeMultilineHighlights__closure(t1, t2), t1.openedOnThisLineColor);
- t1.openedOnThisLine = true;
- if (t1.openedOnThisLineColor == null)
- t1.openedOnThisLineColor = _this.highlight.isPrimary ? t2._primaryColor : t2._secondaryColor;
- } else {
- if (_this.endLine === t3) {
- t3 = _this.highlight.span;
- t2 = t3.get$end(t3).get$column() === t2.text.length;
- } else
- t2 = false;
- t3 = _this.$this;
- if (t2) {
- t1 = _this.highlight.label == null ? $._glyphs.glyphOrAscii$2("\u2514", "\\") : vertical;
- t3._highlighter$_buffer._contents += t1;
- } else
- t3._colorize$2$color(new U.Highlighter__writeMultilineHighlights__closure0(t3, vertical), t1.openedOnThisLineColor);
- }
- }
- }
- };
- U.Highlighter__writeMultilineHighlights__closure.prototype = {
- call$0: function() {
- var t1 = this._box_0.openedOnThisLine ? "\u252c" : "\u250c";
- this.$this._highlighter$_buffer._contents += $._glyphs.glyphOrAscii$2(t1, "/");
- }
- };
- U.Highlighter__writeMultilineHighlights__closure0.prototype = {
- call$0: function() {
- this.$this._highlighter$_buffer._contents += this.vertical;
- }
- };
- U.Highlighter__writeHighlightedText_closure.prototype = {
- call$0: function() {
- var _this = this;
- return _this.$this._writeText$1(C.JSString_methods.substring$2(_this.text, _this.startColumn, _this.endColumn));
- }
- };
- U.Highlighter__writeIndicator_closure.prototype = {
- call$0: function() {
- var tabsBefore, tabsInside,
- t1 = this.$this,
- t2 = this.highlight,
- t3 = t2.span,
- t4 = t2.isPrimary ? "^" : $._glyphs.get$horizontalLineBold(),
- startColumn = t3.get$start(t3).get$column(),
- endColumn = t3.get$end(t3).get$column();
- t3 = this.line.text;
- tabsBefore = t1._countTabs$1(J.getInterceptor$s(t3).substring$2(t3, 0, startColumn));
- tabsInside = t1._countTabs$1(C.JSString_methods.substring$2(t3, startColumn, endColumn));
- startColumn += tabsBefore * 3;
- t3 = t1._highlighter$_buffer;
- t3._contents += C.JSString_methods.$mul(" ", startColumn);
- t3._contents += C.JSString_methods.$mul(t4, Math.max(endColumn + (tabsBefore + tabsInside) * 3 - startColumn, 1));
- t1._writeLabel$1(t2.label);
- }
- };
- U.Highlighter__writeIndicator_closure0.prototype = {
- call$0: function() {
- var t1 = this.highlight.span;
- return this.$this._writeArrow$2(this.line, t1.get$start(t1).get$column());
- }
- };
- U.Highlighter__writeIndicator_closure1.prototype = {
- call$0: function() {
- var t2, _this = this,
- t1 = _this.$this;
- if (_this.coversWholeLine)
- t1._highlighter$_buffer._contents += C.JSString_methods.$mul($._glyphs.get$horizontalLine(), 3);
- else {
- t2 = _this.highlight.span;
- t1._writeArrow$3$beginning(_this.line, Math.max(t2.get$end(t2).get$column() - 1, 0), false);
- }
- t1._writeLabel$1(_this.highlight.label);
- }
- };
- U.Highlighter__writeSidebar_closure.prototype = {
- call$0: function() {
- var t1 = this.$this,
- t2 = t1._highlighter$_buffer,
- t3 = this._box_0.text;
- if (t3 == null)
- t3 = "";
- t2._contents += C.JSString_methods.padRight$1(t3, t1._paddingBeforeSidebar);
- t1 = this.end;
- t2._contents += t1 == null ? $._glyphs.get$verticalLine() : t1;
- }
- };
- U._Highlight.prototype = {
- toString$0: function(_) {
- var t1 = this.isPrimary ? "primary " : "",
- t2 = this.span;
- t2 = t1 + (H.S(t2.get$start(t2).get$line()) + ":" + t2.get$start(t2).get$column() + "-" + H.S(t2.get$end(t2).get$line()) + ":" + t2.get$end(t2).get$column());
- t1 = this.label;
- t1 = t1 != null ? t2 + (" (" + t1 + ")") : t2;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- get$span: function() {
- return this.span;
- }
- };
- U._Highlight_closure.prototype = {
- call$0: function() {
- var t2, t3, t4, t5,
- t1 = this.span;
- if (!(!!J.getInterceptor$(t1).$isSourceSpanWithContext && B.findLineStart(t1.get$context(t1), t1.get$text(), t1.get$start(t1).get$column()) != null)) {
- t2 = V.SourceLocation$(t1.get$start(t1).get$offset(), 0, 0, t1.get$sourceUrl());
- t3 = t1.get$end(t1).get$offset();
- t4 = t1.get$sourceUrl();
- t5 = B.countCodeUnits(t1.get$text(), 10);
- t1 = X.SourceSpanWithContext$(t2, V.SourceLocation$(t3, U._Highlight__lastLineLength(t1.get$text()), t5, t4), t1.get$text(), t1.get$text());
- }
- return U._Highlight__normalizeEndOfLine(U._Highlight__normalizeTrailingNewline(U._Highlight__normalizeNewlines(t1)));
- }
- };
- U._Line.prototype = {
- toString$0: function(_) {
- return "" + this.number + ': "' + H.S(this.text) + '" (' + C.JSArray_methods.join$1(this.highlights, ", ") + ")";
- }
- };
- V.SourceLocation.prototype = {
- distance$1: function(other) {
- var t1 = this.sourceUrl;
- if (!J.$eq$(t1, other.get$sourceUrl()))
- throw H.wrapException(P.ArgumentError$('Source URLs "' + H.S(t1) + '" and "' + H.S(other.get$sourceUrl()) + "\" don't match."));
- return Math.abs(this.offset - other.get$offset());
- },
- compareTo$1: function(_, other) {
- var t1 = this.sourceUrl;
- if (!J.$eq$(t1, other.get$sourceUrl()))
- throw H.wrapException(P.ArgumentError$('Source URLs "' + H.S(t1) + '" and "' + H.S(other.get$sourceUrl()) + "\" don't match."));
- return this.offset - other.get$offset();
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return !!J.getInterceptor$(other).$isSourceLocation && J.$eq$(this.sourceUrl, other.get$sourceUrl()) && this.offset === other.get$offset();
- },
- get$hashCode: function(_) {
- return J.get$hashCode$(this.sourceUrl) + this.offset;
- },
- toString$0: function(_) {
- var _this = this,
- t1 = "<" + H.getRuntimeType(_this).toString$0(0) + ": " + _this.offset + " ",
- source = _this.sourceUrl;
- return t1 + (H.S(source == null ? "unknown source" : source) + ":" + (_this.line + 1) + ":" + (_this.column + 1)) + ">";
- },
- $isComparable: 1,
- $asComparable: function() {
- return [V.SourceLocation];
- },
- get$sourceUrl: function() {
- return this.sourceUrl;
- },
- get$offset: function() {
- return this.offset;
- },
- get$line: function() {
- return this.line;
- },
- get$column: function() {
- return this.column;
- }
- };
- D.SourceLocationMixin.prototype = {
- distance$1: function(other) {
- if (!J.$eq$(this.file.url, other.get$sourceUrl()))
- throw H.wrapException(P.ArgumentError$('Source URLs "' + H.S(this.get$sourceUrl()) + '" and "' + H.S(other.get$sourceUrl()) + "\" don't match."));
- return Math.abs(this.offset - other.get$offset());
- },
- compareTo$1: function(_, other) {
- if (!J.$eq$(this.file.url, other.get$sourceUrl()))
- throw H.wrapException(P.ArgumentError$('Source URLs "' + H.S(this.get$sourceUrl()) + '" and "' + H.S(other.get$sourceUrl()) + "\" don't match."));
- return this.offset - other.get$offset();
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return !!J.getInterceptor$(other).$isSourceLocation && J.$eq$(this.file.url, other.get$sourceUrl()) && this.offset === other.get$offset();
- },
- get$hashCode: function(_) {
- return J.get$hashCode$(this.file.url) + this.offset;
- },
- toString$0: function(_) {
- var t1 = this.offset,
- t2 = "<" + H.getRuntimeType(this).toString$0(0) + ": " + t1 + " ",
- t3 = this.file,
- source = t3.url;
- return t2 + (H.S(source == null ? "unknown source" : source) + ":" + (t3.getLine$1(t1) + 1) + ":" + (t3.getColumn$1(t1) + 1)) + ">";
- },
- $isComparable: 1,
- $asComparable: function() {
- return [V.SourceLocation];
- },
- $isSourceLocation: 1
- };
- V.SourceSpan.prototype = {$isComparable: 1,
- $asComparable: function() {
- return [V.SourceSpan];
- }
- };
- V.SourceSpanBase.prototype = {
- SourceSpanBase$3: function(start, end, text) {
- var t3,
- t1 = this.end,
- t2 = this.start;
- if (!J.$eq$(t1.get$sourceUrl(), t2.get$sourceUrl()))
- throw H.wrapException(P.ArgumentError$('Source URLs "' + H.S(t2.get$sourceUrl()) + '" and "' + H.S(t1.get$sourceUrl()) + "\" don't match."));
- else if (t1.get$offset() < t2.get$offset())
- throw H.wrapException(P.ArgumentError$("End " + t1.toString$0(0) + " must come after start " + t2.toString$0(0) + "."));
- else {
- t3 = this.text;
- if (t3.length !== t2.distance$1(t1))
- throw H.wrapException(P.ArgumentError$('Text "' + t3 + '" must be ' + t2.distance$1(t1) + " characters long."));
- }
- },
- get$start: function(receiver) {
- return this.start;
- },
- get$end: function(receiver) {
- return this.end;
- },
- get$text: function() {
- return this.text;
- }
- };
- G.SourceSpanException.prototype = {
- get$message: function(_) {
- return this._span_exception$_message;
- },
- get$span: function() {
- return this._span;
- },
- toString$1$color: function(_, color) {
- var _this = this;
- if (_this.get$span() == null)
- return _this._span_exception$_message;
- return "Error on " + _this.get$span().message$2$color(0, _this._span_exception$_message, color);
- },
- toString$0: function($receiver) {
- return this.toString$1$color($receiver, null);
- },
- $isException: 1
- };
- G.SourceSpanFormatException.prototype = {$isFormatException: 1,
- get$source: function() {
- return this.source;
- }
- };
- Y.SourceSpanMixin.prototype = {
- get$sourceUrl: function() {
- return this.get$start(this).get$sourceUrl();
- },
- get$length: function(_) {
- var _this = this;
- return _this.get$end(_this).get$offset() - _this.get$start(_this).get$offset();
- },
- compareTo$1: function(_, other) {
- var _this = this,
- result = _this.get$start(_this).compareTo$1(0, other.get$start(other));
- return result === 0 ? _this.get$end(_this).compareTo$1(0, other.get$end(other)) : result;
- },
- message$2$color: function(_, message, color) {
- var t2, highlight, _this = this,
- t1 = "line " + (_this.get$start(_this).get$line() + 1) + ", column " + (_this.get$start(_this).get$column() + 1);
- if (_this.get$sourceUrl() != null) {
- t2 = _this.get$sourceUrl();
- t2 = t1 + (" of " + H.S($.$get$context().prettyUri$1(t2)));
- t1 = t2;
- }
- t1 += ": " + H.S(message);
- highlight = _this.highlight$1$color(color);
- if (highlight.length !== 0)
- t1 = t1 + "\n" + highlight;
- return t1.charCodeAt(0) == 0 ? t1 : t1;
- },
- message$1: function($receiver, message) {
- return this.message$2$color($receiver, message, null);
- },
- highlight$1$color: function(color) {
- var _this = this;
- if (!_this.$isSourceSpanWithContext && _this.get$length(_this) === 0)
- return "";
- return U.Highlighter$(_this, color).highlight$0();
- },
- $eq: function(_, other) {
- var _this = this;
- if (other == null)
- return false;
- return !!J.getInterceptor$(other).$isSourceSpan && _this.get$start(_this).$eq(0, other.get$start(other)) && _this.get$end(_this).$eq(0, other.get$end(other));
- },
- get$hashCode: function(_) {
- var t2, _this = this,
- t1 = _this.get$start(_this);
- t1 = t1.get$hashCode(t1);
- t2 = _this.get$end(_this);
- return t1 + 31 * t2.get$hashCode(t2);
- },
- toString$0: function(_) {
- var _this = this;
- return "<" + H.getRuntimeType(_this).toString$0(0) + ": from " + _this.get$start(_this).toString$0(0) + " to " + _this.get$end(_this).toString$0(0) + ' "' + _this.get$text() + '">';
- },
- $isComparable: 1,
- $asComparable: function() {
- return [V.SourceSpan];
- },
- $isSourceSpan: 1
- };
- X.SourceSpanWithContext.prototype = {
- get$context: function(_) {
- return this._context;
- }
- };
- U.Chain.prototype = {
- toTrace$0: function() {
- var t1 = this.traces,
- t2 = A.Frame;
- return new Y.Trace(P.List_List$unmodifiable(new H.ExpandIterable(t1, new U.Chain_toTrace_closure(), [H.getTypeArgumentByIndex(t1, 0), t2]), t2), new P._StringStackTrace(null));
- },
- toString$0: function(_) {
- var t1 = this.traces,
- t2 = P.int,
- t3 = H.getTypeArgumentByIndex(t1, 0);
- return new H.MappedListIterable(t1, new U.Chain_toString_closure(new H.MappedListIterable(t1, new U.Chain_toString_closure0(), [t3, t2]).fold$2(0, 0, H.instantiate1(P.math__max$closure(), t2))), [t3, P.String]).join$1(0, "===== asynchronous gap ===========================\n");
- },
- $isStackTrace: 1
- };
- U.Chain_Chain$parse_closure.prototype = {
- call$1: function(trace) {
- return new Y.Trace(P.List_List$unmodifiable(Y.Trace__parseVM(trace), A.Frame), new P._StringStackTrace(trace));
- }
- };
- U.Chain_Chain$parse_closure0.prototype = {
- call$1: function(trace) {
- return Y.Trace$parseFriendly(trace);
- }
- };
- U.Chain_toTrace_closure.prototype = {
- call$1: function(trace) {
- return trace.get$frames();
- }
- };
- U.Chain_toString_closure0.prototype = {
- call$1: function(trace) {
- var t1 = trace.get$frames(),
- t2 = P.int;
- return new H.MappedListIterable(t1, new U.Chain_toString__closure0(), [H.getTypeArgumentByIndex(t1, 0), t2]).fold$2(0, 0, H.instantiate1(P.math__max$closure(), t2));
- }
- };
- U.Chain_toString__closure0.prototype = {
- call$1: function(frame) {
- return frame.get$location().length;
- }
- };
- U.Chain_toString_closure.prototype = {
- call$1: function(trace) {
- var t1 = trace.get$frames();
- return new H.MappedListIterable(t1, new U.Chain_toString__closure(this.longest), [H.getTypeArgumentByIndex(t1, 0), P.String]).join$0(0);
- }
- };
- U.Chain_toString__closure.prototype = {
- call$1: function(frame) {
- return J.padRight$1$s(frame.get$location(), this.longest) + " " + H.S(frame.get$member()) + "\n";
- }
- };
- A.Frame.prototype = {
- get$isCore: function() {
- return this.uri.get$scheme() === "dart";
- },
- get$library: function() {
- var t1 = this.uri;
- if (t1.get$scheme() === "data")
- return "data:...";
- return $.$get$context().prettyUri$1(t1);
- },
- get$$package: function() {
- var t1 = this.uri;
- if (t1.get$scheme() !== "package")
- return;
- return C.JSArray_methods.get$first(t1.get$path(t1).split("/"));
- },
- get$location: function() {
- var t2, _this = this,
- t1 = _this.line;
- if (t1 == null)
- return _this.get$library();
- t2 = _this.column;
- if (t2 == null)
- return H.S(_this.get$library()) + " " + H.S(t1);
- return H.S(_this.get$library()) + " " + H.S(t1) + ":" + H.S(t2);
- },
- toString$0: function(_) {
- return H.S(this.get$location()) + " in " + H.S(this.member);
- },
- get$uri: function() {
- return this.uri;
- },
- get$line: function() {
- return this.line;
- },
- get$column: function() {
- return this.column;
- },
- get$member: function() {
- return this.member;
- }
- };
- A.Frame_Frame$parseVM_closure.prototype = {
- call$0: function() {
- var match, t2, t3, member, uri, lineAndColumn, line, _null = null,
- t1 = this.frame;
- if (t1 === "...")
- return new A.Frame(P._Uri__Uri(_null, _null, _null, _null), _null, _null, "...");
- match = $.$get$_vmFrame().firstMatch$1(t1);
- if (match == null)
- return new N.UnparsedFrame(P._Uri__Uri(_null, "unparsed", _null, _null), t1);
- t1 = match._match;
- t2 = t1[1];
- t3 = $.$get$_asyncBody();
- t2.toString;
- t2 = H.stringReplaceAllUnchecked(t2, t3, "<async>");
- member = H.stringReplaceAllUnchecked(t2, "<anonymous closure>", "<fn>");
- uri = P.Uri_parse(t1[2]);
- lineAndColumn = t1[3].split(":");
- t1 = lineAndColumn.length;
- line = t1 > 1 ? P.int_parse(lineAndColumn[1], _null, _null) : _null;
- return new A.Frame(uri, line, t1 > 2 ? P.int_parse(lineAndColumn[2], _null, _null) : _null, member);
- }
- };
- A.Frame_Frame$parseV8_closure.prototype = {
- call$0: function() {
- var t2, t3, _s4_ = "<fn>",
- t1 = this.frame,
- match = $.$get$_v8Frame().firstMatch$1(t1);
- if (match == null)
- return new N.UnparsedFrame(P._Uri__Uri(null, "unparsed", null, null), t1);
- t1 = new A.Frame_Frame$parseV8_closure_parseLocation(t1);
- t2 = match._match;
- t3 = t2[2];
- if (t3 != null) {
- t2 = t2[1];
- t2.toString;
- t2 = H.stringReplaceAllUnchecked(t2, "<anonymous>", _s4_);
- t2 = H.stringReplaceAllUnchecked(t2, "Anonymous function", _s4_);
- return t1.call$2(t3, H.stringReplaceAllUnchecked(t2, "(anonymous function)", _s4_));
- } else
- return t1.call$2(t2[3], _s4_);
- }
- };
- A.Frame_Frame$parseV8_closure_parseLocation.prototype = {
- call$2: function($location, member) {
- var urlMatch, _null = null,
- t1 = $.$get$_v8EvalLocation(),
- evalMatch = t1.firstMatch$1($location);
- for (; evalMatch != null;) {
- $location = evalMatch._match[1];
- evalMatch = t1.firstMatch$1($location);
- }
- if ($location === "native")
- return new A.Frame(P.Uri_parse("native"), _null, _null, member);
- urlMatch = $.$get$_v8UrlLocation().firstMatch$1($location);
- if (urlMatch == null)
- return new N.UnparsedFrame(P._Uri__Uri(_null, "unparsed", _null, _null), this.frame);
- t1 = urlMatch._match;
- return new A.Frame(A.Frame__uriOrPathToUri(t1[1]), P.int_parse(t1[2], _null, _null), P.int_parse(t1[3], _null, _null), member);
- },
- $signature: 62
- };
- A.Frame_Frame$parseFirefox_closure.prototype = {
- call$0: function() {
- var uri, t2, t3, member, line, _null = null,
- t1 = this.frame,
- match = $.$get$_firefoxSafariFrame().firstMatch$1(t1);
- if (match == null)
- return new N.UnparsedFrame(P._Uri__Uri(_null, "unparsed", _null, _null), t1);
- t1 = match._match;
- uri = A.Frame__uriOrPathToUri(t1[3]);
- t2 = t1[1];
- if (t2 != null) {
- t3 = C.JSString_methods.allMatches$1("/", t1[2]);
- member = J.$add$ansx(t2, C.JSArray_methods.join$0(P.List_List$filled(t3.get$length(t3), ".<fn>", P.String)));
- if (member === "")
- member = "<fn>";
- member = C.JSString_methods.replaceFirst$2(member, $.$get$_initialDot(), "");
- } else
- member = "<fn>";
- t2 = t1[4];
- line = t2 === "" ? _null : P.int_parse(t2, _null, _null);
- t1 = t1[5];
- return new A.Frame(uri, line, t1 == null || t1 === "" ? _null : P.int_parse(t1, _null, _null), member);
- }
- };
- A.Frame_Frame$parseFriendly_closure.prototype = {
- call$0: function() {
- var t2, uri, line, column, _null = null,
- t1 = this.frame,
- match = $.$get$_friendlyFrame().firstMatch$1(t1);
- if (match == null)
- throw H.wrapException(P.FormatException$("Couldn't parse package:stack_trace stack trace line '" + H.S(t1) + "'.", _null, _null));
- t1 = match._match;
- t2 = t1[1];
- uri = t2 === "data:..." ? P.Uri_Uri$dataFromString("", _null, _null) : P.Uri_parse(t2);
- if (uri.get$scheme() === "") {
- t2 = $.$get$context();
- uri = t2.toUri$1(D.absolute(t2.style.pathFromUri$1(M._parseUri(uri))));
- }
- t2 = t1[2];
- line = t2 == null ? _null : P.int_parse(t2, _null, _null);
- t2 = t1[3];
- column = t2 == null ? _null : P.int_parse(t2, _null, _null);
- return new A.Frame(uri, line, column, t1[4]);
- }
- };
- T.LazyTrace.prototype = {
- get$_lazy_trace$_trace: function() {
- var t1 = this._lazy_trace$_inner;
- return t1 == null ? this._lazy_trace$_inner = this._thunk.call$0() : t1;
- },
- get$frames: function() {
- return this.get$_lazy_trace$_trace().get$frames();
- },
- get$terse: function() {
- return new T.LazyTrace(new T.LazyTrace_terse_closure(this));
- },
- toString$0: function(_) {
- return J.toString$0$(this.get$_lazy_trace$_trace());
- },
- $isStackTrace: 1,
- $isTrace: 1
- };
- T.LazyTrace_terse_closure.prototype = {
- call$0: function() {
- return this.$this.get$_lazy_trace$_trace().get$terse();
- }
- };
- Y.Trace.prototype = {
- get$terse: function() {
- return this.foldFrames$2$terse(new Y.Trace_terse_closure(), true);
- },
- foldFrames$2$terse: function(predicate, terse) {
- var t1, newFrames, t2, t3, _box_0 = {};
- _box_0.predicate = predicate;
- _box_0.predicate = new Y.Trace_foldFrames_closure(predicate);
- t1 = A.Frame;
- newFrames = H.setRuntimeTypeInfo([], [t1]);
- for (t2 = this.frames, t2 = new H.ReversedListIterable(t2, [H.getTypeArgumentByIndex(t2, 0)]), t2 = new H.ListIterator(t2, t2.get$length(t2)); t2.moveNext$0();) {
- t3 = t2.__internal$_current;
- if (t3 instanceof N.UnparsedFrame || !_box_0.predicate.call$1(t3))
- newFrames.push(t3);
- else if (newFrames.length === 0 || !_box_0.predicate.call$1(C.JSArray_methods.get$last(newFrames)))
- newFrames.push(new A.Frame(t3.get$uri(), t3.get$line(), t3.get$column(), t3.get$member()));
- }
- newFrames = new H.MappedListIterable(newFrames, new Y.Trace_foldFrames_closure0(_box_0), [H.getTypeArgumentByIndex(newFrames, 0), t1]).toList$0(0);
- if (newFrames.length > 1 && _box_0.predicate.call$1(C.JSArray_methods.get$first(newFrames)))
- C.JSArray_methods.removeAt$1(newFrames, 0);
- return new Y.Trace(P.List_List$unmodifiable(new H.ReversedListIterable(newFrames, [H.getTypeArgumentByIndex(newFrames, 0)]), t1), new P._StringStackTrace(this.original._core$_stackTrace));
- },
- toString$0: function(_) {
- var t1 = this.frames,
- t2 = P.int,
- t3 = H.getTypeArgumentByIndex(t1, 0);
- return new H.MappedListIterable(t1, new Y.Trace_toString_closure(new H.MappedListIterable(t1, new Y.Trace_toString_closure0(), [t3, t2]).fold$2(0, 0, H.instantiate1(P.math__max$closure(), t2))), [t3, P.String]).join$0(0);
- },
- $isStackTrace: 1,
- get$frames: function() {
- return this.frames;
- }
- };
- Y.Trace_Trace$from_closure.prototype = {
- call$0: function() {
- return Y.Trace_Trace$parse(this.trace.toString$0(0));
- }
- };
- Y.Trace__parseVM_closure.prototype = {
- call$1: function(line) {
- return A.Frame_Frame$parseVM(line);
- }
- };
- Y.Trace$parseV8_closure.prototype = {
- call$1: function(line) {
- return !J.startsWith$1$s(line, $.$get$_v8TraceLine());
- }
- };
- Y.Trace$parseV8_closure0.prototype = {
- call$1: function(line) {
- return A.Frame_Frame$parseV8(line);
- }
- };
- Y.Trace$parseJSCore_closure.prototype = {
- call$1: function(line) {
- return line !== "\tat ";
- }
- };
- Y.Trace$parseJSCore_closure0.prototype = {
- call$1: function(line) {
- return A.Frame_Frame$parseV8(line);
- }
- };
- Y.Trace$parseFirefox_closure.prototype = {
- call$1: function(line) {
- return line.length !== 0 && line !== "[native code]";
- }
- };
- Y.Trace$parseFirefox_closure0.prototype = {
- call$1: function(line) {
- return A.Frame_Frame$parseFirefox(line);
- }
- };
- Y.Trace$parseFriendly_closure.prototype = {
- call$1: function(line) {
- return !J.startsWith$1$s(line, "=====");
- }
- };
- Y.Trace$parseFriendly_closure0.prototype = {
- call$1: function(line) {
- return A.Frame_Frame$parseFriendly(line);
- }
- };
- Y.Trace_terse_closure.prototype = {
- call$1: function(_) {
- return false;
- }
- };
- Y.Trace_foldFrames_closure.prototype = {
- call$1: function(frame) {
- if (this.oldPredicate.call$1(frame))
- return true;
- if (frame.get$isCore())
- return true;
- if (frame.get$$package() === "stack_trace")
- return true;
- if (!J.contains$1$asx(frame.get$member(), "<async>"))
- return false;
- return frame.get$line() == null;
- }
- };
- Y.Trace_foldFrames_closure0.prototype = {
- call$1: function(frame) {
- var t1, t2;
- if (frame instanceof N.UnparsedFrame || !this._box_0.predicate.call$1(frame))
- return frame;
- t1 = frame.get$library();
- t2 = $.$get$_terseRegExp();
- t1.toString;
- return new A.Frame(P.Uri_parse(H.stringReplaceAllUnchecked(t1, t2, "")), null, null, frame.get$member());
- }
- };
- Y.Trace_toString_closure0.prototype = {
- call$1: function(frame) {
- return frame.get$location().length;
- }
- };
- Y.Trace_toString_closure.prototype = {
- call$1: function(frame) {
- if (frame instanceof N.UnparsedFrame)
- return frame.toString$0(0) + "\n";
- return J.padRight$1$s(frame.get$location(), this.longest) + " " + H.S(frame.get$member()) + "\n";
- }
- };
- N.UnparsedFrame.prototype = {
- toString$0: function(_) {
- return this.member;
- },
- $isFrame: 1,
- get$uri: function() {
- return this.uri;
- },
- get$line: function() {
- return null;
- },
- get$column: function() {
- return null;
- },
- get$isCore: function() {
- return false;
- },
- get$library: function() {
- return "unparsed";
- },
- get$$package: function() {
- return null;
- },
- get$location: function() {
- return "unparsed";
- },
- get$member: function() {
- return this.member;
- }
- };
- L._StreamTransformer.prototype = {
- bind$1: function(values) {
- var controller, _null = null, t1 = {},
- t2 = H.getTypeArgumentByIndex(this, 1);
- if (values.get$isBroadcast())
- controller = new P._SyncBroadcastStreamController(_null, _null, [t2]);
- else
- controller = P.StreamController_StreamController(_null, _null, _null, _null, true, t2);
- t1.subscription = null;
- controller.set$onListen(new L._StreamTransformer_bind_closure(t1, this, values, controller));
- return controller.get$stream();
- }
- };
- L._StreamTransformer_bind_closure.prototype = {
- call$0: function() {
- var t2, t3, t4, t5, _this = this, t1 = {};
- t1.valuesDone = false;
- t2 = _this.values;
- t3 = _this.$this;
- t4 = _this.controller;
- t5 = _this._box_1;
- t5.subscription = t2.listen$3$onDone$onError(new L._StreamTransformer_bind__closure(t3, t4), new L._StreamTransformer_bind__closure0(t1, t3, t4), new L._StreamTransformer_bind__closure1(t3, t4));
- if (!t2.get$isBroadcast()) {
- t2 = t5.subscription;
- t4.set$onPause(t2.get$pause(t2));
- t4.set$onResume(t5.subscription.get$resume());
- }
- t4.set$onCancel(new L._StreamTransformer_bind__closure2(t5, t1));
- }
- };
- L._StreamTransformer_bind__closure.prototype = {
- call$1: function(value) {
- return this.$this._from_handlers$_handleData.call$2(value, this.controller);
- },
- $signature: function() {
- return {func: 1, ret: -1, args: [H.getTypeArgumentByIndex(this.$this, 0)]};
- }
- };
- L._StreamTransformer_bind__closure1.prototype = {
- call$2: function(error, stackTrace) {
- this.$this._from_handlers$_handleError.call$3(error, stackTrace, this.controller);
- },
- "call*": "call$2",
- $requiredArgCount: 2,
- $signature: 15
- };
- L._StreamTransformer_bind__closure0.prototype = {
- call$0: function() {
- this._box_0.valuesDone = true;
- this.$this._from_handlers$_handleDone.call$1(this.controller);
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- L._StreamTransformer_bind__closure2.prototype = {
- call$0: function() {
- var t1 = this._box_1,
- toCancel = t1.subscription;
- t1.subscription = null;
- if (!this._box_0.valuesDone)
- return toCancel.cancel$0();
- return;
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- R._debounceAggregate_closure.prototype = {
- call$2: function(value, sink) {
- var t1 = this._box_0,
- t2 = t1.timer;
- if (t2 != null)
- t2.cancel$0();
- t1.timer = P.Timer_Timer(this.duration, new R._debounceAggregate__closure(t1, sink));
- t1.soFar = this.collect.call$2(value, t1.soFar);
- },
- "call*": "call$2",
- $requiredArgCount: 2
- };
- R._debounceAggregate__closure.prototype = {
- call$0: function() {
- var t1 = this.sink,
- t2 = this._box_0;
- t1.add$1(0, t2.soFar);
- if (t2.shouldClose)
- t1.close$0(0);
- t2.timer = t2.soFar = null;
- },
- "call*": "call$0",
- $requiredArgCount: 0
- };
- R._debounceAggregate_closure0.prototype = {
- call$1: function(sink) {
- var t1 = this._box_0;
- if (t1.soFar != null)
- t1.shouldClose = true;
- else
- sink.close$0(0);
- }
- };
- E.StringScannerException.prototype = {
- get$source: function() {
- return H.stringTypeCast(this.source);
- }
- };
- Z.LineScanner.prototype = {
- get$_betweenCRLF: function() {
- return this.peekChar$1(-1) === 13 && this.peekChar$0() === 10;
- },
- scanChar$1: function(character) {
- if (!this.super$StringScanner$scanChar(character))
- return false;
- this._adjustLineAndColumn$1(character);
- return true;
- },
- _adjustLineAndColumn$1: function(character) {
- var t1, _this = this;
- if (character !== 10)
- t1 = character === 13 && _this.peekChar$0() !== 10;
- else
- t1 = true;
- if (t1) {
- ++_this._line_scanner$_line;
- _this._line_scanner$_column = 0;
- } else
- ++_this._line_scanner$_column;
- },
- scan$1: function(pattern) {
- var newlines, t1, t2, _this = this;
- if (!_this.super$StringScanner$scan(pattern))
- return false;
- newlines = _this._newlinesIn$1(_this.get$lastMatch().group$1(0));
- t1 = _this._line_scanner$_line;
- t2 = newlines.length;
- _this._line_scanner$_line = t1 + t2;
- if (t2 === 0)
- _this._line_scanner$_column = _this._line_scanner$_column + _this.get$lastMatch().group$1(0).length;
- else
- _this._line_scanner$_column = _this.get$lastMatch().group$1(0).length - J.get$end$x(C.JSArray_methods.get$last(newlines));
- return true;
- },
- _newlinesIn$1: function(text) {
- var t1 = $.$get$_newlineRegExp().allMatches$1(0, text),
- newlines = P.List_List$from(t1, true, H.getRuntimeTypeArgument(t1, "Iterable", 0));
- if (this.get$_betweenCRLF())
- C.JSArray_methods.removeLast$0(newlines);
- return newlines;
- }
- };
- S.SpanScanner.prototype = {
- set$state: function(state) {
- if (!(state instanceof S._SpanScannerState) || state._scanner !== this)
- throw H.wrapException(P.ArgumentError$("The given LineScannerState was not returned by this LineScanner."));
- this.set$position(state.position);
- },
- spanFrom$2: function(startState, endState) {
- var endPosition = endState == null ? this._string_scanner$_position : endState.position;
- return this._sourceFile.span$2(startState.position, endPosition);
- },
- spanFrom$1: function(startState) {
- return this.spanFrom$2(startState, null);
- },
- matches$1: function(pattern) {
- var t1, t2, _this = this;
- if (!_this.super$StringScanner$matches(pattern))
- return false;
- t1 = _this._string_scanner$_position;
- t2 = _this.get$lastMatch();
- _this._sourceFile.span$2(t1, t2.start + t2.pattern.length);
- return true;
- },
- error$3$length$position: function(message, $length, position) {
- var t2, match, _this = this,
- t1 = _this.string;
- B.validateErrorArgs(t1, null, position, $length);
- t2 = position == null && $length == null;
- match = t2 ? _this.get$lastMatch() : null;
- if (position == null)
- position = match == null ? _this._string_scanner$_position : match.start;
- if ($length == null)
- if (match == null)
- $length = 0;
- else {
- t2 = match.start;
- $length = t2 + match.pattern.length - t2;
- }
- throw H.wrapException(E.StringScannerException$(message, _this._sourceFile.span$2(position, position + $length), t1));
- },
- error$1: function(message) {
- return this.error$3$length$position(message, null, null);
- },
- error$2$position: function(message, position) {
- return this.error$3$length$position(message, null, position);
- },
- error$2$length: function(message, $length) {
- return this.error$3$length$position(message, $length, null);
- }
- };
- S._SpanScannerState.prototype = {};
- X.StringScanner.prototype = {
- set$position: function(position) {
- if (position < 0 || position > this.string.length)
- throw H.wrapException(P.ArgumentError$("Invalid position " + position));
- this._string_scanner$_position = position;
- this._lastMatch = null;
- },
- get$lastMatch: function() {
- var _this = this;
- if (_this._string_scanner$_position !== _this._lastMatchPosition)
- _this._lastMatch = null;
- return _this._lastMatch;
- },
- readChar$0: function() {
- var _this = this,
- t1 = _this._string_scanner$_position,
- t2 = _this.string;
- if (t1 === t2.length)
- _this.error$3$length$position("expected more input.", 0, t1);
- return J.codeUnitAt$1$s(t2, _this._string_scanner$_position++);
- },
- peekChar$1: function(offset) {
- var index;
- if (offset == null)
- offset = 0;
- index = this._string_scanner$_position + offset;
- if (index < 0 || index >= this.string.length)
- return;
- return J.codeUnitAt$1$s(this.string, index);
- },
- peekChar$0: function() {
- return this.peekChar$1(null);
- },
- scanChar$1: function(character) {
- var t1 = this._string_scanner$_position,
- t2 = this.string;
- if (t1 === t2.length)
- return false;
- if (J.codeUnitAt$1$s(t2, t1) !== character)
- return false;
- this._string_scanner$_position = t1 + 1;
- return true;
- },
- expectChar$2$name: function(character, $name) {
- if (this.scanChar$1(character))
- return;
- if ($name == null)
- if (character === 92)
- $name = '"\\"';
- else
- $name = character === 34 ? '"\\""' : '"' + H.Primitives_stringFromCharCode(character) + '"';
- this.error$3$length$position("expected " + $name + ".", 0, this._string_scanner$_position);
- },
- expectChar$1: function(character) {
- return this.expectChar$2$name(character, null);
- },
- scan$1: function(pattern) {
- var t1, _this = this,
- success = _this.matches$1(pattern);
- if (success) {
- t1 = _this._lastMatch;
- _this._lastMatchPosition = _this._string_scanner$_position = t1.start + t1.pattern.length;
- }
- return success;
- },
- expect$1: function(pattern) {
- var t1, $name;
- if (this.scan$1(pattern))
- return;
- t1 = H.stringReplaceAllUnchecked(pattern, "\\", "\\\\");
- $name = '"' + H.stringReplaceAllUnchecked(t1, '"', '\\"') + '"';
- this.error$3$length$position("expected " + $name + ".", 0, this._string_scanner$_position);
- },
- expectDone$0: function() {
- var t1 = this._string_scanner$_position;
- if (t1 === this.string.length)
- return;
- this.error$3$length$position("expected no more input.", 0, t1);
- },
- matches$1: function(pattern) {
- var _this = this,
- t1 = C.JSString_methods.matchAsPrefix$2(pattern, _this.string, _this._string_scanner$_position);
- _this._lastMatch = t1;
- _this._lastMatchPosition = _this._string_scanner$_position;
- return t1 != null;
- },
- substring$1: function(_, start) {
- var end = this._string_scanner$_position;
- return J.substring$2$s(this.string, start, end);
- },
- error$3$length$position: function(message, $length, position) {
- var t2, t3, t4, sourceFile,
- t1 = this.string;
- B.validateErrorArgs(t1, null, position, $length);
- t2 = this.sourceUrl;
- t1.toString;
- t3 = new H.CodeUnits(t1);
- t4 = H.setRuntimeTypeInfo([0], [P.int]);
- sourceFile = new Y.SourceFile(t2, t4, new Uint32Array(H._ensureNativeList(t3.toList$0(t3))));
- sourceFile.SourceFile$decoded$2$url(t3, t2);
- throw H.wrapException(E.StringScannerException$(message, sourceFile.span$2(position, position + $length), t1));
- }
- };
- A.AsciiGlyphSet.prototype = {
- glyphOrAscii$2: function(glyph, alternative) {
- return alternative;
- },
- get$horizontalLine: function() {
- return "-";
- },
- get$verticalLine: function() {
- return "|";
- },
- get$topLeftCorner: function() {
- return ",";
- },
- get$bottomLeftCorner: function() {
- return "'";
- },
- get$cross: function() {
- return "+";
- },
- get$upEnd: function() {
- return "'";
- },
- get$downEnd: function() {
- return ",";
- },
- get$horizontalLineBold: function() {
- return "=";
- }
- };
- K.UnicodeGlyphSet.prototype = {
- glyphOrAscii$2: function(glyph, alternative) {
- return glyph;
- },
- get$horizontalLine: function() {
- return "\u2500";
- },
- get$verticalLine: function() {
- return "\u2502";
- },
- get$topLeftCorner: function() {
- return "\u250c";
- },
- get$bottomLeftCorner: function() {
- return "\u2514";
- },
- get$cross: function() {
- return "\u253c";
- },
- get$upEnd: function() {
- return "\u2575";
- },
- get$downEnd: function() {
- return "\u2577";
- },
- get$horizontalLineBold: function() {
- return "\u2501";
- }
- };
- S.Tuple2.prototype = {
- toString$0: function(_) {
- return "[" + H.S(this.item1) + ", " + H.S(this.item2) + "]";
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof S.Tuple2 && J.$eq$(other.item1, this.item1) && J.$eq$(other.item2, this.item2);
- },
- get$hashCode: function(_) {
- var t1 = J.get$hashCode$(this.item1),
- t2 = J.get$hashCode$(this.item2);
- return X._finish(X._combine(X._combine(0, C.JSInt_methods.get$hashCode(t1)), C.JSInt_methods.get$hashCode(t2)));
- }
- };
- S.Tuple3.prototype = {
- toString$0: function(_) {
- return "[" + H.S(this.item1) + ", " + this.item2.toString$0(0) + ", " + H.S(this.item3) + "]";
- },
- $eq: function(_, other) {
- if (other == null)
- return false;
- return other instanceof S.Tuple3 && other.item1 == this.item1 && other.item2.$eq(0, this.item2) && J.$eq$(other.item3, this.item3);
- },
- get$hashCode: function(_) {
- var t3,
- t1 = J.get$hashCode$(this.item1),
- t2 = this.item2;
- t2 = t2.get$hashCode(t2);
- t3 = J.get$hashCode$(this.item3);
- return X._finish(X._combine(X._combine(X._combine(0, C.JSInt_methods.get$hashCode(t1)), C.JSInt_methods.get$hashCode(t2)), C.JSInt_methods.get$hashCode(t3)));
- }
- };
- E.WatchEvent.prototype = {
- toString$0: function(_) {
- return H.S(this.type) + " " + H.S(this.path);
- },
- get$path: function(receiver) {
- return this.path;
- }
- };
- E.ChangeType.prototype = {
- toString$0: function(_) {
- return this._watch_event$_name;
- }
- };
- (function aliases() {
- var _ = J.Interceptor.prototype;
- _.super$Interceptor$noSuchMethod = _.noSuchMethod$1;
- _ = J.JavaScriptObject.prototype;
- _.super$JavaScriptObject$toString = _.toString$0;
- _ = H.JsLinkedHashMap.prototype;
- _.super$JsLinkedHashMap$internalContainsKey = _.internalContainsKey$1;
- _.super$JsLinkedHashMap$internalGet = _.internalGet$1;
- _.super$JsLinkedHashMap$internalSet = _.internalSet$2;
- _.super$JsLinkedHashMap$internalRemove = _.internalRemove$1;
- _ = P._BroadcastStreamController.prototype;
- _.super$_BroadcastStreamController$_addEventError = _._addEventError$0;
- _ = P._BufferingStreamSubscription.prototype;
- _.super$_BufferingStreamSubscription$_add = _._async$_add$1;
- _.super$_BufferingStreamSubscription$_addError = _._addError$2;
- _ = P.ListMixin.prototype;
- _.super$ListMixin$setRange = _.setRange$4;
- _ = P.Iterable.prototype;
- _.super$Iterable$where = _.where$1;
- _.super$Iterable$skipWhile = _.skipWhile$1;
- _ = B.ModifiableCssParentNode.prototype;
- _.super$ModifiableCssParentNode$addChild = _.addChild$1;
- _ = M.SimpleSelector.prototype;
- _.super$SimpleSelector$addSuffix = _.addSuffix$1;
- _.super$SimpleSelector$unify = _.unify$1;
- _ = G.Parser.prototype;
- _.super$Parser$silentComment = _.silentComment$0;
- _ = V.StylesheetParser.prototype;
- _.super$StylesheetParser$importArgument = _.importArgument$0;
- _ = F.Value.prototype;
- _.super$Value$assertMap = _.assertMap$1;
- _.super$Value$plus = _.plus$1;
- _.super$Value$minus = _.minus$1;
- _.super$Value$dividedBy = _.dividedBy$1;
- _ = Y.SourceSpanMixin.prototype;
- _.super$SourceSpanMixin$compareTo = _.compareTo$1;
- _.super$SourceSpanMixin$$eq = _.$eq;
- _ = X.StringScanner.prototype;
- _.super$StringScanner$readChar = _.readChar$0;
- _.super$StringScanner$scanChar = _.scanChar$1;
- _.super$StringScanner$scan = _.scan$1;
- _.super$StringScanner$matches = _.matches$1;
- })();
- (function installTearOffs() {
- var _static_2 = hunkHelpers._static_2,
- _instance_1_i = hunkHelpers._instance_1i,
- _instance_1_u = hunkHelpers._instance_1u,
- _static_1 = hunkHelpers._static_1,
- _static_0 = hunkHelpers._static_0,
- _static = hunkHelpers.installStaticTearOff,
- _instance_0_u = hunkHelpers._instance_0u,
- _instance = hunkHelpers.installInstanceTearOff,
- _instance_0_i = hunkHelpers._instance_0i,
- _instance_2_u = hunkHelpers._instance_2u;
- _static_2(J, "_interceptors_JSArray__compareAny$closure", "JSArray__compareAny", 35);
- _instance_1_i(J.JSArray.prototype, "get$contains", "contains$1", 3);
- _instance_1_i(H._CastIterableBase.prototype, "get$contains", "contains$1", 3);
- _instance_1_u(H.ConstantStringMap.prototype, "get$containsKey", "containsKey$1", 3);
- _instance_1_u(H.ConstantProtoMap.prototype, "get$containsKey", "containsKey$1", 3);
- _instance_1_u(H.JsLinkedHashMap.prototype, "get$containsKey", "containsKey$1", 3);
- _static_1(P, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 19);
- _static_1(P, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 19);
- _static_1(P, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 19);
- _static_0(P, "async___startMicrotaskLoop$closure", "_startMicrotaskLoop", 2);
- _static_1(P, "async___nullDataHandler$closure", "_nullDataHandler", 8);
- _static(P, "async___nullErrorHandler$closure", 1, function() {
- return [null];
- }, ["call$2", "call$1"], ["_nullErrorHandler", function(error) {
- return P._nullErrorHandler(error, null);
- }], 16, 0);
- _static_0(P, "async___nullDoneHandler$closure", "_nullDoneHandler", 2);
- _static(P, "async___rootHandleUncaughtError$closure", 5, null, ["call$5"], ["_rootHandleUncaughtError"], 65, 0);
- _static(P, "async___rootRun$closure", 4, null, ["call$1$4", "call$4"], ["_rootRun", function($self, $parent, zone, f) {
- return P._rootRun($self, $parent, zone, f, null);
- }], 66, 1);
- _static(P, "async___rootRunUnary$closure", 5, null, ["call$2$5", "call$5"], ["_rootRunUnary", function($self, $parent, zone, f, arg) {
- return P._rootRunUnary($self, $parent, zone, f, arg, null, null);
- }], 67, 1);
- _static(P, "async___rootRunBinary$closure", 6, null, ["call$3$6", "call$6"], ["_rootRunBinary", function($self, $parent, zone, f, arg1, arg2) {
- return P._rootRunBinary($self, $parent, zone, f, arg1, arg2, null, null, null);
- }], 68, 1);
- _static(P, "async___rootRegisterCallback$closure", 4, null, ["call$1$4", "call$4"], ["_rootRegisterCallback", function($self, $parent, zone, f) {
- return P._rootRegisterCallback($self, $parent, zone, f, null);
- }], 91, 0);
- _static(P, "async___rootRegisterUnaryCallback$closure", 4, null, ["call$2$4", "call$4"], ["_rootRegisterUnaryCallback", function($self, $parent, zone, f) {
- return P._rootRegisterUnaryCallback($self, $parent, zone, f, null, null);
- }], 70, 0);
- _static(P, "async___rootRegisterBinaryCallback$closure", 4, null, ["call$3$4", "call$4"], ["_rootRegisterBinaryCallback", function($self, $parent, zone, f) {
- return P._rootRegisterBinaryCallback($self, $parent, zone, f, null, null, null);
- }], 71, 0);
- _static(P, "async___rootErrorCallback$closure", 5, null, ["call$5"], ["_rootErrorCallback"], 72, 0);
- _static(P, "async___rootScheduleMicrotask$closure", 4, null, ["call$4"], ["_rootScheduleMicrotask"], 73, 0);
- _static(P, "async___rootCreateTimer$closure", 5, null, ["call$5"], ["_rootCreateTimer"], 74, 0);
- _static(P, "async___rootCreatePeriodicTimer$closure", 5, null, ["call$5"], ["_rootCreatePeriodicTimer"], 75, 0);
- _static(P, "async___rootPrint$closure", 4, null, ["call$4"], ["_rootPrint"], 76, 0);
- _static_1(P, "async___printToZone$closure", "_printToZone", 77);
- _static(P, "async___rootFork$closure", 5, null, ["call$5"], ["_rootFork"], 78, 0);
- var _;
- _instance_0_u(_ = P._BroadcastSubscription.prototype, "get$_async$_onPause", "_async$_onPause$0", 2);
- _instance_0_u(_, "get$_async$_onResume", "_async$_onResume$0", 2);
- _instance(P._AsyncCompleter.prototype, "get$complete", 0, 0, function() {
- return [null];
- }, ["call$1", "call$0"], ["complete$1", "complete$0"], 30, 0);
- _instance(P._Future.prototype, "get$_completeError", 0, 1, function() {
- return [null];
- }, ["call$2", "call$1"], ["_completeError$2", "_completeError$1"], 16, 0);
- _instance_1_i(_ = P._StreamController.prototype, "get$add", "add$1", 8);
- _instance(_, "get$addError", 0, 1, function() {
- return [null];
- }, ["call$2", "call$1"], ["addError$2", "addError$1"], 16, 0);
- _instance_0_i(_, "get$close", "close$0", 34);
- _instance_1_u(_, "get$_async$_add", "_async$_add$1", 8);
- _instance_2_u(_, "get$_addError", "_addError$2", 53);
- _instance_0_u(_, "get$_close", "_close$0", 2);
- _instance_0_u(_ = P._ControllerSubscription.prototype, "get$_async$_onPause", "_async$_onPause$0", 2);
- _instance_0_u(_, "get$_async$_onResume", "_async$_onResume$0", 2);
- _instance(_ = P._BufferingStreamSubscription.prototype, "get$pause", 1, 0, null, ["call$1", "call$0"], ["pause$1", "pause$0"], 28, 0);
- _instance_0_u(_, "get$resume", "resume$0", 2);
- _instance_0_u(_, "get$_async$_onPause", "_async$_onPause$0", 2);
- _instance_0_u(_, "get$_async$_onResume", "_async$_onResume$0", 2);
- _instance(_ = P._DoneStreamSubscription.prototype, "get$pause", 1, 0, null, ["call$1", "call$0"], ["pause$1", "pause$0"], 28, 0);
- _instance_0_u(_, "get$resume", "resume$0", 2);
- _instance_0_u(_, "get$_sendDone", "_sendDone$0", 2);
- _instance_1_u(_ = P._StreamIterator.prototype, "get$_onData", "_onData$1", 8);
- _instance(_, "get$_onError", 0, 1, function() {
- return [null];
- }, ["call$2", "call$1"], ["_onError$2", "_onError$1"], 16, 0);
- _instance_0_u(_, "get$_onDone", "_onDone$0", 2);
- _instance_0_u(_ = P._ForwardingStreamSubscription.prototype, "get$_async$_onPause", "_async$_onPause$0", 2);
- _instance_0_u(_, "get$_async$_onResume", "_async$_onResume$0", 2);
- _instance_1_u(_, "get$_handleData", "_handleData$1", 8);
- _instance_2_u(_, "get$_handleError", "_handleError$2", 46);
- _instance_0_u(_, "get$_handleDone", "_handleDone$0", 2);
- _static_2(P, "collection___defaultEquals$closure", "_defaultEquals", 79);
- _static_1(P, "collection___defaultHashCode$closure", "_defaultHashCode", 80);
- _static_2(P, "collection_ListMixin__compareAny$closure", "ListMixin__compareAny", 35);
- _instance_1_u(P._HashMap.prototype, "get$containsKey", "containsKey$1", 3);
- _instance_1_u(P._LinkedCustomHashMap.prototype, "get$containsKey", "containsKey$1", 3);
- _instance(_ = P._LinkedHashSet.prototype, "get$_newSimilarSet", 0, 0, null, ["call$1$0", "call$0"], ["_newSimilarSet$1$0", "_newSimilarSet$0"], 29, 0);
- _instance_1_i(_, "get$contains", "contains$1", 3);
- _instance(P._LinkedIdentityHashSet.prototype, "get$_newSimilarSet", 0, 0, null, ["call$1$0", "call$0"], ["_newSimilarSet$1$0", "_newSimilarSet$0"], 29, 0);
- _instance_1_u(P.MapMixin.prototype, "get$containsKey", "containsKey$1", 3);
- _instance_1_u(P.MapView.prototype, "get$containsKey", "containsKey$1", 3);
- _static_1(P, "convert___defaultToEncodable$closure", "_defaultToEncodable", 10);
- _static_1(P, "core__identityHashCode$closure", "identityHashCode", 81);
- _static_2(P, "core__identical$closure", "identical", 82);
- _static_1(P, "core_Uri_decodeComponent$closure", "Uri_decodeComponent", 27);
- _instance_1_i(P.Iterable.prototype, "get$contains", "contains$1", 3);
- _static(P, "math__max$closure", 2, null, ["call$1$2", "call$2"], ["max", function(a, b) {
- return P.max(a, b, P.num);
- }], 84, 1);
- _instance_1_u(_ = Y.StreamCompleter.prototype, "get$setSourceStream", "setSourceStream$1", 8);
- _instance(_, "get$setError", 0, 1, function() {
- return [null];
- }, ["call$2", "call$1"], ["setError$2", "setError$1"], 40, 0);
- _instance_0_u(_ = L.StreamGroup.prototype, "get$_onListen", "_onListen$0", 2);
- _instance_0_u(_, "get$_onPause", "_onPause$0", 2);
- _instance_0_u(_, "get$_onResume", "_onResume$0", 2);
- _instance_0_u(_, "get$_onCancel", "_onCancel$0", 34);
- _instance_1_i(O.EmptyUnmodifiableSet.prototype, "get$contains", "contains$1", 3);
- _instance_1_i(M._DelegatingIterableBase.prototype, "get$contains", "contains$1", 3);
- _instance_1_i(M.MapKeySet.prototype, "get$contains", "contains$1", 3);
- _instance_1_u(B.ModifiableCssNode.prototype, "get$_node0$_isInvisible", "_node0$_isInvisible$1", 31);
- _instance_1_u(D.SelectorList.prototype, "get$_complexContainsParentSelector", "_complexContainsParentSelector$1", 64);
- _static_1(Y, "functions___isUnique$closure", "_isUnique", 85);
- _static_1(K, "color___opacify$closure", "_opacify", 6);
- _static_1(K, "color___transparentize$closure", "_transparentize", 6);
- _static_2(B, "node___render$closure", "_render", 86);
- _static_1(B, "node___renderSync$closure", "_renderSync", 87);
- _instance_0_u(_ = G.Parser.prototype, "get$whitespace", "whitespace$0", 2);
- _instance_0_u(_, "get$loudComment", "loudComment$0", 2);
- _instance_0_u(_, "get$string", "string$0", 48);
- _instance_0_u(U.SassParser.prototype, "get$loudComment", "loudComment$0", 2);
- _instance(_ = V.StylesheetParser.prototype, "get$_statement", 0, 0, null, ["call$1$root", "call$0"], ["_statement$1$root", "_statement$0"], 36, 0);
- _instance_0_u(_, "get$_declarationChild", "_declarationChild$0", 25);
- _instance_0_u(_, "get$_declarationAtRule", "_declarationAtRule$0", 25);
- _instance_0_u(_, "get$_functionChild", "_functionChild$0", 25);
- _instance(_, "get$expression", 0, 0, null, ["call$3$bracketList$singleEquals$until", "call$0", "call$2$singleEquals$until", "call$1$bracketList", "call$1$singleEquals", "call$1$until"], ["expression$3$bracketList$singleEquals$until", "expression$0", "expression$2$singleEquals$until", "expression$1$bracketList", "expression$1$singleEquals", "expression$1$until"], 51, 0);
- _instance_0_u(_, "get$_number", "_number$0", 52);
- _instance_1_u(K.LimitedMapView.prototype, "get$containsKey", "containsKey$1", 3);
- _instance_1_u(Z.MergedMapView.prototype, "get$containsKey", "containsKey$1", 3);
- _instance_1_i(N.NoSourceMapBuffer.prototype, "get$write", "write$1", 8);
- _instance_1_u(F.PrefixedMapView.prototype, "get$containsKey", "containsKey$1", 3);
- _instance_1_u(U.PublicMemberMapView.prototype, "get$containsKey", "containsKey$1", 3);
- _instance_1_i(D.SourceMapBuffer.prototype, "get$write", "write$1", 8);
- _instance_1_u(R.UnprefixedMapView.prototype, "get$containsKey", "containsKey$1", 3);
- _static_1(B, "utils__isPublic$closure", "isPublic", 88);
- _instance_1_u(_ = N._SerializeVisitor.prototype, "get$_visitMediaQuery", "_visitMediaQuery$1", 58);
- _instance_1_u(_, "get$_isInvisible", "_isInvisible$1", 31);
- _instance(Y.SourceFile.prototype, "get$span", 0, 1, null, ["call$2", "call$1"], ["span$2", "span$1"], 60, 0);
- _instance(Y.SourceSpanMixin.prototype, "get$message", 1, 1, function() {
- return {color: null};
- }, ["call$2$color", "call$1"], ["message$2$color", "message$1"], 92, 0);
- _static(L, "from_handlers__StreamTransformer__defaultHandleError$closure", 3, null, ["call$1$3", "call$3"], ["_StreamTransformer__defaultHandleError", function(error, stackTrace, sink) {
- return L._StreamTransformer__defaultHandleError(error, stackTrace, sink, null);
- }], 89, 0);
- _static(R, "rate_limit___collectToList$closure", 2, null, ["call$1$2", "call$2"], ["_collectToList", function(element, soFar) {
- return R._collectToList(element, soFar, null);
- }], 90, 0);
- _static_1(D, "path__dirname$closure", "dirname", 27);
- _static_1(F, "value0__wrapValue$closure", "wrapValue", 69);
- _static_1(T, "character__isWhitespace$closure", "isWhitespace", 11);
- _static_1(T, "character__isNewline$closure", "isNewline", 11);
- _static_1(T, "character__isHex$closure", "isHex", 11);
- _static_2(T, "number0__fuzzyEquals$closure", "fuzzyEquals", 14);
- _static_2(T, "number0__fuzzyLessThan$closure", "fuzzyLessThan", 14);
- _static_2(T, "number0__fuzzyLessThanOrEquals$closure", "fuzzyLessThanOrEquals", 14);
- _static_2(T, "number0__fuzzyGreaterThan$closure", "fuzzyGreaterThan", 14);
- _static_2(T, "number0__fuzzyGreaterThanOrEquals$closure", "fuzzyGreaterThanOrEquals", 14);
- _static_1(T, "number0__fuzzyRound$closure", "fuzzyRound", 24);
- })();
- (function inheritance() {
- var _mixin = hunkHelpers.mixin,
- _inherit = hunkHelpers.inherit,
- _inheritMany = hunkHelpers.inheritMany;
- _inherit(P.Object, null);
- _inheritMany(P.Object, [H.JS_CONST, J.Interceptor, J.ArrayIterator, P.Iterable, H.CastIterator, H.Closure, P._ListBase_Object_ListMixin, H.ListIterator, P.Iterator, H.ExpandIterator, H.EmptyIterator, H.FollowedByIterator, H.WhereTypeIterator, H.FixedLengthListMixin, H.UnmodifiableListMixin, H.Symbol, P.MapView, H.ConstantMap, H.JSInvocationMirror, H.TypeErrorDecoder, P.Error, H.ExceptionAndStackTrace, H._StackTrace, H.TypeImpl, P.MapMixin, H.LinkedHashMapCell, H.LinkedHashMapKeyIterator, H.JSSyntaxRegExp, H._MatchImplementation, H._AllMatchesIterator, H.StringMatch, H._StringAllMatchesIterator, P._TimerImpl, P._AsyncAwaitCompleter, P._AsyncStarStreamController, P._IterationMarker, P._SyncStarIterator, P.Stream, P._BufferingStreamSubscription, P._BroadcastStreamController, P.Future, P._Completer, P._FutureListener, P._Future, P._AsyncCallbackEntry, P.StreamSubscription, P.EventSink, P.StreamTransformerBase, P._StreamController, P._SyncStreamControllerDispatch, P._AsyncStreamControllerDispatch, P._AddStreamState, P._DelayedEvent, P._DelayedDone, P._PendingEvents, P._DoneStreamSubscription, P._StreamIterator, P.Timer, P.AsyncError, P._ZoneFunction, P.ZoneSpecification, P._ZoneSpecification, P.ZoneDelegate, P.Zone, P._ZoneDelegate, P._Zone, P._HashMapKeyIterator, P._SetBase, P._LinkedHashSetCell, P._LinkedHashSetIterator, P.ListMixin, P._MapBaseValueIterator, P._UnmodifiableMapMixin, P.Queue, P._ListQueueIterator, P.Codec, P._Base64Encoder, P.ChunkedConversionSink, P._JsonStringifier, P.StringConversionSinkMixin, P._Utf8Encoder, P._Utf8Decoder, P.bool, P.DateTime, P.num, P.Duration, P.OutOfMemoryError, P.StackOverflowError, P._Exception, P.FormatException, P.Function, P.List, P.Map, P.MapEntry, P.Null, P.Match, P.RegExpMatch, P.StackTrace, P._StringStackTrace, P.String, P.RuneIterator, P.StringBuffer, P.StringSink, P.Symbol0, P.Uri, P._Uri, P.UriData, P._SimpleUri, P._JSRandom, P.Uint8List, N.ArgParser, V.ArgResults, G.Option, G.OptionType, G.Parser0, G.Usage, V.ErrorResult, E.Result, F.ValueResult, Y.StreamCompleter, L.StreamGroup, L._StreamGroupState, G.StreamQueue, G._EventRequest, G._NextRequest, Q.Repl, B.ReplAdapter, U.DefaultEquality, U.ListEquality, U._MapEntry, U.MapEquality, Q._QueueList_Object_ListMixin, M._DelegatingIterableBase, L.UnmodifiableSetMixin, M.Context, M._PathDirection, M._PathRelation, O.Style, X.ParsedPath, X.PathException, F.CssMediaQuery, F._SingletonCssMediaQueryMergeResult, F.MediaQuerySuccessfulMergeResult, B.AstNode, F.ModifiableCssValue, F.CssValue, B._FakeAstNode, Z.Argument, B.ArgumentDeclaration, X.ArgumentInvocation, V.AtRootQuery, Z.ConfiguredVariable, T.Expression, V.BinaryOperationExpression, V.BinaryOperator, Z.BooleanExpression, K.ColorExpression, F.FunctionExpression, L.IfExpression, D.ListExpression, A.MapExpression, O.NullExpression, T.NumberExpression, T.ParenthesizedExpression, T.SelectorExpression, D.StringExpression, X.UnaryOperationExpression, X.UnaryOperator, F.ValueExpression, S.VariableExpression, F.Import, B.DynamicImport, Q.StaticImport, X.Interpolation, O.Statement, M.ParentStatement, Q.ContentRule, Q.DebugRule, D.ErrorRule, X.ExtendRule, L.ForwardRule, V.IfRule, V.IfClause, B.ImportRule, A.IncludeRule, L.LoudComment, B.ReturnRule, B.SilentComment, T.UseRule, Z.VariableDeclaration, Y.WarnRule, L.SupportsDeclaration, X.SupportsInterpolation, M.SupportsNegation, U.SupportsOperation, T.Selector, N.AttributeOperator, S.ComplexSelectorComponent, S.Combinator, D.QualifiedName, X.CompileResult, Q.AsyncEnvironment, Q._EnvironmentModule0, O.AsyncImportCache, B.AsyncCallable, S.AsyncBuiltInCallable, Q.BuiltInCallable, L.PlainCssCallable, E.UserDefinedCallable, A.Configuration, Z.ConfiguredValue, O.Environment, O._EnvironmentModule, G.SourceSpanException, E.SassScriptException, B.ExecutableOptions, B.UsageException, A._Watcher, T.EmptyExtender, F.Extender, S.Extension, L.ExtendMode, R.ImportCache, B.AsyncImporter, F.NodeImporter, E.ImporterResult, Z.InterpolationBuffer, B.FileSystemException, B.Stderr, F._QuietLogger, S.StderrLogger, T.TrackingLogger, G.Module, Q.BuiltInModule, R.ForwardedModuleView, B.ShadowedModuleView, G.Parser, M.StylesheetGraph, M.StylesheetNode, M.Syntax, G.FixedLengthListBuilder, U.MultiDirWatcher, N.NoSourceMapBuffer, D.SourceMapBuffer, F.Value, D.ListSeparator, E._EvaluateVisitor0, E._ImportedCssVisitor0, E.EvaluateResult, E._ArgumentResults0, V._CloneCssVisitor, R.Evaluator, R._EvaluateVisitor, R._ImportedCssVisitor, R._ArgumentResults, D.RecursiveStatementVisitor, N._SerializeVisitor, N.OutputStyle, N.LineFeed, N.SerializeResult, L.Entry, T.Mapping, T.TargetLineEntry, T.TargetEntry, Y.SourceFile, D.SourceLocationMixin, Y.FileSpan, Y.SourceSpanMixin, U.Highlighter, U._Highlight, U._Line, V.SourceLocation, V.SourceSpan, U.Chain, A.Frame, T.LazyTrace, Y.Trace, N.UnparsedFrame, X.StringScanner, S._SpanScannerState, A.AsciiGlyphSet, K.UnicodeGlyphSet, S.Tuple2, S.Tuple3, E.WatchEvent, E.ChangeType]);
- _inheritMany(J.Interceptor, [J.JSBool, J.JSNull, J.JavaScriptObject, J.JSArray, J.JSNumber, J.JSString, H.NativeTypedData]);
- _inheritMany(J.JavaScriptObject, [J.PlainJavaScriptObject, J.UnknownJavaScriptObject, J.JavaScriptFunction, B.Stdin, B.Stdout, B.ReadlineModule, B.ReadlineOptions, B.ReadlineInterface, B._FS, B._Stat, B._Date, B._Stderr, B._Stdin, B._SystemError, B._Process, Y.Chokidar, Y.ChokidarOptions, Y.ChokidarWatcher, V.JSError, D.Exports, E.FiberClass, E.Fiber, F.JSFunction, F.NodeImporterResult, Z.RenderContext, L.RenderContextOptions, R.RenderOptions, U.RenderResult, U.RenderResultStats, G.Types, B._PropertyDescriptor, K._NodeSassColor, D._NodeSassList, A._NodeSassMap, T._NodeSassNumber, D._NodeSassString]);
- _inherit(J.JSUnmodifiableArray, J.JSArray);
- _inheritMany(J.JSNumber, [J.JSInt, J.JSDouble]);
- _inheritMany(P.Iterable, [H._CastIterableBase, H.EfficientLengthIterable, H.MappedIterable, H.WhereIterable, H.ExpandIterable, H.TakeIterable, H.SkipIterable, H.SkipWhileIterable, H.FollowedByIterable, H.WhereTypeIterable, H._ConstantMapKeyIterable, P.IterableBase, H._StringAllMatchesIterable, P.Runes]);
- _inheritMany(H._CastIterableBase, [H.CastIterable, H.__CastListBase__CastIterableBase_ListMixin, H.CastSet, H.CastQueue]);
- _inherit(H._EfficientLengthCastIterable, H.CastIterable);
- _inherit(H._CastListBase, H.__CastListBase__CastIterableBase_ListMixin);
- _inheritMany(H.Closure, [H._CastListBase_sort_closure, H.ConstantStringMap_values_closure, H.Instantiation, H.Primitives_functionNoSuchMethod_closure, H.unwrapException_saveStackTrace, H.TearOffClosure, H.JsLinkedHashMap_values_closure, H.JsLinkedHashMap_addAll_closure, H.initHooks_closure, H.initHooks_closure0, H.initHooks_closure1, P._AsyncRun__initializeScheduleImmediate_internalCallback, P._AsyncRun__initializeScheduleImmediate_closure, P._AsyncRun__scheduleImmediateJsOverride_internalCallback, P._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, P._TimerImpl_internalCallback, P._TimerImpl$periodic_closure, P._awaitOnObject_closure, P._awaitOnObject_closure0, P._wrapJsFunctionForAsync_closure, P._asyncStarHelper_closure, P._asyncStarHelper_closure0, P._AsyncStarStreamController__resumeBody, P._AsyncStarStreamController__resumeBody_closure, P._AsyncStarStreamController_closure0, P._AsyncStarStreamController_closure1, P._AsyncStarStreamController_closure, P._AsyncStarStreamController__closure, P._SyncBroadcastStreamController__sendData_closure, P._SyncBroadcastStreamController__sendError_closure, P._SyncBroadcastStreamController__sendDone_closure, P.Future_wait_handleError, P.Future_wait_closure, P._Future__addListener_closure, P._Future__prependListeners_closure, P._Future__chainForeignFuture_closure, P._Future__chainForeignFuture_closure0, P._Future__chainForeignFuture_closure1, P._Future__asyncComplete_closure, P._Future__chainFuture_closure, P._Future__asyncCompleteError_closure, P._Future__propagateToListeners_handleWhenCompleteCallback, P._Future__propagateToListeners_handleWhenCompleteCallback_closure, P._Future__propagateToListeners_handleValueCallback, P._Future__propagateToListeners_handleError, P.Stream_Stream$fromFuture_closure, P.Stream_Stream$fromFuture_closure0, P.Stream_length_closure, P.Stream_length_closure0, P._StreamController__subscribe_closure, P._StreamController__recordCancel_complete, P._AddStreamState_cancel_closure, P._BufferingStreamSubscription__sendError_sendError, P._BufferingStreamSubscription__sendDone_sendDone, P._PendingEvents_schedule_closure, P._CustomZone_bindCallback_closure, P._CustomZone_bindUnaryCallback_closure, P._CustomZone_bindCallbackGuarded_closure, P._rootHandleUncaughtError_closure, P._RootZone_bindCallback_closure, P._RootZone_bindCallbackGuarded_closure, P._HashMap_values_closure, P._HashMap_addAll_closure, P._LinkedCustomHashMap_closure, P.HashMap_HashMap$from_closure, P.LinkedHashMap_LinkedHashMap$from_closure, P.MapBase_mapToString_closure, P.MapMixin_entries_closure, P._JsonStringifier_writeMap_closure, P.NoSuchMethodError_toString_closure, P.Duration_toString_sixDigits, P.Duration_toString_twoDigits, P.Uri__parseIPv4Address_error, P.Uri_parseIPv6Address_error, P.Uri_parseIPv6Address_parseHex, P._Uri__Uri$notSimple_closure, P._Uri__checkNonWindowsPathReservedCharacters_closure, P._Uri__makePath_closure, P._createTables_closure, P._createTables_build, P._createTables_setChars, P._createTables_setRange, N.ArgParser_findByAbbreviation_closure, N.ArgParser_findByAbbreviation_closure0, G.Parser_parse_closure, G.Parser_setOption_closure, G.Usage_generate_closure, G.Usage_buildAllowedList_closure, L.StreamGroup_add_closure, L.StreamGroup_add_closure0, L.StreamGroup__onListen_closure, L.StreamGroup__onCancel_closure, L.StreamGroup__onCancel_closure0, L.StreamGroup__listenToStream_closure, G.StreamQueue__ensureListening_closure, G.StreamQueue__ensureListening_closure1, G.StreamQueue__ensureListening_closure0, Q.closure142, B.ReplAdapter_runAsync_closure, Y.mapMap_closure, Y.mapMap_closure0, Y.mapMap_closure1, Y.groupBy_closure, B.defaultCompare_closure, M.Context_join_closure, M.Context_joinAll_closure, M.Context_split_closure, M._validateArgList_closure, X.ParsedPath_normalize_closure, X.ParsedPath__splitExtension_closure, X.ParsedPath__splitExtension_closure0, K.PathMap__create_closure, K.PathMap__create_closure0, K.PathMap__create_closure1, L.WindowsStyle_absolutePathToUri_closure, B.ArgumentDeclaration_verify_closure, B.ArgumentDeclaration_verify_closure0, D.ListExpression_toString_closure, A.MapExpression_toString_closure, X.Interpolation_toString_closure, V.EachRule_toString_closure, L.ForwardRule__memberList_closure, V.IfRule_toString_closure, V.IfClause$__closure, V.IfClause$___closure, M.ParentStatement_closure, M.ParentStatement__closure, S.ComplexSelector_isInvisible_closure, X.CompoundSelector_isInvisible_closure, N.IDSelector_unify_closure, D.SelectorList_isInvisible_closure, D.SelectorList_asSassList_closure, D.SelectorList_asSassList__closure, D.SelectorList_unify_closure, D.SelectorList_unify__closure, D.SelectorList_unify___closure, D.SelectorList_resolveParentSelectors_closure, D.SelectorList_resolveParentSelectors__closure, D.SelectorList_resolveParentSelectors__closure0, D.SelectorList__complexContainsParentSelector_closure, D.SelectorList__complexContainsParentSelector__closure, D.SelectorList__resolveParentSelectorsCompound_closure, D.SelectorList__resolveParentSelectorsCompound_closure0, D.SelectorList__resolveParentSelectorsCompound_closure1, X._compileStylesheet_closure0, Q.AsyncEnvironment_importForwards_closure, Q.AsyncEnvironment_importForwards_closure0, Q.AsyncEnvironment_importForwards_closure1, Q.AsyncEnvironment_importForwards_closure2, Q.AsyncEnvironment__getVariableFromGlobalModule_closure, Q.AsyncEnvironment_setVariable_closure, Q.AsyncEnvironment_setVariable_closure0, Q.AsyncEnvironment_setVariable_closure1, Q.AsyncEnvironment__getFunctionFromGlobalModule_closure, Q.AsyncEnvironment__getMixinFromGlobalModule_closure, Q._EnvironmentModule__EnvironmentModule_closure5, Q._EnvironmentModule__EnvironmentModule_closure6, Q._EnvironmentModule__EnvironmentModule_closure7, Q._EnvironmentModule__EnvironmentModule_closure8, Q._EnvironmentModule__EnvironmentModule_closure9, Q._EnvironmentModule__EnvironmentModule_closure10, O.AsyncImportCache_canonicalize_closure, O.AsyncImportCache__canonicalize_closure, O.AsyncImportCache_importCanonical_closure, O.AsyncImportCache_humanize_closure, O.AsyncImportCache_humanize_closure0, O.AsyncImportCache_humanize_closure1, S.AsyncBuiltInCallable$mixin_closure, Q.BuiltInCallable$mixin_closure, X.closure70, X.closure71, U._compileStylesheet_closure, O.Environment_importForwards_closure, O.Environment_importForwards_closure0, O.Environment_importForwards_closure1, O.Environment_importForwards_closure2, O.Environment__getVariableFromGlobalModule_closure, O.Environment_setVariable_closure, O.Environment_setVariable_closure0, O.Environment_setVariable_closure1, O.Environment__getFunctionFromGlobalModule_closure, O.Environment__getMixinFromGlobalModule_closure, O._EnvironmentModule__EnvironmentModule_closure, O._EnvironmentModule__EnvironmentModule_closure0, O._EnvironmentModule__EnvironmentModule_closure1, O._EnvironmentModule__EnvironmentModule_closure2, O._EnvironmentModule__EnvironmentModule_closure3, O._EnvironmentModule__EnvironmentModule_closure4, F.main_printError, F.main_closure0, D._writeSourceMap_closure, B.ExecutableOptions_closure, B.ExecutableOptions_emitErrorCss_closure, A.watch_closure, A._Watcher__debounceEvents_closure, A._Watcher__debounceEvents__closure, A._Watcher__retryPotentialImports_recanonicalize, F.Extender__extendOrReplace_closure, F.Extender_extensionsWhereTarget_closure, F.Extender__registerSelector_closure, F.Extender_addExtension_closure, F.Extender_addExtension_closure0, F.Extender_addExtension_closure1, F.Extender__extendExistingExtensions_closure, F.Extender__extendExistingExtensions_closure0, F.Extender_addExtensions_closure, F.Extender_addExtensions__closure, F.Extender_addExtensions___closure, F.Extender_addExtensions___closure0, F.Extender__extendList_closure, F.Extender__extendComplex_closure, F.Extender__extendComplex_closure0, F.Extender__extendComplex__closure, F.Extender__extendComplex__closure0, F.Extender__extendComplex___closure, F.Extender__extendCompound_closure, F.Extender__extendCompound_closure0, F.Extender__extendCompound__closure, F.Extender__extendCompound__closure0, F.Extender__extendCompound_closure1, F.Extender__extendCompound_closure2, F.Extender__extendSimple_withoutPseudo, F.Extender__extendSimple_closure, F.Extender__extendPseudo_closure, F.Extender__extendPseudo_closure0, F.Extender__extendPseudo_closure1, F.Extender__extendPseudo_closure2, F.Extender__extendPseudo_closure3, F.Extender__trim_closure, F.Extender__trim_closure0, F.Extender_clone_closure, Y.unifyComplex_closure, Y._weaveParents_closure, Y._weaveParents_closure0, Y._weaveParents_closure1, Y._weaveParents__closure1, Y._weaveParents_closure2, Y._weaveParents_closure3, Y._weaveParents__closure0, Y._weaveParents_closure4, Y._weaveParents_closure5, Y._weaveParents__closure, Y._mustUnify_closure, Y._mustUnify__closure, Y.paths_closure, Y.paths__closure, Y.paths___closure, Y._hasRoot_closure, Y.listIsSuperslector_closure, Y.listIsSuperslector__closure, Y._simpleIsSuperselectorOfCompound_closure, Y._simpleIsSuperselectorOfCompound__closure, Y._selectorPseudoIsSuperselector_closure, Y._selectorPseudoIsSuperselector_closure0, Y._selectorPseudoIsSuperselector_closure1, Y._selectorPseudoIsSuperselector_closure2, Y._selectorPseudoIsSuperselector_closure3, Y._selectorPseudoIsSuperselector__closure, Y._selectorPseudoIsSuperselector___closure, Y._selectorPseudoIsSuperselector___closure0, Y._selectorPseudoIsSuperselector_closure4, Y._selectorPseudoIsSuperselector_closure5, Y._selectorPseudosNamed_closure, Y.closure, K.closure43, K.closure44, K.closure45, K.closure46, K.closure47, K.closure48, K.closure49, K.closure50, K.closure51, K.closure52, K.closure53, K.closure54, K.closure55, K.closure56, K.closure57, K.closure58, K.closure59, K.closure60, K.closure61, K.closure62, K.closure63, K.closure64, K.closure65, K.closure66, K.closure67, K.closure68, K._closure10, K.closure69, K.closure96, K.closure97, K.closure98, K.closure99, K._closure12, K.closure100, K.closure83, K.closure82, K.closure81, K.closure80, K.closure79, K.closure78, K.closure77, K.closure76, K.closure74, K.closure_getInRange0, K._closure9, K.closure73, K.closure_getScale, K.closure_scaleValue, K._closure8, K.closure72, K.closure_getInRange, K._closure7, K.closure75, K.closure_hexString, K._functionString_closure, K._removedColorFunction_closure, K._parseChannels_closure, D.closure42, D.closure41, D.closure40, D.closure39, D.closure38, D.closure37, D._closure4, D._closure5, D._closure6, D.closure36, D.closure34, D.closure35, A.closure33, A.closure32, A.closure30, A.closure31, A.closure29, A.closure28, A.closure27, K.closure25, K.closure91, K.closure24, K.closure23, K.closure22, K.closure26, K.closure89, K._closure11, K.closure88, K.closure87, K.closure85, K.closure95, K.closure94, K.closure93, K.closure92, K.closure90, K.closure86, K.closure84, K.closure18, K.closure17, K.closure19, K.closure21, K.closure20, K._numberFunction_closure, Q.closure101, Q.closure102, Q.closure103, Q.closure104, Q._closure13, T.closure13, T._closure1, T._closure2, T.closure12, T._closure, T._closure0, T.__closure, T.closure11, T.closure10, T.closure9, T.closure16, T.closure15, T._closure3, T.closure14, D.closure8, D.closure7, D.closure3, D.closure2, D.closure1, D.closure0, D.closure6, D.closure5, D.closure4, R.ImportCache_canonicalize_closure, R.ImportCache__canonicalize_closure, R.ImportCache_importCanonical_closure, R.ImportCache_humanize_closure, R.ImportCache_humanize_closure0, R.ImportCache_humanize_closure1, F.NodeImporter__tryPath_closure, B.resolveImportPath_closure, B.resolveImportPath_closure0, B._tryPathAsDirectory_closure, B._exactlyOne_closure, F.realCasePath_closure, B._readFile_closure, B.writeFile_closure, B.deleteFile_closure, B.readStdin_closure, B.readStdin_closure0, B.readStdin_closure1, B.readStdin_closure2, B.fileExists_closure, B.dirExists_closure, B.ensureDir_closure, B.listDir_closure, B.listDir__closure, B.listDir__closure0, B.listDir_closure_list, B.listDir__list_closure, B.modificationTime_closure, B.watchDir_closure, B.watchDir_closure0, B.watchDir_closure1, B.watchDir_closure2, B.watchDir_closure3, B.watchDir__closure, B.main_closure, B._render_closure, B._render_closure0, B._render_closure1, B._parseFunctions_closure, B._parseFunctions__closure, B._parseFunctions___closure0, B._parseFunctions____closure, B._parseFunctions__closure0, B._parseFunctions__closure1, B._parseFunctions___closure, B._parseImporter_closure, B._parseImporter__closure, B._parseImporter___closure, B._parseImporter____closure, B.forwardToString_closure, B.createClass_closure, Z.closure141, Z._closure19, Z._closure20, K.closure131, K.closure132, K.closure133, K.closure134, K.closure135, K.closure136, K.closure137, K.closure138, K.closure139, K.closure140, D.closure124, D._closure18, D.closure125, D.closure126, D.closure127, D.closure128, D.closure129, D.closure130, A.closure117, A._closure16, A._closure17, A.closure118, A.closure119, A.closure120, A.closure121, A.closure122, A.closure123, O.closure116, O._closure14, O._closure15, T.closure110, T.closure111, T.closure112, T.closure113, T.closure114, T.closure115, T._parseNumber_closure, T._parseNumber_closure0, D.closure106, D.closure107, D.closure108, D.closure109, V.AtRootQueryParser_parse_closure, Q.closure105, E.KeyframeSelectorParser_parse_closure, F.MediaQueryParser_parse_closure, G.Parser__parseIdentifier_closure, U.SassParser_children_closure, T.SelectorParser_parse_closure, T.SelectorParser_parseCompoundSelector_closure, V.StylesheetParser_parse_closure, V.StylesheetParser_parse__closure, V.StylesheetParser_parse__closure0, V.StylesheetParser_parseArgumentDeclaration_closure, V.StylesheetParser_parseVariableDeclaration_closure, V.StylesheetParser_parseUseRule_closure, V.StylesheetParser__parseSingleProduction_closure, V.StylesheetParser_parseSignature_closure, V.StylesheetParser__statement_closure, V.StylesheetParser_variableDeclarationWithoutNamespace_closure, V.StylesheetParser_variableDeclarationWithoutNamespace_closure0, V.StylesheetParser__declarationOrBuffer_closure, V.StylesheetParser__declarationOrBuffer_closure0, V.StylesheetParser__styleRule_closure, V.StylesheetParser__propertyOrVariableDeclaration_closure, V.StylesheetParser__propertyOrVariableDeclaration_closure0, V.StylesheetParser__atRootRule_closure, V.StylesheetParser__atRootRule_closure0, V.StylesheetParser__eachRule_closure, V.StylesheetParser__functionRule_closure, V.StylesheetParser__forRule_closure, V.StylesheetParser__forRule_closure0, V.StylesheetParser__memberList_closure, V.StylesheetParser__includeRule_closure, V.StylesheetParser_mediaRule_closure, V.StylesheetParser__mixinRule_closure, V.StylesheetParser_mozDocumentRule_closure, V.StylesheetParser_supportsRule_closure, V.StylesheetParser__whileRule_closure, V.StylesheetParser_unknownAtRule_closure, V.StylesheetParser_expression_resetState, V.StylesheetParser_expression_resolveOneOperation, V.StylesheetParser_expression_resolveOperations, V.StylesheetParser_expression_addSingleExpression, V.StylesheetParser_expression_addOperator, V.StylesheetParser_expression_resolveSpaceExpressions, V.StylesheetParser__expressionUntilComma_closure, V.StylesheetParser__unicodeRange_closure, V.StylesheetParser__unicodeRange_closure0, V.StylesheetParser_identifierLike_closure, V.StylesheetParser__expressionUntilComparison_closure, V.StylesheetParser__publicIdentifier_closure, M.StylesheetGraph_modifiedSince_transitiveModificationTime, M.StylesheetGraph_modifiedSince_transitiveModificationTime_closure, M.StylesheetGraph__add_closure, M.StylesheetGraph_addCanonical_closure, M.StylesheetGraph_addCanonical_closure0, M.StylesheetGraph_reload_closure, M.StylesheetGraph__nodeFor_closure, M.StylesheetGraph__nodeFor_closure0, F._PrefixedKeys_iterator_closure, D.SourceMapBuffer_sourceFiles_closure, D.SourceMapBuffer__addEntry_closure, D.SourceMapBuffer_buildSourceMap_closure, R._UnprefixedKeys_iterator_closure, R._UnprefixedKeys_iterator_closure0, B.indent_closure, B.flattenVertically_closure, B.flattenVertically_closure0, B.longestCommonSubsequence_closure, B.longestCommonSubsequence_closure0, B.longestCommonSubsequence_closure1, B.longestCommonSubsequence_backtrack, B.mapAddAll2_closure, B.mapMapAsync_closure, B.copyMapOfMap_closure, B.copyMapOfList_closure, D.SassList_isBlank_closure, A.SassMap_asList_closure, T.SassNumber_valueInUnits_closure, T.SassNumber_valueInUnits_closure0, T.SassNumber_valueInUnits_closure1, T.SassNumber_valueInUnits_closure2, T.SassNumber_modulo_closure, T.SassNumber_plus_closure, T.SassNumber_minus_closure, T.SassNumber__multiplyUnits_closure, T.SassNumber__multiplyUnits_closure0, T.SassNumber__multiplyUnits_closure1, T.SassNumber__multiplyUnits_closure2, T.SassNumber__areAnyConvertible_closure, T.SassNumber__canonicalMultiplier_closure, E._EvaluateVisitor_closure9, E._EvaluateVisitor_closure10, E._EvaluateVisitor_closure11, E._EvaluateVisitor_closure12, E._EvaluateVisitor_closure13, E._EvaluateVisitor_closure14, E._EvaluateVisitor_closure15, E._EvaluateVisitor_closure16, E._EvaluateVisitor__closure8, E._EvaluateVisitor_closure17, E._EvaluateVisitor__closure6, E._EvaluateVisitor__closure7, E._EvaluateVisitor_closure18, E._EvaluateVisitor__closure4, E._EvaluateVisitor__closure5, E._EvaluateVisitor_run_closure0, E._EvaluateVisitor__withWarnCallback_closure0, E._EvaluateVisitor__loadModule_closure0, E._EvaluateVisitor__execute_closure0, E._EvaluateVisitor__combineCss_closure2, E._EvaluateVisitor__combineCss_closure3, E._EvaluateVisitor__combineCss_closure4, E._EvaluateVisitor__extendModules_closure1, E._EvaluateVisitor__extendModules_closure2, E._EvaluateVisitor__topologicalModules_visitModule0, E._EvaluateVisitor_visitAtRootRule_closure2, E._EvaluateVisitor_visitAtRootRule_closure3, E._EvaluateVisitor_visitAtRootRule_closure4, E._EvaluateVisitor__scopeForAtRoot_closure5, E._EvaluateVisitor__scopeForAtRoot_closure6, E._EvaluateVisitor__scopeForAtRoot_closure7, E._EvaluateVisitor__scopeForAtRoot__closure0, E._EvaluateVisitor__scopeForAtRoot_closure8, E._EvaluateVisitor__scopeForAtRoot_closure9, E._EvaluateVisitor__scopeForAtRoot_closure10, E._EvaluateVisitor_visitContentRule_closure0, E._EvaluateVisitor_visitDeclaration_closure0, E._EvaluateVisitor_visitEachRule_closure2, E._EvaluateVisitor_visitEachRule_closure3, E._EvaluateVisitor_visitEachRule_closure4, E._EvaluateVisitor_visitEachRule__closure0, E._EvaluateVisitor_visitEachRule___closure0, E._EvaluateVisitor_visitExtendRule_closure0, E._EvaluateVisitor_visitAtRule_closure1, E._EvaluateVisitor_visitAtRule__closure0, E._EvaluateVisitor_visitAtRule_closure2, E._EvaluateVisitor_visitForRule_closure4, E._EvaluateVisitor_visitForRule_closure5, E._EvaluateVisitor_visitForRule_closure6, E._EvaluateVisitor_visitForRule_closure7, E._EvaluateVisitor_visitForRule_closure8, E._EvaluateVisitor_visitForRule__closure0, E._EvaluateVisitor_visitForwardRule_closure1, E._EvaluateVisitor_visitForwardRule_closure2, E._EvaluateVisitor__assertConfigurationIsEmpty_closure0, E._EvaluateVisitor_visitIfRule_closure0, E._EvaluateVisitor_visitIfRule__closure0, E._EvaluateVisitor__visitDynamicImport_closure0, E._EvaluateVisitor__visitDynamicImport__closure0, E._EvaluateVisitor_visitIncludeRule_closure2, E._EvaluateVisitor_visitIncludeRule_closure3, E._EvaluateVisitor_visitIncludeRule_closure4, E._EvaluateVisitor_visitIncludeRule__closure0, E._EvaluateVisitor_visitIncludeRule___closure0, E._EvaluateVisitor_visitIncludeRule____closure0, E._EvaluateVisitor_visitMediaRule_closure1, E._EvaluateVisitor_visitMediaRule__closure0, E._EvaluateVisitor_visitMediaRule___closure0, E._EvaluateVisitor_visitMediaRule_closure2, E._EvaluateVisitor__visitMediaQueries_closure0, E._EvaluateVisitor_visitStyleRule_closure6, E._EvaluateVisitor_visitStyleRule_closure7, E._EvaluateVisitor_visitStyleRule_closure8, E._EvaluateVisitor_visitStyleRule_closure9, E._EvaluateVisitor_visitStyleRule_closure10, E._EvaluateVisitor_visitStyleRule_closure11, E._EvaluateVisitor_visitStyleRule__closure0, E._EvaluateVisitor_visitStyleRule_closure12, E._EvaluateVisitor_visitSupportsRule_closure1, E._EvaluateVisitor_visitSupportsRule__closure0, E._EvaluateVisitor_visitSupportsRule_closure2, E._EvaluateVisitor_visitVariableDeclaration_closure2, E._EvaluateVisitor_visitVariableDeclaration_closure3, E._EvaluateVisitor_visitVariableDeclaration_closure4, E._EvaluateVisitor_visitUseRule_closure0, E._EvaluateVisitor_visitWarnRule_closure0, E._EvaluateVisitor_visitWhileRule_closure0, E._EvaluateVisitor_visitWhileRule__closure0, E._EvaluateVisitor_visitBinaryOperationExpression_closure0, E._EvaluateVisitor_visitVariableExpression_closure0, E._EvaluateVisitor_visitListExpression_closure0, E._EvaluateVisitor_visitFunctionExpression_closure1, E._EvaluateVisitor_visitFunctionExpression_closure2, E._EvaluateVisitor__runUserDefinedCallable_closure0, E._EvaluateVisitor__runUserDefinedCallable__closure0, E._EvaluateVisitor__runUserDefinedCallable___closure0, E._EvaluateVisitor__runUserDefinedCallable____closure0, E._EvaluateVisitor__runFunctionCallable_closure0, E._EvaluateVisitor__runBuiltInCallable_closure1, E._EvaluateVisitor__runBuiltInCallable_closure2, E._EvaluateVisitor__evaluateArguments_closure2, E._EvaluateVisitor__evaluateArguments_closure3, E._EvaluateVisitor__evaluateArguments_closure4, E._EvaluateVisitor__evaluateMacroArguments_closure3, E._EvaluateVisitor__evaluateMacroArguments_closure4, E._EvaluateVisitor__evaluateMacroArguments_closure5, E._EvaluateVisitor__evaluateMacroArguments_closure6, E._EvaluateVisitor__addRestMap_closure1, E._EvaluateVisitor__addRestMap_closure2, E._EvaluateVisitor__verifyArguments_closure0, E._EvaluateVisitor_visitStringExpression_closure0, E._EvaluateVisitor_visitCssAtRule_closure1, E._EvaluateVisitor_visitCssAtRule_closure2, E._EvaluateVisitor_visitCssKeyframeBlock_closure1, E._EvaluateVisitor_visitCssKeyframeBlock_closure2, E._EvaluateVisitor_visitCssMediaRule_closure1, E._EvaluateVisitor_visitCssMediaRule__closure0, E._EvaluateVisitor_visitCssMediaRule___closure0, E._EvaluateVisitor_visitCssMediaRule_closure2, E._EvaluateVisitor_visitCssStyleRule_closure1, E._EvaluateVisitor_visitCssStyleRule__closure0, E._EvaluateVisitor_visitCssStyleRule_closure2, E._EvaluateVisitor_visitCssSupportsRule_closure1, E._EvaluateVisitor_visitCssSupportsRule__closure0, E._EvaluateVisitor_visitCssSupportsRule_closure2, E._EvaluateVisitor__performInterpolation_closure0, E._EvaluateVisitor__serialize_closure0, E._EvaluateVisitor__stackTrace_closure0, E._ImportedCssVisitor_visitCssAtRule_closure0, E._ImportedCssVisitor_visitCssMediaRule_closure0, E._ImportedCssVisitor_visitCssStyleRule_closure0, E._ImportedCssVisitor_visitCssSupportsRule_closure0, R._EvaluateVisitor_closure, R._EvaluateVisitor_closure0, R._EvaluateVisitor_closure1, R._EvaluateVisitor_closure2, R._EvaluateVisitor_closure3, R._EvaluateVisitor_closure4, R._EvaluateVisitor_closure5, R._EvaluateVisitor_closure6, R._EvaluateVisitor__closure3, R._EvaluateVisitor_closure7, R._EvaluateVisitor__closure1, R._EvaluateVisitor__closure2, R._EvaluateVisitor_closure8, R._EvaluateVisitor__closure, R._EvaluateVisitor__closure0, R._EvaluateVisitor_run_closure, R._EvaluateVisitor_runExpression_closure, R._EvaluateVisitor_runExpression__closure, R._EvaluateVisitor_runStatement_closure, R._EvaluateVisitor_runStatement__closure, R._EvaluateVisitor__withWarnCallback_closure, R._EvaluateVisitor__loadModule_closure, R._EvaluateVisitor__execute_closure, R._EvaluateVisitor__combineCss_closure, R._EvaluateVisitor__combineCss_closure0, R._EvaluateVisitor__combineCss_closure1, R._EvaluateVisitor__extendModules_closure, R._EvaluateVisitor__extendModules_closure0, R._EvaluateVisitor__topologicalModules_visitModule, R._EvaluateVisitor_visitAtRootRule_closure, R._EvaluateVisitor_visitAtRootRule_closure0, R._EvaluateVisitor_visitAtRootRule_closure1, R._EvaluateVisitor__scopeForAtRoot_closure, R._EvaluateVisitor__scopeForAtRoot_closure0, R._EvaluateVisitor__scopeForAtRoot_closure1, R._EvaluateVisitor__scopeForAtRoot__closure, R._EvaluateVisitor__scopeForAtRoot_closure2, R._EvaluateVisitor__scopeForAtRoot_closure3, R._EvaluateVisitor__scopeForAtRoot_closure4, R._EvaluateVisitor_visitContentRule_closure, R._EvaluateVisitor_visitDeclaration_closure, R._EvaluateVisitor_visitEachRule_closure, R._EvaluateVisitor_visitEachRule_closure0, R._EvaluateVisitor_visitEachRule_closure1, R._EvaluateVisitor_visitEachRule__closure, R._EvaluateVisitor_visitEachRule___closure, R._EvaluateVisitor_visitExtendRule_closure, R._EvaluateVisitor_visitAtRule_closure, R._EvaluateVisitor_visitAtRule__closure, R._EvaluateVisitor_visitAtRule_closure0, R._EvaluateVisitor_visitForRule_closure, R._EvaluateVisitor_visitForRule_closure0, R._EvaluateVisitor_visitForRule_closure1, R._EvaluateVisitor_visitForRule_closure2, R._EvaluateVisitor_visitForRule_closure3, R._EvaluateVisitor_visitForRule__closure, R._EvaluateVisitor_visitForwardRule_closure, R._EvaluateVisitor_visitForwardRule_closure0, R._EvaluateVisitor__assertConfigurationIsEmpty_closure, R._EvaluateVisitor_visitIfRule_closure, R._EvaluateVisitor_visitIfRule__closure, R._EvaluateVisitor__visitDynamicImport_closure, R._EvaluateVisitor__visitDynamicImport__closure, R._EvaluateVisitor_visitIncludeRule_closure, R._EvaluateVisitor_visitIncludeRule_closure0, R._EvaluateVisitor_visitIncludeRule_closure1, R._EvaluateVisitor_visitIncludeRule__closure, R._EvaluateVisitor_visitIncludeRule___closure, R._EvaluateVisitor_visitIncludeRule____closure, R._EvaluateVisitor_visitMediaRule_closure, R._EvaluateVisitor_visitMediaRule__closure, R._EvaluateVisitor_visitMediaRule___closure, R._EvaluateVisitor_visitMediaRule_closure0, R._EvaluateVisitor__visitMediaQueries_closure, R._EvaluateVisitor_visitStyleRule_closure, R._EvaluateVisitor_visitStyleRule_closure0, R._EvaluateVisitor_visitStyleRule_closure1, R._EvaluateVisitor_visitStyleRule_closure2, R._EvaluateVisitor_visitStyleRule_closure3, R._EvaluateVisitor_visitStyleRule_closure4, R._EvaluateVisitor_visitStyleRule__closure, R._EvaluateVisitor_visitStyleRule_closure5, R._EvaluateVisitor_visitSupportsRule_closure, R._EvaluateVisitor_visitSupportsRule__closure, R._EvaluateVisitor_visitSupportsRule_closure0, R._EvaluateVisitor_visitVariableDeclaration_closure, R._EvaluateVisitor_visitVariableDeclaration_closure0, R._EvaluateVisitor_visitVariableDeclaration_closure1, R._EvaluateVisitor_visitUseRule_closure, R._EvaluateVisitor_visitWarnRule_closure, R._EvaluateVisitor_visitWhileRule_closure, R._EvaluateVisitor_visitWhileRule__closure, R._EvaluateVisitor_visitBinaryOperationExpression_closure, R._EvaluateVisitor_visitVariableExpression_closure, R._EvaluateVisitor_visitListExpression_closure, R._EvaluateVisitor_visitFunctionExpression_closure, R._EvaluateVisitor_visitFunctionExpression_closure0, R._EvaluateVisitor__runUserDefinedCallable_closure, R._EvaluateVisitor__runUserDefinedCallable__closure, R._EvaluateVisitor__runUserDefinedCallable___closure, R._EvaluateVisitor__runUserDefinedCallable____closure, R._EvaluateVisitor__runFunctionCallable_closure, R._EvaluateVisitor__runBuiltInCallable_closure, R._EvaluateVisitor__runBuiltInCallable_closure0, R._EvaluateVisitor__evaluateArguments_closure, R._EvaluateVisitor__evaluateArguments_closure0, R._EvaluateVisitor__evaluateArguments_closure1, R._EvaluateVisitor__evaluateMacroArguments_closure, R._EvaluateVisitor__evaluateMacroArguments_closure0, R._EvaluateVisitor__evaluateMacroArguments_closure1, R._EvaluateVisitor__evaluateMacroArguments_closure2, R._EvaluateVisitor__addRestMap_closure, R._EvaluateVisitor__addRestMap_closure0, R._EvaluateVisitor__verifyArguments_closure, R._EvaluateVisitor_visitStringExpression_closure, R._EvaluateVisitor_visitCssAtRule_closure, R._EvaluateVisitor_visitCssAtRule_closure0, R._EvaluateVisitor_visitCssKeyframeBlock_closure, R._EvaluateVisitor_visitCssKeyframeBlock_closure0, R._EvaluateVisitor_visitCssMediaRule_closure, R._EvaluateVisitor_visitCssMediaRule__closure, R._EvaluateVisitor_visitCssMediaRule___closure, R._EvaluateVisitor_visitCssMediaRule_closure0, R._EvaluateVisitor_visitCssStyleRule_closure, R._EvaluateVisitor_visitCssStyleRule__closure, R._EvaluateVisitor_visitCssStyleRule_closure0, R._EvaluateVisitor_visitCssSupportsRule_closure, R._EvaluateVisitor_visitCssSupportsRule__closure, R._EvaluateVisitor_visitCssSupportsRule_closure0, R._EvaluateVisitor__performInterpolation_closure, R._EvaluateVisitor__serialize_closure, R._EvaluateVisitor__stackTrace_closure, R._ImportedCssVisitor_visitCssAtRule_closure, R._ImportedCssVisitor_visitCssMediaRule_closure, R._ImportedCssVisitor_visitCssStyleRule_closure, R._ImportedCssVisitor_visitCssSupportsRule_closure, N.serialize_closure, N._SerializeVisitor_visitCssComment_closure, N._SerializeVisitor_visitCssAtRule_closure, N._SerializeVisitor_visitCssMediaRule_closure, N._SerializeVisitor_visitCssImport_closure, N._SerializeVisitor_visitCssImport__closure, N._SerializeVisitor_visitCssKeyframeBlock_closure, N._SerializeVisitor_visitCssStyleRule_closure, N._SerializeVisitor_visitCssSupportsRule_closure, N._SerializeVisitor_visitCssDeclaration_closure, N._SerializeVisitor_visitCssDeclaration_closure0, N._SerializeVisitor_visitList_closure, N._SerializeVisitor_visitList_closure0, N._SerializeVisitor_visitList_closure1, N._SerializeVisitor_visitMap_closure, N._SerializeVisitor_visitSelectorList_closure, N._SerializeVisitor__write_closure, N._SerializeVisitor__visitChildren_closure, N.withWarnCallback_closure, T.SingleMapping_SingleMapping$fromEntries_closure, T.SingleMapping_SingleMapping$fromEntries_closure0, T.SingleMapping_SingleMapping$fromEntries_closure1, T.SingleMapping_toJson_closure, T.SingleMapping_toJson_closure0, U.Highlighter_closure, U.Highlighter$__closure, U.Highlighter$___closure, U.Highlighter$__closure0, U.Highlighter__collateLines_closure, U.Highlighter__collateLines_closure0, U.Highlighter__collateLines_closure1, U.Highlighter__collateLines__closure, U.Highlighter_highlight_closure, U.Highlighter_highlight_closure0, U.Highlighter__writeFileStart_closure, U.Highlighter__writeMultilineHighlights_closure, U.Highlighter__writeMultilineHighlights_closure0, U.Highlighter__writeMultilineHighlights_closure1, U.Highlighter__writeMultilineHighlights_closure2, U.Highlighter__writeMultilineHighlights__closure, U.Highlighter__writeMultilineHighlights__closure0, U.Highlighter__writeHighlightedText_closure, U.Highlighter__writeIndicator_closure, U.Highlighter__writeIndicator_closure0, U.Highlighter__writeIndicator_closure1, U.Highlighter__writeSidebar_closure, U._Highlight_closure, U.Chain_Chain$parse_closure, U.Chain_Chain$parse_closure0, U.Chain_toTrace_closure, U.Chain_toString_closure0, U.Chain_toString__closure0, U.Chain_toString_closure, U.Chain_toString__closure, A.Frame_Frame$parseVM_closure, A.Frame_Frame$parseV8_closure, A.Frame_Frame$parseV8_closure_parseLocation, A.Frame_Frame$parseFirefox_closure, A.Frame_Frame$parseFriendly_closure, T.LazyTrace_terse_closure, Y.Trace_Trace$from_closure, Y.Trace__parseVM_closure, Y.Trace$parseV8_closure, Y.Trace$parseV8_closure0, Y.Trace$parseJSCore_closure, Y.Trace$parseJSCore_closure0, Y.Trace$parseFirefox_closure, Y.Trace$parseFirefox_closure0, Y.Trace$parseFriendly_closure, Y.Trace$parseFriendly_closure0, Y.Trace_terse_closure, Y.Trace_foldFrames_closure, Y.Trace_foldFrames_closure0, Y.Trace_toString_closure0, Y.Trace_toString_closure, L._StreamTransformer_bind_closure, L._StreamTransformer_bind__closure, L._StreamTransformer_bind__closure1, L._StreamTransformer_bind__closure0, L._StreamTransformer_bind__closure2, R._debounceAggregate_closure, R._debounceAggregate__closure, R._debounceAggregate_closure0]);
- _inherit(H.CastList, H._CastListBase);
- _inherit(P.ListBase, P._ListBase_Object_ListMixin);
- _inherit(H.UnmodifiableListBase, P.ListBase);
- _inheritMany(H.UnmodifiableListBase, [H.CodeUnits, P.UnmodifiableListView]);
- _inheritMany(H.EfficientLengthIterable, [H.ListIterable, H.EmptyIterable, H.LinkedHashMapKeyIterable, P._HashMapKeyIterable, P._MapBaseValueIterable, P.Set]);
- _inheritMany(H.ListIterable, [H.SubListIterable, H.MappedListIterable, H.ReversedListIterable, P.ListQueue, P._GeneratorIterable]);
- _inherit(H.EfficientLengthMappedIterable, H.MappedIterable);
- _inheritMany(P.Iterator, [H.MappedIterator, H.WhereIterator, H.TakeIterator, H.SkipIterator, H.SkipWhileIterator]);
- _inherit(H.EfficientLengthTakeIterable, H.TakeIterable);
- _inherit(H.EfficientLengthSkipIterable, H.SkipIterable);
- _inherit(H.EfficientLengthFollowedByIterable, H.FollowedByIterable);
- _inheritMany(P.MapView, [P._UnmodifiableMapView_MapView__UnmodifiableMapMixin, K.PathMap]);
- _inherit(P.UnmodifiableMapView, P._UnmodifiableMapView_MapView__UnmodifiableMapMixin);
- _inherit(H.ConstantMapView, P.UnmodifiableMapView);
- _inherit(H.ConstantStringMap, H.ConstantMap);
- _inherit(H.ConstantProtoMap, H.ConstantStringMap);
- _inherit(H.Instantiation1, H.Instantiation);
- _inheritMany(P.Error, [H.NullError, H.JsNoSuchMethodError, H.UnknownJsTypeError, H.CastErrorImplementation, H.RuntimeError, P.JsonUnsupportedObjectError, P.NullThrownError, P.ArgumentError, P.NoSuchMethodError, P.UnsupportedError, P.UnimplementedError, P.StateError, P.ConcurrentModificationError, P.CyclicInitializationError]);
- _inheritMany(H.TearOffClosure, [H.StaticClosure, H.BoundClosure]);
- _inherit(P.MapBase, P.MapMixin);
- _inheritMany(P.MapBase, [H.JsLinkedHashMap, P._HashMap, P.UnmodifiableMapBase, Z.MergedMapView]);
- _inheritMany(P.IterableBase, [H._AllMatchesIterable, P._SyncStarIterable, O.EmptyUnmodifiableSet, F._PrefixedKeys, R._UnprefixedKeys]);
- _inherit(H.NativeTypedArray, H.NativeTypedData);
- _inheritMany(H.NativeTypedArray, [H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin]);
- _inherit(H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin);
- _inherit(H.NativeTypedArrayOfDouble, H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin);
- _inherit(H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin);
- _inherit(H.NativeTypedArrayOfInt, H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin);
- _inheritMany(H.NativeTypedArrayOfDouble, [H.NativeFloat32List, H.NativeFloat64List]);
- _inheritMany(H.NativeTypedArrayOfInt, [H.NativeInt16List, H.NativeInt32List, H.NativeInt8List, H.NativeUint16List, H.NativeUint32List, H.NativeUint8ClampedList, H.NativeUint8List]);
- _inheritMany(P.Stream, [P._StreamImpl, P._ForwardingStream, Y._CompleterStream]);
- _inherit(P._ControllerStream, P._StreamImpl);
- _inherit(P._BroadcastStream, P._ControllerStream);
- _inheritMany(P._BufferingStreamSubscription, [P._ControllerSubscription, P._ForwardingStreamSubscription]);
- _inherit(P._BroadcastSubscription, P._ControllerSubscription);
- _inherit(P._SyncBroadcastStreamController, P._BroadcastStreamController);
- _inherit(P._AsyncCompleter, P._Completer);
- _inheritMany(P._StreamController, [P._AsyncStreamController, P._SyncStreamController]);
- _inherit(P._StreamControllerAddStreamState, P._AddStreamState);
- _inheritMany(P._DelayedEvent, [P._DelayedData, P._DelayedError]);
- _inherit(P._StreamImplEvents, P._PendingEvents);
- _inherit(P._ExpandStream, P._ForwardingStream);
- _inheritMany(P._Zone, [P._CustomZone, P._RootZone]);
- _inheritMany(H.JsLinkedHashMap, [P._LinkedIdentityHashMap, P._LinkedCustomHashMap]);
- _inherit(P._LinkedHashSet, P._SetBase);
- _inherit(P._LinkedIdentityHashSet, P._LinkedHashSet);
- _inheritMany(P.Codec, [P.Encoding, P.Base64Codec, P.JsonCodec]);
- _inheritMany(P.Encoding, [P.AsciiCodec, P.Utf8Codec]);
- _inheritMany(P.StreamTransformerBase, [P.Converter, L._StreamTransformer]);
- _inheritMany(P.Converter, [P._UnicodeSubsetEncoder, P.Base64Encoder, P.JsonEncoder, P.Utf8Encoder, P.Utf8Decoder]);
- _inherit(P.AsciiEncoder, P._UnicodeSubsetEncoder);
- _inherit(P._BufferCachingBase64Encoder, P._Base64Encoder);
- _inherit(P.ByteConversionSink, P.ChunkedConversionSink);
- _inheritMany(P.ByteConversionSink, [P.ByteConversionSinkBase, P._Utf8StringSinkAdapter, P._Utf8ConversionSink]);
- _inherit(P._Base64EncoderSink, P.ByteConversionSinkBase);
- _inheritMany(P._Base64EncoderSink, [P._AsciiBase64EncoderSink, P._Utf8Base64EncoderSink]);
- _inherit(P.JsonCyclicError, P.JsonUnsupportedObjectError);
- _inherit(P._JsonStringStringifier, P._JsonStringifier);
- _inherit(P.StringConversionSinkBase, P.StringConversionSinkMixin);
- _inheritMany(P.StringConversionSinkBase, [P._StringSinkConversionSink, P._StringAdapterSink]);
- _inherit(P._StringCallbackSink, P._StringSinkConversionSink);
- _inheritMany(P.num, [P.double, P.int]);
- _inheritMany(P.ArgumentError, [P.RangeError, P.IndexError]);
- _inherit(P._DataUri, P._Uri);
- _inherit(Z.ArgParserException, P.FormatException);
- _inherit(Q.QueueList, Q._QueueList_Object_ListMixin);
- _inherit(Q._CastQueueList, Q.QueueList);
- _inheritMany(M._DelegatingIterableBase, [M.DelegatingIterable, M._MapKeySet__DelegatingIterableBase_UnmodifiableSetMixin]);
- _inherit(M.DelegatingSet, M.DelegatingIterable);
- _inherit(L._UnmodifiableSetView_DelegatingSet_UnmodifiableSetMixin, M.DelegatingSet);
- _inherit(L.UnmodifiableSetView, L._UnmodifiableSetView_DelegatingSet_UnmodifiableSetMixin);
- _inherit(M.MapKeySet, M._MapKeySet__DelegatingIterableBase_UnmodifiableSetMixin);
- _inherit(B.InternalStyle, O.Style);
- _inheritMany(B.InternalStyle, [E.PosixStyle, F.UrlStyle, L.WindowsStyle]);
- _inheritMany(B.AstNode, [B.CssNode, B.SassNode]);
- _inheritMany(B.CssNode, [B.ModifiableCssNode, B.CssParentNode]);
- _inheritMany(B.ModifiableCssNode, [B.ModifiableCssParentNode, R.ModifiableCssComment, L.ModifiableCssDeclaration, F.ModifiableCssImport]);
- _inheritMany(B.ModifiableCssParentNode, [U.ModifiableCssAtRule, U.ModifiableCssKeyframeBlock, G.ModifiableCssMediaRule, X.ModifiableCssStyleRule, V.ModifiableCssStylesheet, B.ModifiableCssSupportsRule]);
- _inherit(V.CssStylesheet, B.CssParentNode);
- _inheritMany(M.ParentStatement, [V.AtRootRule, U.AtRule, M.CallableDeclaration, L.Declaration, V.EachRule, B.ForRule, G.MediaRule, X.StyleRule, V.Stylesheet, B.SupportsRule, G.WhileRule]);
- _inheritMany(M.CallableDeclaration, [Y.ContentBlock, M.FunctionRule, T.MixinRule]);
- _inherit(N.SupportsCondition, B.SassNode);
- _inheritMany(T.Selector, [M.SimpleSelector, S.ComplexSelector, X.CompoundSelector, D.SelectorList]);
- _inheritMany(M.SimpleSelector, [N.AttributeSelector, X.ClassSelector, N.IDSelector, M.ParentSelector, N.PlaceholderSelector, D.PseudoSelector, F.TypeSelector, N.UniversalSelector]);
- _inherit(D.Callable, B.AsyncCallable);
- _inheritMany(G.SourceSpanException, [E.SassException, G.SourceSpanFormatException]);
- _inheritMany(E.SassException, [E.MultiSpanSassException, E.SassRuntimeException, E.SassFormatException]);
- _inherit(E.MultiSpanSassRuntimeException, E.MultiSpanSassException);
- _inherit(E.MultiSpanSassScriptException, E.SassScriptException);
- _inherit(A.MergedExtension, S.Extension);
- _inherit(M.Importer, B.AsyncImporter);
- _inherit(F.FilesystemImporter, M.Importer);
- _inheritMany(G.Parser, [V.AtRootQueryParser, V.StylesheetParser, E.KeyframeSelectorParser, F.MediaQueryParser, T.SelectorParser]);
- _inheritMany(V.StylesheetParser, [L.ScssParser, U.SassParser]);
- _inherit(Q.CssParser, L.ScssParser);
- _inheritMany(P.UnmodifiableMapBase, [K.LimitedMapView, F.PrefixedMapView, U.PublicMemberMapView, R.UnprefixedMapView]);
- _inheritMany(F.Value, [D.SassList, Z.SassBoolean, K.SassColor, F.SassFunction, A.SassMap, O.SassNull, T.SassNumber, D.SassString]);
- _inherit(D.SassArgumentList, D.SassList);
- _inherit(F._FindDependenciesVisitor, D.RecursiveStatementVisitor);
- _inherit(T.SingleMapping, T.Mapping);
- _inherit(Y.FileLocation, D.SourceLocationMixin);
- _inheritMany(Y.SourceSpanMixin, [Y._FileSpan, V.SourceSpanBase]);
- _inherit(X.SourceSpanWithContext, V.SourceSpanBase);
- _inherit(E.StringScannerException, G.SourceSpanFormatException);
- _inheritMany(X.StringScanner, [Z.LineScanner, S.SpanScanner]);
- _mixin(H.UnmodifiableListBase, H.UnmodifiableListMixin);
- _mixin(H.__CastListBase__CastIterableBase_ListMixin, P.ListMixin);
- _mixin(H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, P.ListMixin);
- _mixin(H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, H.FixedLengthListMixin);
- _mixin(H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin, P.ListMixin);
- _mixin(H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, H.FixedLengthListMixin);
- _mixin(P._AsyncStreamController, P._AsyncStreamControllerDispatch);
- _mixin(P._SyncStreamController, P._SyncStreamControllerDispatch);
- _mixin(P.UnmodifiableMapBase, P._UnmodifiableMapMixin);
- _mixin(P._ListBase_Object_ListMixin, P.ListMixin);
- _mixin(P._UnmodifiableMapView_MapView__UnmodifiableMapMixin, P._UnmodifiableMapMixin);
- _mixin(Q._QueueList_Object_ListMixin, P.ListMixin);
- _mixin(L._UnmodifiableSetView_DelegatingSet_UnmodifiableSetMixin, L.UnmodifiableSetMixin);
- _mixin(M._MapKeySet__DelegatingIterableBase_UnmodifiableSetMixin, L.UnmodifiableSetMixin);
- })();
- var init = {mangledGlobalNames: {int: "int", double: "double", num: "num", String: "String", bool: "bool", Null: "Null", List: "List"}, mangledNames: {}, getTypeFromName: getGlobalFromName, metadata: [], types: [{func: 1, ret: F.Value, args: [[P.List, F.Value]]}, {func: 1, ret: T.SassNumber, args: [[P.List, F.Value]]}, {func: 1, ret: -1}, {func: 1, ret: P.bool, args: [P.Object]}, {func: 1, ret: D.SassString, args: [[P.List, F.Value]]}, {func: 1, ret: Z.SassBoolean, args: [[P.List, F.Value]]}, {func: 1, ret: K.SassColor, args: [[P.List, F.Value]]}, {func: 1, ret: D.SassList, args: [[P.List, F.Value]]}, {func: 1, ret: -1, args: [P.Object]}, {func: 1, ret: A.SassMap, args: [[P.List, F.Value]]}, {func: 1, args: [,]}, {func: 1, ret: P.bool, args: [P.int]}, {func: 1, ret: P.Null, args: [,,]}, {func: 1, ret: P.String, args: [P.Object]}, {func: 1, ret: P.bool, args: [P.num, P.num]}, {func: 1, ret: P.Null, args: [, P.StackTrace]}, {func: 1, ret: -1, args: [P.Object], opt: [P.StackTrace]}, {func: 1, ret: P.String, args: [P.int]}, {func: 1, ret: P.Null, opt: [P.Object]}, {func: 1, ret: -1, args: [{func: 1, ret: -1}]}, {func: 1, ret: P.Null, args: [,]}, {func: 1, ret: P.bool, args: [,]}, {func: 1, ret: P.Null, opt: [,]}, {func: 1, ret: P.Null, args: [[P.List, F.Value]]}, {func: 1, ret: P.int, args: [P.num]}, {func: 1, ret: O.Statement}, {func: 1, ret: O.SassNull, args: [P.int]}, {func: 1, ret: P.String, args: [P.String]}, {func: 1, ret: -1, opt: [[P.Future,,]]}, {func: 1, bounds: [P.Object], ret: [P.Set, 0]}, {func: 1, ret: -1, opt: [P.Object]}, {func: 1, ret: P.bool, args: [B.CssNode]}, {func: 1, ret: F.SassFunction, args: [[P.List, F.Value]]}, {func: 1, ret: [P.Future, P.String], args: [,]}, {func: 1, ret: [P.Future,,]}, {func: 1, ret: P.int, args: [,,]}, {func: 1, ret: O.Statement, named: {root: P.bool}}, {func: 1, ret: P.Uint8List, args: [,,]}, {func: 1, ret: P.String, args: [,]}, {func: 1, ret: P.num, args: [P.num]}, {func: 1, ret: -1, args: [,], opt: [P.StackTrace]}, {func: 1, ret: [P.Iterable, P.String], args: [P.Object]}, {func: 1, ret: [P.Future, -1], args: [P.Object]}, {func: 1, ret: P.Null, args: [P.Object, P.StackTrace]}, {func: 1, ret: P.Null, args: [P.Object, P.Object]}, {func: 1, ret: P.Null, args: [P.Object]}, {func: 1, ret: -1, args: [, P.StackTrace]}, {func: 1, ret: T.SassNumber, args: [P.int]}, {func: 1, ret: P.String}, {func: 1, ret: [P.List, [G.Module, B.AsyncCallable]], args: [P.int]}, {func: 1, ret: -1, args: [,]}, {func: 1, ret: T.Expression, named: {bracketList: P.bool, singleEquals: P.bool, until: {func: 1, ret: P.bool}}}, {func: 1, ret: T.NumberExpression}, {func: 1, ret: -1, args: [P.Object, P.StackTrace]}, {func: 1, ret: P.String, args: [,,]}, {func: 1, ret: [P.List, P.int], args: [P.int]}, {func: 1, ret: P.Null, args: [,], opt: [P.StackTrace]}, {func: 1, ret: [P._Future,,], args: [,]}, {func: 1, ret: -1, args: [F.CssMediaQuery]}, {func: 1, ret: Y.SourceFile, args: [P.int]}, {func: 1, ret: Y.FileSpan, args: [P.int], opt: [P.int]}, {func: 1, ret: [P.List, [G.Module, D.Callable]], args: [P.int]}, {func: 1, ret: A.Frame, args: [,,]}, {func: 1, ret: S.Extension, args: [,]}, {func: 1, ret: P.bool, args: [S.ComplexSelector]}, {func: 1, ret: -1, args: [P.Zone, P.ZoneDelegate, P.Zone,, P.StackTrace]}, {func: 1, bounds: [P.Object], ret: 0, args: [P.Zone, P.ZoneDelegate, P.Zone, {func: 1, ret: 0}]}, {func: 1, bounds: [P.Object, P.Object], ret: 0, args: [P.Zone, P.ZoneDelegate, P.Zone, {func: 1, ret: 0, args: [1]}, 1]}, {func: 1, bounds: [P.Object, P.Object, P.Object], ret: 0, args: [P.Zone, P.ZoneDelegate, P.Zone, {func: 1, ret: 0, args: [1, 2]}, 1, 2]}, {func: 1, ret: P.Object, args: [F.Value]}, {func: 1, bounds: [P.Object, P.Object], ret: {func: 1, ret: 0, args: [1]}, args: [P.Zone, P.ZoneDelegate, P.Zone, {func: 1, ret: 0, args: [1]}]}, {func: 1, bounds: [P.Object, P.Object, P.Object], ret: {func: 1, ret: 0, args: [1, 2]}, args: [P.Zone, P.ZoneDelegate, P.Zone, {func: 1, ret: 0, args: [1, 2]}]}, {func: 1, ret: P.AsyncError, args: [P.Zone, P.ZoneDelegate, P.Zone, P.Object, P.StackTrace]}, {func: 1, ret: -1, args: [P.Zone, P.ZoneDelegate, P.Zone, {func: 1, ret: -1}]}, {func: 1, ret: P.Timer, args: [P.Zone, P.ZoneDelegate, P.Zone, P.Duration, {func: 1, ret: -1}]}, {func: 1, ret: P.Timer, args: [P.Zone, P.ZoneDelegate, P.Zone, P.Duration, {func: 1, ret: -1, args: [P.Timer]}]}, {func: 1, ret: -1, args: [P.Zone, P.ZoneDelegate, P.Zone, P.String]}, {func: 1, ret: -1, args: [P.String]}, {func: 1, ret: P.Zone, args: [P.Zone, P.ZoneDelegate, P.Zone, P.ZoneSpecification, [P.Map,,,]]}, {func: 1, ret: P.bool, args: [,,]}, {func: 1, ret: P.int, args: [,]}, {func: 1, ret: P.int, args: [P.Object]}, {func: 1, ret: P.bool, args: [P.Object, P.Object]}, {func: 1, ret: P.Uint8List, args: [P.int]}, {func: 1, bounds: [P.num], ret: 0, args: [0, 0]}, {func: 1, ret: P.bool, args: [M.SimpleSelector]}, {func: 1, ret: -1, args: [R.RenderOptions, {func: 1, ret: -1, args: [V.JSError, U.RenderResult]}]}, {func: 1, ret: U.RenderResult, args: [R.RenderOptions]}, {func: 1, ret: P.bool, args: [P.String]}, {func: 1, bounds: [P.Object], ret: -1, args: [P.Object, P.StackTrace, [P.EventSink, 0]]}, {func: 1, bounds: [P.Object], ret: [P.List, 0], args: [0, [P.List, 0]]}, {func: 1, bounds: [P.Object], ret: {func: 1, ret: 0}, args: [P.Zone, P.ZoneDelegate, P.Zone, {func: 1, ret: 0}]}, {func: 1, ret: P.String, args: [P.String], named: {color: null}}], interceptorsByTag: null, leafTags: null};
- (function constants() {
- var makeConstList = hunkHelpers.makeConstList;
- C.Interceptor_methods = J.Interceptor.prototype;
- C.JSArray_methods = J.JSArray.prototype;
- C.JSBool_methods = J.JSBool.prototype;
- C.JSDouble_methods = J.JSDouble.prototype;
- C.JSInt_methods = J.JSInt.prototype;
- C.JSNumber_methods = J.JSNumber.prototype;
- C.JSString_methods = J.JSString.prototype;
- C.JavaScriptFunction_methods = J.JavaScriptFunction.prototype;
- C.NativeUint32List_methods = H.NativeUint32List.prototype;
- C.NativeUint8List_methods = H.NativeUint8List.prototype;
- C.PlainJavaScriptObject_methods = J.PlainJavaScriptObject.prototype;
- C.UnknownJavaScriptObject_methods = J.UnknownJavaScriptObject.prototype;
- C.AsciiEncoder_127 = new P.AsciiEncoder(127);
- C.C_EmptyUnmodifiableSet0 = new O.EmptyUnmodifiableSet([P.String]);
- C.AtRootQuery_UsS = new V.AtRootQuery(false, C.C_EmptyUnmodifiableSet0, false, true);
- C.AttributeOperator_4L5 = new N.AttributeOperator("^=");
- C.AttributeOperator_AuK = new N.AttributeOperator("|=");
- C.AttributeOperator_fz1 = new N.AttributeOperator("~=");
- C.AttributeOperator_gqZ = new N.AttributeOperator("*=");
- C.AttributeOperator_mOX = new N.AttributeOperator("$=");
- C.AttributeOperator_sEs = new N.AttributeOperator("=");
- C.BinaryOperator_1da = new V.BinaryOperator("greater than or equals", ">=", 4);
- C.BinaryOperator_2ad = new V.BinaryOperator("modulo", "%", 6);
- C.BinaryOperator_33h = new V.BinaryOperator("less than or equals", "<=", 4);
- C.BinaryOperator_8qt = new V.BinaryOperator("less than", "<", 4);
- C.BinaryOperator_AcR0 = new V.BinaryOperator("greater than", ">", 4);
- C.BinaryOperator_AcR = new V.BinaryOperator("plus", "+", 5);
- C.BinaryOperator_O1M = new V.BinaryOperator("times", "*", 6);
- C.BinaryOperator_RTB = new V.BinaryOperator("divided by", "/", 6);
- C.BinaryOperator_YlX = new V.BinaryOperator("equals", "==", 3);
- C.BinaryOperator_and_and_2 = new V.BinaryOperator("and", "and", 2);
- C.BinaryOperator_i5H = new V.BinaryOperator("not equals", "!=", 3);
- C.BinaryOperator_iyO = new V.BinaryOperator("minus", "-", 5);
- C.BinaryOperator_kjl = new V.BinaryOperator("single equals", "=", 0);
- C.BinaryOperator_or_or_1 = new V.BinaryOperator("or", "or", 1);
- C.C_AsciiCodec = new P.AsciiCodec();
- C.C_AsciiGlyphSet = new A.AsciiGlyphSet();
- C.C_Base64Encoder = new P.Base64Encoder();
- C.C_Base64Codec = new P.Base64Codec();
- C.C_DefaultEquality = new U.DefaultEquality();
- C.C_EmptyExtender = new T.EmptyExtender();
- C.C_EmptyIterator = new H.EmptyIterator();
- C.C_EmptyUnmodifiableSet = new O.EmptyUnmodifiableSet([M.SimpleSelector]);
- C.C_JS_CONST = function getTagFallback(o) {
- var s = Object.prototype.toString.call(o);
- return s.substring(8, s.length - 1);
-};
- C.C_JS_CONST0 = function() {
- var toStringFunction = Object.prototype.toString;
- function getTag(o) {
- var s = toStringFunction.call(o);
- return s.substring(8, s.length - 1);
- }
- function getUnknownTag(object, tag) {
- if (/^HTML[A-Z].*Element$/.test(tag)) {
- var name = toStringFunction.call(object);
- if (name == "[object Object]") return null;
- return "HTMLElement";
- }
- }
- function getUnknownTagGenericBrowser(object, tag) {
- if (self.HTMLElement && object instanceof HTMLElement) return "HTMLElement";
- return getUnknownTag(object, tag);
- }
- function prototypeForTag(tag) {
- if (typeof window == "undefined") return null;
- if (typeof window[tag] == "undefined") return null;
- var constructor = window[tag];
- if (typeof constructor != "function") return null;
- return constructor.prototype;
- }
- function discriminator(tag) { return null; }
- var isBrowser = typeof navigator == "object";
- return {
- getTag: getTag,
- getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag,
- prototypeForTag: prototypeForTag,
- discriminator: discriminator };
-};
- C.C_JS_CONST6 = function(getTagFallback) {
- return function(hooks) {
- if (typeof navigator != "object") return hooks;
- var ua = navigator.userAgent;
- if (ua.indexOf("DumpRenderTree") >= 0) return hooks;
- if (ua.indexOf("Chrome") >= 0) {
- function confirm(p) {
- return typeof window == "object" && window[p] && window[p].name == p;
- }
- if (confirm("Window") && confirm("HTMLElement")) return hooks;
- }
- hooks.getTag = getTagFallback;
- };
-};
- C.C_JS_CONST1 = function(hooks) {
- if (typeof dartExperimentalFixupGetTag != "function") return hooks;
- hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag);
-};
- C.C_JS_CONST2 = function(hooks) {
- var getTag = hooks.getTag;
- var prototypeForTag = hooks.prototypeForTag;
- function getTagFixed(o) {
- var tag = getTag(o);
- if (tag == "Document") {
- if (!!o.xmlVersion) return "!Document";
- return "!HTMLDocument";
- }
- return tag;
- }
- function prototypeForTagFixed(tag) {
- if (tag == "Document") return null;
- return prototypeForTag(tag);
- }
- hooks.getTag = getTagFixed;
- hooks.prototypeForTag = prototypeForTagFixed;
-};
- C.C_JS_CONST5 = function(hooks) {
- var userAgent = typeof navigator == "object" ? navigator.userAgent : "";
- if (userAgent.indexOf("Firefox") == -1) return hooks;
- var getTag = hooks.getTag;
- var quickMap = {
- "BeforeUnloadEvent": "Event",
- "DataTransfer": "Clipboard",
- "GeoGeolocation": "Geolocation",
- "Location": "!Location",
- "WorkerMessageEvent": "MessageEvent",
- "XMLDocument": "!Document"};
- function getTagFirefox(o) {
- var tag = getTag(o);
- return quickMap[tag] || tag;
- }
- hooks.getTag = getTagFirefox;
-};
- C.C_JS_CONST4 = function(hooks) {
- var userAgent = typeof navigator == "object" ? navigator.userAgent : "";
- if (userAgent.indexOf("Trident/") == -1) return hooks;
- var getTag = hooks.getTag;
- var quickMap = {
- "BeforeUnloadEvent": "Event",
- "DataTransfer": "Clipboard",
- "HTMLDDElement": "HTMLElement",
- "HTMLDTElement": "HTMLElement",
- "HTMLPhraseElement": "HTMLElement",
- "Position": "Geoposition"
- };
- function getTagIE(o) {
- var tag = getTag(o);
- var newTag = quickMap[tag];
- if (newTag) return newTag;
- if (tag == "Object") {
- if (window.DataView && (o instanceof window.DataView)) return "DataView";
- }
- return tag;
- }
- function prototypeForTagIE(tag) {
- var constructor = window[tag];
- if (constructor == null) return null;
- return constructor.prototype;
- }
- hooks.getTag = getTagIE;
- hooks.prototypeForTag = prototypeForTagIE;
-};
- C.C_JS_CONST3 = function(hooks) { return hooks; }
-;
- C.C_JsonCodec = new P.JsonCodec();
- C.C_ListEquality = new U.ListEquality();
- C.C_MapEquality = new U.MapEquality();
- C.C_OutOfMemoryError = new P.OutOfMemoryError();
- C.C_SassNull = new O.SassNull();
- C.C_UnicodeGlyphSet = new K.UnicodeGlyphSet();
- C.C_Utf8Codec = new P.Utf8Codec();
- C.C_Utf8Encoder = new P.Utf8Encoder();
- C.C__DelayedDone = new P._DelayedDone();
- C.C__JSRandom = new P._JSRandom();
- C.C__RootZone = new P._RootZone();
- C.ChangeType_add = new E.ChangeType("add");
- C.ChangeType_modify = new E.ChangeType("modify");
- C.ChangeType_remove = new E.ChangeType("remove");
- C.Combinator_CzM = new S.Combinator("~");
- C.Combinator_sgq = new S.Combinator(">");
- C.Combinator_uzg = new S.Combinator("+");
- C.List_empty = H.setRuntimeTypeInfo(makeConstList([]), [P.String]);
- C.Map_empty7 = new H.ConstantStringMap(0, {}, C.List_empty, [P.String, Z.ConfiguredValue]);
- C.Configuration_Map_empty_null_true = new A.Configuration(C.Map_empty7, null, true);
- C.Duration_0 = new P.Duration(0);
- C.ExtendMode_allTargets = new L.ExtendMode("allTargets");
- C.ExtendMode_normal = new L.ExtendMode("normal");
- C.ExtendMode_replace = new L.ExtendMode("replace");
- C.JsonEncoder_null = new P.JsonEncoder(null);
- C.LineFeed_D6m = new N.LineFeed("lf", "\n");
- C.LineFeed_Mss = new N.LineFeed("crlf", "\r\n");
- C.LineFeed_a1Y = new N.LineFeed("lfcr", "\n\r");
- C.LineFeed_kMT = new N.LineFeed("cr", "\r");
- C.ListSeparator_comma = new D.ListSeparator("comma");
- C.ListSeparator_space = new D.ListSeparator("space");
- C.ListSeparator_undecided = new D.ListSeparator("undecided");
- C.List_127_2047_65535_1114111 = H.setRuntimeTypeInfo(makeConstList([127, 2047, 65535, 1114111]), [P.int]);
- C.List_2Vk = H.setRuntimeTypeInfo(makeConstList([0, 0, 32776, 33792, 1, 10240, 0, 0]), [P.int]);
- C.List_CVk = H.setRuntimeTypeInfo(makeConstList([0, 0, 65490, 45055, 65535, 34815, 65534, 18431]), [P.int]);
- C.List_JYB = H.setRuntimeTypeInfo(makeConstList([0, 0, 26624, 1023, 65534, 2047, 65534, 2047]), [P.int]);
- C.List_empty9 = H.setRuntimeTypeInfo(makeConstList([]), [Z.Argument]);
- C.List_empty11 = H.setRuntimeTypeInfo(makeConstList([]), [B.AsyncCallable]);
- C.List_empty14 = H.setRuntimeTypeInfo(makeConstList([]), [B.AsyncImporter]);
- C.List_empty5 = H.setRuntimeTypeInfo(makeConstList([]), [S.ComplexSelector]);
- C.List_empty7 = H.setRuntimeTypeInfo(makeConstList([]), [Z.ConfiguredVariable]);
- C.List_empty1 = H.setRuntimeTypeInfo(makeConstList([]), [B.CssNode]);
- C.List_empty8 = H.setRuntimeTypeInfo(makeConstList([]), [T.Expression]);
- C.List_empty3 = H.setRuntimeTypeInfo(makeConstList([]), [S.Extension]);
- C.List_empty10 = H.setRuntimeTypeInfo(makeConstList([]), [M.Importer]);
- C.List_empty13 = H.setRuntimeTypeInfo(makeConstList([]), [[G.Module, B.AsyncCallable]]);
- C.List_empty0 = H.setRuntimeTypeInfo(makeConstList([]), [[G.Module, D.Callable]]);
- C.List_empty4 = H.setRuntimeTypeInfo(makeConstList([]), [[G.Module, P.Null]]);
- C.List_empty15 = H.setRuntimeTypeInfo(makeConstList([]), [P.Null]);
- C.List_empty16 = H.setRuntimeTypeInfo(makeConstList([]), [O.Statement]);
- C.List_empty6 = H.setRuntimeTypeInfo(makeConstList([]), [F.Value]);
- C.List_empty2 = H.setRuntimeTypeInfo(makeConstList([]), [P.int]);
- C.List_empty12 = makeConstList([]);
- C.List_gRj = H.setRuntimeTypeInfo(makeConstList([0, 0, 32722, 12287, 65534, 34815, 65534, 18431]), [P.int]);
- C.List_nxB = H.setRuntimeTypeInfo(makeConstList([0, 0, 24576, 1023, 65534, 34815, 65534, 18431]), [P.int]);
- C.List_qFt = H.setRuntimeTypeInfo(makeConstList([0, 0, 27858, 1023, 65534, 51199, 65535, 32767]), [P.int]);
- C.List_qNA = H.setRuntimeTypeInfo(makeConstList([0, 0, 32754, 11263, 65534, 34815, 65534, 18431]), [P.int]);
- C.List_qg40 = H.setRuntimeTypeInfo(makeConstList([0, 0, 32722, 12287, 65535, 34815, 65534, 18431]), [P.int]);
- C.List_qg4 = H.setRuntimeTypeInfo(makeConstList([0, 0, 65490, 12287, 65535, 34815, 65534, 18431]), [P.int]);
- C.Map_empty1 = new H.ConstantStringMap(0, {}, C.List_empty, [P.String, B.AstNode]);
- C.Map_empty3 = new H.ConstantStringMap(0, {}, C.List_empty, [P.String, T.Expression]);
- C.Map_empty5 = new H.ConstantStringMap(0, {}, C.List_empty, [P.String, [G.Module, B.AsyncCallable]]);
- C.Map_empty0 = new H.ConstantStringMap(0, {}, C.List_empty, [P.String, [G.Module, D.Callable]]);
- C.Map_empty = new H.ConstantStringMap(0, {}, C.List_empty, [P.String, Y.SourceFile]);
- C.Map_empty6 = new H.ConstantStringMap(0, {}, C.List_empty, [P.String, P.String]);
- C.Map_empty2 = new H.ConstantStringMap(0, {}, C.List_empty, [P.String, F.Value]);
- C.List_empty17 = H.setRuntimeTypeInfo(makeConstList([]), [P.Symbol0]);
- C.Map_empty4 = new H.ConstantStringMap(0, {}, C.List_empty17, [P.Symbol0, null]);
- C.OptionType_YwU = new G.OptionType("OptionType.single");
- C.OptionType_nMZ = new G.OptionType("OptionType.flag");
- C.OptionType_qyr = new G.OptionType("OptionType.multiple");
- C.OutputStyle_compressed = new N.OutputStyle("compressed");
- C.OutputStyle_expanded = new N.OutputStyle("expanded");
- C.SassBoolean_false = new Z.SassBoolean(false);
- C.SassBoolean_true = new Z.SassBoolean(true);
- C.SassList_lmy = new D.SassList(C.List_empty6, C.ListSeparator_comma, false);
- C.Map_empty8 = new H.ConstantStringMap(0, {}, C.List_empty6, [F.Value, F.Value]);
- C.SassMap_Map_empty = new A.SassMap(C.Map_empty8);
- C.StderrLogger_false = new S.StderrLogger(false);
- C.Symbol__warn = new H.Symbol("_warn");
- C.Symbol_call = new H.Symbol("call");
- C.Syntax_CSS = new M.Syntax("CSS");
- C.Syntax_SCSS = new M.Syntax("SCSS");
- C.Syntax_Sass = new M.Syntax("Sass");
- C.List_empty18 = H.setRuntimeTypeInfo(makeConstList([]), [[F.CssValue, D.SelectorList]]);
- C.Map_empty9 = new H.ConstantStringMap(0, {}, C.List_empty18, [[F.CssValue, D.SelectorList], [F.ModifiableCssValue, D.SelectorList]]);
- C.Tuple2_EmptyExtender_Map_empty = new S.Tuple2(C.C_EmptyExtender, C.Map_empty9, [F.Extender, [P.Map, [F.CssValue, D.SelectorList], [F.ModifiableCssValue, D.SelectorList]]]);
- C.UnaryOperator_U4G = new X.UnaryOperator("minus", "-");
- C.UnaryOperator_j2w = new X.UnaryOperator("plus", "+");
- C.UnaryOperator_not_not = new X.UnaryOperator("not", "not");
- C.UnaryOperator_zDx = new X.UnaryOperator("divide", "/");
- C._IterationMarker_null_2 = new P._IterationMarker(null, 2);
- C._PathDirection_8Gl = new M._PathDirection("at root");
- C._PathDirection_988 = new M._PathDirection("below root");
- C._PathDirection_FIw = new M._PathDirection("reaches root");
- C._PathDirection_ZGD = new M._PathDirection("above root");
- C._PathRelation_different = new M._PathRelation("different");
- C._PathRelation_equal = new M._PathRelation("equal");
- C._PathRelation_inconclusive = new M._PathRelation("inconclusive");
- C._PathRelation_within = new M._PathRelation("within");
- C._SingletonCssMediaQueryMergeResult_empty = new F._SingletonCssMediaQueryMergeResult("empty");
- C._SingletonCssMediaQueryMergeResult_unrepresentable = new F._SingletonCssMediaQueryMergeResult("unrepresentable");
- C._StreamGroupState_canceled = new L._StreamGroupState("canceled");
- C._StreamGroupState_dormant = new L._StreamGroupState("dormant");
- C._StreamGroupState_listening = new L._StreamGroupState("listening");
- C._StreamGroupState_paused = new L._StreamGroupState("paused");
- C._ZoneFunction_3bB = new P._ZoneFunction(C.C__RootZone, P.async___rootCreatePeriodicTimer$closure());
- C._ZoneFunction_7G2 = new P._ZoneFunction(C.C__RootZone, P.async___rootRegisterBinaryCallback$closure());
- C._ZoneFunction_Eeh = new P._ZoneFunction(C.C__RootZone, P.async___rootRegisterUnaryCallback$closure());
- C._ZoneFunction_NMc = new P._ZoneFunction(C.C__RootZone, P.async___rootHandleUncaughtError$closure());
- C._ZoneFunction__RootZone__rootCreateTimer = new P._ZoneFunction(C.C__RootZone, P.async___rootCreateTimer$closure());
- C._ZoneFunction__RootZone__rootErrorCallback = new P._ZoneFunction(C.C__RootZone, P.async___rootErrorCallback$closure());
- C._ZoneFunction__RootZone__rootFork = new P._ZoneFunction(C.C__RootZone, P.async___rootFork$closure());
- C._ZoneFunction__RootZone__rootPrint = new P._ZoneFunction(C.C__RootZone, P.async___rootPrint$closure());
- C._ZoneFunction__RootZone__rootRegisterCallback = new P._ZoneFunction(C.C__RootZone, P.async___rootRegisterCallback$closure());
- C._ZoneFunction__RootZone__rootRun = new P._ZoneFunction(C.C__RootZone, P.async___rootRun$closure());
- C._ZoneFunction__RootZone__rootRunBinary = new P._ZoneFunction(C.C__RootZone, P.async___rootRunBinary$closure());
- C._ZoneFunction__RootZone__rootRunUnary = new P._ZoneFunction(C.C__RootZone, P.async___rootRunUnary$closure());
- C._ZoneFunction__RootZone__rootScheduleMicrotask = new P._ZoneFunction(C.C__RootZone, P.async___rootScheduleMicrotask$closure());
- C._ZoneSpecification_ALf = new P._ZoneSpecification(null, null, null, null, null, null, null, null, null, null, null, null, null);
- })();
- (function staticFields() {
- $.printToZone = null;
- $.Closure_functionCounter = 0;
- $.BoundClosure_selfFieldNameCache = null;
- $.BoundClosure_receiverFieldNameCache = null;
- $.getTagFunction = null;
- $.alternateTagFunction = null;
- $.prototypeForTagFunction = null;
- $.dispatchRecordsForInstanceTags = null;
- $.interceptorsForUncacheableTags = null;
- $.initNativeDispatchFlag = null;
- $._nextCallback = null;
- $._lastCallback = null;
- $._lastPriorityCallback = null;
- $._isInCallbackLoop = false;
- $.Zone__current = C.C__RootZone;
- $._RootZone__rootDelegate = null;
- $._toStringVisiting = [];
- $._currentUriBase = null;
- $._current = null;
- $._subselectorPseudos = P.LinkedHashSet_LinkedHashSet$_literal(["matches", "any", "nth-child", "nth-last-child"], P.String);
- $._features = P.LinkedHashSet_LinkedHashSet$_literal(["global-variable-shadowing", "extend-selector-pseudoclass", "units-level-3", "at-error", "custom-property"], P.String);
- $._inImportRule = false;
- $._selectorPseudoClasses = P.LinkedHashSet_LinkedHashSet$_literal(["not", "matches", "current", "any", "has", "host", "host-context"], P.String);
- $._selectorPseudoElements = P.LinkedHashSet_LinkedHashSet$_literal(["slotted"], P.String);
- $._glyphs = C.C_UnicodeGlyphSet;
- })();
- (function lazyInitializers() {
- var _lazy = hunkHelpers.lazy;
- _lazy($, "DART_CLOSURE_PROPERTY_NAME", "$get$DART_CLOSURE_PROPERTY_NAME", function() {
- return H.getIsolateAffinityTag("_$dart_dartClosure");
- });
- _lazy($, "JS_INTEROP_INTERCEPTOR_TAG", "$get$JS_INTEROP_INTERCEPTOR_TAG", function() {
- return H.getIsolateAffinityTag("_$dart_js");
- });
- _lazy($, "TypeErrorDecoder_noSuchMethodPattern", "$get$TypeErrorDecoder_noSuchMethodPattern", function() {
- return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn({
- toString: function() {
- return "$receiver$";
- }
- }));
- });
- _lazy($, "TypeErrorDecoder_notClosurePattern", "$get$TypeErrorDecoder_notClosurePattern", function() {
- return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn({$method$: null,
- toString: function() {
- return "$receiver$";
- }
- }));
- });
- _lazy($, "TypeErrorDecoder_nullCallPattern", "$get$TypeErrorDecoder_nullCallPattern", function() {
- return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn(null));
- });
- _lazy($, "TypeErrorDecoder_nullLiteralCallPattern", "$get$TypeErrorDecoder_nullLiteralCallPattern", function() {
- return H.TypeErrorDecoder_extractPattern(function() {
- var $argumentsExpr$ = '$arguments$';
- try {
- null.$method$($argumentsExpr$);
- } catch (e) {
- return e.message;
- }
- }());
- });
- _lazy($, "TypeErrorDecoder_undefinedCallPattern", "$get$TypeErrorDecoder_undefinedCallPattern", function() {
- return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn(void 0));
- });
- _lazy($, "TypeErrorDecoder_undefinedLiteralCallPattern", "$get$TypeErrorDecoder_undefinedLiteralCallPattern", function() {
- return H.TypeErrorDecoder_extractPattern(function() {
- var $argumentsExpr$ = '$arguments$';
- try {
- (void 0).$method$($argumentsExpr$);
- } catch (e) {
- return e.message;
- }
- }());
- });
- _lazy($, "TypeErrorDecoder_nullPropertyPattern", "$get$TypeErrorDecoder_nullPropertyPattern", function() {
- return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokePropertyErrorOn(null));
- });
- _lazy($, "TypeErrorDecoder_nullLiteralPropertyPattern", "$get$TypeErrorDecoder_nullLiteralPropertyPattern", function() {
- return H.TypeErrorDecoder_extractPattern(function() {
- try {
- null.$method$;
- } catch (e) {
- return e.message;
- }
- }());
- });
- _lazy($, "TypeErrorDecoder_undefinedPropertyPattern", "$get$TypeErrorDecoder_undefinedPropertyPattern", function() {
- return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokePropertyErrorOn(void 0));
- });
- _lazy($, "TypeErrorDecoder_undefinedLiteralPropertyPattern", "$get$TypeErrorDecoder_undefinedLiteralPropertyPattern", function() {
- return H.TypeErrorDecoder_extractPattern(function() {
- try {
- (void 0).$method$;
- } catch (e) {
- return e.message;
- }
- }());
- });
- _lazy($, "_AsyncRun__scheduleImmediateClosure", "$get$_AsyncRun__scheduleImmediateClosure", function() {
- return P._AsyncRun__initializeScheduleImmediate();
- });
- _lazy($, "Future__nullFuture", "$get$Future__nullFuture", function() {
- return P._Future$zoneValue(null, C.C__RootZone, P.Null);
- });
- _lazy($, "Future__falseFuture", "$get$Future__falseFuture", function() {
- return P._Future$zoneValue(false, C.C__RootZone, P.bool);
- });
- _lazy($, "_RootZone__rootMap", "$get$_RootZone__rootMap", function() {
- return P.HashMap_HashMap(null, null);
- });
- _lazy($, "Utf8Decoder__decoder", "$get$Utf8Decoder__decoder", function() {
- return P.Utf8Decoder__makeDecoder();
- });
- _lazy($, "_Base64Decoder__inverseAlphabet", "$get$_Base64Decoder__inverseAlphabet", function() {
- return H.NativeInt8List__create1(H._ensureNativeList(H.setRuntimeTypeInfo([-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -2, -2, -2, -2, -2, 62, -2, 62, -2, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -2, -2, -2, -1, -2, -2, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -2, -2, -2, -2, 63, -2, 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, -2, -2, -2, -2, -2], [P.int])));
- });
- _lazy($, "_Uri__isWindowsCached", "$get$_Uri__isWindowsCached", function() {
- return typeof process != "undefined" && Object.prototype.toString.call(process) == "[object process]" && process.platform == "win32";
- });
- _lazy($, "_Uri__needsNoEncoding", "$get$_Uri__needsNoEncoding", function() {
- return P.RegExp_RegExp("^[\\-\\.0-9A-Z_a-z~]*$", false);
- });
- _lazy($, "_hasErrorStackProperty", "$get$_hasErrorStackProperty", function() {
- return new Error().stack != void 0;
- });
- _lazy($, "_scannerTables", "$get$_scannerTables", function() {
- return P._createTables();
- });
- _lazy($, "Option__invalidChars", "$get$Option__invalidChars", function() {
- return P.RegExp_RegExp("[ \\t\\r\\n\"'\\\\/]", false);
- });
- _lazy($, "_soloOpt", "$get$_soloOpt", function() {
- return P.RegExp_RegExp("^-([a-zA-Z0-9])$", false);
- });
- _lazy($, "_abbrOpt", "$get$_abbrOpt", function() {
- return P.RegExp_RegExp("^-([a-zA-Z0-9]+)(.*)$", false);
- });
- _lazy($, "_longOpt", "$get$_longOpt", function() {
- return P.RegExp_RegExp("^--([a-zA-Z\\-_0-9]+)(=(.*))?$", false);
- });
- _lazy($, "alwaysValid", "$get$alwaysValid", function() {
- return new Q.closure142();
- });
- _lazy($, "readline", "$get$readline", function() {
- return self.readline;
- });
- _lazy($, "windows", "$get$windows", function() {
- return M.Context_Context($.$get$Style_windows());
- });
- _lazy($, "url", "$get$url", function() {
- return M.Context_Context($.$get$Style_url());
- });
- _lazy($, "context", "$get$context", function() {
- return new M.Context($.$get$Style_platform(), null);
- });
- _lazy($, "Style_posix", "$get$Style_posix", function() {
- return new E.PosixStyle(P.RegExp_RegExp("/", false), P.RegExp_RegExp("[^/]$", false), P.RegExp_RegExp("^/", false));
- });
- _lazy($, "Style_windows", "$get$Style_windows", function() {
- return new L.WindowsStyle(P.RegExp_RegExp("[/\\\\]", false), P.RegExp_RegExp("[^/\\\\]$", false), P.RegExp_RegExp("^(\\\\\\\\[^\\\\]+\\\\[^\\\\/]+|[a-zA-Z]:[/\\\\])", false), P.RegExp_RegExp("^[/\\\\](?![/\\\\])", false));
- });
- _lazy($, "Style_url", "$get$Style_url", function() {
- return new F.UrlStyle(P.RegExp_RegExp("/", false), P.RegExp_RegExp("(^[a-zA-Z][-+.a-zA-Z\\d]*://|[^/])$", false), P.RegExp_RegExp("[a-zA-Z][-+.a-zA-Z\\d]*://[^/]*", false), P.RegExp_RegExp("^/", false));
- });
- _lazy($, "Style_platform", "$get$Style_platform", function() {
- return O.Style__getPlatformStyle();
- });
- _lazy($, "IfExpression_declaration", "$get$IfExpression_declaration", function() {
- return B.ArgumentDeclaration_ArgumentDeclaration$parse("@function if($condition, $if-true, $if-false) {", null);
- });
- _lazy($, "colorsByName", "$get$colorsByName", function() {
- var _null = null;
- return P.LinkedHashMap_LinkedHashMap$_literal(["yellowgreen", K.SassColor$rgb(154, 205, 50, _null, _null), "yellow", K.SassColor$rgb(255, 255, 0, _null, _null), "whitesmoke", K.SassColor$rgb(245, 245, 245, _null, _null), "white", K.SassColor$rgb(255, 255, 255, _null, _null), "wheat", K.SassColor$rgb(245, 222, 179, _null, _null), "violet", K.SassColor$rgb(238, 130, 238, _null, _null), "turquoise", K.SassColor$rgb(64, 224, 208, _null, _null), "transparent", K.SassColor$rgb(0, 0, 0, 0, _null), "tomato", K.SassColor$rgb(255, 99, 71, _null, _null), "thistle", K.SassColor$rgb(216, 191, 216, _null, _null), "teal", K.SassColor$rgb(0, 128, 128, _null, _null), "tan", K.SassColor$rgb(210, 180, 140, _null, _null), "steelblue", K.SassColor$rgb(70, 130, 180, _null, _null), "springgreen", K.SassColor$rgb(0, 255, 127, _null, _null), "snow", K.SassColor$rgb(255, 250, 250, _null, _null), "slategrey", K.SassColor$rgb(112, 128, 144, _null, _null), "slategray", K.SassColor$rgb(112, 128, 144, _null, _null), "slateblue", K.SassColor$rgb(106, 90, 205, _null, _null), "skyblue", K.SassColor$rgb(135, 206, 235, _null, _null), "silver", K.SassColor$rgb(192, 192, 192, _null, _null), "sienna", K.SassColor$rgb(160, 82, 45, _null, _null), "seashell", K.SassColor$rgb(255, 245, 238, _null, _null), "seagreen", K.SassColor$rgb(46, 139, 87, _null, _null), "sandybrown", K.SassColor$rgb(244, 164, 96, _null, _null), "salmon", K.SassColor$rgb(250, 128, 114, _null, _null), "saddlebrown", K.SassColor$rgb(139, 69, 19, _null, _null), "royalblue", K.SassColor$rgb(65, 105, 225, _null, _null), "rosybrown", K.SassColor$rgb(188, 143, 143, _null, _null), "red", K.SassColor$rgb(255, 0, 0, _null, _null), "rebeccapurple", K.SassColor$rgb(102, 51, 153, _null, _null), "purple", K.SassColor$rgb(128, 0, 128, _null, _null), "powderblue", K.SassColor$rgb(176, 224, 230, _null, _null), "plum", K.SassColor$rgb(221, 160, 221, _null, _null), "pink", K.SassColor$rgb(255, 192, 203, _null, _null), "peru", K.SassColor$rgb(205, 133, 63, _null, _null), "peachpuff", K.SassColor$rgb(255, 218, 185, _null, _null), "papayawhip", K.SassColor$rgb(255, 239, 213, _null, _null), "palevioletred", K.SassColor$rgb(219, 112, 147, _null, _null), "paleturquoise", K.SassColor$rgb(175, 238, 238, _null, _null), "palegreen", K.SassColor$rgb(152, 251, 152, _null, _null), "palegoldenrod", K.SassColor$rgb(238, 232, 170, _null, _null), "orchid", K.SassColor$rgb(218, 112, 214, _null, _null), "orangered", K.SassColor$rgb(255, 69, 0, _null, _null), "orange", K.SassColor$rgb(255, 165, 0, _null, _null), "olivedrab", K.SassColor$rgb(107, 142, 35, _null, _null), "olive", K.SassColor$rgb(128, 128, 0, _null, _null), "oldlace", K.SassColor$rgb(253, 245, 230, _null, _null), "navy", K.SassColor$rgb(0, 0, 128, _null, _null), "navajowhite", K.SassColor$rgb(255, 222, 173, _null, _null), "moccasin", K.SassColor$rgb(255, 228, 181, _null, _null), "mistyrose", K.SassColor$rgb(255, 228, 225, _null, _null), "mintcream", K.SassColor$rgb(245, 255, 250, _null, _null), "midnightblue", K.SassColor$rgb(25, 25, 112, _null, _null), "mediumvioletred", K.SassColor$rgb(199, 21, 133, _null, _null), "mediumturquoise", K.SassColor$rgb(72, 209, 204, _null, _null), "mediumspringgreen", K.SassColor$rgb(0, 250, 154, _null, _null), "mediumslateblue", K.SassColor$rgb(123, 104, 238, _null, _null), "mediumseagreen", K.SassColor$rgb(60, 179, 113, _null, _null), "mediumpurple", K.SassColor$rgb(147, 112, 219, _null, _null), "mediumorchid", K.SassColor$rgb(186, 85, 211, _null, _null), "mediumblue", K.SassColor$rgb(0, 0, 205, _null, _null), "mediumaquamarine", K.SassColor$rgb(102, 205, 170, _null, _null), "maroon", K.SassColor$rgb(128, 0, 0, _null, _null), "magenta", K.SassColor$rgb(255, 0, 255, _null, _null), "linen", K.SassColor$rgb(250, 240, 230, _null, _null), "limegreen", K.SassColor$rgb(50, 205, 50, _null, _null), "lime", K.SassColor$rgb(0, 255, 0, _null, _null), "lightyellow", K.SassColor$rgb(255, 255, 224, _null, _null), "lightsteelblue", K.SassColor$rgb(176, 196, 222, _null, _null), "lightslategrey", K.SassColor$rgb(119, 136, 153, _null, _null), "lightslategray", K.SassColor$rgb(119, 136, 153, _null, _null), "lightskyblue", K.SassColor$rgb(135, 206, 250, _null, _null), "lightseagreen", K.SassColor$rgb(32, 178, 170, _null, _null), "lightsalmon", K.SassColor$rgb(255, 160, 122, _null, _null), "lightpink", K.SassColor$rgb(255, 182, 193, _null, _null), "lightgrey", K.SassColor$rgb(211, 211, 211, _null, _null), "lightgreen", K.SassColor$rgb(144, 238, 144, _null, _null), "lightgray", K.SassColor$rgb(211, 211, 211, _null, _null), "lightgoldenrodyellow", K.SassColor$rgb(250, 250, 210, _null, _null), "lightcyan", K.SassColor$rgb(224, 255, 255, _null, _null), "lightcoral", K.SassColor$rgb(240, 128, 128, _null, _null), "lightblue", K.SassColor$rgb(173, 216, 230, _null, _null), "lemonchiffon", K.SassColor$rgb(255, 250, 205, _null, _null), "lawngreen", K.SassColor$rgb(124, 252, 0, _null, _null), "lavenderblush", K.SassColor$rgb(255, 240, 245, _null, _null), "lavender", K.SassColor$rgb(230, 230, 250, _null, _null), "khaki", K.SassColor$rgb(240, 230, 140, _null, _null), "ivory", K.SassColor$rgb(255, 255, 240, _null, _null), "indigo", K.SassColor$rgb(75, 0, 130, _null, _null), "indianred", K.SassColor$rgb(205, 92, 92, _null, _null), "hotpink", K.SassColor$rgb(255, 105, 180, _null, _null), "honeydew", K.SassColor$rgb(240, 255, 240, _null, _null), "grey", K.SassColor$rgb(128, 128, 128, _null, _null), "greenyellow", K.SassColor$rgb(173, 255, 47, _null, _null), "green", K.SassColor$rgb(0, 128, 0, _null, _null), "gray", K.SassColor$rgb(128, 128, 128, _null, _null), "goldenrod", K.SassColor$rgb(218, 165, 32, _null, _null), "gold", K.SassColor$rgb(255, 215, 0, _null, _null), "ghostwhite", K.SassColor$rgb(248, 248, 255, _null, _null), "gainsboro", K.SassColor$rgb(220, 220, 220, _null, _null), "fuchsia", K.SassColor$rgb(255, 0, 255, _null, _null), "forestgreen", K.SassColor$rgb(34, 139, 34, _null, _null), "floralwhite", K.SassColor$rgb(255, 250, 240, _null, _null), "firebrick", K.SassColor$rgb(178, 34, 34, _null, _null), "dodgerblue", K.SassColor$rgb(30, 144, 255, _null, _null), "dimgrey", K.SassColor$rgb(105, 105, 105, _null, _null), "dimgray", K.SassColor$rgb(105, 105, 105, _null, _null), "deepskyblue", K.SassColor$rgb(0, 191, 255, _null, _null), "deeppink", K.SassColor$rgb(255, 20, 147, _null, _null), "darkviolet", K.SassColor$rgb(148, 0, 211, _null, _null), "darkturquoise", K.SassColor$rgb(0, 206, 209, _null, _null), "darkslategrey", K.SassColor$rgb(47, 79, 79, _null, _null), "darkslategray", K.SassColor$rgb(47, 79, 79, _null, _null), "darkslateblue", K.SassColor$rgb(72, 61, 139, _null, _null), "darkseagreen", K.SassColor$rgb(143, 188, 143, _null, _null), "darksalmon", K.SassColor$rgb(233, 150, 122, _null, _null), "darkred", K.SassColor$rgb(139, 0, 0, _null, _null), "darkorchid", K.SassColor$rgb(153, 50, 204, _null, _null), "darkorange", K.SassColor$rgb(255, 140, 0, _null, _null), "darkolivegreen", K.SassColor$rgb(85, 107, 47, _null, _null), "darkmagenta", K.SassColor$rgb(139, 0, 139, _null, _null), "darkkhaki", K.SassColor$rgb(189, 183, 107, _null, _null), "darkgrey", K.SassColor$rgb(169, 169, 169, _null, _null), "darkgreen", K.SassColor$rgb(0, 100, 0, _null, _null), "darkgray", K.SassColor$rgb(169, 169, 169, _null, _null), "darkgoldenrod", K.SassColor$rgb(184, 134, 11, _null, _null), "darkcyan", K.SassColor$rgb(0, 139, 139, _null, _null), "darkblue", K.SassColor$rgb(0, 0, 139, _null, _null), "cyan", K.SassColor$rgb(0, 255, 255, _null, _null), "crimson", K.SassColor$rgb(220, 20, 60, _null, _null), "cornsilk", K.SassColor$rgb(255, 248, 220, _null, _null), "cornflowerblue", K.SassColor$rgb(100, 149, 237, _null, _null), "coral", K.SassColor$rgb(255, 127, 80, _null, _null), "chocolate", K.SassColor$rgb(210, 105, 30, _null, _null), "chartreuse", K.SassColor$rgb(127, 255, 0, _null, _null), "cadetblue", K.SassColor$rgb(95, 158, 160, _null, _null), "burlywood", K.SassColor$rgb(222, 184, 135, _null, _null), "brown", K.SassColor$rgb(165, 42, 42, _null, _null), "blueviolet", K.SassColor$rgb(138, 43, 226, _null, _null), "blue", K.SassColor$rgb(0, 0, 255, _null, _null), "blanchedalmond", K.SassColor$rgb(255, 235, 205, _null, _null), "black", K.SassColor$rgb(0, 0, 0, _null, _null), "bisque", K.SassColor$rgb(255, 228, 196, _null, _null), "beige", K.SassColor$rgb(245, 245, 220, _null, _null), "azure", K.SassColor$rgb(240, 255, 255, _null, _null), "aquamarine", K.SassColor$rgb(127, 255, 212, _null, _null), "aqua", K.SassColor$rgb(0, 255, 255, _null, _null), "antiquewhite", K.SassColor$rgb(250, 235, 215, _null, _null), "aliceblue", K.SassColor$rgb(240, 248, 255, _null, _null)], P.String, K.SassColor);
- });
- _lazy($, "namesByColor", "$get$namesByColor", function() {
- var t1 = P.String,
- t2 = K.SassColor;
- return Y.mapMap($.$get$colorsByName(), new X.closure70(), new X.closure71(), t1, t2, t2, t1);
- });
- _lazy($, "ExecutableOptions__separatorBar", "$get$ExecutableOptions__separatorBar", function() {
- return B.isWindows() ? "=" : "\u2501";
- });
- _lazy($, "ExecutableOptions__parser", "$get$ExecutableOptions__parser", function() {
- return new B.ExecutableOptions_closure().call$0();
- });
- _lazy($, "globalFunctions", "$get$globalFunctions", function() {
- var t3,
- t1 = Q.BuiltInCallable,
- t2 = H.setRuntimeTypeInfo([], [t1]);
- for (t3 = $.$get$global0(), t3 = t3.get$iterator(t3); t3.moveNext$0();)
- t2.push(t3.__internal$_current);
- for (t3 = $.$get$global1(), t3 = t3.get$iterator(t3); t3.moveNext$0();)
- t2.push(t3.__internal$_current);
- for (t3 = $.$get$global2(), t3 = t3.get$iterator(t3); t3.moveNext$0();)
- t2.push(t3.__internal$_current);
- for (t3 = $.$get$global3(), t3 = t3.get$iterator(t3); t3.moveNext$0();)
- t2.push(t3.__internal$_current);
- for (t3 = $.$get$global4(), t3 = t3.get$iterator(t3); t3.moveNext$0();)
- t2.push(t3.__internal$_current);
- for (t3 = $.$get$global5(), t3 = t3.get$iterator(t3); t3.moveNext$0();)
- t2.push(t3.__internal$_current);
- for (t3 = $.$get$global(), t3 = t3.get$iterator(t3); t3.moveNext$0();)
- t2.push(t3.__internal$_current);
- t2.push(Q.BuiltInCallable$function("if", "$condition, $if-true, $if-false", new Y.closure(), null));
- return P.UnmodifiableListView$(t2, t1);
- });
- _lazy($, "coreModules", "$get$coreModules", function() {
- var t1 = [Q.BuiltInModule, Q.BuiltInCallable];
- return P.UnmodifiableListView$(H.setRuntimeTypeInfo([$.$get$module(), $.$get$module0(), $.$get$module1(), $.$get$module2(), $.$get$module3(), $.$get$module4()], [t1]), t1);
- });
- _lazy($, "_microsoftFilterStart", "$get$_microsoftFilterStart", function() {
- return P.RegExp_RegExp("^[a-zA-Z]+\\s*=", false);
- });
- _lazy($, "global", "$get$global0", function() {
- var _s27_ = "$red, $green, $blue, $alpha",
- _s19_ = "$red, $green, $blue",
- _s37_ = "$hue, $saturation, $lightness, $alpha",
- _s29_ = "$hue, $saturation, $lightness",
- _s17_ = "$hue, $saturation",
- _s15_ = "$color, $amount",
- t1 = P.String,
- t2 = {func: 1, ret: F.Value, args: [[P.List, F.Value]]},
- t3 = Q.BuiltInCallable;
- return P.UnmodifiableListView$(H.setRuntimeTypeInfo([$.$get$_red(), $.$get$_green(), $.$get$_blue(), $.$get$_mix(), Q.BuiltInCallable$overloadedFunction("rgb", P.LinkedHashMap_LinkedHashMap$_literal([_s27_, new K.closure43(), _s19_, new K.closure44(), "$color, $alpha", new K.closure45(), "$channels", new K.closure46()], t1, t2)), Q.BuiltInCallable$overloadedFunction("rgba", P.LinkedHashMap_LinkedHashMap$_literal([_s27_, new K.closure47(), _s19_, new K.closure48(), "$color, $alpha", new K.closure49(), "$channels", new K.closure50()], t1, t2)), K._function4("invert", "$color, $weight: 100%", new K.closure51()), $.$get$_hue(), $.$get$_saturation(), $.$get$_lightness(), $.$get$_complement(), Q.BuiltInCallable$overloadedFunction("hsl", P.LinkedHashMap_LinkedHashMap$_literal([_s37_, new K.closure52(), _s29_, new K.closure53(), _s17_, new K.closure54(), "$channels", new K.closure55()], t1, t2)), Q.BuiltInCallable$overloadedFunction("hsla", P.LinkedHashMap_LinkedHashMap$_literal([_s37_, new K.closure56(), _s29_, new K.closure57(), _s17_, new K.closure58(), "$channels", new K.closure59()], t1, t2)), K._function4("grayscale", "$color", new K.closure60()), K._function4("adjust-hue", "$color, $degrees", new K.closure61()), K._function4("lighten", _s15_, new K.closure62()), K._function4("darken", _s15_, new K.closure63()), Q.BuiltInCallable$overloadedFunction("saturate", P.LinkedHashMap_LinkedHashMap$_literal(["$amount", new K.closure64(), "$color, $amount", new K.closure65()], t1, t2)), K._function4("desaturate", _s15_, new K.closure66()), K._function4("opacify", _s15_, K.color___opacify$closure()), K._function4("fade-in", _s15_, K.color___opacify$closure()), K._function4("transparentize", _s15_, K.color___transparentize$closure()), K._function4("fade-out", _s15_, K.color___transparentize$closure()), Q.BuiltInCallable$overloadedFunction("alpha", P.LinkedHashMap_LinkedHashMap$_literal(["$color", new K.closure67(), "$args...", new K.closure68()], t1, t2)), K._function4("opacity", "$color", new K.closure69()), $.$get$_ieHexStr(), $.$get$_adjust().withName$1("adjust-color"), $.$get$_scale().withName$1("scale-color"), $.$get$_change().withName$1("change-color")], [t3]), t3);
- });
- _lazy($, "module", "$get$module", function() {
- var _s9_ = "lightness",
- _s10_ = "saturation",
- _s5_ = "alpha",
- t1 = Q.BuiltInCallable;
- return Q.BuiltInModule$("color", H.setRuntimeTypeInfo([$.$get$_red(), $.$get$_green(), $.$get$_blue(), $.$get$_mix(), K._function4("invert", "$color, $weight: 100%", new K.closure96()), $.$get$_hue(), $.$get$_saturation(), $.$get$_lightness(), $.$get$_complement(), K._removedColorFunction("adjust-hue", "hue", false), K._removedColorFunction("lighten", _s9_, false), K._removedColorFunction("darken", _s9_, true), K._removedColorFunction("saturate", _s10_, false), K._removedColorFunction("desaturate", _s10_, true), K._function4("grayscale", "$color", new K.closure97()), K._removedColorFunction("opacify", _s5_, false), K._removedColorFunction("fade-in", _s5_, false), K._removedColorFunction("transparentize", _s5_, true), K._removedColorFunction("fade-out", _s5_, true), Q.BuiltInCallable$overloadedFunction(_s5_, P.LinkedHashMap_LinkedHashMap$_literal(["$color", new K.closure98(), "$args...", new K.closure99()], P.String, {func: 1, ret: F.Value, args: [[P.List, F.Value]]})), K._function4("opacity", "$color", new K.closure100()), $.$get$_adjust(), $.$get$_scale(), $.$get$_change(), $.$get$_ieHexStr()], [t1]), null, null, t1);
- });
- _lazy($, "_red", "$get$_red", function() {
- return K._function4("red", "$color", new K.closure83());
- });
- _lazy($, "_green", "$get$_green", function() {
- return K._function4("green", "$color", new K.closure82());
- });
- _lazy($, "_blue", "$get$_blue", function() {
- return K._function4("blue", "$color", new K.closure81());
- });
- _lazy($, "_mix", "$get$_mix", function() {
- return K._function4("mix", "$color1, $color2, $weight: 50%", new K.closure80());
- });
- _lazy($, "_hue", "$get$_hue", function() {
- return K._function4("hue", "$color", new K.closure79());
- });
- _lazy($, "_saturation", "$get$_saturation", function() {
- return K._function4("saturation", "$color", new K.closure78());
- });
- _lazy($, "_lightness", "$get$_lightness", function() {
- return K._function4("lightness", "$color", new K.closure77());
- });
- _lazy($, "_complement", "$get$_complement", function() {
- return K._function4("complement", "$color", new K.closure76());
- });
- _lazy($, "_adjust", "$get$_adjust", function() {
- return K._function4("adjust", "$color, $kwargs...", new K.closure74());
- });
- _lazy($, "_scale", "$get$_scale", function() {
- return K._function4("scale", "$color, $kwargs...", new K.closure73());
- });
- _lazy($, "_change", "$get$_change", function() {
- return K._function4("change", "$color, $kwargs...", new K.closure72());
- });
- _lazy($, "_ieHexStr", "$get$_ieHexStr", function() {
- return K._function4("ie-hex-str", "$color", new K.closure75());
- });
- _lazy($, "global0", "$get$global1", function() {
- var t1 = Q.BuiltInCallable;
- return P.UnmodifiableListView$(H.setRuntimeTypeInfo([$.$get$_length0(), $.$get$_nth(), $.$get$_setNth(), $.$get$_join(), $.$get$_append0(), $.$get$_zip(), $.$get$_index0(), $.$get$_isBracketed(), $.$get$_separator().withName$1("list-separator")], [t1]), t1);
- });
- _lazy($, "module0", "$get$module0", function() {
- var t1 = Q.BuiltInCallable;
- return Q.BuiltInModule$("list", H.setRuntimeTypeInfo([$.$get$_length0(), $.$get$_nth(), $.$get$_setNth(), $.$get$_join(), $.$get$_append0(), $.$get$_zip(), $.$get$_index0(), $.$get$_isBracketed(), $.$get$_separator()], [t1]), null, null, t1);
- });
- _lazy($, "_length", "$get$_length0", function() {
- return D._function3("length", "$list", new D.closure42());
- });
- _lazy($, "_nth", "$get$_nth", function() {
- return D._function3("nth", "$list, $n", new D.closure41());
- });
- _lazy($, "_setNth", "$get$_setNth", function() {
- return D._function3("set-nth", "$list, $n, $value", new D.closure40());
- });
- _lazy($, "_join", "$get$_join", function() {
- return D._function3("join", "$list1, $list2, $separator: auto, $bracketed: auto", new D.closure39());
- });
- _lazy($, "_append", "$get$_append0", function() {
- return D._function3("append", "$list, $val, $separator: auto", new D.closure38());
- });
- _lazy($, "_zip", "$get$_zip", function() {
- return D._function3("zip", "$lists...", new D.closure37());
- });
- _lazy($, "_index", "$get$_index0", function() {
- return D._function3("index", "$list, $value", new D.closure36());
- });
- _lazy($, "_separator", "$get$_separator", function() {
- return D._function3("separator", "$list", new D.closure34());
- });
- _lazy($, "_isBracketed", "$get$_isBracketed", function() {
- return D._function3("is-bracketed", "$list", new D.closure35());
- });
- _lazy($, "global1", "$get$global2", function() {
- var t1 = Q.BuiltInCallable;
- return P.UnmodifiableListView$(H.setRuntimeTypeInfo([$.$get$_get().withName$1("map-get"), $.$get$_merge().withName$1("map-merge"), $.$get$_remove().withName$1("map-remove"), $.$get$_keys().withName$1("map-keys"), $.$get$_values().withName$1("map-values"), $.$get$_hasKey().withName$1("map-has-key")], [t1]), t1);
- });
- _lazy($, "module1", "$get$module1", function() {
- var t1 = Q.BuiltInCallable;
- return Q.BuiltInModule$("map", H.setRuntimeTypeInfo([$.$get$_get(), $.$get$_merge(), $.$get$_remove(), $.$get$_keys(), $.$get$_values(), $.$get$_hasKey()], [t1]), null, null, t1);
- });
- _lazy($, "_get", "$get$_get", function() {
- return A._function2("get", "$map, $key", new A.closure33());
- });
- _lazy($, "_merge", "$get$_merge", function() {
- return A._function2("merge", "$map1, $map2", new A.closure32());
- });
- _lazy($, "_remove", "$get$_remove", function() {
- return Q.BuiltInCallable$overloadedFunction("remove", P.LinkedHashMap_LinkedHashMap$_literal(["$map", new A.closure30(), "$map, $key, $keys...", new A.closure31()], P.String, {func: 1, ret: F.Value, args: [[P.List, F.Value]]}));
- });
- _lazy($, "_keys", "$get$_keys", function() {
- return A._function2("keys", "$map", new A.closure29());
- });
- _lazy($, "_values", "$get$_values", function() {
- return A._function2("values", "$map", new A.closure28());
- });
- _lazy($, "_hasKey", "$get$_hasKey", function() {
- return A._function2("has-key", "$map, $key", new A.closure27());
- });
- _lazy($, "global2", "$get$global3", function() {
- var t1 = Q.BuiltInCallable;
- return P.UnmodifiableListView$(H.setRuntimeTypeInfo([$.$get$_abs(), $.$get$_ceil(), $.$get$_floor(), $.$get$_max(), $.$get$_min(), $.$get$_percentage(), $.$get$_randomFunction(), $.$get$_round(), $.$get$_unit(), $.$get$_compatible().withName$1("comparable"), $.$get$_isUnitless().withName$1("unitless")], [t1]), t1);
- });
- _lazy($, "module2", "$get$module2", function() {
- var t1 = Q.BuiltInCallable;
- return Q.BuiltInModule$("math", H.setRuntimeTypeInfo([$.$get$_abs(), $.$get$_acos(), $.$get$_asin(), $.$get$_atan(), $.$get$_atan2(), $.$get$_ceil(), $.$get$_clamp(), $.$get$_cos(), $.$get$_compatible(), $.$get$_floor(), $.$get$_hypot(), $.$get$_isUnitless(), $.$get$_log(), $.$get$_max(), $.$get$_min(), $.$get$_percentage(), $.$get$_pow(), $.$get$_randomFunction(), $.$get$_round(), $.$get$_sin(), $.$get$_sqrt(), $.$get$_tan(), $.$get$_unit()], [t1]), null, P.LinkedHashMap_LinkedHashMap$_literal(["e", T.SassNumber$(2.718281828459045, null), "pi", T.SassNumber$(3.141592653589793, null)], P.String, F.Value), t1);
- });
- _lazy($, "_ceil", "$get$_ceil", function() {
- return K._numberFunction("ceil", new K.closure25());
- });
- _lazy($, "_clamp", "$get$_clamp", function() {
- return K._function1("clamp", "$min, $number, $max", new K.closure91());
- });
- _lazy($, "_floor", "$get$_floor", function() {
- return K._numberFunction("floor", new K.closure24());
- });
- _lazy($, "_max", "$get$_max", function() {
- return K._function1("max", "$numbers...", new K.closure23());
- });
- _lazy($, "_min", "$get$_min", function() {
- return K._function1("min", "$numbers...", new K.closure22());
- });
- _lazy($, "_round", "$get$_round", function() {
- return K._numberFunction("round", T.number0__fuzzyRound$closure());
- });
- _lazy($, "_abs", "$get$_abs", function() {
- return K._numberFunction("abs", new K.closure26());
- });
- _lazy($, "_hypot", "$get$_hypot", function() {
- return K._function1("hypot", "$numbers...", new K.closure89());
- });
- _lazy($, "_log", "$get$_log", function() {
- return K._function1("log", "$number, $base: null", new K.closure88());
- });
- _lazy($, "_pow", "$get$_pow", function() {
- return K._function1("pow", "$base, $exponent", new K.closure87());
- });
- _lazy($, "_sqrt", "$get$_sqrt", function() {
- return K._function1("sqrt", "$number", new K.closure85());
- });
- _lazy($, "_acos", "$get$_acos", function() {
- return K._function1("acos", "$number", new K.closure95());
- });
- _lazy($, "_asin", "$get$_asin", function() {
- return K._function1("asin", "$number", new K.closure94());
- });
- _lazy($, "_atan", "$get$_atan", function() {
- return K._function1("atan", "$number", new K.closure93());
- });
- _lazy($, "_atan2", "$get$_atan2", function() {
- return K._function1("atan2", "$y, $x", new K.closure92());
- });
- _lazy($, "_cos", "$get$_cos", function() {
- return K._function1("cos", "$number", new K.closure90());
- });
- _lazy($, "_sin", "$get$_sin", function() {
- return K._function1("sin", "$number", new K.closure86());
- });
- _lazy($, "_tan", "$get$_tan", function() {
- return K._function1("tan", "$number", new K.closure84());
- });
- _lazy($, "_compatible", "$get$_compatible", function() {
- return K._function1("compatible", "$number1, $number2", new K.closure18());
- });
- _lazy($, "_isUnitless", "$get$_isUnitless", function() {
- return K._function1("is-unitless", "$number", new K.closure17());
- });
- _lazy($, "_unit", "$get$_unit", function() {
- return K._function1("unit", "$number", new K.closure19());
- });
- _lazy($, "_percentage", "$get$_percentage", function() {
- return K._function1("percentage", "$number", new K.closure21());
- });
- _lazy($, "_random", "$get$_random0", function() {
- return P.Random_Random();
- });
- _lazy($, "_randomFunction", "$get$_randomFunction", function() {
- return K._function1("random", "$limit: null", new K.closure20());
- });
- _lazy($, "global3", "$get$global", function() {
- var t1 = Q.BuiltInCallable;
- return P.UnmodifiableListView$(H.setRuntimeTypeInfo([Q._function5("feature-exists", "$feature", new Q.closure101()), Q._function5("inspect", "$value", new Q.closure102()), Q._function5("type-of", "$value", new Q.closure103()), Q._function5("keywords", "$args", new Q.closure104())], [t1]), t1);
- });
- _lazy($, "global4", "$get$global4", function() {
- var t1 = Q.BuiltInCallable;
- return P.UnmodifiableListView$(H.setRuntimeTypeInfo([$.$get$_isSuperselector(), $.$get$_simpleSelectors(), $.$get$_parse().withName$1("selector-parse"), $.$get$_nest().withName$1("selector-nest"), $.$get$_append().withName$1("selector-append"), $.$get$_extend().withName$1("selector-extend"), $.$get$_replace().withName$1("selector-replace"), $.$get$_unify().withName$1("selector-unify")], [t1]), t1);
- });
- _lazy($, "module3", "$get$module3", function() {
- var t1 = Q.BuiltInCallable;
- return Q.BuiltInModule$("selector", H.setRuntimeTypeInfo([$.$get$_isSuperselector(), $.$get$_simpleSelectors(), $.$get$_parse(), $.$get$_nest(), $.$get$_append(), $.$get$_extend(), $.$get$_replace(), $.$get$_unify()], [t1]), null, null, t1);
- });
- _lazy($, "_nest", "$get$_nest", function() {
- return T._function0("nest", "$selectors...", new T.closure13());
- });
- _lazy($, "_append0", "$get$_append", function() {
- return T._function0("append", "$selectors...", new T.closure12());
- });
- _lazy($, "_extend", "$get$_extend", function() {
- return T._function0("extend", "$selector, $extendee, $extender", new T.closure11());
- });
- _lazy($, "_replace", "$get$_replace", function() {
- return T._function0("replace", "$selector, $original, $replacement", new T.closure10());
- });
- _lazy($, "_unify", "$get$_unify", function() {
- return T._function0("unify", "$selector1, $selector2", new T.closure9());
- });
- _lazy($, "_isSuperselector", "$get$_isSuperselector", function() {
- return T._function0("is-superselector", "$super, $sub", new T.closure16());
- });
- _lazy($, "_simpleSelectors", "$get$_simpleSelectors", function() {
- return T._function0("simple-selectors", "$selector", new T.closure15());
- });
- _lazy($, "_parse", "$get$_parse", function() {
- return T._function0("parse", "$selector", new T.closure14());
- });
- _lazy($, "_random0", "$get$_random", function() {
- return P.Random_Random();
- });
- _lazy($, "_previousUniqueId", "$get$_previousUniqueId", function() {
- return $.$get$_random().nextInt$1(H.intTypeCast(P.pow(36, 6)));
- });
- _lazy($, "global5", "$get$global5", function() {
- var t1 = Q.BuiltInCallable;
- return P.UnmodifiableListView$(H.setRuntimeTypeInfo([$.$get$_unquote(), $.$get$_quote(), $.$get$_toUpperCase(), $.$get$_toLowerCase(), $.$get$_uniqueId(), $.$get$_length().withName$1("str-length"), $.$get$_insert().withName$1("str-insert"), $.$get$_index().withName$1("str-index"), $.$get$_slice().withName$1("str-slice")], [t1]), t1);
- });
- _lazy($, "module4", "$get$module4", function() {
- var t1 = Q.BuiltInCallable;
- return Q.BuiltInModule$("string", H.setRuntimeTypeInfo([$.$get$_unquote(), $.$get$_quote(), $.$get$_toUpperCase(), $.$get$_toLowerCase(), $.$get$_length(), $.$get$_insert(), $.$get$_index(), $.$get$_slice(), $.$get$_uniqueId()], [t1]), null, null, t1);
- });
- _lazy($, "_unquote", "$get$_unquote", function() {
- return D._function("unquote", "$string", new D.closure8());
- });
- _lazy($, "_quote", "$get$_quote", function() {
- return D._function("quote", "$string", new D.closure7());
- });
- _lazy($, "_length0", "$get$_length", function() {
- return D._function("length", "$string", new D.closure3());
- });
- _lazy($, "_insert", "$get$_insert", function() {
- return D._function("insert", "$string, $insert, $index", new D.closure2());
- });
- _lazy($, "_index0", "$get$_index", function() {
- return D._function("index", "$string, $substring", new D.closure1());
- });
- _lazy($, "_slice", "$get$_slice", function() {
- return D._function("slice", "$string, $start-at, $end-at: -1", new D.closure0());
- });
- _lazy($, "_toUpperCase", "$get$_toUpperCase", function() {
- return D._function("to-upper-case", "$string", new D.closure6());
- });
- _lazy($, "_toLowerCase", "$get$_toLowerCase", function() {
- return D._function("to-lower-case", "$string", new D.closure5());
- });
- _lazy($, "_uniqueId", "$get$_uniqueId", function() {
- return D._function("unique-id", "", new D.closure4());
- });
- _lazy($, "stderr", "$get$stderr", function() {
- return new B.Stderr(self.process.stderr);
- });
- _lazy($, "Logger_quiet", "$get$Logger_quiet", function() {
- return new F._QuietLogger();
- });
- _lazy($, "_jsThrow", "$get$_jsThrow", function() {
- return new self.Function("error", "throw error;");
- });
- _lazy($, "_isUndefined", "$get$_isUndefined", function() {
- return new self.Function("value", "return value === undefined;");
- });
- _lazy($, "booleanConstructor", "$get$booleanConstructor", function() {
- return new Z.closure141().call$0();
- });
- _lazy($, "colorConstructor", "$get$colorConstructor", function() {
- return B.createClass("SassColor", new K.closure131(), P.LinkedHashMap_LinkedHashMap$_literal(["getR", new K.closure132(), "getG", new K.closure133(), "getB", new K.closure134(), "getA", new K.closure135(), "setR", new K.closure136(), "setG", new K.closure137(), "setB", new K.closure138(), "setA", new K.closure139(), "toString", new K.closure140()], P.String, P.Function));
- });
- _lazy($, "listConstructor", "$get$listConstructor", function() {
- return B.createClass("SassList", new D.closure124(), P.LinkedHashMap_LinkedHashMap$_literal(["getValue", new D.closure125(), "setValue", new D.closure126(), "getSeparator", new D.closure127(), "setSeparator", new D.closure128(), "getLength", new D.closure129(), "toString", new D.closure130()], P.String, P.Function));
- });
- _lazy($, "mapConstructor", "$get$mapConstructor", function() {
- return B.createClass("SassMap", new A.closure117(), P.LinkedHashMap_LinkedHashMap$_literal(["getKey", new A.closure118(), "getValue", new A.closure119(), "getLength", new A.closure120(), "setKey", new A.closure121(), "setValue", new A.closure122(), "toString", new A.closure123()], P.String, P.Function));
- });
- _lazy($, "nullConstructor", "$get$nullConstructor", function() {
- return new O.closure116().call$0();
- });
- _lazy($, "numberConstructor", "$get$numberConstructor", function() {
- return B.createClass("SassNumber", new T.closure110(), P.LinkedHashMap_LinkedHashMap$_literal(["getValue", new T.closure111(), "setValue", new T.closure112(), "getUnit", new T.closure113(), "setUnit", new T.closure114(), "toString", new T.closure115()], P.String, P.Function));
- });
- _lazy($, "stringConstructor", "$get$stringConstructor", function() {
- return B.createClass("SassString", new D.closure106(), P.LinkedHashMap_LinkedHashMap$_literal(["getValue", new D.closure107(), "setValue", new D.closure108(), "toString", new D.closure109()], P.String, P.Function));
- });
- _lazy($, "_disallowedFunctionNames", "$get$_disallowedFunctionNames", function() {
- var t1 = $.$get$globalFunctions();
- t1 = t1.map$1$1(t1, new Q.closure105(), P.String).toSet$0(0);
- t1.add$1(0, "if");
- t1.remove$1(0, "rgb");
- t1.remove$1(0, "rgba");
- t1.remove$1(0, "hsl");
- t1.remove$1(0, "hsla");
- t1.remove$1(0, "grayscale");
- t1.remove$1(0, "invert");
- t1.remove$1(0, "alpha");
- t1.remove$1(0, "opacity");
- t1.remove$1(0, "saturate");
- return t1;
- });
- _lazy($, "epsilon", "$get$epsilon", function() {
- return P.pow(10, -11);
- });
- _lazy($, "_inverseEpsilon", "$get$_inverseEpsilon", function() {
- return 1 / $.$get$epsilon();
- });
- _lazy($, "_noSourceUrl", "$get$_noSourceUrl", function() {
- return P.Uri_parse("-");
- });
- _lazy($, "_conversions", "$get$_conversions", function() {
- var t1 = P.String,
- t2 = P.num;
- return P.LinkedHashMap_LinkedHashMap$_literal(["in", P.LinkedHashMap_LinkedHashMap$_literal(["in", 1, "cm", 0.39370078740157477, "pc", 0.16666666666666666, "mm", 0.03937007874015748, "q", 0.00984251968503937, "pt", 0.013888888888888888, "px", 0.010416666666666666], t1, t2), "cm", P.LinkedHashMap_LinkedHashMap$_literal(["in", 2.54, "cm", 1, "pc", 0.42333333333333334, "mm", 0.1, "q", 0.025, "pt", 0.035277777777777776, "px", 0.026458333333333334], t1, t2), "pc", P.LinkedHashMap_LinkedHashMap$_literal(["in", 6, "cm", 2.3622047244094486, "pc", 1, "mm", 0.2362204724409449, "q", 0.05905511811023623, "pt", 0.08333333333333333, "px", 0.0625], t1, t2), "mm", P.LinkedHashMap_LinkedHashMap$_literal(["in", 25.4, "cm", 10, "pc", 4.233333333333333, "mm", 1, "q", 0.25, "pt", 0.35277777777777775, "px", 0.26458333333333334], t1, t2), "q", P.LinkedHashMap_LinkedHashMap$_literal(["in", 101.6, "cm", 40, "pc", 16.933333333333334, "mm", 4, "q", 1, "pt", 1.411111111111111, "px", 1.0583333333333333], t1, t2), "pt", P.LinkedHashMap_LinkedHashMap$_literal(["in", 72, "cm", 28.346456692913385, "pc", 12, "mm", 2.834645669291339, "q", 0.7086614173228347, "pt", 1, "px", 0.75], t1, t2), "px", P.LinkedHashMap_LinkedHashMap$_literal(["in", 96, "cm", 37.79527559055118, "pc", 16, "mm", 3.7795275590551185, "q", 0.9448818897637796, "pt", 1.3333333333333333, "px", 1], t1, t2), "deg", P.LinkedHashMap_LinkedHashMap$_literal(["deg", 1, "grad", 0.9, "rad", 57.29577951308232, "turn", 360], t1, t2), "grad", P.LinkedHashMap_LinkedHashMap$_literal(["deg", 1.1111111111111112, "grad", 1, "rad", 63.66197723675813, "turn", 400], t1, t2), "rad", P.LinkedHashMap_LinkedHashMap$_literal(["deg", 0.017453292519943295, "grad", 0.015707963267948967, "rad", 1, "turn", 6.283185307179586], t1, t2), "turn", P.LinkedHashMap_LinkedHashMap$_literal(["deg", 0.002777777777777778, "grad", 0.0025, "rad", 0.15915494309189535, "turn", 1], t1, t2), "s", P.LinkedHashMap_LinkedHashMap$_literal(["s", 1, "ms", 0.001], t1, t2), "ms", P.LinkedHashMap_LinkedHashMap$_literal(["s", 1000, "ms", 1], t1, t2), "Hz", P.LinkedHashMap_LinkedHashMap$_literal(["Hz", 1, "kHz", 1000], t1, t2), "kHz", P.LinkedHashMap_LinkedHashMap$_literal(["Hz", 0.001, "kHz", 1], t1, t2), "dpi", P.LinkedHashMap_LinkedHashMap$_literal(["dpi", 1, "dpcm", 2.54, "dppx", 96], t1, t2), "dpcm", P.LinkedHashMap_LinkedHashMap$_literal(["dpi", 0.39370078740157477, "dpcm", 1, "dppx", 37.79527559055118], t1, t2), "dppx", P.LinkedHashMap_LinkedHashMap$_literal(["dpi", 0.010416666666666666, "dpcm", 0.026458333333333334, "dppx", 1], t1, t2)], t1, [P.Map, P.String, P.num]);
- });
- _lazy($, "_emptyQuoted", "$get$_emptyQuoted", function() {
- return D.SassString$("", true);
- });
- _lazy($, "_emptyUnquoted", "$get$_emptyUnquoted", function() {
- return D.SassString$("", false);
- });
- _lazy($, "MAX_INT32", "$get$MAX_INT32", function() {
- return P.pow(2, 31) - 1;
- });
- _lazy($, "MIN_INT32", "$get$MIN_INT32", function() {
- return -P.pow(2, 31);
- });
- _lazy($, "_vmFrame", "$get$_vmFrame", function() {
- return P.RegExp_RegExp("^#\\d+\\s+(\\S.*) \\((.+?)((?::\\d+){0,2})\\)$", false);
- });
- _lazy($, "_v8Frame", "$get$_v8Frame", function() {
- return P.RegExp_RegExp("^\\s*at (?:(\\S.*?)(?: \\[as [^\\]]+\\])? \\((.*)\\)|(.*))$", false);
- });
- _lazy($, "_v8UrlLocation", "$get$_v8UrlLocation", function() {
- return P.RegExp_RegExp("^(.*):(\\d+):(\\d+)|native$", false);
- });
- _lazy($, "_v8EvalLocation", "$get$_v8EvalLocation", function() {
- return P.RegExp_RegExp("^eval at (?:\\S.*?) \\((.*)\\)(?:, .*?:\\d+:\\d+)?$", false);
- });
- _lazy($, "_firefoxSafariFrame", "$get$_firefoxSafariFrame", function() {
- return P.RegExp_RegExp("^(?:([^@(/]*)(?:\\(.*\\))?((?:/[^/]*)*)(?:\\(.*\\))?@)?(.*?):(\\d*)(?::(\\d*))?$", false);
- });
- _lazy($, "_friendlyFrame", "$get$_friendlyFrame", function() {
- return P.RegExp_RegExp("^(\\S+)(?: (\\d+)(?::(\\d+))?)?\\s+([^\\d].*)$", false);
- });
- _lazy($, "_asyncBody", "$get$_asyncBody", function() {
- return P.RegExp_RegExp("<(<anonymous closure>|[^>]+)_async_body>", false);
- });
- _lazy($, "_initialDot", "$get$_initialDot", function() {
- return P.RegExp_RegExp("^\\.", false);
- });
- _lazy($, "Frame__uriRegExp", "$get$Frame__uriRegExp", function() {
- return P.RegExp_RegExp("^[a-zA-Z][-+.a-zA-Z\\d]*://", false);
- });
- _lazy($, "Frame__windowsRegExp", "$get$Frame__windowsRegExp", function() {
- return P.RegExp_RegExp("^([a-zA-Z]:[\\\\/]|\\\\\\\\)", false);
- });
- _lazy($, "_terseRegExp", "$get$_terseRegExp", function() {
- return P.RegExp_RegExp("(-patch)?([/\\\\].*)?$", false);
- });
- _lazy($, "_v8Trace", "$get$_v8Trace", function() {
- return P.RegExp_RegExp("\\n ?at ", false);
- });
- _lazy($, "_v8TraceLine", "$get$_v8TraceLine", function() {
- return P.RegExp_RegExp(" ?at ", false);
- });
- _lazy($, "_firefoxSafariTrace", "$get$_firefoxSafariTrace", function() {
- return P.RegExp_RegExp("^(([.0-9A-Za-z_$/<]|\\(.*\\))*@)?[^\\s]*:\\d*$", true);
- });
- _lazy($, "_friendlyTrace", "$get$_friendlyTrace", function() {
- return P.RegExp_RegExp("^[^\\s<][^\\s]*( \\d+(:\\d+)?)?[ \\t]+[^\\s]+$", true);
- });
- _lazy($, "_newlineRegExp", "$get$_newlineRegExp", function() {
- return P.RegExp_RegExp("\\r\\n?|\\n", false);
- });
- })();
- (function nativeSupport() {
- !function() {
- var intern = function(s) {
- var o = {};
- o[s] = 1;
- return Object.keys(hunkHelpers.convertToFastObject(o))[0];
- };
- init.getIsolateTag = function(name) {
- return intern("___dart_" + name + init.isolateTag);
- };
- var tableProperty = "___dart_isolate_tags_";
- var usedProperties = Object[tableProperty] || (Object[tableProperty] = Object.create(null));
- var rootProperty = "_ZxYxX";
- for (var i = 0;; i++) {
- var property = intern(rootProperty + "_" + i + "_");
- if (!(property in usedProperties)) {
- usedProperties[property] = 1;
- init.isolateTag = property;
- break;
- }
- }
- init.dispatchPropertyName = init.getIsolateTag("dispatch_record");
- }();
- hunkHelpers.setOrUpdateInterceptorsByTag({ArrayBuffer: J.Interceptor, DataView: H.NativeTypedData, ArrayBufferView: H.NativeTypedData, Float32Array: H.NativeFloat32List, Float64Array: H.NativeFloat64List, Int16Array: H.NativeInt16List, Int32Array: H.NativeInt32List, Int8Array: H.NativeInt8List, Uint16Array: H.NativeUint16List, Uint32Array: H.NativeUint32List, Uint8ClampedArray: H.NativeUint8ClampedList, CanvasPixelArray: H.NativeUint8ClampedList, Uint8Array: H.NativeUint8List});
- hunkHelpers.setOrUpdateLeafTags({ArrayBuffer: true, DataView: true, ArrayBufferView: false, Float32Array: true, Float64Array: true, Int16Array: true, Int32Array: true, Int8Array: true, Uint16Array: true, Uint32Array: true, Uint8ClampedArray: true, CanvasPixelArray: true, Uint8Array: false});
- H.NativeTypedArray.$nativeSuperclassTag = "ArrayBufferView";
- H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView";
- H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView";
- H.NativeTypedArrayOfDouble.$nativeSuperclassTag = "ArrayBufferView";
- H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView";
- H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView";
- H.NativeTypedArrayOfInt.$nativeSuperclassTag = "ArrayBufferView";
- })();
- Function.prototype.call$1 = function(a) {
- return this(a);
- };
- Function.prototype.call$0 = function() {
- return this();
- };
- Function.prototype.call$2 = function(a, b) {
- return this(a, b);
- };
- Function.prototype.call$3 = function(a, b, c) {
- return this(a, b, c);
- };
- Function.prototype.call$4 = function(a, b, c, d) {
- return this(a, b, c, d);
- };
- Function.prototype.call$5 = function(a, b, c, d, e) {
- return this(a, b, c, d, e);
- };
- Function.prototype.call$1$1 = function(a) {
- return this(a);
- };
- Function.prototype.call$1$3 = function(a, b, c) {
- return this(a, b, c);
- };
- Function.prototype.call$2$2 = function(a, b) {
- return this(a, b);
- };
- Function.prototype.call$6 = function(a, b, c, d, e, f) {
- return this(a, b, c, d, e, f);
- };
- Function.prototype.call$1$0 = function() {
- return this();
- };
- convertAllToFastObject(holders);
- convertToFastObject($);
- (function(callback) {
- if (typeof document === "undefined") {
- callback(null);
- return;
- }
- if (typeof document.currentScript != 'undefined') {
- callback(document.currentScript);
- return;
- }
- var scripts = document.scripts;
- function onLoad(event) {
- for (var i = 0; i < scripts.length; ++i)
- scripts[i].removeEventListener("load", onLoad, false);
- callback(event.target);
- }
- for (var i = 0; i < scripts.length; ++i)
- scripts[i].addEventListener("load", onLoad, false);
- })(function(currentScript) {
- init.currentScript = currentScript;
- if (typeof dartMainRunner === "function")
- dartMainRunner(B.main0, []);
- else
- B.main0([]);
- });
-})();
diff --git a/assets/node_modules/sass/sass.js b/assets/node_modules/sass/sass.js
deleted file mode 100755
index 527dd84..0000000
--- a/assets/node_modules/sass/sass.js
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env node
-// Copyright 2016 Google Inc. Use of this source code is governed by an
-// MIT-style license that can be found in the LICENSE file or at
-// https://opensource.org/licenses/MIT.
-
-var index = require('./sass.dart.js');
-
-index.run_(process.argv.slice(2));
diff --git a/assets/node_modules/semver/CHANGELOG.md b/assets/node_modules/semver/CHANGELOG.md
deleted file mode 100644
index 66304fd..0000000
--- a/assets/node_modules/semver/CHANGELOG.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# changes log
-
-## 5.7
-
-* Add `minVersion` method
-
-## 5.6
-
-* Move boolean `loose` param to an options object, with
- backwards-compatibility protection.
-* Add ability to opt out of special prerelease version handling with
- the `includePrerelease` option flag.
-
-## 5.5
-
-* Add version coercion capabilities
-
-## 5.4
-
-* Add intersection checking
-
-## 5.3
-
-* Add `minSatisfying` method
-
-## 5.2
-
-* Add `prerelease(v)` that returns prerelease components
-
-## 5.1
-
-* Add Backus-Naur for ranges
-* Remove excessively cute inspection methods
-
-## 5.0
-
-* Remove AMD/Browserified build artifacts
-* Fix ltr and gtr when using the `*` range
-* Fix for range `*` with a prerelease identifier
diff --git a/assets/node_modules/semver/LICENSE b/assets/node_modules/semver/LICENSE
deleted file mode 100644
index 19129e3..0000000
--- a/assets/node_modules/semver/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-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/assets/node_modules/semver/README.md b/assets/node_modules/semver/README.md
deleted file mode 100644
index f8dfa5a..0000000
--- a/assets/node_modules/semver/README.md
+++ /dev/null
@@ -1,412 +0,0 @@
-semver(1) -- The semantic versioner for npm
-===========================================
-
-## Install
-
-```bash
-npm install --save 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)
-
-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 digit 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()`.
-* `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)`: 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 `Number.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
-components are invalid (`9999999999999999.4.7.4` is likely invalid).
diff --git a/assets/node_modules/semver/bin/semver b/assets/node_modules/semver/bin/semver
deleted file mode 100755
index 801e77f..0000000
--- a/assets/node_modules/semver/bin/semver
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/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 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 '-h': case '--help': case '-?':
- return help()
- default:
- versions.push(a)
- break
- }
- }
-
- var options = { loose: loose, includePrerelease: includePrerelease }
-
- versions = versions.map(function (v) {
- return coerce ? (semver.coerce(v) || { 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)',
- '',
- '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/assets/node_modules/semver/package.json b/assets/node_modules/semver/package.json
deleted file mode 100644
index 69d2db1..0000000
--- a/assets/node_modules/semver/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "semver",
- "version": "5.7.1",
- "description": "The semantic version parser used by npm.",
- "main": "semver.js",
- "scripts": {
- "test": "tap",
- "preversion": "npm test",
- "postversion": "npm publish",
- "postpublish": "git push origin --all; git push origin --tags"
- },
- "devDependencies": {
- "tap": "^13.0.0-rc.18"
- },
- "license": "ISC",
- "repository": "https://github.com/npm/node-semver",
- "bin": {
- "semver": "./bin/semver"
- },
- "files": [
- "bin",
- "range.bnf",
- "semver.js"
- ],
- "tap": {
- "check-coverage": true
- }
-}
diff --git a/assets/node_modules/semver/range.bnf b/assets/node_modules/semver/range.bnf
deleted file mode 100644
index d4c6ae0..0000000
--- a/assets/node_modules/semver/range.bnf
+++ /dev/null
@@ -1,16 +0,0 @@
-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/assets/node_modules/semver/semver.js b/assets/node_modules/semver/semver.js
deleted file mode 100644
index d315d5d..0000000
--- a/assets/node_modules/semver/semver.js
+++ /dev/null
@@ -1,1483 +0,0 @@
-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 R = 0
-
-// 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.
-
-var NUMERICIDENTIFIER = R++
-src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'
-var NUMERICIDENTIFIERLOOSE = R++
-src[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.
-
-var NONNUMERICIDENTIFIER = R++
-src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
-
-// ## Main Version
-// Three dot-separated numeric identifiers.
-
-var MAINVERSION = R++
-src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[NUMERICIDENTIFIER] + ')'
-
-var MAINVERSIONLOOSE = R++
-src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[NUMERICIDENTIFIERLOOSE] + ')'
-
-// ## Pre-release Version Identifier
-// A numeric identifier, or a non-numeric identifier.
-
-var PRERELEASEIDENTIFIER = R++
-src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +
- '|' + src[NONNUMERICIDENTIFIER] + ')'
-
-var PRERELEASEIDENTIFIERLOOSE = R++
-src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +
- '|' + src[NONNUMERICIDENTIFIER] + ')'
-
-// ## Pre-release Version
-// Hyphen, followed by one or more dot-separated pre-release version
-// identifiers.
-
-var PRERELEASE = R++
-src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +
- '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'
-
-var PRERELEASELOOSE = R++
-src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +
- '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'
-
-// ## Build Metadata Identifier
-// Any combination of digits, letters, or hyphens.
-
-var BUILDIDENTIFIER = R++
-src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
-
-// ## Build Metadata
-// Plus sign, followed by one or more period-separated build metadata
-// identifiers.
-
-var BUILD = R++
-src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] +
- '(?:\\.' + src[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.
-
-var FULL = R++
-var FULLPLAIN = 'v?' + src[MAINVERSION] +
- src[PRERELEASE] + '?' +
- src[BUILD] + '?'
-
-src[FULL] = '^' + 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.
-var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] +
- src[PRERELEASELOOSE] + '?' +
- src[BUILD] + '?'
-
-var LOOSE = R++
-src[LOOSE] = '^' + LOOSEPLAIN + '$'
-
-var GTLT = R++
-src[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.
-var XRANGEIDENTIFIERLOOSE = R++
-src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
-var XRANGEIDENTIFIER = R++
-src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'
-
-var XRANGEPLAIN = R++
-src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:' + src[PRERELEASE] + ')?' +
- src[BUILD] + '?' +
- ')?)?'
-
-var XRANGEPLAINLOOSE = R++
-src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:' + src[PRERELEASELOOSE] + ')?' +
- src[BUILD] + '?' +
- ')?)?'
-
-var XRANGE = R++
-src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'
-var XRANGELOOSE = R++
-src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'
-
-// Coercion.
-// Extract anything that could conceivably be a part of a valid semver
-var COERCE = R++
-src[COERCE] = '(?:^|[^\\d])' +
- '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
- '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
- '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
- '(?:$|[^\\d])'
-
-// Tilde ranges.
-// Meaning is "reasonably at or greater than"
-var LONETILDE = R++
-src[LONETILDE] = '(?:~>?)'
-
-var TILDETRIM = R++
-src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'
-re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')
-var tildeTrimReplace = '$1~'
-
-var TILDE = R++
-src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'
-var TILDELOOSE = R++
-src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'
-
-// Caret ranges.
-// Meaning is "at least and backwards compatible with"
-var LONECARET = R++
-src[LONECARET] = '(?:\\^)'
-
-var CARETTRIM = R++
-src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'
-re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')
-var caretTrimReplace = '$1^'
-
-var CARET = R++
-src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'
-var CARETLOOSE = R++
-src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'
-
-// A simple gt/lt/eq thing, or just "" to indicate "any version"
-var COMPARATORLOOSE = R++
-src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$'
-var COMPARATOR = R++
-src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$'
-
-// An expression to strip any whitespace between the gtlt and the thing
-// it modifies, so that `> 1.2.3` ==> `>1.2.3`
-var COMPARATORTRIM = R++
-src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] +
- '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'
-
-// this one has to use the /g flag
-re[COMPARATORTRIM] = new RegExp(src[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.
-var HYPHENRANGE = R++
-src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' +
- '\\s+-\\s+' +
- '(' + src[XRANGEPLAIN] + ')' +
- '\\s*$'
-
-var HYPHENRANGELOOSE = R++
-src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' +
- '\\s+-\\s+' +
- '(' + src[XRANGEPLAINLOOSE] + ')' +
- '\\s*$'
-
-// Star ranges basically just allow anything at all.
-var STAR = R++
-src[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[LOOSE] : re[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[LOOSE] : re[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)
-}
-
-// 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.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.compare(a, b, loose)
- })
-}
-
-exports.rsort = rsort
-function rsort (list, loose) {
- return list.sort(function (a, b) {
- return exports.rcompare(a, b, 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[COMPARATORLOOSE] : re[COMPARATOR]
- var m = comp.match(r)
-
- if (!m) {
- throw new TypeError('Invalid comparator: ' + comp)
- }
-
- this.operator = 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) {
- return true
- }
-
- if (typeof version === 'string') {
- version = new SemVer(version, this.options)
- }
-
- 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 === '') {
- rangeTmp = new Range(comp.value, options)
- return satisfies(this.value, rangeTmp, options)
- } else if (comp.operator === '') {
- 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[HYPHENRANGELOOSE] : re[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[COMPARATORTRIM], comparatorTrimReplace)
- debug('comparator trim', range, re[COMPARATORTRIM])
-
- // `~ 1.2.3` => `~1.2.3`
- range = range.replace(re[TILDETRIM], tildeTrimReplace)
-
- // `^ 1.2.3` => `^1.2.3`
- range = range.replace(re[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[COMPARATORLOOSE] : re[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 thisComparators.every(function (thisComparator) {
- return range.set.some(function (rangeComparators) {
- return rangeComparators.every(function (rangeComparator) {
- return thisComparator.intersects(rangeComparator, options)
- })
- })
- })
- })
-}
-
-// 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[TILDELOOSE] : re[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[CARETLOOSE] : re[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[XRANGELOOSE] : re[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 (xM) {
- if (gtlt === '>' || gtlt === '<') {
- // nothing is allowed
- ret = '<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
- } else if (xm) {
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
- } else if (xp) {
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
- }
-
- 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[STAR], '')
-}
-
-// This function is passed to string.replace(re[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') {
- version = new SemVer(version, this.options)
- }
-
- 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) {
- if (version instanceof SemVer) {
- return version
- }
-
- if (typeof version !== 'string') {
- return null
- }
-
- var match = version.match(re[COERCE])
-
- if (match == null) {
- return null
- }
-
- return parse(match[1] +
- '.' + (match[2] || '0') +
- '.' + (match[3] || '0'))
-}
diff --git a/assets/node_modules/signal-exit/CHANGELOG.md b/assets/node_modules/signal-exit/CHANGELOG.md
deleted file mode 100644
index e2f70d2..0000000
--- a/assets/node_modules/signal-exit/CHANGELOG.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-
-<a name="3.0.1"></a>
-## [3.0.1](https://github.com/tapjs/signal-exit/compare/v3.0.0...v3.0.1) (2016-09-08)
-
-
-### Bug Fixes
-
-* do not listen on SIGBUS, SIGFPE, SIGSEGV and SIGILL ([#40](https://github.com/tapjs/signal-exit/issues/40)) ([5b105fb](https://github.com/tapjs/signal-exit/commit/5b105fb))
-
-
-
-<a name="3.0.0"></a>
-# [3.0.0](https://github.com/tapjs/signal-exit/compare/v2.1.2...v3.0.0) (2016-06-13)
-
-
-### Bug Fixes
-
-* get our test suite running on Windows ([#23](https://github.com/tapjs/signal-exit/issues/23)) ([6f3eda8](https://github.com/tapjs/signal-exit/commit/6f3eda8))
-* hooking SIGPROF was interfering with profilers see [#21](https://github.com/tapjs/signal-exit/issues/21) ([#24](https://github.com/tapjs/signal-exit/issues/24)) ([1248a4c](https://github.com/tapjs/signal-exit/commit/1248a4c))
-
-
-### BREAKING CHANGES
-
-* signal-exit no longer wires into SIGPROF
diff --git a/assets/node_modules/signal-exit/LICENSE.txt b/assets/node_modules/signal-exit/LICENSE.txt
deleted file mode 100644
index eead04a..0000000
--- a/assets/node_modules/signal-exit/LICENSE.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-The ISC License
-
-Copyright (c) 2015, 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/assets/node_modules/signal-exit/README.md b/assets/node_modules/signal-exit/README.md
deleted file mode 100644
index 8ebccab..0000000
--- a/assets/node_modules/signal-exit/README.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# signal-exit
-
-[![Build Status](https://travis-ci.org/tapjs/signal-exit.png)](https://travis-ci.org/tapjs/signal-exit)
-[![Coverage](https://coveralls.io/repos/tapjs/signal-exit/badge.svg?branch=master)](https://coveralls.io/r/tapjs/signal-exit?branch=master)
-[![NPM version](https://img.shields.io/npm/v/signal-exit.svg)](https://www.npmjs.com/package/signal-exit)
-[![Windows Tests](https://img.shields.io/appveyor/ci/bcoe/signal-exit/master.svg?label=Windows%20Tests)](https://ci.appveyor.com/project/bcoe/signal-exit)
-[![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version)
-
-When you want to fire an event no matter how a process exits:
-
-* reaching the end of execution.
-* explicitly having `process.exit(code)` called.
-* having `process.kill(pid, sig)` called.
-* receiving a fatal signal from outside the process
-
-Use `signal-exit`.
-
-```js
-var onExit = require('signal-exit')
-
-onExit(function (code, signal) {
- console.log('process exited!')
-})
-```
-
-## API
-
-`var remove = onExit(function (code, signal) {}, options)`
-
-The return value of the function is a function that will remove the
-handler.
-
-Note that the function *only* fires for signals if the signal would
-cause the proces to exit. That is, there are no other listeners, and
-it is a fatal signal.
-
-## Options
-
-* `alwaysLast`: Run this handler after any other signal or exit
- handlers. This causes `process.emit` to be monkeypatched.
diff --git a/assets/node_modules/signal-exit/index.js b/assets/node_modules/signal-exit/index.js
deleted file mode 100644
index 337f691..0000000
--- a/assets/node_modules/signal-exit/index.js
+++ /dev/null
@@ -1,157 +0,0 @@
-// Note: since nyc uses this module to output coverage, any lines
-// that are in the direct sync flow of nyc's outputCoverage are
-// ignored, since we can never get coverage for them.
-var assert = require('assert')
-var signals = require('./signals.js')
-
-var EE = require('events')
-/* istanbul ignore if */
-if (typeof EE !== 'function') {
- EE = EE.EventEmitter
-}
-
-var emitter
-if (process.__signal_exit_emitter__) {
- emitter = process.__signal_exit_emitter__
-} else {
- emitter = process.__signal_exit_emitter__ = new EE()
- emitter.count = 0
- emitter.emitted = {}
-}
-
-// Because this emitter is a global, we have to check to see if a
-// previous version of this library failed to enable infinite listeners.
-// I know what you're about to say. But literally everything about
-// signal-exit is a compromise with evil. Get used to it.
-if (!emitter.infinite) {
- emitter.setMaxListeners(Infinity)
- emitter.infinite = true
-}
-
-module.exports = function (cb, opts) {
- assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler')
-
- if (loaded === false) {
- load()
- }
-
- var ev = 'exit'
- if (opts && opts.alwaysLast) {
- ev = 'afterexit'
- }
-
- var remove = function () {
- emitter.removeListener(ev, cb)
- if (emitter.listeners('exit').length === 0 &&
- emitter.listeners('afterexit').length === 0) {
- unload()
- }
- }
- emitter.on(ev, cb)
-
- return remove
-}
-
-module.exports.unload = unload
-function unload () {
- if (!loaded) {
- return
- }
- loaded = false
-
- signals.forEach(function (sig) {
- try {
- process.removeListener(sig, sigListeners[sig])
- } catch (er) {}
- })
- process.emit = originalProcessEmit
- process.reallyExit = originalProcessReallyExit
- emitter.count -= 1
-}
-
-function emit (event, code, signal) {
- if (emitter.emitted[event]) {
- return
- }
- emitter.emitted[event] = true
- emitter.emit(event, code, signal)
-}
-
-// { <signal>: <listener fn>, ... }
-var sigListeners = {}
-signals.forEach(function (sig) {
- sigListeners[sig] = function listener () {
- // If there are no other listeners, an exit is coming!
- // Simplest way: remove us and then re-send the signal.
- // We know that this will kill the process, so we can
- // safely emit now.
- var listeners = process.listeners(sig)
- if (listeners.length === emitter.count) {
- unload()
- emit('exit', null, sig)
- /* istanbul ignore next */
- emit('afterexit', null, sig)
- /* istanbul ignore next */
- process.kill(process.pid, sig)
- }
- }
-})
-
-module.exports.signals = function () {
- return signals
-}
-
-module.exports.load = load
-
-var loaded = false
-
-function load () {
- if (loaded) {
- return
- }
- loaded = true
-
- // This is the number of onSignalExit's that are in play.
- // It's important so that we can count the correct number of
- // listeners on signals, and don't wait for the other one to
- // handle it instead of us.
- emitter.count += 1
-
- signals = signals.filter(function (sig) {
- try {
- process.on(sig, sigListeners[sig])
- return true
- } catch (er) {
- return false
- }
- })
-
- process.emit = processEmit
- process.reallyExit = processReallyExit
-}
-
-var originalProcessReallyExit = process.reallyExit
-function processReallyExit (code) {
- process.exitCode = code || 0
- emit('exit', process.exitCode, null)
- /* istanbul ignore next */
- emit('afterexit', process.exitCode, null)
- /* istanbul ignore next */
- originalProcessReallyExit.call(process, process.exitCode)
-}
-
-var originalProcessEmit = process.emit
-function processEmit (ev, arg) {
- if (ev === 'exit') {
- if (arg !== undefined) {
- process.exitCode = arg
- }
- var ret = originalProcessEmit.apply(this, arguments)
- emit('exit', process.exitCode, null)
- /* istanbul ignore next */
- emit('afterexit', process.exitCode, null)
- return ret
- } else {
- return originalProcessEmit.apply(this, arguments)
- }
-}
diff --git a/assets/node_modules/signal-exit/package.json b/assets/node_modules/signal-exit/package.json
deleted file mode 100644
index 50364cc..0000000
--- a/assets/node_modules/signal-exit/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "signal-exit",
- "version": "3.0.2",
- "description": "when you want to fire an event no matter how a process exits.",
- "main": "index.js",
- "scripts": {
- "pretest": "standard",
- "test": "tap --timeout=240 ./test/*.js --cov",
- "coverage": "nyc report --reporter=text-lcov | coveralls",
- "release": "standard-version"
- },
- "files": [
- "index.js",
- "signals.js"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/tapjs/signal-exit.git"
- },
- "keywords": [
- "signal",
- "exit"
- ],
- "author": "Ben Coe <ben@npmjs.com>",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/tapjs/signal-exit/issues"
- },
- "homepage": "https://github.com/tapjs/signal-exit",
- "devDependencies": {
- "chai": "^3.5.0",
- "coveralls": "^2.11.10",
- "nyc": "^8.1.0",
- "standard": "^7.1.2",
- "standard-version": "^2.3.0",
- "tap": "^8.0.1"
- }
-}
diff --git a/assets/node_modules/signal-exit/signals.js b/assets/node_modules/signal-exit/signals.js
deleted file mode 100644
index 3bd67a8..0000000
--- a/assets/node_modules/signal-exit/signals.js
+++ /dev/null
@@ -1,53 +0,0 @@
-// This is not the set of all possible signals.
-//
-// It IS, however, the set of all signals that trigger
-// an exit on either Linux or BSD systems. Linux is a
-// superset of the signal names supported on BSD, and
-// the unknown signals just fail to register, so we can
-// catch that easily enough.
-//
-// Don't bother with SIGKILL. It's uncatchable, which
-// means that we can't fire any callbacks anyway.
-//
-// If a user does happen to register a handler on a non-
-// fatal signal like SIGWINCH or something, and then
-// exit, it'll end up firing `process.emit('exit')`, so
-// the handler will be fired anyway.
-//
-// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised
-// artificially, inherently leave the process in a
-// state from which it is not safe to try and enter JS
-// listeners.
-module.exports = [
- 'SIGABRT',
- 'SIGALRM',
- 'SIGHUP',
- 'SIGINT',
- 'SIGTERM'
-]
-
-if (process.platform !== 'win32') {
- module.exports.push(
- 'SIGVTALRM',
- 'SIGXCPU',
- 'SIGXFSZ',
- 'SIGUSR2',
- 'SIGTRAP',
- 'SIGSYS',
- 'SIGQUIT',
- 'SIGIOT'
- // should detect profiler and enable/disable accordingly.
- // see #21
- // 'SIGPROF'
- )
-}
-
-if (process.platform === 'linux') {
- module.exports.push(
- 'SIGIO',
- 'SIGPOLL',
- 'SIGPWR',
- 'SIGSTKFLT',
- 'SIGUNUSED'
- )
-}
diff --git a/assets/node_modules/slash/index.d.ts b/assets/node_modules/slash/index.d.ts
deleted file mode 100644
index f9d07d1..0000000
--- a/assets/node_modules/slash/index.d.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
-Convert Windows backslash paths to slash paths: `foo\\bar` ➔ `foo/bar`.
-
-[Forward-slash paths can be used in Windows](http://superuser.com/a/176395/6877) as long as they're not extended-length paths and don't contain any non-ascii characters.
-
-@param path - A Windows backslash path.
-@returns A path with forward slashes.
-
-@example
-```
-import * as path from 'path';
-import slash = require('slash');
-
-const string = path.join('foo', 'bar');
-// Unix => foo/bar
-// Windows => foo\\bar
-
-slash(string);
-// Unix => foo/bar
-// Windows => foo/bar
-```
-*/
-declare function slash(path: string): string;
-
-export = slash;
diff --git a/assets/node_modules/slash/index.js b/assets/node_modules/slash/index.js
deleted file mode 100644
index 103fbea..0000000
--- a/assets/node_modules/slash/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-module.exports = path => {
- const isExtendedLengthPath = /^\\\\\?\\/.test(path);
- const hasNonAscii = /[^\u0000-\u0080]+/.test(path); // eslint-disable-line no-control-regex
-
- if (isExtendedLengthPath || hasNonAscii) {
- return path;
- }
-
- return path.replace(/\\/g, '/');
-};
diff --git a/assets/node_modules/slash/license b/assets/node_modules/slash/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/slash/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/slash/package.json b/assets/node_modules/slash/package.json
deleted file mode 100644
index c88fcc7..0000000
--- a/assets/node_modules/slash/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "slash",
- "version": "3.0.0",
- "description": "Convert Windows backslash paths to slash paths",
- "license": "MIT",
- "repository": "sindresorhus/slash",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "path",
- "seperator",
- "slash",
- "backslash",
- "windows",
- "convert"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/slash/readme.md b/assets/node_modules/slash/readme.md
deleted file mode 100644
index f0ef4ac..0000000
--- a/assets/node_modules/slash/readme.md
+++ /dev/null
@@ -1,44 +0,0 @@
-# slash [![Build Status](https://travis-ci.org/sindresorhus/slash.svg?branch=master)](https://travis-ci.org/sindresorhus/slash)
-
-> Convert Windows backslash paths to slash paths: `foo\\bar` ➔ `foo/bar`
-
-[Forward-slash paths can be used in Windows](http://superuser.com/a/176395/6877) as long as they're not extended-length paths and don't contain any non-ascii characters.
-
-This was created since the `path` methods in Node.js outputs `\\` paths on Windows.
-
-
-## Install
-
-```
-$ npm install slash
-```
-
-
-## Usage
-
-```js
-const path = require('path');
-const slash = require('slash');
-
-const string = path.join('foo', 'bar');
-// Unix => foo/bar
-// Windows => foo\\bar
-
-slash(string);
-// Unix => foo/bar
-// Windows => foo/bar
-```
-
-
-## API
-
-### slash(path)
-
-Type: `string`
-
-Accepts a Windows backslash path and returns a path with forward slashes.
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/slice-ansi/index.js b/assets/node_modules/slice-ansi/index.js
deleted file mode 100755
index a8765e1..0000000
--- a/assets/node_modules/slice-ansi/index.js
+++ /dev/null
@@ -1,59 +0,0 @@
-'use strict';
-const isFullwidthCodePoint = require('is-fullwidth-code-point');
-const astralRegex = require('astral-regex');
-const ansiStyles = require('ansi-styles');
-
-const ESCAPES = [
- '\u001B',
- '\u009B'
-];
-
-const END_CODE = 39;
-
-const wrapAnsi = code => `${ESCAPES[0]}[${code}m`;
-
-module.exports = (str, begin, end) => {
- const arr = [...str.normalize()];
-
- end = typeof end === 'number' ? end : arr.length;
-
- let insideEscape = false;
- let escapeCode = null;
- let visible = 0;
- let output = '';
-
- for (const [i, x] of arr.entries()) {
- let leftEscape = false;
-
- if (ESCAPES.includes(x)) {
- insideEscape = true;
- const code = /\d[^m]*/.exec(str.slice(i, i + 18));
- escapeCode = code === END_CODE ? null : code;
- } else if (insideEscape && x === 'm') {
- insideEscape = false;
- leftEscape = true;
- }
-
- if (!insideEscape && !leftEscape) {
- ++visible;
- }
-
- if (!astralRegex({exact: true}).test(x) && isFullwidthCodePoint(x.codePointAt())) {
- ++visible;
- }
-
- if (visible > begin && visible <= end) {
- output += x;
- } else if (visible === begin && !insideEscape && escapeCode !== null && escapeCode !== END_CODE) {
- output += wrapAnsi(escapeCode);
- } else if (visible >= end) {
- if (escapeCode !== null) {
- output += wrapAnsi(ansiStyles.codes.get(parseInt(escapeCode, 10)) || END_CODE);
- }
-
- break;
- }
- }
-
- return output;
-};
diff --git a/assets/node_modules/slice-ansi/license b/assets/node_modules/slice-ansi/license
deleted file mode 100644
index 4d72633..0000000
--- a/assets/node_modules/slice-ansi/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) DC <threedeecee@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/assets/node_modules/slice-ansi/package.json b/assets/node_modules/slice-ansi/package.json
deleted file mode 100644
index 20dcc68..0000000
--- a/assets/node_modules/slice-ansi/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "name": "slice-ansi",
- "version": "2.1.0",
- "description": "Slice a string with ANSI escape codes",
- "license": "MIT",
- "repository": "chalk/slice-ansi",
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "slice",
- "string",
- "ansi",
- "styles",
- "color",
- "colour",
- "colors",
- "terminal",
- "console",
- "cli",
- "tty",
- "escape",
- "formatting",
- "rgb",
- "256",
- "shell",
- "xterm",
- "log",
- "logging",
- "command-line",
- "text"
- ],
- "dependencies": {
- "ansi-styles": "^3.2.0",
- "astral-regex": "^1.0.0",
- "is-fullwidth-code-point": "^2.0.0"
- },
- "devDependencies": {
- "ava": "^1.1.0",
- "chalk": "^2.4.2",
- "random-item": "^1.0.0",
- "strip-ansi": "^5.0.0",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/slice-ansi/readme.md b/assets/node_modules/slice-ansi/readme.md
deleted file mode 100644
index 7e9243e..0000000
--- a/assets/node_modules/slice-ansi/readme.md
+++ /dev/null
@@ -1,64 +0,0 @@
-# slice-ansi [![Build Status](https://travis-ci.org/chalk/slice-ansi.svg?branch=master)](https://travis-ci.org/chalk/slice-ansi) [![XO: Linted](https://img.shields.io/badge/xo-linted-blue.svg)](https://github.com/xojs/xo)
-
-> Slice a string with [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles)
-
-
-## Install
-
-```
-$ npm install slice-ansi
-```
-
-
-## Usage
-
-```js
-const chalk = require('chalk');
-const sliceAnsi = require('slice-ansi');
-
-const input = 'The quick brown ' + chalk.red('fox jumped over ') +
- 'the lazy ' + chalk.green('dog and then ran away with the unicorn.');
-
-console.log(sliceAnsi(input, 20, 30));
-```
-
-
-## API
-
-### sliceAnsi(input, beginSlice, [endSlice])
-
-#### input
-
-Type: `string`
-
-String with ANSI escape codes. Like one styled by [`chalk`](https://github.com/chalk/chalk).
-
-#### beginSlice
-
-Type: `number`
-
-Zero-based index at which to begin the slice.
-
-#### endSlice
-
-Type: `number`
-
-Zero-based index at which to end the slice.
-
-
-## Related
-
-- [wrap-ansi](https://github.com/chalk/wrap-ansi) - Wordwrap a string with ANSI escape codes
-- [cli-truncate](https://github.com/sindresorhus/cli-truncate) - Truncate a string to a specific width in the terminal
-- [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/assets/node_modules/source-map/CHANGELOG.md b/assets/node_modules/source-map/CHANGELOG.md
deleted file mode 100644
index 3a8c066..0000000
--- a/assets/node_modules/source-map/CHANGELOG.md
+++ /dev/null
@@ -1,301 +0,0 @@
-# Change Log
-
-## 0.5.6
-
-* Fix for regression when people were using numbers as names in source maps. See
- #236.
-
-## 0.5.5
-
-* Fix "regression" of unsupported, implementation behavior that half the world
- happens to have come to depend on. See #235.
-
-* Fix regression involving function hoisting in SpiderMonkey. See #233.
-
-## 0.5.4
-
-* Large performance improvements to source-map serialization. See #228 and #229.
-
-## 0.5.3
-
-* Do not include unnecessary distribution files. See
- commit ef7006f8d1647e0a83fdc60f04f5a7ca54886f86.
-
-## 0.5.2
-
-* Include browser distributions of the library in package.json's `files`. See
- issue #212.
-
-## 0.5.1
-
-* Fix latent bugs in IndexedSourceMapConsumer.prototype._parseMappings. See
- ff05274becc9e6e1295ed60f3ea090d31d843379.
-
-## 0.5.0
-
-* Node 0.8 is no longer supported.
-
-* Use webpack instead of dryice for bundling.
-
-* Big speedups serializing source maps. See pull request #203.
-
-* Fix a bug with `SourceMapConsumer.prototype.sourceContentFor` and sources that
- explicitly start with the source root. See issue #199.
-
-## 0.4.4
-
-* Fix an issue where using a `SourceMapGenerator` after having created a
- `SourceMapConsumer` from it via `SourceMapConsumer.fromSourceMap` failed. See
- issue #191.
-
-* Fix an issue with where `SourceMapGenerator` would mistakenly consider
- different mappings as duplicates of each other and avoid generating them. See
- issue #192.
-
-## 0.4.3
-
-* A very large number of performance improvements, particularly when parsing
- source maps. Collectively about 75% of time shaved off of the source map
- parsing benchmark!
-
-* Fix a bug in `SourceMapConsumer.prototype.allGeneratedPositionsFor` and fuzzy
- searching in the presence of a column option. See issue #177.
-
-* Fix a bug with joining a source and its source root when the source is above
- the root. See issue #182.
-
-* Add the `SourceMapConsumer.prototype.hasContentsOfAllSources` method to
- determine when all sources' contents are inlined into the source map. See
- issue #190.
-
-## 0.4.2
-
-* Add an `.npmignore` file so that the benchmarks aren't pulled down by
- dependent projects. Issue #169.
-
-* Add an optional `column` argument to
- `SourceMapConsumer.prototype.allGeneratedPositionsFor` and better handle lines
- with no mappings. Issues #172 and #173.
-
-## 0.4.1
-
-* Fix accidentally defining a global variable. #170.
-
-## 0.4.0
-
-* The default direction for fuzzy searching was changed back to its original
- direction. See #164.
-
-* There is now a `bias` option you can supply to `SourceMapConsumer` to control
- the fuzzy searching direction. See #167.
-
-* About an 8% speed up in parsing source maps. See #159.
-
-* Added a benchmark for parsing and generating source maps.
-
-## 0.3.0
-
-* Change the default direction that searching for positions fuzzes when there is
- not an exact match. See #154.
-
-* Support for environments using json2.js for JSON serialization. See #156.
-
-## 0.2.0
-
-* Support for consuming "indexed" source maps which do not have any remote
- sections. See pull request #127. This introduces a minor backwards
- incompatibility if you are monkey patching `SourceMapConsumer.prototype`
- methods.
-
-## 0.1.43
-
-* Performance improvements for `SourceMapGenerator` and `SourceNode`. See issue
- #148 for some discussion and issues #150, #151, and #152 for implementations.
-
-## 0.1.42
-
-* Fix an issue where `SourceNode`s from different versions of the source-map
- library couldn't be used in conjunction with each other. See issue #142.
-
-## 0.1.41
-
-* Fix a bug with getting the source content of relative sources with a "./"
- prefix. See issue #145 and [Bug 1090768](bugzil.la/1090768).
-
-* Add the `SourceMapConsumer.prototype.computeColumnSpans` method to compute the
- column span of each mapping.
-
-* Add the `SourceMapConsumer.prototype.allGeneratedPositionsFor` method to find
- all generated positions associated with a given original source and line.
-
-## 0.1.40
-
-* Performance improvements for parsing source maps in SourceMapConsumer.
-
-## 0.1.39
-
-* Fix a bug where setting a source's contents to null before any source content
- had been set before threw a TypeError. See issue #131.
-
-## 0.1.38
-
-* Fix a bug where finding relative paths from an empty path were creating
- absolute paths. See issue #129.
-
-## 0.1.37
-
-* Fix a bug where if the source root was an empty string, relative source paths
- would turn into absolute source paths. Issue #124.
-
-## 0.1.36
-
-* Allow the `names` mapping property to be an empty string. Issue #121.
-
-## 0.1.35
-
-* A third optional parameter was added to `SourceNode.fromStringWithSourceMap`
- to specify a path that relative sources in the second parameter should be
- relative to. Issue #105.
-
-* If no file property is given to a `SourceMapGenerator`, then the resulting
- source map will no longer have a `null` file property. The property will
- simply not exist. Issue #104.
-
-* Fixed a bug where consecutive newlines were ignored in `SourceNode`s.
- Issue #116.
-
-## 0.1.34
-
-* Make `SourceNode` work with windows style ("\r\n") newlines. Issue #103.
-
-* Fix bug involving source contents and the
- `SourceMapGenerator.prototype.applySourceMap`. Issue #100.
-
-## 0.1.33
-
-* Fix some edge cases surrounding path joining and URL resolution.
-
-* Add a third parameter for relative path to
- `SourceMapGenerator.prototype.applySourceMap`.
-
-* Fix issues with mappings and EOLs.
-
-## 0.1.32
-
-* Fixed a bug where SourceMapConsumer couldn't handle negative relative columns
- (issue 92).
-
-* Fixed test runner to actually report number of failed tests as its process
- exit code.
-
-* Fixed a typo when reporting bad mappings (issue 87).
-
-## 0.1.31
-
-* Delay parsing the mappings in SourceMapConsumer until queried for a source
- location.
-
-* Support Sass source maps (which at the time of writing deviate from the spec
- in small ways) in SourceMapConsumer.
-
-## 0.1.30
-
-* Do not join source root with a source, when the source is a data URI.
-
-* Extend the test runner to allow running single specific test files at a time.
-
-* Performance improvements in `SourceNode.prototype.walk` and
- `SourceMapConsumer.prototype.eachMapping`.
-
-* Source map browser builds will now work inside Workers.
-
-* Better error messages when attempting to add an invalid mapping to a
- `SourceMapGenerator`.
-
-## 0.1.29
-
-* Allow duplicate entries in the `names` and `sources` arrays of source maps
- (usually from TypeScript) we are parsing. Fixes github issue 72.
-
-## 0.1.28
-
-* Skip duplicate mappings when creating source maps from SourceNode; github
- issue 75.
-
-## 0.1.27
-
-* Don't throw an error when the `file` property is missing in SourceMapConsumer,
- we don't use it anyway.
-
-## 0.1.26
-
-* Fix SourceNode.fromStringWithSourceMap for empty maps. Fixes github issue 70.
-
-## 0.1.25
-
-* Make compatible with browserify
-
-## 0.1.24
-
-* Fix issue with absolute paths and `file://` URIs. See
- https://bugzilla.mozilla.org/show_bug.cgi?id=885597
-
-## 0.1.23
-
-* Fix issue with absolute paths and sourcesContent, github issue 64.
-
-## 0.1.22
-
-* Ignore duplicate mappings in SourceMapGenerator. Fixes github issue 21.
-
-## 0.1.21
-
-* Fixed handling of sources that start with a slash so that they are relative to
- the source root's host.
-
-## 0.1.20
-
-* Fixed github issue #43: absolute URLs aren't joined with the source root
- anymore.
-
-## 0.1.19
-
-* Using Travis CI to run tests.
-
-## 0.1.18
-
-* Fixed a bug in the handling of sourceRoot.
-
-## 0.1.17
-
-* Added SourceNode.fromStringWithSourceMap.
-
-## 0.1.16
-
-* Added missing documentation.
-
-* Fixed the generating of empty mappings in SourceNode.
-
-## 0.1.15
-
-* Added SourceMapGenerator.applySourceMap.
-
-## 0.1.14
-
-* The sourceRoot is now handled consistently.
-
-## 0.1.13
-
-* Added SourceMapGenerator.fromSourceMap.
-
-## 0.1.12
-
-* SourceNode now generates empty mappings too.
-
-## 0.1.11
-
-* Added name support to SourceNode.
-
-## 0.1.10
-
-* Added sourcesContent support to the customer and generator.
diff --git a/assets/node_modules/source-map/LICENSE b/assets/node_modules/source-map/LICENSE
deleted file mode 100644
index ed1b7cf..0000000
--- a/assets/node_modules/source-map/LICENSE
+++ /dev/null
@@ -1,28 +0,0 @@
-
-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/assets/node_modules/source-map/README.md b/assets/node_modules/source-map/README.md
deleted file mode 100644
index 3281339..0000000
--- a/assets/node_modules/source-map/README.md
+++ /dev/null
@@ -1,729 +0,0 @@
-# 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/assets/node_modules/source-map/dist/source-map.debug.js b/assets/node_modules/source-map/dist/source-map.debug.js
deleted file mode 100644
index b5ab638..0000000
--- a/assets/node_modules/source-map/dist/source-map.debug.js
+++ /dev/null
@@ -1,3091 +0,0 @@
-(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/assets/node_modules/source-map/dist/source-map.js b/assets/node_modules/source-map/dist/source-map.js
deleted file mode 100644
index 4e630e2..0000000
--- a/assets/node_modules/source-map/dist/source-map.js
+++ /dev/null
@@ -1,3090 +0,0 @@
-(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/assets/node_modules/source-map/dist/source-map.min.js b/assets/node_modules/source-map/dist/source-map.min.js
deleted file mode 100644
index f2a46bd..0000000
--- a/assets/node_modules/source-map/dist/source-map.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-!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/assets/node_modules/source-map/dist/source-map.min.js.map b/assets/node_modules/source-map/dist/source-map.min.js.map
deleted file mode 100644
index 588b70c..0000000
--- a/assets/node_modules/source-map/dist/source-map.min.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///source-map.min.js","webpack:///webpack/bootstrap 42c329f865e32e011afb","webpack:///./source-map.js","webpack:///./lib/source-map-generator.js","webpack:///./lib/base64-vlq.js","webpack:///./lib/base64.js","webpack:///./lib/util.js","webpack:///./lib/array-set.js","webpack:///./lib/mapping-list.js","webpack:///./lib/source-map-consumer.js","webpack:///./lib/binary-search.js","webpack:///./lib/quick-sort.js","webpack:///./lib/source-node.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","SourceMapGenerator","SourceMapConsumer","SourceNode","aArgs","_file","util","getArg","_sourceRoot","_skipValidation","_sources","ArraySet","_names","_mappings","MappingList","_sourcesContents","base64VLQ","prototype","_version","fromSourceMap","aSourceMapConsumer","sourceRoot","generator","file","eachMapping","mapping","newMapping","generated","line","generatedLine","column","generatedColumn","source","relative","original","originalLine","originalColumn","name","addMapping","sources","forEach","sourceFile","content","sourceContentFor","setSourceContent","_validateMapping","String","has","add","aSourceFile","aSourceContent","Object","create","toSetString","keys","length","applySourceMap","aSourceMapPath","Error","newSources","newNames","unsortedForEach","originalPositionFor","join","aGenerated","aOriginal","aSource","aName","JSON","stringify","_serializeMappings","next","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","result","mappings","toArray","i","len","compareByGeneratedPositionsInflated","encode","indexOf","_generateSourcesContent","aSources","aSourceRoot","map","key","hasOwnProperty","toJSON","version","names","sourcesContent","toString","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","base64","VLQ_BASE_SHIFT","VLQ_BASE","VLQ_BASE_MASK","VLQ_CONTINUATION_BIT","digit","encoded","vlq","decode","aStr","aIndex","aOutParam","continuation","strLen","shift","charCodeAt","charAt","value","rest","intToCharMap","split","number","TypeError","charCode","bigA","bigZ","littleA","littleZ","zero","nine","plus","slash","littleOffset","numberOffset","aDefaultValue","arguments","urlParse","aUrl","match","urlRegexp","scheme","auth","host","port","path","urlGenerate","aParsedUrl","url","normalize","aPath","part","isAbsolute","parts","up","splice","aRoot","aPathUrl","aRootUrl","dataUrlRegexp","joined","replace","level","index","lastIndexOf","slice","Array","substr","identity","s","isProtoString","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","compareByGeneratedPositionsDeflated","onlyCompareGenerated","strcmp","aStr1","aStr2","supportsNullProto","obj","_array","_set","hasNativeMap","Map","fromArray","aArray","aAllowDuplicates","set","size","getOwnPropertyNames","sStr","isDuplicate","idx","push","get","at","aIdx","generatedPositionAfter","lineA","lineB","columnA","columnB","_sorted","_last","aCallback","aThisArg","aMapping","sort","aSourceMap","sourceMap","parse","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","Mapping","lastOffset","_sections","offset","offsetLine","offsetColumn","generatedOffset","consumer","binarySearch","quickSort","__generatedMappings","defineProperty","_parseMappings","__originalMappings","_charIsMappingSeparator","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","context","order","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findMapping","undefined","lastColumn","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","str","segment","end","cachedSegments","temp","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","search","computeColumnSpans","nextMapping","lastGeneratedColumn","Infinity","hasContentsOfAllSources","some","sc","nullOnMissing","fileUriAbsPath","generatedPositionFor","constructor","j","sectionIndex","section","bias","every","generatedPosition","ret","sectionMappings","adjustedMapping","recursiveSearch","aLow","aHigh","aHaystack","aCompare","mid","Math","floor","swap","ary","x","y","randomIntInRange","low","high","round","random","doQuickSort","comparator","r","pivotIndex","pivot","q","aLine","aColumn","aChunks","children","sourceContents","isSourceNode","REGEX_NEWLINE","NEWLINE_CODE","fromStringWithSourceMap","aGeneratedCode","aRelativePath","addMappingWithCode","code","node","remainingLines","remainingLinesIndex","shiftNextLine","getNextLine","lineContents","newLine","lastGeneratedLine","lastMapping","nextLine","aChunk","isArray","chunk","prepend","unshift","walk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","walkSourceContents","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent"],"mappings":"CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,IACA,kBAAAG,gBAAAC,IACAD,UAAAH,GACA,gBAAAC,SACAA,QAAA,UAAAD,IAEAD,EAAA,UAAAC,KACCK,KAAA,WACD,MCAgB,UAAUC,GCN1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAP,OAGA,IAAAC,GAAAO,EAAAD,IACAP,WACAS,GAAAF,EACAG,QAAA,EAUA,OANAL,GAAAE,GAAAI,KAAAV,EAAAD,QAAAC,IAAAD,QAAAM,GAGAL,EAAAS,QAAA,EAGAT,EAAAD,QAvBA,GAAAQ,KAqCA,OATAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAQ,EAAA,GAGAR,EAAA,KDgBM,SAAUL,EAAQD,EAASM,GEjDjCN,EAAAe,mBAAAT,EAAA,GAAAS,mBACAf,EAAAgB,kBAAAV,EAAA,GAAAU,kBACAhB,EAAAiB,WAAAX,EAAA,IAAAW,YF6DM,SAAUhB,EAAQD,EAASM,GGhDjC,QAAAS,GAAAG,GACAA,IACAA,MAEAd,KAAAe,MAAAC,EAAAC,OAAAH,EAAA,aACAd,KAAAkB,YAAAF,EAAAC,OAAAH,EAAA,mBACAd,KAAAmB,gBAAAH,EAAAC,OAAAH,EAAA,qBACAd,KAAAoB,SAAA,GAAAC,GACArB,KAAAsB,OAAA,GAAAD,GACArB,KAAAuB,UAAA,GAAAC,GACAxB,KAAAyB,iBAAA,KAvBA,GAAAC,GAAAxB,EAAA,GACAc,EAAAd,EAAA,GACAmB,EAAAnB,EAAA,GAAAmB,SACAG,EAAAtB,EAAA,GAAAsB,WAuBAb,GAAAgB,UAAAC,SAAA,EAOAjB,EAAAkB,cACA,SAAAC,GACA,GAAAC,GAAAD,EAAAC,WACAC,EAAA,GAAArB,IACAsB,KAAAH,EAAAG,KACAF,cAkCA,OAhCAD,GAAAI,YAAA,SAAAC,GACA,GAAAC,IACAC,WACAC,KAAAH,EAAAI,cACAC,OAAAL,EAAAM,iBAIA,OAAAN,EAAAO,SACAN,EAAAM,OAAAP,EAAAO,OACA,MAAAX,IACAK,EAAAM,OAAA1B,EAAA2B,SAAAZ,EAAAK,EAAAM,SAGAN,EAAAQ,UACAN,KAAAH,EAAAU,aACAL,OAAAL,EAAAW,gBAGA,MAAAX,EAAAY,OACAX,EAAAW,KAAAZ,EAAAY,OAIAf,EAAAgB,WAAAZ,KAEAN,EAAAmB,QAAAC,QAAA,SAAAC,GACA,GAAAC,GAAAtB,EAAAuB,iBAAAF,EACA,OAAAC,GACApB,EAAAsB,iBAAAH,EAAAC,KAGApB,GAaArB,EAAAgB,UAAAqB,WACA,SAAAlC,GACA,GAAAuB,GAAArB,EAAAC,OAAAH,EAAA,aACA8B,EAAA5B,EAAAC,OAAAH,EAAA,iBACA4B,EAAA1B,EAAAC,OAAAH,EAAA,eACAiC,EAAA/B,EAAAC,OAAAH,EAAA,YAEAd,MAAAmB,iBACAnB,KAAAuD,iBAAAlB,EAAAO,EAAAF,EAAAK,GAGA,MAAAL,IACAA,EAAAc,OAAAd,GACA1C,KAAAoB,SAAAqC,IAAAf,IACA1C,KAAAoB,SAAAsC,IAAAhB,IAIA,MAAAK,IACAA,EAAAS,OAAAT,GACA/C,KAAAsB,OAAAmC,IAAAV,IACA/C,KAAAsB,OAAAoC,IAAAX,IAIA/C,KAAAuB,UAAAmC,KACAnB,cAAAF,EAAAC,KACAG,gBAAAJ,EAAAG,OACAK,aAAA,MAAAD,KAAAN,KACAQ,eAAA,MAAAF,KAAAJ,OACAE,SACAK,UAOApC,EAAAgB,UAAA2B,iBACA,SAAAK,EAAAC,GACA,GAAAlB,GAAAiB,CACA,OAAA3D,KAAAkB,cACAwB,EAAA1B,EAAA2B,SAAA3C,KAAAkB,YAAAwB,IAGA,MAAAkB,GAGA5D,KAAAyB,mBACAzB,KAAAyB,iBAAAoC,OAAAC,OAAA,OAEA9D,KAAAyB,iBAAAT,EAAA+C,YAAArB,IAAAkB,GACK5D,KAAAyB,yBAGLzB,MAAAyB,iBAAAT,EAAA+C,YAAArB,IACA,IAAAmB,OAAAG,KAAAhE,KAAAyB,kBAAAwC,SACAjE,KAAAyB,iBAAA,QAqBAd,EAAAgB,UAAAuC,eACA,SAAApC,EAAA6B,EAAAQ,GACA,GAAAhB,GAAAQ,CAEA,UAAAA,EAAA,CACA,SAAA7B,EAAAG,KACA,SAAAmC,OACA,gJAIAjB,GAAArB,EAAAG,KAEA,GAAAF,GAAA/B,KAAAkB,WAEA,OAAAa,IACAoB,EAAAnC,EAAA2B,SAAAZ,EAAAoB,GAIA,IAAAkB,GAAA,GAAAhD,GACAiD,EAAA,GAAAjD,EAGArB,MAAAuB,UAAAgD,gBAAA,SAAApC,GACA,GAAAA,EAAAO,SAAAS,GAAA,MAAAhB,EAAAU,aAAA,CAEA,GAAAD,GAAAd,EAAA0C,qBACAlC,KAAAH,EAAAU,aACAL,OAAAL,EAAAW,gBAEA,OAAAF,EAAAF,SAEAP,EAAAO,OAAAE,EAAAF,OACA,MAAAyB,IACAhC,EAAAO,OAAA1B,EAAAyD,KAAAN,EAAAhC,EAAAO,SAEA,MAAAX,IACAI,EAAAO,OAAA1B,EAAA2B,SAAAZ,EAAAI,EAAAO,SAEAP,EAAAU,aAAAD,EAAAN,KACAH,EAAAW,eAAAF,EAAAJ,OACA,MAAAI,EAAAG,OACAZ,EAAAY,KAAAH,EAAAG,OAKA,GAAAL,GAAAP,EAAAO,MACA,OAAAA,GAAA2B,EAAAZ,IAAAf,IACA2B,EAAAX,IAAAhB,EAGA,IAAAK,GAAAZ,EAAAY,IACA,OAAAA,GAAAuB,EAAAb,IAAAV,IACAuB,EAAAZ,IAAAX,IAGK/C,MACLA,KAAAoB,SAAAiD,EACArE,KAAAsB,OAAAgD,EAGAxC,EAAAmB,QAAAC,QAAA,SAAAC,GACA,GAAAC,GAAAtB,EAAAuB,iBAAAF,EACA,OAAAC,IACA,MAAAe,IACAhB,EAAAnC,EAAAyD,KAAAN,EAAAhB,IAEA,MAAApB,IACAoB,EAAAnC,EAAA2B,SAAAZ,EAAAoB,IAEAnD,KAAAsD,iBAAAH,EAAAC,KAEKpD,OAcLW,EAAAgB,UAAA4B,iBACA,SAAAmB,EAAAC,EAAAC,EACAC,GAKA,GAAAF,GAAA,gBAAAA,GAAArC,MAAA,gBAAAqC,GAAAnC,OACA,SAAA4B,OACA,+OAMA,OAAAM,GAAA,QAAAA,IAAA,UAAAA,IACAA,EAAApC,KAAA,GAAAoC,EAAAlC,QAAA,IACAmC,GAAAC,GAAAC,MAIAH,GAAA,QAAAA,IAAA,UAAAA,IACAC,GAAA,QAAAA,IAAA,UAAAA,IACAD,EAAApC,KAAA,GAAAoC,EAAAlC,QAAA,GACAmC,EAAArC,KAAA,GAAAqC,EAAAnC,QAAA,GACAoC,GAKA,SAAAR,OAAA,oBAAAU,KAAAC,WACA1C,UAAAqC,EACAhC,OAAAkC,EACAhC,SAAA+B,EACA5B,KAAA8B,MASAlE,EAAAgB,UAAAqD,mBACA,WAcA,OANAC,GACA9C,EACA+C,EACAC,EAVAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,GAMAC,EAAA3F,KAAAuB,UAAAqE,UACAC,EAAA,EAAAC,EAAAH,EAAA1B,OAA0C4B,EAAAC,EAASD,IAAA,CAInD,GAHA1D,EAAAwD,EAAAE,GACAZ,EAAA,GAEA9C,EAAAI,gBAAA8C,EAEA,IADAD,EAAA,EACAjD,EAAAI,gBAAA8C,GACAJ,GAAA,IACAI,QAIA,IAAAQ,EAAA,GACA,IAAA7E,EAAA+E,oCAAA5D,EAAAwD,EAAAE,EAAA,IACA,QAEAZ,IAAA,IAIAA,GAAAvD,EAAAsE,OAAA7D,EAAAM,gBACA2C,GACAA,EAAAjD,EAAAM,gBAEA,MAAAN,EAAAO,SACAyC,EAAAnF,KAAAoB,SAAA6E,QAAA9D,EAAAO,QACAuC,GAAAvD,EAAAsE,OAAAb,EAAAM,GACAA,EAAAN,EAGAF,GAAAvD,EAAAsE,OAAA7D,EAAAU,aAAA,EACA0C,GACAA,EAAApD,EAAAU,aAAA,EAEAoC,GAAAvD,EAAAsE,OAAA7D,EAAAW,eACAwC,GACAA,EAAAnD,EAAAW,eAEA,MAAAX,EAAAY,OACAmC,EAAAlF,KAAAsB,OAAA2E,QAAA9D,EAAAY,MACAkC,GAAAvD,EAAAsE,OAAAd,EAAAM,GACAA,EAAAN,IAIAQ,GAAAT,EAGA,MAAAS,IAGA/E,EAAAgB,UAAAuE,wBACA,SAAAC,EAAAC,GACA,MAAAD,GAAAE,IAAA,SAAA3D,GACA,IAAA1C,KAAAyB,iBACA,WAEA,OAAA2E,IACA1D,EAAA1B,EAAA2B,SAAAyD,EAAA1D,GAEA,IAAA4D,GAAAtF,EAAA+C,YAAArB,EACA,OAAAmB,QAAAlC,UAAA4E,eAAAhG,KAAAP,KAAAyB,iBAAA6E,GACAtG,KAAAyB,iBAAA6E,GACA,MACKtG,OAMLW,EAAAgB,UAAA6E,OACA,WACA,GAAAH,IACAI,QAAAzG,KAAA4B,SACAqB,QAAAjD,KAAAoB,SAAAwE,UACAc,MAAA1G,KAAAsB,OAAAsE,UACAD,SAAA3F,KAAAgF,qBAYA,OAVA,OAAAhF,KAAAe,QACAsF,EAAApE,KAAAjC,KAAAe,OAEA,MAAAf,KAAAkB,cACAmF,EAAAtE,WAAA/B,KAAAkB,aAEAlB,KAAAyB,mBACA4E,EAAAM,eAAA3G,KAAAkG,wBAAAG,EAAApD,QAAAoD,EAAAtE,aAGAsE,GAMA1F,EAAAgB,UAAAiF,SACA,WACA,MAAA9B,MAAAC,UAAA/E,KAAAwG,WAGA5G,EAAAe,sBH2EM,SAAUd,EAAQD,EAASM,GItajC,QAAA2G,GAAAC,GACA,MAAAA,GAAA,IACAA,GAAA,MACAA,GAAA,KASA,QAAAC,GAAAD,GACA,GAAAE,GAAA,OAAAF,GACAG,EAAAH,GAAA,CACA,OAAAE,IACAC,EACAA,EAhDA,GAAAC,GAAAhH,EAAA,GAcAiH,EAAA,EAGAC,EAAA,GAAAD,EAGAE,EAAAD,EAAA,EAGAE,EAAAF,CA+BAxH,GAAAoG,OAAA,SAAAc,GACA,GACAS,GADAC,EAAA,GAGAC,EAAAZ,EAAAC,EAEA,GACAS,GAAAE,EAAAJ,EACAI,KAAAN,EACAM,EAAA,IAGAF,GAAAD,GAEAE,GAAAN,EAAAlB,OAAAuB,SACGE,EAAA,EAEH,OAAAD,IAOA5H,EAAA8H,OAAA,SAAAC,EAAAC,EAAAC,GACA,GAGAC,GAAAP,EAHAQ,EAAAJ,EAAA1D,OACAyB,EAAA,EACAsC,EAAA,CAGA,IACA,GAAAJ,GAAAG,EACA,SAAA3D,OAAA,6CAIA,IADAmD,EAAAL,EAAAQ,OAAAC,EAAAM,WAAAL,MACAL,KAAA,EACA,SAAAnD,OAAA,yBAAAuD,EAAAO,OAAAN,EAAA,GAGAE,MAAAP,EAAAD,GACAC,GAAAF,EACA3B,GAAA6B,GAAAS,EACAA,GAAAb,QACGW,EAEHD,GAAAM,MAAApB,EAAArB,GACAmC,EAAAO,KAAAR,IJkfM,SAAU/H,EAAQD,GKrnBxB,GAAAyI,GAAA,mEAAAC,MAAA,GAKA1I,GAAAoG,OAAA,SAAAuC,GACA,MAAAA,KAAAF,EAAApE,OACA,MAAAoE,GAAAE,EAEA,UAAAC,WAAA,6BAAAD,IAOA3I,EAAA8H,OAAA,SAAAe,GACA,GAAAC,GAAA,GACAC,EAAA,GAEAC,EAAA,GACAC,EAAA,IAEAC,EAAA,GACAC,EAAA,GAEAC,EAAA,GACAC,EAAA,GAEAC,EAAA,GACAC,EAAA,EAGA,OAAAT,IAAAD,MAAAE,EACAF,EAAAC,EAIAE,GAAAH,MAAAI,EACAJ,EAAAG,EAAAM,EAIAJ,GAAAL,MAAAM,EACAN,EAAAK,EAAAK,EAIAV,GAAAO,EACA,GAIAP,GAAAQ,EACA,IAIA,ILooBM,SAAUpJ,EAAQD,GMprBxB,QAAAqB,GAAAH,EAAA+D,EAAAuE,GACA,GAAAvE,IAAA/D,GACA,MAAAA,GAAA+D,EACG,QAAAwE,UAAApF,OACH,MAAAmF,EAEA,UAAAhF,OAAA,IAAAS,EAAA,6BAQA,QAAAyE,GAAAC,GACA,GAAAC,GAAAD,EAAAC,MAAAC,EACA,OAAAD,IAIAE,OAAAF,EAAA,GACAG,KAAAH,EAAA,GACAI,KAAAJ,EAAA,GACAK,KAAAL,EAAA,GACAM,KAAAN,EAAA,IAPA,KAYA,QAAAO,GAAAC,GACA,GAAAC,GAAA,EAiBA,OAhBAD,GAAAN,SACAO,GAAAD,EAAAN,OAAA,KAEAO,GAAA,KACAD,EAAAL,OACAM,GAAAD,EAAAL,KAAA,KAEAK,EAAAJ,OACAK,GAAAD,EAAAJ,MAEAI,EAAAH,OACAI,GAAA,IAAAD,EAAAH,MAEAG,EAAAF,OACAG,GAAAD,EAAAF,MAEAG,EAeA,QAAAC,GAAAC,GACA,GAAAL,GAAAK,EACAF,EAAAX,EAAAa,EACA,IAAAF,EAAA,CACA,IAAAA,EAAAH,KACA,MAAAK,EAEAL,GAAAG,EAAAH,KAKA,OAAAM,GAHAC,EAAAzK,EAAAyK,WAAAP,GAEAQ,EAAAR,EAAAxB,MAAA,OACAiC,EAAA,EAAA1E,EAAAyE,EAAArG,OAAA,EAA8C4B,GAAA,EAAQA,IACtDuE,EAAAE,EAAAzE,GACA,MAAAuE,EACAE,EAAAE,OAAA3E,EAAA,GACK,OAAAuE,EACLG,IACKA,EAAA,IACL,KAAAH,GAIAE,EAAAE,OAAA3E,EAAA,EAAA0E,GACAA,EAAA,IAEAD,EAAAE,OAAA3E,EAAA,GACA0E,KAUA,OANAT,GAAAQ,EAAA7F,KAAA,KAEA,KAAAqF,IACAA,EAAAO,EAAA,SAGAJ,GACAA,EAAAH,OACAC,EAAAE,IAEAH,EAoBA,QAAArF,GAAAgG,EAAAN,GACA,KAAAM,IACAA,EAAA,KAEA,KAAAN,IACAA,EAAA,IAEA,IAAAO,GAAApB,EAAAa,GACAQ,EAAArB,EAAAmB,EAMA,IALAE,IACAF,EAAAE,EAAAb,MAAA,KAIAY,MAAAhB,OAIA,MAHAiB,KACAD,EAAAhB,OAAAiB,EAAAjB,QAEAK,EAAAW,EAGA,IAAAA,GAAAP,EAAAX,MAAAoB,GACA,MAAAT,EAIA,IAAAQ,MAAAf,OAAAe,EAAAb,KAEA,MADAa,GAAAf,KAAAO,EACAJ,EAAAY,EAGA,IAAAE,GAAA,MAAAV,EAAAjC,OAAA,GACAiC,EACAD,EAAAO,EAAAK,QAAA,eAAAX,EAEA,OAAAQ,IACAA,EAAAb,KAAAe,EACAd,EAAAY,IAEAE,EAcA,QAAAlI,GAAA8H,EAAAN,GACA,KAAAM,IACAA,EAAA,KAGAA,IAAAK,QAAA,SAOA,KADA,GAAAC,GAAA,EACA,IAAAZ,EAAAlE,QAAAwE,EAAA,OACA,GAAAO,GAAAP,EAAAQ,YAAA,IACA,IAAAD,EAAA,EACA,MAAAb,EAOA,IADAM,IAAAS,MAAA,EAAAF,GACAP,EAAAjB,MAAA,qBACA,MAAAW,KAGAY,EAIA,MAAAI,OAAAJ,EAAA,GAAAtG,KAAA,OAAA0F,EAAAiB,OAAAX,EAAAxG,OAAA,GASA,QAAAoH,GAAAC,GACA,MAAAA,GAYA,QAAAvH,GAAA4D,GACA,MAAA4D,GAAA5D,GACA,IAAAA,EAGAA,EAIA,QAAA6D,GAAA7D,GACA,MAAA4D,GAAA5D,GACAA,EAAAuD,MAAA,GAGAvD,EAIA,QAAA4D,GAAAD,GACA,IAAAA,EACA,QAGA,IAAArH,GAAAqH,EAAArH,MAEA,IAAAA,EAAA,EACA,QAGA,SAAAqH,EAAArD,WAAAhE,EAAA,IACA,KAAAqH,EAAArD,WAAAhE,EAAA,IACA,MAAAqH,EAAArD,WAAAhE,EAAA,IACA,MAAAqH,EAAArD,WAAAhE,EAAA,IACA,MAAAqH,EAAArD,WAAAhE,EAAA,IACA,MAAAqH,EAAArD,WAAAhE,EAAA,IACA,MAAAqH,EAAArD,WAAAhE,EAAA,IACA,KAAAqH,EAAArD,WAAAhE,EAAA,IACA,KAAAqH,EAAArD,WAAAhE,EAAA,GACA,QAGA,QAAA4B,GAAA5B,EAAA,GAA2B4B,GAAA,EAAQA,IACnC,QAAAyF,EAAArD,WAAApC,GACA,QAIA,UAWA,QAAA4F,GAAAC,EAAAC,EAAAC,GACA,GAAAC,GAAAH,EAAAhJ,OAAAiJ,EAAAjJ,MACA,YAAAmJ,EACAA,GAGAA,EAAAH,EAAA7I,aAAA8I,EAAA9I,aACA,IAAAgJ,EACAA,GAGAA,EAAAH,EAAA5I,eAAA6I,EAAA7I,eACA,IAAA+I,GAAAD,EACAC,GAGAA,EAAAH,EAAAjJ,gBAAAkJ,EAAAlJ,gBACA,IAAAoJ,EACAA,GAGAA,EAAAH,EAAAnJ,cAAAoJ,EAAApJ,cACA,IAAAsJ,EACAA,EAGAH,EAAA3I,KAAA4I,EAAA5I,SAaA,QAAA+I,GAAAJ,EAAAC,EAAAI,GACA,GAAAF,GAAAH,EAAAnJ,cAAAoJ,EAAApJ,aACA,YAAAsJ,EACAA,GAGAA,EAAAH,EAAAjJ,gBAAAkJ,EAAAlJ,gBACA,IAAAoJ,GAAAE,EACAF,GAGAA,EAAAH,EAAAhJ,OAAAiJ,EAAAjJ,OACA,IAAAmJ,EACAA,GAGAA,EAAAH,EAAA7I,aAAA8I,EAAA9I,aACA,IAAAgJ,EACAA,GAGAA,EAAAH,EAAA5I,eAAA6I,EAAA7I,eACA,IAAA+I,EACAA,EAGAH,EAAA3I,KAAA4I,EAAA5I,SAIA,QAAAiJ,GAAAC,EAAAC,GACA,MAAAD,KAAAC,EACA,EAGAD,EAAAC,EACA,GAGA,EAOA,QAAAnG,GAAA2F,EAAAC,GACA,GAAAE,GAAAH,EAAAnJ,cAAAoJ,EAAApJ,aACA,YAAAsJ,EACAA,GAGAA,EAAAH,EAAAjJ,gBAAAkJ,EAAAlJ,gBACA,IAAAoJ,EACAA,GAGAA,EAAAG,EAAAN,EAAAhJ,OAAAiJ,EAAAjJ,QACA,IAAAmJ,EACAA,GAGAA,EAAAH,EAAA7I,aAAA8I,EAAA9I,aACA,IAAAgJ,EACAA,GAGAA,EAAAH,EAAA5I,eAAA6I,EAAA7I,eACA,IAAA+I,EACAA,EAGAG,EAAAN,EAAA3I,KAAA4I,EAAA5I,UApYAnD,EAAAqB,QAEA,IAAAwI,GAAA,iEACAmB,EAAA,eAeAhL,GAAA0J,WAsBA1J,EAAAmK,cAwDAnK,EAAAsK,YA2DAtK,EAAA6E,OAEA7E,EAAAyK,WAAA,SAAAF,GACA,YAAAA,EAAAjC,OAAA,MAAAiC,EAAAX,MAAAC,IAyCA7J,EAAA+C,UAEA,IAAAwJ,GAAA,WACA,GAAAC,GAAAvI,OAAAC,OAAA,KACA,sBAAAsI,MAuBAxM,GAAAmE,YAAAoI,EAAAd,EAAAtH,EASAnE,EAAA4L,cAAAW,EAAAd,EAAAG,EAsEA5L,EAAA6L,6BAuCA7L,EAAAkM,sCA8CAlM,EAAAmG,uCN4sBM,SAAUlG,EAAQD,EAASM,GO3lCjC,QAAAmB,KACArB,KAAAqM,UACArM,KAAAsM,KAAAC,EAAA,GAAAC,KAAA3I,OAAAC,OAAA,MAZA,GAAA9C,GAAAd,EAAA,GACAuD,EAAAI,OAAAlC,UAAA4E,eACAgG,EAAA,mBAAAC,IAgBAnL,GAAAoL,UAAA,SAAAC,EAAAC,GAEA,OADAC,GAAA,GAAAvL,GACAwE,EAAA,EAAAC,EAAA4G,EAAAzI,OAAsC4B,EAAAC,EAASD,IAC/C+G,EAAAlJ,IAAAgJ,EAAA7G,GAAA8G,EAEA,OAAAC,IASAvL,EAAAM,UAAAkL,KAAA,WACA,MAAAN,GAAAvM,KAAAsM,KAAAO,KAAAhJ,OAAAiJ,oBAAA9M,KAAAsM,MAAArI,QAQA5C,EAAAM,UAAA+B,IAAA,SAAAiE,EAAAgF,GACA,GAAAI,GAAAR,EAAA5E,EAAA3G,EAAA+C,YAAA4D,GACAqF,EAAAT,EAAAvM,KAAAyD,IAAAkE,GAAAlE,EAAAlD,KAAAP,KAAAsM,KAAAS,GACAE,EAAAjN,KAAAqM,OAAApI,MACA+I,KAAAL,GACA3M,KAAAqM,OAAAa,KAAAvF,GAEAqF,IACAT,EACAvM,KAAAsM,KAAAM,IAAAjF,EAAAsF,GAEAjN,KAAAsM,KAAAS,GAAAE,IAUA5L,EAAAM,UAAA8B,IAAA,SAAAkE,GACA,GAAA4E,EACA,MAAAvM,MAAAsM,KAAA7I,IAAAkE,EAEA,IAAAoF,GAAA/L,EAAA+C,YAAA4D,EACA,OAAAlE,GAAAlD,KAAAP,KAAAsM,KAAAS,IASA1L,EAAAM,UAAAsE,QAAA,SAAA0B,GACA,GAAA4E,EAAA,CACA,GAAAU,GAAAjN,KAAAsM,KAAAa,IAAAxF,EACA,IAAAsF,GAAA,EACA,MAAAA,OAEG,CACH,GAAAF,GAAA/L,EAAA+C,YAAA4D,EACA,IAAAlE,EAAAlD,KAAAP,KAAAsM,KAAAS,GACA,MAAA/M,MAAAsM,KAAAS,GAIA,SAAA3I,OAAA,IAAAuD,EAAA,yBAQAtG,EAAAM,UAAAyL,GAAA,SAAAC,GACA,GAAAA,GAAA,GAAAA,EAAArN,KAAAqM,OAAApI,OACA,MAAAjE,MAAAqM,OAAAgB,EAEA,UAAAjJ,OAAA,yBAAAiJ,IAQAhM,EAAAM,UAAAiE,QAAA,WACA,MAAA5F,MAAAqM,OAAAnB,SAGAtL,EAAAyB,YPmnCM,SAAUxB,EAAQD,EAASM,GQ9tCjC,QAAAoN,GAAA5B,EAAAC,GAEA,GAAA4B,GAAA7B,EAAAnJ,cACAiL,EAAA7B,EAAApJ,cACAkL,EAAA/B,EAAAjJ,gBACAiL,EAAA/B,EAAAlJ,eACA,OAAA+K,GAAAD,GAAAC,GAAAD,GAAAG,GAAAD,GACAzM,EAAA+E,oCAAA2F,EAAAC,IAAA,EAQA,QAAAnK,KACAxB,KAAAqM,UACArM,KAAA2N,SAAA,EAEA3N,KAAA4N,OAAgBrL,eAAA,EAAAE,gBAAA,GAzBhB,GAAAzB,GAAAd,EAAA,EAkCAsB,GAAAG,UAAA4C,gBACA,SAAAsJ,EAAAC,GACA9N,KAAAqM,OAAAnJ,QAAA2K,EAAAC,IAQAtM,EAAAG,UAAA+B,IAAA,SAAAqK,GACAT,EAAAtN,KAAA4N,MAAAG,IACA/N,KAAA4N,MAAAG,EACA/N,KAAAqM,OAAAa,KAAAa,KAEA/N,KAAA2N,SAAA,EACA3N,KAAAqM,OAAAa,KAAAa,KAaAvM,EAAAG,UAAAiE,QAAA,WAKA,MAJA5F,MAAA2N,UACA3N,KAAAqM,OAAA2B,KAAAhN,EAAA+E,qCACA/F,KAAA2N,SAAA,GAEA3N,KAAAqM,QAGAzM,EAAA4B,eRkvCM,SAAU3B,EAAQD,EAASM,GSnzCjC,QAAAU,GAAAqN,GACA,GAAAC,GAAAD,CAKA,OAJA,gBAAAA,KACAC,EAAApJ,KAAAqJ,MAAAF,EAAAnD,QAAA,WAAsD,MAGtD,MAAAoD,EAAAE,SACA,GAAAC,GAAAH,GACA,GAAAI,GAAAJ,GAoQA,QAAAI,GAAAL,GACA,GAAAC,GAAAD,CACA,iBAAAA,KACAC,EAAApJ,KAAAqJ,MAAAF,EAAAnD,QAAA,WAAsD,KAGtD,IAAArE,GAAAzF,EAAAC,OAAAiN,EAAA,WACAjL,EAAAjC,EAAAC,OAAAiN,EAAA,WAGAxH,EAAA1F,EAAAC,OAAAiN,EAAA,YACAnM,EAAAf,EAAAC,OAAAiN,EAAA,mBACAvH,EAAA3F,EAAAC,OAAAiN,EAAA,uBACAvI,EAAA3E,EAAAC,OAAAiN,EAAA,YACAjM,EAAAjB,EAAAC,OAAAiN,EAAA,YAIA,IAAAzH,GAAAzG,KAAA4B,SACA,SAAAwC,OAAA,wBAAAqC,EAGAxD,KACAoD,IAAA7C,QAIA6C,IAAArF,EAAAkJ,WAKA7D,IAAA,SAAA3D,GACA,MAAAX,IAAAf,EAAAqJ,WAAAtI,IAAAf,EAAAqJ,WAAA3H,GACA1B,EAAA2B,SAAAZ,EAAAW,GACAA,IAOA1C,KAAAsB,OAAAD,EAAAoL,UAAA/F,EAAAL,IAAA7C,SAAA,GACAxD,KAAAoB,SAAAC,EAAAoL,UAAAxJ,GAAA,GAEAjD,KAAA+B,aACA/B,KAAA2G,iBACA3G,KAAAuB,UAAAoE,EACA3F,KAAAiC,OA8EA,QAAAsM,KACAvO,KAAAuC,cAAA,EACAvC,KAAAyC,gBAAA,EACAzC,KAAA0C,OAAA,KACA1C,KAAA6C,aAAA,KACA7C,KAAA8C,eAAA,KACA9C,KAAA+C,KAAA,KAyZA,QAAAsL,GAAAJ,GACA,GAAAC,GAAAD,CACA,iBAAAA,KACAC,EAAApJ,KAAAqJ,MAAAF,EAAAnD,QAAA,WAAsD,KAGtD,IAAArE,GAAAzF,EAAAC,OAAAiN,EAAA,WACAE,EAAApN,EAAAC,OAAAiN,EAAA,WAEA,IAAAzH,GAAAzG,KAAA4B,SACA,SAAAwC,OAAA,wBAAAqC,EAGAzG,MAAAoB,SAAA,GAAAC,GACArB,KAAAsB,OAAA,GAAAD,EAEA,IAAAmN,IACAlM,MAAA,EACAE,OAAA,EAEAxC,MAAAyO,UAAAL,EAAA/H,IAAA,SAAAiF,GACA,GAAAA,EAAArB,IAGA,SAAA7F,OAAA,qDAEA,IAAAsK,GAAA1N,EAAAC,OAAAqK,EAAA,UACAqD,EAAA3N,EAAAC,OAAAyN,EAAA,QACAE,EAAA5N,EAAAC,OAAAyN,EAAA,SAEA,IAAAC,EAAAH,EAAAlM,MACAqM,IAAAH,EAAAlM,MAAAsM,EAAAJ,EAAAhM,OACA,SAAA4B,OAAA,uDAIA,OAFAoK,GAAAE,GAGAG,iBAGAtM,cAAAoM,EAAA,EACAlM,gBAAAmM,EAAA,GAEAE,SAAA,GAAAlO,GAAAI,EAAAC,OAAAqK,EAAA,WA11BA,GAAAtK,GAAAd,EAAA,GACA6O,EAAA7O,EAAA,GACAmB,EAAAnB,EAAA,GAAAmB,SACAK,EAAAxB,EAAA,GACA8O,EAAA9O,EAAA,GAAA8O,SAaApO,GAAAiB,cAAA,SAAAoM,GACA,MAAAK,GAAAzM,cAAAoM,IAMArN,EAAAe,UAAAC,SAAA,EAgCAhB,EAAAe,UAAAsN,oBAAA,KACApL,OAAAqL,eAAAtO,EAAAe,UAAA,sBACAwL,IAAA,WAKA,MAJAnN,MAAAiP,qBACAjP,KAAAmP,eAAAnP,KAAAuB,UAAAvB,KAAA+B,YAGA/B,KAAAiP,uBAIArO,EAAAe,UAAAyN,mBAAA,KACAvL,OAAAqL,eAAAtO,EAAAe,UAAA,qBACAwL,IAAA,WAKA,MAJAnN,MAAAoP,oBACApP,KAAAmP,eAAAnP,KAAAuB,UAAAvB,KAAA+B,YAGA/B,KAAAoP,sBAIAxO,EAAAe,UAAA0N,wBACA,SAAA1H,EAAAqD,GACA,GAAAvK,GAAAkH,EAAAO,OAAA8C,EACA,aAAAvK,GAAmB,MAAAA,GAQnBG,EAAAe,UAAAwN,eACA,SAAAxH,EAAAvB,GACA,SAAAhC,OAAA,6CAGAxD,EAAA0O,gBAAA,EACA1O,EAAA2O,eAAA,EAEA3O,EAAA4O,qBAAA,EACA5O,EAAA6O,kBAAA,EAkBA7O,EAAAe,UAAAO,YACA,SAAA2L,EAAA6B,EAAAC,GACA,GAGAhK,GAHAiK,EAAAF,GAAA,KACAG,EAAAF,GAAA/O,EAAA0O,eAGA,QAAAO,GACA,IAAAjP,GAAA0O,gBACA3J,EAAA3F,KAAA8P,kBACA,MACA,KAAAlP,GAAA2O,eACA5J,EAAA3F,KAAA+P,iBACA,MACA,SACA,SAAA3L,OAAA,+BAGA,GAAArC,GAAA/B,KAAA+B,UACA4D,GAAAU,IAAA,SAAAlE,GACA,GAAAO,GAAA,OAAAP,EAAAO,OAAA,KAAA1C,KAAAoB,SAAAgM,GAAAjL,EAAAO,OAIA,OAHA,OAAAA,GAAA,MAAAX,IACAW,EAAA1B,EAAAyD,KAAA1C,EAAAW,KAGAA,SACAH,cAAAJ,EAAAI,cACAE,gBAAAN,EAAAM,gBACAI,aAAAV,EAAAU,aACAC,eAAAX,EAAAW,eACAC,KAAA,OAAAZ,EAAAY,KAAA,KAAA/C,KAAAsB,OAAA8L,GAAAjL,EAAAY,QAEK/C,MAAAkD,QAAA2K,EAAA+B,IAsBLhP,EAAAe,UAAAqO,yBACA,SAAAlP,GACA,GAAAwB,GAAAtB,EAAAC,OAAAH,EAAA,QAMAmP,GACAvN,OAAA1B,EAAAC,OAAAH,EAAA,UACA+B,aAAAP,EACAQ,eAAA9B,EAAAC,OAAAH,EAAA,YAMA,IAHA,MAAAd,KAAA+B,aACAkO,EAAAvN,OAAA1B,EAAA2B,SAAA3C,KAAA+B,WAAAkO,EAAAvN,UAEA1C,KAAAoB,SAAAqC,IAAAwM,EAAAvN,QACA,QAEAuN,GAAAvN,OAAA1C,KAAAoB,SAAA6E,QAAAgK,EAAAvN,OAEA,IAAAiD,MAEAqF,EAAAhL,KAAAkQ,aAAAD,EACAjQ,KAAA+P,kBACA,eACA,iBACA/O,EAAAyK,2BACAsD,EAAAU,kBACA,IAAAzE,GAAA,GACA,GAAA7I,GAAAnC,KAAA+P,kBAAA/E,EAEA,IAAAmF,SAAArP,EAAA0B,OAOA,IANA,GAAAK,GAAAV,EAAAU,aAMAV,KAAAU,kBACA8C,EAAAuH,MACA5K,KAAAtB,EAAAC,OAAAkB,EAAA,sBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,wBACAiO,WAAApP,EAAAC,OAAAkB,EAAA,8BAGAA,EAAAnC,KAAA+P,oBAAA/E,OASA,KANA,GAAAlI,GAAAX,EAAAW,eAMAX,GACAA,EAAAU,eAAAP,GACAH,EAAAW,mBACA6C,EAAAuH,MACA5K,KAAAtB,EAAAC,OAAAkB,EAAA,sBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,wBACAiO,WAAApP,EAAAC,OAAAkB,EAAA,8BAGAA,EAAAnC,KAAA+P,oBAAA/E,GAKA,MAAArF,IAGA/F,EAAAgB,oBAmFA0N,EAAA3M,UAAAkC,OAAAC,OAAAlD,EAAAe,WACA2M,EAAA3M,UAAAmN,SAAAlO,EASA0N,EAAAzM,cACA,SAAAoM,GACA,GAAAoC,GAAAxM,OAAAC,OAAAwK,EAAA3M,WAEA+E,EAAA2J,EAAA/O,OAAAD,EAAAoL,UAAAwB,EAAA3M,OAAAsE,WAAA,GACA3C,EAAAoN,EAAAjP,SAAAC,EAAAoL,UAAAwB,EAAA7M,SAAAwE,WAAA,EACAyK,GAAAtO,WAAAkM,EAAA/M,YACAmP,EAAA1J,eAAAsH,EAAA/H,wBAAAmK,EAAAjP,SAAAwE,UACAyK,EAAAtO,YACAsO,EAAApO,KAAAgM,EAAAlN,KAWA,QAJAuP,GAAArC,EAAA1M,UAAAqE,UAAAsF,QACAqF,EAAAF,EAAApB,uBACAuB,EAAAH,EAAAjB,sBAEAvJ,EAAA,EAAA5B,EAAAqM,EAAArM,OAAsD4B,EAAA5B,EAAY4B,IAAA,CAClE,GAAA4K,GAAAH,EAAAzK,GACA6K,EAAA,GAAAnC,EACAmC,GAAAnO,cAAAkO,EAAAlO,cACAmO,EAAAjO,gBAAAgO,EAAAhO,gBAEAgO,EAAA/N,SACAgO,EAAAhO,OAAAO,EAAAgD,QAAAwK,EAAA/N,QACAgO,EAAA7N,aAAA4N,EAAA5N,aACA6N,EAAA5N,eAAA2N,EAAA3N,eAEA2N,EAAA1N,OACA2N,EAAA3N,KAAA2D,EAAAT,QAAAwK,EAAA1N,OAGAyN,EAAAtD,KAAAwD,IAGAH,EAAArD,KAAAwD,GAKA,MAFA1B,GAAAqB,EAAAjB,mBAAApO,EAAAyK,4BAEA4E,GAMA/B,EAAA3M,UAAAC,SAAA,EAKAiC,OAAAqL,eAAAZ,EAAA3M,UAAA,WACAwL,IAAA,WACA,MAAAnN,MAAAoB,SAAAwE,UAAAS,IAAA,SAAAiF,GACA,aAAAtL,KAAA+B,WAAAf,EAAAyD,KAAAzE,KAAA+B,WAAAuJ,MACKtL,SAqBLsO,EAAA3M,UAAAwN,eACA,SAAAxH,EAAAvB,GAeA,IAdA,GAYAjE,GAAAwO,EAAAC,EAAAC,EAAA1I,EAZA5F,EAAA,EACA6C,EAAA,EACAG,EAAA,EACAD,EAAA,EACAG,EAAA,EACAD,EAAA,EACAvB,EAAA0D,EAAA1D,OACA+G,EAAA,EACA8F,KACAC,KACAC,KACAV,KAGAtF,EAAA/G,GACA,SAAA0D,EAAAO,OAAA8C,GACAzI,IACAyI,IACA5F,EAAA,MAEA,UAAAuC,EAAAO,OAAA8C,GACAA,QAEA,CASA,IARA7I,EAAA,GAAAoM,GACApM,EAAAI,gBAOAsO,EAAA7F,EAAyB6F,EAAA5M,IACzBjE,KAAAqP,wBAAA1H,EAAAkJ,GADuCA,KAQvC,GAHAF,EAAAhJ,EAAAuD,MAAAF,EAAA6F,GAEAD,EAAAE,EAAAH,GAEA3F,GAAA2F,EAAA1M,WACS,CAET,IADA2M,KACA5F,EAAA6F,GACAnP,EAAAgG,OAAAC,EAAAqD,EAAA+F,GACA5I,EAAA4I,EAAA5I,MACA6C,EAAA+F,EAAA3I,KACAwI,EAAA1D,KAAA/E,EAGA,QAAAyI,EAAA3M,OACA,SAAAG,OAAA,yCAGA,QAAAwM,EAAA3M,OACA,SAAAG,OAAA,yCAGA0M,GAAAH,GAAAC,EAIAzO,EAAAM,gBAAA2C,EAAAwL,EAAA,GACAxL,EAAAjD,EAAAM,gBAEAmO,EAAA3M,OAAA,IAEA9B,EAAAO,OAAA+C,EAAAmL,EAAA,GACAnL,GAAAmL,EAAA,GAGAzO,EAAAU,aAAA0C,EAAAqL,EAAA,GACArL,EAAApD,EAAAU,aAEAV,EAAAU,cAAA,EAGAV,EAAAW,eAAAwC,EAAAsL,EAAA,GACAtL,EAAAnD,EAAAW,eAEA8N,EAAA3M,OAAA,IAEA9B,EAAAY,KAAAyC,EAAAoL,EAAA,GACApL,GAAAoL,EAAA,KAIAN,EAAApD,KAAA/K,GACA,gBAAAA,GAAAU,cACAmO,EAAA9D,KAAA/K,GAKA6M,EAAAsB,EAAAtP,EAAA8K,qCACA9L,KAAAiP,oBAAAqB,EAEAtB,EAAAgC,EAAAhQ,EAAAyK,4BACAzL,KAAAoP,mBAAA4B,GAOA1C,EAAA3M,UAAAuO,aACA,SAAAe,EAAAC,EAAAC,EACAC,EAAAC,EAAAC,GAMA,GAAAL,EAAAE,IAAA,EACA,SAAA3I,WAAA,gDACAyI,EAAAE,GAEA,IAAAF,EAAAG,GAAA,EACA,SAAA5I,WAAA,kDACAyI,EAAAG,GAGA,OAAArC,GAAAwC,OAAAN,EAAAC,EAAAG,EAAAC,IAOAhD,EAAA3M,UAAA6P,mBACA,WACA,OAAAxG,GAAA,EAAuBA,EAAAhL,KAAA8P,mBAAA7L,SAAwC+G,EAAA,CAC/D,GAAA7I,GAAAnC,KAAA8P,mBAAA9E,EAMA,IAAAA,EAAA,EAAAhL,KAAA8P,mBAAA7L,OAAA,CACA,GAAAwN,GAAAzR,KAAA8P,mBAAA9E,EAAA,EAEA,IAAA7I,EAAAI,gBAAAkP,EAAAlP,cAAA,CACAJ,EAAAuP,oBAAAD,EAAAhP,gBAAA,CACA,WAKAN,EAAAuP,oBAAAC,MAwBArD,EAAA3M,UAAA6C,oBACA,SAAA1D,GACA,GAAAmP,IACA1N,cAAAvB,EAAAC,OAAAH,EAAA,QACA2B,gBAAAzB,EAAAC,OAAAH,EAAA,WAGAkK,EAAAhL,KAAAkQ,aACAD,EACAjQ,KAAA8P,mBACA,gBACA,kBACA9O,EAAA8K,oCACA9K,EAAAC,OAAAH,EAAA,OAAAF,EAAA4O,sBAGA,IAAAxE,GAAA,GACA,GAAA7I,GAAAnC,KAAA8P,mBAAA9E,EAEA,IAAA7I,EAAAI,gBAAA0N,EAAA1N,cAAA,CACA,GAAAG,GAAA1B,EAAAC,OAAAkB,EAAA,cACA,QAAAO,IACAA,EAAA1C,KAAAoB,SAAAgM,GAAA1K,GACA,MAAA1C,KAAA+B,aACAW,EAAA1B,EAAAyD,KAAAzE,KAAA+B,WAAAW,IAGA,IAAAK,GAAA/B,EAAAC,OAAAkB,EAAA,YAIA,OAHA,QAAAY,IACAA,EAAA/C,KAAAsB,OAAA8L,GAAArK,KAGAL,SACAJ,KAAAtB,EAAAC,OAAAkB,EAAA,qBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,uBACAY,SAKA,OACAL,OAAA,KACAJ,KAAA,KACAE,OAAA,KACAO,KAAA,OAQAuL,EAAA3M,UAAAiQ,wBACA,WACA,QAAA5R,KAAA2G,iBAGA3G,KAAA2G,eAAA1C,QAAAjE,KAAAoB,SAAAyL,SACA7M,KAAA2G,eAAAkL,KAAA,SAAAC,GAA+C,aAAAA,MAQ/CxD,EAAA3M,UAAA0B,iBACA,SAAAuB,EAAAmN,GACA,IAAA/R,KAAA2G,eACA,WAOA,IAJA,MAAA3G,KAAA+B,aACA6C,EAAA5D,EAAA2B,SAAA3C,KAAA+B,WAAA6C,IAGA5E,KAAAoB,SAAAqC,IAAAmB,GACA,MAAA5E,MAAA2G,eAAA3G,KAAAoB,SAAA6E,QAAArB,GAGA,IAAAqF,EACA,UAAAjK,KAAA+B,aACAkI,EAAAjJ,EAAAsI,SAAAtJ,KAAA+B,aAAA,CAKA,GAAAiQ,GAAApN,EAAAkG,QAAA,gBACA,YAAAb,EAAAP,QACA1J,KAAAoB,SAAAqC,IAAAuO,GACA,MAAAhS,MAAA2G,eAAA3G,KAAAoB,SAAA6E,QAAA+L,GAGA,MAAA/H,EAAAH,MAAA,KAAAG,EAAAH,OACA9J,KAAAoB,SAAAqC,IAAA,IAAAmB,GACA,MAAA5E,MAAA2G,eAAA3G,KAAAoB,SAAA6E,QAAA,IAAArB,IAQA,GAAAmN,EACA,WAGA,UAAA3N,OAAA,IAAAQ,EAAA,+BAuBA0J,EAAA3M,UAAAsQ,qBACA,SAAAnR,GACA,GAAA4B,GAAA1B,EAAAC,OAAAH,EAAA,SAIA,IAHA,MAAAd,KAAA+B,aACAW,EAAA1B,EAAA2B,SAAA3C,KAAA+B,WAAAW,KAEA1C,KAAAoB,SAAAqC,IAAAf,GACA,OACAJ,KAAA,KACAE,OAAA,KACA4N,WAAA,KAGA1N,GAAA1C,KAAAoB,SAAA6E,QAAAvD,EAEA,IAAAuN,IACAvN,SACAG,aAAA7B,EAAAC,OAAAH,EAAA,QACAgC,eAAA9B,EAAAC,OAAAH,EAAA,WAGAkK,EAAAhL,KAAAkQ,aACAD,EACAjQ,KAAA+P,kBACA,eACA,iBACA/O,EAAAyK,2BACAzK,EAAAC,OAAAH,EAAA,OAAAF,EAAA4O,sBAGA,IAAAxE,GAAA,GACA,GAAA7I,GAAAnC,KAAA+P,kBAAA/E,EAEA,IAAA7I,EAAAO,SAAAuN,EAAAvN,OACA,OACAJ,KAAAtB,EAAAC,OAAAkB,EAAA,sBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,wBACAiO,WAAApP,EAAAC,OAAAkB,EAAA,6BAKA,OACAG,KAAA,KACAE,OAAA,KACA4N,WAAA,OAIAxQ,EAAA0O,yBA+FAD,EAAA1M,UAAAkC,OAAAC,OAAAlD,EAAAe,WACA0M,EAAA1M,UAAAuQ,YAAAtR,EAKAyN,EAAA1M,UAAAC,SAAA,EAKAiC,OAAAqL,eAAAb,EAAA1M,UAAA,WACAwL,IAAA,WAEA,OADAlK,MACA4C,EAAA,EAAmBA,EAAA7F,KAAAyO,UAAAxK,OAA2B4B,IAC9C,OAAAsM,GAAA,EAAqBA,EAAAnS,KAAAyO,UAAA5I,GAAAiJ,SAAA7L,QAAAgB,OAA+CkO,IACpElP,EAAAiK,KAAAlN,KAAAyO,UAAA5I,GAAAiJ,SAAA7L,QAAAkP,GAGA,OAAAlP,MAmBAoL,EAAA1M,UAAA6C,oBACA,SAAA1D,GACA,GAAAmP,IACA1N,cAAAvB,EAAAC,OAAAH,EAAA,QACA2B,gBAAAzB,EAAAC,OAAAH,EAAA,WAKAsR,EAAArD,EAAAwC,OAAAtB,EAAAjQ,KAAAyO,UACA,SAAAwB,EAAAoC,GACA,GAAAxG,GAAAoE,EAAA1N,cAAA8P,EAAAxD,gBAAAtM,aACA,OAAAsJ,GACAA,EAGAoE,EAAAxN,gBACA4P,EAAAxD,gBAAApM,kBAEA4P,EAAArS,KAAAyO,UAAA2D,EAEA,OAAAC,GASAA,EAAAvD,SAAAtK,qBACAlC,KAAA2N,EAAA1N,eACA8P,EAAAxD,gBAAAtM,cAAA,GACAC,OAAAyN,EAAAxN,iBACA4P,EAAAxD,gBAAAtM,gBAAA0N,EAAA1N,cACA8P,EAAAxD,gBAAApM,gBAAA,EACA,GACA6P,KAAAxR,EAAAwR,QAdA5P,OAAA,KACAJ,KAAA,KACAE,OAAA,KACAO,KAAA,OAmBAsL,EAAA1M,UAAAiQ,wBACA,WACA,MAAA5R,MAAAyO,UAAA8D,MAAA,SAAAjH,GACA,MAAAA,GAAAwD,SAAA8C,6BASAvD,EAAA1M,UAAA0B,iBACA,SAAAuB,EAAAmN,GACA,OAAAlM,GAAA,EAAmBA,EAAA7F,KAAAyO,UAAAxK,OAA2B4B,IAAA,CAC9C,GAAAwM,GAAArS,KAAAyO,UAAA5I,GAEAzC,EAAAiP,EAAAvD,SAAAzL,iBAAAuB,GAAA,EACA,IAAAxB,EACA,MAAAA,GAGA,GAAA2O,EACA,WAGA,UAAA3N,OAAA,IAAAQ,EAAA,+BAkBAyJ,EAAA1M,UAAAsQ,qBACA,SAAAnR,GACA,OAAA+E,GAAA,EAAmBA,EAAA7F,KAAAyO,UAAAxK,OAA2B4B,IAAA,CAC9C,GAAAwM,GAAArS,KAAAyO,UAAA5I,EAIA,IAAAwM,EAAAvD,SAAA7L,QAAAgD,QAAAjF,EAAAC,OAAAH,EAAA,iBAGA,GAAA0R,GAAAH,EAAAvD,SAAAmD,qBAAAnR,EACA,IAAA0R,EAAA,CACA,GAAAC,IACAnQ,KAAAkQ,EAAAlQ,MACA+P,EAAAxD,gBAAAtM,cAAA,GACAC,OAAAgQ,EAAAhQ,QACA6P,EAAAxD,gBAAAtM,gBAAAiQ,EAAAlQ,KACA+P,EAAAxD,gBAAApM,gBAAA,EACA,GAEA,OAAAgQ,KAIA,OACAnQ,KAAA,KACAE,OAAA,OASA6L,EAAA1M,UAAAwN,eACA,SAAAxH,EAAAvB,GACApG,KAAAiP,uBACAjP,KAAAoP,qBACA,QAAAvJ,GAAA,EAAmBA,EAAA7F,KAAAyO,UAAAxK,OAA2B4B,IAG9C,OAFAwM,GAAArS,KAAAyO,UAAA5I,GACA6M,EAAAL,EAAAvD,SAAAgB,mBACAqC,EAAA,EAAqBA,EAAAO,EAAAzO,OAA4BkO,IAAA,CACjD,GAAAhQ,GAAAuQ,EAAAP,GAEAzP,EAAA2P,EAAAvD,SAAA1N,SAAAgM,GAAAjL,EAAAO,OACA,QAAA2P,EAAAvD,SAAA/M,aACAW,EAAA1B,EAAAyD,KAAA4N,EAAAvD,SAAA/M,WAAAW,IAEA1C,KAAAoB,SAAAsC,IAAAhB,GACAA,EAAA1C,KAAAoB,SAAA6E,QAAAvD,EAEA,IAAAK,GAAAsP,EAAAvD,SAAAxN,OAAA8L,GAAAjL,EAAAY,KACA/C,MAAAsB,OAAAoC,IAAAX,GACAA,EAAA/C,KAAAsB,OAAA2E,QAAAlD,EAMA,IAAA4P,IACAjQ,SACAH,cAAAJ,EAAAI,eACA8P,EAAAxD,gBAAAtM,cAAA,GACAE,gBAAAN,EAAAM,iBACA4P,EAAAxD,gBAAAtM,gBAAAJ,EAAAI,cACA8P,EAAAxD,gBAAApM,gBAAA,EACA,GACAI,aAAAV,EAAAU,aACAC,eAAAX,EAAAW,eACAC,OAGA/C,MAAAiP,oBAAA/B,KAAAyF,GACA,gBAAAA,GAAA9P,cACA7C,KAAAoP,mBAAAlC,KAAAyF,GAKA3D,EAAAhP,KAAAiP,oBAAAjO,EAAA8K,qCACAkD,EAAAhP,KAAAoP,mBAAApO,EAAAyK,6BAGA7L,EAAAyO,4BTu0CM,SAAUxO,EAAQD,GUz2ExB,QAAAgT,GAAAC,EAAAC,EAAA7B,EAAA8B,EAAAC,EAAA1B,GAUA,GAAA2B,GAAAC,KAAAC,OAAAL,EAAAD,GAAA,GAAAA,EACAhH,EAAAmH,EAAA/B,EAAA8B,EAAAE,IAAA,EACA,YAAApH,EAEAoH,EAEApH,EAAA,EAEAiH,EAAAG,EAAA,EAEAL,EAAAK,EAAAH,EAAA7B,EAAA8B,EAAAC,EAAA1B,GAKAA,GAAA1R,EAAA6P,kBACAqD,EAAAC,EAAA9O,OAAA6O,GAAA,EAEAG,EAKAA,EAAAJ,EAAA,EAEAD,EAAAC,EAAAI,EAAAhC,EAAA8B,EAAAC,EAAA1B,GAIAA,GAAA1R,EAAA6P,kBACAwD,EAEAJ,EAAA,KAAAA,EA1DAjT,EAAA4P,qBAAA,EACA5P,EAAA6P,kBAAA,EAgFA7P,EAAA2R,OAAA,SAAAN,EAAA8B,EAAAC,EAAA1B,GACA,OAAAyB,EAAA9O,OACA,QAGA,IAAA+G,GAAA4H,GAAA,EAAAG,EAAA9O,OAAAgN,EAAA8B,EACAC,EAAA1B,GAAA1R,EAAA4P,qBACA,IAAAxE,EAAA,EACA,QAMA,MAAAA,EAAA,MACA,IAAAgI,EAAAD,EAAA/H,GAAA+H,EAAA/H,EAAA,UAGAA,CAGA,OAAAA,KVw4EM,SAAUnL,EAAQD,GW19ExB,QAAAwT,GAAAC,EAAAC,EAAAC,GACA,GAAAxC,GAAAsC,EAAAC,EACAD,GAAAC,GAAAD,EAAAE,GACAF,EAAAE,GAAAxC,EAWA,QAAAyC,GAAAC,EAAAC,GACA,MAAAR,MAAAS,MAAAF,EAAAP,KAAAU,UAAAF,EAAAD,IAeA,QAAAI,GAAAR,EAAAS,EAAApT,EAAAqT,GAKA,GAAArT,EAAAqT,EAAA,CAYA,GAAAC,GAAAR,EAAA9S,EAAAqT,GACAlO,EAAAnF,EAAA,CAEA0S,GAAAC,EAAAW,EAAAD,EASA,QARAE,GAAAZ,EAAAU,GAQA5B,EAAAzR,EAAmByR,EAAA4B,EAAO5B,IAC1B2B,EAAAT,EAAAlB,GAAA8B,IAAA,IACApO,GAAA,EACAuN,EAAAC,EAAAxN,EAAAsM,GAIAiB,GAAAC,EAAAxN,EAAA,EAAAsM,EACA,IAAA+B,GAAArO,EAAA,CAIAgO,GAAAR,EAAAS,EAAApT,EAAAwT,EAAA,GACAL,EAAAR,EAAAS,EAAAI,EAAA,EAAAH,IAYAnU,EAAAoP,UAAA,SAAAqE,EAAAS,GACAD,EAAAR,EAAAS,EAAA,EAAAT,EAAApP,OAAA,KX6/EM,SAAUpE,EAAQD,EAASM,GY3kFjC,QAAAW,GAAAsT,EAAAC,EAAAxP,EAAAyP,EAAAxP,GACA7E,KAAAsU,YACAtU,KAAAuU,kBACAvU,KAAAsC,KAAA,MAAA6R,EAAA,KAAAA,EACAnU,KAAAwC,OAAA,MAAA4R,EAAA,KAAAA,EACApU,KAAA0C,OAAA,MAAAkC,EAAA,KAAAA,EACA5E,KAAA+C,KAAA,MAAA8B,EAAA,KAAAA,EACA7E,KAAAwU,IAAA,EACA,MAAAH,GAAArU,KAAA0D,IAAA2Q,GAnCA,GAAA1T,GAAAT,EAAA,GAAAS,mBACAK,EAAAd,EAAA,GAIAuU,EAAA,UAGAC,EAAA,GAKAF,EAAA,oBAiCA3T,GAAA8T,wBACA,SAAAC,EAAA9S,EAAA+S,GA+FA,QAAAC,GAAA3S,EAAA4S,GACA,UAAA5S,GAAAgO,SAAAhO,EAAAO,OACAsS,EAAAtR,IAAAqR,OACO,CACP,GAAArS,GAAAmS,EACA7T,EAAAyD,KAAAoQ,EAAA1S,EAAAO,QACAP,EAAAO,MACAsS,GAAAtR,IAAA,GAAA7C,GAAAsB,EAAAU,aACAV,EAAAW,eACAJ,EACAqS,EACA5S,EAAAY,QAvGA,GAAAiS,GAAA,GAAAnU,GAMAoU,EAAAL,EAAAtM,MAAAmM,GACAS,EAAA,EACAC,EAAA,WAMA,QAAAC,KACA,MAAAF,GAAAD,EAAAhR,OACAgR,EAAAC,KAAA/E,OAPA,GAAAkF,GAAAD,IAEAE,EAAAF,KAAA,EACA,OAAAC,GAAAC,GASAC,EAAA,EAAA7D,EAAA,EAKA8D,EAAA,IAgEA,OA9DA1T,GAAAI,YAAA,SAAAC,GACA,UAAAqT,EAAA,CAGA,KAAAD,EAAApT,EAAAI,eAMS,CAIT,GAAAkT,GAAAR,EAAAC,GACAH,EAAAU,EAAArK,OAAA,EAAAjJ,EAAAM,gBACAiP,EAOA,OANAuD,GAAAC,GAAAO,EAAArK,OAAAjJ,EAAAM,gBACAiP,GACAA,EAAAvP,EAAAM,gBACAqS,EAAAU,EAAAT,QAEAS,EAAArT,GAhBA2S,EAAAU,EAAAL,KACAI,IACA7D,EAAA,EAqBA,KAAA6D,EAAApT,EAAAI,eACAyS,EAAAtR,IAAAyR,KACAI,GAEA,IAAA7D,EAAAvP,EAAAM,gBAAA,CACA,GAAAgT,GAAAR,EAAAC,EACAF,GAAAtR,IAAA+R,EAAArK,OAAA,EAAAjJ,EAAAM,kBACAwS,EAAAC,GAAAO,EAAArK,OAAAjJ,EAAAM,iBACAiP,EAAAvP,EAAAM,gBAEA+S,EAAArT,GACKnC,MAELkV,EAAAD,EAAAhR,SACAuR,GAEAV,EAAAU,EAAAL,KAGAH,EAAAtR,IAAAuR,EAAAzK,OAAA0K,GAAAzQ,KAAA,MAIA3C,EAAAmB,QAAAC,QAAA,SAAAC,GACA,GAAAC,GAAAtB,EAAAuB,iBAAAF,EACA,OAAAC,IACA,MAAAyR,IACA1R,EAAAnC,EAAAyD,KAAAoQ,EAAA1R,IAEA6R,EAAA1R,iBAAAH,EAAAC,MAIA4R,GAwBAnU,EAAAc,UAAA+B,IAAA,SAAAgS,GACA,GAAAvK,MAAAwK,QAAAD,GACAA,EAAAxS,QAAA,SAAA0S,GACA5V,KAAA0D,IAAAkS,IACK5V,UAEL,KAAA0V,EAAAlB,IAAA,gBAAAkB,GAMA,SAAAlN,WACA,8EAAAkN,EANAA,IACA1V,KAAAsU,SAAApH,KAAAwI,GAQA,MAAA1V,OASAa,EAAAc,UAAAkU,QAAA,SAAAH,GACA,GAAAvK,MAAAwK,QAAAD,GACA,OAAA7P,GAAA6P,EAAAzR,OAAA,EAAiC4B,GAAA,EAAQA,IACzC7F,KAAA6V,QAAAH,EAAA7P,QAGA,KAAA6P,EAAAlB,IAAA,gBAAAkB,GAIA,SAAAlN,WACA,8EAAAkN,EAJA1V,MAAAsU,SAAAwB,QAAAJ,GAOA,MAAA1V,OAUAa,EAAAc,UAAAoU,KAAA,SAAAC,GAEA,OADAJ,GACA/P,EAAA,EAAAC,EAAA9F,KAAAsU,SAAArQ,OAA6C4B,EAAAC,EAASD,IACtD+P,EAAA5V,KAAAsU,SAAAzO,GACA+P,EAAApB,GACAoB,EAAAG,KAAAC,GAGA,KAAAJ,GACAI,EAAAJ,GAAoBlT,OAAA1C,KAAA0C,OACpBJ,KAAAtC,KAAAsC,KACAE,OAAAxC,KAAAwC,OACAO,KAAA/C,KAAA+C,QAYAlC,EAAAc,UAAA8C,KAAA,SAAAwR,GACA,GAAAC,GACArQ,EACAC,EAAA9F,KAAAsU,SAAArQ,MACA,IAAA6B,EAAA,GAEA,IADAoQ,KACArQ,EAAA,EAAeA,EAAAC,EAAA,EAAWD,IAC1BqQ,EAAAhJ,KAAAlN,KAAAsU,SAAAzO,IACAqQ,EAAAhJ,KAAA+I,EAEAC,GAAAhJ,KAAAlN,KAAAsU,SAAAzO,IACA7F,KAAAsU,SAAA4B,EAEA,MAAAlW,OAUAa,EAAAc,UAAAwU,aAAA,SAAAC,EAAAC,GACA,GAAAC,GAAAtW,KAAAsU,SAAAtU,KAAAsU,SAAArQ,OAAA,EAUA,OATAqS,GAAA9B,GACA8B,EAAAH,aAAAC,EAAAC,GAEA,gBAAAC,GACAtW,KAAAsU,SAAAtU,KAAAsU,SAAArQ,OAAA,GAAAqS,EAAAxL,QAAAsL,EAAAC,GAGArW,KAAAsU,SAAApH,KAAA,GAAApC,QAAAsL,EAAAC,IAEArW,MAUAa,EAAAc,UAAA2B,iBACA,SAAAK,EAAAC,GACA5D,KAAAuU,eAAAvT,EAAA+C,YAAAJ,IAAAC,GASA/C,EAAAc,UAAA4U,mBACA,SAAAP,GACA,OAAAnQ,GAAA,EAAAC,EAAA9F,KAAAsU,SAAArQ,OAA+C4B,EAAAC,EAASD,IACxD7F,KAAAsU,SAAAzO,GAAA2O,IACAxU,KAAAsU,SAAAzO,GAAA0Q,mBAAAP,EAKA,QADA/S,GAAAY,OAAAG,KAAAhE,KAAAuU,gBACA1O,EAAA,EAAAC,EAAA7C,EAAAgB,OAAyC4B,EAAAC,EAASD,IAClDmQ,EAAAhV,EAAAwK,cAAAvI,EAAA4C,IAAA7F,KAAAuU,eAAAtR,EAAA4C,MAQAhF,EAAAc,UAAAiF,SAAA,WACA,GAAA+J,GAAA,EAIA,OAHA3Q,MAAA+V,KAAA,SAAAH,GACAjF,GAAAiF,IAEAjF,GAOA9P,EAAAc,UAAA6U,sBAAA,SAAA1V,GACA,GAAAuB,IACA0S,KAAA,GACAzS,KAAA,EACAE,OAAA,GAEA6D,EAAA,GAAA1F,GAAAG,GACA2V,GAAA,EACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,IAqEA,OApEA7W,MAAA+V,KAAA,SAAAH,EAAAhT,GACAP,EAAA0S,MAAAa,EACA,OAAAhT,EAAAF,QACA,OAAAE,EAAAN,MACA,OAAAM,EAAAJ,QACAkU,IAAA9T,EAAAF,QACAiU,IAAA/T,EAAAN,MACAsU,IAAAhU,EAAAJ,QACAqU,IAAAjU,EAAAG,MACAsD,EAAArD,YACAN,OAAAE,EAAAF,OACAE,UACAN,KAAAM,EAAAN,KACAE,OAAAI,EAAAJ,QAEAH,WACAC,KAAAD,EAAAC,KACAE,OAAAH,EAAAG,QAEAO,KAAAH,EAAAG,OAGA2T,EAAA9T,EAAAF,OACAiU,EAAA/T,EAAAN,KACAsU,EAAAhU,EAAAJ,OACAqU,EAAAjU,EAAAG,KACA0T,GAAA,GACKA,IACLpQ,EAAArD,YACAX,WACAC,KAAAD,EAAAC,KACAE,OAAAH,EAAAG,UAGAkU,EAAA,KACAD,GAAA,EAEA,QAAAxJ,GAAA,EAAAhJ,EAAA2R,EAAA3R,OAA4CgJ,EAAAhJ,EAAcgJ,IAC1D2I,EAAA3N,WAAAgF,KAAAyH,GACArS,EAAAC,OACAD,EAAAG,OAAA,EAEAyK,EAAA,IAAAhJ,GACAyS,EAAA,KACAD,GAAA,GACSA,GACTpQ,EAAArD,YACAN,OAAAE,EAAAF,OACAE,UACAN,KAAAM,EAAAN,KACAE,OAAAI,EAAAJ,QAEAH,WACAC,KAAAD,EAAAC,KACAE,OAAAH,EAAAG,QAEAO,KAAAH,EAAAG,QAIAV,EAAAG,WAIAxC,KAAAuW,mBAAA,SAAApT,EAAA2T,GACAzQ,EAAA/C,iBAAAH,EAAA2T,MAGU/B,KAAA1S,EAAA0S,KAAA1O,QAGVzG,EAAAiB","file":"source-map.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"sourceMap\"] = factory();\n\telse\n\t\troot[\"sourceMap\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"sourceMap\"] = factory();\n\telse\n\t\troot[\"sourceMap\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*\n\t * Copyright 2009-2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE.txt or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\texports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;\n\texports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer;\n\texports.SourceNode = __webpack_require__(10).SourceNode;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar base64VLQ = __webpack_require__(2);\n\tvar util = __webpack_require__(4);\n\tvar ArraySet = __webpack_require__(5).ArraySet;\n\tvar MappingList = __webpack_require__(6).MappingList;\n\t\n\t/**\n\t * An instance of the SourceMapGenerator represents a source map which is\n\t * being built incrementally. You may pass an object with the following\n\t * properties:\n\t *\n\t * - file: The filename of the generated source.\n\t * - sourceRoot: A root for all relative URLs in this source map.\n\t */\n\tfunction SourceMapGenerator(aArgs) {\n\t if (!aArgs) {\n\t aArgs = {};\n\t }\n\t this._file = util.getArg(aArgs, 'file', null);\n\t this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n\t this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n\t this._sources = new ArraySet();\n\t this._names = new ArraySet();\n\t this._mappings = new MappingList();\n\t this._sourcesContents = null;\n\t}\n\t\n\tSourceMapGenerator.prototype._version = 3;\n\t\n\t/**\n\t * Creates a new SourceMapGenerator based on a SourceMapConsumer\n\t *\n\t * @param aSourceMapConsumer The SourceMap.\n\t */\n\tSourceMapGenerator.fromSourceMap =\n\t function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n\t var sourceRoot = aSourceMapConsumer.sourceRoot;\n\t var generator = new SourceMapGenerator({\n\t file: aSourceMapConsumer.file,\n\t sourceRoot: sourceRoot\n\t });\n\t aSourceMapConsumer.eachMapping(function (mapping) {\n\t var newMapping = {\n\t generated: {\n\t line: mapping.generatedLine,\n\t column: mapping.generatedColumn\n\t }\n\t };\n\t\n\t if (mapping.source != null) {\n\t newMapping.source = mapping.source;\n\t if (sourceRoot != null) {\n\t newMapping.source = util.relative(sourceRoot, newMapping.source);\n\t }\n\t\n\t newMapping.original = {\n\t line: mapping.originalLine,\n\t column: mapping.originalColumn\n\t };\n\t\n\t if (mapping.name != null) {\n\t newMapping.name = mapping.name;\n\t }\n\t }\n\t\n\t generator.addMapping(newMapping);\n\t });\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t generator.setSourceContent(sourceFile, content);\n\t }\n\t });\n\t return generator;\n\t };\n\t\n\t/**\n\t * Add a single mapping from original source line and column to the generated\n\t * source's line and column for this source map being created. The mapping\n\t * object should have the following properties:\n\t *\n\t * - generated: An object with the generated line and column positions.\n\t * - original: An object with the original line and column positions.\n\t * - source: The original source file (relative to the sourceRoot).\n\t * - name: An optional original token name for this mapping.\n\t */\n\tSourceMapGenerator.prototype.addMapping =\n\t function SourceMapGenerator_addMapping(aArgs) {\n\t var generated = util.getArg(aArgs, 'generated');\n\t var original = util.getArg(aArgs, 'original', null);\n\t var source = util.getArg(aArgs, 'source', null);\n\t var name = util.getArg(aArgs, 'name', null);\n\t\n\t if (!this._skipValidation) {\n\t this._validateMapping(generated, original, source, name);\n\t }\n\t\n\t if (source != null) {\n\t source = String(source);\n\t if (!this._sources.has(source)) {\n\t this._sources.add(source);\n\t }\n\t }\n\t\n\t if (name != null) {\n\t name = String(name);\n\t if (!this._names.has(name)) {\n\t this._names.add(name);\n\t }\n\t }\n\t\n\t this._mappings.add({\n\t generatedLine: generated.line,\n\t generatedColumn: generated.column,\n\t originalLine: original != null && original.line,\n\t originalColumn: original != null && original.column,\n\t source: source,\n\t name: name\n\t });\n\t };\n\t\n\t/**\n\t * Set the source content for a source file.\n\t */\n\tSourceMapGenerator.prototype.setSourceContent =\n\t function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n\t var source = aSourceFile;\n\t if (this._sourceRoot != null) {\n\t source = util.relative(this._sourceRoot, source);\n\t }\n\t\n\t if (aSourceContent != null) {\n\t // Add the source content to the _sourcesContents map.\n\t // Create a new _sourcesContents map if the property is null.\n\t if (!this._sourcesContents) {\n\t this._sourcesContents = Object.create(null);\n\t }\n\t this._sourcesContents[util.toSetString(source)] = aSourceContent;\n\t } else if (this._sourcesContents) {\n\t // Remove the source file from the _sourcesContents map.\n\t // If the _sourcesContents map is empty, set the property to null.\n\t delete this._sourcesContents[util.toSetString(source)];\n\t if (Object.keys(this._sourcesContents).length === 0) {\n\t this._sourcesContents = null;\n\t }\n\t }\n\t };\n\t\n\t/**\n\t * Applies the mappings of a sub-source-map for a specific source file to the\n\t * source map being generated. Each mapping to the supplied source file is\n\t * rewritten using the supplied source map. Note: The resolution for the\n\t * resulting mappings is the minimium of this map and the supplied map.\n\t *\n\t * @param aSourceMapConsumer The source map to be applied.\n\t * @param aSourceFile Optional. The filename of the source file.\n\t * If omitted, SourceMapConsumer's file property will be used.\n\t * @param aSourceMapPath Optional. The dirname of the path to the source map\n\t * to be applied. If relative, it is relative to the SourceMapConsumer.\n\t * This parameter is needed when the two source maps aren't in the same\n\t * directory, and the source map to be applied contains relative source\n\t * paths. If so, those relative source paths need to be rewritten\n\t * relative to the SourceMapGenerator.\n\t */\n\tSourceMapGenerator.prototype.applySourceMap =\n\t function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n\t var sourceFile = aSourceFile;\n\t // If aSourceFile is omitted, we will use the file property of the SourceMap\n\t if (aSourceFile == null) {\n\t if (aSourceMapConsumer.file == null) {\n\t throw new Error(\n\t 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n\t 'or the source map\\'s \"file\" property. Both were omitted.'\n\t );\n\t }\n\t sourceFile = aSourceMapConsumer.file;\n\t }\n\t var sourceRoot = this._sourceRoot;\n\t // Make \"sourceFile\" relative if an absolute Url is passed.\n\t if (sourceRoot != null) {\n\t sourceFile = util.relative(sourceRoot, sourceFile);\n\t }\n\t // Applying the SourceMap can add and remove items from the sources and\n\t // the names array.\n\t var newSources = new ArraySet();\n\t var newNames = new ArraySet();\n\t\n\t // Find mappings for the \"sourceFile\"\n\t this._mappings.unsortedForEach(function (mapping) {\n\t if (mapping.source === sourceFile && mapping.originalLine != null) {\n\t // Check if it can be mapped by the source map, then update the mapping.\n\t var original = aSourceMapConsumer.originalPositionFor({\n\t line: mapping.originalLine,\n\t column: mapping.originalColumn\n\t });\n\t if (original.source != null) {\n\t // Copy mapping\n\t mapping.source = original.source;\n\t if (aSourceMapPath != null) {\n\t mapping.source = util.join(aSourceMapPath, mapping.source)\n\t }\n\t if (sourceRoot != null) {\n\t mapping.source = util.relative(sourceRoot, mapping.source);\n\t }\n\t mapping.originalLine = original.line;\n\t mapping.originalColumn = original.column;\n\t if (original.name != null) {\n\t mapping.name = original.name;\n\t }\n\t }\n\t }\n\t\n\t var source = mapping.source;\n\t if (source != null && !newSources.has(source)) {\n\t newSources.add(source);\n\t }\n\t\n\t var name = mapping.name;\n\t if (name != null && !newNames.has(name)) {\n\t newNames.add(name);\n\t }\n\t\n\t }, this);\n\t this._sources = newSources;\n\t this._names = newNames;\n\t\n\t // Copy sourcesContents of applied map.\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t if (aSourceMapPath != null) {\n\t sourceFile = util.join(aSourceMapPath, sourceFile);\n\t }\n\t if (sourceRoot != null) {\n\t sourceFile = util.relative(sourceRoot, sourceFile);\n\t }\n\t this.setSourceContent(sourceFile, content);\n\t }\n\t }, this);\n\t };\n\t\n\t/**\n\t * A mapping can have one of the three levels of data:\n\t *\n\t * 1. Just the generated position.\n\t * 2. The Generated position, original position, and original source.\n\t * 3. Generated and original position, original source, as well as a name\n\t * token.\n\t *\n\t * To maintain consistency, we validate that any new mapping being added falls\n\t * in to one of these categories.\n\t */\n\tSourceMapGenerator.prototype._validateMapping =\n\t function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n\t aName) {\n\t // When aOriginal is truthy but has empty values for .line and .column,\n\t // it is most likely a programmer error. In this case we throw a very\n\t // specific error message to try to guide them the right way.\n\t // For example: https://github.com/Polymer/polymer-bundler/pull/519\n\t if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n\t throw new Error(\n\t 'original.line and original.column are not numbers -- you probably meant to omit ' +\n\t 'the original mapping entirely and only map the generated position. If so, pass ' +\n\t 'null for the original mapping instead of an object with empty or null values.'\n\t );\n\t }\n\t\n\t if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n\t && aGenerated.line > 0 && aGenerated.column >= 0\n\t && !aOriginal && !aSource && !aName) {\n\t // Case 1.\n\t return;\n\t }\n\t else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n\t && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n\t && aGenerated.line > 0 && aGenerated.column >= 0\n\t && aOriginal.line > 0 && aOriginal.column >= 0\n\t && aSource) {\n\t // Cases 2 and 3.\n\t return;\n\t }\n\t else {\n\t throw new Error('Invalid mapping: ' + JSON.stringify({\n\t generated: aGenerated,\n\t source: aSource,\n\t original: aOriginal,\n\t name: aName\n\t }));\n\t }\n\t };\n\t\n\t/**\n\t * Serialize the accumulated mappings in to the stream of base 64 VLQs\n\t * specified by the source map format.\n\t */\n\tSourceMapGenerator.prototype._serializeMappings =\n\t function SourceMapGenerator_serializeMappings() {\n\t var previousGeneratedColumn = 0;\n\t var previousGeneratedLine = 1;\n\t var previousOriginalColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousName = 0;\n\t var previousSource = 0;\n\t var result = '';\n\t var next;\n\t var mapping;\n\t var nameIdx;\n\t var sourceIdx;\n\t\n\t var mappings = this._mappings.toArray();\n\t for (var i = 0, len = mappings.length; i < len; i++) {\n\t mapping = mappings[i];\n\t next = ''\n\t\n\t if (mapping.generatedLine !== previousGeneratedLine) {\n\t previousGeneratedColumn = 0;\n\t while (mapping.generatedLine !== previousGeneratedLine) {\n\t next += ';';\n\t previousGeneratedLine++;\n\t }\n\t }\n\t else {\n\t if (i > 0) {\n\t if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n\t continue;\n\t }\n\t next += ',';\n\t }\n\t }\n\t\n\t next += base64VLQ.encode(mapping.generatedColumn\n\t - previousGeneratedColumn);\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (mapping.source != null) {\n\t sourceIdx = this._sources.indexOf(mapping.source);\n\t next += base64VLQ.encode(sourceIdx - previousSource);\n\t previousSource = sourceIdx;\n\t\n\t // lines are stored 0-based in SourceMap spec version 3\n\t next += base64VLQ.encode(mapping.originalLine - 1\n\t - previousOriginalLine);\n\t previousOriginalLine = mapping.originalLine - 1;\n\t\n\t next += base64VLQ.encode(mapping.originalColumn\n\t - previousOriginalColumn);\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (mapping.name != null) {\n\t nameIdx = this._names.indexOf(mapping.name);\n\t next += base64VLQ.encode(nameIdx - previousName);\n\t previousName = nameIdx;\n\t }\n\t }\n\t\n\t result += next;\n\t }\n\t\n\t return result;\n\t };\n\t\n\tSourceMapGenerator.prototype._generateSourcesContent =\n\t function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n\t return aSources.map(function (source) {\n\t if (!this._sourcesContents) {\n\t return null;\n\t }\n\t if (aSourceRoot != null) {\n\t source = util.relative(aSourceRoot, source);\n\t }\n\t var key = util.toSetString(source);\n\t return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n\t ? this._sourcesContents[key]\n\t : null;\n\t }, this);\n\t };\n\t\n\t/**\n\t * Externalize the source map.\n\t */\n\tSourceMapGenerator.prototype.toJSON =\n\t function SourceMapGenerator_toJSON() {\n\t var map = {\n\t version: this._version,\n\t sources: this._sources.toArray(),\n\t names: this._names.toArray(),\n\t mappings: this._serializeMappings()\n\t };\n\t if (this._file != null) {\n\t map.file = this._file;\n\t }\n\t if (this._sourceRoot != null) {\n\t map.sourceRoot = this._sourceRoot;\n\t }\n\t if (this._sourcesContents) {\n\t map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n\t }\n\t\n\t return map;\n\t };\n\t\n\t/**\n\t * Render the source map being generated to a string.\n\t */\n\tSourceMapGenerator.prototype.toString =\n\t function SourceMapGenerator_toString() {\n\t return JSON.stringify(this.toJSON());\n\t };\n\t\n\texports.SourceMapGenerator = SourceMapGenerator;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t *\n\t * Based on the Base 64 VLQ implementation in Closure Compiler:\n\t * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n\t *\n\t * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n\t * Redistribution and use in source and binary forms, with or without\n\t * modification, are permitted provided that the following conditions are\n\t * met:\n\t *\n\t * * Redistributions of source code must retain the above copyright\n\t * notice, this list of conditions and the following disclaimer.\n\t * * Redistributions in binary form must reproduce the above\n\t * copyright notice, this list of conditions and the following\n\t * disclaimer in the documentation and/or other materials provided\n\t * with the distribution.\n\t * * Neither the name of Google Inc. nor the names of its\n\t * contributors may be used to endorse or promote products derived\n\t * from this software without specific prior written permission.\n\t *\n\t * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\t * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n\t * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n\t * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n\t * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n\t * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n\t * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\t * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\t * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\t * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t */\n\t\n\tvar base64 = __webpack_require__(3);\n\t\n\t// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n\t// length quantities we use in the source map spec, the first bit is the sign,\n\t// the next four bits are the actual value, and the 6th bit is the\n\t// continuation bit. The continuation bit tells us whether there are more\n\t// digits in this value following this digit.\n\t//\n\t// Continuation\n\t// | Sign\n\t// | |\n\t// V V\n\t// 101011\n\t\n\tvar VLQ_BASE_SHIFT = 5;\n\t\n\t// binary: 100000\n\tvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\t\n\t// binary: 011111\n\tvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\t\n\t// binary: 100000\n\tvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\t\n\t/**\n\t * Converts from a two-complement value to a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n\t * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n\t */\n\tfunction toVLQSigned(aValue) {\n\t return aValue < 0\n\t ? ((-aValue) << 1) + 1\n\t : (aValue << 1) + 0;\n\t}\n\t\n\t/**\n\t * Converts to a two-complement value from a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n\t * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n\t */\n\tfunction fromVLQSigned(aValue) {\n\t var isNegative = (aValue & 1) === 1;\n\t var shifted = aValue >> 1;\n\t return isNegative\n\t ? -shifted\n\t : shifted;\n\t}\n\t\n\t/**\n\t * Returns the base 64 VLQ encoded value.\n\t */\n\texports.encode = function base64VLQ_encode(aValue) {\n\t var encoded = \"\";\n\t var digit;\n\t\n\t var vlq = toVLQSigned(aValue);\n\t\n\t do {\n\t digit = vlq & VLQ_BASE_MASK;\n\t vlq >>>= VLQ_BASE_SHIFT;\n\t if (vlq > 0) {\n\t // There are still more digits in this value, so we must make sure the\n\t // continuation bit is marked.\n\t digit |= VLQ_CONTINUATION_BIT;\n\t }\n\t encoded += base64.encode(digit);\n\t } while (vlq > 0);\n\t\n\t return encoded;\n\t};\n\t\n\t/**\n\t * Decodes the next base 64 VLQ value from the given string and returns the\n\t * value and the rest of the string via the out parameter.\n\t */\n\texports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n\t var strLen = aStr.length;\n\t var result = 0;\n\t var shift = 0;\n\t var continuation, digit;\n\t\n\t do {\n\t if (aIndex >= strLen) {\n\t throw new Error(\"Expected more digits in base 64 VLQ value.\");\n\t }\n\t\n\t digit = base64.decode(aStr.charCodeAt(aIndex++));\n\t if (digit === -1) {\n\t throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n\t }\n\t\n\t continuation = !!(digit & VLQ_CONTINUATION_BIT);\n\t digit &= VLQ_BASE_MASK;\n\t result = result + (digit << shift);\n\t shift += VLQ_BASE_SHIFT;\n\t } while (continuation);\n\t\n\t aOutParam.value = fromVLQSigned(result);\n\t aOutParam.rest = aIndex;\n\t};\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\t\n\t/**\n\t * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n\t */\n\texports.encode = function (number) {\n\t if (0 <= number && number < intToCharMap.length) {\n\t return intToCharMap[number];\n\t }\n\t throw new TypeError(\"Must be between 0 and 63: \" + number);\n\t};\n\t\n\t/**\n\t * Decode a single base 64 character code digit to an integer. Returns -1 on\n\t * failure.\n\t */\n\texports.decode = function (charCode) {\n\t var bigA = 65; // 'A'\n\t var bigZ = 90; // 'Z'\n\t\n\t var littleA = 97; // 'a'\n\t var littleZ = 122; // 'z'\n\t\n\t var zero = 48; // '0'\n\t var nine = 57; // '9'\n\t\n\t var plus = 43; // '+'\n\t var slash = 47; // '/'\n\t\n\t var littleOffset = 26;\n\t var numberOffset = 52;\n\t\n\t // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n\t if (bigA <= charCode && charCode <= bigZ) {\n\t return (charCode - bigA);\n\t }\n\t\n\t // 26 - 51: abcdefghijklmnopqrstuvwxyz\n\t if (littleA <= charCode && charCode <= littleZ) {\n\t return (charCode - littleA + littleOffset);\n\t }\n\t\n\t // 52 - 61: 0123456789\n\t if (zero <= charCode && charCode <= nine) {\n\t return (charCode - zero + numberOffset);\n\t }\n\t\n\t // 62: +\n\t if (charCode == plus) {\n\t return 62;\n\t }\n\t\n\t // 63: /\n\t if (charCode == slash) {\n\t return 63;\n\t }\n\t\n\t // Invalid base64 digit.\n\t return -1;\n\t};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\t/**\n\t * This is a helper function for getting values from parameter/options\n\t * objects.\n\t *\n\t * @param args The object we are extracting values from\n\t * @param name The name of the property we are getting.\n\t * @param defaultValue An optional value to return if the property is missing\n\t * from the object. If this is not specified and the property is missing, an\n\t * error will be thrown.\n\t */\n\tfunction getArg(aArgs, aName, aDefaultValue) {\n\t if (aName in aArgs) {\n\t return aArgs[aName];\n\t } else if (arguments.length === 3) {\n\t return aDefaultValue;\n\t } else {\n\t throw new Error('\"' + aName + '\" is a required argument.');\n\t }\n\t}\n\texports.getArg = getArg;\n\t\n\tvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\n\tvar dataUrlRegexp = /^data:.+\\,.+$/;\n\t\n\tfunction urlParse(aUrl) {\n\t var match = aUrl.match(urlRegexp);\n\t if (!match) {\n\t return null;\n\t }\n\t return {\n\t scheme: match[1],\n\t auth: match[2],\n\t host: match[3],\n\t port: match[4],\n\t path: match[5]\n\t };\n\t}\n\texports.urlParse = urlParse;\n\t\n\tfunction urlGenerate(aParsedUrl) {\n\t var url = '';\n\t if (aParsedUrl.scheme) {\n\t url += aParsedUrl.scheme + ':';\n\t }\n\t url += '//';\n\t if (aParsedUrl.auth) {\n\t url += aParsedUrl.auth + '@';\n\t }\n\t if (aParsedUrl.host) {\n\t url += aParsedUrl.host;\n\t }\n\t if (aParsedUrl.port) {\n\t url += \":\" + aParsedUrl.port\n\t }\n\t if (aParsedUrl.path) {\n\t url += aParsedUrl.path;\n\t }\n\t return url;\n\t}\n\texports.urlGenerate = urlGenerate;\n\t\n\t/**\n\t * Normalizes a path, or the path portion of a URL:\n\t *\n\t * - Replaces consecutive slashes with one slash.\n\t * - Removes unnecessary '.' parts.\n\t * - Removes unnecessary '<dir>/..' parts.\n\t *\n\t * Based on code in the Node.js 'path' core module.\n\t *\n\t * @param aPath The path or url to normalize.\n\t */\n\tfunction normalize(aPath) {\n\t var path = aPath;\n\t var url = urlParse(aPath);\n\t if (url) {\n\t if (!url.path) {\n\t return aPath;\n\t }\n\t path = url.path;\n\t }\n\t var isAbsolute = exports.isAbsolute(path);\n\t\n\t var parts = path.split(/\\/+/);\n\t for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n\t part = parts[i];\n\t if (part === '.') {\n\t parts.splice(i, 1);\n\t } else if (part === '..') {\n\t up++;\n\t } else if (up > 0) {\n\t if (part === '') {\n\t // The first part is blank if the path is absolute. Trying to go\n\t // above the root is a no-op. Therefore we can remove all '..' parts\n\t // directly after the root.\n\t parts.splice(i + 1, up);\n\t up = 0;\n\t } else {\n\t parts.splice(i, 2);\n\t up--;\n\t }\n\t }\n\t }\n\t path = parts.join('/');\n\t\n\t if (path === '') {\n\t path = isAbsolute ? '/' : '.';\n\t }\n\t\n\t if (url) {\n\t url.path = path;\n\t return urlGenerate(url);\n\t }\n\t return path;\n\t}\n\texports.normalize = normalize;\n\t\n\t/**\n\t * Joins two paths/URLs.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be joined with the root.\n\t *\n\t * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n\t * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n\t * first.\n\t * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n\t * is updated with the result and aRoot is returned. Otherwise the result\n\t * is returned.\n\t * - If aPath is absolute, the result is aPath.\n\t * - Otherwise the two paths are joined with a slash.\n\t * - Joining for example 'http://' and 'www.example.com' is also supported.\n\t */\n\tfunction join(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t if (aPath === \"\") {\n\t aPath = \".\";\n\t }\n\t var aPathUrl = urlParse(aPath);\n\t var aRootUrl = urlParse(aRoot);\n\t if (aRootUrl) {\n\t aRoot = aRootUrl.path || '/';\n\t }\n\t\n\t // `join(foo, '//www.example.org')`\n\t if (aPathUrl && !aPathUrl.scheme) {\n\t if (aRootUrl) {\n\t aPathUrl.scheme = aRootUrl.scheme;\n\t }\n\t return urlGenerate(aPathUrl);\n\t }\n\t\n\t if (aPathUrl || aPath.match(dataUrlRegexp)) {\n\t return aPath;\n\t }\n\t\n\t // `join('http://', 'www.example.com')`\n\t if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n\t aRootUrl.host = aPath;\n\t return urlGenerate(aRootUrl);\n\t }\n\t\n\t var joined = aPath.charAt(0) === '/'\n\t ? aPath\n\t : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\t\n\t if (aRootUrl) {\n\t aRootUrl.path = joined;\n\t return urlGenerate(aRootUrl);\n\t }\n\t return joined;\n\t}\n\texports.join = join;\n\t\n\texports.isAbsolute = function (aPath) {\n\t return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n\t};\n\t\n\t/**\n\t * Make a path relative to a URL or another path.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be made relative to aRoot.\n\t */\n\tfunction relative(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t\n\t aRoot = aRoot.replace(/\\/$/, '');\n\t\n\t // It is possible for the path to be above the root. In this case, simply\n\t // checking whether the root is a prefix of the path won't work. Instead, we\n\t // need to remove components from the root one by one, until either we find\n\t // a prefix that fits, or we run out of components to remove.\n\t var level = 0;\n\t while (aPath.indexOf(aRoot + '/') !== 0) {\n\t var index = aRoot.lastIndexOf(\"/\");\n\t if (index < 0) {\n\t return aPath;\n\t }\n\t\n\t // If the only part of the root that is left is the scheme (i.e. http://,\n\t // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n\t // have exhausted all components, so the path is not relative to the root.\n\t aRoot = aRoot.slice(0, index);\n\t if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n\t return aPath;\n\t }\n\t\n\t ++level;\n\t }\n\t\n\t // Make sure we add a \"../\" for each component we removed from the root.\n\t return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n\t}\n\texports.relative = relative;\n\t\n\tvar supportsNullProto = (function () {\n\t var obj = Object.create(null);\n\t return !('__proto__' in obj);\n\t}());\n\t\n\tfunction identity (s) {\n\t return s;\n\t}\n\t\n\t/**\n\t * Because behavior goes wacky when you set `__proto__` on objects, we\n\t * have to prefix all the strings in our set with an arbitrary character.\n\t *\n\t * See https://github.com/mozilla/source-map/pull/31 and\n\t * https://github.com/mozilla/source-map/issues/30\n\t *\n\t * @param String aStr\n\t */\n\tfunction toSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return '$' + aStr;\n\t }\n\t\n\t return aStr;\n\t}\n\texports.toSetString = supportsNullProto ? identity : toSetString;\n\t\n\tfunction fromSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return aStr.slice(1);\n\t }\n\t\n\t return aStr;\n\t}\n\texports.fromSetString = supportsNullProto ? identity : fromSetString;\n\t\n\tfunction isProtoString(s) {\n\t if (!s) {\n\t return false;\n\t }\n\t\n\t var length = s.length;\n\t\n\t if (length < 9 /* \"__proto__\".length */) {\n\t return false;\n\t }\n\t\n\t if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n\t s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n\t s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n\t s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 9) !== 95 /* '_' */) {\n\t return false;\n\t }\n\t\n\t for (var i = length - 10; i >= 0; i--) {\n\t if (s.charCodeAt(i) !== 36 /* '$' */) {\n\t return false;\n\t }\n\t }\n\t\n\t return true;\n\t}\n\t\n\t/**\n\t * Comparator between two mappings where the original positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same original source/line/column, but different generated\n\t * line and column the same. Useful when searching for a mapping with a\n\t * stubbed out mapping.\n\t */\n\tfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n\t var cmp = mappingA.source - mappingB.source;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0 || onlyCompareOriginal) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return mappingA.name - mappingB.name;\n\t}\n\texports.compareByOriginalPositions = compareByOriginalPositions;\n\t\n\t/**\n\t * Comparator between two mappings with deflated source and name indices where\n\t * the generated positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same generated line and column, but different\n\t * source/name/original line and column the same. Useful when searching for a\n\t * mapping with a stubbed out mapping.\n\t */\n\tfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0 || onlyCompareGenerated) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.source - mappingB.source;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return mappingA.name - mappingB.name;\n\t}\n\texports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\t\n\tfunction strcmp(aStr1, aStr2) {\n\t if (aStr1 === aStr2) {\n\t return 0;\n\t }\n\t\n\t if (aStr1 > aStr2) {\n\t return 1;\n\t }\n\t\n\t return -1;\n\t}\n\t\n\t/**\n\t * Comparator between two mappings with inflated source and name strings where\n\t * the generated positions are compared.\n\t */\n\tfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar hasNativeMap = typeof Map !== \"undefined\";\n\t\n\t/**\n\t * A data structure which is a combination of an array and a set. Adding a new\n\t * member is O(1), testing for membership is O(1), and finding the index of an\n\t * element is O(1). Removing elements from the set is not supported. Only\n\t * strings are supported for membership.\n\t */\n\tfunction ArraySet() {\n\t this._array = [];\n\t this._set = hasNativeMap ? new Map() : Object.create(null);\n\t}\n\t\n\t/**\n\t * Static method for creating ArraySet instances from an existing array.\n\t */\n\tArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n\t var set = new ArraySet();\n\t for (var i = 0, len = aArray.length; i < len; i++) {\n\t set.add(aArray[i], aAllowDuplicates);\n\t }\n\t return set;\n\t};\n\t\n\t/**\n\t * Return how many unique items are in this ArraySet. If duplicates have been\n\t * added, than those do not count towards the size.\n\t *\n\t * @returns Number\n\t */\n\tArraySet.prototype.size = function ArraySet_size() {\n\t return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n\t};\n\t\n\t/**\n\t * Add the given string to this set.\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n\t var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n\t var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n\t var idx = this._array.length;\n\t if (!isDuplicate || aAllowDuplicates) {\n\t this._array.push(aStr);\n\t }\n\t if (!isDuplicate) {\n\t if (hasNativeMap) {\n\t this._set.set(aStr, idx);\n\t } else {\n\t this._set[sStr] = idx;\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Is the given string a member of this set?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.has = function ArraySet_has(aStr) {\n\t if (hasNativeMap) {\n\t return this._set.has(aStr);\n\t } else {\n\t var sStr = util.toSetString(aStr);\n\t return has.call(this._set, sStr);\n\t }\n\t};\n\t\n\t/**\n\t * What is the index of the given string in the array?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n\t if (hasNativeMap) {\n\t var idx = this._set.get(aStr);\n\t if (idx >= 0) {\n\t return idx;\n\t }\n\t } else {\n\t var sStr = util.toSetString(aStr);\n\t if (has.call(this._set, sStr)) {\n\t return this._set[sStr];\n\t }\n\t }\n\t\n\t throw new Error('\"' + aStr + '\" is not in the set.');\n\t};\n\t\n\t/**\n\t * What is the element at the given index?\n\t *\n\t * @param Number aIdx\n\t */\n\tArraySet.prototype.at = function ArraySet_at(aIdx) {\n\t if (aIdx >= 0 && aIdx < this._array.length) {\n\t return this._array[aIdx];\n\t }\n\t throw new Error('No element indexed by ' + aIdx);\n\t};\n\t\n\t/**\n\t * Returns the array representation of this set (which has the proper indices\n\t * indicated by indexOf). Note that this is a copy of the internal array used\n\t * for storing the members so that no one can mess with internal state.\n\t */\n\tArraySet.prototype.toArray = function ArraySet_toArray() {\n\t return this._array.slice();\n\t};\n\t\n\texports.ArraySet = ArraySet;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2014 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\t\n\t/**\n\t * Determine whether mappingB is after mappingA with respect to generated\n\t * position.\n\t */\n\tfunction generatedPositionAfter(mappingA, mappingB) {\n\t // Optimized for most common case\n\t var lineA = mappingA.generatedLine;\n\t var lineB = mappingB.generatedLine;\n\t var columnA = mappingA.generatedColumn;\n\t var columnB = mappingB.generatedColumn;\n\t return lineB > lineA || lineB == lineA && columnB >= columnA ||\n\t util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n\t}\n\t\n\t/**\n\t * A data structure to provide a sorted view of accumulated mappings in a\n\t * performance conscious manner. It trades a neglibable overhead in general\n\t * case for a large speedup in case of mappings being added in order.\n\t */\n\tfunction MappingList() {\n\t this._array = [];\n\t this._sorted = true;\n\t // Serves as infimum\n\t this._last = {generatedLine: -1, generatedColumn: 0};\n\t}\n\t\n\t/**\n\t * Iterate through internal items. This method takes the same arguments that\n\t * `Array.prototype.forEach` takes.\n\t *\n\t * NOTE: The order of the mappings is NOT guaranteed.\n\t */\n\tMappingList.prototype.unsortedForEach =\n\t function MappingList_forEach(aCallback, aThisArg) {\n\t this._array.forEach(aCallback, aThisArg);\n\t };\n\t\n\t/**\n\t * Add the given source mapping.\n\t *\n\t * @param Object aMapping\n\t */\n\tMappingList.prototype.add = function MappingList_add(aMapping) {\n\t if (generatedPositionAfter(this._last, aMapping)) {\n\t this._last = aMapping;\n\t this._array.push(aMapping);\n\t } else {\n\t this._sorted = false;\n\t this._array.push(aMapping);\n\t }\n\t};\n\t\n\t/**\n\t * Returns the flat, sorted array of mappings. The mappings are sorted by\n\t * generated position.\n\t *\n\t * WARNING: This method returns internal data without copying, for\n\t * performance. The return value must NOT be mutated, and should be treated as\n\t * an immutable borrow. If you want to take ownership, you must make your own\n\t * copy.\n\t */\n\tMappingList.prototype.toArray = function MappingList_toArray() {\n\t if (!this._sorted) {\n\t this._array.sort(util.compareByGeneratedPositionsInflated);\n\t this._sorted = true;\n\t }\n\t return this._array;\n\t};\n\t\n\texports.MappingList = MappingList;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\tvar binarySearch = __webpack_require__(8);\n\tvar ArraySet = __webpack_require__(5).ArraySet;\n\tvar base64VLQ = __webpack_require__(2);\n\tvar quickSort = __webpack_require__(9).quickSort;\n\t\n\tfunction SourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\t\n\t return sourceMap.sections != null\n\t ? new IndexedSourceMapConsumer(sourceMap)\n\t : new BasicSourceMapConsumer(sourceMap);\n\t}\n\t\n\tSourceMapConsumer.fromSourceMap = function(aSourceMap) {\n\t return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n\t}\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tSourceMapConsumer.prototype._version = 3;\n\t\n\t// `__generatedMappings` and `__originalMappings` are arrays that hold the\n\t// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n\t// are lazily instantiated, accessed via the `_generatedMappings` and\n\t// `_originalMappings` getters respectively, and we only parse the mappings\n\t// and create these arrays once queried for a source location. We jump through\n\t// these hoops because there can be many thousands of mappings, and parsing\n\t// them is expensive, so we only want to do it if we must.\n\t//\n\t// Each object in the arrays is of the form:\n\t//\n\t// {\n\t// generatedLine: The line number in the generated code,\n\t// generatedColumn: The column number in the generated code,\n\t// source: The path to the original source file that generated this\n\t// chunk of code,\n\t// originalLine: The line number in the original source that\n\t// corresponds to this chunk of generated code,\n\t// originalColumn: The column number in the original source that\n\t// corresponds to this chunk of generated code,\n\t// name: The name of the original symbol which generated this chunk of\n\t// code.\n\t// }\n\t//\n\t// All properties except for `generatedLine` and `generatedColumn` can be\n\t// `null`.\n\t//\n\t// `_generatedMappings` is ordered by the generated positions.\n\t//\n\t// `_originalMappings` is ordered by the original positions.\n\t\n\tSourceMapConsumer.prototype.__generatedMappings = null;\n\tObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n\t get: function () {\n\t if (!this.__generatedMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__generatedMappings;\n\t }\n\t});\n\t\n\tSourceMapConsumer.prototype.__originalMappings = null;\n\tObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n\t get: function () {\n\t if (!this.__originalMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__originalMappings;\n\t }\n\t});\n\t\n\tSourceMapConsumer.prototype._charIsMappingSeparator =\n\t function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n\t var c = aStr.charAt(index);\n\t return c === \";\" || c === \",\";\n\t };\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t throw new Error(\"Subclasses must implement _parseMappings\");\n\t };\n\t\n\tSourceMapConsumer.GENERATED_ORDER = 1;\n\tSourceMapConsumer.ORIGINAL_ORDER = 2;\n\t\n\tSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\n\tSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\t\n\t/**\n\t * Iterate over each mapping between an original source/line/column and a\n\t * generated line/column in this source map.\n\t *\n\t * @param Function aCallback\n\t * The function that is called with each mapping.\n\t * @param Object aContext\n\t * Optional. If specified, this object will be the value of `this` every\n\t * time that `aCallback` is called.\n\t * @param aOrder\n\t * Either `SourceMapConsumer.GENERATED_ORDER` or\n\t * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n\t * iterate over the mappings sorted by the generated file's line/column\n\t * order or the original's source/line/column order, respectively. Defaults to\n\t * `SourceMapConsumer.GENERATED_ORDER`.\n\t */\n\tSourceMapConsumer.prototype.eachMapping =\n\t function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n\t var context = aContext || null;\n\t var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\t\n\t var mappings;\n\t switch (order) {\n\t case SourceMapConsumer.GENERATED_ORDER:\n\t mappings = this._generatedMappings;\n\t break;\n\t case SourceMapConsumer.ORIGINAL_ORDER:\n\t mappings = this._originalMappings;\n\t break;\n\t default:\n\t throw new Error(\"Unknown order of iteration.\");\n\t }\n\t\n\t var sourceRoot = this.sourceRoot;\n\t mappings.map(function (mapping) {\n\t var source = mapping.source === null ? null : this._sources.at(mapping.source);\n\t if (source != null && sourceRoot != null) {\n\t source = util.join(sourceRoot, source);\n\t }\n\t return {\n\t source: source,\n\t generatedLine: mapping.generatedLine,\n\t generatedColumn: mapping.generatedColumn,\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: mapping.name === null ? null : this._names.at(mapping.name)\n\t };\n\t }, this).forEach(aCallback, context);\n\t };\n\t\n\t/**\n\t * Returns all generated line and column information for the original source,\n\t * line, and column provided. If no column is provided, returns all mappings\n\t * corresponding to a either the line we are searching for or the next\n\t * closest line that has any mappings. Otherwise, returns all mappings\n\t * corresponding to the given line and either the column we are searching for\n\t * or the next closest column that has any offsets.\n\t *\n\t * The only argument is an object with the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: Optional. the column number in the original source.\n\t *\n\t * and an array of objects is returned, each with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\tSourceMapConsumer.prototype.allGeneratedPositionsFor =\n\t function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n\t var line = util.getArg(aArgs, 'line');\n\t\n\t // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n\t // returns the index of the closest mapping less than the needle. By\n\t // setting needle.originalColumn to 0, we thus find the last mapping for\n\t // the given line, provided such a mapping exists.\n\t var needle = {\n\t source: util.getArg(aArgs, 'source'),\n\t originalLine: line,\n\t originalColumn: util.getArg(aArgs, 'column', 0)\n\t };\n\t\n\t if (this.sourceRoot != null) {\n\t needle.source = util.relative(this.sourceRoot, needle.source);\n\t }\n\t if (!this._sources.has(needle.source)) {\n\t return [];\n\t }\n\t needle.source = this._sources.indexOf(needle.source);\n\t\n\t var mappings = [];\n\t\n\t var index = this._findMapping(needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t binarySearch.LEAST_UPPER_BOUND);\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (aArgs.column === undefined) {\n\t var originalLine = mapping.originalLine;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we found. Since\n\t // mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we found.\n\t while (mapping && mapping.originalLine === originalLine) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t } else {\n\t var originalColumn = mapping.originalColumn;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we were searching for.\n\t // Since mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we are searching for.\n\t while (mapping &&\n\t mapping.originalLine === line &&\n\t mapping.originalColumn == originalColumn) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t }\n\t }\n\t\n\t return mappings;\n\t };\n\t\n\texports.SourceMapConsumer = SourceMapConsumer;\n\t\n\t/**\n\t * A BasicSourceMapConsumer instance represents a parsed source map which we can\n\t * query for information about the original file positions by giving it a file\n\t * position in the generated source.\n\t *\n\t * The only parameter is the raw source map (either as a JSON string, or\n\t * already parsed to an object). According to the spec, source maps have the\n\t * following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - sources: An array of URLs to the original source files.\n\t * - names: An array of identifiers which can be referrenced by individual mappings.\n\t * - sourceRoot: Optional. The URL root from which all sources are relative.\n\t * - sourcesContent: Optional. An array of contents of the original source files.\n\t * - mappings: A string of base64 VLQs which contain the actual mappings.\n\t * - file: Optional. The generated file this source map is associated with.\n\t *\n\t * Here is an example source map, taken from the source map spec[0]:\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"out.js\",\n\t * sourceRoot : \"\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AA,AB;;ABCDE;\"\n\t * }\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n\t */\n\tfunction BasicSourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sources = util.getArg(sourceMap, 'sources');\n\t // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n\t // requires the array) to play nice here.\n\t var names = util.getArg(sourceMap, 'names', []);\n\t var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n\t var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n\t var mappings = util.getArg(sourceMap, 'mappings');\n\t var file = util.getArg(sourceMap, 'file', null);\n\t\n\t // Once again, Sass deviates from the spec and supplies the version as a\n\t // string rather than a number, so we use loose equality checking here.\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t sources = sources\n\t .map(String)\n\t // Some source maps produce relative source paths like \"./foo.js\" instead of\n\t // \"foo.js\". Normalize these first so that future comparisons will succeed.\n\t // See bugzil.la/1090768.\n\t .map(util.normalize)\n\t // Always ensure that absolute sources are internally stored relative to\n\t // the source root, if the source root is absolute. Not doing this would\n\t // be particularly problematic when the source root is a prefix of the\n\t // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n\t .map(function (source) {\n\t return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n\t ? util.relative(sourceRoot, source)\n\t : source;\n\t });\n\t\n\t // Pass `true` below to allow duplicate names and sources. While source maps\n\t // are intended to be compressed and deduplicated, the TypeScript compiler\n\t // sometimes generates source maps with duplicates in them. See Github issue\n\t // #72 and bugzil.la/889492.\n\t this._names = ArraySet.fromArray(names.map(String), true);\n\t this._sources = ArraySet.fromArray(sources, true);\n\t\n\t this.sourceRoot = sourceRoot;\n\t this.sourcesContent = sourcesContent;\n\t this._mappings = mappings;\n\t this.file = file;\n\t}\n\t\n\tBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\t\n\t/**\n\t * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n\t *\n\t * @param SourceMapGenerator aSourceMap\n\t * The source map that will be consumed.\n\t * @returns BasicSourceMapConsumer\n\t */\n\tBasicSourceMapConsumer.fromSourceMap =\n\t function SourceMapConsumer_fromSourceMap(aSourceMap) {\n\t var smc = Object.create(BasicSourceMapConsumer.prototype);\n\t\n\t var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n\t var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n\t smc.sourceRoot = aSourceMap._sourceRoot;\n\t smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n\t smc.sourceRoot);\n\t smc.file = aSourceMap._file;\n\t\n\t // Because we are modifying the entries (by converting string sources and\n\t // names to indices into the sources and names ArraySets), we have to make\n\t // a copy of the entry or else bad things happen. Shared mutable state\n\t // strikes again! See github issue #191.\n\t\n\t var generatedMappings = aSourceMap._mappings.toArray().slice();\n\t var destGeneratedMappings = smc.__generatedMappings = [];\n\t var destOriginalMappings = smc.__originalMappings = [];\n\t\n\t for (var i = 0, length = generatedMappings.length; i < length; i++) {\n\t var srcMapping = generatedMappings[i];\n\t var destMapping = new Mapping;\n\t destMapping.generatedLine = srcMapping.generatedLine;\n\t destMapping.generatedColumn = srcMapping.generatedColumn;\n\t\n\t if (srcMapping.source) {\n\t destMapping.source = sources.indexOf(srcMapping.source);\n\t destMapping.originalLine = srcMapping.originalLine;\n\t destMapping.originalColumn = srcMapping.originalColumn;\n\t\n\t if (srcMapping.name) {\n\t destMapping.name = names.indexOf(srcMapping.name);\n\t }\n\t\n\t destOriginalMappings.push(destMapping);\n\t }\n\t\n\t destGeneratedMappings.push(destMapping);\n\t }\n\t\n\t quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\t\n\t return smc;\n\t };\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tBasicSourceMapConsumer.prototype._version = 3;\n\t\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t return this._sources.toArray().map(function (s) {\n\t return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n\t }, this);\n\t }\n\t});\n\t\n\t/**\n\t * Provide the JIT with a nice shape / hidden class.\n\t */\n\tfunction Mapping() {\n\t this.generatedLine = 0;\n\t this.generatedColumn = 0;\n\t this.source = null;\n\t this.originalLine = null;\n\t this.originalColumn = null;\n\t this.name = null;\n\t}\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tBasicSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t var generatedLine = 1;\n\t var previousGeneratedColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousOriginalColumn = 0;\n\t var previousSource = 0;\n\t var previousName = 0;\n\t var length = aStr.length;\n\t var index = 0;\n\t var cachedSegments = {};\n\t var temp = {};\n\t var originalMappings = [];\n\t var generatedMappings = [];\n\t var mapping, str, segment, end, value;\n\t\n\t while (index < length) {\n\t if (aStr.charAt(index) === ';') {\n\t generatedLine++;\n\t index++;\n\t previousGeneratedColumn = 0;\n\t }\n\t else if (aStr.charAt(index) === ',') {\n\t index++;\n\t }\n\t else {\n\t mapping = new Mapping();\n\t mapping.generatedLine = generatedLine;\n\t\n\t // Because each offset is encoded relative to the previous one,\n\t // many segments often have the same encoding. We can exploit this\n\t // fact by caching the parsed variable length fields of each segment,\n\t // allowing us to avoid a second parse if we encounter the same\n\t // segment again.\n\t for (end = index; end < length; end++) {\n\t if (this._charIsMappingSeparator(aStr, end)) {\n\t break;\n\t }\n\t }\n\t str = aStr.slice(index, end);\n\t\n\t segment = cachedSegments[str];\n\t if (segment) {\n\t index += str.length;\n\t } else {\n\t segment = [];\n\t while (index < end) {\n\t base64VLQ.decode(aStr, index, temp);\n\t value = temp.value;\n\t index = temp.rest;\n\t segment.push(value);\n\t }\n\t\n\t if (segment.length === 2) {\n\t throw new Error('Found a source, but no line and column');\n\t }\n\t\n\t if (segment.length === 3) {\n\t throw new Error('Found a source and line, but no column');\n\t }\n\t\n\t cachedSegments[str] = segment;\n\t }\n\t\n\t // Generated column.\n\t mapping.generatedColumn = previousGeneratedColumn + segment[0];\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (segment.length > 1) {\n\t // Original source.\n\t mapping.source = previousSource + segment[1];\n\t previousSource += segment[1];\n\t\n\t // Original line.\n\t mapping.originalLine = previousOriginalLine + segment[2];\n\t previousOriginalLine = mapping.originalLine;\n\t // Lines are stored 0-based\n\t mapping.originalLine += 1;\n\t\n\t // Original column.\n\t mapping.originalColumn = previousOriginalColumn + segment[3];\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (segment.length > 4) {\n\t // Original name.\n\t mapping.name = previousName + segment[4];\n\t previousName += segment[4];\n\t }\n\t }\n\t\n\t generatedMappings.push(mapping);\n\t if (typeof mapping.originalLine === 'number') {\n\t originalMappings.push(mapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t this.__generatedMappings = generatedMappings;\n\t\n\t quickSort(originalMappings, util.compareByOriginalPositions);\n\t this.__originalMappings = originalMappings;\n\t };\n\t\n\t/**\n\t * Find the mapping that best matches the hypothetical \"needle\" mapping that\n\t * we are searching for in the given \"haystack\" of mappings.\n\t */\n\tBasicSourceMapConsumer.prototype._findMapping =\n\t function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n\t aColumnName, aComparator, aBias) {\n\t // To return the position we are searching for, we must first find the\n\t // mapping for the given position and then return the opposite position it\n\t // points to. Because the mappings are sorted, we can use binary search to\n\t // find the best mapping.\n\t\n\t if (aNeedle[aLineName] <= 0) {\n\t throw new TypeError('Line must be greater than or equal to 1, got '\n\t + aNeedle[aLineName]);\n\t }\n\t if (aNeedle[aColumnName] < 0) {\n\t throw new TypeError('Column must be greater than or equal to 0, got '\n\t + aNeedle[aColumnName]);\n\t }\n\t\n\t return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n\t };\n\t\n\t/**\n\t * Compute the last column for each generated mapping. The last column is\n\t * inclusive.\n\t */\n\tBasicSourceMapConsumer.prototype.computeColumnSpans =\n\t function SourceMapConsumer_computeColumnSpans() {\n\t for (var index = 0; index < this._generatedMappings.length; ++index) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t // Mappings do not contain a field for the last generated columnt. We\n\t // can come up with an optimistic estimate, however, by assuming that\n\t // mappings are contiguous (i.e. given two consecutive mappings, the\n\t // first mapping ends where the second one starts).\n\t if (index + 1 < this._generatedMappings.length) {\n\t var nextMapping = this._generatedMappings[index + 1];\n\t\n\t if (mapping.generatedLine === nextMapping.generatedLine) {\n\t mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n\t continue;\n\t }\n\t }\n\t\n\t // The last mapping for each line spans the entire line.\n\t mapping.lastGeneratedColumn = Infinity;\n\t }\n\t };\n\t\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source.\n\t * - column: The column number in the generated source.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null.\n\t * - column: The column number in the original source, or null.\n\t * - name: The original identifier, or null.\n\t */\n\tBasicSourceMapConsumer.prototype.originalPositionFor =\n\t function SourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._generatedMappings,\n\t \"generatedLine\",\n\t \"generatedColumn\",\n\t util.compareByGeneratedPositionsDeflated,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t if (mapping.generatedLine === needle.generatedLine) {\n\t var source = util.getArg(mapping, 'source', null);\n\t if (source !== null) {\n\t source = this._sources.at(source);\n\t if (this.sourceRoot != null) {\n\t source = util.join(this.sourceRoot, source);\n\t }\n\t }\n\t var name = util.getArg(mapping, 'name', null);\n\t if (name !== null) {\n\t name = this._names.at(name);\n\t }\n\t return {\n\t source: source,\n\t line: util.getArg(mapping, 'originalLine', null),\n\t column: util.getArg(mapping, 'originalColumn', null),\n\t name: name\n\t };\n\t }\n\t }\n\t\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t };\n\t\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function BasicSourceMapConsumer_hasContentsOfAllSources() {\n\t if (!this.sourcesContent) {\n\t return false;\n\t }\n\t return this.sourcesContent.length >= this._sources.size() &&\n\t !this.sourcesContent.some(function (sc) { return sc == null; });\n\t };\n\t\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tBasicSourceMapConsumer.prototype.sourceContentFor =\n\t function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t if (!this.sourcesContent) {\n\t return null;\n\t }\n\t\n\t if (this.sourceRoot != null) {\n\t aSource = util.relative(this.sourceRoot, aSource);\n\t }\n\t\n\t if (this._sources.has(aSource)) {\n\t return this.sourcesContent[this._sources.indexOf(aSource)];\n\t }\n\t\n\t var url;\n\t if (this.sourceRoot != null\n\t && (url = util.urlParse(this.sourceRoot))) {\n\t // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n\t // many users. We can help them out when they expect file:// URIs to\n\t // behave like it would if they were running a local HTTP server. See\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n\t var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n\t if (url.scheme == \"file\"\n\t && this._sources.has(fileUriAbsPath)) {\n\t return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n\t }\n\t\n\t if ((!url.path || url.path == \"/\")\n\t && this._sources.has(\"/\" + aSource)) {\n\t return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n\t }\n\t }\n\t\n\t // This function is used recursively from\n\t // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n\t // don't want to throw if we can't find the source - we just want to\n\t // return null, so we provide a flag to exit gracefully.\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: The column number in the original source.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\tBasicSourceMapConsumer.prototype.generatedPositionFor =\n\t function SourceMapConsumer_generatedPositionFor(aArgs) {\n\t var source = util.getArg(aArgs, 'source');\n\t if (this.sourceRoot != null) {\n\t source = util.relative(this.sourceRoot, source);\n\t }\n\t if (!this._sources.has(source)) {\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t }\n\t source = this._sources.indexOf(source);\n\t\n\t var needle = {\n\t source: source,\n\t originalLine: util.getArg(aArgs, 'line'),\n\t originalColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (mapping.source === needle.source) {\n\t return {\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t };\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t };\n\t\n\texports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\t\n\t/**\n\t * An IndexedSourceMapConsumer instance represents a parsed source map which\n\t * we can query for information. It differs from BasicSourceMapConsumer in\n\t * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n\t * input.\n\t *\n\t * The only parameter is a raw source map (either as a JSON string, or already\n\t * parsed to an object). According to the spec for indexed source maps, they\n\t * have the following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - file: Optional. The generated file this source map is associated with.\n\t * - sections: A list of section definitions.\n\t *\n\t * Each value under the \"sections\" field has two fields:\n\t * - offset: The offset into the original specified at which this section\n\t * begins to apply, defined as an object with a \"line\" and \"column\"\n\t * field.\n\t * - map: A source map definition. This source map could also be indexed,\n\t * but doesn't have to be.\n\t *\n\t * Instead of the \"map\" field, it's also possible to have a \"url\" field\n\t * specifying a URL to retrieve a source map from, but that's currently\n\t * unsupported.\n\t *\n\t * Here's an example source map, taken from the source map spec[0], but\n\t * modified to omit a section which uses the \"url\" field.\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"app.js\",\n\t * sections: [{\n\t * offset: {line:100, column:10},\n\t * map: {\n\t * version : 3,\n\t * file: \"section.js\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AAAA,E;;ABCDE;\"\n\t * }\n\t * }],\n\t * }\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n\t */\n\tfunction IndexedSourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sections = util.getArg(sourceMap, 'sections');\n\t\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t this._sources = new ArraySet();\n\t this._names = new ArraySet();\n\t\n\t var lastOffset = {\n\t line: -1,\n\t column: 0\n\t };\n\t this._sections = sections.map(function (s) {\n\t if (s.url) {\n\t // The url field will require support for asynchronicity.\n\t // See https://github.com/mozilla/source-map/issues/16\n\t throw new Error('Support for url field in sections not implemented.');\n\t }\n\t var offset = util.getArg(s, 'offset');\n\t var offsetLine = util.getArg(offset, 'line');\n\t var offsetColumn = util.getArg(offset, 'column');\n\t\n\t if (offsetLine < lastOffset.line ||\n\t (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n\t throw new Error('Section offsets must be ordered and non-overlapping.');\n\t }\n\t lastOffset = offset;\n\t\n\t return {\n\t generatedOffset: {\n\t // The offset fields are 0-based, but we use 1-based indices when\n\t // encoding/decoding from VLQ.\n\t generatedLine: offsetLine + 1,\n\t generatedColumn: offsetColumn + 1\n\t },\n\t consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n\t }\n\t });\n\t}\n\t\n\tIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tIndexedSourceMapConsumer.prototype._version = 3;\n\t\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t var sources = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n\t sources.push(this._sections[i].consumer.sources[j]);\n\t }\n\t }\n\t return sources;\n\t }\n\t});\n\t\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source.\n\t * - column: The column number in the generated source.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null.\n\t * - column: The column number in the original source, or null.\n\t * - name: The original identifier, or null.\n\t */\n\tIndexedSourceMapConsumer.prototype.originalPositionFor =\n\t function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t // Find the section containing the generated position we're trying to map\n\t // to an original position.\n\t var sectionIndex = binarySearch.search(needle, this._sections,\n\t function(needle, section) {\n\t var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n\t if (cmp) {\n\t return cmp;\n\t }\n\t\n\t return (needle.generatedColumn -\n\t section.generatedOffset.generatedColumn);\n\t });\n\t var section = this._sections[sectionIndex];\n\t\n\t if (!section) {\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t }\n\t\n\t return section.consumer.originalPositionFor({\n\t line: needle.generatedLine -\n\t (section.generatedOffset.generatedLine - 1),\n\t column: needle.generatedColumn -\n\t (section.generatedOffset.generatedLine === needle.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t bias: aArgs.bias\n\t });\n\t };\n\t\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n\t return this._sections.every(function (s) {\n\t return s.consumer.hasContentsOfAllSources();\n\t });\n\t };\n\t\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tIndexedSourceMapConsumer.prototype.sourceContentFor =\n\t function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t var content = section.consumer.sourceContentFor(aSource, true);\n\t if (content) {\n\t return content;\n\t }\n\t }\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: The column number in the original source.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\tIndexedSourceMapConsumer.prototype.generatedPositionFor =\n\t function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t // Only consider this section if the requested source is in the list of\n\t // sources of the consumer.\n\t if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n\t continue;\n\t }\n\t var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n\t if (generatedPosition) {\n\t var ret = {\n\t line: generatedPosition.line +\n\t (section.generatedOffset.generatedLine - 1),\n\t column: generatedPosition.column +\n\t (section.generatedOffset.generatedLine === generatedPosition.line\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0)\n\t };\n\t return ret;\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null\n\t };\n\t };\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tIndexedSourceMapConsumer.prototype._parseMappings =\n\t function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t this.__generatedMappings = [];\n\t this.__originalMappings = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t var sectionMappings = section.consumer._generatedMappings;\n\t for (var j = 0; j < sectionMappings.length; j++) {\n\t var mapping = sectionMappings[j];\n\t\n\t var source = section.consumer._sources.at(mapping.source);\n\t if (section.consumer.sourceRoot !== null) {\n\t source = util.join(section.consumer.sourceRoot, source);\n\t }\n\t this._sources.add(source);\n\t source = this._sources.indexOf(source);\n\t\n\t var name = section.consumer._names.at(mapping.name);\n\t this._names.add(name);\n\t name = this._names.indexOf(name);\n\t\n\t // The mappings coming from the consumer for the section have\n\t // generated positions relative to the start of the section, so we\n\t // need to offset them to be relative to the start of the concatenated\n\t // generated file.\n\t var adjustedMapping = {\n\t source: source,\n\t generatedLine: mapping.generatedLine +\n\t (section.generatedOffset.generatedLine - 1),\n\t generatedColumn: mapping.generatedColumn +\n\t (section.generatedOffset.generatedLine === mapping.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: name\n\t };\n\t\n\t this.__generatedMappings.push(adjustedMapping);\n\t if (typeof adjustedMapping.originalLine === 'number') {\n\t this.__originalMappings.push(adjustedMapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t quickSort(this.__originalMappings, util.compareByOriginalPositions);\n\t };\n\t\n\texports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\texports.GREATEST_LOWER_BOUND = 1;\n\texports.LEAST_UPPER_BOUND = 2;\n\t\n\t/**\n\t * Recursive implementation of binary search.\n\t *\n\t * @param aLow Indices here and lower do not contain the needle.\n\t * @param aHigh Indices here and higher do not contain the needle.\n\t * @param aNeedle The element being searched for.\n\t * @param aHaystack The non-empty array being searched.\n\t * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t */\n\tfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n\t // This function terminates when one of the following is true:\n\t //\n\t // 1. We find the exact element we are looking for.\n\t //\n\t // 2. We did not find the exact element, but we can return the index of\n\t // the next-closest element.\n\t //\n\t // 3. We did not find the exact element, and there is no next-closest\n\t // element than the one we are searching for, so we return -1.\n\t var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n\t var cmp = aCompare(aNeedle, aHaystack[mid], true);\n\t if (cmp === 0) {\n\t // Found the element we are looking for.\n\t return mid;\n\t }\n\t else if (cmp > 0) {\n\t // Our needle is greater than aHaystack[mid].\n\t if (aHigh - mid > 1) {\n\t // The element is in the upper half.\n\t return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // The exact needle element was not found in this haystack. Determine if\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return aHigh < aHaystack.length ? aHigh : -1;\n\t } else {\n\t return mid;\n\t }\n\t }\n\t else {\n\t // Our needle is less than aHaystack[mid].\n\t if (mid - aLow > 1) {\n\t // The element is in the lower half.\n\t return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return mid;\n\t } else {\n\t return aLow < 0 ? -1 : aLow;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * This is an implementation of binary search which will always try and return\n\t * the index of the closest element if there is no exact hit. This is because\n\t * mappings between original and generated line/col pairs are single points,\n\t * and there is an implicit region between each of them, so a miss just means\n\t * that you aren't on the very start of a region.\n\t *\n\t * @param aNeedle The element you are looking for.\n\t * @param aHaystack The array that is being searched.\n\t * @param aCompare A function which takes the needle and an element in the\n\t * array and returns -1, 0, or 1 depending on whether the needle is less\n\t * than, equal to, or greater than the element, respectively.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n\t */\n\texports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n\t if (aHaystack.length === 0) {\n\t return -1;\n\t }\n\t\n\t var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n\t aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n\t if (index < 0) {\n\t return -1;\n\t }\n\t\n\t // We have found either the exact element, or the next-closest element than\n\t // the one we are searching for. However, there may be more than one such\n\t // element. Make sure we always return the smallest of these.\n\t while (index - 1 >= 0) {\n\t if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n\t break;\n\t }\n\t --index;\n\t }\n\t\n\t return index;\n\t};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\t// It turns out that some (most?) JavaScript engines don't self-host\n\t// `Array.prototype.sort`. This makes sense because C++ will likely remain\n\t// faster than JS when doing raw CPU-intensive sorting. However, when using a\n\t// custom comparator function, calling back and forth between the VM's C++ and\n\t// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n\t// worse generated code for the comparator function than would be optimal. In\n\t// fact, when sorting with a comparator, these costs outweigh the benefits of\n\t// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n\t// a ~3500ms mean speed-up in `bench/bench.html`.\n\t\n\t/**\n\t * Swap the elements indexed by `x` and `y` in the array `ary`.\n\t *\n\t * @param {Array} ary\n\t * The array.\n\t * @param {Number} x\n\t * The index of the first item.\n\t * @param {Number} y\n\t * The index of the second item.\n\t */\n\tfunction swap(ary, x, y) {\n\t var temp = ary[x];\n\t ary[x] = ary[y];\n\t ary[y] = temp;\n\t}\n\t\n\t/**\n\t * Returns a random integer within the range `low .. high` inclusive.\n\t *\n\t * @param {Number} low\n\t * The lower bound on the range.\n\t * @param {Number} high\n\t * The upper bound on the range.\n\t */\n\tfunction randomIntInRange(low, high) {\n\t return Math.round(low + (Math.random() * (high - low)));\n\t}\n\t\n\t/**\n\t * The Quick Sort algorithm.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t * @param {Number} p\n\t * Start index of the array\n\t * @param {Number} r\n\t * End index of the array\n\t */\n\tfunction doQuickSort(ary, comparator, p, r) {\n\t // If our lower bound is less than our upper bound, we (1) partition the\n\t // array into two pieces and (2) recurse on each half. If it is not, this is\n\t // the empty array and our base case.\n\t\n\t if (p < r) {\n\t // (1) Partitioning.\n\t //\n\t // The partitioning chooses a pivot between `p` and `r` and moves all\n\t // elements that are less than or equal to the pivot to the before it, and\n\t // all the elements that are greater than it after it. The effect is that\n\t // once partition is done, the pivot is in the exact place it will be when\n\t // the array is put in sorted order, and it will not need to be moved\n\t // again. This runs in O(n) time.\n\t\n\t // Always choose a random pivot so that an input array which is reverse\n\t // sorted does not cause O(n^2) running time.\n\t var pivotIndex = randomIntInRange(p, r);\n\t var i = p - 1;\n\t\n\t swap(ary, pivotIndex, r);\n\t var pivot = ary[r];\n\t\n\t // Immediately after `j` is incremented in this loop, the following hold\n\t // true:\n\t //\n\t // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n\t //\n\t // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n\t for (var j = p; j < r; j++) {\n\t if (comparator(ary[j], pivot) <= 0) {\n\t i += 1;\n\t swap(ary, i, j);\n\t }\n\t }\n\t\n\t swap(ary, i + 1, j);\n\t var q = i + 1;\n\t\n\t // (2) Recurse on each half.\n\t\n\t doQuickSort(ary, comparator, p, q - 1);\n\t doQuickSort(ary, comparator, q + 1, r);\n\t }\n\t}\n\t\n\t/**\n\t * Sort the given array in-place with the given comparator function.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t */\n\texports.quickSort = function (ary, comparator) {\n\t doQuickSort(ary, comparator, 0, ary.length - 1);\n\t};\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;\n\tvar util = __webpack_require__(4);\n\t\n\t// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n\t// operating systems these days (capturing the result).\n\tvar REGEX_NEWLINE = /(\\r?\\n)/;\n\t\n\t// Newline character code for charCodeAt() comparisons\n\tvar NEWLINE_CODE = 10;\n\t\n\t// Private symbol for identifying `SourceNode`s when multiple versions of\n\t// the source-map library are loaded. This MUST NOT CHANGE across\n\t// versions!\n\tvar isSourceNode = \"$$$isSourceNode$$$\";\n\t\n\t/**\n\t * SourceNodes provide a way to abstract over interpolating/concatenating\n\t * snippets of generated JavaScript source code while maintaining the line and\n\t * column information associated with the original source code.\n\t *\n\t * @param aLine The original line number.\n\t * @param aColumn The original column number.\n\t * @param aSource The original source's filename.\n\t * @param aChunks Optional. An array of strings which are snippets of\n\t * generated JS, or other SourceNodes.\n\t * @param aName The original identifier.\n\t */\n\tfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n\t this.children = [];\n\t this.sourceContents = {};\n\t this.line = aLine == null ? null : aLine;\n\t this.column = aColumn == null ? null : aColumn;\n\t this.source = aSource == null ? null : aSource;\n\t this.name = aName == null ? null : aName;\n\t this[isSourceNode] = true;\n\t if (aChunks != null) this.add(aChunks);\n\t}\n\t\n\t/**\n\t * Creates a SourceNode from generated code and a SourceMapConsumer.\n\t *\n\t * @param aGeneratedCode The generated code\n\t * @param aSourceMapConsumer The SourceMap for the generated code\n\t * @param aRelativePath Optional. The path that relative sources in the\n\t * SourceMapConsumer should be relative to.\n\t */\n\tSourceNode.fromStringWithSourceMap =\n\t function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n\t // The SourceNode we want to fill with the generated code\n\t // and the SourceMap\n\t var node = new SourceNode();\n\t\n\t // All even indices of this array are one line of the generated code,\n\t // while all odd indices are the newlines between two adjacent lines\n\t // (since `REGEX_NEWLINE` captures its match).\n\t // Processed fragments are accessed by calling `shiftNextLine`.\n\t var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n\t var remainingLinesIndex = 0;\n\t var shiftNextLine = function() {\n\t var lineContents = getNextLine();\n\t // The last line of a file might not have a newline.\n\t var newLine = getNextLine() || \"\";\n\t return lineContents + newLine;\n\t\n\t function getNextLine() {\n\t return remainingLinesIndex < remainingLines.length ?\n\t remainingLines[remainingLinesIndex++] : undefined;\n\t }\n\t };\n\t\n\t // We need to remember the position of \"remainingLines\"\n\t var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\t\n\t // The generate SourceNodes we need a code range.\n\t // To extract it current and last mapping is used.\n\t // Here we store the last mapping.\n\t var lastMapping = null;\n\t\n\t aSourceMapConsumer.eachMapping(function (mapping) {\n\t if (lastMapping !== null) {\n\t // We add the code from \"lastMapping\" to \"mapping\":\n\t // First check if there is a new line in between.\n\t if (lastGeneratedLine < mapping.generatedLine) {\n\t // Associate first line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t lastGeneratedLine++;\n\t lastGeneratedColumn = 0;\n\t // The remaining code is added without mapping\n\t } else {\n\t // There is no new line in between.\n\t // Associate the code between \"lastGeneratedColumn\" and\n\t // \"mapping.generatedColumn\" with \"lastMapping\"\n\t var nextLine = remainingLines[remainingLinesIndex];\n\t var code = nextLine.substr(0, mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t addMappingWithCode(lastMapping, code);\n\t // No more remaining code, continue\n\t lastMapping = mapping;\n\t return;\n\t }\n\t }\n\t // We add the generated code until the first mapping\n\t // to the SourceNode without any mapping.\n\t // Each line is added as separate string.\n\t while (lastGeneratedLine < mapping.generatedLine) {\n\t node.add(shiftNextLine());\n\t lastGeneratedLine++;\n\t }\n\t if (lastGeneratedColumn < mapping.generatedColumn) {\n\t var nextLine = remainingLines[remainingLinesIndex];\n\t node.add(nextLine.substr(0, mapping.generatedColumn));\n\t remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t }\n\t lastMapping = mapping;\n\t }, this);\n\t // We have processed all mappings.\n\t if (remainingLinesIndex < remainingLines.length) {\n\t if (lastMapping) {\n\t // Associate the remaining code in the current line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t }\n\t // and add the remaining lines without any mapping\n\t node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n\t }\n\t\n\t // Copy sourcesContent into SourceNode\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t if (aRelativePath != null) {\n\t sourceFile = util.join(aRelativePath, sourceFile);\n\t }\n\t node.setSourceContent(sourceFile, content);\n\t }\n\t });\n\t\n\t return node;\n\t\n\t function addMappingWithCode(mapping, code) {\n\t if (mapping === null || mapping.source === undefined) {\n\t node.add(code);\n\t } else {\n\t var source = aRelativePath\n\t ? util.join(aRelativePath, mapping.source)\n\t : mapping.source;\n\t node.add(new SourceNode(mapping.originalLine,\n\t mapping.originalColumn,\n\t source,\n\t code,\n\t mapping.name));\n\t }\n\t }\n\t };\n\t\n\t/**\n\t * Add a chunk of generated JS to this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\tSourceNode.prototype.add = function SourceNode_add(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t aChunk.forEach(function (chunk) {\n\t this.add(chunk);\n\t }, this);\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t if (aChunk) {\n\t this.children.push(aChunk);\n\t }\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Add a chunk of generated JS to the beginning of this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\tSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t for (var i = aChunk.length-1; i >= 0; i--) {\n\t this.prepend(aChunk[i]);\n\t }\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t this.children.unshift(aChunk);\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Walk over the tree of JS snippets in this node and its children. The\n\t * walking function is called once for each snippet of JS and is passed that\n\t * snippet and the its original associated source's line/column location.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\tSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n\t var chunk;\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t chunk = this.children[i];\n\t if (chunk[isSourceNode]) {\n\t chunk.walk(aFn);\n\t }\n\t else {\n\t if (chunk !== '') {\n\t aFn(chunk, { source: this.source,\n\t line: this.line,\n\t column: this.column,\n\t name: this.name });\n\t }\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n\t * each of `this.children`.\n\t *\n\t * @param aSep The separator.\n\t */\n\tSourceNode.prototype.join = function SourceNode_join(aSep) {\n\t var newChildren;\n\t var i;\n\t var len = this.children.length;\n\t if (len > 0) {\n\t newChildren = [];\n\t for (i = 0; i < len-1; i++) {\n\t newChildren.push(this.children[i]);\n\t newChildren.push(aSep);\n\t }\n\t newChildren.push(this.children[i]);\n\t this.children = newChildren;\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Call String.prototype.replace on the very right-most source snippet. Useful\n\t * for trimming whitespace from the end of a source node, etc.\n\t *\n\t * @param aPattern The pattern to replace.\n\t * @param aReplacement The thing to replace the pattern with.\n\t */\n\tSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n\t var lastChild = this.children[this.children.length - 1];\n\t if (lastChild[isSourceNode]) {\n\t lastChild.replaceRight(aPattern, aReplacement);\n\t }\n\t else if (typeof lastChild === 'string') {\n\t this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n\t }\n\t else {\n\t this.children.push(''.replace(aPattern, aReplacement));\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Set the source content for a source file. This will be added to the SourceMapGenerator\n\t * in the sourcesContent field.\n\t *\n\t * @param aSourceFile The filename of the source file\n\t * @param aSourceContent The content of the source file\n\t */\n\tSourceNode.prototype.setSourceContent =\n\t function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n\t this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n\t };\n\t\n\t/**\n\t * Walk over the tree of SourceNodes. The walking function is called for each\n\t * source file content and is passed the filename and source content.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\tSourceNode.prototype.walkSourceContents =\n\t function SourceNode_walkSourceContents(aFn) {\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t if (this.children[i][isSourceNode]) {\n\t this.children[i].walkSourceContents(aFn);\n\t }\n\t }\n\t\n\t var sources = Object.keys(this.sourceContents);\n\t for (var i = 0, len = sources.length; i < len; i++) {\n\t aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n\t }\n\t };\n\t\n\t/**\n\t * Return the string representation of this source node. Walks over the tree\n\t * and concatenates all the various snippets together to one string.\n\t */\n\tSourceNode.prototype.toString = function SourceNode_toString() {\n\t var str = \"\";\n\t this.walk(function (chunk) {\n\t str += chunk;\n\t });\n\t return str;\n\t};\n\t\n\t/**\n\t * Returns the string representation of this source node along with a source\n\t * map.\n\t */\n\tSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n\t var generated = {\n\t code: \"\",\n\t line: 1,\n\t column: 0\n\t };\n\t var map = new SourceMapGenerator(aArgs);\n\t var sourceMappingActive = false;\n\t var lastOriginalSource = null;\n\t var lastOriginalLine = null;\n\t var lastOriginalColumn = null;\n\t var lastOriginalName = null;\n\t this.walk(function (chunk, original) {\n\t generated.code += chunk;\n\t if (original.source !== null\n\t && original.line !== null\n\t && original.column !== null) {\n\t if(lastOriginalSource !== original.source\n\t || lastOriginalLine !== original.line\n\t || lastOriginalColumn !== original.column\n\t || lastOriginalName !== original.name) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t lastOriginalSource = original.source;\n\t lastOriginalLine = original.line;\n\t lastOriginalColumn = original.column;\n\t lastOriginalName = original.name;\n\t sourceMappingActive = true;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t }\n\t });\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t }\n\t for (var idx = 0, length = chunk.length; idx < length; idx++) {\n\t if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n\t generated.line++;\n\t generated.column = 0;\n\t // Mappings end at eol\n\t if (idx + 1 === length) {\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t } else {\n\t generated.column++;\n\t }\n\t }\n\t });\n\t this.walkSourceContents(function (sourceFile, sourceContent) {\n\t map.setSourceContent(sourceFile, sourceContent);\n\t });\n\t\n\t return { code: generated.code, map: map };\n\t};\n\t\n\texports.SourceNode = SourceNode;\n\n\n/***/ })\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// source-map.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 42c329f865e32e011afb","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./source-map.js\n// module id = 0\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-map-generator.js\n// module id = 1\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/base64-vlq.js\n// module id = 2\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/base64.js\n// module id = 3\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/util.js\n// module id = 4\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/array-set.js\n// module id = 5\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/mapping-list.js\n// module id = 6\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap)\n : new BasicSourceMapConsumer(sourceMap);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-map-consumer.js\n// module id = 7\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/binary-search.js\n// module id = 8\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/quick-sort.js\n// module id = 9\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex];\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-node.js\n// module id = 10\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file
diff --git a/assets/node_modules/source-map/lib/array-set.js b/assets/node_modules/source-map/lib/array-set.js
deleted file mode 100644
index fbd5c81..0000000
--- a/assets/node_modules/source-map/lib/array-set.js
+++ /dev/null
@@ -1,121 +0,0 @@
-/* -*- 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/assets/node_modules/source-map/lib/base64-vlq.js b/assets/node_modules/source-map/lib/base64-vlq.js
deleted file mode 100644
index 612b404..0000000
--- a/assets/node_modules/source-map/lib/base64-vlq.js
+++ /dev/null
@@ -1,140 +0,0 @@
-/* -*- 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/assets/node_modules/source-map/lib/base64.js b/assets/node_modules/source-map/lib/base64.js
deleted file mode 100644
index 8aa86b3..0000000
--- a/assets/node_modules/source-map/lib/base64.js
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -*- 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/assets/node_modules/source-map/lib/binary-search.js b/assets/node_modules/source-map/lib/binary-search.js
deleted file mode 100644
index 010ac94..0000000
--- a/assets/node_modules/source-map/lib/binary-search.js
+++ /dev/null
@@ -1,111 +0,0 @@
-/* -*- 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/assets/node_modules/source-map/lib/mapping-list.js b/assets/node_modules/source-map/lib/mapping-list.js
deleted file mode 100644
index 06d1274..0000000
--- a/assets/node_modules/source-map/lib/mapping-list.js
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- 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/assets/node_modules/source-map/lib/quick-sort.js b/assets/node_modules/source-map/lib/quick-sort.js
deleted file mode 100644
index 6a7caad..0000000
--- a/assets/node_modules/source-map/lib/quick-sort.js
+++ /dev/null
@@ -1,114 +0,0 @@
-/* -*- 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/assets/node_modules/source-map/lib/source-map-consumer.js b/assets/node_modules/source-map/lib/source-map-consumer.js
deleted file mode 100644
index 6abcc28..0000000
--- a/assets/node_modules/source-map/lib/source-map-consumer.js
+++ /dev/null
@@ -1,1082 +0,0 @@
-/* -*- 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/assets/node_modules/source-map/lib/source-map-generator.js b/assets/node_modules/source-map/lib/source-map-generator.js
deleted file mode 100644
index aff1e7f..0000000
--- a/assets/node_modules/source-map/lib/source-map-generator.js
+++ /dev/null
@@ -1,416 +0,0 @@
-/* -*- 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/assets/node_modules/source-map/lib/source-node.js b/assets/node_modules/source-map/lib/source-node.js
deleted file mode 100644
index d196a53..0000000
--- a/assets/node_modules/source-map/lib/source-node.js
+++ /dev/null
@@ -1,413 +0,0 @@
-/* -*- 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/assets/node_modules/source-map/lib/util.js b/assets/node_modules/source-map/lib/util.js
deleted file mode 100644
index 44e0e45..0000000
--- a/assets/node_modules/source-map/lib/util.js
+++ /dev/null
@@ -1,417 +0,0 @@
-/* -*- 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/assets/node_modules/source-map/package.json b/assets/node_modules/source-map/package.json
deleted file mode 100644
index 048e3ae..0000000
--- a/assets/node_modules/source-map/package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "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/assets/node_modules/source-map/source-map.js b/assets/node_modules/source-map/source-map.js
deleted file mode 100644
index bc88fe8..0000000
--- a/assets/node_modules/source-map/source-map.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- * 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/assets/node_modules/spdx-correct/LICENSE b/assets/node_modules/spdx-correct/LICENSE
deleted file mode 100644
index d645695..0000000
--- a/assets/node_modules/spdx-correct/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
- 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 [yyyy] [name of copyright owner]
-
- 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/assets/node_modules/spdx-correct/README.md b/assets/node_modules/spdx-correct/README.md
deleted file mode 100644
index ab388cf..0000000
--- a/assets/node_modules/spdx-correct/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-```javascript
-var correct = require('spdx-correct')
-var assert = require('assert')
-
-assert.equal(correct('mit'), 'MIT')
-
-assert.equal(correct('Apache 2'), 'Apache-2.0')
-
-assert(correct('No idea what license') === null)
-
-// disable upgrade option
-assert(correct('GPL-3.0'), 'GPL-3.0-or-later')
-assert(correct('GPL-3.0', { upgrade: false }), 'GPL-3.0')
-```
diff --git a/assets/node_modules/spdx-correct/index.js b/assets/node_modules/spdx-correct/index.js
deleted file mode 100644
index 8e0e5ae..0000000
--- a/assets/node_modules/spdx-correct/index.js
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
-Copyright spdx-correct.js 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.
-*/
-var parse = require('spdx-expression-parse')
-var spdxLicenseIds = require('spdx-license-ids')
-
-function valid (string) {
- try {
- parse(string)
- return true
- } catch (error) {
- return false
- }
-}
-
-// Common transpositions of license identifier acronyms
-var transpositions = [
- ['APGL', 'AGPL'],
- ['Gpl', 'GPL'],
- ['GLP', 'GPL'],
- ['APL', 'Apache'],
- ['ISD', 'ISC'],
- ['GLP', 'GPL'],
- ['IST', 'ISC'],
- ['Claude', 'Clause'],
- [' or later', '+'],
- [' International', ''],
- ['GNU', 'GPL'],
- ['GUN', 'GPL'],
- ['+', ''],
- ['GNU GPL', 'GPL'],
- ['GNU/GPL', 'GPL'],
- ['GNU GLP', 'GPL'],
- ['GNU General Public License', 'GPL'],
- ['Gnu public license', 'GPL'],
- ['GNU Public License', 'GPL'],
- ['GNU GENERAL PUBLIC LICENSE', 'GPL'],
- ['MTI', 'MIT'],
- ['Mozilla Public License', 'MPL'],
- ['WTH', 'WTF'],
- ['-License', '']
-]
-
-var TRANSPOSED = 0
-var CORRECT = 1
-
-// Simple corrections to nearly valid identifiers.
-var transforms = [
- // e.g. 'mit'
- function (argument) {
- return argument.toUpperCase()
- },
- // e.g. 'MIT '
- function (argument) {
- return argument.trim()
- },
- // e.g. 'M.I.T.'
- function (argument) {
- return argument.replace(/\./g, '')
- },
- // e.g. 'Apache- 2.0'
- function (argument) {
- return argument.replace(/\s+/g, '')
- },
- // e.g. 'CC BY 4.0''
- function (argument) {
- return argument.replace(/\s+/g, '-')
- },
- // e.g. 'LGPLv2.1'
- function (argument) {
- return argument.replace('v', '-')
- },
- // e.g. 'Apache 2.0'
- function (argument) {
- return argument.replace(/,?\s*(\d)/, '-$1')
- },
- // e.g. 'GPL 2'
- function (argument) {
- return argument.replace(/,?\s*(\d)/, '-$1.0')
- },
- // e.g. 'Apache Version 2.0'
- function (argument) {
- return argument
- .replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/, '-$2')
- },
- // e.g. 'Apache Version 2'
- function (argument) {
- return argument
- .replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/, '-$2.0')
- },
- // e.g. 'ZLIB'
- function (argument) {
- return argument[0].toUpperCase() + argument.slice(1)
- },
- // e.g. 'MPL/2.0'
- function (argument) {
- return argument.replace('/', '-')
- },
- // e.g. 'Apache 2'
- function (argument) {
- return argument
- .replace(/\s*V\s*(\d)/, '-$1')
- .replace(/(\d)$/, '$1.0')
- },
- // e.g. 'GPL-2.0', 'GPL-3.0'
- function (argument) {
- if (argument.indexOf('3.0') !== -1) {
- return argument + '-or-later'
- } else {
- return argument + '-only'
- }
- },
- // e.g. 'GPL-2.0-'
- function (argument) {
- return argument + 'only'
- },
- // e.g. 'GPL2'
- function (argument) {
- return argument.replace(/(\d)$/, '-$1.0')
- },
- // e.g. 'BSD 3'
- function (argument) {
- return argument.replace(/(-| )?(\d)$/, '-$2-Clause')
- },
- // e.g. 'BSD clause 3'
- function (argument) {
- return argument.replace(/(-| )clause(-| )(\d)/, '-$3-Clause')
- },
- // e.g. 'BY-NC-4.0'
- function (argument) {
- return 'CC-' + argument
- },
- // e.g. 'BY-NC'
- function (argument) {
- return 'CC-' + argument + '-4.0'
- },
- // e.g. 'Attribution-NonCommercial'
- function (argument) {
- return argument
- .replace('Attribution', 'BY')
- .replace('NonCommercial', 'NC')
- .replace('NoDerivatives', 'ND')
- .replace(/ (\d)/, '-$1')
- .replace(/ ?International/, '')
- },
- // e.g. 'Attribution-NonCommercial'
- function (argument) {
- return 'CC-' +
- argument
- .replace('Attribution', 'BY')
- .replace('NonCommercial', 'NC')
- .replace('NoDerivatives', 'ND')
- .replace(/ (\d)/, '-$1')
- .replace(/ ?International/, '') +
- '-4.0'
- }
-]
-
-var licensesWithVersions = spdxLicenseIds
- .map(function (id) {
- var match = /^(.*)-\d+\.\d+$/.exec(id)
- return match
- ? [match[0], match[1]]
- : [id, null]
- })
- .reduce(function (objectMap, item) {
- var key = item[1]
- objectMap[key] = objectMap[key] || []
- objectMap[key].push(item[0])
- return objectMap
- }, {})
-
-var licensesWithOneVersion = Object.keys(licensesWithVersions)
- .map(function makeEntries (key) {
- return [key, licensesWithVersions[key]]
- })
- .filter(function identifySoleVersions (item) {
- return (
- // Licenses has just one valid version suffix.
- item[1].length === 1 &&
- item[0] !== null &&
- // APL will be considered Apache, rather than APL-1.0
- item[0] !== 'APL'
- )
- })
- .map(function createLastResorts (item) {
- return [item[0], item[1][0]]
- })
-
-licensesWithVersions = undefined
-
-// If all else fails, guess that strings containing certain substrings
-// meant to identify certain licenses.
-var lastResorts = [
- ['UNLI', 'Unlicense'],
- ['WTF', 'WTFPL'],
- ['2 CLAUSE', 'BSD-2-Clause'],
- ['2-CLAUSE', 'BSD-2-Clause'],
- ['3 CLAUSE', 'BSD-3-Clause'],
- ['3-CLAUSE', 'BSD-3-Clause'],
- ['AFFERO', 'AGPL-3.0-or-later'],
- ['AGPL', 'AGPL-3.0-or-later'],
- ['APACHE', 'Apache-2.0'],
- ['ARTISTIC', 'Artistic-2.0'],
- ['Affero', 'AGPL-3.0-or-later'],
- ['BEER', 'Beerware'],
- ['BOOST', 'BSL-1.0'],
- ['BSD', 'BSD-2-Clause'],
- ['CDDL', 'CDDL-1.1'],
- ['ECLIPSE', 'EPL-1.0'],
- ['FUCK', 'WTFPL'],
- ['GNU', 'GPL-3.0-or-later'],
- ['LGPL', 'LGPL-3.0-or-later'],
- ['GPLV1', 'GPL-1.0-only'],
- ['GPL-1', 'GPL-1.0-only'],
- ['GPLV2', 'GPL-2.0-only'],
- ['GPL-2', 'GPL-2.0-only'],
- ['GPL', 'GPL-3.0-or-later'],
- ['MIT +NO-FALSE-ATTRIBS', 'MITNFA'],
- ['MIT', 'MIT'],
- ['MPL', 'MPL-2.0'],
- ['X11', 'X11'],
- ['ZLIB', 'Zlib']
-].concat(licensesWithOneVersion)
-
-var SUBSTRING = 0
-var IDENTIFIER = 1
-
-var validTransformation = function (identifier) {
- for (var i = 0; i < transforms.length; i++) {
- var transformed = transforms[i](identifier).trim()
- if (transformed !== identifier && valid(transformed)) {
- return transformed
- }
- }
- return null
-}
-
-var validLastResort = function (identifier) {
- var upperCased = identifier.toUpperCase()
- for (var i = 0; i < lastResorts.length; i++) {
- var lastResort = lastResorts[i]
- if (upperCased.indexOf(lastResort[SUBSTRING]) > -1) {
- return lastResort[IDENTIFIER]
- }
- }
- return null
-}
-
-var anyCorrection = function (identifier, check) {
- for (var i = 0; i < transpositions.length; i++) {
- var transposition = transpositions[i]
- var transposed = transposition[TRANSPOSED]
- if (identifier.indexOf(transposed) > -1) {
- var corrected = identifier.replace(
- transposed,
- transposition[CORRECT]
- )
- var checked = check(corrected)
- if (checked !== null) {
- return checked
- }
- }
- }
- return null
-}
-
-module.exports = function (identifier, options) {
- options = options || {}
- var upgrade = options.upgrade === undefined ? true : !!options.upgrade
- function postprocess (value) {
- return upgrade ? upgradeGPLs(value) : value
- }
- var validArugment = (
- typeof identifier === 'string' &&
- identifier.trim().length !== 0
- )
- if (!validArugment) {
- throw Error('Invalid argument. Expected non-empty string.')
- }
- identifier = identifier.trim()
- if (valid(identifier)) {
- return postprocess(identifier)
- }
- var noPlus = identifier.replace(/\+$/, '').trim()
- if (valid(noPlus)) {
- return postprocess(noPlus)
- }
- var transformed = validTransformation(identifier)
- if (transformed !== null) {
- return postprocess(transformed)
- }
- transformed = anyCorrection(identifier, function (argument) {
- if (valid(argument)) {
- return argument
- }
- return validTransformation(argument)
- })
- if (transformed !== null) {
- return postprocess(transformed)
- }
- transformed = validLastResort(identifier)
- if (transformed !== null) {
- return postprocess(transformed)
- }
- transformed = anyCorrection(identifier, validLastResort)
- if (transformed !== null) {
- return postprocess(transformed)
- }
- return null
-}
-
-function upgradeGPLs (value) {
- if ([
- 'GPL-1.0', 'LGPL-1.0', 'AGPL-1.0',
- 'GPL-2.0', 'LGPL-2.0', 'AGPL-2.0',
- 'LGPL-2.1'
- ].indexOf(value) !== -1) {
- return value + '-only'
- } else if ([
- 'GPL-1.0+', 'GPL-2.0+', 'GPL-3.0+',
- 'LGPL-2.0+', 'LGPL-2.1+', 'LGPL-3.0+',
- 'AGPL-1.0+', 'AGPL-3.0+'
- ].indexOf(value) !== -1) {
- return value.replace(/\+$/, '-or-later')
- } else if (['GPL-3.0', 'LGPL-3.0', 'AGPL-3.0'].indexOf(value) !== -1) {
- return value + '-or-later'
- } else {
- return value
- }
-}
diff --git a/assets/node_modules/spdx-correct/package.json b/assets/node_modules/spdx-correct/package.json
deleted file mode 100644
index bc87fd5..0000000
--- a/assets/node_modules/spdx-correct/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "spdx-correct",
- "description": "correct invalid SPDX expressions",
- "version": "3.1.0",
- "author": "Kyle E. Mitchell <kyle@kemitchell.com> (https://kemitchell.com)",
- "contributors": [
- "Kyle E. Mitchell <kyle@kemitchell.com> (https://kemitchell.com)",
- "Christian Zommerfelds <aero_super@yahoo.com>",
- "Tal Einat <taleinat@gmail.com>",
- "Dan Butvinik <butvinik@outlook.com>"
- ],
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- },
- "devDependencies": {
- "defence-cli": "^2.0.1",
- "replace-require-self": "^1.0.0",
- "standard": "^11.0.0",
- "standard-markdown": "^4.0.2",
- "tape": "^4.9.0"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "SPDX",
- "law",
- "legal",
- "license",
- "metadata"
- ],
- "license": "Apache-2.0",
- "repository": "jslicense/spdx-correct.js",
- "scripts": {
- "lint": "standard && standard-markdown README.md",
- "test": "defence README.md | replace-require-self | node && node test.js"
- }
-}
diff --git a/assets/node_modules/spdx-exceptions/README.md b/assets/node_modules/spdx-exceptions/README.md
deleted file mode 100644
index 6c927ec..0000000
--- a/assets/node_modules/spdx-exceptions/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-The package exports an array of strings. Each string is an identifier
-for a license exception under the [Software Package Data Exchange
-(SPDX)][SPDX] software license metadata standard.
-
-[SPDX]: https://spdx.org
-
-## Copyright and Licensing
-
-### SPDX
-
-"SPDX" is a federally registered United States trademark of The Linux
-Foundation Corporation.
-
-From version 2.0 of the [SPDX] specification:
-
-> Copyright © 2010-2015 Linux Foundation and its Contributors. Licensed
-> under the Creative Commons Attribution License 3.0 Unported. All other
-> rights are expressly reserved.
-
-The Linux Foundation and the SPDX working groups are good people. Only
-they decide what "SPDX" means, as a standard and otherwise. I respect
-their work and their rights. You should, too.
-
-### This Package
-
-> I created this package by copying exception identifiers out of the
-> SPDX specification. That work was mechanical, routine, and required no
-> creativity whatsoever. - Kyle Mitchell, package author
-
-United States users concerned about intellectual property may wish to
-discuss the following Supreme Court decisions with their attorneys:
-
-- _Baker v. Selden_, 101 U.S. 99 (1879)
-
-- _Feist Publications, Inc., v. Rural Telephone Service Co._,
- 499 U.S. 340 (1991)
diff --git a/assets/node_modules/spdx-exceptions/index.json b/assets/node_modules/spdx-exceptions/index.json
deleted file mode 100644
index 1063ebd..0000000
--- a/assets/node_modules/spdx-exceptions/index.json
+++ /dev/null
@@ -1,34 +0,0 @@
-[
- "389-exception",
- "Autoconf-exception-2.0",
- "Autoconf-exception-3.0",
- "Bison-exception-2.2",
- "Bootloader-exception",
- "Classpath-exception-2.0",
- "CLISP-exception-2.0",
- "DigiRule-FOSS-exception",
- "eCos-exception-2.0",
- "Fawkes-Runtime-exception",
- "FLTK-exception",
- "Font-exception-2.0",
- "freertos-exception-2.0",
- "GCC-exception-2.0",
- "GCC-exception-3.1",
- "gnu-javamail-exception",
- "i2p-gpl-java-exception",
- "Libtool-exception",
- "Linux-syscall-note",
- "LLVM-exception",
- "LZMA-exception",
- "mif-exception",
- "Nokia-Qt-exception-1.1",
- "OCCT-exception-1.0",
- "OpenJDK-assembly-exception-1.0",
- "openvpn-openssl-exception",
- "PS-or-PDF-font-exception-20170817",
- "Qt-GPL-exception-1.0",
- "Qt-LGPL-exception-1.1",
- "Qwt-exception-1.0",
- "u-boot-exception-2.0",
- "WxWindows-exception-3.1"
-]
diff --git a/assets/node_modules/spdx-exceptions/package.json b/assets/node_modules/spdx-exceptions/package.json
deleted file mode 100644
index 3481993..0000000
--- a/assets/node_modules/spdx-exceptions/package.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "name": "spdx-exceptions",
- "description": "list of SPDX standard license exceptions",
- "version": "2.2.0",
- "author": "The Linux Foundation",
- "contributors": [
- "Kyle E. Mitchell <kyle@kemitchell.com> (https://kemitchell.com/)"
- ],
- "license": "CC-BY-3.0",
- "repository": "kemitchell/spdx-exceptions.json"
-}
diff --git a/assets/node_modules/spdx-exceptions/test.log b/assets/node_modules/spdx-exceptions/test.log
deleted file mode 100644
index b54b110..0000000
--- a/assets/node_modules/spdx-exceptions/test.log
+++ /dev/null
@@ -1,8 +0,0 @@
-up to date in 1.038s
-found 0 vulnerabilities
-
-
-> spdx-exceptions@2.1.0 test /home/kyle/spdx-exceptions.json
-> echo 'Error: no test specified'
-
-Error: no test specified
diff --git a/assets/node_modules/spdx-expression-parse/AUTHORS b/assets/node_modules/spdx-expression-parse/AUTHORS
deleted file mode 100644
index 257a76b..0000000
--- a/assets/node_modules/spdx-expression-parse/AUTHORS
+++ /dev/null
@@ -1,4 +0,0 @@
-C. Scott Ananian <cscott@cscott.net> (http://cscott.net)
-Kyle E. Mitchell <kyle@kemitchell.com> (https://kemitchell.com)
-Shinnosuke Watanabe <snnskwtnb@gmail.com>
-Antoine Motet <antoine.motet@gmail.com>
diff --git a/assets/node_modules/spdx-expression-parse/LICENSE b/assets/node_modules/spdx-expression-parse/LICENSE
deleted file mode 100644
index 831618e..0000000
--- a/assets/node_modules/spdx-expression-parse/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License
-
-Copyright (c) 2015 Kyle E. Mitchell & other authors listed in 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/assets/node_modules/spdx-expression-parse/README.md b/assets/node_modules/spdx-expression-parse/README.md
deleted file mode 100644
index 514895b..0000000
--- a/assets/node_modules/spdx-expression-parse/README.md
+++ /dev/null
@@ -1,91 +0,0 @@
-This package parses [SPDX license expression](https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60) strings describing license terms, like [package.json license strings](https://docs.npmjs.com/files/package.json#license), into consistently structured ECMAScript objects. The npm command-line interface depends on this package, as do many automatic license-audit tools.
-
-In a nutshell:
-
-```javascript
-var parse = require('spdx-expression-parse')
-var assert = require('assert')
-
-assert.deepEqual(
- // Licensed under the terms of the Two-Clause BSD License.
- parse('BSD-2-Clause'),
- {license: 'BSD-2-Clause'}
-)
-
-assert.throws(function () {
- // An invalid SPDX license expression.
- // Should be `Apache-2.0`.
- parse('Apache 2')
-})
-
-assert.deepEqual(
- // Dual licensed under either:
- // - LGPL 2.1
- // - a combination of Three-Clause BSD and MIT
- parse('(LGPL-2.1 OR BSD-3-Clause AND MIT)'),
- {
- left: {license: 'LGPL-2.1'},
- conjunction: 'or',
- right: {
- left: {license: 'BSD-3-Clause'},
- conjunction: 'and',
- right: {license: 'MIT'}
- }
- }
-)
-```
-
-The syntax comes from the [Software Package Data eXchange (SPDX)](https://spdx.org/), a standard from the [Linux Foundation](https://www.linuxfoundation.org) for shareable data about software package license terms. SPDX aims to make sharing and auditing license data easy, especially for users of open-source software.
-
-The bulk of the SPDX standard describes syntax and semantics of XML metadata files. This package implements two lightweight, plain-text components of that larger standard:
-
-1. The [license list](https://spdx.org/licenses), a mapping from specific string identifiers, like `Apache-2.0`, to standard form license texts and bolt-on license exceptions. The [spdx-license-ids](https://www.npmjs.com/package/spdx-exceptions) and [spdx-exceptions](https://www.npmjs.com/package/spdx-license-ids) packages implement the license list. `spdx-expression-parse` depends on and `require()`s them.
-
- Any license identifier from the license list is a valid license expression:
-
- ```javascript
- var identifiers = []
- .concat(require('spdx-license-ids'))
- .concat(require('spdx-license-ids/deprecated'))
-
- identifiers.forEach(function (id) {
- assert.deepEqual(parse(id), {license: id})
- })
- ```
-
- So is any license identifier `WITH` a standardized license exception:
-
- ```javascript
- identifiers.forEach(function (id) {
- require('spdx-exceptions').forEach(function (e) {
- assert.deepEqual(
- parse(id + ' WITH ' + e),
- {license: id, exception: e}
- )
- })
- })
- ```
-
-2. The license expression language, for describing simple and complex license terms, like `MIT` for MIT-licensed and `(GPL-2.0 OR Apache-2.0)` for dual-licensing under GPL 2.0 and Apache 2.0. `spdx-expression-parse` itself implements license expression language, exporting a parser.
-
- ```javascript
- assert.deepEqual(
- // Licensed under a combination of:
- // - the MIT License AND
- // - a combination of:
- // - LGPL 2.1 (or a later version) AND
- // - Three-Clause BSD
- parse('(MIT AND (LGPL-2.1+ AND BSD-3-Clause))'),
- {
- left: {license: 'MIT'},
- conjunction: 'and',
- right: {
- left: {license: 'LGPL-2.1', plus: true},
- conjunction: 'and',
- right: {license: 'BSD-3-Clause'}
- }
- }
- )
- ```
-
-The Linux Foundation and its contributors license the SPDX standard under the terms of [the Creative Commons Attribution License 3.0 Unported (SPDX: "CC-BY-3.0")](http://spdx.org/licenses/CC-BY-3.0). "SPDX" is a United States federally registered trademark of the Linux Foundation. The authors of this package license their work under the terms of the MIT License.
diff --git a/assets/node_modules/spdx-expression-parse/index.js b/assets/node_modules/spdx-expression-parse/index.js
deleted file mode 100644
index 52fab56..0000000
--- a/assets/node_modules/spdx-expression-parse/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-'use strict'
-
-var scan = require('./scan')
-var parse = require('./parse')
-
-module.exports = function (source) {
- return parse(scan(source))
-}
diff --git a/assets/node_modules/spdx-expression-parse/package.json b/assets/node_modules/spdx-expression-parse/package.json
deleted file mode 100644
index 7157520..0000000
--- a/assets/node_modules/spdx-expression-parse/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "spdx-expression-parse",
- "description": "parse SPDX license expressions",
- "version": "3.0.0",
- "author": "Kyle E. Mitchell <kyle@kemitchell.com> (http://kemitchell.com)",
- "files": [
- "AUTHORS",
- "index.js",
- "parse.js",
- "scan.js"
- ],
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- },
- "devDependencies": {
- "defence-cli": "^2.0.1",
- "mocha": "^3.4.2",
- "replace-require-self": "^1.0.0",
- "standard": "^10.0.2"
- },
- "keywords": [
- "SPDX",
- "law",
- "legal",
- "license",
- "metadata",
- "package",
- "package.json",
- "standards"
- ],
- "license": "MIT",
- "repository": "jslicense/spdx-expression-parse.js",
- "scripts": {
- "lint": "standard",
- "test:readme": "defence -i javascript README.md | replace-require-self | node",
- "test:mocha": "mocha test/index.js",
- "test": "npm run test:mocha && npm run test:readme"
- }
-}
diff --git a/assets/node_modules/spdx-expression-parse/parse.js b/assets/node_modules/spdx-expression-parse/parse.js
deleted file mode 100644
index a4a52ce..0000000
--- a/assets/node_modules/spdx-expression-parse/parse.js
+++ /dev/null
@@ -1,138 +0,0 @@
-'use strict'
-
-// The ABNF grammar in the spec is totally ambiguous.
-//
-// This parser follows the operator precedence defined in the
-// `Order of Precedence and Parentheses` section.
-
-module.exports = function (tokens) {
- var index = 0
-
- function hasMore () {
- return index < tokens.length
- }
-
- function token () {
- return hasMore() ? tokens[index] : null
- }
-
- function next () {
- if (!hasMore()) {
- throw new Error()
- }
- index++
- }
-
- function parseOperator (operator) {
- var t = token()
- if (t && t.type === 'OPERATOR' && operator === t.string) {
- next()
- return t.string
- }
- }
-
- function parseWith () {
- if (parseOperator('WITH')) {
- var t = token()
- if (t && t.type === 'EXCEPTION') {
- next()
- return t.string
- }
- throw new Error('Expected exception after `WITH`')
- }
- }
-
- function parseLicenseRef () {
- // TODO: Actually, everything is concatenated into one string
- // for backward-compatibility but it could be better to return
- // a nice structure.
- var begin = index
- var string = ''
- var t = token()
- if (t.type === 'DOCUMENTREF') {
- next()
- string += 'DocumentRef-' + t.string + ':'
- if (!parseOperator(':')) {
- throw new Error('Expected `:` after `DocumentRef-...`')
- }
- }
- t = token()
- if (t.type === 'LICENSEREF') {
- next()
- string += 'LicenseRef-' + t.string
- return {license: string}
- }
- index = begin
- }
-
- function parseLicense () {
- var t = token()
- if (t && t.type === 'LICENSE') {
- next()
- var node = {license: t.string}
- if (parseOperator('+')) {
- node.plus = true
- }
- var exception = parseWith()
- if (exception) {
- node.exception = exception
- }
- return node
- }
- }
-
- function parseParenthesizedExpression () {
- var left = parseOperator('(')
- if (!left) {
- return
- }
-
- var expr = parseExpression()
-
- if (!parseOperator(')')) {
- throw new Error('Expected `)`')
- }
-
- return expr
- }
-
- function parseAtom () {
- return (
- parseParenthesizedExpression() ||
- parseLicenseRef() ||
- parseLicense()
- )
- }
-
- function makeBinaryOpParser (operator, nextParser) {
- return function parseBinaryOp () {
- var left = nextParser()
- if (!left) {
- return
- }
-
- if (!parseOperator(operator)) {
- return left
- }
-
- var right = parseBinaryOp()
- if (!right) {
- throw new Error('Expected expression')
- }
- return {
- left: left,
- conjunction: operator.toLowerCase(),
- right: right
- }
- }
- }
-
- var parseAnd = makeBinaryOpParser('AND', parseAtom)
- var parseExpression = makeBinaryOpParser('OR', parseAnd)
-
- var node = parseExpression()
- if (!node || hasMore()) {
- throw new Error('Syntax error')
- }
- return node
-}
diff --git a/assets/node_modules/spdx-expression-parse/scan.js b/assets/node_modules/spdx-expression-parse/scan.js
deleted file mode 100644
index d0567f4..0000000
--- a/assets/node_modules/spdx-expression-parse/scan.js
+++ /dev/null
@@ -1,131 +0,0 @@
-'use strict'
-
-var licenses = []
- .concat(require('spdx-license-ids'))
- .concat(require('spdx-license-ids/deprecated'))
-var exceptions = require('spdx-exceptions')
-
-module.exports = function (source) {
- var index = 0
-
- function hasMore () {
- return index < source.length
- }
-
- // `value` can be a regexp or a string.
- // If it is recognized, the matching source string is returned and
- // the index is incremented. Otherwise `undefined` is returned.
- function read (value) {
- if (value instanceof RegExp) {
- var chars = source.slice(index)
- var match = chars.match(value)
- if (match) {
- index += match[0].length
- return match[0]
- }
- } else {
- if (source.indexOf(value, index) === index) {
- index += value.length
- return value
- }
- }
- }
-
- function skipWhitespace () {
- read(/[ ]*/)
- }
-
- function operator () {
- var string
- var possibilities = ['WITH', 'AND', 'OR', '(', ')', ':', '+']
- for (var i = 0; i < possibilities.length; i++) {
- string = read(possibilities[i])
- if (string) {
- break
- }
- }
-
- if (string === '+' && index > 1 && source[index - 2] === ' ') {
- throw new Error('Space before `+`')
- }
-
- return string && {
- type: 'OPERATOR',
- string: string
- }
- }
-
- function idstring () {
- return read(/[A-Za-z0-9-.]+/)
- }
-
- function expectIdstring () {
- var string = idstring()
- if (!string) {
- throw new Error('Expected idstring at offset ' + index)
- }
- return string
- }
-
- function documentRef () {
- if (read('DocumentRef-')) {
- var string = expectIdstring()
- return {type: 'DOCUMENTREF', string: string}
- }
- }
-
- function licenseRef () {
- if (read('LicenseRef-')) {
- var string = expectIdstring()
- return {type: 'LICENSEREF', string: string}
- }
- }
-
- function identifier () {
- var begin = index
- var string = idstring()
-
- if (licenses.indexOf(string) !== -1) {
- return {
- type: 'LICENSE',
- string: string
- }
- } else if (exceptions.indexOf(string) !== -1) {
- return {
- type: 'EXCEPTION',
- string: string
- }
- }
-
- index = begin
- }
-
- // Tries to read the next token. Returns `undefined` if no token is
- // recognized.
- function parseToken () {
- // Ordering matters
- return (
- operator() ||
- documentRef() ||
- licenseRef() ||
- identifier()
- )
- }
-
- var tokens = []
- while (hasMore()) {
- skipWhitespace()
- if (!hasMore()) {
- break
- }
-
- var token = parseToken()
- if (!token) {
- throw new Error('Unexpected `' + source[index] +
- '` at offset ' + index)
- }
-
- tokens.push(token)
- }
- return tokens
-}
diff --git a/assets/node_modules/spdx-license-ids/README.md b/assets/node_modules/spdx-license-ids/README.md
deleted file mode 100644
index 699514d..0000000
--- a/assets/node_modules/spdx-license-ids/README.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# spdx-license-ids
-
-[![npm version](https://img.shields.io/npm/v/spdx-license-ids.svg)](https://www.npmjs.com/package/spdx-license-ids)
-[![Github Actions](https://action-badges.now.sh/shinnn/spdx-license-ids)](https://wdp9fww0r9.execute-api.us-west-2.amazonaws.com/production/results/shinnn/spdx-license-ids)
-
-A list of [SPDX license](https://spdx.org/licenses/) identifiers
-
-## Installation
-
-[Download JSON directly](https://raw.githubusercontent.com/shinnn/spdx-license-ids/master/index.json), or [use](https://docs.npmjs.com/cli/install) [npm](https://docs.npmjs.com/about-npm/):
-
-```
-npm install spdx-license-ids
-```
-
-## [Node.js](https://nodejs.org/) API
-
-### require('spdx-license-ids')
-
-Type: `string[]`
-
-All license IDs except for the currently deprecated ones.
-
-```javascript
-const ids = require('spdx-license-ids');
-//=> ['0BSD', 'AAL', 'ADSL', 'AFL-1.1', 'AFL-1.2', 'AFL-2.0', 'AFL-2.1', 'AFL-3.0', 'AGPL-1.0-only', ...]
-
-ids.includes('BSD-3-Clause'); //=> true
-ids.includes('CC-BY-1.0'); //=> true
-
-ids.includes('GPL-3.0'); //=> false
-```
-
-### require('spdx-license-ids/deprecated')
-
-Type: `string[]`
-
-Deprecated license IDs.
-
-```javascript
-const deprecatedIds = require('spdx-license-ids/deprecated');
-//=> ['AGPL-1.0', 'AGPL-3.0', 'GFDL-1.1', 'GFDL-1.2', 'GFDL-1.3', 'GPL-1.0', 'GPL-2.0', ...]
-
-deprecatedIds.includes('BSD-3-Clause'); //=> false
-deprecatedIds.includes('CC-BY-1.0'); //=> false
-
-deprecatedIds.includes('GPL-3.0'); //=> true
-```
-
-## License
-
-[Creative Commons Zero v1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/deed)
diff --git a/assets/node_modules/spdx-license-ids/deprecated.json b/assets/node_modules/spdx-license-ids/deprecated.json
deleted file mode 100644
index 1681f48..0000000
--- a/assets/node_modules/spdx-license-ids/deprecated.json
+++ /dev/null
@@ -1,24 +0,0 @@
-[
- "AGPL-1.0",
- "AGPL-3.0",
- "GFDL-1.1",
- "GFDL-1.2",
- "GFDL-1.3",
- "GPL-1.0",
- "GPL-2.0",
- "GPL-2.0-with-GCC-exception",
- "GPL-2.0-with-autoconf-exception",
- "GPL-2.0-with-bison-exception",
- "GPL-2.0-with-classpath-exception",
- "GPL-2.0-with-font-exception",
- "GPL-3.0",
- "GPL-3.0-with-GCC-exception",
- "GPL-3.0-with-autoconf-exception",
- "LGPL-2.0",
- "LGPL-2.1",
- "LGPL-3.0",
- "Nunit",
- "StandardML-NJ",
- "eCos-2.0",
- "wxWindows"
-]
diff --git a/assets/node_modules/spdx-license-ids/index.json b/assets/node_modules/spdx-license-ids/index.json
deleted file mode 100644
index 5283c78..0000000
--- a/assets/node_modules/spdx-license-ids/index.json
+++ /dev/null
@@ -1,370 +0,0 @@
-[
- "0BSD",
- "AAL",
- "ADSL",
- "AFL-1.1",
- "AFL-1.2",
- "AFL-2.0",
- "AFL-2.1",
- "AFL-3.0",
- "AGPL-1.0-only",
- "AGPL-1.0-or-later",
- "AGPL-3.0-only",
- "AGPL-3.0-or-later",
- "AMDPLPA",
- "AML",
- "AMPAS",
- "ANTLR-PD",
- "APAFML",
- "APL-1.0",
- "APSL-1.0",
- "APSL-1.1",
- "APSL-1.2",
- "APSL-2.0",
- "Abstyles",
- "Adobe-2006",
- "Adobe-Glyph",
- "Afmparse",
- "Aladdin",
- "Apache-1.0",
- "Apache-1.1",
- "Apache-2.0",
- "Artistic-1.0",
- "Artistic-1.0-Perl",
- "Artistic-1.0-cl8",
- "Artistic-2.0",
- "BSD-1-Clause",
- "BSD-2-Clause",
- "BSD-2-Clause-FreeBSD",
- "BSD-2-Clause-NetBSD",
- "BSD-2-Clause-Patent",
- "BSD-3-Clause",
- "BSD-3-Clause-Attribution",
- "BSD-3-Clause-Clear",
- "BSD-3-Clause-LBNL",
- "BSD-3-Clause-No-Nuclear-License",
- "BSD-3-Clause-No-Nuclear-License-2014",
- "BSD-3-Clause-No-Nuclear-Warranty",
- "BSD-3-Clause-Open-MPI",
- "BSD-4-Clause",
- "BSD-4-Clause-UC",
- "BSD-Protection",
- "BSD-Source-Code",
- "BSL-1.0",
- "Bahyph",
- "Barr",
- "Beerware",
- "BitTorrent-1.0",
- "BitTorrent-1.1",
- "BlueOak-1.0.0",
- "Borceux",
- "CATOSL-1.1",
- "CC-BY-1.0",
- "CC-BY-2.0",
- "CC-BY-2.5",
- "CC-BY-3.0",
- "CC-BY-4.0",
- "CC-BY-NC-1.0",
- "CC-BY-NC-2.0",
- "CC-BY-NC-2.5",
- "CC-BY-NC-3.0",
- "CC-BY-NC-4.0",
- "CC-BY-NC-ND-1.0",
- "CC-BY-NC-ND-2.0",
- "CC-BY-NC-ND-2.5",
- "CC-BY-NC-ND-3.0",
- "CC-BY-NC-ND-4.0",
- "CC-BY-NC-SA-1.0",
- "CC-BY-NC-SA-2.0",
- "CC-BY-NC-SA-2.5",
- "CC-BY-NC-SA-3.0",
- "CC-BY-NC-SA-4.0",
- "CC-BY-ND-1.0",
- "CC-BY-ND-2.0",
- "CC-BY-ND-2.5",
- "CC-BY-ND-3.0",
- "CC-BY-ND-4.0",
- "CC-BY-SA-1.0",
- "CC-BY-SA-2.0",
- "CC-BY-SA-2.5",
- "CC-BY-SA-3.0",
- "CC-BY-SA-4.0",
- "CC-PDDC",
- "CC0-1.0",
- "CDDL-1.0",
- "CDDL-1.1",
- "CDLA-Permissive-1.0",
- "CDLA-Sharing-1.0",
- "CECILL-1.0",
- "CECILL-1.1",
- "CECILL-2.0",
- "CECILL-2.1",
- "CECILL-B",
- "CECILL-C",
- "CERN-OHL-1.1",
- "CERN-OHL-1.2",
- "CNRI-Jython",
- "CNRI-Python",
- "CNRI-Python-GPL-Compatible",
- "CPAL-1.0",
- "CPL-1.0",
- "CPOL-1.02",
- "CUA-OPL-1.0",
- "Caldera",
- "ClArtistic",
- "Condor-1.1",
- "Crossword",
- "CrystalStacker",
- "Cube",
- "D-FSL-1.0",
- "DOC",
- "DSDP",
- "Dotseqn",
- "ECL-1.0",
- "ECL-2.0",
- "EFL-1.0",
- "EFL-2.0",
- "EPL-1.0",
- "EPL-2.0",
- "EUDatagrid",
- "EUPL-1.0",
- "EUPL-1.1",
- "EUPL-1.2",
- "Entessa",
- "ErlPL-1.1",
- "Eurosym",
- "FSFAP",
- "FSFUL",
- "FSFULLR",
- "FTL",
- "Fair",
- "Frameworx-1.0",
- "FreeImage",
- "GFDL-1.1-only",
- "GFDL-1.1-or-later",
- "GFDL-1.2-only",
- "GFDL-1.2-or-later",
- "GFDL-1.3-only",
- "GFDL-1.3-or-later",
- "GL2PS",
- "GPL-1.0-only",
- "GPL-1.0-or-later",
- "GPL-2.0-only",
- "GPL-2.0-or-later",
- "GPL-3.0-only",
- "GPL-3.0-or-later",
- "Giftware",
- "Glide",
- "Glulxe",
- "HPND",
- "HPND-sell-variant",
- "HaskellReport",
- "IBM-pibs",
- "ICU",
- "IJG",
- "IPA",
- "IPL-1.0",
- "ISC",
- "ImageMagick",
- "Imlib2",
- "Info-ZIP",
- "Intel",
- "Intel-ACPI",
- "Interbase-1.0",
- "JPNIC",
- "JSON",
- "JasPer-2.0",
- "LAL-1.2",
- "LAL-1.3",
- "LGPL-2.0-only",
- "LGPL-2.0-or-later",
- "LGPL-2.1-only",
- "LGPL-2.1-or-later",
- "LGPL-3.0-only",
- "LGPL-3.0-or-later",
- "LGPLLR",
- "LPL-1.0",
- "LPL-1.02",
- "LPPL-1.0",
- "LPPL-1.1",
- "LPPL-1.2",
- "LPPL-1.3a",
- "LPPL-1.3c",
- "Latex2e",
- "Leptonica",
- "LiLiQ-P-1.1",
- "LiLiQ-R-1.1",
- "LiLiQ-Rplus-1.1",
- "Libpng",
- "Linux-OpenIB",
- "MIT",
- "MIT-0",
- "MIT-CMU",
- "MIT-advertising",
- "MIT-enna",
- "MIT-feh",
- "MITNFA",
- "MPL-1.0",
- "MPL-1.1",
- "MPL-2.0",
- "MPL-2.0-no-copyleft-exception",
- "MS-PL",
- "MS-RL",
- "MTLL",
- "MakeIndex",
- "MirOS",
- "Motosoto",
- "Multics",
- "Mup",
- "NASA-1.3",
- "NBPL-1.0",
- "NCSA",
- "NGPL",
- "NLOD-1.0",
- "NLPL",
- "NOSL",
- "NPL-1.0",
- "NPL-1.1",
- "NPOSL-3.0",
- "NRL",
- "NTP",
- "Naumen",
- "Net-SNMP",
- "NetCDF",
- "Newsletr",
- "Nokia",
- "Noweb",
- "OCCT-PL",
- "OCLC-2.0",
- "ODC-By-1.0",
- "ODbL-1.0",
- "OFL-1.0",
- "OFL-1.1",
- "OGL-UK-1.0",
- "OGL-UK-2.0",
- "OGL-UK-3.0",
- "OGTSL",
- "OLDAP-1.1",
- "OLDAP-1.2",
- "OLDAP-1.3",
- "OLDAP-1.4",
- "OLDAP-2.0",
- "OLDAP-2.0.1",
- "OLDAP-2.1",
- "OLDAP-2.2",
- "OLDAP-2.2.1",
- "OLDAP-2.2.2",
- "OLDAP-2.3",
- "OLDAP-2.4",
- "OLDAP-2.5",
- "OLDAP-2.6",
- "OLDAP-2.7",
- "OLDAP-2.8",
- "OML",
- "OPL-1.0",
- "OSET-PL-2.1",
- "OSL-1.0",
- "OSL-1.1",
- "OSL-2.0",
- "OSL-2.1",
- "OSL-3.0",
- "OpenSSL",
- "PDDL-1.0",
- "PHP-3.0",
- "PHP-3.01",
- "Parity-6.0.0",
- "Plexus",
- "PostgreSQL",
- "Python-2.0",
- "QPL-1.0",
- "Qhull",
- "RHeCos-1.1",
- "RPL-1.1",
- "RPL-1.5",
- "RPSL-1.0",
- "RSA-MD",
- "RSCPL",
- "Rdisc",
- "Ruby",
- "SAX-PD",
- "SCEA",
- "SGI-B-1.0",
- "SGI-B-1.1",
- "SGI-B-2.0",
- "SHL-0.5",
- "SHL-0.51",
- "SISSL",
- "SISSL-1.2",
- "SMLNJ",
- "SMPPL",
- "SNIA",
- "SPL-1.0",
- "SSPL-1.0",
- "SWL",
- "Saxpath",
- "Sendmail",
- "Sendmail-8.23",
- "SimPL-2.0",
- "Sleepycat",
- "Spencer-86",
- "Spencer-94",
- "Spencer-99",
- "SugarCRM-1.1.3",
- "TAPR-OHL-1.0",
- "TCL",
- "TCP-wrappers",
- "TMate",
- "TORQUE-1.1",
- "TOSL",
- "TU-Berlin-1.0",
- "TU-Berlin-2.0",
- "UPL-1.0",
- "Unicode-DFS-2015",
- "Unicode-DFS-2016",
- "Unicode-TOU",
- "Unlicense",
- "VOSTROM",
- "VSL-1.0",
- "Vim",
- "W3C",
- "W3C-19980720",
- "W3C-20150513",
- "WTFPL",
- "Watcom-1.0",
- "Wsuipa",
- "X11",
- "XFree86-1.1",
- "XSkat",
- "Xerox",
- "Xnet",
- "YPL-1.0",
- "YPL-1.1",
- "ZPL-1.1",
- "ZPL-2.0",
- "ZPL-2.1",
- "Zed",
- "Zend-2.0",
- "Zimbra-1.3",
- "Zimbra-1.4",
- "Zlib",
- "blessing",
- "bzip2-1.0.5",
- "bzip2-1.0.6",
- "copyleft-next-0.3.0",
- "copyleft-next-0.3.1",
- "curl",
- "diffmark",
- "dvipdfm",
- "eGenix",
- "gSOAP-1.3b",
- "gnuplot",
- "iMatix",
- "libpng-2.0",
- "libtiff",
- "mpich2",
- "psfrag",
- "psutils",
- "xinetd",
- "xpp",
- "zlib-acknowledgement"
-]
diff --git a/assets/node_modules/spdx-license-ids/package.json b/assets/node_modules/spdx-license-ids/package.json
deleted file mode 100644
index 68580a6..0000000
--- a/assets/node_modules/spdx-license-ids/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "spdx-license-ids",
- "version": "3.0.5",
- "description": "A list of SPDX license identifiers",
- "repository": "shinnn/spdx-license-ids",
- "author": "Shinnosuke Watanabe (https://github.com/shinnn)",
- "license": "CC0-1.0",
- "scripts": {
- "build": "node build.js",
- "pretest": "eslint .",
- "test": "node test.js"
- },
- "files": [
- "deprecated.json",
- "index.json"
- ],
- "keywords": [
- "spdx",
- "license",
- "licenses",
- "id",
- "identifier",
- "identifiers",
- "json",
- "array",
- "oss"
- ],
- "devDependencies": {
- "@shinnn/eslint-config": "^6.8.7",
- "chalk": "^2.4.1",
- "eslint": "^5.10.0",
- "get-spdx-license-ids": "^2.1.0",
- "rmfr": "^2.0.0",
- "tape": "^4.9.1"
- },
- "eslintConfig": {
- "extends": "@shinnn"
- }
-}
diff --git a/assets/node_modules/specificity/LICENSE b/assets/node_modules/specificity/LICENSE
deleted file mode 100644
index ef36f53..0000000
--- a/assets/node_modules/specificity/LICENSE
+++ /dev/null
@@ -1,8 +0,0 @@
-The MIT License (MIT)
-Copyright (c) 2016 Keegan Street 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.
diff --git a/assets/node_modules/specificity/bin/specificity b/assets/node_modules/specificity/bin/specificity
deleted file mode 100755
index 9948f33..0000000
--- a/assets/node_modules/specificity/bin/specificity
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env node
-
-// CLI uses CommonJS require to support older versions of Node.js
-var specificity = require('../dist/specificity'),
- selector = process.argv[2],
- result;
-
-if (selector) {
- result = specificity.calculate(selector)[0];
- console.log(result.specificity);
-} else {
- console.log('Usage: specificity <selector>');
- console.log('Computes specificity of a CSS selector.');
- process.exit(1);
-}
diff --git a/assets/node_modules/specificity/dist/specificity.js b/assets/node_modules/specificity/dist/specificity.js
deleted file mode 100644
index 266269b..0000000
--- a/assets/node_modules/specificity/dist/specificity.js
+++ /dev/null
@@ -1,229 +0,0 @@
-(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
- typeof define === 'function' && define.amd ? define(['exports'], factory) :
- (factory((global.SPECIFICITY = {})));
-}(this, (function (exports) { 'use strict';
-
- // Calculate the specificity for a selector by dividing it into simple selectors and counting them
- var calculate = function(input) {
- var selectors,
- selector,
- i,
- len,
- results = [];
-
- // Separate input by commas
- selectors = input.split(',');
-
- for (i = 0, len = selectors.length; i < len; i += 1) {
- selector = selectors[i];
- if (selector.length > 0) {
- results.push(calculateSingle(selector));
- }
- }
-
- return results;
- };
-
- /**
- * Calculates the specificity of CSS selectors
- * http://www.w3.org/TR/css3-selectors/#specificity
- *
- * Returns an object with the following properties:
- * - selector: the input
- * - specificity: e.g. 0,1,0,0
- * - parts: array with details about each part of the selector that counts towards the specificity
- * - specificityArray: e.g. [0, 1, 0, 0]
- */
- var calculateSingle = function(input) {
- var selector = input,
- findMatch,
- typeCount = {
- 'a': 0,
- 'b': 0,
- 'c': 0
- },
- parts = [],
- // The following regular expressions assume that selectors matching the preceding regular expressions have been removed
- attributeRegex = /(\[[^\]]+\])/g,
- idRegex = /(#[^\#\s\+>~\.\[:\)]+)/g,
- classRegex = /(\.[^\s\+>~\.\[:\)]+)/g,
- pseudoElementRegex = /(::[^\s\+>~\.\[:]+|:first-line|:first-letter|:before|:after)/gi,
- // A regex for pseudo classes with brackets - :nth-child(), :nth-last-child(), :nth-of-type(), :nth-last-type(), :lang()
- // The negation psuedo class (:not) is filtered out because specificity is calculated on its argument
- // :global and :local are filtered out - they look like psuedo classes but are an identifier for CSS Modules
- pseudoClassWithBracketsRegex = /(:(?!not|global|local)[\w-]+\([^\)]*\))/gi,
- // A regex for other pseudo classes, which don't have brackets
- pseudoClassRegex = /(:(?!not|global|local)[^\s\+>~\.\[:]+)/g,
- elementRegex = /([^\s\+>~\.\[:]+)/g;
-
- // Find matches for a regular expression in a string and push their details to parts
- // Type is "a" for IDs, "b" for classes, attributes and pseudo-classes and "c" for elements and pseudo-elements
- findMatch = function(regex, type) {
- var matches, i, len, match, index, length;
- if (regex.test(selector)) {
- matches = selector.match(regex);
- for (i = 0, len = matches.length; i < len; i += 1) {
- typeCount[type] += 1;
- match = matches[i];
- index = selector.indexOf(match);
- length = match.length;
- parts.push({
- selector: input.substr(index, length),
- type: type,
- index: index,
- length: length
- });
- // Replace this simple selector with whitespace so it won't be counted in further simple selectors
- selector = selector.replace(match, Array(length + 1).join(' '));
- }
- }
- };
-
- // Replace escaped characters with plain text, using the "A" character
- // https://www.w3.org/TR/CSS21/syndata.html#characters
- (function() {
- var replaceWithPlainText = function(regex) {
- var matches, i, len, match;
- if (regex.test(selector)) {
- matches = selector.match(regex);
- for (i = 0, len = matches.length; i < len; i += 1) {
- match = matches[i];
- selector = selector.replace(match, Array(match.length + 1).join('A'));
- }
- }
- },
- // Matches a backslash followed by six hexadecimal digits followed by an optional single whitespace character
- escapeHexadecimalRegex = /\\[0-9A-Fa-f]{6}\s?/g,
- // Matches a backslash followed by fewer than six hexadecimal digits followed by a mandatory single whitespace character
- escapeHexadecimalRegex2 = /\\[0-9A-Fa-f]{1,5}\s/g,
- // Matches a backslash followed by any character
- escapeSpecialCharacter = /\\./g;
-
- replaceWithPlainText(escapeHexadecimalRegex);
- replaceWithPlainText(escapeHexadecimalRegex2);
- replaceWithPlainText(escapeSpecialCharacter);
- }());
-
- // Remove anything after a left brace in case a user has pasted in a rule, not just a selector
- (function() {
- var regex = /{[^]*/gm,
- matches, i, len, match;
- if (regex.test(selector)) {
- matches = selector.match(regex);
- for (i = 0, len = matches.length; i < len; i += 1) {
- match = matches[i];
- selector = selector.replace(match, Array(match.length + 1).join(' '));
- }
- }
- }());
-
- // Add attribute selectors to parts collection (type b)
- findMatch(attributeRegex, 'b');
-
- // Add ID selectors to parts collection (type a)
- findMatch(idRegex, 'a');
-
- // Add class selectors to parts collection (type b)
- findMatch(classRegex, 'b');
-
- // Add pseudo-element selectors to parts collection (type c)
- findMatch(pseudoElementRegex, 'c');
-
- // Add pseudo-class selectors to parts collection (type b)
- findMatch(pseudoClassWithBracketsRegex, 'b');
- findMatch(pseudoClassRegex, 'b');
-
- // Remove universal selector and separator characters
- selector = selector.replace(/[\*\s\+>~]/g, ' ');
-
- // Remove any stray dots or hashes which aren't attached to words
- // These may be present if the user is live-editing this selector
- selector = selector.replace(/[#\.]/g, ' ');
-
- // Remove the negation psuedo-class (:not) but leave its argument because specificity is calculated on its argument
- // Remove non-standard :local and :global CSS Module identifiers because they do not effect the specificity
- selector = selector.replace(/:not/g, ' ');
- selector = selector.replace(/:local/g, ' ');
- selector = selector.replace(/:global/g, ' ');
- selector = selector.replace(/[\(\)]/g, ' ');
-
- // The only things left should be element selectors (type c)
- findMatch(elementRegex, 'c');
-
- // Order the parts in the order they appear in the original selector
- // This is neater for external apps to deal with
- parts.sort(function(a, b) {
- return a.index - b.index;
- });
-
- return {
- selector: input,
- specificity: '0,' + typeCount.a.toString() + ',' + typeCount.b.toString() + ',' + typeCount.c.toString(),
- specificityArray: [0, typeCount.a, typeCount.b, typeCount.c],
- parts: parts
- };
- };
-
- /**
- * Compares two CSS selectors for specificity
- * Alternatively you can replace one of the CSS selectors with a specificity array
- *
- * - it returns -1 if a has a lower specificity than b
- * - it returns 1 if a has a higher specificity than b
- * - it returns 0 if a has the same specificity than b
- */
- var compare = function(a, b) {
- var aSpecificity,
- bSpecificity,
- i;
-
- if (typeof a ==='string') {
- if (a.indexOf(',') !== -1) {
- throw 'Invalid CSS selector';
- } else {
- aSpecificity = calculateSingle(a)['specificityArray'];
- }
- } else if (Array.isArray(a)) {
- if (a.filter(function(e) { return (typeof e === 'number'); }).length !== 4) {
- throw 'Invalid specificity array';
- } else {
- aSpecificity = a;
- }
- } else {
- throw 'Invalid CSS selector or specificity array';
- }
-
- if (typeof b ==='string') {
- if (b.indexOf(',') !== -1) {
- throw 'Invalid CSS selector';
- } else {
- bSpecificity = calculateSingle(b)['specificityArray'];
- }
- } else if (Array.isArray(b)) {
- if (b.filter(function(e) { return (typeof e === 'number'); }).length !== 4) {
- throw 'Invalid specificity array';
- } else {
- bSpecificity = b;
- }
- } else {
- throw 'Invalid CSS selector or specificity array';
- }
-
- for (i = 0; i < 4; i += 1) {
- if (aSpecificity[i] < bSpecificity[i]) {
- return -1;
- } else if (aSpecificity[i] > bSpecificity[i]) {
- return 1;
- }
- }
-
- return 0;
- };
-
- exports.calculate = calculate;
- exports.compare = compare;
-
- Object.defineProperty(exports, '__esModule', { value: true });
-
-})));
diff --git a/assets/node_modules/specificity/dist/specificity.mjs b/assets/node_modules/specificity/dist/specificity.mjs
deleted file mode 100644
index cdbdb6a..0000000
--- a/assets/node_modules/specificity/dist/specificity.mjs
+++ /dev/null
@@ -1,218 +0,0 @@
-// Calculate the specificity for a selector by dividing it into simple selectors and counting them
-var calculate = function(input) {
- var selectors,
- selector,
- i,
- len,
- results = [];
-
- // Separate input by commas
- selectors = input.split(',');
-
- for (i = 0, len = selectors.length; i < len; i += 1) {
- selector = selectors[i];
- if (selector.length > 0) {
- results.push(calculateSingle(selector));
- }
- }
-
- return results;
-};
-
-/**
- * Calculates the specificity of CSS selectors
- * http://www.w3.org/TR/css3-selectors/#specificity
- *
- * Returns an object with the following properties:
- * - selector: the input
- * - specificity: e.g. 0,1,0,0
- * - parts: array with details about each part of the selector that counts towards the specificity
- * - specificityArray: e.g. [0, 1, 0, 0]
- */
-var calculateSingle = function(input) {
- var selector = input,
- findMatch,
- typeCount = {
- 'a': 0,
- 'b': 0,
- 'c': 0
- },
- parts = [],
- // The following regular expressions assume that selectors matching the preceding regular expressions have been removed
- attributeRegex = /(\[[^\]]+\])/g,
- idRegex = /(#[^\#\s\+>~\.\[:\)]+)/g,
- classRegex = /(\.[^\s\+>~\.\[:\)]+)/g,
- pseudoElementRegex = /(::[^\s\+>~\.\[:]+|:first-line|:first-letter|:before|:after)/gi,
- // A regex for pseudo classes with brackets - :nth-child(), :nth-last-child(), :nth-of-type(), :nth-last-type(), :lang()
- // The negation psuedo class (:not) is filtered out because specificity is calculated on its argument
- // :global and :local are filtered out - they look like psuedo classes but are an identifier for CSS Modules
- pseudoClassWithBracketsRegex = /(:(?!not|global|local)[\w-]+\([^\)]*\))/gi,
- // A regex for other pseudo classes, which don't have brackets
- pseudoClassRegex = /(:(?!not|global|local)[^\s\+>~\.\[:]+)/g,
- elementRegex = /([^\s\+>~\.\[:]+)/g;
-
- // Find matches for a regular expression in a string and push their details to parts
- // Type is "a" for IDs, "b" for classes, attributes and pseudo-classes and "c" for elements and pseudo-elements
- findMatch = function(regex, type) {
- var matches, i, len, match, index, length;
- if (regex.test(selector)) {
- matches = selector.match(regex);
- for (i = 0, len = matches.length; i < len; i += 1) {
- typeCount[type] += 1;
- match = matches[i];
- index = selector.indexOf(match);
- length = match.length;
- parts.push({
- selector: input.substr(index, length),
- type: type,
- index: index,
- length: length
- });
- // Replace this simple selector with whitespace so it won't be counted in further simple selectors
- selector = selector.replace(match, Array(length + 1).join(' '));
- }
- }
- };
-
- // Replace escaped characters with plain text, using the "A" character
- // https://www.w3.org/TR/CSS21/syndata.html#characters
- (function() {
- var replaceWithPlainText = function(regex) {
- var matches, i, len, match;
- if (regex.test(selector)) {
- matches = selector.match(regex);
- for (i = 0, len = matches.length; i < len; i += 1) {
- match = matches[i];
- selector = selector.replace(match, Array(match.length + 1).join('A'));
- }
- }
- },
- // Matches a backslash followed by six hexadecimal digits followed by an optional single whitespace character
- escapeHexadecimalRegex = /\\[0-9A-Fa-f]{6}\s?/g,
- // Matches a backslash followed by fewer than six hexadecimal digits followed by a mandatory single whitespace character
- escapeHexadecimalRegex2 = /\\[0-9A-Fa-f]{1,5}\s/g,
- // Matches a backslash followed by any character
- escapeSpecialCharacter = /\\./g;
-
- replaceWithPlainText(escapeHexadecimalRegex);
- replaceWithPlainText(escapeHexadecimalRegex2);
- replaceWithPlainText(escapeSpecialCharacter);
- }());
-
- // Remove anything after a left brace in case a user has pasted in a rule, not just a selector
- (function() {
- var regex = /{[^]*/gm,
- matches, i, len, match;
- if (regex.test(selector)) {
- matches = selector.match(regex);
- for (i = 0, len = matches.length; i < len; i += 1) {
- match = matches[i];
- selector = selector.replace(match, Array(match.length + 1).join(' '));
- }
- }
- }());
-
- // Add attribute selectors to parts collection (type b)
- findMatch(attributeRegex, 'b');
-
- // Add ID selectors to parts collection (type a)
- findMatch(idRegex, 'a');
-
- // Add class selectors to parts collection (type b)
- findMatch(classRegex, 'b');
-
- // Add pseudo-element selectors to parts collection (type c)
- findMatch(pseudoElementRegex, 'c');
-
- // Add pseudo-class selectors to parts collection (type b)
- findMatch(pseudoClassWithBracketsRegex, 'b');
- findMatch(pseudoClassRegex, 'b');
-
- // Remove universal selector and separator characters
- selector = selector.replace(/[\*\s\+>~]/g, ' ');
-
- // Remove any stray dots or hashes which aren't attached to words
- // These may be present if the user is live-editing this selector
- selector = selector.replace(/[#\.]/g, ' ');
-
- // Remove the negation psuedo-class (:not) but leave its argument because specificity is calculated on its argument
- // Remove non-standard :local and :global CSS Module identifiers because they do not effect the specificity
- selector = selector.replace(/:not/g, ' ');
- selector = selector.replace(/:local/g, ' ');
- selector = selector.replace(/:global/g, ' ');
- selector = selector.replace(/[\(\)]/g, ' ');
-
- // The only things left should be element selectors (type c)
- findMatch(elementRegex, 'c');
-
- // Order the parts in the order they appear in the original selector
- // This is neater for external apps to deal with
- parts.sort(function(a, b) {
- return a.index - b.index;
- });
-
- return {
- selector: input,
- specificity: '0,' + typeCount.a.toString() + ',' + typeCount.b.toString() + ',' + typeCount.c.toString(),
- specificityArray: [0, typeCount.a, typeCount.b, typeCount.c],
- parts: parts
- };
-};
-
-/**
- * Compares two CSS selectors for specificity
- * Alternatively you can replace one of the CSS selectors with a specificity array
- *
- * - it returns -1 if a has a lower specificity than b
- * - it returns 1 if a has a higher specificity than b
- * - it returns 0 if a has the same specificity than b
- */
-var compare = function(a, b) {
- var aSpecificity,
- bSpecificity,
- i;
-
- if (typeof a ==='string') {
- if (a.indexOf(',') !== -1) {
- throw 'Invalid CSS selector';
- } else {
- aSpecificity = calculateSingle(a)['specificityArray'];
- }
- } else if (Array.isArray(a)) {
- if (a.filter(function(e) { return (typeof e === 'number'); }).length !== 4) {
- throw 'Invalid specificity array';
- } else {
- aSpecificity = a;
- }
- } else {
- throw 'Invalid CSS selector or specificity array';
- }
-
- if (typeof b ==='string') {
- if (b.indexOf(',') !== -1) {
- throw 'Invalid CSS selector';
- } else {
- bSpecificity = calculateSingle(b)['specificityArray'];
- }
- } else if (Array.isArray(b)) {
- if (b.filter(function(e) { return (typeof e === 'number'); }).length !== 4) {
- throw 'Invalid specificity array';
- } else {
- bSpecificity = b;
- }
- } else {
- throw 'Invalid CSS selector or specificity array';
- }
-
- for (i = 0; i < 4; i += 1) {
- if (aSpecificity[i] < bSpecificity[i]) {
- return -1;
- } else if (aSpecificity[i] > bSpecificity[i]) {
- return 1;
- }
- }
-
- return 0;
-};
-
-export { calculate, compare };
diff --git a/assets/node_modules/specificity/package.json b/assets/node_modules/specificity/package.json
deleted file mode 100644
index 7f7d07b..0000000
--- a/assets/node_modules/specificity/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "specificity",
- "version": "0.4.1",
- "description": "Calculate the specificity of a CSS selector",
- "keywords": [
- "CSS",
- "specificity"
- ],
- "homepage": "https://github.com/keeganstreet/specificity",
- "author": {
- "name": "Keegan Street",
- "url": "http://keegan.st"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/keeganstreet/specificity.git"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/keeganstreet/specificity/issues"
- },
- "main": "dist/specificity",
- "module": "dist/specificity.mjs",
- "bin": {
- "specificity": "./bin/specificity"
- },
- "scripts": {
- "prepare": "rollup --config",
- "test": "mocha test/test.js --require esm"
- },
- "devDependencies": {
- "esm": "^3.0.71",
- "mocha": "^5.2.0",
- "rollup": "^0.62.0"
- },
- "types": "specificity.d.ts"
-}
diff --git a/assets/node_modules/specificity/readme.md b/assets/node_modules/specificity/readme.md
deleted file mode 100644
index 78c0c4d..0000000
--- a/assets/node_modules/specificity/readme.md
+++ /dev/null
@@ -1,176 +0,0 @@
-# Specificity Calculator
-
-A JavaScript module for calculating and comparing the [specificity of CSS selectors](https://www.w3.org/TR/selectors-3/#specificity). The module is used on the [Specificity Calculator](https://specificity.keegan.st/) website.
-
-Specificity Calculator is built for CSS Selectors Level 3. Specificity Calculator isn’t a CSS validator. If you enter invalid selectors it will return incorrect results. For example, the [negation pseudo-class](https://www.w3.org/TR/selectors-3/#negation) may only take a simple selector as an argument. Using a psuedo-element or combinator as an argument for `:not()` is invalid CSS so Specificity Calculator will return incorrect results.
-
-## Supported runtime environments
-
-The module is provided in two formats: an ECMAScript (ES) module in `dist/specificity.mjs`, and a Universal Module Definition (UMD) in `dist/specificity.js`. This enables support for the following runtime environments:
-
-**Browser**
-
- * Directly loaded ES module
- * ES module in a precompiled script (using a bundler like Webpack or Rollup)
- * Global variable
-
-**Node.js**
-
- * ES module
- * CommonJS module
-
-### Browser usage as a directly loaded ES module
-
-```html
-<script type="module">
- import { calculate } from './specificity/dist/specificity.mjs';
-
- calculate('ul#nav li.active a');
-</script>
-```
-
-### Browser usage as an ES module in a precompiled script
-
-Bundlers like [Webpack and Rollup](https://github.com/rollup/rollup/wiki/pkg.module) import from the `module` field in `package.json`, which is set to the ES module artefact, `dist/specificity.mjs`.
-
-```js
-import { calculate } from 'specificity';
-
-calculate('ul#nav li.active a');
-```
-
-### Browser usage as a global variable
-
-The UMD artefact, `dist/specificity.js`, sets a global variable, `SPECIFICITY`.
-
-```html
-<script src="./specificity/dist/specificity.js"></script>
-
-<script>
- SPECIFICITY.calculate('ul#nav li.active a');
-</script>
-```
-
-### Node.js usage as an ES module
-
-The `main` field in `package.json` has an extensionless value, `dist/specificity`. This allows Node.js to use either the ES module, in `dist/specificity.mjs`, or the CommonJS module, in `dist/specificity.js`.
-
-When Node.js is run with the `--experimental-modules` [flag](https://nodejs.org/api/esm.html) or an [ES module loader](https://www.npmjs.com/package/esm), it will use the ES module artefact.
-
-```js
-import { calculate } from 'specificity';
-
-calculate('ul#nav li.active a');
-```
-
-### Node.js usage as a CommonJS module
-
-Otherwise, Node.js will use the UMD artefact, which contains a CommonJS module definition.
-
-```js
-const { calculate } = require('specificity');
-
-calculate('ul#nav li.active a');
-```
-
-## Calculate function
-
-The `calculate` function returns an array containing a result object for each selector input. Each result object has the following properties:
-
- * `selector`: the input
- * `specificity`: the result as a string e.g. `0,1,0,0`
- * `specificityArray`: the result as an array of numbers e.g. `[0, 1, 0, 0]`
- * `parts`: array with details about each part of the selector that counts towards the specificity
-
-## Example
-
-```js
-calculate('ul#nav li.active a');
-
-/*
-[
- {
- selector: 'ul#nav li.active a',
- specificity: '0,1,1,3',
- specificityArray: [0, 1, 1, 3],
- parts: [
- { selector: 'ul', type: 'c', index: 0, length: 2 },
- { selector: '#nav', type: 'a', index: 2, length: 4 },
- { selector: 'li', type: 'c', index: 5, length: 2 },
- { selector: '.active', type: 'b', index: 8, length: 7 },
- { selector: 'a', type: 'c', index: 13, length: 1 }
- ]
- }
-]
-*/
-```
-
-You can use comma separation to pass in multiple selectors:
-
-```js
-calculate('ul#nav li.active a, body.ie7 .col_3 h2 ~ h2');
-
-/*
-[
- {
- selector: 'ul#nav li.active a',
- specificity: '0,1,1,3',
- ...
- },
- {
- selector: 'body.ie7 .col_3 h2 ~ h2',
- specificity: '0,0,2,3',
- ...
- }
-]
-*/
-```
-
-## Comparing two selectors
-
-Specificity Calculator also exports a `compare` function. This function accepts two CSS selectors or specificity arrays, `a` and `b`.
-
- * It returns `-1` if `a` has a lower specificity than `b`
- * It returns `1` if `a` has a higher specificity than `b`
- * It returns `0` if `a` has the same specificity than `b`
-
-```js
-compare('div', '.active'); // -1
-compare('#main', 'div'); // 1
-compare('span', 'div'); // 0
-compare('span', [0, 0, 0, 1]); // 0
-compare('#main > div', [0, 1, 0, 1]); // 0
-```
-
-## Ordering an array of selectors by specificity
-
-You can pass the `compare` function to `Array.prototype.sort` to sort an array of CSS selectors by specificity.
-
-```js
-import { compare } from 'specificity';
-
-['#main', 'p', '.active'].sort(compare); // ['p', '.active', '#main']
-```
-
-## Command-line usage
-
-Run `npm install specificity` to install the module locally, or `npm install -g specificity` for global installation. Run `specificity` without arguments to learn about its usage:
-
-```bash
-$ specificity
-Usage: specificity <selector>
-Computes specificity of a CSS selector.
-```
-
-Pass a selector as the first argument to get its specificity computed:
-
-```bash
-$ specificity "ul#nav li.active a"
-0,1,1,3
-```
-
-## Testing
-
-To install dependencies, run: `npm install`
-
-Then to test, run: `npm test`
diff --git a/assets/node_modules/specificity/rollup.config.js b/assets/node_modules/specificity/rollup.config.js
deleted file mode 100644
index d7fa739..0000000
--- a/assets/node_modules/specificity/rollup.config.js
+++ /dev/null
@@ -1,18 +0,0 @@
-const path = require('path');
-
-export default [
- {
- input: 'specificity.js',
- output: [
- {
- file: 'dist/specificity.mjs',
- format: 'es',
- },
- {
- file: 'dist/specificity.js',
- format: 'umd',
- name: 'SPECIFICITY',
- },
- ],
- },
-]; \ No newline at end of file
diff --git a/assets/node_modules/specificity/specificity.d.ts b/assets/node_modules/specificity/specificity.d.ts
deleted file mode 100644
index 14fb015..0000000
--- a/assets/node_modules/specificity/specificity.d.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Specificity arrays always have 4 numbers (integers) for quick comparison
- * comparing from left to right, the next number only has to be checked if
- * two numbers of the same index are equal.
- */
-export type SpecificityArray = [number, number, number, number];
-
-/**
- * A result of parsing a selector into an array of parts.
- * Calculating a specificity array is a matter of summing
- * over all the parts and adding the values to the right
- * bucket in a specificity array.
- *
- * @interface Part
- */
-export interface Part {
- selector: string;
- type: 'a' | 'b' | 'c';
- index: number;
- length: number;
-}
-
-/**
- * Returned by the calculate function. Represents the results
- * of parsing and calculating the specificity of a selector.
- *
- * @interface Specificity
- */
-export interface Specificity {
- selector: string;
- specificity: string;
- specificityArray: SpecificityArray;
- parts: Array<Part>;
-}
-
-/**
- * Calculates the specificity for the given selector string.
- * If the string contains a comma, each selector will be parsed
- * separately.
- *
- * @returns A list of specificity objects one for each selector in the
- * selector string.
- */
-export function calculate(selector: string): Array<Specificity>;
-
-/**
- * Compares two selectors. If a string, the string cannot contain a comma.
- *
- * @returns A value less than 0 if selector a is less specific than selector b.
- * A value more than 0 if selector a is more specific than selector b.
- * 0 if the two selectors have the same specificity.
- */
-export function compare(a: string | SpecificityArray, b: string | SpecificityArray): -1 | 0 | 1;
diff --git a/assets/node_modules/specificity/specificity.js b/assets/node_modules/specificity/specificity.js
deleted file mode 100644
index cae9b8f..0000000
--- a/assets/node_modules/specificity/specificity.js
+++ /dev/null
@@ -1,221 +0,0 @@
-// Calculate the specificity for a selector by dividing it into simple selectors and counting them
-var calculate = function(input) {
- var selectors,
- selector,
- i,
- len,
- results = [];
-
- // Separate input by commas
- selectors = input.split(',');
-
- for (i = 0, len = selectors.length; i < len; i += 1) {
- selector = selectors[i];
- if (selector.length > 0) {
- results.push(calculateSingle(selector));
- }
- }
-
- return results;
-};
-
-/**
- * Calculates the specificity of CSS selectors
- * http://www.w3.org/TR/css3-selectors/#specificity
- *
- * Returns an object with the following properties:
- * - selector: the input
- * - specificity: e.g. 0,1,0,0
- * - parts: array with details about each part of the selector that counts towards the specificity
- * - specificityArray: e.g. [0, 1, 0, 0]
- */
-var calculateSingle = function(input) {
- var selector = input,
- findMatch,
- typeCount = {
- 'a': 0,
- 'b': 0,
- 'c': 0
- },
- parts = [],
- // The following regular expressions assume that selectors matching the preceding regular expressions have been removed
- attributeRegex = /(\[[^\]]+\])/g,
- idRegex = /(#[^\#\s\+>~\.\[:\)]+)/g,
- classRegex = /(\.[^\s\+>~\.\[:\)]+)/g,
- pseudoElementRegex = /(::[^\s\+>~\.\[:]+|:first-line|:first-letter|:before|:after)/gi,
- // A regex for pseudo classes with brackets - :nth-child(), :nth-last-child(), :nth-of-type(), :nth-last-type(), :lang()
- // The negation psuedo class (:not) is filtered out because specificity is calculated on its argument
- // :global and :local are filtered out - they look like psuedo classes but are an identifier for CSS Modules
- pseudoClassWithBracketsRegex = /(:(?!not|global|local)[\w-]+\([^\)]*\))/gi,
- // A regex for other pseudo classes, which don't have brackets
- pseudoClassRegex = /(:(?!not|global|local)[^\s\+>~\.\[:]+)/g,
- elementRegex = /([^\s\+>~\.\[:]+)/g;
-
- // Find matches for a regular expression in a string and push their details to parts
- // Type is "a" for IDs, "b" for classes, attributes and pseudo-classes and "c" for elements and pseudo-elements
- findMatch = function(regex, type) {
- var matches, i, len, match, index, length;
- if (regex.test(selector)) {
- matches = selector.match(regex);
- for (i = 0, len = matches.length; i < len; i += 1) {
- typeCount[type] += 1;
- match = matches[i];
- index = selector.indexOf(match);
- length = match.length;
- parts.push({
- selector: input.substr(index, length),
- type: type,
- index: index,
- length: length
- });
- // Replace this simple selector with whitespace so it won't be counted in further simple selectors
- selector = selector.replace(match, Array(length + 1).join(' '));
- }
- }
- };
-
- // Replace escaped characters with plain text, using the "A" character
- // https://www.w3.org/TR/CSS21/syndata.html#characters
- (function() {
- var replaceWithPlainText = function(regex) {
- var matches, i, len, match;
- if (regex.test(selector)) {
- matches = selector.match(regex);
- for (i = 0, len = matches.length; i < len; i += 1) {
- match = matches[i];
- selector = selector.replace(match, Array(match.length + 1).join('A'));
- }
- }
- },
- // Matches a backslash followed by six hexadecimal digits followed by an optional single whitespace character
- escapeHexadecimalRegex = /\\[0-9A-Fa-f]{6}\s?/g,
- // Matches a backslash followed by fewer than six hexadecimal digits followed by a mandatory single whitespace character
- escapeHexadecimalRegex2 = /\\[0-9A-Fa-f]{1,5}\s/g,
- // Matches a backslash followed by any character
- escapeSpecialCharacter = /\\./g;
-
- replaceWithPlainText(escapeHexadecimalRegex);
- replaceWithPlainText(escapeHexadecimalRegex2);
- replaceWithPlainText(escapeSpecialCharacter);
- }());
-
- // Remove anything after a left brace in case a user has pasted in a rule, not just a selector
- (function() {
- var regex = /{[^]*/gm,
- matches, i, len, match;
- if (regex.test(selector)) {
- matches = selector.match(regex);
- for (i = 0, len = matches.length; i < len; i += 1) {
- match = matches[i];
- selector = selector.replace(match, Array(match.length + 1).join(' '));
- }
- }
- }());
-
- // Add attribute selectors to parts collection (type b)
- findMatch(attributeRegex, 'b');
-
- // Add ID selectors to parts collection (type a)
- findMatch(idRegex, 'a');
-
- // Add class selectors to parts collection (type b)
- findMatch(classRegex, 'b');
-
- // Add pseudo-element selectors to parts collection (type c)
- findMatch(pseudoElementRegex, 'c');
-
- // Add pseudo-class selectors to parts collection (type b)
- findMatch(pseudoClassWithBracketsRegex, 'b');
- findMatch(pseudoClassRegex, 'b');
-
- // Remove universal selector and separator characters
- selector = selector.replace(/[\*\s\+>~]/g, ' ');
-
- // Remove any stray dots or hashes which aren't attached to words
- // These may be present if the user is live-editing this selector
- selector = selector.replace(/[#\.]/g, ' ');
-
- // Remove the negation psuedo-class (:not) but leave its argument because specificity is calculated on its argument
- // Remove non-standard :local and :global CSS Module identifiers because they do not effect the specificity
- selector = selector.replace(/:not/g, ' ');
- selector = selector.replace(/:local/g, ' ');
- selector = selector.replace(/:global/g, ' ');
- selector = selector.replace(/[\(\)]/g, ' ');
-
- // The only things left should be element selectors (type c)
- findMatch(elementRegex, 'c');
-
- // Order the parts in the order they appear in the original selector
- // This is neater for external apps to deal with
- parts.sort(function(a, b) {
- return a.index - b.index;
- });
-
- return {
- selector: input,
- specificity: '0,' + typeCount.a.toString() + ',' + typeCount.b.toString() + ',' + typeCount.c.toString(),
- specificityArray: [0, typeCount.a, typeCount.b, typeCount.c],
- parts: parts
- };
-};
-
-/**
- * Compares two CSS selectors for specificity
- * Alternatively you can replace one of the CSS selectors with a specificity array
- *
- * - it returns -1 if a has a lower specificity than b
- * - it returns 1 if a has a higher specificity than b
- * - it returns 0 if a has the same specificity than b
- */
-var compare = function(a, b) {
- var aSpecificity,
- bSpecificity,
- i;
-
- if (typeof a ==='string') {
- if (a.indexOf(',') !== -1) {
- throw 'Invalid CSS selector';
- } else {
- aSpecificity = calculateSingle(a)['specificityArray'];
- }
- } else if (Array.isArray(a)) {
- if (a.filter(function(e) { return (typeof e === 'number'); }).length !== 4) {
- throw 'Invalid specificity array';
- } else {
- aSpecificity = a;
- }
- } else {
- throw 'Invalid CSS selector or specificity array';
- }
-
- if (typeof b ==='string') {
- if (b.indexOf(',') !== -1) {
- throw 'Invalid CSS selector';
- } else {
- bSpecificity = calculateSingle(b)['specificityArray'];
- }
- } else if (Array.isArray(b)) {
- if (b.filter(function(e) { return (typeof e === 'number'); }).length !== 4) {
- throw 'Invalid specificity array';
- } else {
- bSpecificity = b;
- }
- } else {
- throw 'Invalid CSS selector or specificity array';
- }
-
- for (i = 0; i < 4; i += 1) {
- if (aSpecificity[i] < bSpecificity[i]) {
- return -1;
- } else if (aSpecificity[i] > bSpecificity[i]) {
- return 1;
- }
- }
-
- return 0;
-};
-
-export {
- calculate,
- compare
-};
diff --git a/assets/node_modules/specificity/test/test.js b/assets/node_modules/specificity/test/test.js
deleted file mode 100644
index 451e341..0000000
--- a/assets/node_modules/specificity/test/test.js
+++ /dev/null
@@ -1,115 +0,0 @@
-import { describe, it } from 'mocha';
-import assert from 'assert';
-import { calculate, compare } from '../specificity';
-
-describe('calculate', () => {
- [
- // http://css-tricks.com/specifics-on-css-specificity/
- { selector: 'ul#nav li.active a', expected: '0,1,1,3' },
- { selector: 'body.ie7 .col_3 h2 ~ h2', expected: '0,0,2,3' },
- { selector: '#footer *:not(nav) li', expected: '0,1,0,2' },
- { selector: 'ul > li ul li ol li:first-letter', expected: '0,0,0,7' },
-
- // http://reference.sitepoint.com/css/specificity
- { selector: 'body#home div#warning p.message', expected: '0,2,1,3' },
- { selector: '* body#home>div#warning p.message', expected: '0,2,1,3' },
- { selector: '#home #warning p.message', expected: '0,2,1,1' },
- { selector: '#warning p.message', expected: '0,1,1,1' },
- { selector: '#warning p', expected: '0,1,0,1' },
- { selector: 'p.message', expected: '0,0,1,1' },
- { selector: 'p', expected: '0,0,0,1' },
-
- // Test pseudo-element with uppertestCase letters
- { selector: 'li:bEfoRE', expected: '0,0,0,2' },
-
- // Pseudo-class tests
- { selector: 'li:first-child+p', expected: '0,0,1,2'},
- { selector: 'li:nth-child(even)+p', expected: '0,0,1,2'},
- { selector: 'li:nth-child(2n+1)+p', expected: '0,0,1,2'},
- { selector: 'li:nth-child( 2n + 1 )+p', expected: '0,0,1,2'},
- { selector: 'li:nth-child(2n-1)+p', expected: '0,0,1,2'},
- { selector: 'li:nth-child(2n-1) p', expected: '0,0,1,2'},
- { selector: ':lang(nl-be)', expected: '0,0,1,0'},
-
- // Tests with CSS escape sequences
- // https://mathiasbynens.be/notes/css-escapes and https://mathiasbynens.be/demo/crazy-class
- { selector: '.\\3A -\\)', expected: '0,0,1,0' }, /* <p class=":-)"></p> */
- { selector: '.\\3A \\`\\(', expected: '0,0,1,0' }, /* <p class=":`("></p> */
- { selector: '.\\3A .\\`\\(', expected: '0,0,2,0' }, /* <p class=": `("></p> */
- { selector: '.\\31 a2b3c', expected: '0,0,1,0' }, /* <p class="1a2b3c"></p> */
- { selector: '.\\000031a2b3c', expected: '0,0,1,0' }, /* <p class="1a2b3c"></p> */
- { selector: '.\\000031 a2b3c', expected: '0,0,1,0' }, /* <p class="1a2b3c"></p> */
- { selector: '#\\#fake-id', expected: '0,1,0,0' }, /* <p id="#fake-id"></p> */
- { selector: '.\\#fake-id', expected: '0,0,1,0' }, /* <p class="#fake-id"></p> */
- { selector: '#\\<p\\>', expected: '0,1,0,0' }, /* <p id="<p>"></p> */
- { selector: '.\\#\\.\\#\\.\\#', expected: '0,0,1,0' }, /* <p class="#.#.#"></p> */
- { selector: '.foo\\.bar', expected: '0,0,1,0' }, /* <p class="foo.bar"></p> */
- { selector: '.\\:hover\\:active', expected: '0,0,1,0' }, /* <p class=":hover:active"></p> */
- { selector: '.\\3A hover\\3A active', expected: '0,0,1,0' }, /* <p class=":hover:active"></p> */
- { selector: '.\\000031 p', expected: '0,0,1,1' }, /* <p class="1"><p></p></p>" */
- { selector: '.\\3A \\`\\( .another', expected: '0,0,2,0' }, /* <p class=":`("><p class="another"></p></p> */
- { selector: '.\\--cool', expected: '0,0,1,0' }, /* <p class="--cool"></p> */
- { selector: '#home .\\[page\\]', expected: '0,1,1,0' }, /* <p id="home"><p class="[page]"></p></p> */
-
- // Test repeated IDs
- // https://github.com/keeganstreet/specificity/issues/29
- { selector: 'ul#nav#nav-main li.active a', expected: '0,2,1,3' },
-
- // Test CSS Modules https://github.com/css-modules/css-modules
- // Whilst they are not part of the CSS spec, this calculator can support them without breaking results for standard selectors
- { selector: '.root :global .text', expected: '0,0,2,0' },
- { selector: '.localA :global .global-b :local(.local-c) .global-d', expected: '0,0,4,0' },
- { selector: '.localA :global .global-b .global-c :local(.localD.localE) .global-d', expected: '0,0,6,0' },
- { selector: '.localA :global(.global-b) .local-b', expected: '0,0,3,0' },
- { selector: ':local(:nth-child(2n) .test)', expected: '0,0,2,0' },
-
- ].forEach(testCase => {
- it(`calculate("${testCase.selector}")`, () => {
- const result = calculate(testCase.selector);
- assert.equal(result[0].specificity, testCase.expected);
- });
- });
-});
-
-describe('compare', () => {
- [
- { a: 'div', b: 'span', expected: 0 },
- { a: '.active', b: ':focus', expected: 0 },
- { a: '#header', b: '#main', expected: 0 },
- { a: 'div', b: '.active', expected: -1 },
- { a: 'div', b: '#header', expected: -1 },
- { a: '.active', b: '#header', expected: -1 },
- { a: '.active', b: 'div', expected: 1 },
- { a: '#main', b: 'div', expected: 1 },
- { a: '#main', b: ':focus', expected: 1 },
- { a: 'div p', b: 'span a', expected: 0 },
- { a: '#main p .active', b: '#main span :focus', expected: 0 },
- { a: [0, 1, 1, 1], b: '#main span :focus', expected: 0 },
- { a: '#main p .active', b: [0, 1, 1, 1], expected: 0 },
- { a: ':focus', b: 'span a', expected: 1 },
- { a: '#main', b: 'span a:hover', expected: 1 },
- { a: 'ul > li > a > span:before', b: '.active', expected: -1 },
- { a: 'a.active:hover', b: '#main', expected: -1 },
- ].forEach(testCase => {
- it(`compare("${testCase.a}", "${testCase.b}")`, () => {
- const result = compare(testCase.a, testCase.b);
- assert.equal(result, testCase.expected);
- });
- });
-});
-
-describe('sorting with compare', () => {
- const a = 'div';
- const b = 'p a';
- const c = '.active';
- const d = 'p.active';
- const e = '.active:focus';
- const f = '#main';
- const original = [c, f, a, e, b, d];
- const sorted = [a, b, c, d, e, f];
- const result = original.sort(compare);
-
- it('Array.sort(compare) should sort the array by specificity', () => {
- assert.equal(result.join('|'), sorted.join('|'));
- });
-});
diff --git a/assets/node_modules/state-toggle/index.js b/assets/node_modules/state-toggle/index.js
deleted file mode 100644
index aceee00..0000000
--- a/assets/node_modules/state-toggle/index.js
+++ /dev/null
@@ -1,23 +0,0 @@
-'use strict'
-
-module.exports = factory
-
-// Construct a state `toggler`: a function which inverses `property` in context
-// based on its current value.
-// The by `toggler` returned function restores that value.
-function factory(key, state, ctx) {
- return enter
-
- function enter() {
- var context = ctx || this
- var current = context[key]
-
- context[key] = !state
-
- return exit
-
- function exit() {
- context[key] = current
- }
- }
-}
diff --git a/assets/node_modules/state-toggle/license b/assets/node_modules/state-toggle/license
deleted file mode 100644
index 8d8660d..0000000
--- a/assets/node_modules/state-toggle/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/state-toggle/package.json b/assets/node_modules/state-toggle/package.json
deleted file mode 100644
index 1111db0..0000000
--- a/assets/node_modules/state-toggle/package.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "name": "state-toggle",
- "version": "1.0.3",
- "description": "Enter/exit a state",
- "license": "MIT",
- "keywords": [
- "enter",
- "exit",
- "state"
- ],
- "repository": "wooorm/state-toggle",
- "bugs": "https://github.com/wooorm/state-toggle/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 stateToggle -o state-toggle.js",
- "build-mangle": "browserify . -s stateToggle -p tinyify -o state-toggle.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": [
- "state-toggle.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
- }
-}
diff --git a/assets/node_modules/state-toggle/readme.md b/assets/node_modules/state-toggle/readme.md
deleted file mode 100644
index 9fcca1e..0000000
--- a/assets/node_modules/state-toggle/readme.md
+++ /dev/null
@@ -1,95 +0,0 @@
-# state-toggle
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-Enter/exit a state.
-
-## Install
-
-[npm][]:
-
-```sh
-npm install state-toggle
-```
-
-## Use
-
-```js
-var toggle = require('state-toggle')
-
-var ctx = {on: false}
-var enter = toggle('on', ctx.on, ctx)
-var exit
-
-// Entering:
-exit = enter()
-console.log(ctx.on) // => true
-
-// Exiting:
-exit()
-console.log(ctx.on) // => false
-```
-
-## API
-
-### `toggle(key, initial[, ctx])`
-
-Create a toggle, which when entering toggles `key` on `ctx` (or `this`, if `ctx`
-is not given) to `!initial`, and when exiting, sets `key` on the context back to
-the value it had before entering.
-
-###### Returns
-
-`Function` — [`enter`][enter].
-
-### `enter()`
-
-Enter the state.
-
-###### Context
-
-If no `ctx` was given to `toggle`, the context object (`this`) of `enter()` is
-used to toggle.
-
-###### Returns
-
-`Function` — [`exit`][exit].
-
-### `exit()`
-
-Exit the state, reverting `key` to the value it had before entering.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/wooorm/state-toggle.svg
-
-[build]: https://travis-ci.org/wooorm/state-toggle
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/state-toggle.svg
-
-[coverage]: https://codecov.io/github/wooorm/state-toggle
-
-[downloads-badge]: https://img.shields.io/npm/dm/state-toggle.svg
-
-[downloads]: https://www.npmjs.com/package/state-toggle
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/state-toggle.svg
-
-[size]: https://bundlephobia.com/result?p=state-toggle
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
-
-[enter]: #enter
-
-[exit]: #exit
diff --git a/assets/node_modules/string-width/index.d.ts b/assets/node_modules/string-width/index.d.ts
deleted file mode 100644
index 12b5309..0000000
--- a/assets/node_modules/string-width/index.d.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-declare const stringWidth: {
- /**
- Get the visual width of a string - the number of columns required to display it.
-
- Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width.
-
- @example
- ```
- import stringWidth = require('string-width');
-
- stringWidth('a');
- //=> 1
-
- stringWidth('古');
- //=> 2
-
- stringWidth('\u001B[1m古\u001B[22m');
- //=> 2
- ```
- */
- (string: string): number;
-
- // TODO: remove this in the next major version, refactor the whole definition to:
- // declare function stringWidth(string: string): number;
- // export = stringWidth;
- default: typeof stringWidth;
-}
-
-export = stringWidth;
diff --git a/assets/node_modules/string-width/index.js b/assets/node_modules/string-width/index.js
deleted file mode 100644
index a348067..0000000
--- a/assets/node_modules/string-width/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict';
-const stripAnsi = require('strip-ansi');
-const isFullwidthCodePoint = require('is-fullwidth-code-point');
-const emojiRegex = require('emoji-regex');
-
-const stringWidth = string => {
- string = string.replace(emojiRegex(), ' ');
-
- if (typeof string !== 'string' || string.length === 0) {
- return 0;
- }
-
- string = stripAnsi(string);
-
- let width = 0;
-
- for (let i = 0; i < string.length; i++) {
- const code = string.codePointAt(i);
-
- // Ignore control characters
- if (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {
- continue;
- }
-
- // Ignore combining characters
- if (code >= 0x300 && code <= 0x36F) {
- continue;
- }
-
- // Surrogates
- if (code > 0xFFFF) {
- i++;
- }
-
- width += isFullwidthCodePoint(code) ? 2 : 1;
- }
-
- return width;
-};
-
-module.exports = stringWidth;
-// TODO: remove this in the next major version
-module.exports.default = stringWidth;
diff --git a/assets/node_modules/string-width/license b/assets/node_modules/string-width/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/string-width/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/string-width/node_modules/is-fullwidth-code-point/index.d.ts b/assets/node_modules/string-width/node_modules/is-fullwidth-code-point/index.d.ts
deleted file mode 100644
index 729d202..0000000
--- a/assets/node_modules/string-width/node_modules/is-fullwidth-code-point/index.d.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
-Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms).
-
-@param codePoint - The [code point](https://en.wikipedia.org/wiki/Code_point) of a character.
-
-@example
-```
-import isFullwidthCodePoint from 'is-fullwidth-code-point';
-
-isFullwidthCodePoint('谢'.codePointAt(0));
-//=> true
-
-isFullwidthCodePoint('a'.codePointAt(0));
-//=> false
-```
-*/
-export default function isFullwidthCodePoint(codePoint: number): boolean;
diff --git a/assets/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js b/assets/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js
deleted file mode 100644
index 671f97f..0000000
--- a/assets/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/* eslint-disable yoda */
-'use strict';
-
-const isFullwidthCodePoint = codePoint => {
- if (Number.isNaN(codePoint)) {
- return false;
- }
-
- // Code points are derived from:
- // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
- if (
- codePoint >= 0x1100 && (
- codePoint <= 0x115F || // Hangul Jamo
- codePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET
- codePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET
- // CJK Radicals Supplement .. Enclosed CJK Letters and Months
- (0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||
- // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
- (0x3250 <= codePoint && codePoint <= 0x4DBF) ||
- // CJK Unified Ideographs .. Yi Radicals
- (0x4E00 <= codePoint && codePoint <= 0xA4C6) ||
- // Hangul Jamo Extended-A
- (0xA960 <= codePoint && codePoint <= 0xA97C) ||
- // Hangul Syllables
- (0xAC00 <= codePoint && codePoint <= 0xD7A3) ||
- // CJK Compatibility Ideographs
- (0xF900 <= codePoint && codePoint <= 0xFAFF) ||
- // Vertical Forms
- (0xFE10 <= codePoint && codePoint <= 0xFE19) ||
- // CJK Compatibility Forms .. Small Form Variants
- (0xFE30 <= codePoint && codePoint <= 0xFE6B) ||
- // Halfwidth and Fullwidth Forms
- (0xFF01 <= codePoint && codePoint <= 0xFF60) ||
- (0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||
- // Kana Supplement
- (0x1B000 <= codePoint && codePoint <= 0x1B001) ||
- // Enclosed Ideographic Supplement
- (0x1F200 <= codePoint && codePoint <= 0x1F251) ||
- // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
- (0x20000 <= codePoint && codePoint <= 0x3FFFD)
- )
- ) {
- return true;
- }
-
- return false;
-};
-
-module.exports = isFullwidthCodePoint;
-module.exports.default = isFullwidthCodePoint;
diff --git a/assets/node_modules/string-width/node_modules/is-fullwidth-code-point/license b/assets/node_modules/string-width/node_modules/is-fullwidth-code-point/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/string-width/node_modules/is-fullwidth-code-point/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json b/assets/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json
deleted file mode 100644
index 2137e88..0000000
--- a/assets/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "is-fullwidth-code-point",
- "version": "3.0.0",
- "description": "Check if the character represented by a given Unicode code point is fullwidth",
- "license": "MIT",
- "repository": "sindresorhus/is-fullwidth-code-point",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd-check"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "fullwidth",
- "full-width",
- "full",
- "width",
- "unicode",
- "character",
- "string",
- "codepoint",
- "code",
- "point",
- "is",
- "detect",
- "check"
- ],
- "devDependencies": {
- "ava": "^1.3.1",
- "tsd-check": "^0.5.0",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md b/assets/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md
deleted file mode 100644
index 4236bba..0000000
--- a/assets/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# is-fullwidth-code-point [![Build Status](https://travis-ci.org/sindresorhus/is-fullwidth-code-point.svg?branch=master)](https://travis-ci.org/sindresorhus/is-fullwidth-code-point)
-
-> Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)
-
-
-## Install
-
-```
-$ npm install is-fullwidth-code-point
-```
-
-
-## Usage
-
-```js
-const isFullwidthCodePoint = require('is-fullwidth-code-point');
-
-isFullwidthCodePoint('谢'.codePointAt(0));
-//=> true
-
-isFullwidthCodePoint('a'.codePointAt(0));
-//=> false
-```
-
-
-## API
-
-### isFullwidthCodePoint(codePoint)
-
-#### codePoint
-
-Type: `number`
-
-The [code point](https://en.wikipedia.org/wiki/Code_point) of a character.
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/string-width/package.json b/assets/node_modules/string-width/package.json
deleted file mode 100644
index 5751de5..0000000
--- a/assets/node_modules/string-width/package.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "name": "string-width",
- "version": "4.2.0",
- "description": "Get the visual width of a string - the number of columns required to display it",
- "license": "MIT",
- "repository": "sindresorhus/string-width",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "string",
- "character",
- "unicode",
- "width",
- "visual",
- "column",
- "columns",
- "fullwidth",
- "full-width",
- "full",
- "ansi",
- "escape",
- "codes",
- "cli",
- "command-line",
- "terminal",
- "console",
- "cjk",
- "chinese",
- "japanese",
- "korean",
- "fixed-width"
- ],
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.1",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/string-width/readme.md b/assets/node_modules/string-width/readme.md
deleted file mode 100644
index 705f206..0000000
--- a/assets/node_modules/string-width/readme.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# string-width [![Build Status](https://travis-ci.org/sindresorhus/string-width.svg?branch=master)](https://travis-ci.org/sindresorhus/string-width)
-
-> Get the visual width of a string - the number of columns required to display it
-
-Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width.
-
-Useful to be able to measure the actual width of command-line output.
-
-
-## Install
-
-```
-$ npm install string-width
-```
-
-
-## Usage
-
-```js
-const stringWidth = require('string-width');
-
-stringWidth('a');
-//=> 1
-
-stringWidth('古');
-//=> 2
-
-stringWidth('\u001B[1m古\u001B[22m');
-//=> 2
-```
-
-
-## Related
-
-- [string-width-cli](https://github.com/sindresorhus/string-width-cli) - CLI for this module
-- [string-length](https://github.com/sindresorhus/string-length) - Get the real length of a string
-- [widest-line](https://github.com/sindresorhus/widest-line) - Get the visual width of the widest line in a string
-
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-string-width?utm_source=npm-string-width&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
diff --git a/assets/node_modules/string_decoder/LICENSE b/assets/node_modules/string_decoder/LICENSE
deleted file mode 100644
index 778edb2..0000000
--- a/assets/node_modules/string_decoder/LICENSE
+++ /dev/null
@@ -1,48 +0,0 @@
-Node.js is licensed for use as follows:
-
-"""
-Copyright Node.js contributors. 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.
-"""
-
-This license applies to parts of Node.js originating from the
-https://github.com/joyent/node repository:
-
-"""
-Copyright Joyent, Inc. and other Node contributors. 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/assets/node_modules/string_decoder/README.md b/assets/node_modules/string_decoder/README.md
deleted file mode 100644
index 5fd5831..0000000
--- a/assets/node_modules/string_decoder/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# string_decoder
-
-***Node-core v8.9.4 string_decoder for userland***
-
-
-[![NPM](https://nodei.co/npm/string_decoder.png?downloads=true&downloadRank=true)](https://nodei.co/npm/string_decoder/)
-[![NPM](https://nodei.co/npm-dl/string_decoder.png?&months=6&height=3)](https://nodei.co/npm/string_decoder/)
-
-
-```bash
-npm install --save string_decoder
-```
-
-***Node-core string_decoder for userland***
-
-This package is a mirror of the string_decoder implementation in Node-core.
-
-Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v8.9.4/docs/api/).
-
-As of version 1.0.0 **string_decoder** uses semantic versioning.
-
-## Previous versions
-
-Previous version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10.
-
-## Update
-
-The *build/* directory contains a build script that will scrape the source from the [nodejs/node](https://github.com/nodejs/node) repo given a specific Node version.
-
-## Streams Working Group
-
-`string_decoder` is maintained by the Streams Working Group, which
-oversees the development and maintenance of the Streams API within
-Node.js. The responsibilities of the Streams Working Group include:
-
-* Addressing stream issues on the Node.js issue tracker.
-* Authoring and editing stream documentation within the Node.js project.
-* Reviewing changes to stream subclasses within the Node.js project.
-* Redirecting changes to streams from the Node.js project to this
- project.
-* Assisting in the implementation of stream providers within Node.js.
-* Recommending versions of `readable-stream` to be included in Node.js.
-* Messaging about the future of streams to give the community advance
- notice of changes.
-
-See [readable-stream](https://github.com/nodejs/readable-stream) for
-more details.
diff --git a/assets/node_modules/string_decoder/lib/string_decoder.js b/assets/node_modules/string_decoder/lib/string_decoder.js
deleted file mode 100644
index 2e89e63..0000000
--- a/assets/node_modules/string_decoder/lib/string_decoder.js
+++ /dev/null
@@ -1,296 +0,0 @@
-// Copyright Joyent, Inc. and other Node 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.
-
-'use strict';
-
-/*<replacement>*/
-
-var Buffer = require('safe-buffer').Buffer;
-/*</replacement>*/
-
-var isEncoding = Buffer.isEncoding || function (encoding) {
- encoding = '' + encoding;
- switch (encoding && encoding.toLowerCase()) {
- case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
- return true;
- default:
- return false;
- }
-};
-
-function _normalizeEncoding(enc) {
- if (!enc) return 'utf8';
- var retried;
- while (true) {
- switch (enc) {
- case 'utf8':
- case 'utf-8':
- return 'utf8';
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return 'utf16le';
- case 'latin1':
- case 'binary':
- return 'latin1';
- case 'base64':
- case 'ascii':
- case 'hex':
- return enc;
- default:
- if (retried) return; // undefined
- enc = ('' + enc).toLowerCase();
- retried = true;
- }
- }
-};
-
-// Do not cache `Buffer.isEncoding` when checking encoding names as some
-// modules monkey-patch it to support additional encodings
-function normalizeEncoding(enc) {
- var nenc = _normalizeEncoding(enc);
- if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
- return nenc || enc;
-}
-
-// StringDecoder provides an interface for efficiently splitting a series of
-// buffers into a series of JS strings without breaking apart multi-byte
-// characters.
-exports.StringDecoder = StringDecoder;
-function StringDecoder(encoding) {
- this.encoding = normalizeEncoding(encoding);
- var nb;
- switch (this.encoding) {
- case 'utf16le':
- this.text = utf16Text;
- this.end = utf16End;
- nb = 4;
- break;
- case 'utf8':
- this.fillLast = utf8FillLast;
- nb = 4;
- break;
- case 'base64':
- this.text = base64Text;
- this.end = base64End;
- nb = 3;
- break;
- default:
- this.write = simpleWrite;
- this.end = simpleEnd;
- return;
- }
- this.lastNeed = 0;
- this.lastTotal = 0;
- this.lastChar = Buffer.allocUnsafe(nb);
-}
-
-StringDecoder.prototype.write = function (buf) {
- if (buf.length === 0) return '';
- var r;
- var i;
- if (this.lastNeed) {
- r = this.fillLast(buf);
- if (r === undefined) return '';
- i = this.lastNeed;
- this.lastNeed = 0;
- } else {
- i = 0;
- }
- if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
- return r || '';
-};
-
-StringDecoder.prototype.end = utf8End;
-
-// Returns only complete characters in a Buffer
-StringDecoder.prototype.text = utf8Text;
-
-// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
-StringDecoder.prototype.fillLast = function (buf) {
- if (this.lastNeed <= buf.length) {
- buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
- return this.lastChar.toString(this.encoding, 0, this.lastTotal);
- }
- buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
- this.lastNeed -= buf.length;
-};
-
-// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
-// continuation byte. If an invalid byte is detected, -2 is returned.
-function utf8CheckByte(byte) {
- if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
- return byte >> 6 === 0x02 ? -1 : -2;
-}
-
-// Checks at most 3 bytes at the end of a Buffer in order to detect an
-// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
-// needed to complete the UTF-8 character (if applicable) are returned.
-function utf8CheckIncomplete(self, buf, i) {
- var j = buf.length - 1;
- if (j < i) return 0;
- var nb = utf8CheckByte(buf[j]);
- if (nb >= 0) {
- if (nb > 0) self.lastNeed = nb - 1;
- return nb;
- }
- if (--j < i || nb === -2) return 0;
- nb = utf8CheckByte(buf[j]);
- if (nb >= 0) {
- if (nb > 0) self.lastNeed = nb - 2;
- return nb;
- }
- if (--j < i || nb === -2) return 0;
- nb = utf8CheckByte(buf[j]);
- if (nb >= 0) {
- if (nb > 0) {
- if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
- }
- return nb;
- }
- return 0;
-}
-
-// Validates as many continuation bytes for a multi-byte UTF-8 character as
-// needed or are available. If we see a non-continuation byte where we expect
-// one, we "replace" the validated continuation bytes we've seen so far with
-// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding
-// behavior. The continuation byte check is included three times in the case
-// where all of the continuation bytes for a character exist in the same buffer.
-// It is also done this way as a slight performance increase instead of using a
-// loop.
-function utf8CheckExtraBytes(self, buf, p) {
- if ((buf[0] & 0xC0) !== 0x80) {
- self.lastNeed = 0;
- return '\ufffd';
- }
- if (self.lastNeed > 1 && buf.length > 1) {
- if ((buf[1] & 0xC0) !== 0x80) {
- self.lastNeed = 1;
- return '\ufffd';
- }
- if (self.lastNeed > 2 && buf.length > 2) {
- if ((buf[2] & 0xC0) !== 0x80) {
- self.lastNeed = 2;
- return '\ufffd';
- }
- }
- }
-}
-
-// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
-function utf8FillLast(buf) {
- var p = this.lastTotal - this.lastNeed;
- var r = utf8CheckExtraBytes(this, buf, p);
- if (r !== undefined) return r;
- if (this.lastNeed <= buf.length) {
- buf.copy(this.lastChar, p, 0, this.lastNeed);
- return this.lastChar.toString(this.encoding, 0, this.lastTotal);
- }
- buf.copy(this.lastChar, p, 0, buf.length);
- this.lastNeed -= buf.length;
-}
-
-// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
-// partial character, the character's bytes are buffered until the required
-// number of bytes are available.
-function utf8Text(buf, i) {
- var total = utf8CheckIncomplete(this, buf, i);
- if (!this.lastNeed) return buf.toString('utf8', i);
- this.lastTotal = total;
- var end = buf.length - (total - this.lastNeed);
- buf.copy(this.lastChar, 0, end);
- return buf.toString('utf8', i, end);
-}
-
-// For UTF-8, a replacement character is added when ending on a partial
-// character.
-function utf8End(buf) {
- var r = buf && buf.length ? this.write(buf) : '';
- if (this.lastNeed) return r + '\ufffd';
- return r;
-}
-
-// UTF-16LE typically needs two bytes per character, but even if we have an even
-// number of bytes available, we need to check if we end on a leading/high
-// surrogate. In that case, we need to wait for the next two bytes in order to
-// decode the last character properly.
-function utf16Text(buf, i) {
- if ((buf.length - i) % 2 === 0) {
- var r = buf.toString('utf16le', i);
- if (r) {
- var c = r.charCodeAt(r.length - 1);
- if (c >= 0xD800 && c <= 0xDBFF) {
- this.lastNeed = 2;
- this.lastTotal = 4;
- this.lastChar[0] = buf[buf.length - 2];
- this.lastChar[1] = buf[buf.length - 1];
- return r.slice(0, -1);
- }
- }
- return r;
- }
- this.lastNeed = 1;
- this.lastTotal = 2;
- this.lastChar[0] = buf[buf.length - 1];
- return buf.toString('utf16le', i, buf.length - 1);
-}
-
-// For UTF-16LE we do not explicitly append special replacement characters if we
-// end on a partial character, we simply let v8 handle that.
-function utf16End(buf) {
- var r = buf && buf.length ? this.write(buf) : '';
- if (this.lastNeed) {
- var end = this.lastTotal - this.lastNeed;
- return r + this.lastChar.toString('utf16le', 0, end);
- }
- return r;
-}
-
-function base64Text(buf, i) {
- var n = (buf.length - i) % 3;
- if (n === 0) return buf.toString('base64', i);
- this.lastNeed = 3 - n;
- this.lastTotal = 3;
- if (n === 1) {
- this.lastChar[0] = buf[buf.length - 1];
- } else {
- this.lastChar[0] = buf[buf.length - 2];
- this.lastChar[1] = buf[buf.length - 1];
- }
- return buf.toString('base64', i, buf.length - n);
-}
-
-function base64End(buf) {
- var r = buf && buf.length ? this.write(buf) : '';
- if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
- return r;
-}
-
-// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
-function simpleWrite(buf) {
- return buf.toString(this.encoding);
-}
-
-function simpleEnd(buf) {
- return buf && buf.length ? this.write(buf) : '';
-} \ No newline at end of file
diff --git a/assets/node_modules/string_decoder/node_modules/safe-buffer/LICENSE b/assets/node_modules/string_decoder/node_modules/safe-buffer/LICENSE
deleted file mode 100644
index 0c068ce..0000000
--- a/assets/node_modules/string_decoder/node_modules/safe-buffer/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/string_decoder/node_modules/safe-buffer/README.md b/assets/node_modules/string_decoder/node_modules/safe-buffer/README.md
deleted file mode 100644
index 356e351..0000000
--- a/assets/node_modules/string_decoder/node_modules/safe-buffer/README.md
+++ /dev/null
@@ -1,586 +0,0 @@
-# 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
-```
-
-[Get supported safe-buffer with the Tidelift Subscription](https://tidelift.com/subscription/pkg/npm-safe-buffer?utm_source=npm-safe-buffer&utm_medium=referral&utm_campaign=readme)
-
-## 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/assets/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts b/assets/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts
deleted file mode 100644
index e9fed80..0000000
--- a/assets/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts
+++ /dev/null
@@ -1,187 +0,0 @@
-declare module "safe-buffer" {
- export class Buffer {
- length: number
- write(string: string, offset?: number, length?: number, encoding?: string): number;
- toString(encoding?: string, start?: number, end?: number): string;
- toJSON(): { type: 'Buffer', data: any[] };
- equals(otherBuffer: Buffer): boolean;
- compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;
- copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;
- slice(start?: number, end?: number): Buffer;
- writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number;
- readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number;
- readIntLE(offset: number, byteLength: number, noAssert?: boolean): number;
- readIntBE(offset: number, byteLength: number, noAssert?: boolean): number;
- readUInt8(offset: number, noAssert?: boolean): number;
- readUInt16LE(offset: number, noAssert?: boolean): number;
- readUInt16BE(offset: number, noAssert?: boolean): number;
- readUInt32LE(offset: number, noAssert?: boolean): number;
- readUInt32BE(offset: number, noAssert?: boolean): number;
- readInt8(offset: number, noAssert?: boolean): number;
- readInt16LE(offset: number, noAssert?: boolean): number;
- readInt16BE(offset: number, noAssert?: boolean): number;
- readInt32LE(offset: number, noAssert?: boolean): number;
- readInt32BE(offset: number, noAssert?: boolean): number;
- readFloatLE(offset: number, noAssert?: boolean): number;
- readFloatBE(offset: number, noAssert?: boolean): number;
- readDoubleLE(offset: number, noAssert?: boolean): number;
- readDoubleBE(offset: number, noAssert?: boolean): number;
- swap16(): Buffer;
- swap32(): Buffer;
- swap64(): Buffer;
- writeUInt8(value: number, offset: number, noAssert?: boolean): number;
- writeUInt16LE(value: number, offset: number, noAssert?: boolean): number;
- writeUInt16BE(value: number, offset: number, noAssert?: boolean): number;
- writeUInt32LE(value: number, offset: number, noAssert?: boolean): number;
- writeUInt32BE(value: number, offset: number, noAssert?: boolean): number;
- writeInt8(value: number, offset: number, noAssert?: boolean): number;
- writeInt16LE(value: number, offset: number, noAssert?: boolean): number;
- writeInt16BE(value: number, offset: number, noAssert?: boolean): number;
- writeInt32LE(value: number, offset: number, noAssert?: boolean): number;
- writeInt32BE(value: number, offset: number, noAssert?: boolean): number;
- writeFloatLE(value: number, offset: number, noAssert?: boolean): number;
- writeFloatBE(value: number, offset: number, noAssert?: boolean): number;
- writeDoubleLE(value: number, offset: number, noAssert?: boolean): number;
- writeDoubleBE(value: number, offset: number, noAssert?: boolean): number;
- fill(value: any, offset?: number, end?: number): this;
- indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;
- lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;
- includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean;
-
- /**
- * Allocates a new buffer containing the given {str}.
- *
- * @param str String to store in buffer.
- * @param encoding encoding to use, optional. Default is 'utf8'
- */
- constructor (str: string, encoding?: string);
- /**
- * Allocates a new buffer of {size} octets.
- *
- * @param size count of octets to allocate.
- */
- constructor (size: number);
- /**
- * Allocates a new buffer containing the given {array} of octets.
- *
- * @param array The octets to store.
- */
- constructor (array: Uint8Array);
- /**
- * Produces a Buffer backed by the same allocated memory as
- * the given {ArrayBuffer}.
- *
- *
- * @param arrayBuffer The ArrayBuffer with which to share memory.
- */
- constructor (arrayBuffer: ArrayBuffer);
- /**
- * Allocates a new buffer containing the given {array} of octets.
- *
- * @param array The octets to store.
- */
- constructor (array: any[]);
- /**
- * Copies the passed {buffer} data onto a new {Buffer} instance.
- *
- * @param buffer The buffer to copy.
- */
- constructor (buffer: Buffer);
- prototype: Buffer;
- /**
- * Allocates a new Buffer using an {array} of octets.
- *
- * @param array
- */
- static from(array: any[]): Buffer;
- /**
- * 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.
- * The optional {byteOffset} and {length} arguments specify a memory range
- * within the {arrayBuffer} that will be shared by the Buffer.
- *
- * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer()
- * @param byteOffset
- * @param length
- */
- static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer;
- /**
- * Copies the passed {buffer} data onto a new Buffer instance.
- *
- * @param buffer
- */
- static from(buffer: Buffer): Buffer;
- /**
- * 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'.
- *
- * @param str
- */
- static from(str: string, encoding?: string): Buffer;
- /**
- * Returns true if {obj} is a Buffer
- *
- * @param obj object to test.
- */
- static isBuffer(obj: any): obj is Buffer;
- /**
- * Returns true if {encoding} is a valid encoding argument.
- * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'
- *
- * @param encoding string to test.
- */
- static isEncoding(encoding: string): boolean;
- /**
- * Gives the actual byte length of a string. encoding defaults to 'utf8'.
- * This is not the same as String.prototype.length since that returns the number of characters in a string.
- *
- * @param string string to test.
- * @param encoding encoding used to evaluate (defaults to 'utf8')
- */
- static byteLength(string: string, encoding?: string): number;
- /**
- * Returns a buffer which is the result of concatenating all the buffers in the list together.
- *
- * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer.
- * If the list has exactly one item, then the first item of the list is returned.
- * If the list has more than one item, then a new Buffer is created.
- *
- * @param list An array of Buffer objects to concatenate
- * @param totalLength Total length of the buffers when concatenated.
- * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly.
- */
- static concat(list: Buffer[], totalLength?: number): Buffer;
- /**
- * The same as buf1.compare(buf2).
- */
- static compare(buf1: Buffer, buf2: Buffer): number;
- /**
- * Allocates a new buffer of {size} octets.
- *
- * @param size count of octets to allocate.
- * @param fill if specified, buffer will be initialized by calling buf.fill(fill).
- * If parameter is omitted, buffer will be filled with zeros.
- * @param encoding encoding used for call to buf.fill while initalizing
- */
- static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer;
- /**
- * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents
- * of the newly created Buffer are unknown and may contain sensitive data.
- *
- * @param size count of octets to allocate
- */
- static allocUnsafe(size: number): Buffer;
- /**
- * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents
- * of the newly created Buffer are unknown and may contain sensitive data.
- *
- * @param size count of octets to allocate
- */
- static allocUnsafeSlow(size: number): Buffer;
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/string_decoder/node_modules/safe-buffer/index.js b/assets/node_modules/string_decoder/node_modules/safe-buffer/index.js
deleted file mode 100644
index 054c8d3..0000000
--- a/assets/node_modules/string_decoder/node_modules/safe-buffer/index.js
+++ /dev/null
@@ -1,64 +0,0 @@
-/* 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)
-}
-
-SafeBuffer.prototype = Object.create(Buffer.prototype)
-
-// 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/assets/node_modules/string_decoder/node_modules/safe-buffer/package.json b/assets/node_modules/string_decoder/node_modules/safe-buffer/package.json
deleted file mode 100644
index d532daf..0000000
--- a/assets/node_modules/string_decoder/node_modules/safe-buffer/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "safe-buffer",
- "description": "Safer Node.js Buffer API",
- "version": "5.2.0",
- "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/assets/node_modules/string_decoder/package.json b/assets/node_modules/string_decoder/package.json
deleted file mode 100644
index b2bb141..0000000
--- a/assets/node_modules/string_decoder/package.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "name": "string_decoder",
- "version": "1.3.0",
- "description": "The string_decoder module from Node core",
- "main": "lib/string_decoder.js",
- "files": [
- "lib"
- ],
- "dependencies": {
- "safe-buffer": "~5.2.0"
- },
- "devDependencies": {
- "babel-polyfill": "^6.23.0",
- "core-util-is": "^1.0.2",
- "inherits": "^2.0.3",
- "tap": "~0.4.8"
- },
- "scripts": {
- "test": "tap test/parallel/*.js && node test/verify-dependencies",
- "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/nodejs/string_decoder.git"
- },
- "homepage": "https://github.com/nodejs/string_decoder",
- "keywords": [
- "string",
- "decoder",
- "browser",
- "browserify"
- ],
- "license": "MIT"
-}
diff --git a/assets/node_modules/stringify-entities/LICENSE b/assets/node_modules/stringify-entities/LICENSE
deleted file mode 100644
index 611b675..0000000
--- a/assets/node_modules/stringify-entities/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/stringify-entities/dangerous.json b/assets/node_modules/stringify-entities/dangerous.json
deleted file mode 100644
index 9147982..0000000
--- a/assets/node_modules/stringify-entities/dangerous.json
+++ /dev/null
@@ -1,10 +0,0 @@
-[
- "cent",
- "copy",
- "divide",
- "gt",
- "lt",
- "not",
- "para",
- "times"
-]
diff --git a/assets/node_modules/stringify-entities/index.js b/assets/node_modules/stringify-entities/index.js
deleted file mode 100644
index 2f55802..0000000
--- a/assets/node_modules/stringify-entities/index.js
+++ /dev/null
@@ -1,134 +0,0 @@
-'use strict'
-
-var entities = require('character-entities-html4')
-var legacy = require('character-entities-legacy')
-var hexadecimal = require('is-hexadecimal')
-var alphanumerical = require('is-alphanumerical')
-var dangerous = require('./dangerous.json')
-
-/* Expose. */
-module.exports = encode
-encode.escape = escape
-
-var own = {}.hasOwnProperty
-
-/* List of enforced escapes. */
-var escapes = ['"', "'", '<', '>', '&', '`']
-
-/* Map of characters to names. */
-var characters = construct()
-
-/* Default escapes. */
-var defaultEscapes = toExpression(escapes)
-
-/* Surrogate pairs. */
-var surrogatePair = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g
-
-/* Non-ASCII characters. */
-// eslint-disable-next-line no-control-regex, unicorn/no-hex-escape
-var bmp = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g
-
-/* Encode special characters in `value`. */
-function encode(value, options) {
- var settings = options || {}
- var subset = settings.subset
- var set = subset ? toExpression(subset) : defaultEscapes
- var escapeOnly = settings.escapeOnly
- var omit = settings.omitOptionalSemicolons
-
- value = value.replace(set, function(char, pos, val) {
- return one(char, val.charAt(pos + 1), settings)
- })
-
- if (subset || escapeOnly) {
- return value
- }
-
- return value
- .replace(surrogatePair, replaceSurrogatePair)
- .replace(bmp, replaceBmp)
-
- function replaceSurrogatePair(pair, pos, val) {
- return toHexReference(
- (pair.charCodeAt(0) - 0xd800) * 0x400 +
- pair.charCodeAt(1) -
- 0xdc00 +
- 0x10000,
- val.charAt(pos + 2),
- omit
- )
- }
-
- function replaceBmp(char, pos, val) {
- return one(char, val.charAt(pos + 1), settings)
- }
-}
-
-/* Shortcut to escape special characters in HTML. */
-function escape(value) {
- return encode(value, {
- escapeOnly: true,
- useNamedReferences: true
- })
-}
-
-/* Encode `char` according to `options`. */
-function one(char, next, options) {
- var shortest = options.useShortestReferences
- var omit = options.omitOptionalSemicolons
- var named
- var numeric
-
- if ((shortest || options.useNamedReferences) && own.call(characters, char)) {
- named = toNamed(characters[char], next, omit, options.attribute)
- }
-
- if (shortest || !named) {
- numeric = toHexReference(char.charCodeAt(0), next, omit)
- }
-
- if (named && (!shortest || named.length < numeric.length)) {
- return named
- }
-
- return numeric
-}
-
-/* Transform `code` into an entity. */
-function toNamed(name, next, omit, attribute) {
- var value = '&' + name
-
- if (
- omit &&
- own.call(legacy, name) &&
- dangerous.indexOf(name) === -1 &&
- (!attribute || (next && next !== '=' && !alphanumerical(next)))
- ) {
- return value
- }
-
- return value + ';'
-}
-
-/* Transform `code` into a hexadecimal character reference. */
-function toHexReference(code, next, omit) {
- var value = '&#x' + code.toString(16).toUpperCase()
- return omit && next && !hexadecimal(next) ? value : value + ';'
-}
-
-/* Create an expression for `characters`. */
-function toExpression(characters) {
- return new RegExp('[' + characters.join('') + ']', 'g')
-}
-
-/* Construct the map. */
-function construct() {
- var chars = {}
- var name
-
- for (name in entities) {
- chars[entities[name]] = name
- }
-
- return chars
-}
diff --git a/assets/node_modules/stringify-entities/package.json b/assets/node_modules/stringify-entities/package.json
deleted file mode 100644
index 36aa0d9..0000000
--- a/assets/node_modules/stringify-entities/package.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "stringify-entities",
- "version": "1.3.2",
- "description": "Encode HTML character references and character entities",
- "license": "MIT",
- "keywords": [
- "stringify",
- "encode",
- "escape",
- "html",
- "character",
- "reference",
- "entity",
- "entities"
- ],
- "repository": "wooorm/stringify-entities",
- "bugs": "https://github.com/wooorm/stringify-entities/issues",
- "author": "Titus Wormer <tituswormer@gmail.com> (http://wooorm.com)",
- "contributors": [
- "Titus Wormer <tituswormer@gmail.com> (http://wooorm.com)"
- ],
- "files": [
- "dangerous.json",
- "index.js"
- ],
- "dependencies": {
- "character-entities-html4": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-hexadecimal": "^1.0.0"
- },
- "devDependencies": {
- "browserify": "^16.0.0",
- "character-entities": "^1.0.0",
- "esmangle": "^1.0.0",
- "nyc": "^11.0.0",
- "remark-cli": "^5.0.0",
- "remark-preset-wooorm": "^4.0.0",
- "tape": "^4.0.0",
- "xo": "^0.20.0"
- },
- "scripts": {
- "generate": "node build",
- "format": "remark . -qfo && prettier --write '**/*.js' && xo --fix",
- "build-bundle": "browserify index.js --bare -s stringifyEntities > stringify-entities.js",
- "build-mangle": "esmangle stringify-entities.js > stringify-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": "npm run generate && npm run format && npm run build && npm run test-coverage"
- },
- "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-var": "off",
- "unicorn/number-literal-case": "off",
- "prefer-arrow-callback": "off",
- "guard-for-in": "off"
- },
- "ignores": [
- "stringify-entities.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/stringify-entities/readme.md b/assets/node_modules/stringify-entities/readme.md
deleted file mode 100644
index 08f6436..0000000
--- a/assets/node_modules/stringify-entities/readme.md
+++ /dev/null
@@ -1,131 +0,0 @@
-# stringify-entities [![Build Status][build-badge]][build-status] [![Coverage Status][coverage-badge]][coverage-status]
-
-Encode HTML character references and character entities.
-
-* [x] Very fast
-* [x] Just the encoding part
-* [x] Reliable: ``'`'`` characters are escaped to ensure no scripts
- run in IE6-8. Additionally, only named entities recognised by HTML4
- are encoded, meaning the infamous `&apos;` (which people think is a
- [virus][]) won’t show up
-
-## Algorithm
-
-By default, all dangerous, non-ASCII, or non-printable ASCII characters
-are encoded. A [subset][] of characters can be given to encode just
-those characters. Alternatively, pass [`escapeOnly`][escapeonly] to
-escape just the dangerous characters (`"`, `'`, `<`, `>`, `&`, `` ` ``).
-By default, numeric entities are used. Pass [`useNamedReferences`][named]
-to use named entities when possible, or [`useShortestReferences`][short]
-to use them if that results in less bytes.
-
-## Installation
-
-[npm][]:
-
-```bash
-npm install stringify-entities
-```
-
-## Usage
-
-```js
-var stringify = require('stringify-entities')
-
-stringify('alpha © bravo ≠ charlie 𝌆 delta')
-// => 'alpha &#xA9; bravo &#x2260; charlie &#x1D306; delta'
-
-stringify('alpha © bravo ≠ charlie 𝌆 delta', {useNamedReferences: true})
-// => 'alpha &copy; bravo &ne; charlie &#x1D306; delta'
-```
-
-## API
-
-### `stringifyEntities(value[, options])`
-
-Encode special characters in `value`.
-
-##### `options`
-
-###### `options.escapeOnly`
-
-Whether to only escape possibly dangerous characters (`boolean`,
-default: `false`). Those characters are `"`, `'`, `<`, `>` `&`, and
-`` ` ``.
-
-###### `options.subset`
-
-Whether to only escape the given subset of characters (`Array.<string>`).
-
-###### `options.useNamedReferences`
-
-Whether to use named entities where possible (`boolean?`, default:
-`false`).
-
-###### `options.useShortestReferences`
-
-Whether to use named entities, where possible, if that results in less
-bytes (`boolean?`, default: `false`). **Note**: `useNamedReferences`
-can be omitted when using `useShortestReferences`.
-
-###### `options.omitOptionalSemicolons`
-
-Whether to omit semi-colons when possible (`boolean?`, default: `false`).
-**Note**: This creates parse errors: don’t use this except when building
-a minifier.
-
-Omitting semi-colons is possible for [certain][dangerous] [legacy][]
-named references, and numeric entities, in some cases.
-
-###### `options.attribute`
-
-Only needed when operating dangerously with `omitOptionalSemicolons: true`.
-Create entities which don’t fail in attributes (`boolean?`, default:
-`false`).
-
-## Related
-
-* [`parse-entities`](https://github.com/wooorm/parse-entities)
- — Parse 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/stringify-entities.svg
-
-[build-status]: https://travis-ci.org/wooorm/stringify-entities
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/stringify-entities.svg
-
-[coverage-status]: https://codecov.io/github/wooorm/stringify-entities
-
-[license]: LICENSE
-
-[author]: http://wooorm.com
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[virus]: http://www.telegraph.co.uk/technology/advice/10516839/Why-do-some-apostrophes-get-replaced-with-andapos.html
-
-[dangerous]: dangerous.json
-
-[legacy]: https://github.com/wooorm/character-entities-legacy
-
-[subset]: #optionssubset
-
-[escapeonly]: #optionsescapeonly
-
-[named]: #optionsusenamedreferences
-
-[short]: #optionsuseshortestreferences
diff --git a/assets/node_modules/strip-ansi/index.d.ts b/assets/node_modules/strip-ansi/index.d.ts
deleted file mode 100644
index 907fccc..0000000
--- a/assets/node_modules/strip-ansi/index.d.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
-Strip [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) from a string.
-
-@example
-```
-import stripAnsi = require('strip-ansi');
-
-stripAnsi('\u001B[4mUnicorn\u001B[0m');
-//=> 'Unicorn'
-
-stripAnsi('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
-//=> 'Click'
-```
-*/
-declare function stripAnsi(string: string): string;
-
-export = stripAnsi;
diff --git a/assets/node_modules/strip-ansi/index.js b/assets/node_modules/strip-ansi/index.js
deleted file mode 100644
index 9a593df..0000000
--- a/assets/node_modules/strip-ansi/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-'use strict';
-const ansiRegex = require('ansi-regex');
-
-module.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;
diff --git a/assets/node_modules/strip-ansi/license b/assets/node_modules/strip-ansi/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/strip-ansi/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/strip-ansi/package.json b/assets/node_modules/strip-ansi/package.json
deleted file mode 100644
index 65a6c95..0000000
--- a/assets/node_modules/strip-ansi/package.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "name": "strip-ansi",
- "version": "6.0.0",
- "description": "Strip ANSI escape codes from a string",
- "license": "MIT",
- "repository": "chalk/strip-ansi",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "strip",
- "trim",
- "remove",
- "ansi",
- "styles",
- "color",
- "colour",
- "colors",
- "terminal",
- "console",
- "string",
- "tty",
- "escape",
- "formatting",
- "rgb",
- "256",
- "shell",
- "xterm",
- "log",
- "logging",
- "command-line",
- "text"
- ],
- "dependencies": {
- "ansi-regex": "^5.0.0"
- },
- "devDependencies": {
- "ava": "^2.4.0",
- "tsd": "^0.10.0",
- "xo": "^0.25.3"
- }
-}
diff --git a/assets/node_modules/strip-ansi/readme.md b/assets/node_modules/strip-ansi/readme.md
deleted file mode 100644
index 7c4b56d..0000000
--- a/assets/node_modules/strip-ansi/readme.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# strip-ansi [![Build Status](https://travis-ci.org/chalk/strip-ansi.svg?branch=master)](https://travis-ci.org/chalk/strip-ansi)
-
-> Strip [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) from a string
-
-
-## Install
-
-```
-$ npm install strip-ansi
-```
-
-
-## Usage
-
-```js
-const stripAnsi = require('strip-ansi');
-
-stripAnsi('\u001B[4mUnicorn\u001B[0m');
-//=> 'Unicorn'
-
-stripAnsi('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
-//=> 'Click'
-```
-
-
-## strip-ansi for enterprise
-
-Available as part of the Tidelift Subscription.
-
-The maintainers of strip-ansi and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-strip-ansi?utm_source=npm-strip-ansi&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
-
-
-## Related
-
-- [strip-ansi-cli](https://github.com/chalk/strip-ansi-cli) - CLI for this module
-- [strip-ansi-stream](https://github.com/chalk/strip-ansi-stream) - Streaming version of this module
-- [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
-- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right
-
-
-## Maintainers
-
-- [Sindre Sorhus](https://github.com/sindresorhus)
-- [Josh Junon](https://github.com/qix-)
-
diff --git a/assets/node_modules/strip-indent/index.d.ts b/assets/node_modules/strip-indent/index.d.ts
deleted file mode 100644
index 44f2304..0000000
--- a/assets/node_modules/strip-indent/index.d.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
-Strip leading whitespace from each line in a string.
-
-The line with the least number of leading whitespace, ignoring empty lines, determines the number to remove.
-
-@example
-```
-import stripIndent = require('strip-indent');
-
-const string = '\tunicorn\n\t\tcake';
-// unicorn
-// cake
-
-stripIndent(string);
-//unicorn
-// cake
-```
-*/
-declare function stripIndent(string: string): string;
-
-export = stripIndent;
diff --git a/assets/node_modules/strip-indent/index.js b/assets/node_modules/strip-indent/index.js
deleted file mode 100644
index 7ba3b15..0000000
--- a/assets/node_modules/strip-indent/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict';
-const minIndent = require('min-indent');
-
-module.exports = string => {
- const indent = minIndent(string);
-
- if (indent === 0) {
- return string;
- }
-
- const regex = new RegExp(`^[ \\t]{${indent}}`, 'gm');
-
- return string.replace(regex, '');
-};
diff --git a/assets/node_modules/strip-indent/license b/assets/node_modules/strip-indent/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/strip-indent/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/strip-indent/package.json b/assets/node_modules/strip-indent/package.json
deleted file mode 100644
index d66a003..0000000
--- a/assets/node_modules/strip-indent/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "strip-indent",
- "version": "3.0.0",
- "description": "Strip leading whitespace from each line in a string",
- "license": "MIT",
- "repository": "sindresorhus/strip-indent",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "strip",
- "indent",
- "indentation",
- "normalize",
- "remove",
- "delete",
- "whitespace",
- "space",
- "tab",
- "string"
- ],
- "dependencies": {
- "min-indent": "^1.0.0"
- },
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/strip-indent/readme.md b/assets/node_modules/strip-indent/readme.md
deleted file mode 100644
index f14f6ba..0000000
--- a/assets/node_modules/strip-indent/readme.md
+++ /dev/null
@@ -1,44 +0,0 @@
-# strip-indent [![Build Status](https://travis-ci.org/sindresorhus/strip-indent.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-indent)
-
-> Strip leading whitespace from each line in a string
-
-The line with the least number of leading whitespace, ignoring empty lines, determines the number to remove.
-
-Useful for removing redundant indentation.
-
-
-## Install
-
-```
-$ npm install strip-indent
-```
-
-
-## Usage
-
-```js
-const stripIndent = require('strip-indent');
-
-const string = '\tunicorn\n\t\tcake';
-/*
- unicorn
- cake
-*/
-
-stripIndent(string);
-/*
-unicorn
- cake
-*/
-```
-
-
-## Related
-
-- [strip-indent-cli](https://github.com/sindresorhus/strip-indent-cli) - CLI for this module
-- [indent-string](https://github.com/sindresorhus/indent-string) - Indent each line in a string
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/style-search/.npmignore b/assets/node_modules/style-search/.npmignore
deleted file mode 100644
index 3c3629e..0000000
--- a/assets/node_modules/style-search/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/assets/node_modules/style-search/CHANGELOG.md b/assets/node_modules/style-search/CHANGELOG.md
deleted file mode 100644
index 6c572f9..0000000
--- a/assets/node_modules/style-search/CHANGELOG.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Changelog
-
-## 0.1.0
-
-- Initial extraction from [stylelint](https://github.com/stylelint/stylelint), API refactoring, and release.
diff --git a/assets/node_modules/style-search/LICENSE b/assets/node_modules/style-search/LICENSE
deleted file mode 100644
index cec41a8..0000000
--- a/assets/node_modules/style-search/LICENSE
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright (c) 2016, David Clark
-
-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/assets/node_modules/style-search/README.md b/assets/node_modules/style-search/README.md
deleted file mode 100644
index 1d662db..0000000
--- a/assets/node_modules/style-search/README.md
+++ /dev/null
@@ -1,96 +0,0 @@
-# style-search [![CircleCI](https://circleci.com/gh/davidtheclark/style-search.svg?style=svg)](https://circleci.com/gh/davidtheclark/style-search)
-
-Search CSS (and CSS-like) strings, with sensitivity to whether matches occur inside strings, comments, and functions.
-
-## Usage
-
-```js
-var styleSearch = require('style-search');
-
-styleSearch(options, callback);
-```
-
-**By default, the search ignores strings, comments, and function names.** You can use the options to change this behavior or introduce other restrictions. That is what makes this module more useful for many searches than `indexOf()` or a `RegExp`.
-
-However, if you need more detailed parsing, you should consider using the real parsers [PostCSS](https://github.com/postcss/postcss), [`postcss-selector-parser`](https://github.com/postcss/postcss-selector-parser), and [`postcss-value-parser`](https://github.com/TrySound/postcss-value-parser).
-
-### Example
-
-```css
-/* Here is some pink */
-a { color: pink; }
-a::before { content: "pink" }
-b { color: shadesOfPink(7); }
-```
-
-```js
-styleSearch({
- source: theCssStringAbove,
- target: "pink",
-}, function(match, count) {
- /* Only the "pink" in `color: pink` will be
- reported as a match */
-});
-```
-
-### Reporting matches
-
-For every match found your `callback` is invoked. It is passed two arguments:
-
-- A `match` object with the following properties:
- - `startIndex`: where the match begins
- - `endIndex`: where the match ends
- - `target`: what got matched (useful if your `target` option is an array instead of a single string)
- - `insideFunctionArguments`: whether the match is inside a function — *this includes the parentheses around the arguments*
- - `insideComment`: whether the match is inside a comment
- - `insideString`: whether the match is inside a string
-- The count of how many matches have been found up to this point.
-
-### Options
-
-Below you'll see that syntax feature options all accept three keywords: `"skip"`, `"check"`, `"only"`. An error will be thrown if you use `"only"` more than once.
-
-#### source
-
-String. *Required.*
-
-The source string to search through.
-
-#### target
-
-String or array of strings. *Required.*
-
-The target of the search. Can be
-- a single character
-- a string with some length
-- an array of strings, all of which count as matches (the `match` object passed to the `callback` will differentiate which string in the array got matched via its `target` property)
-
-#### once
-
-Boolean. Default: `false`.
-
-If `true`, the search will stop after one match is found.
-
-#### comments
-
-`"skip"` | `"check"` | `"only"`. Default: `"skip"`.
-
-This includes both standard `/* CSS comments */` and non-standard but widely used `// single line comments`.
-
-#### strings
-
-`"skip"` | `"check"` | `"only"`. Default: `"skip"`.
-
-#### functionNames
-
-`"skip"` | `"check"` | `"only"`. Default: `"skip"`.
-
-#### functionArguments
-
-`"skip"` | `"check"` | `"only"`. Default: `"check"`.
-
-#### parentheticals
-
-`"skip"` | `"check"` | `"only"`. Default: `"check"`.
-
-This designates anything inside parentheses, which includes standard functions, but also Sass maps and other non-standard constructs. `parentheticals` is a broader category than `functionArguments`.
diff --git a/assets/node_modules/style-search/circle.yml b/assets/node_modules/style-search/circle.yml
deleted file mode 100644
index 0efe6ab..0000000
--- a/assets/node_modules/style-search/circle.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-test:
- override:
- - nvm use 0.10 && npm test
- - nvm use 0.12 && npm test
- - nvm use 4.0 && npm test
diff --git a/assets/node_modules/style-search/index.js b/assets/node_modules/style-search/index.js
deleted file mode 100644
index 74a23f1..0000000
--- a/assets/node_modules/style-search/index.js
+++ /dev/null
@@ -1,203 +0,0 @@
-var SKIP = 'skip';
-var CHECK = 'check';
-var ONLY = 'only';
-
-module.exports = function (options, callback) {
- var source = options.source;
- var target = options.target;
-
- var skipComments = (options.comments) ? options.comments === SKIP : true;
- var skipStrings = (options.strings) ? options.strings === SKIP : true;
- var skipFunctionNames = (options.functionNames) ? options.functionNames === SKIP : true;
- var skipFunctionArguments = options.functionArguments === SKIP;
- var skipParentheticals = options.parentheticals === SKIP;
-
- var onceOptionUsed = false;
- Object.keys(options).forEach(function(key) {
- if (options[key] !== ONLY) return;
- if (!onceOptionUsed) {
- onceOptionUsed = true;
- } else {
- throw new Error('Only one syntax feature option can be the "only" one to check');
- }
- });
-
- var onlyComments = options.comments === ONLY;
- var onlyStrings = options.strings === ONLY;
- var onlyFunctionNames = options.functionNames === ONLY;
- var onlyFunctionArguments = options.functionArguments === ONLY;
- var onlyParentheticals = options.parentheticals === ONLY;
-
- var insideString = false;
- var insideComment = false;
- var insideSingleLineComment = false;
- var insideParens = false;
- var insideFunctionArguments = false;
- var openingParenCount = 0;
- var matchCount = 0;
- var openingQuote;
-
- var targetIsArray = Array.isArray(target);
-
- // If the target is just a string, it is easy to check whether
- // some index of the source matches it.
- // If the target is an array of strings, though, we have to
- // check whether some index of the source matches *any* of
- // those target strings (stopping after the first match).
- var getMatch = (function () {
- if (!targetIsArray) {
- return getMatchBase.bind(null, target);
- }
- return function(index) {
- for (var ti = 0, tl = target.length; ti < tl; ti++) {
- var checkResult = getMatchBase(target[ti], index);
- if (checkResult) return checkResult;
- }
- return false;
- }
- })();
-
- function getMatchBase(targetString, index) {
- var targetStringLength = targetString.length;
-
- // Target is a single character
- if (targetStringLength === 1 && source[index] !== targetString) return false;
-
- // Target is multiple characters
- if (source.substr(index, targetStringLength) !== targetString) return false;
-
- return {
- insideParens: insideParens,
- insideFunctionArguments: insideFunctionArguments,
- insideComment: insideComment,
- insideString: insideString,
- startIndex: index,
- endIndex: index + targetStringLength,
- target: targetString,
- };
- }
-
- for (var i = 0, l = source.length; i < l; i++) {
- var currentChar = source[i];
-
- // Register the beginning of a comment
- if (
- !insideString && !insideComment
- && currentChar === "/"
- && source[i - 1] !== "\\" // escaping
- ) {
- // standard comments
- if (source[i + 1] === "*") {
- insideComment = true;
- continue;
- }
- // single-line comments
- if (source[i + 1] === "/") {
- insideComment = true;
- insideSingleLineComment = true;
- continue;
- }
- }
-
- if (insideComment) {
- // Register the end of a standard comment
- if (
- !insideSingleLineComment
- && currentChar === "*"
- && source[i - 1] !== "\\" // escaping
- && source[i + 1] === "/"
- && source[i - 1] !== "/" // don't end if it's /*/
- ) {
- insideComment = false;
- continue;
- }
-
- // Register the end of a single-line comment
- if (
- insideSingleLineComment
- && currentChar === "\n"
- ) {
- insideComment = false;
- insideSingleLineComment = false;
- }
-
- if (skipComments) continue;
- }
-
- // Register the beginning of a string
- if (!insideComment && !insideString && (currentChar === "\"" || currentChar === "'")) {
- if (source[i - 1] === "\\") continue; // escaping
-
- openingQuote = currentChar;
- insideString = true;
-
- // For string-quotes rule
- if (target === currentChar) handleMatch(getMatch(i));
- continue;
- }
-
- if (insideString) {
- // Register the end of a string
- if (currentChar === openingQuote) {
- if (source[i - 1] === "\\") continue; // escaping
- insideString = false;
- continue;
- }
-
- if (skipStrings) continue;
- }
-
- // Register the beginning of parens/functions
- if (!insideString && !insideComment && currentChar === "(") {
- // Keep track of opening parentheticals so that we
- // know when the outermost function (possibly
- // containing nested functions) is closing
- openingParenCount++;
-
- insideParens = true;
- // Only inside a function if there is a function name
- // before the opening paren
- if (/[a-zA-Z]/.test(source[i - 1])) {
- insideFunctionArguments = true;
- }
-
- if (target === "(") handleMatch(getMatch(i));
- continue;
- }
-
- if (insideParens) {
- // Register the end of a function
- if (currentChar === ")") {
- openingParenCount--;
- // Do this here so the match is still technically inside a function
- if (target === ")") handleMatch(getMatch(i));
- if (openingParenCount === 0) {
- insideParens = false;
- insideFunctionArguments = false;
- }
- continue;
- }
- }
-
- var isFunctionName = /^[a-zA-Z]*\(/.test(source.slice(i));
- if (skipFunctionNames && isFunctionName) continue;
- if (onlyFunctionNames && !isFunctionName) continue;
-
- var match = getMatch(i);
-
- if (!match) continue;
- handleMatch(match);
- if (options.once) return;
- }
-
- function handleMatch(match) {
- if (onlyParentheticals && !insideParens) return;
- if (skipParentheticals && insideParens) return;
- if (onlyFunctionArguments && !insideFunctionArguments) return;
- if (skipFunctionArguments && insideFunctionArguments) return;
- if (onlyStrings && !insideString) return;
- if (onlyComments && !insideComment) return;
- matchCount++;
- callback(match, matchCount);
- }
-}
diff --git a/assets/node_modules/style-search/package.json b/assets/node_modules/style-search/package.json
deleted file mode 100644
index 0a2cefc..0000000
--- a/assets/node_modules/style-search/package.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "style-search",
- "version": "0.1.0",
- "description": "Search CSS(-like) strings",
- "main": "index.js",
- "scripts": {
- "test": "tape test.js"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/davidtheclark/style-search.git"
- },
- "keywords": [
- "css",
- "search",
- "stylelint"
- ],
- "author": "David Clark",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/davidtheclark/style-search/issues"
- },
- "homepage": "https://github.com/davidtheclark/style-search#readme",
- "devDependencies": {
- "tape": "^4.5.1"
- }
-}
diff --git a/assets/node_modules/style-search/test.js b/assets/node_modules/style-search/test.js
deleted file mode 100644
index 71c93e9..0000000
--- a/assets/node_modules/style-search/test.js
+++ /dev/null
@@ -1,467 +0,0 @@
-var test = require("tape");
-var styleSearch = require("./index");
-
-function styleSearchResults(options) {
- const results = [];
- styleSearch(options, function(match) {
- results.push(match.startIndex);
- });
- return results;
-}
-
-test("default options", function(t) {
- t.deepEqual(styleSearchResults({
- source: "abc cba",
- target: "c",
- }), [ 2, 4 ]);
- t.deepEqual(styleSearchResults({
- source: "abc cb",
- target: "a",
- }), [0]);
- t.deepEqual(styleSearchResults({
- source: "abc cba",
- target: "b",
- }), [ 1, 5 ]);
- t.deepEqual(styleSearchResults({
- source: "abc \"var(--cba)\"",
- target: "a",
- }), [0]);
- t.end();
-});
-
-test("once", function(t) {
- t.deepEqual(styleSearchResults({
- source: "abc cba",
- target: "c",
- once: true,
- }), [2]);
- t.deepEqual(styleSearchResults({
- source: "abc cba",
- target: "a",
- once: true,
- }), [0]);
- t.deepEqual(styleSearchResults({
- source: "abc cba",
- target: "b",
- once: false,
- }), [ 1, 5 ]);
- t.end();
-});
-
-test("functionArguments: 'only'", function(t) {
- t.deepEqual(styleSearchResults({
- source: "abc var(--cba)",
- target: "c",
- functionArguments: "only",
- }), [10]);
- t.deepEqual(styleSearchResults({
- source: "abc var(--cba)",
- target: "a",
- functionArguments: "only",
- }), [12]);
- t.deepEqual(styleSearchResults({
- source: "abc \"var(--cba)\"",
- target: "a",
- functionArguments: "only",
- }), []);
- t.deepEqual(styleSearchResults({
- source: "translate(1px, calc(1px * 2))",
- target: "1",
- functionArguments: "only",
- }), [ 10, 20 ]);
- t.deepEqual(styleSearchResults({
- source: "var(--horse)",
- target: "v",
- functionArguments: "only",
- }), []);
- t.deepEqual(styleSearchResults({
- source: "abc (abc)",
- target: "b",
- functionArguments: "only",
- }), [], "parens without function is not interpreted as a function");
- t.deepEqual(styleSearchResults({
- source: "de$(abc)fg",
- target: "b",
- functionArguments: "only",
- }), [], "parens preceded by `$`, for postcss-simple-vars interpolation, not interpreted as a function");
- t.deepEqual(styleSearchResults({
- source: "de$(abc)fg",
- target: ")",
- functionArguments: "only",
- }), [], "closing paren of non-function is ignored");
- t.end();
-});
-
-test("functionArguments: 'skip'", function(t) {
- t.deepEqual(styleSearchResults({
- source: "abc var(--cba)",
- target: "c",
- functionArguments: "skip",
- }), [2]);
- t.deepEqual(styleSearchResults({
- source: "abc var(--cba)",
- target: "a",
- functionArguments: "skip",
- }), [0]);
- t.deepEqual(styleSearchResults({
- source: "abc \"a var(--cba)\"",
- target: "a",
- functionArguments: "skip",
- }), [0]);
- t.deepEqual(styleSearchResults({
- source: "translate(1px, calc(1px * 2))",
- target: "1",
- functionArguments: "skip",
- }), []);
- t.deepEqual(styleSearchResults({
- source: "var(--horse)",
- target: "v",
- functionArguments: "skip",
- }), []);
- t.deepEqual(styleSearchResults({
- source: "abc (def)",
- target: "e",
- functionArguments: "skip",
- }), [6], "parens without function is not interpreted as a function");
- t.end();
-});
-
-test("parentheticals: 'skip'", function(t) {
- t.deepEqual(styleSearchResults({
- source: "abc var(--cba)",
- target: "c",
- parentheticals: "skip",
- }), [2]);
- t.deepEqual(styleSearchResults({
- source: "abc var(--cba)",
- target: "a",
- parentheticals: "skip",
- }), [0]);
- t.deepEqual(styleSearchResults({
- source: "abc \"a var(--cba)\"",
- target: "a",
- parentheticals: "skip",
- }), [0]);
- t.deepEqual(styleSearchResults({
- source: "translate(1px, calc(1px * 2))",
- target: "1",
- parentheticals: "skip",
- }), []);
- t.deepEqual(styleSearchResults({
- source: "var(--horse)",
- target: "v",
- parentheticals: "skip",
- }), []);
- t.deepEqual(styleSearchResults({
- source: "abc (def)",
- target: "e",
- parentheticals: "skip",
- }), [], "parens without function are still ignored");
- t.end();
-});
-
-test("ignores matches inside single-quote strings", function(t) {
- t.deepEqual(styleSearchResults({
- source: "abc 'abc'",
- target: "c",
- }), [2]);
- t.deepEqual(styleSearchResults({
- source: "abc 'abc' cba",
- target: "c",
- }), [ 2, 10 ]);
- t.end();
-});
-
-test("ignores matches inside double-quote strings", function(t) {
- t.deepEqual(styleSearchResults({
- source: 'abc "abc"',
- target: "c",
- }), [2]);
- t.deepEqual(styleSearchResults({
- source: 'abc "abc" cba',
- target: "c",
- }), [ 2, 10 ]);
- t.end();
-});
-
-test("strings: 'check'", function(t) {
- t.deepEqual(styleSearchResults({
- source: "abc 'abc'",
- target: "b",
- strings: "check",
- }), [ 1, 6 ]);
-
- t.deepEqual(styleSearchResults({
- source: "abc /* 'abc' */",
- target: "b",
- strings: "check",
- }), [1], "no strings inside comments");
- t.end();
-});
-
-test("strings: 'only'", function(t) {
- t.deepEqual(styleSearchResults({
- source: 'abc "abc"',
- target: "b",
- strings: "only",
- }), [6]);
-
- t.deepEqual(styleSearchResults({
- source: "p[href^='https://']:before { content: \"\/*\"; \n top: 0;\n}",
- target: "\n",
- strings: "only",
- }), [], "comments do not start inside strings");
-
- t.end();
-});
-
-test("ignores matches inside comments", function(t) {
- t.deepEqual(styleSearchResults({
- source: "abc/*comment*/",
- target: "m",
- }), []);
- t.deepEqual(styleSearchResults({
- source: "abc/*command*/",
- target: "a",
- }), [0]);
- t.end();
-});
-
-test("comments: 'check'", function(t) {
- t.deepEqual(styleSearchResults({
- source: "abc/*abc*/",
- target: "b",
- comments: "check",
- }), [ 1, 6 ]);
- t.end();
-});
-
-test("comments: 'only'", function(t) {
- t.deepEqual(styleSearchResults({
- source: "abc/*abc*/",
- target: "b",
- comments: "only",
- }), [6]);
- t.deepEqual(styleSearchResults({
- source: "abc/*/abc*/",
- target: "b",
- comments: "only",
- }), [7]);
- t.deepEqual(styleSearchResults({
- source: "ab'c/*abc*/c'",
- target: "b",
- comments: "only",
- }), [], "no comments inside strings");
- t.end();
-});
-
-test("ignores matches inside single-line comment", function(t) {
- t.deepEqual(styleSearchResults({
- source: "abc // comment",
- target: "m",
- }), []);
- t.deepEqual(styleSearchResults({
- source: "abc // command",
- target: "a",
- }), [0]);
- // Triple-slash comments are used for sassdoc
- t.deepEqual(styleSearchResults({
- source: "abc /// it's all ok",
- target: "a",
- }), [0]);
- t.end();
-});
-
-test("handles escaped double-quotes in double-quote strings", function(t) {
- t.deepEqual(styleSearchResults({
- source: 'abc "ab\\"c"',
- target: "c",
- }), [2]);
- t.deepEqual(styleSearchResults({
- source: 'abc "a\\"bc" foo cba',
- target: "c",
- }), [ 2, 16 ]);
- t.end();
-});
-
-test("handles escaped double-quotes in single-quote strings", function(t) {
- t.deepEqual(styleSearchResults({
- source: "abc 'ab\\'c'",
- target: "c",
- }), [2]);
- t.deepEqual(styleSearchResults({
- source: "abc 'a\\'bc' foo cba",
- target: "c",
- }), [ 2, 16 ]);
- t.end();
-});
-
-test("count", function(t) {
- const endCounts = []
- styleSearch({ source: "123 123 123", target: "1" }, function(index, count) {
- endCounts.push(count);
- });
- t.deepEqual(endCounts, [ 1, 2, 3 ]);
- t.end();
-});
-
-test("finds parentheses", function(t) {
- t.deepEqual(styleSearchResults({
- source: "a { color: rgb(0,0,0); }",
- target: "(",
- }), [14]);
- t.deepEqual(styleSearchResults({
- source: "a { color: rgb(0,0,0); }",
- target: ")",
- }), [20]);
- t.end();
-});
-
-test("functionNames: 'check'", function(t) {
- t.deepEqual(styleSearchResults({
- source: "a { color: rgb(0,0,0); }",
- target: "rgb",
- }), []);
- t.deepEqual(styleSearchResults({
- source: "a { color: rgb(0,0,0); }",
- target: "rgb",
- functionNames: "check"
- }), [11]);
- t.end();
-});
-
-test("non-single-character target", function(t) {
- t.deepEqual(styleSearchResults({
- source: "abc cba",
- target: "abc",
- }), [0]);
- t.deepEqual(styleSearchResults({
- source: "abc cba",
- target: "cb",
- }), [4]);
- t.deepEqual(styleSearchResults({
- source: "abc cba",
- target: "c c",
- }), [2]);
- t.deepEqual(styleSearchResults({
- source: "abc cba abc",
- target: "abc",
- }), [ 0, 8 ]);
- t.deepEqual(styleSearchResults({
- source: "abc cba 'abc'",
- target: "abc",
- }), [0]);
- t.deepEqual(styleSearchResults({
- source: "abc cb",
- target: "aa",
- }), []);
- t.end();
-});
-
-test("array target", function(t) {
- t.deepEqual(styleSearchResults({
- source: "abc cba",
- target: [ "a", "b" ],
- }), [ 0, 1, 5, 6 ]);
- t.deepEqual(styleSearchResults({
- source: "abc cba",
- target: [ "c", "b" ],
- }), [ 1, 2, 4, 5 ]);
- t.deepEqual(styleSearchResults({
- source: "abc cba",
- target: [ "bc", "a" ],
- }), [ 0, 1, 6 ]);
- t.deepEqual(styleSearchResults({
- source: "abc cba",
- target: [ "abc", "f" ],
- }), [0]);
- t.deepEqual(styleSearchResults({
- source: "abc cba",
- target: [ 0, 1, 2 ],
- }), []);
- t.end();
-});
-
-test("match object", function(t) {
- styleSearch({ source: "abc", target: "bc" }, function(match) {
- t.equal(match.startIndex, 1);
- t.equal(match.endIndex, 3);
- t.equal(match.target, "bc");
- t.equal(match.insideFunctionArguments, false);
- t.equal(match.insideComment, false);
- });
-
- const twoMatches = []
- styleSearch({ source: "abc bca", target: [ "bc ", "ca" ] }, function(match) {
- twoMatches.push(match);
- });
- const firstMatch = twoMatches[0]
- const secondMatch = twoMatches[1]
- t.equal(firstMatch.startIndex, 1);
- t.equal(firstMatch.endIndex, 4);
- t.equal(firstMatch.target, "bc ");
- t.equal(firstMatch.insideFunctionArguments, false);
- t.equal(firstMatch.insideComment, false);
- t.equal(secondMatch.startIndex, 5);
- t.equal(secondMatch.endIndex, 7);
- t.equal(secondMatch.target, "ca");
- t.equal(secondMatch.insideFunctionArguments, false);
- t.equal(secondMatch.insideComment, false);
- t.end();
-});
-
-test("match inside a function", function(t) {
- styleSearch({ source: "a { color: rgb(0, 0, 1); }", target: "1" }, function(match) {
- t.equal(match.insideFunctionArguments, true);
- t.equal(match.insideComment, false);
- t.end();
- });
-});
-
-test("match inside a comment", function(t) {
- styleSearch({
- source: "a { color: /* 1 */ pink; }",
- target: "1",
- comments: "check"
- }, function(match) {
- t.equal(match.insideFunctionArguments, false);
- t.equal(match.insideComment, true);
- t.end();
- });
-});
-
-test("match inside a block comment", function(t) {
- styleSearch({
- source: "a { color:\n/**\n * 0\n * 1\n */\npink; }",
- target: "1",
- comments: "check"
- }, function(match) {
- t.equal(match.insideFunctionArguments, false);
- t.equal(match.insideComment, true);
- t.end();
- });
-});
-
-test("match inside a comment inside function", function(t) {
- styleSearch({
- source: "a { color: rgb(0, 0, 0 /* 1 */); }",
- target: "1",
- comments: "check"
- }, function(match) {
- t.equal(match.insideFunctionArguments, true);
- t.equal(match.insideComment, true);
- t.end();
- });
-});
-
-test("error on multiple 'only' options", function(t) {
- t.throws(function() {
- styleSearch({
- source: "a {}",
- target: "a",
- comments: "only",
- strings: "only",
- }, function(match) {});
- }, /Only one syntax/);
- t.end();
-});
diff --git a/assets/node_modules/stylelint-config-recommended/CHANGELOG.md b/assets/node_modules/stylelint-config-recommended/CHANGELOG.md
deleted file mode 100644
index 5a4e826..0000000
--- a/assets/node_modules/stylelint-config-recommended/CHANGELOG.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# 3.0.0
-
-- Added: `function-calc-no-invalid` rule.
-- Removed: `stylelint` < 10.1.0 from peer dependencies. stylelint@10.1.0+ is required now.
-
-# 2.2.0
-
-- Added: `stylelint@10` to peer dependency range.
-
-# 2.1.0
-
-- Added: `stylelint@9` to peer dependency range.
-
-# 2.0.1
-
-- Removed: `declaration-block-no-redundant-longhand-properties` rule. This time it is actually removed.
-
-# 2.0.0
-
-- Removed: `declaration-block-no-redundant-longhand-properties` rule.
-- Removed: `shorthand-property-no-redundant-values` rule.
-- Added: `font-family-no-missing-generic-family-keyword` rule.
-- Added: `no-descending-specificity` rule.
-- Added: `no-duplicate-at-import-rules` rule.
-- Added: `no-duplicate-selectors` rule.
-
-# 1.0.0
-
-- Use `stylelint@8`.
-
-# 0.1.0
-
-- Initial release
diff --git a/assets/node_modules/stylelint-config-recommended/LICENSE b/assets/node_modules/stylelint-config-recommended/LICENSE
deleted file mode 100644
index b73e8bb..0000000
--- a/assets/node_modules/stylelint-config-recommended/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2017 stylelint
-
-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/assets/node_modules/stylelint-config-recommended/README.md b/assets/node_modules/stylelint-config-recommended/README.md
deleted file mode 100644
index 10556b6..0000000
--- a/assets/node_modules/stylelint-config-recommended/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# stylelint-config-recommended
-
-[![NPM version](http://img.shields.io/npm/v/stylelint-config-recommended.svg)](https://www.npmjs.org/package/stylelint-config-recommended) [![Build Status](https://travis-ci.com/stylelint/stylelint-config-recommended.svg?branch=master)](https://travis-ci.com/stylelint/stylelint-config-recommended) [![Build status](https://ci.appveyor.com/api/projects/status/b63jx3nxiegbcbt2/branch/master?svg=true)](https://ci.appveyor.com/project/stylelint/stylelint-config-recommended/branch/master)
-
-> The recommended shareable config for stylelint.
-
-It turns on all the [_possible errors_](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/rules.md#possible-errors) rules within stylelint.
-
-Use it as is or as a foundation for your own config.
-
-## Installation
-
-```bash
-npm install stylelint-config-recommended --save-dev
-```
-
-## Usage
-
-If you've installed `stylelint-config-recommended` locally within your project, just set your `stylelint` config to:
-
-```json
-{
- "extends": "stylelint-config-recommended"
-}
-```
-
-If you've globally installed `stylelint-config-recommended` using the `-g` flag, then you'll need to use the absolute path to `stylelint-config-recommended` in your config e.g.
-
-```json
-{
- "extends": "/absolute/path/to/stylelint-config-recommended"
-}
-```
-
-Since [stylelint 9.7.0](https://github.com/stylelint/stylelint/blob/9.7.0/CHANGELOG.md#970), you can simply use the globally installed configuration name instead of the absolute path:
-
-```json
-{
- "extends": "stylelint-config-recommended"
-}
-```
-
-### Extending the config
-
-Simply add a `"rules"` key to your config, then add your overrides and additions there.
-
-For example, to change the `at-rule-no-unknown` rule to use its `ignoreAtRules` option, turn off the `block-no-empty` rule, and add the `unit-whitelist` rule:
-
-```json
-{
- "extends": "stylelint-config-recommended",
- "rules": {
- "at-rule-no-unknown": [ true, {
- "ignoreAtRules": [
- "extends"
- ]
- }],
- "block-no-empty": null,
- "unit-whitelist": ["em", "rem", "s"]
- }
-}
-```
-
-## [Changelog](CHANGELOG.md)
-
-## [License](LICENSE)
diff --git a/assets/node_modules/stylelint-config-recommended/index.js b/assets/node_modules/stylelint-config-recommended/index.js
deleted file mode 100644
index 06e8b42..0000000
--- a/assets/node_modules/stylelint-config-recommended/index.js
+++ /dev/null
@@ -1,36 +0,0 @@
-"use strict";
-
-module.exports = {
- rules: {
- "at-rule-no-unknown": true,
- "block-no-empty": true,
- "color-no-invalid-hex": true,
- "comment-no-empty": true,
- "declaration-block-no-duplicate-properties": [
- true,
- {
- ignore: ["consecutive-duplicates-with-different-values"]
- }
- ],
- "declaration-block-no-shorthand-property-overrides": true,
- "font-family-no-duplicate-names": true,
- "font-family-no-missing-generic-family-keyword": true,
- "function-calc-no-invalid": true,
- "function-calc-no-unspaced-operator": true,
- "function-linear-gradient-no-nonstandard-direction": true,
- "keyframe-declaration-no-important": true,
- "media-feature-name-no-unknown": true,
- "no-descending-specificity": true,
- "no-duplicate-at-import-rules": true,
- "no-duplicate-selectors": true,
- "no-empty-source": true,
- "no-extra-semicolons": true,
- "no-invalid-double-slash-comments": true,
- "property-no-unknown": true,
- "selector-pseudo-class-no-unknown": true,
- "selector-pseudo-element-no-unknown": true,
- "selector-type-no-unknown": true,
- "string-no-newline": true,
- "unit-no-unknown": true
- }
-};
diff --git a/assets/node_modules/stylelint-config-recommended/node_modules/.bin/stylelint b/assets/node_modules/stylelint-config-recommended/node_modules/.bin/stylelint
deleted file mode 120000
index 32ec801..0000000
--- a/assets/node_modules/stylelint-config-recommended/node_modules/.bin/stylelint
+++ /dev/null
@@ -1 +0,0 @@
-../../../stylelint/bin/stylelint.js \ No newline at end of file
diff --git a/assets/node_modules/stylelint-config-recommended/package.json b/assets/node_modules/stylelint-config-recommended/package.json
deleted file mode 100644
index efccfd0..0000000
--- a/assets/node_modules/stylelint-config-recommended/package.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "stylelint-config-recommended",
- "version": "3.0.0",
- "description": "Recommended shareable config for stylelint",
- "keywords": [
- "stylelint",
- "stylelint-config",
- "recommended"
- ],
- "author": "stylelint",
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "https://github.com/stylelint/stylelint-config-recommended.git"
- },
- "main": "index.js",
- "files": [
- "index.js"
- ],
- "devDependencies": {
- "eslint": "^6.0.0",
- "eslint-config-stylelint": "^11.0.0",
- "jest": "^24.8.0",
- "jest-preset-stylelint": "^1.3.0",
- "np": "^5.0.3",
- "npm-run-all": "^4.1.5",
- "remark-cli": "^7.0.0",
- "remark-preset-lint-consistent": "^2.0.0",
- "remark-preset-lint-recommended": "^3.0.0",
- "stylelint": "^11.0.0"
- },
- "peerDependencies": {
- "stylelint": ">=10.1.0"
- },
- "scripts": {
- "lint:js": "eslint . --ignore-path .gitignore",
- "lint:md": "remark . --quiet --frail",
- "lint": "npm-run-all --parallel lint:*",
- "pretest": "npm run lint",
- "release": "np",
- "test": "jest",
- "watch": "jest --watch"
- },
- "eslintConfig": {
- "extends": [
- "stylelint"
- ]
- },
- "jest": {
- "preset": "jest-preset-stylelint"
- },
- "remarkConfig": {
- "plugins": [
- "preset-lint-recommended",
- "preset-lint-consistent"
- ]
- }
-}
diff --git a/assets/node_modules/stylelint-scss/CHANGELOG.md b/assets/node_modules/stylelint-scss/CHANGELOG.md
deleted file mode 100644
index 5ff2a03..0000000
--- a/assets/node_modules/stylelint-scss/CHANGELOG.md
+++ /dev/null
@@ -1,346 +0,0 @@
-# 3.14.2
-
-- Fixed: `operator-no-unspaced` ignore operators inside `@at-root`.
-
-# 3.14.1
-
-- Fixed: `at-import-partial-extension` don't warn for urls that have commas in them.
-
-# 3.14.0
-
-- Added: support for stylelint version 13.
-- Fixed: avoid possible breaking changes in the future by not using stylelint's internal utility functions.
-
-# 3.13.0
-
-- Added: support for stylelint version 12.
-- Fixed: duplicate warnings in `at-rule-no-unknown` rule.
-
-# 3.12.1
-
-- Fixed: `at-rule-conditional-no-parentheses` don't warn for function calls.
-- Fixed: `map-keys-quotes` ignore math operators inside map values.
-- Fixed: `operator-no-unspaced` was looking for operators inside `@forward` and `@use`.
-
-# 3.12.0
-
-- Added: `no-duplicate-mixins` rule.
-- Added: `at-rule-no-unknown` support for Sass' `@forward` and `@use`.
-
-# 3.11.1
-
-- Fixed: `selector-nest-combinators` warning for `@keyframes`.
-
-# 3.11.0
-
-- Added: support for stylelint version 11.
-
-# 3.10.1
-
-- Fixed: broken linting reporting for `dimension-no-non-numeric-values` rule.
-
-# 3.10.0
-
-- Added: `at-if-no-null`rule.
-- Added: `at-import-partial-extension` rule.
-- Added: `at-rule-conditional-no-parentheses` rule.
-- Added: `dimension-no-non-numeric-values` rule.
-
-# 3.9.4
-
-- Fixed: `selector-nest-combinators` rule throwing an error when using nested props.
-
-# 3.9.3
-
-- Fixed: `map-keys-quotes` warning for unquoted numeric keys.
-
-# 3.9.2
-
-- Fixed: `selector-no-union-class-name` throwing an error when using nested `@`-rules.
-
-# 3.9.1
-
-- Fixed: `selector-no-union-class-name` false positives for id, attribute, and pseudo selectors.
-
-# 3.9.0
-
-- Added: `selector-no-union-class-name` rule.
-- Added: `function-color-relative` rule.
-- Added: `comment-no-loud` rule.
-- Added: `map-keys-quotes` rule.
-- Fixed: typo in error message for `at-else-empty-line-before` and `dollar-variable-empty-line-before` rules.
-
-# 3.8.0
-
-- Added: `function-unquote-no-unquoted-strings-inside` rule.
-- Fixed: wrong message name for `at-each-key-value-single-line` rule.
-
-# 3.7.0
-
-- Added: `at-each-key-value-single-line` rule.
-- Added: `function-quote-no-quoted-strings-inside` rule.
-
-# 3.6.1
-
-- Fixed: `double-slash-comment-empty-line-before` autofix not working in certain situations.
-
-# 3.6.0
-
-- Added: support for stylelint version 10.
-
-# 3.5.4
-
-- Fixed: `dollar-variable-colon-newline-after` no longer warns for multiline variables that use `!default`.
-
-# 3.5.3
-
-- Fixed: `operator-no-unspaced` no longer warns for valid absolute urls and urls with interpolation.
-
-# 3.5.2
-
-- Fixed: handle SCSS interpolation in `selector-nest-combinators` rule.
-
-# 3.5.1
-
-- Fixed: error messages for `selector-nest-combinators` rule.
-
-# 3.5.0
-
-- Added: `selector-nest-combinators` rule.
-
-# 3.4.4
-
-- Updated: `postcss-selector-parser` dependency to 5.0.0 (major version bump) with a memory leak fix and other bug fixes.
-
-# 3.4.3
-
-- Fixed: `double-slash-comment-whitespace-inside` fix error being thrown when using two backslashes inside a string.
-
-# 3.4.2
-
-- Fixed: `operator-no-unspaced` no longer warns for relative url paths.
-
-# 3.4.1
-
-- Fixed: `at-function-named-arguments` was not correctly handling functions inside Sass maps.
-
-# 3.4.0
-
-- Added: `at-mixin-argumentless-call-parentheses` autofix (#280).
-- Fixed: `partial-no-import` correctly handle import parameters with urls (#283).
-
-# 3.3.2
-
-- Fixed: Account for hyphens in function names (`at-function-parentheses-space-before`) and mixin (`at-mixin-parentheses-space-before`) names.
-
-# 3.3.1
-
-- Fixed: `at-function-named-arguments` correctly parse function arguments with trailing commas.
-
-# 3.3.0
-
-- Added: `at-function-named-arguments` add `ignoreFunctions` option.
-- Fixed: `at-function-named-arguments` correctly parse data uris as function parameters.
-
-# 3.2.0
-
-- Added: `no-dollar-variables` rule.
-- Added: `ignoreInside` and `ignoreInsideAtRules` options to `no-duplicate-dollar-variables` rule.
-- Fixed: `operator-no-unspaced` no longer warns for `unicode-range` property.
-
-# 3.1.3
-
-- Fixed: compatibility with non css syntaxes for `operator-no-newline-after` and `operator-no-newline-before` rules.
-
-# 3.1.2
-
-- Fixed: compatibility with non css syntaxes.
-
-# 3.1.1
-
-- Fixed: `operator-no-newline-before` and `operator-no-unspaced` rules were throwing an error when using CSS custom properties.
-
-# 3.1.0
-
-- Added: `no-duplicate-dollar-variables` rule.
-
-# 3.0.1
-
-- Fixed: `at-function-named-arguments` now ignores Sass maps.
-
-# 3.0.0
-
-- Removed: Node.JS 4.x support. Node.js 6.x or greater is now required (#213).
-- Added: `at-else-empty-line-before` autofix (#221).
-- Added: `at-else-if-parentheses-space-before` autofix (#222).
-- Added: `at-function-parentheses-space-before` autofix (#223).
-- Added: `at-mixin-parentheses-space-before` autofix (#224).
-- Added: `dollar-variable-empty-line-before` autofix (#226).
-- Added: `dollar-variable-colon-space-after` autofix (#227).
-- Added: `dollar-variable-colon-space-before` autofix (#227).
-- Added: `at-else-closing-brace-space-after` autofix (#228).
-- Added: `at-if-else-closing-brace-space-after` autofix (#228).
-- Added: `at-else-closing-brace-newline-after` autofix (#229).
-- Added: `at-if-closing-brace-newline-after` autofix (#229).
-- Added: `double-slash-comment-empty-line-before` autofix (#230).
-- Added: `dollar-variable-colon-newline-after` autofix (#231).
-
-# 2.5.0
-
-- Added: `at-least-one-space` option to `dollar-variable-colon-space-after` rule.
-- Fixed: `dollar-variable-colon-newline-after` now does not require a newline for Sass maps and multiline variables with parentheses when `always-multi-line` option is used.
-
-# 2.4.0
-
-- Added: support for stylelint version 9.
-- Fixed: `dollar-variable-colon-newline-after` now allows multiline variables when `always` option is used.
-
-# 2.3.0
-
-- Added: `dollar-variable-default` rule.
-
-# 2.2.0
-
-- Added: `at-function-named-arguments` rule.
-- Added: `at-mixin-named-arguments` rule.
-
-# 2.1.0
-
-- Added: `at-else-if-parentheses-space-before` rule.
-- Added: `at-function-parentheses-space-before` rule.
-- Added: `at-mixin-parentheses-space-before` rule.
-
-# 2.0.1
-
-- Fixed: `selector-no-redundant-nesting-selector` now handles multiple nested selectors.
-
-# 2.0.0
-
-This version updates stylelint to version 8 and removes 2 rules that were deprecated in earlier versions.
-
-- Breaking changes:
- - Updated: stylelint dependency from version 7 to version 8.
- - Changed: stylelint is now listed in `peerDependencies` instead of `dependencies`. This means that you need to have `stylelint` installed in your project before using `stylelint-scss`.
- - Changed: white/blacklists and ignore\* options to be case sensitive by default. See https://github.com/stylelint/stylelint/pull/2709
- - Removed: 2 deprecated rules
- - `at-import-no-partial-extension`
- - `at-mixin-no-argumentless-call-parentheses`
-
-# 1.5.2
-
-- Fixed: `operator-no-unspaced` support escaped operators by handling them in `sassValueParser`.
-- Fixed: `declaration-nested-properties` support escaped selectors by checking for escaped characters in `parseNestedPropRoot`.
-
-# 1.5.1
-
-- Fixed: `at-rule-no-unknown` add missing export to `ruleName`.
-- Fixed: `at-rule-no-unknown` add options validation.
-
-# 1.5.0
-
-- Added: `at-rule-no-unknown` rule.
-
-# 1.4.4
-
-- Fixed: `at-if-closing-brace-newline-after`: support `@elseif`.
-
-# 1.4.3
-
-- Fixed: `at-mixin-no-argumentless-call-parentheses` messages
-
-# 1.4.2:
-
-- Fixed: false positives in inline comment detecting by `findCommentsInRaws` if a comment is the first/last in a file/line
-- Fixed: `findCommentsInRaws` error in function detection
-
-# 1.4.1
-
-- Fixed: mixed import names for `at-else-closing-brace-space-after` and `at-else-empty-line-before` rules.
-- Fixed: false positives for nested props rules (`:not()`-like selectors, strings, numbers).
-
-# 1.4.0
-
-- Added: `at-else-closing-brace-newline-after` rule.
-- Added: `at-else-closing-brace-space-after` rule.
-- Added: `at-if-closing-brace-newline-after` rule.
-- Added: `at-if-closing-brace-space-after` rule.
-- Added: `at-else-empty-line-before` rule.
-- Added: `declaration-nested-properties` rule.
-- Added: `declaration-nested-properties-no-divided-groups` rule.
-- Added: `dollar-variable-empty-line-before` rule.
-- Added: `ignore: "local"|"global"` to the `dollar-variable-pattern` rule.
-- Added: `docs` folder to `npm` package.
-- Removed: `src` folder from `npm` package.
-- Removed: NodeJS 0.12.x support, stylelint-scss now requires NodeJS > 4.2.1 LTS or greater
-
-# 1.3.4
-
-- Fixed: parsing `-` and `+` at the operation start in `operator-` rules.
-- Fixed: `findCommentsInRaws` false positives on comments inside strings (applicable to rules `double-slash-comment-inline`, `double-slash-comment-whitespace-inside`, `operator-no-unspaced`).
-
-# 1.3.3
-
-- Fixed: parsing `%` character by `operator-` rules.
-- Fixed: false positives on `operator-` rules.
-
-# 1.3.2
-
-- Fixed: `findCommentsInRaws` fail on parsing selectors like `p:not(.not-p)` (applicable to rules `double-slash-comment-inline`, `double-slash-comment-whitespace-inside`, `operator-no-unspaced`).
-- Fixed: 'double-slash-comment-whitespace-inside' false positives on empty comments (e.g. `//`).
-- Fixed: `findCommentsInRaws` giving wrong column number (applicable to rules `double-slash-comment-inline`, `double-slash-comment-whitespace-inside`, `operator-no-unspaced`).
-
-# 1.3.1
-
-- Fixed: `findCommentsInRaws` for multiline CSS comments and text for //-comments (`double-slash-comment-` rules and `operator-no-unspaced` rule).
-
-# 1.3.0
-
-- Added: `at-mixin-argumentless-call-parentheses` rule (with "always"/"never" behavior as a replacement for `at-mixin-no-argumentless-call-parentheses`).
-- Added: `dollar-variable-colon-newline-after` rule.
-- Added: `dollar-variable-colon-space-after` rule.
-- Added: `dollar-variable-colon-space-before` rule.
-- Added: `double-slash-comment-empty-line-before` rule.
-- Added: `double-slash-comment-inline` rule.
-- Added: `double-slash-comment-whitespace-inside` rule.
-- Added: `operator-no-newline-after` rule.
-- Added: `operator-no-newline-before` rule.
-- Added: `operator-no-unspaced` rule.
-- Deprecated: `at-mixin-no-argumentless-call-parentheses`.
-- Fixed: `partial-no-import` failing when linting a code string (not in an actual file, e.g. via stylelilnt Node API).
-- Updated stylelint dependency to version 7.
-
-# 1.2.1
-
-- Fixed: `at-function-pattern`, `at-mixin-pattern` failing if there are parens inside a parameters list.
-
-# 1.2.0
-
-- Added: `partial-no-import` rule.
-- Added: `media-feature-value-dollar-variable` rule.
-- Added: `at-import-partial-extension-blacklist` rule.
-- Added: `at-import-partial-extension-whitelist` rule.
-- Deprecated: `at-import-no-partial-extension` rule.
-- Fixed: `dollar-variable-no-missing-interpolation` was throwing an error on older Node.js versions.
-
-# 1.1.1
-
-- Fixed: newlines inside braces in `at-function-pattern`, `at-mixin-pattern`.
-- Fixed: false positives and false negatives in `selector-no-redundant-nesting-selector`.
-
-# 1.1.0
-
-- Added: `at-mixin-no-argumentless-call-parentheses` rule.
-- Added: `at-import-no-partial-leading-underscore` rule.
-- Added: `at-import-no-partial-extension` rule.
-- Added: `percent-placeholder-pattern` rule.
-- Fixed: `selector-no-redundant-nesting-selector` no longer warns about BEM syntax.
-- Fixed: bug causing rules to ignore severity levels `warning` / `error` and report `ignore` instead.
-
-# 1.0.0
-
-- Added: `at-extend-no-missing-placeholder` rule.
-- Added: `at-function-pattern` rule.
-- Added: `at-mixin-pattern` rule.
-- Added: `dollar-variable-no-missing-interpolation` rule.
-- Added: `dollar-variable-pattern` rule.
-- Added: `selector-no-redundant-nesting-selector` rule.
diff --git a/assets/node_modules/stylelint-scss/LICENSE b/assets/node_modules/stylelint-scss/LICENSE
deleted file mode 100644
index 9f82c82..0000000
--- a/assets/node_modules/stylelint-scss/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016 Krister Kari
-
-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/assets/node_modules/stylelint-scss/README.md b/assets/node_modules/stylelint-scss/README.md
deleted file mode 100644
index a5c643c..0000000
--- a/assets/node_modules/stylelint-scss/README.md
+++ /dev/null
@@ -1,299 +0,0 @@
-# stylelint-scss
-
-[![NPM version](https://img.shields.io/npm/v/stylelint-scss.svg)](https://www.npmjs.com/package/stylelint-scss)
-[![Build Status](https://github.com/kristerkari/stylelint-scss/workflows/Tests/badge.svg)](https://github.com/kristerkari/stylelint-scss/actions?workflow=Tests)
-[![Coverage Status](https://img.shields.io/coveralls/github/kristerkari/stylelint-scss/master.svg)](https://coveralls.io/github/kristerkari/stylelint-scss?branch=master)
-[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github)
-[![Downloads per month](https://img.shields.io/npm/dm/stylelint-scss.svg)](https://npmcharts.com/compare/stylelint-scss)
-
-A collection of SCSS specific linting rules for [stylelint](https://github.com/stylelint/stylelint) (in a form of a plugin).
-
-## Purpose
-
-stylelint by itself supports [SCSS syntax](https://stylelint.io/user-guide/css-processors#parsing-non-standard-syntax) very well (as well as other preprocessors' syntaxes). Moreover, it introduces some specific rules that can be used to lint SCSS, e.g. to limit [`nesting`](https://stylelint.io/user-guide/rules/max-nesting-depth), control the way [`@-rules`](https://stylelint.io/user-guide/rules#at-rule) are written. Yet stylelint is in general focused on standard CSS.
-
-stylelint-scss introduces rules specific to SCSS syntax. That said, the rules from this plugin can be used with other syntaxes, like Less or some PostCSS syntaxes. That's why the rules' names are not tied to SCSS only (`at-function-pattern` instead of `scss-function-pattern`).
-
-The plugin follows stylelint's guidelines (about [rule names](https://stylelint.io/user-guide/about-rules), testing and [so on](https://github.com/stylelint/stylelint/tree/master/docs/developer-guide)).
-
-## Installation and usage
-
-stylelint-scss is a plugin for [stylelint](https://stylelint.io/user-guide), so it's meant to be used with it.
-
-First, install stylelint-scss (and stylelint, if you haven't done so yet) via NPM:
-
-```
-npm install stylelint stylelint-scss
-```
-
-Create the `.stylelintrc.json` config file (or open the existing one), add `stylelint-scss` to the plugins array and the rules you need to the rules list. All rules from stylelint-scss need to be namespaced with `scss`.
-
-```json
-{
- "plugins": [
- "stylelint-scss"
- ],
- "rules": {
- "scss/dollar-variable-pattern": "^foo",
- "scss/selector-no-redundant-nesting-selector": true,
- ...
- }
-}
-```
-
-Please refer to [stylelint docs](https://stylelint.io/user-guide) for the detailed info on using this linter.
-
-## List of rules
-
-Here are stylelint-scss' rules, grouped by the [_thing_](http://apps.workflower.fi/vocabs/css/en) they apply to (just like in [stylelint](https://stylelint.io/user-guide/about-rules)).
-
-Please also see the [example configs](./docs/examples/) for special cases.
-
-### `@`-each
-
-- [`at-each-key-value-single-line`](./src/rules/at-each-key-value-single-line/README.md): This is a rule that checks for situations where users have done a loop using map-keys and grabbed the value for that key inside of the loop.
-
-### `@`-else
-
-- [`at-else-closing-brace-newline-after`](./src/rules/at-else-closing-brace-newline-after/README.md): Require or disallow a newline after the closing brace of `@else` statements (Autofixable).
-- [`at-else-closing-brace-space-after`](./src/rules/at-else-closing-brace-space-after/README.md): Require a single space or disallow whitespace after the closing brace of `@else` statements (Autofixable).
-- [`at-else-empty-line-before`](./src/rules/at-else-empty-line-before/README.md): Require an empty line or disallow empty lines before `@`-else (Autofixable).
-- [`at-else-if-parentheses-space-before`](./src/rules/at-else-if-parentheses-space-before/README.md): Require or disallow a space before `@else if` parentheses (Autofixable).
-
-### `@`-extend
-
-- [`at-extend-no-missing-placeholder`](./src/rules/at-extend-no-missing-placeholder/README.md): Disallow at-extends (`@extend`) with missing placeholders.
-
-### `@`-function
-
-- [`at-function-named-arguments`](./src/rules/at-function-named-arguments/README.md): Require named parameters in SCSS function call rule.
-- [`at-function-parentheses-space-before`](./src/rules/at-function-parentheses-space-before/README.md): Require or disallow a space before `@function` parentheses (Autofixable).
-- [`at-function-pattern`](./src/rules/at-function-pattern/README.md): Specify a pattern for Sass/SCSS-like function names.
-
-### `@`-if
-
-- [`at-if-closing-brace-newline-after`](./src/rules/at-if-closing-brace-newline-after/README.md): Require or disallow a newline after the closing brace of `@if` statements (Autofixable).
-- [`at-if-closing-brace-space-after`](./src/rules/at-if-closing-brace-space-after/README.md): Require a single space or disallow whitespace after the closing brace of `@if` statements (Autofixable).
-- [`at-if-no-null`](./src/rules/at-if-no-null/README.md): Disallow `null` in `@if` statements.
-
-### `@`-import
-
-- [`at-import-no-partial-leading-underscore`](./src/rules/at-import-no-partial-leading-underscore/README.md): Disallow leading underscore in partial names in `@import`.
-- [`at-import-partial-extension`](./src/rules/at-import-partial-extension/README.md): Require or disallow extension in `@import` commands.
-- [`at-import-partial-extension-blacklist`](./src/rules/at-import-partial-extension-blacklist/README.md): Specify blacklist of disallowed file extensions for partial names in `@import` commands.
-- [`at-import-partial-extension-whitelist`](./src/rules/at-import-partial-extension-whitelist/README.md): Specify whitelist of allowed file extensions for partial names in `@import` commands.
-
-### `@`-mixin
-
-- [`at-mixin-argumentless-call-parentheses`](./src/rules/at-mixin-argumentless-call-parentheses/README.md): Require or disallow parentheses in argumentless `@mixin` calls (Autofixable).
-- [`at-mixin-named-arguments`](./src/rules/at-mixin-named-arguments/README.md): Require named parameters in at-mixin call rule.
-- [`at-mixin-parentheses-space-before`](./src/rules/at-mixin-parentheses-space-before/README.md): Require or disallow a space before `@mixin` parentheses (Autofixable).
-- [`at-mixin-pattern`](./src/rules/at-mixin-pattern/README.md): Specify a pattern for Sass/SCSS-like mixin names.
-
-### `@`-rule
-
-- [`at-rule-conditional-no-parentheses`](./src/rules/at-rule-conditional-no-parentheses/README.md): Disallow parentheses in conditional @ rules (if, elsif, while).
-- [`at-rule-no-unknown`](./src/rules/at-rule-no-unknown/README.md): Disallow unknown at-rules. Should be used **instead of** stylelint's [at-rule-no-unknown](https://stylelint.io/user-guide/rules/at-rule-no-unknown).
-
-### `$`-variable
-
-- [`dollar-variable-colon-newline-after`](./src/rules/dollar-variable-colon-newline-after/README.md): Require a newline after the colon in `$`-variable declarations (Autofixable).
-- [`dollar-variable-colon-space-after`](./src/rules/dollar-variable-colon-space-after/README.md): Require or disallow whitespace after the colon in `$`-variable declarations (Autofixable).
-- [`dollar-variable-colon-space-before`](./src/rules/dollar-variable-colon-space-before/README.md): Require a single space or disallow whitespace before the colon in `$`-variable declarations (Autofixable).
-- [`dollar-variable-default`](./src/rules/dollar-variable-default/README.md): Require `!default` flag for `$`-variable declarations.
-- [`dollar-variable-empty-line-before`](./src/rules/dollar-variable-empty-line-before/README.md): Require a single empty line or disallow empty lines before `$`-variable declarations (Autofixable).
-- [`dollar-variable-no-missing-interpolation`](./src/rules/dollar-variable-no-missing-interpolation/README.md): Disallow Sass variables that are used without interpolation with CSS features that use custom identifiers.
-- [`dollar-variable-pattern`](./src/rules/dollar-variable-pattern/README.md): Specify a pattern for Sass-like variables.
-
-### `%`-placeholder
-
-- [`percent-placeholder-pattern`](./src/rules/percent-placeholder-pattern/README.md): Specify a pattern for `%`-placeholders.
-
-### `//`-comment
-
-- [`double-slash-comment-empty-line-before`](./src/rules/double-slash-comment-empty-line-before/README.md): Require or disallow an empty line before `//`-comments (Autofixable).
-- [`double-slash-comment-inline`](./src/rules/double-slash-comment-inline/README.md): Require or disallow `//`-comments to be inline comments.
-- [`double-slash-comment-whitespace-inside`](./src/rules/double-slash-comment-whitespace-inside/README.md): Require or disallow whitespace after the `//` in `//`-comments
-
-### Comment
-
-- [`comment-no-loud`](./src/rules/comment-no-loud/README.md): Disallow `/*`-comments.
-
-### Declaration
-
-- [`declaration-nested-properties`](./src/rules/declaration-nested-properties/README.md): Require or disallow properties with `-` in their names to be in a form of a nested group.
-- [`declaration-nested-properties-no-divided-groups`](./src/rules/declaration-nested-properties-no-divided-groups/README.md): Disallow nested properties of the same "namespace" be divided into multiple groups.
-
-### Dimension
-
-- [`dimension-no-non-numeric-values`](./src/rules/dimension-no-non-numeric-values/README.md): Disallow non-numeric values when interpolating a value with a unit.
-
-### Function
-
-- [`function-color-relative`](./src/rules/function-color-relative/README.md): Encourage the use of the [scale-color](https://sass-lang.com/documentation/modules/color#scale-color) function over regular color functions.
-- [`function-quote-no-quoted-strings-inside`](./src/rules/function-quote-no-quoted-strings-inside/README.md): Disallow quoted strings inside the [quote function](https://sass-lang.com/documentation/modules/string#quote) (Autofixable).
-- [`function-unquote-no-unquoted-strings-inside`](./src/rules/function-unquote-no-unquoted-strings-inside/README.md): Disallow unquoted strings inside the [unquote function](https://sass-lang.com/documentation/modules/string#unquote) (Autofixable).
-
-### Map
-
-- [`map-keys-quotes`](./src/rules/map-keys-quotes/README.md): Require quoted keys in Sass maps.
-
-### Media feature
-
-- [`media-feature-value-dollar-variable`](./src/rules/media-feature-value-dollar-variable/README.md): Require a media feature value be a `$`-variable or disallow `$`-variables in media feature values.
-
-### Operator
-
-- [`operator-no-newline-after`](./src/rules/operator-no-newline-after/README.md): Disallow linebreaks after Sass operators.
-- [`operator-no-newline-before`](./src/rules/operator-no-newline-before/README.md): Disallow linebreaks before Sass operators.
-- [`operator-no-unspaced`](./src/rules/operator-no-unspaced/README.md): Disallow unspaced operators in Sass operations.
-
-### Partial
-
-- [`partial-no-import`](./src/rules/partial-no-import/README.md): Disallow non-CSS `@import`s in partial files.
-
-### Selector
-
-- [`selector-nest-combinators`](./src/rules/selector-nest-combinators/README.md): Require or disallow nesting of combinators in selectors.
-- [`selector-no-redundant-nesting-selector`](./src/rules/selector-no-redundant-nesting-selector/README.md): Disallow redundant nesting selectors (`&`).
-- [`selector-no-union-class-name`](./src/rules/selector-no-union-class-name/README.md): Disallow union class names with the parent selector (`&`).
-
-### General / Sheet
-
-- [`no-dollar-variables`](./src/rules/no-dollar-variables/README.md): Disallow dollar variables within a stylesheet.
-- [`no-duplicate-dollar-variables`](./src/rules/no-duplicate-dollar-variables/README.md): Disallow duplicate dollar variables within a stylesheet.
-- [`no-duplicate-mixins`](./src/rules/no-duplicate-mixins/README.md): Disallow duplicate mixins within a stylesheet.
-
-## Help out
-
-There work on the plugin's rules is still in progress, so if you feel like it, you're welcome to help out in any of these (the plugin follows stylelint guidelines so most part of this is based on its docs):
-
-- Create, enhance, and debug rules (see stylelint's guide to "[Working on rules](https://github.com/stylelint/stylelint/blob/master/docs/developer-guide/rules.md)").
-- Improve documentation.
-- Chime in on any open issue or pull request.
-- Open new issues about your ideas on new rules, or for how to improve the existing ones, and pull requests to show us how your idea works.
-- Add new tests to absolutely anything.
-- Work on improving performance of rules.
-- Contribute to [stylelint](https://github.com/stylelint/stylelint)
-- Spread the word.
-
-We communicate via [issues](https://github.com/kristerkari/stylelint-scss/issues) and [pull requests](https://github.com/kristerkari/stylelint-scss/pulls).
-
-There is also [stackoverflow](https://stackoverflow.com/questions/tagged/stylelint), which would be the preferred QA forum.
-
-## Contributors
-
-Thanks goes to these wonderful people:
-
-<table>
-<thead>
-<tr>
-<th style="text-align:center"><a href="https://github.com/kristerkari"><img alt="kristerkari" src="https://avatars0.githubusercontent.com/u/993108?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/dryoma"><img alt="dryoma" src="https://avatars2.githubusercontent.com/u/11942776?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/rambleraptor"><img alt="rambleraptor" src="https://avatars1.githubusercontent.com/u/1325798?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/XhmikosR"><img alt="XhmikosR" src="https://avatars2.githubusercontent.com/u/349621?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/pipopotamasu"><img alt="pipopotamasu" src="https://avatars0.githubusercontent.com/u/14048211?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/evilebottnawi"><img alt="evilebottnawi" src="https://avatars3.githubusercontent.com/u/4567934?v=4&s=80" width="80"></a></th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td style="text-align:center"><a href="https://github.com/kristerkari">kristerkari</a></td>
-<td style="text-align:center"><a href="https://github.com/dryoma">dryoma</a></td>
-<td style="text-align:center"><a href="https://github.com/rambleraptor">rambleraptor</a></td>
-<td style="text-align:center"><a href="https://github.com/XhmikosR">XhmikosR</a></td>
-<td style="text-align:center"><a href="https://github.com/pipopotamasu">pipopotamasu</a></td>
-<td style="text-align:center"><a href="https://github.com/evilebottnawi">evilebottnawi</a></td>
-</tr>
-</tbody>
-</table>
-<table>
-<thead>
-<tr>
-<th style="text-align:center"><a href="https://github.com/OriR"><img alt="OriR" src="https://avatars3.githubusercontent.com/u/2384068?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/ntwb"><img alt="ntwb" src="https://avatars2.githubusercontent.com/u/1016458?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/ricardogobbosouza"><img alt="ricardogobbosouza" src="https://avatars3.githubusercontent.com/u/13064722?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/bjankord"><img alt="bjankord" src="https://avatars1.githubusercontent.com/u/633148?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/thibaudcolas"><img alt="thibaudcolas" src="https://avatars1.githubusercontent.com/u/877585?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/AndyOGo"><img alt="AndyOGo" src="https://avatars1.githubusercontent.com/u/914443?v=4&s=80" width="80"></a></th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td style="text-align:center"><a href="https://github.com/OriR">OriR</a></td>
-<td style="text-align:center"><a href="https://github.com/ntwb">ntwb</a></td>
-<td style="text-align:center"><a href="https://github.com/ricardogobbosouza">ricardogobbosouza</a></td>
-<td style="text-align:center"><a href="https://github.com/bjankord">bjankord</a></td>
-<td style="text-align:center"><a href="https://github.com/thibaudcolas">thibaudcolas</a></td>
-<td style="text-align:center"><a href="https://github.com/AndyOGo">AndyOGo</a></td>
-</tr>
-</tbody>
-</table>
-<table>
-<thead>
-<tr>
-<th style="text-align:center"><a href="https://github.com/niksy"><img alt="niksy" src="https://avatars3.githubusercontent.com/u/389286?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/lxsymington"><img alt="lxsymington" src="https://avatars3.githubusercontent.com/u/15095115?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/vseventer"><img alt="vseventer" src="https://avatars2.githubusercontent.com/u/638323?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/Deimos"><img alt="Deimos" src="https://avatars0.githubusercontent.com/u/9033?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/diego-codes"><img alt="diego-codes" src="https://avatars0.githubusercontent.com/u/5973294?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/jantimon"><img alt="jantimon" src="https://avatars2.githubusercontent.com/u/4113649?v=4&s=80" width="80"></a></th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td style="text-align:center"><a href="https://github.com/niksy">niksy</a></td>
-<td style="text-align:center"><a href="https://github.com/lxsymington">lxsymington</a></td>
-<td style="text-align:center"><a href="https://github.com/vseventer">vseventer</a></td>
-<td style="text-align:center"><a href="https://github.com/Deimos">Deimos</a></td>
-<td style="text-align:center"><a href="https://github.com/diego-codes">diego-codes</a></td>
-<td style="text-align:center"><a href="https://github.com/jantimon">jantimon</a></td>
-</tr>
-</tbody>
-</table>
-<table>
-<thead>
-<tr>
-<th style="text-align:center"><a href="https://github.com/stormwarning"><img alt="stormwarning" src="https://avatars1.githubusercontent.com/u/999825?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/keegan-lillo"><img alt="keegan-lillo" src="https://avatars0.githubusercontent.com/u/3537963?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/manovotny"><img alt="manovotny" src="https://avatars2.githubusercontent.com/u/446260?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/paulgv"><img alt="paulgv" src="https://avatars0.githubusercontent.com/u/4895885?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/sajadtorkamani"><img alt="sajadtorkamani" src="https://avatars1.githubusercontent.com/u/9380313?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/srawlins"><img alt="srawlins" src="https://avatars3.githubusercontent.com/u/103167?v=4&s=80" width="80"></a></th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td style="text-align:center"><a href="https://github.com/stormwarning">stormwarning</a></td>
-<td style="text-align:center"><a href="https://github.com/keegan-lillo">keegan-lillo</a></td>
-<td style="text-align:center"><a href="https://github.com/manovotny">manovotny</a></td>
-<td style="text-align:center"><a href="https://github.com/paulgv">paulgv</a></td>
-<td style="text-align:center"><a href="https://github.com/sajadtorkamani">sajadtorkamani</a></td>
-<td style="text-align:center"><a href="https://github.com/srawlins">srawlins</a></td>
-</tr>
-</tbody>
-</table>
-<table>
-<thead>
-<tr>
-<th style="text-align:center"><a href="https://github.com/YozhikM"><img alt="YozhikM" src="https://avatars0.githubusercontent.com/u/27273025?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/YodaDaCoda"><img alt="YodaDaCoda" src="https://avatars0.githubusercontent.com/u/365349?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/freezy-sk"><img alt="freezy-sk" src="https://avatars0.githubusercontent.com/u/661637?v=4&s=80" width="80"></a></th>
-<th style="text-align:center"><a href="https://github.com/jeddy3"><img alt="jeddy3" src="https://avatars0.githubusercontent.com/u/808227?v=4&s=80" width="80"></a></th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td style="text-align:center"><a href="https://github.com/YozhikM">YozhikM</a></td>
-<td style="text-align:center"><a href="https://github.com/YodaDaCoda">YodaDaCoda</a></td>
-<td style="text-align:center"><a href="https://github.com/freezy-sk">freezy-sk</a></td>
-<td style="text-align:center"><a href="https://github.com/jeddy3">jeddy3</a></td>
-</tr>
-</tbody>
-</table>
-
-## Important documents
-
-- [Changelog](./CHANGELOG.md)
-- [Contributing](./CONTRIBUTING.md)
-- [License](./LICENSE)
diff --git a/assets/node_modules/stylelint-scss/dist/index.js b/assets/node_modules/stylelint-scss/dist/index.js
deleted file mode 100644
index f1bc0cc..0000000
--- a/assets/node_modules/stylelint-scss/dist/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("./utils");
-
-var _rules = _interopRequireDefault(require("./rules"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-var rulesPlugins = Object.keys(_rules["default"]).map(function (ruleName) {
- return (0, _stylelint.createPlugin)((0, _utils.namespace)(ruleName), _rules["default"][ruleName]);
-});
-var _default = rulesPlugins;
-exports["default"] = _default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-each-key-value-single-line/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-each-key-value-single-line/index.js
deleted file mode 100644
index 60c232c..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-each-key-value-single-line/index.js
+++ /dev/null
@@ -1,109 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("at-each-key-value-single-line");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: "Use @each $key, $value in $map syntax instead of $value: map-get($map, $key)"
-});
-
-exports.messages = messages;
-
-function _default(primary) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: primary
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules("each", function (rule) {
- var parts = separateEachParams(rule.params); // If loop is fetching both key + value, return
-
- if (parts[0].length === 2) {
- return;
- } // If didn't call map-keys, return.
-
-
- if (!didCallMapKeys(parts[1])) {
- return;
- } // Loop over decls inside of each statement and loop for variable assignments.
-
-
- rule.walkDecls(function (innerDecl) {
- // Check that this decl is a map-get call
- if (innerDecl.prop[0] !== "$") {
- return;
- }
-
- if (!didCallMapGet(innerDecl.value)) {
- return;
- } // Check map_name + key_name match.
-
-
- var map_get_parts = mapGetParameters(innerDecl.value); // Check map names match.
-
- if (map_get_parts[0] !== mapName(parts[1])) {
- return;
- } // Match key names match.
-
-
- if (map_get_parts[1] !== parts[0][0]) {
- return;
- }
-
- _stylelint.utils.report({
- message: messages.expected,
- node: rule,
- result: result,
- ruleName: ruleName
- });
- });
- });
- };
-} // Takes in a param string from node.params
-// Returns: [[key variable, value variable], map_decl] (all Strings)
-
-
-function separateEachParams(paramString) {
- var parts = paramString.split("in");
- return [parts[0].split(",").map(function (s) {
- return s.trim();
- }), parts[1].trim()];
-}
-
-function didCallMapKeys(map_decl) {
- return map_decl.match(/map-keys\(.*\)/);
-}
-
-function didCallMapGet(map_decl) {
- return map_decl.match(/map-get\((.*),(.*)\)/);
-} // Fetch the name of the map from a map-keys() call.
-
-
-function mapName(map_decl) {
- if (didCallMapKeys(map_decl)) {
- return map_decl.match(/map-keys\((.*)\)/)[1];
- } else {
- return map_decl;
- }
-} // Returns the parameters of a map-get call
-// Returns [map variable, key_variable]
-
-
-function mapGetParameters(mapGetDecl) {
- var parts = mapGetDecl.match(/map-get\((.*), ?(.*)\)/);
- return [parts[1], parts[2]];
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-else-closing-brace-newline-after/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-else-closing-brace-newline-after/index.js
deleted file mode 100644
index 42c05fe..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-else-closing-brace-newline-after/index.js
+++ /dev/null
@@ -1,55 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _utils = require("../../utils");
-
-var _stylelint = require("stylelint");
-
-var _lodash = require("lodash");
-
-var _atIfClosingBraceNewlineAfter = require("../at-if-closing-brace-newline-after");
-
-var ruleName = (0, _utils.namespace)("at-else-closing-brace-newline-after");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: 'Expected newline after "}" of @else statement',
- rejected: 'Unexpected newline after "}" of @else statement'
-});
-
-exports.messages = messages;
-
-function _default(expectation, options, context) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always-last-in-chain"]
- }, {
- actual: options,
- possible: {
- disableFix: _lodash.isBoolean
- },
- optional: true
- });
-
- if (!validOptions) {
- return;
- }
-
- (0, _atIfClosingBraceNewlineAfter.sassConditionalBraceNLAfterChecker)({
- root: root,
- result: result,
- ruleName: ruleName,
- atRuleName: "else",
- expectation: expectation,
- messages: messages,
- context: context,
- options: options
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-else-closing-brace-space-after/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-else-closing-brace-space-after/index.js
deleted file mode 100644
index 2506992..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-else-closing-brace-space-after/index.js
+++ /dev/null
@@ -1,46 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _utils = require("../../utils");
-
-var _stylelint = require("stylelint");
-
-var _atIfClosingBraceSpaceAfter = require("../at-if-closing-brace-space-after");
-
-var ruleName = (0, _utils.namespace)("at-else-closing-brace-space-after");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: 'Expected single space after "}" of @else statement',
- rejected: 'Unexpected space after "}" of @else statement'
-});
-
-exports.messages = messages;
-
-function _default(expectation, _, context) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always-intermediate", "never-intermediate"]
- });
-
- if (!validOptions) {
- return;
- }
-
- (0, _atIfClosingBraceSpaceAfter.sassConditionalBraceSpaceAfterChecker)({
- root: root,
- result: result,
- ruleName: ruleName,
- atRuleName: "else",
- expectation: expectation,
- messages: messages,
- context: context
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-else-empty-line-before/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-else-empty-line-before/index.js
deleted file mode 100644
index 875cfd4..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-else-empty-line-before/index.js
+++ /dev/null
@@ -1,57 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _utils = require("../../utils");
-
-var _stylelint = require("stylelint");
-
-var ruleName = (0, _utils.namespace)("at-else-empty-line-before");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: "Unexpected empty line before @else"
-});
-
-exports.messages = messages;
-
-function _default(expectation, _, context) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["never"]
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules(function (atrule) {
- if (atrule.name !== "else") {
- return;
- } // Don't need to ignore "the first rule in a stylesheet", etc, cases
- // because @else should always go after @if
-
-
- if (!(0, _utils.hasEmptyLine)(atrule.raws.before)) {
- return;
- }
-
- if (context.fix) {
- atrule.raws.before = " ";
- return;
- }
-
- _stylelint.utils.report({
- message: messages.rejected,
- node: atrule,
- result: result,
- ruleName: ruleName
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-else-if-parentheses-space-before/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-else-if-parentheses-space-before/index.js
deleted file mode 100644
index e085765..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-else-if-parentheses-space-before/index.js
+++ /dev/null
@@ -1,65 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("at-else-if-parentheses-space-before");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejectedBefore: function rejectedBefore() {
- return "Unexpected whitespace before parentheses in else-if declaration";
- },
- expectedBefore: function expectedBefore() {
- return "Expected a single space before parentheses in else-if declaration";
- }
-});
-
-exports.messages = messages;
-
-function _default(value, _, context) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: value,
- possible: ["always", "never"]
- });
-
- if (!validOptions) {
- return;
- }
-
- var match = /^if\s*?\(/;
- var replacement = value === "always" ? "if (" : "if(";
- var checker = (0, _utils.whitespaceChecker)("space", value, messages).before;
- root.walkAtRules("else", function (decl) {
- // return early if the else-if statement is not surrounded by parentheses
- if (!match.test(decl.params)) {
- return;
- }
-
- if (context.fix) {
- decl.params = decl.params.replace(match, replacement);
- }
-
- checker({
- source: decl.params,
- index: decl.params.indexOf("("),
- err: function err(message) {
- return _stylelint.utils.report({
- message: message,
- node: decl,
- result: result,
- ruleName: ruleName
- });
- }
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-extend-no-missing-placeholder/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-extend-no-missing-placeholder/index.js
deleted file mode 100644
index ca6d679..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-extend-no-missing-placeholder/index.js
+++ /dev/null
@@ -1,46 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("at-extend-no-missing-placeholder");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: "Expected a placeholder selector (e.g. %placeholder) to be used in @extend"
-});
-
-exports.messages = messages;
-
-function _default(actual) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: actual
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules("extend", function (atrule) {
- var isPlaceholder = atrule.params.trim()[0] === "%";
- var isInterpolation = /^#{.+}/.test(atrule.params.trim());
-
- if (!isPlaceholder && !isInterpolation) {
- _stylelint.utils.report({
- ruleName: ruleName,
- result: result,
- node: atrule,
- message: messages.rejected
- });
- }
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-function-named-arguments/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-function-named-arguments/index.js
deleted file mode 100644
index 49053f5..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-function-named-arguments/index.js
+++ /dev/null
@@ -1,115 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _lodash = require("lodash");
-
-var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-var ruleName = (0, _utils.namespace)("at-function-named-arguments");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: "Expected a named parameter to be used in function call",
- rejected: "Unexpected a named parameter in function call"
-});
-
-exports.messages = messages;
-var isScssVarRegExp = /^\$\S*/;
-
-function _default(expectation, options) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always", "never"]
- }, {
- actual: options,
- possible: {
- ignore: ["single-argument"],
- ignoreFunctions: [_lodash.isString]
- },
- optional: true
- });
-
- if (!validOptions) {
- return;
- }
-
- var shouldIgnoreSingleArgument = (0, _utils.optionsHaveIgnored)(options, "single-argument");
- root.walkDecls(function (decl) {
- (0, _postcssValueParser["default"])(decl.value).walk(function (node) {
- if (node.type !== "function" || (0, _utils.isNativeCssFunction)(node.value) || node.value === "") {
- return;
- }
-
- var hasFuncIgnored = options && options.ignoreFunctions && options.ignoreFunctions.some(function (f) {
- var isRegex = /^\/.*\//.test(f);
-
- if (!isRegex) {
- return f === node.value;
- }
-
- var parts = f.split("/");
- return new RegExp(parts[1], parts[2] || "").test(node.value);
- });
-
- if (hasFuncIgnored) {
- return;
- }
-
- var args = (0, _utils.parseFunctionArguments)(_postcssValueParser["default"].stringify(node));
- var isSingleArgument = args.length === 1;
-
- if (isSingleArgument && shouldIgnoreSingleArgument) {
- return;
- }
-
- args.forEach(function (arg) {
- switch (expectation) {
- case "never":
- {
- if (!arg.key) {
- return;
- }
-
- _stylelint.utils.report({
- message: messages.rejected,
- node: decl,
- result: result,
- ruleName: ruleName
- });
-
- break;
- }
-
- case "always":
- {
- if (arg.key && isScssVarRegExp.test(arg.key)) {
- return;
- }
-
- _stylelint.utils.report({
- message: messages.expected,
- node: decl,
- result: result,
- ruleName: ruleName
- });
-
- break;
- }
- }
- });
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-function-parentheses-space-before/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-function-parentheses-space-before/index.js
deleted file mode 100644
index 4b9d750..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-function-parentheses-space-before/index.js
+++ /dev/null
@@ -1,61 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("at-function-parentheses-space-before");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejectedBefore: function rejectedBefore() {
- return "Unexpected whitespace before parentheses in function declaration";
- },
- expectedBefore: function expectedBefore() {
- return "Expected a single space before parentheses in function declaration";
- }
-});
-
-exports.messages = messages;
-
-function _default(value, _, context) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: value,
- possible: ["always", "never"]
- });
-
- if (!validOptions) {
- return;
- }
-
- var match = /^([\w-]+)\s*?\(/;
- var replacement = value === "always" ? "$1 (" : "$1(";
- var checker = (0, _utils.whitespaceChecker)("space", value, messages).before;
- root.walkAtRules("function", function (decl) {
- if (context.fix) {
- decl.params = decl.params.replace(match, replacement);
- return;
- }
-
- checker({
- source: decl.params,
- index: decl.params.indexOf("("),
- err: function err(message) {
- return _stylelint.utils.report({
- message: message,
- node: decl,
- result: result,
- ruleName: ruleName
- });
- }
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-function-pattern/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-function-pattern/index.js
deleted file mode 100644
index e922680..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-function-pattern/index.js
+++ /dev/null
@@ -1,56 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _lodash = require("lodash");
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("at-function-pattern");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: "Expected @function name to match specified pattern"
-});
-
-exports.messages = messages;
-
-function _default(pattern) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: pattern,
- possible: [_lodash.isRegExp, _lodash.isString]
- });
-
- if (!validOptions) {
- return;
- }
-
- var regexpPattern = (0, _lodash.isString)(pattern) ? new RegExp(pattern) : pattern;
- root.walkAtRules(function (decl) {
- if (decl.name !== "function") {
- return;
- } // Stripping the function of its arguments
-
-
- var funcName = decl.params.replace(/(\s*?)\((?:\s|\S)*\)/g, "");
-
- if (regexpPattern.test(funcName)) {
- return;
- }
-
- _stylelint.utils.report({
- message: messages.expected,
- node: decl,
- result: result,
- ruleName: ruleName
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-if-closing-brace-newline-after/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-if-closing-brace-newline-after/index.js
deleted file mode 100644
index 767eabf..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-if-closing-brace-newline-after/index.js
+++ /dev/null
@@ -1,124 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.sassConditionalBraceNLAfterChecker = sassConditionalBraceNLAfterChecker;
-exports.messages = exports.ruleName = void 0;
-
-var _utils = require("../../utils");
-
-var _stylelint = require("stylelint");
-
-var _lodash = require("lodash");
-
-var ruleName = (0, _utils.namespace)("at-if-closing-brace-newline-after");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: 'Expected newline after "}" of @if statement',
- rejected: 'Unexpected newline after "}" of @if statement'
-});
-
-exports.messages = messages;
-
-function _default(expectation, options, context) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always-last-in-chain"]
- }, {
- actual: options,
- possible: {
- disableFix: _lodash.isBoolean
- },
- optional: true
- });
-
- if (!validOptions) {
- return;
- }
-
- sassConditionalBraceNLAfterChecker({
- root: root,
- result: result,
- ruleName: ruleName,
- atRuleName: "if",
- expectation: expectation,
- messages: messages,
- context: context,
- options: options
- });
- };
-}
-/**
- * The core logic for this rule. Can be imported by other rules with similar
- * logic, namely at-else-closing-brace-newline-after
- *
- * @param {Object} args -- Named arguments object
- * @param {PostCSS root} args.root
- * @param {PostCSS result} args.result
- * @param {String ruleName} args.ruleName - needed for `report` function
- * @param {String} args.atRuleName - the name of the at-rule to be checked, e.g. "if", "else"
- * @param {Object} args.messages - returned by stylelint.utils.ruleMessages
- * @return {undefined}
- */
-
-
-function sassConditionalBraceNLAfterChecker(_ref) {
- var root = _ref.root,
- result = _ref.result,
- ruleName = _ref.ruleName,
- atRuleName = _ref.atRuleName,
- expectation = _ref.expectation,
- messages = _ref.messages,
- context = _ref.context,
- options = _ref.options;
- var shouldFix = context.fix && (!options || options.disableFix !== true);
-
- function complain(node, message, index, fixValue) {
- if (shouldFix) {
- node.next().raws.before = fixValue;
- return;
- }
-
- _stylelint.utils.report({
- result: result,
- ruleName: ruleName,
- node: node,
- message: message,
- index: index
- });
- }
-
- root.walkAtRules(function (atrule) {
- // Do nothing if it's not an @if
- if (atrule.name !== atRuleName) {
- return;
- }
-
- var nextNode = atrule.next();
-
- if (!nextNode) {
- return;
- }
-
- var nextBefore = nextNode.raws.before;
- var hasNewLinesBeforeNext = nextBefore && !(0, _utils.isSingleLineString)(nextBefore);
- var reportIndex = atrule.toString().length;
-
- if (expectation === "always-last-in-chain") {
- // If followed by @else, no newline is needed
- if (nextNode.type === "atrule" && (nextNode.name === "else" || nextNode.name === "elseif")) {
- if (hasNewLinesBeforeNext) {
- complain(atrule, messages.rejected, reportIndex, " ");
- }
- } else {
- if (!hasNewLinesBeforeNext) {
- complain(atrule, messages.expected, reportIndex, context.newline);
- }
- }
- }
- });
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-if-closing-brace-space-after/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-if-closing-brace-space-after/index.js
deleted file mode 100644
index 4950e1b..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-if-closing-brace-space-after/index.js
+++ /dev/null
@@ -1,105 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.sassConditionalBraceSpaceAfterChecker = sassConditionalBraceSpaceAfterChecker;
-exports.messages = exports.ruleName = void 0;
-
-var _utils = require("../../utils");
-
-var _stylelint = require("stylelint");
-
-var ruleName = (0, _utils.namespace)("at-if-closing-brace-space-after");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: 'Expected single space after "}" of @if statement',
- rejected: 'Unexpected space after "}" of @if statement'
-});
-
-exports.messages = messages;
-
-function _default(expectation, _, context) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always-intermediate", "never-intermediate"]
- });
-
- if (!validOptions) {
- return;
- }
-
- sassConditionalBraceSpaceAfterChecker({
- root: root,
- result: result,
- ruleName: ruleName,
- atRuleName: "if",
- expectation: expectation,
- messages: messages,
- context: context
- });
- };
-}
-/**
- * The core logic for this rule. Can be imported by other rules with similar
- * logic, namely at-else-closing-brace-space-after
- *
- * @param {Object} args -- Named arguments object
- * @param {PostCSS root} args.root
- * @param {PostCSS result} args.result
- * @param {String ruleName} args.ruleName - needed for `report` function
- * @param {String} args.atRuleName - the name of the at-rule to be checked, e.g. "if", "else"
- * @param {Object} args.messages - returned by stylelint.utils.ruleMessages
- * @return {undefined}
- */
-
-
-function sassConditionalBraceSpaceAfterChecker(_ref) {
- var root = _ref.root,
- result = _ref.result,
- ruleName = _ref.ruleName,
- atRuleName = _ref.atRuleName,
- expectation = _ref.expectation,
- messages = _ref.messages,
- context = _ref.context;
-
- function complain(node, message, index, fixValue) {
- if (context.fix) {
- node.next().raws.before = fixValue;
- return;
- }
-
- _stylelint.utils.report({
- result: result,
- ruleName: ruleName,
- node: node,
- message: message,
- index: index
- });
- }
-
- root.walkAtRules(function (atrule) {
- // Do nothing if it's not an @if
- if (atrule.name !== atRuleName) {
- return;
- }
-
- var nextNode = atrule.next();
- var hasSpaceAfter = nextNode && nextNode.raws.before === " ";
- var hasWhiteSpaceAfter = nextNode && nextNode.raws.before !== "";
- var reportIndex = atrule.toString().length; // When followed by an @else
-
- if (nextNode && nextNode.type === "atrule" && nextNode.name === "else") {
- // A single space is needed
- if (expectation === "always-intermediate" && !hasSpaceAfter) {
- complain(atrule, messages.expected, reportIndex, " ");
- } else if (expectation === "never-intermediate" && hasWhiteSpaceAfter) {
- // No whitespace is needed
- complain(atrule, messages.rejected, reportIndex, "");
- }
- }
- });
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-if-no-null/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-if-no-null/index.js
deleted file mode 100644
index 95e4933..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-if-no-null/index.js
+++ /dev/null
@@ -1,61 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _utils = require("../../utils");
-
-var _stylelint = require("stylelint");
-
-var ruleName = (0, _utils.namespace)("at-if-no-null");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- equals_null: "Expected @if not statement rather than @if statement == null",
- not_equals_null: "Expected @if statement rather than @if statement != null"
-});
-
-exports.messages = messages;
-
-function _default(expectation) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules(function (atrule) {
- // Do nothing if it's not an @if
- if (atrule.name !== "if") {
- return;
- } // If rule != null and (expr), skip
-
-
- if (atrule.params.match(/\(?[ \t]*.* != null and .*\)?/)) {
- return;
- }
-
- if (atrule.params.match(/\(?[ \t]*.* == null[ \t]*\)?/)) {
- _stylelint.utils.report({
- message: messages.equals_null,
- node: atrule,
- result: result,
- ruleName: ruleName
- });
- } else if (atrule.params.match(/\(?[ \t]*.* != null[ \t]*\)?/)) {
- _stylelint.utils.report({
- message: messages.not_equals_null,
- node: atrule,
- result: result,
- ruleName: ruleName
- });
- }
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-import-no-partial-leading-underscore/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-import-no-partial-leading-underscore/index.js
deleted file mode 100644
index cdc82a7..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-import-no-partial-leading-underscore/index.js
+++ /dev/null
@@ -1,60 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("at-import-no-partial-leading-underscore");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: "Unexpected leading underscore in imported partial name"
-});
-
-exports.messages = messages;
-
-function _default(actual) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: actual
- });
-
- if (!validOptions) {
- return;
- }
-
- function checkPathForUnderscore(path, decl) {
- // Stripping trailing quotes and whitespaces, if any
- var pathStripped = path.replace(/^\s*?("|')\s*/, "").replace(/\s*("|')\s*?$/, ""); // Searching a _ at the start of filename
-
- if (pathStripped.search(/(?:^|\/|\\)_[^/]+$/) === -1) {
- return;
- } // Skipping importing CSS: url(), ".css", URI with a protocol, media
-
-
- if (pathStripped.slice(0, 4) === "url(" || pathStripped.slice(-4) === ".css" || pathStripped.search("//") !== -1 || pathStripped.search(/(?:\s|[,)"'])\w+$/) !== -1) {
- return;
- }
-
- _stylelint.utils.report({
- message: messages.expected,
- node: decl,
- result: result,
- ruleName: ruleName
- });
- }
-
- root.walkAtRules("import", function (decl) {
- // Processing comma-separated lists of import paths
- decl.params.split(",").forEach(function (path) {
- checkPathForUnderscore(path, decl);
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-import-partial-extension-blacklist/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-import-partial-extension-blacklist/index.js
deleted file mode 100644
index 80ea0f8..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-import-partial-extension-blacklist/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _lodash = require("lodash");
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var _path = _interopRequireDefault(require("path"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-var ruleName = (0, _utils.namespace)("at-import-partial-extension-blacklist");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: function rejected(ext) {
- return "Unexpected extension \".".concat(ext, "\" in imported partial name");
- }
-});
-
-exports.messages = messages;
-
-function _default(blacklistOption) {
- var blacklist = [].concat(blacklistOption);
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: blacklistOption,
- possible: [_lodash.isString, _lodash.isRegExp]
- });
-
- if (!validOptions) {
- return;
- }
-
- function checkPathForUnderscore(path, decl) {
- // Stripping trailing quotes and whitespaces, if any
- var pathStripped = path.replace(/^\s*?("|')\s*/, "").replace(/\s*("|')\s*?$/, "");
-
- var extension = _path["default"].extname(pathStripped).slice(1); // Save this separately to be able to pass the original string to report()
-
-
- var extensionNormalized = extension.toLowerCase(); // If the extension is empty
-
- if (!extension) {
- return;
- } // Skipping importing CSS: url(), ".css", URI with a protocol, media
-
-
- if (pathStripped.slice(0, 4) === "url(" || pathStripped.slice(-4) === ".css" || pathStripped.search("//") !== -1 || pathStripped.search(/(?:\s|[,)"'])\w+$/) !== -1) {
- return;
- }
-
- blacklist.forEach(function (ext) {
- if ((0, _lodash.isString)(ext) && extensionNormalized === ext || (0, _lodash.isRegExp)(ext) && extensionNormalized.search(ext) !== -1) {
- _stylelint.utils.report({
- message: messages.rejected(extension),
- node: decl,
- word: extension,
- result: result,
- ruleName: ruleName
- });
- }
- });
- }
-
- root.walkAtRules("import", function (atRule) {
- // Processing comma-separated lists of import paths
- atRule.params.split(",").forEach(function (path) {
- checkPathForUnderscore(path, atRule);
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-import-partial-extension-whitelist/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-import-partial-extension-whitelist/index.js
deleted file mode 100644
index e725f2c..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-import-partial-extension-whitelist/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _lodash = require("lodash");
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var _path = _interopRequireDefault(require("path"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-var ruleName = (0, _utils.namespace)("at-import-partial-extension-whitelist");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: function rejected(ext) {
- return "Unexpected extension \".".concat(ext, "\" in imported partial name");
- }
-});
-
-exports.messages = messages;
-
-function _default(whitelistOption) {
- var whitelist = [].concat(whitelistOption);
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: whitelistOption,
- possible: [_lodash.isString, _lodash.isRegExp]
- });
-
- if (!validOptions) {
- return;
- }
-
- function checkPathForUnderscore(path, decl) {
- // Stripping trailing quotes and whitespaces, if any
- var pathStripped = path.replace(/^\s*?("|')\s*/, "").replace(/\s*("|')\s*?$/, "");
-
- var extension = _path["default"].extname(pathStripped).slice(1); // Save this separately to be able to pass the original string to report()
-
-
- var extensionNormalized = extension.toLowerCase(); // If the extension is empty
-
- if (!extension) {
- return;
- } // Skipping importing CSS: url(), ".css", URI with a protocol, media
-
-
- if (pathStripped.slice(0, 4) === "url(" || pathStripped.slice(-4) === ".css" || pathStripped.search("//") !== -1 || pathStripped.search(/(?:\s|[,)"'])\w+$/) !== -1) {
- return;
- }
-
- if (whitelist.some(function (ext) {
- return (0, _lodash.isString)(ext) && extensionNormalized === ext || (0, _lodash.isRegExp)(ext) && extensionNormalized.search(ext) !== -1;
- })) {
- return;
- }
-
- _stylelint.utils.report({
- message: messages.rejected(extension),
- node: decl,
- word: extension,
- result: result,
- ruleName: ruleName
- });
- }
-
- root.walkAtRules("import", function (atRule) {
- // Processing comma-separated lists of import paths
- atRule.params.split(",").forEach(function (path) {
- checkPathForUnderscore(path, atRule);
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-import-partial-extension/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-import-partial-extension/index.js
deleted file mode 100644
index 9d86967..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-import-partial-extension/index.js
+++ /dev/null
@@ -1,85 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _path = _interopRequireDefault(require("path"));
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-var ruleName = (0, _utils.namespace)("at-import-partial-extension");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: "Expected @import to have an extension",
- rejected: function rejected(ext) {
- return "Unexpected extension \".".concat(ext, "\" in @import");
- }
-}); // https://drafts.csswg.org/mediaqueries/#media-types
-
-
-exports.messages = messages;
-var mediaQueryTypes = ["all", "print", "screen", "speech", "tv", "tty", "projection", "handheld", "braille", "embossed", "aural"];
-var mediaQueryTypesRE = new RegExp("(".concat(mediaQueryTypes.join("|"), ")$"), "i");
-
-var stripPath = function stripPath(path) {
- return path.replace(/^\s*?("|')\s*/, "").replace(/\s*("|')\s*?$/, "");
-};
-
-function _default(expectation) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always", "never"]
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules("import", function (decl) {
- var paths = decl.params.split(/["']\s*,/).filter(function (path) {
- return !mediaQueryTypesRE.test(path.trim());
- }); // Processing comma-separated lists of import paths
-
- paths.forEach(function (path) {
- // Stripping trailing quotes and whitespaces, if any
- var pathStripped = stripPath(path); // Skipping importing CSS: url(), ".css", URI with a protocol
-
- if (pathStripped.slice(0, 4) === "url(" || pathStripped.slice(-4) === ".css" || pathStripped.search("//") !== -1) {
- return;
- }
-
- var extension = _path["default"].extname(pathStripped).slice(1);
-
- if (!extension && expectation === "always") {
- _stylelint.utils.report({
- message: messages.expected,
- node: decl,
- result: result,
- ruleName: ruleName
- });
-
- return;
- }
-
- if (extension && expectation === "never") {
- _stylelint.utils.report({
- message: messages.rejected(extension),
- node: decl,
- word: extension,
- result: result,
- ruleName: ruleName
- });
- }
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-mixin-argumentless-call-parentheses/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-mixin-argumentless-call-parentheses/index.js
deleted file mode 100644
index 58ffbf0..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-mixin-argumentless-call-parentheses/index.js
+++ /dev/null
@@ -1,69 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("at-mixin-argumentless-call-parentheses");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: function expected(mixin) {
- return "Expected parentheses in mixin \"".concat(mixin, "\" call");
- },
- rejected: function rejected(mixin) {
- return "Unexpected parentheses in argumentless mixin \"".concat(mixin, "\" call");
- }
-});
-
-exports.messages = messages;
-
-function _default(value, _, context) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: value,
- possible: ["always", "never"]
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules("include", function (mixinCall) {
- // If it is "No parens in argumentless calls"
- if (value === "never" && mixinCall.params.search(/\(\s*?\)\s*?$/) === -1) {
- return;
- } // If it is "Always use parens"
-
-
- if (value === "always" && mixinCall.params.search(/\(/) !== -1) {
- return;
- }
-
- if (context.fix) {
- if (value === "always") {
- mixinCall.params = "".concat(mixinCall.params, " ()");
- } else {
- mixinCall.params = mixinCall.params.replace(/\s*\([\s\S]*?\)$/, "");
- }
-
- return;
- }
-
- var mixinName = /\s*(\S*?)\s*(?:\(|$)/.exec(mixinCall.params)[1];
-
- _stylelint.utils.report({
- message: messages[value === "never" ? "rejected" : "expected"](mixinName),
- node: mixinCall,
- result: result,
- ruleName: ruleName
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-mixin-named-arguments/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-mixin-named-arguments/index.js
deleted file mode 100644
index 4ba96e5..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-mixin-named-arguments/index.js
+++ /dev/null
@@ -1,118 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
-
-function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
-
-function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
-
-function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
-
-var ruleName = (0, _utils.namespace)("at-mixin-named-arguments");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: "Expected a named parameter to be used in at-include call",
- rejected: "Unexpected a named parameter in at-include call"
-});
-
-exports.messages = messages;
-var hasArgumentsRegExp = /\((.*)\)$/;
-var isScssVarRegExp = /^\$\S*/;
-
-function _default(expectation, options) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always", "never"]
- }, {
- actual: options,
- possible: {
- ignore: ["single-argument"]
- },
- optional: true
- });
-
- if (!validOptions) {
- return;
- }
-
- var shouldIgnoreSingleArgument = (0, _utils.optionsHaveIgnored)(options, "single-argument");
- root.walkAtRules("include", function (atRule) {
- var argsString = atRule.params.replace(/\n/g, " ").match(hasArgumentsRegExp); // Ignore @include that does not contain arguments.
-
- if (!argsString || argsString.index === -1 || argsString[0].length === 2) {
- return;
- }
-
- var args = argsString[1] // Create array of arguments.
- .split(",") // Create a key-value array for every argument.
- .map(function (argsString) {
- return argsString.split(":").map(function (argsKeyValuePair) {
- return argsKeyValuePair.trim();
- });
- }).reduce(function (resultArray, keyValuePair) {
- var pair = {
- value: keyValuePair[1] || keyValuePair[0]
- };
-
- if (keyValuePair[1]) {
- pair.key = keyValuePair[0];
- }
-
- return [].concat(_toConsumableArray(resultArray), [pair]);
- }, []);
- var isSingleArgument = args.length === 1;
-
- if (isSingleArgument && shouldIgnoreSingleArgument) {
- return;
- }
-
- args.forEach(function (arg) {
- switch (expectation) {
- case "never":
- {
- if (!arg.key) {
- return;
- }
-
- _stylelint.utils.report({
- message: messages.rejected,
- node: atRule,
- result: result,
- ruleName: ruleName
- });
-
- break;
- }
-
- case "always":
- {
- if (arg.key && isScssVarRegExp.test(arg.key)) {
- return;
- }
-
- _stylelint.utils.report({
- message: messages.expected,
- node: atRule,
- result: result,
- ruleName: ruleName
- });
-
- break;
- }
- }
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-mixin-parentheses-space-before/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-mixin-parentheses-space-before/index.js
deleted file mode 100644
index bc29a60..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-mixin-parentheses-space-before/index.js
+++ /dev/null
@@ -1,61 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("at-mixin-parentheses-space-before");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejectedBefore: function rejectedBefore() {
- return "Unexpected whitespace before parentheses in mixin declaration";
- },
- expectedBefore: function expectedBefore() {
- return "Expected a single space before parentheses in mixin declaration";
- }
-});
-
-exports.messages = messages;
-
-function _default(value, _, context) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: value,
- possible: ["always", "never"]
- });
-
- if (!validOptions) {
- return;
- }
-
- var match = /^([\w-]+)\s*?\(/;
- var replacement = value === "always" ? "$1 (" : "$1(";
- var checker = (0, _utils.whitespaceChecker)("space", value, messages).before;
- root.walkAtRules("mixin", function (decl) {
- if (context.fix) {
- decl.params = decl.params.replace(match, replacement);
- return;
- }
-
- checker({
- source: decl.params,
- index: decl.params.indexOf("("),
- err: function err(message) {
- return _stylelint.utils.report({
- message: message,
- node: decl,
- result: result,
- ruleName: ruleName
- });
- }
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-mixin-pattern/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-mixin-pattern/index.js
deleted file mode 100644
index c5fe357..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-mixin-pattern/index.js
+++ /dev/null
@@ -1,56 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _lodash = require("lodash");
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("at-mixin-pattern");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: "Expected @mixin name to match specified pattern"
-});
-
-exports.messages = messages;
-
-function _default(pattern) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: pattern,
- possible: [_lodash.isRegExp, _lodash.isString]
- });
-
- if (!validOptions) {
- return;
- }
-
- var regexpPattern = (0, _lodash.isString)(pattern) ? new RegExp(pattern) : pattern;
- root.walkAtRules(function (decl) {
- if (decl.name !== "mixin") {
- return;
- } // Stripping the mixin of its arguments
-
-
- var mixinName = decl.params.replace(/(\s*?)\((?:\s|\S)*\)/g, "");
-
- if (regexpPattern.test(mixinName)) {
- return;
- }
-
- _stylelint.utils.report({
- message: messages.expected,
- node: decl,
- result: result,
- ruleName: ruleName
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-rule-conditional-no-parentheses/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-rule-conditional-no-parentheses/index.js
deleted file mode 100644
index 95e7728..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-rule-conditional-no-parentheses/index.js
+++ /dev/null
@@ -1,86 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
-
-function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
-
-function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
-
-function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
-
-var ruleName = (0, _utils.namespace)("at-rule-conditional-no-parentheses");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: "Unexpected () used to surround statements for @-rules"
-}); // postcss picks up else-if as else.
-
-
-exports.messages = messages;
-var conditional_rules = ["if", "while", "else"];
-
-function report(atrule, result) {
- _stylelint.utils.report({
- message: messages.rejected,
- node: atrule,
- result: result,
- ruleName: ruleName
- });
-}
-
-function fix(atrule) {
- var regex = /(if)? ?\((.*)\)/; // 2 regex groups: 'if ' and cond.
-
- var groups = atrule.params.match(regex).slice(1);
- atrule.params = _toConsumableArray(new Set(groups)).join(" ");
-}
-
-function _default(primary, _unused, context) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: primary
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules(function (atrule) {
- // Check if this is a conditional rule.
- if (!conditional_rules.includes(atrule.name)) {
- return;
- } // Else uses a different regex
- // params are of format "`if (cond)` or `if cond`
- // instead of `(cond)` or `cond`"
-
-
- if (atrule.name === "else") {
- if (atrule.params.match(/ ?if ?\(.*\) ?$/)) {
- if (context.fix) {
- fix(atrule);
- } else {
- report(atrule, result);
- }
- }
- } else {
- if (atrule.params.trim().match(/^\(.*\)$/)) {
- if (context.fix) {
- fix(atrule);
- } else {
- report(atrule, result);
- }
- }
- }
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/at-rule-no-unknown/index.js b/assets/node_modules/stylelint-scss/dist/rules/at-rule-no-unknown/index.js
deleted file mode 100644
index 9a833c1..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/at-rule-no-unknown/index.js
+++ /dev/null
@@ -1,67 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _lodash = require("lodash");
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var sassAtRules = ["at-root", "content", "debug", "each", "else", "else if", "error", "extend", "for", "forward", "function", "if", "import", "include", "media", "mixin", "return", "use", "warn", "while"];
-var ruleToCheckAgainst = "at-rule-no-unknown";
-var ruleName = (0, _utils.namespace)(ruleToCheckAgainst);
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: _stylelint.rules[ruleToCheckAgainst].messages.rejected
-});
-
-exports.messages = messages;
-
-function _default(primaryOption, secondaryOptions) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: primaryOption
- }, {
- actual: secondaryOptions,
- possible: {
- ignoreAtRules: [_lodash.isRegExp, _lodash.isString]
- },
- optional: true
- });
-
- if (!validOptions) {
- return;
- }
-
- var optionsAtRules = secondaryOptions && secondaryOptions.ignoreAtRules;
- var ignoreAtRules = sassAtRules.concat(optionsAtRules || []);
- var defaultedOptions = Object.assign({}, secondaryOptions, {
- ignoreAtRules: ignoreAtRules
- });
-
- _stylelint.utils.checkAgainstRule({
- ruleName: ruleToCheckAgainst,
- ruleSettings: [primaryOption, defaultedOptions],
- root: root
- }, function (warning) {
- var name = warning.node.name;
-
- if (!ignoreAtRules.includes(name)) {
- _stylelint.utils.report({
- message: messages.rejected("@".concat(name)),
- ruleName: ruleName,
- result: result,
- node: warning.node,
- line: warning.line,
- column: warning.column
- });
- }
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/comment-no-loud/index.js b/assets/node_modules/stylelint-scss/dist/rules/comment-no-loud/index.js
deleted file mode 100644
index c2bec06..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/comment-no-loud/index.js
+++ /dev/null
@@ -1,50 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("comment-no-loud");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: "Expected // for comments instead of /*"
-});
-
-exports.messages = messages;
-
-function rule(primary) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: primary
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkComments(function (comment) {
- if (isLoudComment(comment)) {
- _stylelint.utils.report({
- message: messages.expected,
- node: comment,
- result: result,
- ruleName: ruleName
- });
- }
- });
- };
-}
-
-function isLoudComment(comment) {
- var regex = new RegExp(/^[ \t\n]*\/\*/);
- return regex.test(comment.source.input.css);
-}
-
-var _default = rule;
-exports["default"] = _default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/declaration-nested-properties-no-divided-groups/index.js b/assets/node_modules/stylelint-scss/dist/rules/declaration-nested-properties-no-divided-groups/index.js
deleted file mode 100644
index 680335d..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/declaration-nested-properties-no-divided-groups/index.js
+++ /dev/null
@@ -1,76 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var hasOwnProp = Object.prototype.hasOwnProperty;
-var ruleName = (0, _utils.namespace)("declaration-nested-properties-no-divided-groups");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: function expected(prop) {
- return "Expected all nested properties of \"".concat(prop, "\" namespace to be in one nested group");
- }
-});
-
-exports.messages = messages;
-
-function _default(expectation) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walk(function (item) {
- if (item.type !== "rule" && item.type !== "atrule") {
- return;
- }
-
- var nestedGroups = {}; // Find all nested property groups
-
- item.each(function (decl) {
- if (decl.type !== "rule") {
- return;
- }
-
- var testForProp = (0, _utils.parseNestedPropRoot)(decl.selector);
-
- if (testForProp && testForProp.propName !== undefined) {
- var ns = testForProp.propName.value;
-
- if (!hasOwnProp.call(nestedGroups, ns)) {
- nestedGroups[ns] = [];
- }
-
- nestedGroups[ns].push(decl);
- }
- });
- Object.keys(nestedGroups).forEach(function (namespace) {
- // Only warn if there are more than one nested groups with equal namespaces
- if (nestedGroups[namespace].length === 1) {
- return;
- }
-
- nestedGroups[namespace].forEach(function (group) {
- _stylelint.utils.report({
- message: messages.expected(namespace),
- node: group,
- result: result,
- ruleName: ruleName
- });
- });
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/declaration-nested-properties/index.js b/assets/node_modules/stylelint-scss/dist/rules/declaration-nested-properties/index.js
deleted file mode 100644
index efe8c48..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/declaration-nested-properties/index.js
+++ /dev/null
@@ -1,154 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var hasOwnProp = Object.prototype.hasOwnProperty;
-var ruleName = (0, _utils.namespace)("declaration-nested-properties");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: function expected(prop) {
- return "Expected property \"".concat(prop, "\" to be in a nested form");
- },
- rejected: function rejected(prop) {
- return "Unexpected nested property \"".concat(prop, "\"");
- }
-});
-
-exports.messages = messages;
-
-function _default(expectation, options) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always", "never"]
- }, {
- actual: options,
- possible: {
- except: ["only-of-namespace"]
- },
- optional: true
- });
-
- if (!validOptions) {
- return;
- }
-
- if (expectation === "always") {
- root.walk(function (item) {
- if (item.type !== "rule" && item.type !== "atrule") {
- return;
- }
-
- var warningCandidates = {};
- item.each(function (decl) {
- var prop = decl.prop,
- type = decl.type,
- selector = decl.selector; // Looking for namespaced non-nested properties
- // Namespaced prop is basically a prop with a `-` in a name, e.g. `margin-top`
-
- if (type === "decl") {
- if (!(0, _utils.isStandardSyntaxProperty)(prop)) {
- return;
- } // Add simple namespaced prop decls to warningCandidates.ns
- // (prop names with browser prefixes are ignored)
-
-
- var seekNamespace = /^([a-zA-Z0-9]+)-/.exec(prop);
-
- if (seekNamespace && seekNamespace[1]) {
- var ns = seekNamespace[1];
-
- if (!hasOwnProp.call(warningCandidates, ns)) {
- warningCandidates[ns] = [];
- }
-
- warningCandidates[ns].push({
- node: decl
- });
- }
- } // Nested props, `prop: [value] { <nested decls> }`
-
-
- if (type === "rule") {
- // `background:red {` - selector;
- // `background: red {` - nested prop; space is decisive here
- var testForProp = (0, _utils.parseNestedPropRoot)(selector);
-
- if (testForProp && testForProp.propName !== undefined) {
- var _ns = testForProp.propName.value;
-
- if (!hasOwnProp.call(warningCandidates, _ns)) {
- warningCandidates[_ns] = [];
- }
-
- warningCandidates[_ns].push({
- node: decl,
- nested: true
- });
- }
- }
- }); // Now check if the found properties deserve warnings
-
- Object.keys(warningCandidates).forEach(function (namespace) {
- var exceptIfOnlyOfNs = (0, _utils.optionsHaveException)(options, "only-of-namespace");
- var moreThanOneProp = warningCandidates[namespace].length > 1;
- warningCandidates[namespace].forEach(function (candidate) {
- if (candidate.nested === true) {
- if (exceptIfOnlyOfNs) {
- // If there is only one prop inside a nested prop - warn (reverse "always")
- if (candidate.nested === true && candidate.node.nodes.length === 1) {
- _stylelint.utils.report({
- message: messages.rejected(namespace),
- node: candidate.node,
- result: result,
- ruleName: ruleName
- });
- }
- }
- } else {
- // Don't warn on non-nested namespaced props if there are
- // less than 2 of them, and except: "only-of-namespace" is set
- if (exceptIfOnlyOfNs && !moreThanOneProp) {
- return;
- }
-
- _stylelint.utils.report({
- message: messages.expected(candidate.node.prop),
- node: candidate.node,
- result: result,
- ruleName: ruleName
- });
- }
- });
- });
- });
- } else if (expectation === "never") {
- root.walk(function (item) {
- // Just check if there are ANY nested props
- if (item.type === "rule") {
- // `background:red {` - selector;
- // `background: red {` - nested prop; space is decisive here
- var testForProp = (0, _utils.parseNestedPropRoot)(item.selector);
-
- if (testForProp && testForProp.propName !== undefined) {
- _stylelint.utils.report({
- message: messages.rejected(testForProp.propName.value),
- result: result,
- ruleName: ruleName,
- node: item
- });
- }
- }
- });
- }
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/dimension-no-non-numeric-values/index.js b/assets/node_modules/stylelint-scss/dist/rules/dimension-no-non-numeric-values/index.js
deleted file mode 100644
index be962f9..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/dimension-no-non-numeric-values/index.js
+++ /dev/null
@@ -1,102 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = rule;
-exports.units = exports.messages = exports.ruleName = void 0;
-
-var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-var ruleName = (0, _utils.namespace)("dimension-no-non-numeric-values");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: function rejected(unit) {
- return "Expected \"$value * 1".concat(unit, "\" instead of \"#{$value}").concat(unit, "\". Consider writing \"value\" in terms of ").concat(unit, " originally.");
- }
-});
-
-exports.messages = messages;
-var units = [// Font-relative lengths:
-// https://www.w3.org/TR/css-values-4/#font-relative-lengths
-"em", "ex", "cap", "ch", "ic", "rem", "lh", "rlh", // Viewport-relative lengths:
-// https://www.w3.org/TR/css-values-4/#viewport-relative-lengths
-"vw", "vh", "vi", "vb", "vmin", "vmax", // Absolute lengths:
-// https://www.w3.org/TR/css-values-4/#absolute-lengths
-"cm", "mm", "Q", "in", "pc", "pt", "px", // Angle units:
-// https://www.w3.org/TR/css-values-4/#angles
-"deg", "grad", "rad", "turn", // Duration units:
-// https://www.w3.org/TR/css-values-4/#time
-"s", "ms", // Frequency units:
-// https://www.w3.org/TR/css-values-4/#frequency
-"Hz", "kHz", // Resolution units:
-// https://www.w3.org/TR/css-values-4/#resolution
-"dpi", "dpcm", "dppx", "x", // Flexible lengths:
-// https://www.w3.org/TR/css-grid-1/#fr-unit
-"fr"];
-exports.units = units;
-
-function rule(primary) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: primary
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls(function (decl) {
- (0, _postcssValueParser["default"])(decl.value).walk(function (node) {
- // All words are non-quoted, while strings are quoted.
- // If quoted, it's probably a deliberate non-numeric dimension.
- if (node.type !== "word") {
- return;
- }
-
- if (!isInterpolated(node.value)) {
- return;
- }
-
- var regex = new RegExp("#{[$a-z_0-9 +-]*}(".concat(units.join("|"), ");?"));
- var matchUnit = decl.value.match(regex);
- var unit = matchUnit[1];
- var offset = decl.value.indexOf(unit);
-
- _stylelint.utils.report({
- ruleName: ruleName,
- result: result,
- message: messages.rejected(unit),
- index: (0, _utils.declarationValueIndex)(decl) + offset,
- node: decl
- });
- });
- });
- };
-}
-
-function isInterpolated(value) {
- var _boolean = false; // ValueParser breaks up interpolation with math into multiple, fragmented
- // segments (#{$value, +, 2}px). The easiest way to detect this is to look for a fragmented
- // interpolated section.
-
- if (value.match(/^#{\$[a-z]*$/)) {
- return true;
- }
-
- units.forEach(function (unit) {
- var regex = new RegExp("^#{[$a-z_0-9 +-]*}".concat(unit, ";?$"));
-
- if (value.match(regex)) {
- _boolean = true;
- }
- });
- return _boolean;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-colon-newline-after/index.js b/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-colon-newline-after/index.js
deleted file mode 100644
index 03b9a43..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-colon-newline-after/index.js
+++ /dev/null
@@ -1,112 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _lodash = require("lodash");
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("dollar-variable-colon-newline-after");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expectedAfter: function expectedAfter() {
- return 'Expected newline after ":"';
- },
- expectedAfterMultiLine: function expectedAfterMultiLine() {
- return 'Expected newline after ":" with a multi-line value';
- }
-});
-
-exports.messages = messages;
-
-function _default(expectation, options, context) {
- var checker = (0, _utils.whitespaceChecker)("newline", expectation, messages);
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always", "always-multi-line"]
- }, {
- actual: options,
- possible: {
- disableFix: _lodash.isBoolean
- },
- optional: true
- });
-
- if (!validOptions) {
- return;
- }
-
- var shouldFix = context.fix && (!options || options.disableFix !== true);
- root.walkDecls(function (decl) {
- if (!decl.prop || decl.prop[0] !== "$") {
- return;
- }
-
- var value = decl.value.trim();
- var startsWithParen = value[0] === "(";
- var endsWithParen = value[value.length - 1] === ")";
- var endsWithDefault = /\)\s*!default$/.test(value);
- var isMultilineVarWithParens = startsWithParen && (endsWithParen || endsWithDefault) && !(0, _utils.isSingleLineString)(value);
-
- if (isMultilineVarWithParens) {
- return;
- } // Get the raw $var, and only that
-
-
- var endOfPropIndex = (0, _utils.declarationValueIndex)(decl) + decl.raw("between").length - 1; // `$var:`, `$var :`
-
- var propPlusColon = decl.toString().slice(0, endOfPropIndex);
-
- var _loop2 = function _loop2(i, l) {
- if (propPlusColon[i] !== ":") {
- return "continue";
- }
-
- var indexToCheck = propPlusColon.substr(propPlusColon[i], 3) === "/*" ? propPlusColon.indexOf("*/", i) + 1 : i;
- checker.afterOneOnly({
- source: propPlusColon,
- index: indexToCheck,
- lineCheckStr: decl.value,
- err: function err(m) {
- if (shouldFix) {
- var nextLinePrefix = expectation === "always" ? decl.raws.before.replace(context.newline, "") : decl.value.split(context.newline)[1].replace(/^(\s+).*$/, function (_, whitespace) {
- return whitespace;
- });
- decl.raws.between = decl.raws.between.replace(/:(.*)$/, ":".concat(context.newline).concat(nextLinePrefix));
- return;
- }
-
- _stylelint.utils.report({
- message: m,
- node: decl,
- index: indexToCheck,
- result: result,
- ruleName: ruleName
- });
- }
- });
- return "break";
- };
-
- _loop: for (var i = 0, l = propPlusColon.length; i < l; i++) {
- var _ret = _loop2(i, l);
-
- switch (_ret) {
- case "continue":
- continue;
-
- case "break":
- break _loop;
- }
- }
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-colon-space-after/index.js b/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-colon-space-after/index.js
deleted file mode 100644
index f797589..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-colon-space-after/index.js
+++ /dev/null
@@ -1,129 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.variableColonSpaceChecker = variableColonSpaceChecker;
-exports.messages = exports.ruleName = void 0;
-
-var _utils = require("../../utils");
-
-var _stylelint = require("stylelint");
-
-var ruleName = (0, _utils.namespace)("dollar-variable-colon-space-after");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expectedAfter: function expectedAfter() {
- return 'Expected single space after ":"';
- },
- rejectedAfter: function rejectedAfter() {
- return 'Unexpected whitespace after ":"';
- },
- expectedAfterSingleLine: function expectedAfterSingleLine() {
- return 'Expected single space after ":" with a single-line value';
- },
- expectedAfterAtLeast: function expectedAfterAtLeast() {
- return 'Expected at least one space after ":"';
- }
-});
-
-exports.messages = messages;
-
-function _default(expectation, _, context) {
- var checker = (0, _utils.whitespaceChecker)("space", expectation, messages);
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always", "never", "always-single-line", "at-least-one-space"]
- });
-
- if (!validOptions) {
- return;
- }
-
- variableColonSpaceChecker({
- root: root,
- result: result,
- locationChecker: checker.after,
- checkedRuleName: ruleName,
- position: "after",
- expectation: expectation,
- context: context
- });
- };
-}
-
-function variableColonSpaceChecker(_ref) {
- var locationChecker = _ref.locationChecker,
- root = _ref.root,
- result = _ref.result,
- checkedRuleName = _ref.checkedRuleName,
- position = _ref.position,
- expectation = _ref.expectation,
- context = _ref.context;
- root.walkDecls(function (decl) {
- if (decl.prop === undefined || decl.prop[0] !== "$") {
- return;
- }
-
- if (context && context.fix) {
- if (expectation === "always-single-line" && !(0, _utils.isSingleLineString)(decl.value)) {
- return;
- }
-
- if (position === "before") {
- var replacement = expectation === "never" ? ":" : " :";
- decl.raws.between = decl.raws.between.replace(/\s*:/, replacement);
- } else if (position === "after") {
- var match = expectation === "at-least-one-space" ? /:(?! )/ : /:\s*/;
-
- var _replacement = expectation === "never" ? ":" : ": ";
-
- decl.raws.between = decl.raws.between.replace(match, _replacement);
- }
-
- return;
- } // Get the raw $var, and only that
-
-
- var endOfPropIndex = (0, _utils.declarationValueIndex)(decl) + decl.raw("between").length - 1; // `$var:`, `$var :`
-
- var propPlusColon = decl.toString().slice(0, endOfPropIndex);
-
- var _loop2 = function _loop2(i) {
- if (propPlusColon[i] !== ":") {
- return "continue";
- }
-
- locationChecker({
- source: propPlusColon,
- index: i,
- lineCheckStr: decl.value,
- err: function err(m) {
- _stylelint.utils.report({
- message: m,
- node: decl,
- index: i,
- result: result,
- ruleName: checkedRuleName
- });
- }
- });
- return "break";
- };
-
- _loop: for (var i = 0; i < propPlusColon.length; i++) {
- var _ret = _loop2(i);
-
- switch (_ret) {
- case "continue":
- continue;
-
- case "break":
- break _loop;
- }
- }
- });
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-colon-space-before/index.js b/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-colon-space-before/index.js
deleted file mode 100644
index d83ed18..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-colon-space-before/index.js
+++ /dev/null
@@ -1,51 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _utils = require("../../utils");
-
-var _stylelint = require("stylelint");
-
-var _dollarVariableColonSpaceAfter = require("../dollar-variable-colon-space-after");
-
-var ruleName = (0, _utils.namespace)("dollar-variable-colon-space-before");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expectedBefore: function expectedBefore() {
- return 'Expected single space before ":"';
- },
- rejectedBefore: function rejectedBefore() {
- return 'Unexpected whitespace before ":"';
- }
-});
-
-exports.messages = messages;
-
-function _default(expectation, _, context) {
- var checker = (0, _utils.whitespaceChecker)("space", expectation, messages);
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always", "never"]
- });
-
- if (!validOptions) {
- return;
- }
-
- (0, _dollarVariableColonSpaceAfter.variableColonSpaceChecker)({
- root: root,
- result: result,
- locationChecker: checker.before,
- checkedRuleName: ruleName,
- position: "before",
- expectation: expectation,
- context: context
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-default/index.js b/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-default/index.js
deleted file mode 100644
index 4cca8b2..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-default/index.js
+++ /dev/null
@@ -1,63 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("dollar-variable-default");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: function expected(variable) {
- return "Expected !default flag for \"".concat(variable, "\"");
- }
-});
-
-exports.messages = messages;
-
-function _default(primaryOption, secondaryOptions) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: primaryOption
- }, {
- actual: secondaryOptions,
- possible: {
- ignore: ["local"]
- },
- optional: true
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls(function (decl) {
- // not variable
- if (decl.prop[0] !== "$") {
- return;
- } // "ignore" options
-
-
- if ((0, _utils.optionsHaveIgnored)(secondaryOptions, "local") && decl.parent.type !== "root") {
- return;
- }
-
- if (decl.value.toLowerCase().includes("!default")) {
- return;
- }
-
- _stylelint.utils.report({
- message: messages.expected(decl.prop),
- node: decl,
- result: result,
- ruleName: ruleName
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-empty-line-before/index.js b/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-empty-line-before/index.js
deleted file mode 100644
index c6ab2f3..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-empty-line-before/index.js
+++ /dev/null
@@ -1,126 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _utils = require("../../utils");
-
-var _stylelint = require("stylelint");
-
-var _lodash = require("lodash");
-
-var ruleName = (0, _utils.namespace)("dollar-variable-empty-line-before");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: "Expected an empty line before $-variable",
- rejected: "Unexpected empty line before $-variable"
-});
-
-exports.messages = messages;
-
-function _default(expectation, options, context) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always", "never"]
- }, {
- actual: options,
- possible: {
- except: ["first-nested", "after-comment", "after-dollar-variable"],
- ignore: ["after-comment", "inside-single-line-block"],
- disableFix: _lodash.isBoolean
- },
- optional: true
- });
-
- if (!validOptions) {
- return;
- }
-
- var fix = function fix(decl, match, replace) {
- decl.raws.before = decl.raws.before.replace(new RegExp("^".concat(match)), replace);
- };
-
- var hasNewline = function hasNewline(str) {
- return str.includes(context.newline);
- };
-
- root.walkDecls(function (decl) {
- if (!isDollarVar(decl)) {
- return;
- } // Always ignore the first $var in a stylesheet
-
-
- if (decl === root.first) {
- return;
- } // If ignoring vars after comments is set
-
-
- if ((0, _utils.optionsHaveIgnored)(options, "after-comment") && decl.prev() && decl.prev().type === "comment") {
- return;
- } // If ignoring single-line blocks
-
-
- if ((0, _utils.optionsHaveIgnored)(options, "inside-single-line-block") && decl.parent.type !== "root" && (0, _utils.isSingleLineString)((0, _utils.blockString)(decl.parent))) {
- return;
- }
-
- var expectHasEmptyLineBefore = expectation === "always"; // Reverse for a variable that is a first child of its parent
-
- if ((0, _utils.optionsHaveException)(options, "first-nested") && decl === decl.parent.first) {
- expectHasEmptyLineBefore = !expectHasEmptyLineBefore;
- } // Reverse if after a comment
-
-
- if ((0, _utils.optionsHaveException)(options, "after-comment") && decl.prev() && decl.prev().type === "comment") {
- expectHasEmptyLineBefore = !expectHasEmptyLineBefore;
- } // Reverse if after another $-variable
-
-
- if ((0, _utils.optionsHaveException)(options, "after-dollar-variable") && decl.prev() && isDollarVar(decl.prev())) {
- expectHasEmptyLineBefore = !expectHasEmptyLineBefore;
- }
-
- var before = decl.raws.before;
-
- if (expectHasEmptyLineBefore === (0, _utils.hasEmptyLine)(before)) {
- return;
- }
-
- var isFixDisabled = options && options.disableFix === true;
-
- if (context.fix && !isFixDisabled) {
- if (expectHasEmptyLineBefore && !(0, _utils.hasEmptyLine)(before)) {
- fix(decl, context.newline, context.newline + context.newline);
-
- if ((0, _utils.optionsHaveException)(options, "first-nested") && !hasNewline(before)) {
- fix(decl, "\\s+", context.newline + context.newline);
- }
-
- return;
- }
-
- if (!expectHasEmptyLineBefore && (0, _utils.hasEmptyLine)(before)) {
- fix(decl, "\\n\\r\\n", "\r\n");
- fix(decl, context.newline + context.newline, context.newline);
- return;
- }
- }
-
- _stylelint.utils.report({
- message: expectHasEmptyLineBefore ? messages.expected : messages.rejected,
- node: decl,
- result: result,
- ruleName: ruleName
- });
- });
- };
-}
-
-function isDollarVar(node) {
- return node.prop && node.prop[0] === "$";
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-no-missing-interpolation/index.js b/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-no-missing-interpolation/index.js
deleted file mode 100644
index 58dd4ec..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-no-missing-interpolation/index.js
+++ /dev/null
@@ -1,146 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-var ruleName = (0, _utils.namespace)("dollar-variable-no-missing-interpolation");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: function rejected(n, v) {
- return "Expected variable ".concat(v, " to be interpolated when using it with ").concat(n);
- }
-}); // https://developer.mozilla.org/en/docs/Web/CSS/custom-ident#Lists_of_excluded_values
-
-
-exports.messages = messages;
-var customIdentProps = ["animation", "animation-name", "counter-reset", "counter-increment", "list-style-type", "will-change"]; // https://developer.mozilla.org/en/docs/Web/CSS/At-rule
-
-var customIdentAtRules = ["counter-style", "keyframes", "supports"];
-
-function isAtRule(type) {
- return type === "atrule";
-}
-
-function isCustomIdentAtRule(node) {
- return isAtRule(node.type) && customIdentAtRules.includes(node.name);
-}
-
-function isCustomIdentProp(node) {
- return customIdentProps.includes(node.prop);
-}
-
-function isAtSupports(node) {
- return isAtRule(node.type) && node.name === "supports";
-}
-
-function isSassVar(value) {
- return value[0] === "$";
-}
-
-function isStringVal(value) {
- return /^("|').*("|')$/.test(value);
-}
-
-function toRegex(arr) {
- return new RegExp("(".concat(arr.join("|"), ")"));
-}
-
-function _default(actual) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: actual
- });
-
- if (!validOptions) {
- return;
- }
-
- var stringVars = [];
- var vars = [];
-
- function findVars(node) {
- node.walkDecls(function (decl) {
- var prop = decl.prop,
- value = decl.value;
-
- if (!isSassVar(prop) || vars.includes(prop)) {
- return;
- }
-
- if (isStringVal(value)) {
- stringVars.push(prop);
- }
-
- vars.push(prop);
- });
- }
-
- findVars(root);
- root.walkRules(findVars);
-
- if (!vars.length) {
- return;
- }
-
- function shouldReport(node, value) {
- if (isAtSupports(node) || isCustomIdentProp(node)) {
- return stringVars.includes(value);
- }
-
- if (isCustomIdentAtRule(node)) {
- return vars.includes(value);
- }
-
- return false;
- }
-
- function report(node, value) {
- var name = node.name,
- prop = node.prop,
- type = node.type;
- var nodeName = isAtRule(type) ? "@".concat(name) : prop;
-
- _stylelint.utils.report({
- ruleName: ruleName,
- result: result,
- node: node,
- message: messages.rejected(nodeName, value)
- });
- }
-
- function exitEarly(node) {
- return node.type !== "word" || !node.value;
- }
-
- function walkValues(node, value) {
- (0, _postcssValueParser["default"])(value).walk(function (valNode) {
- var value = valNode.value;
-
- if (exitEarly(valNode) || !shouldReport(node, value)) {
- return;
- }
-
- report(node, value);
- });
- }
-
- root.walkDecls(toRegex(customIdentProps), function (decl) {
- walkValues(decl, decl.value);
- });
- root.walkAtRules(toRegex(customIdentAtRules), function (atRule) {
- walkValues(atRule, atRule.params);
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-pattern/index.js b/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-pattern/index.js
deleted file mode 100644
index ca6580d..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/dollar-variable-pattern/index.js
+++ /dev/null
@@ -1,66 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _lodash = require("lodash");
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("dollar-variable-pattern");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: "Expected $ variable name to match specified pattern"
-});
-
-exports.messages = messages;
-
-function _default(pattern, options) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: pattern,
- possible: [_lodash.isRegExp, _lodash.isString]
- }, {
- actual: options,
- possible: {
- ignore: ["local", "global"]
- },
- optional: true
- });
-
- if (!validOptions) {
- return;
- }
-
- var regexpPattern = (0, _lodash.isString)(pattern) ? new RegExp(pattern) : pattern;
- root.walkDecls(function (decl) {
- var prop = decl.prop;
-
- if (prop[0] !== "$") {
- return;
- } // If local or global variables need to be ignored
-
-
- if ((0, _utils.optionsHaveIgnored)(options, "global") && decl.parent.type === "root" || (0, _utils.optionsHaveIgnored)(options, "local") && decl.parent.type !== "root") {
- return;
- }
-
- if (regexpPattern.test(prop.slice(1))) {
- return;
- }
-
- _stylelint.utils.report({
- message: messages.expected,
- node: decl,
- result: result,
- ruleName: ruleName
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/double-slash-comment-empty-line-before/index.js b/assets/node_modules/stylelint-scss/dist/rules/double-slash-comment-empty-line-before/index.js
deleted file mode 100644
index a0a3448..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/double-slash-comment-empty-line-before/index.js
+++ /dev/null
@@ -1,107 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("double-slash-comment-empty-line-before");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: "Expected empty line before comment",
- rejected: "Unexpected empty line before comment"
-});
-
-exports.messages = messages;
-var stylelintCommandPrefix = "stylelint-";
-
-function _default(expectation, options, context) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always", "never"]
- }, {
- actual: options,
- possible: {
- except: ["first-nested"],
- ignore: ["stylelint-commands", "between-comments"]
- },
- optional: true
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkComments(function (comment) {
- // Only process // comments
- if (!comment.raws.inline && !comment.inline) {
- return;
- }
-
- if ((0, _utils.isInlineComment)(comment)) {
- return;
- } // Ignore the first node
-
-
- if (comment === root.first) {
- return;
- } // Optionally ignore stylelint commands
-
-
- if (comment.text.indexOf(stylelintCommandPrefix) === 0 && (0, _utils.optionsHaveIgnored)(options, "stylelint-commands")) {
- return;
- } // Optionally ignore newlines between comments
-
-
- var prev = comment.prev();
-
- if (prev && prev.type === "comment" && (0, _utils.optionsHaveIgnored)(options, "between-comments")) {
- return;
- }
-
- var before = comment.raw("before");
-
- var expectEmptyLineBefore = function () {
- if ((0, _utils.optionsHaveException)(options, "first-nested") && comment.parent !== root && comment === comment.parent.first) {
- return false;
- }
-
- return expectation === "always";
- }();
-
- var hasEmptyLineBefore = before.search(/\n\s*?\n/) !== -1; // Return if the expectation is met
-
- if (expectEmptyLineBefore === hasEmptyLineBefore) {
- return;
- }
-
- if (context.fix) {
- if (expectEmptyLineBefore && !hasEmptyLineBefore) {
- (0, _utils.addEmptyLineBefore)(comment, context.newline);
- return;
- }
-
- if (!expectEmptyLineBefore && hasEmptyLineBefore) {
- (0, _utils.removeEmptyLinesBefore)(comment, context.newline);
- return;
- }
- }
-
- var message = expectEmptyLineBefore ? messages.expected : messages.rejected;
-
- _stylelint.utils.report({
- message: message,
- node: comment,
- result: result,
- ruleName: ruleName
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/double-slash-comment-inline/index.js b/assets/node_modules/stylelint-scss/dist/rules/double-slash-comment-inline/index.js
deleted file mode 100644
index 6a55466..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/double-slash-comment-inline/index.js
+++ /dev/null
@@ -1,83 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _utils = require("../../utils");
-
-var _stylelint = require("stylelint");
-
-var ruleName = (0, _utils.namespace)("double-slash-comment-inline");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: "Expected //-comment to be inline comment",
- rejected: "Unexpected inline //-comment"
-});
-
-exports.messages = messages;
-var stylelintCommandPrefix = "stylelint-";
-
-function _default(expectation, options) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always", "never"]
- }, {
- actual: options,
- possible: {
- ignore: ["stylelint-commands"]
- },
- optional: true
- });
-
- if (!validOptions) {
- return;
- }
-
- (0, _utils.eachRoot)(root, checkRoot);
-
- function checkRoot(root) {
- var rootString = root.source.input.css;
-
- if (rootString.trim() === "") {
- return;
- }
-
- var comments = (0, _utils.findCommentsInRaws)(rootString);
- comments.forEach(function (comment) {
- // Only process // comments
- if (comment.type !== "double-slash") {
- return;
- } // Optionally ignore stylelint commands
-
-
- if (comment.text.indexOf(stylelintCommandPrefix) === 0 && (0, _utils.optionsHaveIgnored)(options, "stylelint-commands")) {
- return;
- }
-
- var isInline = comment.inlineAfter || comment.inlineBefore;
- var message;
-
- if (isInline && expectation === "never") {
- message = messages.rejected;
- } else if (!isInline && expectation === "always") {
- message = messages.expected;
- } else {
- return;
- }
-
- _stylelint.utils.report({
- message: message,
- node: root,
- index: comment.source.start,
- result: result,
- ruleName: ruleName
- });
- });
- }
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/double-slash-comment-whitespace-inside/index.js b/assets/node_modules/stylelint-scss/dist/rules/double-slash-comment-whitespace-inside/index.js
deleted file mode 100644
index 59faf89..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/double-slash-comment-whitespace-inside/index.js
+++ /dev/null
@@ -1,76 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _utils = require("../../utils");
-
-var _stylelint = require("stylelint");
-
-var ruleName = (0, _utils.namespace)("double-slash-comment-whitespace-inside");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: "Expected a space after //",
- rejected: "Unexpected space after //"
-});
-
-exports.messages = messages;
-
-function _default(expectation) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always", "never"]
- });
-
- if (!validOptions) {
- return;
- }
-
- (0, _utils.eachRoot)(root, checkRoot);
-
- function checkRoot(root) {
- var rootString = root.source.input.css;
-
- if (rootString.trim() === "") {
- return;
- }
-
- var comments = (0, _utils.findCommentsInRaws)(rootString);
- comments.forEach(function (comment) {
- // Only process // comments
- if (comment.type !== "double-slash") {
- return;
- } // if it's `//` - no warning whatsoever; if `// ` - then trailing
- // whitespace rule will govern this
-
-
- if (comment.text === "") {
- return;
- }
-
- var message;
-
- if (expectation === "never" && comment.raws.left !== "") {
- message = messages.rejected;
- } else if (comment.raws.left === "" && expectation === "always") {
- message = messages.expected;
- } else {
- return;
- }
-
- _stylelint.utils.report({
- message: message,
- node: root,
- index: comment.source.start + comment.raws.startToken.length,
- result: result,
- ruleName: ruleName
- });
- });
- }
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/function-color-relative/index.js b/assets/node_modules/stylelint-scss/dist/rules/function-color-relative/index.js
deleted file mode 100644
index b245a23..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/function-color-relative/index.js
+++ /dev/null
@@ -1,57 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-var ruleName = (0, _utils.namespace)("function-color-relative");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: "Expected the scale-color function to be used"
-});
-
-exports.messages = messages;
-var function_names = ["saturate", "desaturate", "darken", "lighten", "opacify", "fade-in", "transparentize", "fade-out"];
-
-function rule(primary) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: primary
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls(function (decl) {
- (0, _postcssValueParser["default"])(decl.value).walk(function (node) {
- // Verify that we're only looking at functions.
- if (node.type !== "function" || node.value === "") {
- return;
- }
-
- if (function_names.includes(node.value)) {
- _stylelint.utils.report({
- message: messages.rejected,
- node: decl,
- result: result,
- ruleName: ruleName
- });
- }
- });
- });
- };
-}
-
-var _default = rule;
-exports["default"] = _default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/function-quote-no-quoted-strings-inside/index.js b/assets/node_modules/stylelint-scss/dist/rules/function-quote-no-quoted-strings-inside/index.js
deleted file mode 100644
index 377e121..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/function-quote-no-quoted-strings-inside/index.js
+++ /dev/null
@@ -1,79 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-var ruleName = (0, _utils.namespace)("function-quote-no-quoted-strings-inside");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: "Quote function used with an already-quoted string"
-});
-
-exports.messages = messages;
-
-function rule(primary, _, context) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: primary
- });
-
- if (!validOptions) {
- return;
- } // Setup variable naming.
-
-
- var vars = {};
- root.walkDecls(function (decl) {
- if (decl.prop[0] !== "$") {
- return;
- }
-
- (0, _postcssValueParser["default"])(decl.value).walk(function (node) {
- vars[decl.prop] = node.type;
- });
- });
- root.walkDecls(function (decl) {
- (0, _postcssValueParser["default"])(decl.value).walk(function (node) {
- // Verify that we're only looking at functions.
- if (node.type !== "function" || (0, _utils.isNativeCssFunction)(node.value) || node.value === "") {
- return;
- } // Verify we're only looking at quote() calls.
-
-
- if (node.value !== "quote") {
- return;
- } // Report error if first character is a quote.
- // postcss-value-parser represents quoted strings as type 'string' (as opposed to word)
-
-
- if (node.nodes[0].quote || vars[node.nodes[0].value] === "string") {
- if (context.fix) {
- var contents = /quote\((.*)\)/.exec(decl.value);
- decl.value = contents[1];
- } else {
- _stylelint.utils.report({
- message: messages.rejected,
- node: decl,
- result: result,
- ruleName: ruleName
- });
- }
- }
- });
- });
- };
-}
-
-var _default = rule;
-exports["default"] = _default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/function-unquote-no-unquoted-strings-inside/index.js b/assets/node_modules/stylelint-scss/dist/rules/function-unquote-no-unquoted-strings-inside/index.js
deleted file mode 100644
index 38d2ca3..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/function-unquote-no-unquoted-strings-inside/index.js
+++ /dev/null
@@ -1,79 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-var ruleName = (0, _utils.namespace)("function-unquote-no-unquoted-strings-inside");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: "Unquote function used with an already-unquoted string"
-});
-
-exports.messages = messages;
-
-function rule(primary, _, context) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: primary
- });
-
- if (!validOptions) {
- return;
- } // Setup variable naming.
-
-
- var vars = {};
- root.walkDecls(function (decl) {
- if (decl.prop[0] !== "$") {
- return;
- }
-
- (0, _postcssValueParser["default"])(decl.value).walk(function (node) {
- vars[decl.prop] = node.type;
- });
- });
- root.walkDecls(function (decl) {
- (0, _postcssValueParser["default"])(decl.value).walk(function (node) {
- // Verify that we're only looking at functions.
- if (node.type !== "function" || (0, _utils.isNativeCssFunction)(node.value) || node.value === "") {
- return;
- } // Verify we're only looking at quote() calls.
-
-
- if (node.value !== "unquote") {
- return;
- } // Report error if first character is a quote.
- // postcss-value-parser represents quoted strings as type 'string' (as opposed to word)
-
-
- if (!node.nodes[0].quote && node.nodes[0].value[0] !== "$" || vars[node.nodes[0].value] === "word") {
- if (context.fix) {
- var contents = /unquote\((.*)\)/.exec(decl.value);
- decl.value = contents[1];
- } else {
- _stylelint.utils.report({
- message: messages.rejected,
- node: decl,
- result: result,
- ruleName: ruleName
- });
- }
- }
- });
- });
- };
-}
-
-var _default = rule;
-exports["default"] = _default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/index.js b/assets/node_modules/stylelint-scss/dist/rules/index.js
deleted file mode 100644
index 2257614..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/index.js
+++ /dev/null
@@ -1,168 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = void 0;
-
-var _atEachKeyValueSingleLine = _interopRequireDefault(require("./at-each-key-value-single-line"));
-
-var _atElseClosingBraceNewlineAfter = _interopRequireDefault(require("./at-else-closing-brace-newline-after"));
-
-var _atElseClosingBraceSpaceAfter = _interopRequireDefault(require("./at-else-closing-brace-space-after"));
-
-var _atElseEmptyLineBefore = _interopRequireDefault(require("./at-else-empty-line-before"));
-
-var _atElseIfParenthesesSpaceBefore = _interopRequireDefault(require("./at-else-if-parentheses-space-before"));
-
-var _atExtendNoMissingPlaceholder = _interopRequireDefault(require("./at-extend-no-missing-placeholder"));
-
-var _atFunctionNamedArguments = _interopRequireDefault(require("./at-function-named-arguments"));
-
-var _atFunctionParenthesesSpaceBefore = _interopRequireDefault(require("./at-function-parentheses-space-before"));
-
-var _atFunctionPattern = _interopRequireDefault(require("./at-function-pattern"));
-
-var _atIfClosingBraceNewlineAfter = _interopRequireDefault(require("./at-if-closing-brace-newline-after"));
-
-var _atIfClosingBraceSpaceAfter = _interopRequireDefault(require("./at-if-closing-brace-space-after"));
-
-var _atIfNoNull = _interopRequireDefault(require("./at-if-no-null"));
-
-var _atImportNoPartialLeadingUnderscore = _interopRequireDefault(require("./at-import-no-partial-leading-underscore"));
-
-var _atImportPartialExtension = _interopRequireDefault(require("./at-import-partial-extension"));
-
-var _atImportPartialExtensionBlacklist = _interopRequireDefault(require("./at-import-partial-extension-blacklist"));
-
-var _atImportPartialExtensionWhitelist = _interopRequireDefault(require("./at-import-partial-extension-whitelist"));
-
-var _atMixinArgumentlessCallParentheses = _interopRequireDefault(require("./at-mixin-argumentless-call-parentheses"));
-
-var _atMixinNamedArguments = _interopRequireDefault(require("./at-mixin-named-arguments"));
-
-var _atMixinParenthesesSpaceBefore = _interopRequireDefault(require("./at-mixin-parentheses-space-before"));
-
-var _atMixinPattern = _interopRequireDefault(require("./at-mixin-pattern"));
-
-var _atRuleConditionalNoParentheses = _interopRequireDefault(require("./at-rule-conditional-no-parentheses"));
-
-var _atRuleNoUnknown = _interopRequireDefault(require("./at-rule-no-unknown"));
-
-var _commentNoLoud = _interopRequireDefault(require("./comment-no-loud"));
-
-var _declarationNestedProperties = _interopRequireDefault(require("./declaration-nested-properties"));
-
-var _declarationNestedPropertiesNoDividedGroups = _interopRequireDefault(require("./declaration-nested-properties-no-divided-groups"));
-
-var _dimensionNoNonNumericValues = _interopRequireDefault(require("./dimension-no-non-numeric-values"));
-
-var _dollarVariableColonNewlineAfter = _interopRequireDefault(require("./dollar-variable-colon-newline-after"));
-
-var _dollarVariableColonSpaceAfter = _interopRequireDefault(require("./dollar-variable-colon-space-after"));
-
-var _dollarVariableColonSpaceBefore = _interopRequireDefault(require("./dollar-variable-colon-space-before"));
-
-var _dollarVariableDefault = _interopRequireDefault(require("./dollar-variable-default"));
-
-var _dollarVariableEmptyLineBefore = _interopRequireDefault(require("./dollar-variable-empty-line-before"));
-
-var _dollarVariableNoMissingInterpolation = _interopRequireDefault(require("./dollar-variable-no-missing-interpolation"));
-
-var _dollarVariablePattern = _interopRequireDefault(require("./dollar-variable-pattern"));
-
-var _doubleSlashCommentEmptyLineBefore = _interopRequireDefault(require("./double-slash-comment-empty-line-before"));
-
-var _doubleSlashCommentInline = _interopRequireDefault(require("./double-slash-comment-inline"));
-
-var _doubleSlashCommentWhitespaceInside = _interopRequireDefault(require("./double-slash-comment-whitespace-inside"));
-
-var _functionColorRelative = _interopRequireDefault(require("./function-color-relative"));
-
-var _functionQuoteNoQuotedStringsInside = _interopRequireDefault(require("./function-quote-no-quoted-strings-inside"));
-
-var _functionUnquoteNoUnquotedStringsInside = _interopRequireDefault(require("./function-unquote-no-unquoted-strings-inside"));
-
-var _mapKeysQuotes = _interopRequireDefault(require("./map-keys-quotes"));
-
-var _mediaFeatureValueDollarVariable = _interopRequireDefault(require("./media-feature-value-dollar-variable"));
-
-var _noDollarVariables = _interopRequireDefault(require("./no-dollar-variables"));
-
-var _noDuplicateDollarVariables = _interopRequireDefault(require("./no-duplicate-dollar-variables"));
-
-var _noDuplicateMixins = _interopRequireDefault(require("./no-duplicate-mixins"));
-
-var _operatorNoNewlineAfter = _interopRequireDefault(require("./operator-no-newline-after"));
-
-var _operatorNoNewlineBefore = _interopRequireDefault(require("./operator-no-newline-before"));
-
-var _operatorNoUnspaced = _interopRequireDefault(require("./operator-no-unspaced"));
-
-var _partialNoImport = _interopRequireDefault(require("./partial-no-import"));
-
-var _percentPlaceholderPattern = _interopRequireDefault(require("./percent-placeholder-pattern"));
-
-var _selectorNestCombinators = _interopRequireDefault(require("./selector-nest-combinators"));
-
-var _selectorNoRedundantNestingSelector = _interopRequireDefault(require("./selector-no-redundant-nesting-selector"));
-
-var _selectorNoUnionClassName = _interopRequireDefault(require("./selector-no-union-class-name"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-var _default = {
- "at-extend-no-missing-placeholder": _atExtendNoMissingPlaceholder["default"],
- "at-else-closing-brace-newline-after": _atElseClosingBraceNewlineAfter["default"],
- "at-else-closing-brace-space-after": _atElseClosingBraceSpaceAfter["default"],
- "at-else-empty-line-before": _atElseEmptyLineBefore["default"],
- "at-else-if-parentheses-space-before": _atElseIfParenthesesSpaceBefore["default"],
- "at-function-named-arguments": _atFunctionNamedArguments["default"],
- "at-function-parentheses-space-before": _atFunctionParenthesesSpaceBefore["default"],
- "at-function-pattern": _atFunctionPattern["default"],
- "at-if-closing-brace-newline-after": _atIfClosingBraceNewlineAfter["default"],
- "at-if-closing-brace-space-after": _atIfClosingBraceSpaceAfter["default"],
- "at-if-no-null": _atIfNoNull["default"],
- "at-import-no-partial-leading-underscore": _atImportNoPartialLeadingUnderscore["default"],
- "at-import-partial-extension": _atImportPartialExtension["default"],
- "at-import-partial-extension-blacklist": _atImportPartialExtensionBlacklist["default"],
- "at-import-partial-extension-whitelist": _atImportPartialExtensionWhitelist["default"],
- "at-mixin-argumentless-call-parentheses": _atMixinArgumentlessCallParentheses["default"],
- "at-mixin-named-arguments": _atMixinNamedArguments["default"],
- "at-mixin-parentheses-space-before": _atMixinParenthesesSpaceBefore["default"],
- "at-mixin-pattern": _atMixinPattern["default"],
- "at-each-key-value-single-line": _atEachKeyValueSingleLine["default"],
- "at-rule-conditional-no-parentheses": _atRuleConditionalNoParentheses["default"],
- "at-rule-no-unknown": _atRuleNoUnknown["default"],
- "comment-no-loud": _commentNoLoud["default"],
- "declaration-nested-properties": _declarationNestedProperties["default"],
- "declaration-nested-properties-no-divided-groups": _declarationNestedPropertiesNoDividedGroups["default"],
- "dimension-no-non-numeric-values": _dimensionNoNonNumericValues["default"],
- "dollar-variable-colon-newline-after": _dollarVariableColonNewlineAfter["default"],
- "dollar-variable-colon-space-after": _dollarVariableColonSpaceAfter["default"],
- "dollar-variable-colon-space-before": _dollarVariableColonSpaceBefore["default"],
- "dollar-variable-default": _dollarVariableDefault["default"],
- "dollar-variable-empty-line-before": _dollarVariableEmptyLineBefore["default"],
- "dollar-variable-no-missing-interpolation": _dollarVariableNoMissingInterpolation["default"],
- "dollar-variable-pattern": _dollarVariablePattern["default"],
- "double-slash-comment-empty-line-before": _doubleSlashCommentEmptyLineBefore["default"],
- "double-slash-comment-inline": _doubleSlashCommentInline["default"],
- "double-slash-comment-whitespace-inside": _doubleSlashCommentWhitespaceInside["default"],
- "function-quote-no-quoted-strings-inside": _functionQuoteNoQuotedStringsInside["default"],
- "function-unquote-no-unquoted-strings-inside": _functionUnquoteNoUnquotedStringsInside["default"],
- "function-color-relative": _functionColorRelative["default"],
- "map-keys-quotes": _mapKeysQuotes["default"],
- "media-feature-value-dollar-variable": _mediaFeatureValueDollarVariable["default"],
- "no-dollar-variables": _noDollarVariables["default"],
- "no-duplicate-dollar-variables": _noDuplicateDollarVariables["default"],
- "no-duplicate-mixins": _noDuplicateMixins["default"],
- "operator-no-newline-after": _operatorNoNewlineAfter["default"],
- "operator-no-newline-before": _operatorNoNewlineBefore["default"],
- "operator-no-unspaced": _operatorNoUnspaced["default"],
- "percent-placeholder-pattern": _percentPlaceholderPattern["default"],
- "partial-no-import": _partialNoImport["default"],
- "selector-nest-combinators": _selectorNestCombinators["default"],
- "selector-no-redundant-nesting-selector": _selectorNoRedundantNestingSelector["default"],
- "selector-no-union-class-name": _selectorNoUnionClassName["default"]
-};
-exports["default"] = _default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/map-keys-quotes/index.js b/assets/node_modules/stylelint-scss/dist/rules/map-keys-quotes/index.js
deleted file mode 100644
index 401666a..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/map-keys-quotes/index.js
+++ /dev/null
@@ -1,99 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = exports.messages = exports.ruleName = void 0;
-
-var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-var ruleName = (0, _utils.namespace)("map-keys-quotes");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: "Expected keys in map to be quoted."
-});
-
-exports.messages = messages;
-var mathOperators = ["+", "/", "-", "*", "%"];
-
-function rule(primary) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: primary,
- possible: ["always"]
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls(function (decl) {
- if (decl.prop[0] !== "$") {
- return;
- }
-
- (0, _postcssValueParser["default"])(decl.value).walk(function (node) {
- if (node.type === "function" && node.value === "" && isMap(node.nodes)) {
- // Identify all of the map-keys and see if they're strings (not words).
- var mapKeys = returnMapKeys(node.nodes);
- mapKeys.forEach(function (map_key) {
- if (mathOperators.includes(map_key.value)) {
- return;
- }
-
- if (map_key.type === "word" && isNaN(map_key.value)) {
- _stylelint.utils.report({
- message: messages.expected,
- node: decl,
- result: result,
- ruleName: ruleName
- });
- }
- });
- }
- });
- });
- };
-} // Takes in a list of map nodes and identifies if they are a map.
-// A map is identified by the pattern: [string/word colon(div) anything comma(div) ...]
-
-
-function isMap(nodes) {
- if (nodes.length < 4) {
- return false;
- }
-
- if (nodes[0].type !== "word" && nodes[0].type !== "string") {
- return false;
- }
-
- if (nodes[1].value !== ":") {
- return false;
- }
-
- if (nodes[3].value !== ",") {
- return false;
- }
-
- return true;
-}
-
-function returnMapKeys(array) {
- var new_array = [];
-
- for (var i = 0; i < array.length; i += 4) {
- new_array.push(array[i]);
- }
-
- return new_array;
-}
-
-var _default = rule;
-exports["default"] = _default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/media-feature-value-dollar-variable/index.js b/assets/node_modules/stylelint-scss/dist/rules/media-feature-value-dollar-variable/index.js
deleted file mode 100644
index 7c7268f..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/media-feature-value-dollar-variable/index.js
+++ /dev/null
@@ -1,75 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("media-feature-value-dollar-variable");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: "Unexpected dollar-variable as a media feature value",
- expected: "Expected a dollar-variable (e.g. $var) to be used as a media feature value"
-});
-
-exports.messages = messages;
-
-function _default(expectation) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always", "never"]
- });
-
- if (!validOptions) {
- return;
- }
-
- var valueRegex = /:(?:\s*?)(\S.+?)(:?\s*?)\)/; // In `(max-width: 10px )` find `: 10px )`.
- // Got to go with that (the global search doesn't remember parens' insides)
- // and parse it again afterwards to remove trailing junk
-
- var valueRegexGlobal = new RegExp(valueRegex.source, "g"); // `$var-name_sth`
-
- var variableRegex = /^\$[A-Za-z_0-9-]+$/; // `#{$var-name_sth}`
-
- var interpolationVarRegex = /^#\{\s*?\$[A-Za-z_0-9]+\s*?\}$/;
- root.walkAtRules("media", function (atRule) {
- var found = atRule.params.match(valueRegexGlobal); // If there are no values
-
- if (!found || !found.length) {
- return;
- }
-
- found.forEach(function (found) {
- // ... parse `: 10px )` to `10px`
- var valueParsed = found.match(valueRegex)[1]; // Just a shorthand to stylelint.utils.report()
-
- function complain(message) {
- _stylelint.utils.report({
- ruleName: ruleName,
- result: result,
- node: atRule,
- word: valueParsed,
- message: message
- });
- } // A value should be a single variable
- // or it should be a single variable inside Sass interpolation
-
-
- if (expectation === "always" && !(valueParsed.search(variableRegex) !== -1 || valueParsed.search(interpolationVarRegex) !== -1)) {
- complain(messages.expected);
- } else if (expectation === "never" && valueParsed.includes("$")) {
- // "Never" means no variables at all (functions allowed)
- complain(messages.rejected);
- }
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/no-dollar-variables/index.js b/assets/node_modules/stylelint-scss/dist/rules/no-dollar-variables/index.js
deleted file mode 100644
index ed0ed25..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/no-dollar-variables/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("no-dollar-variables");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: function rejected(variable) {
- return "Unexpected dollar variable ".concat(variable);
- }
-});
-
-exports.messages = messages;
-
-function _default(value) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: value
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls(function (decl) {
- if (decl.prop[0] !== "$") {
- return;
- }
-
- _stylelint.utils.report({
- message: messages.rejected(decl.prop),
- node: decl,
- result: result,
- ruleName: ruleName
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/no-duplicate-dollar-variables/index.js b/assets/node_modules/stylelint-scss/dist/rules/no-duplicate-dollar-variables/index.js
deleted file mode 100644
index 557ef86..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/no-duplicate-dollar-variables/index.js
+++ /dev/null
@@ -1,66 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _lodash = require("lodash");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("no-duplicate-dollar-variables");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: function rejected(variable) {
- return "Unexpected duplicate dollar variable ".concat(variable);
- }
-});
-
-exports.messages = messages;
-
-function _default(value, secondaryOptions) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: value
- }, {
- actual: secondaryOptions,
- possible: {
- ignoreInside: ["at-rule", "nested-at-rule"],
- ignoreInsideAtRules: [_lodash.isString]
- },
- optional: true
- });
-
- if (!validOptions) {
- return;
- }
-
- var vars = {};
- root.walkDecls(function (decl) {
- var isVar = decl.prop[0] === "$";
- var isInsideIgnoredAtRule = decl.parent.type === "atrule" && secondaryOptions && secondaryOptions.ignoreInside && secondaryOptions.ignoreInside === "at-rule";
- var isInsideIgnoredNestedAtRule = decl.parent.type === "atrule" && decl.parent.parent.type !== "root" && secondaryOptions && secondaryOptions.ignoreInside && secondaryOptions.ignoreInside === "nested-at-rule";
- var isInsideIgnoredSpecifiedAtRule = decl.parent.type === "atrule" && secondaryOptions && secondaryOptions.ignoreInsideAtRules && secondaryOptions.ignoreInsideAtRules.includes(decl.parent.name);
-
- if (!isVar || isInsideIgnoredAtRule || isInsideIgnoredNestedAtRule || isInsideIgnoredSpecifiedAtRule) {
- return;
- }
-
- if (vars[decl.prop]) {
- _stylelint.utils.report({
- message: messages.rejected(decl.prop),
- node: decl,
- result: result,
- ruleName: ruleName
- });
- }
-
- vars[decl.prop] = true;
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/no-duplicate-mixins/index.js b/assets/node_modules/stylelint-scss/dist/rules/no-duplicate-mixins/index.js
deleted file mode 100644
index 8c84fe9..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/no-duplicate-mixins/index.js
+++ /dev/null
@@ -1,56 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("no-duplicate-mixins");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: function rejected(mixin) {
- return "Unexpected duplicate mixin ".concat(mixin);
- }
-});
-
-exports.messages = messages;
-
-function _default(value) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: value
- });
-
- if (!validOptions) {
- return;
- }
-
- var mixins = {};
- root.walkAtRules(function (decl) {
- var isMixin = decl.name === "mixin";
-
- if (!isMixin) {
- return;
- }
-
- var mixinName = (0, _utils.atRuleBaseName)(decl);
-
- if (mixins[mixinName]) {
- _stylelint.utils.report({
- message: messages.rejected(mixinName),
- node: decl,
- result: result,
- ruleName: ruleName
- });
- }
-
- mixins[mixinName] = true;
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/operator-no-newline-after/index.js b/assets/node_modules/stylelint-scss/dist/rules/operator-no-newline-after/index.js
deleted file mode 100644
index 727bef8..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/operator-no-newline-after/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var _operatorNoUnspaced = require("../operator-no-unspaced");
-
-var ruleName = (0, _utils.namespace)("operator-no-newline-after");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: function rejected(operator) {
- return "Unexpected newline after \"".concat(operator, "\"");
- }
-});
-
-exports.messages = messages;
-
-/**
- * The checker function: whether there is a newline before THAT operator.
- */
-function checkNewlineBefore(_ref) {
- var string = _ref.string,
- globalIndex = _ref.globalIndex,
- startIndex = _ref.startIndex,
- endIndex = _ref.endIndex,
- node = _ref.node,
- result = _ref.result;
- var symbol = string.substring(startIndex, endIndex + 1);
- var newLineBefore = false;
- var index = endIndex + 1;
-
- while (index && (0, _utils.isWhitespace)(string[index])) {
- if (string[index] === "\n") {
- newLineBefore = true;
- break;
- }
-
- index++;
- }
-
- if (newLineBefore) {
- _stylelint.utils.report({
- ruleName: ruleName,
- result: result,
- node: node,
- message: messages.rejected(symbol),
- index: endIndex + globalIndex
- });
- }
-}
-
-function _default(expectation) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation
- });
-
- if (!validOptions) {
- return;
- }
-
- (0, _utils.eachRoot)(root, checkRoot);
-
- function checkRoot(root) {
- (0, _operatorNoUnspaced.calculationOperatorSpaceChecker)({
- root: root,
- result: result,
- checker: checkNewlineBefore
- });
- }
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/operator-no-newline-before/index.js b/assets/node_modules/stylelint-scss/dist/rules/operator-no-newline-before/index.js
deleted file mode 100644
index 12dd6a0..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/operator-no-newline-before/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var _operatorNoUnspaced = require("../operator-no-unspaced");
-
-var ruleName = (0, _utils.namespace)("operator-no-newline-before");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: function rejected(operator) {
- return "Unexpected newline before \"".concat(operator, "\"");
- }
-});
-
-exports.messages = messages;
-
-/**
- * The checker function: whether there is a newline before THAT operator.
- */
-function checkNewlineBefore(_ref) {
- var string = _ref.string,
- globalIndex = _ref.globalIndex,
- startIndex = _ref.startIndex,
- endIndex = _ref.endIndex,
- node = _ref.node,
- result = _ref.result;
- var symbol = string.substring(startIndex, endIndex + 1);
- var newLineBefore = false;
- var index = startIndex - 1;
-
- while (index && (0, _utils.isWhitespace)(string[index])) {
- if (string[index] === "\n") {
- newLineBefore = true;
- break;
- }
-
- index--;
- }
-
- if (newLineBefore) {
- _stylelint.utils.report({
- ruleName: ruleName,
- result: result,
- node: node,
- message: messages.rejected(symbol),
- index: endIndex + globalIndex
- });
- }
-}
-
-function _default(expectation) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation
- });
-
- if (!validOptions) {
- return;
- }
-
- (0, _utils.eachRoot)(root, checkRoot);
-
- function checkRoot(root) {
- (0, _operatorNoUnspaced.calculationOperatorSpaceChecker)({
- root: root,
- result: result,
- checker: checkNewlineBefore
- });
- }
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/operator-no-unspaced/index.js b/assets/node_modules/stylelint-scss/dist/rules/operator-no-unspaced/index.js
deleted file mode 100644
index 2389fee..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/operator-no-unspaced/index.js
+++ /dev/null
@@ -1,268 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.calculationOperatorSpaceChecker = calculationOperatorSpaceChecker;
-exports.messages = exports.ruleName = void 0;
-
-var _postcssMediaQueryParser = _interopRequireDefault(require("postcss-media-query-parser"));
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-var ruleName = (0, _utils.namespace)("operator-no-unspaced");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expectedAfter: function expectedAfter(operator) {
- return "Expected single space after \"".concat(operator, "\"");
- },
- expectedBefore: function expectedBefore(operator) {
- return "Expected single space before \"".concat(operator, "\"");
- }
-});
-/**
- * The actual check for are there (un)necessary whitespaces
- */
-
-
-exports.messages = messages;
-
-function checkSpaces(_ref) {
- var string = _ref.string,
- globalIndex = _ref.globalIndex,
- startIndex = _ref.startIndex,
- endIndex = _ref.endIndex,
- node = _ref.node,
- result = _ref.result;
- var symbol = string.substring(startIndex, endIndex + 1);
- var beforeOk = string[startIndex - 1] === " " && !(0, _utils.isWhitespace)(string[startIndex - 2]) || newlineBefore(string, startIndex - 1);
-
- if (!beforeOk) {
- _stylelint.utils.report({
- ruleName: ruleName,
- result: result,
- node: node,
- message: messages.expectedBefore(symbol),
- index: startIndex + globalIndex
- });
- }
-
- var afterOk = string[endIndex + 1] === " " && !(0, _utils.isWhitespace)(string[endIndex + 2]) || string[endIndex + 1] === "\n" || string.substr(endIndex + 1, 2) === "\r\n";
-
- if (!afterOk) {
- _stylelint.utils.report({
- ruleName: ruleName,
- result: result,
- node: node,
- message: messages.expectedAfter(symbol),
- index: endIndex + globalIndex
- });
- }
-}
-
-function newlineBefore(str, startIndex) {
- var index = startIndex;
-
- while (index && (0, _utils.isWhitespace)(str[index])) {
- if (str[index] === "\n") return true;
- index--;
- }
-
- return false;
-}
-
-function _default(expectation) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation
- });
-
- if (!validOptions) {
- return;
- }
-
- (0, _utils.eachRoot)(root, checkRoot);
-
- function checkRoot(root) {
- var rootString = root.source.input.css;
-
- if (rootString.trim() === "") {
- return;
- }
-
- calculationOperatorSpaceChecker({
- root: root,
- result: result,
- checker: checkSpaces
- });
- }
- };
-}
-/**
- * The core rule logic function. This one can be imported by some other rules
- * that work with Sass operators
- *
- * @param {Object} args -- Named arguments object
- * @param {PostCSS Root} args.root
- * @param {PostCSS Result} args.result
- * @param {function} args.checker -- the function that is run against all the
- * operators found in the input. Takes these arguments:
- * {Object} cbArgs -- Named arguments object
- * {string} cbArgs.string -- the input string (suspected operation)
- * {number} cbArgs.globalIndex -- the string's index in a global input
- * {number} cbArgs.startIndex -- the start index of a sybmol to inspect
- * {number} cbArgs.endIndex -- the end index of a sybmol to inspect
- * (two indexes needed to allow for `==`, `!=`, etc.)
- * {PostCSS Node} cbArgs.node -- for stylelint.utils.report
- * {PostCSS Result} cbArgs.result -- for stylelint.utils.report
- */
-
-
-function calculationOperatorSpaceChecker(_ref2) {
- var root = _ref2.root,
- result = _ref2.result,
- checker = _ref2.checker;
-
- /**
- * Takes a string, finds all occurencies of Sass interpolaion in it, then
- * finds all operators inside that interpolation
- *
- * @return {array} An array of ojbects { string, operators } - effectively,
- * a list of operators for each Sass interpolation occurence
- */
- function findInterpolation(string, startIndex) {
- var interpolationRegex = /#{(.*?)}/g;
- var results = []; // Searching for interpolation
-
- var match = interpolationRegex.exec(string);
- startIndex = !isNaN(startIndex) ? Number(startIndex) : 0;
-
- while (match !== null) {
- results.push({
- source: match[0],
- operators: (0, _utils.findOperators)({
- string: match[0],
- globalIndex: match.index + startIndex
- })
- });
- match = interpolationRegex.exec(string);
- }
-
- return results;
- }
-
- root.walk(function (item) {
- if (item.prop === "unicode-range") {
- return;
- }
-
- var results = []; // Check a value (`10px` in `width: 10px;`)
-
- if (item.value !== undefined) {
- results.push({
- source: item.value,
- operators: (0, _utils.findOperators)({
- string: item.value,
- globalIndex: (0, _utils.declarationValueIndex)(item),
- // For Sass variable values some special rules apply
- isAfterColon: item.prop[0] === "$"
- })
- });
- } // Property name
-
-
- if (item.prop !== undefined) {
- results = results.concat(findInterpolation(item.prop));
- } // Selector
-
-
- if (item.selector !== undefined) {
- results = results.concat(findInterpolation(item.selector));
- }
-
- if (item.type === "atrule") {
- // @forward, @use and @at-root
- if (item.name === "forward" || item.name === "use" || item.name === "at-root") {
- return;
- } // Media queries
-
-
- if (item.name === "media" || item.name === "import") {
- (0, _postcssMediaQueryParser["default"])(item.params).walk(function (node) {
- var type = node.type;
-
- if (["keyword", "media-type", "media-feature"].includes(type)) {
- results = results.concat(findInterpolation(node.value, (0, _utils.atRuleParamIndex)(item) + node.sourceIndex));
- } else if (["value", "url"].includes(type)) {
- results.push({
- source: node.value,
- operators: (0, _utils.findOperators)({
- string: node.value,
- globalIndex: (0, _utils.atRuleParamIndex)(item) + node.sourceIndex,
- isAfterColon: true
- })
- });
- }
- });
- } else {
- // Function and mixin definitions and other rules
- results.push({
- source: item.params,
- operators: (0, _utils.findOperators)({
- string: item.params,
- globalIndex: (0, _utils.atRuleParamIndex)(item),
- isAfterColon: true
- })
- });
- }
- } // All the strings have been parsed, now run whitespace checking
-
-
- results.forEach(function (el) {
- // Only if there are operators within a string
- if (el.operators && el.operators.length > 0) {
- el.operators.forEach(function (operator) {
- checker({
- string: el.source,
- globalIndex: operator.globalIndex,
- startIndex: operator.startIndex,
- endIndex: operator.endIndex,
- node: item,
- result: result
- });
- });
- }
- });
- }); // Checking interpolation inside comments
- // We have to give up on PostCSS here because it skips some inline comments
-
- (0, _utils.findCommentsInRaws)(root.source.input.css).forEach(function (comment) {
- var startIndex = comment.source.start + comment.raws.startToken.length + comment.raws.left.length;
-
- if (comment.type !== "css") {
- return;
- }
-
- findInterpolation(comment.text).forEach(function (el) {
- // Only if there are operators within a string
- if (el.operators && el.operators.length > 0) {
- el.operators.forEach(function (operator) {
- checker({
- string: el.source,
- globalIndex: operator.globalIndex + startIndex,
- startIndex: operator.startIndex,
- endIndex: operator.endIndex,
- node: root,
- result: result
- });
- });
- }
- });
- });
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/partial-no-import/index.js b/assets/node_modules/stylelint-scss/dist/rules/partial-no-import/index.js
deleted file mode 100644
index 045f7ea..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/partial-no-import/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _path = _interopRequireDefault(require("path"));
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-var ruleName = (0, _utils.namespace)("partial-no-import");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: "Unexpected @import in a partial"
-});
-
-exports.messages = messages;
-
-function _default(on) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: on
- });
-
- if (!validOptions) {
- return;
- }
-
- if (root.source.input.file === undefined || !root.source.input.file) {
- result.warn("The 'partial-no-import' rule won't work if linting in a code string without an actual file.");
- return;
- }
-
- var fileName = _path["default"].basename(root.source.input.file);
-
- var extName = _path["default"].extname(root.source.input.file);
-
- function checkImportForCSS(path, decl) {
- // Stripping trailing quotes and whitespaces, if any
- var pathStripped = path.replace(/^\s*?("|')\s*/, "").replace(/\s*("|')\s*?$/, ""); // Skipping importing empty import, CSS: url(), ".css", URI with a protocol, media
-
- if (pathStripped.trim() === "" || pathStripped.slice(0, 4) === "url(" || pathStripped.slice(-4) === ".css" || pathStripped.search("//") !== -1 || pathStripped.search(/(?:\s|[,)"'])\w+$/) !== -1) {
- return;
- }
-
- _stylelint.utils.report({
- message: messages.expected,
- node: decl,
- index: decl.params.indexOf(path),
- result: result,
- ruleName: ruleName
- });
- } // Usual CSS file
-
-
- if (extName === ".css") {
- return;
- } // Not a partial
-
-
- if (fileName[0] !== "_") {
- return;
- }
-
- root.walkAtRules("import", function (mixinCall) {
- // Check if @import is treated as CSS import; report only if not
- // Processing comma-separated lists of import paths
- mixinCall.params.split(/["']\s*,/).forEach(function (path) {
- checkImportForCSS(path, mixinCall);
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/percent-placeholder-pattern/index.js b/assets/node_modules/stylelint-scss/dist/rules/percent-placeholder-pattern/index.js
deleted file mode 100644
index 830d472..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/percent-placeholder-pattern/index.js
+++ /dev/null
@@ -1,99 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _lodash = require("lodash");
-
-var _postcssResolveNestedSelector = _interopRequireDefault(require("postcss-resolve-nested-selector"));
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-var ruleName = (0, _utils.namespace)("percent-placeholder-pattern");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expected: function expected(placeholder) {
- return "Expected %-placeholder \"%".concat(placeholder, "\" to match specified pattern");
- }
-});
-
-exports.messages = messages;
-
-function _default(pattern) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: pattern,
- possible: [_lodash.isRegExp, _lodash.isString]
- });
-
- if (!validOptions) {
- return;
- }
-
- var placeholderPattern = (0, _lodash.isString)(pattern) ? new RegExp(pattern) : pattern; // Checking placeholder definitions (looking among regular rules)
-
- root.walkRules(function (rule) {
- var selector = rule.selector; // Just a shorthand for calling `parseSelector`
-
- function parse(selector) {
- (0, _utils.parseSelector)(selector, result, rule, function (s) {
- return checkSelector(s, rule);
- });
- } // If it's a custom prop or a less mixin
-
-
- if (!(0, _utils.isStandardRule)(rule)) {
- return;
- } // If the selector has interpolation
-
-
- if (!(0, _utils.isStandardSelector)(selector)) {
- return;
- } // Nested selectors are processed in steps, as nesting levels are resolved.
- // Here we skip processing intermediate parts of selectors (to process only fully resolved selectors)
- // if (rule.nodes.some(node => node.type === "rule" || node.type === "atrule")) { return }
- // Only resolve selectors that have an interpolating "&"
-
-
- if ((0, _utils.hasInterpolatingAmpersand)(selector)) {
- (0, _postcssResolveNestedSelector["default"])(selector, rule).forEach(parse);
- } else {
- parse(selector);
- }
- });
-
- function checkSelector(fullSelector, rule) {
- // postcss-selector-parser gives %placeholders' nodes a "tag" type
- fullSelector.walkTags(function (compoundSelector) {
- var value = compoundSelector.value,
- sourceIndex = compoundSelector.sourceIndex;
-
- if (value[0] !== "%") {
- return;
- }
-
- var placeholder = value.slice(1);
-
- if (placeholderPattern.test(placeholder)) {
- return;
- }
-
- _stylelint.utils.report({
- result: result,
- ruleName: ruleName,
- message: messages.expected(placeholder),
- node: rule,
- index: sourceIndex
- });
- });
- }
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/selector-nest-combinators/index.js b/assets/node_modules/stylelint-scss/dist/rules/selector-nest-combinators/index.js
deleted file mode 100644
index 3a85306..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/selector-nest-combinators/index.js
+++ /dev/null
@@ -1,139 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("selector-nest-combinators");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- expectedInterpolation: "Expected interpolation to be in a nested form",
- expected: function expected(combinator, type) {
- return "Expected combinator \"".concat(combinator, "\" of type \"").concat(type, "\" to be in a nested form");
- },
- rejected: "Unexpected nesting found in selector"
-});
-
-exports.messages = messages;
-
-function _default(expectation) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: expectation,
- possible: ["always", "never"]
- });
-
- if (!validOptions) {
- return;
- }
-
- function precedesParentSelector(current) {
- do {
- current = current.next();
-
- if (current.type === "nesting") {
- return true;
- }
- } while (current.next());
-
- return false;
- } // attribute, class, combinator, comment, id, nesting, pseudo, root, selector, string, tag, or universal
-
-
- var chainingTypes = ["attribute", "class", "id", "pseudo", "tag", "universal"];
- var interpolationRe = /#{.+?}$/;
- root.walkRules(function (rule) {
- if (rule.parent && rule.parent.type === "atrule" && rule.parent.name === "keyframes") {
- return;
- }
-
- if (typeof rule.selector === "string") {
- var isNestedProperty = rule.selector.slice(-1) === ":";
-
- if (isNestedProperty) {
- return;
- }
- }
-
- (0, _utils.parseSelector)(rule.selector, result, rule, function (fullSelector) {
- var message;
- fullSelector.walk(function (node) {
- if (node.value === "}") {
- return;
- }
-
- if (expectation === "always") {
- if (node.type === "selector") {
- return;
- }
-
- if (node.parent && node.parent.type === "selector" && node.parent.parent && node.parent.parent.type === "pseudo") {
- return;
- }
-
- if (!node.prev()) {
- return;
- }
-
- if (node.next() && precedesParentSelector(node)) {
- return;
- }
-
- if (node.type === "combinator") {
- if (!chainingTypes.includes(node.next().type)) {
- return;
- }
-
- if (!chainingTypes.includes(node.prev().type)) {
- return;
- }
- }
-
- if (chainingTypes.includes(node.type) && !chainingTypes.includes(node.prev().type)) {
- return;
- }
-
- if (node.type !== "combinator" && !chainingTypes.includes(node.type)) {
- return;
- }
-
- var hasInterpolation = interpolationRe.test(rule.selector);
-
- if (node.type !== "combinator" && hasInterpolation) {
- return;
- }
-
- if (hasInterpolation) {
- message = messages.expectedInterpolation;
- } else {
- message = messages.expected(node.value, node.type);
- }
- }
-
- if (expectation === "never") {
- if (rule.parent.type === "root" || rule.parent.type === "atrule") {
- return;
- }
-
- message = messages.rejected;
- }
-
- _stylelint.utils.report({
- ruleName: ruleName,
- result: result,
- node: rule,
- message: message,
- index: node.sourceIndex
- });
- });
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js b/assets/node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
deleted file mode 100644
index 0a8cf13..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
+++ /dev/null
@@ -1,69 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("selector-no-redundant-nesting-selector");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: "Unnecessary nesting selector (&)"
-});
-
-exports.messages = messages;
-
-function _default(actual) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: actual
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules(/&/, function (rule) {
- (0, _utils.parseSelector)(rule.selector, result, rule, function (fullSelector) {
- // "Ampersand followed by a combinator followed by non-combinator non-ampersand and not the selector end"
- fullSelector.walkNesting(function (node) {
- var prev = node.prev();
-
- if (prev) {
- return;
- }
-
- var next = node.next();
-
- if (!next && node.parent.parent.nodes.length > 1) {
- return;
- }
-
- if (next && next.type !== "combinator") {
- return;
- }
-
- var nextNext = next ? next.next() : null;
-
- if (nextNext && (nextNext.type === "combinator" || nextNext.type === "nesting")) {
- return;
- }
-
- _stylelint.utils.report({
- ruleName: ruleName,
- result: result,
- node: rule,
- message: messages.rejected,
- index: node.sourceIndex
- });
- });
- });
- });
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/rules/selector-no-union-class-name/index.js b/assets/node_modules/stylelint-scss/dist/rules/selector-no-union-class-name/index.js
deleted file mode 100644
index cfb1ed1..0000000
--- a/assets/node_modules/stylelint-scss/dist/rules/selector-no-union-class-name/index.js
+++ /dev/null
@@ -1,88 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-exports.messages = exports.ruleName = void 0;
-
-var _postcssSelectorParser = require("postcss-selector-parser");
-
-var _stylelint = require("stylelint");
-
-var _utils = require("../../utils");
-
-var ruleName = (0, _utils.namespace)("selector-no-union-class-name");
-exports.ruleName = ruleName;
-
-var messages = _stylelint.utils.ruleMessages(ruleName, {
- rejected: "Unexpected union class name with the parent selector (&)"
-});
-
-exports.messages = messages;
-var validNestingTypes = [_postcssSelectorParser.isClassName, _postcssSelectorParser.isCombinator, _postcssSelectorParser.isAttribute, _postcssSelectorParser.isIdentifier, _postcssSelectorParser.isPseudoClass, _postcssSelectorParser.isPseudoElement];
-
-function _default(actual) {
- return function (root, result) {
- var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
- actual: actual
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules(/&/, function (rule) {
- var parentNodes = [];
- var selector = getSelectorFromRule(rule.parent);
-
- if (selector) {
- (0, _utils.parseSelector)(selector, result, rule, function (fullSelector) {
- fullSelector.walk(function (node) {
- return parentNodes.push(node);
- });
- });
- }
-
- if (parentNodes.length === 0) return;
- var lastParentNode = parentNodes[parentNodes.length - 1];
- if (!(0, _postcssSelectorParser.isClassName)(lastParentNode)) return;
- (0, _utils.parseSelector)(rule.selector, result, rule, function (fullSelector) {
- fullSelector.walkNesting(function (node) {
- var next = node.next();
- if (!next) return;
- if (validNestingTypes.some(function (isType) {
- return isType(next);
- })) return;
-
- _stylelint.utils.report({
- ruleName: ruleName,
- result: result,
- node: rule,
- message: messages.rejected,
- index: node.sourceIndex
- });
- });
- });
- });
- };
-}
-/**
- * Searches for the closest rule which
- * has a selector and returns the selector
- * @returns {string|undefined}
- */
-
-
-function getSelectorFromRule(rule) {
- // All non at-rules have their own selector
- if (rule.selector !== undefined) {
- return rule.selector;
- } // At-rules like @mixin don't have a selector themself
- // but their parents might have one
-
-
- if (rule.parent) {
- return getSelectorFromRule(rule.parent);
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/testUtils/basicChecks.js b/assets/node_modules/stylelint-scss/dist/testUtils/basicChecks.js
deleted file mode 100644
index b912b66..0000000
--- a/assets/node_modules/stylelint-scss/dist/testUtils/basicChecks.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-
-// These should pass for *almost* every rule
-module.exports = [{
- code: "",
- description: "empty stylesheet"
-}, {
- code: "a {}",
- description: "empty rule"
-}, {
- code: '@import "foo.css";',
- description: "blockless statement"
-}, {
- code: ":global {}",
- description: "CSS Modules global empty rule set"
-}]; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/addEmptyLineBefore.js b/assets/node_modules/stylelint-scss/dist/utils/addEmptyLineBefore.js
deleted file mode 100644
index 406ce3f..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/addEmptyLineBefore.js
+++ /dev/null
@@ -1,23 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.addEmptyLineBefore = addEmptyLineBefore;
-
-// Add an empty line before a node. Mutates the node.
-function addEmptyLineBefore(node
-/*: postcss$node*/
-, newline
-/*: '\n' | '\r\n'*/
-)
-/*: postcss$node*/
-{
- if (!/\r?\n/.test(node.raws.before)) {
- node.raws.before = newline.repeat(2) + node.raws.before;
- } else {
- node.raws.before = node.raws.before.replace(/(\r?\n)/, "".concat(newline, "$1"));
- }
-
- return node;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/atRuleBaseName.js b/assets/node_modules/stylelint-scss/dist/utils/atRuleBaseName.js
deleted file mode 100644
index 183d661..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/atRuleBaseName.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Get an at rule's base name
- *
- * @param {AtRule} atRule
- * @return {string} The name
- */
-function _default(atRule) {
- return atRule.params.replace(/\([^)]*\)/, "").trim();
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/atRuleParamIndex.js b/assets/node_modules/stylelint-scss/dist/utils/atRuleParamIndex.js
deleted file mode 100644
index f6bfa22..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/atRuleParamIndex.js
+++ /dev/null
@@ -1,23 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Get the index of a media query's params
- *
- * @param {AtRule} atRule
- * @return {int} The index
- */
-function _default(atRule) {
- // Initial 1 is for the `@`
- var index = 1 + atRule.name.length;
-
- if (atRule.raw("afterName")) {
- index += atRule.raw("afterName").length;
- }
-
- return index;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/beforeBlockString.js b/assets/node_modules/stylelint-scss/dist/utils/beforeBlockString.js
deleted file mode 100644
index c5f82e8..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/beforeBlockString.js
+++ /dev/null
@@ -1,47 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Given a CSS statement, return the string before the block.
- * For rules, this is the selector list (and surrounding whitespace).
- * For at-rules, this is the name and params (and surrounding whitespace).
- *
- * If there is no block, return empty string.
- *
- * @param {Rule|AtRule} statement - postcss rule or at-rule node
- * @param {object} options
- * @param {boolean} [options.noRawBefore] - Leave out the `before` string
- * @return {string}
- */
-function _default(statement) {
- var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
- noRawBefore = _ref.noRawBefore;
-
- var result = "";
-
- if (statement.type !== "rule" && statement.type !== "atrule") {
- return result;
- }
-
- if (!noRawBefore) {
- result += statement.raws.before;
- }
-
- if (statement.type === "rule") {
- result += statement.selector;
- } else {
- result += "@".concat(statement.name).concat(statement.raws.afterName).concat(statement.params);
- }
-
- var between = statement.raws.between;
-
- if (between !== undefined) {
- result += between;
- }
-
- return result;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/blockString.js b/assets/node_modules/stylelint-scss/dist/utils/blockString.js
deleted file mode 100644
index f722477..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/blockString.js
+++ /dev/null
@@ -1,31 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-var _beforeBlockString = _interopRequireDefault(require("./beforeBlockString"));
-
-var _hasBlock = _interopRequireDefault(require("./hasBlock"));
-
-var _rawNodeString = _interopRequireDefault(require("./rawNodeString"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-/**
- * Return a CSS statement's block -- the string that starts with `{` and ends with `}`.
- *
- * If the statement has no block (e.g. `@import url(foo.css);`),
- * return undefined.
- *
- * @param {Rule|AtRule} statement - postcss rule or at-rule node
- * @return {string|undefined}
- */
-function _default(statement) {
- if (!(0, _hasBlock["default"])(statement)) {
- return;
- }
-
- return (0, _rawNodeString["default"])(statement).slice((0, _beforeBlockString["default"])(statement).length);
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/configurationError.js b/assets/node_modules/stylelint-scss/dist/utils/configurationError.js
deleted file mode 100644
index e0eb053..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/configurationError.js
+++ /dev/null
@@ -1,18 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Create configurationError from text and set CLI exit code
- *
- * @param {string} text
- * @return {Error} - The error, with text and exit code
- */
-function _default(text) {
- var err = new Error(text);
- err.code = 78;
- return err;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/declarationValueIndex.js b/assets/node_modules/stylelint-scss/dist/utils/declarationValueIndex.js
deleted file mode 100644
index 3521a90..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/declarationValueIndex.js
+++ /dev/null
@@ -1,18 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Get the index of a declaration's value
- *
- * @param {Decl} decl
- * @return {int} The index
- */
-function _default(decl) {
- var beforeColon = decl.toString().indexOf(":");
- var afterColon = decl.raw("between").length - decl.raw("between").indexOf(":");
- return beforeColon + afterColon;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/eachRoot.js b/assets/node_modules/stylelint-scss/dist/utils/eachRoot.js
deleted file mode 100644
index 0162f53..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/eachRoot.js
+++ /dev/null
@@ -1,23 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Executes a provided function once for each CSS block element.
- *
- * @param {Root|Document} root - root element of file.
- * @param {function} cb - Function to execute for each CSS block element
- */
-function _default(root, cb) {
- // class `Document` is a part of `postcss-html`,
- // It is collection of roots in HTML File.
- // See: https://github.com/gucong3000/postcss-html/blob/master/lib/document.js
- if (root.constructor.name === "Document") {
- root.nodes.forEach(cb);
- } else {
- cb(root);
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/findCommentsInRaws.js b/assets/node_modules/stylelint-scss/dist/utils/findCommentsInRaws.js
deleted file mode 100644
index b44c8fd..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/findCommentsInRaws.js
+++ /dev/null
@@ -1,227 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = findCommentsInRaws;
-
-/**
- * Finds comments, both CSS comments and double slash ones, in a CSS string
- * This helper exists because PostCSS drops some inline comments (those
- * between seelctors, property values, etc.)
- * https://github.com/postcss/postcss/issues/845#issuecomment-232306259
- *
- * @param [string] rawString -- the source raw CSS string
- * @return [array] array of objects with these props:
- * � type -- "css" or "double-slash"
- * � source: { start, end }
- * IMPORTANT: the function itself considers \r as a character, and counts
- * it for `start` and `end`. But if their values are passed to PostCSS's
- * result.warn(), than "\r\n" is consideren ONE CHAR (newline)!
- * � raws
- * raws.startToken -- `/*`, `/**`, `/**!`, etc.
- * raws.left -- whitespace after the comment opening marker
- * raws.text -- the full comment, including markers (//, /*)
- * raws.right -- whitespace before the comment closing marker
- * raws.endToken -- `*\/`, `**\/` for CSS comments
- * � text -- the comment text only, excluding //, /*, trailing whitespaces
- * � inlineAfter -- true, if there is something before the comment on
- * the same line
- * � inlineBefore -- true, if there is something after the comment on
- * the same line
- */
-function findCommentsInRaws(rawString) {
- var result = [];
- var comment = {}; // Keeps track of which structure the parser is inside (string, comment,
- // url function, parens). E.g., /* comment */ inside a string doesn't
- // constitute a comment, so as url(//path)
-
- var modesEntered = [{
- mode: "normal",
- character: null
- }];
- var commentStart = null; // postcss-scss transforms //-comments into CSS comments, like so:
- // `// comment` -> `/* comment*/`. So to have a correct intex we need to
- // keep track on the added `*/` sequences
-
- var offset = 0;
-
- for (var i = 0; i < rawString.length; i++) {
- var character = rawString[i];
- var prevChar = i > 0 ? rawString[i - 1] : null;
- var nextChar = i + 1 < rawString.length ? rawString[i + 1] : null;
- var lastModeIndex = modesEntered.length - 1;
- var mode = modesEntered[lastModeIndex] && modesEntered[lastModeIndex].mode;
-
- switch (character) {
- // If entering/exiting a string
- case '"':
- case "'":
- {
- if (mode === "comment") {
- break;
- }
-
- if (mode === "string" && modesEntered[lastModeIndex].character === character && prevChar !== "\\") {
- // Exiting a string
- modesEntered.pop();
- } else {
- // Entering a string
- modesEntered.push({
- mode: "string",
- character: character
- });
- }
-
- break;
- }
- // Entering url, other function or parens (only url matters)
-
- case "(":
- {
- if (mode === "comment" || mode === "string") {
- break;
- }
-
- var functionNameRegSearch = /(?:^|(?:\n)|(?:\r)|(?:\s-)|[:\s,.(){}*+/%])([a-zA-Z0-9_-]*)$/.exec(rawString.substring(0, i)); // A `\S(` can be in, say, `@media(`
-
- if (!functionNameRegSearch) {
- modesEntered.push({
- mode: "parens",
- character: "("
- });
- break;
- }
-
- var functionName = functionNameRegSearch[1];
- modesEntered.push({
- mode: functionName === "url" ? "url" : "parens",
- character: "("
- });
- break;
- }
- // Exiting url, other function or parens
-
- case ")":
- {
- if (mode === "comment" || mode === "string") {
- break;
- }
-
- modesEntered.pop();
- break;
- }
- // checking for comment
-
- case "/":
- {
- // Break if the / is inside a comment because we leap over the second
- // slash in // and in */, so the / is not from a marker. Also break
- // if inside a string
- if (mode === "comment" || mode === "string") {
- break;
- }
-
- if (nextChar === "*") {
- modesEntered.push({
- mode: "comment",
- character: "/*"
- });
- comment = {
- type: "css",
- source: {
- start: i + offset
- },
- // If i is 0 then the file/the line starts with this comment
- inlineAfter: i > 0 && rawString.substring(0, i).search(/\n\s*$/) === -1
- };
- commentStart = i; // Skip the next iteration as the * is already checked
-
- i++;
- } else if (nextChar === "/") {
- // `url(//path/to/file)` has no comment
- if (mode === "url") {
- break;
- }
-
- modesEntered.push({
- mode: "comment",
- character: "//"
- });
- comment = {
- type: "double-slash",
- source: {
- start: i + offset
- },
- // If i is 0 then the file/the line starts with this comment
- inlineAfter: i > 0 && rawString.substring(0, i).search(/\n\s*$/) === -1
- };
- commentStart = i; // Skip the next iteration as the second slash in // is already checked
-
- i++;
- }
-
- break;
- }
- // Might be a closing `*/`
-
- case "*":
- {
- if (mode === "comment" && modesEntered[lastModeIndex].character === "/*" && nextChar === "/") {
- comment.source.end = i + 1 + offset;
- var commentRaw = rawString.substring(commentStart, i + 2);
- var matches = /^(\/\*+[!#]{0,1})(\s*)([\s\S]*?)(\s*?)(\*+\/)$/.exec(commentRaw);
- modesEntered.pop();
- comment.raws = {
- startToken: matches[1],
- left: matches[2],
- text: commentRaw,
- right: matches[4],
- endToken: matches[5]
- };
- comment.text = matches[3];
- comment.inlineBefore = rawString.substring(i + 2).search(/^\s*?\S+\s*?\n/) !== -1;
- result.push(Object.assign({}, comment));
- comment = {}; // Skip the next loop as the / in */ is already checked
-
- i++;
- }
-
- break;
- }
-
- default:
- {
- var isNewline = character === "\r" && rawString[i + 1] === "\n" || character === "\n" && rawString[i - 1] !== "\r"; // //-comments end before newline and if the code string ends
-
- if (isNewline || i === rawString.length - 1) {
- if (mode === "comment" && modesEntered[lastModeIndex].character === "//") {
- comment.source.end = (isNewline ? i - 1 : i) + offset;
-
- var _commentRaw = rawString.substring(commentStart, isNewline ? i : i + 1);
-
- var _matches = /^(\/+)(\s*)(.*?)(\s*?)$/.exec(_commentRaw);
-
- modesEntered.pop();
- comment.raws = {
- startToken: _matches[1],
- left: _matches[2],
- text: _commentRaw,
- right: _matches[4]
- };
- comment.text = _matches[3];
- comment.inlineBefore = false;
- result.push(Object.assign({}, comment));
- comment = {}; // Compensate for the `*/` added by postcss-scss
-
- offset += 2;
- }
- }
-
- break;
- }
- }
- }
-
- return result;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/hasBlock.js b/assets/node_modules/stylelint-scss/dist/utils/hasBlock.js
deleted file mode 100644
index 1d21418..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/hasBlock.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Check if a statement has an block (empty or otherwise).
- *
- * @param {Rule|AtRule} statement - postcss rule or at-rule node
- * @return {boolean} True if `statement` has a block (empty or otherwise)
- */
-function _default(statement) {
- return statement.nodes !== undefined;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/hasEmptyLine.js b/assets/node_modules/stylelint-scss/dist/utils/hasEmptyLine.js
deleted file mode 100644
index 9f313ab..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/hasEmptyLine.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Check if a string contains at least one empty line
- *
- * @param {string} input
- * @return {boolean}
- */
-function _default(string) {
- return string && (string.includes("\n\n") || string.includes("\n\r\n"));
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/hasInterpolatingAmpersand.js b/assets/node_modules/stylelint-scss/dist/utils/hasInterpolatingAmpersand.js
deleted file mode 100644
index e2113ac..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/hasInterpolatingAmpersand.js
+++ /dev/null
@@ -1,37 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Check whether a selector has an interpolating ampersand
- * An "interpolating ampersand" is an "&" used to interpolate within another
- * simple selector (e.g. `&-modifier`), rather than an "&" that stands
- * on its own as a simple selector (e.g. `& .child`)
- *
- * @param {string} selector
- * @return {boolean} If `true`, the selector has an interpolating ampersand
- */
-function _default(selector) {
- for (var i = 0; i < selector.length; i++) {
- if (selector[i] !== "&") {
- continue;
- }
-
- if (selector[i - 1] !== undefined && !isCombinator(selector[i - 1])) {
- return true;
- }
-
- if (selector[i + 1] !== undefined && !isCombinator(selector[i + 1])) {
- return true;
- }
- }
-
- return false;
-}
-
-function isCombinator(x) {
- return /[\s+>~]/.test(x);
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/hasInterpolation.js b/assets/node_modules/stylelint-scss/dist/utils/hasInterpolation.js
deleted file mode 100644
index 5cf5dc2..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/hasInterpolation.js
+++ /dev/null
@@ -1,31 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-var _hasLessInterpolation = _interopRequireDefault(require("./hasLessInterpolation"));
-
-var _hasPsvInterpolation = _interopRequireDefault(require("./hasPsvInterpolation"));
-
-var _hasScssInterpolation = _interopRequireDefault(require("./hasScssInterpolation"));
-
-var _hasTplInterpolation = _interopRequireDefault(require("./hasTplInterpolation"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-/**
- * Check whether a string has interpolation
- *
- * @param {string} string
- * @return {boolean} If `true`, a string has interpolation
- */
-function _default(string) {
- // SCSS or Less interpolation
- if ((0, _hasLessInterpolation["default"])(string) || (0, _hasScssInterpolation["default"])(string) || (0, _hasTplInterpolation["default"])(string) || (0, _hasPsvInterpolation["default"])(string)) {
- return true;
- }
-
- return false;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/hasLessInterpolation.js b/assets/node_modules/stylelint-scss/dist/utils/hasLessInterpolation.js
deleted file mode 100644
index 32dabbf..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/hasLessInterpolation.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Check whether a string has less interpolation
- *
- * @param {string} string
- * @return {boolean} If `true`, a string has less interpolation
- */
-function _default(string) {
- return /@{.+?}/.test(string);
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/hasPsvInterpolation.js b/assets/node_modules/stylelint-scss/dist/utils/hasPsvInterpolation.js
deleted file mode 100644
index 849de31..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/hasPsvInterpolation.js
+++ /dev/null
@@ -1,15 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Check whether a string has postcss-simple-vars interpolation
- *
- * @param {string} string
- */
-function _default(string) {
- return /\$\(.+?\)/.test(string);
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/hasScssInterpolation.js b/assets/node_modules/stylelint-scss/dist/utils/hasScssInterpolation.js
deleted file mode 100644
index f6fa421..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/hasScssInterpolation.js
+++ /dev/null
@@ -1,15 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Check whether a string has scss interpolation
- *
- * @param {string} string
- */
-function _default(string) {
- return /#{.+?}/.test(string);
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/hasTplInterpolation.js b/assets/node_modules/stylelint-scss/dist/utils/hasTplInterpolation.js
deleted file mode 100644
index b1ecb67..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/hasTplInterpolation.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Check whether a string has JS template literal interpolation or HTML-like template
- *
- * @param {string} string
- * @return {boolean} If `true`, a string has template literal interpolation
- */
-function _default(string) {
- return /{.+?}/.test(string);
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/index.js b/assets/node_modules/stylelint-scss/dist/utils/index.js
deleted file mode 100644
index 8481111..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/index.js
+++ /dev/null
@@ -1,231 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-Object.defineProperty(exports, "addEmptyLineBefore", {
- enumerable: true,
- get: function get() {
- return _addEmptyLineBefore.addEmptyLineBefore;
- }
-});
-Object.defineProperty(exports, "atRuleBaseName", {
- enumerable: true,
- get: function get() {
- return _atRuleBaseName["default"];
- }
-});
-Object.defineProperty(exports, "atRuleParamIndex", {
- enumerable: true,
- get: function get() {
- return _atRuleParamIndex["default"];
- }
-});
-Object.defineProperty(exports, "beforeBlockString", {
- enumerable: true,
- get: function get() {
- return _beforeBlockString["default"];
- }
-});
-Object.defineProperty(exports, "blockString", {
- enumerable: true,
- get: function get() {
- return _blockString["default"];
- }
-});
-Object.defineProperty(exports, "declarationValueIndex", {
- enumerable: true,
- get: function get() {
- return _declarationValueIndex["default"];
- }
-});
-Object.defineProperty(exports, "eachRoot", {
- enumerable: true,
- get: function get() {
- return _eachRoot["default"];
- }
-});
-Object.defineProperty(exports, "findCommentsInRaws", {
- enumerable: true,
- get: function get() {
- return _findCommentsInRaws["default"];
- }
-});
-Object.defineProperty(exports, "hasBlock", {
- enumerable: true,
- get: function get() {
- return _hasBlock["default"];
- }
-});
-Object.defineProperty(exports, "hasEmptyLine", {
- enumerable: true,
- get: function get() {
- return _hasEmptyLine["default"];
- }
-});
-Object.defineProperty(exports, "hasInterpolatingAmpersand", {
- enumerable: true,
- get: function get() {
- return _hasInterpolatingAmpersand["default"];
- }
-});
-Object.defineProperty(exports, "isInlineComment", {
- enumerable: true,
- get: function get() {
- return _isInlineComment["default"];
- }
-});
-Object.defineProperty(exports, "isNativeCssFunction", {
- enumerable: true,
- get: function get() {
- return _isNativeCssFunction["default"];
- }
-});
-Object.defineProperty(exports, "isSingleLineString", {
- enumerable: true,
- get: function get() {
- return _isSingleLineString["default"];
- }
-});
-Object.defineProperty(exports, "isStandardRule", {
- enumerable: true,
- get: function get() {
- return _isStandardRule["default"];
- }
-});
-Object.defineProperty(exports, "isStandardSelector", {
- enumerable: true,
- get: function get() {
- return _isStandardSelector["default"];
- }
-});
-Object.defineProperty(exports, "isStandardSyntaxProperty", {
- enumerable: true,
- get: function get() {
- return _isStandardSyntaxProperty["default"];
- }
-});
-Object.defineProperty(exports, "isWhitespace", {
- enumerable: true,
- get: function get() {
- return _isWhitespace["default"];
- }
-});
-Object.defineProperty(exports, "namespace", {
- enumerable: true,
- get: function get() {
- return _namespace["default"];
- }
-});
-Object.defineProperty(exports, "optionsHaveException", {
- enumerable: true,
- get: function get() {
- return _optionsHaveException["default"];
- }
-});
-Object.defineProperty(exports, "optionsHaveIgnored", {
- enumerable: true,
- get: function get() {
- return _optionsHaveIgnored["default"];
- }
-});
-Object.defineProperty(exports, "parseFunctionArguments", {
- enumerable: true,
- get: function get() {
- return _parseFunctionArguments.parseFunctionArguments;
- }
-});
-Object.defineProperty(exports, "parseNestedPropRoot", {
- enumerable: true,
- get: function get() {
- return _parseNestedPropRoot["default"];
- }
-});
-Object.defineProperty(exports, "parseSelector", {
- enumerable: true,
- get: function get() {
- return _parseSelector["default"];
- }
-});
-Object.defineProperty(exports, "rawNodeString", {
- enumerable: true,
- get: function get() {
- return _rawNodeString["default"];
- }
-});
-Object.defineProperty(exports, "removeEmptyLinesBefore", {
- enumerable: true,
- get: function get() {
- return _removeEmptyLinesBefore.removeEmptyLinesBefore;
- }
-});
-Object.defineProperty(exports, "findOperators", {
- enumerable: true,
- get: function get() {
- return _sassValueParser["default"];
- }
-});
-Object.defineProperty(exports, "whitespaceChecker", {
- enumerable: true,
- get: function get() {
- return _whitespaceChecker["default"];
- }
-});
-
-var _addEmptyLineBefore = require("./addEmptyLineBefore");
-
-var _atRuleBaseName = _interopRequireDefault(require("./atRuleBaseName"));
-
-var _atRuleParamIndex = _interopRequireDefault(require("./atRuleParamIndex"));
-
-var _beforeBlockString = _interopRequireDefault(require("./beforeBlockString"));
-
-var _blockString = _interopRequireDefault(require("./blockString"));
-
-var _declarationValueIndex = _interopRequireDefault(require("./declarationValueIndex"));
-
-var _eachRoot = _interopRequireDefault(require("./eachRoot"));
-
-var _findCommentsInRaws = _interopRequireDefault(require("./findCommentsInRaws"));
-
-var _hasBlock = _interopRequireDefault(require("./hasBlock"));
-
-var _hasEmptyLine = _interopRequireDefault(require("./hasEmptyLine"));
-
-var _hasInterpolatingAmpersand = _interopRequireDefault(require("./hasInterpolatingAmpersand"));
-
-var _isInlineComment = _interopRequireDefault(require("./isInlineComment"));
-
-var _isNativeCssFunction = _interopRequireDefault(require("./isNativeCssFunction"));
-
-var _isSingleLineString = _interopRequireDefault(require("./isSingleLineString"));
-
-var _isStandardRule = _interopRequireDefault(require("./isStandardRule"));
-
-var _isStandardSelector = _interopRequireDefault(require("./isStandardSelector"));
-
-var _isStandardSyntaxProperty = _interopRequireDefault(require("./isStandardSyntaxProperty"));
-
-var _isWhitespace = _interopRequireDefault(require("./isWhitespace"));
-
-var _namespace = _interopRequireDefault(require("./namespace"));
-
-var _optionsHaveException = _interopRequireDefault(require("./optionsHaveException"));
-
-var _optionsHaveIgnored = _interopRequireDefault(require("./optionsHaveIgnored"));
-
-var _parseFunctionArguments = require("./parseFunctionArguments");
-
-var _parseNestedPropRoot = _interopRequireDefault(require("./parseNestedPropRoot"));
-
-var _parseSelector = _interopRequireDefault(require("./parseSelector"));
-
-var _rawNodeString = _interopRequireDefault(require("./rawNodeString"));
-
-var _removeEmptyLinesBefore = require("./removeEmptyLinesBefore");
-
-var _sassValueParser = _interopRequireDefault(require("./sassValueParser"));
-
-var _whitespaceChecker = _interopRequireDefault(require("./whitespaceChecker"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/isCustomPropertySet.js b/assets/node_modules/stylelint-scss/dist/utils/isCustomPropertySet.js
deleted file mode 100644
index 32aa0ce..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/isCustomPropertySet.js
+++ /dev/null
@@ -1,23 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-var _lodash = require("lodash");
-
-var _hasBlock = _interopRequireDefault(require("./hasBlock"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-/**
- * Check whether a Node is a custom property set
- *
- * @param {import('postcss').Rule} node
- * @returns {boolean}
- */
-function _default(node) {
- var selector = (0, _lodash.get)(node, "raws.selector.raw", node.selector);
- return node.type === "rule" && (0, _hasBlock["default"])(node) && selector.startsWith("--") && selector.endsWith(":");
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/isInlineComment.js b/assets/node_modules/stylelint-scss/dist/utils/isInlineComment.js
deleted file mode 100644
index 2b6d9d0..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/isInlineComment.js
+++ /dev/null
@@ -1,21 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = isInlineComment;
-
-/**
- * Check if a comment is inline one (i.e. on the same line as some non-comment
- * code). Only works with comments that are not ignored by PostCSS. To work
- * with those that are ignored use `findCommentInRaws`
- *
- * @param {Comment} comment - PostCSS comment node
- * @return {boolean} true, if the comment is an inline one
- */
-function isInlineComment(comment) {
- var nextNode = comment.next();
- var isBeforeSomething = !!nextNode && nextNode.type !== "comment" && comment.source.end.line === nextNode.source.start.line;
- var isAfterSomething = comment.raws.before.search(/\n/) === -1;
- return isAfterSomething || isBeforeSomething;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/isNativeCssFunction.js b/assets/node_modules/stylelint-scss/dist/utils/isNativeCssFunction.js
deleted file mode 100644
index f15c0b4..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/isNativeCssFunction.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = isNativeCssFunction;
-var nativeCssFunctions = new Set(["annotation", "attr", "blur", "brightness", "calc", "character-variant", "circle", "contrast", "cross-fade", "cubic-bezier", "drop-shadow", "element", "ellipse", "fit-content", "format", "frames", "grayscale", "hsl", "hsla", "hue-rotate", "image", "image-set", "inset", "invert", "leader", "linear-gradient", "local", "matrix", "matrix3d", "minmax", "opacity", "ornaments", "perspective", "polygon", "radial-gradient", "rect", "repeat", "repeating-linear-gradient", "repeating-radial-gradient", "rgb", "rgba", "rotate", "rotate3d", "rotateX", "rotatex", "rotateY", "rotatey", "rotateZ", "rotatez", "saturate", "scale", "scale3d", "scaleX", "scalex", "scaleY", "scaley", "scaleZ", "scalez", "sepia", "skew", "skewX", "skewY", "steps", "styleset", "stylistic", "swash", "symbols", "target-counter", "target-counters", "target-text", "translate", "translate3d", "translateX", "translatex", "translateY", "translatey", "translateZ", "translatez", "url", "var"]);
-/**
- * Check if a function name is a native CSS function name.
- *
- * @param {string} functionName The name to check.
- * @returns {boolean} Whether or not the given function name is a native CSS function name.
- */
-
-function isNativeCssFunction(functionName) {
- return nativeCssFunctions.has(functionName);
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/isSingleLineString.js b/assets/node_modules/stylelint-scss/dist/utils/isSingleLineString.js
deleted file mode 100644
index 8bc344e..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/isSingleLineString.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Check if a string is a single line (i.e. does not contain
- * any newline characters).
- *
- * @param {string} input
- * @return {boolean}
- */
-function _default(input) {
- return !/[\n\r]/.test(input);
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/isStandardRule.js b/assets/node_modules/stylelint-scss/dist/utils/isStandardRule.js
deleted file mode 100644
index c33170f..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/isStandardRule.js
+++ /dev/null
@@ -1,75 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-var _lodash = require("lodash");
-
-var _isCustomPropertySet = _interopRequireDefault(require("./isCustomPropertySet"));
-
-var _isStandardSelector = _interopRequireDefault(require("./isStandardSelector"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-/**
- * Check whether a Node is a standard rule
- *
- * @param {import('postcss').Rule} rule
- * @returns {boolean}
- */
-function _default(rule) {
- // Get full selector
- var selector = (0, _lodash.get)(rule, "raws.selector.raw", rule.selector);
-
- if (!(0, _isStandardSelector["default"])(rule.selector)) {
- return false;
- } // Custom property set (e.g. --custom-property-set: {})
-
-
- if ((0, _isCustomPropertySet["default"])(rule)) {
- return false;
- } // Called Less mixin (e.g. a { .mixin() })
- // @ts-ignore TODO TYPES support LESS and SASS types somehow
-
-
- if (rule.mixin) {
- return false;
- } // Less detached rulesets
-
-
- if (selector.startsWith("@") && selector.endsWith(":")) {
- return false;
- } // Ignore Less &:extend rule
- // @ts-ignore TODO TYPES support LESS and SASS types somehow
-
-
- if (rule.extend) {
- return false;
- } // Ignore mixin or &:extend rule
- // https://github.com/shellscape/postcss-less/blob/master/lib/less-parser.js#L52
- // @ts-ignore TODO TYPES support LESS and SASS types somehow
-
-
- if (rule.params && rule.params[0]) {
- return false;
- } // Non-outputting Less mixin definition (e.g. .mixin() {})
-
-
- if (selector.endsWith(")") && !selector.includes(":")) {
- return false;
- } // Less guards
-
-
- if (/when\s+(not\s+)*\(/.test(selector)) {
- return false;
- } // Ignore Scss nested properties
-
-
- if (selector.endsWith(":")) {
- return false;
- }
-
- return true;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/isStandardSelector.js b/assets/node_modules/stylelint-scss/dist/utils/isStandardSelector.js
deleted file mode 100644
index 4f27e11..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/isStandardSelector.js
+++ /dev/null
@@ -1,30 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-var _isStandardSyntaxSelector = _interopRequireDefault(require("./isStandardSyntaxSelector"));
-
-var _hasInterpolation = _interopRequireDefault(require("./hasInterpolation"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-/**
- * Check whether a selector is standard
- *
- * @param {string} selector
- * @return {boolean} If `true`, the selector is standard
- */
-function _default(selector) {
- var standardSyntaxSelector = (0, _isStandardSyntaxSelector["default"])(selector); // SCSS placeholder selectors
-
- if (!standardSyntaxSelector) {
- if (selector.indexOf("%") === 0 && !(0, _hasInterpolation["default"])(selector)) {
- return true;
- }
- }
-
- return standardSyntaxSelector;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/isStandardSyntaxProperty.js b/assets/node_modules/stylelint-scss/dist/utils/isStandardSyntaxProperty.js
deleted file mode 100644
index 48bba67..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/isStandardSyntaxProperty.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-var _hasInterpolation = _interopRequireDefault(require("./hasInterpolation"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-/**
- * Check whether a property is standard
- *
- * @param {string} property
- * @returns {boolean}
- */
-function _default(property) {
- // SCSS var (e.g. $var: x), list (e.g. $list: (x)) or map (e.g. $map: (key:value))
- if (property.startsWith("$")) {
- return false;
- } // Less var (e.g. @var: x)
-
-
- if (property.startsWith("@")) {
- return false;
- } // Less append property value with space (e.g. transform+_: scale(2))
-
-
- if (property.endsWith("+") || property.endsWith("+_")) {
- return false;
- } // SCSS or Less interpolation
-
-
- if ((0, _hasInterpolation["default"])(property)) {
- return false;
- }
-
- return true;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/isStandardSyntaxSelector.js b/assets/node_modules/stylelint-scss/dist/utils/isStandardSyntaxSelector.js
deleted file mode 100644
index 895ccb1..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/isStandardSyntaxSelector.js
+++ /dev/null
@@ -1,45 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-var _hasInterpolation = _interopRequireDefault(require("./hasInterpolation"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-/**
- * Check whether a selector is standard
- *
- * @param {string} selector
- * @returns {boolean}
- */
-function _default(selector) {
- // SCSS or Less interpolation
- if ((0, _hasInterpolation["default"])(selector)) {
- return false;
- } // SCSS placeholder selectors
-
-
- if (selector.startsWith("%")) {
- return false;
- } // Less :extend()
-
-
- if (/:extend(\(.*?\))?/.test(selector)) {
- return false;
- } // Less mixin with resolved nested selectors (e.g. .foo().bar or .foo(@a, @b)[bar])
-
-
- if (/\.[a-z0-9-_]+\(.*\).+/i.test(selector)) {
- return false;
- } // ERB template tags
-
-
- if (selector.includes("<%") || selector.includes("%>")) {
- return false;
- }
-
- return true;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/isWhitespace.js b/assets/node_modules/stylelint-scss/dist/utils/isWhitespace.js
deleted file mode 100644
index cbe2b72..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/isWhitespace.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Check if a character is whitespace.
- *
- * @param {string} char - A single character
- * @return {boolean}
- */
-function _default(_char) {
- return [" ", "\n", "\t", "\r", "\f"].includes(_char);
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/namespace.js b/assets/node_modules/stylelint-scss/dist/utils/namespace.js
deleted file mode 100644
index 5de58b2..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/namespace.js
+++ /dev/null
@@ -1,11 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = namespace;
-var prefix = "scss";
-
-function namespace(ruleName) {
- return "".concat(prefix, "/").concat(ruleName);
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/optionsHaveException.js b/assets/node_modules/stylelint-scss/dist/utils/optionsHaveException.js
deleted file mode 100644
index b1bf7d4..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/optionsHaveException.js
+++ /dev/null
@@ -1,19 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Check if an options object contains a certain `except` keyword.
- * It will look for an `except` property whose value should
- * be an array of keywords.
- *
- * @param {object} options
- * @param {string} exceptionName
- * @return {boolean}
- */
-function _default(options, exceptionName) {
- return options && options.except && options.except.includes(exceptionName);
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/optionsHaveIgnored.js b/assets/node_modules/stylelint-scss/dist/utils/optionsHaveIgnored.js
deleted file mode 100644
index 1dbc53e..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/optionsHaveIgnored.js
+++ /dev/null
@@ -1,19 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Check if an options object contains a certain `ignore` keyword.
- * It will look for an `ignore` property whose value should
- * be an array of keywords.
- *
- * @param {object} options
- * @param {string} ignoredName
- * @return {boolean}
- */
-function _default(options, ignoredName) {
- return options && options.ignore && options.ignore.includes(ignoredName);
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/parseFunctionArguments.js b/assets/node_modules/stylelint-scss/dist/utils/parseFunctionArguments.js
deleted file mode 100644
index 3c9d19a..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/parseFunctionArguments.js
+++ /dev/null
@@ -1,77 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.groupByKeyValue = groupByKeyValue;
-exports.mapToKeyValue = mapToKeyValue;
-exports.parseFunctionArguments = parseFunctionArguments;
-
-var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-function groupByKeyValue(nodes) {
- if (!nodes) {
- return [];
- }
-
- var groupIndex = 0;
- return nodes.reduce(function (acc, node, nodeIndex) {
- var isComma = node.type === "div" && node.value === ",";
- var skipTrailingComma = isComma && nodeIndex === nodes.length - 1;
-
- if (skipTrailingComma) {
- return acc;
- }
-
- if (isComma) {
- groupIndex++;
- }
-
- acc[groupIndex] = acc[groupIndex] || [];
-
- if (!isComma) {
- acc[groupIndex].push(node);
- }
-
- return acc;
- }, []);
-}
-
-function mapToKeyValue(nodes) {
- var keyVal = nodes.reduce(function (acc, curr, i) {
- if (acc.length === 1) {
- return acc;
- }
-
- var nextNode = nodes[i + 1];
- var isNextNodeColon = nextNode && nextNode.type === "div" && nextNode.value === ":";
-
- if (isNextNodeColon) {
- acc.push({
- key: _postcssValueParser["default"].stringify(nodes[i]),
- value: _postcssValueParser["default"].stringify(nodes.slice(2))
- });
- return acc;
- }
-
- acc.push({
- value: _postcssValueParser["default"].stringify(nodes)
- });
- return acc;
- }, []);
- return keyVal[0];
-}
-
-function parseFunctionArguments(value) {
- var parsed = (0, _postcssValueParser["default"])(value);
-
- if (!parsed.nodes[0] || parsed.nodes[0].type !== "function") {
- return [];
- }
-
- return parsed.nodes.map(function (node) {
- return groupByKeyValue(node.nodes).map(mapToKeyValue);
- })[0];
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/parseNestedPropRoot.js b/assets/node_modules/stylelint-scss/dist/utils/parseNestedPropRoot.js
deleted file mode 100644
index cc8c4fa..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/parseNestedPropRoot.js
+++ /dev/null
@@ -1,87 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = parseNestedPropRoot;
-
-/**
- * Attempts to parse a selector as if it"s a root for a group of nested props
- * E.g.: `margin: {`, `font: 10px/1.1 Arial {` ("{" excluded)
- */
-function parseNestedPropRoot(propString) {
- var modesEntered = [{
- mode: "normal",
- character: null,
- isCalculationEnabled: true
- }];
- var result = {};
- var lastModeIndex = 0;
- var propName = "";
-
- for (var i = 0; i < propString.length; i++) {
- var character = propString[i];
- var prevCharacter = propString[i - 1]; // If entering/exiting a string
-
- if (character === '"' || character === "'") {
- if (modesEntered[lastModeIndex].isCalculationEnabled === true) {
- modesEntered.push({
- mode: "string",
- isCalculationEnabled: false,
- character: character
- });
- lastModeIndex++;
- } else if (modesEntered[lastModeIndex].mode === "string" && modesEntered[lastModeIndex].character === character && prevCharacter !== "\\") {
- modesEntered.pop();
- lastModeIndex--;
- }
- } // If entering/exiting interpolation
-
-
- if (character === "{") {
- modesEntered.push({
- mode: "interpolation",
- isCalculationEnabled: true
- });
- lastModeIndex++;
- } else if (character === "}") {
- modesEntered.pop();
- lastModeIndex--;
- } // Check for : outside fn call, string or interpolation. It must be at the
- // end of a string or have a whitespace between it and following value
-
-
- if (modesEntered[lastModeIndex].mode === "normal" && character === ":" && prevCharacter !== "\\") {
- var propValueStr = propString.substring(i + 1);
-
- if (propValueStr.length) {
- var propValue = {
- before: /^(\s*)/.exec(propValueStr)[1],
- value: propValueStr.trim()
- }; // It's a declaration if 1) there is a whitespace after :, or
- // 2) the value is a number with/without a unit (starts with a number
- // or a dot), or
- // 3) the value is a variable (starts with $), or
- // 4) the value a string, surprisingly
-
- if (propValue.before === "" && !/^[0-9.$'"]/.test(propValue.value)) {
- return null;
- } // +1 for the colon
-
-
- propValue.sourceIndex = propValue.before.length + i + 1;
- result.propValue = propValue;
- }
-
- result.propName = {
- after: /(\s*)$/.exec(propName)[1],
- value: propName.trim()
- };
- return result;
- }
-
- propName += character;
- }
-
- return null;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/parseSelector.js b/assets/node_modules/stylelint-scss/dist/utils/parseSelector.js
deleted file mode 100644
index 3d3fbfc..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/parseSelector.js
+++ /dev/null
@@ -1,20 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-var _postcssSelectorParser = _interopRequireDefault(require("postcss-selector-parser"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-function _default(selector, result, node, cb) {
- try {
- (0, _postcssSelectorParser["default"])(cb).process(selector);
- } catch (e) {
- result.warn("Cannot parse selector", {
- node: node
- });
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/rawNodeString.js b/assets/node_modules/stylelint-scss/dist/utils/rawNodeString.js
deleted file mode 100644
index a4496b5..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/rawNodeString.js
+++ /dev/null
@@ -1,23 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-/**
- * Stringify PostCSS node including its raw "before" string.
- *
- * @param {Node} node - Any PostCSS node
- * @return {string}
- */
-function _default(node) {
- var result = "";
-
- if (node.raws.before) {
- result += node.raws.before;
- }
-
- result += node.toString();
- return result;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/removeEmptyLinesBefore.js b/assets/node_modules/stylelint-scss/dist/utils/removeEmptyLinesBefore.js
deleted file mode 100644
index 29a75a1..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/removeEmptyLinesBefore.js
+++ /dev/null
@@ -1,18 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.removeEmptyLinesBefore = removeEmptyLinesBefore;
-
-// Remove empty lines before a node. Mutates the node.
-function removeEmptyLinesBefore(node
-/*: postcss$node*/
-, newline
-/*: '\n' | '\r\n'*/
-)
-/*: postcss$node*/
-{
- node.raws.before = node.raws.before.replace(/(\r?\n\s*\r?\n)+/g, newline);
- return node;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/sassValueParser/index.js b/assets/node_modules/stylelint-scss/dist/utils/sassValueParser/index.js
deleted file mode 100644
index 8328a46..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/sassValueParser/index.js
+++ /dev/null
@@ -1,933 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = findOperators;
-exports.mathOperatorCharType = mathOperatorCharType;
-
-/**
- * Processes a string and finds Sass operators in it
- *
- * @param {Object} args - Named arguments object
- * @param {String} args.string - the input string
- * @param {Number} args.index - the position of args.string from the start of the line
- * @param {Boolean} args.isAfterColon - pass "true" if the string is
- * a variable value, a mixin/function parameter default.
- * In such cases + and / tend to be operations more often
- * @param {Function} args.callback - will be called on every instance of
- * an operator. Accepts parameters:
- * • string - the default source string
- * • globalIndex - the string's position in the outer input
- * • startIndex - index in string, where the operator starts
- * • endIndex - index in string, where the operator ends (for `==`, etc.)
- *
- * @return {Array} array of { symbol, globalIndex, startIndex, endIndex }
- * for each operator found within a string
- */
-function findOperators(_ref) {
- var string = _ref.string,
- globalIndex = _ref.globalIndex,
- isAfterColon = _ref.isAfterColon,
- callback = _ref.callback;
- var mathOperators = ["+", "/", "-", "*", "%"]; // A stack of modes activated for the current char: string, interpolation
- // Calculations inside strings are not processed, so spaces are not linted
-
- var modesEntered = [{
- mode: "normal",
- isCalculationEnabled: true,
- character: null
- }];
- var result = [];
- var lastModeIndex = 0;
-
- for (var i = 0; i < string.length; i++) {
- var character = string[i];
- var substringStartingWithIndex = string.substring(i);
- var lastMode = modesEntered[lastModeIndex]; // If entering/exiting a string
-
- if (character === '"' || character === "'") {
- if (lastMode && lastMode.isCalculationEnabled === true) {
- modesEntered.push({
- mode: "string",
- isCalculationEnabled: false,
- character: character
- });
- lastModeIndex++;
- } else if (lastMode && lastMode.mode === "string" && lastMode.character === character && string[i - 1] !== "\\") {
- modesEntered.pop();
- lastModeIndex--;
- }
- } // If entering/exiting interpolation (may be inside a string)
- // Comparing with length-2 because `#{` at the very end doesnt matter
-
-
- if (character === "#" && i + 1 < string.length - 2 && string[i + 1] === "{") {
- modesEntered.push({
- mode: "interpolation",
- isCalculationEnabled: true
- });
- lastModeIndex++;
- } else if (character === "}") {
- modesEntered.pop();
- lastModeIndex--;
- } // Don't lint if inside a string
-
-
- if (lastMode && lastMode.isCalculationEnabled === false) {
- continue;
- } // If it's a math operator
-
-
- if (mathOperators.includes(character) && mathOperatorCharType(string, i, isAfterColon) === "op" || // or is "<" or ">"
- substringStartingWithIndex.search(/^[<>]([^=]|$)/) !== -1) {
- result.push({
- symbol: string[i],
- globalIndex: globalIndex,
- startIndex: i,
- endIndex: i
- });
-
- if (callback) {
- callback(string, globalIndex, i, i);
- }
- } // "<=", ">=", "!=", "=="
-
-
- if (substringStartingWithIndex.search(/^[><=!]=/) !== -1) {
- result.push({
- symbol: string[i],
- globalIndex: globalIndex,
- startIndex: i,
- endIndex: i + 1
- });
-
- if (callback) {
- callback(string, globalIndex, i, i + 1);
- }
- }
- } // result.length > 0 && console.log(string, result)
-
-
- return result;
-}
-/**
- * Checks if a character is an operator, a sign (+ or -), or part of a string
- *
- * @param {String} string - the source string
- * @param {Number} index - the index of the character in string to check
- * @param {Boolean} isAfterColon - if the value string a variable
- * value, a mixin/function parameter default. In such cases + and / tend
- * to be operations more often
- * @return {String|false}
- * • "op", if the character is a operator in a math/string operation
- * • "sign" if it is a + or - before a numeric,
- * • "char" if it is a part of a string,
- * • false - if it is none from above (most likely an error)
- */
-
-
-function mathOperatorCharType(string, index, isAfterColon) {
- // !Checking here to prevent unnecessary calculations and deep recursion
- // when calling isPrecedingOperator()
- if (!["+", "/", "-", "*", "%"].includes(string[index])) {
- return "char";
- }
-
- var character = string[index];
- var prevCharacter = string[index - 1];
-
- if (prevCharacter !== "\\") {
- // ---- Processing + characters
- if (character === "+") {
- return checkPlus(string, index, isAfterColon);
- } // ---- Processing - characters
-
-
- if (character === "-") {
- return checkMinus(string, index);
- } // ---- Processing * character
-
-
- if (character === "*") {
- return "op";
- } // ---- Processing % character
-
-
- if (character === "%") {
- return checkPercent(string, index);
- } // ---- Processing / character
- // https://sass-lang.com/documentation/operators/numeric#slash-separated-values
-
-
- if (character === "/") {
- return checkSlash(string, index, isAfterColon);
- }
- }
-
- return "char";
-} // --------------------------------------------------------------------------
-// Functions for checking particular characters (+, -, /)
-// --------------------------------------------------------------------------
-
-/**
- * Checks the specified `+` char type: operator, sign (+ or -), part of string
- *
- * @param {String} string - the source string
- * @param {Number} index - the index of the character in string to check
- * @param {Boolean} isAftercolon - if the value string a variable
- * value, a mixin/function parameter default. In such cases + is always an
- * operator if surrounded by numbers/values with units
- * @return {String|false}
- * • "op", if the character is a operator in a math/string operation
- * • "sign" if it is a sign before a positive number,
- * • false - if it is none from above (most likely an error)
- */
-
-
-function checkPlus(string, index, isAftercolon) {
- var before = string.substring(0, index);
- var after = string.substring(index + 1); // If the character is at the beginning of the input
-
- var isAtStart_ = isAtStart(string, index); // If the character is at the end of the input
-
- var isAtEnd_ = isAtEnd(string, index);
- var isWhitespaceBefore = before.search(/\s$/) !== -1;
- var isWhitespaceAfter = after.search(/^\s/) !== -1;
- var isValueWithUnitAfter_ = isValueWithUnitAfter(after);
- var isNumberAfter_ = isNumberAfter(after);
- var isInterpolationAfter_ = isInterpolationAfter(after); // The early check above helps prevent deep recursion here
-
- var isPrecedingOperator_ = isPrecedingOperator(string, index);
-
- if (isAtStart_) {
- // console.log("+, `+<sth>` or `+ <sth>`")
- return "sign";
- } // E.g. `1+1`, `string+#fff`
-
-
- if (!isAtStart_ && !isWhitespaceBefore && !isAtEnd_ && !isWhitespaceAfter) {
- // E.g. `1-+1`
- if (isPrecedingOperator_) {
- // console.log('1+1')
- return "sign";
- } // console.log("+, no spaces")
-
-
- return "op";
- } // e.g. `something +something`
-
-
- if (!isAtEnd_ && !isWhitespaceAfter) {
- // e.g. `+something`, ` ... , +something`, etc.
- if (isNoOperandBefore(string, index)) {
- // console.log("+, nothing before")
- return "sign";
- } // e.g. `sth +10px`, `sth +1`
-
-
- if (isValueWithUnitAfter_.is && !isValueWithUnitAfter_.opsBetween || isNumberAfter_.is && !isNumberAfter_.opsBetween) {
- if (isAftercolon === true) {
- // console.log(": 10px +1")
- return "op";
- } // e.g. `(sth +10px)`, `fun(sth +1)`
-
-
- if (isInsideParens(string, index) || isInsideFunctionCall(string, index).is) {
- // console.log("+10px or +1, inside function or parens")
- return "op";
- } // e.g. `#{10px +1}`
-
-
- if (isInsideInterpolation(string, index)) {
- // console.log('+, #{10px +1}')
- return "op";
- } // console.log('+, default')
-
-
- return "sign";
- } // e.g. `sth +#fff`, `sth +string`, `sth +#{...}`, `sth +$var`
-
-
- if (isStringAfter(after) || isHexColorAfter(after) || after[0] === "$" || isInterpolationAfter_.is && !isInterpolationAfter_.opsBefore) {
- // e.g. `sth+ +string`
- if (isPrecedingOperator_) {
- // console.log("+10px or +1, before is an operator")
- return "sign";
- } // console.log("+#000, +string, +#{sth}, +$var")
-
-
- return "op";
- } // console.log('sth +sth, default')
-
-
- return "op";
- } // If the + is after a value, e.g. `$var+`
-
-
- if (!isAtStart_ && !isWhitespaceBefore) {
- // It is always an operator. Prior to Sass 4, `#{...}+` was differernt,
- // but that's not logical and had been fixed.
- // console.log('1+ sth')
- return "op";
- } // If it has whitespaces on both sides
- // console.log('sth + sth')
-
-
- return "op";
-}
-/**
- * Checks the specified `-` character: operator, sign (+ or -), part of string
- *
- * @param {String} string - the source string
- * @param {Number} index - the index of the character in string to check
- * @return {String|false}
- * • "op", if the character is a operator in a math/string operation
- * • "sign" if it is a sign before a negative number,
- * • "char" if it is a part of a string or identifier,
- * • false - if it is none from above (most likely an error)
- */
-
-
-function checkMinus(string, index) {
- var before = string.substring(0, index);
- var after = string.substring(index + 1); // If the character is at the beginning of the input
-
- var isAtStart_ = isAtStart(string, index); // If the character is at the end of the input
-
- var isAtEnd_ = isAtEnd(string, index);
- var isWhitespaceBefore = before.search(/\s$/) !== -1;
- var isWhitespaceAfter = after.search(/^\s/) !== -1;
- var isValueWithUnitAfter_ = isValueWithUnitAfter(after);
- var isValueWithUnitBefore_ = isValueWithUnitBefore(before);
- var isNumberAfter_ = isNumberAfter(after);
- var isNumberBefore_ = isNumberBefore(before);
- var isInterpolationAfter_ = isInterpolationAfter(after);
- var isParensAfter_ = isParensAfter(after);
- var isParensBefore_ = isParensBefore(before); // The early check above helps prevent deep recursion here
-
- var isPrecedingOperator_ = isPrecedingOperator(string, index);
-
- if (isAtStart_) {
- // console.log("-, -<sth> or - <sth>")
- return "sign";
- } // `10 - 11`
-
-
- if (!isAtEnd_ && !isAtStart_ && isWhitespaceBefore && isWhitespaceAfter) {
- // console.log("-, Op: 10px - 10px")
- return "op";
- } // e.g. `something -10px`
-
-
- if (!isAtEnd_ && !isAtStart_ && isWhitespaceBefore && !isWhitespaceAfter) {
- if (isParensAfter_.is && !isParensAfter_.opsBefore) {
- // console.log("-, Op: <sth> -(...)")
- return "op";
- } // e.g. `#{10px -1}`
-
-
- if (isInsideInterpolation(string, index)) {
- return "op";
- } // e.g. `sth -1px`, `sth -1`.
- // Always a sign, even inside parens/function args
-
-
- if (isValueWithUnitAfter_.is && !isValueWithUnitAfter_.opsBetween || isNumberAfter_.is && !isNumberAfter_.opsBetween) {
- // console.log("-, sign: -1px or -1")
- return "sign";
- } // e.g. `sth --1`, `sth +-2px`
-
-
- if (isValueWithUnitAfter_.is && isValueWithUnitAfter_.opsBetween || isNumberAfter_.is && isNumberAfter_.opsBetween) {
- // console.log("-, op: --1px or --1")
- return "op";
- } // `<sth> -string`, `<sth> -#{...}`
-
-
- if (isStringAfter(after) || isInterpolationAfter_.is && !isInterpolationAfter_.opsBefore) {
- // console.log("-, char: -#{...}")
- return "char";
- } // e.g. `#0af -#f0a`, and edge-cases can take a hike
-
-
- if (isHexColorAfter(after) && isHexColorBefore(before.trim())) {
- // console.log("-, op: #fff-, -#fff")
- return "op";
- } // If the - is before a variable, than it's most likely an operator
-
-
- if (after[0] === "$") {
- if (isPrecedingOperator_) {
- // console.log("-, sign: -$var, another operator before")
- return "sign";
- } // console.log("-, op: -$var, NO other operator before")
-
-
- return "op";
- } // By default let's make it an sign for now
- // console.log('-, sign: default in <sth> -<sth>')
-
-
- return "sign";
- } // No whitespace before,
- // e.g. `10x- something`
-
-
- if (!isAtEnd_ && !isAtStart_ && !isWhitespaceBefore && isWhitespaceAfter) {
- if (isParensBefore_) {
- // console.log('-, op: `(...)- <sth>`')
- return "op";
- } // e.g. `#{10px- 1}`
-
-
- if (isInsideInterpolation(string, index)) {
- return "op";
- }
-
- if (isNumberBefore(before) || isHexColorBefore(before)) {
- // console.log('`-, op: 10- <sth>, #aff- <sth>`')
- return "op";
- } // console.log('-, char: default in <sth>- <sth>')
-
-
- return "char";
- } // NO Whitespace,
- // e.g. `10px-1`
-
-
- if (!isAtEnd_ && !isAtStart_ && !isWhitespaceBefore && !isWhitespaceAfter) {
- // console.log('no spaces')
- // `<something>-1`, `<something>-10px`
- if (isValueWithUnitAfter_.is && !isValueWithUnitAfter_.opsBetween || isNumberAfter_.is && !isNumberAfter_.opsBetween) {
- // `10px-1`, `1-10px`, `1-1`, `1x-1x`
- if (isValueWithUnitBefore_ || isNumberBefore_) {
- // console.log("-, op: 1-10px")
- return "op";
- } // The - could be a "sign" here, but for now "char" does the job
-
- } // `1-$var`
-
-
- if (isNumberBefore_ && after[0] === "$") {
- // console.log("-, op: 1-$var")
- return "op";
- } // `fn()-10px`
-
-
- if (isFunctionBefore(before) && (isNumberAfter_.is && !isNumberAfter_.opsBetween || isValueWithUnitAfter_.is && !isValueWithUnitAfter_.opsBetween)) {
- // console.log("-, op: fn()-10px")
- return "op";
- }
- } // And in all the other cases it's a characher inside a string
- // console.log("-, default: char")
-
-
- return "char";
-}
-/**
- * Checks the specified `/` character: operator, sign (+ or -), part of string
- *
- * @param {String} string - the source string
- * @param {Number} index - the index of the character in string to check
- * @param {Boolean} isAfterColon - if the value string a variable
- * value, a mixin/function parameter default. In such cases / is always an
- * operator if surrounded by numbers/values with units
- * @return {String|false}
- * • "op", if the character is a operator in a math/string operation
- * • "char" if it gets compiled as-is, e.g. `font: 10px/1.2;`,
- * • false - if it is none from above (most likely an error)
- */
-
-
-function checkSlash(string, index, isAfterColon) {
- // Trimming these, as spaces before/after a slash don't matter
- var before = string.substring(0, index).trim();
- var after = string.substring(index + 1).trim();
- var isValueWithUnitAfter_ = isValueWithUnitAfter(after);
- var isValueWithUnitBefore_ = isValueWithUnitBefore(before);
- var isNumberAfter_ = isNumberAfter(after);
- var isNumberBefore_ = isNumberBefore(before);
- var isParensAfter_ = isParensAfter(after);
- var isParensBefore_ = isParensBefore(before); // FIRST OFF. Interpolation on any of the sides is a NO-GO for division op
-
- if (isInterpolationBefore(before).is || isInterpolationAfter(after).is) {
- // console.log("/, interpolation")
- return "char";
- } // having a dot before propbably means a relative path.
- // e.g. url(../../image.png)
-
-
- if (isDotBefore(before)) {
- return "char";
- } // e.g. `(1px/1)`, `fn(7 / 15)`, but not `url(8/11)`
-
-
- var isInsideFn = isInsideFunctionCall(string, index);
-
- if (isInsideFn.is && isInsideFn.fn === "url" && isProtocolBefore(before)) {
- return "char";
- } // e.g. `10px/normal`
-
-
- if (isStringBefore(before).is || isStringAfter(after)) {
- // console.log("/, string")
- return "char";
- } // For all other value options (numbers, value+unit, hex color)
- // `$var/1`, `#fff/-$var`
- // Here we don't care if there is a sign before the var
-
-
- if (isVariableBefore(before) || isVariableAfter(after).is) {
- // console.log("/, variable")
- return "op";
- }
-
- if (isFunctionBefore(before) || isFunctionAfter(after).is) {
- // console.log("/, function as operand")
- return "op";
- }
-
- if (isParensBefore_ || isParensAfter_.is) {
- // console.log("/, function as operand")
- return "op";
- } // `$var: 10px/2; // 5px`
-
-
- if (isAfterColon === true && (isValueWithUnitAfter_.is || isNumberAfter_.is) && (isValueWithUnitBefore_ || isNumberBefore_)) {
- return "op";
- } // Quick check of the following operator symbol - if it is a math operator
-
-
- if ( // +, *, % count as operators unless after interpolation or at the start
- before.search(/[^{,(}\s]\s*[+*%]\s*[^(){},]+$/) !== -1 || // We consider minus as op only if surrounded by whitespaces (` - `);
- before.search(/[^{,(}\s]\s+-\s+[^(){},]+$/) !== -1 || // `10/2 * 3`, `10/2 % 3`, with or without spaces
- after.search(/^[^(){},]+[*%]/) !== -1 || // `10px/2px+1`, `10px/2px+ 1`
- after.search(/^[^(){},\s]+[+]/) !== -1 || // Anything but `10px/2px +1`, `10px/2px +1px`
- after.search(/^[^(){},\s]+\s+(\+\D)/) !== -1 || // Following ` -`: only if `$var` after (`10/10 -$var`)
- after.search(/^[^(){},\s]+\s+-(\$|\s)/) !== -1 || // Following `-`: only if number after (`10s/10s-10`, `10s/10s-.1`)
- after.search(/^[^(){},\s]+-(\.){0,1}\d/) !== -1 || // Or if there is a number before anything but string after (not `10s/1-str`,)
- after.search(/^(\d*\.){0,1}\d+-\s*[^#a-zA-Z_\s]/) !== -1) {
- // console.log("/, math op around")
- return "op";
- }
-
- if (isInsideParens(string, index) || isInsideFn.is && isInsideFn.fn !== "url") {
- // console.log("/, parens or function arg")
- return "op";
- } // console.log("/, default")
-
-
- return "char";
-}
-/**
- * Checks the specified `%` character: operator or part of value
- *
- * @param {String} string - the source string
- * @param {Number} index - the index of the character in string to check
- * @return {String|false}
- * • "op", if the character is a operator in a math/string operation
- * • "char" if it gets compiled as-is, e.g. `width: 10%`,
- * • false - if it is none from above (most likely an error)
- */
-
-
-function checkPercent(string, index) {
- // Trimming these, as spaces before/after a slash don't matter
- var before = string.substring(0, index);
- var after = string.substring(index + 1); // If the character is at the beginning of the input
-
- var isAtStart_ = isAtStart(string, index); // If the character is at the end of the input
-
- var isAtEnd_ = isAtEnd(string, index);
- var isWhitespaceBefore = before.search(/\s$/) !== -1;
- var isWhitespaceAfter = after.search(/^\s/) !== -1;
- var isParensBefore_ = isParensBefore(before); // FIRST OFF. Interpolation on any of the sides is a NO-GO
-
- if (isInterpolationBefore(before.trim()).is || isInterpolationAfter(after.trim()).is) {
- // console.log("%, interpolation")
- return "char";
- }
-
- if (isAtStart_ || isAtEnd_) {
- // console.log("%, start/end")
- return "char";
- } // In `<sth> %<sth>` it's most likely an operator (except for inteprolation
- // checked above)
-
-
- if (isWhitespaceBefore && !isWhitespaceAfter) {
- // console.log("%, `<sth> %<sth>`")
- return "op";
- } // `$var% 1`, `$var%1`, `$var%-1`
-
-
- if (isVariableBefore(before) || isParensBefore_) {
- // console.log("%, after a variable, function or parens")
- return "op";
- } // in all other cases in `<sth>% <sth>` it is most likely a unit
-
-
- if (!isWhitespaceBefore && isWhitespaceAfter) {
- // console.log("%, `<sth>% <sth>`")
- return "char";
- } // console.log("%, default")
-
-
- return "char";
-} // --------------------------------------------------------------------------
-// Lots of elementary helpers
-// --------------------------------------------------------------------------
-
-
-function isAtStart(string, index) {
- var before = string.substring(0, index).trim();
- return before.length === 0 || before.search(/[({,]$/) !== -1;
-}
-
-function isAtEnd(string, index) {
- var after = string.substring(index + 1).trim();
- return after.length === 0 || after.search(/^[,)}]/) !== -1;
-}
-
-function isInsideParens(string, index) {
- var before = string.substring(0, index).trim();
- var after = string.substring(index + 1).trim();
-
- if (before.search(/(?:^|[,{]|\s)\(\s*[^(){},]+$/) !== -1 && after.search(/^[^(){},\s]+\s*\)/) !== -1) {
- return true;
- }
-
- return false;
-}
-
-function isInsideInterpolation(string, index) {
- var before = string.substring(0, index).trim();
-
- if (before.search(/#\{[^}]*$/) !== -1) {
- return true;
- }
-
- return false;
-}
-/**
- * Checks if the character is inside a function agruments
- *
- * @param {String} string - the input string
- * @param {Number} index - current character index
- * @return {Object} return
- * {Boolean} return.is - if inside a function arguments
- * {String} return.fn - function name
- */
-
-
-function isInsideFunctionCall(string, index) {
- var result = {
- is: false,
- fn: null
- };
- var before = string.substring(0, index).trim();
- var after = string.substring(index + 1).trim();
- var beforeMatch = before.match(/([a-zA-Z_-][a-zA-Z0-9_-]*)\([^(){},]+$/);
-
- if (beforeMatch && beforeMatch[0] && after.search(/^[^(,]+\)/) !== -1) {
- result.is = true;
- result.fn = beforeMatch[1];
- }
-
- return result;
-}
-/**
- * Checks if there is a string before the character.
- * Also checks if there is a math operator in between
- *
- * @param {String} before - the input string that preceses the character
- * @return {Object} return
- * {Boolean} return.is - if there is a string
- * {String} return.opsBetween - if there are operators in between
- */
-
-
-function isStringBefore(before) {
- var result = {
- is: false,
- opsBetween: false
- };
- var stringOpsClipped = before.replace(/(\s*[+/*%]|\s+-)+$/, "");
-
- if (stringOpsClipped !== before) {
- result.opsBetween = true;
- } // If it is quoted
-
-
- if (stringOpsClipped[stringOpsClipped.length - 1] === '"' || stringOpsClipped[stringOpsClipped.length - 1] === "'") {
- result.is = true;
- } else if (stringOpsClipped.search(/(?:^|[/(){},: ])([a-zA-Z_][a-zA-Z_0-9-]*|-+[a-zA-Z_]+[a-zA-Z_0-9-]*)$/) !== -1) {
- // First pattern: a1, a1a, a-1,
- result.is = true;
- }
-
- return result;
-}
-
-function isStringAfter(after) {
- var stringTrimmed = after.trim(); // If it is quoted
-
- if (stringTrimmed[0] === '"' || stringTrimmed[0] === "'") return true; // e.g. `a1`, `a1a`, `a-1`, and even `--s323`
-
- if (stringTrimmed.search(/^([a-zA-Z_][a-zA-Z_0-9-]*|-+[a-zA-Z_]+[a-zA-Z_0-9-]*)(?:$|[)}, ])/) !== -1) return true;
- return false;
-}
-
-function isInterpolationAfter(after) {
- var result = {
- is: false,
- opsBetween: false
- };
- var matches = after.match(/^\s*([+/*%-]\s*)*#{/);
-
- if (matches) {
- if (matches[0]) {
- result.is = true;
- }
-
- if (matches[1]) {
- result.opsBetween = true;
- }
- }
-
- return result;
-}
-
-function isParensAfter(after) {
- var result = {
- is: false,
- opsBetween: false
- };
- var matches = after.match(/^\s*([+/*%-]\s*)*\(/);
-
- if (matches) {
- if (matches[0]) {
- result.is = true;
- }
-
- if (matches[1]) {
- result.opsBetween = true;
- }
- }
-
- return result;
-}
-
-function isParensBefore(before) {
- return before.search(/\)\s*$/) !== -1;
-}
-/**
- * Checks if there is an interpolation before the character.
- * Also checks if there is a math operator in between
- *
- * @param {String} before - the input string that preceses the character
- * @return {Object} return
- * {Boolean} return.is - if there is an interpolation
- * {String} return.opsBetween - if there are operators in between
- */
-
-
-function isInterpolationBefore(before) {
- var result = {
- is: false,
- opsBetween: false
- }; // Removing preceding operators if any
-
- var beforeOpsClipped = before.replace(/(\s*[+/*%-])+$/, "");
-
- if (beforeOpsClipped !== before) {
- result.opsBetween = true;
- }
-
- if (beforeOpsClipped[beforeOpsClipped.length - 1] === "}") {
- result.is = true;
- }
-
- return result;
-}
-
-function isValueWithUnitBefore(before) {
- // 1px, 0.1p-x, .2p-, 11.2pdf-df1df_
- // Surprisingly, ` d.10px` - .10px is separated from a sequence
- // and is considered a value with a unit
- if (before.trim().search(/(^|[/(, ]|\.)\d[a-zA-Z_0-9-]+$/) !== -1) {
- return true;
- }
-
- return false;
-}
-
-function isValueWithUnitAfter(after) {
- var result = {
- is: false,
- opsBetween: false
- }; // 1px, 0.1p-x, .2p-, 11.2pdf-dfd1f_
- // Again, ` d.10px` - .10px is separated from a sequence
- // and is considered a value with a unit
-
- var matches = after.match(/^\s*([+/*%-]\s*)*(\d+(\.\d+){0,1}|\.\d+)[a-zA-Z_0-9-]+(?:$|[)}, ])/);
-
- if (matches) {
- if (matches[0]) {
- result.is = true;
- }
-
- if (matches[1]) {
- result.opsBetween = true;
- }
- }
-
- return result;
-}
-
-function isNumberAfter(after) {
- var result = {
- is: false,
- opsBetween: false
- };
- var matches = after.match(/^\s*([+/*%-]\s*)*(\d+(\.\d+){0,1}|\.\d+)(?:$|[)}, ])/);
-
- if (matches) {
- if (matches[0]) {
- result.is = true;
- }
-
- if (matches[1]) {
- result.opsBetween = true;
- }
- }
-
- return result;
-}
-
-function isNumberBefore(before) {
- if (before.trim().search(/(?:^|[/(){},\s])(\d+(\.\d+){0,1}|\.\d+)$/) !== -1) {
- return true;
- }
-
- return false;
-}
-
-function isVariableBefore(before) {
- return before.trim().search(/\$[a-zA-Z_0-9-]+$/) !== -1;
-}
-
-function isVariableAfter(after) {
- var result = {
- is: false,
- opsBetween: false
- };
- var matches = after.match(/^\s*([+/*%-]\s*)*\$/);
-
- if (matches) {
- if (matches[0]) {
- result.is = true;
- }
-
- if (matches[1]) {
- result.opsBetween = true;
- }
- }
-
- return result;
-}
-
-function isDotBefore(before) {
- return before.slice(-1) === ".";
-}
-
-function isProtocolBefore(before) {
- return before.search(/https?:/) !== -1;
-}
-
-function isFunctionBefore(before) {
- return before.trim().search(/[a-zA-Z0-9_-]\(.*?\)\s*$/) !== -1;
-}
-
-function isFunctionAfter(after) {
- var result = {
- is: false,
- opsBetween: false
- }; // `-fn()` is a valid function name, so if a - should be a sign/operator,
- // it must have a space after
-
- var matches = after.match(/^\s*(-\s+|[+/*%]\s*)*[a-zA-Z_-][a-zA-Z_0-9-]*\(/);
-
- if (matches) {
- if (matches[0]) {
- result.is = true;
- }
-
- if (matches[1]) {
- result.opsBetween = true;
- }
- }
-
- return result;
-}
-/**
- * Checks if the input string is a hex color value
- *
- * @param {String} string - the input
- * @return {Boolean} true, if the input is a hex color
- */
-
-
-function isHexColor(string) {
- return string.trim().search(/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/) !== -1;
-}
-
-function isHexColorAfter(after) {
- var afterTrimmed = after.match(/(.*?)(?:[)},+/*%-]|\s|$)/)[1].trim();
- return isHexColor(afterTrimmed);
-}
-
-function isHexColorBefore(before) {
- if (before.search(/(?:[/(){},+*%-\s]|^)#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/) !== -1) {
- return true;
- }
-
- return false;
-}
-/**
- * Checks if there is no operand before the currenc char
- * In other words, the current char is at the start of a possible operation,
- * e.g. at the string start, after the opening paren or after a comma
- *
- * @param {String} string - the input string
- * @param {Number} index - current char's position in string
- * @return {Boolean}
- */
-
-
-function isNoOperandBefore(string, index) {
- var before = string.substring(0, index).trim();
- return before.length === 0 || before.search(/[({,]&/) !== -1;
-}
-
-function isPrecedingOperator(string, index) {
- var prevCharIndex = -1;
-
- for (var i = index - 1; i >= 0; i--) {
- if (string[i].search(/\s/) === -1) {
- prevCharIndex = i;
- break;
- }
- }
-
- if (prevCharIndex === -1) {
- return false;
- }
-
- if (mathOperatorCharType(string, prevCharIndex) === "op") {
- return true;
- }
-
- return false;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/dist/utils/whitespaceChecker.js b/assets/node_modules/stylelint-scss/dist/utils/whitespaceChecker.js
deleted file mode 100644
index dfa0e88..0000000
--- a/assets/node_modules/stylelint-scss/dist/utils/whitespaceChecker.js
+++ /dev/null
@@ -1,371 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports["default"] = _default;
-
-var _isWhitespace = _interopRequireDefault(require("./isWhitespace"));
-
-var _isSingleLineString = _interopRequireDefault(require("./isSingleLineString"));
-
-var _configurationError = _interopRequireDefault(require("./configurationError"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
-
-/**
- * Create a whitespaceChecker, which exposes the following functions:
- * - `before()`
- * - `beforeAllowingIndentation()`
- * - `after()`
- * - `afterOneOnly()`
- *
- * @param {"space"|"newline"} targetWhitespace - This is a keyword instead
- * of the actual character (e.g. " ") in order to accommodate
- * different styles of newline ("\n" vs "\r\n")
- * @param {
- * "always"|"never"
- * |"always-single-line"|"always-multi-line"
- * | "never-single-line"|"never-multi-line"
- * } expectation
- * @param {object} messages - An object of message functions;
- * calling `before*()` or `after*()` and the `expectation` that is passed
- * determines which message functions are required
- * @param {function} [messages.expectedBefore]
- * @param {function} [messages.rejectedBefore]
- * @param {function} [messages.expectedAfter]
- * @param {function} [messages.rejectedAfter]
- * @param {function} [messages.expectedBeforeSingleLine]
- * @param {function} [messages.rejectedBeforeSingleLine]
- * @param {function} [messages.expectedBeforeMultiLine]
- * @param {function} [messages.rejectedBeforeMultiLine]
- * @return {object} The checker, with its exposed checking functions
- */
-function _default(targetWhitespace, expectation, messages) {
- // Keep track of active arguments in order to avoid passing
- // too much stuff around, making signatures long and confusing.
- // This variable gets reset anytime a checking function is called.
- var activeArgs;
- /**
- * Check for whitespace *before* a character.
- *
- * @param {object} args - Named arguments object
- * @param {string} args.source - The source string
- * @param {number} args.index - The index of the character to check before
- * @param {function} args.err - If a violation is found, this callback
- * will be invoked with the relevant warning message.
- * Typically this callback will report() the violation.
- * @param {function} args.errTarget - If a violation is found, this string
- * will be sent to the relevant warning message.
- * @param {string} [args.lineCheckStr] - Single- and multi-line checkers
- * will use this string to determine whether they should proceed,
- * i.e. if this string is one line only, single-line checkers will check,
- * multi-line checkers will ignore.
- * If none is passed, they will use `source`.
- * @param {boolean} [args.onlyOneChar=false] - Only check *one* character before.
- * By default, "always-*" checks will look for the `targetWhitespace` one
- * before and then ensure there is no whitespace two before. This option
- * bypasses that second check.
- * @param {boolean} [args.allowIndentation=false] - Allow arbitrary indentation
- * between the `targetWhitespace` (almost definitely a newline) and the `index`.
- * With this option, the checker will see if a newline *begins* the whitespace before
- * the `index`.
- */
-
- function before(_ref) {
- var source = _ref.source,
- index = _ref.index,
- err = _ref.err,
- errTarget = _ref.errTarget,
- lineCheckStr = _ref.lineCheckStr,
- _ref$onlyOneChar = _ref.onlyOneChar,
- onlyOneChar = _ref$onlyOneChar === void 0 ? false : _ref$onlyOneChar,
- _ref$allowIndentation = _ref.allowIndentation,
- allowIndentation = _ref$allowIndentation === void 0 ? false : _ref$allowIndentation;
- activeArgs = {
- source: source,
- index: index,
- err: err,
- errTarget: errTarget,
- onlyOneChar: onlyOneChar,
- allowIndentation: allowIndentation
- };
-
- switch (expectation) {
- case "always":
- expectBefore();
- break;
-
- case "never":
- rejectBefore();
- break;
-
- case "always-single-line":
- if (!(0, _isSingleLineString["default"])(lineCheckStr || source)) {
- return;
- }
-
- expectBefore(messages.expectedBeforeSingleLine);
- break;
-
- case "never-single-line":
- if (!(0, _isSingleLineString["default"])(lineCheckStr || source)) {
- return;
- }
-
- rejectBefore(messages.rejectedBeforeSingleLine);
- break;
-
- case "always-multi-line":
- if ((0, _isSingleLineString["default"])(lineCheckStr || source)) {
- return;
- }
-
- expectBefore(messages.expectedBeforeMultiLine);
- break;
-
- case "never-multi-line":
- if ((0, _isSingleLineString["default"])(lineCheckStr || source)) {
- return;
- }
-
- rejectBefore(messages.rejectedBeforeMultiLine);
- break;
-
- default:
- throw (0, _configurationError["default"])("Unknown expectation \"".concat(expectation, "\""));
- }
- }
- /**
- * Check for whitespace *after* a character.
- *
- * Parameters are pretty much the same as for `before()`, above, just substitute
- * the word "after" for "before".
- */
-
-
- function after(_ref2) {
- var source = _ref2.source,
- index = _ref2.index,
- err = _ref2.err,
- errTarget = _ref2.errTarget,
- lineCheckStr = _ref2.lineCheckStr,
- _ref2$onlyOneChar = _ref2.onlyOneChar,
- onlyOneChar = _ref2$onlyOneChar === void 0 ? false : _ref2$onlyOneChar;
- activeArgs = {
- source: source,
- index: index,
- err: err,
- errTarget: errTarget,
- onlyOneChar: onlyOneChar
- };
-
- switch (expectation) {
- case "always":
- expectAfter();
- break;
-
- case "never":
- rejectAfter();
- break;
-
- case "always-single-line":
- if (!(0, _isSingleLineString["default"])(lineCheckStr || source)) {
- return;
- }
-
- expectAfter(messages.expectedAfterSingleLine);
- break;
-
- case "never-single-line":
- if (!(0, _isSingleLineString["default"])(lineCheckStr || source)) {
- return;
- }
-
- rejectAfter(messages.rejectedAfterSingleLine);
- break;
-
- case "always-multi-line":
- if ((0, _isSingleLineString["default"])(lineCheckStr || source)) {
- return;
- }
-
- expectAfter(messages.expectedAfterMultiLine);
- break;
-
- case "never-multi-line":
- if ((0, _isSingleLineString["default"])(lineCheckStr || source)) {
- return;
- }
-
- rejectAfter(messages.rejectedAfterMultiLine);
- break;
-
- case "at-least-one-space":
- expectAfter(messages.expectedAfterAtLeast);
- break;
-
- default:
- throw (0, _configurationError["default"])("Unknown expectation \"".concat(expectation, "\""));
- }
- }
-
- function beforeAllowingIndentation(obj) {
- before(Object.assign({}, obj, {
- allowIndentation: true
- }));
- }
-
- function expectBefore() {
- var messageFunc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : messages.expectedBefore;
-
- if (activeArgs.allowIndentation) {
- expectBeforeAllowingIndentation(messageFunc);
- return;
- }
-
- var _activeArgs = activeArgs,
- source = _activeArgs.source,
- index = _activeArgs.index;
- var oneCharBefore = source[index - 1];
- var twoCharsBefore = source[index - 2];
-
- if (!isValue(oneCharBefore)) {
- return;
- }
-
- if (targetWhitespace === "newline") {
- // If index is preceeded by a Windows CR-LF ...
- if (oneCharBefore === "\n" && twoCharsBefore === "\r") {
- if (activeArgs.onlyOneChar || !(0, _isWhitespace["default"])(source[index - 3])) {
- return;
- }
- } // If index is followed by a Unix LF ...
-
-
- if (oneCharBefore === "\n" && twoCharsBefore !== "\r") {
- if (activeArgs.onlyOneChar || !(0, _isWhitespace["default"])(twoCharsBefore)) {
- return;
- }
- }
- }
-
- if (targetWhitespace === "space" && oneCharBefore === " ") {
- if (activeArgs.onlyOneChar || !(0, _isWhitespace["default"])(twoCharsBefore)) {
- return;
- }
- }
-
- activeArgs.err(messageFunc(activeArgs.errTarget ? activeArgs.errTarget : source[index]));
- }
-
- function expectBeforeAllowingIndentation() {
- var messageFunc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : messages.expectedBefore;
- var _activeArgs2 = activeArgs,
- source = _activeArgs2.source,
- index = _activeArgs2.index,
- err = _activeArgs2.err;
-
- var expectedChar = function () {
- if (targetWhitespace === "newline") {
- return "\n";
- }
-
- if (targetWhitespace === "space") {
- return " ";
- }
- }();
-
- var i = index - 1;
-
- while (source[i] !== expectedChar) {
- if (source[i] === "\t" || source[i] === " ") {
- i--;
- continue;
- }
-
- err(messageFunc(activeArgs.errTarget ? activeArgs.errTarget : source[index]));
- return;
- }
- }
-
- function rejectBefore() {
- var messageFunc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : messages.rejectedBefore;
- var _activeArgs3 = activeArgs,
- source = _activeArgs3.source,
- index = _activeArgs3.index;
- var oneCharBefore = source[index - 1];
-
- if (isValue(oneCharBefore) && (0, _isWhitespace["default"])(oneCharBefore)) {
- activeArgs.err(messageFunc(activeArgs.errTarget ? activeArgs.errTarget : source[index]));
- }
- }
-
- function afterOneOnly(obj) {
- after(Object.assign({}, obj, {
- onlyOneChar: true
- }));
- }
-
- function expectAfter() {
- var messageFunc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : messages.expectedAfter;
- var _activeArgs4 = activeArgs,
- source = _activeArgs4.source,
- index = _activeArgs4.index;
- var oneCharAfter = index + 1 < source.length ? source[index + 1] : "";
- var twoCharsAfter = index + 2 < source.length ? source[index + 2] : "";
-
- if (!isValue(oneCharAfter)) {
- return;
- }
-
- if (targetWhitespace === "newline") {
- // If index is followed by a Windows CR-LF ...
- if (oneCharAfter === "\r" && twoCharsAfter === "\n") {
- var threeCharsAfter = index + 3 < source.length ? source[index + 3] : "";
-
- if (activeArgs.onlyOneChar || !(0, _isWhitespace["default"])(threeCharsAfter)) {
- return;
- }
- } // If index is followed by a Unix LF ...
-
-
- if (oneCharAfter === "\n") {
- if (activeArgs.onlyOneChar || !(0, _isWhitespace["default"])(twoCharsAfter)) {
- return;
- }
- }
- }
-
- if (targetWhitespace === "space" && oneCharAfter === " ") {
- if (expectation === "at-least-one-space" || activeArgs.onlyOneChar || !(0, _isWhitespace["default"])(twoCharsAfter)) {
- return;
- }
- }
-
- activeArgs.err(messageFunc(activeArgs.errTarget ? activeArgs.errTarget : source[index]));
- }
-
- function rejectAfter() {
- var messageFunc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : messages.rejectedAfter;
- var _activeArgs5 = activeArgs,
- source = _activeArgs5.source,
- index = _activeArgs5.index;
- var oneCharAfter = index + 1 < source.length ? source[index + 1] : "";
-
- if (isValue(oneCharAfter) && (0, _isWhitespace["default"])(oneCharAfter)) {
- activeArgs.err(messageFunc(activeArgs.errTarget ? activeArgs.errTarget : source[index]));
- }
- }
-
- return {
- before: before,
- beforeAllowingIndentation: beforeAllowingIndentation,
- after: after,
- afterOneOnly: afterOneOnly
- };
-}
-
-function isValue(x) {
- return x !== undefined && x !== null;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/docs/examples/README.md b/assets/node_modules/stylelint-scss/docs/examples/README.md
deleted file mode 100644
index afb1e3a..0000000
--- a/assets/node_modules/stylelint-scss/docs/examples/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Example configs
-
-This dir contains examples of `.stylelintrc` configuration file for several use cases.
-
-* [Rules for `@if`/`@else` statements](./if-else.md)
diff --git a/assets/node_modules/stylelint-scss/docs/examples/if-else.md b/assets/node_modules/stylelint-scss/docs/examples/if-else.md
deleted file mode 100644
index b9a73e0..0000000
--- a/assets/node_modules/stylelint-scss/docs/examples/if-else.md
+++ /dev/null
@@ -1,148 +0,0 @@
-# `@if`/`@else`
-
-A stylesheet author might want to treat `@if` and `@else` in a special manner, for example `@else` should be on the same line as its `@if`'s closing brace while all the other blocks and at-rules has to have newline after their closing brace. stylelint-scss has some rules for this, but from the core stylelint's point of view, `@if` and `@else` SCSS statements are pretty much regular at-rules, so they comply to corresponding `at-rule-...` and `block-...` rules. Below are some configurations that might help you achieve the needed patterns.
-
----
-
-**Config 1**: `@else` is on the same line as the preceding `@if`/`@else`'s `}`, space between them. Empty line before all at-rules (except `@else`), space before `{`, newline after all `}` except `@if`'s and `@else`'s.
-
-```json
-{
- "plugins": [
- "stylelint-scss"
- ],
- "rules": {
- "at-rule-empty-line-before": [
- "always", {
- "ignoreAtRules": [ "else" ]
- }
- ],
- "block-opening-brace-space-before": "always",
- "block-closing-brace-newline-after": [
- "always", {
- "ignoreAtRules": [ "if", "else" ]
- }
- ],
- "at-rule-name-space-after": "always",
- "rule-empty-line-before": "always",
- "scss/at-else-closing-brace-newline-after": "always-last-in-chain",
- "scss/at-else-closing-brace-space-after": "always-intermediate",
- "scss/at-else-empty-line-before": "never",
- "scss/at-if-closing-brace-newline-after": "always-last-in-chain",
- "scss/at-if-closing-brace-space-after": "always-intermediate"
- }
-}
-```
-
-This code is considered **valid**
-```scss
-@if {
- // ...
-}
-
-a {}
-
-@if {
- // ...
-} @else {
- // ...
-}
-
-a {}
-
-@if {
- // ...
-} @else if {
- // ...
-} @else {
- // ...
-}
-
-@if {
- // ...
-} @else
-if {
- // ...
-} @else {
- // ...
-}
-
-a {}
-```
-
-These patterns are considered **non-valid**:
-
-```scss
-@if {
- // ...
-} a {}
-```
-```scss
-@if {
- // ...
-}@else {
- // ...
-}
-```
-```scss
-@if {
- // ...
-} @else if{
- // ...
-} @else {
- // ...
-}
-```
-```scss
-@if {
- // ...
-} @else if{
- // ...
-} @else {
- // ...
-}
-```
-
----
-
-**Config 2**: `@else` is on a newline, no empty line before it.
-
-```json
-{
- "plugins": [
- "stylelint-scss"
- ],
- "rules": {
- "at-rule-empty-line-before": [
- "always", {
- "ignoreAtRules": [ "else" ]
- }
- ],
- "at-rule-name-space-after": "always",
- "block-opening-brace-space-before": "always",
- "block-closing-brace-newline-after": "always",
- "at-else-empty-line-before": "never"
- }
-}
-```
-
-This code is considered **valid**:
-```scss
-@if {
- // ...
-}
-@else {
- // ...
-}
-```
-
-This code is considered **non-valid**:
-```scss
-@if {
- // ...
-}
-
-@else {
- // ...
-}
-```
diff --git a/assets/node_modules/stylelint-scss/node_modules/.bin/stylelint b/assets/node_modules/stylelint-scss/node_modules/.bin/stylelint
deleted file mode 120000
index 32ec801..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/.bin/stylelint
+++ /dev/null
@@ -1 +0,0 @@
-../../../stylelint/bin/stylelint.js \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/API.md b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/API.md
deleted file mode 100644
index ceee157..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/API.md
+++ /dev/null
@@ -1,873 +0,0 @@
-# API Documentation
-
-*Please use only this documented API when working with the parser. Methods
-not documented here are subject to change at any point.*
-
-## `parser` function
-
-This is the module's main entry point.
-
-```js
-const parser = require('postcss-selector-parser');
-```
-
-### `parser([transform], [options])`
-
-Creates a new `processor` instance
-
-```js
-const processor = parser();
-```
-
-Or, with optional transform function
-
-```js
-const transform = selectors => {
- selectors.walkUniversals(selector => {
- selector.remove();
- });
-};
-
-const processor = parser(transform)
-
-// Example
-const result = processor.processSync('*.class');
-// => .class
-```
-
-[See processor documentation](#processor)
-
-Arguments:
-
-* `transform (function)`: Provide a function to work with the parsed AST.
-* `options (object)`: Provide default options for all calls on the returned `Processor`.
-
-### `parser.attribute([props])`
-
-Creates a new attribute selector.
-
-```js
-parser.attribute({attribute: 'href'});
-// => [href]
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.className([props])`
-
-Creates a new class selector.
-
-```js
-parser.className({value: 'button'});
-// => .button
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.combinator([props])`
-
-Creates a new selector combinator.
-
-```js
-parser.combinator({value: '+'});
-// => +
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-Notes:
-* **Descendant Combinators** The value of descendant combinators created by the
- parser always just a single space (`" "`). For descendant selectors with no
- comments, additional space is now stored in `node.spaces.before`. Depending
- on the location of comments, additional spaces may be stored in
- `node.raws.spaces.before`, `node.raws.spaces.after`, or `node.raws.value`.
-* **Named Combinators** Although, nonstandard and unlikely to ever become a standard,
- named combinators like `/deep/` and `/for/` are parsed as combinators. The
- `node.value` is name after being unescaped and normalized as lowercase. The
- original value for the combinator name is stored in `node.raws.value`.
-
-
-### `parser.comment([props])`
-
-Creates a new comment.
-
-```js
-parser.comment({value: '/* Affirmative, Dave. I read you. */'});
-// => /* Affirmative, Dave. I read you. */
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.id([props])`
-
-Creates a new id selector.
-
-```js
-parser.id({value: 'search'});
-// => #search
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.nesting([props])`
-
-Creates a new nesting selector.
-
-```js
-parser.nesting();
-// => &
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.pseudo([props])`
-
-Creates a new pseudo selector.
-
-```js
-parser.pseudo({value: '::before'});
-// => ::before
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.root([props])`
-
-Creates a new root node.
-
-```js
-parser.root();
-// => (empty)
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.selector([props])`
-
-Creates a new selector node.
-
-```js
-parser.selector();
-// => (empty)
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.string([props])`
-
-Creates a new string node.
-
-```js
-parser.string();
-// => (empty)
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.tag([props])`
-
-Creates a new tag selector.
-
-```js
-parser.tag({value: 'button'});
-// => button
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-### `parser.universal([props])`
-
-Creates a new universal selector.
-
-```js
-parser.universal();
-// => *
-```
-
-Arguments:
-
-* `props (object)`: The new node's properties.
-
-## Node types
-
-### `node.type`
-
-A string representation of the selector type. It can be one of the following;
-`attribute`, `class`, `combinator`, `comment`, `id`, `nesting`, `pseudo`,
-`root`, `selector`, `string`, `tag`, or `universal`. Note that for convenience,
-these constants are exposed on the main `parser` as uppercased keys. So for
-example you can get `id` by querying `parser.ID`.
-
-```js
-parser.attribute({attribute: 'href'}).type;
-// => 'attribute'
-```
-
-### `node.parent`
-
-Returns the parent node.
-
-```js
-root.nodes[0].parent === root;
-```
-
-### `node.toString()`, `String(node)`, or `'' + node`
-
-Returns a string representation of the node.
-
-```js
-const id = parser.id({value: 'search'});
-console.log(String(id));
-// => #search
-```
-
-### `node.next()` & `node.prev()`
-
-Returns the next/previous child of the parent node.
-
-```js
-const next = id.next();
-if (next && next.type !== 'combinator') {
- throw new Error('Qualified IDs are not allowed!');
-}
-```
-
-### `node.replaceWith(node)`
-
-Replace a node with another.
-
-```js
-const attr = selectors.first.first;
-const className = parser.className({value: 'test'});
-attr.replaceWith(className);
-```
-
-Arguments:
-
-* `node`: The node to substitute the original with.
-
-### `node.remove()`
-
-Removes the node from its parent node.
-
-```js
-if (node.type === 'id') {
- node.remove();
-}
-```
-
-### `node.clone()`
-
-Returns a copy of a node, detached from any parent containers that the
-original might have had.
-
-```js
-const cloned = parser.id({value: 'search'});
-String(cloned);
-
-// => #search
-```
-
-### `node.isAtPosition(line, column)`
-
-Return a `boolean` indicating whether this node includes the character at the
-position of the given line and column. Returns `undefined` if the nodes lack
-sufficient source metadata to determine the position.
-
-Arguments:
-
-* `line`: 1-index based line number relative to the start of the selector.
-* `column`: 1-index based column number relative to the start of the selector.
-
-### `node.spaces`
-
-Extra whitespaces around the node will be moved into `node.spaces.before` and
-`node.spaces.after`. So for example, these spaces will be moved as they have
-no semantic meaning:
-
-```css
- h1 , h2 {}
-```
-
-For descendent selectors, the value is always a single space.
-
-```css
-h1 h2 {}
-```
-
-Additional whitespace is found in either the `node.spaces.before` and `node.spaces.after` depending on the presence of comments or other whitespace characters. If the actual whitespace does not start or end with a single space, the node's raw value is set to the actual space(s) found in the source.
-
-### `node.source`
-
-An object describing the node's start/end, line/column source position.
-
-Within the following CSS, the `.bar` class node ...
-
-```css
-.foo,
- .bar {}
-```
-
-... will contain the following `source` object.
-
-```js
-source: {
- start: {
- line: 2,
- column: 3
- },
- end: {
- line: 2,
- column: 6
- }
-}
-```
-
-### `node.sourceIndex`
-
-The zero-based index of the node within the original source string.
-
-Within the following CSS, the `.baz` class node will have a `sourceIndex` of `12`.
-
-```css
-.foo, .bar, .baz {}
-```
-
-## Container types
-
-The `root`, `selector`, and `pseudo` nodes have some helper methods for working
-with their children.
-
-### `container.nodes`
-
-An array of the container's children.
-
-```js
-// Input: h1 h2
-selectors.at(0).nodes.length // => 3
-selectors.at(0).nodes[0].value // => 'h1'
-selectors.at(0).nodes[1].value // => ' '
-```
-
-### `container.first` & `container.last`
-
-The first/last child of the container.
-
-```js
-selector.first === selector.nodes[0];
-selector.last === selector.nodes[selector.nodes.length - 1];
-```
-
-### `container.at(index)`
-
-Returns the node at position `index`.
-
-```js
-selector.at(0) === selector.first;
-selector.at(0) === selector.nodes[0];
-```
-
-Arguments:
-
-* `index`: The index of the node to return.
-
-### `container.atPosition(line, column)`
-
-Returns the node at the source position `index`.
-
-```js
-selector.at(0) === selector.first;
-selector.at(0) === selector.nodes[0];
-```
-
-Arguments:
-
-* `index`: The index of the node to return.
-
-### `container.index(node)`
-
-Return the index of the node within its container.
-
-```js
-selector.index(selector.nodes[2]) // => 2
-```
-
-Arguments:
-
-* `node`: A node within the current container.
-
-### `container.length`
-
-Proxy to the length of the container's nodes.
-
-```js
-container.length === container.nodes.length
-```
-
-### `container` Array iterators
-
-The container class provides proxies to certain Array methods; these are:
-
-* `container.map === container.nodes.map`
-* `container.reduce === container.nodes.reduce`
-* `container.every === container.nodes.every`
-* `container.some === container.nodes.some`
-* `container.filter === container.nodes.filter`
-* `container.sort === container.nodes.sort`
-
-Note that these methods only work on a container's immediate children; recursive
-iteration is provided by `container.walk`.
-
-### `container.each(callback)`
-
-Iterate the container's immediate children, calling `callback` for each child.
-You may return `false` within the callback to break the iteration.
-
-```js
-let className;
-selectors.each((selector, index) => {
- if (selector.type === 'class') {
- className = selector.value;
- return false;
- }
-});
-```
-
-Note that unlike `Array#forEach()`, this iterator is safe to use whilst adding
-or removing nodes from the container.
-
-Arguments:
-
-* `callback (function)`: A function to call for each node, which receives `node`
- and `index` arguments.
-
-### `container.walk(callback)`
-
-Like `container#each`, but will also iterate child nodes as long as they are
-`container` types.
-
-```js
-selectors.walk((selector, index) => {
- // all nodes
-});
-```
-
-Arguments:
-
-* `callback (function)`: A function to call for each node, which receives `node`
- and `index` arguments.
-
-This iterator is safe to use whilst mutating `container.nodes`,
-like `container#each`.
-
-### `container.walk` proxies
-
-The container class provides proxy methods for iterating over types of nodes,
-so that it is easier to write modules that target specific selectors. Those
-methods are:
-
-* `container.walkAttributes`
-* `container.walkClasses`
-* `container.walkCombinators`
-* `container.walkComments`
-* `container.walkIds`
-* `container.walkNesting`
-* `container.walkPseudos`
-* `container.walkTags`
-* `container.walkUniversals`
-
-### `container.split(callback)`
-
-This method allows you to split a group of nodes by returning `true` from
-a callback. It returns an array of arrays, where each inner array corresponds
-to the groups that you created via the callback.
-
-```js
-// (input) => h1 h2>>h3
-const list = selectors.first.split(selector => {
- return selector.type === 'combinator';
-});
-
-// (node values) => [['h1', ' '], ['h2', '>>'], ['h3']]
-```
-
-Arguments:
-
-* `callback (function)`: A function to call for each node, which receives `node`
- as an argument.
-
-### `container.prepend(node)` & `container.append(node)`
-
-Add a node to the start/end of the container. Note that doing so will set
-the parent property of the node to this container.
-
-```js
-const id = parser.id({value: 'search'});
-selector.append(id);
-```
-
-Arguments:
-
-* `node`: The node to add.
-
-### `container.insertBefore(old, new)` & `container.insertAfter(old, new)`
-
-Add a node before or after an existing node in a container:
-
-```js
-selectors.walk(selector => {
- if (selector.type !== 'class') {
- const className = parser.className({value: 'theme-name'});
- selector.parent.insertAfter(selector, className);
- }
-});
-```
-
-Arguments:
-
-* `old`: The existing node in the container.
-* `new`: The new node to add before/after the existing node.
-
-### `container.removeChild(node)`
-
-Remove the node from the container. Note that you can also use
-`node.remove()` if you would like to remove just a single node.
-
-```js
-selector.length // => 2
-selector.remove(id)
-selector.length // => 1;
-id.parent // undefined
-```
-
-Arguments:
-
-* `node`: The node to remove.
-
-### `container.removeAll()` or `container.empty()`
-
-Remove all children from the container.
-
-```js
-selector.removeAll();
-selector.length // => 0
-```
-
-## Root nodes
-
-A root node represents a comma separated list of selectors. Indeed, all
-a root's `toString()` method does is join its selector children with a ','.
-Other than this, it has no special functionality and acts like a container.
-
-### `root.trailingComma`
-
-This will be set to `true` if the input has a trailing comma, in order to
-support parsing of legacy CSS hacks.
-
-## Selector nodes
-
-A selector node represents a single complex selector. For example, this
-selector string `h1 h2 h3, [href] > p`, is represented as two selector nodes.
-It has no special functionality of its own.
-
-## Pseudo nodes
-
-A pseudo selector extends a container node; if it has any parameters of its
-own (such as `h1:not(h2, h3)`), they will be its children. Note that the pseudo
-`value` will always contain the colons preceding the pseudo identifier. This
-is so that both `:before` and `::before` are properly represented in the AST.
-
-## Attribute nodes
-
-### `attribute.quoted`
-
-Returns `true` if the attribute's value is wrapped in quotation marks, false if it is not.
-Remains `undefined` if there is no attribute value.
-
-```css
-[href=foo] /* false */
-[href='foo'] /* true */
-[href="foo"] /* true */
-[href] /* undefined */
-```
-
-### `attribute.qualifiedAttribute`
-
-Returns the attribute name qualified with the namespace if one is given.
-
-### `attribute.offsetOf(part)`
-
- Returns the offset of the attribute part specified relative to the
- start of the node of the output string. This is useful in raising
- error messages about a specific part of the attribute, especially
- in combination with `attribute.sourceIndex`.
-
- Returns `-1` if the name is invalid or the value doesn't exist in this
- attribute.
-
- The legal values for `part` are:
-
- * `"ns"` - alias for "namespace"
- * `"namespace"` - the namespace if it exists.
- * `"attribute"` - the attribute name
- * `"attributeNS"` - the start of the attribute or its namespace
- * `"operator"` - the match operator of the attribute
- * `"value"` - The value (string or identifier)
- * `"insensitive"` - the case insensitivity flag
-
-### `attribute.raws.unquoted`
-
-Returns the unquoted content of the attribute's value.
-Remains `undefined` if there is no attribute value.
-
-```css
-[href=foo] /* foo */
-[href='foo'] /* foo */
-[href="foo"] /* foo */
-[href] /* undefined */
-```
-
-### `attribute.spaces`
-
-Like `node.spaces` with the `before` and `after` values containing the spaces
-around the element, the parts of the attribute can also have spaces before
-and after them. The for each of `attribute`, `operator`, `value` and
-`insensitive` there is corresponding property of the same nam in
-`node.spaces` that has an optional `before` or `after` string containing only
-whitespace.
-
-Note that corresponding values in `attributes.raws.spaces` contain values
-including any comments. If set, these values will override the
-`attribute.spaces` value. Take care to remove them if changing
-`attribute.spaces`.
-
-### `attribute.raws`
-
-The raws object stores comments and other information necessary to re-render
-the node exactly as it was in the source.
-
-If a comment is embedded within the identifiers for the `namespace`, `attribute`
-or `value` then a property is placed in the raws for that value containing the full source of the propery including comments.
-
-If a comment is embedded within the space between parts of the attribute
-then the raw for that space is set accordingly.
-
-Setting an attribute's property `raws` value to be deleted.
-
-For now, changing the spaces required also updating or removing any of the
-raws values that override them.
-
-Example: `[ /*before*/ href /* after-attr */ = /* after-operator */ te/*inside-value*/st/* wow */ /*omg*/i/*bbq*/ /*whodoesthis*/]` would parse as:
-
-```js
-{
- attribute: "href",
- operatator: "=",
- value: "test",
- spaces: {
- before: '',
- after: '',
- attribute: { before: ' ', after: ' ' },
- operator: { after: ' ' },
- value: { after: ' ' },
- insensitive: { after: ' ' }
- },
- raws: {
- spaces: {
- attribute: { before: ' /*before*/ ', after: ' /* after-attr */ ' },
- operator: { after: ' /* after-operator */ ' },
- value: { after: '/* wow */ /*omg*/' },
- insensitive: { after: '/*bbq*/ /*whodoesthis*/' }
- },
- unquoted: 'test',
- value: 'te/*inside-value*/st'
- }
-}
-```
-
-## `Processor`
-
-### `ProcessorOptions`
-
-* `lossless` - When `true`, whitespace is preserved. Defaults to `true`.
-* `updateSelector` - When `true`, if any processor methods are passed a postcss
- `Rule` node instead of a string, then that Rule's selector is updated
- with the results of the processing. Defaults to `true`.
-
-### `process|processSync(selectors, [options])`
-
-Processes the `selectors`, returning a string from the result of processing.
-
-Note: when the `updateSelector` option is set, the rule's selector
-will be updated with the resulting string.
-
-**Example:**
-
-```js
-const parser = require("postcss-selector-parser");
-const processor = parser();
-
-let result = processor.processSync(' .class');
-console.log(result);
-// => .class
-
-// Asynchronous operation
-let promise = processor.process(' .class').then(result => {
- console.log(result)
- // => .class
-});
-
-// To have the parser normalize whitespace values, utilize the options
-result = processor.processSync(' .class ', {lossless: false});
-console.log(result);
-// => .class
-
-// For better syntax errors, pass a PostCSS Rule node.
-const postcss = require('postcss');
-rule = postcss.rule({selector: ' #foo > a, .class '});
-processor.process(rule, {lossless: false, updateSelector: true}).then(result => {
- console.log(result);
- // => #foo>a,.class
- console.log("rule:", rule.selector);
- // => rule: #foo>a,.class
-})
-```
-
-Arguments:
-
-* `selectors (string|postcss.Rule)`: Either a selector string or a PostCSS Rule
- node.
-* `[options] (object)`: Process options
-
-
-### `ast|astSync(selectors, [options])`
-
-Like `process()` and `processSync()` but after
-processing the `selectors` these methods return the `Root` node of the result
-instead of a string.
-
-Note: when the `updateSelector` option is set, the rule's selector
-will be updated with the resulting string.
-
-### `transform|transformSync(selectors, [options])`
-
-Like `process()` and `processSync()` but after
-processing the `selectors` these methods return the value returned by the
-processor callback.
-
-Note: when the `updateSelector` option is set, the rule's selector
-will be updated with the resulting string.
-
-### Error Handling Within Selector Processors
-
-The root node passed to the selector processor callback
-has a method `error(message, options)` that returns an
-error object. This method should always be used to raise
-errors relating to the syntax of selectors. The options
-to this method are passed to postcss's error constructor
-([documentation](http://api.postcss.org/Container.html#error)).
-
-#### Async Error Example
-
-```js
-let processor = (root) => {
- return new Promise((resolve, reject) => {
- root.walkClasses((classNode) => {
- if (/^(.*)[-_]/.test(classNode.value)) {
- let msg = "classes may not have underscores or dashes in them";
- reject(root.error(msg, {
- index: classNode.sourceIndex + RegExp.$1.length + 1,
- word: classNode.value
- }));
- }
- });
- resolve();
- });
-};
-
-const postcss = require("postcss");
-const parser = require("postcss-selector-parser");
-const selectorProcessor = parser(processor);
-const plugin = postcss.plugin('classValidator', (options) => {
- return (root) => {
- let promises = [];
- root.walkRules(rule => {
- promises.push(selectorProcessor.process(rule));
- });
- return Promise.all(promises);
- };
-});
-postcss(plugin()).process(`
-.foo-bar {
- color: red;
-}
-`.trim(), {from: 'test.css'}).catch((e) => console.error(e.toString()));
-
-// CssSyntaxError: classValidator: ./test.css:1:5: classes may not have underscores or dashes in them
-//
-// > 1 | .foo-bar {
-// | ^
-// 2 | color: red;
-// 3 | }
-```
-
-#### Synchronous Error Example
-
-```js
-let processor = (root) => {
- root.walkClasses((classNode) => {
- if (/.*[-_]/.test(classNode.value)) {
- let msg = "classes may not have underscores or dashes in them";
- throw root.error(msg, {
- index: classNode.sourceIndex,
- word: classNode.value
- });
- }
- });
-};
-
-const postcss = require("postcss");
-const parser = require("postcss-selector-parser");
-const selectorProcessor = parser(processor);
-const plugin = postcss.plugin('classValidator', (options) => {
- return (root) => {
- root.walkRules(rule => {
- selectorProcessor.processSync(rule);
- });
- };
-});
-postcss(plugin()).process(`
-.foo-bar {
- color: red;
-}
-`.trim(), {from: 'test.css'}).catch((e) => console.error(e.toString()));
-
-// CssSyntaxError: classValidator: ./test.css:1:5: classes may not have underscores or dashes in them
-//
-// > 1 | .foo-bar {
-// | ^
-// 2 | color: red;
-// 3 | }
-```
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/CHANGELOG.md b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/CHANGELOG.md
deleted file mode 100644
index 8aeec16..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/CHANGELOG.md
+++ /dev/null
@@ -1,479 +0,0 @@
-# 6.0.2
-
-- Fixed an issue with parsing and stringifying an empty attribute value
-
-# 6.0.1
-
-- Fixed an issue with unicode surrogate pair parsing
-
-# 6.0.0
-
-- Updated: `cssesc` to 3.0.0 (major)
-- Fixed: Issues with escaped `id` and `class` selectors
-
-# 5.0.0
-
-- Allow escaped dot within class name.
-- Update PostCSS to 7.0.7 (patch)
-
-# 5.0.0-rc.4
-
-- Fixed an issue where comments immediately after an insensitive (in attribute)
- were not parsed correctly.
-- Updated `cssesc` to 2.0.0 (major).
-- Removed outdated integration tests.
-- Added tests for custom selectors, tags with attributes, the universal
- selector with pseudos, and tokens after combinators.
-
-# 5.0.0-rc.1
-
-To ease adoption of the v5.0 release, we have relaxed the node version
-check performed by npm at installation time to allow for node 4, which
-remains officially unsupported, but likely to continue working for the
-time being.
-
-# 5.0.0-rc.0
-
-This release has **BREAKING CHANGES** that were required to fix regressions
-in 4.0.0 and to make the Combinator Node API consistent for all combinator
-types. Please read carefully.
-
-## Summary of Changes
-
-* The way a descendent combinator that isn't a single space character (E.g. `.a .b`) is stored in the AST has changed.
-* Named Combinators (E.g. `.a /for/ .b`) are now properly parsed as a combinator.
-* It is now possible to look up a node based on the source location of a character in that node and to query nodes if they contain some character.
-* Several bug fixes that caused the parser to hang and run out of memory when a `/` was encountered have been fixed.
-* The minimum supported version of Node is now `v6.0.0`.
-
-### Changes to the Descendent Combinator
-
-In prior releases, the value of a descendant combinator with multiple spaces included all the spaces.
-
-* `.a .b`: Extra spaces are now stored as space before.
- - Old & Busted:
- - `combinator.value === " "`
- - New hotness:
- - `combinator.value === " " && combinator.spaces.before === " "`
-* `.a /*comment*/.b`: A comment at the end of the combinator causes extra space to become after space.
- - Old & Busted:
- - `combinator.value === " "`
- - `combinator.raws.value === " /*comment/"`
- - New hotness:
- - `combinator.value === " "`
- - `combinator.spaces.after === " "`
- - `combinator.raws.spaces.after === " /*comment*/"`
-* `.a<newline>.b`: whitespace that doesn't start or end with a single space character is stored as a raw value.
- - Old & Busted:
- - `combinator.value === "\n"`
- - `combinator.raws.value === undefined`
- - New hotness:
- - `combinator.value === " "`
- - `combinator.raws.value === "\n"`
-
-### Support for "Named Combinators"
-
-Although, nonstandard and unlikely to ever become a standard, combinators like `/deep/` and `/for/` are now properly supported.
-
-Because they've been taken off the standardization track, there is no spec-official name for combinators of the form `/<ident>/`. However, I talked to [Tab Atkins](https://twitter.com/tabatkins) and we agreed to call them "named combinators" so now they are called that.
-
-Before this release such named combinators were parsed without intention and generated three nodes of type `"tag"` where the first and last nodes had a value of `"/"`.
-
-* `.a /for/ .b` is parsed as a combinator.
- - Old & Busted:
- - `root.nodes[0].nodes[1].type === "tag"`
- - `root.nodes[0].nodes[1].value === "/"`
- - New hotness:
- - `root.nodes[0].nodes[1].type === "combinator"`
- - `root.nodes[0].nodes[1].value === "/for/"`
-* `.a /F\6fR/ .b` escapes are handled and uppercase is normalized.
- - Old & Busted:
- - `root.nodes[0].nodes[2].type === "tag"`
- - `root.nodes[0].nodes[2].value === "F\\6fR"`
- - New hotness:
- - `root.nodes[0].nodes[1].type === "combinator"`
- - `root.nodes[0].nodes[1].value === "/for/"`
- - `root.nodes[0].nodes[1].raws.value === "/F\\6fR/"`
-
-### Source position checks and lookups
-
-A new API was added to look up a node based on the source location.
-
-```js
-const selectorParser = require("postcss-selector-parser");
-// You can find the most specific node for any given character
-let combinator = selectorParser.astSync(".a > .b").atPosition(1,4);
-combinator.toString() === " > ";
-// You can check if a node includes a specific character
-// Whitespace surrounding the node that is owned by that node
-// is included in the check.
-[2,3,4,5,6].map(column => combinator.isAtPosition(1, column));
-// => [false, true, true, true, false]
-```
-
-# 4.0.0
-
-This release has **BREAKING CHANGES** that were required to fix bugs regarding values with escape sequences. Please read carefully.
-
-* **Identifiers with escapes** - CSS escape sequences are now hidden from the public API by default.
- The normal value of a node like a class name or ID, or an aspect of a node such as attribute
- selector's value, is unescaped. Escapes representing Non-ascii characters are unescaped into
- unicode characters. For example: `bu\tton, .\31 00, #i\2764\FE0Fu, [attr="value is \"quoted\""]`
- will parse respectively to the values `button`, `100`, `i❤️u`, `value is "quoted"`.
- The original escape sequences for these values can be found in the corresponding property name
- in `node.raws`. Where possible, deprecation warnings were added, but the nature
- of escape handling makes it impossible to detect what is escaped or not. Our expectation is
- that most users are neither expecting nor handling escape sequences in their use of this library,
- and so for them, this is a bug fix. Users who are taking care to handle escapes correctly can
- now update their code to remove the escape handling and let us do it for them.
-
-* **Mutating values with escapes** - When you make an update to a node property that has escape handling
- The value is assumed to be unescaped, and any special characters are escaped automatically and
- the corresponding `raws` value is immediately updated. This can result in changes to the original
- escape format. Where the exact value of the escape sequence is important there are methods that
- allow both values to be set in conjunction. There are a number of new convenience methods for
- manipulating values that involve escapes, especially for attributes values where the quote mark
- is involved. See https://github.com/postcss/postcss-selector-parser/pull/133 for an extensive
- write-up on these changes.
-
-
-**Upgrade/API Example**
-
-In `3.x` there was no unescape handling and internal consistency of several properties was the caller's job to maintain. It was very easy for the developer
-to create a CSS file that did not parse correctly when some types of values
-were in use.
-
-```js
-const selectorParser = require("postcss-selector-parser");
-let attr = selectorParser.attribute({attribute: "id", operator: "=", value: "a-value"});
-attr.value; // => "a-value"
-attr.toString(); // => [id=a-value]
-// Add quotes to an attribute's value.
-// All these values have to be set by the caller to be consistent:
-// no internal consistency is maintained.
-attr.raws.unquoted = attr.value
-attr.value = "'" + attr.value + "'";
-attr.value; // => "'a-value'"
-attr.quoted = true;
-attr.toString(); // => "[id='a-value']"
-```
-
-In `4.0` there is a convenient API for setting and mutating values
-that may need escaping. Especially for attributes.
-
-```js
-const selectorParser = require("postcss-selector-parser");
-
-// The constructor requires you specify the exact escape sequence
-let className = selectorParser.className({value: "illegal class name", raws: {value: "illegal\\ class\\ name"}});
-className.toString(); // => '.illegal\\ class\\ name'
-
-// So it's better to set the value as a property
-className = selectorParser.className();
-// Most properties that deal with identifiers work like this
-className.value = "escape for me";
-className.value; // => 'escape for me'
-className.toString(); // => '.escape\\ for\\ me'
-
-// emoji and all non-ascii are escaped to ensure it works in every css file.
-className.value = "😱🦄😍";
-className.value; // => '😱🦄😍'
-className.toString(); // => '.\\1F631\\1F984\\1F60D'
-
-// you can control the escape sequence if you want, or do bad bad things
-className.setPropertyAndEscape('value', 'xxxx', 'yyyy');
-className.value; // => "xxxx"
-className.toString(); // => ".yyyy"
-
-// Pass a value directly through to the css output without escaping it.
-className.setPropertyWithoutEscape('value', '$REPLACE_ME$');
-className.value; // => "$REPLACE_ME$"
-className.toString(); // => ".$REPLACE_ME$"
-
-// The biggest changes are to the Attribute class
-// passing quoteMark explicitly is required to avoid a deprecation warning.
-let attr = selectorParser.attribute({attribute: "id", operator: "=", value: "a-value", quoteMark: null});
-attr.toString(); // => "[id=a-value]"
-// Get the value with quotes on it and any necessary escapes.
-// This is the same as reading attr.value in 3.x.
-attr.getQuotedValue(); // => "a-value";
-attr.quoteMark; // => null
-
-// Add quotes to an attribute's value.
-attr.quoteMark = "'"; // This is all that's required.
-attr.toString(); // => "[id='a-value']"
-attr.quoted; // => true
-// The value is still the same, only the quotes have changed.
-attr.value; // => a-value
-attr.getQuotedValue(); // => "'a-value'";
-
-// deprecated assignment, no warning because there's no escapes
-attr.value = "new-value";
-// no quote mark is needed so it is removed
-attr.getQuotedValue(); // => "new-value";
-
-// deprecated assignment,
-attr.value = "\"a 'single quoted' value\"";
-// > (node:27859) DeprecationWarning: Assigning an attribute a value containing characters that might need to be escaped is deprecated. Call attribute.setValue() instead.
-attr.getQuotedValue(); // => '"a \'single quoted\' value"';
-// quote mark inferred from first and last characters.
-attr.quoteMark; // => '"'
-
-// setValue takes options to make manipulating the value simple.
-attr.setValue('foo', {smart: true});
-// foo doesn't require any escapes or quotes.
-attr.toString(); // => '[id=foo]'
-attr.quoteMark; // => null
-
-// An explicit quote mark can be specified
-attr.setValue('foo', {quoteMark: '"'});
-attr.toString(); // => '[id="foo"]'
-
-// preserves quote mark by default
-attr.setValue('bar');
-attr.toString(); // => '[id="bar"]'
-attr.quoteMark = null;
-attr.toString(); // => '[id=bar]'
-
-// with no arguments, it preserves quote mark even when it's not a great idea
-attr.setValue('a value \n that should be quoted');
-attr.toString(); // => '[id=a\\ value\\ \\A\\ that\\ should\\ be\\ quoted]'
-
-// smart preservation with a specified default
-attr.setValue('a value \n that should be quoted', {smart: true, preferCurrentQuoteMark: true, quoteMark: "'"});
-// => "[id='a value \\A that should be quoted']"
-attr.quoteMark = '"';
-// => '[id="a value \\A that should be quoted"]'
-
-// this keeps double quotes because it wants to quote the value and the existing value has double quotes.
-attr.setValue('this should be quoted', {smart: true, preferCurrentQuoteMark: true, quoteMark: "'"});
-// => '[id="this should be quoted"]'
-
-// picks single quotes because the value has double quotes
-attr.setValue('a "double quoted" value', {smart: true, preferCurrentQuoteMark: true, quoteMark: "'"});
-// => "[id='a "double quoted" value']"
-
-// setPropertyAndEscape lets you do anything you want. Even things that are a bad idea and illegal.
-attr.setPropertyAndEscape('value', 'xxxx', 'the password is 42');
-attr.value; // => "xxxx"
-attr.toString(); // => "[id=the password is 42]"
-
-// Pass a value directly through to the css output without escaping it.
-attr.setPropertyWithoutEscape('value', '$REPLACEMENT$');
-attr.value; // => "$REPLACEMENT$"
-attr.toString(); // => "[id=$REPLACEMENT$]"
-```
-
-# 3.1.2
-
-* Fix: Removed dot-prop dependency since it's no longer written in es5.
-
-# 3.1.1
-
-* Fix: typescript definitions weren't in the published package.
-
-# 3.1.0
-
-* Fixed numerous bugs in attribute nodes relating to the handling of comments
- and whitespace. There's significant changes to `attrNode.spaces` and `attrNode.raws` since the `3.0.0` release.
-* Added `Attribute#offsetOf(part)` to get the offset location of
- attribute parts like `"operator"` and `"value"`. This is most
- often added to `Attribute#sourceIndex` for error reporting.
-
-# 3.0.0
-
-## Breaking changes
-
-* Some tweaks to the tokenizer/attribute selector parsing mean that whitespace
- locations might be slightly different to the 2.x code.
-* Better attribute selector parsing with more validation; postcss-selector-parser
- no longer uses regular expressions to parse attribute selectors.
-* Added an async API (thanks to @jacobp100); the default `process` API is now
- async, and the sync API is now accessed through `processSync` instead.
-* `process()` and `processSync()` now return a string instead of the Processor
- instance.
-* Tweaks handling of Less interpolation (thanks to @jwilsson).
-* Removes support for Node 0.12.
-
-## Other changes
-
-* `ast()` and `astSync()` methods have been added to the `Processor`. These
- return the `Root` node of the selectors after processing them.
-* `transform()` and `transformSync()` methods have been added to the
- `Processor`. These return the value returned by the processor callback
- after processing the selectors.
-* Set the parent when inserting a node (thanks to @chriseppstein).
-* Correctly adjust indices when using insertBefore/insertAfter (thanks to @tivac).
-* Fixes handling of namespaces with qualified tag selectors.
-* `process`, `ast` and `transform` (and their sync variants) now accept a
- `postcss` rule node. When provided, better errors are generated and selector
- processing is automatically set back to the rule selector (unless the `updateSelector` option is set to `false`.)
-* Now more memory efficient when tokenizing selectors.
-
-### Upgrade hints
-
-The pattern of:
-
-`rule.selector = processor.process(rule.selector).result.toString();`
-
-is now:
-
-`processor.processSync(rule)`
-
-# 2.2.3
-
-* Resolves an issue where the parser would not reduce multiple spaces between an
- ampersand and another simple selector in lossy mode (thanks to @adam-26).
-
-# 2.2.2
-
-* No longer hangs on an unescaped semicolon; instead the parser will throw
- an exception for these cases.
-
-# 2.2.1
-
-* Allows a consumer to specify whitespace tokens when creating a new Node
- (thanks to @Semigradsky).
-
-# 2.2.0
-
-* Added a new option to normalize whitespace when parsing the selector string
- (thanks to @adam-26).
-
-# 2.1.1
-
-* Better unquoted value handling within attribute selectors
- (thanks to @evilebottnawi).
-
-# 2.1.0
-
-* Added: Use string constants for all node types & expose them on the main
- parser instance (thanks to @Aweary).
-
-# 2.0.0
-
-This release contains the following breaking changes:
-
-* Renamed all `eachInside` iterators to `walk`. For example, `eachTag` is now
- `walkTags`, and `eachInside` is now `walk`.
-* Renamed `Node#removeSelf()` to `Node#remove()`.
-* Renamed `Container#remove()` to `Container#removeChild()`.
-* Renamed `Node#raw` to `Node#raws` (thanks to @davidtheclark).
-* Now parses `&` as the *nesting* selector, rather than a *tag* selector.
-* Fixes misinterpretation of Sass interpolation (e.g. `#{foo}`) as an
- id selector (thanks to @davidtheclark).
-
-and;
-
-* Fixes parsing of attribute selectors with equals signs in them
- (e.g. `[data-attr="foo=bar"]`) (thanks to @montmanu).
-* Adds `quoted` and `raw.unquoted` properties to attribute nodes
- (thanks to @davidtheclark).
-
-# 1.3.3
-
-* Fixes an infinite loop on `)` and `]` tokens when they had no opening pairs.
- Now postcss-selector-parser will throw when it encounters these lone tokens.
-
-# 1.3.2
-
-* Now uses plain integers rather than `str.charCodeAt(0)` for compiled builds.
-
-# 1.3.1
-
-* Update flatten to v1.x (thanks to @shinnn).
-
-# 1.3.0
-
-* Adds a new node type, `String`, to fix a crash on selectors such as
- `foo:bar("test")`.
-
-# 1.2.1
-
-* Fixes a crash when the parser encountered a trailing combinator.
-
-# 1.2.0
-
-* A more descriptive error is thrown when the parser expects to find a
- pseudo-class/pseudo-element (thanks to @ashelley).
-* Adds support for line/column locations for selector nodes, as well as a
- `Node#sourceIndex` method (thanks to @davidtheclark).
-
-# 1.1.4
-
-* Fixes a crash when a selector started with a `>` combinator. The module will
- now no longer throw if a selector has a leading/trailing combinator node.
-
-# 1.1.3
-
-* Fixes a crash on `@` tokens.
-
-# 1.1.2
-
-* Fixes an infinite loop caused by using parentheses in a non-pseudo element
- context.
-
-# 1.1.1
-
-* Fixes a crash when a backslash ended a selector string.
-
-# 1.1.0
-
-* Adds support for replacing multiple nodes at once with `replaceWith`
- (thanks to @jonathantneal).
-* Parser no longer throws on sequential IDs and trailing commas, to support
- parsing of selector hacks.
-
-# 1.0.1
-
-* Fixes using `insertAfter` and `insertBefore` during iteration.
-
-# 1.0.0
-
-* Adds `clone` and `replaceWith` methods to nodes.
-* Adds `insertBefore` and `insertAfter` to containers.
-* Stabilises API.
-
-# 0.0.5
-
-* Fixes crash on extra whitespace inside a pseudo selector's parentheses.
-* Adds sort function to the container class.
-* Enables the parser to pass its input through without transforming.
-* Iteration-safe `each` and `eachInside`.
-
-# 0.0.4
-
-* Tidy up redundant duplication.
-* Fixes a bug where the parser would loop infinitely on universal selectors
- inside pseudo selectors.
-* Adds `length` getter and `eachInside`, `map`, `reduce` to the container class.
-* When a selector has been removed from the tree, the root node will no longer
- cast it to a string.
-* Adds node type iterators to the container class (e.g. `eachComment`).
-* Adds filter function to the container class.
-* Adds split function to the container class.
-* Create new node types by doing `parser.id(opts)` etc.
-* Adds support for pseudo classes anywhere in the selector.
-
-# 0.0.3
-
-* Adds `next` and `prev` to the node class.
-* Adds `first` and `last` getters to the container class.
-* Adds `every` and `some` iterators to the container class.
-* Add `empty` alias for `removeAll`.
-* Combinators are now types of node.
-* Fixes the at method so that it is not an alias for `index`.
-* Tidy up creation of new nodes in the parser.
-* Refactors how namespaces are handled for consistency & less redundant code.
-* Refactors AST to use `nodes` exclusively, and eliminates excessive nesting.
-* Fixes nested pseudo parsing.
-* Fixes whitespace parsing.
-
-# 0.0.2
-
-* Adds support for namespace selectors.
-* Adds support for selectors joined by escaped spaces - such as `.\31\ 0`.
-
-# 0.0.1
-
-* Initial release.
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/LICENSE-MIT b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/LICENSE-MIT
deleted file mode 100644
index fd0e863..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/LICENSE-MIT
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) Ben Briggs <beneb.info@gmail.com> (http://beneb.info)
-
-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/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/README.md b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/README.md
deleted file mode 100644
index 18a01c5..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/README.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# postcss-selector-parser [![Build Status](https://travis-ci.org/postcss/postcss-selector-parser.svg?branch=master)](https://travis-ci.org/postcss/postcss-selector-parser)
-
-> Selector parser with built in methods for working with selector strings.
-
-## Install
-
-With [npm](https://npmjs.com/package/postcss-selector-parser) do:
-
-```
-npm install postcss-selector-parser
-```
-
-## Quick Start
-
-```js
-const parser = require('postcss-selector-parser');
-const transform = selectors => {
- selectors.walk(selector => {
- // do something with the selector
- console.log(String(selector))
- });
-};
-
-const transformed = parser(transform).processSync('h1, h2, h3');
-```
-
-To normalize selector whitespace:
-
-```js
-const parser = require('postcss-selector-parser');
-const normalized = parser().processSync('h1, h2, h3', {lossless: false});
-// -> h1,h2,h3
-```
-
-Async support is provided through `parser.process` and will resolve a Promise
-with the resulting selector string.
-
-## API
-
-Please see [API.md](API.md).
-
-## Credits
-
-* Huge thanks to Andrey Sitnik (@ai) for work on PostCSS which helped
- accelerate this module's development.
-
-## License
-
-MIT
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/attributes.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/attributes.js
deleted file mode 100644
index a7b275f..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/attributes.js
+++ /dev/null
@@ -1,477 +0,0 @@
-"use strict";
-
-var _process = _interopRequireDefault(require("process"));
-
-var _attribute = _interopRequireDefault(require("../selectors/attribute"));
-
-var _helpers = require("./util/helpers");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-_process.default.throwDeprecation = true;
-(0, _helpers.test)('attribute selector', '[href]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'attribute');
- t.falsy(tree.nodes[0].nodes[0].quoted);
-});
-(0, _helpers.test)('attribute selector spaces (before)', '[ href]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.attribute.before, ' ');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'attribute');
- t.falsy(tree.nodes[0].nodes[0].quoted);
-});
-(0, _helpers.test)('attribute selector spaces (after)', '[href ]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.attribute.after, ' ');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'attribute');
- t.falsy(tree.nodes[0].nodes[0].quoted);
-});
-(0, _helpers.test)('attribute selector spaces with namespace (both)', '[ foo|bar ]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].ns, 'foo');
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'bar');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.attribute.before, ' ');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.attribute.after, ' ');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'attribute');
- t.falsy(tree.nodes[0].nodes[0].quoted);
-});
-(0, _helpers.test)('attribute selector spaces (both)', '[ href ]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.attribute.before, ' ');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.attribute.after, ' ');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'attribute');
- t.falsy(tree.nodes[0].nodes[0].quoted);
-});
-(0, _helpers.test)('multiple attribute selectors', '[href][class][name]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
- t.deepEqual(tree.nodes[0].nodes[1].attribute, 'class');
- t.deepEqual(tree.nodes[0].nodes[2].attribute, 'name');
-});
-(0, _helpers.test)('select elements with or without a namespace', '[*|href]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].namespace, '*');
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
-});
-(0, _helpers.test)('namespace with escapes', '[\\31 \\#\\32 |href]', function (t, tree) {
- var attr = tree.nodes[0].nodes[0];
- t.deepEqual(attr.namespace, '1#2');
- t.deepEqual(attr.raws.namespace, '\\31 \\#\\32 ');
- attr.namespace = "foo";
- t.deepEqual(attr.namespace, 'foo');
- t.deepEqual(attr.raws.namespace, undefined);
- attr.namespace = "1";
- t.deepEqual(attr.namespace, '1');
- t.deepEqual(attr.raws.namespace, '\\31');
-});
-(0, _helpers.test)('attribute selector with a empty value', '[href=""]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
- t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
- t.deepEqual(tree.nodes[0].nodes[0].value, '');
- t.true(tree.nodes[0].nodes[0].quoted);
-});
-(0, _helpers.test)('attribute selector with a value', '[name=james]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'name');
- t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'james');
- t.falsy(tree.nodes[0].nodes[0].quoted);
-});
-(0, _helpers.test)('attribute selector with quoted value', '[name="james"]', function (t, tree) {
- var attr = tree.nodes[0].nodes[0];
- t.deepEqual(attr.attribute, 'name');
- t.deepEqual(attr.operator, '=');
- t.deepEqual(attr.value, 'james');
- t.deepEqual(attr.quoteMark, '"');
- t.truthy(attr.quoted);
- t.deepEqual(attr.getQuotedValue(), '"james"');
-});
-(0, _helpers.test)('attribute selector with escaped quote', '[title="Something \\"weird\\""]', function (t, tree) {
- var attr = tree.nodes[0].nodes[0];
- t.deepEqual(attr.value, 'Something "weird"');
- t.deepEqual(attr.getQuotedValue(), '\"Something \\"weird\\"\"');
- t.deepEqual(attr.getQuotedValue({
- smart: true
- }), '\'Something "weird"\'');
- t.deepEqual(attr.getQuotedValue({
- quoteMark: null
- }), 'Something\\ \\"weird\\"');
- t.deepEqual(attr.quoteMark, '"');
- t.truthy(attr.quoted);
- t.deepEqual(attr.raws.value, '"Something \\"weird\\""');
- t.deepEqual(tree.toString(), '[title="Something \\"weird\\""]');
-});
-(0, _helpers.test)('attribute selector with escaped colon', '[ng\\:cloak]', function (t, tree) {
- t.deepEqual(tree.toString(), '[ng\\:cloak]');
- var attr = tree.nodes[0].nodes[0];
- t.deepEqual(attr.raws.attribute, 'ng\\:cloak');
- t.deepEqual(attr.attribute, 'ng:cloak');
-});
-(0, _helpers.test)('attribute selector with short hex escape', '[ng\\3a cloak]', function (t, tree) {
- t.deepEqual(tree.toString(), '[ng\\3a cloak]');
- var attr = tree.nodes[0].nodes[0];
- t.deepEqual(attr.raws.attribute, 'ng\\3a cloak');
- t.deepEqual(attr.attribute, 'ng:cloak');
-});
-(0, _helpers.test)('attribute selector with hex escape', '[ng\\00003acloak]', function (t, tree) {
- t.deepEqual(tree.toString(), '[ng\\00003acloak]');
- var attr = tree.nodes[0].nodes[0];
- t.deepEqual(attr.raws.attribute, 'ng\\00003acloak');
- t.deepEqual(attr.attribute, 'ng:cloak');
-});
-(0, _helpers.test)('assign attribute name requiring escape', '[ng\\:cloak]', function (t, tree) {
- var attr = tree.nodes[0].nodes[0];
- attr.attribute = "ng:foo";
- t.deepEqual(attr.raws.attribute, 'ng\\:foo');
- t.deepEqual(attr.attribute, 'ng:foo');
- t.deepEqual(tree.toString(), '[ng\\:foo]');
-});
-(0, _helpers.test)('multiple attribute selectors + combinator', '[href][class][name] h1 > h2', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[2].attribute, 'name');
- t.deepEqual(tree.nodes[0].nodes[3].value, ' ');
- t.deepEqual(tree.nodes[0].nodes[5].value, '>');
- t.deepEqual(tree.nodes[0].nodes[6].value, 'h2');
-});
-(0, _helpers.test)('attribute, class, combinator', '[href] > h2.test', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
- t.deepEqual(tree.nodes[0].nodes[1].value, '>');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'h2');
- t.deepEqual(tree.nodes[0].nodes[3].value, 'test');
-});
-(0, _helpers.test)('attribute selector with quoted value & combinator', '[name="james"] > h1', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'james');
- t.deepEqual(tree.nodes[0].nodes[0].quoteMark, '"');
- t.deepEqual(tree.nodes[0].nodes[1].value, '>');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'h1');
-});
-(0, _helpers.test)('multiple quoted attribute selectors', '[href*="test.com"][rel=\'external\'][id][class~="test"] > [name]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'test.com');
- t.is(tree.nodes[0].nodes[0].quoteMark, '"');
- t.deepEqual(tree.nodes[0].nodes[1].attribute, 'rel');
- t.deepEqual(tree.nodes[0].nodes[1].value, 'external');
- t.is(tree.nodes[0].nodes[1].quoteMark, "'");
- t.deepEqual(tree.nodes[0].nodes[2].attribute, 'id');
- t.falsy(tree.nodes[0].nodes[2].value, 'should not have a value');
- t.is(tree.nodes[0].nodes[2].quoteMark, undefined, 'should not have a quoteMark set');
- t.deepEqual(tree.nodes[0].nodes[3].attribute, 'class');
- t.deepEqual(tree.nodes[0].nodes[3].value, 'test');
- t.deepEqual(tree.nodes[0].nodes[3].quoteMark, '"');
- t.deepEqual(tree.nodes[0].nodes[4].value, '>');
- t.deepEqual(tree.nodes[0].nodes[5].attribute, 'name');
- t.falsy(tree.nodes[0].nodes[5].value, 'should not have a value');
- t.is(tree.nodes[0].nodes[5].quoteMark, undefined, 'should not have a quoteMark set');
-});
-(0, _helpers.test)('more attribute operators', '[href*=test],[href^=test],[href$=test],[href|=test]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].operator, '*=');
- t.deepEqual(tree.nodes[1].nodes[0].operator, '^=');
- t.deepEqual(tree.nodes[2].nodes[0].operator, '$=');
- t.deepEqual(tree.nodes[3].nodes[0].operator, '|=');
-});
-(0, _helpers.test)('attribute selector with quoted value containing "="', '[data-weird-attr="Something=weird"]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-attr');
- t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'Something=weird');
- t.is(tree.nodes[0].nodes[0].quoteMark, '"');
- t.deepEqual(tree.nodes[0].nodes[0].getQuotedValue(), '"Something=weird"');
-});
-var selector = '[data-weird-attr*="Something=weird"],' + '[data-weird-attr^="Something=weird"],' + '[data-weird-attr$="Something=weird"],' + '[data-weird-attr|="Something=weird"]';
-(0, _helpers.test)('more attribute selector with quoted value containing "="', selector, function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-attr');
- t.deepEqual(tree.nodes[0].nodes[0].operator, '*=');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'Something=weird');
- t.deepEqual(tree.nodes[1].nodes[0].attribute, 'data-weird-attr');
- t.deepEqual(tree.nodes[1].nodes[0].operator, '^=');
- t.deepEqual(tree.nodes[1].nodes[0].value, 'Something=weird');
- t.deepEqual(tree.nodes[2].nodes[0].attribute, 'data-weird-attr');
- t.deepEqual(tree.nodes[2].nodes[0].operator, '$=');
- t.deepEqual(tree.nodes[2].nodes[0].value, 'Something=weird');
- t.deepEqual(tree.nodes[3].nodes[0].attribute, 'data-weird-attr');
- t.deepEqual(tree.nodes[3].nodes[0].operator, '|=');
- t.deepEqual(tree.nodes[3].nodes[0].value, 'Something=weird');
-});
-(0, _helpers.test)('attribute selector with quoted value containing multiple "="', '[data-weird-attr="Something=weird SomethingElse=weirder"]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-attr');
- t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'Something=weird SomethingElse=weirder');
-});
-selector = '[data-weird-attr*="Something=weird SomethingElse=weirder"],' + '[data-weird-attr^="Something=weird SomethingElse=weirder"],' + '[data-weird-attr$="Something=weird SomethingElse=weirder"],' + '[data-weird-attr|="Something=weird SomethingElse=weirder"]';
-(0, _helpers.test)('more attribute selector with quoted value containing multiple "="', selector, function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-attr');
- t.deepEqual(tree.nodes[0].nodes[0].operator, '*=');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'Something=weird SomethingElse=weirder');
- t.deepEqual(tree.nodes[1].nodes[0].attribute, 'data-weird-attr');
- t.deepEqual(tree.nodes[1].nodes[0].operator, '^=');
- t.deepEqual(tree.nodes[1].nodes[0].value, 'Something=weird SomethingElse=weirder');
- t.deepEqual(tree.nodes[2].nodes[0].attribute, 'data-weird-attr');
- t.deepEqual(tree.nodes[2].nodes[0].operator, '$=');
- t.deepEqual(tree.nodes[2].nodes[0].value, 'Something=weird SomethingElse=weirder');
- t.deepEqual(tree.nodes[3].nodes[0].attribute, 'data-weird-attr');
- t.deepEqual(tree.nodes[3].nodes[0].operator, '|=');
- t.deepEqual(tree.nodes[3].nodes[0].value, 'Something=weird SomethingElse=weirder');
-});
-(0, _helpers.test)('multiple attribute selectors with quoted value containing "="', '[data-weird-foo="foo=weird"][data-weird-bar="bar=weird"]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-foo');
- t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'foo=weird');
- t.deepEqual(tree.nodes[0].nodes[1].attribute, 'data-weird-bar');
- t.deepEqual(tree.nodes[0].nodes[1].operator, '=');
- t.deepEqual(tree.nodes[0].nodes[1].value, 'bar=weird');
-});
-(0, _helpers.test)('multiple attribute selectors with value containing escaped "="', '[data-weird-foo=foo\\=weird][data-weird-bar=bar\\3d weird]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-foo');
- t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'foo=weird');
- t.deepEqual(tree.nodes[0].nodes[1].attribute, 'data-weird-bar');
- t.deepEqual(tree.nodes[0].nodes[1].operator, '=');
- t.deepEqual(tree.nodes[0].nodes[1].value, 'bar=weird');
-});
-selector = '[data-weird-foo*="foo2=weirder"][data-weird-bar*="bar2=weirder"],' + '[data-weird-foo^="foo2=weirder"][data-weird-bar^="bar2=weirder"],' + '[data-weird-foo$="foo2=weirder"][data-weird-bar$="bar2=weirder"],' + '[data-weird-foo|="foo2=weirder"][data-weird-bar|="bar2=weirder"]';
-(0, _helpers.test)('more multiple attribute selectors with quoted value containing "="', selector, function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-foo');
- t.deepEqual(tree.nodes[0].nodes[0].operator, '*=');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'foo2=weirder');
- t.deepEqual(tree.nodes[0].nodes[1].attribute, 'data-weird-bar');
- t.deepEqual(tree.nodes[0].nodes[1].operator, '*=');
- t.deepEqual(tree.nodes[0].nodes[1].value, 'bar2=weirder');
- t.deepEqual(tree.nodes[1].nodes[0].attribute, 'data-weird-foo');
- t.deepEqual(tree.nodes[1].nodes[0].operator, '^=');
- t.deepEqual(tree.nodes[1].nodes[0].value, 'foo2=weirder');
- t.deepEqual(tree.nodes[1].nodes[1].attribute, 'data-weird-bar');
- t.deepEqual(tree.nodes[1].nodes[1].operator, '^=');
- t.deepEqual(tree.nodes[1].nodes[1].value, 'bar2=weirder');
- t.deepEqual(tree.nodes[2].nodes[0].attribute, 'data-weird-foo');
- t.deepEqual(tree.nodes[2].nodes[0].operator, '$=');
- t.deepEqual(tree.nodes[2].nodes[0].value, 'foo2=weirder');
- t.deepEqual(tree.nodes[2].nodes[1].attribute, 'data-weird-bar');
- t.deepEqual(tree.nodes[2].nodes[1].operator, '$=');
- t.deepEqual(tree.nodes[2].nodes[1].value, 'bar2=weirder');
- t.deepEqual(tree.nodes[3].nodes[0].attribute, 'data-weird-foo');
- t.deepEqual(tree.nodes[3].nodes[0].operator, '|=');
- t.deepEqual(tree.nodes[3].nodes[0].value, 'foo2=weirder');
- t.deepEqual(tree.nodes[3].nodes[1].attribute, 'data-weird-bar');
- t.deepEqual(tree.nodes[3].nodes[1].operator, '|=');
- t.deepEqual(tree.nodes[3].nodes[1].value, 'bar2=weirder');
-});
-(0, _helpers.test)('multiple attribute selectors with quoted value containing multiple "="', '[data-weird-foo="foo1=weirder foo2=weirder"][data-weird-bar="bar1=weirder bar2=weirder"]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-foo');
- t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'foo1=weirder foo2=weirder');
- t.deepEqual(tree.nodes[0].nodes[1].attribute, 'data-weird-bar');
- t.deepEqual(tree.nodes[0].nodes[1].operator, '=');
- t.deepEqual(tree.nodes[0].nodes[1].value, 'bar1=weirder bar2=weirder');
-});
-selector = '[data-weird-foo*="foo1=weirder foo2=weirder"][data-weird-bar*="bar1=weirder bar2=weirder"],' + '[data-weird-foo^="foo1=weirder foo2=weirder"][data-weird-bar^="bar1=weirder bar2=weirder"],' + '[data-weird-foo$="foo1=weirder foo2=weirder"][data-weird-bar$="bar1=weirder bar2=weirder"],' + '[data-weird-foo|="foo1=weirder foo2=weirder"][data-weird-bar|="bar1=weirder bar2=weirder"]';
-(0, _helpers.test)('more multiple attribute selectors with quoted value containing multiple "="', selector, function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'data-weird-foo');
- t.deepEqual(tree.nodes[0].nodes[0].operator, '*=');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'foo1=weirder foo2=weirder');
- t.deepEqual(tree.nodes[0].nodes[1].attribute, 'data-weird-bar');
- t.deepEqual(tree.nodes[0].nodes[1].operator, '*=');
- t.deepEqual(tree.nodes[0].nodes[1].value, 'bar1=weirder bar2=weirder');
- t.deepEqual(tree.nodes[1].nodes[0].attribute, 'data-weird-foo');
- t.deepEqual(tree.nodes[1].nodes[0].operator, '^=');
- t.deepEqual(tree.nodes[1].nodes[0].value, 'foo1=weirder foo2=weirder');
- t.deepEqual(tree.nodes[1].nodes[1].attribute, 'data-weird-bar');
- t.deepEqual(tree.nodes[1].nodes[1].operator, '^=');
- t.deepEqual(tree.nodes[1].nodes[1].value, 'bar1=weirder bar2=weirder');
- t.deepEqual(tree.nodes[2].nodes[0].attribute, 'data-weird-foo');
- t.deepEqual(tree.nodes[2].nodes[0].operator, '$=');
- t.deepEqual(tree.nodes[2].nodes[0].value, 'foo1=weirder foo2=weirder');
- t.deepEqual(tree.nodes[2].nodes[1].attribute, 'data-weird-bar');
- t.deepEqual(tree.nodes[2].nodes[1].operator, '$=');
- t.deepEqual(tree.nodes[2].nodes[1].value, 'bar1=weirder bar2=weirder');
- t.deepEqual(tree.nodes[3].nodes[0].attribute, 'data-weird-foo');
- t.deepEqual(tree.nodes[3].nodes[0].operator, '|=');
- t.deepEqual(tree.nodes[3].nodes[0].value, 'foo1=weirder foo2=weirder');
- t.deepEqual(tree.nodes[3].nodes[1].attribute, 'data-weird-bar');
- t.deepEqual(tree.nodes[3].nodes[1].operator, '|=');
- t.deepEqual(tree.nodes[3].nodes[1].value, 'bar1=weirder bar2=weirder');
-});
-(0, _helpers.test)('spaces in attribute selectors', 'h1[ href *= "test" ]', function (t, tree) {
- var attr = tree.nodes[0].nodes[1];
- t.deepEqual(attr.attribute, 'href');
- t.deepEqual(attr.spaces.attribute.before, ' ');
- t.deepEqual(attr.spaces.attribute.after, ' ');
- t.deepEqual(attr.operator, '*=');
- t.deepEqual(attr.spaces.operator.after, ' ');
- t.deepEqual(attr.value, 'test');
- t.deepEqual(attr.spaces.value.after, ' ');
- t.truthy(tree.nodes[0].nodes[1].quoted);
-});
-(0, _helpers.test)('insensitive attribute selector 1', '[href="test" i]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'test');
- t.deepEqual(tree.nodes[0].nodes[0].insensitive, true);
- t.deepEqual(tree.nodes[0].nodes[0].insensitive, true);
-});
-(0, _helpers.test)('insensitive attribute selector with a empty value', '[href="" i]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
- t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
- t.deepEqual(tree.nodes[0].nodes[0].value, '');
- t.deepEqual(tree.nodes[0].nodes[0].insensitive, true);
- t.true(tree.nodes[0].nodes[0].quoted);
-});
-(0, _helpers.test)('insensitive attribute selector 2', '[href=TEsT i ]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'TEsT');
- t.deepEqual(tree.nodes[0].nodes[0].insensitive, true);
- t.deepEqual(tree.nodes[0].nodes[0].spaces.value.after, ' ');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.insensitive.after, ' ');
-});
-(0, _helpers.test)('insensitive attribute selector 3', '[href=test i]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'test');
- t.deepEqual(tree.nodes[0].nodes[0].insensitive, true);
-});
-(0, _helpers.test)('capitalized insensitive attribute selector 3', '[href=test I]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'test');
- t.deepEqual(tree.nodes[0].nodes[0].insensitive, true);
-});
-(0, _helpers.test)('extraneous non-combinating whitespace', ' [href] , [class] ', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.before, ' ');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.after, ' ');
- t.deepEqual(tree.nodes[1].nodes[0].attribute, 'class');
- t.deepEqual(tree.nodes[1].nodes[0].spaces.before, ' ');
- t.deepEqual(tree.nodes[1].nodes[0].spaces.after, ' ');
-});
-(0, _helpers.test)('comments within attribute selectors', '[href/* wow */=/* wow */test]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
- t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'test');
- t.deepEqual(tree.nodes[0].nodes[0].raws.attribute, 'href/* wow */');
- t.deepEqual(tree.nodes[0].nodes[0].raws.operator, '=/* wow */');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'test');
-});
-(0, _helpers.test)('comments within attribute selectors (2)', '[/* wow */href=test/* wow */]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
- t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'test');
- t.deepEqual(tree.nodes[0].nodes[0].raws.spaces.attribute.before, '/* wow */');
- t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'test/* wow */');
-});
-(0, _helpers.test)('comments within attribute selectors (3)', '[href=test/* wow */i]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'testi');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'test/* wow */i');
- t.falsy(tree.nodes[0].nodes[0].insensitive);
-});
-(0, _helpers.test)('comments within attribute selectors (4)', '[ /*before*/ href /* after-attr */ = /* after-operator */ te/*inside-value*/st/* wow */ /*omg*/i/*bbq*/ /*whodoesthis*/]', function (t, tree) {
- var attr = tree.nodes[0].nodes[0];
- t.deepEqual(attr.attribute, 'href');
- t.deepEqual(attr.value, 'test');
- t.deepEqual(attr.getQuotedValue(), 'test');
- t.deepEqual(attr.raws.value, 'te/*inside-value*/st');
- t.deepEqual(attr.raws.spaces.value.after, '/* wow */ /*omg*/');
- t.truthy(attr.insensitive);
- t.deepEqual(attr.offsetOf("attribute"), 13);
- t.deepEqual(attr.offsetOf("operator"), 35);
- t.deepEqual(attr.offsetOf("insensitive"), 95);
- t.deepEqual(attr.raws.spaces.insensitive.after, '/*bbq*/ /*whodoesthis*/');
- attr.value = "foo";
- t.is(attr.raws.value, undefined);
-});
-(0, _helpers.test)('non standard modifiers', '[href="foo" y]', function (t, tree) {
- var attr = tree.atPosition(1, 13);
- t.deepEqual(attr.insensitive, false);
- t.deepEqual(attr.insensitiveFlag, '');
- t.deepEqual(attr.raws.insensitiveFlag, 'y');
- t.deepEqual(tree.toString(), '[href="foo" y]');
-});
-(0, _helpers.test)('comment after insensitive(non space)', '[href="foo" i/**/]', function (t, tree) {
- // https://github.com/postcss/postcss-selector-parser/issues/150
- var attr = tree.atPosition(1, 13);
- t.deepEqual(attr.insensitive, true);
- t.deepEqual(attr.insensitiveFlag, 'i');
- t.is(attr.raws.insensitiveFlag, undefined);
- t.deepEqual(attr.raws.spaces.insensitive.after, '/**/');
- t.deepEqual(tree.toString(), '[href="foo" i/**/]');
-});
-(0, _helpers.test)('comment after insensitive(space after)', '[href="foo" i/**/ ]', function (t, tree) {
- var attr = tree.atPosition(1, 13);
- t.deepEqual(attr.insensitive, true);
- t.deepEqual(attr.insensitiveFlag, 'i');
- t.deepEqual(attr.raws.spaces.insensitive.after, '/**/ ');
- t.deepEqual(tree.toString(), '[href="foo" i/**/ ]');
-});
-(0, _helpers.test)('comment after insensitive(space before)', '[href="foo" i /**/]', function (t, tree) {
- var attr = tree.atPosition(1, 13);
- t.deepEqual(attr.insensitive, true);
- t.deepEqual(attr.insensitiveFlag, 'i');
- t.deepEqual(attr.raws.spaces.insensitive.after, ' /**/');
- t.deepEqual(tree.toString(), '[href="foo" i /**/]');
-});
-var testDeprecation = (0, _helpers.nodeVersionAtLeast)('7.0.0') || (0, _helpers.nodeVersionBefore)('6.0.0') ? _helpers.test : _helpers.test.skip;
-testDeprecation('deprecated constructor', '', function (t) {
- t.throws(function () {
- return new _attribute.default({
- value: '"foo"',
- attribute: "data-bar"
- });
- }, "Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now.");
-});
-testDeprecation('deprecated get of raws.unquoted ', '', function (t) {
- t.throws(function () {
- var attr = new _attribute.default({
- value: 'foo',
- quoteMark: '"',
- attribute: "data-bar"
- });
- return attr.raws.unquoted;
- }, "attr.raws.unquoted is deprecated. Call attr.value instead.");
-});
-testDeprecation('deprecated set of raws.unquoted ', '', function (t) {
- t.throws(function () {
- var attr = new _attribute.default({
- value: 'foo',
- quoteMark: '"',
- attribute: "data-bar"
- });
- attr.raws.unquoted = 'fooooo';
- }, "Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.");
-});
-testDeprecation('smart quotes', '[data-foo=bar]', function (t, tree) {
- var attr = tree.nodes[0].nodes[0];
- attr.setValue('changed', {
- quoteMark: '"'
- });
- t.deepEqual(attr.toString(), '[data-foo="changed"]');
- attr.setValue('changed again', {
- quoteMark: "'",
- preferCurrentQuoteMark: true
- });
- t.deepEqual(attr.toString(), '[data-foo="changed again"]');
- attr.setValue('smart-ident', {
- smart: true
- });
- t.deepEqual(attr.toString(), '[data-foo=smart-ident]');
- attr.setValue('smart quoted', {
- smart: true
- });
- t.deepEqual(attr.toString(), '[data-foo=smart\\ quoted]');
- attr.setValue('smart quoted three spaces', {
- smart: true
- });
- t.deepEqual(attr.toString(), '[data-foo="smart quoted three spaces"]');
- attr.setValue('smart quoted three spaces', {
- smart: true,
- quoteMark: "'"
- });
- t.deepEqual(attr.toString(), "[data-foo='smart quoted three spaces']");
- attr.setValue("smart with 'single quotes'", {
- smart: true
- });
- t.deepEqual(attr.toString(), "[data-foo=\"smart with 'single quotes'\"]");
- attr.setValue('smart with "double quotes"', {
- smart: true
- });
- t.deepEqual(attr.toString(), "[data-foo='smart with \"double quotes\"']");
-});
-testDeprecation('set Attribute#quoteMark', '[data-foo=bar]', function (t, tree) {
- var attr = tree.nodes[0].nodes[0];
- attr.quoteMark = '"';
- t.deepEqual(attr.toString(), '[data-foo="bar"]');
- attr.quoteMark = "'";
- t.deepEqual(attr.toString(), "[data-foo='bar']");
- attr.quoteMark = null;
- t.deepEqual(attr.toString(), "[data-foo=bar]");
- attr.value = "has space";
- t.deepEqual(attr.toString(), "[data-foo=has\\ space]");
- attr.quoteMark = '"';
- t.deepEqual(attr.toString(), '[data-foo="has space"]');
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/classes.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/classes.js
deleted file mode 100644
index 003d6b3..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/classes.js
+++ /dev/null
@@ -1,216 +0,0 @@
-"use strict";
-
-var _helpers = require("./util/helpers");
-
-(0, _helpers.test)('class name', '.one', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'one');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
-});
-(0, _helpers.test)('multiple class names', '.one.two.three', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'one');
- t.deepEqual(tree.nodes[0].nodes[1].value, 'two');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'three');
-});
-(0, _helpers.test)('qualified class', 'button.btn-primary', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'class');
-});
-(0, _helpers.test)('escaped numbers in class name', '.\\31\\ 0', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].value, '1 0');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\31\\ 0');
-});
-(0, _helpers.test)('extraneous non-combinating whitespace', ' .h1 , .h2 ', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'h1');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.before, ' ');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.after, ' ');
- t.deepEqual(tree.nodes[1].nodes[0].value, 'h2');
- t.deepEqual(tree.nodes[1].nodes[0].spaces.before, ' ');
- t.deepEqual(tree.nodes[1].nodes[0].spaces.after, ' ');
-});
-(0, _helpers.test)('Less interpolation within a class', '.foo@{bar}', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes.length, 1);
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'foo@{bar}');
-});
-(0, _helpers.test)('ClassName#set value', ".fo\\o", function (t, selectors) {
- var className = selectors.first.first;
- t.deepEqual(className.raws, {
- value: "fo\\o"
- });
- className.value = "bar";
- t.deepEqual(className.raws, {});
-});
-(0, _helpers.test)('escaped dot in class name', '.foo\\.bar', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'foo.bar');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'foo\\.bar');
-});
-(0, _helpers.test)('class selector with escaping', '.♥', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '♥');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
-});
-(0, _helpers.test)('class selector with escaping (1)', '.©', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '©');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
-});
-(0, _helpers.test)('class selector with escaping (2)', '.“‘’”', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '“‘’”');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
-});
-(0, _helpers.test)('class selector with escaping (3)', '.☺☃', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '☺☃');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
-});
-(0, _helpers.test)('class selector with escaping (4)', '.⌘⌥', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '⌘⌥');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
-});
-(0, _helpers.test)('class selector with escaping (5)', '.𝄞♪♩♫♬', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '𝄞♪♩♫♬');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
-});
-(0, _helpers.test)('class selector with escaping (6)', '.💩', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '💩');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
-});
-(0, _helpers.test)('class selector with escaping (7)', '.\\?', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '?');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\?');
-});
-(0, _helpers.test)('class selector with escaping (8)', '.\\@', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '@');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\@');
-});
-(0, _helpers.test)('class selector with escaping (9)', '.\\.', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '.');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\.');
-});
-(0, _helpers.test)('class selector with escaping (10)', '.\\3A \\)', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, ':)');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\3A \\)');
-});
-(0, _helpers.test)('class selector with escaping (11)', '.\\3A \\`\\(', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, ':`(');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\3A \\`\\(');
-});
-(0, _helpers.test)('class selector with escaping (12)', '.\\31 23', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '123');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\31 23');
-});
-(0, _helpers.test)('class selector with escaping (13)', '.\\31 a2b3c', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '1a2b3c');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\31 a2b3c');
-});
-(0, _helpers.test)('class selector with escaping (14)', '.\\<p\\>', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '<p>');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\<p\\>');
-});
-(0, _helpers.test)('class selector with escaping (15)', '.\\<\\>\\<\\<\\<\\>\\>\\<\\>', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '<><<<>><>');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\<\\>\\<\\<\\<\\>\\>\\<\\>');
-});
-(0, _helpers.test)('class selector with escaping (16)', '.\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\[\\>\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\>\\+\\<\\<\\<\\<\\-\\]\\>\\+\\+\\.\\>\\+\\.\\+\\+\\+\\+\\+\\+\\+\\.\\.\\+\\+\\+\\.\\>\\+\\+\\.\\<\\<\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\.\\>\\.\\+\\+\\+\\.\\-\\-\\-\\-\\-\\-\\.\\-\\-\\-\\-\\-\\-\\-\\-\\.\\>\\+\\.\\>\\.', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\[\\>\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\>\\+\\<\\<\\<\\<\\-\\]\\>\\+\\+\\.\\>\\+\\.\\+\\+\\+\\+\\+\\+\\+\\.\\.\\+\\+\\+\\.\\>\\+\\+\\.\\<\\<\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\.\\>\\.\\+\\+\\+\\.\\-\\-\\-\\-\\-\\-\\.\\-\\-\\-\\-\\-\\-\\-\\-\\.\\>\\+\\.\\>\\.');
-});
-(0, _helpers.test)('class selector with escaping (17)', '.\\#', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '#');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\#');
-});
-(0, _helpers.test)('class selector with escaping (18)', '.\\#\\#', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '##');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\#\\#');
-});
-(0, _helpers.test)('class selector with escaping (19)', '.\\#\\.\\#\\.\\#', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '#.#.#');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\#\\.\\#\\.\\#');
-});
-(0, _helpers.test)('class selector with escaping (20)', '.\\_', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '_');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\_');
-});
-(0, _helpers.test)('class selector with escaping (21)', '.\\{\\}', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '{}');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\{\\}');
-});
-(0, _helpers.test)('class selector with escaping (22)', '.\\#fake\\-id', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '#fake-id');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\#fake\\-id');
-});
-(0, _helpers.test)('class selector with escaping (23)', '.foo\\.bar', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'foo.bar');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'foo\\.bar');
-});
-(0, _helpers.test)('class selector with escaping (24)', '.\\3A hover', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, ':hover');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\3A hover');
-});
-(0, _helpers.test)('class selector with escaping (25)', '.\\3A hover\\3A focus\\3A active', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, ':hover:focus:active');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\3A hover\\3A focus\\3A active');
-});
-(0, _helpers.test)('class selector with escaping (26)', '.\\[attr\\=value\\]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '[attr=value]');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\[attr\\=value\\]');
-});
-(0, _helpers.test)('class selector with escaping (27)', '.f\\/o\\/o', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'f/o/o');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\/o\\/o');
-});
-(0, _helpers.test)('class selector with escaping (28)', '.f\\\\o\\\\o', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'f\\o\\o');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\\\o\\\\o');
-});
-(0, _helpers.test)('class selector with escaping (29)', '.f\\*o\\*o', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'f*o*o');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\*o\\*o');
-});
-(0, _helpers.test)('class selector with escaping (30)', '.f\\!o\\!o', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'f!o!o');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\!o\\!o');
-});
-(0, _helpers.test)('class selector with escaping (31)', '.f\\\'o\\\'o', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'f\'o\'o');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\\'o\\\'o');
-});
-(0, _helpers.test)('class selector with escaping (32)', '.f\\~o\\~o', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'f~o~o');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\~o\\~o');
-});
-(0, _helpers.test)('class selector with escaping (33)', '.f\\+o\\+o', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'f+o+o');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\+o\\+o');
-});
-(0, _helpers.test)('class selector with escaping (34)', '.\\1D306', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '𝌆');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\1D306');
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/combinators.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/combinators.js
deleted file mode 100644
index 93de971..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/combinators.js
+++ /dev/null
@@ -1,148 +0,0 @@
-"use strict";
-
-var _types = require("../selectors/types");
-
-var _helpers = require("./util/helpers");
-
-(0, _helpers.test)('multiple combinating spaces', 'h1 h2', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'h1');
- t.deepEqual(tree.nodes[0].nodes[1].value, ' ');
- t.deepEqual(tree.nodes[0].nodes[1].toString(), ' ');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'h2');
-});
-(0, _helpers.test)('column combinator', '.selected||td', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'selected');
- t.deepEqual(tree.nodes[0].nodes[1].value, '||');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'td');
-});
-(0, _helpers.test)('column combinator (2)', '.selected || td', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'selected');
- t.deepEqual(tree.nodes[0].nodes[1].spaces.before, ' ');
- t.deepEqual(tree.nodes[0].nodes[1].value, '||');
- t.deepEqual(tree.nodes[0].nodes[1].spaces.after, ' ');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'td');
-});
-(0, _helpers.test)('descendant combinator', 'h1 h2', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'h1');
- t.deepEqual(tree.nodes[0].nodes[1].value, ' ');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'h2');
-});
-(0, _helpers.test)('multiple descendant combinators', 'h1 h2 h3 h4', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].value, ' ', 'should have a combinator');
- t.deepEqual(tree.nodes[0].nodes[3].value, ' ', 'should have a combinator');
- t.deepEqual(tree.nodes[0].nodes[5].value, ' ', 'should have a combinator');
-});
-(0, _helpers.test)('adjacent sibling combinator', 'h1~h2', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'h1');
- t.deepEqual(tree.nodes[0].nodes[1].value, '~');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'h2');
-});
-(0, _helpers.test)('adjacent sibling combinator (2)', 'h1 ~h2', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'h1');
- t.deepEqual(tree.nodes[0].nodes[1].spaces.before, ' ');
- t.deepEqual(tree.nodes[0].nodes[1].value, '~');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'h2');
-});
-(0, _helpers.test)('adjacent sibling combinator (3)', 'h1~ h2', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'h1');
- t.deepEqual(tree.nodes[0].nodes[1].value, '~');
- t.deepEqual(tree.nodes[0].nodes[1].spaces.after, ' ');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'h2');
-});
-(0, _helpers.test)('adjacent sibling combinator (4)', 'h1 ~ h2', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'h1');
- t.deepEqual(tree.nodes[0].nodes[1].spaces.before, ' ');
- t.deepEqual(tree.nodes[0].nodes[1].value, '~');
- t.deepEqual(tree.nodes[0].nodes[1].spaces.after, ' ');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'h2');
-});
-(0, _helpers.test)('adjacent sibling combinator (5)', 'h1~h2~h3', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'h1');
- t.deepEqual(tree.nodes[0].nodes[1].value, '~');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'h2');
- t.deepEqual(tree.nodes[0].nodes[3].value, '~');
- t.deepEqual(tree.nodes[0].nodes[4].value, 'h3');
-});
-(0, _helpers.test)('piercing combinator', '.a >>> .b', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'a');
- t.deepEqual(tree.nodes[0].nodes[1].spaces.before, ' ');
- t.deepEqual(tree.nodes[0].nodes[1].value, '>>>');
- t.deepEqual(tree.nodes[0].nodes[1].spaces.after, ' ');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'b');
-});
-(0, _helpers.test)('named combinators', 'a /deep/ b', function (t, tree) {
- var nodes = tree.nodes[0].nodes;
- t.deepEqual(nodes[0].value, 'a');
- t.deepEqual(nodes[1].type, _types.COMBINATOR);
- t.deepEqual(nodes[1].toString(), ' /deep/ ');
- t.deepEqual(nodes[1].value, '/deep/');
- t.deepEqual(nodes[2].value, 'b');
-});
-(0, _helpers.test)('named combinators with escapes', 'a /dee\\p/ b', function (t, tree) {
- var nodes = tree.nodes[0].nodes;
- t.deepEqual(nodes[0].value, 'a');
- t.deepEqual(nodes[1].type, _types.COMBINATOR);
- t.deepEqual(nodes[1].toString(), ' /dee\\p/ ');
- t.deepEqual(nodes[1].value, '/deep/');
- t.deepEqual(nodes[2].value, 'b');
-});
-(0, _helpers.test)('named combinators with escapes and uppercase', 'a /DeE\\p/ b', function (t, tree) {
- var nodes = tree.nodes[0].nodes;
- t.deepEqual(nodes[0].value, 'a');
- t.deepEqual(nodes[1].type, _types.COMBINATOR);
- t.deepEqual(nodes[1].toString(), ' /DeE\\p/ ');
- t.deepEqual(nodes[1].value, '/deep/');
- t.deepEqual(nodes[2].value, 'b');
-});
-(0, _helpers.test)('multiple combinators', 'h1~h2>h3', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].value, '~', 'should have a combinator');
- t.deepEqual(tree.nodes[0].nodes[3].value, '>', 'should have a combinator');
-});
-(0, _helpers.test)('multiple combinators with whitespaces', 'h1 + h2 > h3', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].value, '+', 'should have a combinator');
- t.deepEqual(tree.nodes[0].nodes[3].value, '>', 'should have a combinator');
-});
-(0, _helpers.test)('multiple combinators with whitespaces (2)', 'h1+ h2 >h3', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].value, '+', 'should have a combinator');
- t.deepEqual(tree.nodes[0].nodes[3].value, '>', 'should have a combinator');
-});
-(0, _helpers.test)('trailing combinator & spaces', 'p + ', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'p', 'should be a paragraph');
- t.deepEqual(tree.nodes[0].nodes[1].value, '+', 'should have a combinator');
-});
-(0, _helpers.test)('trailing sibling combinator', 'p ~', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'p', 'should be a paragraph');
- t.deepEqual(tree.nodes[0].nodes[1].value, '~', 'should have a combinator');
-});
-(0, _helpers.test)('ending in comment has no trailing combinator', ".bar /* comment 3 */", function (t, tree) {
- var nodeTypes = tree.nodes[0].map(function (n) {
- return n.type;
- });
- t.deepEqual(nodeTypes, ["class"]);
-});
-(0, _helpers.test)('The combinating space is not a space character', ".bar\n.baz", function (t, tree) {
- var nodeTypes = tree.nodes[0].map(function (n) {
- return n.type;
- });
- t.deepEqual(nodeTypes, ["class", "combinator", "class"]);
- t.deepEqual(tree.nodes[0].nodes[1].value, ' ', 'should have a combinator');
- t.deepEqual(tree.nodes[0].nodes[1].raws.value, '\n', 'should have a raw combinator value');
-});
-(0, _helpers.test)('with spaces and a comment has only one combinator', ".bar /* comment 3 */ > .foo", function (t, tree) {
- var nodeTypes = tree.nodes[0].map(function (n) {
- return n.type;
- });
- t.deepEqual(nodeTypes, ["class", "combinator", "class"]);
-});
-(0, _helpers.test)('with a meaningful comment in the middle of a compound selector', "div/* wtf */.foo", function (t, tree) {
- var nodeTypes = tree.nodes[0].map(function (n) {
- return n.type;
- });
- t.deepEqual(nodeTypes, ["tag", "comment", "class"]);
-});
-(0, _helpers.test)('with a comment in the middle of a descendant selector', "div/* wtf */ .foo", function (t, tree) {
- var nodeTypes = tree.nodes[0].map(function (n) {
- return n.type;
- });
- t.deepEqual(nodeTypes, ["tag", "comment", "combinator", "class"]);
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/comments.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/comments.js
deleted file mode 100644
index 83463b5..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/comments.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-
-var _helpers = require("./util/helpers");
-
-(0, _helpers.test)('comments', '/*test comment*/h2', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '/*test comment*/');
- t.deepEqual(tree.nodes[0].nodes[1].value, 'h2');
-});
-(0, _helpers.test)('comments (2)', '.a /*test comment*/label', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'combinator');
- t.deepEqual(tree.nodes[0].nodes[1].value, ' ');
- t.deepEqual(tree.nodes[0].nodes[1].spaces.after, ' ');
- t.deepEqual(tree.nodes[0].nodes[1].rawSpaceAfter, ' /*test comment*/');
- t.deepEqual(tree.nodes[0].nodes[2].type, 'tag');
-});
-(0, _helpers.test)('comments (3)', '.a /*test comment*/ label', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'combinator');
- t.deepEqual(tree.nodes[0].nodes[1].value, ' ');
- t.deepEqual(tree.nodes[0].nodes[1].spaces.before, ' ');
- t.deepEqual(tree.nodes[0].nodes[1].rawSpaceBefore, ' /*test comment*/ ');
- t.deepEqual(tree.nodes[0].nodes[2].type, 'tag');
-});
-(0, _helpers.test)('multiple comments and other things', 'h1/*test*/h2/*test*/.test/*test*/', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].type, 'tag', 'should have a tag');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'comment', 'should have a comment');
- t.deepEqual(tree.nodes[0].nodes[2].type, 'tag', 'should have a tag');
- t.deepEqual(tree.nodes[0].nodes[3].type, 'comment', 'should have a comment');
- t.deepEqual(tree.nodes[0].nodes[4].type, 'class', 'should have a class name');
- t.deepEqual(tree.nodes[0].nodes[5].type, 'comment', 'should have a comment');
-});
-(0, _helpers.test)('ending in comment', ".bar /* comment 3 */", function (t, tree) {
- var classname = tree.nodes[0].nodes[0];
- t.deepEqual(classname.type, 'class', 'should have a tag');
- t.deepEqual(classname.spaces.after, ' ');
- t.deepEqual(classname.raws.spaces.after, ' /* comment 3 */');
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/container.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/container.js
deleted file mode 100644
index ff1bb71..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/container.js
+++ /dev/null
@@ -1,393 +0,0 @@
-"use strict";
-
-var _ava = _interopRequireDefault(require("ava"));
-
-var _ = _interopRequireDefault(require(".."));
-
-var _helpers = require("./util/helpers");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-(0, _ava.default)('container#append', function (t) {
- var out = (0, _helpers.parse)('h1', function (selectors) {
- var selector = selectors.first;
- var clone = selector.first.clone({
- value: 'h2'
- });
- selectors.append(clone);
- });
- t.deepEqual(out, 'h1,h2');
-});
-(0, _ava.default)('container#prepend', function (t) {
- var out = (0, _helpers.parse)('h2', function (selectors) {
- var selector = selectors.first;
- var clone = selector.first.clone({
- value: 'h1'
- });
- selectors.prepend(clone);
- });
- t.deepEqual(out, 'h1,h2');
-});
-(0, _ava.default)('container#each', function (t) {
- var str = '';
- (0, _helpers.parse)('h1, h2:not(h3, h4)', function (selectors) {
- selectors.each(function (selector) {
- if (selector.first.type === 'tag') {
- str += selector.first.value;
- }
- });
- });
- t.deepEqual(str, 'h1h2');
-});
-(0, _ava.default)('container#each (safe iteration)', function (t) {
- var out = (0, _helpers.parse)('.x, .y', function (selectors) {
- selectors.each(function (selector) {
- selector.parent.insertBefore(selector, _.default.className({
- value: 'b'
- }));
- selector.parent.insertAfter(selector, _.default.className({
- value: 'a'
- }));
- });
- });
- t.deepEqual(out, '.b,.x,.a,.b, .y,.a');
-});
-(0, _ava.default)('container#each (early exit)', function (t) {
- var str = '';
- (0, _helpers.parse)('h1, h2, h3, h4', function (selectors) {
- var eachReturn = selectors.each(function (selector) {
- var tag = selector.first.value;
- str += tag;
- return tag !== 'h2';
- });
- t.false(eachReturn);
- });
- t.deepEqual(str, 'h1h2');
-});
-(0, _ava.default)('container#walk', function (t) {
- var str = '';
- (0, _helpers.parse)('h1, h2:not(h3, h4)', function (selectors) {
- selectors.walk(function (selector) {
- if (selector.type === 'tag') {
- str += selector.value;
- }
- });
- });
- t.deepEqual(str, 'h1h2h3h4');
-});
-(0, _ava.default)('container#walk (safe iteration)', function (t) {
- var out = (0, _helpers.parse)('[class] + *[href] *:not(*.green)', function (selectors) {
- selectors.walkUniversals(function (selector) {
- var next = selector.next();
-
- if (next && next.type !== 'combinator') {
- selector.remove();
- }
- });
- });
- t.deepEqual(out, '[class] + [href] :not(.green)');
-});
-(0, _ava.default)('container#walk (early exit)', function (t) {
- var str = '';
- (0, _helpers.parse)('h1, h2:not(h3, h4)', function (selectors) {
- var walkReturn = selectors.walk(function (selector) {
- if (selector.type === 'tag') {
- var tag = selector.value;
- str += tag;
- return tag !== 'h3';
- }
- });
- t.false(walkReturn);
- });
- t.deepEqual(str, 'h1h2h3');
-});
-(0, _ava.default)('container#walkAttribute', function (t) {
- var out = (0, _helpers.parse)('[href][class].class', function (selectors) {
- selectors.walkAttributes(function (attr) {
- if (attr.attribute === 'class') {
- attr.remove();
- }
- });
- });
- t.deepEqual(out, '[href].class');
-});
-(0, _ava.default)('container#walkClass', function (t) {
- var out = (0, _helpers.parse)('.one, .two, .three:not(.four, .five)', function (selectors) {
- selectors.walkClasses(function (className) {
- className.value = className.value.slice(0, 1);
- });
- });
- t.deepEqual(out, '.o, .t, .t:not(.f, .f)');
-});
-(0, _ava.default)('container#walkCombinator', function (t) {
- var out = (0, _helpers.parse)('h1 h2 h3 h4', function (selectors) {
- selectors.walkCombinators(function (comment) {
- comment.remove();
- });
- });
- t.deepEqual(out, 'h1h2h3h4');
-});
-(0, _ava.default)('container#walkComment', function (t) {
- var out = (0, _helpers.parse)('.one/*test*/.two', function (selectors) {
- selectors.walkComments(function (comment) {
- comment.remove();
- });
- });
- t.deepEqual(out, '.one.two');
-});
-(0, _ava.default)('container#walkId', function (t) {
- var out = (0, _helpers.parse)('h1#one, h2#two', function (selectors) {
- selectors.walkIds(function (id) {
- id.value = id.value.slice(0, 1);
- });
- });
- t.deepEqual(out, 'h1#o, h2#t');
-});
-(0, _ava.default)('container#walkNesting', function (t) {
- var out = (0, _helpers.parse)('& h1', function (selectors) {
- selectors.walkNesting(function (node) {
- node.replaceWith(_.default.tag({
- value: 'body'
- }));
- });
- });
- t.deepEqual(out, 'body h1');
-});
-(0, _ava.default)('container#walkPseudo', function (t) {
- var out = (0, _helpers.parse)('a:before, a:after', function (selectors) {
- selectors.walkPseudos(function (pseudo) {
- pseudo.value = pseudo.value.slice(0, 2);
- });
- });
- t.deepEqual(out, 'a:b, a:a');
-});
-(0, _ava.default)('container#walkTag', function (t) {
- var out = (0, _helpers.parse)('1 2 3', function (selectors) {
- selectors.walkTags(function (tag) {
- tag.value = 'h' + tag.value;
- });
- });
- t.deepEqual(out, 'h1 h2 h3');
-});
-(0, _ava.default)('container#walkUniversal', function (t) {
- var out = (0, _helpers.parse)('*.class,*.class,*.class', function (selectors) {
- selectors.walkUniversals(function (universal) {
- universal.remove();
- });
- });
- t.deepEqual(out, '.class,.class,.class');
-});
-(0, _ava.default)('container#map', function (t) {
- (0, _helpers.parse)('1 2 3', function (selectors) {
- var arr = selectors.first.map(function (selector) {
- if (/[0-9]/.test(selector.value)) {
- return 'h' + selector.value;
- }
-
- return selector.value;
- });
- t.deepEqual(arr, ['h1', ' ', 'h2', ' ', 'h3']);
- });
-});
-(0, _ava.default)('container#every', function (t) {
- (0, _helpers.parse)('.one.two.three', function (selectors) {
- var allClasses = selectors.first.every(function (selector) {
- return selector.type === 'class';
- });
- t.truthy(allClasses);
- });
-});
-(0, _ava.default)('container#some', function (t) {
- (0, _helpers.parse)('one#two.three', function (selectors) {
- var someClasses = selectors.first.some(function (selector) {
- return selector.type === 'class';
- });
- t.truthy(someClasses);
- });
-});
-(0, _ava.default)('container#reduce', function (t) {
- (0, _helpers.parse)('h1, h2, h3, h4', function (selectors) {
- var str = selectors.reduce(function (memo, selector) {
- if (selector.first.type === 'tag') {
- memo += selector.first.value;
- }
-
- return memo;
- }, '');
- t.deepEqual(str, 'h1h2h3h4');
- });
-});
-(0, _ava.default)('container#filter', function (t) {
- (0, _helpers.parse)('h1, h2, c1, c2', function (selectors) {
- var ast = selectors.filter(function (selector) {
- return ~selector.first.value.indexOf('h');
- });
- t.deepEqual(String(ast), 'h1, h2');
- });
-});
-(0, _ava.default)('container#split', function (t) {
- (0, _helpers.parse)('h1 h2 >> h3', function (selectors) {
- var list = selectors.first.split(function (selector) {
- return selector.value === '>>';
- }).map(function (group) {
- return group.map(String);
- });
- t.deepEqual(list, [['h1', ' ', 'h2', ' >> '], ['h3']]);
- t.deepEqual(list.length, 2);
- });
-});
-(0, _ava.default)('container#sort', function (t) {
- var out = (0, _helpers.parse)('h2,h3,h1,h4', function (selectors) {
- selectors.sort(function (a, b) {
- return a.first.value.slice(-1) - b.first.value.slice(-1);
- });
- });
- t.deepEqual(out, 'h1,h2,h3,h4');
-});
-(0, _ava.default)('container#at', function (t) {
- (0, _helpers.parse)('h1, h2, h3', function (selectors) {
- t.deepEqual(selectors.at(1).first.value, 'h2');
- });
-});
-(0, _ava.default)('container#first, container#last', function (t) {
- (0, _helpers.parse)('h1, h2, h3, h4', function (selectors) {
- t.deepEqual(selectors.first.first.value, 'h1');
- t.deepEqual(selectors.last.last.value, 'h4');
- });
-});
-(0, _ava.default)('container#index', function (t) {
- (0, _helpers.parse)('h1 h2 h3', function (selectors) {
- var middle = selectors.first.at(1);
- t.deepEqual(selectors.first.index(middle), 1);
- });
-});
-(0, _ava.default)('container#length', function (t) {
- (0, _helpers.parse)('h1, h2, h3', function (selectors) {
- t.deepEqual(selectors.length, 3);
- });
-});
-(0, _ava.default)('container#removeChild', function (t) {
- var out = (0, _helpers.parse)('h1.class h2.class h3.class', function (selectors) {
- selectors.walk(function (selector) {
- if (selector.type === 'class') {
- selector.parent.removeChild(selector);
- }
- });
- });
- t.deepEqual(out, 'h1 h2 h3');
-});
-(0, _ava.default)('container#removeAll, container#empty', function (t) {
- var wipe = function wipe(method) {
- return function (selectors) {
- return selectors[method]();
- };
- };
-
- var out1 = (0, _helpers.parse)('h1 h2, h2 h3, h3 h4', wipe('empty'));
- var out2 = (0, _helpers.parse)('h1 h2, h2 h3, h3 h4', wipe('removeAll'));
- t.deepEqual(out1, '');
- t.deepEqual(out2, '');
-});
-(0, _ava.default)('container#insertBefore', function (t) {
- var out = (0, _helpers.parse)('h2', function (selectors) {
- var selector = selectors.first;
- var clone = selector.first.clone({
- value: 'h1'
- });
- selectors.insertBefore(selector, clone);
- });
- t.deepEqual(out, 'h1,h2');
-});
-(0, _ava.default)('container#insertBefore and node#remove', function (t) {
- var out = (0, _helpers.parse)('h2', function (selectors) {
- var selector = selectors.first;
-
- var newSel = _.default.tag({
- value: 'h1'
- });
-
- selectors.insertBefore(selector, newSel);
- newSel.remove();
- });
- t.deepEqual(out, 'h2');
-});
-(0, _ava.default)('container#insertAfter', function (t) {
- var out = (0, _helpers.parse)('h1', function (selectors) {
- var selector = selectors.first;
- var clone = selector.first.clone({
- value: 'h2'
- });
- selectors.insertAfter(selector, clone);
- });
- t.deepEqual(out, 'h1,h2');
-});
-(0, _ava.default)('container#insertAfter and node#remove', function (t) {
- var out = (0, _helpers.parse)('h2', function (selectors) {
- var selector = selectors.first;
-
- var newSel = _.default.tag({
- value: 'h1'
- });
-
- selectors.insertAfter(selector, newSel);
- newSel.remove();
- });
- t.deepEqual(out, 'h2');
-});
-(0, _ava.default)('container#insertAfter (during iteration)', function (t) {
- var out = (0, _helpers.parse)('h1, h2, h3', function (selectors) {
- selectors.walkTags(function (selector) {
- var attribute = _.default.attribute({
- attribute: 'class'
- });
-
- selector.parent.insertAfter(selector, attribute);
- });
- });
- t.deepEqual(out, 'h1[class], h2[class], h3[class]');
-});
-(0, _ava.default)('Container#atPosition first pseudo', function (t) {
- (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
- var node = root.atPosition(1, 1);
- t.deepEqual(node.type, "pseudo");
- t.deepEqual(node.toString(), ":not(.foo)");
- });
-});
-(0, _ava.default)('Container#atPosition class in pseudo', function (t) {
- (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
- var node = root.atPosition(1, 6);
- t.deepEqual(node.type, "class");
- t.deepEqual(node.toString(), ".foo");
- });
-});
-(0, _ava.default)('Container#atPosition id in second selector', function (t) {
- (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
- var node = root.atPosition(2, 1);
- t.deepEqual(node.type, "id");
- t.deepEqual(node.toString(), "\n#foo");
- });
-});
-(0, _ava.default)('Container#atPosition combinator in second selector', function (t) {
- (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
- var node = root.atPosition(2, 6);
- t.deepEqual(node.type, "combinator");
- t.deepEqual(node.toString(), " > ");
- var nodeSpace = root.atPosition(2, 5);
- t.deepEqual(nodeSpace.type, "selector");
- t.deepEqual(nodeSpace.toString(), "\n#foo > :matches(ol, ul)");
- });
-});
-(0, _ava.default)('Container#atPosition tag in second selector pseudo', function (t) {
- (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
- var node = root.atPosition(2, 17);
- t.deepEqual(node.type, "tag");
- t.deepEqual(node.toString(), "ol");
- });
-});
-(0, _ava.default)('Container#atPosition comma in second selector pseudo', function (t) {
- (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
- var node = root.atPosition(2, 19);
- t.deepEqual(node.type, "pseudo");
- t.deepEqual(node.toString(), ":matches(ol, ul)");
- });
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/escapes.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/escapes.js
deleted file mode 100644
index cebabd9..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/escapes.js
+++ /dev/null
@@ -1,19 +0,0 @@
-"use strict";
-
-var _helpers = require("./util/helpers");
-
-(0, _helpers.test)('escaped semicolon in class', '.\\;', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, ';');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\;');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
-});
-(0, _helpers.test)('escaped semicolon in id', '#\\;', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, ';');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\;');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
-}); // This is a side-effect of allowing media queries to be parsed. Not sure it shouldn't just be an error.
-
-(0, _helpers.test)('bare parens capture contents as a string', '(h1)', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '(h1)');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'string');
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/exceptions.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/exceptions.js
deleted file mode 100644
index 5f7c41c..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/exceptions.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"use strict";
-
-var _helpers = require("./util/helpers");
-
-// Unclosed elements
-(0, _helpers.throws)('unclosed string', 'a[href="wow]');
-(0, _helpers.throws)('unclosed comment', '/* oops');
-(0, _helpers.throws)('unclosed pseudo element', 'button::');
-(0, _helpers.throws)('unclosed pseudo class', 'a:');
-(0, _helpers.throws)('unclosed attribute selector', '[name="james"][href');
-(0, _helpers.throws)('no opening parenthesis', ')');
-(0, _helpers.throws)('no opening parenthesis (2)', ':global.foo)');
-(0, _helpers.throws)('no opening parenthesis (3)', 'h1:not(h2:not(h3)))');
-(0, _helpers.throws)('no opening square bracket', ']');
-(0, _helpers.throws)('no opening square bracket (2)', ':global.foo]');
-(0, _helpers.throws)('no opening square bracket (3)', '[global]]');
-(0, _helpers.throws)('bad pseudo element', 'button::"after"');
-(0, _helpers.throws)('missing closing parenthesis in pseudo', ':not([attr="test"]:not([attr="test"])');
-(0, _helpers.throws)('bad syntax', '-moz-osx-font-smoothing: grayscale');
-(0, _helpers.throws)('bad syntax (2)', '! .body');
-(0, _helpers.throws)('missing backslash for semicolon', '.;');
-(0, _helpers.throws)('missing backslash for semicolon (2)', '.\;');
-(0, _helpers.throws)('unexpected / foo', '-Option\/root', "Unexpected '/'. Escaping special characters with \\ may help.");
-(0, _helpers.throws)('bang in selector', '.foo !optional', "Unexpected '!'. Escaping special characters with \\ may help."); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/guards.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/guards.js
deleted file mode 100644
index b2045ca..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/guards.js
+++ /dev/null
@@ -1,118 +0,0 @@
-"use strict";
-
-var _ = _interopRequireDefault(require("../"));
-
-var _helpers = require("./util/helpers");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var node = function node(tree, n) {
- if (n === void 0) {
- n = 0;
- }
-
- return tree.nodes[0].nodes[n];
-};
-
-(0, _helpers.test)('attribute guard', '[foo]', function (t, tree) {
- var n = node(tree);
- t.true(_.default.isNode(n));
- t.false(_.default.isAttribute(undefined));
- t.true(_.default.isAttribute(n));
- t.false(_.default.isContainer(n));
- t.true(_.default.isNamespace(n));
-});
-(0, _helpers.test)('className guard', '.foo', function (t, tree) {
- var n = node(tree);
- t.true(_.default.isNode(n));
- t.false(_.default.isClassName(undefined));
- t.true(_.default.isClassName(n));
- t.false(_.default.isContainer(n));
- t.false(_.default.isNamespace(n));
-});
-(0, _helpers.test)('combinator guard', '.foo > .bar', function (t, tree) {
- var n = node(tree, 1);
- t.true(_.default.isNode(n));
- t.false(_.default.isCombinator(undefined));
- t.true(_.default.isCombinator(n));
- t.false(_.default.isContainer(n));
- t.false(_.default.isNamespace(n));
-});
-(0, _helpers.test)('comment guard', '/* foo */.foo > .bar', function (t, tree) {
- var n = node(tree);
- t.true(_.default.isNode(n));
- t.false(_.default.isComment(undefined));
- t.true(_.default.isComment(n));
- t.false(_.default.isContainer(n));
- t.false(_.default.isNamespace(n));
-});
-(0, _helpers.test)('id guard', '#ident', function (t, tree) {
- var n = node(tree);
- t.true(_.default.isNode(n));
- t.false(_.default.isIdentifier(undefined));
- t.true(_.default.isIdentifier(n));
- t.false(_.default.isContainer(n));
- t.false(_.default.isNamespace(n));
-});
-(0, _helpers.test)('nesting guard', '&.foo', function (t, tree) {
- var n = node(tree);
- t.true(_.default.isNode(n));
- t.false(_.default.isNesting(undefined));
- t.true(_.default.isNesting(n));
- t.false(_.default.isContainer(n));
- t.false(_.default.isNamespace(n));
-});
-(0, _helpers.test)('pseudo class guard', ':hover', function (t, tree) {
- var n = node(tree);
- t.true(_.default.isNode(n));
- t.false(_.default.isPseudo(undefined));
- t.true(_.default.isPseudo(n));
- t.true(_.default.isPseudoClass(n));
- t.false(_.default.isPseudoElement(n));
- t.true(_.default.isContainer(n));
- t.false(_.default.isNamespace(n));
-});
-(0, _helpers.test)('pseudo element guard', '::first-line', function (t, tree) {
- var n = node(tree);
- t.true(_.default.isNode(n));
- t.false(_.default.isPseudo(undefined));
- t.true(_.default.isPseudo(n));
- t.false(_.default.isPseudoClass(n));
- t.true(_.default.isPseudoElement(n));
- t.true(_.default.isContainer(n));
- t.false(_.default.isNamespace(n));
-});
-(0, _helpers.test)('special pseudo element guard', ':before:after', function (t, tree) {
- [node(tree), node(tree, 1)].forEach(function (n) {
- t.true(_.default.isPseudo(n));
- t.false(_.default.isPseudoClass(n));
- t.true(_.default.isPseudoElement(n));
- t.true(_.default.isContainer(n));
- t.false(_.default.isNamespace(n));
- });
-});
-(0, _helpers.test)('string guard', '"string"', function (t, tree) {
- var n = node(tree);
- t.true(_.default.isNode(n));
- t.false(_.default.isString(undefined));
- t.true(_.default.isString(n));
- t.false(_.default.isContainer(n));
- t.false(_.default.isNamespace(n));
-});
-(0, _helpers.test)('tag guard', 'h1', function (t, tree) {
- var n = node(tree);
- t.false(_.default.isNode(undefined));
- t.true(_.default.isNode(n));
- t.false(_.default.isTag(undefined));
- t.true(_.default.isTag(n));
- t.false(_.default.isContainer(n));
- t.true(_.default.isNamespace(n));
-});
-(0, _helpers.test)('universal guard', '*', function (t, tree) {
- var n = node(tree);
- t.true(_.default.isNode(n));
- t.false(_.default.isUniversal(undefined));
- t.true(_.default.isUniversal(n));
- t.false(_.default.isContainer(n));
- t.false(_.default.isNamespace(n));
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/id.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/id.js
deleted file mode 100644
index 73386f6..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/id.js
+++ /dev/null
@@ -1,229 +0,0 @@
-"use strict";
-
-var _helpers = require("./util/helpers");
-
-(0, _helpers.test)('id selector', '#one', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'one');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
-});
-(0, _helpers.test)('id hack', '#one#two', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'id');
-});
-(0, _helpers.test)('id and class names mixed', '#one.two.three', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'one');
- t.deepEqual(tree.nodes[0].nodes[1].value, 'two');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'three');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[2].type, 'class');
-});
-(0, _helpers.test)('qualified id', 'button#one', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'id');
-});
-(0, _helpers.test)('qualified id & class name', 'h1#one.two', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[2].type, 'class');
-});
-(0, _helpers.test)('extraneous non-combinating whitespace', ' #h1 , #h2 ', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'h1');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.before, ' ');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.after, ' ');
- t.deepEqual(tree.nodes[1].nodes[0].value, 'h2');
- t.deepEqual(tree.nodes[1].nodes[0].spaces.before, ' ');
- t.deepEqual(tree.nodes[1].nodes[0].spaces.after, ' ');
-});
-(0, _helpers.test)('Sass interpolation within a class', '.#{foo}', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes.length, 1);
- t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[0].value, '#{foo}');
-});
-(0, _helpers.test)('Sass interpolation within an id', '#foo#{bar}', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes.length, 1);
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'foo#{bar}');
-});
-(0, _helpers.test)('Less interpolation within an id', '#foo@{bar}', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes.length, 1);
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'foo@{bar}');
-});
-(0, _helpers.test)('id selector with escaping', '#\\#test', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '#test');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\#test');
-});
-(0, _helpers.test)('id selector with escaping (2)', '#-a-b-c-', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '-a-b-c-');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
-});
-(0, _helpers.test)('id selector with escaping (3)', '#u-m\\00002b', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'u-m+');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'u-m\\00002b');
-});
-(0, _helpers.test)('id selector with escaping (4)', '#♥', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '♥');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
-});
-(0, _helpers.test)('id selector with escaping (5)', '#©', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '©');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
-});
-(0, _helpers.test)('id selector with escaping (6)', '#“‘’”', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '“‘’”');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
-});
-(0, _helpers.test)('id selector with escaping (7)', '#☺☃', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '☺☃');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
-});
-(0, _helpers.test)('id selector with escaping (8)', '#⌘⌥', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '⌘⌥');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
-});
-(0, _helpers.test)('id selector with escaping (9)', '#𝄞♪♩♫♬', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '𝄞♪♩♫♬');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
-});
-(0, _helpers.test)('id selector with escaping (10)', '#💩', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '💩');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
-});
-(0, _helpers.test)('id selector with escaping (11)', '#\\?', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '?');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\?');
-});
-(0, _helpers.test)('id selector with escaping (12)', '#\\@', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '@');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\@');
-});
-(0, _helpers.test)('id selector with escaping (13)', '#\\.', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '.');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\.');
-});
-(0, _helpers.test)('id selector with escaping (14)', '#\\3A \\)', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, ':)');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\3A \\)');
-});
-(0, _helpers.test)('id selector with escaping (15)', '#\\3A \\`\\(', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, ':`(');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\3A \\`\\(');
-});
-(0, _helpers.test)('id selector with escaping (16)', '#\\31 23', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '123');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\31 23');
-});
-(0, _helpers.test)('id selector with escaping (17)', '#\\31 a2b3c', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '1a2b3c');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\31 a2b3c');
-});
-(0, _helpers.test)('id selector with escaping (18)', '#\\<p\\>', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '<p>');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\<p\\>');
-});
-(0, _helpers.test)('id selector with escaping (19)', '#\\<\\>\\<\\<\\<\\>\\>\\<\\>', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '<><<<>><>');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\<\\>\\<\\<\\<\\>\\>\\<\\>');
-});
-(0, _helpers.test)('id selector with escaping (20)', '#\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\[\\>\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\>\\+\\<\\<\\<\\<\\-\\]\\>\\+\\+\\.\\>\\+\\.\\+\\+\\+\\+\\+\\+\\+\\.\\.\\+\\+\\+\\.\\>\\+\\+\\.\\<\\<\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\.\\>\\.\\+\\+\\+\\.\\-\\-\\-\\-\\-\\-\\.\\-\\-\\-\\-\\-\\-\\-\\-\\.\\>\\+\\.\\>\\.', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\[\\>\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\>\\+\\<\\<\\<\\<\\-\\]\\>\\+\\+\\.\\>\\+\\.\\+\\+\\+\\+\\+\\+\\+\\.\\.\\+\\+\\+\\.\\>\\+\\+\\.\\<\\<\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\.\\>\\.\\+\\+\\+\\.\\-\\-\\-\\-\\-\\-\\.\\-\\-\\-\\-\\-\\-\\-\\-\\.\\>\\+\\.\\>\\.');
-});
-(0, _helpers.test)('id selector with escaping (21)', '#\\#', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '#');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\#');
-});
-(0, _helpers.test)('id selector with escaping (22)', '#\\#\\#', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '##');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\#\\#');
-});
-(0, _helpers.test)('id selector with escaping (23)', '#\\#\\.\\#\\.\\#', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '#.#.#');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\#\\.\\#\\.\\#');
-});
-(0, _helpers.test)('id selector with escaping (24)', '#\\_', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '_');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\_');
-});
-(0, _helpers.test)('id selector with escaping (25)', '#\\{\\}', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '{}');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\{\\}');
-});
-(0, _helpers.test)('id selector with escaping (26)', '#\\.fake\\-class', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '.fake-class');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\.fake\\-class');
-});
-(0, _helpers.test)('id selector with escaping (27)', '#foo\\.bar', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'foo.bar');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'foo\\.bar');
-});
-(0, _helpers.test)('id selector with escaping (28)', '#\\3A hover', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, ':hover');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\3A hover');
-});
-(0, _helpers.test)('id selector with escaping (29)', '#\\3A hover\\3A focus\\3A active', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, ':hover:focus:active');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\3A hover\\3A focus\\3A active');
-});
-(0, _helpers.test)('id selector with escaping (30)', '#\\[attr\\=value\\]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '[attr=value]');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\[attr\\=value\\]');
-});
-(0, _helpers.test)('id selector with escaping (31)', '#f\\/o\\/o', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'f/o/o');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\/o\\/o');
-});
-(0, _helpers.test)('id selector with escaping (32)', '#f\\\\o\\\\o', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'f\\o\\o');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\\\o\\\\o');
-});
-(0, _helpers.test)('id selector with escaping (33)', '#f\\*o\\*o', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'f*o*o');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\*o\\*o');
-});
-(0, _helpers.test)('id selector with escaping (34)', '#f\\!o\\!o', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'f!o!o');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\!o\\!o');
-});
-(0, _helpers.test)('id selector with escaping (35)', '#f\\\'o\\\'o', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'f\'o\'o');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\\'o\\\'o');
-});
-(0, _helpers.test)('id selector with escaping (36)', '#f\\~o\\~o', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'f~o~o');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\~o\\~o');
-});
-(0, _helpers.test)('id selector with escaping (37)', '#f\\+o\\+o', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'f+o+o');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'id');
- t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\+o\\+o');
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/lossy.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/lossy.js
deleted file mode 100644
index bfec388..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/lossy.js
+++ /dev/null
@@ -1,88 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.testLossy = exports.parse = void 0;
-
-var _ava = _interopRequireDefault(require("ava"));
-
-var _index = _interopRequireDefault(require("../index"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var parse = function parse(input, options, transform) {
- return (0, _index.default)(transform).processSync(input, options);
-};
-
-exports.parse = parse;
-
-var testLossy = function testLossy(t, input, expected) {
- var result = parse(input, {
- lossless: false
- });
- t.deepEqual(result, expected);
-};
-
-exports.testLossy = testLossy;
-(0, _ava.default)('combinator, descendant - single', testLossy, '.one .two', '.one .two');
-(0, _ava.default)('combinator, descendant - multiple', testLossy, '.one .two', '.one .two');
-(0, _ava.default)('combinator, child - space before', testLossy, '.one >.two', '.one>.two');
-(0, _ava.default)('combinator, child - space after', testLossy, '.one> .two', '.one>.two');
-(0, _ava.default)('combinator, sibling - space before', testLossy, '.one ~.two', '.one~.two');
-(0, _ava.default)('combinator, sibling - space after', testLossy, '.one~ .two', '.one~.two');
-(0, _ava.default)('combinator, adj sibling - space before', testLossy, '.one +.two', '.one+.two');
-(0, _ava.default)('combinator, adj sibling - space after', testLossy, '.one+ .two', '.one+.two');
-(0, _ava.default)('classes, extraneous spaces', testLossy, ' .h1 , .h2 ', '.h1,.h2');
-(0, _ava.default)('ids, extraneous spaces', testLossy, ' #h1 , #h2 ', '#h1,#h2');
-(0, _ava.default)('attribute, spaces in selector', testLossy, 'h1[ href *= "test" ]', 'h1[href*="test"]');
-(0, _ava.default)('attribute, insensitive flag 1', testLossy, '[href="test" i ]', '[href="test"i]');
-(0, _ava.default)('attribute, insensitive flag 2', testLossy, '[href=TEsT i ]', '[href=TEsT i]');
-(0, _ava.default)('attribute, insensitive flag 3', testLossy, '[href=test i ]', '[href=test i]');
-(0, _ava.default)('attribute, extreneous whitespace', testLossy, ' [href] , [class] ', '[href],[class]');
-(0, _ava.default)('namespace, space before', testLossy, ' postcss|button', 'postcss|button');
-(0, _ava.default)('namespace, space after', testLossy, 'postcss|button ', 'postcss|button');
-(0, _ava.default)('namespace - all elements, space before', testLossy, ' postcss|*', 'postcss|*');
-(0, _ava.default)('namespace - all elements, space after', testLossy, 'postcss|* ', 'postcss|*');
-(0, _ava.default)('namespace - all namespaces, space before', testLossy, ' *|button', '*|button');
-(0, _ava.default)('namespace - all namespaces, space after', testLossy, '*|button ', '*|button');
-(0, _ava.default)('namespace - all elements in all namespaces, space before', testLossy, ' *|*', '*|*');
-(0, _ava.default)('namespace - all elements in all namespaces, space after', testLossy, '*|* ', '*|*');
-(0, _ava.default)('namespace - all elements without namespace, space before', testLossy, ' |*', '|*');
-(0, _ava.default)('namespace - all elements without namespace, space after', testLossy, '|* ', '|*');
-(0, _ava.default)('namespace - tag with no namespace, space before', testLossy, ' |button', '|button');
-(0, _ava.default)('namespace - tag with no namespace, space after', testLossy, '|button ', '|button');
-(0, _ava.default)('namespace - inside attribute, space before', testLossy, ' [ postcss|href=test]', '[postcss|href=test]');
-(0, _ava.default)('namespace - inside attribute, space after', testLossy, '[postcss|href= test ] ', '[postcss|href=test]');
-(0, _ava.default)('namespace - inside attribute (2), space before', testLossy, ' [ postcss|href]', '[postcss|href]');
-(0, _ava.default)('namespace - inside attribute (2), space after', testLossy, '[postcss|href ] ', '[postcss|href]');
-(0, _ava.default)('namespace - inside attribute (3), space before', testLossy, ' [ *|href=test]', '[*|href=test]');
-(0, _ava.default)('namespace - inside attribute (3), space after', testLossy, '[*|href= test ] ', '[*|href=test]');
-(0, _ava.default)('namespace - inside attribute (4), space after', testLossy, '[|href= test ] ', '[|href=test]');
-(0, _ava.default)('tag - extraneous whitespace', testLossy, ' h1 , h2 ', 'h1,h2');
-(0, _ava.default)('tag - trailing comma', testLossy, 'h1, ', 'h1,');
-(0, _ava.default)('tag - trailing comma (1)', testLossy, 'h1,', 'h1,');
-(0, _ava.default)('tag - trailing comma (2)', testLossy, 'h1', 'h1');
-(0, _ava.default)('tag - trailing slash (1)', testLossy, 'h1\\ ', 'h1\\ ');
-(0, _ava.default)('tag - trailing slash (2)', testLossy, 'h1\\ h2\\', 'h1\\ h2\\');
-(0, _ava.default)('universal - combinator', testLossy, ' * + * ', '*+*');
-(0, _ava.default)('universal - extraneous whitespace', testLossy, ' * , * ', '*,*');
-(0, _ava.default)('universal - qualified universal selector', testLossy, '*[href] *:not(*.green)', '*[href] *:not(*.green)');
-(0, _ava.default)('nesting - spacing before', testLossy, ' &.class', '&.class');
-(0, _ava.default)('nesting - spacing after', testLossy, '&.class ', '&.class');
-(0, _ava.default)('nesting - spacing between', testLossy, '& .class ', '& .class');
-(0, _ava.default)('pseudo (single) - spacing before', testLossy, ' :after', ':after');
-(0, _ava.default)('pseudo (single) - spacing after', testLossy, ':after ', ':after');
-(0, _ava.default)('pseudo (double) - spacing before', testLossy, ' ::after', '::after');
-(0, _ava.default)('pseudo (double) - spacing after', testLossy, '::after ', '::after');
-(0, _ava.default)('pseudo - multiple', testLossy, ' *:target::before , a:after ', '*:target::before,a:after');
-(0, _ava.default)('pseudo - negated', testLossy, 'h1:not( .heading )', 'h1:not(.heading)');
-(0, _ava.default)('pseudo - negated with combinators (1)', testLossy, 'h1:not(.heading > .title) > h1', 'h1:not(.heading>.title)>h1');
-(0, _ava.default)('pseudo - negated with combinators (2)', testLossy, '.foo:nth-child(2n + 1)', '.foo:nth-child(2n+1)');
-(0, _ava.default)('pseudo - extra whitespace', testLossy, 'a:not( h2 )', 'a:not(h2)');
-(0, _ava.default)('comments - comment inside descendant selector', testLossy, "div /* wtf */.foo", "div /* wtf */.foo");
-(0, _ava.default)('comments - comment inside complex selector', testLossy, "div /* wtf */ > .foo", "div/* wtf */>.foo");
-(0, _ava.default)('comments - comment inside compound selector with space', testLossy, "div /* wtf */ .foo", "div /* wtf */.foo");
-(0, _ava.default)('@words - space before', testLossy, ' @media', '@media');
-(0, _ava.default)('@words - space after', testLossy, '@media ', '@media');
-(0, _ava.default)('@words - maintains space between', testLossy, '@media (min-width: 700px) and (orientation: landscape)', '@media (min-width: 700px) and (orientation: landscape)');
-(0, _ava.default)('@words - extraneous space between', testLossy, '@media (min-width: 700px) and (orientation: landscape)', '@media (min-width: 700px) and (orientation: landscape)');
-(0, _ava.default)('@words - multiple', testLossy, '@media (min-width: 700px), (min-height: 400px)', '@media (min-width: 700px),(min-height: 400px)'); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/namespaces.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/namespaces.js
deleted file mode 100644
index 15333e6..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/namespaces.js
+++ /dev/null
@@ -1,66 +0,0 @@
-"use strict";
-
-var _helpers = require("./util/helpers");
-
-(0, _helpers.test)('match tags in the postcss namespace', 'postcss|button', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].namespace, 'postcss');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'button');
-});
-(0, _helpers.test)('match everything in the postcss namespace', 'postcss|*', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].namespace, 'postcss');
- t.deepEqual(tree.nodes[0].nodes[0].value, '*');
-});
-(0, _helpers.test)('match any namespace', '*|button', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].namespace, '*');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'button');
-});
-(0, _helpers.test)('match all elements within the postcss namespace', 'postcss|*', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].namespace, 'postcss');
- t.deepEqual(tree.nodes[0].nodes[0].value, '*');
-});
-(0, _helpers.test)('match all elements in all namespaces', '*|*', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].namespace, '*');
- t.deepEqual(tree.nodes[0].nodes[0].value, '*');
-});
-(0, _helpers.test)('match all elements without a namespace', '|*', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].namespace, true);
- t.deepEqual(tree.nodes[0].nodes[0].value, '*');
-});
-(0, _helpers.test)('match tags with no namespace', '|button', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].namespace, true);
- t.deepEqual(tree.nodes[0].nodes[0].value, 'button');
-});
-(0, _helpers.test)('match namespace inside attribute selector', '[postcss|href=test]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].namespace, 'postcss');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'test');
-});
-(0, _helpers.test)('match namespace inside attribute selector (2)', '[postcss|href]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].namespace, 'postcss');
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
-});
-(0, _helpers.test)('match namespace inside attribute selector (3)', '[*|href]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].namespace, '*');
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
-});
-(0, _helpers.test)('match default namespace inside attribute selector', '[|href]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].namespace, true);
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
-});
-(0, _helpers.test)('match default namespace inside attribute selector with spaces', '[ |href ]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].namespace, true);
- t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
-});
-(0, _helpers.test)('namespace with qualified id selector', 'ns|h1#foo', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].namespace, 'ns');
-});
-(0, _helpers.test)('namespace with qualified class selector', 'ns|h1.foo', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].namespace, 'ns');
-});
-(0, _helpers.test)('ns alias for namespace', 'f\\oo|h1.foo', function (t, tree) {
- var tag = tree.nodes[0].nodes[0];
- t.deepEqual(tag.namespace, 'foo');
- t.deepEqual(tag.ns, 'foo');
- tag.ns = "bar";
- t.deepEqual(tag.namespace, 'bar');
- t.deepEqual(tag.ns, 'bar');
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/nesting.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/nesting.js
deleted file mode 100644
index e3c164a..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/nesting.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"use strict";
-
-var _helpers = require("./util/helpers");
-
-(0, _helpers.test)('nesting selector', '&', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '&');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'nesting');
-});
-(0, _helpers.test)('nesting selector followed by a class', '& .class', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '&');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'nesting');
- t.deepEqual(tree.nodes[0].nodes[1].value, ' ');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'combinator');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'class');
- t.deepEqual(tree.nodes[0].nodes[2].type, 'class');
-});
-(0, _helpers.test)('&foo', '&foo', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '&');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'nesting');
- t.deepEqual(tree.nodes[0].nodes[1].value, 'foo');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'tag');
-});
-(0, _helpers.test)('&-foo', '&-foo', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '&');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'nesting');
- t.deepEqual(tree.nodes[0].nodes[1].value, '-foo');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'tag');
-});
-(0, _helpers.test)('&_foo', '&_foo', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '&');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'nesting');
- t.deepEqual(tree.nodes[0].nodes[1].value, '_foo');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'tag');
-});
-(0, _helpers.test)('&|foo', '&|foo', function (t, tree) {
- var element = tree.nodes[0].nodes[0];
- t.deepEqual(element.value, 'foo');
- t.deepEqual(element.type, 'tag');
- t.deepEqual(element.namespace, '&');
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/node.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/node.js
deleted file mode 100644
index 6590bf4..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/node.js
+++ /dev/null
@@ -1,139 +0,0 @@
-"use strict";
-
-var _ava = _interopRequireDefault(require("ava"));
-
-var _ = _interopRequireDefault(require(".."));
-
-var _helpers = require("./util/helpers");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-(0, _ava.default)('node#clone', function (t) {
- (0, _helpers.parse)('[href="test"]', function (selectors) {
- var selector = selectors.first.first;
- var clone = selector.clone();
- delete selector.parent;
- t.deepEqual(clone, selectors.first.first);
- });
-});
-(0, _ava.default)('node#clone of attribute', function (t) {
- (0, _helpers.parse)('[href=test]', function (selectors) {
- var selector = selectors.first.first;
- var clone = selector.clone();
- delete selector.parent;
- t.deepEqual(clone, selectors.first.first);
- });
-});
-(0, _ava.default)('node#replaceWith', function (t) {
- var out = (0, _helpers.parse)('[href="test"]', function (selectors) {
- var attr = selectors.first.first;
-
- var id = _.default.id({
- value: 'test'
- });
-
- var className = _.default.className({
- value: 'test'
- });
-
- attr.replaceWith(id, className);
- });
- t.deepEqual(out, '#test.test');
-});
-(0, _ava.default)('Node#appendToPropertyAndEscape', function (t) {
- var out = (0, _helpers.parse)('.fo\\o', function (selectors) {
- var className = selectors.first.first;
- t.deepEqual(className.raws, {
- value: "fo\\o"
- });
- className.appendToPropertyAndEscape("value", "bar", "ba\\r");
- t.deepEqual(className.raws, {
- value: "fo\\oba\\r"
- });
- });
- t.deepEqual(out, '.fo\\oba\\r');
-});
-(0, _ava.default)('Node#setPropertyAndEscape with existing raws', function (t) {
- var out = (0, _helpers.parse)('.fo\\o', function (selectors) {
- var className = selectors.first.first;
- t.deepEqual(className.raws, {
- value: "fo\\o"
- });
- className.setPropertyAndEscape("value", "bar", "ba\\r");
- t.deepEqual(className.raws, {
- value: "ba\\r"
- });
- });
- t.deepEqual(out, '.ba\\r');
-});
-(0, _ava.default)('Node#setPropertyAndEscape without existing raws', function (t) {
- var out = (0, _helpers.parse)('.foo', function (selectors) {
- var className = selectors.first.first;
- t.deepEqual(className.raws, undefined);
- className.setPropertyAndEscape("value", "bar", "ba\\r");
- t.deepEqual(className.raws, {
- value: "ba\\r"
- });
- });
- t.deepEqual(out, '.ba\\r');
-});
-(0, _ava.default)('Node#setPropertyWithoutEscape with existing raws', function (t) {
- var out = (0, _helpers.parse)('.fo\\o', function (selectors) {
- var className = selectors.first.first;
- t.deepEqual(className.raws, {
- value: "fo\\o"
- });
- className.setPropertyWithoutEscape("value", "w+t+f");
- t.deepEqual(className.raws, {});
- });
- t.deepEqual(out, '.w+t+f');
-});
-(0, _ava.default)('Node#setPropertyWithoutEscape without existing raws', function (t) {
- var out = (0, _helpers.parse)('.foo', function (selectors) {
- var className = selectors.first.first;
- t.deepEqual(className.raws, undefined);
- className.setPropertyWithoutEscape("value", "w+t+f");
- t.deepEqual(className.raws, {});
- t.deepEqual(className.value, "w+t+f");
- });
- t.deepEqual(out, '.w+t+f');
-});
-(0, _ava.default)('Node#isAtPosition', function (t) {
- (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
- t.deepEqual(root.isAtPosition(1, 1), true);
- t.deepEqual(root.isAtPosition(1, 10), true);
- t.deepEqual(root.isAtPosition(2, 23), true);
- t.deepEqual(root.isAtPosition(2, 24), false);
- var selector = root.first;
- t.deepEqual(selector.isAtPosition(1, 1), true);
- t.deepEqual(selector.isAtPosition(1, 10), true);
- t.deepEqual(selector.isAtPosition(1, 11), false);
- var pseudoNot = selector.first;
- t.deepEqual(pseudoNot.isAtPosition(1, 1), true);
- t.deepEqual(pseudoNot.isAtPosition(1, 7), true);
- t.deepEqual(pseudoNot.isAtPosition(1, 10), true);
- t.deepEqual(pseudoNot.isAtPosition(1, 11), false);
- var notSelector = pseudoNot.first;
- t.deepEqual(notSelector.isAtPosition(1, 1), false);
- t.deepEqual(notSelector.isAtPosition(1, 4), false);
- t.deepEqual(notSelector.isAtPosition(1, 5), true);
- t.deepEqual(notSelector.isAtPosition(1, 6), true);
- t.deepEqual(notSelector.isAtPosition(1, 9), true);
- t.deepEqual(notSelector.isAtPosition(1, 10), true);
- t.deepEqual(notSelector.isAtPosition(1, 11), false);
- var notClass = notSelector.first;
- t.deepEqual(notClass.isAtPosition(1, 5), false);
- t.deepEqual(notClass.isAtPosition(1, 6), true);
- t.deepEqual(notClass.isAtPosition(1, 9), true);
- t.deepEqual(notClass.isAtPosition(1, 10), false);
- var secondSel = root.at(1);
- t.deepEqual(secondSel.isAtPosition(1, 11), false);
- t.deepEqual(secondSel.isAtPosition(2, 1), true);
- t.deepEqual(secondSel.isAtPosition(2, 23), true);
- t.deepEqual(secondSel.isAtPosition(2, 24), false);
- var combinator = secondSel.at(1);
- t.deepEqual(combinator.isAtPosition(2, 5), false);
- t.deepEqual(combinator.isAtPosition(2, 6), true);
- t.deepEqual(combinator.isAtPosition(2, 7), false);
- });
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/nonstandard.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/nonstandard.js
deleted file mode 100644
index 599e64d..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/nonstandard.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-
-var _helpers = require("./util/helpers");
-
-(0, _helpers.test)('non-standard selector', '.icon.is-$(network)', function (t, tree) {
- var class1 = tree.nodes[0].nodes[0];
- t.deepEqual(class1.value, 'icon');
- t.deepEqual(class1.type, 'class');
- var class2 = tree.nodes[0].nodes[1];
- t.deepEqual(class2.value, 'is-$(network)');
- t.deepEqual(class2.type, 'class');
-});
-(0, _helpers.test)('at word in selector', 'em@il.com', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'em@il');
- t.deepEqual(tree.nodes[0].nodes[1].value, 'com');
-});
-(0, _helpers.test)('leading combinator', '> *', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '>');
- t.deepEqual(tree.nodes[0].nodes[1].value, '*');
-});
-(0, _helpers.test)('sass escapes', '.#{$classname}', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes.map(function (n) {
- return n.type;
- }), ["class"]);
- t.deepEqual(tree.nodes[0].nodes[0].value, "#{$classname}");
-});
-(0, _helpers.test)('sass escapes (2)', '[lang=#{$locale}]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes.map(function (n) {
- return n.type;
- }), ["attribute"]);
- t.deepEqual(tree.nodes[0].nodes[0].value, "#{$locale}");
-});
-(0, _helpers.test)('placeholder', '%foo', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes.map(function (n) {
- return n.type;
- }), ["tag"]);
- t.deepEqual(tree.nodes[0].nodes[0].value, "%foo");
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/parser.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/parser.js
deleted file mode 100644
index 2154036..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/parser.js
+++ /dev/null
@@ -1,259 +0,0 @@
-"use strict";
-
-var _ava = _interopRequireDefault(require("ava"));
-
-var _index = _interopRequireDefault(require("../index"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-// Node creation
-var nodeTypes = [['attribute', '[href]', {
- attribute: 'href'
-}], ['className', '.classy', {
- value: 'classy'
-}], ['combinator', ' >> ', {
- value: '>>',
- spaces: {
- before: ' ',
- after: ' '
- }
-}], ['comment', '/* comment */', {
- value: '/* comment */'
-}], ['id', '#test', {
- value: 'test'
-}], ['nesting', '&'], ['pseudo', '::before', {
- value: '::before'
-}], ['string', '"wow"', {
- value: '"wow"'
-}], ['tag', 'button', {
- value: 'button'
-}], ['universal', '*']];
-nodeTypes.forEach(function (type) {
- (0, _ava.default)("parser#" + type[0], function (t) {
- var node = _index.default[type[0]](type[2] || {});
-
- t.deepEqual(String(node), type[1]);
- });
-});
-(0, _ava.default)('string constants', function (t) {
- t.truthy(_index.default.TAG);
- t.truthy(_index.default.STRING);
- t.truthy(_index.default.SELECTOR);
- t.truthy(_index.default.ROOT);
- t.truthy(_index.default.PSEUDO);
- t.truthy(_index.default.NESTING);
- t.truthy(_index.default.ID);
- t.truthy(_index.default.COMMENT);
- t.truthy(_index.default.COMBINATOR);
- t.truthy(_index.default.CLASS);
- t.truthy(_index.default.ATTRIBUTE);
- t.truthy(_index.default.UNIVERSAL);
-});
-(0, _ava.default)('construct a whole tree', function (t) {
- var root = _index.default.root();
-
- var selector = _index.default.selector();
-
- selector.append(_index.default.id({
- value: 'tree'
- }));
- root.append(selector);
- t.deepEqual(String(root), '#tree');
-});
-(0, _ava.default)('no operation', function (t) {
- t.notThrows(function () {
- return (0, _index.default)().processSync('h1 h2 h3');
- });
-});
-(0, _ava.default)('empty selector string', function (t) {
- t.notThrows(function () {
- return (0, _index.default)(function (selectors) {
- selectors.walk(function (selector) {
- selector.type = 'tag';
- });
- }).processSync('');
- });
-});
-(0, _ava.default)('async parser', function (t) {
- return (0, _index.default)(function (selectors) {
- return new Promise(function (res) {
- setTimeout(function () {
- selectors.first.nodes[0].value = 'bar';
- res();
- }, 1);
- });
- }).process('foo').then(function (result) {
- t.deepEqual(result, 'bar');
- });
-});
-(0, _ava.default)('parse errors with the async parser', function (t) {
- return (0, _index.default)(function (selectors) {
- return new Promise(function (res) {
- setTimeout(function () {
- selectors.first.nodes[0].value = 'bar';
- res();
- }, 1);
- });
- }).process('a b: c').catch(function (err) {
- return t.truthy(err);
- });
-});
-(0, _ava.default)('parse errors within the async processor', function (t) {
- return (0, _index.default)(function (selectors) {
- return new Promise(function (res, rej) {
- setTimeout(function () {
- rej(selectors.error("async error"));
- }, 1);
- });
- }).process('.foo').catch(function (err) {
- return t.truthy(err);
- });
-});
-(0, _ava.default)('parse errors within the async processor before the promise returns', function (t) {
- return (0, _index.default)(function (selectors) {
- throw selectors.error("async error");
- }).process('.foo').catch(function (err) {
- return t.truthy(err);
- });
-});
-(0, _ava.default)('returning a promise to the sync processor fails', function (t) {
- t.throws(function () {
- return (0, _index.default)(function () {
- return new Promise(function (res) {
- setTimeout(function () {
- res();
- }, 1);
- });
- }).processSync('.foo');
- });
-});
-(0, _ava.default)('Passing a rule works async', function (t) {
- var rule = {
- selector: '.foo'
- };
- return (0, _index.default)(function (root) {
- return new Promise(function (res) {
- setTimeout(function () {
- root.walkClasses(function (node) {
- node.value = "bar";
- });
- res();
- }, 1);
- });
- }).process(rule).then(function (newSel) {
- t.deepEqual(newSel, ".bar");
- t.deepEqual(rule.selector, ".bar");
- });
-});
-(0, _ava.default)('Passing a rule with mutation disabled works async', function (t) {
- var rule = {
- selector: '.foo'
- };
- return (0, _index.default)(function (root) {
- return new Promise(function (res) {
- setTimeout(function () {
- root.walkClasses(function (node) {
- node.value = "bar";
- });
- res();
- }, 1);
- });
- }).process(rule, {
- updateSelector: false
- }).then(function (newSel) {
- t.deepEqual(newSel, ".bar");
- t.deepEqual(rule.selector, ".foo");
- });
-});
-(0, _ava.default)('Passing a rule with mutation works sync', function (t) {
- var rule = {
- selector: '.foo'
- };
- var newSel = (0, _index.default)(function (root) {
- root.walkClasses(function (node) {
- node.value = "bar";
- });
- }).processSync(rule, {
- updateSelector: true
- });
- t.deepEqual(newSel, ".bar");
- t.deepEqual(rule.selector, ".bar");
-});
-(0, _ava.default)('Transform a selector synchronously', function (t) {
- var rule = {
- selector: '.foo'
- };
- var count = (0, _index.default)(function (root) {
- var classCount = 0;
- root.walkClasses(function (node) {
- classCount++;
- node.value = "bar";
- });
- return classCount;
- }).transformSync(rule, {
- updateSelector: true
- });
- t.deepEqual(count, 1);
- t.deepEqual(rule.selector, ".bar");
-});
-(0, _ava.default)('Transform a selector asynchronously', function (t) {
- var rule = {
- selector: '.foo'
- };
- return (0, _index.default)(function (root) {
- return new Promise(function (res) {
- setTimeout(function () {
- var classCount = 0;
- root.walkClasses(function (node) {
- classCount++;
- node.value = "bar";
- });
- res(classCount);
- }, 1);
- });
- }).transform(rule, {
- updateSelector: true
- }).then(function (count) {
- t.deepEqual(count, 1);
- t.deepEqual(rule.selector, ".bar");
- });
-});
-(0, _ava.default)('get AST of a selector synchronously', function (t) {
- var rule = {
- selector: '.foo'
- };
- var ast = (0, _index.default)(function (root) {
- var classCount = 0;
- root.walkClasses(function (node) {
- classCount++;
- node.value = "bar";
- });
- return classCount;
- }).astSync(rule, {
- updateSelector: true
- });
- t.deepEqual(ast.nodes[0].nodes[0].value, "bar");
- t.deepEqual(rule.selector, ".bar");
-});
-(0, _ava.default)('get AST a selector asynchronously', function (t) {
- var rule = {
- selector: '.foo'
- };
- return (0, _index.default)(function (root) {
- return new Promise(function (res) {
- setTimeout(function () {
- var classCount = 0;
- root.walkClasses(function (node) {
- classCount++;
- node.value = "bar";
- });
- res(classCount);
- }, 1);
- });
- }).ast(rule, {
- updateSelector: true
- }).then(function (ast) {
- t.deepEqual(ast.nodes[0].nodes[0].value, "bar");
- t.deepEqual(rule.selector, ".bar");
- });
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/postcss.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/postcss.js
deleted file mode 100644
index d7175f7..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/postcss.js
+++ /dev/null
@@ -1,46 +0,0 @@
-"use strict";
-
-var _ava = _interopRequireDefault(require("ava"));
-
-var _postcss = _interopRequireDefault(require("postcss"));
-
-var _helpers = require("./util/helpers");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var cse = 'CssSyntaxError';
-
-function showCode(t, selector) {
- var rule = _postcss.default.parse(selector).first;
-
- try {
- (0, _helpers.parse)(rule);
- } catch (e) {
- if (e.name !== cse) {
- return;
- } // Removes ANSI codes from snapshot tests as it makes them illegible.
- // The formatting of this error is otherwise identical to e.toString()
-
-
- t.snapshot(cse + ": " + e.message + "\n\n" + e.showSourceCode(false) + "\n");
- }
-}
-
-(0, _ava.default)('missing open square bracket', showCode, 'a b c] {}');
-(0, _ava.default)('missing open parenthesis', showCode, 'a b c) {}');
-(0, _ava.default)('missing pseudo class or pseudo element', showCode, 'a b c: {}');
-(0, _ava.default)('space in between colon and word (incorrect pseudo)', showCode, 'a b: c {}');
-(0, _ava.default)('string after colon (incorrect pseudo)', showCode, 'a b:"wow" {}'); // attribute selectors
-
-(0, _ava.default)('bad string attribute', showCode, '["hello"] {}');
-(0, _ava.default)('bad string attribute with value', showCode, '["foo"=bar] {}');
-(0, _ava.default)('bad parentheses', showCode, '[foo=(bar)] {}');
-(0, _ava.default)('bad lonely asterisk', showCode, '[*] {}');
-(0, _ava.default)('bad lonely pipe', showCode, '[|] {}');
-(0, _ava.default)('bad lonely caret', showCode, '[^] {}');
-(0, _ava.default)('bad lonely dollar', showCode, '[$] {}');
-(0, _ava.default)('bad lonely tilde', showCode, '[~] {}');
-(0, _ava.default)('bad lonely equals', showCode, '[=] {}');
-(0, _ava.default)('bad lonely operator', showCode, '[*=] {}');
-(0, _ava.default)('bad lonely operator (2)', showCode, '[|=] {}');
-(0, _ava.default)('bad doubled operator', showCode, '[href=foo=bar] {}'); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/pseudos.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/pseudos.js
deleted file mode 100644
index d316a0c..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/pseudos.js
+++ /dev/null
@@ -1,98 +0,0 @@
-"use strict";
-
-var _helpers = require("./util/helpers");
-
-(0, _helpers.test)('pseudo element (single colon)', 'h1:after', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'pseudo');
- t.deepEqual(tree.nodes[0].nodes[1].value, ':after');
-});
-(0, _helpers.test)('pseudo element (double colon)', 'h1::after', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'pseudo');
- t.deepEqual(tree.nodes[0].nodes[1].value, '::after');
-});
-(0, _helpers.test)('multiple pseudo elements', '*:target::before, a:after', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '*');
- t.deepEqual(tree.nodes[0].nodes[1].value, ':target');
- t.deepEqual(tree.nodes[0].nodes[2].value, '::before');
- t.deepEqual(tree.nodes[1].nodes[1].value, ':after');
-});
-(0, _helpers.test)('negation pseudo element', 'h1:not(.heading)', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].value, ':not');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].value, 'heading');
-});
-(0, _helpers.test)('negation pseudo element (2)', 'h1:not(.heading, .title, .content)', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].value, ':not');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].value, 'heading');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[1].nodes[0].value, 'title');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[2].nodes[0].value, 'content');
-});
-(0, _helpers.test)('negation pseudo element (3)', 'h1:not(.heading > .title) > h1', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].value, 'heading');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[1].value, '>');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[2].value, 'title');
- t.deepEqual(tree.nodes[0].nodes[2].value, '>');
- t.deepEqual(tree.nodes[0].nodes[3].value, 'h1');
-});
-(0, _helpers.test)('negation pseudo element (4)', 'h1:not(h2:not(h3))', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[1].nodes[0].nodes[0].value, 'h3');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[1].nodes[0].nodes[0].parent.type, 'selector');
-});
-(0, _helpers.test)('pseudo class in the middle of a selector', 'a:link.external', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
- t.deepEqual(tree.nodes[0].nodes[0].value, 'a');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'pseudo');
- t.deepEqual(tree.nodes[0].nodes[1].value, ':link');
- t.deepEqual(tree.nodes[0].nodes[2].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[2].value, 'external');
-});
-(0, _helpers.test)('extra whitespace inside parentheses', 'a:not( h2 )', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].value, 'h2');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].spaces.after, ' ');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].spaces.before, ' ');
-});
-(0, _helpers.test)('escaped numbers in class name with pseudo', 'a:before.\\31\\ 0', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[2].type, 'class');
- t.deepEqual(tree.nodes[0].nodes[2].value, '1 0');
- t.deepEqual(tree.nodes[0].nodes[2].raws.value, '\\31\\ 0');
-});
-(0, _helpers.test)('nested pseudo', '.btn-group>.btn:last-child:not(:first-child)', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[4].value, ':not');
-});
-(0, _helpers.test)('extraneous non-combinating whitespace', ' h1:after , h2:after ', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].spaces.before, ' ');
- t.deepEqual(tree.nodes[0].nodes[1].value, ':after');
- t.deepEqual(tree.nodes[0].nodes[1].spaces.after, ' ');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.before, ' ');
- t.deepEqual(tree.nodes[1].nodes[1].value, ':after');
- t.deepEqual(tree.nodes[1].nodes[1].spaces.after, ' ');
-});
-(0, _helpers.test)('negation pseudo element with quotes', 'h1:not(".heading")', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].value, ':not');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].value, '".heading"');
-});
-(0, _helpers.test)('negation pseudo element with single quotes', "h1:not('.heading')", function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].value, ':not');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].value, "'.heading'");
-});
-(0, _helpers.test)('Issue #116', "svg:not(:root)", function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].value, ':not');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].value, ':root');
-});
-(0, _helpers.test)('alone pseudo class', ':root', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].type, 'pseudo');
- t.deepEqual(tree.nodes[0].nodes[0].value, ':root');
-});
-(0, _helpers.test)('non standard pseudo (@custom-selector)', ":--foobar, a", function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, ':--foobar');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'pseudo');
- t.deepEqual(tree.nodes[1].nodes[0].value, 'a');
- t.deepEqual(tree.nodes[1].nodes[0].type, 'tag');
-});
-(0, _helpers.test)('non standard pseudo (@custom-selector) (1)', "a, :--foobar", function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'a');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
- t.deepEqual(tree.nodes[1].nodes[0].value, ':--foobar');
- t.deepEqual(tree.nodes[1].nodes[0].type, 'pseudo');
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/sourceIndex.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/sourceIndex.js
deleted file mode 100644
index 766d59f..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/sourceIndex.js
+++ /dev/null
@@ -1,229 +0,0 @@
-"use strict";
-
-var _helpers = require("./util/helpers");
-
-(0, _helpers.test)('universal selector', '*', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].source.start.column, 1);
- t.deepEqual(tree.nodes[0].nodes[0].source.end.column, 1);
- t.deepEqual(tree.nodes[0].nodes[0].sourceIndex, 0);
-});
-(0, _helpers.test)('lobotomized owl selector', ' * + * ', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].source.start.column, 2);
- t.deepEqual(tree.nodes[0].nodes[0].source.end.column, 2);
- t.deepEqual(tree.nodes[0].nodes[0].sourceIndex, 1);
- t.deepEqual(tree.nodes[0].nodes[1].source.start.column, 4);
- t.deepEqual(tree.nodes[0].nodes[1].source.end.column, 4);
- t.deepEqual(tree.nodes[0].nodes[1].sourceIndex, 3);
- t.deepEqual(tree.nodes[0].nodes[2].source.start.column, 6);
- t.deepEqual(tree.nodes[0].nodes[2].source.end.column, 6);
- t.deepEqual(tree.nodes[0].nodes[2].sourceIndex, 5);
-});
-(0, _helpers.test)('comment', '/**\n * Hello!\n */', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].source.start.column, 1);
- t.deepEqual(tree.nodes[0].nodes[0].source.end.column, 3);
- t.deepEqual(tree.nodes[0].nodes[0].sourceIndex, 0);
-});
-(0, _helpers.test)('comment & universal selectors', '*/*test*/*', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].source.start.column, 1);
- t.deepEqual(tree.nodes[0].nodes[0].source.end.column, 1);
- t.deepEqual(tree.nodes[0].nodes[0].sourceIndex, 0);
- t.deepEqual(tree.nodes[0].nodes[1].source.start.column, 2);
- t.deepEqual(tree.nodes[0].nodes[1].source.end.column, 9);
- t.deepEqual(tree.nodes[0].nodes[1].sourceIndex, 1);
- t.deepEqual(tree.nodes[0].nodes[2].source.start.column, 10);
- t.deepEqual(tree.nodes[0].nodes[2].source.end.column, 10);
- t.deepEqual(tree.nodes[0].nodes[2].sourceIndex, 9);
-});
-(0, _helpers.test)('tag selector', 'h1', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].source.start.column, 1);
- t.deepEqual(tree.nodes[0].nodes[0].source.end.column, 2);
- t.deepEqual(tree.nodes[0].nodes[0].sourceIndex, 0);
-});
-(0, _helpers.test)('id selector', '#id', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].source.start.column, 1);
- t.deepEqual(tree.nodes[0].nodes[0].source.end.column, 3);
- t.deepEqual(tree.nodes[0].nodes[0].sourceIndex, 0);
-});
-(0, _helpers.test)('tag selector followed by id selector', 'h1, #id', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].source.start.column, 1);
- t.deepEqual(tree.nodes[0].nodes[0].source.end.column, 2);
- t.deepEqual(tree.nodes[0].nodes[0].sourceIndex, 0);
- t.deepEqual(tree.nodes[1].nodes[0].source.start.column, 5);
- t.deepEqual(tree.nodes[1].nodes[0].source.end.column, 7);
- t.deepEqual(tree.nodes[1].nodes[0].sourceIndex, 4);
-});
-(0, _helpers.test)('multiple id selectors', '#one#two', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].source.start.column, 1);
- t.deepEqual(tree.nodes[0].nodes[0].source.end.column, 4);
- t.deepEqual(tree.nodes[0].nodes[0].sourceIndex, 0);
- t.deepEqual(tree.nodes[0].nodes[1].source.start.column, 5);
- t.deepEqual(tree.nodes[0].nodes[1].source.end.column, 8);
- t.deepEqual(tree.nodes[0].nodes[1].sourceIndex, 4);
-});
-(0, _helpers.test)('multiple id selectors (2)', '#one#two#three#four', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[2].source.start.column, 9);
- t.deepEqual(tree.nodes[0].nodes[2].source.end.column, 14);
- t.deepEqual(tree.nodes[0].nodes[2].sourceIndex, 8);
- t.deepEqual(tree.nodes[0].nodes[3].source.start.column, 15);
- t.deepEqual(tree.nodes[0].nodes[3].source.end.column, 19);
- t.deepEqual(tree.nodes[0].nodes[3].sourceIndex, 14);
-});
-(0, _helpers.test)('multiple id selectors (3)', '#one#two,#three#four', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].source.start.column, 5);
- t.deepEqual(tree.nodes[0].nodes[1].source.end.column, 8);
- t.deepEqual(tree.nodes[0].nodes[1].sourceIndex, 4);
- t.deepEqual(tree.nodes[1].nodes[1].source.start.column, 16);
- t.deepEqual(tree.nodes[1].nodes[1].source.end.column, 20);
- t.deepEqual(tree.nodes[1].nodes[1].sourceIndex, 15);
-});
-(0, _helpers.test)('multiple class selectors', '.one.two,.three.four', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].source.start.column, 5);
- t.deepEqual(tree.nodes[0].nodes[1].source.end.column, 8);
- t.deepEqual(tree.nodes[0].nodes[1].sourceIndex, 4);
- t.deepEqual(tree.nodes[1].nodes[1].source.start.column, 16);
- t.deepEqual(tree.nodes[1].nodes[1].source.end.column, 20);
- t.deepEqual(tree.nodes[1].nodes[1].sourceIndex, 15);
-});
-(0, _helpers.test)('attribute selector', '[name="james"]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].source.start.line, 1);
- t.deepEqual(tree.nodes[0].nodes[0].source.start.column, 1);
- t.deepEqual(tree.nodes[0].nodes[0].source.end.column, 14);
- t.deepEqual(tree.nodes[0].nodes[0].sourceIndex, 0);
-});
-(0, _helpers.test)('multiple attribute selectors', '[name="james"][name="ed"],[name="snakeman"][name="a"]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].source.start.line, 1);
- t.deepEqual(tree.nodes[0].nodes[0].source.start.column, 1);
- t.deepEqual(tree.nodes[0].nodes[0].source.end.line, 1);
- t.deepEqual(tree.nodes[0].nodes[0].source.end.column, 14);
- t.deepEqual(tree.nodes[0].nodes[0].sourceIndex, 0);
- t.deepEqual(tree.nodes[0].nodes[1].source.start.line, 1);
- t.deepEqual(tree.nodes[0].nodes[1].source.start.column, 15);
- t.deepEqual(tree.nodes[0].nodes[1].source.end.line, 1);
- t.deepEqual(tree.nodes[0].nodes[1].source.end.column, 25);
- t.deepEqual(tree.nodes[0].nodes[1].sourceIndex, 14);
- t.deepEqual(tree.nodes[1].nodes[0].source.start.line, 1);
- t.deepEqual(tree.nodes[1].nodes[0].source.start.column, 27);
- t.deepEqual(tree.nodes[1].nodes[0].source.end.line, 1);
- t.deepEqual(tree.nodes[1].nodes[0].source.end.column, 43);
- t.deepEqual(tree.nodes[1].nodes[0].sourceIndex, 26);
- t.deepEqual(tree.nodes[1].nodes[1].source.start.line, 1);
- t.deepEqual(tree.nodes[1].nodes[1].source.start.column, 44);
- t.deepEqual(tree.nodes[1].nodes[1].source.end.line, 1);
- t.deepEqual(tree.nodes[1].nodes[1].source.end.column, 53);
- t.deepEqual(tree.nodes[1].nodes[1].sourceIndex, 43);
-});
-(0, _helpers.test)('pseudo-class', 'h1:first-child', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].source.start.line, 1);
- t.deepEqual(tree.nodes[0].nodes[1].source.start.column, 3);
- t.deepEqual(tree.nodes[0].nodes[1].source.end.column, 14);
- t.deepEqual(tree.nodes[0].nodes[1].sourceIndex, 2);
-});
-(0, _helpers.test)('pseudo-class with argument', 'h1:not(.strudel, .food)', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].source.start.line, 1);
- t.deepEqual(tree.nodes[0].nodes[1].source.start.column, 3);
- t.deepEqual(tree.nodes[0].nodes[1].source.end.column, 23);
- t.deepEqual(tree.nodes[0].nodes[1].sourceIndex, 2);
-});
-(0, _helpers.test)('pseudo-element', 'h1::before', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].source.start.line, 1);
- t.deepEqual(tree.nodes[0].nodes[1].source.start.column, 3);
- t.deepEqual(tree.nodes[0].nodes[1].source.end.column, 10);
- t.deepEqual(tree.nodes[0].nodes[1].sourceIndex, 2);
-});
-(0, _helpers.test)('multiple pseudos', 'h1:not(.food)::before, a:first-child', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].source.start.line, 1);
- t.deepEqual(tree.nodes[0].nodes[1].source.start.column, 3);
- t.deepEqual(tree.nodes[0].nodes[1].source.end.column, 13);
- t.deepEqual(tree.nodes[0].nodes[1].sourceIndex, 2);
- t.deepEqual(tree.nodes[0].nodes[2].source.start.line, 1);
- t.deepEqual(tree.nodes[0].nodes[2].source.start.column, 14);
- t.deepEqual(tree.nodes[0].nodes[2].source.end.column, 21);
- t.deepEqual(tree.nodes[0].nodes[2].sourceIndex, 13);
- t.deepEqual(tree.nodes[1].nodes[1].source.start.line, 1);
- t.deepEqual(tree.nodes[1].nodes[1].source.start.column, 25);
- t.deepEqual(tree.nodes[1].nodes[1].source.end.column, 36);
- t.deepEqual(tree.nodes[1].nodes[1].sourceIndex, 24);
-});
-(0, _helpers.test)('combinators', 'div > h1 span', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].source.start.line, 1, "> start line");
- t.deepEqual(tree.nodes[0].nodes[1].source.start.column, 5, "> start column");
- t.deepEqual(tree.nodes[0].nodes[1].source.end.column, 5, "> end column");
- t.deepEqual(tree.nodes[0].nodes[1].sourceIndex, 4, "> sourceIndex");
- t.deepEqual(tree.nodes[0].nodes[3].source.start.line, 1, "' ' start line");
- t.deepEqual(tree.nodes[0].nodes[3].source.start.column, 9, "' ' start column");
- t.deepEqual(tree.nodes[0].nodes[3].source.end.column, 9, "' ' end column");
- t.deepEqual(tree.nodes[0].nodes[3].sourceIndex, 8, "' ' sourceIndex");
-});
-(0, _helpers.test)('combinators surrounded by superfluous spaces', 'div > h1 ~ span a', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].source.start.line, 1, "> start line");
- t.deepEqual(tree.nodes[0].nodes[1].source.start.column, 7, "> start column");
- t.deepEqual(tree.nodes[0].nodes[1].source.end.column, 7, "> end column");
- t.deepEqual(tree.nodes[0].nodes[1].sourceIndex, 6, "> sourceIndex");
- t.deepEqual(tree.nodes[0].nodes[3].source.start.line, 1, "~ start line");
- t.deepEqual(tree.nodes[0].nodes[3].source.start.column, 13, "~ start column");
- t.deepEqual(tree.nodes[0].nodes[3].source.end.column, 13, "~ end column");
- t.deepEqual(tree.nodes[0].nodes[3].sourceIndex, 12, "~ sourceIndex");
- t.deepEqual(tree.nodes[0].nodes[5].source.start.line, 1, "' ' start line");
- t.deepEqual(tree.nodes[0].nodes[5].source.start.column, 21, "' ' start column");
- t.deepEqual(tree.nodes[0].nodes[5].source.end.column, 23, "' ' end column");
- t.deepEqual(tree.nodes[0].nodes[5].sourceIndex, 20, "' ' sourceIndex");
-});
-(0, _helpers.test)('multiple id selectors on different lines', '#one,\n#two', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].source.start.line, 1);
- t.deepEqual(tree.nodes[0].nodes[0].source.start.column, 1);
- t.deepEqual(tree.nodes[0].nodes[0].source.end.column, 4);
- t.deepEqual(tree.nodes[0].nodes[0].sourceIndex, 0);
- t.deepEqual(tree.nodes[1].nodes[0].source.start.line, 2);
- t.deepEqual(tree.nodes[1].nodes[0].source.start.column, 1);
- t.deepEqual(tree.nodes[1].nodes[0].source.end.column, 4);
- t.deepEqual(tree.nodes[1].nodes[0].sourceIndex, 6);
-});
-(0, _helpers.test)('multiple id selectors on different CRLF lines', '#one,\r\n#two,\r\n#three', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].source.start.line, 1, '#one start line');
- t.deepEqual(tree.nodes[0].nodes[0].source.start.column, 1, '#one start column');
- t.deepEqual(tree.nodes[0].nodes[0].source.end.column, 4, '#one end column');
- t.deepEqual(tree.nodes[0].nodes[0].sourceIndex, 0, '#one sourceIndex');
- t.deepEqual(tree.nodes[1].nodes[0].source.start.line, 2, '#two start line');
- t.deepEqual(tree.nodes[1].nodes[0].source.start.column, 1, '#two start column');
- t.deepEqual(tree.nodes[1].nodes[0].source.end.column, 4, '#two end column');
- t.deepEqual(tree.nodes[1].nodes[0].sourceIndex, 7, '#two sourceIndex');
- t.deepEqual(tree.nodes[2].nodes[0].source.start.line, 3, '#three start line');
- t.deepEqual(tree.nodes[2].nodes[0].source.start.column, 1, '#three start column');
- t.deepEqual(tree.nodes[2].nodes[0].source.end.column, 6, '#three end column');
- t.deepEqual(tree.nodes[2].nodes[0].sourceIndex, 14, '#three sourceIndex');
-});
-(0, _helpers.test)('id, tag, pseudo, and class selectors on different lines with indentation', '\t#one,\n\th1:after,\n\t\t.two', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].source.start.line, 1, '#one start line');
- t.deepEqual(tree.nodes[0].nodes[0].source.start.column, 2, '#one start column');
- t.deepEqual(tree.nodes[0].nodes[0].source.end.column, 5, '#one end column');
- t.deepEqual(tree.nodes[0].nodes[0].sourceIndex, 1, '#one sourceIndex');
- t.deepEqual(tree.nodes[1].nodes[0].source.start.line, 2, 'h1 start line');
- t.deepEqual(tree.nodes[1].nodes[0].source.start.column, 2, 'h1 start column');
- t.deepEqual(tree.nodes[1].nodes[0].source.end.column, 3, 'h1 end column');
- t.deepEqual(tree.nodes[1].nodes[0].sourceIndex, 8, 'h1 sourceIndex');
- t.deepEqual(tree.nodes[1].nodes[1].source.start.line, 2, ':after start line');
- t.deepEqual(tree.nodes[1].nodes[1].source.start.column, 4, ':after start column');
- t.deepEqual(tree.nodes[1].nodes[1].source.end.column, 9, ':after end column');
- t.deepEqual(tree.nodes[1].nodes[1].sourceIndex, 10, ':after sourceIndex');
- t.deepEqual(tree.nodes[2].nodes[0].source.start.line, 3, '.two start line');
- t.deepEqual(tree.nodes[2].nodes[0].source.start.column, 3, '.two start column');
- t.deepEqual(tree.nodes[2].nodes[0].source.end.column, 6, '.two end column');
- t.deepEqual(tree.nodes[2].nodes[0].sourceIndex, 20, '.two sourceIndex');
-});
-(0, _helpers.test)('pseudo with arguments spanning multiple lines', 'h1:not(\n\t.one,\n\t.two\n)', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[1].source.start.line, 1, ':not start line');
- t.deepEqual(tree.nodes[0].nodes[1].source.start.column, 3, ':not start column');
- t.deepEqual(tree.nodes[0].nodes[1].source.end.line, 4, ':not end line');
- t.deepEqual(tree.nodes[0].nodes[1].source.end.column, 1, ':not end column');
- t.deepEqual(tree.nodes[0].nodes[1].sourceIndex, 2, ':not sourceIndex');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].source.start.line, 2, '.one start line');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].source.start.column, 2, '.one start column');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].source.end.line, 2, '.one end line');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].source.end.column, 5, '.one end column');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].sourceIndex, 9, '.one sourceIndex');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[1].nodes[0].source.start.line, 3, '.two start line');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[1].nodes[0].source.start.column, 2, '.two start column');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[1].nodes[0].source.end.line, 3, '.two end line');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[1].nodes[0].source.end.column, 5, '.two end column');
- t.deepEqual(tree.nodes[0].nodes[1].nodes[1].nodes[0].sourceIndex, 16, '.two sourceIndex');
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/stripComments.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/stripComments.js
deleted file mode 100644
index 2d6eb9a..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/stripComments.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-
-var _ava = _interopRequireDefault(require("ava"));
-
-var _stripComments = _interopRequireDefault(require("../../src/util/stripComments"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-(0, _ava.default)("stripComments()", function (t) {
- t.deepEqual((0, _stripComments.default)("aaa/**/bbb"), "aaabbb");
- t.deepEqual((0, _stripComments.default)("aaa/*bbb"), "aaa");
- t.deepEqual((0, _stripComments.default)("aaa/*xxx*/bbb"), "aaabbb");
- t.deepEqual((0, _stripComments.default)("aaa/*/xxx/*/bbb"), "aaabbb");
- t.deepEqual((0, _stripComments.default)("aaa/*x*/bbb/**/"), "aaabbb");
- t.deepEqual((0, _stripComments.default)("/**/aaa/*x*/bbb/**/"), "aaabbb");
- t.deepEqual((0, _stripComments.default)("/**/"), "");
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/tags.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/tags.js
deleted file mode 100644
index b6f5aa4..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/tags.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-
-var _helpers = require("./util/helpers");
-
-(0, _helpers.test)('tag selector', 'h1', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'h1');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
-});
-(0, _helpers.test)('multiple tag selectors', 'h1, h2', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'h1');
- t.deepEqual(tree.nodes[1].nodes[0].value, 'h2');
-});
-(0, _helpers.test)('extraneous non-combinating whitespace', ' h1 , h2 ', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'h1');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.before, ' ');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.after, ' ');
- t.deepEqual(tree.nodes[1].nodes[0].value, 'h2');
- t.deepEqual(tree.nodes[1].nodes[0].spaces.before, ' ');
- t.deepEqual(tree.nodes[1].nodes[0].spaces.after, ' ');
-});
-(0, _helpers.test)('tag with trailing comma', 'h1,', function (t, tree) {
- t.deepEqual(tree.trailingComma, true);
-});
-(0, _helpers.test)('tag with trailing slash', 'h1\\', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'h1\\');
-});
-(0, _helpers.test)('tag with attribute', 'label[for="email"]', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, 'label');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
- t.deepEqual(tree.nodes[0].nodes[1].value, 'email');
- t.deepEqual(tree.nodes[0].nodes[1].attribute, 'for');
- t.deepEqual(tree.nodes[0].nodes[1].operator, '=');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'attribute');
- t.deepEqual(tree.nodes[0].nodes[1].quoteMark, '"');
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/universal.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/universal.js
deleted file mode 100644
index 019c003..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/universal.js
+++ /dev/null
@@ -1,32 +0,0 @@
-"use strict";
-
-var _helpers = require("./util/helpers");
-
-(0, _helpers.test)('universal selector', '*', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '*');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'universal');
-});
-(0, _helpers.test)('lobotomized owl', '* + *', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].type, 'universal');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'combinator');
- t.deepEqual(tree.nodes[0].nodes[2].type, 'universal');
-});
-(0, _helpers.test)('extraneous non-combinating whitespace', ' * , * ', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '*');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.before, ' ');
- t.deepEqual(tree.nodes[0].nodes[0].spaces.after, ' ');
- t.deepEqual(tree.nodes[1].nodes[0].value, '*');
- t.deepEqual(tree.nodes[1].nodes[0].spaces.before, ' ');
- t.deepEqual(tree.nodes[1].nodes[0].spaces.after, ' ');
-});
-(0, _helpers.test)('qualified universal selector', '*[href] *:not(*.green)', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '*');
- t.deepEqual(tree.nodes[0].nodes[3].value, '*');
- t.deepEqual(tree.nodes[0].nodes[4].nodes[0].nodes[0].value, '*');
-});
-(0, _helpers.test)('universal selector with pseudo', '*::--webkit-media-controls-play-button', function (t, tree) {
- t.deepEqual(tree.nodes[0].nodes[0].value, '*');
- t.deepEqual(tree.nodes[0].nodes[0].type, 'universal');
- t.deepEqual(tree.nodes[0].nodes[1].value, '::--webkit-media-controls-play-button');
- t.deepEqual(tree.nodes[0].nodes[1].type, 'pseudo');
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/util/helpers.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/util/helpers.js
deleted file mode 100644
index 3bf9c0d..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/__tests__/util/helpers.js
+++ /dev/null
@@ -1,90 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.test = test;
-exports.nodeVersionAtLeast = nodeVersionAtLeast;
-exports.nodeVersionBefore = nodeVersionBefore;
-exports.throws = exports.parse = void 0;
-
-var _process = _interopRequireDefault(require("process"));
-
-var _util = _interopRequireDefault(require("util"));
-
-var _ava = _interopRequireDefault(require("ava"));
-
-var _semver = _interopRequireDefault(require("semver"));
-
-var _index = _interopRequireDefault(require("../../index"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var parse = function parse(input, transform) {
- return (0, _index.default)(transform).processSync(input);
-};
-
-exports.parse = parse;
-
-function test(spec, input, callback, only, disabled, serial) {
- var _this = this;
-
- if (only === void 0) {
- only = false;
- }
-
- if (disabled === void 0) {
- disabled = false;
- }
-
- if (serial === void 0) {
- serial = false;
- }
-
- var tester = only ? _ava.default.only : _ava.default;
- tester = disabled ? tester.skip : tester;
- tester = serial ? tester.serial : tester;
-
- if (callback) {
- tester(spec + " (tree)", function (t) {
- var tree = (0, _index.default)().astSync(input);
-
- var debug = _util.default.inspect(tree, false, null);
-
- return callback.call(_this, t, tree, debug);
- });
- }
-
- tester(spec + " (toString)", function (t) {
- var result = (0, _index.default)().processSync(input);
- t.deepEqual(result, input);
- });
-}
-
-test.only = function (spec, input, callback) {
- return test(spec, input, callback, true);
-};
-
-test.skip = function (spec, input, callback) {
- return test(spec, input, callback, false, true);
-};
-
-test.serial = function (spec, input, callback) {
- return test(spec, input, callback, false, false, true);
-};
-
-var throws = function throws(spec, input, validator) {
- (0, _ava.default)(spec + " (throws)", function (t) {
- t.throws(function () {
- return (0, _index.default)().processSync(input);
- }, validator || Error);
- });
-};
-
-exports.throws = throws;
-
-function nodeVersionAtLeast(version) {
- return _semver.default.gte(_process.default.versions.node, version);
-}
-
-function nodeVersionBefore(version) {
- return _semver.default.lt(_process.default.versions.node, version);
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/index.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/index.js
deleted file mode 100644
index ac33ec0..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _processor = _interopRequireDefault(require("./processor"));
-
-var selectors = _interopRequireWildcard(require("./selectors"));
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var parser = function parser(processor) {
- return new _processor.default(processor);
-};
-
-Object.assign(parser, selectors);
-delete parser.__esModule;
-var _default = parser;
-exports.default = _default;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/parser.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/parser.js
deleted file mode 100644
index 927d18a..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/parser.js
+++ /dev/null
@@ -1,1223 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _indexesOf = _interopRequireDefault(require("indexes-of"));
-
-var _uniq = _interopRequireDefault(require("uniq"));
-
-var _root = _interopRequireDefault(require("./selectors/root"));
-
-var _selector = _interopRequireDefault(require("./selectors/selector"));
-
-var _className = _interopRequireDefault(require("./selectors/className"));
-
-var _comment = _interopRequireDefault(require("./selectors/comment"));
-
-var _id = _interopRequireDefault(require("./selectors/id"));
-
-var _tag = _interopRequireDefault(require("./selectors/tag"));
-
-var _string = _interopRequireDefault(require("./selectors/string"));
-
-var _pseudo = _interopRequireDefault(require("./selectors/pseudo"));
-
-var _attribute = _interopRequireWildcard(require("./selectors/attribute"));
-
-var _universal = _interopRequireDefault(require("./selectors/universal"));
-
-var _combinator = _interopRequireDefault(require("./selectors/combinator"));
-
-var _nesting = _interopRequireDefault(require("./selectors/nesting"));
-
-var _sortAscending = _interopRequireDefault(require("./sortAscending"));
-
-var _tokenize = _interopRequireWildcard(require("./tokenize"));
-
-var tokens = _interopRequireWildcard(require("./tokenTypes"));
-
-var types = _interopRequireWildcard(require("./selectors/types"));
-
-var _util = require("./util");
-
-var _WHITESPACE_TOKENS, _Object$assign;
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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); } }
-
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
-
-var WHITESPACE_TOKENS = (_WHITESPACE_TOKENS = {}, _WHITESPACE_TOKENS[tokens.space] = true, _WHITESPACE_TOKENS[tokens.cr] = true, _WHITESPACE_TOKENS[tokens.feed] = true, _WHITESPACE_TOKENS[tokens.newline] = true, _WHITESPACE_TOKENS[tokens.tab] = true, _WHITESPACE_TOKENS);
-var WHITESPACE_EQUIV_TOKENS = Object.assign({}, WHITESPACE_TOKENS, (_Object$assign = {}, _Object$assign[tokens.comment] = true, _Object$assign));
-
-function tokenStart(token) {
- return {
- line: token[_tokenize.FIELDS.START_LINE],
- column: token[_tokenize.FIELDS.START_COL]
- };
-}
-
-function tokenEnd(token) {
- return {
- line: token[_tokenize.FIELDS.END_LINE],
- column: token[_tokenize.FIELDS.END_COL]
- };
-}
-
-function getSource(startLine, startColumn, endLine, endColumn) {
- return {
- start: {
- line: startLine,
- column: startColumn
- },
- end: {
- line: endLine,
- column: endColumn
- }
- };
-}
-
-function getTokenSource(token) {
- return getSource(token[_tokenize.FIELDS.START_LINE], token[_tokenize.FIELDS.START_COL], token[_tokenize.FIELDS.END_LINE], token[_tokenize.FIELDS.END_COL]);
-}
-
-function getTokenSourceSpan(startToken, endToken) {
- if (!startToken) {
- return undefined;
- }
-
- return getSource(startToken[_tokenize.FIELDS.START_LINE], startToken[_tokenize.FIELDS.START_COL], endToken[_tokenize.FIELDS.END_LINE], endToken[_tokenize.FIELDS.END_COL]);
-}
-
-function unescapeProp(node, prop) {
- var value = node[prop];
-
- if (typeof value !== "string") {
- return;
- }
-
- if (value.indexOf("\\") !== -1) {
- (0, _util.ensureObject)(node, 'raws');
- node[prop] = (0, _util.unesc)(value);
-
- if (node.raws[prop] === undefined) {
- node.raws[prop] = value;
- }
- }
-
- return node;
-}
-
-var Parser =
-/*#__PURE__*/
-function () {
- function Parser(rule, options) {
- if (options === void 0) {
- options = {};
- }
-
- this.rule = rule;
- this.options = Object.assign({
- lossy: false,
- safe: false
- }, options);
- this.position = 0;
- this.css = typeof this.rule === 'string' ? this.rule : this.rule.selector;
- this.tokens = (0, _tokenize.default)({
- css: this.css,
- error: this._errorGenerator(),
- safe: this.options.safe
- });
- var rootSource = getTokenSourceSpan(this.tokens[0], this.tokens[this.tokens.length - 1]);
- this.root = new _root.default({
- source: rootSource
- });
- this.root.errorGenerator = this._errorGenerator();
- var selector = new _selector.default({
- source: {
- start: {
- line: 1,
- column: 1
- }
- }
- });
- this.root.append(selector);
- this.current = selector;
- this.loop();
- }
-
- var _proto = Parser.prototype;
-
- _proto._errorGenerator = function _errorGenerator() {
- var _this = this;
-
- return function (message, errorOptions) {
- if (typeof _this.rule === 'string') {
- return new Error(message);
- }
-
- return _this.rule.error(message, errorOptions);
- };
- };
-
- _proto.attribute = function attribute() {
- var attr = [];
- var startingToken = this.currToken;
- this.position++;
-
- while (this.position < this.tokens.length && this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {
- attr.push(this.currToken);
- this.position++;
- }
-
- if (this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {
- return this.expected('closing square bracket', this.currToken[_tokenize.FIELDS.START_POS]);
- }
-
- var len = attr.length;
- var node = {
- source: getSource(startingToken[1], startingToken[2], this.currToken[3], this.currToken[4]),
- sourceIndex: startingToken[_tokenize.FIELDS.START_POS]
- };
-
- if (len === 1 && !~[tokens.word].indexOf(attr[0][_tokenize.FIELDS.TYPE])) {
- return this.expected('attribute', attr[0][_tokenize.FIELDS.START_POS]);
- }
-
- var pos = 0;
- var spaceBefore = '';
- var commentBefore = '';
- var lastAdded = null;
- var spaceAfterMeaningfulToken = false;
-
- while (pos < len) {
- var token = attr[pos];
- var content = this.content(token);
- var next = attr[pos + 1];
-
- switch (token[_tokenize.FIELDS.TYPE]) {
- case tokens.space:
- // if (
- // len === 1 ||
- // pos === 0 && this.content(next) === '|'
- // ) {
- // return this.expected('attribute', token[TOKEN.START_POS], content);
- // }
- spaceAfterMeaningfulToken = true;
-
- if (this.options.lossy) {
- break;
- }
-
- if (lastAdded) {
- (0, _util.ensureObject)(node, 'spaces', lastAdded);
- var prevContent = node.spaces[lastAdded].after || '';
- node.spaces[lastAdded].after = prevContent + content;
- var existingComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || null;
-
- if (existingComment) {
- node.raws.spaces[lastAdded].after = existingComment + content;
- }
- } else {
- spaceBefore = spaceBefore + content;
- commentBefore = commentBefore + content;
- }
-
- break;
-
- case tokens.asterisk:
- if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {
- node.operator = content;
- lastAdded = 'operator';
- } else if ((!node.namespace || lastAdded === "namespace" && !spaceAfterMeaningfulToken) && next) {
- if (spaceBefore) {
- (0, _util.ensureObject)(node, 'spaces', 'attribute');
- node.spaces.attribute.before = spaceBefore;
- spaceBefore = '';
- }
-
- if (commentBefore) {
- (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');
- node.raws.spaces.attribute.before = spaceBefore;
- commentBefore = '';
- }
-
- node.namespace = (node.namespace || "") + content;
- var rawValue = (0, _util.getProp)(node, 'raws', 'namespace') || null;
-
- if (rawValue) {
- node.raws.namespace += content;
- }
-
- lastAdded = 'namespace';
- }
-
- spaceAfterMeaningfulToken = false;
- break;
-
- case tokens.dollar:
- if (lastAdded === "value") {
- var oldRawValue = (0, _util.getProp)(node, 'raws', 'value');
- node.value += "$";
-
- if (oldRawValue) {
- node.raws.value = oldRawValue + "$";
- }
-
- break;
- }
-
- // Falls through
-
- case tokens.caret:
- if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {
- node.operator = content;
- lastAdded = 'operator';
- }
-
- spaceAfterMeaningfulToken = false;
- break;
-
- case tokens.combinator:
- if (content === '~' && next[_tokenize.FIELDS.TYPE] === tokens.equals) {
- node.operator = content;
- lastAdded = 'operator';
- }
-
- if (content !== '|') {
- spaceAfterMeaningfulToken = false;
- break;
- }
-
- if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {
- node.operator = content;
- lastAdded = 'operator';
- } else if (!node.namespace && !node.attribute) {
- node.namespace = true;
- }
-
- spaceAfterMeaningfulToken = false;
- break;
-
- case tokens.word:
- if (next && this.content(next) === '|' && attr[pos + 2] && attr[pos + 2][_tokenize.FIELDS.TYPE] !== tokens.equals && // this look-ahead probably fails with comment nodes involved.
- !node.operator && !node.namespace) {
- node.namespace = content;
- lastAdded = 'namespace';
- } else if (!node.attribute || lastAdded === "attribute" && !spaceAfterMeaningfulToken) {
- if (spaceBefore) {
- (0, _util.ensureObject)(node, 'spaces', 'attribute');
- node.spaces.attribute.before = spaceBefore;
- spaceBefore = '';
- }
-
- if (commentBefore) {
- (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');
- node.raws.spaces.attribute.before = commentBefore;
- commentBefore = '';
- }
-
- node.attribute = (node.attribute || "") + content;
-
- var _rawValue = (0, _util.getProp)(node, 'raws', 'attribute') || null;
-
- if (_rawValue) {
- node.raws.attribute += content;
- }
-
- lastAdded = 'attribute';
- } else if (!node.value && node.value !== "" || lastAdded === "value" && !spaceAfterMeaningfulToken) {
- var _unescaped = (0, _util.unesc)(content);
-
- var _oldRawValue = (0, _util.getProp)(node, 'raws', 'value') || '';
-
- var oldValue = node.value || '';
- node.value = oldValue + _unescaped;
- node.quoteMark = null;
-
- if (_unescaped !== content || _oldRawValue) {
- (0, _util.ensureObject)(node, 'raws');
- node.raws.value = (_oldRawValue || oldValue) + content;
- }
-
- lastAdded = 'value';
- } else {
- var insensitive = content === 'i' || content === "I";
-
- if ((node.value || node.value === '') && (node.quoteMark || spaceAfterMeaningfulToken)) {
- node.insensitive = insensitive;
-
- if (!insensitive || content === "I") {
- (0, _util.ensureObject)(node, 'raws');
- node.raws.insensitiveFlag = content;
- }
-
- lastAdded = 'insensitive';
-
- if (spaceBefore) {
- (0, _util.ensureObject)(node, 'spaces', 'insensitive');
- node.spaces.insensitive.before = spaceBefore;
- spaceBefore = '';
- }
-
- if (commentBefore) {
- (0, _util.ensureObject)(node, 'raws', 'spaces', 'insensitive');
- node.raws.spaces.insensitive.before = commentBefore;
- commentBefore = '';
- }
- } else if (node.value || node.value === '') {
- lastAdded = 'value';
- node.value += content;
-
- if (node.raws.value) {
- node.raws.value += content;
- }
- }
- }
-
- spaceAfterMeaningfulToken = false;
- break;
-
- case tokens.str:
- if (!node.attribute || !node.operator) {
- return this.error("Expected an attribute followed by an operator preceding the string.", {
- index: token[_tokenize.FIELDS.START_POS]
- });
- }
-
- var _unescapeValue = (0, _attribute.unescapeValue)(content),
- unescaped = _unescapeValue.unescaped,
- quoteMark = _unescapeValue.quoteMark;
-
- node.value = unescaped;
- node.quoteMark = quoteMark;
- lastAdded = 'value';
- (0, _util.ensureObject)(node, 'raws');
- node.raws.value = content;
- spaceAfterMeaningfulToken = false;
- break;
-
- case tokens.equals:
- if (!node.attribute) {
- return this.expected('attribute', token[_tokenize.FIELDS.START_POS], content);
- }
-
- if (node.value) {
- return this.error('Unexpected "=" found; an operator was already defined.', {
- index: token[_tokenize.FIELDS.START_POS]
- });
- }
-
- node.operator = node.operator ? node.operator + content : content;
- lastAdded = 'operator';
- spaceAfterMeaningfulToken = false;
- break;
-
- case tokens.comment:
- if (lastAdded) {
- if (spaceAfterMeaningfulToken || next && next[_tokenize.FIELDS.TYPE] === tokens.space || lastAdded === 'insensitive') {
- var lastComment = (0, _util.getProp)(node, 'spaces', lastAdded, 'after') || '';
- var rawLastComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || lastComment;
- (0, _util.ensureObject)(node, 'raws', 'spaces', lastAdded);
- node.raws.spaces[lastAdded].after = rawLastComment + content;
- } else {
- var lastValue = node[lastAdded] || '';
- var rawLastValue = (0, _util.getProp)(node, 'raws', lastAdded) || lastValue;
- (0, _util.ensureObject)(node, 'raws');
- node.raws[lastAdded] = rawLastValue + content;
- }
- } else {
- commentBefore = commentBefore + content;
- }
-
- break;
-
- default:
- return this.error("Unexpected \"" + content + "\" found.", {
- index: token[_tokenize.FIELDS.START_POS]
- });
- }
-
- pos++;
- }
-
- unescapeProp(node, "attribute");
- unescapeProp(node, "namespace");
- this.newNode(new _attribute.default(node));
- this.position++;
- }
- /**
- * return a node containing meaningless garbage up to (but not including) the specified token position.
- * if the token position is negative, all remaining tokens are consumed.
- *
- * This returns an array containing a single string node if all whitespace,
- * otherwise an array of comment nodes with space before and after.
- *
- * These tokens are not added to the current selector, the caller can add them or use them to amend
- * a previous node's space metadata.
- *
- * In lossy mode, this returns only comments.
- */
- ;
-
- _proto.parseWhitespaceEquivalentTokens = function parseWhitespaceEquivalentTokens(stopPosition) {
- if (stopPosition < 0) {
- stopPosition = this.tokens.length;
- }
-
- var startPosition = this.position;
- var nodes = [];
- var space = "";
- var lastComment = undefined;
-
- do {
- if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {
- if (!this.options.lossy) {
- space += this.content();
- }
- } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.comment) {
- var spaces = {};
-
- if (space) {
- spaces.before = space;
- space = "";
- }
-
- lastComment = new _comment.default({
- value: this.content(),
- source: getTokenSource(this.currToken),
- sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],
- spaces: spaces
- });
- nodes.push(lastComment);
- }
- } while (++this.position < stopPosition);
-
- if (space) {
- if (lastComment) {
- lastComment.spaces.after = space;
- } else if (!this.options.lossy) {
- var firstToken = this.tokens[startPosition];
- var lastToken = this.tokens[this.position - 1];
- nodes.push(new _string.default({
- value: '',
- source: getSource(firstToken[_tokenize.FIELDS.START_LINE], firstToken[_tokenize.FIELDS.START_COL], lastToken[_tokenize.FIELDS.END_LINE], lastToken[_tokenize.FIELDS.END_COL]),
- sourceIndex: firstToken[_tokenize.FIELDS.START_POS],
- spaces: {
- before: space,
- after: ''
- }
- }));
- }
- }
-
- return nodes;
- }
- /**
- *
- * @param {*} nodes
- */
- ;
-
- _proto.convertWhitespaceNodesToSpace = function convertWhitespaceNodesToSpace(nodes, requiredSpace) {
- var _this2 = this;
-
- if (requiredSpace === void 0) {
- requiredSpace = false;
- }
-
- var space = "";
- var rawSpace = "";
- nodes.forEach(function (n) {
- var spaceBefore = _this2.lossySpace(n.spaces.before, requiredSpace);
-
- var rawSpaceBefore = _this2.lossySpace(n.rawSpaceBefore, requiredSpace);
-
- space += spaceBefore + _this2.lossySpace(n.spaces.after, requiredSpace && spaceBefore.length === 0);
- rawSpace += spaceBefore + n.value + _this2.lossySpace(n.rawSpaceAfter, requiredSpace && rawSpaceBefore.length === 0);
- });
-
- if (rawSpace === space) {
- rawSpace = undefined;
- }
-
- var result = {
- space: space,
- rawSpace: rawSpace
- };
- return result;
- };
-
- _proto.isNamedCombinator = function isNamedCombinator(position) {
- if (position === void 0) {
- position = this.position;
- }
-
- return this.tokens[position + 0] && this.tokens[position + 0][_tokenize.FIELDS.TYPE] === tokens.slash && this.tokens[position + 1] && this.tokens[position + 1][_tokenize.FIELDS.TYPE] === tokens.word && this.tokens[position + 2] && this.tokens[position + 2][_tokenize.FIELDS.TYPE] === tokens.slash;
- };
-
- _proto.namedCombinator = function namedCombinator() {
- if (this.isNamedCombinator()) {
- var nameRaw = this.content(this.tokens[this.position + 1]);
- var name = (0, _util.unesc)(nameRaw).toLowerCase();
- var raws = {};
-
- if (name !== nameRaw) {
- raws.value = "/" + nameRaw + "/";
- }
-
- var node = new _combinator.default({
- value: "/" + name + "/",
- source: getSource(this.currToken[_tokenize.FIELDS.START_LINE], this.currToken[_tokenize.FIELDS.START_COL], this.tokens[this.position + 2][_tokenize.FIELDS.END_LINE], this.tokens[this.position + 2][_tokenize.FIELDS.END_COL]),
- sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],
- raws: raws
- });
- this.position = this.position + 3;
- return node;
- } else {
- this.unexpected();
- }
- };
-
- _proto.combinator = function combinator() {
- var _this3 = this;
-
- if (this.content() === '|') {
- return this.namespace();
- } // We need to decide between a space that's a descendant combinator and meaningless whitespace at the end of a selector.
-
-
- var nextSigTokenPos = this.locateNextMeaningfulToken(this.position);
-
- if (nextSigTokenPos < 0 || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.comma) {
- var nodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);
-
- if (nodes.length > 0) {
- var last = this.current.last;
-
- if (last) {
- var _this$convertWhitespa = this.convertWhitespaceNodesToSpace(nodes),
- space = _this$convertWhitespa.space,
- rawSpace = _this$convertWhitespa.rawSpace;
-
- if (rawSpace !== undefined) {
- last.rawSpaceAfter += rawSpace;
- }
-
- last.spaces.after += space;
- } else {
- nodes.forEach(function (n) {
- return _this3.newNode(n);
- });
- }
- }
-
- return;
- }
-
- var firstToken = this.currToken;
- var spaceOrDescendantSelectorNodes = undefined;
-
- if (nextSigTokenPos > this.position) {
- spaceOrDescendantSelectorNodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);
- }
-
- var node;
-
- if (this.isNamedCombinator()) {
- node = this.namedCombinator();
- } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.combinator) {
- node = new _combinator.default({
- value: this.content(),
- source: getTokenSource(this.currToken),
- sourceIndex: this.currToken[_tokenize.FIELDS.START_POS]
- });
- this.position++;
- } else if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {// pass
- } else if (!spaceOrDescendantSelectorNodes) {
- this.unexpected();
- }
-
- if (node) {
- if (spaceOrDescendantSelectorNodes) {
- var _this$convertWhitespa2 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes),
- _space = _this$convertWhitespa2.space,
- _rawSpace = _this$convertWhitespa2.rawSpace;
-
- node.spaces.before = _space;
- node.rawSpaceBefore = _rawSpace;
- }
- } else {
- // descendant combinator
- var _this$convertWhitespa3 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes, true),
- _space2 = _this$convertWhitespa3.space,
- _rawSpace2 = _this$convertWhitespa3.rawSpace;
-
- if (!_rawSpace2) {
- _rawSpace2 = _space2;
- }
-
- var spaces = {};
- var raws = {
- spaces: {}
- };
-
- if (_space2.endsWith(' ') && _rawSpace2.endsWith(' ')) {
- spaces.before = _space2.slice(0, _space2.length - 1);
- raws.spaces.before = _rawSpace2.slice(0, _rawSpace2.length - 1);
- } else if (_space2.startsWith(' ') && _rawSpace2.startsWith(' ')) {
- spaces.after = _space2.slice(1);
- raws.spaces.after = _rawSpace2.slice(1);
- } else {
- raws.value = _rawSpace2;
- }
-
- node = new _combinator.default({
- value: ' ',
- source: getTokenSourceSpan(firstToken, this.tokens[this.position - 1]),
- sourceIndex: firstToken[_tokenize.FIELDS.START_POS],
- spaces: spaces,
- raws: raws
- });
- }
-
- if (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.space) {
- node.spaces.after = this.optionalSpace(this.content());
- this.position++;
- }
-
- return this.newNode(node);
- };
-
- _proto.comma = function comma() {
- if (this.position === this.tokens.length - 1) {
- this.root.trailingComma = true;
- this.position++;
- return;
- }
-
- this.current._inferEndPosition();
-
- var selector = new _selector.default({
- source: {
- start: tokenStart(this.tokens[this.position + 1])
- }
- });
- this.current.parent.append(selector);
- this.current = selector;
- this.position++;
- };
-
- _proto.comment = function comment() {
- var current = this.currToken;
- this.newNode(new _comment.default({
- value: this.content(),
- source: getTokenSource(current),
- sourceIndex: current[_tokenize.FIELDS.START_POS]
- }));
- this.position++;
- };
-
- _proto.error = function error(message, opts) {
- throw this.root.error(message, opts);
- };
-
- _proto.missingBackslash = function missingBackslash() {
- return this.error('Expected a backslash preceding the semicolon.', {
- index: this.currToken[_tokenize.FIELDS.START_POS]
- });
- };
-
- _proto.missingParenthesis = function missingParenthesis() {
- return this.expected('opening parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);
- };
-
- _proto.missingSquareBracket = function missingSquareBracket() {
- return this.expected('opening square bracket', this.currToken[_tokenize.FIELDS.START_POS]);
- };
-
- _proto.unexpected = function unexpected() {
- return this.error("Unexpected '" + this.content() + "'. Escaping special characters with \\ may help.", this.currToken[_tokenize.FIELDS.START_POS]);
- };
-
- _proto.namespace = function namespace() {
- var before = this.prevToken && this.content(this.prevToken) || true;
-
- if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.word) {
- this.position++;
- return this.word(before);
- } else if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.asterisk) {
- this.position++;
- return this.universal(before);
- }
- };
-
- _proto.nesting = function nesting() {
- if (this.nextToken) {
- var nextContent = this.content(this.nextToken);
-
- if (nextContent === "|") {
- this.position++;
- return;
- }
- }
-
- var current = this.currToken;
- this.newNode(new _nesting.default({
- value: this.content(),
- source: getTokenSource(current),
- sourceIndex: current[_tokenize.FIELDS.START_POS]
- }));
- this.position++;
- };
-
- _proto.parentheses = function parentheses() {
- var last = this.current.last;
- var unbalanced = 1;
- this.position++;
-
- if (last && last.type === types.PSEUDO) {
- var selector = new _selector.default({
- source: {
- start: tokenStart(this.tokens[this.position - 1])
- }
- });
- var cache = this.current;
- last.append(selector);
- this.current = selector;
-
- while (this.position < this.tokens.length && unbalanced) {
- if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {
- unbalanced++;
- }
-
- if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {
- unbalanced--;
- }
-
- if (unbalanced) {
- this.parse();
- } else {
- this.current.source.end = tokenEnd(this.currToken);
- this.current.parent.source.end = tokenEnd(this.currToken);
- this.position++;
- }
- }
-
- this.current = cache;
- } else {
- // I think this case should be an error. It's used to implement a basic parse of media queries
- // but I don't think it's a good idea.
- var parenStart = this.currToken;
- var parenValue = "(";
- var parenEnd;
-
- while (this.position < this.tokens.length && unbalanced) {
- if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {
- unbalanced++;
- }
-
- if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {
- unbalanced--;
- }
-
- parenEnd = this.currToken;
- parenValue += this.parseParenthesisToken(this.currToken);
- this.position++;
- }
-
- if (last) {
- last.appendToPropertyAndEscape("value", parenValue, parenValue);
- } else {
- this.newNode(new _string.default({
- value: parenValue,
- source: getSource(parenStart[_tokenize.FIELDS.START_LINE], parenStart[_tokenize.FIELDS.START_COL], parenEnd[_tokenize.FIELDS.END_LINE], parenEnd[_tokenize.FIELDS.END_COL]),
- sourceIndex: parenStart[_tokenize.FIELDS.START_POS]
- }));
- }
- }
-
- if (unbalanced) {
- return this.expected('closing parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);
- }
- };
-
- _proto.pseudo = function pseudo() {
- var _this4 = this;
-
- var pseudoStr = '';
- var startingToken = this.currToken;
-
- while (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.colon) {
- pseudoStr += this.content();
- this.position++;
- }
-
- if (!this.currToken) {
- return this.expected(['pseudo-class', 'pseudo-element'], this.position - 1);
- }
-
- if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.word) {
- this.splitWord(false, function (first, length) {
- pseudoStr += first;
-
- _this4.newNode(new _pseudo.default({
- value: pseudoStr,
- source: getTokenSourceSpan(startingToken, _this4.currToken),
- sourceIndex: startingToken[_tokenize.FIELDS.START_POS]
- }));
-
- if (length > 1 && _this4.nextToken && _this4.nextToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {
- _this4.error('Misplaced parenthesis.', {
- index: _this4.nextToken[_tokenize.FIELDS.START_POS]
- });
- }
- });
- } else {
- return this.expected(['pseudo-class', 'pseudo-element'], this.currToken[_tokenize.FIELDS.START_POS]);
- }
- };
-
- _proto.space = function space() {
- var content = this.content(); // Handle space before and after the selector
-
- if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {
- this.spaces = this.optionalSpace(content);
- this.position++;
- } else if (this.position === this.tokens.length - 1 || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {
- this.current.last.spaces.after = this.optionalSpace(content);
- this.position++;
- } else {
- this.combinator();
- }
- };
-
- _proto.string = function string() {
- var current = this.currToken;
- this.newNode(new _string.default({
- value: this.content(),
- source: getTokenSource(current),
- sourceIndex: current[_tokenize.FIELDS.START_POS]
- }));
- this.position++;
- };
-
- _proto.universal = function universal(namespace) {
- var nextToken = this.nextToken;
-
- if (nextToken && this.content(nextToken) === '|') {
- this.position++;
- return this.namespace();
- }
-
- var current = this.currToken;
- this.newNode(new _universal.default({
- value: this.content(),
- source: getTokenSource(current),
- sourceIndex: current[_tokenize.FIELDS.START_POS]
- }), namespace);
- this.position++;
- };
-
- _proto.splitWord = function splitWord(namespace, firstCallback) {
- var _this5 = this;
-
- var nextToken = this.nextToken;
- var word = this.content();
-
- while (nextToken && ~[tokens.dollar, tokens.caret, tokens.equals, tokens.word].indexOf(nextToken[_tokenize.FIELDS.TYPE])) {
- this.position++;
- var current = this.content();
- word += current;
-
- if (current.lastIndexOf('\\') === current.length - 1) {
- var next = this.nextToken;
-
- if (next && next[_tokenize.FIELDS.TYPE] === tokens.space) {
- word += this.requiredSpace(this.content(next));
- this.position++;
- }
- }
-
- nextToken = this.nextToken;
- }
-
- var hasClass = (0, _indexesOf.default)(word, '.').filter(function (i) {
- return word[i - 1] !== '\\';
- });
- var hasId = (0, _indexesOf.default)(word, '#').filter(function (i) {
- return word[i - 1] !== '\\';
- }); // Eliminate Sass interpolations from the list of id indexes
-
- var interpolations = (0, _indexesOf.default)(word, '#{');
-
- if (interpolations.length) {
- hasId = hasId.filter(function (hashIndex) {
- return !~interpolations.indexOf(hashIndex);
- });
- }
-
- var indices = (0, _sortAscending.default)((0, _uniq.default)([0].concat(hasClass, hasId)));
- indices.forEach(function (ind, i) {
- var index = indices[i + 1] || word.length;
- var value = word.slice(ind, index);
-
- if (i === 0 && firstCallback) {
- return firstCallback.call(_this5, value, indices.length);
- }
-
- var node;
- var current = _this5.currToken;
- var sourceIndex = current[_tokenize.FIELDS.START_POS] + indices[i];
- var source = getSource(current[1], current[2] + ind, current[3], current[2] + (index - 1));
-
- if (~hasClass.indexOf(ind)) {
- var classNameOpts = {
- value: value.slice(1),
- source: source,
- sourceIndex: sourceIndex
- };
- node = new _className.default(unescapeProp(classNameOpts, "value"));
- } else if (~hasId.indexOf(ind)) {
- var idOpts = {
- value: value.slice(1),
- source: source,
- sourceIndex: sourceIndex
- };
- node = new _id.default(unescapeProp(idOpts, "value"));
- } else {
- var tagOpts = {
- value: value,
- source: source,
- sourceIndex: sourceIndex
- };
- unescapeProp(tagOpts, "value");
- node = new _tag.default(tagOpts);
- }
-
- _this5.newNode(node, namespace); // Ensure that the namespace is used only once
-
-
- namespace = null;
- });
- this.position++;
- };
-
- _proto.word = function word(namespace) {
- var nextToken = this.nextToken;
-
- if (nextToken && this.content(nextToken) === '|') {
- this.position++;
- return this.namespace();
- }
-
- return this.splitWord(namespace);
- };
-
- _proto.loop = function loop() {
- while (this.position < this.tokens.length) {
- this.parse(true);
- }
-
- this.current._inferEndPosition();
-
- return this.root;
- };
-
- _proto.parse = function parse(throwOnParenthesis) {
- switch (this.currToken[_tokenize.FIELDS.TYPE]) {
- case tokens.space:
- this.space();
- break;
-
- case tokens.comment:
- this.comment();
- break;
-
- case tokens.openParenthesis:
- this.parentheses();
- break;
-
- case tokens.closeParenthesis:
- if (throwOnParenthesis) {
- this.missingParenthesis();
- }
-
- break;
-
- case tokens.openSquare:
- this.attribute();
- break;
-
- case tokens.dollar:
- case tokens.caret:
- case tokens.equals:
- case tokens.word:
- this.word();
- break;
-
- case tokens.colon:
- this.pseudo();
- break;
-
- case tokens.comma:
- this.comma();
- break;
-
- case tokens.asterisk:
- this.universal();
- break;
-
- case tokens.ampersand:
- this.nesting();
- break;
-
- case tokens.slash:
- case tokens.combinator:
- this.combinator();
- break;
-
- case tokens.str:
- this.string();
- break;
- // These cases throw; no break needed.
-
- case tokens.closeSquare:
- this.missingSquareBracket();
-
- case tokens.semicolon:
- this.missingBackslash();
-
- default:
- this.unexpected();
- }
- }
- /**
- * Helpers
- */
- ;
-
- _proto.expected = function expected(description, index, found) {
- if (Array.isArray(description)) {
- var last = description.pop();
- description = description.join(', ') + " or " + last;
- }
-
- var an = /^[aeiou]/.test(description[0]) ? 'an' : 'a';
-
- if (!found) {
- return this.error("Expected " + an + " " + description + ".", {
- index: index
- });
- }
-
- return this.error("Expected " + an + " " + description + ", found \"" + found + "\" instead.", {
- index: index
- });
- };
-
- _proto.requiredSpace = function requiredSpace(space) {
- return this.options.lossy ? ' ' : space;
- };
-
- _proto.optionalSpace = function optionalSpace(space) {
- return this.options.lossy ? '' : space;
- };
-
- _proto.lossySpace = function lossySpace(space, required) {
- if (this.options.lossy) {
- return required ? ' ' : '';
- } else {
- return space;
- }
- };
-
- _proto.parseParenthesisToken = function parseParenthesisToken(token) {
- var content = this.content(token);
-
- if (token[_tokenize.FIELDS.TYPE] === tokens.space) {
- return this.requiredSpace(content);
- } else {
- return content;
- }
- };
-
- _proto.newNode = function newNode(node, namespace) {
- if (namespace) {
- if (/^ +$/.test(namespace)) {
- if (!this.options.lossy) {
- this.spaces = (this.spaces || '') + namespace;
- }
-
- namespace = true;
- }
-
- node.namespace = namespace;
- unescapeProp(node, "namespace");
- }
-
- if (this.spaces) {
- node.spaces.before = this.spaces;
- this.spaces = '';
- }
-
- return this.current.append(node);
- };
-
- _proto.content = function content(token) {
- if (token === void 0) {
- token = this.currToken;
- }
-
- return this.css.slice(token[_tokenize.FIELDS.START_POS], token[_tokenize.FIELDS.END_POS]);
- };
-
- /**
- * returns the index of the next non-whitespace, non-comment token.
- * returns -1 if no meaningful token is found.
- */
- _proto.locateNextMeaningfulToken = function locateNextMeaningfulToken(startPosition) {
- if (startPosition === void 0) {
- startPosition = this.position + 1;
- }
-
- var searchPosition = startPosition;
-
- while (searchPosition < this.tokens.length) {
- if (WHITESPACE_EQUIV_TOKENS[this.tokens[searchPosition][_tokenize.FIELDS.TYPE]]) {
- searchPosition++;
- continue;
- } else {
- return searchPosition;
- }
- }
-
- return -1;
- };
-
- _createClass(Parser, [{
- key: "currToken",
- get: function get() {
- return this.tokens[this.position];
- }
- }, {
- key: "nextToken",
- get: function get() {
- return this.tokens[this.position + 1];
- }
- }, {
- key: "prevToken",
- get: function get() {
- return this.tokens[this.position - 1];
- }
- }]);
-
- return Parser;
-}();
-
-exports.default = Parser;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/processor.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/processor.js
deleted file mode 100644
index 048b1ef..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/processor.js
+++ /dev/null
@@ -1,208 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _parser = _interopRequireDefault(require("./parser"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var Processor =
-/*#__PURE__*/
-function () {
- function Processor(func, options) {
- this.func = func || function noop() {};
-
- this.funcRes = null;
- this.options = options;
- }
-
- var _proto = Processor.prototype;
-
- _proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) {
- if (options === void 0) {
- options = {};
- }
-
- var merged = Object.assign({}, this.options, options);
-
- if (merged.updateSelector === false) {
- return false;
- } else {
- return typeof rule !== "string";
- }
- };
-
- _proto._isLossy = function _isLossy(options) {
- if (options === void 0) {
- options = {};
- }
-
- var merged = Object.assign({}, this.options, options);
-
- if (merged.lossless === false) {
- return true;
- } else {
- return false;
- }
- };
-
- _proto._root = function _root(rule, options) {
- if (options === void 0) {
- options = {};
- }
-
- var parser = new _parser.default(rule, this._parseOptions(options));
- return parser.root;
- };
-
- _proto._parseOptions = function _parseOptions(options) {
- return {
- lossy: this._isLossy(options)
- };
- };
-
- _proto._run = function _run(rule, options) {
- var _this = this;
-
- if (options === void 0) {
- options = {};
- }
-
- return new Promise(function (resolve, reject) {
- try {
- var root = _this._root(rule, options);
-
- Promise.resolve(_this.func(root)).then(function (transform) {
- var string = undefined;
-
- if (_this._shouldUpdateSelector(rule, options)) {
- string = root.toString();
- rule.selector = string;
- }
-
- return {
- transform: transform,
- root: root,
- string: string
- };
- }).then(resolve, reject);
- } catch (e) {
- reject(e);
- return;
- }
- });
- };
-
- _proto._runSync = function _runSync(rule, options) {
- if (options === void 0) {
- options = {};
- }
-
- var root = this._root(rule, options);
-
- var transform = this.func(root);
-
- if (transform && typeof transform.then === "function") {
- throw new Error("Selector processor returned a promise to a synchronous call.");
- }
-
- var string = undefined;
-
- if (options.updateSelector && typeof rule !== "string") {
- string = root.toString();
- rule.selector = string;
- }
-
- return {
- transform: transform,
- root: root,
- string: string
- };
- }
- /**
- * Process rule into a selector AST.
- *
- * @param rule {postcss.Rule | string} The css selector to be processed
- * @param options The options for processing
- * @returns {Promise<parser.Root>} The AST of the selector after processing it.
- */
- ;
-
- _proto.ast = function ast(rule, options) {
- return this._run(rule, options).then(function (result) {
- return result.root;
- });
- }
- /**
- * Process rule into a selector AST synchronously.
- *
- * @param rule {postcss.Rule | string} The css selector to be processed
- * @param options The options for processing
- * @returns {parser.Root} The AST of the selector after processing it.
- */
- ;
-
- _proto.astSync = function astSync(rule, options) {
- return this._runSync(rule, options).root;
- }
- /**
- * Process a selector into a transformed value asynchronously
- *
- * @param rule {postcss.Rule | string} The css selector to be processed
- * @param options The options for processing
- * @returns {Promise<any>} The value returned by the processor.
- */
- ;
-
- _proto.transform = function transform(rule, options) {
- return this._run(rule, options).then(function (result) {
- return result.transform;
- });
- }
- /**
- * Process a selector into a transformed value synchronously.
- *
- * @param rule {postcss.Rule | string} The css selector to be processed
- * @param options The options for processing
- * @returns {any} The value returned by the processor.
- */
- ;
-
- _proto.transformSync = function transformSync(rule, options) {
- return this._runSync(rule, options).transform;
- }
- /**
- * Process a selector into a new selector string asynchronously.
- *
- * @param rule {postcss.Rule | string} The css selector to be processed
- * @param options The options for processing
- * @returns {string} the selector after processing.
- */
- ;
-
- _proto.process = function process(rule, options) {
- return this._run(rule, options).then(function (result) {
- return result.string || result.root.toString();
- });
- }
- /**
- * Process a selector into a new selector string synchronously.
- *
- * @param rule {postcss.Rule | string} The css selector to be processed
- * @param options The options for processing
- * @returns {string} the selector after processing.
- */
- ;
-
- _proto.processSync = function processSync(rule, options) {
- var result = this._runSync(rule, options);
-
- return result.string || result.root.toString();
- };
-
- return Processor;
-}();
-
-exports.default = Processor;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/attribute.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/attribute.js
deleted file mode 100644
index 8d9c280..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/attribute.js
+++ /dev/null
@@ -1,516 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.unescapeValue = unescapeValue;
-exports.default = void 0;
-
-var _cssesc = _interopRequireDefault(require("cssesc"));
-
-var _unesc = _interopRequireDefault(require("../util/unesc"));
-
-var _namespace = _interopRequireDefault(require("./namespace"));
-
-var _types = require("./types");
-
-var _CSSESC_QUOTE_OPTIONS;
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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); } }
-
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var _require = require("util"),
- deprecate = _require.deprecate;
-
-var WRAPPED_IN_QUOTES = /^('|")(.*)\1$/;
-var warnOfDeprecatedValueAssignment = deprecate(function () {}, "Assigning an attribute a value containing characters that might need to be escaped is deprecated. " + "Call attribute.setValue() instead.");
-var warnOfDeprecatedQuotedAssignment = deprecate(function () {}, "Assigning attr.quoted is deprecated and has no effect. Assign to attr.quoteMark instead.");
-var warnOfDeprecatedConstructor = deprecate(function () {}, "Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now.");
-
-function unescapeValue(value) {
- var deprecatedUsage = false;
- var quoteMark = null;
- var unescaped = value;
- var m = unescaped.match(WRAPPED_IN_QUOTES);
-
- if (m) {
- quoteMark = m[1];
- unescaped = m[2];
- }
-
- unescaped = (0, _unesc.default)(unescaped);
-
- if (unescaped !== value) {
- deprecatedUsage = true;
- }
-
- return {
- deprecatedUsage: deprecatedUsage,
- unescaped: unescaped,
- quoteMark: quoteMark
- };
-}
-
-function handleDeprecatedContructorOpts(opts) {
- if (opts.quoteMark !== undefined) {
- return opts;
- }
-
- if (opts.value === undefined) {
- return opts;
- }
-
- warnOfDeprecatedConstructor();
-
- var _unescapeValue = unescapeValue(opts.value),
- quoteMark = _unescapeValue.quoteMark,
- unescaped = _unescapeValue.unescaped;
-
- if (!opts.raws) {
- opts.raws = {};
- }
-
- if (opts.raws.value === undefined) {
- opts.raws.value = opts.value;
- }
-
- opts.value = unescaped;
- opts.quoteMark = quoteMark;
- return opts;
-}
-
-var Attribute =
-/*#__PURE__*/
-function (_Namespace) {
- _inheritsLoose(Attribute, _Namespace);
-
- function Attribute(opts) {
- var _this;
-
- if (opts === void 0) {
- opts = {};
- }
-
- _this = _Namespace.call(this, handleDeprecatedContructorOpts(opts)) || this;
- _this.type = _types.ATTRIBUTE;
- _this.raws = _this.raws || {};
- Object.defineProperty(_this.raws, 'unquoted', {
- get: deprecate(function () {
- return _this.value;
- }, "attr.raws.unquoted is deprecated. Call attr.value instead."),
- set: deprecate(function () {
- return _this.value;
- }, "Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.")
- });
- _this._constructed = true;
- return _this;
- }
- /**
- * Returns the Attribute's value quoted such that it would be legal to use
- * in the value of a css file. The original value's quotation setting
- * used for stringification is left unchanged. See `setValue(value, options)`
- * if you want to control the quote settings of a new value for the attribute.
- *
- * You can also change the quotation used for the current value by setting quoteMark.
- *
- * Options:
- * * quoteMark {'"' | "'" | null} - Use this value to quote the value. If this
- * option is not set, the original value for quoteMark will be used. If
- * indeterminate, a double quote is used. The legal values are:
- * * `null` - the value will be unquoted and characters will be escaped as necessary.
- * * `'` - the value will be quoted with a single quote and single quotes are escaped.
- * * `"` - the value will be quoted with a double quote and double quotes are escaped.
- * * preferCurrentQuoteMark {boolean} - if true, prefer the source quote mark
- * over the quoteMark option value.
- * * smart {boolean} - if true, will select a quote mark based on the value
- * and the other options specified here. See the `smartQuoteMark()`
- * method.
- **/
-
-
- var _proto = Attribute.prototype;
-
- _proto.getQuotedValue = function getQuotedValue(options) {
- if (options === void 0) {
- options = {};
- }
-
- var quoteMark = this._determineQuoteMark(options);
-
- var cssescopts = CSSESC_QUOTE_OPTIONS[quoteMark];
- var escaped = (0, _cssesc.default)(this._value, cssescopts);
- return escaped;
- };
-
- _proto._determineQuoteMark = function _determineQuoteMark(options) {
- return options.smart ? this.smartQuoteMark(options) : this.preferredQuoteMark(options);
- }
- /**
- * Set the unescaped value with the specified quotation options. The value
- * provided must not include any wrapping quote marks -- those quotes will
- * be interpreted as part of the value and escaped accordingly.
- */
- ;
-
- _proto.setValue = function setValue(value, options) {
- if (options === void 0) {
- options = {};
- }
-
- this._value = value;
- this._quoteMark = this._determineQuoteMark(options);
-
- this._syncRawValue();
- }
- /**
- * Intelligently select a quoteMark value based on the value's contents. If
- * the value is a legal CSS ident, it will not be quoted. Otherwise a quote
- * mark will be picked that minimizes the number of escapes.
- *
- * If there's no clear winner, the quote mark from these options is used,
- * then the source quote mark (this is inverted if `preferCurrentQuoteMark` is
- * true). If the quoteMark is unspecified, a double quote is used.
- *
- * @param options This takes the quoteMark and preferCurrentQuoteMark options
- * from the quoteValue method.
- */
- ;
-
- _proto.smartQuoteMark = function smartQuoteMark(options) {
- var v = this.value;
- var numSingleQuotes = v.replace(/[^']/g, '').length;
- var numDoubleQuotes = v.replace(/[^"]/g, '').length;
-
- if (numSingleQuotes + numDoubleQuotes === 0) {
- var escaped = (0, _cssesc.default)(v, {
- isIdentifier: true
- });
-
- if (escaped === v) {
- return Attribute.NO_QUOTE;
- } else {
- var pref = this.preferredQuoteMark(options);
-
- if (pref === Attribute.NO_QUOTE) {
- // pick a quote mark that isn't none and see if it's smaller
- var quote = this.quoteMark || options.quoteMark || Attribute.DOUBLE_QUOTE;
- var opts = CSSESC_QUOTE_OPTIONS[quote];
- var quoteValue = (0, _cssesc.default)(v, opts);
-
- if (quoteValue.length < escaped.length) {
- return quote;
- }
- }
-
- return pref;
- }
- } else if (numDoubleQuotes === numSingleQuotes) {
- return this.preferredQuoteMark(options);
- } else if (numDoubleQuotes < numSingleQuotes) {
- return Attribute.DOUBLE_QUOTE;
- } else {
- return Attribute.SINGLE_QUOTE;
- }
- }
- /**
- * Selects the preferred quote mark based on the options and the current quote mark value.
- * If you want the quote mark to depend on the attribute value, call `smartQuoteMark(opts)`
- * instead.
- */
- ;
-
- _proto.preferredQuoteMark = function preferredQuoteMark(options) {
- var quoteMark = options.preferCurrentQuoteMark ? this.quoteMark : options.quoteMark;
-
- if (quoteMark === undefined) {
- quoteMark = options.preferCurrentQuoteMark ? options.quoteMark : this.quoteMark;
- }
-
- if (quoteMark === undefined) {
- quoteMark = Attribute.DOUBLE_QUOTE;
- }
-
- return quoteMark;
- };
-
- _proto._syncRawValue = function _syncRawValue() {
- var rawValue = (0, _cssesc.default)(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]);
-
- if (rawValue === this._value) {
- if (this.raws) {
- delete this.raws.value;
- }
- } else {
- this.raws.value = rawValue;
- }
- };
-
- _proto._handleEscapes = function _handleEscapes(prop, value) {
- if (this._constructed) {
- var escaped = (0, _cssesc.default)(value, {
- isIdentifier: true
- });
-
- if (escaped !== value) {
- this.raws[prop] = escaped;
- } else {
- delete this.raws[prop];
- }
- }
- };
-
- _proto._spacesFor = function _spacesFor(name) {
- var attrSpaces = {
- before: '',
- after: ''
- };
- var spaces = this.spaces[name] || {};
- var rawSpaces = this.raws.spaces && this.raws.spaces[name] || {};
- return Object.assign(attrSpaces, spaces, rawSpaces);
- };
-
- _proto._stringFor = function _stringFor(name, spaceName, concat) {
- if (spaceName === void 0) {
- spaceName = name;
- }
-
- if (concat === void 0) {
- concat = defaultAttrConcat;
- }
-
- var attrSpaces = this._spacesFor(spaceName);
-
- return concat(this.stringifyProperty(name), attrSpaces);
- }
- /**
- * returns the offset of the attribute part specified relative to the
- * start of the node of the output string.
- *
- * * "ns" - alias for "namespace"
- * * "namespace" - the namespace if it exists.
- * * "attribute" - the attribute name
- * * "attributeNS" - the start of the attribute or its namespace
- * * "operator" - the match operator of the attribute
- * * "value" - The value (string or identifier)
- * * "insensitive" - the case insensitivity flag;
- * @param part One of the possible values inside an attribute.
- * @returns -1 if the name is invalid or the value doesn't exist in this attribute.
- */
- ;
-
- _proto.offsetOf = function offsetOf(name) {
- var count = 1;
-
- var attributeSpaces = this._spacesFor("attribute");
-
- count += attributeSpaces.before.length;
-
- if (name === "namespace" || name === "ns") {
- return this.namespace ? count : -1;
- }
-
- if (name === "attributeNS") {
- return count;
- }
-
- count += this.namespaceString.length;
-
- if (this.namespace) {
- count += 1;
- }
-
- if (name === "attribute") {
- return count;
- }
-
- count += this.stringifyProperty("attribute").length;
- count += attributeSpaces.after.length;
-
- var operatorSpaces = this._spacesFor("operator");
-
- count += operatorSpaces.before.length;
- var operator = this.stringifyProperty("operator");
-
- if (name === "operator") {
- return operator ? count : -1;
- }
-
- count += operator.length;
- count += operatorSpaces.after.length;
-
- var valueSpaces = this._spacesFor("value");
-
- count += valueSpaces.before.length;
- var value = this.stringifyProperty("value");
-
- if (name === "value") {
- return value ? count : -1;
- }
-
- count += value.length;
- count += valueSpaces.after.length;
-
- var insensitiveSpaces = this._spacesFor("insensitive");
-
- count += insensitiveSpaces.before.length;
-
- if (name === "insensitive") {
- return this.insensitive ? count : -1;
- }
-
- return -1;
- };
-
- _proto.toString = function toString() {
- var _this2 = this;
-
- var selector = [this.rawSpaceBefore, '['];
- selector.push(this._stringFor('qualifiedAttribute', 'attribute'));
-
- if (this.operator && (this.value || this.value === '')) {
- selector.push(this._stringFor('operator'));
- selector.push(this._stringFor('value'));
- selector.push(this._stringFor('insensitiveFlag', 'insensitive', function (attrValue, attrSpaces) {
- if (attrValue.length > 0 && !_this2.quoted && attrSpaces.before.length === 0 && !(_this2.spaces.value && _this2.spaces.value.after)) {
- attrSpaces.before = " ";
- }
-
- return defaultAttrConcat(attrValue, attrSpaces);
- }));
- }
-
- selector.push(']');
- selector.push(this.rawSpaceAfter);
- return selector.join('');
- };
-
- _createClass(Attribute, [{
- key: "quoted",
- get: function get() {
- var qm = this.quoteMark;
- return qm === "'" || qm === '"';
- },
- set: function set(value) {
- warnOfDeprecatedQuotedAssignment();
- }
- /**
- * returns a single (`'`) or double (`"`) quote character if the value is quoted.
- * returns `null` if the value is not quoted.
- * returns `undefined` if the quotation state is unknown (this can happen when
- * the attribute is constructed without specifying a quote mark.)
- */
-
- }, {
- key: "quoteMark",
- get: function get() {
- return this._quoteMark;
- }
- /**
- * Set the quote mark to be used by this attribute's value.
- * If the quote mark changes, the raw (escaped) value at `attr.raws.value` of the attribute
- * value is updated accordingly.
- *
- * @param {"'" | '"' | null} quoteMark The quote mark or `null` if the value should be unquoted.
- */
- ,
- set: function set(quoteMark) {
- if (!this._constructed) {
- this._quoteMark = quoteMark;
- return;
- }
-
- if (this._quoteMark !== quoteMark) {
- this._quoteMark = quoteMark;
-
- this._syncRawValue();
- }
- }
- }, {
- key: "qualifiedAttribute",
- get: function get() {
- return this.qualifiedName(this.raws.attribute || this.attribute);
- }
- }, {
- key: "insensitiveFlag",
- get: function get() {
- return this.insensitive ? 'i' : '';
- }
- }, {
- key: "value",
- get: function get() {
- return this._value;
- }
- /**
- * Before 3.0, the value had to be set to an escaped value including any wrapped
- * quote marks. In 3.0, the semantics of `Attribute.value` changed so that the value
- * is unescaped during parsing and any quote marks are removed.
- *
- * Because the ambiguity of this semantic change, if you set `attr.value = newValue`,
- * a deprecation warning is raised when the new value contains any characters that would
- * require escaping (including if it contains wrapped quotes).
- *
- * Instead, you should call `attr.setValue(newValue, opts)` and pass options that describe
- * how the new value is quoted.
- */
- ,
- set: function set(v) {
- if (this._constructed) {
- var _unescapeValue2 = unescapeValue(v),
- deprecatedUsage = _unescapeValue2.deprecatedUsage,
- unescaped = _unescapeValue2.unescaped,
- quoteMark = _unescapeValue2.quoteMark;
-
- if (deprecatedUsage) {
- warnOfDeprecatedValueAssignment();
- }
-
- if (unescaped === this._value && quoteMark === this._quoteMark) {
- return;
- }
-
- this._value = unescaped;
- this._quoteMark = quoteMark;
-
- this._syncRawValue();
- } else {
- this._value = v;
- }
- }
- }, {
- key: "attribute",
- get: function get() {
- return this._attribute;
- },
- set: function set(name) {
- this._handleEscapes("attribute", name);
-
- this._attribute = name;
- }
- }]);
-
- return Attribute;
-}(_namespace.default);
-
-exports.default = Attribute;
-Attribute.NO_QUOTE = null;
-Attribute.SINGLE_QUOTE = "'";
-Attribute.DOUBLE_QUOTE = '"';
-var CSSESC_QUOTE_OPTIONS = (_CSSESC_QUOTE_OPTIONS = {
- "'": {
- quotes: 'single',
- wrap: true
- },
- '"': {
- quotes: 'double',
- wrap: true
- }
-}, _CSSESC_QUOTE_OPTIONS[null] = {
- isIdentifier: true
-}, _CSSESC_QUOTE_OPTIONS);
-
-function defaultAttrConcat(attrValue, attrSpaces) {
- return "" + attrSpaces.before + attrValue + attrSpaces.after;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/className.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/className.js
deleted file mode 100644
index d79247d..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/className.js
+++ /dev/null
@@ -1,69 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _cssesc = _interopRequireDefault(require("cssesc"));
-
-var _util = require("../util");
-
-var _node = _interopRequireDefault(require("./node"));
-
-var _types = require("./types");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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); } }
-
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var ClassName =
-/*#__PURE__*/
-function (_Node) {
- _inheritsLoose(ClassName, _Node);
-
- function ClassName(opts) {
- var _this;
-
- _this = _Node.call(this, opts) || this;
- _this.type = _types.CLASS;
- _this._constructed = true;
- return _this;
- }
-
- var _proto = ClassName.prototype;
-
- _proto.toString = function toString() {
- return [this.rawSpaceBefore, String('.' + this.stringifyProperty("value")), this.rawSpaceAfter].join('');
- };
-
- _createClass(ClassName, [{
- key: "value",
- set: function set(v) {
- if (this._constructed) {
- var escaped = (0, _cssesc.default)(v, {
- isIdentifier: true
- });
-
- if (escaped !== v) {
- (0, _util.ensureObject)(this, "raws");
- this.raws.value = escaped;
- } else if (this.raws) {
- delete this.raws.value;
- }
- }
-
- this._value = v;
- },
- get: function get() {
- return this._value;
- }
- }]);
-
- return ClassName;
-}(_node.default);
-
-exports.default = ClassName;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/combinator.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/combinator.js
deleted file mode 100644
index 479cc4b..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/combinator.js
+++ /dev/null
@@ -1,31 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _node = _interopRequireDefault(require("./node"));
-
-var _types = require("./types");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var Combinator =
-/*#__PURE__*/
-function (_Node) {
- _inheritsLoose(Combinator, _Node);
-
- function Combinator(opts) {
- var _this;
-
- _this = _Node.call(this, opts) || this;
- _this.type = _types.COMBINATOR;
- return _this;
- }
-
- return Combinator;
-}(_node.default);
-
-exports.default = Combinator;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/comment.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/comment.js
deleted file mode 100644
index a104b69..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/comment.js
+++ /dev/null
@@ -1,31 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _node = _interopRequireDefault(require("./node"));
-
-var _types = require("./types");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var Comment =
-/*#__PURE__*/
-function (_Node) {
- _inheritsLoose(Comment, _Node);
-
- function Comment(opts) {
- var _this;
-
- _this = _Node.call(this, opts) || this;
- _this.type = _types.COMMENT;
- return _this;
- }
-
- return Comment;
-}(_node.default);
-
-exports.default = Comment;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/constructors.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/constructors.js
deleted file mode 100644
index 6c5a3b6..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/constructors.js
+++ /dev/null
@@ -1,102 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.universal = exports.tag = exports.string = exports.selector = exports.root = exports.pseudo = exports.nesting = exports.id = exports.comment = exports.combinator = exports.className = exports.attribute = void 0;
-
-var _attribute = _interopRequireDefault(require("./attribute"));
-
-var _className = _interopRequireDefault(require("./className"));
-
-var _combinator = _interopRequireDefault(require("./combinator"));
-
-var _comment = _interopRequireDefault(require("./comment"));
-
-var _id = _interopRequireDefault(require("./id"));
-
-var _nesting = _interopRequireDefault(require("./nesting"));
-
-var _pseudo = _interopRequireDefault(require("./pseudo"));
-
-var _root = _interopRequireDefault(require("./root"));
-
-var _selector = _interopRequireDefault(require("./selector"));
-
-var _string = _interopRequireDefault(require("./string"));
-
-var _tag = _interopRequireDefault(require("./tag"));
-
-var _universal = _interopRequireDefault(require("./universal"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var attribute = function attribute(opts) {
- return new _attribute.default(opts);
-};
-
-exports.attribute = attribute;
-
-var className = function className(opts) {
- return new _className.default(opts);
-};
-
-exports.className = className;
-
-var combinator = function combinator(opts) {
- return new _combinator.default(opts);
-};
-
-exports.combinator = combinator;
-
-var comment = function comment(opts) {
- return new _comment.default(opts);
-};
-
-exports.comment = comment;
-
-var id = function id(opts) {
- return new _id.default(opts);
-};
-
-exports.id = id;
-
-var nesting = function nesting(opts) {
- return new _nesting.default(opts);
-};
-
-exports.nesting = nesting;
-
-var pseudo = function pseudo(opts) {
- return new _pseudo.default(opts);
-};
-
-exports.pseudo = pseudo;
-
-var root = function root(opts) {
- return new _root.default(opts);
-};
-
-exports.root = root;
-
-var selector = function selector(opts) {
- return new _selector.default(opts);
-};
-
-exports.selector = selector;
-
-var string = function string(opts) {
- return new _string.default(opts);
-};
-
-exports.string = string;
-
-var tag = function tag(opts) {
- return new _tag.default(opts);
-};
-
-exports.tag = tag;
-
-var universal = function universal(opts) {
- return new _universal.default(opts);
-};
-
-exports.universal = universal; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/container.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/container.js
deleted file mode 100644
index 53b552d..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/container.js
+++ /dev/null
@@ -1,398 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _node = _interopRequireDefault(require("./node"));
-
-var types = _interopRequireWildcard(require("./types"));
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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); } }
-
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var Container =
-/*#__PURE__*/
-function (_Node) {
- _inheritsLoose(Container, _Node);
-
- function Container(opts) {
- var _this;
-
- _this = _Node.call(this, opts) || this;
-
- if (!_this.nodes) {
- _this.nodes = [];
- }
-
- return _this;
- }
-
- var _proto = Container.prototype;
-
- _proto.append = function append(selector) {
- selector.parent = this;
- this.nodes.push(selector);
- return this;
- };
-
- _proto.prepend = function prepend(selector) {
- selector.parent = this;
- this.nodes.unshift(selector);
- return this;
- };
-
- _proto.at = function at(index) {
- return this.nodes[index];
- };
-
- _proto.index = function index(child) {
- if (typeof child === 'number') {
- return child;
- }
-
- return this.nodes.indexOf(child);
- };
-
- _proto.removeChild = function removeChild(child) {
- child = this.index(child);
- this.at(child).parent = undefined;
- this.nodes.splice(child, 1);
- var index;
-
- for (var id in this.indexes) {
- index = this.indexes[id];
-
- if (index >= child) {
- this.indexes[id] = index - 1;
- }
- }
-
- return this;
- };
-
- _proto.removeAll = function removeAll() {
- for (var _iterator = this.nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var node = _ref;
- node.parent = undefined;
- }
-
- this.nodes = [];
- return this;
- };
-
- _proto.empty = function empty() {
- return this.removeAll();
- };
-
- _proto.insertAfter = function insertAfter(oldNode, newNode) {
- newNode.parent = this;
- var oldIndex = this.index(oldNode);
- this.nodes.splice(oldIndex + 1, 0, newNode);
- newNode.parent = this;
- var index;
-
- for (var id in this.indexes) {
- index = this.indexes[id];
-
- if (oldIndex <= index) {
- this.indexes[id] = index + 1;
- }
- }
-
- return this;
- };
-
- _proto.insertBefore = function insertBefore(oldNode, newNode) {
- newNode.parent = this;
- var oldIndex = this.index(oldNode);
- this.nodes.splice(oldIndex, 0, newNode);
- newNode.parent = this;
- var index;
-
- for (var id in this.indexes) {
- index = this.indexes[id];
-
- if (index <= oldIndex) {
- this.indexes[id] = index + 1;
- }
- }
-
- return this;
- };
-
- _proto._findChildAtPosition = function _findChildAtPosition(line, col) {
- var found = undefined;
- this.each(function (node) {
- if (node.atPosition) {
- var foundChild = node.atPosition(line, col);
-
- if (foundChild) {
- found = foundChild;
- return false;
- }
- } else if (node.isAtPosition(line, col)) {
- found = node;
- return false;
- }
- });
- return found;
- }
- /**
- * Return the most specific node at the line and column number given.
- * The source location is based on the original parsed location, locations aren't
- * updated as selector nodes are mutated.
- *
- * Note that this location is relative to the location of the first character
- * of the selector, and not the location of the selector in the overall document
- * when used in conjunction with postcss.
- *
- * If not found, returns undefined.
- * @param {number} line The line number of the node to find. (1-based index)
- * @param {number} col The column number of the node to find. (1-based index)
- */
- ;
-
- _proto.atPosition = function atPosition(line, col) {
- if (this.isAtPosition(line, col)) {
- return this._findChildAtPosition(line, col) || this;
- } else {
- return undefined;
- }
- };
-
- _proto._inferEndPosition = function _inferEndPosition() {
- if (this.last && this.last.source && this.last.source.end) {
- this.source = this.source || {};
- this.source.end = this.source.end || {};
- Object.assign(this.source.end, this.last.source.end);
- }
- };
-
- _proto.each = function each(callback) {
- if (!this.lastEach) {
- this.lastEach = 0;
- }
-
- if (!this.indexes) {
- this.indexes = {};
- }
-
- this.lastEach++;
- var id = this.lastEach;
- this.indexes[id] = 0;
-
- if (!this.length) {
- return undefined;
- }
-
- var index, result;
-
- while (this.indexes[id] < this.length) {
- index = this.indexes[id];
- result = callback(this.at(index), index);
-
- if (result === false) {
- break;
- }
-
- this.indexes[id] += 1;
- }
-
- delete this.indexes[id];
-
- if (result === false) {
- return false;
- }
- };
-
- _proto.walk = function walk(callback) {
- return this.each(function (node, i) {
- var result = callback(node, i);
-
- if (result !== false && node.length) {
- result = node.walk(callback);
- }
-
- if (result === false) {
- return false;
- }
- });
- };
-
- _proto.walkAttributes = function walkAttributes(callback) {
- var _this2 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.ATTRIBUTE) {
- return callback.call(_this2, selector);
- }
- });
- };
-
- _proto.walkClasses = function walkClasses(callback) {
- var _this3 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.CLASS) {
- return callback.call(_this3, selector);
- }
- });
- };
-
- _proto.walkCombinators = function walkCombinators(callback) {
- var _this4 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.COMBINATOR) {
- return callback.call(_this4, selector);
- }
- });
- };
-
- _proto.walkComments = function walkComments(callback) {
- var _this5 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.COMMENT) {
- return callback.call(_this5, selector);
- }
- });
- };
-
- _proto.walkIds = function walkIds(callback) {
- var _this6 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.ID) {
- return callback.call(_this6, selector);
- }
- });
- };
-
- _proto.walkNesting = function walkNesting(callback) {
- var _this7 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.NESTING) {
- return callback.call(_this7, selector);
- }
- });
- };
-
- _proto.walkPseudos = function walkPseudos(callback) {
- var _this8 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.PSEUDO) {
- return callback.call(_this8, selector);
- }
- });
- };
-
- _proto.walkTags = function walkTags(callback) {
- var _this9 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.TAG) {
- return callback.call(_this9, selector);
- }
- });
- };
-
- _proto.walkUniversals = function walkUniversals(callback) {
- var _this10 = this;
-
- return this.walk(function (selector) {
- if (selector.type === types.UNIVERSAL) {
- return callback.call(_this10, selector);
- }
- });
- };
-
- _proto.split = function split(callback) {
- var _this11 = this;
-
- var current = [];
- return this.reduce(function (memo, node, index) {
- var split = callback.call(_this11, node);
- current.push(node);
-
- if (split) {
- memo.push(current);
- current = [];
- } else if (index === _this11.length - 1) {
- memo.push(current);
- }
-
- return memo;
- }, []);
- };
-
- _proto.map = function map(callback) {
- return this.nodes.map(callback);
- };
-
- _proto.reduce = function reduce(callback, memo) {
- return this.nodes.reduce(callback, memo);
- };
-
- _proto.every = function every(callback) {
- return this.nodes.every(callback);
- };
-
- _proto.some = function some(callback) {
- return this.nodes.some(callback);
- };
-
- _proto.filter = function filter(callback) {
- return this.nodes.filter(callback);
- };
-
- _proto.sort = function sort(callback) {
- return this.nodes.sort(callback);
- };
-
- _proto.toString = function toString() {
- return this.map(String).join('');
- };
-
- _createClass(Container, [{
- key: "first",
- get: function get() {
- return this.at(0);
- }
- }, {
- key: "last",
- get: function get() {
- return this.at(this.length - 1);
- }
- }, {
- key: "length",
- get: function get() {
- return this.nodes.length;
- }
- }]);
-
- return Container;
-}(_node.default);
-
-exports.default = Container;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/guards.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/guards.js
deleted file mode 100644
index 8cf7bcf..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/guards.js
+++ /dev/null
@@ -1,64 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.isNode = isNode;
-exports.isPseudoElement = isPseudoElement;
-exports.isPseudoClass = isPseudoClass;
-exports.isContainer = isContainer;
-exports.isNamespace = isNamespace;
-exports.isUniversal = exports.isTag = exports.isString = exports.isSelector = exports.isRoot = exports.isPseudo = exports.isNesting = exports.isIdentifier = exports.isComment = exports.isCombinator = exports.isClassName = exports.isAttribute = void 0;
-
-var _types = require("./types");
-
-var _IS_TYPE;
-
-var IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types.ATTRIBUTE] = true, _IS_TYPE[_types.CLASS] = true, _IS_TYPE[_types.COMBINATOR] = true, _IS_TYPE[_types.COMMENT] = true, _IS_TYPE[_types.ID] = true, _IS_TYPE[_types.NESTING] = true, _IS_TYPE[_types.PSEUDO] = true, _IS_TYPE[_types.ROOT] = true, _IS_TYPE[_types.SELECTOR] = true, _IS_TYPE[_types.STRING] = true, _IS_TYPE[_types.TAG] = true, _IS_TYPE[_types.UNIVERSAL] = true, _IS_TYPE);
-
-function isNode(node) {
- return typeof node === "object" && IS_TYPE[node.type];
-}
-
-function isNodeType(type, node) {
- return isNode(node) && node.type === type;
-}
-
-var isAttribute = isNodeType.bind(null, _types.ATTRIBUTE);
-exports.isAttribute = isAttribute;
-var isClassName = isNodeType.bind(null, _types.CLASS);
-exports.isClassName = isClassName;
-var isCombinator = isNodeType.bind(null, _types.COMBINATOR);
-exports.isCombinator = isCombinator;
-var isComment = isNodeType.bind(null, _types.COMMENT);
-exports.isComment = isComment;
-var isIdentifier = isNodeType.bind(null, _types.ID);
-exports.isIdentifier = isIdentifier;
-var isNesting = isNodeType.bind(null, _types.NESTING);
-exports.isNesting = isNesting;
-var isPseudo = isNodeType.bind(null, _types.PSEUDO);
-exports.isPseudo = isPseudo;
-var isRoot = isNodeType.bind(null, _types.ROOT);
-exports.isRoot = isRoot;
-var isSelector = isNodeType.bind(null, _types.SELECTOR);
-exports.isSelector = isSelector;
-var isString = isNodeType.bind(null, _types.STRING);
-exports.isString = isString;
-var isTag = isNodeType.bind(null, _types.TAG);
-exports.isTag = isTag;
-var isUniversal = isNodeType.bind(null, _types.UNIVERSAL);
-exports.isUniversal = isUniversal;
-
-function isPseudoElement(node) {
- return isPseudo(node) && node.value && (node.value.startsWith("::") || node.value === ":before" || node.value === ":after");
-}
-
-function isPseudoClass(node) {
- return isPseudo(node) && !isPseudoElement(node);
-}
-
-function isContainer(node) {
- return !!(isNode(node) && node.walk);
-}
-
-function isNamespace(node) {
- return isAttribute(node) || isTag(node);
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/id.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/id.js
deleted file mode 100644
index d93afad..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/id.js
+++ /dev/null
@@ -1,37 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _node = _interopRequireDefault(require("./node"));
-
-var _types = require("./types");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var ID =
-/*#__PURE__*/
-function (_Node) {
- _inheritsLoose(ID, _Node);
-
- function ID(opts) {
- var _this;
-
- _this = _Node.call(this, opts) || this;
- _this.type = _types.ID;
- return _this;
- }
-
- var _proto = ID.prototype;
-
- _proto.toString = function toString() {
- return [this.rawSpaceBefore, String('#' + this.stringifyProperty("value")), this.rawSpaceAfter].join('');
- };
-
- return ID;
-}(_node.default);
-
-exports.default = ID;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/index.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/index.js
deleted file mode 100644
index bc5bc37..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/index.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-
-var _types = require("./types");
-
-Object.keys(_types).forEach(function (key) {
- if (key === "default" || key === "__esModule") return;
- exports[key] = _types[key];
-});
-
-var _constructors = require("./constructors");
-
-Object.keys(_constructors).forEach(function (key) {
- if (key === "default" || key === "__esModule") return;
- exports[key] = _constructors[key];
-});
-
-var _guards = require("./guards");
-
-Object.keys(_guards).forEach(function (key) {
- if (key === "default" || key === "__esModule") return;
- exports[key] = _guards[key];
-}); \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/namespace.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/namespace.js
deleted file mode 100644
index 6cc6a27..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/namespace.js
+++ /dev/null
@@ -1,101 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _cssesc = _interopRequireDefault(require("cssesc"));
-
-var _util = require("../util");
-
-var _node = _interopRequireDefault(require("./node"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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); } }
-
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var Namespace =
-/*#__PURE__*/
-function (_Node) {
- _inheritsLoose(Namespace, _Node);
-
- function Namespace() {
- return _Node.apply(this, arguments) || this;
- }
-
- var _proto = Namespace.prototype;
-
- _proto.qualifiedName = function qualifiedName(value) {
- if (this.namespace) {
- return this.namespaceString + "|" + value;
- } else {
- return value;
- }
- };
-
- _proto.toString = function toString() {
- return [this.rawSpaceBefore, this.qualifiedName(this.stringifyProperty("value")), this.rawSpaceAfter].join('');
- };
-
- _createClass(Namespace, [{
- key: "namespace",
- get: function get() {
- return this._namespace;
- },
- set: function set(namespace) {
- if (namespace === true || namespace === "*" || namespace === "&") {
- this._namespace = namespace;
-
- if (this.raws) {
- delete this.raws.namespace;
- }
-
- return;
- }
-
- var escaped = (0, _cssesc.default)(namespace, {
- isIdentifier: true
- });
- this._namespace = namespace;
-
- if (escaped !== namespace) {
- (0, _util.ensureObject)(this, "raws");
- this.raws.namespace = escaped;
- } else if (this.raws) {
- delete this.raws.namespace;
- }
- }
- }, {
- key: "ns",
- get: function get() {
- return this._namespace;
- },
- set: function set(namespace) {
- this.namespace = namespace;
- }
- }, {
- key: "namespaceString",
- get: function get() {
- if (this.namespace) {
- var ns = this.stringifyProperty("namespace");
-
- if (ns === true) {
- return '';
- } else {
- return ns;
- }
- } else {
- return '';
- }
- }
- }]);
-
- return Namespace;
-}(_node.default);
-
-exports.default = Namespace;
-;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/nesting.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/nesting.js
deleted file mode 100644
index 4cdfb10..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/nesting.js
+++ /dev/null
@@ -1,32 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _node = _interopRequireDefault(require("./node"));
-
-var _types = require("./types");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var Nesting =
-/*#__PURE__*/
-function (_Node) {
- _inheritsLoose(Nesting, _Node);
-
- function Nesting(opts) {
- var _this;
-
- _this = _Node.call(this, opts) || this;
- _this.type = _types.NESTING;
- _this.value = '&';
- return _this;
- }
-
- return Nesting;
-}(_node.default);
-
-exports.default = Nesting;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/node.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/node.js
deleted file mode 100644
index 9236311..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/node.js
+++ /dev/null
@@ -1,237 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _util = require("../util");
-
-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); } }
-
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
-
-var cloneNode = function cloneNode(obj, parent) {
- if (typeof obj !== 'object' || obj === null) {
- return obj;
- }
-
- var cloned = new obj.constructor();
-
- for (var i in obj) {
- if (!obj.hasOwnProperty(i)) {
- continue;
- }
-
- var value = obj[i];
- var type = typeof value;
-
- if (i === 'parent' && type === 'object') {
- if (parent) {
- cloned[i] = parent;
- }
- } else if (value instanceof Array) {
- cloned[i] = value.map(function (j) {
- return cloneNode(j, cloned);
- });
- } else {
- cloned[i] = cloneNode(value, cloned);
- }
- }
-
- return cloned;
-};
-
-var Node =
-/*#__PURE__*/
-function () {
- function Node(opts) {
- if (opts === void 0) {
- opts = {};
- }
-
- Object.assign(this, opts);
- this.spaces = this.spaces || {};
- this.spaces.before = this.spaces.before || '';
- this.spaces.after = this.spaces.after || '';
- }
-
- var _proto = Node.prototype;
-
- _proto.remove = function remove() {
- if (this.parent) {
- this.parent.removeChild(this);
- }
-
- this.parent = undefined;
- return this;
- };
-
- _proto.replaceWith = function replaceWith() {
- if (this.parent) {
- for (var index in arguments) {
- this.parent.insertBefore(this, arguments[index]);
- }
-
- this.remove();
- }
-
- return this;
- };
-
- _proto.next = function next() {
- return this.parent.at(this.parent.index(this) + 1);
- };
-
- _proto.prev = function prev() {
- return this.parent.at(this.parent.index(this) - 1);
- };
-
- _proto.clone = function clone(overrides) {
- if (overrides === void 0) {
- overrides = {};
- }
-
- var cloned = cloneNode(this);
-
- for (var name in overrides) {
- cloned[name] = overrides[name];
- }
-
- return cloned;
- }
- /**
- * Some non-standard syntax doesn't follow normal escaping rules for css.
- * This allows non standard syntax to be appended to an existing property
- * by specifying the escaped value. By specifying the escaped value,
- * illegal characters are allowed to be directly inserted into css output.
- * @param {string} name the property to set
- * @param {any} value the unescaped value of the property
- * @param {string} valueEscaped optional. the escaped value of the property.
- */
- ;
-
- _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) {
- if (!this.raws) {
- this.raws = {};
- }
-
- var originalValue = this[name];
- var originalEscaped = this.raws[name];
- this[name] = originalValue + value; // this may trigger a setter that updates raws, so it has to be set first.
-
- if (originalEscaped || valueEscaped !== value) {
- this.raws[name] = (originalEscaped || originalValue) + valueEscaped;
- } else {
- delete this.raws[name]; // delete any escaped value that was created by the setter.
- }
- }
- /**
- * Some non-standard syntax doesn't follow normal escaping rules for css.
- * This allows the escaped value to be specified directly, allowing illegal
- * characters to be directly inserted into css output.
- * @param {string} name the property to set
- * @param {any} value the unescaped value of the property
- * @param {string} valueEscaped the escaped value of the property.
- */
- ;
-
- _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) {
- if (!this.raws) {
- this.raws = {};
- }
-
- this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.
-
- this.raws[name] = valueEscaped;
- }
- /**
- * When you want a value to passed through to CSS directly. This method
- * deletes the corresponding raw value causing the stringifier to fallback
- * to the unescaped value.
- * @param {string} name the property to set.
- * @param {any} value The value that is both escaped and unescaped.
- */
- ;
-
- _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) {
- this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.
-
- if (this.raws) {
- delete this.raws[name];
- }
- }
- /**
- *
- * @param {number} line The number (starting with 1)
- * @param {number} column The column number (starting with 1)
- */
- ;
-
- _proto.isAtPosition = function isAtPosition(line, column) {
- if (this.source && this.source.start && this.source.end) {
- if (this.source.start.line > line) {
- return false;
- }
-
- if (this.source.end.line < line) {
- return false;
- }
-
- if (this.source.start.line === line && this.source.start.column > column) {
- return false;
- }
-
- if (this.source.end.line === line && this.source.end.column < column) {
- return false;
- }
-
- return true;
- }
-
- return undefined;
- };
-
- _proto.stringifyProperty = function stringifyProperty(name) {
- return this.raws && this.raws[name] || this[name];
- };
-
- _proto.toString = function toString() {
- return [this.rawSpaceBefore, String(this.stringifyProperty("value")), this.rawSpaceAfter].join('');
- };
-
- _createClass(Node, [{
- key: "rawSpaceBefore",
- get: function get() {
- var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before;
-
- if (rawSpace === undefined) {
- rawSpace = this.spaces && this.spaces.before;
- }
-
- return rawSpace || "";
- },
- set: function set(raw) {
- (0, _util.ensureObject)(this, "raws", "spaces");
- this.raws.spaces.before = raw;
- }
- }, {
- key: "rawSpaceAfter",
- get: function get() {
- var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after;
-
- if (rawSpace === undefined) {
- rawSpace = this.spaces.after;
- }
-
- return rawSpace || "";
- },
- set: function set(raw) {
- (0, _util.ensureObject)(this, "raws", "spaces");
- this.raws.spaces.after = raw;
- }
- }]);
-
- return Node;
-}();
-
-exports.default = Node;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/pseudo.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/pseudo.js
deleted file mode 100644
index 820338b..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/pseudo.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _container = _interopRequireDefault(require("./container"));
-
-var _types = require("./types");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var Pseudo =
-/*#__PURE__*/
-function (_Container) {
- _inheritsLoose(Pseudo, _Container);
-
- function Pseudo(opts) {
- var _this;
-
- _this = _Container.call(this, opts) || this;
- _this.type = _types.PSEUDO;
- return _this;
- }
-
- var _proto = Pseudo.prototype;
-
- _proto.toString = function toString() {
- var params = this.length ? '(' + this.map(String).join(',') + ')' : '';
- return [this.rawSpaceBefore, this.stringifyProperty("value"), params, this.rawSpaceAfter].join('');
- };
-
- return Pseudo;
-}(_container.default);
-
-exports.default = Pseudo;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/root.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/root.js
deleted file mode 100644
index bbc619f..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/root.js
+++ /dev/null
@@ -1,60 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _container = _interopRequireDefault(require("./container"));
-
-var _types = require("./types");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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); } }
-
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var Root =
-/*#__PURE__*/
-function (_Container) {
- _inheritsLoose(Root, _Container);
-
- function Root(opts) {
- var _this;
-
- _this = _Container.call(this, opts) || this;
- _this.type = _types.ROOT;
- return _this;
- }
-
- var _proto = Root.prototype;
-
- _proto.toString = function toString() {
- var str = this.reduce(function (memo, selector) {
- memo.push(String(selector));
- return memo;
- }, []).join(',');
- return this.trailingComma ? str + ',' : str;
- };
-
- _proto.error = function error(message, options) {
- if (this._error) {
- return this._error(message, options);
- } else {
- return new Error(message);
- }
- };
-
- _createClass(Root, [{
- key: "errorGenerator",
- set: function set(handler) {
- this._error = handler;
- }
- }]);
-
- return Root;
-}(_container.default);
-
-exports.default = Root;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/selector.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/selector.js
deleted file mode 100644
index 618238b..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/selector.js
+++ /dev/null
@@ -1,31 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _container = _interopRequireDefault(require("./container"));
-
-var _types = require("./types");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var Selector =
-/*#__PURE__*/
-function (_Container) {
- _inheritsLoose(Selector, _Container);
-
- function Selector(opts) {
- var _this;
-
- _this = _Container.call(this, opts) || this;
- _this.type = _types.SELECTOR;
- return _this;
- }
-
- return Selector;
-}(_container.default);
-
-exports.default = Selector;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/string.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/string.js
deleted file mode 100644
index b8526fa..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/string.js
+++ /dev/null
@@ -1,31 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _node = _interopRequireDefault(require("./node"));
-
-var _types = require("./types");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var String =
-/*#__PURE__*/
-function (_Node) {
- _inheritsLoose(String, _Node);
-
- function String(opts) {
- var _this;
-
- _this = _Node.call(this, opts) || this;
- _this.type = _types.STRING;
- return _this;
- }
-
- return String;
-}(_node.default);
-
-exports.default = String;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/tag.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/tag.js
deleted file mode 100644
index 2d95176..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/tag.js
+++ /dev/null
@@ -1,31 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _namespace = _interopRequireDefault(require("./namespace"));
-
-var _types = require("./types");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var Tag =
-/*#__PURE__*/
-function (_Namespace) {
- _inheritsLoose(Tag, _Namespace);
-
- function Tag(opts) {
- var _this;
-
- _this = _Namespace.call(this, opts) || this;
- _this.type = _types.TAG;
- return _this;
- }
-
- return Tag;
-}(_namespace.default);
-
-exports.default = Tag;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/types.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/types.js
deleted file mode 100644
index ab897b8..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/types.js
+++ /dev/null
@@ -1,28 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.UNIVERSAL = exports.ATTRIBUTE = exports.CLASS = exports.COMBINATOR = exports.COMMENT = exports.ID = exports.NESTING = exports.PSEUDO = exports.ROOT = exports.SELECTOR = exports.STRING = exports.TAG = void 0;
-var TAG = 'tag';
-exports.TAG = TAG;
-var STRING = 'string';
-exports.STRING = STRING;
-var SELECTOR = 'selector';
-exports.SELECTOR = SELECTOR;
-var ROOT = 'root';
-exports.ROOT = ROOT;
-var PSEUDO = 'pseudo';
-exports.PSEUDO = PSEUDO;
-var NESTING = 'nesting';
-exports.NESTING = NESTING;
-var ID = 'id';
-exports.ID = ID;
-var COMMENT = 'comment';
-exports.COMMENT = COMMENT;
-var COMBINATOR = 'combinator';
-exports.COMBINATOR = COMBINATOR;
-var CLASS = 'class';
-exports.CLASS = CLASS;
-var ATTRIBUTE = 'attribute';
-exports.ATTRIBUTE = ATTRIBUTE;
-var UNIVERSAL = 'universal';
-exports.UNIVERSAL = UNIVERSAL; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/universal.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/universal.js
deleted file mode 100644
index c83905e..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/selectors/universal.js
+++ /dev/null
@@ -1,32 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = void 0;
-
-var _namespace = _interopRequireDefault(require("./namespace"));
-
-var _types = require("./types");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-var Universal =
-/*#__PURE__*/
-function (_Namespace) {
- _inheritsLoose(Universal, _Namespace);
-
- function Universal(opts) {
- var _this;
-
- _this = _Namespace.call(this, opts) || this;
- _this.type = _types.UNIVERSAL;
- _this.value = '*';
- return _this;
- }
-
- return Universal;
-}(_namespace.default);
-
-exports.default = Universal;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/sortAscending.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/sortAscending.js
deleted file mode 100644
index 7af2fec..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/sortAscending.js
+++ /dev/null
@@ -1,13 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = sortAscending;
-
-function sortAscending(list) {
- return list.sort(function (a, b) {
- return a - b;
- });
-}
-
-;
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/tokenTypes.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/tokenTypes.js
deleted file mode 100644
index 48314b9..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/tokenTypes.js
+++ /dev/null
@@ -1,95 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.combinator = exports.word = exports.comment = exports.str = exports.tab = exports.newline = exports.feed = exports.cr = exports.backslash = exports.bang = exports.slash = exports.doubleQuote = exports.singleQuote = exports.space = exports.greaterThan = exports.pipe = exports.equals = exports.plus = exports.caret = exports.tilde = exports.dollar = exports.closeSquare = exports.openSquare = exports.closeParenthesis = exports.openParenthesis = exports.semicolon = exports.colon = exports.comma = exports.at = exports.asterisk = exports.ampersand = void 0;
-var ampersand = 38; // `&`.charCodeAt(0);
-
-exports.ampersand = ampersand;
-var asterisk = 42; // `*`.charCodeAt(0);
-
-exports.asterisk = asterisk;
-var at = 64; // `@`.charCodeAt(0);
-
-exports.at = at;
-var comma = 44; // `,`.charCodeAt(0);
-
-exports.comma = comma;
-var colon = 58; // `:`.charCodeAt(0);
-
-exports.colon = colon;
-var semicolon = 59; // `;`.charCodeAt(0);
-
-exports.semicolon = semicolon;
-var openParenthesis = 40; // `(`.charCodeAt(0);
-
-exports.openParenthesis = openParenthesis;
-var closeParenthesis = 41; // `)`.charCodeAt(0);
-
-exports.closeParenthesis = closeParenthesis;
-var openSquare = 91; // `[`.charCodeAt(0);
-
-exports.openSquare = openSquare;
-var closeSquare = 93; // `]`.charCodeAt(0);
-
-exports.closeSquare = closeSquare;
-var dollar = 36; // `$`.charCodeAt(0);
-
-exports.dollar = dollar;
-var tilde = 126; // `~`.charCodeAt(0);
-
-exports.tilde = tilde;
-var caret = 94; // `^`.charCodeAt(0);
-
-exports.caret = caret;
-var plus = 43; // `+`.charCodeAt(0);
-
-exports.plus = plus;
-var equals = 61; // `=`.charCodeAt(0);
-
-exports.equals = equals;
-var pipe = 124; // `|`.charCodeAt(0);
-
-exports.pipe = pipe;
-var greaterThan = 62; // `>`.charCodeAt(0);
-
-exports.greaterThan = greaterThan;
-var space = 32; // ` `.charCodeAt(0);
-
-exports.space = space;
-var singleQuote = 39; // `'`.charCodeAt(0);
-
-exports.singleQuote = singleQuote;
-var doubleQuote = 34; // `"`.charCodeAt(0);
-
-exports.doubleQuote = doubleQuote;
-var slash = 47; // `/`.charCodeAt(0);
-
-exports.slash = slash;
-var bang = 33; // `!`.charCodeAt(0);
-
-exports.bang = bang;
-var backslash = 92; // '\\'.charCodeAt(0);
-
-exports.backslash = backslash;
-var cr = 13; // '\r'.charCodeAt(0);
-
-exports.cr = cr;
-var feed = 12; // '\f'.charCodeAt(0);
-
-exports.feed = feed;
-var newline = 10; // '\n'.charCodeAt(0);
-
-exports.newline = newline;
-var tab = 9; // '\t'.charCodeAt(0);
-// Expose aliases primarily for readability.
-
-exports.tab = tab;
-var str = singleQuote; // No good single character representation!
-
-exports.str = str;
-var comment = -1;
-exports.comment = comment;
-var word = -2;
-exports.word = word;
-var combinator = -3;
-exports.combinator = combinator; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/tokenize.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/tokenize.js
deleted file mode 100644
index e890e9c..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/tokenize.js
+++ /dev/null
@@ -1,268 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = tokenize;
-exports.FIELDS = void 0;
-
-var t = _interopRequireWildcard(require("./tokenTypes"));
-
-var _unescapable, _wordDelimiters;
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
-
-var unescapable = (_unescapable = {}, _unescapable[t.tab] = true, _unescapable[t.newline] = true, _unescapable[t.cr] = true, _unescapable[t.feed] = true, _unescapable);
-var wordDelimiters = (_wordDelimiters = {}, _wordDelimiters[t.space] = true, _wordDelimiters[t.tab] = true, _wordDelimiters[t.newline] = true, _wordDelimiters[t.cr] = true, _wordDelimiters[t.feed] = true, _wordDelimiters[t.ampersand] = true, _wordDelimiters[t.asterisk] = true, _wordDelimiters[t.bang] = true, _wordDelimiters[t.comma] = true, _wordDelimiters[t.colon] = true, _wordDelimiters[t.semicolon] = true, _wordDelimiters[t.openParenthesis] = true, _wordDelimiters[t.closeParenthesis] = true, _wordDelimiters[t.openSquare] = true, _wordDelimiters[t.closeSquare] = true, _wordDelimiters[t.singleQuote] = true, _wordDelimiters[t.doubleQuote] = true, _wordDelimiters[t.plus] = true, _wordDelimiters[t.pipe] = true, _wordDelimiters[t.tilde] = true, _wordDelimiters[t.greaterThan] = true, _wordDelimiters[t.equals] = true, _wordDelimiters[t.dollar] = true, _wordDelimiters[t.caret] = true, _wordDelimiters[t.slash] = true, _wordDelimiters);
-var hex = {};
-var hexChars = "0123456789abcdefABCDEF";
-
-for (var i = 0; i < hexChars.length; i++) {
- hex[hexChars.charCodeAt(i)] = true;
-}
-/**
- * Returns the last index of the bar css word
- * @param {string} css The string in which the word begins
- * @param {number} start The index into the string where word's first letter occurs
- */
-
-
-function consumeWord(css, start) {
- var next = start;
- var code;
-
- do {
- code = css.charCodeAt(next);
-
- if (wordDelimiters[code]) {
- return next - 1;
- } else if (code === t.backslash) {
- next = consumeEscape(css, next) + 1;
- } else {
- // All other characters are part of the word
- next++;
- }
- } while (next < css.length);
-
- return next - 1;
-}
-/**
- * Returns the last index of the escape sequence
- * @param {string} css The string in which the sequence begins
- * @param {number} start The index into the string where escape character (`\`) occurs.
- */
-
-
-function consumeEscape(css, start) {
- var next = start;
- var code = css.charCodeAt(next + 1);
-
- if (unescapable[code]) {// just consume the escape char
- } else if (hex[code]) {
- var hexDigits = 0; // consume up to 6 hex chars
-
- do {
- next++;
- hexDigits++;
- code = css.charCodeAt(next + 1);
- } while (hex[code] && hexDigits < 6); // if fewer than 6 hex chars, a trailing space ends the escape
-
-
- if (hexDigits < 6 && code === t.space) {
- next++;
- }
- } else {
- // the next char is part of the current word
- next++;
- }
-
- return next;
-}
-
-var FIELDS = {
- TYPE: 0,
- START_LINE: 1,
- START_COL: 2,
- END_LINE: 3,
- END_COL: 4,
- START_POS: 5,
- END_POS: 6
-};
-exports.FIELDS = FIELDS;
-
-function tokenize(input) {
- var tokens = [];
- var css = input.css.valueOf();
- var _css = css,
- length = _css.length;
- var offset = -1;
- var line = 1;
- var start = 0;
- var end = 0;
- var code, content, endColumn, endLine, escaped, escapePos, last, lines, next, nextLine, nextOffset, quote, tokenType;
-
- function unclosed(what, fix) {
- if (input.safe) {
- // fyi: this is never set to true.
- css += fix;
- next = css.length - 1;
- } else {
- throw input.error('Unclosed ' + what, line, start - offset, start);
- }
- }
-
- while (start < length) {
- code = css.charCodeAt(start);
-
- if (code === t.newline) {
- offset = start;
- line += 1;
- }
-
- switch (code) {
- case t.space:
- case t.tab:
- case t.newline:
- case t.cr:
- case t.feed:
- next = start;
-
- do {
- next += 1;
- code = css.charCodeAt(next);
-
- if (code === t.newline) {
- offset = next;
- line += 1;
- }
- } while (code === t.space || code === t.newline || code === t.tab || code === t.cr || code === t.feed);
-
- tokenType = t.space;
- endLine = line;
- endColumn = next - offset - 1;
- end = next;
- break;
-
- case t.plus:
- case t.greaterThan:
- case t.tilde:
- case t.pipe:
- next = start;
-
- do {
- next += 1;
- code = css.charCodeAt(next);
- } while (code === t.plus || code === t.greaterThan || code === t.tilde || code === t.pipe);
-
- tokenType = t.combinator;
- endLine = line;
- endColumn = start - offset;
- end = next;
- break;
- // Consume these characters as single tokens.
-
- case t.asterisk:
- case t.ampersand:
- case t.bang:
- case t.comma:
- case t.equals:
- case t.dollar:
- case t.caret:
- case t.openSquare:
- case t.closeSquare:
- case t.colon:
- case t.semicolon:
- case t.openParenthesis:
- case t.closeParenthesis:
- next = start;
- tokenType = code;
- endLine = line;
- endColumn = start - offset;
- end = next + 1;
- break;
-
- case t.singleQuote:
- case t.doubleQuote:
- quote = code === t.singleQuote ? "'" : '"';
- next = start;
-
- do {
- escaped = false;
- next = css.indexOf(quote, next + 1);
-
- if (next === -1) {
- unclosed('quote', quote);
- }
-
- escapePos = next;
-
- while (css.charCodeAt(escapePos - 1) === t.backslash) {
- escapePos -= 1;
- escaped = !escaped;
- }
- } while (escaped);
-
- tokenType = t.str;
- endLine = line;
- endColumn = start - offset;
- end = next + 1;
- break;
-
- default:
- if (code === t.slash && css.charCodeAt(start + 1) === t.asterisk) {
- next = css.indexOf('*/', start + 2) + 1;
-
- if (next === 0) {
- unclosed('comment', '*/');
- }
-
- content = css.slice(start, next + 1);
- lines = content.split('\n');
- last = lines.length - 1;
-
- if (last > 0) {
- nextLine = line + last;
- nextOffset = next - lines[last].length;
- } else {
- nextLine = line;
- nextOffset = offset;
- }
-
- tokenType = t.comment;
- line = nextLine;
- endLine = nextLine;
- endColumn = next - nextOffset;
- } else if (code === t.slash) {
- next = start;
- tokenType = code;
- endLine = line;
- endColumn = start - offset;
- end = next + 1;
- } else {
- next = consumeWord(css, start);
- tokenType = t.word;
- endLine = line;
- endColumn = next - offset;
- }
-
- end = next + 1;
- break;
- } // Ensure that the token structure remains consistent
-
-
- tokens.push([tokenType, // [0] Token type
- line, // [1] Starting line
- start - offset, // [2] Starting column
- endLine, // [3] Ending line
- endColumn, // [4] Ending column
- start, // [5] Start position / Source index
- end]); // Reset offset for the next token
-
- if (nextOffset) {
- offset = nextOffset;
- nextOffset = null;
- }
-
- start = end;
- }
-
- return tokens;
-} \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/ensureObject.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/ensureObject.js
deleted file mode 100644
index 548b107..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/ensureObject.js
+++ /dev/null
@@ -1,22 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = ensureObject;
-
-function ensureObject(obj) {
- for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
- props[_key - 1] = arguments[_key];
- }
-
- while (props.length > 0) {
- var prop = props.shift();
-
- if (!obj[prop]) {
- obj[prop] = {};
- }
-
- obj = obj[prop];
- }
-}
-
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/getProp.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/getProp.js
deleted file mode 100644
index fd44505..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/getProp.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = getProp;
-
-function getProp(obj) {
- for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
- props[_key - 1] = arguments[_key];
- }
-
- while (props.length > 0) {
- var prop = props.shift();
-
- if (!obj[prop]) {
- return undefined;
- }
-
- obj = obj[prop];
- }
-
- return obj;
-}
-
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/index.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/index.js
deleted file mode 100644
index d7a37bd..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.stripComments = exports.ensureObject = exports.getProp = exports.unesc = void 0;
-
-var _unesc = _interopRequireDefault(require("./unesc"));
-
-exports.unesc = _unesc.default;
-
-var _getProp = _interopRequireDefault(require("./getProp"));
-
-exports.getProp = _getProp.default;
-
-var _ensureObject = _interopRequireDefault(require("./ensureObject"));
-
-exports.ensureObject = _ensureObject.default;
-
-var _stripComments = _interopRequireDefault(require("./stripComments"));
-
-exports.stripComments = _stripComments.default;
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/stripComments.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/stripComments.js
deleted file mode 100644
index 7f4defe..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/stripComments.js
+++ /dev/null
@@ -1,27 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = stripComments;
-
-function stripComments(str) {
- var s = "";
- var commentStart = str.indexOf("/*");
- var lastEnd = 0;
-
- while (commentStart >= 0) {
- s = s + str.slice(lastEnd, commentStart);
- var commentEnd = str.indexOf("*/", commentStart + 2);
-
- if (commentEnd < 0) {
- return s;
- }
-
- lastEnd = commentEnd + 2;
- commentStart = str.indexOf("/*", lastEnd);
- }
-
- s = s + str.slice(lastEnd);
- return s;
-}
-
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/unesc.js b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/unesc.js
deleted file mode 100644
index ae12869..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/dist/util/unesc.js
+++ /dev/null
@@ -1,20 +0,0 @@
-"use strict";
-
-exports.__esModule = true;
-exports.default = unesc;
-var whitespace = '[\\x20\\t\\r\\n\\f]';
-var unescapeRegExp = new RegExp('\\\\([\\da-f]{1,6}' + whitespace + '?|(' + whitespace + ')|.)', 'ig');
-
-function unesc(str) {
- return str.replace(unescapeRegExp, function (_, escaped, escapedWhitespace) {
- var high = '0x' + escaped - 0x10000; // NaN means non-codepoint
- // Workaround erroneous numeric interpretation of +"0x"
- // eslint-disable-next-line no-self-compare
-
- return high !== high || escapedWhitespace ? escaped : high < 0 ? // BMP codepoint
- String.fromCharCode(high + 0x10000) : // Supplemental Plane codepoint (surrogate pair)
- String.fromCharCode(high >> 10 | 0xd800, high & 0x3ff | 0xdc00);
- });
-}
-
-module.exports = exports.default; \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/node_modules/.bin/cssesc b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/node_modules/.bin/cssesc
deleted file mode 120000
index eeeb3a5..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/node_modules/.bin/cssesc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../cssesc/bin/cssesc \ No newline at end of file
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/package.json b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/package.json
deleted file mode 100644
index 6a17320..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/package.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "name": "postcss-selector-parser",
- "version": "6.0.2",
- "devDependencies": {
- "@babel/cli": "^7.2.3",
- "@babel/core": "^7.3.4",
- "@babel/plugin-proposal-class-properties": "^7.3.4",
- "@babel/preset-env": "^7.3.4",
- "@babel/register": "^7.0.0",
- "ava": "^1.3.1",
- "babel-eslint": "^10.0.1",
- "babel-plugin-add-module-exports": "^1.0.0",
- "coveralls": "^3.0.3",
- "del-cli": "^1.1.0",
- "eslint": "^5.15.1",
- "eslint-plugin-babel": "^5.3.0",
- "eslint-plugin-import": "^2.16.0",
- "glob": "^7.1.3",
- "minimist": "^1.2.0",
- "nyc": "^13.3.0",
- "postcss": "^7.0.14",
- "semver": "^5.6.0"
- },
- "main": "dist/index.js",
- "types": "postcss-selector-parser.d.ts",
- "files": [
- "API.md",
- "CHANGELOG.md",
- "LICENSE-MIT",
- "dist",
- "postcss-selector-parser.d.ts"
- ],
- "scripts": {
- "pretest": "eslint src",
- "prepare": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
- "lintfix": "eslint --fix src",
- "report": "nyc report --reporter=html",
- "test": "nyc ava src/__tests__/*.js",
- "testone": "ava"
- },
- "dependencies": {
- "cssesc": "^3.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
- },
- "license": "MIT",
- "engines": {
- "node": ">=4"
- },
- "homepage": "https://github.com/postcss/postcss-selector-parser",
- "contributors": [
- {
- "name": "Ben Briggs",
- "email": "beneb.info@gmail.com",
- "url": "http://beneb.info"
- },
- {
- "name": "Chris Eppstein",
- "email": "chris@eppsteins.net",
- "url": "http://twitter.com/chriseppstein"
- }
- ],
- "repository": "postcss/postcss-selector-parser",
- "ava": {
- "require": [
- "@babel/register"
- ],
- "concurrency": 5
- },
- "nyc": {
- "exclude": [
- "node_modules",
- "**/__tests__"
- ]
- }
-}
diff --git a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/postcss-selector-parser.d.ts b/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/postcss-selector-parser.d.ts
deleted file mode 100644
index 52bdb77..0000000
--- a/assets/node_modules/stylelint-scss/node_modules/postcss-selector-parser/postcss-selector-parser.d.ts
+++ /dev/null
@@ -1,499 +0,0 @@
-// Type definitions for postcss-selector-parser 2.2.3
-// Definitions by: Chris Eppstein <chris@eppsteins.net>
-
-/*~ Note that ES6 modules cannot directly export callable functions.
- *~ This file should be imported using the CommonJS-style:
- *~ import x = require('someLibrary');
- *~
- *~ Refer to the documentation to understand common
- *~ workarounds for this limitation of ES6 modules.
- */
-
-/*~ This declaration specifies that the function
- *~ is the exported object from the file
- */
-export = parser;
-
-// TODO: Conditional types in TS 1.8 will really clean this up.
-declare function parser(): parser.Processor<never>;
-declare function parser<Transform>(processor: parser.AsyncProcessor<Transform>): parser.Processor<Transform, never>;
-declare function parser(processor: parser.AsyncProcessor<void>): parser.Processor<never, never>;
-declare function parser<Transform>(processor: parser.SyncProcessor<Transform>): parser.Processor<Transform>;
-declare function parser(processor: parser.SyncProcessor<void>): parser.Processor<never>;
-declare function parser<Transform>(processor?: parser.SyncProcessor<Transform> | parser.AsyncProcessor<Transform>): parser.Processor<Transform>;
-
-/*~ If you want to expose types from your module as well, you can
- *~ place them in this block. Often you will want to describe the
- *~ shape of the return type of the function; that type should
- *~ be declared in here, as this example shows.
- */
-declare namespace parser {
- /* copied from postcss -- so we don't need to add a dependency */
- type ErrorOptions = {
- plugin?: string;
- word?: string;
- index?: number
- };
- /* the bits we use of postcss.Rule, copied from postcss -- so we don't need to add a dependency */
- type PostCSSRuleNode = {
- selector: string
- /**
- * @returns postcss.CssSyntaxError but it's a complex object, caller
- * should cast to it if they have a dependency on postcss.
- */
- error(message: string, options?: ErrorOptions): Error;
- };
- /** Accepts a string */
- type Selectors = string | PostCSSRuleNode
- type ProcessorFn<ReturnType = void> = (root: parser.Root) => ReturnType;
- type SyncProcessor<Transform = void> = ProcessorFn<Transform>;
- type AsyncProcessor<Transform = void> = ProcessorFn<PromiseLike<Transform>>;
-
- const TAG: "tag";
- const STRING: "string";
- const SELECTOR: "selector";
- const ROOT: "root";
- const PSEUDO: "pseudo";
- const NESTING: "nesting";
- const ID: "id";
- const COMMENT: "comment";
- const COMBINATOR: "combinator";
- const CLASS: "class";
- const ATTRIBUTE: "attribute";
- const UNIVERSAL: "universal";
-
- interface NodeTypes {
- tag: Tag,
- string: String,
- selector: Selector,
- root: Root,
- pseudo: Pseudo,
- nesting: Nesting,
- id: Identifier,
- comment: Comment,
- combinator: Combinator,
- class: ClassName,
- attribute: Attribute,
- universal: Universal
- }
-
- type Node = NodeTypes[keyof NodeTypes];
-
- function isNode(node: any): node is Node;
-
- interface Options {
- /**
- * Preserve whitespace when true. Default: false;
- */
- lossless: boolean;
- /**
- * When true and a postcss.Rule is passed, set the result of
- * processing back onto the rule when done. Default: false.
- */
- updateSelector: boolean;
- }
- class Processor<
- TransformType = never,
- SyncSelectorsType extends Selectors | never = Selectors
- > {
- res: Root;
- readonly result: String;
- ast(selectors: Selectors, options?: Partial<Options>): Promise<Root>;
- astSync(selectors: SyncSelectorsType, options?: Partial<Options>): Root;
- transform(selectors: Selectors, options?: Partial<Options>): Promise<TransformType>;
- transformSync(selectors: SyncSelectorsType, options?: Partial<Options>): TransformType;
- process(selectors: Selectors, options?: Partial<Options>): Promise<string>;
- processSync(selectors: SyncSelectorsType, options?: Partial<Options>): string;
- }
- interface ParserOptions {
- css: string;
- error: (message: string, options: ErrorOptions) => Error;
- options: Options;
- }
- class Parser {
- input: ParserOptions;
- lossy: boolean;
- position: number;
- root: Root;
- selectors: string;
- current: Selector;
- constructor(input: ParserOptions);
- /**
- * Raises an error, if the processor is invoked on
- * a postcss Rule node, a better error message is raised.
- */
- error(message: string, options?: ErrorOptions): void;
- }
- interface NodeSource {
- start?: {
- line: number,
- column: number
- },
- end?: {
- line: number,
- column: number
- }
- }
- interface SpaceAround {
- before: string;
- after: string;
- }
- interface Spaces extends SpaceAround {
- [spaceType: string]: string | Partial<SpaceAround> | undefined;
- }
- interface NodeOptions<Value = string> {
- value: Value;
- spaces?: Partial<Spaces>;
- source?: NodeSource;
- sourceIndex?: number;
- }
- interface Base<
- Value extends string | undefined = string,
- ParentType extends Container | undefined = Container | undefined
- > {
- type: keyof NodeTypes;
- parent: ParentType;
- value: Value;
- spaces: Spaces;
- source?: NodeSource;
- sourceIndex: number;
- rawSpaceBefore: string;
- rawSpaceAfter: string;
- remove(): Node;
- replaceWith(...nodes: Node[]): Node;
- next(): Node;
- prev(): Node;
- clone(opts: {[override: string]:any}): Node;
- /**
- * Return whether this node includes the character at the position of the given line and column.
- * Returns undefined if the nodes lack sufficient source metadata to determine the position.
- * @param line 1-index based line number relative to the start of the selector.
- * @param column 1-index based column number relative to the start of the selector.
- */
- isAtPosition(line: number, column: number): boolean | undefined;
- /**
- * Some non-standard syntax doesn't follow normal escaping rules for css,
- * this allows the escaped value to be specified directly, allowing illegal characters to be
- * directly inserted into css output.
- * @param name the property to set
- * @param value the unescaped value of the property
- * @param valueEscaped optional. the escaped value of the property.
- */
- setPropertyAndEscape(name: string, value: any, valueEscaped: string): void;
- /**
- * When you want a value to passed through to CSS directly. This method
- * deletes the corresponding raw value causing the stringifier to fallback
- * to the unescaped value.
- * @param name the property to set.
- * @param value The value that is both escaped and unescaped.
- */
- setPropertyWithoutEscape(name: string, value: any): void;
- /**
- * Some non-standard syntax doesn't follow normal escaping rules for css.
- * This allows non standard syntax to be appended to an existing property
- * by specifying the escaped value. By specifying the escaped value,
- * illegal characters are allowed to be directly inserted into css output.
- * @param {string} name the property to set
- * @param {any} value the unescaped value of the property
- * @param {string} valueEscaped optional. the escaped value of the property.
- */
- appendToPropertyAndEscape(name: string, value: any, valueEscaped: string): void;
- toString(): string;
- }
- interface ContainerOptions extends NodeOptions {
- nodes?: Array<Node>;
- }
- interface Container<Value extends string | undefined = string> extends Base<Value> {
- nodes: Array<Node>;
- append(selector: Selector): Container;
- prepend(selector: Selector): Container;
- at(index: number): Node;
- /**
- * Return the most specific node at the line and column number given.
- * The source location is based on the original parsed location, locations aren't
- * updated as selector nodes are mutated.
- *
- * Note that this location is relative to the location of the first character
- * of the selector, and not the location of the selector in the overall document
- * when used in conjunction with postcss.
- *
- * If not found, returns undefined.
- * @param line The line number of the node to find. (1-based index)
- * @param col The column number of the node to find. (1-based index)
- */
- atPosition(line: number, column: number): Node;
- index(child: Node): number;
- readonly first: Node;
- readonly last: Node;
- readonly length: number;
- removeChild(child: Node): Container;
- removeAll(): Container;
- empty(): Container;
- insertAfter(oldNode: Node, newNode: Node): Container;
- insertBefore(oldNode: Node, newNode: Node): Container;
- each(callback: (node: Node) => boolean | void): boolean | undefined;
- walk(callback: (node: Node) => boolean | void): boolean | undefined;
- walkAttributes(callback: (node: Node) => boolean | void): boolean | undefined;
- walkClasses(callback: (node: Node) => boolean | void): boolean | undefined;
- walkCombinators(callback: (node: Node) => boolean | void): boolean | undefined;
- walkComments(callback: (node: Node) => boolean | void): boolean | undefined;
- walkIds(callback: (node: Node) => boolean | void): boolean | undefined;
- walkNesting(callback: (node: Node) => boolean | void): boolean | undefined;
- walkPseudos(callback: (node: Node) => boolean | void): boolean | undefined;
- walkTags(callback: (node: Node) => boolean | void): boolean | undefined;
- split(callback: (node: Node) => boolean): [Node[], Node[]];
- map(callback: (node: Node) => Node): Node[];
- reduce<T>(callback: (node: Node) => Node, memo: T): T;
- every(callback: (node: Node) => boolean): boolean;
- some(callback: (node: Node) => boolean): boolean;
- filter(callback: (node: Node) => boolean): Node[];
- sort(callback: (nodeA: Node, nodeB: Node) => number): Node[];
- toString(): string;
- }
- function isContainer(node: any): node is Root | Selector | Pseudo;
-
- interface NamespaceOptions<Value extends string | undefined = string> extends NodeOptions<Value> {
- namespace?: string | true;
- }
- interface Namespace<Value extends string | undefined = string> extends Base<Value> {
- /** alias for namespace */
- ns: string | true;
- /**
- * namespace prefix.
- */
- namespace: string | true;
- /**
- * If a namespace exists, prefix the value provided with it, separated by |.
- */
- qualifiedName(value: string): string;
- /**
- * A string representing the namespace suitable for output.
- */
- readonly namespaceString: string;
- }
- function isNamespace(node: any): node is Attribute | Tag;
-
- interface Root extends Container<undefined> {
- type: "root";
- /**
- * Raises an error, if the processor is invoked on
- * a postcss Rule node, a better error message is raised.
- */
- error(message: string, options?: ErrorOptions): Error;
- nodeAt(line: number, column: number): Node
- }
- function root(opts: ContainerOptions): Root;
- function isRoot(node: any): node is Root;
-
- interface Selector extends Container {
- type: "selector";
- }
- function selector(opts: ContainerOptions): Selector;
- function isSelector(node: any): node is Selector;
-
- interface Combinator extends Base {
- type: "combinator"
- }
- function combinator(opts: NodeOptions): Combinator;
- function isCombinator(node: any): node is Combinator;
-
- interface ClassName extends Base {
- type: "class";
- }
- function className(opts: NamespaceOptions): ClassName;
- function isClassName(node: any): node is ClassName;
-
- type AttributeOperator = "=" | "~=" | "|=" | "^=" | "$=" | "*=";
- type QuoteMark = '"' | "'" | null;
- interface PreferredQuoteMarkOptions {
- quoteMark?: QuoteMark;
- preferCurrentQuoteMark?: boolean;
- }
- interface SmartQuoteMarkOptions extends PreferredQuoteMarkOptions {
- smart?: boolean;
- }
- interface AttributeOptions extends NamespaceOptions<string | undefined> {
- attribute: string;
- operator?: AttributeOperator;
- insensitive?: boolean;
- quoteMark?: QuoteMark;
- /** @deprecated Use quoteMark instead. */
- quoted?: boolean;
- spaces?: {
- before?: string;
- after?: string;
- attribute?: Partial<SpaceAround>;
- operator?: Partial<SpaceAround>;
- value?: Partial<SpaceAround>;
- insensitive?: Partial<SpaceAround>;
- }
- raws: {
- unquoted?: string;
- attribute?: string;
- operator?: string;
- value?: string;
- insensitive?: string;
- spaces?: {
- attribute?: Partial<Spaces>;
- operator?: Partial<Spaces>;
- value?: Partial<Spaces>;
- insensitive?: Partial<Spaces>;
- }
- };
- }
- interface Attribute extends Namespace<string | undefined> {
- type: "attribute";
- attribute: string;
- operator?: AttributeOperator;
- insensitive?: boolean;
- quoteMark: QuoteMark;
- quoted?: boolean;
- spaces: {
- before: string;
- after: string;
- attribute?: Partial<Spaces>;
- operator?: Partial<Spaces>;
- value?: Partial<Spaces>;
- insensitive?: Partial<Spaces>;
- }
- raws: {
- /** @deprecated The attribute value is unquoted, use that instead.. */
- unquoted?: string;
- attribute?: string;
- operator?: string;
- /** The value of the attribute with quotes and escapes. */
- value?: string;
- insensitive?: string;
- spaces?: {
- attribute?: Partial<Spaces>;
- operator?: Partial<Spaces>;
- value?: Partial<Spaces>;
- insensitive?: Partial<Spaces>;
- }
- };
- /**
- * The attribute name after having been qualified with a namespace.
- */
- readonly qualifiedAttribute: string;
-
- /**
- * The case insensitivity flag or an empty string depending on whether this
- * attribute is case insensitive.
- */
- readonly insensitiveFlag : 'i' | '';
-
- /**
- * Returns the attribute's value quoted such that it would be legal to use
- * in the value of a css file. The original value's quotation setting
- * used for stringification is left unchanged. See `setValue(value, options)`
- * if you want to control the quote settings of a new value for the attribute or
- * `set quoteMark(mark)` if you want to change the quote settings of the current
- * value.
- *
- * You can also change the quotation used for the current value by setting quoteMark.
- **/
- getQuotedValue(options?: SmartQuoteMarkOptions): string;
-
- /**
- * Set the unescaped value with the specified quotation options. The value
- * provided must not include any wrapping quote marks -- those quotes will
- * be interpreted as part of the value and escaped accordingly.
- * @param value
- */
- setValue(value: string, options?: SmartQuoteMarkOptions): void;
-
- /**
- * Intelligently select a quoteMark value based on the value's contents. If
- * the value is a legal CSS ident, it will not be quoted. Otherwise a quote
- * mark will be picked that minimizes the number of escapes.
- *
- * If there's no clear winner, the quote mark from these options is used,
- * then the source quote mark (this is inverted if `preferCurrentQuoteMark` is
- * true). If the quoteMark is unspecified, a double quote is used.
- **/
- smartQuoteMark(options: PreferredQuoteMarkOptions): QuoteMark;
-
- /**
- * Selects the preferred quote mark based on the options and the current quote mark value.
- * If you want the quote mark to depend on the attribute value, call `smartQuoteMark(opts)`
- * instead.
- */
- preferredQuoteMark(options: PreferredQuoteMarkOptions): QuoteMark
-
- /**
- * returns the offset of the attribute part specified relative to the
- * start of the node of the output string.
- *
- * * "ns" - alias for "namespace"
- * * "namespace" - the namespace if it exists.
- * * "attribute" - the attribute name
- * * "attributeNS" - the start of the attribute or its namespace
- * * "operator" - the match operator of the attribute
- * * "value" - The value (string or identifier)
- * * "insensitive" - the case insensitivity flag;
- * @param part One of the possible values inside an attribute.
- * @returns -1 if the name is invalid or the value doesn't exist in this attribute.
- */
- offsetOf(part: "ns" | "namespace" | "attribute" | "attributeNS" | "operator" | "value" | "insensitive"): number;
- }
- function attribute(opts: AttributeOptions): Attribute;
- function isAttribute(node: any): node is Attribute;
-
- interface Pseudo extends Container {
- type: "pseudo";
- }
- function pseudo(opts: ContainerOptions): Pseudo;
- /**
- * Checks wether the node is the Psuedo subtype of node.
- */
- function isPseudo(node: any): node is Pseudo;
-
- /**
- * Checks wether the node is, specifically, a pseudo element instead of
- * pseudo class.
- */
- function isPseudoElement(node: any): node is Pseudo;
-
- /**
- * Checks wether the node is, specifically, a pseudo class instead of
- * pseudo element.
- */
- function isPseudoClass(node: any): node is Pseudo;
-
-
- interface Tag extends Namespace {
- type: "tag";
- }
- function tag(opts: NamespaceOptions): Tag;
- function isTag(node: any): node is Tag;
-
- interface Comment extends Base {
- type: "comment";
- }
- function comment(opts: NodeOptions): Comment;
- function isComment(node: any): node is Comment;
-
- interface Identifier extends Base {
- type: "id";
- }
- function id(opts: any): any;
- function isIdentifier(node: any): node is Identifier;
-
- interface Nesting extends Base {
- type: "nesting";
- }
- function nesting(opts: any): any;
- function isNesting(node: any): node is Nesting;
-
- interface String extends Base {
- type: "string";
- }
- function string(opts: NodeOptions): String;
- function isString(node: any): node is String;
-
- interface Universal extends Base {
- type: "universal";
- }
- function universal(opts?: NamespaceOptions): any;
- function isUniversal(node: any): node is Universal;
-}
diff --git a/assets/node_modules/stylelint-scss/package.json b/assets/node_modules/stylelint-scss/package.json
deleted file mode 100644
index 7f48fd1..0000000
--- a/assets/node_modules/stylelint-scss/package.json
+++ /dev/null
@@ -1,180 +0,0 @@
-{
- "name": "stylelint-scss",
- "description": "A collection of SCSS specific rules for stylelint",
- "version": "3.14.2",
- "author": "Krister Kari",
- "babel": {
- "presets": [
- "@babel/env"
- ]
- },
- "bugs": {
- "url": "https://github.com/kristerkari/stylelint-scss/issues"
- },
- "dependencies": {
- "lodash": "^4.17.15",
- "postcss-media-query-parser": "^0.2.3",
- "postcss-resolve-nested-selector": "^0.1.1",
- "postcss-selector-parser": "^6.0.2",
- "postcss-value-parser": "^4.0.2"
- },
- "devDependencies": {
- "@babel/cli": "^7.8.3",
- "@babel/core": "^7.8.3",
- "@babel/preset-env": "^7.8.3",
- "babel-plugin-istanbul": "^6.0.0",
- "babel-preset-jest": "^25.1.0",
- "eslint": "^6.8.0",
- "eslint-config-stylelint": "^11.1.0",
- "eslint-plugin-lodash": "^6.0.0",
- "github-contributors-list": "^1.2.4",
- "husky": "^4.2.0",
- "jest": "^25.1.0",
- "jest-cli": "^25.1.0",
- "lint-staged": "^10.0.2",
- "npmpub": "^5.0.0",
- "postcss": "^7.0.26",
- "postcss-scss": "^2.0.0",
- "prettier": "^1.19.1",
- "rimraf": "^3.0.0",
- "stylelint": "^13.0.0"
- },
- "peerDependencies": {
- "stylelint": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "eslintConfig": {
- "extends": [
- "eslint:recommended",
- "stylelint"
- ],
- "parserOptions": {
- "sourceType": "module",
- "ecmaVersion": 6
- },
- "env": {
- "es6": true,
- "jest": true,
- "node": true
- },
- "plugins": [
- "lodash"
- ],
- "globals": {
- "testRule": true
- },
- "rules": {
- "eqeqeq": "error",
- "no-use-before-define": [
- "error",
- "nofunc"
- ],
- "sort-requires/sort-requires": "error",
- "strict": [
- "error",
- "global"
- ],
- "arrow-spacing": "error",
- "no-var": "error",
- "object-shorthand": "error",
- "prefer-const": "error",
- "template-curly-spacing": "error",
- "lodash/callback-binding": "error",
- "lodash/collection-method-value": "error",
- "lodash/collection-return": "error",
- "lodash/no-double-unwrap": "error",
- "lodash/no-extra-args": "error",
- "lodash/no-unbound-this": "error",
- "lodash/unwrap": "error",
- "lodash/preferred-alias": "error",
- "node/no-unsupported-features/es-syntax": [
- "error",
- {
- "version": ">=8.0.0",
- "ignores": [
- "modules"
- ]
- }
- ]
- }
- },
- "files": [
- "dist",
- "docs",
- "src/**/README.md",
- "!**/__tests__"
- ],
- "homepage": "https://github.com/kristerkari/stylelint-scss#readme",
- "keywords": [
- "css",
- "csslint",
- "lint",
- "linter",
- "stylelint",
- "stylelint-plugin"
- ],
- "license": "MIT",
- "main": "dist/index.js",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/kristerkari/stylelint-scss.git"
- },
- "jest": {
- "clearMocks": true,
- "collectCoverage": false,
- "collectCoverageFrom": [
- "src/**/*.js",
- "!src/testUtils/*.js"
- ],
- "coverageDirectory": "./.coverage/",
- "coverageReporters": [
- "lcov",
- "text"
- ],
- "coverageThreshold": {
- "global": {
- "branches": 75,
- "functions": 75,
- "lines": 75,
- "statements": 75
- }
- },
- "setupFiles": [
- "./jest-setup.js"
- ],
- "testEnvironment": "node",
- "roots": [
- "src"
- ],
- "testRegex": ".*\\.test\\.js$|src/.*/__tests__/.*\\.js$",
- "transform": {
- "^.+\\.jsx?$": "./babel-jest.js"
- }
- },
- "scripts": {
- "prebuild": "rimraf dist",
- "build": "babel src --out-dir dist",
- "lint": "eslint . --ignore-path .gitignore",
- "prettify": "prettier --write \"src/**/*.js\"",
- "prepublishOnly": "npm run build",
- "pretest": "npm run lint",
- "release": "npmpub",
- "jest": "jest",
- "test": "npm run jest -- --coverage",
- "watch": "npm run jest -- --watch",
- "test-rule": "npm run jest",
- "test-util": "npm run jest"
- },
- "lint-staged": {
- "**/*.{js,json}": [
- "prettier --write"
- ]
- },
- "husky": {
- "hooks": {
- "pre-commit": "lint-staged"
- }
- }
-}
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-each-key-value-single-line/README.md b/assets/node_modules/stylelint-scss/src/rules/at-each-key-value-single-line/README.md
deleted file mode 100644
index 0483d27..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-each-key-value-single-line/README.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# at-each-key-value-single-line
-
-This is a rule that checks for situations where users have:
-
-- Done a loop using map-keys
-- Grabbed the value for that key inside of the loop.
-
-```scss
-$font-weights: (
- "regular": 400,
- "medium": 500,
- "bold": 700
-);
-@each $key in map-keys($font-weights) {
- $value: map-get($font-weights, $key);
- /** ↑
- * This call should be consolidated into the @each call.
- **/
-}
-```
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```scss
-$font-weights: (
- "regular": 400,
- "medium": 500,
- "bold": 700
-);
-@each $key in map-keys($font-weights) {
- $value: map-get($font-weights, $key);
-}
-```
-
-The following patterns are _not_ considered violations:
-
-```scss
-$font-weights: ("regular": 400, "medium": 500, "bold": 700);
-@each $key, $value in $font-weights {...}
-```
-
-```scss
-$font-weights: (
- "regular": 400,
- "medium": 500,
- "bold": 700
-);
-$other-weights: (
- "regular": 400,
- "medium": 500,
- "bold": 700
-);
-
-@each $key, $value in map-keys($font-weights) {
- $value: map-get($other-weights, $key);
-}
-```
-
-```scss
-$font-weights: ("regular": 400, "medium": 500, "bold": 700);
-
-@each $key, $value in map-keys($font-weights) {...}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-else-closing-brace-newline-after/README.md b/assets/node_modules/stylelint-scss/src/rules/at-else-closing-brace-newline-after/README.md
deleted file mode 100644
index e5e2d7f..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-else-closing-brace-newline-after/README.md
+++ /dev/null
@@ -1,74 +0,0 @@
-# at-else-closing-brace-newline-after
-
-Require or disallow a newline after the closing brace of `@else` statements.
-
-```scss
-@if (@a == 0) {
-
-} @else if (@a == 1){ }
-@else { } ↑
-/** ↑ ↑
- * The newline after these braces */
-```
-
-The `--fix` option on the [command line](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-This rule might have conflicts with stylelint's core rule [`block-closing-brace-newline-after`](https://stylelint.io/user-guide/rules/block-closing-brace-newline-after) if it doesn't have `"ignoreAtRules": ["else"]` in a `.stylelintrc` config file. That's because an `@else { ... }` statement can be successfully parsed as an at-rule with a block. You might also want to set `"ignoreAtRules": ["else"]` for another stylelint's core rule - [`at-rule-empty-line-before`](https://stylelint.io/user-guide/rules/at-rule-empty-line-before) that could be forcing empty lines before at-rules (including `@else`s that follow `@if`s or other `@else`s).
-
-This rule doesn't have usual `"always"` and `"never"` main option values, because if you don't need special behavior for `@if` and `@else` you could just use [`block-closing-brace-newline-after`](https://stylelint.io/user-guide/rules/block-closing-brace-newline-after) set to `"always"` or any other value.
-
-## Options
-
-`string`: `"always-last-in-chain"`
-
-### `"always-last-in-chain"`
-
-There *must always* be a newline after the closing brace of `@else` that is the last statement in a conditional statement chain (i.e. has no `@else` right after it). If it's not, there *must not* be a newline.
-
-The following patterns are considered warnings:
-
-```scss
-a {
- @if ($x == 1) {
- // ...
- } @else {
- // ...
- } width: 10px; // No @else after, so should have a newline
-}
-
-@if ($x == 1) {
- // ...
-} @else if { } // Has @else after it, so shouldn't have a newline
-@else { }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- @if ($x == 1) {} @else {}
- width: 10px;
-}
-
-a {
- @if ($x == 1) {
- // ...
- } @else if {
- // ...
- } @else {}
-
- width: 10px;
-}
-
-a {
- @if ($x == 1) { } @else if { }@else { }
-
- width: 10px;
-}
-```
-
-## Optional secondary options
-
-### `disableFix: true`
-
-Disables autofixing for this rule.
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-else-closing-brace-space-after/README.md b/assets/node_modules/stylelint-scss/src/rules/at-else-closing-brace-space-after/README.md
deleted file mode 100644
index 720deaa..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-else-closing-brace-space-after/README.md
+++ /dev/null
@@ -1,131 +0,0 @@
-# at-else-closing-brace-space-after
-
-Require a single space or disallow whitespace after the closing brace of `@else` statements.
-
-```scss
-@if ($a == 0) { }
-@else if ($x == 2) { }
- ↑
-/** ↑
- * The space after this brace */
-```
-
-The `--fix` option on the [command line](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-This rule might have conflicts with stylelint's core [`block-closing-brace-space-after`](https://stylelint.io/user-guide/rules/block-closing-brace-space-after) rule if the latter is set up in your `.stylelintrc` config file.
-
-## Options
-
-`string`: `"always-intermediate"|"never-intermediate"`
-
-### `"always-intermediate"`
-
-There *must always* be a single space after the closing brace of `@else` that is not the last statement in a conditional statement chain (i.e. does have another `@else` right after it).
-
-The following patterns are considered warnings:
-
-```scss
-@if ($x == 1) {
- // ...
-} @else if ($x == 2) {
- // ...
-}@else {}
-
-@if ($x == 1) {
- // ...
-} @else if ($x == 2) {
- // ...
-}
-@else { }
-
-// `@else if` has a space and a newline after the closing brace
-@if ($x == 1) {
- // ...
-} @else if ($x == 2) {
- // ...
-}
-@else { }
-
-@if ($x == 1) {
- // ...
-} @else if ($x == 2) {
- // ...
-} @else { } // Two spaces
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@if ($x == 1) {
- // ...
-} @else if ($x == 2) {
- // ...
-} @else {}
-
-a {
- @if ($x == 1) {
- // ...
- } @else ($x == 2) {
- // ...
- }
- width: 10px;
-}
-
-@if ($x == 1) { } @else if ($x == 2) {
- // ...
-} @include x;
-
-@if ($x == 1) {
- // ...
-} @else if ($x == 2) {
- // ...
-} @include x;
-```
-
-### `"never-intermediate"`
-
-There *must never* be a whitespace after the closing brace of `@else` that is not the last statement in a conditional statement chain (i.e. does have another `@else` right after it).
-
-The following patterns are considered warnings:
-
-```scss
-@if ($x == 1) {
- // ...
-} @else if ($x == 2) {
- // ...
-} @else {}
-
-@if ($x == 1) {
- // ...
-} @else if ($x == 2) {
- // ...
-}
-@else { }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@if ($x == 1) {
- // ...
-}@else {}
-
-a {
- @if ($x == 1) {
- // ...
- } @else if ($x == 2) {
- // ...
- }
- width: 10px;
-}
-
-@if ($x == 1) { } @else if ($x == 2) {
- // ...
-}@include x;
-
-@if ($x == 1) {
- // ...
-} @else if ($x == 2) {
- // ...
-} @include x;
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-else-empty-line-before/README.md b/assets/node_modules/stylelint-scss/src/rules/at-else-empty-line-before/README.md
deleted file mode 100644
index 9961fe6..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-else-empty-line-before/README.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# at-else-empty-line-before
-
-Require an empty line or disallow empty lines before `@`-else.
-
-```scss
-@if ($a == 0) { }
- /* ← */
-@else if ($x == 2) { } ↑
- ↑
-/** ↑
- * This empty line */
-```
-
-The `--fix` option on the [command line](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-`@if` and `@else` statements might need to have different behavior than all the other at-rules. For that you might need to set `"ignoreAtRules": ["else"]` for stylelint's core rule [`at-rule-empty-line-before`](https://stylelint.io/user-guide/rules/at-rule-empty-line-before). But that would make you unable to disallow empty lines before `@else` while forcing it to be on a new line. This rule is designed to solve exactly that.
-
-## Options
-
-`string`: `"never"`
-
-There is no `"always"`, `"always-single-line"` options, because for such cases stylelint's `at-rule-empty-line-before` would work.
-
-### `"never"`
-
-There *must never* be an empty line before `@else` statements.
-
-The following patterns are considered warnings:
-
-```scss
-@if ($x == 1) {
- // ...
-}
-
-@else {}
-```
-```scss
-@if ($x == 1) {
- // ...
-} @else if ($x == 2) {
- // ...
-}
-
-
-@else { }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@if ($x == 1) {
- // ...
-} @else if ($x == 2) {
- // ...
-} @else {}
-
-a {
- @if ($x == 1) {
- // ...
- }
- @else ($x == 2) {
- // ...
- }
-}
-```
-
-## Caveats
-
-If you use autofix, this rule could clash with [`at-mixin-parentheses-space-before`](https://github.com/kristerkari/stylelint-scss/tree/master/src/rules/at-mixin-parentheses-space-before) rule.
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-else-if-parentheses-space-before/README.md b/assets/node_modules/stylelint-scss/src/rules/at-else-if-parentheses-space-before/README.md
deleted file mode 100644
index b56af2b..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-else-if-parentheses-space-before/README.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# at-else-if-parentheses-space-before
-
-Require or disallow a space before `@else if` parentheses.
-
-```scss
-@else if ($condition) { }
-/** ↑
- * The space before this parenthesis */
-```
-
-The `--fix` option on the [command line](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be exactly one space between the `@else if` and the condition opening parenthesis.
-
-*Note: This rule does not enforce parentheses to be present.*
-
-The following patterns are considered warnings:
-
-```scss
-@else if($condition) { }
-```
-```scss
-@else if ($condition) { }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@else if ($condition) { }
-```
-```scss
-@else if $condition { }
-```
-
-### `"never"`
-
-There *must never* be whitespace between the `@else if` and the condition opening parenthesis.
-
-The following patterns are considered warnings:
-
-```scss
-@else if ($condition) { }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@else if($condition) { }
-```
-```scss
-@else if $condition { }
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-extend-no-missing-placeholder/README.md b/assets/node_modules/stylelint-scss/src/rules/at-extend-no-missing-placeholder/README.md
deleted file mode 100644
index b4f4c91..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-extend-no-missing-placeholder/README.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# at-extend-no-missing-placeholder
-
-Disallow at-extends (`@extend`) with missing placeholders.
-
-Using a class selector with the `@extend` directive usually results in more generated CSS than when using a placeholder selector. Furthermore, Sass specifically introduced placeholder selectors in order to be used with `@extend`.
-
-See [Mastering Sass extends and placeholders](http://8gramgorilla.com/mastering-sass-extends-and-placeholders/).
-
-```scss
-.foo {
- @extend %bar
-// ↑
-// This is a placeholder selector
-}
-```
-
-The following patterns are considered warnings:
-
-```scss
-p {
- @extend .some-class;
-}
-```
-
-```scss
-p {
- @extend #some-identifer;
-}
-```
-
-```scss
-p {
- @extend .blah-#{$dynamically_generated_name};
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-p {
- @extend %placeholder;
-}
-```
-
-```scss
-p {
- @extend #{$dynamically_generated_placeholder_name};
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-function-named-arguments/README.md b/assets/node_modules/stylelint-scss/src/rules/at-function-named-arguments/README.md
deleted file mode 100644
index 9ed7101..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-function-named-arguments/README.md
+++ /dev/null
@@ -1,131 +0,0 @@
-# at-function-named-arguments
-
-Require named parameters in SCSS function call rule.
-
-```scss
-animation: animation($duration: 250ms) {
-// ↑
-// Require or disallow this
-```
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `always`
-
-The following patterns are considered warnings:
-
-```scss
-.foo {
- animation: animation(250ms, 100ms, infinite);
-}
-```
-
-```scss
-.foo {
- animation: animation(250ms);
-}
-```
-
-```scss
-.foo {
- border: reset($value: 20, "bar", $color: #fff);
-}
-```
-
-The following patterns are _not_ considered warnings:
-
-```scss
-.foo {
- animation: animation($duration: 250ms);
-}
-```
-
-```scss
-.foo {
- animation: animation($duration: 250ms, $delay: 100ms, $direction: infinite);
-}
-```
-
-### `never`
-
-The following patterns are considered warnings:
-
-```scss
-.foo {
- border: reset($value: 20);
-}
-```
-
-```scss
-.foo {
- animation: animation($duration: 250ms, $delay: 100ms, $direction: infinite);
-}
-```
-
-```scss
-.foo {
- border: reset($value: 20, "bar", $color: #fff);
-}
-```
-
-The following patterns are _not_ considered warnings:
-
-```scss
-.foo {
- animation: animation(250ms, 100ms, infinite);
-}
-```
-
-## Optional secondary options
-
-### `"ignore": ["single-argument"]`
-
-Given:
-
-```json
-{ "ignore": ["single-argument"] }
-```
-
-The following patterns are _not_ considered warnings:
-
-```scss
-.foo {
- @include animation($duration: 250ms);
-}
-```
-
-```scss
-.foo {
- @include reset(20);
-}
-```
-
-### `ignoreFunctions: ["/regex/", "string"]`
-
-Given:
-
-```js
-["always", { ignoreFunctions: ["/^my-/i", "custom"] }];
-```
-
-The following patterns are _not_ considered warnings:
-
-```scss
-.foo {
- border: custom(20, 30);
-}
-```
-
-```scss
-.foo {
- border: my-func(20, 30);
-}
-```
-
-```scss
-.foo {
- border: MY-FUNC(20, 30);
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-function-parentheses-space-before/README.md b/assets/node_modules/stylelint-scss/src/rules/at-function-parentheses-space-before/README.md
deleted file mode 100644
index 9d4d362..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-function-parentheses-space-before/README.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# at-function-parentheses-space-before
-
-Require or disallow a space before `@function` parentheses.
-
-```scss
-@function foo ($arg) { }
-/** ↑
- * The space before this parenthesis */
-```
-
-The `--fix` option on the [command line](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be exactly one space between the function name and the opening parenthesis.
-
-The following patterns are considered warnings:
-
-```scss
-@function foo($arg) { }
-```
-```scss
-@function foo ($arg) { }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@function foo ($arg) { }
-```
-
-### `"never"`
-
-There *must never* be any whitespace between the function name and the opening parenthesis.
-
-The following patterns are considered warnings:
-
-```scss
-@function foo ($arg) { }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@function foo($arg) { }
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-function-pattern/README.md b/assets/node_modules/stylelint-scss/src/rules/at-function-pattern/README.md
deleted file mode 100644
index 0aaf58e..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-function-pattern/README.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# at-function-pattern
-
-Specify a pattern for Sass/SCSS-like function names.
-
-```scss
-@function grid-width($n) {
-/** ↑
- * The pattern of this */
-```
-
-## Options
-
-`regex` or `string`
-
-A string will be translated into a RegExp like so `new RegExp(yourString)` — so be sure to escape properly.
-
-### E.g. `/foo-.+/`
-
-The following patterns are considered warnings:
-
-```scss
-@function boo-bar ($n) {
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@function foo-bar ($n){
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-if-closing-brace-newline-after/README.md b/assets/node_modules/stylelint-scss/src/rules/at-if-closing-brace-newline-after/README.md
deleted file mode 100644
index 79f79b0..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-if-closing-brace-newline-after/README.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# at-if-closing-brace-newline-after
-
-Require or disallow a newline after the closing brace of `@if` statements.
-
-```scss
-@if ($a == 0) { }
- ↑
-/** ↑
- * The newline after this brace */
-```
-
-The `--fix` option on the [command line](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-This rule might have conflicts with stylelint's core rule [`block-closing-brace-newline-after`](https://stylelint.io/user-guide/rules/block-closing-brace-newline-after) if it doesn't have `"ignoreAtRules": ["if"]` in a `.stylelintrc` config file. That's because an `@if { ... }` statement can be successfully parsed as an at-rule with a block. You might also want to set `"ignoreAtRules": ["else"]` for another stylelint's core rule - [`at-rule-empty-line-before`](https://stylelint.io/user-guide/rules/at-rule-empty-line-before) that could be forcing empty lines before at-rules (including `@else`s that follow `@if`s or other `@else`s).
-
-This rule doesn't have usual `"always"` and `"never"` main option values, because if you don't need special behavior for `@if` and `@else` you could just use [`block-closing-brace-newline-after`](https://stylelint.io/user-guide/rules/block-closing-brace-newline-after) set to `"always"` or any other value.
-
-## Options
-
-`string`: `"always-last-in-chain"`
-
-### `"always-last-in-chain"`
-
-There *must always* be a newline after the closing brace of `@if` that is the last statement in a conditional statement chain (i.e. has no `@else` right after it). If it's not, there *must not* be a newline.
-
-The following patterns are considered warnings:
-
-```scss
-a {
- @if ($x == 1) {
- // ...
- } width: 10px; // No @else - should have a newline
-}
-
-@if ($x == 1) {
- // ...
-} // Has @else - shouldn't have a newline
-@else { }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- @if ($x == 1) {}
- width: 10px;
-}
-
-@if ($x == 1) {
- // ...
-} @else {} // Has @else, so no newline needed
-
-@if ($x == 1) { }@else { }
-```
-
-## Optional secondary options
-
-### `disableFix: true`
-
-Disables autofixing for this rule.
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-if-closing-brace-space-after/README.md b/assets/node_modules/stylelint-scss/src/rules/at-if-closing-brace-space-after/README.md
deleted file mode 100644
index de93f77..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-if-closing-brace-space-after/README.md
+++ /dev/null
@@ -1,100 +0,0 @@
-# at-if-closing-brace-space-after
-
-Require a single space or disallow whitespace after the closing brace of `@if` statements.
-
-```scss
-@if ($a == 0) { }
- ↑
-/** ↑
- * The space after this brace */
-```
-
-The `--fix` option on the [command line](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-This rule might have conflicts with stylelint's core [`block-closing-brace-space-after`](https://stylelint.io/user-guide/rules/block-closing-brace-space-after) rule if the latter is set up in your `.stylelintrc` config file.
-
-## Options
-
-`string`: `"always-intermediate"|"never-intermediate"`
-
-### `"always-intermediate"`
-
-There *must always* be a single space after the closing brace of `@if` that is not the last statement in a conditional statement chain (i.e. does have `@else` right after it).
-
-The following patterns are considered warnings:
-
-```scss
-@if ($x == 1) {
- // ...
-}@else {}
-
-@if ($x == 1) {
- // ...
-}
-@else { }
-
-// `@if` has a space and a newline after the closing brace
-@if ($x == 1) {
- // ...
-}
-@else { }
-
-@if ($x == 1) {
- // ...
-} @else { } // Two spaces
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@if ($x == 1) {
- // ...
-} @else {}
-
-a {
- @if ($x == 1) {}
- width: 10px;
-}
-
-@if ($x == 1) { }@include x;
-
-@if ($x == 1) {
- // ...
-} @include x;
-```
-
-### `"never-intermediate"`
-
-There *must never* be a whitespace after the closing brace of `@if` that is not the last statement in a conditional statement chain (i.e. does have `@else` right after it).
-
-The following patterns are considered warnings:
-
-```scss
-@if ($x == 1) {
- // ...
-} @else {}
-
-@if ($x == 1) {
- // ...
-}
-@else { }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@if ($x == 1) {
- // ...
-}@else {}
-
-a {
- @if ($x == 1) {}
- width: 10px;
-}
-
-@if ($x == 1) { }@include x;
-
-@if ($x == 1) {
- // ...
-} @include x;
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-if-no-null/README.md b/assets/node_modules/stylelint-scss/src/rules/at-if-no-null/README.md
deleted file mode 100644
index 66a1edb..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-if-no-null/README.md
+++ /dev/null
@@ -1,44 +0,0 @@
-# at-if-no-null
-
-Check for equality to null is unnecessarily explicit since `null` is falsey in Sass.
-
-```scss
-a {
- @if $x == null {}
-/** ↑ ↑
- * == or != null is unncessary */
-}
-```
-
-## Options
-
-true
-
-### `true`
-
-The following patterns are considered warnings:
-```scss
-a {
- @if $x == null {}
-}
-```
-
-```scss
-a {
- @if $x != null {}
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- @if $x {}
-}
-```
-
-```scss
-a {
- @if not $x {}
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-import-no-partial-leading-underscore/README.md b/assets/node_modules/stylelint-scss/src/rules/at-import-no-partial-leading-underscore/README.md
deleted file mode 100644
index a12c207..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-import-no-partial-leading-underscore/README.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# at-import-no-partial-leading-underscore
-
-Disallow leading underscore in partial names in `@import`.
-
-```scss
-@import "path/to/_file"
-/** ↑
- * Disallow this */
-```
-
-The rule ignores [cases](https://sass-lang.com/documentation/at-rules/import) when Sass considers an `@import` command just a plain CSS import:
-
-* If the file’s extension is `.css`.
-* If the filename begins with `http://` (or any other protocol).
-* If the filename is a `url()`.
-* If the `@import` has any media queries.
-
-
-The following patterns are considered warnings:
-
-```scss
-@import "_foo";
-```
-
-```scss
-@import "path/_fff";
-```
-
-```scss
-@import "path\\_fff"; /* Windows delimiters */
-```
-
-```scss
-@import "df/fff", '_1.scss';
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@import "_path/fff"; /* underscore in a directory name, not in a partial name */
-```
-
-```scss
-@import url("path/_file.css"); /* has url(), so doesn't count as a partial @import */
-```
-
-```scss
-@import "_file.css"; /* Has ".css" extension, so doesn't count as a partial @import */
-```
-
-```scss
-/* Both are URIs, so don't count as partial @imports */
-@import "http://_file.scss";
-@import "//_file.scss";
-```
-
-```scss
-@import "_file.scss" screen; /* Has a media query, so doesn't count as a partial @import */
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-import-partial-extension-blacklist/README.md b/assets/node_modules/stylelint-scss/src/rules/at-import-partial-extension-blacklist/README.md
deleted file mode 100644
index 11b9c0a..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-import-partial-extension-blacklist/README.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# at-import-partial-extension-blacklist
-
-Specify blacklist of disallowed file extensions for partial names in `@import` commands.
-
-```scss
-@import "file.scss"
-/** ↑
- * Blacklist of these */
-```
-
-The rule ignores [cases](https://sass-lang.com/documentation/at-rules/import) when Sass considers an `@import` command just a plain CSS import:
-
-* If the file’s extension is `.css`.
-* If the filename begins with `http://` (or any other protocol).
-* If the filename is a `url()`.
-* If the `@import` has any media queries.
-
-## Options
-
-`array`: `["array", "of", "extensions"]`
-
-Each value is either a string or a regexp.
-
-Given:
-
-```js
-["scss", /less/]
-```
-
-The following patterns are considered warnings:
-
-```scss
-@import "foo.scss";
-```
-
-```scss
-@import "path/fff.less";
-```
-
-```scss
-@import "path\\fff.ruthless";
-```
-
-```scss
-@import "df/fff", '1.SCSS';
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@import "path/fff";
-```
-
-```scss
-@import url("path/_file.css"); /* has url(), so doesn't count as a partial @import */
-```
-
-```scss
-@import "file.css"; /* Has ".css" extension, so doesn't count as a partial @import */
-```
-
-```scss
-/* Both are URIs, so don't count as partial @imports */
-@import "http://_file.scss";
-@import "//_file.scss";
-```
-
-```scss
-@import "file.scss" screen; /* Has a media query, so doesn't count as a partial @import */
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-import-partial-extension-whitelist/README.md b/assets/node_modules/stylelint-scss/src/rules/at-import-partial-extension-whitelist/README.md
deleted file mode 100644
index 58cbd56..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-import-partial-extension-whitelist/README.md
+++ /dev/null
@@ -1,78 +0,0 @@
-# at-import-partial-extension-whitelist
-
-Specify whitelist of allowed file extensions for partial names in `@import` commands.
-
-```scss
-@import "file.scss"
-/** ↑
- * Whitelist of these */
-```
-
-The rule ignores [cases](https://sass-lang.com/documentation/at-rules/import) when Sass considers an `@import` command just a plain CSS import:
-
-* If the file’s extension is `.css`.
-* If the filename begins with `http://` (or any other protocol).
-* If the filename is a `url()`.
-* If the `@import` has any media queries.
-
-## Options
-
-`array`: `["array", "of", "extensions"]`
-
-Each value is either a string or a regexp.
-
-Given:
-
-```js
-["scss", /less/]
-```
-
-The following patterns are considered warnings:
-
-```scss
-@import "file.sass";
-```
-
-```scss
-@import "file1", "file.stylus";
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@import "path/fff";
-```
-
-```scss
-@import "foo.scss";
-```
-
-```scss
-@import "path/fff.less";
-```
-
-```scss
-@import "path\\fff.ruthless";
-```
-
-```scss
-@import "df/fff", '1.SCSS';
-```
-
-```scss
-@import url("path/_file.css"); /* has url(), so doesn't count as a partial @import */
-```
-
-```scss
-@import "file.css"; /* Has ".css" extension, so doesn't count as a partial @import */
-```
-
-```scss
-/* Both are URIs, so don't count as partial @imports */
-@import "http://_file.scss";
-@import "//_file.scss";
-```
-
-```scss
-@import "file.scss" screen; /* Has a media query, so doesn't count as a partial @import */
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-import-partial-extension/README.md b/assets/node_modules/stylelint-scss/src/rules/at-import-partial-extension/README.md
deleted file mode 100644
index 56603f5..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-import-partial-extension/README.md
+++ /dev/null
@@ -1,116 +0,0 @@
-# at-import-partial-extension
-
-Require or disallow extension in `@import` commands.
-
-```scss
-@import "file.scss";
-/** ↑
- * This extension */
-```
-
-The rule ignores [cases](https://sass-lang.com/documentation/at-rules/import) when Sass considers an `@import` command just a plain CSS import:
-
-- If the file’s extension is `.css`.
-- If the filename begins with `http://` (or any other protocol).
-- If the filename is a `url()`.
-- If the `@import` has any media queries.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-The following patterns are considered warnings:
-
-```scss
-@import "foo";
-```
-
-```scss
-@import "path/fff";
-```
-
-```scss
-@import "path\\fff";
-```
-
-```scss
-@import "df/fff", "1.SCSS";
-```
-
-The following patterns are _not_ considered warnings:
-
-```scss
-@import "fff.scss";
-```
-
-```scss
-@import "path/fff.scss";
-```
-
-```scss
-@import url("path/_file.css"); /* has url(), so doesn't count as a partial @import */
-```
-
-```scss
-@import "file.css"; /* Has ".css" extension, so doesn't count as a partial @import */
-```
-
-```scss
-/* Both are URIs, so don't count as partial @imports */
-@import "http://_file.scss";
-@import "//_file.scss";
-```
-
-```scss
-@import "file.scss" screen; /* Has a media query, so doesn't count as a partial @import */
-```
-
-### `"never"`
-
-The following patterns are considered warnings:
-
-```scss
-@import "foo.scss";
-```
-
-```scss
-@import "path/fff.less";
-```
-
-```scss
-@import "path\\fff.ruthless";
-```
-
-```scss
-@import "df/fff", "1.SCSS";
-```
-
-The following patterns are _not_ considered warnings:
-
-```scss
-@import "foo";
-```
-
-```scss
-@import "path/fff";
-```
-
-```scss
-@import url("path/_file.css"); /* has url(), so doesn't count as a partial @import */
-```
-
-```scss
-@import "file.css"; /* Has ".css" extension, so doesn't count as a partial @import */
-```
-
-```scss
-/* Both are URIs, so don't count as partial @imports */
-@import "http://_file.scss";
-@import "//_file.scss";
-```
-
-```scss
-@import "file.scss" screen; /* Has a media query, so doesn't count as a partial @import */
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-mixin-argumentless-call-parentheses/README.md b/assets/node_modules/stylelint-scss/src/rules/at-mixin-argumentless-call-parentheses/README.md
deleted file mode 100644
index 0ee3d05..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-mixin-argumentless-call-parentheses/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# at-mixin-argumentless-call-parentheses
-
-Require or disallow parentheses in argumentless `@mixin` calls.
-
-```scss
-@include mixin-name() {
-/** ↑
- * Such mixin calls */
-```
-
-The `--fix` option on the [command line](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be parentheses in mixin calls, even if no arguments are passed.
-
-The following patterns are considered warnings:
-
-```scss
-@include mixin-name;
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@include mixin-name();
-```
-
-### `"never"`
-
-There *must never* be parentheses when calling a mixin without arguments.
-
-The following patterns are considered warnings:
-
-```scss
-@include mixin-name();
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@include mixin-name;
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-mixin-named-arguments/README.md b/assets/node_modules/stylelint-scss/src/rules/at-mixin-named-arguments/README.md
deleted file mode 100644
index 4eafe20..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-mixin-named-arguments/README.md
+++ /dev/null
@@ -1,102 +0,0 @@
-# at-mixin-named-arguments
-
-Require named parameters in at-mixin call rule.
-
-```scss
-@include animation($duration: 250ms) {
-// ↑
-// Require or disallow this
-```
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `always`
-
-The following patterns are considered warnings:
-
-```scss
-.foo {
- @include animation(250ms, 100ms, infinite);
-}
-```
-
-```scss
-.foo {
- @include animation(250ms);
-}
-```
-
-```scss
-.foo {
- @include reset($value: 20, 'bar', $color: #FFF);
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-.foo {
- @include animation($duration: 250ms);
-}
-```
-
-```scss
-.foo {
- @include animation($duration: 250ms, $delay: 100ms, $direction: infinite);
-}
-```
-
-### `never`
-
-The following patterns are considered warnings:
-
-```scss
-.foo {
- @include reset($value: 20);
-}
-```
-
-```scss
-.foo {
- @include animation($duration: 250ms, $delay: 100ms, $direction: infinite);
-}
-```
-
-```scss
-.foo {
- @include reset($value: 20, 'bar', $color: #FFF);
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-.foo {
- @include animation(250ms, 100ms, infinite);
-}
-```
-
-## Optional secondary options
-
-### `"ignore": ["single-argument"]`
-
-Given:
-```json
-{ "ignore": ["single-argument"] }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-.foo {
- @include animation($duration: 250ms);
-}
-```
-
-```scss
-.foo {
- @include reset(20);
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-mixin-parentheses-space-before/README.md b/assets/node_modules/stylelint-scss/src/rules/at-mixin-parentheses-space-before/README.md
deleted file mode 100644
index 39253ab..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-mixin-parentheses-space-before/README.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# at-mixin-parentheses-space-before
-
-Require or disallow a space before `@mixin` parentheses.
-
-```scss
-@mixin foo ($arg) { }
-/** ↑
- * The space before this parenthesis */
-```
-
-The `--fix` option on the [command line](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be exactly one space between the mixin name and the opening parenthesis.
-
-*Note: This rule does not enforce parentheses to be present in a declaration without arguments.*
-
-The following patterns are considered warnings:
-
-```scss
-@mixin foo($arg) { }
-```
-```scss
-@mixin foo ($arg) { }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@mixin foo ($arg) { }
-```
-```scss
-@mixin foo { }
-```
-
-### `"never"`
-
-There *must never* be any whitespace between the mixin name and the opening parenthesis.
-
-The following patterns are considered warnings:
-
-```scss
-@mixin foo ($arg) { }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@mixin foo($arg) { }
-```
-```scss
-@mixin foo { }
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-mixin-pattern/README.md b/assets/node_modules/stylelint-scss/src/rules/at-mixin-pattern/README.md
deleted file mode 100644
index 786b2f0..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-mixin-pattern/README.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# at-mixin-pattern
-
-Specify a pattern for Sass/SCSS-like mixin names.
-
-```scss
-@mixin complex-object ($items: 10) {
-/** ↑
- * The pattern of this */
-```
-
-## Options
-
-`regex` or `string`
-
-A string will be translated into a RegExp like so `new RegExp(yourString)` — so be sure to escape properly.
-
-### E.g. `/foo-.+/`
-
-The following patterns are considered warnings:
-
-```scss
-@mixin boo-bar {
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@mixin foo-bar {
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-rule-conditional-no-parentheses/README.md b/assets/node_modules/stylelint-scss/src/rules/at-rule-conditional-no-parentheses/README.md
deleted file mode 100644
index cc981f3..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-rule-conditional-no-parentheses/README.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# at-rule-conditional-no-parentheses
-
-Disallow parentheses in conditional @ rules (if, elsif, while)
-
-```css
- @if (true) {}
-/** ↑ ↑
- * Get rid of parentheses like this. */
-```
-
-
-
-## Options
-
-### `true`
-
-The following patterns are considered warnings:
-
-```scss
-@if(true)
-```
-
-```scss
-@else if(true)
-```
-
-```scss
-@while(true)
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@if true
-```
-
-```scss
-@else if true
-```
-
-```scss
-@while true
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/at-rule-no-unknown/README.md b/assets/node_modules/stylelint-scss/src/rules/at-rule-no-unknown/README.md
deleted file mode 100644
index 3b0932e..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/at-rule-no-unknown/README.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# at-rule-no-unknown
-
-Disallow unknown at-rules. Should be used **instead of** stylelint's [at-rule-no-unknown](https://stylelint.io/user-guide/rules/at-rule-no-unknown).
-
-```css
- @unknown (max-width: 960px) {}
-/** ↑
- * At-rules like this */
-```
-
-This rule is basically a wrapper around the mentioned core rule, but with added SCSS-specific `@`-directives. So if you use the core rule, `@if`, `@extend` and other Sass-y things will get warnings. You must disable stylelint's core rule to make this rule work:
-
-```json
-{
- "rules": {
- "at-rule-no-unknown": null,
- "scss/at-rule-no-unknown": true
- }
-}
-```
-
-## Options
-
-### `true`
-
-The following patterns are considered warnings:
-
-```css
-@unknown {}
-```
-
-The following patterns are *not* considered warnings:
-
-```css
-@function foo () {}
-```
-
-```css
-@while ($i == 1) {}
-```
-
-```css
-@media (max-width: 960px) {}
-```
-
-```css
-@if ($i) {} @else {}
-```
-
-## Optional secondary options
-
-### `ignoreAtRules: ["/regex/", "string"]`
-
-Given:
-
-```js
-["/^my-/i", "custom"]
-```
-
-The following patterns are *not* considered warnings:
-
-```css
-@my-at-rule "x.css";
-```
-
-```css
-@my-other-at-rule {}
-```
-
-```css
-@MY-OTHER-AT-RULE {}
-```
-
-```css
-@custom {}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/comment-no-loud/README.md b/assets/node_modules/stylelint-scss/src/rules/comment-no-loud/README.md
deleted file mode 100644
index c75232e..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/comment-no-loud/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# comment-no-loud
-
-Disallow `/*`-comments.
-
-```scss
-/* Comment */
-// ↑ ↑
-// This line
-```
-
-This rule only works on CSS comments (`/* */`) and ignores all double-slash (`//`) comments.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```scss
-/* comment */
-```
-
-```scss
-/*
- * comment
-*/
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-// comment
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/declaration-nested-properties-no-divided-groups/README.md b/assets/node_modules/stylelint-scss/src/rules/declaration-nested-properties-no-divided-groups/README.md
deleted file mode 100644
index c96e431..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/declaration-nested-properties-no-divided-groups/README.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# declaration-nested-properties-no-divided-groups
-
-Disallow nested properties of the same "namespace" be divided into multiple groups.
-
-```scss
-/* Such groups: */
-font: { /* `font` is a "namespace" */
- size: 16px;
- weight: 700;
-}
-```
-
-A "namespace" is everything before the first `-` in property names, e.g. `margin` in `margin-bottom`. It is the "namespace" that is used as a root identifier for a nested properties group (`font` in the example above).
-
-[Sass official docs on nested properties](https://sass-lang.com/documentation/style-rules/declarations#nesting).
-
-The following patterns are considered warnings:
-
-```scss
-a {
- background: url(img.png) center {
- size: auto;
- }
- background: {
- repeat: no-repeat;
- }
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- background: url(img.png) center {
- size: auto;
- }
- background-repeat: no-repeat;
-}
-```
-
-```scss
-a {
- background: url(img.png) center no-repeat {
- color: red;
- }
- margin: 10px {
- left: 1px;
- }
-}
-```
-
-```scss
-a {
- background: url(img.png) center {
- size: auto;
- }
- background :red {
- repeat: no-repeat;
- }
-}
-/* There is no space after the colon in `background :red` so it is considered A SELECTOR and is compiled into:
-
-a background :red {
- color: blue;
-}
-
-*/
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/declaration-nested-properties/README.md b/assets/node_modules/stylelint-scss/src/rules/declaration-nested-properties/README.md
deleted file mode 100644
index 5776e3c..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/declaration-nested-properties/README.md
+++ /dev/null
@@ -1,153 +0,0 @@
-# declaration-nested-properties
-
-Require or disallow properties with `-` in their names to be in a form of a nested group.
-
-```scss
-/* This is properties nesting: */
-font: {
- size: 16px;
- weight: 700;
-}
-```
-
-[Sass official docs on nested properties](https://sass-lang.com/documentation/style-rules/declarations#nesting).
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-*Every property* with a `-` in its name *must be* inside a nested property group.
-
-Property names with browser prefixes are ignored with `always`.
-
-The following patterns are considered warnings:
-
-```scss
-a {
- margin-left: 10px;
-}
-```
-
-```scss
-a {
- font: {
- size: 10px;
- }
- font-weight: 400; // This one should be nested either
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- margin: {
- left: 10px;
- }
-}
-```
-
-```scss
-a {
- font: 10px/1.1 Arial {
- weight: bold;
- }
-}
-```
-
-```scss
-a {
- -webkit-box-sizing: border-box;
- -webkit-box-shadow: 1px 0 0 red;
-}
-```
-
-### `"never"`
-
-Nested properties are not allowed.
-
-The following patterns are considered warnings:
-
-```scss
-a {
- margin: {
- left: 10px;
- }
-}
-```
-
-```scss
-a {
- background: red {
- repeat: no-repeat;
- }
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- background-color: red;
- background-repeat: no-repeat;
-}
-```
-
-```scss
-a {
- background:red {
- color: blue;
- }
-}
-
-/* There is no space after the colon in `background:red` so it is considered A SELECTOR and is compiled into:
-
-a background:red {
- color: blue;
-}
-
-*/
-```
-
-## Optional options
-
-### `except: ["only-of-namespace"]`
-
-*Works only* with `"always"` and reverses its effect for a property if it is the only one with the corresponding "namespace" (e.g. `margin` in `margin-top`) in a ruleset.
-
-The following patterns are considered warnings:
-
-```scss
-a {
- font-family: Arial, sans-serif;
- font-size: 10px;
-}
-```
-
-```scss
-a {
- font: {
- size: 10px; // Only one rule nested (reverse "always")
- }
-}
-```
-
-```scss
-a {
- font: {
- size: 10px; // Prop 1, ...
- }
- font-weight: 400; // ... prop 2, so must be nested as well
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- position: absolute;
- background-color: red; // no other `background-` properties in a ruleset
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/dimension-no-non-numeric-values/README.md b/assets/node_modules/stylelint-scss/src/rules/dimension-no-non-numeric-values/README.md
deleted file mode 100644
index 985444f..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/dimension-no-non-numeric-values/README.md
+++ /dev/null
@@ -1,93 +0,0 @@
-# dimension-no-non-numeric-values
-
-Interpolating a value with a unit (e.g. `#{$value}px`) results in a
-_string_ value, not as numeric value. This value then cannot be used in
-numerical operations. It is better to use arithmetic to apply a unit to a
-number (e.g. `$value * 1px`).
-
-This rule requires that all interpolation for values should be in the format `$value * 1<unit>` instead of `#{value}<unit>`
-
-```scss
-$value: 4;
-
-p {
- padding: #{value}px;
-// ↑ ↑
-// should be $value * 1px
-}
-```
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```scss
-$value: 4;
-
-p {
- padding: #{value}px;
-}
-```
-
-The following patterns are _not_ considered violations:
-
-```scss
-$value: 4;
-
-p {
- padding: $value * 1px;
-}
-```
-
-## List of units
-Font-relative lengths ([link](https://www.w3.org/TR/css-values-4/#font-relative-lengths))
-* em
-* ex
-* cap
-* ch
-* ic
-* rem
-* lh
-* rlh
-
-Viewport-relative lengths ([link](https://www.w3.org/TR/css-values-4/#viewport-relative-lengths))
-* vw
-* vh
-* vi
-* vb
-* vmin
-* vmax
-
-Absolute lengths ([link](https://www.w3.org/TR/css-values-4/#absolute-lengths))
-* cm
-* mm
-* Q
-* in
-* pc
-* pt
-* px
-
-Angle units ([link](https://www.w3.org/TR/css-values-4/#angles))
-* deg
-* grad
-* rad
-* turn
-
-Duration units ([link](https://www.w3.org/TR/css-values-4/#time))
-* s
-* ms
-
-Frequency units ([link](https://www.w3.org/TR/css-values-4/#frequency))
-* Hz
-* kHz
-
-Resolution units ([link](https://www.w3.org/TR/css-values-4/#resolution))
-* dpi
-* dpcm
-* dppx
-* x
-
-Flexible lengths ([link](https://www.w3.org/TR/css-grid-1/#fr-unit))
-* fr
diff --git a/assets/node_modules/stylelint-scss/src/rules/dollar-variable-colon-newline-after/README.md b/assets/node_modules/stylelint-scss/src/rules/dollar-variable-colon-newline-after/README.md
deleted file mode 100644
index 238218b..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/dollar-variable-colon-newline-after/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# dollar-variable-colon-newline-after
-
-Require a newline after the colon in `$`-variable declarations.
-
-```scss
-$box-shadow:
- 0 0 0 1px #5b9dd9,
- 0 0 2px 1px rgba(30, 140, 190, 0.8);
- /* ↑ */
-/** ↑
- * The newline after this colon */
-```
-
-The `--fix` option on the [command line](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"always-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline after the colon.
-
-The following patterns are considered warnings:
-
-```scss
-$var:100px;
-```
-
-```scss
-a { $var:100px; }
-```
-
-```scss
-$var: 100px;
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-$var:
- 100px;
-```
-
-```scss
-a {
- $var:
- 100px;
-}
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline after the colon *if the variable value is multi-line*.
-
-The following patterns are considered warnings:
-
-```scss
-$box-shadow: 0 0 0 1px #5b9dd9,
- 0 0 2px 1px rgba(30, 140, 190, 0.8);
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-$box-shadow:
- 0 0 0 1px #5b9dd9,
- 0 0 2px 1px rgba(30, 140, 190, 0.8);
-```
-
-```scss
-$box-shadow:
- 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-// The VALUE is single-line, so a newline after the colon is ignored by this rule.
-```
-
-```scss
-$var: 100px;
-```
-
-## Optional secondary options
-
-### `disableFix: true`
-
-Disables autofixing for this rule.
diff --git a/assets/node_modules/stylelint-scss/src/rules/dollar-variable-colon-space-after/README.md b/assets/node_modules/stylelint-scss/src/rules/dollar-variable-colon-space-after/README.md
deleted file mode 100644
index df0d41c..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/dollar-variable-colon-space-after/README.md
+++ /dev/null
@@ -1,139 +0,0 @@
-# dollar-variable-colon-space-after
-
-Require or disallow whitespace after the colon in `$`-variable declarations.
-
-```scss
-$variable: 10px;
-/** ↑
- * The space after this colon */
-```
-
-The `--fix` option on the [command line](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"at-least-one-space"`
-
-### `"always"`
-
-There *must always* be a single space after the colon.
-
-The following patterns are considered warnings:
-
-```scss
-a { $var :10px }
-```
-
-```scss
-$var:10px;
-```
-
-```scss
-$var:
- 10px;
-// a newline is not a space
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a { $var : 10px }
-```
-
-```scss
-$var: 10px;
-```
-
-### `"never"`
-
-There *must never* be whitespace after the colon.
-
-The following patterns are considered warnings:
-
-```scss
-$var: 10px;
-```
-
-```scss
-$var:
-10px;
-```
-
-```scss
-a { $var :10px }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-$var :10px;
-```
-
-```scss
-a { $var:10px }
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space after the colon *if the variable value is single-line*.
-
-The following patterns are considered warnings:
-
-```scss
-$box-shadow:0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- $box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-}
-```
-
-```scss
-$box-shadow:
- 0 0 0 1px #5b9dd9,
- 0 0 2px 1px rgba(30, 140, 190, 0.8);
-```
-
-```scss
-a {
- $box-shadow:0 0 0 1px #5b9dd9,
- 0 0 2px 1px rgba(30, 140, 190, 0.8);
-}
-```
-
-### `"at-least-one-space"`
-
-There must always be *at least* a single space after the colon.
-
-The following patterns are considered warnings:
-
-```scss
-a { $var :10px }
-```
-
-```scss
-$var:10px;
-```
-
-```scss
-$var:
- 10px;
-// a newline is not a space
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a { $var : 10px }
-```
-
-```scss
-$var: 10px;
-```
-
-```scss
-$var: 10px;
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/dollar-variable-colon-space-before/README.md b/assets/node_modules/stylelint-scss/src/rules/dollar-variable-colon-space-before/README.md
deleted file mode 100644
index 536a70f..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/dollar-variable-colon-space-before/README.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# dollar-variable-colon-space-before
-
-Require a single space or disallow whitespace before the colon in `$`-variable declarations.
-
-```scss
-$variable: 10px;
-/** ↑
- * The space before this colon */
-```
-
-The `--fix` option on the [command line](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"
-
-### `"always"`
-
-There *must always* be a single space before the colon.
-
-The following patterns are considered warnings:
-
-```scss
-a { $var: 10px }
-```
-
-```scss
-$var:10px;
-```
-
-```scss
-$var :10px;
-```
-
-```scss
-$var
-:10px;
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a { $var : 10px }
-```
-
-```scss
-$var :10px;
-```
-
-### `"never"`
-
-There *must never* be whitespace before the colon.
-
-The following patterns are considered warnings:
-
-```scss
-$var :10px;
-```
-
-```scss
-a { $var
-:10px }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-$var:10px;
-```
-
-```scss
-a { $var: 10px }
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/dollar-variable-default/README.md b/assets/node_modules/stylelint-scss/src/rules/dollar-variable-default/README.md
deleted file mode 100644
index a75649a..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/dollar-variable-default/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# dollar-variable-default
-
-Require `!default` flag for `$`-variable declarations
-
-```scss
-$variable: 10px !default;
-/** ↑
- * This is variable with default value */
-```
-
-## Optional Options
-
-### `ignore: "local"`
-
-Makes this rule ignore local variables (variables defined inside a rule/mixin/function, etc.).
-
-The following patterns are *not* considered warnings:
-
-```scss
-$var: 10px !default;
-
-a {
- $local-var: 10px;
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/dollar-variable-empty-line-before/README.md b/assets/node_modules/stylelint-scss/src/rules/dollar-variable-empty-line-before/README.md
deleted file mode 100644
index 92e5f0e..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/dollar-variable-empty-line-before/README.md
+++ /dev/null
@@ -1,205 +0,0 @@
-# dollar-variable-empty-line-before
-
-Require an empty line or disallow empty lines before `$`-variable declarations.
-
-If the `$`-variable declaration is the first declaration in a file, it's ignored.
-
-```scss
- /* ← */
-$width: 10px; ↑
-/** ↑
- * This empty line */
-```
-
-The `--fix` option on the [command line](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be one empty line before a `$`-variable declaration.
-
-The following patterns are considered warnings:
-
-```scss
-@import '1.css';
-$var2: 200px;
-```
-
-```scss
-a {
- $var: 1;
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-$var: 100px; // The first declaration in a stylesheet
-```
-
-```scss
-a { color: red; }
-
-$var: 1;
-```
-
-### `"never"`
-
-There *must never* be an empty line before a `$`-variable declaration.
-
-The following patterns are considered warnings:
-
-```scss
-a { color: red; }
-
-$var: 1;
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-$var: 100px;
-$var2: 200px;
-```
-
-```scss
-a {
- width: auto;
-}
-$var: 1;
-```
-
-## Optional secondary options
-
-### `except: ["first-nested", "after-comment", "after-dollar-variable"]`
-
-### `"first-nested"`
-
-Reverse the primary option for a `$`-variable declaration if it's the first child of its parent.
-
-For example, with `"always"`:
-
-The following patterns are considered warnings:
-
-```scss
-a {
-
- $var: 1;
- color: red;
-}
-
-b {
- color: red;
-
- $var: 1;
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- $var: 1;
- color: red;
-}
-
-b {
- color: red;
- $var: 1;
-}
-```
-
-### `"after-comment"`
-
-Reverse the primary option for `$`-variable declarations that go after comments.
-
-For example, with `"always"`:
-
-The following patterns are considered warnings:
-
-```scss
-a {
- // comment
-
- $var: 1;
-}
-
-b {
- /* comment */
-
- $var: 1;
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- // comment
- $var: 1;
-}
-```
-
-### `"after-dollar-variable"`
-
-Reverse the primary option for `$`-variable declarations that go right after another `$`-variable declaration.
-
-For example, with `"always"`:
-
-The following patterns are considered warnings:
-
-```scss
-a {
-
- $var: 1; // this one is ok
-
- $var1: 2; // and this one shouldn't have a preceding empty line
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
-
- $var: 1;
- $var1: 2;
-}
-```
-
-### `ignore: ["after-comment", "inside-single-line-block"]`
-
-### `"after-comment"`
-
-Ignore `$`-variables that go after a comment.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered warnings:
-
-```scss
-// comment
-$var: 1
-
-/* comment */
-$var2: 1;
-```
-
-### `"inside-single-line-block"`
-
-Ignore `$`-variables that are inside single-line blocks.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered warnings:
-
-```scss
-a { $var: 10; }
-```
-
-### `disableFix: true`
-
-Disables autofixing for this rule.
diff --git a/assets/node_modules/stylelint-scss/src/rules/dollar-variable-no-missing-interpolation/README.md b/assets/node_modules/stylelint-scss/src/rules/dollar-variable-no-missing-interpolation/README.md
deleted file mode 100644
index 61dfbd0..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/dollar-variable-no-missing-interpolation/README.md
+++ /dev/null
@@ -1,111 +0,0 @@
-# dollar-variable-no-missing-interpolation
-
-Disallow Sass variables that are used without interpolation with CSS features that use custom identifiers.
-
-```scss
-.class {
- $var: "my-anim";
- animation-name: $var;
-// ↑
-// This variable needs to be interpolated
-// because its value is a string
-}
-```
-
-Sass variables that contain a custom identifier as a string always require interpolation when used. Some CSS [at-rules](https://css-tricks.com/the-at-rules-of-css/) require variable interpolation even when the custom identifier value is not a string.
-
-For example, your CSS animation could look like this:
-
-```scss
-animation: myAnim 5s;
-```
-
-When you store your custom identifier as string in a Sass variable...
-
-```scss
-$myVar: "myAnim";
-```
-
-...then you need to make sure that the variable is interpolated when it gets used:
-
-```scss
-animation: #{$myVar} 5s;
-```
-
-If you do not interpolate the variable, Sass will compile your animation name to a string, producing invalid CSS:
-
-```scss
-animation: "myAnim" 5s;
-```
-
-This rule can only check for variables that are defined inside the same file where they are used.
-
-The following patterns are considered warnings:
-
-```scss
-$var: my-anim;
-
-@keyframes $var {}
-```
-
-```scss
-$var: "circled-digits";
-
-@counter-style $var {
- system: fixed;
- symbols: ➀ ➁ ➂;
- suffix: ' ';
- speak-as: numbers;
-}
-```
-
-```scss
-$var: "my-counter";
-
-body {
- counter-reset: $var;
-}
-```
-
-```scss
-$var: "my-anim";
-
-@supports (animation-name: $var) {
- @keyframes {}
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-$var: my-anim;
-
-@keyframes #{$var} {}
-```
-
-```scss
-$var: circled-digits;
-
-@counter-style #{$var} {
- system: fixed;
- symbols: ➀ ➁ ➂;
- suffix: ' ';
- speak-as: numbers;
-}
-```
-
-```scss
-$var: my-counter;
-
-body {
- counter-reset: $var;
-}
-```
-
-```scss
-$var: my-anim;
-
-@supports (animation-name: $var) {
- @keyframes {}
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/dollar-variable-pattern/README.md b/assets/node_modules/stylelint-scss/src/rules/dollar-variable-pattern/README.md
deleted file mode 100644
index a7ba429..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/dollar-variable-pattern/README.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# dollar-variable-pattern
-
-Specify a pattern for Sass-like variables.
-
-```scss
-a { $foo: 1px; }
-/** ↑
- * The pattern of this */
-```
-
-## Options
-
-`regex` or `string`
-
-A string will be translated into a RegExp like so `new RegExp(yourString)` — so be sure to escape properly.
-
-### E.g. `/foo-.+/`
-
-The following patterns are considered warnings:
-
-```scss
-a { $boo-bar: 0; }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a { $foo-bar: 0; }
-```
-
-## Optional Options
-
-### `ignore: "local"|"global"`
-
-#### `"local"`
-
-Makes this rule ignore local variables (variables defined inside a rule/mixin/function, etc.).
-
-For example, with `/^foo-/`:
-
-The following patterns are *not* considered warnings:
-
-```scss
-$foo-name00: 10px;
-```
-
-```scss
-a {
- $bar-name01: 10px;
-}
-```
-
-#### `"global"`
-
-Makes this rule ignore global variables (variables defined in the stylesheet root).
-
-For example, with `/^foo-/`:
-
-The following patterns are *not* considered warnings:
-
-```scss
-$bar-name01: 10px;
-```
-
-```scss
-a {
- $foo-name02: 10px;
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/double-slash-comment-empty-line-before/README.md b/assets/node_modules/stylelint-scss/src/rules/double-slash-comment-empty-line-before/README.md
deleted file mode 100644
index 2c79b9c..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/double-slash-comment-empty-line-before/README.md
+++ /dev/null
@@ -1,151 +0,0 @@
-# double-slash-comment-empty-line-before
-
-Require or disallow an empty line before `//`-comments.
-
-```scss
-a {}
- /* ← */
-// comment /* ↑ */
-/** ↑
-* This line */
-```
-
-The `--fix` option on the [command line](https://github.com/stylelint/stylelint/blob/master/docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-This rule only works with SCSS-like [single-line comments](https://sass-lang.com/documentation/syntax/comments) and ignores:
-* comments that are the very first nodes in a file;
-* CSS comments (`/* */`);
-* comments that are on the same line as some non-comment code (inline comments).
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be an empty line before `//`-comments.
-
-The following patterns are considered warnings:
-
-```scss
-a {}
-// comment
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {}
-
-// comment
-```
-
-```scss
-a {} // comment
-```
-
-### `"never"`
-
-There *must never* be an empty line before `//`-comments.
-
-The following patterns are considered warnings:
-
-```scss
-a {}
-
-// comment
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {}
-// comment
-```
-
-```scss
-a {} // comment
-```
-
-## Optional options
-
-### `except: ["first-nested"]`
-
-Reverse the primary option for `//`-comments that are nested and the first child of their parent node.
-
-For example, with `"always"`:
-
-The following patterns are considered warnings:
-
-```scss
-a {
-
- // comment
- color: pink;
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- // comment
- color: pink;
-}
-```
-
-### `ignore: ["between-comments", "stylelint-commands"]`
-
-#### `"between-comments"`
-
-Don't require an empty line before `//`-comments that are placed after other `//`-comments or CSS comments.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- background: pink;
-
- // comment
- // comment
- color: #eee;
-}
-```
-
-```scss
-a {
- background: pink;
-
- /* comment */
- // comment
- color: #eee;
-}
-```
-
-#### `"stylelint-commands"`
-
-Ignore `//`-comments that deliver commands to stylelint, e.g. `// stylelint-disable color-no-hex`.
-
-For example, with `"always"`:
-
-The following patterns are considered warnings:
-
-```scss
-a {
- background: pink;
- // not a stylelint command
- color: #eee;
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- background: pink;
- // stylelint-disable color-no-hex
- color: pink;
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/double-slash-comment-inline/README.md b/assets/node_modules/stylelint-scss/src/rules/double-slash-comment-inline/README.md
deleted file mode 100644
index c4ddef6..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/double-slash-comment-inline/README.md
+++ /dev/null
@@ -1,110 +0,0 @@
-# double-slash-comment-inline
-
-Require or disallow `//`-comments to be inline comments.
-
-```scss
-a {
- width: 10px; // inline-comment
-/* ↑
- * Such comments */
-```
-
-An inline comment in terms of this rule is a comment that is placed on the same line with any other code, either before or after it.
-
-This rule only works with SCSS-like [single-line comments](https://sass-lang.com/documentation/syntax/comments) and ignores CSS comments (`/* */`).
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-`//`-comments *must always* be inline comments.
-
-The following patterns are considered warnings:
-
-```scss
-// comment
-a { width: 10px; }
-```
-
-```scss
-a {
- // comment
- width: 10px;
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a { // comment
- width: 10px;
-}
-```
-
-```scss
-a {
- width: 10px; // comment
-}
-```
-
-```scss
-a, // comment
-b {
- width: 10px;
-}
-```
-
-### `"never"`
-
-`//`-comments *must never* be inline comments.
-
-The following patterns are considered warnings:
-
-```scss
-a {
- width: 10px; // comment
-}
-```
-
-```scss
-a, // comment
-b {
- width: 10px;
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-// comment
-a { width: 10px; }
-```
-
-```scss
-a {
- // comment
- width: 10px;
-}
-```
-
-## Optional options
-
-### `ignore: ["stylelint-commands"]`
-
-#### `"stylelint-commands"`
-
-Ignore `//`-comments that deliver commands to stylelint, e.g. `// stylelint-disable color-no-hex`.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- background: pink;
- // stylelint-disable color-no-hex
- color: pink;
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/double-slash-comment-whitespace-inside/README.md b/assets/node_modules/stylelint-scss/src/rules/double-slash-comment-whitespace-inside/README.md
deleted file mode 100644
index f10b23b..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/double-slash-comment-whitespace-inside/README.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# double-slash-comment-whitespace-inside
-
-Require or disallow whitespace after the `//` in `//`-comments
-
-```scss
-a {
- width: 10px; // inline-comment
-/* ↑
- * Such whitespace */
-```
-
-This rule only works with SCSS-like [single-line comments](https://sass-lang.com/documentation/syntax/comments) and ignores CSS comments (`/* */`).
-
-Any number of slases are allowed at the beginning of the comment. So `/// comment` is treated the same way as `// comment`.
-
-Note that a newline is not possible as a whitespace in terms of this rule as `//`-comments are intended to be single-line.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be whitespace after the `//` inside `//`-comments.
-
-The following patterns are considered warnings:
-
-```scss
-//comment
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-// comment
-```
-
-```scss
-/// comment
-```
-
-### `"never"`
-
-There *must never* be whitespace after the `//` inside `//`-comments.
-
-The following patterns are considered warnings:
-
-```scss
-// comment
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-//comment
-```
-
-```scss
-///comment
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/function-color-relative/README.md b/assets/node_modules/stylelint-scss/src/rules/function-color-relative/README.md
deleted file mode 100644
index b4a904c..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/function-color-relative/README.md
+++ /dev/null
@@ -1,83 +0,0 @@
-# function-color-relative
-
-Encourage the use of the [scale-color](https://sass-lang.com/documentation/modules/color#scale-color) over:
-
-* [darken](https://sass-lang.com/documentation/modules/color#darken)
-* [desaturate](https://sass-lang.com/documentation/modules/color#desaturate)
-* [fade-in](https://sass-lang.com/documentation/modules/color#fade-in)
-* [fade-out](https://sass-lang.com/documentation/modules/color#fade-out)
-* [lighten](https://sass-lang.com/documentation/modules/color#lighten)
-* [opacify](https://sass-lang.com/documentation/modules/color#opacify)
-* [saturate](https://sass-lang.com/documentation/modules/color#saturate)
-* [transparentize](https://sass-lang.com/documentation/modules/color#transparentize)
-
-```scss
-p {
- color: saturate(blue, 20%);
- /** ↑ ↑
- * This function should be scalar-color
- */
-}
-```
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```scss
-p {
- color: saturate(blue, 20%);
-}
-```
-
-```scss
-p {
- color: desaturate(blue, 20%);
-}
-```
-
-```scss
-p {
- color: darken(blue, .2);
-}
-```
-
-```scss
-p {
- color: lighten(blue, .2);
-}
-```
-
-```scss
-p {
- color: opacify(blue, .2);
-}
-```
-
-```scss
-p {
- color: fade-in(blue, .2);
-}
-```
-
-```scss
-p {
- color: transparentize(blue, .2);
-}
-```
-
-```scss
-p {
- color: fade-out(blue, .2);
-}
-```
-
-The following patterns are _not_ considered violations:
-
-```scss
- p {
- color: scale-color(blue, $alpha: -40%);
- }
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/function-quote-no-quoted-strings-inside/README.md b/assets/node_modules/stylelint-scss/src/rules/function-quote-no-quoted-strings-inside/README.md
deleted file mode 100644
index b26b03d..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/function-quote-no-quoted-strings-inside/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# function-quote-no-quoted-strings-inside
-
-Disallow quoted strings inside the [quote function](https://sass-lang.com/documentation/modules/string#quote)
-
-```scss
-p {
- font-family: quote("Helvetica");
- /** ↑ ↑
- * These quotes are unnecessary
- */
-}
-```
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```scss
-a {
- font-family: quote("Helvetica");
-}
-```
-
-```scss
-$font: "Helvetica";
-p {
- font-family: quote($font);
-}
-```
-
-The following patterns are _not_ considered violations:
-
-```scss
-a {
- color: quote(blue);
-}
-```
-
-```scss
-$font: Helvetica;
-p {
- font-family: quote($font);
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/function-unquote-no-unquoted-strings-inside/README.md b/assets/node_modules/stylelint-scss/src/rules/function-unquote-no-unquoted-strings-inside/README.md
deleted file mode 100644
index 79537d9..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/function-unquote-no-unquoted-strings-inside/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# function-unquote-no-unquoted-strings-inside
-
-Disallow unquoted strings inside the [unquote function](https://sass-lang.com/documentation/modules/string#unquote)
-
-```scss
-p {
- font-family: unquote(Helvetica);
- /** ↑ ↑
- * This function call is unnecessary
- */
-}
-```
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```scss
-a {
- font-family: unquote(Helvetica);
-}
-```
-
-```scss
-$font: Helvetica;
-p {
- font-family: unquote($font);
-}
-```
-
-The following patterns are _not_ considered violations:
-
-```scss
-a {
- color: unquote("blue");
-}
-```
-
-```scss
-$font: "Helvetica";
-p {
- font-family: unquote($font);
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/map-keys-quotes/README.md b/assets/node_modules/stylelint-scss/src/rules/map-keys-quotes/README.md
deleted file mode 100644
index 087177e..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/map-keys-quotes/README.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# map-keys-quotes
-
-Require quoted keys in Sass maps.
-
-```scss
-$test: (Helvetica: 14px, Arial: 25px);
- /** ↑ ↑
- * These words should be quoted.
- */
-```
-
-## Options
-
-### `always`
-
-The following patterns are considered violations:
-
-```scss
-$test: (Helvetica: 14px, Arial: 25px);
-```
-
-The following patterns are _not_ considered violations:
-
-```scss
-$test: ("foo": 14px, "bar": 25px);
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/media-feature-value-dollar-variable/README.md b/assets/node_modules/stylelint-scss/src/rules/media-feature-value-dollar-variable/README.md
deleted file mode 100644
index 5977554..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/media-feature-value-dollar-variable/README.md
+++ /dev/null
@@ -1,86 +0,0 @@
-# media-feature-value-dollar-variable
-
-Require a media feature value be a `$`-variable or disallow `$`-variables in media feature values.
-
-```scss
-@media (max-width: $var) { a { color: red; } }
-// ↑
-// Require or disallow this
-}
-```
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-A media feature value *must consist* of just a single `$`-variable (possibly with inteprolation).
-
-The following patterns are considered warnings:
-
-```scss
-@media (max-width: 300px) { b { color: red; } }
-```
-
-```scss
-@media (max-width: $var + 10px) { b { color: red; } }
-```
-
-```scss
-@media screen and (max-width: $var), or (min-width: 100px){ b { color: red; } }
-```
-
-```scss
-@media screen and (max-width: #{$val} + 10px) { a { display: none; } }
-```
-
-```scss
-@media screen and (max-width: #{$val + $x} ) { a { display: none; } }
-```
-
-```scss
-@media screen and (min-width: funcName($p)){ b { color: red; } }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@media ( max-width: $var ) {b { color: red; }}
-```
-
-```scss
-@media ( max-width: #{$var}) {b { color: red; }}
-```
-
-### `"never"`
-
-There *must never* be a `$`-variable in a media feature value. Even as a parameter to a function call.
-
-The following patterns are considered warnings:
-
-```scss
-@media screen and (min-width: $var){ b { color: red; } }
-```
-
-```scss
-@media screen and (min-width: 100px + $var){ b { color: red; } }
-```
-
-```scss
-@media screen and (min-width: funcName($var)){ b { color: red; } }
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-@media screen and (min-width: 100px){ b { color: red; } }
-```
-
-```scss
-@media screen and (min-width: 100px + 10px){ b { color: red; } }
-```
-
-```scss
-@media screen and (min-width: funcName(10px)){ b { color: red; } }
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/no-dollar-variables/README.md b/assets/node_modules/stylelint-scss/src/rules/no-dollar-variables/README.md
deleted file mode 100644
index bb282bf..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/no-dollar-variables/README.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# no-dollar-variables
-
-Disallow dollar variables within a stylesheet.
-
-```scss
- $a: 1;
-/** ↑
- * These dollar variables */
-```
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```scss
-$a: 1;
-```
-
-```scss
-$a: 1;
-$b: 2;
-```
-
-```scss
-.b {
- $a: 1;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```scss
-a {
- color: blue;
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/no-duplicate-dollar-variables/README.md b/assets/node_modules/stylelint-scss/src/rules/no-duplicate-dollar-variables/README.md
deleted file mode 100644
index 4a03860..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/no-duplicate-dollar-variables/README.md
+++ /dev/null
@@ -1,143 +0,0 @@
-# no-duplicate-dollar-variables
-
-Disallow duplicate dollar variables within a stylesheet.
-
-```scss
- $a: 1;
- $a: 2;
-/** ↑
- * These are duplicates */
-```
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```scss
-$a: 1;
-$a: 2;
-```
-
-```scss
-$a: 1;
-$b: 2;
-$a: 3;
-```
-
-```scss
-$a: 1;
-.b {
- $a: 1;
-}
-```
-
-```scss
-$a: 1;
-.b {
- .c {
- $a: 1;
- }
-}
-```
-
-```scss
-$a: 1;
-@mixin b {
- $a: 1;
-}
-```
-
-The following patterns are _not_ considered violations:
-
-```scss
-$a: 1;
-$b: 2;
-```
-
-```scss
-$a: 1;
-.b {
- $b: 2;
-}
-```
-
-### `ignoreInside: ["at-rule", "nested-at-rule"]`
-
-#### `"at-rule"`
-
-Ignores dollar variables that are inside both nested and non-nested at-rules (`@media`, `@mixin`, etc.).
-
-Given:
-
-```json
-{ "ignoreInside": ["at-rule"] }
-```
-
-The following patterns are _not_ considered warnings:
-
-```scss
-$a: 1;
-@mixin c {
- $a: 1;
-}
-```
-
-```scss
-$a: 1;
-.b {
- @mixin c {
- $a: 1;
- }
-}
-```
-
-#### `"nested-at-rule"`
-
-Ignores dollar variables that are inside nested at-rules (`@media`, `@mixin`, etc.).
-
-Given:
-
-```json
-{ "ignoreInside": ["nested-at-rule"] }
-```
-
-The following patterns are _not_ considered warnings:
-
-```scss
-$a: 1;
-.b {
- @mixin c {
- $a: 1;
- }
-}
-```
-
-### `ignoreInsideAtRules: ["array", "of", "at-rules"]`
-
-Ignores all variables that are inside specified at-rules.
-
-Given:
-
-```json
-{ "ignoreInsideAtRules": ["if", "mixin"] }
-```
-
-The following patterns are _not_ considered warnings:
-
-```scss
-$a: 1;
-
-@mixin b {
- $a: 2;
-}
-```
-
-```scss
-$a: 1;
-
-@if (true) {
- $a: 2;
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/no-duplicate-mixins/README.md b/assets/node_modules/stylelint-scss/src/rules/no-duplicate-mixins/README.md
deleted file mode 100644
index cdb7bb2..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/no-duplicate-mixins/README.md
+++ /dev/null
@@ -1,83 +0,0 @@
-# no-duplicate-mixins
-
-Disallow duplicate mixins within a stylesheet.
-
-```scss
-@mixin font-size-default {
- font-size: 16px;
-}
-@mixin font-size-default {
- font-size: 18px;
-}
-/** ↑
- * These are duplicates */
-```
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```scss
-@mixin font-size-default {
- font-size: 16px;
-}
-@mixin font-size-default {
- font-size: 18px;
-}
-```
-
-```scss
-@mixin font-size-default {
- font-size: 16px;
-}
-@mixin font-size-sm {
- font-size: 14px;
-}
-@mixin font-size-default {
- font-size: 18px;
-}
-```
-
-```scss
-@mixin font-size {
- font-size: 16px;
-}
-@mixin font-size($var) {
- font-size: $var;
-}
-```
-
-```scss
-@mixin font-size($property, $value) {
- #{$property}: $value;
-}
-@mixin font-size($var) {
- font-size: $var;
-}
-```
-
-```scss
-@mixin font-size {
- color: blue;
-}
-
-.b {
- @mixin font-size {
- color: red;
- }
- @include font-size;
-}
-```
-
-The following patterns are _not_ considered violations:
-
-```scss
-@mixin font-size-default {
- font-size: 16px;
-}
-@mixin font-size-lg {
- font-size: 18px;
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/operator-no-newline-after/README.md b/assets/node_modules/stylelint-scss/src/rules/operator-no-newline-after/README.md
deleted file mode 100644
index 677f1e6..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/operator-no-newline-after/README.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# operator-no-newline-after
-
-Disallow linebreaks after Sass operators.
-
-```scss
-a { width: 10px + $n; }
-/** ↑
- * Linebreaks after this */
-```
-
-This rule checks math operators (`+`, `-`, `/`, `*`, `%`) and comparison operators (`>`, `<`, `!=`, `==`, `>=`, `<=`).
-
-Not all symbols that correspond to math operators are actually considered operators by Sass. Some of the exceptions are:
-
-* `+` and `-` as signs before values;
-* `+` and `-` as signs in [space-delimited lists](https://sass-lang.com/documentation/operators/string);
-* `-` as part of [a string](https://sass-lang.com/documentation/operators/string) or [a Sass identifier](https://sass-lang.com/documentation/operators/numeric#unary-operators), e.g. a variable;
-* `/` as a CSS delimiter in property values like `font: 10px/1.2 Arial;` ([read more](https://sass-lang.com/documentation/operators/numeric#slash-separated-values)).
-
-For more details refer to [Sass official documentation](https://sass-lang.com/documentation). An online Sass compiler - [Sassmeister](https://www.sassmeister.com/) - could also come in handy.
-
-The following patterns are considered warnings:
-
-```scss
-a { width: 10 +
-1; }
-```
-
-```scss
-a {
- width: 10 +
- 1;
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- width: str- // not a math operator, ignored
- some;
-}
-```
-
-```scss
-a { width: 10px - 1; }
-```
-
-```scss
-a {
- width: 10px * 1.7 // the newline is not right after the operator
- + 1;
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/operator-no-newline-before/README.md b/assets/node_modules/stylelint-scss/src/rules/operator-no-newline-before/README.md
deleted file mode 100644
index 81b358a..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/operator-no-newline-before/README.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# operator-no-newline-before
-
-Disallow linebreaks before Sass operators.
-
-```scss
-a { width: 10px
- + $n; }
-/** ↑
- * Linebreaks before this */
-```
-
-This rule checks math operators (`+`, `-`, `/`, `*`, `%`) and comparison operators (`>`, `<`, `!=`, `==`, `>=`, `<=`).
-
-Not all symbols that correspond to math operators are actually considered operators by Sass. Some of the exceptions are:
-
-* `+` and `-` as signs before values;
-* `+` and `-` as signs in [space-delimited lists](https://sass-lang.com/documentation/operators/string);
-* `-` as part of [a string](https://sass-lang.com/documentation/operators/string) or [a Sass identifier](https://sass-lang.com/documentation/operators/numeric#unary-operators), e.g. a variable;
-* `/` as a CSS delimiter in property values like `font: 10px/1.2 Arial;` ([read more](https://sass-lang.com/documentation/operators/numeric#slash-separated-values)).
-
-For more details refer to [Sass official documentation](https://sass-lang.com/documentation). An online Sass compiler - [Sassmeister](https://www.sassmeister.com/) - could also come in handy.
-
-The following patterns are considered warnings:
-
-```scss
-a { width: 10
-+ 1; }
-```
-
-```scss
-a {
- width: 10
- + 1;
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a {
- width: 10px
- -1; // not a math operator, ignored
-}
-```
-
-```scss
-a { width: 10px - 1; }
-```
-
-```scss
-a {
- width: 100px +
- $var * 0.5625; // the newline is not right before the operator
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/operator-no-unspaced/README.md b/assets/node_modules/stylelint-scss/src/rules/operator-no-unspaced/README.md
deleted file mode 100644
index 4bef685..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/operator-no-unspaced/README.md
+++ /dev/null
@@ -1,100 +0,0 @@
-# operator-no-unspaced
-
-Disallow unspaced operators in Sass operations.
-
-```scss
-a { width: 10px*$n; }
-/** ↑
- * The space around this operator */
-```
-
-This rule checks math operators (`+`, `-`, `/`, `*`, `%`) and comparison operators (`>`, `<`, `!=`, `==`, `>=`, `<=`).
-
-Not all symbols that correspond to math operators are actually considered operators by Sass. Some of the exceptions are:
-
-* `+` and `-` as signs before values;
-* `+` and `-` as signs in [space-delimited lists](https://sass-lang.com/documentation/operators/string);
-* `-` as part of [a string](https://sass-lang.com/documentation/operators/string) or [a Sass identifier](https://sass-lang.com/documentation/operators/numeric#unary-operators), e.g. a variable;
-* `/` as a CSS delimiter in property values like `font: 10px/1.2 Arial;` ([read more](https://sass-lang.com/documentation/operators/numeric#slash-separated-values)).
-
-For more details refer to [Sass official documentation](https://sass-lang.com/documentation/file.SASS_REFERENCE.html). An online Sass compiler - [Sassmeister](https://www.sassmeister.com/) - could also come in handy.
-
-The following patterns are considered warnings:
-
-```scss
-a { width: 10+1; }
-```
-
-```scss
-a { width: 10+ 1; }
-```
-
-```scss
-a { width: 10-1; }
-```
-
-```scss
-a { width: 10px* 1.5; }
-```
-
-```scss
-@if ($var==10) { ... }
-```
-
-```scss
-a { width: 10px * 1.5; } // More than one space
-```
-
-```scss
-a { width: (10) /1; } // Has a value inside parens on one side, so is an operation
-```
-
-```scss
-// Operations can be inside interpolation in selectors, property names, etc.
-.class#{1 +1}name {
- color: red;
-}
-
-p {
- background-#{\"col\" +\"or\"}: red;
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-a { width: 10 * 1; }
-```
-
-```scss
-a { width: 10 +1; } // A space-delimited Sass list
-```
-
-```scss
-// A space-delimited Sass list, in "10px-" "10" is a number, "px-" is a unit
-a { width: 10px- 1; }
-```
-
-```scss
-a { width: 10px/1; } // Compiled as CSS, as in "font: 10px/1 ..."
-```
-
-```scss
-a { width: (10) /#{1}; } // Has interpolation on one of the sides, so not an operation
-```
-
-```scss
-a { width: $var-1; } // "$var-1" is a variable name
-```
-
-```scss
-a { width: "10*1"; } // Inside a string, ignored
-```
-
-```scss
-// Linebreak will do as a whitespace; indentation before "-" and trailing spaces after "1" are left to the corresponding stylelint rules
-a {
- width: 1
- - a;
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/partial-no-import/README.md b/assets/node_modules/stylelint-scss/src/rules/partial-no-import/README.md
deleted file mode 100644
index 4a280b4..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/partial-no-import/README.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# partial-no-import
-
-Disallow non-CSS `@import`s in partial files.
-
-```scss
-// path/to/_file.scss:
-/* ↑ in partial files */
-
- @import "path/to/file.scss"
-/*↑ Disallow imports */
-```
-
-The rule skips CSS files (doesn't report any `@import`s in them).
-
-The rule also ignores [cases](https://sass-lang.com/documentation/at-rules/import) when Sass considers an `@import` command just a plain CSS import:
-
-* If the file’s extension is `.css`.
-* If the filename begins with `http://` (or any other protocol).
-* If the filename is a `url()`.
-* If the `@import` has any media queries.
-
-The following patterns are considered warnings:
-
-```scss
-// path/to/_file.scss:
-
-@import "foo.scss";
-```
-
-```scss
-// path/to/_file.less:
-@import "path/fff.less";
-```
-
-```scss
-// path/to/_file.scss:
-@import "path\\fff.supa";
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-// path/to/file.scss:
-@import "path/fff";
-
-/* @import in a file that is not a partial */
-```
-
-```scss
-// path/to/_file.scss:
-@import url("path/_file.css"); /* has url(), so doesn't count as a partial @import */
-```
-
-```scss
-// path/to/_file.scss:
-@import "file.css"; /* Has ".css" extension, so doesn't count as a partial @import */
-```
-
-```scss
-// path/to/_file.scss:
-@import "http://_file.scss";
-@import "//_file.scss";
-/* Both are URIs, so don't count as partial @imports */
-```
-
-```scss
-// path/to/_file.scss:
-@import "file.scss" screen; /* Has a media query, so doesn't count as a partial @import */
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/percent-placeholder-pattern/README.md b/assets/node_modules/stylelint-scss/src/rules/percent-placeholder-pattern/README.md
deleted file mode 100644
index d4e85c2..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/percent-placeholder-pattern/README.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# percent-placeholder-pattern
-
-Specify a pattern for `%`-placeholders.
-
-```scss
- %foobar { display: flex; }
-/** ↑
- * The pattern of this */
-```
-
-## Options
-
-`regex` or `string`
-
-A string will be translated into a RegExp like so `new RegExp(yourString)` — so be sure to escape properly.
-
-Nested selectors will be resolved before checking.
-
-The selector value *after `%`* will be checked. No need to include `%` in your pattern.
-
-### E.g. `/^foo-[a-z]+$/`
-
-The following patterns are considered warnings:
-
-```scss
-%myriad { display: flex; }
-```
-
-```scss
-%foo-bar {
- &-supa { display: flex; } /* %foo-bar matches, but %foo-bar-supa doesn't */
-}
-```
-
-```scss
-%foo- { /* %foo- on the 1st leves doesn't match */
- &bar { display: flex; }
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-%foo-aimp { display: flex; }
-```
-
-```scss
-%foo-bar {
- &lignt { display: flex; }
-}
-```
-
-```scss
-.p {
- @extend %mathy; // The rule only checks placeholder definitions
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/selector-nest-combinators/README.md b/assets/node_modules/stylelint-scss/src/rules/selector-nest-combinators/README.md
deleted file mode 100644
index 8c6f94d..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/selector-nest-combinators/README.md
+++ /dev/null
@@ -1,221 +0,0 @@
-# selector-nest-combinators
-
-Require or disallow nesting of combinators in selectors
-
-```scss
-/* Examples of selectors without nesting of combinators */
-.foo .bar {}
-
-.foo.bar {}
-
-.foo > .bar {}
-
-.foo:hover {}
-
-/* Corresponding selectors with combinators nested */
-.foo {
- .bar {}
-}
-
-.foo {
- &.bar {}
-}
-
-.foo {
- & > .bar {}
-}
-
-.foo {
- &:hover {}
-}
-```
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-*Every combinator* in a selector *must be* nested where possible without altering the existing resolved selector.
-
-Sections of selectors preceding a parent selector are ignored with `always`.
-e.g.
-
-```scss
-.foo {
- .bar.baz & {}
-}
-```
-
-Sections of selectors within pseudo selectors are also ignored with `always`.
-e.g.
-
-```scss
-.foo {
- &:not(.bar .baz) {}
-}
-```
-
-while this could be refactored to:
-
-```scss
-.bar {
- .baz {
- .foo:not(&) {}
- }
-}
-```
-
-There are variances in the way this is compiled between compilers, therefore for the purposes of this rule the selector sections within pseudo selectors are being ignored.
-
-The following patterns are considered warnings:
-
-```scss
-.foo .bar {}
-```
-
-```scss
-.foo.bar {}
-```
-
-```scss
-.foo > .bar {}
-```
-
-```scss
-.foo:hover {}
-```
-
-```scss
-a[href] {}
-```
-
-```scss
-* + li {}
-```
-
-```scss
-:nth-child(2n - 1):last-child {}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-.foo {
- .bar {}
-}
-```
-
-```scss
-.foo {
- &.bar {}
-}
-```
-
-```scss
-.foo {
- & > .bar {}
-}
-```
-
-```scss
-.foo {
- &:hover {}
-}
-```
-
-```scss
-a {
- &[href] {}
-}
-```
-
-```scss
-* {
- & + li {}
-}
-```
-
-```scss
-:nth-child(2n - 1) {
- &:last-child {}
-}
-```
-
-### `"never"`
-
-Nested of selectors are not allowed.
-
-The following patterns are considered warnings:
-
-```scss
-.foo {
- .bar {}
-}
-```
-
-```scss
-.foo {
- &.bar {}
-}
-```
-
-```scss
-.foo {
- & > .bar {}
-}
-```
-
-```scss
-.foo {
- &:hover {}
-}
-```
-
-```scss
-a {
- &[href] {}
-}
-```
-
-```scss
-* {
- & + li {}
-}
-```
-
-```scss
-:nth-child(2n - 1) {
- &:last-child {}
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-.foo .bar {}
-```
-
-```scss
-.foo.bar {}
-```
-
-```scss
-.foo > .bar {}
-```
-
-```scss
-.foo:hover {}
-```
-
-```scss
-a[href] {}
-```
-
-```scss
-* + li {}
-```
-
-```scss
-:nth-child(2n - 1):last-child {}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/selector-no-redundant-nesting-selector/README.md b/assets/node_modules/stylelint-scss/src/rules/selector-no-redundant-nesting-selector/README.md
deleted file mode 100644
index af07ba2..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/selector-no-redundant-nesting-selector/README.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# selector-no-redundant-nesting-selector
-
-Disallow redundant nesting selectors (`&`).
-
-```scss
-p {
- & a {}
-//↑
-// This type of selector
-}
-```
-
-The following patterns are considered warnings:
-
-```scss
-p {
- & a {}
-}
-```
-
-```scss
-p {
- & > a {}
-}
-```
-
-```scss
-p {
- & .class {}
-}
-```
-
-```scss
-p {
- & + .foo {}
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-p {
- &.foo {}
-}
-```
-
-```scss
-p {
- .foo > & {}
-}
-```
-
-```scss
-p {
- &,
- .foo,
- .bar {
- margin: 0;
- }
-}
-```
diff --git a/assets/node_modules/stylelint-scss/src/rules/selector-no-union-class-name/README.md b/assets/node_modules/stylelint-scss/src/rules/selector-no-union-class-name/README.md
deleted file mode 100644
index ef773c9..0000000
--- a/assets/node_modules/stylelint-scss/src/rules/selector-no-union-class-name/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# selector-no-union-class-name
-
-Disallow union class names with the parent selector (`&`).
-
-```scss
-.class {
- &-union {
-//↑
-// This type usage of `&`
- }
-}
-```
-
-The following patterns are considered warnings:
-
-```scss
-.class {
- &-union {}
-}
-```
-
-```scss
-.class {
- &_union {}
-}
-```
-
-```scss
-.class {
- &union {}
-}
-```
-
-The following patterns are *not* considered warnings:
-
-```scss
-.class {
- &.foo {}
-}
-```
-
-```scss
-.class {
- & p {}
-}
-```
diff --git a/assets/node_modules/stylelint/CHANGELOG.md b/assets/node_modules/stylelint/CHANGELOG.md
deleted file mode 100644
index 6088b43..0000000
--- a/assets/node_modules/stylelint/CHANGELOG.md
+++ /dev/null
@@ -1,1517 +0,0 @@
-# Changelog
-
-All notable changes to this project are documented in this file.
-
-## 13.0.0
-
-- Removed: Node.js 8.x support. Node.js 10 is now required. We can guarantee stylelint works on the latest Node.js 10 release. ([#4500](https://github.com/stylelint/stylelint/pull/4500)).
-- Removed: types declarations for Flow ([#4451](https://github.com/stylelint/stylelint/pull/4451)).
-- Changed: `globby` was updated to v10. Now only forward-slashes (`/`) should be used as directory separator in globs. Refer to [glob pattern syntax](https://github.com/mrmlnc/fast-glob#pattern-syntax). Most of the users wouldn't need to change anything, but Windows users might need to update their globs. ([#4254](https://github.com/stylelint/stylelint/pull/4254)).
-- Added: `unit-no-unknown` support for `x` unit ([#4427](https://github.com/stylelint/stylelint/pull/4427)).
-- Fixed: `--report-invalid-scope-disables` crash when no rules specified ([#4498](https://github.com/stylelint/stylelint/pull/4498)).
-- Fixed: `media-feature-parentheses-space-inside` false negatives for multiple spaces ([#4513](https://github.com/stylelint/stylelint/pull/4513)).
-- Fixed: `selector-type-no-unknown` false positives for SVG tags ([#4495](https://github.com/stylelint/stylelint/pull/4495)).
-- Fixed: `unit-no-unknown` false positives for Sass map keys ([#4450](https://github.com/stylelint/stylelint/pull/4450)).
-- Fixed: `value-list-comma-newline-after` false positives for shared-line comments ([#4482](https://github.com/stylelint/stylelint/pull/4482)).
-- Fixed: consistently check that selectors are standard before passing to the parser ([#4483](https://github.com/stylelint/stylelint/pull/4483)).
-- Fixed: overlapping disabled ranges edge case ([#4497](https://github.com/stylelint/stylelint/pull/4497)).
-
-## 12.0.1
-
-- Fixed: `string-no-newline` memory leak for ERB templates ([#4491](https://github.com/stylelint/stylelint/pull/4491)).
-
-## 12.0.0
-
-- Removed: ignoring `bower_components` folder by default ([#4384](https://github.com/stylelint/stylelint/pull/4384)).
-- Removed: `createRuleTester` API ([#4385](https://github.com/stylelint/stylelint/pull/4385)).
-- Added: more information for custom formatters ([#4393](https://github.com/stylelint/stylelint/pull/4393)).
-- Fixed: `comment-empty-line-before` false positives for selector lists and shared-line comments ([#4360](https://github.com/stylelint/stylelint/pull/4360)).
-- Fixed: `font-family-no-missing-generic-family-keyword` false positives for Sass-variables with namespaces ([#4378](https://github.com/stylelint/stylelint/pull/4378)).
-- Fixed: `font-weight-notation` false positives for `font-weight` ranges in `@font-face` ([#4372](https://github.com/stylelint/stylelint/pull/4372)).
-- Fixed: `length-zero-no-unit` false positives for `line-height`, and for `fr` units ([#4394](https://github.com/stylelint/stylelint/pull/4394)).
-- Fixed: `length-zero-no-unit` false positives for Less variables ([#4405](https://github.com/stylelint/stylelint/pull/4405)).
-- Fixed: `selector-max-*` false negatives for rules with nested rules ([#4357](https://github.com/stylelint/stylelint/pull/4357)).
-- Fixed: incorrect error message when parsing files with a broken syntax ([#4364](https://github.com/stylelint/stylelint/pull/4364)).
-
-## 11.1.1
-
-- Fixed: syntax configuration for `--syntax css` ([#4335](https://github.com/stylelint/stylelint/pull/4335)).
-
-## 11.1.0
-
-- Added: `css` syntax option ([#4315](https://github.com/stylelint/stylelint/pull/4315)).
-- Fixed: `no-eol-whitespace` parsing problems for non-standard syntaxes ([#4313](https://github.com/stylelint/stylelint/pull/4313)).
-- Fixed: `selector-pseudo-class-no-unknown` false positives for `:is` selector ([#4321](https://github.com/stylelint/stylelint/pull/4321)).
-
-## 11.0.0
-
-- Changed: `--report-needless-disables` CLI flag now reports needless disables and runs linting ([#4151](https://github.com/stylelint/stylelint/pull/4151)).
-- Changed: display a violation at 1:1 for each file instead of throwing an error on unrecognised rules ([#4237](https://github.com/stylelint/stylelint/pull/4237)).
-- Changed: always return `stylelintError` as a boolean ([#4174](https://github.com/stylelint/stylelint/pull/4174)).
-- Deprecated: `createRuleTester` API ([#4279](https://github.com/stylelint/stylelint/pull/4279)).
-- Added: `--reportInvalidScopeDisables` CLI flag ([#4181](https://github.com/stylelint/stylelint/pull/4181)).
-- Added: `unicode-bom` rule ([#4225](https://github.com/stylelint/stylelint/pull/4225)).
-- Added: `max-empty-lines` autofix ([#3667](https://github.com/stylelint/stylelint/pull/3667)).
-- Added: `selector-pseudo-element-case` autofix ([#3672](https://github.com/stylelint/stylelint/pull/3672)).
-- Added: `selector-*` support for all logical combinations (`:matches`, `:has`) ([#4179](https://github.com/stylelint/stylelint/pull/4179)).
-- Added: `ignore: ["selectors-within-list"]` to `no-descending-specificity` ([#4176](https://github.com/stylelint/stylelint/pull/4176)).
-- Added: `ignoreSelectors: []` to `property-no-unknown` ([#4275](https://github.com/stylelint/stylelint/pull/4275)).
-- Fixed: Babel user configuration interfering with CSS-in-JS parser ([#4164](https://github.com/stylelint/stylelint/pull/4164)).
-- Fixed: PostCSS plugin ignoring .stylelintignore ([#4186](https://github.com/stylelint/stylelint/pull/4186)).
-- Fixed: `*-max-empty-lines` to only report one violation per function, selector, value list ([#4260](https://github.com/stylelint/stylelint/pull/4260)).
-- Fixed: `block-no-empty` crash for `@import` statements ([#4110](https://github.com/stylelint/stylelint/pull/4110)).
-- Fixed: `indentation` false positives for `<style>` tag with multiline attributes ([#4177](https://github.com/stylelint/stylelint/pull/4177)).
-- Fixed: `length-zero-no-unit` false positives for inside calc function ([#4175](https://github.com/stylelint/stylelint/pull/4175)).
-- Fixed: `max-line-length` false positives for multi-line `url()` ([#4169](https://github.com/stylelint/stylelint/pull/4169)).
-- Fixed: `no-duplicate-selectors` false positives for selectors in the same selector list ([#4173](https://github.com/stylelint/stylelint/pull/4173)).
-- Fixed: `no-unit-unknown` false positives for at-variables (Less) starting with numbers ([#4163](https://github.com/stylelint/stylelint/pull/4163)).
-- Fixed: `property-no-unknown` for `overflowX` for CSS-in-JS ([#4184](https://github.com/stylelint/stylelint/pull/4184)).
-
-## 10.1.0
-
-- Added: `selector-max-empty-lines` autofix ([#3717](https://github.com/stylelint/stylelint/pull/3717)).
-- Added: rule names for `--report-needless-disables` output ([#4071](https://github.com/stylelint/stylelint/pull/4071)).
-- Added: `--output-file` CLI flag ([#4085](https://github.com/stylelint/stylelint/pull/4085)).
-- Fixed: `function-calc-no-invalid` false positives for interpolation ([#4046](https://github.com/stylelint/stylelint/pull/4046)).
-- Fixed: `declaration-block-semicolon-space-before` autofix with `!important` annotations ([#4016](https://github.com/stylelint/stylelint/issues/4016)).
-- Fixed: `no-eol-whitespace` autofix for within comments ([#4224](https://github.com/stylelint/stylelint/pull/4224)).
-- Fixed: `no-eol-whitespace` false negatives for last line without trailing EOL ([#4224](https://github.com/stylelint/stylelint/pull/4224)).
-- Fixed: `selector-pseudo-class-no-unknown` false positives for `defined` ([#4081](https://github.com/stylelint/stylelint/pull/4081)).
-
-## 10.0.1
-
-- Fixed: minimum Node.js engine reduced to 8.7.0 ([#4032](https://github.com/stylelint/stylelint/pull/4032)).
-- Fixed: `--allow-empty-input` CLI flag ([#4029](https://github.com/stylelint/stylelint/pull/4029)).
-- Fixed: `color-no-invalid-hex` false positives for hashes in URLs ([#4035](https://github.com/stylelint/stylelint/pull/4035)).
-- Fixed: `function-linear-gradient-no-nonstandard-direction` false positives for dollar variables ([#4027](https://github.com/stylelint/stylelint/pull/4027)).
-
-## 10.0.0
-
-- Removed: Node.js 6.x support. Node.js 8.15.1 or greater is now required ([#4006](https://github.com/stylelint/stylelint/pull/4006)).
-- Removed: `styled` and `jsx` syntax options that were replaced with `css-in-js` in v9.10.0 ([#4007](https://github.com/stylelint/stylelint/pull/4007)).
-- Changed: throws error if glob matches no files, use the `--allow-empty-input` flag for the old behaviour ([#3965](https://github.com/stylelint/stylelint/pull/3965)).
-- Changed: rules are now applied in the order defined in `lib/rules/index.js` ([#3923](https://github.com/stylelint/stylelint/pull/3923)).
-- Added: `at-rule-property-requirelist` rule ([#3997](https://github.com/stylelint/stylelint/pull/3997)).
-- Added: `disallowInList` to `no-duplicate-selectors` ([#3936](https://github.com/stylelint/stylelint/pull/3936)).
-- Added: `ignore: ["comments"]` to `block-no-empty` ([#4008](https://github.com/stylelint/stylelint/pull/4008)).
-- Fixed: false negatives in declaration-based rules for CSS-in-JS ([#3933](https://github.com/stylelint/stylelint/pull/3933)).
-- Fixed: `color-no-invalid-hex` false negatives for CSS-in-JS ([#3957](https://github.com/stylelint/stylelint/pull/3957)).
-- Fixed: `feature-name-no-unknown` false positives for `prefers-color-scheme` ([#3951](https://github.com/stylelint/stylelint/pull/3951)).
-- Fixed: `function-calc-no-invalid` false positives for negative numbers ([#3921](https://github.com/stylelint/stylelint/pull/3921)).
-- Fixed: `no-descending-specificity` false positives for vendor prefixed pseudo-elements ([#3929](https://github.com/stylelint/stylelint/issues/3929)).
-- Fixed: `selector-max-*` false negatives for nested at-rules ([#3959](https://github.com/stylelint/stylelint/pull/3959)).
-- Fixed: Logical combinations pseudo-classes in `selector-max-universal` are now evaluated separately ([#4263](https://github.com/stylelint/stylelint/pull/4263)).
-- Fixed: `value-keyword-case` autofix for single-line comments within maps ([#4019](https://github.com/stylelint/stylelint/pull/4019)).
-
-## 9.10.1
-
-- Fixed: "fatal: Not a git repository" error ([#3915](https://github.com/stylelint/stylelint/pull/3915)).
-- Fixed: unintended increase in package size ([#3915](https://github.com/stylelint/stylelint/pull/3915)).
-
-## 9.10.0
-
-- Added: support for ordinary regular expressions anywhere a regex string is accepted in rule config ([#3799](https://github.com/stylelint/stylelint/pull/3799)).
-- Added: `css-in-js` syntax option that will replace the existing `styled` and `jsx` ones ([#3872](https://github.com/stylelint/stylelint/pull/3872)).
-- Added: `function-calc-no-invalid` rule ([#3833](https://github.com/stylelint/stylelint/pull/3833)).
-- Added: `ignore: ["next-sibling"]` to `selector-max-type` ([#3832](https://github.com/stylelint/stylelint/pull/3832)).
-- Added: `declaration-block-semicolon-space-after` autofix ([#3865](https://github.com/stylelint/stylelint/pull/3865)).
-- Fixed: autofix is now disabled when a stylelint processors is used ([#3873](https://github.com/stylelint/stylelint/pull/3873)).
-- Fixed: `CssSyntaxError` for functions in template literals ([#3869](https://github.com/stylelint/stylelint/pull/3869)).
-- Fixed: `no-descending-specificity` false positives for styled-components ([#3875](https://github.com/stylelint/stylelint/pull/3875)).
-- Fixed: `no-duplicate-selectors` false positives for styled-components ([#3875](https://github.com/stylelint/stylelint/pull/3875)).
-- Fixed: `selector-pseudo-class-no-unknown` false positives for `focus-visible` ([#3887](https://github.com/stylelint/stylelint/pull/3887)).
-- Fixed: `selector-max-universal` false positives for flush comments containing a comma ([#3817](https://github.com/stylelint/stylelint/pull/3817)).
-- Fixed: `shorthand-property-redundant-values` false positives for negative values ([#3888](https://github.com/stylelint/stylelint/pull/3888)).
-
-## 9.9.0
-
-- Added: `selector-list-comma-newline-after` autofix ([#3815](https://github.com/stylelint/stylelint/pull/3815)).
-- Added: `value-list-max-empty-lines` autofix ([#3814](https://github.com/stylelint/stylelint/pull/3814)).
-- Added: `ignoreSelectors: []` to `selector-no-vendor-prefix` ([#3748](https://github.com/stylelint/stylelint/pull/3748)).
-- Fixed: ignored files are no longer parsed ([#3801](https://github.com/stylelint/stylelint/pull/3801)).
-- Fixed: ignore `&:extend` for Less syntax ([#3824](https://github.com/stylelint/stylelint/pull/3824)).
-- Fixed: `--report-needless-disables` CLI flag ([#3819](https://github.com/stylelint/stylelint/pull/3819)).
-- Fixed: `font-family-no-missing-generic-family-keyword` false positives for system fonts ([#3794](https://github.com/stylelint/stylelint/pull/3794)).
-
-## 9.8.0
-
-- Added: `value-keyword-case` autofix ([#3775](https://github.com/stylelint/stylelint/pull/3775)).
-- Added: `ignore: ["pseudo-classes"]` to `max-nesting-depth` ([#3724](https://github.com/stylelint/stylelint/pull/3724)).
-- Added: `ignoreTypes:[]` to `selector-type-case` ([#3758](https://github.com/stylelint/stylelint/pull/3758)).
-- Added: `ignoreFunctions:[]` to `unit-no-unkown` ([#3736](https://github.com/stylelint/stylelint/pull/3736)).
-- Fixed: error for single-line Sass comments ([#3772](https://github.com/stylelint/stylelint/pull/3772)).
-- Fixed: `at-rule-*` false positives for Less variables and mixins ([#3767](https://github.com/stylelint/stylelint/pull/3767)).
-- Fixed: `max-empty-lines` false positives for final newlines ([#3785](https://github.com/stylelint/stylelint/pull/3785)).
-
-## 9.7.1
-
-- Fixed: `at-rule-*` false positives for Less variables and mixins ([#3759](https://github.com/stylelint/stylelint/pull/3759)).
-
-## 9.7.0
-
-- Added: allow globally installed configuration ([#3642](https://github.com/stylelint/stylelint/pull/3642)).
-- Added: `media-feature-parentheses-space-inside` autofix ([#3720](https://github.com/stylelint/stylelint/pull/3720)).
-- Added: `selector-descendant-combinator-no-non-space` autofix ([#3565](https://github.com/stylelint/stylelint/pull/3565)).
-- Added: `unit-case` autofix ([#3725](https://github.com/stylelint/stylelint/pull/3725)).
-- Fixed: false negatives for Less at-imports ([#3687](https://github.com/stylelint/stylelint/pull/3687)).
-- Fixed: SyntaxError when an empty string is used for a rule's custom message ([#3743](https://github.com/stylelint/stylelint/pull/3743)).
-- Fixed: `max-empty-lines` false positives for empty lines before `</style>` ([#3708](https://github.com/stylelint/stylelint/pull/3708)).
-- Fixed: `selector-max-specificity` false positives for functional psuedo-classes ([#3711](https://github.com/stylelint/stylelint/pull/3711)).
-
-## 9.6.0
-
-- Added: suggestions for invalid CLI options ([#3622](https://github.com/stylelint/stylelint/pull/3622)).
-- Added: `no-empty-first-line` rule ([#3650](https://github.com/stylelint/stylelint/pull/3650)).
-- Added: `at-rule-name-space-after` autofix ([#3653](https://github.com/stylelint/stylelint/pull/3653)).
-- Added: `block-closing-brace-empty-line-before` autofix ([#3598](https://github.com/stylelint/stylelint/pull/3617)).
-- Added: `block-closing-brace-space-before` autofix ([#3673](https://github.com/stylelint/stylelint/pull/3673)).
-- Added: `comment-whitespace-inside` autofix ([#3619](https://github.com/stylelint/stylelint/pull/3619)).
-- Added: `declaration-bang-space-after` autofix ([#3598](https://github.com/stylelint/stylelint/pull/3598)).
-- Added: `declaration-bang-space-before` autofix ([#3592](https://github.com/stylelint/stylelint/pull/3592)).
-- Added: `declaration-colon-newline-after` autofix ([#3588](https://github.com/stylelint/stylelint/pull/3588)).
-- Added: `function-comma-space-after` autofix ([#3555](https://github.com/stylelint/stylelint/pull/3555)).
-- Added: `function-comma-space-before` autofix ([#3596](https://github.com/stylelint/stylelint/pull/3596)).
-- Added: `function-name-case` autofix ([#3674](https://github.com/stylelint/stylelint/pull/3674)).
-- Added: `function-max-empty-lines` autofix ([#3645](https://github.com/stylelint/stylelint/pull/3645)).
-- Added: `function-parentheses-newline-inside` autofix ([#3601](https://github.com/stylelint/stylelint/pull/3601)).
-- Added: `function-whitespace-after` autofix ([#3648](https://github.com/stylelint/stylelint/pull/3648)).
-- Added: `media-feature-colon-space-after` autofix ([#3623](https://github.com/stylelint/stylelint/pull/3623)).
-- Added: `media-feature-colon-space-before` autofix ([#3637](https://github.com/stylelint/stylelint/pull/3637)).
-- Added: `media-feature-name-case` autofix ([#3685](https://github.com/stylelint/stylelint/pull/3685)).
-- Added: `media-feature-range-operator-space-after` autofix ([#3639](https://github.com/stylelint/stylelint/pull/3639)).
-- Added: `media-feature-range-operator-space-before` autofix ([#3618](https://github.com/stylelint/stylelint/pull/3618)).
-- Added: `media-query-list-comma-newline-after` autofix ([#3643](https://github.com/stylelint/stylelint/pull/3643)).
-- Added: `media-query-list-comma-space-after` autofix ([#3607](https://github.com/stylelint/stylelint/pull/3607)).
-- Added: `media-query-list-comma-space-before` autofix ([#3640](https://github.com/stylelint/stylelint/pull/3640)).
-- Added: `function-parentheses-space-inside` autofix ([#3563](https://github.com/stylelint/stylelint/pull/3563)).
-- Added: `selector-attribute-brackets-space-inside` autofix ([#3605](https://github.com/stylelint/stylelint/pull/3605)).
-- Added: `selector-attribute-operator-space-after` autofix ([#3641](https://github.com/stylelint/stylelint/pull/3641)).
-- Added: `selector-attribute-operator-space-before` autofix ([#3603](https://github.com/stylelint/stylelint/pull/3603)).
-- Added: `selector-pseudo-class-case` autofix ([#3671](https://github.com/stylelint/stylelint/pull/3671)).
-- Added: `selector-pseudo-class-parentheses-space-inside` autofix ([#3646](https://github.com/stylelint/stylelint/pull/3646)).
-- Added: `selector-type-case` autofix ([#3668](https://github.com/stylelint/stylelint/pull/3668)).
-- Added: `no-eol-whitespace` autofix ([#3615](https://github.com/stylelint/stylelint/pull/3615)).
-- Added: `no-extra-semicolons` autofix ([#3574](https://github.com/stylelint/stylelint/pull/3574)).
-- Added: `value-list-comma-newline-after` autofix ([#3616](https://github.com/stylelint/stylelint/pull/3616)).
-- Added: `value-list-comma-space-after` autofix ([#3558](https://github.com/stylelint/stylelint/pull/3558)).
-- Added: `value-list-comma-space-before` autofix ([#3597](https://github.com/stylelint/stylelint/pull/3597)).
-- Added: `baseIndentLevel` to `indentation` ([#3557](https://github.com/stylelint/stylelint/pull/3557)).
-- Fixed: autofix for 5 whitespace rules ([#3621](https://github.com/stylelint/stylelint/pull/3621)).
-- Fixed: `linebreaks` TypeError ([#3636](https://github.com/stylelint/stylelint/pull/3636)).
-- Fixed: `max-empty-lines` incorrect line reporting ([#3530](https://github.com/stylelint/stylelint/pull/3530)).
-- Fixed: `media-query-list-comma-newline-after` false positives for trailing comment ([#3657](https://github.com/stylelint/stylelint/pull/3657)).
-- Fixed: `no-descending-specificity` false positives for CSS Modules functional pseudo-classes ([#3623](https://github.com/stylelint/stylelint/pull/3623)).
-
-## 9.5.0
-
-- Added: bundled support for styles in CSS-in-JS object literals ([#3506](https://github.com/stylelint/stylelint/pull/3506)).
-- Added: `--print-config` CLI flag ([#3532](https://github.com/stylelint/stylelint/pull/3532)).
-- Added: `block-closing-brace-newline-before` autofix ([#3442](https://github.com/stylelint/stylelint/pull/3442)).
-- Added: `block-opening-brace-newline-before` autofix ([#3518](https://github.com/stylelint/stylelint/pull/3518)).
-- Added: `block-opening-brace-space-after` autofix ([#3520](https://github.com/stylelint/stylelint/pull/3520)).
-- Added: `block-opening-brace-newline-after` autofix ([#3441](https://github.com/stylelint/stylelint/pull/3441)).
-- Added: `declaration-block-semicolon-newline-after` autofix ([#3545](https://github.com/stylelint/stylelint/pull/3545)).
-- Added: `declaration-block-semicolon-space-before` autofix ([#3554](https://github.com/stylelint/stylelint/pull/3554)).
-- Added: `declaration-colon-space-after` autofix ([#3538](https://github.com/stylelint/stylelint/pull/3538)).
-- Added: `selector-list-comma-newline-before` autofix ([#3517](https://github.com/stylelint/stylelint/pull/3517)).
-- Added: `selector-list-comma-space-after` autofix ([#3490](https://github.com/stylelint/stylelint/pull/3490)).
-- Added: `unix` formatter ([#3524](https://github.com/stylelint/stylelint/pull/3524)).
-- Fixed: `selector-descendant-combinator-no-non-space` false positives for calculations with parenthesis ([#3508](https://github.com/stylelint/stylelint/pull/3508)).
-
-## 9.4.0
-
-- Added: bundled support for styles in CSS-in-JS template literals ([#3405](https://github.com/stylelint/stylelint/pull/3405)).
-- Added: `linebreaks` rule ([#3289](https://github.com/stylelint/stylelint/pull/3289)).
-- Added: `compact` formatter ([#3488](https://github.com/stylelint/stylelint/pull/3488)).
-- Added: `at-rule-semicolon-newline-after` autofix ([#3450](https://github.com/stylelint/stylelint/pull/3450)).
-- Added: `block-closing-brace-newline-after` autofix ([#3443](https://github.com/stylelint/stylelint/pull/3443)).
-- Added: `block-opening-brace-space-before` autofix ([#3438](https://github.com/stylelint/stylelint/pull/3438)).
-- Added: `declaration-block-trailing-semicolon` autofix ([#3382](https://github.com/stylelint/stylelint/pull/3382)).
-- Added: `declaration-colon-space-before` autofix ([#3445](https://github.com/stylelint/stylelint/pull/3445)).
-- Added: `property-case` autofix ([#3448](https://github.com/stylelint/stylelint/pull/3448)).
-- Added: `selector-combinator-space-after` autofix ([#3446](https://github.com/stylelint/stylelint/pull/3446)).
-- Added: `selector-combinator-space-before` autofix ([#3457](https://github.com/stylelint/stylelint/pull/3457)).
-- Added: `selector-list-comma-space-before` autofix ([#3447](https://github.com/stylelint/stylelint/pull/3447)).
-- Fixed: `block-opening-brace-newline-after` false positives for nested rule-sets prefixed with comments ([#3383](https://github.com/stylelint/stylelint/pull/3383)).
-- Fixed: `declaration-block-trailing-semicolon` report of errors with the `--fix` option ([#3493](https://github.com/stylelint/stylelint/pull/3493)).
-- Fixed: `font-family-name-quotes` false positives for `system-ui` system font ([#3463](https://github.com/stylelint/stylelint/pull/3463)).
-- Fixed: `keyframes-name-pattern` support for raw JS RegExp ([#3437](https://github.com/stylelint/stylelint/pull/3437)).
-- Fixed: `media-feature-name-no-unknown` false positives for level 5 names ([#3397](https://github.com/stylelint/stylelint/pull/3397)).
-- Fixed: `no-descending-specificity` false positives for #{&} ([#3420](https://github.com/stylelint/stylelint/pull/3420)).
-- Fixed: `no-missing-end-of-source-newline` false positives for style attributes ([#3485](https://github.com/stylelint/stylelint/pull/3485)).
-
-## 9.3.0
-
-- Added: support for `<style>` tags and `style=""` attributes in XML and XSLT files ([#3386](https://github.com/stylelint/stylelint/pull/3386)).
-- Added: `globbyOptions` option ([#3339](https://github.com/stylelint/stylelint/pull/3339)).
-- Added: `keyframes-name-pattern` rule ([#3321](https://github.com/stylelint/stylelint/pull/3321)).
-- Added: `media-feature-name-value-whitelist` rule ([#3320](https://github.com/stylelint/stylelint/pull/3320)).
-- Added: `selector-pseudo-element-colon-notation` autofix ([#3345](https://github.com/stylelint/stylelint/pull/3345)).
-- Fixed: `.vue` files throwing errors for `<style lang="stylus">` and `<style lang="postcss">` ([#3331](https://github.com/stylelint/stylelint/pull/3331)).
-- Fixed: `declaration-block-no-*` false positives for non-standard syntax ([#3381](https://github.com/stylelint/stylelint/pull/3381)).
-- Fixed: `function-whitespace-after` false positives for "/" ([#3132](https://github.com/stylelint/stylelint/pull/3132)).
-- Fixed: `length-zero-no-unit` incorrect autofix for at-includes ([#3347](https://github.com/stylelint/stylelint/pull/3347)).
-- Fixed: `max-nesting-depth` false positives for nested properties ([#3349](https://github.com/stylelint/stylelint/pull/3349)).
-- Fixed: `no-empty-source` false positives on vue external sources `<style src="*">` tag ([#3331](https://github.com/stylelint/stylelint/pull/3331)).
-- Fixed: `max-line-length` false positives for non-CSS blocks ([#3367](https://github.com/stylelint/stylelint/pull/3367)).
-- Fixed: `no-eol-whitespace` false positives for non-CSS blocks ([#3367](https://github.com/stylelint/stylelint/pull/3367)).
-- Fixed: `no-extra-semicolons` false positives for non-CSS blocks ([#3367](https://github.com/stylelint/stylelint/pull/3367)).
-- Fixed: `no-missing-end-of-source-newline` false positives for non-CSS blocks ([#3367](https://github.com/stylelint/stylelint/pull/3367)).
-
-## 9.2.1
-
-- Fixed: `cache` option hiding CssSyntaxError outputs ([#3258](https://github.com/stylelint/stylelint/pull/3258)).
-- Fixed: regression with processors (e.g. styled-components) ([#3261](https://github.com/stylelint/stylelint/pull/3261)).
-- Fixed: `no-descending-specificity` false positives for Sass nested properties ([#3283](https://github.com/stylelint/stylelint/pull/3283)).
-- Fixed: `selector-pseudo-class-no-unknown` false positives proprietary webkit pseudo classes when applied to a simple selector ([#3271](https://github.com/stylelint/stylelint/pull/3271)).
-
-## 9.2.0
-
-- Added: `selector-max-pseudo-class` rule ([#3195](https://github.com/stylelint/stylelint/pull/3195)).
-- Fixed: slow `require('stylelint')` time ([#3242](https://github.com/stylelint/stylelint/pull/3242)).
-- Fixed: autofix erroneously writing to unchanged files ([#3241](https://github.com/stylelint/stylelint/pull/3241)).
-- Fixed: false negatives for template literals within script tags by updating postcss-html dependency ([#3238](https://github.com/stylelint/stylelint/pull/3238)).
-- Fixed: `indentation` false positives for at-root ([#3225](https://github.com/stylelint/stylelint/pull/3225)).
-- Fixed: `max-empty-lines` false positives for non-CSS blocks ([#3229](https://github.com/stylelint/stylelint/pull/3229)).
-- Fixed: `no-empty-source` false positives for non-CSS blocks ([#3240](https://github.com/stylelint/stylelint/pull/3240)).
-- Fixed: `string-no-newline` false positives for non-CSS blocks ([#3228](https://github.com/stylelint/stylelint/pull/3228)).
-
-
-## 9.1.3
-
-- Fixed: invalid HTML causing CssSyntaxError by updating postcss-html dependency ([#3214](https://github.com/stylelint/stylelint/pull/3214)).
-- Fixed: empty markdown block causing CssSyntaxError by updating postcss-html dependency ([#3214](https://github.com/stylelint/stylelint/pull/3214)).
-
-## 9.1.2
-
-- Fixed: parsing of markdown files by updating postcss-html dependency ([#3207](https://github.com/stylelint/stylelint/pull/3207)).
-
-## 9.1.1
-
-- Fixed: missing `signal-exit` dependency ([#3186](https://github.com/stylelint/stylelint/pull/3186)).
-
-## 9.1.0
-
-- Added: `ignore: ["first-nested"]` to `at-rule-empty-line-before` ([#3179](https://github.com/stylelint/stylelint/pull/3179)).
-- Added: `ignore: ["first-nested"]` to `rule-empty-line-before` ([#3179](https://github.com/stylelint/stylelint/pull/3179)).
-- Fixed: unnecessary Open Collective postinstall message ([#3180](https://github.com/stylelint/stylelint/pull/3180)).
-
-## 9.0.0
-
-- Removed: Node.js 4.x support. Node.js 6.x or greater is now required ([#3075](https://github.com/stylelint/stylelint/pull/3087)).
-- Added: (experimental) support for [SASS](http://sass-lang.com/) syntax ([#2503](https://github.com/stylelint/stylelint/pull/2503)).
-- Added: allow processors to handle PostCSS errors ([#3063](https://github.com/stylelint/stylelint/pull/3063)).
-- Added: `--max-warnings` CLI flag ([#2942](https://github.com/stylelint/stylelint/pull/2942)).
-- Added: `selector-combinator-*list` rules ([#3088](https://github.com/stylelint/stylelint/pull/3088)).
-- Added: `selector-pseudo-element-*list` rules ([#3104](https://github.com/stylelint/stylelint/pull/3087)).
-- Added: `ignore: ["first-nested"]` to `custom-property-empty-line-before` ([#3104](https://github.com/stylelint/stylelint/pull/3104)).
-- Added: `ignore: ["first-nested"]` to `declaration-empty-line-before` ([#3103](https://github.com/stylelint/stylelint/pull/3103)).
-- Added: `ignoreProperties: []` to `property-no-vendor-prefix` ([#3089](https://github.com/stylelint/stylelint/pull/3089)).
-- Fixed: `font-family-name-quotes` unicode range increased ([#2974](https://github.com/stylelint/stylelint/pull/2974)).
-- Fixed: `selector-max-id` in nested at-statements ([#3113](https://github.com/stylelint/stylelint/pull/3113)).
-
-## 8.4.0
-
-- Added: `except: ["after-closing-brace"]` to `block-closing-brace-empty-line-before` ([#3011](https://github.com/stylelint/stylelint/pull/3011)).
-- Fixed: unmet peer dependency warning for `postcss-sass` ([#3040](https://github.com/stylelint/stylelint/pull/3040)).
-- Fixed: false positives for CSS within comments in `*.pcss` files ([#3064](https://github.com/stylelint/stylelint/pull/3064)).
-- Fixed: `font-family-no-missing-generic-family-keyword` configuration ([#3039](https://github.com/stylelint/stylelint/pull/3039)).
-- Fixed: `indentation` autofix for HTML ([#3044](https://github.com/stylelint/stylelint/pull/3044)).
-
-## 8.3.1
-
-- Fixed: `font-family-no-missing-generic-family-keyword` false positives for at-font-face ([#3034](https://github.com/stylelint/stylelint/issues/3034)).
-
-## 8.3.0
-
-- Added: autofix support for stdin input ([#2787](https://github.com/stylelint/stylelint/pull/2787)).
-- Added: support for `<style>` tags and markdown fences in `.vue` and `.html` files ([#2975](https://github.com/stylelint/stylelint/pull/2975)).
-- Added: `font-family-no-missing-generic-family-keyword` rule ([#2930](https://github.com/stylelint/stylelint/pull/2930)).
-- Added: `no-duplicate-at-import-rules` rule ([#2963](https://github.com/stylelint/stylelint/pull/2963)).
-- Added: `number-leading-zero` autofix ([#2921](https://github.com/stylelint/stylelint/issues/2921)).
-- Added: `number-no-trailing-zeros` autofix ([#2947](https://github.com/stylelint/stylelint/issues/2947)).
-- Added: `shorthand-property-no-redundant-values` autofix ([#2956](https://github.com/stylelint/stylelint/issues/2956)).
-- Added: `string-quotes` autofix ([#2959](https://github.com/stylelint/stylelint/pull/2959)).
-- Added: `ignore: ["custom-properties"]` option to `length-zero-no-unit` ([#2967](https://github.com/stylelint/stylelint/pull/2967)).
-- Added: `except: ["inside-block"]` option to `rule-empty-line-before` ([#2982](https://github.com/stylelint/stylelint/pull/2982)).
-- Added: `ignoreValues` to `value-no-vendor-prefix` ([#3015](https://github.com/stylelint/stylelint/pull/3015)).
-- Added: `ignoreMediaFeatureNames` to `unit-blacklist` ([#3027](https://github.com/stylelint/stylelint/pull/3027)).
-- Fixed: `comment-empty-line-before` false positives for shared-line comments ([#2986](https://github.com/stylelint/stylelint/issues/2986)).
-- Fixed: `unit-*` false positives for spaceless multiplication ([#2948](https://github.com/stylelint/stylelint/issues/2948)).
-
-## 8.2.0
-
-- Added: autofix of syntax errors in standard CSS e.g. unclosed braces and brackets ([#2886](https://github.com/stylelint/stylelint/issues/2886)).
-- Added: `length-zero-no-unit` autofix ([#2861](https://github.com/stylelint/stylelint/issues/2861)).
-- Added: `selector-max-specificity` support for level 4 evaluation context pseudo-classes ([#2857](https://github.com/stylelint/stylelint/issues/2857)).
-- Added: `ignoreUnits` option to `number-max-precision` ([#2941](https://github.com/stylelint/stylelint/pull/2941)).
-- Added: `ignoreSelectors` option to `selector-max-specificity` ([#2857](https://github.com/stylelint/stylelint/pull/2857)).
-- Added: `ignoreProperties` option to `value-keyword-case` ([#2937](https://github.com/stylelint/stylelint/pull/2937)).
-- Fixed: `*-empty-line-before` false negatives and positives when two or more `except: [*]` options were triggered ([#2920](https://github.com/stylelint/stylelint/issues/2920)).
-- Fixed: `*-empty-line-before` false positives for CSS in HTML ([#2854](https://github.com/stylelint/stylelint/issues/2854)).
-- Fixed: `rule-empty-line-before` false positives for `ignore: ["inside-block"]` and CSS in HTML ([#2894](https://github.com/stylelint/stylelint/issues/2894)).
-- Fixed: `rule-empty-line-before` false positives for `except: ["after-single-line-comment"]` and preceding shared-line comments ([#2920](https://github.com/stylelint/stylelint/issues/2920)).
-- Fixed: `selector-list-comma-newline-after` false positives for shared-line comments separated by more than once space ([#2915](https://github.com/stylelint/stylelint/issues/2915)).
-- Fixed: `selector-pseudo-class-no-unknown` false positives when using chained pseudo-classes ([#2810](https://github.com/stylelint/stylelint/issues/2810)).
-- Fixed: `string-quotes` false positives for `@charset` and single quotes ([#2902](https://github.com/stylelint/stylelint/issues/2902)).
-- Fixed: `unit-no-unknown` false positives for spaceless multiplication and division in `calc()` functions ([#2848](https://github.com/stylelint/stylelint/issues/2848)).
-
-## 8.1.1
-
-- Fixed: `--ignore-pattern` in CLI ([#2851](https://github.com/stylelint/stylelint/issues/2851)).
-
-## 8.1.0
-
-- Added: Allow specifying `codeFilename` to `createStylelintResult` for raw code linting standalone API ([#2450](https://github.com/stylelint/stylelint/issues/2450)).
-- Added: `ignorePattern` option (`--ignore-pattern` in CLI), to allow patterns of files to ignored ([#2834](https://github.com/stylelint/stylelint/issues/2834)).
-- Added: More rules now support experimental autofixing. Use `--fix` CLI parameter or `fix: true` Node.js API options property. Newly supported rules:
- - `color-hex-length` ([#2781](https://github.com/stylelint/stylelint/pull/2781)).
- - `no-missing-end-of-source-newline` ([#2772](https://github.com/stylelint/stylelint/pull/2772)).
-- Fixed: `*-empty-line-before` false positives shared-line comments and `"first-nested"` option ([#2827](https://github.com/stylelint/stylelint/issues/2827)).
-- Fixed: `color-hex-length` false positives for ID references in `url` functions ([#2806](https://github.com/stylelint/stylelint/issues/2806)).
-- Fixed: `indentation` false positives for Less parametric mixins with rule block/snippet ([#2744](https://github.com/stylelint/stylelint/pull/2744)).
-- Fixed: `no-empty-source` compatability with `postcss-html` custom syntax ([#2798](https://github.com/stylelint/stylelint/issues/2798)).
-- Fixed: `no-extra-semicolons` false negatives where instances were not detected when followed by multiple comments ([#2678](https://github.com/stylelint/stylelint/issues/2678)).
-- Fixed: `selector-max-specificity` cannot parse selector violation for Less mixins ([#2677](https://github.com/stylelint/stylelint/pull/2677)).
-
-## 8.0.0
-
-This release is accompanied by:
-
-- A new [semantic version policy](README.md#semantic-versioning-policy). The use of the tilde (`~`) in `package.json` is now recommended, e.g. `"stylelint": "~8.0.0"`, to guarantee the results of your builds ([#1865](https://github.com/stylelint/stylelint/issues/1865)).
-- A new [VISION document](VISION.md), complemented by ([#2704](https://github.com/stylelint/stylelint/pull/2704)):
- - The restructuring of the [list of rules](docs/user-guide/rules.md) into three groups:
- - [Possible errors](docs/user-guide/rules.md#possible-errors).
- - [Limit language features](docs/user-guide/rules.md#limit-language-features).
- - [Stylistic issues](docs/user-guide/rules.md#stylistic-issues).
- - The release of a new sharable config, [`stylelint-config-recommended`](https://github.com/stylelint/stylelint-config-recommended). This config only turns on the [possible error](docs/user-guide/rules.md#possible-errors) rules. [`stylelint-config-standard`](https://github.com/stylelint/stylelint-config-standard) now builds on top of the recommended config by turning on over 60 additional [stylistic rules](docs/user-guide/rules.md#stylistic-issues).
-
-Changes:
-
-- Removed: the 21 rules deprecated in [`7.8.0`](#780) & [`7.12.0`](#7120) ([#2422](https://github.com/stylelint/stylelint/issues/2422) & [#2693](https://github.com/stylelint/stylelint/issues/2693)).
- - `block-no-single-line`.
- - `custom-property-no-outside-root`
- - `declaration-block-no-ignored-properties`.
- - `declaration-block-properties-order`.
- - `function-url-data-uris`.
- - `media-feature-no-missing-punctuation`.
- - `no-browser-hacks`.
- - `no-indistinguishable-colors`.
- - `no-unsupported-browser-features`.
- - `root-no-standard-properties`
- - `rule-nested-empty-line-before`.
- - `rule-non-nested-empty-line-before`.
- - `selector-no-attribute`.
- - `selector-no-combinator`.
- - `selector-no-empty`.
- - `selector-no-id`.
- - `selector-no-type`.
- - `selector-no-universal`.
- - `selector-root-no-composition`.
- - `stylelint-disable-reason`.
- - `time-no-imperceptible`.
-- Removed: the 4 options deprecated in [`7.8.0`](#780) ([#2433](https://github.com/stylelint/stylelint/issues/2433)).
- - `"all-nested"` option for `at-rule-empty-line-before`.
- - `"blockless-group"` option for `at-rule-empty-line-before`.
- - `"between-comments"` option for `comment-empty-line-before`.
- - `"at-rules-without-declaration-blocks"` option for `max-nesting-depth`.
-- Changed: compatibility with `postcss` from `@5` to `@6` ([#2561](https://github.com/stylelint/stylelint/issues/2561)).
-- Changed: parse errors now trigger exit with non-zero code ([#2713](https://github.com/stylelint/stylelint/issues/2713)).
-- Changed: `report-needless-disables` now exits with non-zero code ([#2341](https://github.com/stylelint/stylelint/issues/2341)).
-- Changed: `*-blacklist` and `*-whitelist` (and `ignore* []` secondary options) are now case sensitive. Use regular expressions with the `i` flag for case insensitivity ([#2709](https://github.com/stylelint/stylelint/issues/2709)).
-- Changed: `*-empty-line-before` now correctly handle shared-line comments ([#2262](https://github.com/stylelint/stylelint/issues/2262)).
-- Changed: `*-empty-line-before` now consider line as empty if it contains whitespace only ([#2440](https://github.com/stylelint/stylelint/pull/2440)).
-- Changed: `function-linear-gradient-no-nonstandard-direction` now checks all linear-gradients in a value list ([#2496](https://github.com/stylelint/stylelint/pull/2496)).
-- Changed: `selector-max-compound-selectors` now checks all resolved selectors, rather than just the deepest ([#2350](https://github.com/stylelint/stylelint/issues/2350)).
-- Added: `disableDefaultIgnores` option (`--disable-default-ignores` in CLI), to allow linting of `node_modules` and `bower_components` directories ([#2464](https://github.com/stylelint/stylelint/pull/2464)).
-- Added: more efficient file ignoring with `.stylelintignore` ([#2464](https://github.com/stylelint/stylelint/pull/2464)).
-- Added: `ignore: ["child"]` option to `selector-max-type` ([#2701](https://github.com/stylelint/stylelint/pull/2701)).
-- Fixed: `declaration-block-no-redundant-longhand-properties` and `declaration-block-no-shorthand-property-overrides` understand more shorthand properties ([#2354](https://github.com/stylelint/stylelint/pull/2354)).
-- Fixed: `selector-max-type` no longer produces false negatives for when child, next-sibling and following-sibling combinators are used with `ignore: ["descendant"]` ([#2701](https://github.com/stylelint/stylelint/pull/2701)).
-
-## 7.13.0
-
-- Added: `ignoreAttributes` option to `selector-max-attribute` ([#2722](https://github.com/stylelint/stylelint/pull/2722)).
-- Fixed: `selector-combinator-space-*` false positives for CSS namespaced type selectors ([#2715](https://github.com/stylelint/stylelint/pull/2715)).
-- Fixed: `selector-max-specificity` now ignores nested non-standard selectors ([#2685](https://github.com/stylelint/stylelint/pull/2685)).
-
-## 7.12.0
-
-- Deprecated: 6 rules, each has been replaced by a more configurable alternative ([#2679](https://github.com/stylelint/stylelint/pull/2679)).
- - `function-url-data-uris` rule. Use either `function-url-scheme-blacklist` or `function-url-scheme-whitelist`.
- - `selector-no-attribute` rule. Use `selector-max-attribute` with `0` as its primary option.
- - `selector-no-combinator` rule. Use `selector-max-combinators` with `0` as its primary option.
- - `selector-no-id` rule. Use `selector-max-id` with `0` as its primary option.
- - `selector-no-type` rule. Use `selector-max-type` with `0` as its primary option.
- - `selector-no-universal` rule. Use `selector-max-universal` with `0` as its primary option.
-- Added: `function-url-scheme-blacklist` rule ([#2626](https://github.com/stylelint/stylelint/pull/2626)).
-- Added: `function-url-scheme-whitelist` regex support ([#2662](https://github.com/stylelint/stylelint/pull/2662)).
-- Added: `selector-max-attribute` rule ([#2628](https://github.com/stylelint/stylelint/pull/2628)).
-- Added: `selector-max-combinators` rule ([#2658](https://github.com/stylelint/stylelint/pull/2658)).
-- Added: `selector-max-id` rule ([#2654](https://github.com/stylelint/stylelint/pull/2654)).
-- Added: `selector-max-type` rule ([#2665](https://github.com/stylelint/stylelint/pull/2665)).
-- Added: `selector-max-universal` rule ([#2653](https://github.com/stylelint/stylelint/pull/2653)).
-- Fixed: `--fix` no longer crashes when used with ignored files ([#2652](https://github.com/stylelint/stylelint/pull/2652)).
-- Fixed: `max-*` rules now use singular and plural nouns in their messages ([#2663](https://github.com/stylelint/stylelint/pull/2663)).
-
-## 7.11.1
-
-- Fixed: `media-feature-name-*list` now accept arrays for their primary options ([#2632](https://github.com/stylelint/stylelint/pull/2632)).
-- Fixed: `selector-*` now ignore custom property sets ([#2634](https://github.com/stylelint/stylelint/pull/2634)).
-- Fixed: `selector-pseudo-class-no-unknown` now ignores Less `:extend` ([#2625](https://github.com/stylelint/stylelint/pull/2625)).
-
-## 7.11.0
-
-- Added: experimental autofixing ([#2467](https://github.com/stylelint/stylelint/pull/2467), [#2500](https://github.com/stylelint/stylelint/pull/2500), [#2529](https://github.com/stylelint/stylelint/pull/2529) and [#2577](https://github.com/stylelint/stylelint/pull/2577)). Use `--fix` CLI parameter or `fix: true` Node.js API options property. Supported rules:
- - `at-rule-empty-line-before`
- - `at-rule-name-case`
- - `color-hex-case`
- - `comment-empty-line-before`
- - `custom-property-empty-line-before`
- - `declaration-empty-line-before`
- - `indentation`
- - `rule-empty-line-before`
-- Added: `selector-max-class` rule.
-- Added: `ignore: ["custom-elements"]` option to `selector-type-no-unknown` ([#2366](https://github.com/stylelint/stylelint/pull/2366)).
-- Fixed: "Cannot find module 'pify'" regression in node@4 with npm@2 ([#2614](https://github.com/stylelint/stylelint/pull/2614)).
-- Fixed: no error is thrown when linting a string with `cache` enabled ([#2494](https://github.com/stylelint/stylelint/pull/2494)).
-- Fixed: Less `:extend` is now ignored ([#2571](https://github.com/stylelint/stylelint/pull/2571)).
-- Fixed: `function-parentheses-space-inside` now ignores functions without parameters ([#2587](https://github.com/stylelint/stylelint/pull/2587)).
-- Fixed: `length-zero-no-unit` now correctly handles newlines and no spaces after colon ([#2477](https://github.com/stylelint/stylelint/pull/2477)).
-- Fixed: `selector-descendant-combinator-no-non-space` and `selector-combinator-space-before/after` now understand and check `>>>` shadow-piercing combinator ([#2509](https://github.com/stylelint/stylelint/pull/2509)).
-- Fixed: `selector-descendant-combinator-no-non-space` now ignores Less guards ([#2557](https://github.com/stylelint/stylelint/pull/2557)).
-- Fixed: `selector-pseudo-class-no-unknown` now checks `@page` at-rules and supports `@page` pseudo-classes ([#2445](https://github.com/stylelint/stylelint/pull/2445)).
-- Fixed: `selector-pseudo-class-no-unknown` now considers `focus-ring`, `playing` and `paused` to be known ([#2507](https://github.com/stylelint/stylelint/pull/2507)).
-- Fixed: `selector-type-no-unknown` now ignores MathML tags ([#2478](https://github.com/stylelint/stylelint/pull/2478)).
-- Fixed: `selector-type-no-unknown` now ignores the `/deep/` shadow-piercing combinator ([#2508](https://github.com/stylelint/stylelint/pull/2508)).
-- Fixed: `value-keyword-case` now ignores variables with signs ([#2558](https://github.com/stylelint/stylelint/pull/2558)).
-
-## 7.10.1
-
-- Fixed: scope is kept when using `schema.preceedingPlugins` ([#2455](https://github.com/stylelint/stylelint/pull/2455)).
-
-## 7.10.0
-
-- Added: support for asynchronous plugin rules ([#2351](https://github.com/stylelint/stylelint/pull/2351)).
-- Added: `cache` option to store the info about processed files in order to only operate on the changed ones the next time you run stylelint ([#2293](https://github.com/stylelint/stylelint/pull/2293)).
-- Added: `at-rule-semicolon-space-before` rule ([#2388](https://github.com/stylelint/stylelint/pull/2388)).
-- Added: `ignore: ["comments"]` to `max-empty-lines` ([#2401](https://github.com/stylelint/stylelint/pull/2401)).
-- Added: `ignore: ["default-namespace"]` to `selector-type-no-unknown` ([#2461](https://github.com/stylelint/stylelint/pull/2461)).
-- Added: `ignoreDefaultNamespaces` option to `selector-type-no-unknown` ([#2461](https://github.com/stylelint/stylelint/pull/2461)).
-- Fixed: more helpful messages when file globs do not match any files ([#2328](https://github.com/stylelint/stylelint/pull/2328)).
-- Fixed: `decl/` folder of Flow types is shipped with the package, for consumers that use Flow ([#2322](https://github.com/stylelint/stylelint/issues/2322)).
-- Fixed: `function-url-scheme-whitelist` was working incorrectly if more than one URL scheme were specified ([#2447](https://github.com/stylelint/stylelint/pull/2447)).
-- Fixed: `no-duplicate-selector` now includes the duplicate selector's first usage line in message ([#2415](https://github.com/stylelint/stylelint/pull/2415)).
-- Fixed: `no-extra-semicolons` false positives for comments after custom property sets ([#2396](https://github.com/stylelint/stylelint/pull/2396)).
-- Fixed: `value-keyword-case` false positives for `attr`, `counter`, `counters` functions and ` counter-reset` property ([#2407](https://github.com/stylelint/stylelint/pull/2407)).
-- Fixed: Less mergeable properties are now ignored ([#2570](https://github.com/stylelint/stylelint/pull/2570)).
-
-## 7.9.0
-
-- Added: `ignoreFontFamilyName` option to `font-family-no-duplicate` ([#2314](https://github.com/stylelint/stylelint/pull/2314)).
-- Added: `ignorePattern` option to `max-line-length` ([#2333](https://github.com/stylelint/stylelint/pull/2333)).
-- Fixed: update version of `lodash` dependency to match feature usage, fixing a conflict with Modernizr ([#2353](https://github.com/stylelint/stylelint/pull/2353)).
-- Fixed: `color-hex-case` false positives for ID references in `url` functions ([#2338](https://github.com/stylelint/stylelint/pull/2338)).
-- Fixed: `max-line-length` now reports correct column for SCSS comments ([#2340](https://github.com/stylelint/stylelint/pull/2340)).
-- Fixed: `selector-class-pattern` false positive in SCSS when combining interpolated and nested selectors ([#2344](https://github.com/stylelint/stylelint/pull/2344)).
-- Fixed: `selector-type-case` false positive for placeholder selectors ([#2360](https://github.com/stylelint/stylelint/pull/2360)).
-
-## 7.8.0
-
-- Deprecated: 15 rules ([#2197](https://github.com/stylelint/stylelint/pull/2197), [#2285](https://github.com/stylelint/stylelint/pull/2285) & [#2309](https://github.com/stylelint/stylelint/pull/2309)).
- - `block-no-single-line`. Use `block-opening-brace-newline-after` and `block-closing-brace-newline-before` rules with the option `"always"` instead.
- - `declaration-block-properties-order`. Use the [`stylelint-order`](https://github.com/hudochenkov/stylelint-order) plugin pack instead.
- - `rule-nested-empty-line-before` and `rule-non-nested-empty-line-before`. Use the new `rule-empty-line-before` rule instead.
- - `time-no-imperceptible`. Use the new `time-min-milliseconds` rule with `100` as its primary option.
- - It is beyond the scope of stylelint's core package to effectively validate against the CSS spec. Please investigate [csstree](https://github.com/csstree/csstree) and [css-values](https://github.com/ben-eb/css-values) for this functionality, and contribute to those projects and to stylelint plugins wrapping them. csstree already has a [stylelint plugin](https://github.com/csstree/stylelint-validator), and css-values needs one to be developed. The following rules are deprecated for this reason.
- - `media-feature-no-missing-punctuation`.
- - `selector-no-empty`.
- - A plugin is a better package for a rule that wraps a third-party library. The following rules are deprecated for this reason. We encourage users to create and help maintain plugins for these rules.
- - `no-browser-hacks`
- - `no-indistinguishable-colors`
- - `no-unsupported-browser-features`
- - The following rules did not seem useful. If you liked these rules, please create plugins for them.
- - `custom-property-no-outside-root`
- - `root-no-standard-properties`
- - `selector-root-no-composition`.
- - The following rules did not work well.
- - `stylelint-disable-reason` could not enforce providing a reason.
- - `declaration-block-no-ignored-properties` could not reliably account for *replaced elements*.
-- Deprecated: 4 options ([#2213](https://github.com/stylelint/stylelint/pull/2213)).
- - `"all-nested"` option for `at-rule-empty-line-before`. Use the `"inside-block"` option instead.
- - `"blockless-group"` option for `at-rule-empty-line-before`. Use the `"blockless-after-blockless"` option instead.
- - `"between-comments"` option for `comment-empty-line-before`. Use the `"after-comment"` option instead.
- - `"at-rules-without-declaration-blocks"` option for `max-nesting-depth`. Use the `"blockless-at-rules"` option instead.
-- Added: `time-min-milliseconds` rule, to replace `time-no-imperceptible` ([#2289](https://github.com/stylelint/stylelint/pull/2289)).
-- Added: `except: ["after-same-name"]` option to `at-rule-empty-line-before` ([#2225](https://github.com/stylelint/stylelint/pull/2225)).
-- Fixed: `configOverrides` now work with `extends` ([#2295](https://github.com/stylelint/stylelint/pull/2295)).
-- Fixed: `max-line-length` no longer reports incorrect column positions for lines with `url()` or `import` ([#2287](https://github.com/stylelint/stylelint/pull/2287)).
-- Fixed: `selector-pseudo-class-no-unknown` no longer warns for proprietary webkit pseudo-classes ([#2264](https://github.com/stylelint/stylelint/pull/2264)).
-- Fixed: `unit-no-unknown` accepts `fr` units ([#2308](https://github.com/stylelint/stylelint/pull/2308)).
-
-## 7.7.1
-
-- Fixed: ensure only absolute filepaths are passed to processors ([#2207](https://github.com/stylelint/stylelint/pull/2207)).
-
-## 7.7.0
-
-- Added: `stylelint.formatters` exposed in public Node.js API ([#2190](https://github.com/stylelint/stylelint/pull/2190)).
-- Added: `stylelint.utils.checkAgainstRule` for checking CSS against a standard stylelint rule *within your own rule* ([#2173](https://github.com/stylelint/stylelint/pull/2173)).
-- Added: `allow-empty-input` flag to CLI ([#2117](https://github.com/stylelint/stylelint/pull/2117)).
-- Added: `except: ["after-rule"]` option to `rule-nested-empty-line-before` ([#2188](https://github.com/stylelint/stylelint/pull/2188)).
-- Fixed: regression causing `--stdin-filename` in CLI and `codeFilename` in Node.js API to error if a non-existent filename is provided ([#2128](https://github.com/stylelint/stylelint/pull/2128)).
-- Fixed: a boolean CLI flag (e.g. `--quiet`) placed before an input glob no longer causes the input to be ignored ([#2186](https://github.com/stylelint/stylelint/pull/2186)).
-- Fixed: the `node_modules` and `bower_components` directories are correctly ignored by default when stylelint is used as a PostCSS plugin ([#2171](https://github.com/stylelint/stylelint/pull/2171)).
-- Fixed: bug where some Node.js errors in special cases did not cause the CLI to exit with a non-zero code ([#2140](https://github.com/stylelint/stylelint/pull/2140))
-- Fixed: false positives related to LESS detached rulesets ([#2089](https://github.com/stylelint/stylelint/pull/2089)).
-- Fixed: `color-named` now ignores SCSS maps, so map property names can be color names ([#2182](https://github.com/stylelint/stylelint/pull/2182)).
-- Fixed: `comment-whitespace-inside` no longer complains about `/*!` comments with non-space whitespace (e.g. newlines) ([#2121](https://github.com/stylelint/stylelint/pull/2121)).
-- Fixed: `media-feature-name-no-vendor-prefix` no longer throws syntax errors on unknown unprefixed variants ([#2152](https://github.com/stylelint/stylelint/pull/2152)).
-- Fixed: `selector-max-compound-selectors` ignores SCSS nested declarations ([#2102](https://github.com/stylelint/stylelint/pull/2102)).
-- Fixed: `selector-pseudo-class-no-unknown` no longer reports false positives for custom selectors ([#2147](https://github.com/stylelint/stylelint/pull/2147)).
-
-## 7.6.0
-
-- Added: option `customSyntax` (for Node.js API) and `--custom-syntax` (for CLI).
-- Added: `font-family-no-duplicate-names` rule.
-- Fixed: CLI now understands absolute paths for the `--custom-formatter` option.
-- Fixed: the `string` and `verbose` formatters now use `dim` instead of `gray` for greater compatibility with different terminal color schemes.
-- Fixed: `media-feature-parentheses-space-inside` handles comments within the parentheses.
-- Fixed: `selector-no-qualifying-type` now ignores SCSS `%placeholders`.
-
-## 7.5.0
-
-- Added: `selector-no-empty` rule.
-- Fixed: if no config is found relative to the stylesheet, look for one relative to `process.cwd()`.
-- Fixed: lookup `ignoreFiles` globs relative to `process.cwd()` if config is directly passed as a JS object and no `configBasedir` is provided.
-- Fixed: SugarSS no longer reports wrong column number in `block-no-empty`.
-- Fixed: `configOverrides` work with `plugins`, `extends`, and `processors`.
-- Fixed: a bug causing inaccuracy in nested `stylelint-disable` and `stylelint-enable` comments.
-- Fixed: `function-calc-no-unspaced-operator` false positives for SCSS interpolation.
-- Fixed: `no-descending-specificity` now ignores custom property sets.
-- Fixed: `value-keyword-case` false positives for some camel-case SVG keywords.
-
-## 7.4.2
-
-- Fixed: regression where using `null` to turn off a rule caused errors.
-
-## 7.4.1
-
-- Fixed: regression where using `null` for rules that take an array for their primary option would trigger a validation warning.
-
-## 7.4.0
-
-- Added: each stylesheet looks up configuration from its own path. Different files can now use different configurations during the same linting process.
-- Added: relative path extends, plugins, and processors try to load from `process.cwd()` if they aren't found relative to the invoking configuration.
-- Added: `/* stylelint-disable-next-line */` comments.
-- Added: `media-feature-name-blacklist` rule.
-- Added: `media-feature-name-whitelist` rule.
-- Added: `ignore: ["after-declaration"]` option to `declaration-empty-line-before`.
-- Added: `except: ["empty"]` option to `function-url-quotes`.
-- Fixed: `function-linear-gradient-no-nonstandard-direction` no longer warns when vendor-prefixed linear-gradient properties are used correctly.
-- Fixed: `no-extra-semicolons` now ignores the semicolon that comes after the closing brace of a custom property set.
-- Fixed: `no-unknown-animations` no longer delivers false positives when there are multiple animation names.
-- Fixed: `number-*` rules now ignore numbers in comments and strings.
-- Fixed: `value-keyword-case` now ignores system color keywords.
-
-## 7.3.1
-
-- Fixed: regression in 7.3.0 which caused a "Cannot read property 'length' of undefined" error on a certain selector.
-
-## 7.3.0
-
-- Added: `processors` can accept options objects.
-- Added: `ignore: ["inside-function"]` option to `color-named`.
-- Fixed: `--ignore-path` and `--report-needless-disables` no longer fails when used together.
-- Fixed: `block-closing-brace-newline-after` and `block-closing-brace-space-after` now allow a trailing semicolon after the closing brace of a block.
-- Fixed: `block-no-single-line` now ignores empty blocks.
-- Fixed: `declaration-block-no-ignored-properties` now uses the value of the last occurrence of a triggering property.
-- Fixed: `indentation` now correctly handles `_` hacks on property names.
-- Fixed: `property-no-unknown` now ignores SCSS nested properties.
-
-## 7.2.0
-
-- Added: `--report-needless-disables` and `reportNeedlessDisables` option.
-- Added: `--ignore-disables` and `ignoreDisables` option.
-- Added: `--config-basedir` option to CLI.
-- Added: `declaration-block-no-redundant-longhand-properties` rule.
-- Added: `function-url-scheme-whitelist` rule.
-- Added: `media-feature-name-no-unknown` rule.
-- Added: `selector-descendant-combinator-no-non-space` rule.
-- Added: `value-list-max-empty-lines` rule.
-- Added: `ignoreProperties` option to `color-named`.
-- Added: `ignore: ["consecutive-duplicates-with-different-values"]` option to `declaration-block-no-duplicate-properties`.
-- Added: `ignore: ["comments"]` option to `max-line-length`.
-- Added: `ignoreAtRules` option to `max-nesting-depth`.
-- Added: `ignoreProperties` option to `unit-blacklist` and `unit-whitelist`
-- Fixed: no longer parsing ignored files before ignoring them.
-- Fixed: `configFile` and `configBasedir` can now be used together.
-- Fixed: `max-line-length` now correctly handles Windows line endings.
-- Fixed: `no-descending-specificity` treats selectors with pseudo-elements as distinct from their counterparts without pseudo-classes, because they actually target different elements.
-- Fixed: `no-unknown-animations` and `unit-blacklist` now handle numbers without leading zeros.
-- Fixed: `root-no-standard-properties` now handles custom property sets.
-- Fixed: `selector-no-type` `ignore: ["descendant"]` option now correctly handles descendants within a selector list.
-- Fixed: `selector-pseudo-class-no-unknown` now understands the Shadow DOM selectors of `host` and `host-context`.
-- Fixed: `selector-pseudo-element-no-unknown` now understands the Shadow DOM selector of `slotted`.
-
-## 7.1.0
-
-- Added: `block-closing-brace-empty-line-before` rule.
-- Added: `comment-no-empty` rule.
-- Added: `custom-property-empty-line-before` rule.
-- Added: `declaration-empty-line-before` rule.
-- Added: `media-feature-name-case` rule.
-- Added: `selector-nested-pattern` rule.
-- Added: `selector-pseudo-class-blacklist` rule.
-- Added: `selector-pseudo-class-whitelist` rule.
-- Added: regex support to the `ignore*` secondary options of the `*-no-unknown` rules.
-- Added: `ignore: ["blockless-after-same-name-blockless"]` option to `at-rule-empty-line-before`.
-- Added: `except: ["blockless-after-same-name-blockless"]` option to `at-rule-empty-line-before`.
-- Added: `ignore: ["empty-lines"]` option to `no-eol-whitespace`.
-- Added: `ignoreTypes` option to `selector-no-type` to whitelist allowed types for selectors.
-- Fixed: `color-named` now ignores declarations that accept *custom idents*.
-- Fixed: `font-family-name-quotes` correctly handles numerical font weights for the `font` shorthand property.
-- Fixed: `indentation` now correctly handles Windows line endings within parentheticals.
-- Fixed: `media-feature-no-missing-punctuation` now ignores media features containing complex values e.g. `(min-width: ($var - 20px))` and `(min-width: calc(100% - 20px))`.
-- Fixed: `no-descending-specificity` message to correctly show which selector should come first.
-- Fixed: `selector-combinator-space-after` and `selector-combinator-space-before` now ignore operators within parenthetical non-standard constructs.
-
-## 7.0.3
-
-- Fixed: bug causing rules in extended configs to be merged with, rather than replaced by, the extending config.
-- Fixed: `selector-class-pattern` now ignores fractional keyframes selectors.
-- Fixed: `selector-max-specificity` now ignores selectors containing the `matches()` pseudo-class, and warns if the underlying `specificity` module cannot parse the selector.
-- Fixed: `selector-no-type` with secondary option `ignore: ["descendant"]` will now resolve nested selectors.
-
-## 7.0.2
-
-- Fixed: `at-rule-blacklist`, `at-rule-whitelist`, `comment-word-blacklist`, `selector-attribute-operator-blacklist`, `selector-attribute-operator-whitelist` now accept array as first option.
-- Fixed: `unit-*` rules now ignore CSS hacks.
-
-## 7.0.1
-
-- Fixed: missing `known-css-properties` dependency.
-
-## 7.0.0
-
-- Removed: `--extract` and `extractSyleTagsFromHtml` options. Instead, [build](/docs/developer-guide/processors.md) and [use](/docs/user-guide/configuration.md#processors) processors.
-- Removed: support for plugin rule names that aren't namespaced, i.e. only `your-namespace/your-rule-name` rule names are supported. (If your plugin provides only a single rule or you can't think of a good namespace, you can simply use `plugin/my-rule`.)
-- Removed: `--verbose` CLI flag. Use `--formatter verbose` instead.
-- Removed: NodeJS `0.12.x` support. `4.2.1 LTS` or greater is now required.
-- Removed: `media-query-parentheses-space-inside` rule. Use the new `media-feature-parentheses-space-inside` rule instead.
-- Removed: `no-missing-eof-newline` rule. Use the new rule `no-missing-end-of-source-newline` instead.
-- Removed: `number-zero-length-no-unit` rule. Use the `length-zero-no-unit` rule instead.
-- Removed: `property-unit-blacklist` rule. Use the `declaration-property-unit-blacklist` rule instead.
-- Removed: `property-unit-whitelist` rule. Use the `declaration-property-unit-whitelist` rule instead.
-- Removed: `property-value-blacklist` rule. Use the `declaration-property-value-blacklist` rule instead.
-- Removed: `property-value-whitelist` rule. Use the `declaration-property-value-whitelist` rule instead.
-- Removed: `"emptyLineBefore"` option for `declaration-block-properties-order`. If you use this option, please consider creating a plugin for the community.
-- Removed: `"single-where-required"`, `"single-where-recommended"`, `"single-unless-keyword"`, `"double-where-required"`, `"double-where-recommended"` and `"double-unless-keyword"` options for `font-family-name-quotes`. Instead, use the `"always-unless-keyword"`, `always-where-recommended` or `always-where-required` options together with the `string-quotes` rule.
-- Removed: `"single"`, `"double"` and `"none"` options for `function-url-quotes`. Instead, use the `"always"` or `"never"` options together with the `string-quotes` rule.
-- Removed: `"hierarchicalSelectors"` option for `indentation`. If you use this option, please consider creating a plugin for the community.
-- Removed: `stylelint.utils.cssWordIsVariable()`.
-- Removed: `stylelint.utils.styleSearch()`. Use the external [style-search](https://github.com/davidtheclark/style-search) module instead.
-- Changed: invalid configuration sets result's `stylelintError` to `true`, which in turn causes CLI to exit with a non-zero code.
-- Changed: non-standard syntaxes are automatically inferred from file extensions `.scss`, `.less`, and `.sss`.
-- Changed: `.stylelintignore` now uses `.gitignore` syntax, and stylelint looks for it in `process.cwd()`.
-- Changed: files matching ignore patterns no longer receive an "info"-severity message, which was always printed by the string formatter. Instead, the file's stylelint result object receives an `ignored: true` property, which various formatters can use as needed. The standard `string` formatter prints nothing for ignored files; but when the `verbose` formatter is used, ignored files are included in the filelist.
-- Changed: plugin arrays in extended configs are now concatenated with the main config's plugin array, instead of being overwritten by it. So plugins from the main config and from extended configs will all be loaded.
-- Changed: `-v` flag to display version number.
-- Changed: `comment-word-blacklist` no longer ignores words within copyright comments.
-- Changed: `comment-word-blacklist` will now identify strings within comments, rather than just at the beginning of, when the string option is used.
-- Changed: `declaration-block-no-ignored-properties` now detects use of `min-width` and `max-width` with `inline`, `table-row`, `table-row-group`, `table-column` and `table-column-group` elements.
-- Changed: `declaration-block-no-ignored-properties` now detects use of `overflow`, `overflow-x` and `overflow-y` with `inline` elements.
-- Changed: `declaration-block-no-ignored-properties` now ignores the combination of `float` and `display: inline-block | inline`.
-- Changed: `font-family-name-quotes` now checks the `font` property in addition to the `font-family` property.
-- Changed: `font-family-name-quotes` treats `-apple-*` and `BlinkMacSystemFont` system fonts as keywords that should never be wrapped in quotes.
-- Changed: `indentation` now checks inside of parentheses by default. If you use the `indentInsideParens: "once"` secondary option, simply remove it from your config. If you do not want to check inside of parentheses, use the new `ignore: ["inside-parens"]` secondary option. The `indentInsideParens: "twice"` and `indentInsideParens: "once-at-root-twice-in-block"` secondary options are unchanged.
-- Changed: `keyframe-declaration-no-important` now checks vendor prefixed `@keyframes` at-rules.
-- Changed: `selector-attribute-quotes` now checks attribute selectors with whitespace around the operator or inside the brackets.
-- Changed: `time-no-imperceptible` now checks vendor prefixed properties.
-- Changed: `unit-*` rules now check `@media` values too.
-- Added: plugins can allow primary option arrays by setting `ruleFunction.primaryOptionArray = true`.
-- Added: [processors](/docs/user-guide/configuration.md#processors).
-- Added: `media-feature-parentheses-space-inside` rule.
-- Added: `no-missing-end-of-source-newline` rule.
-- Added: `property-no-unknown` rule.
-- Fixed: Better handling quotes in selector attribute with multiple attributes.
-- Fixed: `no-unknown-animations` now classifies vendor prefixed `@keyframes` at-rules as known.
-
-## 6.9.0
-
-- Added: `defaultSeverity` configuration option.
-- Added: invoking the CLI with no arguments and no stdin (i.e. just `stylelint`) is equivalent to `stylelint --help`.
-- Added: `function-url-no-scheme-relative` rule.
-- Added: `selector-attribute-quotes` rule.
-- Fixed: the CLI now uses `process.exitCode` with `stdOut` to allow the process to exit naturally and avoid truncating output.
-- Fixed: `function-calc-no-unspaced-operator` correctly interprets negative fractional numbers without leading zeros and those wrapped in parentheses.
-- Fixed: `no-extra-semicolons` now ignores semicolons after Less mixins.
-- Fixed: `number-max-precision` now ignores uppercase and mixed case `@import` at-rules.
-- Fixed: `selector-max-specificity` no longer crashes on selectors containing `:not()` pseudo-classes.
-- Fixed: `time-no-imperceptible` correctly handles negative time.
-
-## 6.8.0
-
-- Deprecated: `-e` and `--extract` CLI flags, and the `extractStyleTagsFromHtml` Node.js API option. If you use these flags or option, please consider creating a processor for the community.
-- Added: `at-rule-no-unknown` rule.
-- Added: `no-empty-source` rule.
-- Added: `except: ["after-single-line-comment"]` option for `rule-non-nested-empty-line-before`.
-- Added: `ignoreProperties: []` option for `declaration-block-no-duplicate-properties`.
-- Fixed: accuracy of warning positions for empty blocks when using SugarSS parser.
-
-## 6.7.1
-
-- Fixed: `block-*-brace-*-before` CRLF (`\r\n`) warning positioning.
-- Fixed: `no-descending-specificity` now does comparison of specificity using ints, rather than strings.
-- Fixed: `selector-no-type` and `selector-type-case` now ignore non-standard keyframe selectors (e.g. within an SCSS mixin).
-- Fixed: `selector-type-no-unknown` no longer reports fractional keyframe selectors.
-
-## 6.7.0
-
-- Added: `ignoreFunctions: []` option for `function-name-case`.
-- Fixed: rules using `findFontFamily` util correctly interpret `<font-size>/<line-height>` values with unitless line-heights.
-- Fixed: `indentation` better understands nested parentheticals that aren't just Sass maps and lists.
-- Fixed: `no-unsupported-browser-features` message now clearly states that only *fully* supported features are allowed.
-- Fixed: `selector-max-specificity` no longer reports that a selector with 11 elements or more has a higher specificity than a selector with a single classname.
-- Fixed: `selector-type-no-unknown` no longer warns for complex keyframe selectors.
-
-## 6.6.0
-
-- Deprecated: `number-zero-length-no-unit`. Use `length-zero-no-unit` instead.
-- Deprecated: `property-*-blacklist` and `property-*-whitelist`. Use `declaration-property-*-blacklist` and `declaration-property-*-whitelist` instead.
-- Deprecated: `-v` and `--verbose` CLI flags. Use `-f verbose` or `--formatter verbose` instead.
-- Deprecated: `stylelint.util.styleSearch()`. Use the external module [style-search](https://github.com/davidtheclark/style-search) instead.
-- Added: option `ignorePath` (for JS) and `--ignore-path` (for CLI).
-- Added: `-h` alias for `--help` CLI flag.
-- Added: `at-rule-blacklist` rule.
-- Added: `at-rule-name-newline-after` rule.
-- Added: `at-rule-whitelist` rule.
-- Added: `ignore: "blockless-group"` option for `at-rule-empty-line-before`.
-- Added: `ignoreAtRules: []` option for `at-rule-empty-line-before`.
-- Added: `function-blacklist` now accepts regular expressions.
-- Added: `function-whitelist` now accepts regular expressions.
-- Fixed: crash when tty columns is reported as zero, which happened when running stylelint on Travis CI in OSX.
-- Fixed: selector-targeting rules ignore Less mixins and extends.
-- Fixed: `at-rule-name-newline-after` now correctly accepts one *or more* newlines.
-- Fixed: `declaration-block-semicolon-newline-before` now correctly accepts one *or more* newlines.
-- Fixed: `function-url-quotes` ignores values containing `$sass` and `@less` variables.
-- Fixed: `function-whitespace-after` ignores `postcss-simple-vars`-style interpolation.
-- Fixed: `indentation` better understands nested parentheticals, like nested Sass maps.
-- Fixed: `no-extra-semicolons` reports errors on the correct line.
-- Fixed: `selector-combinator-space-*` rules now ignore escaped combinator-like characters.
-- Fixed: `selector-type-no-unknown` ignores non-standard usage of percentage keyframe selectors (e.g. within an SCSS mixin).
-- Fixed: `value-keyword-case` now ignores custom idents of properties `animation`, `font`, `list-style`.
-
-## 6.5.1
-
-- Deprecated: `"emptyLineBefore"` option for `declaration-block-properties-order`. If you use this option, please consider creating a plugin for the community.
-- Deprecated: `"single-where-required"`, `"single-where-recommended"`, `"single-unless-keyword"`, `"double-where-required"`, `"double-where-recommended"` and `"double-unless-keyword"` options for `font-family-name-quotes`. Instead, use the `"always-unless-keyword"`, `always-where-recommended` or `always-where-required` options together with the `string-quotes` rule.
-- Deprecated: `"single"`, `"double"` and `"none"` options for `function-url-quotes`. Instead, use the `"always"` or `"never"` options together with the `string-quotes` rule.
-- Deprecated: `"hierarchicalSelectors"` option for `indentation`. If you use this option, please consider creating a plugin for the community.
-- Fixed: the string formatter no longer errors on non-rule errors.
-- Fixed: `selector-list-comma-*` rules now ignore Less mixins.
-- Fixed: `selector-max-compound-selectors` no longer errors on Less mixins.
-- Fixed: `selector-type-no-unknown` now ignores all *An+B notation* and linguistic pseudo-classes.
-- Fixed: `selector-type-no-unknown` now ignores obsolete HTML tags and `<hgroup>`.
-
-## 6.5.0
-
-- Added: `selector-max-compound-selectors` rule.
-- Fixed: `babel-polyfill` removed so it doesn't clash with other processes using `babel-polyfill`.
-- Fixed: `selector-type-case` and `selector-type-no-unknown` rules now ignore SCSS placeholder selectors.
-
-## 6.4.2
-
-- Fixed: `selector-pseudo-class-case`, `selector-pseudo-class-no-unknown`, `selector-pseudo-element-case`, `selector-pseudo-element-no-unknown` rules now ignore SCSS variable interpolation.
-- Fixed: `selector-type-no-unknown` now ignores nested selectors and keyframe selectors.
-
-## 6.4.1
-
-- Fixed: `shorthand-property-no-redundant-values` now ignores `background`, `font`, `border`, `border-top`, `border-bottom`, `border-left`, `border-right`, `list-style`, `transition` properties.
-- Fixed: `unit-no-unknown` now ignores hex colors.
-
-## 6.4.0
-
-- Added: `keyframe-declaration-no-important` rule.
-- Added: `selector-attribute-operator-blacklist` rule.
-- Added: `selector-attribute-operator-whitelist` rule.
-- Added: `selector-pseudo-class-no-unknown` rule.
-- Added: `selector-type-no-unknown` rule.
-- Fixed: string formatter no longer errors on multi-byte `message`.
-- Fixed: catch errors thrown by `postcss-selector-parser` and register them as PostCSS warnings, providing a better UX for editor plugins.
-- Fixed: some rules now better handle case insensitive CSS identifiers.
-- Fixed: `font-family-name-quotes`, `media-feature-no-missing-punctuation`, `media-query-list-comma-newline-after`, `media-query-list-comma-newline-before`, `media-query-list-comma-space-after` and `media-query-list-comma-space-before` rules now better ignore SCSS, Less variables and nonstandard at-rules.
-- Fixed: `no-unknown-animations` now ignores `ease` value.
-- Fixed: `unit-blacklist`, `unit-case`, `unit-no-unknown`, `unit-whitelist` now better accounts interpolation.
-- Fixed: `unit-no-unknown` no longer breaks Node.js 0.12 (because we've included the Babel polyfill).
-- Fixed: `value-keyword-case` now ignores custom idents of properties `animation-name`, `counter-increment`, `font-family`, `grid-row`, `grid-column`, `grid-area`, `list-style-type`.
-- Fixed: wrong example for `always-multi-line` in rule `block-opening-brace-newline-before` documentation.
-
-## 6.3.3
-
-- Fixed: `block-closing-brace-newline-before` no longer delivers false positives for extra semicolon.
-- Fixed: `declaration-block-no-ignored-properties` now detects use of `vertical-align` with block-level elements.
-- Fixed: `font-family-name-quotes` is now case insensitive when hunting for font-family properties.
-- Fixed: `number-zero-length-no-unit` now ignores `deg`, `grad`, `turn` and `rad` units.
-- Fixed: `selector-no-type` does a better job when ignoring descendant and compound selectors.
-
-## 6.3.2
-
-- Fixed: `shorthand-property-no-redundant-values` now handles uppercase values properly.
-
-## 6.3.1
-
-- Fixed: `declaration-block-no-ignored-properties` now longer crashes on nested rules.
-
-## 6.3.0
-
-- Deprecated: support for plugin rule names that aren't namespaced i.e. only `your-namespace/your-rule-name` rule names are supported. If your plugin provides only a single rule or you can't think of a good namespace, you can simply use `plugin/my-rule`).
-- Added: support for plugins that provides an array of rules.
-- Added: support for extracting and linting CSS from within HTML sources.
-- Added: `--stdin-filename` option to CLI.
-- Added: `at-rule-name-space-after` rule.
-- Added: `no-extra-semicolons` rule.
-- Added: `selector-attribute-operator-space-after` rule.
-- Added: `selector-attribute-operator-space-before` rule.
-- Added: `selector-max-empty-lines` rule.
-- Added: `selector-pseudo-element-no-unknown` rule.
-- Added: flexible support for end-of-line comments in `at-rule-semicolon-newline-after`, `block-opening-brace-newline-after`, and `declaration-block-semicolon-newline-after`.
-- Fixed: string and verbose formatters no longer use an ambiguous colour schemes.
-- Fixed: string formatter no longer outputs an empty line if there are no problems.
-- Fixed: all rules now handle case insensitive CSS identifiers.
-- Fixed: `function-comma-newline-after` now allows end-of-line comments.
-- Fixed: `function-url-quotes` now ignores spaces within `url()`.
-- Fixed: `no-descending-specificity` now ignores trailing colons within selectors.
-- Fixed: `no-indistinguishable-colors` now ignores keyword color names within `url()`.
-- Fixed: `number-max-precision` now ignores `@import` at-rules and `url()` functions.
-- Fixed: `selector-class-pattern` and `selector-id-pattern` rules now ignore SCSS variable interpolation.
-- Fixed: `value-list-comma-*` rules now ignore SCSS maps.
-
-## 6.2.2
-
-- Deprecated: `stylelint.utils.cssWordIsVariable()` as non-standard syntax utils are now defensive.
-- Fixed: `declaration-colon-*` rules now ignore SCSS lists.
-- Fixed: `font-weight-notation` now ignores SCSS interpolation.
-- Fixed: `rule-nested-empty-line-before` now ignores Less blockless rules (mixin and extend calls).
-
-## 6.2.1
-
-- Fixed: more problems with exposed `stylelint.createRuleTester`.
-
-## 6.2.0
-
-- Added: `selector-no-qualifying-type` rule.
-- Fixed: `number-leading-zero` will not check `@import` at-rules.
-- Fixed: `selector-class-pattern` now ignores non-outputting Less mixin definitions and called Less mixins.
-- Fixed: `value-keyword-case` now accounts for camelCase keywords (e.g. `optimizeSpeed`, `optimizeLegibility` and `geometricPrecision`) when the `lower` option is used.
-- Fixed: `testUtils` and `stylelint.createRuleTester` module mistakes.
-
-## 6.1.1
-
-- Fixed: documentation links to `selector-pseudo-class-parentheses-space-inside` and `selector-attribute-brackets-space-inside`.
-
-## 6.1.0
-
-- Added: support for `.stylelintignore` file.
-- Added: warning message in output when a file is ignored.
-- Added: `comment-word-blacklist` rule.
-- Added: `selector-attribute-brackets-space-inside` rule.
-- Added: `selector-pseudo-class-parentheses-space-inside` rule.
-- Added: `shorthand-property-no-redundant-values` rule.
-- Added: `ignoreKeywords` option for `value-keyword-case`.
-- Fixed: CRLF (`\r\n`) warning positioning in `string-no-newline`.
-- Fixed: parsing problems when using `///`-SassDoc-style comments.
-- Fixed: `max-empty-lines` places warning at the end of the violating newlines to avoid positioning confusions.
-
-## 6.0.3
-
-- Fixed: CRLF (`\r\n`) warning positioning in `max-empty-lines` and `function-max-empty-lines`.
-
-## 6.0.2
-
-- Fixed: `CssSyntaxError` sets `errored` on output to `true`.
-
-## 6.0.1
-
-- Fixed: `function-name-case` now accounts for camelCase function names (e.g. `translateX`, `scaleX` etc) when the `lower` option is used.
-
-## 6.0.0
-
-- Changed: `CssSyntaxError` is no longer thrown but reported alongside warnings.
-- Added: new look for standard formatter and support for arbitrary severity names.
-- Added: exposed `stylelint.utils.cssWordIsVariable()`.
-- Added: `at-rule-name-case` rule.
-- Added: `function-name-case` rule.
-- Added: `property-case` rule.
-- Added: `selector-pseudo-class-case` rule.
-- Added: `selector-pseudo-element-case` rule.
-- Added: `unit-case` rule.
-- Added: `value-keyword-case` rule.
-- Added: `indentClosingBrace` option to `indentation`.
-- Added: `indentInsideParens` option to `indentation`.
-- Added: `consecutive-duplicates` option for `declaration-block-no-duplicate-properties` rule.
-- Fixed: `block-no-empty` no longer delivers false positives for less syntax.
-- Fixed: `declaration-block-trailing-semicolon` better understands nested at-rules.
-- Fixed: `number-zero-length-no-unit` now work with `q` unit and ignores `s`, `ms`, `kHz`, `Hz`, `dpcm`, `dppx`, `dpi` units
-
-## 5.4.0
-
-- Added: `unit-no-unknown` rule.
-- Fixed: `no-descending-specificity` no longer gets confused when the last part of a selector is a compound selector.
-- Fixed: regression causing `indentation` to complain about Sass maps.
-- Fixed: `declaration-block-no-ignored-properties` now ignore `clear` for `position: absolute` and `position: relative` and does not ignore `float` on `display: table-*`.
-
-## 5.3.0
-
-- Added: (experimental) support for [Less](http://lesscss.org/) syntax.
-- Added: support for [SugarSS](https://github.com/postcss/sugarss) syntax.
-- Added: exposed `stylelint.createRuleTester()`.
-- Added: `declaration-block-no-ignored-properties` rule.
-- Added: `function-max-empty-lines` rule.
-- Added: `function-url-data-uris` rule.
-- Fixed: `block-closing-brace-newline-after` accepts single-line comments immediately after the closing brace.
-- Fixed: `block-closing-brace-newline-after` use of "single space", rather than "newline", in its messages.
-- Fixed: `font-weight-notation` now ignores `initial` value.
-- Fixed: `function-*` rules should all now ignore all Sass maps and lists.
-- Fixed: `function-calc-no-unspaced-operator` accepts newlines.
-- Fixed: `function-comma-space-after`, `function-comma-space-before`, `function-parentheses-newline-inside` and `function-parentheses-space-inside` now ignore SCSS maps.
-- Fixed: `max-line-length` options validation.
-- Fixed: `no-unknown-animations` now ignores `none`, `initial`, `inherit`, `unset` values.
-- Fixed: `property-value-blacklist` and `-whitelist` no longer error on properties without a corresponding list entry.
-- Fixed: `selector-class-pattern` now ignores selectors with Sass interpolation.
-- Fixed: `selector-id-pattern` now ignores selectors with Sass interpolation.
-- Fixed: `selector-no-id` now ignores keyframe selectors.
-- Fixed: `unit-blacklist` and `unit-whitelist` now ignores `url` functions.
-
-## 5.2.1
-
-- Fixed: `function-calc-no-unspaced-operator` now better ignores non-`calc` functions.
-- Fixed: `no-descending-specificity` no longer delivers false positives after second run in Atom linter.
-- Fixed: `stylelint-disable-rule` imported correctly.
-
-## 5.2.0
-
-- Added: `at-rule-semicolon-newline-after` rule.
-- Added: `no-indistinguishable-colors` rule.
-- Added: `stylelint-disable-reason` rule.
-- Fixed: `declaration-bang-space-*` understands arbitrary bang declarations (e.g. `!default`).
-- Fixed: `font-weight-notation` now ignore `inherit` value.
-- Fixed: `indentation` treats `@nest` at-rules like regular rules with selectors.
-- Fixed: `no-duplicate-selectors` contextualizes selectors by all at-rules, not just media queries.
-- Fixed: `no-duplicate-selectors` no longer delivers false positives after second run in Atom linter.
-- Fixed: `no-duplicate-selectors` no longer delivers false positives with descendant combinators.
-- Fixed: `number-no-trailing-zeros` no longer delivers false positives in `url()` arguments.
-- Fixed: `root-no-standard-properties` no longer delivers false positives inside the `:not()` pseudo-selector.
-- Fixed: `selector-list-comma-*` rules no longer deliver false positives inside functional notation.
-
-## 5.1.0
-
-- Added: `selector-type-case` rule.
-- Fixed: no more subtle configuration bug when using extends and plugins together in tangled ways.
-
-## 5.0.1
-
-- Fixed: `string-no-newline` no longer stumbles when there are comment-starting characters inside strings.
-
-## 5.0.0
-
-- Removed: `no-indistinguishable-colors` because its dependencies were unusable in Atom. (To be re-evaluated and re-added later.)
-- Removed: `"warn": true` secondary option. Use `"severity": "warning"`, instead.
-- Removed: `color-no-named` rule. Use the new `color-named` rule, with the `"never"` option instead.
-- Removed: `declaration-block-no-single-line` rule. Use the new `block-no-single-line` rule instead.
-- Removed: `rule-no-duplicate-properties` rule. Use the new `declaration-block-no-duplicate-properties` rule instead.
-- Removed: `rule-no-shorthand-property-overrides` rule. Use the new `declaration-block-no-shorthand-property-overrides` rule instead.
-- Removed: `rule-properties-order` rule. Use the new `declaration-block-properties-order` rule instead.
-- Removed: `rule-trailing-semicolon` rule. Use the new `declaration-block-trailing-semicolon` rule instead.
-- Removed `true` option for `emptyLineBefore` when using property groups in `rule-properties-order`. Use the new `"always"` or `"never"` option instead.
-- Removed: `"always"` option for `font-weight-notation`. Use the new `always-where-possible` option instead.
-- Added: support for overlapping `stylelint-disable` commands.
-- Fixed: `max-nesting-depth` does not warn about blockless at-rules.
-- Fixed: `function-comma-newline-after` and related rules consider input to be multi-line (applying to "always-multi-line", etc.) when the newlines are at the beginning or end of the input.
-- Fixed: `no-indistinguishable-colors` no longer errors on color functions containing spaces e.g. `rgb(0, 0, 0)` -- but also removed the rule (see above).
-- Fixed: `declaration-block-properties-order` no longer fails when an unspecified property comes before or after a specified property in a group with `emptyLineBefore: true`.
-- Fixed: `indentation` no longer has false positives when there are empty lines within multi-line values.
-- Fixed: `declaration-colon-*-after` no longer fail to do their job when you want a space or newline after the colon and instead there is no space at all.
-
-## 4.5.1
-
-- Fixed: `no-unsupported-browser-features` options now optional.
-- Fixed: `no-duplicate-selectors` now ignores keyframe selectors.
-
-## 4.5.0
-
-- Deprecated: `"warn": true` secondary option. Use `"severity": "warning"`, instead.
-- Deprecated: `color-no-named` rule. Use the new `color-named` rule, with the `"never"` option instead.
-- Deprecated: `declaration-block-no-single-line` rule. Use the new `block-no-single-line` rule instead.
-- Deprecated: `rule-no-duplicate-properties` rule. Use the new `declaration-block-no-duplicate-properties` rule instead.
-- Deprecated: `rule-no-shorthand-property-overrides` rule. Use the new `declaration-block-no-shorthand-property-overrides` rule instead.
-- Deprecated: `rule-properties-order` rule. Use the new `declaration-block-properties-order` rule instead.
-- Deprecated: `rule-trailing-semicolon` rule. Use the new `declaration-block-trailing-semicolon` rule instead.
-- Deprecated `true` option for `emptyLineBefore` when using property groups in `rule-properties-order`. Use the new `"always"` or `"never"` option instead.
-- Deprecated: `"always"` option for `font-weight-notation`. Use the new `always-where-possible` option instead.
-- Added: universal `severity` secondary option as a replacement for `"warn": true` to alter a rule's severity.
-- Added: `block-no-single-line` rule.
-- Added: `color-named` rule.
-- Added: `declaration-block-no-duplicate-properties` rule.
-- Added: `declaration-block-no-shorthand-property-overrides` rule.
-- Added: `declaration-block-properties-order` rule.
-- Added: `declaration-block-trailing-semicolon` rule.
-- Added: `max-nesting-depth` rule.
-- Added: `no-browser-hacks` rule.
-- Added: `no-descending-specificity` rule.
-- Added: `no-indistinguishable-colors` rule.
-- Added: `no-unsupported-browser-features` rule.
-- Added: `selector-max-specificity` rule.
-- Added: `string-no-newline` rule.
-- Added: `"always"` and `"never"` option to `rule-properties-order` `emptyLineBefore` when using property groups
-- Added: `named-where-possible` option to `font-weight-notation`.
-- Added: `unspecified: "bottomAlphabetical"` option to the `rule-properties-order` rule.
-- Added: `ignoreAtRules: []` option to the `block-opening-brace-space-before` and `block-closing-brace-newline-after` rules.
-- Added: support for using the nesting selector (`&`) as a prefix in `selector-no-type`.
-- Added: `stylelint-disable-line` feature.
-- Added: `withinComments`, `withinStrings`, and `checkStrings` options to `styleSearch`, and `insideString` property to the `styleSearch` match object.
-- Added: `resolveNestedSelectors` option to the `selector-class-pattern` rule.
-- Fixed: informative errors are thrown when `stylelint-disable` is misused.
-- Fixed: `selector-no-vendor-prefix` no longer delivers two warnings on vendor-prefixed pseudo-elements with two colons, e.g. `::-moz-placeholder`.
-- Fixed: `no-duplicate-selectors` rule now resolves nested selectors.
-- Fixed: `font-weight-notation` does not throw false warnings when `normal` is used in certain ways.
-- Fixed: `selector-no-*` and `selector-*-pattern` rules now ignore custom property sets.
-- Fixed: nested selector handling for `no-duplicate-selectors`.
-- Fixed: `selector-no-id` does not warn about Sass interpolation inside an `:nth-child()` argument.
-- Fixed: handling of mixed line endings in `rule-nested-empty-line-before`, `rule-non-nested-empty-line-before`, `comment-empty-line-before` and `at-rule-empty-line-before`.
-- Fixed: `number-leading-zero`, `function-comma-space-*`, and `declaration-colon-*` do not throw false positives in `url()` arguments.
-
-## 4.4.0
-
-- Added: `ignore: "relative"` option for `font-weight-notation`.
-- Fixed: `declaration-colon-space/newline-before/after` rules now ignore scss maps.
-- Fixed: `selector-list-comma-newline-after` allows `//` comments after the comma.
-
-## 4.3.6
-
-- Fixed: removed `console.log()`s in `property-unit-whitelist`.
-
-## 4.3.5
-
-- Fixed: removed `console.log()`s in `rule-properties-order`.
-
-## 4.3.4
-
-- Fixed: option normalization for rules with primary options that are arrays of objects, like `rule-properties-order`.
-- Fixed: accuracy of warning positions are `//` comments when using SCSS parser.
-- Fixed: `no-unknown-animations` ignores variables.
-- Fixed: `no-unknown-animations` does not erroneously flag functions like `steps()` and `cubic-bezier()`.
-- Fixed: clarified error message in `time-no-imperceptible`.
-- Fixed: `font-family-name-quotes` and `font-weight-notation` ignore variables.
-- Fixed: `media-feature-no-missing-punctuation` handles space-padded media features.
-- Fixed: regression causing CLI `--config` relatives paths that don't start with `./` to be rejected.
-
-## 4.3.3
-
-- Fixed: again removed `stylelint.utils.ruleTester` because its dependencies broke things.
-
-## 4.3.2
-
-- Fixed: move `tape` to dependencies to support `testUtils`.
-
-## 4.3.1
-
-- Fixed: include `testUtils` in npm package whitelist.
-
-## 4.3.0
-
-- Added: `font-family-name-quotes` rule.
-- Added: `font-weight-notation` rule.
-- Added: `media-feature-no-missing-punctuation` rule.
-- Added: `no-duplicate-selectors` rule.
-- Added: `no-invalid-double-slash-comments` rule.
-- Added: `no-unknown-animations` rule.
-- Added: `property-value-blacklist` rule.
-- Added: `property-value-whitelist` rule.
-- Added: `time-no-imperceptible` rule.
-- Added: `ignore: "descendant"` and `ignore: "compounded"` options for `selector-no-type`.
-- Added: support for regular expression property identification in `property-blacklist`, `property-unit-blacklist`, `property-unit-whitelist`, `property-value-blacklist`, and `property-whitelist`.
-- Added: better handling of vendor prefixes in `property-unit-blacklist` and `property-unit-whitelist`, e.g. if you enter `animation` it now also checks `-webkit-animation`.
-- Added: support for using names of modules for the CLI's `--config` argument, not just paths.
-- Added: `codeFilename` option to Node.js API.
-- Added: exposed rules at `stylelint.rules` to make stylelint even more extensible.
-- Added: brought `stylelint-rule-tester` into this repo, and exposed it at `stylelint.utils.ruleTester`.
-- Fixed: bug in `rule-properties-order` empty line detection when the two newlines were separated
- by some other whitespace.
-- Fixed: option parsing bug that caused problems when using the `"alphabetical"` primary option
- with `rule-properties-order`.
-- Fixed: regard an empty string as a valid CSS code.
-- Fixed: `ignoreFiles` handling of absolute paths.
-- Fixed: `ignoreFiles` uses the `configBasedir` option to interpret relative paths.
-
-## 4.2.0
-
-- Added: support for custom messages with a `message` secondary property on any rule.
-- Fixed: CLI always ignores contents of `node_modules` and `bower_components` directories.
-- Fixed: bug preventing CLI from understanding absolute paths in `--config` argument.
-- Fixed: bug causing `indentation` to stumble over declarations with semicolons on their own lines.
-
-## 4.1.0
-
-- Added: helpful option validation message when object is expected but non-object provided.
-- Fixed: `selector-no-id` no longer warns about Sass interpolation when multiple interpolations are used in a selector.
-
-## 4.0.0
-
-- Removed: support for legacy numbered severities.
-- Added: support for extensions on `.stylelintrc` files (by upgrading cosmiconfig).
-- Added: `ignore: "non-comments"` option to `max-line-length`.
-- Fixed: `function-whitespace-after` does not expect space between `)` and `}`, so it handles Sass interpolation better.
-
-## 3.2.3
-
-- Fixed: `selector-no-vendor-prefix` now handles custom-property-sets.
-
-## 3.2.2
-
-- Fixed: `selector-no-type` ignores `nth-child` pseudo-classes and `@keyframes` selectors.
-
-## 3.2.1
-
-- Fixed: `max-line-length` handles `url()` functions better.
-- Fixed: `block-opening-brace-newline-after` and `declaration-block-semicolon-newline-after` handle end-of-line comments better.
-
-## 3.2.0
-
-- Added: `legacyNumberedSeverities` config property to force the legacy severity system.
-- Added: `selector-no-id` ignores Sass-style interpolation.
-- Fixed: bug causing extended config to override the config that extends it.
-
-## 3.1.4
-
-- Fixed: stopped hijacking `--config` property in PostCSS and Node.js APIs. Still using it in the CLI.
-
-## 3.1.3
-
-- Fixed: bug preventing the disabling of rules analyzing the `root` node, including: `max-line-length`, `max-empty-lines`, `no-eol-whitespace`, `no-missing-eof-newline`, and `string-quotes`.
-- Fixed: bug causing `rule-properties-order` to get confused by properties with an unspecified order.
-
-## 3.1.2
-
-- Fixed: bug causing an error when `null` was used on rules whose primary options are arrays.
-
-## 3.1.1
-
-- Fixed: Documentation improvements.
-
-## 3.1.0
-
-- Added: `stylelint-commands` `ignore` option to `comment-empty-line-before`.
-- Fixed: v3 regression causing bug in `rule-properties-order` and potentially other rules that accept arrays as primary options.
-- Fixed: `no-missing-eof-newline` no longer complains about completely empty files.
-
-## 3.0.3
-
-- Fixed: list of rules within documentation.
-
-## 3.0.0-3.0.2
-
-- Removed: `nesting-block-opening-brace-space-before` and `nesting-block-opening-brace-newline-before` rules.
-- Deprecated: numbered severities (0, 1, 2) and will be disabled in `4.0`.
-- Changed: renamed `rule-single-line-max-declarations` to `declaration-block-single-line-max-declarations` and changed scope of the single-line to the declaration block.
-- Changed: renamed `rule-no-single-line` to `declaration-block-no-single-line` and changed scope of the single-line to the declaration block.
-- Changed: renamed the `function-space-after` rule to `function-whitespace-after`.
-- Changed: renamed the `comment-space-inside` rule to `comment-whitespace-inside`.
-- Changed: renamed the `no-multiple-empty-lines` rule to `max-empty-lines` (takes an `int` as option).
-- Changed: `plugins` is now an array instead of an object. And plugins should be created with `stylelint.createPlugin()`.
-- Added: cosmiconfig, which means the following:
- - support for YAML `.stylelintrc`
- - support for `stylelint.config.js`
- - support for `stylelint` property in `package.json`
- - alternate config loading system, which stops at the first config found
-- Added: asynchronicity to the PostCSS plugin.
-- Added: `ignoreFiles` option to config.
-- Added: `configFile` option to Node.js API.
-- Fixed: `comment-whitespace-inside` now ignores copyright (`/*! `) and sourcemap (`/*# `) comments.
-- Fixed: `rule-no-duplicate-properties` now ignores the `src` property.
-
-## 2.3.7
-
-- Fixed: `function-calc-no-unspaced-operator` ignores characters in `$sass` and `@less` variables.
-- Fixed: `rule-properties-order` allows comments at the top of groups that expect newlines before them.
-- Fixed: `styleSearch()` and the rules it powers will not trip up on single-line (`//`) comments.
-- Fixed: `selector-combinator-space-before` now better handles nested selectors starting with combinators.
-- Fixed: `rule-properties-order` now deals property with `-moz-osx-font-smoothing`.
-
-## 2.3.6
-
-- Fixed: improved documentation of CLI globbing possibilities.
-- Fixed: `rule-properties-order` now accounts for property names containing multiple hyphens.
-- Fixed: `rule-properties-order` grouping bug.
-
-## 2.3.5
-
-- Added: error about undefined severities blaming stylelint for the bug.
-- Fixed: `selector-pseudo-element-colon-notation` typo in rule name resulting in undefined severity.
-
-## 2.3.4
-
-- Fixed: `dist/` build.
-
-## 2.3.3
-
-- Fixed: `property-whitelist`, `rule-no-duplicate-properties`, and `rule-properties-order` ignore variables (`$sass`, `@less`, and `--custom-property`).
-- Fixed: `root-no-standard-properties` ignores `$sass` and `@less` variables.
-- Fixed: `comment-empty-line-before` and `comment-space-inside` no longer complain about `//` comments.
-
-## 2.3.2
-
-- Fixed: `number-no-trailing-zeros` no longer flags at-import at-rules.
-
-## 2.3.1
-
-- Fixed: `selector-no-type` no longer flags the *nesting selector* (`&`).
-
-## 2.3.0
-
-- Added: `configFile` option to PostCSS plugin.
-- Fixed: `function-parentheses-newline-inside` and `function-parentheses-space-inside` bug with nested functions.
-
-## 2.2.0
-
-- Added: `selector-class-pattern` rule.
-- Added: `selector-id-pattern` rule.
-- Added: `function-parentheses-newline-inside` rule.
-- Added: `"always-single-line"` and `"never-single-line"` options to `function-parentheses-space-inside`.
-- Fixed: CLI `syntax` argument bug.
-
-## 2.1.0
-
-- Added: `color-no-hex` rule.
-- Added: `color-no-named` rule.
-- Added: `function-blacklist` rule.
-- Added: `function-whitelist` rule.
-- Added: `unit-blacklist` rule.
-- Added: `unit-whitelist` rule.
-- Added: `property-unit-blacklist` rule.
-- Added: `property-unit-whitelist` rule.
-- Added: `rule-single-line-max-declarations` rule.
-- Added: `max-line-length` rule.
-- Added: `first-nested` exception to `comment-empty-line-before`.
-- Added: single value options to `*-blacklist` & `-*whitelist` rules e.g. `{ "function-blacklist": "calc"}`
-- Added: support for flexible groups to `rule-properties-order`.
-- Added: support for an optional empty line between each group to `rule-properties-order`.
-- Added: support for mathematical signs in front of Sass and Less variables in `function-calc-no-unspaced-operator`.
-- Added: support for arbitrary whitespace after function in `function-space-after`.
-- Added: support for arbitrary whitespace at the edge of comments in `comment-space-inside`.
-- Fixed: `comment-space-inside` allows any number of asterisks at the beginning and end of comments.
-- Fixed: bug causing `{ unspecified: "bottom }"` option not to be applied within `rule-properties-order`.
-- Fixed: bug causing `function-comma-*` whitespace rules to improperly judge whether to enforce single- or multi-line options.
-- Fixed: bug when loading plugins from an extended config
-- Fixed: indentation for function arguments, by ignoring them.
-
-## 2.0.0
-
-- Changed: plugins are now included and configured via a "locator", rather than either being `required` or being inserted directly into the configuration object as a function.
-- Added: CLI.
-- Added: standalone Node.js API.
-- Added: quiet mode to CLI and Node.js API.
-- Added: support for formatters, including custom ones, to CLI and Node.js API.
-- Added: `string` and `json` formatters.
-- Added: support for using `.stylelintrc` JSON file.
-- Added: support for extending existing configs using the `extends` property.
-- Added: support for SCSS syntax parsing to CLI and Node.js API.
-- Added: `function-comma-newline-after` rule.
-- Added: `function-comma-newline-before` rule.
-- Added: `"always-single-line"` and `"never-single-line"` options to `function-comma-space-after` rule.
-- Added: `"always-single-line"` and `"never-single-line"` options to `function-comma-space-before` rule.
-
-## 1.2.1
-
-- Fixed: the `media-query-list-comma-*` rules now only apply to `@media` statements.
-
-## 1.2.0
-
-- Added: `function-linear-gradient-no-nonstandard-direction` rule.
-- Added: `rule-properties-order` now by default ignores the order of properties left out of your specified array; and the options `"top"`, `"bottom"`, and `"ignore"` are provided to change that behavior.
-- Added: `rule-properties-order` now looks for roots of hyphenated properties in custom arrays so each extension (e.g. `padding-top` as an extension of `padding`) does not need to be specified individually.
-- Added: `"always-single-line"` option to `declaration-colon-space-after`.
-- Added: support for declarations directly on root (e.g. Sass variable declarations).
-- Fixed: `declaration-colon-newline-after` `"always-multi-line"` warning message.
-
-## 1.1.0
-
-- Added: `declaration-colon-newline-after` rule.
-- Added: the `indentation` rule now checks indentation of multi-line at-rule params, unless there's the `except` option of `param`.
-- Added: support for end-of-line comments in `selector-list-comma-newline-after`.
-- Added: protection against `#${sass-interpolation}` in rules checking for hex colors.
-- Added: support for strings (translated to RegExps) in `custom-property-pattern` and `custom-media-pattern`.
-- Fixed: bug preventing various rules from registering the correct rule names in their warnings, and therefore also preventing them from being disabled with comments.
-- Fixed: the `color-no-invalid-hex` rule no longer flags hashes in `url()` arguments.
-- Fixed: rules using `node.raw()` instead of `node.raws` to avoid expected errors.
-
-## 1.0.1
-
-- Fixed: `postcss-selector-parser` updated to improve location accuracy for `selector-no-*` rules.
-
-## 1.0.0
-
-- Removed: compatibility with PostCSS `4.x`.
-- Added: compatibility with PostCSS `5.0.2+`.
-- Fixed: the accuracy of reported line numbers and columns.
-
-## 0.8.0
-
-- Added: `after-comment` `ignore` option to the `at-rule-empty-line-before` rule.
-- Fixed: the `indentation` rule now correctly handles `*` hacks on property names.
-- Fixed: the `media-feature-colon-space-after` and `media-feature-colon-space-before` rules now only apply to `@media` statements.
-- Fixed: the `rule-no-shorthand-property-overrides` rule message is now consistent with the other messages.
-
-## 0.7.0
-
-- Added: invalid options cause the rule to abort instead of performing meaningless checks.
-- Added: special warning for missing required options from `validateOptions()`.
-
-## 0.6.2
-
-- Fixed: npm package no longer includes test files (reducing package size by 500KB).
-
-## 0.6.1
-
-- Fixed: the `rule-properties-order` and `rule-no-duplicate-properties` rules now correctly check inside @rules.
-
-## 0.6.0
-
-- Added: `validateOptions` to `stylelint.utils` for use by authors of custom rules.
-- Added: `custom-media-pattern` rule.
-- Added: `number-max-precision` rule.
-
-## 0.5.0
-
-- Added: validation of all rule options.
-
-## 0.4.1
-
-- Removed: `ruleTester` from `stylelint.utils` because of the additional dependencies it forces.
-
-## 0.4.0
-
-- Removed: `jsesc` devDependency.
-- Added: `rule-no-shorthand-property-overrides` rule.
-- Added: `ruleTester` to `stylelint.utils` for use by authors of custom rules.
-
-## 0.3.2
-
-- Fixed: `hierarchicalSelectors` bug in `indentation` rule.
-
-## 0.3.1
-
-- Fixed: `~=` is no longer mistaken for combinator in `selector-combinator-space-*`.
-
-## 0.3.0
-
-- Added: exposure of `report`, `ruleMessages`, and `styleSearch` in `stylelint.utils` for use by external plugin rules.
-- Added: plugin rule support.
-- Added: `hierarchicalSelectors` option to `indentation` rule.
-- Added: `nesting-block-opening-brace-space-before` rule.
-- Added: `nesting-block-opening-brace-newline-before` rule.
-- Fixed: the `color-hex-case` rule message is now consistent with the `color-hex-length` rule.
-- Fixed: the `property-blacklist` rule message is now consistent with the `property-whitelist` rule.
-- Fixed: a typo in the `comment-space-inside` rule message.
-
-## 0.2.0
-
-- Added: `color-hex-case` rule.
-- Added: `color-hex-length` rule.
-- Fixed: formalized selector-indentation-checking within the `indentation` rule.
-- Fixed: allow for arbitrary whitespace after the newline in the `selector-list-comma-newline-*` rules.
-- Fixed: `selector-combinator-space-*` no longer checks `:nth-child()` arguments.
-
-## 0.1.2
-
-- Fixed: nesting support for the `block-opening-brace-newline-before` rule.
-- Fixed: nesting support for the `block-opening-brace-space-before` rule.
-- Fixed: nesting support for the `rule-trailing-semicolon` rule.
-
-## 0.1.1
-
-- Fixed: nesting support for the `rule-no-duplicate-properties` rule.
-- Fixed: nesting support for the `rule-properties-order` rule.
-- Fixed: whitespace rules accommodate Windows CR-LF line endings.
-
-## 0.1.0
-
-- Added: ability to disable rules via comments in the CSS.
-- Added: `at-rule-empty-line-before` rule.
-- Added: `at-rule-no-vendor-prefix` rule.
-- Added: `block-closing-brace-newline-after` rule.
-- Added: `block-closing-brace-newline-before` rule.
-- Added: `block-closing-brace-space-after` rule.
-- Added: `block-closing-brace-space-before` rule.
-- Added: `block-no-empty` rule.
-- Added: `block-opening-brace-newline-after` rule.
-- Added: `block-opening-brace-newline-before` rule.
-- Added: `block-opening-brace-space-after` rule.
-- Added: `block-opening-brace-space-before` rule.
-- Added: `color-no-invalid-hex` rule.
-- Added: `comment-empty-line-before` rule.
-- Added: `comment-space-inside` rule.
-- Added: `custom-property-no-outside-root` rule.
-- Added: `custom-property-pattern` rule.
-- Added: `declaration-bang-space-after` rule.
-- Added: `declaration-bang-space-before` rule.
-- Added: `declaration-block-semicolon-newline-after` rule.
-- Added: `declaration-block-semicolon-newline-before` rule.
-- Added: `declaration-block-semicolon-space-after` rule.
-- Added: `declaration-block-semicolon-space-before` rule.
-- Added: `declaration-colon-space-after` rule.
-- Added: `declaration-colon-space-before` rule.
-- Added: `declaration-no-important` rule.
-- Added: `function-calc-no-unspaced-operator` rule.
-- Added: `function-comma-space-after` rule.
-- Added: `function-comma-space-before` rule.
-- Added: `function-parentheses-space-inside` rule.
-- Added: `function-space-after` rule.
-- Added: `function-url-quotes` rule.
-- Added: `indentation` rule.
-- Added: `media-feature-colon-space-after` rule.
-- Added: `media-feature-colon-space-before` rule.
-- Added: `media-feature-name-no-vendor-prefix` rule.
-- Added: `media-feature-range-operator-space-after` rule.
-- Added: `media-feature-range-operator-space-before` rule.
-- Added: `media-query-list-comma-newline-after` rule.
-- Added: `media-query-list-comma-newline-before` rule.
-- Added: `media-query-list-comma-space-after` rule.
-- Added: `media-query-list-comma-space-before` rule.
-- Added: `media-query-parentheses-space-inside` rule.
-- Added: `no-eol-whitespace` rule.
-- Added: `no-missing-eof-newline` rule.
-- Added: `no-multiple-empty-lines` rule.
-- Added: `number-leading-zero` rule.
-- Added: `number-no-trailing-zeros` rule.
-- Added: `number-zero-length-no-unit` rule.
-- Added: `property-blacklist` rule.
-- Added: `property-no-vendor-prefix` rule.
-- Added: `property-whitelist` rule.
-- Added: `root-no-standard-properties` rule.
-- Added: `rule-nested-empty-line-before` rule.
-- Added: `rule-no-duplicate-properties` rule.
-- Added: `rule-no-single-line` rule.
-- Added: `rule-non-nested-empty-line-before` rule.
-- Added: `rule-properties-order` rule.
-- Added: `rule-trailing-semicolon` rule.
-- Added: `selector-combinator-space-after` rule.
-- Added: `selector-combinator-space-before` rule.
-- Added: `selector-list-comma-newline-after` rule.
-- Added: `selector-list-comma-newline-before` rule.
-- Added: `selector-list-comma-space-after` rule.
-- Added: `selector-list-comma-space-before` rule.
-- Added: `selector-no-attribute` rule.
-- Added: `selector-no-combinator` rule.
-- Added: `selector-no-id` rule.
-- Added: `selector-no-type` rule.
-- Added: `selector-no-universal` rule.
-- Added: `selector-no-vendor-prefix` rule.
-- Added: `selector-pseudo-element-colon-notation` rule.
-- Added: `selector-root-no-composition` rule.
-- Added: `string-quotes` rule.
-- Added: `value-list-comma-newline-after` rule.
-- Added: `value-list-comma-newline-before` rule.
-- Added: `value-list-comma-space-after` rule.
-- Added: `value-list-comma-space-before` rule.
-- Added: `value-no-vendor-prefix` rule.
diff --git a/assets/node_modules/stylelint/CONTRIBUTING.md b/assets/node_modules/stylelint/CONTRIBUTING.md
deleted file mode 100644
index 339d420..0000000
--- a/assets/node_modules/stylelint/CONTRIBUTING.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Contributing
-
-Thank you for wanting to contribute. stylelint *needs* community contributions to continue to improve.
-
-If you like stylelint and open source software (since you're reading this, you almost certainly do), please consider taking some time to pitch in. Not only will you help stylelint thrive, you will also learn a thing or two — about CSS, PostCSS, Node, ES2015, unit testing, open source software, and more.
-
-**We want to do everything we can to encourage contributions!** So if you want to participate but don't end up doing it for one reason or another, please file an issue and give us feedback about what we could do to better encourage you.
-
-Also: we hope that your participation in the project isn't a one-off. *We'd love to add more members to the organization and see more regulars pop up in issues and pull requests!*
-
-## Code contributions
-
-The [developer guide](docs/developer-guide.md) outlines how to get started contributing code.
-
-## Financial contributions
-
-We also welcome financial contributions in full transparency on our [open collective](https://opencollective.com/stylelint).
-Anyone can file an expense. If the expense makes sense for the development of the community, it will be "merged" in the ledger of our open collective by the core contributors and the person who filed the expense will be reimbursed.
diff --git a/assets/node_modules/stylelint/LICENSE b/assets/node_modules/stylelint/LICENSE
deleted file mode 100644
index 58332c8..0000000
--- a/assets/node_modules/stylelint/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 - present Maxime Thirouin, David Clark & Richard Hallows
-
-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/assets/node_modules/stylelint/README.md b/assets/node_modules/stylelint/README.md
deleted file mode 100644
index 4794b6a..0000000
--- a/assets/node_modules/stylelint/README.md
+++ /dev/null
@@ -1,123 +0,0 @@
-# stylelint
-
-[![NPM version](https://img.shields.io/npm/v/stylelint.svg)](https://www.npmjs.org/package/stylelint) [![Build Status](https://github.com/stylelint/stylelint/workflows/CI/badge.svg)](https://github.com/stylelint/stylelint/actions) [![NPM Downloads](https://img.shields.io/npm/dm/stylelint.svg)](https://npmcharts.com/compare/stylelint?minimal=true) [![Backers on Open Collective](https://opencollective.com/stylelint/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/stylelint/sponsors/badge.svg)](#sponsors)
-
-A mighty, modern linter that helps you avoid errors and enforce conventions in your styles.
-
-## Features
-
-It's mighty because it:
-
-- understands the **latest CSS syntax** including custom properties and level 4 selectors
-- extracts **embedded styles** from HTML, markdown and CSS-in-JS object & template literals
-- parses **CSS-like syntaxes** like SCSS, Sass, Less and SugarSS
-- has over **170 built-in rules** to catch errors, apply limits and enforce stylistic conventions
-- supports **plugins** so you can create your own rules or make use of plugins written by the community
-- automatically **fixes** some violations (*experimental feature*)
-- is **well tested** with over 15000 unit tests
-- supports **shareable configs** that you can extend or create your own of
-- is **unopinionated** so you can tailor the linter to your exact needs
-- has a **growing community** and is used by [Facebook](https://code.facebook.com/posts/879890885467584/improving-css-quality-at-facebook-and-beyond/), [GitHub](https://github.com/primer/stylelint-config-primer) and [WordPress](https://github.com/ntwb/stylelint-config-wordpress/)
-
-## Example output
-
-![Example](https://github.com/stylelint/stylelint/raw/master/example.png?raw=true)
-
-## Getting started
-
-First, decide how you want to use stylelint:
-
-- [on the command line](docs/user-guide/cli.md)
-- [in your text editor](docs/user-guide/complementary-tools.md#editor-plugins), for example in VS Code
-- [in for your build tool](docs/user-guide/complementary-tools.md#build-tool-plugins), for example in webpack
-- [via the Node.js API](docs/user-guide/node-api.md)
-- [as a PostCSS plugin](docs/user-guide/postcss-plugin.md)
-
-Then create your [configuration object](docs/user-guide/configuration.md). You can either extend a shared configuration or craft your own.
-
-### Extend a shared configuration
-
-This is the quickest way to get started. We suggest you extend either:
-
-- [`stylelint-config-recommended`](https://github.com/stylelint/stylelint-config-recommended)
-- [`stylelint-config-standard`](https://github.com/stylelint/stylelint-config-standard)
-
-The recommended config turns on just the [possible error](docs/user-guide/rules.md#possible-errors) rules. The standard config extends it by turning on 60 [stylistic rules](docs/user-guide/rules.md#stylistic-issues). We suggest you extend the:
-
-- recommended config if you use a pretty printer like [prettier](https://prettier.io/)
-- standard config if you want stylelint to enforce stylistic conventions
-
-You may want to add rules to your config that [limit language features](docs/user-guide/rules.md#limit-language-features) as these will be specific to your team and/or project.
-
-*If you use language extensions, for example `@if` and `@extends`, you can use a community config like [`stylelint-config-recommended-scss`](https://github.com/kristerkari/stylelint-config-recommended-scss) instead.*
-
-### Craft your own config
-
-Alternatively, you can [learn about the rules](docs/user-guide/about-rules.md) and then either:
-
-- start small and add only [the rules](docs/user-guide/rules.md) you want to turn on
-- copy, paste and adapt [this example configuration](docs/user-guide/example-config.md) which lists all of the rules and their primary options
-
-## Guides
-
-You'll find detailed information on customising stylelint in our guides:
-
-- [user guide](docs/user-guide.md) - how to use and configure stylelint
-- [developer guide](docs/developer-guide.md) - how to develop for stylelint
-
-## Need help?
-
-Read our [FAQ](docs/user-guide/faq.md) first.
-
-If the answer to your problem isn't there, then post it on [stackoverflow](https://stackoverflow.com/questions/tagged/stylelint).
-
-Create a [new issue](https://github.com/stylelint/stylelint/issues/new/choose) if:
-
-- you think you've found a bug
-- you have a feature request
-
-If you're upgrading, read our [CHANGELOG](CHANGELOG.md) to learn what changes to expect in the latest version.
-
-## Help out
-
-To help out, you can:
-
-- get involved in any open [issue](https://github.com/stylelint/stylelint/issues) or [pull request](https://github.com/stylelint/stylelint/pulls)
-- create, enhance and debug rules using our [working on rules](docs/developer-guide/rules.md) guide
-- improve the [documentation](docs/)
-- add new tests to *absolutely anything*
-- improve the [performance of rules](docs/developer-guide/rules.md#improving-the-performance-of-a-rule)
-- open [new issues](https://github.com/stylelint/stylelint/issues/new/choose) about your ideas for making stylelint better
-- open [a pull request](https://github.com/stylelint/stylelint/compare) to show us how your idea works
-- create or contribute to [ecosystem tools](docs/user-guide/complementary-tools.md), for example the plugin for [VS Code](https://github.com/stylelint/vscode-stylelint)
-
-Our [VISION document](VISION.md) guides our work.
-
-## Semantic Versioning Policy
-
-We have a [semantic versioning policy](docs/user-guide/semantic-versioning-policy.md). Any minor update may report more errors than the previous release. As such, we recommend using the tilde (`~`) in `package.json` e.g. `"stylelint": "~7.2.0"` to guarantee the results of your builds.
-
-## License
-
-[The MIT License](https://raw.githubusercontent.com/stylelint/stylelint/master/LICENSE).
-
-## Contributing Guidelines
-
-Check out the [Contributing Guidelines](CONTRIBUTING.md).
-
-## Contributors
-
-Without [all these wonderful people](https://github.com/stylelint/stylelint/graphs/contributors) this project would cease to exist.
-
-## Backers
-
-Thank you to all our backers! [Become a backer](https://opencollective.com/stylelint#backer).
-
-<a href="https://opencollective.com/stylelint#backers" target="_blank"><img src="https://opencollective.com/stylelint/backers.svg?width=890"></a>
-
-
-## Sponsors
-
-Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor](https://opencollective.com/stylelint#sponsor).
-
-<a href="https://opencollective.com/stylelint/sponsor/0/website" target="_blank"><img src="https://opencollective.com/stylelint/sponsor/0/avatar.svg"></a>
diff --git a/assets/node_modules/stylelint/SECURITY.md b/assets/node_modules/stylelint/SECURITY.md
deleted file mode 100644
index 0476353..0000000
--- a/assets/node_modules/stylelint/SECURITY.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Reporting Security Issues
-
-If you discover a security issue in stylelint, please report it by sending an
-email to stylelint@gmail.com.
-
-This will allow us to assess the risk, and make a fix available before we add a
-bug report to the GitHub repository.
-
-Thanks for helping make stylelint safe for everyone!
diff --git a/assets/node_modules/stylelint/VISION.md b/assets/node_modules/stylelint/VISION.md
deleted file mode 100644
index a378dd7..0000000
--- a/assets/node_modules/stylelint/VISION.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# Vision
-
-A mighty, modern linter and fixer for CSS and CSS-like languages.
-
-One that is:
-
-- Complete - with coverage of all standard CSS syntax.
-- Extensible - with multiple points of extension.
-- Configurable - with no defaults and plenty of options to tailor the linter.
-- Robust - with comprehensive test coverage and a wide range of fixtures.
-- Consistent - with conventions for behaviour, naming and documentation.
-- Performant - with tools to test and improve performance.
-
-## Complete
-
-Provide built-in rules for the following three areas:
-
-- [Possible errors](docs/user-guide/rules.md#possible-errors).
-- [Limit language features](docs/user-guide/rules.md#limit-language-features).
-- [Stylistic issues](docs/user-guide/rules.md#stylistic-issues).
-
-### Possible errors
-
-Provide rules to catch two types of possible errors:
-
-- Invalid code e.g. invalid hex colors and unknown language features.
-- Code that is valid but likely has unintended consequences e.g. duplicates and overrides.
-
-Invalid code is best handled by emerging dedicated tools e.g. [csstree](https://github.com/csstree/csstree) - a language parser with syntax validation. As a stop-gap, while these tools mature, provide invalid code rules for the simplest of cases.
-
-(In the future, these tools can be wrapped as plugins to make use of features such as `/* stylelint-* */` command comments, severity levels, and options validator.)
-
-### Limit language features
-
-Provide rules to limit what language features can be used, including:
-
-- Enforcing a maximum specificity by limiting the specificity itself or the occurrence of different selector types e.g. class, ID, attribute etc.
-- Enforcing best practices _at the configuration level_ e.g. disallowing the `all` keyword for transitions as it is not performant.
-- Enforcing the use of a subset of features to improve consistency across a code base e.g. limiting what units are allowed (`px` or `rem` etc.)
-- Enforcing specific patterns for selectors and names (e.g. those of custom properties).
-
-### Stylistic issues
-
-Provide rules to enforce a diverse range of stylistic conventions, including:
-
-- Whitespace
-- Case
-- Quotes
-
-There are two approaches to enforcing stylistic conventions:
-
-- A machine algorithmically pretty prints the code (usually based on a maximum line length).
-- A human initially formats the code, and a machine fixes-up/warns-about any mistakes.
-
-The former is handled by pretty printers, like [prettier](https://github.com/prettier/prettier), whereas the latter is catered for by the built-in stylistic rules.
-
-Additionally, the built-in stylistic rules and plugins are configurable to support this diverse range of stylistic conventions. This is in contrast to pretty printers, which tend to be opinionated. The ordering of properties within declaration blocks is an example of a divisive topic, where there is no one or two dominant conventions. The [`stylelint-order`](https://www.npmjs.com/package/stylelint-order) plugin adheres to stylelint's philosophies, and can be used to lint and fix a diverse range of ordering conventions.
-
-Another example is the use of single-line rules for sets of _related_ rules e.g.
-
-```css
-/* Single-line related classes */
-.class-1 { top: 0; bottom: 0; }
-.class-2 { top: 5px; right: 0; }
-.class-3 { top: 8px; left: 0; }
-```
-
-The built-in stylistic rules can be configured to allow both multi-line and single-line rules. The choice of when to use each belongs to the user, who can determine which rules are related.
-
-## Extensible
-
-Provide multiple points of extensions, including:
-
-- [Plugins](docs/developer-guide/plugins.md) - build community rules to support methodologies, toolsets, non-standard CSS features, or very specific use cases.
-- [Processors](docs/user-guide/processors.md) - lint the CSS within non-stylesheet files.
-- [Extendable configs](docs/user-guide/configuration.md#extends) - extend and share configurations.
-- [Formatters](docs/developer-guide/formatters.md) - format stylelint result objects.
-- [Custom syntax](docs/user-guide/node-api.md#customsyntax) - use any PostCSS-compatible syntax module.
-
-## Robust
-
-Provide a robust tool with a [comprehensive test suite](docs/developer-guide/rules.md#write-tests), including:
-
-- High coverage, currently over 95%.
-- A wide range of fixtures for rules, currently over 10000.
-
-## Consistent
-
-Provide consistency throughout, including:
-
-- Consistent [names](docs/developer-guide/rules.md#naming-a-rule), [options](docs/developer-guide/rules.md#determining-options), [violation messages](docs/developer-guide/rules.md#determine-violation-messages), [documentation](docs/developer-guide/rules.md#write-the-readme) and [treatment](docs/developer-guide/rules.md#write-the-rule) of non-standard syntax within/of rules.
-- Consistent [requirements for inclusion](docs/developer-guide/rules.md#criteria-for-inclusion).
-
-## Performant
-
-Provide a fast tool, and the means to test and improve performance, including:
-
-- [Benchmarking](docs/developer-guide/rules.md#improving-the-performance-of-a-rule) of an individual rule's performance.
diff --git a/assets/node_modules/stylelint/bin/stylelint.js b/assets/node_modules/stylelint/bin/stylelint.js
deleted file mode 100755
index a30be6c..0000000
--- a/assets/node_modules/stylelint/bin/stylelint.js
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env node
-
-'use strict';
-
-// to use V8's code cache to speed up instantiation time
-require('v8-compile-cache');
-
-require('../lib/cli')(process.argv.slice(2));
diff --git a/assets/node_modules/stylelint/docs/developer-guide.md b/assets/node_modules/stylelint/docs/developer-guide.md
deleted file mode 100644
index 13a845f..0000000
--- a/assets/node_modules/stylelint/docs/developer-guide.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Developer guide
-
-## Contributor guides
-
-- [Prerequisites](developer-guide/prerequisites.md): Prerequisites to contributing.
-- [Rules](developer-guide/rules.md): Working on the built-in rules.
-
-## Ecosystem guides
-
-- [Plugins](developer-guide/plugins.md): Writing your own plugins.
-- [Processors](developer-guide/processors.md): Writing your own processors.
-- [Formatters](developer-guide/formatters.md): Writing your own formatters.
-
-## Core team guides
-
-- [Releases](developer-guide/releases.md): Performing releases.
-- [Pull requests](developer-guide/pull-requests.md): Reviewing pull requests.
-- [Issues](developer-guide/issues.md): Managing issues.
diff --git a/assets/node_modules/stylelint/docs/developer-guide/formatters.md b/assets/node_modules/stylelint/docs/developer-guide/formatters.md
deleted file mode 100644
index 7a9fe6c..0000000
--- a/assets/node_modules/stylelint/docs/developer-guide/formatters.md
+++ /dev/null
@@ -1,78 +0,0 @@
-# Writing formatters
-
-A formatter is a function with the following signature:
-
-```js
-function formatter(results, returnValue) {
- return 'a string of formatted results';
-}
-```
-
-Where the first argument (`results`) is an array of stylelint result objects in the form:
-
-```js
-// A stylelint result object
-{
- source: 'path/to/file.css', // The filepath or PostCSS identifier like <input css 1>
- errored: true, // This is `true` if at least one rule with an "error"-level severity triggered a warning
- warnings: [ // Array of rule violation warning objects, each like the following ...
- {
- line: 3,
- column: 12,
- rule: 'block-no-empty',
- severity: 'error',
- text: 'You should not have an empty block (block-no-empty)',
- },
- ],
- deprecations: [ // Array of deprecation warning objects, each like the following ...
- {
- text: 'Feature X has been deprecated and will be removed in the next major version.',
- reference: 'https://stylelint.io/docs/feature-x.md',
- },
- ],
- invalidOptionWarnings: [ // Array of invalid option warning objects, each like the following ...
- {
- text: 'Invalid option X for rule Y',
- },
- ],
- ignored: false, // This is `true` if the file's path matches a provided ignore pattern
-}
-```
-
-And the second argument (`returnValue`) is an object with one or more of the following keys:
-
-```js
-{
- errored: false, // `true` if there were any warnings with "error" severity
- needlessDisables: [ // Present if stylelint was configured with `reportNeedlessDisables: true`
- {
- source: 'path/to/file.css',
- ranges: [
- {
- start: 10,
- unusedRule: 'indentation',
- },
- ],
- },
- ],
- invalidScopeDisables: [ // Present if stylelint was configured with `reportInvalidScopeDisables: true`
- {
- source: 'path/to/file.css',
- ranges: [
- {
- start: 1,
- unusedRule: 'color-named',
- },
- ],
- },
- ],
- maxWarningsExceeded: { // Present if stylelint was configured with a `maxWarnings` count
- maxWarnings: 10,
- foundWarnings: 15,
- },
-}
-```
-
-## `stylelint.formatters`
-
-stylelint's internal formatters are exposed publicly in `stylelint.formatters`.
diff --git a/assets/node_modules/stylelint/docs/developer-guide/issues.md b/assets/node_modules/stylelint/docs/developer-guide/issues.md
deleted file mode 100644
index 52b8e2e..0000000
--- a/assets/node_modules/stylelint/docs/developer-guide/issues.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# Managing issues
-
-You should:
-
-- use [labels](https://github.com/stylelint/stylelint/labels) and:
- - add _one_ of the `status: *` labels (or the `help wanted` label when ready-to-go)
- - add _zero or one_ of the `type: *` labels
- - add _zero, one or more_ of the `non-standard syntax: *` labels
- - optionally, add the `good first issue` label
-- rename the title into a consistent format and:
- - lead with the [CHANGELOG group names](pull-requests.md), but in the present tense:
- - "Remove y" e.g. "Remove unit-blacklist"
- - "Deprecate x in y" e.g. "Deprecate resolvedNested option in selector-class-pattern"
- - "Add y" e.g. "Add unit-blacklist"
- - "Add x to y" e.g. "Add ignoreProperties: [] to property-blacklist"
- - "Fix false positives/negatives for x in y" e.g. "Fix false positives for Less mixins in color-no-hex"
- - use `*` if the issue applies to a group of rules e.g. "Fix false negatives for SCSS variables in selector-*-pattern"
-- provide a link to the relevant section of the [Developer Guide](../developer-guide.md) when:
- - adding the `help wanted` label to encourage the original poster to contribute, e.g. [adding an option to an existing rule](../developer-guide/rules.md#adding-an-option-to-an-existing-rule) or [fixing a bug in an existing rule](../developer-guide/rules.md#fixing-a-bug-in-an-existing-rule)
- - closing an issue because the feature is best part of ecosystem e.g. [a plugin](../developer-guide/plugins.md) or [processor](../developer-guide/processors.md)
-- use milestones only on issues and not on pull requests and:
- - use the `future-major` milestone for issues that introduce breaking changes
- - optionally, create version milestones (e.g. `8.x`) to manage upcoming releases
-- use the following saved reply to close any issue that do not use the template:
-
-```md
-Thanks for creating this issue but we're closing it as issues need to follow one of our templates, so that we can clearly understand your particular circumstances.
-
-Please help us to help you by [recreating the issue](https://github.com/stylelint/stylelint/issues/new/choose) using one of our templates.
-```
-
-There are three rules of thumb. You should use the:
-
-- `status: discussion`, `status: needs clarification` or `status: needs investigation` label when first triaging an issue
-- `help wanted`, a `type` (and `non-standard syntax: *` and `good first issue`) labels when a course of action is agreed
-- `status: wip` label when your are, or someone has said they are, about to start working on an issue
diff --git a/assets/node_modules/stylelint/docs/developer-guide/plugins.md b/assets/node_modules/stylelint/docs/developer-guide/plugins.md
deleted file mode 100644
index 84ca309..0000000
--- a/assets/node_modules/stylelint/docs/developer-guide/plugins.md
+++ /dev/null
@@ -1,220 +0,0 @@
-# Writing plugins
-
-Plugins are rules and sets of rules built by the community.
-
-We recommend familiarising yourself and adhering to stylelint's [conventions for writing rules](rules.md), including those for names, options, messages, tests and docs.
-
-## The anatomy of a plugin
-
-```js
-// Abbreviated example
-const stylelint = require('stylelint');
-
-const ruleName = 'plugin/foo-bar';
-const messages = stylelint.utils.ruleMessages(ruleName, {
- expected: 'Expected ...',
-});
-
-module.exports = stylelint.createPlugin(ruleName, function(
- primaryOption,
- secondaryOptionObject
-) {
- return function(postcssRoot, postcssResult) {
- const validOptions = stylelint.utils.validateOptions(
- postcssResult,
- ruleName,
- { /* .. */ }
- );
-
- if (!validOptions) {
- return;
- }
-
- // ... some logic ...
- stylelint.utils.report({ /* .. */ });
- };
-});
-
-module.exports.ruleName = ruleName;
-module.exports.messages = messages;
-```
-
-Your plugin's rule name must be namespaced, e.g. `your-namespace/your-rule-name`. If your plugin provides only a single rule or you can't think of a good namespace, you can use `plugin/my-rule`. This namespace ensures that plugin rules will never clash with core rules. *Make sure you document your plugin's rule name (and namespace) for users, because they will need to use it in their config.*
-
-`stylelint.createPlugin(ruleName, ruleFunction)` ensures that your plugin will be setup properly alongside other rules.
-
-In order for your plugin rule to work with the [standard configuration format](../user-guide/configuration.md#rules), `ruleFunction` should accept 2 arguments: the primary option and, optionally, a secondary options object.
-
-If your plugin rule supports [autofixing](rules.md#adding-autofixing), then `ruleFunction` should also accept a third argument: context. Also, it's highly recommended to support the `disableFix` option in your secondary options object. Within the rule, don't perform autofixing if the user has passed a `disableFix` option for your rule.
-
-`ruleFunction` should return a function that is essentially a little [PostCSS plugin](https://github.com/postcss/postcss/blob/master/docs/writing-a-plugin.md): it takes 2 arguments: the PostCSS Root (the parsed AST), and the PostCSS LazyResult. You'll have to [learn about the PostCSS API](https://api.postcss.org/).
-
-### Asynchronous rules
-
-Rules with asynchronous PostCSS plugins are also possible! All you need to do is return a Promise instance from your plugin function.
-
-```js
-// Abbreviated asynchronous example
-const stylelint = require('stylelint');
-
-const ruleName = 'plugin/foo-bar-async';
-const messages = stylelint.utils.ruleMessages(ruleName, {
- expected: 'Expected ...',
-});
-
-module.exports = stylelint.createPlugin(ruleName, function(
- primaryOption,
- secondaryOptionObject
-) {
- return function(postcssRoot, postcssResult) {
- const validOptions = stylelint.utils.validateOptions(
- postcssResult,
- ruleName,
- { /* .. */ }
- );
-
- if (!validOptions) {
- return;
- }
-
- return new Promise(function(resolve) {
- // some async operation
- setTimeout(function() {
- // ... some logic ...
- stylelint.utils.report({ /* .. */ });
- resolve();
- }, 1);
- });
- };
-});
-
-module.exports.ruleName = ruleName;
-module.exports.messages = messages;
-```
-
-## `stylelint.utils`
-
-stylelint exposes some utilities that are useful. *For details about the APIs of these functions, please look at comments in the source code and examples in the standard rules.*
-
-### `stylelint.utils.report`
-
-Adds violations from your plugin to the list of violations that stylelint will report to the user.
-
-*Do not use PostCSS's `node.warn()` method directly.* When you use `stylelint.utils.report`, your plugin will respect disabled ranges and other possible future features of stylelint, providing a better user-experience, one that better fits the standard rules.
-
-### `stylelint.utils.ruleMessages`
-
-Tailors your messages to the format of standard stylelint rules.
-
-### `stylelint.utils.validateOptions`
-
-Validates the options for your rule.
-
-### `stylelint.utils.checkAgainstRule`
-
-Checks CSS against a standard stylelint rule *within your own rule*. This function provides power and flexibility for plugins authors who wish to modify, constrain, or extend the functionality of existing stylelint rules.
-
-Accepts an options object and a callback that is invoked with warnings from the specified rule. The options are:
-
-- `ruleName`: The name of the rule you are invoking.
-- `ruleSettings`: Settings for the rule you are invoking, formatting in the same way they would be in a `.stylelintrc` configuration object.
-- `root`: The root node to run this rule against.
-
-Use the warning to create a *new* warning *from your plugin rule* that you report with `stylelint.utils.report`.
-
-For example, imagine you want to create a plugin that runs `at-rule-no-unknown` with a built-in list of exceptions for at-rules provided by your preprocessor-of-choice:
-
-```js
-const allowableAtRules = [ /* .. */ ];
-
-function myPluginRule(primaryOption, secondaryOptionObject) {
- return function(postcssRoot, postcssResult) {
- const defaultedOptions = Object.assign({}, secondaryOptionObject, {
- ignoreAtRules: allowableAtRules.concat(options.ignoreAtRules || []),
- });
-
- stylelint.utils.checkAgainstRule(
- {
- ruleName: 'at-rule-no-unknown',
- ruleSettings: [primaryOption, defaultedOptions],
- root: postcssRoot,
- },
- (warning) => {
- stylelint.utils.report({
- message: myMessage,
- ruleName: myRuleName,
- result: postcssResult,
- node: warning.node,
- line: warning.line,
- column: warning.column,
- });
- }
- );
- };
-}
-```
-
-## `stylelint.rules`
-
-All of the rule functions are available at `stylelint.rules`. This allows you to build on top of existing rules for your particular needs.
-
-A typical use-case is to build in more complex conditionals that the rule's options allow for. For example, maybe your codebase uses special comment directives to customize rule options for specific stylesheets. You could build a plugin that checks those directives and then runs the appropriate rules with the right options (or doesn't run them at all).
-
-All rules share a common signature. They are a function that accepts two arguments: a primary option and a secondary options object. And that functions returns a function that has the signature of a PostCSS plugin, expecting a PostCSS root and result as its arguments.
-
-Here's an example of a plugin that runs `color-hex-case` only if there is a special directive `@@check-color-hex-case` somewhere in the stylesheet:
-
-```js
-module.exports = stylelint.createPlugin(ruleName, function(expectation) {
- const runColorHexCase = stylelint.rules['color-hex-case'](expectation);
-
- return (root, result) => {
- if (root.toString().indexOf('@@check-color-hex-case') === -1) {
- return;
- }
-
- runColorHexCase(root, result);
- };
-});
-```
-
-## Allow primary option arrays
-
-If your plugin can accept an array as its primary option, you must designate this by setting the property `primaryOptionArray = true` on your rule function. For more information, check out the ["Working on rules"](rules.md#primary) doc.
-
-## External helper modules
-
-In addition to the standard parsers mentioned in the ["Working on rules"](rules.md) doc, there are other external modules used within stylelint that we recommend using. These include:
-
-- [normalize-selector](https://github.com/getify/normalize-selector): Normalize CSS selectors.
-- [postcss-resolve-nested-selector](https://github.com/davidtheclark/postcss-resolve-nested-selector): Given a (nested) selector in a PostCSS AST, return an array of resolved selectors.
-- [style-search](https://github.com/davidtheclark/style-search): Search CSS (and CSS-like) strings, with sensitivity to whether matches occur inside strings, comments, and functions.
-
-Have a look through [stylelint's internal utils](https://github.com/stylelint/stylelint/tree/master/lib/utils) and if you come across one that you need in your plugin, then please consider helping us extract it out into an external module.
-
-## Peer dependencies
-
-You should express, within the `peerDependencies` key (and **not** within the `dependencies` key) of your plugin's `package.json`, what version(s) of stylelint your plugin can be used with. This is to ensure that different versions of stylelint are not unexpectedly installed.
-
-For example, to express that your plugin can be used with stylelint versions 7 and 8:
-
-```json
-{
- "peerDependencies": {
- "stylelint": "^7.0.0 || ^8.0.0"
- }
-}
-```
-
-## Testing plugins
-
-For testing your plugin, you might consider using the same rule-testing function that stylelint uses internally: [`stylelint-test-rule-tape`](https://github.com/stylelint/stylelint-test-rule-tape).
-
-## Plugin packs
-
-To make a single module provide multiple rules, export an array of plugin objects (rather than a single object).
-
-## Sharing plugins and plugin packs
-
-- Use the `stylelint-plugin` keyword within your `package.json`.
-- Once your plugin is published, please send us a Pull Request to add your plugin to [the list](../user-guide/plugins.md).
diff --git a/assets/node_modules/stylelint/docs/developer-guide/prerequisites.md b/assets/node_modules/stylelint/docs/developer-guide/prerequisites.md
deleted file mode 100644
index 5cc884b..0000000
--- a/assets/node_modules/stylelint/docs/developer-guide/prerequisites.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Prerequisites to contributing
-
-## Technical
-
-- Minimum [Node.js](https://nodejs.org/en/) v10, though we do recommend using the latest LTS release.
-- Latest [npm](https://www.npmjs.com/).
-
-## Rules of thumb
-
-1. Never push directly to `master` (except when updating the CHANGELOG). If you need to change something — create PR, even if it's a one letter change.
diff --git a/assets/node_modules/stylelint/docs/developer-guide/processors.md b/assets/node_modules/stylelint/docs/developer-guide/processors.md
deleted file mode 100644
index f4013a4..0000000
--- a/assets/node_modules/stylelint/docs/developer-guide/processors.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# Writing processors
-
-Processors are functions that hook into stylelint's pipeline, modifying code on its way into stylelint and modifying results on their way out.
-
-*Processors can only be used with the CLI and the Node.js API, not with the PostCSS plugin.*
-
-Processor modules are functions that accept an options object and return an object with the following the functions, which hook into the processing of each file:
-
-- **code**: A function that accepts two arguments, the file's code and the file's path, and returns a string for stylelint to lint.
-- **result**: A function that accepts two arguments, the file's stylelint result object and the file's path, and either mutates the result object (returning nothing) or returns a new one.
-
-```js
-// my-processor.js
-module.exports = function(options) {
- return {
- code: function(input, filepath) {
- // ...
- return transformedCode;
- },
- result: function(stylelintResult, filepath) {
- // ...
- return transformedResult;
- },
- };
-};
-
-```
-
-Processors can enable stylelint to lint the CSS within non-stylesheet files.
-
-*Processor options must be JSON-friendly*, because users will need to include them in `.stylelintrc` files.
-
-## Sharing processors
-
-- Use the `stylelint-processor` keyword within your `package.json`.
-- Once your processor is published, please send us a Pull Request to add your processor to [the list](../user-guide/processors.md).
diff --git a/assets/node_modules/stylelint/docs/developer-guide/pull-requests.md b/assets/node_modules/stylelint/docs/developer-guide/pull-requests.md
deleted file mode 100644
index cd3406d..0000000
--- a/assets/node_modules/stylelint/docs/developer-guide/pull-requests.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Reviewing pull requests
-
-Rules of thumb:
-
-- Use the [GitHub review system](https://help.github.com/articles/about-pull-request-reviews/).
-- Review against the [Developer Guide criteria](rules.md).
-- Assign one or more of the appropriate [`PR: needs *` labels](https://github.com/stylelint/stylelint/labels) when requesting a change.
-- Resolve conflicts by [rebasing](https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase), rather than merging the target branch into the pull request branch.
-
-Merge process:
-
-1. Make sure the pull request has the correct number of approvals:
- - For simple documentation fixes: one;
- - For all other pull requests: two.
-2. "Squash and merge" commits, ensuring the resulting commit message is consistently formatted:
- - Sentence case.
- - Descriptive.
-3. Update the [CHANGELOG](https://github.com/stylelint/stylelint/blob/master/CHANGELOG.md) directly via the [GitHub website](https://github.com/stylelint/stylelint/edit/master/CHANGELOG.md) for all merged PRs (except documentation changes):
- - Create a `## Head` heading if one does not exist already.
- - Prefix the item with either: Removed, Changed, Deprecated, Added, or Fixed.
- - Order the item within the group by the widest reaching first to the smallest, and then alphabetically by rule name.
- - Suffix the item with the relevant pull request number, using the complete GitHub URL so that it works on [the website](https://stylelint.io/CHANGELOG/).
- - If applicable, lead the item with the name of rule e.g. "Fixed: `unit-blacklist` false positives for SCSS nested properties".
-4. Lastly, post the item as a comment to the pull request.
diff --git a/assets/node_modules/stylelint/docs/developer-guide/releases.md b/assets/node_modules/stylelint/docs/developer-guide/releases.md
deleted file mode 100644
index 159e7e1..0000000
--- a/assets/node_modules/stylelint/docs/developer-guide/releases.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# Performing releases
-
-The primary goals are:
-
-1. Publishing the updated package to npm.
-2. Creating a GitHub release with notes.
-
-The secondary goals are:
-
-1. Ensuring the stylelint org's `stylelint-config-*` shareable configs are compatible with the release.
-2. Updating the online demo at [https://stylelint.io/demo](https://stylelint.io/demo) to use the release.
-3. Updating the documentation at [https://stylelint.io](https://stylelint.io) to use the release.
-4. Sending out a tweet.
-
-## Process
-
-1. Create a [new issue](https://github.com/stylelint/stylelint/issues/new) announcing the planned release, e.g. `Release 8.11.1` and include the [template checklist](#new-release-issue-template).
-2. Locally test `master` in the `stylelint-config-*` shareable configs repos. Install current `master` branch (`npm install stylelint/stylelint#master`) and run tests.
-3. Locally test `master` in the `stylelint.io` repo.
-4. Locally test `master` in the `stylelint-demo` repo.
-5. Both the publishing of the package to npm and the creating a github release are done with [`np`](https://github.com/sindresorhus/np):
- 1. Ensure the CHANGELOG is [consistently formatted](pull-requests.md).
- 2. Replace `## Head` with new version number e.g. `## 8.1.2`.
- 3. Commit and _push up_ these changes.
- 4. Go to [https://github.com/stylelint/stylelint](https://github.com/stylelint/stylelint) and confirm these changes are correct and pushed up.
- 5. Run `npm run release`. Select correct version that matches the one from changelog.
- 6. When GitHub release page opened, copy changelog for published version from [CHANGELOG.md](../../CHANGELOG.md) to GitHub release.
- 7. Go to [https://www.npmjs.com/package/stylelint](https://www.npmjs.com/package/stylelint) and confirm the package was published correctly.
- 8. Go to [https://github.com/stylelint/stylelint/releases](https://github.com/stylelint/stylelint/releases) and confirm the release was created correctly.
-6. If a new version of any `stylelint-config-*` is required, repeat step 5 for that repo.
-7. Update the online demo by changing to the `stylelint-demo` repo:
- 1. Run `npm install -S stylelint@latest`
- 2. Run `npm test`
- 3. Commit and _push up_ these changes.
- 4. Go to [https://stylelint.io/demo](https://stylelint.io/demo) and confirm the update was automatically deployed.
-8. Update the website documentation by changing to the `stylelint.io` repo:
- 1. Run `npm install -D stylelint@latest`
- 2. Run `npm test`
- 3. Commit and _push up_ these changes.
- 4. Go to [https://stylelint.io](https://stylelint.io) and confirm the update was deployed correctly. (It takes some time for Netlify to publish)
-9. Compose a tweet that announces the release, communicates what has changed and links to the appropriate heading in the CHANGELOG on [https://stylelint.io](https://stylelint.io).
-
-## New Release Issue Template
-
-```markdown
-- [ ] stylelint release
-- [ ] stylelint-config-recommended update/release
-- [ ] stylelint-config-standard update/release
-- [ ] stylelint-demo update
-- [ ] stylelint.io update
-- [ ] tweet
-
-cc @stylelint/core
-```
diff --git a/assets/node_modules/stylelint/docs/developer-guide/rules.md b/assets/node_modules/stylelint/docs/developer-guide/rules.md
deleted file mode 100644
index 1c32794..0000000
--- a/assets/node_modules/stylelint/docs/developer-guide/rules.md
+++ /dev/null
@@ -1,313 +0,0 @@
-# Working on rules
-
-Please help us create, enhance, and debug stylelint rules!
-
-## Creating a new rule
-
-First, open [an issue](https://github.com/stylelint/stylelint/issues/new) with your idea for the new rule.
-
-Usually we have some discussion about the rule's purpose, name, options, and suitability as a rule.
-
-### Criteria for inclusion
-
-We discuss whether the rule meets the following criteria for inclusion in stylelint:
-
-- Applicable to standard CSS syntax only.
-- Generally useful; not tied to idiosyncratic patterns.
-- Has a clear and unambiguous finished state.
-- Has a singular purpose.
-- Is standalone, and doesn't rely on another rule.
-- Does not contain functionality that overlaps with another rule.
-
-Otherwise, it should be a plugin. However, plugins should also try to adhere to the latter three criteria.
-
-### Naming a rule
-
-Have a look at the [rules user guide](../user-guide/about-rules.md) to familiarize yourself the rule naming conventions.
-
-We take care to ensure that all the rules are named accurately and consistently. Our goals in that effort are to ensure that rules are easy to find and understand, and to prevent us from wanting to change the name later.
-
-*Rules are named to encourage explicit, rather than implicit, options.* For example, `color-hex-case: "upper"|"lower"` rather than `color-hex-uppercase: "always"|"never"`. As `color-hex-uppercase: "never"` *implies* always lowercase, whereas `color-hex-case: "lower"` makes it *explicit*.
-
-### Determining options
-
-#### Primary
-
-Every rule *must have* a **primary option**.
-
-- In `"color-hex-case": "upper"`, the primary option is `"upper"`.
-- In `"indentation": [2, { "except": ["block"] }]`, the primary option is `2`.
-
-If your rule can accept an array as its primary option, you must designate this by setting the property `primaryOptionArray = true` on your rule function. For example:
-
-```js
-function rule(primary, secondary) {
- return (root, result) => { /* .. */ };
-}
-
-rule.primaryOptionArray = true;
-
-module.exports = rule;
-
-// or, for plugins:
-// module.exports = stylelint.createPlugin(ruleName, rule);
-```
-
-There is one caveat here: If your rule accepts a primary option array, it cannot also accept a primary option object. Whenever possible, if you want your rule to accept a primary option array, you should make an array the only possibility, instead of allowing for various data structures.
-
-#### Secondary
-
-Some rules require extra flexibility to address a variety of use-cases. These can use an **optional secondary options object**.
-
-- In `"color-hex-case": "upper"`, there is no secondary options object.
-- In `"indentation": [2, { "except": ["block"] }]`, the secondary options object is `{ "except": ["block"] }`.
-
-The most typical secondary options are `"ignore": []` and `"except": []`; but anything is possible.
-
-A rule's secondary option can be anything if you're not ignoring or making exceptions. As an example, `resolveNestedSelectors: true|false` is used within some `selector-*` rules to change how the rule processes nested selectors.
-
-##### Keyword `"ignore"` and `"except"`
-
-`"ignore"` and `"except"` accept an array of predefined keyword options e.g. `["relative", "first-nested", "descendant"]`.
-
-- Use `"ignore"` when you want the rule to skip-over a particular pattern.
-- Use `"except"` when you want to invert the primary option for a particular pattern.
-
-##### User-defined `"ignore*"`
-
-Use a more specific secondary option name when accepting a *user-defined* list of things to ignore. This takes the form of `"ignore<Things>": []` e.g. use `"ignoreAtRules": []` if a rule checks at-rules and you want to allow a user to specify which particular at-rule types to ignore.
-
-### Determine violation messages
-
-Messages take one of these forms:
-
-- "Expected \[something\] \[in some context\]"
-- "Unexpected \[something\] \[in some context\]"
-
-Look at the messages of other rules to glean more conventions and patterns.
-
-### Write the rule
-
-*When writing the rule, always look to other similar rules for conventions and patterns to start from and mimic.*
-
-You will use the [PostCSS API](https://api.postcss.org/) to navigate and analyze the CSS syntax tree. We recommend using the `walk` iterators (e.g. `walkDecls`), rather than using `forEach` to loop through the nodes.
-
-Depending on the rule, we also recommend using [postcss-value-parser](https://github.com/TrySound/postcss-value-parser) and [postcss-selector-parser](https://github.com/postcss/postcss-selector-parser). There are significant benefits to using these parsers instead of regular expressions or `indexOf` searches (even if they aren't always the most performant method).
-
-stylelint has a number of [utility functions](https://github.com/stylelint/stylelint/tree/master/lib/utils) that are used in existing rules and might prove useful to you, as well. Please look through those so that you know what's available. (And if you have a new function that you think might prove generally helpful, let's add it to the list!). You will definitely want to use `validateOptions()` util so that users are warned about invalid options. (Looking at other rules for examples of options validation will help a lot.). You should also make use of the `isStandardSyntax*` utilities to ignore non-standard syntax.
-
-The rule should be strict *by default*. The user can make the rule more permissive by using the `"ignore*:"` secondary options.
-
-The rule should not include code for methodologies or language extensions. Instead, provide generic secondary options so that the user can ignore these at the *configuration level*. For example, when dealing with specificity, a rule should not account for the `:global` and `:local` pseudo-classes (introduced in the CSS Modules language extension), instead the rule should provide a `ignorePseudoClasses: []` secondary option. Methodologies come and go quickly, and this approach ensures the code base does not become littered with code for obsolete things.
-
-Only add an option to a rule if it addresses a *requested* use case. Do not add an option to a rule, even for the sake of consistency, if there has been no request. This is to avoid polluting the tool with unused features.
-
-### Adding autofixing
-
-Depending on the rule, it might be possible to automatically fix the rule's violations by mutating the PostCSS AST (Abstract Syntax Tree) using the [PostCSS API](http://api.postcss.org/).
-
-Add `context` variable to rule parameters:
-
-```js
-function rule(primary, secondary, context) {
- return (root, result) => { /* .. */ };
-}
-```
-
-`context` is an object which could have two properties:
-
-- `fix`(boolean): If `true`, your rule can apply autofixes.
-- `newline`(string): Line-ending used in current linted file.
-
-If `context.fix` is `true`, then change `root` using PostCSS API and return early before `report()` is called.
-
-```js
-if (context.fix) {
- // Apply fixes using PostCSS API
- return; // Return and don't report a problem
-}
-
-report(...);
-```
-
-### Write tests
-
-Each rule must be accompanied by tests that contain:
-
-- All patterns that are considered violations.
-- All patterns that should *not* be considered violations.
-
-Write as many as you can stand to.
-
-#### Checklist
-
-Please run through this checklist and ensure each point is covered by your tests. Especially *consider the edge-cases*. These are where the bugs and shortcomings of rules always arise.
-
-##### Best practices
-
-- Ensure you are testing errors in multiple positions, not the same place every time.
-- Ensure you use realistic (if simple) CSS, and avoid the use of ellipses.
-- Ensure you use standard CSS syntax by default, and only swap parsers when testing a specific piece of non-standard syntax.
-- When accessing raw strings from the PostCSS AST, use `node.raws` instead of `node.raw()`. This will ensure string corresponds exactly to the original.
-
-##### Commonly overlooked edge-cases
-
-- How does your rule handle variables (`$sass`, `@less` or `var(--custom-property)`)?
-- How does your rule handle CSS strings (e.g. `content: "anything goes";`)?
-- How does your rule handle CSS comments (e.g. `/* anything goes */`)?
-- How does your rule handle `url()` functions, including data URIs (e.g. `url(anything/goes.jpg)`)?
-- How does your rule handle vendor prefixes (e.g. `@-webkit-keyframes name {}`)?
-- How does your rule handle case sensitivity (e.g. `@KEYFRAMES name {}`)?
-- How does your rule handle a pseudo-class *combined* with a pseudo-element (e.g. `a:hover::before`)?
-- How does your rule handle nesting (e.g. do you resolve `& a {}`, or check it as is?)?
-- How does your rule handle whitespace and punctuation (e.g. comparing `rgb(0,0,0)` with `rgb(0, 0, 0)`)?
-
-#### Running tests
-
-You can run the tests via:
-
-```console
-npm test
-```
-
-However, this runs all 25,000+ unit tests and also linting.
-
-You can use the interactive testing prompt to run tests for just a chosen set of rules (which you'll want to do during development). For example, to run the tests for just the `color-hex-case` and `color-hex-length` rules:
-
-1. Run `npm run watch` to start the interactive testing prompt.
-2. Press `p` to filter by a filename regex pattern.
-3. Enter `color-hex-case|color-hex-length` i.e. each rule name separated by the pipe symbol (`|`).
-
-### Write the README
-
-Each rule must be accompanied by a README, fitting the following format:
-
-1. Rule name.
-2. Single-line description.
-3. Prototypical code example.
-4. Expanded description (if necessary).
-5. Options.
-6. Example patterns that are considered violations (for each option value).
-7. Example patterns that are *not* considered violations (for each option value).
-8. Optional options (if applicable).
-
-Look at the READMEs of other rules to glean more conventional patterns. These include:
-
-- Using "This rule" to refer to the rule e.g. "This rule ignores ..."
-- Aligning the arrows within the prototypical code example with the beginning of the construct being highlighted.
-- Aligning the text within the prototypical code example as far to the left as possible.
-
-For example:
-
-```css
- @media screen and (min-width: 768px) {}
-/** ↑ ↑
- * These names and values */
-```
-
-#### Single-line descriptions
-
-Take the form of:
-
-- "Disallow ..." (for `no` rules).
-- "Limit ..." (for `max` rules).
-- "Require ..." (for rules that accept `"always"` and `"never"` options).
-- "Specify ..." (for everything else).
-
-#### Example patterns
-
-- Use complete CSS patterns i.e. avoid ellipses (`...`)
-- Use standard CSS syntax (and use `css` [GFM fenced code blocks](https://help.github.com/articles/creating-and-highlighting-code-blocks/)) by default.
-- Use the minimum amount of code possible to communicate the pattern e.g. if the rule targets selectors then use an empty rule e.g. `{}`.
-- Use `{}`, rather than `{ }` for empty rules.
-- Use the `a` type selector by default.
-- Use the `@media` at-rules by default.
-- Use the `color` property by default.
-- Use *foo*, *bar* and *baz* for names e.g. `.foo`, `#bar`, `--baz`
-
-### Wire up the rule
-
-The final step is to add references to the new rule in the following places:
-
-- [The rules `index.js` file](../../lib/rules/index.js)
-- [The list of rules](../user-guide/rules.md)
-- [The example config](../user-guide/example-config.md)
-
-Once you have something to show, you'll create a [pull request](https://github.com/stylelint/stylelint/compare) to continue the conversation.
-
-## Adding an option to an existing rule
-
-First, open [an issue](https://github.com/stylelint/stylelint/issues/new) about the option you wish to add. We'll discuss its functionality and name there.
-
-Once we've agreed on the direction, you can work on a pull request. Here are the steps you'll need to take:
-
-1. Run `npm run watch` to start the interactive testing prompt.
-2. Use the `p` command to filter the active tests to just the rule you're working on.
-3. Change the rule's validation to allow for the new option.
-4. Add to the rule some logic (as little as possible) to make the option work.
-5. Add new unit tests to test the option.
-6. Add documentation about the new option.
-
-## Fixing a bug in an existing rule
-
-Here is a process that usually works:
-
-1. Run `npm run watch` to start the interactive testing prompt.
-2. Use the `p` command to filter the active tests to just the rule you're working on.
-3. Write failing unit tests that exemplify the bug.
-4. Fiddle with the rule until those new tests pass.
-
-That's it! **If you are unable to figure out how to fix the bug yourself, it is still helpful to submit a pull request with your failing test cases.** It means that somebody else can jump right in and help out with the rule's logic.
-
-## Deprecating a rule
-
-Deprecating rules doesn't happen very often. However, these two steps are important to do:
-
-1. Point the `stylelintReference` link to the specific version of the rule README on the GitHub website, so that it is always accessible.
-2. Add the appropriate meta data to mark the rule as deprecated.
-
-## Improving the performance of a rule
-
-There's a way to run benchmarks on any given rule with any valid config for it:
-
-```shell
-npm run benchmark-rule -- ruleName ruleOptions [ruleContext]
-```
-
-If the `ruleOptions` argument is anything other than a string or a boolean, it must be valid JSON wrapped in quotation marks.
-
-```shell
-npm run benchmark-rule -- selector-combinator-space-after never
-```
-
-```shell
-npm run benchmark-rule -- selector-combinator-space-after always
-```
-
-```shell
-npm run benchmark-rule -- block-opening-brace-space-before "[\"always\", {\"ignoreAtRules\": [\"else\"]}]"
-```
-
-If the `ruleContext` argument is specified, the sames procedure would apply:
-
-```shell
-npm run benchmark-rule -- block-opening-brace-space-before "[\"always\", {\"ignoreAtRules\": [\"else\"]}]" "{\"fix\": \"true\"}"
-```
-
-The script loads Bootstrap's CSS (from its CDN) and runs it through the configured rule.
-
-It will end up printing some simple stats like this:
-
-```shell
-Warnings: 1441
-Mean: 74.17598357142856 ms
-Deviation: 16.63969674310928 ms
-```
-
-What can you do with this? **When writing new rules or refactoring existing rules, use these measurements to determine the efficiency of your code.**
-
-A stylelint rule can repeat its core logic many, many times (e.g. checking every value node of every declaration in a vast CSS codebase). So it's worth paying attention to performance and doing what we can to improve it!
-
-**This is a great way to contribute if you just want a quick little project.** Try picking a rule and seeing if there's anything you can do to speed it up.
-
-Make sure to include benchmark measurements in your PR's!
diff --git a/assets/node_modules/stylelint/docs/user-guide.md b/assets/node_modules/stylelint/docs/user-guide.md
deleted file mode 100644
index 2a094ea..0000000
--- a/assets/node_modules/stylelint/docs/user-guide.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# User guide
-
-## Introduction
-
-- [FAQ](user-guide/faq.md): Frequently asked questions about using and configuring stylelint.
-- [About rules](user-guide/about-rules.md): An explanation of rule names and how rules work together.
-- [Semantic versioning policy](user-guide/semantic-versioning-policy.md): An explanation of our policy on semantic versioning.
-
-## Configuration
-
-- [Configuration](user-guide/configuration.md): How to configure stylelint.
- - [Rules](user-guide/rules.md): A list of stylelint's rules.
- - [Plugins](user-guide/plugins.md): A list of community plugins.
- - [Processors](user-guide/processors.md): A list of community processors.
-- [Example config](user-guide/example-config.md): An example config that you can use as a blueprint for your own.
-- [CSS processors](user-guide/css-processors.md): How to use the linter with a CSS processor, like SCSS or PostCSS plugins.
-
-## Usage
-
-- [The CLI](user-guide/cli.md): Examples and exit codes for using the CLI.
-- [The Node.js API](user-guide/node-api.md): Options and examples for using the Node.js API.
-- [The PostCSS plugin](user-guide/postcss-plugin.md): Options and examples for using the PostCSS plugin.
-- [Complementary tools](user-guide/complementary-tools.md): List of community editor plugins, build tool plugins and other tools.
-
-## Further reading
-
-- [Articles](user-guide/articles.md): A collection of articles and tutorials about stylelint.
diff --git a/assets/node_modules/stylelint/docs/user-guide/about-rules.md b/assets/node_modules/stylelint/docs/user-guide/about-rules.md
deleted file mode 100644
index d01f4e4..0000000
--- a/assets/node_modules/stylelint/docs/user-guide/about-rules.md
+++ /dev/null
@@ -1,394 +0,0 @@
-# About rules
-
-We have taken great care to consistently name rules.
-
-The rules have been designed to work together to enforce strict conventions.
-
-## About rule names
-
-Rule names are:
-
-- made up of lowercase words separated by hyphens
-- split into two parts
-
-The first part describes what [*thing*](http://apps.workflower.fi/vocabs/css/en) the rule applies to. The second part describes what the rule is checking.
-
-For example:
-
-```js
-"number-leading-zero"
-// ↑ ↑
-// the thing what the rule is checking
-```
-
-There is no first part when the rule applies to the whole stylesheet.
-
-For example:
-
-```js
-"no-eol-whitespace"
-"indentation"
-// ↑
-// what the rules are checking
-```
-
-### No rules
-
-Most rules require *or* disallow something.
-
-For example, whether numbers *must* or *must not* have a leading zero:
-
-- `number-leading-zero`: `string - "always"|"never"`
- - `"always"` - there *must always* be a leading zero
- - `"never"` - there *must never* be a leading zero
-
-```css
-a { line-height: 0.5; }
-/** ↑
- * This leading zero */
-```
-
-However, some rules *just disallow* something. These rules include `*-no-*` in their name.
-
-For example, whether empty blocks should be disallowed:
-
-- `block-no-empty` - blocks *must not* be empty
-
-```css
-a { }
-/** ↑
- * Blocks like this */
-```
-
-Notice how, for a rule like this, it does not make sense to have an option to enforce the opposite i.e. that every block *must* be empty.
-
-### Max and min rules
-
-`*-max-*` and `*-min-*` rules are used to *set a limit* to something.
-
-For example, specifying the maximum number of digits after the "." in a number:
-
-- `number-max-precision`: `int`
-
-```css
-a { font-size: 1.333em; }
-/** ↑
- * The maximum number of digits after this "." */
-```
-
-### Whitespace rules
-
-Whitespace rules allow you to specify whether an empty line, a single space, a newline or no space must be used in some specific part of the stylesheet.
-
-The whitespace rules combine two sets of keywords:
-
-- `before`, `after` and `inside` are used to specify where the whitespace (if any) is expected
-- `empty-line`, `space` and `newline` are used to specify whether a single empty line, a single space, a single newline or no space is expected there
-
-For example, specifying if a single empty line or no space must come before all the comments in a stylesheet:
-
-- `comment-empty-line-before`: `string` - `"always"|"never"`
-
-```css
-a {}
- ←
-/* comment */ ↑
- ↑
-/** ↑
- * This empty line */
-```
-
-Additionally, some whitespace rule make use of another set of keywords:
-
-- `comma`, `colon`, `semicolon`, `opening-brace`, `closing-brace`, `opening-parenthesis`, `closing-parenthesis`, `operator` or `range-operator` are used if a specific piece of punctuation in the *thing* is being targeted
-
-For example, specifying if a single space or no space must follow a comma in a function:
-
-- `function-comma-space-after`: `string` - `"always"|"never"`
-
-```css
-a { transform: translate(1, 1) }
-/** ↑
- * The space after this commas */
-```
-
-The plural of the punctuation is used for `inside` rules. For example, specifying if a single space or no space must be inside the parentheses of a function:
-
-- `function-parentheses-space-inside`: `string` - `"always"|"never"`
-
-```css
-a { transform: translate( 1, 1 ); }
-/** ↑ ↑
- * The space inside these two parentheses */
-```
-
-## Rules work together
-
-The rules can be used together to enforce strict conventions.
-
-### `*-newline/space-before` and `*-newline/space-after` rules
-
-Say you want to enforce no space before and a single space after the colon in every declaration:
-
-```css
-a { color: pink; }
-/** ↑
- * No space before and a single space after this colon */
-```
-
-You can enforce that with:
-
-```js
-"declaration-colon-space-after": "always",
-"declaration-colon-space-before": "never"
-```
-
-Some *things* (e.g. declaration blocks and value lists) can span more than one line. In these cases `newline` rules and extra options can be used to provide flexibility.
-
-For example, this is the complete set of `value-list-comma-*` rules and their options:
-
-- `value-list-comma-space-after`: `"always"|"never"|"always-single-line"|"never-single-line"`
-- `value-list-comma-space-before`: `"always"|"never"|"always-single-line"|"never-single-line"`
-- `value-list-comma-newline-after`: `"always"|"always-multi-line|"never-multi-line"`
-- `value-list-comma-newline-before`: `"always"|"always-multi-line"|"never-multi-line"`
-
-Where `*-multi-line` and `*-single-line` are in reference to the value list (the *thing*). For example, given:
-
-```css
-a,
-b {
- color: red;
- font-family: sans, serif, monospace; /* single-line value list */
-} ↑ ↑
-/** ↑ ↑
- * The value list start here and ends here */
-```
-
-There is only a single-line value list in this example. The selector is multi-line, as is the declaration block and, as such, also the rule. But the value list isn't and that is what the `*-multi-line` and `*-single-line` refer to in the context of this rule.
-
-#### Example A
-
-Say you only want to allow single-line value lists. And you want to enforce no space before and a single space after the commas:
-
-```css
-a {
- font-family: sans, serif, monospace;
- box-shadow: 1px 1px 1px red, 2px 2px 1px 1px blue inset, 2px 2px 1px 2px blue inset;
-}
-```
-
-You can enforce that with:
-
-```js
-"value-list-comma-space-after": "always",
-"value-list-comma-space-before": "never"
-```
-
-#### Example B
-
-Say you want to allow both single-line and multi-line value lists. You want there to be a single space after the commas in the single-line lists and no space before the commas in both the single-line and multi-line lists:
-
-```css
-a {
- font-family: sans, serif, monospace; /* single-line value list with space after, but no space before */
- box-shadow: 1px 1px 1px red, /* multi-line value list ... */
- 2px 2px 1px 1px blue inset, /* ... with newline after, ... */
- 2px 2px 1px 2px blue inset; /* ... but no space before */
-}
-```
-
-You can enforce that with:
-
-```js
-"value-list-comma-newline-after": "always-multi-line",
-"value-list-comma-space-after": "always-single-line",
-"value-list-comma-space-before": "never"
-```
-
-#### Example C
-
-Say you want to allow both single-line and multi-line value lists. You want there to be no space before the commas in the single-line lists and always a space after the commas in both lists:
-
-```css
-a {
- font-family: sans, serif, monospace;
- box-shadow: 1px 1px 1px red
- , 2px 2px 1px 1px blue inset
- , 2px 2px 1px 2px blue inset;
-}
-```
-
-You can enforce that with:
-
-```js
-"value-list-comma-newline-before": "always-multi-line",
-"value-list-comma-space-after": "always",
-"value-list-comma-space-before": "never-single-line"
-```
-
-#### Example D
-
-Lastly, the rules are flexible enough to enforce entirely different conventions for single-line and multi-line lists. Say you want to allow both single-line and multi-line value lists. You want the single-line lists to have a single space before and after the colons. Whereas you want the multi-line lists to have a single newline before the commas, but no space after:
-
-```css
-a {
- font-family: sans , serif , monospace; /* single-line list with a single space before and after the comma */
- box-shadow: 1px 1px 1px red /* multi-line list ... */
- ,2px 2px 1px 1px blue inset /* ... with newline before, ... */
- ,2px 2px 1px 2px blue inset; /* ... but no space after the comma */
-}
-```
-
-You can enforce that with:
-
-```js
-"value-list-comma-newline-after": "never-multi-line",
-"value-list-comma-newline-before": "always-multi-line",
-"value-list-comma-space-after": "always-single-line",
-"value-list-comma-space-before": "always-single-line"
-```
-
-### `*-empty-line-before` and `*-max-empty-lines` rules
-
-These rules work together to control where empty lines are allowed.
-
-Each *thing* is responsible for pushing itself away from the *preceding thing*, rather than pushing the *subsequent thing* away. This consistency is to avoid conflicts, and is why there aren't any `*-empty-line-after` rules in stylelint.
-
-Say you want to enforce the following:
-
-```css
-a {
- background: green;
- color: red;
-
- @media (min-width: 30em) {
- color: blue;
- }
-}
-
-b {
- --custom-property: green;
-
- background: pink;
- color: red;
-}
-```
-
-You can do that with:
-
-```js
-"at-rule-empty-line-before": ["always", {
- "except": ["first-nested"]
-}],
-"custom-property-empty-line-before": [ "always", {
- "except": [
- "after-custom-property",
- "first-nested"
- ]
-}],
-"declaration-empty-line-before": ["always", {
- "except": [
- "after-declaration",
- "first-nested"
- ]
-}],
-"block-closing-brace-empty-line-before": "never",
-"rule-empty-line-before": ["always-multi-line"]
-```
-
-We recommend that you set your primary option (e.g. `"always"` or `"never"`) to whatever is your most common occurrence and define your exceptions with the `except` optional secondary options. There are many values for the `except` option e.g. `first-nested`, `after-comment` etc.
-
-The `*-empty-line-before` rules control whether there must never be an empty line or whether there must be *one or more* empty lines before a *thing*. The `*-max-empty-lines` rules complement this by controlling *the number* of empty lines within *things*. The `max-empty-lines` rule is used to set a limit across the entire source. A *stricter* limit can then be set within *things* using the likes of `function-max-empty-lines`, `selector-max-empty-lines` and `value-list-max-empty-lines`.
-
-For example, say you want to enforce the following:
-
-```css
-a,
-b {
- box-shadow:
- inset 0 2px 0 #dcffa6,
- 0 2px 5px #000;
-}
-
-c {
- transform:
- translate(
- 1,
- 1
- );
-}
-```
-
-i.e. a maximum of 1 empty line within the whole source, but no empty lines within functions, selector lists and value lists.
-
-You can do that with:
-
-```js
-"function-max-empty-lines": 0,
-"max-empty-lines": 1,
-"selector-list-max-empty-lines": 0,
-"value-list-max-empty-lines": 0
-```
-
-### `*-whitelist`, `*-blacklist`, `color-named` and applicable `*-no-*` rules
-
-These rules work together to (dis)allow language features and constructs.
-
-There are `*-whitelist` and `*-blacklist` rules that target the main constructs of the CSS language: at-rules, functions, declarations (i.e. property-value pairs), properties and units. These rules can be used to (dis)allow any language features that makes use of these constructs (e.g. `@media`, `rgb()`). However, there are features not caught by these `*-whitelist` and `*-blacklist` rules (or are, but would require complex regex to configure). There are individual rules, usually a `*-no-*` rule (e.g. `color-no-hex` and `selector-no-id`), to disallow each of these features.
-
-Say you want to disallow the `@debug` language extension. You can do that using either the `at-rule-blacklist` or `at-rule-whitelist` rules because the `@debug` language extension uses the at-rule construct e.g.
-
-```js
-"at-rule-blacklist": ["debug"]
-```
-
-Say you want to, for whatever reason, disallow the whole at-rule construct. You can do that using:
-
-```js
-"at-rule-whitelist": []
-```
-
-Say you want to disallow the value `none` for the `border` properties. You can do that using either the `declaration-property-value-blacklist` or `declaration-property-value-whitelist` e.g.
-
-```js
-"declaration-property-value-blacklist": [{
- "/^border/": ["none"]
-}]
-```
-
-#### color
-
-Most `<color>` values are *functions*. As such, they can be (dis)allowed using either the `function-blacklist` or `function-whitelist` rules. There are two other color representations that aren't functions: named colors and hex colors. There are two specific rules that (dis)allow these: `color-named` and `color-no-hex`, respectively.
-
-Say you want to enforce using a named color *if one exists for your chosen color* and use `hwb` color if one does not, e.g.:
-
-```css
-a {
- background: hwb(235, 0%, 0%); /* there is no named color equivalent for this color */
- color: black;
-}
-```
-
-If you're taking a whitelisting approach, you can do that with:
-
-```js
-"color-named": "always-where-possible",
-"color-no-hex": true,
-"function-whitelist": ["hwb"]
-```
-
-Or, if you're taking a blacklisting approach:
-
-```js
-"color-named": "always-where-possible",
-"color-no-hex": true,
-"function-blacklist": ["/^rgb/", "/^hsl/", "gray"]
-```
-
-This approach scales to when language extensions (that use the two built-in extendable syntactic constructs of at-rules and functions) are used. For example, say you want to disallow all standard color presentations in favour of using a custom color representation function, e.g. `my-color(red with a dash of green / 5%)`. You can do that with:
-
-```js
-"color-named": "never",
-"color-no-hex": true,
-"function-whitelist": ["my-color"]
-```
diff --git a/assets/node_modules/stylelint/docs/user-guide/articles.md b/assets/node_modules/stylelint/docs/user-guide/articles.md
deleted file mode 100644
index 5274dfd..0000000
--- a/assets/node_modules/stylelint/docs/user-guide/articles.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Articles
-
-A collection of articles and tutorials about stylelint.
-
-- [Lint your CSS with stylelint](https://css-tricks.com/stylelint/): Written by one of stylelint's co-creators, this is the definitive article on stylelint.
-- [Stylelint: The Style Sheet Linter We’ve Always Wanted](https://www.smashingmagazine.com/2016/05/stylelint-the-style-sheet-linter-weve-always-wanted/): Why linting a stylesheet matters and how stylelint brings order to a stylesheet. *(We now recommend using [`gulp-stylelint`](https://github.com/olegskl/gulp-stylelint), rather than the `gulp-postcss` and `postcss-reporter` combination outlined in the article. Also, both the “prevent qualified selectors” and “enforce shorthand values” plugins were rolled into the core rules as `selector-no-qualifying-type` and `shorthand-property-no-redundant-values` respectively)*
-- [Improving CSS quality at Facebook and beyond](https://code.facebook.com/posts/879890885467584/improving-css-quality-at-facebook-and-beyond): Detailing Facebook's switch from a custom CSS linter to stylelint.
-- [How to lint your Sass/CSS properly with Stylelint](http://www.creativenightly.com/2016/02/How-to-lint-your-css-with-stylelint/): Introduction to linting CSS. *(As above, we now recommend using [`gulp-stylelint`](https://github.com/olegskl/gulp-stylelint), rather than the `gulp-postcss` and `postcss-reporter` combination outlined in the article)*
-- [Improving the Quality of Your CSS with PostCSS](https://www.sitepoint.com/improving-the-quality-of-your-css-with-postcss/): Introduction to various PostCSS linting tools. *(As above, we recommend using [`gulp-stylelint`](https://github.com/olegskl/gulp-stylelint).)*
-- [Floss your style sheets with Stylelint](https://benfrain.com/floss-your-style-sheets-with-stylelint/): The first article written about stylelint. *(As before, we now recommend using [`gulp-stylelint`](https://github.com/olegskl/gulp-stylelint))*
-- [How to lint SCSS with stylelint](https://medium.com/@bjankord/how-to-lint-scss-with-stylelint-dc87809a9878): A guide which covers how to lint SCSS with stylelint.
-
-Please send us a Pull Request to add your own article to the list.
diff --git a/assets/node_modules/stylelint/docs/user-guide/cli.md b/assets/node_modules/stylelint/docs/user-guide/cli.md
deleted file mode 100644
index 92c3927..0000000
--- a/assets/node_modules/stylelint/docs/user-guide/cli.md
+++ /dev/null
@@ -1,254 +0,0 @@
-# Command Line Interface (CLI)
-
-## Installation
-
-stylelint is an [npm package](https://www.npmjs.com/package/stylelint). Install it using:
-
-```shell
-npm install stylelint --save-dev
-```
-
-## Usage
-
-`stylelint --help` prints the CLI documentation.
-
-The CLI outputs formatted results into `process.stdout`, which you can read with your human eyes or pipe elsewhere (e.g. write the information to a file).
-
-### Examples
-
-When you run commands similar to the examples below, be sure to include the quotation marks around file globs. This ensures that you can use the powers of [globby](https://github.com/sindresorhus/globby) (like the `**` globstar) regardless of your shell.
-
-Looking for `.stylelintrc` and linting all `.css` files in the `foo` directory:
-
-```shell
-stylelint "foo/*.css"
-```
-
-Looking for `.stylelintrc` and linting all `<style>` blocks within the `.html` files in the `bar` directory:
-
-```shell
-stylelint "bar/*.html"
-```
-
-Looking for `.stylelintrc` and linting `stdin`:
-
-```shell
-echo "a { color: pink; }" | stylelint
-```
-
-Using `bar/mySpecialConfig.json` as config to lint all `.css` files in the `foo` directory, then writing the output to `myTestReport.txt`:
-
-```shell
-stylelint "foo/*.css" --config bar/mySpecialConfig.json > myTestReport.txt
-```
-
-Using `bar/mySpecialConfig.json` as config, with quiet mode on, to lint all `.css` files in the `foo` directory and any of its subdirectories and also all `.css` files in the `bar directory`:
-
-```shell
-stylelint "foo/**/*.css" "bar/*.css" -q -f json --config bar/mySpecialConfig.json
-```
-
-Linting all `.css` files except those within `docker` subfolders, using negation in the input glob:
-
-```shell
-stylelint "**/*.css" "!**/docker/**"
-```
-
-Caching processed `.scss` files in order to operate only on changed ones in the `foo` directory, using the `cache` and `cache-location` options:
-
-```shell
-stylelint "foo/**/*.scss" --cache --cache-location "/Users/user/.stylelintcache/"
-```
-
-stylelint will [automatically infer the syntax](css-processors.md#parsing-non-standard-syntax). You can, however, force a specific syntax using the `--syntax` option. For example, linting all the `.css` files in the `foo` directory _as Scss_:
-
-```shell
-stylelint "foo/**/*.css" --syntax scss
-```
-
-stylelint can also accept a custom [PostCSS-compatible syntax](https://github.com/postcss/postcss#syntaxes). To use a custom syntax, supply a syntax module name or path to the syntax file: `--custom-syntax custom-syntax` or `--custom-syntax ./path/to/custom-syntax`.
-
-### Recursively linting a directory
-
-To recursively lint a directory, using the `**` globstar:
-
-```shell
-stylelint "foo/**/*.scss"
-```
-
-The quotation marks around the glob are important because they will allow stylelint to interpret the glob, using globby, instead of your shell, which might not support all the same features.
-
-### Autofixing errors
-
-With `--fix` option stylelint will fix as many errors as possible. The fixes are made to the actual source files. All unfixed errors will be reported.
-
-Linting all `.css` files in the `foo` directory. And fixing source files if violated rules support autofixing:
-
-```shell
-stylelint "foo/*.css" --fix
-```
-
-**Note:** It's an _experimental_ feature. It currently does not respect special comments for disabling stylelint within sources (e. g. `/* stylelint-disable */`). Autofixing will be applied regardless of these comments.
-
-If you're using both these special comments and autofixing, please run stylelint twice as a temporary solution. On the first run, some violations could be missed, or some violations might be reported incorrectly.
-
-For CSS with standard syntax, stylelint will use [postcss-safe-parser](https://github.com/postcss/postcss-safe-parser) to fix syntax errors.
-
-### Write Report to a File
-
-With the `--output-file filename` option, stylelint will output the report to the specified `filename` in addition to the standard output.
-
-Logging the stylelint output to `stylelint.log`:
-
-```shell
-stylelint "foo/*.css" --output-file stylelint.log
-```
-
-### Troubleshooting configurations
-
-With the `--print-config` option, stylelint outputs the configuration to be used for the file passed. When present, no linting is performed and only config-related options are valid.
-
-## Options
-
-### `--config`
-
-Path to a specific configuration file (JSON, YAML, or CommonJS), or the name of a module in `node_modules` that points to one. If no `--config` argument is provided, stylelint will search for configuration files in
-the following places, in this order:
-
-- a stylelint property in `package.json`;
-- a `.stylelintrc` file (with or without filename extension: `.json`, `.yaml`, `.yml`, and `.js` are available);
-- a `stylelint.config.js` file exporting a JS object.
-
-The search will begin in the working directory and move up the directory tree until a configuration file is found.
-
-### `--config-basedir`
-
-An absolute path to the directory that relative paths defining "extends" and "plugins" are _relative to_. Only necessary if these values are relative paths.
-
-### `--print-config`
-
-Print the configuration for the given path.
-
-### `--ignore-path, -i`
-
-Path to a file containing patterns that describe files to ignore. The path can be absolute or relative to `process.cwd()`. By default, stylelint looks for `.stylelintignore` in `process.cwd()`.
-
-### `--ignore-pattern, --ip`
-
-Pattern of files to ignore (in addition to those in `.stylelintignore`).
-
-### `--syntax, -s`
-
-Specify a syntax. Options:
-
-- `css`
-- `css-in-js`
-- `html`
-- `less`
-- `markdown`
-- `sass`
-- `scss`
-- `sugarss`
-
-If you do not specify a syntax, syntaxes will be automatically inferred by the file extensions and file content.
-
-### `--fix`
-
-Automatically fix violations of certain rules.
-
-### `--custom-syntax`
-
-Module name or path to a JS file exporting a PostCSS-compatible syntax.
-
-### `--stdin-filename`
-
-A filename to assign stdin input.
-
-### `--ignore-disables, --id`
-
-Ignore `styleline-disable` comments.
-
-### `--disable-default-ignores, --di`
-
-Allow linting of `node_modules`.
-
-### `--cache`
-
-Store the info about processed files in order to only operate on the changed ones the next time you run stylelint. By default, the cache is stored in `./.stylelintcache`. To adjust this, use `--cache-location`.
-
-Default: `false`.
-
-### `--cache-location`
-
-Path to a file or directory to be used for the cache location.
-
-Default is `"./.stylelintcache"`. If a directory is specified, a cache file will be created inside the specified folder, with a name derived from a hash of the current working directory.
-
-If the directory for the cache does not exist, make sure you add a trailing `/` on *nix systems or `\\` on Windows. Otherwise the path will be assumed to be a file.
-
-### `--formatter, -f`
-
-The output formatter. Options are:
-
-- `compact`
-- `json`
-- `string` (default)
-- `unix`
-- `verbose`
-
-### `--custom-formatter`
-
-Path to a JS file exporting a custom formatting function.
-
-### `--quiet, -q`
-
-Only register violations for rules with an "error"-level severity (ignore "warning"-level).
-
-### `--color, --no-color`
-
-Force enabling/disabling of color.
-
-### `--report-needless-disables, --rd`
-
-Also report errors for stylelint-disable comments that are not blocking a lint warning.
-
-The process will exit with code `2` if needless disables are found.
-
-### `--report-invalid-scope-disables, --risd`
-
-Report stylelint-disable comments that used for rules that don't exist within the configuration object.
-
-The process will exit with code `2` if invalid scope disables are found.
-
-### `--max-warnings, --mw`
-
-Number of warnings above which the process will exit with code `2`.
-
-Useful when setting `defaultSeverity` to `"warning"` and expecting the process to fail on warnings (e.g. CI build).
-
-### `--output-file, -o`
-
-Path of file to write report.
-
-### `--version, -v`
-
-Show the currently installed version of stylelint.
-
-### `--allow-empty-input, --aei`
-
-When glob pattern matches no files, the process will exit without throwing an error.
-
-## Syntax errors
-
-The CLI informs you about syntax errors in your CSS.
-It uses the same format as it uses for linting violations.
-The error name is `CssSyntaxError`.
-
-## Exit codes
-
-The CLI can exit the process with the following exit codes:
-
-- 1: Something unknown went wrong.
-- 2: At least one rule with an "error"-level severity triggered at least one violations.
-- 78: There was some problem with the configuration file.
-- 80: A file glob was passed, but it found no files.
diff --git a/assets/node_modules/stylelint/docs/user-guide/complementary-tools.md b/assets/node_modules/stylelint/docs/user-guide/complementary-tools.md
deleted file mode 100644
index 14093cb..0000000
--- a/assets/node_modules/stylelint/docs/user-guide/complementary-tools.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# Complementary tools
-
-A list of complementary tools built and maintained by the community.
-
-## Analysis platform engines
-
-- [codacy-stylelint](https://github.com/codacy/codacy-stylelint): [Codacy](https://www.codacy.com/) engine for stylelint
-- [codeclimate-stylelint](https://github.com/gilbarbara/codeclimate-stylelint): Code Climate engine for stylelint
-- [reviewdog/action-stylelint](https://github.com/reviewdog/action-stylelint): GitHub Action to run stylelint with [reviewdog](https://github.com/reviewdog/reviewdog)
-
-## Command Line Tools
-
-- [stylelint-find-rules](https://github.com/alexilyaev/stylelint-find-rules): Find Stylelint rules that you don't have in your config.
-
-## Build tool plugins
-
-- [broccoli-stylelint](https://github.com/billybonks/broccoli-stylelint): A Broccoli plugin for stylelint.
-- [ember-cli-stylelint](https://github.com/billybonks/ember-cli-stylelint): An Ember CLI plugin for stylelint.
-- [grunt-stylelint](https://github.com/wikimedia/grunt-stylelint): A Grunt plugin for stylelint.
-- [gulp-stylelint](https://github.com/olegskl/gulp-stylelint): A gulp plugin for stylelint.
-- [jest-runner-stylelint](https://github.com/keplersj/jest-runner-stylelint): A Jest plugin for stylelint.
-- [stylelint-webpack-plugin](https://github.com/webpack-contrib/stylelint-webpack-plugin): A webpack plugin for stylelint.
-
-## Editor plugins
-
-- [Ale](https://github.com/w0rp/ale): A Vim plugin that supports stylelint.
-- [Flycheck](https://github.com/flycheck/flycheck): An Emacs extension that supports stylelint.
-- [linter-stylelint](https://github.com/AtomLinter/linter-stylelint): An Atom plugin for stylelint.
-- [SublimeLinter-stylelint](https://github.com/SublimeLinter/SublimeLinter-stylelint): A Sublime Text plugin for stylelint.
-- [SublimeLinter-contrib-stylelint_d](https://github.com/jo-sm/SublimeLinter-contrib-stylelint_d): A Sublime Text plugin for stylelint that run's on daemon.
-- [vscode-stylelint](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint): A VS Code extension for stylelint.
-
-## Editors
-
-- [WebStorm](https://blog.jetbrains.com/webstorm/2016/09/webstorm-2016-3-eap-163-4830-stylelint-usages-for-default-exports-and-more/): Version 2016.3 onwards has built-in support for stylelint.
-
-## Version Control
-
-- [Pre-commit](https://github.com/awebdeveloper/pre-commit-stylelint) A git pre-commit hook for stylelint
diff --git a/assets/node_modules/stylelint/docs/user-guide/configuration.md b/assets/node_modules/stylelint/docs/user-guide/configuration.md
deleted file mode 100644
index 2a340b4..0000000
--- a/assets/node_modules/stylelint/docs/user-guide/configuration.md
+++ /dev/null
@@ -1,310 +0,0 @@
-# Configuration
-
-The linter *expects a configuration object*. You can either craft your own config or extend an existing one.
-
-## Loading the configuration object
-
-Finding and loading of your configuration object is done with [cosmiconfig](https://github.com/davidtheclark/cosmiconfig). Starting from the current working directory, it will look for the following possible sources, in this order:
-
-- a `stylelint` property in `package.json`
-- a `.stylelintrc` file
-- a `stylelint.config.js` file exporting a JS object
-
-The `.stylelintrc` file (without extension) can be in JSON or YAML format. Alternately, you can add a filename extension to designate JSON, YAML, or JS format: `.stylelintrc.json`, `.stylelintrc.yaml`, `.stylelintrc.yml`, `.stylelintrc.js`. You may want to use an extension so that your text editor can better interpret the file, and help with syntax checking and highlighting.
-
-Once one of these is found and parsed, the search will stop and that object will be used.
-
-The configuration search can be short-circuited by using either the `config` or `configFile` options.
-
-## The configuration object
-
-The configuration object can have the following properties.
-
-### `rules`
-
-Rules determine what the linter looks for and complains about. There are [over 170](rules.md) built into stylelint. *No rules are turned on by default*, so this is where you turn on everything you want to check. All the rules must be explicitly configured as *there are no default values*.
-
-The `rules` property is *an object whose keys are rule names and values are rule configurations*. Each rule configuration fits one of the following formats:
-
-- a single value (the primary option)
-- an array with two values (`[primary option, secondary options]`)
-- `null` (to turn the rule off)
-
-```json
-{
- "rules": {
- "block-no-empty": null,
- "color-no-invalid-hex": true,
- "comment-empty-line-before": [ "always", {
- "ignore": ["stylelint-commands", "after-comment"]
- } ],
- "declaration-colon-space-after": "always",
- "indentation": ["tab", {
- "except": ["value"]
- }],
- "max-empty-lines": 2,
- "rule-empty-line-before": [ "always", {
- "except": ["first-nested"],
- "ignore": ["after-comment"]
- } ],
- "unit-whitelist": ["em", "rem", "%", "s"]
- }
-}
-```
-
-Specifying a primary option will turn a rule on. A complete list of primary rule options can be found in the [example configuration](example-config.md).
-
-Many rules have secondary options which provide further customization. To set secondary options, a two-member array is used:
-
-```js
-"selector-pseudo-class-no-unknown": [true, {
- "ignorePseudoClasses": ["global"]
-}]
-```
-
-#### Turning rules off
-
-To turn a rule off (when extending a configuration) you can set the value of the rule to `null`:
-
-```json
-{
- "extends": "stylelint-config-standard",
- "rules": {
- "at-rule-empty-line-before": null
- }
-}
-```
-
-##### Turning rules off from within your CSS
-
-Rules can be temporarily turned off by using special comments in your CSS. For example, you can either turn all the rules off:
-
-```css
-/* stylelint-disable */
-a {}
-/* stylelint-enable */
-```
-
-Or you can turn off individual rules:
-
-```css
-/* stylelint-disable selector-no-id, declaration-no-important */
-#id {
- color: pink !important;
-}
-/* stylelint-enable */
-```
-
-You can turn off rules for individual lines only with a `/* stylelint-disable-line */` comment, after which you do not need to explicitly re-enable them:
-
-```css
-#id { /* stylelint-disable-line */
- color: pink !important; /* stylelint-disable-line declaration-no-important */
-}
-```
-
-You can also turn off rules for *the next line only* with a `/* stylelint-disable-next-line */` comment, after which you do not need to explicitly re-enable them:
-
-```css
-#id {
- /* stylelint-disable-next-line declaration-no-important */
- color: pink !important;
-}
-```
-
-Complex, overlapping disabling & enabling patterns are supported:
-
-```css
-/* stylelint-disable */
-/* stylelint-enable foo */
-/* stylelint-disable foo */
-/* stylelint-enable */
-/* stylelint-disable foo, bar */
-/* stylelint-disable baz */
-/* stylelint-enable baz, bar */
-/* stylelint-enable foo */
-```
-
-**Caveat:** Comments within *selector and value lists* are currently ignored.
-
-#### Severities: error & warning
-
-By default, all rules have an `"error"`-level severity. You can change this default by adding a `defaultSeverity` property to your configuration (see below).
-
-To adjust any specific rule's severity, use the secondary option `severity`. The available values for `severity` are:
-
-- `"warning"`
-- `"error"`
-
-```js
-// error-level severity examples
-{ "indentation": 2 }
-{ "indentation": [2] }
-
-// warning-level severity examples
-{ "indentation": [2, { "severity": "warning" } ] }
-{ "indentation": [2, {
- "except": ["value"],
- "severity": "warning"
- }]
-}
-```
-
-Different reporters may use these severity levels in different way, e.g. display them differently, or exit the process differently.
-
-#### Custom Messages
-
-If you want to deliver a custom message when a rule is violated, you can do so in two ways: provide a `message` option for the rule, or write a custom formatter.
-
-All rules accept a `message` secondary option that, if provided, will be substituted for whatever standard message would be provided. For example, the following rule configuration would substitute in a couple of custom message:
-
-```json
-{
- "color-hex-case": [ "lower", {
- "message": "Lowercase letters are easier to distinguish from numbers"
- } ],
- "indentation": [ 2, {
- "except": ["block"],
- "message": "Please use 2 spaces for indentation. Tabs make The Architect grumpy.",
- "severity": "warning"
- } ]
-}
-```
-
-Writing a [custom formatter](../developer-guide/formatters.md) gives you maximum control if you need serious customization.
-
-### `extends`
-
-Your configuration can *extend* an existing configuration (whether your own or a third-party config). When one configuration extends another, it starts with the other's properties then adds to and overrides what's there.
-
-You can extend an array of existing configurations, with each item in the array taking precedence over the previous item (so the second item overrides rules in the first, the third item overrides rules in the first and the second, and so on, the last item overrides everything else).
-
-For example, extending the [`stylelint-config-standard`](https://github.com/stylelint/stylelint-config-standard) and then changing indentation to tabs and turning off the `number-leading-zero` rule:
-
-```json
-{
- "extends": "stylelint-config-standard",
- "rules": {
- "indentation": "tab",
- "number-leading-zero": null
- }
-}
-```
-
-Or starting with `stylelint-config-standard`, then layering `myExtendableConfig` on top of that, and then overriding the indentation rule:
-
-```json
-{
- "extends": [
- "stylelint-config-standard",
- "./myExtendableConfig"
- ],
- "rules": {
- "indentation": "tab"
- }
-}
-```
-
-The value of `"extends"` is a "locater" (or an array of "locaters") that is ultimately `require()`d, so can fit whatever format works with Node's `require.resolve()` algorithm. That means a "locater" can be:
-
-- The name of a module in `node_modules` (e.g. `stylelint-config-standard`; that module's `main` file must be a valid JSON configuration)
-- An absolute path to a file (which makes sense if you're creating a JS object in a Node.js context and passing it in) with a `.js` or `.json` extension.
-- A relative path to a file with a `.js` or `.json` extension, relative to the referencing configuration (e.g. if configA has `extends: "../configB"`, we'll look for `configB` relative to configA).
-
-*Because of `extends`, you can create and use shareable stylelint configurations.* Use the `stylelint-config` keyword within your `package.json` if publishing your config to npm.
-
-### `plugins`
-
-Plugins are rules or sets of rules built by the community that support methodologies, toolsets, *non-standard* CSS features, or very specific use cases.
-
-To use one, add a `"plugins"` array to your config, containing "locaters" identifying the plugins you want to use. As with `extends`, above, a "locater" can be either an npm module name, an absolute path, or a path relative to the invoking configuration file.
-
-Once the plugin is declared, within your `"rules"` object *you'll need to add options* for the plugin's rule(s), just like any standard rule. You will have to look at the plugin's documentation to know what the rule name should be.
-
-```json
-{
- "plugins": [
- "../special-rule.js"
- ],
- "rules": {
- "plugin/special-rule": "everything"
- }
-}
-```
-
-A "plugin" can provide a single rule or a set of rules. If the plugin you use provides a set, invoke the module in your `"plugins"` configuration value, and use the rules it provides in `"rules"`. For example:
-
-```json
-{
- "plugins": [
- "../some-rule-set.js"
- ],
- "rules": {
- "some-rule-set/first-rule": "everything",
- "some-rule-set/second-rule": "nothing",
- "some-rule-set/third-rule": "everything"
- }
-}
-```
-
-### `processors`
-
-Processors are functions that hook into stylelint's pipeline, modifying code on its way into stylelint and modifying results on their way out.
-
-*Processors can only be used with the CLI and the Node.js API, not with the PostCSS plugin.* (The PostCSS plugin will ignore them.)
-
-Processors can enable stylelint to lint, but not autofix, the CSS within non-stylesheet files that aren't supported out-of-the-box by stylelint.
-
-To use one, add a `"processors"` array to your config, containing "locaters" identifying the processors you want to use. As with `extends`, above, a "locater" can be either an npm module name, an absolute path, or a path relative to the invoking configuration file.
-
-```json
-{
- "processors": ["stylelint-my-processor"],
- "rules": {..}
-}
-```
-
-If your processor has options, make that item an array whose first item is the "locator" and second item is the options object.
-
-```json
-{
- "processors": [
- "stylelint-my-processor",
- [ "some-other-processor", { "optionOne": true, "optionTwo": false } ]
- ],
- "rules": {..}
-}
-```
-
-### `ignoreFiles`
-
-Provide a glob or array of globs to ignore specific files.
-
-*Note that this is not an efficient method for ignoring lots of files.* If you want to ignore a lot of files efficiently, use `.stylelintignore` or adjust your files globs.
-
-If the globs are absolute paths, they are used as is. If they are relative, they are analyzed relative to
-
-- `configBasedir`, if it's provided;
-- the config's filepath, if the config is a file that stylelint found a loaded;
-- or `process.cwd()`.
-
-By default, all `node_modules` are ignored. Default values will be overridden if `ignoreFiles` is set.
-
-The `ignoreFiles` property is stripped from extended configs: only the root-level config can ignore files.
-
-### `defaultSeverity`
-
-The default severity level for all rules that do not have a severity specified in their secondary options. The available values for `severity` are:
-
-- `"warning"`
-- `"error"`
-
-## `.stylelintignore`
-
-You can use a `.stylelintignore` file (or point to another ignore patterns file) to ignore specific files.
-
-These files will be excluded from the files glob before the file system is check at all, so it is an efficient method for ignoring lots of files.
-
-The patterns in your `.stylelintignore` file must match [`.gitignore` syntax](https://git-scm.com/docs/gitignore). (Behind the scenes, [`node-ignore`](https://github.com/kaelzhang/node-ignore) parses your patterns.) One implication of this is that *your patterns in `.stylelintignore` are always analyzed relative to `process.cwd()`.*
-
-stylelint will look for a `.stylelintignore` file in `process.cwd()`. You can also specify a path to your ignore patterns file (absolute or relative to `process.cwd()`) using the `--ignore-path` (in the CLI) and `ignorePath` (in JS) options.
diff --git a/assets/node_modules/stylelint/docs/user-guide/css-processors.md b/assets/node_modules/stylelint/docs/user-guide/css-processors.md
deleted file mode 100644
index f0c56d1..0000000
--- a/assets/node_modules/stylelint/docs/user-guide/css-processors.md
+++ /dev/null
@@ -1,44 +0,0 @@
-# CSS processors
-
-The linter supports current and future CSS syntax. This includes all standard CSS but also special features that use standard CSS syntactic structures, e.g. special at-rules, special properties, and special functions. Some CSS-*like* language extensions -- features that use non-standard syntactic structures -- are, as such, supported; however, since there are infinite processing possibilities, the linter cannot support everything.
-
-You can run the linter before or after your CSS processors. Depending on which processors you use, each approach has caveats:
-
-1. *Before*: Some plugins/processors might enable a syntax that isn't compatible with the linter.
-2. *After*: Some plugins/processors might generate CSS that is invalid against your linter config, causing violations that do not correspond to your original stylesheets.
-
-*In both cases you can either turn off the incompatible linter rule, or stop using the incompatible plugin/processor.* You could also approach plugin/processor authors and request alternate formatting options that will make their plugin/processor compatible with stylelint.
-
-## Parsing non-standard syntax
-
-stylelint will automatically infer the syntax from the:
-
-- file extension
-- `type` or `lang` attribute on `<style>` tags in HTML (and HTML-like)
-- [info string](https://github.github.com/gfm/#info-string) on [GFM fenced code blocks](https://help.github.com/articles/creating-and-highlighting-code-blocks/) in Markdown
-
-You can force a specific syntax, though. Both the [CLI](cli.md) and the [Node.js API](node-api.md) expose a `syntax` option.
-
-- If you're using the CLI, use the `syntax` flag like so: `stylelint ... --syntax scss`.
-- If you're using the Node.js API, pass in the `syntax` option like so: `stylelint.lint({ syntax: "sugarss", ... })`.
-
-stylelint can also accept a custom [PostCSS-compatible syntax](https://github.com/postcss/postcss#syntaxes) when using the CLI or Node.js API. For custom syntaxes, use the `custom-syntax` and `customSyntax` options, respectively.
-
-- If you're using the CLI, use the `custom-syntax` flag like so: `stylelint ... --custom-syntax custom-syntax-module` or `stylelint ... --custom-syntax ./path/to/custom-syntax-module`.
-- If you're using the Node.js API, pass in the `customSyntax` option like so: `stylelint.lint({ customSyntax: path.join(process.cwd(), './path/to/custom-syntax-module') , ... })`.
-
-If you're using the linter as a [PostCSS Plugin](postcss-plugin.md), you should use the special `postcss-syntax` directly with PostCSS's `syntax` option like so:
-
-```js
-const postcss = require('postcss');
-const syntax = require('postcss-syntax');
-
-postcss([
- require('stylelint'),
- require('reporter'),
-])
- .process(css, {
- from: 'lib/app.css',
- syntax: syntax,
- });
-```
diff --git a/assets/node_modules/stylelint/docs/user-guide/example-config.md b/assets/node_modules/stylelint/docs/user-guide/example-config.md
deleted file mode 100644
index 2b3c0d0..0000000
--- a/assets/node_modules/stylelint/docs/user-guide/example-config.md
+++ /dev/null
@@ -1,187 +0,0 @@
-# Example config
-
-This example config lists all of the [rules](rules.md) and their primary options. You can remove ([or turn off](configuration.md#rules)) the rules you don't want and edit the primary option of each rule to your liking.
-
-You might want to learn a little about [how rules are named and how they work together](about-rules.md), to get a better idea of what each rule does.
-
-```json
-{
- "rules": {
- "at-rule-blacklist": string|[],
- "at-rule-empty-line-before": "always"|"never",
- "at-rule-name-case": "lower"|"upper",
- "at-rule-name-newline-after": "always"|"always-multi-line",
- "at-rule-name-space-after": "always"|"always-single-line",
- "at-rule-no-unknown": true,
- "at-rule-no-vendor-prefix": true,
- "at-rule-property-requirelist": {},
- "at-rule-semicolon-newline-after": "always",
- "at-rule-semicolon-space-before": "always"|"never",
- "at-rule-whitelist": string|[],
- "block-closing-brace-empty-line-before": "always-multi-line"|"never",
- "block-closing-brace-newline-after": "always"|"always-single-line"|"never-single-line"|"always-multi-line"|"never-multi-line",
- "block-closing-brace-newline-before": "always"|"always-multi-line"|"never-multi-line",
- "block-closing-brace-space-after": "always"|"always-single-line"|"never-single-line"|"always-multi-line"|"never-multi-line",
- "block-closing-brace-space-before": "always"|"never"|"always-single-line"|"never-single-line"|"always-multi-line"|"never-multi-line",
- "block-no-empty": true,
- "block-opening-brace-newline-after": "always"|"always-multi-line"|"never-multi-line",
- "block-opening-brace-newline-before": "always"|"always-single-line"|"never-single-line"|"always-multi-line"|"never-multi-line",
- "block-opening-brace-space-after": "always"|"always-single-line"|"never-single-line"|"always-multi-line"|"never-multi-line",
- "block-opening-brace-space-before": "always"|"always-single-line"|"never-single-line"|"always-multi-line"|"never-multi-line",
- "color-hex-case": "lower"|"upper",
- "color-hex-length": "short"|"long",
- "color-named": "always-where-possible"|"never",
- "color-no-hex": true,
- "color-no-invalid-hex": true,
- "comment-empty-line-before": "always"|"never",
- "comment-no-empty": true,
- "comment-whitespace-inside": "always"|"never",
- "comment-word-blacklist": string|[],
- "custom-media-pattern": string,
- "custom-property-empty-line-before": "always"|"never",
- "custom-property-pattern": string,
- "declaration-bang-space-after": "always"|"never",
- "declaration-bang-space-before": "always"|"never",
- "declaration-block-no-duplicate-properties": true,
- "declaration-block-no-redundant-longhand-properties": true,
- "declaration-block-no-shorthand-property-overrides": true,
- "declaration-block-semicolon-newline-after": "always"|"always-multi-line"|"never-multi-line",
- "declaration-block-semicolon-newline-before": "always"|"always-multi-line"|"never-multi-line",
- "declaration-block-semicolon-space-after": "always"|"never"|"always-single-line"|"never-single-line",
- "declaration-block-semicolon-space-before": "always"|"never"|"always-single-line"|"never-single-line",
- "declaration-block-single-line-max-declarations": int,
- "declaration-block-trailing-semicolon": "always"|"never",
- "declaration-colon-newline-after": "always"|"always-multi-line",
- "declaration-colon-space-after": "always"|"never"|"always-single-line",
- "declaration-colon-space-before": "always"|"never",
- "declaration-empty-line-before": "always"|"never",
- "declaration-no-important": true,
- "declaration-property-unit-blacklist": {},
- "declaration-property-unit-whitelist": {},
- "declaration-property-value-blacklist": {},
- "declaration-property-value-whitelist": {},
- "font-family-name-quotes": "always-where-required"|"always-where-recommended"|"always-unless-keyword",
- "font-family-no-duplicate-names": true,
- "font-family-no-missing-generic-family-keyword": true,
- "font-weight-notation": "numeric"|"named",
- "function-blacklist": string|[],
- "function-calc-no-invalid": true,
- "function-calc-no-unspaced-operator": true,
- "function-comma-newline-after": "always"|"always-multi-line"|"never-multi-line",
- "function-comma-newline-before": "always"|"always-multi-line"|"never-multi-line",
- "function-comma-space-after": "always"|"never"|"always-single-line"|"never-single-line",
- "function-comma-space-before": "always"|"never"|"always-single-line"|"never-single-line",
- "function-linear-gradient-no-nonstandard-direction": true,
- "function-max-empty-lines": int,
- "function-name-case": "lower"|"upper",
- "function-parentheses-newline-inside": "always"|"always-multi-line"|"never-multi-line",
- "function-parentheses-space-inside": "always"|"never"|"always-single-line"|"never-single-line",
- "function-url-no-scheme-relative": true,
- "function-url-quotes": "always"|"never",
- "function-url-scheme-blacklist": string|[],
- "function-url-scheme-whitelist": string|[],
- "function-whitelist": string|[],
- "function-whitespace-after": "always"|"never",
- "indentation": int|"tab",
- "keyframe-declaration-no-important": true,
- "keyframes-name-pattern": string,
- "length-zero-no-unit": true,
- "linebreaks": "unix"|"windows",
- "max-empty-lines": int,
- "max-line-length": int,
- "max-nesting-depth": int,
- "media-feature-colon-space-after": "always"|"never",
- "media-feature-colon-space-before": "always"|"never",
- "media-feature-name-blacklist": string|[],
- "media-feature-name-case": "lower"|"upper",
- "media-feature-name-no-unknown": true,
- "media-feature-name-no-vendor-prefix": true,
- "media-feature-name-value-whitelist": {},
- "media-feature-name-whitelist": string|[],
- "media-feature-parentheses-space-inside": "always"|"never",
- "media-feature-range-operator-space-after": "always"|"never",
- "media-feature-range-operator-space-before": "always"|"never",
- "media-query-list-comma-newline-after": "always"|"always-multi-line"|"never-multi-line",
- "media-query-list-comma-newline-before": "always"|"always-multi-line"|"never-multi-line",
- "media-query-list-comma-space-after": "always"|"never"|"always-single-line"|"never-single-line",
- "media-query-list-comma-space-before": "always"|"never"|"always-single-line"|"never-single-line",
- "no-descending-specificity": true,
- "no-duplicate-at-import-rules": true,
- "no-duplicate-selectors": true,
- "no-empty-source": true,
- "no-empty-first-line": true,
- "no-eol-whitespace": true,
- "no-extra-semicolons": true,
- "no-invalid-double-slash-comments": true,
- "no-missing-end-of-source-newline": true,
- "no-unknown-animations": true,
- "number-leading-zero": "always"|"never",
- "number-max-precision": int,
- "number-no-trailing-zeros": true,
- "property-blacklist": string|[],
- "property-case": "lower"|"upper",
- "property-no-unknown": true,
- "property-no-vendor-prefix": true,
- "property-whitelist": string|[],
- "rule-empty-line-before": "always"|"never"|"always-multi-line"|"never-multi-line",
- "selector-attribute-brackets-space-inside": "always"|"never",
- "selector-attribute-operator-blacklist": string|[],
- "selector-attribute-operator-space-after": "always"|"never",
- "selector-attribute-operator-space-before": "always"|"never",
- "selector-attribute-operator-whitelist": string|[],
- "selector-attribute-quotes": "always"|"never",
- "selector-class-pattern": string,
- "selector-combinator-blacklist": string|[],
- "selector-combinator-space-after": "always"|"never",
- "selector-combinator-space-before": "always"|"never",
- "selector-combinator-whitelist": string|[],
- "selector-descendant-combinator-no-non-space": true,
- "selector-id-pattern": string,
- "selector-list-comma-newline-after": "always"|"always-multi-line"|"never-multi-line",
- "selector-list-comma-newline-before": "always"|"always-multi-line"|"never-multi-line",
- "selector-list-comma-space-after": "always"|"never"|"always-single-line"|"never-single-line",
- "selector-list-comma-space-before": "always"|"never"|"always-single-line"|"never-single-line",
- "selector-max-attribute": int,
- "selector-max-class": int,
- "selector-max-combinators": int,
- "selector-max-compound-selectors": int,
- "selector-max-empty-lines": int,
- "selector-max-id": int,
- "selector-max-pseudo-class": int,
- "selector-max-specificity": string,
- "selector-max-type": int,
- "selector-max-universal": int,
- "selector-nested-pattern": string,
- "selector-no-qualifying-type": true,
- "selector-no-vendor-prefix": true,
- "selector-pseudo-class-blacklist": string|[],
- "selector-pseudo-class-case": "lower"|"upper",
- "selector-pseudo-class-no-unknown": true,
- "selector-pseudo-class-parentheses-space-inside": "always"|"never",
- "selector-pseudo-class-whitelist": string|[],
- "selector-pseudo-element-blacklist": string|[],
- "selector-pseudo-element-case": "lower"|"upper",
- "selector-pseudo-element-colon-notation": "single"|"double",
- "selector-pseudo-element-no-unknown": true,
- "selector-pseudo-element-whitelist": string|[],
- "selector-type-case": "lower"|"upper",
- "selector-type-no-unknown": true,
- "shorthand-property-no-redundant-values": true,
- "string-no-newline": true,
- "string-quotes": "single"|"double",
- "time-min-milliseconds": int,
- "unicode-bom": "always"|"never",
- "unit-blacklist": string|[],
- "unit-case": "lower"|"upper",
- "unit-no-unknown": true,
- "unit-whitelist": string|[],
- "value-keyword-case": "lower"|"upper",
- "value-list-comma-newline-after": "always"|"always-multi-line"|"never-multi-line",
- "value-list-comma-newline-before": "always"|"always-multi-line"|"never-multi-line",
- "value-list-comma-space-after": "always"|"never"|"always-single-line"|"never-single-line",
- "value-list-comma-space-before": "always"|"never"|"always-single-line"|"never-single-line",
- "value-list-max-empty-lines": int,
- "value-no-vendor-prefix": true
- }
-}
-```
diff --git a/assets/node_modules/stylelint/docs/user-guide/faq.md b/assets/node_modules/stylelint/docs/user-guide/faq.md
deleted file mode 100644
index 114dc0a..0000000
--- a/assets/node_modules/stylelint/docs/user-guide/faq.md
+++ /dev/null
@@ -1,176 +0,0 @@
-# FAQ
-
-## How do I turn off, disable or ignore a rule?
-
-You can turn off a rule by setting its config value to `null`.
-
-For example, to use `stylelint-config-standard` without the `at-rule-empty-line-before` rule:
-
-```json
-{
- "extends": "stylelint-config-standard",
- "rules": {
- "at-rule-empty-line-before": null
- }
-}
-```
-
-You can also turn off a rule for specific sections of your CSS. Refer to the rules section of the [configuration guide](configuration.md#rules) for more information.
-
-## How do I lint from the command line?
-
-Refer to the [CLI section](cli.md) of the docs.
-
-The CLI can also be used from within [npm run scripts](https://michael-kuehnel.de/tooling/2018/03/22/helpers-and-tips-for-npm-run-scripts.html) to use a non-global installation of stylelint.
-
-## How do I lint using Git pre-commit hooks?
-
-[lint-staged](https://github.com/okonet/lint-staged) is a Node.js script that supports running stylelint against Git staged files.
-
-## How do I lint using my task runner of choice?
-
-The stylelint community maintains a [handful of plugins](complementary-tools.md#build-tool-plugins) for popular task runners, including ones for gulp, webpack, Broccoli and Grunt. Refer to their individual READMEs to get started.
-
-If there isn't a dedicated stylelint plugin for your task runner of choice, you can use stylelint as a PostCSS plugin and make use of PostCSS's [numerous](https://github.com/postcss/postcss#runners) task runner plugins.
-
-There are also examples of using the PostCSS plugin via the PostCSS JS API within the [docs](postcss-plugin.md).
-
-However, using stylelint as a PostCSS plugin limits your reporting options to [postcss-reporter](https://github.com/postcss/postcss-reporter/). We recommend using the stylelint CLI or Node.js API, instead, for better reporting.
-
-## How do I lint within my text editor?
-
-The stylelint community also maintains a [handful of plugins](complementary-tools.md#editor-plugins) for popular editors. Refer to their individual READMEs to get started.
-
-## How do I lint SCSS, Less, or other non-standard syntax?
-
-stylelint can *parse* any the following non-standard syntaxes by default: Sass, Less and SugarSS. Non-standard syntaxes can automatically be inferred from the following file extensions `.sass`, `.scss`, `.less`, and `.sss`; or else you can specify the syntax yourself.
-
-Additionally, stylelint can accept any [PostCSS-compatible syntax](https://github.com/postcss/postcss#syntaxes) when using the CLI or Node.js API. Note, however, that stylelint can provide no guarantee that core rules will work with syntaxes other than the defaults listed above.
-
-Refer to the [docs](css-processors.md#parsing-non-standard-syntax) on how to configure stylelint to parse non-standard syntaxes.
-
-## Should I lint before or after processing my stylesheets through PostCSS plugins or other processors?
-
-We [recommend](css-processors.md) linting your source files before any transformations.
-
-## How do I automatically fix stylistic violations?
-
-Use the `--fix` CLI flag or the `fix` Node.js API option to fix a number of stylistic violations with this *experimental* feature.
-
-## How do I manage conflicts between rules?
-
-Each rule stands alone, so sometimes it's possible to configure rules such that they conflict with one another. For example, you could turn on two conflicting blacklist and whitelist rules, e.g. `unit-blacklist` and `unit-whitelist`.
-
-It's your responsibility as the configuration author to resolve these conflicts.
-
-## What is the difference between a plugin and a rule?
-
-A rule must meet the [criteria](../developer-guide/rules.md) set out in the developer guide, including being applicable to only standard CSS syntax, and having a clear and unambiguous finished state. Whereas a plugin is a rule or sets of rules built by the community that don't adhere to the criteria. It might support a particular methodology or toolset, or apply to *non-standard* constructs and features, or be for specific use cases.
-
-For example, we've found that rules to enforce property order, property groupings, etc., work better as plugins, because there are so many different opinions about what to enforce, and how. When you write or use a plugin, you can make sure to enforce your own particular preferences, exactly; but a rule that tries to address too many divergent use-cases becomes a mess.
-
-## Can I customise stylelint's messages?
-
-Yes, you can either use the [`message` secondary option](configuration.md#custom-messages) or [write your own formatter](../developer-guide/formatters.md).
-
-## How should I lint my CSS that follows a BEM-like methodology?
-
-Use the [stylelint-selector-bem-pattern](https://github.com/davidtheclark/stylelint-selector-bem-pattern) plugin to ensure your selectors conform to a chosen BEM-flavor pattern.
-
-You can also take advantage of the `selector-*` rules to ban certain types of selectors (e.g. ID selectors) and control specificity.
-
-If you're using SUITCSS, you might want to use [their shareable config](https://github.com/suitcss/stylelint-config-suitcss).
-
-## How do I disallow single-line blocks?
-
-```css
- a { color: red; }
-/** ↑
- * Declaration blocks like this */
-```
-
-Use the `block-opening-brace-newline-after` and `block-opening-brace-newline-before` rules together. For example, this config:
-
-```json
-{
- "block-opening-brace-newline-after": ["always"],
- "block-closing-brace-newline-before": ["always"]
-}
-```
-
-Would allow:
-
-```css
-a {
- color: red;
-}
-```
-
-But not these patterns:
-
-```css
-a { color: red;
-}
-
-a {
-color: red; }
-
-a { color: red; }
-```
-
-To allow single-line blocks but enforce newlines with multi-line blocks, use the `"always-multi-line"` option for both rules.
-
-## How do I whitelist only performant `transition` values?
-
-Use the `declaration-property-value-whitelist` rule to enforce this best practise at the configuration level:
-
-```json
-{
- "rules": {
- "declaration-property-value-whitelist": {
- "/^transition/": ["/^opacity/", "/^transform/"]
- }
- }
-}
-```
-
-Or use the [`stylelint-high-performance-animation` plugin](https://github.com/kristerkari/stylelint-high-performance-animation).
-
-## How do I configure the `*-pattern` rules for common CSS naming conventions like kebab-case?
-
-Use the regex that corresponds to your chosen convention:
-
-- kebab-case: `^([a-z][a-z0-9]*)(-[a-z0-9]+)*$`
-- lowerCamelCase: `^[a-z][a-zA-Z0-9]+$`
-- snake\_case: `^([a-z][a-z0-9]*)(_[a-z0-9]+)*$`
-- UpperCamelCase: `^[A-Z][a-zA-Z0-9]+$`
-
-e.g. for lowerCamelCase class selectors, use `"selector-class-pattern": "^[a-z][a-zA-Z0-9]+$"`.
-
-All these patterns disallow CSS identifiers that start with a digit, two hyphens, or a hyphen followed by a digit.
-
-## How do I change the default severity to "warning" so stylelint doesn't break my build?
-
-Use the [`defaultSeverity`](configuration.md#defaultseverity) configuration option.
-
-## Can I bundle more than one sharable config within an npm package?
-
-A user can `require()` any file in your npm package, so all you need to do is document which paths point to configs (e.g. `require('my-package/config-2')`).
-
-## How can I control the whitespace after the open brace of the block?
-
-Refer to [this](about-rules.md#-empty-line-before-and--max-empty-lines-rules) section of the docs that explains how the `*-empty-line-before` rules work.
-
-## If I use `extends` within my configuration object, will the options for each rule be merged or overridden?
-
-They will be overridden.
-
-The `extends` mechanism is [detailed within the configuration docs](configuration.md#extends):
-
-> When one configuration extends another, it starts with the other's properties then adds to and overrides what's there.
-
-The reason for this design is documented in [#1646](https://github.com/stylelint/stylelint/issues/1646#issuecomment-232779957).
-
-## Why doesn't stylelint report any warnings about invalid syntax in my CSS/Sass/Less/etc. files?
-
-The main aim of stylelint is to help you avoid frequently repeated errors and enforce conventions in your styles. But it's out of stylelint scope to check CSS/Sass/Less/etc. syntax validity. For such purposes please use validator instead.
diff --git a/assets/node_modules/stylelint/docs/user-guide/node-api.md b/assets/node_modules/stylelint/docs/user-guide/node-api.md
deleted file mode 100644
index ac8f02c..0000000
--- a/assets/node_modules/stylelint/docs/user-guide/node-api.md
+++ /dev/null
@@ -1,240 +0,0 @@
-# Node.js API
-
-The stylelint module includes a `lint()` function that provides the Node.js API.
-
-```js
-stylelint.lint(options)
- .then(function(resultObject) { /* .. */ });
-```
-
-## Installation
-
-stylelint is an [npm package](https://www.npmjs.com/package/stylelint). Install it using:
-
-```console
-npm install stylelint
-```
-
-## Options
-
-Options is an object with the following properties.
-
-Though both `files` and `code` are "optional", you *must* have one and *cannot* have both. All other options are optional.
-
-### `code`
-
-A CSS string to be linted.
-
-### `codeFilename`
-
-If using `code` to pass a source string directly, you can use `codeFilename` to associate that code with a particular filename.
-
-This can be useful, for example, when making a text editor plugin that passes in code directly but needs to still use the configuration's `ignoreFiles` functionality to possibly ignore that code.
-
-### `config`
-
-A [stylelint configuration object](configuration.md).
-
-If no `config` or `configFile` is passed, stylelint will use a [config lookup algorithm](./configuration.md#loading-the-configuration-object) to find the correct config.
-
-### `configFile`
-
-The path to a JSON, YAML, or JS file that contains your [stylelint configuration object](configuration.md).
-
-It should be either absolute or relative to the directory that your process is running from (`process.cwd()`). We'd recommend absolute.
-
-### `configBasedir`
-
-An absolute path to the directory that relative paths defining `extends` and `plugins` are *relative to*.
-
-This is only necessary if you passed an object directly through the `config` property. If you used
-`configFile`, this option is not necessary.
-
-If the `config` object passed uses relative paths, e.g. for `extends` or `plugins`, you are going to have to pass a `configBasedir`. If not, you do not need this.
-
-### `configOverrides`
-
-A partial stylelint configuration object whose properties will override the existing config object, whether that config was loaded via the `config` option or a `.stylelintrc` file.
-
-The difference between the `configOverrides` and `config` options is this: If any `config` object is passed, stylelint does not bother looking for a `.stylelintrc` file and instead just uses whatever `config` object you've passed; but if you want to *both* load a `.stylelintrc` file *and* override specific parts of it, `configOverrides` does just that.
-
-### `files`
-
-A file glob, or array of file globs. Ultimately passed to [globby](https://github.com/sindresorhus/globby) to figure out what files you want to lint.
-
-Relative globs are considered relative to `globbyOptions.cwd`.
-
-By default, all `node_modules` are ignored.
-
-### `globbyOptions`
-
-The options that will be passed with `files` when use globby.
-
-For example, you can set a specific `cwd` manually, which is a folder path of current working directory for `files` glob. Relative globs in `files` are considered relative to this path. And by default, `cwd` will be set by `process.cwd()`.
-
-For more detail usage, see [Globby Guide](https://github.com/sindresorhus/globby#options).
-
-### `formatter`
-
-Options: `"compact"|"json"|"string"|"unix"|"verbose"`, or a function. Default is `"json"`.
-
-Specify the formatter that you would like to use to format your results.
-
-If you pass a function, it must fit the signature described in the [Developer Guide](../developer-guide/formatters.md).
-
-### `ignoreDisables`
-
-If `true`, all disable comments (e.g. `/* stylelint-disable block-no-empty */`) will be ignored.
-
-You can use this option to see what your linting results would be like without those exceptions.
-
-### `disableDefaultIgnores`
-
-If `true`, stylelint will not automatically ignore the contents of `node_modules`. (By default, this directory are automatically ignored.)
-
-### `cache`
-
-Store the info about processed files in order to only operate on the changed ones the next time you run stylelint. Enabling this option can dramatically improve stylelint's speed, because only changed files will be linted.
-
-By default, the cache is stored in `.stylelintcache` in `process.cwd()`. To change this, use the `cacheLocation` option.
-
-**Note:** If you run stylelint with `cache` and then run stylelint without `cache`, the `.stylelintcache` file will be deleted. This is necessary because we have to assume that `.stylelintcache` was invalidated by that second command.
-
-### `cacheLocation`
-
-A path to a file or directory to be used for `cache`. Only meaningful alongside `cache`. If no location is specified, `.stylelintcache` will be created in `process.cwd()`.
-
-If a directory is specified, a cache file will be created inside the specified folder. The name of the file will be based on the hash of `process.cwd()` (e.g. `.cache_hashOfCWD`). This allows stylelint to reuse a single location for a variety of caches from different projects.
-
-**Note:** If the directory of `cacheLocation` does not exist, make sure you add a trailing `/` on \*nix systems or `\` on Windows. Otherwise, the path will be assumed to be a file.
-
-### `reportNeedlessDisables`
-
-If `true`, `ignoreDisables` will also be set to `true` and the returned data will contain a `needlessDisables` property, whose value is an array of objects, one for each source, with tells you which stylelint-disable comments are not blocking a lint violation.
-
-Use this report to clean up your codebase, keeping only the stylelint-disable comments that serve a purpose.
-
-*The recommended way to use this option is through the CLI.* It will output a clean report to the console.
-
-### `reportInvalidScopeDisables`
-
-If `true`, the returned data will contain a `invalidScopeDisables` property, whose value is an array of objects, one for each source, with tells you which rule in `stylelint-disable <rule>` comment don't exist within the configuration object.
-
-Use this report to clean up your codebase, keeping only the stylelint-disable comments that serve a purpose.
-
-*The recommended way to use this option is through the CLI.* It will output a clean report to the console.
-
-### `maxWarnings`
-
-Sets a limit to the number of warnings accepted. Will add a `maxWarningsExceeded` property to the returned data if the number of found warnings exceeds the given limit.
-The value is an Object (e.g. `{ maxWarnings: 0, foundWarnings: 12 }`).
-
-*The recommended way to use this option is through the CLI.* It will exit with code 2 when `maxWarnings` is exceeded.
-
-### `ignorePath`
-
-A path to a file containing patterns describing files to ignore. The path can be absolute or relative to `process.cwd()`. By default, stylelint looks for `.stylelintignore` in `process.cwd()`. See [Configuration](configuration.md#stylelintignore).
-
-### `syntax`
-
-Options: `"css"|"css-in-js"|"html"|"less"|"markdown"|"sass"|"scss"|"sugarss"`
-
-Force a specific non-standard syntax that should be used to parse source stylesheets.
-
-If you do not specify a syntax, non-standard syntaxes will be automatically inferred.
-
-See the [`customSyntax`](#customsyntax) option below if you would like to use stylelint with a custom syntax.
-
-### `customSyntax`
-
-An absolute path to a custom [PostCSS-compatible syntax](https://github.com/postcss/postcss#syntaxes) module.
-
-Note, however, that stylelint can provide no guarantee that core rules will work with syntaxes other than the defaults listed for the `syntax` option above.
-
-### `fix`
-
-If `true`, stylelint will fix as many errors as possible. The fixes are made to the actual source files. All unfixed errors will be reported. See [Autofixing errors](cli.md#autofixing-errors) docs.
-
-## The returned promise
-
-`stylelint.lint()` returns a Promise that resolves with an object containing the following properties:
-
-### `errored`
-
-Boolean. If `true`, at least one rule with an "error"-level severity registered a violation.
-
-### `output`
-
-A string displaying the formatted violations (using the default formatter or whichever you passed).
-
-### `postcssResults`
-
-An array containing all the [PostCSS LazyResults](https://api.postcss.org/LazyResult.html) that were accumulated during processing.
-
-### `results`
-
-An array containing all the stylelint result objects (the objects that formatters consume).
-
-## Syntax errors
-
-`stylelint.lint()` does not reject the Promise when your CSS contains syntax errors.
-It resolves with an object (see [The returned promise](#the-returned-promise)) that contains information about the syntax error.
-
-## Usage examples
-
-If `myConfig` contains no relative paths for `extends` or `plugins`, you do not have to use `configBasedir`:
-
-```js
-stylelint
- .lint({
- config: myConfig,
- files: 'all/my/stylesheets/*.css',
- })
- .then(function(data) {
- // do things with data.output, data.errored,
- // and data.results
- })
- .catch(function(err) {
- // do things with err e.g.
- console.error(err.stack);
- });
-```
-
-If `myConfig` *does* contain relative paths for `extends` or `plugins`, you *do* have to use `configBasedir`:
-
-```js
-stylelint
- .lint({
- config: myConfig,
- configBasedir: path.join(__dirname, 'configs'),
- files: 'all/my/stylesheets/*.css',
- })
- .then(function() { /* .. */ });
-```
-
-Maybe you want to use a CSS string instead of a file glob, and you want to use the string formatter instead of the default JSON:
-
-```js
-stylelint
- .lint({
- code: 'a { color: pink; }',
- config: myConfig,
- formatter: 'string',
- })
- .then(function() { /* .. */ });
-```
-
-Maybe you want to use my own custom formatter function and parse `.scss` source files:
-
-```js
-stylelint
- .lint({
- config: myConfig,
- files: 'all/my/stylesheets/*.scss',
- formatter: function(stylelintResults) { /* .. */ },
- syntax: 'scss',
- })
- .then(function() { /* .. */ });
-```
-
-The same pattern can be used to lint Less, SCSS or [SugarSS](https://github.com/postcss/sugarss) syntax.
diff --git a/assets/node_modules/stylelint/docs/user-guide/plugins.md b/assets/node_modules/stylelint/docs/user-guide/plugins.md
deleted file mode 100644
index a4bd666..0000000
--- a/assets/node_modules/stylelint/docs/user-guide/plugins.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Plugins
-
-Plugins are rules and sets of rules built by the community that support methodologies, toolsets, *non-standard* CSS features, or very specific use cases. Their *package* names are prefixed with "stylelint". Their *rule* names are namespaced so that they do not clash with stylelint's core rules.
-
-- [`@signal-noise/stylelint-scales`](https://github.com/signal-noise/stylelint-scales): Enforce a variety of scale related linting rules (plugin pack).
-- [`stylelint-8-point-grid`](https://github.com/dcrtantuco/stylelint-8-point-grid): Validate CSS with 8-point grid guideline
-- [`stylelint-a11y`](https://github.com/YozhikM/stylelint-a11y): Accessibility rules (plugin pack).
-- [`stylelint-at-rule-no-children`](https://github.com/adityavm/stylelint-at-rule-no-children): Disallow block rule declarations inside at-rules (with a few exceptions).
-- [`stylelint-color-control`](https://github.com/csstools/stylelint-color-control): Control color usage in CSS.
-- [`stylelint-color-format`](https://github.com/filipekiss/stylelint-color-format): Convert HEX colors to either RGB or HSL.
-- [`stylelint-csstree-validator`](https://github.com/csstree/stylelint-validator): Validate CSS values to match W3C specs and browsers extensions.
-- [`stylelint-declaration-block-no-ignored-properties`](https://github.com/kristerkari/stylelint-declaration-block-no-ignored-properties): Disallow property values that are ignored due to another property value in the same rule.
-- [`stylelint-declaration-strict-value`](https://github.com/AndyOGo/stylelint-declaration-strict-value): Specify properties for which either a variable (`$sass`, `@less`, `var(--cssnext)`), function or custom CSS keyword (`inherit`, `none`, etc.) must be used for its value.
-- [`stylelint-declaration-use-variable`](https://github.com/sh-waqar/stylelint-declaration-use-variable): Specify properties for which a variable must be used for its value.
-- [`stylelint-force-app-name-prefix`](https://github.com/SunHuawei/stylelint-force-app-name-prefix/): Force rules to have app name as prefix.
-- [`stylelint-group-selectors`](https://github.com/ssivanatarajan/stylelint-group-selectors): Identify the selectors, which can be grouped, as they have same set of properties and values.
-- [`stylelint-high-performance-animation`](https://github.com/kristerkari/stylelint-high-performance-animation): Stylelint rule for preventing the use of low performance animation and transition properties.
-- [`stylelint-images`](https://github.com/ramasilveyra/stylelint-images): Check your CSS images to improve the performance and avoid common mistakes (plugin pack).
-- [`stylelint-itcss`](https://github.com/KamiKillertO/stylelint-itcss): A set of rules to enforce ITCSS architecture.
-- [`stylelint-media-use-custom-media`](https://github.com/csstools/stylelint-media-use-custom-media): Enforce usage of custom media queries in CSS
-- [`stylelint-no-browser-hacks`](https://github.com/Slamdunk/stylelint-no-browser-hacks): Disallow browser hacks that are irrelevant to the browsers you are targeting; uses [stylehacks](https://github.com/ben-eb/stylehacks).
-- [`stylelint-no-indistinguishable-colors`](https://github.com/ierhyna/stylelint-no-indistinguishable-colors): Disallow colors that are suspiciously close to being identical.
-- [`stylelint-no-unsupported-browser-features`](https://github.com/ismay/stylelint-no-unsupported-browser-features): Disallow features that are unsupported by the browsers that you are targeting.
-- [`stylelint-no-unused-selectors`](https://github.com/nodaguti/stylelint-no-unused-selectors): Disallow unused selectors, i.e., selectors that are not referenced from documents.
-- [`stylelint-order`](https://github.com/hudochenkov/stylelint-order): Specify the ordering of things e.g. properties within declaration blocks (plugin pack).
-- [`stylelint-plugin-ecss`](https://github.com/tyankatsu0105/stylelint-plugin-ecss): A set of rules to enforce [`Enduring CSS`](http://ecss.io/) architecture.
-- [`stylelint-prettier`](https://github.com/prettier/stylelint-prettier): Runs [Prettier](https://prettier.io/) as a stylelint rule.
-- [`stylelint-react-native`](https://github.com/kristerkari/stylelint-react-native): Enforce React Native specific linting rules (plugin pack).
-- [`stylelint-rscss`](https://github.com/rstacruz/stylelint-rscss): Validate [RSCSS](http://rscss.io) conventions.
-- [`stylelint-scss`](https://github.com/kristerkari/stylelint-scss): Enforce a wide variety of SCSS-syntax specific linting rules (plugin pack).
-- [`stylelint-selector-bem-pattern`](https://github.com/davidtheclark/stylelint-selector-bem-pattern): Specify a BEM pattern for selectors (incorporates [postcss-bem-linter](https://github.com/postcss/postcss-bem-linter)).
-- [`stylelint-selector-no-empty`](https://github.com/ssivanatarajan/stylelint-selector-no-empty): Disallow empty Selectors.
-- [`stylelint-selector-tag-no-without-class`](https://github.com/Moxio/stylelint-selector-tag-no-without-class): Disallow certain tags without a class qualifier in selectors.
-- [`stylelint-suitcss`](https://github.com/suitcss/stylelint-suitcss): A collection of stylelint plugins for SUIT CSS, including deprecated `:root` rules (plugin pack).
-- [`stylelint-use-logical`](https://github.com/csstools/stylelint-use-logical): Enforce usage of logical properties and values in CSS.
-- [`stylelint-use-nesting`](https://github.com/csstools/stylelint-use-nesting): Enforce nesting when it is possible in CSS.
-- [`stylelint-value-no-unknown-custom-properties`](https://github.com/csstools/stylelint-value-no-unknown-custom-properties): Disallow unknown custom properties.
-- [`stylelint-z-index-value-constraint`](https://github.com/kristerkari/stylelint-z-index-value-constraint): Specify minimum and maximum constraint value for z-index.
diff --git a/assets/node_modules/stylelint/docs/user-guide/postcss-plugin.md b/assets/node_modules/stylelint/docs/user-guide/postcss-plugin.md
deleted file mode 100644
index 545e84a..0000000
--- a/assets/node_modules/stylelint/docs/user-guide/postcss-plugin.md
+++ /dev/null
@@ -1,131 +0,0 @@
-# PostCSS plugin
-
-As with any other [PostCSS plugin](https://github.com/postcss/postcss#plugins), you can use stylelint's PostCSS plugin either with a [PostCSS runner](https://github.com/postcss/postcss#runners) or with the PostCSS JS API directly.
-
-*However, if a dedicated stylelint task runner plugin [is available](complementary-tools.md) (e.g. [gulp-stylelint](https://github.com/olegskl/gulp-stylelint) or [grunt-stylelint](https://github.com/wikimedia/grunt-stylelint)) we recommend you use that rather than this plugin, as they provide better reporting.*
-
-## Installation
-
-stylelint is an [npm package](https://www.npmjs.com/package/stylelint). Install it using:
-
-```console
-npm install stylelint --save-dev
-```
-
-## Options
-
-The plugin accepts an options object as argument, with the following properties:
-
-### `config`
-
-A [stylelint configuration object](configuration.md).
-
-If no `config` or `configFile` is passed, stylelint will use a [config lookup algorithm](./configuration.md#loading-the-configuration-object) to find the correct config.
-
-### `configFile`
-
-The path to a JSON, YAML, or JS file that contains your [stylelint configuration object](configuration.md).
-
-It should be either absolute or relative to the directory that your process is running from (`process.cwd()`). We'd recommend absolute.
-
-### `configBasedir`
-
-An absolute path to the directory that relative paths defining `extends` and `plugins` are *relative to*.
-
-This is only necessary if you passed an object directly through the `config` property. If you used
-`configFile`, this option is not necessary.
-
-If the `config` object passed uses relative paths, e.g. for `extends` or `plugins`, you are going to have to pass a `configBasedir`. If not, you do not need this.
-
-### `configOverrides`
-
-A partial stylelint configuration object whose properties will override the existing config object, whether that config was loaded via the `config` option or a `.stylelintrc` file.
-
-The difference between the `configOverrides` and `config` options is this: If any `config` object is passed, stylelint does not bother looking for a `.stylelintrc` file and instead just uses whatever `config` object you've passed; but if you want to *both* load a `.stylelintrc` file *and* override specific parts of it, `configOverrides` does just that.
-
-### `ignoreDisables`
-
-If `true`, all disable comments (e.g. `/* stylelint-disable block-no-empty */`) will be ignored.
-
-You can use this option to see what your linting results would be like without those exceptions.
-
-### `ignorePath`
-
-A path to a file containing patterns describing files to ignore. The path can be absolute or relative to `process.cwd()`. By default, stylelint looks for `.stylelintignore` in `process.cwd()`. See [Configuration](configuration.md#stylelintignore).
-
-## Usage examples
-
-We recommend you lint your CSS before applying any transformations. You can do this by either:
-
-- creating a separate lint task that is independent of your build one.
-- using the [`plugins` option](https://github.com/postcss/postcss-import#plugins) of [`postcss-import`](https://github.com/postcss/postcss-import) or [`postcss-easy-import`](https://github.com/TrySound/postcss-easy-import) to lint your files before any transformations.
-- placing stylelint at the beginning of your plugin pipeline.
-
-You'll also need to use a reporter. *The stylelint plugin registers warnings via PostCSS*. Therefore, you'll want to use it with a PostCSS runner that prints warnings or another PostCSS plugin whose purpose is to format and print warnings (e.g. [`postcss-reporter`](https://github.com/postcss/postcss-reporter)).
-
-### Example A
-
-A separate lint task that uses the plugin via the PostCSS JS API to lint Less using [`postcss-less`](https://github.com/shellscape/postcss-less).
-
-*Note: the stylelint PostCSS plugin, unlike the stylelint CLI and Node.js API, doesn't have a `syntax` option. Instead, the syntax must be set within the [PostCSS options](https://github.com/postcss/postcss#options) as there can only be one parser/syntax in a pipeline.*
-
-```js
-const fs = require('fs');
-const less = require('postcss-less');
-const postcss = require('postcss');
-
-// CSS to be processed
-const css = fs.readFileSync('input.css', 'utf8');
-
-postcss([
- require('stylelint')({
- /* your options */
- }),
- require('postcss-reporter')({ clearReportedMessages: true }),
-])
- .process(css, {
- from: 'input.css',
- syntax: less,
- })
- .then(() => {})
- .catch((err) => console.error(err.stack));
-```
-
-The same pattern can be used to lint Less, SCSS or [SugarSS](https://github.com/postcss/sugarss) syntax.
-
-### Example B
-
-A combined lint and build task where the plugin is used via the PostCSS JS API, but within [`postcss-import`](https://github.com/postcss/postcss-import) (using the its `plugins` option) so that the source files are linted before any transformations.
-
-```js
-const fs = require('fs');
-const postcss = require('postcss');
-const stylelint = require('stylelint');
-
-// CSS to be processed
-const css = fs.readFileSync('lib/app.css', 'utf8');
-
-postcss([
- require('postcss-import')({
- plugins: [
- require('stylelint')({
- /* your options */
- }),
- ],
- }),
- require('postcss-cssnext'),
- require('postcss-reporter')({ clearReportedMessages: true }),
-])
- .process(css, {
- from: 'lib/app.css',
- to: 'app.css',
- })
- .then((result) => {
- fs.writeFileSync('app.css', result.css);
-
- if (result.map) {
- fs.writeFileSync('app.css.map', result.map);
- }
- })
- .catch((err) => console.error(err.stack));
-```
diff --git a/assets/node_modules/stylelint/docs/user-guide/processors.md b/assets/node_modules/stylelint/docs/user-guide/processors.md
deleted file mode 100644
index 67d1d49..0000000
--- a/assets/node_modules/stylelint/docs/user-guide/processors.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Processors
-
-Processors are community packages that enable stylelint to extract styles from within non-stylesheet files.
-
-*These processors can only be used with the CLI and the Node.js API, not with the PostCSS plugin.* (The PostCSS plugin will ignore them.)
-
-- [stylelint-processor-arbitrary-tags](https://github.com/mapbox/stylelint-processor-arbitrary-tags): Lint within user-specified tags.
-
-stylelint now has built-in support for many common non-stylesheet files. You may no longer need to use the following processors:
-
-- [stylelint-processor-glamorous](https://github.com/zabute/stylelint-processor-glamorous): Lint [glamorous](https://github.com/paypal/glamorous) and related CSS-in-JS libraries using object literals.
-- [stylelint-processor-markdown](https://github.com/mapbox/stylelint-processor-markdown): Lint within Markdown's [GFM fenced code blocks](https://help.github.com/articles/creating-and-highlighting-code-blocks/).
-- [stylelint-processor-styled-components](https://github.com/styled-components/stylelint-processor-styled-components): Lint [styled-components](https://styled-components.com) and related CSS-in-JS libraries using tagged template literals.
diff --git a/assets/node_modules/stylelint/docs/user-guide/rules.md b/assets/node_modules/stylelint/docs/user-guide/rules.md
deleted file mode 100644
index 133c306..0000000
--- a/assets/node_modules/stylelint/docs/user-guide/rules.md
+++ /dev/null
@@ -1,361 +0,0 @@
-# Rules
-
-Rules determine what the linter looks for and complains about. All the rules are turned off by default and none have default values for their options. The rules follow a consistent naming convention and have been designed to work in conjunction with one another, you can read more about this in the ["About rules"](about-rules.md) section.
-
-The built-in rules are geared towards standard CSS syntax. With the exception of the `indentation` rule, all the rules will ignore structures that contain non-standard syntax e.g. variable interpolation and mixins.
-
-In addition to these rules there are [plugins](plugins.md), which are rules built by the community that support methodologies, toolsets, *non-standard* CSS features, or very specific use cases. Don't forget to look at the list of [plugins](plugins.md) for more ways to lint.
-
-## List of rules
-
-Here are all the rules within stylelint, grouped first [by category](../../VISION.md) and then by the [*thing*](http://apps.workflower.fi/vocabs/css/en) they apply to.
-
-- [Possible errors](#possible-errors)
-- [Limit language features](#limit-language-features)
-- [Stylistic issues](#stylistic-issues)
-
-### Possible errors
-
-#### Color
-
-- [`color-no-invalid-hex`](../../lib/rules/color-no-invalid-hex/README.md): Disallow invalid hex colors.
-
-#### Font family
-
-- [`font-family-no-duplicate-names`](../../lib/rules/font-family-no-duplicate-names/README.md): Disallow duplicate font family names.
-- [`font-family-no-missing-generic-family-keyword`](../../lib/rules/font-family-no-missing-generic-family-keyword/README.md): Disallow missing generic families in lists of font family names.
-
-#### Function
-
-- [`function-calc-no-invalid`](../../lib/rules/function-calc-no-invalid/README.md): Disallow an invalid expression within `calc` functions.
-- [`function-calc-no-unspaced-operator`](../../lib/rules/function-calc-no-unspaced-operator/README.md): Disallow an unspaced operator within `calc` functions.
-- [`function-linear-gradient-no-nonstandard-direction`](../../lib/rules/function-linear-gradient-no-nonstandard-direction/README.md): Disallow direction values in `linear-gradient()` calls that are not valid according to the [standard syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient#Syntax).
-
-#### String
-
-- [`string-no-newline`](../../lib/rules/string-no-newline/README.md): Disallow (unescaped) newlines in strings.
-
-#### Unit
-
-- [`unit-no-unknown`](../../lib/rules/unit-no-unknown/README.md): Disallow unknown units.
-
-#### Property
-
-- [`property-no-unknown`](../../lib/rules/property-no-unknown/README.md): Disallow unknown properties.
-
-#### Keyframe declaration
-
-- [`keyframe-declaration-no-important`](../../lib/rules/keyframe-declaration-no-important/README.md): Disallow `!important` within keyframe declarations.
-
-#### Declaration block
-
-- [`declaration-block-no-duplicate-properties`](../../lib/rules/declaration-block-no-duplicate-properties/README.md): Disallow duplicate properties within declaration blocks.
-- [`declaration-block-no-shorthand-property-overrides`](../../lib/rules/declaration-block-no-shorthand-property-overrides/README.md): Disallow shorthand properties that override related longhand properties.
-
-#### Block
-
-- [`block-no-empty`](../../lib/rules/block-no-empty/README.md): Disallow empty blocks.
-
-#### Selector
-
-- [`selector-pseudo-class-no-unknown`](../../lib/rules/selector-pseudo-class-no-unknown/README.md): Disallow unknown pseudo-class selectors.
-- [`selector-pseudo-element-no-unknown`](../../lib/rules/selector-pseudo-element-no-unknown/README.md): Disallow unknown pseudo-element selectors.
-- [`selector-type-no-unknown`](../../lib/rules/selector-type-no-unknown/README.md): Disallow unknown type selectors.
-
-#### Media feature
-
-- [`media-feature-name-no-unknown`](../../lib/rules/media-feature-name-no-unknown/README.md): Disallow unknown media feature names.
-
-#### At-rule
-
-- [`at-rule-no-unknown`](../../lib/rules/at-rule-no-unknown/README.md): Disallow unknown at-rules.
-
-#### Comment
-
-- [`comment-no-empty`](../../lib/rules/comment-no-empty/README.md): Disallow empty comments.
-
-#### General / Sheet
-
-- [`no-descending-specificity`](../../lib/rules/no-descending-specificity/README.md): Disallow selectors of lower specificity from coming after overriding selectors of higher specificity.
-- [`no-duplicate-at-import-rules`](../../lib/rules/no-duplicate-at-import-rules/README.md): Disallow duplicate `@import` rules within a stylesheet.
-- [`no-duplicate-selectors`](../../lib/rules/no-duplicate-selectors/README.md): Disallow duplicate selectors within a stylesheet.
-- [`no-empty-source`](../../lib/rules/no-empty-source/README.md): Disallow empty sources.
-- [`no-extra-semicolons`](../../lib/rules/no-extra-semicolons/README.md): Disallow extra semicolons (Autofixable).
-- [`no-invalid-double-slash-comments`](../../lib/rules/no-invalid-double-slash-comments/README.md): Disallow double-slash comments (`//...`) which are not supported by CSS.
-
-### Limit language features
-
-#### Color
-
-- [`color-named`](../../lib/rules/color-named/README.md): Require (where possible) or disallow named colors.
-- [`color-no-hex`](../../lib/rules/color-no-hex/README.md): Disallow hex colors.
-
-#### Function
-
-- [`function-blacklist`](../../lib/rules/function-blacklist/README.md): Specify a blacklist of disallowed functions.
-- [`function-url-no-scheme-relative`](../../lib/rules/function-url-no-scheme-relative/README.md): Disallow scheme-relative urls.
-- [`function-url-scheme-blacklist`](../../lib/rules/function-url-scheme-blacklist/README.md): Specify a blacklist of disallowed URL schemes.
-- [`function-url-scheme-whitelist`](../../lib/rules/function-url-scheme-whitelist/README.md): Specify a whitelist of allowed URL schemes.
-- [`function-whitelist`](../../lib/rules/function-whitelist/README.md): Specify a whitelist of allowed functions.
-
-#### Keyframes
-
-- [`keyframes-name-pattern`](../../lib/rules/keyframes-name-pattern/README.md): Specify a pattern for keyframe names.
-
-#### Number
-
-- [`number-max-precision`](../../lib/rules/number-max-precision/README.md): Limit the number of decimal places allowed in numbers.
-
-#### Time
-
-- [`time-min-milliseconds`](../../lib/rules/time-min-milliseconds/README.md): Specify the minimum number of milliseconds for time values.
-
-#### Unit
-
-- [`unit-blacklist`](../../lib/rules/unit-blacklist/README.md): Specify a blacklist of disallowed units.
-- [`unit-whitelist`](../../lib/rules/unit-whitelist/README.md): Specify a whitelist of allowed units.
-
-#### Shorthand property
-
-- [`shorthand-property-no-redundant-values`](../../lib/rules/shorthand-property-no-redundant-values/README.md): Disallow redundant values in shorthand properties (Autofixable).
-
-#### Value
-
-- [`value-no-vendor-prefix`](../../lib/rules/value-no-vendor-prefix/README.md): Disallow vendor prefixes for values.
-
-#### Custom property
-
-- [`custom-property-pattern`](../../lib/rules/custom-property-pattern/README.md): Specify a pattern for custom properties.
-
-#### Property
-
-- [`property-blacklist`](../../lib/rules/property-blacklist/README.md): Specify a blacklist of disallowed properties.
-- [`property-no-vendor-prefix`](../../lib/rules/property-no-vendor-prefix/README.md): Disallow vendor prefixes for properties.
-- [`property-whitelist`](../../lib/rules/property-whitelist/README.md): Specify a whitelist of allowed properties.
-
-#### Declaration
-
-- [`declaration-block-no-redundant-longhand-properties`](../../lib/rules/declaration-block-no-redundant-longhand-properties/README.md): Disallow longhand properties that can be combined into one shorthand property.
-- [`declaration-no-important`](../../lib/rules/declaration-no-important/README.md): Disallow `!important` within declarations.
-- [`declaration-property-unit-blacklist`](../../lib/rules/declaration-property-unit-blacklist/README.md): Specify a blacklist of disallowed property and unit pairs within declarations.
-- [`declaration-property-unit-whitelist`](../../lib/rules/declaration-property-unit-whitelist/README.md): Specify a whitelist of allowed property and unit pairs within declarations.
-- [`declaration-property-value-blacklist`](../../lib/rules/declaration-property-value-blacklist/README.md): Specify a blacklist of disallowed property and value pairs within declarations.
-- [`declaration-property-value-whitelist`](../../lib/rules/declaration-property-value-whitelist/README.md): Specify a whitelist of allowed property and value pairs within declarations.
-
-#### Declaration block
-
-- [`declaration-block-single-line-max-declarations`](../../lib/rules/declaration-block-single-line-max-declarations/README.md): Limit the number of declarations within a single-line declaration block.
-
-#### Selector
-
-- [`selector-attribute-operator-blacklist`](../../lib/rules/selector-attribute-operator-blacklist/README.md): Specify a blacklist of disallowed attribute operators.
-- [`selector-attribute-operator-whitelist`](../../lib/rules/selector-attribute-operator-whitelist/README.md): Specify a whitelist of allowed attribute operators.
-- [`selector-class-pattern`](../../lib/rules/selector-class-pattern/README.md): Specify a pattern for class selectors.
-- [`selector-combinator-blacklist`](../../lib/rules/selector-combinator-blacklist/README.md): Specify a blacklist of disallowed combinators.
-- [`selector-combinator-whitelist`](../../lib/rules/selector-combinator-whitelist/README.md): Specify a whitelist of allowed combinators.
-- [`selector-id-pattern`](../../lib/rules/selector-id-pattern/README.md): Specify a pattern for ID selectors.
-- [`selector-max-attribute`](../../lib/rules/selector-max-attribute/README.md): Limit the number of attribute selectors in a selector.
-- [`selector-max-class`](../../lib/rules/selector-max-class/README.md): Limit the number of classes in a selector.
-- [`selector-max-combinators`](../../lib/rules/selector-max-combinators/README.md): Limit the number of combinators in a selector.
-- [`selector-max-compound-selectors`](../../lib/rules/selector-max-compound-selectors/README.md): Limit the number of compound selectors in a selector.
-- [`selector-max-empty-lines`](../../lib/rules/selector-max-empty-lines/README.md): Limit the number of adjacent empty lines within selectors (Autofixable).
-- [`selector-max-id`](../../lib/rules/selector-max-id/README.md): Limit the number of ID selectors in a selector.
-- [`selector-max-pseudo-class`](../../lib/rules/selector-max-pseudo-class/README.md): Limit the number of pseudo-classes in a selector.
-- [`selector-max-specificity`](../../lib/rules/selector-max-specificity/README.md): Limit the specificity of selectors.
-- [`selector-max-type`](../../lib/rules/selector-max-type/README.md): Limit the number of type in a selector.
-- [`selector-max-universal`](../../lib/rules/selector-max-universal/README.md): Limit the number of universal selectors in a selector.
-- [`selector-nested-pattern`](../../lib/rules/selector-nested-pattern/README.md): Specify a pattern for the selectors of rules nested within rules.
-- [`selector-no-qualifying-type`](../../lib/rules/selector-no-qualifying-type/README.md): Disallow qualifying a selector by type.
-- [`selector-no-vendor-prefix`](../../lib/rules/selector-no-vendor-prefix/README.md): Disallow vendor prefixes for selectors.
-- [`selector-pseudo-class-blacklist`](../../lib/rules/selector-pseudo-class-blacklist/README.md): Specify a blacklist of disallowed pseudo-class selectors.
-- [`selector-pseudo-class-whitelist`](../../lib/rules/selector-pseudo-class-whitelist/README.md): Specify a whitelist of allowed pseudo-class selectors.
-- [`selector-pseudo-element-blacklist`](../../lib/rules/selector-pseudo-element-blacklist/README.md): Specify a blacklist of disallowed pseudo-element selectors.
-- [`selector-pseudo-element-whitelist`](../../lib/rules/selector-pseudo-element-whitelist/README.md): Specify a whitelist of allowed pseudo-element selectors.
-
-#### Media feature
-
-- [`media-feature-name-blacklist`](../../lib/rules/media-feature-name-blacklist/README.md): Specify a blacklist of disallowed media feature names.
-- [`media-feature-name-no-vendor-prefix`](../../lib/rules/media-feature-name-no-vendor-prefix/README.md): Disallow vendor prefixes for media feature names.
-- [`media-feature-name-value-whitelist`](../../lib/rules/media-feature-name-value-whitelist/README.md): Specify a whitelist of allowed media feature name and value pairs.
-- [`media-feature-name-whitelist`](../../lib/rules/media-feature-name-whitelist/README.md): Specify a whitelist of allowed media feature names.
-
-#### Custom media
-
-- [`custom-media-pattern`](../../lib/rules/custom-media-pattern/README.md): Specify a pattern for custom media query names.
-
-#### At-rule
-
-- [`at-rule-blacklist`](../../lib/rules/at-rule-blacklist/README.md): Specify a blacklist of disallowed at-rules.
-- [`at-rule-no-vendor-prefix`](../../lib/rules/at-rule-no-vendor-prefix/README.md): Disallow vendor prefixes for at-rules.
-- [`at-rule-property-requirelist`](../../lib/rules/at-rule-property-requirelist/README.md): Specify a requirelist of properties for an at-rule.
-- [`at-rule-whitelist`](../../lib/rules/at-rule-whitelist/README.md): Specify a whitelist of allowed at-rules.
-
-#### Comment
-
-- [`comment-word-blacklist`](../../lib/rules/comment-word-blacklist/README.md): Specify a blacklist of disallowed words within comments.
-
-#### General / Sheet
-
-- [`max-nesting-depth`](../../lib/rules/max-nesting-depth/README.md): Limit the depth of nesting.
-- [`no-unknown-animations`](../../lib/rules/no-unknown-animations/README.md): Disallow unknown animations.
-
-### Stylistic issues
-
-#### Color
-
-- [`color-hex-case`](../../lib/rules/color-hex-case/README.md): Specify lowercase or uppercase for hex colors (Autofixable).
-- [`color-hex-length`](../../lib/rules/color-hex-length/README.md): Specify short or long notation for hex colors (Autofixable).
-
-#### Font family
-
-- [`font-family-name-quotes`](../../lib/rules/font-family-name-quotes/README.md): Specify whether or not quotation marks should be used around font family names.
-
-#### Font weight
-
-- [`font-weight-notation`](../../lib/rules/font-weight-notation/README.md): Require numeric or named (where possible) `font-weight` values. Also, when named values are expected, require only valid names.
-
-#### Function
-
-- [`function-comma-newline-after`](../../lib/rules/function-comma-newline-after/README.md): Require a newline or disallow whitespace after the commas of functions (Autofixable).
-- [`function-comma-newline-before`](../../lib/rules/function-comma-newline-before/README.md): Require a newline or disallow whitespace before the commas of functions (Autofixable).
-- [`function-comma-space-after`](../../lib/rules/function-comma-space-after/README.md): Require a single space or disallow whitespace after the commas of functions (Autofixable).
-- [`function-comma-space-before`](../../lib/rules/function-comma-space-before/README.md): Require a single space or disallow whitespace before the commas of functions (Autofixable).
-- [`function-max-empty-lines`](../../lib/rules/function-max-empty-lines/README.md): Limit the number of adjacent empty lines within functions (Autofixable).
-- [`function-name-case`](../../lib/rules/function-name-case/README.md): Specify lowercase or uppercase for function names (Autofixable).
-- [`function-parentheses-newline-inside`](../../lib/rules/function-parentheses-newline-inside/README.md): Require a newline or disallow whitespace on the inside of the parentheses of functions (Autofixable).
-- [`function-parentheses-space-inside`](../../lib/rules/function-parentheses-space-inside/README.md): Require a single space or disallow whitespace on the inside of the parentheses of functions (Autofixable).
-- [`function-url-quotes`](../../lib/rules/function-url-quotes/README.md): Require or disallow quotes for urls.
-- [`function-whitespace-after`](../../lib/rules/function-whitespace-after/README.md): Require or disallow whitespace after functions (Autofixable).
-
-#### Number
-
-- [`number-leading-zero`](../../lib/rules/number-leading-zero/README.md): Require or disallow a leading zero for fractional numbers less than 1 (Autofixable).
-- [`number-no-trailing-zeros`](../../lib/rules/number-no-trailing-zeros/README.md): Disallow trailing zeros in numbers (Autofixable).
-
-#### String
-
-- [`string-quotes`](../../lib/rules/string-quotes/README.md): Specify single or double quotes around strings (Autofixable).
-
-#### Length
-
-- [`length-zero-no-unit`](../../lib/rules/length-zero-no-unit/README.md): Disallow units for zero lengths (Autofixable).
-
-#### Unit
-
-- [`unit-case`](../../lib/rules/unit-case/README.md): Specify lowercase or uppercase for units (Autofixable).
-
-#### Value
-
-- [`value-keyword-case`](../../lib/rules/value-keyword-case/README.md): Specify lowercase or uppercase for keywords values (Autofixable).
-
-#### Value list
-
-- [`value-list-comma-newline-after`](../../lib/rules/value-list-comma-newline-after/README.md): Require a newline or disallow whitespace after the commas of value lists (Autofixable).
-- [`value-list-comma-newline-before`](../../lib/rules/value-list-comma-newline-before/README.md): Require a newline or disallow whitespace before the commas of value lists.
-- [`value-list-comma-space-after`](../../lib/rules/value-list-comma-space-after/README.md): Require a single space or disallow whitespace after the commas of value lists (Autofixable).
-- [`value-list-comma-space-before`](../../lib/rules/value-list-comma-space-before/README.md): Require a single space or disallow whitespace before the commas of value lists (Autofixable).
-- [`value-list-max-empty-lines`](../../lib/rules/value-list-max-empty-lines/README.md): Limit the number of adjacent empty lines within value lists (Autofixable).
-
-#### Custom property
-
-- [`custom-property-empty-line-before`](../../lib/rules/custom-property-empty-line-before/README.md): Require or disallow an empty line before custom properties (Autofixable).
-
-#### Property
-
-- [`property-case`](../../lib/rules/property-case/README.md): Specify lowercase or uppercase for properties (Autofixable).
-
-#### Declaration
-
-- [`declaration-bang-space-after`](../../lib/rules/declaration-bang-space-after/README.md): Require a single space or disallow whitespace after the bang of declarations (Autofixable).
-- [`declaration-bang-space-before`](../../lib/rules/declaration-bang-space-before/README.md): Require a single space or disallow whitespace before the bang of declarations (Autofixable).
-- [`declaration-colon-newline-after`](../../lib/rules/declaration-colon-newline-after/README.md): Require a newline or disallow whitespace after the colon of declarations (Autofixable).
-- [`declaration-colon-space-after`](../../lib/rules/declaration-colon-space-after/README.md): Require a single space or disallow whitespace after the colon of declarations (Autofixable).
-- [`declaration-colon-space-before`](../../lib/rules/declaration-colon-space-before/README.md): Require a single space or disallow whitespace before the colon of declarations (Autofixable).
-- [`declaration-empty-line-before`](../../lib/rules/declaration-empty-line-before/README.md): Require or disallow an empty line before declarations (Autofixable).
-
-#### Declaration block
-
-- [`declaration-block-semicolon-newline-after`](../../lib/rules/declaration-block-semicolon-newline-after/README.md): Require a newline or disallow whitespace after the semicolons of declaration blocks (Autofixable).
-- [`declaration-block-semicolon-newline-before`](../../lib/rules/declaration-block-semicolon-newline-before/README.md): Require a newline or disallow whitespace before the semicolons of declaration blocks.
-- [`declaration-block-semicolon-space-after`](../../lib/rules/declaration-block-semicolon-space-after/README.md): Require a single space or disallow whitespace after the semicolons of declaration blocks (Autofixable).
-- [`declaration-block-semicolon-space-before`](../../lib/rules/declaration-block-semicolon-space-before/README.md): Require a single space or disallow whitespace before the semicolons of declaration blocks (Autofixable).
-- [`declaration-block-trailing-semicolon`](../../lib/rules/declaration-block-trailing-semicolon/README.md): Require or disallow a trailing semicolon within declaration blocks (Autofixable).
-
-#### Block
-
-- [`block-closing-brace-empty-line-before`](../../lib/rules/block-closing-brace-empty-line-before/README.md): Require or disallow an empty line before the closing brace of blocks (Autofixable).
-- [`block-closing-brace-newline-after`](../../lib/rules/block-closing-brace-newline-after/README.md): Require a newline or disallow whitespace after the closing brace of blocks (Autofixable).
-- [`block-closing-brace-newline-before`](../../lib/rules/block-closing-brace-newline-before/README.md): Require a newline or disallow whitespace before the closing brace of blocks (Autofixable).
-- [`block-closing-brace-space-after`](../../lib/rules/block-closing-brace-space-after/README.md): Require a single space or disallow whitespace after the closing brace of blocks.
-- [`block-closing-brace-space-before`](../../lib/rules/block-closing-brace-space-before/README.md): Require a single space or disallow whitespace before the closing brace of blocks (Autofixable).
-- [`block-opening-brace-newline-after`](../../lib/rules/block-opening-brace-newline-after/README.md): Require a newline after the opening brace of blocks (Autofixable).
-- [`block-opening-brace-newline-before`](../../lib/rules/block-opening-brace-newline-before/README.md): Require a newline or disallow whitespace before the opening brace of blocks (Autofixable).
-- [`block-opening-brace-space-after`](../../lib/rules/block-opening-brace-space-after/README.md): Require a single space or disallow whitespace after the opening brace of blocks (Autofixable).
-- [`block-opening-brace-space-before`](../../lib/rules/block-opening-brace-space-before/README.md): Require a single space or disallow whitespace before the opening brace of blocks (Autofixable).
-
-#### Selector
-
-- [`selector-attribute-brackets-space-inside`](../../lib/rules/selector-attribute-brackets-space-inside/README.md): Require a single space or disallow whitespace on the inside of the brackets within attribute selectors (Autofixable).
-- [`selector-attribute-operator-space-after`](../../lib/rules/selector-attribute-operator-space-after/README.md): Require a single space or disallow whitespace after operators within attribute selectors (Autofixable).
-- [`selector-attribute-operator-space-before`](../../lib/rules/selector-attribute-operator-space-before/README.md): Require a single space or disallow whitespace before operators within attribute selectors (Autofixable).
-- [`selector-attribute-quotes`](../../lib/rules/selector-attribute-quotes/README.md): Require or disallow quotes for attribute values.
-- [`selector-combinator-space-after`](../../lib/rules/selector-combinator-space-after/README.md): Require a single space or disallow whitespace after the combinators of selectors (Autofixable).
-- [`selector-combinator-space-before`](../../lib/rules/selector-combinator-space-before/README.md): Require a single space or disallow whitespace before the combinators of selectors (Autofixable).
-- [`selector-descendant-combinator-no-non-space`](../../lib/rules/selector-descendant-combinator-no-non-space/README.md): Disallow non-space characters for descendant combinators of selectors (Autofixable).
-- [`selector-pseudo-class-case`](../../lib/rules/selector-pseudo-class-case/README.md): Specify lowercase or uppercase for pseudo-class selectors (Autofixable).
-- [`selector-pseudo-class-parentheses-space-inside`](../../lib/rules/selector-pseudo-class-parentheses-space-inside/README.md): Require a single space or disallow whitespace on the inside of the parentheses within pseudo-class selectors (Autofixable).
-- [`selector-pseudo-element-case`](../../lib/rules/selector-pseudo-element-case/README.md): Specify lowercase or uppercase for pseudo-element selectors (Autofixable).
-- [`selector-pseudo-element-colon-notation`](../../lib/rules/selector-pseudo-element-colon-notation/README.md): Specify single or double colon notation for applicable pseudo-elements (Autofixable).
-- [`selector-type-case`](../../lib/rules/selector-type-case/README.md): Specify lowercase or uppercase for type selectors (Autofixable).
-
-#### Selector list
-
-- [`selector-list-comma-newline-after`](../../lib/rules/selector-list-comma-newline-after/README.md): Require a newline or disallow whitespace after the commas of selector lists (Autofixable).
-- [`selector-list-comma-newline-before`](../../lib/rules/selector-list-comma-newline-before/README.md): Require a newline or disallow whitespace before the commas of selector lists (Autofixable).
-- [`selector-list-comma-space-after`](../../lib/rules/selector-list-comma-space-after/README.md): Require a single space or disallow whitespace after the commas of selector lists (Autofixable).
-- [`selector-list-comma-space-before`](../../lib/rules/selector-list-comma-space-before/README.md): Require a single space or disallow whitespace before the commas of selector lists (Autofixable).
-
-#### Rule
-
-- [`rule-empty-line-before`](../../lib/rules/rule-empty-line-before/README.md): Require or disallow an empty line before rules (Autofixable).
-
-#### Media feature
-
-- [`media-feature-colon-space-after`](../../lib/rules/media-feature-colon-space-after/README.md): Require a single space or disallow whitespace after the colon in media features (Autofixable).
-- [`media-feature-colon-space-before`](../../lib/rules/media-feature-colon-space-before/README.md): Require a single space or disallow whitespace before the colon in media features (Autofixable).
-- [`media-feature-name-case`](../../lib/rules/media-feature-name-case/README.md): Specify lowercase or uppercase for media feature names (Autofixable).
-- [`media-feature-parentheses-space-inside`](../../lib/rules/media-feature-parentheses-space-inside/README.md): Require a single space or disallow whitespace on the inside of the parentheses within media features (Autofixable).
-- [`media-feature-range-operator-space-after`](../../lib/rules/media-feature-range-operator-space-after/README.md): Require a single space or disallow whitespace after the range operator in media features (Autofixable).
-- [`media-feature-range-operator-space-before`](../../lib/rules/media-feature-range-operator-space-before/README.md): Require a single space or disallow whitespace before the range operator in media features (Autofixable).
-
-#### Media query list
-
-- [`media-query-list-comma-newline-after`](../../lib/rules/media-query-list-comma-newline-after/README.md): Require a newline or disallow whitespace after the commas of media query lists (Autofixable).
-- [`media-query-list-comma-newline-before`](../../lib/rules/media-query-list-comma-newline-before/README.md): Require a newline or disallow whitespace before the commas of media query lists.
-- [`media-query-list-comma-space-after`](../../lib/rules/media-query-list-comma-space-after/README.md): Require a single space or disallow whitespace after the commas of media query lists (Autofixable).
-- [`media-query-list-comma-space-before`](../../lib/rules/media-query-list-comma-space-before/README.md): Require a single space or disallow whitespace before the commas of media query lists (Autofixable).
-
-#### At-rule
-
-- [`at-rule-empty-line-before`](../../lib/rules/at-rule-empty-line-before/README.md): Require or disallow an empty line before at-rules (Autofixable).
-- [`at-rule-name-case`](../../lib/rules/at-rule-name-case/README.md): Specify lowercase or uppercase for at-rules names (Autofixable).
-- [`at-rule-name-newline-after`](../../lib/rules/at-rule-name-newline-after/README.md): Require a newline after at-rule names.
-- [`at-rule-name-space-after`](../../lib/rules/at-rule-name-space-after/README.md): Require a single space after at-rule names (Autofixable).
-- [`at-rule-semicolon-newline-after`](../../lib/rules/at-rule-semicolon-newline-after/README.md): Require a newline after the semicolon of at-rules (Autofixable).
-- [`at-rule-semicolon-space-before`](../../lib/rules/at-rule-semicolon-space-before/README.md): Require a single space or disallow whitespace before the semicolons of at-rules.
-
-#### Comment
-
-- [`comment-empty-line-before`](../../lib/rules/comment-empty-line-before/README.md): Require or disallow an empty line before comments (Autofixable).
-- [`comment-whitespace-inside`](../../lib/rules/comment-whitespace-inside/README.md): Require or disallow whitespace on the inside of comment markers (Autofixable).
-
-#### General / Sheet
-
-- [`indentation`](../../lib/rules/indentation/README.md): Specify indentation (Autofixable).
-- [`linebreaks`](../../lib/rules/linebreaks/README.md): Specify unix or windows linebreaks (Autofixable).
-- [`max-empty-lines`](../../lib/rules/max-empty-lines/README.md): Limit the number of adjacent empty lines (Autofixable).
-- [`max-line-length`](../../lib/rules/max-line-length/README.md): Limit the length of a line.
-- [`no-eol-whitespace`](../../lib/rules/no-eol-whitespace/README.md): Disallow end-of-line whitespace (Autofixable).
-- [`no-missing-end-of-source-newline`](../../lib/rules/no-missing-end-of-source-newline/README.md): Disallow missing end-of-source newlines (Autofixable).
-- [`no-empty-first-line`](../../lib/rules/no-empty-first-line/README.md): Disallow empty first lines (Autofixable).
-- [`unicode-bom`](../../lib/rules/unicode-bom/README.md): Require or disallow Unicode BOM.
diff --git a/assets/node_modules/stylelint/docs/user-guide/semantic-versioning-policy.md b/assets/node_modules/stylelint/docs/user-guide/semantic-versioning-policy.md
deleted file mode 100644
index 0ef6a28..0000000
--- a/assets/node_modules/stylelint/docs/user-guide/semantic-versioning-policy.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# Semantic versioning policy
-
-We follow [semantic versioning](http://semver.org). However, due to the nature of stylelint as a code quality tool, we've defined the following policy for stylelint:
-
-- patch release (intended to not break your lint build)
- - a bug fix in a rule that results in stylelint reporting fewer errors
- - a bug fix to the CLI or core (including formatters)
- - improvements to documentation.
- - non-user-facing changes such as refactoring code or modifying tests
- - re-releasing after a failed release (i.e., publishing a release that doesn't work for anyone)
-
-- minor release (might break your lint build)
- - a bug fix in a rule that results in stylelint reporting more errors
- - a new rule is created
- - a new option to an existing rule that does not result in stylelint reporting more errors by default
- - an existing rule is deprecated
- - a new CLI capability is created
- - a new public API capability is created
- - a new formatter is created
-
-- major release (likely to break your lint build)
- - a change in the documented behaviour of an existing rule results in stylelint reporting more errors by default
- - an existing rule is removed
- - an existing formatter is removed
- - part of the CLI is removed or changed in an incompatible way
- - part of the public API is removed or changed in an incompatible way
diff --git a/assets/node_modules/stylelint/lib/assignDisabledRanges.js b/assets/node_modules/stylelint/lib/assignDisabledRanges.js
deleted file mode 100644
index c298de0..0000000
--- a/assets/node_modules/stylelint/lib/assignDisabledRanges.js
+++ /dev/null
@@ -1,307 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-
-const COMMAND_PREFIX = 'stylelint-';
-const disableCommand = `${COMMAND_PREFIX}disable`;
-const enableCommand = `${COMMAND_PREFIX}enable`;
-const disableLineCommand = `${COMMAND_PREFIX}disable-line`;
-const disableNextLineCommand = `${COMMAND_PREFIX}disable-next-line`;
-const ALL_RULES = 'all';
-
-/** @typedef {import('postcss').Comment} PostcssComment */
-/** @typedef {import('postcss').Root} PostcssRoot */
-/** @typedef {import('stylelint').PostcssResult} PostcssResult */
-/** @typedef {import('stylelint').DisabledRangeObject} DisabledRangeObject */
-/** @typedef {import('stylelint').DisabledRange} DisabledRange */
-
-/**
- * @param {number} start
- * @param {boolean} strictStart
- * @param {number} [end]
- * @param {boolean} [strictEnd]
- * @returns {DisabledRange}
- */
-function createDisableRange(start, strictStart, end, strictEnd) {
- return {
- start,
- end: end || undefined,
- strictStart,
- strictEnd: typeof strictEnd === 'boolean' ? strictEnd : undefined,
- };
-}
-
-/**
- * Run it like a plugin ...
- * @param {PostcssRoot} root
- * @param {PostcssResult} result
- * @returns {PostcssResult}
- */
-module.exports = function(root, result) {
- result.stylelint = result.stylelint || {
- disabledRanges: {},
- ruleSeverities: {},
- customMessages: {},
- };
-
- /**
- * Most of the functions below work via side effects mutating this object
- * @type {DisabledRangeObject}
- */
- const disabledRanges = {
- all: [],
- };
-
- result.stylelint.disabledRanges = disabledRanges;
- root.walkComments(checkComment);
-
- return result;
-
- /**
- * @param {PostcssComment} comment
- */
- function processDisableLineCommand(comment) {
- if (comment.source && comment.source.start) {
- const line = comment.source.start.line;
-
- getCommandRules(disableLineCommand, comment.text).forEach((ruleName) => {
- disableLine(line, ruleName, comment);
- });
- }
- }
-
- /**
- * @param {PostcssComment} comment
- */
- function processDisableNextLineCommand(comment) {
- if (comment.source && comment.source.start) {
- const line = comment.source.start.line;
-
- getCommandRules(disableNextLineCommand, comment.text).forEach((ruleName) => {
- disableLine(line + 1, ruleName, comment);
- });
- }
- }
-
- /**
- * @param {number} line
- * @param {string} ruleName
- * @param {PostcssComment} comment
- */
- function disableLine(line, ruleName, comment) {
- if (ruleIsDisabled(ALL_RULES)) {
- throw comment.error('All rules have already been disabled', {
- plugin: 'stylelint',
- });
- }
-
- if (ruleName === ALL_RULES) {
- Object.keys(disabledRanges).forEach((disabledRuleName) => {
- if (ruleIsDisabled(disabledRuleName)) return;
-
- const strict = disabledRuleName === ALL_RULES;
-
- startDisabledRange(line, disabledRuleName, strict);
- endDisabledRange(line, disabledRuleName, strict);
- });
- } else {
- if (ruleIsDisabled(ruleName)) {
- throw comment.error(`"${ruleName}" has already been disabled`, {
- plugin: 'stylelint',
- });
- }
-
- startDisabledRange(line, ruleName, true);
- endDisabledRange(line, ruleName, true);
- }
- }
-
- /**
- * @param {PostcssComment} comment
- */
- function processDisableCommand(comment) {
- getCommandRules(disableCommand, comment.text).forEach((ruleToDisable) => {
- const isAllRules = ruleToDisable === ALL_RULES;
-
- if (ruleIsDisabled(ruleToDisable)) {
- throw comment.error(
- isAllRules
- ? 'All rules have already been disabled'
- : `"${ruleToDisable}" has already been disabled`,
- {
- plugin: 'stylelint',
- },
- );
- }
-
- if (comment.source && comment.source.start) {
- const line = comment.source.start.line;
-
- if (isAllRules) {
- Object.keys(disabledRanges).forEach((ruleName) => {
- startDisabledRange(line, ruleName, ruleName === ALL_RULES);
- });
- } else {
- startDisabledRange(line, ruleToDisable, true);
- }
- }
- });
- }
-
- /**
- * @param {PostcssComment} comment
- */
- function processEnableCommand(comment) {
- getCommandRules(enableCommand, comment.text).forEach((ruleToEnable) => {
- // TODO TYPES
- // need fallback if endLine will be undefined
- const endLine =
- /** @type {number} */ (comment.source && comment.source.end && comment.source.end.line);
-
- if (ruleToEnable === ALL_RULES) {
- if (
- Object.values(disabledRanges).every(
- (ranges) => ranges.length === 0 || typeof ranges[ranges.length - 1].end === 'number',
- )
- ) {
- throw comment.error('No rules have been disabled', {
- plugin: 'stylelint',
- });
- }
-
- Object.keys(disabledRanges).forEach((ruleName) => {
- if (!_.get(_.last(disabledRanges[ruleName]), 'end')) {
- endDisabledRange(endLine, ruleName, ruleName === ALL_RULES);
- }
- });
-
- return;
- }
-
- if (ruleIsDisabled(ALL_RULES) && disabledRanges[ruleToEnable] === undefined) {
- // Get a starting point from the where all rules were disabled
- if (!disabledRanges[ruleToEnable]) {
- disabledRanges[ruleToEnable] = disabledRanges.all.map(({ start, end }) =>
- createDisableRange(start, false, end, false),
- );
- } else {
- const range = _.last(disabledRanges[ALL_RULES]);
-
- if (range) {
- disabledRanges[ruleToEnable].push({ ...range });
- }
- }
-
- endDisabledRange(endLine, ruleToEnable, true);
-
- return;
- }
-
- if (ruleIsDisabled(ruleToEnable)) {
- endDisabledRange(endLine, ruleToEnable, true);
-
- return;
- }
-
- throw comment.error(`"${ruleToEnable}" has not been disabled`, {
- plugin: 'stylelint',
- });
- });
- }
-
- /**
- * @param {PostcssComment} comment
- */
- function checkComment(comment) {
- const text = comment.text;
-
- // Ignore comments that are not relevant commands
-
- if (text.indexOf(COMMAND_PREFIX) !== 0) {
- return result;
- }
-
- if (text.startsWith(disableLineCommand)) {
- processDisableLineCommand(comment);
- } else if (text.startsWith(disableNextLineCommand)) {
- processDisableNextLineCommand(comment);
- } else if (text.startsWith(disableCommand)) {
- processDisableCommand(comment);
- } else if (text.startsWith(enableCommand)) {
- processEnableCommand(comment);
- }
- }
-
- /**
- * @param {string} command
- * @param {string} fullText
- * @returns {string[]}
- */
- function getCommandRules(command, fullText) {
- const rules = fullText
- .slice(command.length)
- .split(',')
- .filter(Boolean)
- .map((r) => r.trim());
-
- if (_.isEmpty(rules)) {
- return [ALL_RULES];
- }
-
- return rules;
- }
-
- /**
- * @param {number} line
- * @param {string} ruleName
- * @param {boolean} strict
- */
- function startDisabledRange(line, ruleName, strict) {
- const rangeObj = createDisableRange(line, strict);
-
- ensureRuleRanges(ruleName);
- disabledRanges[ruleName].push(rangeObj);
- }
-
- /**
- * @param {number} line
- * @param {string} ruleName
- * @param {boolean} strict
- */
- function endDisabledRange(line, ruleName, strict) {
- const lastRangeForRule = _.last(disabledRanges[ruleName]);
-
- if (!lastRangeForRule) {
- return;
- }
-
- // Add an `end` prop to the last range of that rule
- lastRangeForRule.end = line;
- lastRangeForRule.strictEnd = strict;
- }
-
- /**
- * @param {string} ruleName
- */
- function ensureRuleRanges(ruleName) {
- if (!disabledRanges[ruleName]) {
- disabledRanges[ruleName] = disabledRanges.all.map(({ start, end }) =>
- createDisableRange(start, false, end, false),
- );
- }
- }
-
- /**
- * @param {string} ruleName
- * @returns {boolean}
- */
- function ruleIsDisabled(ruleName) {
- if (disabledRanges[ruleName] === undefined) return false;
-
- if (_.last(disabledRanges[ruleName]) === undefined) return false;
-
- if (_.get(_.last(disabledRanges[ruleName]), 'end') === undefined) return true;
-
- return false;
- }
-};
diff --git a/assets/node_modules/stylelint/lib/augmentConfig.js b/assets/node_modules/stylelint/lib/augmentConfig.js
deleted file mode 100644
index 621bbb3..0000000
--- a/assets/node_modules/stylelint/lib/augmentConfig.js
+++ /dev/null
@@ -1,393 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const configurationError = require('./utils/configurationError');
-const dynamicRequire = require('./dynamicRequire');
-const getModulePath = require('./utils/getModulePath');
-const globjoin = require('globjoin');
-const normalizeRuleSettings = require('./normalizeRuleSettings');
-const path = require('path');
-const requireRule = require('./requireRule');
-
-/** @typedef {import('stylelint').StylelintConfigPlugins} StylelintConfigPlugins */
-/** @typedef {import('stylelint').StylelintConfigProcessors} StylelintConfigProcessors */
-/** @typedef {import('stylelint').StylelintConfigRules} StylelintConfigRules */
-/** @typedef {import('stylelint').StylelintInternalApi} StylelintInternalApi */
-/** @typedef {import('stylelint').StylelintConfig} StylelintConfig */
-/** @typedef {import('stylelint').CosmiconfigResult} CosmiconfigResult */
-
-/**
- * - Merges config and configOverrides
- * - Makes all paths absolute
- * - Merges extends
- * @param {StylelintInternalApi} stylelint
- * @param {StylelintConfig} config
- * @param {string} configDir
- * @param {boolean} [allowOverrides]
- * @returns {Promise<StylelintConfig>}
- */
-function augmentConfigBasic(stylelint, config, configDir, allowOverrides) {
- return Promise.resolve()
- .then(() => {
- if (!allowOverrides) return config;
-
- return _.merge(config, stylelint._options.configOverrides);
- })
- .then((augmentedConfig) => {
- return extendConfig(stylelint, augmentedConfig, configDir);
- })
- .then((augmentedConfig) => {
- return absolutizePaths(augmentedConfig, configDir);
- });
-}
-
-/**
- * Extended configs need to be run through augmentConfigBasic
- * but do not need the full treatment. Things like pluginFunctions
- * will be resolved and added by the parent config.
- * @param {StylelintInternalApi} stylelint
- * @param {CosmiconfigResult} [cosmiconfigResult]
- * @returns {Promise<CosmiconfigResult | null>}
- */
-function augmentConfigExtended(stylelint, cosmiconfigResult) {
- if (!cosmiconfigResult) return Promise.resolve(null);
-
- const configDir = path.dirname(cosmiconfigResult.filepath || '');
- const { ignoreFiles, ...cleanedConfig } = cosmiconfigResult.config;
-
- return augmentConfigBasic(stylelint, cleanedConfig, configDir).then((augmentedConfig) => {
- return {
- config: augmentedConfig,
- filepath: cosmiconfigResult.filepath,
- };
- });
-}
-
-/**
- * @param {StylelintInternalApi} stylelint
- * @param {CosmiconfigResult} [cosmiconfigResult]
- * @returns {Promise<CosmiconfigResult | null>}
- */
-function augmentConfigFull(stylelint, cosmiconfigResult) {
- if (!cosmiconfigResult) return Promise.resolve(null);
-
- const config = cosmiconfigResult.config;
- const filepath = cosmiconfigResult.filepath;
-
- const configDir = stylelint._options.configBasedir || path.dirname(filepath || '');
-
- return augmentConfigBasic(stylelint, config, configDir, true)
- .then((augmentedConfig) => {
- return addPluginFunctions(augmentedConfig);
- })
- .then((augmentedConfig) => {
- return addProcessorFunctions(augmentedConfig);
- })
- .then((augmentedConfig) => {
- if (!augmentedConfig.rules) {
- throw configurationError(
- 'No rules found within configuration. Have you provided a "rules" property?',
- );
- }
-
- return normalizeAllRuleSettings(augmentedConfig);
- })
- .then((augmentedConfig) => {
- return {
- config: augmentedConfig,
- filepath: cosmiconfigResult.filepath,
- };
- });
-}
-
-/**
- * Make all paths in the config absolute:
- * - ignoreFiles
- * - plugins
- * - processors
- * (extends handled elsewhere)
- * @param {StylelintConfig} config
- * @param {string} configDir
- * @returns {StylelintConfig}
- */
-function absolutizePaths(config, configDir) {
- if (config.ignoreFiles) {
- config.ignoreFiles = /** @type {string[]} */ ([]).concat(config.ignoreFiles).map((glob) => {
- if (path.isAbsolute(glob.replace(/^!/, ''))) return glob;
-
- return globjoin(configDir, glob);
- });
- }
-
- if (config.plugins) {
- config.plugins = /** @type {string[]} */ ([]).concat(config.plugins).map((lookup) => {
- return getModulePath(configDir, lookup);
- });
- }
-
- if (config.processors) {
- config.processors = absolutizeProcessors(config.processors, configDir);
- }
-
- return config;
-}
-
-/**
- * Processors are absolutized in their own way because
- * they can be and return a string or an array
- * @param {StylelintConfigProcessors} processors
- * @param {string} configDir
- * @return {StylelintConfigProcessors}
- */
-function absolutizeProcessors(processors, configDir) {
- const normalizedProcessors = Array.isArray(processors) ? processors : [processors];
-
- return normalizedProcessors.map((item) => {
- if (typeof item === 'string') {
- return getModulePath(configDir, item);
- }
-
- return [getModulePath(configDir, item[0]), item[1]];
- });
-}
-
-/**
- * @param {StylelintInternalApi} stylelint
- * @param {StylelintConfig} config
- * @param {string} configDir
- * @return {Promise<StylelintConfig>}
- */
-function extendConfig(stylelint, config, configDir) {
- if (config.extends === undefined) return Promise.resolve(config);
-
- const normalizedExtends = Array.isArray(config.extends) ? config.extends : [config.extends];
- const { extends: configExtends, ...originalWithoutExtends } = config;
-
- const loadExtends = normalizedExtends.reduce((resultPromise, extendLookup) => {
- return resultPromise.then((resultConfig) => {
- return loadExtendedConfig(stylelint, resultConfig, configDir, extendLookup).then(
- (extendResult) => {
- if (!extendResult) return resultConfig;
-
- return mergeConfigs(resultConfig, extendResult.config);
- },
- );
- });
- }, Promise.resolve(originalWithoutExtends));
-
- return loadExtends.then((resultConfig) => {
- return mergeConfigs(resultConfig, originalWithoutExtends);
- });
-}
-
-/**
- * @param {StylelintInternalApi} stylelint
- * @param {StylelintConfig} config
- * @param {string} configDir
- * @param {string} extendLookup
- * @return {Promise<CosmiconfigResult | null>}
- */
-function loadExtendedConfig(stylelint, config, configDir, extendLookup) {
- const extendPath = getModulePath(configDir, extendLookup);
-
- return stylelint._extendExplorer.load(extendPath);
-}
-
-/**
- * When merging configs (via extends)
- * - plugin and processor arrays are joined
- * - rules are merged via Object.assign, so there is no attempt made to
- * merge any given rule's settings. If b contains the same rule as a,
- * b's rule settings will override a's rule settings entirely.
- * - Everything else is merged via Object.assign
- * @param {StylelintConfig} a
- * @param {StylelintConfig} b
- * @returns {StylelintConfig}
- */
-function mergeConfigs(a, b) {
- /** @type {{plugins: StylelintConfigPlugins}} */
- const pluginMerger = {};
-
- if (a.plugins || b.plugins) {
- pluginMerger.plugins = [];
-
- if (a.plugins) {
- pluginMerger.plugins = pluginMerger.plugins.concat(a.plugins);
- }
-
- if (b.plugins) {
- pluginMerger.plugins = [...new Set(pluginMerger.plugins.concat(b.plugins))];
- }
- }
-
- /** @type {{processors: StylelintConfigProcessors}} */
- const processorMerger = {};
-
- if (a.processors || b.processors) {
- processorMerger.processors = [];
-
- if (a.processors) {
- processorMerger.processors = processorMerger.processors.concat(a.processors);
- }
-
- if (b.processors) {
- processorMerger.processors = [...new Set(processorMerger.processors.concat(b.processors))];
- }
- }
-
- const rulesMerger = {};
-
- if (a.rules || b.rules) {
- rulesMerger.rules = { ...a.rules, ...b.rules };
- }
-
- const result = { ...a, ...b, ...processorMerger, ...pluginMerger, ...rulesMerger };
-
- return result;
-}
-
-/**
- * @param {StylelintConfig} config
- * @returns {StylelintConfig}
- */
-function addPluginFunctions(config) {
- if (!config.plugins) return config;
-
- const normalizedPlugins = Array.isArray(config.plugins) ? config.plugins : [config.plugins];
-
- const pluginFunctions = normalizedPlugins.reduce(
- (result, pluginLookup) => {
- let pluginImport = dynamicRequire(pluginLookup);
-
- // Handle either ES6 or CommonJS modules
- pluginImport = pluginImport.default || pluginImport;
-
- // A plugin can export either a single rule definition
- // or an array of them
- const normalizedPluginImport = Array.isArray(pluginImport) ? pluginImport : [pluginImport];
-
- normalizedPluginImport.forEach((pluginRuleDefinition) => {
- if (!pluginRuleDefinition.ruleName) {
- throw configurationError(
- 'stylelint v3+ requires plugins to expose a ruleName. ' +
- `The plugin "${pluginLookup}" is not doing this, so will not work ` +
- 'with stylelint v3+. Please file an issue with the plugin.',
- );
- }
-
- if (!pluginRuleDefinition.ruleName.includes('/')) {
- throw configurationError(
- 'stylelint v7+ requires plugin rules to be namespaced, ' +
- 'i.e. only `plugin-namespace/plugin-rule-name` plugin rule names are supported. ' +
- `The plugin rule "${pluginRuleDefinition.ruleName}" does not do this, so will not work. ` +
- 'Please file an issue with the plugin.',
- );
- }
-
- result[pluginRuleDefinition.ruleName] = pluginRuleDefinition.rule;
- });
-
- return result;
- },
- /** @type {{[k: string]: Function}} */ ({}),
- );
-
- config.pluginFunctions = pluginFunctions;
-
- return config;
-}
-
-/**
- * @param {StylelintConfig} config
- * @return {StylelintConfig}
- */
-function normalizeAllRuleSettings(config) {
- /** @type {StylelintConfigRules} */
- const normalizedRules = {};
-
- if (!config.rules) return config;
-
- Object.keys(config.rules).forEach((ruleName) => {
- const rawRuleSettings = _.get(config, ['rules', ruleName]);
-
- const rule = requireRule(ruleName) || _.get(config, ['pluginFunctions', ruleName]);
-
- if (!rule) {
- normalizedRules[ruleName] = [];
- } else {
- normalizedRules[ruleName] = normalizeRuleSettings(
- rawRuleSettings,
- ruleName,
- _.get(rule, 'primaryOptionArray'),
- );
- }
- });
-
- config.rules = normalizedRules;
-
- return config;
-}
-
-/**
- * Given an array of processors strings, we want to add two
- * properties to the augmented config:
- * - codeProcessors: functions that will run on code as it comes in
- * - resultProcessors: functions that will run on results as they go out
- *
- * To create these properties, we need to:
- * - Find the processor module
- * - Initialize the processor module by calling its functions with any
- * provided options
- * - Push the processor's code and result processors to their respective arrays
- * @type {Map<string, string | Object>}
- */
-const processorCache = new Map();
-
-/**
- * @param {StylelintConfig} config
- * @return {StylelintConfig}
- */
-function addProcessorFunctions(config) {
- if (!config.processors) return config;
-
- /** @type {Array<Function>} */
- const codeProcessors = [];
- /** @type {Array<Function>} */
- const resultProcessors = [];
-
- /** @type {Array<StylelintConfigProcessors>} */ ([])
- .concat(config.processors)
- .forEach((processorConfig) => {
- const processorKey = JSON.stringify(processorConfig);
-
- let initializedProcessor;
-
- if (processorCache.has(processorKey)) {
- initializedProcessor = processorCache.get(processorKey);
- } else {
- processorConfig = /** @type {Array<string | Object>} */ ([]).concat(processorConfig);
- const processorLookup = /** @type {[string, Object]} */ (processorConfig)[0];
- const processorOptions = /** @type {[string, Object]} */ (processorConfig)[1];
- let processor = dynamicRequire(processorLookup);
-
- processor = processor.default || processor;
- initializedProcessor = processor(processorOptions);
- processorCache.set(processorKey, initializedProcessor);
- }
-
- if (initializedProcessor && initializedProcessor.code) {
- codeProcessors.push(initializedProcessor.code);
- }
-
- if (initializedProcessor && initializedProcessor.result) {
- resultProcessors.push(initializedProcessor.result);
- }
- });
-
- config.codeProcessors = codeProcessors;
- config.resultProcessors = resultProcessors;
-
- return config;
-}
-
-module.exports = { augmentConfigExtended, augmentConfigFull };
diff --git a/assets/node_modules/stylelint/lib/cli.js b/assets/node_modules/stylelint/lib/cli.js
deleted file mode 100644
index 20b8f4a..0000000
--- a/assets/node_modules/stylelint/lib/cli.js
+++ /dev/null
@@ -1,545 +0,0 @@
-'use strict';
-
-const chalk = require('chalk');
-const checkInvalidCLIOptions = require('./utils/checkInvalidCLIOptions');
-const disableOptionsReportStringFormatter = require('./formatters/disableOptionsReportStringFormatter');
-const dynamicRequire = require('./dynamicRequire');
-const EOL = require('os').EOL;
-const getFormatterOptionsText = require('./utils/getFormatterOptionsText');
-const getModulePath = require('./utils/getModulePath');
-const getStdin = require('get-stdin');
-const meow = require('meow');
-const path = require('path');
-const printConfig = require('./printConfig');
-const resolveFrom = require('resolve-from');
-const standalone = require('./standalone');
-const writeOutputFile = require('./writeOutputFile');
-
-const EXIT_CODE_ERROR = 2;
-
-/**
- * @typedef {object} CLIFlags
- * @property {boolean} [cache]
- * @property {string} [cacheLocation]
- * @property {string | false} config
- * @property {string} [configBasedir]
- * @property {string} [customSyntax]
- * @property {string} [printConfig]
- * @property {string} [color]
- * @property {string} [customFormatter]
- * @property {boolean} [disableDefaultIgnores]
- * @property {boolean} [fix]
- * @property {string} [formatter="string"]
- * @property {string} [help]
- * @property {boolean} [ignoreDisables]
- * @property {string} [ignorePath]
- * @property {string} [ignorePattern]
- * @property {string} [noColor]
- * @property {string} [outputFile]
- * @property {string} [stdinFilename]
- * @property {boolean} [reportNeedlessDisables]
- * @property {boolean} [reportInvalidScopeDisables]
- * @property {number} [maxWarnings]
- * @property {string | boolean} quiet
- * @property {string} [syntax]
- * @property {string} [version]
- * @property {boolean} [allowEmptyInput]
- */
-
-/**
- * @typedef {object} CLIOptions
- * @property {any} input
- * @property {any} help
- * @property {any} pkg
- * @property {Function} showHelp
- * @property {Function} showVersion
- * @property {CLIFlags} flags
- */
-
-/**
- * @typedef {object} OptionBaseType
- * @property {any} formatter
- * @property {boolean} [cache]
- * @property {string} [configFile]
- * @property {string} [cacheLocation]
- * @property {string} [customSyntax]
- * @property {string} [codeFilename]
- * @property {string} [configBasedir]
- * @property {{ quiet?: any }} configOverrides
- * @property {any} [printConfig]
- * @property {any} [printConfig]
- * @property {boolean} [fix]
- * @property {boolean} [ignoreDisables]
- * @property {any} [ignorePath]
- * @property {string} [outputFile]
- * @property {boolean} [reportNeedlessDisables]
- * @property {boolean} [reportInvalidScopeDisables]
- * @property {boolean} [disableDefaultIgnores]
- * @property {number} [maxWarnings]
- * @property {string} [syntax]
- * @property {any} [ignorePattern]
- * @property {boolean} [allowEmptyInput]
- * @property {string} [files]
- * @property {string} [code]
- */
-
-const meowOptions = {
- autoHelp: false,
- autoVersion: false,
- help: `
- Usage: stylelint [input] [options]
-
- Input: Files(s), glob(s), or nothing to use stdin.
-
- If an input argument is wrapped in quotation marks, it will be passed to
- globby for cross-platform glob support. node_modules are always ignored.
- You can also pass no input and use stdin, instead.
-
- Options:
-
- --config
-
- Path to a specific configuration file (JSON, YAML, or CommonJS), or the
- name of a module in node_modules that points to one. If no --config
- argument is provided, stylelint will search for configuration files in
- the following places, in this order:
- - a stylelint property in package.json
- - a .stylelintrc file (with or without filename extension:
- .json, .yaml, .yml, and .js are available)
- - a stylelint.config.js file exporting a JS object
- The search will begin in the working directory and move up the directory
- tree until a configuration file is found.
-
- --config-basedir
-
- An absolute path to the directory that relative paths defining "extends"
- and "plugins" are *relative to*. Only necessary if these values are
- relative paths.
-
- --print-config
-
- Print the configuration for the given path.
-
- --ignore-path, -i
-
- Path to a file containing patterns that describe files to ignore. The
- path can be absolute or relative to process.cwd(). By default, stylelint
- looks for .stylelintignore in process.cwd().
-
- --ignore-pattern, --ip
-
- Pattern of files to ignore (in addition to those in .stylelintignore)
-
- --syntax, -s
-
- Specify a syntax. Options: "css", "css-in-js", "html", "less",
- "markdown", "sass", "scss", "sugarss". If you do not specify a syntax,
- syntaxes will be automatically inferred by the file extensions
- and file content.
-
- --fix
-
- Automatically fix violations of certain rules.
-
- --custom-syntax
-
- Module name or path to a JS file exporting a PostCSS-compatible syntax.
-
- --stdin-filename
-
- A filename to assign stdin input.
-
- --ignore-disables, --id
-
- Ignore styleline-disable comments.
-
- --disable-default-ignores, --di
-
- Allow linting of node_modules.
-
- --cache [default: false]
-
- Store the info about processed files in order to only operate on the
- changed ones the next time you run stylelint. By default, the cache
- is stored in "./.stylelintcache". To adjust this, use --cache-location.
-
- --cache-location [default: '.stylelintcache']
-
- Path to a file or directory to be used for the cache location.
- Default is "./.stylelintcache". If a directory is specified, a cache
- file will be created inside the specified folder, with a name derived
- from a hash of the current working directory.
-
- If the directory for the cache does not exist, make sure you add a trailing "/"
- on *nix systems or "\\" on Windows. Otherwise the path will be assumed to be a file.
-
- --formatter, -f [default: "string"]
-
- The output formatter: ${getFormatterOptionsText({ useOr: true })}.
-
- --custom-formatter
-
- Path to a JS file exporting a custom formatting function.
-
- --quiet, -q
-
- Only register violations for rules with an "error"-level severity (ignore
- "warning"-level).
-
- --color
- --no-color
-
- Force enabling/disabling of color.
-
- --report-needless-disables, --rd
-
- Also report errors for stylelint-disable comments that are not blocking a lint warning.
- The process will exit with code ${EXIT_CODE_ERROR} if needless disables are found.
-
- --report-invalid-scope-disables, --risd
-
- Report stylelint-disable comments that used for rules that don't exist within the configuration object.
- The process will exit with code ${EXIT_CODE_ERROR} if invalid scope disables are found.
-
- --max-warnings, --mw
-
- Number of warnings above which the process will exit with code ${EXIT_CODE_ERROR}.
- Useful when setting "defaultSeverity" to "warning" and expecting the
- process to fail on warnings (e.g. CI build).
-
- --output-file, -o
-
- Path of file to write report.
-
- --version, -v
-
- Show the currently installed version of stylelint.
-
- --allow-empty-input, --aei
-
- When glob pattern matches no files, the process will exit without throwing an error.
- `,
- flags: {
- allowEmptyInput: {
- alias: 'aei',
- type: 'boolean',
- },
- cache: {
- type: 'boolean',
- },
- cacheLocation: {
- type: 'string',
- },
- color: {
- type: 'boolean',
- },
- config: {
- type: 'string',
- },
- configBasedir: {
- type: 'string',
- },
- customFormatter: {
- type: 'string',
- },
- customSyntax: {
- type: 'string',
- },
- disableDefaultIgnores: {
- alias: 'di',
- type: 'boolean',
- },
- fix: {
- type: 'boolean',
- },
- formatter: {
- alias: 'f',
- default: 'string',
- type: 'string',
- },
- help: {
- alias: 'h',
- type: 'boolean',
- },
- ignoreDisables: {
- alias: 'id',
- type: 'boolean',
- },
- ignorePath: {
- alias: 'i',
- type: 'string',
- },
- ignorePattern: {
- alias: 'ip',
- type: 'string',
- },
- maxWarnings: {
- alias: 'mw',
- type: 'number',
- },
- outputFile: {
- alias: 'o',
- type: 'string',
- },
- printConfig: {
- type: 'boolean',
- },
- quiet: {
- alias: 'q',
- type: 'boolean',
- },
- reportInvalidScopeDisables: {
- alias: 'risd',
- type: 'boolean',
- },
- reportNeedlessDisables: {
- alias: 'rd',
- type: 'boolean',
- },
- stdinFilename: {
- type: 'string',
- },
- syntax: {
- alias: 's',
- type: 'string',
- },
- version: {
- alias: 'v',
- type: 'boolean',
- },
- },
- pkg: require('../package.json'),
- argv: /** @type {string[]} */ ([]),
-};
-
-/**
- * @param {string[]} argv
- * @returns {Promise<any>}
- */
-module.exports = (argv) => {
- const cli = buildCLI(argv);
-
- const invalidOptionsMessage = checkInvalidCLIOptions(meowOptions.flags, cli.flags);
-
- if (invalidOptionsMessage) {
- process.stderr.write(invalidOptionsMessage);
- process.exit(EXIT_CODE_ERROR); // eslint-disable-line no-process-exit
- }
-
- let formatter = cli.flags.formatter;
-
- if (cli.flags.customFormatter) {
- const customFormatter = path.isAbsolute(cli.flags.customFormatter)
- ? cli.flags.customFormatter
- : path.join(process.cwd(), cli.flags.customFormatter);
-
- formatter = dynamicRequire(customFormatter);
- }
-
- /** @type {OptionBaseType} */
- const optionsBase = {
- formatter,
- configOverrides: {},
- };
-
- if (cli.flags.quiet) {
- optionsBase.configOverrides.quiet = cli.flags.quiet;
- }
-
- if (cli.flags.syntax) {
- optionsBase.syntax = cli.flags.syntax;
- }
-
- if (cli.flags.customSyntax) {
- optionsBase.customSyntax = getModulePath(process.cwd(), cli.flags.customSyntax);
- }
-
- if (cli.flags.config) {
- // Should check these possibilities:
- // a. name of a node_module
- // b. absolute path
- // c. relative path relative to `process.cwd()`.
- // If none of the above work, we'll try a relative path starting
- // in `process.cwd()`.
- optionsBase.configFile =
- resolveFrom.silent(process.cwd(), cli.flags.config) ||
- path.join(process.cwd(), cli.flags.config);
- }
-
- if (cli.flags.configBasedir) {
- optionsBase.configBasedir = path.isAbsolute(cli.flags.configBasedir)
- ? cli.flags.configBasedir
- : path.resolve(process.cwd(), cli.flags.configBasedir);
- }
-
- if (cli.flags.stdinFilename) {
- optionsBase.codeFilename = cli.flags.stdinFilename;
- }
-
- if (cli.flags.ignorePath) {
- optionsBase.ignorePath = cli.flags.ignorePath;
- }
-
- if (cli.flags.ignorePattern) {
- optionsBase.ignorePattern = cli.flags.ignorePattern;
- }
-
- if (cli.flags.ignoreDisables) {
- optionsBase.ignoreDisables = cli.flags.ignoreDisables;
- }
-
- if (cli.flags.disableDefaultIgnores) {
- optionsBase.disableDefaultIgnores = cli.flags.disableDefaultIgnores;
- }
-
- if (cli.flags.cache) {
- optionsBase.cache = true;
- }
-
- if (cli.flags.cacheLocation) {
- optionsBase.cacheLocation = cli.flags.cacheLocation;
- }
-
- if (cli.flags.fix) {
- optionsBase.fix = cli.flags.fix;
- }
-
- if (cli.flags.outputFile) {
- optionsBase.outputFile = cli.flags.outputFile;
- }
-
- const reportNeedlessDisables = cli.flags.reportNeedlessDisables;
- const reportInvalidScopeDisables = cli.flags.reportInvalidScopeDisables;
-
- if (reportNeedlessDisables) {
- optionsBase.reportNeedlessDisables = reportNeedlessDisables;
- }
-
- if (reportInvalidScopeDisables) {
- optionsBase.reportInvalidScopeDisables = reportInvalidScopeDisables;
- }
-
- const maxWarnings = cli.flags.maxWarnings;
-
- if (maxWarnings !== undefined) {
- optionsBase.maxWarnings = maxWarnings;
- }
-
- if (cli.flags.help) {
- cli.showHelp(0);
-
- return Promise.resolve();
- }
-
- if (cli.flags.version) {
- cli.showVersion();
-
- return Promise.resolve();
- }
-
- if (cli.flags.allowEmptyInput) {
- optionsBase.allowEmptyInput = cli.flags.allowEmptyInput;
- }
-
- return Promise.resolve()
- .then(
- /**
- * @returns {Promise<OptionBaseType>}
- */
- () => {
- // Add input/code into options
- if (cli.input.length) {
- return Promise.resolve({ ...optionsBase, files: /** @type {string} */ (cli.input) });
- }
-
- return getStdin().then((stdin) => ({ ...optionsBase, code: stdin }));
- },
- )
- .then((options) => {
- if (cli.flags.printConfig) {
- return printConfig(options)
- .then((config) => {
- process.stdout.write(JSON.stringify(config, null, ' '));
- })
- .catch(handleError);
- }
-
- if (!options.files && !options.code) {
- cli.showHelp();
-
- return;
- }
-
- return standalone(options)
- .then((linted) => {
- const reports = [];
-
- if (reportNeedlessDisables) {
- const report = disableOptionsReportStringFormatter(linted.needlessDisables || []);
-
- if (report) {
- reports.push(report);
- }
- }
-
- if (reportInvalidScopeDisables) {
- const report = disableOptionsReportStringFormatter(linted.invalidScopeDisables || []);
-
- if (report) {
- reports.push(report);
- }
- }
-
- if (reports.length > 0) {
- reports.forEach((report) => process.stdout.write(report));
- process.exitCode = EXIT_CODE_ERROR;
- }
-
- if (!linted.output) {
- return;
- }
-
- process.stdout.write(linted.output);
-
- if (options.outputFile) {
- writeOutputFile(linted.output, options.outputFile).catch(handleError);
- }
-
- if (linted.errored) {
- process.exitCode = EXIT_CODE_ERROR;
- } else if (maxWarnings !== undefined && linted.maxWarningsExceeded) {
- const foundWarnings = linted.maxWarningsExceeded.foundWarnings;
-
- process.stdout.write(
- `${chalk.red(`Max warnings exceeded: `)}${foundWarnings} found. ${chalk.dim(
- `${maxWarnings} allowed${EOL}${EOL}`,
- )}`,
- );
- process.exitCode = EXIT_CODE_ERROR;
- }
- })
- .catch(handleError);
- });
-};
-
-/**
- * @param {{ stack: any, code: any }} err
- * @returns {void}
- */
-function handleError(err) {
- console.log(err.stack); // eslint-disable-line no-console
- const exitCode = typeof err.code === 'number' ? err.code : 1;
-
- process.exit(exitCode); // eslint-disable-line no-process-exit
-}
-
-/**
- * @param {string[]} argv
- * @returns {CLIOptions}
- */
-function buildCLI(argv) {
- // @ts-ignore TODO TYPES
- return meow({ ...meowOptions, argv });
-}
-
-module.exports.buildCLI = buildCLI;
diff --git a/assets/node_modules/stylelint/lib/createPlugin.js b/assets/node_modules/stylelint/lib/createPlugin.js
deleted file mode 100644
index f1b82c4..0000000
--- a/assets/node_modules/stylelint/lib/createPlugin.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict';
-
-/**
- * @param {string} ruleName
- * @param {Function} rule
- * @returns {{ruleName: string, rule: Function}}
- */
-module.exports = function(ruleName, rule) {
- return {
- ruleName,
- rule,
- };
-};
diff --git a/assets/node_modules/stylelint/lib/createStylelint.js b/assets/node_modules/stylelint/lib/createStylelint.js
deleted file mode 100644
index 4396a5c..0000000
--- a/assets/node_modules/stylelint/lib/createStylelint.js
+++ /dev/null
@@ -1,70 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const augmentConfig = require('./augmentConfig');
-const createStylelintResult = require('./createStylelintResult');
-const getConfigForFile = require('./getConfigForFile');
-const getPostcssResult = require('./getPostcssResult');
-const isPathIgnored = require('./isPathIgnored');
-const lintSource = require('./lintSource');
-const path = require('path');
-const { cosmiconfig } = require('cosmiconfig');
-
-const IS_TEST = process.env.NODE_ENV === 'test';
-const STOP_DIR = IS_TEST ? path.resolve(__dirname, '..') : undefined;
-
-/** @typedef {import('stylelint').StylelintInternalApi} StylelintInternalApi */
-
-/**
- * The stylelint "internal API" is passed among functions
- * so that methods on a stylelint instance can invoke
- * each other while sharing options and caches
- * @param {import('stylelint').StylelintStandaloneOptions} options
- * @returns {StylelintInternalApi}
- */
-module.exports = function(options = {}) {
- /** @type {Partial<StylelintInternalApi>} */
- const stylelint = { _options: options };
-
- // Two separate explorers so they can each have their own transform
- // function whose results are cached by cosmiconfig
- // @ts-ignore TODO TYPES found out which cosmiconfig types are valid
- stylelint._fullExplorer = cosmiconfig('stylelint', {
- transform: _.partial(
- augmentConfig.augmentConfigFull,
- /** @type{StylelintInternalApi} */ (stylelint),
- ),
- stopDir: STOP_DIR,
- });
- // @ts-ignore TODO TYPES found out which cosmiconfig types are valid
- stylelint._extendExplorer = cosmiconfig(null, {
- transform: _.partial(
- augmentConfig.augmentConfigExtended,
- /** @type{StylelintInternalApi} */ (stylelint),
- ),
- stopDir: STOP_DIR,
- });
-
- stylelint._specifiedConfigCache = new Map();
- stylelint._postcssResultCache = new Map();
- stylelint._createStylelintResult = _.partial(
- createStylelintResult,
- /** @type{StylelintInternalApi} */ (stylelint),
- );
- stylelint._getPostcssResult = _.partial(
- getPostcssResult,
- /** @type{StylelintInternalApi} */ (stylelint),
- );
- stylelint._lintSource = _.partial(lintSource, /** @type{StylelintInternalApi} */ (stylelint));
-
- stylelint.getConfigForFile = _.partial(
- getConfigForFile,
- /** @type{StylelintInternalApi} */ (stylelint),
- );
- stylelint.isPathIgnored = _.partial(
- isPathIgnored,
- /** @type{StylelintInternalApi} */ (stylelint),
- );
-
- return /** @type{StylelintInternalApi} */ (stylelint);
-};
diff --git a/assets/node_modules/stylelint/lib/createStylelintResult.js b/assets/node_modules/stylelint/lib/createStylelintResult.js
deleted file mode 100644
index 2f94fef..0000000
--- a/assets/node_modules/stylelint/lib/createStylelintResult.js
+++ /dev/null
@@ -1,120 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-
-/** @typedef {import('stylelint').PostcssResult} PostcssResult */
-/** @typedef {import('postcss').NodeSource} NodeSource */
-/** @typedef {import('stylelint').StylelintResult} StylelintResult */
-
-/**
- * @param {import('stylelint').StylelintInternalApi} stylelint
- * @param {PostcssResult} [postcssResult]
- * @param {string} [filePath]
- * @param {import('stylelint').StylelintCssSyntaxError} [cssSyntaxError]
- * @return {Promise<StylelintResult>}
- */
-module.exports = function(stylelint, postcssResult, filePath, cssSyntaxError) {
- /** @type {StylelintResult} */
- let stylelintResult;
- /** @type {string | undefined} */
- let source;
-
- if (postcssResult && postcssResult.root) {
- source = !postcssResult.root.source
- ? undefined
- : postcssResult.root.source.input.file || postcssResult.root.source.input.id;
-
- // Strip out deprecation warnings from the messages
- const deprecationMessages = _.remove(postcssResult.messages, {
- stylelintType: 'deprecation',
- });
- const deprecations = deprecationMessages.map((deprecationMessage) => {
- return {
- text: deprecationMessage.text,
- reference: deprecationMessage.stylelintReference,
- };
- });
-
- // Also strip out invalid options
- const invalidOptionMessages = _.remove(postcssResult.messages, {
- stylelintType: 'invalidOption',
- });
- const invalidOptionWarnings = invalidOptionMessages.map((invalidOptionMessage) => {
- return {
- text: invalidOptionMessage.text,
- };
- });
-
- const parseErrors = _.remove(postcssResult.messages, {
- stylelintType: 'parseError',
- });
-
- // This defines the stylelint result object that formatters receive
- stylelintResult = {
- source,
- deprecations,
- invalidOptionWarnings,
- // TODO TYPES check which types are valid? postcss? stylelint?
- /* eslint-disable-next-line */
- parseErrors: /** @type {any} */ (parseErrors),
- errored: postcssResult.stylelint.stylelintError,
- warnings: postcssResult.messages.map((message) => {
- return {
- line: message.line,
- column: message.column,
- rule: message.rule,
- severity: message.severity,
- text: message.text,
- };
- }),
- ignored: postcssResult.stylelint.ignored,
- _postcssResult: postcssResult,
- };
- } else if (cssSyntaxError) {
- if (cssSyntaxError.name !== 'CssSyntaxError') {
- throw cssSyntaxError;
- }
-
- stylelintResult = {
- source: cssSyntaxError.file || '<input css 1>',
- deprecations: [],
- invalidOptionWarnings: [],
- parseErrors: [],
- errored: true,
- warnings: [
- {
- line: cssSyntaxError.line,
- column: cssSyntaxError.column,
- rule: cssSyntaxError.name,
- severity: 'error',
- text: `${cssSyntaxError.reason} (${cssSyntaxError.name})`,
- },
- ],
- };
- } else {
- throw new Error(
- 'createStylelintResult must be called with either postcssResult or CssSyntaxError',
- );
- }
-
- return stylelint.getConfigForFile(filePath).then((configForFile) => {
- // TODO TYPES handle possible null here
- const config =
- /** @type {{ config: import('stylelint').StylelintConfig, filepath: string }} */ (configForFile).config;
- const file = source || (cssSyntaxError && cssSyntaxError.file);
-
- if (config.resultProcessors) {
- config.resultProcessors.forEach((resultProcessor) => {
- // Result processors might just mutate the result object,
- // or might return a new one
- const returned = resultProcessor(stylelintResult, file);
-
- if (returned) {
- stylelintResult = returned;
- }
- });
- }
-
- return stylelintResult;
- });
-};
diff --git a/assets/node_modules/stylelint/lib/dynamicRequire.js b/assets/node_modules/stylelint/lib/dynamicRequire.js
deleted file mode 100644
index d0926f7..0000000
--- a/assets/node_modules/stylelint/lib/dynamicRequire.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict';
-// This file exists to remove the need for Flow's ignore_non_literal_requires option
-
-/**
- * @param {string} name
- * @return {any} any module
- */
-module.exports = function(name) {
- return require(name);
-};
diff --git a/assets/node_modules/stylelint/lib/formatters/compactFormatter.js b/assets/node_modules/stylelint/lib/formatters/compactFormatter.js
deleted file mode 100644
index 8454a40..0000000
--- a/assets/node_modules/stylelint/lib/formatters/compactFormatter.js
+++ /dev/null
@@ -1,21 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-
-/**
- * @param {import('stylelint').StylelintResult[]} results
- * @returns {string}
- */
-const formatter = (results) =>
- _.flatMap(results, (result) =>
- result.warnings.map(
- (warning) =>
- `${result.source}: ` +
- `line ${warning.line}, ` +
- `col ${warning.column}, ` +
- `${warning.severity} - ` +
- `${warning.text}`,
- ),
- ).join('\n');
-
-module.exports = formatter;
diff --git a/assets/node_modules/stylelint/lib/formatters/disableOptionsReportStringFormatter.js b/assets/node_modules/stylelint/lib/formatters/disableOptionsReportStringFormatter.js
deleted file mode 100644
index 8e3f9a9..0000000
--- a/assets/node_modules/stylelint/lib/formatters/disableOptionsReportStringFormatter.js
+++ /dev/null
@@ -1,49 +0,0 @@
-'use strict';
-
-const chalk = require('chalk');
-const path = require('path');
-
-/**
- * @param {string} fromValue
- * @return {string}
- */
-function logFrom(fromValue) {
- if (fromValue.startsWith('<')) return fromValue;
-
- return path
- .relative(process.cwd(), fromValue)
- .split(path.sep)
- .join('/');
-}
-
-/**
- * @param {import('stylelint').StylelintDisableOptionsReport} report
- * @returns {string}
- */
-module.exports = function(report) {
- if (!report) return '';
-
- let output = '';
-
- report.forEach((sourceReport) => {
- if (!sourceReport.ranges || sourceReport.ranges.length === 0) {
- return;
- }
-
- output += '\n';
- // eslint-disable-next-line prefer-template
- output += chalk.underline(logFrom(sourceReport.source || '')) + '\n';
-
- sourceReport.ranges.forEach((range) => {
- output += `unused rule: ${range.unusedRule}, start line: ${range.start}`;
-
- if (range.end !== undefined) {
- output += `, end line: ${range.end}`;
- }
-
- output += '\n';
- });
- });
-
- return output;
-};
diff --git a/assets/node_modules/stylelint/lib/formatters/index.js b/assets/node_modules/stylelint/lib/formatters/index.js
deleted file mode 100644
index 59c2aac..0000000
--- a/assets/node_modules/stylelint/lib/formatters/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-
-const importLazy = require('import-lazy')(require);
-
-module.exports = {
- compact: require('./compactFormatter'),
- json: require('./jsonFormatter'),
- string: importLazy('./stringFormatter'),
- unix: require('./unixFormatter'),
- verbose: importLazy('./verboseFormatter'),
-};
diff --git a/assets/node_modules/stylelint/lib/formatters/jsonFormatter.js b/assets/node_modules/stylelint/lib/formatters/jsonFormatter.js
deleted file mode 100644
index 427e540..0000000
--- a/assets/node_modules/stylelint/lib/formatters/jsonFormatter.js
+++ /dev/null
@@ -1,21 +0,0 @@
-'use strict';
-
-/**
- * Omit any properties starting with `_`, which are fake-private
- *
- * @param {import('stylelint').StylelintResult[]} results
- * @returns {string}
- */
-module.exports = function jsonFormatter(results) {
- const cleanedResults = results.map((result) =>
- Object.entries(result)
- .filter(([key]) => !key.startsWith('_'))
- .reduce((/** @type {object} */ obj, [key, value]) => {
- obj[key] = value;
-
- return obj;
- }, {}),
- );
-
- return JSON.stringify(cleanedResults);
-};
diff --git a/assets/node_modules/stylelint/lib/formatters/stringFormatter.js b/assets/node_modules/stylelint/lib/formatters/stringFormatter.js
deleted file mode 100644
index e4d9030..0000000
--- a/assets/node_modules/stylelint/lib/formatters/stringFormatter.js
+++ /dev/null
@@ -1,234 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const chalk = require('chalk');
-const path = require('path');
-const stringWidth = require('string-width');
-const symbols = require('log-symbols');
-const utils = require('postcss-reporter/lib/util');
-/** @type {import('table')} */
-let table;
-
-const MARGIN_WIDTHS = 9;
-
-const levelColors = {
- info: 'blue',
- warning: 'yellow',
- error: 'red',
- success: undefined,
-};
-
-/**
- * @param {import('stylelint').StylelintResult[]} results
- * @returns {string}
- */
-function deprecationsFormatter(results) {
- const allDeprecationWarnings = _.flatMap(results, 'deprecations');
- const uniqueDeprecationWarnings = _.uniqBy(allDeprecationWarnings, 'text');
-
- if (!uniqueDeprecationWarnings || !uniqueDeprecationWarnings.length) {
- return '';
- }
-
- return uniqueDeprecationWarnings.reduce((output, warning) => {
- output += chalk.yellow('Deprecation Warning: ');
- output += warning.text;
-
- if (warning.reference) {
- output += chalk.dim(' See: ');
- output += chalk.dim.underline(warning.reference);
- }
-
- return `${output}\n`;
- }, '\n');
-}
-
-/**
- * @param {import('stylelint').StylelintResult[]} results
- * @return {string}
- */
-function invalidOptionsFormatter(results) {
- const allInvalidOptionWarnings = _.flatMap(results, (r) =>
- r.invalidOptionWarnings.map((w) => w.text),
- );
- const uniqueInvalidOptionWarnings = [...new Set(allInvalidOptionWarnings)];
-
- return uniqueInvalidOptionWarnings.reduce((output, warning) => {
- output += chalk.red('Invalid Option: ');
- output += warning;
-
- return `${output}\n`;
- }, '\n');
-}
-
-/**
- * @param {string} fromValue
- * @return {string}
- */
-function logFrom(fromValue) {
- if (fromValue.startsWith('<')) return fromValue;
-
- return path
- .relative(process.cwd(), fromValue)
- .split(path.sep)
- .join('/');
-}
-
-/**
- * @param {{[k: number]: number}} columnWidths
- * @return {number}
- */
-function getMessageWidth(columnWidths) {
- if (!process.stdout.isTTY) {
- return columnWidths[3];
- }
-
- const availableWidth = process.stdout.columns < 80 ? 80 : process.stdout.columns;
- const fullWidth = Object.values(columnWidths).reduce((a, b) => a + b);
-
- // If there is no reason to wrap the text, we won't align the last column to the right
- if (availableWidth > fullWidth + MARGIN_WIDTHS) {
- return columnWidths[3];
- }
-
- return availableWidth - (fullWidth - columnWidths[3] + MARGIN_WIDTHS);
-}
-
-/**
- * @param {import('stylelint').StylelintWarning[]} messages
- * @param {string} source
- * @return {string}
- */
-function formatter(messages, source) {
- if (!messages.length) return '';
-
- const orderedMessages = _.sortBy(
- messages,
- (m) => (m.line ? 2 : 1), // positionless first
- (m) => m.line,
- (m) => m.column,
- );
-
- /**
- * Create a list of column widths, needed to calculate
- * the size of the message column and if needed wrap it.
- * @type {{[k: string]: number}}
- */
- const columnWidths = { 0: 1, 1: 1, 2: 1, 3: 1, 4: 1 };
-
- /**
- * @param {[string, string, string, string, string]} columns
- * @return {[string, string, string, string, string]}
- */
- function calculateWidths(columns) {
- for (const [key, value] of Object.entries(columns)) {
- const normalisedValue = value ? value.toString() : value;
-
- columnWidths[key] = Math.max(columnWidths[key], stringWidth(normalisedValue));
- }
-
- return columns;
- }
-
- let output = '\n';
-
- if (source) {
- output += `${chalk.underline(logFrom(source))}\n`;
- }
-
- const cleanedMessages = orderedMessages.map((message) => {
- const location = utils.getLocation(message);
- const severity = /** @type {keyof import('log-symbols')} */ (message.severity);
- /**
- * @type {[string, string, string, string, string]}
- */
- const row = [
- location.line ? location.line.toString() : '',
- location.column ? location.column.toString() : '',
- symbols[severity]
- ? chalk[/** @type {'blue' | 'red' | 'yellow'} */ (levelColors[severity])](symbols[severity])
- : severity,
- message.text
- // Remove all control characters (newline, tab and etc)
- .replace(/[\x01-\x1A]+/g, ' ') // eslint-disable-line no-control-regex
- .replace(/\.$/, '')
- // eslint-disable-next-line prefer-template
- .replace(new RegExp(_.escapeRegExp('(' + message.rule + ')') + '$'), ''),
- chalk.dim(message.rule || ''),
- ];
-
- calculateWidths(row);
-
- return row;
- });
-
- if (!table) {
- table = require('table');
- }
-
- output += table
- .table(cleanedMessages, {
- border: table.getBorderCharacters('void'),
- columns: {
- 0: { alignment: 'right', width: columnWidths[0], paddingRight: 0 },
- 1: { alignment: 'left', width: columnWidths[1] },
- 2: { alignment: 'center', width: columnWidths[2] },
- 3: {
- alignment: 'left',
- width: getMessageWidth(columnWidths),
- wrapWord: getMessageWidth(columnWidths) > 1,
- },
- 4: { alignment: 'left', width: columnWidths[4], paddingRight: 0 },
- },
- drawHorizontalLine: () => false,
- })
- .split('\n')
- .map(
- /**
- * @param {string} el
- * @returns {string}
- */
- (el) => el.replace(/(\d+)\s+(\d+)/, (m, p1, p2) => chalk.dim(`${p1}:${p2}`)),
- )
- .join('\n');
-
- return output;
-}
-
-/**
- * @param {import('stylelint').StylelintResult[]} results
- * @returns {string}
- */
-module.exports = function(results) {
- let output = invalidOptionsFormatter(results);
-
- output += deprecationsFormatter(results);
-
- output = results.reduce((output, result) => {
- // Treat parseErrors as warnings
- if (result.parseErrors) {
- result.parseErrors.forEach((error) =>
- result.warnings.push({
- line: error.line,
- column: error.column,
- rule: error.stylelintType,
- severity: 'error',
- text: `${error.text} (${error.stylelintType})`,
- }),
- );
- }
-
- output += formatter(result.warnings, result.source || '');
-
- return output;
- }, output);
-
- // Ensure consistent padding
- output = output.trim();
-
- if (output !== '') {
- output = `\n${output}\n\n`;
- }
-
- return output;
-};
diff --git a/assets/node_modules/stylelint/lib/formatters/unixFormatter.js b/assets/node_modules/stylelint/lib/formatters/unixFormatter.js
deleted file mode 100644
index cff9f3a..0000000
--- a/assets/node_modules/stylelint/lib/formatters/unixFormatter.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-
-/**
- * @param {import('stylelint').StylelintResult[]} results
- * @returns {string}
- */
-const unixFormatter = (results) => {
- const lines = _.flatMap(results, (result) =>
- result.warnings.map(
- (warning) =>
- `${result.source}:${warning.line}:${warning.column}: ` +
- `${warning.text} [${warning.severity}]\n`,
- ),
- );
- const total = lines.length;
- let output = lines.join('');
-
- if (total > 0) {
- output += `\n${total} problem${total !== 1 ? 's' : ''}\n`;
- }
-
- return output;
-};
-
-module.exports = unixFormatter;
diff --git a/assets/node_modules/stylelint/lib/formatters/verboseFormatter.js b/assets/node_modules/stylelint/lib/formatters/verboseFormatter.js
deleted file mode 100644
index c2914a4..0000000
--- a/assets/node_modules/stylelint/lib/formatters/verboseFormatter.js
+++ /dev/null
@@ -1,62 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const chalk = require('chalk');
-const stringFormatter = require('./stringFormatter');
-
-/**
- * @param {import('stylelint').StylelintResult[]} results
- * @returns {string}
- */
-module.exports = function(results) {
- let output = stringFormatter(results);
-
- if (output === '') {
- output = '\n';
- }
-
- const sourceWord = results.length > 1 ? 'sources' : 'source';
- const ignoredCount = results.filter((result) => result.ignored).length;
- const checkedDisplay = ignoredCount
- ? `${results.length - ignoredCount} of ${results.length}`
- : results.length;
-
- output += chalk.underline(`${checkedDisplay} ${sourceWord} checked\n`);
- results.forEach((result) => {
- let formatting = 'green';
-
- if (result.errored) {
- formatting = 'red';
- } else if (result.warnings.length) {
- formatting = 'yellow';
- } else if (result.ignored) {
- formatting = 'dim';
- }
-
- let sourceText = `${result.source}`;
-
- if (result.ignored) {
- sourceText += ' (ignored)';
- }
-
- output += _.get(chalk, formatting)(` ${sourceText}\n`);
- });
-
- const warnings = _.flatten(results.map((r) => r.warnings));
- const warningsBySeverity = _.groupBy(warnings, 'severity');
- const problemWord = warnings.length === 1 ? 'problem' : 'problems';
-
- output += chalk.underline(`\n${warnings.length} ${problemWord} found\n`);
-
- for (const [severityLevel, warningList] of Object.entries(warningsBySeverity)) {
- const warningsByRule = _.groupBy(warningList, 'rule');
-
- output += ` severity level "${severityLevel}": ${warningList.length}\n`;
-
- for (const [rule, list] of Object.entries(warningsByRule)) {
- output += chalk.dim(` ${rule}: ${list.length}\n`);
- }
- }
-
- return `${output}\n`;
-};
diff --git a/assets/node_modules/stylelint/lib/getConfigForFile.js b/assets/node_modules/stylelint/lib/getConfigForFile.js
deleted file mode 100644
index 046bcb0..0000000
--- a/assets/node_modules/stylelint/lib/getConfigForFile.js
+++ /dev/null
@@ -1,61 +0,0 @@
-'use strict';
-
-const augmentConfigFull = require('./augmentConfig').augmentConfigFull;
-const configurationError = require('./utils/configurationError');
-const path = require('path');
-
-/** @typedef {import('stylelint').StylelintConfig} StylelintConfig */
-/** @typedef {import('stylelint').CosmiconfigResult} CosmiconfigResult */
-/** @typedef {Promise<CosmiconfigResult | null>} ConfigPromise */
-
-/**
- * @param {import('stylelint').StylelintInternalApi} stylelint
- * @param {string} [searchPath]
- * @returns {ConfigPromise}
- */
-module.exports = function(stylelint, searchPath = process.cwd()) {
- const optionsConfig = stylelint._options.config;
-
- if (optionsConfig !== undefined) {
- const cached = /** @type {ConfigPromise} */ (stylelint._specifiedConfigCache.get(
- optionsConfig,
- ));
-
- if (cached) return cached;
-
- // stylelint._fullExplorer (cosmiconfig) is already configured to
- // run augmentConfigFull; but since we're making up the result here,
- // we need to manually run the transform
- const augmentedResult = augmentConfigFull(stylelint, {
- config: optionsConfig,
- // Add the extra path part so that we can get the directory without being
- // confused
- filepath: path.join(process.cwd(), 'argument-config'),
- });
-
- stylelint._specifiedConfigCache.set(optionsConfig, augmentedResult);
-
- return augmentedResult;
- }
-
- const searchForConfig = stylelint._options.configFile
- ? stylelint._fullExplorer.load(stylelint._options.configFile)
- : stylelint._fullExplorer.search(searchPath);
-
- return /** @type {ConfigPromise} */ (searchForConfig
- .then((config) => {
- // If no config was found, try looking from process.cwd
- if (!config) return stylelint._fullExplorer.search(process.cwd());
-
- return config;
- })
- .then((config) => {
- if (!config) {
- const ending = searchPath ? ` for ${searchPath}` : '';
-
- throw configurationError(`No configuration provided${ending}`);
- }
-
- return config;
- }));
-};
diff --git a/assets/node_modules/stylelint/lib/getPostcssResult.js b/assets/node_modules/stylelint/lib/getPostcssResult.js
deleted file mode 100644
index b6f6d6d..0000000
--- a/assets/node_modules/stylelint/lib/getPostcssResult.js
+++ /dev/null
@@ -1,161 +0,0 @@
-'use strict';
-
-const dynamicRequire = require('./dynamicRequire');
-const fs = require('fs');
-const LazyResult = require('postcss/lib/lazy-result');
-const postcss = require('postcss');
-/** @type {import('postcss-syntax')} */
-let autoSyntax = null;
-
-/** @typedef {import('stylelint').StylelintInternalApi} StylelintInternalApi */
-/** @typedef {{parse: any, stringify: any}} Syntax */
-
-const postcssProcessor = postcss();
-
-/**
- * @param {StylelintInternalApi} stylelint
- * @param {import('stylelint').GetPostcssOptions} options
- *
- * @returns {Promise<import('postcss').Result>}
- */
-module.exports = function(stylelint, options = {}) {
- const cached = options.filePath ? stylelint._postcssResultCache.get(options.filePath) : undefined;
-
- if (cached) return Promise.resolve(cached);
-
- /** @type {Promise<string> | undefined} */
- let getCode;
-
- if (options.code !== undefined) {
- getCode = Promise.resolve(options.code);
- } else if (options.filePath) {
- getCode = readFile(options.filePath);
- }
-
- if (!getCode) {
- throw new Error('code or filePath required');
- }
-
- return getCode
- .then((code) => {
- const customSyntax = stylelint._options.customSyntax;
- /** @type {Syntax | null} */
- let syntax = null;
-
- if (customSyntax) {
- try {
- // TODO TYPES determine which type has customSyntax
- const useCustomSyntax = /** @type {any} */ dynamicRequire(customSyntax);
-
- /*
- * PostCSS allows for syntaxes that only contain a parser, however,
- * it then expects the syntax to be set as the `parser` option rather than `syntax`.
- */
- if (!useCustomSyntax.parse) {
- syntax = {
- parse: useCustomSyntax,
- stringify: postcss.stringify,
- };
- } else {
- syntax = useCustomSyntax;
- }
- } catch (e) {
- throw new Error(`Cannot resolve custom syntax module ${customSyntax}`);
- }
- } else if (stylelint._options.syntax === 'css') {
- syntax = cssSyntax(stylelint);
- } else if (stylelint._options.syntax) {
- /** @type {{[k: string]: string}} */
- const syntaxes = {
- 'css-in-js': 'postcss-jsx',
- html: 'postcss-html',
- less: 'postcss-less',
- markdown: 'postcss-markdown',
- sass: 'postcss-sass',
- scss: 'postcss-scss',
- sugarss: 'sugarss',
- };
-
- const syntaxFromOptions = syntaxes[stylelint._options.syntax];
-
- if (!syntaxFromOptions) {
- throw new Error(
- 'You must use a valid syntax option, either: css, css-in-js, html, less, markdown, sass, scss, or sugarss',
- );
- }
-
- syntax = dynamicRequire(syntaxFromOptions);
- } else if (
- !(options.codeProcessors && options.codeProcessors.length) ||
- (options.filePath && /\.(scss|sass|less)$/.test(options.filePath))
- ) {
- if (!autoSyntax) {
- autoSyntax = require('postcss-syntax');
- }
-
- syntax = autoSyntax({
- css: cssSyntax(stylelint),
- });
- }
-
- const postcssOptions = {
- from: options.filePath,
- syntax,
- };
-
- const source = options.code ? options.codeFilename : options.filePath;
- let preProcessedCode = code;
-
- if (options.codeProcessors && options.codeProcessors.length) {
- if (stylelint._options.fix) {
- // eslint-disable-next-line no-console
- console.warn(
- 'Autofix is incompatible with processors and will be disabled. Are you sure you need a processor?',
- );
- stylelint._options.fix = false;
- }
-
- options.codeProcessors.forEach((codeProcessor) => {
- preProcessedCode = codeProcessor(preProcessedCode, source);
- });
- }
-
- const result = new LazyResult(postcssProcessor, preProcessedCode, postcssOptions);
-
- return result;
- })
- .then((postcssResult) => {
- if (options.filePath) {
- stylelint._postcssResultCache.set(options.filePath, postcssResult);
- }
-
- return postcssResult;
- });
-};
-
-/**
- * @param {string} filePath
- * @returns {Promise<string>}
- */
-function readFile(filePath) {
- return new Promise((resolve, reject) => {
- fs.readFile(filePath, 'utf8', (err, content) => {
- if (err) {
- return reject(err);
- }
-
- resolve(content);
- });
- });
-}
-
-/**
- * @param {StylelintInternalApi} stylelint
- * @returns {Syntax}
- */
-function cssSyntax(stylelint) {
- return {
- parse: stylelint._options.fix ? dynamicRequire('postcss-safe-parser') : postcss.parse,
- stringify: postcss.stringify,
- };
-}
diff --git a/assets/node_modules/stylelint/lib/index.js b/assets/node_modules/stylelint/lib/index.js
deleted file mode 100644
index 7c9da54..0000000
--- a/assets/node_modules/stylelint/lib/index.js
+++ /dev/null
@@ -1,48 +0,0 @@
-'use strict';
-
-const checkAgainstRule = require('./utils/checkAgainstRule');
-const createPlugin = require('./createPlugin');
-const createStylelint = require('./createStylelint');
-const formatters = require('./formatters');
-const postcssPlugin = require('./postcssPlugin');
-const report = require('./utils/report');
-const requireRule = require('./requireRule');
-const ruleMessages = require('./utils/ruleMessages');
-const rules = require('./rules');
-const standalone = require('./standalone');
-const validateOptions = require('./utils/validateOptions');
-
-/**
- * TODO TYPES change any to appropriated options
- * @type {import('postcss').Plugin<any> & Partial<import('stylelint').StylelintPublicAPI>}
- */
-const api = postcssPlugin;
-
-const requiredRules = rules.reduce(
- /**
- * @param {{[k: string]: any}} acc
- * @param {string} cur
- * @return {{[k: string]: any}}
- */
- (acc, cur) => {
- acc[cur] = requireRule(cur);
-
- return acc;
- },
- {},
-);
-
-api.utils = {
- report,
- ruleMessages,
- validateOptions,
- checkAgainstRule,
-};
-
-api.lint = standalone;
-api.rules = requiredRules;
-api.formatters = formatters;
-api.createPlugin = createPlugin;
-api.createLinter = createStylelint;
-
-module.exports = api;
diff --git a/assets/node_modules/stylelint/lib/invalidScopeDisables.js b/assets/node_modules/stylelint/lib/invalidScopeDisables.js
deleted file mode 100644
index 6e8bde4..0000000
--- a/assets/node_modules/stylelint/lib/invalidScopeDisables.js
+++ /dev/null
@@ -1,54 +0,0 @@
-'use strict';
-
-/** @typedef {import('stylelint').RangeType} RangeType */
-/** @typedef {import('stylelint').UnusedRange} UnusedRange */
-/** @typedef {import('stylelint').StylelintDisableOptionsReport} StylelintDisableOptionsReport */
-
-/**
- * @param {import('stylelint').StylelintResult[]} results
- * @param {import('stylelint').StylelintConfig|undefined} config
- * @returns {StylelintDisableOptionsReport}
- */
-module.exports = function(results, config = {}) {
- /** @type {StylelintDisableOptionsReport} */
- const report = [];
- const usedRules = new Set(Object.keys(config.rules || {}));
-
- usedRules.add('all');
-
- results.forEach((result) => {
- // File with `CssSyntaxError` have not `_postcssResult`
- if (!result._postcssResult) {
- return;
- }
-
- /** @type {import('stylelint').StylelintDisableReportEntry} */
- const sourceReport = { source: result.source, ranges: [] };
- const rangeData = result._postcssResult.stylelint.disabledRanges;
- const disabledRules = Object.keys(rangeData);
-
- disabledRules.forEach((rule) => {
- if (usedRules.has(rule)) {
- return;
- }
-
- rangeData[rule].forEach((range) => {
- if (!range.strictStart && !range.strictEnd) {
- return;
- }
-
- sourceReport.ranges.push({
- unusedRule: rule,
- start: range.start,
- end: range.end,
- });
- });
- });
-
- if (sourceReport.ranges.length > 0) {
- report.push(sourceReport);
- }
- });
-
- return report;
-};
diff --git a/assets/node_modules/stylelint/lib/isPathIgnored.js b/assets/node_modules/stylelint/lib/isPathIgnored.js
deleted file mode 100644
index db803f3..0000000
--- a/assets/node_modules/stylelint/lib/isPathIgnored.js
+++ /dev/null
@@ -1,48 +0,0 @@
-'use strict';
-
-const filterFilePaths = require('./utils/filterFilePaths');
-const getFileIgnorer = require('./utils/getFileIgnorer');
-const micromatch = require('micromatch');
-const path = require('path');
-const slash = require('slash');
-
-/**
- * To find out if a path is ignored, we need to load the config,
- * which may have an ignoreFiles property. We then check the path
- * against these.
- * @param {import('stylelint').StylelintInternalApi} stylelint
- * @param {string} [filePath]
- * @return {Promise<boolean>}
- */
-module.exports = function(stylelint, filePath) {
- if (!filePath) {
- return Promise.resolve(false);
- }
-
- const cwd = process.cwd();
- const ignorer = getFileIgnorer(stylelint._options);
-
- return stylelint.getConfigForFile(filePath).then((result) => {
- if (!result) {
- return true;
- }
-
- // Glob patterns for micromatch should be in POSIX-style
- const ignoreFiles = /** @type {Array<string>} */ (result.config.ignoreFiles || []).map(slash);
-
- const absoluteFilePath = path.isAbsolute(filePath)
- ? filePath
- : path.resolve(process.cwd(), filePath);
-
- if (micromatch([absoluteFilePath], ignoreFiles).length) {
- return true;
- }
-
- // Check filePath with .stylelintignore file
- if (filterFilePaths(ignorer, [path.relative(cwd, absoluteFilePath)]).length === 0) {
- return true;
- }
-
- return false;
- });
-};
diff --git a/assets/node_modules/stylelint/lib/lintSource.js b/assets/node_modules/stylelint/lib/lintSource.js
deleted file mode 100644
index ac1d151..0000000
--- a/assets/node_modules/stylelint/lib/lintSource.js
+++ /dev/null
@@ -1,211 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const assignDisabledRanges = require('./assignDisabledRanges');
-const getOsEol = require('./utils/getOsEol');
-const path = require('path');
-const reportUnknownRuleNames = require('./reportUnknownRuleNames');
-const requireRule = require('./requireRule');
-const rulesOrder = require('./rules');
-
-/** @typedef {import('stylelint').StylelintInternalApi} StylelintInternalApi */
-/** @typedef {import('stylelint').PostcssResult} PostcssResult */
-/** @typedef {import('stylelint').StylelintPostcssResult} StylelintPostcssResult */
-/** @typedef {import('stylelint').GetLintSourceOptions} Options */
-
-/**
- * Run stylelint on a PostCSS Result, either one that is provided
- * or one that we create
- * @param {StylelintInternalApi} stylelint
- * @param {Options} options
- * @returns {Promise<PostcssResult>}
- */
-module.exports = function lintSource(stylelint, options = {}) {
- if (!options.filePath && options.code === undefined && !options.existingPostcssResult) {
- return Promise.reject(new Error('You must provide filePath, code, or existingPostcssResult'));
- }
-
- const isCodeNotFile = options.code !== undefined;
-
- const inputFilePath = isCodeNotFile ? options.codeFilename : options.filePath;
-
- if (inputFilePath !== undefined && !path.isAbsolute(inputFilePath)) {
- if (isCodeNotFile) {
- return Promise.reject(new Error('codeFilename must be an absolute path'));
- }
-
- return Promise.reject(new Error('filePath must be an absolute path'));
- }
-
- const getIsIgnored = stylelint.isPathIgnored(inputFilePath).catch((err) => {
- if (isCodeNotFile && err.code === 'ENOENT') return false;
-
- throw err;
- });
-
- return getIsIgnored.then((isIgnored) => {
- if (isIgnored) {
- const postcssResult =
- options.existingPostcssResult || createEmptyPostcssResult(inputFilePath);
-
- postcssResult.stylelint = postcssResult.stylelint || {};
- postcssResult.stylelint.ignored = true;
- postcssResult.standaloneIgnored = true; // TODO: remove need for this
-
- return postcssResult;
- }
-
- const configSearchPath = stylelint._options.configFile || inputFilePath;
-
- const getConfig = stylelint.getConfigForFile(configSearchPath).catch((err) => {
- if (isCodeNotFile && err.code === 'ENOENT') return stylelint.getConfigForFile(process.cwd());
-
- throw err;
- });
-
- return getConfig.then((result) => {
- // TODO TYPES possible null
- const config =
- /** @type {{ config: import('stylelint').StylelintConfig, filepath: string }} */ (result).config;
- const existingPostcssResult = options.existingPostcssResult;
- const stylelintResult = {
- ruleSeverities: {},
- customMessages: {},
- disabledRanges: {},
- };
-
- if (existingPostcssResult) {
- return lintPostcssResult(
- stylelint,
- Object.assign(existingPostcssResult, { stylelint: stylelintResult }),
- config,
- ).then(() => existingPostcssResult);
- }
-
- return stylelint
- ._getPostcssResult({
- code: options.code,
- codeFilename: options.codeFilename,
- filePath: inputFilePath,
- codeProcessors: config.codeProcessors,
- })
- .then((postcssResult) => {
- return lintPostcssResult(
- stylelint,
- Object.assign(postcssResult, { stylelint: stylelintResult }),
- config,
- ).then(() => postcssResult);
- });
- });
- });
-};
-
-/**
- * @param {StylelintInternalApi} stylelint
- * @param {PostcssResult} postcssResult
- * @param {import('stylelint').StylelintConfig} config
- * @returns {Promise<any>}
- */
-function lintPostcssResult(stylelint, postcssResult, config) {
- postcssResult.stylelint.ruleSeverities = {};
- postcssResult.stylelint.customMessages = {};
- postcssResult.stylelint.stylelintError = false;
- postcssResult.stylelint.quiet = config.quiet;
-
- /** @type {string} */
- let newline;
- const postcssDoc = postcssResult.root;
-
- if (postcssDoc) {
- // @ts-ignore TODO TYPES property css does not exists
- const newlineMatch = postcssDoc.source && postcssDoc.source.input.css.match(/\r?\n/);
-
- newline = newlineMatch ? newlineMatch[0] : getOsEol();
-
- assignDisabledRanges(postcssDoc, postcssResult);
- }
-
- if (stylelint._options.reportNeedlessDisables || stylelint._options.ignoreDisables) {
- postcssResult.stylelint.ignoreDisables = true;
- }
-
- const postcssRoots =
- /** @type {import('postcss').Root[]} */ (postcssDoc &&
- postcssDoc.constructor.name === 'Document'
- ? postcssDoc.nodes
- : [postcssDoc]);
-
- // Promises for the rules. Although the rule code runs synchronously now,
- // the use of Promises makes it compatible with the possibility of async
- // rules down the line.
- /** @type {Array<Promise<any>>} */
- const performRules = [];
-
- const rules = config.rules
- ? Object.keys(config.rules).sort((a, b) => rulesOrder.indexOf(a) - rulesOrder.indexOf(b))
- : [];
-
- rules.forEach((ruleName) => {
- const ruleFunction = requireRule(ruleName) || _.get(config, ['pluginFunctions', ruleName]);
-
- if (ruleFunction === undefined) {
- performRules.push(
- Promise.all(
- postcssRoots.map((postcssRoot) =>
- reportUnknownRuleNames(ruleName, postcssRoot, postcssResult),
- ),
- ),
- );
-
- return;
- }
-
- const ruleSettings = _.get(config, ['rules', ruleName]);
-
- if (ruleSettings === null || ruleSettings[0] === null) {
- return;
- }
-
- const primaryOption = ruleSettings[0];
- const secondaryOptions = ruleSettings[1];
-
- // Log the rule's severity in the PostCSS result
- const defaultSeverity = config.defaultSeverity || 'error';
-
- postcssResult.stylelint.ruleSeverities[ruleName] = _.get(
- secondaryOptions,
- 'severity',
- defaultSeverity,
- );
- postcssResult.stylelint.customMessages[ruleName] = _.get(secondaryOptions, 'message');
-
- performRules.push(
- Promise.all(
- postcssRoots.map((postcssRoot) =>
- ruleFunction(primaryOption, secondaryOptions, {
- fix: stylelint._options.fix,
- newline,
- })(postcssRoot, postcssResult),
- ),
- ),
- );
- });
-
- return Promise.all(performRules);
-}
-
-/**
- * @param {string} [filePath]
- * @returns {Object}
- */
-function createEmptyPostcssResult(filePath) {
- return {
- root: {
- source: {
- input: { file: filePath },
- },
- },
- messages: [],
- stylelint: { stylelintError: false },
- };
-}
diff --git a/assets/node_modules/stylelint/lib/needlessDisables.js b/assets/node_modules/stylelint/lib/needlessDisables.js
deleted file mode 100644
index 5a416b6..0000000
--- a/assets/node_modules/stylelint/lib/needlessDisables.js
+++ /dev/null
@@ -1,105 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-
-/** @typedef {import('stylelint').RangeType} RangeType */
-/** @typedef {import('stylelint').UnusedRange} UnusedRange */
-/** @typedef {import('stylelint').StylelintDisableOptionsReport} StylelintDisableOptionsReport */
-
-/**
- * @param {import('stylelint').StylelintResult[]} results
- * @returns {StylelintDisableOptionsReport}
- */
-module.exports = function(results) {
- /** @type {StylelintDisableOptionsReport} */
- const report = [];
-
- results.forEach((result) => {
- // File with `CssSyntaxError` have not `_postcssResult`
- if (!result._postcssResult) {
- return;
- }
-
- /** @type {{ranges: UnusedRange[], source: string}} */
- const unused = { source: result.source || '', ranges: [] };
-
- /** @type {{[ruleName: string]: Array<RangeType>}} */
- const rangeData = _.cloneDeep(result._postcssResult.stylelint.disabledRanges);
-
- if (!rangeData) {
- return;
- }
-
- result.warnings.forEach((warning) => {
- const rule = warning.rule;
-
- const ruleRanges = rangeData[rule];
-
- if (ruleRanges) {
- // Back to front so we get the *last* range that applies to the warning
- for (const range of ruleRanges.reverse()) {
- if (isWarningInRange(warning, range)) {
- range.used = true;
-
- return;
- }
- }
- }
-
- for (const range of rangeData.all.reverse()) {
- if (isWarningInRange(warning, range)) {
- range.used = true;
-
- return;
- }
- }
- });
-
- Object.keys(rangeData).forEach((rule) => {
- rangeData[rule].forEach((range) => {
- // Is an equivalent range already marked as unused?
- const alreadyMarkedUnused = unused.ranges.find((unusedRange) => {
- return unusedRange.start === range.start && unusedRange.end === range.end;
- });
-
- // If this range is unused and no equivalent is marked,
- // mark this range as unused
- if (!range.used && !alreadyMarkedUnused) {
- unused.ranges.push({
- start: range.start,
- end: range.end,
- unusedRule: rule,
- });
- }
-
- // If this range is used but an equivalent has been marked as unused,
- // remove that equivalent. This can happen because of the duplication
- // of ranges in rule-specific range sets and the "all" range set
- if (range.used && alreadyMarkedUnused) {
- _.remove(unused.ranges, alreadyMarkedUnused);
- }
- });
- });
-
- unused.ranges = _.sortBy(unused.ranges, ['start', 'end']);
-
- report.push(unused);
- });
-
- return report;
-};
-
-/**
- * @param {import('stylelint').StylelintWarning} warning
- * @param {RangeType} range
- * @return {boolean}
- */
-function isWarningInRange(warning, range) {
- const line = warning.line;
-
- // Need to check if range.end exist, because line number type cannot be compared to undefined
- return (
- range.start <= line &&
- ((range.end !== undefined && range.end >= line) || range.end === undefined)
- );
-}
diff --git a/assets/node_modules/stylelint/lib/normalizeRuleSettings.js b/assets/node_modules/stylelint/lib/normalizeRuleSettings.js
deleted file mode 100644
index f687267..0000000
--- a/assets/node_modules/stylelint/lib/normalizeRuleSettings.js
+++ /dev/null
@@ -1,70 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const requireRule = require('./requireRule');
-
-// Rule settings can take a number of forms, e.g.
-// a. "rule-name": null
-// b. "rule-name": [null, ...]
-// c. "rule-name": primaryOption
-// d. "rule-name": [primaryOption]
-// e. "rule-name": [primaryOption, secondaryOption]
-// Where primaryOption can be anything: primitive, Object, or Array.
-
-/**
- * This function normalizes all the possibilities into the
- * standard form: [primaryOption, secondaryOption]
- * Except in the cases with null, a & b, in which case
- * null is returned
- * @param {import('stylelint').StylelintConfigRuleSettings} rawSettings
- * @param {string} ruleName
- * @param {boolean} [primaryOptionArray] If primaryOptionArray is not provided, we try to get it from the, rules themselves, which will not work for plugins
- * @return {[any, Object] | Array<any | [any, Object]> | null}
- */
-module.exports = function(
- rawSettings,
- ruleName,
- // If primaryOptionArray is not provided, we try to get it from the
- // rules themselves, which will not work for plugins
- primaryOptionArray,
-) {
- if (rawSettings === null) {
- return null;
- }
-
- if (!Array.isArray(rawSettings)) {
- return [rawSettings];
- }
- // Everything below is an array ...
-
- if (rawSettings[0] === null) {
- return null;
- }
-
- if (primaryOptionArray === undefined) {
- const rule = requireRule(ruleName);
-
- primaryOptionArray = _.get(rule, 'primaryOptionArray');
- }
-
- if (!primaryOptionArray) {
- return rawSettings;
- }
- // Everything below is a rule that CAN have an array for a primary option ...
- // (they might also have something else, e.g. rule-properties-order can
- // have the string "alphabetical")
-
- if (rawSettings.length === 1 && Array.isArray(rawSettings[0])) {
- return rawSettings;
- }
-
- if (
- rawSettings.length === 2 &&
- !_.isPlainObject(rawSettings[0]) &&
- _.isPlainObject(rawSettings[1])
- ) {
- return rawSettings;
- }
-
- return [rawSettings];
-};
diff --git a/assets/node_modules/stylelint/lib/postcssPlugin.js b/assets/node_modules/stylelint/lib/postcssPlugin.js
deleted file mode 100644
index 64be647..0000000
--- a/assets/node_modules/stylelint/lib/postcssPlugin.js
+++ /dev/null
@@ -1,25 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const createStylelint = require('./createStylelint');
-const path = require('path');
-const postcss = require('postcss');
-//'block-no-empty': bool || Array
-
-module.exports = postcss.plugin('stylelint', function(options = {}) {
- const tailoredOptions = options.rules ? { config: options } : options;
- const stylelint = createStylelint(tailoredOptions);
-
- return (root, result) => {
- let filePath = options.from || _.get(root, 'source.input.file');
-
- if (filePath !== undefined && !path.isAbsolute(filePath)) {
- filePath = path.join(process.cwd(), filePath);
- }
-
- return stylelint._lintSource({
- filePath,
- existingPostcssResult: result,
- });
- };
-});
diff --git a/assets/node_modules/stylelint/lib/printConfig.js b/assets/node_modules/stylelint/lib/printConfig.js
deleted file mode 100644
index 24939c5..0000000
--- a/assets/node_modules/stylelint/lib/printConfig.js
+++ /dev/null
@@ -1,54 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const createStylelint = require('./createStylelint');
-const globby = require('globby');
-const path = require('path');
-
-/** @typedef {import('stylelint').StylelintConfig} StylelintConfig */
-
-/**
- * @param {import('stylelint').StylelintStandaloneOptions} options
- * @returns {Promise<StylelintConfig | null>}
- */
-module.exports = function(options) {
- const code = options.code;
- const config = options.config;
- const configBasedir = options.configBasedir;
- const configFile = options.configFile;
- const configOverrides = options.configOverrides;
- const globbyOptions = options.globbyOptions;
- const files = options.files;
-
- const isCodeNotFile = code !== undefined;
-
- if (!files || files.length !== 1 || isCodeNotFile) {
- return Promise.reject(
- new Error('The --print-config option must be used with exactly one file path.'),
- );
- }
-
- const filePath = files[0];
-
- if (globby.hasMagic(filePath)) {
- return Promise.reject(new Error('The --print-config option does not support globs.'));
- }
-
- const stylelint = createStylelint({
- config,
- configFile,
- configBasedir,
- configOverrides,
- });
-
- const cwd = _.get(globbyOptions, 'cwd', process.cwd());
- const absoluteFilePath = !path.isAbsolute(filePath)
- ? path.join(cwd, filePath)
- : path.normalize(filePath);
-
- const configSearchPath = stylelint._options.configFile || absoluteFilePath;
-
- return stylelint
- .getConfigForFile(configSearchPath)
- .then((result) => (result === null ? null : result.config));
-};
diff --git a/assets/node_modules/stylelint/lib/reference/keywordSets.js b/assets/node_modules/stylelint/lib/reference/keywordSets.js
deleted file mode 100644
index 74430bd..0000000
--- a/assets/node_modules/stylelint/lib/reference/keywordSets.js
+++ /dev/null
@@ -1,675 +0,0 @@
-'use strict';
-
-const keywordSets = {};
-
-keywordSets.nonLengthUnits = new Set([
- // Relative length units
- '%',
- // Time length units
- 's',
- 'ms',
- // Angle
- 'deg',
- 'grad',
- 'turn',
- 'rad',
- // Frequency
- 'Hz',
- 'kHz',
- // Resolution
- 'dpi',
- 'dpcm',
- 'dppx',
-]);
-
-keywordSets.lengthUnits = new Set([
- // Relative length units
- 'em',
- 'ex',
- 'ch',
- 'rem',
- // Viewport-percentage lengths
- 'vh',
- 'vw',
- 'vmin',
- 'vmax',
- 'vm',
- // Absolute length units
- 'px',
- 'mm',
- 'cm',
- 'in',
- 'pt',
- 'pc',
- 'q',
- // Flexible length units
- 'fr',
-]);
-
-keywordSets.units = uniteSets(keywordSets.nonLengthUnits, keywordSets.lengthUnits);
-
-keywordSets.colorFunctionNames = new Set(['rgb', 'rgba', 'hsl', 'hsla', 'hwb', 'gray']);
-
-keywordSets.camelCaseFunctionNames = new Set([
- 'translateX',
- 'translateY',
- 'translateZ',
- 'scaleX',
- 'scaleY',
- 'scaleZ',
- 'rotateX',
- 'rotateY',
- 'rotateZ',
- 'skewX',
- 'skewY',
-]);
-
-keywordSets.basicKeywords = new Set(['initial', 'inherit', 'unset']);
-
-keywordSets.systemFontValues = uniteSets(keywordSets.basicKeywords, [
- 'caption',
- 'icon',
- 'menu',
- 'message-box',
- 'small-caption',
- 'status-bar',
-]);
-
-keywordSets.fontFamilyKeywords = uniteSets(keywordSets.basicKeywords, [
- 'serif',
- 'sans-serif',
- 'cursive',
- 'fantasy',
- 'monospace',
- 'system-ui',
-]);
-
-keywordSets.fontWeightRelativeKeywords = new Set(['bolder', 'lighter']);
-
-keywordSets.fontWeightAbsoluteKeywords = new Set(['bold']);
-
-keywordSets.fontWeightNumericKeywords = new Set([
- '100',
- '200',
- '300',
- '400',
- '500',
- '600',
- '700',
- '800',
- '900',
-]);
-
-keywordSets.fontWeightKeywords = uniteSets(
- keywordSets.basicKeywords,
- keywordSets.fontWeightRelativeKeywords,
- keywordSets.fontWeightAbsoluteKeywords,
- keywordSets.fontWeightNumericKeywords,
-);
-
-keywordSets.animationNameKeywords = uniteSets(keywordSets.basicKeywords, ['none']);
-
-keywordSets.animationTimingFunctionKeywords = uniteSets(keywordSets.basicKeywords, [
- 'linear',
- 'ease',
- 'ease-in',
- 'ease-in-out',
- 'ease-out',
- 'step-start',
- 'step-end',
- 'steps',
- 'cubic-bezier',
-]);
-
-keywordSets.animationIterationCountKeywords = new Set(['infinite']);
-
-keywordSets.animationDirectionKeywords = uniteSets(keywordSets.basicKeywords, [
- 'normal',
- 'reverse',
- 'alternate',
- 'alternate-reverse',
-]);
-
-keywordSets.animationFillModeKeywords = new Set(['none', 'forwards', 'backwards', 'both']);
-
-keywordSets.animationPlayStateKeywords = uniteSets(keywordSets.basicKeywords, [
- 'running',
- 'paused',
-]);
-
-// cf. https://developer.mozilla.org/en-US/docs/Web/CSS/animation
-keywordSets.animationShorthandKeywords = uniteSets(
- keywordSets.basicKeywords,
- keywordSets.animationNameKeywords,
- keywordSets.animationTimingFunctionKeywords,
- keywordSets.animationIterationCountKeywords,
- keywordSets.animationDirectionKeywords,
- keywordSets.animationFillModeKeywords,
- keywordSets.animationPlayStateKeywords,
-);
-
-// These are the ones that can have single-colon notation
-keywordSets.levelOneAndTwoPseudoElements = new Set([
- 'before',
- 'after',
- 'first-line',
- 'first-letter',
-]);
-
-// These are the ones that require double-colon notation
-keywordSets.levelThreePseudoElements = new Set([
- 'before',
- 'after',
- 'first-line',
- 'first-letter',
- 'selection',
- 'spelling-error',
- 'grammar-error',
- 'backdrop',
- 'marker',
- 'placeholder',
- 'shadow',
- 'slotted',
- 'content',
-]);
-
-keywordSets.vendorSpecificPseudoElements = new Set([
- '-moz-progress-bar',
- '-moz-range-progress',
- '-moz-range-thumb',
- '-moz-range-track',
- '-ms-browse',
- '-ms-check',
- '-ms-clear',
- '-ms-expand',
- '-ms-fill',
- '-ms-fill-lower',
- '-ms-fill-upper',
- '-ms-reveal',
- '-ms-thumb',
- '-ms-ticks-after',
- '-ms-ticks-before',
- '-ms-tooltip',
- '-ms-track',
- '-ms-value',
- '-webkit-progress-bar',
- '-webkit-progress-value',
- '-webkit-slider-runnable-track',
- '-webkit-slider-thumb',
-]);
-
-keywordSets.pseudoElements = uniteSets(
- keywordSets.levelOneAndTwoPseudoElements,
- keywordSets.levelThreePseudoElements,
- keywordSets.vendorSpecificPseudoElements,
-);
-
-keywordSets.aNPlusBNotationPseudoClasses = new Set([
- 'nth-child',
- 'nth-column',
- 'nth-last-child',
- 'nth-last-column',
- 'nth-last-of-type',
- 'nth-of-type',
-]);
-
-keywordSets.linguisticPseudoClasses = new Set(['dir', 'lang']);
-
-keywordSets.atRulePagePseudoClasses = new Set(['first', 'right', 'left', 'blank']);
-
-keywordSets.otherPseudoClasses = new Set([
- 'active',
- 'any-link',
- 'blank',
- 'checked',
- 'contains',
- 'current',
- 'default',
- 'defined',
- 'disabled',
- 'drop',
- 'empty',
- 'enabled',
- 'first-child',
- 'first-of-type',
- 'focus',
- 'focus-ring',
- 'focus-within',
- 'focus-visible',
- 'fullscreen',
- 'future',
- 'has',
- 'host',
- 'host-context',
- 'hover',
- 'indeterminate',
- 'in-range',
- 'invalid',
- 'is',
- 'last-child',
- 'last-of-type',
- 'link',
- 'matches',
- 'not',
- 'only-child',
- 'only-of-type',
- 'optional',
- 'out-of-range',
- 'past',
- 'placeholder-shown',
- 'playing',
- 'paused',
- 'read-only',
- 'read-write',
- 'required',
- 'root',
- 'scope',
- 'target',
- 'user-error',
- 'user-invalid',
- 'val',
- 'valid',
- 'visited',
-]);
-
-keywordSets.webkitProprietaryPseudoElements = new Set([
- 'scrollbar',
- 'scrollbar-button',
- 'scrollbar-track',
- 'scrollbar-track-piece',
- 'scrollbar-thumb',
- 'scrollbar-corner',
- 'resize',
-]);
-
-keywordSets.webkitProprietaryPseudoClasses = new Set([
- 'horizontal',
- 'vertical',
- 'decrement',
- 'increment',
- 'start',
- 'end',
- 'double-button',
- 'single-button',
- 'no-button',
- 'corner-present',
- 'window-inactive',
-]);
-
-keywordSets.pseudoClasses = uniteSets(
- keywordSets.aNPlusBNotationPseudoClasses,
- keywordSets.linguisticPseudoClasses,
- keywordSets.otherPseudoClasses,
-);
-
-keywordSets.shorthandTimeProperties = new Set(['transition', 'animation']);
-
-keywordSets.longhandTimeProperties = new Set([
- 'transition-duration',
- 'transition-delay',
- 'animation-duration',
- 'animation-delay',
-]);
-
-keywordSets.timeProperties = uniteSets(
- keywordSets.shorthandTimeProperties,
- keywordSets.longhandTimeProperties,
-);
-
-keywordSets.camelCaseKeywords = new Set([
- 'optimizeSpeed',
- 'optimizeQuality',
- 'optimizeLegibility',
- 'geometricPrecision',
- 'currentColor',
- 'crispEdges',
- 'visiblePainted',
- 'visibleFill',
- 'visibleStroke',
- 'sRGB',
- 'linearRGB',
-]);
-
-// https://developer.mozilla.org/docs/Web/CSS/counter-increment
-keywordSets.counterIncrementKeywords = uniteSets(keywordSets.basicKeywords, ['none']);
-
-keywordSets.counterResetKeywords = uniteSets(keywordSets.basicKeywords, ['none']);
-
-keywordSets.gridRowKeywords = uniteSets(keywordSets.basicKeywords, ['auto', 'span']);
-
-keywordSets.gridColumnKeywords = uniteSets(keywordSets.basicKeywords, ['auto', 'span']);
-
-keywordSets.gridAreaKeywords = uniteSets(keywordSets.basicKeywords, ['auto', 'span']);
-
-// https://developer.mozilla.org/ru/docs/Web/CSS/list-style-type
-keywordSets.listStyleTypeKeywords = uniteSets(keywordSets.basicKeywords, [
- 'none',
- 'disc',
- 'circle',
- 'square',
- 'decimal',
- 'cjk-decimal',
- 'decimal-leading-zero',
- 'lower-roman',
- 'upper-roman',
- 'lower-greek',
- 'lower-alpha',
- 'lower-latin',
- 'upper-alpha',
- 'upper-latin',
- 'arabic-indic',
- 'armenian',
- 'bengali',
- 'cambodian',
- 'cjk-earthly-branch',
- 'cjk-ideographic',
- 'devanagari',
- 'ethiopic-numeric',
- 'georgian',
- 'gujarati',
- 'gurmukhi',
- 'hebrew',
- 'hiragana',
- 'hiragana-iroha',
- 'japanese-formal',
- 'japanese-informal',
- 'kannada',
- 'katakana',
- 'katakana-iroha',
- 'khmer',
- 'korean-hangul-formal',
- 'korean-hanja-formal',
- 'korean-hanja-informal',
- 'lao',
- 'lower-armenian',
- 'malayalam',
- 'mongolian',
- 'myanmar',
- 'oriya',
- 'persian',
- 'simp-chinese-formal',
- 'simp-chinese-informal',
- 'tamil',
- 'telugu',
- 'thai',
- 'tibetan',
- 'trad-chinese-formal',
- 'trad-chinese-informal',
- 'upper-armenian',
- 'disclosure-open',
- 'disclosure-closed',
- // Non-standard extensions (without prefixe)
- 'ethiopic-halehame',
- 'ethiopic-halehame-am',
- 'ethiopic-halehame-ti-er',
- 'ethiopic-halehame-ti-et',
- 'hangul',
- 'hangul-consonant',
- 'urdu',
-]);
-
-keywordSets.listStylePositionKeywords = uniteSets(keywordSets.basicKeywords, ['inside', 'outside']);
-
-keywordSets.listStyleImageKeywords = uniteSets(keywordSets.basicKeywords, ['none']);
-
-keywordSets.listStyleShorthandKeywords = uniteSets(
- keywordSets.basicKeywords,
- keywordSets.listStyleTypeKeywords,
- keywordSets.listStylePositionKeywords,
- keywordSets.listStyleImageKeywords,
-);
-
-keywordSets.fontStyleKeywords = uniteSets(keywordSets.basicKeywords, [
- 'normal',
- 'italic',
- 'oblique',
-]);
-
-keywordSets.fontVariantKeywords = uniteSets(keywordSets.basicKeywords, [
- 'normal',
- 'none',
- 'historical-forms',
- 'none',
- 'common-ligatures',
- 'no-common-ligatures',
- 'discretionary-ligatures',
- 'no-discretionary-ligatures',
- 'historical-ligatures',
- 'no-historical-ligatures',
- 'contextual',
- 'no-contextual',
- 'small-caps',
- 'small-caps',
- 'all-small-caps',
- 'petite-caps',
- 'all-petite-caps',
- 'unicase',
- 'titling-caps',
- 'lining-nums',
- 'oldstyle-nums',
- 'proportional-nums',
- 'tabular-nums',
- 'diagonal-fractions',
- 'stacked-fractions',
- 'ordinal',
- 'slashed-zero',
- 'jis78',
- 'jis83',
- 'jis90',
- 'jis04',
- 'simplified',
- 'traditional',
- 'full-width',
- 'proportional-width',
- 'ruby',
-]);
-
-keywordSets.fontStretchKeywords = uniteSets(keywordSets.basicKeywords, [
- 'semi-condensed',
- 'condensed',
- 'extra-condensed',
- 'ultra-condensed',
- 'semi-expanded',
- 'expanded',
- 'extra-expanded',
- 'ultra-expanded',
-]);
-
-keywordSets.fontSizeKeywords = uniteSets(keywordSets.basicKeywords, [
- 'xx-small',
- 'x-small',
- 'small',
- 'medium',
- 'large',
- 'x-large',
- 'xx-large',
- 'larger',
- 'smaller',
-]);
-
-keywordSets.lineHeightKeywords = uniteSets(keywordSets.basicKeywords, ['normal']);
-
-keywordSets.fontShorthandKeywords = uniteSets(
- keywordSets.basicKeywords,
- keywordSets.fontStyleKeywords,
- keywordSets.fontVariantKeywords,
- keywordSets.fontWeightKeywords,
- keywordSets.fontStretchKeywords,
- keywordSets.fontSizeKeywords,
- keywordSets.lineHeightKeywords,
- keywordSets.fontFamilyKeywords,
-);
-
-keywordSets.keyframeSelectorKeywords = new Set(['from', 'to']);
-
-// https://www.w3.org/TR/css-page-3/#syntax-page-selector
-keywordSets.pageMarginAtRules = new Set([
- 'top-left-corner',
- 'top-left',
- 'top-center',
- 'top-right',
- 'top-right-corner',
- 'bottom-left-corner',
- 'bottom-left',
- 'bottom-center',
- 'bottom-right',
- 'bottom-right-corner',
- 'left-top',
- 'left-middle',
- 'left-bottom',
- 'right-top',
- 'right-middle',
- 'right-bottom',
-]);
-
-// https://developer.mozilla.org/en/docs/Web/CSS/At-rule
-keywordSets.atRules = uniteSets(keywordSets.pageMarginAtRules, [
- 'apply',
- 'annotation',
- 'character-variant',
- 'charset',
- 'counter-style',
- 'custom-media',
- 'custom-selector',
- 'document',
- 'font-face',
- 'font-feature-values',
- 'import',
- 'keyframes',
- 'media',
- 'namespace',
- 'nest',
- 'ornaments',
- 'page',
- 'styleset',
- 'stylistic',
- 'supports',
- 'swash',
- 'viewport',
-]);
-
-// https://drafts.csswg.org/mediaqueries/#descdef-media-update
-keywordSets.deprecatedMediaFeatureNames = new Set([
- 'device-aspect-ratio',
- 'device-height',
- 'device-width',
- 'max-device-aspect-ratio',
- 'max-device-height',
- 'max-device-width',
- 'min-device-aspect-ratio',
- 'min-device-height',
- 'min-device-width',
-]);
-
-// https://drafts.csswg.org/mediaqueries/#descdef-media-update
-keywordSets.mediaFeatureNames = uniteSets(keywordSets.deprecatedMediaFeatureNames, [
- 'any-hover',
- 'any-pointer',
- 'aspect-ratio',
- 'color',
- 'color-gamut',
- 'color-index',
- 'grid',
- 'height',
- 'hover',
- 'inverted-colors',
- 'light-level',
- 'max-aspect-ratio',
- 'max-color',
- 'max-color-index',
- 'max-height',
- 'max-monochrome',
- 'max-resolution',
- 'max-width',
- 'min-aspect-ratio',
- 'min-color',
- 'min-color-index',
- 'min-height',
- 'min-monochrome',
- 'min-resolution',
- 'min-width',
- 'monochrome',
- 'orientation',
- 'overflow-block',
- 'overflow-inline',
- 'pointer',
- 'prefers-color-scheme',
- 'prefers-reduced-motion',
- 'prefers-reduced-transparency',
- 'resolution',
- 'scan',
- 'scripting',
- 'update',
- 'width',
-]);
-
-// https://www.w3.org/TR/CSS22/ui.html#system-colors
-keywordSets.systemColors = new Set([
- 'activeborder',
- 'activecaption',
- 'appworkspace',
- 'background',
- 'buttonface',
- 'buttonhighlight',
- 'buttonshadow',
- 'buttontext',
- 'captiontext',
- 'graytext',
- 'highlight',
- 'highlighttext',
- 'inactiveborder',
- 'inactivecaption',
- 'inactivecaptiontext',
- 'infobackground',
- 'infotext',
- 'menu',
- 'menutext',
- 'scrollbar',
- 'threeddarkshadow',
- 'threedface',
- 'threedhighlight',
- 'threedlightshadow',
- 'threedshadow',
- 'window',
- 'windowframe',
- 'windowtext',
-]);
-
-// htmlTags includes only "standard" tags. So we augment it with older tags etc.
-keywordSets.nonStandardHtmlTags = new Set([
- 'acronym',
- 'applet',
- 'basefont',
- 'big',
- 'blink',
- 'center',
- 'content',
- 'dir',
- 'font',
- 'frame',
- 'frameset',
- 'hgroup',
- 'isindex',
- 'keygen',
- 'listing',
- 'marquee',
- 'noembed',
- 'plaintext',
- 'spacer',
- 'strike',
- 'tt',
- 'xmp',
-]);
-
-/**
- * @param {(string[] | Set<string>)[]} args
- */
-function uniteSets(...args) {
- return new Set(
- Array.from(args).reduce((/** @type {string[]} */ result, set) => {
- return result.concat(Array.from(set));
- }, []),
- );
-}
-
-module.exports = keywordSets;
diff --git a/assets/node_modules/stylelint/lib/reference/mathFunctions.js b/assets/node_modules/stylelint/lib/reference/mathFunctions.js
deleted file mode 100644
index 2fe9b67..0000000
--- a/assets/node_modules/stylelint/lib/reference/mathFunctions.js
+++ /dev/null
@@ -1,3 +0,0 @@
-'use strict';
-
-module.exports = ['calc'];
diff --git a/assets/node_modules/stylelint/lib/reference/namedColorData.js b/assets/node_modules/stylelint/lib/reference/namedColorData.js
deleted file mode 100644
index 4140eb8..0000000
--- a/assets/node_modules/stylelint/lib/reference/namedColorData.js
+++ /dev/null
@@ -1,152 +0,0 @@
-'use strict';
-
-module.exports = {
- aliceblue: ['#f0f8ff', '#fff0f8ff'],
- antiquewhite: ['#faebd7', '#fffaebd7'],
- aqua: ['#00ffff', '#ff00ffff', '#0ff', '#f0ff'],
- aquamarine: ['#7fffd4', '#ff7fffd4'],
- azure: ['#f0ffff', '#fff0ffff'],
- beige: ['#f5f5dc', '#fff5f5dc'],
- bisque: ['#ffe4c4', '#ffffe4c4'],
- black: ['#000000', '#ff000000', '#000', '#f000'],
- blanchedalmond: ['#ffebcd', '#ffffebcd'],
- blue: ['#0000ff', '#ff0000ff', '#00f', '#f00f'],
- blueviolet: ['#8a2be2', '#ff8a2be2'],
- brown: ['#a52a2a', '#ffa52a2a'],
- burlywood: ['#deb887', '#ffdeb887'],
- cadetblue: ['#5f9ea0', '#ff5f9ea0'],
- chartreuse: ['#7fff00', '#ff7fff00'],
- chocolate: ['#d2691e', '#ffd2691e'],
- coral: ['#ff7f50', '#ffff7f50'],
- cornflowerblue: ['#6495ed', '#ff6495ed'],
- cornsilk: ['#fff8dc', '#fffff8dc'],
- crimson: ['#dc143c', '#ffdc143c'],
- cyan: ['#00ffff', '#ff00ffff', '#0ff', '#f0ff'],
- darkblue: ['#00008b', '#ff00008b'],
- darkcyan: ['#008b8b', '#ff008b8b'],
- darkgoldenrod: ['#b8860b', '#ffb8860b'],
- darkgray: ['#a9a9a9', '#ffa9a9a9'],
- darkgreen: ['#006400', '#ff006400'],
- darkgrey: ['#a9a9a9', '#ffa9a9a9'],
- darkkhaki: ['#bdb76b', '#ffbdb76b'],
- darkmagenta: ['#8b008b', '#ff8b008b'],
- darkolivegreen: ['#556b2f', '#ff556b2f'],
- darkorange: ['#ff8c00', '#ffff8c00'],
- darkorchid: ['#9932cc', '#ff9932cc'],
- darkred: ['#8b0000', '#ff8b0000'],
- darksalmon: ['#e9967a', '#ffe9967a'],
- darkseagreen: ['#8fbc8f', '#ff8fbc8f'],
- darkslateblue: ['#483d8b', '#ff483d8b'],
- darkslategray: ['#2f4f4f', '#ff2f4f4f'],
- darkslategrey: ['#2f4f4f', '#ff2f4f4f'],
- darkturquoise: ['#00ced1', '#ff00ced1'],
- darkviolet: ['#9400d3', '#ff9400d3'],
- deeppink: ['#ff1493', '#ffff1493'],
- deepskyblue: ['#00bfff', '#ff00bfff'],
- dimgray: ['#696969', '#ff696969'],
- dimgrey: ['#696969', '#ff696969'],
- dodgerblue: ['#1e90ff', '#ff1e90ff'],
- firebrick: ['#b22222', '#ffb22222'],
- floralwhite: ['#fffaf0', '#fffffaf0'],
- forestgreen: ['#228b22', '#ff228b22'],
- fuchsia: ['#ff00ff', '#ffff00ff', '#f0f', '#ff0f'],
- gainsboro: ['#dcdcdc', '#ffdcdcdc'],
- ghostwhite: ['#f8f8ff', '#fff8f8ff'],
- gold: ['#ffd700', '#ffffd700'],
- goldenrod: ['#daa520', '#ffdaa520'],
- gray: ['#808080', '#ff808080'],
- green: ['#008000', '#ff008000'],
- greenyellow: ['#adff2f', '#ffadff2f'],
- grey: ['#808080', '#ff808080'],
- honeydew: ['#f0fff0', '#fff0fff0'],
- hotpink: ['#ff69b4', '#ffff69b4'],
- indianred: ['#cd5c5c', '#ffcd5c5c'],
- indigo: ['#4b0082', '#ff4b0082'],
- ivory: ['#fffff0', '#fffffff0'],
- khaki: ['#f0e68c', '#fff0e68c'],
- lavender: ['#e6e6fa', '#ffe6e6fa'],
- lavenderblush: ['#fff0f5', '#fffff0f5'],
- lawngreen: ['#7cfc00', '#ff7cfc00'],
- lemonchiffon: ['#fffacd', '#fffffacd'],
- lightblue: ['#add8e6', '#ffadd8e6'],
- lightcoral: ['#f08080', '#fff08080'],
- lightcyan: ['#e0ffff', '#ffe0ffff'],
- lightgoldenrodyellow: ['#fafad2', '#fffafad2'],
- lightgray: ['#d3d3d3', '#ffd3d3d3'],
- lightgreen: ['#90ee90', '#ff90ee90'],
- lightgrey: ['#d3d3d3', '#ffd3d3d3'],
- lightpink: ['#ffb6c1', '#ffffb6c1'],
- lightsalmon: ['#ffa07a', '#ffffa07a'],
- lightseagreen: ['#20b2aa', '#ff20b2aa'],
- lightskyblue: ['#87cefa', '#ff87cefa'],
- lightslategray: ['#778899', '#ff778899', '#789', '#f789'],
- lightslategrey: ['#778899', '#ff778899', '#789', '#f789'],
- lightsteelblue: ['#b0c4de', '#ffb0c4de'],
- lightyellow: ['#ffffe0', '#ffffffe0'],
- lime: ['#00ff00', '#ff00ff00', '#0f0', '#f0f0'],
- limegreen: ['#32cd32', '#ff32cd32'],
- linen: ['#faf0e6', '#fffaf0e6'],
- magenta: ['#ff00ff', '#ffff00ff', '#f0f', '#ff0f'],
- maroon: ['#800000', '#ff800000'],
- mediumaquamarine: ['#66cdaa', '#ff66cdaa'],
- mediumblue: ['#0000cd', '#ff0000cd'],
- mediumorchid: ['#ba55d3', '#ffba55d3'],
- mediumpurple: ['#9370db', '#ff9370db'],
- mediumseagreen: ['#3cb371', '#ff3cb371'],
- mediumslateblue: ['#7b68ee', '#ff7b68ee'],
- mediumspringgreen: ['#00fa9a', '#ff00fa9a'],
- mediumturquoise: ['#48d1cc', '#ff48d1cc'],
- mediumvioletred: ['#c71585', '#ffc71585'],
- midnightblue: ['#191970', '#ff191970'],
- mintcream: ['#f5fffa', '#fff5fffa'],
- mistyrose: ['#ffe4e1', '#ffffe4e1'],
- moccasin: ['#ffe4b5', '#ffffe4b5'],
- navajowhite: ['#ffdead', '#ffffdead'],
- navy: ['#000080', '#ff000080'],
- oldlace: ['#fdf5e6', '#fffdf5e6'],
- olive: ['#808000', '#ff808000'],
- olivedrab: ['#6b8e23', '#ff6b8e23'],
- orange: ['#ffa500', '#ffffa500'],
- orangered: ['#ff4500', '#ffff4500'],
- orchid: ['#da70d6', '#ffda70d6'],
- palegoldenrod: ['#eee8aa', '#ffeee8aa'],
- palegreen: ['#98fb98', '#ff98fb98'],
- paleturquoise: ['#afeeee', '#ffafeeee'],
- palevioletred: ['#db7093', '#ffdb7093'],
- papayawhip: ['#ffefd5', '#ffffefd5'],
- peachpuff: ['#ffdab9', '#ffffdab9'],
- peru: ['#cd853f', '#ffcd853f'],
- pink: ['#ffc0cb', '#ffffc0cb'],
- plum: ['#dda0dd', '#ffdda0dd'],
- powderblue: ['#b0e0e6', '#ffb0e0e6'],
- purple: ['#800080', '#ff800080'],
- rebeccapurple: ['#663399', '#ff663399', '#639', '#f639'],
- red: ['#ff0000', '#ffff0000', '#f00', '#ff00'],
- rosybrown: ['#bc8f8f', '#ffbc8f8f'],
- royalblue: ['#4169e1', '#ff4169e1'],
- saddlebrown: ['#8b4513', '#ff8b4513'],
- salmon: ['#fa8072', '#fffa8072'],
- sandybrown: ['#f4a460', '#fff4a460'],
- seagreen: ['#2e8b57', '#ff2e8b57'],
- seashell: ['#fff5ee', '#fffff5ee'],
- sienna: ['#a0522d', '#ffa0522d'],
- silver: ['#c0c0c0', '#ffc0c0c0'],
- skyblue: ['#87ceeb', '#ff87ceeb'],
- slateblue: ['#6a5acd', '#ff6a5acd'],
- slategray: ['#708090', '#ff708090'],
- slategrey: ['#708090', '#ff708090'],
- snow: ['#fffafa', '#fffffafa'],
- springgreen: ['#00ff7f', '#ff00ff7f'],
- steelblue: ['#4682b4', '#ff4682b4'],
- tan: ['#d2b48c', '#ffd2b48c'],
- teal: ['#008080', '#ff008080'],
- thistle: ['#d8bfd8', '#ffd8bfd8'],
- tomato: ['#ff6347', '#ffff6347'],
- turquoise: ['#40e0d0', '#ff40e0d0'],
- violet: ['#ee82ee', '#ffee82ee'],
- wheat: ['#f5deb3', '#fff5deb3'],
- white: ['#ffffff', '#ffffffff', '#fff', '#ffff'],
- whitesmoke: ['#f5f5f5', '#fff5f5f5'],
- yellow: ['#ffff00', '#ffffff00', '#ff0', '#fff0'],
- yellowgreen: ['#9acd32', '#ff9acd32'],
-};
diff --git a/assets/node_modules/stylelint/lib/reference/propertySets.js b/assets/node_modules/stylelint/lib/reference/propertySets.js
deleted file mode 100644
index 3bfe3af..0000000
--- a/assets/node_modules/stylelint/lib/reference/propertySets.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict';
-
-const propertySets = {};
-
-propertySets.acceptCustomIdents = new Set([
- 'animation',
- 'animation-name',
- 'font',
- 'font-family',
- 'counter-increment',
- 'grid-row',
- 'grid-column',
- 'grid-area',
- 'list-style',
- 'list-style-type',
-]);
-
-module.exports = propertySets;
diff --git a/assets/node_modules/stylelint/lib/reference/punctuationSets.js b/assets/node_modules/stylelint/lib/reference/punctuationSets.js
deleted file mode 100644
index a9a5252..0000000
--- a/assets/node_modules/stylelint/lib/reference/punctuationSets.js
+++ /dev/null
@@ -1,9 +0,0 @@
-'use strict';
-
-const punctuationSets = {};
-
-punctuationSets.mediaFeaturePunctuation = new Set([':', '=', '>', '>=', '<', '<=']);
-
-punctuationSets.nonSpaceCombinators = new Set(['>', '+', '~', '>>>', '/deep/']);
-
-module.exports = punctuationSets;
diff --git a/assets/node_modules/stylelint/lib/reference/shorthandData.js b/assets/node_modules/stylelint/lib/reference/shorthandData.js
deleted file mode 100644
index 59960f1..0000000
--- a/assets/node_modules/stylelint/lib/reference/shorthandData.js
+++ /dev/null
@@ -1,143 +0,0 @@
-'use strict';
-
-module.exports = {
- margin: ['margin-top', 'margin-bottom', 'margin-left', 'margin-right'],
- padding: ['padding-top', 'padding-bottom', 'padding-left', 'padding-right'],
- background: [
- 'background-image',
- 'background-size',
- 'background-position',
- 'background-repeat',
- 'background-origin',
- 'background-clip',
- 'background-attachment',
- 'background-color',
- ],
- font: [
- 'font-style',
- 'font-variant',
- 'font-weight',
- 'font-stretch',
- 'font-size',
- 'font-family',
- 'line-height',
- ],
- border: [
- 'border-top-width',
- 'border-bottom-width',
- 'border-left-width',
- 'border-right-width',
- 'border-top-style',
- 'border-bottom-style',
- 'border-left-style',
- 'border-right-style',
- 'border-top-color',
- 'border-bottom-color',
- 'border-left-color',
- 'border-right-color',
- ],
- 'border-top': ['border-top-width', 'border-top-style', 'border-top-color'],
- 'border-bottom': ['border-bottom-width', 'border-bottom-style', 'border-bottom-color'],
- 'border-left': ['border-left-width', 'border-left-style', 'border-left-color'],
- 'border-right': ['border-right-width', 'border-right-style', 'border-right-color'],
- 'border-width': [
- 'border-top-width',
- 'border-bottom-width',
- 'border-left-width',
- 'border-right-width',
- ],
- 'border-style': [
- 'border-top-style',
- 'border-bottom-style',
- 'border-left-style',
- 'border-right-style',
- ],
- 'border-color': [
- 'border-top-color',
- 'border-bottom-color',
- 'border-left-color',
- 'border-right-color',
- ],
- 'list-style': ['list-style-type', 'list-style-position', 'list-style-image'],
- 'border-radius': [
- 'border-top-right-radius',
- 'border-top-left-radius',
- 'border-bottom-right-radius',
- 'border-bottom-left-radius',
- ],
- transition: [
- 'transition-delay',
- 'transition-duration',
- 'transition-property',
- 'transition-timing-function',
- ],
- animation: [
- 'animation-name',
- 'animation-duration',
- 'animation-timing-function',
- 'animation-delay',
- 'animation-iteration-count',
- 'animation-direction',
- 'animation-fill-mode',
- 'animation-play-state',
- ],
- 'border-block-end': [
- 'border-block-end-width',
- 'border-block-end-style',
- 'border-block-end-color',
- ],
- 'border-block-start': [
- 'border-block-start-width',
- 'border-block-start-style',
- 'border-block-start-color',
- ],
- 'border-image': [
- 'border-image-source',
- 'border-image-slice',
- 'border-image-width',
- 'border-image-outset',
- 'border-image-repeat',
- ],
- 'border-inline-end': [
- 'border-inline-end-width',
- 'border-inline-end-style',
- 'border-inline-end-color',
- ],
- 'border-inline-start': [
- 'border-inline-start-width',
- 'border-inline-start-style',
- 'border-inline-start-color',
- ],
- 'column-rule': ['column-rule-width', 'column-rule-style', 'column-rule-color'],
- columns: ['column-width', 'column-count'],
- flex: ['flex-grow', 'flex-shrink', 'flex-basis'],
- 'flex-flow': ['flex-direction', 'flex-wrap'],
- grid: [
- 'grid-template-rows',
- 'grid-template-columns',
- 'grid-template-areas',
- 'grid-auto-rows',
- 'grid-auto-columns',
- 'grid-auto-flow',
- 'grid-column-gap',
- 'grid-row-gap',
- ],
- 'grid-area': ['grid-row-start', 'grid-column-start', 'grid-row-end', 'grid-column-end'],
- 'grid-column': ['grid-column-start', 'grid-column-end'],
- 'grid-gap': ['grid-row-gap', 'grid-column-gap'],
- 'grid-row': ['grid-row-start', 'grid-row-end'],
- 'grid-template': ['grid-template-columns', 'grid-template-rows', 'grid-template-areas'],
- outline: ['outline-color', 'outline-style', 'outline-width'],
- 'text-decoration': ['text-decoration-color', 'text-decoration-style', 'text-decoration-line'],
- 'text-emphasis': ['text-emphasis-style', 'text-emphasis-color'],
- mask: [
- 'mask-image',
- 'mask-mode',
- 'mask-position',
- 'mask-size',
- 'mask-repeat',
- 'mask-origin',
- 'mask-clip',
- 'mask-composite',
- ],
-};
diff --git a/assets/node_modules/stylelint/lib/reportUnknownRuleNames.js b/assets/node_modules/stylelint/lib/reportUnknownRuleNames.js
deleted file mode 100644
index d9baf91..0000000
--- a/assets/node_modules/stylelint/lib/reportUnknownRuleNames.js
+++ /dev/null
@@ -1,77 +0,0 @@
-'use strict';
-
-const leven = require('leven');
-const rules = require('./rules');
-
-const MAX_LEVENSHTEIN_DISTANCE = 6;
-const MAX_SUGGESTIONS_COUNT = 3;
-
-/**
- * @param {string} ruleName
- * @return {string[]}
- */
-function extractSuggestions(ruleName) {
- const suggestions = new Array(MAX_LEVENSHTEIN_DISTANCE);
-
- for (let i = 0; i < suggestions.length; i++) {
- suggestions[i] = [];
- }
-
- rules.forEach((existRuleName) => {
- const distance = leven(existRuleName, ruleName);
-
- if (distance <= MAX_LEVENSHTEIN_DISTANCE) {
- suggestions[distance - 1].push(existRuleName);
- }
- });
-
- /** @type {string[]} */
- let result = [];
-
- for (let i = 0; i < suggestions.length; i++) {
- if (suggestions[i].length > 0) {
- if (i < 3) {
- return suggestions[i].slice(0, MAX_SUGGESTIONS_COUNT);
- }
-
- result = result.concat(suggestions[i]);
- }
- }
-
- return result.slice(0, MAX_SUGGESTIONS_COUNT);
-}
-
-/**
- * @param {string} ruleName
- * @param {string[]} [suggestions=[]]
- * @return {string}
- */
-function rejectMessage(ruleName, suggestions = []) {
- return `Unknown rule ${ruleName}.${
- suggestions.length > 0 ? ` Did you mean ${suggestions.join(', ')}?` : ''
- }`;
-}
-
-/** @type {Map<string, string[]>} */
-const cache = new Map();
-
-/**
- * @param {string} unknownRuleName
- * @param {import('postcss').Root} postcssRoot
- * @param {import('stylelint').PostcssResult} postcssResult
- * @returns {void}
- */
-module.exports = function reportUnknownRuleNames(unknownRuleName, postcssRoot, postcssResult) {
- const suggestions = cache.has(unknownRuleName)
- ? /** @type {string[]} */ (cache.get(unknownRuleName))
- : extractSuggestions(unknownRuleName);
- const warningProperties = {
- severity: 'error',
- rule: unknownRuleName,
- node: postcssRoot,
- index: 0,
- };
-
- cache.set(unknownRuleName, suggestions);
- postcssResult.warn(rejectMessage(unknownRuleName, suggestions), warningProperties);
-};
diff --git a/assets/node_modules/stylelint/lib/requireRule.js b/assets/node_modules/stylelint/lib/requireRule.js
deleted file mode 100644
index a5d181b..0000000
--- a/assets/node_modules/stylelint/lib/requireRule.js
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict';
-
-const importLazy = require('import-lazy')(require);
-const rules = require('./rules');
-
-/**
- * @param {string} ruleName
- * @returns {false|any}
- */
-module.exports = function(ruleName) {
- if (rules.includes(ruleName)) {
- return importLazy(`./rules/${ruleName}`);
- }
-
- return false;
-};
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-blacklist/README.md b/assets/node_modules/stylelint/lib/rules/at-rule-blacklist/README.md
deleted file mode 100644
index e3ae323..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-blacklist/README.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# at-rule-blacklist
-
-Specify a blacklist of disallowed at-rules.
-
-```css
- @keyframes name {}
-/** ↑
- * At-rules like this */
-```
-
-## Options
-
-`array|string`: `["array", "of", "unprefixed", "at-rules"]|"at-rule"`
-
-Given:
-
-```js
-["extend", "keyframes"]
-```
-
-The following patterns are considered violations:
-
-```css
-a { @extend placeholder; }
-```
-
-```css
-@keyframes name {
- from { top: 10px; }
- to { top: 20px; }
-}
-```
-
-```css
-@-moz-keyframes name {
- from { top: 10px; }
- to { top: 20px; }
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@import "path/to/file.css";
-```
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-blacklist/index.js b/assets/node_modules/stylelint/lib/rules/at-rule-blacklist/index.js
deleted file mode 100644
index 3d28aee..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-blacklist/index.js
+++ /dev/null
@@ -1,55 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'at-rule-blacklist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (name) => `Unexpected at-rule "${name}"`,
-});
-
-function rule(blacklistInput) {
- // To allow for just a string as a parameter (not only arrays of strings)
- const blacklist = [].concat(blacklistInput);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: blacklist,
- possible: [_.isString],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules((atRule) => {
- const name = atRule.name;
-
- if (!isStandardSyntaxAtRule(atRule)) {
- return;
- }
-
- if (!blacklist.includes(postcss.vendor.unprefixed(name).toLowerCase())) {
- return;
- }
-
- report({
- message: messages.rejected(name),
- node: atRule,
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-empty-line-before/README.md b/assets/node_modules/stylelint/lib/rules/at-rule-empty-line-before/README.md
deleted file mode 100644
index 500af55..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-empty-line-before/README.md
+++ /dev/null
@@ -1,392 +0,0 @@
-# at-rule-empty-line-before
-
-Require or disallow an empty line before at-rules.
-
-```css
-a {}
- /* ← */
-@media {} /* ↑ */
-/** ↑
- * This line */
-```
-
-This rule ignores:
-
-- at-rules that are the very first node in the source
-- `@import` in Less.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule. We recommend to enable [`indentation`](../indentation/README.md) rule for better autofixing results with this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be an empty line before at-rules.
-
-The following patterns are considered violations:
-
-```css
-a {} @media {}
-```
-
-```css
-a {}
-@media {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {}
-
-@media {}
-```
-
-### `"never"`
-
-There *must never* be an empty line before at-rules.
-
-The following patterns are considered violations:
-
-```css
-a {}
-
-@media {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {} @media {}
-```
-
-```css
-a {}
-@media {}
-```
-
-## Optional secondary options
-
-### `except: ["after-same-name", "inside-block", "blockless-after-same-name-blockless", "blockless-after-blockless", "first-nested"]`
-
-#### `"after-same-name"`
-
-Reverse the primary option for at-rules that follow another at-rule with the same name.
-
-This means that you can group your at-rules by name.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-@charset "UTF-8";
-
-@import url(x.css);
-@import url(y.css);
-
-@media (min-width: 100px) {}
-@media (min-width: 200px) {}
-```
-
-```css
-a {
-
- @extends .foo;
- @extends .bar;
-
- @include x;
- @include y {}
-}
-```
-
-#### `"inside-block"`
-
-Reverse the primary option for at-rules that are inside a block.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```css
-a {
-
- @extend foo;
- color: pink;
-}
-
-b {
- color: pink;
-
- @extend foo;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- @extend foo;
- color: pink;
-}
-
-b {
- color: pink;
- @extend foo;
-}
-```
-
-#### `"blockless-after-same-name-blockless"`
-
-Reverse the primary option for blockless at-rules that follow another blockless at-rule with the same name.
-
-This means that you can group your blockless at-rules by name.
-
-Shared-line comments do not affect this option.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-@charset "UTF-8";
-
-@import url(x.css);
-@import url(y.css);
-```
-
-```css
-@charset "UTF-8";
-
-@import url(x.css); /* comment */
-@import url(y.css);
-```
-
-```css
-a {
-
- @extends .foo;
- @extends .bar;
-
- @include loop;
- @include doo;
-}
-```
-
-#### `"blockless-after-blockless"`
-
-Reverse the primary option for blockless at-rules that follow another blockless at-rule.
-
-Shared-line comments do not affect this option.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```css
-@import url(x.css);
-
-@import url(y.css);
-
-@media print {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@import url(x.css);
-@import url(y.css);
-
-@media print {}
-```
-
-```css
-@import url(x.css); /* comment */
-@import url(y.css);
-
-@media print {}
-```
-
-#### `"first-nested"`
-
-Reverse the primary option for at-rules that are nested and the first child of their parent node.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```css
-a {
-
- @extend foo;
- color: pink;
-}
-
-b {
- color: pink;
- @extend foo;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- @extend foo;
- color: pink;
-}
-
-b {
- color: pink;
-
- @extend foo;
-}
-```
-
-### `ignore: ["after-comment", "first-nested", "inside-block", "blockless-after-same-name-blockless", "blockless-after-blockless"]`
-
-#### `"after-comment"`
-
-Ignore at-rules that follow a comment.
-
-Shared-line comments do not trigger this option.
-
-The following patterns are *not* considered violations:
-
-```css
-/* comment */
-@media {}
-```
-
-```css
-/* comment */
-
-@media {}
-```
-
-```css
-@media {} /* comment */
-
-@media {}
-```
-
-#### `"first-nested"`
-
-Ignore at-rules that are nested and the first child of their parent node.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-@supports {
- @media {}
-
- @media {}
-}
-```
-
-#### `"inside-block"`
-
-Ignore at-rules that are inside a block.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- @extend foo;
- color: pink;
-}
-
-a {
-
- @extend foo;
- color: pink;
-}
-
-b {
- color: pink;
- @extend foo;
-}
-
-b {
- color: pink;
-
- @extend foo;
-}
-```
-
-#### `"blockless-after-same-name-blockless"`
-
-Ignore blockless at-rules that follow another blockless at-rule with the same name.
-
-This means that you can group your blockless at-rules by name.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-
-@charset "UTF-8";
-
-@import url(x.css);
-@import url(y.css);
-```
-
-```css
-a {
-
- @extends .foo;
- @extends .bar;
-
- @include loop;
- @include doo;
-}
-```
-
-#### `"blockless-after-blockless"`
-
-Ignore blockless at-rules that follow another blockless at-rule.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-@import url(x.css);
-
-@import url(y.css);
-
-@media print {}
-```
-
-```css
-@import url(x.css);
-@import url(y.css);
-
-@media print {}
-```
-
-### `ignoreAtRules: ["array", "of", "at-rules"]`
-
-Ignore specified at-rules.
-
-For example, with `"always"`.
-
-Given:
-
-```js
-["import"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@charset "UTF-8";
-@import {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-empty-line-before/index.js b/assets/node_modules/stylelint/lib/rules/at-rule-empty-line-before/index.js
deleted file mode 100644
index dcbe405..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-empty-line-before/index.js
+++ /dev/null
@@ -1,159 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const addEmptyLineBefore = require('../../utils/addEmptyLineBefore');
-const getPreviousNonSharedLineCommentNode = require('../../utils/getPreviousNonSharedLineCommentNode');
-const hasEmptyLine = require('../../utils/hasEmptyLine');
-const isAfterComment = require('../../utils/isAfterComment');
-const isBlocklessAtRuleAfterBlocklessAtRule = require('../../utils/isBlocklessAtRuleAfterBlocklessAtRule');
-const isBlocklessAtRuleAfterSameNameBlocklessAtRule = require('../../utils/isBlocklessAtRuleAfterSameNameBlocklessAtRule');
-const isFirstNested = require('../../utils/isFirstNested');
-const isFirstNodeOfRoot = require('../../utils/isFirstNodeOfRoot');
-const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
-const optionsMatches = require('../../utils/optionsMatches');
-const removeEmptyLinesBefore = require('../../utils/removeEmptyLinesBefore');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'at-rule-empty-line-before';
-
-const messages = ruleMessages(ruleName, {
- expected: 'Expected empty line before at-rule',
- rejected: 'Unexpected empty line before at-rule',
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: expectation,
- possible: ['always', 'never'],
- },
- {
- actual: options,
- possible: {
- except: [
- 'after-same-name',
- 'inside-block',
- 'blockless-after-same-name-blockless',
- 'blockless-after-blockless',
- 'first-nested',
- ],
- ignore: [
- 'after-comment',
- 'first-nested',
- 'inside-block',
- 'blockless-after-same-name-blockless',
- 'blockless-after-blockless',
- ],
- ignoreAtRules: [_.isString],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules((atRule) => {
- const isNested = atRule.parent.type !== 'root';
-
- // Ignore the first node
- if (isFirstNodeOfRoot(atRule)) {
- return;
- }
-
- if (!isStandardSyntaxAtRule(atRule)) {
- return;
- }
-
- // Return early if at-rule is to be ignored
- if (optionsMatches(options, 'ignoreAtRules', atRule.name)) {
- return;
- }
-
- // Optionally ignore the expectation if the node is blockless
- if (
- optionsMatches(options, 'ignore', 'blockless-after-blockless') &&
- isBlocklessAtRuleAfterBlocklessAtRule(atRule)
- ) {
- return;
- }
-
- // Optionally ignore the node if it is the first nested
- if (optionsMatches(options, 'ignore', 'first-nested') && isFirstNested(atRule)) {
- return;
- }
-
- // Optionally ignore the expectation if the node is blockless
- // and following another blockless at-rule with the same name
- if (
- optionsMatches(options, 'ignore', 'blockless-after-same-name-blockless') &&
- isBlocklessAtRuleAfterSameNameBlocklessAtRule(atRule)
- ) {
- return;
- }
-
- // Optionally ignore the expectation if the node is inside a block
- if (optionsMatches(options, 'ignore', 'inside-block') && isNested) {
- return;
- }
-
- // Optionally ignore the expectation if a comment precedes this node
- if (optionsMatches(options, 'ignore', 'after-comment') && isAfterComment(atRule)) {
- return;
- }
-
- const hasEmptyLineBefore = hasEmptyLine(atRule.raws.before);
- let expectEmptyLineBefore = expectation === 'always';
-
- // Optionally reverse the expectation if any exceptions apply
- if (
- (optionsMatches(options, 'except', 'after-same-name') &&
- isAtRuleAfterSameNameAtRule(atRule)) ||
- (optionsMatches(options, 'except', 'inside-block') && isNested) ||
- (optionsMatches(options, 'except', 'first-nested') && isFirstNested(atRule)) ||
- (optionsMatches(options, 'except', 'blockless-after-blockless') &&
- isBlocklessAtRuleAfterBlocklessAtRule(atRule)) ||
- (optionsMatches(options, 'except', 'blockless-after-same-name-blockless') &&
- isBlocklessAtRuleAfterSameNameBlocklessAtRule(atRule))
- ) {
- expectEmptyLineBefore = !expectEmptyLineBefore;
- }
-
- // Return if the expectation is met
- if (expectEmptyLineBefore === hasEmptyLineBefore) {
- return;
- }
-
- // Fix
- if (context.fix) {
- if (expectEmptyLineBefore) {
- addEmptyLineBefore(atRule, context.newline);
- } else {
- removeEmptyLinesBefore(atRule, context.newline);
- }
-
- return;
- }
-
- const message = expectEmptyLineBefore ? messages.expected : messages.rejected;
-
- report({ message, node: atRule, result, ruleName });
- });
- };
-}
-
-function isAtRuleAfterSameNameAtRule(atRule) {
- const previousNode = getPreviousNonSharedLineCommentNode(atRule);
-
- return previousNode && previousNode.type === 'atrule' && previousNode.name === atRule.name;
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-name-case/README.md b/assets/node_modules/stylelint/lib/rules/at-rule-name-case/README.md
deleted file mode 100644
index 14f1705..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-name-case/README.md
+++ /dev/null
@@ -1,93 +0,0 @@
-# at-rule-name-case
-
-Specify lowercase or uppercase for at-rules names.
-
-```css
- @media (min-width: 10px) {}
-/** ↑
- * This at-rule name */
-```
-
-Only lowercase at-rule names are valid in SCSS.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix some of the problems reported by this rule.
-
-## Options
-
-`string`: `"lower"|"upper"`
-
-### `"lower"`
-
-The following patterns are considered violations:
-
-```css
-@Charset 'UTF-8';
-```
-
-```css
-@cHarSeT 'UTF-8';
-```
-
-```css
-@CHARSET 'UTF-8';
-```
-
-```css
-@Media (min-width: 50em) {}
-```
-
-```css
-@mEdIa (min-width: 50em) {}
-```
-
-```css
-@MEDIA (min-width: 50em) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@charset 'UTF-8';
-```
-
-```css
-@media (min-width: 50em) {}
-```
-
-### `"upper"`
-
-The following patterns are considered violations:
-
-```css
-@Charset 'UTF-8';
-```
-
-```css
-@cHarSeT 'UTF-8';
-```
-
-```css
-@charset 'UTF-8';
-```
-
-```css
-@Media (min-width: 50em) {}
-```
-
-```css
-@mEdIa (min-width: 50em) {}
-```
-
-```css
-@media (min-width: 50em) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@CHARSET 'UTF-8';
-```
-
-```css
-@MEDIA (min-width: 50em) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-name-case/index.js b/assets/node_modules/stylelint/lib/rules/at-rule-name-case/index.js
deleted file mode 100644
index edd0bb4..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-name-case/index.js
+++ /dev/null
@@ -1,56 +0,0 @@
-'use strict';
-
-const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'at-rule-name-case';
-
-const messages = ruleMessages(ruleName, {
- expected: (actual, expected) => `Expected "${actual}" to be "${expected}"`,
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['lower', 'upper'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules((atRule) => {
- if (!isStandardSyntaxAtRule(atRule)) {
- return;
- }
-
- const name = atRule.name;
-
- const expectedName = expectation === 'lower' ? name.toLowerCase() : name.toUpperCase();
-
- if (name === expectedName) {
- return;
- }
-
- if (context.fix) {
- atRule.name = expectedName;
-
- return;
- }
-
- report({
- message: messages.expected(name, expectedName),
- node: atRule,
- ruleName,
- result,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-name-newline-after/README.md b/assets/node_modules/stylelint/lib/rules/at-rule-name-newline-after/README.md
deleted file mode 100644
index 077ef8b..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-name-newline-after/README.md
+++ /dev/null
@@ -1,94 +0,0 @@
-# at-rule-name-newline-after
-
-Require a newline after at-rule names.
-
-```css
- @media
- /*↑*/ (max-width: 600px) {}
-/** ↑
- * The newline after this at-rule name */
-```
-
-## Options
-
-`string`: `"always"|"always-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline after at-rule names.
-
-The following patterns are considered violations:
-
-```css
-@charset "UTF-8";
-```
-
-```css
-@media (min-width: 700px) and
- (orientation: landscape) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@charset
- "UTF-8";
-```
-
-```css
-@import
- "x.css" screen and
- (orientation:landscape);
-```
-
-```css
-@media
- (min-width: 700px) and (orientation: landscape) {}
-```
-
-```css
-@media
- (min-width: 700px) and
- (orientation: landscape) {}
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline after at-rule names in at-rules with multi-line parameters.
-
-The following patterns are considered violations:
-
-```css
-@import "x.css" screen and
- (orientation:landscape);
-```
-
-```css
-@media (min-width: 700px) and
- (orientation: landscape) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@charset "UTF-8";
-```
-
-```css
-@charset
- "UTF-8";
-```
-
-```css
-@import "x.css" screen and (orientation:landscape);
-```
-
-```css
-@media (min-width: 700px) and (orientation: landscape) {}
-```
-
-```css
-@media
- (min-width: 700px) and
- (orientation: landscape) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-name-newline-after/index.js b/assets/node_modules/stylelint/lib/rules/at-rule-name-newline-after/index.js
deleted file mode 100644
index e37d94a..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-name-newline-after/index.js
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict';
-
-const atRuleNameSpaceChecker = require('../atRuleNameSpaceChecker');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'at-rule-name-newline-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: (name) => `Expected newline after at-rule name "${name}"`,
-});
-
-function rule(expectation) {
- const checker = whitespaceChecker('newline', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-multi-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- atRuleNameSpaceChecker({
- root,
- result,
- locationChecker: checker.afterOneOnly,
- checkedRuleName: ruleName,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-name-space-after/README.md b/assets/node_modules/stylelint/lib/rules/at-rule-name-space-after/README.md
deleted file mode 100644
index e4c8f0c..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-name-space-after/README.md
+++ /dev/null
@@ -1,100 +0,0 @@
-# at-rule-name-space-after
-
-Require a single space after at-rule names.
-
-```css
-@media (max-width: 600px) {}
-/** ↑
- * The space after at-rule names */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"always-single-line"`
-
-### `"always"`
-
-There *must always* be a single space after at-rule names.
-
-The following patterns are considered violations:
-
-```css
-@charset"UTF-8";
-```
-
-```css
-@media(min-width: 700px) {}
-```
-
-```css
-@media (min-width: 700px) {}
-```
-
-```css
-@media
-(min-width: 700px) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@charset "UTF-8";
-```
-
-```css
-@import url("x.css");
-```
-
-```css
-@media (min-width: 700px) {}
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space after at-rule names in single-line declaration blocks.
-
-The following patterns are considered violations:
-
-```css
-@charset"UTF-8";
-```
-
-```css
-@media(min-width: 700px) {}
-```
-
-```css
-@media (min-width: 700px) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@charset "UTF-8";
-```
-
-```css
-@import url("x.css");
-```
-
-```css
-@media (min-width: 700px) {}
-```
-
-```css
-@media
-(min-width: 700px) {}
-```
-
-```css
-@media(min-width: 700px) and
- (orientation: portrait) {}
-```
-
-```css
-@media
- (min-width: 700px) and
- (orientation: portrait) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-name-space-after/index.js b/assets/node_modules/stylelint/lib/rules/at-rule-name-space-after/index.js
deleted file mode 100644
index 867b5c2..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-name-space-after/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict';
-
-const atRuleNameSpaceChecker = require('../atRuleNameSpaceChecker');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'at-rule-name-space-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: (name) => `Expected single space after at-rule name "${name}"`,
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-single-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- atRuleNameSpaceChecker({
- root,
- result,
- locationChecker: checker.after,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (atRule) => {
- atRule.raws.afterName = atRule.raws.afterName.replace(/^\s*/, ' ');
- }
- : null,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-no-unknown/README.md b/assets/node_modules/stylelint/lib/rules/at-rule-no-unknown/README.md
deleted file mode 100644
index cd345a7..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-no-unknown/README.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# at-rule-no-unknown
-
-Disallow unknown at-rules.
-
-```css
- @unknown (max-width: 960px) {}
-/** ↑
- * At-rules like this */
-```
-
-This rule considers at-rules defined in the CSS Specifications, up to and including Editor's Drafts, to be known.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-@unknown {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@charset "UTF-8";
-```
-
-```css
-@CHARSET "UTF-8";
-```
-
-```css
-@media (max-width: 960px) {}
-```
-
-```css
-@font-feature-values Font One {
- @styleset {}
-}
-```
-
-## Optional secondary options
-
-### `ignoreAtRules: ["/regex/", /regex/, "string"]`
-
-Given:
-
-```js
-["/^my-/", "custom"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@my-at-rule "x.css";
-```
-
-```css
-@my-other-at-rule {}
-```
-
-```css
-@custom {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-no-unknown/index.js b/assets/node_modules/stylelint/lib/rules/at-rule-no-unknown/index.js
deleted file mode 100644
index 15ac029..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-no-unknown/index.js
+++ /dev/null
@@ -1,65 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
-const keywordSets = require('../../reference/keywordSets');
-const optionsMatches = require('../../utils/optionsMatches');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'at-rule-no-unknown';
-
-const messages = ruleMessages(ruleName, {
- rejected: (atRule) => `Unexpected unknown at-rule "${atRule}"`,
-});
-
-function rule(actual, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- { actual },
- {
- actual: options,
- possible: {
- ignoreAtRules: [_.isString, _.isRegExp],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules((atRule) => {
- if (!isStandardSyntaxAtRule(atRule)) {
- return;
- }
-
- const name = atRule.name;
-
- // Return early if at-rule is to be ignored
- if (optionsMatches(options, 'ignoreAtRules', atRule.name)) {
- return;
- }
-
- if (postcss.vendor.prefix(name) || keywordSets.atRules.has(name.toLowerCase())) {
- return;
- }
-
- report({
- message: messages.rejected(`@${name}`),
- node: atRule,
- ruleName,
- result,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-no-vendor-prefix/README.md b/assets/node_modules/stylelint/lib/rules/at-rule-no-vendor-prefix/README.md
deleted file mode 100644
index 4a93780..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-no-vendor-prefix/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# at-rule-no-vendor-prefix
-
-Disallow vendor prefixes for at-rules.
-
-```css
- @-webkit-keyframes { 0% { top: 0; } }
-/** ↑
- * This prefix */
-```
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-@-webkit-keyframes { 0% { top: 0; } }
-```
-
-```css
-@-ms-viewport { orientation: landscape; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@keyframes { 0% { top: 0; } }
-```
-
-```css
-@viewport { orientation: landscape; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-no-vendor-prefix/index.js b/assets/node_modules/stylelint/lib/rules/at-rule-no-vendor-prefix/index.js
deleted file mode 100644
index 44ba631..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-no-vendor-prefix/index.js
+++ /dev/null
@@ -1,50 +0,0 @@
-'use strict';
-
-const isAutoprefixable = require('../../utils/isAutoprefixable');
-const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'at-rule-no-vendor-prefix';
-
-const messages = ruleMessages(ruleName, {
- rejected: (p) => `Unexpected vendor-prefixed at-rule "@${p}"`,
-});
-
-function rule(actual) {
- return function(root, result) {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules((atRule) => {
- if (!isStandardSyntaxAtRule(atRule)) {
- return;
- }
-
- const name = atRule.name;
-
- if (!name.startsWith('-')) {
- return;
- }
-
- if (!isAutoprefixable.atRuleName(name)) {
- return;
- }
-
- report({
- message: messages.rejected(name),
- node: atRule,
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-property-requirelist/README.md b/assets/node_modules/stylelint/lib/rules/at-rule-property-requirelist/README.md
deleted file mode 100644
index 42fffff..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-property-requirelist/README.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# at-rule-property-requirelist
-
-Specify a requirelist of properties for an at-rule.
-
-```css
- @font-face { font-display: swap; font-family: 'foo'; }
-/** ↑ ↑ ↑
- * At-rule and required property names */
-```
-
-## Options
-
-`object`: `{
- "at-rule-name": ["array", "of", "properties"]
-}`
-
-Given:
-
-```js
-{
- "font-face": ["font-display", "font-family", "font-style"]
-}
-```
-
-The following patterns are considered violations:
-
-```css
-@font-face {
- font-family: 'foo';
- src: url('./fonts/foo.woff2') format('woff2');
-}
-```
-
-```css
-@font-face {
- font-family: 'foo';
- font-style: normal;
- src: url('./fonts/foo.woff2') format('woff2');
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@font-face {
- font-display: swap;
- font-family: 'foo';
- font-style: normal;
- src: url('./fonts/foo.woff2') format('woff2');
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-property-requirelist/index.js b/assets/node_modules/stylelint/lib/rules/at-rule-property-requirelist/index.js
deleted file mode 100644
index 9095ca0..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-property-requirelist/index.js
+++ /dev/null
@@ -1,61 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'at-rule-property-requirelist';
-
-const messages = ruleMessages(ruleName, {
- expected: (property, atRule) => `Expected property "${property}" for at-rule "${atRule}"`,
-});
-
-function rule(primary) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: primary,
- possible: [_.isObject],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules((atRule) => {
- if (!isStandardSyntaxAtRule(atRule)) {
- return;
- }
-
- const { name, nodes } = atRule;
- const atRuleName = name.toLowerCase();
-
- if (!primary[atRuleName]) {
- return;
- }
-
- primary[atRuleName].forEach((property) => {
- const propertyName = property.toLowerCase();
-
- const hasProperty = nodes.find((node) => node.prop.toLowerCase() === propertyName);
-
- if (hasProperty) {
- return;
- }
-
- return report({
- message: messages.expected(propertyName, atRuleName),
- node: atRule,
- result,
- ruleName,
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-semicolon-newline-after/README.md b/assets/node_modules/stylelint/lib/rules/at-rule-semicolon-newline-after/README.md
deleted file mode 100644
index 07c452a..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-semicolon-newline-after/README.md
+++ /dev/null
@@ -1,56 +0,0 @@
-# at-rule-semicolon-newline-after
-
-Require a newline after the semicolon of at-rules.
-
-```css
-@import url("x.css");
-@import url("y.css");
-/** ↑
- * The newline after these semicolons */
-```
-
-This rule allows an end-of-line comment followed by a newline. For example:
-
-```css
-@import url("x.css"); /* end-of-line comment */
-
-a {}
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"`
-
-### `"always"`
-
-There *must always* be a newline after the semicolon.
-
-The following patterns are considered violations:
-
-```css
-@import url("x.css"); @import url("y.css");
-```
-
-```css
-@import url("x.css"); a {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@import url("x.css");
-@import url("y.css");
-```
-
-```css
-@import url("x.css"); /* end-of-line comment */
-a {}
-```
-
-```css
-@import url("x.css");
-
-a {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-semicolon-newline-after/index.js b/assets/node_modules/stylelint/lib/rules/at-rule-semicolon-newline-after/index.js
deleted file mode 100644
index 103a4a0..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-semicolon-newline-after/index.js
+++ /dev/null
@@ -1,76 +0,0 @@
-'use strict';
-
-const hasBlock = require('../../utils/hasBlock');
-const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
-const nextNonCommentNode = require('../../utils/nextNonCommentNode');
-const rawNodeString = require('../../utils/rawNodeString');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'at-rule-semicolon-newline-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected newline after ";"',
-});
-
-function rule(actual, secondary, context) {
- const checker = whitespaceChecker('newline', actual, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual,
- possible: ['always'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules((atRule) => {
- const nextNode = atRule.next();
-
- if (!nextNode) {
- return;
- }
-
- if (hasBlock(atRule)) {
- return;
- }
-
- if (!isStandardSyntaxAtRule(atRule)) {
- return;
- }
-
- // Allow an end-of-line comment
- const nodeToCheck = nextNonCommentNode(nextNode);
-
- if (!nodeToCheck) {
- return;
- }
-
- checker.afterOneOnly({
- source: rawNodeString(nodeToCheck),
- index: -1,
- err: (msg) => {
- if (context.fix) {
- nodeToCheck.raws.before = context.newline + nodeToCheck.raws.before;
- } else {
- report({
- message: msg,
- node: atRule,
- index: atRule.toString().length + 1,
- result,
- ruleName,
- });
- }
- },
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-semicolon-space-before/README.md b/assets/node_modules/stylelint/lib/rules/at-rule-semicolon-space-before/README.md
deleted file mode 100644
index d0230ec..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-semicolon-space-before/README.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# at-rule-semicolon-space-before
-
-Require a single space or disallow whitespace before the semicolons of at-rules.
-
-```css
-@import "components/buttons";
-/** ↑
- * The space before this semicolon */
-```
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a single space before the semicolons.
-
-The following pattern is considered a violation:
-
-```css
-@import "components/buttons";
-```
-
-The following pattern is *not* considered a violation:
-
-```css
-@import "components/buttons" ;
-```
-
-### `"never"`
-
-There *must never* be a single space before the semicolons.
-
-The following pattern is considered a violation:
-
-```css
-@import "components/buttons" ;
-```
-
-The following pattern is *not* considered a violation:
-
-```css
-@import "components/buttons";
-```
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-semicolon-space-before/index.js b/assets/node_modules/stylelint/lib/rules/at-rule-semicolon-space-before/index.js
deleted file mode 100644
index 631b2c0..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-semicolon-space-before/index.js
+++ /dev/null
@@ -1,61 +0,0 @@
-'use strict';
-
-const hasBlock = require('../../utils/hasBlock');
-const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
-const rawNodeString = require('../../utils/rawNodeString');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'at-rule-semicolon-space-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected single space before ";"',
- rejectedBefore: () => 'Unexpected whitespace before ";"',
-});
-
-function rule(expectation) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules((atRule) => {
- if (hasBlock(atRule)) {
- return;
- }
-
- if (!isStandardSyntaxAtRule(atRule)) {
- return;
- }
-
- const nodeString = rawNodeString(atRule);
-
- checker.before({
- source: nodeString,
- index: nodeString.length,
- err: (m) => {
- report({
- message: m,
- node: atRule,
- index: nodeString.length - 1,
- result,
- ruleName,
- });
- },
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-whitelist/README.md b/assets/node_modules/stylelint/lib/rules/at-rule-whitelist/README.md
deleted file mode 100644
index be8bb3b..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-whitelist/README.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# at-rule-whitelist
-
-Specify a whitelist of allowed at-rules.
-
-```css
- @keyframes name {}
-/** ↑
- * At-rules like this */
-```
-
-## Options
-
-`array|string`: `["array", "of", "unprefixed", "at-rules"]|"at-rule"`
-
-Given:
-
-```js
-["extend", "keyframes"]
-```
-
-The following patterns are considered violations:
-
-```css
-@import "path/to/file.css";
-```
-
-```css
-@media screen and (max-width: 1024px) {
- a { display: none; }
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { @extend placeholder; }
-```
-
-```css
-@keyframes name {
- from { top: 10px; }
- to { top: 20px; }
-}
-```
-
-```css
-@KEYFRAMES name {
- from { top: 10px; }
- to { top: 20px; }
-}
-```
-
-```css
-@-moz-keyframes name {
- from { top: 10px; }
- to { top: 20px; }
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/at-rule-whitelist/index.js b/assets/node_modules/stylelint/lib/rules/at-rule-whitelist/index.js
deleted file mode 100644
index 2f0e770..0000000
--- a/assets/node_modules/stylelint/lib/rules/at-rule-whitelist/index.js
+++ /dev/null
@@ -1,55 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'at-rule-whitelist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (name) => `Unexpected at-rule "${name}"`,
-});
-
-function rule(whitelistInput) {
- // To allow for just a string as a parameter (not only arrays of strings)
- const whitelist = [].concat(whitelistInput);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: whitelist,
- possible: [_.isString],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules((atRule) => {
- const name = atRule.name;
-
- if (!isStandardSyntaxAtRule(atRule)) {
- return;
- }
-
- if (whitelist.includes(postcss.vendor.unprefixed(name).toLowerCase())) {
- return;
- }
-
- report({
- message: messages.rejected(name),
- node: atRule,
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/atRuleNameSpaceChecker.js b/assets/node_modules/stylelint/lib/rules/atRuleNameSpaceChecker.js
deleted file mode 100644
index 4fa38b9..0000000
--- a/assets/node_modules/stylelint/lib/rules/atRuleNameSpaceChecker.js
+++ /dev/null
@@ -1,41 +0,0 @@
-'use strict';
-
-const isStandardSyntaxAtRule = require('../utils/isStandardSyntaxAtRule');
-const report = require('../utils/report');
-
-module.exports = function(options) {
- options.root.walkAtRules((atRule) => {
- if (!isStandardSyntaxAtRule(atRule)) {
- return;
- }
-
- checkColon(
- `@${atRule.name}${atRule.raws.afterName || ''}${atRule.params}`,
- atRule.name.length,
- atRule,
- );
- });
-
- function checkColon(source, index, node) {
- options.locationChecker({
- source,
- index,
- err: (m) => {
- if (options.fix) {
- options.fix(node);
-
- return;
- }
-
- report({
- message: m,
- node,
- index,
- result: options.result,
- ruleName: options.checkedRuleName,
- });
- },
- errTarget: `@${node.name}`,
- });
- }
-};
diff --git a/assets/node_modules/stylelint/lib/rules/block-closing-brace-empty-line-before/README.md b/assets/node_modules/stylelint/lib/rules/block-closing-brace-empty-line-before/README.md
deleted file mode 100644
index 6d90f4e..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-closing-brace-empty-line-before/README.md
+++ /dev/null
@@ -1,217 +0,0 @@
-# block-closing-brace-empty-line-before
-
-Require or disallow an empty line before the closing brace of blocks.
-
-```css
-a {
- color: pink;
- /* ← */
-} /* ↑ */
-/** ↑
- * This line */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always-multi-line"|"never"`
-
-### `always-multi-line`
-
-The following patterns are considered violations:
-
-```css
-a {
- color: pink;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- color: pink;
-
-}
-```
-
-```css
-a { color: pink; }
-```
-
-### `never`
-
-The following patterns are considered violations:
-
-```css
-a {
- color: pink;
-
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- color: pink;
-}
-```
-
-```css
-a { color: pink; }
-```
-
-## Optional secondary options
-
-### `except: ["after-closing-brace"]`
-
-When a rule is nested, `after-closing-brace` brace will reverse the primary option.
-
-For example, with `"never"` and `except: ["after-closing-brace"]`:
-
-The following patterns are considered violations:
-
-```css
-@media print {
-
- a {
- color: aquamarine;
- }
-}
-```
-
-```css
-@supports (animation-name: test) {
-
- a {
- color: aquamarine;
- }
-}
-```
-
-```css
-@keyframes test {
-
- 100% {
- color: aquamarine;
- }
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media print {
-
- a {
- color: aquamarine;
- }
-
-}
-```
-
-```css
-@font-face {
- font-family: "MyFont";
- src: url("myfont.woff2") format("woff2");
-}
-```
-
-```css
-@supports (animation-name: test) {
-
- a {
- color: aquamarine;
- }
-
-}
-```
-
-```css
-@keyframes test {
-
- 100% {
- color: aquamarine;
- }
-
-}
-```
-
-For example, with `"always-multi-line"` and `except: ["after-closing-brace"]`:
-
-The following patterns are considered violations:
-
-```css
-@media print {
-
- a {
- color: aquamarine;
-
- }
-
-}
-```
-
-```css
-@supports (animation-name: test) {
-
- a {
- color: aquamarine;
-
- }
-
-}
-```
-
-```css
-@keyframes test {
-
- 100% {
- color: aquamarine;
-
- }
-
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media print {
-
- a {
- color: aquamarine;
-
- }
-}
-```
-
-```css
-@font-face {
- font-family: "MyFont";
- src: url("myfont.woff2") format("woff2");
-
-}
-```
-
-```css
-@supports (animation-name: test) {
-
- a {
- color: aquamarine;
-
- }
-}
-```
-
-```css
-@keyframes test {
-
- 100% {
- color: aquamarine;
-
- }
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/block-closing-brace-empty-line-before/index.js b/assets/node_modules/stylelint/lib/rules/block-closing-brace-empty-line-before/index.js
deleted file mode 100644
index a2a119b..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-closing-brace-empty-line-before/index.js
+++ /dev/null
@@ -1,116 +0,0 @@
-'use strict';
-
-const addEmptyLineAfter = require('../../utils/addEmptyLineAfter');
-const blockString = require('../../utils/blockString');
-const hasBlock = require('../../utils/hasBlock');
-const hasEmptyBlock = require('../../utils/hasEmptyBlock');
-const hasEmptyLine = require('../../utils/hasEmptyLine');
-const isSingleLineString = require('../../utils/isSingleLineString');
-const optionsMatches = require('../../utils/optionsMatches');
-const removeEmptyLineAfter = require('../../utils/removeEmptyLinesAfter');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'block-closing-brace-empty-line-before';
-
-const messages = ruleMessages(ruleName, {
- expected: 'Expected empty line before closing brace',
- rejected: 'Unexpected empty line before closing brace',
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: expectation,
- possible: ['always-multi-line', 'never'],
- },
- {
- actual: options,
- possible: {
- except: ['after-closing-brace'],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- // Check both kinds of statements: rules and at-rules
- root.walkRules(check);
- root.walkAtRules(check);
-
- function check(statement) {
- // Return early if blockless or has empty block
- if (!hasBlock(statement) || hasEmptyBlock(statement)) {
- return;
- }
-
- // Get whitespace after ""}", ignoring extra semicolon
- const before = (statement.raws.after || '').replace(/;+/, '');
-
- // Calculate index
- const statementString = statement.toString();
- let index = statementString.length - 1;
-
- if (statementString[index - 1] === '\r') {
- index -= 1;
- }
-
- // Set expectation
- const expectEmptyLineBefore = (() => {
- const childNodeTypes = statement.nodes.map((item) => item.type);
-
- // Reverse the primary options if `after-closing-brace` is set
- if (
- optionsMatches(options, 'except', 'after-closing-brace') &&
- statement.type === 'atrule' &&
- !childNodeTypes.includes('decl')
- ) {
- return expectation === 'never';
- }
-
- return Boolean(
- expectation === 'always-multi-line' && !isSingleLineString(blockString(statement)),
- );
- })();
-
- // Check for at least one empty line
- const hasEmptyLineBefore = hasEmptyLine(before);
-
- // Return if the expectation is met
- if (expectEmptyLineBefore === hasEmptyLineBefore) {
- return;
- }
-
- if (context.fix) {
- if (expectEmptyLineBefore) {
- addEmptyLineAfter(statement, context.newline);
- } else {
- removeEmptyLineAfter(statement, context.newline);
- }
-
- return;
- }
-
- const message = expectEmptyLineBefore ? messages.expected : messages.rejected;
-
- report({
- message,
- result,
- ruleName,
- node: statement,
- index,
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-after/README.md b/assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-after/README.md
deleted file mode 100644
index f070d94..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-after/README.md
+++ /dev/null
@@ -1,176 +0,0 @@
-# block-closing-brace-newline-after
-
-Require a newline or disallow whitespace after the closing brace of blocks.
-
-```css
-a { color: pink; }
-a { color: red; }↑
-/** ↑
- * The newline after this brace */
-```
-
-This rule allows an end-of-line comment separated from the closing brace by spaces, as long as the comment contains no newlines. For example,
-
-```css
-a {
- color: pink;
-} /* end-of-line comment */
-```
-
-This rule allows a trailing semicolon after the closing brace of a block. For example,
-
-```css
-:root {
- --toolbar-theme: {
- background-color: hsl(120, 70%, 95%);
- };
-/* ↑
- * This semicolon */
-}
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"always-single-line"|"never-single-line"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline after the closing brace.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }b { color: red; }
-```
-
-```css
-a { color: pink;
-} b { color: red; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-b { color: red; }
-```
-
-### `"always-single-line"`
-
-There *must always* be a newline after the closing brace in single-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; } b { color: red; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink;
-} b { color: red; }
-```
-
-```css
-a { color: pink; }
-b { color: red; }
-```
-
-### `"never-single-line"`
-
-There *must never* be whitespace after the closing brace in single-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; } b { color: red; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }b { color: red; }
-```
-
-```css
-a { color: pink;
-} b { color: red; }
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline after the closing brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink;
-}b { color: red; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }b { color: red; }
-```
-
-```css
-a { color: pink;
-}
-b { color: red; }
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace after the closing brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink;
-} b { color: red; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; } b { color: red; }
-```
-
-```css
-a { color: pink;
-}b { color: red; }
-```
-
-## Optional secondary options
-
-### `ignoreAtRules: ["/regex/", "non-regex"]`
-
-Ignore specified at-rules.
-
-For example, with `"always"` or `"always-multi-line"`.
-
-Given:
-
-```js
-["if", "else"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@if ($var) {
- color: pink;
-} @else if ($var2) {
- color: red;
-} @else {
- color: blue;
-}
-```
-
-```css
-@if ($var) { color: pink; } @else { color: blue; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-after/index.js b/assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-after/index.js
deleted file mode 100644
index c17b0ef..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-after/index.js
+++ /dev/null
@@ -1,135 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const blockString = require('../../utils/blockString');
-const hasBlock = require('../../utils/hasBlock');
-const optionsMatches = require('../../utils/optionsMatches');
-const rawNodeString = require('../../utils/rawNodeString');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'block-closing-brace-newline-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected newline after "}"',
- expectedAfterSingleLine: () => 'Expected newline after "}" of a single-line block',
- rejectedAfterSingleLine: () => 'Unexpected whitespace after "}" of a single-line block',
- expectedAfterMultiLine: () => 'Expected newline after "}" of a multi-line block',
- rejectedAfterMultiLine: () => 'Unexpected whitespace after "}" of a multi-line block',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('newline', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: expectation,
- possible: [
- 'always',
- 'always-single-line',
- 'never-single-line',
- 'always-multi-line',
- 'never-multi-line',
- ],
- },
- {
- actual: options,
- possible: {
- ignoreAtRules: [_.isString],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- // Check both kinds of statements: rules and at-rules
- root.walkRules(check);
- root.walkAtRules(check);
-
- function check(statement) {
- if (!hasBlock(statement)) {
- return;
- }
-
- if (optionsMatches(options, 'ignoreAtRules', statement.name)) {
- return;
- }
-
- const nextNode = statement.next();
-
- if (!nextNode) {
- return;
- }
-
- // Allow an end-of-line comment x spaces after the brace
- const nextNodeIsSingleLineComment =
- nextNode.type === 'comment' &&
- !/[^ ]/.test(nextNode.raws.before || '') &&
- !nextNode.toString().includes('\n');
-
- const nodeToCheck = nextNodeIsSingleLineComment ? nextNode.next() : nextNode;
-
- if (!nodeToCheck) {
- return;
- }
-
- let reportIndex = statement.toString().length;
- let source = rawNodeString(nodeToCheck);
-
- // Skip a semicolon at the beginning, if any
- if (source && source.startsWith(';')) {
- source = source.slice(1);
- reportIndex++;
- }
-
- // Only check one after, because there might be other
- // spaces handled by the indentation rule
- checker.afterOneOnly({
- source,
- index: -1,
- lineCheckStr: blockString(statement),
- err: (msg) => {
- if (context.fix) {
- if (expectation.startsWith('always')) {
- const index = nodeToCheck.raws.before.search(/\r?\n/);
-
- if (index >= 0) {
- nodeToCheck.raws.before = nodeToCheck.raws.before.slice(index);
- } else {
- nodeToCheck.raws.before = context.newline + nodeToCheck.raws.before;
- }
-
- return;
- }
-
- if (expectation.startsWith('never')) {
- nodeToCheck.raws.before = '';
-
- return;
- }
- }
-
- report({
- message: msg,
- node: statement,
- index: reportIndex,
- result,
- ruleName,
- });
- },
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-before/README.md b/assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-before/README.md
deleted file mode 100644
index c2c0957..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-before/README.md
+++ /dev/null
@@ -1,83 +0,0 @@
-# block-closing-brace-newline-before
-
-Require a newline or disallow whitespace before the closing brace of blocks.
-
-```css
- a { color: pink;
- }
-/** ↑
- * The newline before this brace */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline before the closing brace.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink;}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink;
-}
-```
-
-```css
-a {
-color: pink;
-}
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline before the closing brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a {
-color: pink;}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a { color: pink;
-}
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace before the closing brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a {
-color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a {
-color: pink;}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-before/index.js b/assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-before/index.js
deleted file mode 100644
index aad1685..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-closing-brace-newline-before/index.js
+++ /dev/null
@@ -1,115 +0,0 @@
-'use strict';
-
-const blockString = require('../../utils/blockString');
-const hasBlock = require('../../utils/hasBlock');
-const hasEmptyBlock = require('../../utils/hasEmptyBlock');
-const isSingleLineString = require('../../utils/isSingleLineString');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'block-closing-brace-newline-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: 'Expected newline before "}"',
- expectedBeforeMultiLine: 'Expected newline before "}" of a multi-line block',
- rejectedBeforeMultiLine: 'Unexpected whitespace before "}" of a multi-line block',
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-multi-line', 'never-multi-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- // Check both kinds of statements: rules and at-rules
- root.walkRules(check);
- root.walkAtRules(check);
-
- function check(statement) {
- // Return early if blockless or has empty block
- if (!hasBlock(statement) || hasEmptyBlock(statement)) {
- return;
- }
-
- // Ignore extra semicolon
- const after = (statement.raws.after || '').replace(/;+/, '');
-
- if (after === undefined) {
- return;
- }
-
- const blockIsMultiLine = !isSingleLineString(blockString(statement));
- const statementString = statement.toString();
-
- let index = statementString.length - 2;
-
- if (statementString[index - 1] === '\r') {
- index -= 1;
- }
-
- // We're really just checking whether a
- // newline *starts* the block's final space -- between
- // the last declaration and the closing brace. We can
- // ignore any other whitespace between them, because that
- // will be checked by the indentation rule.
- if (!after.startsWith('\n') && !after.startsWith('\r\n')) {
- if (expectation === 'always') {
- complain(messages.expectedBefore);
- } else if (blockIsMultiLine && expectation === 'always-multi-line') {
- complain(messages.expectedBeforeMultiLine);
- }
- }
-
- if (after !== '' && blockIsMultiLine && expectation === 'never-multi-line') {
- complain(messages.rejectedBeforeMultiLine);
- }
-
- function complain(message) {
- if (context.fix) {
- if (expectation.startsWith('always')) {
- const firstWhitespaceIndex = statement.raws.after.search(/\s/);
- const newlineBefore =
- firstWhitespaceIndex >= 0
- ? statement.raws.after.slice(0, firstWhitespaceIndex)
- : statement.raws.after;
- const newlineAfter =
- firstWhitespaceIndex >= 0 ? statement.raws.after.slice(firstWhitespaceIndex) : '';
- const newlineIndex = newlineAfter.search(/\r?\n/);
-
- if (newlineIndex >= 0) {
- statement.raws.after = newlineBefore + newlineAfter.slice(newlineIndex);
- } else {
- statement.raws.after = newlineBefore + context.newline + newlineAfter;
- }
-
- return;
- }
-
- if (expectation === 'never-multi-line') {
- statement.raws.after = statement.raws.after.replace(/\s/g, '');
-
- return;
- }
- }
-
- report({
- message,
- result,
- ruleName,
- node: statement,
- index,
- });
- }
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/block-closing-brace-space-after/README.md b/assets/node_modules/stylelint/lib/rules/block-closing-brace-space-after/README.md
deleted file mode 100644
index 42833df..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-closing-brace-space-after/README.md
+++ /dev/null
@@ -1,158 +0,0 @@
-# block-closing-brace-space-after
-
-Require a single space or disallow whitespace after the closing brace of blocks.
-
-```css
-a { color: pink; }
-/** ↑
- * The space after this brace */
-```
-
-This rule allows a trailing semicolon after the closing brace of a block. For example,
-
-```css
-:root {
- --toolbar-theme: {
- background-color: hsl(120, 70%, 95%);
- };
-/* ↑
- * This semicolon */
-}
-```
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"never-single-line"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a single space after the closing brace.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }b { color: red; }
-```
-
-```css
-a { color: pink; }
-b { color: red; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; } b { color: red; }
-```
-
-### `"never"`
-
-There *must never* be whitespace after the closing brace.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; } b { color: red; }
-```
-
-```css
-a { color: pink; }
-b { color: red; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }b { color: red; }
-```
-
-```css
-a { color: pink;
-}b { color: red; }
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space after the closing brace in single-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }b { color: red; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; } b { color: red; }
-```
-
-```css
-a { color: pink;
-}b { color: red; }
-```
-
-### `"never-single-line"`
-
-There *must never* be whitespace after the closing brace in single-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; } b { color: red; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }b { color: red; }
-```
-
-```css
-a { color: pink;
-} b { color: red; }
-```
-
-### `"always-multi-line"`
-
-There *must always* be a single space after the closing brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink;
-}b { color: red; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }b { color: red; }
-```
-
-```css
-a { color: pink;
-} b { color: red; }
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace after the closing brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink;
-} b { color: red; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; } b { color: red; }
-```
-
-```css
-a { color: pink;
-}b { color: red; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/block-closing-brace-space-after/index.js b/assets/node_modules/stylelint/lib/rules/block-closing-brace-space-after/index.js
deleted file mode 100644
index 3b5e6b6..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-closing-brace-space-after/index.js
+++ /dev/null
@@ -1,86 +0,0 @@
-'use strict';
-
-const blockString = require('../../utils/blockString');
-const hasBlock = require('../../utils/hasBlock');
-const rawNodeString = require('../../utils/rawNodeString');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'block-closing-brace-space-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected single space after "}"',
- rejectedAfter: () => 'Unexpected whitespace after "}"',
- expectedAfterSingleLine: () => 'Expected single space after "}" of a single-line block',
- rejectedAfterSingleLine: () => 'Unexpected whitespace after "}" of a single-line block',
- expectedAfterMultiLine: () => 'Expected single space after "}" of a multi-line block',
- rejectedAfterMultiLine: () => 'Unexpected whitespace after "}" of a multi-line block',
-});
-
-function rule(expectation) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return function(root, result) {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: [
- 'always',
- 'never',
- 'always-single-line',
- 'never-single-line',
- 'always-multi-line',
- 'never-multi-line',
- ],
- });
-
- if (!validOptions) {
- return;
- }
-
- // Check both kinds of statements: rules and at-rules
- root.walkRules(check);
- root.walkAtRules(check);
-
- function check(statement) {
- const nextNode = statement.next();
-
- if (!nextNode) {
- return;
- }
-
- if (!hasBlock(statement)) {
- return;
- }
-
- let reportIndex = statement.toString().length;
- let source = rawNodeString(nextNode);
-
- // Skip a semicolon at the beginning, if any
- if (source && source.startsWith(';')) {
- source = source.slice(1);
- reportIndex++;
- }
-
- checker.after({
- source,
- index: -1,
- lineCheckStr: blockString(statement),
- err: (msg) => {
- report({
- message: msg,
- node: statement,
- index: reportIndex,
- result,
- ruleName,
- });
- },
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/block-closing-brace-space-before/README.md b/assets/node_modules/stylelint/lib/rules/block-closing-brace-space-before/README.md
deleted file mode 100644
index 73deeff..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-closing-brace-space-before/README.md
+++ /dev/null
@@ -1,153 +0,0 @@
-# block-closing-brace-space-before
-
-Require a single space or disallow whitespace before the closing brace of blocks.
-
-```css
-a { color: pink; }
-/** ↑
- * The space before this brace */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"never-single-line"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a single space before the closing brace.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink;}
-```
-
-```css
-a
-{ color: pink;}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a {
-color: pink; }
-```
-
-### `"never"`
-
-There *must never* be whitespace before the closing brace.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a
-{ color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a{ color: pink;}
-```
-
-```css
-a{
-color: pink;}
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space before the closing brace in single-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink;}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a {
-color: pink;}
-```
-
-### `"never-single-line"`
-
-There *must never* be whitespace before the closing brace in single-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink;}
-```
-
-```css
-a {
-color: pink; }
-```
-
-### `"always-multi-line"`
-
-There *must always* be a single space before the closing brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a {
-color: pink;}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink;}
-```
-
-```css
-a {
-color: pink; }
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace before the closing brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a {
-color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a {
-color: pink;}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/block-closing-brace-space-before/index.js b/assets/node_modules/stylelint/lib/rules/block-closing-brace-space-before/index.js
deleted file mode 100644
index 8073f72..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-closing-brace-space-before/index.js
+++ /dev/null
@@ -1,94 +0,0 @@
-'use strict';
-
-const blockString = require('../../utils/blockString');
-const hasBlock = require('../../utils/hasBlock');
-const hasEmptyBlock = require('../../utils/hasEmptyBlock');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'block-closing-brace-space-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected single space before "}"',
- rejectedBefore: () => 'Unexpected whitespace before "}"',
- expectedBeforeSingleLine: () => 'Expected single space before "}" of a single-line block',
- rejectedBeforeSingleLine: () => 'Unexpected whitespace before "}" of a single-line block',
- expectedBeforeMultiLine: () => 'Expected single space before "}" of a multi-line block',
- rejectedBeforeMultiLine: () => 'Unexpected whitespace before "}" of a multi-line block',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: [
- 'always',
- 'never',
- 'always-single-line',
- 'never-single-line',
- 'always-multi-line',
- 'never-multi-line',
- ],
- });
-
- if (!validOptions) {
- return;
- }
-
- // Check both kinds of statement: rules and at-rules
- root.walkRules(check);
- root.walkAtRules(check);
-
- function check(statement) {
- // Return early if blockless or has empty block
- if (!hasBlock(statement) || hasEmptyBlock(statement)) {
- return;
- }
-
- const source = blockString(statement);
- const statementString = statement.toString();
-
- let index = statementString.length - 2;
-
- if (statementString[index - 1] === '\r') {
- index -= 1;
- }
-
- checker.before({
- source,
- index: source.length - 1,
- err: (msg) => {
- if (context.fix) {
- if (expectation.startsWith('always')) {
- statement.raws.after = statement.raws.after.replace(/\s*$/, ' ');
-
- return;
- }
-
- if (expectation.startsWith('never')) {
- statement.raws.after = statement.raws.after.replace(/\s*$/, '');
-
- return;
- }
- }
-
- report({
- message: msg,
- node: statement,
- index,
- result,
- ruleName,
- });
- },
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/block-no-empty/README.md b/assets/node_modules/stylelint/lib/rules/block-no-empty/README.md
deleted file mode 100644
index 6070125..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-no-empty/README.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# block-no-empty
-
-Disallow empty blocks.
-
-```css
- a { }
-/** ↑
- * Blocks like this */
-```
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a {}
-```
-
-```css
-a { }
-```
-
-```css
-@media print {
- a {}
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- /* foo */
-}
-```
-
-```css
-@media print {
- a {
- color: pink;
- }
-}
-```
-
-## Optional secondary options
-
-### `ignore: ["comments"]`
-
-Exclude comments from being treated as content inside of a block.
-
-The following patterns are considered violations:
-
-```css
-a {
- /* foo */
-}
-```
-
-```css
-@media print {
- a {
- /* foo */
- }
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/block-no-empty/index.js b/assets/node_modules/stylelint/lib/rules/block-no-empty/index.js
deleted file mode 100644
index 516af4b..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-no-empty/index.js
+++ /dev/null
@@ -1,81 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const beforeBlockString = require('../../utils/beforeBlockString');
-const hasBlock = require('../../utils/hasBlock');
-const hasEmptyBlock = require('../../utils/hasEmptyBlock');
-const optionsMatches = require('../../utils/optionsMatches');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'block-no-empty';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected empty block',
-});
-
-function rule(primary, options = {}) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: primary,
- possible: _.isBoolean,
- },
- {
- actual: options,
- possible: {
- ignore: ['comments'],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- const ignoreComments = optionsMatches(options, 'ignore', 'comments');
-
- // Check both kinds of statements: rules and at-rules
- root.walkRules(check);
- root.walkAtRules(check);
-
- function check(statement) {
- if (!hasEmptyBlock(statement) && !ignoreComments) {
- return;
- }
-
- if (!hasBlock(statement)) {
- return;
- }
-
- const hasCommentsOnly = statement.nodes.every((node) => node.type === 'comment');
-
- if (!hasCommentsOnly) {
- return;
- }
-
- let index = beforeBlockString(statement, { noRawBefore: true }).length;
-
- // For empty blocks when using SugarSS parser
- if (statement.raws.between === undefined) {
- index--;
- }
-
- report({
- message: messages.rejected,
- node: statement,
- index,
- result,
- ruleName,
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-after/README.md b/assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-after/README.md
deleted file mode 100644
index da18feb..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-after/README.md
+++ /dev/null
@@ -1,111 +0,0 @@
-# block-opening-brace-newline-after
-
-Require a newline after the opening brace of blocks.
-
-```css
- a {
- ↑ color: pink; }
-/** ↑
- * The newline after this brace */
-```
-
-This rule allows an end-of-line comment followed by a newline. For example,
-
-```css
-a { /* end-of-line comment */
- color: pink;
-}
-```
-
-Refer to [the FAQ](../../../docs/user-guide/faq.md#how-do-i-disallow-single-line-blocks) for more information on using this rule with [`block-opening-brace-newline-before`](../block-opening-brace-newline-before/README.md) to disallow single-line rules.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline after the opening brace.
-
-The following patterns are considered violations:
-
-```css
-a{ color: pink; }
-```
-
-```css
-a{ color: pink;
-}
-```
-
-```css
-a{ /* end-of-line comment
- with a newline */
- color: pink;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
-color: pink; }
-```
-
-```css
-a
-{
-color: pink; }
-```
-
-```css
-a { /* end-of-line comment */
- color: pink;
-}
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline after the opening brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a{color: pink;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a {
-color: pink; }
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace after the opening brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a {color: pink;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-after/index.js b/assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-after/index.js
deleted file mode 100644
index 36612d3..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-after/index.js
+++ /dev/null
@@ -1,142 +0,0 @@
-'use strict';
-
-const beforeBlockString = require('../../utils/beforeBlockString');
-const blockString = require('../../utils/blockString');
-const hasBlock = require('../../utils/hasBlock');
-const hasEmptyBlock = require('../../utils/hasEmptyBlock');
-const rawNodeString = require('../../utils/rawNodeString');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'block-opening-brace-newline-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected newline after "{"',
- expectedAfterMultiLine: () => 'Expected newline after "{" of a multi-line block',
- rejectedAfterMultiLine: () => 'Unexpected whitespace after "{" of a multi-line block',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('newline', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-multi-line', 'never-multi-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- // Check both kinds of statement: rules and at-rules
- root.walkRules(check);
- root.walkAtRules(check);
-
- function check(statement) {
- // Return early if blockless or has an empty block
- if (!hasBlock(statement) || hasEmptyBlock(statement)) {
- return;
- }
-
- const backupCommentNextBefores = new Map();
-
- // next node with checking newlines after comment
- function nextNode(startNode) {
- if (!startNode || !startNode.next) return null;
-
- if (startNode.type === 'comment') {
- const reNewLine = /\r?\n/;
- const newLineMatch = reNewLine.test(startNode.raws.before);
-
- const next = startNode.next();
-
- if (next && newLineMatch && !reNewLine.test(next.raws.before)) {
- backupCommentNextBefores.set(next, next.raws.before);
- next.raws.before = startNode.raws.before;
- }
-
- return nextNode(next);
- }
-
- return startNode;
- }
-
- // Allow an end-of-line comment
- const nodeToCheck = nextNode(statement.first);
-
- if (!nodeToCheck) {
- return;
- }
-
- checker.afterOneOnly({
- source: rawNodeString(nodeToCheck),
- index: -1,
- lineCheckStr: blockString(statement),
- err: (m) => {
- if (context.fix) {
- if (expectation.startsWith('always')) {
- const index = nodeToCheck.raws.before.search(/\r?\n/);
-
- if (index >= 0) {
- nodeToCheck.raws.before = nodeToCheck.raws.before.slice(index);
- } else {
- nodeToCheck.raws.before = context.newline + nodeToCheck.raws.before;
- }
-
- backupCommentNextBefores.delete(nodeToCheck);
-
- return;
- }
-
- if (expectation === 'never-multi-line') {
- // Restore the `before` of the node next to the comment node.
- backupCommentNextBefores.forEach((before, node) => {
- node.raws.before = before;
- });
- backupCommentNextBefores.clear();
-
- // Fix
- const reNewLine = /\r?\n/;
- let fixTarget = statement.first;
-
- while (fixTarget) {
- if (reNewLine.test(fixTarget.raws.before)) {
- fixTarget.raws.before = fixTarget.raws.before.replace(/\r?\n/g, '');
- }
-
- if (fixTarget.type !== 'comment') {
- break;
- }
-
- fixTarget = fixTarget.next();
- }
- nodeToCheck.raws.before = '';
-
- return;
- }
- }
-
- report({
- message: m,
- node: statement,
- index: beforeBlockString(statement, { noRawBefore: true }).length + 1,
- result,
- ruleName,
- });
- },
- });
-
- // Restore the `before` of the node next to the comment node.
- backupCommentNextBefores.forEach((before, node) => {
- node.raws.before = before;
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-before/README.md b/assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-before/README.md
deleted file mode 100644
index 3aa1ccc..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-before/README.md
+++ /dev/null
@@ -1,155 +0,0 @@
-# block-opening-brace-newline-before
-
-Require a newline or disallow whitespace before the opening brace of blocks.
-
-```css
- a
- { color: pink; }
-/** ↑
- * The newline before this brace */
-```
-
-Refer to [the FAQ](../../../docs/user-guide/faq.md#how-do-i-disallow-single-line-blocks) for more information on using this rule with [`block-opening-brace-newline-after`](../block-opening-brace-newline-after/README.md) to disallow single-line rules.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"always-single-line"|"never-single-line"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline before the opening brace.
-
-The following patterns are considered violations:
-
-```css
-a{ color: pink; }
-```
-
-```css
-a{ color: pink;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a
-{ color: pink; }
-```
-
-```css
-a
-{
-color: pink; }
-```
-
-```css
-a /* foo */
- {
- color: pink;
- }
-```
-
-### `"always-single-line"`
-
-There *must always* be a newline before the opening brace in single-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a{ color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a
-{ color: pink; }
-```
-
-```css
-a{
-color: pink; }
-```
-
-### `"never-single-line"`
-
-There *must never* be whitespace before the opening brace in single-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a{ color: pink; }
-```
-
-```css
-a {
-color: pink; }
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline before the opening brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a{
-color: pink; }
-```
-
-```css
-a {
-color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a{ color: pink; }
-```
-
-```css
-a { color: pink; }
-```
-
-```css
-a
-{ color: pink; }
-```
-
-```css
-a
-{
-color: pink; }
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace before the opening brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a {
-color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a{
-color: pink;}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-before/index.js b/assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-before/index.js
deleted file mode 100644
index 36254a9..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-opening-brace-newline-before/index.js
+++ /dev/null
@@ -1,105 +0,0 @@
-'use strict';
-
-const beforeBlockString = require('../../utils/beforeBlockString');
-const blockString = require('../../utils/blockString');
-const hasBlock = require('../../utils/hasBlock');
-const hasEmptyBlock = require('../../utils/hasEmptyBlock');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'block-opening-brace-newline-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected newline before "{"',
- expectedBeforeSingleLine: () => 'Expected newline before "{" of a single-line block',
- rejectedBeforeSingleLine: () => 'Unexpected whitespace before "{" of a single-line block',
- expectedBeforeMultiLine: () => 'Expected newline before "{" of a multi-line block',
- rejectedBeforeMultiLine: () => 'Unexpected whitespace before "{" of a multi-line block',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('newline', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: [
- 'always',
- 'always-single-line',
- 'never-single-line',
- 'always-multi-line',
- 'never-multi-line',
- ],
- });
-
- if (!validOptions) {
- return;
- }
-
- // Check both kinds of statement: rules and at-rules
- root.walkRules(check);
- root.walkAtRules(check);
-
- function check(statement) {
- // Return early if blockless or has an empty block
- if (!hasBlock(statement) || hasEmptyBlock(statement)) {
- return;
- }
-
- const source = beforeBlockString(statement);
- const beforeBraceNoRaw = beforeBlockString(statement, {
- noRawBefore: true,
- });
-
- let index = beforeBraceNoRaw.length - 1;
-
- if (beforeBraceNoRaw[index - 1] === '\r') {
- index -= 1;
- }
-
- checker.beforeAllowingIndentation({
- lineCheckStr: blockString(statement),
- source,
- index: source.length,
- err: (m) => {
- if (context.fix) {
- if (expectation.startsWith('always')) {
- const spaceIndex = statement.raws.between.search(/\s+$/);
-
- if (spaceIndex >= 0) {
- statement.raws.between =
- statement.raws.between.slice(0, spaceIndex) +
- context.newline +
- statement.raws.between.slice(spaceIndex);
- } else {
- statement.raws.between += context.newline;
- }
-
- return;
- }
-
- if (expectation.startsWith('never')) {
- statement.raws.between = statement.raws.between.replace(/\s*$/, '');
-
- return;
- }
- }
-
- report({
- message: m,
- node: statement,
- index,
- result,
- ruleName,
- });
- },
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/block-opening-brace-space-after/README.md b/assets/node_modules/stylelint/lib/rules/block-opening-brace-space-after/README.md
deleted file mode 100644
index 24453c6..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-opening-brace-space-after/README.md
+++ /dev/null
@@ -1,153 +0,0 @@
-# block-opening-brace-space-after
-
-Require a single space or disallow whitespace after the opening brace of blocks.
-
-```css
- a { color: pink; }
-/** ↑
- * The space after this brace */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"never-single-line"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a single space after the opening brace.
-
-The following patterns are considered violations:
-
-```css
-a {color: pink; }
-```
-
-```css
-a {
-color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a { color: pink;
-}
-```
-
-### `"never"`
-
-There *must never* be whitespace after the opening brace.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a {
-color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {color: pink; }
-```
-
-```css
-a
-{color: pink; }
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space after the opening brace in single-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a {color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a {color: pink;
-}
-```
-
-### `"never-single-line"`
-
-There *must never* be whitespace after the opening brace in single-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {color: pink; }
-```
-
-```css
-a { color: pink;
-}
-```
-
-### `"always-multi-line"`
-
-There *must always* be a single space after the opening brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a {color: pink;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {color: pink; }
-```
-
-```css
-a { color: pink;
-}
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace after the opening brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a {color: pink;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/block-opening-brace-space-after/index.js b/assets/node_modules/stylelint/lib/rules/block-opening-brace-space-after/index.js
deleted file mode 100644
index 98641a6..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-opening-brace-space-after/index.js
+++ /dev/null
@@ -1,86 +0,0 @@
-'use strict';
-
-const beforeBlockString = require('../../utils/beforeBlockString');
-const blockString = require('../../utils/blockString');
-const hasBlock = require('../../utils/hasBlock');
-const hasEmptyBlock = require('../../utils/hasEmptyBlock');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'block-opening-brace-space-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected single space after "{"',
- rejectedAfter: () => 'Unexpected whitespace after "{"',
- expectedAfterSingleLine: () => 'Expected single space after "{" of a single-line block',
- rejectedAfterSingleLine: () => 'Unexpected whitespace after "{" of a single-line block',
- expectedAfterMultiLine: () => 'Expected single space after "{" of a multi-line block',
- rejectedAfterMultiLine: () => 'Unexpected whitespace after "{" of a multi-line block',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: [
- 'always',
- 'never',
- 'always-single-line',
- 'never-single-line',
- 'always-multi-line',
- 'never-multi-line',
- ],
- });
-
- if (!validOptions) {
- return;
- }
-
- // Check both kinds of statements: rules and at-rules
- root.walkRules(check);
- root.walkAtRules(check);
-
- function check(statement) {
- // Return early if blockless or has an empty block
- if (!hasBlock(statement) || hasEmptyBlock(statement)) {
- return;
- }
-
- checker.after({
- source: blockString(statement),
- index: 0,
- err: (m) => {
- if (context.fix) {
- if (expectation.startsWith('always')) {
- statement.first.raws.before = ' ';
-
- return;
- }
-
- if (expectation.startsWith('never')) {
- statement.first.raws.before = '';
-
- return;
- }
- }
-
- report({
- message: m,
- node: statement,
- index: beforeBlockString(statement, { noRawBefore: true }).length + 1,
- result,
- ruleName,
- });
- },
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/block-opening-brace-space-before/README.md b/assets/node_modules/stylelint/lib/rules/block-opening-brace-space-before/README.md
deleted file mode 100644
index 6ba35b0..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-opening-brace-space-before/README.md
+++ /dev/null
@@ -1,174 +0,0 @@
-# block-opening-brace-space-before
-
-Require a single space or disallow whitespace before the opening brace of blocks.
-
-```css
- a { color: pink; }
-/** ↑
- * The space before this brace */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"never-single-line"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a single space before the opening brace.
-
-The following patterns are considered violations:
-
-```css
-a{ color: pink; }
-```
-
-```css
-a
-{ color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a {
-color: pink; }
-```
-
-### `"never"`
-
-There *must never* be whitespace before the opening brace.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a
-{ color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a{ color: pink; }
-```
-
-```css
-a{
-color: pink; }
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space before the opening brace in single-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a{ color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a{
-color: pink; }
-```
-
-### `"never-single-line"`
-
-There *must never* be whitespace before the opening brace in single-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a{ color: pink; }
-```
-
-```css
-a {
-color: pink; }
-```
-
-### `"always-multi-line"`
-
-There *must always* be a single space before the opening brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a{
-color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a{ color: pink; }
-```
-
-```css
-a {
-color: pink; }
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace before the opening brace in multi-line blocks.
-
-The following patterns are considered violations:
-
-```css
-a {
-color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a{
-color: pink;}
-```
-
-## Optional secondary options
-
-### `ignoreAtRules: ["/regex/", /regex/, "non-regex"]`
-
-Given:
-
-```js
-["/fo/"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@for ...
-{}
-```
-
-```css
-@for ...{}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/block-opening-brace-space-before/index.js b/assets/node_modules/stylelint/lib/rules/block-opening-brace-space-before/index.js
deleted file mode 100644
index 0097fc9..0000000
--- a/assets/node_modules/stylelint/lib/rules/block-opening-brace-space-before/index.js
+++ /dev/null
@@ -1,116 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const beforeBlockString = require('../../utils/beforeBlockString');
-const blockString = require('../../utils/blockString');
-const hasBlock = require('../../utils/hasBlock');
-const hasEmptyBlock = require('../../utils/hasEmptyBlock');
-const optionsMatches = require('../../utils/optionsMatches');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'block-opening-brace-space-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected single space before "{"',
- rejectedBefore: () => 'Unexpected whitespace before "{"',
- expectedBeforeSingleLine: () => 'Expected single space before "{" of a single-line block',
- rejectedBeforeSingleLine: () => 'Unexpected whitespace before "{" of a single-line block',
- expectedBeforeMultiLine: () => 'Expected single space before "{" of a multi-line block',
- rejectedBeforeMultiLine: () => 'Unexpected whitespace before "{" of a multi-line block',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: expectation,
- possible: [
- 'always',
- 'never',
- 'always-single-line',
- 'never-single-line',
- 'always-multi-line',
- 'never-multi-line',
- ],
- },
- {
- actual: options,
- possible: {
- ignoreAtRules: [_.isString, _.isRegExp],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- // Check both kinds of statements: rules and at-rules
- root.walkRules(check);
- root.walkAtRules(check);
-
- function check(statement) {
- // Return early if blockless or has an empty block
- if (!hasBlock(statement) || hasEmptyBlock(statement)) {
- return;
- }
-
- // Return early if at-rule is to be ignored
- if (optionsMatches(options, 'ignoreAtRules', statement.name)) {
- return;
- }
-
- const source = beforeBlockString(statement);
- const beforeBraceNoRaw = beforeBlockString(statement, {
- noRawBefore: true,
- });
-
- let index = beforeBraceNoRaw.length - 1;
-
- if (beforeBraceNoRaw[index - 1] === '\r') {
- index -= 1;
- }
-
- checker.before({
- source,
- index: source.length,
- lineCheckStr: blockString(statement),
- err: (m) => {
- if (context.fix) {
- if (expectation.startsWith('always')) {
- statement.raws.between = ' ';
-
- return;
- }
-
- if (expectation.startsWith('never')) {
- statement.raws.between = '';
-
- return;
- }
- }
-
- report({
- message: m,
- node: statement,
- index,
- result,
- ruleName,
- });
- },
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/color-hex-case/README.md b/assets/node_modules/stylelint/lib/rules/color-hex-case/README.md
deleted file mode 100644
index 1dbb508..0000000
--- a/assets/node_modules/stylelint/lib/rules/color-hex-case/README.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# color-hex-case
-
-Specify lowercase or uppercase for hex colors.
-
-```css
-a { color: #fff }
-/** ↑
- * This hex color */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"lower"|"upper"`
-
-### `"lower"`
-
-The following patterns are considered violations:
-
-```css
-a { color: #FFF; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: #000; }
-```
-
-```css
-a { color: #fff; }
-```
-
-### `"upper"`
-
-The following patterns are considered violations:
-
-```css
-a { color: #fff; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: #000; }
-```
-
-```css
-a { color: #FFF; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/color-hex-case/index.js b/assets/node_modules/stylelint/lib/rules/color-hex-case/index.js
deleted file mode 100644
index 9e7425e..0000000
--- a/assets/node_modules/stylelint/lib/rules/color-hex-case/index.js
+++ /dev/null
@@ -1,93 +0,0 @@
-'use strict';
-
-const blurFunctionArguments = require('../../utils/blurFunctionArguments');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'color-hex-case';
-
-const messages = ruleMessages(ruleName, {
- expected: (actual, expected) => `Expected "${actual}" to be "${expected}"`,
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['lower', 'upper'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const declString = blurFunctionArguments(decl.toString(), 'url');
- const fixPositions = [];
-
- styleSearch({ source: declString, target: '#' }, (match) => {
- const hexMatch = /^#[0-9A-Za-z]+/.exec(declString.substr(match.startIndex));
-
- if (!hexMatch) {
- return;
- }
-
- const hexValue = hexMatch[0];
- const hexValueLower = hexValue.toLowerCase();
- const hexValueUpper = hexValue.toUpperCase();
- const expectedHex = expectation === 'lower' ? hexValueLower : hexValueUpper;
-
- if (hexValue === expectedHex) {
- return;
- }
-
- if (context.fix) {
- fixPositions.unshift({
- expectedHex,
- currentHex: hexValue,
- startIndex: match.startIndex,
- });
-
- return;
- }
-
- report({
- message: messages.expected(hexValue, expectedHex),
- node: decl,
- index: match.startIndex,
- result,
- ruleName,
- });
- });
-
- if (fixPositions.length) {
- const declProp = decl.prop;
- const declBetween = decl.raws.between;
-
- fixPositions.forEach(function(fixPosition) {
- // 1 — it's a # length
- decl.value = replaceHex(
- decl.value,
- fixPosition.currentHex,
- fixPosition.expectedHex,
- fixPosition.startIndex - declProp.length - declBetween.length - 1,
- );
- });
- }
- });
- };
-}
-
-function replaceHex(input, searchString, replaceString, startIndex) {
- const offset = startIndex + 1;
- const stringStart = input.slice(0, offset);
- const stringEnd = input.slice(offset + searchString.length);
-
- return stringStart + replaceString + stringEnd;
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/color-hex-length/README.md b/assets/node_modules/stylelint/lib/rules/color-hex-length/README.md
deleted file mode 100644
index 048dcf5..0000000
--- a/assets/node_modules/stylelint/lib/rules/color-hex-length/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# color-hex-length
-
-Specify short or long notation for hex colors.
-
-```css
-a { color: #fff }
-/** ↑
- * This hex color */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"short"|"long"`
-
-### `"short"`
-
-The following patterns are considered violations:
-
-```css
-a { color: #ffffff; }
-```
-
-```css
-a { color: #ffffffaa; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: #fff; }
-```
-
-```css
-a { color: #fffa; }
-```
-
-```css
-a { color: #a4a4a4; }
-```
-
-### `"long"`
-
-The following patterns are considered violations:
-
-```css
-a { color: #fff; }
-```
-
-```css
-a { color: #fffa; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: #ffffff; }
-```
-
-```css
-a { color: #ffffffaa; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/color-hex-length/index.js b/assets/node_modules/stylelint/lib/rules/color-hex-length/index.js
deleted file mode 100644
index d8bb7a8..0000000
--- a/assets/node_modules/stylelint/lib/rules/color-hex-length/index.js
+++ /dev/null
@@ -1,128 +0,0 @@
-'use strict';
-
-const blurFunctionArguments = require('../../utils/blurFunctionArguments');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'color-hex-length';
-
-const messages = ruleMessages(ruleName, {
- expected: (actual, expected) => `Expected "${actual}" to be "${expected}"`,
-});
-
-function rule(expectation, _, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['short', 'long'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const declString = blurFunctionArguments(decl.toString(), 'url');
- const fixPositions = [];
-
- styleSearch({ source: declString, target: '#' }, (match) => {
- const hexMatch = /^#[0-9A-Za-z]+/.exec(declString.substr(match.startIndex));
-
- if (!hexMatch) {
- return;
- }
-
- const hexValue = hexMatch[0];
-
- if (expectation === 'long' && hexValue.length !== 4 && hexValue.length !== 5) {
- return;
- }
-
- if (expectation === 'short' && (hexValue.length < 6 || !canShrink(hexValue))) {
- return;
- }
-
- const variant = expectation === 'long' ? longer : shorter;
- const expectedHex = variant(hexValue);
-
- if (context.fix) {
- fixPositions.unshift({
- expectedHex,
- currentHex: hexValue,
- startIndex: match.startIndex,
- });
-
- return;
- }
-
- report({
- message: messages.expected(hexValue, expectedHex),
- node: decl,
- index: match.startIndex,
- result,
- ruleName,
- });
- });
-
- if (fixPositions.length) {
- const declProp = decl.prop;
- const declBetween = decl.raws.between;
-
- fixPositions.forEach(function(fixPosition) {
- // 1 — it's a # length
- decl.value = replaceHex(
- decl.value,
- fixPosition.currentHex,
- fixPosition.expectedHex,
- fixPosition.startIndex - declProp.length - declBetween.length - 1,
- );
- });
- }
- });
- };
-}
-
-function canShrink(hex) {
- hex = hex.toLowerCase();
-
- return (
- hex[1] === hex[2] &&
- hex[3] === hex[4] &&
- hex[5] === hex[6] &&
- (hex.length === 7 || (hex.length === 9 && hex[7] === hex[8]))
- );
-}
-
-function shorter(hex) {
- let hexVariant = '#';
-
- for (let i = 1; i < hex.length; i += 2) {
- hexVariant += hex[i];
- }
-
- return hexVariant;
-}
-
-function longer(hex) {
- let hexVariant = '#';
-
- for (let i = 1; i < hex.length; i++) {
- hexVariant += hex[i] + hex[i];
- }
-
- return hexVariant;
-}
-
-function replaceHex(input, searchString, replaceString, startIndex) {
- const offset = startIndex + 1;
- const stringStart = input.slice(0, offset);
- const stringEnd = input.slice(offset + searchString.length);
-
- return stringStart + replaceString + stringEnd;
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/color-named/README.md b/assets/node_modules/stylelint/lib/rules/color-named/README.md
deleted file mode 100644
index 327d032..0000000
--- a/assets/node_modules/stylelint/lib/rules/color-named/README.md
+++ /dev/null
@@ -1,159 +0,0 @@
-# color-named
-
-Require (where possible) or disallow named colors.
-
-```css
-a { color: black }
-/** ↑
- * This named color */
-```
-
-## Options
-
-`string`: `"always-where-possible"|"never"`
-
-### `"always-where-possible"`
-
-Colors *must always*, where possible, be named.
-
-This will complain if a hex (3, 4, 6 and 8 digit), `rgb()`, `rgba()`, `hsl()`, `hsla()`, `hwb()` or `gray()` color can be represented as a named color.
-
-The following patterns are considered violations:
-
-```css
-a { color: #000; }
-```
-
-```css
-a { color: #f000; }
-```
-
-```css
-a { color: #ff000000; }
-```
-
-```css
-a { color: rgb(0, 0, 0); }
-```
-
-```css
-a { color: rgb(0%, 0%, 0%); }
-```
-
-```css
-a { color: rgba(0, 0, 0, 0); }
-```
-
-```css
-a { color: hsl(0, 0%, 0%); }
-```
-
-```css
-a { color: hwb(0, 0%, 100%); }
-```
-
-```css
-a { color: gray(0); }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: black; }
-```
-
-```css
-a { color: rgb(10, 0, 0); }
-```
-
-```css
-a { color: rgb(0, 0, 0, 0.5); }
-```
-
-### `"never"`
-
-Colors *must never* be named.
-
-The following patterns are considered violations:
-
-```css
-a { color: black; }
-```
-
-```css
-a { color: white; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: #000; }
-```
-
-```css
-a { color: rgb(0, 0, 0); }
-```
-
-```css
-a { color: var(--white); }
-```
-
-```scss
-a { color: $blue; }
-```
-
-```less
-a { color: @blue; }
-```
-
-## Optional secondary options
-
-### `ignore: ["inside-function"]`
-
-Ignore colors that are inside a function.
-
-For example, with `"never"`.
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- color: map-get($colour, blue);
-}
-```
-
-```css
-a {
- background-image: url(red);
-}
-```
-
-### `ignoreProperties: ["/regex/", /regex/, "string"]`
-
-For example with `"never"`.
-
-Given:
-
-```js
-["/^my-/", "composes"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- my-property: red;
-}
-```
-
-```css
-a {
- my-other-property: red;
-}
-```
-
-```css
-a {
- composes: red from './index.css';
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/color-named/generateColorFuncs.js b/assets/node_modules/stylelint/lib/rules/color-named/generateColorFuncs.js
deleted file mode 100644
index fca08a9..0000000
--- a/assets/node_modules/stylelint/lib/rules/color-named/generateColorFuncs.js
+++ /dev/null
@@ -1,194 +0,0 @@
-'use strict';
-
-// these algorithms are sourced from https://drafts.csswg.org/css-color/#color-conversion-code
-
-function lin_sRGB(RGB) {
- // convert an array of sRGB values in the range 0.0 - 1.0
- // to linear light (un-companded) form.
- // https://en.wikipedia.org/wiki/SRGB
- return RGB.map(function(val) {
- if (val < 0.04045) {
- return val / 12.92;
- }
-
- return Math.pow((val + 0.055) / 1.055, 2.4);
- });
-}
-
-function matrixMultiple3d(matrix, vector) {
- return [
- matrix[0][0] * vector[0] + matrix[0][1] * vector[1] + matrix[0][2] * vector[2],
- matrix[1][0] * vector[0] + matrix[1][1] * vector[1] + matrix[1][2] * vector[2],
- matrix[2][0] * vector[0] + matrix[2][1] * vector[1] + matrix[2][2] * vector[2],
- ];
-}
-
-function srgb2xyz(srgb) {
- return matrixMultiple3d(
- [
- [0.4124564, 0.3575761, 0.1804375],
- [0.2126729, 0.7151522, 0.072175],
- [0.0193339, 0.119192, 0.9503041],
- ],
- srgb,
- );
-}
-
-function chromaticAdaptationD65_D50(xyz) {
- return matrixMultiple3d(
- [
- [1.0478112, 0.0228866, -0.050127],
- [0.0295424, 0.9904844, -0.0170491],
- [-0.0092345, 0.0150436, 0.7521316],
- ],
- xyz,
- );
-}
-
-function xyz2lab(xyzIn) {
- // Assuming XYZ is relative to D50, convert to CIE Lab
- // from CIE standard, which now defines these as a rational fraction
- const ε = 216 / 24389; // 6^3/29^3
- const κ = 24389 / 27; // 29^3/3^3
- const white = [0.9642, 1.0, 0.8249]; // D50 reference white
-
- // compute xyz, which is XYZ scaled relative to reference white
- const xyz = xyzIn.map((value, i) => value / white[i]);
-
- // now compute f
- const f = xyz.map((value) => (value > ε ? Math.cbrt(value) : (κ * value + 16) / 116));
-
- return [
- 116 * f[1] - 16, // L
- 500 * (f[0] - f[1]), // a
- 200 * (f[1] - f[2]), // b
- ];
-}
-
-function rgb2hsl(r, g, b) {
- r /= 255;
- g /= 255;
- b /= 255;
- let h;
- let s;
- let l;
- const M = Math.max(r, g, b);
- const m = Math.min(r, g, b);
- const d = M - m;
-
- if (d === 0) {
- h = 0;
- } else if (M === r) {
- h = ((g - b) / d) % 6;
- } else if (M === g) {
- h = (b - r) / d + 2;
- } else {
- h = (r - g) / d + 4;
- }
-
- h *= 60;
-
- if (h < 0) {
- h += 360;
- }
-
- l = (M + m) / 2;
-
- if (d === 0) {
- s = 0;
- } else {
- s = d / (1 - Math.abs(2 * l - 1));
- }
-
- s *= 100;
- l *= 100;
-
- return [Math.round(h), Math.round(s), Math.round(l)];
-}
-
-function rgb2hwb(rgb_r, rgb_g, rgb_b) {
- rgb_r /= 255;
- rgb_g /= 255;
- rgb_b /= 255;
-
- const w = Math.min(rgb_r, rgb_g, rgb_b);
- const v = Math.max(rgb_r, rgb_g, rgb_b);
-
- const b = 1 - v;
-
- if (v === w) {
- return [0, Math.round(w * 100), Math.round(b * 100)];
- }
-
- const f = rgb_r === w ? rgb_g - rgb_b : rgb_g === w ? rgb_b - rgb_r : rgb_r - rgb_g;
- const i = rgb_r === w ? 3 : rgb_g === w ? 5 : 1;
-
- return [
- Math.round(((i - f / (v - w)) / 6) * 360) % 360,
- Math.round(w * 100),
- Math.round(b * 100),
- ];
-}
-
-function perc255(value) {
- return `${Math.round((value * 100) / 255)}%`;
-}
-
-function generateColorFuncs(hexString) {
- if (hexString.length !== 7) {
- throw new Error(
- `Invalid hex string color definition (${hexString}) - expected 6 character hex string`,
- );
- }
-
- const rgb = [0, 0, 0];
-
- for (let i = 0; i < 3; i += 1) {
- rgb[i] = parseInt(hexString.substr(2 * i + 1, 2), 16);
- }
-
- const hsl = rgb2hsl(rgb[0], rgb[1], rgb[2]);
- const hwb = rgb2hwb(rgb[0], rgb[1], rgb[2]);
- const func = [];
- const rgbStr = `${rgb[0]},${rgb[1]},${rgb[2]}`;
- const rgbPercStr = `${perc255(rgb[0])},${perc255(rgb[1])},${perc255(rgb[2])}`;
- const hslStr = `${hsl[0]},${hsl[1]}%,${hsl[2]}%`;
- const hwbStr = `${hwb[0]},${hwb[1]}%,${hwb[2]}%`;
-
- // *very* convoluted process, just to be able to establish if the color
- // is gray -- or not.
- const linRgb = lin_sRGB([rgb[0] / 255, rgb[1] / 255, rgb[2] / 255]);
- const xyz_d65 = srgb2xyz(linRgb);
- const xyz_d50 = chromaticAdaptationD65_D50(xyz_d65);
- const lab = xyz2lab(xyz_d50);
-
- func.push(`rgb(${rgbStr})`);
- func.push(`rgba(${rgbStr},1)`);
- func.push(`rgba(${rgbStr},100%)`);
- func.push(`rgb(${rgbPercStr})`);
- func.push(`rgba(${rgbPercStr},1)`);
- func.push(`rgba(${rgbPercStr},100%)`);
- func.push(`hsl(${hslStr})`);
- func.push(`hsla(${hslStr},1)`);
- func.push(`hsla(${hslStr},100%)`);
- func.push(`hwb(${hwbStr})`);
- func.push(`hwb(${hwbStr},1)`);
- func.push(`hwb(${hwbStr},100%)`);
-
- // technically, this should be 0 - but then #808080 wouldn't even be gray
- if (lab[1] * lab[1] < 0.01 && lab[2] * lab[2] < 0.01) {
- // yay! gray!
- const grayStr = Math.round(lab[0]);
-
- func.push(`gray(${grayStr})`);
- func.push(`gray(${grayStr},1)`);
- func.push(`gray(${grayStr},100%)`);
- func.push(`gray(${grayStr}%)`);
- func.push(`gray(${grayStr}%,1)`);
- func.push(`gray(${grayStr}%,100%)`);
- }
-
- return func;
-}
-
-module.exports = generateColorFuncs;
diff --git a/assets/node_modules/stylelint/lib/rules/color-named/index.js b/assets/node_modules/stylelint/lib/rules/color-named/index.js
deleted file mode 100644
index c720547..0000000
--- a/assets/node_modules/stylelint/lib/rules/color-named/index.js
+++ /dev/null
@@ -1,167 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const isStandardSyntaxFunction = require('../../utils/isStandardSyntaxFunction');
-const isStandardSyntaxValue = require('../../utils/isStandardSyntaxValue');
-const keywordSets = require('../../reference/keywordSets');
-const namedColorDataHex = require('../../reference/namedColorData');
-const optionsMatches = require('../../utils/optionsMatches');
-const propertySets = require('../../reference/propertySets');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const generateColorFuncs = require('./generateColorFuncs');
-
-const ruleName = 'color-named';
-
-const messages = ruleMessages(ruleName, {
- expected: (named, original) => `Expected "${original}" to be "${named}"`,
- rejected: (named) => `Unexpected named color "${named}"`,
-});
-
-// Todo tested on case insensivity
-const NODE_TYPES = ['word', 'function'];
-
-function rule(expectation, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: expectation,
- possible: ['never', 'always-where-possible'],
- },
- {
- actual: options,
- possible: {
- ignoreProperties: [_.isString, _.isRegExp],
- ignore: ['inside-function'],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- const namedColors = Object.keys(namedColorDataHex);
- const namedColorData = {};
-
- namedColors.forEach((name) => {
- const hex = namedColorDataHex[name];
-
- namedColorData[name] = {
- hex,
- func: generateColorFuncs(hex[0]),
- };
- });
-
- root.walkDecls((decl) => {
- if (propertySets.acceptCustomIdents.has(decl.prop)) {
- return;
- }
-
- // Return early if the property is to be ignored
- if (optionsMatches(options, 'ignoreProperties', decl.prop)) {
- return;
- }
-
- valueParser(decl.value).walk((node) => {
- const value = node.value;
- const type = node.type;
- const sourceIndex = node.sourceIndex;
-
- if (optionsMatches(options, 'ignore', 'inside-function') && type === 'function') {
- return false;
- }
-
- if (!isStandardSyntaxFunction(node)) {
- return false;
- }
-
- if (!isStandardSyntaxValue(value)) {
- return;
- }
-
- // Return early if neither a word nor a function
- if (!NODE_TYPES.includes(type)) {
- return;
- }
-
- // Check for named colors for "never" option
- if (
- expectation === 'never' &&
- type === 'word' &&
- namedColors.includes(value.toLowerCase())
- ) {
- complain(messages.rejected(value), decl, declarationValueIndex(decl) + sourceIndex);
-
- return;
- }
-
- // Check "always-where-possible" option ...
- if (expectation !== 'always-where-possible') {
- return;
- }
-
- // First by checking for alternative color function representations ...
- if (type === 'function' && keywordSets.colorFunctionNames.has(value.toLowerCase())) {
- // Remove all spaces to match what's in `representations`
- const normalizedFunctionString = valueParser.stringify(node).replace(/\s+/g, '');
- let namedColor;
-
- for (let i = 0, l = namedColors.length; i < l; i++) {
- namedColor = namedColors[i];
-
- if (namedColorData[namedColor].func.includes(normalizedFunctionString.toLowerCase())) {
- complain(
- messages.expected(namedColor, normalizedFunctionString),
- decl,
- declarationValueIndex(decl) + sourceIndex,
- );
-
- return; // Exit as soon as a problem is found
- }
- }
-
- return;
- }
-
- // Then by checking for alternative hex representations
- let namedColor;
-
- for (let i = 0, l = namedColors.length; i < l; i++) {
- namedColor = namedColors[i];
-
- if (namedColorData[namedColor].hex.includes(value.toLowerCase())) {
- complain(
- messages.expected(namedColor, value),
- decl,
- declarationValueIndex(decl) + sourceIndex,
- );
-
- return; // Exit as soon as a problem is found
- }
- }
- });
- });
-
- function complain(message, node, index) {
- report({
- result,
- ruleName,
- message,
- node,
- index,
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/color-no-hex/README.md b/assets/node_modules/stylelint/lib/rules/color-no-hex/README.md
deleted file mode 100644
index b32f3a3..0000000
--- a/assets/node_modules/stylelint/lib/rules/color-no-hex/README.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# color-no-hex
-
-Disallow hex colors.
-
-```css
-a { color: #333 }
-/** ↑
- * This hex color */
-```
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a { color: #000; }
-```
-
-```css
-a { color: #fff1aa; }
-```
-
-```css
-a { color: #123456aa; }
-```
-
-Hex values that are not valid also cause violations:
-
-```css
-a { color: #foobar; }
-```
-
-```css
-a { color: #0000000000000000; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: black; }
-```
-
-```css
-a { color: rgb(0, 0, 0); }
-```
-
-```css
-a { color: rgba(0, 0, 0, 1); }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/color-no-hex/index.js b/assets/node_modules/stylelint/lib/rules/color-no-hex/index.js
deleted file mode 100644
index eb18038..0000000
--- a/assets/node_modules/stylelint/lib/rules/color-no-hex/index.js
+++ /dev/null
@@ -1,55 +0,0 @@
-'use strict';
-
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'color-no-hex';
-
-const messages = ruleMessages(ruleName, {
- rejected: (hex) => `Unexpected hex color "${hex}"`,
-});
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const declString = decl.toString();
-
- styleSearch({ source: declString, target: '#' }, (match) => {
- // If there's not a colon, comma, or whitespace character before, we'll assume this is
- // not intended to be a hex color, but is instead something like the
- // hash in a url() argument
- if (!/[:,\s]/.test(declString[match.startIndex - 1])) {
- return;
- }
-
- const hexMatch = /^#[0-9A-Za-z]+/.exec(declString.substr(match.startIndex));
-
- if (!hexMatch) {
- return;
- }
-
- const hexValue = hexMatch[0];
-
- report({
- message: messages.rejected(hexValue),
- node: decl,
- index: match.startIndex,
- result,
- ruleName,
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/color-no-invalid-hex/README.md b/assets/node_modules/stylelint/lib/rules/color-no-invalid-hex/README.md
deleted file mode 100644
index 67b68e2..0000000
--- a/assets/node_modules/stylelint/lib/rules/color-no-invalid-hex/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# color-no-invalid-hex
-
-Disallow invalid hex colors.
-
-```css
-a { color: #y3 }
-/** ↑
- * This hex color */
-```
-
-Longhand hex colors can be either 6 or 8 (with alpha channel) hexadecimal characters. And their shorthand variants are 3 and 4 characters respectively.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a { color: #00; }
-```
-
-```css
-a { color: #fff1az; }
-```
-
-```css
-a { color: #12345aa; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: #000; }
-```
-
-```css
-a { color: #000f; }
-```
-
-```css
-a { color: #fff1a0; }
-```
-
-```css
-a { color: #123450aa; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/color-no-invalid-hex/index.js b/assets/node_modules/stylelint/lib/rules/color-no-invalid-hex/index.js
deleted file mode 100644
index a7d842d..0000000
--- a/assets/node_modules/stylelint/lib/rules/color-no-invalid-hex/index.js
+++ /dev/null
@@ -1,52 +0,0 @@
-'use strict';
-
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const isValidHex = require('../../utils/isValidHex');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'color-no-invalid-hex';
-
-const messages = ruleMessages(ruleName, {
- rejected: (hex) => `Unexpected invalid hex color "${hex}"`,
-});
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- valueParser(decl.value).walk(({ value, type, sourceIndex }) => {
- if (type === 'function' && value.endsWith('url')) return false;
-
- if (type !== 'word') return;
-
- const hexMatch = /^#[0-9A-Za-z]+/.exec(value);
-
- if (!hexMatch) return;
-
- const hexValue = hexMatch[0];
-
- if (isValidHex(hexValue)) return;
-
- report({
- message: messages.rejected(hexValue),
- node: decl,
- index: declarationValueIndex(decl) + sourceIndex,
- result,
- ruleName,
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/comment-empty-line-before/README.md b/assets/node_modules/stylelint/lib/rules/comment-empty-line-before/README.md
deleted file mode 100644
index 750cd3b..0000000
--- a/assets/node_modules/stylelint/lib/rules/comment-empty-line-before/README.md
+++ /dev/null
@@ -1,154 +0,0 @@
-# comment-empty-line-before
-
-Require or disallow an empty line before comments.
-
-```css
-a {}
- /* ← */
-/* comment */ /* ↑ */
-/** ↑
-* This line */
-```
-
-This rule ignores:
-
-- comments that are the very first node in the source
-- shared-line comments
-- single-line comments with `//` (when you're using a custom syntax that supports them)
-- comments within selector and value lists
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule. We recommend to enable [`indentation`](../indentation/README.md) rule for better autofixing results with this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be an empty line before comments.
-
-The following patterns are considered violations:
-
-```css
-a {}
-/* comment */
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {}
-
-/* comment */
-```
-
-```css
-a {} /* comment */
-```
-
-### `"never"`
-
-There *must never* be an empty line before comments.
-
-The following patterns are considered violations:
-
-```css
-a {}
-
-/* comment */
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {}
-/* comment */
-```
-
-```css
-a {} /* comment */
-```
-
-## Optional secondary options
-
-### `except: ["first-nested"]`
-
-Reverse the primary option for comments that are nested and the first child of their parent node.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```css
-a {
-
- /* comment */
- color: pink;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- /* comment */
- color: pink;
-}
-```
-
-### `ignore: ["after-comment", "stylelint-commands"]`
-
-#### `"after-comment"`
-
-Ignore comments that follow another comment.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- background: pink;
-
- /* comment */
- /* comment */
- color: #eee;
-}
-```
-
-```css
-a {
- background: pink;
-
- /* comment */
-
- /* comment */
- color: #eee;
-}
-```
-
-#### `"stylelint-commands"`
-
-Ignore comments that deliver commands to stylelint, e.g. `/* stylelint-disable color-no-hex */`.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```css
-a {
- background: pink;
- /* not a stylelint command */
- color: #eee;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- background: pink;
- /* stylelint-disable color-no-hex */
- color: pink;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/comment-empty-line-before/index.js b/assets/node_modules/stylelint/lib/rules/comment-empty-line-before/index.js
deleted file mode 100644
index b6f87e5..0000000
--- a/assets/node_modules/stylelint/lib/rules/comment-empty-line-before/index.js
+++ /dev/null
@@ -1,117 +0,0 @@
-'use strict';
-
-const addEmptyLineBefore = require('../../utils/addEmptyLineBefore');
-const hasEmptyLine = require('../../utils/hasEmptyLine');
-const isAfterComment = require('../../utils/isAfterComment');
-const isFirstNested = require('../../utils/isFirstNested');
-const isFirstNodeOfRoot = require('../../utils/isFirstNodeOfRoot');
-const isSharedLineComment = require('../../utils/isSharedLineComment');
-const optionsMatches = require('../../utils/optionsMatches');
-const removeEmptyLinesBefore = require('../../utils/removeEmptyLinesBefore');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'comment-empty-line-before';
-
-const messages = ruleMessages(ruleName, {
- expected: 'Expected empty line before comment',
- rejected: 'Unexpected empty line before comment',
-});
-
-const stylelintCommandPrefix = 'stylelint-';
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: expectation,
- possible: ['always', 'never'],
- },
- {
- actual: options,
- possible: {
- except: ['first-nested'],
- ignore: ['stylelint-commands', 'after-comment'],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkComments((comment) => {
- // Ignore the first node
- if (isFirstNodeOfRoot(comment)) {
- return;
- }
-
- // Optionally ignore stylelint commands
- if (
- comment.text.startsWith(stylelintCommandPrefix) &&
- optionsMatches(options, 'ignore', 'stylelint-commands')
- ) {
- return;
- }
-
- // Optionally ignore newlines between comments
- if (optionsMatches(options, 'ignore', 'after-comment') && isAfterComment(comment)) {
- return;
- }
-
- // Ignore shared-line comments
- if (isSharedLineComment(comment)) {
- return;
- }
-
- // Ignore SCSS comments
- if (comment.raws.inline || comment.inline) {
- return;
- }
-
- const expectEmptyLineBefore = (() => {
- if (optionsMatches(options, 'except', 'first-nested') && isFirstNested(comment)) {
- return false;
- }
-
- return expectation === 'always';
- })();
-
- const before = comment.raws.before || '';
- const hasEmptyLineBefore = hasEmptyLine(before);
-
- // Return if the expectation is met
- if (expectEmptyLineBefore === hasEmptyLineBefore) {
- return;
- }
-
- // Fix
- if (context.fix) {
- if (expectEmptyLineBefore) {
- addEmptyLineBefore(comment, context.newline);
- } else {
- removeEmptyLinesBefore(comment, context.newline);
- }
-
- return;
- }
-
- const message = expectEmptyLineBefore ? messages.expected : messages.rejected;
-
- report({
- message,
- node: comment,
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/comment-no-empty/README.md b/assets/node_modules/stylelint/lib/rules/comment-no-empty/README.md
deleted file mode 100644
index 6267e01..0000000
--- a/assets/node_modules/stylelint/lib/rules/comment-no-empty/README.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# comment-no-empty
-
-Disallow empty comments.
-
-```css
- /* */
-/** ↑
- * Comments like this */
-```
-
-This rule ignores SCSS-like comments.
-
-**Caveat:** Comments within *selector and value lists* are currently ignored.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-/**/
-```
-
-```css
-/* */
-```
-
-```css
-/*
-
- */
-```
-
-The following patterns are *not* considered violations:
-
-```css
-/* comment */
-```
-
-```css
-/*
- * Multi-line Comment
-**/
-```
diff --git a/assets/node_modules/stylelint/lib/rules/comment-no-empty/index.js b/assets/node_modules/stylelint/lib/rules/comment-no-empty/index.js
deleted file mode 100644
index 9a385dd..0000000
--- a/assets/node_modules/stylelint/lib/rules/comment-no-empty/index.js
+++ /dev/null
@@ -1,44 +0,0 @@
-'use strict';
-
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'comment-no-empty';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected empty comment',
-});
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walkComments((comment) => {
- // To ignore inline SCSS comments
- if (comment.raws.inline || comment.inline) {
- return;
- }
-
- // To ignore comments that are not empty
- if (comment.text && comment.text.length !== 0) {
- return;
- }
-
- report({
- message: messages.rejected,
- node: comment,
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/comment-whitespace-inside/README.md b/assets/node_modules/stylelint/lib/rules/comment-whitespace-inside/README.md
deleted file mode 100644
index 1d23218..0000000
--- a/assets/node_modules/stylelint/lib/rules/comment-whitespace-inside/README.md
+++ /dev/null
@@ -1,86 +0,0 @@
-# comment-whitespace-inside
-
-Require or disallow whitespace on the inside of comment markers.
-
-```css
- /* comment */
-/** ↑ ↑
- * The space inside these two markers */
-```
-
-Any number of asterisks are allowed at the beginning or end of the comment. So `/** comment **/` is treated the same way as `/* comment */`.
-
-**Caveat:** Comments within *selector and value lists* are currently ignored.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be whitespace inside the markers.
-
-The following patterns are considered violations:
-
-```css
-/*comment*/
-```
-
-```css
-/*comment */
-```
-
-```css
-/** comment**/
-```
-
-The following patterns are *not* considered violations:
-
-```css
-/* comment */
-```
-
-```css
-/** comment **/
-```
-
-```css
-/**
- * comment
- */
-```
-
-```css
-/* comment
-*/
-```
-
-### `"never"`
-
-There *must never* be whitespace on the inside the markers.
-
-The following patterns are considered violations:
-
-```css
-/* comment */
-```
-
-```css
-/*comment */
-```
-
-```css
-/** comment**/
-```
-
-The following patterns are *not* considered violations:
-
-```css
-/*comment*/
-```
-
-```css
-/****comment****/
-```
diff --git a/assets/node_modules/stylelint/lib/rules/comment-whitespace-inside/index.js b/assets/node_modules/stylelint/lib/rules/comment-whitespace-inside/index.js
deleted file mode 100755
index d4aadfc..0000000
--- a/assets/node_modules/stylelint/lib/rules/comment-whitespace-inside/index.js
+++ /dev/null
@@ -1,115 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-
-const isWhitespace = require('../../utils/isWhitespace');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'comment-whitespace-inside';
-
-const messages = ruleMessages(ruleName, {
- expectedOpening: 'Expected whitespace after "/*"',
- rejectedOpening: 'Unexpected whitespace after "/*"',
- expectedClosing: 'Expected whitespace before "*/"',
- rejectedClosing: 'Unexpected whitespace before "*/"',
-});
-
-function rule(expectation, options, context) {
- return function(root, result) {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkComments(function(comment) {
- if (comment.raws.inline || comment.inline) {
- return;
- }
-
- const rawComment = comment.toString();
- const firstFourChars = rawComment.substr(0, 4);
-
- // Return early if sourcemap or copyright comment
- if (/^\/\*[#!]\s/.test(firstFourChars)) {
- return;
- }
-
- const leftMatches = rawComment.match(/(^\/\*+)(\s)?/);
- const rightMatches = rawComment.match(/(\s)?(\*+\/)$/);
- const opener = leftMatches[1];
- const leftSpace = leftMatches[2] || '';
- const rightSpace = rightMatches[1] || '';
- const closer = rightMatches[2];
-
- if (expectation === 'never' && leftSpace !== '') {
- complain(messages.rejectedOpening, opener.length);
- }
-
- if (expectation === 'always' && !isWhitespace(leftSpace)) {
- complain(messages.expectedOpening, opener.length);
- }
-
- if (expectation === 'never' && rightSpace !== '') {
- complain(messages.rejectedClosing, comment.toString().length - closer.length - 1);
- }
-
- if (expectation === 'always' && !isWhitespace(rightSpace)) {
- complain(messages.expectedClosing, comment.toString().length - closer.length - 1);
- }
-
- function addWhitespaceBefore(comment) {
- if (comment.text.startsWith('*')) {
- comment.text = comment.text.replace(/^(\*+)/, `$1 `);
- } else {
- comment.raws.left = ' ';
- }
- }
-
- function addWhitespaceAfter(comment) {
- if (_.last(comment.text) === '*') {
- comment.text = comment.text.replace(/(\*+)$/, ` $1`);
- } else {
- comment.raws.right = ' ';
- }
- }
-
- function complain(message, index) {
- if (context.fix) {
- if (expectation === 'never') {
- comment.raws.left = '';
- comment.raws.right = '';
- comment.text = comment.text.replace(/^(\*+)(\s+)?/, '$1').replace(/(\s+)?(\*+)$/, '$2');
- } else {
- if (!leftSpace) {
- addWhitespaceBefore(comment);
- }
-
- if (!rightSpace) {
- addWhitespaceAfter(comment);
- }
- }
-
- return;
- }
-
- report({
- message,
- index,
- result,
- ruleName,
- node: comment,
- });
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/comment-word-blacklist/README.md b/assets/node_modules/stylelint/lib/rules/comment-word-blacklist/README.md
deleted file mode 100644
index be4ea0b..0000000
--- a/assets/node_modules/stylelint/lib/rules/comment-word-blacklist/README.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# comment-word-blacklist
-
-Specify a blacklist of disallowed words within comments.
-
-```css
- /* words within comments */
-/** ↑ ↑ ↑
- * These three words */
-```
-
-**Caveat:** Comments within *selector and value lists* are currently ignored.
-
-## Options
-
-`array|string|regexp`: `["array", "of", "words", /or/, "/regex/"]|"word"|"/regex/"`
-
-If a string is surrounded with `"/"` (e.g. `"/^TODO:/"`), it is interpreted as a regular expression.
-
-Given:
-
-```js
-["/^TODO:/", "badword"]
-```
-
-The following patterns are considered violations:
-
-```css
-/* TODO: */
-```
-
-```css
-/* TODO: add fallback */
-```
-
-```css
-/* some badword */
-```
-
-The following patterns are *not* considered violations:
-
-```css
-/* comment */
-```
diff --git a/assets/node_modules/stylelint/lib/rules/comment-word-blacklist/index.js b/assets/node_modules/stylelint/lib/rules/comment-word-blacklist/index.js
deleted file mode 100644
index 74f3c5b..0000000
--- a/assets/node_modules/stylelint/lib/rules/comment-word-blacklist/index.js
+++ /dev/null
@@ -1,57 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const containsString = require('../../utils/containsString');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'comment-word-blacklist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (pattern) => `Unexpected word matching pattern "${pattern}"`,
-});
-
-function rule(blacklist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: blacklist,
- possible: [_.isString, _.isRegExp],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkComments((comment) => {
- const text = comment.text;
- const rawComment = comment.toString();
- const firstFourChars = rawComment.substr(0, 4);
-
- // Return early if sourcemap
- if (firstFourChars === '/*# ') {
- return;
- }
-
- const matchesWord = matchesStringOrRegExp(text, blacklist) || containsString(text, blacklist);
-
- if (!matchesWord) {
- return;
- }
-
- report({
- message: messages.rejected(matchesWord.pattern),
- node: comment,
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/custom-media-pattern/README.md b/assets/node_modules/stylelint/lib/rules/custom-media-pattern/README.md
deleted file mode 100644
index 9f42393..0000000
--- a/assets/node_modules/stylelint/lib/rules/custom-media-pattern/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# custom-media-pattern
-
-Specify a pattern for custom media query names.
-
-```css
-@custom-media --foo (max-width: 30em);
-/** ↑
- * The pattern of this */
-```
-
-## Options
-
-`regex|string`
-
-A string will be translated into a RegExp like so `new RegExp(yourString)` — so be sure to escape properly.
-
-Given the string:
-
-```js
-"foo-.+"
-```
-
-The following patterns are considered violations:
-
-```css
-@custom-media --bar (min-width: 30em);
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@custom-media --foo-bar (min-width: 30em);
-```
diff --git a/assets/node_modules/stylelint/lib/rules/custom-media-pattern/index.js b/assets/node_modules/stylelint/lib/rules/custom-media-pattern/index.js
deleted file mode 100644
index 3da194c..0000000
--- a/assets/node_modules/stylelint/lib/rules/custom-media-pattern/index.js
+++ /dev/null
@@ -1,52 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'custom-media-pattern';
-
-const messages = ruleMessages(ruleName, {
- expected: 'Expected custom media query name to match specified pattern',
-});
-
-function rule(pattern) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: pattern,
- possible: [_.isRegExp, _.isString],
- });
-
- if (!validOptions) {
- return;
- }
-
- const regexpPattern = _.isString(pattern) ? new RegExp(pattern) : pattern;
-
- root.walkAtRules((atRule) => {
- if (atRule.name.toLowerCase() !== 'custom-media') {
- return;
- }
-
- const customMediaName = atRule.params.match(/^--(\S+)\b/)[1];
-
- if (regexpPattern.test(customMediaName)) {
- return;
- }
-
- report({
- message: messages.expected,
- node: atRule,
- index: atRuleParamIndex(atRule),
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/custom-property-empty-line-before/README.md b/assets/node_modules/stylelint/lib/rules/custom-property-empty-line-before/README.md
deleted file mode 100644
index 546030f..0000000
--- a/assets/node_modules/stylelint/lib/rules/custom-property-empty-line-before/README.md
+++ /dev/null
@@ -1,252 +0,0 @@
-# custom-property-empty-line-before
-
-Require or disallow an empty line before custom properties.
-
-```css
-a {
- top: 10px;
- /* ← */
- --foo: pink; /* ↑ */
-} /* ↑ */
-/** ↑
- * This line */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule. We recommend to enable [`indentation`](../indentation/README.md) rule for better autofixing results with this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-The following patterns are considered violations:
-
-```css
-a {
- top: 10px;
- --foo: pink;
- --bar: red;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- top: 10px;
-
- --foo: pink;
-
- --bar: red;
-}
-```
-
-### `"never"`
-
-The following patterns are considered violations:
-
-```css
-a {
- top: 10px;
-
- --foo: pink;
-
- --bar: red;
-}
-```
-
-```css
-a {
-
- --foo: pink;
- --bar: red;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- top: 10px;
- --foo: pink;
- --bar: red;
-}
-```
-
-```css
-a {
- --foo: pink;
- --bar: red;
-}
-```
-
-## Optional secondary options
-
-### `except: ["after-comment", "after-custom-property", "first-nested"]`
-
-#### `"after-comment"`
-
-Reverse the primary option for custom properties that follow a comment.
-
-Shared-line comments do not trigger this option.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```css
-a {
-
- --foo: pink;
- /* comment */
-
- --bar: red;
-}
-```
-
-```css
-a {
-
- --foo: pink; /* comment */
- --bar: red;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
-
- --foo: pink;
- /* comment */
- --bar: red;
-}
-```
-
-```css
-a {
-
- --foo: pink; /* comment */
-
- --bar: red;
-}
-```
-
-#### `"after-custom-property"`
-
-Reverse the primary option for custom properties that follow another custom property.
-
-Shared-line comments do not affect this option.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```css
-a {
-
- --foo: pink;
-
- --bar: red;
-}
-```
-
-```css
-a {
-
- --foo: pink; /* comment */
-
- --bar: red;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
-
- --foo: pink;
- --bar: red;
-}
-```
-
-```css
-a {
-
- --foo: pink; /* comment */
- --bar: red;
-}
-```
-
-#### `"first-nested"`
-
-Reverse the primary option for custom properties that are nested and the first child of their parent node.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```css
-a {
-
- --foo: pink;
-
- --bar: red;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- --foo: pink;
-
- --bar: red;
-}
-```
-
-### `ignore: ["after-comment", "first-nested", "inside-single-line-block"]`
-
-#### `"after-comment"`
-
-Ignore custom properties that follow a comment.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- /* comment */
- --foo: pink;
-}
-```
-
-#### `"first-nested"`
-
-Ignore custom properties that are nested and the first child of their parent node.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- --foo: pink;
-
- --bar: red;
-}
-```
-
-#### `"inside-single-line-block"`
-
-Ignore custom properties that are inside single-line blocks.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-a { --foo: pink; --bar: red; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/custom-property-empty-line-before/index.js b/assets/node_modules/stylelint/lib/rules/custom-property-empty-line-before/index.js
deleted file mode 100644
index 5cb1034..0000000
--- a/assets/node_modules/stylelint/lib/rules/custom-property-empty-line-before/index.js
+++ /dev/null
@@ -1,127 +0,0 @@
-'use strict';
-
-const addEmptyLineBefore = require('../../utils/addEmptyLineBefore');
-const blockString = require('../../utils/blockString');
-const getPreviousNonSharedLineCommentNode = require('../../utils/getPreviousNonSharedLineCommentNode');
-const hasEmptyLine = require('../../utils/hasEmptyLine');
-const isAfterComment = require('../../utils/isAfterComment');
-const isCustomProperty = require('../../utils/isCustomProperty');
-const isFirstNested = require('../../utils/isFirstNested');
-const isSingleLineString = require('../../utils/isSingleLineString');
-const isStandardSyntaxDeclaration = require('../../utils/isStandardSyntaxDeclaration');
-const optionsMatches = require('../../utils/optionsMatches');
-const removeEmptyLinesBefore = require('../../utils/removeEmptyLinesBefore');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'custom-property-empty-line-before';
-
-const messages = ruleMessages(ruleName, {
- expected: 'Expected empty line before custom property',
- rejected: 'Unexpected empty line before custom property',
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: expectation,
- possible: ['always', 'never'],
- },
- {
- actual: options,
- possible: {
- except: ['first-nested', 'after-comment', 'after-custom-property'],
- ignore: ['after-comment', 'first-nested', 'inside-single-line-block'],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const prop = decl.prop;
- const parent = decl.parent;
-
- if (!isStandardSyntaxDeclaration(decl)) {
- return;
- }
-
- if (!isCustomProperty(prop)) {
- return;
- }
-
- // Optionally ignore the node if a comment precedes it
- if (optionsMatches(options, 'ignore', 'after-comment') && isAfterComment(decl)) {
- return;
- }
-
- // Optionally ignore the node if it is the first nested
- if (optionsMatches(options, 'ignore', 'first-nested') && isFirstNested(decl)) {
- return;
- }
-
- // Optionally ignore nodes inside single-line blocks
- if (
- optionsMatches(options, 'ignore', 'inside-single-line-block') &&
- isSingleLineString(blockString(parent))
- ) {
- return;
- }
-
- let expectEmptyLineBefore = expectation === 'always';
-
- // Optionally reverse the expectation if any exceptions apply
- if (
- (optionsMatches(options, 'except', 'first-nested') && isFirstNested(decl)) ||
- (optionsMatches(options, 'except', 'after-comment') && isAfterComment(decl)) ||
- (optionsMatches(options, 'except', 'after-custom-property') && isAfterCustomProperty(decl))
- ) {
- expectEmptyLineBefore = !expectEmptyLineBefore;
- }
-
- const hasEmptyLineBefore = hasEmptyLine(decl.raws.before);
-
- // Return if the expectation is met
- if (expectEmptyLineBefore === hasEmptyLineBefore) {
- return;
- }
-
- // Fix
- if (context.fix) {
- if (expectEmptyLineBefore) {
- addEmptyLineBefore(decl, context.newline);
- } else {
- removeEmptyLinesBefore(decl, context.newline);
- }
-
- return;
- }
-
- const message = expectEmptyLineBefore ? messages.expected : messages.rejected;
-
- report({
- message,
- node: decl,
- result,
- ruleName,
- });
- });
- };
-}
-
-function isAfterCustomProperty(decl) {
- const prevNode = getPreviousNonSharedLineCommentNode(decl);
-
- return prevNode && prevNode.prop && isCustomProperty(prevNode.prop);
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/custom-property-pattern/README.md b/assets/node_modules/stylelint/lib/rules/custom-property-pattern/README.md
deleted file mode 100644
index 929a30a..0000000
--- a/assets/node_modules/stylelint/lib/rules/custom-property-pattern/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# custom-property-pattern
-
-Specify a pattern for custom properties.
-
-```css
-a { --foo-: 1px; }
-/** ↑
- * The pattern of this */
-```
-
-## Options
-
-`regex|string`
-
-A string will be translated into a RegExp like so `new RegExp(yourString)` — so be sure to escape properly.
-
-Given the string:
-
-```js
-"foo-.+"
-```
-
-The following patterns are considered violations:
-
-```css
-:root { --boo-bar: 0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-:root { --foo-bar: 0; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/custom-property-pattern/index.js b/assets/node_modules/stylelint/lib/rules/custom-property-pattern/index.js
deleted file mode 100644
index cc178de..0000000
--- a/assets/node_modules/stylelint/lib/rules/custom-property-pattern/index.js
+++ /dev/null
@@ -1,51 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isCustomProperty = require('../../utils/isCustomProperty');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'custom-property-pattern';
-
-const messages = ruleMessages(ruleName, {
- expected: 'Expected custom property name to match specified pattern',
-});
-
-function rule(pattern) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: pattern,
- possible: [_.isRegExp, _.isString],
- });
-
- if (!validOptions) {
- return;
- }
-
- const regexpPattern = _.isString(pattern) ? new RegExp(pattern) : pattern;
-
- root.walkDecls((decl) => {
- const prop = decl.prop;
-
- if (!isCustomProperty(prop)) {
- return;
- }
-
- if (regexpPattern.test(prop.slice(2))) {
- return;
- }
-
- report({
- message: messages.expected,
- node: decl,
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-bang-space-after/README.md b/assets/node_modules/stylelint/lib/rules/declaration-bang-space-after/README.md
deleted file mode 100644
index daca6bd..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-bang-space-after/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# declaration-bang-space-after
-
-Require a single space or disallow whitespace after the bang of declarations.
-
-```css
-a { color: pink !important; }
-/** ↑
- * The space after this exclamation mark */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a single space after the bang.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink !important; }
-```
-
-```css
-a { color: pink !important; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink ! important; }
-```
-
-```css
-a { color: pink! important; }
-```
-
-### `"never"`
-
-There *must never* be whitespace after the bang.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink ! important; }
-```
-
-```css
-a { color: pink! important; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink !important; }
-```
-
-```css
-a { color:pink!important; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-bang-space-after/index.js b/assets/node_modules/stylelint/lib/rules/declaration-bang-space-after/index.js
deleted file mode 100644
index d5705e6..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-bang-space-after/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-'use strict';
-
-const declarationBangSpaceChecker = require('../declarationBangSpaceChecker');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'declaration-bang-space-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected single space after "!"',
- rejectedAfter: () => 'Unexpected whitespace after "!"',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- declarationBangSpaceChecker({
- root,
- result,
- locationChecker: checker.after,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (decl, index) => {
- let bangIndex = index - declarationValueIndex(decl);
- const value = decl.raws.value ? decl.raws.value.raw : decl.value;
- let target;
- let setFixed;
-
- if (bangIndex < value.length) {
- target = value;
- setFixed = (value) => {
- if (decl.raws.value) {
- decl.raws.value.raw = value;
- } else {
- decl.value = value;
- }
- };
- } else if (decl.important) {
- target = decl.raws.important || ' !important';
- bangIndex -= value.length;
- setFixed = (value) => {
- decl.raws.important = value;
- };
- } else {
- return false; // not standard
- }
-
- const targetBefore = target.slice(0, bangIndex + 1);
- const targetAfter = target.slice(bangIndex + 1);
-
- if (expectation === 'always') {
- setFixed(targetBefore + targetAfter.replace(/^\s*/, ' '));
-
- return true;
- }
-
- if (expectation === 'never') {
- setFixed(targetBefore + targetAfter.replace(/^\s*/, ''));
-
- return true;
- }
- }
- : null,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-bang-space-before/README.md b/assets/node_modules/stylelint/lib/rules/declaration-bang-space-before/README.md
deleted file mode 100644
index 7b4178f..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-bang-space-before/README.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# declaration-bang-space-before
-
-Require a single space or disallow whitespace before the bang of declarations.
-
-```css
-a { color: pink !important; }
-/** ↑
- * The space before this exclamation mark */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a single space before the bang.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink!important; }
-```
-
-```css
-a { color: pink ! important; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink !important; }
-```
-
-```css
-a { color:pink ! important; }
-```
-
-### `"never"`
-
-There *must never* be whitespace before the bang.
-
-The following patterns are considered violations:
-
-```css
-a { color : pink !important; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink!important; }
-```
-
-```css
-a { color: pink! important; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-bang-space-before/index.js b/assets/node_modules/stylelint/lib/rules/declaration-bang-space-before/index.js
deleted file mode 100644
index c5693bc..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-bang-space-before/index.js
+++ /dev/null
@@ -1,83 +0,0 @@
-'use strict';
-
-const declarationBangSpaceChecker = require('../declarationBangSpaceChecker');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'declaration-bang-space-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected single space before "!"',
- rejectedBefore: () => 'Unexpected whitespace before "!"',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- declarationBangSpaceChecker({
- root,
- result,
- locationChecker: checker.before,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (decl, index) => {
- let bangIndex = index - declarationValueIndex(decl);
- const value = decl.raws.value ? decl.raws.value.raw : decl.value;
- let target;
- let setFixed;
-
- if (bangIndex < value.length) {
- target = value;
- setFixed = (value) => {
- if (decl.raws.value) {
- decl.raws.value.raw = value;
- } else {
- decl.value = value;
- }
- };
- } else if (decl.important) {
- target = decl.raws.important || ' !important';
- bangIndex -= value.length;
- setFixed = (value) => {
- decl.raws.important = value;
- };
- } else {
- return false; // not standard
- }
-
- const targetBefore = target.slice(0, bangIndex);
- const targetAfter = target.slice(bangIndex);
-
- if (expectation === 'always') {
- // eslint-disable-next-line prefer-template
- setFixed(targetBefore.replace(/\s*$/, '') + ' ' + targetAfter);
-
- return true;
- }
-
- if (expectation === 'never') {
- setFixed(targetBefore.replace(/\s*$/, '') + targetAfter);
-
- return true;
- }
- }
- : null,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-no-duplicate-properties/README.md b/assets/node_modules/stylelint/lib/rules/declaration-block-no-duplicate-properties/README.md
deleted file mode 100644
index 33a61a1..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-no-duplicate-properties/README.md
+++ /dev/null
@@ -1,129 +0,0 @@
-# declaration-block-no-duplicate-properties
-
-Disallow duplicate properties within declaration blocks.
-
-```css
-a { color: pink; color: orange; }
-/** ↑ ↑
- * These duplicated properties */
-```
-
-This rule ignores variables (`$sass`, `@less`, `--custom-property`).
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; color: orange; }
-```
-
-```css
-a { color: pink; background: orange; color: orange }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a { color: pink; background: orange; }
-```
-
-## Optional secondary options
-
-### `ignore: ["consecutive-duplicates"]`
-
-Ignore consecutive duplicated properties.
-
-They can prove to be useful fallbacks for older browsers.
-
-The following patterns are considered violations:
-
-```css
-p {
- font-size: 16px;
- font-weight: 400;
- font-size: 1rem;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-p {
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
-}
-```
-
-### `ignore: ["consecutive-duplicates-with-different-values"]`
-
-Ignore consecutive duplicated properties with different values.
-
-Including duplicate properties (fallbacks) is useful to deal with older browsers support for CSS properties. E.g. using `px` units when `rem` isn't available.
-
-The following patterns are considered violations:
-
-```css
-/* properties with the same value */
-p {
- font-size: 16px;
- font-size: 16px;
- font-weight: 400;
-}
-```
-
-```css
-/* nonconsecutive duplicates */
-p {
- font-size: 16px;
- font-weight: 400;
- font-size: 1rem;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-p {
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
-}
-```
-
-### `ignoreProperties: ["/regex/", "non-regex"]`
-
-Ignore duplicates of specific properties.
-
-Given:
-
-```js
-["color", "/background\-/"]
-```
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; background: orange; background: white; }
-```
-
-```css
-a { background: orange; color: pink; background: white; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; color: orange; background-color: orange; background-color: white; }
-```
-
-```css
-a { color: pink; background-color: orange; color: orange; background-color: white; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-no-duplicate-properties/index.js b/assets/node_modules/stylelint/lib/rules/declaration-block-no-duplicate-properties/index.js
deleted file mode 100644
index 8671479..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-no-duplicate-properties/index.js
+++ /dev/null
@@ -1,119 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const eachDeclarationBlock = require('../../utils/eachDeclarationBlock');
-const isCustomProperty = require('../../utils/isCustomProperty');
-const isStandardSyntaxProperty = require('../../utils/isStandardSyntaxProperty');
-const optionsMatches = require('../../utils/optionsMatches');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'declaration-block-no-duplicate-properties';
-
-const messages = ruleMessages(ruleName, {
- rejected: (property) => `Unexpected duplicate "${property}"`,
-});
-
-function rule(on, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- { actual: on },
- {
- actual: options,
- possible: {
- ignore: ['consecutive-duplicates', 'consecutive-duplicates-with-different-values'],
- ignoreProperties: [_.isString],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- eachDeclarationBlock(root, (eachDecl) => {
- const decls = [];
- const values = [];
-
- eachDecl((decl) => {
- const prop = decl.prop;
- const value = decl.value;
-
- if (!isStandardSyntaxProperty(prop)) {
- return;
- }
-
- if (isCustomProperty(prop)) {
- return;
- }
-
- // Return early if the property is to be ignored
- if (optionsMatches(options, 'ignoreProperties', prop)) {
- return;
- }
-
- // Ignore the src property as commonly duplicated in at-fontface
- if (prop.toLowerCase() === 'src') {
- return;
- }
-
- const indexDuplicate = decls.indexOf(prop.toLowerCase());
-
- if (indexDuplicate !== -1) {
- if (optionsMatches(options, 'ignore', 'consecutive-duplicates-with-different-values')) {
- // if duplicates are not consecutive
- if (indexDuplicate !== decls.length - 1) {
- report({
- message: messages.rejected(prop),
- node: decl,
- result,
- ruleName,
- });
-
- return;
- }
-
- // if values of consecutive duplicates are equal
- if (value === values[indexDuplicate]) {
- report({
- message: messages.rejected(value),
- node: decl,
- result,
- ruleName,
- });
-
- return;
- }
-
- return;
- }
-
- if (
- optionsMatches(options, 'ignore', 'consecutive-duplicates') &&
- indexDuplicate === decls.length - 1
- ) {
- return;
- }
-
- report({
- message: messages.rejected(prop),
- node: decl,
- result,
- ruleName,
- });
- }
-
- decls.push(prop.toLowerCase());
- values.push(value.toLowerCase());
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-no-redundant-longhand-properties/README.md b/assets/node_modules/stylelint/lib/rules/declaration-block-no-redundant-longhand-properties/README.md
deleted file mode 100644
index ce803c0..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-no-redundant-longhand-properties/README.md
+++ /dev/null
@@ -1,183 +0,0 @@
-# declaration-block-no-redundant-longhand-properties
-
-Disallow longhand properties that can be combined into one shorthand property.
-
-```css
- a {
- padding-top: 1px;
- padding-right: 2px;
- padding-bottom: 3px;
- padding-left: 4px; }
-/** ↑
- * These longhand properties */
-```
-
-The longhand properties in the example above can be more concisely written as:
-
-```css
-a {
- padding: 1px 2px 3px 4px;
-}
-```
-
-This rule will only complain if you've used the longhand equivalent of *all* the properties that the shorthand will set.
-
-This rule complains when the following shorthand properties can be used:
-
-- `margin`
-- `padding`
-- `background`
-- `font`
-- `border`
-- `border-top`
-- `border-bottom`
-- `border-left`
-- `border-right`
-- `border-width`
-- `border-style`
-- `border-color`
-- `list-style`
-- `border-radius`
-- `transition`
-- `animation`
-- `border-block-end`
-- `border-block-start`
-- `border-image`
-- `border-inline-end`
-- `border-inline-start`
-- `column-rule`
-- `columns`
-- `flex`
-- `flex-flow`
-- `grid`
-- `grid-area`
-- `grid-column`
-- `grid-gap`
-- `grid-row`
-- `grid-template`
-- `outline`
-- `text-decoration`
-- `text-emphasis`
-- `mask`
-
-**Please note** that properties are considered to be redundant if they may be written shorthand according to the specification, **regardless of the behavior of any individual browser**. For example, due to Internet Explorer's implementation of Flexbox, [it may not be possible to use the shorthand property `flex`](https://github.com/philipwalton/flexbugs#flexbug-8), but the longhand form is still considered a violation.
-
-Flexbox-related properties can be ignored using `ignoreShorthands: ["/flex/"]` (see below).
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a {
- margin-top: 1px;
- margin-right: 2px;
- margin-bottom: 3px;
- margin-left: 4px;
-}
-```
-
-```css
-a {
- font-style: italic;
- font-variant: normal;
- font-weight: bold;
- font-stretch: normal;
- font-size: 14px;
- line-height: 1.2;
- font-family: serif;
-}
-```
-
-```css
-a {
- -webkit-transition-property: top;
- -webkit-transition-duration: 2s;
- -webkit-transition-timing-function: ease;
- -webkit-transition-delay: 0.5s;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- margin: 1px 2px 3px 4px;
-}
-```
-
-```css
-a {
- font: italic normal bold normal 14px/1.2 serif;
-}
-```
-
-```css
-a {
- -webkit-transition: top 2s ease 0.5s;
-}
-```
-
-```css
-a {
- margin-top: 1px;
- margin-right: 2px;
-}
-```
-
-```css
-a {
- margin-top: 1px;
- margin-right: 2px;
- margin-bottom: 3px;
-}
-```
-
-## Optional secondary options
-
-### `ignoreShorthands: ["/regex/", /regex/, "string"]`
-
-Given:
-
-```js
-["padding", "/border/"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- padding-top: 20px;
- padding-right: 10px;
- padding-bottom: 30px;
- padding-left: 10px;
-}
-```
-
-```css
-a {
- border-top-width: 1px;
- border-bottom-width: 1px;
- border-left-width: 1px;
- border-right-width: 1px;
-}
-```
-
-```css
-a {
- border-top-width: 1px;
- border-bottom-width: 1px;
- border-left-width: 1px;
- border-right-width: 1px;
-}
-```
-
-```css
-a {
- border-top-color: green;
- border-top-style: double;
- border-top-width: 7px;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-no-redundant-longhand-properties/index.js b/assets/node_modules/stylelint/lib/rules/declaration-block-no-redundant-longhand-properties/index.js
deleted file mode 100644
index bbed926..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-no-redundant-longhand-properties/index.js
+++ /dev/null
@@ -1,97 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const eachDeclarationBlock = require('../../utils/eachDeclarationBlock');
-const optionsMatches = require('../../utils/optionsMatches');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const shorthandData = require('../../reference/shorthandData');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'declaration-block-no-redundant-longhand-properties';
-
-const messages = ruleMessages(ruleName, {
- expected: (props) => `Expected shorthand property "${props}"`,
-});
-
-function rule(actual, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- { actual },
- {
- actual: options,
- possible: {
- ignoreShorthands: [_.isString, _.isRegExp],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- const longhandProperties = _.transform(shorthandData, (result, values, key) => {
- if (optionsMatches(options, 'ignoreShorthands', key)) {
- return;
- }
-
- values.forEach((value) => {
- (result[value] || (result[value] = [])).push(key);
- });
- });
-
- eachDeclarationBlock(root, (eachDecl) => {
- const longhandDeclarations = {};
-
- eachDecl((decl) => {
- const prop = decl.prop.toLowerCase();
- const unprefixedProp = postcss.vendor.unprefixed(prop);
- const prefix = postcss.vendor.prefix(prop);
-
- const shorthandProperties = longhandProperties[unprefixedProp];
-
- if (!shorthandProperties) {
- return;
- }
-
- shorthandProperties.forEach((shorthandProperty) => {
- const prefixedShorthandProperty = prefix + shorthandProperty;
-
- if (!longhandDeclarations[prefixedShorthandProperty]) {
- longhandDeclarations[prefixedShorthandProperty] = [];
- }
-
- longhandDeclarations[prefixedShorthandProperty].push(prop);
-
- const prefixedShorthandData = shorthandData[shorthandProperty].map((item) => {
- return prefix + item;
- });
-
- if (
- !_.isEqual(
- prefixedShorthandData.sort(),
- longhandDeclarations[prefixedShorthandProperty].sort(),
- )
- ) {
- return;
- }
-
- report({
- ruleName,
- result,
- node: decl,
- message: messages.expected(prefixedShorthandProperty),
- });
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-no-shorthand-property-overrides/README.md b/assets/node_modules/stylelint/lib/rules/declaration-block-no-shorthand-property-overrides/README.md
deleted file mode 100644
index a09b91d..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-no-shorthand-property-overrides/README.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# declaration-block-no-shorthand-property-overrides
-
-Disallow shorthand properties that override related longhand properties.
-
-```css
-a { background-repeat: repeat; background: green; }
-/** ↑
- * This overrides the longhand property before it */
-```
-
-In almost every case, this is just an authorial oversight. For more about this behavior, see [MDN's documentation of shorthand properties](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties).
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a {
- padding-left: 10px;
- padding: 20px;
-}
-```
-
-```css
-a {
- transition-property: opacity;
- transition: opacity 1s linear;
-}
-```
-
-```css
-a {
- -webkit-transition-property: opacity;
- -webkit-transition: opacity 1s linear;
-}
-```
-
-```css
-a {
- border-top-width: 1px;
- top: 0;
- bottom: 3px;
- border: 2px solid blue;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { padding: 10px; padding-left: 20px; }
-```
-
-```css
-a { transition-property: opacity; } a { transition: opacity 1s linear; }
-```
-
-```css
-a { transition-property: opacity; -webkit-transition: opacity 1s linear; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-no-shorthand-property-overrides/index.js b/assets/node_modules/stylelint/lib/rules/declaration-block-no-shorthand-property-overrides/index.js
deleted file mode 100644
index 1762510..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-no-shorthand-property-overrides/index.js
+++ /dev/null
@@ -1,59 +0,0 @@
-'use strict';
-
-const eachDeclarationBlock = require('../../utils/eachDeclarationBlock');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const shorthandData = require('../../reference/shorthandData');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'declaration-block-no-shorthand-property-overrides';
-
-const messages = ruleMessages(ruleName, {
- rejected: (shorthand, original) => `Unexpected shorthand "${shorthand}" after "${original}"`,
-});
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- eachDeclarationBlock(root, (eachDecl) => {
- const declarations = {};
-
- eachDecl((decl) => {
- const prop = decl.prop;
- const unprefixedProp = postcss.vendor.unprefixed(prop);
- const prefix = postcss.vendor.prefix(prop).toLowerCase();
-
- const overrideables = shorthandData[unprefixedProp.toLowerCase()];
-
- if (!overrideables) {
- declarations[prop.toLowerCase()] = prop;
-
- return;
- }
-
- overrideables.forEach((longhandProp) => {
- if (!Object.prototype.hasOwnProperty.call(declarations, prefix + longhandProp)) {
- return;
- }
-
- report({
- ruleName,
- result,
- node: decl,
- message: messages.rejected(prop, declarations[prefix + longhandProp]),
- });
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-after/README.md b/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-after/README.md
deleted file mode 100644
index 68f1352..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-after/README.md
+++ /dev/null
@@ -1,127 +0,0 @@
-# declaration-block-semicolon-newline-after
-
-Require a newline or disallow whitespace after the semicolons of declaration blocks.
-
-```css
-a {
- color: pink;
- top: 0; ↑
-} ↑
-/** ↑
- * The newline after this semicolon */
-```
-
-This rule ignores:
-
-- semicolons that are preceded by Less mixins
-- the last semicolon of declaration blocks
-
-Use the `block-closing-brace-*-before` rules to control the whitespace between the last semicolon and the closing brace instead.
-
-This rule allows an end-of-line comment followed by a newline. For example,
-
-```css
-a {
- color: pink; /* end-of-line comment */
- top: 0;
-}
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline after the semicolon.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; top: 0; }
-```
-
-```css
-a {
- color: pink; /* end-of-line comment
- containing a newline */
- top: 0;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- color: pink;
- top: 0;
-}
-```
-
-```css
-a {
- color: pink; /* end-of-line comment */
- top: 0;
-}
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline after the semicolon in multi-line rules.
-
-The following patterns are considered violations:
-
-```css
-a {
- color: pink; top: 0;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a { color: pink; top: 0; }
-```
-
-```css
-a {
- color: pink;
- top: 0;
-}
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace after the semicolon in multi-line rules.
-
-The following patterns are considered violations:
-
-```css
-a {
- color: pink;
- top: 0;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a { color: pink; top: 0; }
-```
-
-```css
-a {
- color: pink
- ; top: 0;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-after/index.js b/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-after/index.js
deleted file mode 100644
index 244eb87..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-after/index.js
+++ /dev/null
@@ -1,93 +0,0 @@
-'use strict';
-
-const blockString = require('../../utils/blockString');
-const nextNonCommentNode = require('../../utils/nextNonCommentNode');
-const rawNodeString = require('../../utils/rawNodeString');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'declaration-block-semicolon-newline-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected newline after ";"',
- expectedAfterMultiLine: () => 'Expected newline after ";" in a multi-line declaration block',
- rejectedAfterMultiLine: () => 'Unexpected newline after ";" in a multi-line declaration block',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('newline', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-multi-line', 'never-multi-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- // Ignore last declaration if there's no trailing semicolon
- const parentRule = decl.parent;
-
- if (!parentRule.raws.semicolon && parentRule.last === decl) {
- return;
- }
-
- const nextNode = decl.next();
-
- if (!nextNode) {
- return;
- }
-
- // Allow end-of-line comment
- const nodeToCheck = nextNonCommentNode(nextNode);
-
- if (!nodeToCheck) {
- return;
- }
-
- checker.afterOneOnly({
- source: rawNodeString(nodeToCheck),
- index: -1,
- lineCheckStr: blockString(parentRule),
- err: (m) => {
- if (context.fix) {
- if (expectation.startsWith('always')) {
- const index = nodeToCheck.raws.before.search(/\r?\n/);
-
- if (index >= 0) {
- nodeToCheck.raws.before = nodeToCheck.raws.before.slice(index);
- } else {
- nodeToCheck.raws.before = context.newline + nodeToCheck.raws.before;
- }
-
- return;
- }
-
- if (expectation === 'never-multi-line') {
- nodeToCheck.raws.before = '';
-
- return;
- }
- }
-
- report({
- message: m,
- node: decl,
- index: decl.toString().length + 1,
- result,
- ruleName,
- });
- },
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-before/README.md b/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-before/README.md
deleted file mode 100644
index cc7ea3a..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-before/README.md
+++ /dev/null
@@ -1,107 +0,0 @@
-# declaration-block-semicolon-newline-before
-
-Require a newline or disallow whitespace before the semicolons of declaration blocks.
-
-```css
- a {
- color: pink
- ; top: 0;
- } ↑
-/** ↑
- * The newline before this semicolon */
-```
-
-This rule ignores semicolons that are preceded by Less mixins.
-
-## Options
-
-`string`: `"always"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline before the semicolons.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a {
- color: pink; top: 0;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink
-; }
-```
-
-```css
-a {
- color: pink
- ; top: 0;
-}
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline before the semicolons in multi-line rules.
-
-The following patterns are considered violations:
-
-```css
-a {
- color: pink; top: 0;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a { color: pink; top: 0; }
-```
-
-```css
-a {
- color: pink
- ; top: 0;
-}
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace before the semicolons in multi-line rules.
-
-The following patterns are considered violations:
-
-```css
-a {
- color: pink
- ; top: 0;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a { color: pink; top: 0; }
-```
-
-```css
-a {
- color: pink;
- top: 0;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-before/index.js b/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-before/index.js
deleted file mode 100644
index 88b269e..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-newline-before/index.js
+++ /dev/null
@@ -1,60 +0,0 @@
-'use strict';
-
-const blockString = require('../../utils/blockString');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'declaration-block-semicolon-newline-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected newline before ";"',
- expectedBeforeMultiLine: () => 'Expected newline before ";" in a multi-line declaration block',
- rejectedBeforeMultiLine: () =>
- 'Unexpected whitespace before ";" in a multi-line declaration block',
-});
-
-function rule(expectation) {
- const checker = whitespaceChecker('newline', expectation, messages);
-
- return function(root, result) {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-multi-line', 'never-multi-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls(function(decl) {
- const parentRule = decl.parent;
-
- if (!parentRule.raws.semicolon && parentRule.last === decl) {
- return;
- }
-
- const declString = decl.toString();
-
- checker.beforeAllowingIndentation({
- source: declString,
- index: declString.length,
- lineCheckStr: blockString(parentRule),
- err: (m) => {
- report({
- message: m,
- node: decl,
- index: decl.toString().length - 1,
- result,
- ruleName,
- });
- },
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-after/README.md b/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-after/README.md
deleted file mode 100644
index 6e296ac..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-after/README.md
+++ /dev/null
@@ -1,130 +0,0 @@
-# declaration-block-semicolon-space-after
-
-Require a single space or disallow whitespace after the semicolons of declaration blocks.
-
-```css
-a { color: pink; top: 0; }
-/** ↑
- * The space after this semicolon */
-```
-
-This rule ignores:
-
-- semicolons that are preceded by Less mixins
-- the last semicolon of declaration blocks
-
-Use the `block-closing-brace-*-before` rules to control the whitespace between the last semicolon and the closing brace instead.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"never-single-line"`
-
-### `"always"`
-
-There *must always* be a single space after the semicolon.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink;top: 0; }
-```
-
-```css
-a {
- color: pink;
- top: 0;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink;}
-```
-
-```css
-a { color: pink; }
-```
-
-```css
-a { color: pink; top: 0; }
-```
-
-### `"never"`
-
-There *must never* be whitespace after the semicolon.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; top: 0; }
-```
-
-```css
-a {
- color: pink;
- top: 0;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink;}
-```
-
-```css
-a { color: pink; }
-```
-
-```css
-a { color: pink;top: 0; }
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space after the semicolon in single-line declaration blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink;top: 0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; top: 0; }
-```
-
-```css
-a {
- color: pink;
- top: 0;
-}
-```
-
-### `"never-single-line"`
-
-There *must never* be whitespace after the semicolon in single-line declaration blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; top: 0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink;top: 0; }
-```
-
-```css
-a {
- color: pink;
- top: 0;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-after/index.js b/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-after/index.js
deleted file mode 100644
index 5806ef5..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-after/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-'use strict';
-
-const blockString = require('../../utils/blockString');
-const rawNodeString = require('../../utils/rawNodeString');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'declaration-block-semicolon-space-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected single space after ";"',
- rejectedAfter: () => 'Unexpected whitespace after ";"',
- expectedAfterSingleLine: () =>
- 'Expected single space after ";" in a single-line declaration block',
- rejectedAfterSingleLine: () =>
- 'Unexpected whitespace after ";" in a single-line declaration block',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return function(root, result) {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never', 'always-single-line', 'never-single-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls(function(decl) {
- // Ignore last declaration if there's no trailing semicolon
- const parentRule = decl.parent;
-
- if (!parentRule.raws.semicolon && parentRule.last === decl) {
- return;
- }
-
- const nextDecl = decl.next();
-
- if (!nextDecl) {
- return;
- }
-
- checker.after({
- source: rawNodeString(nextDecl),
- index: -1,
- lineCheckStr: blockString(parentRule),
- err: (m) => {
- if (context.fix) {
- if (expectation.startsWith('always')) {
- nextDecl.raws.before = ' ';
-
- return;
- }
-
- if (expectation.startsWith('never')) {
- nextDecl.raws.before = '';
-
- return;
- }
- }
-
- report({
- message: m,
- node: decl,
- index: decl.toString().length + 1,
- result,
- ruleName,
- });
- },
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-before/README.md b/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-before/README.md
deleted file mode 100644
index dda65a3..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-before/README.md
+++ /dev/null
@@ -1,113 +0,0 @@
-# declaration-block-semicolon-space-before
-
-Require a single space or disallow whitespace before the semicolons of declaration blocks.
-
-```css
-a { color: pink; }
-/** ↑
- * The space before this semicolon */
-```
-
-This rule ignores semicolons that are preceded by Less mixins.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"never-single-line"`
-
-### `"always"`
-
-There *must always* be a single space before the semicolons.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a { color: pink; top: 0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink ; }
-```
-
-```css
-a { color: pink ; top: 0 ; }
-```
-
-### `"never"`
-
-There *must never* be whitespace before the semicolons.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink ; }
-```
-
-```css
-a { color: pink ; top: 0 ; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a { color: pink; top: 0; }
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space before the semicolons in single-line declaration blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink ; }
-```
-
-```css
-a { color: pink; top: 0; }
-```
-
-```css
-a { color: pink ; top: 0 ; }
-```
-
-### `"never-single-line"`
-
-There *must never* be whitespace before the semicolons in single-line declaration blocks.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink ; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a { color: pink; top: 0; }
-```
-
-```css
-a { color: pink ; top: 0 ; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-before/index.js b/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-before/index.js
deleted file mode 100644
index f840f4a..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-semicolon-space-before/index.js
+++ /dev/null
@@ -1,91 +0,0 @@
-'use strict';
-
-const blockString = require('../../utils/blockString');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'declaration-block-semicolon-space-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected single space before ";"',
- rejectedBefore: () => 'Unexpected whitespace before ";"',
- expectedBeforeSingleLine: () =>
- 'Expected single space before ";" in a single-line declaration block',
- rejectedBeforeSingleLine: () =>
- 'Unexpected whitespace before ";" in a single-line declaration block',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never', 'always-single-line', 'never-single-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- // Ignore last declaration if there's no trailing semicolon
- const parentRule = decl.parent;
-
- if (!parentRule.raws.semicolon && parentRule.last === decl) {
- return;
- }
-
- const declString = decl.toString();
-
- checker.before({
- source: declString,
- index: declString.length,
- lineCheckStr: blockString(parentRule),
- err: (m) => {
- if (context.fix) {
- const value = decl.raws.value ? decl.raws.value.raw : decl.value;
-
- if (expectation.startsWith('always')) {
- if (decl.important) {
- decl.raws.important = ' !important ';
- } else if (decl.raws.value) {
- decl.raws.value.raw = value.replace(/\s*$/, ' ');
- } else {
- decl.value = value.replace(/\s*$/, ' ');
- }
-
- return;
- }
-
- if (expectation.startsWith('never')) {
- if (decl.important) {
- decl.raws.important = decl.raws.important.replace(/\s*$/, '');
- } else if (decl.raws.value) {
- decl.raws.value.raw = value.replace(/\s*$/, '');
- } else {
- decl.value = value.replace(/\s*$/, '');
- }
-
- return;
- }
- }
-
- report({
- message: m,
- node: decl,
- index: decl.toString().length - 1,
- result,
- ruleName,
- });
- },
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-single-line-max-declarations/README.md b/assets/node_modules/stylelint/lib/rules/declaration-block-single-line-max-declarations/README.md
deleted file mode 100644
index 27a0b28..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-single-line-max-declarations/README.md
+++ /dev/null
@@ -1,44 +0,0 @@
-# declaration-block-single-line-max-declarations
-
-Limit the number of declarations within a single-line declaration block.
-
-```css
-a { color: pink; top: 0; }
-/** ↑ ↑
- * The number of these declarations */
-```
-
-## Options
-
-`int`: Maximum number of declarations allowed.
-
-For example, with `1`:
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; top: 3px; }
-```
-
-```css
-a,
-b { color: pink; top: 3px; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a,
-b { color: pink; }
-```
-
-```css
-a {
- color: pink;
- top: 3px;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-single-line-max-declarations/index.js b/assets/node_modules/stylelint/lib/rules/declaration-block-single-line-max-declarations/index.js
deleted file mode 100644
index 2c25d8c..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-single-line-max-declarations/index.js
+++ /dev/null
@@ -1,56 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const beforeBlockString = require('../../utils/beforeBlockString');
-const blockString = require('../../utils/blockString');
-const isSingleLineString = require('../../utils/isSingleLineString');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'declaration-block-single-line-max-declarations';
-
-const messages = ruleMessages(ruleName, {
- expected: (max) => `Expected no more than ${max} ${max === 1 ? 'declaration' : 'declarations'}`,
-});
-
-function rule(quantity) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: quantity,
- possible: [_.isNumber],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isSingleLineString(blockString(rule))) {
- return;
- }
-
- if (!rule.nodes) {
- return;
- }
-
- const decls = rule.nodes.filter((node) => node.type === 'decl');
-
- if (decls.length <= quantity) {
- return;
- }
-
- report({
- message: messages.expected(quantity),
- node: rule,
- index: beforeBlockString(rule, { noRawBefore: true }).length,
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-trailing-semicolon/README.md b/assets/node_modules/stylelint/lib/rules/declaration-block-trailing-semicolon/README.md
deleted file mode 100644
index 3efef0b..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-trailing-semicolon/README.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# declaration-block-trailing-semicolon
-
-Require or disallow a trailing semicolon within declaration blocks.
-
-```css
-a { background: orange; color: pink; }
-/** ↑
- * This semicolon */
-```
-
-The trailing semicolon is the *last* semicolon in a declaration block and it is optional.
-
-This rule ignores:
-
-- Less mixins
-- trailing `//` comments
-- declaration blocks containing nested (at-)rules
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a trailing semicolon.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink }
-```
-
-```css
-a { background: orange; color: pink }
-```
-
-```css
-a { @include foo }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a { background: orange; color: pink; }
-```
-
-```css
-a { @include foo; }
-```
-
-### `"never"`
-
-There *must never* be a trailing semicolon.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a { background: orange; color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink }
-```
-
-```css
-a { background: orange; color: pink }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-block-trailing-semicolon/index.js b/assets/node_modules/stylelint/lib/rules/declaration-block-trailing-semicolon/index.js
deleted file mode 100644
index 890dd96..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-block-trailing-semicolon/index.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-
-const hasBlock = require('../../utils/hasBlock');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'declaration-block-trailing-semicolon';
-
-const messages = ruleMessages(ruleName, {
- expected: 'Expected a trailing semicolon',
- rejected: 'Unexpected trailing semicolon',
-});
-
-function rule(expectation, _, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules((atRule) => {
- if (atRule.parent === root) {
- return;
- }
-
- if (atRule !== atRule.parent.last) {
- return;
- }
-
- if (hasBlock(atRule)) {
- return;
- }
-
- checkLastNode(atRule);
- });
-
- root.walkDecls((decl) => {
- if (decl !== decl.parent.last) {
- return;
- }
-
- checkLastNode(decl);
- });
-
- function checkLastNode(node) {
- let message;
-
- if (expectation === 'always') {
- if (node.parent.raws.semicolon) {
- return;
- }
-
- // auto-fix
- if (context.fix) {
- node.parent.raws.semicolon = true;
-
- if (node.type === 'atrule') {
- node.raws.between = '';
- node.parent.raws.after = ' ';
- }
-
- return;
- }
-
- message = messages.expected;
- } else if (expectation === 'never') {
- if (!node.parent.raws.semicolon) {
- return;
- }
-
- // auto-fix
- if (context.fix) {
- node.parent.raws.semicolon = false;
-
- return;
- }
-
- message = messages.rejected;
- }
-
- report({
- message,
- node,
- index: node.toString().trim().length - 1,
- result,
- ruleName,
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-colon-newline-after/README.md b/assets/node_modules/stylelint/lib/rules/declaration-colon-newline-after/README.md
deleted file mode 100644
index 60f6f69..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-colon-newline-after/README.md
+++ /dev/null
@@ -1,71 +0,0 @@
-# declaration-colon-newline-after
-
-Require a newline or disallow whitespace after the colon of declarations.
-
-```css
-a {
- box-shadow:
- 0 0 0 1px #5b9dd9,
- 0 0 2px 1px rgba(30, 140, 190, 0.8);
-} /* ↑ */
-/** ↑
- * The newline after this colon */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"always-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline after the colon.
-
-The following patterns are considered violations:
-
-```css
-a { color:pink; }
-```
-
-```css
-a { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- color:
- pink;
-}
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline after the colon *if the declaration's value is multi-line*.
-
-The following patterns are considered violations:
-
-```css
-a {
- box-shadow: 0 0 0 1px #5b9dd9,
- 0 0 2px 1px rgba(30, 140, 190, 0.8);
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- box-shadow:
- 0 0 0 1px #5b9dd9,
- 0 0 2px 1px rgba(30, 140, 190, 0.8);
-}
-```
-
-```css
-a {
- color: pink;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-colon-newline-after/index.js b/assets/node_modules/stylelint/lib/rules/declaration-colon-newline-after/index.js
deleted file mode 100644
index 5fd2532..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-colon-newline-after/index.js
+++ /dev/null
@@ -1,88 +0,0 @@
-'use strict';
-
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const isStandardSyntaxDeclaration = require('../../utils/isStandardSyntaxDeclaration');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'declaration-colon-newline-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected newline after ":"',
- expectedAfterMultiLine: () => 'Expected newline after ":" with a multi-line declaration',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('newline', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-multi-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- if (!isStandardSyntaxDeclaration(decl)) {
- return;
- }
-
- // Get the raw prop, and only the prop
- const endOfPropIndex = declarationValueIndex(decl) + (decl.raws.between || '').length - 1;
-
- // The extra characters tacked onto the end ensure that there is a character to check
- // after the colon. Otherwise, with `background:pink` the character after the
- const propPlusColon = `${decl.toString().slice(0, endOfPropIndex)}xxx`;
-
- for (let i = 0, l = propPlusColon.length; i < l; i++) {
- if (propPlusColon[i] !== ':') {
- continue;
- }
-
- const indexToCheck = /^[^\S\r\n]*\/\*/.test(propPlusColon.slice(i + 1))
- ? propPlusColon.indexOf('*/', i) + 1
- : i;
-
- checker.afterOneOnly({
- source: propPlusColon,
- index: indexToCheck,
- lineCheckStr: decl.value,
- err: (m) => {
- if (context.fix) {
- const between = decl.raws.between;
- const betweenStart = declarationValueIndex(decl) - between.length;
- const sliceIndex = indexToCheck - betweenStart + 1;
- const betweenBefore = between.slice(0, sliceIndex);
- const betweenAfter = between.slice(sliceIndex);
-
- if (/^\s*\r?\n/.test(betweenAfter)) {
- decl.raws.between = betweenBefore + betweenAfter.replace(/^[^\S\r\n]*/, '');
- } else {
- decl.raws.between = betweenBefore + context.newline + betweenAfter;
- }
-
- return;
- }
-
- report({
- message: m,
- node: decl,
- index: indexToCheck,
- result,
- ruleName,
- });
- },
- });
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-colon-space-after/README.md b/assets/node_modules/stylelint/lib/rules/declaration-colon-space-after/README.md
deleted file mode 100644
index 49a9b59..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-colon-space-after/README.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# declaration-colon-space-after
-
-Require a single space or disallow whitespace after the colon of declarations.
-
-```css
-a { color: pink }
-/** ↑
- * The space after this colon */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"`
-
-### `"always"`
-
-There *must always* be a single space after the colon.
-
-The following patterns are considered violations:
-
-```css
-a { color :pink }
-```
-
-```css
-a { color:pink }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color : pink }
-```
-
-```css
-a { color: pink }
-```
-
-### `"never"`
-
-There *must never* be whitespace after the colon.
-
-The following patterns are considered violations:
-
-```css
-a { color : pink }
-```
-
-```css
-a { color: pink }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color :pink }
-```
-
-```css
-a { color:pink }
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space after the colon *if the declaration's value is single-line*.
-
-The following patterns are considered violations:
-
-```css
-a {
- box-shadow:0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-}
-```
-
-```css
-a {
- box-shadow:
- 0 0 0 1px #5b9dd9,
- 0 0 2px 1px rgba(30, 140, 190, 0.8);
-}
-```
-
-```css
-a {
- box-shadow:0 0 0 1px #5b9dd9,
- 0 0 2px 1px rgba(30, 140, 190, 0.8);
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-colon-space-after/index.js b/assets/node_modules/stylelint/lib/rules/declaration-colon-space-after/index.js
deleted file mode 100644
index f8549f1..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-colon-space-after/index.js
+++ /dev/null
@@ -1,61 +0,0 @@
-'use strict';
-
-const declarationColonSpaceChecker = require('../declarationColonSpaceChecker');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'declaration-colon-space-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected single space after ":"',
- rejectedAfter: () => 'Unexpected whitespace after ":"',
- expectedAfterSingleLine: () => 'Expected single space after ":" with a single-line declaration',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never', 'always-single-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- declarationColonSpaceChecker({
- root,
- result,
- locationChecker: checker.after,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (decl, index) => {
- const colonIndex = index - declarationValueIndex(decl);
- const between = decl.raws.between;
-
- if (expectation.startsWith('always')) {
- decl.raws.between =
- between.slice(0, colonIndex) + between.slice(colonIndex).replace(/^:\s*/, ': ');
-
- return true;
- }
-
- if (expectation === 'never') {
- decl.raws.between =
- between.slice(0, colonIndex) + between.slice(colonIndex).replace(/^:\s*/, ':');
-
- return true;
- }
- }
- : null,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-colon-space-before/README.md b/assets/node_modules/stylelint/lib/rules/declaration-colon-space-before/README.md
deleted file mode 100644
index c8427d9..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-colon-space-before/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# declaration-colon-space-before
-
-Require a single space or disallow whitespace before the colon of declarations.
-
-```css
-a { color :pink }
-/** ↑
- * The space before this colon */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a single space before the colon.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink }
-```
-
-```css
-a { color:pink }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color : pink }
-```
-
-```css
-a { color :pink }
-```
-
-### `"never"`
-
-There *must never* be whitespace before the colon.
-
-The following patterns are considered violations:
-
-```css
-a { color : pink }
-```
-
-```css
-a { color :pink }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink }
-```
-
-```css
-a { color:pink }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-colon-space-before/index.js b/assets/node_modules/stylelint/lib/rules/declaration-colon-space-before/index.js
deleted file mode 100644
index 640b380..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-colon-space-before/index.js
+++ /dev/null
@@ -1,60 +0,0 @@
-'use strict';
-
-const declarationColonSpaceChecker = require('../declarationColonSpaceChecker');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'declaration-colon-space-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected single space before ":"',
- rejectedBefore: () => 'Unexpected whitespace before ":"',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- declarationColonSpaceChecker({
- root,
- result,
- locationChecker: checker.before,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (decl, index) => {
- const colonIndex = index - declarationValueIndex(decl);
- const between = decl.raws.between;
-
- if (expectation === 'always') {
- decl.raws.between =
- between.slice(0, colonIndex).replace(/\s*$/, ' ') + between.slice(colonIndex);
-
- return true;
- }
-
- if (expectation === 'never') {
- decl.raws.between =
- between.slice(0, colonIndex).replace(/\s*$/, '') + between.slice(colonIndex);
-
- return true;
- }
- }
- : null,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-empty-line-before/README.md b/assets/node_modules/stylelint/lib/rules/declaration-empty-line-before/README.md
deleted file mode 100644
index 87b8d5a..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-empty-line-before/README.md
+++ /dev/null
@@ -1,297 +0,0 @@
-# declaration-empty-line-before
-
-Require or disallow an empty line before declarations.
-
-```css
-a {
- --foo: pink;
- /* ← */
- top: 15px; /* ↑ */
-} /* ↑ */
-/** ↑
- * This line */
-```
-
-This rule only applies to standard property declarations. Use the [`custom-property-empty-line-before`](../custom-property-empty-line-before/README.md) rule for custom property declarations.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule. We recommend to enable [`indentation`](../indentation/README.md) rule for better autofixing results with this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-The following patterns are considered violations:
-
-```css
-a {
- --foo: pink;
- top: 5px;
-}
-```
-
-```css
-a {
- bottom: 15px;
- top: 5px;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- --foo: pink;
-
- top: 5px;
-}
-```
-
-```css
-a {
-
- bottom: 15px;
-
- top: 5px;
-}
-```
-
-### `"never"`
-
-The following patterns are considered violations:
-
-```css
-a {
- --foo: pink;
-
- bottom: 15px;
-}
-```
-
-```css
-a {
-
- bottom: 15px;
-
- top: 5px;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- --foo: pink;
- bottom: 15px;
-}
-```
-
-```css
-a {
- bottom: 15px;
- top: 5px;
-}
-```
-
-## Optional secondary options
-
-### `except: ["after-comment", "after-declaration", "first-nested"]`
-
-#### `"after-comment"`
-
-Reverse the primary option for declarations that follow a comment.
-
-Shared-line comments do not trigger this option.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```css
-a {
- /* comment */
-
- top: 5px;
-}
-```
-
-```css
-a {
- bottom: 5px; /* comment */
- top: 5px;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- /* comment */
- top: 5px;
-}
-
-```
-
-```css
-a {
- bottom: 5px; /* comment */
-
- top: 5px;
-}
-
-```
-
-#### `"after-declaration"`
-
-Reverse the primary option for declarations that follow another declaration.
-
-Shared-line comments do not affect this option.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```css
-a {
-
- bottom: 15px;
-
- top: 5px;
-}
-```
-
-```css
-a {
-
- bottom: 15px; /* comment */
-
- top: 5px;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
-
- bottom: 15px;
- top: 5px;
-}
-```
-
-```css
-a {
-
- bottom: 15px; /* comment */
- top: 5px;
-}
-```
-
-#### `"first-nested"`
-
-Reverse the primary option for declarations that are nested and the first child of their parent node.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```css
-a {
-
- bottom: 15px;
-
- top: 5px;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- bottom: 15px;
-
- top: 5px;
-}
-```
-
-### `ignore: ["after-comment", "after-declaration", "first-nested", "inside-single-line-block"]`
-
-#### `"after-comment"`
-
-Ignore declarations that follow a comment.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- /* comment */
- bottom: 15px;
-}
-```
-
-#### `"after-declaration"`
-
-Ignore declarations that follow another declaration.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-a {
-
- bottom: 15px;
- top: 15px;
-}
-```
-
-```css
-a {
-
- bottom: 15px;
-
- top: 15px;
-}
-```
-
-```css
-a {
-
- color: orange;
- text-decoration: none;
-
- bottom: 15px;
- top: 15px;
-}
-```
-
-#### `"first-nested"`
-
-Ignore declarations that are nested and the first child of their parent node.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- bottom: 15px;
-
- top: 5px;
-}
-```
-
-#### `"inside-single-line-block"`
-
-Ignore declarations that are inside single-line blocks.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-a { bottom: 15px; top: 5px; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-empty-line-before/index.js b/assets/node_modules/stylelint/lib/rules/declaration-empty-line-before/index.js
deleted file mode 100644
index 0a925e5..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-empty-line-before/index.js
+++ /dev/null
@@ -1,131 +0,0 @@
-'use strict';
-
-const addEmptyLineBefore = require('../../utils/addEmptyLineBefore');
-const blockString = require('../../utils/blockString');
-const hasEmptyLine = require('../../utils/hasEmptyLine');
-const isAfterComment = require('../../utils/isAfterComment');
-const isAfterStandardPropertyDeclaration = require('../../utils/isAfterStandardPropertyDeclaration');
-const isCustomProperty = require('../../utils/isCustomProperty');
-const isFirstNested = require('../../utils/isFirstNested');
-const isSingleLineString = require('../../utils/isSingleLineString');
-const isStandardSyntaxDeclaration = require('../../utils/isStandardSyntaxDeclaration');
-const optionsMatches = require('../../utils/optionsMatches');
-const removeEmptyLinesBefore = require('../../utils/removeEmptyLinesBefore');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'declaration-empty-line-before';
-
-const messages = ruleMessages(ruleName, {
- expected: 'Expected empty line before declaration',
- rejected: 'Unexpected empty line before declaration',
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: expectation,
- possible: ['always', 'never'],
- },
- {
- actual: options,
- possible: {
- except: ['first-nested', 'after-comment', 'after-declaration'],
- ignore: [
- 'after-comment',
- 'after-declaration',
- 'first-nested',
- 'inside-single-line-block',
- ],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const prop = decl.prop;
- const parent = decl.parent;
-
- if (!isStandardSyntaxDeclaration(decl)) {
- return;
- }
-
- if (isCustomProperty(prop)) {
- return;
- }
-
- // Optionally ignore the node if a comment precedes it
- if (optionsMatches(options, 'ignore', 'after-comment') && isAfterComment(decl)) {
- return;
- }
-
- // Optionally ignore the node if a declaration precedes it
- if (
- optionsMatches(options, 'ignore', 'after-declaration') &&
- isAfterStandardPropertyDeclaration(decl)
- ) {
- return;
- }
-
- // Optionally ignore the node if it is the first nested
- if (optionsMatches(options, 'ignore', 'first-nested') && isFirstNested(decl)) {
- return;
- }
-
- // Optionally ignore nodes inside single-line blocks
- if (
- optionsMatches(options, 'ignore', 'inside-single-line-block') &&
- isSingleLineString(blockString(parent))
- ) {
- return;
- }
-
- let expectEmptyLineBefore = expectation === 'always';
-
- // Optionally reverse the expectation if any exceptions apply
- if (
- (optionsMatches(options, 'except', 'first-nested') && isFirstNested(decl)) ||
- (optionsMatches(options, 'except', 'after-comment') && isAfterComment(decl)) ||
- (optionsMatches(options, 'except', 'after-declaration') &&
- isAfterStandardPropertyDeclaration(decl))
- ) {
- expectEmptyLineBefore = !expectEmptyLineBefore;
- }
-
- // Check for at least one empty line
- const hasEmptyLineBefore = hasEmptyLine(decl.raws.before);
-
- // Return if the expectation is met
- if (expectEmptyLineBefore === hasEmptyLineBefore) {
- return;
- }
-
- // Fix
- if (context.fix) {
- if (expectEmptyLineBefore) {
- addEmptyLineBefore(decl, context.newline);
- } else {
- removeEmptyLinesBefore(decl, context.newline);
- }
-
- return;
- }
-
- const message = expectEmptyLineBefore ? messages.expected : messages.rejected;
-
- report({ message, node: decl, result, ruleName });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-no-important/README.md b/assets/node_modules/stylelint/lib/rules/declaration-no-important/README.md
deleted file mode 100644
index 33d3ddc..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-no-important/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# declaration-no-important
-
-Disallow `!important` within declarations.
-
-```css
-a { color: pink !important; }
-/** ↑
- * This !important */
-```
-
-If you always want `!important` in your declarations, e.g. if you're writing [user styles](https://userstyles.org/), you can *safely* add them using [`postcss-safe-important`](https://github.com/crimx/postcss-safe-important).
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a { color: pink !important; }
-```
-
-```css
-a { color: pink ! important; }
-```
-
-```css
-a { color: pink!important; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-no-important/index.js b/assets/node_modules/stylelint/lib/rules/declaration-no-important/index.js
deleted file mode 100644
index ccff679..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-no-important/index.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict';
-
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'declaration-no-important';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected !important',
-});
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- if (!decl.important) {
- return;
- }
-
- report({
- message: messages.rejected,
- node: decl,
- word: 'important',
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-property-unit-blacklist/README.md b/assets/node_modules/stylelint/lib/rules/declaration-property-unit-blacklist/README.md
deleted file mode 100644
index 24923c4..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-property-unit-blacklist/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# declaration-property-unit-blacklist
-
-Specify a blacklist of disallowed property and unit pairs within declarations.
-
-```css
-a { width: 100px; }
-/** ↑ ↑
- * These properties and these units */
-```
-
-## Options
-
-`object`: `{
- "unprefixed-property-name": ["array", "of", "units"]
-}`
-
-If a property name is surrounded with `"/"` (e.g. `"/^animation/"`), it is interpreted as a regular expression. This allows, for example, easy targeting of shorthands: `/^animation/` will match `animation`, `animation-duration`, `animation-timing-function`, etc.
-
-Given:
-
-```js
-{
- "font-size": ["em", "px"],
- "/^animation/": ["s"]
-}
-```
-
-The following patterns are considered violations:
-
-```css
-a { font-size: 1em; }
-```
-
-```css
-a { animation: animation-name 5s ease; }
-```
-
-```css
-a { -webkit-animation: animation-name 5s ease; }
-```
-
-```css
-a { animation-duration: 5s; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { font-size: 1.2rem; }
-```
-
-```css
-a { height: 100px; }
-```
-
-```css
-a { animation: animation-name 500ms ease; }
-```
-
-```css
-a { -webkit-animation: animation-name 500ms ease; }
-```
-
-```css
-a { animation-duration: 500ms; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-property-unit-blacklist/index.js b/assets/node_modules/stylelint/lib/rules/declaration-property-unit-blacklist/index.js
deleted file mode 100644
index 7a0d153..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-property-unit-blacklist/index.js
+++ /dev/null
@@ -1,74 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const getUnitFromValueNode = require('../../utils/getUnitFromValueNode');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'declaration-property-unit-blacklist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (property, unit) => `Unexpected unit "${unit}" for property "${property}"`,
-});
-
-function rule(blacklist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: blacklist,
- possible: [_.isObject],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const prop = decl.prop;
- const value = decl.value;
-
- const unprefixedProp = postcss.vendor.unprefixed(prop);
-
- const propBlacklist = _.find(blacklist, (list, propIdentifier) =>
- matchesStringOrRegExp(unprefixedProp, propIdentifier),
- );
-
- if (!propBlacklist) {
- return;
- }
-
- valueParser(value).walk(function(node) {
- // Ignore wrong units within `url` function
- if (node.type === 'function' && node.value.toLowerCase() === 'url') {
- return false;
- }
-
- if (node.type === 'string') {
- return;
- }
-
- const unit = getUnitFromValueNode(node);
-
- if (!unit || (unit && !propBlacklist.includes(unit.toLowerCase()))) {
- return;
- }
-
- report({
- message: messages.rejected(prop, unit),
- node: decl,
- index: declarationValueIndex(decl) + node.sourceIndex,
- result,
- ruleName,
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-property-unit-whitelist/README.md b/assets/node_modules/stylelint/lib/rules/declaration-property-unit-whitelist/README.md
deleted file mode 100644
index ed39156..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-property-unit-whitelist/README.md
+++ /dev/null
@@ -1,75 +0,0 @@
-# declaration-property-unit-whitelist
-
-Specify a whitelist of allowed property and unit pairs within declarations.
-
-```css
-a { width: 100px; }
-/** ↑ ↑
- * These properties and these units */
-```
-
-## Options
-
-`object`: `{
- "unprefixed-property-name": ["array", "of", "units"]
-}`
-
-If a property name is surrounded with `"/"` (e.g. `"/^animation/"`), it is interpreted as a regular expression. This allows, for example, easy targeting of shorthands: `/^animation/` will match `animation`, `animation-duration`, `animation-timing-function`, etc.
-
-Given:
-
-```js
-{
- "font-size": ["em", "px"],
- "/^animation/": ["s"],
- "line-height": []
-}
-```
-
-The following patterns are considered violations:
-
-```css
-a { font-size: 1.2rem; }
-```
-
-```css
-a { animation: animation-name 500ms ease; }
-```
-
-```css
-a { -webkit-animation: animation-name 500ms ease; }
-```
-
-```css
-a { animation-duration: 500ms; }
-```
-
-```css
-a { line-height: 13px; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { font-size: 1em; }
-```
-
-```css
-a { height: 100px; }
-```
-
-```css
-a { animation: animation-name 5s ease; }
-```
-
-```css
-a { -webkit-animation: animation-name 5s ease; }
-```
-
-```css
-a { animation-duration: 5s; }
-```
-
-```css
-a { line-height: 1; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-property-unit-whitelist/index.js b/assets/node_modules/stylelint/lib/rules/declaration-property-unit-whitelist/index.js
deleted file mode 100644
index 78083d8..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-property-unit-whitelist/index.js
+++ /dev/null
@@ -1,74 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const getUnitFromValueNode = require('../../utils/getUnitFromValueNode');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'declaration-property-unit-whitelist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (property, unit) => `Unexpected unit "${unit}" for property "${property}"`,
-});
-
-function rule(whitelist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: whitelist,
- possible: [_.isObject],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const prop = decl.prop;
- const value = decl.value;
-
- const unprefixedProp = postcss.vendor.unprefixed(prop);
-
- const propWhitelist = _.find(whitelist, (list, propIdentifier) =>
- matchesStringOrRegExp(unprefixedProp, propIdentifier),
- );
-
- if (!propWhitelist) {
- return;
- }
-
- valueParser(value).walk(function(node) {
- // Ignore wrong units within `url` function
- if (node.type === 'function' && node.value.toLowerCase() === 'url') {
- return false;
- }
-
- if (node.type === 'string') {
- return;
- }
-
- const unit = getUnitFromValueNode(node);
-
- if (!unit || (unit && propWhitelist.indexOf(unit.toLowerCase())) !== -1) {
- return;
- }
-
- report({
- message: messages.rejected(prop, unit),
- node: decl,
- index: declarationValueIndex(decl) + node.sourceIndex,
- result,
- ruleName,
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-property-value-blacklist/README.md b/assets/node_modules/stylelint/lib/rules/declaration-property-value-blacklist/README.md
deleted file mode 100644
index 5dc045b..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-property-value-blacklist/README.md
+++ /dev/null
@@ -1,93 +0,0 @@
-# declaration-property-value-blacklist
-
-Specify a blacklist of disallowed property and value pairs within declarations.
-
-```css
-a { text-transform: uppercase; }
-/** ↑ ↑
- * These properties and these values */
-```
-
-## Options
-
-`object`: `{
- "unprefixed-property-name": ["array", "of", "values"],
- "unprefixed-property-name": ["/regex/", "non-regex", /regex/]
-}`
-
-If a property name is surrounded with `"/"` (e.g. `"/^animation/"`), it is interpreted as a regular expression. This allows, for example, easy targeting of shorthands: `/^animation/` will match `animation`, `animation-duration`, `animation-timing-function`, etc.
-
-The same goes for values. Keep in mind that a regular expression value is matched against the entire value of the declaration, not specific parts of it. For example, a value like `"10px solid rgba( 255 , 0 , 0 , 0.5 )"` will *not* match `"/^solid/"` (notice beginning of the line boundary) but *will* match `"/\\s+solid\\s+/"` or `"/\\bsolid\\b/"`.
-
-Be careful with regex matching not to accidentally consider quoted string values and `url()` arguments. For example, `"/red/"` will match value such as `"1px dotted red"` as well as `"\"foo\""` and `"white url(/mysite.com/red.png)"`.
-
-Given:
-
-```js
-{
- "transform": ["/scale3d/", "/rotate3d/", "/translate3d/"],
- "position": ["fixed"],
- "color": ["/^green/"],
- "/^animation/": ["/ease/"]
-}
-```
-
-The following patterns are considered violations:
-
-```css
-a { position: fixed; }
-```
-
-```css
-a { transform: scale3d(1, 2, 3); }
-```
-
-```css
-a { -webkit-transform: scale3d(1, 2, 3); }
-```
-
-```css
-a { color: green; }
-```
-
-```css
-a { animation: foo 2s ease-in-out; }
-```
-
-```css
-a { animation-timing-function: ease-in-out; }
-```
-
-```css
-a { -webkit-animation-timing-function: ease-in-out; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { position: relative; }
-```
-
-```css
-a { transform: scale(2); }
-```
-
-```css
-a { -webkit-transform: scale(2); }
-```
-
-```css
-a { color: lightgreen; }
-```
-
-```css
-a { animation: foo 2s linear; }
-```
-
-```css
-a { animation-timing-function: linear; }
-```
-
-```css
-a { -webkit-animation-timing-function: linear; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-property-value-blacklist/index.js b/assets/node_modules/stylelint/lib/rules/declaration-property-value-blacklist/index.js
deleted file mode 100644
index b723aaf..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-property-value-blacklist/index.js
+++ /dev/null
@@ -1,56 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'declaration-property-value-blacklist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (property, value) => `Unexpected value "${value}" for property "${property}"`,
-});
-
-function rule(blacklist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: blacklist,
- possible: [_.isObject],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const prop = decl.prop;
- const value = decl.value;
-
- const unprefixedProp = postcss.vendor.unprefixed(prop);
- const propBlacklist = _.find(blacklist, (list, propIdentifier) =>
- matchesStringOrRegExp(unprefixedProp, propIdentifier),
- );
-
- if (_.isEmpty(propBlacklist)) {
- return;
- }
-
- if (!matchesStringOrRegExp(value, propBlacklist)) {
- return;
- }
-
- report({
- message: messages.rejected(prop, value),
- node: decl,
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-property-value-whitelist/README.md b/assets/node_modules/stylelint/lib/rules/declaration-property-value-whitelist/README.md
deleted file mode 100644
index 3bbf99f..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-property-value-whitelist/README.md
+++ /dev/null
@@ -1,86 +0,0 @@
-# declaration-property-value-whitelist
-
-Specify a whitelist of allowed property and value pairs within declarations.
-
-```css
-a { text-transform: uppercase; }
-/** ↑ ↑
- * These properties and these values */
-```
-
-## Options
-
-`object`: `{
- "unprefixed-property-name": ["array", "of", "values"],
- "unprefixed-property-name": ["/regex/", "non-regex"]
-}`
-
-If a property name is found in the object, only its whitelisted property values are allowed. This rule complains about all non-matching values. (If the property name is not included in the object, anything goes.)
-
-If a property name is surrounded with `"/"` (e.g. `"/^animation/"`), it is interpreted as a regular expression. This allows, for example, easy targeting of shorthands: `/^animation/` will match `animation`, `animation-duration`, `animation-timing-function`, etc.
-
-The same goes for values. Keep in mind that a regular expression value is matched against the entire value of the declaration, not specific parts of it. For example, a value like `"10px solid rgba( 255 , 0 , 0 , 0.5 )"` will *not* match `"/^solid/"` (notice beginning of the line boundary) but *will* match `"/\\s+solid\\s+/"` or `"/\\bsolid\\b/"`.
-
-Be careful with regex matching not to accidentally consider quoted string values and `url()` arguments. For example, `"/red/"` will match value such as `"1px dotted red"` as well as `"\"red\""` and `"white url(/mysite.com/red.png)"`.
-
-Given:
-
-```js
-{
- "transform": ["/scale/"],
- "whitespace": ["nowrap"],
- "/color/": ["/^green/"]
-}
-```
-
-The following patterns are considered violations:
-
-```css
-a { whitespace: pre; }
-```
-
-```css
-a { transform: translate(1, 1); }
-```
-
-```css
-a { -webkit-transform: translate(1, 1); }
-```
-
-```css
-a { color: pink; }
-```
-
-```css
-a { background-color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a { whitespace: nowrap; }
-```
-
-```css
-a { transform: scale(1, 1); }
-```
-
-```css
-a { -webkit-transform: scale(1, 1); }
-```
-
-```css
-a { color: green; }
-```
-
-```css
-a { background-color: green; }
-```
-
-```css
-a { background: pink; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-property-value-whitelist/index.js b/assets/node_modules/stylelint/lib/rules/declaration-property-value-whitelist/index.js
deleted file mode 100644
index c780152..0000000
--- a/assets/node_modules/stylelint/lib/rules/declaration-property-value-whitelist/index.js
+++ /dev/null
@@ -1,56 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'declaration-property-value-whitelist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (property, value) => `Unexpected value "${value}" for property "${property}"`,
-});
-
-function rule(whitelist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: whitelist,
- possible: [_.isObject],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const prop = decl.prop;
- const value = decl.value;
-
- const unprefixedProp = postcss.vendor.unprefixed(prop);
- const propWhitelist = _.find(whitelist, (list, propIdentifier) =>
- matchesStringOrRegExp(unprefixedProp, propIdentifier),
- );
-
- if (_.isEmpty(propWhitelist)) {
- return;
- }
-
- if (matchesStringOrRegExp(value, propWhitelist)) {
- return;
- }
-
- report({
- message: messages.rejected(prop, value),
- node: decl,
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/declarationBangSpaceChecker.js b/assets/node_modules/stylelint/lib/rules/declarationBangSpaceChecker.js
deleted file mode 100644
index f4fbc5b..0000000
--- a/assets/node_modules/stylelint/lib/rules/declarationBangSpaceChecker.js
+++ /dev/null
@@ -1,41 +0,0 @@
-'use strict';
-
-const declarationValueIndex = require('../utils/declarationValueIndex');
-const report = require('../utils/report');
-const styleSearch = require('style-search');
-
-module.exports = function(opts) {
- opts.root.walkDecls(function(decl) {
- const indexOffset = declarationValueIndex(decl);
- const declString = decl.toString();
- const valueString = decl.toString().slice(indexOffset);
-
- if (!valueString.includes('!')) {
- return;
- }
-
- styleSearch({ source: valueString, target: '!' }, (match) => {
- check(declString, match.startIndex + indexOffset, decl);
- });
- });
-
- function check(source, index, node) {
- opts.locationChecker({
- source,
- index,
- err: (m) => {
- if (opts.fix && opts.fix(node, index)) {
- return;
- }
-
- report({
- message: m,
- node,
- index,
- result: opts.result,
- ruleName: opts.checkedRuleName,
- });
- },
- });
- }
-};
diff --git a/assets/node_modules/stylelint/lib/rules/declarationColonSpaceChecker.js b/assets/node_modules/stylelint/lib/rules/declarationColonSpaceChecker.js
deleted file mode 100644
index d646a4c..0000000
--- a/assets/node_modules/stylelint/lib/rules/declarationColonSpaceChecker.js
+++ /dev/null
@@ -1,46 +0,0 @@
-'use strict';
-
-const declarationValueIndex = require('../utils/declarationValueIndex');
-const isStandardSyntaxDeclaration = require('../utils/isStandardSyntaxDeclaration');
-const report = require('../utils/report');
-
-module.exports = function(opts) {
- opts.root.walkDecls((decl) => {
- if (!isStandardSyntaxDeclaration(decl)) {
- return;
- }
-
- // Get the raw prop, and only the prop
- const endOfPropIndex = declarationValueIndex(decl) + (decl.raws.between || '').length - 1;
-
- // The extra characters tacked onto the end ensure that there is a character to check
- // after the colon. Otherwise, with `background:pink` the character after the
- const propPlusColon = `${decl.toString().slice(0, endOfPropIndex)}xxx`;
-
- for (let i = 0, l = propPlusColon.length; i < l; i++) {
- if (propPlusColon[i] !== ':') {
- continue;
- }
-
- opts.locationChecker({
- source: propPlusColon,
- index: i,
- lineCheckStr: decl.value,
- err: (m) => {
- if (opts.fix && opts.fix(decl, i)) {
- return;
- }
-
- report({
- message: m,
- node: decl,
- index: decl.prop.toString().length + 1,
- result: opts.result,
- ruleName: opts.checkedRuleName,
- });
- },
- });
- break;
- }
- });
-};
diff --git a/assets/node_modules/stylelint/lib/rules/findMediaOperator.js b/assets/node_modules/stylelint/lib/rules/findMediaOperator.js
deleted file mode 100644
index 47d36b3..0000000
--- a/assets/node_modules/stylelint/lib/rules/findMediaOperator.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict';
-
-const rangeOperators = ['>=', '<=', '>', '<', '='];
-const styleSearch = require('style-search');
-
-module.exports = function(atRule, cb) {
- if (atRule.name.toLowerCase() !== 'media') {
- return;
- }
-
- const params = atRule.raws.params ? atRule.raws.params.raw : atRule.params;
-
- styleSearch({ source: params, target: rangeOperators }, (match) => {
- const before = params[match.startIndex - 1];
-
- if (before === '>' || before === '<') {
- return;
- }
-
- cb(match, params, atRule);
- });
-};
diff --git a/assets/node_modules/stylelint/lib/rules/font-family-name-quotes/README.md b/assets/node_modules/stylelint/lib/rules/font-family-name-quotes/README.md
deleted file mode 100644
index 8f697d9..0000000
--- a/assets/node_modules/stylelint/lib/rules/font-family-name-quotes/README.md
+++ /dev/null
@@ -1,140 +0,0 @@
-# font-family-name-quotes
-
-Specify whether or not quotation marks should be used around font family names.
-
-```css
-a { font-family: "Times New Roman", 'Ancient Runes', serif; }
-/** ↑ ↑ ↑ ↑
- * These quotation marks and this one */
-```
-
-This rule checks the `font` and `font-family` properties.
-
-This rule ignores `$sass`, `@less`, and `var(--custom-property)` variable syntaxes.
-
-## Options
-
-`string`: `"always-where-required"|"always-where-recommended"|"always-unless-keyword"`
-
-*Please read the following to understand these options*:
-
-- The `font` and `font-family` properties accept a short list of special **keywords**: `inherit`, `serif`, `sans-serif`, `cursive`, `fantasy`, `system-ui`, and `monospace`. If you wrap these words in quotes, the browser will not interpret them as keywords, but will instead look for a font by that name (e.g. will look for a `"sans-serif"` font) -- which is almost *never* what you want. Instead, you use these keywords to point to the built-in, generic fallbacks (right?). Therefore, *all of the options below enforce no quotes around these keywords*. (If you actually want to use a font named `"sans-serif"`, turn this rule off.)
-- Quotes are **recommended** [in the spec](https://www.w3.org/TR/CSS2/fonts.html#font-family-prop) with "font family names that contain white space, digits, or punctuation characters other than hyphens".
-- Quotes are **required** around font-family names when they are not [valid CSS identifiers](https://www.w3.org/TR/CSS2/syndata.html#value-def-identifier). For example, a font family name requires quotes around it if it contains `$`, `!` or `/`, but does not require quotes just because it contains spaces or a (non-initial) number or underscore. *You can probably bet that almost every font family name you use **will** be a valid CSS identifier*.
-- Quotes should **never** be used around vendor prefixed system fonts such as `-apple-system` and `BlinkMacSystemFont`.
-
-For more on these subtleties, read ["Unquoted font family names in CSS"](https://mathiasbynens.be/notes/unquoted-font-family), by Mathias Bynens.
-
-**Caveat:** This rule does not currently understand escape sequences such as those described by Mathias. If you want to use the font family name "Hawaii 5-0" you will need to wrap it in quotes, instead of escaping it as `Hawaii \35 -0` or `Hawaii\ 5-0`.
-
-### `"always-unless-keyword"`
-
-Expect quotes around every font family name that is not a keyword.
-
-The following patterns are considered violations:
-
-```css
-a { font-family: Arial, sans-serif; }
-```
-
-```css
-a { font-family: Times New Roman, Times, serif; }
-```
-
-```css
-a { font: 1em Arial, sans-serif; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { font-family: 'Arial', sans-serif; }
-```
-
-```css
-a { font-family: "Times New Roman", "Times", serif; }
-```
-
-```css
-a { font: 1em 'Arial', sans-serif; }
-```
-
-### `"always-where-required"`
-
-Expect quotes only when quotes are *required* according to the criteria above, and disallow quotes in all other cases.
-
-The following patterns are considered violations:
-
-```css
-a { font-family: "Arial", sans-serif; }
-```
-
-```css
-a { font-family: 'Times New Roman', Times, serif; }
-```
-
-```css
-a { font: 1em "Arial", sans-serif; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { font-family: Arial, sans-serif; }
-```
-
-```css
-a { font-family: Arial, sans-serif; }
-```
-
-```css
-a { font-family: Times New Roman, Times, serif; }
-```
-
-```css
-a { font-family: "Hawaii 5-0"; }
-```
-
-```css
-a { font: 1em Arial, sans-serif; }
-```
-
-### `"always-where-recommended"`
-
-Expect quotes only when quotes are *recommended* according to the criteria above, and disallow quotes in all other cases. (This includes all cases where quotes are *required*, as well.)
-
-The following patterns are considered violations:
-
-```css
-a { font-family: Times New Roman, Times, serif; }
-```
-
-```css
-a { font-family: MyFontVersion6, sake_case_font; }
-```
-
-```css
-a { font-family: 'Arial', sans-serif; }
-```
-
-```css
-a { font: 1em Times New Roman, Times, serif; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { font-family: 'Times New Roman', Times, serif; }
-```
-
-```css
-a { font-family: "MyFontVersion6", "sake_case_font"; }
-```
-
-```css
-a { font-family: Arial, sans-serif; }
-```
-
-```css
-a { font: 1em 'Times New Roman', Times, serif; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/font-family-name-quotes/index.js b/assets/node_modules/stylelint/lib/rules/font-family-name-quotes/index.js
deleted file mode 100644
index 435bf38..0000000
--- a/assets/node_modules/stylelint/lib/rules/font-family-name-quotes/index.js
+++ /dev/null
@@ -1,145 +0,0 @@
-'use strict';
-
-const findFontFamily = require('../../utils/findFontFamily');
-const isStandardSyntaxValue = require('../../utils/isStandardSyntaxValue');
-const isVariable = require('../../utils/isVariable');
-const keywordSets = require('../../reference/keywordSets');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'font-family-name-quotes';
-
-const messages = ruleMessages(ruleName, {
- expected: (family) => `Expected quotes around "${family}"`,
- rejected: (family) => `Unexpected quotes around "${family}"`,
-});
-
-function isSystemFontKeyword(font) {
- if (font.startsWith('-apple-')) {
- return true;
- }
-
- if (font === 'BlinkMacSystemFont') {
- return true;
- }
-
- return false;
-}
-
-// "To avoid mistakes in escaping, it is recommended to quote font family names
-// that contain white space, digits, or punctuation characters other than hyphens"
-// (https://www.w3.org/TR/CSS2/fonts.html#font-family-prop)
-function quotesRecommended(family) {
- return !/^[-a-zA-Z]+$/.test(family);
-}
-
-// Quotes are required if the family is not a valid CSS identifier
-// (regexes from https://mathiasbynens.be/notes/unquoted-font-family)
-function quotesRequired(family) {
- return family.split(/\s+/).some((word) => {
- return /^(-?\d|--)/.test(word) || !/^[-_a-zA-Z0-9\u{00A0}-\u{10FFFF}]+$/u.test(word);
- });
-}
-
-function rule(expectation) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always-where-required', 'always-where-recommended', 'always-unless-keyword'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls(/^font(-family)?$/i, (decl) => {
- const fontFamilies = findFontFamily(decl.value);
-
- if (fontFamilies.length === 0) {
- return;
- }
-
- fontFamilies.forEach((fontFamilyNode) => {
- let rawFamily = fontFamilyNode.value;
-
- if (fontFamilyNode.quote) {
- rawFamily = fontFamilyNode.quote + rawFamily + fontFamilyNode.quote;
- }
-
- checkFamilyName(rawFamily, decl);
- });
- });
-
- function checkFamilyName(rawFamily, decl) {
- if (!isStandardSyntaxValue(rawFamily)) {
- return;
- }
-
- if (isVariable(rawFamily)) {
- return;
- }
-
- const hasQuotes = rawFamily.startsWith("'") || rawFamily.startsWith('"');
-
- // Clean the family of its quotes
- const family = rawFamily.replace(/^['"]|['"]$/g, '');
-
- // Disallow quotes around (case-insensitive) keywords
- // and system font keywords in all cases
- if (keywordSets.fontFamilyKeywords.has(family.toLowerCase()) || isSystemFontKeyword(family)) {
- if (hasQuotes) {
- return complain(messages.rejected(family), family, decl);
- }
-
- return;
- }
-
- const required = quotesRequired(family);
- const recommended = quotesRecommended(family);
-
- switch (expectation) {
- case 'always-unless-keyword':
- if (!hasQuotes) {
- return complain(messages.expected(family), family, decl);
- }
-
- return;
-
- case 'always-where-recommended':
- if (!recommended && hasQuotes) {
- return complain(messages.rejected(family), family, decl);
- }
-
- if (recommended && !hasQuotes) {
- return complain(messages.expected(family), family, decl);
- }
-
- return;
-
- case 'always-where-required':
- if (!required && hasQuotes) {
- return complain(messages.rejected(family), family, decl);
- }
-
- if (required && !hasQuotes) {
- return complain(messages.expected(family), family, decl);
- }
- }
- }
-
- function complain(message, family, decl) {
- report({
- result,
- ruleName,
- message,
- node: decl,
- word: family,
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/font-family-no-duplicate-names/README.md b/assets/node_modules/stylelint/lib/rules/font-family-no-duplicate-names/README.md
deleted file mode 100644
index 8f2627a..0000000
--- a/assets/node_modules/stylelint/lib/rules/font-family-no-duplicate-names/README.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# font-family-no-duplicate-names
-
-Disallow duplicate font family names.
-
-```css
-a { font-family: serif, serif; }
-/** ↑ ↑
- * These font family names */
-```
-
-This rule checks the `font` and `font-family` properties.
-
-This rule ignores `$sass`, `@less`, and `var(--custom-property)` variable syntaxes.
-
-**Caveat:** This rule will stumble on *unquoted* multi-word font names and *unquoted* font names containing escape sequences. Wrap these font names in quotation marks, and everything should be fine.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a { font-family: 'Times', Times, serif; }
-```
-
-```css
-a { font: 1em "Arial", 'Arial', sans-serif; }
-```
-
-```css
-a { font: normal 14px/32px -apple-system, BlinkMacSystemFont, sans-serif, sans-serif; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { font-family: Times, serif; }
-```
-
-```css
-a { font: 1em "Arial", "sans-serif", sans-serif; }
-```
-
-```css
-a { font: normal 14px/32px -apple-system, BlinkMacSystemFont, sans-serif; }
-```
-
-## Optional secondary options
-
-### `ignoreFontFamilyNames: ["/regex/", /regex/, "string"]`
-
-Given:
-
-```js
-["/^My Font /", "monospace"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-font-family: monospace, monospace
-```
-
-```css
-font-family: "My Font Family", "My Font Family", monospace
-```
diff --git a/assets/node_modules/stylelint/lib/rules/font-family-no-duplicate-names/index.js b/assets/node_modules/stylelint/lib/rules/font-family-no-duplicate-names/index.js
deleted file mode 100644
index a9bd9d6..0000000
--- a/assets/node_modules/stylelint/lib/rules/font-family-no-duplicate-names/index.js
+++ /dev/null
@@ -1,101 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const findFontFamily = require('../../utils/findFontFamily');
-const keywordSets = require('../../reference/keywordSets');
-const optionsMatches = require('../../utils/optionsMatches');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'font-family-no-duplicate-names';
-
-const messages = ruleMessages(ruleName, {
- rejected: (name) => `Unexpected duplicate name ${name}`,
-});
-
-const isFamilyNameKeyword = (node) =>
- !node.quote && keywordSets.fontFamilyKeywords.has(node.value.toLowerCase());
-
-function rule(actual, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- { actual },
- {
- actual: options,
- possible: {
- ignoreFontFamilyNames: [_.isString, _.isRegExp],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls(/^font(-family)?$/i, (decl) => {
- const keywords = new Set();
- const familyNames = new Set();
-
- const fontFamilies = findFontFamily(decl.value);
-
- if (fontFamilies.length === 0) {
- return;
- }
-
- fontFamilies.forEach((fontFamilyNode) => {
- const family = fontFamilyNode.value.trim();
-
- if (optionsMatches(options, 'ignoreFontFamilyNames', fontFamilyNode.value.trim())) {
- return;
- }
-
- if (isFamilyNameKeyword(fontFamilyNode)) {
- if (keywords.has(family.toLowerCase())) {
- complain(
- messages.rejected(family),
- declarationValueIndex(decl) + fontFamilyNode.sourceIndex,
- decl,
- );
-
- return;
- }
-
- keywords.add(family);
-
- return;
- }
-
- if (familyNames.has(family)) {
- complain(
- messages.rejected(family),
- declarationValueIndex(decl) + fontFamilyNode.sourceIndex,
- decl,
- );
-
- return;
- }
-
- familyNames.add(family);
- });
- });
-
- function complain(message, index, decl) {
- report({
- result,
- ruleName,
- message,
- node: decl,
- index,
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/README.md b/assets/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/README.md
deleted file mode 100644
index b99f534..0000000
--- a/assets/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/README.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# font-family-no-missing-generic-family-keyword
-
-Disallow missing generic families in lists of font family names.
-
-```css
-a { font-family: Arial, sans-serif; }
-/** ↑
- * An example of generic family name */
-```
-
-The generic font family can be:
-
-- placed anywhere in the font family list
-- omitted if a keyword related to property inheritance or a system font is used
-
-This rule checks the `font` and `font-family` properties.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a { font-family: Helvetica, Arial, Verdana, Tahoma; }
-```
-
-```css
-a { font: 1em/1.3 Times; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { font-family: Helvetica, Arial, Verdana, Tahoma, sans-serif; }
-```
-
-```css
-a { font: 1em/1.3 Times, serif, Apple Color Emoji; }
-```
-
-```css
-a { font: inherit; }
-```
-
-```css
-a { font: caption; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/index.js b/assets/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/index.js
deleted file mode 100644
index 99c6606..0000000
--- a/assets/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/index.js
+++ /dev/null
@@ -1,64 +0,0 @@
-'use strict';
-
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const findFontFamily = require('../../utils/findFontFamily');
-const keywordSets = require('../../reference/keywordSets');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'font-family-no-missing-generic-family-keyword';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected missing generic font family',
-});
-
-const isFamilyNameKeyword = (node) =>
- !node.quote && keywordSets.fontFamilyKeywords.has(node.value.toLowerCase());
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls(/^font(-family)?$/i, (decl) => {
- // Ignore @font-face
- if (
- decl.parent &&
- decl.parent.type === 'atrule' &&
- decl.parent.name.toLowerCase() === 'font-face'
- ) {
- return;
- }
-
- if (decl.prop === 'font' && keywordSets.systemFontValues.has(decl.value.toLowerCase())) {
- return;
- }
-
- const fontFamilies = findFontFamily(decl.value);
-
- if (fontFamilies.length === 0) {
- return;
- }
-
- if (fontFamilies.some(isFamilyNameKeyword)) {
- return;
- }
-
- report({
- result,
- ruleName,
- message: messages.rejected,
- node: decl,
- index: declarationValueIndex(decl) + fontFamilies[fontFamilies.length - 1].sourceIndex,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/font-weight-notation/README.md b/assets/node_modules/stylelint/lib/rules/font-weight-notation/README.md
deleted file mode 100644
index 0a9db22..0000000
--- a/assets/node_modules/stylelint/lib/rules/font-weight-notation/README.md
+++ /dev/null
@@ -1,84 +0,0 @@
-# font-weight-notation
-
-Require numeric or named (where possible) `font-weight` values. Also, when named values are expected, require only valid names.
-
-```css
-a { font-weight: bold }
-/** ↑
- * This notation */
-
-a { font: italic small-caps 600 16px/3 cursive; }
-/** ↑
-* And this notation, too */
-```
-
-Valid font-weight names are `normal`, `bold`, `bolder`, and `lighter`.
-
-This rule ignores `$sass`, `@less`, and `var(--custom-property)` variable syntaxes.
-
-## Options
-
-`string`: `"numeric"|"named-where-possible"`
-
-### `"numeric"`
-
-`font-weight` values *must always* be numbers.
-
-The following patterns are considered violations:
-
-```css
-a { font-weight: bold; }
-```
-
-```css
-a { font: italic normal 20px sans-serif; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { font-weight: 700; }
-```
-
-```css
-a { font: italic 400 20px; }
-```
-
-### `"named-where-possible"`
-
-`font-weight` values *must always* be keywords when an appropriate keyword is available.
-
-This means that only `400` and `700` will be rejected, because those are the only numbers with keyword equivalents (`normal` and `bold`).
-
-The following patterns are considered violations:
-
-```css
-a { font-weight: 700; }
-```
-
-```css
-a { font: italic 400 20px sans-serif; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { font-weight: bold; }
-```
-
-```css
-a { font: italic normal 20px sans-serif; }
-```
-
-## Optional secondary options
-
-### `ignore: ["relative"]`
-
-Ignore the [*relative*](https://drafts.csswg.org/css-fonts/#font-weight-prop) keyword names of `bolder` and `lighter`.
-
-The following patterns are *not* considered violations:
-
-```css
-a { font-weight: 400; }
-a b { font-weight: lighter; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/font-weight-notation/index.js b/assets/node_modules/stylelint/lib/rules/font-weight-notation/index.js
deleted file mode 100644
index 16705ff..0000000
--- a/assets/node_modules/stylelint/lib/rules/font-weight-notation/index.js
+++ /dev/null
@@ -1,152 +0,0 @@
-'use strict';
-
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const isNumbery = require('../../utils/isNumbery');
-const isStandardSyntaxValue = require('../../utils/isStandardSyntaxValue');
-const isVariable = require('../../utils/isVariable');
-const keywordSets = require('../../reference/keywordSets');
-const optionsMatches = require('../../utils/optionsMatches');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'font-weight-notation';
-
-const messages = ruleMessages(ruleName, {
- expected: (type) => `Expected ${type} font-weight notation`,
- invalidNamed: (name) => `Unexpected invalid font-weight name "${name}"`,
-});
-
-const INHERIT_KEYWORD = 'inherit';
-const INITIAL_KEYWORD = 'initial';
-const NORMAL_KEYWORD = 'normal';
-const WEIGHTS_WITH_KEYWORD_EQUIVALENTS = ['400', '700'];
-
-function rule(expectation, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: expectation,
- possible: ['numeric', 'named-where-possible'],
- },
- {
- actual: options,
- possible: {
- ignore: ['relative'],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- if (decl.prop.toLowerCase() === 'font-weight') {
- checkWeight(decl.value, decl);
- }
-
- if (decl.prop.toLowerCase() === 'font') {
- checkFont(decl);
- }
- });
-
- function checkFont(decl) {
- const valueList = postcss.list.space(decl.value);
- // We do not need to more carefully distinguish font-weight
- // numbers from unitless line-heights because line-heights in
- // `font` values need to be part of a font-size/line-height pair
- const hasNumericFontWeight = valueList.some(isNumbery);
-
- for (const value of postcss.list.space(decl.value)) {
- if (
- (value.toLowerCase() === NORMAL_KEYWORD && !hasNumericFontWeight) ||
- isNumbery(value) ||
- (value.toLowerCase() !== NORMAL_KEYWORD &&
- keywordSets.fontWeightKeywords.has(value.toLowerCase()))
- ) {
- checkWeight(value, decl);
-
- return;
- }
- }
- }
-
- function checkWeight(weightValue, decl) {
- if (!isStandardSyntaxValue(weightValue)) {
- return;
- }
-
- if (isVariable(weightValue)) {
- return;
- }
-
- if (
- weightValue.toLowerCase() === INHERIT_KEYWORD ||
- weightValue.toLowerCase() === INITIAL_KEYWORD
- ) {
- return;
- }
-
- if (
- optionsMatches(options, 'ignore', 'relative') &&
- keywordSets.fontWeightRelativeKeywords.has(weightValue.toLowerCase())
- ) {
- return;
- }
-
- const weightValueOffset = decl.value.indexOf(weightValue);
-
- if (expectation === 'numeric') {
- if (decl.parent.type === 'atrule' && decl.parent.name.toLowerCase() === 'font-face') {
- const weightValueNumbers = postcss.list.space(weightValue);
-
- if (!weightValueNumbers.every(isNumbery)) {
- return complain(messages.expected('numeric'));
- }
-
- return;
- }
-
- if (!isNumbery(weightValue)) {
- return complain(messages.expected('numeric'));
- }
- }
-
- if (expectation === 'named-where-possible') {
- if (isNumbery(weightValue)) {
- if (WEIGHTS_WITH_KEYWORD_EQUIVALENTS.includes(weightValue)) {
- complain(messages.expected('named'));
- }
-
- return;
- }
-
- if (
- !keywordSets.fontWeightKeywords.has(weightValue.toLowerCase()) &&
- weightValue.toLowerCase() !== NORMAL_KEYWORD
- ) {
- return complain(messages.invalidNamed(weightValue));
- }
- }
-
- function complain(message) {
- report({
- ruleName,
- result,
- message,
- node: decl,
- index: declarationValueIndex(decl) + weightValueOffset,
- });
- }
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-blacklist/README.md b/assets/node_modules/stylelint/lib/rules/function-blacklist/README.md
deleted file mode 100644
index 977d999..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-blacklist/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# function-blacklist
-
-Specify a blacklist of disallowed functions.
-
-```css
-a { transform: scale(1); }
-/** ↑
- * This function */
-```
-
-## Options
-
-`array|string`: `["array", "of", "unprefixed", /functions/ or "regex"]|"function"|"/regex/"`
-
-If a string is surrounded with `"/"` (e.g. `"/^rgb/"`), it is interpreted as a regular expression.
-
-Given:
-
-```js
-["scale", "rgba", "linear-gradient"]
-```
-
-The following patterns are considered violations:
-
-```css
-a { transform: scale(1); }
-```
-
-```css
-a {
- color: rgba(0, 0, 0, 0.5);
-}
-```
-
-```css
-a {
- background:
- red,
- -moz-linear-gradient(45deg, blue, red);
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background: red; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-blacklist/index.js b/assets/node_modules/stylelint/lib/rules/function-blacklist/index.js
deleted file mode 100644
index 3972f1b..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-blacklist/index.js
+++ /dev/null
@@ -1,62 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const isStandardSyntaxFunction = require('../../utils/isStandardSyntaxFunction');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'function-blacklist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (name) => `Unexpected function "${name}"`,
-});
-
-function rule(blacklist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: blacklist,
- possible: [_.isString, _.isRegExp],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const value = decl.value;
-
- valueParser(value).walk(function(node) {
- if (node.type !== 'function') {
- return;
- }
-
- if (!isStandardSyntaxFunction(node)) {
- return;
- }
-
- if (!matchesStringOrRegExp(postcss.vendor.unprefixed(node.value), blacklist)) {
- return;
- }
-
- report({
- message: messages.rejected(node.value),
- node: decl,
- index: declarationValueIndex(decl) + node.sourceIndex,
- result,
- ruleName,
- });
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-calc-no-invalid/README.md b/assets/node_modules/stylelint/lib/rules/function-calc-no-invalid/README.md
deleted file mode 100644
index cce6447..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-calc-no-invalid/README.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# function-calc-no-invalid
-
-Disallow an invalid expression within `calc` functions.
-
-```css
-.foo {width: calc();}
-/** ↑
- * empty expression */
-.foo {width: calc(100% 80px);}
-/** ↑
-/* missing operator */
-.foo {width: calc(100% -80px);}
-/** ↑
-/* missing operator */
-.foo {width: calc(100% - - 80px);}
-/** ↑
-/* unexpected operator */
-.foo {width: calc(100% -);}
-/** ↑
-/* unexpected operator */
-.foo {width: calc(- 100%);}
-/** ↑
-/* unexpected operator */
-.foo {width: calc(100% / 0);}
-/** ↑ ↑
-/* division by zero */
-.foo {width: calc(100px + 80);}
-/** ↑ ↑ ↑
-/* the `resolved type` is invalid */
-.foo {width: calc(100% + 80);}
-/** ↑ ↑ ↑
-/* the `resolved type` is invalid */
-.foo {width: calc(100px - 80);}
-/** ↑ ↑ ↑
-/* the `resolved type` is invalid */
-.foo {width: calc(100px * 80px);}
-/** ↑ ↑ ↑
-/* the `resolved type` is invalid */
-.foo {width: calc(100 / 80%);}
-/** ↑ ↑ ↑
-/* the `resolved type` is invalid */
-```
-
-- `calc()` must have an expression.
-- `calc()` must have an operator between the arguments.
-- `calc()` must not be division by zero.
-- [The resolved type](https://www.w3.org/TR/css-values-3/#calc-type-checking) must be valid for where the expression is placed.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-.foo {width: calc();}
-```
-
-```css
-.foo {width: calc(100% 80px);}
-```
-
-```css
-.foo {width: calc(100% - - 80px);}
-```
-
-```css
-.foo {width: calc(100% / 0);}
-```
-
-```css
-.foo {width: calc(100px + 80);}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-.foo {width: calc(100% - 80px);}
-```
-
-```css
-.foo {width: calc(100% - var(--bar));}
-```
-
-```css
-.foo {width: calc(var(--bar) - var(--baz));}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-calc-no-invalid/index.js b/assets/node_modules/stylelint/lib/rules/function-calc-no-invalid/index.js
deleted file mode 100644
index db0a45a..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-calc-no-invalid/index.js
+++ /dev/null
@@ -1,251 +0,0 @@
-'use strict';
-
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const parseCalcExpression = require('../../utils/parseCalcExpression');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'function-calc-no-invalid';
-
-const messages = ruleMessages(ruleName, {
- expectedExpression: () => 'Expected a valid expression',
- expectedSpaceBeforeOperator: (operator) => `Expected space before "${operator}" operator`,
- expectedSpaceAfterOperator: (operator) => `Expected space after "${operator}" operator`,
- rejectedDivisionByZero: () => 'Unexpected division by zero',
- expectedValidResolvedType: (operator) =>
- `Expected to be compatible with the left and right argument types of "${operator}" operation.`,
-});
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const checked = [];
-
- valueParser(decl.value).walk((node) => {
- if (node.type !== 'function' || node.value.toLowerCase() !== 'calc') {
- return;
- }
-
- if (checked.includes(node)) {
- return;
- }
-
- checked.push(...getCalcNodes(node));
-
- checked.push(...node.nodes);
-
- let ast;
-
- try {
- ast = parseCalcExpression(valueParser.stringify(node));
- } catch (e) {
- if (e.hash && e.hash.loc) {
- complain(messages.expectedExpression(), node.sourceIndex + e.hash.loc.range[0]);
-
- return;
- }
-
- throw e;
- }
-
- verifyMathExpressions(ast, node);
- });
-
- function complain(message, valueIndex) {
- report({
- message,
- node: decl,
- index: declarationValueIndex(decl) + valueIndex,
- result,
- ruleName,
- });
- }
-
- /**
- * Verify that each operation expression is valid.
- * Reports when a invalid operation expression is found.
- * @param {object} expression expression node.
- * @param {object} node calc function node.
- * @returns {void}
- */
- function verifyMathExpressions(expression, node) {
- if (expression.type === 'MathExpression') {
- const { operator, left, right } = expression;
-
- if (operator === '+' || operator === '-') {
- if (expression.source.operator.end.index === right.source.start.index) {
- complain(
- messages.expectedSpaceAfterOperator(operator),
- node.sourceIndex + expression.source.operator.end.index,
- );
- }
-
- if (expression.source.operator.start.index === left.source.end.index) {
- complain(
- messages.expectedSpaceBeforeOperator(operator),
- node.sourceIndex + expression.source.operator.start.index,
- );
- }
- } else if (operator === '/') {
- if (
- (right.type === 'Value' && right.value === 0) ||
- (right.type === 'MathExpression' && getNumber(right) === 0)
- ) {
- complain(
- messages.rejectedDivisionByZero(),
- node.sourceIndex + expression.source.operator.end.index,
- );
- }
- }
-
- if (getResolvedType(expression) === 'invalid') {
- complain(
- messages.expectedValidResolvedType(operator),
- node.sourceIndex + expression.source.operator.start.index,
- );
- }
-
- verifyMathExpressions(expression.left, node);
- verifyMathExpressions(expression.right, node);
- }
- }
- });
- };
-}
-
-function getCalcNodes(node) {
- if (node.type !== 'function') {
- return [];
- }
-
- const functionName = node.value.toLowerCase();
- const result = [];
-
- if (functionName === 'calc') {
- result.push(node);
- }
-
- if (!functionName || functionName === 'calc') {
- // find nested calc
- for (const c of node.nodes) {
- result.push(...getCalcNodes(c));
- }
- }
-
- return result;
-}
-
-function getNumber(mathExpression) {
- const { left, right } = mathExpression;
-
- const leftValue =
- left.type === 'Value' ? left.value : left.type === 'MathExpression' ? getNumber(left) : null;
- const rightValue =
- right.type === 'Value'
- ? right.value
- : right.type === 'MathExpression'
- ? getNumber(right)
- : null;
-
- // eslint-disable-next-line eqeqeq
- if (leftValue == null || rightValue == null) {
- return null;
- }
-
- switch (mathExpression.operator) {
- case '+':
- return leftValue + rightValue;
- case '-':
- return leftValue - rightValue;
- case '*':
- return leftValue * rightValue;
- case '/':
- return leftValue / rightValue;
- }
-
- return null;
-}
-
-function getResolvedType(mathExpression) {
- const { left: leftExpression, operator, right: rightExpression } = mathExpression;
- let left =
- leftExpression.type === 'MathExpression'
- ? getResolvedType(leftExpression)
- : leftExpression.type;
- let right =
- rightExpression.type === 'MathExpression'
- ? getResolvedType(rightExpression)
- : rightExpression.type;
-
- if (left === 'Function' || left === 'invalid') {
- left = 'UnknownValue';
- }
-
- if (right === 'Function' || right === 'invalid') {
- right = 'UnknownValue';
- }
-
- switch (operator) {
- case '+':
- case '-':
- if (left === 'UnknownValue' || right === 'UnknownValue') {
- return 'UnknownValue';
- }
-
- if (left === right) {
- return left;
- }
-
- if (left === 'Value' || right === 'Value') {
- return 'invalid';
- }
-
- if (left === 'PercentageValue') {
- return right;
- }
-
- if (right === 'PercentageValue') {
- return left;
- }
-
- return 'invalid';
- case '*':
- if (left === 'UnknownValue' || right === 'UnknownValue') {
- return 'UnknownValue';
- }
-
- if (left === 'Value') {
- return right;
- }
-
- if (right === 'Value') {
- return left;
- }
-
- return 'invalid';
- case '/':
- if (right === 'UnknownValue') {
- return 'UnknownValue';
- }
-
- if (right === 'Value') {
- return left;
- }
-
- return 'invalid';
- }
-
- return 'UnknownValue';
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-calc-no-unspaced-operator/README.md b/assets/node_modules/stylelint/lib/rules/function-calc-no-unspaced-operator/README.md
deleted file mode 100644
index 5e8da8d..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-calc-no-unspaced-operator/README.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# function-calc-no-unspaced-operator
-
-Disallow an unspaced operator within `calc` functions.
-
-```css
-a { top: calc(1px + 2px); }
-/** ↑
- * The space around this operator */
-```
-
-Before the operator, there must be a single whitespace or a newline plus indentation. After the operator, there must be a single whitespace or a newline.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a { top: calc(1px+2px); }
-```
-
-```css
-a { top: calc(1px+ 2px); }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { top: calc(1px + 2px); }
-```
-
-```css
-a { top: calc(calc(1em * 2) / 3); }
-```
-
-```css
-a {
- top: calc(var(--foo) +
- var(--bar));
-}
-```
-
-```css
-a {
- top: calc(var(--foo)
- + var(--bar));
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-calc-no-unspaced-operator/index.js b/assets/node_modules/stylelint/lib/rules/function-calc-no-unspaced-operator/index.js
deleted file mode 100644
index bebaf23..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-calc-no-unspaced-operator/index.js
+++ /dev/null
@@ -1,130 +0,0 @@
-'use strict';
-
-const balancedMatch = require('balanced-match');
-const isWhitespace = require('../../utils/isWhitespace');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'function-calc-no-unspaced-operator';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: (operator) => `Expected single space before "${operator}" operator`,
- expectedAfter: (operator) => `Expected single space after "${operator}" operator`,
- expectedOperatorBeforeSign: (operator) => `Expected an operator before sign "${operator}"`,
-});
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- function complain(message, node, index) {
- report({ message, node, index, result, ruleName });
- }
-
- root.walkDecls((decl) => {
- valueParser(decl.value).walk((node) => {
- if (node.type !== 'function' || node.value.toLowerCase() !== 'calc') {
- return;
- }
-
- const parensMatch = balancedMatch('(', ')', valueParser.stringify(node));
- const rawExpression = parensMatch.body;
- const expressionIndex =
- decl.source.start.column +
- decl.prop.length +
- (decl.raws.between || '').length +
- node.sourceIndex;
- const expression = blurVariables(rawExpression);
-
- checkSymbol('+');
- checkSymbol('-');
- checkSymbol('*');
- checkSymbol('/');
-
- function checkSymbol(symbol) {
- const styleSearchOptions = {
- source: expression,
- target: symbol,
- functionArguments: 'skip',
- };
-
- styleSearch(styleSearchOptions, (match) => {
- const index = match.startIndex;
-
- // Deal with signs.
- // (@ and $ are considered "digits" here to allow for variable syntaxes
- // that permit signs in front of variables, e.g. `-$number`)
- // As is "." to deal with fractional numbers without a leading zero
- if ((symbol === '+' || symbol === '-') && /[\d@$.]/.test(expression[index + 1])) {
- const expressionBeforeSign = expression.substr(0, index);
-
- // Ignore signs that directly follow a opening bracket
- if (expressionBeforeSign[expressionBeforeSign.length - 1] === '(') {
- return;
- }
-
- // Ignore signs at the beginning of the expression
- if (/^\s*$/.test(expressionBeforeSign)) {
- return;
- }
-
- // Otherwise, ensure that there is a real operator preceding them
- if (/[*/+-]\s*$/.test(expressionBeforeSign)) {
- return;
- }
-
- // And if not, complain
- complain(messages.expectedOperatorBeforeSign(symbol), decl, expressionIndex + index);
-
- return;
- }
-
- const beforeOk =
- (expression[index - 1] === ' ' && !isWhitespace(expression[index - 2])) ||
- newlineBefore(expression, index - 1);
-
- if (!beforeOk) {
- complain(messages.expectedBefore(symbol), decl, expressionIndex + index);
- }
-
- const afterOk =
- (expression[index + 1] === ' ' && !isWhitespace(expression[index + 2])) ||
- expression[index + 1] === '\n' ||
- expression.substr(index + 1, 2) === '\r\n';
-
- if (!afterOk) {
- complain(messages.expectedAfter(symbol), decl, expressionIndex + index);
- }
- });
- }
- });
- });
- };
-}
-
-function blurVariables(source) {
- return source.replace(/[$@][^)\s]+|#{.+?}/g, '0');
-}
-
-function newlineBefore(str, startIndex) {
- let index = startIndex;
-
- while (index && isWhitespace(str[index])) {
- if (str[index] === '\n') return true;
-
- index--;
- }
-
- return false;
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-comma-newline-after/README.md b/assets/node_modules/stylelint/lib/rules/function-comma-newline-after/README.md
deleted file mode 100644
index 4430ede..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-comma-newline-after/README.md
+++ /dev/null
@@ -1,100 +0,0 @@
-# function-comma-newline-after
-
-Require a newline or disallow whitespace after the commas of functions.
-
-```css
-a { transform: translate(1,
- 1) } /* ↑ */
-/** ↑
- * These commas */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline after the commas.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1,1) }
-```
-
-```css
-a { transform: translate(1 ,1) }
-```
-
-```css
-a { transform: translate(1
- ,1) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- transform: translate(1,
- 1)
-}
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline after the commas in multi-line functions.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1
- ,1) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1,1) }
-```
-
-```css
-a { transform: translate(1 ,1) }
-```
-
-```css
-a {
- transform: translate(1,
- 1)
-}
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace after the commas in multi-line functions.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1
- , 1) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1, 1) }
-```
-
-```css
-a { transform: translate(1 , 1) }
-```
-
-```css
-a {
- transform: translate(1
- ,1)
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-comma-newline-after/index.js b/assets/node_modules/stylelint/lib/rules/function-comma-newline-after/index.js
deleted file mode 100644
index bd9f2cd..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-comma-newline-after/index.js
+++ /dev/null
@@ -1,53 +0,0 @@
-'use strict';
-
-const fixer = require('../functionCommaSpaceFix');
-const functionCommaSpaceChecker = require('../functionCommaSpaceChecker');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'function-comma-newline-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected newline after ","',
- expectedAfterMultiLine: () => 'Expected newline after "," in a multi-line function',
- rejectedAfterMultiLine: () => 'Unexpected whitespace after "," in a multi-line function',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('newline', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-multi-line', 'never-multi-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- functionCommaSpaceChecker({
- root,
- result,
- locationChecker: checker.afterOneOnly,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (div, index, nodes) => {
- return fixer({
- div,
- index,
- nodes,
- expectation,
- position: 'after',
- symb: context.newline,
- });
- }
- : null,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-comma-newline-before/README.md b/assets/node_modules/stylelint/lib/rules/function-comma-newline-before/README.md
deleted file mode 100644
index 38698e4..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-comma-newline-before/README.md
+++ /dev/null
@@ -1,114 +0,0 @@
-# function-comma-newline-before
-
-Require a newline or disallow whitespace before the commas of functions.
-
-```css
- a { transform: translate(1
- , 1) }
-/** ↑
- * This comma */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline before the commas.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1,1) }
-```
-
-```css
-a { transform: translate(1 ,1) }
-```
-
-```css
-a { transform: translate(1,
- 1) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- transform: translate(1
- ,1)
-}
-```
-
-```css
-a {
- transform: translate(1
- , 1)
-}
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline before the commas in multi-line functions.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1,
- 1) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1,1) }
-```
-
-```css
-a { transform: translate(1 ,1) }
-```
-
-```css
-a {
- transform: translate(1
- ,1)
-}
-```
-
-```css
-a {
- transform: translate(1
- , 1)
-}
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace before the commas in multi-line functions.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1 ,
- 1) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1 ,1) }
-```
-
-```css
-a { transform: translate(1 , 1) }
-```
-
-```css
-a {
- transform: translate(1,
- 1)
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-comma-newline-before/index.js b/assets/node_modules/stylelint/lib/rules/function-comma-newline-before/index.js
deleted file mode 100644
index 1e57dba..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-comma-newline-before/index.js
+++ /dev/null
@@ -1,53 +0,0 @@
-'use strict';
-
-const fixer = require('../functionCommaSpaceFix');
-const functionCommaSpaceChecker = require('../functionCommaSpaceChecker');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'function-comma-newline-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected newline before ","',
- expectedBeforeMultiLine: () => 'Expected newline before "," in a multi-line function',
- rejectedBeforeMultiLine: () => 'Unexpected whitespace before "," in a multi-line function',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('newline', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-multi-line', 'never-multi-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- functionCommaSpaceChecker({
- root,
- result,
- locationChecker: checker.beforeAllowingIndentation,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (div, index, nodes) => {
- return fixer({
- div,
- index,
- nodes,
- expectation,
- position: 'before',
- symb: context.newline,
- });
- }
- : null,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-comma-space-after/README.md b/assets/node_modules/stylelint/lib/rules/function-comma-space-after/README.md
deleted file mode 100644
index b832749..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-comma-space-after/README.md
+++ /dev/null
@@ -1,125 +0,0 @@
-# function-comma-space-after
-
-Require a single space or disallow whitespace after the commas of functions.
-
-```css
-a { transform: translate(1, 1) }
-/** ↑
- * The space after this comma */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"never-single-line"`
-
-### `"always"`
-
-There *must always* be a single space after the commas.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1,1) }
-```
-
-```css
-a { transform: translate(1 ,1) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1, 1) }
-```
-
-```css
-a { transform: translate(1 , 1) }
-```
-
-### `"never"`
-
-There *must never* be whitespace after the commas.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1, 1) }
-```
-
-```css
-a { transform: translate(1 , 1) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1,1) }
-```
-
-```css
-a { transform: translate(1 ,1) }
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space after the commas in single-line functions.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1,1) }
-```
-
-```css
-a { transform: translate(1 ,1) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1, 1) }
-```
-
-```css
-a { transform: translate(1 , 1) }
-```
-
-```css
-a {
- transform: translate(1
- ,1)
-}
-```
-
-### `"never-single-line"`
-
-There *must never* be whitespace after the commas in single-line functions.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1, 1) }
-```
-
-```css
-a { transform: translate(1 , 1) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1,1) }
-```
-
-```css
-a { transform: translate(1 ,1) }
-```
-
-```css
-a {
- transform: translate(1
- , 1)
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-comma-space-after/index.js b/assets/node_modules/stylelint/lib/rules/function-comma-space-after/index.js
deleted file mode 100644
index 0e01dce..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-comma-space-after/index.js
+++ /dev/null
@@ -1,54 +0,0 @@
-'use strict';
-
-const fixer = require('../functionCommaSpaceFix');
-const functionCommaSpaceChecker = require('../functionCommaSpaceChecker');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'function-comma-space-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected single space after ","',
- rejectedAfter: () => 'Unexpected whitespace after ","',
- expectedAfterSingleLine: () => 'Expected single space after "," in a single-line function',
- rejectedAfterSingleLine: () => 'Unexpected whitespace after "," in a single-line function',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never', 'always-single-line', 'never-single-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- functionCommaSpaceChecker({
- root,
- result,
- locationChecker: checker.after,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (div, index, nodes) => {
- return fixer({
- div,
- index,
- nodes,
- expectation,
- position: 'after',
- symb: ' ',
- });
- }
- : null,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-comma-space-before/README.md b/assets/node_modules/stylelint/lib/rules/function-comma-space-before/README.md
deleted file mode 100644
index d1551c8..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-comma-space-before/README.md
+++ /dev/null
@@ -1,125 +0,0 @@
-# function-comma-space-before
-
-Require a single space or disallow whitespace before the commas of functions.
-
-```css
-a { transform: translate(1 ,1) }
-/** ↑
- * The space before this comma */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"never-single-line"`
-
-### `"always"`
-
-There *must always* be a single space before the commas.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1,1) }
-```
-
-```css
-a { transform: translate(1, 1) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1 ,1) }
-```
-
-```css
-a { transform: translate(1 , 1) }
-```
-
-### `"never"`
-
-There *must never* be whitespace before the commas.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1 ,1) }
-```
-
-```css
-a { transform: translate(1 , 1) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1,1) }
-```
-
-```css
-a { transform: translate(1, 1) }
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space before the commas in single-line functions.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1,1) }
-```
-
-```css
-a { transform: translate(1, 1) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1 ,1) }
-```
-
-```css
-a { transform: translate(1 , 1) }
-```
-
-```css
-a {
- transform: translate(1,
- 1)
-}
-```
-
-### `"never-single-line"`
-
-There *must never* be whitespace before the commas in single-line functions.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1 ,1) }
-```
-
-```css
-a { transform: translate(1 , 1) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1,1) }
-```
-
-```css
-a { transform: translate(1, 1) }
-```
-
-```css
-a {
- transform: translate(1 ,
- 1)
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-comma-space-before/index.js b/assets/node_modules/stylelint/lib/rules/function-comma-space-before/index.js
deleted file mode 100644
index 4440344..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-comma-space-before/index.js
+++ /dev/null
@@ -1,54 +0,0 @@
-'use strict';
-
-const fixer = require('../functionCommaSpaceFix');
-const functionCommaSpaceChecker = require('../functionCommaSpaceChecker');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'function-comma-space-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected single space before ","',
- rejectedBefore: () => 'Unexpected whitespace before ","',
- expectedBeforeSingleLine: () => 'Expected single space before "," in a single-line function',
- rejectedBeforeSingleLine: () => 'Unexpected whitespace before "," in a single-line function',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never', 'always-single-line', 'never-single-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- functionCommaSpaceChecker({
- root,
- result,
- locationChecker: checker.before,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (div, index, nodes) => {
- return fixer({
- div,
- index,
- nodes,
- expectation,
- position: 'before',
- symb: ' ',
- });
- }
- : null,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-linear-gradient-no-nonstandard-direction/README.md b/assets/node_modules/stylelint/lib/rules/function-linear-gradient-no-nonstandard-direction/README.md
deleted file mode 100644
index 559c770..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-linear-gradient-no-nonstandard-direction/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# function-linear-gradient-no-nonstandard-direction
-
-Disallow direction values in `linear-gradient()` calls that are not valid according to the
-[standard syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient#Syntax).
-
-```css
-.foo { background: linear-gradient(to top, #fff, #000); }
-/** ↑
- * This (optional) first argument is the "direction" */
-```
-
-A valid and standard direction value is one of the following:
-
-- an angle
-- `to ` plus a side-or-corner (`to top`, `to bottom`, `to left`, `to right`; `to top right`, `to right top`, `to bottom left`, etc.)
-
-A common mistake (matching outdated non-standard syntax) is to use just a side-or-corner without the preceding `to`.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-.foo { background: linear-gradient(top, #fff, #000); }
-```
-
-```css
-.foo { background: linear-gradient(bottom, #fff, #000); }
-```
-
-```css
-.foo { background: linear-gradient(left, #fff, #000); }
-```
-
-```css
-.foo { background: linear-gradient(45, #fff, #000); }
-```
-
-```css
-.foo { background: linear-gradient(to top top, #fff, #000); }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-.foo { background: linear-gradient(to top, #fff, #000); }
-```
-
-```css
-.foo { background: linear-gradient(to bottom right, #fff, #000); }
-```
-
-```css
-.foo { background: linear-gradient(45deg, #fff, #000); }
-```
-
-```css
-.foo { background: linear-gradient(1.57rad, #fff, #000); }
-```
-
-```css
-/* Direction defaults to "to bottom" */
-.foo { background: linear-gradient(#fff, #000); }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-linear-gradient-no-nonstandard-direction/index.js b/assets/node_modules/stylelint/lib/rules/function-linear-gradient-no-nonstandard-direction/index.js
deleted file mode 100644
index affec4d..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-linear-gradient-no-nonstandard-direction/index.js
+++ /dev/null
@@ -1,108 +0,0 @@
-'use strict';
-
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const functionArgumentsSearch = require('../../utils/functionArgumentsSearch');
-const isStandardSyntaxValue = require('../../utils/isStandardSyntaxValue');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'function-linear-gradient-no-nonstandard-direction';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected nonstandard direction',
-});
-
-function isStandardDirection(source, withToPrefix) {
- const regexp = withToPrefix
- ? /^to (top|left|bottom|right)(?: (top|left|bottom|right))?$/
- : /^(top|left|bottom|right)(?: (top|left|bottom|right))?$/;
-
- const matches = source.match(regexp);
-
- if (!matches) {
- return false;
- }
-
- if (matches.length === 2) {
- return true;
- }
-
- // Cannot repeat side-or-corner, e.g. "to top top"
- if (matches.length === 3 && matches[1] !== matches[2]) {
- return true;
- }
-
- return false;
-}
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- valueParser(decl.value).walk((valueNode) => {
- if (valueNode.type !== 'function') {
- return;
- }
-
- functionArgumentsSearch(
- valueParser.stringify(valueNode).toLowerCase(),
- 'linear-gradient',
- (expression, expressionIndex) => {
- const firstArg = expression.split(',')[0].trim();
-
- // If the first arg is not standard, return early
- if (!isStandardSyntaxValue(firstArg)) {
- return;
- }
-
- // If the first character is a number, we can assume the user intends an angle
- if (/[\d.]/.test(firstArg[0])) {
- if (/^[\d.]+(?:deg|grad|rad|turn)$/.test(firstArg)) {
- return;
- }
-
- complain();
-
- return;
- }
-
- // The first argument may not be a direction: it may be an angle,
- // or a color stop (in which case user gets default direction, "to bottom")
- // cf. https://drafts.csswg.org/css-images-3/#linear-gradient-syntax
- if (!/left|right|top|bottom/.test(firstArg)) {
- return;
- }
-
- const withToPrefix = !postcss.vendor.prefix(valueNode.value);
-
- if (!isStandardDirection(firstArg, withToPrefix)) {
- complain();
- }
-
- function complain() {
- report({
- message: messages.rejected,
- node: decl,
- index: declarationValueIndex(decl) + valueNode.sourceIndex + expressionIndex,
- result,
- ruleName,
- });
- }
- },
- );
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-max-empty-lines/README.md b/assets/node_modules/stylelint/lib/rules/function-max-empty-lines/README.md
deleted file mode 100644
index 9652057..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-max-empty-lines/README.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# function-max-empty-lines
-
-Limit the number of adjacent empty lines within functions.
-
-```css
-a {
- transform:
- translate(
- /* ← */
- 1, /* ↑ */
- /* ← */
- 1 /* ↑ */
- /* ← */
- ); /* ↑ */
-} /* ↑ */
-/** ↑
- * These lines */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`int`: Maximum number of adjacent empty lines allowed.
-
-For example, with `0`:
-
-The following patterns are considered violations:
-
-```css
-a {
- transform:
- translate(
-
- 1,
- 1
- );
-}
-```
-
-```css
-a {
- transform:
- translate(
- 1,
-
- 1
- );
-}
-```
-
-```css
-a {
- transform:
- translate(
- 1,
- 1
-
- );
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- transform:
- translate(
- 1,
- 1
- );
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-max-empty-lines/index.js b/assets/node_modules/stylelint/lib/rules/function-max-empty-lines/index.js
deleted file mode 100644
index 9b97596..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-max-empty-lines/index.js
+++ /dev/null
@@ -1,101 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'function-max-empty-lines';
-
-const messages = ruleMessages(ruleName, {
- expected: (max) => `Expected no more than ${max} empty ${max === 1 ? 'line' : 'lines'}`,
-});
-
-function placeIndexOnValueStart(decl) {
- return decl.prop.length + decl.raws.between.length - 1;
-}
-
-function rule(max, options, context) {
- const maxAdjacentNewlines = max + 1;
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: max,
- possible: _.isNumber,
- });
-
- if (!validOptions) {
- return;
- }
-
- const violatedCRLFNewLinesRegex = new RegExp(`(?:\r\n){${maxAdjacentNewlines + 1},}`);
- const violatedLFNewLinesRegex = new RegExp(`\n{${maxAdjacentNewlines + 1},}`);
- const allowedLFNewLinesString = context.fix ? '\n'.repeat(maxAdjacentNewlines) : '';
- const allowedCRLFNewLinesString = context.fix ? '\r\n'.repeat(maxAdjacentNewlines) : '';
-
- root.walkDecls((decl) => {
- if (!decl.value.includes('(')) {
- return;
- }
-
- const stringValue = decl.raws.value ? decl.raws.value.raw : decl.value;
- const splittedValue = [];
- let sourceIndexStart = 0;
-
- valueParser(stringValue).walk((node) => {
- if (
- node.type !== 'function' /* ignore non functions */ ||
- node.value.length === 0 /* ignore sass lists */
- ) {
- return;
- }
-
- const stringifiedNode = valueParser.stringify(node);
-
- if (
- !violatedLFNewLinesRegex.test(stringifiedNode) &&
- !violatedCRLFNewLinesRegex.test(stringifiedNode)
- ) {
- return;
- }
-
- if (context.fix) {
- const newNodeString = stringifiedNode
- .replace(new RegExp(violatedLFNewLinesRegex, 'gm'), allowedLFNewLinesString)
- .replace(new RegExp(violatedCRLFNewLinesRegex, 'gm'), allowedCRLFNewLinesString);
-
- splittedValue.push([
- stringValue.slice(sourceIndexStart, node.sourceIndex),
- newNodeString,
- ]);
- sourceIndexStart = node.sourceIndex + stringifiedNode.length;
- } else {
- report({
- message: messages.expected(max),
- node: decl,
- index: placeIndexOnValueStart(decl) + node.sourceIndex,
- result,
- ruleName,
- });
- }
- });
-
- if (context.fix && splittedValue.length > 0) {
- const updatedValue =
- splittedValue.reduce((acc, curr) => acc + curr[0] + curr[1], '') +
- stringValue.slice(sourceIndexStart);
-
- if (decl.raws.value) {
- decl.raws.value.raw = updatedValue;
- } else {
- decl.value = updatedValue;
- }
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-name-case/README.md b/assets/node_modules/stylelint/lib/rules/function-name-case/README.md
deleted file mode 100644
index 1613fe3..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-name-case/README.md
+++ /dev/null
@@ -1,162 +0,0 @@
-# function-name-case
-
-Specify lowercase or uppercase for function names.
-
-```css
-a { width: calc(5% - 10em); }
-/** ↑
- * This function */
-```
-
-Camel case function names, e.g. `translateX`, are accounted for when the `lower` option is used.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"lower"|"upper"`
-
-### `"lower"`
-
-The following patterns are considered violations:
-
-```css
-a {
- width: Calc(5% - 10em);
-}
-```
-
-```css
-a {
- width: cAlC(5% - 10em);
-}
-```
-
-```css
-a {
- width: CALC(5% - 10em);
-}
-```
-
-```css
-a {
- background: -WEBKIT-RADIAL-GRADIENT(red, green, blue);
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- width: calc(5% - 10em);
-}
-```
-
-```css
-a {
- background: -webkit-radial-gradient(red, green, blue);
-}
-```
-
-### `"upper"`
-
-The following patterns are considered violations:
-
-```css
-a {
- width: Calc(5% - 10em);
-}
-```
-
-```css
-a {
- width: cAlC(5% - 10em);
-}
-```
-
-```css
-a {
- width: calc(5% - 10em);
-}
-```
-
-```css
-a {
- background: -webkit-radial-gradient(red, green, blue);
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- width: CALC(5% - 10em);
-}
-```
-
-```css
-a {
- background: -WEBKIT-RADIAL-GRADIENT(red, green, blue);
-}
-```
-
-## Optional secondary options
-
-### `ignoreFunctions: ["/regex-as-string/", /regex/, "non-regex"]`
-
-Ignore case of function names.
-
-For example, with `"lower"`.
-
-Given:
-
-```js
-["some-function", "/^get.*$/"]
-```
-
-The following patterns are considered violations:
-
-```css
-a {
- color: sOmE-FuNcTiOn();
-}
-```
-
-```css
-a {
- color: some-other-function();
-}
-```
-
-```css
-a {
- color: GetColor();
-}
-```
-
-```css
-a {
- color: GET_COLOR();
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- display: some-function();
-}
-```
-
-
-```css
-a {
- display: getColor();
-}
-```
-
-```css
-a {
- display: get_color();
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-name-case/index.js b/assets/node_modules/stylelint/lib/rules/function-name-case/index.js
deleted file mode 100644
index 3b71d2a..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-name-case/index.js
+++ /dev/null
@@ -1,113 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const isStandardSyntaxFunction = require('../../utils/isStandardSyntaxFunction');
-const keywordSets = require('../../reference/keywordSets');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'function-name-case';
-
-const messages = ruleMessages(ruleName, {
- expected: (actual, expected) => `Expected "${actual}" to be "${expected}"`,
-});
-
-const mapLowercaseFunctionNamesToCamelCase = new Map();
-
-keywordSets.camelCaseFunctionNames.forEach((func) => {
- mapLowercaseFunctionNamesToCamelCase.set(func.toLowerCase(), func);
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: expectation,
- possible: ['lower', 'upper'],
- },
- {
- actual: options,
- possible: {
- ignoreFunctions: [_.isString, _.isRegExp],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- let needFix = false;
- const parsed = valueParser(decl.raws.value ? decl.raws.value.raw : decl.value);
-
- parsed.walk(function(node) {
- if (node.type !== 'function' || !isStandardSyntaxFunction(node)) {
- return;
- }
-
- const functionName = node.value;
- const functionNameLowerCase = functionName.toLowerCase();
-
- const ignoreFunctions = (options && options.ignoreFunctions) || [];
-
- if (ignoreFunctions.length > 0 && matchesStringOrRegExp(functionName, ignoreFunctions)) {
- return;
- }
-
- let expectedFunctionName = null;
-
- if (
- expectation === 'lower' &&
- mapLowercaseFunctionNamesToCamelCase.has(functionNameLowerCase)
- ) {
- expectedFunctionName = mapLowercaseFunctionNamesToCamelCase.get(functionNameLowerCase);
- } else if (expectation === 'lower') {
- expectedFunctionName = functionNameLowerCase;
- } else {
- expectedFunctionName = functionName.toUpperCase();
- }
-
- if (functionName === expectedFunctionName) {
- return;
- }
-
- if (context.fix) {
- needFix = true;
- node.value = expectedFunctionName;
-
- return;
- }
-
- report({
- message: messages.expected(functionName, expectedFunctionName),
- node: decl,
- index: declarationValueIndex(decl) + node.sourceIndex,
- result,
- ruleName,
- });
- });
-
- if (context.fix && needFix) {
- const statement = parsed.toString();
-
- if (decl.raws.value) {
- decl.raws.value.raw = statement;
- } else {
- decl.value = statement;
- }
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-parentheses-newline-inside/README.md b/assets/node_modules/stylelint/lib/rules/function-parentheses-newline-inside/README.md
deleted file mode 100644
index cd464cc..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-parentheses-newline-inside/README.md
+++ /dev/null
@@ -1,129 +0,0 @@
-# function-parentheses-newline-inside
-
-Require a newline or disallow whitespace on the inside of the parentheses of functions.
-
-```css
- a {
- transform: translate(
- 1, /* ↑ */
- 1 /* ↑ */
- ); /* ↑ */
- } /* ↑ */
-/** ↑ ↑
- * The newline inside these two parentheses */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline inside the parentheses.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1, 1); }
-```
-
-```css
-a { transform: translate(1,
- 1
- ); }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- transform: translate(
- 1, 1
- );
-}
-```
-
-```css
-a {
- transform: translate(
- 1,
- 1
- );
-}
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline inside the parentheses of multi-line functions.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1,
- 1) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1, 1) }
-```
-
-```css
-a { transform: translate( 1, 1 ) }
-```
-
-```css
-a {
- transform: translate(
- 1, 1
- );
-}
-```
-
-```css
-a {
- transform: translate(
- 1,
- 1
- );
-}
-```
-
-### `"never-multi-line"`
-
-The following patterns are considered violations:
-
-```css
-a {
- transform: translate(
- 1, 1
- );
-}
-```
-
-```css
-a {
- transform: translate(
- 1,
- 1
- );
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1, 1) }
-```
-
-```css
-a { transform: translate( 1, 1 ) }
-```
-
-```css
-a { transform: translate(1,
- 1) }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-parentheses-newline-inside/index.js b/assets/node_modules/stylelint/lib/rules/function-parentheses-newline-inside/index.js
deleted file mode 100644
index 1619e3d..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-parentheses-newline-inside/index.js
+++ /dev/null
@@ -1,248 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const isSingleLineString = require('../../utils/isSingleLineString');
-const isStandardSyntaxFunction = require('../../utils/isStandardSyntaxFunction');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'function-parentheses-newline-inside';
-
-const messages = ruleMessages(ruleName, {
- expectedOpening: 'Expected newline after "("',
- expectedClosing: 'Expected newline before ")"',
- expectedOpeningMultiLine: 'Expected newline after "(" in a multi-line function',
- rejectedOpeningMultiLine: 'Unexpected whitespace after "(" in a multi-line function',
- expectedClosingMultiLine: 'Expected newline before ")" in a multi-line function',
- rejectedClosingMultiLine: 'Unexpected whitespace before ")" in a multi-line function',
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-multi-line', 'never-multi-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- if (!decl.value.includes('(')) {
- return;
- }
-
- let hasFixed = false;
- const declValue = _.get(decl, 'raws.value.raw', decl.value);
- const parsedValue = valueParser(declValue);
-
- parsedValue.walk((valueNode) => {
- if (valueNode.type !== 'function') {
- return;
- }
-
- if (!isStandardSyntaxFunction(valueNode)) {
- return;
- }
-
- const functionString = valueParser.stringify(valueNode);
- const isMultiLine = !isSingleLineString(functionString);
-
- function containsNewline(str) {
- return str.includes('\n');
- }
-
- // Check opening ...
-
- const openingIndex = valueNode.sourceIndex + valueNode.value.length + 1;
- const checkBefore = getCheckBefore(valueNode);
-
- if (expectation === 'always' && !containsNewline(checkBefore)) {
- if (context.fix) {
- hasFixed = true;
- fixBeforeForAlways(valueNode, context.newline);
- } else {
- complain(messages.expectedOpening, openingIndex);
- }
- }
-
- if (isMultiLine && expectation === 'always-multi-line' && !containsNewline(checkBefore)) {
- if (context.fix) {
- hasFixed = true;
- fixBeforeForAlways(valueNode, context.newline);
- } else {
- complain(messages.expectedOpeningMultiLine, openingIndex);
- }
- }
-
- if (isMultiLine && expectation === 'never-multi-line' && checkBefore !== '') {
- if (context.fix) {
- hasFixed = true;
- fixBeforeForNever(valueNode);
- } else {
- complain(messages.rejectedOpeningMultiLine, openingIndex);
- }
- }
-
- // Check closing ...
-
- const closingIndex = valueNode.sourceIndex + functionString.length - 2;
- const checkAfter = getCheckAfter(valueNode);
-
- if (expectation === 'always' && !containsNewline(checkAfter)) {
- if (context.fix) {
- hasFixed = true;
- fixAfterForAlways(valueNode, context.newline);
- } else {
- complain(messages.expectedClosing, closingIndex);
- }
- }
-
- if (isMultiLine && expectation === 'always-multi-line' && !containsNewline(checkAfter)) {
- if (context.fix) {
- hasFixed = true;
- fixAfterForAlways(valueNode, context.newline);
- } else {
- complain(messages.expectedClosingMultiLine, closingIndex);
- }
- }
-
- if (isMultiLine && expectation === 'never-multi-line' && checkAfter !== '') {
- if (context.fix) {
- hasFixed = true;
- fixAfterForNever(valueNode);
- } else {
- complain(messages.rejectedClosingMultiLine, closingIndex);
- }
- }
- });
-
- if (hasFixed) {
- if (!decl.raws.value) {
- decl.value = parsedValue.toString();
- } else {
- decl.raws.value.raw = parsedValue.toString();
- }
- }
-
- function complain(message, offset) {
- report({
- ruleName,
- result,
- message,
- node: decl,
- index: declarationValueIndex(decl) + offset,
- });
- }
- });
- };
-}
-
-function getCheckBefore(valueNode) {
- let before = valueNode.before;
-
- for (const node of valueNode.nodes) {
- if (node.type === 'comment') {
- continue;
- }
-
- if (node.type === 'space') {
- before += node.value;
- continue;
- }
-
- break;
- }
-
- return before;
-}
-
-function getCheckAfter(valueNode) {
- let after = '';
-
- for (const node of valueNode.nodes.slice().reverse()) {
- if (node.type === 'comment') {
- continue;
- }
-
- if (node.type === 'space') {
- after = node.value + after;
- continue;
- }
-
- break;
- }
-
- after += valueNode.after;
-
- return after;
-}
-
-function fixBeforeForAlways(valueNode, newline) {
- let target;
-
- for (const node of valueNode.nodes) {
- if (node.type === 'comment') {
- continue;
- }
-
- if (node.type === 'space') {
- target = node;
- continue;
- }
-
- break;
- }
-
- if (target) {
- target.value = newline + target.value;
- } else {
- valueNode.before = newline + valueNode.before;
- }
-}
-
-function fixBeforeForNever(valueNode) {
- valueNode.before = '';
-
- for (const node of valueNode.nodes) {
- if (node.type === 'comment') {
- continue;
- }
-
- if (node.type === 'space') {
- node.value = '';
- continue;
- }
-
- break;
- }
-}
-
-function fixAfterForAlways(valueNode, newline) {
- valueNode.after = newline + valueNode.after;
-}
-
-function fixAfterForNever(valueNode) {
- valueNode.after = '';
-
- for (const node of valueNode.nodes.slice().reverse()) {
- if (node.type === 'comment') {
- continue;
- }
-
- if (node.type === 'space') {
- node.value = '';
- continue;
- }
-
- break;
- }
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-parentheses-space-inside/README.md b/assets/node_modules/stylelint/lib/rules/function-parentheses-space-inside/README.md
deleted file mode 100644
index 364204b..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-parentheses-space-inside/README.md
+++ /dev/null
@@ -1,123 +0,0 @@
-# function-parentheses-space-inside
-
-Require a single space or disallow whitespace on the inside of the parentheses of functions.
-
-```css
-a { transform: translate( 1, 1 ); }
-/** ↑ ↑
- * The space inside these two parentheses */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"never-single-line"`
-
-### `"always"`
-
-There *must always* be a single space inside of the parentheses.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1, 1); }
-```
-
-```css
-a { transform: translate(1, 1 ); }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate( 1, 1 ); }
-```
-
-### `"never"`
-
-There *must never* be whitespace on the inside of the parentheses.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate( 1, 1 ); }
-```
-
-```css
-a { transform: translate(1, 1 ); }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1, 1); }
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space inside the parentheses of single-line functions.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1, 1) }
-```
-
-```css
-a { transform: translate(1, 1 ) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate( 1, 1 ) }
-```
-
-```css
-a { transform: translate(1,
- 1) }
-```
-
-```css
-a {
- transform: translate(
- 1,
- 1
- )
-}
-```
-
-### `"never-single-line"`
-
-There *must never* be whitespace inside the parentheses of single-line functions.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate( 1, 1 ) }
-```
-
-```css
-a { transform: translate(1, 1 ) }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1, 1) }
-```
-
-```css
-a { transform: translate( 1,
- 1) }
-```
-
-```css
-a {
- transform: translate(
- 1,
- 1
- )
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-parentheses-space-inside/index.js b/assets/node_modules/stylelint/lib/rules/function-parentheses-space-inside/index.js
deleted file mode 100644
index 9d99382..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-parentheses-space-inside/index.js
+++ /dev/null
@@ -1,166 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const isSingleLineString = require('../../utils/isSingleLineString');
-const isStandardSyntaxFunction = require('../../utils/isStandardSyntaxFunction');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'function-parentheses-space-inside';
-
-const messages = ruleMessages(ruleName, {
- expectedOpening: 'Expected single space after "("',
- rejectedOpening: 'Unexpected whitespace after "("',
- expectedClosing: 'Expected single space before ")"',
- rejectedClosing: 'Unexpected whitespace before ")"',
- expectedOpeningSingleLine: 'Expected single space after "(" in a single-line function',
- rejectedOpeningSingleLine: 'Unexpected whitespace after "(" in a single-line function',
- expectedClosingSingleLine: 'Expected single space before ")" in a single-line function',
- rejectedClosingSingleLine: 'Unexpected whitespace before ")" in a single-line function',
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never', 'always-single-line', 'never-single-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- if (!decl.value.includes('(')) {
- return;
- }
-
- let hasFixed = false;
- const declValue = _.get(decl, 'raws.value.raw', decl.value);
- const parsedValue = valueParser(declValue);
-
- parsedValue.walk((valueNode) => {
- if (valueNode.type !== 'function') {
- return;
- }
-
- if (!isStandardSyntaxFunction(valueNode)) {
- return;
- }
-
- // Ignore function without parameters
- if (!valueNode.nodes.length) {
- return;
- }
-
- const functionString = valueParser.stringify(valueNode);
- const isSingleLine = isSingleLineString(functionString);
-
- // Check opening ...
-
- const openingIndex = valueNode.sourceIndex + valueNode.value.length + 1;
-
- if (expectation === 'always' && valueNode.before !== ' ') {
- if (context.fix) {
- hasFixed = true;
- valueNode.before = ' ';
- } else {
- complain(messages.expectedOpening, openingIndex);
- }
- }
-
- if (expectation === 'never' && valueNode.before !== '') {
- if (context.fix) {
- hasFixed = true;
- valueNode.before = '';
- } else {
- complain(messages.rejectedOpening, openingIndex);
- }
- }
-
- if (isSingleLine && expectation === 'always-single-line' && valueNode.before !== ' ') {
- if (context.fix) {
- hasFixed = true;
- valueNode.before = ' ';
- } else {
- complain(messages.expectedOpeningSingleLine, openingIndex);
- }
- }
-
- if (isSingleLine && expectation === 'never-single-line' && valueNode.before !== '') {
- if (context.fix) {
- hasFixed = true;
- valueNode.before = '';
- } else {
- complain(messages.rejectedOpeningSingleLine, openingIndex);
- }
- }
-
- // Check closing ...
-
- const closingIndex = valueNode.sourceIndex + functionString.length - 2;
-
- if (expectation === 'always' && valueNode.after !== ' ') {
- if (context.fix) {
- hasFixed = true;
- valueNode.after = ' ';
- } else {
- complain(messages.expectedClosing, closingIndex);
- }
- }
-
- if (expectation === 'never' && valueNode.after !== '') {
- if (context.fix) {
- hasFixed = true;
- valueNode.after = '';
- } else {
- complain(messages.rejectedClosing, closingIndex);
- }
- }
-
- if (isSingleLine && expectation === 'always-single-line' && valueNode.after !== ' ') {
- if (context.fix) {
- hasFixed = true;
- valueNode.after = ' ';
- } else {
- complain(messages.expectedClosingSingleLine, closingIndex);
- }
- }
-
- if (isSingleLine && expectation === 'never-single-line' && valueNode.after !== '') {
- if (context.fix) {
- hasFixed = true;
- valueNode.after = '';
- } else {
- complain(messages.rejectedClosingSingleLine, closingIndex);
- }
- }
- });
-
- if (hasFixed) {
- if (!decl.raws.value) {
- decl.value = parsedValue.toString();
- } else {
- decl.raws.value.raw = parsedValue.toString();
- }
- }
-
- function complain(message, offset) {
- report({
- ruleName,
- result,
- message,
- node: decl,
- index: declarationValueIndex(decl) + offset,
- });
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-url-no-scheme-relative/README.md b/assets/node_modules/stylelint/lib/rules/function-url-no-scheme-relative/README.md
deleted file mode 100644
index 705ee6f..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-url-no-scheme-relative/README.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# function-url-no-scheme-relative
-
-Disallow scheme-relative urls.
-
-```css
-a { background-image: url('//www.google.com/file.jpg'); }
-/** ↑
- * This scheme-relative url */
-```
-
-A [scheme-relative url](https://url.spec.whatwg.org/#syntax-url-scheme-relative) is a url that begins with `//` followed by a host.
-
-This rule ignores url arguments that are variables (`$sass`, `@less`, `--custom-property`).
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a {
- background: url("//www.google.com/file.jpg");
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- background: url("../file.jpg");
-}
-```
-
-```css
-a {
- background: url("http://www.google.com/file.jpg");
-}
-```
-
-```css
-a {
- background: url("/path/to/file.jpg");
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-url-no-scheme-relative/index.js b/assets/node_modules/stylelint/lib/rules/function-url-no-scheme-relative/index.js
deleted file mode 100644
index b19ad38..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-url-no-scheme-relative/index.js
+++ /dev/null
@@ -1,46 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const functionArgumentsSearch = require('../../utils/functionArgumentsSearch');
-const isStandardSyntaxUrl = require('../../utils/isStandardSyntaxUrl');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'function-url-no-scheme-relative';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected scheme-relative url',
-});
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls(function(decl) {
- functionArgumentsSearch(decl.toString().toLowerCase(), 'url', (args, index) => {
- const url = _.trim(args, ' \'"');
-
- if (!isStandardSyntaxUrl(url) || !url.startsWith('//')) {
- return;
- }
-
- report({
- message: messages.rejected,
- node: decl,
- index,
- result,
- ruleName,
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-url-quotes/README.md b/assets/node_modules/stylelint/lib/rules/function-url-quotes/README.md
deleted file mode 100644
index c6f2a62..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-url-quotes/README.md
+++ /dev/null
@@ -1,103 +0,0 @@
-# function-url-quotes
-
-Require or disallow quotes for urls.
-
-```css
-a { background: url("x.jpg") }
-/** ↑ ↑
- * These quotes */
-```
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-Urls *must always* be quoted.
-
-The following patterns are considered violations:
-
-```css
-@import url(foo.css);
-```
-
-```css
-@document domain(http://www.w3.org/);
-```
-
-```css
-@font-face { font-family: 'foo'; src: url(foo.ttf); }
-```
-
-```css
-@-moz-document url-prefix() {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background: url('x.jpg'); }
-```
-
-```css
-@import url("foo.css");
-```
-
-```css
-@document domain('http://www.w3.org/');
-```
-
-```css
-@font-face { font-family: "foo"; src: url("foo.ttf"); }
-```
-
-```css
-@-moz-document url-prefix('') {}
-```
-
-### `"never"`
-
-Urls *must never* be quoted.
-
-The following patterns are considered violations:
-
-```css
-a { background: url('x.jpg'); }
-```
-
-```css
-@import url("foo.css");
-```
-
-```css
-@font-face { font-family: "foo"; src: url('foo.ttf'); }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background: url(x.jpg); }
-```
-
-```css
-@import url(foo.css);
-```
-
-```css
-@font-face { font-family: 'foo'; src: url(foo.ttf); }
-```
-
-## Optional secondary options
-
-### `except: ["empty"]`
-
-Reverse the primary option for functions that have no arguments.
-
-For example, with `"always"`.
-
-The following patterns are *not* considered violations:
-
-```css
-@-moz-document url-prefix() {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-url-quotes/index.js b/assets/node_modules/stylelint/lib/rules/function-url-quotes/index.js
deleted file mode 100644
index 9013f60..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-url-quotes/index.js
+++ /dev/null
@@ -1,111 +0,0 @@
-'use strict';
-
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const functionArgumentsSearch = require('../../utils/functionArgumentsSearch');
-const isStandardSyntaxUrl = require('../../utils/isStandardSyntaxUrl');
-const optionsMatches = require('../../utils/optionsMatches');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'function-url-quotes';
-
-const messages = ruleMessages(ruleName, {
- expected: () => 'Expected quotes',
- rejected: () => 'Unexpected quotes',
-});
-
-function rule(expectation, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: expectation,
- possible: ['always', 'never'],
- },
- {
- actual: options,
- possible: {
- except: ['empty'],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules(checkAtRuleParams);
- root.walkDecls(checkDeclParams);
-
- function checkDeclParams(decl) {
- functionArgumentsSearch(decl.toString().toLowerCase(), 'url', (args, index) => {
- checkArgs(args, decl, index, 'url');
- });
- }
-
- function checkAtRuleParams(atRule) {
- const atRuleParamsLowerCase = atRule.params.toLowerCase();
-
- functionArgumentsSearch(atRuleParamsLowerCase, 'url', (args, index) => {
- checkArgs(args, atRule, index + atRuleParamIndex(atRule), 'url');
- });
- functionArgumentsSearch(atRuleParamsLowerCase, 'url-prefix', (args, index) => {
- checkArgs(args, atRule, index + atRuleParamIndex(atRule), 'url-prefix');
- });
- functionArgumentsSearch(atRuleParamsLowerCase, 'domain', (args, index) => {
- checkArgs(args, atRule, index + atRuleParamIndex(atRule), 'domain');
- });
- }
-
- function checkArgs(args, node, index, functionName) {
- let shouldHasQuotes = expectation === 'always';
-
- const leftTrimmedArgs = args.trimLeft();
-
- if (!isStandardSyntaxUrl(leftTrimmedArgs)) {
- return;
- }
-
- const complaintIndex = index + args.length - leftTrimmedArgs.length;
- const hasQuotes = leftTrimmedArgs.startsWith("'") || leftTrimmedArgs.startsWith('"');
-
- const trimmedArg = args.trim();
- const isEmptyArgument = ['', "''", '""'].includes(trimmedArg);
-
- if (optionsMatches(options, 'except', 'empty') && isEmptyArgument) {
- shouldHasQuotes = !shouldHasQuotes;
- }
-
- if (shouldHasQuotes) {
- if (hasQuotes) {
- return;
- }
-
- complain(messages.expected(functionName), node, complaintIndex);
- } else {
- if (!hasQuotes) {
- return;
- }
-
- complain(messages.rejected(functionName), node, complaintIndex);
- }
- }
-
- function complain(message, node, index) {
- report({
- message,
- node,
- index,
- result,
- ruleName,
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-url-scheme-blacklist/README.md b/assets/node_modules/stylelint/lib/rules/function-url-scheme-blacklist/README.md
deleted file mode 100644
index 146a2f6..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-url-scheme-blacklist/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-# function-url-scheme-blacklist
-
-Specify a blacklist of disallowed URL schemes.
-
-```css
-a { background-image: url('http://www.example.com/file.jpg'); }
-/** ↑
- * This URL scheme */
-```
-
-A [URL scheme](https://url.spec.whatwg.org/#syntax-url-scheme) consists of alphanumeric, `+`, `-`, and `.` characters. It can appear at the start of a URL and is followed by `:`.
-
-This rule ignores:
-
-- URL arguments without an existing URL scheme
-- URL arguments with variables or variable interpolation (`$sass`, `@less`, `--custom-property`, `#{$var}`, `@{var}`, `$(var)`)
-
-## Options
-
-`array|string|regex`: `["array", "of", /schemes/ or "/regex/"]|"scheme"|/regex/`
-
-Given:
-
-```js
-["ftp", "/^http/"]
-```
-
-The following patterns are considered violations:
-
-```css
-a { background-image: url('ftp://www.example.com/file.jpg'); }
-```
-
-```css
-a { background-image: url('http://www.example.com/file.jpg'); }
-```
-
-```css
-a { background-image: url('https://www.example.com/file.jpg'); }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-image: url('data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs='); }
-```
-
-```css
-a { background-image: url('example.com/file.jpg'); }
-```
-
-```css
-a { background-image: url('/example.com/file.jpg'); }
-```
-
-```css
-a { background-image: url('//example.com/file.jpg'); }
-```
-
-```css
-a { background-image: url('./path/to/file.jpg'); }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-url-scheme-blacklist/index.js b/assets/node_modules/stylelint/lib/rules/function-url-scheme-blacklist/index.js
deleted file mode 100644
index e715ceb..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-url-scheme-blacklist/index.js
+++ /dev/null
@@ -1,64 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const functionArgumentsSearch = require('../../utils/functionArgumentsSearch');
-const getSchemeFromUrl = require('../../utils/getSchemeFromUrl');
-const isStandardSyntaxUrl = require('../../utils/isStandardSyntaxUrl');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'function-url-scheme-blacklist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (scheme) => `Unexpected URL scheme "${scheme}:"`,
-});
-
-function rule(blacklist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: blacklist,
- possible: [_.isString, _.isRegExp],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls(function(decl) {
- functionArgumentsSearch(decl.toString().toLowerCase(), 'url', (args, index) => {
- const unspacedUrlString = _.trim(args, ' ');
-
- if (!isStandardSyntaxUrl(unspacedUrlString)) {
- return;
- }
-
- const urlString = _.trim(unspacedUrlString, '\'"');
- const scheme = getSchemeFromUrl(urlString);
-
- if (scheme === null) {
- return;
- }
-
- if (!matchesStringOrRegExp(scheme, blacklist)) {
- return;
- }
-
- report({
- message: messages.rejected(scheme),
- node: decl,
- index,
- result,
- ruleName,
- });
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-url-scheme-whitelist/README.md b/assets/node_modules/stylelint/lib/rules/function-url-scheme-whitelist/README.md
deleted file mode 100644
index 996c4df..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-url-scheme-whitelist/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# function-url-scheme-whitelist
-
-Specify a whitelist of allowed URL schemes.
-
-```css
-a { background-image: url('http://www.example.com/file.jpg'); }
-/** ↑
- * This URL scheme */
-```
-
-A [URL scheme](https://url.spec.whatwg.org/#syntax-url-scheme) consists of alphanumeric, `+`, `-`, and `.` characters. It can appear at the start of a URL and is followed by `:`.
-
-This rule ignores:
-
-- URL arguments without an existing URL scheme
-- URL arguments with variables or variable interpolation (`$sass`, `@less`, `--custom-property`, `#{$var}`, `@{var}`, `$(var)`)
-
-## Options
-
-`array|string|regex`: `["array", "of", /schemes/ or "/regex/"]|"scheme"|/regex/`
-
-Given:
-
-```js
-["data", "/^http/"]
-```
-
-The following patterns are considered violations:
-
-```css
-a { background-image: url('file://file.jpg'); }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-image: url('example.com/file.jpg'); }
-```
-
-```css
-a { background-image: url('/example.com/file.jpg'); }
-```
-
-```css
-a { background-image: url('//example.com/file.jpg'); }
-```
-
-```css
-a { background-image: url('./path/to/file.jpg'); }
-```
-
-```css
-a { background-image: url('http://www.example.com/file.jpg'); }
-```
-
-```css
-a { background-image: url('https://www.example.com/file.jpg'); }
-```
-
-```css
-a { background-image: url('HTTPS://www.example.com/file.jpg'); }
-```
-
-```css
-a { background-image: url('data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs='); }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-url-scheme-whitelist/index.js b/assets/node_modules/stylelint/lib/rules/function-url-scheme-whitelist/index.js
deleted file mode 100644
index 26c6fed..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-url-scheme-whitelist/index.js
+++ /dev/null
@@ -1,64 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const functionArgumentsSearch = require('../../utils/functionArgumentsSearch');
-const getSchemeFromUrl = require('../../utils/getSchemeFromUrl');
-const isStandardSyntaxUrl = require('../../utils/isStandardSyntaxUrl');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'function-url-scheme-whitelist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (scheme) => `Unexpected URL scheme "${scheme}:"`,
-});
-
-function rule(whitelist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: whitelist,
- possible: [_.isString, _.isRegExp],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls(function(decl) {
- functionArgumentsSearch(decl.toString().toLowerCase(), 'url', (args, index) => {
- const unspacedUrlString = _.trim(args, ' ');
-
- if (!isStandardSyntaxUrl(unspacedUrlString)) {
- return;
- }
-
- const urlString = _.trim(unspacedUrlString, '\'"');
- const scheme = getSchemeFromUrl(urlString);
-
- if (scheme === null) {
- return;
- }
-
- if (matchesStringOrRegExp(scheme, whitelist)) {
- return;
- }
-
- report({
- message: messages.rejected(scheme),
- node: decl,
- index,
- result,
- ruleName,
- });
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-whitelist/README.md b/assets/node_modules/stylelint/lib/rules/function-whitelist/README.md
deleted file mode 100644
index 349fab6..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-whitelist/README.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# function-whitelist
-
-Specify a whitelist of allowed functions.
-
-```css
-a { transform: scale(1); }
-/** ↑
- * This function */
-```
-
-## Options
-
-`array|string`: `["array", "of", "unprefixed", /functions/ or "regex"]|"function"|"/regex/"`
-
-If a string is surrounded with `"/"` (e.g. `"/^rgb/"`), it is interpreted as a regular expression.
-
-Given:
-
-```js
-["scale", "rgba", "linear-gradient"]
-```
-
-The following patterns are considered violations:
-
-```css
-a { transform: rotate(1); }
-```
-
-```css
-a {
- color: hsla(170, 50%, 45%, 1)
-}
-```
-
-```css
-a {
- background:
- red,
- -webkit-radial-gradient(red, green, blue);
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background: red; }
-```
-
-```css
-a { transform: scale(1); }
-```
-
-```css
-a {
- color: rgba(0, 0, 0, 0.5);
-}
-```
-
-```css
-a {
- background:
- red,
- -moz-linear-gradient(45deg, blue, red);
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-whitelist/index.js b/assets/node_modules/stylelint/lib/rules/function-whitelist/index.js
deleted file mode 100644
index cc0cea1..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-whitelist/index.js
+++ /dev/null
@@ -1,64 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const isStandardSyntaxFunction = require('../../utils/isStandardSyntaxFunction');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'function-whitelist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (name) => `Unexpected function "${name}"`,
-});
-
-function rule(whitelistInput) {
- const whitelist = [].concat(whitelistInput);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: whitelist,
- possible: [_.isString, _.isRegExp],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const value = decl.value;
-
- valueParser(value).walk(function(node) {
- if (node.type !== 'function') {
- return;
- }
-
- if (!isStandardSyntaxFunction(node)) {
- return;
- }
-
- if (matchesStringOrRegExp(postcss.vendor.unprefixed(node.value), whitelist)) {
- return;
- }
-
- report({
- message: messages.rejected(node.value),
- node: decl,
- index: declarationValueIndex(decl) + node.sourceIndex,
- result,
- ruleName,
- });
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/function-whitespace-after/README.md b/assets/node_modules/stylelint/lib/rules/function-whitespace-after/README.md
deleted file mode 100644
index 1fea9f7..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-whitespace-after/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# function-whitespace-after
-
-Require or disallow whitespace after functions.
-
-```css
-a { transform: translate(1, 1) scale(3); }
-/** ↑
- * This space */
-```
-
-This rule does not check for space immediately after `)` if the very next character is `,`, `)`, `/` or `}`, allowing some of the patterns exemplified below.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be whitespace after the function.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1, 1)scale(3); }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1, 1) scale(3); }
-```
-
-```css
-a { transform: translate(1, 1) scale(3); }
-```
-
-```css
-a {
- transform:
- translate(1, 1)
- scale(3);
-}
-```
-
-```css
-/* notice the two closing parentheses without a space between */
-a { top: calc(1 * (1 + 3)); }
-```
-
-```css
-/* notice the ), with no space after the closing parenthesis */
-a { padding: calc(1 * 2px), calc(2 * 5px); }
-```
-
-```scss
-/* notice the )}, with no space after the closing parenthesis */
-a {
- max-height: #{($line-height) * ($lines-to-show)}em;
-}
-```
-
-```less
-/* notice the )}, with no space after the closing parenthesis */
-a {
- max-height: ((@line-height) * (@lines-to-show))em;
-}
-```
-
-### `"never"`
-
-There *must never* be whitespace after the function.
-
-The following patterns are considered violations:
-
-```css
-a { transform: translate(1, 1) scale(3); }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: translate(1, 1)scale(3); }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/function-whitespace-after/index.js b/assets/node_modules/stylelint/lib/rules/function-whitespace-after/index.js
deleted file mode 100644
index 9022f95..0000000
--- a/assets/node_modules/stylelint/lib/rules/function-whitespace-after/index.js
+++ /dev/null
@@ -1,166 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const isWhitespace = require('../../utils/isWhitespace');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'function-whitespace-after';
-
-const messages = ruleMessages(ruleName, {
- expected: 'Expected whitespace after ")"',
- rejected: 'Unexpected whitespace after ")"',
-});
-
-const ACCEPTABLE_AFTER_CLOSING_PAREN = new Set([')', ',', '}', ':', '/', undefined]);
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- function check(node, value, getIndex, fix) {
- styleSearch(
- {
- source: value,
- target: ')',
- functionArguments: 'only',
- },
- (match) => {
- checkClosingParen(value, match.startIndex + 1, node, getIndex, fix);
- },
- );
- }
-
- function checkClosingParen(source, index, node, getIndex, fix) {
- const nextChar = source[index];
-
- if (expectation === 'always') {
- // Allow for the next character to be a single empty space,
- // another closing parenthesis, a comma, or the end of the value
- if (nextChar === ' ') {
- return;
- }
-
- if (nextChar === '\n') {
- return;
- }
-
- if (source.substr(index, 2) === '\r\n') {
- return;
- }
-
- if (ACCEPTABLE_AFTER_CLOSING_PAREN.has(nextChar)) {
- return;
- }
-
- if (fix) {
- fix(index);
-
- return;
- }
-
- report({
- message: messages.expected,
- node,
- index: getIndex(node) + index,
- result,
- ruleName,
- });
- } else if (expectation === 'never') {
- if (isWhitespace(nextChar)) {
- if (fix) {
- fix(index);
-
- return;
- }
-
- report({
- message: messages.rejected,
- node,
- index: getIndex(node) + index,
- result,
- ruleName,
- });
- }
- }
- }
-
- function createFixer(value) {
- let fixed = '';
- let lastIndex = 0;
- let applyFix;
-
- if (expectation === 'always') {
- applyFix = (index) => {
- // eslint-disable-next-line prefer-template
- fixed += value.slice(lastIndex, index) + ' ';
- lastIndex = index;
- };
- } else if (expectation === 'never') {
- applyFix = (index) => {
- let whitespaceEndIndex = index + 1;
-
- while (whitespaceEndIndex < value.length && isWhitespace(value[whitespaceEndIndex])) {
- whitespaceEndIndex++;
- }
- fixed += value.slice(lastIndex, index);
- lastIndex = whitespaceEndIndex;
- };
- }
-
- return {
- applyFix,
- get hasFixed() {
- return Boolean(lastIndex);
- },
- get fixed() {
- return fixed + value.slice(lastIndex);
- },
- };
- }
-
- root.walkAtRules(/^import$/i, (atRule) => {
- const param = _.get(atRule, 'raws.params.raw', atRule.params);
- const fixer = context.fix && createFixer(param);
-
- check(atRule, param, atRuleParamIndex, fixer && fixer.applyFix);
-
- if (fixer && fixer.hasFixed) {
- if (atRule.raws.params) {
- atRule.raws.params.raw = fixer.fixed;
- } else {
- atRule.params = fixer.fixed;
- }
- }
- });
- root.walkDecls((decl) => {
- const value = _.get(decl, 'raws.value.raw', decl.value);
- const fixer = context.fix && createFixer(value);
-
- check(decl, value, declarationValueIndex, fixer && fixer.applyFix);
-
- if (fixer && fixer.hasFixed) {
- if (decl.raws.value) {
- decl.raws.value.raw = fixer.fixed;
- } else {
- decl.value = fixer.fixed;
- }
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/functionCommaSpaceChecker.js b/assets/node_modules/stylelint/lib/rules/functionCommaSpaceChecker.js
deleted file mode 100644
index 02a00ab..0000000
--- a/assets/node_modules/stylelint/lib/rules/functionCommaSpaceChecker.js
+++ /dev/null
@@ -1,110 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const declarationValueIndex = require('../utils/declarationValueIndex');
-const isStandardSyntaxFunction = require('../utils/isStandardSyntaxFunction');
-const report = require('../utils/report');
-const valueParser = require('postcss-value-parser');
-
-module.exports = function(opts) {
- opts.root.walkDecls((decl) => {
- const declValue = _.get(decl, 'raws.value.raw', decl.value);
-
- let hasFixed;
- const parsedValue = valueParser(declValue);
-
- parsedValue.walk((valueNode) => {
- if (valueNode.type !== 'function') {
- return;
- }
-
- if (!isStandardSyntaxFunction(valueNode)) {
- return;
- }
-
- // Ignore `url()` arguments, which may contain data URIs or other funky stuff
- if (valueNode.value.toLowerCase() === 'url') {
- return;
- }
-
- const argumentStrings = valueNode.nodes.map((node) => valueParser.stringify(node));
-
- const functionArguments = (() => {
- // Remove function name and parens
- let result = valueNode.before + argumentStrings.join('') + valueNode.after;
-
- // 1. Remove comments including preceding whitespace (when only succeeded by whitespace)
- // 2. Remove all other comments, but leave adjacent whitespace intact
- result = result.replace(/( *\/(\*.*\*\/(?!\S)|\/.*)|(\/(\*.*\*\/|\/.*)))/, '');
-
- return result;
- })();
-
- /**
- * Gets the index of the comma for checking.
- * @param {Node} commaNode The comma node
- * @param {number} nodeIndex The index of the comma node
- * @returns {number} The index of the comma for checking
- */
- function getCommaCheckIndex(commaNode, nodeIndex) {
- let commaBefore =
- valueNode.before + argumentStrings.slice(0, nodeIndex).join('') + commaNode.before;
-
- // 1. Remove comments including preceding whitespace (when only succeeded by whitespace)
- // 2. Remove all other comments, but leave adjacent whitespace intact
- commaBefore = commaBefore.replace(/( *\/(\*.*\*\/(?!\S)|\/.*)|(\/(\*.*\*\/|\/.*)))/, '');
-
- return commaBefore.length;
- }
-
- const commaDataList = [];
-
- valueNode.nodes.forEach((node, nodeIndex) => {
- if (node.type !== 'div' || node.value !== ',') {
- return;
- }
-
- const checkIndex = getCommaCheckIndex(node, nodeIndex);
-
- commaDataList.push({
- commaNode: node,
- checkIndex,
- nodeIndex,
- });
- });
-
- for (const { commaNode, checkIndex, nodeIndex } of commaDataList) {
- opts.locationChecker({
- source: functionArguments,
- index: checkIndex,
- err: (message) => {
- const index =
- declarationValueIndex(decl) + commaNode.sourceIndex + commaNode.before.length;
-
- if (opts.fix && opts.fix(commaNode, nodeIndex, valueNode.nodes)) {
- hasFixed = true;
-
- return;
- }
-
- report({
- index,
- message,
- node: decl,
- result: opts.result,
- ruleName: opts.checkedRuleName,
- });
- },
- });
- }
- });
-
- if (hasFixed) {
- if (!decl.raws.value) {
- decl.value = parsedValue.toString();
- } else {
- decl.raws.value.raw = parsedValue.toString();
- }
- }
- });
-};
diff --git a/assets/node_modules/stylelint/lib/rules/functionCommaSpaceFix.js b/assets/node_modules/stylelint/lib/rules/functionCommaSpaceFix.js
deleted file mode 100644
index 637ec59..0000000
--- a/assets/node_modules/stylelint/lib/rules/functionCommaSpaceFix.js
+++ /dev/null
@@ -1,32 +0,0 @@
-'use strict';
-
-module.exports = function(params) {
- const { div, index, nodes, expectation, position, symb } = params;
-
- if (expectation.startsWith('always')) {
- div[position] = symb;
-
- return true;
- }
-
- if (expectation.startsWith('never')) {
- div[position] = '';
-
- for (let i = index + 1; i < nodes.length; i++) {
- const node = nodes[i];
-
- if (node.type === 'comment') {
- continue;
- }
-
- if (node.type === 'space') {
- node.value = '';
- continue;
- }
-
- break;
- }
-
- return true;
- }
-};
diff --git a/assets/node_modules/stylelint/lib/rules/indentation/README.md b/assets/node_modules/stylelint/lib/rules/indentation/README.md
deleted file mode 100644
index f0b1bd1..0000000
--- a/assets/node_modules/stylelint/lib/rules/indentation/README.md
+++ /dev/null
@@ -1,315 +0,0 @@
-# indentation
-
-Specify indentation.
-
-```css
- |@media print {
- | a {
- | ↑ background-position: top left,
- | ↑ ↑ top right;
- | ↑}↑ ↑
- |}↑ ↑ ↑
-/** ↑ ↑ ↑
- * The indentation at these three points */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`int|"tab"`, where `int` is the number of spaces
-
-### `2`
-
-Always indent at-rules, rules, comments, declarations, inside parentheses and multi-line values by 2 spaces.
-
-The following patterns are considered violations:
-
-```css
-@media print {
-a {
-background-position: top left,
-top right;
-}
-}
-```
-
-```css
-@media print {
-a {
- background-position: top left,
- top right;
- }
-}
-```
-
-```css
-@media print {
- a {
- background-position: top left,
- top right;
- }
-}
-```
-
-```css
-@media print {
- a,
- b {
- background-position: top left,
- top right;
- }
-}
-```
-
-```css
-a {
-/* blergh */
- color: pink;
-}
- /* blergh */
-```
-
-```css
-@media print,
-(-webkit-min-device-pixel-ratio: 1.25),
-(min-resolution: 120dpi) {}
-```
-
-```css
-a {
- color: rgb(
- 255,
- 255,
- 255
- );
- top: 0;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media print {
- a {
- background-position: top left,
- top right;
- }
-}
-```
-
-```css
-@media print {
- a,
- b {
- background-position: top left,
- top right;
- }
-}
-```
-
-```css
-a {
- /* blergh */
- color: pink;
-}
-/* blergh */
-```
-
-```css
-@media print,
- (-webkit-min-device-pixel-ratio: 1.25),
- (min-resolution: 120dpi) {}
-```
-
-```css
-a {
- color: rgb(
- 255,
- 255,
- 255
- );
- top: 0;
-}
-```
-
-## Optional secondary options
-
-### `baseIndentLevel: int|"auto"`
-
-By default, the indent level of the CSS code block in non-CSS-like files is determined by the shortest indent of non-empty line. The setting `baseIndentLevel` allows you to define a relative indent level based on CSS code block opening or closing line.
-
-For example, with `[ 2, { baseIndentLevel: 1 } ]`, CSS should be indented 1 levels higher than `<style>` tag:
-
-```html
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <style>
- a {
- display: block;
- }
- </style>
-</head>
-</html>
-```
-
-### `indentInsideParens: "twice"|"once-at-root-twice-in-block"`
-
-By default, *one extra* indentation (of your specified type) is expected after newlines inside parentheses, and the closing parenthesis is expected to have no extra indentation.
-
-If you would like to change the quantity of extra indentation inside parentheses, use this option.
-
-`"twice"` means you expect two extra indentations (of your specified type) after newlines inside parentheses, and expect the closing parenthesis to have one extra indentation. For example:
-
-```css
-a {
- color: rgb(
- 255,
- 255,
- 255
- );
- top: 0;
-}
-```
-
-`"once-at-root-twice-in-block"` means two things: You want the behavior of `"once"`, as documented above, when the parenthetical expression is part of a node that is an immediate descendent of the root — i.e. not inside a block. And you want the behavior of `"twice"`, as documented above, when the parenthetical expression is part of a node that is inside a block. For example, with a SCSS map:
-
-```scss
-$foo: (
- bar: 1,
- baz: 2
-);
-
-a {
- color: rgb(
- 255,
- 255,
- 255
- );
- top: 0;
-}
-```
-
-### `indentClosingBrace: true|false`
-
-If `true`, the closing brace of a block (rule or at-rule) will be expected at the same indentation level as the block's inner nodes.
-
-For example, with `indentClosingBrace: true`.
-
-The following patterns are considered violations:
-
-```css
-a {
- color: pink;
-}
-```
-
-```css
-@media print {
- a {
- color: pink;
- }
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- color: pink;
- }
-```
-
-```css
-@media print {
- a {
- color: pink;
- }
- }
-```
-
-### `except: ["block", "param", "value"]`
-
-Do *not* indent for these things.
-
-For example, with `2`.
-
-The following patterns are considered violations:
-
-```css
-@media print,
- (-webkit-min-device-pixel-ratio: 1.25),
- (min-resolution: 120dpi) {
- a {
- background-position: top left,
- top right;
- }
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media print,
-(-webkit-min-device-pixel-ratio: 1.25),
-(min-resolution: 120dpi) {
-a {
-background-position: top left,
-top right;
-}
-}
-```
-
-### `ignore: ["inside-parens", "param", "value"]`
-
-#### `"inside-parens"`
-
-Ignore the indentation inside parentheses.
-
-For example, with `2`.
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- color: rgb(
-255,
- 255,
- 255
- );
- top: 0;
-}
-```
-
-#### `"param"`
-
-Ignore the indentation of at-rule params.
-
-For example, with `2`.
-
-The following patterns are *not* considered violations:
-
-```css
-@media print,
- (-webkit-min-device-pixel-ratio: 1.25),
- (min-resolution: 120dpi) {
-}
-```
-
-#### `"value"`
-
-Ignore the indentation of values.
-
-For example, with `2`.
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- background-position: top left,
-top right,
- bottom left,
- bottom right;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/indentation/index.js b/assets/node_modules/stylelint/lib/rules/indentation/index.js
deleted file mode 100644
index f86f146..0000000
--- a/assets/node_modules/stylelint/lib/rules/indentation/index.js
+++ /dev/null
@@ -1,585 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const beforeBlockString = require('../../utils/beforeBlockString');
-const hasBlock = require('../../utils/hasBlock');
-const optionsMatches = require('../../utils/optionsMatches');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'indentation';
-const messages = ruleMessages(ruleName, {
- expected: (x) => `Expected indentation of ${x}`,
-});
-
-/**
- * @param {number|"tab"} space - Number of whitespaces to expect, or else
- * keyword "tab" for single `\t`
- * @param {object} [options]
- */
-function rule(space, options = {}, context) {
- const isTab = space === 'tab';
- const indentChar = isTab ? '\t' : ' '.repeat(space);
- const warningWord = isTab ? 'tab' : 'space';
-
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: space,
- possible: [_.isNumber, 'tab'],
- },
- {
- actual: options,
- possible: {
- baseIndentLevel: [_.isNumber, 'auto'],
- except: ['block', 'value', 'param'],
- ignore: ['value', 'param', 'inside-parens'],
- indentInsideParens: ['twice', 'once-at-root-twice-in-block'],
- indentClosingBrace: [_.isBoolean],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- // Cycle through all nodes using walk.
- root.walk((node) => {
- const nodeLevel = indentationLevel(node);
-
- // Cut out any * and _ hacks from `before`
- const before = (node.raws.before || '').replace(/[*_]$/, '');
- const after = node.raws.after || '';
- const parent = node.parent;
-
- const expectedOpeningBraceIndentation = indentChar.repeat(nodeLevel);
-
- // Only inspect the spaces before the node
- // if this is the first node in root
- // or there is a newline in the `before` string.
- // (If there is no newline before a node,
- // there is no "indentation" to check.)
- const isFirstChild = parent.type === 'root' && parent.first === node;
- const lastIndexOfNewline = before.lastIndexOf('\n');
-
- // Inspect whitespace in the `before` string that is
- // *after* the *last* newline character,
- // because anything besides that is not indentation for this node:
- // it is some other kind of separation, checked by some separate rule
- if (
- (lastIndexOfNewline !== -1 ||
- (isFirstChild && (!parent.document || parent.raws.beforeStart.endsWith('\n')))) &&
- before.slice(lastIndexOfNewline + 1) !== expectedOpeningBraceIndentation
- ) {
- if (context.fix) {
- if (isFirstChild && _.isString(node.raws.before)) {
- node.raws.before = node.raws.before.replace(
- /^[ \t]*(?=\S|$)/,
- expectedOpeningBraceIndentation,
- );
- }
-
- node.raws.before = fixIndentation(node.raws.before, expectedOpeningBraceIndentation);
- } else {
- report({
- message: messages.expected(legibleExpectation(nodeLevel)),
- node,
- result,
- ruleName,
- });
- }
- }
-
- // Only blocks have the `after` string to check.
- // Only inspect `after` strings that start with a newline;
- // otherwise there's no indentation involved.
- // And check `indentClosingBrace` to see if it should be indented an extra level.
- const closingBraceLevel = options.indentClosingBrace ? nodeLevel + 1 : nodeLevel;
- const expectedClosingBraceIndentation = indentChar.repeat(closingBraceLevel);
-
- if (
- hasBlock(node) &&
- after &&
- after.includes('\n') &&
- after.slice(after.lastIndexOf('\n') + 1) !== expectedClosingBraceIndentation
- ) {
- if (context.fix) {
- node.raws.after = fixIndentation(node.raws.after, expectedClosingBraceIndentation);
- } else {
- report({
- message: messages.expected(legibleExpectation(closingBraceLevel)),
- node,
- index: node.toString().length - 1,
- result,
- ruleName,
- });
- }
- }
-
- // If this is a declaration, check the value
- if (node.value) {
- checkValue(node, nodeLevel);
- }
-
- // If this is a rule, check the selector
- if (node.selector) {
- checkSelector(node, nodeLevel);
- }
-
- // If this is an at rule, check the params
- if (node.type === 'atrule') {
- checkAtRuleParams(node, nodeLevel);
- }
- });
-
- function indentationLevel(node, level = 0) {
- if (node.parent.type === 'root') {
- return level + getRootBaseIndentLevel(node.parent, options.baseIndentLevel, space);
- }
-
- let calculatedLevel;
-
- // Indentation level equals the ancestor nodes
- // separating this node from root; so recursively
- // run this operation
- calculatedLevel = indentationLevel(node.parent, level + 1);
-
- // If options.except includes "block",
- // blocks are taken down one from their calculated level
- // (all blocks are the same level as their parents)
- if (
- optionsMatches(options, 'except', 'block') &&
- (node.type === 'rule' || node.type === 'atrule') &&
- hasBlock(node)
- ) {
- calculatedLevel--;
- }
-
- return calculatedLevel;
- }
-
- function checkValue(decl, declLevel) {
- if (!decl.value.includes('\n')) {
- return;
- }
-
- if (optionsMatches(options, 'ignore', 'value')) {
- return;
- }
-
- const declString = decl.toString();
- const valueLevel = optionsMatches(options, 'except', 'value') ? declLevel : declLevel + 1;
-
- checkMultilineBit(declString, valueLevel, decl);
- }
-
- function checkSelector(rule, ruleLevel) {
- const selector = rule.selector;
-
- // Less mixins have params, and they should be indented extra
- if (rule.params) {
- ruleLevel += 1;
- }
-
- checkMultilineBit(selector, ruleLevel, rule);
- }
-
- function checkAtRuleParams(atRule, ruleLevel) {
- if (optionsMatches(options, 'ignore', 'param')) {
- return;
- }
-
- // @nest and SCSS's @at-root rules should be treated like regular rules, not expected
- // to have their params (selectors) indented
- const paramLevel =
- optionsMatches(options, 'except', 'param') ||
- atRule.name === 'nest' ||
- atRule.name === 'at-root'
- ? ruleLevel
- : ruleLevel + 1;
-
- checkMultilineBit(beforeBlockString(atRule).trim(), paramLevel, atRule);
- }
-
- function checkMultilineBit(source, newlineIndentLevel, node) {
- if (!source.includes('\n')) {
- return;
- }
-
- // Data for current node fixing
- const fixPositions = [];
-
- // `outsideParens` because function arguments and also non-standard parenthesized stuff like
- // Sass maps are ignored to allow for arbitrary indentation
- let parentheticalDepth = 0;
-
- styleSearch(
- {
- source,
- target: '\n',
- outsideParens: optionsMatches(options, 'ignore', 'inside-parens'),
- },
- (match, matchCount) => {
- const precedesClosingParenthesis = /^[ \t]*\)/.test(source.slice(match.startIndex + 1));
-
- if (
- optionsMatches(options, 'ignore', 'inside-parens') &&
- (precedesClosingParenthesis || match.insideParens)
- ) {
- return;
- }
-
- let expectedIndentLevel = newlineIndentLevel;
-
- // Modififications for parenthetical content
- if (!optionsMatches(options, 'ignore', 'inside-parens') && match.insideParens) {
- // If the first match in is within parentheses, reduce the parenthesis penalty
- if (matchCount === 1) parentheticalDepth -= 1;
-
- // Account for windows line endings
- let newlineIndex = match.startIndex;
-
- if (source[match.startIndex - 1] === '\r') {
- newlineIndex--;
- }
-
- const followsOpeningParenthesis = /\([ \t]*$/.test(source.slice(0, newlineIndex));
-
- if (followsOpeningParenthesis) {
- parentheticalDepth += 1;
- }
-
- const followsOpeningBrace = /\{[ \t]*$/.test(source.slice(0, newlineIndex));
-
- if (followsOpeningBrace) {
- parentheticalDepth += 1;
- }
-
- const startingClosingBrace = /^[ \t]*}/.test(source.slice(match.startIndex + 1));
-
- if (startingClosingBrace) {
- parentheticalDepth -= 1;
- }
-
- expectedIndentLevel += parentheticalDepth;
-
- // Past this point, adjustments to parentheticalDepth affect next line
-
- if (precedesClosingParenthesis) {
- parentheticalDepth -= 1;
- }
-
- switch (options.indentInsideParens) {
- case 'twice':
- if (!precedesClosingParenthesis || options.indentClosingBrace) {
- expectedIndentLevel += 1;
- }
-
- break;
- case 'once-at-root-twice-in-block':
- if (node.parent === node.root()) {
- if (precedesClosingParenthesis && !options.indentClosingBrace) {
- expectedIndentLevel -= 1;
- }
-
- break;
- }
-
- if (!precedesClosingParenthesis || options.indentClosingBrace) {
- expectedIndentLevel += 1;
- }
-
- break;
- default:
- if (precedesClosingParenthesis && !options.indentClosingBrace) {
- expectedIndentLevel -= 1;
- }
- }
- }
-
- // Starting at the index after the newline, we want to
- // check that the whitespace characters (excluding newlines) before the first
- // non-whitespace character equal the expected indentation
- const afterNewlineSpaceMatches = /^([ \t]*)\S/.exec(source.slice(match.startIndex + 1));
-
- if (!afterNewlineSpaceMatches) {
- return;
- }
-
- const afterNewlineSpace = afterNewlineSpaceMatches[1];
- const expectedIndentation = indentChar.repeat(expectedIndentLevel);
-
- if (afterNewlineSpace !== expectedIndentation) {
- if (context.fix) {
- // Adding fixes position in reverse order, because if we change indent in the beginning of the string it will break all following fixes for that string
- fixPositions.unshift({
- expectedIndentation,
- currentIndentation: afterNewlineSpace,
- startIndex: match.startIndex,
- });
- } else {
- report({
- message: messages.expected(legibleExpectation(expectedIndentLevel)),
- node,
- index: match.startIndex + afterNewlineSpace.length + 1,
- result,
- ruleName,
- });
- }
- }
- },
- );
-
- if (fixPositions.length) {
- if (node.type === 'rule') {
- fixPositions.forEach(function(fixPosition) {
- node.selector = replaceIndentation(
- node.selector,
- fixPosition.currentIndentation,
- fixPosition.expectedIndentation,
- fixPosition.startIndex,
- );
- });
- }
-
- if (node.type === 'decl') {
- const declProp = node.prop;
- const declBetween = node.raws.between;
-
- fixPositions.forEach(function(fixPosition) {
- if (fixPosition.startIndex < declProp.length + declBetween.length) {
- node.raws.between = replaceIndentation(
- declBetween,
- fixPosition.currentIndentation,
- fixPosition.expectedIndentation,
- fixPosition.startIndex - declProp.length,
- );
- } else {
- node.value = replaceIndentation(
- node.value,
- fixPosition.currentIndentation,
- fixPosition.expectedIndentation,
- fixPosition.startIndex - declProp.length - declBetween.length,
- );
- }
- });
- }
-
- if (node.type === 'atrule') {
- const atRuleName = node.name;
- const atRuleAfterName = node.raws.afterName;
- const atRuleParams = node.params;
-
- fixPositions.forEach(function(fixPosition) {
- // 1 — it's a @ length
- if (fixPosition.startIndex < 1 + atRuleName.length + atRuleAfterName.length) {
- node.raws.afterName = replaceIndentation(
- atRuleAfterName,
- fixPosition.currentIndentation,
- fixPosition.expectedIndentation,
- fixPosition.startIndex - atRuleName.length - 1,
- );
- } else {
- node.params = replaceIndentation(
- atRuleParams,
- fixPosition.currentIndentation,
- fixPosition.expectedIndentation,
- fixPosition.startIndex - atRuleName.length - atRuleAfterName.length - 1,
- );
- }
- });
- }
- }
- }
- };
-
- function legibleExpectation(level) {
- const count = isTab ? level : level * space;
- const quantifiedWarningWord = count === 1 ? warningWord : `${warningWord}s`;
-
- return `${count} ${quantifiedWarningWord}`;
- }
-}
-
-function getRootBaseIndentLevel(root, baseIndentLevel, space) {
- const document = root.document;
-
- if (!document) {
- return 0;
- }
-
- let indentLevel = root.source.baseIndentLevel;
-
- if (!Number.isSafeInteger(indentLevel)) {
- indentLevel = inferRootIndentLevel(root, baseIndentLevel, () =>
- inferDocIndentSize(document, space),
- );
- root.source.baseIndentLevel = indentLevel;
- }
-
- return indentLevel;
-}
-
-function inferDocIndentSize(document, space) {
- let indentSize = document.source.indentSize;
-
- if (Number.isSafeInteger(indentSize)) {
- return indentSize;
- }
-
- const source = document.source.input.css;
- const indents = source.match(/^ *(?=\S)/gm);
-
- if (indents) {
- const scores = {};
- let lastIndentSize = 0;
- let lastLeadingSpacesLength = 0;
- const vote = (leadingSpacesLength) => {
- if (leadingSpacesLength) {
- lastIndentSize = Math.abs(leadingSpacesLength - lastLeadingSpacesLength) || lastIndentSize;
-
- if (lastIndentSize > 1) {
- if (scores[lastIndentSize]) {
- scores[lastIndentSize]++;
- } else {
- scores[lastIndentSize] = 1;
- }
- }
- } else {
- lastIndentSize = 0;
- }
-
- lastLeadingSpacesLength = leadingSpacesLength;
- };
-
- indents.forEach((leadingSpaces) => {
- vote(leadingSpaces.length);
- });
-
- let bestScore = 0;
-
- for (const indentSizeDate in scores) {
- if (Object.prototype.hasOwnProperty.call(scores, indentSizeDate)) {
- const score = scores[indentSizeDate];
-
- if (score > bestScore) {
- bestScore = score;
- indentSize = indentSizeDate;
- }
- }
- }
- }
-
- indentSize = Number(indentSize) || (indents && indents[0].length) || Number(space) || 2;
- document.source.indentSize = indentSize;
-
- return indentSize;
-}
-
-function inferRootIndentLevel(root, baseIndentLevel, indentSize) {
- function getIndentLevel(indent) {
- let tabCount = indent.match(/\t/g);
-
- tabCount = tabCount ? tabCount.length : 0;
- let spaceCount = indent.match(/ /g);
-
- spaceCount = spaceCount ? Math.round(spaceCount.length / indentSize()) : 0;
-
- return tabCount + spaceCount;
- }
-
- if (!Number.isSafeInteger(baseIndentLevel)) {
- let source = root.source.input.css;
-
- source = source.replace(/^[^\r\n]+/, (firstLine) =>
- /(?:^|\n)([ \t]*)$/.test(root.raws.beforeStart) ? RegExp.$1 + firstLine : '',
- );
-
- const indents = source.match(/^[ \t]*(?=\S)/gm);
-
- if (indents) {
- return Math.min(...indents.map(getIndentLevel));
- }
-
- baseIndentLevel = 1;
- }
-
- const indents = [];
- const foundIndents = /(?:^|\n)([ \t]*)\S[^\r\n]*(?:\r?\n\s*)*$/m.exec(root.raws.beforeStart);
-
- // The indent level of the CSS code block in non-CSS-like files is determined by the shortest indent of non-empty line.
- if (foundIndents) {
- let shortest = Number.MAX_SAFE_INTEGER;
- let i = 0;
-
- while (++i < foundIndents.length) {
- const current = getIndentLevel(foundIndents[i]);
-
- if (current < shortest) {
- shortest = current;
-
- if (shortest === 0) {
- break;
- }
- }
- }
-
- if (shortest !== Number.MAX_SAFE_INTEGER) {
- indents.push(new Array(shortest).fill(' ').join(''));
- }
- }
-
- const after = root.raws.after;
-
- if (after) {
- let afterEnd;
-
- if (after.endsWith('\n')) {
- const document = root.document;
-
- afterEnd = document.nodes[root.nodes.indexOf(root) + 1];
-
- if (afterEnd) {
- afterEnd = afterEnd.raws.beforeStart;
- } else {
- afterEnd = document.raws.afterEnd;
- }
- } else {
- afterEnd = after;
- }
-
- indents.push(afterEnd.match(/^[ \t]*/)[0]);
- }
-
- if (indents.length) {
- return Math.max(...indents.map(getIndentLevel)) + baseIndentLevel;
- }
-
- return baseIndentLevel;
-}
-
-function fixIndentation(str, whitespace) {
- if (!_.isString(str)) {
- return str;
- }
-
- return str.replace(/\n[ \t]*(?=\S|$)/g, `\n${whitespace}`);
-}
-
-function replaceIndentation(input, searchString, replaceString, startIndex) {
- const offset = startIndex + 1;
- const stringStart = input.slice(0, offset);
- const stringEnd = input.slice(offset + searchString.length);
-
- return stringStart + replaceString + stringEnd;
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/index.js b/assets/node_modules/stylelint/lib/rules/index.js
deleted file mode 100644
index 525ded5..0000000
--- a/assets/node_modules/stylelint/lib/rules/index.js
+++ /dev/null
@@ -1,179 +0,0 @@
-'use strict';
-
-module.exports = [
- 'at-rule-blacklist',
- 'at-rule-empty-line-before',
- 'at-rule-name-case',
- 'at-rule-name-newline-after',
- 'at-rule-semicolon-space-before',
- 'at-rule-name-space-after',
- 'at-rule-no-unknown',
- 'at-rule-no-vendor-prefix',
- 'at-rule-property-requirelist',
- 'at-rule-semicolon-newline-after',
- 'at-rule-whitelist',
- 'block-closing-brace-empty-line-before',
- 'block-closing-brace-newline-after',
- 'block-closing-brace-newline-before',
- 'block-closing-brace-space-after',
- 'block-closing-brace-space-before',
- 'block-no-empty',
- 'block-opening-brace-newline-after',
- 'block-opening-brace-newline-before',
- 'block-opening-brace-space-after',
- 'block-opening-brace-space-before',
- 'color-hex-case',
- 'color-hex-length',
- 'color-named',
- 'color-no-hex',
- 'color-no-invalid-hex',
- 'comment-empty-line-before',
- 'comment-no-empty',
- 'comment-whitespace-inside',
- 'comment-word-blacklist',
- 'custom-media-pattern',
- 'custom-property-empty-line-before',
- 'custom-property-pattern',
- 'declaration-bang-space-after',
- 'declaration-bang-space-before',
- 'declaration-block-no-duplicate-properties',
- 'declaration-block-no-redundant-longhand-properties',
- 'declaration-block-no-shorthand-property-overrides',
- 'declaration-block-semicolon-newline-after',
- 'declaration-block-semicolon-newline-before',
- 'declaration-block-semicolon-space-after',
- 'declaration-block-semicolon-space-before',
- 'declaration-block-single-line-max-declarations',
- 'declaration-block-trailing-semicolon',
- 'declaration-colon-newline-after',
- 'declaration-colon-space-after',
- 'declaration-colon-space-before',
- 'declaration-empty-line-before',
- 'declaration-no-important',
- 'declaration-property-unit-blacklist',
- 'declaration-property-unit-whitelist',
- 'declaration-property-value-blacklist',
- 'declaration-property-value-whitelist',
- 'font-family-no-missing-generic-family-keyword',
- 'font-family-name-quotes',
- 'font-family-no-duplicate-names',
- 'font-weight-notation',
- 'function-blacklist',
- 'function-calc-no-invalid',
- 'function-calc-no-unspaced-operator',
- 'function-comma-newline-after',
- 'function-comma-newline-before',
- 'function-comma-space-after',
- 'function-comma-space-before',
- 'function-linear-gradient-no-nonstandard-direction',
- 'function-max-empty-lines',
- 'function-name-case',
- 'function-parentheses-newline-inside',
- 'function-parentheses-space-inside',
- 'function-url-no-scheme-relative',
- 'function-url-quotes',
- 'function-url-scheme-blacklist',
- 'function-url-scheme-whitelist',
- 'function-whitelist',
- 'function-whitespace-after',
- 'keyframe-declaration-no-important',
- 'keyframes-name-pattern',
- 'length-zero-no-unit',
- 'linebreaks',
- 'max-empty-lines',
- 'max-line-length',
- 'max-nesting-depth',
- 'media-feature-colon-space-after',
- 'media-feature-colon-space-before',
- 'media-feature-name-blacklist',
- 'media-feature-name-case',
- 'media-feature-name-no-unknown',
- 'media-feature-name-no-vendor-prefix',
- 'media-feature-name-value-whitelist',
- 'media-feature-name-whitelist',
- 'media-feature-parentheses-space-inside',
- 'media-feature-range-operator-space-after',
- 'media-feature-range-operator-space-before',
- 'media-query-list-comma-newline-after',
- 'media-query-list-comma-newline-before',
- 'media-query-list-comma-space-after',
- 'media-query-list-comma-space-before',
- 'no-descending-specificity',
- 'no-duplicate-at-import-rules',
- 'no-duplicate-selectors',
- 'no-empty-source',
- 'no-empty-first-line',
- 'no-eol-whitespace',
- 'no-extra-semicolons',
- 'no-invalid-double-slash-comments',
- 'no-missing-end-of-source-newline',
- 'no-unknown-animations',
- 'number-leading-zero',
- 'number-max-precision',
- 'number-no-trailing-zeros',
- 'property-blacklist',
- 'property-case',
- 'property-no-unknown',
- 'property-no-vendor-prefix',
- 'property-whitelist',
- 'rule-empty-line-before',
- 'selector-attribute-brackets-space-inside',
- 'selector-attribute-operator-blacklist',
- 'selector-attribute-operator-space-after',
- 'selector-attribute-operator-space-before',
- 'selector-attribute-operator-whitelist',
- 'selector-attribute-quotes',
- 'selector-class-pattern',
- 'selector-combinator-blacklist',
- 'selector-combinator-space-after',
- 'selector-combinator-space-before',
- 'selector-combinator-whitelist',
- 'selector-descendant-combinator-no-non-space',
- 'selector-id-pattern',
- 'selector-list-comma-newline-after',
- 'selector-list-comma-newline-before',
- 'selector-list-comma-space-after',
- 'selector-list-comma-space-before',
- 'selector-max-attribute',
- 'selector-max-class',
- 'selector-max-combinators',
- 'selector-max-compound-selectors',
- 'selector-max-empty-lines',
- 'selector-max-id',
- 'selector-max-pseudo-class',
- 'selector-max-specificity',
- 'selector-max-type',
- 'selector-max-universal',
- 'selector-nested-pattern',
- 'selector-no-qualifying-type',
- 'selector-no-vendor-prefix',
- 'selector-pseudo-class-blacklist',
- 'selector-pseudo-class-case',
- 'selector-pseudo-class-no-unknown',
- 'selector-pseudo-class-parentheses-space-inside',
- 'selector-pseudo-class-whitelist',
- 'selector-pseudo-element-blacklist',
- 'selector-pseudo-element-case',
- 'selector-pseudo-element-colon-notation',
- 'selector-pseudo-element-no-unknown',
- 'selector-pseudo-element-whitelist',
- 'selector-type-case',
- 'selector-type-no-unknown',
- 'shorthand-property-no-redundant-values',
- 'string-no-newline',
- 'string-quotes',
- 'time-min-milliseconds',
- 'unicode-bom',
- 'unit-blacklist',
- 'unit-case',
- 'unit-no-unknown',
- 'unit-whitelist',
- 'value-keyword-case',
- 'value-list-comma-newline-after',
- 'value-list-comma-newline-before',
- 'value-list-comma-space-after',
- 'value-list-comma-space-before',
- 'value-list-max-empty-lines',
- 'value-no-vendor-prefix',
- 'indentation' /* Placed here for better autofixing */,
-];
diff --git a/assets/node_modules/stylelint/lib/rules/keyframe-declaration-no-important/README.md b/assets/node_modules/stylelint/lib/rules/keyframe-declaration-no-important/README.md
deleted file mode 100644
index b933c00..0000000
--- a/assets/node_modules/stylelint/lib/rules/keyframe-declaration-no-important/README.md
+++ /dev/null
@@ -1,71 +0,0 @@
-# keyframe-declaration-no-important
-
-Disallow `!important` within keyframe declarations.
-
-```css
-@keyframes important2 {
- from { margin: 10px }
- to { margin: 20px !important }
-} /* ↑ */
-/** ↑
-* This !important */
-```
-
-Using `!important` within keyframes declarations is completely ignored in some browsers:
-[MDN - !important in a keyframe](https://developer.mozilla.org/en-US/docs/Web/CSS/@keyframes#!important_in_a_keyframe)
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-@keyframes important1 {
- from {
- margin-top: 50px;
- }
- to {
- margin-top: 100px !important;
- }
-}
-```
-
-```css
-@keyframes important1 {
- from {
- margin-top: 50px;
- }
- to {
- margin-top: 100px!important;
- }
-}
-```
-
-```css
-@keyframes important1 {
- from {
- margin-top: 50px;
- }
- to {
- margin-top: 100px ! important;
- }
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink !important; }
-```
-
-```css
-@keyframes important1 {
- from {
- margin-top: 50px;
- }
- to {
- margin-top: 100px;
- }
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/keyframe-declaration-no-important/index.js b/assets/node_modules/stylelint/lib/rules/keyframe-declaration-no-important/index.js
deleted file mode 100644
index 20d2bc5..0000000
--- a/assets/node_modules/stylelint/lib/rules/keyframe-declaration-no-important/index.js
+++ /dev/null
@@ -1,41 +0,0 @@
-'use strict';
-
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'keyframe-declaration-no-important';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected !important',
-});
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules(/^(-(moz|webkit)-)?keyframes$/i, (atRuleKeyframes) => {
- atRuleKeyframes.walkDecls((decl) => {
- if (!decl.important) {
- return;
- }
-
- report({
- message: messages.rejected,
- node: decl,
- word: 'important',
- result,
- ruleName,
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/keyframes-name-pattern/README.md b/assets/node_modules/stylelint/lib/rules/keyframes-name-pattern/README.md
deleted file mode 100644
index 6b379ee..0000000
--- a/assets/node_modules/stylelint/lib/rules/keyframes-name-pattern/README.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# keyframes-name-pattern
-
-Specify a pattern for keyframe names.
-
-```css
-@keyframes slide-right {}
-/** ↑
- * The pattern of this */
-```
-
-## Options
-
-`regex|string`
-
-A string will be translated into a RegExp like so `new RegExp(yourString)` — so be sure to escape properly.
-
-Given the string:
-
-```js
-"foo-.+"
-```
-
-The following patterns are considered violations:
-
-```css
-@keyframes foo {}
-```
-
-```css
-@keyframes bar {}
-```
-
-```css
-@keyframes FOO-bar {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@keyframes foo-bar {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/keyframes-name-pattern/index.js b/assets/node_modules/stylelint/lib/rules/keyframes-name-pattern/index.js
deleted file mode 100644
index 36f32aa..0000000
--- a/assets/node_modules/stylelint/lib/rules/keyframes-name-pattern/index.js
+++ /dev/null
@@ -1,48 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'keyframes-name-pattern';
-
-const messages = ruleMessages(ruleName, {
- expected: (keyframeName) => `Expected keyframe name "${keyframeName}" to match specified pattern`,
-});
-
-function rule(pattern) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: pattern,
- possible: [_.isRegExp, _.isString],
- });
-
- if (!validOptions) {
- return;
- }
-
- const regex = _.isString(pattern) ? new RegExp(pattern) : pattern;
-
- root.walkAtRules(/keyframes/i, (keyframesNode) => {
- const value = keyframesNode.params;
-
- if (regex.test(value)) {
- return;
- }
-
- report({
- index: atRuleParamIndex(keyframesNode),
- message: messages.expected(value),
- node: keyframesNode,
- ruleName,
- result,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/length-zero-no-unit/README.md b/assets/node_modules/stylelint/lib/rules/length-zero-no-unit/README.md
deleted file mode 100644
index bf5858b..0000000
--- a/assets/node_modules/stylelint/lib/rules/length-zero-no-unit/README.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# length-zero-no-unit
-
-Disallow units for zero lengths.
-
-```css
-a { top: 0px; }
-/** ↑↑
- * This zero and this type of length unit */
-```
-
-*Lengths* refer to distance measurements. A length is a *dimension*, which is a *number* immediately followed by a *unit identifier*. However, for zero lengths the unit identifier is optional. The length units are: `em`, `ex`, `ch`, `vw`, `vh`, `cm`, `mm`, `in`, `pt`, `pc`, `px`, `rem`, `vmin`, and `vmax`.
-
-This rule ignores lengths within math functions (e.g. `calc`) in favor of the [`function-calc-no-invalid`](../function-calc-no-invalid/README.md) rule.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a { top: 0px }
-```
-
-```css
-a { top: 0.000em }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { top: 0 } /* no unit */
-```
-
-```css
-a { transition-delay: 0s; } /* dimension */
-```
-
-```css
-a { top: 2in; }
-```
-
-```css
-a { top: 1.001vh }
-```
-
-## Optional secondary options
-
-### `ignore: ["custom-properties"]`
-
-#### `"custom-properties"`
-
-Ignore units for zero length in custom properties.
-
-The following pattern is *not* considered a violation:
-
-```css
-a { --x: 0px; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/length-zero-no-unit/index.js b/assets/node_modules/stylelint/lib/rules/length-zero-no-unit/index.js
deleted file mode 100644
index 656a483..0000000
--- a/assets/node_modules/stylelint/lib/rules/length-zero-no-unit/index.js
+++ /dev/null
@@ -1,198 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const beforeBlockString = require('../../utils/beforeBlockString');
-const blurComments = require('../../utils/blurComments');
-const hasBlock = require('../../utils/hasBlock');
-const isCustomProperty = require('../../utils/isCustomProperty');
-const isLessVariable = require('../../utils/isLessVariable');
-const isMathFunction = require('../../utils/isMathFunction');
-const keywordSets = require('../../reference/keywordSets');
-const optionsMatches = require('../../utils/optionsMatches');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'length-zero-no-unit';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected unit',
-});
-
-function rule(actual, secondary, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- if (decl.prop.toLowerCase() === 'line-height') {
- return;
- }
-
- const stringValue = blurComments(decl.toString());
- const ignorableIndexes = new Array(stringValue.length).fill(false);
- const parsedValue = valueParser(stringValue);
-
- parsedValue.walk((node, nodeIndex) => {
- if (decl.prop.toLowerCase() === 'font' && node.type === 'div' && node.value === '/') {
- const lineHeightNode = parsedValue.nodes[nodeIndex + 1];
- const lineHeightNodeValue = valueParser.stringify(lineHeightNode);
-
- for (let i = 0; i < lineHeightNodeValue.length; i++) {
- ignorableIndexes[lineHeightNode.sourceIndex + i] = true;
- }
-
- return;
- }
-
- if (node.type !== 'function') {
- return;
- }
-
- const stringValue = valueParser.stringify(node);
- const ignoreFlag = isMathFunction(node);
-
- for (let i = 0; i < stringValue.length; i++) {
- ignorableIndexes[node.sourceIndex + i] = ignoreFlag;
- }
- });
-
- check(stringValue, decl, ignorableIndexes);
- });
-
- root.walkAtRules((atRule) => {
- // Ignore Less variables
- if (isLessVariable(atRule)) {
- return;
- }
-
- const source = hasBlock(atRule)
- ? beforeBlockString(atRule, { noRawBefore: true })
- : atRule.toString();
-
- check(source, atRule);
- });
-
- function check(value, node, ignorableIndexes = []) {
- if (optionsMatches(secondary, 'ignore', 'custom-properties') && isCustomProperty(value)) {
- return;
- }
-
- const fixPositions = [];
-
- styleSearch({ source: value, target: '0' }, (match) => {
- const index = match.startIndex;
-
- // Given a 0 somewhere in the full property value (not in a string, thanks
- // to styleSearch) we need to isolate the value that contains the zero.
- // To do so, we'll find the last index before the 0 of a character that would
- // divide one value in a list from another, and the next index of such a
- // character; then we build a substring from those indexes, which we can
- // assess.
-
- // If a single value includes multiple 0's (e.g. 100.01px), we don't want
- // each 0 to be treated as a separate value, possibly resulting in multiple
- // warnings for the same value (e.g. 0.00px).
- //
- // This check prevents that from happening: we build and check against a
- // Set containing all the indexes that are part of a value already validated.
- if (ignorableIndexes[index]) {
- return;
- }
-
- const prevValueBreakIndex = _.findLastIndex(value.substr(0, index), (char) => {
- return [' ', ',', ')', '(', '#', ':', '\n', '\t'].includes(char);
- });
-
- // Ignore hex colors
- if (value[prevValueBreakIndex] === '#') {
- return;
- }
-
- // If no prev break was found, this value starts at 0
- const valueWithZeroStart = prevValueBreakIndex === -1 ? 0 : prevValueBreakIndex + 1;
-
- const nextValueBreakIndex = _.findIndex(value.substr(valueWithZeroStart), (char) => {
- return [' ', ',', ')', '/'].includes(char);
- });
-
- // If no next break was found, this value ends at the end of the string
- const valueWithZeroEnd =
- nextValueBreakIndex === -1 ? value.length : nextValueBreakIndex + valueWithZeroStart;
-
- const valueWithZero = value.slice(valueWithZeroStart, valueWithZeroEnd);
- const parsedValue = valueParser.unit(valueWithZero);
-
- if (!parsedValue || (parsedValue && !parsedValue.unit)) {
- return;
- }
-
- if (parsedValue.unit.toLowerCase() === 'fr') {
- return;
- }
-
- // Add the indexes to ignorableIndexes so the same value will not
- // be checked multiple times.
- _.range(valueWithZeroStart, valueWithZeroEnd).forEach((i) => (ignorableIndexes[i] = true));
-
- // Only pay attention if the value parses to 0
- // and units with lengths
- if (
- parseFloat(valueWithZero) !== 0 ||
- !keywordSets.lengthUnits.has(parsedValue.unit.toLowerCase())
- ) {
- return;
- }
-
- if (context.fix) {
- fixPositions.unshift({
- startIndex: valueWithZeroStart,
- length: valueWithZeroEnd - valueWithZeroStart,
- });
-
- return;
- }
-
- report({
- message: messages.rejected,
- node,
- index: valueWithZeroEnd - parsedValue.unit.length,
- result,
- ruleName,
- });
- });
-
- if (fixPositions.length) {
- fixPositions.forEach(function(fixPosition) {
- if (node.type === 'atrule') {
- // Use `-1` for `@` character before each at rule
- const realIndex =
- fixPosition.startIndex - node.name.length - node.raws.afterName.length - 1;
-
- node.params = replaceZero(node.params, realIndex, fixPosition.length);
- } else {
- const realIndex = fixPosition.startIndex - node.prop.length - node.raws.between.length;
-
- node.value = replaceZero(node.value, realIndex, fixPosition.length);
- }
- });
- }
- }
- };
-}
-
-function replaceZero(input, startIndex, length) {
- const stringStart = input.slice(0, startIndex);
- const stringEnd = input.slice(startIndex + length);
-
- return `${stringStart}0${stringEnd}`;
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/linebreaks/README.md b/assets/node_modules/stylelint/lib/rules/linebreaks/README.md
deleted file mode 100644
index e6603e2..0000000
--- a/assets/node_modules/stylelint/lib/rules/linebreaks/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# linebreaks
-
-Specify unix or windows linebreaks.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"unix"|"windows"`
-
-### `"unix"`
-
-Linebreaks _must always_ be LF (`\n`).
-
-Lines with CRLF linebreaks are considered violations.
-
-### `"windows"`
-
-Linebreaks _must always_ be CRLF (`\r\n`).
-
-Lines with LF linebreaks are considered violations.
diff --git a/assets/node_modules/stylelint/lib/rules/linebreaks/index.js b/assets/node_modules/stylelint/lib/rules/linebreaks/index.js
deleted file mode 100644
index c576a87..0000000
--- a/assets/node_modules/stylelint/lib/rules/linebreaks/index.js
+++ /dev/null
@@ -1,107 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'linebreaks';
-
-const messages = ruleMessages(ruleName, {
- expected: (linebreak) => `Expected linebreak to be ${linebreak}`,
-});
-
-function rule(actual, secondary, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual,
- possible: ['unix', 'windows'],
- });
-
- if (!validOptions) {
- return;
- }
-
- const shouldHaveCR = actual === 'windows';
-
- if (context.fix) {
- const propertiesToUpdate = ['selector', 'raws.before', 'raws.after', 'value', 'text'];
-
- root.walk((node) => {
- propertiesToUpdate.forEach((property) => {
- const fixedData = fixData(_.get(node, property), shouldHaveCR);
-
- _.set(node, property, fixedData);
- });
- });
-
- root.raws.after = fixData(root.raws.after, shouldHaveCR);
- } else {
- const lines = root.source.input.css.split('\n');
-
- for (let i = 0; i < lines.length; i++) {
- let line = lines[i];
-
- if (i < lines.length - 1 && !line.includes('\r')) {
- line += '\n';
- }
-
- if (hasError(line, shouldHaveCR)) {
- const lineNum = i + 1;
- const colNum = line.length;
-
- reportNewlineError(shouldHaveCR, lineNum, colNum, actual, result);
- }
- }
- }
-
- function hasError(dataToCheck, shouldHaveCR) {
- const hasNewlineToVerify = /[\r\n]/.test(dataToCheck);
- const hasCR = hasNewlineToVerify ? /\r/.test(dataToCheck) : false;
-
- return hasNewlineToVerify && hasCR !== shouldHaveCR;
- }
-
- function fixData(data, shouldHaveCR) {
- if (data) {
- let result = data.replace(/\r/g, '');
-
- if (shouldHaveCR) {
- result = result.replace(/\n/g, '\r\n');
- }
-
- return result;
- }
-
- return data;
- }
-
- function createReportNode(line, column) {
- // Creating a node manually helps us to point to empty lines.
- return postcss.rule({
- source: {
- start: {
- line,
- column,
- },
- },
- });
- }
-
- function reportNewlineError(shouldHaveCR, lineNum, colNum, actual, result) {
- const reportNode = createReportNode(lineNum, colNum);
-
- report({
- message: messages.expected(actual),
- node: reportNode,
- result,
- ruleName,
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/max-empty-lines/README.md b/assets/node_modules/stylelint/lib/rules/max-empty-lines/README.md
deleted file mode 100644
index 229a100..0000000
--- a/assets/node_modules/stylelint/lib/rules/max-empty-lines/README.md
+++ /dev/null
@@ -1,107 +0,0 @@
-# max-empty-lines
-
-Limit the number of adjacent empty lines.
-
-```css
-a {}
- /* ← */
- /* ← */
-a {} /* ↑ */
-/** ↑
- * These lines */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`int`: Maximum number of adjacent empty lines allowed.
-
-For example, with `2`:
-
-The following patterns are considered violations:
-
-```css
-a {}
-
-
-
-b {}
-```
-
-Comment strings are also checked -- so the following is a violation:
-
-```css
-/*
- Call me Ishmael.
-
-
-
- Some years ago -- never mind how log precisely -- ...
- */
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {}
-b {}
-```
-
-```css
-a {}
-
-b {}
-```
-
-```css
-a {}
-
-
-b {}
-```
-
-## Optional secondary options
-
-### `ignore: ["comments"]`
-
-Only enforce the adjacent empty lines limit for lines that are not comments.
-
-For example, with `2` adjacent empty lines:
-
-The following patterns are considered violations:
-
-```css
-/* horse */
-a {}
-
-
-
-b {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-/*
- Call me Ishmael.
-
-
-
- Some years ago -- never mind how long precisely -- ...
- */
-```
-
-```css
-a {
- /*
- Comment
-
-
-
-
- inside the declaration with a lot of empty lines...
- */
- color: pink;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/max-empty-lines/index.js b/assets/node_modules/stylelint/lib/rules/max-empty-lines/index.js
deleted file mode 100644
index 622b1a0..0000000
--- a/assets/node_modules/stylelint/lib/rules/max-empty-lines/index.js
+++ /dev/null
@@ -1,213 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const optionsMatches = require('../../utils/optionsMatches');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'max-empty-lines';
-
-const messages = ruleMessages(ruleName, {
- expected: (max) => `Expected no more than ${max} empty ${max === 1 ? 'line' : 'lines'}`,
-});
-
-function rule(max, options, context) {
- let emptyLines = 0;
- let lastIndex = -1;
-
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: max,
- possible: _.isNumber,
- },
- {
- actual: options,
- possible: {
- ignore: ['comments'],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- const ignoreComments = optionsMatches(options, 'ignore', 'comments');
- const getChars = _.partial(replaceEmptyLines, max);
-
- /**
- * 1. walk nodes & replace enterchar
- * 2. deal with special case.
- */
- if (context.fix) {
- root.walk((node) => {
- if (node.type === 'comment') {
- // for inline comments
- if (node.raws.inline) {
- node.raws.before = getChars(node.raws.before);
- }
-
- if (!ignoreComments) {
- node.raws.left = getChars(node.raws.left);
- node.raws.right = getChars(node.raws.right);
- }
- } else {
- if (node.raws.before) {
- node.raws.before = getChars(node.raws.before);
- }
-
- if (node.raws.after) {
- node.raws.after = getChars(node.raws.after);
- }
- }
- });
-
- // first node
- const firstNodeRawsBefore = _.get(root, 'first.raws.before');
- // root raws
- const rootRawsAfter = _.get(root, 'raws.after');
-
- // not document node
- if (_.get(root, 'document.constructor.name') !== 'Document') {
- if (firstNodeRawsBefore) {
- _.set(root, 'first.raws.before', getChars(firstNodeRawsBefore, true));
- }
-
- if (rootRawsAfter) {
- // when max setted 0, should be treated as 1 in this situation.
- _.set(root, 'raws.after', replaceEmptyLines(max === 0 ? 1 : max, rootRawsAfter, true));
- }
- } else if (rootRawsAfter) {
- // `css in js` or `html`
- _.set(root, 'raws.after', replaceEmptyLines(max === 0 ? 1 : max, rootRawsAfter));
- }
-
- return;
- }
-
- emptyLines = 0;
- lastIndex = -1;
- const rootString = root.toString();
-
- styleSearch(
- {
- source: rootString,
- target: /\r\n/.test(rootString) ? '\r\n' : '\n',
- comments: ignoreComments ? 'skip' : 'check',
- },
- (match) => {
- checkMatch(rootString, match.startIndex, match.endIndex, root);
- },
- );
-
- function checkMatch(source, matchStartIndex, matchEndIndex, node) {
- const eof = matchEndIndex === source.length;
- let violation = false;
-
- // Additional check for beginning of file
- if (!matchStartIndex || lastIndex === matchStartIndex) {
- emptyLines++;
- } else {
- emptyLines = 0;
- }
-
- lastIndex = matchEndIndex;
-
- if (emptyLines > max) violation = true;
-
- if (!eof && !violation) return;
-
- if (violation) {
- report({
- message: messages.expected(max),
- node,
- index: matchStartIndex,
- result,
- ruleName,
- });
- }
-
- // Additional check for end of file
- if (eof && max) {
- emptyLines++;
-
- if (emptyLines > max && isEofNode(result.root, node)) {
- report({
- message: messages.expected(max),
- node,
- index: matchEndIndex,
- result,
- ruleName,
- });
- }
- }
- }
-
- function replaceEmptyLines(max, str, isSpecialCase = false) {
- const repeatTimes = isSpecialCase ? max : max + 1;
-
- if (repeatTimes === 0) {
- return '';
- }
-
- const emptyLFLines = '\n'.repeat(repeatTimes);
- const emptyCRLFLines = '\r\n'.repeat(repeatTimes);
-
- let result;
-
- if (/(\r\n)+/g.test(str)) {
- result = str.replace(/(\r\n)+/g, ($1) => {
- if ($1.length / 2 > repeatTimes) {
- return emptyCRLFLines;
- }
-
- return $1;
- });
- } else {
- result = str.replace(/(\n)+/g, ($1) => {
- if ($1.length > repeatTimes) {
- return emptyLFLines;
- }
-
- return $1;
- });
- }
-
- return result;
- }
- };
-}
-
-/**
- * Checks whether the given node is the last node of file.
- * @param {Document|null} document the document node with `postcss-html` and `postcss-jsx`.
- * @param {Root} root the root node of css
- */
-function isEofNode(document, root) {
- if (!document || document.constructor.name !== 'Document') {
- return true;
- }
-
- // In the `postcss-html` and `postcss-jsx` syntax, checks that there is text after the given node.
- let after;
-
- if (root === document.last) {
- after = _.get(document, 'raws.afterEnd');
- } else {
- const rootIndex = document.index(root);
-
- after = _.get(document.nodes[rootIndex + 1], 'raws.beforeStart');
- }
-
- return !String(after).trim();
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/max-line-length/README.md b/assets/node_modules/stylelint/lib/rules/max-line-length/README.md
deleted file mode 100644
index 3ccedc3..0000000
--- a/assets/node_modules/stylelint/lib/rules/max-line-length/README.md
+++ /dev/null
@@ -1,138 +0,0 @@
-# max-line-length
-
-Limit the length of a line.
-
-```css
-a { color: red }
-/** ↑
- * The end */
-```
-
-Lines that exceed the maximum length but contain no whitespace (other than at the beginning of the line) are ignored.
-
-When evaluating the line length, the arguments of any `url(...)` functions are excluded from the calculation, because typically you have no control over the length of these arguments. This means that long `url()` functions should not contribute to violations.
-
-## Options
-
-`int`: Maximum number of characters allowed.
-
-For example, with `20`:
-
-The following patterns are considered violations:
-
-```css
-a { color: 0; top: 0; }
-```
-
-```css
-a {
- background: linear-gradient(red, blue);
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- color: 0;
- top: 0;
-}
-```
-
-```css
-a {
- background: url(a-url-that-is-over-20-characters-long);
-}
-```
-
-## Optional secondary options
-
-### `ignore: ["non-comments"]`
-
-Only enforce the line-length limit for lines within comments.
-
-This does not apply to comments that are stuck in between other stuff, only to lines that begin at the beginning or in the middle of a comment.
-
-For example, with a maximum length of `30`.
-
-The following patterns are considered violations:
-
-Each have only one violation.
-
-```css
-/* This line is too long for my rule */
-a { color: pink; background: orange; }
-a { color: pink; /* this comment is also long but not on its own line */ }
-```
-
-```css
-a { color: pink; background: orange; }
-/**
- * This line is short,
- * but this line is too long for my liking,
- * though this one is fine
- */
-a { color: pink; /* this comment is also long but not on its own line */ }
-```
-
-### `ignore: ["comments"]`
-
-Only enforce the line-length limit for lines that are not comments.
-
-This also applies to comments that are between code on the same line.
-
-For example, with a maximum length of `30`.
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; } /* comment that is too long */
-```
-
-```css
-a { /* this comment is too long for the max length */ }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-/* comment that is too long for my rule*/
-a { color: pink; }
-```
-
-```css
-/*
- * comment that is too long the max length
- * comment that is too long the max length
- *
- */
-a { color: pink; }
-```
-
-### `ignorePattern: "/regex/"`
-
-Ignore any line that matches the given regex pattern, regardless of whether it is comment or not. The regex may be passed as a string (for JSON configuration) by enclosing in forward-slashes, or an ordinary JavaScript RegExp may be used.
-
-Given:
-
-```js
-"/^@import\\s+/"
-```
-
-The following pattern is *not* considered a violation:
-
-```css
-@import "../../../../another/css/or/scss/file/or/something.css";
-```
-
-Given the following, with a maximum length of `20`.
-
-```js
-["/https?:\/\/[0-9,a-z]*.*/"]
-```
-
-The following pattern is *not* considered a violation:
-
-```css
-/* ignore urls https://www.example.com */
-```
diff --git a/assets/node_modules/stylelint/lib/rules/max-line-length/index.js b/assets/node_modules/stylelint/lib/rules/max-line-length/index.js
deleted file mode 100644
index fc8312d..0000000
--- a/assets/node_modules/stylelint/lib/rules/max-line-length/index.js
+++ /dev/null
@@ -1,187 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const execall = require('execall');
-const optionsMatches = require('../../utils/optionsMatches');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'max-line-length';
-const EXCLUDED_PATTERNS = [
- /url\(\s*([^\s].*[^\s])\s*\)/gi, // allow tab, whitespace in url content
- /@import\s+(['"].*['"])/gi,
-];
-
-const messages = ruleMessages(ruleName, {
- expected: (max) =>
- `Expected line length to be no more than ${max} ${max === 1 ? 'character' : 'characters'}`,
-});
-
-function rule(maxLength, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: maxLength,
- possible: _.isNumber,
- },
- {
- actual: options,
- possible: {
- ignore: ['non-comments', 'comments'],
- ignorePattern: [_.isString, _.isRegExp],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- const ignoreNonComments = optionsMatches(options, 'ignore', 'non-comments');
- const ignoreComments = optionsMatches(options, 'ignore', 'comments');
- const rootString = context.fix ? root.toString() : root.source.input.css;
- // Array of skipped sub strings, i.e `url(...)`, `@import "..."`
- let skippedSubStrings = [];
- let skippedSubStringsIndex = 0;
-
- EXCLUDED_PATTERNS.forEach((pattern) =>
- execall(pattern, rootString).forEach((match) => {
- const startOfSubString =
- match.index + match.match.indexOf(_.get(match, 'subMatches[0]', ''));
-
- return skippedSubStrings.push([
- startOfSubString,
- startOfSubString + _.get(match, 'subMatches[0].length', 0),
- ]);
- }),
- );
-
- skippedSubStrings = skippedSubStrings.sort((a, b) => a[0] - b[0]);
-
- // Check first line
- checkNewline(rootString, { endIndex: 0 }, root);
- // Check subsequent lines
- styleSearch({ source: rootString, target: ['\n'], comments: 'check' }, (match) =>
- checkNewline(rootString, match, root),
- );
-
- function complain(index, root) {
- report({
- index,
- result,
- ruleName,
- message: messages.expected(maxLength),
- node: root,
- });
- }
-
- function tryToPopSubString(start, end) {
- const [startSubString, endSubString] = skippedSubStrings[skippedSubStringsIndex];
-
- // Excluded substring does not presented in current line
- if (end < startSubString) {
- return 0;
- }
-
- // Compute excluded substring size regarding to current line indexes
- const excluded = Math.min(end, endSubString) - Math.max(start, startSubString);
-
- // Current substring is out of range for next lines
- if (endSubString <= end) {
- skippedSubStringsIndex++;
- }
-
- return excluded;
- }
-
- function checkNewline(rootString, match, root) {
- let nextNewlineIndex = rootString.indexOf('\n', match.endIndex);
-
- if (rootString[nextNewlineIndex - 1] === '\r') {
- nextNewlineIndex -= 1;
- }
-
- // Accommodate last line
- if (nextNewlineIndex === -1) {
- nextNewlineIndex = rootString.length;
- }
-
- const rawLineLength = nextNewlineIndex - match.endIndex;
- const excludedLength = skippedSubStrings[skippedSubStringsIndex]
- ? tryToPopSubString(match.endIndex, nextNewlineIndex)
- : 0;
- const lineText = rootString.slice(match.endIndex, nextNewlineIndex);
-
- // Case sensitive ignorePattern match
- if (optionsMatches(options, 'ignorePattern', lineText)) {
- return;
- }
-
- // If the line's length is less than or equal to the specified
- // max, ignore it ... So anything below is liable to be complained about.
- // **Note that the length of any url arguments or import urls
- // are excluded from the calculation.**
- if (rawLineLength - excludedLength <= maxLength) {
- return;
- }
-
- const complaintIndex = nextNewlineIndex - 1;
-
- if (ignoreComments) {
- if (match.insideComment) {
- return;
- }
-
- // This trimming business is to notice when the line starts a
- // comment but that comment is indented, e.g.
- // /* something here */
- const nextTwoChars = rootString
- .slice(match.endIndex)
- .trim()
- .slice(0, 2);
-
- if (nextTwoChars === '/*' || nextTwoChars === '//') {
- return;
- }
- }
-
- if (ignoreNonComments) {
- if (match.insideComment) {
- return complain(complaintIndex, root);
- }
-
- // This trimming business is to notice when the line starts a
- // comment but that comment is indented, e.g.
- // /* something here */
- const nextTwoChars = rootString
- .slice(match.endIndex)
- .trim()
- .slice(0, 2);
-
- if (nextTwoChars !== '/*' && nextTwoChars !== '//') {
- return;
- }
-
- return complain(complaintIndex, root);
- }
-
- // If there are no spaces besides initial (indent) spaces, ignore it
- const lineString = rootString.slice(match.endIndex, nextNewlineIndex);
-
- if (!lineString.replace(/^\s+/, '').includes(' ')) {
- return;
- }
-
- return complain(complaintIndex, root);
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/max-nesting-depth/README.md b/assets/node_modules/stylelint/lib/rules/max-nesting-depth/README.md
deleted file mode 100644
index a466a46..0000000
--- a/assets/node_modules/stylelint/lib/rules/max-nesting-depth/README.md
+++ /dev/null
@@ -1,328 +0,0 @@
-# max-nesting-depth
-
-Limit the depth of nesting.
-
-```css
-a { & > b { top: 0; } }
-/** ↑
- * This nesting */
-```
-
-This rule works by checking rules' and at-rules' actual "nesting depth" against your specified max. Here's how nesting depths works:
-
-```css
-a {
- & b { /* nesting depth 1 */
- & .foo { /* nesting depth 2 */
- @media print { /* nesting depth 3 */
- & .baz { /* nesting depth 4 */
- color: pink;
- }
- }
- }
- }
-}
-```
-
-Note that **root-level at-rules will *not* be included in the nesting depth calculation**, because most users would take for granted that root-level at-rules are "free" (because necessary). So both of the following `.foo` rules have a nesting depth of 2, and will therefore pass if your `max` is less than or equal to 2:
-
-```css
-a {
- b { /* 1 */
- .foo {} /* 2 */
- }
-}
-
-@media print { /* ignored */
- a {
- b { /* 1 */
- .foo {} /* 2 */
- }
- }
-}
-```
-
-This rule integrates into stylelint's core the functionality of the (now deprecated) plugin [`stylelint-statement-max-nesting-depth`](https://github.com/davidtheclark/stylelint-statement-max-nesting-depth).
-
-## Options
-
-`int`: Maximum nesting depth allowed.
-
-For example, with `2`:
-
-The following patterns are considered violations:
-
-```css
-a {
- & .foo { /* 1 */
- &__foo { /* 2 */
- & > .bar {} /* 3 */
- }
- }
-}
-```
-
-```css
-a {
- @media print { /* 1 */
- & .foo { /* 2 */
- & .bar {} /* 3 */
- }
- }
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- & .foo { /* 1 */
- &__foo {} /* 2 */
- }
-}
-
-a .foo__foo .bar .baz {}
-```
-
-```css
-@media print {
- a {
- & .foo { /* 1 */
- &__foo {} /* 2 */
- }
- }
-}
-```
-
-## Optional secondary options
-
-### `ignore: ["blockless-at-rules"]`
-
-Ignore at-rules that only wrap other rules, and do not themselves have declaration blocks.
-
-For example, with `1`:
-
-The following patterns are considered violations:
-
-As the at-rules have a declarations blocks.
-
-```css
-a {
- &:hover { /* 1 */
- @media (min-width: 500px) { color: pink; } /* 2 */
- }
-}
-```
-
-```css
-a {
- @nest > b { /* 1 */
- .foo { color: pink; } /* 2 */
- }
-}
-```
-
-The following patterns are *not* considered violations:
-
-As all of the following `.foo` rules would have a nesting depth of just 1.
-
-```css
-a {
- .foo { color: pink; } /* 1 */
-}
-```
-
-```css
-@media print { /* ignored regardless of options */
- a {
- .foo { color: pink; } /* 1 */
- }
-}
-```
-
-```css
-a {
- @media print { /* ignored because it's an at-rule without a declaration block of its own */
- .foo { color: pink; } /* 1 */
- }
-}
-```
-
-### `ignore: ["pseudo-classes"]`
-
-Ignore rules where the first selector in each selector list item is a pseudo-class
-
-For example, with `1`:
-
-The following patterns are considered violations:
-
-```css
-.a {
- .b { /* 1 */
- .c { /* 2 */
- top: 0;
- }
- }
-}
-```
-
-```css
-.a {
- &:hover { /* ignored */
- .b { /* 1 */
- .c { /* 2 */
- top: 0;
- }
- }
- }
-}
-```
-
-```css
-.a {
- .b { /* 1 */
- &::selection { /* 2 */
- color: #64FFDA;
- }
- }
-}
-```
-
-```css
-.a {
- .b { /* 1 */
- &:hover, .c { /* 2 */
- top: 0;
- }
- }
-}
-```
-
-The following patterns are *not* considered violations:
-
-As all of the following pseudoclasses rules would have a nesting depth of just 1.
-
-```css
-.a {
- .b { /* 1 */
- &:hover { /* ignored */
- top: 0;
- }
- }
-}
-```
-
-```css
-.a {
- .b { /* 1 */
- &:nest {
- &:nest-lvl2 { /* ignored */
- top: 0;
- }
- }
- }
-}
-```
-
-```css
-.a {
- &:hover { /* ignored */
- .b { /* 1 */
- top: 0;
- }
- }
-}
-```
-
-```css
-.a {
- &:nest { /* ignored */
- &:nest-lvl2 { /* ignored */
- top: 0;
- .b { /* 1 */
- bottom: 0;
- }
- }
- }
-}
-```
-
-```css
-.a {
- .b { /* 1 */
- &:hover, &:focus { /* ignored */
- top: 0;
- }
- }
-}
-```
-
-### `ignoreAtRules: ["/regex/", /regex/, "string"]`
-
-Ignore the specified at-rules.
-
-For example, with `1` and given:
-
-```js
-["/^my-/", "media"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- @media print { /* 1 */
- b { /* 2 */
- c { top: 0; } /* 3 */
- }
- }
-}
-```
-
-```css
-a {
- b { /* 1 */
- @media print { /* 2 */
- c { top: 0; } /* 3 */
- }
- }
-}
-```
-
-```css
-a {
- @my-at-rule print { /* 1 */
- b { /* 2 */
- c { top: 0; } /* 3 */
- }
- }
-}
-```
-
-```css
-a {
- @my-other-at-rule print { /* 1 */
- b { /* 2 */
- c { top: 0; } /* 3 */
- }
- }
-}
-```
-
-The following patterns are considered violations:
-
-```css
-a {
- @import print { /* 1 */
- b { top: 0; } /* 2 */
- }
-}
-```
-
-```css
-a {
- @not-my-at-rule print { /* 1 */
- b { top: 0; } /* 2 */
- }
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/max-nesting-depth/index.js b/assets/node_modules/stylelint/lib/rules/max-nesting-depth/index.js
deleted file mode 100644
index 5f06244..0000000
--- a/assets/node_modules/stylelint/lib/rules/max-nesting-depth/index.js
+++ /dev/null
@@ -1,112 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const hasBlock = require('../../utils/hasBlock');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const optionsMatches = require('../../utils/optionsMatches');
-const parser = require('postcss-selector-parser');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'max-nesting-depth';
-
-const messages = ruleMessages(ruleName, {
- expected: (depth) => `Expected nesting depth to be no more than ${depth}`,
-});
-
-function rule(max, options) {
- const isIgnoreAtRule = (node) =>
- node.type === 'atrule' && optionsMatches(options, 'ignoreAtRules', node.name);
-
- return (root, result) => {
- validateOptions(
- result,
- ruleName,
- {
- actual: max,
- possible: [_.isNumber],
- },
- {
- optional: true,
- actual: options,
- possible: {
- ignore: ['blockless-at-rules', 'pseudo-classes'],
- ignoreAtRules: [_.isString, _.isRegExp],
- },
- },
- );
-
- root.walkRules(checkStatement);
- root.walkAtRules(checkStatement);
-
- function checkStatement(statement) {
- if (isIgnoreAtRule(statement)) {
- return;
- }
-
- if (!hasBlock(statement)) {
- return;
- }
-
- if (statement.selector && !isStandardSyntaxRule(statement)) {
- return;
- }
-
- const depth = nestingDepth(statement);
-
- if (depth > max) {
- report({
- ruleName,
- result,
- node: statement,
- message: messages.expected(max),
- });
- }
- }
- };
-
- function nestingDepth(node, level = 0) {
- const parent = node.parent;
-
- if (isIgnoreAtRule(parent)) {
- return 0;
- }
-
- // The nesting depth level's computation has finished
- // when this function, recursively called, receives
- // a node that is not nested -- a direct child of the
- // root node
- if (parent.type === 'root' || (parent.type === 'atrule' && parent.parent.type === 'root')) {
- return level;
- }
-
- function containsPseudoClassesOnly(selector) {
- const normalized = parser().processSync(selector, { lossless: false });
- const selectors = normalized.split(',');
-
- return selectors.every((selector) => selector.startsWith('&:') && selector[2] !== ':');
- }
-
- if (
- (optionsMatches(options, 'ignore', 'blockless-at-rules') &&
- node.type === 'atrule' &&
- node.every((child) => child.type !== 'decl')) ||
- (optionsMatches(options, 'ignore', 'pseudo-classes') &&
- node.type === 'rule' &&
- containsPseudoClassesOnly(node.selector))
- ) {
- return nestingDepth(parent, level);
- }
-
- // Unless any of the conditions above apply, we want to
- // add 1 to the nesting depth level and then check the parent,
- // continuing to add and move up the hierarchy
- // until we hit the root node
- return nestingDepth(parent, level + 1);
- }
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-colon-space-after/README.md b/assets/node_modules/stylelint/lib/rules/media-feature-colon-space-after/README.md
deleted file mode 100644
index a648937..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-colon-space-after/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# media-feature-colon-space-after
-
-Require a single space or disallow whitespace after the colon in media features.
-
-```css
-@media (max-width: 600px) {}
-/** ↑
- * The space after this colon */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a single space after the colon.
-
-The following patterns are considered violations:
-
-```css
-@media (max-width:600px) {}
-```
-
-```css
-@media (max-width :600px) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media (max-width: 600px) {}
-```
-
-```css
-@media (max-width : 600px) {}
-```
-
-### `"never"`
-
-There *must never* be whitespace after the colon.
-
-The following patterns are considered violations:
-
-```css
-@media (max-width: 600px) {}
-```
-
-```css
-@media (max-width : 600px) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media (max-width:600px) {}
-```
-
-```css
-@media (max-width :600px) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-colon-space-after/index.js b/assets/node_modules/stylelint/lib/rules/media-feature-colon-space-after/index.js
deleted file mode 100644
index 67fd71d..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-colon-space-after/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-'use strict';
-
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const mediaFeatureColonSpaceChecker = require('../mediaFeatureColonSpaceChecker');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'media-feature-colon-space-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected single space after ":"',
- rejectedAfter: () => 'Unexpected whitespace after ":"',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- let fixData;
-
- mediaFeatureColonSpaceChecker({
- root,
- result,
- locationChecker: checker.after,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (atRule, index) => {
- const paramColonIndex = index - atRuleParamIndex(atRule);
-
- fixData = fixData || new Map();
- const colonIndices = fixData.get(atRule) || [];
-
- colonIndices.push(paramColonIndex);
- fixData.set(atRule, colonIndices);
-
- return true;
- }
- : null,
- });
-
- if (fixData) {
- fixData.forEach((colonIndices, atRule) => {
- let params = atRule.raws.params ? atRule.raws.params.raw : atRule.params;
-
- colonIndices
- .sort((a, b) => b - a)
- .forEach((index) => {
- const beforeColon = params.slice(0, index + 1);
- const afterColon = params.slice(index + 1);
-
- if (expectation === 'always') {
- params = beforeColon + afterColon.replace(/^\s*/, ' ');
- } else if (expectation === 'never') {
- params = beforeColon + afterColon.replace(/^\s*/, '');
- }
- });
-
- if (atRule.raws.params) {
- atRule.raws.params.raw = params;
- } else {
- atRule.params = params;
- }
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-colon-space-before/README.md b/assets/node_modules/stylelint/lib/rules/media-feature-colon-space-before/README.md
deleted file mode 100644
index 0655652..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-colon-space-before/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# media-feature-colon-space-before
-
-Require a single space or disallow whitespace before the colon in media features.
-
-```css
-@media (max-width :600px) {}
-/** ↑
- * The space before this colon */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a single space before the colon.
-
-The following patterns are considered violations:
-
-```css
-@media (max-width:600px) {}
-```
-
-```css
-@media (max-width: 600px) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media (max-width :600px) {}
-```
-
-```css
-@media (max-width : 600px) {}
-```
-
-### `"never"`
-
-There *must never* be whitespace before the colon.
-
-The following patterns are considered violations:
-
-```css
-@media (max-width :600px) {}
-```
-
-```css
-@media (max-width : 600px) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media (max-width:600px) {}
-```
-
-```css
-@media (max-width: 600px) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-colon-space-before/index.js b/assets/node_modules/stylelint/lib/rules/media-feature-colon-space-before/index.js
deleted file mode 100644
index e07e1bb..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-colon-space-before/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-'use strict';
-
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const mediaFeatureColonSpaceChecker = require('../mediaFeatureColonSpaceChecker');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'media-feature-colon-space-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected single space before ":"',
- rejectedBefore: () => 'Unexpected whitespace before ":"',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- let fixData;
-
- mediaFeatureColonSpaceChecker({
- root,
- result,
- locationChecker: checker.before,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (atRule, index) => {
- const paramColonIndex = index - atRuleParamIndex(atRule);
-
- fixData = fixData || new Map();
- const colonIndices = fixData.get(atRule) || [];
-
- colonIndices.push(paramColonIndex);
- fixData.set(atRule, colonIndices);
-
- return true;
- }
- : null,
- });
-
- if (fixData) {
- fixData.forEach((colonIndices, atRule) => {
- let params = atRule.raws.params ? atRule.raws.params.raw : atRule.params;
-
- colonIndices
- .sort((a, b) => b - a)
- .forEach((index) => {
- const beforeColon = params.slice(0, index);
- const afterColon = params.slice(index);
-
- if (expectation === 'always') {
- params = beforeColon.replace(/\s*$/, ' ') + afterColon;
- } else if (expectation === 'never') {
- params = beforeColon.replace(/\s*$/, '') + afterColon;
- }
- });
-
- if (atRule.raws.params) {
- atRule.raws.params.raw = params;
- } else {
- atRule.params = params;
- }
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-name-blacklist/README.md b/assets/node_modules/stylelint/lib/rules/media-feature-name-blacklist/README.md
deleted file mode 100644
index b7103e9..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-name-blacklist/README.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# media-feature-name-blacklist
-
-Specify a blacklist of disallowed media feature names.
-
-```css
-@media (min-width: 700px) {}
-/** ↑
- * This media feature name */
-```
-
-**Caveat:** Media feature names within a range context are currently ignored.
-
-## Options
-
-`array|string|regex`: `["array", "of", "unprefixed", /media-features/ or "regex"]|"media-feature"|/regex/`
-
-Given:
-
-```js
-["max-width", "/^my-/"]
-```
-
-The following patterns are considered violations:
-
-```css
-@media (max-width: 50em) {}
-```
-
-```css
-@media (my-width: 50em) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media (min-width: 50em) {}
-```
-
-```css
-@media print and (min-resolution: 300dpi) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-name-blacklist/index.js b/assets/node_modules/stylelint/lib/rules/media-feature-name-blacklist/index.js
deleted file mode 100644
index 9c610c0..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-name-blacklist/index.js
+++ /dev/null
@@ -1,65 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const isCustomMediaQuery = require('../../utils/isCustomMediaQuery');
-const isRangeContextMediaFeature = require('../../utils/isRangeContextMediaFeature');
-const isStandardSyntaxMediaFeatureName = require('../../utils/isStandardSyntaxMediaFeatureName');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const mediaParser = require('postcss-media-query-parser').default;
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'media-feature-name-blacklist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (name) => `Unexpected media feature name "${name}"`,
-});
-
-function rule(blacklist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: blacklist,
- possible: [_.isString, _.isRegExp],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules(/^media$/i, (atRule) => {
- mediaParser(atRule.params).walk(/^media-feature$/i, (mediaFeatureNode) => {
- const parent = mediaFeatureNode.parent;
- const sourceIndex = mediaFeatureNode.sourceIndex;
- const value = mediaFeatureNode.value;
-
- if (
- isRangeContextMediaFeature(parent.value) ||
- !isStandardSyntaxMediaFeatureName(value) ||
- isCustomMediaQuery(value)
- ) {
- return;
- }
-
- if (!matchesStringOrRegExp(value, blacklist)) {
- return;
- }
-
- report({
- index: atRuleParamIndex(atRule) + sourceIndex,
- message: messages.rejected(value),
- node: atRule,
- ruleName,
- result,
- });
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-name-case/README.md b/assets/node_modules/stylelint/lib/rules/media-feature-name-case/README.md
deleted file mode 100644
index a4b7ae9..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-name-case/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# media-feature-name-case
-
-Specify lowercase or uppercase for media feature names.
-
-```css
-@media (min-width: 700px) {}
-/** ↑
- * This media feature name */
-```
-
-This rule ignores media feature names within a range context.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"lower"|"upper"`
-
-### `"lower"`
-
-The following patterns are considered violations:
-
-```css
-@media (MIN-WIDTH: 700px) {}
-```
-
-```css
-@media not all and (MONOCHROME) {}
-```
-
-```css
-@media (min-width: 700px) and (ORIENTATION: landscape) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media (min-width: 700px) {}
-```
-
-```css
-@media not all and (monochrome) {}
-```
-
-```css
-@media (min-width: 700px) and (orientation: landscape) {}
-```
-
-### `"upper"`
-
-The following patterns are considered violations:
-
-```css
-@media (min-width: 700px) {}
-```
-
-```css
-@media not all and (monochrome) {}
-```
-
-```css
-@media (MIN-WIDTH: 700px) and (orientation: landscape) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media (MIN-WIDTH: 700px) {}
-```
-
-```css
-@media not all and (MONOCHROME) {}
-```
-
-```css
-@media (MIN-WIDTH: 700px) and (ORIENTATION: landscape) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-name-case/index.js b/assets/node_modules/stylelint/lib/rules/media-feature-name-case/index.js
deleted file mode 100644
index 2ad19e7..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-name-case/index.js
+++ /dev/null
@@ -1,85 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const isCustomMediaQuery = require('../../utils/isCustomMediaQuery');
-const isRangeContextMediaFeature = require('../../utils/isRangeContextMediaFeature');
-const isStandardSyntaxMediaFeatureName = require('../../utils/isStandardSyntaxMediaFeatureName');
-const mediaParser = require('postcss-media-query-parser').default;
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'media-feature-name-case';
-
-const messages = ruleMessages(ruleName, {
- expected: (actual, expected) => `Expected "${actual}" to be "${expected}"`,
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['lower', 'upper'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules(/^media$/i, (atRule) => {
- let hasComments = _.get(atRule, 'raws.params.raw');
- const mediaRule = hasComments ? hasComments : atRule.params;
-
- mediaParser(mediaRule).walk(/^media-feature$/i, (mediaFeatureNode) => {
- const parent = mediaFeatureNode.parent;
- const sourceIndex = mediaFeatureNode.sourceIndex;
- const value = mediaFeatureNode.value;
-
- if (
- isRangeContextMediaFeature(parent.value) ||
- !isStandardSyntaxMediaFeatureName(value) ||
- isCustomMediaQuery(value)
- ) {
- return;
- }
-
- const expectedFeatureName =
- expectation === 'lower' ? value.toLowerCase() : value.toUpperCase();
-
- if (value === expectedFeatureName) {
- return;
- }
-
- if (context.fix) {
- if (hasComments) {
- hasComments =
- hasComments.slice(0, sourceIndex) +
- expectedFeatureName +
- hasComments.slice(sourceIndex + expectedFeatureName.length);
- _.set(atRule, 'raws.params.raw', hasComments);
- } else {
- atRule.params =
- atRule.params.slice(0, sourceIndex) +
- expectedFeatureName +
- atRule.params.slice(sourceIndex + expectedFeatureName.length);
- }
-
- return;
- }
-
- report({
- index: atRuleParamIndex(atRule) + sourceIndex,
- message: messages.expected(value, expectedFeatureName),
- node: atRule,
- ruleName,
- result,
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-name-no-unknown/README.md b/assets/node_modules/stylelint/lib/rules/media-feature-name-no-unknown/README.md
deleted file mode 100644
index b686258..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-name-no-unknown/README.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# media-feature-name-no-unknown
-
-Disallow unknown media feature names.
-
-```css
-@media (min-width: 700px) {}
-/** ↑
- * This media feature name */
-```
-
-This rule considers media feature names defined in the CSS Specifications, up to and including Editor's Drafts, to be known.
-
-This rule ignores:
-
-- media feature names within a range context
-- vendor-prefixed media feature names
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-@media screen and (unknown) {}
-```
-
-```css
-@media screen and (unknown: 10px) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media all and (monochrome) {}
-```
-
-```css
-@media (min-width: 700px) {}
-```
-
-```css
-@media (MIN-WIDTH: 700px) {}
-```
-
-```css
-@media (min-width: 700px) and (orientation: landscape) {}
-```
-
-```css
-@media (-webkit-min-device-pixel-ratio: 2) {}
-```
-
-## Optional secondary options
-
-### `ignoreMediaFeatureNames: ["/regex/", /regex/, "string"]`
-
-Given:
-
-```js
-["/^my-/", "custom"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (my-media-feature-name) {}
-```
-
-```css
-@media screen and (custom: 10px) {}
-```
-
-```css
-@media (min-width: 700px) and (custom: 10px) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-name-no-unknown/index.js b/assets/node_modules/stylelint/lib/rules/media-feature-name-no-unknown/index.js
deleted file mode 100644
index 1f00658..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-name-no-unknown/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const isCustomMediaQuery = require('../../utils/isCustomMediaQuery');
-const isRangeContextMediaFeature = require('../../utils/isRangeContextMediaFeature');
-const isStandardSyntaxMediaFeatureName = require('../../utils/isStandardSyntaxMediaFeatureName');
-const keywordSets = require('../../reference/keywordSets');
-const mediaParser = require('postcss-media-query-parser').default;
-const optionsMatches = require('../../utils/optionsMatches');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'media-feature-name-no-unknown';
-
-const messages = ruleMessages(ruleName, {
- rejected: (mediaFeatureName) => `Unexpected unknown media feature name "${mediaFeatureName}"`,
-});
-
-function rule(actual, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- { actual },
- {
- actual: options,
- possible: {
- ignoreMediaFeatureNames: [_.isString, _.isRegExp],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules(/^media$/i, (atRule) => {
- mediaParser(atRule.params).walk(/^media-feature$/i, (mediaFeatureNode) => {
- const parent = mediaFeatureNode.parent;
- const sourceIndex = mediaFeatureNode.sourceIndex;
- const value = mediaFeatureNode.value;
-
- if (
- isRangeContextMediaFeature(parent.value) ||
- !isStandardSyntaxMediaFeatureName(value) ||
- isCustomMediaQuery(value)
- ) {
- return;
- }
-
- if (optionsMatches(options, 'ignoreMediaFeatureNames', value)) {
- return;
- }
-
- if (
- postcss.vendor.prefix(value) ||
- keywordSets.mediaFeatureNames.has(value.toLowerCase())
- ) {
- return;
- }
-
- report({
- index: atRuleParamIndex(atRule) + sourceIndex,
- message: messages.rejected(value),
- node: atRule,
- ruleName,
- result,
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-name-no-vendor-prefix/README.md b/assets/node_modules/stylelint/lib/rules/media-feature-name-no-vendor-prefix/README.md
deleted file mode 100644
index 9295031..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-name-no-vendor-prefix/README.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# media-feature-name-no-vendor-prefix
-
-Disallow vendor prefixes for media feature names.
-
-```css
-@media (-webkit-min-device-pixel-ratio: 1) {}
-/** ↑
- * This prefixe */
-```
-
-Right now this rule simply checks for prefixed *resolutions*.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-@media (-webkit-min-device-pixel-ratio: 1) {}
-```
-
-```css
-@media (min--mox-device-pixel-ratio: 1) {}
-```
-
-```css
-@media (-o-max-device-pixel-ratio: 1/1) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media (min-resolution: 96dpi) {}
-```
-
-```css
-@media (max-resolution: 900dpi) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-name-no-vendor-prefix/index.js b/assets/node_modules/stylelint/lib/rules/media-feature-name-no-vendor-prefix/index.js
deleted file mode 100644
index b1d50de..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-name-no-vendor-prefix/index.js
+++ /dev/null
@@ -1,50 +0,0 @@
-'use strict';
-
-const isAutoprefixable = require('../../utils/isAutoprefixable');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'media-feature-name-no-vendor-prefix';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected vendor-prefix',
-});
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules(/^media$/i, (atRule) => {
- const params = atRule.params;
-
- if (!isAutoprefixable.mediaFeatureName(params)) {
- return;
- }
-
- const matches = atRule.toString().match(/[a-z-]+device-pixel-ratio/gi);
-
- if (!matches) {
- return;
- }
-
- matches.forEach((match) => {
- report({
- message: messages.rejected,
- node: atRule,
- word: match,
- result,
- ruleName,
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-name-value-whitelist/README.md b/assets/node_modules/stylelint/lib/rules/media-feature-name-value-whitelist/README.md
deleted file mode 100644
index 026c4d3..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-name-value-whitelist/README.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# media-feature-name-value-whitelist
-
-Specify a whitelist of allowed media feature name and value pairs.
-
-```css
-@media screen and (min-width: 768px) {}
-/** ↑ ↑
- * These features and values */
-```
-
-This rule ignores media features within range and boolean context.
-
-## Options
-
-```js
-{
- "unprefixed-media-feature-name": ["array", "of", "values"],
- "/unprefixed-media-feature-name/": ["/regex/", "non-regex", /real-regex/]
-}
-```
-
-If a media feature name is found in the object, only its whitelisted values are
-allowed. If the media feature name is not included in the object, anything goes.
-
-If a name or value is surrounded with `/` (e.g. `"/width$/"`), it is interpreted
-as a regular expression. For example, `/width$/` will match `max-width` and
-`min-width`.
-
-Given:
-
-```json
-{
- "min-width": ["768px", "1024px"],
- "/resolution/": ["/dpcm$/"]
-}
-```
-
-The following patterns are considered violations:
-
-```css
-@media screen and (min-width: 1000px) {}
-```
-
-```css
-@media screen and (min-resolution: 2dpi) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (min-width: 768px) {}
-```
-
-```css
-@media screen and (min-width: 1024px) {}
-```
-
-```css
-@media screen and (orientation: portrait) {}
-```
-
-```css
-@media screen and (min-resolution: 2dpcm) {}
-```
-
-```css
-@media screen and (resolution: 10dpcm) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-name-value-whitelist/index.js b/assets/node_modules/stylelint/lib/rules/media-feature-name-value-whitelist/index.js
deleted file mode 100644
index bc110c6..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-name-value-whitelist/index.js
+++ /dev/null
@@ -1,68 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const mediaParser = require('postcss-media-query-parser').default;
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'media-feature-name-value-whitelist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (name, value) => `Unexpected value "${value}" for name "${name}"`,
-});
-
-function rule(whitelist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: whitelist,
- possible: [_.isObject],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules(/^media$/i, (atRule) => {
- mediaParser(atRule.params).walk(/^media-feature-expression$/i, (node) => {
- // Ignore boolean and range context
- if (!node.value.includes(':')) {
- return;
- }
-
- const mediaFeatureNode = _.find(node.nodes, { type: 'media-feature' });
- const valueNode = _.find(node.nodes, { type: 'value' });
- const mediaFeatureName = mediaFeatureNode.value;
- const value = valueNode.value;
- const unprefixedMediaFeatureName = postcss.vendor.unprefixed(mediaFeatureName);
-
- const featureWhitelist = _.find(whitelist, (v, whitelistFeatureName) =>
- matchesStringOrRegExp(unprefixedMediaFeatureName, whitelistFeatureName),
- );
-
- if (featureWhitelist === undefined) {
- return;
- }
-
- if (matchesStringOrRegExp(value, featureWhitelist)) {
- return;
- }
-
- report({
- index: atRuleParamIndex(atRule) + valueNode.sourceIndex,
- message: messages.rejected(mediaFeatureName, value),
- node: atRule,
- ruleName,
- result,
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-name-whitelist/README.md b/assets/node_modules/stylelint/lib/rules/media-feature-name-whitelist/README.md
deleted file mode 100644
index 12f7ece..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-name-whitelist/README.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# media-feature-name-whitelist
-
-Specify a whitelist of allowed media feature names.
-
-```css
-@media (min-width: 700px) {}
-/** ↑
- * This media feature name */
-```
-
-This rule ignores media feature names within a range context.
-
-## Options
-
-`array|string|regex`: `["array", "of", "unprefixed", /media-features/ or "regex"]|"media-feature"|/regex/`
-
-Given:
-
-```js
-["max-width", "/^my-/"]
-```
-
-The following patterns are considered violations:
-
-```css
-@media (min-width: 50em) {}
-```
-
-```css
-@media print and (min-resolution: 300dpi) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media (max-width: 50em) {}
-```
-
-```css
-@media (my-width: 50em) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-name-whitelist/index.js b/assets/node_modules/stylelint/lib/rules/media-feature-name-whitelist/index.js
deleted file mode 100644
index e91d157..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-name-whitelist/index.js
+++ /dev/null
@@ -1,65 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const isCustomMediaQuery = require('../../utils/isCustomMediaQuery');
-const isRangeContextMediaFeature = require('../../utils/isRangeContextMediaFeature');
-const isStandardSyntaxMediaFeatureName = require('../../utils/isStandardSyntaxMediaFeatureName');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const mediaParser = require('postcss-media-query-parser').default;
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'media-feature-name-whitelist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (name) => `Unexpected media feature name "${name}"`,
-});
-
-function rule(whitelist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: whitelist,
- possible: [_.isString, _.isRegExp],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules(/^media$/i, (atRule) => {
- mediaParser(atRule.params).walk(/^media-feature$/i, (mediaFeatureNode) => {
- const parent = mediaFeatureNode.parent;
- const sourceIndex = mediaFeatureNode.sourceIndex;
- const value = mediaFeatureNode.value;
-
- if (
- isRangeContextMediaFeature(parent.value) ||
- !isStandardSyntaxMediaFeatureName(value) ||
- isCustomMediaQuery(value)
- ) {
- return;
- }
-
- if (matchesStringOrRegExp(value, whitelist)) {
- return;
- }
-
- report({
- index: atRuleParamIndex(atRule) + sourceIndex,
- message: messages.rejected(value),
- node: atRule,
- ruleName,
- result,
- });
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-parentheses-space-inside/README.md b/assets/node_modules/stylelint/lib/rules/media-feature-parentheses-space-inside/README.md
deleted file mode 100644
index 80738b4..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-parentheses-space-inside/README.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# media-feature-parentheses-space-inside
-
-Require a single space or disallow whitespace on the inside of the parentheses within media features.
-
-```css
-@media ( max-width: 300px ) {}
-/** ↑ ↑
- * The space inside these two parentheses */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a single space inside the parentheses.
-
-The following patterns are considered violations:
-
-```css
-@media (max-width: 300px) {}
-```
-
-```css
-@media (max-width: 300px ) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media ( max-width: 300px ) {}
-```
-
-### `"never"`
-
-There *must never* be whitespace on the inside the parentheses.
-
-The following patterns are considered violations:
-
-```css
-@media ( max-width: 300px ) {}
-```
-
-```css
-@media ( max-width: 300px) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media (max-width: 300px) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-parentheses-space-inside/index.js b/assets/node_modules/stylelint/lib/rules/media-feature-parentheses-space-inside/index.js
deleted file mode 100644
index 001a85d..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-parentheses-space-inside/index.js
+++ /dev/null
@@ -1,104 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'media-feature-parentheses-space-inside';
-
-const messages = ruleMessages(ruleName, {
- expectedOpening: 'Expected single space after "("',
- rejectedOpening: 'Unexpected whitespace after "("',
- expectedClosing: 'Expected single space before ")"',
- rejectedClosing: 'Unexpected whitespace before ")"',
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules(/^media$/i, (atRule) => {
- // If there are comments in the params, the complete string
- // will be at atRule.raws.params.raw
- const params = _.get(atRule, 'raws.params.raw', atRule.params);
- const indexBoost = atRuleParamIndex(atRule);
- const violations = [];
-
- const parsedParams = valueParser(params).walk((node) => {
- if (node.type === 'function') {
- const len = valueParser.stringify(node).length;
-
- if (expectation === 'never') {
- if (/[ \t]/.test(node.before)) {
- if (context.fix) node.before = '';
-
- violations.push({
- message: messages.rejectedOpening,
- index: node.sourceIndex + 1 + indexBoost,
- });
- }
-
- if (/[ \t]/.test(node.after)) {
- if (context.fix) node.after = '';
-
- violations.push({
- message: messages.rejectedClosing,
- index: node.sourceIndex - 2 + len + indexBoost,
- });
- }
- } else if (expectation === 'always') {
- if (node.before === '') {
- if (context.fix) node.before = ' ';
-
- violations.push({
- message: messages.expectedOpening,
- index: node.sourceIndex + 1 + indexBoost,
- });
- }
-
- if (node.after === '') {
- if (context.fix) node.after = ' ';
-
- violations.push({
- message: messages.expectedClosing,
- index: node.sourceIndex - 2 + len + indexBoost,
- });
- }
- }
- }
- });
-
- if (violations.length) {
- if (context.fix) {
- atRule.params = parsedParams.toString();
-
- return;
- }
-
- violations.forEach((err) => {
- report({
- message: err.message,
- node: atRule,
- index: err.index,
- result,
- ruleName,
- });
- });
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-after/README.md b/assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-after/README.md
deleted file mode 100644
index 8f3869a..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-after/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# media-feature-range-operator-space-after
-
-Require a single space or disallow whitespace after the range operator in media features.
-
-```css
-@media (width >= 600px) {}
-/** ↑
- * The space after this operator */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a single space after the range operator.
-
-The following patterns are considered violations:
-
-```css
-@media (width>=600px) {}
-```
-
-```css
-@media (width >=600px) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media (width>= 600px) {}
-```
-
-```css
-@media (width >= 600px) {}
-```
-
-### `"never"`
-
-There *must never* be whitespace after the range operator.
-
-The following patterns are considered violations:
-
-```css
-@media (width>= 600px) {}
-```
-
-```css
-@media (width >= 600px) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media (width>=600px) {}
-```
-
-```css
-@media (width >=600px) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-after/index.js b/assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-after/index.js
deleted file mode 100644
index 8840d7e..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-after/index.js
+++ /dev/null
@@ -1,90 +0,0 @@
-'use strict';
-
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const findMediaOperator = require('../findMediaOperator');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'media-feature-range-operator-space-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected single space after range operator',
- rejectedAfter: () => 'Unexpected whitespace after range operator',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules(/^media$/i, (atRule) => {
- const fixOperatorIndices = [];
- const fix = context.fix ? (index) => fixOperatorIndices.push(index) : null;
-
- findMediaOperator(atRule, (match, params, node) => {
- checkAfterOperator(match, params, node, fix);
- });
-
- if (fixOperatorIndices.length) {
- let params = atRule.raws.params ? atRule.raws.params.raw : atRule.params;
-
- fixOperatorIndices
- .sort((a, b) => b - a)
- .forEach((index) => {
- const beforeOperator = params.slice(0, index + 1);
- const afterOperator = params.slice(index + 1);
-
- if (expectation === 'always') {
- params = beforeOperator + afterOperator.replace(/^\s*/, ' ');
- } else if (expectation === 'never') {
- params = beforeOperator + afterOperator.replace(/^\s*/, '');
- }
- });
-
- if (atRule.raws.params) {
- atRule.raws.params.raw = params;
- } else {
- atRule.params = params;
- }
- }
- });
-
- function checkAfterOperator(match, params, node, fix) {
- const endIndex = match.startIndex + match.target.length - 1;
-
- checker.after({
- source: params,
- index: endIndex,
- err: (m) => {
- if (fix) {
- fix(endIndex);
-
- return;
- }
-
- report({
- message: m,
- node,
- index: endIndex + atRuleParamIndex(node) + 1,
- result,
- ruleName,
- });
- },
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-before/README.md b/assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-before/README.md
deleted file mode 100644
index 77e4aa4..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-before/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# media-feature-range-operator-space-before
-
-Require a single space or disallow whitespace before the range operator in media features.
-
-```css
-@media (width >= 600px) {}
-/** ↑
- * The space before this operator */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a single space before the range operator.
-
-The following patterns are considered violations:
-
-```css
-@media (width>=600px) {}
-```
-
-```css
-@media (width>= 600px) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media (width >=600px) {}
-```
-
-```css
-@media (width >= 600px) {}
-```
-
-### `"never"`
-
-There *must never* be whitespace before the range operator.
-
-The following patterns are considered violations:
-
-```css
-@media (width >=600px) {}
-```
-
-```css
-@media (width >= 600px) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media (width>=600px) {}
-```
-
-```css
-@media (width>= 600px) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-before/index.js b/assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-before/index.js
deleted file mode 100644
index 53880d3..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-feature-range-operator-space-before/index.js
+++ /dev/null
@@ -1,90 +0,0 @@
-'use strict';
-
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const findMediaOperator = require('../findMediaOperator');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'media-feature-range-operator-space-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected single space before range operator',
- rejectedBefore: () => 'Unexpected whitespace before range operator',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules(/^media$/i, (atRule) => {
- const fixOperatorIndices = [];
- const fix = context.fix ? (index) => fixOperatorIndices.push(index) : null;
-
- findMediaOperator(atRule, (match, params, node) => {
- checkBeforeOperator(match, params, node, fix);
- });
-
- if (fixOperatorIndices.length) {
- let params = atRule.raws.params ? atRule.raws.params.raw : atRule.params;
-
- fixOperatorIndices
- .sort((a, b) => b - a)
- .forEach((index) => {
- const beforeOperator = params.slice(0, index);
- const afterOperator = params.slice(index);
-
- if (expectation === 'always') {
- params = beforeOperator.replace(/\s*$/, ' ') + afterOperator;
- } else if (expectation === 'never') {
- params = beforeOperator.replace(/\s*$/, '') + afterOperator;
- }
- });
-
- if (atRule.raws.params) {
- atRule.raws.params.raw = params;
- } else {
- atRule.params = params;
- }
- }
- });
-
- function checkBeforeOperator(match, params, node, fix) {
- // The extra `+ 1` is because the match itself contains
- // the character before the operator
- checker.before({
- source: params,
- index: match.startIndex,
- err: (m) => {
- if (fix) {
- fix(match.startIndex);
-
- return;
- }
-
- report({
- message: m,
- node,
- index: match.startIndex - 1 + atRuleParamIndex(node),
- result,
- ruleName,
- });
- },
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-after/README.md b/assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-after/README.md
deleted file mode 100644
index a650cc3..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-after/README.md
+++ /dev/null
@@ -1,100 +0,0 @@
-# media-query-list-comma-newline-after
-
-Require a newline or disallow whitespace after the commas of media query lists.
-
-```css
-@media screen and (color),
- projection {} /* ↑ */
-/** ↑
- * These commas */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline after the commas.
-
-The following patterns are considered violations:
-
-```css
-@media screen and (color), projection and (color) {}
-```
-
-```css
-@media screen and (color)
-, projection and (color) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (color),
-projection and (color) {}
-```
-
-```css
-@media screen and (color)
-,
-projection and (color) {}
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline after the commas in multi-line media query lists.
-
-The following patterns are considered violations:
-
-```css
-@media screen and (color)
-, projection and (color) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (color), projection and (color) {}
-```
-
-```css
-@media screen and (color),
-projection and (color) {}
-```
-
-```css
-@media screen and (color)
-,
-projection and (color) {}
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace after the commas in multi-line media query lists.
-
-The following patterns are considered violations:
-
-```css
-@media screen and (color),
-projection and (color) {}
-```
-
-```css
-@media screen and (color)
-,
-projection and (color) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (color), projection and (color) {}
-```
-
-```css
-@media screen and (color)
-,projection and (color) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-after/index.js b/assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-after/index.js
deleted file mode 100644
index 7df8488..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-after/index.js
+++ /dev/null
@@ -1,88 +0,0 @@
-'use strict';
-
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const mediaQueryListCommaWhitespaceChecker = require('../mediaQueryListCommaWhitespaceChecker');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'media-query-list-comma-newline-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected newline after ","',
- expectedAfterMultiLine: () => 'Expected newline after "," in a multi-line list',
- rejectedAfterMultiLine: () => 'Unexpected whitespace after "," in a multi-line list',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('newline', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-multi-line', 'never-multi-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- // Only check for the newline after the comma, while allowing
- // arbitrary indentation after the newline
- let fixData;
-
- mediaQueryListCommaWhitespaceChecker({
- root,
- result,
- locationChecker: checker.afterOneOnly,
- checkedRuleName: ruleName,
- allowTrailingComments: expectation.startsWith('always'),
- fix: context.fix
- ? (atRule, index) => {
- const paramCommaIndex = index - atRuleParamIndex(atRule);
-
- fixData = fixData || new Map();
- const commaIndices = fixData.get(atRule) || [];
-
- commaIndices.push(paramCommaIndex);
- fixData.set(atRule, commaIndices);
-
- return true;
- }
- : null,
- });
-
- if (fixData) {
- fixData.forEach((commaIndices, atRule) => {
- let params = atRule.raws.params ? atRule.raws.params.raw : atRule.params;
-
- commaIndices
- .sort((a, b) => b - a)
- .forEach((index) => {
- const beforeComma = params.slice(0, index + 1);
- const afterComma = params.slice(index + 1);
-
- if (expectation.startsWith('always')) {
- if (/^\s*\r?\n/.test(afterComma)) {
- params = beforeComma + afterComma.replace(/^[^\S\r\n]*/, '');
- } else {
- params = beforeComma + context.newline + afterComma;
- }
- } else if (expectation.startsWith('never')) {
- params = beforeComma + afterComma.replace(/^\s*/, '');
- }
- });
-
- if (atRule.raws.params) {
- atRule.raws.params.raw = params;
- } else {
- atRule.params = params;
- }
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-before/README.md b/assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-before/README.md
deleted file mode 100644
index 9aee8c7..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-before/README.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# media-query-list-comma-newline-before
-
-Require a newline or disallow whitespace before the commas of media query lists.
-
-```css
- @media screen and (color)
- , projection and (color) {}
-/** ↑
- * This comma */
-```
-
-## Options
-
-`string`: `"always"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline before the commas.
-
-The following patterns are considered violations:
-
-```css
-@media screen and (color), projection and (color) {}
-```
-
-```css
-@media screen and (color),
-projection and (color) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (color)
-,projection and (color) {}
-```
-
-```css
-@media screen and (color)
-,
-projection and (color) {}
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline before the commas in multi-line media query lists.
-
-The following patterns are considered violations:
-
-```css
-@media screen and (color),
-projection and (color) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (color), projection and (color) {}
-```
-
-```css
-@media screen and (color)
-,projection and (color) {}
-```
-
-```css
-@media screen and (color)
-,
-projection and (color) {}
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace before the commas in multi-line media query lists.
-
-The following patterns are considered violations:
-
-```css
-@media screen and (color)
-,projection and (color) {}
-```
-
-```css
-@media screen and (color)
-,
-projection and (color) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (color), projection and (color) {}
-```
-
-```css
-@media screen and (color),
-projection and (color) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-before/index.js b/assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-before/index.js
deleted file mode 100644
index 5f47ee1..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-newline-before/index.js
+++ /dev/null
@@ -1,40 +0,0 @@
-'use strict';
-
-const mediaQueryListCommaWhitespaceChecker = require('../mediaQueryListCommaWhitespaceChecker');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'media-query-list-comma-newline-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected newline before ","',
- expectedBeforeMultiLine: () => 'Expected newline before "," in a multi-line list',
- rejectedBeforeMultiLine: () => 'Unexpected whitespace before "," in a multi-line list',
-});
-
-function rule(expectation) {
- const checker = whitespaceChecker('newline', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-multi-line', 'never-multi-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- mediaQueryListCommaWhitespaceChecker({
- root,
- result,
- locationChecker: checker.beforeAllowingIndentation,
- checkedRuleName: ruleName,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-after/README.md b/assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-after/README.md
deleted file mode 100644
index b331a64..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-after/README.md
+++ /dev/null
@@ -1,119 +0,0 @@
-# media-query-list-comma-space-after
-
-Require a single space or disallow whitespace after the commas of media query lists.
-
-```css
-@media screen and (color), projection and (color) {}
-/** ↑
- * The space after this comma */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"never-single-line"`
-
-### `"always"`
-
-There *must always* be a single space after the commas.
-
-The following patterns are considered violations:
-
-```css
-@media screen and (color),projection and (color) {}
-```
-
-```css
-@media screen and (color)
-,projection and (color) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (color), projection and (color) {}
-```
-
-```css
-@media screen and (color)
-, projection and (color) {}
-```
-
-### `"never"`
-
-There *must never* be whitespace after the commas.
-
-The following patterns are considered violations:
-
-```css
-@media screen and (color), projection and (color) {}
-```
-
-```css
-@media screen and (color)
-, projection and (color) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (color),projection and (color) {}
-```
-
-```css
-@media screen and (color)
-,projection and (color) {}
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space after the commas in single-line media query lists.
-
-The following patterns are considered violations:
-
-```css
-@media screen and (color),projection and (color) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (color), projection and (color) {}
-```
-
-```css
-@media screen and (color)
-, projection and (color) {}
-```
-
-```css
-@media screen and (color)
-,projection and (color) {}
-```
-
-### `"never-single-line"`
-
-There *must never* be whitespace after the commas in single-line media query lists.
-
-The following patterns are considered violations:
-
-```css
-@media screen and (color), projection and (color) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (color),projection and (color) {}
-```
-
-```css
-@media screen and (color)
-,projection and (color) {}
-```
-
-```css
-@media screen and (color)
-, projection and (color) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-after/index.js b/assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-after/index.js
deleted file mode 100644
index c936b59..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-after/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-'use strict';
-
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const mediaQueryListCommaWhitespaceChecker = require('../mediaQueryListCommaWhitespaceChecker');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'media-query-list-comma-space-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected single space after ","',
- rejectedAfter: () => 'Unexpected whitespace after ","',
- expectedAfterSingleLine: () => 'Expected single space after "," in a single-line list',
- rejectedAfterSingleLine: () => 'Unexpected whitespace after "," in a single-line list',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never', 'always-single-line', 'never-single-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- let fixData;
-
- mediaQueryListCommaWhitespaceChecker({
- root,
- result,
- locationChecker: checker.after,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (atRule, index) => {
- const paramCommaIndex = index - atRuleParamIndex(atRule);
-
- fixData = fixData || new Map();
- const commaIndices = fixData.get(atRule) || [];
-
- commaIndices.push(paramCommaIndex);
- fixData.set(atRule, commaIndices);
-
- return true;
- }
- : null,
- });
-
- if (fixData) {
- fixData.forEach((commaIndices, atRule) => {
- let params = atRule.raws.params ? atRule.raws.params.raw : atRule.params;
-
- commaIndices
- .sort((a, b) => b - a)
- .forEach((index) => {
- const beforeComma = params.slice(0, index + 1);
- const afterComma = params.slice(index + 1);
-
- if (expectation.startsWith('always')) {
- params = beforeComma + afterComma.replace(/^\s*/, ' ');
- } else if (expectation.startsWith('never')) {
- params = beforeComma + afterComma.replace(/^\s*/, '');
- }
- });
-
- if (atRule.raws.params) {
- atRule.raws.params.raw = params;
- } else {
- atRule.params = params;
- }
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-before/README.md b/assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-before/README.md
deleted file mode 100644
index 113f614..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-before/README.md
+++ /dev/null
@@ -1,119 +0,0 @@
-# media-query-list-comma-space-before
-
-Require a single space or disallow whitespace before the commas of media query lists.
-
-```css
-@media screen and (color) ,projection and (color) {}
-/** ↑
- * The space before this comma */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"never-single-line"`
-
-### `"always"`
-
-There *must always* be a single space before the commas.
-
-The following patterns are considered violations:
-
-```css
-@media screen and (color),projection and (color) {}
-```
-
-```css
-@media screen and (color)
-,projection and (color) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (color) ,projection and (color) {}
-```
-
-```css
-@media screen and (color) ,
-projection and (color) {}
-```
-
-### `"never"`
-
-There *must never* be whitespace before the commas.
-
-The following patterns are considered violations:
-
-```css
-@media screen and (color) ,projection and (color) {}
-```
-
-```css
-@media screen and (color)
-, projection and (color) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (color),projection and (color) {}
-```
-
-```css
-@media screen and (color),
-projection and (color) {}
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space before the commas in single-line media query lists.
-
-The following patterns are considered violations:
-
-```css
-@media screen and (color),projection and (color) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (color) ,projection and (color) {}
-```
-
-```css
-@media screen and (color)
-, projection and (color) {}
-```
-
-```css
-@media screen and (color)
-,projection and (color) {}
-```
-
-### `"never-single-line"`
-
-There *must never* be whitespace before the commas in single-line media query lists.
-
-The following patterns are considered violations:
-
-```css
-@media screen and (color) , projection and (color) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media screen and (color),projection and (color) {}
-```
-
-```css
-@media screen and (color)
-,projection and (color) {}
-```
-
-```css
-@media screen and (color)
-, projection and (color) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-before/index.js b/assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-before/index.js
deleted file mode 100644
index 0507a90..0000000
--- a/assets/node_modules/stylelint/lib/rules/media-query-list-comma-space-before/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-'use strict';
-
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const mediaQueryListCommaWhitespaceChecker = require('../mediaQueryListCommaWhitespaceChecker');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'media-query-list-comma-space-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected single space before ","',
- rejectedBefore: () => 'Unexpected whitespace before ","',
- expectedBeforeSingleLine: () => 'Expected single space before "," in a single-line list',
- rejectedBeforeSingleLine: () => 'Unexpected whitespace before "," in a single-line list',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never', 'always-single-line', 'never-single-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- let fixData;
-
- mediaQueryListCommaWhitespaceChecker({
- root,
- result,
- locationChecker: checker.before,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (atRule, index) => {
- const paramCommaIndex = index - atRuleParamIndex(atRule);
-
- fixData = fixData || new Map();
- const commaIndices = fixData.get(atRule) || [];
-
- commaIndices.push(paramCommaIndex);
- fixData.set(atRule, commaIndices);
-
- return true;
- }
- : null,
- });
-
- if (fixData) {
- fixData.forEach((commaIndices, atRule) => {
- let params = atRule.raws.params ? atRule.raws.params.raw : atRule.params;
-
- commaIndices
- .sort((a, b) => b - a)
- .forEach((index) => {
- const beforeComma = params.slice(0, index);
- const afterComma = params.slice(index);
-
- if (expectation.startsWith('always')) {
- params = beforeComma.replace(/\s*$/, ' ') + afterComma;
- } else if (expectation.startsWith('never')) {
- params = beforeComma.replace(/\s*$/, '') + afterComma;
- }
- });
-
- if (atRule.raws.params) {
- atRule.raws.params.raw = params;
- } else {
- atRule.params = params;
- }
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/mediaFeatureColonSpaceChecker.js b/assets/node_modules/stylelint/lib/rules/mediaFeatureColonSpaceChecker.js
deleted file mode 100644
index b85a009..0000000
--- a/assets/node_modules/stylelint/lib/rules/mediaFeatureColonSpaceChecker.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict';
-
-const atRuleParamIndex = require('../utils/atRuleParamIndex');
-const report = require('../utils/report');
-const styleSearch = require('style-search');
-
-module.exports = function(opts) {
- opts.root.walkAtRules(/^media$/i, (atRule) => {
- const params = atRule.raws.params ? atRule.raws.params.raw : atRule.params;
-
- styleSearch({ source: params, target: ':' }, (match) => {
- checkColon(params, match.startIndex, atRule);
- });
- });
-
- function checkColon(source, index, node) {
- opts.locationChecker({
- source,
- index,
- err: (m) => {
- const colonIndex = index + atRuleParamIndex(node);
-
- if (opts.fix && opts.fix(node, colonIndex)) {
- return;
- }
-
- report({
- message: m,
- node,
- index: colonIndex,
- result: opts.result,
- ruleName: opts.checkedRuleName,
- });
- },
- });
- }
-};
diff --git a/assets/node_modules/stylelint/lib/rules/mediaQueryListCommaWhitespaceChecker.js b/assets/node_modules/stylelint/lib/rules/mediaQueryListCommaWhitespaceChecker.js
deleted file mode 100644
index 75bbd83..0000000
--- a/assets/node_modules/stylelint/lib/rules/mediaQueryListCommaWhitespaceChecker.js
+++ /dev/null
@@ -1,52 +0,0 @@
-'use strict';
-
-const atRuleParamIndex = require('../utils/atRuleParamIndex');
-const report = require('../utils/report');
-const styleSearch = require('style-search');
-
-module.exports = function(opts) {
- opts.root.walkAtRules(/^media$/i, (atRule) => {
- const params = atRule.raws.params ? atRule.raws.params.raw : atRule.params;
-
- styleSearch({ source: params, target: ',' }, (match) => {
- let index = match.startIndex;
-
- if (opts.allowTrailingComments) {
- // if there is a comment on the same line at after the comma, check the space after the comment.
- let execResult;
-
- while ((execResult = /^[^\S\r\n]*\/\*([\s\S]*?)\*\//.exec(params.slice(index + 1)))) {
- index += execResult[0].length;
- }
-
- if ((execResult = /^([^\S\r\n]*\/\/([\s\S]*?))\r?\n/.exec(params.slice(index + 1)))) {
- index += execResult[1].length;
- }
- }
-
- checkComma(params, index, atRule);
- });
- });
-
- function checkComma(source, index, node) {
- opts.locationChecker({
- source,
- index,
- err: (m) => {
- const commaIndex = index + atRuleParamIndex(node);
-
- if (opts.fix && opts.fix(node, commaIndex)) {
- return;
- }
-
- report({
- message: m,
- node,
- index: commaIndex,
- result: opts.result,
- ruleName: opts.checkedRuleName,
- });
- },
- });
- }
-};
diff --git a/assets/node_modules/stylelint/lib/rules/no-descending-specificity/README.md b/assets/node_modules/stylelint/lib/rules/no-descending-specificity/README.md
deleted file mode 100644
index a409f7b..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-descending-specificity/README.md
+++ /dev/null
@@ -1,150 +0,0 @@
-# no-descending-specificity
-
-Disallow selectors of lower specificity from coming after overriding selectors of higher specificity.
-
-```css
- #container a { top: 10px; } a { top: 0; }
-/** ↑ ↑
- * The order of these selectors represents descending specificity */
-```
-
-Source order is important in CSS, and when two selectors have the *same* specificity, the one that occurs *last* will take priority. However, the situation is different when one of the selectors has a *higher* specificity. In that case, source order does *not* matter: the selector with higher specificity will win out even if it comes first.
-
-The clashes of these two mechanisms for prioritization, source order and specificity, can cause some confusion when reading stylesheets. If a selector with higher specificity comes *before* the selector it overrides, we have to think harder to understand it, because it violates the source order expectation. **Stylesheets are most legible when overriding selectors always come *after* the selectors they override.** That way both mechanisms, source order and specificity, work together nicely.
-
-This rule enforces that practice *as best it can*, reporting fewer errors than it should. It cannot catch every *actual* overriding selector, but it can catch certain common mistakes.
-
-## How it works
-
-**This rule looks at the last *compound selector* in every full selector, and then compares it with other selectors in the stylesheet that end in the same way.**
-
-So `.foo .bar` (whose last compound selector is `.bar`) will be compared to `.bar` and `#baz .bar`, but not to `#baz .foo` or `.bar .foo`.
-
-And `a > li#wag.pit` (whose last compound selector is `li#wag.pit`) will be compared to `div li#wag.pit` and `a > b > li + li#wag.pit`, but not to `li` or `li #wag`, etc.
-
-Selectors targeting pseudo-elements are not considered comparable to similar selectors without the pseudo-element, because they target other elements on the rendered page. For example, `a::before {}` will not be compared to `a:hover {}`, because `a::before` targets a pseudo-element whereas `a:hover` targets the actual `<a>`.
-
-This rule only compares rules that are within the same media context. So `a {} @media print { #baz a {} }` is fine.
-
-This rule resolves nested selectors before calculating the specificity of the selectors.
-
-## DOM Limitations
-
-The linter can only check the CSS to check for specificity order. It does not have access to the HTML or DOM in order to interpret the use of the CSS.
-
-This can lead to valid linting errors appearing to be invalid at first glance.
-
-For example the following will cause an error:
-
-```css
-.component1 a {}
-.component1 a:hover {}
-.component2 a {}
-```
-
-This is a correct error because the `a:hover` on line 2 has a higher specificity than the `a` on line 3.
-
-This may lead to confusion because "the two selectors will never match the same `a` in the DOM". However, since the linter does not have access to the DOM it can not evaluate this, and therefore correctly reports the error about descending specificity.
-
-It may be possible to restructure your CSS to remove the error, otherwise it is recommended that you disable the rule for that line and leave a comment saying why the error should be ignored. Note that disabling the rule will cause additional valid errors from being reported.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-b a {}
-a {}
-```
-
-```css
-a + a {}
-a {}
-```
-
-```css
-b > a[foo] {}
-a[foo] {}
-```
-
-```css
-a {
- & > b {}
-}
-b {}
-```
-
-```css
-@media print {
- #c a {}
- a {}
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {}
-b a {}
-```
-
-```css
-a {}
-a + a {}
-```
-
-```css
-a[foo] {}
-b > a[foo] {}
-```
-
-```css
-b {}
-a {
- & > b {}
-}
-```
-
-```css
-a::before {}
-a:hover::before {}
-a {}
-a:hover {}
-```
-
-```css
-@media print {
- a {}
- #c a {}
-}
-```
-
-```css
-a {}
-@media print {
- #baz a {}
-}
-```
-
-### `ignore: ["selectors-within-list"]`
-
-Ignores selectors within list of selectors.
-
-The following patterns are considered violations:
-
-```css
-b a {}
-h1 {}
-h2 {}
-h3 {}
-a {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-b a {}
-h1, h2, h3, a {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/no-descending-specificity/index.js b/assets/node_modules/stylelint/lib/rules/no-descending-specificity/index.js
deleted file mode 100644
index 0229e9b..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-descending-specificity/index.js
+++ /dev/null
@@ -1,138 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const findAtRuleContext = require('../../utils/findAtRuleContext');
-const isCustomPropertySet = require('../../utils/isCustomPropertySet');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const isStandardSyntaxSelector = require('../../utils/isStandardSyntaxSelector');
-const keywordSets = require('../../reference/keywordSets');
-const nodeContextLookup = require('../../utils/nodeContextLookup');
-const optionsMatches = require('../../utils/optionsMatches');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const resolvedNestedSelector = require('postcss-resolve-nested-selector');
-const ruleMessages = require('../../utils/ruleMessages');
-const specificity = require('specificity');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'no-descending-specificity';
-
-const messages = ruleMessages(ruleName, {
- rejected: (b, a) => `Expected selector "${b}" to come before selector "${a}"`,
-});
-
-function rule(on, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: on,
- },
- {
- optional: true,
- actual: options,
- possible: {
- ignore: ['selectors-within-list'],
- },
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- const selectorContextLookup = nodeContextLookup();
-
- root.walkRules((rule) => {
- // Ignore custom property set `--foo: {};`
- if (isCustomPropertySet(rule)) {
- return;
- }
-
- // Ignore nested property `foo: {};`
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- // Ignores selectors within list of selectors
- if (optionsMatches(options, 'ignore', 'selectors-within-list') && rule.selectors.length > 1) {
- return;
- }
-
- const comparisonContext = selectorContextLookup.getContext(rule, findAtRuleContext(rule));
-
- rule.selectors.forEach((selector) => {
- const trimSelector = selector.trim();
-
- // Ignore `.selector, { }`
- if (trimSelector === '') {
- return;
- }
-
- // The edge-case of duplicate selectors will act acceptably
- const index = rule.selector.indexOf(trimSelector);
-
- // Resolve any nested selectors before checking
- resolvedNestedSelector(selector, rule).forEach((resolvedSelector) => {
- parseSelector(resolvedSelector, result, rule, (s) => {
- if (!isStandardSyntaxSelector(resolvedSelector)) {
- return;
- }
-
- checkSelector(s, rule, index, comparisonContext);
- });
- });
- });
- });
-
- function checkSelector(selectorNode, rule, sourceIndex, comparisonContext) {
- const selector = selectorNode.toString();
- const referenceSelectorNode = lastCompoundSelectorWithoutPseudoClasses(selectorNode);
- const selectorSpecificity = specificity.calculate(selector)[0].specificityArray;
- const entry = { selector, specificity: selectorSpecificity };
-
- if (!comparisonContext.has(referenceSelectorNode)) {
- comparisonContext.set(referenceSelectorNode, [entry]);
-
- return;
- }
-
- const priorComparableSelectors = comparisonContext.get(referenceSelectorNode);
-
- priorComparableSelectors.forEach((priorEntry) => {
- if (specificity.compare(selectorSpecificity, priorEntry.specificity) === -1) {
- report({
- ruleName,
- result,
- node: rule,
- message: messages.rejected(selector, priorEntry.selector),
- index: sourceIndex,
- });
- }
- });
-
- priorComparableSelectors.push(entry);
- }
- };
-}
-
-function lastCompoundSelectorWithoutPseudoClasses(selectorNode) {
- const nodesAfterLastCombinator = _.last(
- selectorNode.nodes[0].split((node) => {
- return node.type === 'combinator';
- }),
- );
-
- const nodesWithoutPseudoClasses = nodesAfterLastCombinator
- .filter((node) => {
- return node.type !== 'pseudo' || keywordSets.pseudoElements.has(node.value.replace(/:/g, ''));
- })
- .join('');
-
- return nodesWithoutPseudoClasses.toString();
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/no-duplicate-at-import-rules/README.md b/assets/node_modules/stylelint/lib/rules/no-duplicate-at-import-rules/README.md
deleted file mode 100644
index 1ff2953..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-duplicate-at-import-rules/README.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# no-duplicate-at-import-rules
-
-Disallow duplicate `@import` rules within a stylesheet.
-
-```css
- @import "a.css";
- @import "a.css";
-/** ↑
- * These are duplicates */
-```
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-@import 'a.css';
-@import 'a.css';
-```
-
-```css
-@import url("a.css");
-@import url("a.css");
-```
-
-```css
-@import "a.css";
-@import 'a.css';
-```
-
-```css
-@import "a.css";
-@import 'b.css';
-@import url(a.css);
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@import "a.css";
-@import "b.css";
-```
-
-```css
-@import url('a.css') projection;
-@import url('a.css') tv;
-```
diff --git a/assets/node_modules/stylelint/lib/rules/no-duplicate-at-import-rules/index.js b/assets/node_modules/stylelint/lib/rules/no-duplicate-at-import-rules/index.js
deleted file mode 100644
index 4596e82..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-duplicate-at-import-rules/index.js
+++ /dev/null
@@ -1,66 +0,0 @@
-'use strict';
-
-const mediaParser = require('postcss-media-query-parser').default;
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'no-duplicate-at-import-rules';
-
-const messages = ruleMessages(ruleName, {
- rejected: (atImport) => `Unexpected duplicate @import rule ${atImport}`,
-});
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- const imports = {};
-
- root.walkAtRules(/^import$/i, (atRule) => {
- const params = valueParser(atRule.params).nodes;
-
- if (!params.length) {
- return;
- }
-
- // extract uri from url() if exists
- const uri =
- params[0].type === 'function' && params[0].value === 'url'
- ? params[0].nodes[0].value
- : params[0].value;
- // extract media queries if any
- const media = mediaParser(valueParser.stringify(params.slice(1)))
- .nodes.map((n) => n.value.replace(/\s/g, ''))
- .filter((n) => n.length);
-
- const isDuplicate = media.length
- ? imports[uri] && media.some((q) => imports[uri].includes(q))
- : imports[uri];
-
- if (isDuplicate) {
- report({
- message: messages.rejected(uri),
- node: atRule,
- result,
- ruleName,
- });
-
- return;
- }
-
- if (!imports[uri]) imports[uri] = [];
-
- imports[uri] = imports[uri].concat(media);
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/no-duplicate-selectors/README.md b/assets/node_modules/stylelint/lib/rules/no-duplicate-selectors/README.md
deleted file mode 100644
index ce720dc..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-duplicate-selectors/README.md
+++ /dev/null
@@ -1,123 +0,0 @@
-# no-duplicate-selectors
-
-Disallow duplicate selectors within a stylesheet.
-
-```css
- .foo {} .bar {} .foo {}
-/** ↑ ↑
- * These duplicates */
-```
-
-This rule checks for two types of duplication:
-
-- Duplication of a single selector with a rule's selector list, e.g. `a, b, a {}`.
-- Duplication of a selector list within a stylesheet, e.g. `a, b {} a, b {}`. Duplicates are found even if the selectors come in different orders or have different spacing, e.g. `a d, b > c {} b>c, a d {}`.
-
-The same selector *is* allowed to repeat in the following circumstances:
-
-- It is used in different selector lists, e.g. `a {} a, b {}`.
-- The duplicates are determined to originate in different stylesheets, e.g. you have concatenated or compiled files in a way that produces sourcemaps for PostCSS to read, e.g. postcss-import.
-- The duplicates are in rules with different parent nodes, e.g. inside and outside of a media query.
-
-This rule resolves nested selectors. So `a b {} a { & b {} }` counts as a violation, because the resolved selectors end up with a duplicate.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-.foo,
-.bar,
-.foo {}
-```
-
-```css
-.foo {}
-.bar {}
-.foo {}
-```
-
-```css
-.foo .bar {}
-.bar {}
-.foo .bar {}
-```
-
-```css
-@media (min-width: 10px) {
- .foo {}
- .foo {}
-}
-```
-
-```css
-.foo, .bar {}
-.bar, .foo {}
-```
-
-```css
-a .foo, b + .bar {}
-b+.bar,
-a
- .foo {}
-```
-
-```css
-a b {}
-a {
- & b {}
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-.foo {}
-@media (min-width: 10px) {
- .foo {}
-}
-```
-
-```css
-.foo {
- .foo {}
-}
-```
-
-```css
-.foo {}
-.bar {}
-.foo .bar {}
-.bar .foo {}
-```
-
-```css
-a b {}
-a {
- & b,
- & c {}
-}
-```
-
-## Optional secondary options
-
-### `disallowInList: true | false` (default: `false`)
-
-This option will also disallow duplicate selectors within selector lists.
-
-For example, with `true`.
-
-The following patterns are considered violations:
-
-```css
-input, textarea {
- border: 2px;
-}
-
-textarea {
- border: 1px;
-}
-
-```
diff --git a/assets/node_modules/stylelint/lib/rules/no-duplicate-selectors/index.js b/assets/node_modules/stylelint/lib/rules/no-duplicate-selectors/index.js
deleted file mode 100644
index 1fd2069..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-duplicate-selectors/index.js
+++ /dev/null
@@ -1,136 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const findAtRuleContext = require('../../utils/findAtRuleContext');
-const isKeyframeRule = require('../../utils/isKeyframeRule');
-const nodeContextLookup = require('../../utils/nodeContextLookup');
-const normalizeSelector = require('normalize-selector');
-const report = require('../../utils/report');
-const resolvedNestedSelector = require('postcss-resolve-nested-selector');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'no-duplicate-selectors';
-
-const messages = ruleMessages(ruleName, {
- rejected: (selector, firstDuplicateLine) =>
- `Unexpected duplicate selector "${selector}", first used at line ${firstDuplicateLine}`,
-});
-
-function rule(actual, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- { actual },
- {
- actual: options,
- possible: {
- disallowInList: _.isBoolean,
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- // The top level of this map will be rule sources.
- // Each source maps to another map, which maps rule parents to a set of selectors.
- // This ensures that selectors are only checked against selectors
- // from other rules that share the same parent and the same source.
- const selectorContextLookup = nodeContextLookup();
-
- root.walkRules((rule) => {
- if (isKeyframeRule(rule)) {
- return;
- }
-
- const contextSelectorSet = selectorContextLookup.getContext(rule, findAtRuleContext(rule));
- const resolvedSelectors = rule.selectors.reduce((result, selector) => {
- return _.union(result, resolvedNestedSelector(selector, rule));
- }, []);
-
- const normalizedSelectorList = resolvedSelectors.map(normalizeSelector);
- const selectorLine = rule.source.start.line;
-
- // Complain if the same selector list occurs twice
-
- // Sort the selectors list so that the order of the constituents
- // doesn't matter
- const sortedSelectorList = normalizedSelectorList
- .slice()
- .sort()
- .join(',');
-
- const checkPreviousDuplicationPosition = (
- selectorList,
- { shouldDisallowDuplicateInList },
- ) => {
- let duplicationPosition = null;
-
- if (shouldDisallowDuplicateInList) {
- // iterate throw Map for checking, was used this selector in a group selector
- contextSelectorSet.forEach((selectorLine, selector) => {
- if (selector.includes(selectorList)) {
- duplicationPosition = selectorLine;
- }
- });
- } else {
- duplicationPosition = contextSelectorSet.get(selectorList);
- }
-
- return duplicationPosition;
- };
-
- const previousDuplicatePosition = checkPreviousDuplicationPosition(sortedSelectorList, {
- shouldDisallowDuplicateInList: _.get(options, 'disallowInList'),
- });
-
- if (previousDuplicatePosition) {
- // If the selector isn't nested we can use its raw value; otherwise,
- // we have to approximate something for the message -- which is close enough
- const isNestedSelector = resolvedSelectors.join(',') !== rule.selectors.join(',');
- const selectorForMessage = isNestedSelector ? resolvedSelectors.join(', ') : rule.selector;
-
- return report({
- result,
- ruleName,
- node: rule,
- message: messages.rejected(selectorForMessage, previousDuplicatePosition),
- });
- }
-
- const presentedSelectors = new Set();
- const reportedSelectors = new Set();
-
- // Or complain if one selector list contains the same selector more than one
- rule.selectors.forEach((selector) => {
- const normalized = normalizeSelector(selector);
-
- if (presentedSelectors.has(normalized)) {
- if (reportedSelectors.has(normalized)) {
- return;
- }
-
- report({
- result,
- ruleName,
- node: rule,
- message: messages.rejected(selector, selectorLine),
- });
- reportedSelectors.add(normalized);
- } else {
- presentedSelectors.add(normalized);
- }
- });
-
- contextSelectorSet.set(sortedSelectorList, selectorLine);
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/no-empty-first-line/README.md b/assets/node_modules/stylelint/lib/rules/no-empty-first-line/README.md
deleted file mode 100644
index d844100..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-empty-first-line/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# no-empty-first-line
-
-Disallow empty first lines.
-
-```css
- \n
- /** ↑
- * This newline */
- a { color: pink; }
-```
-
-This rule ignores empty sources. Use the [`no-empty-source`](../no-empty-source/README.md) rule to disallow these.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-\n
-a { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/no-empty-first-line/index.js b/assets/node_modules/stylelint/lib/rules/no-empty-first-line/index.js
deleted file mode 100644
index d2029b0..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-empty-first-line/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-'use strict';
-
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'no-empty-first-line';
-const noEmptyFirstLineTest = /^\s*[\r\n]/;
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected empty line',
-});
-
-function rule(actual, _, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions || root.source.inline || root.source.lang === 'object-literal') {
- return;
- }
-
- const rootString = context.fix ? root.toString() : root.source.input.css;
-
- if (!rootString.trim()) {
- return;
- }
-
- if (noEmptyFirstLineTest.test(rootString)) {
- if (context.fix) {
- root.nodes[0].raws.before = root.first.raws.before.trimLeft();
-
- return;
- }
-
- report({
- message: messages.rejected,
- node: root,
- result,
- ruleName,
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/no-empty-source/README.md b/assets/node_modules/stylelint/lib/rules/no-empty-source/README.md
deleted file mode 100644
index c22e54f..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-empty-source/README.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# no-empty-source
-
-Disallow empty sources.
-
-```css
- ···\n\t
-/** ↑
- * This empty source */
-```
-
-A source containing only whitespace is considered empty.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-
-```
-
-```css
-\t\t
-```
-
-```css
-\n
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {}
-```
-
-```css
-/* Only comments */
-```
diff --git a/assets/node_modules/stylelint/lib/rules/no-empty-source/index.js b/assets/node_modules/stylelint/lib/rules/no-empty-source/index.js
deleted file mode 100644
index 9965f2d..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-empty-source/index.js
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict';
-
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'no-empty-source';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected empty source',
-});
-
-function rule(actual, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- const rootString = context.fix ? root.toString() : root.source.input.css;
-
- if (rootString.trim()) {
- return;
- }
-
- report({
- message: messages.rejected,
- node: root,
- result,
- ruleName,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/no-eol-whitespace/README.md b/assets/node_modules/stylelint/lib/rules/no-eol-whitespace/README.md
deleted file mode 100644
index 1d97925..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-eol-whitespace/README.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# no-eol-whitespace
-
-Disallow end-of-line whitespace.
-
-```css
-a { color: pink; }···
-/** ↑
- * This whitespace */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix most of the problems reported by this rule.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }·
-```
-
-```css
-a { color: pink; }····
-```
-
-Comment strings are also checked -- so the following is a violation:
-
-```css
-/* something····
- * something else */
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-/* something
- * something else */
-```
-
-## Optional secondary options
-
-### `ignore: ["empty-lines"]`
-
-#### `"empty-lines"`
-
-Allow end-of-line whitespace for lines that are only whitespace, "empty" lines.
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- color: pink;
-··
- background: orange;
-}
-```
-
-```css
-····
-```
-
-```css
-a { color: pink; }
-····
-```
diff --git a/assets/node_modules/stylelint/lib/rules/no-eol-whitespace/index.js b/assets/node_modules/stylelint/lib/rules/no-eol-whitespace/index.js
deleted file mode 100644
index 1d90430..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-eol-whitespace/index.js
+++ /dev/null
@@ -1,257 +0,0 @@
-'use strict';
-
-const isOnlyWhitespace = require('../../utils/isOnlyWhitespace');
-const optionsMatches = require('../../utils/optionsMatches');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'no-eol-whitespace';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected whitespace at end of line',
-});
-
-const whitespacesToReject = new Set([' ', '\t']);
-
-function fixString(str) {
- return str.replace(/[ \t]+$/, '');
-}
-
-function findErrorStartIndex(
- lastEOLIndex,
- string,
- { ignoreEmptyLines, isRootFirst } = {
- ignoreEmptyLines: false,
- isRootFirst: false,
- },
-) {
- const eolWhitespaceIndex = lastEOLIndex - 1;
-
- // If the character before newline is not whitespace, ignore
- if (!whitespacesToReject.has(string[eolWhitespaceIndex])) {
- return -1;
- }
-
- if (ignoreEmptyLines) {
- // If there is only whitespace between the previous newline and
- // this newline, ignore
- const beforeNewlineIndex = string.lastIndexOf('\n', eolWhitespaceIndex);
-
- if (beforeNewlineIndex >= 0 || isRootFirst) {
- const line = string.substring(beforeNewlineIndex, eolWhitespaceIndex);
-
- if (isOnlyWhitespace(line)) {
- return -1;
- }
- }
- }
-
- return eolWhitespaceIndex;
-}
-
-function rule(on, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: on,
- },
- {
- optional: true,
- actual: options,
- possible: {
- ignore: ['empty-lines'],
- },
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- const ignoreEmptyLines = optionsMatches(options, 'ignore', 'empty-lines');
-
- if (context.fix) {
- fix(root);
- }
-
- const rootString = context.fix ? root.toString() : root.source.input.css;
- const reportFromIndex = (index) => {
- report({
- message: messages.rejected,
- node: root,
- index,
- result,
- ruleName,
- });
- };
-
- eachEolWhitespace(rootString, reportFromIndex, true);
-
- const errorIndex = findErrorStartIndex(rootString.length, rootString, {
- ignoreEmptyLines,
- isRootFirst: true,
- });
-
- if (errorIndex > -1) {
- reportFromIndex(errorIndex);
- }
-
- /**
- * Iterate each whitespace at the end of each line of the given string.
- * @param {string} string the source code string
- * @param {Function} callback callback the whitespace index at the end of each line.
- * @param {boolean} isRootFirst set `true` if the given string is the first token of the root.
- * @returns {void}
- */
- function eachEolWhitespace(string, callback, isRootFirst) {
- styleSearch(
- {
- source: string,
- target: ['\n', '\r'],
- comments: 'check',
- },
- (match) => {
- const errorIndex = findErrorStartIndex(match.startIndex, string, {
- ignoreEmptyLines,
- isRootFirst,
- });
-
- if (errorIndex > -1) {
- callback(errorIndex);
- }
- },
- );
- }
-
- function fix(root) {
- let isRootFirst = true;
-
- root.walk((node) => {
- fixText(
- node.raws.before,
- (fixed) => {
- node.raws.before = fixed;
- },
- isRootFirst,
- );
- isRootFirst = false;
-
- // AtRule
- fixText(node.raws.afterName, (fixed) => {
- node.raws.afterName = fixed;
- });
-
- if (node.raws.params) {
- fixText(node.raws.params.raw, (fixed) => {
- node.raws.params.raw = fixed;
- });
- } else {
- fixText(node.params, (fixed) => {
- node.params = fixed;
- });
- }
-
- // Rule
- if (node.raws.selector) {
- fixText(node.raws.selector.raw, (fixed) => {
- node.raws.selector.raw = fixed;
- });
- } else {
- fixText(node.selector, (fixed) => {
- node.selector = fixed;
- });
- }
-
- // AtRule or Rule or Decl
- fixText(node.raws.between, (fixed) => {
- node.raws.between = fixed;
- });
-
- // Decl
- if (node.raws.value) {
- fixText(node.raws.value.raw, (fixed) => {
- node.raws.value.raw = fixed;
- });
- } else {
- fixText(node.value, (fixed) => {
- node.value = fixed;
- });
- }
-
- // Comment
- fixText(node.raws.left, (fixed) => {
- node.raws.left = fixed;
- });
-
- if (node.raws.inline) {
- node.raws.right = fixString(node.raws.right);
- } else {
- fixText(node.raws.right, (fixed) => {
- node.raws.right = fixed;
- });
- }
-
- fixText(node.text, (fixed) => {
- node.text = fixed;
- });
-
- fixText(node.raws.after, (fixed) => {
- node.raws.after = fixed;
- });
- });
-
- fixText(
- root.raws.after,
- (fixed) => {
- root.raws.after = fixed;
- },
- isRootFirst,
- );
-
- if (typeof root.raws.after === 'string') {
- const lastEOL = Math.max(
- root.raws.after.lastIndexOf('\n'),
- root.raws.after.lastIndexOf('\r'),
- );
-
- if (lastEOL !== root.raws.after.length - 1) {
- root.raws.after =
- root.raws.after.slice(0, lastEOL + 1) + fixString(root.raws.after.slice(lastEOL + 1));
- }
- }
- }
-
- function fixText(value, fix, isRootFirst) {
- if (!value) {
- return;
- }
-
- let fixed = '';
- let lastIndex = 0;
-
- eachEolWhitespace(
- value,
- (index) => {
- const newlineIndex = index + 1;
-
- fixed += fixString(value.slice(lastIndex, newlineIndex));
- lastIndex = newlineIndex;
- },
- isRootFirst,
- );
-
- if (lastIndex) {
- fixed += value.slice(lastIndex);
- fix(fixed);
- }
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/no-extra-semicolons/README.md b/assets/node_modules/stylelint/lib/rules/no-extra-semicolons/README.md
deleted file mode 100644
index 6dfd638..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-extra-semicolons/README.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# no-extra-semicolons
-
-Disallow extra semicolons.
-
-```css
-a { color: pink;; }
-/** ↑
- * This semicolons */
-```
-
-This rule ignores semicolons after Less mixins.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-@import "x.css";;
-```
-
-```css
-@import "x.css";
-;
-```
-
-```css
-a {
- color: pink;;
-}
-```
-
-```css
-a {
- ;color: pink;
-}
-```
-
-```css
-a {
- color: pink;
- ;
-}
-```
-
-```css
-a {
- color: red;
-}
-;
-b {
- color: white;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@import "x.css";
-```
-
-```css
-a {
- color: pink;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/no-extra-semicolons/index.js b/assets/node_modules/stylelint/lib/rules/no-extra-semicolons/index.js
deleted file mode 100644
index 3fa52a3..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-extra-semicolons/index.js
+++ /dev/null
@@ -1,241 +0,0 @@
-'use strict';
-
-const isCustomPropertySet = require('../../utils/isCustomPropertySet');
-const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'no-extra-semicolons';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected extra semicolon',
-});
-
-function getOffsetByNode(node) {
- if (node.parent && node.parent.document) {
- return 0;
- }
-
- const string = node.root().source.input.css;
- const nodeColumn = node.source.start.column;
- const nodeLine = node.source.start.line;
- let line = 1;
- let column = 1;
- let index = 0;
-
- for (let i = 0; i < string.length; i++) {
- if (column === nodeColumn && nodeLine === line) {
- index = i;
- break;
- }
-
- if (string[i] === '\n') {
- column = 1;
- line += 1;
- } else {
- column += 1;
- }
- }
-
- return index;
-}
-
-function rule(actual, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- const rawAfterRoot = root.raws.after;
-
- if (rawAfterRoot && rawAfterRoot.trim().length !== 0) {
- const fixSemiIndices = [];
-
- styleSearch({ source: rawAfterRoot, target: ';' }, (match) => {
- if (context.fix) {
- fixSemiIndices.push(match.startIndex);
-
- return;
- }
-
- complain(root.source.input.css.length - rawAfterRoot.length + match.startIndex);
- });
-
- // fix
- if (fixSemiIndices.length) {
- root.raws.after = removeIndices(rawAfterRoot, fixSemiIndices);
- }
- }
-
- root.walk((node) => {
- if (node.type === 'atrule' && !isStandardSyntaxAtRule(node)) {
- return;
- }
-
- if (node.type === 'rule' && !isCustomPropertySet(node) && !isStandardSyntaxRule(node)) {
- return;
- }
-
- let rawBeforeNode = node.raws.before;
-
- if (rawBeforeNode && rawBeforeNode.trim().length !== 0) {
- let allowedSemi = 0;
-
- const next = node.next();
-
- // Ignore semicolon before comment if next node is custom properties sets or comment
- if (
- node.type === 'comment' &&
- next &&
- isCustomPropertySet(next) &&
- node.parent.index(next) > 0
- ) {
- allowedSemi = 1;
- }
-
- const prev = node.prev();
-
- let rawBeforeIndexStart = 0;
-
- // Adding previous node string to custom properties set if previous node is comment
- if (
- isCustomPropertySet(node) &&
- node.parent.index(node) > 0 &&
- prev &&
- prev.type === 'comment'
- ) {
- rawBeforeNode = prev.toString() + rawBeforeNode;
- allowedSemi = 0;
- rawBeforeIndexStart = prev.toString().length;
- }
-
- const fixSemiIndices = [];
-
- styleSearch({ source: rawBeforeNode, target: ';' }, (match, count) => {
- if (count === allowedSemi) {
- return;
- }
-
- if (context.fix) {
- fixSemiIndices.push(match.startIndex - rawBeforeIndexStart);
-
- return;
- }
-
- complain(getOffsetByNode(node) - rawBeforeNode.length + match.startIndex);
- });
-
- // fix
- if (fixSemiIndices.length) {
- node.raws.before = removeIndices(node.raws.before, fixSemiIndices);
- }
- }
-
- const rawAfterNode = node.raws.after;
-
- if (rawAfterNode && rawAfterNode.trim().length !== 0) {
- /**
- * If the last child is a Less mixin followed by more than one semicolon,
- * node.raws.after will be populated with that semicolon.
- * Since we ignore Less mixins, exit here
- */
- if (
- node.last &&
- node.last.type === 'atrule' &&
- !isCustomPropertySet(node.last) &&
- !isStandardSyntaxAtRule(node.last)
- ) {
- return;
- }
-
- const fixSemiIndices = [];
-
- styleSearch({ source: rawAfterNode, target: ';' }, (match) => {
- if (context.fix) {
- fixSemiIndices.push(match.startIndex);
-
- return;
- }
-
- const index =
- getOffsetByNode(node) +
- node.toString().length -
- 1 -
- rawAfterNode.length +
- match.startIndex;
-
- complain(index);
- });
-
- // fix
- if (fixSemiIndices.length) {
- node.raws.after = removeIndices(rawAfterNode, fixSemiIndices);
- }
- }
-
- const rawOwnSemicolon = node.raws.ownSemicolon;
-
- if (rawOwnSemicolon) {
- let allowedSemi = 0;
-
- if (isCustomPropertySet(node)) {
- allowedSemi = 1;
- }
-
- const fixSemiIndices = [];
-
- styleSearch({ source: rawOwnSemicolon, target: ';' }, (match, count) => {
- if (count === allowedSemi) {
- return;
- }
-
- if (context.fix) {
- fixSemiIndices.push(match.startIndex);
-
- return;
- }
-
- const index =
- getOffsetByNode(node) +
- node.toString().length -
- rawOwnSemicolon.length +
- match.startIndex;
-
- complain(index);
- });
-
- // fix
- if (fixSemiIndices.length) {
- node.raws.ownSemicolon = removeIndices(rawOwnSemicolon, fixSemiIndices);
- }
- }
- });
-
- function complain(index) {
- report({
- message: messages.rejected,
- node: root,
- index,
- result,
- ruleName,
- });
- }
-
- function removeIndices(str, indices) {
- indices.reverse().forEach((index) => {
- str = str.slice(0, index) + str.slice(index + 1);
- });
-
- return str;
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/no-invalid-double-slash-comments/README.md b/assets/node_modules/stylelint/lib/rules/no-invalid-double-slash-comments/README.md
deleted file mode 100644
index 4543b4f..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-invalid-double-slash-comments/README.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# no-invalid-double-slash-comments
-
-Disallow double-slash comments (`//...`) which are not supported by CSS and [could lead to unexpected results](https://stackoverflow.com/a/20192639/130652).
-
-```css
-a {
- //color: pink;
-}
-/** ↑
- * This comment */
-```
-
-If you are using a preprocessor that allows `//` single-line comments (e.g. Sass, Less, Stylus), this rule will not complain about those. They are compiled into standard CSS comments by your preprocessor, so stylelint will consider them valid. This rule only complains about the lesser-known method of using `//` to "comment out" a single-line of code in regular CSS. (If you didn't know this was possible, have a look at ["Single Line Comments (//) in CSS"](http://www.xanthir.com/b4U10)).
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a {
- //color: pink;
-}
-```
-
-```css
-//a { color: pink; }
-```
-
-```css
-// Comment {}
-a {
- color: pink;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- /* color: pink; */
-}
-```
-
-```css
-/* a { color: pink; } */
-```
diff --git a/assets/node_modules/stylelint/lib/rules/no-invalid-double-slash-comments/index.js b/assets/node_modules/stylelint/lib/rules/no-invalid-double-slash-comments/index.js
deleted file mode 100644
index 354823c..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-invalid-double-slash-comments/index.js
+++ /dev/null
@@ -1,48 +0,0 @@
-'use strict';
-
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'no-invalid-double-slash-comments';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected double-slash CSS comment',
-});
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- if (decl.prop.startsWith('//')) {
- report({
- message: messages.rejected,
- node: decl,
- result,
- ruleName,
- });
- }
- });
- root.walkRules((rule) => {
- rule.selectors.forEach((selector) => {
- if (selector.startsWith('//')) {
- report({
- message: messages.rejected,
- node: rule,
- result,
- ruleName,
- });
- }
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/no-missing-end-of-source-newline/README.md b/assets/node_modules/stylelint/lib/rules/no-missing-end-of-source-newline/README.md
deleted file mode 100644
index e34bc64..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-missing-end-of-source-newline/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# no-missing-end-of-source-newline
-
-Disallow missing end-of-source newlines.
-
-```css
- a { color: pink; }
- \n
-/** ↑
- * This newline */
-```
-
-Completely empty files are not considered violations.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-\n
-```
diff --git a/assets/node_modules/stylelint/lib/rules/no-missing-end-of-source-newline/index.js b/assets/node_modules/stylelint/lib/rules/no-missing-end-of-source-newline/index.js
deleted file mode 100644
index d4a6ad7..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-missing-end-of-source-newline/index.js
+++ /dev/null
@@ -1,50 +0,0 @@
-'use strict';
-
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'no-missing-end-of-source-newline';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected missing end-of-source newline',
-});
-
-function rule(primary, _, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { primary });
-
- if (!validOptions) {
- return;
- }
-
- if (root.source.inline || root.source.lang === 'object-literal') {
- return;
- }
-
- const rootString = context.fix ? root.toString() : root.source.input.css;
-
- if (!rootString.trim() || rootString.endsWith('\n')) {
- return;
- }
-
- // Fix
- if (context.fix) {
- root.raws.after = context.newline;
-
- return;
- }
-
- report({
- message: messages.rejected,
- node: root,
- index: rootString.length - 1,
- result,
- ruleName,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/no-unknown-animations/README.md b/assets/node_modules/stylelint/lib/rules/no-unknown-animations/README.md
deleted file mode 100644
index 54675ac..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-unknown-animations/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# no-unknown-animations
-
-Disallow unknown animations.
-
-```css
-a { animation-name: fancy-slide; }
-/** ↑
- * This animation name */
-
-a { animation: fancy-slide 2s linear; }
-/** ↑
- * And this one */
-```
-
-This rule considers the identifiers of `@keyframes` rules defined within the same source to be known.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a { animation-name: fancy-slide; }
-```
-
-```css
-a { animation: fancy-slide 2s linear; }
-```
-
-```css
-a { animation-name: fancccy-slide; }
-@keyframes fancy-slide {}
-```
-
-```css
-a { animation: linear 100ms fancccy-slide; }
-@keyframes fancy-slide {}
-```
-
-```css
-a { animation-name: jump; }
-@keyframes fancy-slide {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { animation-name: fancy-slide; }
-@keyframes fancy-slide {}
-```
-
-```css
-@keyframes fancy-slide {}
-a { animation-name: fancy-slide; }
-```
-
-```css
-@keyframes fancy-slide {}
-a { animation: fancy-slide 2s linear; }
-```
-
-```css
-a { animation: 100ms steps(12, end) fancy-slide; }
-@keyframes fancy-slide {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/no-unknown-animations/index.js b/assets/node_modules/stylelint/lib/rules/no-unknown-animations/index.js
deleted file mode 100644
index f62ce46..0000000
--- a/assets/node_modules/stylelint/lib/rules/no-unknown-animations/index.js
+++ /dev/null
@@ -1,62 +0,0 @@
-'use strict';
-
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const findAnimationName = require('../../utils/findAnimationName');
-const keywordSets = require('../../reference/keywordSets');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'no-unknown-animations';
-
-const messages = ruleMessages(ruleName, {
- rejected: (animationName) => `Unexpected unknown animation name "${animationName}"`,
-});
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- const declaredAnimations = new Set();
-
- root.walkAtRules(/(-(moz|webkit)-)?keyframes/i, (atRule) => {
- declaredAnimations.add(atRule.params);
- });
-
- root.walkDecls((decl) => {
- if (decl.prop.toLowerCase() === 'animation' || decl.prop.toLowerCase() === 'animation-name') {
- const animationNames = findAnimationName(decl.value);
-
- if (animationNames.length === 0) {
- return;
- }
-
- animationNames.forEach((animationNameNode) => {
- if (keywordSets.animationNameKeywords.has(animationNameNode.value.toLowerCase())) {
- return;
- }
-
- if (declaredAnimations.has(animationNameNode.value)) {
- return;
- }
-
- report({
- result,
- ruleName,
- message: messages.rejected(animationNameNode.value),
- node: decl,
- index: declarationValueIndex(decl) + animationNameNode.sourceIndex,
- });
- });
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/number-leading-zero/README.md b/assets/node_modules/stylelint/lib/rules/number-leading-zero/README.md
deleted file mode 100644
index b664bd8..0000000
--- a/assets/node_modules/stylelint/lib/rules/number-leading-zero/README.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# number-leading-zero
-
-Require or disallow a leading zero for fractional numbers less than 1.
-
-```css
-a { line-height: 0.5; }
-/** ↑
- * This leading zero */
-```
-
-This rule ignores mixin parameters in Less.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a leading zero.
-
-The following patterns are considered violations:
-
-```css
-a { line-height: .5; }
-```
-
-```css
-a { transform: translate(2px, .4px); }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { line-height: 0.5; }
-```
-
-```css
-a { transform: translate(2px, 0.4px); }
-```
-
-### `"never"`
-
-There *must never* be a leading zero.
-
-The following patterns are considered violations:
-
-```css
-a { line-height: 0.5; }
-```
-
-```css
-a { transform: translate(2px, 0.4px); }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { line-height: .5; }
-```
-
-```css
-a { transform: translate(2px, .4px); }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/number-leading-zero/index.js b/assets/node_modules/stylelint/lib/rules/number-leading-zero/index.js
deleted file mode 100644
index b524b96..0000000
--- a/assets/node_modules/stylelint/lib/rules/number-leading-zero/index.js
+++ /dev/null
@@ -1,161 +0,0 @@
-'use strict';
-
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'number-leading-zero';
-
-const messages = ruleMessages(ruleName, {
- expected: 'Expected a leading zero',
- rejected: 'Unexpected leading zero',
-});
-
-function rule(expectation, secondary, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules((atRule) => {
- if (atRule.name.toLowerCase() === 'import') {
- return;
- }
-
- check(atRule, atRule.params, atRuleParamIndex);
- });
-
- root.walkDecls((decl) => check(decl, decl.value, declarationValueIndex));
-
- function check(node, value, getIndex) {
- const neverFixPositions = [];
- const alwaysFixPositions = [];
-
- // Get out quickly if there are no periods
- if (!value.includes('.')) {
- return;
- }
-
- valueParser(value).walk((valueNode) => {
- // Ignore `url` function
- if (valueNode.type === 'function' && valueNode.value.toLowerCase() === 'url') {
- return false;
- }
-
- // Ignore strings, comments, etc
- if (valueNode.type !== 'word') {
- return;
- }
-
- // Check leading zero
- if (expectation === 'always') {
- const match = /(?:\D|^)(\.\d+)/.exec(valueNode.value);
-
- if (match === null) {
- return;
- }
-
- // The regexp above consists of 2 capturing groups (or capturing parentheses).
- // We need the index of the second group. This makes sanse when we have "-.5" as an input
- // for regex. And we need the index of ".5".
- const capturingGroupIndex = match[0].length - match[1].length;
-
- const index = valueNode.sourceIndex + match.index + capturingGroupIndex;
-
- if (context.fix) {
- alwaysFixPositions.unshift({
- index,
- });
-
- return;
- }
-
- complain(messages.expected, node, getIndex(node) + index);
- }
-
- if (expectation === 'never') {
- const match = /(?:\D|^)(0+)(\.\d+)/.exec(valueNode.value);
-
- if (match === null) {
- return;
- }
-
- // The regexp above consists of 3 capturing groups (or capturing parentheses).
- // We need the index of the second group. This makes sanse when we have "-00.5"
- // as an input for regex. And we need the index of "00".
- const capturingGroupIndex = match[0].length - (match[1].length + match[2].length);
-
- const index = valueNode.sourceIndex + match.index + capturingGroupIndex;
-
- if (context.fix) {
- neverFixPositions.unshift({
- startIndex: index,
- // match[1].length is the length of our matched zero(s)
- endIndex: index + match[1].length,
- });
-
- return;
- }
-
- complain(messages.rejected, node, getIndex(node) + index);
- }
- });
-
- if (alwaysFixPositions.length) {
- alwaysFixPositions.forEach(function(fixPosition) {
- const index = fixPosition.index;
-
- if (node.type === 'atrule') {
- node.params = addLeadingZero(node.params, index);
- } else {
- node.value = addLeadingZero(node.value, index);
- }
- });
- }
-
- if (neverFixPositions.length) {
- neverFixPositions.forEach(function(fixPosition) {
- const startIndex = fixPosition.startIndex;
- const endIndex = fixPosition.endIndex;
-
- if (node.type === 'atrule') {
- node.params = removeLeadingZeros(node.params, startIndex, endIndex);
- } else {
- node.value = removeLeadingZeros(node.value, startIndex, endIndex);
- }
- });
- }
- }
-
- function complain(message, node, index) {
- report({
- result,
- ruleName,
- message,
- node,
- index,
- });
- }
- };
-}
-
-function addLeadingZero(input, index) {
- // eslint-disable-next-line prefer-template
- return input.slice(0, index) + '0' + input.slice(index);
-}
-
-function removeLeadingZeros(input, startIndex, endIndex) {
- return input.slice(0, startIndex) + input.slice(endIndex);
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/number-max-precision/README.md b/assets/node_modules/stylelint/lib/rules/number-max-precision/README.md
deleted file mode 100644
index 1f2fb2a..0000000
--- a/assets/node_modules/stylelint/lib/rules/number-max-precision/README.md
+++ /dev/null
@@ -1,93 +0,0 @@
-# number-max-precision
-
-Limit the number of decimal places allowed in numbers.
-
-```css
-a { top: 3.245634px; }
-/** ↑
- * This decimal place */
-```
-
-## Options
-
-`int`: Maximum number of decimal places allowed.
-
-For example, with `2`:
-
-The following patterns are considered violations:
-
-```css
-a { top: 3.245px; }
-```
-
-```css
-a { top: 3.245634px; }
-```
-
-```css
-@media (min-width: 3.234em) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { top: 3.24px; }
-```
-
-```css
-@media (min-width: 3.23em) {}
-```
-
-## Optional secondary options
-
-### `ignoreUnits: ["/regex/", /regex/, "string"]`
-
-Ignore the precision of numbers for values with the specified units.
-
-For example, with `2`.
-
-Given:
-
-```js
-["/^my-/", "%"]
-```
-
-The following patterns are considered violations:
-
-```css
-a { top: 3.245px; }
-```
-
-```css
-a { top: 3.245634px; }
-```
-
-```css
-@media (min-width: 3.234em) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { top: 3.245%; }
-```
-
-```css
-@media (min-width: 3.23em) {}
-```
-
-```css
-a {
- width: 10.5432%;
-}
-```
-
-```css
-a { top: 3.245my-unit; }
-```
-
-```css
-a {
- width: 10.989my-other-unit;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/number-max-precision/index.js b/assets/node_modules/stylelint/lib/rules/number-max-precision/index.js
deleted file mode 100644
index 37ca2ff..0000000
--- a/assets/node_modules/stylelint/lib/rules/number-max-precision/index.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const getUnitFromValueNode = require('../../utils/getUnitFromValueNode');
-const optionsMatches = require('../../utils/optionsMatches');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const _ = require('lodash');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'number-max-precision';
-
-const messages = ruleMessages(ruleName, {
- expected: (number, precision) => `Expected "${number}" to be "${number.toFixed(precision)}"`,
-});
-
-function rule(precision, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: precision,
- possible: [_.isNumber],
- },
- {
- optional: true,
- actual: options,
- possible: {
- ignoreUnits: [_.isString, _.isRegExp],
- },
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules((atRule) => {
- if (atRule.name.toLowerCase() === 'import') {
- return;
- }
-
- check(atRule, atRule.params, atRuleParamIndex);
- });
-
- root.walkDecls((decl) => check(decl, decl.value, declarationValueIndex));
-
- function check(node, value, getIndex) {
- // Get out quickly if there are no periods
- if (!value.includes('.')) {
- return;
- }
-
- valueParser(value).walk((valueNode) => {
- const unit = getUnitFromValueNode(valueNode);
-
- if (optionsMatches(options, 'ignoreUnits', unit)) {
- return;
- }
-
- // Ignore `url` function
- if (valueNode.type === 'function' && valueNode.value.toLowerCase() === 'url') {
- return false;
- }
-
- // Ignore strings, comments, etc
- if (valueNode.type !== 'word') {
- return;
- }
-
- const match = /\d*\.(\d+)/.exec(valueNode.value);
-
- if (match === null) {
- return;
- }
-
- if (match[1].length <= precision) {
- return;
- }
-
- report({
- result,
- ruleName,
- node,
- index: getIndex(node) + valueNode.sourceIndex + match.index,
- message: messages.expected(parseFloat(match[0]), precision),
- });
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/number-no-trailing-zeros/README.md b/assets/node_modules/stylelint/lib/rules/number-no-trailing-zeros/README.md
deleted file mode 100644
index c0f7e94..0000000
--- a/assets/node_modules/stylelint/lib/rules/number-no-trailing-zeros/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# number-no-trailing-zeros
-
-Disallow trailing zeros in numbers.
-
-```css
-a { top: 0.5000px; bottom: 1.0px; }
-/** ↑ ↑
- * These trailing zeros */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix some of the problems reported by this rule.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a { top: 1.0px }
-```
-
-```css
-a { top: 1.01000px }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { top: 1px }
-```
-
-```css
-a { top: 1.01px }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/number-no-trailing-zeros/index.js b/assets/node_modules/stylelint/lib/rules/number-no-trailing-zeros/index.js
deleted file mode 100644
index 4318bb1..0000000
--- a/assets/node_modules/stylelint/lib/rules/number-no-trailing-zeros/index.js
+++ /dev/null
@@ -1,117 +0,0 @@
-'use strict';
-
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'number-no-trailing-zeros';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected trailing zero(s)',
-});
-
-function rule(actual, secondary, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walkAtRules((atRule) => {
- if (atRule.name.toLowerCase() === 'import') {
- return;
- }
-
- check(atRule, atRule.params, atRuleParamIndex);
- });
-
- root.walkDecls((decl) => check(decl, decl.value, declarationValueIndex));
-
- function check(node, value, getIndex) {
- const fixPositions = [];
-
- // Get out quickly if there are no periods
- if (!value.includes('.')) {
- return;
- }
-
- valueParser(value).walk((valueNode) => {
- // Ignore `url` function
- if (valueNode.type === 'function' && valueNode.value.toLowerCase() === 'url') {
- return false;
- }
-
- // Ignore strings, comments, etc
- if (valueNode.type !== 'word') {
- return;
- }
-
- const match = /\.(\d*?)(0+)(?:\D|$)/.exec(valueNode.value);
-
- // match[1] is any numbers between the decimal and our trailing zero, could be empty
- // match[2] is our trailing zero(s)
- if (match === null) {
- return;
- }
-
- // our index is:
- // the index of our valueNode +
- // the index of our match +
- // 1 for our decimal +
- // the length of our potential non-zero number match (match[1])
- const index = valueNode.sourceIndex + match.index + 1 + match[1].length;
-
- // our startIndex is identical to our index except when we have only
- // trailing zeros after our decimal. in that case we don't need the decimal
- // either so we move our index back by 1.
- const startIndex = match[1].length > 0 ? index : index - 1;
-
- // our end index is our original index + the length of our trailing zeros
- const endIndex = index + match[2].length;
-
- if (context.fix) {
- fixPositions.unshift({
- startIndex,
- endIndex,
- });
-
- return;
- }
-
- report({
- message: messages.rejected,
- node,
- // this is the index of the _first_ trailing zero
- index: getIndex(node) + index,
- result,
- ruleName,
- });
- });
-
- if (fixPositions.length) {
- fixPositions.forEach(function(fixPosition) {
- const startIndex = fixPosition.startIndex;
- const endIndex = fixPosition.endIndex;
-
- if (node.type === 'atrule') {
- node.params = removeTrailingZeros(node.params, startIndex, endIndex);
- } else {
- node.value = removeTrailingZeros(node.value, startIndex, endIndex);
- }
- });
- }
- }
- };
-}
-
-function removeTrailingZeros(input, startIndex, endIndex) {
- return input.slice(0, startIndex) + input.slice(endIndex);
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/property-blacklist/README.md b/assets/node_modules/stylelint/lib/rules/property-blacklist/README.md
deleted file mode 100644
index 31049b2..0000000
--- a/assets/node_modules/stylelint/lib/rules/property-blacklist/README.md
+++ /dev/null
@@ -1,56 +0,0 @@
-# property-blacklist
-
-Specify a blacklist of disallowed properties.
-
-```css
-a { text-rendering: optimizeLegibility; }
-/** ↑
- * This property */
-```
-
-## Options
-
-`array|string`: `["array", "of", "unprefixed", /properties/ or "regex"]|"property"|"/regex/"`|/regex/
-
-If a string is surrounded with `"/"` (e.g. `"/^background/"`), it is interpreted as a regular expression. This allows, for example, easy targeting of shorthands: `/^background/` will match `background`, `background-size`, `background-color`, etc.
-
-Given:
-
-```js
-[ "text-rendering", "animation", "/^background/" ]
-```
-
-The following patterns are considered violations:
-
-```css
-a { text-rendering: optimizeLegibility; }
-```
-
-```css
-a {
- animation: my-animation 2s;
- color: pink;
-}
-```
-
-```css
-a { -webkit-animation: my-animation 2s; }
-```
-
-```css
-a { background: pink; }
-```
-
-```css
-a { background-size: cover; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a { no-background: sure; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/property-blacklist/index.js b/assets/node_modules/stylelint/lib/rules/property-blacklist/index.js
deleted file mode 100644
index 9e6493b..0000000
--- a/assets/node_modules/stylelint/lib/rules/property-blacklist/index.js
+++ /dev/null
@@ -1,58 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isCustomProperty = require('../../utils/isCustomProperty');
-const isStandardSyntaxProperty = require('../../utils/isStandardSyntaxProperty');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'property-blacklist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (property) => `Unexpected property "${property}"`,
-});
-
-function rule(blacklist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: blacklist,
- possible: [_.isString, _.isRegExp],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const prop = decl.prop;
-
- if (!isStandardSyntaxProperty(prop)) {
- return;
- }
-
- if (isCustomProperty(prop)) {
- return;
- }
-
- if (!matchesStringOrRegExp(postcss.vendor.unprefixed(prop), blacklist)) {
- return;
- }
-
- report({
- message: messages.rejected(prop),
- node: decl,
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/property-case/README.md b/assets/node_modules/stylelint/lib/rules/property-case/README.md
deleted file mode 100644
index 41e6f4b..0000000
--- a/assets/node_modules/stylelint/lib/rules/property-case/README.md
+++ /dev/null
@@ -1,147 +0,0 @@
-# property-case
-
-Specify lowercase or uppercase for properties.
-
-```css
- a { width: 1px; }
-/** ↑
- * This property */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"lower"|"upper"`
-
-### `"lower"`
-
-The following patterns are considered violations:
-
-```css
-a {
- Width: 1px
-}
-```
-
-```css
-a {
- WIDTH: 1px
-}
-```
-
-```css
-a {
- widtH: 1px
-}
-```
-
-```css
-a {
- border-Radius: 5px;
-}
-```
-
-```css
-a {
- -WEBKIT-animation-duration: 3s;
-}
-```
-
-```css
-@media screen and (orientation: landscape) {
- WiDtH: 500px;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- width: 1px
-}
-```
-
-```css
-a {
- border-radius: 5px;
-}
-```
-
-```css
-a {
- -webkit-animation-duration: 3s;
-}
-```
-
-```css
-@media screen and (orientation: landscape) {
- width: 500px;
-}
-```
-
-### `"upper"`
-
-The following patterns are considered violations:
-
-```css
-a {
- Width: 1px
-}
-```
-
-```css
-a {
- width: 1px
-}
-```
-
-```css
-a {
- widtH: 1px
-}
-```
-
-```css
-a {
- border-Radius: 5px;
-}
-```
-
-```css
-a {
- -WEBKIT-animation-duration: 3s;
-}
-```
-
-```css
-@media screen and (orientation: landscape) {
- WiDtH: 500px;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- WIDTH: 1px
-}
-```
-
-```css
-a {
- BORDER-RADIUS: 5px;
-}
-```
-
-```css
-a {
- -WEBKIT-ANIMATION-DURATION: 3s;
-}
-```
-
-```css
-@media screen and (orientation: landscape) {
- WIDTH: 500px;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/property-case/index.js b/assets/node_modules/stylelint/lib/rules/property-case/index.js
deleted file mode 100644
index 11a8cd2..0000000
--- a/assets/node_modules/stylelint/lib/rules/property-case/index.js
+++ /dev/null
@@ -1,61 +0,0 @@
-'use strict';
-
-const isCustomProperty = require('../../utils/isCustomProperty');
-const isStandardSyntaxProperty = require('../../utils/isStandardSyntaxProperty');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'property-case';
-
-const messages = ruleMessages(ruleName, {
- expected: (actual, expected) => `Expected "${actual}" to be "${expected}"`,
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['lower', 'upper'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const prop = decl.prop;
-
- if (!isStandardSyntaxProperty(prop)) {
- return;
- }
-
- if (isCustomProperty(prop)) {
- return;
- }
-
- const expectedProp = expectation === 'lower' ? prop.toLowerCase() : prop.toUpperCase();
-
- if (prop === expectedProp) {
- return;
- }
-
- if (context.fix) {
- decl.prop = expectedProp;
-
- return;
- }
-
- report({
- message: messages.expected(prop, expectedProp),
- node: decl,
- ruleName,
- result,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/property-no-unknown/README.md b/assets/node_modules/stylelint/lib/rules/property-no-unknown/README.md
deleted file mode 100644
index ccd13ff..0000000
--- a/assets/node_modules/stylelint/lib/rules/property-no-unknown/README.md
+++ /dev/null
@@ -1,150 +0,0 @@
-# property-no-unknown
-
-Disallow unknown properties.
-
-```css
-a { heigth: 100%; }
-/** ↑
- * This property */
-```
-
-This rule considers properties defined in the [CSS Specifications and browser specific properties](https://github.com/betit/known-css-properties#source) to be known.
-
-This rule ignores:
-
-- variables (`$sass`, `@less`, `--custom-property`)
-- vendor-prefixed properties (e.g., `-moz-align-self`, `-webkit-align-self`)
-
-Use option `checkPrefixed` described below to turn on checking of vendor-prefixed properties.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a {
- colr: blue;
-}
-```
-
-```css
-a {
- my-property: 1;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- color: green;
-}
-```
-
-```css
-a {
- fill: black;
-}
-```
-
-```css
-a {
- -moz-align-self: center;
-}
-```
-
-```css
-a {
- -webkit-align-self: center;
-}
-```
-
-```css
-a {
- align-self: center;
-}
-```
-
-## Optional secondary options
-
-### `ignoreProperties: ["/regex/", /regex/, "string"]`
-
-Given:
-
-```js
-["/^my-/", "custom"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- my-property: 10px;
-}
-```
-
-```css
-a {
- my-other-property: 10px;
-}
-```
-
-```css
-a {
- custom: 10px;
-}
-```
-
-### `ignoreSelectors: ["/regex/", /regex/, "string"]`
-
-Skips checking properties of the given selectors against this rule.
-
-Given:
-
-```js
-[":root"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-:root {
- my-property: blue;
-}
-```
-
-### `checkPrefixed: true | false` (default: `false`)
-
-If `true`, this rule will check vendor-prefixed properties.
-
-For example with `true`:
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- -webkit-overflow-scrolling: auto;
-}
-```
-
-```css
-a {
- -moz-box-flex: 0;
-}
-```
-
-The following patterns are considered violations:
-
-```css
-a {
- -moz-align-self: center;
-}
-```
-
-```css
-a {
- -moz-overflow-scrolling: center;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/property-no-unknown/index.js b/assets/node_modules/stylelint/lib/rules/property-no-unknown/index.js
deleted file mode 100644
index 311b021..0000000
--- a/assets/node_modules/stylelint/lib/rules/property-no-unknown/index.js
+++ /dev/null
@@ -1,90 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isCustomProperty = require('../../utils/isCustomProperty');
-const isStandardSyntaxDeclaration = require('../../utils/isStandardSyntaxDeclaration');
-const isStandardSyntaxProperty = require('../../utils/isStandardSyntaxProperty');
-const optionsMatches = require('../../utils/optionsMatches');
-const postcss = require('postcss');
-const properties = require('known-css-properties').all;
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'property-no-unknown';
-
-const messages = ruleMessages(ruleName, {
- rejected: (property) => `Unexpected unknown property "${property}"`,
-});
-
-function rule(actual, options) {
- const allValidProperties = new Set(properties);
-
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- { actual },
- {
- actual: options,
- possible: {
- ignoreProperties: [_.isString, _.isRegExp],
- checkPrefixed: _.isBoolean,
- ignoreSelectors: [_.isString, _.isRegExp],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- const shouldCheckPrefixed = _.get(options, 'checkPrefixed');
-
- root.walkDecls((decl) => {
- const prop = decl.prop;
-
- if (!isStandardSyntaxProperty(prop)) {
- return;
- }
-
- if (!isStandardSyntaxDeclaration(decl)) {
- return;
- }
-
- if (isCustomProperty(prop)) {
- return;
- }
-
- if (!shouldCheckPrefixed && postcss.vendor.prefix(prop)) {
- return;
- }
-
- if (optionsMatches(options, 'ignoreProperties', prop)) {
- return;
- }
-
- const { selector } = decl.parent;
-
- if (selector && optionsMatches(options, 'ignoreSelectors', selector)) {
- return;
- }
-
- if (allValidProperties.has(prop.toLowerCase())) {
- return;
- }
-
- report({
- message: messages.rejected(prop),
- node: decl,
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/property-no-vendor-prefix/README.md b/assets/node_modules/stylelint/lib/rules/property-no-vendor-prefix/README.md
deleted file mode 100644
index b1854a3..0000000
--- a/assets/node_modules/stylelint/lib/rules/property-no-vendor-prefix/README.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# property-no-vendor-prefix
-
-Disallow vendor prefixes for properties.
-
-```css
-a { -webkit-transform: scale(1); }
-/** ↑
- * This prefix */
-```
-
-This rule does not blanketly condemn vendor prefixes. Instead, it uses [Autoprefixer's](https://github.com/postcss/autoprefixer) up-to-date data (from [caniuse.com](http://caniuse.com/)) to know whether a vendor prefix should cause a violation or not. *If you've included a vendor prefixed property that has a standard alternative, one that Autoprefixer could take care of for you, this rule will complain about it*. If, however, you use a non-standard vendor-prefixed property, one that Autoprefixer would ignore and could not provide (such as `-webkit-touch-callout`), this rule will ignore it.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a { -webkit-transform: scale(1); }
-```
-
-```css
-a { -moz-columns: 2; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { transform: scale(1); }
-```
-
-```css
-a {
-columns: 2; }
-```
-
-```css
-a { -webkit-touch-callout: none; }
-```
-
-## Optional secondary options
-
-### `ignoreProperties: ["/regex/", /regex/, "string"]`
-
-Given:
-
-```js
-["transform", "columns"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { -webkit-transform: scale(1); }
-```
-
-```css
-a { -moz-columns: 2; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/property-no-vendor-prefix/index.js b/assets/node_modules/stylelint/lib/rules/property-no-vendor-prefix/index.js
deleted file mode 100644
index 3590897..0000000
--- a/assets/node_modules/stylelint/lib/rules/property-no-vendor-prefix/index.js
+++ /dev/null
@@ -1,68 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isAutoprefixable = require('../../utils/isAutoprefixable');
-const optionsMatches = require('../../utils/optionsMatches');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'property-no-vendor-prefix';
-
-const messages = ruleMessages(ruleName, {
- rejected: (property) => `Unexpected vendor-prefix "${property}"`,
-});
-
-function rule(actual, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- { actual },
- {
- optional: true,
- actual: options,
- possible: {
- ignoreProperties: [_.isString, _.isRegExp],
- },
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const prop = decl.prop;
- const unprefixedProp = postcss.vendor.unprefixed(prop);
-
- //return early if property is to be ignored
- if (optionsMatches(options, 'ignoreProperties', unprefixedProp)) {
- return;
- }
-
- // Make sure there's a vendor prefix,
- // but this isn't a custom property
-
- if (prop[0] !== '-' || prop[1] === '-') {
- return;
- }
-
- if (!isAutoprefixable.property(prop)) {
- return;
- }
-
- report({
- message: messages.rejected(prop),
- node: decl,
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/property-whitelist/README.md b/assets/node_modules/stylelint/lib/rules/property-whitelist/README.md
deleted file mode 100644
index 8847a90..0000000
--- a/assets/node_modules/stylelint/lib/rules/property-whitelist/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# property-whitelist
-
-Specify a whitelist of allowed properties.
-
-```css
-a { display: block; }
-/** ↑
- * This property */
-```
-
-This rule ignores variables (`$sass`, `@less`, `--custom-property`).
-
-## Options
-
-`array|string`: `["array", "of", "unprefixed", /properties/ or "regex"]|"property"|"/regex/"`|/regex/
-
-If a string is surrounded with `"/"` (e.g. `"/^background/"`), it is interpreted as a regular expression. This allows, for example, easy targeting of shorthands: `/^background/` will match `background`, `background-size`, `background-color`, etc.
-
-Given:
-
-```js
-["display", "animation", "/^background/"]
-```
-
-The following patterns are considered violations:
-
-```css
-a { color: pink; }
-```
-
-```css
-a {
- animation: my-animation 2s;
- color: pink;
-}
-```
-
-```css
-a { borkgrund: orange; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { display: block; }
-```
-
-```css
-a { -webkit-animation: my-animation 2s; }
-```
-
-```css
-a {
- animation: my-animation 2s;
- -webkit-animation: my-animation 2s;
- display: block;
-}
-```
-
-```css
-a { background: pink; }
-```
-
-```css
-a { background-color: pink; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/property-whitelist/index.js b/assets/node_modules/stylelint/lib/rules/property-whitelist/index.js
deleted file mode 100644
index 0ba2e24..0000000
--- a/assets/node_modules/stylelint/lib/rules/property-whitelist/index.js
+++ /dev/null
@@ -1,58 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isCustomProperty = require('../../utils/isCustomProperty');
-const isStandardSyntaxProperty = require('../../utils/isStandardSyntaxProperty');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'property-whitelist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (property) => `Unexpected property "${property}"`,
-});
-
-function rule(whitelist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: whitelist,
- possible: [_.isString, _.isRegExp],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const prop = decl.prop;
-
- if (!isStandardSyntaxProperty(prop)) {
- return;
- }
-
- if (isCustomProperty(prop)) {
- return;
- }
-
- if (matchesStringOrRegExp(postcss.vendor.unprefixed(prop), whitelist)) {
- return;
- }
-
- report({
- message: messages.rejected(prop),
- node: decl,
- result,
- ruleName,
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/rule-empty-line-before/README.md b/assets/node_modules/stylelint/lib/rules/rule-empty-line-before/README.md
deleted file mode 100644
index c4e376f..0000000
--- a/assets/node_modules/stylelint/lib/rules/rule-empty-line-before/README.md
+++ /dev/null
@@ -1,300 +0,0 @@
-# rule-empty-line-before
-
-Require or disallow an empty line before rules.
-
-```css
-a {}
- /* ← */
-b {} /* ↑ */
-/** ↑
- * This line */
-```
-
-This rule ignores rules that are the very first node in a source.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule. We recommend to enable [`indentation`](../indentation/README.md) rule for better autofixing results with this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be an empty line before rules.
-
-The following patterns are considered violations:
-
-```css
-a {} b {}
-```
-
-```css
-a {}
-b {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {}
-
-b {}
-```
-
-### `"never"`
-
-There *must never* be an empty line before rules.
-
-The following patterns are considered violations:
-
-```css
-a {}
-
-b {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {} b {}
-```
-
-```css
-a {}
-b {}
-```
-
-### `"always-multi-line"`
-
-There *must always* be an empty line before multi-line rules.
-
-The following patterns are considered violations:
-
-```css
-a {
- color: red;
-}
-b {
- color: blue;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- color: red;
-}
-
-b {
- color: blue;
-}
-```
-
-### `"never-multi-line"`
-
-There *must never* be an empty line before multi-line rules.
-
-The following patterns are considered violations:
-
-```css
-a {
- color: red;
-}
-
-b {
- color: blue;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- color: red;
-}
-b {
- color: blue;
-}
-```
-
-## Optional secondary options
-
-### `except: ["after-rule", "after-single-line-comment", "inside-block-and-after-rule", "inside-block", "first-nested"]`
-
-#### `"after-rule"`
-
-Reverse the primary option for rules that follow another rule.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```css
-a {}
-
-b {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {}
-b {}
-```
-
-#### `"after-single-line-comment"`
-
-Reverse the primary option for rules that follow a single-line comment.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```css
-/* comment */
-
-a {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-/* comment */
-a {}
-```
-
-#### `"inside-block-and-after-rule"`
-
-Reverse the primary option for rules that are inside a block and follow another rule.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```css
-@media {
-
- a {}
-
- b {}
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media {
- a {}
- b {}
-}
-```
-
-#### `"inside-block"`
-
-Reverse the primary option for rules that are inside a block.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```scss
-a {
- color: red;
-
- b {
- color: blue;
- }
-}
-
-```
-
-The following patterns are *not* considered violations:
-
-```scss
-a {
- color: red;
- b {
- color: blue;
- }
-}
-```
-
-#### `"first-nested"`
-
-Reverse the primary option for rules that are nested and the first child of their parent node.
-
-For example, with `"always"`:
-
-The following patterns are considered violations:
-
-```css
-@media {
-
- a {}
-
- b {}
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media {
- a {}
-
- b {}
-}
-```
-
-### `ignore: ["after-comment", "first-nested", "inside-block"]`
-
-#### `"after-comment"`
-
-Ignore rules that follow a comment.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-/* comment */
-a {}
-```
-
-#### `"first-nested"`
-
-Ignore rules that are nested and the first child of their parent node.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-@media {
- a {}
-
- b {}
-}
-```
-
-#### `"inside-block"`
-
-Ignore rules that are inside a block.
-
-For example, with `"always"`:
-
-The following patterns are *not* considered violations:
-
-```css
-@media {
- a {}
-}
-```
-
-```css
-@media {
- a {}
- b {}
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/rule-empty-line-before/index.js b/assets/node_modules/stylelint/lib/rules/rule-empty-line-before/index.js
deleted file mode 100644
index 9c15973..0000000
--- a/assets/node_modules/stylelint/lib/rules/rule-empty-line-before/index.js
+++ /dev/null
@@ -1,143 +0,0 @@
-'use strict';
-
-const addEmptyLineBefore = require('../../utils/addEmptyLineBefore');
-const getPreviousNonSharedLineCommentNode = require('../../utils/getPreviousNonSharedLineCommentNode');
-const hasEmptyLine = require('../../utils/hasEmptyLine');
-const isAfterSingleLineComment = require('../../utils/isAfterSingleLineComment');
-const isFirstNested = require('../../utils/isFirstNested');
-const isFirstNodeOfRoot = require('../../utils/isFirstNodeOfRoot');
-const isSingleLineString = require('../../utils/isSingleLineString');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const optionsMatches = require('../../utils/optionsMatches');
-const removeEmptyLinesBefore = require('../../utils/removeEmptyLinesBefore');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'rule-empty-line-before';
-
-const messages = ruleMessages(ruleName, {
- expected: 'Expected empty line before rule',
- rejected: 'Unexpected empty line before rule',
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: expectation,
- possible: ['always', 'never', 'always-multi-line', 'never-multi-line'],
- },
- {
- actual: options,
- possible: {
- ignore: ['after-comment', 'first-nested', 'inside-block'],
- except: [
- 'after-rule',
- 'after-single-line-comment',
- 'first-nested',
- 'inside-block-and-after-rule',
- 'inside-block',
- ],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- // Ignore the first node
- if (isFirstNodeOfRoot(rule)) {
- return;
- }
-
- // Optionally ignore the expectation if a comment precedes this node
- if (
- optionsMatches(options, 'ignore', 'after-comment') &&
- rule.prev() &&
- rule.prev().type === 'comment'
- ) {
- return;
- }
-
- // Optionally ignore the node if it is the first nested
- if (optionsMatches(options, 'ignore', 'first-nested') && isFirstNested(rule)) {
- return;
- }
-
- const isNested = rule.parent.type !== 'root';
-
- // Optionally ignore the expectation if inside a block
- if (optionsMatches(options, 'ignore', 'inside-block') && isNested) {
- return;
- }
-
- // Ignore if the expectation is for multiple and the rule is single-line
- if (expectation.includes('multi-line') && isSingleLineString(rule.toString())) {
- return;
- }
-
- let expectEmptyLineBefore = Boolean(expectation.includes('always'));
-
- // Optionally reverse the expectation if any exceptions apply
- if (
- (optionsMatches(options, 'except', 'first-nested') && isFirstNested(rule)) ||
- (optionsMatches(options, 'except', 'after-rule') && isAfterRule(rule)) ||
- (optionsMatches(options, 'except', 'inside-block-and-after-rule') &&
- isNested &&
- isAfterRule(rule)) ||
- (optionsMatches(options, 'except', 'after-single-line-comment') &&
- isAfterSingleLineComment(rule)) ||
- (optionsMatches(options, 'except', 'inside-block') && isNested)
- ) {
- expectEmptyLineBefore = !expectEmptyLineBefore;
- }
-
- const hasEmptyLineBefore = hasEmptyLine(rule.raws.before);
-
- // Return if the expectation is met
- if (expectEmptyLineBefore === hasEmptyLineBefore) {
- return;
- }
-
- // Fix
- if (context.fix) {
- if (expectEmptyLineBefore) {
- addEmptyLineBefore(rule, context.newline);
- } else {
- removeEmptyLinesBefore(rule, context.newline);
- }
-
- return;
- }
-
- const message = expectEmptyLineBefore ? messages.expected : messages.rejected;
-
- report({
- message,
- node: rule,
- result,
- ruleName,
- });
- });
- };
-}
-
-function isAfterRule(rule) {
- const prevNode = getPreviousNonSharedLineCommentNode(rule);
-
- return prevNode && prevNode.type === 'rule';
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-attribute-brackets-space-inside/README.md b/assets/node_modules/stylelint/lib/rules/selector-attribute-brackets-space-inside/README.md
deleted file mode 100644
index 408be93..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-attribute-brackets-space-inside/README.md
+++ /dev/null
@@ -1,95 +0,0 @@
-# selector-attribute-brackets-space-inside
-
-Require a single space or disallow whitespace on the inside of the brackets within attribute selectors.
-
-```css
- [ target=_blank ]
-/** ↑ ↑
- * The space inside these two brackets */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a single space inside the brackets.
-
-The following patterns are considered violations:
-
-```css
-[target] {}
-```
-
-```css
-[ target] {}
-```
-
-```css
-[target ] {}
-```
-
-```css
-[target=_blank] {}
-```
-
-```css
-[ target=_blank] {}
-```
-
-```css
-[target=_blank ] {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-[ target ] {}
-```
-
-```css
-[ target=_blank ] {}
-```
-
-### `"never"`
-
-There *must never* be whitespace on the inside the brackets.
-
-The following patterns are considered violations:
-
-```css
-[ target] {}
-```
-
-```css
-[target ] {}
-```
-
-```css
-[ target ] {}
-```
-
-```css
-[ target=_blank] {}
-```
-
-```css
-[target=_blank ] {}
-```
-
-```css
-[ target=_blank ] {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-[target] {}
-```
-
-```css
-[target=_blank] {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-attribute-brackets-space-inside/index.js b/assets/node_modules/stylelint/lib/rules/selector-attribute-brackets-space-inside/index.js
deleted file mode 100644
index 3a9c446..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-attribute-brackets-space-inside/index.js
+++ /dev/null
@@ -1,184 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-attribute-brackets-space-inside';
-
-const messages = ruleMessages(ruleName, {
- expectedOpening: 'Expected single space after "["',
- rejectedOpening: 'Unexpected whitespace after "["',
- expectedClosing: 'Expected single space before "]"',
- rejectedClosing: 'Unexpected whitespace before "]"',
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- if (!rule.selector.includes('[')) {
- return;
- }
-
- const selector = rule.raws.selector ? rule.raws.selector.raw : rule.selector;
-
- let hasFixed;
- const fixedSelector = parseSelector(selector, result, rule, (selectorTree) => {
- selectorTree.walkAttributes((attributeNode) => {
- const attributeSelectorString = attributeNode.toString();
-
- styleSearch({ source: attributeSelectorString, target: '[' }, (match) => {
- const nextCharIsSpace = attributeSelectorString[match.startIndex + 1] === ' ';
- const index = attributeNode.sourceIndex + match.startIndex + 1;
-
- if (nextCharIsSpace && expectation === 'never') {
- if (context.fix) {
- hasFixed = true;
- fixBefore(attributeNode);
-
- return;
- }
-
- complain(messages.rejectedOpening, index);
- }
-
- if (!nextCharIsSpace && expectation === 'always') {
- if (context.fix) {
- hasFixed = true;
- fixBefore(attributeNode);
-
- return;
- }
-
- complain(messages.expectedOpening, index);
- }
- });
-
- styleSearch({ source: attributeSelectorString, target: ']' }, (match) => {
- const prevCharIsSpace = attributeSelectorString[match.startIndex - 1] === ' ';
- const index = attributeNode.sourceIndex + match.startIndex - 1;
-
- if (prevCharIsSpace && expectation === 'never') {
- if (context.fix) {
- hasFixed = true;
- fixAfter(attributeNode);
-
- return;
- }
-
- complain(messages.rejectedClosing, index);
- }
-
- if (!prevCharIsSpace && expectation === 'always') {
- if (context.fix) {
- hasFixed = true;
- fixAfter(attributeNode);
-
- return;
- }
-
- complain(messages.expectedClosing, index);
- }
- });
- });
- });
-
- if (hasFixed) {
- if (!rule.raws.selector) {
- rule.selector = fixedSelector;
- } else {
- rule.raws.selector.raw = fixedSelector;
- }
- }
-
- function complain(message, index) {
- report({
- message,
- index,
- result,
- ruleName,
- node: rule,
- });
- }
- });
- };
-
- function fixBefore(attributeNode) {
- const rawAttrBefore = _.get(attributeNode, 'raws.spaces.attribute.before');
- const { attrBefore, setAttrBefore } = rawAttrBefore
- ? {
- attrBefore: rawAttrBefore,
- setAttrBefore(fixed) {
- attributeNode.raws.spaces.attribute.before = fixed;
- },
- }
- : {
- attrBefore: _.get(attributeNode, 'spaces.attribute.before', ''),
- setAttrBefore(fixed) {
- _.set(attributeNode, 'spaces.attribute.before', fixed);
- },
- };
-
- if (expectation === 'always') {
- setAttrBefore(attrBefore.replace(/^\s*/, ' '));
- } else if (expectation === 'never') {
- setAttrBefore(attrBefore.replace(/^\s*/, ''));
- }
- }
-
- function fixAfter(attributeNode) {
- let key;
-
- if (attributeNode.operator) {
- if (attributeNode.insensitive) {
- key = 'insensitive';
- } else {
- key = 'value';
- }
- } else {
- key = 'attribute';
- }
-
- const rawAfter = _.get(attributeNode, `raws.spaces.${key}.after`);
- const { after, setAfter } = rawAfter
- ? {
- after: rawAfter,
- setAfter(fixed) {
- attributeNode.raws.spaces[key].after = fixed;
- },
- }
- : {
- after: _.get(attributeNode, `spaces.${key}.after`, ''),
- setAfter(fixed) {
- _.set(attributeNode, `spaces.${key}.after`, fixed);
- },
- };
-
- if (expectation === 'always') {
- setAfter(after.replace(/\s*$/, ' '));
- } else if (expectation === 'never') {
- setAfter(after.replace(/\s*$/, ''));
- }
- }
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-blacklist/README.md b/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-blacklist/README.md
deleted file mode 100644
index efc3091..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-blacklist/README.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# selector-attribute-operator-blacklist
-
-Specify a blacklist of disallowed attribute operators.
-
-```css
-[target="_blank"] {}
-/** ↑
- * This operator */
-```
-
-## Options
-
-`array|string`: `["array", "of", "operators"]|"operator"`
-
-Given:
-
-```js
-[ "*=" ]
-```
-
-The following patterns are considered violations:
-
-```css
-[class*="test"] {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-[target] {}
-```
-
-```css
-[target="_blank"] {}
-```
-
-```css
-[class|="top"] {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-blacklist/index.js b/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-blacklist/index.js
deleted file mode 100644
index 9d02e62..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-blacklist/index.js
+++ /dev/null
@@ -1,63 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-attribute-operator-blacklist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (operator) => `Unexpected operator "${operator}"`,
-});
-
-function rule(blacklistInput) {
- const blacklist = [].concat(blacklistInput);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: blacklist,
- possible: [_.isString],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- if (!rule.selector.includes('[') || !rule.selector.includes('=')) {
- return;
- }
-
- parseSelector(rule.selector, result, rule, (selectorTree) => {
- selectorTree.walkAttributes((attributeNode) => {
- const operator = attributeNode.operator;
-
- if (!operator || (operator && !blacklist.includes(operator))) {
- return;
- }
-
- report({
- message: messages.rejected(operator),
- node: rule,
- index: attributeNode.sourceIndex + attributeNode.offsetOf('operator'),
- result,
- ruleName,
- });
- });
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-after/README.md b/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-after/README.md
deleted file mode 100644
index 3196e54..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-after/README.md
+++ /dev/null
@@ -1,135 +0,0 @@
-# selector-attribute-operator-space-after
-
-Require a single space or disallow whitespace after operators within attribute selectors.
-
-```css
-[target= _blank]
-/** ↑
- * The space after operator */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a single space after the operator.
-
-The following patterns are considered violations:
-
-```css
-[target=_blank] {}
-```
-
-```css
-[target =_blank] {}
-```
-
-```css
-[target='_blank'] {}
-```
-
-```css
-[target="_blank"] {}
-```
-
-```css
-[target ='_blank'] {}
-```
-
-```css
-[target ="_blank"] {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-[target] {}
-```
-
-```css
-[target= _blank] {}
-```
-
-```css
-[target= '_blank'] {}
-```
-
-```css
-[target= "_blank"] {}
-```
-
-```css
-[target = _blank] {}
-```
-
-```css
-[target = '_blank'] {}
-```
-
-```css
-[target = "_blank"] {}
-```
-
-### `"never"`
-
-There *must never* be a single space after the operator.
-
-The following patterns are considered violations:
-
-```css
-[target= _blank] {}
-```
-
-```css
-[target = _blank] {}
-```
-
-```css
-[target= '_blank'] {}
-```
-
-```css
-[target= "_blank"] {}
-```
-
-```css
-[target = '_blank'] {}
-```
-
-```css
-[target = "_blank"] {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-[target] {}
-```
-
-```css
-[target=_blank] {}
-```
-
-```css
-[target='_blank'] {}
-```
-
-```css
-[target="_blank"] {}
-```
-
-```css
-[target =_blank] {}
-```
-
-```css
-[target ='_blank'] {}
-```
-
-```css
-[target ="_blank"] {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-after/index.js b/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-after/index.js
deleted file mode 100644
index a6db9c2..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-after/index.js
+++ /dev/null
@@ -1,89 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const ruleMessages = require('../../utils/ruleMessages');
-const selectorAttributeOperatorSpaceChecker = require('../selectorAttributeOperatorSpaceChecker');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'selector-attribute-operator-space-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: (operator) => `Expected single space after "${operator}"`,
- rejectedAfter: (operator) => `Unexpected whitespace after "${operator}"`,
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const checker = whitespaceChecker('space', expectation, messages);
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- selectorAttributeOperatorSpaceChecker({
- root,
- result,
- locationChecker: checker.after,
- checkedRuleName: ruleName,
- checkBeforeOperator: false,
- fix: context.fix
- ? (attributeNode) => {
- const { operatorAfter, setOperatorAfter } = (() => {
- const rawOperator = _.get(attributeNode, 'raws.operator');
-
- if (rawOperator) {
- const operatorAfter = rawOperator.slice(attributeNode.operator.length);
-
- return {
- operatorAfter,
- setOperatorAfter(fixed) {
- delete attributeNode.raws.operator;
- _.set(attributeNode, 'raws.spaces.operator.after', fixed);
- },
- };
- }
-
- const rawOperatorAfter = _.get(attributeNode, 'raws.spaces.operator.after');
-
- if (rawOperatorAfter) {
- return {
- operatorAfter: rawOperatorAfter,
- setOperatorAfter(fixed) {
- attributeNode.raws.spaces.operator.after = fixed;
- },
- };
- }
-
- return {
- operatorAfter: _.get(attributeNode, 'spaces.operator.after', ''),
- setOperatorAfter(fixed) {
- _.set(attributeNode, 'spaces.operator.after', fixed);
- },
- };
- })();
-
- if (expectation === 'always') {
- setOperatorAfter(operatorAfter.replace(/^\s*/, ' '));
-
- return true;
- }
-
- if (expectation === 'never') {
- setOperatorAfter(operatorAfter.replace(/^\s*/, ''));
-
- return true;
- }
- }
- : null,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-before/README.md b/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-before/README.md
deleted file mode 100644
index f031ada..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-before/README.md
+++ /dev/null
@@ -1,135 +0,0 @@
-# selector-attribute-operator-space-before
-
-Require a single space or disallow whitespace before operators within attribute selectors.
-
-```css
-[target =_blank]
-/** ↑
- * The space before operator */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a single space before the operator.
-
-The following patterns are considered violations:
-
-```css
-[target=_blank] {}
-```
-
-```css
-[target= _blank] {}
-```
-
-```css
-[target='_blank'] {}
-```
-
-```css
-[target="_blank"] {}
-```
-
-```css
-[target= '_blank'] {}
-```
-
-```css
-[target= "_blank"] {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-[target] {}
-```
-
-```css
-[target =_blank] {}
-```
-
-```css
-[target ='_blank'] {}
-```
-
-```css
-[target ="_blank"] {}
-```
-
-```css
-[target = _blank] {}
-```
-
-```css
-[target = '_blank'] {}
-```
-
-```css
-[target = "_blank"] {}
-```
-
-### `"never"`
-
-There *must never* be a single space before the operator.
-
-The following patterns are considered violations:
-
-```css
-[target =_blank] {}
-```
-
-```css
-[target = _blank] {}
-```
-
-```css
-[target ='_blank'] {}
-```
-
-```css
-[target ="_blank"] {}
-```
-
-```css
-[target = '_blank'] {}
-```
-
-```css
-[target = "_blank"] {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-[target] {}
-```
-
-```css
-[target=_blank] {}
-```
-
-```css
-[target='_blank'] {}
-```
-
-```css
-[target="_blank"] {}
-```
-
-```css
-[target= _blank] {}
-```
-
-```css
-[target= '_blank'] {}
-```
-
-```css
-[target= "_blank"] {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-before/index.js b/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-before/index.js
deleted file mode 100644
index ea966b9..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-space-before/index.js
+++ /dev/null
@@ -1,71 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const ruleMessages = require('../../utils/ruleMessages');
-const selectorAttributeOperatorSpaceChecker = require('../selectorAttributeOperatorSpaceChecker');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'selector-attribute-operator-space-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: (operator) => `Expected single space before "${operator}"`,
- rejectedBefore: (operator) => `Unexpected whitespace before "${operator}"`,
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- selectorAttributeOperatorSpaceChecker({
- root,
- result,
- locationChecker: checker.before,
- checkedRuleName: ruleName,
- checkBeforeOperator: true,
- fix: context.fix
- ? (attributeNode) => {
- const rawAttrAfter = _.get(attributeNode, 'raws.spaces.attribute.after');
- const { attrAfter, setAttrAfter } = rawAttrAfter
- ? {
- attrAfter: rawAttrAfter,
- setAttrAfter(fixed) {
- attributeNode.raws.spaces.attribute.after = fixed;
- },
- }
- : {
- attrAfter: _.get(attributeNode, 'spaces.attribute.after', ''),
- setAttrAfter(fixed) {
- _.set(attributeNode, 'spaces.attribute.after', fixed);
- },
- };
-
- if (expectation === 'always') {
- setAttrAfter(attrAfter.replace(/\s*$/, ' '));
-
- return true;
- }
-
- if (expectation === 'never') {
- setAttrAfter(attrAfter.replace(/\s*$/, ''));
-
- return true;
- }
- }
- : null,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-whitelist/README.md b/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-whitelist/README.md
deleted file mode 100644
index 7a1f678..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-whitelist/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# selector-attribute-operator-whitelist
-
-Specify a whitelist of allowed attribute operators.
-
-```css
-[target="_blank"] {}
-/** ↑
- * This operator */
-```
-
-## Options
-
-`array|string`: `["array", "of", "operators"]|"operator"`
-
-Given:
-
-```js
-[ "=", "|=" ]
-```
-
-The following patterns are considered violations:
-
-```css
-[class*="test"] {}
-```
-
-```css
-[title~="flower"] {}
-```
-
-```css
-[class^="top"] {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-[target] {}
-```
-
-```css
-[target="_blank"] {}
-```
-
-```css
-[class|="top"] {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-whitelist/index.js b/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-whitelist/index.js
deleted file mode 100644
index cbec00e..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-attribute-operator-whitelist/index.js
+++ /dev/null
@@ -1,63 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-attribute-operator-whitelist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (operator) => `Unexpected operator "${operator}"`,
-});
-
-function rule(whitelistInput) {
- const whitelist = [].concat(whitelistInput);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: whitelist,
- possible: [_.isString],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- if (!rule.selector.includes('[') || !rule.selector.includes('=')) {
- return;
- }
-
- parseSelector(rule.selector, result, rule, (selectorTree) => {
- selectorTree.walkAttributes((attributeNode) => {
- const operator = attributeNode.operator;
-
- if (!operator || (operator && whitelist.includes(operator))) {
- return;
- }
-
- report({
- message: messages.rejected(operator),
- node: rule,
- index: attributeNode.sourceIndex + attributeNode.offsetOf('operator'),
- result,
- ruleName,
- });
- });
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-attribute-quotes/README.md b/assets/node_modules/stylelint/lib/rules/selector-attribute-quotes/README.md
deleted file mode 100644
index 9c93aee..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-attribute-quotes/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# selector-attribute-quotes
-
-Require or disallow quotes for attribute values.
-
-```css
-[target="_blank"] {}
-/** ↑ ↑
- * These quotes */
-```
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-Attribute values *must always* be quoted.
-
-The following patterns are considered violations:
-
-```css
-[title=flower] {}
-```
-
-```css
-[class^=top] {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-[title] {}
-```
-
-```css
-[target="_blank"] {}
-```
-
-```css
-[class|="top"] {}
-```
-
-```css
-[title~='text'] {}
-```
-
-```css
-[data-attribute='component'] {}
-```
-
-### `"never"`
-
-Attribute values *must never* be quoted.
-
-The following patterns are considered violations:
-
-```css
-[target="_blank"] {}
-```
-
-```css
-[class|="top"] {}
-```
-
-```css
-[title~='text'] {}
-```
-
-```css
-[data-attribute='component'] {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-[title] {}
-```
-
-```css
-[title=flower] {}
-```
-
-```css
-[class^=top] {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-attribute-quotes/index.js b/assets/node_modules/stylelint/lib/rules/selector-attribute-quotes/index.js
deleted file mode 100644
index 40029e2..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-attribute-quotes/index.js
+++ /dev/null
@@ -1,75 +0,0 @@
-'use strict';
-
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-attribute-quotes';
-
-const messages = ruleMessages(ruleName, {
- expected: (value) => `Expected quotes around "${value}"`,
- rejected: (value) => `Unexpected quotes around "${value}"`,
-});
-
-function rule(expectation) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- if (!rule.selector.includes('[') || !rule.selector.includes('=')) {
- return;
- }
-
- parseSelector(rule.selector, result, rule, (selectorTree) => {
- selectorTree.walkAttributes((attributeNode) => {
- if (!attributeNode.operator) {
- return;
- }
-
- const attributeSelectorString = attributeNode.toString();
-
- if (!attributeNode.quoted && expectation === 'always') {
- complain(
- messages.expected(attributeNode.raws.unquoted),
- attributeNode.sourceIndex + attributeSelectorString.indexOf(attributeNode.value),
- );
- }
-
- if (attributeNode.quoted && expectation === 'never') {
- complain(
- messages.rejected(attributeNode.raws.unquoted),
- attributeNode.sourceIndex + attributeSelectorString.indexOf(attributeNode.value),
- );
- }
- });
- });
-
- function complain(message, index) {
- report({
- message,
- index,
- result,
- ruleName,
- node: rule,
- });
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-class-pattern/README.md b/assets/node_modules/stylelint/lib/rules/selector-class-pattern/README.md
deleted file mode 100644
index 68997fe..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-class-pattern/README.md
+++ /dev/null
@@ -1,99 +0,0 @@
-# selector-class-pattern
-
-Specify a pattern for class selectors.
-
-```css
- .foo, #bar.baz span, #hoo[disabled] { color: pink; }
-/** ↑ ↑
- * These class selectors */
-```
-
-This rule ignores non-outputting Less mixin definitions and called Less mixins.
-
-Escaped selectors (e.g. `.u-size-11\/12\@sm`) are parsed as escaped twice (e.g. `.u-size-11\\/12\\@sm`). Your RegExp should account for that.
-
-## Options
-
-`regex|string`
-
-A string will be translated into a RegExp like so `new RegExp(yourString)` — so be sure to escape properly.
-
-The selector value *after `.`* will be checked. No need to include `.` in your pattern.
-
-Given the string:
-
-```js
-"foo-[a-z]+"
-```
-
-The following patterns are considered violations:
-
-```css
-.foop {}
-```
-
-```css
-.foo-BAR {}
-```
-
-```css
-div > #zing + .foo-BAR {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-.foo-bar {}
-```
-
-```css
-div > #zing + .foo-bar {}
-```
-
-```css
-#foop {}
-```
-
-```css
-[foo='bar'] {}
-```
-
-```less
-.foop() {}
-```
-
-```less
-.foo-bar {
- .foop;
-}
-```
-
-## Optional secondary options
-
-### `resolveNestedSelectors: true | false` (default: `false`)
-
-This option will resolve nested selectors with `&` interpolation.
-
-For example, with `true`.
-
-Given the string:
-
-```js
-"^[A-Z]+$"
-```
-
-The following patterns are considered violations:
-
-```css
-.A {
- &__B {} /* resolved to ".A__B" */
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-.A {
- &B {} /* resolved to ".AB" */
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-class-pattern/index.js b/assets/node_modules/stylelint/lib/rules/selector-class-pattern/index.js
deleted file mode 100644
index b1c30a6..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-class-pattern/index.js
+++ /dev/null
@@ -1,119 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isKeyframeSelector = require('../../utils/isKeyframeSelector');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const isStandardSyntaxSelector = require('../../utils/isStandardSyntaxSelector');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const resolveNestedSelector = require('postcss-resolve-nested-selector');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-class-pattern';
-
-const messages = ruleMessages(ruleName, {
- expected: (selectorValue) =>
- `Expected class selector ".${selectorValue}" to match specified pattern`,
-});
-
-function rule(pattern, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: pattern,
- possible: [_.isRegExp, _.isString],
- },
- {
- actual: options,
- possible: {
- resolveNestedSelectors: _.isBoolean,
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- const shouldResolveNestedSelectors = _.get(options, 'resolveNestedSelectors');
- const normalizedPattern = _.isString(pattern) ? new RegExp(pattern) : pattern;
-
- root.walkRules((rule) => {
- const selector = rule.selector;
- const selectors = rule.selectors;
-
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- if (selectors.some((s) => isKeyframeSelector(s))) {
- return;
- }
-
- // Only bother resolving selectors that have an interpolating &
- if (shouldResolveNestedSelectors && hasInterpolatingAmpersand(selector)) {
- resolveNestedSelector(selector, rule).forEach((selector) => {
- if (!isStandardSyntaxSelector(selector)) {
- return;
- }
-
- parseSelector(selector, result, rule, (s) => checkSelector(s, rule));
- });
- } else {
- parseSelector(selector, result, rule, (s) => checkSelector(s, rule));
- }
- });
-
- function checkSelector(fullSelector, rule) {
- fullSelector.walkClasses((classNode) => {
- const value = classNode.value;
- const sourceIndex = classNode.sourceIndex;
-
- if (normalizedPattern.test(value)) {
- return;
- }
-
- report({
- result,
- ruleName,
- message: messages.expected(value),
- node: rule,
- index: sourceIndex,
- });
- });
- }
- };
-}
-
-// An "interpolating ampersand" means an "&" used to interpolate
-// within another simple selector, rather than an "&" that
-// stands on its own as a simple selector
-function hasInterpolatingAmpersand(selector) {
- for (let i = 0, l = selector.length; i < l; i++) {
- if (selector[i] !== '&') {
- continue;
- }
-
- if (selector[i - 1] !== undefined && !isCombinator(selector[i - 1])) {
- return true;
- }
-
- if (selector[i + 1] !== undefined && !isCombinator(selector[i + 1])) {
- return true;
- }
- }
-
- return false;
-}
-
-function isCombinator(x) {
- return /[\s+>~]/.test(x);
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-combinator-blacklist/README.md b/assets/node_modules/stylelint/lib/rules/selector-combinator-blacklist/README.md
deleted file mode 100644
index 63ecf1d..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-combinator-blacklist/README.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# selector-combinator-blacklist
-
-Specify a blacklist of disallowed combinators.
-
-```css
- a + b {}
-/** ↑
- * This combinator */
-```
-
-This rule normalizes the whitespace descendant combinator to be a single space.
-
-This rule ignores [reference combinators](https://www.w3.org/TR/selectors4/#idref-combinators) e.g. `/for/`.
-
-## Options
-
-`array|string`: `["array", "of", "combinators"]|"combinator"`
-
-Given:
-
-```js
-[">", " "]
-```
-
-The following patterns are considered violations:
-
-```css
-a > b {}
-```
-
-```css
-a b {}
-```
-
-```css
-a
-b {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a + b {}
-```
-
-```css
-a ~ b {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-combinator-blacklist/index.js b/assets/node_modules/stylelint/lib/rules/selector-combinator-blacklist/index.js
deleted file mode 100644
index c21604b..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-combinator-blacklist/index.js
+++ /dev/null
@@ -1,68 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxCombinator = require('../../utils/isStandardSyntaxCombinator');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-combinator-blacklist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (combinator) => `Unexpected combinator "${combinator}"`,
-});
-
-function rule(blacklist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: blacklist,
- possible: [_.isString],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- const selector = rule.selector;
-
- parseSelector(selector, result, rule, (fullSelector) => {
- fullSelector.walkCombinators((combinatorNode) => {
- if (!isStandardSyntaxCombinator(combinatorNode)) {
- return;
- }
-
- const value = normalizeCombinator(combinatorNode.value);
-
- if (!blacklist.includes(value)) {
- return;
- }
-
- report({
- result,
- ruleName,
- message: messages.rejected(value),
- node: rule,
- index: combinatorNode.sourceIndex,
- });
- });
- });
- });
- };
-}
-
-function normalizeCombinator(value) {
- return value.replace(/\s+/g, ' ');
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-combinator-space-after/README.md b/assets/node_modules/stylelint/lib/rules/selector-combinator-space-after/README.md
deleted file mode 100644
index 7151d2e..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-combinator-space-after/README.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# selector-combinator-space-after
-
-Require a single space or disallow whitespace after the combinators of selectors.
-
-```css
- a > b + c ~ d e >>> f { color: pink; }
-/** ↑ ↑ ↑ ↑ ↑
- * These are combinators */
-```
-
-Combinators are used to combine several different selectors into new and more specific ones. There are several types of combinators, including: child (`>`), adjacent sibling (`+`), general sibling (`~`), and descendant (which is represented by a blank space between two selectors).
-
-The descendant combinator is *not* checked by this rule.
-
-Also, `+` and `-` signs within `:nth-*()` arguments are not checked (e.g. `a:nth-child(2n+1)`).
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a single space after the combinators.
-
-The following patterns are considered violations:
-
-```css
-a +b { color: pink; }
-```
-
-```css
-a>b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a + b { color: pink; }
-```
-
-```css
-a> b { color: pink; }
-```
-
-### `"never"`
-
-There *must never* be whitespace after the combinators.
-
-The following patterns are considered violations:
-
-```css
-a + b { color: pink; }
-```
-
-```css
-a> b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a +b { color: pink; }
-```
-
-```css
-a>b { color: pink; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-combinator-space-after/index.js b/assets/node_modules/stylelint/lib/rules/selector-combinator-space-after/index.js
deleted file mode 100644
index dfb3bcc..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-combinator-space-after/index.js
+++ /dev/null
@@ -1,55 +0,0 @@
-'use strict';
-
-const ruleMessages = require('../../utils/ruleMessages');
-const selectorCombinatorSpaceChecker = require('../selectorCombinatorSpaceChecker');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'selector-combinator-space-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: (combinator) => `Expected single space after "${combinator}"`,
- rejectedAfter: (combinator) => `Unexpected whitespace after "${combinator}"`,
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- selectorCombinatorSpaceChecker({
- root,
- result,
- locationChecker: checker.after,
- locationType: 'after',
- checkedRuleName: ruleName,
- fix: context.fix
- ? (combinator) => {
- if (expectation === 'always') {
- combinator.spaces.after = ' ';
-
- return true;
- }
-
- if (expectation === 'never') {
- combinator.spaces.after = '';
-
- return true;
- }
- }
- : null,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-combinator-space-before/README.md b/assets/node_modules/stylelint/lib/rules/selector-combinator-space-before/README.md
deleted file mode 100644
index 3f0e294..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-combinator-space-before/README.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# selector-combinator-space-before
-
-Require a single space or disallow whitespace before the combinators of selectors.
-
-```css
- a > b + c ~ d e >>> f { color: pink; }
-/** ↑ ↑ ↑ ↑ ↑
- * These are combinators */
-```
-
-Combinators are used to combine several different selectors into new and more specific ones. There are several types of combinators, including: child (`>`), adjacent sibling (`+`), general sibling (`~`), and descendant (which is represented by a blank space between two selectors).
-
-The descendant combinator is *not* checked by this rule.
-
-Also, `+` and `-` signs within `:nth-*()` arguments are not checked (e.g. `a:nth-child(2n+1)`).
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a single space before the combinators.
-
-The following patterns are considered violations:
-
-```css
-a+ b { color: pink; }
-```
-
-```css
-a>b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a + b { color: pink; }
-```
-
-```css
-a >b { color: pink; }
-```
-
-### `"never"`
-
-There *must never* be whitespace before the combinators.
-
-The following patterns are considered violations:
-
-```css
-a + b { color: pink; }
-```
-
-```css
-a >b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a+ b { color: pink; }
-```
-
-```css
-a>b { color: pink; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-combinator-space-before/index.js b/assets/node_modules/stylelint/lib/rules/selector-combinator-space-before/index.js
deleted file mode 100644
index a6d15d2..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-combinator-space-before/index.js
+++ /dev/null
@@ -1,55 +0,0 @@
-'use strict';
-
-const ruleMessages = require('../../utils/ruleMessages');
-const selectorCombinatorSpaceChecker = require('../selectorCombinatorSpaceChecker');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'selector-combinator-space-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: (combinator) => `Expected single space before "${combinator}"`,
- rejectedBefore: (combinator) => `Unexpected whitespace before "${combinator}"`,
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- selectorCombinatorSpaceChecker({
- root,
- result,
- locationChecker: checker.before,
- locationType: 'before',
- checkedRuleName: ruleName,
- fix: context.fix
- ? (combinator) => {
- if (expectation === 'always') {
- combinator.spaces.before = ' ';
-
- return true;
- }
-
- if (expectation === 'never') {
- combinator.spaces.before = '';
-
- return true;
- }
- }
- : null,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-combinator-whitelist/README.md b/assets/node_modules/stylelint/lib/rules/selector-combinator-whitelist/README.md
deleted file mode 100644
index db4ec8c..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-combinator-whitelist/README.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# selector-combinator-whitelist
-
-Specify a whitelist of allowed combinators.
-
-```css
- a + b {}
-/** ↑
- * This combinator */
-```
-
-This rule normalizes the whitespace descendant combinator to be a single space.
-
-This rule ignores [reference combinators](https://www.w3.org/TR/selectors4/#idref-combinators) e.g. `/for/`.
-
-## Options
-
-`array|string`: `["array", "of", "combinators"]|"combinator"`
-
-Given:
-
-```js
-[">", " "]
-```
-
-The following patterns are considered violations:
-
-```css
-a + b {}
-```
-
-```css
-a ~ b {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a > b {}
-```
-
-```css
-a b {}
-```
-
-```css
-a
-b {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-combinator-whitelist/index.js b/assets/node_modules/stylelint/lib/rules/selector-combinator-whitelist/index.js
deleted file mode 100644
index be967af..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-combinator-whitelist/index.js
+++ /dev/null
@@ -1,68 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxCombinator = require('../../utils/isStandardSyntaxCombinator');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-combinator-whitelist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (combinator) => `Unexpected combinator "${combinator}"`,
-});
-
-function rule(whitelist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: whitelist,
- possible: [_.isString],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- const selector = rule.selector;
-
- parseSelector(selector, result, rule, (fullSelector) => {
- fullSelector.walkCombinators((combinatorNode) => {
- if (!isStandardSyntaxCombinator(combinatorNode)) {
- return;
- }
-
- const value = normalizeCombinator(combinatorNode.value);
-
- if (whitelist.includes(value)) {
- return;
- }
-
- report({
- result,
- ruleName,
- message: messages.rejected(value),
- node: rule,
- index: combinatorNode.sourceIndex,
- });
- });
- });
- });
- };
-}
-
-function normalizeCombinator(value) {
- return value.replace(/\s+/g, ' ');
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-descendant-combinator-no-non-space/README.md b/assets/node_modules/stylelint/lib/rules/selector-descendant-combinator-no-non-space/README.md
deleted file mode 100644
index ce50278..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-descendant-combinator-no-non-space/README.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# selector-descendant-combinator-no-non-space
-
-Disallow non-space characters for descendant combinators of selectors.
-
-```css
-.foo .bar .baz {}
-/** ↑ ↑
-* These descendant combinators */
-```
-
-This rule ensures that only a single space is used and ensures no tabs, newlines, nor multiple spaces are used for descendant combinators of selectors.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix most of the problems reported by this rule.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-.foo .bar {}
-```
-
-```css
-.foo
-.bar {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-.foo .bar {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-descendant-combinator-no-non-space/index.js b/assets/node_modules/stylelint/lib/rules/selector-descendant-combinator-no-non-space/index.js
deleted file mode 100644
index 864b171..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-descendant-combinator-no-non-space/index.js
+++ /dev/null
@@ -1,147 +0,0 @@
-'use strict';
-
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const parseSelector = require('../../utils/parseSelector');
-const punctuationSets = require('../../reference/punctuationSets');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-descendant-combinator-no-non-space';
-
-const messages = ruleMessages(ruleName, {
- rejected: (nonSpaceCharacter) => `Unexpected "${nonSpaceCharacter}"`,
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- let hasFixed = false;
- const selector = rule.raws.selector ? rule.raws.selector.raw : rule.selector;
-
- const fixedSelector = parseSelector(selector, result, rule, (fullSelector) => {
- fullSelector.walkCombinators((combinatorNode) => {
- if (!isActuallyCombinator(combinatorNode)) {
- return;
- }
-
- const value = combinatorNode.value;
-
- if (punctuationSets.nonSpaceCombinators.has(value)) {
- return;
- }
-
- if (
- value.includes(' ') ||
- value.includes('\t') ||
- value.includes('\n') ||
- value.includes('\r')
- ) {
- if (context.fix && /^\s+$/.test(value)) {
- hasFixed = true;
- combinatorNode.value = ' ';
-
- return;
- }
-
- report({
- result,
- ruleName,
- message: messages.rejected(value),
- node: rule,
- index: combinatorNode.sourceIndex,
- });
- }
- });
- });
-
- if (hasFixed) {
- if (!rule.raws.selector) {
- rule.selector = fixedSelector;
- } else {
- rule.raws.selector.raw = fixedSelector;
- }
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
-
-/**
- * Check whether is actually a combinator.
- * @param {Node} combinatorNode The combinator node
- * @returns {boolean} `true` if is actually a combinator.
- */
-function isActuallyCombinator(combinatorNode) {
- // `.foo /*comment*/, .bar`
- // ^^
- // If include comments, this spaces is a combinator, but it is not combinators.
- if (!/^\s+$/.test(combinatorNode.value)) {
- return true;
- }
-
- let next = combinatorNode.next();
-
- while (skipTest(next)) {
- next = next.next();
- }
-
- if (isNonTarget(next)) {
- return false;
- }
-
- let prev = combinatorNode.prev();
-
- while (skipTest(prev)) {
- prev = prev.prev();
- }
-
- if (isNonTarget(prev)) {
- return false;
- }
-
- return true;
-
- function skipTest(node) {
- if (!node) {
- return false;
- }
-
- if (node.type === 'comment') {
- return true;
- }
-
- if (node.type === 'combinator' && /^\s+$/.test(node.value)) {
- return true;
- }
-
- return false;
- }
-
- function isNonTarget(node) {
- if (!node) {
- return true;
- }
-
- if (node.type === 'combinator' && !/^\s+$/.test(node.value)) {
- return true;
- }
-
- return false;
- }
-}
diff --git a/assets/node_modules/stylelint/lib/rules/selector-id-pattern/README.md b/assets/node_modules/stylelint/lib/rules/selector-id-pattern/README.md
deleted file mode 100644
index 7e8414b..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-id-pattern/README.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# selector-id-pattern
-
-Specify a pattern for ID selectors.
-
-```css
-.foo, #bar.baz a, #hoo[disabled] { color: pink; }
-/** ↑ ↑
- * These ID selectors */
-```
-
-## Options
-
-`regex|string`
-
-A string will be translated into a RegExp like so `new RegExp(yourString)` — so be sure to escape properly.
-
-The selector value *after `#`* will be checked. No need to include `#` in your pattern.
-
-Given the string:
-
-```js
-"foo-[a-z]+"
-```
-
-The following patterns are considered violations:
-
-```css
-#foop {}
-```
-
-```css
-#foo-BAR {}
-```
-
-```css
-div > .zing + #foo-BAR {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-#foo-bar {}
-```
-
-```css
-div > .zing + #foo-bar {}
-```
-
-```css
-.foop {}
-```
-
-```css
-[foo='bar'] {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-id-pattern/index.js b/assets/node_modules/stylelint/lib/rules/selector-id-pattern/index.js
deleted file mode 100644
index 5fa94ae..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-id-pattern/index.js
+++ /dev/null
@@ -1,65 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-id-pattern';
-
-const messages = ruleMessages(ruleName, {
- expected: (selectorValue) =>
- `Expected ID selector "#${selectorValue}" to match specified pattern`,
-});
-
-function rule(pattern) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: pattern,
- possible: [_.isRegExp, _.isString],
- });
-
- if (!validOptions) {
- return;
- }
-
- const normalizedPattern = _.isString(pattern) ? new RegExp(pattern) : pattern;
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- const selector = rule.selector;
-
- parseSelector(selector, result, rule, (fullSelector) => {
- fullSelector.walk((selectorNode) => {
- if (selectorNode.type !== 'id') {
- return;
- }
-
- const value = selectorNode.value;
- const sourceIndex = selectorNode.sourceIndex;
-
- if (normalizedPattern.test(value)) {
- return;
- }
-
- report({
- result,
- ruleName,
- message: messages.expected(value),
- node: rule,
- index: sourceIndex,
- });
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-after/README.md b/assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-after/README.md
deleted file mode 100644
index 3ba159e..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-after/README.md
+++ /dev/null
@@ -1,106 +0,0 @@
-# selector-list-comma-newline-after
-
-Require a newline or disallow whitespace after the commas of selector lists.
-
-```css
- a,
- b↑{ color: pink; }
-/** ↑
- * The newline after this comma */
-```
-
-End-of-line comments are allowed one space after the comma.
-
-```css
-a, /* comment */
-b { color: pink; }
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline after the commas.
-
-The following patterns are considered violations:
-
-```css
-a, b { color: pink; }
-```
-
-```css
-a
-, b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a,
-b { color: pink; }
-```
-
-```css
-a
-,
-b { color: pink; }
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline after the commas in multi-line selector lists.
-
-The following patterns are considered violations:
-
-```css
-a
-, b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a, b { color: pink; }
-```
-
-```css
-a,
-b { color: pink; }
-```
-
-```css
-a
-,
-b { color: pink; }
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace after the commas in multi-line selector lists.
-
-The following patterns are considered violations:
-
-```css
-a
-, b { color: pink; }
-```
-
-```css
-a,
-b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a,b { color: pink; }
-```
-
-```css
-a
-,b { color: pink; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-after/index.js b/assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-after/index.js
deleted file mode 100644
index 3cb6b4b..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-after/index.js
+++ /dev/null
@@ -1,115 +0,0 @@
-'use strict';
-
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'selector-list-comma-newline-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected newline after ","',
- expectedAfterMultiLine: () => 'Expected newline after "," in a multi-line list',
- rejectedAfterMultiLine: () => 'Unexpected whitespace after "," in a multi-line list',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('newline', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-multi-line', 'never-multi-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- // Get raw selector so we can allow end-of-line comments, e.g.
- // a, /* comment */
- // b {}
- const selector = rule.raws.selector ? rule.raws.selector.raw : rule.selector;
-
- const fixIndices = [];
-
- styleSearch(
- {
- source: selector,
- target: ',',
- functionArguments: 'skip',
- },
- (match) => {
- const nextChars = selector.substr(match.endIndex, selector.length - match.endIndex);
-
- // If there's a // comment, that means there has to be a newline
- // ending the comment so we're fine
- if (/^\s+\/\//.test(nextChars)) {
- return;
- }
-
- // If there are spaces and then a comment begins, look for the newline
- const indextoCheckAfter = /^\s+\/\*/.test(nextChars)
- ? selector.indexOf('*/', match.endIndex) + 1
- : match.startIndex;
-
- checker.afterOneOnly({
- source: selector,
- index: indextoCheckAfter,
- err: (m) => {
- if (context.fix) {
- fixIndices.push(indextoCheckAfter + 1);
-
- return;
- }
-
- report({
- message: m,
- node: rule,
- index: match.startIndex,
- result,
- ruleName,
- });
- },
- });
- },
- );
-
- if (fixIndices.length) {
- let fixedSelector = selector;
-
- fixIndices
- .sort((a, b) => b - a)
- .forEach((index) => {
- const beforeSelector = fixedSelector.slice(0, index);
- let afterSelector = fixedSelector.slice(index);
-
- if (expectation.startsWith('always')) {
- afterSelector = context.newline + afterSelector;
- } else if (expectation.startsWith('never-multi-line')) {
- afterSelector = afterSelector.replace(/^\s*/, '');
- }
-
- fixedSelector = beforeSelector + afterSelector;
- });
-
- if (rule.raws.selector) {
- rule.raws.selector.raw = fixedSelector;
- } else {
- rule.selector = fixedSelector;
- }
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-before/README.md b/assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-before/README.md
deleted file mode 100644
index 1219964..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-before/README.md
+++ /dev/null
@@ -1,99 +0,0 @@
-# selector-list-comma-newline-before
-
-Require a newline or disallow whitespace before the commas of selector lists.
-
-```css
- a
- , b { color: pink; }
-/** ↑
- * The newline before this comma */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline before the commas.
-
-The following patterns are considered violations:
-
-```css
-a, b { color: pink; }
-```
-
-```css
-a,
-b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a
-, b { color: pink; }
-```
-
-```css
-a
-,b { color: pink; }
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline before the commas in multi-line selector lists.
-
-The following patterns are considered violations:
-
-```css
-a,
-b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a, b { color: pink; }
-```
-
-```css
-a
-,b { color: pink; }
-```
-
-```css
-a
-,
-b { color: pink; }
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace before the commas in multi-line selector lists.
-
-The following patterns are considered violations:
-
-```css
-a
-, b { color: pink; }
-```
-
-```css
-a
-,
-b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a,b { color: pink; }
-```
-
-```css
-a,
-b { color: pink; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-before/index.js b/assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-before/index.js
deleted file mode 100644
index 111ffff..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-list-comma-newline-before/index.js
+++ /dev/null
@@ -1,89 +0,0 @@
-'use strict';
-
-const ruleMessages = require('../../utils/ruleMessages');
-const selectorListCommaWhitespaceChecker = require('../selectorListCommaWhitespaceChecker');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'selector-list-comma-newline-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected newline before ","',
- expectedBeforeMultiLine: () => 'Expected newline before "," in a multi-line list',
- rejectedBeforeMultiLine: () => 'Unexpected whitespace before "," in a multi-line list',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('newline', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-multi-line', 'never-multi-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- let fixData;
-
- selectorListCommaWhitespaceChecker({
- root,
- result,
- locationChecker: checker.beforeAllowingIndentation,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (ruleNode, index) => {
- fixData = fixData || new Map();
- const commaIndices = fixData.get(ruleNode) || [];
-
- commaIndices.push(index);
- fixData.set(ruleNode, commaIndices);
-
- return true;
- }
- : null,
- });
-
- if (fixData) {
- fixData.forEach((commaIndices, ruleNode) => {
- let selector = ruleNode.raws.selector ? ruleNode.raws.selector.raw : ruleNode.selector;
-
- commaIndices
- .sort((a, b) => b - a)
- .forEach((index) => {
- let beforeSelector = selector.slice(0, index);
- const afterSelector = selector.slice(index);
-
- if (expectation.startsWith('always')) {
- const spaceIndex = beforeSelector.search(/\s+$/);
-
- if (spaceIndex >= 0) {
- beforeSelector =
- beforeSelector.slice(0, spaceIndex) +
- context.newline +
- beforeSelector.slice(spaceIndex);
- } else {
- beforeSelector += context.newline;
- }
- } else if (expectation === 'never-multi-line') {
- beforeSelector = beforeSelector.replace(/\s*$/, '');
- }
-
- selector = beforeSelector + afterSelector;
- });
-
- if (ruleNode.raws.selector) {
- ruleNode.raws.selector.raw = selector;
- } else {
- ruleNode.selector = selector;
- }
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-list-comma-space-after/README.md b/assets/node_modules/stylelint/lib/rules/selector-list-comma-space-after/README.md
deleted file mode 100644
index 7ec006a..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-list-comma-space-after/README.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# selector-list-comma-space-after
-
-Require a single space or disallow whitespace after the commas of selector lists.
-
-```css
- a, b { color: pink; }
-/** ↑
- * The space after this comma */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"never-single-line"`
-
-### `"always"`
-
-There *must always* be a single space after the commas.
-
-The following patterns are considered violations:
-
-```css
-a,b { color: pink; }
-```
-
-```css
-a ,b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a, b { color: pink; }
-```
-
-```css
-a , b { color: pink; }
-```
-
-### `"never"`
-
-There *must never* be whitespace after the commas.
-
-The following patterns are considered violations:
-
-```css
-a, b { color: pink; }
-```
-
-```css
-a , b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a,b { color: pink; }
-```
-
-```css
-a ,b { color: pink; }
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space after the commas in single-line selector lists.
-
-The following patterns are considered violations:
-
-```css
-a,b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a
-,b { color: pink; }
-```
-
-### `"never-single-line"`
-
-There *must never* be a single space after the commas in single-line selector lists.
-
-The following patterns are considered violations:
-
-```css
-a, b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a
-, b { color: pink; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-list-comma-space-after/index.js b/assets/node_modules/stylelint/lib/rules/selector-list-comma-space-after/index.js
deleted file mode 100644
index faf406e..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-list-comma-space-after/index.js
+++ /dev/null
@@ -1,81 +0,0 @@
-'use strict';
-
-const ruleMessages = require('../../utils/ruleMessages');
-const selectorListCommaWhitespaceChecker = require('../selectorListCommaWhitespaceChecker');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'selector-list-comma-space-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected single space after ","',
- rejectedAfter: () => 'Unexpected whitespace after ","',
- expectedAfterSingleLine: () => 'Expected single space after "," in a single-line list',
- rejectedAfterSingleLine: () => 'Unexpected whitespace after "," in a single-line list',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never', 'always-single-line', 'never-single-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- let fixData;
-
- selectorListCommaWhitespaceChecker({
- root,
- result,
- locationChecker: checker.after,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (ruleNode, index) => {
- fixData = fixData || new Map();
- const commaIndices = fixData.get(ruleNode) || [];
-
- commaIndices.push(index);
- fixData.set(ruleNode, commaIndices);
-
- return true;
- }
- : null,
- });
-
- if (fixData) {
- fixData.forEach((commaIndices, ruleNode) => {
- let selector = ruleNode.raws.selector ? ruleNode.raws.selector.raw : ruleNode.selector;
-
- commaIndices
- .sort((a, b) => b - a)
- .forEach((index) => {
- const beforeSelector = selector.slice(0, index + 1);
- let afterSelector = selector.slice(index + 1);
-
- if (expectation.startsWith('always')) {
- afterSelector = afterSelector.replace(/^\s*/, ' ');
- } else if (expectation.startsWith('never')) {
- afterSelector = afterSelector.replace(/^\s*/, '');
- }
-
- selector = beforeSelector + afterSelector;
- });
-
- if (ruleNode.raws.selector) {
- ruleNode.raws.selector.raw = selector;
- } else {
- ruleNode.selector = selector;
- }
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-list-comma-space-before/README.md b/assets/node_modules/stylelint/lib/rules/selector-list-comma-space-before/README.md
deleted file mode 100644
index 500796e..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-list-comma-space-before/README.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# selector-list-comma-space-before
-
-Require a single space or disallow whitespace before the commas of selector lists.
-
-```css
- a ,b { color: pink; }
-/** ↑
- * The space before this comma */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"never-single-line"`
-
-### `"always"`
-
-There *must always* be a single space before the commas.
-
-The following patterns are considered violations:
-
-```css
-a,b { color: pink; }
-```
-
-```css
-a, b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a ,b { color: pink; }
-```
-
-```css
-a , b { color: pink; }
-```
-
-### `"never"`
-
-There *must never* be whitespace before the commas.
-
-The following patterns are considered violations:
-
-```css
-a ,b { color: pink; }
-```
-
-```css
-a , b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a,b { color: pink; }
-```
-
-```css
-a, b { color: pink; }
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space before the commas in single-line selector lists.
-
-The following patterns are considered violations:
-
-```css
-a,b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a,
-b { color: pink; }
-```
-
-### `"never-single-line"`
-
-There *must never* be a single space before the commas in single-line selector lists.
-
-The following patterns are considered violations:
-
-```css
-a ,b { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a ,
-b { color: pink; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-list-comma-space-before/index.js b/assets/node_modules/stylelint/lib/rules/selector-list-comma-space-before/index.js
deleted file mode 100644
index 4b7ce6e..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-list-comma-space-before/index.js
+++ /dev/null
@@ -1,81 +0,0 @@
-'use strict';
-
-const ruleMessages = require('../../utils/ruleMessages');
-const selectorListCommaWhitespaceChecker = require('../selectorListCommaWhitespaceChecker');
-const validateOptions = require('../../utils/validateOptions');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'selector-list-comma-space-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected single space before ","',
- rejectedBefore: () => 'Unexpected whitespace before ","',
- expectedBeforeSingleLine: () => 'Expected single space before "," in a single-line list',
- rejectedBeforeSingleLine: () => 'Unexpected whitespace before "," in a single-line list',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never', 'always-single-line', 'never-single-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- let fixData;
-
- selectorListCommaWhitespaceChecker({
- root,
- result,
- locationChecker: checker.before,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (ruleNode, index) => {
- fixData = fixData || new Map();
- const commaIndices = fixData.get(ruleNode) || [];
-
- commaIndices.push(index);
- fixData.set(ruleNode, commaIndices);
-
- return true;
- }
- : null,
- });
-
- if (fixData) {
- fixData.forEach((commaIndices, ruleNode) => {
- let selector = ruleNode.raws.selector ? ruleNode.raws.selector.raw : ruleNode.selector;
-
- commaIndices
- .sort((a, b) => b - a)
- .forEach((index) => {
- let beforeSelector = selector.slice(0, index);
- const afterSelector = selector.slice(index);
-
- if (expectation.includes('always')) {
- beforeSelector = beforeSelector.replace(/\s*$/, ' ');
- } else if (expectation.includes('never')) {
- beforeSelector = beforeSelector.replace(/\s*$/, '');
- }
-
- selector = beforeSelector + afterSelector;
- });
-
- if (ruleNode.raws.selector) {
- ruleNode.raws.selector.raw = selector;
- } else {
- ruleNode.selector = selector;
- }
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-attribute/README.md b/assets/node_modules/stylelint/lib/rules/selector-max-attribute/README.md
deleted file mode 100644
index b06117d..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-attribute/README.md
+++ /dev/null
@@ -1,99 +0,0 @@
-# selector-max-attribute
-
-Limit the number of attribute selectors in a selector.
-
-```css
- [rel="external"] {}
-/** ↑
- * This type of selector */
-```
-
-This rule resolves nested selectors before counting the number of attribute selectors. Each selector in a [selector list](https://www.w3.org/TR/selectors4/#selector-list) is evaluated separately.
-
-The `:not()` pseudo-class is also evaluated separately. The rule processes the argument as if it were an independent selector, and the result does not count toward the total for the entire selector.
-
-## Options
-
-`int`: Maximum attribute selectors allowed.
-
-For example, with `2`:
-
-The following patterns are considered violations:
-
-```css
-[type="number"][name="quality"][data-attribute="value"] {}
-```
-
-```css
-[type="number"][name="quality"][disabled] {}
-```
-
-```css
-[type="number"][name="quality"] {
- & [data-attribute="value"] {}
-}
-```
-
-```css
-[type="number"][name="quality"] {
- & [disabled] {}
-}
-```
-
-```css
-[type="number"][name="quality"] {
- & > [data-attribute="value"] {}
-}
-```
-
-```css
-/* `[type="text"][data-attribute="value"][disabled]` is inside `:not()`, so it is evaluated separately */
-input:not([type="text"][data-attribute="value"][disabled]) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-[type="text"] {}
-```
-
-```css
-[type="text"][name="message"] {}
-```
-
-```css
-[type="text"][disabled]
-```
-
-```css
-/* each selector in a selector list is evaluated separately */
-[type="text"][name="message"],
-[type="number"][name="quality"] {}
-```
-
-```css
-/* `[disabled]` is inside `:not()`, so it is evaluated separately */
-[type="text"][name="message"]:not([disabled]) {}
-```
-
-## Optional secondary options
-
-### `ignoreAttributes: ["/regex/", /regex/, "string"]`
-
-Given:
-
-```js
-["/^my-/", "dir"]
-```
-
-For example, with `0`.
-
-The following patterns are *not* considered violations:
-
-```css
-[dir] [my-attr] {}
-```
-
-```css
-[dir] [my-other-attr] {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-attribute/index.js b/assets/node_modules/stylelint/lib/rules/selector-max-attribute/index.js
deleted file mode 100644
index ab85ad2..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-attribute/index.js
+++ /dev/null
@@ -1,97 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isLogicalCombination = require('../../utils/isLogicalCombination');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const optionsMatches = require('../../utils/optionsMatches');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const resolvedNestedSelector = require('postcss-resolve-nested-selector');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-max-attribute';
-
-const messages = ruleMessages(ruleName, {
- expected: (selector, max) =>
- `Expected "${selector}" to have no more than ${max} attribute ${
- max === 1 ? 'selector' : 'selectors'
- }`,
-});
-
-function rule(max, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: max,
- possible: [
- function(max) {
- return typeof max === 'number' && max >= 0;
- },
- ],
- },
- {
- actual: options,
- possible: {
- ignoreAttributes: [_.isString, _.isRegExp],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- function checkSelector(selectorNode, ruleNode) {
- const count = selectorNode.reduce((total, childNode) => {
- // Only traverse inside actual selectors and logical combinations
- if (childNode.type === 'selector' || isLogicalCombination(childNode)) {
- checkSelector(childNode, ruleNode);
- }
-
- if (childNode.type !== 'attribute') {
- // Not an attribute node -> ignore
- return total;
- }
-
- if (optionsMatches(options, 'ignoreAttributes', childNode.attribute)) {
- // it's an attribute that is supposed to be ignored
- return total;
- }
-
- return (total += 1);
- }, 0);
-
- if (selectorNode.type !== 'root' && selectorNode.type !== 'pseudo' && count > max) {
- report({
- ruleName,
- result,
- node: ruleNode,
- message: messages.expected(selectorNode, max),
- word: selectorNode,
- });
- }
- }
-
- root.walkRules((ruleNode) => {
- if (!isStandardSyntaxRule(ruleNode)) {
- return;
- }
-
- ruleNode.selectors.forEach((selector) => {
- resolvedNestedSelector(selector, ruleNode).forEach((resolvedSelector) => {
- parseSelector(resolvedSelector, result, ruleNode, (container) =>
- checkSelector(container, ruleNode),
- );
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-class/README.md b/assets/node_modules/stylelint/lib/rules/selector-max-class/README.md
deleted file mode 100644
index fe485e2..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-class/README.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# selector-max-class
-
-Limit the number of classes in a selector.
-
-```css
-div .foo.bar[data-val] > a.baz {}
-/* ↑ ↑ ↑
- ↑ ↑ ↑
- 1 2 3 -- this selector contains three classes */
-```
-
-This rule resolves nested selectors before counting the number of classes in a selector. Each selector in a [selector list](https://www.w3.org/TR/selectors4/#selector-list) is evaluated separately.
-
-The `:not()` pseudo-class is also evaluated separately. The rule processes the argument as if it were an independent selector, and the result does not count toward the total for the entire selector.
-
-## Options
-
-`int`: Maximum classes allowed.
-
-For example, with `2`:
-
-The following patterns are considered violations:
-
-```css
-.foo.bar.baz {}
-```
-
-```css
-.foo .bar {
- & > .baz {}
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-div {}
-```
-
-```css
-.foo .bar {}
-```
-
-```css
-.foo.bar,
-.lorem.ipsum {} /* each selector in a selector list is evaluated separately */
-```
-
-```css
-.foo .bar :not(.lorem.ipsum) {} /* `.lorem.ipsum` is inside `:not()`, so it is evaluated separately */
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-class/index.js b/assets/node_modules/stylelint/lib/rules/selector-max-class/index.js
deleted file mode 100644
index 50e96b3..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-class/index.js
+++ /dev/null
@@ -1,72 +0,0 @@
-'use strict';
-
-const isLogicalCombination = require('../../utils/isLogicalCombination');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const resolvedNestedSelector = require('postcss-resolve-nested-selector');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-max-class';
-
-const messages = ruleMessages(ruleName, {
- expected: (selector, max) =>
- `Expected "${selector}" to have no more than ${max} ${max === 1 ? 'class' : 'classes'}`,
-});
-
-function rule(max) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: max,
- possible: [
- function(max) {
- return typeof max === 'number' && max >= 0;
- },
- ],
- });
-
- if (!validOptions) {
- return;
- }
-
- function checkSelector(selectorNode, ruleNode) {
- const count = selectorNode.reduce((total, childNode) => {
- // Only traverse inside actual selectors and logical combinations
- if (childNode.type === 'selector' || isLogicalCombination(childNode)) {
- checkSelector(childNode, ruleNode);
- }
-
- return (total += childNode.type === 'class' ? 1 : 0);
- }, 0);
-
- if (selectorNode.type !== 'root' && selectorNode.type !== 'pseudo' && count > max) {
- report({
- ruleName,
- result,
- node: ruleNode,
- message: messages.expected(selectorNode, max),
- word: selectorNode,
- });
- }
- }
-
- root.walkRules((ruleNode) => {
- if (!isStandardSyntaxRule(ruleNode)) {
- return;
- }
-
- ruleNode.selectors.forEach((selector) => {
- resolvedNestedSelector(selector, ruleNode).forEach((resolvedSelector) => {
- parseSelector(resolvedSelector, result, ruleNode, (container) =>
- checkSelector(container, ruleNode),
- );
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-combinators/README.md b/assets/node_modules/stylelint/lib/rules/selector-max-combinators/README.md
deleted file mode 100644
index b0ddfb9..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-combinators/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# selector-max-combinators
-
-Limit the number of combinators in a selector.
-
-```css
- a > b + c ~ d e { color: pink; }
-/** ↑ ↑ ↑ ↑
- * These are combinators */
-```
-
-This rule resolves nested selectors before counting the number of combinators selectors. Each selector in a [selector list](https://www.w3.org/TR/selectors4/#selector-list) is evaluated separately.
-
-## Options
-
-`int`: Maximum combinators selectors allowed.
-
-For example, with `2`:
-
-The following patterns are considered violations:
-
-```css
-a b ~ c + d {}
-```
-
-```css
-a b ~ c {
- & > d {}
-}
-```
-
-```css
-a b {
- & ~ c {
- & + d {}
- }
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {}
-```
-
-```css
-a b {}
-```
-
-```css
-a b ~ c {}
-```
-
-```css
-a b {
- & ~ c {}
-}
-```
-
-```css
-/* each selector in a selector list is evaluated separately */
-a b,
-c > d {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-combinators/index.js b/assets/node_modules/stylelint/lib/rules/selector-max-combinators/index.js
deleted file mode 100644
index 9b8839b..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-combinators/index.js
+++ /dev/null
@@ -1,73 +0,0 @@
-'use strict';
-
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const resolvedNestedSelector = require('postcss-resolve-nested-selector');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-max-combinators';
-
-const messages = ruleMessages(ruleName, {
- expected: (selector, max) =>
- `Expected "${selector}" to have no more than ${max} ${
- max === 1 ? 'combinator' : 'combinators'
- }`,
-});
-
-function rule(max) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: max,
- possible: [
- function(max) {
- return typeof max === 'number' && max >= 0;
- },
- ],
- });
-
- if (!validOptions) {
- return;
- }
-
- function checkSelector(selectorNode, ruleNode) {
- const count = selectorNode.reduce((total, childNode) => {
- // Only traverse inside actual selectors
- if (childNode.type === 'selector') {
- checkSelector(childNode, ruleNode);
- }
-
- return (total += childNode.type === 'combinator' ? 1 : 0);
- }, 0);
-
- if (selectorNode.type !== 'root' && selectorNode.type !== 'pseudo' && count > max) {
- report({
- ruleName,
- result,
- node: ruleNode,
- message: messages.expected(selectorNode, max),
- word: selectorNode,
- });
- }
- }
-
- root.walkRules((ruleNode) => {
- if (!isStandardSyntaxRule(ruleNode)) {
- return;
- }
-
- ruleNode.selectors.forEach((selector) => {
- resolvedNestedSelector(selector, ruleNode).forEach((resolvedSelector) => {
- parseSelector(resolvedSelector, result, ruleNode, (container) =>
- checkSelector(container, ruleNode),
- );
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-compound-selectors/README.md b/assets/node_modules/stylelint/lib/rules/selector-max-compound-selectors/README.md
deleted file mode 100644
index 5282067..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-compound-selectors/README.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# selector-max-compound-selectors
-
-Limit the number of compound selectors in a selector.
-
-```css
- div .bar[data-val] > a.baz + .boom > #lorem {}
-/* ↑ ↑ ↑ ↑ ↑
- ↑ ↑ ↑ ↑ ↑
- Lv1 Lv2 Lv3 Lv4 Lv5 -- these are compound selectors */
-```
-
-A [compound selector](https://www.w3.org/TR/selectors4/#compound) is a chain of one or more simple (tag, class, ID, universal, attribute) selectors. If there is more than one compound selector in a complete selector, they will be separated by combinators (e.g. ` `, `+`, `>`). One reason why you might want to limit the number of compound selectors is described in the [SMACSS book](http://smacss.com/book/applicability).
-
-This rule resolves nested selectors before counting the depth of a selector. Each selector in a [selector list](https://www.w3.org/TR/selectors4/#selector-list) is evaluated separately.
-
-`:not()` is considered one compound selector irrespective to the complexity of the selector inside it. The rule *does* process that inner selector, but does so separately, independent of the main selector.
-
-## Options
-
-`int`: Maximum compound selectors allowed.
-
-For example, with `3`:
-
-The following patterns are considered violations:
-
-```css
-.foo .bar .baz .lorem {}
-```
-
-```css
-.foo .baz {
- & > .bar .lorem {}
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-div {}
-```
-
-```css
-.foo div {}
-```
-
-```css
-#foo #bar > #baz {}
-```
-
-```css
-.foo + div :not (a b ~ c) {} /* `a b ~ c` is inside `:not()`, so it is evaluated separately */
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-compound-selectors/index.js b/assets/node_modules/stylelint/lib/rules/selector-max-compound-selectors/index.js
deleted file mode 100644
index 76a7ac7..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-compound-selectors/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-'use strict';
-
-const isLogicalCombination = require('../../utils/isLogicalCombination');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const resolvedNestedSelector = require('postcss-resolve-nested-selector');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-max-compound-selectors';
-
-const messages = ruleMessages(ruleName, {
- expected: (selector, max) =>
- `Expected "${selector}" to have no more than ${max} compound ${
- max === 1 ? 'selector' : 'selectors'
- }`,
-});
-
-function rule(max) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: max,
- possible: [
- function(max) {
- return typeof max === 'number' && max > 0;
- },
- ],
- });
-
- if (!validOptions) {
- return;
- }
-
- // Finds actual selectors in selectorNode object and checks them
- function checkSelector(selectorNode, rule) {
- let compoundCount = 1;
-
- selectorNode.each((childNode) => {
- // Only traverse inside actual selectors and logical combinations
- if (childNode.type === 'selector' || isLogicalCombination(childNode)) {
- checkSelector(childNode, rule);
- }
-
- // Compound selectors are separated by combinators, so increase count when meeting one
- if (childNode.type === 'combinator') {
- compoundCount++;
- }
- });
-
- if (selectorNode.type !== 'root' && selectorNode.type !== 'pseudo' && compoundCount > max) {
- report({
- ruleName,
- result,
- node: rule,
- message: messages.expected(selectorNode, max),
- word: selectorNode,
- });
- }
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- // Using `rule.selectors` gets us each selector if there is a comma separated set
- rule.selectors.forEach((selector) => {
- resolvedNestedSelector(selector, rule).forEach((resolvedSelector) => {
- // Process each resolved selector with `checkSelector` via postcss-selector-parser
- parseSelector(resolvedSelector, result, rule, (s) => checkSelector(s, rule));
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-empty-lines/README.md b/assets/node_modules/stylelint/lib/rules/selector-max-empty-lines/README.md
deleted file mode 100644
index 013015b..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-empty-lines/README.md
+++ /dev/null
@@ -1,93 +0,0 @@
-# selector-max-empty-lines
-
-Limit the number of adjacent empty lines within selectors.
-
-```css
-a,
- /* ← */
-b { /* ↑ */
- color: red; /* ↑ */
-} /* ↑ */
-/** ↑
- * This empty line */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`int`: Maximum number of adjacent empty lines allowed.
-
-For example, with `0`:
-
-The following patterns are considered violations:
-
-```css
-a
-
-b {
- color: red;
-}
-```
-
-```css
-a,
-
-b {
- color: red;
-}
-```
-
-```css
-a
-
->
-b {
- color: red;
-}
-```
-
-```css
-a
->
-
-b {
- color: red;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a b {
- color: red;
-}
-```
-
-```css
-a
-b {
- color: red;
-}
-```
-
-```css
-a,
-b {
- color: red;
-}
-```
-
-```css
-a > b {
- color: red;
-}
-```
-
-```css
-a
->
-b {
- color: red;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-empty-lines/index.js b/assets/node_modules/stylelint/lib/rules/selector-max-empty-lines/index.js
deleted file mode 100644
index 7dbdf4d..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-empty-lines/index.js
+++ /dev/null
@@ -1,63 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-max-empty-lines';
-
-const messages = ruleMessages(ruleName, {
- expected: (max) => `Expected no more than ${max} empty ${max === 1 ? 'line' : 'lines'}`,
-});
-
-function rule(max, options, context) {
- const maxAdjacentNewlines = max + 1;
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: max,
- possible: _.isNumber,
- });
-
- if (!validOptions) {
- return;
- }
-
- const violatedCRLFNewLinesRegex = new RegExp(`(?:\r\n){${maxAdjacentNewlines + 1},}`);
- const violatedLFNewLinesRegex = new RegExp(`\n{${maxAdjacentNewlines + 1},}`);
- const allowedLFNewLinesString = context.fix ? '\n'.repeat(maxAdjacentNewlines) : '';
- const allowedCRLFNewLinesString = context.fix ? '\r\n'.repeat(maxAdjacentNewlines) : '';
-
- root.walkRules((rule) => {
- const selector = rule.raws.selector ? rule.raws.selector.raw : rule.selector;
-
- if (context.fix) {
- const newSelectorString = selector
- .replace(new RegExp(violatedLFNewLinesRegex, 'gm'), allowedLFNewLinesString)
- .replace(new RegExp(violatedCRLFNewLinesRegex, 'gm'), allowedCRLFNewLinesString);
-
- if (rule.raws.selector) {
- rule.raws.selector.raw = newSelectorString;
- } else {
- rule.selector = newSelectorString;
- }
- } else if (
- violatedLFNewLinesRegex.test(selector) ||
- violatedCRLFNewLinesRegex.test(selector)
- ) {
- report({
- message: messages.expected(max),
- node: rule,
- index: 0,
- result,
- ruleName,
- });
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-id/README.md b/assets/node_modules/stylelint/lib/rules/selector-max-id/README.md
deleted file mode 100644
index 62050b0..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-id/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# selector-max-id
-
-Limit the number of ID selectors in a selector.
-
-```css
- #foo {}
-/** ↑
- * This type of selector */
-```
-
-This rule resolves nested selectors before counting the number of ID selectors. Each selector in a [selector list](https://www.w3.org/TR/selectors4/#selector-list) is evaluated separately.
-
-The `:not()` pseudo-class is also evaluated separately. The rule processes the argument as if it were an independent selector, and the result does not count toward the total for the entire selector.
-
-## Options
-
-`int`: Maximum universal selectors allowed.
-
-For example, with `2`:
-
-The following patterns are considered violations:
-
-```css
-#foo #bar #baz {}
-```
-
-```css
-#foo #bar {
- & #baz {}
-}
-```
-
-```css
-#foo #bar {
- & > #bar {}
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-#foo {}
-```
-
-```css
-#foo #bar {}
-```
-
-```css
-.foo #foo {}
-```
-
-```css
-#foo.foo #bar {}
-```
-
-```css
-/* each selector in a selector list is evaluated separately */
-#foo,
-#baz #quux {}
-```
-
-```css
-/* `#bar` is inside `:not()`, so it is evaluated separately */
-#foo #bar:not(#baz) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-id/index.js b/assets/node_modules/stylelint/lib/rules/selector-max-id/index.js
deleted file mode 100644
index 3bd2858..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-id/index.js
+++ /dev/null
@@ -1,72 +0,0 @@
-'use strict';
-
-const isLogicalCombination = require('../../utils/isLogicalCombination');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const resolvedNestedSelector = require('postcss-resolve-nested-selector');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-max-id';
-
-const messages = ruleMessages(ruleName, {
- expected: (selector, max) =>
- `Expected "${selector}" to have no more than ${max} ID ${max === 1 ? 'selector' : 'selectors'}`,
-});
-
-function rule(max) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: max,
- possible: [
- function(max) {
- return typeof max === 'number' && max >= 0;
- },
- ],
- });
-
- if (!validOptions) {
- return;
- }
-
- function checkSelector(selectorNode, ruleNode) {
- const count = selectorNode.reduce((total, childNode) => {
- // Only traverse inside actual selectors and logical combinations
- if (childNode.type === 'selector' || isLogicalCombination(childNode)) {
- checkSelector(childNode, ruleNode);
- }
-
- return (total += childNode.type === 'id' ? 1 : 0);
- }, 0);
-
- if (selectorNode.type !== 'root' && selectorNode.type !== 'pseudo' && count > max) {
- report({
- ruleName,
- result,
- node: ruleNode,
- message: messages.expected(selectorNode, max),
- word: selectorNode,
- });
- }
- }
-
- root.walkRules((ruleNode) => {
- if (!isStandardSyntaxRule(ruleNode)) {
- return;
- }
-
- ruleNode.selectors.forEach((selector) => {
- resolvedNestedSelector(selector, ruleNode).forEach((resolvedSelector) => {
- parseSelector(resolvedSelector, result, ruleNode, (container) =>
- checkSelector(container, ruleNode),
- );
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-pseudo-class/README.md b/assets/node_modules/stylelint/lib/rules/selector-max-pseudo-class/README.md
deleted file mode 100644
index 58b1009..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-pseudo-class/README.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# selector-max-pseudo-class
-
-Limit the number of pseudo-classes in a selector.
-
-```css
-.foo .bar:first-child:hover {}
-/* ↑ ↑
- ↑ ↑
- 1 2 -- this selector contains two pseudo-classes */
-```
-
-This rule resolves nested selectors before counting the number of pseudo-classes in a selector. Each selector in a [selector list](https://www.w3.org/TR/selectors4/#selector-list) is evaluated separately.
-
-The content of the `:not()` pseudo-class is also evaluated separately. The rule processes the argument as if it were an independent selector, and the result does not count toward the total for the entire selector.
-
-## Options
-
-`int`: Maximum pseudo-classes allowed.
-
-For example, with `1`:
-
-The following patterns are considered violations:
-
-```css
-a:first-child:focus {}
-```
-
-```css
-.foo .bar:first-child:hover {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {}
-```
-
-```css
-a:first-child {}
-```
-
-```css
-.foo .bar:first-child {}
-```
-
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-pseudo-class/index.js b/assets/node_modules/stylelint/lib/rules/selector-max-pseudo-class/index.js
deleted file mode 100644
index 43076ff..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-pseudo-class/index.js
+++ /dev/null
@@ -1,86 +0,0 @@
-'use strict';
-
-const isLogicalCombination = require('../../utils/isLogicalCombination');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const keywordSets = require('../../reference/keywordSets');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const resolvedNestedSelector = require('postcss-resolve-nested-selector');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-max-pseudo-class';
-
-const messages = ruleMessages(ruleName, {
- expected: (selector, max) =>
- `Expected "${selector}" to have no more than ${max} pseudo-${max === 1 ? 'class' : 'classes'}`,
-});
-
-function rule(max) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: max,
- possible: [
- function(max) {
- return typeof max === 'number' && max >= 0;
- },
- ],
- });
-
- if (!validOptions) {
- return;
- }
-
- function checkSelector(selectorNode, ruleNode) {
- const count = selectorNode.reduce((total, childNode) => {
- // Only traverse inside actual selectors and logical combinations
- if (childNode.type === 'selector' || isLogicalCombination(childNode)) {
- checkSelector(childNode, ruleNode);
- }
-
- // Exclude pseudo elements from the count
- if (
- childNode.type === 'pseudo' &&
- (childNode.value.includes('::') ||
- keywordSets.levelOneAndTwoPseudoElements.has(childNode.value.toLowerCase().slice(1)))
- ) {
- return total;
- }
-
- if (childNode.type === 'pseudo') {
- return (total += 1);
- }
-
- return total;
- }, 0);
-
- if (count > max) {
- report({
- ruleName,
- result,
- node: ruleNode,
- message: messages.expected(selectorNode, max),
- word: selectorNode,
- });
- }
- }
-
- root.walkRules((ruleNode) => {
- if (!isStandardSyntaxRule(ruleNode)) {
- return;
- }
-
- ruleNode.selectors.forEach((selector) => {
- resolvedNestedSelector(selector, ruleNode).forEach((resolvedSelector) => {
- parseSelector(resolvedSelector, result, rule, (selectorTree) => {
- checkSelector(selectorTree, ruleNode);
- });
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-specificity/README.md b/assets/node_modules/stylelint/lib/rules/selector-max-specificity/README.md
deleted file mode 100755
index 0038f75..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-specificity/README.md
+++ /dev/null
@@ -1,119 +0,0 @@
-# selector-max-specificity
-
-Limit the specificity of selectors.
-
-```css
- .foo, #bar.baz span, #hoo { color: pink; }
-/** ↑ ↑ ↑
- * Each of these selectors */
-```
-
-Visit the [Specificity Calculator](https://specificity.keegan.st) for visual representation of selector specificity.
-
-This rule ignores selectors with variable interpolation (`#{$var}`, `@{var}`, `$(var)`).
-
-This rule resolves nested selectors before counting the specificity of a selector. Each selector in a [selector list](https://www.w3.org/TR/selectors4/#selector-list) is evaluated separately.
-
-## Options
-
-`string`: Maximum specificity allowed.
-
-Format is `"id,class,type"`, as laid out in the [W3C selector spec](https://drafts.csswg.org/selectors/#specificity-rules).
-
-For example, with `"0,2,0"`:
-
-The following patterns are considered violations:
-
-```css
-#foo {}
-```
-
-```css
-.foo .baz .bar {}
-```
-
-```css
-.foo .baz {
- & .bar {}
-}
-```
-
-```css
-.foo {
- color: red;
- @nest .baz .bar & {
- color: blue;
- }
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-div {}
-```
-
-```css
-.foo div {}
-```
-
-```css
-.foo div {
- & div a {}
-}
-```
-
-```css
-.foo {
- & .baz {}
-}
-```
-
-```css
-.foo {
- color: red;
- @nest .baz & {
- color: blue;
- }
-}
-```
-
-## Optional secondary options
-
-### `ignoreSelectors: ["/regex/", /regex/, "string"]`
-
-Given:
-
-```js
-["0,2,0", {
- ignoreSelectors: [":global", ":local", "/my-/"]
-}];
-```
-
-The following patterns are *not* considered violations:
-
-```css
-:global(.foo) .bar {}
-```
-
-```css
-:local(.foo.bar)
-```
-
-```css
-:local(.foo, :global(.bar).baz)
-```
-
-The following patterns are considered violations:
-
-```css
-:global(.foo) .bar.baz {}
-```
-
-```css
-:local(.foo.bar.baz)
-```
-
-```css
-:local(.foo, :global(.bar), .foo.bar.baz)
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-specificity/index.js b/assets/node_modules/stylelint/lib/rules/selector-max-specificity/index.js
deleted file mode 100755
index 4a48930..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-specificity/index.js
+++ /dev/null
@@ -1,183 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const isStandardSyntaxSelector = require('../../utils/isStandardSyntaxSelector');
-const keywordSets = require('../../reference/keywordSets');
-const optionsMatches = require('../../utils/optionsMatches');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const resolvedNestedSelector = require('postcss-resolve-nested-selector');
-const ruleMessages = require('../../utils/ruleMessages');
-const specificity = require('specificity');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-max-specificity';
-
-const messages = ruleMessages(ruleName, {
- expected: (selector, specificity) =>
- `Expected "${selector}" to have a specificity no more than "${specificity}"`,
-});
-
-// Return an array representation of zero specificity. We need a new array each time so that it can mutated
-const zeroSpecificity = () => [0, 0, 0, 0];
-
-// Calculate the sum of given array of specificity arrays
-const specificitySum = (specificities) => {
- const sum = zeroSpecificity();
-
- specificities.forEach((specificityArray) => {
- specificityArray.forEach((value, i) => {
- sum[i] += value;
- });
- });
-
- return sum;
-};
-
-function rule(max, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: max,
- possible: [
- function(max) {
- // Check that the max specificity is in the form "a,b,c"
- return /^\d+,\d+,\d+$/.test(max);
- },
- ],
- },
- {
- actual: options,
- possible: {
- ignoreSelectors: [_.isString, _.isRegExp],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- // Calculate the specificity of a simple selector (type, attribute, class, ID, or pseudos's own value)
- const simpleSpecificity = (selector) => {
- if (optionsMatches(options, 'ignoreSelectors', selector)) {
- return zeroSpecificity();
- }
-
- return specificity.calculate(selector)[0].specificityArray;
- };
-
- // Calculate the the specificity of the most specific direct child
- const maxChildSpecificity = (node) =>
- node.reduce((max, child) => {
- const childSpecificity = nodeSpecificity(child); // eslint-disable-line no-use-before-define
-
- return specificity.compare(childSpecificity, max) === 1 ? childSpecificity : max;
- }, zeroSpecificity());
-
- // Calculate the specificity of a pseudo selector including own value and children
- const pseudoSpecificity = (node) => {
- // `node.toString()` includes children which should be processed separately,
- // so use `node.value` instead
- const ownValue = node.value;
- const ownSpecificity =
- ownValue === ':not' || ownValue === ':matches'
- ? // :not and :matches don't add specificity themselves, but their children do
- zeroSpecificity()
- : simpleSpecificity(ownValue);
-
- return specificitySum([ownSpecificity, maxChildSpecificity(node)]);
- };
-
- const shouldSkipPseudoClassArgument = (node) => {
- // postcss-selector-parser includes the arguments to nth-child() functions
- // as "tags", so we need to ignore them ourselves.
- // The fake-tag's "parent" is actually a selector node, whose parent
- // should be the :nth-child pseudo node.
- const parentNode = node.parent.parent;
-
- if (parentNode && parentNode.value) {
- const parentNodeValue = parentNode.value;
- const normalisedParentNode = parentNodeValue.toLowerCase().replace(/:+/, '');
-
- return (
- parentNode.type === 'pseudo' &&
- (keywordSets.aNPlusBNotationPseudoClasses.has(normalisedParentNode) ||
- keywordSets.linguisticPseudoClasses.has(normalisedParentNode))
- );
- }
-
- return false;
- };
-
- // Calculate the specificity of a node parsed by `postcss-selector-parser`
- const nodeSpecificity = (node) => {
- if (shouldSkipPseudoClassArgument(node)) {
- return zeroSpecificity();
- }
-
- switch (node.type) {
- case 'attribute':
- case 'class':
- case 'id':
- case 'tag':
- return simpleSpecificity(node.toString());
- case 'pseudo':
- return pseudoSpecificity(node);
- case 'selector':
- // Calculate the sum of all the direct children
- return specificitySum(node.map(nodeSpecificity));
- default:
- return zeroSpecificity();
- }
- };
-
- const maxSpecificityArray = `0,${max}`.split(',').map(parseFloat);
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- // Using rule.selectors gets us each selector in the eventuality we have a comma separated set
- rule.selectors.forEach((selector) => {
- resolvedNestedSelector(selector, rule).forEach((resolvedSelector) => {
- try {
- // Skip non-standard syntax selectors
- if (!isStandardSyntaxSelector(resolvedSelector)) {
- return;
- }
-
- parseSelector(resolvedSelector, result, rule, (selectorTree) => {
- // Check if the selector specificity exceeds the allowed maximum
- if (
- specificity.compare(maxChildSpecificity(selectorTree), maxSpecificityArray) === 1
- ) {
- report({
- ruleName,
- result,
- node: rule,
- message: messages.expected(resolvedSelector, max),
- word: selector,
- });
- }
- });
- } catch (e) {
- result.warn('Cannot parse selector', {
- node: rule,
- stylelintType: 'parseError',
- });
- }
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-type/README.md b/assets/node_modules/stylelint/lib/rules/selector-max-type/README.md
deleted file mode 100644
index b89f639..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-type/README.md
+++ /dev/null
@@ -1,160 +0,0 @@
-# selector-max-type
-
-Limit the number of type selectors in a selector.
-
-```css
- a {}
-/** ↑
- * This type of selector */
-```
-
-This rule resolves nested selectors before counting the number of type selectors. Each selector in a [selector list](https://www.w3.org/TR/selectors4/#selector-list) is evaluated separately.
-
-The `:not()` pseudo-class is also evaluated separately. The rule processes the argument as if it were an independent selector, and the result does not count toward the total for the entire selector.
-
-## Options
-
-`int`: Maximum type selectors allowed.
-
-For example, with `2`:
-
-The following patterns are considered violations:
-
-```css
-div a span {}
-```
-
-```css
-div a {
- & span {}
-}
-```
-
-```css
-div a {
- & > a {}
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-div {}
-```
-
-```css
-div a {}
-```
-
-```css
-.foo div a {}
-```
-
-```css
-div.foo a {}
-```
-
-```css
-/* each selector in a selector list is evaluated separately */
-div,
-a span {}
-```
-
-```css
-/* `span` is inside `:not()`, so it is evaluated separately */
-div a .foo:not(span) {}
-```
-
-The following patterns are *not* considered violations:
-
-## Optional secondary options
-
-### `ignore: ["child", "compounded", "descendant", "next-sibling"]`
-
-#### `"child"`
-
-Discount child type selectors.
-
-For example, with `2`:
-
-The following patterns are *not* considered violations:
-
-```css
-div span > a {}
-```
-
-```css
-#bar div span > a {}
-```
-
-#### `"compounded"`
-
-Discount compounded type selectors -- i.e. type selectors chained with other selectors.
-
-For example, with `2`:
-
-The following patterns are *not* considered violations:
-
-```css
-div span a.foo {}
-```
-
-```css
-div span a#bar {}
-```
-
-#### `"descendant"`
-
-Discount descendant type selectors.
-
-For example, with `2`:
-
-The following patterns are *not* considered violations:
-
-```css
-.foo div span a {}
-```
-
-```css
-#bar div span a {}
-```
-
-#### `"next-sibling"`
-
-Discount next-sibling type selectors.
-
-For example, with `2`:
-
-The following patterns are *not* considered violations:
-
-```css
-div a + span {}
-```
-
-```css
-#bar + div + span + a + span {}
-```
-
-### `ignoreTypes: ["/regex/", /regex/, "string"]`
-
-Given:
-
-```js
-["/^my-/", "custom"]
-```
-
-For example, with `2`.
-
-The following patterns are *not* considered violations:
-
-```css
-div a custom {}
-```
-
-```css
-div a my-type {}
-```
-
-```css
-div a my-other-type {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-type/index.js b/assets/node_modules/stylelint/lib/rules/selector-max-type/index.js
deleted file mode 100644
index f0739bd..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-type/index.js
+++ /dev/null
@@ -1,170 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isKeyframeSelector = require('../../utils/isKeyframeSelector');
-const isLogicalCombination = require('../../utils/isLogicalCombination');
-const isOnlyWhitespace = require('../../utils/isOnlyWhitespace');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const isStandardSyntaxSelector = require('../../utils/isStandardSyntaxSelector');
-const optionsMatches = require('../../utils/optionsMatches');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const resolvedNestedSelector = require('postcss-resolve-nested-selector');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-max-type';
-
-const messages = ruleMessages(ruleName, {
- expected: (selector, max) =>
- `Expected "${selector}" to have no more than ${max} type ${
- max === 1 ? 'selector' : 'selectors'
- }`,
-});
-
-function rule(max, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: max,
- possible(max) {
- return typeof max === 'number' && max >= 0;
- },
- },
- {
- actual: options,
- possible: {
- ignore: ['descendant', 'child', 'compounded', 'next-sibling'],
- ignoreTypes: [_.isString, _.isRegExp],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- const ignoreDescendant = optionsMatches(options, 'ignore', 'descendant');
- const ignoreChild = optionsMatches(options, 'ignore', 'child');
- const ignoreCompounded = optionsMatches(options, 'ignore', 'compounded');
- const ignoreNextSibling = optionsMatches(options, 'ignore', 'next-sibling');
-
- function checkSelector(selectorNode, ruleNode) {
- const count = selectorNode.reduce((total, childNode) => {
- // Only traverse inside actual selectors and logical combinations
- if (childNode.type === 'selector' || isLogicalCombination(childNode)) {
- checkSelector(childNode, ruleNode);
- }
-
- if (optionsMatches(options, 'ignoreTypes', childNode.value)) {
- return total;
- }
-
- if (ignoreDescendant && hasDescendantCombinatorBefore(childNode)) {
- return total;
- }
-
- if (ignoreChild && hasChildCombinatorBefore(childNode)) {
- return total;
- }
-
- if (ignoreCompounded && hasCompoundSelector(childNode)) {
- return total;
- }
-
- if (ignoreNextSibling && hasNextSiblingCombinator(childNode)) {
- return total;
- }
-
- return total + (childNode.type === 'tag');
- }, 0);
-
- if (selectorNode.type !== 'root' && selectorNode.type !== 'pseudo' && count > max) {
- report({
- ruleName,
- result,
- node: ruleNode,
- message: messages.expected(selectorNode, max),
- word: selectorNode,
- });
- }
- }
-
- root.walkRules((ruleNode) => {
- const selectors = ruleNode.selectors;
-
- if (!isStandardSyntaxRule(ruleNode)) {
- return;
- }
-
- if (selectors.some((s) => isKeyframeSelector(s))) {
- return;
- }
-
- ruleNode.selectors.forEach((selector) => {
- resolvedNestedSelector(selector, ruleNode).forEach((resolvedSelector) => {
- if (!isStandardSyntaxSelector(resolvedSelector)) {
- return;
- }
-
- parseSelector(resolvedSelector, result, ruleNode, (container) =>
- checkSelector(container, ruleNode),
- );
- });
- });
- });
- };
-}
-
-function hasDescendantCombinatorBefore(node) {
- const nodeIndex = node.parent.nodes.indexOf(node);
-
- return node.parent.nodes.slice(0, nodeIndex).some(isDescendantCombinator);
-}
-
-function hasChildCombinatorBefore(node) {
- const nodeIndex = node.parent.nodes.indexOf(node);
-
- return node.parent.nodes.slice(0, nodeIndex).some(isChildCombinator);
-}
-
-function hasCompoundSelector(node) {
- if (node.prev() && !isCombinator(node.prev())) {
- return true;
- }
-
- return node.next() && !isCombinator(node.next());
-}
-
-function hasNextSiblingCombinator(node) {
- return node.prev() && isNextSiblingCombinator(node.prev());
-}
-
-function isCombinator(node) {
- if (!node) return false;
-
- return _.get(node, 'type') === 'combinator';
-}
-
-function isDescendantCombinator(node) {
- if (!node) return false;
-
- return isCombinator(node) && isOnlyWhitespace(node.value);
-}
-
-function isChildCombinator(node) {
- if (!node) return false;
-
- return isCombinator(node) && node.value === '>';
-}
-
-function isNextSiblingCombinator(node) {
- return isCombinator(node) && node.value === '+';
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-universal/README.md b/assets/node_modules/stylelint/lib/rules/selector-max-universal/README.md
deleted file mode 100644
index fd4ebad..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-universal/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# selector-max-universal
-
-Limit the number of universal selectors in a selector.
-
-```css
- * {}
-/** ↑
- * This universal selector */
-```
-
-This rule resolves nested selectors before counting the number of universal selectors. Each selector in a [selector list](https://www.w3.org/TR/selectors4/#selector-list) is evaluated separately.
-
-The logical combinations pseudo-class (e.g. `:not`, `:has`) is also evaluated separately. The rule processes the argument as if it were an independent selector, and the result does not count toward the total for the entire selector.
-
-## Options
-
-`int`: Maximum universal selectors allowed.
-
-For example, with `2`:
-
-The following patterns are considered violations:
-
-```css
-* * * {}
-```
-
-```css
-* * {
- & * {}
-}
-```
-
-```css
-* * {
- & > * {}
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-* {}
-```
-
-```css
-* * {}
-```
-
-```css
-.foo * {}
-```
-
-```css
-*.foo * {}
-```
-
-```css
-/* each selector in a selector list is evaluated separately */
-*.foo,
-*.bar * {}
-```
-
-```css
-/* `*` is inside `:not()`, so it is evaluated separately */
-* > * .foo:not(*) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-max-universal/index.js b/assets/node_modules/stylelint/lib/rules/selector-max-universal/index.js
deleted file mode 100644
index 10de790..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-max-universal/index.js
+++ /dev/null
@@ -1,85 +0,0 @@
-'use strict';
-
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const resolvedNestedSelector = require('postcss-resolve-nested-selector');
-const ruleMessages = require('../../utils/ruleMessages');
-const selectorParser = require('postcss-selector-parser');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-max-universal';
-
-const messages = ruleMessages(ruleName, {
- expected: (selector, max) =>
- `Expected "${selector}" to have no more than ${max} universal ${
- max === 1 ? 'selector' : 'selectors'
- }`,
-});
-
-function rule(max) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: max,
- possible: [
- function(max) {
- return typeof max === 'number' && max >= 0;
- },
- ],
- });
-
- if (!validOptions) {
- return;
- }
-
- function checkSelector(selectorNode, ruleNode) {
- const count = selectorNode.reduce((total, childNode) => {
- // Only traverse inside actual selectors
- // All logical combinations will be resolved as nested selector in `postcss-resolve-nested-selector`
- if (childNode.type === 'selector') {
- checkSelector(childNode, ruleNode);
- }
-
- return (total += childNode.type === 'universal' ? 1 : 0);
- }, 0);
-
- if (selectorNode.type !== 'root' && selectorNode.type !== 'pseudo' && count > max) {
- report({
- ruleName,
- result,
- node: ruleNode,
- message: messages.expected(selectorNode, max),
- word: selectorNode,
- });
- }
- }
-
- root.walkRules((ruleNode) => {
- if (!isStandardSyntaxRule(ruleNode)) {
- return;
- }
-
- const selectors = [];
-
- selectorParser()
- .astSync(ruleNode.selector)
- .walk((node) => {
- if (node.type === 'selector') {
- selectors.push(String(node).trim());
- }
- });
-
- selectors.forEach((selector) => {
- resolvedNestedSelector(selector, ruleNode).forEach((resolvedSelector) => {
- parseSelector(resolvedSelector, result, ruleNode, (container) =>
- checkSelector(container, ruleNode),
- );
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-nested-pattern/README.md b/assets/node_modules/stylelint/lib/rules/selector-nested-pattern/README.md
deleted file mode 100644
index 4e2a967..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-nested-pattern/README.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# selector-nested-pattern
-
-Specify a pattern for the selectors of rules nested within rules.
-
-```css
- a {
- color: orange;
- &:hover { color: pink; }
- } ↑
-/** ↑
- * This nested selector */
-```
-
-Non-standard selectors (e.g. selectors with Sass or Less interpolation) and selectors of rules nested within at-rules are ignored.
-
-## Options
-
-`regex|string`
-
-A string will be translated into a RegExp like so `new RegExp(yourString)` — so be sure to escape properly.
-
-The selector value will be checked in its entirety. If you'd like to allow for combinators and commas, you must incorporate them into your pattern.
-
-Given the string:
-
-```js
-"^&:(?:hover|focus)$"
-```
-
-The following patterns are considered violations:
-
-```css
-a {
- .bar {}
-}
-```
-
-```css
-a {
- .bar:hover {}
-}
-```
-
-```css
-a {
- &:hover,
- &:focus {}
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- &:hover {}
-}
-```
-
-```css
-a {
- &:focus {}
-}
-```
-
-```css
-a {
- &:hover {}
- &:focus {}
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-nested-pattern/index.js b/assets/node_modules/stylelint/lib/rules/selector-nested-pattern/index.js
deleted file mode 100644
index 3080e2f..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-nested-pattern/index.js
+++ /dev/null
@@ -1,55 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-nested-pattern';
-
-const messages = ruleMessages(ruleName, {
- expected: (selector) => `Expected nested selector "${selector}" to match specified pattern`,
-});
-
-function rule(pattern) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: pattern,
- possible: [_.isRegExp, _.isString],
- });
-
- if (!validOptions) {
- return;
- }
-
- const normalizedPattern = _.isString(pattern) ? new RegExp(pattern) : pattern;
-
- root.walkRules((rule) => {
- if (rule.parent.type !== 'rule') {
- return;
- }
-
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- const selector = rule.selector;
-
- if (normalizedPattern.test(selector)) {
- return;
- }
-
- report({
- result,
- ruleName,
- message: messages.expected(selector),
- node: rule,
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-no-qualifying-type/README.md b/assets/node_modules/stylelint/lib/rules/selector-no-qualifying-type/README.md
deleted file mode 100644
index 51826e6..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-no-qualifying-type/README.md
+++ /dev/null
@@ -1,95 +0,0 @@
-# selector-no-qualifying-type
-
-Disallow qualifying a selector by type.
-
-```css
- a.foo {}
-/** ↑
- * This type selector is qualifying the class */
-```
-
-A type selector is "qualifying" when it is compounded with (chained to) another selector (e.g. `a.foo`, `a#foo`). This rule does not regulate type selectors that are combined with other selectors via a combinator (e.g. `a > .foo`, `a #foo`).
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a.foo {
- margin: 0
-}
-```
-
-```css
-a#foo {
- margin: 0
-}
-```
-
-```css
-input[type='button'] {
- margin: 0
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-.foo {
- margin: 0
-}
-```
-
-```css
-#foo {
- margin: 0
-}
-```
-
-```css
-input {
- margin: 0
-}
-```
-
-## Optional secondary options
-
-### `ignore: ["attribute", "class", "id"]`
-
-#### `"attribute"`
-
-Allow attribute selectors qualified by type.
-
-The following patterns are *not* considered violations:
-
-```css
-input[type='button'] {
- margin: 0
-}
-```
-
-#### `"class"`
-
-Allow class selectors qualified by type.
-
-The following patterns are *not* considered violations:
-
-```css
-a.foo {
- margin: 0
-}
-```
-
-#### `"id"`
-
-Allow ID selectors qualified by type.
-
-The following patterns are *not* considered violations:
-
-```css
-a#foo {
- margin: 0
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-no-qualifying-type/index.js b/assets/node_modules/stylelint/lib/rules/selector-no-qualifying-type/index.js
deleted file mode 100644
index 950d3d6..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-no-qualifying-type/index.js
+++ /dev/null
@@ -1,132 +0,0 @@
-'use strict';
-
-const isKeyframeRule = require('../../utils/isKeyframeRule');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const isStandardSyntaxSelector = require('../../utils/isStandardSyntaxSelector');
-const optionsMatches = require('../../utils/optionsMatches');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const resolvedNestedSelector = require('postcss-resolve-nested-selector');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-no-qualifying-type';
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected qualifying type selector',
-});
-
-const selectorCharacters = ['#', '.', '['];
-
-function isSelectorCharacters(value) {
- return selectorCharacters.some((char) => value.includes(char));
-}
-
-function getRightNodes(node) {
- const result = [];
- let rightNode = node;
-
- while ((rightNode = rightNode.next())) {
- if (rightNode.type === 'combinator') {
- break;
- }
-
- if (rightNode.type !== 'id' && rightNode.type !== 'class' && rightNode.type !== 'attribute') {
- continue;
- }
-
- result.push(rightNode);
- }
-
- return result;
-}
-
-function rule(enabled, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: enabled,
- possible: [true, false],
- },
- {
- actual: options,
- possible: {
- ignore: ['attribute', 'class', 'id'],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- if (isKeyframeRule(rule)) {
- return;
- }
-
- if (!isSelectorCharacters(rule.selector)) {
- return;
- }
-
- function checkSelector(selectorAST) {
- selectorAST.walkTags((selector) => {
- const selectorParent = selector.parent;
-
- if (selectorParent.nodes.length === 1) {
- return;
- }
-
- const selectorNodes = getRightNodes(selector);
- const index = selector.sourceIndex;
-
- selectorNodes.forEach((selectorNode) => {
- if (selectorNode.type === 'id' && !optionsMatches(options, 'ignore', 'id')) {
- complain(index);
- }
-
- if (selectorNode.type === 'class' && !optionsMatches(options, 'ignore', 'class')) {
- complain(index);
- }
-
- if (
- selectorNode.type === 'attribute' &&
- !optionsMatches(options, 'ignore', 'attribute')
- ) {
- complain(index);
- }
- });
- });
- }
-
- resolvedNestedSelector(rule.selector, rule).forEach((resolvedSelector) => {
- if (!isStandardSyntaxSelector(resolvedSelector)) {
- return;
- }
-
- parseSelector(resolvedSelector, result, rule, checkSelector);
- });
-
- function complain(index) {
- report({
- ruleName,
- result,
- node: rule,
- message: messages.rejected,
- index,
- });
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-no-vendor-prefix/README.md b/assets/node_modules/stylelint/lib/rules/selector-no-vendor-prefix/README.md
deleted file mode 100644
index 10f0129..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-no-vendor-prefix/README.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# selector-no-vendor-prefix
-
-Disallow vendor prefixes for selectors.
-
-```css
-input::-moz-placeholder {}
-/** ↑
- * This prefix */
-```
-
-This rule does not blanketly condemn vendor prefixes. Instead, it uses [Autoprefixer's](https://github.com/postcss/autoprefixer) up-to-date data (from [caniuse.com](http://caniuse.com/)) to know whether a vendor prefix should cause a violation or not. *If you've included a vendor prefixed selector that has a standard alternative, one that Autoprefixer could take care of for you, this rule will complain about it*. If, however, you use a non-standard vendor-prefixed selector, one that Autoprefixer would ignore and could not provide, this rule will ignore it.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-input::-moz-placeholder {}
-```
-
-```css
-:-webkit-full-screen a {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-input::placeholder {}
-```
-
-```css
-:full-screen a {}
-```
-
-## Optional secondary options
-
-### `ignoreSelectors: ["/regex/", "non-regex"]`
-
-Ignore vendor prefixes for selectors.
-
-Given:
-
-```js
-["::-webkit-input-placeholder", "/-moz-.*/"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-input::-webkit-input-placeholder {
- color: pink;
-}
-
-input::-moz-placeholder {
- color: pink;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-no-vendor-prefix/index.js b/assets/node_modules/stylelint/lib/rules/selector-no-vendor-prefix/index.js
deleted file mode 100644
index ffb0be9..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-no-vendor-prefix/index.js
+++ /dev/null
@@ -1,67 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isAutoprefixable = require('../../utils/isAutoprefixable');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const optionsMatches = require('../../utils/optionsMatches');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-no-vendor-prefix';
-
-const messages = ruleMessages(ruleName, {
- rejected: (selector) => `Unexpected vendor-prefix "${selector}"`,
-});
-
-function rule(actual, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- { actual },
- {
- actual: options,
- possible: {
- ignoreSelectors: [_.isString],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- const selector = rule.selector;
-
- parseSelector(selector, result, rule, (selectorTree) => {
- selectorTree.walkPseudos((pseudoNode) => {
- if (isAutoprefixable.selector(pseudoNode.value)) {
- if (optionsMatches(options, 'ignoreSelectors', pseudoNode.value)) {
- return;
- }
-
- report({
- result,
- ruleName,
- message: messages.rejected(pseudoNode.value),
- node: rule,
- index: (rule.raws.before || '').length + pseudoNode.sourceIndex,
- });
- }
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-blacklist/README.md b/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-blacklist/README.md
deleted file mode 100644
index b03d4e0..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-blacklist/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# selector-pseudo-class-blacklist
-
-Specify a blacklist of disallowed pseudo-class selectors.
-
-```css
- a:hover {}
-/** ↑
- * This pseudo-class selector */
-```
-
-This rule ignores selectors that use variable interpolation e.g. `:#{$variable} {}`.
-
-## Options
-
-`array|string|regex`: `["array", "of", "unprefixed", /pseudo-classes/ or "/regex/"]|"pseudo-class"|/regex/`
-
-If a string is surrounded with `"/"` (e.g. `"/^nth-/"`), it is interpreted as a regular expression. This allows, for example, easy targeting of shorthands: `/^nth-/` will match `nth-child`, `nth-last-child`, `nth-of-type`, etc.
-
-Given:
-
-```js
-["hover", "/^nth-/"]
-```
-
-The following patterns are considered violations:
-
-```css
-a:hover {}
-```
-
-```css
-a:nth-of-type(5) {}
-```
-
-```css
-a:nth-child(2) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a:focus {}
-```
-
-```css
-a:first-of-type {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-blacklist/index.js b/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-blacklist/index.js
deleted file mode 100644
index b9d0552..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-blacklist/index.js
+++ /dev/null
@@ -1,73 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const parseSelector = require('../../utils/parseSelector');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-pseudo-class-blacklist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (selector) => `Unexpected pseudo-class "${selector}"`,
-});
-
-function rule(blacklist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: blacklist,
- possible: [_.isString, _.isRegExp],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- const selector = rule.selector;
-
- if (!selector.includes(':')) {
- return;
- }
-
- parseSelector(selector, result, rule, (selectorTree) => {
- selectorTree.walkPseudos((pseudoNode) => {
- const value = pseudoNode.value;
-
- // Ignore pseudo-elements
-
- if (value.slice(0, 2) === '::') {
- return;
- }
-
- const name = value.slice(1);
-
- if (!matchesStringOrRegExp(postcss.vendor.unprefixed(name), blacklist)) {
- return;
- }
-
- report({
- index: pseudoNode.sourceIndex,
- message: messages.rejected(name),
- node: rule,
- result,
- ruleName,
- });
- });
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-case/README.md b/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-case/README.md
deleted file mode 100644
index ca9c47a..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-case/README.md
+++ /dev/null
@@ -1,91 +0,0 @@
-# selector-pseudo-class-case
-
-Specify lowercase or uppercase for pseudo-class selectors.
-
-```css
- a:hover {}
-/** ↑
- * This pseudo-class selector */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"lower"|"upper"`
-
-### `"lower"`
-
-The following patterns are considered violations:
-
-```css
-a:Hover {}
-```
-
-```css
-a:hOvEr {}
-```
-
-```css
-a:HOVER {}
-```
-
-```css
-:ROOT {}
-```
-
-```css
-:-MS-INPUT-PLACEHOLDER {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a:hover {}
-```
-
-```css
-:root {}
-```
-
-```css
-:-ms-input-placeholder {}
-```
-
-### `"upper"`
-
-The following patterns are considered violations:
-
-```css
-a:Hover {}
-```
-
-```css
-a:hOvEr {}
-```
-
-```css
-a:hover {}
-```
-
-```css
-:root {}
-```
-
-```css
-:-ms-input-placeholder {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a:HOVER {}
-```
-
-```css
-:ROOT {}
-```
-
-```css
-:-MS-INPUT-PLACEHOLDER {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-case/index.js b/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-case/index.js
deleted file mode 100644
index 36d544d..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-case/index.js
+++ /dev/null
@@ -1,95 +0,0 @@
-'use strict';
-
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const isStandardSyntaxSelector = require('../../utils/isStandardSyntaxSelector');
-const keywordSets = require('../../reference/keywordSets');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-pseudo-class-case';
-
-const messages = ruleMessages(ruleName, {
- expected: (actual, expected) => `Expected "${actual}" to be "${expected}"`,
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['lower', 'upper'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- const selector = rule.selector;
-
- if (!selector.includes(':')) {
- return;
- }
-
- const fixedSelector = parseSelector(
- rule.raws.selector ? rule.raws.selector.raw : rule.selector,
- result,
- rule,
- (selectorTree) => {
- selectorTree.walkPseudos((pseudoNode) => {
- const pseudo = pseudoNode.value;
-
- if (!isStandardSyntaxSelector(pseudo)) {
- return;
- }
-
- if (
- pseudo.includes('::') ||
- keywordSets.levelOneAndTwoPseudoElements.has(pseudo.toLowerCase().slice(1))
- ) {
- return;
- }
-
- const expectedPseudo =
- expectation === 'lower' ? pseudo.toLowerCase() : pseudo.toUpperCase();
-
- if (pseudo === expectedPseudo) {
- return;
- }
-
- if (context.fix) {
- pseudoNode.value = expectedPseudo;
-
- return;
- }
-
- report({
- message: messages.expected(pseudo, expectedPseudo),
- node: rule,
- index: pseudoNode.sourceIndex,
- ruleName,
- result,
- });
- });
- },
- );
-
- if (context.fix) {
- if (rule.raws.selector) {
- rule.raws.selector.raw = fixedSelector;
- } else {
- rule.selector = fixedSelector;
- }
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-no-unknown/README.md b/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-no-unknown/README.md
deleted file mode 100644
index 9d48a8f..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-no-unknown/README.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# selector-pseudo-class-no-unknown
-
-Disallow unknown pseudo-class selectors.
-
-```css
- a:hover {}
-/** ↑
- * This pseudo-class selector */
-```
-
-This rule considers pseudo-class selectors defined in the CSS Specifications, up to and including Editor's Drafts, to be known.
-
-This rule ignores vendor-prefixed pseudo-class selectors.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a:unknown {}
-```
-
-```css
-a:UNKNOWN {}
-```
-
-```css
-a:hoverr {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a:hover {}
-```
-
-```css
-a:focus {}
-```
-
-```css
-:not(p) {}
-```
-
-```css
-input:-moz-placeholder {}
-```
-
-## Optional secondary options
-
-### `ignorePseudoClasses: ["/regex/", "string"]`
-
-Given:
-
-```js
-["/^my-/", "pseudo-class"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a:pseudo-class {}
-```
-
-```css
-a:my-pseudo {}
-```
-
-```css
-a:my-other-pseudo {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-no-unknown/index.js b/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-no-unknown/index.js
deleted file mode 100644
index 02720b3..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-no-unknown/index.js
+++ /dev/null
@@ -1,155 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const isCustomSelector = require('../../utils/isCustomSelector');
-const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const isStandardSyntaxSelector = require('../../utils/isStandardSyntaxSelector');
-const keywordSets = require('../../reference/keywordSets');
-const optionsMatches = require('../../utils/optionsMatches');
-const parseSelector = require('../../utils/parseSelector');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-pseudo-class-no-unknown';
-
-const messages = ruleMessages(ruleName, {
- rejected: (selector) => `Unexpected unknown pseudo-class selector "${selector}"`,
-});
-
-function rule(actual, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- { actual },
- {
- actual: options,
- possible: {
- ignorePseudoClasses: [_.isString],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- function check(selector, result, node) {
- parseSelector(selector, result, node, (selectorTree) => {
- selectorTree.walkPseudos((pseudoNode) => {
- const value = pseudoNode.value;
-
- if (!isStandardSyntaxSelector(value)) {
- return;
- }
-
- if (isCustomSelector(value)) {
- return;
- }
-
- // Ignore pseudo-elements
- if (value.slice(0, 2) === '::') {
- return;
- }
-
- if (optionsMatches(options, 'ignorePseudoClasses', pseudoNode.value.slice(1))) {
- return;
- }
-
- let index = null;
- const name = value.slice(1).toLowerCase();
-
- if (node.type === 'atrule' && node.name === 'page') {
- if (keywordSets.atRulePagePseudoClasses.has(name)) {
- return;
- }
-
- index = atRuleParamIndex(node) + pseudoNode.sourceIndex;
- } else {
- if (
- postcss.vendor.prefix(name) ||
- keywordSets.pseudoClasses.has(name) ||
- keywordSets.pseudoElements.has(name)
- ) {
- return;
- }
-
- let prevPseudoElement = pseudoNode;
-
- do {
- prevPseudoElement = prevPseudoElement.prev();
-
- if (prevPseudoElement && prevPseudoElement.value.slice(0, 2) === '::') {
- break;
- }
- } while (prevPseudoElement);
-
- if (prevPseudoElement) {
- const prevPseudoElementValue = postcss.vendor.unprefixed(
- prevPseudoElement.value.toLowerCase().slice(2),
- );
-
- if (
- keywordSets.webkitProprietaryPseudoElements.has(prevPseudoElementValue) &&
- keywordSets.webkitProprietaryPseudoClasses.has(name)
- ) {
- return;
- }
- }
-
- index = pseudoNode.sourceIndex;
- }
-
- report({
- message: messages.rejected(value),
- node,
- index,
- ruleName,
- result,
- });
- });
- });
- }
-
- root.walk((node) => {
- let selector = null;
-
- if (node.type === 'rule') {
- if (!isStandardSyntaxRule(node)) {
- return;
- }
-
- selector = node.selector;
- } else if (node.type === 'atrule' && node.name === 'page' && node.params) {
- if (!isStandardSyntaxAtRule(node)) {
- return;
- }
-
- selector = node.params;
- }
-
- // Return if selector empty, it is meaning node type is not a rule or a at-rule
-
- if (!selector) {
- return;
- }
-
- // Return early before parse if no pseudos for performance
-
- if (!selector.includes(':')) {
- return;
- }
-
- check(selector, result, node);
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-parentheses-space-inside/README.md b/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-parentheses-space-inside/README.md
deleted file mode 100644
index 5460abe..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-parentheses-space-inside/README.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# selector-pseudo-class-parentheses-space-inside
-
-Require a single space or disallow whitespace on the inside of the parentheses within pseudo-class selectors.
-
-```css
-input:not( [type="submit"] ) {}
-/** ↑ ↑
- * The space inside these two parentheses */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-There *must always* be a single space inside the parentheses.
-
-The following patterns are considered violations:
-
-```css
-input:not([type="submit"]) {}
-```
-
-```css
-input:not([type="submit"] ) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-input:not( [type="submit"] ) {}
-```
-
-### `"never"`
-
-There *must never* be whitespace on the inside the parentheses.
-
-The following patterns are considered violations:
-
-```css
-input:not( [type="submit"] ) {}
-```
-
-```css
-input:not( [type="submit"]) {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-input:not([type="submit"]) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-parentheses-space-inside/index.js b/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-parentheses-space-inside/index.js
deleted file mode 100644
index 2da9923..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-parentheses-space-inside/index.js
+++ /dev/null
@@ -1,140 +0,0 @@
-'use strict';
-
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-pseudo-class-parentheses-space-inside';
-
-const messages = ruleMessages(ruleName, {
- expectedOpening: 'Expected single space after "("',
- rejectedOpening: 'Unexpected whitespace after "("',
- expectedClosing: 'Expected single space before ")"',
- rejectedClosing: 'Unexpected whitespace before ")"',
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- if (!rule.selector.includes('(')) {
- return;
- }
-
- let hasFixed = false;
- const selector = rule.raws.selector ? rule.raws.selector.raw : rule.selector;
- const fixedSelector = parseSelector(selector, result, rule, (selectorTree) => {
- selectorTree.walkPseudos((pseudoNode) => {
- if (!pseudoNode.length) {
- return;
- }
-
- const beforeString =
- (pseudoNode.rawSpaceBefore || '') + stringifyProperty(pseudoNode, 'value');
- const paramString = pseudoNode.map(String).join(',');
- const nextCharIsSpace = paramString.startsWith(' ');
- const openIndex = pseudoNode.sourceIndex + beforeString.length + 1;
-
- if (nextCharIsSpace && expectation === 'never') {
- if (context.fix) {
- hasFixed = true;
- setFirstNodeSpaceBefore(pseudoNode, '');
- } else {
- complain(messages.rejectedOpening, openIndex);
- }
- }
-
- if (!nextCharIsSpace && expectation === 'always') {
- if (context.fix) {
- hasFixed = true;
- setFirstNodeSpaceBefore(pseudoNode, ' ');
- } else {
- complain(messages.expectedOpening, openIndex);
- }
- }
-
- const prevCharIsSpace = paramString.endsWith(' ');
- const closeIndex = openIndex + paramString.length - 1;
-
- if (prevCharIsSpace && expectation === 'never') {
- if (context.fix) {
- hasFixed = true;
- setLastNodeSpaceAfter(pseudoNode, '');
- } else {
- complain(messages.rejectedClosing, closeIndex);
- }
- }
-
- if (!prevCharIsSpace && expectation === 'always') {
- if (context.fix) {
- hasFixed = true;
- setLastNodeSpaceAfter(pseudoNode, ' ');
- } else {
- complain(messages.expectedClosing, closeIndex);
- }
- }
- });
- });
-
- if (hasFixed) {
- if (!rule.raws.selector) {
- rule.selector = fixedSelector;
- } else {
- rule.raws.selector.raw = fixedSelector;
- }
- }
-
- function complain(message, index) {
- report({
- message,
- index,
- result,
- ruleName,
- node: rule,
- });
- }
- });
- };
-}
-
-function setFirstNodeSpaceBefore(node, value) {
- const target = node.first;
-
- if (target.type === 'selector') {
- setFirstNodeSpaceBefore(target, value);
- } else {
- target.spaces.before = value;
- }
-}
-
-function setLastNodeSpaceAfter(node, value) {
- const target = node.last;
-
- if (target.type === 'selector') {
- setLastNodeSpaceAfter(target, value);
- } else {
- target.spaces.after = value;
- }
-}
-
-function stringifyProperty(node, propName) {
- return (node.raws && node.raws[propName]) || node[propName];
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-whitelist/README.md b/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-whitelist/README.md
deleted file mode 100644
index b0c6d58..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-whitelist/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# selector-pseudo-class-whitelist
-
-Specify a whitelist of allowed pseudo-class selectors.
-
-```css
- a:hover {}
-/** ↑
- * This pseudo-class selector */
-```
-
-This rule ignores selectors that use variable interpolation e.g. `:#{$variable} {}`.
-
-## Options
-
-`array|string|regex`: `["array", "of", "unprefixed", /pseudo-classes/ or "/regex/"]|"pseudo-class"|/regex/`
-
-If a string is surrounded with `"/"` (e.g. `"/^nth-/"`), it is interpreted as a regular expression. This allows, for example, easy targeting of shorthands: `/^nth-/` will match `nth-child`, `nth-last-child`, `nth-of-type`, etc.
-
-Given:
-
-```js
-["hover", "/^nth-/"]
-```
-
-The following patterns are considered violations:
-
-```css
-a:focus {}
-```
-
-```css
-a:first-of-type {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a:hover {}
-```
-
-```css
-a:nth-of-type(5) {}
-```
-
-```css
-a:nth-child(2) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-whitelist/index.js b/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-whitelist/index.js
deleted file mode 100644
index 2730075..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-class-whitelist/index.js
+++ /dev/null
@@ -1,72 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const parseSelector = require('../../utils/parseSelector');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-pseudo-class-whitelist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (selector) => `Unexpected pseudo-class "${selector}"`,
-});
-
-function rule(whitelist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: whitelist,
- possible: [_.isString, _.isRegExp],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- const selector = rule.selector;
-
- if (!selector.includes(':')) {
- return;
- }
-
- parseSelector(selector, result, rule, (selectorTree) => {
- selectorTree.walkPseudos((pseudoNode) => {
- const value = pseudoNode.value;
-
- // Ignore pseudo-elements
- if (value.slice(0, 2) === '::') {
- return;
- }
-
- const name = value.slice(1);
-
- if (matchesStringOrRegExp(postcss.vendor.unprefixed(name), whitelist)) {
- return;
- }
-
- report({
- index: pseudoNode.sourceIndex,
- message: messages.rejected(name),
- node: rule,
- result,
- ruleName,
- });
- });
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-blacklist/README.md b/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-blacklist/README.md
deleted file mode 100644
index e972f59..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-blacklist/README.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# selector-pseudo-element-blacklist
-
-Specify a blacklist of disallowed pseudo-element selectors.
-
-```css
- a::before {}
-/** ↑
- * This pseudo-element selector */
-```
-
-This rule ignores:
-
-- CSS2 pseudo-elements i.e. those prefixed with a single colon
-- selectors that use variable interpolation e.g. `::#{$variable} {}`
-
-## Options
-
-`array|string|regex`: `["array", "of", "unprefixed", "pseudo-elements" or "regex"]|"pseudo-element"|/regex/`
-
-Given:
-
-```js
-["before", "/^my-/i"]
-```
-
-The following patterns are considered violations:
-
-```css
-a::before {}
-```
-
-```css
-a::my-pseudo-element {}
-```
-
-```css
-a::MY-OTHER-pseudo-element {}
-```
-
-
-The following patterns are *not* considered violations:
-
-```css
-a::after {}
-```
-
-```css
-a::not-my-pseudo-element {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-blacklist/index.js b/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-blacklist/index.js
deleted file mode 100644
index 273a4d0..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-blacklist/index.js
+++ /dev/null
@@ -1,72 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const parseSelector = require('../../utils/parseSelector');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-pseudo-element-blacklist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (selector) => `Unexpected pseudo-element "${selector}"`,
-});
-
-function rule(blacklist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: blacklist,
- possible: [_.isString, _.isRegExp],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- const selector = rule.selector;
-
- if (!selector.includes('::')) {
- return;
- }
-
- parseSelector(selector, result, rule, (selectorTree) => {
- selectorTree.walkPseudos((pseudoNode) => {
- const value = pseudoNode.value;
-
- // Ignore pseudo-classes
- if (value[1] !== ':') {
- return;
- }
-
- const name = value.slice(2);
-
- if (!matchesStringOrRegExp(postcss.vendor.unprefixed(name), blacklist)) {
- return;
- }
-
- report({
- index: pseudoNode.sourceIndex,
- message: messages.rejected(name),
- node: rule,
- result,
- ruleName,
- });
- });
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-case/README.md b/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-case/README.md
deleted file mode 100644
index 9cf9621..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-case/README.md
+++ /dev/null
@@ -1,107 +0,0 @@
-# selector-pseudo-element-case
-
-Specify lowercase or uppercase for pseudo-element selectors.
-
-```css
- a::before {}
-/** ↑
- * This pseudo-element selector */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"lower"|"upper"`
-
-### `"lower"`
-
-The following patterns are considered violations:
-
-```css
-a:Before {}
-```
-
-```css
-a:bEfOrE {}
-```
-
-```css
-a:BEFORE {}
-```
-
-```css
-a::Before {}
-```
-
-```css
-a::bEfOrE {}
-```
-
-```css
-a::BEFORE {}
-```
-
-```css
-input::-MOZ-PLACEHOLDER {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a:before {}
-```
-
-```css
-a::before {}
-```
-
-```css
-input::-moz-placeholder {}
-```
-
-### `"upper"`
-
-The following patterns are considered violations:
-
-```css
-a:Before {}
-```
-
-```css
-a:bEfOrE {}
-```
-
-```css
-a:BEFORE {}
-```
-
-```css
-a::Before {}
-```
-
-```css
-a::bEfOrE {}
-```
-
-```css
-a::before {}
-```
-
-```css
-input::-moz-placeholder {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a:BEFORE {}
-```
-
-```css
-a::BEFORE {}
-```
-
-```css
-input::-MOZ-PLACEHOLDER {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-case/index.js b/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-case/index.js
deleted file mode 100644
index fc21c02..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-case/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-'use strict';
-
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const isStandardSyntaxSelector = require('../../utils/isStandardSyntaxSelector');
-const keywordSets = require('../../reference/keywordSets');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const transformSelector = require('../../utils/transformSelector');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-pseudo-element-case';
-
-const messages = ruleMessages(ruleName, {
- expected: (actual, expected) => `Expected "${actual}" to be "${expected}"`,
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['lower', 'upper'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- const selector = rule.selector;
-
- if (!selector.includes(':')) {
- return;
- }
-
- transformSelector(result, rule, (selectorTree) => {
- selectorTree.walkPseudos((pseudoNode) => {
- const pseudoElement = pseudoNode.value;
-
- if (!isStandardSyntaxSelector(pseudoElement)) {
- return;
- }
-
- if (
- !pseudoElement.includes('::') &&
- !keywordSets.levelOneAndTwoPseudoElements.has(pseudoElement.toLowerCase().slice(1))
- ) {
- return;
- }
-
- const expectedPseudoElement =
- expectation === 'lower' ? pseudoElement.toLowerCase() : pseudoElement.toUpperCase();
-
- if (pseudoElement === expectedPseudoElement) {
- return;
- }
-
- if (context.fix) {
- pseudoNode.value = expectedPseudoElement;
-
- return;
- }
-
- report({
- message: messages.expected(pseudoElement, expectedPseudoElement),
- node: rule,
- index: pseudoNode.sourceIndex,
- ruleName,
- result,
- });
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-colon-notation/README.md b/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-colon-notation/README.md
deleted file mode 100644
index 723d5c6..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-colon-notation/README.md
+++ /dev/null
@@ -1,115 +0,0 @@
-# selector-pseudo-element-colon-notation
-
-Specify single or double colon notation for applicable pseudo-elements.
-
-```css
- a::before {}
-/** ↑
- * This notation */
-```
-
-The `::` notation was chosen for *pseudo-elements* to establish a discrimination between *pseudo-classes* (which subclass existing elements) and *pseudo-elements* (which are elements not represented in the document tree).
-
-However, for compatibility with existing style sheets, user agents also accept the previous one-colon notation for *pseudo-elements* introduced in CSS levels 1 and 2 (namely, `:first-line`, `:first-letter`, `:before` and `:after`).
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"single"|"double"`
-
-### `"single"`
-
-Applicable pseudo-elements *must always* use the single colon notation.
-
-The following patterns are considered violations:
-
-```css
-a::before { color: pink; }
-```
-
-```css
-a::after { color: pink; }
-```
-
-```css
-a::first-letter { color: pink; }
-```
-
-```css
-a::first-line { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a:before { color: pink; }
-```
-
-```css
-a:after { color: pink; }
-```
-
-```css
-a:first-letter { color: pink; }
-```
-
-```css
-a:first-line { color: pink; }
-```
-
-```css
-input::placeholder { color: pink; }
-```
-
-```css
-li::marker { font-variant-numeric: tabular-nums; }
-```
-
-### `"double"`
-
-Applicable pseudo-elements *must always* use the double colon notation.
-
-The following patterns are considered violations:
-
-```css
-a:before { color: pink; }
-```
-
-```css
-a:after { color: pink; }
-```
-
-```css
-a:first-letter { color: pink; }
-```
-
-```css
-a:first-line { color: pink; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a::before { color: pink; }
-```
-
-```css
-a::after { color: pink; }
-```
-
-```css
-a::first-letter { color: pink; }
-```
-
-```css
-a::first-line { color: pink; }
-```
-
-```css
-input::placeholder { color: pink; }
-```
-
-```css
-li::marker { font-variant-numeric: tabular-nums; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-colon-notation/index.js b/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-colon-notation/index.js
deleted file mode 100644
index 70d3ae5..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-colon-notation/index.js
+++ /dev/null
@@ -1,92 +0,0 @@
-'use strict';
-
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const keywordSets = require('../../reference/keywordSets');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-pseudo-element-colon-notation';
-
-const messages = ruleMessages(ruleName, {
- expected: (q) => `Expected ${q} colon pseudo-element notation`,
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['single', 'double'],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- const selector = rule.selector;
-
- // get out early if no pseudo elements or classes
- if (!selector.includes(':')) {
- return;
- }
-
- const fixPositions = [];
-
- // match only level 1 and 2 pseudo elements
- const pseudoElementsWithColons = Array.from(keywordSets.levelOneAndTwoPseudoElements).map(
- (x) => `:${x}`,
- );
-
- styleSearch({ source: selector.toLowerCase(), target: pseudoElementsWithColons }, (match) => {
- const prevCharIsColon = selector[match.startIndex - 1] === ':';
-
- if (expectation === 'single' && !prevCharIsColon) {
- return;
- }
-
- if (expectation === 'double' && prevCharIsColon) {
- return;
- }
-
- if (context.fix) {
- fixPositions.unshift({ rule, startIndex: match.startIndex });
-
- return;
- }
-
- report({
- message: messages.expected(expectation),
- node: rule,
- index: match.startIndex,
- result,
- ruleName,
- });
- });
-
- if (fixPositions.length) {
- // If expecting : then we found :: so remove one of the colons
- // If expecting :: then we found : so add one extra colon
- const expectedSingle = expectation === 'single';
- const offset = expectedSingle ? 1 : 0;
- const extraColon = expectedSingle ? '' : ':';
-
- fixPositions.forEach(function(fixPosition) {
- rule.selector =
- rule.selector.substring(0, fixPosition.startIndex - offset) +
- extraColon +
- rule.selector.substring(fixPosition.startIndex);
- });
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-no-unknown/README.md b/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-no-unknown/README.md
deleted file mode 100644
index 782be2a..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-no-unknown/README.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# selector-pseudo-element-no-unknown
-
-Disallow unknown pseudo-element selectors.
-
-```css
- a::before {}
-/** ↑
- * This pseudo-element selector */
-```
-
-This rule considers pseudo-element selectors defined in the CSS Specifications, up to and including Editor's Drafts, to be known.
-
-This rule ignores vendor-prefixed pseudo-element selectors.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a::pseudo {}
-```
-
-```css
-a::PSEUDO {}
-```
-
-```css
-a::element {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a:before {}
-```
-
-```css
-a::before {}
-```
-
-```css
-::selection {}
-```
-
-```css
-input::-moz-placeholder {}
-```
-
-## Optional secondary options
-
-### `ignorePseudoElements: ["/regex/", "string"]`
-
-Given:
-
-```js
-["/^my-/", "pseudo-element"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a::pseudo-element {}
-```
-
-```css
-a::my-pseudo {}
-```
-
-```css
-a::my-other-pseudo {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-no-unknown/index.js b/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-no-unknown/index.js
deleted file mode 100644
index aad7ab9..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-no-unknown/index.js
+++ /dev/null
@@ -1,90 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const isStandardSyntaxSelector = require('../../utils/isStandardSyntaxSelector');
-const keywordSets = require('../../reference/keywordSets');
-const optionsMatches = require('../../utils/optionsMatches');
-const parseSelector = require('../../utils/parseSelector');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-pseudo-element-no-unknown';
-
-const messages = ruleMessages(ruleName, {
- rejected: (selector) => `Unexpected unknown pseudo-element selector "${selector}"`,
-});
-
-function rule(actual, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- { actual },
- {
- actual: options,
- possible: {
- ignorePseudoElements: [_.isString],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- const selector = rule.selector;
-
- // Return early before parse if no pseudos for performance
-
- if (!selector.includes(':')) {
- return;
- }
-
- parseSelector(selector, result, rule, (selectorTree) => {
- selectorTree.walkPseudos((pseudoNode) => {
- const value = pseudoNode.value;
-
- if (!isStandardSyntaxSelector(value)) {
- return;
- }
-
- // Ignore pseudo-classes
- if (value.slice(0, 2) !== '::') {
- return;
- }
-
- if (optionsMatches(options, 'ignorePseudoElements', pseudoNode.value.slice(2))) {
- return;
- }
-
- const name = value.slice(2);
-
- if (postcss.vendor.prefix(name) || keywordSets.pseudoElements.has(name.toLowerCase())) {
- return;
- }
-
- report({
- message: messages.rejected(value),
- node: rule,
- index: pseudoNode.sourceIndex,
- ruleName,
- result,
- });
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-whitelist/README.md b/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-whitelist/README.md
deleted file mode 100644
index 77931b0..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-whitelist/README.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# selector-pseudo-element-whitelist
-
-Specify a whitelist of allowed pseudo-element selectors.
-
-```css
- a::before {}
-/** ↑
- * This pseudo-element selector */
-```
-
-This rule ignores:
-
-- CSS2 pseudo-elements i.e. those prefixed with a single colon
-- selectors that use variable interpolation e.g. `::#{$variable} {}`
-
-## Options
-
-`array|string|regex`: `["array", "of", "unprefixed", "pseudo-elements" or "regex"]|"pseudo-element"|/regex/`
-
-Given:
-
-```js
-["before", "/^my-/i"]
-```
-
-The following patterns are considered violations:
-
-```css
-a::after {}
-```
-
-```css
-a::not-my-pseudo-element {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a::before {}
-```
-
-```css
-a::my-pseudo-element {}
-```
-
-```css
-a::MY-OTHER-pseudo-element {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-whitelist/index.js b/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-whitelist/index.js
deleted file mode 100644
index aa17cb2..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-pseudo-element-whitelist/index.js
+++ /dev/null
@@ -1,72 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const parseSelector = require('../../utils/parseSelector');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-pseudo-element-whitelist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (selector) => `Unexpected pseudo-element "${selector}"`,
-});
-
-function rule(whitelist) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: whitelist,
- possible: [_.isString, _.isRegExp],
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- const selector = rule.selector;
-
- if (!selector.includes('::')) {
- return;
- }
-
- parseSelector(selector, result, rule, (selectorTree) => {
- selectorTree.walkPseudos((pseudoNode) => {
- const value = pseudoNode.value;
-
- // Ignore pseudo-classes
- if (value[1] !== ':') {
- return;
- }
-
- const name = value.slice(2);
-
- if (matchesStringOrRegExp(postcss.vendor.unprefixed(name), whitelist)) {
- return;
- }
-
- report({
- index: pseudoNode.sourceIndex,
- message: messages.rejected(name),
- node: rule,
- result,
- ruleName,
- });
- });
- });
- });
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-type-case/README.md b/assets/node_modules/stylelint/lib/rules/selector-type-case/README.md
deleted file mode 100644
index 481ed0c..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-type-case/README.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# selector-type-case
-
-Specify lowercase or uppercase for type selectors.
-
-```css
- a {}
-/** ↑
- * This is type selector */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"lower"|"upper"`
-
-### `"lower"`
-
-The following patterns are considered violations:
-
-```css
-A {}
-```
-
-```css
-LI {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {}
-```
-
-```css
-li {}
-```
-
-### `"upper"`
-
-The following patterns are considered violations:
-
-```css
-a {}
-```
-
-```css
-li {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-A {}
-```
-
-```css
-LI {}
-```
-
-## Optional secondary options
-
-### `ignoreTypes: ["/regex/", "non-regex"]`
-
-Given:
-
-```js
-["$childClass", "/(p|P)arent.*/"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-myParentClass {
- color: pink;
-}
-
-$childClass {
- color: pink;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-type-case/index.js b/assets/node_modules/stylelint/lib/rules/selector-type-case/index.js
deleted file mode 100644
index c909d78..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-type-case/index.js
+++ /dev/null
@@ -1,105 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isKeyframeSelector = require('../../utils/isKeyframeSelector');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const isStandardSyntaxTypeSelector = require('../../utils/isStandardSyntaxTypeSelector');
-const optionsMatches = require('../../utils/optionsMatches');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-type-case';
-
-const messages = ruleMessages(ruleName, {
- expected: (actual, expected) => `Expected "${actual}" to be "${expected}"`,
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: expectation,
- possible: ['lower', 'upper'],
- },
- {
- actual: options,
- possible: {
- ignoreTypes: [_.isString],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- let hasComments = _.get(rule, 'raws.selector.raw');
- const selector = hasComments ? hasComments : rule.selector;
- const selectors = rule.selectors;
-
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- if (selectors.some((s) => isKeyframeSelector(s))) {
- return;
- }
-
- parseSelector(selector, result, rule, (selectorAST) => {
- selectorAST.walkTags((tag) => {
- if (!isStandardSyntaxTypeSelector(tag)) {
- return;
- }
-
- if (optionsMatches(options, 'ignoreTypes', tag.value)) {
- return;
- }
-
- const sourceIndex = tag.sourceIndex;
- const value = tag.value;
-
- const expectedValue = expectation === 'lower' ? value.toLowerCase() : value.toUpperCase();
-
- if (value === expectedValue) {
- return;
- }
-
- if (context.fix) {
- if (hasComments) {
- hasComments =
- hasComments.slice(0, sourceIndex) +
- expectedValue +
- hasComments.slice(sourceIndex + value.length);
- _.set(rule, 'raws.selector.raw', hasComments);
- } else {
- rule.selector =
- rule.selector.slice(0, sourceIndex) +
- expectedValue +
- rule.selector.slice(sourceIndex + value.length);
- }
-
- return;
- }
-
- report({
- message: messages.expected(value, expectedValue),
- node: rule,
- index: sourceIndex,
- ruleName,
- result,
- });
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selector-type-no-unknown/README.md b/assets/node_modules/stylelint/lib/rules/selector-type-no-unknown/README.md
deleted file mode 100644
index fb99836..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-type-no-unknown/README.md
+++ /dev/null
@@ -1,123 +0,0 @@
-# selector-type-no-unknown
-
-Disallow unknown type selectors.
-
-```css
- unknown {}
-/** ↑
- * This type selector */
-```
-
-This rule considers tags defined in the HTML, SVG, and MathML specifications to be known.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-unknown {}
-```
-
-```css
-tag {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-input {}
-```
-
-```css
-ul li {}
-```
-
-```css
-li > a {}
-```
-
-## Optional secondary options
-
-### `ignore: ["custom-elements", "default-namespace"]`
-
-#### `"custom-elements"`
-
-Allow custom elements.
-
-The following patterns are considered violations:
-
-```css
-unknown {}
-```
-
-```css
-x-Foo {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-x-foo {}
-```
-
-#### `"default-namespace"`
-
-Allow unknown type selectors if they belong to the default namespace.
-
-The following patterns are considered violations:
-
-```css
-namespace|unknown {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-unknown {}
-```
-
-### `ignoreNamespaces: ["/regex/", /regex/, "string"]`
-
-Given:
-
-```js
-["/^my-/", "custom-namespace"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-custom-namespace|unknown {}
-```
-
-```css
-my-namespace|unknown {}
-```
-
-```css
-my-other-namespace|unknown {}
-```
-
-### `ignoreTypes: ["/regex/", /regex/, "string"]`
-
-Given:
-
-```js
-["/^my-/", "custom-type"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-custom-type {}
-```
-
-```css
-my-type {}
-```
-
-```css
-my-other-type {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/selector-type-no-unknown/index.js b/assets/node_modules/stylelint/lib/rules/selector-type-no-unknown/index.js
deleted file mode 100644
index 31df041..0000000
--- a/assets/node_modules/stylelint/lib/rules/selector-type-no-unknown/index.js
+++ /dev/null
@@ -1,113 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const htmlTags = require('html-tags');
-const isCustomElement = require('../../utils/isCustomElement');
-const isKeyframeSelector = require('../../utils/isKeyframeSelector');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const isStandardSyntaxTypeSelector = require('../../utils/isStandardSyntaxTypeSelector');
-const keywordSets = require('../../reference/keywordSets');
-const mathMLTags = require('mathml-tag-names');
-const optionsMatches = require('../../utils/optionsMatches');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const svgTags = require('svg-tags');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'selector-type-no-unknown';
-
-const messages = ruleMessages(ruleName, {
- rejected: (selector) => `Unexpected unknown type selector "${selector}"`,
-});
-
-function rule(actual, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- { actual },
- {
- actual: options,
- possible: {
- ignore: ['custom-elements', 'default-namespace'],
- ignoreNamespaces: [_.isString, _.isRegExp],
- ignoreTypes: [_.isString, _.isRegExp],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkRules((rule) => {
- const selector = rule.selector;
- const selectors = rule.selectors;
-
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- if (selectors.some((s) => isKeyframeSelector(s))) {
- return;
- }
-
- parseSelector(selector, result, rule, (selectorTree) => {
- selectorTree.walkTags((tagNode) => {
- if (!isStandardSyntaxTypeSelector(tagNode)) {
- return;
- }
-
- if (
- optionsMatches(options, 'ignore', 'custom-elements') &&
- isCustomElement(tagNode.value)
- ) {
- return;
- }
-
- if (
- optionsMatches(options, 'ignore', 'default-namespace') &&
- !(typeof tagNode.namespace === 'string')
- ) {
- return;
- }
-
- if (optionsMatches(options, 'ignoreNamespaces', tagNode.namespace)) {
- return;
- }
-
- if (optionsMatches(options, 'ignoreTypes', tagNode.value)) {
- return;
- }
-
- const tagName = tagNode.value;
- const tagNameLowerCase = tagName.toLowerCase();
-
- if (
- htmlTags.includes(tagNameLowerCase) ||
- // SVG tags are case-sensitive
- svgTags.includes(tagName) ||
- keywordSets.nonStandardHtmlTags.has(tagNameLowerCase) ||
- mathMLTags.includes(tagNameLowerCase)
- ) {
- return;
- }
-
- report({
- message: messages.rejected(tagName),
- node: rule,
- index: tagNode.sourceIndex,
- ruleName,
- result,
- });
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/selectorAttributeOperatorSpaceChecker.js b/assets/node_modules/stylelint/lib/rules/selectorAttributeOperatorSpaceChecker.js
deleted file mode 100644
index 95b86bc..0000000
--- a/assets/node_modules/stylelint/lib/rules/selectorAttributeOperatorSpaceChecker.js
+++ /dev/null
@@ -1,72 +0,0 @@
-'use strict';
-
-const isStandardSyntaxRule = require('../utils/isStandardSyntaxRule');
-const parseSelector = require('../utils/parseSelector');
-const report = require('../utils/report');
-const styleSearch = require('style-search');
-
-module.exports = function(options) {
- options.root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- if (!rule.selector.includes('[') || !rule.selector.includes('=')) {
- return;
- }
-
- let hasFixed = false;
- const selector = rule.raws.selector ? rule.raws.selector.raw : rule.selector;
-
- const fixedSelector = parseSelector(selector, options.result, rule, (selectorTree) => {
- selectorTree.walkAttributes((attributeNode) => {
- const operator = attributeNode.operator;
-
- if (!operator) {
- return;
- }
-
- const attributeNodeString = attributeNode.toString();
-
- styleSearch({ source: attributeNodeString, target: operator }, (match) => {
- const index = options.checkBeforeOperator ? match.startIndex : match.endIndex - 1;
-
- checkOperator(attributeNodeString, index, rule, attributeNode, operator);
- });
- });
- });
-
- if (hasFixed) {
- if (!rule.raws.selector) {
- rule.selector = fixedSelector;
- } else {
- rule.raws.selector.raw = fixedSelector;
- }
- }
-
- function checkOperator(source, index, node, attributeNode, operator) {
- options.locationChecker({
- source,
- index,
- err: (m) => {
- if (options.fix && options.fix(attributeNode)) {
- hasFixed = true;
-
- return;
- }
-
- report({
- message: m.replace(
- options.checkBeforeOperator ? operator[0] : operator[operator.length - 1],
- operator,
- ),
- node,
- index: attributeNode.sourceIndex + index,
- result: options.result,
- ruleName: options.checkedRuleName,
- });
- },
- });
- }
- });
-};
diff --git a/assets/node_modules/stylelint/lib/rules/selectorCombinatorSpaceChecker.js b/assets/node_modules/stylelint/lib/rules/selectorCombinatorSpaceChecker.js
deleted file mode 100644
index 5f0f993..0000000
--- a/assets/node_modules/stylelint/lib/rules/selectorCombinatorSpaceChecker.js
+++ /dev/null
@@ -1,79 +0,0 @@
-'use strict';
-
-const isStandardSyntaxRule = require('../utils/isStandardSyntaxRule');
-const parseSelector = require('../utils/parseSelector');
-const report = require('../utils/report');
-
-module.exports = function(opts) {
- let hasFixed;
-
- opts.root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- hasFixed = false;
- const selector = rule.raws.selector ? rule.raws.selector.raw : rule.selector;
-
- const fixedSelector = parseSelector(selector, opts.result, rule, (selectorTree) => {
- selectorTree.walkCombinators((node) => {
- // Ignore spaced descendant combinator
- if (/\s/.test(node.value)) {
- return;
- }
-
- // Check the exist of node in prev of the combinator.
- // in case some that aren't the first begin with combinators (nesting syntax)
- if (opts.locationType === 'before' && !node.prev()) {
- return;
- }
-
- const parentParentNode = node.parent && node.parent.parent;
-
- // Ignore pseudo-classes selector like `.foo:nth-child(2n + 1) {}`
- if (parentParentNode && parentParentNode.type === 'pseudo') {
- return;
- }
-
- const sourceIndex = node.sourceIndex;
- const index =
- node.value.length > 1 && opts.locationType === 'before'
- ? sourceIndex
- : sourceIndex + node.value.length - 1;
-
- check(selector, node, index, rule, sourceIndex);
- });
- });
-
- if (hasFixed) {
- if (!rule.raws.selector) {
- rule.selector = fixedSelector;
- } else {
- rule.raws.selector.raw = fixedSelector;
- }
- }
- });
-
- function check(source, combinator, index, node, sourceIndex) {
- opts.locationChecker({
- source,
- index,
- errTarget: combinator.value,
- err: (m) => {
- if (opts.fix && opts.fix(combinator)) {
- hasFixed = true;
-
- return;
- }
-
- report({
- message: m,
- node,
- index: sourceIndex,
- result: opts.result,
- ruleName: opts.checkedRuleName,
- });
- },
- });
- }
-};
diff --git a/assets/node_modules/stylelint/lib/rules/selectorListCommaWhitespaceChecker.js b/assets/node_modules/stylelint/lib/rules/selectorListCommaWhitespaceChecker.js
deleted file mode 100644
index 78275dc..0000000
--- a/assets/node_modules/stylelint/lib/rules/selectorListCommaWhitespaceChecker.js
+++ /dev/null
@@ -1,46 +0,0 @@
-'use strict';
-
-const isStandardSyntaxRule = require('../utils/isStandardSyntaxRule');
-const report = require('../utils/report');
-const styleSearch = require('style-search');
-
-module.exports = function(opts) {
- opts.root.walkRules((rule) => {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- const selector = rule.raws.selector ? rule.raws.selector.raw : rule.selector;
-
- styleSearch(
- {
- source: selector,
- target: ',',
- functionArguments: 'skip',
- },
- (match) => {
- checkDelimiter(selector, match.startIndex, rule);
- },
- );
- });
-
- function checkDelimiter(source, index, node) {
- opts.locationChecker({
- source,
- index,
- err: (m) => {
- if (opts.fix && opts.fix(node, index)) {
- return;
- }
-
- report({
- message: m,
- node,
- index,
- result: opts.result,
- ruleName: opts.checkedRuleName,
- });
- },
- });
- }
-};
diff --git a/assets/node_modules/stylelint/lib/rules/shorthand-property-no-redundant-values/README.md b/assets/node_modules/stylelint/lib/rules/shorthand-property-no-redundant-values/README.md
deleted file mode 100644
index f7ac116..0000000
--- a/assets/node_modules/stylelint/lib/rules/shorthand-property-no-redundant-values/README.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# shorthand-property-no-redundant-values
-
-Disallow redundant values in shorthand properties.
-
-```css
-a { margin: 1px 1px 1px 1px; }
-/** ↑ ↑ ↑
- * These values */
-```
-
-This rule alerts you when you use redundant values in the following shorthand properties:
-
-- `margin`
-- `padding`
-- `border-color`
-- `border-radius`
-- `border-style`
-- `border-width`
-- `grid-gap`
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a { margin: 1px 1px; }
-```
-
-```css
-a { margin: 1px 1px 1px 1px; }
-```
-
-```css
-a { padding: 1px 2px 1px; }
-```
-
-```css
-a { border-radius: 1px 2px 1px 2px; }
-```
-
-```css
-a { -webkit-border-radius: 1px 1px 1px 1px; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { margin: 1px; }
-```
-
-```css
-a { margin: 1px 1px 1px 2px; }
-```
-
-```css
-a { padding: 1px 1em 1pt 1pc; }
-```
-
-```css
-a { border-radius: 10px / 5px; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/shorthand-property-no-redundant-values/index.js b/assets/node_modules/stylelint/lib/rules/shorthand-property-no-redundant-values/index.js
deleted file mode 100644
index 96fe3c6..0000000
--- a/assets/node_modules/stylelint/lib/rules/shorthand-property-no-redundant-values/index.js
+++ /dev/null
@@ -1,135 +0,0 @@
-'use strict';
-
-const isStandardSyntaxDeclaration = require('../../utils/isStandardSyntaxDeclaration');
-const isStandardSyntaxProperty = require('../../utils/isStandardSyntaxProperty');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'shorthand-property-no-redundant-values';
-
-const messages = ruleMessages(ruleName, {
- rejected: (unexpected, expected) =>
- `Unexpected longhand value '${unexpected}' instead of '${expected}'`,
-});
-
-const propertiesWithShorthandNotation = new Set([
- 'margin',
- 'padding',
- 'border-color',
- 'border-radius',
- 'border-style',
- 'border-width',
- 'grid-gap',
-]);
-
-const ignoredCharacters = ['+', '*', '/', '(', ')', '$', '@', '--', 'var('];
-
-function hasIgnoredCharacters(value) {
- return ignoredCharacters.some((char) => value.includes(char));
-}
-
-function isShorthandProperty(property) {
- return propertiesWithShorthandNotation.has(property);
-}
-
-function canCondense(top, right, bottom, left) {
- const lowerTop = top.toLowerCase();
- const lowerRight = right.toLowerCase();
- const lowerBottom = bottom && bottom.toLowerCase();
- const lowerLeft = left && left.toLowerCase();
-
- if (canCondenseToOneValue(lowerTop, lowerRight, lowerBottom, lowerLeft)) {
- return [top];
- }
-
- if (canCondenseToTwoValues(lowerTop, lowerRight, lowerBottom, lowerLeft)) {
- return [top, right];
- }
-
- if (canCondenseToThreeValues(lowerTop, lowerRight, lowerBottom, lowerLeft)) {
- return [top, right, bottom];
- }
-
- return [top, right, bottom, left];
-}
-
-function canCondenseToOneValue(top, right, bottom, left) {
- if (top !== right) {
- return false;
- }
-
- return (top === bottom && (bottom === left || !left)) || (!bottom && !left);
-}
-
-function canCondenseToTwoValues(top, right, bottom, left) {
- return (top === bottom && right === left) || (top === bottom && !left && top !== right);
-}
-
-function canCondenseToThreeValues(top, right, bottom, left) {
- return right === left;
-}
-
-function rule(actual, secondary, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- if (!isStandardSyntaxDeclaration(decl) || !isStandardSyntaxProperty(decl.prop)) {
- return;
- }
-
- const prop = decl.prop;
- const value = decl.value;
-
- const normalizedProp = postcss.vendor.unprefixed(prop.toLowerCase());
-
- if (hasIgnoredCharacters(value) || !isShorthandProperty(normalizedProp)) {
- return;
- }
-
- const valuesToShorthand = [];
-
- valueParser(value).walk((valueNode) => {
- if (valueNode.type !== 'word') {
- return;
- }
-
- valuesToShorthand.push(valueParser.stringify(valueNode));
- });
-
- if (valuesToShorthand.length <= 1 || valuesToShorthand.length > 4) {
- return;
- }
-
- const shortestForm = canCondense(...valuesToShorthand);
- const shortestFormString = shortestForm.filter((value) => value).join(' ');
- const valuesFormString = valuesToShorthand.join(' ');
-
- if (shortestFormString.toLowerCase() === valuesFormString.toLowerCase()) {
- return;
- }
-
- if (context.fix) {
- decl.value = decl.value.replace(value, shortestFormString);
- } else {
- report({
- message: messages.rejected(value, shortestFormString),
- node: decl,
- result,
- ruleName,
- });
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/string-no-newline/README.md b/assets/node_modules/stylelint/lib/rules/string-no-newline/README.md
deleted file mode 100644
index 1f95da0..0000000
--- a/assets/node_modules/stylelint/lib/rules/string-no-newline/README.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# string-no-newline
-
-Disallow (unescaped) newlines in strings.
-
-```css
-a {
- content: "first
- second"; ↑
-} ↑
-/** ↑
- * The newline here */
-```
-
-[The spec](https://www.w3.org/TR/CSS2/syndata.html#strings) says this: "A string cannot directly contain a newline. To include a newline in a string, use an escape representing the line feed character in ISO-10646 (U+000A), such as '\A' or '\00000a'." And also: "It is possible to break strings over several lines, for aesthetic or other reasons, but in such a case the newline itself has to be escaped with a backslash (\\)."
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a {
- content: "first
- second";
-}
-```
-
-```css
-[title="something
-is probably wrong"] {}
-```
-
-```css
-a {
- font-family: "Times
- New
- Roman";
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- content: "first\Asecond";
-}
-```
-
-```css
-a {
- content: "first\\nsecond";
-}
-```
-
-```css
-[title="nothing\
- is wrong"] {}
-```
-
-```css
-a {
- font-family: "Times New Roman";
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/string-no-newline/index.js b/assets/node_modules/stylelint/lib/rules/string-no-newline/index.js
deleted file mode 100644
index 713df65..0000000
--- a/assets/node_modules/stylelint/lib/rules/string-no-newline/index.js
+++ /dev/null
@@ -1,113 +0,0 @@
-'use strict';
-
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const isStandardSyntaxSelector = require('../../utils/isStandardSyntaxSelector');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'string-no-newline';
-const reNewLine = /(\r?\n)/;
-
-const messages = ruleMessages(ruleName, {
- rejected: 'Unexpected newline in string',
-});
-
-function rule(actual) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, { actual });
-
- if (!validOptions) {
- return;
- }
-
- root.walk((node) => {
- switch (node.type) {
- case 'atrule':
- checkDeclOrAtRule(node, node.params, atRuleParamIndex);
- break;
- case 'decl':
- checkDeclOrAtRule(node, node.value, declarationValueIndex);
- break;
- case 'rule':
- checkRule(node);
- break;
- }
- });
-
- function checkRule(rule) {
- // Get out quickly if there are no new line
- if (!reNewLine.test(rule.selector)) {
- return;
- }
-
- if (!isStandardSyntaxSelector(rule.selector)) {
- return;
- }
-
- parseSelector(rule.selector, result, rule, (selectorTree) => {
- selectorTree.walkAttributes((attributeNode) => {
- if (!reNewLine.test(attributeNode.value)) {
- return;
- }
-
- const openIndex = [
- // length of our attribute
- attributeNode.attribute,
- // length of our operator , ie '='
- attributeNode.operator,
- // length of the contents before newline
- RegExp.leftContext,
- ].reduce(
- (index, str) => index + str.length,
- // index of the start of our attribute node in our source
- attributeNode.sourceIndex,
- );
-
- report({
- message: messages.rejected,
- node: rule,
- index: openIndex,
- result,
- ruleName,
- });
- });
- });
- }
-
- function checkDeclOrAtRule(node, value, getIndex) {
- // Get out quickly if there are no new line
- if (!reNewLine.test(value)) {
- return;
- }
-
- valueParser(value).walk((valueNode) => {
- if (valueNode.type !== 'string' || !reNewLine.test(valueNode.value)) {
- return;
- }
-
- const openIndex = [
- // length of the quote
- valueNode.quote,
- // length of the contents before newline
- RegExp.leftContext,
- ].reduce((index, str) => index + str.length, valueNode.sourceIndex);
-
- report({
- message: messages.rejected,
- node,
- index: getIndex(node) + openIndex,
- result,
- ruleName,
- });
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/string-quotes/README.md b/assets/node_modules/stylelint/lib/rules/string-quotes/README.md
deleted file mode 100644
index 2d3cf18..0000000
--- a/assets/node_modules/stylelint/lib/rules/string-quotes/README.md
+++ /dev/null
@@ -1,114 +0,0 @@
-# string-quotes
-
-Specify single or double quotes around strings.
-
-```css
-a[id="foo"] { content: "x"; }
-/** ↑ ↑ ↑ ↑
- * These quotes and these quotes */
-```
-
-Quotes within comments are ignored.
-
-
-```css
-/* "This is fine" */
-/* 'And this is also fine' */
-```
-
-Single quotes in a charset @-rule are ignored as using single quotes in this context is incorrect according the [CSS specification](https://www.w3.org/TR/CSS2/syndata.html#x57).
-
-```css
-@charset "utf-8"
-/* fine regardless of configuration */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix most of the problems reported by this rule.
-
-## Options
-
-`string`: `"single"|"double"`
-
-### `"single"`
-
-Strings *must always* be wrapped with single quotes.
-
-The following patterns are considered violations:
-
-```css
-a { content: "x"; }
-```
-
-```css
-a[id="foo"] {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { content: 'x'; }
-```
-
-```css
-a[id='foo'] {}
-```
-
-```css
-a { content: "x'y'z"; }
-```
-
-### `"double"`
-
-Strings *must always* be wrapped with double quotes.
-
-The following patterns are considered violations:
-
-```css
-a { content: 'x'; }
-```
-
-```css
-a[id='foo'] {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { content: "x"; }
-```
-
-```css
-a[id="foo"] {}
-```
-
-```css
-a { content: 'x"y"z'; }
-```
-
-## Optional secondary options
-
-### `avoidEscape`: `true|false`, defaults to `true`
-
-Allows strings to use single-quotes or double-quotes so long as the string contains a quote that would have to be escaped otherwise.
-
-For example, with `"single", { "avoidEscape" : false }`.
-
-The following patterns are considered violations:
-
-```css
-a { content: "x'y'z"; }
-```
-
-```css
-a[id="foo'bar'baz"] {}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { content: 'x'; }
-```
-
-```css
-a[id='foo'] {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/string-quotes/index.js b/assets/node_modules/stylelint/lib/rules/string-quotes/index.js
deleted file mode 100644
index 8d52819..0000000
--- a/assets/node_modules/stylelint/lib/rules/string-quotes/index.js
+++ /dev/null
@@ -1,181 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
-const parseSelector = require('../../utils/parseSelector');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'string-quotes';
-
-const messages = ruleMessages(ruleName, {
- expected: (q) => `Expected ${q} quotes`,
-});
-
-const singleQuote = `'`;
-const doubleQuote = `"`;
-
-function rule(expectation, secondary, context) {
- const correctQuote = expectation === 'single' ? singleQuote : doubleQuote;
- const erroneousQuote = expectation === 'single' ? doubleQuote : singleQuote;
-
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: expectation,
- possible: ['single', 'double'],
- },
- {
- actual: secondary,
- possible: {
- avoidEscape: _.isBoolean,
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- const avoidEscape = _.get(secondary, 'avoidEscape', true);
-
- root.walk((node) => {
- switch (node.type) {
- case 'atrule':
- checkDeclOrAtRule(node, node.params, atRuleParamIndex);
- break;
- case 'decl':
- checkDeclOrAtRule(node, node.value, declarationValueIndex);
- break;
- case 'rule':
- checkRule(node);
- break;
- }
- });
-
- function checkRule(rule) {
- if (!isStandardSyntaxRule(rule)) {
- return;
- }
-
- if (!rule.selector.includes('[') || !rule.selector.includes('=')) {
- return;
- }
-
- const fixPositions = [];
-
- parseSelector(rule.selector, result, rule, (selectorTree) => {
- selectorTree.walkAttributes((attributeNode) => {
- if (attributeNode.quoted && attributeNode.value.includes(erroneousQuote)) {
- const needsEscape = attributeNode.value.includes(correctQuote);
-
- if (avoidEscape && needsEscape) {
- // don't consider this an error
- return;
- }
-
- const openIndex =
- // index of the start of our attribute node in our source
- attributeNode.sourceIndex +
- // length of our attribute
- attributeNode.attribute.length +
- // length of our operator , ie '='
- attributeNode.operator.length +
- // and the length of the quote
- erroneousQuote.length;
-
- // we currently don't fix escapes
- if (context.fix && !needsEscape) {
- const closeIndex =
- // our initial index
- openIndex +
- // the length of our value
- attributeNode.value.length -
- // with the length of our quote subtracted
- erroneousQuote.length;
-
- fixPositions.push(openIndex, closeIndex);
- } else {
- report({
- message: messages.expected(expectation),
- node: rule,
- index: openIndex,
- result,
- ruleName,
- });
- }
- }
- });
- });
- fixPositions.forEach((fixIndex) => {
- rule.selector = replaceQuote(rule.selector, fixIndex, correctQuote);
- });
- }
-
- function checkDeclOrAtRule(node, value, getIndex) {
- const fixPositions = [];
-
- // Get out quickly if there are no erroneous quotes
- if (!value.includes(erroneousQuote)) {
- return;
- }
-
- if (node.type === 'atrule' && node.name === 'charset') {
- // allow @charset rules to have double quotes, in spite of the configuration
- // TODO: @charset should always use double-quotes, see https://github.com/stylelint/stylelint/issues/2788
- return;
- }
-
- valueParser(value).walk((valueNode) => {
- if (valueNode.type === 'string' && valueNode.quote === erroneousQuote) {
- const needsEscape = valueNode.value.includes(correctQuote);
-
- if (avoidEscape && needsEscape) {
- // don't consider this an error
- return;
- }
-
- const openIndex = valueNode.sourceIndex;
-
- // we currently don't fix escapes
- if (context.fix && !needsEscape) {
- const closeIndex = openIndex + valueNode.value.length + erroneousQuote.length;
-
- fixPositions.push(openIndex, closeIndex);
- } else {
- report({
- message: messages.expected(expectation),
- node,
- index: getIndex(node) + openIndex,
- result,
- ruleName,
- });
- }
- }
- });
-
- fixPositions.forEach((fixIndex) => {
- if (node.type === 'atrule') {
- node.params = replaceQuote(node.params, fixIndex, correctQuote);
- } else {
- node.value = replaceQuote(node.value, fixIndex, correctQuote);
- }
- });
- }
- };
-}
-
-function replaceQuote(string, index, replace) {
- return string.substring(0, index) + replace + string.substring(index + replace.length);
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/time-min-milliseconds/README.md b/assets/node_modules/stylelint/lib/rules/time-min-milliseconds/README.md
deleted file mode 100644
index 9b09008..0000000
--- a/assets/node_modules/stylelint/lib/rules/time-min-milliseconds/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# time-min-milliseconds
-
-Specify the minimum number of milliseconds for time values.
-
-```css
-a { animation: slip-n-slide 150ms linear; }
-/** ↑
- * This time */
-```
-
-This rule checks positive numbers in `transition-duration`, `transition-delay`, `animation-duration`, `animation-delay`, and those times as they manifest in the `transition` and `animation` shorthands.
-
-## Options
-
-`int`: Minimum number of milliseconds for time values.
-
-For example, with `100`:
-
-The following patterns are considered violations:
-
-```css
-a { animation: 80ms; }
-```
-
-```css
-a { transition-duration: 0.08s; }
-```
-
-```css
-a { transition: background-color 6ms linear; }
-```
-
-```css
-a { animation-delay: 0.01s; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { animation: 8s; }
-```
-
-```css
-a { transition-duration: 0.8s; }
-```
-
-```css
-a { transition: background-color 600ms linear; }
-```
-
-```css
-a { animation-delay: 1s; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/time-min-milliseconds/index.js b/assets/node_modules/stylelint/lib/rules/time-min-milliseconds/index.js
deleted file mode 100644
index ca218de..0000000
--- a/assets/node_modules/stylelint/lib/rules/time-min-milliseconds/index.js
+++ /dev/null
@@ -1,81 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const keywordSets = require('../../reference/keywordSets');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'time-min-milliseconds';
-
-const messages = ruleMessages(ruleName, {
- expected: (time) => `Expected a minimum of ${time} milliseconds`,
-});
-
-function rule(minimum) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: minimum,
- possible: _.isNumber,
- });
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const propertyName = postcss.vendor.unprefixed(decl.prop.toLowerCase());
-
- if (keywordSets.longhandTimeProperties.has(propertyName) && !isAcceptableTime(decl.value)) {
- complain(decl);
- }
-
- if (keywordSets.shorthandTimeProperties.has(propertyName)) {
- const valueList = postcss.list.space(decl.value);
-
- for (const value of valueList) {
- if (!isAcceptableTime(value)) {
- complain(decl, decl.value.indexOf(value));
- }
- }
- }
- });
-
- function isAcceptableTime(time) {
- const parsedTime = valueParser.unit(time);
-
- if (!parsedTime) return true;
-
- if (parsedTime.number <= 0) {
- return true;
- }
-
- if (parsedTime.unit.toLowerCase() === 'ms' && parsedTime.number < minimum) {
- return false;
- }
-
- if (parsedTime.unit.toLowerCase() === 's' && parsedTime.number * 1000 < minimum) {
- return false;
- }
-
- return true;
- }
-
- function complain(decl, offset = 0) {
- report({
- result,
- ruleName,
- message: messages.expected(minimum),
- index: declarationValueIndex(decl) + offset,
- node: decl,
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/unicode-bom/README.md b/assets/node_modules/stylelint/lib/rules/unicode-bom/README.md
deleted file mode 100644
index 206a8a1..0000000
--- a/assets/node_modules/stylelint/lib/rules/unicode-bom/README.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# unicode-bom
-
-Require or disallow the Unicode Byte Order Mark.
-
-## Options
-
-`string`: `"always"|"never"`
-
-### `"always"`
-
-The following pattern is considered a violation:
-
-```css
-a {}
-```
-
-The following pattern is *not* considered a violation:
-
-```css
-U+FEFF
-a {}
-```
-
-### `"never"`
-
-The following pattern is considered a violation:
-
-```css
-U+FEFF
-a {}
-```
-
-The following pattern is *not* considered a violation:
-
-```css
-a {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/unicode-bom/index.js b/assets/node_modules/stylelint/lib/rules/unicode-bom/index.js
deleted file mode 100644
index 53ddf68..0000000
--- a/assets/node_modules/stylelint/lib/rules/unicode-bom/index.js
+++ /dev/null
@@ -1,57 +0,0 @@
-'use strict';
-
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'unicode-bom';
-
-const messages = ruleMessages(ruleName, {
- expected: 'Expected Unicode BOM',
- rejected: 'Unexpected Unicode BOM',
-});
-
-function rule(expectation) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never'],
- });
-
- if (
- !validOptions ||
- root.source.inline ||
- root.source.lang === 'object-literal' ||
- // Ignore HTML documents
- root.document !== undefined
- ) {
- return;
- }
-
- const { hasBOM } = root.source.input;
-
- if (expectation === 'always' && !hasBOM) {
- report({
- result,
- ruleName,
- message: messages.expected,
- root,
- line: 1,
- });
- }
-
- if (expectation === 'never' && hasBOM) {
- report({
- result,
- ruleName,
- message: messages.rejected,
- root,
- line: 1,
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/unit-blacklist/README.md b/assets/node_modules/stylelint/lib/rules/unit-blacklist/README.md
deleted file mode 100644
index fbf1d87..0000000
--- a/assets/node_modules/stylelint/lib/rules/unit-blacklist/README.md
+++ /dev/null
@@ -1,139 +0,0 @@
-# unit-blacklist
-
-Specify a blacklist of disallowed units.
-
-```css
-a { width: 100px; }
-/** ↑
- * These units */
-```
-
-## Options
-
-`array|string`: `["array", "of", "units"]|"unit"`
-
-Given:
-
-```js
-["px", "em", "deg"]
-```
-
-The following patterns are considered violations:
-
-```css
-a { width: 100px; }
-```
-
-```css
-a { font-size: 10em; }
-```
-
-```css
-a { transform: rotate(30deg); }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { font-size: 1.2rem; }
-```
-
-```css
-a { line-height: 1.2; }
-```
-
-```css
-a { height: 100vmin; }
-```
-
-```css
-a { animation: animation-name 5s ease; }
-```
-
-## Optional secondary options
-
-### `ignoreProperties: { unit: ["property", "/regex/", /regex/] }`
-
-Ignore units in the values of declarations with the specified properties.
-
-For example, with `["px", "vmin"]`.
-
-Given:
-
-```js
-{
- "px": [ "font-size", "/^border/" ],
- "vmin": [ "width" ]
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { font-size: 13px; }
-```
-
-```css
-a { border-bottom-width: 6px; }
-```
-
-```css
-a { width: 100vmin; }
-```
-
-The following patterns are considered violations:
-
-```css
-a { line-height: 12px; }
-```
-
-```css
-a { -moz-border-radius-topright: 40px; }
-```
-
-```css
-a { height: 100vmin; }
-```
-
-### `ignoreMediaFeatureNames: { unit: ["property", "/regex/", /regex/] }`
-
-Ignore units for specific feature names.
-
-For example, with `["px", "dpi"]`.
-
-Given:
-
-```js
-{
- "px": [ "min-width", "/height$/" ],
- "dpi": [ "resolution" ]
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-@media (min-width: 960px) {}
-```
-
-```css
-@media (max-height: 280px) {}
-```
-
-```css
-@media not (resolution: 300dpi) {}
-```
-
-The following patterns are considered violations:
-
-```css
-@media screen and (max-device-width: 500px) {}
-```
-
-```css
-@media all and (min-width: 500px) and (max-width: 200px) {}
-```
-
-```css
-@media print and (max-resolution: 100dpi) {}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/unit-blacklist/index.js b/assets/node_modules/stylelint/lib/rules/unit-blacklist/index.js
deleted file mode 100644
index cf50e1f..0000000
--- a/assets/node_modules/stylelint/lib/rules/unit-blacklist/index.js
+++ /dev/null
@@ -1,123 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const getUnitFromValueNode = require('../../utils/getUnitFromValueNode');
-const mediaParser = require('postcss-media-query-parser').default;
-const optionsMatches = require('../../utils/optionsMatches');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateObjectWithArrayProps = require('../../utils/validateObjectWithArrayProps');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'unit-blacklist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (unit) => `Unexpected unit "${unit}"`,
-});
-
-// a function to retrieve only the media feature name
-// could be externalized in an utils function if needed in other code
-const getMediaFeatureName = (mediaFeatureNode) => {
- const value = mediaFeatureNode.value.toLowerCase();
-
- return /((-?\w*)*)/i.exec(value)[1];
-};
-
-function rule(blacklistInput, options) {
- const blacklist = [].concat(blacklistInput);
-
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: blacklist,
- possible: [_.isString],
- },
- {
- optional: true,
- actual: options,
- possible: {
- ignoreProperties: validateObjectWithArrayProps([_.isString, _.isRegExp]),
- ignoreMediaFeatureNames: validateObjectWithArrayProps([_.isString, _.isRegExp]),
- },
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- function check(node, nodeIndex, valueNode, input, option) {
- const unit = getUnitFromValueNode(valueNode);
-
- // There is not unit or it is not configured as a violation
- if (!unit || (unit && !blacklist.includes(unit.toLowerCase()))) {
- return;
- }
-
- // The unit has an ignore option for the specific input
- if (optionsMatches(option, unit.toLowerCase(), input)) {
- return;
- }
-
- report({
- index: nodeIndex + valueNode.sourceIndex,
- message: messages.rejected(unit),
- node,
- result,
- ruleName,
- });
- }
-
- function checkMedia(node, value, getIndex) {
- mediaParser(node.params).walk(/^media-feature$/i, (mediaFeatureNode) => {
- const mediaName = getMediaFeatureName(mediaFeatureNode);
- const parentValue = mediaFeatureNode.parent.value;
-
- valueParser(value).walk(function(valueNode) {
- // Ignore all non-word valueNode and
- // the values not included in the parentValue string
- if (valueNode.type !== 'word' || !parentValue.includes(valueNode.value)) {
- return;
- }
-
- check(
- node,
- getIndex(node),
- valueNode,
- mediaName,
- options ? options.ignoreMediaFeatureNames : {},
- );
- });
- });
- }
-
- function checkDecl(node, value, getIndex) {
- // make sure multiplication operations (*) are divided - not handled
- // by postcss-value-parser
- value = value.replace(/\*/g, ',');
-
- valueParser(value).walk(function(valueNode) {
- // Ignore wrong units within `url` function
- if (valueNode.type === 'function' && valueNode.value.toLowerCase() === 'url') {
- return false;
- }
-
- check(node, getIndex(node), valueNode, node.prop, options ? options.ignoreProperties : {});
- });
- }
-
- root.walkAtRules(/^media$/i, (atRule) => checkMedia(atRule, atRule.params, atRuleParamIndex));
- root.walkDecls((decl) => checkDecl(decl, decl.value, declarationValueIndex));
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/unit-case/README.md b/assets/node_modules/stylelint/lib/rules/unit-case/README.md
deleted file mode 100644
index 47199fa..0000000
--- a/assets/node_modules/stylelint/lib/rules/unit-case/README.md
+++ /dev/null
@@ -1,111 +0,0 @@
-# unit-case
-
-Specify lowercase or uppercase for units.
-
-```css
- a { width: 10px; }
-/** ↑
- * These units */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix most of the problems reported by this rule.
-
-## Options
-
-`string`: `"lower"|"upper"`
-
-### `"lower"`
-
-The following patterns are considered violations:
-
-```css
-a {
- width: 10PX;
-}
-```
-
-```css
-a {
- width: 10Px;
-}
-```
-
-```css
-a {
- width: 10pX;
-}
-```
-
-```css
-a {
- width: 10PIXEL;
-}
-```
-
-```css
-a {
- width: calc(10PX * 2);
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- width: 10px;
-}
-```
-
-```css
-a {
- width: calc(10px * 2);
-}
-```
-
-### `"upper"`
-
-The following patterns are considered violations:
-
-```css
-a {
- width: 10px;
-}
-```
-
-```css
-a {
- width: 10Px;
-}
-```
-
-```css
-a {
- width: 10pX;
-}
-```
-
-```css
-a {
- width: 10pixel;
-}
-```
-
-```css
-a {
- width: calc(10px * 2);
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- width: 10PX;
-}
-```
-
-```css
-a {
- width: calc(10PX * 2);
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/unit-case/index.js b/assets/node_modules/stylelint/lib/rules/unit-case/index.js
deleted file mode 100644
index 2f55ef8..0000000
--- a/assets/node_modules/stylelint/lib/rules/unit-case/index.js
+++ /dev/null
@@ -1,112 +0,0 @@
-'use strict';
-
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const getUnitFromValueNode = require('../../utils/getUnitFromValueNode');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'unit-case';
-
-const messages = ruleMessages(ruleName, {
- expected: (actual, expected) => `Expected "${actual}" to be "${expected}"`,
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['lower', 'upper'],
- });
-
- if (!validOptions) {
- return;
- }
-
- function check(node, value, getIndex) {
- const violations = [];
-
- function processValue(valueNode) {
- const unit = getUnitFromValueNode(valueNode);
-
- if (!unit) {
- return false;
- }
-
- const expectedUnit = expectation === 'lower' ? unit.toLowerCase() : unit.toUpperCase();
-
- if (unit === expectedUnit) {
- return false;
- }
-
- violations.push({
- index: getIndex(node) + valueNode.sourceIndex,
- message: messages.expected(unit, expectedUnit),
- });
-
- return true;
- }
-
- const parsedValue = valueParser(value).walk((valueNode) => {
- // Ignore wrong units within `url` function
- let needFix = false;
- const value = valueNode.value;
-
- if (valueNode.type === 'function' && value.toLowerCase() === 'url') {
- return false;
- }
-
- if (value.includes('*')) {
- value.split('*').some((val) => {
- return processValue({
- ...valueNode,
- sourceIndex: value.indexOf(val) + val.length + 1,
- value: val,
- });
- });
- }
-
- needFix = processValue(valueNode);
-
- if (needFix && context.fix) {
- valueNode.value = expectation === 'lower' ? value.toLowerCase() : value.toUpperCase();
- }
- });
-
- if (violations.length) {
- if (context.fix) {
- if (node.name === 'media') {
- node.params = parsedValue.toString();
- } else {
- node.value = parsedValue.toString();
- }
- } else {
- violations.forEach((err) => {
- report({
- index: err.index,
- message: err.message,
- node,
- result,
- ruleName,
- });
- });
- }
- }
- }
-
- root.walkAtRules((atRule) => {
- if (!/^media$/i.test(atRule.name) && !atRule.variable) {
- return;
- }
-
- check(atRule, atRule.params, atRuleParamIndex);
- });
- root.walkDecls((decl) => check(decl, decl.value, declarationValueIndex));
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/unit-no-unknown/README.md b/assets/node_modules/stylelint/lib/rules/unit-no-unknown/README.md
deleted file mode 100644
index a51b8c3..0000000
--- a/assets/node_modules/stylelint/lib/rules/unit-no-unknown/README.md
+++ /dev/null
@@ -1,125 +0,0 @@
-# unit-no-unknown
-
-Disallow unknown units.
-
-```css
-a { width: 100pixels; }
-/** ↑
- * These units */
-```
-
-This rule considers units defined in the CSS Specifications, up to and including Editor's Drafts, to be known.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a {
- width: 10pixels;
-}
-```
-
-```css
-a {
- width: calc(10px + 10pixels);
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- width: 10px;
-}
-```
-
-```css
-a {
- width: 10Px;
-}
-```
-
-```css
-a {
- width: 10pX;
-}
-```
-
-```css
-a {
- width: calc(10px + 10px);
-}
-```
-
-## Optional secondary options
-
-### `ignoreUnits: ["/regex/", /regex/, "string"]`
-
-Given:
-
-```js
-["/^my-/", "custom"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-width: 10custom;
-a {
-}
-```
-
-```css
-a {
- width: 10my-unit;
-}
-```
-
-```css
-a {
- width: 10my-other-unit;
-}
-```
-
-### `ignoreFunctions: ["/regex/", /regex/, "string"]`
-
-Given:
-
-```js
-["image-set", "/^my-/", "/^YOUR-/i"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- background-image: image-set(
- '/images/some-image-1x.jpg' 1x,
- '/images/some-image-2x.jpg' 2x,
- '/images/some-image-3x.jpg' 3x
- );
-}
-```
-
-```css
-a {
- background-image: my-image-set(
- '/images/some-image-1x.jpg' 1x,
- '/images/some-image-2x.jpg' 2x,
- '/images/some-image-3x.jpg' 3x
- );
-}
-```
-
-```css
-a {
- background-image: YoUr-image-set(
- '/images/some-image-1x.jpg' 1x,
- '/images/some-image-2x.jpg' 2x,
- '/images/some-image-3x.jpg' 3x
- );
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/unit-no-unknown/index.js b/assets/node_modules/stylelint/lib/rules/unit-no-unknown/index.js
deleted file mode 100644
index f8803e5..0000000
--- a/assets/node_modules/stylelint/lib/rules/unit-no-unknown/index.js
+++ /dev/null
@@ -1,153 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const getUnitFromValueNode = require('../../utils/getUnitFromValueNode');
-const isMap = require('../../utils/isMap');
-const keywordSets = require('../../reference/keywordSets');
-const mediaParser = require('postcss-media-query-parser').default;
-const optionsMatches = require('../../utils/optionsMatches');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'unit-no-unknown';
-
-const messages = ruleMessages(ruleName, {
- rejected: (unit) => `Unexpected unknown unit "${unit}"`,
-});
-
-// The map property name (in map cleared from comments and spaces) always
-// has index that being divided by 4 gives remainder equals 0
-const mapPropertyNameIndexOffset = 4;
-
-function rule(actual, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- { actual },
- {
- actual: options,
- possible: {
- ignoreUnits: [_.isString, _.isRegExp],
- ignoreFunctions: [_.isString, _.isRegExp],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- function check(node, value, getIndex) {
- // make sure multiplication operations (*) are divided - not handled
- // by postcss-value-parser
- value = value.replace(/\*/g, ',');
- const parsedValue = valueParser(value);
- const ignoredMapProperties = [];
-
- parsedValue.walk(function(valueNode) {
- // Ignore wrong units within `url` function
- // and within functions listed in the `ignoreFunctions` option
- if (
- valueNode.type === 'function' &&
- (valueNode.value.toLowerCase() === 'url' ||
- optionsMatches(options, 'ignoreFunctions', valueNode.value))
- ) {
- return false;
- }
-
- if (isMap(valueNode)) {
- valueNode.nodes.forEach((node, index) => {
- if (!(index % mapPropertyNameIndexOffset)) {
- ignoredMapProperties.push(node.sourceIndex);
- }
- });
- }
-
- if (ignoredMapProperties.includes(valueNode.sourceIndex)) {
- return;
- }
-
- const unit = getUnitFromValueNode(valueNode);
-
- if (!unit) {
- return;
- }
-
- if (optionsMatches(options, 'ignoreUnits', unit)) {
- return;
- }
-
- if (keywordSets.units.has(unit.toLowerCase()) && unit.toLowerCase() !== 'x') {
- return;
- }
-
- if (unit.toLowerCase() === 'x') {
- if (
- node.type === 'atrule' &&
- node.name === 'media' &&
- node.params.toLowerCase().includes('resolution')
- ) {
- let ignoreUnit = false;
-
- mediaParser(node.params).walk((mediaNode, i, mediaNodes) => {
- if (
- mediaNode.value.toLowerCase().includes('resolution') &&
- _.last(mediaNodes).sourceIndex === valueNode.sourceIndex
- ) {
- ignoreUnit = true;
-
- return false;
- }
- });
-
- if (ignoreUnit) {
- return;
- }
- }
-
- if (node.type === 'decl') {
- if (node.prop.toLowerCase() === 'image-resolution') {
- return;
- }
-
- if (/^image-set/i.test(value)) {
- const imageSet = parsedValue.nodes.find((node) => node.value === 'image-set');
- const imageSetValueLastIndex = _.last(imageSet.nodes).sourceIndex;
-
- if (imageSetValueLastIndex >= valueNode.sourceIndex) {
- return;
- }
- }
- }
- }
-
- report({
- index: getIndex(node) + valueNode.sourceIndex,
- message: messages.rejected(unit),
- node,
- result,
- ruleName,
- });
- });
- }
-
- root.walkAtRules((atRule) => {
- if (!/^media$/i.test(atRule.name) && !atRule.variable) {
- return;
- }
-
- check(atRule, atRule.params, atRuleParamIndex);
- });
- root.walkDecls((decl) => check(decl, decl.value, declarationValueIndex));
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/unit-whitelist/README.md b/assets/node_modules/stylelint/lib/rules/unit-whitelist/README.md
deleted file mode 100644
index 67dd021..0000000
--- a/assets/node_modules/stylelint/lib/rules/unit-whitelist/README.md
+++ /dev/null
@@ -1,100 +0,0 @@
-# unit-whitelist
-
-Specify a whitelist of allowed units.
-
-```css
-a { width: 100px; }
-/** ↑
- * These units */
-```
-
-## Options
-
-`array|string`: `["array", "of", "units"]|"unit"`
-
-Given:
-
-```js
-["px", "em", "deg"]
-```
-
-The following patterns are considered violations:
-
-```css
-a { width: 100%; }
-```
-
-```css
-a { font-size: 10rem; }
-```
-
-```css
-a { animation: animation-name 5s ease; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { font-size: 1.2em; }
-```
-
-```css
-a { line-height: 1.2; }
-```
-
-```css
-a { height: 100px; }
-```
-
-```css
-a { height: 100PX; }
-```
-
-```css
-a { transform: rotate(30deg); }
-```
-
-## Optional secondary options
-
-### `ignoreProperties: { unit: ["property", "/regex/", /regex/] }`
-
-Ignore units in the values of declarations with the specified properties.
-
-For example, with `["px", "em"]`.
-
-Given:
-
-```js
-{
- "rem": [ "line-height", "/^border/" ],
- "%": [ "width" ]
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { line-height: 0.1rem; }
-```
-
-```css
-a { border-bottom-width: 6rem; }
-```
-
-```css
-a { width: 100%; }
-```
-
-The following patterns are considered violations:
-
-```css
-a { margin: 0 20rem; }
-```
-
-```css
-a { -moz-border-radius-topright: 20rem; }
-```
-
-```css
-a { height: 100%; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/unit-whitelist/index.js b/assets/node_modules/stylelint/lib/rules/unit-whitelist/index.js
deleted file mode 100644
index 708f75a..0000000
--- a/assets/node_modules/stylelint/lib/rules/unit-whitelist/index.js
+++ /dev/null
@@ -1,83 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const atRuleParamIndex = require('../../utils/atRuleParamIndex');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const getUnitFromValueNode = require('../../utils/getUnitFromValueNode');
-const optionsMatches = require('../../utils/optionsMatches');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateObjectWithArrayProps = require('../../utils/validateObjectWithArrayProps');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'unit-whitelist';
-
-const messages = ruleMessages(ruleName, {
- rejected: (unit) => `Unexpected unit "${unit}"`,
-});
-
-function rule(whitelistInput, options) {
- const whitelist = [].concat(whitelistInput);
-
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: whitelist,
- possible: [_.isString],
- },
- {
- optional: true,
- actual: options,
- possible: {
- ignoreProperties: validateObjectWithArrayProps([_.isString, _.isRegExp]),
- },
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- function check(node, value, getIndex) {
- // make sure multiplication operations (*) are divided - not handled
- // by postcss-value-parser
- value = value.replace(/\*/g, ',');
- valueParser(value).walk(function(valueNode) {
- // Ignore wrong units within `url` function
- if (valueNode.type === 'function' && valueNode.value.toLowerCase() === 'url') {
- return false;
- }
-
- const unit = getUnitFromValueNode(valueNode);
-
- if (!unit || (unit && whitelist.includes(unit.toLowerCase()))) {
- return;
- }
-
- if (options && optionsMatches(options.ignoreProperties, unit.toLowerCase(), node.prop)) {
- return;
- }
-
- report({
- index: getIndex(node) + valueNode.sourceIndex,
- message: messages.rejected(unit),
- node,
- result,
- ruleName,
- });
- });
- }
-
- root.walkAtRules(/^media$/i, (atRule) => check(atRule, atRule.params, atRuleParamIndex));
- root.walkDecls((decl) => check(decl, decl.value, declarationValueIndex));
- };
-}
-
-rule.primaryOptionArray = true;
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/value-keyword-case/README.md b/assets/node_modules/stylelint/lib/rules/value-keyword-case/README.md
deleted file mode 100644
index 1de0281..0000000
--- a/assets/node_modules/stylelint/lib/rules/value-keyword-case/README.md
+++ /dev/null
@@ -1,230 +0,0 @@
-# value-keyword-case
-
-Specify lowercase or uppercase for keywords values.
-
-```css
- a { display: block; }
-/** ↑
- * These values */
-```
-
-This rule ignores [`<custom-idents>`](https://developer.mozilla.org/en/docs/Web/CSS/custom-ident) of known properties. Values which are paired with non-properties (e.g. `$vars` and custom properties), and do not conform to the primary option, can be ignored using the `ignoreValues: []` secondary option.
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`string`: `"lower"|"upper"`
-
-
-### `"lower"`
-
-The following patterns are considered violations:
-
-```css
-a {
- display: Block;
-}
-```
-
-```css
-a {
- display: bLoCk;
-}
-```
-
-```css
-a {
- display: BLOCK;
-}
-```
-
-```css
-a {
- transition: -WEBKIT-TRANSFORM 2s;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- display: block;
-}
-```
-
-```css
-a {
- transition: -webkit-transform 2s;
-}
-```
-
-### `"upper"`
-
-The following patterns are considered violations:
-
-```css
-a {
- display: Block;
-}
-```
-
-```css
-a {
- display: bLoCk;
-}
-```
-
-```css
-a {
- display: block;
-}
-```
-
-```css
-a {
- transition: -webkit-transform 2s;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- display: BLOCK;
-}
-```
-
-```css
-a {
- transition: -WEBKIT-TRANSFORM 2s;
-}
-```
-
-## Optional secondary options
-
-### `ignoreKeywords: ["/regex/", /regex/, "non-regex"]`
-
-Ignore case of keywords values.
-
-For example, with `"lower"`.
-
-Given:
-
-```js
-["Block", "/^(f|F)lex$/"]
-```
-
-The following patterns are considered violations:
-
-```css
-a {
- display: bLoCk;
-}
-```
-
-```css
-a {
- display: BLOCK;
-}
-```
-
-```css
-a {
- display: fLeX;
-}
-```
-
-```css
-a {
- display: FLEX;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- display: block;
-}
-```
-
-```css
-a {
- display: Block;
-}
-```
-
-```css
-a {
- display: flex;
-}
-```
-
-```css
-a {
- display: Flex;
-}
-```
-
-### `ignoreProperties: ["/regex/", /regex/, "non-regex"]`
-
-Ignore case of the values of the listed properties.
-
-For example, with `"lower"`.
-
-```js
-["/^(b|B)ackground$/", "display"]
-```
-
-The following patterns are considered violations:
-
-```css
-a {
- text-align: LEFT;
-}
-```
-
-```css
-a {
- text-align: Left;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- display: bloCk;
-}
-```
-
-```css
-a {
- display: BloCk;
-}
-```
-
-```css
-a {
- display: BLOCK;
-}
-```
-
-```css
-a {
- display: block;
-}
-```
-
-```css
-a {
- background: Red;
-}
-```
-
-```css
-a {
- Background: deepPink;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/value-keyword-case/index.js b/assets/node_modules/stylelint/lib/rules/value-keyword-case/index.js
deleted file mode 100644
index 53603ff..0000000
--- a/assets/node_modules/stylelint/lib/rules/value-keyword-case/index.js
+++ /dev/null
@@ -1,202 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const getUnitFromValueNode = require('../../utils/getUnitFromValueNode');
-const isCounterIncrementCustomIdentValue = require('../../utils/isCounterIncrementCustomIdentValue');
-const isCounterResetCustomIdentValue = require('../../utils/isCounterResetCustomIdentValue');
-const isStandardSyntaxValue = require('../../utils/isStandardSyntaxValue');
-const keywordSets = require('../../reference/keywordSets');
-const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
-
-const ruleName = 'value-keyword-case';
-
-const messages = ruleMessages(ruleName, {
- expected: (actual, expected) => `Expected "${actual}" to be "${expected}"`,
-});
-
-// Operators are interpreted as "words" by the value parser, so we want to make sure to ignore them.
-const ignoredCharacters = new Set(['+', '-', '/', '*', '%']);
-
-const mapLowercaseKeywordsToCamelCase = new Map();
-
-keywordSets.camelCaseKeywords.forEach((func) => {
- mapLowercaseKeywordsToCamelCase.set(func.toLowerCase(), func);
-});
-
-function rule(expectation, options, context) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- {
- actual: expectation,
- possible: ['lower', 'upper'],
- },
- {
- actual: options,
- possible: {
- ignoreProperties: [_.isString, _.isRegExp],
- ignoreKeywords: [_.isString, _.isRegExp],
- },
- optional: true,
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- const prop = decl.prop;
- const value = decl.value;
-
- const parsed = valueParser(decl.raws.value ? decl.raws.value.raw : decl.value);
-
- let needFix = false;
-
- parsed.walk((node) => {
- const valueLowerCase = node.value.toLowerCase();
-
- // Ignore system colors
- if (keywordSets.systemColors.has(valueLowerCase)) {
- return;
- }
-
- // Ignore keywords within `url` and `var` function
- if (
- node.type === 'function' &&
- (valueLowerCase === 'url' ||
- valueLowerCase === 'var' ||
- valueLowerCase === 'counter' ||
- valueLowerCase === 'counters' ||
- valueLowerCase === 'attr')
- ) {
- return false;
- }
-
- const keyword = node.value;
-
- // Ignore css variables, and hex values, and math operators, and sass interpolation
- if (
- node.type !== 'word' ||
- !isStandardSyntaxValue(node.value) ||
- value.includes('#') ||
- ignoredCharacters.has(keyword) ||
- getUnitFromValueNode(node)
- ) {
- return;
- }
-
- if (
- prop === 'animation' &&
- !keywordSets.animationShorthandKeywords.has(valueLowerCase) &&
- !keywordSets.animationNameKeywords.has(valueLowerCase)
- ) {
- return;
- }
-
- if (prop === 'animation-name' && !keywordSets.animationNameKeywords.has(valueLowerCase)) {
- return;
- }
-
- if (
- prop === 'font' &&
- !keywordSets.fontShorthandKeywords.has(valueLowerCase) &&
- !keywordSets.fontFamilyKeywords.has(valueLowerCase)
- ) {
- return;
- }
-
- if (prop === 'font-family' && !keywordSets.fontFamilyKeywords.has(valueLowerCase)) {
- return;
- }
-
- if (prop === 'counter-increment' && isCounterIncrementCustomIdentValue(valueLowerCase)) {
- return;
- }
-
- if (prop === 'counter-reset' && isCounterResetCustomIdentValue(valueLowerCase)) {
- return;
- }
-
- if (prop === 'grid-row' && !keywordSets.gridRowKeywords.has(valueLowerCase)) {
- return;
- }
-
- if (prop === 'grid-column' && !keywordSets.gridColumnKeywords.has(valueLowerCase)) {
- return;
- }
-
- if (prop === 'grid-area' && !keywordSets.gridAreaKeywords.has(valueLowerCase)) {
- return;
- }
-
- if (
- prop === 'list-style' &&
- !keywordSets.listStyleShorthandKeywords.has(valueLowerCase) &&
- !keywordSets.listStyleTypeKeywords.has(valueLowerCase)
- ) {
- return;
- }
-
- if (prop === 'list-style-type' && !keywordSets.listStyleTypeKeywords.has(valueLowerCase)) {
- return;
- }
-
- const ignoreKeywords = (options && options.ignoreKeywords) || [];
- const ignoreProperties = (options && options.ignoreProperties) || [];
-
- if (ignoreKeywords.length > 0 && matchesStringOrRegExp(keyword, ignoreKeywords)) {
- return;
- }
-
- if (ignoreProperties.length > 0 && matchesStringOrRegExp(prop, ignoreProperties)) {
- return;
- }
-
- const keywordLowerCase = keyword.toLocaleLowerCase();
- let expectedKeyword = null;
-
- if (expectation === 'lower' && mapLowercaseKeywordsToCamelCase.has(keywordLowerCase)) {
- expectedKeyword = mapLowercaseKeywordsToCamelCase.get(keywordLowerCase);
- } else if (expectation === 'lower') {
- expectedKeyword = keyword.toLowerCase();
- } else {
- expectedKeyword = keyword.toUpperCase();
- }
-
- if (keyword === expectedKeyword) {
- return;
- }
-
- if (context.fix) {
- needFix = true;
- node.value = expectedKeyword;
-
- return;
- }
-
- report({
- message: messages.expected(keyword, expectedKeyword),
- node: decl,
- index: declarationValueIndex(decl) + node.sourceIndex,
- result,
- ruleName,
- });
- });
-
- if (context.fix && needFix) {
- decl.value = parsed.toString();
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/value-list-comma-newline-after/README.md b/assets/node_modules/stylelint/lib/rules/value-list-comma-newline-after/README.md
deleted file mode 100644
index 3907cb0..0000000
--- a/assets/node_modules/stylelint/lib/rules/value-list-comma-newline-after/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-# value-list-comma-newline-after
-
-Require a newline or disallow whitespace after the commas of value lists.
-
-```css
-a { background-size: 0,
- 0; } ↑
-/** ↑
- * The newline after this comma */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix most of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline after the commas.
-
-The following patterns are considered violations:
-
-```css
-a { background-size: 0,0; }
-```
-
-```css
-a { background-size: 0
- , 0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-size: 0,
- 0; }
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline after the commas in multi-line value lists.
-
-The following patterns are considered violations:
-
-```css
-a { background-size: 0
- , 0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-size: 0, 0; }
-```
-
-```css
-a { background-size: 0,0; }
-```
-
-```css
-a { background-size: 0,
- 0; }
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace after the commas in multi-line value lists.
-
-The following patterns are considered violations:
-
-```css
-a { background-size: 0
- , 0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-size: 0,0; }
-```
-
-```css
-a { background-size: 0, 0; }
-```
-
-```css
-a { background-size: 0
- ,0; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/value-list-comma-newline-after/index.js b/assets/node_modules/stylelint/lib/rules/value-list-comma-newline-after/index.js
deleted file mode 100644
index de271dd..0000000
--- a/assets/node_modules/stylelint/lib/rules/value-list-comma-newline-after/index.js
+++ /dev/null
@@ -1,100 +0,0 @@
-'use strict';
-
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueListCommaWhitespaceChecker = require('../valueListCommaWhitespaceChecker');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'value-list-comma-newline-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected newline after ","',
- expectedAfterMultiLine: () => 'Expected newline after "," in a multi-line list',
- rejectedAfterMultiLine: () => 'Unexpected whitespace after "," in a multi-line list',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('newline', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-multi-line', 'never-multi-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- let fixData;
-
- valueListCommaWhitespaceChecker({
- root,
- result,
- locationChecker: checker.afterOneOnly,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (declNode, index) => {
- const valueIndex = declarationValueIndex(declNode);
-
- if (index <= valueIndex) {
- return false;
- }
-
- fixData = fixData || new Map();
- const commaIndices = fixData.get(declNode) || [];
-
- commaIndices.push(index);
- fixData.set(declNode, commaIndices);
-
- return true;
- }
- : null,
- determineIndex: (declString, match) => {
- const nextChars = declString.substr(match.endIndex, declString.length - match.endIndex);
-
- // If there's a // comment, that means there has to be a newline
- // ending the comment so we're fine
- if (/^[ \t]*\/\//.test(nextChars)) {
- return false;
- }
-
- // If there are spaces and then a comment begins, look for the newline
- return /^[ \t]*\/\*/.test(nextChars)
- ? declString.indexOf('*/', match.endIndex) + 1
- : match.startIndex;
- },
- });
-
- if (fixData) {
- fixData.forEach((commaIndices, decl) => {
- commaIndices
- .sort((a, b) => a - b)
- .reverse()
- .forEach((index) => {
- const value = decl.raws.value ? decl.raws.value.raw : decl.value;
- const valueIndex = index - declarationValueIndex(decl);
- const beforeValue = value.slice(0, valueIndex + 1);
- let afterValue = value.slice(valueIndex + 1);
-
- if (expectation.startsWith('always')) {
- afterValue = context.newline + afterValue;
- } else if (expectation.startsWith('never-multi-line')) {
- afterValue = afterValue.replace(/^\s*/, '');
- }
-
- if (decl.raws.value) {
- decl.raws.value.raw = beforeValue + afterValue;
- } else {
- decl.value = beforeValue + afterValue;
- }
- });
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/value-list-comma-newline-before/README.md b/assets/node_modules/stylelint/lib/rules/value-list-comma-newline-before/README.md
deleted file mode 100644
index 10e1f34..0000000
--- a/assets/node_modules/stylelint/lib/rules/value-list-comma-newline-before/README.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# value-list-comma-newline-before
-
-Require a newline or disallow whitespace before the commas of value lists.
-
-```css
- a { background-size: 0
- , 0; }
-/** ↑
- * The newline before this comma */
-```
-
-## Options
-
-`string`: `"always"|"always-multi-line"|"never-multi-line"`
-
-### `"always"`
-
-There *must always* be a newline before the commas.
-
-The following patterns are considered violations:
-
-```css
-a { background-size: 0,0; }
-```
-
-```css
-a { background-size: 0,
- 0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-size: 0
- , 0; }
-```
-
-### `"always-multi-line"`
-
-There *must always* be a newline before the commas in multi-line value lists.
-
-The following patterns are considered violations:
-
-```css
-a { background-size: 0,
- 0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-size: 0, 0; }
-```
-
-```css
-a { background-size: 0,0; }
-```
-
-```css
-a { background-size: 0
- , 0; }
-```
-
-### `"never-multi-line"`
-
-There *must never* be whitespace before the commas in multi-line value lists.
-
-The following patterns are considered violations:
-
-```css
-a { background-size: 0
- , 0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-size: 0,0; }
-```
-
-```css
-a { background-size: 0, 0; }
-```
-
-```css
-a { background-size: 0,
- 0; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/value-list-comma-newline-before/index.js b/assets/node_modules/stylelint/lib/rules/value-list-comma-newline-before/index.js
deleted file mode 100644
index 7b4efa4..0000000
--- a/assets/node_modules/stylelint/lib/rules/value-list-comma-newline-before/index.js
+++ /dev/null
@@ -1,40 +0,0 @@
-'use strict';
-
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueListCommaWhitespaceChecker = require('../valueListCommaWhitespaceChecker');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'value-list-comma-newline-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected newline before ","',
- expectedBeforeMultiLine: () => 'Expected newline before "," in a multi-line list',
- rejectedBeforeMultiLine: () => 'Unexpected whitespace before "," in a multi-line list',
-});
-
-function rule(expectation) {
- const checker = whitespaceChecker('newline', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'always-multi-line', 'never-multi-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- valueListCommaWhitespaceChecker({
- root,
- result,
- locationChecker: checker.beforeAllowingIndentation,
- checkedRuleName: ruleName,
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/value-list-comma-space-after/README.md b/assets/node_modules/stylelint/lib/rules/value-list-comma-space-after/README.md
deleted file mode 100644
index 52fe715..0000000
--- a/assets/node_modules/stylelint/lib/rules/value-list-comma-space-after/README.md
+++ /dev/null
@@ -1,119 +0,0 @@
-# value-list-comma-space-after
-
-Require a single space or disallow whitespace after the commas of value lists.
-
-```css
-a { background-size: 0, 0; }
-/** ↑
- * The space after this comma */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix most of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"never-single-line"`
-
-### `"always"`
-
-There *must always* be a single space after the commas.
-
-The following patterns are considered violations:
-
-```css
-a { background-size: 0,0; }
-```
-
-```css
-a { background-size: 0
- , 0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-size: 0, 0; }
-```
-
-```css
-a { background-size: 0
- , 0; }
-```
-
-### `"never"`
-
-There *must never* be whitespace after the commas.
-
-The following patterns are considered violations:
-
-```css
-a { background-size: 0, 0; }
-```
-
-```css
-a { background-size: 0 ,
- 0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-size: 0,0; }
-```
-
-```css
-a { background-size: 0
- ,0; }
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space after the commas in single-line value lists.
-
-The following patterns are considered violations:
-
-```css
-a { background-size: 0,0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-size: 0, 0; }
-```
-
-```css
-a { background-size: 0
- , 0; }
-```
-
-```css
-a { background-size: 0
- ,0; }
-```
-
-### `"never-single-line"`
-
-There *must never* be whitespace after the commas in single-line value lists.
-
-The following patterns are considered violations:
-
-```css
-a { background-size: 0, 0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-size: 0,0; }
-```
-
-```css
-a { background-size: 0
- ,0; }
-```
-
-```css
-a { background-size: 0
- , 0; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/value-list-comma-space-after/index.js b/assets/node_modules/stylelint/lib/rules/value-list-comma-space-after/index.js
deleted file mode 100644
index 04b2f7a..0000000
--- a/assets/node_modules/stylelint/lib/rules/value-list-comma-space-after/index.js
+++ /dev/null
@@ -1,86 +0,0 @@
-'use strict';
-
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueListCommaWhitespaceChecker = require('../valueListCommaWhitespaceChecker');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'value-list-comma-space-after';
-
-const messages = ruleMessages(ruleName, {
- expectedAfter: () => 'Expected single space after ","',
- rejectedAfter: () => 'Unexpected whitespace after ","',
- expectedAfterSingleLine: () => 'Expected single space after "," in a single-line list',
- rejectedAfterSingleLine: () => 'Unexpected whitespace after "," in a single-line list',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never', 'always-single-line', 'never-single-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- let fixData;
-
- valueListCommaWhitespaceChecker({
- root,
- result,
- locationChecker: checker.after,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (declNode, index) => {
- const valueIndex = declarationValueIndex(declNode);
-
- if (index <= valueIndex) {
- return false;
- }
-
- fixData = fixData || new Map();
- const commaIndices = fixData.get(declNode) || [];
-
- commaIndices.push(index);
- fixData.set(declNode, commaIndices);
-
- return true;
- }
- : null,
- });
-
- if (fixData) {
- fixData.forEach((commaIndices, decl) => {
- commaIndices
- .sort((a, b) => b - a)
- .forEach((index) => {
- const value = decl.raws.value ? decl.raws.value.raw : decl.value;
- const valueIndex = index - declarationValueIndex(decl);
- const beforeValue = value.slice(0, valueIndex + 1);
- let afterValue = value.slice(valueIndex + 1);
-
- if (expectation.startsWith('always')) {
- afterValue = afterValue.replace(/^\s*/, ' ');
- } else if (expectation.startsWith('never')) {
- afterValue = afterValue.replace(/^\s*/, '');
- }
-
- if (decl.raws.value) {
- decl.raws.value.raw = beforeValue + afterValue;
- } else {
- decl.value = beforeValue + afterValue;
- }
- });
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/value-list-comma-space-before/README.md b/assets/node_modules/stylelint/lib/rules/value-list-comma-space-before/README.md
deleted file mode 100644
index c0da815..0000000
--- a/assets/node_modules/stylelint/lib/rules/value-list-comma-space-before/README.md
+++ /dev/null
@@ -1,119 +0,0 @@
-# value-list-comma-space-before
-
-Require a single space or disallow whitespace before the commas of value lists.
-
-```css
-a { background-size: 0 ,0; }
-/** ↑
- * The space before this comma */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix most of the problems reported by this rule.
-
-## Options
-
-`string`: `"always"|"never"|"always-single-line"|"never-single-line"`
-
-### `"always"`
-
-There *must always* be a single space before the commas.
-
-The following patterns are considered violations:
-
-```css
-a { background-size: 0,0; }
-```
-
-```css
-a { background-size: 0
- , 0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-size: 0 ,0; }
-```
-
-```css
-a { background-size: 0 ,
- 0; }
-```
-
-### `"never"`
-
-There *must never* be whitespace before the commas.
-
-The following patterns are considered violations:
-
-```css
-a { background-size: 0 ,0; }
-```
-
-```css
-a { background-size: 0 ,
- 0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-size: 0,0; }
-```
-
-```css
-a { background-size: 0,
- 0; }
-```
-
-### `"always-single-line"`
-
-There *must always* be a single space before the commas in single-line value lists.
-
-The following patterns are considered violations:
-
-```css
-a { background-size: 0,0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-size: 0 ,0; }
-```
-
-```css
-a { background-size: 0 ,
- 0; }
-```
-
-```css
-a { background-size: 0
- , 0; }
-```
-
-### `"never-single-line"`
-
-There *must never* be whitespace before the commas in single-line value lists.
-
-The following patterns are considered violations:
-
-```css
-a { background-size: 0 ,0; }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { background-size: 0,0; }
-```
-
-```css
-a { background-size: 0,
- 0; }
-```
-
-```css
-a { background-size: 0 ,
- 0; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/value-list-comma-space-before/index.js b/assets/node_modules/stylelint/lib/rules/value-list-comma-space-before/index.js
deleted file mode 100644
index 7fcf4dd..0000000
--- a/assets/node_modules/stylelint/lib/rules/value-list-comma-space-before/index.js
+++ /dev/null
@@ -1,86 +0,0 @@
-'use strict';
-
-const declarationValueIndex = require('../../utils/declarationValueIndex');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-const valueListCommaWhitespaceChecker = require('../valueListCommaWhitespaceChecker');
-const whitespaceChecker = require('../../utils/whitespaceChecker');
-
-const ruleName = 'value-list-comma-space-before';
-
-const messages = ruleMessages(ruleName, {
- expectedBefore: () => 'Expected single space before ","',
- rejectedBefore: () => 'Unexpected whitespace before ","',
- expectedBeforeSingleLine: () => 'Unexpected whitespace before "," in a single-line list',
- rejectedBeforeSingleLine: () => 'Unexpected whitespace before "," in a single-line list',
-});
-
-function rule(expectation, options, context) {
- const checker = whitespaceChecker('space', expectation, messages);
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: expectation,
- possible: ['always', 'never', 'always-single-line', 'never-single-line'],
- });
-
- if (!validOptions) {
- return;
- }
-
- let fixData;
-
- valueListCommaWhitespaceChecker({
- root,
- result,
- locationChecker: checker.before,
- checkedRuleName: ruleName,
- fix: context.fix
- ? (declNode, index) => {
- const valueIndex = declarationValueIndex(declNode);
-
- if (index <= valueIndex) {
- return false;
- }
-
- fixData = fixData || new Map();
- const commaIndices = fixData.get(declNode) || [];
-
- commaIndices.push(index);
- fixData.set(declNode, commaIndices);
-
- return true;
- }
- : null,
- });
-
- if (fixData) {
- fixData.forEach((commaIndices, decl) => {
- commaIndices
- .sort((a, b) => b - a)
- .forEach((index) => {
- const value = decl.raws.value ? decl.raws.value.raw : decl.value;
- const valueIndex = index - declarationValueIndex(decl);
- let beforeValue = value.slice(0, valueIndex);
- const afterValue = value.slice(valueIndex);
-
- if (expectation.startsWith('always')) {
- beforeValue = beforeValue.replace(/\s*$/, ' ');
- } else if (expectation.startsWith('never')) {
- beforeValue = beforeValue.replace(/\s*$/, '');
- }
-
- if (decl.raws.value) {
- decl.raws.value.raw = beforeValue + afterValue;
- } else {
- decl.value = beforeValue + afterValue;
- }
- });
- });
- }
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/value-list-max-empty-lines/README.md b/assets/node_modules/stylelint/lib/rules/value-list-max-empty-lines/README.md
deleted file mode 100644
index f95d587..0000000
--- a/assets/node_modules/stylelint/lib/rules/value-list-max-empty-lines/README.md
+++ /dev/null
@@ -1,110 +0,0 @@
-# value-list-max-empty-lines
-
-Limit the number of adjacent empty lines within value lists.
-
-```css
-a {
- box-shadow:
- inset 0 2px 0 #dcffa6,
- /* ← */
- 0 2px 5px #000; /* ↑ */
-} /* ↑ */
-/** ↑
- * This empty line */
-```
-
-The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule.
-
-## Options
-
-`int`: Maximum number of adjacent empty lines allowed.
-
-For example, with `0`:
-
-The following patterns are considered violations:
-
-```css
-a {
- padding: 10px
-
- 10px
- 10px
- 10px
-}
-```
-
-```css
-a {
- padding:
- 10px
- 10px
- 10px
-
- 10px
-}
-```
-
-```css
-a {
- box-shadow: inset 0 2px 0 #dcffa6,
-
- 0 2px 5px #000;
-}
-```
-
-```css
-a {
- box-shadow:
- inset 0 2px 0 #dcffa6,
-
- 0 2px 5px #000;
-}
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a {
- padding: 10px 10px 10px 10px
-}
-```
-
-```css
-a {
- padding: 10px
- 10px
- 10px
- 10px
-}
-```
-
-```css
-a {
- padding:
- 10px
- 10px
- 10px
- 10px
-}
-```
-
-```css
-a {
- box-shadow: inset 0 2px 0 #dcffa6, 0 2px 5px #000;
-}
-```
-
-```css
-a {
- box-shadow: inset 0 2px 0 #dcffa6,
- 0 2px 5px #000;
-}
-```
-
-```css
-a {
- box-shadow:
- inset 0 2px 0 #dcffa6,
- 0 2px 5px #000;
-}
-```
diff --git a/assets/node_modules/stylelint/lib/rules/value-list-max-empty-lines/index.js b/assets/node_modules/stylelint/lib/rules/value-list-max-empty-lines/index.js
deleted file mode 100644
index 6fb3447..0000000
--- a/assets/node_modules/stylelint/lib/rules/value-list-max-empty-lines/index.js
+++ /dev/null
@@ -1,60 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'value-list-max-empty-lines';
-
-const messages = ruleMessages(ruleName, {
- expected: (max) => `Expected no more than ${max} empty ${max === 1 ? 'line' : 'lines'}`,
-});
-
-function rule(max, options, context) {
- const maxAdjacentNewlines = max + 1;
-
- return (root, result) => {
- const validOptions = validateOptions(result, ruleName, {
- actual: max,
- possible: _.isNumber,
- });
-
- if (!validOptions) {
- return;
- }
-
- const violatedCRLFNewLinesRegex = new RegExp(`(?:\r\n){${maxAdjacentNewlines + 1},}`);
- const violatedLFNewLinesRegex = new RegExp(`\n{${maxAdjacentNewlines + 1},}`);
- const allowedLFNewLinesString = context.fix ? '\n'.repeat(maxAdjacentNewlines) : '';
- const allowedCRLFNewLinesString = context.fix ? '\r\n'.repeat(maxAdjacentNewlines) : '';
-
- root.walkDecls((decl) => {
- const value = decl.raws.value ? decl.raws.value.raw : decl.value;
-
- if (context.fix) {
- const newValueString = value
- .replace(new RegExp(violatedLFNewLinesRegex, 'gm'), allowedLFNewLinesString)
- .replace(new RegExp(violatedCRLFNewLinesRegex, 'gm'), allowedCRLFNewLinesString);
-
- if (decl.raws.value) {
- decl.raws.value.raw = newValueString;
- } else {
- decl.value = newValueString;
- }
- } else if (violatedLFNewLinesRegex.test(value) || violatedCRLFNewLinesRegex.test(value)) {
- report({
- message: messages.expected(max),
- node: decl,
- index: 0,
- result,
- ruleName,
- });
- }
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/value-no-vendor-prefix/README.md b/assets/node_modules/stylelint/lib/rules/value-no-vendor-prefix/README.md
deleted file mode 100644
index b66bb80..0000000
--- a/assets/node_modules/stylelint/lib/rules/value-no-vendor-prefix/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# value-no-vendor-prefix
-
-Disallow vendor prefixes for values.
-
-```css
-a { display: -webkit-flex; }
-/** ↑
- * These prefixes */
-```
-
-This rule will only complain for prefixed *standard* values, and not for prefixed *proprietary* or *unknown* ones.
-
-## Options
-
-### `true`
-
-The following patterns are considered violations:
-
-```css
-a { display: -webkit-flex; }
-```
-
-```css
-a { max-width: -moz-max-content; }
-```
-
-```css
-a { background: -webkit-linear-gradient(bottom, #000, #fff); }
-```
-
-The following patterns are *not* considered violations:
-
-```css
-a { display: flex; }
-```
-
-```css
-a { max-width: max-content; }
-```
-
-```css
-a { background: linear-gradient(bottom, #000, #fff); }
-```
-
-## Optional secondary options
-
-### `ignoreValues: ["string"]`
-
-Given:
-
-```js
-["grab", "max-content"]
-```
-
-The following patterns are *not* considered violations:
-
-```css
-cursor: -webkit-grab;
-```
-
-```css
-.foo { max-width: -moz-max-content; }
-```
diff --git a/assets/node_modules/stylelint/lib/rules/value-no-vendor-prefix/index.js b/assets/node_modules/stylelint/lib/rules/value-no-vendor-prefix/index.js
deleted file mode 100644
index 445f751..0000000
--- a/assets/node_modules/stylelint/lib/rules/value-no-vendor-prefix/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isAutoprefixable = require('../../utils/isAutoprefixable');
-const isStandardSyntaxDeclaration = require('../../utils/isStandardSyntaxDeclaration');
-const isStandardSyntaxProperty = require('../../utils/isStandardSyntaxProperty');
-const optionsMatches = require('../../utils/optionsMatches');
-const postcss = require('postcss');
-const report = require('../../utils/report');
-const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
-const validateOptions = require('../../utils/validateOptions');
-
-const ruleName = 'value-no-vendor-prefix';
-
-const messages = ruleMessages(ruleName, {
- rejected: (value) => `Unexpected vendor-prefix "${value}"`,
-});
-
-const valuePrefixes = ['-webkit-', '-moz-', '-ms-', '-o-'];
-
-function rule(actual, options) {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- { actual },
- {
- optional: true,
- actual: options,
- possible: {
- ignoreValues: [_.isString],
- },
- },
- );
-
- if (!validOptions) {
- return;
- }
-
- root.walkDecls((decl) => {
- if (
- !isStandardSyntaxDeclaration(decl) ||
- !isStandardSyntaxProperty(decl.prop) ||
- !decl.value.startsWith('-')
- ) {
- return;
- }
-
- const prop = decl.prop;
- const value = decl.value;
- const unprefixedValue = postcss.vendor.unprefixed(value);
-
- //return early if value is to be ignored
- if (optionsMatches(options, 'ignoreValues', unprefixedValue)) {
- return;
- }
-
- // Search the full declaration in order to get an accurate index
-
- styleSearch({ source: value.toLowerCase(), target: valuePrefixes }, (match) => {
- const fullIdentifier = /^(-[a-z-]+)\b/i.exec(value.slice(match.startIndex))[1];
-
- if (!isAutoprefixable.propertyValue(prop, fullIdentifier)) {
- return;
- }
-
- report({
- message: messages.rejected(fullIdentifier),
- node: decl,
- index: prop.length + (decl.raws.between || '').length + match.startIndex,
- result,
- ruleName,
- });
- });
- });
- };
-}
-
-rule.ruleName = ruleName;
-rule.messages = messages;
-module.exports = rule;
diff --git a/assets/node_modules/stylelint/lib/rules/valueListCommaWhitespaceChecker.js b/assets/node_modules/stylelint/lib/rules/valueListCommaWhitespaceChecker.js
deleted file mode 100644
index d55f680..0000000
--- a/assets/node_modules/stylelint/lib/rules/valueListCommaWhitespaceChecker.js
+++ /dev/null
@@ -1,55 +0,0 @@
-'use strict';
-
-const isStandardSyntaxDeclaration = require('../utils/isStandardSyntaxDeclaration');
-const isStandardSyntaxProperty = require('../utils/isStandardSyntaxProperty');
-const report = require('../utils/report');
-const styleSearch = require('style-search');
-
-module.exports = function(opts) {
- opts.root.walkDecls((decl) => {
- if (!isStandardSyntaxDeclaration(decl) || !isStandardSyntaxProperty(decl.prop)) {
- return;
- }
-
- const declString = decl.toString();
-
- styleSearch(
- {
- source: declString,
- target: ',',
- functionArguments: 'skip',
- },
- (match) => {
- const indexToCheckAfter = opts.determineIndex
- ? opts.determineIndex(declString, match)
- : match.startIndex;
-
- if (indexToCheckAfter === false) {
- return;
- }
-
- checkComma(declString, indexToCheckAfter, decl);
- },
- );
- });
-
- function checkComma(source, index, node) {
- opts.locationChecker({
- source,
- index,
- err: (m) => {
- if (opts.fix && opts.fix(node, index)) {
- return;
- }
-
- report({
- message: m,
- node,
- index,
- result: opts.result,
- ruleName: opts.checkedRuleName,
- });
- },
- });
- }
-};
diff --git a/assets/node_modules/stylelint/lib/standalone.js b/assets/node_modules/stylelint/lib/standalone.js
deleted file mode 100644
index 11412db..0000000
--- a/assets/node_modules/stylelint/lib/standalone.js
+++ /dev/null
@@ -1,344 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const createStylelint = require('./createStylelint');
-const createStylelintResult = require('./createStylelintResult');
-const debug = require('debug')('stylelint:standalone');
-const FileCache = require('./utils/FileCache');
-const filterFilePaths = require('./utils/filterFilePaths');
-const formatters = require('./formatters');
-const fs = require('fs');
-const getFormatterOptionsText = require('./utils/getFormatterOptionsText');
-const globby = require('globby');
-const hash = require('./utils/hash');
-const invalidScopeDisables = require('./invalidScopeDisables');
-const needlessDisables = require('./needlessDisables');
-const NoFilesFoundError = require('./utils/noFilesFoundError');
-const path = require('path');
-const pkg = require('../package.json');
-const { default: ignore } = require('ignore');
-const DEFAULT_IGNORE_FILENAME = '.stylelintignore';
-const FILE_NOT_FOUND_ERROR_CODE = 'ENOENT';
-const ALWAYS_IGNORED_GLOBS = ['**/node_modules/**'];
-const writeFileAtomic = require('write-file-atomic');
-
-/** @typedef {import('stylelint').StylelintStandaloneOptions} StylelintOptions */
-/** @typedef {import('stylelint').StylelintStandaloneReturnValue} StylelintStandaloneReturnValue */
-/** @typedef {import('stylelint').StylelintResult} StylelintResult */
-
-/**
- * @param {StylelintOptions} options
- * @returns {Promise<StylelintStandaloneReturnValue>}
- */
-module.exports = function(options) {
- const cacheLocation = options.cacheLocation;
- const code = options.code;
- const codeFilename = options.codeFilename;
- const config = options.config;
- const configBasedir = options.configBasedir;
- const configFile = options.configFile;
- const configOverrides = options.configOverrides;
- const customSyntax = options.customSyntax;
- const globbyOptions = options.globbyOptions;
- const files = options.files;
- const fix = options.fix;
- const formatter = options.formatter;
- const ignoreDisables = options.ignoreDisables;
- const reportNeedlessDisables = options.reportNeedlessDisables;
- const reportInvalidScopeDisables = options.reportInvalidScopeDisables;
- const maxWarnings = options.maxWarnings;
- const syntax = options.syntax;
- const allowEmptyInput = options.allowEmptyInput || false;
- const useCache = options.cache || false;
- /** @type {FileCache} */
- let fileCache;
- const startTime = Date.now();
-
- // The ignorer will be used to filter file paths after the glob is checked,
- // before any files are actually read
- const ignoreFilePath = options.ignorePath || DEFAULT_IGNORE_FILENAME;
- const absoluteIgnoreFilePath = path.isAbsolute(ignoreFilePath)
- ? ignoreFilePath
- : path.resolve(process.cwd(), ignoreFilePath);
- let ignoreText = '';
-
- try {
- ignoreText = fs.readFileSync(absoluteIgnoreFilePath, 'utf8');
- } catch (readError) {
- if (readError.code !== FILE_NOT_FOUND_ERROR_CODE) throw readError;
- }
-
- /**
- * TODO TYPES
- * @type {any}
- */
- const ignorePattern = options.ignorePattern || [];
- const ignorer = ignore()
- .add(ignoreText)
- .add(ignorePattern);
-
- const isValidCode = typeof code === 'string';
-
- if ((!files && !isValidCode) || (files && (code || isValidCode))) {
- throw new Error('You must pass stylelint a `files` glob or a `code` string, though not both');
- }
-
- /** @type {Function} */
- let formatterFunction;
-
- if (typeof formatter === 'string') {
- formatterFunction = formatters[formatter];
-
- if (formatterFunction === undefined) {
- return Promise.reject(
- new Error(
- `You must use a valid formatter option: ${getFormatterOptionsText()} or a function`,
- ),
- );
- }
- } else if (typeof formatter === 'function') {
- formatterFunction = formatter;
- } else {
- formatterFunction = formatters.json;
- }
-
- const stylelint = createStylelint({
- config,
- configFile,
- configBasedir,
- configOverrides,
- ignoreDisables,
- ignorePath: ignoreFilePath,
- reportNeedlessDisables,
- reportInvalidScopeDisables,
- syntax,
- customSyntax,
- fix,
- });
-
- if (!files) {
- const absoluteCodeFilename =
- codeFilename !== undefined && !path.isAbsolute(codeFilename)
- ? path.join(process.cwd(), codeFilename)
- : codeFilename;
-
- // if file is ignored, return nothing
- if (
- absoluteCodeFilename &&
- !filterFilePaths(ignorer, [path.relative(process.cwd(), absoluteCodeFilename)]).length
- ) {
- return Promise.resolve(prepareReturnValue([]));
- }
-
- return stylelint
- ._lintSource({
- code,
- codeFilename: absoluteCodeFilename,
- })
- .then((postcssResult) => {
- // Check for file existence
- return new Promise((resolve, reject) => {
- if (!absoluteCodeFilename) {
- reject();
-
- return;
- }
-
- fs.stat(absoluteCodeFilename, (err) => {
- if (err) {
- reject();
- } else {
- resolve();
- }
- });
- })
- .then(() => {
- return stylelint._createStylelintResult(postcssResult, absoluteCodeFilename);
- })
- .catch(() => {
- return stylelint._createStylelintResult(postcssResult);
- });
- })
- .catch(_.partial(handleError, stylelint))
- .then((stylelintResult) => {
- const postcssResult = stylelintResult._postcssResult;
- const returnValue = prepareReturnValue([stylelintResult]);
-
- if (options.fix && postcssResult && !postcssResult.stylelint.ignored) {
- // If we're fixing, the output should be the fixed code
- returnValue.output = postcssResult.root.toString(postcssResult.opts.syntax);
- }
-
- return returnValue;
- });
- }
-
- let fileList = files;
-
- if (typeof fileList === 'string') {
- fileList = [fileList];
- }
-
- if (!options.disableDefaultIgnores) {
- fileList = fileList.concat(ALWAYS_IGNORED_GLOBS.map((glob) => `!${glob}`));
- }
-
- if (useCache) {
- const stylelintVersion = pkg.version;
- const hashOfConfig = hash(`${stylelintVersion}_${JSON.stringify(config || {})}`);
-
- fileCache = new FileCache(cacheLocation, hashOfConfig);
- } else {
- // No need to calculate hash here, we just want to delete cache file.
- fileCache = new FileCache(cacheLocation);
- // Remove cache file if cache option is disabled
- fileCache.destroy();
- }
-
- return globby(fileList, globbyOptions)
- .then((filePaths) => {
- // The ignorer filter needs to check paths relative to cwd
- filePaths = filterFilePaths(
- ignorer,
- filePaths.map((p) => path.relative(process.cwd(), p)),
- );
-
- if (!filePaths.length) {
- if (!allowEmptyInput) {
- throw new NoFilesFoundError(fileList);
- }
-
- return Promise.all([]);
- }
-
- const cwd = _.get(globbyOptions, 'cwd', process.cwd());
- let absoluteFilePaths = filePaths.map((filePath) => {
- const absoluteFilepath = !path.isAbsolute(filePath)
- ? path.join(cwd, filePath)
- : path.normalize(filePath);
-
- return absoluteFilepath;
- });
-
- if (useCache) {
- absoluteFilePaths = absoluteFilePaths.filter(fileCache.hasFileChanged.bind(fileCache));
- }
-
- const getStylelintResults = absoluteFilePaths.map((absoluteFilepath) => {
- debug(`Processing ${absoluteFilepath}`);
-
- return stylelint
- ._lintSource({
- filePath: absoluteFilepath,
- })
- .then((postcssResult) => {
- if (postcssResult.stylelint.stylelintError && useCache) {
- debug(`${absoluteFilepath} contains linting errors and will not be cached.`);
- fileCache.removeEntry(absoluteFilepath);
- }
-
- /**
- * If we're fixing, save the file with changed code
- * @type {Promise<Error | void>}
- */
- let fixFile = Promise.resolve();
-
- if (
- postcssResult.root &&
- postcssResult.opts &&
- !postcssResult.stylelint.ignored &&
- options.fix
- ) {
- // @ts-ignore TODO TYPES toString accepts 0 arguments
- const fixedCss = postcssResult.root.toString(postcssResult.opts.syntax);
-
- if (
- postcssResult.root.source &&
- // @ts-ignore TODO TYPES css is unknown property
- postcssResult.root.source.input.css !== fixedCss
- ) {
- fixFile = writeFileAtomic(absoluteFilepath, fixedCss);
- }
- }
-
- return fixFile.then(() =>
- stylelint._createStylelintResult(postcssResult, absoluteFilepath),
- );
- })
- .catch((error) => {
- // On any error, we should not cache the lint result
- fileCache.removeEntry(absoluteFilepath);
-
- return handleError(stylelint, error, absoluteFilepath);
- });
- });
-
- return Promise.all(getStylelintResults);
- })
- .then((stylelintResults) => {
- if (useCache) {
- fileCache.reconcile();
- }
-
- return prepareReturnValue(stylelintResults);
- });
-
- /**
- * @param {StylelintResult[]} stylelintResults
- * @returns {StylelintStandaloneReturnValue}
- */
- function prepareReturnValue(stylelintResults) {
- const errored = stylelintResults.some(
- (result) => result.errored || result.parseErrors.length > 0,
- );
-
- /** @type {StylelintStandaloneReturnValue} */
- const returnValue = {
- errored,
- results: [],
- output: '',
- };
-
- if (reportNeedlessDisables) {
- returnValue.needlessDisables = needlessDisables(stylelintResults);
- }
-
- if (reportInvalidScopeDisables) {
- returnValue.invalidScopeDisables = invalidScopeDisables(
- stylelintResults,
- stylelint._options.config,
- );
- }
-
- if (maxWarnings !== undefined) {
- const foundWarnings = stylelintResults.reduce((count, file) => {
- return count + file.warnings.length;
- }, 0);
-
- if (foundWarnings > maxWarnings) {
- returnValue.maxWarningsExceeded = { maxWarnings, foundWarnings };
- }
- }
-
- returnValue.output = formatterFunction(stylelintResults, returnValue);
- returnValue.results = stylelintResults;
-
- debug(`Linting complete in ${Date.now() - startTime}ms`);
-
- return returnValue;
- }
-};
-
-/**
- * @param {import('stylelint').StylelintInternalApi} stylelint
- * @param {Object} error
- * @param {string} [filePath]
- * @return {Promise<StylelintResult>}
- */
-function handleError(stylelint, error, filePath = undefined) {
- if (error.name === 'CssSyntaxError') {
- return createStylelintResult(stylelint, undefined, filePath, error);
- }
-
- throw error;
-}
diff --git a/assets/node_modules/stylelint/lib/utils/FileCache.js b/assets/node_modules/stylelint/lib/utils/FileCache.js
deleted file mode 100644
index d16060b..0000000
--- a/assets/node_modules/stylelint/lib/utils/FileCache.js
+++ /dev/null
@@ -1,65 +0,0 @@
-'use strict';
-
-const debug = require('debug')('stylelint:file-cache');
-const fileEntryCache = require('file-entry-cache');
-const getCacheFile = require('./getCacheFile');
-const path = require('path');
-
-const DEFAULT_CACHE_LOCATION = './.stylelintcache';
-const DEFAULT_HASH = '';
-
-/**
- * @param {string} [cacheLocation]
- * @param {string} [hashOfConfig]
- * @constructor
- */
-class FileCache {
- constructor(cacheLocation = DEFAULT_CACHE_LOCATION, hashOfConfig = DEFAULT_HASH) {
- const cacheFile = path.resolve(getCacheFile(cacheLocation, process.cwd()));
-
- debug(`Cache file is created at ${cacheFile}`);
- this._fileCache = fileEntryCache.create(cacheFile);
- this._hashOfConfig = hashOfConfig;
- }
-
- /**
- * @param {string} absoluteFilepath
- * @return {boolean}
- */
- hasFileChanged(absoluteFilepath) {
- // Get file descriptor compares current metadata against cached
- // one and stores the result to "changed" prop.w
- const descriptor = this._fileCache.getFileDescriptor(absoluteFilepath);
- const meta = descriptor.meta || {};
- const changed = descriptor.changed || meta.hashOfConfig !== this._hashOfConfig;
-
- if (!changed) {
- debug(`Skip linting ${absoluteFilepath}. File hasn't changed.`);
- }
-
- // Mutate file descriptor object and store config hash to each file.
- // Running lint with different config should invalidate the cache.
- if (meta.hashOfConfig !== this._hashOfConfig) {
- meta.hashOfConfig = this._hashOfConfig;
- }
-
- return changed;
- }
-
- reconcile() {
- this._fileCache.reconcile();
- }
-
- destroy() {
- this._fileCache.destroy();
- }
-
- /**
- * @param {string} absoluteFilepath
- */
- removeEntry(absoluteFilepath) {
- this._fileCache.removeEntry(absoluteFilepath);
- }
-}
-
-module.exports = FileCache;
diff --git a/assets/node_modules/stylelint/lib/utils/addEmptyLineAfter.js b/assets/node_modules/stylelint/lib/utils/addEmptyLineAfter.js
deleted file mode 100644
index dcf0034..0000000
--- a/assets/node_modules/stylelint/lib/utils/addEmptyLineAfter.js
+++ /dev/null
@@ -1,30 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-
-/** @typedef {import('postcss').ChildNode} ChildNode */
-
-/**
- * Add an empty line after a node. Mutates the node.
- *
- * @param {ChildNode} node
- * @param {'\n' | '\r\n'} newline
- * @returns {ChildNode}
- */
-function addEmptyLineAfter(node, newline) {
- if (node.raws.after === undefined) {
- return node;
- }
-
- const after = _.last(node.raws.after.split(';')) || '';
-
- if (!/\r?\n/.test(after)) {
- node.raws.after += newline.repeat(2);
- } else {
- node.raws.after = node.raws.after.replace(/(\r?\n)/, `${newline}$1`);
- }
-
- return node;
-}
-
-module.exports = addEmptyLineAfter;
diff --git a/assets/node_modules/stylelint/lib/utils/addEmptyLineBefore.js b/assets/node_modules/stylelint/lib/utils/addEmptyLineBefore.js
deleted file mode 100644
index 3dd4b1c..0000000
--- a/assets/node_modules/stylelint/lib/utils/addEmptyLineBefore.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict';
-
-/** @typedef {import('postcss').ChildNode} ChildNode */
-
-/**
- * Add an empty line before a node. Mutates the node.
- *
- * @param {ChildNode} node
- * @param {'\n' | '\r\n'} newline
- * @returns {ChildNode}
- */
-function addEmptyLineBefore(node, newline) {
- if (node.raws.before === undefined) {
- return node;
- }
-
- if (!/\r?\n/.test(node.raws.before)) {
- node.raws.before = newline.repeat(2) + node.raws.before;
- } else {
- node.raws.before = node.raws.before.replace(/(\r?\n)/, `${newline}$1`);
- }
-
- return node;
-}
-
-module.exports = addEmptyLineBefore;
diff --git a/assets/node_modules/stylelint/lib/utils/atRuleParamIndex.js b/assets/node_modules/stylelint/lib/utils/atRuleParamIndex.js
deleted file mode 100644
index d08ebc0..0000000
--- a/assets/node_modules/stylelint/lib/utils/atRuleParamIndex.js
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict';
-
-/**
- * @param {import('postcss').AtRule} atRule
- * @returns {number}
- */
-module.exports = function(atRule) {
- // Initial 1 is for the `@`
- let index = 1 + atRule.name.length;
-
- if (atRule.raws.afterName) {
- index += atRule.raws.afterName.length;
- }
-
- return index;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/beforeBlockString.js b/assets/node_modules/stylelint/lib/utils/beforeBlockString.js
deleted file mode 100644
index 02beaa0..0000000
--- a/assets/node_modules/stylelint/lib/utils/beforeBlockString.js
+++ /dev/null
@@ -1,54 +0,0 @@
-'use strict';
-
-/** @typedef {import('postcss').Rule} Rule */
-/** @typedef {import('postcss').AtRule} AtRule */
-
-/**
- * @param {Rule | AtRule} statement
- * @param {{
- * noRawBefore?: boolean
- * }} options
- *
- * @returns {string}
- */
-module.exports = function(statement, options = {}) {
- let result = '';
- /** @type {Rule | undefined} */
- let rule; /*?: postcss$rule*/
- /** @type {AtRule | undefined} */
- let atRule; /*?: postcss$atRule*/
-
- if (statement.type === 'rule') {
- rule = statement;
- }
-
- if (statement.type === 'atrule') {
- atRule = statement;
- }
-
- if (!rule && !atRule) {
- return result;
- }
-
- const before = statement.raws.before || '';
-
- if (!options.noRawBefore) {
- result += before;
- }
-
- if (rule) {
- result += rule.selector;
- }
-
- if (atRule) {
- result += `@${atRule.name}${atRule.raws.afterName || ''}${atRule.params}`;
- }
-
- const between = statement.raws.between;
-
- if (between !== undefined) {
- result += between;
- }
-
- return result;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/blockString.js b/assets/node_modules/stylelint/lib/utils/blockString.js
deleted file mode 100644
index fd0b385..0000000
--- a/assets/node_modules/stylelint/lib/utils/blockString.js
+++ /dev/null
@@ -1,25 +0,0 @@
-'use strict';
-
-const beforeBlockString = require('./beforeBlockString');
-const hasBlock = require('./hasBlock');
-const rawNodeString = require('./rawNodeString');
-
-/** @typedef {import('postcss').Rule} Rule */
-/** @typedef {import('postcss').AtRule} AtRule */
-
-/**
- * Return a CSS statement's block -- the string that starts and `{` and ends with `}`.
- *
- * If the statement has no block (e.g. `@import url(foo.css);`),
- * return false.
- *
- * @param {Rule | AtRule} statement - postcss rule or at-rule node
- * @return {string | boolean}
- */
-module.exports = function(statement) {
- if (!hasBlock(statement)) {
- return false;
- }
-
- return rawNodeString(statement).slice(beforeBlockString(statement).length);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/blurComments.js b/assets/node_modules/stylelint/lib/utils/blurComments.js
deleted file mode 100644
index 16b4d46..0000000
--- a/assets/node_modules/stylelint/lib/utils/blurComments.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict';
-
-/**
- * @param {string} source
- *
- * @returns {string}
- */
-module.exports = function(source, blurChar = '`') {
- return source.replace(/\/\*.*\*\//g, blurChar);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/blurFunctionArguments.js b/assets/node_modules/stylelint/lib/utils/blurFunctionArguments.js
deleted file mode 100644
index 3c1a045..0000000
--- a/assets/node_modules/stylelint/lib/utils/blurFunctionArguments.js
+++ /dev/null
@@ -1,48 +0,0 @@
-'use strict';
-
-const balancedMatch = require('balanced-match');
-
-/**
- * Replace all of the characters that are arguments to a certain
- * CSS function with some innocuous character.
- *
- * This is useful if you need to use a RegExp to find a string
- * but want to ignore matches in certain functions (e.g. `url()`,
- * which might contain all kinds of false positives).
- *
- * For example:
- * blurFunctionArguments("abc url(abc) abc", "url") === "abc url(```) abc"
- *
- * @param {string} source
- * @param {string} functionName
- * @return {string} - The result string, with the function arguments "blurred"
- */
-module.exports = function(source, functionName, blurChar = '`') {
- const nameWithParen = `${functionName.toLowerCase()}(`;
- const lowerCaseSource = source.toLowerCase();
-
- if (!lowerCaseSource.includes(nameWithParen)) {
- return source;
- }
-
- const functionNameLength = functionName.length;
-
- let result = source;
- let searchStartIndex = 0;
-
- while (lowerCaseSource.includes(nameWithParen, searchStartIndex)) {
- const openingParenIndex =
- lowerCaseSource.indexOf(nameWithParen, searchStartIndex) + functionNameLength;
- const closingParenIndex =
- balancedMatch('(', ')', lowerCaseSource.slice(openingParenIndex)).end + openingParenIndex;
- const argumentsLength = closingParenIndex - openingParenIndex - 1;
-
- result =
- result.slice(0, openingParenIndex + 1) +
- blurChar.repeat(argumentsLength) +
- result.slice(closingParenIndex);
- searchStartIndex = closingParenIndex;
- }
-
- return result;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/blurInterpolation.js b/assets/node_modules/stylelint/lib/utils/blurInterpolation.js
deleted file mode 100644
index dfed907..0000000
--- a/assets/node_modules/stylelint/lib/utils/blurInterpolation.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict';
-
-/**
- * @param {string} source
- *
- * @returns {string}
- */
-module.exports = function(source, blurChar = ' ') {
- return source.replace(/[#@{}]+/g, blurChar);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/checkAgainstRule.js b/assets/node_modules/stylelint/lib/utils/checkAgainstRule.js
deleted file mode 100644
index 413bf7a..0000000
--- a/assets/node_modules/stylelint/lib/utils/checkAgainstRule.js
+++ /dev/null
@@ -1,46 +0,0 @@
-'use strict';
-
-const normalizeRuleSettings = require('../normalizeRuleSettings');
-const requireRule = require('../requireRule');
-const Result = require('postcss/lib/result');
-const rules = require('../rules');
-
-/**
- * Useful for third-party code (e.g. plugins) to run a PostCSS Root
- * against a specific rule and do something with the warnings
- * @param {{
- ruleName: string,
- ruleSettings: import('stylelint').StylelintConfigRuleSettings,
- root: Object,
- }} options
- * @param {Function} callback
- * @returns {void}
- */
-module.exports = function(options, callback) {
- if (!options)
- throw new Error(
- "checkAgainstRule requires an options object with 'ruleName', 'ruleSettings', and 'root' properties",
- );
-
- if (!callback) throw new Error('checkAgainstRule requires a callback');
-
- if (!options.ruleName) throw new Error("checkAgainstRule requires a 'ruleName' option");
-
- if (!rules.includes(options.ruleName))
- throw new Error(`Rule '${options.ruleName}' does not exist`);
-
- if (!options.ruleSettings) throw new Error("checkAgainstRule requires a 'ruleSettings' option");
-
- if (!options.root) throw new Error("checkAgainstRule requires a 'root' option");
-
- const settings = normalizeRuleSettings(options.ruleSettings, options.ruleName);
-
- if (!settings) {
- return;
- }
-
- const tmpPostcssResult = new Result();
-
- requireRule(options.ruleName)(settings[0], settings[1], {})(options.root, tmpPostcssResult);
- tmpPostcssResult.warnings().forEach(callback);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/checkInvalidCLIOptions.js b/assets/node_modules/stylelint/lib/utils/checkInvalidCLIOptions.js
deleted file mode 100644
index b5b80e2..0000000
--- a/assets/node_modules/stylelint/lib/utils/checkInvalidCLIOptions.js
+++ /dev/null
@@ -1,86 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const chalk = require('chalk');
-const EOL = require('os').EOL;
-const leven = require('leven');
-
-/**
- * @param {{ [key: string]: { alias?: string } }} allowedOptions
- * @return {string[]}
- */
-const buildAllowedOptions = (allowedOptions) => {
- let options = Object.keys(allowedOptions);
-
- options = options.reduce((opts, opt) => {
- const alias = allowedOptions[opt].alias;
-
- if (alias) {
- opts.push(alias);
- }
-
- return opts;
- }, options);
- options.sort();
-
- return options;
-};
-
-/**
- * @param {string[]} all
- * @param {string} invalid
- * @return {null|string}
- */
-const suggest = (all, invalid) => {
- const maxThreshold = 10;
-
- for (let threshold = 1; threshold <= maxThreshold; threshold++) {
- const suggestion = all.find((option) => leven(option, invalid) <= threshold);
-
- if (suggestion) {
- return suggestion;
- }
- }
-
- return null;
-};
-
-/**
- * @param {string} opt
- * @return {string}
- */
-const cliOption = (opt) => (opt.length === 1 ? `"-${opt}"` : `"--${_.kebabCase(opt)}"`);
-
-/**
- * @param {string} invalid
- * @param {string|null} suggestion
- * @return {string}
- */
-const buildMessageLine = (invalid, suggestion) => {
- let line = `Invalid option ${chalk.red(cliOption(invalid))}.`;
-
- if (suggestion) {
- line += ` Did you mean ${chalk.cyan(cliOption(suggestion))}?`;
- }
-
- return line + EOL;
-};
-
-/**
- * @param {{ [key: string]: any }} allowedOptions
- * @param {{ [key: string]: any }} inputOptions
- * @return {string}
- */
-module.exports = function checkInvalidCLIOptions(allowedOptions, inputOptions) {
- const allOptions = buildAllowedOptions(allowedOptions);
-
- return Object.keys(inputOptions)
- .filter((opt) => !allOptions.includes(opt))
- .map(_.kebabCase)
- .reduce((msg, invalid) => {
- // NOTE: No suggestion for shortcut options because it's too difficult
- const suggestion = invalid.length >= 2 ? suggest(allOptions, invalid) : null;
-
- return msg + buildMessageLine(invalid, suggestion);
- }, '');
-};
diff --git a/assets/node_modules/stylelint/lib/utils/configurationError.js b/assets/node_modules/stylelint/lib/utils/configurationError.js
deleted file mode 100644
index 9d16337..0000000
--- a/assets/node_modules/stylelint/lib/utils/configurationError.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict';
-
-/**
- * Create configurationError from text and set CLI exit code
- * @param {string} text
- * @returns {Object}
- */
-module.exports = function(text) /* Object */ {
- /** @type {Error & {code?: number}} */
- const err = new Error(text);
-
- err.code = 78;
-
- return err;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/containsString.js b/assets/node_modules/stylelint/lib/utils/containsString.js
deleted file mode 100644
index 98b7383..0000000
--- a/assets/node_modules/stylelint/lib/utils/containsString.js
+++ /dev/null
@@ -1,56 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-
-/** @typedef {false | { match: string, pattern: string }} ReturnValue */
-
-/**
- * Checks if a string contains a value. The comparison value can be a string or
- * an array of strings.
- *
- * Any strings starting and ending with `/` are ignored. Use the
- * matchesStringOrRegExp() util to match regexes.
- *
- * @param {string} input
- * @param {string | string[]} comparison
- *
- * @returns {ReturnValue}
- */
-module.exports = function containsString(input, comparison) {
- if (!Array.isArray(comparison)) {
- return testAgainstString(input, comparison);
- }
-
- for (const comparisonItem of comparison) {
- const testResult = testAgainstString(input, comparisonItem);
-
- if (testResult) {
- return testResult;
- }
- }
-
- return false;
-};
-
-/**
- *
- * @param {string} value
- * @param {string} comparison
- *
- * @returns {ReturnValue}
- */
-function testAgainstString(value, comparison) {
- if (!comparison) return false;
-
- if (!_.isString(comparison)) return false;
-
- if (comparison.startsWith('/') && comparison.endsWith('/')) {
- return false;
- }
-
- if (value.includes(comparison)) {
- return { match: value, pattern: comparison };
- }
-
- return false;
-}
diff --git a/assets/node_modules/stylelint/lib/utils/declarationValueIndex.js b/assets/node_modules/stylelint/lib/utils/declarationValueIndex.js
deleted file mode 100644
index 642c688..0000000
--- a/assets/node_modules/stylelint/lib/utils/declarationValueIndex.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-
-/**
- * Get the index of a declaration's value
- *
- * @param {import('postcss').Declaration} decl
- *
- * @returns {number}
- */
-module.exports = function(decl) {
- return [
- _.get(decl, 'raws.prop.prefix'),
- _.get(decl, 'raws.prop.raw', decl.prop),
- _.get(decl, 'raws.prop.suffix'),
- _.get(decl, 'raws.between', ':'),
- _.get(decl, 'raws.value.prefix'),
- ].reduce((count, str) => (str ? count + str.length : count), 0);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/eachDeclarationBlock.js b/assets/node_modules/stylelint/lib/utils/eachDeclarationBlock.js
deleted file mode 100644
index 039f78f..0000000
--- a/assets/node_modules/stylelint/lib/utils/eachDeclarationBlock.js
+++ /dev/null
@@ -1,59 +0,0 @@
-'use strict';
-
-const { isRoot, isAtRule, isRule } = require('./typeGuards');
-
-/** @typedef {import('postcss').Root} Root */
-/** @typedef {import('postcss').Root} Document */
-/** @typedef {import('postcss').Node} PostcssNode */
-/** @typedef {import('postcss').ContainerBase} PostcssContainerNode */
-
-/**
- * @param {PostcssNode} node
- * @returns {node is PostcssContainerNode}
- */
-function isContainerNode(node) {
- return isRule(node) || isAtRule(node) || isRoot(node);
-}
-
-/**
- * In order to accommodate nested blocks (postcss-nested),
- * we need to run a shallow loop (instead of eachDecl() or eachRule(),
- * which loop recursively) and allow each nested block to accumulate
- * its own list of properties -- so that a property in a nested rule
- * does not conflict with the same property in the parent rule
- * executes a provided function once for each declaration block.
- *
- * @param {Root | Document} root - root element of file.
- * @param {function} cb - Function to execute for each declaration block
- *
- * @returns {void}
- */
-module.exports = function(root, cb) {
- /**
- * @param {PostcssNode} statement
- *
- * @returns {void}
- */
- function each(statement) {
- if (!isContainerNode(statement)) return;
-
- if (statement.nodes && statement.nodes.length) {
- /** @type {PostcssNode[]} */
- const decls = [];
-
- statement.nodes.forEach((node) => {
- if (node.type === 'decl') {
- decls.push(node);
- }
-
- each(node);
- });
-
- if (decls.length) {
- cb(decls.forEach.bind(decls));
- }
- }
- }
-
- each(root);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/filterFilePaths.js b/assets/node_modules/stylelint/lib/utils/filterFilePaths.js
deleted file mode 100644
index 4e25f05..0000000
--- a/assets/node_modules/stylelint/lib/utils/filterFilePaths.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict';
-
-const { isPathValid } = require('ignore').default;
-
-/**
- * @param {import('ignore').Ignore} ignorer
- * @param {string[]} filePaths
- * @returns {string[]}
- */
-module.exports = function filterFilePaths(ignorer, filePaths) {
- const validForIgnore = filePaths.filter(isPathValid);
- // Paths which starts with `..` are not valid for `ignore`, e. g. `../style.css`
- const notValidForIgnore = filePaths.filter((p) => !validForIgnore.includes(p));
-
- const filteredByIgnore = ignorer.filter(validForIgnore);
-
- // Preserving files order, while removing paths which were filtered by `ignore`
- return filePaths.filter((p) => notValidForIgnore.includes(p) || filteredByIgnore.includes(p));
-};
diff --git a/assets/node_modules/stylelint/lib/utils/findAnimationName.js b/assets/node_modules/stylelint/lib/utils/findAnimationName.js
deleted file mode 100644
index edc34fb..0000000
--- a/assets/node_modules/stylelint/lib/utils/findAnimationName.js
+++ /dev/null
@@ -1,69 +0,0 @@
-'use strict';
-
-const getUnitFromValueNode = require('./getUnitFromValueNode');
-const isStandardSyntaxValue = require('./isStandardSyntaxValue');
-const isVariable = require('./isVariable');
-const keywordSets = require('../reference/keywordSets');
-const postcssValueParser = require('postcss-value-parser');
-
-/** @typedef {import('postcss-value-parser').Node} Node */
-
-/**
- * Get the font-families within a `font` shorthand property value.
- *
- * @param {string} value
- *
- * @returns {Node[]}
- */
-module.exports = function findAnimationName(value) {
- /** @type {Node[]} */
- const animationNames = [];
-
- const valueNodes = postcssValueParser(value);
-
- // Handle `inherit`, `initial` and etc
- if (
- valueNodes.nodes.length === 1 &&
- keywordSets.basicKeywords.has(valueNodes.nodes[0].value.toLowerCase())
- ) {
- return [valueNodes.nodes[0]];
- }
-
- valueNodes.walk((valueNode) => {
- if (valueNode.type === 'function') {
- return false;
- }
-
- if (valueNode.type !== 'word') {
- return;
- }
-
- const valueLowerCase = valueNode.value.toLowerCase();
-
- // Ignore non standard syntax
- if (!isStandardSyntaxValue(valueLowerCase)) {
- return;
- }
-
- // Ignore variables
- if (isVariable(valueLowerCase)) {
- return;
- }
-
- // Ignore keywords for other font parts
- if (keywordSets.animationShorthandKeywords.has(valueLowerCase)) {
- return;
- }
-
- // Ignore numbers with units
- const unit = getUnitFromValueNode(valueNode);
-
- if (unit || unit === '') {
- return;
- }
-
- animationNames.push(valueNode);
- });
-
- return animationNames;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/findAtRuleContext.js b/assets/node_modules/stylelint/lib/utils/findAtRuleContext.js
deleted file mode 100644
index a1ee6b4..0000000
--- a/assets/node_modules/stylelint/lib/utils/findAtRuleContext.js
+++ /dev/null
@@ -1,23 +0,0 @@
-'use strict';
-
-/**
- * Find the at-rule in which a rule is nested.
- *
- * Returns `null` if the rule is not nested within an at-rule.
- *
- * @param {import('postcss').Rule} rule
- * @returns {null | import('postcss').AtRule}
- */
-module.exports = function findAtRuleContext(rule) {
- const parent = rule.parent;
-
- if (parent.type === 'root') {
- return null;
- }
-
- if (parent.type === 'atrule') {
- return parent;
- }
-
- return findAtRuleContext(parent);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/findFontFamily.js b/assets/node_modules/stylelint/lib/utils/findFontFamily.js
deleted file mode 100644
index 8038a92..0000000
--- a/assets/node_modules/stylelint/lib/utils/findFontFamily.js
+++ /dev/null
@@ -1,128 +0,0 @@
-'use strict';
-
-const isNumbery = require('./isNumbery');
-const isStandardSyntaxValue = require('./isStandardSyntaxValue');
-const isValidFontSize = require('./isValidFontSize');
-const isVariable = require('./isVariable');
-const keywordSets = require('../reference/keywordSets');
-const postcssValueParser = require('postcss-value-parser');
-
-const nodeTypesToCheck = new Set(['word', 'string', 'space', 'div']);
-
-/** @typedef {import('postcss-value-parser').Node} Node */
-
-/**
- *
- * @param {Node} firstNode
- * @param {Node} secondNode
- * @param {string | null} charactersBetween
- *
- * @returns {Node}
- */
-function joinValueNodes(firstNode, secondNode, charactersBetween) {
- firstNode.value = firstNode.value + charactersBetween + secondNode.value;
-
- return firstNode;
-}
-
-/**
- * Get the font-families within a `font` shorthand property value.
- *
- * @param {string} value
- * @return {object} Collection font-family nodes
- */
-module.exports = function findFontFamily(value) {
- /** @type {Node[]} */
- const fontFamilies = [];
-
- const valueNodes = postcssValueParser(value);
-
- // Handle `inherit`, `initial` and etc
- if (
- valueNodes.nodes.length === 1 &&
- keywordSets.basicKeywords.has(valueNodes.nodes[0].value.toLowerCase())
- ) {
- return [valueNodes.nodes[0]];
- }
-
- let needMergeNodesByValue = false;
- /** @type {string | null} */
- let mergeCharacters = null;
-
- valueNodes.walk((valueNode, index, nodes) => {
- if (valueNode.type === 'function') {
- return false;
- }
-
- if (!nodeTypesToCheck.has(valueNode.type)) {
- return;
- }
-
- const valueLowerCase = valueNode.value.toLowerCase();
-
- // Ignore non standard syntax
- if (!isStandardSyntaxValue(valueLowerCase)) {
- return;
- }
-
- // Ignore variables
- if (isVariable(valueLowerCase)) {
- return;
- }
-
- // Ignore keywords for other font parts
- if (
- keywordSets.fontShorthandKeywords.has(valueLowerCase) &&
- !keywordSets.fontFamilyKeywords.has(valueLowerCase)
- ) {
- return;
- }
-
- // Ignore font-sizes
- if (isValidFontSize(valueNode.value)) {
- return;
- }
-
- // Ignore anything come after a <font-size>/, because it's a line-height
- if (
- nodes[index - 1] &&
- nodes[index - 1].value === '/' &&
- nodes[index - 2] &&
- isValidFontSize(nodes[index - 2].value)
- ) {
- return;
- }
-
- // Ignore number values
- if (isNumbery(valueLowerCase)) {
- return;
- }
-
- // Detect when a space or comma is dividing a list of font-families, and save the joining character.
- if (
- (valueNode.type === 'space' || (valueNode.type === 'div' && valueNode.value !== ',')) &&
- fontFamilies.length !== 0
- ) {
- needMergeNodesByValue = true;
- mergeCharacters = valueNode.value;
-
- return;
- }
-
- if (valueNode.type === 'space' || valueNode.type === 'div') {
- return;
- }
-
- const fontFamily = valueNode;
-
- if (needMergeNodesByValue) {
- joinValueNodes(fontFamilies[fontFamilies.length - 1], valueNode, mergeCharacters);
- needMergeNodesByValue = false;
- mergeCharacters = null;
- } else {
- fontFamilies.push(fontFamily);
- }
- });
-
- return fontFamilies;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/findListStyleType.js b/assets/node_modules/stylelint/lib/utils/findListStyleType.js
deleted file mode 100644
index e7b15de..0000000
--- a/assets/node_modules/stylelint/lib/utils/findListStyleType.js
+++ /dev/null
@@ -1,60 +0,0 @@
-'use strict';
-
-const isStandardSyntaxValue = require('./isStandardSyntaxValue');
-const isVariable = require('./isVariable');
-const keywordSets = require('../reference/keywordSets');
-const postcssValueParser = require('postcss-value-parser');
-
-/**
- * Get the list-style-type within a `list-style` shorthand property value.
- *
- * @param {string} value
- */
-module.exports = function findListStyleType(value) {
- /** @type {Array<import('postcss-value-parser').WordNode>} */
- const listStyleTypes = [];
-
- const valueNodes = postcssValueParser(value);
-
- // Handle `inherit`, `initial` and etc
- if (
- valueNodes.nodes.length === 1 &&
- keywordSets.listStyleTypeKeywords.has(valueNodes.nodes[0].value.toLowerCase())
- ) {
- return [valueNodes.nodes[0]];
- }
-
- valueNodes.walk((valueNode) => {
- if (valueNode.type === 'function') {
- return false;
- }
-
- if (valueNode.type !== 'word') {
- return;
- }
-
- const valueLowerCase = valueNode.value.toLowerCase();
-
- // Ignore non standard syntax
- if (!isStandardSyntaxValue(valueLowerCase)) {
- return;
- }
-
- // Ignore variables
- if (isVariable(valueLowerCase)) {
- return;
- }
-
- // Ignore keywords for other font parts
- if (
- keywordSets.listStylePositionKeywords.has(valueLowerCase) ||
- keywordSets.listStyleImageKeywords.has(valueLowerCase)
- ) {
- return;
- }
-
- listStyleTypes.push(valueNode);
- });
-
- return listStyleTypes;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/functionArgumentsSearch.js b/assets/node_modules/stylelint/lib/utils/functionArgumentsSearch.js
deleted file mode 100644
index 330ab41..0000000
--- a/assets/node_modules/stylelint/lib/utils/functionArgumentsSearch.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict';
-
-const balancedMatch = require('balanced-match');
-const styleSearch = require('style-search');
-
-/**
- * Search a CSS string for functions by name.
- * For every match, invoke the callback, passing the function's
- * "argument(s) string" (whatever is inside the parentheses)
- * as an argument.
- *
- * Callback will be called once for every matching function found,
- * with the function's "argument(s) string" and its starting index
- * as the arguments.
- *
- * @param {string} source
- * @param {string} functionName
- * @param {Function} callback
- */
-module.exports = function(source, functionName, callback) {
- styleSearch(
- {
- source,
- target: functionName,
- functionNames: 'check',
- },
- (match) => {
- if (source[match.endIndex] !== '(') {
- return;
- }
-
- const parensMatch = balancedMatch('(', ')', source.substr(match.startIndex));
-
- callback(parensMatch.body, match.endIndex + 1);
- },
- );
-};
diff --git a/assets/node_modules/stylelint/lib/utils/getCacheFile.js b/assets/node_modules/stylelint/lib/utils/getCacheFile.js
deleted file mode 100644
index 3142013..0000000
--- a/assets/node_modules/stylelint/lib/utils/getCacheFile.js
+++ /dev/null
@@ -1,52 +0,0 @@
-'use strict';
-
-const fs = require('fs');
-const hash = require('./hash');
-const path = require('path');
-
-/**
- * Return the cacheFile to be used by stylelint, based on whether the provided parameter is
- * a directory or looks like a directory (ends in `path.sep`), in which case the file
- * name will be `cacheFile/.cache_hashOfCWD`.
- *
- * If cacheFile points to a file or looks like a file, then it will just use that file.
- *
- * @param {string} cacheFile - The name of file to be used to store the cache
- * @param {string} cwd - Current working directory. Used for tests
- * @returns {string} Resolved path to the cache file
- */
-module.exports = function getCacheFile(cacheFile, cwd) {
- /*
- * Make sure path separators are normalized for environment/os.
- * Also, keep trailing path separator if present.
- */
- cacheFile = path.normalize(cacheFile);
-
- const resolvedCacheFile = path.resolve(cwd, cacheFile);
- // If the last character passed is a path separator, we assume is a directory.
- const looksLikeADirectory = cacheFile[cacheFile.length - 1] === path.sep;
-
- /**
- * Return the default cache file name when provided parameter is a directory.
- * @returns {string} - Resolved path to the cacheFile
- */
- function getCacheFileForDirectory() {
- return path.join(resolvedCacheFile, `.stylelintcache_${hash(cwd)}`);
- }
-
- let fileStats;
-
- try {
- fileStats = fs.lstatSync(resolvedCacheFile);
- } catch (ex) {
- fileStats = null;
- }
-
- if (looksLikeADirectory || (fileStats && fileStats.isDirectory())) {
- // Return path to provided directory with generated file name.
- return getCacheFileForDirectory();
- }
-
- // Return normalized path to cache file.
- return resolvedCacheFile;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/getFileIgnorer.js b/assets/node_modules/stylelint/lib/utils/getFileIgnorer.js
deleted file mode 100644
index bb3e998..0000000
--- a/assets/node_modules/stylelint/lib/utils/getFileIgnorer.js
+++ /dev/null
@@ -1,40 +0,0 @@
-'use strict';
-// Try to get file ignorer from '.stylelintignore'
-
-const fs = require('fs');
-const path = require('path');
-const { default: ignore } = require('ignore');
-
-const DEFAULT_IGNORE_FILENAME = '.stylelintignore';
-const FILE_NOT_FOUND_ERROR_CODE = 'ENOENT';
-
-/** @typedef {import('stylelint').StylelintStandaloneOptions} StylelintOptions */
-
-/**
- * @param {StylelintOptions} options
- * @return {import('ignore').Ignore}
- */
-module.exports = function(options) {
- const ignoreFilePath = options.ignorePath || DEFAULT_IGNORE_FILENAME;
- const absoluteIgnoreFilePath = path.isAbsolute(ignoreFilePath)
- ? ignoreFilePath
- : path.resolve(process.cwd(), ignoreFilePath);
- let ignoreText = '';
-
- try {
- ignoreText = fs.readFileSync(absoluteIgnoreFilePath, 'utf8');
- } catch (readError) {
- if (readError.code !== FILE_NOT_FOUND_ERROR_CODE) throw readError;
- }
-
- /**
- * TODO TYPES
- * @type {any}
- */
- const ignorePattern = options.ignorePattern || [];
- const ignorer = ignore()
- .add(ignoreText)
- .add(ignorePattern);
-
- return ignorer;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/getFormatterOptionsText.js b/assets/node_modules/stylelint/lib/utils/getFormatterOptionsText.js
deleted file mode 100644
index 9d5f27a..0000000
--- a/assets/node_modules/stylelint/lib/utils/getFormatterOptionsText.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict';
-
-const formatters = require('../formatters');
-
-/**
- * @param {{ useOr?: boolean }} [options={}]
- * @returns {string}
- */
-module.exports = function getFormatterOptionsText(options = {}) {
- let output = Object.keys(formatters)
- .map((name) => `"${name}"`)
- .join(', ');
-
- if (options.useOr) {
- output = output.replace(/, ([a-z"]+)$/u, ' or $1');
- }
-
- return output;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/getModulePath.js b/assets/node_modules/stylelint/lib/utils/getModulePath.js
deleted file mode 100644
index 68fa9b1..0000000
--- a/assets/node_modules/stylelint/lib/utils/getModulePath.js
+++ /dev/null
@@ -1,31 +0,0 @@
-'use strict';
-
-const configurationError = require('./configurationError');
-const globalModules = require('global-modules');
-const resolveFrom = require('resolve-from');
-
-/**
- * @param {string} basedir
- * @param {string} lookup
- * @return {string}
- */
-module.exports = function getModulePath(basedir, lookup) {
- // 1. Try to resolve from the provided directory
- // 2. Try to resolve from `process.cwd`
- // 3. Try to resolve from global `node_modules` directory
- let path = resolveFrom.silent(basedir, lookup);
-
- if (!path) {
- path = resolveFrom.silent(process.cwd(), lookup);
- }
-
- if (!path) {
- path = resolveFrom.silent(globalModules, lookup);
- }
-
- if (!path) {
- throw configurationError(`Could not find "${lookup}". Do you need a \`configBasedir\`?`);
- }
-
- return path;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/getNextNonSharedLineCommentNode.js b/assets/node_modules/stylelint/lib/utils/getNextNonSharedLineCommentNode.js
deleted file mode 100644
index 8a4d32f..0000000
--- a/assets/node_modules/stylelint/lib/utils/getNextNonSharedLineCommentNode.js
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-
-/** @typedef {import('postcss').Node} Node */
-
-/**
- * @param {Node | void} node
- */
-function getNodeLine(node) {
- return _.get(node, 'source.start.line');
-}
-
-/**
- * @param {Node | void} node
- * @returns {Node | void}
- */
-module.exports = function getNextNonSharedLineCommentNode(node) {
- if (node === undefined) {
- return undefined;
- }
-
- /** @type {Node | void} */
- const nextNode = node.next();
-
- if (_.get(nextNode, 'type') !== 'comment') {
- return nextNode;
- }
-
- if (
- getNodeLine(node) === getNodeLine(nextNode) ||
- (nextNode !== undefined && getNodeLine(nextNode) === getNodeLine(nextNode.next()))
- ) {
- return getNextNonSharedLineCommentNode(nextNode);
- }
-
- return nextNode;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/getOsEol.js b/assets/node_modules/stylelint/lib/utils/getOsEol.js
deleted file mode 100644
index 6303f0b..0000000
--- a/assets/node_modules/stylelint/lib/utils/getOsEol.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-
-const os = require('os');
-
-// This function simply provides roundabout way of getting os.EOL
-// so we can mock this for Jest tests
-function getOsEl() {
- return os.EOL;
-}
-
-module.exports = getOsEl;
diff --git a/assets/node_modules/stylelint/lib/utils/getPreviousNonSharedLineCommentNode.js b/assets/node_modules/stylelint/lib/utils/getPreviousNonSharedLineCommentNode.js
deleted file mode 100644
index 5d6bfb2..0000000
--- a/assets/node_modules/stylelint/lib/utils/getPreviousNonSharedLineCommentNode.js
+++ /dev/null
@@ -1,40 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-
-/** @typedef {import('postcss').Node} Node */
-
-/**
- * @param {Node} node
- */
-function getNodeLine(node) {
- return _.get(node, 'source.start.line');
-}
-
-/**
- * @param {import('postcss').Node | void} node
- * @returns {Node | void}
- */
-module.exports = function getPreviousNonSharedLineCommentNode(node) {
- if (node === undefined) {
- return undefined;
- }
-
- const previousNode = node.prev();
-
- if (!previousNode || _.get(previousNode, 'type') !== 'comment') {
- return previousNode;
- }
-
- if (getNodeLine(node) === getNodeLine(previousNode)) {
- return getPreviousNonSharedLineCommentNode(previousNode);
- }
-
- const previousNode2 = previousNode.prev();
-
- if (previousNode2 && getNodeLine(previousNode) === getNodeLine(previousNode2)) {
- return getPreviousNonSharedLineCommentNode(previousNode);
- }
-
- return previousNode;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/getSchemeFromUrl.js b/assets/node_modules/stylelint/lib/utils/getSchemeFromUrl.js
deleted file mode 100644
index 9421a2b..0000000
--- a/assets/node_modules/stylelint/lib/utils/getSchemeFromUrl.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict';
-
-const { URL } = require('url');
-
-/**
- * Get unit from value node
- *
- * Returns `null` if the unit is not found.
- *
- * @param {string} urlString
- */
-module.exports = function(urlString) {
- let protocol = null;
-
- try {
- protocol = new URL(urlString).protocol;
- } catch (err) {
- return null;
- }
-
- if (protocol === null || typeof protocol === 'undefined') {
- return null;
- }
-
- const scheme = protocol.slice(0, -1); // strip trailing `:`
-
- // The URL spec does not require a scheme to be followed by `//`, but checking
- // for it allows this rule to differentiate <scheme>:<hostname> urls from
- // <hostname>:<port> urls. `data:` scheme urls are an exception to this rule.
- const slashIndex = protocol.length;
- const expectedSlashes = urlString.slice(slashIndex, slashIndex + 2);
- const isSchemeLessUrl = expectedSlashes !== '//' && scheme !== 'data';
-
- if (isSchemeLessUrl) {
- return null;
- }
-
- return scheme;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/getUnitFromValueNode.js b/assets/node_modules/stylelint/lib/utils/getUnitFromValueNode.js
deleted file mode 100644
index 7a6fa6d..0000000
--- a/assets/node_modules/stylelint/lib/utils/getUnitFromValueNode.js
+++ /dev/null
@@ -1,49 +0,0 @@
-'use strict';
-
-const blurInterpolation = require('./blurInterpolation');
-const isStandardSyntaxValue = require('./isStandardSyntaxValue');
-const valueParser = require('postcss-value-parser');
-
-/**
- * Get unit from value node
- *
- * Returns `null` if the unit is not found.
- *
- * @param {import('postcss-value-parser').Node} node
- *
- * @returns {string | null}
- */
-module.exports = function(node) {
- if (!node || !node.value) {
- return null;
- }
-
- // Ignore non-word nodes
- if (node.type !== 'word') {
- return null;
- }
-
- // Ignore non standard syntax
- if (!isStandardSyntaxValue(node.value)) {
- return null;
- }
-
- // Ignore HEX
- if (node.value.startsWith('#')) {
- return null;
- }
-
- // Remove non standard stuff
- const value = blurInterpolation(node.value, '')
- // ignore hack unit
- .replace('\\0', '')
- .replace('\\9', '');
-
- const parsedUnit = valueParser.unit(value);
-
- if (!parsedUnit) {
- return null;
- }
-
- return parsedUnit.unit;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/hasBlock.js b/assets/node_modules/stylelint/lib/utils/hasBlock.js
deleted file mode 100644
index 8f88eaf..0000000
--- a/assets/node_modules/stylelint/lib/utils/hasBlock.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-
-/**
- * Check if a statement has an block (empty or otherwise).
- *
- * @param {import('postcss').Rule | import('postcss').AtRule} statement - postcss rule or at-rule node
- * @return {boolean} True if `statement` has a block (empty or otherwise)
- */
-module.exports = function(statement) {
- return statement.nodes !== undefined;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/hasEmptyBlock.js b/assets/node_modules/stylelint/lib/utils/hasEmptyBlock.js
deleted file mode 100644
index 3018d53..0000000
--- a/assets/node_modules/stylelint/lib/utils/hasEmptyBlock.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict';
-
-/**
- * Check if a statement has an empty block.
- *
- * @param {import('postcss').Rule | import('postcss').AtRule} statement - postcss rule or at-rule node
- * @return {boolean} True if the statement has a block and it is empty
- */
-module.exports = function(statement) {
- return (
- statement.nodes !== undefined && statement.nodes.length === 0 // has block
- ); // and is empty
-};
diff --git a/assets/node_modules/stylelint/lib/utils/hasEmptyLine.js b/assets/node_modules/stylelint/lib/utils/hasEmptyLine.js
deleted file mode 100644
index bb62a7b..0000000
--- a/assets/node_modules/stylelint/lib/utils/hasEmptyLine.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict';
-
-/**
- * Check if a string contains at least one empty line
- *
- * @param {string} string
- *
- * @returns {boolean}
- */
-module.exports = function(string) {
- if (string === '' || string === undefined) return false;
-
- return /\n[\r\t ]*\n/.test(string);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/hasInterpolation.js b/assets/node_modules/stylelint/lib/utils/hasInterpolation.js
deleted file mode 100644
index bd5fbb6..0000000
--- a/assets/node_modules/stylelint/lib/utils/hasInterpolation.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict';
-
-const hasLessInterpolation = require('../utils/hasLessInterpolation');
-const hasPsvInterpolation = require('../utils/hasPsvInterpolation');
-const hasScssInterpolation = require('../utils/hasScssInterpolation');
-const hasTplInterpolation = require('../utils/hasTplInterpolation');
-
-/**
- * Check whether a string has interpolation
- *
- * @param {string} string
- * @return {boolean} If `true`, a string has interpolation
- */
-module.exports = function(string) {
- // SCSS or Less interpolation
- if (
- hasLessInterpolation(string) ||
- hasScssInterpolation(string) ||
- hasTplInterpolation(string) ||
- hasPsvInterpolation(string)
- ) {
- return true;
- }
-
- return false;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/hasLessInterpolation.js b/assets/node_modules/stylelint/lib/utils/hasLessInterpolation.js
deleted file mode 100644
index 080c6ef..0000000
--- a/assets/node_modules/stylelint/lib/utils/hasLessInterpolation.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-
-/**
- * Check whether a string has less interpolation
- *
- * @param {string} string
- * @return {boolean} If `true`, a string has less interpolation
- */
-module.exports = function(string) {
- return /@{.+?}/.test(string);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/hasPsvInterpolation.js b/assets/node_modules/stylelint/lib/utils/hasPsvInterpolation.js
deleted file mode 100644
index 47d9ad8..0000000
--- a/assets/node_modules/stylelint/lib/utils/hasPsvInterpolation.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict';
-
-/**
- * Check whether a string has postcss-simple-vars interpolation
- *
- * @param {string} string
- */
-module.exports = function(string) {
- return /\$\(.+?\)/.test(string);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/hasScssInterpolation.js b/assets/node_modules/stylelint/lib/utils/hasScssInterpolation.js
deleted file mode 100644
index 2f00448..0000000
--- a/assets/node_modules/stylelint/lib/utils/hasScssInterpolation.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict';
-
-/**
- * Check whether a string has scss interpolation
- *
- * @param {string} string
- */
-module.exports = function(string) {
- return /#{.+?}/.test(string);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/hasTplInterpolation.js b/assets/node_modules/stylelint/lib/utils/hasTplInterpolation.js
deleted file mode 100644
index 04794ab..0000000
--- a/assets/node_modules/stylelint/lib/utils/hasTplInterpolation.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-
-/**
- * Check whether a string has JS template literal interpolation or HTML-like template
- *
- * @param {string} string
- * @return {boolean} If `true`, a string has template literal interpolation
- */
-module.exports = function(string) {
- return /{.+?}/.test(string);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/hash.js b/assets/node_modules/stylelint/lib/utils/hash.js
deleted file mode 100644
index 72cb98a..0000000
--- a/assets/node_modules/stylelint/lib/utils/hash.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict';
-
-const murmur = require('imurmurhash');
-
-/**
- * hash the given string
- * @param {string} str the string to hash
- * @returns {string} the hash
- */
-module.exports = function hash(str) {
- return murmur(str)
- .result()
- .toString(36);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isAfterComment.js b/assets/node_modules/stylelint/lib/utils/isAfterComment.js
deleted file mode 100644
index 584814d..0000000
--- a/assets/node_modules/stylelint/lib/utils/isAfterComment.js
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict';
-
-const isSharedLineComment = require('./isSharedLineComment');
-
-/**
- * @param {import('postcss').Node} node
- */
-module.exports = function(node) {
- const previousNode = node.prev();
-
- if (!previousNode || previousNode.type !== 'comment') {
- return false;
- }
-
- return !isSharedLineComment(previousNode);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isAfterSingleLineComment.js b/assets/node_modules/stylelint/lib/utils/isAfterSingleLineComment.js
deleted file mode 100644
index 71364a8..0000000
--- a/assets/node_modules/stylelint/lib/utils/isAfterSingleLineComment.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict';
-
-const isSharedLineComment = require('./isSharedLineComment');
-
-/**
- * @param {import('postcss').Node} node
- */
-function isAfterSingleLineComment(node) {
- const prevNode = node.prev();
-
- return (
- prevNode !== undefined &&
- prevNode.type === 'comment' &&
- !isSharedLineComment(prevNode) &&
- prevNode.source &&
- prevNode.source.start &&
- prevNode.source.end &&
- prevNode.source.start.line === prevNode.source.end.line
- );
-}
-
-module.exports = isAfterSingleLineComment;
diff --git a/assets/node_modules/stylelint/lib/utils/isAfterStandardPropertyDeclaration.js b/assets/node_modules/stylelint/lib/utils/isAfterStandardPropertyDeclaration.js
deleted file mode 100644
index 21cb053..0000000
--- a/assets/node_modules/stylelint/lib/utils/isAfterStandardPropertyDeclaration.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const getPreviousNonSharedLineCommentNode = require('./getPreviousNonSharedLineCommentNode');
-const isCustomProperty = require('./isCustomProperty');
-const isStandardSyntaxDeclaration = require('./isStandardSyntaxDeclaration');
-
-/**
- * @param {import('postcss').Node} node
- */
-module.exports = function(node) {
- const prevNode = getPreviousNonSharedLineCommentNode(node);
-
- return (
- prevNode !== undefined &&
- prevNode.type === 'decl' &&
- isStandardSyntaxDeclaration(prevNode) &&
- !isCustomProperty(_.get(prevNode, 'prop', ''))
- );
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isAutoprefixable.js b/assets/node_modules/stylelint/lib/utils/isAutoprefixable.js
deleted file mode 100644
index 521aee1..0000000
--- a/assets/node_modules/stylelint/lib/utils/isAutoprefixable.js
+++ /dev/null
@@ -1,77 +0,0 @@
-'use strict';
-
-const autoprefixer = require('autoprefixer');
-const Browsers = require('autoprefixer/lib/browsers');
-const Prefixes = require('autoprefixer/lib/prefixes');
-
-/**
- * Use Autoprefixer's secret powers to determine whether or
- * not a certain CSS identifier contains a vendor prefix that
- * Autoprefixer, given the standardized identifier, could add itself.
- *
- * Used by `*-no-vendor-prefix-*` rules to find superfluous
- * vendor prefixes.
- */
-
-const prefixes = new Prefixes(
- autoprefixer.data.prefixes,
- new Browsers(autoprefixer.data.browsers, []),
-);
-
-/**
- * Most identifier types have to be looked up in a unique way,
- * so we're exposing special functions for each.
- */
-module.exports = {
- /**
- * @param {string} identifier
- * @returns {boolean}
- */
- atRuleName(identifier) {
- return Boolean(prefixes.remove[`@${identifier.toLowerCase()}`]);
- },
-
- /**
- * @param {string} identifier
- * @returns {boolean}
- */
- selector(identifier) {
- return prefixes.remove.selectors.some((/** @type {{ prefixed: string}} */ selectorObj) => {
- return identifier.toLowerCase() === selectorObj.prefixed;
- });
- },
-
- /**
- * @param {string} identifier
- * @returns {boolean}
- */
- mediaFeatureName(identifier) {
- return identifier.toLowerCase().includes('device-pixel-ratio');
- },
-
- /**
- * @param {string} identifier
- * @returns {boolean}
- */
- property(identifier) {
- return Boolean(autoprefixer.data.prefixes[prefixes.unprefixed(identifier.toLowerCase())]);
- },
-
- /**
- *
- * @param {string} prop
- * @param {string} value
- * @returns {boolean}
- */
- propertyValue(prop, value) {
- const possiblePrefixableValues =
- (prefixes.remove[prop.toLowerCase()] && prefixes.remove[prop.toLowerCase()].values) || false;
-
- return (
- possiblePrefixableValues &&
- possiblePrefixableValues.some((/** @type {{ prefixed: string}} */ valueObj) => {
- return value.toLowerCase() === valueObj.prefixed;
- })
- );
- },
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isBlocklessAtRuleAfterBlocklessAtRule.js b/assets/node_modules/stylelint/lib/utils/isBlocklessAtRuleAfterBlocklessAtRule.js
deleted file mode 100644
index 416af08..0000000
--- a/assets/node_modules/stylelint/lib/utils/isBlocklessAtRuleAfterBlocklessAtRule.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict';
-
-const getPreviousNonSharedLineCommentNode = require('./getPreviousNonSharedLineCommentNode');
-const hasBlock = require('./hasBlock');
-
-/**
- * @param {import('postcss').AtRule} atRule
- * @returns {boolean}
- */
-module.exports = function(atRule) {
- if (atRule.type !== 'atrule') {
- return false;
- }
-
- const previousNode = getPreviousNonSharedLineCommentNode(atRule);
-
- if (previousNode === undefined) {
- return false;
- }
-
- return previousNode.type === 'atrule' && !hasBlock(previousNode) && !hasBlock(atRule);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isBlocklessAtRuleAfterSameNameBlocklessAtRule.js b/assets/node_modules/stylelint/lib/utils/isBlocklessAtRuleAfterSameNameBlocklessAtRule.js
deleted file mode 100644
index 1d19538..0000000
--- a/assets/node_modules/stylelint/lib/utils/isBlocklessAtRuleAfterSameNameBlocklessAtRule.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const getPreviousNonSharedLineCommentNode = require('./getPreviousNonSharedLineCommentNode');
-const isBlocklessAtRuleAfterBlocklessAtRule = require('./isBlocklessAtRuleAfterBlocklessAtRule');
-
-/**
- * @param {import('postcss').AtRule} atRule
- * @returns {boolean}
- */
-module.exports = function(atRule) {
- if (!isBlocklessAtRuleAfterBlocklessAtRule(atRule)) {
- return false;
- }
-
- const previousNode = getPreviousNonSharedLineCommentNode(atRule);
-
- return _.get(previousNode, 'name') === atRule.name;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isCounterIncrementCustomIdentValue.js b/assets/node_modules/stylelint/lib/utils/isCounterIncrementCustomIdentValue.js
deleted file mode 100644
index 1a93137..0000000
--- a/assets/node_modules/stylelint/lib/utils/isCounterIncrementCustomIdentValue.js
+++ /dev/null
@@ -1,21 +0,0 @@
-'use strict';
-
-const keywordSets = require('../reference/keywordSets');
-
-/**
- * Check value is a custom ident
- *
- * @param {string} value
- */
-module.exports = function(value) {
- const valueLowerCase = value.toLowerCase();
-
- if (
- keywordSets.counterIncrementKeywords.has(valueLowerCase) ||
- Number.isFinite(parseInt(valueLowerCase))
- ) {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isCounterResetCustomIdentValue.js b/assets/node_modules/stylelint/lib/utils/isCounterResetCustomIdentValue.js
deleted file mode 100644
index 2e2a23f..0000000
--- a/assets/node_modules/stylelint/lib/utils/isCounterResetCustomIdentValue.js
+++ /dev/null
@@ -1,21 +0,0 @@
-'use strict';
-
-const keywordSets = require('../reference/keywordSets');
-
-/**
- * Check value is a custom ident
- *
- * @param {string} value
- */
-module.exports = function(value) {
- const valueLowerCase = value.toLowerCase();
-
- if (
- keywordSets.counterResetKeywords.has(valueLowerCase) ||
- Number.isFinite(parseInt(valueLowerCase))
- ) {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isCustomElement.js b/assets/node_modules/stylelint/lib/utils/isCustomElement.js
deleted file mode 100644
index 5f0497b..0000000
--- a/assets/node_modules/stylelint/lib/utils/isCustomElement.js
+++ /dev/null
@@ -1,46 +0,0 @@
-'use strict';
-
-const htmlTags = require('html-tags');
-const keywordSets = require('../reference/keywordSets');
-const mathMLTags = require('mathml-tag-names');
-const svgTags = require('svg-tags');
-
-/**
- * Check whether a type selector is a custom element
- *
- * @param {string} selector
- * @returns {boolean}
- */
-module.exports = function(selector) {
- if (!/^[a-z]/.test(selector)) {
- return false;
- }
-
- if (!selector.includes('-')) {
- return false;
- }
-
- const selectorLowerCase = selector.toLowerCase();
-
- if (selectorLowerCase !== selector) {
- return false;
- }
-
- if (svgTags.includes(selectorLowerCase)) {
- return false;
- }
-
- if (htmlTags.includes(selectorLowerCase)) {
- return false;
- }
-
- if (keywordSets.nonStandardHtmlTags.has(selectorLowerCase)) {
- return false;
- }
-
- if (mathMLTags.includes(selectorLowerCase)) {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isCustomMediaQuery.js b/assets/node_modules/stylelint/lib/utils/isCustomMediaQuery.js
deleted file mode 100644
index bc4beed..0000000
--- a/assets/node_modules/stylelint/lib/utils/isCustomMediaQuery.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict';
-
-/**
- * Check whether a media query is a custom
- * @param {string} mediaQuery
- * @returns {boolean}
- */
-module.exports = function(mediaQuery) {
- return mediaQuery.startsWith('--');
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isCustomProperty.js b/assets/node_modules/stylelint/lib/utils/isCustomProperty.js
deleted file mode 100644
index 3976450..0000000
--- a/assets/node_modules/stylelint/lib/utils/isCustomProperty.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict';
-
-/**
- * Check whether a property is a custom one
- * @param {string} property
- * @returns {boolean}
- */
-module.exports = function(property) {
- return property.startsWith('--');
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isCustomPropertySet.js b/assets/node_modules/stylelint/lib/utils/isCustomPropertySet.js
deleted file mode 100644
index c9d5892..0000000
--- a/assets/node_modules/stylelint/lib/utils/isCustomPropertySet.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const hasBlock = require('../utils/hasBlock');
-
-/**
- * Check whether a Node is a custom property set
- *
- * @param {import('postcss').Rule} node
- * @returns {boolean}
- */
-module.exports = function(node) {
- const selector = _.get(node, 'raws.selector.raw', node.selector);
-
- return (
- node.type === 'rule' && hasBlock(node) && selector.startsWith('--') && selector.endsWith(':')
- );
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isCustomSelector.js b/assets/node_modules/stylelint/lib/utils/isCustomSelector.js
deleted file mode 100644
index ff62ae8..0000000
--- a/assets/node_modules/stylelint/lib/utils/isCustomSelector.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-
-/**
- * Check whether a selector is a custom one
- *
- * @param {string} selector
- * @returns {boolean}
- */
-module.exports = function(selector) {
- return selector.startsWith(':--');
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isFirstNested.js b/assets/node_modules/stylelint/lib/utils/isFirstNested.js
deleted file mode 100644
index fb853b7..0000000
--- a/assets/node_modules/stylelint/lib/utils/isFirstNested.js
+++ /dev/null
@@ -1,67 +0,0 @@
-'use strict';
-
-const { isComment, hasSource } = require('./typeGuards');
-
-/**
- * @param {import('postcss').Node} statement
- * @returns {boolean}
- */
-module.exports = function(statement) {
- const parentNode = statement.parent;
-
- if (parentNode === undefined || parentNode.type === 'root') {
- return false;
- }
-
- if (statement === parentNode.first) {
- return true;
- }
-
- /*
- * Search for the statement in the parent's nodes, ignoring comment
- * nodes on the same line as the parent's opening brace.
- */
-
- const parentNodes = parentNode.nodes;
-
- if (!parentNodes) {
- return false;
- }
-
- const firstNode = parentNodes[0];
-
- if (
- !isComment(firstNode) ||
- (typeof firstNode.raws.before === 'string' && firstNode.raws.before.includes('\n'))
- ) {
- return false;
- }
-
- if (!hasSource(firstNode) || !firstNode.source.start) {
- return false;
- }
-
- const openingBraceLine = firstNode.source.start.line;
-
- if (!firstNode.source.end || openingBraceLine !== firstNode.source.end.line) {
- return false;
- }
-
- for (let i = 1; i < parentNodes.length; i++) {
- const node = parentNodes[i];
-
- if (node === statement) {
- return true;
- }
-
- if (
- !isComment(node) ||
- (hasSource(node) && node.source.end && node.source.end.line !== openingBraceLine)
- ) {
- return false;
- }
- }
-
- /* istanbul ignore next: Should always return in the loop */
- return false;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isFirstNodeOfRoot.js b/assets/node_modules/stylelint/lib/utils/isFirstNodeOfRoot.js
deleted file mode 100644
index 3312259..0000000
--- a/assets/node_modules/stylelint/lib/utils/isFirstNodeOfRoot.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict';
-
-const { isRoot } = require('./typeGuards');
-
-/**
- * @param {import('postcss').Node} node
- * @returns {boolean}
- */
-module.exports = function(node) {
- if (isRoot(node)) return false;
-
- const parentNode = node.parent;
-
- return isRoot(parentNode) && node === parentNode.first;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isKeyframeRule.js b/assets/node_modules/stylelint/lib/utils/isKeyframeRule.js
deleted file mode 100644
index 89bc372..0000000
--- a/assets/node_modules/stylelint/lib/utils/isKeyframeRule.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict';
-
-/**
- * Check if a rule is a keyframe one
- *
- * @param {import('postcss').Rule} rule
- * @returns {boolean}
- */
-module.exports = function(rule) {
- const parent = rule.parent;
-
- return parent.type === 'atrule' && parent.name.toLowerCase() === 'keyframes';
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isKeyframeSelector.js b/assets/node_modules/stylelint/lib/utils/isKeyframeSelector.js
deleted file mode 100644
index 286a34f..0000000
--- a/assets/node_modules/stylelint/lib/utils/isKeyframeSelector.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict';
-
-const keywordSets = require('../reference/keywordSets');
-
-/**
- * Check whether a string is a keyframe selector.
- *
- * @param {string} selector
- * @returns {boolean}
- */
-module.exports = function(selector) {
- if (keywordSets.keyframeSelectorKeywords.has(selector)) {
- return true;
- }
-
- // Percentages
- if (/^(?:\d+\.?\d*|\d*\.?\d+)%$/.test(selector)) {
- return true;
- }
-
- return false;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isLessVariable.js b/assets/node_modules/stylelint/lib/utils/isLessVariable.js
deleted file mode 100644
index aa32044..0000000
--- a/assets/node_modules/stylelint/lib/utils/isLessVariable.js
+++ /dev/null
@@ -1,12 +0,0 @@
-'use strict';
-
-const hasBlock = require('./hasBlock');
-
-/**
- * @param {import('postcss').AtRule} atRule
- * @returns {boolean}
- */
-module.exports = function(atRule) {
- // @ts-ignore TODO TYPES LESS property variable does not exists in types
- return (atRule.type === 'atrule' && atRule.variable && !hasBlock(atRule)) || false;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isLogicalCombination.js b/assets/node_modules/stylelint/lib/utils/isLogicalCombination.js
deleted file mode 100644
index cd92885..0000000
--- a/assets/node_modules/stylelint/lib/utils/isLogicalCombination.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict';
-
-/**
- * Check whether a node is logical combination (`:not`, `:has`, `:matches`)
- *
- * @param {import('postcss-selector-parser').Pseudo} node postcss-selector-parser node (of type pseudo)
- * @return {boolean} If `true`, the combination is logical
- */
-module.exports = function isLogicalCombination(node) {
- if (node.type === 'pseudo') {
- switch (node.value) {
- case ':not':
- case ':has':
- case ':matches':
- return true;
- default:
- return false;
- }
- }
-
- return false;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isMap.js b/assets/node_modules/stylelint/lib/utils/isMap.js
deleted file mode 100644
index 57bfec5..0000000
--- a/assets/node_modules/stylelint/lib/utils/isMap.js
+++ /dev/null
@@ -1,44 +0,0 @@
-'use strict';
-
-/** @typedef {import('postcss-value-parser').Node} ValueNode */
-
-/**
- * @param {ValueNode | undefined} valueNode
- * @returns {boolean}
- */
-module.exports = function(valueNode) {
- if (!valueNode) {
- return false;
- }
-
- if (valueNode.type !== 'function' || !valueNode.nodes || valueNode.value) {
- return false;
- }
-
- // It's necessary to remove comments and spaces if they are present
- const cleanNodes = valueNode.nodes.filter(
- (node) => node.type !== 'comment' && node.type !== 'space',
- );
-
- // Map without comments and spaces will have the structure like $map (prop: value, prop2: value)
- // ↑ ↑ ↑ ↑
- // 0 1 2 3
- if (cleanNodes[0] && cleanNodes[0].type !== 'word' && cleanNodes[0].type !== 'string') {
- return false;
- }
-
- if (cleanNodes[1] && cleanNodes[1].value !== ':') {
- return false;
- }
-
- // There is no need to check type or value of this node since it could be anything
- if (!cleanNodes[2]) {
- return false;
- }
-
- if (cleanNodes[3] && cleanNodes[3].value !== ',') {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isMathFunction.js b/assets/node_modules/stylelint/lib/utils/isMathFunction.js
deleted file mode 100644
index 33fe627..0000000
--- a/assets/node_modules/stylelint/lib/utils/isMathFunction.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict';
-
-const MATH_FUNCTIONS = require('../reference/mathFunctions');
-
-/**
- * Check whether a node is math function
- *
- * @param {import('postcss-value-parser').Node} node postcss-value-parser node
- * @return {boolean} If `true`, the node is math function
- */
-module.exports = function isMathFunction(node) {
- return node.type === 'function' && MATH_FUNCTIONS.includes(node.value.toLowerCase());
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isNumbery.js b/assets/node_modules/stylelint/lib/utils/isNumbery.js
deleted file mode 100644
index 13b1744..0000000
--- a/assets/node_modules/stylelint/lib/utils/isNumbery.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict';
-
-/**
- * Check whether it's a number or a number-like string:
- * i.e. when coerced to a number it == itself.
- *
- * @param {string | number} value
- */
-module.exports = function(value) {
- /* eslint-disable eqeqeq */
- return value.toString().trim().length !== 0 && Number(value) == value;
- /* eslint-enable eqeqeq */
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isOnlyWhitespace.js b/assets/node_modules/stylelint/lib/utils/isOnlyWhitespace.js
deleted file mode 100644
index adb0649..0000000
--- a/assets/node_modules/stylelint/lib/utils/isOnlyWhitespace.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict';
-
-const isWhitespace = require('./isWhitespace');
-
-/**
- * Returns a Boolean indicating whether the the input string is only whitespace.
- *
- * @param {string} input
- * @returns {boolean}
- */
-module.exports = function(input) {
- let isOnlyWhitespace = true;
-
- for (let i = 0, l = input.length; i < l; i++) {
- if (!isWhitespace(input[i])) {
- isOnlyWhitespace = false;
- break;
- }
- }
-
- return isOnlyWhitespace;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isRangeContextMediaFeature.js b/assets/node_modules/stylelint/lib/utils/isRangeContextMediaFeature.js
deleted file mode 100644
index 9a19998..0000000
--- a/assets/node_modules/stylelint/lib/utils/isRangeContextMediaFeature.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-
-/**
- * Check whether a media feature is a range context one
- *
- * @param {string} mediaFeature feature
- * @return {boolean} If `true`, media feature is a range context one
- */
-module.exports = function(mediaFeature) {
- return mediaFeature.includes('=') || mediaFeature.includes('<') || mediaFeature.includes('>');
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isSharedLineComment.js b/assets/node_modules/stylelint/lib/utils/isSharedLineComment.js
deleted file mode 100644
index 1cfda15..0000000
--- a/assets/node_modules/stylelint/lib/utils/isSharedLineComment.js
+++ /dev/null
@@ -1,53 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const getNextNonSharedLineCommentNode = require('./getNextNonSharedLineCommentNode');
-const getPreviousNonSharedLineCommentNode = require('./getPreviousNonSharedLineCommentNode');
-
-/** @typedef {import('postcss').Node} PostcssNode */
-
-/**
- *
- * @param {PostcssNode | void} a
- * @param {PostcssNode | void} b
- */
-function nodesShareLines(a, b) {
- return _.get(a, 'source.end.line') === _.get(b, 'source.start.line');
-}
-
-/**
- * @param {PostcssNode} node
- * @returns {boolean}
- */
-module.exports = function isSharedLineComment(node) {
- if (node.type !== 'comment') {
- return false;
- }
-
- const previousNonSharedLineCommentNode = getPreviousNonSharedLineCommentNode(node);
-
- if (nodesShareLines(previousNonSharedLineCommentNode, node)) {
- return true;
- }
-
- const nextNonSharedLineCommentNode = getNextNonSharedLineCommentNode(node);
-
- if (nextNonSharedLineCommentNode && nodesShareLines(node, nextNonSharedLineCommentNode)) {
- return true;
- }
-
- const parentNode = node.parent;
-
- // It's a first child and located on the same line as block start
- if (
- parentNode !== undefined &&
- parentNode.type !== 'root' &&
- parentNode.index(node) === 0 &&
- node.raws.before !== undefined &&
- !node.raws.before.includes('\n')
- ) {
- return true;
- }
-
- return false;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isSingleLineString.js b/assets/node_modules/stylelint/lib/utils/isSingleLineString.js
deleted file mode 100644
index c63d634..0000000
--- a/assets/node_modules/stylelint/lib/utils/isSingleLineString.js
+++ /dev/null
@@ -1,12 +0,0 @@
-'use strict';
-
-/**
- * Check if a string is a single line (i.e. does not contain
- * any newline characters).
- *
- * @param {string} input
- * @return {boolean}
- */
-module.exports = function(input) {
- return !/[\n\r]/.test(input);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxAtRule.js b/assets/node_modules/stylelint/lib/utils/isStandardSyntaxAtRule.js
deleted file mode 100644
index 561b1f9..0000000
--- a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxAtRule.js
+++ /dev/null
@@ -1,31 +0,0 @@
-'use strict';
-
-/**
- * Check whether a at-rule is standard
- *
- * @param {import('postcss').AtRule} atRule postcss at-rule node
- * @return {boolean} If `true`, the declaration is standard
- */
-module.exports = function(atRule) {
- // Ignore scss `@content` inside mixins
- if (!atRule.nodes && atRule.params === '') {
- return false;
- }
-
- // Ignore Less mixins
- // @ts-ignore TODO TYPES Is this property really exists?
- if (atRule.mixin) {
- return false;
- }
-
- // Ignore Less detached ruleset `@detached-ruleset: { background: red; }; .top { @detached-ruleset(); }`
- if (
- // @ts-ignore TODO TYPES Is this property really exists?
- atRule.variable ||
- (!atRule.nodes && atRule.raws.afterName === '' && atRule.params[0] === '(')
- ) {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxCombinator.js b/assets/node_modules/stylelint/lib/utils/isStandardSyntaxCombinator.js
deleted file mode 100644
index 3d99998..0000000
--- a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxCombinator.js
+++ /dev/null
@@ -1,32 +0,0 @@
-'use strict';
-
-/**
- * Check whether a combinator is standard
- *
- * @param {import('postcss-selector-parser').Combinator} node postcss-selector-parser node (of type combinator)
- * @return {boolean} If `true`, the combinator is standard
- */
-module.exports = function(node) {
- // Ghost descendant combinators around reference combinators like `/deep/`
- // postcss-selector-parser parsers references combinators as tag selectors surrounded
- // by descendant combinators
- const prev = node.prev();
- const next = node.next();
-
- if (
- (prev &&
- prev.type === 'tag' &&
- typeof prev.value === 'string' &&
- prev.value.startsWith('/') &&
- prev.value.endsWith('/')) ||
- (next &&
- next.type === 'tag' &&
- typeof next.value === 'string' &&
- next.value.startsWith('/') &&
- next.value.endsWith('/'))
- ) {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxDeclaration.js b/assets/node_modules/stylelint/lib/utils/isStandardSyntaxDeclaration.js
deleted file mode 100644
index 843ffd1..0000000
--- a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxDeclaration.js
+++ /dev/null
@@ -1,61 +0,0 @@
-'use strict';
-
-const { isRoot } = require('./typeGuards');
-
-/**
- * @param {string} [lang]
- */
-function isStandardSyntaxLang(lang) {
- return lang && (lang === 'css' || lang === 'custom-template' || lang === 'template-literal');
-}
-
-/**
- * Check whether a declaration is standard
- *
- * @param {import('postcss').Declaration} decl
- */
-module.exports = function(decl) {
- const prop = decl.prop;
- const parent = decl.parent;
-
- // Declarations belong in a declaration block or standard CSS source
- if (
- isRoot(parent) &&
- parent.source &&
- !isStandardSyntaxLang(
- /** @type {import('postcss').NodeSource & {lang?: string}} */ (parent.source).lang,
- )
- ) {
- return false;
- }
-
- // Sass var (e.g. $var: x), nested list (e.g. $list: (x)) or nested map (e.g. $map: (key:value))
- if (prop[0] === '$') {
- return false;
- }
-
- // Less var (e.g. @var: x), but exclude variable interpolation (e.g. @{var})
- if (prop[0] === '@' && prop[1] !== '{') {
- return false;
- }
-
- // Sass nested properties (e.g. border: { style: solid; color: red; })
- if (
- // @ts-ignore TODO TYPES selector does not exists
- parent.selector &&
- // @ts-ignore
- parent.selector[parent.selector.length - 1] === ':' &&
- // @ts-ignore
- parent.selector.substring(0, 2) !== '--'
- ) {
- return false;
- }
-
- // Less &:extend
- // @ts-ignore TODO TYPES extend does not exists
- if (decl.extend) {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxFunction.js b/assets/node_modules/stylelint/lib/utils/isStandardSyntaxFunction.js
deleted file mode 100644
index 9d90bdf..0000000
--- a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxFunction.js
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict';
-
-/**
- * Check whether a function is standard
- *
- * @param {import('postcss-value-parser').Node} node
- * @returns {boolean}
- */
-module.exports = function(node) {
- // Function nodes without names are things in parentheses like Sass lists
- if (!node.value) {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxMediaFeature.js b/assets/node_modules/stylelint/lib/utils/isStandardSyntaxMediaFeature.js
deleted file mode 100644
index c9c62cd..0000000
--- a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxMediaFeature.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict';
-
-const hasInterpolation = require('../utils/hasInterpolation');
-
-/**
- * Check whether a media feature is standard
- *
- * @param {string} mediaFeature
- * @returns {boolean}
- */
-module.exports = function(mediaFeature) {
- // Remove outside parens
- mediaFeature = mediaFeature.slice(1, -1);
-
- // Parentheticals used for non-standard operations e.g. ($var - 10)
- if (mediaFeature.includes('(')) {
- return false;
- }
-
- // SCSS or Less interpolation
- if (hasInterpolation(mediaFeature)) {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxMediaFeatureName.js b/assets/node_modules/stylelint/lib/utils/isStandardSyntaxMediaFeatureName.js
deleted file mode 100644
index e682d25..0000000
--- a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxMediaFeatureName.js
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict';
-
-/**
- * Check whether a media feature name is standard
- *
- * @param {string} mediaFeatureName
- * @returns {boolean}
- */
-module.exports = function(mediaFeatureName) {
- // SCSS interpolation
- if (/#{.+?}|\$.+?/.test(mediaFeatureName)) {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxProperty.js b/assets/node_modules/stylelint/lib/utils/isStandardSyntaxProperty.js
deleted file mode 100644
index 92cfef5..0000000
--- a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxProperty.js
+++ /dev/null
@@ -1,33 +0,0 @@
-'use strict';
-
-const hasInterpolation = require('../utils/hasInterpolation');
-
-/**
- * Check whether a property is standard
- *
- * @param {string} property
- * @returns {boolean}
- */
-module.exports = function(property) {
- // SCSS var (e.g. $var: x), list (e.g. $list: (x)) or map (e.g. $map: (key:value))
- if (property.startsWith('$')) {
- return false;
- }
-
- // Less var (e.g. @var: x)
- if (property.startsWith('@')) {
- return false;
- }
-
- // Less append property value with space (e.g. transform+_: scale(2))
- if (property.endsWith('+') || property.endsWith('+_')) {
- return false;
- }
-
- // SCSS or Less interpolation
- if (hasInterpolation(property)) {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxRule.js b/assets/node_modules/stylelint/lib/utils/isStandardSyntaxRule.js
deleted file mode 100644
index 7128c80..0000000
--- a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxRule.js
+++ /dev/null
@@ -1,66 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-const isCustomPropertySet = require('../utils/isCustomPropertySet');
-const isStandardSyntaxSelector = require('../utils/isStandardSyntaxSelector');
-
-/**
- * Check whether a Node is a standard rule
- *
- * @param {import('postcss').Rule} rule
- * @returns {boolean}
- */
-module.exports = function(rule) {
- // Get full selector
- const selector = _.get(rule, 'raws.selector.raw', rule.selector);
-
- if (!isStandardSyntaxSelector(rule.selector)) {
- return false;
- }
-
- // Custom property set (e.g. --custom-property-set: {})
- if (isCustomPropertySet(rule)) {
- return false;
- }
-
- // Called Less mixin (e.g. a { .mixin() })
- // @ts-ignore TODO TYPES support LESS and SASS types somehow
- if (rule.mixin) {
- return false;
- }
-
- // Less detached rulesets
- if (selector.startsWith('@') && selector.endsWith(':')) {
- return false;
- }
-
- // Ignore Less &:extend rule
- // @ts-ignore TODO TYPES support LESS and SASS types somehow
- if (rule.extend) {
- return false;
- }
-
- // Ignore mixin or &:extend rule
- // https://github.com/shellscape/postcss-less/blob/master/lib/less-parser.js#L52
- // @ts-ignore TODO TYPES support LESS and SASS types somehow
- if (rule.params && rule.params[0]) {
- return false;
- }
-
- // Non-outputting Less mixin definition (e.g. .mixin() {})
- if (selector.endsWith(')') && !selector.includes(':')) {
- return false;
- }
-
- // Less guards
- if (/when\s+(not\s+)*\(/.test(selector)) {
- return false;
- }
-
- // Ignore Scss nested properties
- if (selector.endsWith(':')) {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxSelector.js b/assets/node_modules/stylelint/lib/utils/isStandardSyntaxSelector.js
deleted file mode 100644
index 9104bf5..0000000
--- a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxSelector.js
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict';
-
-const hasInterpolation = require('../utils/hasInterpolation');
-
-/**
- * Check whether a selector is standard
- *
- * @param {string} selector
- * @returns {boolean}
- */
-module.exports = function(selector) {
- // SCSS or Less interpolation
- if (hasInterpolation(selector)) {
- return false;
- }
-
- // SCSS placeholder selectors
- if (selector.startsWith('%')) {
- return false;
- }
-
- // Less :extend()
- if (/:extend(\(.*?\))?/.test(selector)) {
- return false;
- }
-
- // Less mixin with resolved nested selectors (e.g. .foo().bar or .foo(@a, @b)[bar])
- if (/\.[a-z0-9-_]+\(.*\).+/i.test(selector)) {
- return false;
- }
-
- // ERB template tags
- if (selector.includes('<%') || selector.includes('%>')) {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxTypeSelector.js b/assets/node_modules/stylelint/lib/utils/isStandardSyntaxTypeSelector.js
deleted file mode 100644
index f4e6fbc..0000000
--- a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxTypeSelector.js
+++ /dev/null
@@ -1,51 +0,0 @@
-'use strict';
-
-const keywordSets = require('../reference/keywordSets');
-
-/**
- * Check whether a type selector is standard
- *
- * @param {import('postcss-selector-parser').Tag} node postcss-selector-parser node (of type tag)
- * @return {boolean} If `true`, the type selector is standard
- */
-module.exports = function(node) {
- // postcss-selector-parser includes the arguments to nth-child() functions
- // as "tags", so we need to ignore them ourselves.
- // The fake-tag's "parent" is actually a selector node, whose parent
- // should be the :nth-child pseudo node.
- if (!node.parent || !node.parent.parent) {
- return false;
- }
-
- const _node$parent$parent = node.parent.parent;
- const parentType = _node$parent$parent.type;
- const parentValue = _node$parent$parent.value;
-
- if (parentValue) {
- const normalisedParentName = parentValue.toLowerCase().replace(/:+/, '');
-
- if (
- parentType === 'pseudo' &&
- (keywordSets.aNPlusBNotationPseudoClasses.has(normalisedParentName) ||
- keywordSets.linguisticPseudoClasses.has(normalisedParentName))
- ) {
- return false;
- }
- }
-
- // &-bar is a nesting selector combined with a suffix
- if (node.prev() && node.prev().type === 'nesting') {
- return false;
- }
-
- if (node.value.startsWith('%')) {
- return false;
- }
-
- // Reference combinators like `/deep/`
- if (node.value.startsWith('/') && node.value.endsWith('/')) {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxUrl.js b/assets/node_modules/stylelint/lib/utils/isStandardSyntaxUrl.js
deleted file mode 100644
index 521719a..0000000
--- a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxUrl.js
+++ /dev/null
@@ -1,48 +0,0 @@
-'use strict';
-
-const hasLessInterpolation = require('../utils/hasLessInterpolation');
-const hasPsvInterpolation = require('../utils/hasPsvInterpolation');
-const hasScssInterpolation = require('../utils/hasScssInterpolation');
-const hasTplInterpolation = require('../utils/hasTplInterpolation');
-
-/**
- * Check whether a URL is standard
- *
- * @param {string} url
- * @returns {boolean}
- */
-module.exports = function(url) {
- if (url.length === 0) {
- return true;
- }
-
- // Sass interpolation works anywhere
- if (hasScssInterpolation(url) || hasTplInterpolation(url) || hasPsvInterpolation(url)) {
- return false;
- }
-
- // Inside `'` and `"` work only LESS interpolation
- if ((url.startsWith(`'`) && url.endsWith(`'`)) || (url.startsWith(`"`) && url.endsWith(`"`))) {
- if (hasLessInterpolation(url)) {
- return false;
- }
-
- return true;
- }
-
- // Less variable works only at the beginning
- // Check is less variable, allow use '@url/some/path'
- // https://github.com/less/less.js/blob/3.x/lib/less/parser/parser.js#L547
- if (url.startsWith('@') && /^@@?[\w-]+$/.test(url)) {
- return false;
- }
-
- // In url without quotes scss variable can be everywhere
- // But in this case it is allowed to use only specific characters
- // Also forbidden "/" at the end of url
- if (url.includes('$') && /^[$\sA-Za-z0-9+-/*_'"/]+$/.test(url) && !url.endsWith('/')) {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxValue.js b/assets/node_modules/stylelint/lib/utils/isStandardSyntaxValue.js
deleted file mode 100644
index 421569b..0000000
--- a/assets/node_modules/stylelint/lib/utils/isStandardSyntaxValue.js
+++ /dev/null
@@ -1,40 +0,0 @@
-'use strict';
-
-const hasInterpolation = require('../utils/hasInterpolation');
-
-/**
- * Check whether a value is standard
- *
- * @param {string} value
- * @returns {boolean}
- */
-module.exports = function(value) {
- let normalizedValue = value;
-
- // Ignore operators before variables (example -$variable)
- if (/^[-+*/]/.test(value[0])) {
- normalizedValue = normalizedValue.slice(1);
- }
-
- // SCSS variable (example $variable)
- if (normalizedValue.startsWith('$')) {
- return false;
- }
-
- // SCSS namespace (example namespace.$variable)
- if (/^.+\.\$/.test(value)) {
- return false;
- }
-
- // Less variable
- if (normalizedValue.startsWith('@')) {
- return false;
- }
-
- // SCSS or Less interpolation
- if (hasInterpolation(normalizedValue)) {
- return false;
- }
-
- return true;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isValidFontSize.js b/assets/node_modules/stylelint/lib/utils/isValidFontSize.js
deleted file mode 100644
index b599e02..0000000
--- a/assets/node_modules/stylelint/lib/utils/isValidFontSize.js
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict';
-
-const keywordSets = require('../reference/keywordSets');
-const valueParser = require('postcss-value-parser');
-
-/**
- * Check if a word is a font-size value.
- *
- * @param {string} word
- * @returns {boolean}
- */
-module.exports = function(word) {
- if (!word) {
- return false;
- }
-
- if (keywordSets.fontSizeKeywords.has(word)) {
- return true;
- }
-
- const numberUnit = valueParser.unit(word);
-
- if (!numberUnit) {
- return false;
- }
-
- const unit = numberUnit.unit;
-
- if (unit === '%') {
- return true;
- }
-
- if (keywordSets.lengthUnits.has(unit.toLowerCase())) {
- return true;
- }
-
- return false;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isValidHex.js b/assets/node_modules/stylelint/lib/utils/isValidHex.js
deleted file mode 100644
index 622690e..0000000
--- a/assets/node_modules/stylelint/lib/utils/isValidHex.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-
-/**
- * Check if a value is a valid 3, 4, 6 or 8 digit hex
- *
- * @param {string} value
- * @returns {boolean}
- */
-module.exports = function(value) {
- return /^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(value);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isVariable.js b/assets/node_modules/stylelint/lib/utils/isVariable.js
deleted file mode 100644
index 2b7fe72..0000000
--- a/assets/node_modules/stylelint/lib/utils/isVariable.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-
-/**
- * Check whether a word is a variable i.e var(--custom-property).
- *
- * @param {string} word
- * @returns {boolean}
- */
-module.exports = function(word) {
- return word.toLowerCase().startsWith('var(');
-};
diff --git a/assets/node_modules/stylelint/lib/utils/isWhitespace.js b/assets/node_modules/stylelint/lib/utils/isWhitespace.js
deleted file mode 100644
index 251a9fd..0000000
--- a/assets/node_modules/stylelint/lib/utils/isWhitespace.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-
-/**
- * Check if a character is whitespace.
- *
- * @param {string} char
- * @returns {boolean}
- */
-module.exports = function(char) {
- return [' ', '\n', '\t', '\r', '\f'].includes(char);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/matchesStringOrRegExp.js b/assets/node_modules/stylelint/lib/utils/matchesStringOrRegExp.js
deleted file mode 100644
index 7c6a79a..0000000
--- a/assets/node_modules/stylelint/lib/utils/matchesStringOrRegExp.js
+++ /dev/null
@@ -1,85 +0,0 @@
-'use strict';
-
-/**
- * Compares a string to a second value that, if it fits a certain convention,
- * is converted to a regular expression before the comparison.
- * If it doesn't fit the convention, then two strings are compared.
- *
- * Any strings starting and ending with `/` are interpreted
- * as regular expressions.
- *
- * @param {string} input
- * @param {string | RegExp | Array<string | RegExp>} comparison
- *
- * @returns {false | {match: string, pattern: (string | RegExp) }}
- */
-module.exports = function matchesStringOrRegExp(input, comparison) {
- if (!Array.isArray(input)) {
- return testAgainstStringOrRegExpOrArray(input, comparison);
- }
-
- for (const inputItem of input) {
- const testResult = testAgainstStringOrRegExpOrArray(inputItem, comparison);
-
- if (testResult) {
- return testResult;
- }
- }
-
- return false;
-};
-
-/**
- * @param {string} value
- * @param {string | RegExp | Array<string | RegExp>} comparison
- */
-function testAgainstStringOrRegExpOrArray(value, comparison) {
- if (!Array.isArray(comparison)) {
- return testAgainstStringOrRegExp(value, comparison);
- }
-
- for (const comparisonItem of comparison) {
- const testResult = testAgainstStringOrRegExp(value, comparisonItem);
-
- if (testResult) {
- return testResult;
- }
- }
-
- return false;
-}
-
-/**
- * @param {string} value
- * @param {string | RegExp} comparison
- */
-function testAgainstStringOrRegExp(value, comparison) {
- // If it's a RegExp, test directly
- if (comparison instanceof RegExp) {
- return comparison.test(value) ? { match: value, pattern: comparison } : false;
- }
-
- // Check if it's RegExp in a string
- const firstComparisonChar = comparison[0];
- const lastComparisonChar = comparison[comparison.length - 1];
- const secondToLastComparisonChar = comparison[comparison.length - 2];
-
- const comparisonIsRegex =
- firstComparisonChar === '/' &&
- (lastComparisonChar === '/' ||
- (secondToLastComparisonChar === '/' && lastComparisonChar === 'i'));
-
- const hasCaseInsensitiveFlag = comparisonIsRegex && lastComparisonChar === 'i';
-
- // If so, create a new RegExp from it
- if (comparisonIsRegex) {
- const valueMatches = hasCaseInsensitiveFlag
- ? new RegExp(comparison.slice(1, -2), 'i').test(value)
- : new RegExp(comparison.slice(1, -1)).test(value);
-
- return valueMatches ? { match: value, pattern: comparison } : false;
- }
-
- // Otherwise, it's a string. Do a strict comparison
- return value === comparison ? { match: value, pattern: comparison } : false;
-}
diff --git a/assets/node_modules/stylelint/lib/utils/nextNonCommentNode.js b/assets/node_modules/stylelint/lib/utils/nextNonCommentNode.js
deleted file mode 100644
index ac4d074..0000000
--- a/assets/node_modules/stylelint/lib/utils/nextNonCommentNode.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict';
-
-/** @typedef {import('postcss').Node} PostcssNode */
-
-/**
- * Get the next non-comment node in a PostCSS AST
- * at or after a given node.
- *
- * @param {PostcssNode | void} startNode
- * @returns {PostcssNode | null}
- */
-module.exports = function nextNonCommentNode(startNode) {
- if (!startNode || !startNode.next) return null;
-
- if (startNode.type === 'comment') {
- return nextNonCommentNode(startNode.next());
- }
-
- return startNode;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/noFilesFoundError.js b/assets/node_modules/stylelint/lib/utils/noFilesFoundError.js
deleted file mode 100644
index e3300be..0000000
--- a/assets/node_modules/stylelint/lib/utils/noFilesFoundError.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict';
-
-class NoFilesFoundError extends Error {
- /**
- * @param {string|string[]} fileList
- */
- constructor(fileList) {
- super();
-
- if (typeof fileList === 'string') {
- fileList = [fileList];
- }
-
- const pattern = fileList.filter((i) => !i.startsWith('!')).join(', ');
-
- this.message = `No files matching the pattern "${pattern}" were found.`;
- }
-}
-
-module.exports = NoFilesFoundError;
diff --git a/assets/node_modules/stylelint/lib/utils/nodeContextLookup.js b/assets/node_modules/stylelint/lib/utils/nodeContextLookup.js
deleted file mode 100644
index 9d89549..0000000
--- a/assets/node_modules/stylelint/lib/utils/nodeContextLookup.js
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict';
-
-/**
- * Create a collection of Maps that serve to contextualize a given node.
- * This is useful to ensure that you only compare nodes that share a certain
- * context.
- *
- * All nodes are initially contextualized by their input source.
- * From there, you can contextualize them however you want.
- *
- * For a usage example, see `selector-no-descending-specificity`.
- */
-module.exports = function() {
- const contextMap = new Map();
-
- return {
- /**
- * @param {import('postcss').Node} node
- */
- getContext(node, /** @type {any[]} */ ...subContexts) {
- // TODO TYPES node.source possible undefined
- const nodeSource = /** @type {import('postcss').NodeSource} */ (node.source).input.from;
- const baseContext = creativeGetMap(contextMap, nodeSource);
-
- return subContexts.reduce((result, context) => {
- return creativeGetMap(result, context);
- }, baseContext);
- },
- };
-};
-
-/**
- * TODO TYPES
- * @param {Map<any, any>} someMap
- * @param {any} someThing
- */
-function creativeGetMap(someMap, someThing) {
- if (!someMap.has(someThing)) {
- someMap.set(someThing, new Map());
- }
-
- return someMap.get(someThing);
-}
diff --git a/assets/node_modules/stylelint/lib/utils/optionsMatches.js b/assets/node_modules/stylelint/lib/utils/optionsMatches.js
deleted file mode 100644
index c0597e6..0000000
--- a/assets/node_modules/stylelint/lib/utils/optionsMatches.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict';
-
-const matchesStringOrRegExp = require('./matchesStringOrRegExp');
-
-/**
- * Check if an options object's propertyName contains a user-defined string or
- * regex that matches the passed in input.
- *
- * @param {{ [x: string]: any; }} options
- * @param {string} propertyName
- * @param {string} input
- *
- * @returns {boolean}
- */
-module.exports = function optionsMatches(options, propertyName, input) {
- return Boolean(
- options &&
- options[propertyName] &&
- typeof input === 'string' &&
- matchesStringOrRegExp(input, options[propertyName]),
- );
-};
diff --git a/assets/node_modules/stylelint/lib/utils/parseCalcExpression/index.js b/assets/node_modules/stylelint/lib/utils/parseCalcExpression/index.js
deleted file mode 100644
index 9d658bc..0000000
--- a/assets/node_modules/stylelint/lib/utils/parseCalcExpression/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-
-// To generate parser.js run the following command in the current directory:
-//
-// npx jison-gho parser.jison -o parser.js
-
-const parse = require('./parser').parse;
-
-module.exports = function parseCalcExpression(exp) {
- return parse(exp);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/parseCalcExpression/parser.jison b/assets/node_modules/stylelint/lib/utils/parseCalcExpression/parser.jison
deleted file mode 100644
index 239ea5b..0000000
--- a/assets/node_modules/stylelint/lib/utils/parseCalcExpression/parser.jison
+++ /dev/null
@@ -1,172 +0,0 @@
-/* description: Parses expressions. */
-
-%options case-insensitive
-
-/* lexical grammar */
-%lex
-%%
-\s+ /* skip whitespace */
-
-(\-(webkit|moz)\-)?calc\b return 'CALC';
-
-[a-z][a-z0-9-]*\s*\((?:(?:\"(?:\\.|[^\"\\])*\"|\'(?:\\.|[^\'\\])*\')|\([^)]*\)|[^\(\)]*)*\) return 'FUNCTION';
-
-"*" return 'MUL';
-"/" return 'DIV';
-"+" return 'ADD';
-"-" return 'SUB';
-
-([0-9]+("."[0-9]+)?|"."[0-9]+)em\b return 'LENGTH'; // em
-([0-9]+("."[0-9]+)?|"."[0-9]+)ex\b return 'LENGTH'; // ex
-([0-9]+("."[0-9]+)?|"."[0-9]+)ch\b return 'LENGTH'; // ch
-([0-9]+("."[0-9]+)?|"."[0-9]+)rem\b return 'LENGTH'; // rem
-([0-9]+("."[0-9]+)?|"."[0-9]+)vw\b return 'LENGTH'; // vw
-([0-9]+("."[0-9]+)?|"."[0-9]+)vh\b return 'LENGTH'; // vh
-([0-9]+("."[0-9]+)?|"."[0-9]+)vmin\b return 'LENGTH'; // vmin
-([0-9]+("."[0-9]+)?|"."[0-9]+)vmax\b return 'LENGTH'; // vmax
-([0-9]+("."[0-9]+)?|"."[0-9]+)vm\b return 'LENGTH'; // vm (non-standard name)
-([0-9]+("."[0-9]+)?|"."[0-9]+)px\b return 'LENGTH'; // px
-([0-9]+("."[0-9]+)?|"."[0-9]+)mm\b return 'LENGTH'; // mm
-([0-9]+("."[0-9]+)?|"."[0-9]+)cm\b return 'LENGTH'; // cm
-([0-9]+("."[0-9]+)?|"."[0-9]+)in\b return 'LENGTH'; // in
-([0-9]+("."[0-9]+)?|"."[0-9]+)pt\b return 'LENGTH'; // pt
-([0-9]+("."[0-9]+)?|"."[0-9]+)pc\b return 'LENGTH'; // pc
-([0-9]+("."[0-9]+)?|"."[0-9]+)Q\b return 'LENGTH'; // Q
-([0-9]+("."[0-9]+)?|"."[0-9]+)fr\b return 'LENGTH'; // fr
-([0-9]+("."[0-9]+)?|"."[0-9]+)deg\b return 'ANGLE'; // deg
-([0-9]+("."[0-9]+)?|"."[0-9]+)grad\b return 'ANGLE'; // grad
-([0-9]+("."[0-9]+)?|"."[0-9]+)turn\b return 'ANGLE'; // turn
-([0-9]+("."[0-9]+)?|"."[0-9]+)rad\b return 'ANGLE'; // rad
-([0-9]+("."[0-9]+)?|"."[0-9]+)s\b return 'TIME'; // s
-([0-9]+("."[0-9]+)?|"."[0-9]+)ms\b return 'TIME'; // ms
-([0-9]+("."[0-9]+)?|"."[0-9]+)Hz\b return 'FREQ'; // Hz
-([0-9]+("."[0-9]+)?|"."[0-9]+)kHz\b return 'FREQ'; // kHz
-([0-9]+("."[0-9]+)?|"."[0-9]+)dpi\b return 'RES'; // dpi
-([0-9]+("."[0-9]+)?|"."[0-9]+)dpcm\b return 'RES'; // dpcm
-([0-9]+("."[0-9]+)?|"."[0-9]+)dppx\b return 'RES'; // dppm
-([0-9]+("."[0-9]+)?|"."[0-9]+)\% return 'PERCENTAGE';
-([0-9]+("."[0-9]+)?|"."[0-9]+)\b return 'NUMBER';
-
-"(" return 'LPAREN';
-")" return 'RPAREN';
-
-#\{([\s\S]*?)\} return 'UNKNOWN'; // scss interpolation
-@\{([\s\S]*?)\} return 'UNKNOWN'; // less interpolation
-
-\S[^\s()*/+-]* return 'UNKNOWN';
-
-<<EOF>> return 'EOF';
-
-/lex
-
-%left ADD SUB
-%left MUL DIV
-%left UPREC
-
-
-%start expression
-
-%%
-
-expression
- : math_expression EOF { return $1; }
- ;
-
- math_expression
- : CALC LPAREN math_expression RPAREN {
- $$ = $3;
- $$.source.start = { index: @1.range[0] };
- $$.source.end = { index: @4.range[1] };
- }
- | math_expression ADD math_expression {
- $$ = {
- type: 'MathExpression', operator: $2, left: $1, right: $3,
- source: {
- start: $1.source.start, end: $3.source.end,
- operator: { start: { index: @2.range[0] }, end: { index: @2.range[1] } }
- }
- };
- }
- | math_expression SUB math_expression {
- $$ = {
- type: 'MathExpression', operator: $2, left: $1, right: $3,
- source: {
- start: $1.source.start, end: $3.source.end,
- operator: { start: { index: @2.range[0] }, end: { index: @2.range[1] } }
- }
- };
- }
- | math_expression MUL math_expression {
- $$ = {
- type: 'MathExpression', operator: $2, left: $1, right: $3,
- source: {
- start: $1.source.start, end: $3.source.end,
- operator: { start: { index: @2.range[0] }, end: { index: @2.range[1] } }
- }
- };
- }
- | math_expression DIV math_expression {
- $$ = {
- type: 'MathExpression', operator: $2, left: $1, right: $3,
- source: {
- start: $1.source.start, end: $3.source.end,
- operator: { start: { index: @2.range[0] }, end: { index: @2.range[1] } }
- }
- };
- }
- | SUB math_expression %prec UPREC {
- if (@1.range[1] !== $2.source.start.index) {
- throw new Error('Unexpected spaces was found between sign and value');
- }
- if (typeof $2.value !== 'number') {
- throw new Error('Unexpected sign');
- }
- if ($2.sign) {
- throw new Error('Unexpected continuous sign');
- }
- $$ = $2;
- $$.sign = '-'
- $$.value = -$2.value;
- $$.source.start.index = @1.range[0];
- }
- | ADD math_expression %prec UPREC {
- if (@1.range[1] !== $2.source.start.index) {
- throw new Error('Unexpected spaces was found between sign and value');
- }
- if (typeof $2.value !== 'number') {
- throw new Error('Unexpected sign');
- }
- if ($2.sign) {
- throw new Error('Unexpected continuous sign');
- }
- $$ = $2;
- $$.sign = '+'
- $$.source.start.index = @1.range[0];
- }
- | LPAREN math_expression RPAREN {
- $$ = $2;
- $$.source.start = { index: @1.range[0] };
- $$.source.end = { index: @3.range[1] };
- }
- | function { $$ = $1; }
- | css_value { $$ = $1; }
- | value { $$ = $1; }
- ;
-
- value
- : NUMBER { $$ = { type: 'Value', value: parseFloat($1), source: { start: { index: @1.range[0] }, end: { index: @1.range[1] } } }; }
- ;
-
- function
- : FUNCTION { $$ = { type: 'Function', value: $1, source: { start: { index: @1.range[0] }, end: { index: @1.range[1] } } }; }
- ;
-
- css_value
- : LENGTH { $$ = { type: 'LengthValue', value: parseFloat($1), unit: /[a-z]+/i.exec($1)[0], source: { start: { index: @1.range[0] }, end: { index: @1.range[1] } } }; }
- | ANGLE { $$ = { type: 'AngleValue', value: parseFloat($1), unit: /[a-z]+/i.exec($1)[0], source: { start: { index: @1.range[0] }, end: { index: @1.range[1] } } }; }
- | TIME { $$ = { type: 'TimeValue', value: parseFloat($1), unit: /[a-z]+/i.exec($1)[0], source: { start: { index: @1.range[0] }, end: { index: @1.range[1] } } }; }
- | FREQ { $$ = { type: 'FrequencyValue', value: parseFloat($1), unit: /[a-z]+/i.exec($1)[0], source: { start: { index: @1.range[0] }, end: { index: @1.range[1] } } }; }
- | RES { $$ = { type: 'ResolutionValue', value: parseFloat($1), unit: /[a-z]+/i.exec($1)[0], source: { start: { index: @1.range[0] }, end: { index: @1.range[1] } } }; }
- | PERCENTAGE { $$ = { type: 'PercentageValue', value: parseFloat($1), unit: '%', source: { start: { index: @1.range[0] }, end: { index: @1.range[1] } } }; }
- | UNKNOWN { $$ = { type: 'UnknownValue', value: $1, unit: '', source: { start: { index: @1.range[0] }, end: { index: @1.range[1] } } }; }
- ;
diff --git a/assets/node_modules/stylelint/lib/utils/parseCalcExpression/parser.js b/assets/node_modules/stylelint/lib/utils/parseCalcExpression/parser.js
deleted file mode 100644
index 51c07ff..0000000
--- a/assets/node_modules/stylelint/lib/utils/parseCalcExpression/parser.js
+++ /dev/null
@@ -1,3927 +0,0 @@
-
-/* parser generated by jison 0.6.1-215 */
-
-/*
- * Returns a Parser object of the following structure:
- *
- * Parser: {
- * yy: {} The so-called "shared state" or rather the *source* of it;
- * the real "shared state" `yy` passed around to
- * the rule actions, etc. is a derivative/copy of this one,
- * not a direct reference!
- * }
- *
- * Parser.prototype: {
- * yy: {},
- * EOF: 1,
- * TERROR: 2,
- *
- * trace: function(errorMessage, ...),
- *
- * JisonParserError: function(msg, hash),
- *
- * quoteName: function(name),
- * Helper function which can be overridden by user code later on: put suitable
- * quotes around literal IDs in a description string.
- *
- * originalQuoteName: function(name),
- * The basic quoteName handler provided by JISON.
- * `cleanupAfterParse()` will clean up and reset `quoteName()` to reference this function
- * at the end of the `parse()`.
- *
- * describeSymbol: function(symbol),
- * Return a more-or-less human-readable description of the given symbol, when
- * available, or the symbol itself, serving as its own 'description' for lack
- * of something better to serve up.
- *
- * Return NULL when the symbol is unknown to the parser.
- *
- * symbols_: {associative list: name ==> number},
- * terminals_: {associative list: number ==> name},
- * nonterminals: {associative list: rule-name ==> {associative list: number ==> rule-alt}},
- * terminal_descriptions_: (if there are any) {associative list: number ==> description},
- * productions_: [...],
- *
- * performAction: function parser__performAction(yytext, yyleng, yylineno, yyloc, yystate, yysp, yyvstack, yylstack, yystack, yysstack),
- *
- * The function parameters and `this` have the following value/meaning:
- * - `this` : reference to the `yyval` internal object, which has members (`$` and `_$`)
- * to store/reference the rule value `$$` and location info `@$`.
- *
- * One important thing to note about `this` a.k.a. `yyval`: every *reduce* action gets
- * to see the same object via the `this` reference, i.e. if you wish to carry custom
- * data from one reduce action through to the next within a single parse run, then you
- * may get nasty and use `yyval` a.k.a. `this` for storing you own semi-permanent data.
- *
- * `this.yy` is a direct reference to the `yy` shared state object.
- *
- * `%parse-param`-specified additional `parse()` arguments have been added to this `yy`
- * object at `parse()` start and are therefore available to the action code via the
- * same named `yy.xxxx` attributes (where `xxxx` represents a identifier name from
- * the %parse-param` list.
- *
- * - `yytext` : reference to the lexer value which belongs to the last lexer token used
- * to match this rule. This is *not* the look-ahead token, but the last token
- * that's actually part of this rule.
- *
- * Formulated another way, `yytext` is the value of the token immediately preceeding
- * the current look-ahead token.
- * Caveats apply for rules which don't require look-ahead, such as epsilon rules.
- *
- * - `yyleng` : ditto as `yytext`, only now for the lexer.yyleng value.
- *
- * - `yylineno`: ditto as `yytext`, only now for the lexer.yylineno value.
- *
- * - `yyloc` : ditto as `yytext`, only now for the lexer.yylloc lexer token location info.
- *
- * WARNING: since jison 0.4.18-186 this entry may be NULL/UNDEFINED instead
- * of an empty object when no suitable location info can be provided.
- *
- * - `yystate` : the current parser state number, used internally for dispatching and
- * executing the action code chunk matching the rule currently being reduced.
- *
- * - `yysp` : the current state stack position (a.k.a. 'stack pointer')
- *
- * This one comes in handy when you are going to do advanced things to the parser
- * stacks, all of which are accessible from your action code (see the next entries below).
- *
- * Also note that you can access this and other stack index values using the new double-hash
- * syntax, i.e. `##$ === ##0 === yysp`, while `##1` is the stack index for all things
- * related to the first rule term, just like you have `$1`, `@1` and `#1`.
- * This is made available to write very advanced grammar action rules, e.g. when you want
- * to investigate the parse state stack in your action code, which would, for example,
- * be relevant when you wish to implement error diagnostics and reporting schemes similar
- * to the work described here:
- *
- * + Pottier, F., 2016. Reachability and error diagnosis in LR(1) automata.
- * In Journées Francophones des Languages Applicatifs.
- *
- * + Jeffery, C.L., 2003. Generating LR syntax error messages from examples.
- * ACM Transactions on Programming Languages and Systems (TOPLAS), 25(5), pp.631–640.
- *
- * - `yyrulelength`: the current rule's term count, i.e. the number of entries occupied on the stack.
- *
- * This one comes in handy when you are going to do advanced things to the parser
- * stacks, all of which are accessible from your action code (see the next entries below).
- *
- * - `yyvstack`: reference to the parser value stack. Also accessed via the `$1` etc.
- * constructs.
- *
- * - `yylstack`: reference to the parser token location stack. Also accessed via
- * the `@1` etc. constructs.
- *
- * WARNING: since jison 0.4.18-186 this array MAY contain slots which are
- * UNDEFINED rather than an empty (location) object, when the lexer/parser
- * action code did not provide a suitable location info object when such a
- * slot was filled!
- *
- * - `yystack` : reference to the parser token id stack. Also accessed via the
- * `#1` etc. constructs.
- *
- * Note: this is a bit of a **white lie** as we can statically decode any `#n` reference to
- * its numeric token id value, hence that code wouldn't need the `yystack` but *you* might
- * want access this array for your own purposes, such as error analysis as mentioned above!
- *
- * Note that this stack stores the current stack of *tokens*, that is the sequence of
- * already parsed=reduced *nonterminals* (tokens representing rules) and *terminals*
- * (lexer tokens *shifted* onto the stack until the rule they belong to is found and
- * *reduced*.
- *
- * - `yysstack`: reference to the parser state stack. This one carries the internal parser
- * *states* such as the one in `yystate`, which are used to represent
- * the parser state machine in the *parse table*. *Very* *internal* stuff,
- * what can I say? If you access this one, you're clearly doing wicked things
- *
- * - `...` : the extra arguments you specified in the `%parse-param` statement in your
- * grammar definition file.
- *
- * table: [...],
- * State transition table
- * ----------------------
- *
- * index levels are:
- * - `state` --> hash table
- * - `symbol` --> action (number or array)
- *
- * If the `action` is an array, these are the elements' meaning:
- * - index [0]: 1 = shift, 2 = reduce, 3 = accept
- * - index [1]: GOTO `state`
- *
- * If the `action` is a number, it is the GOTO `state`
- *
- * defaultActions: {...},
- *
- * parseError: function(str, hash, ExceptionClass),
- * yyError: function(str, ...),
- * yyRecovering: function(),
- * yyErrOk: function(),
- * yyClearIn: function(),
- *
- * constructParseErrorInfo: function(error_message, exception_object, expected_token_set, is_recoverable),
- * Helper function **which will be set up during the first invocation of the `parse()` method**.
- * Produces a new errorInfo 'hash object' which can be passed into `parseError()`.
- * See it's use in this parser kernel in many places; example usage:
- *
- * var infoObj = parser.constructParseErrorInfo('fail!', null,
- * parser.collect_expected_token_set(state), true);
- * var retVal = parser.parseError(infoObj.errStr, infoObj, parser.JisonParserError);
- *
- * originalParseError: function(str, hash, ExceptionClass),
- * The basic `parseError` handler provided by JISON.
- * `cleanupAfterParse()` will clean up and reset `parseError()` to reference this function
- * at the end of the `parse()`.
- *
- * options: { ... parser %options ... },
- *
- * parse: function(input[, args...]),
- * Parse the given `input` and return the parsed value (or `true` when none was provided by
- * the root action, in which case the parser is acting as a *matcher*).
- * You MAY use the additional `args...` parameters as per `%parse-param` spec of this grammar:
- * these extra `args...` are added verbatim to the `yy` object reference as member variables.
- *
- * WARNING:
- * Parser's additional `args...` parameters (via `%parse-param`) MAY conflict with
- * any attributes already added to `yy` by the jison run-time;
- * when such a collision is detected an exception is thrown to prevent the generated run-time
- * from silently accepting this confusing and potentially hazardous situation!
- *
- * The lexer MAY add its own set of additional parameters (via the `%parse-param` line in
- * the lexer section of the grammar spec): these will be inserted in the `yy` shared state
- * object and any collision with those will be reported by the lexer via a thrown exception.
- *
- * cleanupAfterParse: function(resultValue, invoke_post_methods, do_not_nuke_errorinfos),
- * Helper function **which will be set up during the first invocation of the `parse()` method**.
- * This helper API is invoked at the end of the `parse()` call, unless an exception was thrown
- * and `%options no-try-catch` has been defined for this grammar: in that case this helper MAY
- * be invoked by calling user code to ensure the `post_parse` callbacks are invoked and
- * the internal parser gets properly garbage collected under these particular circumstances.
- *
- * yyMergeLocationInfo: function(first_index, last_index, first_yylloc, last_yylloc, dont_look_back),
- * Helper function **which will be set up during the first invocation of the `parse()` method**.
- * This helper API can be invoked to calculate a spanning `yylloc` location info object.
- *
- * Note: %epsilon rules MAY specify no `first_index` and `first_yylloc`, in which case
- * this function will attempt to obtain a suitable location marker by inspecting the location stack
- * backwards.
- *
- * For more info see the documentation comment further below, immediately above this function's
- * implementation.
- *
- * lexer: {
- * yy: {...}, A reference to the so-called "shared state" `yy` once
- * received via a call to the `.setInput(input, yy)` lexer API.
- * EOF: 1,
- * ERROR: 2,
- * JisonLexerError: function(msg, hash),
- * parseError: function(str, hash, ExceptionClass),
- * setInput: function(input, [yy]),
- * input: function(),
- * unput: function(str),
- * more: function(),
- * reject: function(),
- * less: function(n),
- * pastInput: function(n),
- * upcomingInput: function(n),
- * showPosition: function(),
- * test_match: function(regex_match_array, rule_index, ...),
- * next: function(...),
- * lex: function(...),
- * begin: function(condition),
- * pushState: function(condition),
- * popState: function(),
- * topState: function(),
- * _currentRules: function(),
- * stateStackSize: function(),
- * cleanupAfterLex: function()
- *
- * options: { ... lexer %options ... },
- *
- * performAction: function(yy, yy_, $avoiding_name_collisions, YY_START, ...),
- * rules: [...],
- * conditions: {associative list: name ==> set},
- * }
- * }
- *
- *
- * token location info (@$, _$, etc.): {
- * first_line: n,
- * last_line: n,
- * first_column: n,
- * last_column: n,
- * range: [start_number, end_number]
- * (where the numbers are indexes into the input string, zero-based)
- * }
- *
- * ---
- *
- * The `parseError` function receives a 'hash' object with these members for lexer and
- * parser errors:
- *
- * {
- * text: (matched text)
- * token: (the produced terminal token, if any)
- * token_id: (the produced terminal token numeric ID, if any)
- * line: (yylineno)
- * loc: (yylloc)
- * }
- *
- * parser (grammar) errors will also provide these additional members:
- *
- * {
- * expected: (array describing the set of expected tokens;
- * may be UNDEFINED when we cannot easily produce such a set)
- * state: (integer (or array when the table includes grammar collisions);
- * represents the current internal state of the parser kernel.
- * can, for example, be used to pass to the `collect_expected_token_set()`
- * API to obtain the expected token set)
- * action: (integer; represents the current internal action which will be executed)
- * new_state: (integer; represents the next/planned internal state, once the current
- * action has executed)
- * recoverable: (boolean: TRUE when the parser MAY have an error recovery rule
- * available for this particular error)
- * state_stack: (array: the current parser LALR/LR internal state stack; this can be used,
- * for instance, for advanced error analysis and reporting)
- * value_stack: (array: the current parser LALR/LR internal `$$` value stack; this can be used,
- * for instance, for advanced error analysis and reporting)
- * location_stack: (array: the current parser LALR/LR internal location stack; this can be used,
- * for instance, for advanced error analysis and reporting)
- * yy: (object: the current parser internal "shared state" `yy`
- * as is also available in the rule actions; this can be used,
- * for instance, for advanced error analysis and reporting)
- * lexer: (reference to the current lexer instance used by the parser)
- * parser: (reference to the current parser instance)
- * }
- *
- * while `this` will reference the current parser instance.
- *
- * When `parseError` is invoked by the lexer, `this` will still reference the related *parser*
- * instance, while these additional `hash` fields will also be provided:
- *
- * {
- * lexer: (reference to the current lexer instance which reported the error)
- * }
- *
- * When `parseError` is invoked by the parser due to a **JavaScript exception** being fired
- * from either the parser or lexer, `this` will still reference the related *parser*
- * instance, while these additional `hash` fields will also be provided:
- *
- * {
- * exception: (reference to the exception thrown)
- * }
- *
- * Please do note that in the latter situation, the `expected` field will be omitted as
- * this type of failure is assumed not to be due to *parse errors* but rather due to user
- * action code in either parser or lexer failing unexpectedly.
- *
- * ---
- *
- * You can specify parser options by setting / modifying the `.yy` object of your Parser instance.
- * These options are available:
- *
- * ### options which are global for all parser instances
- *
- * Parser.pre_parse: function(yy)
- * optional: you can specify a pre_parse() function in the chunk following
- * the grammar, i.e. after the last `%%`.
- * Parser.post_parse: function(yy, retval, parseInfo) { return retval; }
- * optional: you can specify a post_parse() function in the chunk following
- * the grammar, i.e. after the last `%%`. When it does not return any value,
- * the parser will return the original `retval`.
- *
- * ### options which can be set up per parser instance
- *
- * yy: {
- * pre_parse: function(yy)
- * optional: is invoked before the parse cycle starts (and before the first
- * invocation of `lex()`) but immediately after the invocation of
- * `parser.pre_parse()`).
- * post_parse: function(yy, retval, parseInfo) { return retval; }
- * optional: is invoked when the parse terminates due to success ('accept')
- * or failure (even when exceptions are thrown).
- * `retval` contains the return value to be produced by `Parser.parse()`;
- * this function can override the return value by returning another.
- * When it does not return any value, the parser will return the original
- * `retval`.
- * This function is invoked immediately before `parser.post_parse()`.
- *
- * parseError: function(str, hash, ExceptionClass)
- * optional: overrides the default `parseError` function.
- * quoteName: function(name),
- * optional: overrides the default `quoteName` function.
- * }
- *
- * parser.lexer.options: {
- * pre_lex: function()
- * optional: is invoked before the lexer is invoked to produce another token.
- * `this` refers to the Lexer object.
- * post_lex: function(token) { return token; }
- * optional: is invoked when the lexer has produced a token `token`;
- * this function can override the returned token value by returning another.
- * When it does not return any (truthy) value, the lexer will return
- * the original `token`.
- * `this` refers to the Lexer object.
- *
- * ranges: boolean
- * optional: `true` ==> token location info will include a .range[] member.
- * flex: boolean
- * optional: `true` ==> flex-like lexing behaviour where the rules are tested
- * exhaustively to find the longest match.
- * backtrack_lexer: boolean
- * optional: `true` ==> lexer regexes are tested in order and for invoked;
- * the lexer terminates the scan when a token is returned by the action code.
- * xregexp: boolean
- * optional: `true` ==> lexer rule regexes are "extended regex format" requiring the
- * `XRegExp` library. When this `%option` has not been specified at compile time, all lexer
- * rule regexes have been written as standard JavaScript RegExp expressions.
- * }
- */
-
-
-
- var parser = (function () {
-
-
-// See also:
-// http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript/#35881508
-// but we keep the prototype.constructor and prototype.name assignment lines too for compatibility
-// with userland code which might access the derived class in a 'classic' way.
-function JisonParserError(msg, hash) {
- Object.defineProperty(this, 'name', {
- enumerable: false,
- writable: false,
- value: 'JisonParserError'
- });
-
- if (msg == null) msg = '???';
-
- Object.defineProperty(this, 'message', {
- enumerable: false,
- writable: true,
- value: msg
- });
-
- this.hash = hash;
-
- var stacktrace;
- if (hash && hash.exception instanceof Error) {
- var ex2 = hash.exception;
- this.message = ex2.message || msg;
- stacktrace = ex2.stack;
- }
- if (!stacktrace) {
- if (Error.hasOwnProperty('captureStackTrace')) { // V8/Chrome engine
- Error.captureStackTrace(this, this.constructor);
- } else {
- stacktrace = (new Error(msg)).stack;
- }
- }
- if (stacktrace) {
- Object.defineProperty(this, 'stack', {
- enumerable: false,
- writable: false,
- value: stacktrace
- });
- }
-}
-
-if (typeof Object.setPrototypeOf === 'function') {
- Object.setPrototypeOf(JisonParserError.prototype, Error.prototype);
-} else {
- JisonParserError.prototype = Object.create(Error.prototype);
-}
-JisonParserError.prototype.constructor = JisonParserError;
-JisonParserError.prototype.name = 'JisonParserError';
-
-
-
-
- // helper: reconstruct the productions[] table
- function bp(s) {
- var rv = [];
- var p = s.pop;
- var r = s.rule;
- for (var i = 0, l = p.length; i < l; i++) {
- rv.push([
- p[i],
- r[i]
- ]);
- }
- return rv;
- }
-
-
-
- // helper: reconstruct the defaultActions[] table
- function bda(s) {
- var rv = {};
- var d = s.idx;
- var g = s.goto;
- for (var i = 0, l = d.length; i < l; i++) {
- var j = d[i];
- rv[j] = g[i];
- }
- return rv;
- }
-
-
-
- // helper: reconstruct the 'goto' table
- function bt(s) {
- var rv = [];
- var d = s.len;
- var y = s.symbol;
- var t = s.type;
- var a = s.state;
- var m = s.mode;
- var g = s.goto;
- for (var i = 0, l = d.length; i < l; i++) {
- var n = d[i];
- var q = {};
- for (var j = 0; j < n; j++) {
- var z = y.shift();
- switch (t.shift()) {
- case 2:
- q[z] = [
- m.shift(),
- g.shift()
- ];
- break;
-
- case 0:
- q[z] = a.shift();
- break;
-
- default:
- // type === 1: accept
- q[z] = [
- 3
- ];
- }
- }
- rv.push(q);
- }
- return rv;
- }
-
-
-
- // helper: runlength encoding with increment step: code, length: step (default step = 0)
- // `this` references an array
- function s(c, l, a) {
- a = a || 0;
- for (var i = 0; i < l; i++) {
- this.push(c);
- c += a;
- }
- }
-
- // helper: duplicate sequence from *relative* offset and length.
- // `this` references an array
- function c(i, l) {
- i = this.length - i;
- for (l += i; i < l; i++) {
- this.push(this[i]);
- }
- }
-
- // helper: unpack an array using helpers and data, all passed in an array argument 'a'.
- function u(a) {
- var rv = [];
- for (var i = 0, l = a.length; i < l; i++) {
- var e = a[i];
- // Is this entry a helper function?
- if (typeof e === 'function') {
- i++;
- e.apply(rv, a[i]);
- } else {
- rv.push(e);
- }
- }
- return rv;
- }
-
-
-var parser = {
- // Code Generator Information Report
- // ---------------------------------
- //
- // Options:
- //
- // default action mode: ............. ["classic","merge"]
- // test-compile action mode: ........ "parser:*,lexer:*"
- // try..catch: ...................... true
- // default resolve on conflict: ..... true
- // on-demand look-ahead: ............ false
- // error recovery token skip maximum: 3
- // yyerror in parse actions is: ..... NOT recoverable,
- // yyerror in lexer actions and other non-fatal lexer are:
- // .................................. NOT recoverable,
- // debug grammar/output: ............ false
- // has partial LR conflict upgrade: true
- // rudimentary token-stack support: false
- // parser table compression mode: ... 2
- // export debug tables: ............. false
- // export *all* tables: ............. false
- // module type: ..................... commonjs
- // parser engine type: .............. lalr
- // output main() in the module: ..... true
- // has user-specified main(): ....... false
- // has user-specified require()/import modules for main():
- // .................................. false
- // number of expected conflicts: .... 0
- //
- //
- // Parser Analysis flags:
- //
- // no significant actions (parser is a language matcher only):
- // .................................. false
- // uses yyleng: ..................... false
- // uses yylineno: ................... false
- // uses yytext: ..................... false
- // uses yylloc: ..................... false
- // uses ParseError API: ............. false
- // uses YYERROR: .................... false
- // uses YYRECOVERING: ............... false
- // uses YYERROK: .................... false
- // uses YYCLEARIN: .................. false
- // tracks rule values: .............. true
- // assigns rule values: ............. true
- // uses location tracking: .......... true
- // assigns location: ................ true
- // uses yystack: .................... false
- // uses yysstack: ................... false
- // uses yysp: ....................... true
- // uses yyrulelength: ............... false
- // uses yyMergeLocationInfo API: .... true
- // has error recovery: .............. false
- // has error reporting: ............. false
- //
- // --------- END OF REPORT -----------
-
-trace: function no_op_trace() { },
-JisonParserError: JisonParserError,
-yy: {},
-options: {
- type: "lalr",
- hasPartialLrUpgradeOnConflict: true,
- errorRecoveryTokenDiscardCount: 3,
- caseInsensitive: true
-},
-symbols_: {
- "$accept": 0,
- "$end": 1,
- "ADD": 6,
- "ANGLE": 13,
- "CALC": 3,
- "DIV": 9,
- "EOF": 1,
- "FREQ": 15,
- "FUNCTION": 11,
- "LENGTH": 12,
- "LPAREN": 4,
- "MUL": 8,
- "NUMBER": 10,
- "PERCENTAGE": 17,
- "RES": 16,
- "RPAREN": 5,
- "SUB": 7,
- "TIME": 14,
- "UNKNOWN": 18,
- "css_value": 23,
- "error": 2,
- "expression": 19,
- "function": 22,
- "math_expression": 20,
- "value": 21
-},
-terminals_: {
- 1: "EOF",
- 2: "error",
- 3: "CALC",
- 4: "LPAREN",
- 5: "RPAREN",
- 6: "ADD",
- 7: "SUB",
- 8: "MUL",
- 9: "DIV",
- 10: "NUMBER",
- 11: "FUNCTION",
- 12: "LENGTH",
- 13: "ANGLE",
- 14: "TIME",
- 15: "FREQ",
- 16: "RES",
- 17: "PERCENTAGE",
- 18: "UNKNOWN"
-},
-TERROR: 2,
- EOF: 1,
-
- // internals: defined here so the object *structure* doesn't get modified by parse() et al,
- // thus helping JIT compilers like Chrome V8.
- originalQuoteName: null,
- originalParseError: null,
- cleanupAfterParse: null,
- constructParseErrorInfo: null,
- yyMergeLocationInfo: null,
-
- __reentrant_call_depth: 0, // INTERNAL USE ONLY
- __error_infos: [], // INTERNAL USE ONLY: the set of parseErrorInfo objects created since the last cleanup
- __error_recovery_infos: [], // INTERNAL USE ONLY: the set of parseErrorInfo objects created since the last cleanup
-
- // APIs which will be set up depending on user action code analysis:
- //yyRecovering: 0,
- //yyErrOk: 0,
- //yyClearIn: 0,
-
- // Helper APIs
- // -----------
-
- // Helper function which can be overridden by user code later on: put suitable quotes around
- // literal IDs in a description string.
- quoteName: function parser_quoteName(id_str) {
- return '"' + id_str + '"';
- },
-
- // Return the name of the given symbol (terminal or non-terminal) as a string, when available.
- //
- // Return NULL when the symbol is unknown to the parser.
- getSymbolName: function parser_getSymbolName(symbol) {
- if (this.terminals_[symbol]) {
- return this.terminals_[symbol];
- }
-
- // Otherwise... this might refer to a RULE token i.e. a non-terminal: see if we can dig that one up.
- //
- // An example of this may be where a rule's action code contains a call like this:
- //
- // parser.getSymbolName(#$)
- //
- // to obtain a human-readable name of the current grammar rule.
- var s = this.symbols_;
- for (var key in s) {
- if (s[key] === symbol) {
- return key;
- }
- }
- return null;
- },
-
- // Return a more-or-less human-readable description of the given symbol, when available,
- // or the symbol itself, serving as its own 'description' for lack of something better to serve up.
- //
- // Return NULL when the symbol is unknown to the parser.
- describeSymbol: function parser_describeSymbol(symbol) {
- if (symbol !== this.EOF && this.terminal_descriptions_ && this.terminal_descriptions_[symbol]) {
- return this.terminal_descriptions_[symbol];
- }
- else if (symbol === this.EOF) {
- return 'end of input';
- }
- var id = this.getSymbolName(symbol);
- if (id) {
- return this.quoteName(id);
- }
- return null;
- },
-
- // Produce a (more or less) human-readable list of expected tokens at the point of failure.
- //
- // The produced list may contain token or token set descriptions instead of the tokens
- // themselves to help turning this output into something that easier to read by humans
- // unless `do_not_describe` parameter is set, in which case a list of the raw, *numeric*,
- // expected terminals and nonterminals is produced.
- //
- // The returned list (array) will not contain any duplicate entries.
- collect_expected_token_set: function parser_collect_expected_token_set(state, do_not_describe) {
- var TERROR = this.TERROR;
- var tokenset = [];
- var check = {};
- // Has this (error?) state been outfitted with a custom expectations description text for human consumption?
- // If so, use that one instead of the less palatable token set.
- if (!do_not_describe && this.state_descriptions_ && this.state_descriptions_[state]) {
- return [
- this.state_descriptions_[state]
- ];
- }
- for (var p in this.table[state]) {
- p = +p;
- if (p !== TERROR) {
- var d = do_not_describe ? p : this.describeSymbol(p);
- if (d && !check[d]) {
- tokenset.push(d);
- check[d] = true; // Mark this token description as already mentioned to prevent outputting duplicate entries.
- }
- }
- }
- return tokenset;
- },
-productions_: bp({
- pop: u([
- 19,
- s,
- [20, 11],
- 21,
- 22,
- s,
- [23, 7]
-]),
- rule: u([
- 2,
- 4,
- s,
- [3, 4],
- 2,
- 2,
- 3,
- s,
- [1, 12]
-])
-}),
-performAction: function parser__PerformAction(yyloc, yystate /* action[1] */, yysp, yyvstack, yylstack) {
-
- /* this == yyval */
-
- // the JS engine itself can go and remove these statements when `yy` turns out to be unused in any action code!
- var yy = this.yy;
- var yyparser = yy.parser;
- var yylexer = yy.lexer;
-
-
-
- switch (yystate) {
-case 0:
- /*! Production:: $accept : expression $end */
-
- // default action (generated by JISON mode classic/merge :: 1,VT,VA,-,-,LT,LA,-,-):
- this.$ = yyvstack[yysp - 1];
- this._$ = yylstack[yysp - 1];
- // END of default action (generated by JISON mode classic/merge :: 1,VT,VA,-,-,LT,LA,-,-)
- break;
-
-case 1:
- /*! Production:: expression : math_expression EOF */
-
- // default action (generated by JISON mode classic/merge :: 2,VT,VA,-,-,LT,LA,-,-):
- this.$ = yyvstack[yysp - 1];
- this._$ = yyparser.yyMergeLocationInfo(yysp - 1, yysp);
- // END of default action (generated by JISON mode classic/merge :: 2,VT,VA,-,-,LT,LA,-,-)
-
-
- return yyvstack[yysp - 1];
- break;
-
-case 2:
- /*! Production:: math_expression : CALC LPAREN math_expression RPAREN */
-
- // default action (generated by JISON mode classic/merge :: 4,VT,VA,VU,-,LT,LA,-,-):
- this._$ = yyparser.yyMergeLocationInfo(yysp - 3, yysp);
- // END of default action (generated by JISON mode classic/merge :: 4,VT,VA,VU,-,LT,LA,-,-)
-
-
- this.$ = yyvstack[yysp - 1];
- this.$.source.start = { index: yylstack[yysp - 3].range[0] };
- this.$.source.end = { index: yylstack[yysp].range[1] };
- break;
-
-case 3:
- /*! Production:: math_expression : math_expression ADD math_expression */
-case 4:
- /*! Production:: math_expression : math_expression SUB math_expression */
-case 5:
- /*! Production:: math_expression : math_expression MUL math_expression */
-case 6:
- /*! Production:: math_expression : math_expression DIV math_expression */
-
- // default action (generated by JISON mode classic/merge :: 3,VT,VA,VU,-,LT,LA,-,-):
- this._$ = yyparser.yyMergeLocationInfo(yysp - 2, yysp);
- // END of default action (generated by JISON mode classic/merge :: 3,VT,VA,VU,-,LT,LA,-,-)
-
-
- this.$ = {
- type: 'MathExpression', operator: yyvstack[yysp - 1], left: yyvstack[yysp - 2], right: yyvstack[yysp],
- source: {
- start: yyvstack[yysp - 2].source.start, end: yyvstack[yysp].source.end,
- operator: { start: { index: yylstack[yysp - 1].range[0] }, end: { index: yylstack[yysp - 1].range[1] } }
- }
- };
- break;
-
-case 7:
- /*! Production:: math_expression : SUB math_expression */
-
- // default action (generated by JISON mode classic/merge :: 2,VT,VA,VU,-,LT,LA,-,-):
- this._$ = yyparser.yyMergeLocationInfo(yysp - 1, yysp);
- // END of default action (generated by JISON mode classic/merge :: 2,VT,VA,VU,-,LT,LA,-,-)
-
-
- if (yylstack[yysp - 1].range[1] !== yyvstack[yysp].source.start.index) {
- throw new Error('Unexpected spaces was found between sign and value');
- }
- if (typeof yyvstack[yysp].value !== 'number') {
- throw new Error('Unexpected sign');
- }
- if (yyvstack[yysp].sign) {
- throw new Error('Unexpected continuous sign');
- }
- this.$ = yyvstack[yysp];
- this.$.sign = '-'
- this.$.value = -yyvstack[yysp].value;
- this.$.source.start.index = yylstack[yysp - 1].range[0];
- break;
-
-case 8:
- /*! Production:: math_expression : ADD math_expression */
-
- // default action (generated by JISON mode classic/merge :: 2,VT,VA,VU,-,LT,LA,-,-):
- this._$ = yyparser.yyMergeLocationInfo(yysp - 1, yysp);
- // END of default action (generated by JISON mode classic/merge :: 2,VT,VA,VU,-,LT,LA,-,-)
-
-
- if (yylstack[yysp - 1].range[1] !== yyvstack[yysp].source.start.index) {
- throw new Error('Unexpected spaces was found between sign and value');
- }
- if (typeof yyvstack[yysp].value !== 'number') {
- throw new Error('Unexpected sign');
- }
- if (yyvstack[yysp].sign) {
- throw new Error('Unexpected continuous sign');
- }
- this.$ = yyvstack[yysp];
- this.$.sign = '+'
- this.$.source.start.index = yylstack[yysp - 1].range[0];
- break;
-
-case 9:
- /*! Production:: math_expression : LPAREN math_expression RPAREN */
-
- // default action (generated by JISON mode classic/merge :: 3,VT,VA,VU,-,LT,LA,-,-):
- this._$ = yyparser.yyMergeLocationInfo(yysp - 2, yysp);
- // END of default action (generated by JISON mode classic/merge :: 3,VT,VA,VU,-,LT,LA,-,-)
-
-
- this.$ = yyvstack[yysp - 1];
- this.$.source.start = { index: yylstack[yysp - 2].range[0] };
- this.$.source.end = { index: yylstack[yysp].range[1] };
- break;
-
-case 10:
- /*! Production:: math_expression : function */
-case 11:
- /*! Production:: math_expression : css_value */
-case 12:
- /*! Production:: math_expression : value */
-
- // default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-):
- this._$ = yylstack[yysp];
- // END of default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-)
-
-
- this.$ = yyvstack[yysp];
- break;
-
-case 13:
- /*! Production:: value : NUMBER */
-
- // default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-):
- this._$ = yylstack[yysp];
- // END of default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-)
-
-
- this.$ = { type: 'Value', value: parseFloat(yyvstack[yysp]), source: { start: { index: yylstack[yysp].range[0] }, end: { index: yylstack[yysp].range[1] } } };
- break;
-
-case 14:
- /*! Production:: function : FUNCTION */
-
- // default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-):
- this._$ = yylstack[yysp];
- // END of default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-)
-
-
- this.$ = { type: 'Function', value: yyvstack[yysp], source: { start: { index: yylstack[yysp].range[0] }, end: { index: yylstack[yysp].range[1] } } };
- break;
-
-case 15:
- /*! Production:: css_value : LENGTH */
-
- // default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-):
- this._$ = yylstack[yysp];
- // END of default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-)
-
-
- this.$ = { type: 'LengthValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/i.exec(yyvstack[yysp])[0], source: { start: { index: yylstack[yysp].range[0] }, end: { index: yylstack[yysp].range[1] } } };
- break;
-
-case 16:
- /*! Production:: css_value : ANGLE */
-
- // default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-):
- this._$ = yylstack[yysp];
- // END of default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-)
-
-
- this.$ = { type: 'AngleValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/i.exec(yyvstack[yysp])[0], source: { start: { index: yylstack[yysp].range[0] }, end: { index: yylstack[yysp].range[1] } } };
- break;
-
-case 17:
- /*! Production:: css_value : TIME */
-
- // default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-):
- this._$ = yylstack[yysp];
- // END of default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-)
-
-
- this.$ = { type: 'TimeValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/i.exec(yyvstack[yysp])[0], source: { start: { index: yylstack[yysp].range[0] }, end: { index: yylstack[yysp].range[1] } } };
- break;
-
-case 18:
- /*! Production:: css_value : FREQ */
-
- // default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-):
- this._$ = yylstack[yysp];
- // END of default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-)
-
-
- this.$ = { type: 'FrequencyValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/i.exec(yyvstack[yysp])[0], source: { start: { index: yylstack[yysp].range[0] }, end: { index: yylstack[yysp].range[1] } } };
- break;
-
-case 19:
- /*! Production:: css_value : RES */
-
- // default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-):
- this._$ = yylstack[yysp];
- // END of default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-)
-
-
- this.$ = { type: 'ResolutionValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/i.exec(yyvstack[yysp])[0], source: { start: { index: yylstack[yysp].range[0] }, end: { index: yylstack[yysp].range[1] } } };
- break;
-
-case 20:
- /*! Production:: css_value : PERCENTAGE */
-
- // default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-):
- this._$ = yylstack[yysp];
- // END of default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-)
-
-
- this.$ = { type: 'PercentageValue', value: parseFloat(yyvstack[yysp]), unit: '%', source: { start: { index: yylstack[yysp].range[0] }, end: { index: yylstack[yysp].range[1] } } };
- break;
-
-case 21:
- /*! Production:: css_value : UNKNOWN */
-
- // default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-):
- this._$ = yylstack[yysp];
- // END of default action (generated by JISON mode classic/merge :: 1,VT,VA,VU,-,LT,LA,-,-)
-
-
- this.$ = { type: 'UnknownValue', value: yyvstack[yysp], unit: '', source: { start: { index: yylstack[yysp].range[0] }, end: { index: yylstack[yysp].range[1] } } };
- break;
-
-}
-},
-table: bt({
- len: u([
- 18,
- 1,
- 5,
- 1,
- s,
- [17, 3],
- s,
- [0, 13],
- s,
- [17, 5],
- 0,
- 0,
- 5,
- 6,
- 6,
- c,
- [5, 3],
- 0,
- 0
-]),
- symbol: u([
- 3,
- 4,
- 6,
- 7,
- s,
- [10, 14, 1],
- 1,
- 1,
- s,
- [6, 4, 1],
- 4,
- c,
- [25, 13],
- c,
- [24, 4],
- c,
- [17, 119],
- s,
- [5, 5, 1],
- 1,
- c,
- [6, 11],
- c,
- [5, 5]
-]),
- type: u([
- s,
- [2, 13],
- s,
- [0, 5],
- 1,
- s,
- [2, 19],
- s,
- [0, 4],
- c,
- [17, 132],
- s,
- [2, 9]
-]),
- state: u([
- 1,
- 2,
- 9,
- 7,
- 8,
- 25,
- c,
- [4, 3],
- 26,
- c,
- [4, 3],
- 27,
- c,
- [4, 3],
- 28,
- c,
- [4, 3],
- 29,
- c,
- [4, 3],
- 30,
- c,
- [4, 3],
- 31,
- c,
- [4, 3],
- 32,
- c,
- [4, 3]
-]),
- mode: u([
- s,
- [1, 128],
- s,
- [2, 4],
- c,
- [6, 8],
- s,
- [1, 5]
-]),
- goto: u([
- 3,
- 6,
- 5,
- 4,
- 18,
- s,
- [10, 8, 1],
- s,
- [19, 6, 1],
- c,
- [19, 13],
- c,
- [13, 91],
- 33,
- c,
- [110, 4],
- s,
- [3, 4],
- 22,
- 23,
- s,
- [4, 4],
- 22,
- 23,
- 34,
- c,
- [17, 4]
-])
-}),
-defaultActions: bda({
- idx: u([
- s,
- [7, 13, 1],
- 25,
- 26,
- 30,
- 31,
- 33,
- 34
-]),
- goto: u([
- 10,
- 11,
- 12,
- s,
- [14, 8, 1],
- 13,
- 1,
- 7,
- 8,
- 5,
- 6,
- 9,
- 2
-])
-}),
-parseError: function parseError(str, hash, ExceptionClass) {
- if (hash.recoverable) {
- if (typeof this.trace === 'function') {
- this.trace(str);
- }
- hash.destroy(); // destroy... well, *almost*!
- } else {
- if (typeof this.trace === 'function') {
- this.trace(str);
- }
- if (!ExceptionClass) {
- ExceptionClass = this.JisonParserError;
- }
- throw new ExceptionClass(str, hash);
- }
-},
-parse: function parse(input) {
- var self = this;
- var stack = new Array(128); // token stack: stores token which leads to state at the same index (column storage)
- var sstack = new Array(128); // state stack: stores states (column storage)
-
- var vstack = new Array(128); // semantic value stack
- var lstack = new Array(128); // location stack
- var table = this.table;
- var sp = 0; // 'stack pointer': index into the stacks
- var yyloc;
-
-
-
-
- var symbol = 0;
-
-
-
- var TERROR = this.TERROR;
- var EOF = this.EOF;
- var ERROR_RECOVERY_TOKEN_DISCARD_COUNT = (this.options.errorRecoveryTokenDiscardCount | 0) || 3;
- var NO_ACTION = [0, 35 /* === table.length :: ensures that anyone using this new state will fail dramatically! */];
-
- var lexer;
- if (this.__lexer__) {
- lexer = this.__lexer__;
- } else {
- lexer = this.__lexer__ = Object.create(this.lexer);
- }
-
- var sharedState_yy = {
- parseError: undefined,
- quoteName: undefined,
- lexer: undefined,
- parser: undefined,
- pre_parse: undefined,
- post_parse: undefined,
- pre_lex: undefined,
- post_lex: undefined // WARNING: must be written this way for the code expanders to work correctly in both ES5 and ES6 modes!
- };
-
- var ASSERT;
- if (typeof assert !== 'function') {
- ASSERT = function JisonAssert(cond, msg) {
- if (!cond) {
- throw new Error('assertion failed: ' + (msg || '***'));
- }
- };
- } else {
- ASSERT = assert;
- }
-
- this.yyGetSharedState = function yyGetSharedState() {
- return sharedState_yy;
- };
-
-
- // shallow clone objects, straight copy of simple `src` values
- // e.g. `lexer.yytext` MAY be a complex value object,
- // rather than a simple string/value.
- function shallow_copy(src) {
- if (typeof src === 'object') {
- var dst = {};
- for (var k in src) {
- if (Object.prototype.hasOwnProperty.call(src, k)) {
- dst[k] = src[k];
- }
- }
- return dst;
- }
- return src;
- }
- function shallow_copy_noclobber(dst, src) {
- for (var k in src) {
- if (typeof dst[k] === 'undefined' && Object.prototype.hasOwnProperty.call(src, k)) {
- dst[k] = src[k];
- }
- }
- }
- function copy_yylloc(loc) {
- var rv = shallow_copy(loc);
- if (rv && rv.range) {
- rv.range = rv.range.slice(0);
- }
- return rv;
- }
-
- // copy state
- shallow_copy_noclobber(sharedState_yy, this.yy);
-
- sharedState_yy.lexer = lexer;
- sharedState_yy.parser = this;
-
-
-
-
-
-
- // Does the shared state override the default `parseError` that already comes with this instance?
- if (typeof sharedState_yy.parseError === 'function') {
- this.parseError = function parseErrorAlt(str, hash, ExceptionClass) {
- if (!ExceptionClass) {
- ExceptionClass = this.JisonParserError;
- }
- return sharedState_yy.parseError.call(this, str, hash, ExceptionClass);
- };
- } else {
- this.parseError = this.originalParseError;
- }
-
- // Does the shared state override the default `quoteName` that already comes with this instance?
- if (typeof sharedState_yy.quoteName === 'function') {
- this.quoteName = function quoteNameAlt(id_str) {
- return sharedState_yy.quoteName.call(this, id_str);
- };
- } else {
- this.quoteName = this.originalQuoteName;
- }
-
- // set up the cleanup function; make it an API so that external code can re-use this one in case of
- // calamities or when the `%options no-try-catch` option has been specified for the grammar, in which
- // case this parse() API method doesn't come with a `finally { ... }` block any more!
- //
- // NOTE: as this API uses parse() as a closure, it MUST be set again on every parse() invocation,
- // or else your `sharedState`, etc. references will be *wrong*!
- this.cleanupAfterParse = function parser_cleanupAfterParse(resultValue, invoke_post_methods, do_not_nuke_errorinfos) {
- var rv;
-
- if (invoke_post_methods) {
- var hash;
-
- if (sharedState_yy.post_parse || this.post_parse) {
- // create an error hash info instance: we re-use this API in a **non-error situation**
- // as this one delivers all parser internals ready for access by userland code.
- hash = this.constructParseErrorInfo(null /* no error! */, null /* no exception! */, null, false);
- }
-
- if (sharedState_yy.post_parse) {
- rv = sharedState_yy.post_parse.call(this, sharedState_yy, resultValue, hash);
- if (typeof rv !== 'undefined') resultValue = rv;
- }
- if (this.post_parse) {
- rv = this.post_parse.call(this, sharedState_yy, resultValue, hash);
- if (typeof rv !== 'undefined') resultValue = rv;
- }
-
- // cleanup:
- if (hash && hash.destroy) {
- hash.destroy();
- }
- }
-
- if (this.__reentrant_call_depth > 1) return resultValue; // do not (yet) kill the sharedState when this is a reentrant run.
-
- // clean up the lingering lexer structures as well:
- if (lexer.cleanupAfterLex) {
- lexer.cleanupAfterLex(do_not_nuke_errorinfos);
- }
-
- // prevent lingering circular references from causing memory leaks:
- if (sharedState_yy) {
- sharedState_yy.lexer = undefined;
- sharedState_yy.parser = undefined;
- if (lexer.yy === sharedState_yy) {
- lexer.yy = undefined;
- }
- }
- sharedState_yy = undefined;
- this.parseError = this.originalParseError;
- this.quoteName = this.originalQuoteName;
-
- // nuke the vstack[] array at least as that one will still reference obsoleted user values.
- // To be safe, we nuke the other internal stack columns as well...
- stack.length = 0; // fastest way to nuke an array without overly bothering the GC
- sstack.length = 0;
- lstack.length = 0;
- vstack.length = 0;
- sp = 0;
-
- // nuke the error hash info instances created during this run.
- // Userland code must COPY any data/references
- // in the error hash instance(s) it is more permanently interested in.
- if (!do_not_nuke_errorinfos) {
- for (var i = this.__error_infos.length - 1; i >= 0; i--) {
- var el = this.__error_infos[i];
- if (el && typeof el.destroy === 'function') {
- el.destroy();
- }
- }
- this.__error_infos.length = 0;
-
-
- }
-
- return resultValue;
- };
-
- // merge yylloc info into a new yylloc instance.
- //
- // `first_index` and `last_index` MAY be UNDEFINED/NULL or these are indexes into the `lstack[]` location stack array.
- //
- // `first_yylloc` and `last_yylloc` MAY be UNDEFINED/NULL or explicit (custom or regular) `yylloc` instances, in which
- // case these override the corresponding first/last indexes.
- //
- // `dont_look_back` is an optional flag (default: FALSE), which instructs this merge operation NOT to search
- // through the parse location stack for a location, which would otherwise be used to construct the new (epsilon!)
- // yylloc info.
- //
- // Note: epsilon rule's yylloc situation is detected by passing both `first_index` and `first_yylloc` as UNDEFINED/NULL.
- this.yyMergeLocationInfo = function parser_yyMergeLocationInfo(first_index, last_index, first_yylloc, last_yylloc, dont_look_back) {
- var i1 = first_index | 0,
- i2 = last_index | 0;
- var l1 = first_yylloc,
- l2 = last_yylloc;
- var rv;
-
- // rules:
- // - first/last yylloc entries override first/last indexes
-
- if (!l1) {
- if (first_index != null) {
- for (var i = i1; i <= i2; i++) {
- l1 = lstack[i];
- if (l1) {
- break;
- }
- }
- }
- }
-
- if (!l2) {
- if (last_index != null) {
- for (var i = i2; i >= i1; i--) {
- l2 = lstack[i];
- if (l2) {
- break;
- }
- }
- }
- }
-
- // - detect if an epsilon rule is being processed and act accordingly:
- if (!l1 && first_index == null) {
- // epsilon rule span merger. With optional look-ahead in l2.
- if (!dont_look_back) {
- for (var i = (i1 || sp) - 1; i >= 0; i--) {
- l1 = lstack[i];
- if (l1) {
- break;
- }
- }
- }
- if (!l1) {
- if (!l2) {
- // when we still don't have any valid yylloc info, we're looking at an epsilon rule
- // without look-ahead and no preceding terms and/or `dont_look_back` set:
- // in that case we ca do nothing but return NULL/UNDEFINED:
- return undefined;
- } else {
- // shallow-copy L2: after all, we MAY be looking
- // at unconventional yylloc info objects...
- rv = shallow_copy(l2);
- if (rv.range) {
- // shallow copy the yylloc ranges info to prevent us from modifying the original arguments' entries:
- rv.range = rv.range.slice(0);
- }
- return rv;
- }
- } else {
- // shallow-copy L1, then adjust first col/row 1 column past the end.
- rv = shallow_copy(l1);
- rv.first_line = rv.last_line;
- rv.first_column = rv.last_column;
- if (rv.range) {
- // shallow copy the yylloc ranges info to prevent us from modifying the original arguments' entries:
- rv.range = rv.range.slice(0);
- rv.range[0] = rv.range[1];
- }
-
- if (l2) {
- // shallow-mixin L2, then adjust last col/row accordingly.
- shallow_copy_noclobber(rv, l2);
- rv.last_line = l2.last_line;
- rv.last_column = l2.last_column;
- if (rv.range && l2.range) {
- rv.range[1] = l2.range[1];
- }
- }
- return rv;
- }
- }
-
- if (!l1) {
- l1 = l2;
- l2 = null;
- }
- if (!l1) {
- return undefined;
- }
-
- // shallow-copy L1|L2, before we try to adjust the yylloc values: after all, we MAY be looking
- // at unconventional yylloc info objects...
- rv = shallow_copy(l1);
-
- // first_line: ...,
- // first_column: ...,
- // last_line: ...,
- // last_column: ...,
- if (rv.range) {
- // shallow copy the yylloc ranges info to prevent us from modifying the original arguments' entries:
- rv.range = rv.range.slice(0);
- }
-
- if (l2) {
- shallow_copy_noclobber(rv, l2);
- rv.last_line = l2.last_line;
- rv.last_column = l2.last_column;
- if (rv.range && l2.range) {
- rv.range[1] = l2.range[1];
- }
- }
-
- return rv;
- };
-
- // NOTE: as this API uses parse() as a closure, it MUST be set again on every parse() invocation,
- // or else your `lexer`, `sharedState`, etc. references will be *wrong*!
- this.constructParseErrorInfo = function parser_constructParseErrorInfo(msg, ex, expected, recoverable) {
- var pei = {
- errStr: msg,
- exception: ex,
- text: lexer.match,
- value: lexer.yytext,
- token: this.describeSymbol(symbol) || symbol,
- token_id: symbol,
- line: lexer.yylineno,
- loc: copy_yylloc(lexer.yylloc),
- expected: expected,
- recoverable: recoverable,
- state: state,
- action: action,
- new_state: newState,
- symbol_stack: stack,
- state_stack: sstack,
- value_stack: vstack,
- location_stack: lstack,
- stack_pointer: sp,
- yy: sharedState_yy,
- lexer: lexer,
- parser: this,
-
- // and make sure the error info doesn't stay due to potential
- // ref cycle via userland code manipulations.
- // These would otherwise all be memory leak opportunities!
- //
- // Note that only array and object references are nuked as those
- // constitute the set of elements which can produce a cyclic ref.
- // The rest of the members is kept intact as they are harmless.
- destroy: function destructParseErrorInfo() {
- // remove cyclic references added to error info:
- // info.yy = null;
- // info.lexer = null;
- // info.value = null;
- // info.value_stack = null;
- // ...
- var rec = !!this.recoverable;
- for (var key in this) {
- if (this.hasOwnProperty(key) && typeof key === 'object') {
- this[key] = undefined;
- }
- }
- this.recoverable = rec;
- }
- };
- // track this instance so we can `destroy()` it once we deem it superfluous and ready for garbage collection!
- this.__error_infos.push(pei);
- return pei;
- };
-
-
-
-
-
-
-
-
-
-
-
-
-
- function getNonTerminalFromCode(symbol) {
- var tokenName = self.getSymbolName(symbol);
- if (!tokenName) {
- tokenName = symbol;
- }
- return tokenName;
- }
-
-
- function stdLex() {
- var token = lexer.lex();
- // if token isn't its numeric value, convert
- if (typeof token !== 'number') {
- token = self.symbols_[token] || token;
- }
-
- return token || EOF;
- }
-
- function fastLex() {
- var token = lexer.fastLex();
- // if token isn't its numeric value, convert
- if (typeof token !== 'number') {
- token = self.symbols_[token] || token;
- }
-
- return token || EOF;
- }
-
- var lex = stdLex;
-
-
- var state, action, r, t;
- var yyval = {
- $: true,
- _$: undefined,
- yy: sharedState_yy
- };
- var p;
- var yyrulelen;
- var this_production;
- var newState;
- var retval = false;
-
-
- try {
- this.__reentrant_call_depth++;
-
- lexer.setInput(input, sharedState_yy);
-
- // NOTE: we *assume* no lexer pre/post handlers are set up *after*
- // this initial `setInput()` call: hence we can now check and decide
- // whether we'll go with the standard, slower, lex() API or the
- // `fast_lex()` one:
- if (typeof lexer.canIUse === 'function') {
- var lexerInfo = lexer.canIUse();
- if (lexerInfo.fastLex && typeof fastLex === 'function') {
- lex = fastLex;
- }
- }
-
- yyloc = lexer.yylloc;
- lstack[sp] = yyloc;
- vstack[sp] = null;
- sstack[sp] = 0;
- stack[sp] = 0;
- ++sp;
-
-
-
-
-
- if (this.pre_parse) {
- this.pre_parse.call(this, sharedState_yy);
- }
- if (sharedState_yy.pre_parse) {
- sharedState_yy.pre_parse.call(this, sharedState_yy);
- }
-
- newState = sstack[sp - 1];
- for (;;) {
- // retrieve state number from top of stack
- state = newState; // sstack[sp - 1];
-
- // use default actions if available
- if (this.defaultActions[state]) {
- action = 2;
- newState = this.defaultActions[state];
- } else {
- // The single `==` condition below covers both these `===` comparisons in a single
- // operation:
- //
- // if (symbol === null || typeof symbol === 'undefined') ...
- if (!symbol) {
- symbol = lex();
- }
- // read action for current state and first input
- t = (table[state] && table[state][symbol]) || NO_ACTION;
- newState = t[1];
- action = t[0];
-
-
-
-
-
-
-
-
-
-
-
- // handle parse error
- if (!action) {
- var errStr;
- var errSymbolDescr = (this.describeSymbol(symbol) || symbol);
- var expected = this.collect_expected_token_set(state);
-
- // Report error
- if (typeof lexer.yylineno === 'number') {
- errStr = 'Parse error on line ' + (lexer.yylineno + 1) + ': ';
- } else {
- errStr = 'Parse error: ';
- }
- if (typeof lexer.showPosition === 'function') {
- errStr += '\n' + lexer.showPosition(79 - 10, 10) + '\n';
- }
- if (expected.length) {
- errStr += 'Expecting ' + expected.join(', ') + ', got unexpected ' + errSymbolDescr;
- } else {
- errStr += 'Unexpected ' + errSymbolDescr;
- }
- // we cannot recover from the error!
- p = this.constructParseErrorInfo(errStr, null, expected, false);
- r = this.parseError(p.errStr, p, this.JisonParserError);
- if (typeof r !== 'undefined') {
- retval = r;
- }
- break;
- }
-
-
- }
-
-
-
-
-
-
-
-
-
-
- switch (action) {
- // catch misc. parse failures:
- default:
- // this shouldn't happen, unless resolve defaults are off
- if (action instanceof Array) {
- p = this.constructParseErrorInfo('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol, null, null, false);
- r = this.parseError(p.errStr, p, this.JisonParserError);
- if (typeof r !== 'undefined') {
- retval = r;
- }
- break;
- }
- // Another case of better safe than sorry: in case state transitions come out of another error recovery process
- // or a buggy LUT (LookUp Table):
- p = this.constructParseErrorInfo('Parsing halted. No viable error recovery approach available due to internal system failure.', null, null, false);
- r = this.parseError(p.errStr, p, this.JisonParserError);
- if (typeof r !== 'undefined') {
- retval = r;
- }
- break;
-
- // shift:
- case 1:
- stack[sp] = symbol;
- vstack[sp] = lexer.yytext;
- lstack[sp] = copy_yylloc(lexer.yylloc);
- sstack[sp] = newState; // push state
-
- ++sp;
- symbol = 0;
-
-
-
-
- // Pick up the lexer details for the current symbol as that one is not 'look-ahead' any more:
-
-
-
- yyloc = lexer.yylloc;
- continue;
-
- // reduce:
- case 2:
-
-
-
- this_production = this.productions_[newState - 1]; // `this.productions_[]` is zero-based indexed while states start from 1 upwards...
- yyrulelen = this_production[1];
-
-
-
-
-
-
-
-
-
-
- r = this.performAction.call(yyval, yyloc, newState, sp - 1, vstack, lstack);
-
- if (typeof r !== 'undefined') {
- retval = r;
- break;
- }
-
- // pop off stack
- sp -= yyrulelen;
-
- // don't overwrite the `symbol` variable: use a local var to speed things up:
- var ntsymbol = this_production[0]; // push nonterminal (reduce)
- stack[sp] = ntsymbol;
- vstack[sp] = yyval.$;
- lstack[sp] = yyval._$;
- // goto new state = table[STATE][NONTERMINAL]
- newState = table[sstack[sp - 1]][ntsymbol];
- sstack[sp] = newState;
- ++sp;
-
-
-
-
-
-
-
-
-
- continue;
-
- // accept:
- case 3:
- if (sp !== -2) {
- retval = true;
- // Return the `$accept` rule's `$$` result, if available.
- //
- // Also note that JISON always adds this top-most `$accept` rule (with implicit,
- // default, action):
- //
- // $accept: <startSymbol> $end
- // %{ $$ = $1; @$ = @1; %}
- //
- // which, combined with the parse kernel's `$accept` state behaviour coded below,
- // will produce the `$$` value output of the <startSymbol> rule as the parse result,
- // IFF that result is *not* `undefined`. (See also the parser kernel code.)
- //
- // In code:
- //
- // %{
- // @$ = @1; // if location tracking support is included
- // if (typeof $1 !== 'undefined')
- // return $1;
- // else
- // return true; // the default parse result if the rule actions don't produce anything
- // %}
- sp--;
- if (typeof vstack[sp] !== 'undefined') {
- retval = vstack[sp];
- }
- }
- break;
- }
-
- // break out of loop: we accept or fail with error
- break;
- }
- } catch (ex) {
- // report exceptions through the parseError callback too, but keep the exception intact
- // if it is a known parser or lexer error which has been thrown by parseError() already:
- if (ex instanceof this.JisonParserError) {
- throw ex;
- }
- else if (lexer && typeof lexer.JisonLexerError === 'function' && ex instanceof lexer.JisonLexerError) {
- throw ex;
- }
-
- p = this.constructParseErrorInfo('Parsing aborted due to exception.', ex, null, false);
- retval = false;
- r = this.parseError(p.errStr, p, this.JisonParserError);
- if (typeof r !== 'undefined') {
- retval = r;
- }
- } finally {
- retval = this.cleanupAfterParse(retval, true, true);
- this.__reentrant_call_depth--;
- } // /finally
-
- return retval;
-}
-};
-parser.originalParseError = parser.parseError;
-parser.originalQuoteName = parser.quoteName;
-/* lexer generated by jison-lex 0.6.1-215 */
-
-/*
- * Returns a Lexer object of the following structure:
- *
- * Lexer: {
- * yy: {} The so-called "shared state" or rather the *source* of it;
- * the real "shared state" `yy` passed around to
- * the rule actions, etc. is a direct reference!
- *
- * This "shared context" object was passed to the lexer by way of
- * the `lexer.setInput(str, yy)` API before you may use it.
- *
- * This "shared context" object is passed to the lexer action code in `performAction()`
- * so userland code in the lexer actions may communicate with the outside world
- * and/or other lexer rules' actions in more or less complex ways.
- *
- * }
- *
- * Lexer.prototype: {
- * EOF: 1,
- * ERROR: 2,
- *
- * yy: The overall "shared context" object reference.
- *
- * JisonLexerError: function(msg, hash),
- *
- * performAction: function lexer__performAction(yy, yyrulenumber, YY_START),
- *
- * The function parameters and `this` have the following value/meaning:
- * - `this` : reference to the `lexer` instance.
- * `yy_` is an alias for `this` lexer instance reference used internally.
- *
- * - `yy` : a reference to the `yy` "shared state" object which was passed to the lexer
- * by way of the `lexer.setInput(str, yy)` API before.
- *
- * Note:
- * The extra arguments you specified in the `%parse-param` statement in your
- * **parser** grammar definition file are passed to the lexer via this object
- * reference as member variables.
- *
- * - `yyrulenumber` : index of the matched lexer rule (regex), used internally.
- *
- * - `YY_START`: the current lexer "start condition" state.
- *
- * parseError: function(str, hash, ExceptionClass),
- *
- * constructLexErrorInfo: function(error_message, is_recoverable),
- * Helper function.
- * Produces a new errorInfo 'hash object' which can be passed into `parseError()`.
- * See it's use in this lexer kernel in many places; example usage:
- *
- * var infoObj = lexer.constructParseErrorInfo('fail!', true);
- * var retVal = lexer.parseError(infoObj.errStr, infoObj, lexer.JisonLexerError);
- *
- * options: { ... lexer %options ... },
- *
- * lex: function(),
- * Produce one token of lexed input, which was passed in earlier via the `lexer.setInput()` API.
- * You MAY use the additional `args...` parameters as per `%parse-param` spec of the **lexer** grammar:
- * these extra `args...` are added verbatim to the `yy` object reference as member variables.
- *
- * WARNING:
- * Lexer's additional `args...` parameters (via lexer's `%parse-param`) MAY conflict with
- * any attributes already added to `yy` by the **parser** or the jison run-time;
- * when such a collision is detected an exception is thrown to prevent the generated run-time
- * from silently accepting this confusing and potentially hazardous situation!
- *
- * cleanupAfterLex: function(do_not_nuke_errorinfos),
- * Helper function.
- *
- * This helper API is invoked when the **parse process** has completed: it is the responsibility
- * of the **parser** (or the calling userland code) to invoke this method once cleanup is desired.
- *
- * This helper may be invoked by user code to ensure the internal lexer gets properly garbage collected.
- *
- * setInput: function(input, [yy]),
- *
- *
- * input: function(),
- *
- *
- * unput: function(str),
- *
- *
- * more: function(),
- *
- *
- * reject: function(),
- *
- *
- * less: function(n),
- *
- *
- * pastInput: function(n),
- *
- *
- * upcomingInput: function(n),
- *
- *
- * showPosition: function(),
- *
- *
- * test_match: function(regex_match_array, rule_index),
- *
- *
- * next: function(),
- *
- *
- * begin: function(condition),
- *
- *
- * pushState: function(condition),
- *
- *
- * popState: function(),
- *
- *
- * topState: function(),
- *
- *
- * _currentRules: function(),
- *
- *
- * stateStackSize: function(),
- *
- *
- * performAction: function(yy, yy_, yyrulenumber, YY_START),
- *
- *
- * rules: [...],
- *
- *
- * conditions: {associative list: name ==> set},
- * }
- *
- *
- * token location info (`yylloc`): {
- * first_line: n,
- * last_line: n,
- * first_column: n,
- * last_column: n,
- * range: [start_number, end_number]
- * (where the numbers are indexes into the input string, zero-based)
- * }
- *
- * ---
- *
- * The `parseError` function receives a 'hash' object with these members for lexer errors:
- *
- * {
- * text: (matched text)
- * token: (the produced terminal token, if any)
- * token_id: (the produced terminal token numeric ID, if any)
- * line: (yylineno)
- * loc: (yylloc)
- * recoverable: (boolean: TRUE when the parser MAY have an error recovery rule
- * available for this particular error)
- * yy: (object: the current parser internal "shared state" `yy`
- * as is also available in the rule actions; this can be used,
- * for instance, for advanced error analysis and reporting)
- * lexer: (reference to the current lexer instance used by the parser)
- * }
- *
- * while `this` will reference the current lexer instance.
- *
- * When `parseError` is invoked by the lexer, the default implementation will
- * attempt to invoke `yy.parser.parseError()`; when this callback is not provided
- * it will try to invoke `yy.parseError()` instead. When that callback is also not
- * provided, a `JisonLexerError` exception will be thrown containing the error
- * message and `hash`, as constructed by the `constructLexErrorInfo()` API.
- *
- * Note that the lexer's `JisonLexerError` error class is passed via the
- * `ExceptionClass` argument, which is invoked to construct the exception
- * instance to be thrown, so technically `parseError` will throw the object
- * produced by the `new ExceptionClass(str, hash)` JavaScript expression.
- *
- * ---
- *
- * You can specify lexer options by setting / modifying the `.options` object of your Lexer instance.
- * These options are available:
- *
- * (Options are permanent.)
- *
- * yy: {
- * parseError: function(str, hash, ExceptionClass)
- * optional: overrides the default `parseError` function.
- * }
- *
- * lexer.options: {
- * pre_lex: function()
- * optional: is invoked before the lexer is invoked to produce another token.
- * `this` refers to the Lexer object.
- * post_lex: function(token) { return token; }
- * optional: is invoked when the lexer has produced a token `token`;
- * this function can override the returned token value by returning another.
- * When it does not return any (truthy) value, the lexer will return
- * the original `token`.
- * `this` refers to the Lexer object.
- *
- * WARNING: the next set of options are not meant to be changed. They echo the abilities of
- * the lexer as per when it was compiled!
- *
- * ranges: boolean
- * optional: `true` ==> token location info will include a .range[] member.
- * flex: boolean
- * optional: `true` ==> flex-like lexing behaviour where the rules are tested
- * exhaustively to find the longest match.
- * backtrack_lexer: boolean
- * optional: `true` ==> lexer regexes are tested in order and for invoked;
- * the lexer terminates the scan when a token is returned by the action code.
- * xregexp: boolean
- * optional: `true` ==> lexer rule regexes are "extended regex format" requiring the
- * `XRegExp` library. When this %option has not been specified at compile time, all lexer
- * rule regexes have been written as standard JavaScript RegExp expressions.
- * }
- */
-
-
-var lexer = function() {
- /**
- * See also:
- * http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript/#35881508
- * but we keep the prototype.constructor and prototype.name assignment lines too for compatibility
- * with userland code which might access the derived class in a 'classic' way.
- *
- * @public
- * @constructor
- * @nocollapse
- */
- function JisonLexerError(msg, hash) {
- Object.defineProperty(this, 'name', {
- enumerable: false,
- writable: false,
- value: 'JisonLexerError'
- });
-
- if (msg == null)
- msg = '???';
-
- Object.defineProperty(this, 'message', {
- enumerable: false,
- writable: true,
- value: msg
- });
-
- this.hash = hash;
- var stacktrace;
-
- if (hash && hash.exception instanceof Error) {
- var ex2 = hash.exception;
- this.message = ex2.message || msg;
- stacktrace = ex2.stack;
- }
-
- if (!stacktrace) {
- if (Error.hasOwnProperty('captureStackTrace')) {
- // V8
- Error.captureStackTrace(this, this.constructor);
- } else {
- stacktrace = new Error(msg).stack;
- }
- }
-
- if (stacktrace) {
- Object.defineProperty(this, 'stack', {
- enumerable: false,
- writable: false,
- value: stacktrace
- });
- }
- }
-
- if (typeof Object.setPrototypeOf === 'function') {
- Object.setPrototypeOf(JisonLexerError.prototype, Error.prototype);
- } else {
- JisonLexerError.prototype = Object.create(Error.prototype);
- }
-
- JisonLexerError.prototype.constructor = JisonLexerError;
- JisonLexerError.prototype.name = 'JisonLexerError';
-
- var lexer = {
-
-// Code Generator Information Report
-// ---------------------------------
-//
-// Options:
-//
-// backtracking: .................... false
-// location.ranges: ................. false
-// location line+column tracking: ... true
-//
-//
-// Forwarded Parser Analysis flags:
-//
-// uses yyleng: ..................... false
-// uses yylineno: ................... false
-// uses yytext: ..................... false
-// uses yylloc: ..................... false
-// uses lexer values: ............... true / true
-// location tracking: ............... true
-// location assignment: ............. true
-//
-//
-// Lexer Analysis flags:
-//
-// uses yyleng: ..................... ???
-// uses yylineno: ................... ???
-// uses yytext: ..................... ???
-// uses yylloc: ..................... ???
-// uses ParseError API: ............. ???
-// uses yyerror: .................... ???
-// uses location tracking & editing: ???
-// uses more() API: ................. ???
-// uses unput() API: ................ ???
-// uses reject() API: ............... ???
-// uses less() API: ................. ???
-// uses display APIs pastInput(), upcomingInput(), showPosition():
-// ............................. ???
-// uses describeYYLLOC() API: ....... ???
-//
-// --------- END OF REPORT -----------
-
-EOF: 1,
- ERROR: 2,
-
- // JisonLexerError: JisonLexerError, /// <-- injected by the code generator
-
- // options: {}, /// <-- injected by the code generator
-
- // yy: ..., /// <-- injected by setInput()
-
- __currentRuleSet__: null, /// INTERNAL USE ONLY: internal rule set cache for the current lexer state
-
- __error_infos: [], /// INTERNAL USE ONLY: the set of lexErrorInfo objects created since the last cleanup
- __decompressed: false, /// INTERNAL USE ONLY: mark whether the lexer instance has been 'unfolded' completely and is now ready for use
- done: false, /// INTERNAL USE ONLY
- _backtrack: false, /// INTERNAL USE ONLY
- _input: '', /// INTERNAL USE ONLY
- _more: false, /// INTERNAL USE ONLY
- _signaled_error_token: false, /// INTERNAL USE ONLY
- conditionStack: [], /// INTERNAL USE ONLY; managed via `pushState()`, `popState()`, `topState()` and `stateStackSize()`
- match: '', /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks input which has been matched so far for the lexer token under construction. `match` is identical to `yytext` except that this one still contains the matched input string after `lexer.performAction()` has been invoked, where userland code MAY have changed/replaced the `yytext` value entirely!
- matched: '', /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks entire input which has been matched so far
- matches: false, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks RE match result for last (successful) match attempt
- yytext: '', /// ADVANCED USE ONLY: tracks input which has been matched so far for the lexer token under construction; this value is transferred to the parser as the 'token value' when the parser consumes the lexer token produced through a call to the `lex()` API.
- offset: 0, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks the 'cursor position' in the input string, i.e. the number of characters matched so far
- yyleng: 0, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: length of matched input for the token under construction (`yytext`)
- yylineno: 0, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: 'line number' at which the token under construction is located
- yylloc: null, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks location info (lines + columns) for the token under construction
-
- /**
- * INTERNAL USE: construct a suitable error info hash object instance for `parseError`.
- *
- * @public
- * @this {RegExpLexer}
- */
- constructLexErrorInfo: function lexer_constructLexErrorInfo(msg, recoverable, show_input_position) {
- msg = '' + msg;
-
- // heuristic to determine if the error message already contains a (partial) source code dump
- // as produced by either `showPosition()` or `prettyPrintRange()`:
- if (show_input_position == undefined) {
- show_input_position = !(msg.indexOf('\n') > 0 && msg.indexOf('^') > 0);
- }
-
- if (this.yylloc && show_input_position) {
- if (typeof this.prettyPrintRange === 'function') {
- var pretty_src = this.prettyPrintRange(this.yylloc);
-
- if (!/\n\s*$/.test(msg)) {
- msg += '\n';
- }
-
- msg += '\n Erroneous area:\n' + this.prettyPrintRange(this.yylloc);
- } else if (typeof this.showPosition === 'function') {
- var pos_str = this.showPosition();
-
- if (pos_str) {
- if (msg.length && msg[msg.length - 1] !== '\n' && pos_str[0] !== '\n') {
- msg += '\n' + pos_str;
- } else {
- msg += pos_str;
- }
- }
- }
- }
-
- /** @constructor */
- var pei = {
- errStr: msg,
- recoverable: !!recoverable,
- text: this.match, // This one MAY be empty; userland code should use the `upcomingInput` API to obtain more text which follows the 'lexer cursor position'...
- token: null,
- line: this.yylineno,
- loc: this.yylloc,
- yy: this.yy,
- lexer: this,
-
- /**
- * and make sure the error info doesn't stay due to potential
- * ref cycle via userland code manipulations.
- * These would otherwise all be memory leak opportunities!
- *
- * Note that only array and object references are nuked as those
- * constitute the set of elements which can produce a cyclic ref.
- * The rest of the members is kept intact as they are harmless.
- *
- * @public
- * @this {LexErrorInfo}
- */
- destroy: function destructLexErrorInfo() {
- // remove cyclic references added to error info:
- // info.yy = null;
- // info.lexer = null;
- // ...
- var rec = !!this.recoverable;
-
- for (var key in this) {
- if (this.hasOwnProperty(key) && typeof key === 'object') {
- this[key] = undefined;
- }
- }
-
- this.recoverable = rec;
- }
- };
-
- // track this instance so we can `destroy()` it once we deem it superfluous and ready for garbage collection!
- this.__error_infos.push(pei);
-
- return pei;
- },
-
- /**
- * handler which is invoked when a lexer error occurs.
- *
- * @public
- * @this {RegExpLexer}
- */
- parseError: function lexer_parseError(str, hash, ExceptionClass) {
- if (!ExceptionClass) {
- ExceptionClass = this.JisonLexerError;
- }
-
- if (this.yy) {
- if (this.yy.parser && typeof this.yy.parser.parseError === 'function') {
- return this.yy.parser.parseError.call(this, str, hash, ExceptionClass) || this.ERROR;
- } else if (typeof this.yy.parseError === 'function') {
- return this.yy.parseError.call(this, str, hash, ExceptionClass) || this.ERROR;
- }
- }
-
- throw new ExceptionClass(str, hash);
- },
-
- /**
- * method which implements `yyerror(str, ...args)` functionality for use inside lexer actions.
- *
- * @public
- * @this {RegExpLexer}
- */
- yyerror: function yyError(str /*, ...args */) {
- var lineno_msg = '';
-
- if (this.yylloc) {
- lineno_msg = ' on line ' + (this.yylineno + 1);
- }
-
- var p = this.constructLexErrorInfo(
- 'Lexical error' + lineno_msg + ': ' + str,
- this.options.lexerErrorsAreRecoverable
- );
-
- // Add any extra args to the hash under the name `extra_error_attributes`:
- var args = Array.prototype.slice.call(arguments, 1);
-
- if (args.length) {
- p.extra_error_attributes = args;
- }
-
- return this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;
- },
-
- /**
- * final cleanup function for when we have completed lexing the input;
- * make it an API so that external code can use this one once userland
- * code has decided it's time to destroy any lingering lexer error
- * hash object instances and the like: this function helps to clean
- * up these constructs, which *may* carry cyclic references which would
- * otherwise prevent the instances from being properly and timely
- * garbage-collected, i.e. this function helps prevent memory leaks!
- *
- * @public
- * @this {RegExpLexer}
- */
- cleanupAfterLex: function lexer_cleanupAfterLex(do_not_nuke_errorinfos) {
- // prevent lingering circular references from causing memory leaks:
- this.setInput('', {});
-
- // nuke the error hash info instances created during this run.
- // Userland code must COPY any data/references
- // in the error hash instance(s) it is more permanently interested in.
- if (!do_not_nuke_errorinfos) {
- for (var i = this.__error_infos.length - 1; i >= 0; i--) {
- var el = this.__error_infos[i];
-
- if (el && typeof el.destroy === 'function') {
- el.destroy();
- }
- }
-
- this.__error_infos.length = 0;
- }
-
- return this;
- },
-
- /**
- * clear the lexer token context; intended for internal use only
- *
- * @public
- * @this {RegExpLexer}
- */
- clear: function lexer_clear() {
- this.yytext = '';
- this.yyleng = 0;
- this.match = '';
-
- // - DO NOT reset `this.matched`
- this.matches = false;
-
- this._more = false;
- this._backtrack = false;
- var col = (this.yylloc ? this.yylloc.last_column : 0);
-
- this.yylloc = {
- first_line: this.yylineno + 1,
- first_column: col,
- last_line: this.yylineno + 1,
- last_column: col,
- range: [this.offset, this.offset]
- };
- },
-
- /**
- * resets the lexer, sets new input
- *
- * @public
- * @this {RegExpLexer}
- */
- setInput: function lexer_setInput(input, yy) {
- this.yy = yy || this.yy || {};
-
- // also check if we've fully initialized the lexer instance,
- // including expansion work to be done to go from a loaded
- // lexer to a usable lexer:
- if (!this.__decompressed) {
- // step 1: decompress the regex list:
- var rules = this.rules;
-
- for (var i = 0, len = rules.length; i < len; i++) {
- var rule_re = rules[i];
-
- // compression: is the RE an xref to another RE slot in the rules[] table?
- if (typeof rule_re === 'number') {
- rules[i] = rules[rule_re];
- }
- }
-
- // step 2: unfold the conditions[] set to make these ready for use:
- var conditions = this.conditions;
-
- for (var k in conditions) {
- var spec = conditions[k];
- var rule_ids = spec.rules;
- var len = rule_ids.length;
- var rule_regexes = new Array(len + 1); // slot 0 is unused; we use a 1-based index approach here to keep the hottest code in `lexer_next()` fast and simple!
- var rule_new_ids = new Array(len + 1);
-
- for (var i = 0; i < len; i++) {
- var idx = rule_ids[i];
- var rule_re = rules[idx];
- rule_regexes[i + 1] = rule_re;
- rule_new_ids[i + 1] = idx;
- }
-
- spec.rules = rule_new_ids;
- spec.__rule_regexes = rule_regexes;
- spec.__rule_count = len;
- }
-
- this.__decompressed = true;
- }
-
- this._input = input || '';
- this.clear();
- this._signaled_error_token = false;
- this.done = false;
- this.yylineno = 0;
- this.matched = '';
- this.conditionStack = ['INITIAL'];
- this.__currentRuleSet__ = null;
-
- this.yylloc = {
- first_line: 1,
- first_column: 0,
- last_line: 1,
- last_column: 0,
- range: [0, 0]
- };
-
- this.offset = 0;
- return this;
- },
-
- /**
- * edit the remaining input via user-specified callback.
- * This can be used to forward-adjust the input-to-parse,
- * e.g. inserting macro expansions and alike in the
- * input which has yet to be lexed.
- * The behaviour of this API contrasts the `unput()` et al
- * APIs as those act on the *consumed* input, while this
- * one allows one to manipulate the future, without impacting
- * the current `yyloc` cursor location or any history.
- *
- * Use this API to help implement C-preprocessor-like
- * `#include` statements, etc.
- *
- * The provided callback must be synchronous and is
- * expected to return the edited input (string).
- *
- * The `cpsArg` argument value is passed to the callback
- * as-is.
- *
- * `callback` interface:
- * `function callback(input, cpsArg)`
- *
- * - `input` will carry the remaining-input-to-lex string
- * from the lexer.
- * - `cpsArg` is `cpsArg` passed into this API.
- *
- * The `this` reference for the callback will be set to
- * reference this lexer instance so that userland code
- * in the callback can easily and quickly access any lexer
- * API.
- *
- * When the callback returns a non-string-type falsey value,
- * we assume the callback did not edit the input and we
- * will using the input as-is.
- *
- * When the callback returns a non-string-type value, it
- * is converted to a string for lexing via the `"" + retval`
- * operation. (See also why: http://2ality.com/2012/03/converting-to-string.html
- * -- that way any returned object's `toValue()` and `toString()`
- * methods will be invoked in a proper/desirable order.)
- *
- * @public
- * @this {RegExpLexer}
- */
- editRemainingInput: function lexer_editRemainingInput(callback, cpsArg) {
- var rv = callback.call(this, this._input, cpsArg);
-
- if (typeof rv !== 'string') {
- if (rv) {
- this._input = '' + rv;
- }
- // else: keep `this._input` as is.
- } else {
- this._input = rv;
- }
-
- return this;
- },
-
- /**
- * consumes and returns one char from the input
- *
- * @public
- * @this {RegExpLexer}
- */
- input: function lexer_input() {
- if (!this._input) {
- //this.done = true; -- don't set `done` as we want the lex()/next() API to be able to produce one custom EOF token match after this anyhow. (lexer can match special <<EOF>> tokens and perform user action code for a <<EOF>> match, but only does so *once*)
- return null;
- }
-
- var ch = this._input[0];
- this.yytext += ch;
- this.yyleng++;
- this.offset++;
- this.match += ch;
- this.matched += ch;
-
- // Count the linenumber up when we hit the LF (or a stand-alone CR).
- // On CRLF, the linenumber is incremented when you fetch the CR or the CRLF combo
- // and we advance immediately past the LF as well, returning both together as if
- // it was all a single 'character' only.
- var slice_len = 1;
-
- var lines = false;
-
- if (ch === '\n') {
- lines = true;
- } else if (ch === '\r') {
- lines = true;
- var ch2 = this._input[1];
-
- if (ch2 === '\n') {
- slice_len++;
- ch += ch2;
- this.yytext += ch2;
- this.yyleng++;
- this.offset++;
- this.match += ch2;
- this.matched += ch2;
- this.yylloc.range[1]++;
- }
- }
-
- if (lines) {
- this.yylineno++;
- this.yylloc.last_line++;
- this.yylloc.last_column = 0;
- } else {
- this.yylloc.last_column++;
- }
-
- this.yylloc.range[1]++;
- this._input = this._input.slice(slice_len);
- return ch;
- },
-
- /**
- * unshifts one char (or an entire string) into the input
- *
- * @public
- * @this {RegExpLexer}
- */
- unput: function lexer_unput(ch) {
- var len = ch.length;
- var lines = ch.split(/(?:\r\n?|\n)/g);
- this._input = ch + this._input;
- this.yytext = this.yytext.substr(0, this.yytext.length - len);
- this.yyleng = this.yytext.length;
- this.offset -= len;
- this.match = this.match.substr(0, this.match.length - len);
- this.matched = this.matched.substr(0, this.matched.length - len);
-
- if (lines.length > 1) {
- this.yylineno -= lines.length - 1;
- this.yylloc.last_line = this.yylineno + 1;
-
- // Get last entirely matched line into the `pre_lines[]` array's
- // last index slot; we don't mind when other previously
- // matched lines end up in the array too.
- var pre = this.match;
-
- var pre_lines = pre.split(/(?:\r\n?|\n)/g);
-
- if (pre_lines.length === 1) {
- pre = this.matched;
- pre_lines = pre.split(/(?:\r\n?|\n)/g);
- }
-
- this.yylloc.last_column = pre_lines[pre_lines.length - 1].length;
- } else {
- this.yylloc.last_column -= len;
- }
-
- this.yylloc.range[1] = this.yylloc.range[0] + this.yyleng;
- this.done = false;
- return this;
- },
-
- /**
- * cache matched text and append it on next action
- *
- * @public
- * @this {RegExpLexer}
- */
- more: function lexer_more() {
- this._more = true;
- return this;
- },
-
- /**
- * signal the lexer that this rule fails to match the input, so the
- * next matching rule (regex) should be tested instead.
- *
- * @public
- * @this {RegExpLexer}
- */
- reject: function lexer_reject() {
- if (this.options.backtrack_lexer) {
- this._backtrack = true;
- } else {
- // when the `parseError()` call returns, we MUST ensure that the error is registered.
- // We accomplish this by signaling an 'error' token to be produced for the current
- // `.lex()` run.
- var lineno_msg = '';
-
- if (this.yylloc) {
- lineno_msg = ' on line ' + (this.yylineno + 1);
- }
-
- var p = this.constructLexErrorInfo(
- 'Lexical error' + lineno_msg + ': You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).',
- false
- );
-
- this._signaled_error_token = this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;
- }
-
- return this;
- },
-
- /**
- * retain first n characters of the match
- *
- * @public
- * @this {RegExpLexer}
- */
- less: function lexer_less(n) {
- return this.unput(this.match.slice(n));
- },
-
- /**
- * return (part of the) already matched input, i.e. for error
- * messages.
- *
- * Limit the returned string length to `maxSize` (default: 20).
- *
- * Limit the returned string to the `maxLines` number of lines of
- * input (default: 1).
- *
- * Negative limit values equal *unlimited*.
- *
- * @public
- * @this {RegExpLexer}
- */
- pastInput: function lexer_pastInput(maxSize, maxLines) {
- var past = this.matched.substring(0, this.matched.length - this.match.length);
-
- if (maxSize < 0)
- maxSize = past.length;
- else if (!maxSize)
- maxSize = 20;
-
- if (maxLines < 0)
- maxLines = past.length; // can't ever have more input lines than this!
- else if (!maxLines)
- maxLines = 1;
-
- // `substr` anticipation: treat \r\n as a single character and take a little
- // more than necessary so that we can still properly check against maxSize
- // after we've transformed and limited the newLines in here:
- past = past.substr(-maxSize * 2 - 2);
-
- // now that we have a significantly reduced string to process, transform the newlines
- // and chop them, then limit them:
- var a = past.replace(/\r\n|\r/g, '\n').split('\n');
-
- a = a.slice(-maxLines);
- past = a.join('\n');
-
- // When, after limiting to maxLines, we still have too much to return,
- // do add an ellipsis prefix...
- if (past.length > maxSize) {
- past = '...' + past.substr(-maxSize);
- }
-
- return past;
- },
-
- /**
- * return (part of the) upcoming input, i.e. for error messages.
- *
- * Limit the returned string length to `maxSize` (default: 20).
- *
- * Limit the returned string to the `maxLines` number of lines of input (default: 1).
- *
- * Negative limit values equal *unlimited*.
- *
- * > ### NOTE ###
- * >
- * > *"upcoming input"* is defined as the whole of the both
- * > the *currently lexed* input, together with any remaining input
- * > following that. *"currently lexed"* input is the input
- * > already recognized by the lexer but not yet returned with
- * > the lexer token. This happens when you are invoking this API
- * > from inside any lexer rule action code block.
- * >
- *
- * @public
- * @this {RegExpLexer}
- */
- upcomingInput: function lexer_upcomingInput(maxSize, maxLines) {
- var next = this.match;
-
- if (maxSize < 0)
- maxSize = next.length + this._input.length;
- else if (!maxSize)
- maxSize = 20;
-
- if (maxLines < 0)
- maxLines = maxSize; // can't ever have more input lines than this!
- else if (!maxLines)
- maxLines = 1;
-
- // `substring` anticipation: treat \r\n as a single character and take a little
- // more than necessary so that we can still properly check against maxSize
- // after we've transformed and limited the newLines in here:
- if (next.length < maxSize * 2 + 2) {
- next += this._input.substring(0, maxSize * 2 + 2); // substring is faster on Chrome/V8
- }
-
- // now that we have a significantly reduced string to process, transform the newlines
- // and chop them, then limit them:
- var a = next.replace(/\r\n|\r/g, '\n').split('\n');
-
- a = a.slice(0, maxLines);
- next = a.join('\n');
-
- // When, after limiting to maxLines, we still have too much to return,
- // do add an ellipsis postfix...
- if (next.length > maxSize) {
- next = next.substring(0, maxSize) + '...';
- }
-
- return next;
- },
-
- /**
- * return a string which displays the character position where the
- * lexing error occurred, i.e. for error messages
- *
- * @public
- * @this {RegExpLexer}
- */
- showPosition: function lexer_showPosition(maxPrefix, maxPostfix) {
- var pre = this.pastInput(maxPrefix).replace(/\s/g, ' ');
- var c = new Array(pre.length + 1).join('-');
- return pre + this.upcomingInput(maxPostfix).replace(/\s/g, ' ') + '\n' + c + '^';
- },
-
- /**
- * return an YYLLOC info object derived off the given context (actual, preceding, following, current).
- * Use this method when the given `actual` location is not guaranteed to exist (i.e. when
- * it MAY be NULL) and you MUST have a valid location info object anyway:
- * then we take the given context of the `preceding` and `following` locations, IFF those are available,
- * and reconstruct the `actual` location info from those.
- * If this fails, the heuristic is to take the `current` location, IFF available.
- * If this fails as well, we assume the sought location is at/around the current lexer position
- * and then produce that one as a response. DO NOTE that these heuristic/derived location info
- * values MAY be inaccurate!
- *
- * NOTE: `deriveLocationInfo()` ALWAYS produces a location info object *copy* of `actual`, not just
- * a *reference* hence all input location objects can be assumed to be 'constant' (function has no side-effects).
- *
- * @public
- * @this {RegExpLexer}
- */
- deriveLocationInfo: function lexer_deriveYYLLOC(actual, preceding, following, current) {
- var loc = {
- first_line: 1,
- first_column: 0,
- last_line: 1,
- last_column: 0,
- range: [0, 0]
- };
-
- if (actual) {
- loc.first_line = actual.first_line | 0;
- loc.last_line = actual.last_line | 0;
- loc.first_column = actual.first_column | 0;
- loc.last_column = actual.last_column | 0;
-
- if (actual.range) {
- loc.range[0] = actual.range[0] | 0;
- loc.range[1] = actual.range[1] | 0;
- }
- }
-
- if (loc.first_line <= 0 || loc.last_line < loc.first_line) {
- // plan B: heuristic using preceding and following:
- if (loc.first_line <= 0 && preceding) {
- loc.first_line = preceding.last_line | 0;
- loc.first_column = preceding.last_column | 0;
-
- if (preceding.range) {
- loc.range[0] = actual.range[1] | 0;
- }
- }
-
- if ((loc.last_line <= 0 || loc.last_line < loc.first_line) && following) {
- loc.last_line = following.first_line | 0;
- loc.last_column = following.first_column | 0;
-
- if (following.range) {
- loc.range[1] = actual.range[0] | 0;
- }
- }
-
- // plan C?: see if the 'current' location is useful/sane too:
- if (loc.first_line <= 0 && current && (loc.last_line <= 0 || current.last_line <= loc.last_line)) {
- loc.first_line = current.first_line | 0;
- loc.first_column = current.first_column | 0;
-
- if (current.range) {
- loc.range[0] = current.range[0] | 0;
- }
- }
-
- if (loc.last_line <= 0 && current && (loc.first_line <= 0 || current.first_line >= loc.first_line)) {
- loc.last_line = current.last_line | 0;
- loc.last_column = current.last_column | 0;
-
- if (current.range) {
- loc.range[1] = current.range[1] | 0;
- }
- }
- }
-
- // sanitize: fix last_line BEFORE we fix first_line as we use the 'raw' value of the latter
- // or plan D heuristics to produce a 'sensible' last_line value:
- if (loc.last_line <= 0) {
- if (loc.first_line <= 0) {
- loc.first_line = this.yylloc.first_line;
- loc.last_line = this.yylloc.last_line;
- loc.first_column = this.yylloc.first_column;
- loc.last_column = this.yylloc.last_column;
- loc.range[0] = this.yylloc.range[0];
- loc.range[1] = this.yylloc.range[1];
- } else {
- loc.last_line = this.yylloc.last_line;
- loc.last_column = this.yylloc.last_column;
- loc.range[1] = this.yylloc.range[1];
- }
- }
-
- if (loc.first_line <= 0) {
- loc.first_line = loc.last_line;
- loc.first_column = 0; // loc.last_column;
- loc.range[1] = loc.range[0];
- }
-
- if (loc.first_column < 0) {
- loc.first_column = 0;
- }
-
- if (loc.last_column < 0) {
- loc.last_column = (loc.first_column > 0 ? loc.first_column : 80);
- }
-
- return loc;
- },
-
- /**
- * return a string which displays the lines & columns of input which are referenced
- * by the given location info range, plus a few lines of context.
- *
- * This function pretty-prints the indicated section of the input, with line numbers
- * and everything!
- *
- * This function is very useful to provide highly readable error reports, while
- * the location range may be specified in various flexible ways:
- *
- * - `loc` is the location info object which references the area which should be
- * displayed and 'marked up': these lines & columns of text are marked up by `^`
- * characters below each character in the entire input range.
- *
- * - `context_loc` is the *optional* location info object which instructs this
- * pretty-printer how much *leading* context should be displayed alongside
- * the area referenced by `loc`. This can help provide context for the displayed
- * error, etc.
- *
- * When this location info is not provided, a default context of 3 lines is
- * used.
- *
- * - `context_loc2` is another *optional* location info object, which serves
- * a similar purpose to `context_loc`: it specifies the amount of *trailing*
- * context lines to display in the pretty-print output.
- *
- * When this location info is not provided, a default context of 1 line only is
- * used.
- *
- * Special Notes:
- *
- * - when the `loc`-indicated range is very large (about 5 lines or more), then
- * only the first and last few lines of this block are printed while a
- * `...continued...` message will be printed between them.
- *
- * This serves the purpose of not printing a huge amount of text when the `loc`
- * range happens to be huge: this way a manageable & readable output results
- * for arbitrary large ranges.
- *
- * - this function can display lines of input which whave not yet been lexed.
- * `prettyPrintRange()` can access the entire input!
- *
- * @public
- * @this {RegExpLexer}
- */
- prettyPrintRange: function lexer_prettyPrintRange(loc, context_loc, context_loc2) {
- loc = this.deriveLocationInfo(loc, context_loc, context_loc2);
- const CONTEXT = 3;
- const CONTEXT_TAIL = 1;
- const MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT = 2;
- var input = this.matched + this._input;
- var lines = input.split('\n');
- var l0 = Math.max(1, (context_loc ? context_loc.first_line : loc.first_line - CONTEXT));
- var l1 = Math.max(1, (context_loc2 ? context_loc2.last_line : loc.last_line + CONTEXT_TAIL));
- var lineno_display_width = 1 + Math.log10(l1 | 1) | 0;
- var ws_prefix = new Array(lineno_display_width).join(' ');
- var nonempty_line_indexes = [];
-
- var rv = lines.slice(l0 - 1, l1 + 1).map(function injectLineNumber(line, index) {
- var lno = index + l0;
- var lno_pfx = (ws_prefix + lno).substr(-lineno_display_width);
- var rv = lno_pfx + ': ' + line;
- var errpfx = new Array(lineno_display_width + 1).join('^');
- var offset = 2 + 1;
- var len = 0;
-
- if (lno === loc.first_line) {
- offset += loc.first_column;
-
- len = Math.max(
- 2,
- ((lno === loc.last_line ? loc.last_column : line.length)) - loc.first_column + 1
- );
- } else if (lno === loc.last_line) {
- len = Math.max(2, loc.last_column + 1);
- } else if (lno > loc.first_line && lno < loc.last_line) {
- len = Math.max(2, line.length + 1);
- }
-
- if (len) {
- var lead = new Array(offset).join('.');
- var mark = new Array(len).join('^');
- rv += '\n' + errpfx + lead + mark;
-
- if (line.trim().length > 0) {
- nonempty_line_indexes.push(index);
- }
- }
-
- rv = rv.replace(/\t/g, ' ');
- return rv;
- });
-
- // now make sure we don't print an overly large amount of error area: limit it
- // to the top and bottom line count:
- if (nonempty_line_indexes.length > 2 * MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT) {
- var clip_start = nonempty_line_indexes[MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT - 1] + 1;
- var clip_end = nonempty_line_indexes[nonempty_line_indexes.length - MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT] - 1;
- var intermediate_line = new Array(lineno_display_width + 1).join(' ') + ' (...continued...)';
- intermediate_line += '\n' + new Array(lineno_display_width + 1).join('-') + ' (---------------)';
- rv.splice(clip_start, clip_end - clip_start + 1, intermediate_line);
- }
-
- return rv.join('\n');
- },
-
- /**
- * helper function, used to produce a human readable description as a string, given
- * the input `yylloc` location object.
- *
- * Set `display_range_too` to TRUE to include the string character index position(s)
- * in the description if the `yylloc.range` is available.
- *
- * @public
- * @this {RegExpLexer}
- */
- describeYYLLOC: function lexer_describe_yylloc(yylloc, display_range_too) {
- var l1 = yylloc.first_line;
- var l2 = yylloc.last_line;
- var c1 = yylloc.first_column;
- var c2 = yylloc.last_column;
- var dl = l2 - l1;
- var dc = c2 - c1;
- var rv;
-
- if (dl === 0) {
- rv = 'line ' + l1 + ', ';
-
- if (dc <= 1) {
- rv += 'column ' + c1;
- } else {
- rv += 'columns ' + c1 + ' .. ' + c2;
- }
- } else {
- rv = 'lines ' + l1 + '(column ' + c1 + ') .. ' + l2 + '(column ' + c2 + ')';
- }
-
- if (yylloc.range && display_range_too) {
- var r1 = yylloc.range[0];
- var r2 = yylloc.range[1] - 1;
-
- if (r2 <= r1) {
- rv += ' {String Offset: ' + r1 + '}';
- } else {
- rv += ' {String Offset range: ' + r1 + ' .. ' + r2 + '}';
- }
- }
-
- return rv;
- },
-
- /**
- * test the lexed token: return FALSE when not a match, otherwise return token.
- *
- * `match` is supposed to be an array coming out of a regex match, i.e. `match[0]`
- * contains the actually matched text string.
- *
- * Also move the input cursor forward and update the match collectors:
- *
- * - `yytext`
- * - `yyleng`
- * - `match`
- * - `matches`
- * - `yylloc`
- * - `offset`
- *
- * @public
- * @this {RegExpLexer}
- */
- test_match: function lexer_test_match(match, indexed_rule) {
- var token, lines, backup, match_str, match_str_len;
-
- if (this.options.backtrack_lexer) {
- // save context
- backup = {
- yylineno: this.yylineno,
-
- yylloc: {
- first_line: this.yylloc.first_line,
- last_line: this.yylloc.last_line,
- first_column: this.yylloc.first_column,
- last_column: this.yylloc.last_column,
- range: this.yylloc.range.slice(0)
- },
-
- yytext: this.yytext,
- match: this.match,
- matches: this.matches,
- matched: this.matched,
- yyleng: this.yyleng,
- offset: this.offset,
- _more: this._more,
- _input: this._input,
-
- //_signaled_error_token: this._signaled_error_token,
- yy: this.yy,
-
- conditionStack: this.conditionStack.slice(0),
- done: this.done
- };
- }
-
- match_str = match[0];
- match_str_len = match_str.length;
-
- // if (match_str.indexOf('\n') !== -1 || match_str.indexOf('\r') !== -1) {
- lines = match_str.split(/(?:\r\n?|\n)/g);
-
- if (lines.length > 1) {
- this.yylineno += lines.length - 1;
- this.yylloc.last_line = this.yylineno + 1;
- this.yylloc.last_column = lines[lines.length - 1].length;
- } else {
- this.yylloc.last_column += match_str_len;
- }
-
- // }
- this.yytext += match_str;
-
- this.match += match_str;
- this.matched += match_str;
- this.matches = match;
- this.yyleng = this.yytext.length;
- this.yylloc.range[1] += match_str_len;
-
- // previous lex rules MAY have invoked the `more()` API rather than producing a token:
- // those rules will already have moved this `offset` forward matching their match lengths,
- // hence we must only add our own match length now:
- this.offset += match_str_len;
-
- this._more = false;
- this._backtrack = false;
- this._input = this._input.slice(match_str_len);
-
- // calling this method:
- //
- // function lexer__performAction(yy, yyrulenumber, YY_START) {...}
- token = this.performAction.call(
- this,
- this.yy,
- indexed_rule,
- this.conditionStack[this.conditionStack.length - 1] /* = YY_START */
- );
-
- // otherwise, when the action codes are all simple return token statements:
- //token = this.simpleCaseActionClusters[indexed_rule];
-
- if (this.done && this._input) {
- this.done = false;
- }
-
- if (token) {
- return token;
- } else if (this._backtrack) {
- // recover context
- for (var k in backup) {
- this[k] = backup[k];
- }
-
- this.__currentRuleSet__ = null;
- return false; // rule action called reject() implying the next rule should be tested instead.
- } else if (this._signaled_error_token) {
- // produce one 'error' token as `.parseError()` in `reject()`
- // did not guarantee a failure signal by throwing an exception!
- token = this._signaled_error_token;
-
- this._signaled_error_token = false;
- return token;
- }
-
- return false;
- },
-
- /**
- * return next match in input
- *
- * @public
- * @this {RegExpLexer}
- */
- next: function lexer_next() {
- if (this.done) {
- this.clear();
- return this.EOF;
- }
-
- if (!this._input) {
- this.done = true;
- }
-
- var token, match, tempMatch, index;
-
- if (!this._more) {
- this.clear();
- }
-
- var spec = this.__currentRuleSet__;
-
- if (!spec) {
- // Update the ruleset cache as we apparently encountered a state change or just started lexing.
- // The cache is set up for fast lookup -- we assume a lexer will switch states much less often than it will
- // invoke the `lex()` token-producing API and related APIs, hence caching the set for direct access helps
- // speed up those activities a tiny bit.
- spec = this.__currentRuleSet__ = this._currentRules();
-
- // Check whether a *sane* condition has been pushed before: this makes the lexer robust against
- // user-programmer bugs such as https://github.com/zaach/jison-lex/issues/19
- if (!spec || !spec.rules) {
- var lineno_msg = '';
-
- if (this.options.trackPosition) {
- lineno_msg = ' on line ' + (this.yylineno + 1);
- }
-
- var p = this.constructLexErrorInfo(
- 'Internal lexer engine error' + lineno_msg + ': The lex grammar programmer pushed a non-existing condition name "' + this.topState() + '"; this is a fatal error and should be reported to the application programmer team!',
- false
- );
-
- // produce one 'error' token until this situation has been resolved, most probably by parse termination!
- return this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;
- }
- }
-
- var rule_ids = spec.rules;
- var regexes = spec.__rule_regexes;
- var len = spec.__rule_count;
-
- // Note: the arrays are 1-based, while `len` itself is a valid index,
- // hence the non-standard less-or-equal check in the next loop condition!
- for (var i = 1; i <= len; i++) {
- tempMatch = this._input.match(regexes[i]);
-
- if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
- match = tempMatch;
- index = i;
-
- if (this.options.backtrack_lexer) {
- token = this.test_match(tempMatch, rule_ids[i]);
-
- if (token !== false) {
- return token;
- } else if (this._backtrack) {
- match = undefined;
- continue; // rule action called reject() implying a rule MISmatch.
- } else {
- // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
- return false;
- }
- } else if (!this.options.flex) {
- break;
- }
- }
- }
-
- if (match) {
- token = this.test_match(match, rule_ids[index]);
-
- if (token !== false) {
- return token;
- }
-
- // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
- return false;
- }
-
- if (!this._input) {
- this.done = true;
- this.clear();
- return this.EOF;
- } else {
- var lineno_msg = '';
-
- if (this.options.trackPosition) {
- lineno_msg = ' on line ' + (this.yylineno + 1);
- }
-
- var p = this.constructLexErrorInfo(
- 'Lexical error' + lineno_msg + ': Unrecognized text.',
- this.options.lexerErrorsAreRecoverable
- );
-
- var pendingInput = this._input;
- var activeCondition = this.topState();
- var conditionStackDepth = this.conditionStack.length;
- token = this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;
-
- if (token === this.ERROR) {
- // we can try to recover from a lexer error that `parseError()` did not 'recover' for us
- // by moving forward at least one character at a time IFF the (user-specified?) `parseError()`
- // has not consumed/modified any pending input or changed state in the error handler:
- if (!this.matches && // and make sure the input has been modified/consumed ...
- pendingInput === this._input && // ...or the lexer state has been modified significantly enough
- // to merit a non-consuming error handling action right now.
- activeCondition === this.topState() && conditionStackDepth === this.conditionStack.length) {
- this.input();
- }
- }
-
- return token;
- }
- },
-
- /**
- * return next match that has a token
- *
- * @public
- * @this {RegExpLexer}
- */
- lex: function lexer_lex() {
- var r;
-
- // allow the PRE/POST handlers set/modify the return token for maximum flexibility of the generated lexer:
- if (typeof this.pre_lex === 'function') {
- r = this.pre_lex.call(this, 0);
- }
-
- if (typeof this.options.pre_lex === 'function') {
- // (also account for a userdef function which does not return any value: keep the token as is)
- r = this.options.pre_lex.call(this, r) || r;
- }
-
- if (this.yy && typeof this.yy.pre_lex === 'function') {
- // (also account for a userdef function which does not return any value: keep the token as is)
- r = this.yy.pre_lex.call(this, r) || r;
- }
-
- while (!r) {
- r = this.next();
- }
-
- if (this.yy && typeof this.yy.post_lex === 'function') {
- // (also account for a userdef function which does not return any value: keep the token as is)
- r = this.yy.post_lex.call(this, r) || r;
- }
-
- if (typeof this.options.post_lex === 'function') {
- // (also account for a userdef function which does not return any value: keep the token as is)
- r = this.options.post_lex.call(this, r) || r;
- }
-
- if (typeof this.post_lex === 'function') {
- // (also account for a userdef function which does not return any value: keep the token as is)
- r = this.post_lex.call(this, r) || r;
- }
-
- return r;
- },
-
- /**
- * return next match that has a token. Identical to the `lex()` API but does not invoke any of the
- * `pre_lex()` nor any of the `post_lex()` callbacks.
- *
- * @public
- * @this {RegExpLexer}
- */
- fastLex: function lexer_fastLex() {
- var r;
-
- while (!r) {
- r = this.next();
- }
-
- return r;
- },
-
- /**
- * return info about the lexer state that can help a parser or other lexer API user to use the
- * most efficient means available. This API is provided to aid run-time performance for larger
- * systems which employ this lexer.
- *
- * @public
- * @this {RegExpLexer}
- */
- canIUse: function lexer_canIUse() {
- var rv = {
- fastLex: !(typeof this.pre_lex === 'function' || typeof this.options.pre_lex === 'function' || this.yy && typeof this.yy.pre_lex === 'function' || this.yy && typeof this.yy.post_lex === 'function' || typeof this.options.post_lex === 'function' || typeof this.post_lex === 'function') && typeof this.fastLex === 'function'
- };
-
- return rv;
- },
-
- /**
- * backwards compatible alias for `pushState()`;
- * the latter is symmetrical with `popState()` and we advise to use
- * those APIs in any modern lexer code, rather than `begin()`.
- *
- * @public
- * @this {RegExpLexer}
- */
- begin: function lexer_begin(condition) {
- return this.pushState(condition);
- },
-
- /**
- * activates a new lexer condition state (pushes the new lexer
- * condition state onto the condition stack)
- *
- * @public
- * @this {RegExpLexer}
- */
- pushState: function lexer_pushState(condition) {
- this.conditionStack.push(condition);
- this.__currentRuleSet__ = null;
- return this;
- },
-
- /**
- * pop the previously active lexer condition state off the condition
- * stack
- *
- * @public
- * @this {RegExpLexer}
- */
- popState: function lexer_popState() {
- var n = this.conditionStack.length - 1;
-
- if (n > 0) {
- this.__currentRuleSet__ = null;
- return this.conditionStack.pop();
- } else {
- return this.conditionStack[0];
- }
- },
-
- /**
- * return the currently active lexer condition state; when an index
- * argument is provided it produces the N-th previous condition state,
- * if available
- *
- * @public
- * @this {RegExpLexer}
- */
- topState: function lexer_topState(n) {
- n = this.conditionStack.length - 1 - Math.abs(n || 0);
-
- if (n >= 0) {
- return this.conditionStack[n];
- } else {
- return 'INITIAL';
- }
- },
-
- /**
- * (internal) determine the lexer rule set which is active for the
- * currently active lexer condition state
- *
- * @public
- * @this {RegExpLexer}
- */
- _currentRules: function lexer__currentRules() {
- if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
- return this.conditions[this.conditionStack[this.conditionStack.length - 1]];
- } else {
- return this.conditions['INITIAL'];
- }
- },
-
- /**
- * return the number of states currently on the stack
- *
- * @public
- * @this {RegExpLexer}
- */
- stateStackSize: function lexer_stateStackSize() {
- return this.conditionStack.length;
- },
-
- options: {
- trackPosition: true,
- caseInsensitive: true
- },
-
- JisonLexerError: JisonLexerError,
-
- performAction: function lexer__performAction(yy, yyrulenumber, YY_START) {
- var yy_ = this;
- var YYSTATE = YY_START;
-
- switch (yyrulenumber) {
- case 0:
- /*! Conditions:: INITIAL */
- /*! Rule:: \s+ */
- /* skip whitespace */
- break;
-
- case 7:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)em\b */
- return 12; // em
-
- break;
-
- case 8:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)ex\b */
- return 12; // ex
-
- break;
-
- case 9:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)ch\b */
- return 12; // ch
-
- break;
-
- case 10:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)rem\b */
- return 12; // rem
-
- break;
-
- case 11:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)vw\b */
- return 12; // vw
-
- break;
-
- case 12:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)vh\b */
- return 12; // vh
-
- break;
-
- case 13:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)vmin\b */
- return 12; // vmin
-
- break;
-
- case 14:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)vmax\b */
- return 12; // vmax
-
- break;
-
- case 15:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)vm\b */
- return 12; // vm (non-standard name)
-
- break;
-
- case 16:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)px\b */
- return 12; // px
-
- break;
-
- case 17:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)mm\b */
- return 12; // mm
-
- break;
-
- case 18:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)cm\b */
- return 12; // cm
-
- break;
-
- case 19:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)in\b */
- return 12; // in
-
- break;
-
- case 20:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)pt\b */
- return 12; // pt
-
- break;
-
- case 21:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)pc\b */
- return 12; // pc
-
- break;
-
- case 22:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)Q\b */
- return 12; // Q
-
- break;
-
- case 23:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)fr\b */
- return 12; // fr
-
- break;
-
- case 24:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)deg\b */
- return 13; // deg
-
- break;
-
- case 25:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)grad\b */
- return 13; // grad
-
- break;
-
- case 26:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)turn\b */
- return 13; // turn
-
- break;
-
- case 27:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)rad\b */
- return 13; // rad
-
- break;
-
- case 28:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)s\b */
- return 14; // s
-
- break;
-
- case 29:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)ms\b */
- return 14; // ms
-
- break;
-
- case 30:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)Hz\b */
- return 15; // Hz
-
- break;
-
- case 31:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)kHz\b */
- return 15; // kHz
-
- break;
-
- case 32:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)dpi\b */
- return 16; // dpi
-
- break;
-
- case 33:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)dpcm\b */
- return 16; // dpcm
-
- break;
-
- case 34:
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)dppx\b */
- return 16; // dppm
-
- break;
-
- case 39:
- /*! Conditions:: INITIAL */
- /*! Rule:: #\{([\s\S]*?)\} */
- return 18; // scss variable
-
- break;
-
- case 40:
- /*! Conditions:: INITIAL */
- /*! Rule:: @\{([\s\S]*?)\} */
- return 18; // less variable
-
- break;
-
- default:
- return this.simpleCaseActionClusters[yyrulenumber];
- }
- },
-
- simpleCaseActionClusters: {
- /*! Conditions:: INITIAL */
- /*! Rule:: (-(webkit|moz)-)?calc\b */
- 1: 3,
-
- /*! Conditions:: INITIAL */
- /*! Rule:: [a-z][a-z0-9-]*\s*\((?:(?:"(?:\\.|[^\"\\])*"|'(?:\\.|[^\'\\])*')|\([^)]*\)|[^\(\)]*)*\) */
- 2: 11,
-
- /*! Conditions:: INITIAL */
- /*! Rule:: \* */
- 3: 8,
-
- /*! Conditions:: INITIAL */
- /*! Rule:: \/ */
- 4: 9,
-
- /*! Conditions:: INITIAL */
- /*! Rule:: \+ */
- 5: 6,
-
- /*! Conditions:: INITIAL */
- /*! Rule:: - */
- 6: 7,
-
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)% */
- 35: 17,
-
- /*! Conditions:: INITIAL */
- /*! Rule:: ([0-9]+(\.[0-9]+)?|\.[0-9]+)\b */
- 36: 10,
-
- /*! Conditions:: INITIAL */
- /*! Rule:: \( */
- 37: 4,
-
- /*! Conditions:: INITIAL */
- /*! Rule:: \) */
- 38: 5,
-
- /*! Conditions:: INITIAL */
- /*! Rule:: \S[^\s()*\/+-]* */
- 41: 18,
-
- /*! Conditions:: INITIAL */
- /*! Rule:: $ */
- 42: 1
- },
-
- rules: [
- /* 0: */ /^(?:\s+)/i,
- /* 1: */ /^(?:(-(webkit|moz)-)?calc\b)/i,
- /* 2: */ /^(?:[a-z][\d\-a-z]*\s*\((?:(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')|\([^)]*\)|[^()]*)*\))/i,
- /* 3: */ /^(?:\*)/i,
- /* 4: */ /^(?:\/)/i,
- /* 5: */ /^(?:\+)/i,
- /* 6: */ /^(?:-)/i,
- /* 7: */ /^(?:(\d+(\.\d+)?|\.\d+)em\b)/i,
- /* 8: */ /^(?:(\d+(\.\d+)?|\.\d+)ex\b)/i,
- /* 9: */ /^(?:(\d+(\.\d+)?|\.\d+)ch\b)/i,
- /* 10: */ /^(?:(\d+(\.\d+)?|\.\d+)rem\b)/i,
- /* 11: */ /^(?:(\d+(\.\d+)?|\.\d+)vw\b)/i,
- /* 12: */ /^(?:(\d+(\.\d+)?|\.\d+)vh\b)/i,
- /* 13: */ /^(?:(\d+(\.\d+)?|\.\d+)vmin\b)/i,
- /* 14: */ /^(?:(\d+(\.\d+)?|\.\d+)vmax\b)/i,
- /* 15: */ /^(?:(\d+(\.\d+)?|\.\d+)vm\b)/i,
- /* 16: */ /^(?:(\d+(\.\d+)?|\.\d+)px\b)/i,
- /* 17: */ /^(?:(\d+(\.\d+)?|\.\d+)mm\b)/i,
- /* 18: */ /^(?:(\d+(\.\d+)?|\.\d+)cm\b)/i,
- /* 19: */ /^(?:(\d+(\.\d+)?|\.\d+)in\b)/i,
- /* 20: */ /^(?:(\d+(\.\d+)?|\.\d+)pt\b)/i,
- /* 21: */ /^(?:(\d+(\.\d+)?|\.\d+)pc\b)/i,
- /* 22: */ /^(?:(\d+(\.\d+)?|\.\d+)Q\b)/i,
- /* 23: */ /^(?:(\d+(\.\d+)?|\.\d+)fr\b)/i,
- /* 24: */ /^(?:(\d+(\.\d+)?|\.\d+)deg\b)/i,
- /* 25: */ /^(?:(\d+(\.\d+)?|\.\d+)grad\b)/i,
- /* 26: */ /^(?:(\d+(\.\d+)?|\.\d+)turn\b)/i,
- /* 27: */ /^(?:(\d+(\.\d+)?|\.\d+)rad\b)/i,
- /* 28: */ /^(?:(\d+(\.\d+)?|\.\d+)s\b)/i,
- /* 29: */ /^(?:(\d+(\.\d+)?|\.\d+)ms\b)/i,
- /* 30: */ /^(?:(\d+(\.\d+)?|\.\d+)Hz\b)/i,
- /* 31: */ /^(?:(\d+(\.\d+)?|\.\d+)kHz\b)/i,
- /* 32: */ /^(?:(\d+(\.\d+)?|\.\d+)dpi\b)/i,
- /* 33: */ /^(?:(\d+(\.\d+)?|\.\d+)dpcm\b)/i,
- /* 34: */ /^(?:(\d+(\.\d+)?|\.\d+)dppx\b)/i,
- /* 35: */ /^(?:(\d+(\.\d+)?|\.\d+)%)/i,
- /* 36: */ /^(?:(\d+(\.\d+)?|\.\d+)\b)/i,
- /* 37: */ /^(?:\()/i,
- /* 38: */ /^(?:\))/i,
- /* 39: */ /^(?:#\{([\s\S]*?)\})/i,
- /* 40: */ /^(?:@\{([\s\S]*?)\})/i,
- /* 41: */ /^(?:\S[^\s()*\/+-]*)/i,
- /* 42: */ /^(?:$)/i
- ],
-
- conditions: {
- 'INITIAL': {
- rules: [
- 0,
- 1,
- 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
- ],
-
- inclusive: true
- }
- }
- };
-
- return lexer;
-}();
-parser.lexer = lexer;
-
-
-
-function Parser() {
- this.yy = {};
-}
-Parser.prototype = parser;
-parser.Parser = Parser;
-
-return new Parser();
-})();
-
-
-
-
-if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
- exports.parser = parser;
- exports.Parser = parser.Parser;
- exports.parse = function () {
- return parser.parse.apply(parser, arguments);
- };
-
-}
diff --git a/assets/node_modules/stylelint/lib/utils/parseSelector.js b/assets/node_modules/stylelint/lib/utils/parseSelector.js
deleted file mode 100644
index 75ebb9b..0000000
--- a/assets/node_modules/stylelint/lib/utils/parseSelector.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict';
-
-const selectorParser = require('postcss-selector-parser');
-
-/**
- * @param {string} selector
- * @param {import('stylelint').PostcssResult} result
- * @param {import('postcss').Node} node
- * @param {Function} cb
- */
-module.exports = function parseSelector(selector, result, node, cb) {
- try {
- // @ts-ignore TODO TYPES wrong postcss-selector-parser types
- return selectorParser(cb).processSync(selector);
- } catch (e) {
- result.warn('Cannot parse selector', { node, stylelintType: 'parseError' });
- }
-};
diff --git a/assets/node_modules/stylelint/lib/utils/rawNodeString.js b/assets/node_modules/stylelint/lib/utils/rawNodeString.js
deleted file mode 100644
index f95c398..0000000
--- a/assets/node_modules/stylelint/lib/utils/rawNodeString.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict';
-
-/**
- * Stringify PostCSS node including its raw "before" string.
- *
- * @param {import('postcss').Node} node
- *
- * @returns {string}
- */
-module.exports = function(node) {
- let result = '';
-
- if (node.raws.before) {
- result += node.raws.before;
- }
-
- result += node.toString();
-
- return result;
-};
diff --git a/assets/node_modules/stylelint/lib/utils/removeEmptyLinesAfter.js b/assets/node_modules/stylelint/lib/utils/removeEmptyLinesAfter.js
deleted file mode 100644
index 971e78f..0000000
--- a/assets/node_modules/stylelint/lib/utils/removeEmptyLinesAfter.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict';
-
-/**
- * Remove empty lines before a node. Mutates the node.
- *
- * @param {import('postcss').Node} node
- * @param {'\n' | '\r\n'} newline
- */
-function removeEmptyLinesAfter(node, newline) {
- node.raws.after = node.raws.after ? node.raws.after.replace(/(\r?\n\s*\r?\n)+/g, newline) : '';
-
- return node;
-}
-
-module.exports = removeEmptyLinesAfter;
diff --git a/assets/node_modules/stylelint/lib/utils/removeEmptyLinesBefore.js b/assets/node_modules/stylelint/lib/utils/removeEmptyLinesBefore.js
deleted file mode 100644
index 160e258..0000000
--- a/assets/node_modules/stylelint/lib/utils/removeEmptyLinesBefore.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict';
-
-/**
- * Remove empty lines before a node. Mutates the node.
- *
- * @param {import('postcss').Node} node
- * @param {'\n' | '\r\n'} newline
- */
-function removeEmptyLinesBefore(node, newline) {
- node.raws.before = node.raws.before ? node.raws.before.replace(/(\r?\n\s*\r?\n)+/g, newline) : '';
-
- return node;
-}
-
-module.exports = removeEmptyLinesBefore;
diff --git a/assets/node_modules/stylelint/lib/utils/report.js b/assets/node_modules/stylelint/lib/utils/report.js
deleted file mode 100644
index ad029fb..0000000
--- a/assets/node_modules/stylelint/lib/utils/report.js
+++ /dev/null
@@ -1,98 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-
-/** @typedef {{
- ruleName: string,
- result: Object,
- message: string,
- node: Object,
- index?: number,
- word?: string,
- line?: number
-}} Violation */
-
-/**
- * Report a violation.
- *
- * This function accounts for `disabledRanges` attached to the result.
- * That is, if the reported violation is within a disabledRange,
- * it is ignored. Otherwise, it is attached to the result as a
- * postcss warning.
- *
- * It also accounts for the rule's severity.
- *
- * You *must* pass *either* a node or a line number.
- * @param {Violation} violation
- */
-module.exports = function(violation) {
- const ruleName = violation.ruleName;
- const result = violation.result;
- const message = violation.message;
- const line = violation.line;
- const node = violation.node;
- const index = violation.index;
- const word = violation.word;
-
- result.stylelint = result.stylelint || {};
-
- // In quiet mode, mere warnings are ignored
- if (result.stylelint.quiet && result.stylelint.ruleSeverities[ruleName] !== 'error') {
- return;
- }
-
- // If a line is not passed, use the node.positionBy method to get the
- // line number that the complaint pertains to
- const startLine = line || node.positionBy({ index }).line;
-
- if (result.stylelint.disabledRanges && !result.stylelint.ignoreDisables) {
- const ranges = result.stylelint.disabledRanges[ruleName] || result.stylelint.disabledRanges.all;
-
- for (const range of ranges) {
- if (
- // If the violation is within a disabledRange,
- // and that disabledRange's rules include this one,
- // do not register a warning
- range.start <= startLine &&
- (range.end >= startLine || range.end === undefined) &&
- (!range.rules || range.rules.includes(ruleName))
- ) {
- return;
- }
- }
- }
-
- const severity = _.get(result.stylelint, ['ruleSeverities', ruleName], 'ignore');
-
- if (!result.stylelint.stylelintError && severity === 'error') {
- result.stylelint.stylelintError = true;
- }
-
- /** @type {{
- severity: string,
- rule: string,
- node?: Object,
- index?: number,
- word?: string
- }} */
- const warningProperties = {
- severity,
- rule: ruleName,
- };
-
- if (node) {
- warningProperties.node = node;
- }
-
- if (index) {
- warningProperties.index = index;
- }
-
- if (word) {
- warningProperties.word = word;
- }
-
- const warningMessage = _.get(result.stylelint, ['customMessages', ruleName], message);
-
- result.warn(warningMessage, warningProperties);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/ruleMessages.js b/assets/node_modules/stylelint/lib/utils/ruleMessages.js
deleted file mode 100644
index 365ec9f..0000000
--- a/assets/node_modules/stylelint/lib/utils/ruleMessages.js
+++ /dev/null
@@ -1,35 +0,0 @@
-'use strict';
-
-/**
- * Given an object of violation messages, return another
- * that provides the same messages postfixed with the rule
- * that has been violated.
- *
- * @param {string} ruleName
- * @param {{[k: string]: string|Function}} messages - Object whose keys are message identifiers
- * and values are either message strings or functions that return message strings
- * @return {{[k: string]: string|Function}} New message object, whose messages will be marked with the rule name
- */
-module.exports = function(ruleName, messages) {
- return Object.keys(messages).reduce(
- /**
- * @param {{[k: string]: string|Function}} newMessages
- * @param {string} messageId
- * @return {{[k: string]: string|Function}}
- */
- (newMessages, messageId) => {
- const messageText = messages[messageId];
-
- if (typeof messageText === 'string') {
- newMessages[messageId] = `${messageText} (${ruleName})`;
- } else {
- newMessages[messageId] = (/** @type {any[]} */ ...args) => {
- return `${messageText(...args)} (${ruleName})`;
- };
- }
-
- return newMessages;
- },
- {},
- );
-};
diff --git a/assets/node_modules/stylelint/lib/utils/transformSelector.js b/assets/node_modules/stylelint/lib/utils/transformSelector.js
deleted file mode 100644
index 62216af..0000000
--- a/assets/node_modules/stylelint/lib/utils/transformSelector.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict';
-
-const selectorParser = require('postcss-selector-parser');
-
-/**
- * @param {import('stylelint').PostcssResult} result
- * @param {import('postcss').Node} node
- * @param {Function} cb
- */
-module.exports = function(result, node, cb) {
- try {
- // @ts-ignore TODO TYPES wrong postcss-selector-parser definitions
- return selectorParser(cb).processSync(node, { updateSelector: true });
- } catch (e) {
- result.warn('Cannot parse selector', { node, stylelintType: 'parseError' });
- }
-};
diff --git a/assets/node_modules/stylelint/lib/utils/typeGuards.js b/assets/node_modules/stylelint/lib/utils/typeGuards.js
deleted file mode 100644
index 76a2990..0000000
--- a/assets/node_modules/stylelint/lib/utils/typeGuards.js
+++ /dev/null
@@ -1,44 +0,0 @@
-'use strict';
-
-/** @typedef {import('postcss').Node} Node */
-/** @typedef {import('postcss').Node} NodeSource */
-
-/**
- * @param {Node} node
- * @returns {node is import('postcss').Root}
- */
-module.exports.isRoot = function isRoot(node) {
- return node.type === 'root';
-};
-
-/**
- * @param {Node} node
- * @returns {node is import('postcss').Rule}
- */
-module.exports.isRule = function isRule(node) {
- return node.type === 'rule';
-};
-
-/**
- * @param {Node} node
- * @returns {node is import('postcss').AtRule}
- */
-module.exports.isAtRule = function isAtRule(node) {
- return node.type === 'atrule';
-};
-
-/**
- * @param {Node} node
- * @returns {node is import('postcss').Comment}
- */
-module.exports.isComment = function isComment(node) {
- return node.type === 'comment';
-};
-
-/**
- * @param {Node} node
- * @returns {node is (Node & {source: NodeSource})}
- */
-module.exports.hasSource = function hasSource(node) {
- return Boolean(node.source);
-};
diff --git a/assets/node_modules/stylelint/lib/utils/validateObjectWithArrayProps.js b/assets/node_modules/stylelint/lib/utils/validateObjectWithArrayProps.js
deleted file mode 100644
index 067f2dc..0000000
--- a/assets/node_modules/stylelint/lib/utils/validateObjectWithArrayProps.js
+++ /dev/null
@@ -1,41 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-
-/**
- * @template T
- * @typedef {(i: T) => boolean} Validator
- */
-
-/**
- * Check whether the variable is an object and all it's properties are arrays of string values:
- *
- * ignoreProperties = {
- * value1: ["item11", "item12", "item13"],
- * value2: ["item21", "item22", "item23"],
- * value3: ["item31", "item32", "item33"],
- * }
- * @template T
- * @param {Validator<T>|Validator<T>[]} validator
- * @returns {(value: {[k: any]: T|T[]}) => boolean}
- */
-module.exports = (validator) => (value) => {
- if (!_.isPlainObject(value)) {
- return false;
- }
-
- return Object.values(value).every((value) => {
- if (!Array.isArray(value)) {
- return false;
- }
-
- // Make sure the array items are strings
- return value.every((item) => {
- if (Array.isArray(validator)) {
- return validator.some((v) => v(item));
- }
-
- return validator(item);
- });
- });
-};
diff --git a/assets/node_modules/stylelint/lib/utils/validateOptions.js b/assets/node_modules/stylelint/lib/utils/validateOptions.js
deleted file mode 100644
index 1db4c9b..0000000
--- a/assets/node_modules/stylelint/lib/utils/validateOptions.js
+++ /dev/null
@@ -1,171 +0,0 @@
-'use strict';
-
-const _ = require('lodash');
-
-const ignoredOptions = ['severity', 'message'];
-
-/** @typedef {{possible: any, actual: any, optional: boolean}} Options */
-
-/**
- * Validate a rule's options.
- *
- * See existing rules for examples.
- *
- * @param {import('stylelint').PostcssResult} result - postcss result
- * @param {string} ruleName
- * @param {...Options} optionDescriptions - Each optionDescription can
- * have the following properties:
- * - `actual` (required): the actual passed option value or object.
- * - `possible` (required): a schema representation of what values are
- * valid for those options. `possible` should be an object if the
- * options are an object, with corresponding keys; if the options are not an
- * object, `possible` isn't, either. All `possible` value representations
- * should be **arrays of either values or functions**. Values are === checked
- * against `actual`. Functions are fed `actual` as an argument and their
- * return value is interpreted: truthy = valid, falsy = invalid.
- * - `optional` (optional): If this is `true`, `actual` can be undefined.
- * @return {boolean} Whether or not the options are valid (true = valid)
- */
-
-module.exports = function(result, ruleName, ...optionDescriptions) {
- let noErrors = true;
-
- optionDescriptions.forEach((optionDescription) => {
- validate(optionDescription, ruleName, complain);
- });
-
- /**
- * @param {string} message
- */
- function complain(message) {
- noErrors = false;
- result.warn(message, {
- stylelintType: 'invalidOption',
- });
- _.set(result, 'stylelint.stylelintError', true);
- }
-
- return noErrors;
-};
-
-/**
- * @param {Options} opts
- * @param {string} ruleName
- * @param {(s: string) => void} complain
- */
-function validate(opts, ruleName, complain) {
- const possible = opts.possible;
- const actual = opts.actual;
- const optional = opts.optional;
-
- if (actual === null || _.isEqual(actual, [null])) {
- return;
- }
-
- const nothingPossible =
- possible === undefined || (Array.isArray(possible) && possible.length === 0);
-
- if (nothingPossible && actual === true) {
- return;
- }
-
- if (actual === undefined) {
- if (nothingPossible || optional) {
- return;
- }
-
- complain(`Expected option value for rule "${ruleName}"`);
-
- return;
- }
-
- if (nothingPossible) {
- if (optional) {
- complain(
- `Incorrect configuration for rule "${ruleName}". Rule should have "possible" values for options validation`,
- );
-
- return;
- }
-
- complain(`Unexpected option value "${String(actual)}" for rule "${ruleName}"`);
-
- return;
- }
-
- // If `possible` is a function ...
- if (_.isFunction(possible)) {
- if (!possible(actual)) {
- complain(`Invalid option "${JSON.stringify(actual)}" for rule ${ruleName}`);
- }
-
- return;
- }
-
- // If `possible` is an array instead of an object ...
- if (!_.isPlainObject(possible)) {
- [].concat(actual).forEach((a) => {
- if (isValid(possible, a)) {
- return;
- }
-
- complain(`Invalid option value "${String(a)}" for rule "${ruleName}"`);
- });
-
- return;
- }
-
- // If actual is NOT an object ...
- if (typeof actual !== 'object') {
- complain(
- `Invalid option value ${JSON.stringify(actual)} for rule "${ruleName}": should be an object`,
- );
-
- return;
- }
-
- Object.keys(actual).forEach((optionName) => {
- if (ignoredOptions.includes(optionName)) {
- return;
- }
-
- if (!possible[optionName]) {
- complain(`Invalid option name "${optionName}" for rule "${ruleName}"`);
-
- return;
- }
-
- const actualOptionValue = actual[optionName];
-
- [].concat(actualOptionValue).forEach((a) => {
- if (isValid(possible[optionName], a)) {
- return;
- }
-
- complain(`Invalid value "${a}" for option "${optionName}" of rule "${ruleName}"`);
- });
- });
-}
-
-/**
- * @param {any|Function} possible
- * @param {any} actual
- * @returns {boolean}
- */
-function isValid(possible, actual) {
- const possibleList = /** @type {Array<any|Function>} */ ([]).concat(possible);
-
- for (let i = 0, l = possibleList.length; i < l; i++) {
- const possibility = possibleList[i];
-
- if (typeof possibility === 'function' && possibility(actual)) {
- return true;
- }
-
- if (actual === possibility) {
- return true;
- }
- }
-
- return false;
-}
diff --git a/assets/node_modules/stylelint/lib/utils/whitespaceChecker.js b/assets/node_modules/stylelint/lib/utils/whitespaceChecker.js
deleted file mode 100644
index 128db98..0000000
--- a/assets/node_modules/stylelint/lib/utils/whitespaceChecker.js
+++ /dev/null
@@ -1,345 +0,0 @@
-'use strict';
-
-const configurationError = require('./configurationError');
-const isSingleLineString = require('./isSingleLineString');
-const isWhitespace = require('./isWhitespace');
-
-/**
- * @typedef {object} Messages
- * @property {function} [expectedBefore]
- * @property {function} [rejectedBefore]
- * @property {function} [expectedAfter]
- * @property {function} [rejectedAfter]
- * @property {function} [expectedBeforeSingleLine]
- * @property {function} [rejectedBeforeSingleLine]
- * @property {function} [expectedBeforeMultiLine]
- * @property {function} [rejectedBeforeMultiLine]
- * @property {function} [expectedAfterSingleLine]
- * @property {function} [rejectedAfterSingleLine]
- * @property {function} [expectedAfterMultiLine]
- * @property {function} [rejectedAfterMultiLine]
- */
-
-/**
- * @callback WhitespaceChecker
- * @param {object} args - Named arguments object
- * @param {string} args.source - The source string
- * @param {number} args.index - The index of the character to check before
- * @param {function} args.err - If a violation is found, this callback
- * will be invoked with the relevant warning message.
- * Typically this callback will report() the violation.
- * @param {function} args.errTarget - If a violation is found, this string
- * will be sent to the relevant warning message.
- * @param {string} [args.lineCheckStr] - Single- and multi-line checkers
- * will use this string to determine whether they should proceed,
- * i.e. if this string is one line only, single-line checkers will check,
- * multi-line checkers will ignore.
- * If none is passed, they will use `source`.
- * @param {boolean} [args.onlyOneChar=false] - Only check *one* character before.
- * By default, "always-*" checks will look for the `targetWhitespace` one
- * before and then ensure there is no whitespace two before. This option
- * bypasses that second check.
- * @param {boolean} [args.allowIndentation=false] - Allow arbitrary indentation
- * between the `targetWhitespace` (almost definitely a newline) and the `index`.
- * With this option, the checker will see if a newline *begins* the whitespace before
- * the `index`.
- */
-
-/**
- * Create a whitespaceChecker, which exposes the following functions:
- * - `before()`
- * - `beforeAllowingIndentation()`
- * - `after()`
- * - `afterOneOnly()`
- *
- * @param {"space" | "newline"} targetWhitespace - This is a keyword instead
- * of the actual character (e.g. " ") in order to accommodate
- * different styles of newline ("\n" vs "\r\n")
- * @param { "always" | "never" | "always-single-line" | "always-multi-line" | "never-single-line" | "never-multi-line" } expectation
- * @param {Messages} messages - An object of message functions;
- * calling `before*()` or `after*()` and the `expectation` that is passed
- * determines which message functions are required
- *
- * @returns {object} The checker, with its exposed checking functions
- */
-module.exports = function(targetWhitespace, expectation, messages) {
- // Keep track of active arguments in order to avoid passing
- // too much stuff around, making signatures long and confusing.
- // This variable gets reset anytime a checking function is called.
- /**
- * @type {{
- source?: any,
- index?: any,
- err: any,
- errTarget: any,
- onlyOneChar: any,
- allowIndentation?: any,
- }}
- */
- let activeArgs;
-
- /**
- * Check for whitespace *before* a character.
- * @type {WhitespaceChecker}
- */
- function before({
- source,
- index,
- err,
- errTarget,
- lineCheckStr,
- onlyOneChar = false,
- allowIndentation = false,
- }) {
- activeArgs = {
- source,
- index,
- err,
- errTarget,
- onlyOneChar,
- allowIndentation,
- };
-
- switch (expectation) {
- case 'always':
- expectBefore();
- break;
- case 'never':
- rejectBefore();
- break;
- case 'always-single-line':
- if (!isSingleLineString(lineCheckStr || source)) {
- return;
- }
-
- expectBefore(messages.expectedBeforeSingleLine);
- break;
- case 'never-single-line':
- if (!isSingleLineString(lineCheckStr || source)) {
- return;
- }
-
- rejectBefore(messages.rejectedBeforeSingleLine);
- break;
- case 'always-multi-line':
- if (isSingleLineString(lineCheckStr || source)) {
- return;
- }
-
- expectBefore(messages.expectedBeforeMultiLine);
- break;
- case 'never-multi-line':
- if (isSingleLineString(lineCheckStr || source)) {
- return;
- }
-
- rejectBefore(messages.rejectedBeforeMultiLine);
- break;
- default:
- throw configurationError(`Unknown expectation "${expectation}"`);
- }
- }
-
- /**
- * Check for whitespace *after* a character.
- * @type {WhitespaceChecker}
- */
- function after({ source, index, err, errTarget, lineCheckStr, onlyOneChar = false }) {
- activeArgs = { source, index, err, errTarget, onlyOneChar };
-
- switch (expectation) {
- case 'always':
- expectAfter();
- break;
- case 'never':
- rejectAfter();
- break;
- case 'always-single-line':
- if (!isSingleLineString(lineCheckStr || source)) {
- return;
- }
-
- expectAfter(messages.expectedAfterSingleLine);
- break;
- case 'never-single-line':
- if (!isSingleLineString(lineCheckStr || source)) {
- return;
- }
-
- rejectAfter(messages.rejectedAfterSingleLine);
- break;
- case 'always-multi-line':
- if (isSingleLineString(lineCheckStr || source)) {
- return;
- }
-
- expectAfter(messages.expectedAfterMultiLine);
- break;
- case 'never-multi-line':
- if (isSingleLineString(lineCheckStr || source)) {
- return;
- }
-
- rejectAfter(messages.rejectedAfterMultiLine);
- break;
- default:
- throw configurationError(`Unknown expectation "${expectation}"`);
- }
- }
-
- /**
- * @param {Object} obj
- */
- function beforeAllowingIndentation(obj) {
- before({ ...obj, allowIndentation: true });
- }
-
- /**
- * @param {Function} [messageFunc]
- */
- function expectBefore(messageFunc = messages.expectedBefore) {
- if (activeArgs.allowIndentation) {
- expectBeforeAllowingIndentation(messageFunc);
-
- return;
- }
-
- const _activeArgs = activeArgs;
- const source = _activeArgs.source;
- const index = _activeArgs.index;
-
- const oneCharBefore = source[index - 1];
- const twoCharsBefore = source[index - 2];
-
- if (!isValue(oneCharBefore)) {
- return;
- }
-
- if (targetWhitespace === 'space' && oneCharBefore === ' ') {
- if (activeArgs.onlyOneChar || !isWhitespace(twoCharsBefore)) {
- return;
- }
- }
-
- activeArgs.err(messageFunc(activeArgs.errTarget ? activeArgs.errTarget : source[index]));
- }
-
- /**
- * @param {Function} [messageFunc]
- */
- function expectBeforeAllowingIndentation(messageFunc = messages.expectedBefore) {
- const _activeArgs2 = activeArgs;
- const source = _activeArgs2.source;
- const index = _activeArgs2.index;
- const err = _activeArgs2.err;
-
- const expectedChar = (function() {
- if (targetWhitespace === 'newline') {
- return '\n';
- }
- })();
- let i = index - 1;
-
- while (source[i] !== expectedChar) {
- if (source[i] === '\t' || source[i] === ' ') {
- i--;
- continue;
- }
-
- err(messageFunc(activeArgs.errTarget ? activeArgs.errTarget : source[index]));
-
- return;
- }
- }
-
- /**
- * @param {Function} [messageFunc]
- */
- function rejectBefore(messageFunc = messages.rejectedBefore) {
- const _activeArgs3 = activeArgs;
- const source = _activeArgs3.source;
- const index = _activeArgs3.index;
-
- const oneCharBefore = source[index - 1];
-
- if (isValue(oneCharBefore) && isWhitespace(oneCharBefore)) {
- activeArgs.err(messageFunc(activeArgs.errTarget ? activeArgs.errTarget : source[index]));
- }
- }
-
- /**
- * @param {Object} obj
- */
- function afterOneOnly(obj) {
- after({ ...obj, onlyOneChar: true });
- }
-
- /**
- * @param {Function} [messageFunc]
- */
- function expectAfter(messageFunc = messages.expectedAfter) {
- const _activeArgs4 = activeArgs;
- const source = _activeArgs4.source;
- const index = _activeArgs4.index;
-
- const oneCharAfter = source[index + 1];
- const twoCharsAfter = source[index + 2];
-
- if (!isValue(oneCharAfter)) {
- return;
- }
-
- if (targetWhitespace === 'newline') {
- // If index is followed by a Windows CR-LF ...
- if (oneCharAfter === '\r' && twoCharsAfter === '\n') {
- if (activeArgs.onlyOneChar || !isWhitespace(source[index + 3])) {
- return;
- }
- }
-
- // If index is followed by a Unix LF ...
- if (oneCharAfter === '\n') {
- if (activeArgs.onlyOneChar || !isWhitespace(twoCharsAfter)) {
- return;
- }
- }
- }
-
- if (targetWhitespace === 'space' && oneCharAfter === ' ') {
- if (activeArgs.onlyOneChar || !isWhitespace(twoCharsAfter)) {
- return;
- }
- }
-
- activeArgs.err(messageFunc(activeArgs.errTarget ? activeArgs.errTarget : source[index]));
- }
-
- /**
- * @param {Function} [messageFunc]
- */
- function rejectAfter(messageFunc = messages.rejectedAfter) {
- const _activeArgs5 = activeArgs;
- const source = _activeArgs5.source;
- const index = _activeArgs5.index;
-
- const oneCharAfter = source[index + 1];
-
- if (isValue(oneCharAfter) && isWhitespace(oneCharAfter)) {
- activeArgs.err(messageFunc(activeArgs.errTarget ? activeArgs.errTarget : source[index]));
- }
- }
-
- return {
- before,
- beforeAllowingIndentation,
- after,
- afterOneOnly,
- };
-};
-
-/**
- * @param {any} x
- */
-function isValue(x) {
- return x !== undefined && x !== null;
-}
diff --git a/assets/node_modules/stylelint/lib/writeOutputFile.js b/assets/node_modules/stylelint/lib/writeOutputFile.js
deleted file mode 100644
index 3ab4a43..0000000
--- a/assets/node_modules/stylelint/lib/writeOutputFile.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict';
-
-const path = require('path');
-const stripAnsi = require('strip-ansi');
-const writeFileAtomic = require('write-file-atomic');
-
-/**
- * @param {string} content
- * @param {string} filePath
- * @returns {Promise<Error | undefined>}
- */
-module.exports = (content, filePath) =>
- writeFileAtomic(path.normalize(filePath), stripAnsi(content));
diff --git a/assets/node_modules/stylelint/node_modules/.bin/autoprefixer b/assets/node_modules/stylelint/node_modules/.bin/autoprefixer
deleted file mode 120000
index 98390fb..0000000
--- a/assets/node_modules/stylelint/node_modules/.bin/autoprefixer
+++ /dev/null
@@ -1 +0,0 @@
-../../../autoprefixer/bin/autoprefixer \ No newline at end of file
diff --git a/assets/node_modules/stylelint/node_modules/.bin/specificity b/assets/node_modules/stylelint/node_modules/.bin/specificity
deleted file mode 120000
index 6e3b7fd..0000000
--- a/assets/node_modules/stylelint/node_modules/.bin/specificity
+++ /dev/null
@@ -1 +0,0 @@
-../../../specificity/bin/specificity \ No newline at end of file
diff --git a/assets/node_modules/stylelint/node_modules/ansi-styles/index.d.ts b/assets/node_modules/stylelint/node_modules/ansi-styles/index.d.ts
deleted file mode 100644
index 7e9b2b7..0000000
--- a/assets/node_modules/stylelint/node_modules/ansi-styles/index.d.ts
+++ /dev/null
@@ -1,197 +0,0 @@
-import * as cssColors from 'color-name';
-
-declare namespace ansiStyles {
- interface ColorConvert {
- /**
- The RGB color space.
-
- @param red - (`0`-`255`)
- @param green - (`0`-`255`)
- @param blue - (`0`-`255`)
- */
- rgb(red: number, green: number, blue: number): string;
-
- /**
- The RGB HEX color space.
-
- @param hex - A hexadecimal string containing RGB data.
- */
- hex(hex: string): string;
-
- /**
- @param keyword - A CSS color name.
- */
- keyword(keyword: keyof typeof cssColors): string;
-
- /**
- The HSL color space.
-
- @param hue - (`0`-`360`)
- @param saturation - (`0`-`100`)
- @param lightness - (`0`-`100`)
- */
- hsl(hue: number, saturation: number, lightness: number): string;
-
- /**
- The HSV color space.
-
- @param hue - (`0`-`360`)
- @param saturation - (`0`-`100`)
- @param value - (`0`-`100`)
- */
- hsv(hue: number, saturation: number, value: number): string;
-
- /**
- The HSV color space.
-
- @param hue - (`0`-`360`)
- @param whiteness - (`0`-`100`)
- @param blackness - (`0`-`100`)
- */
- hwb(hue: number, whiteness: number, blackness: number): string;
-
- /**
- Use a [4-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4-bit) to set text color.
- */
- ansi(ansi: number): string;
-
- /**
- Use an [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set text color.
- */
- ansi256(ansi: number): string;
- }
-
- interface CSPair {
- /**
- The ANSI terminal control sequence for starting this style.
- */
- readonly open: string;
-
- /**
- The ANSI terminal control sequence for ending this style.
- */
- readonly close: string;
- }
-
- interface ColorBase {
- readonly ansi: ColorConvert;
- readonly ansi256: ColorConvert;
- readonly ansi16m: ColorConvert;
-
- /**
- The ANSI terminal control sequence for ending this color.
- */
- readonly close: string;
- }
-
- interface Modifier {
- /**
- Resets the current color chain.
- */
- readonly reset: CSPair;
-
- /**
- Make text bold.
- */
- readonly bold: CSPair;
-
- /**
- Emitting only a small amount of light.
- */
- readonly dim: CSPair;
-
- /**
- Make text italic. (Not widely supported)
- */
- readonly italic: CSPair;
-
- /**
- Make text underline. (Not widely supported)
- */
- readonly underline: CSPair;
-
- /**
- Inverse background and foreground colors.
- */
- readonly inverse: CSPair;
-
- /**
- Prints the text, but makes it invisible.
- */
- readonly hidden: CSPair;
-
- /**
- Puts a horizontal line through the center of the text. (Not widely supported)
- */
- readonly strikethrough: CSPair;
- }
-
- interface ForegroundColor {
- readonly black: CSPair;
- readonly red: CSPair;
- readonly green: CSPair;
- readonly yellow: CSPair;
- readonly blue: CSPair;
- readonly cyan: CSPair;
- readonly magenta: CSPair;
- readonly white: CSPair;
-
- /**
- Alias for `blackBright`.
- */
- readonly gray: CSPair;
-
- /**
- Alias for `blackBright`.
- */
- readonly grey: CSPair;
-
- readonly blackBright: CSPair;
- readonly redBright: CSPair;
- readonly greenBright: CSPair;
- readonly yellowBright: CSPair;
- readonly blueBright: CSPair;
- readonly cyanBright: CSPair;
- readonly magentaBright: CSPair;
- readonly whiteBright: CSPair;
- }
-
- interface BackgroundColor {
- readonly bgBlack: CSPair;
- readonly bgRed: CSPair;
- readonly bgGreen: CSPair;
- readonly bgYellow: CSPair;
- readonly bgBlue: CSPair;
- readonly bgCyan: CSPair;
- readonly bgMagenta: CSPair;
- readonly bgWhite: CSPair;
-
- /**
- Alias for `bgBlackBright`.
- */
- readonly bgGray: CSPair;
-
- /**
- Alias for `bgBlackBright`.
- */
- readonly bgGrey: CSPair;
-
- readonly bgBlackBright: CSPair;
- readonly bgRedBright: CSPair;
- readonly bgGreenBright: CSPair;
- readonly bgYellowBright: CSPair;
- readonly bgBlueBright: CSPair;
- readonly bgCyanBright: CSPair;
- readonly bgMagentaBright: CSPair;
- readonly bgWhiteBright: CSPair;
- }
-}
-
-declare const ansiStyles: {
- readonly modifier: ansiStyles.Modifier;
- readonly color: ansiStyles.ForegroundColor & ansiStyles.ColorBase;
- readonly bgColor: ansiStyles.BackgroundColor & ansiStyles.ColorBase;
- readonly codes: ReadonlyMap<number, number>;
-} & ansiStyles.BackgroundColor & ansiStyles.ForegroundColor & ansiStyles.Modifier;
-
-export = ansiStyles;
diff --git a/assets/node_modules/stylelint/node_modules/ansi-styles/index.js b/assets/node_modules/stylelint/node_modules/ansi-styles/index.js
deleted file mode 100644
index 5d82581..0000000
--- a/assets/node_modules/stylelint/node_modules/ansi-styles/index.js
+++ /dev/null
@@ -1,163 +0,0 @@
-'use strict';
-
-const wrapAnsi16 = (fn, offset) => (...args) => {
- const code = fn(...args);
- return `\u001B[${code + offset}m`;
-};
-
-const wrapAnsi256 = (fn, offset) => (...args) => {
- const code = fn(...args);
- return `\u001B[${38 + offset};5;${code}m`;
-};
-
-const wrapAnsi16m = (fn, offset) => (...args) => {
- const rgb = fn(...args);
- return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
-};
-
-const ansi2ansi = n => n;
-const rgb2rgb = (r, g, b) => [r, g, b];
-
-const setLazyProperty = (object, property, get) => {
- Object.defineProperty(object, property, {
- get: () => {
- const value = get();
-
- Object.defineProperty(object, property, {
- value,
- enumerable: true,
- configurable: true
- });
-
- return value;
- },
- enumerable: true,
- configurable: true
- });
-};
-
-/** @type {typeof import('color-convert')} */
-let colorConvert;
-const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {
- if (colorConvert === undefined) {
- colorConvert = require('color-convert');
- }
-
- const offset = isBackground ? 10 : 0;
- const styles = {};
-
- for (const [sourceSpace, suite] of Object.entries(colorConvert)) {
- const name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;
- if (sourceSpace === targetSpace) {
- styles[name] = wrap(identity, offset);
- } else if (typeof suite === 'object') {
- styles[name] = wrap(suite[targetSpace], offset);
- }
- }
-
- return styles;
-};
-
-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],
-
- // Bright color
- blackBright: [90, 39],
- 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]
- }
- };
-
- // Alias bright black as gray (and grey)
- styles.color.gray = styles.color.blackBright;
- styles.bgColor.bgGray = styles.bgColor.bgBlackBright;
- styles.color.grey = styles.color.blackBright;
- styles.bgColor.bgGrey = styles.bgColor.bgBlackBright;
-
- for (const [groupName, group] of Object.entries(styles)) {
- for (const [styleName, style] of Object.entries(group)) {
- 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
- });
-
- styles.color.close = '\u001B[39m';
- styles.bgColor.close = '\u001B[49m';
-
- setLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));
- setLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));
- setLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));
- setLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));
- setLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));
- setLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));
-
- return styles;
-}
-
-// Make the export immutable
-Object.defineProperty(module, 'exports', {
- enumerable: true,
- get: assembleStyles
-});
diff --git a/assets/node_modules/stylelint/node_modules/ansi-styles/license b/assets/node_modules/stylelint/node_modules/ansi-styles/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/stylelint/node_modules/ansi-styles/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/stylelint/node_modules/ansi-styles/package.json b/assets/node_modules/stylelint/node_modules/ansi-styles/package.json
deleted file mode 100644
index 347b035..0000000
--- a/assets/node_modules/stylelint/node_modules/ansi-styles/package.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "name": "ansi-styles",
- "version": "4.2.1",
- "description": "ANSI escape codes for styling strings in the terminal",
- "license": "MIT",
- "repository": "chalk/ansi-styles",
- "funding": "https://github.com/chalk/ansi-styles?sponsor=1",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd",
- "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "ansi",
- "styles",
- "color",
- "colour",
- "colors",
- "terminal",
- "console",
- "cli",
- "string",
- "tty",
- "escape",
- "formatting",
- "rgb",
- "256",
- "shell",
- "xterm",
- "log",
- "logging",
- "command-line",
- "text"
- ],
- "dependencies": {
- "@types/color-name": "^1.1.1",
- "color-convert": "^2.0.1"
- },
- "devDependencies": {
- "@types/color-convert": "^1.9.0",
- "ava": "^2.3.0",
- "svg-term-cli": "^2.1.1",
- "tsd": "^0.11.0",
- "xo": "^0.25.3"
- }
-}
diff --git a/assets/node_modules/stylelint/node_modules/ansi-styles/readme.md b/assets/node_modules/stylelint/node_modules/ansi-styles/readme.md
deleted file mode 100644
index 2a1ef65..0000000
--- a/assets/node_modules/stylelint/node_modules/ansi-styles/readme.md
+++ /dev/null
@@ -1,158 +0,0 @@
-# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles)
-
-> [ANSI escape codes](https://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="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`
-- `blackBright` (alias: `gray`, `grey`)
-- `redBright`
-- `greenBright`
-- `yellowBright`
-- `blueBright`
-- `magentaBright`
-- `cyanBright`
-- `whiteBright`
-
-### Background colors
-
-- `bgBlack`
-- `bgRed`
-- `bgGreen`
-- `bgYellow`
-- `bgBlue`
-- `bgMagenta`
-- `bgCyan`
-- `bgWhite`
-- `bgBlackBright` (alias: `bgGray`, `bgGrey`)
-- `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.
-
-The following color spaces from `color-convert` are supported:
-
-- `rgb`
-- `hex`
-- `keyword`
-- `hsl`
-- `hsv`
-- `hwb`
-- `ansi`
-- `ansi256`
-
-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-)
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-ansi-styles?utm_source=npm-ansi-styles&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
diff --git a/assets/node_modules/stylelint/node_modules/chalk/index.d.ts b/assets/node_modules/stylelint/node_modules/chalk/index.d.ts
deleted file mode 100644
index 7e22c45..0000000
--- a/assets/node_modules/stylelint/node_modules/chalk/index.d.ts
+++ /dev/null
@@ -1,411 +0,0 @@
-declare const enum LevelEnum {
- /**
- All colors disabled.
- */
- None = 0,
-
- /**
- Basic 16 colors support.
- */
- Basic = 1,
-
- /**
- ANSI 256 colors support.
- */
- Ansi256 = 2,
-
- /**
- Truecolor 16 million colors support.
- */
- TrueColor = 3
-}
-
-/**
-Basic foreground colors.
-
-[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support)
-*/
-declare type ForegroundColor =
- | 'black'
- | 'red'
- | 'green'
- | 'yellow'
- | 'blue'
- | 'magenta'
- | 'cyan'
- | 'white'
- | 'gray'
- | 'grey'
- | 'blackBright'
- | 'redBright'
- | 'greenBright'
- | 'yellowBright'
- | 'blueBright'
- | 'magentaBright'
- | 'cyanBright'
- | 'whiteBright';
-
-/**
-Basic background colors.
-
-[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support)
-*/
-declare type BackgroundColor =
- | 'bgBlack'
- | 'bgRed'
- | 'bgGreen'
- | 'bgYellow'
- | 'bgBlue'
- | 'bgMagenta'
- | 'bgCyan'
- | 'bgWhite'
- | 'bgGray'
- | 'bgGrey'
- | 'bgBlackBright'
- | 'bgRedBright'
- | 'bgGreenBright'
- | 'bgYellowBright'
- | 'bgBlueBright'
- | 'bgMagentaBright'
- | 'bgCyanBright'
- | 'bgWhiteBright';
-
-/**
-Basic colors.
-
-[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support)
-*/
-declare type Color = ForegroundColor | BackgroundColor;
-
-declare type Modifiers =
- | 'reset'
- | 'bold'
- | 'dim'
- | 'italic'
- | 'underline'
- | 'inverse'
- | 'hidden'
- | 'strikethrough'
- | 'visible';
-
-declare namespace chalk {
- type Level = LevelEnum;
-
- interface Options {
- /**
- Specify the color support for Chalk.
- By default, color support is automatically detected based on the environment.
- */
- level?: Level;
- }
-
- interface Instance {
- /**
- Return a new Chalk instance.
- */
- new (options?: Options): Chalk;
- }
-
- /**
- Detect whether the terminal supports color.
- */
- interface ColorSupport {
- /**
- The color level used by Chalk.
- */
- level: Level;
-
- /**
- Return whether Chalk supports basic 16 colors.
- */
- hasBasic: boolean;
-
- /**
- Return whether Chalk supports ANSI 256 colors.
- */
- has256: boolean;
-
- /**
- Return whether Chalk supports Truecolor 16 million colors.
- */
- has16m: boolean;
- }
-
- interface ChalkFunction {
- /**
- Use a template string.
-
- @remarks Template literals are unsupported for nested calls (see [issue #341](https://github.com/chalk/chalk/issues/341))
-
- @example
- ```
- import chalk = require('chalk');
-
- log(chalk`
- CPU: {red ${cpu.totalPercent}%}
- RAM: {green ${ram.used / ram.total * 100}%}
- DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%}
- `);
- ```
- */
- (text: TemplateStringsArray, ...placeholders: unknown[]): string;
-
- (...text: unknown[]): string;
- }
-
- interface Chalk extends ChalkFunction {
- /**
- Return a new Chalk instance.
- */
- Instance: Instance;
-
- /**
- The color support for Chalk.
- By default, color support is automatically detected based on the environment.
- */
- level: Level;
-
- /**
- Use HEX value to set text color.
-
- @param color - Hexadecimal value representing the desired color.
-
- @example
- ```
- import chalk = require('chalk');
-
- chalk.hex('#DEADED');
- ```
- */
- hex(color: string): Chalk;
-
- /**
- Use keyword color value to set text color.
-
- @param color - Keyword value representing the desired color.
-
- @example
- ```
- import chalk = require('chalk');
-
- chalk.keyword('orange');
- ```
- */
- keyword(color: string): Chalk;
-
- /**
- Use RGB values to set text color.
- */
- rgb(red: number, green: number, blue: number): Chalk;
-
- /**
- Use HSL values to set text color.
- */
- hsl(hue: number, saturation: number, lightness: number): Chalk;
-
- /**
- Use HSV values to set text color.
- */
- hsv(hue: number, saturation: number, value: number): Chalk;
-
- /**
- Use HWB values to set text color.
- */
- hwb(hue: number, whiteness: number, blackness: number): Chalk;
-
- /**
- Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set text color.
-
- 30 <= code && code < 38 || 90 <= code && code < 98
- For example, 31 for red, 91 for redBright.
- */
- ansi(code: number): Chalk;
-
- /**
- Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set text color.
- */
- ansi256(index: number): Chalk;
-
- /**
- Use HEX value to set background color.
-
- @param color - Hexadecimal value representing the desired color.
-
- @example
- ```
- import chalk = require('chalk');
-
- chalk.bgHex('#DEADED');
- ```
- */
- bgHex(color: string): Chalk;
-
- /**
- Use keyword color value to set background color.
-
- @param color - Keyword value representing the desired color.
-
- @example
- ```
- import chalk = require('chalk');
-
- chalk.bgKeyword('orange');
- ```
- */
- bgKeyword(color: string): Chalk;
-
- /**
- Use RGB values to set background color.
- */
- bgRgb(red: number, green: number, blue: number): Chalk;
-
- /**
- Use HSL values to set background color.
- */
- bgHsl(hue: number, saturation: number, lightness: number): Chalk;
-
- /**
- Use HSV values to set background color.
- */
- bgHsv(hue: number, saturation: number, value: number): Chalk;
-
- /**
- Use HWB values to set background color.
- */
- bgHwb(hue: number, whiteness: number, blackness: number): Chalk;
-
- /**
- Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set background color.
-
- 30 <= code && code < 38 || 90 <= code && code < 98
- For example, 31 for red, 91 for redBright.
- Use the foreground code, not the background code (for example, not 41, nor 101).
- */
- bgAnsi(code: number): Chalk;
-
- /**
- Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set background color.
- */
- bgAnsi256(index: number): Chalk;
-
- /**
- Modifier: Resets the current color chain.
- */
- readonly reset: Chalk;
-
- /**
- Modifier: Make text bold.
- */
- readonly bold: Chalk;
-
- /**
- Modifier: Emitting only a small amount of light.
- */
- readonly dim: Chalk;
-
- /**
- Modifier: Make text italic. (Not widely supported)
- */
- readonly italic: Chalk;
-
- /**
- Modifier: Make text underline. (Not widely supported)
- */
- readonly underline: Chalk;
-
- /**
- Modifier: Inverse background and foreground colors.
- */
- readonly inverse: Chalk;
-
- /**
- Modifier: Prints the text, but makes it invisible.
- */
- readonly hidden: Chalk;
-
- /**
- Modifier: Puts a horizontal line through the center of the text. (Not widely supported)
- */
- readonly strikethrough: Chalk;
-
- /**
- Modifier: Prints the text only when Chalk has a color support level > 0.
- Can be useful for things that are purely cosmetic.
- */
- readonly visible: Chalk;
-
- readonly black: Chalk;
- readonly red: Chalk;
- readonly green: Chalk;
- readonly yellow: Chalk;
- readonly blue: Chalk;
- readonly magenta: Chalk;
- readonly cyan: Chalk;
- readonly white: Chalk;
-
- /*
- Alias for `blackBright`.
- */
- readonly gray: Chalk;
-
- /*
- Alias for `blackBright`.
- */
- readonly grey: Chalk;
-
- readonly blackBright: Chalk;
- readonly redBright: Chalk;
- readonly greenBright: Chalk;
- readonly yellowBright: Chalk;
- readonly blueBright: Chalk;
- readonly magentaBright: Chalk;
- readonly cyanBright: Chalk;
- readonly whiteBright: Chalk;
-
- readonly bgBlack: Chalk;
- readonly bgRed: Chalk;
- readonly bgGreen: Chalk;
- readonly bgYellow: Chalk;
- readonly bgBlue: Chalk;
- readonly bgMagenta: Chalk;
- readonly bgCyan: Chalk;
- readonly bgWhite: Chalk;
-
- /*
- Alias for `bgBlackBright`.
- */
- readonly bgGray: Chalk;
-
- /*
- Alias for `bgBlackBright`.
- */
- readonly bgGrey: Chalk;
-
- readonly bgBlackBright: Chalk;
- readonly bgRedBright: Chalk;
- readonly bgGreenBright: Chalk;
- readonly bgYellowBright: Chalk;
- readonly bgBlueBright: Chalk;
- readonly bgMagentaBright: Chalk;
- readonly bgCyanBright: Chalk;
- readonly bgWhiteBright: Chalk;
- }
-}
-
-/**
-Main Chalk object that allows to chain styles together.
-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`.
-*/
-declare const chalk: chalk.Chalk & chalk.ChalkFunction & {
- supportsColor: chalk.ColorSupport | false;
- Level: typeof LevelEnum;
- Color: Color;
- ForegroundColor: ForegroundColor;
- BackgroundColor: BackgroundColor;
- Modifiers: Modifiers;
- stderr: chalk.Chalk & {supportsColor: chalk.ColorSupport | false};
-};
-
-export = chalk;
diff --git a/assets/node_modules/stylelint/node_modules/chalk/license b/assets/node_modules/stylelint/node_modules/chalk/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/stylelint/node_modules/chalk/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/stylelint/node_modules/chalk/package.json b/assets/node_modules/stylelint/node_modules/chalk/package.json
deleted file mode 100644
index 047adf9..0000000
--- a/assets/node_modules/stylelint/node_modules/chalk/package.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "name": "chalk",
- "version": "3.0.0",
- "description": "Terminal string styling done right",
- "license": "MIT",
- "repository": "chalk/chalk",
- "main": "source",
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && nyc ava && tsd",
- "bench": "matcha benchmark.js"
- },
- "files": [
- "source",
- "index.d.ts"
- ],
- "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": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "devDependencies": {
- "ava": "^2.4.0",
- "coveralls": "^3.0.7",
- "execa": "^3.2.0",
- "import-fresh": "^3.1.0",
- "matcha": "^0.7.0",
- "nyc": "^14.1.1",
- "resolve-from": "^5.0.0",
- "tsd": "^0.7.4",
- "xo": "^0.25.3"
- },
- "xo": {
- "rules": {
- "unicorn/prefer-string-slice": "off",
- "unicorn/prefer-includes": "off"
- }
- }
-}
diff --git a/assets/node_modules/stylelint/node_modules/chalk/readme.md b/assets/node_modules/stylelint/node_modules/chalk/readme.md
deleted file mode 100644
index 877cb93..0000000
--- a/assets/node_modules/stylelint/node_modules/chalk/readme.md
+++ /dev/null
@@ -1,304 +0,0 @@
-<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) [![npm dependents](https://badgen.net/npm/dependents/chalk)](https://www.npmjs.com/package/chalk?activeTab=dependents) [![Downloads](https://badgen.net/npm/dt/chalk)](https://www.npmjs.com/package/chalk) [![](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) ![TypeScript-ready](https://img.shields.io/npm/types/chalk.svg)
-
-<img src="https://cdn.jsdelivr.net/gh/chalk/ansi-styles@8261697c95bf34b6c7767e2cbe9941a851d59385/screenshot.svg" 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 ~46,000 packages](https://www.npmjs.com/browse/depended/chalk) as of October 1, 2019
-
-
-## Install
-
-```console
-$ npm install chalk
-```
-
-
-## 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.level
-
-Specifies the level of color support.
-
-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.Instance({level: 0});
-```
-
-| Level | Description |
-| :---: | :--- |
-| `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, use the environment variable `FORCE_COLOR=1` (level 1), `FORCE_COLOR=2` (level 2), or `FORCE_COLOR=3` (level 3) 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.
-
-### chalk.stderr and chalk.stderr.supportsColor
-
-`chalk.stderr` contains a separate instance configured with color support detected for `stderr` stream instead of `stdout`. Override rules from `chalk.supportsColor` apply to this too. `chalk.stderr.supportsColor` is exposed for convenience.
-
-
-## Styles
-
-### Modifiers
-
-- `reset` - Resets the current color chain.
-- `bold` - Make text bold.
-- `dim` - Emitting only a small amount of light.
-- `italic` - Make text italic. *(Not widely supported)*
-- `underline` - Make text underline. *(Not widely supported)*
-- `inverse`- Inverse background and foreground colors.
-- `hidden` - Prints the text, but makes it invisible.
-- `strikethrough` - Puts a horizontal line through the center of the text. *(Not widely supported)*
-- `visible`- Prints the text only when Chalk has a color level > 0. Can be useful for things that are purely cosmetic.
-
-### Colors
-
-- `black`
-- `red`
-- `green`
-- `yellow`
-- `blue`
-- `magenta`
-- `cyan`
-- `white`
-- `blackBright` (alias: `gray`, `grey`)
-- `redBright`
-- `greenBright`
-- `yellowBright`
-- `blueBright`
-- `magentaBright`
-- `cyanBright`
-- `whiteBright`
-
-### Background colors
-
-- `bgBlack`
-- `bgRed`
-- `bgGreen`
-- `bgYellow`
-- `bgBlue`
-- `bgMagenta`
-- `bgCyan`
-- `bgWhite`
-- `bgBlackBright` (alias: `bgGray`, `bgGrey`)
-- `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!')`
-- [`ansi`](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) - Example: `chalk.ansi(31).bgAnsi(93)('red on yellowBright')`
-- [`ansi256`](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) - Example: `chalk.bgAnsi256(194)('Honeydew, more or less')`
-
-
-## Windows
-
-If you're on Windows, do yourself a favor and use [Windows Terminal](https://github.com/microsoft/terminal) 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.
-
-
-## chalk for enterprise
-
-Available as part of the Tidelift Subscription.
-
-The maintainers of chalk and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-chalk?utm_source=npm-chalk&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
-
-
-## 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-)
diff --git a/assets/node_modules/stylelint/node_modules/chalk/source/index.js b/assets/node_modules/stylelint/node_modules/chalk/source/index.js
deleted file mode 100644
index 53fcc16..0000000
--- a/assets/node_modules/stylelint/node_modules/chalk/source/index.js
+++ /dev/null
@@ -1,233 +0,0 @@
-'use strict';
-const ansiStyles = require('ansi-styles');
-const {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');
-const {
- stringReplaceAll,
- stringEncaseCRLFWithFirstIndex
-} = require('./util');
-
-// `supportsColor.level` → `ansiStyles.color[name]` mapping
-const levelMapping = [
- 'ansi',
- 'ansi',
- 'ansi256',
- 'ansi16m'
-];
-
-const styles = Object.create(null);
-
-const applyOptions = (object, options = {}) => {
- if (options.level > 3 || options.level < 0) {
- throw new Error('The `level` option should be an integer from 0 to 3');
- }
-
- // Detect level if not set manually
- const colorLevel = stdoutColor ? stdoutColor.level : 0;
- object.level = options.level === undefined ? colorLevel : options.level;
-};
-
-class ChalkClass {
- constructor(options) {
- return chalkFactory(options);
- }
-}
-
-const chalkFactory = options => {
- const chalk = {};
- applyOptions(chalk, options);
-
- chalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);
-
- Object.setPrototypeOf(chalk, Chalk.prototype);
- Object.setPrototypeOf(chalk.template, chalk);
-
- chalk.template.constructor = () => {
- throw new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');
- };
-
- chalk.template.Instance = ChalkClass;
-
- return chalk.template;
-};
-
-function Chalk(options) {
- return chalkFactory(options);
-}
-
-for (const [styleName, style] of Object.entries(ansiStyles)) {
- styles[styleName] = {
- get() {
- const builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);
- Object.defineProperty(this, styleName, {value: builder});
- return builder;
- }
- };
-}
-
-styles.visible = {
- get() {
- const builder = createBuilder(this, this._styler, true);
- Object.defineProperty(this, 'visible', {value: builder});
- return builder;
- }
-};
-
-const usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];
-
-for (const model of usedModels) {
- styles[model] = {
- get() {
- const {level} = this;
- return function (...arguments_) {
- const styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);
- return createBuilder(this, styler, this._isEmpty);
- };
- }
- };
-}
-
-for (const model of usedModels) {
- const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);
- styles[bgModel] = {
- get() {
- const {level} = this;
- return function (...arguments_) {
- const styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);
- return createBuilder(this, styler, this._isEmpty);
- };
- }
- };
-}
-
-const proto = Object.defineProperties(() => {}, {
- ...styles,
- level: {
- enumerable: true,
- get() {
- return this._generator.level;
- },
- set(level) {
- this._generator.level = level;
- }
- }
-});
-
-const createStyler = (open, close, parent) => {
- let openAll;
- let closeAll;
- if (parent === undefined) {
- openAll = open;
- closeAll = close;
- } else {
- openAll = parent.openAll + open;
- closeAll = close + parent.closeAll;
- }
-
- return {
- open,
- close,
- openAll,
- closeAll,
- parent
- };
-};
-
-const createBuilder = (self, _styler, _isEmpty) => {
- const builder = (...arguments_) => {
- // Single argument is hot path, implicit coercion is faster than anything
- // eslint-disable-next-line no-implicit-coercion
- return applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));
- };
-
- // `__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
-
- builder._generator = self;
- builder._styler = _styler;
- builder._isEmpty = _isEmpty;
-
- return builder;
-};
-
-const applyStyle = (self, string) => {
- if (self.level <= 0 || !string) {
- return self._isEmpty ? '' : string;
- }
-
- let styler = self._styler;
-
- if (styler === undefined) {
- return string;
- }
-
- const {openAll, closeAll} = styler;
- if (string.indexOf('\u001B') !== -1) {
- while (styler !== undefined) {
- // 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'.
- string = stringReplaceAll(string, styler.close, styler.open);
-
- styler = styler.parent;
- }
- }
-
- // We can move both next actions out of loop, because remaining actions in loop won't have
- // any/visible effect on parts we add here. 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
- const lfIndex = string.indexOf('\n');
- if (lfIndex !== -1) {
- string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
- }
-
- return openAll + string + closeAll;
-};
-
-let template;
-const chalkTag = (chalk, ...strings) => {
- const [firstString] = strings;
-
- if (!Array.isArray(firstString)) {
- // If chalk() was called by itself or with a string,
- // return the string itself as a string.
- return strings.join(' ');
- }
-
- const arguments_ = strings.slice(1);
- const parts = [firstString.raw[0]];
-
- for (let i = 1; i < firstString.length; i++) {
- parts.push(
- String(arguments_[i - 1]).replace(/[{}\\]/g, '\\$&'),
- String(firstString.raw[i])
- );
- }
-
- if (template === undefined) {
- template = require('./templates');
- }
-
- return template(chalk, parts.join(''));
-};
-
-Object.defineProperties(Chalk.prototype, styles);
-
-const chalk = Chalk(); // eslint-disable-line new-cap
-chalk.supportsColor = stdoutColor;
-chalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap
-chalk.stderr.supportsColor = stderrColor;
-
-// For TypeScript
-chalk.Level = {
- None: 0,
- Basic: 1,
- Ansi256: 2,
- TrueColor: 3,
- 0: 'None',
- 1: 'Basic',
- 2: 'Ansi256',
- 3: 'TrueColor'
-};
-
-module.exports = chalk;
diff --git a/assets/node_modules/stylelint/node_modules/chalk/source/templates.js b/assets/node_modules/stylelint/node_modules/chalk/source/templates.js
deleted file mode 100644
index fe94642..0000000
--- a/assets/node_modules/stylelint/node_modules/chalk/source/templates.js
+++ /dev/null
@@ -1,134 +0,0 @@
-'use strict';
-const TEMPLATE_REGEX = /(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|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}|\{[a-f\d]{1,6}\})|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) {
- const u = c[0] === 'u';
- const bracket = c[1] === '{';
-
- if ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {
- return String.fromCharCode(parseInt(c.slice(1), 16));
- }
-
- if (u && bracket) {
- return String.fromCodePoint(parseInt(c.slice(2, -1), 16));
- }
-
- return ESCAPES.get(c) || c;
-}
-
-function parseArguments(name, arguments_) {
- const results = [];
- const chunks = arguments_.trim().split(/\s*,\s*/g);
- let matches;
-
- for (const chunk of chunks) {
- const number = Number(chunk);
- if (!Number.isNaN(number)) {
- results.push(number);
- } else if ((matches = chunk.match(STRING_REGEX))) {
- results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));
- } 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, styles] of Object.entries(enabled)) {
- if (!Array.isArray(styles)) {
- continue;
- }
-
- if (!(styleName in current)) {
- throw new Error(`Unknown Chalk style: ${styleName}`);
- }
-
- current = styles.length > 0 ? current[styleName](...styles) : current[styleName];
- }
-
- return current;
-}
-
-module.exports = (chalk, temporary) => {
- const styles = [];
- const chunks = [];
- let chunk = [];
-
- // eslint-disable-next-line max-params
- temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {
- if (escapeCharacter) {
- chunk.push(unescape(escapeCharacter));
- } else if (style) {
- const string = chunk.join('');
- chunk = [];
- chunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));
- 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(character);
- }
- });
-
- 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/assets/node_modules/stylelint/node_modules/chalk/source/util.js b/assets/node_modules/stylelint/node_modules/chalk/source/util.js
deleted file mode 100644
index ca466fd..0000000
--- a/assets/node_modules/stylelint/node_modules/chalk/source/util.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict';
-
-const stringReplaceAll = (string, substring, replacer) => {
- let index = string.indexOf(substring);
- if (index === -1) {
- return string;
- }
-
- const substringLength = substring.length;
- let endIndex = 0;
- let returnValue = '';
- do {
- returnValue += string.substr(endIndex, index - endIndex) + substring + replacer;
- endIndex = index + substringLength;
- index = string.indexOf(substring, endIndex);
- } while (index !== -1);
-
- returnValue += string.substr(endIndex);
- return returnValue;
-};
-
-const stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {
- let endIndex = 0;
- let returnValue = '';
- do {
- const gotCR = string[index - 1] === '\r';
- returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\r\n' : '\n') + postfix;
- endIndex = index + 1;
- index = string.indexOf('\n', endIndex);
- } while (index !== -1);
-
- returnValue += string.substr(endIndex);
- return returnValue;
-};
-
-module.exports = {
- stringReplaceAll,
- stringEncaseCRLFWithFirstIndex
-};
diff --git a/assets/node_modules/stylelint/node_modules/color-convert/CHANGELOG.md b/assets/node_modules/stylelint/node_modules/color-convert/CHANGELOG.md
deleted file mode 100644
index 0a7bce4..0000000
--- a/assets/node_modules/stylelint/node_modules/color-convert/CHANGELOG.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# 1.0.0 - 2016-01-07
-
-- Removed: unused speed test
-- Added: Automatic routing between previously unsupported conversions
-([#27](https://github.com/Qix-/color-convert/pull/27))
-- Removed: `xxx2xxx()` and `xxx2xxxRaw()` functions
-([#27](https://github.com/Qix-/color-convert/pull/27))
-- Removed: `convert()` class
-([#27](https://github.com/Qix-/color-convert/pull/27))
-- Changed: all functions to lookup dictionary
-([#27](https://github.com/Qix-/color-convert/pull/27))
-- Changed: `ansi` to `ansi256`
-([#27](https://github.com/Qix-/color-convert/pull/27))
-- Fixed: argument grouping for functions requiring only one argument
-([#27](https://github.com/Qix-/color-convert/pull/27))
-
-# 0.6.0 - 2015-07-23
-
-- Added: methods to handle
-[ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) 16/256 colors:
- - rgb2ansi16
- - rgb2ansi
- - hsl2ansi16
- - hsl2ansi
- - hsv2ansi16
- - hsv2ansi
- - hwb2ansi16
- - hwb2ansi
- - cmyk2ansi16
- - cmyk2ansi
- - keyword2ansi16
- - keyword2ansi
- - ansi162rgb
- - ansi162hsl
- - ansi162hsv
- - ansi162hwb
- - ansi162cmyk
- - ansi162keyword
- - ansi2rgb
- - ansi2hsl
- - ansi2hsv
- - ansi2hwb
- - ansi2cmyk
- - ansi2keyword
-([#18](https://github.com/harthur/color-convert/pull/18))
-
-# 0.5.3 - 2015-06-02
-
-- Fixed: hsl2hsv does not return `NaN` anymore when using `[0,0,0]`
-([#15](https://github.com/harthur/color-convert/issues/15))
-
----
-
-Check out commit logs for older releases
diff --git a/assets/node_modules/stylelint/node_modules/color-convert/LICENSE b/assets/node_modules/stylelint/node_modules/color-convert/LICENSE
deleted file mode 100644
index 5b4c386..0000000
--- a/assets/node_modules/stylelint/node_modules/color-convert/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/stylelint/node_modules/color-convert/README.md b/assets/node_modules/stylelint/node_modules/color-convert/README.md
deleted file mode 100644
index d4b08fc..0000000
--- a/assets/node_modules/stylelint/node_modules/color-convert/README.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# 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/assets/node_modules/stylelint/node_modules/color-convert/conversions.js b/assets/node_modules/stylelint/node_modules/color-convert/conversions.js
deleted file mode 100644
index 2657f26..0000000
--- a/assets/node_modules/stylelint/node_modules/color-convert/conversions.js
+++ /dev/null
@@ -1,839 +0,0 @@
-/* MIT license */
-/* eslint-disable no-mixed-operators */
-const 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.)
-
-const reverseKeywords = {};
-for (const key of Object.keys(cssKeywords)) {
- reverseKeywords[cssKeywords[key]] = key;
-}
-
-const convert = {
- 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']}
-};
-
-module.exports = convert;
-
-// Hide .channels and .labels properties
-for (const model of Object.keys(convert)) {
- 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);
- }
-
- const {channels, labels} = convert[model];
- 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) {
- const r = rgb[0] / 255;
- const g = rgb[1] / 255;
- const b = rgb[2] / 255;
- const min = Math.min(r, g, b);
- const max = Math.max(r, g, b);
- const delta = max - min;
- let h;
- let s;
-
- 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;
- }
-
- const 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) {
- let rdif;
- let gdif;
- let bdif;
- let h;
- let s;
-
- const r = rgb[0] / 255;
- const g = rgb[1] / 255;
- const b = rgb[2] / 255;
- const v = Math.max(r, g, b);
- const diff = v - Math.min(r, g, b);
- const diffc = function (c) {
- return (v - c) / 6 / diff + 1 / 2;
- };
-
- if (diff === 0) {
- h = 0;
- 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) {
- const r = rgb[0];
- const g = rgb[1];
- let b = rgb[2];
- const h = convert.rgb.hsl(rgb)[0];
- const 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) {
- const r = rgb[0] / 255;
- const g = rgb[1] / 255;
- const b = rgb[2] / 255;
-
- const k = Math.min(1 - r, 1 - g, 1 - b);
- const c = (1 - r - k) / (1 - k) || 0;
- const m = (1 - g - k) / (1 - k) || 0;
- const y = (1 - b - k) / (1 - k) || 0;
-
- return [c * 100, m * 100, y * 100, k * 100];
-};
-
-function comparativeDistance(x, y) {
- /*
- See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
- */
- return (
- ((x[0] - y[0]) ** 2) +
- ((x[1] - y[1]) ** 2) +
- ((x[2] - y[2]) ** 2)
- );
-}
-
-convert.rgb.keyword = function (rgb) {
- const reversed = reverseKeywords[rgb];
- if (reversed) {
- return reversed;
- }
-
- let currentClosestDistance = Infinity;
- let currentClosestKeyword;
-
- for (const keyword of Object.keys(cssKeywords)) {
- const value = cssKeywords[keyword];
-
- // Compute comparative distance
- const 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) {
- let r = rgb[0] / 255;
- let g = rgb[1] / 255;
- let b = rgb[2] / 255;
-
- // Assume sRGB
- r = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);
- g = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);
- b = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);
-
- const x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);
- const y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);
- const z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);
-
- return [x * 100, y * 100, z * 100];
-};
-
-convert.rgb.lab = function (rgb) {
- const xyz = convert.rgb.xyz(rgb);
- let x = xyz[0];
- let y = xyz[1];
- let z = xyz[2];
-
- x /= 95.047;
- y /= 100;
- z /= 108.883;
-
- x = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);
- y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);
- z = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);
-
- const l = (116 * y) - 16;
- const a = 500 * (x - y);
- const b = 200 * (y - z);
-
- return [l, a, b];
-};
-
-convert.hsl.rgb = function (hsl) {
- const h = hsl[0] / 360;
- const s = hsl[1] / 100;
- const l = hsl[2] / 100;
- let t2;
- let t3;
- let 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;
- }
-
- const t1 = 2 * l - t2;
-
- const rgb = [0, 0, 0];
- for (let 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) {
- const h = hsl[0];
- let s = hsl[1] / 100;
- let l = hsl[2] / 100;
- let smin = s;
- const lmin = Math.max(l, 0.01);
-
- l *= 2;
- s *= (l <= 1) ? l : 2 - l;
- smin *= lmin <= 1 ? lmin : 2 - lmin;
- const v = (l + s) / 2;
- const sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);
-
- return [h, sv * 100, v * 100];
-};
-
-convert.hsv.rgb = function (hsv) {
- const h = hsv[0] / 60;
- const s = hsv[1] / 100;
- let v = hsv[2] / 100;
- const hi = Math.floor(h) % 6;
-
- const f = h - Math.floor(h);
- const p = 255 * v * (1 - s);
- const q = 255 * v * (1 - (s * f));
- const 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) {
- const h = hsv[0];
- const s = hsv[1] / 100;
- const v = hsv[2] / 100;
- const vmin = Math.max(v, 0.01);
- let sl;
- let l;
-
- l = (2 - s) * v;
- const 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) {
- const h = hwb[0] / 360;
- let wh = hwb[1] / 100;
- let bl = hwb[2] / 100;
- const ratio = wh + bl;
- let f;
-
- // Wh + bl cant be > 1
- if (ratio > 1) {
- wh /= ratio;
- bl /= ratio;
- }
-
- const i = Math.floor(6 * h);
- const v = 1 - bl;
- f = 6 * h - i;
-
- if ((i & 0x01) !== 0) {
- f = 1 - f;
- }
-
- const n = wh + f * (v - wh); // Linear interpolation
-
- let r;
- let g;
- let b;
- /* eslint-disable max-statements-per-line,no-multi-spaces */
- 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;
- }
- /* eslint-enable max-statements-per-line,no-multi-spaces */
-
- return [r * 255, g * 255, b * 255];
-};
-
-convert.cmyk.rgb = function (cmyk) {
- const c = cmyk[0] / 100;
- const m = cmyk[1] / 100;
- const y = cmyk[2] / 100;
- const k = cmyk[3] / 100;
-
- const r = 1 - Math.min(1, c * (1 - k) + k);
- const g = 1 - Math.min(1, m * (1 - k) + k);
- const b = 1 - Math.min(1, y * (1 - k) + k);
-
- return [r * 255, g * 255, b * 255];
-};
-
-convert.xyz.rgb = function (xyz) {
- const x = xyz[0] / 100;
- const y = xyz[1] / 100;
- const z = xyz[2] / 100;
- let r;
- let g;
- let 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 * (r ** (1.0 / 2.4))) - 0.055)
- : r * 12.92;
-
- g = g > 0.0031308
- ? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)
- : g * 12.92;
-
- b = b > 0.0031308
- ? ((1.055 * (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) {
- let x = xyz[0];
- let y = xyz[1];
- let z = xyz[2];
-
- x /= 95.047;
- y /= 100;
- z /= 108.883;
-
- x = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);
- y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);
- z = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);
-
- const l = (116 * y) - 16;
- const a = 500 * (x - y);
- const b = 200 * (y - z);
-
- return [l, a, b];
-};
-
-convert.lab.xyz = function (lab) {
- const l = lab[0];
- const a = lab[1];
- const b = lab[2];
- let x;
- let y;
- let z;
-
- y = (l + 16) / 116;
- x = a / 500 + y;
- z = y - b / 200;
-
- const y2 = y ** 3;
- const x2 = x ** 3;
- const z2 = 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) {
- const l = lab[0];
- const a = lab[1];
- const b = lab[2];
- let h;
-
- const hr = Math.atan2(b, a);
- h = hr * 360 / 2 / Math.PI;
-
- if (h < 0) {
- h += 360;
- }
-
- const c = Math.sqrt(a * a + b * b);
-
- return [l, c, h];
-};
-
-convert.lch.lab = function (lch) {
- const l = lch[0];
- const c = lch[1];
- const h = lch[2];
-
- const hr = h / 360 * 2 * Math.PI;
- const a = c * Math.cos(hr);
- const b = c * Math.sin(hr);
-
- return [l, a, b];
-};
-
-convert.rgb.ansi16 = function (args, saturation = null) {
- const [r, g, b] = args;
- let value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization
-
- value = Math.round(value / 50);
-
- if (value === 0) {
- return 30;
- }
-
- let 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) {
- const r = args[0];
- const g = args[1];
- const 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;
- }
-
- const 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) {
- let 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];
- }
-
- const mult = (~~(args > 50) + 1) * 0.5;
- const r = ((color & 1) * mult) * 255;
- const g = (((color >> 1) & 1) * mult) * 255;
- const b = (((color >> 2) & 1) * mult) * 255;
-
- return [r, g, b];
-};
-
-convert.ansi256.rgb = function (args) {
- // Handle greyscale
- if (args >= 232) {
- const c = (args - 232) * 10 + 8;
- return [c, c, c];
- }
-
- args -= 16;
-
- let rem;
- const r = Math.floor(args / 36) / 5 * 255;
- const g = Math.floor((rem = args % 36) / 6) / 5 * 255;
- const b = (rem % 6) / 5 * 255;
-
- return [r, g, b];
-};
-
-convert.rgb.hex = function (args) {
- const integer = ((Math.round(args[0]) & 0xFF) << 16)
- + ((Math.round(args[1]) & 0xFF) << 8)
- + (Math.round(args[2]) & 0xFF);
-
- const string = integer.toString(16).toUpperCase();
- return '000000'.substring(string.length) + string;
-};
-
-convert.hex.rgb = function (args) {
- const match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
- if (!match) {
- return [0, 0, 0];
- }
-
- let colorString = match[0];
-
- if (match[0].length === 3) {
- colorString = colorString.split('').map(char => {
- return char + char;
- }).join('');
- }
-
- const integer = parseInt(colorString, 16);
- const r = (integer >> 16) & 0xFF;
- const g = (integer >> 8) & 0xFF;
- const b = integer & 0xFF;
-
- return [r, g, b];
-};
-
-convert.rgb.hcg = function (rgb) {
- const r = rgb[0] / 255;
- const g = rgb[1] / 255;
- const b = rgb[2] / 255;
- const max = Math.max(Math.max(r, g), b);
- const min = Math.min(Math.min(r, g), b);
- const chroma = (max - min);
- let grayscale;
- let 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;
- }
-
- hue /= 6;
- hue %= 1;
-
- return [hue * 360, chroma * 100, grayscale * 100];
-};
-
-convert.hsl.hcg = function (hsl) {
- const s = hsl[1] / 100;
- const l = hsl[2] / 100;
-
- const c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));
-
- let f = 0;
- if (c < 1.0) {
- f = (l - 0.5 * c) / (1.0 - c);
- }
-
- return [hsl[0], c * 100, f * 100];
-};
-
-convert.hsv.hcg = function (hsv) {
- const s = hsv[1] / 100;
- const v = hsv[2] / 100;
-
- const c = s * v;
- let f = 0;
-
- if (c < 1.0) {
- f = (v - c) / (1 - c);
- }
-
- return [hsv[0], c * 100, f * 100];
-};
-
-convert.hcg.rgb = function (hcg) {
- const h = hcg[0] / 360;
- const c = hcg[1] / 100;
- const g = hcg[2] / 100;
-
- if (c === 0.0) {
- return [g * 255, g * 255, g * 255];
- }
-
- const pure = [0, 0, 0];
- const hi = (h % 1) * 6;
- const v = hi % 1;
- const w = 1 - v;
- let mg = 0;
-
- /* eslint-disable max-statements-per-line */
- 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;
- }
- /* eslint-enable max-statements-per-line */
-
- 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) {
- const c = hcg[1] / 100;
- const g = hcg[2] / 100;
-
- const v = c + g * (1.0 - c);
- let f = 0;
-
- if (v > 0.0) {
- f = c / v;
- }
-
- return [hcg[0], f * 100, v * 100];
-};
-
-convert.hcg.hsl = function (hcg) {
- const c = hcg[1] / 100;
- const g = hcg[2] / 100;
-
- const l = g * (1.0 - c) + 0.5 * c;
- let 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) {
- const c = hcg[1] / 100;
- const g = hcg[2] / 100;
- const v = c + g * (1.0 - c);
- return [hcg[0], (v - c) * 100, (1 - v) * 100];
-};
-
-convert.hwb.hcg = function (hwb) {
- const w = hwb[1] / 100;
- const b = hwb[2] / 100;
- const v = 1 - b;
- const c = v - w;
- let 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 = function (args) {
- return [0, 0, args[0]];
-};
-
-convert.gray.hsv = convert.gray.hsl;
-
-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) {
- const val = Math.round(gray[0] / 100 * 255) & 0xFF;
- const integer = (val << 16) + (val << 8) + val;
-
- const string = integer.toString(16).toUpperCase();
- return '000000'.substring(string.length) + string;
-};
-
-convert.rgb.gray = function (rgb) {
- const val = (rgb[0] + rgb[1] + rgb[2]) / 3;
- return [val / 255 * 100];
-};
diff --git a/assets/node_modules/stylelint/node_modules/color-convert/index.js b/assets/node_modules/stylelint/node_modules/color-convert/index.js
deleted file mode 100644
index b648e57..0000000
--- a/assets/node_modules/stylelint/node_modules/color-convert/index.js
+++ /dev/null
@@ -1,81 +0,0 @@
-const conversions = require('./conversions');
-const route = require('./route');
-
-const convert = {};
-
-const models = Object.keys(conversions);
-
-function wrapRaw(fn) {
- const wrappedFn = function (...args) {
- const arg0 = args[0];
- if (arg0 === undefined || arg0 === null) {
- return arg0;
- }
-
- if (arg0.length > 1) {
- args = arg0;
- }
-
- return fn(args);
- };
-
- // Preserve .conversion property if there is one
- if ('conversion' in fn) {
- wrappedFn.conversion = fn.conversion;
- }
-
- return wrappedFn;
-}
-
-function wrapRounded(fn) {
- const wrappedFn = function (...args) {
- const arg0 = args[0];
-
- if (arg0 === undefined || arg0 === null) {
- return arg0;
- }
-
- if (arg0.length > 1) {
- args = arg0;
- }
-
- const 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 (let 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(fromModel => {
- convert[fromModel] = {};
-
- Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
- Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
-
- const routes = route(fromModel);
- const routeModels = Object.keys(routes);
-
- routeModels.forEach(toModel => {
- const fn = routes[toModel];
-
- convert[fromModel][toModel] = wrapRounded(fn);
- convert[fromModel][toModel].raw = wrapRaw(fn);
- });
-});
-
-module.exports = convert;
diff --git a/assets/node_modules/stylelint/node_modules/color-convert/package.json b/assets/node_modules/stylelint/node_modules/color-convert/package.json
deleted file mode 100644
index 6e48000..0000000
--- a/assets/node_modules/stylelint/node_modules/color-convert/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "color-convert",
- "description": "Plain color conversion functions",
- "version": "2.0.1",
- "author": "Heather Arthur <fayearthur@gmail.com>",
- "license": "MIT",
- "repository": "Qix-/color-convert",
- "scripts": {
- "pretest": "xo",
- "test": "node test/basic.js"
- },
- "engines": {
- "node": ">=7.0.0"
- },
- "keywords": [
- "color",
- "colour",
- "convert",
- "converter",
- "conversion",
- "rgb",
- "hsl",
- "hsv",
- "hwb",
- "cmyk",
- "ansi",
- "ansi16"
- ],
- "files": [
- "index.js",
- "conversions.js",
- "route.js"
- ],
- "xo": {
- "rules": {
- "default-case": 0,
- "no-inline-comments": 0,
- "operator-linebreak": 0
- }
- },
- "devDependencies": {
- "chalk": "^2.4.2",
- "xo": "^0.24.0"
- },
- "dependencies": {
- "color-name": "~1.1.4"
- }
-}
diff --git a/assets/node_modules/stylelint/node_modules/color-convert/route.js b/assets/node_modules/stylelint/node_modules/color-convert/route.js
deleted file mode 100644
index 1a08521..0000000
--- a/assets/node_modules/stylelint/node_modules/color-convert/route.js
+++ /dev/null
@@ -1,97 +0,0 @@
-const 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() {
- const graph = {};
- // https://jsperf.com/object-keys-vs-for-in-with-closure/3
- const models = Object.keys(conversions);
-
- for (let 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) {
- const graph = buildGraph();
- const queue = [fromModel]; // Unshift -> queue -> pop
-
- graph[fromModel].distance = 0;
-
- while (queue.length) {
- const current = queue.pop();
- const adjacents = Object.keys(conversions[current]);
-
- for (let len = adjacents.length, i = 0; i < len; i++) {
- const adjacent = adjacents[i];
- const 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) {
- const path = [graph[toModel].parent, toModel];
- let fn = conversions[graph[toModel].parent][toModel];
-
- let 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) {
- const graph = deriveBFS(fromModel);
- const conversion = {};
-
- const models = Object.keys(graph);
- for (let len = models.length, i = 0; i < len; i++) {
- const toModel = models[i];
- const 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/assets/node_modules/stylelint/node_modules/color-name/LICENSE b/assets/node_modules/stylelint/node_modules/color-name/LICENSE
deleted file mode 100644
index c6b1001..0000000
--- a/assets/node_modules/stylelint/node_modules/color-name/LICENSE
+++ /dev/null
@@ -1,8 +0,0 @@
-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/assets/node_modules/stylelint/node_modules/color-name/README.md b/assets/node_modules/stylelint/node_modules/color-name/README.md
deleted file mode 100644
index 932b979..0000000
--- a/assets/node_modules/stylelint/node_modules/color-name/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-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/assets/node_modules/stylelint/node_modules/color-name/index.js b/assets/node_modules/stylelint/node_modules/color-name/index.js
deleted file mode 100644
index b7c198a..0000000
--- a/assets/node_modules/stylelint/node_modules/color-name/index.js
+++ /dev/null
@@ -1,152 +0,0 @@
-'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/assets/node_modules/stylelint/node_modules/color-name/package.json b/assets/node_modules/stylelint/node_modules/color-name/package.json
deleted file mode 100644
index 782dd82..0000000
--- a/assets/node_modules/stylelint/node_modules/color-name/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "color-name",
- "version": "1.1.4",
- "description": "A list of color names and its values",
- "main": "index.js",
- "files": [
- "index.js"
- ],
- "scripts": {
- "test": "node test.js"
- },
- "repository": {
- "type": "git",
- "url": "git@github.com:colorjs/color-name.git"
- },
- "keywords": [
- "color-name",
- "color",
- "color-keyword",
- "keyword"
- ],
- "author": "DY <dfcreative@gmail.com>",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/colorjs/color-name/issues"
- },
- "homepage": "https://github.com/colorjs/color-name"
-}
diff --git a/assets/node_modules/stylelint/node_modules/has-flag/index.d.ts b/assets/node_modules/stylelint/node_modules/has-flag/index.d.ts
deleted file mode 100644
index a0a48c8..0000000
--- a/assets/node_modules/stylelint/node_modules/has-flag/index.d.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
-Check if [`argv`](https://nodejs.org/docs/latest/api/process.html#process_process_argv) has a specific flag.
-
-@param flag - CLI flag to look for. The `--` prefix is optional.
-@param argv - CLI arguments. Default: `process.argv`.
-@returns Whether the flag exists.
-
-@example
-```
-// $ ts-node foo.ts -f --unicorn --foo=bar -- --rainbow
-
-// foo.ts
-import 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
-```
-*/
-declare function hasFlag(flag: string, argv?: string[]): boolean;
-
-export = hasFlag;
diff --git a/assets/node_modules/stylelint/node_modules/has-flag/index.js b/assets/node_modules/stylelint/node_modules/has-flag/index.js
deleted file mode 100644
index b6f80b1..0000000
--- a/assets/node_modules/stylelint/node_modules/has-flag/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-'use strict';
-
-module.exports = (flag, argv = process.argv) => {
- const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');
- const position = argv.indexOf(prefix + flag);
- const terminatorPosition = argv.indexOf('--');
- return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
-};
diff --git a/assets/node_modules/stylelint/node_modules/has-flag/license b/assets/node_modules/stylelint/node_modules/has-flag/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/stylelint/node_modules/has-flag/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/stylelint/node_modules/has-flag/package.json b/assets/node_modules/stylelint/node_modules/has-flag/package.json
deleted file mode 100644
index a9cba4b..0000000
--- a/assets/node_modules/stylelint/node_modules/has-flag/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "name": "has-flag",
- "version": "4.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": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "has",
- "check",
- "detect",
- "contains",
- "find",
- "flag",
- "cli",
- "command-line",
- "argv",
- "process",
- "arg",
- "args",
- "argument",
- "arguments",
- "getopt",
- "minimist",
- "optimist"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/stylelint/node_modules/has-flag/readme.md b/assets/node_modules/stylelint/node_modules/has-flag/readme.md
deleted file mode 100644
index 3f72dff..0000000
--- a/assets/node_modules/stylelint/node_modules/has-flag/readme.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# 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.
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-has-flag?utm_source=npm-has-flag&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
-
----
-
-
-## 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.
-
-
-## Security
-
-To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/stylelint/node_modules/supports-color/browser.js b/assets/node_modules/stylelint/node_modules/supports-color/browser.js
deleted file mode 100644
index 62afa3a..0000000
--- a/assets/node_modules/stylelint/node_modules/supports-color/browser.js
+++ /dev/null
@@ -1,5 +0,0 @@
-'use strict';
-module.exports = {
- stdout: false,
- stderr: false
-};
diff --git a/assets/node_modules/stylelint/node_modules/supports-color/index.js b/assets/node_modules/stylelint/node_modules/supports-color/index.js
deleted file mode 100644
index dcaa454..0000000
--- a/assets/node_modules/stylelint/node_modules/supports-color/index.js
+++ /dev/null
@@ -1,139 +0,0 @@
-'use strict';
-const os = require('os');
-const tty = require('tty');
-const hasFlag = require('has-flag');
-
-const {env} = process;
-
-let forceColor;
-if (hasFlag('no-color') ||
- hasFlag('no-colors') ||
- hasFlag('color=false') ||
- hasFlag('color=never')) {
- forceColor = 0;
-} else if (hasFlag('color') ||
- hasFlag('colors') ||
- hasFlag('color=true') ||
- hasFlag('color=always')) {
- forceColor = 1;
-}
-
-if ('FORCE_COLOR' in env) {
- if (env.FORCE_COLOR === 'true') {
- forceColor = 1;
- } else if (env.FORCE_COLOR === 'false') {
- forceColor = 0;
- } else {
- forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);
- }
-}
-
-function translateLevel(level) {
- if (level === 0) {
- return false;
- }
-
- return {
- level,
- hasBasic: true,
- has256: level >= 2,
- has16m: level >= 3
- };
-}
-
-function supportsColor(haveStream, streamIsTTY) {
- if (forceColor === 0) {
- return 0;
- }
-
- if (hasFlag('color=16m') ||
- hasFlag('color=full') ||
- hasFlag('color=truecolor')) {
- return 3;
- }
-
- if (hasFlag('color=256')) {
- return 2;
- }
-
- if (haveStream && !streamIsTTY && forceColor === undefined) {
- return 0;
- }
-
- const min = forceColor || 0;
-
- if (env.TERM === 'dumb') {
- return min;
- }
-
- if (process.platform === 'win32') {
- // 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(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 ('GITHUB_ACTIONS' in env) {
- return 1;
- }
-
- 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;
- }
-
- return min;
-}
-
-function getSupportLevel(stream) {
- const level = supportsColor(stream, stream && stream.isTTY);
- return translateLevel(level);
-}
-
-module.exports = {
- supportsColor: getSupportLevel,
- stdout: translateLevel(supportsColor(true, tty.isatty(1))),
- stderr: translateLevel(supportsColor(true, tty.isatty(2)))
-};
diff --git a/assets/node_modules/stylelint/node_modules/supports-color/license b/assets/node_modules/stylelint/node_modules/supports-color/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/stylelint/node_modules/supports-color/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/stylelint/node_modules/supports-color/package.json b/assets/node_modules/stylelint/node_modules/supports-color/package.json
deleted file mode 100644
index f9e9763..0000000
--- a/assets/node_modules/stylelint/node_modules/supports-color/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "name": "supports-color",
- "version": "7.1.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": ">=8"
- },
- "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": "^4.0.0"
- },
- "devDependencies": {
- "ava": "^1.4.1",
- "import-fresh": "^3.0.0",
- "xo": "^0.24.0"
- },
- "browser": "browser.js"
-}
diff --git a/assets/node_modules/stylelint/node_modules/supports-color/readme.md b/assets/node_modules/stylelint/node_modules/supports-color/readme.md
deleted file mode 100644
index 3654228..0000000
--- a/assets/node_modules/stylelint/node_modules/supports-color/readme.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# 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.
-
-For situations where using `--color` is not possible, use the environment variable `FORCE_COLOR=1` (level 1), `FORCE_COLOR=2` (level 2), or `FORCE_COLOR=3` (level 3) 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-)
-
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-supports-color?utm_source=npm-supports-color&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
-
----
diff --git a/assets/node_modules/stylelint/package.json b/assets/node_modules/stylelint/package.json
deleted file mode 100644
index 4639b3e..0000000
--- a/assets/node_modules/stylelint/package.json
+++ /dev/null
@@ -1,261 +0,0 @@
-{
- "name": "stylelint",
- "version": "13.0.0",
- "description": "A mighty, modern CSS linter.",
- "keywords": [
- "css",
- "less",
- "sass",
- "scss",
- "sugarss",
- "lint",
- "linter",
- "stylelint"
- ],
- "authors": [
- "David Clark",
- "Maxime Thirouin",
- "Richard Hallows"
- ],
- "license": "MIT",
- "homepage": "https://stylelint.io",
- "repository": {
- "type": "git",
- "url": "https://github.com/stylelint/stylelint.git"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/stylelint"
- },
- "main": "lib/index.js",
- "bin": "bin/stylelint.js",
- "files": [
- "bin",
- "CONTRIBUTING.md",
- "SECURITY.md",
- "docs",
- "lib",
- "VISION.md",
- "!**/__tests__",
- "!lib/testUtils"
- ],
- "dependencies": {
- "autoprefixer": "^9.7.3",
- "balanced-match": "^1.0.0",
- "chalk": "^3.0.0",
- "cosmiconfig": "^6.0.0",
- "debug": "^4.1.1",
- "execall": "^2.0.0",
- "file-entry-cache": "^5.0.1",
- "get-stdin": "^7.0.0",
- "global-modules": "^2.0.0",
- "globby": "^11.0.0",
- "globjoin": "^0.1.4",
- "html-tags": "^3.1.0",
- "ignore": "^5.1.4",
- "import-lazy": "^4.0.0",
- "imurmurhash": "^0.1.4",
- "known-css-properties": "^0.17.0",
- "leven": "^3.1.0",
- "lodash": "^4.17.15",
- "log-symbols": "^3.0.0",
- "mathml-tag-names": "^2.1.1",
- "meow": "^6.0.0",
- "micromatch": "^4.0.2",
- "normalize-selector": "^0.2.0",
- "postcss": "^7.0.26",
- "postcss-html": "^0.36.0",
- "postcss-jsx": "^0.36.3",
- "postcss-less": "^3.1.4",
- "postcss-markdown": "^0.36.0",
- "postcss-media-query-parser": "^0.2.3",
- "postcss-reporter": "^6.0.1",
- "postcss-resolve-nested-selector": "^0.1.1",
- "postcss-safe-parser": "^4.0.1",
- "postcss-sass": "^0.4.2",
- "postcss-scss": "^2.0.0",
- "postcss-selector-parser": "^3.1.0",
- "postcss-syntax": "^0.36.2",
- "postcss-value-parser": "^4.0.2",
- "resolve-from": "^5.0.0",
- "slash": "^3.0.0",
- "specificity": "^0.4.1",
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "style-search": "^0.1.0",
- "sugarss": "^2.0.0",
- "svg-tags": "^1.0.0",
- "table": "^5.4.6",
- "v8-compile-cache": "^2.1.0",
- "write-file-atomic": "^3.0.1"
- },
- "devDependencies": {
- "@types/browserslist": "^4.4.0",
- "@types/debug": "^4.1.5",
- "@types/global-modules": "^2.0.0",
- "@types/globjoin": "^0.1.0",
- "@types/lodash": "^4.14.149",
- "@types/micromatch": "^4.0.0",
- "benchmark": "^2.1.4",
- "common-tags": "^1.8.0",
- "del": "^5.1.0",
- "eslint": "^6.8.0",
- "eslint-config-stylelint": "^11.1.0",
- "got": "^10.2.2",
- "husky": "^4.0.7",
- "jest": "^24.9.0",
- "jest-watch-typeahead": "^0.4.2",
- "lint-staged": "^9.5.0",
- "np": "^5.2.1",
- "npm-run-all": "^4.1.5",
- "postcss-import": "^12.0.1",
- "prettier": "^1.19.1",
- "remark-cli": "^7.0.1",
- "remark-lint-no-missing-blank-lines": "^1.0.3",
- "remark-preset-lint-consistent": "^2.0.3",
- "remark-preset-lint-recommended": "^3.0.3",
- "remark-validate-links": "^9.1.0",
- "typescript": "^3.6.4"
- },
- "scripts": {
- "benchmark-rule": "node scripts/benchmark-rule.js",
- "jest": "jest",
- "jest:detectleaks": "jest --detectLeaks",
- "lint:js": "eslint . --cache --max-warnings=0",
- "lint:md": "remark . --quiet --frail",
- "lint:types": "tsc",
- "lint": "npm-run-all --parallel lint:*",
- "pretest": "npm-run-all --serial lint prettier:check",
- "prettier:check": "prettier \"**/*.js\" --check",
- "prettier:fix": "prettier \"**/*.js\" --write",
- "release": "np",
- "test": "jest --coverage",
- "watch": "jest --watch"
- },
- "husky": {
- "hooks": {
- "pre-commit": "lint-staged"
- }
- },
- "lint-staged": {
- "*.js": [
- "prettier --write",
- "eslint --max-warnings=0 --fix",
- "git add"
- ],
- "*.md": [
- "remark --quiet --frail"
- ]
- },
- "eslintConfig": {
- "parserOptions": {
- "ecmaVersion": 2019
- },
- "extends": [
- "stylelint"
- ],
- "globals": {
- "testRule": true
- },
- "rules": {
- "array-callback-return": "error",
- "dot-notation": "error",
- "func-name-matching": "error",
- "guard-for-in": "error",
- "no-else-return": [
- "error",
- {
- "allowElseIf": false
- }
- ],
- "no-implicit-coercion": "error",
- "no-lonely-if": "error",
- "no-mixed-spaces-and-tabs": "off",
- "no-unneeded-ternary": "error",
- "no-useless-return": "error",
- "no-unused-vars": [
- "error",
- {
- "ignoreRestSiblings": true
- }
- ],
- "operator-assignment": "error",
- "prefer-object-spread": "error",
- "prefer-regex-literals": "error",
- "prefer-rest-params": "error",
- "prefer-spread": "error",
- "prefer-template": "error",
- "node/no-unsupported-features/es-builtins": [
- "error",
- {
- "version": ">=10.18.0"
- }
- ],
- "node/no-unsupported-features/es-syntax": [
- "error",
- {
- "version": ">=10.18.0"
- }
- ],
- "node/no-unsupported-features/node-builtins": [
- "error",
- {
- "version": ">=10.18.0"
- }
- ]
- }
- },
- "jest": {
- "clearMocks": true,
- "collectCoverage": false,
- "collectCoverageFrom": [
- "lib/**/*.js",
- "!lib/vendor/**/*.js",
- "!lib/utils/parseCalcExpression/parser.js"
- ],
- "coverageDirectory": "./.coverage/",
- "coverageReporters": [
- "lcov",
- "text-summary"
- ],
- "coverageThreshold": {
- "global": {
- "branches": 75,
- "functions": 75,
- "lines": 75,
- "statements": 75
- }
- },
- "setupFiles": [
- "./jest-setup.js"
- ],
- "testEnvironment": "node",
- "roots": [
- "lib",
- "system-tests"
- ],
- "testRegex": ".*\\.test\\.js$|rules/.*/__tests__/.*\\.js$",
- "watchPlugins": [
- "jest-watch-typeahead/filename",
- "jest-watch-typeahead/testname"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-lint-recommended",
- "preset-lint-consistent",
- [
- "lint-no-missing-blank-lines",
- {
- "exceptTightLists": true
- }
- ],
- [
- "validate-links",
- {
- "repository": "stylelint/stylelint"
- }
- ]
- ]
- }
-}
diff --git a/assets/node_modules/sugarss/CHANGELOG.md b/assets/node_modules/sugarss/CHANGELOG.md
deleted file mode 100644
index 891f3d3..0000000
--- a/assets/node_modules/sugarss/CHANGELOG.md
+++ /dev/null
@@ -1,44 +0,0 @@
-# Change Log
-This project adheres to [Semantic Versioning](http://semver.org/).
-
-## 2.0
-* Remove Node.js 9 and Node.js 4 support (by Aleks Hudochenkov).
-* Remove IE and “dead” browsers from Babel.
-* Use PostCSS 7.0 (by Aleks Hudochenkov).
-
-## 1.0.1
-* Fix nested inline comments parsing.
-
-## 1.0
-* Use PostCSS 6.0.
-* Use `babel-preset-env`.
-
-## 0.2
-* Show error on semicolons and curly brackets.
-* Fix source map mappings.
-
-## 0.1.6
-* Fix empty comments parsing.
-
-## 0.1.5
-* Put comments after declaration semicolon.
-* Use PostCSS 5.1.
-
-## 0.1.4
-* Fix parsing nested properties.
-
-## 0.1.3
-* Fix source map generation.
-
-## 0.1.2
-* Fix rule/declaration selection in nested rules.
-
-## 0.1.1
-* Fix comment between declaration case.
-* Add logo (by Maria Keller).
-
-## 0.1
-* Add selector pseudo-classes support.
-
-## 0.0.1
-* Initial release.
diff --git a/assets/node_modules/sugarss/LICENSE b/assets/node_modules/sugarss/LICENSE
deleted file mode 100644
index 1dce8b4..0000000
--- a/assets/node_modules/sugarss/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright 2016 Andrey Sitnik <andrey@sitnik.ru>
-
-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/assets/node_modules/sugarss/README.md b/assets/node_modules/sugarss/README.md
deleted file mode 100644
index 7b8abd7..0000000
--- a/assets/node_modules/sugarss/README.md
+++ /dev/null
@@ -1,234 +0,0 @@
-# SugarSS [![Build Status][ci-img]][ci]
-
-<img align="right" width="120" height="155"
- title="SugarSS logo by Maria Keller"
- src="http://postcss.github.io/sugarss/logo.svg">
-
-Indent-based CSS syntax for [PostCSS].
-
-```sass
-a
- color: blue
-
-.multiline,
-.selector
- box-shadow: 1px 0 9px rgba(0, 0, 0, .4),
- 1px 0 3px rgba(0, 0, 0, .6)
-
-// Mobile
-@media (max-width: 400px)
- .body
- padding: 0 10px
-```
-
-As any PostCSS custom syntax, SugarSS has source map, [stylelint]
-and [postcss-sorting] support out-of-box.
-
-It was designed to be used with [PreCSS] and [postcss-nested-props].
-But you can use it with any PostCSS plugins
-or use it without any PostCSS plugins.
-With [gulp-sass-to-postcss-mixins] you can use `+mixin` syntax as in Sass.
-
-<a href="https://evilmartians.com/?utm_source=sugarss">
- <img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg"
- alt="Sponsored by Evil Martians" width="236" height="54">
-</a>
-
-[gulp-sass-to-postcss-mixins]: https://github.com/akella/gulp-sass-to-postcss-mixins
-[postcss-nested-props]: https://github.com/jedmao/postcss-nested-props
-[postcss-sorting]: https://github.com/hudochenkov/postcss-sorting
-[stylelint]: http://stylelint.io/
-[PostCSS]: https://github.com/postcss/postcss
-[PreCSS]: https://github.com/jonathantneal/precss
-[ci-img]: https://img.shields.io/travis/postcss/sugarss.svg
-[ci]: https://travis-ci.org/postcss/sugarss
-
-## Syntax
-
-SugarSS MIME-type is `text/x-sugarss` with `.sss` file extension.
-
-### Indent
-
-We recommend 2 spaces indent. However, SugarSS autodetects indent
-and can be used with tabs or spaces.
-
-But it is prohibited to mix spaces and tabs in SugarSS sources.
-
-### Multiline
-
-SugarSS was designed to have intuitively multiline selectors and declaration
-values.
-
-There are 3 rules for any types of nodes:
-
-```sass
-// 1. New line inside brackets will be ignored
-@supports ( (display: flex) and
- (display: grid) )
-
-// 2. Comma at the end of the line
-@media (max-width: 400px),
- (max-height: 800px)
-
-// 3. Backslash before new line
-@media screen and \
- (min-width: 600px)
-```
-
-In selector you can put a new line anywhere. Just keep same indent
-for every line of selector:
-
-```sass
-.parent >
-.child
- color: black
-```
-
-In declaration value you can put new line anywhere. Just keep bigger indent
-for value:
-
-```sass
-.one
- background: linear-gradient(rgba(0, 0, 0, 0), black)
- linear-gradient(red, rgba(255, 0, 0, 0))
-
-.two
- background:
- linear-gradient(rgba(0, 0, 0, 0), black)
- linear-gradient(red, rgba(255, 0, 0, 0))
-```
-
-### Comments
-
-SugarSS supports two types of comments:
-
-```sass
-/*
- Multiline comments
- */
-
-// Inline comments
-```
-
-There is no “silent” comments in SugarSS. Output CSS will contain all comments
-from `.sss` source. But you can use [postcss-discard-comments]
-for Sass’s silent/loud comments behaviour.
-
-[postcss-discard-comments]: https://www.npmjs.com/package/postcss-discard-comments
-
-### Rule and Declarations
-
-SugarSS separates selectors and declarations by `:\s` or `:\n` token.
-
-So you must write a space after property name: `color: black` is good,
-`color:black` is prohibited.
-
-## Text Editors
-
-* SublimeText: [Syntax Highlighting for .SSS SugarSS]
-* Atom: [language-postcss], [source-preview-postcss] and [build-sugarss]
-* Vim: [vim-sugarss]
-
-We are working on syntax highlight support in text editors.
-
-Right now, you can set `Sass` or `Stylus` syntax highlight for `.sss` files.
-
-[Syntax Highlighting for .SSS SugarSS]: https://packagecontrol.io/packages/Syntax%20Highlighting%20for%20SSS%20SugarSS
-[source-preview-postcss]: https://atom.io/packages/source-preview-postcss
-[language-postcss]: https://atom.io/packages/language-postcss
-[build-sugarss]: https://atom.io/packages/build-sugarss
-[vim-sugarss]: https://github.com/hhsnopek/vim-sugarss
-
-## Usage
-
-Install SugarSS via npm:
-
-```sh
-npm install sugarss --save-dev
-```
-
-### SugarSS to CSS
-
-Just set SugarSS to PostCSS `parser` option and PostCSS will compile
-SugarSS to CSS.
-
-[Gulp](https://github.com/postcss/gulp-postcss):
-
-```js
-var sugarss = require('sugarss');
-var postcss = require('gulp-postcss');
-var rename = require('gulp-rename');
-
-gulp.task('style', function () {
- return gulp.src('src/**/*.sss')
- .pipe(postcss(plugins, { parser: sugarss }))
- .pipe(rename({ extname: '.css' }))
- .pipe(gulp.dest('build'));
-});
-```
-
-[Webpack](https://github.com/postcss/postcss-loader):
-
-```js
-module: {
- loaders: [
- {
- test: /\.sss/,
- loader: "style-loader!css-loader!postcss-loader?parser=sugarss"
- }
- ]
-}
-```
-
-[CLI](https://github.com/postcss/postcss-cli):
-
-```
-postcss -u autoprefixer -p sugarss test.sss -o test.css
-```
-
-### SugarSS to SugarSS
-
-Sometimes we use PostCSS not to build CSS, but to fix source file.
-For example, to sort properties by [postcss-sorting].
-
-For this cases, use `syntax` option, instead of `parser`:
-
-```js
-gulp.task('sort', function () {
- return gulp.src('src/**/*.sss')
- .pipe(postcss([sorting], { syntax: sugarss }))
- .pipe(gulp.dest('src'));
-});
-```
-
-[postcss-sorting]: https://github.com/hudochenkov/postcss-sorting
-
-### CSS to SugarSS
-
-You can even compile existed CSS sources to SugarSS syntax.
-Just use `stringifier` option instead of `parser`:
-
-```js
-postcss().process(css, { stringifier: sugarss }).then(function (result) {
- result.content // Converted SugarSS content
-});
-```
-
-### Imports
-
-[postcss-import] doesn’t support `.sss` file extension, because this plugin
-implements W3C specification. If you want smarter `@import`, you should
-use [postcss-easy-import] with `extensions` option.
-
-```js
-var postcssPlugin = [
- easyImport({ extensions: ['.sss'] })
-]
-```
-
-[postcss-easy-import]: https://github.com/TrySound/postcss-easy-import
-[postcss-import]: https://github.com/postcss/postcss-import
-
-## Thanks
-
-Cute project logo was made by [Maria Keller](http://www.mariakellerac.com/).
diff --git a/assets/node_modules/sugarss/index.js b/assets/node_modules/sugarss/index.js
deleted file mode 100644
index 19438e3..0000000
--- a/assets/node_modules/sugarss/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _stringify = require('./stringify');
-
-var _stringify2 = _interopRequireDefault(_stringify);
-
-var _parse = require('./parse');
-
-var _parse2 = _interopRequireDefault(_parse);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-exports.default = { stringify: _stringify2.default, parse: _parse2.default };
-module.exports = exports['default'];
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmVzNiJdLCJuYW1lcyI6WyJzdHJpbmdpZnkiLCJwYXJzZSJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7O0FBQ0E7Ozs7OztrQkFFZSxFQUFFQSw4QkFBRixFQUFhQyxzQkFBYixFIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0cmluZ2lmeSBmcm9tICcuL3N0cmluZ2lmeSdcbmltcG9ydCBwYXJzZSBmcm9tICcuL3BhcnNlJ1xuXG5leHBvcnQgZGVmYXVsdCB7IHN0cmluZ2lmeSwgcGFyc2UgfVxuIl19 \ No newline at end of file
diff --git a/assets/node_modules/sugarss/liner.js b/assets/node_modules/sugarss/liner.js
deleted file mode 100644
index 1dcccc3..0000000
--- a/assets/node_modules/sugarss/liner.js
+++ /dev/null
@@ -1,36 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-exports.default = liner;
-function liner(tokens) {
- var line = [];
- var result = [line];
- var brackets = 0;
- for (var _iterator = tokens, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var token = _ref;
-
- line.push(token);
- if (token[0] === '(') {
- brackets += 1;
- } else if (token[0] === ')') {
- brackets -= 1;
- } else if (token[0] === 'newline' && brackets === 0) {
- line = [];
- result.push(line);
- }
- }
- return result;
-}
-module.exports = exports['default'];
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpbmVyLmVzNiJdLCJuYW1lcyI6WyJsaW5lciIsInRva2VucyIsImxpbmUiLCJyZXN1bHQiLCJicmFja2V0cyIsInRva2VuIiwicHVzaCJdLCJtYXBwaW5ncyI6Ijs7O2tCQUF3QkEsSztBQUFULFNBQVNBLEtBQVQsQ0FBZ0JDLE1BQWhCLEVBQXdCO0FBQ3JDLE1BQUlDLE9BQU8sRUFBWDtBQUNBLE1BQUlDLFNBQVMsQ0FBQ0QsSUFBRCxDQUFiO0FBQ0EsTUFBSUUsV0FBVyxDQUFmO0FBQ0EsdUJBQWtCSCxNQUFsQixrSEFBMEI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLFFBQWpCSSxLQUFpQjs7QUFDeEJILFNBQUtJLElBQUwsQ0FBVUQsS0FBVjtBQUNBLFFBQUlBLE1BQU0sQ0FBTixNQUFhLEdBQWpCLEVBQXNCO0FBQ3BCRCxrQkFBWSxDQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUlDLE1BQU0sQ0FBTixNQUFhLEdBQWpCLEVBQXNCO0FBQzNCRCxrQkFBWSxDQUFaO0FBQ0QsS0FGTSxNQUVBLElBQUlDLE1BQU0sQ0FBTixNQUFhLFNBQWIsSUFBMEJELGFBQWEsQ0FBM0MsRUFBOEM7QUFDbkRGLGFBQU8sRUFBUDtBQUNBQyxhQUFPRyxJQUFQLENBQVlKLElBQVo7QUFDRDtBQUNGO0FBQ0QsU0FBT0MsTUFBUDtBQUNEIiwiZmlsZSI6ImxpbmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGluZXIgKHRva2Vucykge1xuICBsZXQgbGluZSA9IFtdXG4gIGxldCByZXN1bHQgPSBbbGluZV1cbiAgbGV0IGJyYWNrZXRzID0gMFxuICBmb3IgKGxldCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICBsaW5lLnB1c2godG9rZW4pXG4gICAgaWYgKHRva2VuWzBdID09PSAnKCcpIHtcbiAgICAgIGJyYWNrZXRzICs9IDFcbiAgICB9IGVsc2UgaWYgKHRva2VuWzBdID09PSAnKScpIHtcbiAgICAgIGJyYWNrZXRzIC09IDFcbiAgICB9IGVsc2UgaWYgKHRva2VuWzBdID09PSAnbmV3bGluZScgJiYgYnJhY2tldHMgPT09IDApIHtcbiAgICAgIGxpbmUgPSBbXVxuICAgICAgcmVzdWx0LnB1c2gobGluZSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl19 \ No newline at end of file
diff --git a/assets/node_modules/sugarss/package.json b/assets/node_modules/sugarss/package.json
deleted file mode 100644
index aa873c9..0000000
--- a/assets/node_modules/sugarss/package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "sugarss",
- "version": "2.0.0",
- "description": "Indent-based CSS syntax for PostCSS",
- "keywords": [
- "css",
- "postcss",
- "postcss-syntax",
- "syntax",
- "indent",
- "parser"
- ],
- "author": "Andrey Sitnik <andrey@sitnik.ru>",
- "license": "MIT",
- "repository": "postcss/sugarss",
- "dependencies": {
- "postcss": "^7.0.2"
- }
-}
diff --git a/assets/node_modules/sugarss/parse.js b/assets/node_modules/sugarss/parse.js
deleted file mode 100644
index d97c1dc..0000000
--- a/assets/node_modules/sugarss/parse.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-exports.default = parse;
-
-var _input = require('postcss/lib/input');
-
-var _input2 = _interopRequireDefault(_input);
-
-var _preprocess = require('./preprocess');
-
-var _preprocess2 = _interopRequireDefault(_preprocess);
-
-var _tokenize = require('./tokenize');
-
-var _tokenize2 = _interopRequireDefault(_tokenize);
-
-var _parser = require('./parser');
-
-var _parser2 = _interopRequireDefault(_parser);
-
-var _liner = require('./liner');
-
-var _liner2 = _interopRequireDefault(_liner);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function parse(source, opts) {
- var input = new _input2.default(source, opts);
-
- var parser = new _parser2.default(input);
- parser.tokens = (0, _tokenize2.default)(input);
- parser.parts = (0, _preprocess2.default)(input, (0, _liner2.default)(parser.tokens));
- parser.loop();
-
- return parser.root;
-}
-module.exports = exports['default'];
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlLmVzNiJdLCJuYW1lcyI6WyJwYXJzZSIsInNvdXJjZSIsIm9wdHMiLCJpbnB1dCIsIklucHV0IiwicGFyc2VyIiwiUGFyc2VyIiwidG9rZW5zIiwicGFydHMiLCJsb29wIiwicm9vdCJdLCJtYXBwaW5ncyI6Ijs7O2tCQU93QkEsSzs7QUFQeEI7Ozs7QUFFQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRWUsU0FBU0EsS0FBVCxDQUFnQkMsTUFBaEIsRUFBd0JDLElBQXhCLEVBQThCO0FBQzNDLE1BQUlDLFFBQVEsSUFBSUMsZUFBSixDQUFVSCxNQUFWLEVBQWtCQyxJQUFsQixDQUFaOztBQUVBLE1BQUlHLFNBQVMsSUFBSUMsZ0JBQUosQ0FBV0gsS0FBWCxDQUFiO0FBQ0FFLFNBQU9FLE1BQVAsR0FBZ0Isd0JBQVVKLEtBQVYsQ0FBaEI7QUFDQUUsU0FBT0csS0FBUCxHQUFlLDBCQUFXTCxLQUFYLEVBQWtCLHFCQUFNRSxPQUFPRSxNQUFiLENBQWxCLENBQWY7QUFDQUYsU0FBT0ksSUFBUDs7QUFFQSxTQUFPSixPQUFPSyxJQUFkO0FBQ0QiLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgSW5wdXQgZnJvbSAncG9zdGNzcy9saWIvaW5wdXQnXG5cbmltcG9ydCBwcmVwcm9jZXNzIGZyb20gJy4vcHJlcHJvY2VzcydcbmltcG9ydCB0b2tlbml6ZXIgZnJvbSAnLi90b2tlbml6ZSdcbmltcG9ydCBQYXJzZXIgZnJvbSAnLi9wYXJzZXInXG5pbXBvcnQgbGluZXIgZnJvbSAnLi9saW5lcidcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFyc2UgKHNvdXJjZSwgb3B0cykge1xuICBsZXQgaW5wdXQgPSBuZXcgSW5wdXQoc291cmNlLCBvcHRzKVxuXG4gIGxldCBwYXJzZXIgPSBuZXcgUGFyc2VyKGlucHV0KVxuICBwYXJzZXIudG9rZW5zID0gdG9rZW5pemVyKGlucHV0KVxuICBwYXJzZXIucGFydHMgPSBwcmVwcm9jZXNzKGlucHV0LCBsaW5lcihwYXJzZXIudG9rZW5zKSlcbiAgcGFyc2VyLmxvb3AoKVxuXG4gIHJldHVybiBwYXJzZXIucm9vdFxufVxuIl19 \ No newline at end of file
diff --git a/assets/node_modules/sugarss/parser.js b/assets/node_modules/sugarss/parser.js
deleted file mode 100644
index a8fe48f..0000000
--- a/assets/node_modules/sugarss/parser.js
+++ /dev/null
@@ -1,448 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-var _declaration = require('postcss/lib/declaration');
-
-var _declaration2 = _interopRequireDefault(_declaration);
-
-var _comment = require('postcss/lib/comment');
-
-var _comment2 = _interopRequireDefault(_comment);
-
-var _atRule = require('postcss/lib/at-rule');
-
-var _atRule2 = _interopRequireDefault(_atRule);
-
-var _rule = require('postcss/lib/rule');
-
-var _rule2 = _interopRequireDefault(_rule);
-
-var _root = require('postcss/lib/root');
-
-var _root2 = _interopRequireDefault(_root);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var Parser = function () {
- function Parser(input) {
- _classCallCheck(this, Parser);
-
- this.input = input;
-
- this.pos = 0;
- this.root = new _root2.default();
- this.current = this.root;
- this.spaces = '';
-
- this.extraIndent = false;
- this.prevIndent = undefined;
- this.step = undefined;
-
- this.root.source = { input: input, start: { line: 1, column: 1 } };
- }
-
- Parser.prototype.loop = function loop() {
- var part = void 0;
- while (this.pos < this.parts.length) {
- part = this.parts[this.pos];
-
- if (part.comment) {
- this.comment(part);
- } else if (part.atrule) {
- this.atrule(part);
- } else if (part.colon) {
- var next = this.nextNonComment(this.pos);
-
- if (next.end || next.atrule) {
- this.decl(part);
- } else {
- var moreIndent = next.indent.length > part.indent.length;
- if (!moreIndent) {
- this.decl(part);
- } else if (moreIndent && next.colon) {
- this.rule(part);
- } else if (moreIndent && !next.colon) {
- this.decl(part);
- }
- }
- } else if (part.end) {
- this.root.raws.after = part.before;
- } else {
- this.rule(part);
- }
-
- this.pos += 1;
- }
-
- for (var i = this.tokens.length - 1; i >= 0; i--) {
- if (this.tokens[i].length > 3) {
- var last = this.tokens[i];
- this.root.source.end = {
- line: last[4] || last[2],
- column: last[5] || last[3]
- };
- break;
- }
- }
- };
-
- Parser.prototype.comment = function comment(part) {
- var token = part.tokens[0];
- var node = new _comment2.default();
- this.init(node, part);
- node.source.end = { line: token[4], column: token[5] };
- this.commentText(node, token);
- };
-
- Parser.prototype.atrule = function atrule(part) {
- var atword = part.tokens[0];
- var params = part.tokens.slice(1);
-
- var node = new _atRule2.default();
- node.name = atword[1].slice(1);
- this.init(node, part);
-
- if (node.name === '') this.unnamedAtrule(atword);
-
- while (!part.end && part.lastComma) {
- this.pos += 1;
- part = this.parts[this.pos];
- params.push(['space', part.before + part.indent]);
- params = params.concat(part.tokens);
- }
-
- node.raws.afterName = this.firstSpaces(params);
- this.keepTrailingSpace(node, params);
- this.checkSemicolon(params);
- this.checkCurly(params);
- this.raw(node, 'params', params, atword);
- };
-
- Parser.prototype.decl = function decl(part) {
- var node = new _declaration2.default();
- this.init(node, part);
-
- var between = '';
- var colon = 0;
- var value = [];
- var prop = '';
- for (var i = 0; i < part.tokens.length; i++) {
- var token = part.tokens[i];
- if (token[0] === ':') {
- between += token[1];
- colon = token;
- value = part.tokens.slice(i + 1);
- break;
- } else if (token[0] === 'comment' || token[0] === 'space') {
- between += token[1];
- } else if (between !== '') {
- this.badProp(token);
- } else {
- prop += token[1];
- }
- }
-
- if (prop === '') this.unnamedDecl(part.tokens[0]);
- node.prop = prop;
-
- var next = this.parts[this.pos + 1];
-
- while (!next.end && !next.atrule && !next.colon && next.indent.length > part.indent.length) {
- value.push(['space', next.before + next.indent]);
- value = value.concat(next.tokens);
- this.pos += 1;
- next = this.parts[this.pos + 1];
- }
-
- var last = value[value.length - 1];
- if (last && last[0] === 'comment') {
- value.pop();
- var comment = new _comment2.default();
- this.current.push(comment);
- comment.source = {
- input: this.input,
- start: { line: last[2], column: last[3] },
- end: { line: last[4], column: last[5] }
- };
- var prev = value[value.length - 1];
- if (prev && prev[0] === 'space') {
- value.pop();
- comment.raws.before = prev[1];
- }
- this.commentText(comment, last);
- }
-
- for (var _i = value.length - 1; _i > 0; _i--) {
- var t = value[_i][0];
- if (t === 'word' && value[_i][1] === '!important') {
- node.important = true;
- if (_i > 0 && value[_i - 1][0] === 'space') {
- node.raws.important = value[_i - 1][1] + '!important';
- value.splice(_i - 1, 2);
- } else {
- node.raws.important = '!important';
- value.splice(_i, 1);
- }
- break;
- } else if (t !== 'space' && t !== 'newline' && t !== 'comment') {
- break;
- }
- }
-
- node.raws.between = between + this.firstSpaces(value);
- this.checkSemicolon(value);
- this.raw(node, 'value', value, colon);
- };
-
- Parser.prototype.rule = function rule(part) {
- var node = new _rule2.default();
- this.init(node, part);
-
- var selector = part.tokens;
- var next = this.parts[this.pos + 1];
-
- while (!next.end && next.indent.length === part.indent.length) {
- selector.push(['space', next.before + next.indent]);
- selector = selector.concat(next.tokens);
- this.pos += 1;
- next = this.parts[this.pos + 1];
- }
-
- this.keepTrailingSpace(node, selector);
- this.checkCurly(selector);
- this.raw(node, 'selector', selector);
- };
-
- /* Helpers */
-
- Parser.prototype.indent = function indent(part) {
- var indent = part.indent.length;
- var isPrev = typeof this.prevIndent !== 'undefined';
-
- if (!isPrev && indent) this.indentedFirstLine(part);
-
- if (!this.step && indent) {
- this.step = indent;
- this.root.raws.indent = part.indent;
- }
-
- if (isPrev && this.prevIndent !== indent) {
- var diff = indent - this.prevIndent;
- if (diff > 0) {
- if (diff !== this.step) {
- this.wrongIndent(this.prevIndent + this.step, indent, part);
- } else if (this.current.last.push) {
- this.current = this.current.last;
- } else {
- this.extraIndent = '';
- for (var i = 0; i < diff; i++) {
- this.extraIndent += ' ';
- }
- }
- } else if (diff % this.step !== 0) {
- var m = indent + diff % this.step;
- this.wrongIndent(m + ' or ' + (m + this.step), indent, part);
- } else {
- for (var _i2 = 0; _i2 < -diff / this.step; _i2++) {
- this.current = this.current.parent;
- }
- }
- }
-
- this.prevIndent = indent;
- };
-
- Parser.prototype.init = function init(node, part) {
- this.indent(part);
-
- if (!this.current.nodes) this.current.nodes = [];
- this.current.push(node);
-
- node.raws.before = part.before + part.indent;
- if (this.extraIndent) {
- node.raws.extraIndent = this.extraIndent;
- this.extraIndent = false;
- }
- node.source = {
- start: { line: part.tokens[0][2], column: part.tokens[0][3] },
- input: this.input
- };
- };
-
- Parser.prototype.checkCurly = function checkCurly(tokens) {
- for (var _iterator = tokens, _isArray = Array.isArray(_iterator), _i3 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i3 >= _iterator.length) break;
- _ref = _iterator[_i3++];
- } else {
- _i3 = _iterator.next();
- if (_i3.done) break;
- _ref = _i3.value;
- }
-
- var token = _ref;
-
- if (token[0] === '{') {
- this.error('Unnecessary curly bracket', token[2], token[3]);
- }
- }
- };
-
- Parser.prototype.checkSemicolon = function checkSemicolon(tokens) {
- for (var _iterator2 = tokens, _isArray2 = Array.isArray(_iterator2), _i4 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
- var _ref2;
-
- if (_isArray2) {
- if (_i4 >= _iterator2.length) break;
- _ref2 = _iterator2[_i4++];
- } else {
- _i4 = _iterator2.next();
- if (_i4.done) break;
- _ref2 = _i4.value;
- }
-
- var token = _ref2;
-
- if (token[0] === ';') {
- this.error('Unnecessary semicolon', token[2], token[3]);
- }
- }
- };
-
- Parser.prototype.keepTrailingSpace = function keepTrailingSpace(node, tokens) {
- var lastSpace = tokens[tokens.length - 1];
- if (lastSpace && lastSpace[0] === 'space') {
- tokens.pop();
- node.raws.sssBetween = lastSpace[1];
- }
- };
-
- Parser.prototype.firstSpaces = function firstSpaces(tokens) {
- var result = '';
- for (var i = 0; i < tokens.length; i++) {
- if (tokens[i][0] === 'space' || tokens[i][0] === 'newline') {
- result += tokens.shift()[1];
- i -= 1;
- } else {
- break;
- }
- }
- return result;
- };
-
- Parser.prototype.raw = function raw(node, prop, tokens, altLast) {
- var token = void 0,
- type = void 0;
- var length = tokens.length;
- var value = '';
- var clean = true;
- for (var i = 0; i < length; i += 1) {
- token = tokens[i];
- type = token[0];
- if (type === 'comment' || type === 'space' && i === length - 1) {
- clean = false;
- } else {
- value += token[1];
- }
- }
- if (!clean) {
- var sss = tokens.reduce(function (all, i) {
- return all + i[1];
- }, '');
- var raw = tokens.reduce(function (all, i) {
- if (i[0] === 'comment' && i[6] === 'inline') {
- return all + '/* ' + i[1].slice(2).trim() + ' */';
- } else {
- return all + i[1];
- }
- }, '');
- node.raws[prop] = { value: value, raw: raw };
- if (sss !== raw) node.raws[prop].sss = sss;
- }
- node[prop] = value;
-
- var last = void 0;
- for (var _i5 = tokens.length - 1; _i5 >= 0; _i5--) {
- if (tokens[_i5].length > 2) {
- last = tokens[_i5];
- break;
- }
- }
- if (!last) last = altLast;
-
- node.source.end = {
- line: last[4] || last[2],
- column: last[5] || last[3]
- };
- };
-
- Parser.prototype.nextNonComment = function nextNonComment(pos) {
- var next = pos;
- var part = void 0;
- while (next < this.parts.length) {
- next += 1;
- part = this.parts[next];
- if (part.end || !part.comment) break;
- }
- return part;
- };
-
- Parser.prototype.commentText = function commentText(node, token) {
- var text = token[1];
- if (token[6] === 'inline') {
- node.raws.inline = true;
- text = text.slice(2);
- } else {
- text = text.slice(2, -2);
- }
-
- var match = text.match(/^(\s*)([^]*[^\s])(\s*)\n?$/);
- if (match) {
- node.text = match[2];
- node.raws.left = match[1];
- node.raws.inlineRight = match[3];
- } else {
- node.text = '';
- node.raws.left = '';
- node.raws.inlineRight = '';
- }
- };
-
- // Errors
-
- Parser.prototype.error = function error(msg, line, column) {
- throw this.input.error(msg, line, column);
- };
-
- Parser.prototype.unnamedAtrule = function unnamedAtrule(token) {
- this.error('At-rule without name', token[2], token[3]);
- };
-
- Parser.prototype.unnamedDecl = function unnamedDecl(token) {
- this.error('Declaration without name', token[2], token[3]);
- };
-
- Parser.prototype.indentedFirstLine = function indentedFirstLine(part) {
- this.error('First line should not have indent', part.number, 1);
- };
-
- Parser.prototype.wrongIndent = function wrongIndent(expected, real, part) {
- var msg = 'Expected ' + expected + ' indent, but get ' + real;
- this.error(msg, part.number, 1);
- };
-
- Parser.prototype.badProp = function badProp(token) {
- this.error('Unexpected separator in property', token[2], token[3]);
- };
-
- return Parser;
-}();
-
-exports.default = Parser;
-module.exports = exports['default'];
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci5lczYiXSwibmFtZXMiOlsiUGFyc2VyIiwiaW5wdXQiLCJwb3MiLCJyb290IiwiUm9vdCIsImN1cnJlbnQiLCJzcGFjZXMiLCJleHRyYUluZGVudCIsInByZXZJbmRlbnQiLCJ1bmRlZmluZWQiLCJzdGVwIiwic291cmNlIiwic3RhcnQiLCJsaW5lIiwiY29sdW1uIiwibG9vcCIsInBhcnQiLCJwYXJ0cyIsImxlbmd0aCIsImNvbW1lbnQiLCJhdHJ1bGUiLCJjb2xvbiIsIm5leHQiLCJuZXh0Tm9uQ29tbWVudCIsImVuZCIsImRlY2wiLCJtb3JlSW5kZW50IiwiaW5kZW50IiwicnVsZSIsInJhd3MiLCJhZnRlciIsImJlZm9yZSIsImkiLCJ0b2tlbnMiLCJsYXN0IiwidG9rZW4iLCJub2RlIiwiQ29tbWVudCIsImluaXQiLCJjb21tZW50VGV4dCIsImF0d29yZCIsInBhcmFtcyIsInNsaWNlIiwiQXRSdWxlIiwibmFtZSIsInVubmFtZWRBdHJ1bGUiLCJsYXN0Q29tbWEiLCJwdXNoIiwiY29uY2F0IiwiYWZ0ZXJOYW1lIiwiZmlyc3RTcGFjZXMiLCJrZWVwVHJhaWxpbmdTcGFjZSIsImNoZWNrU2VtaWNvbG9uIiwiY2hlY2tDdXJseSIsInJhdyIsIkRlY2xhcmF0aW9uIiwiYmV0d2VlbiIsInZhbHVlIiwicHJvcCIsImJhZFByb3AiLCJ1bm5hbWVkRGVjbCIsInBvcCIsInByZXYiLCJ0IiwiaW1wb3J0YW50Iiwic3BsaWNlIiwiUnVsZSIsInNlbGVjdG9yIiwiaXNQcmV2IiwiaW5kZW50ZWRGaXJzdExpbmUiLCJkaWZmIiwid3JvbmdJbmRlbnQiLCJtIiwicGFyZW50Iiwibm9kZXMiLCJlcnJvciIsImxhc3RTcGFjZSIsInNzc0JldHdlZW4iLCJyZXN1bHQiLCJzaGlmdCIsImFsdExhc3QiLCJ0eXBlIiwiY2xlYW4iLCJzc3MiLCJyZWR1Y2UiLCJhbGwiLCJ0cmltIiwidGV4dCIsImlubGluZSIsIm1hdGNoIiwibGVmdCIsImlubGluZVJpZ2h0IiwibXNnIiwibnVtYmVyIiwiZXhwZWN0ZWQiLCJyZWFsIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7SUFFcUJBLE07QUFDbkIsa0JBQWFDLEtBQWIsRUFBb0I7QUFBQTs7QUFDbEIsU0FBS0EsS0FBTCxHQUFhQSxLQUFiOztBQUVBLFNBQUtDLEdBQUwsR0FBVyxDQUFYO0FBQ0EsU0FBS0MsSUFBTCxHQUFZLElBQUlDLGNBQUosRUFBWjtBQUNBLFNBQUtDLE9BQUwsR0FBZSxLQUFLRixJQUFwQjtBQUNBLFNBQUtHLE1BQUwsR0FBYyxFQUFkOztBQUVBLFNBQUtDLFdBQUwsR0FBbUIsS0FBbkI7QUFDQSxTQUFLQyxVQUFMLEdBQWtCQyxTQUFsQjtBQUNBLFNBQUtDLElBQUwsR0FBWUQsU0FBWjs7QUFFQSxTQUFLTixJQUFMLENBQVVRLE1BQVYsR0FBbUIsRUFBRVYsWUFBRixFQUFTVyxPQUFPLEVBQUVDLE1BQU0sQ0FBUixFQUFXQyxRQUFRLENBQW5CLEVBQWhCLEVBQW5CO0FBQ0Q7O21CQUVEQyxJLG1CQUFRO0FBQ04sUUFBSUMsYUFBSjtBQUNBLFdBQU8sS0FBS2QsR0FBTCxHQUFXLEtBQUtlLEtBQUwsQ0FBV0MsTUFBN0IsRUFBcUM7QUFDbkNGLGFBQU8sS0FBS0MsS0FBTCxDQUFXLEtBQUtmLEdBQWhCLENBQVA7O0FBRUEsVUFBSWMsS0FBS0csT0FBVCxFQUFrQjtBQUNoQixhQUFLQSxPQUFMLENBQWFILElBQWI7QUFDRCxPQUZELE1BRU8sSUFBSUEsS0FBS0ksTUFBVCxFQUFpQjtBQUN0QixhQUFLQSxNQUFMLENBQVlKLElBQVo7QUFDRCxPQUZNLE1BRUEsSUFBSUEsS0FBS0ssS0FBVCxFQUFnQjtBQUNyQixZQUFJQyxPQUFPLEtBQUtDLGNBQUwsQ0FBb0IsS0FBS3JCLEdBQXpCLENBQVg7O0FBRUEsWUFBSW9CLEtBQUtFLEdBQUwsSUFBWUYsS0FBS0YsTUFBckIsRUFBNkI7QUFDM0IsZUFBS0ssSUFBTCxDQUFVVCxJQUFWO0FBQ0QsU0FGRCxNQUVPO0FBQ0wsY0FBSVUsYUFBYUosS0FBS0ssTUFBTCxDQUFZVCxNQUFaLEdBQXFCRixLQUFLVyxNQUFMLENBQVlULE1BQWxEO0FBQ0EsY0FBSSxDQUFDUSxVQUFMLEVBQWlCO0FBQ2YsaUJBQUtELElBQUwsQ0FBVVQsSUFBVjtBQUNELFdBRkQsTUFFTyxJQUFJVSxjQUFjSixLQUFLRCxLQUF2QixFQUE4QjtBQUNuQyxpQkFBS08sSUFBTCxDQUFVWixJQUFWO0FBQ0QsV0FGTSxNQUVBLElBQUlVLGNBQWMsQ0FBQ0osS0FBS0QsS0FBeEIsRUFBK0I7QUFDcEMsaUJBQUtJLElBQUwsQ0FBVVQsSUFBVjtBQUNEO0FBQ0Y7QUFDRixPQWZNLE1BZUEsSUFBSUEsS0FBS1EsR0FBVCxFQUFjO0FBQ25CLGFBQUtyQixJQUFMLENBQVUwQixJQUFWLENBQWVDLEtBQWYsR0FBdUJkLEtBQUtlLE1BQTVCO0FBQ0QsT0FGTSxNQUVBO0FBQ0wsYUFBS0gsSUFBTCxDQUFVWixJQUFWO0FBQ0Q7O0FBRUQsV0FBS2QsR0FBTCxJQUFZLENBQVo7QUFDRDs7QUFFRCxTQUFLLElBQUk4QixJQUFJLEtBQUtDLE1BQUwsQ0FBWWYsTUFBWixHQUFxQixDQUFsQyxFQUFxQ2MsS0FBSyxDQUExQyxFQUE2Q0EsR0FBN0MsRUFBa0Q7QUFDaEQsVUFBSSxLQUFLQyxNQUFMLENBQVlELENBQVosRUFBZWQsTUFBZixHQUF3QixDQUE1QixFQUErQjtBQUM3QixZQUFJZ0IsT0FBTyxLQUFLRCxNQUFMLENBQVlELENBQVosQ0FBWDtBQUNBLGFBQUs3QixJQUFMLENBQVVRLE1BQVYsQ0FBaUJhLEdBQWpCLEdBQXVCO0FBQ3JCWCxnQkFBTXFCLEtBQUssQ0FBTCxLQUFXQSxLQUFLLENBQUwsQ0FESTtBQUVyQnBCLGtCQUFRb0IsS0FBSyxDQUFMLEtBQVdBLEtBQUssQ0FBTDtBQUZFLFNBQXZCO0FBSUE7QUFDRDtBQUNGO0FBQ0YsRzs7bUJBRURmLE8sb0JBQVNILEksRUFBTTtBQUNiLFFBQUltQixRQUFRbkIsS0FBS2lCLE1BQUwsQ0FBWSxDQUFaLENBQVo7QUFDQSxRQUFJRyxPQUFPLElBQUlDLGlCQUFKLEVBQVg7QUFDQSxTQUFLQyxJQUFMLENBQVVGLElBQVYsRUFBZ0JwQixJQUFoQjtBQUNBb0IsU0FBS3pCLE1BQUwsQ0FBWWEsR0FBWixHQUFrQixFQUFFWCxNQUFNc0IsTUFBTSxDQUFOLENBQVIsRUFBa0JyQixRQUFRcUIsTUFBTSxDQUFOLENBQTFCLEVBQWxCO0FBQ0EsU0FBS0ksV0FBTCxDQUFpQkgsSUFBakIsRUFBdUJELEtBQXZCO0FBQ0QsRzs7bUJBRURmLE0sbUJBQVFKLEksRUFBTTtBQUNaLFFBQUl3QixTQUFTeEIsS0FBS2lCLE1BQUwsQ0FBWSxDQUFaLENBQWI7QUFDQSxRQUFJUSxTQUFTekIsS0FBS2lCLE1BQUwsQ0FBWVMsS0FBWixDQUFrQixDQUFsQixDQUFiOztBQUVBLFFBQUlOLE9BQU8sSUFBSU8sZ0JBQUosRUFBWDtBQUNBUCxTQUFLUSxJQUFMLEdBQVlKLE9BQU8sQ0FBUCxFQUFVRSxLQUFWLENBQWdCLENBQWhCLENBQVo7QUFDQSxTQUFLSixJQUFMLENBQVVGLElBQVYsRUFBZ0JwQixJQUFoQjs7QUFFQSxRQUFJb0IsS0FBS1EsSUFBTCxLQUFjLEVBQWxCLEVBQXNCLEtBQUtDLGFBQUwsQ0FBbUJMLE1BQW5COztBQUV0QixXQUFPLENBQUN4QixLQUFLUSxHQUFOLElBQWFSLEtBQUs4QixTQUF6QixFQUFvQztBQUNsQyxXQUFLNUMsR0FBTCxJQUFZLENBQVo7QUFDQWMsYUFBTyxLQUFLQyxLQUFMLENBQVcsS0FBS2YsR0FBaEIsQ0FBUDtBQUNBdUMsYUFBT00sSUFBUCxDQUFZLENBQUMsT0FBRCxFQUFVL0IsS0FBS2UsTUFBTCxHQUFjZixLQUFLVyxNQUE3QixDQUFaO0FBQ0FjLGVBQVNBLE9BQU9PLE1BQVAsQ0FBY2hDLEtBQUtpQixNQUFuQixDQUFUO0FBQ0Q7O0FBRURHLFNBQUtQLElBQUwsQ0FBVW9CLFNBQVYsR0FBc0IsS0FBS0MsV0FBTCxDQUFpQlQsTUFBakIsQ0FBdEI7QUFDQSxTQUFLVSxpQkFBTCxDQUF1QmYsSUFBdkIsRUFBNkJLLE1BQTdCO0FBQ0EsU0FBS1csY0FBTCxDQUFvQlgsTUFBcEI7QUFDQSxTQUFLWSxVQUFMLENBQWdCWixNQUFoQjtBQUNBLFNBQUthLEdBQUwsQ0FBU2xCLElBQVQsRUFBZSxRQUFmLEVBQXlCSyxNQUF6QixFQUFpQ0QsTUFBakM7QUFDRCxHOzttQkFFRGYsSSxpQkFBTVQsSSxFQUFNO0FBQ1YsUUFBSW9CLE9BQU8sSUFBSW1CLHFCQUFKLEVBQVg7QUFDQSxTQUFLakIsSUFBTCxDQUFVRixJQUFWLEVBQWdCcEIsSUFBaEI7O0FBRUEsUUFBSXdDLFVBQVUsRUFBZDtBQUNBLFFBQUluQyxRQUFRLENBQVo7QUFDQSxRQUFJb0MsUUFBUSxFQUFaO0FBQ0EsUUFBSUMsT0FBTyxFQUFYO0FBQ0EsU0FBSyxJQUFJMUIsSUFBSSxDQUFiLEVBQWdCQSxJQUFJaEIsS0FBS2lCLE1BQUwsQ0FBWWYsTUFBaEMsRUFBd0NjLEdBQXhDLEVBQTZDO0FBQzNDLFVBQUlHLFFBQVFuQixLQUFLaUIsTUFBTCxDQUFZRCxDQUFaLENBQVo7QUFDQSxVQUFJRyxNQUFNLENBQU4sTUFBYSxHQUFqQixFQUFzQjtBQUNwQnFCLG1CQUFXckIsTUFBTSxDQUFOLENBQVg7QUFDQWQsZ0JBQVFjLEtBQVI7QUFDQXNCLGdCQUFRekMsS0FBS2lCLE1BQUwsQ0FBWVMsS0FBWixDQUFrQlYsSUFBSSxDQUF0QixDQUFSO0FBQ0E7QUFDRCxPQUxELE1BS08sSUFBSUcsTUFBTSxDQUFOLE1BQWEsU0FBYixJQUEwQkEsTUFBTSxDQUFOLE1BQWEsT0FBM0MsRUFBb0Q7QUFDekRxQixtQkFBV3JCLE1BQU0sQ0FBTixDQUFYO0FBQ0QsT0FGTSxNQUVBLElBQUlxQixZQUFZLEVBQWhCLEVBQW9CO0FBQ3pCLGFBQUtHLE9BQUwsQ0FBYXhCLEtBQWI7QUFDRCxPQUZNLE1BRUE7QUFDTHVCLGdCQUFRdkIsTUFBTSxDQUFOLENBQVI7QUFDRDtBQUNGOztBQUVELFFBQUl1QixTQUFTLEVBQWIsRUFBaUIsS0FBS0UsV0FBTCxDQUFpQjVDLEtBQUtpQixNQUFMLENBQVksQ0FBWixDQUFqQjtBQUNqQkcsU0FBS3NCLElBQUwsR0FBWUEsSUFBWjs7QUFFQSxRQUFJcEMsT0FBTyxLQUFLTCxLQUFMLENBQVcsS0FBS2YsR0FBTCxHQUFXLENBQXRCLENBQVg7O0FBRUEsV0FBTyxDQUFDb0IsS0FBS0UsR0FBTixJQUFhLENBQUNGLEtBQUtGLE1BQW5CLElBQTZCLENBQUNFLEtBQUtELEtBQW5DLElBQ0tDLEtBQUtLLE1BQUwsQ0FBWVQsTUFBWixHQUFxQkYsS0FBS1csTUFBTCxDQUFZVCxNQUQ3QyxFQUNxRDtBQUNuRHVDLFlBQU1WLElBQU4sQ0FBVyxDQUFDLE9BQUQsRUFBVXpCLEtBQUtTLE1BQUwsR0FBY1QsS0FBS0ssTUFBN0IsQ0FBWDtBQUNBOEIsY0FBUUEsTUFBTVQsTUFBTixDQUFhMUIsS0FBS1csTUFBbEIsQ0FBUjtBQUNBLFdBQUsvQixHQUFMLElBQVksQ0FBWjtBQUNBb0IsYUFBTyxLQUFLTCxLQUFMLENBQVcsS0FBS2YsR0FBTCxHQUFXLENBQXRCLENBQVA7QUFDRDs7QUFFRCxRQUFJZ0MsT0FBT3VCLE1BQU1BLE1BQU12QyxNQUFOLEdBQWUsQ0FBckIsQ0FBWDtBQUNBLFFBQUlnQixRQUFRQSxLQUFLLENBQUwsTUFBWSxTQUF4QixFQUFtQztBQUNqQ3VCLFlBQU1JLEdBQU47QUFDQSxVQUFJMUMsVUFBVSxJQUFJa0IsaUJBQUosRUFBZDtBQUNBLFdBQUtoQyxPQUFMLENBQWEwQyxJQUFiLENBQWtCNUIsT0FBbEI7QUFDQUEsY0FBUVIsTUFBUixHQUFpQjtBQUNmVixlQUFPLEtBQUtBLEtBREc7QUFFZlcsZUFBTyxFQUFFQyxNQUFNcUIsS0FBSyxDQUFMLENBQVIsRUFBaUJwQixRQUFRb0IsS0FBSyxDQUFMLENBQXpCLEVBRlE7QUFHZlYsYUFBSyxFQUFFWCxNQUFNcUIsS0FBSyxDQUFMLENBQVIsRUFBaUJwQixRQUFRb0IsS0FBSyxDQUFMLENBQXpCO0FBSFUsT0FBakI7QUFLQSxVQUFJNEIsT0FBT0wsTUFBTUEsTUFBTXZDLE1BQU4sR0FBZSxDQUFyQixDQUFYO0FBQ0EsVUFBSTRDLFFBQVFBLEtBQUssQ0FBTCxNQUFZLE9BQXhCLEVBQWlDO0FBQy9CTCxjQUFNSSxHQUFOO0FBQ0ExQyxnQkFBUVUsSUFBUixDQUFhRSxNQUFiLEdBQXNCK0IsS0FBSyxDQUFMLENBQXRCO0FBQ0Q7QUFDRCxXQUFLdkIsV0FBTCxDQUFpQnBCLE9BQWpCLEVBQTBCZSxJQUExQjtBQUNEOztBQUVELFNBQUssSUFBSUYsS0FBSXlCLE1BQU12QyxNQUFOLEdBQWUsQ0FBNUIsRUFBK0JjLEtBQUksQ0FBbkMsRUFBc0NBLElBQXRDLEVBQTJDO0FBQ3pDLFVBQUkrQixJQUFJTixNQUFNekIsRUFBTixFQUFTLENBQVQsQ0FBUjtBQUNBLFVBQUkrQixNQUFNLE1BQU4sSUFBZ0JOLE1BQU16QixFQUFOLEVBQVMsQ0FBVCxNQUFnQixZQUFwQyxFQUFrRDtBQUNoREksYUFBSzRCLFNBQUwsR0FBaUIsSUFBakI7QUFDQSxZQUFJaEMsS0FBSSxDQUFKLElBQVN5QixNQUFNekIsS0FBSSxDQUFWLEVBQWEsQ0FBYixNQUFvQixPQUFqQyxFQUEwQztBQUN4Q0ksZUFBS1AsSUFBTCxDQUFVbUMsU0FBVixHQUFzQlAsTUFBTXpCLEtBQUksQ0FBVixFQUFhLENBQWIsSUFBa0IsWUFBeEM7QUFDQXlCLGdCQUFNUSxNQUFOLENBQWFqQyxLQUFJLENBQWpCLEVBQW9CLENBQXBCO0FBQ0QsU0FIRCxNQUdPO0FBQ0xJLGVBQUtQLElBQUwsQ0FBVW1DLFNBQVYsR0FBc0IsWUFBdEI7QUFDQVAsZ0JBQU1RLE1BQU4sQ0FBYWpDLEVBQWIsRUFBZ0IsQ0FBaEI7QUFDRDtBQUNEO0FBQ0QsT0FWRCxNQVVPLElBQUkrQixNQUFNLE9BQU4sSUFBaUJBLE1BQU0sU0FBdkIsSUFBb0NBLE1BQU0sU0FBOUMsRUFBeUQ7QUFDOUQ7QUFDRDtBQUNGOztBQUVEM0IsU0FBS1AsSUFBTCxDQUFVMkIsT0FBVixHQUFvQkEsVUFBVSxLQUFLTixXQUFMLENBQWlCTyxLQUFqQixDQUE5QjtBQUNBLFNBQUtMLGNBQUwsQ0FBb0JLLEtBQXBCO0FBQ0EsU0FBS0gsR0FBTCxDQUFTbEIsSUFBVCxFQUFlLE9BQWYsRUFBd0JxQixLQUF4QixFQUErQnBDLEtBQS9CO0FBQ0QsRzs7bUJBRURPLEksaUJBQU1aLEksRUFBTTtBQUNWLFFBQUlvQixPQUFPLElBQUk4QixjQUFKLEVBQVg7QUFDQSxTQUFLNUIsSUFBTCxDQUFVRixJQUFWLEVBQWdCcEIsSUFBaEI7O0FBRUEsUUFBSW1ELFdBQVduRCxLQUFLaUIsTUFBcEI7QUFDQSxRQUFJWCxPQUFPLEtBQUtMLEtBQUwsQ0FBVyxLQUFLZixHQUFMLEdBQVcsQ0FBdEIsQ0FBWDs7QUFFQSxXQUFPLENBQUNvQixLQUFLRSxHQUFOLElBQWFGLEtBQUtLLE1BQUwsQ0FBWVQsTUFBWixLQUF1QkYsS0FBS1csTUFBTCxDQUFZVCxNQUF2RCxFQUErRDtBQUM3RGlELGVBQVNwQixJQUFULENBQWMsQ0FBQyxPQUFELEVBQVV6QixLQUFLUyxNQUFMLEdBQWNULEtBQUtLLE1BQTdCLENBQWQ7QUFDQXdDLGlCQUFXQSxTQUFTbkIsTUFBVCxDQUFnQjFCLEtBQUtXLE1BQXJCLENBQVg7QUFDQSxXQUFLL0IsR0FBTCxJQUFZLENBQVo7QUFDQW9CLGFBQU8sS0FBS0wsS0FBTCxDQUFXLEtBQUtmLEdBQUwsR0FBVyxDQUF0QixDQUFQO0FBQ0Q7O0FBRUQsU0FBS2lELGlCQUFMLENBQXVCZixJQUF2QixFQUE2QitCLFFBQTdCO0FBQ0EsU0FBS2QsVUFBTCxDQUFnQmMsUUFBaEI7QUFDQSxTQUFLYixHQUFMLENBQVNsQixJQUFULEVBQWUsVUFBZixFQUEyQitCLFFBQTNCO0FBQ0QsRzs7QUFFRDs7bUJBRUF4QyxNLG1CQUFRWCxJLEVBQU07QUFDWixRQUFJVyxTQUFTWCxLQUFLVyxNQUFMLENBQVlULE1BQXpCO0FBQ0EsUUFBSWtELFNBQVMsT0FBTyxLQUFLNUQsVUFBWixLQUEyQixXQUF4Qzs7QUFFQSxRQUFJLENBQUM0RCxNQUFELElBQVd6QyxNQUFmLEVBQXVCLEtBQUswQyxpQkFBTCxDQUF1QnJELElBQXZCOztBQUV2QixRQUFJLENBQUMsS0FBS04sSUFBTixJQUFjaUIsTUFBbEIsRUFBMEI7QUFDeEIsV0FBS2pCLElBQUwsR0FBWWlCLE1BQVo7QUFDQSxXQUFLeEIsSUFBTCxDQUFVMEIsSUFBVixDQUFlRixNQUFmLEdBQXdCWCxLQUFLVyxNQUE3QjtBQUNEOztBQUVELFFBQUl5QyxVQUFVLEtBQUs1RCxVQUFMLEtBQW9CbUIsTUFBbEMsRUFBMEM7QUFDeEMsVUFBSTJDLE9BQU8zQyxTQUFTLEtBQUtuQixVQUF6QjtBQUNBLFVBQUk4RCxPQUFPLENBQVgsRUFBYztBQUNaLFlBQUlBLFNBQVMsS0FBSzVELElBQWxCLEVBQXdCO0FBQ3RCLGVBQUs2RCxXQUFMLENBQWlCLEtBQUsvRCxVQUFMLEdBQWtCLEtBQUtFLElBQXhDLEVBQThDaUIsTUFBOUMsRUFBc0RYLElBQXREO0FBQ0QsU0FGRCxNQUVPLElBQUksS0FBS1gsT0FBTCxDQUFhNkIsSUFBYixDQUFrQmEsSUFBdEIsRUFBNEI7QUFDakMsZUFBSzFDLE9BQUwsR0FBZSxLQUFLQSxPQUFMLENBQWE2QixJQUE1QjtBQUNELFNBRk0sTUFFQTtBQUNMLGVBQUszQixXQUFMLEdBQW1CLEVBQW5CO0FBQ0EsZUFBSyxJQUFJeUIsSUFBSSxDQUFiLEVBQWdCQSxJQUFJc0MsSUFBcEIsRUFBMEJ0QyxHQUExQixFQUErQjtBQUM3QixpQkFBS3pCLFdBQUwsSUFBb0IsR0FBcEI7QUFDRDtBQUNGO0FBQ0YsT0FYRCxNQVdPLElBQUkrRCxPQUFPLEtBQUs1RCxJQUFaLEtBQXFCLENBQXpCLEVBQTRCO0FBQ2pDLFlBQUk4RCxJQUFJN0MsU0FBUzJDLE9BQU8sS0FBSzVELElBQTdCO0FBQ0EsYUFBSzZELFdBQUwsQ0FBcUJDLENBQXJCLGFBQStCQSxJQUFJLEtBQUs5RCxJQUF4QyxHQUFpRGlCLE1BQWpELEVBQXlEWCxJQUF6RDtBQUNELE9BSE0sTUFHQTtBQUNMLGFBQUssSUFBSWdCLE1BQUksQ0FBYixFQUFnQkEsTUFBSSxDQUFDc0MsSUFBRCxHQUFRLEtBQUs1RCxJQUFqQyxFQUF1Q3NCLEtBQXZDLEVBQTRDO0FBQzFDLGVBQUszQixPQUFMLEdBQWUsS0FBS0EsT0FBTCxDQUFhb0UsTUFBNUI7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsU0FBS2pFLFVBQUwsR0FBa0JtQixNQUFsQjtBQUNELEc7O21CQUVEVyxJLGlCQUFNRixJLEVBQU1wQixJLEVBQU07QUFDaEIsU0FBS1csTUFBTCxDQUFZWCxJQUFaOztBQUVBLFFBQUksQ0FBQyxLQUFLWCxPQUFMLENBQWFxRSxLQUFsQixFQUF5QixLQUFLckUsT0FBTCxDQUFhcUUsS0FBYixHQUFxQixFQUFyQjtBQUN6QixTQUFLckUsT0FBTCxDQUFhMEMsSUFBYixDQUFrQlgsSUFBbEI7O0FBRUFBLFNBQUtQLElBQUwsQ0FBVUUsTUFBVixHQUFtQmYsS0FBS2UsTUFBTCxHQUFjZixLQUFLVyxNQUF0QztBQUNBLFFBQUksS0FBS3BCLFdBQVQsRUFBc0I7QUFDcEI2QixXQUFLUCxJQUFMLENBQVV0QixXQUFWLEdBQXdCLEtBQUtBLFdBQTdCO0FBQ0EsV0FBS0EsV0FBTCxHQUFtQixLQUFuQjtBQUNEO0FBQ0Q2QixTQUFLekIsTUFBTCxHQUFjO0FBQ1pDLGFBQU8sRUFBRUMsTUFBTUcsS0FBS2lCLE1BQUwsQ0FBWSxDQUFaLEVBQWUsQ0FBZixDQUFSLEVBQTJCbkIsUUFBUUUsS0FBS2lCLE1BQUwsQ0FBWSxDQUFaLEVBQWUsQ0FBZixDQUFuQyxFQURLO0FBRVpoQyxhQUFPLEtBQUtBO0FBRkEsS0FBZDtBQUlELEc7O21CQUVEb0QsVSx1QkFBWXBCLE0sRUFBUTtBQUNsQix5QkFBa0JBLE1BQWxCLG1IQUEwQjtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUEsVUFBakJFLEtBQWlCOztBQUN4QixVQUFJQSxNQUFNLENBQU4sTUFBYSxHQUFqQixFQUFzQjtBQUNwQixhQUFLd0MsS0FBTCxDQUFXLDJCQUFYLEVBQXdDeEMsTUFBTSxDQUFOLENBQXhDLEVBQWtEQSxNQUFNLENBQU4sQ0FBbEQ7QUFDRDtBQUNGO0FBQ0YsRzs7bUJBRURpQixjLDJCQUFnQm5CLE0sRUFBUTtBQUN0QiwwQkFBa0JBLE1BQWxCLHlIQUEwQjtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUEsVUFBakJFLEtBQWlCOztBQUN4QixVQUFJQSxNQUFNLENBQU4sTUFBYSxHQUFqQixFQUFzQjtBQUNwQixhQUFLd0MsS0FBTCxDQUFXLHVCQUFYLEVBQW9DeEMsTUFBTSxDQUFOLENBQXBDLEVBQThDQSxNQUFNLENBQU4sQ0FBOUM7QUFDRDtBQUNGO0FBQ0YsRzs7bUJBRURnQixpQiw4QkFBbUJmLEksRUFBTUgsTSxFQUFRO0FBQy9CLFFBQUkyQyxZQUFZM0MsT0FBT0EsT0FBT2YsTUFBUCxHQUFnQixDQUF2QixDQUFoQjtBQUNBLFFBQUkwRCxhQUFhQSxVQUFVLENBQVYsTUFBaUIsT0FBbEMsRUFBMkM7QUFDekMzQyxhQUFPNEIsR0FBUDtBQUNBekIsV0FBS1AsSUFBTCxDQUFVZ0QsVUFBVixHQUF1QkQsVUFBVSxDQUFWLENBQXZCO0FBQ0Q7QUFDRixHOzttQkFFRDFCLFcsd0JBQWFqQixNLEVBQVE7QUFDbkIsUUFBSTZDLFNBQVMsRUFBYjtBQUNBLFNBQUssSUFBSTlDLElBQUksQ0FBYixFQUFnQkEsSUFBSUMsT0FBT2YsTUFBM0IsRUFBbUNjLEdBQW5DLEVBQXdDO0FBQ3RDLFVBQUlDLE9BQU9ELENBQVAsRUFBVSxDQUFWLE1BQWlCLE9BQWpCLElBQTRCQyxPQUFPRCxDQUFQLEVBQVUsQ0FBVixNQUFpQixTQUFqRCxFQUE0RDtBQUMxRDhDLGtCQUFVN0MsT0FBTzhDLEtBQVAsR0FBZSxDQUFmLENBQVY7QUFDQS9DLGFBQUssQ0FBTDtBQUNELE9BSEQsTUFHTztBQUNMO0FBQ0Q7QUFDRjtBQUNELFdBQU84QyxNQUFQO0FBQ0QsRzs7bUJBRUR4QixHLGdCQUFLbEIsSSxFQUFNc0IsSSxFQUFNekIsTSxFQUFRK0MsTyxFQUFTO0FBQ2hDLFFBQUk3QyxjQUFKO0FBQUEsUUFBVzhDLGFBQVg7QUFDQSxRQUFJL0QsU0FBU2UsT0FBT2YsTUFBcEI7QUFDQSxRQUFJdUMsUUFBUSxFQUFaO0FBQ0EsUUFBSXlCLFFBQVEsSUFBWjtBQUNBLFNBQUssSUFBSWxELElBQUksQ0FBYixFQUFnQkEsSUFBSWQsTUFBcEIsRUFBNEJjLEtBQUssQ0FBakMsRUFBb0M7QUFDbENHLGNBQVFGLE9BQU9ELENBQVAsQ0FBUjtBQUNBaUQsYUFBTzlDLE1BQU0sQ0FBTixDQUFQO0FBQ0EsVUFBSThDLFNBQVMsU0FBVCxJQUF1QkEsU0FBUyxPQUFULElBQW9CakQsTUFBTWQsU0FBUyxDQUE5RCxFQUFrRTtBQUNoRWdFLGdCQUFRLEtBQVI7QUFDRCxPQUZELE1BRU87QUFDTHpCLGlCQUFTdEIsTUFBTSxDQUFOLENBQVQ7QUFDRDtBQUNGO0FBQ0QsUUFBSSxDQUFDK0MsS0FBTCxFQUFZO0FBQ1YsVUFBSUMsTUFBTWxELE9BQU9tRCxNQUFQLENBQWMsVUFBQ0MsR0FBRCxFQUFNckQsQ0FBTjtBQUFBLGVBQVlxRCxNQUFNckQsRUFBRSxDQUFGLENBQWxCO0FBQUEsT0FBZCxFQUFzQyxFQUF0QyxDQUFWO0FBQ0EsVUFBSXNCLE1BQU1yQixPQUFPbUQsTUFBUCxDQUFjLFVBQUNDLEdBQUQsRUFBTXJELENBQU4sRUFBWTtBQUNsQyxZQUFJQSxFQUFFLENBQUYsTUFBUyxTQUFULElBQXNCQSxFQUFFLENBQUYsTUFBUyxRQUFuQyxFQUE2QztBQUMzQyxpQkFBT3FELE1BQU0sS0FBTixHQUFjckQsRUFBRSxDQUFGLEVBQUtVLEtBQUwsQ0FBVyxDQUFYLEVBQWM0QyxJQUFkLEVBQWQsR0FBcUMsS0FBNUM7QUFDRCxTQUZELE1BRU87QUFDTCxpQkFBT0QsTUFBTXJELEVBQUUsQ0FBRixDQUFiO0FBQ0Q7QUFDRixPQU5TLEVBTVAsRUFOTyxDQUFWO0FBT0FJLFdBQUtQLElBQUwsQ0FBVTZCLElBQVYsSUFBa0IsRUFBRUQsWUFBRixFQUFTSCxRQUFULEVBQWxCO0FBQ0EsVUFBSTZCLFFBQVE3QixHQUFaLEVBQWlCbEIsS0FBS1AsSUFBTCxDQUFVNkIsSUFBVixFQUFnQnlCLEdBQWhCLEdBQXNCQSxHQUF0QjtBQUNsQjtBQUNEL0MsU0FBS3NCLElBQUwsSUFBYUQsS0FBYjs7QUFFQSxRQUFJdkIsYUFBSjtBQUNBLFNBQUssSUFBSUYsTUFBSUMsT0FBT2YsTUFBUCxHQUFnQixDQUE3QixFQUFnQ2MsT0FBSyxDQUFyQyxFQUF3Q0EsS0FBeEMsRUFBNkM7QUFDM0MsVUFBSUMsT0FBT0QsR0FBUCxFQUFVZCxNQUFWLEdBQW1CLENBQXZCLEVBQTBCO0FBQ3hCZ0IsZUFBT0QsT0FBT0QsR0FBUCxDQUFQO0FBQ0E7QUFDRDtBQUNGO0FBQ0QsUUFBSSxDQUFDRSxJQUFMLEVBQVdBLE9BQU84QyxPQUFQOztBQUVYNUMsU0FBS3pCLE1BQUwsQ0FBWWEsR0FBWixHQUFrQjtBQUNoQlgsWUFBTXFCLEtBQUssQ0FBTCxLQUFXQSxLQUFLLENBQUwsQ0FERDtBQUVoQnBCLGNBQVFvQixLQUFLLENBQUwsS0FBV0EsS0FBSyxDQUFMO0FBRkgsS0FBbEI7QUFJRCxHOzttQkFFRFgsYywyQkFBZ0JyQixHLEVBQUs7QUFDbkIsUUFBSW9CLE9BQU9wQixHQUFYO0FBQ0EsUUFBSWMsYUFBSjtBQUNBLFdBQU9NLE9BQU8sS0FBS0wsS0FBTCxDQUFXQyxNQUF6QixFQUFpQztBQUMvQkksY0FBUSxDQUFSO0FBQ0FOLGFBQU8sS0FBS0MsS0FBTCxDQUFXSyxJQUFYLENBQVA7QUFDQSxVQUFJTixLQUFLUSxHQUFMLElBQVksQ0FBQ1IsS0FBS0csT0FBdEIsRUFBK0I7QUFDaEM7QUFDRCxXQUFPSCxJQUFQO0FBQ0QsRzs7bUJBRUR1QixXLHdCQUFhSCxJLEVBQU1ELEssRUFBTztBQUN4QixRQUFJb0QsT0FBT3BELE1BQU0sQ0FBTixDQUFYO0FBQ0EsUUFBSUEsTUFBTSxDQUFOLE1BQWEsUUFBakIsRUFBMkI7QUFDekJDLFdBQUtQLElBQUwsQ0FBVTJELE1BQVYsR0FBbUIsSUFBbkI7QUFDQUQsYUFBT0EsS0FBSzdDLEtBQUwsQ0FBVyxDQUFYLENBQVA7QUFDRCxLQUhELE1BR087QUFDTDZDLGFBQU9BLEtBQUs3QyxLQUFMLENBQVcsQ0FBWCxFQUFjLENBQUMsQ0FBZixDQUFQO0FBQ0Q7O0FBRUQsUUFBSStDLFFBQVFGLEtBQUtFLEtBQUwsQ0FBVyw0QkFBWCxDQUFaO0FBQ0EsUUFBSUEsS0FBSixFQUFXO0FBQ1RyRCxXQUFLbUQsSUFBTCxHQUFZRSxNQUFNLENBQU4sQ0FBWjtBQUNBckQsV0FBS1AsSUFBTCxDQUFVNkQsSUFBVixHQUFpQkQsTUFBTSxDQUFOLENBQWpCO0FBQ0FyRCxXQUFLUCxJQUFMLENBQVU4RCxXQUFWLEdBQXdCRixNQUFNLENBQU4sQ0FBeEI7QUFDRCxLQUpELE1BSU87QUFDTHJELFdBQUttRCxJQUFMLEdBQVksRUFBWjtBQUNBbkQsV0FBS1AsSUFBTCxDQUFVNkQsSUFBVixHQUFpQixFQUFqQjtBQUNBdEQsV0FBS1AsSUFBTCxDQUFVOEQsV0FBVixHQUF3QixFQUF4QjtBQUNEO0FBQ0YsRzs7QUFFRDs7bUJBRUFoQixLLGtCQUFPaUIsRyxFQUFLL0UsSSxFQUFNQyxNLEVBQVE7QUFDeEIsVUFBTSxLQUFLYixLQUFMLENBQVcwRSxLQUFYLENBQWlCaUIsR0FBakIsRUFBc0IvRSxJQUF0QixFQUE0QkMsTUFBNUIsQ0FBTjtBQUNELEc7O21CQUVEK0IsYSwwQkFBZVYsSyxFQUFPO0FBQ3BCLFNBQUt3QyxLQUFMLENBQVcsc0JBQVgsRUFBbUN4QyxNQUFNLENBQU4sQ0FBbkMsRUFBNkNBLE1BQU0sQ0FBTixDQUE3QztBQUNELEc7O21CQUVEeUIsVyx3QkFBYXpCLEssRUFBTztBQUNsQixTQUFLd0MsS0FBTCxDQUFXLDBCQUFYLEVBQXVDeEMsTUFBTSxDQUFOLENBQXZDLEVBQWlEQSxNQUFNLENBQU4sQ0FBakQ7QUFDRCxHOzttQkFFRGtDLGlCLDhCQUFtQnJELEksRUFBTTtBQUN2QixTQUFLMkQsS0FBTCxDQUFXLG1DQUFYLEVBQWdEM0QsS0FBSzZFLE1BQXJELEVBQTZELENBQTdEO0FBQ0QsRzs7bUJBRUR0QixXLHdCQUFhdUIsUSxFQUFVQyxJLEVBQU0vRSxJLEVBQU07QUFDakMsUUFBSTRFLG9CQUFtQkUsUUFBbkIseUJBQWlEQyxJQUFyRDtBQUNBLFNBQUtwQixLQUFMLENBQVdpQixHQUFYLEVBQWdCNUUsS0FBSzZFLE1BQXJCLEVBQTZCLENBQTdCO0FBQ0QsRzs7bUJBRURsQyxPLG9CQUFTeEIsSyxFQUFPO0FBQ2QsU0FBS3dDLEtBQUwsQ0FBVyxrQ0FBWCxFQUErQ3hDLE1BQU0sQ0FBTixDQUEvQyxFQUF5REEsTUFBTSxDQUFOLENBQXpEO0FBQ0QsRzs7Ozs7a0JBOVhrQm5DLE0iLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gJ3Bvc3Rjc3MvbGliL2RlY2xhcmF0aW9uJ1xuaW1wb3J0IENvbW1lbnQgZnJvbSAncG9zdGNzcy9saWIvY29tbWVudCdcbmltcG9ydCBBdFJ1bGUgZnJvbSAncG9zdGNzcy9saWIvYXQtcnVsZSdcbmltcG9ydCBSdWxlIGZyb20gJ3Bvc3Rjc3MvbGliL3J1bGUnXG5pbXBvcnQgUm9vdCBmcm9tICdwb3N0Y3NzL2xpYi9yb290J1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJzZXIge1xuICBjb25zdHJ1Y3RvciAoaW5wdXQpIHtcbiAgICB0aGlzLmlucHV0ID0gaW5wdXRcblxuICAgIHRoaXMucG9zID0gMFxuICAgIHRoaXMucm9vdCA9IG5ldyBSb290KClcbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLnJvb3RcbiAgICB0aGlzLnNwYWNlcyA9ICcnXG5cbiAgICB0aGlzLmV4dHJhSW5kZW50ID0gZmFsc2VcbiAgICB0aGlzLnByZXZJbmRlbnQgPSB1bmRlZmluZWRcbiAgICB0aGlzLnN0ZXAgPSB1bmRlZmluZWRcblxuICAgIHRoaXMucm9vdC5zb3VyY2UgPSB7IGlucHV0LCBzdGFydDogeyBsaW5lOiAxLCBjb2x1bW46IDEgfSB9XG4gIH1cblxuICBsb29wICgpIHtcbiAgICBsZXQgcGFydFxuICAgIHdoaWxlICh0aGlzLnBvcyA8IHRoaXMucGFydHMubGVuZ3RoKSB7XG4gICAgICBwYXJ0ID0gdGhpcy5wYXJ0c1t0aGlzLnBvc11cblxuICAgICAgaWYgKHBhcnQuY29tbWVudCkge1xuICAgICAgICB0aGlzLmNvbW1lbnQocGFydClcbiAgICAgIH0gZWxzZSBpZiAocGFydC5hdHJ1bGUpIHtcbiAgICAgICAgdGhpcy5hdHJ1bGUocGFydClcbiAgICAgIH0gZWxzZSBpZiAocGFydC5jb2xvbikge1xuICAgICAgICBsZXQgbmV4dCA9IHRoaXMubmV4dE5vbkNvbW1lbnQodGhpcy5wb3MpXG5cbiAgICAgICAgaWYgKG5leHQuZW5kIHx8IG5leHQuYXRydWxlKSB7XG4gICAgICAgICAgdGhpcy5kZWNsKHBhcnQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IG1vcmVJbmRlbnQgPSBuZXh0LmluZGVudC5sZW5ndGggPiBwYXJ0LmluZGVudC5sZW5ndGhcbiAgICAgICAgICBpZiAoIW1vcmVJbmRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZGVjbChwYXJ0KVxuICAgICAgICAgIH0gZWxzZSBpZiAobW9yZUluZGVudCAmJiBuZXh0LmNvbG9uKSB7XG4gICAgICAgICAgICB0aGlzLnJ1bGUocGFydClcbiAgICAgICAgICB9IGVsc2UgaWYgKG1vcmVJbmRlbnQgJiYgIW5leHQuY29sb24pIHtcbiAgICAgICAgICAgIHRoaXMuZGVjbChwYXJ0KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwYXJ0LmVuZCkge1xuICAgICAgICB0aGlzLnJvb3QucmF3cy5hZnRlciA9IHBhcnQuYmVmb3JlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJ1bGUocGFydClcbiAgICAgIH1cblxuICAgICAgdGhpcy5wb3MgKz0gMVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSB0aGlzLnRva2Vucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKHRoaXMudG9rZW5zW2ldLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgbGV0IGxhc3QgPSB0aGlzLnRva2Vuc1tpXVxuICAgICAgICB0aGlzLnJvb3Quc291cmNlLmVuZCA9IHtcbiAgICAgICAgICBsaW5lOiBsYXN0WzRdIHx8IGxhc3RbMl0sXG4gICAgICAgICAgY29sdW1uOiBsYXN0WzVdIHx8IGxhc3RbM11cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbW1lbnQgKHBhcnQpIHtcbiAgICBsZXQgdG9rZW4gPSBwYXJ0LnRva2Vuc1swXVxuICAgIGxldCBub2RlID0gbmV3IENvbW1lbnQoKVxuICAgIHRoaXMuaW5pdChub2RlLCBwYXJ0KVxuICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogdG9rZW5bNF0sIGNvbHVtbjogdG9rZW5bNV0gfVxuICAgIHRoaXMuY29tbWVudFRleHQobm9kZSwgdG9rZW4pXG4gIH1cblxuICBhdHJ1bGUgKHBhcnQpIHtcbiAgICBsZXQgYXR3b3JkID0gcGFydC50b2tlbnNbMF1cbiAgICBsZXQgcGFyYW1zID0gcGFydC50b2tlbnMuc2xpY2UoMSlcblxuICAgIGxldCBub2RlID0gbmV3IEF0UnVsZSgpXG4gICAgbm9kZS5uYW1lID0gYXR3b3JkWzFdLnNsaWNlKDEpXG4gICAgdGhpcy5pbml0KG5vZGUsIHBhcnQpXG5cbiAgICBpZiAobm9kZS5uYW1lID09PSAnJykgdGhpcy51bm5hbWVkQXRydWxlKGF0d29yZClcblxuICAgIHdoaWxlICghcGFydC5lbmQgJiYgcGFydC5sYXN0Q29tbWEpIHtcbiAgICAgIHRoaXMucG9zICs9IDFcbiAgICAgIHBhcnQgPSB0aGlzLnBhcnRzW3RoaXMucG9zXVxuICAgICAgcGFyYW1zLnB1c2goWydzcGFjZScsIHBhcnQuYmVmb3JlICsgcGFydC5pbmRlbnRdKVxuICAgICAgcGFyYW1zID0gcGFyYW1zLmNvbmNhdChwYXJ0LnRva2VucylcbiAgICB9XG5cbiAgICBub2RlLnJhd3MuYWZ0ZXJOYW1lID0gdGhpcy5maXJzdFNwYWNlcyhwYXJhbXMpXG4gICAgdGhpcy5rZWVwVHJhaWxpbmdTcGFjZShub2RlLCBwYXJhbXMpXG4gICAgdGhpcy5jaGVja1NlbWljb2xvbihwYXJhbXMpXG4gICAgdGhpcy5jaGVja0N1cmx5KHBhcmFtcylcbiAgICB0aGlzLnJhdyhub2RlLCAncGFyYW1zJywgcGFyYW1zLCBhdHdvcmQpXG4gIH1cblxuICBkZWNsIChwYXJ0KSB7XG4gICAgbGV0IG5vZGUgPSBuZXcgRGVjbGFyYXRpb24oKVxuICAgIHRoaXMuaW5pdChub2RlLCBwYXJ0KVxuXG4gICAgbGV0IGJldHdlZW4gPSAnJ1xuICAgIGxldCBjb2xvbiA9IDBcbiAgICBsZXQgdmFsdWUgPSBbXVxuICAgIGxldCBwcm9wID0gJydcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnQudG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgdG9rZW4gPSBwYXJ0LnRva2Vuc1tpXVxuICAgICAgaWYgKHRva2VuWzBdID09PSAnOicpIHtcbiAgICAgICAgYmV0d2VlbiArPSB0b2tlblsxXVxuICAgICAgICBjb2xvbiA9IHRva2VuXG4gICAgICAgIHZhbHVlID0gcGFydC50b2tlbnMuc2xpY2UoaSArIDEpXG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2UgaWYgKHRva2VuWzBdID09PSAnY29tbWVudCcgfHwgdG9rZW5bMF0gPT09ICdzcGFjZScpIHtcbiAgICAgICAgYmV0d2VlbiArPSB0b2tlblsxXVxuICAgICAgfSBlbHNlIGlmIChiZXR3ZWVuICE9PSAnJykge1xuICAgICAgICB0aGlzLmJhZFByb3AodG9rZW4pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9wICs9IHRva2VuWzFdXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3AgPT09ICcnKSB0aGlzLnVubmFtZWREZWNsKHBhcnQudG9rZW5zWzBdKVxuICAgIG5vZGUucHJvcCA9IHByb3BcblxuICAgIGxldCBuZXh0ID0gdGhpcy5wYXJ0c1t0aGlzLnBvcyArIDFdXG5cbiAgICB3aGlsZSAoIW5leHQuZW5kICYmICFuZXh0LmF0cnVsZSAmJiAhbmV4dC5jb2xvbiAmJlxuICAgICAgICAgICAgICAgIG5leHQuaW5kZW50Lmxlbmd0aCA+IHBhcnQuaW5kZW50Lmxlbmd0aCkge1xuICAgICAgdmFsdWUucHVzaChbJ3NwYWNlJywgbmV4dC5iZWZvcmUgKyBuZXh0LmluZGVudF0pXG4gICAgICB2YWx1ZSA9IHZhbHVlLmNvbmNhdChuZXh0LnRva2VucylcbiAgICAgIHRoaXMucG9zICs9IDFcbiAgICAgIG5leHQgPSB0aGlzLnBhcnRzW3RoaXMucG9zICsgMV1cbiAgICB9XG5cbiAgICBsZXQgbGFzdCA9IHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdXG4gICAgaWYgKGxhc3QgJiYgbGFzdFswXSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICB2YWx1ZS5wb3AoKVxuICAgICAgbGV0IGNvbW1lbnQgPSBuZXcgQ29tbWVudCgpXG4gICAgICB0aGlzLmN1cnJlbnQucHVzaChjb21tZW50KVxuICAgICAgY29tbWVudC5zb3VyY2UgPSB7XG4gICAgICAgIGlucHV0OiB0aGlzLmlucHV0LFxuICAgICAgICBzdGFydDogeyBsaW5lOiBsYXN0WzJdLCBjb2x1bW46IGxhc3RbM10gfSxcbiAgICAgICAgZW5kOiB7IGxpbmU6IGxhc3RbNF0sIGNvbHVtbjogbGFzdFs1XSB9XG4gICAgICB9XG4gICAgICBsZXQgcHJldiA9IHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdXG4gICAgICBpZiAocHJldiAmJiBwcmV2WzBdID09PSAnc3BhY2UnKSB7XG4gICAgICAgIHZhbHVlLnBvcCgpXG4gICAgICAgIGNvbW1lbnQucmF3cy5iZWZvcmUgPSBwcmV2WzFdXG4gICAgICB9XG4gICAgICB0aGlzLmNvbW1lbnRUZXh0KGNvbW1lbnQsIGxhc3QpXG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IHZhbHVlLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgIGxldCB0ID0gdmFsdWVbaV1bMF1cbiAgICAgIGlmICh0ID09PSAnd29yZCcgJiYgdmFsdWVbaV1bMV0gPT09ICchaW1wb3J0YW50Jykge1xuICAgICAgICBub2RlLmltcG9ydGFudCA9IHRydWVcbiAgICAgICAgaWYgKGkgPiAwICYmIHZhbHVlW2kgLSAxXVswXSA9PT0gJ3NwYWNlJykge1xuICAgICAgICAgIG5vZGUucmF3cy5pbXBvcnRhbnQgPSB2YWx1ZVtpIC0gMV1bMV0gKyAnIWltcG9ydGFudCdcbiAgICAgICAgICB2YWx1ZS5zcGxpY2UoaSAtIDEsIDIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9kZS5yYXdzLmltcG9ydGFudCA9ICchaW1wb3J0YW50J1xuICAgICAgICAgIHZhbHVlLnNwbGljZShpLCAxKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2UgaWYgKHQgIT09ICdzcGFjZScgJiYgdCAhPT0gJ25ld2xpbmUnICYmIHQgIT09ICdjb21tZW50Jykge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIG5vZGUucmF3cy5iZXR3ZWVuID0gYmV0d2VlbiArIHRoaXMuZmlyc3RTcGFjZXModmFsdWUpXG4gICAgdGhpcy5jaGVja1NlbWljb2xvbih2YWx1ZSlcbiAgICB0aGlzLnJhdyhub2RlLCAndmFsdWUnLCB2YWx1ZSwgY29sb24pXG4gIH1cblxuICBydWxlIChwYXJ0KSB7XG4gICAgbGV0IG5vZGUgPSBuZXcgUnVsZSgpXG4gICAgdGhpcy5pbml0KG5vZGUsIHBhcnQpXG5cbiAgICBsZXQgc2VsZWN0b3IgPSBwYXJ0LnRva2Vuc1xuICAgIGxldCBuZXh0ID0gdGhpcy5wYXJ0c1t0aGlzLnBvcyArIDFdXG5cbiAgICB3aGlsZSAoIW5leHQuZW5kICYmIG5leHQuaW5kZW50Lmxlbmd0aCA9PT0gcGFydC5pbmRlbnQubGVuZ3RoKSB7XG4gICAgICBzZWxlY3Rvci5wdXNoKFsnc3BhY2UnLCBuZXh0LmJlZm9yZSArIG5leHQuaW5kZW50XSlcbiAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3IuY29uY2F0KG5leHQudG9rZW5zKVxuICAgICAgdGhpcy5wb3MgKz0gMVxuICAgICAgbmV4dCA9IHRoaXMucGFydHNbdGhpcy5wb3MgKyAxXVxuICAgIH1cblxuICAgIHRoaXMua2VlcFRyYWlsaW5nU3BhY2Uobm9kZSwgc2VsZWN0b3IpXG4gICAgdGhpcy5jaGVja0N1cmx5KHNlbGVjdG9yKVxuICAgIHRoaXMucmF3KG5vZGUsICdzZWxlY3RvcicsIHNlbGVjdG9yKVxuICB9XG5cbiAgLyogSGVscGVycyAqL1xuXG4gIGluZGVudCAocGFydCkge1xuICAgIGxldCBpbmRlbnQgPSBwYXJ0LmluZGVudC5sZW5ndGhcbiAgICBsZXQgaXNQcmV2ID0gdHlwZW9mIHRoaXMucHJldkluZGVudCAhPT0gJ3VuZGVmaW5lZCdcblxuICAgIGlmICghaXNQcmV2ICYmIGluZGVudCkgdGhpcy5pbmRlbnRlZEZpcnN0TGluZShwYXJ0KVxuXG4gICAgaWYgKCF0aGlzLnN0ZXAgJiYgaW5kZW50KSB7XG4gICAgICB0aGlzLnN0ZXAgPSBpbmRlbnRcbiAgICAgIHRoaXMucm9vdC5yYXdzLmluZGVudCA9IHBhcnQuaW5kZW50XG4gICAgfVxuXG4gICAgaWYgKGlzUHJldiAmJiB0aGlzLnByZXZJbmRlbnQgIT09IGluZGVudCkge1xuICAgICAgbGV0IGRpZmYgPSBpbmRlbnQgLSB0aGlzLnByZXZJbmRlbnRcbiAgICAgIGlmIChkaWZmID4gMCkge1xuICAgICAgICBpZiAoZGlmZiAhPT0gdGhpcy5zdGVwKSB7XG4gICAgICAgICAgdGhpcy53cm9uZ0luZGVudCh0aGlzLnByZXZJbmRlbnQgKyB0aGlzLnN0ZXAsIGluZGVudCwgcGFydClcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnQubGFzdC5wdXNoKSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5jdXJyZW50Lmxhc3RcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmV4dHJhSW5kZW50ID0gJydcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpZmY7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5leHRyYUluZGVudCArPSAnICdcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZGlmZiAlIHRoaXMuc3RlcCAhPT0gMCkge1xuICAgICAgICBsZXQgbSA9IGluZGVudCArIGRpZmYgJSB0aGlzLnN0ZXBcbiAgICAgICAgdGhpcy53cm9uZ0luZGVudChgJHsgbSB9IG9yICR7IG0gKyB0aGlzLnN0ZXAgfWAsIGluZGVudCwgcGFydClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgLWRpZmYgLyB0aGlzLnN0ZXA7IGkrKykge1xuICAgICAgICAgIHRoaXMuY3VycmVudCA9IHRoaXMuY3VycmVudC5wYXJlbnRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucHJldkluZGVudCA9IGluZGVudFxuICB9XG5cbiAgaW5pdCAobm9kZSwgcGFydCkge1xuICAgIHRoaXMuaW5kZW50KHBhcnQpXG5cbiAgICBpZiAoIXRoaXMuY3VycmVudC5ub2RlcykgdGhpcy5jdXJyZW50Lm5vZGVzID0gW11cbiAgICB0aGlzLmN1cnJlbnQucHVzaChub2RlKVxuXG4gICAgbm9kZS5yYXdzLmJlZm9yZSA9IHBhcnQuYmVmb3JlICsgcGFydC5pbmRlbnRcbiAgICBpZiAodGhpcy5leHRyYUluZGVudCkge1xuICAgICAgbm9kZS5yYXdzLmV4dHJhSW5kZW50ID0gdGhpcy5leHRyYUluZGVudFxuICAgICAgdGhpcy5leHRyYUluZGVudCA9IGZhbHNlXG4gICAgfVxuICAgIG5vZGUuc291cmNlID0ge1xuICAgICAgc3RhcnQ6IHsgbGluZTogcGFydC50b2tlbnNbMF1bMl0sIGNvbHVtbjogcGFydC50b2tlbnNbMF1bM10gfSxcbiAgICAgIGlucHV0OiB0aGlzLmlucHV0XG4gICAgfVxuICB9XG5cbiAgY2hlY2tDdXJseSAodG9rZW5zKSB7XG4gICAgZm9yIChsZXQgdG9rZW4gb2YgdG9rZW5zKSB7XG4gICAgICBpZiAodG9rZW5bMF0gPT09ICd7Jykge1xuICAgICAgICB0aGlzLmVycm9yKCdVbm5lY2Vzc2FyeSBjdXJseSBicmFja2V0JywgdG9rZW5bMl0sIHRva2VuWzNdKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNoZWNrU2VtaWNvbG9uICh0b2tlbnMpIHtcbiAgICBmb3IgKGxldCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICAgIGlmICh0b2tlblswXSA9PT0gJzsnKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoJ1VubmVjZXNzYXJ5IHNlbWljb2xvbicsIHRva2VuWzJdLCB0b2tlblszXSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBrZWVwVHJhaWxpbmdTcGFjZSAobm9kZSwgdG9rZW5zKSB7XG4gICAgbGV0IGxhc3RTcGFjZSA9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV1cbiAgICBpZiAobGFzdFNwYWNlICYmIGxhc3RTcGFjZVswXSA9PT0gJ3NwYWNlJykge1xuICAgICAgdG9rZW5zLnBvcCgpXG4gICAgICBub2RlLnJhd3Muc3NzQmV0d2VlbiA9IGxhc3RTcGFjZVsxXVxuICAgIH1cbiAgfVxuXG4gIGZpcnN0U3BhY2VzICh0b2tlbnMpIHtcbiAgICBsZXQgcmVzdWx0ID0gJydcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRva2Vuc1tpXVswXSA9PT0gJ3NwYWNlJyB8fCB0b2tlbnNbaV1bMF0gPT09ICduZXdsaW5lJykge1xuICAgICAgICByZXN1bHQgKz0gdG9rZW5zLnNoaWZ0KClbMV1cbiAgICAgICAgaSAtPSAxXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICByYXcgKG5vZGUsIHByb3AsIHRva2VucywgYWx0TGFzdCkge1xuICAgIGxldCB0b2tlbiwgdHlwZVxuICAgIGxldCBsZW5ndGggPSB0b2tlbnMubGVuZ3RoXG4gICAgbGV0IHZhbHVlID0gJydcbiAgICBsZXQgY2xlYW4gPSB0cnVlXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdG9rZW4gPSB0b2tlbnNbaV1cbiAgICAgIHR5cGUgPSB0b2tlblswXVxuICAgICAgaWYgKHR5cGUgPT09ICdjb21tZW50JyB8fCAodHlwZSA9PT0gJ3NwYWNlJyAmJiBpID09PSBsZW5ndGggLSAxKSkge1xuICAgICAgICBjbGVhbiA9IGZhbHNlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSArPSB0b2tlblsxXVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWNsZWFuKSB7XG4gICAgICBsZXQgc3NzID0gdG9rZW5zLnJlZHVjZSgoYWxsLCBpKSA9PiBhbGwgKyBpWzFdLCAnJylcbiAgICAgIGxldCByYXcgPSB0b2tlbnMucmVkdWNlKChhbGwsIGkpID0+IHtcbiAgICAgICAgaWYgKGlbMF0gPT09ICdjb21tZW50JyAmJiBpWzZdID09PSAnaW5saW5lJykge1xuICAgICAgICAgIHJldHVybiBhbGwgKyAnLyogJyArIGlbMV0uc2xpY2UoMikudHJpbSgpICsgJyAqLydcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYWxsICsgaVsxXVxuICAgICAgICB9XG4gICAgICB9LCAnJylcbiAgICAgIG5vZGUucmF3c1twcm9wXSA9IHsgdmFsdWUsIHJhdyB9XG4gICAgICBpZiAoc3NzICE9PSByYXcpIG5vZGUucmF3c1twcm9wXS5zc3MgPSBzc3NcbiAgICB9XG4gICAgbm9kZVtwcm9wXSA9IHZhbHVlXG5cbiAgICBsZXQgbGFzdFxuICAgIGZvciAobGV0IGkgPSB0b2tlbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmICh0b2tlbnNbaV0ubGVuZ3RoID4gMikge1xuICAgICAgICBsYXN0ID0gdG9rZW5zW2ldXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghbGFzdCkgbGFzdCA9IGFsdExhc3RcblxuICAgIG5vZGUuc291cmNlLmVuZCA9IHtcbiAgICAgIGxpbmU6IGxhc3RbNF0gfHwgbGFzdFsyXSxcbiAgICAgIGNvbHVtbjogbGFzdFs1XSB8fCBsYXN0WzNdXG4gICAgfVxuICB9XG5cbiAgbmV4dE5vbkNvbW1lbnQgKHBvcykge1xuICAgIGxldCBuZXh0ID0gcG9zXG4gICAgbGV0IHBhcnRcbiAgICB3aGlsZSAobmV4dCA8IHRoaXMucGFydHMubGVuZ3RoKSB7XG4gICAgICBuZXh0ICs9IDFcbiAgICAgIHBhcnQgPSB0aGlzLnBhcnRzW25leHRdXG4gICAgICBpZiAocGFydC5lbmQgfHwgIXBhcnQuY29tbWVudCkgYnJlYWtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnRcbiAgfVxuXG4gIGNvbW1lbnRUZXh0IChub2RlLCB0b2tlbikge1xuICAgIGxldCB0ZXh0ID0gdG9rZW5bMV1cbiAgICBpZiAodG9rZW5bNl0gPT09ICdpbmxpbmUnKSB7XG4gICAgICBub2RlLnJhd3MuaW5saW5lID0gdHJ1ZVxuICAgICAgdGV4dCA9IHRleHQuc2xpY2UoMilcbiAgICB9IGVsc2Uge1xuICAgICAgdGV4dCA9IHRleHQuc2xpY2UoMiwgLTIpXG4gICAgfVxuXG4gICAgbGV0IG1hdGNoID0gdGV4dC5tYXRjaCgvXihcXHMqKShbXl0qW15cXHNdKShcXHMqKVxcbj8kLylcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIG5vZGUudGV4dCA9IG1hdGNoWzJdXG4gICAgICBub2RlLnJhd3MubGVmdCA9IG1hdGNoWzFdXG4gICAgICBub2RlLnJhd3MuaW5saW5lUmlnaHQgPSBtYXRjaFszXVxuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnRleHQgPSAnJ1xuICAgICAgbm9kZS5yYXdzLmxlZnQgPSAnJ1xuICAgICAgbm9kZS5yYXdzLmlubGluZVJpZ2h0ID0gJydcbiAgICB9XG4gIH1cblxuICAvLyBFcnJvcnNcblxuICBlcnJvciAobXNnLCBsaW5lLCBjb2x1bW4pIHtcbiAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKG1zZywgbGluZSwgY29sdW1uKVxuICB9XG5cbiAgdW5uYW1lZEF0cnVsZSAodG9rZW4pIHtcbiAgICB0aGlzLmVycm9yKCdBdC1ydWxlIHdpdGhvdXQgbmFtZScsIHRva2VuWzJdLCB0b2tlblszXSlcbiAgfVxuXG4gIHVubmFtZWREZWNsICh0b2tlbikge1xuICAgIHRoaXMuZXJyb3IoJ0RlY2xhcmF0aW9uIHdpdGhvdXQgbmFtZScsIHRva2VuWzJdLCB0b2tlblszXSlcbiAgfVxuXG4gIGluZGVudGVkRmlyc3RMaW5lIChwYXJ0KSB7XG4gICAgdGhpcy5lcnJvcignRmlyc3QgbGluZSBzaG91bGQgbm90IGhhdmUgaW5kZW50JywgcGFydC5udW1iZXIsIDEpXG4gIH1cblxuICB3cm9uZ0luZGVudCAoZXhwZWN0ZWQsIHJlYWwsIHBhcnQpIHtcbiAgICBsZXQgbXNnID0gYEV4cGVjdGVkICR7IGV4cGVjdGVkIH0gaW5kZW50LCBidXQgZ2V0ICR7IHJlYWwgfWBcbiAgICB0aGlzLmVycm9yKG1zZywgcGFydC5udW1iZXIsIDEpXG4gIH1cblxuICBiYWRQcm9wICh0b2tlbikge1xuICAgIHRoaXMuZXJyb3IoJ1VuZXhwZWN0ZWQgc2VwYXJhdG9yIGluIHByb3BlcnR5JywgdG9rZW5bMl0sIHRva2VuWzNdKVxuICB9XG59XG4iXX0= \ No newline at end of file
diff --git a/assets/node_modules/sugarss/preprocess.js b/assets/node_modules/sugarss/preprocess.js
deleted file mode 100644
index b21b34d..0000000
--- a/assets/node_modules/sugarss/preprocess.js
+++ /dev/null
@@ -1,121 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-exports.default = preprocess;
-function indentError(input, l, p) {
- throw input.error('Mixed tabs and spaces are not allowed', l, p + 1);
-}
-
-function preprocess(input, lines) {
- var indentType = void 0;
- var prevNumber = 0;
- var parts = lines.map(function (line) {
- var lastComma = false;
- var comment = false;
- var number = prevNumber + 1;
- var atrule = false;
- var indent = '';
- var tokens = [];
- var colon = false;
-
- if (line.length > 0) {
- if (line[0][0] === 'space') {
- indent = line[0][1];
- tokens = line.slice(1);
- } else {
- indent = '';
- tokens = line;
- }
-
- if (!indentType && indent.length) {
- indentType = indent[0] === ' ' ? 'space' : 'tab';
- }
- if (indentType === 'space') {
- if (indent.indexOf('\t') !== -1) {
- indentError(input, number, indent.indexOf('\t'));
- }
- } else if (indentType === 'tab') {
- if (indent.indexOf(' ') !== -1) {
- indentError(input, number, indent.indexOf(' '));
- }
- }
-
- if (tokens.length) {
- for (var i = tokens.length - 1; i >= 0; i--) {
- var type = tokens[i][0];
- if (type === ',') {
- lastComma = true;
- break;
- } else if (type === 'space') {
- continue;
- } else if (type === 'comment') {
- continue;
- } else if (type === 'newline') {
- continue;
- } else {
- break;
- }
- }
- comment = tokens[0][0] === 'comment';
- atrule = tokens[0][0] === 'at-word';
-
- var brackets = 0;
- for (var _i = 0; _i < tokens.length - 1; _i++) {
- var _type = tokens[_i][0];
- var next = tokens[_i + 1][0];
- if (_type === '(') {
- brackets += 1;
- } else if (_type === ')') {
- brackets -= 1;
- } else if (_type === ':' && brackets === 0 && (next === 'space' || next === 'newline')) {
- colon = true;
- }
- }
- }
-
- var last = tokens[tokens.length - 1];
- if (last && last[0] === 'newline') prevNumber = last[2];
- }
-
- return {
- number: number,
- indent: indent,
- colon: colon,
- tokens: tokens,
- atrule: atrule,
- comment: comment,
- lastComma: lastComma,
- before: ''
- };
- });
-
- parts = parts.reduceRight(function (all, i) {
- if (!i.tokens.length || i.tokens.every(function (j) {
- return j[0] === 'newline';
- })) {
- var prev = all[0];
- var before = i.indent + i.tokens.map(function (j) {
- return j[1];
- }).join('');
- prev.before = before + prev.before;
- } else {
- all.unshift(i);
- }
- return all;
- }, [{ end: true, before: '' }]);
-
- parts.forEach(function (part, i) {
- if (i === 0) return;
-
- var prev = parts[i - 1];
- var last = prev.tokens[prev.tokens.length - 1];
- if (last && last[0] === 'newline') {
- part.before = last[1] + part.before;
- prev.tokens.pop();
- }
- });
-
- return parts;
-}
-module.exports = exports['default'];
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByZXByb2Nlc3MuZXM2Il0sIm5hbWVzIjpbInByZXByb2Nlc3MiLCJpbmRlbnRFcnJvciIsImlucHV0IiwibCIsInAiLCJlcnJvciIsImxpbmVzIiwiaW5kZW50VHlwZSIsInByZXZOdW1iZXIiLCJwYXJ0cyIsIm1hcCIsImxhc3RDb21tYSIsImNvbW1lbnQiLCJudW1iZXIiLCJhdHJ1bGUiLCJpbmRlbnQiLCJ0b2tlbnMiLCJjb2xvbiIsImxpbmUiLCJsZW5ndGgiLCJzbGljZSIsImluZGV4T2YiLCJpIiwidHlwZSIsImJyYWNrZXRzIiwibmV4dCIsImxhc3QiLCJiZWZvcmUiLCJyZWR1Y2VSaWdodCIsImFsbCIsImV2ZXJ5IiwiaiIsInByZXYiLCJqb2luIiwidW5zaGlmdCIsImVuZCIsImZvckVhY2giLCJwYXJ0IiwicG9wIl0sIm1hcHBpbmdzIjoiOzs7a0JBSXdCQSxVO0FBSnhCLFNBQVNDLFdBQVQsQ0FBc0JDLEtBQXRCLEVBQTZCQyxDQUE3QixFQUFnQ0MsQ0FBaEMsRUFBbUM7QUFDakMsUUFBTUYsTUFBTUcsS0FBTixDQUFZLHVDQUFaLEVBQXFERixDQUFyRCxFQUF3REMsSUFBSSxDQUE1RCxDQUFOO0FBQ0Q7O0FBRWMsU0FBU0osVUFBVCxDQUFxQkUsS0FBckIsRUFBNEJJLEtBQTVCLEVBQW1DO0FBQ2hELE1BQUlDLG1CQUFKO0FBQ0EsTUFBSUMsYUFBYSxDQUFqQjtBQUNBLE1BQUlDLFFBQVFILE1BQU1JLEdBQU4sQ0FBVSxnQkFBUTtBQUM1QixRQUFJQyxZQUFZLEtBQWhCO0FBQ0EsUUFBSUMsVUFBVSxLQUFkO0FBQ0EsUUFBSUMsU0FBU0wsYUFBYSxDQUExQjtBQUNBLFFBQUlNLFNBQVMsS0FBYjtBQUNBLFFBQUlDLFNBQVMsRUFBYjtBQUNBLFFBQUlDLFNBQVMsRUFBYjtBQUNBLFFBQUlDLFFBQVEsS0FBWjs7QUFFQSxRQUFJQyxLQUFLQyxNQUFMLEdBQWMsQ0FBbEIsRUFBcUI7QUFDbkIsVUFBSUQsS0FBSyxDQUFMLEVBQVEsQ0FBUixNQUFlLE9BQW5CLEVBQTRCO0FBQzFCSCxpQkFBU0csS0FBSyxDQUFMLEVBQVEsQ0FBUixDQUFUO0FBQ0FGLGlCQUFTRSxLQUFLRSxLQUFMLENBQVcsQ0FBWCxDQUFUO0FBQ0QsT0FIRCxNQUdPO0FBQ0xMLGlCQUFTLEVBQVQ7QUFDQUMsaUJBQVNFLElBQVQ7QUFDRDs7QUFFRCxVQUFJLENBQUNYLFVBQUQsSUFBZVEsT0FBT0ksTUFBMUIsRUFBa0M7QUFDaENaLHFCQUFhUSxPQUFPLENBQVAsTUFBYyxHQUFkLEdBQW9CLE9BQXBCLEdBQThCLEtBQTNDO0FBQ0Q7QUFDRCxVQUFJUixlQUFlLE9BQW5CLEVBQTRCO0FBQzFCLFlBQUlRLE9BQU9NLE9BQVAsQ0FBZSxJQUFmLE1BQXlCLENBQUMsQ0FBOUIsRUFBaUM7QUFDL0JwQixzQkFBWUMsS0FBWixFQUFtQlcsTUFBbkIsRUFBMkJFLE9BQU9NLE9BQVAsQ0FBZSxJQUFmLENBQTNCO0FBQ0Q7QUFDRixPQUpELE1BSU8sSUFBSWQsZUFBZSxLQUFuQixFQUEwQjtBQUMvQixZQUFJUSxPQUFPTSxPQUFQLENBQWUsR0FBZixNQUF3QixDQUFDLENBQTdCLEVBQWdDO0FBQzlCcEIsc0JBQVlDLEtBQVosRUFBbUJXLE1BQW5CLEVBQTJCRSxPQUFPTSxPQUFQLENBQWUsR0FBZixDQUEzQjtBQUNEO0FBQ0Y7O0FBRUQsVUFBSUwsT0FBT0csTUFBWCxFQUFtQjtBQUNqQixhQUFLLElBQUlHLElBQUlOLE9BQU9HLE1BQVAsR0FBZ0IsQ0FBN0IsRUFBZ0NHLEtBQUssQ0FBckMsRUFBd0NBLEdBQXhDLEVBQTZDO0FBQzNDLGNBQUlDLE9BQU9QLE9BQU9NLENBQVAsRUFBVSxDQUFWLENBQVg7QUFDQSxjQUFJQyxTQUFTLEdBQWIsRUFBa0I7QUFDaEJaLHdCQUFZLElBQVo7QUFDQTtBQUNELFdBSEQsTUFHTyxJQUFJWSxTQUFTLE9BQWIsRUFBc0I7QUFDM0I7QUFDRCxXQUZNLE1BRUEsSUFBSUEsU0FBUyxTQUFiLEVBQXdCO0FBQzdCO0FBQ0QsV0FGTSxNQUVBLElBQUlBLFNBQVMsU0FBYixFQUF3QjtBQUM3QjtBQUNELFdBRk0sTUFFQTtBQUNMO0FBQ0Q7QUFDRjtBQUNEWCxrQkFBVUksT0FBTyxDQUFQLEVBQVUsQ0FBVixNQUFpQixTQUEzQjtBQUNBRixpQkFBU0UsT0FBTyxDQUFQLEVBQVUsQ0FBVixNQUFpQixTQUExQjs7QUFFQSxZQUFJUSxXQUFXLENBQWY7QUFDQSxhQUFLLElBQUlGLEtBQUksQ0FBYixFQUFnQkEsS0FBSU4sT0FBT0csTUFBUCxHQUFnQixDQUFwQyxFQUF1Q0csSUFBdkMsRUFBNEM7QUFDMUMsY0FBSUMsUUFBT1AsT0FBT00sRUFBUCxFQUFVLENBQVYsQ0FBWDtBQUNBLGNBQUlHLE9BQU9ULE9BQU9NLEtBQUksQ0FBWCxFQUFjLENBQWQsQ0FBWDtBQUNBLGNBQUlDLFVBQVMsR0FBYixFQUFrQjtBQUNoQkMsd0JBQVksQ0FBWjtBQUNELFdBRkQsTUFFTyxJQUFJRCxVQUFTLEdBQWIsRUFBa0I7QUFDdkJDLHdCQUFZLENBQVo7QUFDRCxXQUZNLE1BRUEsSUFBSUQsVUFBUyxHQUFULElBQWdCQyxhQUFhLENBQTdCLEtBQ1dDLFNBQVMsT0FBVCxJQUFvQkEsU0FBUyxTQUR4QyxDQUFKLEVBQ3dEO0FBQzdEUixvQkFBUSxJQUFSO0FBQ0Q7QUFDRjtBQUNGOztBQUVELFVBQUlTLE9BQU9WLE9BQU9BLE9BQU9HLE1BQVAsR0FBZ0IsQ0FBdkIsQ0FBWDtBQUNBLFVBQUlPLFFBQVFBLEtBQUssQ0FBTCxNQUFZLFNBQXhCLEVBQW1DbEIsYUFBYWtCLEtBQUssQ0FBTCxDQUFiO0FBQ3BDOztBQUVELFdBQU87QUFDTGIsb0JBREs7QUFFTEUsb0JBRks7QUFHTEUsa0JBSEs7QUFJTEQsb0JBSks7QUFLTEYsb0JBTEs7QUFNTEYsc0JBTks7QUFPTEQsMEJBUEs7QUFRTGdCLGNBQVE7QUFSSCxLQUFQO0FBVUQsR0EvRVcsQ0FBWjs7QUFpRkFsQixVQUFRQSxNQUFNbUIsV0FBTixDQUFrQixVQUFDQyxHQUFELEVBQU1QLENBQU4sRUFBWTtBQUNwQyxRQUFJLENBQUNBLEVBQUVOLE1BQUYsQ0FBU0csTUFBVixJQUFvQkcsRUFBRU4sTUFBRixDQUFTYyxLQUFULENBQWU7QUFBQSxhQUFLQyxFQUFFLENBQUYsTUFBUyxTQUFkO0FBQUEsS0FBZixDQUF4QixFQUFpRTtBQUMvRCxVQUFJQyxPQUFPSCxJQUFJLENBQUosQ0FBWDtBQUNBLFVBQUlGLFNBQVNMLEVBQUVQLE1BQUYsR0FBV08sRUFBRU4sTUFBRixDQUFTTixHQUFULENBQWE7QUFBQSxlQUFLcUIsRUFBRSxDQUFGLENBQUw7QUFBQSxPQUFiLEVBQXdCRSxJQUF4QixDQUE2QixFQUE3QixDQUF4QjtBQUNBRCxXQUFLTCxNQUFMLEdBQWNBLFNBQVNLLEtBQUtMLE1BQTVCO0FBQ0QsS0FKRCxNQUlPO0FBQ0xFLFVBQUlLLE9BQUosQ0FBWVosQ0FBWjtBQUNEO0FBQ0QsV0FBT08sR0FBUDtBQUNELEdBVE8sRUFTTCxDQUFDLEVBQUVNLEtBQUssSUFBUCxFQUFhUixRQUFRLEVBQXJCLEVBQUQsQ0FUSyxDQUFSOztBQVdBbEIsUUFBTTJCLE9BQU4sQ0FBYyxVQUFDQyxJQUFELEVBQU9mLENBQVAsRUFBYTtBQUN6QixRQUFJQSxNQUFNLENBQVYsRUFBYTs7QUFFYixRQUFJVSxPQUFPdkIsTUFBTWEsSUFBSSxDQUFWLENBQVg7QUFDQSxRQUFJSSxPQUFPTSxLQUFLaEIsTUFBTCxDQUFZZ0IsS0FBS2hCLE1BQUwsQ0FBWUcsTUFBWixHQUFxQixDQUFqQyxDQUFYO0FBQ0EsUUFBSU8sUUFBUUEsS0FBSyxDQUFMLE1BQVksU0FBeEIsRUFBbUM7QUFDakNXLFdBQUtWLE1BQUwsR0FBY0QsS0FBSyxDQUFMLElBQVVXLEtBQUtWLE1BQTdCO0FBQ0FLLFdBQUtoQixNQUFMLENBQVlzQixHQUFaO0FBQ0Q7QUFDRixHQVREOztBQVdBLFNBQU83QixLQUFQO0FBQ0QiLCJmaWxlIjoicHJlcHJvY2Vzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGluZGVudEVycm9yIChpbnB1dCwgbCwgcCkge1xuICB0aHJvdyBpbnB1dC5lcnJvcignTWl4ZWQgdGFicyBhbmQgc3BhY2VzIGFyZSBub3QgYWxsb3dlZCcsIGwsIHAgKyAxKVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwcmVwcm9jZXNzIChpbnB1dCwgbGluZXMpIHtcbiAgbGV0IGluZGVudFR5cGVcbiAgbGV0IHByZXZOdW1iZXIgPSAwXG4gIGxldCBwYXJ0cyA9IGxpbmVzLm1hcChsaW5lID0+IHtcbiAgICBsZXQgbGFzdENvbW1hID0gZmFsc2VcbiAgICBsZXQgY29tbWVudCA9IGZhbHNlXG4gICAgbGV0IG51bWJlciA9IHByZXZOdW1iZXIgKyAxXG4gICAgbGV0IGF0cnVsZSA9IGZhbHNlXG4gICAgbGV0IGluZGVudCA9ICcnXG4gICAgbGV0IHRva2VucyA9IFtdXG4gICAgbGV0IGNvbG9uID0gZmFsc2VcblxuICAgIGlmIChsaW5lLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChsaW5lWzBdWzBdID09PSAnc3BhY2UnKSB7XG4gICAgICAgIGluZGVudCA9IGxpbmVbMF1bMV1cbiAgICAgICAgdG9rZW5zID0gbGluZS5zbGljZSgxKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5kZW50ID0gJydcbiAgICAgICAgdG9rZW5zID0gbGluZVxuICAgICAgfVxuXG4gICAgICBpZiAoIWluZGVudFR5cGUgJiYgaW5kZW50Lmxlbmd0aCkge1xuICAgICAgICBpbmRlbnRUeXBlID0gaW5kZW50WzBdID09PSAnICcgPyAnc3BhY2UnIDogJ3RhYidcbiAgICAgIH1cbiAgICAgIGlmIChpbmRlbnRUeXBlID09PSAnc3BhY2UnKSB7XG4gICAgICAgIGlmIChpbmRlbnQuaW5kZXhPZignXFx0JykgIT09IC0xKSB7XG4gICAgICAgICAgaW5kZW50RXJyb3IoaW5wdXQsIG51bWJlciwgaW5kZW50LmluZGV4T2YoJ1xcdCcpKVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGluZGVudFR5cGUgPT09ICd0YWInKSB7XG4gICAgICAgIGlmIChpbmRlbnQuaW5kZXhPZignICcpICE9PSAtMSkge1xuICAgICAgICAgIGluZGVudEVycm9yKGlucHV0LCBudW1iZXIsIGluZGVudC5pbmRleE9mKCcgJykpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRva2Vucy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRva2Vucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIGxldCB0eXBlID0gdG9rZW5zW2ldWzBdXG4gICAgICAgICAgaWYgKHR5cGUgPT09ICcsJykge1xuICAgICAgICAgICAgbGFzdENvbW1hID0gdHJ1ZVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzcGFjZScpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnY29tbWVudCcpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbmV3bGluZScpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbW1lbnQgPSB0b2tlbnNbMF1bMF0gPT09ICdjb21tZW50J1xuICAgICAgICBhdHJ1bGUgPSB0b2tlbnNbMF1bMF0gPT09ICdhdC13b3JkJ1xuXG4gICAgICAgIGxldCBicmFja2V0cyA9IDBcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgbGV0IHR5cGUgPSB0b2tlbnNbaV1bMF1cbiAgICAgICAgICBsZXQgbmV4dCA9IHRva2Vuc1tpICsgMV1bMF1cbiAgICAgICAgICBpZiAodHlwZSA9PT0gJygnKSB7XG4gICAgICAgICAgICBicmFja2V0cyArPSAxXG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnKScpIHtcbiAgICAgICAgICAgIGJyYWNrZXRzIC09IDFcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICc6JyAmJiBicmFja2V0cyA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZXh0ID09PSAnc3BhY2UnIHx8IG5leHQgPT09ICduZXdsaW5lJykpIHtcbiAgICAgICAgICAgIGNvbG9uID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsZXQgbGFzdCA9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV1cbiAgICAgIGlmIChsYXN0ICYmIGxhc3RbMF0gPT09ICduZXdsaW5lJykgcHJldk51bWJlciA9IGxhc3RbMl1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbnVtYmVyLFxuICAgICAgaW5kZW50LFxuICAgICAgY29sb24sXG4gICAgICB0b2tlbnMsXG4gICAgICBhdHJ1bGUsXG4gICAgICBjb21tZW50LFxuICAgICAgbGFzdENvbW1hLFxuICAgICAgYmVmb3JlOiAnJ1xuICAgIH1cbiAgfSlcblxuICBwYXJ0cyA9IHBhcnRzLnJlZHVjZVJpZ2h0KChhbGwsIGkpID0+IHtcbiAgICBpZiAoIWkudG9rZW5zLmxlbmd0aCB8fCBpLnRva2Vucy5ldmVyeShqID0+IGpbMF0gPT09ICduZXdsaW5lJykpIHtcbiAgICAgIGxldCBwcmV2ID0gYWxsWzBdXG4gICAgICBsZXQgYmVmb3JlID0gaS5pbmRlbnQgKyBpLnRva2Vucy5tYXAoaiA9PiBqWzFdKS5qb2luKCcnKVxuICAgICAgcHJldi5iZWZvcmUgPSBiZWZvcmUgKyBwcmV2LmJlZm9yZVxuICAgIH0gZWxzZSB7XG4gICAgICBhbGwudW5zaGlmdChpKVxuICAgIH1cbiAgICByZXR1cm4gYWxsXG4gIH0sIFt7IGVuZDogdHJ1ZSwgYmVmb3JlOiAnJyB9XSlcblxuICBwYXJ0cy5mb3JFYWNoKChwYXJ0LCBpKSA9PiB7XG4gICAgaWYgKGkgPT09IDApIHJldHVyblxuXG4gICAgbGV0IHByZXYgPSBwYXJ0c1tpIC0gMV1cbiAgICBsZXQgbGFzdCA9IHByZXYudG9rZW5zW3ByZXYudG9rZW5zLmxlbmd0aCAtIDFdXG4gICAgaWYgKGxhc3QgJiYgbGFzdFswXSA9PT0gJ25ld2xpbmUnKSB7XG4gICAgICBwYXJ0LmJlZm9yZSA9IGxhc3RbMV0gKyBwYXJ0LmJlZm9yZVxuICAgICAgcHJldi50b2tlbnMucG9wKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHBhcnRzXG59XG4iXX0= \ No newline at end of file
diff --git a/assets/node_modules/sugarss/stringifier.js b/assets/node_modules/sugarss/stringifier.js
deleted file mode 100644
index f893549..0000000
--- a/assets/node_modules/sugarss/stringifier.js
+++ /dev/null
@@ -1,127 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var defaultRaw = {
- colon: ': ',
- indent: ' ',
- commentLeft: ' ',
- commentRight: ' '
-};
-
-var Stringifier = function () {
- function Stringifier(builder) {
- _classCallCheck(this, Stringifier);
-
- this.builder = builder;
- }
-
- Stringifier.prototype.stringify = function stringify(node, semicolon) {
- this[node.type](node, semicolon);
- };
-
- Stringifier.prototype.root = function root(node) {
- this.body(node);
- if (node.raws.after) this.builder(node.raws.after);
- };
-
- Stringifier.prototype.comment = function comment(node) {
- var left = defaultRaw.commentLeft;
- var right = defaultRaw.commentRight;
- if (this.has(node.raws.left)) left = node.raws.left;
-
- if (node.raws.inline) {
- if (this.has(node.raws.inlineRight)) {
- right = node.raws.inlineRight;
- } else {
- right = '';
- }
- if (node.raws.extraIndent) {
- this.builder(node.raws.extraIndent);
- }
- this.builder('//' + left + node.text + right, node);
- } else {
- if (this.has(node.raws.right)) right = node.raws.right;
- this.builder('/*' + left + node.text + right + '*/', node);
- }
- };
-
- Stringifier.prototype.decl = function decl(node) {
- var between = node.raws.between || defaultRaw.colon;
- var string = node.prop + between + this.rawValue(node, 'value');
-
- if (node.important) {
- string += node.raws.important || ' !important';
- }
-
- this.builder(string, node);
- };
-
- Stringifier.prototype.rule = function rule(node) {
- this.block(node, this.rawValue(node, 'selector'));
- };
-
- Stringifier.prototype.atrule = function atrule(node) {
- var name = '@' + node.name;
- var params = node.params ? this.rawValue(node, 'params') : '';
-
- if (this.has(node.raws.afterName)) {
- name += node.raws.afterName;
- } else if (params) {
- name += ' ';
- }
-
- this.block(node, name + params);
- };
-
- Stringifier.prototype.body = function body(node) {
- var indent = node.root().raws.indent || defaultRaw.indent;
-
- for (var i = 0; i < node.nodes.length; i++) {
- var child = node.nodes[i];
- var before = child.raws.before.replace(/[^\n]*$/, '') + this.indent(node, indent);
- if (child.type === 'comment' && child.raws.before.indexOf('\n') === -1) {
- before = child.raws.before;
- }
- if (before) this.builder(before);
- this.stringify(child);
- }
- };
-
- Stringifier.prototype.block = function block(node, start) {
- var between = node.raws.sssBetween || '';
- this.builder(start + between, node, 'start');
- if (this.has(node.nodes)) this.body(node);
- };
-
- Stringifier.prototype.indent = function indent(node, step) {
- var result = '';
- while (node.parent) {
- result += step;
- node = node.parent;
- }
- return result;
- };
-
- Stringifier.prototype.has = function has(value) {
- return typeof value !== 'undefined';
- };
-
- Stringifier.prototype.rawValue = function rawValue(node, prop) {
- var value = node[prop];
- var raw = node.raws[prop];
- if (raw && raw.value === value) {
- return raw.sss || raw.raw;
- } else {
- return value;
- }
- };
-
- return Stringifier;
-}();
-
-exports.default = Stringifier;
-module.exports = exports['default'];
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmaWVyLmVzNiJdLCJuYW1lcyI6WyJkZWZhdWx0UmF3IiwiY29sb24iLCJpbmRlbnQiLCJjb21tZW50TGVmdCIsImNvbW1lbnRSaWdodCIsIlN0cmluZ2lmaWVyIiwiYnVpbGRlciIsInN0cmluZ2lmeSIsIm5vZGUiLCJzZW1pY29sb24iLCJ0eXBlIiwicm9vdCIsImJvZHkiLCJyYXdzIiwiYWZ0ZXIiLCJjb21tZW50IiwibGVmdCIsInJpZ2h0IiwiaGFzIiwiaW5saW5lIiwiaW5saW5lUmlnaHQiLCJleHRyYUluZGVudCIsInRleHQiLCJkZWNsIiwiYmV0d2VlbiIsInN0cmluZyIsInByb3AiLCJyYXdWYWx1ZSIsImltcG9ydGFudCIsInJ1bGUiLCJibG9jayIsImF0cnVsZSIsIm5hbWUiLCJwYXJhbXMiLCJhZnRlck5hbWUiLCJpIiwibm9kZXMiLCJsZW5ndGgiLCJjaGlsZCIsImJlZm9yZSIsInJlcGxhY2UiLCJpbmRleE9mIiwic3RhcnQiLCJzc3NCZXR3ZWVuIiwic3RlcCIsInJlc3VsdCIsInBhcmVudCIsInZhbHVlIiwicmF3Iiwic3NzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFNQSxhQUFhO0FBQ2pCQyxTQUFPLElBRFU7QUFFakJDLFVBQVEsSUFGUztBQUdqQkMsZUFBYSxHQUhJO0FBSWpCQyxnQkFBYztBQUpHLENBQW5COztJQU9xQkMsVztBQUNuQix1QkFBYUMsT0FBYixFQUFzQjtBQUFBOztBQUNwQixTQUFLQSxPQUFMLEdBQWVBLE9BQWY7QUFDRDs7d0JBRURDLFMsc0JBQVdDLEksRUFBTUMsUyxFQUFXO0FBQzFCLFNBQUtELEtBQUtFLElBQVYsRUFBZ0JGLElBQWhCLEVBQXNCQyxTQUF0QjtBQUNELEc7O3dCQUVERSxJLGlCQUFNSCxJLEVBQU07QUFDVixTQUFLSSxJQUFMLENBQVVKLElBQVY7QUFDQSxRQUFJQSxLQUFLSyxJQUFMLENBQVVDLEtBQWQsRUFBcUIsS0FBS1IsT0FBTCxDQUFhRSxLQUFLSyxJQUFMLENBQVVDLEtBQXZCO0FBQ3RCLEc7O3dCQUVEQyxPLG9CQUFTUCxJLEVBQU07QUFDYixRQUFJUSxPQUFPaEIsV0FBV0csV0FBdEI7QUFDQSxRQUFJYyxRQUFRakIsV0FBV0ksWUFBdkI7QUFDQSxRQUFJLEtBQUtjLEdBQUwsQ0FBU1YsS0FBS0ssSUFBTCxDQUFVRyxJQUFuQixDQUFKLEVBQThCQSxPQUFPUixLQUFLSyxJQUFMLENBQVVHLElBQWpCOztBQUU5QixRQUFJUixLQUFLSyxJQUFMLENBQVVNLE1BQWQsRUFBc0I7QUFDcEIsVUFBSSxLQUFLRCxHQUFMLENBQVNWLEtBQUtLLElBQUwsQ0FBVU8sV0FBbkIsQ0FBSixFQUFxQztBQUNuQ0gsZ0JBQVFULEtBQUtLLElBQUwsQ0FBVU8sV0FBbEI7QUFDRCxPQUZELE1BRU87QUFDTEgsZ0JBQVEsRUFBUjtBQUNEO0FBQ0QsVUFBSVQsS0FBS0ssSUFBTCxDQUFVUSxXQUFkLEVBQTJCO0FBQ3pCLGFBQUtmLE9BQUwsQ0FBYUUsS0FBS0ssSUFBTCxDQUFVUSxXQUF2QjtBQUNEO0FBQ0QsV0FBS2YsT0FBTCxDQUFhLE9BQU9VLElBQVAsR0FBY1IsS0FBS2MsSUFBbkIsR0FBMEJMLEtBQXZDLEVBQThDVCxJQUE5QztBQUNELEtBVkQsTUFVTztBQUNMLFVBQUksS0FBS1UsR0FBTCxDQUFTVixLQUFLSyxJQUFMLENBQVVJLEtBQW5CLENBQUosRUFBK0JBLFFBQVFULEtBQUtLLElBQUwsQ0FBVUksS0FBbEI7QUFDL0IsV0FBS1gsT0FBTCxDQUFhLE9BQU9VLElBQVAsR0FBY1IsS0FBS2MsSUFBbkIsR0FBMEJMLEtBQTFCLEdBQWtDLElBQS9DLEVBQXFEVCxJQUFyRDtBQUNEO0FBQ0YsRzs7d0JBRURlLEksaUJBQU1mLEksRUFBTTtBQUNWLFFBQUlnQixVQUFVaEIsS0FBS0ssSUFBTCxDQUFVVyxPQUFWLElBQXFCeEIsV0FBV0MsS0FBOUM7QUFDQSxRQUFJd0IsU0FBU2pCLEtBQUtrQixJQUFMLEdBQVlGLE9BQVosR0FBc0IsS0FBS0csUUFBTCxDQUFjbkIsSUFBZCxFQUFvQixPQUFwQixDQUFuQzs7QUFFQSxRQUFJQSxLQUFLb0IsU0FBVCxFQUFvQjtBQUNsQkgsZ0JBQVVqQixLQUFLSyxJQUFMLENBQVVlLFNBQVYsSUFBdUIsYUFBakM7QUFDRDs7QUFFRCxTQUFLdEIsT0FBTCxDQUFhbUIsTUFBYixFQUFxQmpCLElBQXJCO0FBQ0QsRzs7d0JBRURxQixJLGlCQUFNckIsSSxFQUFNO0FBQ1YsU0FBS3NCLEtBQUwsQ0FBV3RCLElBQVgsRUFBaUIsS0FBS21CLFFBQUwsQ0FBY25CLElBQWQsRUFBb0IsVUFBcEIsQ0FBakI7QUFDRCxHOzt3QkFFRHVCLE0sbUJBQVF2QixJLEVBQU07QUFDWixRQUFJd0IsT0FBTyxNQUFNeEIsS0FBS3dCLElBQXRCO0FBQ0EsUUFBSUMsU0FBU3pCLEtBQUt5QixNQUFMLEdBQWMsS0FBS04sUUFBTCxDQUFjbkIsSUFBZCxFQUFvQixRQUFwQixDQUFkLEdBQThDLEVBQTNEOztBQUVBLFFBQUksS0FBS1UsR0FBTCxDQUFTVixLQUFLSyxJQUFMLENBQVVxQixTQUFuQixDQUFKLEVBQW1DO0FBQ2pDRixjQUFReEIsS0FBS0ssSUFBTCxDQUFVcUIsU0FBbEI7QUFDRCxLQUZELE1BRU8sSUFBSUQsTUFBSixFQUFZO0FBQ2pCRCxjQUFRLEdBQVI7QUFDRDs7QUFFRCxTQUFLRixLQUFMLENBQVd0QixJQUFYLEVBQWlCd0IsT0FBT0MsTUFBeEI7QUFDRCxHOzt3QkFFRHJCLEksaUJBQU1KLEksRUFBTTtBQUNWLFFBQUlOLFNBQVNNLEtBQUtHLElBQUwsR0FBWUUsSUFBWixDQUFpQlgsTUFBakIsSUFBMkJGLFdBQVdFLE1BQW5EOztBQUVBLFNBQUssSUFBSWlDLElBQUksQ0FBYixFQUFnQkEsSUFBSTNCLEtBQUs0QixLQUFMLENBQVdDLE1BQS9CLEVBQXVDRixHQUF2QyxFQUE0QztBQUMxQyxVQUFJRyxRQUFROUIsS0FBSzRCLEtBQUwsQ0FBV0QsQ0FBWCxDQUFaO0FBQ0EsVUFBSUksU0FBU0QsTUFBTXpCLElBQU4sQ0FBVzBCLE1BQVgsQ0FBa0JDLE9BQWxCLENBQTBCLFNBQTFCLEVBQXFDLEVBQXJDLElBQ00sS0FBS3RDLE1BQUwsQ0FBWU0sSUFBWixFQUFrQk4sTUFBbEIsQ0FEbkI7QUFFQSxVQUFJb0MsTUFBTTVCLElBQU4sS0FBZSxTQUFmLElBQ080QixNQUFNekIsSUFBTixDQUFXMEIsTUFBWCxDQUFrQkUsT0FBbEIsQ0FBMEIsSUFBMUIsTUFBb0MsQ0FBQyxDQURoRCxFQUNtRDtBQUNqREYsaUJBQVNELE1BQU16QixJQUFOLENBQVcwQixNQUFwQjtBQUNEO0FBQ0QsVUFBSUEsTUFBSixFQUFZLEtBQUtqQyxPQUFMLENBQWFpQyxNQUFiO0FBQ1osV0FBS2hDLFNBQUwsQ0FBZStCLEtBQWY7QUFDRDtBQUNGLEc7O3dCQUVEUixLLGtCQUFPdEIsSSxFQUFNa0MsSyxFQUFPO0FBQ2xCLFFBQUlsQixVQUFVaEIsS0FBS0ssSUFBTCxDQUFVOEIsVUFBVixJQUF3QixFQUF0QztBQUNBLFNBQUtyQyxPQUFMLENBQWFvQyxRQUFRbEIsT0FBckIsRUFBOEJoQixJQUE5QixFQUFvQyxPQUFwQztBQUNBLFFBQUksS0FBS1UsR0FBTCxDQUFTVixLQUFLNEIsS0FBZCxDQUFKLEVBQTBCLEtBQUt4QixJQUFMLENBQVVKLElBQVY7QUFDM0IsRzs7d0JBRUROLE0sbUJBQVFNLEksRUFBTW9DLEksRUFBTTtBQUNsQixRQUFJQyxTQUFTLEVBQWI7QUFDQSxXQUFPckMsS0FBS3NDLE1BQVosRUFBb0I7QUFDbEJELGdCQUFVRCxJQUFWO0FBQ0FwQyxhQUFPQSxLQUFLc0MsTUFBWjtBQUNEO0FBQ0QsV0FBT0QsTUFBUDtBQUNELEc7O3dCQUVEM0IsRyxnQkFBSzZCLEssRUFBTztBQUNWLFdBQU8sT0FBT0EsS0FBUCxLQUFpQixXQUF4QjtBQUNELEc7O3dCQUVEcEIsUSxxQkFBVW5CLEksRUFBTWtCLEksRUFBTTtBQUNwQixRQUFJcUIsUUFBUXZDLEtBQUtrQixJQUFMLENBQVo7QUFDQSxRQUFJc0IsTUFBTXhDLEtBQUtLLElBQUwsQ0FBVWEsSUFBVixDQUFWO0FBQ0EsUUFBSXNCLE9BQU9BLElBQUlELEtBQUosS0FBY0EsS0FBekIsRUFBZ0M7QUFDOUIsYUFBT0MsSUFBSUMsR0FBSixJQUFXRCxJQUFJQSxHQUF0QjtBQUNELEtBRkQsTUFFTztBQUNMLGFBQU9ELEtBQVA7QUFDRDtBQUNGLEc7Ozs7O2tCQTFHa0IxQyxXIiwiZmlsZSI6InN0cmluZ2lmaWVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZGVmYXVsdFJhdyA9IHtcbiAgY29sb246ICc6ICcsXG4gIGluZGVudDogJyAgJyxcbiAgY29tbWVudExlZnQ6ICcgJyxcbiAgY29tbWVudFJpZ2h0OiAnICdcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyaW5naWZpZXIge1xuICBjb25zdHJ1Y3RvciAoYnVpbGRlcikge1xuICAgIHRoaXMuYnVpbGRlciA9IGJ1aWxkZXJcbiAgfVxuXG4gIHN0cmluZ2lmeSAobm9kZSwgc2VtaWNvbG9uKSB7XG4gICAgdGhpc1tub2RlLnR5cGVdKG5vZGUsIHNlbWljb2xvbilcbiAgfVxuXG4gIHJvb3QgKG5vZGUpIHtcbiAgICB0aGlzLmJvZHkobm9kZSlcbiAgICBpZiAobm9kZS5yYXdzLmFmdGVyKSB0aGlzLmJ1aWxkZXIobm9kZS5yYXdzLmFmdGVyKVxuICB9XG5cbiAgY29tbWVudCAobm9kZSkge1xuICAgIGxldCBsZWZ0ID0gZGVmYXVsdFJhdy5jb21tZW50TGVmdFxuICAgIGxldCByaWdodCA9IGRlZmF1bHRSYXcuY29tbWVudFJpZ2h0XG4gICAgaWYgKHRoaXMuaGFzKG5vZGUucmF3cy5sZWZ0KSkgbGVmdCA9IG5vZGUucmF3cy5sZWZ0XG5cbiAgICBpZiAobm9kZS5yYXdzLmlubGluZSkge1xuICAgICAgaWYgKHRoaXMuaGFzKG5vZGUucmF3cy5pbmxpbmVSaWdodCkpIHtcbiAgICAgICAgcmlnaHQgPSBub2RlLnJhd3MuaW5saW5lUmlnaHRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJpZ2h0ID0gJydcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnJhd3MuZXh0cmFJbmRlbnQpIHtcbiAgICAgICAgdGhpcy5idWlsZGVyKG5vZGUucmF3cy5leHRyYUluZGVudClcbiAgICAgIH1cbiAgICAgIHRoaXMuYnVpbGRlcignLy8nICsgbGVmdCArIG5vZGUudGV4dCArIHJpZ2h0LCBub2RlKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5oYXMobm9kZS5yYXdzLnJpZ2h0KSkgcmlnaHQgPSBub2RlLnJhd3MucmlnaHRcbiAgICAgIHRoaXMuYnVpbGRlcignLyonICsgbGVmdCArIG5vZGUudGV4dCArIHJpZ2h0ICsgJyovJywgbm9kZSlcbiAgICB9XG4gIH1cblxuICBkZWNsIChub2RlKSB7XG4gICAgbGV0IGJldHdlZW4gPSBub2RlLnJhd3MuYmV0d2VlbiB8fCBkZWZhdWx0UmF3LmNvbG9uXG4gICAgbGV0IHN0cmluZyA9IG5vZGUucHJvcCArIGJldHdlZW4gKyB0aGlzLnJhd1ZhbHVlKG5vZGUsICd2YWx1ZScpXG5cbiAgICBpZiAobm9kZS5pbXBvcnRhbnQpIHtcbiAgICAgIHN0cmluZyArPSBub2RlLnJhd3MuaW1wb3J0YW50IHx8ICcgIWltcG9ydGFudCdcbiAgICB9XG5cbiAgICB0aGlzLmJ1aWxkZXIoc3RyaW5nLCBub2RlKVxuICB9XG5cbiAgcnVsZSAobm9kZSkge1xuICAgIHRoaXMuYmxvY2sobm9kZSwgdGhpcy5yYXdWYWx1ZShub2RlLCAnc2VsZWN0b3InKSlcbiAgfVxuXG4gIGF0cnVsZSAobm9kZSkge1xuICAgIGxldCBuYW1lID0gJ0AnICsgbm9kZS5uYW1lXG4gICAgbGV0IHBhcmFtcyA9IG5vZGUucGFyYW1zID8gdGhpcy5yYXdWYWx1ZShub2RlLCAncGFyYW1zJykgOiAnJ1xuXG4gICAgaWYgKHRoaXMuaGFzKG5vZGUucmF3cy5hZnRlck5hbWUpKSB7XG4gICAgICBuYW1lICs9IG5vZGUucmF3cy5hZnRlck5hbWVcbiAgICB9IGVsc2UgaWYgKHBhcmFtcykge1xuICAgICAgbmFtZSArPSAnICdcbiAgICB9XG5cbiAgICB0aGlzLmJsb2NrKG5vZGUsIG5hbWUgKyBwYXJhbXMpXG4gIH1cblxuICBib2R5IChub2RlKSB7XG4gICAgbGV0IGluZGVudCA9IG5vZGUucm9vdCgpLnJhd3MuaW5kZW50IHx8IGRlZmF1bHRSYXcuaW5kZW50XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUubm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjaGlsZCA9IG5vZGUubm9kZXNbaV1cbiAgICAgIGxldCBiZWZvcmUgPSBjaGlsZC5yYXdzLmJlZm9yZS5yZXBsYWNlKC9bXlxcbl0qJC8sICcnKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRlbnQobm9kZSwgaW5kZW50KVxuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdjb21tZW50JyAmJlxuICAgICAgICAgICAgICAgICBjaGlsZC5yYXdzLmJlZm9yZS5pbmRleE9mKCdcXG4nKSA9PT0gLTEpIHtcbiAgICAgICAgYmVmb3JlID0gY2hpbGQucmF3cy5iZWZvcmVcbiAgICAgIH1cbiAgICAgIGlmIChiZWZvcmUpIHRoaXMuYnVpbGRlcihiZWZvcmUpXG4gICAgICB0aGlzLnN0cmluZ2lmeShjaGlsZClcbiAgICB9XG4gIH1cblxuICBibG9jayAobm9kZSwgc3RhcnQpIHtcbiAgICBsZXQgYmV0d2VlbiA9IG5vZGUucmF3cy5zc3NCZXR3ZWVuIHx8ICcnXG4gICAgdGhpcy5idWlsZGVyKHN0YXJ0ICsgYmV0d2Vlbiwgbm9kZSwgJ3N0YXJ0JylcbiAgICBpZiAodGhpcy5oYXMobm9kZS5ub2RlcykpIHRoaXMuYm9keShub2RlKVxuICB9XG5cbiAgaW5kZW50IChub2RlLCBzdGVwKSB7XG4gICAgbGV0IHJlc3VsdCA9ICcnXG4gICAgd2hpbGUgKG5vZGUucGFyZW50KSB7XG4gICAgICByZXN1bHQgKz0gc3RlcFxuICAgICAgbm9kZSA9IG5vZGUucGFyZW50XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGhhcyAodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJ1xuICB9XG5cbiAgcmF3VmFsdWUgKG5vZGUsIHByb3ApIHtcbiAgICBsZXQgdmFsdWUgPSBub2RlW3Byb3BdXG4gICAgbGV0IHJhdyA9IG5vZGUucmF3c1twcm9wXVxuICAgIGlmIChyYXcgJiYgcmF3LnZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHJhdy5zc3MgfHwgcmF3LnJhd1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG4gIH1cbn1cbiJdfQ== \ No newline at end of file
diff --git a/assets/node_modules/sugarss/stringify.js b/assets/node_modules/sugarss/stringify.js
deleted file mode 100644
index ec70005..0000000
--- a/assets/node_modules/sugarss/stringify.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-exports.default = stringify;
-
-var _stringifier = require('./stringifier');
-
-var _stringifier2 = _interopRequireDefault(_stringifier);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function stringify(node, builder) {
- var str = new _stringifier2.default(builder);
- str.stringify(node);
-}
-module.exports = exports['default'];
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmeS5lczYiXSwibmFtZXMiOlsic3RyaW5naWZ5Iiwibm9kZSIsImJ1aWxkZXIiLCJzdHIiLCJTdHJpbmdpZmllciJdLCJtYXBwaW5ncyI6Ijs7O2tCQUV3QkEsUzs7QUFGeEI7Ozs7OztBQUVlLFNBQVNBLFNBQVQsQ0FBb0JDLElBQXBCLEVBQTBCQyxPQUExQixFQUFtQztBQUNoRCxNQUFJQyxNQUFNLElBQUlDLHFCQUFKLENBQWdCRixPQUFoQixDQUFWO0FBQ0FDLE1BQUlILFNBQUosQ0FBY0MsSUFBZDtBQUNEIiwiZmlsZSI6InN0cmluZ2lmeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTdHJpbmdpZmllciBmcm9tICcuL3N0cmluZ2lmaWVyJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdHJpbmdpZnkgKG5vZGUsIGJ1aWxkZXIpIHtcbiAgbGV0IHN0ciA9IG5ldyBTdHJpbmdpZmllcihidWlsZGVyKVxuICBzdHIuc3RyaW5naWZ5KG5vZGUpXG59XG4iXX0= \ No newline at end of file
diff --git a/assets/node_modules/sugarss/tokenize.js b/assets/node_modules/sugarss/tokenize.js
deleted file mode 100644
index 48b65e5..0000000
--- a/assets/node_modules/sugarss/tokenize.js
+++ /dev/null
@@ -1,287 +0,0 @@
-'use strict';
-
-exports.__esModule = true;
-exports.default = tokenize;
-var SINGLE_QUOTE = 39;
-var DOUBLE_QUOTE = 34;
-var BACKSLASH = 92;
-var SLASH = 47;
-var NEWLINE = 10;
-var SPACE = 32;
-var FEED = 12;
-var TAB = 9;
-var CR = 13;
-var OPEN_PARENTHESES = 40;
-var CLOSE_PARENTHESES = 41;
-var OPEN_CURLY = 123;
-var CLOSE_CURLY = 125;
-var SEMICOLON = 59;
-var ASTERICK = 42;
-var COLON = 58;
-var AT = 64;
-var COMMA = 44;
-
-var RE_AT_END = /[ \n\t\r\f{()'"\\;/]/g;
-var RE_NEW_LINE = /[\r\f\n]/g;
-var RE_WORD_END = /[ \n\t\r\f(){}:;@!'"\\,]|\/(?=\*)/g;
-var RE_BAD_BRACKET = /.[\\/("'\n]/;
-
-function tokenize(input) {
- var tokens = [];
- var css = input.css.valueOf();
-
- var code = void 0,
- next = void 0,
- quote = void 0,
- lines = void 0,
- last = void 0,
- content = void 0,
- escape = void 0,
- nextLine = void 0,
- nextOffset = void 0,
- escaped = void 0,
- escapePos = void 0,
- prev = void 0,
- n = void 0;
-
- var length = css.length;
- var offset = -1;
- var line = 1;
- var pos = 0;
-
- function unclosed(what) {
- throw input.error('Unclosed ' + what, line, pos - offset);
- }
-
- while (pos < length) {
- code = css.charCodeAt(pos);
-
- if (code === NEWLINE || code === FEED || code === CR && css.charCodeAt(pos + 1) !== NEWLINE) {
- offset = pos;
- line += 1;
- }
-
- switch (code) {
- case CR:
- if (css.charCodeAt(pos + 1) === NEWLINE) {
- offset = pos;
- line += 1;
- pos += 1;
- tokens.push(['newline', '\r\n', line - 1]);
- } else {
- tokens.push(['newline', '\r', line - 1]);
- }
- break;
-
- case FEED:
- case NEWLINE:
- tokens.push(['newline', css.slice(pos, pos + 1), line - 1]);
- break;
-
- case SPACE:
- case TAB:
- next = pos;
- do {
- next += 1;
- code = css.charCodeAt(next);
- } while (code === SPACE || code === TAB);
-
- tokens.push(['space', css.slice(pos, next)]);
- pos = next - 1;
- break;
-
- case OPEN_CURLY:
- tokens.push(['{', '{', line, pos - offset]);
- break;
-
- case CLOSE_CURLY:
- tokens.push(['}', '}', line, pos - offset]);
- break;
-
- case COLON:
- tokens.push([':', ':', line, pos - offset]);
- break;
-
- case SEMICOLON:
- tokens.push([';', ';', line, pos - offset]);
- break;
-
- case COMMA:
- tokens.push([',', ',', line, pos - offset]);
- break;
-
- case OPEN_PARENTHESES:
- prev = tokens.length ? tokens[tokens.length - 1][1] : '';
- n = css.charCodeAt(pos + 1);
- if (prev === 'url' && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) {
- next = pos;
- do {
- escaped = false;
- next = css.indexOf(')', next + 1);
- if (next === -1) unclosed('bracket');
- escapePos = next;
- while (css.charCodeAt(escapePos - 1) === BACKSLASH) {
- escapePos -= 1;
- escaped = !escaped;
- }
- } while (escaped);
-
- tokens.push(['brackets', css.slice(pos, next + 1), line, pos - offset, line, next - offset]);
- pos = next;
- } else {
- next = css.indexOf(')', pos + 1);
- content = css.slice(pos, next + 1);
-
- if (next === -1 || RE_BAD_BRACKET.test(content)) {
- tokens.push(['(', '(', line, pos - offset]);
- } else {
- tokens.push(['brackets', content, line, pos - offset, line, next - offset]);
- pos = next;
- }
- }
-
- break;
-
- case CLOSE_PARENTHESES:
- tokens.push([')', ')', line, pos - offset]);
- break;
-
- case SINGLE_QUOTE:
- case DOUBLE_QUOTE:
- quote = code === SINGLE_QUOTE ? '\'' : '"';
- next = pos;
- do {
- escaped = false;
- next = css.indexOf(quote, next + 1);
- if (next === -1) unclosed('quote');
- escapePos = next;
- while (css.charCodeAt(escapePos - 1) === BACKSLASH) {
- escapePos -= 1;
- escaped = !escaped;
- }
- } while (escaped);
-
- content = css.slice(pos, next + 1);
- lines = content.split('\n');
- last = lines.length - 1;
-
- if (last > 0) {
- nextLine = line + last;
- nextOffset = next - lines[last].length;
- } else {
- nextLine = line;
- nextOffset = offset;
- }
-
- tokens.push(['string', css.slice(pos, next + 1), line, pos - offset, nextLine, next - nextOffset]);
-
- offset = nextOffset;
- line = nextLine;
- pos = next;
- break;
-
- case AT:
- RE_AT_END.lastIndex = pos + 1;
- RE_AT_END.test(css);
- if (RE_AT_END.lastIndex === 0) {
- next = css.length - 1;
- } else {
- next = RE_AT_END.lastIndex - 2;
- }
- tokens.push(['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]);
- pos = next;
- break;
-
- case BACKSLASH:
- next = pos;
- escape = true;
-
- nextLine = line;
-
- while (css.charCodeAt(next + 1) === BACKSLASH) {
- next += 1;
- escape = !escape;
- }
- code = css.charCodeAt(next + 1);
- if (escape) {
- if (code === CR && css.charCodeAt(next + 2) === NEWLINE) {
- next += 2;
- nextLine += 1;
- nextOffset = next;
- } else if (code === CR || code === NEWLINE || code === FEED) {
- next += 1;
- nextLine += 1;
- nextOffset = next;
- } else {
- next += 1;
- }
- }
- tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]);
- if (nextLine !== line) {
- line = nextLine;
- offset = nextOffset;
- }
- pos = next;
- break;
-
- default:
- n = css.charCodeAt(pos + 1);
-
- if (code === SLASH && n === ASTERICK) {
- next = css.indexOf('*/', pos + 2) + 1;
- if (next === 0) unclosed('comment');
-
- content = css.slice(pos, next + 1);
- lines = content.split('\n');
- last = lines.length - 1;
-
- if (last > 0) {
- nextLine = line + last;
- nextOffset = next - lines[last].length;
- } else {
- nextLine = line;
- nextOffset = offset;
- }
-
- tokens.push(['comment', content, line, pos - offset, nextLine, next - nextOffset]);
-
- offset = nextOffset;
- line = nextLine;
- pos = next;
- } else if (code === SLASH && n === SLASH) {
- RE_NEW_LINE.lastIndex = pos + 1;
- RE_NEW_LINE.test(css);
- if (RE_NEW_LINE.lastIndex === 0) {
- next = css.length - 1;
- } else {
- next = RE_NEW_LINE.lastIndex - 2;
- }
-
- content = css.slice(pos, next + 1);
-
- tokens.push(['comment', content, line, pos - offset, line, next - offset, 'inline']);
-
- pos = next;
- } else {
- RE_WORD_END.lastIndex = pos + 1;
- RE_WORD_END.test(css);
- if (RE_WORD_END.lastIndex === 0) {
- next = css.length - 1;
- } else {
- next = RE_WORD_END.lastIndex - 2;
- }
-
- tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]);
- pos = next;
- }
-
- break;
- }
-
- pos++;
- }
-
- return tokens;
-}
-module.exports = exports['default'];
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2VuaXplLmVzNiJdLCJuYW1lcyI6WyJ0b2tlbml6ZSIsIlNJTkdMRV9RVU9URSIsIkRPVUJMRV9RVU9URSIsIkJBQ0tTTEFTSCIsIlNMQVNIIiwiTkVXTElORSIsIlNQQUNFIiwiRkVFRCIsIlRBQiIsIkNSIiwiT1BFTl9QQVJFTlRIRVNFUyIsIkNMT1NFX1BBUkVOVEhFU0VTIiwiT1BFTl9DVVJMWSIsIkNMT1NFX0NVUkxZIiwiU0VNSUNPTE9OIiwiQVNURVJJQ0siLCJDT0xPTiIsIkFUIiwiQ09NTUEiLCJSRV9BVF9FTkQiLCJSRV9ORVdfTElORSIsIlJFX1dPUkRfRU5EIiwiUkVfQkFEX0JSQUNLRVQiLCJpbnB1dCIsInRva2VucyIsImNzcyIsInZhbHVlT2YiLCJjb2RlIiwibmV4dCIsInF1b3RlIiwibGluZXMiLCJsYXN0IiwiY29udGVudCIsImVzY2FwZSIsIm5leHRMaW5lIiwibmV4dE9mZnNldCIsImVzY2FwZWQiLCJlc2NhcGVQb3MiLCJwcmV2IiwibiIsImxlbmd0aCIsIm9mZnNldCIsImxpbmUiLCJwb3MiLCJ1bmNsb3NlZCIsIndoYXQiLCJlcnJvciIsImNoYXJDb2RlQXQiLCJwdXNoIiwic2xpY2UiLCJpbmRleE9mIiwidGVzdCIsInNwbGl0IiwibGFzdEluZGV4Il0sIm1hcHBpbmdzIjoiOzs7a0JBd0J3QkEsUTtBQXhCeEIsSUFBTUMsaUJBQU47QUFDQSxJQUFNQyxpQkFBTjtBQUNBLElBQU1DLGNBQU47QUFDQSxJQUFNQyxVQUFOO0FBQ0EsSUFBTUMsWUFBTjtBQUNBLElBQU1DLFVBQU47QUFDQSxJQUFNQyxTQUFOO0FBQ0EsSUFBTUMsT0FBTjtBQUNBLElBQU1DLE9BQU47QUFDQSxJQUFNQyxxQkFBTjtBQUNBLElBQU1DLHNCQUFOO0FBQ0EsSUFBTUMsZ0JBQU47QUFDQSxJQUFNQyxpQkFBTjtBQUNBLElBQU1DLGNBQU47QUFDQSxJQUFNQyxhQUFOO0FBQ0EsSUFBTUMsVUFBTjtBQUNBLElBQU1DLE9BQU47QUFDQSxJQUFNQyxVQUFOOztBQUVBLElBQU1DLFlBQVksdUJBQWxCO0FBQ0EsSUFBTUMsY0FBYyxXQUFwQjtBQUNBLElBQU1DLGNBQWMsb0NBQXBCO0FBQ0EsSUFBTUMsaUJBQWlCLGFBQXZCOztBQUVlLFNBQVN0QixRQUFULENBQW1CdUIsS0FBbkIsRUFBMEI7QUFDdkMsTUFBSUMsU0FBUyxFQUFiO0FBQ0EsTUFBSUMsTUFBTUYsTUFBTUUsR0FBTixDQUFVQyxPQUFWLEVBQVY7O0FBRUEsTUFBSUMsYUFBSjtBQUFBLE1BQVVDLGFBQVY7QUFBQSxNQUFnQkMsY0FBaEI7QUFBQSxNQUF1QkMsY0FBdkI7QUFBQSxNQUE4QkMsYUFBOUI7QUFBQSxNQUFvQ0MsZ0JBQXBDO0FBQUEsTUFBNkNDLGVBQTdDO0FBQUEsTUFDRUMsaUJBREY7QUFBQSxNQUNZQyxtQkFEWjtBQUFBLE1BQ3dCQyxnQkFEeEI7QUFBQSxNQUNpQ0Msa0JBRGpDO0FBQUEsTUFDNENDLGFBRDVDO0FBQUEsTUFDa0RDLFVBRGxEOztBQUdBLE1BQUlDLFNBQVNmLElBQUllLE1BQWpCO0FBQ0EsTUFBSUMsU0FBUyxDQUFDLENBQWQ7QUFDQSxNQUFJQyxPQUFPLENBQVg7QUFDQSxNQUFJQyxNQUFNLENBQVY7O0FBRUEsV0FBU0MsUUFBVCxDQUFtQkMsSUFBbkIsRUFBeUI7QUFDdkIsVUFBTXRCLE1BQU11QixLQUFOLENBQVksY0FBY0QsSUFBMUIsRUFBZ0NILElBQWhDLEVBQXNDQyxNQUFNRixNQUE1QyxDQUFOO0FBQ0Q7O0FBRUQsU0FBT0UsTUFBTUgsTUFBYixFQUFxQjtBQUNuQmIsV0FBT0YsSUFBSXNCLFVBQUosQ0FBZUosR0FBZixDQUFQOztBQUVBLFFBQ0VoQixTQUFTdEIsT0FBVCxJQUNBc0IsU0FBU3BCLElBRFQsSUFFQ29CLFNBQVNsQixFQUFULElBQWVnQixJQUFJc0IsVUFBSixDQUFlSixNQUFNLENBQXJCLE1BQTRCdEMsT0FIOUMsRUFJRTtBQUNBb0MsZUFBU0UsR0FBVDtBQUNBRCxjQUFRLENBQVI7QUFDRDs7QUFFRCxZQUFRZixJQUFSO0FBQ0UsV0FBS2xCLEVBQUw7QUFDRSxZQUFJZ0IsSUFBSXNCLFVBQUosQ0FBZUosTUFBTSxDQUFyQixNQUE0QnRDLE9BQWhDLEVBQXlDO0FBQ3ZDb0MsbUJBQVNFLEdBQVQ7QUFDQUQsa0JBQVEsQ0FBUjtBQUNBQyxpQkFBTyxDQUFQO0FBQ0FuQixpQkFBT3dCLElBQVAsQ0FBWSxDQUFDLFNBQUQsRUFBWSxNQUFaLEVBQW9CTixPQUFPLENBQTNCLENBQVo7QUFDRCxTQUxELE1BS087QUFDTGxCLGlCQUFPd0IsSUFBUCxDQUFZLENBQUMsU0FBRCxFQUFZLElBQVosRUFBa0JOLE9BQU8sQ0FBekIsQ0FBWjtBQUNEO0FBQ0Q7O0FBRUYsV0FBS25DLElBQUw7QUFDQSxXQUFLRixPQUFMO0FBQ0VtQixlQUFPd0IsSUFBUCxDQUFZLENBQUMsU0FBRCxFQUFZdkIsSUFBSXdCLEtBQUosQ0FBVU4sR0FBVixFQUFlQSxNQUFNLENBQXJCLENBQVosRUFBcUNELE9BQU8sQ0FBNUMsQ0FBWjtBQUNBOztBQUVGLFdBQUtwQyxLQUFMO0FBQ0EsV0FBS0UsR0FBTDtBQUNFb0IsZUFBT2UsR0FBUDtBQUNBLFdBQUc7QUFDRGYsa0JBQVEsQ0FBUjtBQUNBRCxpQkFBT0YsSUFBSXNCLFVBQUosQ0FBZW5CLElBQWYsQ0FBUDtBQUNELFNBSEQsUUFHU0QsU0FBU3JCLEtBQVQsSUFBa0JxQixTQUFTbkIsR0FIcEM7O0FBS0FnQixlQUFPd0IsSUFBUCxDQUFZLENBQUMsT0FBRCxFQUFVdkIsSUFBSXdCLEtBQUosQ0FBVU4sR0FBVixFQUFlZixJQUFmLENBQVYsQ0FBWjtBQUNBZSxjQUFNZixPQUFPLENBQWI7QUFDQTs7QUFFRixXQUFLaEIsVUFBTDtBQUNFWSxlQUFPd0IsSUFBUCxDQUFZLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBV04sSUFBWCxFQUFpQkMsTUFBTUYsTUFBdkIsQ0FBWjtBQUNBOztBQUVGLFdBQUs1QixXQUFMO0FBQ0VXLGVBQU93QixJQUFQLENBQVksQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXTixJQUFYLEVBQWlCQyxNQUFNRixNQUF2QixDQUFaO0FBQ0E7O0FBRUYsV0FBS3pCLEtBQUw7QUFDRVEsZUFBT3dCLElBQVAsQ0FBWSxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVdOLElBQVgsRUFBaUJDLE1BQU1GLE1BQXZCLENBQVo7QUFDQTs7QUFFRixXQUFLM0IsU0FBTDtBQUNFVSxlQUFPd0IsSUFBUCxDQUFZLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBV04sSUFBWCxFQUFpQkMsTUFBTUYsTUFBdkIsQ0FBWjtBQUNBOztBQUVGLFdBQUt2QixLQUFMO0FBQ0VNLGVBQU93QixJQUFQLENBQVksQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXTixJQUFYLEVBQWlCQyxNQUFNRixNQUF2QixDQUFaO0FBQ0E7O0FBRUYsV0FBSy9CLGdCQUFMO0FBQ0U0QixlQUFPZCxPQUFPZ0IsTUFBUCxHQUFnQmhCLE9BQU9BLE9BQU9nQixNQUFQLEdBQWdCLENBQXZCLEVBQTBCLENBQTFCLENBQWhCLEdBQStDLEVBQXREO0FBQ0FELFlBQUlkLElBQUlzQixVQUFKLENBQWVKLE1BQU0sQ0FBckIsQ0FBSjtBQUNBLFlBQUlMLFNBQVMsS0FBVCxJQUFrQkMsTUFBTXRDLFlBQXhCLElBQXdDc0MsTUFBTXJDLFlBQTlDLElBQ3VCcUMsTUFBTWpDLEtBRDdCLElBQ3NDaUMsTUFBTWxDLE9BRDVDLElBQ3VEa0MsTUFBTS9CLEdBRDdELElBRXVCK0IsTUFBTWhDLElBRjdCLElBRXFDZ0MsTUFBTTlCLEVBRi9DLEVBRW1EO0FBQ2pEbUIsaUJBQU9lLEdBQVA7QUFDQSxhQUFHO0FBQ0RQLHNCQUFVLEtBQVY7QUFDQVIsbUJBQU9ILElBQUl5QixPQUFKLENBQVksR0FBWixFQUFpQnRCLE9BQU8sQ0FBeEIsQ0FBUDtBQUNBLGdCQUFJQSxTQUFTLENBQUMsQ0FBZCxFQUFpQmdCLFNBQVMsU0FBVDtBQUNqQlAsd0JBQVlULElBQVo7QUFDQSxtQkFBT0gsSUFBSXNCLFVBQUosQ0FBZVYsWUFBWSxDQUEzQixNQUFrQ2xDLFNBQXpDLEVBQW9EO0FBQ2xEa0MsMkJBQWEsQ0FBYjtBQUNBRCx3QkFBVSxDQUFDQSxPQUFYO0FBQ0Q7QUFDRixXQVRELFFBU1NBLE9BVFQ7O0FBV0FaLGlCQUFPd0IsSUFBUCxDQUFZLENBQUMsVUFBRCxFQUFhdkIsSUFBSXdCLEtBQUosQ0FBVU4sR0FBVixFQUFlZixPQUFPLENBQXRCLENBQWIsRUFDVmMsSUFEVSxFQUNKQyxNQUFNRixNQURGLEVBRVZDLElBRlUsRUFFSmQsT0FBT2EsTUFGSCxDQUFaO0FBSUFFLGdCQUFNZixJQUFOO0FBQ0QsU0FwQkQsTUFvQk87QUFDTEEsaUJBQU9ILElBQUl5QixPQUFKLENBQVksR0FBWixFQUFpQlAsTUFBTSxDQUF2QixDQUFQO0FBQ0FYLG9CQUFVUCxJQUFJd0IsS0FBSixDQUFVTixHQUFWLEVBQWVmLE9BQU8sQ0FBdEIsQ0FBVjs7QUFFQSxjQUFJQSxTQUFTLENBQUMsQ0FBVixJQUFlTixlQUFlNkIsSUFBZixDQUFvQm5CLE9BQXBCLENBQW5CLEVBQWlEO0FBQy9DUixtQkFBT3dCLElBQVAsQ0FBWSxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVdOLElBQVgsRUFBaUJDLE1BQU1GLE1BQXZCLENBQVo7QUFDRCxXQUZELE1BRU87QUFDTGpCLG1CQUFPd0IsSUFBUCxDQUFZLENBQUMsVUFBRCxFQUFhaEIsT0FBYixFQUNWVSxJQURVLEVBQ0pDLE1BQU1GLE1BREYsRUFFVkMsSUFGVSxFQUVKZCxPQUFPYSxNQUZILENBQVo7QUFJQUUsa0JBQU1mLElBQU47QUFDRDtBQUNGOztBQUVEOztBQUVGLFdBQUtqQixpQkFBTDtBQUNFYSxlQUFPd0IsSUFBUCxDQUFZLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBV04sSUFBWCxFQUFpQkMsTUFBTUYsTUFBdkIsQ0FBWjtBQUNBOztBQUVGLFdBQUt4QyxZQUFMO0FBQ0EsV0FBS0MsWUFBTDtBQUNFMkIsZ0JBQVFGLFNBQVMxQixZQUFULEdBQXdCLElBQXhCLEdBQStCLEdBQXZDO0FBQ0EyQixlQUFPZSxHQUFQO0FBQ0EsV0FBRztBQUNEUCxvQkFBVSxLQUFWO0FBQ0FSLGlCQUFPSCxJQUFJeUIsT0FBSixDQUFZckIsS0FBWixFQUFtQkQsT0FBTyxDQUExQixDQUFQO0FBQ0EsY0FBSUEsU0FBUyxDQUFDLENBQWQsRUFBaUJnQixTQUFTLE9BQVQ7QUFDakJQLHNCQUFZVCxJQUFaO0FBQ0EsaUJBQU9ILElBQUlzQixVQUFKLENBQWVWLFlBQVksQ0FBM0IsTUFBa0NsQyxTQUF6QyxFQUFvRDtBQUNsRGtDLHlCQUFhLENBQWI7QUFDQUQsc0JBQVUsQ0FBQ0EsT0FBWDtBQUNEO0FBQ0YsU0FURCxRQVNTQSxPQVRUOztBQVdBSixrQkFBVVAsSUFBSXdCLEtBQUosQ0FBVU4sR0FBVixFQUFlZixPQUFPLENBQXRCLENBQVY7QUFDQUUsZ0JBQVFFLFFBQVFvQixLQUFSLENBQWMsSUFBZCxDQUFSO0FBQ0FyQixlQUFPRCxNQUFNVSxNQUFOLEdBQWUsQ0FBdEI7O0FBRUEsWUFBSVQsT0FBTyxDQUFYLEVBQWM7QUFDWkcscUJBQVdRLE9BQU9YLElBQWxCO0FBQ0FJLHVCQUFhUCxPQUFPRSxNQUFNQyxJQUFOLEVBQVlTLE1BQWhDO0FBQ0QsU0FIRCxNQUdPO0FBQ0xOLHFCQUFXUSxJQUFYO0FBQ0FQLHVCQUFhTSxNQUFiO0FBQ0Q7O0FBRURqQixlQUFPd0IsSUFBUCxDQUFZLENBQUMsUUFBRCxFQUFXdkIsSUFBSXdCLEtBQUosQ0FBVU4sR0FBVixFQUFlZixPQUFPLENBQXRCLENBQVgsRUFDVmMsSUFEVSxFQUNKQyxNQUFNRixNQURGLEVBRVZQLFFBRlUsRUFFQU4sT0FBT08sVUFGUCxDQUFaOztBQUtBTSxpQkFBU04sVUFBVDtBQUNBTyxlQUFPUixRQUFQO0FBQ0FTLGNBQU1mLElBQU47QUFDQTs7QUFFRixXQUFLWCxFQUFMO0FBQ0VFLGtCQUFVa0MsU0FBVixHQUFzQlYsTUFBTSxDQUE1QjtBQUNBeEIsa0JBQVVnQyxJQUFWLENBQWUxQixHQUFmO0FBQ0EsWUFBSU4sVUFBVWtDLFNBQVYsS0FBd0IsQ0FBNUIsRUFBK0I7QUFDN0J6QixpQkFBT0gsSUFBSWUsTUFBSixHQUFhLENBQXBCO0FBQ0QsU0FGRCxNQUVPO0FBQ0xaLGlCQUFPVCxVQUFVa0MsU0FBVixHQUFzQixDQUE3QjtBQUNEO0FBQ0Q3QixlQUFPd0IsSUFBUCxDQUFZLENBQUMsU0FBRCxFQUFZdkIsSUFBSXdCLEtBQUosQ0FBVU4sR0FBVixFQUFlZixPQUFPLENBQXRCLENBQVosRUFDVmMsSUFEVSxFQUNKQyxNQUFNRixNQURGLEVBRVZDLElBRlUsRUFFSmQsT0FBT2EsTUFGSCxDQUFaO0FBSUFFLGNBQU1mLElBQU47QUFDQTs7QUFFRixXQUFLekIsU0FBTDtBQUNFeUIsZUFBT2UsR0FBUDtBQUNBVixpQkFBUyxJQUFUOztBQUVBQyxtQkFBV1EsSUFBWDs7QUFFQSxlQUFPakIsSUFBSXNCLFVBQUosQ0FBZW5CLE9BQU8sQ0FBdEIsTUFBNkJ6QixTQUFwQyxFQUErQztBQUM3Q3lCLGtCQUFRLENBQVI7QUFDQUssbUJBQVMsQ0FBQ0EsTUFBVjtBQUNEO0FBQ0ROLGVBQU9GLElBQUlzQixVQUFKLENBQWVuQixPQUFPLENBQXRCLENBQVA7QUFDQSxZQUFJSyxNQUFKLEVBQVk7QUFDVixjQUFJTixTQUFTbEIsRUFBVCxJQUFlZ0IsSUFBSXNCLFVBQUosQ0FBZW5CLE9BQU8sQ0FBdEIsTUFBNkJ2QixPQUFoRCxFQUF5RDtBQUN2RHVCLG9CQUFRLENBQVI7QUFDQU0sd0JBQVksQ0FBWjtBQUNBQyx5QkFBYVAsSUFBYjtBQUNELFdBSkQsTUFJTyxJQUFJRCxTQUFTbEIsRUFBVCxJQUFla0IsU0FBU3RCLE9BQXhCLElBQW1Dc0IsU0FBU3BCLElBQWhELEVBQXNEO0FBQzNEcUIsb0JBQVEsQ0FBUjtBQUNBTSx3QkFBWSxDQUFaO0FBQ0FDLHlCQUFhUCxJQUFiO0FBQ0QsV0FKTSxNQUlBO0FBQ0xBLG9CQUFRLENBQVI7QUFDRDtBQUNGO0FBQ0RKLGVBQU93QixJQUFQLENBQVksQ0FBQyxNQUFELEVBQVN2QixJQUFJd0IsS0FBSixDQUFVTixHQUFWLEVBQWVmLE9BQU8sQ0FBdEIsQ0FBVCxFQUNWYyxJQURVLEVBQ0pDLE1BQU1GLE1BREYsRUFFVkMsSUFGVSxFQUVKZCxPQUFPYSxNQUZILENBQVo7QUFJQSxZQUFJUCxhQUFhUSxJQUFqQixFQUF1QjtBQUNyQkEsaUJBQU9SLFFBQVA7QUFDQU8sbUJBQVNOLFVBQVQ7QUFDRDtBQUNEUSxjQUFNZixJQUFOO0FBQ0E7O0FBRUY7QUFDRVcsWUFBSWQsSUFBSXNCLFVBQUosQ0FBZUosTUFBTSxDQUFyQixDQUFKOztBQUVBLFlBQUloQixTQUFTdkIsS0FBVCxJQUFrQm1DLE1BQU14QixRQUE1QixFQUFzQztBQUNwQ2EsaUJBQU9ILElBQUl5QixPQUFKLENBQVksSUFBWixFQUFrQlAsTUFBTSxDQUF4QixJQUE2QixDQUFwQztBQUNBLGNBQUlmLFNBQVMsQ0FBYixFQUFnQmdCLFNBQVMsU0FBVDs7QUFFaEJaLG9CQUFVUCxJQUFJd0IsS0FBSixDQUFVTixHQUFWLEVBQWVmLE9BQU8sQ0FBdEIsQ0FBVjtBQUNBRSxrQkFBUUUsUUFBUW9CLEtBQVIsQ0FBYyxJQUFkLENBQVI7QUFDQXJCLGlCQUFPRCxNQUFNVSxNQUFOLEdBQWUsQ0FBdEI7O0FBRUEsY0FBSVQsT0FBTyxDQUFYLEVBQWM7QUFDWkcsdUJBQVdRLE9BQU9YLElBQWxCO0FBQ0FJLHlCQUFhUCxPQUFPRSxNQUFNQyxJQUFOLEVBQVlTLE1BQWhDO0FBQ0QsV0FIRCxNQUdPO0FBQ0xOLHVCQUFXUSxJQUFYO0FBQ0FQLHlCQUFhTSxNQUFiO0FBQ0Q7O0FBRURqQixpQkFBT3dCLElBQVAsQ0FBWSxDQUFDLFNBQUQsRUFBWWhCLE9BQVosRUFDVlUsSUFEVSxFQUNKQyxNQUFNRixNQURGLEVBRVZQLFFBRlUsRUFFQU4sT0FBT08sVUFGUCxDQUFaOztBQUtBTSxtQkFBU04sVUFBVDtBQUNBTyxpQkFBT1IsUUFBUDtBQUNBUyxnQkFBTWYsSUFBTjtBQUNELFNBeEJELE1Bd0JPLElBQUlELFNBQVN2QixLQUFULElBQWtCbUMsTUFBTW5DLEtBQTVCLEVBQW1DO0FBQ3hDZ0Isc0JBQVlpQyxTQUFaLEdBQXdCVixNQUFNLENBQTlCO0FBQ0F2QixzQkFBWStCLElBQVosQ0FBaUIxQixHQUFqQjtBQUNBLGNBQUlMLFlBQVlpQyxTQUFaLEtBQTBCLENBQTlCLEVBQWlDO0FBQy9CekIsbUJBQU9ILElBQUllLE1BQUosR0FBYSxDQUFwQjtBQUNELFdBRkQsTUFFTztBQUNMWixtQkFBT1IsWUFBWWlDLFNBQVosR0FBd0IsQ0FBL0I7QUFDRDs7QUFFRHJCLG9CQUFVUCxJQUFJd0IsS0FBSixDQUFVTixHQUFWLEVBQWVmLE9BQU8sQ0FBdEIsQ0FBVjs7QUFFQUosaUJBQU93QixJQUFQLENBQVksQ0FBQyxTQUFELEVBQVloQixPQUFaLEVBQ1ZVLElBRFUsRUFDSkMsTUFBTUYsTUFERixFQUVWQyxJQUZVLEVBRUpkLE9BQU9hLE1BRkgsRUFHVixRQUhVLENBQVo7O0FBTUFFLGdCQUFNZixJQUFOO0FBQ0QsU0FsQk0sTUFrQkE7QUFDTFAsc0JBQVlnQyxTQUFaLEdBQXdCVixNQUFNLENBQTlCO0FBQ0F0QixzQkFBWThCLElBQVosQ0FBaUIxQixHQUFqQjtBQUNBLGNBQUlKLFlBQVlnQyxTQUFaLEtBQTBCLENBQTlCLEVBQWlDO0FBQy9CekIsbUJBQU9ILElBQUllLE1BQUosR0FBYSxDQUFwQjtBQUNELFdBRkQsTUFFTztBQUNMWixtQkFBT1AsWUFBWWdDLFNBQVosR0FBd0IsQ0FBL0I7QUFDRDs7QUFFRDdCLGlCQUFPd0IsSUFBUCxDQUFZLENBQUMsTUFBRCxFQUFTdkIsSUFBSXdCLEtBQUosQ0FBVU4sR0FBVixFQUFlZixPQUFPLENBQXRCLENBQVQsRUFDVmMsSUFEVSxFQUNKQyxNQUFNRixNQURGLEVBRVZDLElBRlUsRUFFSmQsT0FBT2EsTUFGSCxDQUFaO0FBSUFFLGdCQUFNZixJQUFOO0FBQ0Q7O0FBRUQ7QUFqUEo7O0FBb1BBZTtBQUNEOztBQUVELFNBQU9uQixNQUFQO0FBQ0QiLCJmaWxlIjoidG9rZW5pemUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTSU5HTEVfUVVPVEUgPSAnXFwnJy5jaGFyQ29kZUF0KDApXG5jb25zdCBET1VCTEVfUVVPVEUgPSAnXCInLmNoYXJDb2RlQXQoMClcbmNvbnN0IEJBQ0tTTEFTSCA9ICdcXFxcJy5jaGFyQ29kZUF0KDApXG5jb25zdCBTTEFTSCA9ICcvJy5jaGFyQ29kZUF0KDApXG5jb25zdCBORVdMSU5FID0gJ1xcbicuY2hhckNvZGVBdCgwKVxuY29uc3QgU1BBQ0UgPSAnICcuY2hhckNvZGVBdCgwKVxuY29uc3QgRkVFRCA9ICdcXGYnLmNoYXJDb2RlQXQoMClcbmNvbnN0IFRBQiA9ICdcXHQnLmNoYXJDb2RlQXQoMClcbmNvbnN0IENSID0gJ1xccicuY2hhckNvZGVBdCgwKVxuY29uc3QgT1BFTl9QQVJFTlRIRVNFUyA9ICcoJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDTE9TRV9QQVJFTlRIRVNFUyA9ICcpJy5jaGFyQ29kZUF0KDApXG5jb25zdCBPUEVOX0NVUkxZID0gJ3snLmNoYXJDb2RlQXQoMClcbmNvbnN0IENMT1NFX0NVUkxZID0gJ30nLmNoYXJDb2RlQXQoMClcbmNvbnN0IFNFTUlDT0xPTiA9ICc7Jy5jaGFyQ29kZUF0KDApXG5jb25zdCBBU1RFUklDSyA9ICcqJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDT0xPTiA9ICc6Jy5jaGFyQ29kZUF0KDApXG5jb25zdCBBVCA9ICdAJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDT01NQSA9ICcsJy5jaGFyQ29kZUF0KDApXG5cbmNvbnN0IFJFX0FUX0VORCA9IC9bIFxcblxcdFxcclxcZnsoKSdcIlxcXFw7L10vZ1xuY29uc3QgUkVfTkVXX0xJTkUgPSAvW1xcclxcZlxcbl0vZ1xuY29uc3QgUkVfV09SRF9FTkQgPSAvWyBcXG5cXHRcXHJcXGYoKXt9OjtAISdcIlxcXFwsXXxcXC8oPz1cXCopL2dcbmNvbnN0IFJFX0JBRF9CUkFDS0VUID0gLy5bXFxcXC8oXCInXFxuXS9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9rZW5pemUgKGlucHV0KSB7XG4gIGxldCB0b2tlbnMgPSBbXVxuICBsZXQgY3NzID0gaW5wdXQuY3NzLnZhbHVlT2YoKVxuXG4gIGxldCBjb2RlLCBuZXh0LCBxdW90ZSwgbGluZXMsIGxhc3QsIGNvbnRlbnQsIGVzY2FwZSxcbiAgICBuZXh0TGluZSwgbmV4dE9mZnNldCwgZXNjYXBlZCwgZXNjYXBlUG9zLCBwcmV2LCBuXG5cbiAgbGV0IGxlbmd0aCA9IGNzcy5sZW5ndGhcbiAgbGV0IG9mZnNldCA9IC0xXG4gIGxldCBsaW5lID0gMVxuICBsZXQgcG9zID0gMFxuXG4gIGZ1bmN0aW9uIHVuY2xvc2VkICh3aGF0KSB7XG4gICAgdGhyb3cgaW5wdXQuZXJyb3IoJ1VuY2xvc2VkICcgKyB3aGF0LCBsaW5lLCBwb3MgLSBvZmZzZXQpXG4gIH1cblxuICB3aGlsZSAocG9zIDwgbGVuZ3RoKSB7XG4gICAgY29kZSA9IGNzcy5jaGFyQ29kZUF0KHBvcylcblxuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IE5FV0xJTkUgfHxcbiAgICAgIGNvZGUgPT09IEZFRUQgfHxcbiAgICAgIChjb2RlID09PSBDUiAmJiBjc3MuY2hhckNvZGVBdChwb3MgKyAxKSAhPT0gTkVXTElORSlcbiAgICApIHtcbiAgICAgIG9mZnNldCA9IHBvc1xuICAgICAgbGluZSArPSAxXG4gICAgfVxuXG4gICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICBjYXNlIENSOlxuICAgICAgICBpZiAoY3NzLmNoYXJDb2RlQXQocG9zICsgMSkgPT09IE5FV0xJTkUpIHtcbiAgICAgICAgICBvZmZzZXQgPSBwb3NcbiAgICAgICAgICBsaW5lICs9IDFcbiAgICAgICAgICBwb3MgKz0gMVxuICAgICAgICAgIHRva2Vucy5wdXNoKFsnbmV3bGluZScsICdcXHJcXG4nLCBsaW5lIC0gMV0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdG9rZW5zLnB1c2goWyduZXdsaW5lJywgJ1xccicsIGxpbmUgLSAxXSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIEZFRUQ6XG4gICAgICBjYXNlIE5FV0xJTkU6XG4gICAgICAgIHRva2Vucy5wdXNoKFsnbmV3bGluZScsIGNzcy5zbGljZShwb3MsIHBvcyArIDEpLCBsaW5lIC0gMV0pXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgU1BBQ0U6XG4gICAgICBjYXNlIFRBQjpcbiAgICAgICAgbmV4dCA9IHBvc1xuICAgICAgICBkbyB7XG4gICAgICAgICAgbmV4dCArPSAxXG4gICAgICAgICAgY29kZSA9IGNzcy5jaGFyQ29kZUF0KG5leHQpXG4gICAgICAgIH0gd2hpbGUgKGNvZGUgPT09IFNQQUNFIHx8IGNvZGUgPT09IFRBQilcblxuICAgICAgICB0b2tlbnMucHVzaChbJ3NwYWNlJywgY3NzLnNsaWNlKHBvcywgbmV4dCldKVxuICAgICAgICBwb3MgPSBuZXh0IC0gMVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIE9QRU5fQ1VSTFk6XG4gICAgICAgIHRva2Vucy5wdXNoKFsneycsICd7JywgbGluZSwgcG9zIC0gb2Zmc2V0XSlcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSBDTE9TRV9DVVJMWTpcbiAgICAgICAgdG9rZW5zLnB1c2goWyd9JywgJ30nLCBsaW5lLCBwb3MgLSBvZmZzZXRdKVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIENPTE9OOlxuICAgICAgICB0b2tlbnMucHVzaChbJzonLCAnOicsIGxpbmUsIHBvcyAtIG9mZnNldF0pXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgU0VNSUNPTE9OOlxuICAgICAgICB0b2tlbnMucHVzaChbJzsnLCAnOycsIGxpbmUsIHBvcyAtIG9mZnNldF0pXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgQ09NTUE6XG4gICAgICAgIHRva2Vucy5wdXNoKFsnLCcsICcsJywgbGluZSwgcG9zIC0gb2Zmc2V0XSlcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSBPUEVOX1BBUkVOVEhFU0VTOlxuICAgICAgICBwcmV2ID0gdG9rZW5zLmxlbmd0aCA/IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV1bMV0gOiAnJ1xuICAgICAgICBuID0gY3NzLmNoYXJDb2RlQXQocG9zICsgMSlcbiAgICAgICAgaWYgKHByZXYgPT09ICd1cmwnICYmIG4gIT09IFNJTkdMRV9RVU9URSAmJiBuICE9PSBET1VCTEVfUVVPVEUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAhPT0gU1BBQ0UgJiYgbiAhPT0gTkVXTElORSAmJiBuICE9PSBUQUIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAhPT0gRkVFRCAmJiBuICE9PSBDUikge1xuICAgICAgICAgIG5leHQgPSBwb3NcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBlc2NhcGVkID0gZmFsc2VcbiAgICAgICAgICAgIG5leHQgPSBjc3MuaW5kZXhPZignKScsIG5leHQgKyAxKVxuICAgICAgICAgICAgaWYgKG5leHQgPT09IC0xKSB1bmNsb3NlZCgnYnJhY2tldCcpXG4gICAgICAgICAgICBlc2NhcGVQb3MgPSBuZXh0XG4gICAgICAgICAgICB3aGlsZSAoY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCkge1xuICAgICAgICAgICAgICBlc2NhcGVQb3MgLT0gMVxuICAgICAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IHdoaWxlIChlc2NhcGVkKVxuXG4gICAgICAgICAgdG9rZW5zLnB1c2goWydicmFja2V0cycsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgIGxpbmUsIHBvcyAtIG9mZnNldCxcbiAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICBdKVxuICAgICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXh0ID0gY3NzLmluZGV4T2YoJyknLCBwb3MgKyAxKVxuICAgICAgICAgIGNvbnRlbnQgPSBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSlcblxuICAgICAgICAgIGlmIChuZXh0ID09PSAtMSB8fCBSRV9CQURfQlJBQ0tFVC50ZXN0KGNvbnRlbnQpKSB7XG4gICAgICAgICAgICB0b2tlbnMucHVzaChbJygnLCAnKCcsIGxpbmUsIHBvcyAtIG9mZnNldF0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRva2Vucy5wdXNoKFsnYnJhY2tldHMnLCBjb250ZW50LFxuICAgICAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBwb3MgPSBuZXh0XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSBDTE9TRV9QQVJFTlRIRVNFUzpcbiAgICAgICAgdG9rZW5zLnB1c2goWycpJywgJyknLCBsaW5lLCBwb3MgLSBvZmZzZXRdKVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIFNJTkdMRV9RVU9URTpcbiAgICAgIGNhc2UgRE9VQkxFX1FVT1RFOlxuICAgICAgICBxdW90ZSA9IGNvZGUgPT09IFNJTkdMRV9RVU9URSA/ICdcXCcnIDogJ1wiJ1xuICAgICAgICBuZXh0ID0gcG9zXG4gICAgICAgIGRvIHtcbiAgICAgICAgICBlc2NhcGVkID0gZmFsc2VcbiAgICAgICAgICBuZXh0ID0gY3NzLmluZGV4T2YocXVvdGUsIG5leHQgKyAxKVxuICAgICAgICAgIGlmIChuZXh0ID09PSAtMSkgdW5jbG9zZWQoJ3F1b3RlJylcbiAgICAgICAgICBlc2NhcGVQb3MgPSBuZXh0XG4gICAgICAgICAgd2hpbGUgKGNzcy5jaGFyQ29kZUF0KGVzY2FwZVBvcyAtIDEpID09PSBCQUNLU0xBU0gpIHtcbiAgICAgICAgICAgIGVzY2FwZVBvcyAtPSAxXG4gICAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWRcbiAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKGVzY2FwZWQpXG5cbiAgICAgICAgY29udGVudCA9IGNzcy5zbGljZShwb3MsIG5leHQgKyAxKVxuICAgICAgICBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpXG4gICAgICAgIGxhc3QgPSBsaW5lcy5sZW5ndGggLSAxXG5cbiAgICAgICAgaWYgKGxhc3QgPiAwKSB7XG4gICAgICAgICAgbmV4dExpbmUgPSBsaW5lICsgbGFzdFxuICAgICAgICAgIG5leHRPZmZzZXQgPSBuZXh0IC0gbGluZXNbbGFzdF0ubGVuZ3RoXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dExpbmUgPSBsaW5lXG4gICAgICAgICAgbmV4dE9mZnNldCA9IG9mZnNldFxuICAgICAgICB9XG5cbiAgICAgICAgdG9rZW5zLnB1c2goWydzdHJpbmcnLCBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSksXG4gICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgIG5leHRMaW5lLCBuZXh0IC0gbmV4dE9mZnNldFxuICAgICAgICBdKVxuXG4gICAgICAgIG9mZnNldCA9IG5leHRPZmZzZXRcbiAgICAgICAgbGluZSA9IG5leHRMaW5lXG4gICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSBBVDpcbiAgICAgICAgUkVfQVRfRU5ELmxhc3RJbmRleCA9IHBvcyArIDFcbiAgICAgICAgUkVfQVRfRU5ELnRlc3QoY3NzKVxuICAgICAgICBpZiAoUkVfQVRfRU5ELmxhc3RJbmRleCA9PT0gMCkge1xuICAgICAgICAgIG5leHQgPSBjc3MubGVuZ3RoIC0gMVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5leHQgPSBSRV9BVF9FTkQubGFzdEluZGV4IC0gMlxuICAgICAgICB9XG4gICAgICAgIHRva2Vucy5wdXNoKFsnYXQtd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICBdKVxuICAgICAgICBwb3MgPSBuZXh0XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgQkFDS1NMQVNIOlxuICAgICAgICBuZXh0ID0gcG9zXG4gICAgICAgIGVzY2FwZSA9IHRydWVcblxuICAgICAgICBuZXh0TGluZSA9IGxpbmVcblxuICAgICAgICB3aGlsZSAoY3NzLmNoYXJDb2RlQXQobmV4dCArIDEpID09PSBCQUNLU0xBU0gpIHtcbiAgICAgICAgICBuZXh0ICs9IDFcbiAgICAgICAgICBlc2NhcGUgPSAhZXNjYXBlXG4gICAgICAgIH1cbiAgICAgICAgY29kZSA9IGNzcy5jaGFyQ29kZUF0KG5leHQgKyAxKVxuICAgICAgICBpZiAoZXNjYXBlKSB7XG4gICAgICAgICAgaWYgKGNvZGUgPT09IENSICYmIGNzcy5jaGFyQ29kZUF0KG5leHQgKyAyKSA9PT0gTkVXTElORSkge1xuICAgICAgICAgICAgbmV4dCArPSAyXG4gICAgICAgICAgICBuZXh0TGluZSArPSAxXG4gICAgICAgICAgICBuZXh0T2Zmc2V0ID0gbmV4dFxuICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gQ1IgfHwgY29kZSA9PT0gTkVXTElORSB8fCBjb2RlID09PSBGRUVEKSB7XG4gICAgICAgICAgICBuZXh0ICs9IDFcbiAgICAgICAgICAgIG5leHRMaW5lICs9IDFcbiAgICAgICAgICAgIG5leHRPZmZzZXQgPSBuZXh0XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHQgKz0gMVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0b2tlbnMucHVzaChbJ3dvcmQnLCBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSksXG4gICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgXSlcbiAgICAgICAgaWYgKG5leHRMaW5lICE9PSBsaW5lKSB7XG4gICAgICAgICAgbGluZSA9IG5leHRMaW5lXG4gICAgICAgICAgb2Zmc2V0ID0gbmV4dE9mZnNldFxuICAgICAgICB9XG4gICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgYnJlYWtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbiA9IGNzcy5jaGFyQ29kZUF0KHBvcyArIDEpXG5cbiAgICAgICAgaWYgKGNvZGUgPT09IFNMQVNIICYmIG4gPT09IEFTVEVSSUNLKSB7XG4gICAgICAgICAgbmV4dCA9IGNzcy5pbmRleE9mKCcqLycsIHBvcyArIDIpICsgMVxuICAgICAgICAgIGlmIChuZXh0ID09PSAwKSB1bmNsb3NlZCgnY29tbWVudCcpXG5cbiAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpXG4gICAgICAgICAgbGluZXMgPSBjb250ZW50LnNwbGl0KCdcXG4nKVxuICAgICAgICAgIGxhc3QgPSBsaW5lcy5sZW5ndGggLSAxXG5cbiAgICAgICAgICBpZiAobGFzdCA+IDApIHtcbiAgICAgICAgICAgIG5leHRMaW5lID0gbGluZSArIGxhc3RcbiAgICAgICAgICAgIG5leHRPZmZzZXQgPSBuZXh0IC0gbGluZXNbbGFzdF0ubGVuZ3RoXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHRMaW5lID0gbGluZVxuICAgICAgICAgICAgbmV4dE9mZnNldCA9IG9mZnNldFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRva2Vucy5wdXNoKFsnY29tbWVudCcsIGNvbnRlbnQsXG4gICAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgICBuZXh0TGluZSwgbmV4dCAtIG5leHRPZmZzZXRcbiAgICAgICAgICBdKVxuXG4gICAgICAgICAgb2Zmc2V0ID0gbmV4dE9mZnNldFxuICAgICAgICAgIGxpbmUgPSBuZXh0TGluZVxuICAgICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgfSBlbHNlIGlmIChjb2RlID09PSBTTEFTSCAmJiBuID09PSBTTEFTSCkge1xuICAgICAgICAgIFJFX05FV19MSU5FLmxhc3RJbmRleCA9IHBvcyArIDFcbiAgICAgICAgICBSRV9ORVdfTElORS50ZXN0KGNzcylcbiAgICAgICAgICBpZiAoUkVfTkVXX0xJTkUubGFzdEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICBuZXh0ID0gY3NzLmxlbmd0aCAtIDFcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV4dCA9IFJFX05FV19MSU5FLmxhc3RJbmRleCAtIDJcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpXG5cbiAgICAgICAgICB0b2tlbnMucHVzaChbJ2NvbW1lbnQnLCBjb250ZW50LFxuICAgICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldCxcbiAgICAgICAgICAgICdpbmxpbmUnXG4gICAgICAgICAgXSlcblxuICAgICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBSRV9XT1JEX0VORC5sYXN0SW5kZXggPSBwb3MgKyAxXG4gICAgICAgICAgUkVfV09SRF9FTkQudGVzdChjc3MpXG4gICAgICAgICAgaWYgKFJFX1dPUkRfRU5ELmxhc3RJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHQgPSBSRV9XT1JEX0VORC5sYXN0SW5kZXggLSAyXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdG9rZW5zLnB1c2goWyd3b3JkJywgY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpLFxuICAgICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgIF0pXG4gICAgICAgICAgcG9zID0gbmV4dFxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBwb3MrK1xuICB9XG5cbiAgcmV0dXJuIHRva2Vuc1xufVxuIl19 \ No newline at end of file
diff --git a/assets/node_modules/supports-color/browser.js b/assets/node_modules/supports-color/browser.js
deleted file mode 100644
index 62afa3a..0000000
--- a/assets/node_modules/supports-color/browser.js
+++ /dev/null
@@ -1,5 +0,0 @@
-'use strict';
-module.exports = {
- stdout: false,
- stderr: false
-};
diff --git a/assets/node_modules/supports-color/index.js b/assets/node_modules/supports-color/index.js
deleted file mode 100644
index 1704131..0000000
--- a/assets/node_modules/supports-color/index.js
+++ /dev/null
@@ -1,131 +0,0 @@
-'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/assets/node_modules/supports-color/license b/assets/node_modules/supports-color/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/supports-color/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/supports-color/package.json b/assets/node_modules/supports-color/package.json
deleted file mode 100644
index ad199f5..0000000
--- a/assets/node_modules/supports-color/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "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/assets/node_modules/supports-color/readme.md b/assets/node_modules/supports-color/readme.md
deleted file mode 100644
index f6e4019..0000000
--- a/assets/node_modules/supports-color/readme.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# 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/assets/node_modules/svg-tags/LICENSE b/assets/node_modules/svg-tags/LICENSE
deleted file mode 100644
index 2fe3939..0000000
--- a/assets/node_modules/svg-tags/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Athan Reines.
-
-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/assets/node_modules/svg-tags/README.md b/assets/node_modules/svg-tags/README.md
deleted file mode 100644
index 9e3429d..0000000
--- a/assets/node_modules/svg-tags/README.md
+++ /dev/null
@@ -1,99 +0,0 @@
-SVG Tags
-========
-[![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coverage][coveralls-image]][coveralls-url] [![Dependencies][dependencies-image]][dependencies-url]
-
-> List of standard SVG tags.
-
-List built from the [SVG 1.1 specification](http://www.w3.org/TR/SVG/eltindex.html).
-
-
-## Installation
-
-``` bash
-$ npm install svg-tags --save
-```
-
-
-## Usage
-
-The module is simply a JSON array, so use as you would a normal JavaScript array.
-
-``` javascript
-var tags = require( 'svg-tags' );
-
-console.log( JSON.stringify( tags ) );
-/**
-* Returns:
-* [ 'a', 'altGlyph', ... ]
-*/
-
-console.log( tags.indexOf( 'desc' ) );
-// Returns [index]
-```
-
-## Examples
-
-To run the example code from the top-level application directory,
-
-``` bash
-$ node ./examples/index.js
-```
-
-
-## Tests
-
-### Unit
-
-Unit tests use the [Mocha](http://visionmedia.github.io/mocha) test framework with [Chai](http://chaijs.com) assertions. To run the tests, execute the following command in the top-level application directory:
-
-``` bash
-$ make test
-```
-
-All new feature development should have corresponding unit tests to validate correct functionality.
-
-
-### Test Coverage
-
-This repository uses [Istanbul](https://github.com/gotwarlost/istanbul) as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:
-
-``` bash
-$ make test-cov
-```
-
-Istanbul creates a `./reports/coverage` directory. To access an HTML version of the report,
-
-``` bash
-$ open reports/coverage/lcov-report/index.html
-```
-
-
-## License
-
-[MIT license](http://opensource.org/licenses/MIT).
-
-
----
-## Copyright
-
-Copyright &copy; 2014. Athan Reines.
-
-
-
-[npm-image]: http://img.shields.io/npm/v/svg-tags.svg
-[npm-url]: https://npmjs.org/package/svg-tags
-
-[travis-image]: http://img.shields.io/travis/element-io/svg-tags/master.svg
-[travis-url]: https://travis-ci.org/element-io/svg-tags
-
-[coveralls-image]: https://img.shields.io/coveralls/element-io/svg-tags/master.svg
-[coveralls-url]: https://coveralls.io/r/element-io/svg-tags?branch=master
-
-[dependencies-image]: http://img.shields.io/david/element-io/svg-tags.svg
-[dependencies-url]: https://david-dm.org/element-io/svg-tags
-
-[dev-dependencies-image]: http://img.shields.io/david/dev/element-io/svg-tags.svg
-[dev-dependencies-url]: https://david-dm.org/dev/element-io/svg-tags
-
-[github-issues-image]: http://img.shields.io/github/issues/element-io/svg-tags.svg
-[github-issues-url]: https://github.com/element-io/svg-tags/issues \ No newline at end of file
diff --git a/assets/node_modules/svg-tags/lib/index.js b/assets/node_modules/svg-tags/lib/index.js
deleted file mode 100644
index a7e9270..0000000
--- a/assets/node_modules/svg-tags/lib/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require( './svg-tags.json' ); \ No newline at end of file
diff --git a/assets/node_modules/svg-tags/lib/svg-tags.json b/assets/node_modules/svg-tags/lib/svg-tags.json
deleted file mode 100644
index d9eea5d..0000000
--- a/assets/node_modules/svg-tags/lib/svg-tags.json
+++ /dev/null
@@ -1,82 +0,0 @@
-[
- "a",
- "altGlyph",
- "altGlyphDef",
- "altGlyphItem",
- "animate",
- "animateColor",
- "animateMotion",
- "animateTransform",
- "circle",
- "clipPath",
- "color-profile",
- "cursor",
- "defs",
- "desc",
- "ellipse",
- "feBlend",
- "feColorMatrix",
- "feComponentTransfer",
- "feComposite",
- "feConvolveMatrix",
- "feDiffuseLighting",
- "feDisplacementMap",
- "feDistantLight",
- "feFlood",
- "feFuncA",
- "feFuncB",
- "feFuncG",
- "feFuncR",
- "feGaussianBlur",
- "feImage",
- "feMerge",
- "feMergeNode",
- "feMorphology",
- "feOffset",
- "fePointLight",
- "feSpecularLighting",
- "feSpotLight",
- "feTile",
- "feTurbulence",
- "filter",
- "font",
- "font-face",
- "font-face-format",
- "font-face-name",
- "font-face-src",
- "font-face-uri",
- "foreignObject",
- "g",
- "glyph",
- "glyphRef",
- "hkern",
- "image",
- "line",
- "linearGradient",
- "marker",
- "mask",
- "metadata",
- "missing-glyph",
- "mpath",
- "path",
- "pattern",
- "polygon",
- "polyline",
- "radialGradient",
- "rect",
- "script",
- "set",
- "stop",
- "style",
- "svg",
- "switch",
- "symbol",
- "text",
- "textPath",
- "title",
- "tref",
- "tspan",
- "use",
- "view",
- "vkern"
-] \ No newline at end of file
diff --git a/assets/node_modules/svg-tags/package.json b/assets/node_modules/svg-tags/package.json
deleted file mode 100644
index 604d49a..0000000
--- a/assets/node_modules/svg-tags/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "name": "svg-tags",
- "version": "1.0.0",
- "description": "List of standard SVG tags.",
- "author": {
- "name": "Athan Reines",
- "email": "kgryte@gmail.com"
- },
- "contributors": [
- {
- "name": "Athan Reines",
- "email": "kgryte@gmail.com"
- }
- ],
- "scripts": {
- "test": "./node_modules/.bin/mocha",
- "test-cov": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha --dir ./reports/coverage -- -R spec",
- "coveralls": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha --dir ./reports/coveralls/coverage --report lcovonly -- -R spec && cat ./reports/coveralls/coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./reports/coveralls"
- },
- "main": "./lib",
- "repository": {
- "type": "git",
- "url": "git://github.com/element-io/svg-tags.git"
- },
- "keywords": [
- "svg",
- "tags",
- "w3c"
- ],
- "bugs": {
- "url": "https://github.com/element-io/svg-tags/issues"
- },
- "dependencies": {},
- "devDependencies": {
- "chai": "1.x.x",
- "coveralls": "^2.11.1",
- "istanbul": "^0.3.0",
- "mocha": "1.x.x"
- },
- "licenses": [
- {
- "type": "MIT",
- "url": "http://www.opensource.org/licenses/MIT"
- }
- ]
-}
diff --git a/assets/node_modules/table/LICENSE b/assets/node_modules/table/LICENSE
deleted file mode 100644
index 6c41d45..0000000
--- a/assets/node_modules/table/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-Copyright (c) 2018, Gajus Kuizinas (http://gajus.com/)
-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 the Gajus Kuizinas (http://gajus.com/) 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 ANUARY 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/assets/node_modules/table/README.md b/assets/node_modules/table/README.md
deleted file mode 100644
index b394204..0000000
--- a/assets/node_modules/table/README.md
+++ /dev/null
@@ -1,735 +0,0 @@
-<a name="table"></a>
-# Table
-
-[![GitSpo Mentions](https://gitspo.com/badges/mentions/gajus/table?style=flat-square)](https://gitspo.com/mentions/gajus/table)
-[![Travis build status](http://img.shields.io/travis/gajus/table/master.svg?style=flat-square)](https://travis-ci.org/gajus/table)
-[![Coveralls](https://img.shields.io/coveralls/gajus/table.svg?style=flat-square)](https://coveralls.io/github/gajus/table)
-[![NPM version](http://img.shields.io/npm/v/table.svg?style=flat-square)](https://www.npmjs.org/package/table)
-[![Canonical Code Style](https://img.shields.io/badge/code%20style-canonical-blue.svg?style=flat-square)](https://github.com/gajus/canonical)
-[![Twitter Follow](https://img.shields.io/twitter/follow/kuizinas.svg?style=social&label=Follow)](https://twitter.com/kuizinas)
-
-* [Table](#table)
- * [Features](#table-features)
- * [Install](#table-install)
- * [Usage](#table-usage)
- * [Cell Content Alignment](#table-usage-cell-content-alignment)
- * [Column Width](#table-usage-column-width)
- * [Custom Border](#table-usage-custom-border)
- * [Draw Horizontal Line](#table-usage-draw-horizontal-line)
- * [Single Line Mode](#table-usage-single-line-mode)
- * [Padding Cell Content](#table-usage-padding-cell-content)
- * [Predefined Border Templates](#table-usage-predefined-border-templates)
- * [Streaming](#table-usage-streaming)
- * [Text Truncation](#table-usage-text-truncation)
- * [Text Wrapping](#table-usage-text-wrapping)
-
-
-Produces a string that represents array data in a text table.
-
-![Demo of table displaying a list of missions to the Moon.](./.README/demo.png)
-
-<a name="table-features"></a>
-## Features
-
-* Works with strings containing [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) characters.
-* Works with strings containing [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code).
-* Configurable border characters.
-* Configurable content alignment per column.
-* Configurable content padding per column.
-* Configurable column width.
-* Text wrapping.
-
-<a name="table-install"></a>
-## Install
-
-```bash
-npm install table
-
-```
-
-[![Buy Me A Coffee](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/gajus)
-[![Become a Patron](https://c5.patreon.com/external/logo/become_a_patron_button.png)](https://www.patreon.com/gajus)
-
-<a name="table-usage"></a>
-## Usage
-
-Table data is described using an array (rows) of array (cells).
-
-```js
-import {
- table
-} from 'table';
-
-// Using commonjs?
-// const {table} = require('table');
-
-let data,
- output;
-
-data = [
- ['0A', '0B', '0C'],
- ['1A', '1B', '1C'],
- ['2A', '2B', '2C']
-];
-
-/**
- * @typedef {string} table~cell
- */
-
-/**
- * @typedef {table~cell[]} table~row
- */
-
-/**
- * @typedef {Object} table~columns
- * @property {string} alignment Cell content alignment (enum: left, center, right) (default: left).
- * @property {number} width Column width (default: auto).
- * @property {number} truncate Number of characters are which the content will be truncated (default: Infinity).
- * @property {number} paddingLeft Cell content padding width left (default: 1).
- * @property {number} paddingRight Cell content padding width right (default: 1).
- */
-
-/**
- * @typedef {Object} table~border
- * @property {string} topBody
- * @property {string} topJoin
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} bottomBody
- * @property {string} bottomJoin
- * @property {string} bottomLeft
- * @property {string} bottomRight
- * @property {string} bodyLeft
- * @property {string} bodyRight
- * @property {string} bodyJoin
- * @property {string} joinBody
- * @property {string} joinLeft
- * @property {string} joinRight
- * @property {string} joinJoin
- */
-
-/**
- * Used to dynamically tell table whether to draw a line separating rows or not.
- * The default behavior is to always return true.
- *
- * @typedef {function} drawHorizontalLine
- * @param {number} index
- * @param {number} size
- * @return {boolean}
- */
-
-/**
- * @typedef {Object} table~config
- * @property {table~border} border
- * @property {table~columns[]} columns Column specific configuration.
- * @property {table~columns} columnDefault Default values for all columns. Column specific settings overwrite the default values.
- * @property {table~drawHorizontalLine} drawHorizontalLine
- */
-
-/**
- * Generates a text table.
- *
- * @param {table~row[]} rows
- * @param {table~config} config
- * @return {String}
- */
-output = table(data);
-
-console.log(output);
-```
-
-```
-╔════╤════╤════╗
-║ 0A │ 0B │ 0C ║
-╟────┼────┼────╢
-║ 1A │ 1B │ 1C ║
-╟────┼────┼────╢
-║ 2A │ 2B │ 2C ║
-╚════╧════╧════╝
-
-```
-
-
-<a name="table-usage-cell-content-alignment"></a>
-### Cell Content Alignment
-
-`{string} config.columns[{number}].alignment` property controls content horizontal alignment within a cell.
-
-Valid values are: "left", "right" and "center".
-
-```js
-let config,
- data,
- output;
-
-data = [
- ['0A', '0B', '0C'],
- ['1A', '1B', '1C'],
- ['2A', '2B', '2C']
-];
-
-config = {
- columns: {
- 0: {
- alignment: 'left',
- width: 10
- },
- 1: {
- alignment: 'center',
- width: 10
- },
- 2: {
- alignment: 'right',
- width: 10
- }
- }
-};
-
-output = table(data, config);
-
-console.log(output);
-```
-
-```
-╔════════════╤════════════╤════════════╗
-║ 0A │ 0B │ 0C ║
-╟────────────┼────────────┼────────────╢
-║ 1A │ 1B │ 1C ║
-╟────────────┼────────────┼────────────╢
-║ 2A │ 2B │ 2C ║
-╚════════════╧════════════╧════════════╝
-```
-
-<a name="table-usage-column-width"></a>
-### Column Width
-
-`{number} config.columns[{number}].width` property restricts column width to a fixed width.
-
-```js
-let data,
- output,
- options;
-
-data = [
- ['0A', '0B', '0C'],
- ['1A', '1B', '1C'],
- ['2A', '2B', '2C']
-];
-
-options = {
- columns: {
- 1: {
- width: 10
- }
- }
-};
-
-output = table(data, options);
-
-console.log(output);
-```
-
-```
-╔════╤════════════╤════╗
-║ 0A │ 0B │ 0C ║
-╟────┼────────────┼────╢
-║ 1A │ 1B │ 1C ║
-╟────┼────────────┼────╢
-║ 2A │ 2B │ 2C ║
-╚════╧════════════╧════╝
-```
-
-<a name="table-usage-custom-border"></a>
-### Custom Border
-
-`{object} config.border` property describes characters used to draw the table border.
-
-```js
-let config,
- data,
- output;
-
-data = [
- ['0A', '0B', '0C'],
- ['1A', '1B', '1C'],
- ['2A', '2B', '2C']
-];
-
-config = {
- border: {
- topBody: `─`,
- topJoin: `┬`,
- topLeft: `┌`,
- topRight: `┐`,
-
- bottomBody: `─`,
- bottomJoin: `┴`,
- bottomLeft: `└`,
- bottomRight: `┘`,
-
- bodyLeft: `│`,
- bodyRight: `│`,
- bodyJoin: `│`,
-
- joinBody: `─`,
- joinLeft: `├`,
- joinRight: `┤`,
- joinJoin: `┼`
- }
-};
-
-output = table(data, config);
-
-console.log(output);
-```
-
-```
-┌────┬────┬────┐
-│ 0A │ 0B │ 0C │
-├────┼────┼────┤
-│ 1A │ 1B │ 1C │
-├────┼────┼────┤
-│ 2A │ 2B │ 2C │
-└────┴────┴────┘
-```
-
-<a name="table-usage-draw-horizontal-line"></a>
-### Draw Horizontal Line
-
-`{function} config.drawHorizontalLine` property is a function that is called for every non-content row in the table. The result of the function `{boolean}` determines whether a row is drawn.
-
-```js
-let data,
- output,
- options;
-
-data = [
- ['0A', '0B', '0C'],
- ['1A', '1B', '1C'],
- ['2A', '2B', '2C'],
- ['3A', '3B', '3C'],
- ['4A', '4B', '4C']
-];
-
-options = {
- /**
- * @typedef {function} drawHorizontalLine
- * @param {number} index
- * @param {number} size
- * @return {boolean}
- */
- drawHorizontalLine: (index, size) => {
- return index === 0 || index === 1 || index === size - 1 || index === size;
- }
-};
-
-output = table(data, options);
-
-console.log(output);
-
-```
-
-```
-╔════╤════╤════╗
-║ 0A │ 0B │ 0C ║
-╟────┼────┼────╢
-║ 1A │ 1B │ 1C ║
-║ 2A │ 2B │ 2C ║
-║ 3A │ 3B │ 3C ║
-╟────┼────┼────╢
-║ 4A │ 4B │ 4C ║
-╚════╧════╧════╝
-
-```
-
-<a name="table-usage-single-line-mode"></a>
-### Single Line Mode
-
-Horizontal lines inside the table are not drawn.
-
-```js
-import {
- table,
- getBorderCharacters
-} from 'table';
-
-const data = [
- ['-rw-r--r--', '1', 'pandorym', 'staff', '1529', 'May 23 11:25', 'LICENSE'],
- ['-rw-r--r--', '1', 'pandorym', 'staff', '16327', 'May 23 11:58', 'README.md'],
- ['drwxr-xr-x', '76', 'pandorym', 'staff', '2432', 'May 23 12:02', 'dist'],
- ['drwxr-xr-x', '634', 'pandorym', 'staff', '20288', 'May 23 11:54', 'node_modules'],
- ['-rw-r--r--', '1,', 'pandorym', 'staff', '525688', 'May 23 11:52', 'package-lock.json'],
- ['-rw-r--r--@', '1', 'pandorym', 'staff', '2440', 'May 23 11:25', 'package.json'],
- ['drwxr-xr-x', '27', 'pandorym', 'staff', '864', 'May 23 11:25', 'src'],
- ['drwxr-xr-x', '20', 'pandorym', 'staff', '640', 'May 23 11:25', 'test'],
-];
-
-const config = {
- singleLine: true
-};
-
-const output = table(data, config);
-console.log(output);
-```
-
-```
-╔═════════════╤═════╤══════════╤═══════╤════════╤══════════════╤═══════════════════╗
-║ -rw-r--r-- │ 1 │ pandorym │ staff │ 1529 │ May 23 11:25 │ LICENSE ║
-║ -rw-r--r-- │ 1 │ pandorym │ staff │ 16327 │ May 23 11:58 │ README.md ║
-║ drwxr-xr-x │ 76 │ pandorym │ staff │ 2432 │ May 23 12:02 │ dist ║
-║ drwxr-xr-x │ 634 │ pandorym │ staff │ 20288 │ May 23 11:54 │ node_modules ║
-║ -rw-r--r-- │ 1, │ pandorym │ staff │ 525688 │ May 23 11:52 │ package-lock.json ║
-║ -rw-r--r--@ │ 1 │ pandorym │ staff │ 2440 │ May 23 11:25 │ package.json ║
-║ drwxr-xr-x │ 27 │ pandorym │ staff │ 864 │ May 23 11:25 │ src ║
-║ drwxr-xr-x │ 20 │ pandorym │ staff │ 640 │ May 23 11:25 │ test ║
-╚═════════════╧═════╧══════════╧═══════╧════════╧══════════════╧═══════════════════╝
-```
-
-<a name="table-usage-padding-cell-content"></a>
-### Padding Cell Content
-
-`{number} config.columns[{number}].paddingLeft` and `{number} config.columns[{number}].paddingRight` properties control content padding within a cell. Property value represents a number of whitespaces used to pad the content.
-
-```js
-let config,
- data,
- output;
-
-data = [
- ['0A', 'AABBCC', '0C'],
- ['1A', '1B', '1C'],
- ['2A', '2B', '2C']
-];
-
-config = {
- columns: {
- 0: {
- paddingLeft: 3
- },
- 1: {
- width: 2,
- paddingRight: 3
- }
- }
-};
-
-output = table(data, config);
-
-console.log(output);
-```
-
-```
-╔══════╤══════╤════╗
-║ 0A │ AA │ 0C ║
-║ │ BB │ ║
-║ │ CC │ ║
-╟──────┼──────┼────╢
-║ 1A │ 1B │ 1C ║
-╟──────┼──────┼────╢
-║ 2A │ 2B │ 2C ║
-╚══════╧══════╧════╝
-```
-
-<a name="table-usage-predefined-border-templates"></a>
-### Predefined Border Templates
-
-You can load one of the predefined border templates using `getBorderCharacters` function.
-
-```js
-import {
- table,
- getBorderCharacters
-} from 'table';
-
-let config,
- data;
-
-data = [
- ['0A', '0B', '0C'],
- ['1A', '1B', '1C'],
- ['2A', '2B', '2C']
-];
-
-config = {
- border: getBorderCharacters(`name of the template`)
-};
-
-table(data, config);
-```
-
-```
-# honeywell
-
-╔════╤════╤════╗
-║ 0A │ 0B │ 0C ║
-╟────┼────┼────╢
-║ 1A │ 1B │ 1C ║
-╟────┼────┼────╢
-║ 2A │ 2B │ 2C ║
-╚════╧════╧════╝
-
-# norc
-
-┌────┬────┬────┐
-│ 0A │ 0B │ 0C │
-├────┼────┼────┤
-│ 1A │ 1B │ 1C │
-├────┼────┼────┤
-│ 2A │ 2B │ 2C │
-└────┴────┴────┘
-
-# ramac (ASCII; for use in terminals that do not support Unicode characters)
-
-+----+----+----+
-| 0A | 0B | 0C |
-|----|----|----|
-| 1A | 1B | 1C |
-|----|----|----|
-| 2A | 2B | 2C |
-+----+----+----+
-
-# void (no borders; see "bordless table" section of the documentation)
-
- 0A 0B 0C
-
- 1A 1B 1C
-
- 2A 2B 2C
-
-```
-
-Raise [an issue](https://github.com/gajus/table/issues) if you'd like to contribute a new border template.
-
-<a name="table-usage-predefined-border-templates-borderless-table"></a>
-#### Borderless Table
-
-Simply using "void" border character template creates a table with a lot of unnecessary spacing.
-
-To create a more plesant to the eye table, reset the padding and remove the joining rows, e.g.
-
-```js
-let output;
-
-output = table(data, {
- border: getBorderCharacters(`void`),
- columnDefault: {
- paddingLeft: 0,
- paddingRight: 1
- },
- drawHorizontalLine: () => {
- return false
- }
-});
-
-console.log(output);
-```
-
-```
-0A 0B 0C
-1A 1B 1C
-2A 2B 2C
-```
-
-<a name="table-usage-streaming"></a>
-### Streaming
-
-`table` package exports `createStream` function used to draw a table and append rows.
-
-`createStream` requires `{number} columnDefault.width` and `{number} columnCount` configuration properties.
-
-```js
-import {
- createStream
-} from 'table';
-
-let config,
- stream;
-
-config = {
- columnDefault: {
- width: 50
- },
- columnCount: 1
-};
-
-stream = createStream(config);
-
-setInterval(() => {
- stream.write([new Date()]);
-}, 500);
-```
-
-![Streaming current date.](./.README/streaming.gif)
-
-`table` package uses ANSI escape codes to overwrite the output of the last line when a new row is printed.
-
-The underlying implementation is explained in this [Stack Overflow answer](http://stackoverflow.com/a/32938658/368691).
-
-Streaming supports all of the configuration properties and functionality of a static table (such as auto text wrapping, alignment and padding), e.g.
-
-```js
-import {
- createStream
-} from 'table';
-
-import _ from 'lodash';
-
-let config,
- stream,
- i;
-
-config = {
- columnDefault: {
- width: 50
- },
- columnCount: 3,
- columns: {
- 0: {
- width: 10,
- alignment: 'right'
- },
- 1: {
- alignment: 'center',
- },
- 2: {
- width: 10
- }
- }
-};
-
-stream = createStream(config);
-
-i = 0;
-
-setInterval(() => {
- let random;
-
- random = _.sample('abcdefghijklmnopqrstuvwxyz', _.random(1, 30)).join('');
-
- stream.write([i++, new Date(), random]);
-}, 500);
-```
-
-![Streaming random data.](./.README/streaming-random.gif)
-
-<a name="table-usage-text-truncation"></a>
-### Text Truncation
-
-To handle a content that overflows the container width, `table` package implements [text wrapping](#table-usage-text-wrapping). However, sometimes you may want to truncate content that is too long to be displayed in the table.
-
-`{number} config.columns[{number}].truncate` property (default: `Infinity`) truncates the text at the specified length.
-
-```js
-let config,
- data,
- output;
-
-data = [
- ['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pulvinar nibh sed mauris convallis dapibus. Nunc venenatis tempus nulla sit amet viverra.']
-];
-
-config = {
- columns: {
- 0: {
- width: 20,
- truncate: 100
- }
- }
-};
-
-output = table(data, config);
-
-console.log(output);
-```
-
-```
-╔══════════════════════╗
-║ Lorem ipsum dolor si ║
-║ t amet, consectetur ║
-║ adipiscing elit. Pha ║
-║ sellus pulvinar nibh ║
-║ sed mauris conva... ║
-╚══════════════════════╝
-```
-
-<a name="table-usage-text-wrapping"></a>
-### Text Wrapping
-
-`table` package implements auto text wrapping, i.e. text that has width greater than the container width will be separated into multiple lines, e.g.
-
-```js
-let config,
- data,
- output;
-
-data = [
- ['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pulvinar nibh sed mauris convallis dapibus. Nunc venenatis tempus nulla sit amet viverra.']
-];
-
-config = {
- columns: {
- 0: {
- width: 20
- }
- }
-};
-
-output = table(data, config);
-
-console.log(output);
-```
-
-```
-╔══════════════════════╗
-║ Lorem ipsum dolor si ║
-║ t amet, consectetur ║
-║ adipiscing elit. Pha ║
-║ sellus pulvinar nibh ║
-║ sed mauris convallis ║
-║ dapibus. Nunc venena ║
-║ tis tempus nulla sit ║
-║ amet viverra. ║
-╚══════════════════════╝
-```
-
-When `wrapWord` is `true` the text is broken at the nearest space or one of the special characters ("-", "_", "\", "/", ".", ",", ";"), e.g.
-
-```js
-let config,
- data,
- output;
-
-data = [
- ['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pulvinar nibh sed mauris convallis dapibus. Nunc venenatis tempus nulla sit amet viverra.']
-];
-
-config = {
- columns: {
- 0: {
- width: 20,
- wrapWord: true
- }
- }
-};
-
-output = table(data, config);
-
-console.log(output);
-```
-
-```
-╔══════════════════════╗
-║ Lorem ipsum dolor ║
-║ sit amet, ║
-║ consectetur ║
-║ adipiscing elit. ║
-║ Phasellus pulvinar ║
-║ nibh sed mauris ║
-║ convallis dapibus. ║
-║ Nunc venenatis ║
-║ tempus nulla sit ║
-║ amet viverra. ║
-╚══════════════════════╝
-
-```
-
diff --git a/assets/node_modules/table/dist/alignString.js b/assets/node_modules/table/dist/alignString.js
deleted file mode 100644
index 5d98644..0000000
--- a/assets/node_modules/table/dist/alignString.js
+++ /dev/null
@@ -1,108 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
-
-var _isString2 = _interopRequireDefault(require("lodash/isString"));
-
-var _stringWidth = _interopRequireDefault(require("string-width"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const alignments = ['left', 'right', 'center'];
-/**
- * @param {string} subject
- * @param {number} width
- * @returns {string}
- */
-
-const alignLeft = (subject, width) => {
- return subject + ' '.repeat(width);
-};
-/**
- * @param {string} subject
- * @param {number} width
- * @returns {string}
- */
-
-
-const alignRight = (subject, width) => {
- return ' '.repeat(width) + subject;
-};
-/**
- * @param {string} subject
- * @param {number} width
- * @returns {string}
- */
-
-
-const alignCenter = (subject, width) => {
- let halfWidth;
- halfWidth = width / 2;
-
- if (halfWidth % 2 === 0) {
- return ' '.repeat(halfWidth) + subject + ' '.repeat(halfWidth);
- } else {
- halfWidth = Math.floor(halfWidth);
- return ' '.repeat(halfWidth) + subject + ' '.repeat(halfWidth + 1);
- }
-};
-/**
- * Pads a string to the left and/or right to position the subject
- * text in a desired alignment within a container.
- *
- * @param {string} subject
- * @param {number} containerWidth
- * @param {string} alignment One of the valid options (left, right, center).
- * @returns {string}
- */
-
-
-const alignString = (subject, containerWidth, alignment) => {
- if (!(0, _isString2.default)(subject)) {
- throw new TypeError('Subject parameter value must be a string.');
- }
-
- if (!(0, _isNumber2.default)(containerWidth)) {
- throw new TypeError('Container width parameter value must be a number.');
- }
-
- const subjectWidth = (0, _stringWidth.default)(subject);
-
- if (subjectWidth > containerWidth) {
- // console.log('subjectWidth', subjectWidth, 'containerWidth', containerWidth, 'subject', subject);
- throw new Error('Subject parameter value width cannot be greater than the container width.');
- }
-
- if (!(0, _isString2.default)(alignment)) {
- throw new TypeError('Alignment parameter value must be a string.');
- }
-
- if (!alignments.includes(alignment)) {
- throw new Error('Alignment parameter value must be a known alignment parameter value (left, right, center).');
- }
-
- if (subjectWidth === 0) {
- return ' '.repeat(containerWidth);
- }
-
- const availableWidth = containerWidth - subjectWidth;
-
- if (alignment === 'left') {
- return alignLeft(subject, availableWidth);
- }
-
- if (alignment === 'right') {
- return alignRight(subject, availableWidth);
- }
-
- return alignCenter(subject, availableWidth);
-};
-
-var _default = alignString;
-exports.default = _default;
-//# sourceMappingURL=alignString.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/alignString.js.flow b/assets/node_modules/table/dist/alignString.js.flow
deleted file mode 100644
index f0383ff..0000000
--- a/assets/node_modules/table/dist/alignString.js.flow
+++ /dev/null
@@ -1,96 +0,0 @@
-import _ from 'lodash';
-import stringWidth from 'string-width';
-
-const alignments = [
- 'left',
- 'right',
- 'center'
-];
-
-/**
- * @param {string} subject
- * @param {number} width
- * @returns {string}
- */
-const alignLeft = (subject, width) => {
- return subject + ' '.repeat(width);
-};
-
-/**
- * @param {string} subject
- * @param {number} width
- * @returns {string}
- */
-const alignRight = (subject, width) => {
- return ' '.repeat(width) + subject;
-};
-
-/**
- * @param {string} subject
- * @param {number} width
- * @returns {string}
- */
-const alignCenter = (subject, width) => {
- let halfWidth;
-
- halfWidth = width / 2;
-
- if (halfWidth % 2 === 0) {
- return ' '.repeat(halfWidth) + subject + ' '.repeat(halfWidth);
- } else {
- halfWidth = Math.floor(halfWidth);
-
- return ' '.repeat(halfWidth) + subject + ' '.repeat(halfWidth + 1);
- }
-};
-
-/**
- * Pads a string to the left and/or right to position the subject
- * text in a desired alignment within a container.
- *
- * @param {string} subject
- * @param {number} containerWidth
- * @param {string} alignment One of the valid options (left, right, center).
- * @returns {string}
- */
-export default (subject, containerWidth, alignment) => {
- if (!_.isString(subject)) {
- throw new TypeError('Subject parameter value must be a string.');
- }
-
- if (!_.isNumber(containerWidth)) {
- throw new TypeError('Container width parameter value must be a number.');
- }
-
- const subjectWidth = stringWidth(subject);
-
- if (subjectWidth > containerWidth) {
- // console.log('subjectWidth', subjectWidth, 'containerWidth', containerWidth, 'subject', subject);
-
- throw new Error('Subject parameter value width cannot be greater than the container width.');
- }
-
- if (!_.isString(alignment)) {
- throw new TypeError('Alignment parameter value must be a string.');
- }
-
- if (!alignments.includes(alignment)) {
- throw new Error('Alignment parameter value must be a known alignment parameter value (left, right, center).');
- }
-
- if (subjectWidth === 0) {
- return ' '.repeat(containerWidth);
- }
-
- const availableWidth = containerWidth - subjectWidth;
-
- if (alignment === 'left') {
- return alignLeft(subject, availableWidth);
- }
-
- if (alignment === 'right') {
- return alignRight(subject, availableWidth);
- }
-
- return alignCenter(subject, availableWidth);
-};
diff --git a/assets/node_modules/table/dist/alignString.js.map b/assets/node_modules/table/dist/alignString.js.map
deleted file mode 100644
index 1cdd609..0000000
--- a/assets/node_modules/table/dist/alignString.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/alignString.js"],"names":["alignments","alignLeft","subject","width","repeat","alignRight","alignCenter","halfWidth","Math","floor","containerWidth","alignment","TypeError","subjectWidth","Error","includes","availableWidth"],"mappings":";;;;;;;;;;;AACA;;;;AAEA,MAAMA,UAAU,GAAG,CACjB,MADiB,EAEjB,OAFiB,EAGjB,QAHiB,CAAnB;AAMA;;;;;;AAKA,MAAMC,SAAS,GAAG,CAACC,OAAD,EAAUC,KAAV,KAAoB;AACpC,SAAOD,OAAO,GAAG,IAAIE,MAAJ,CAAWD,KAAX,CAAjB;AACD,CAFD;AAIA;;;;;;;AAKA,MAAME,UAAU,GAAG,CAACH,OAAD,EAAUC,KAAV,KAAoB;AACrC,SAAO,IAAIC,MAAJ,CAAWD,KAAX,IAAoBD,OAA3B;AACD,CAFD;AAIA;;;;;;;AAKA,MAAMI,WAAW,GAAG,CAACJ,OAAD,EAAUC,KAAV,KAAoB;AACtC,MAAII,SAAJ;AAEAA,EAAAA,SAAS,GAAGJ,KAAK,GAAG,CAApB;;AAEA,MAAII,SAAS,GAAG,CAAZ,KAAkB,CAAtB,EAAyB;AACvB,WAAO,IAAIH,MAAJ,CAAWG,SAAX,IAAwBL,OAAxB,GAAkC,IAAIE,MAAJ,CAAWG,SAAX,CAAzC;AACD,GAFD,MAEO;AACLA,IAAAA,SAAS,GAAGC,IAAI,CAACC,KAAL,CAAWF,SAAX,CAAZ;AAEA,WAAO,IAAIH,MAAJ,CAAWG,SAAX,IAAwBL,OAAxB,GAAkC,IAAIE,MAAJ,CAAWG,SAAS,GAAG,CAAvB,CAAzC;AACD;AACF,CAZD;AAcA;;;;;;;;;;;qBASgBL,O,EAASQ,c,EAAgBC,S,KAAc;AACrD,MAAI,CAAC,wBAAWT,OAAX,CAAL,EAA0B;AACxB,UAAM,IAAIU,SAAJ,CAAc,2CAAd,CAAN;AACD;;AAED,MAAI,CAAC,wBAAWF,cAAX,CAAL,EAAiC;AAC/B,UAAM,IAAIE,SAAJ,CAAc,mDAAd,CAAN;AACD;;AAED,QAAMC,YAAY,GAAG,0BAAYX,OAAZ,CAArB;;AAEA,MAAIW,YAAY,GAAGH,cAAnB,EAAmC;AACjC;AAEA,UAAM,IAAII,KAAJ,CAAU,2EAAV,CAAN;AACD;;AAED,MAAI,CAAC,wBAAWH,SAAX,CAAL,EAA4B;AAC1B,UAAM,IAAIC,SAAJ,CAAc,6CAAd,CAAN;AACD;;AAED,MAAI,CAACZ,UAAU,CAACe,QAAX,CAAoBJ,SAApB,CAAL,EAAqC;AACnC,UAAM,IAAIG,KAAJ,CAAU,4FAAV,CAAN;AACD;;AAED,MAAID,YAAY,KAAK,CAArB,EAAwB;AACtB,WAAO,IAAIT,MAAJ,CAAWM,cAAX,CAAP;AACD;;AAED,QAAMM,cAAc,GAAGN,cAAc,GAAGG,YAAxC;;AAEA,MAAIF,SAAS,KAAK,MAAlB,EAA0B;AACxB,WAAOV,SAAS,CAACC,OAAD,EAAUc,cAAV,CAAhB;AACD;;AAED,MAAIL,SAAS,KAAK,OAAlB,EAA2B;AACzB,WAAON,UAAU,CAACH,OAAD,EAAUc,cAAV,CAAjB;AACD;;AAED,SAAOV,WAAW,CAACJ,OAAD,EAAUc,cAAV,CAAlB;AACD,C","sourcesContent":["import _ from 'lodash';\nimport stringWidth from 'string-width';\n\nconst alignments = [\n 'left',\n 'right',\n 'center'\n];\n\n/**\n * @param {string} subject\n * @param {number} width\n * @returns {string}\n */\nconst alignLeft = (subject, width) => {\n return subject + ' '.repeat(width);\n};\n\n/**\n * @param {string} subject\n * @param {number} width\n * @returns {string}\n */\nconst alignRight = (subject, width) => {\n return ' '.repeat(width) + subject;\n};\n\n/**\n * @param {string} subject\n * @param {number} width\n * @returns {string}\n */\nconst alignCenter = (subject, width) => {\n let halfWidth;\n\n halfWidth = width / 2;\n\n if (halfWidth % 2 === 0) {\n return ' '.repeat(halfWidth) + subject + ' '.repeat(halfWidth);\n } else {\n halfWidth = Math.floor(halfWidth);\n\n return ' '.repeat(halfWidth) + subject + ' '.repeat(halfWidth + 1);\n }\n};\n\n/**\n * Pads a string to the left and/or right to position the subject\n * text in a desired alignment within a container.\n *\n * @param {string} subject\n * @param {number} containerWidth\n * @param {string} alignment One of the valid options (left, right, center).\n * @returns {string}\n */\nexport default (subject, containerWidth, alignment) => {\n if (!_.isString(subject)) {\n throw new TypeError('Subject parameter value must be a string.');\n }\n\n if (!_.isNumber(containerWidth)) {\n throw new TypeError('Container width parameter value must be a number.');\n }\n\n const subjectWidth = stringWidth(subject);\n\n if (subjectWidth > containerWidth) {\n // console.log('subjectWidth', subjectWidth, 'containerWidth', containerWidth, 'subject', subject);\n\n throw new Error('Subject parameter value width cannot be greater than the container width.');\n }\n\n if (!_.isString(alignment)) {\n throw new TypeError('Alignment parameter value must be a string.');\n }\n\n if (!alignments.includes(alignment)) {\n throw new Error('Alignment parameter value must be a known alignment parameter value (left, right, center).');\n }\n\n if (subjectWidth === 0) {\n return ' '.repeat(containerWidth);\n }\n\n const availableWidth = containerWidth - subjectWidth;\n\n if (alignment === 'left') {\n return alignLeft(subject, availableWidth);\n }\n\n if (alignment === 'right') {\n return alignRight(subject, availableWidth);\n }\n\n return alignCenter(subject, availableWidth);\n};\n"],"file":"alignString.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/alignTableData.js b/assets/node_modules/table/dist/alignTableData.js
deleted file mode 100644
index e01bd55..0000000
--- a/assets/node_modules/table/dist/alignTableData.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _stringWidth = _interopRequireDefault(require("string-width"));
-
-var _alignString = _interopRequireDefault(require("./alignString"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * @param {table~row[]} rows
- * @param {Object} config
- * @returns {table~row[]}
- */
-const alignTableData = (rows, config) => {
- return rows.map(cells => {
- return cells.map((value, index1) => {
- const column = config.columns[index1];
-
- if ((0, _stringWidth.default)(value) === column.width) {
- return value;
- } else {
- return (0, _alignString.default)(value, column.width, column.alignment);
- }
- });
- });
-};
-
-var _default = alignTableData;
-exports.default = _default;
-//# sourceMappingURL=alignTableData.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/alignTableData.js.flow b/assets/node_modules/table/dist/alignTableData.js.flow
deleted file mode 100644
index 8a7be7a..0000000
--- a/assets/node_modules/table/dist/alignTableData.js.flow
+++ /dev/null
@@ -1,21 +0,0 @@
-import stringWidth from 'string-width';
-import alignString from './alignString';
-
-/**
- * @param {table~row[]} rows
- * @param {Object} config
- * @returns {table~row[]}
- */
-export default (rows, config) => {
- return rows.map((cells) => {
- return cells.map((value, index1) => {
- const column = config.columns[index1];
-
- if (stringWidth(value) === column.width) {
- return value;
- } else {
- return alignString(value, column.width, column.alignment);
- }
- });
- });
-};
diff --git a/assets/node_modules/table/dist/alignTableData.js.map b/assets/node_modules/table/dist/alignTableData.js.map
deleted file mode 100644
index 183240f..0000000
--- a/assets/node_modules/table/dist/alignTableData.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/alignTableData.js"],"names":["rows","config","map","cells","value","index1","column","columns","width","alignment"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA;;;;;wBAKgBA,I,EAAMC,M,KAAW;AAC/B,SAAOD,IAAI,CAACE,GAAL,CAAUC,KAAD,IAAW;AACzB,WAAOA,KAAK,CAACD,GAAN,CAAU,CAACE,KAAD,EAAQC,MAAR,KAAmB;AAClC,YAAMC,MAAM,GAAGL,MAAM,CAACM,OAAP,CAAeF,MAAf,CAAf;;AAEA,UAAI,0BAAYD,KAAZ,MAAuBE,MAAM,CAACE,KAAlC,EAAyC;AACvC,eAAOJ,KAAP;AACD,OAFD,MAEO;AACL,eAAO,0BAAYA,KAAZ,EAAmBE,MAAM,CAACE,KAA1B,EAAiCF,MAAM,CAACG,SAAxC,CAAP;AACD;AACF,KARM,CAAP;AASD,GAVM,CAAP;AAWD,C","sourcesContent":["import stringWidth from 'string-width';\nimport alignString from './alignString';\n\n/**\n * @param {table~row[]} rows\n * @param {Object} config\n * @returns {table~row[]}\n */\nexport default (rows, config) => {\n return rows.map((cells) => {\n return cells.map((value, index1) => {\n const column = config.columns[index1];\n\n if (stringWidth(value) === column.width) {\n return value;\n } else {\n return alignString(value, column.width, column.alignment);\n }\n });\n });\n};\n"],"file":"alignTableData.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/calculateCellHeight.js b/assets/node_modules/table/dist/calculateCellHeight.js
deleted file mode 100644
index 7c11c4f..0000000
--- a/assets/node_modules/table/dist/calculateCellHeight.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _isString2 = _interopRequireDefault(require("lodash/isString"));
-
-var _wrapCell = _interopRequireDefault(require("./wrapCell"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * @param {string} value
- * @param {number} columnWidth
- * @param {boolean} useWrapWord
- * @returns {number}
- */
-const calculateCellHeight = (value, columnWidth, useWrapWord = false) => {
- if (!(0, _isString2.default)(value)) {
- throw new TypeError('Value must be a string.');
- }
-
- if (!Number.isInteger(columnWidth)) {
- throw new TypeError('Column width must be an integer.');
- }
-
- if (columnWidth < 1) {
- throw new Error('Column width must be greater than 0.');
- }
-
- return (0, _wrapCell.default)(value, columnWidth, useWrapWord).length;
-};
-
-var _default = calculateCellHeight;
-exports.default = _default;
-//# sourceMappingURL=calculateCellHeight.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/calculateCellHeight.js.flow b/assets/node_modules/table/dist/calculateCellHeight.js.flow
deleted file mode 100644
index 3eca8d7..0000000
--- a/assets/node_modules/table/dist/calculateCellHeight.js.flow
+++ /dev/null
@@ -1,24 +0,0 @@
-import _ from 'lodash';
-import wrapCell from './wrapCell';
-
-/**
- * @param {string} value
- * @param {number} columnWidth
- * @param {boolean} useWrapWord
- * @returns {number}
- */
-export default (value, columnWidth, useWrapWord = false) => {
- if (!_.isString(value)) {
- throw new TypeError('Value must be a string.');
- }
-
- if (!Number.isInteger(columnWidth)) {
- throw new TypeError('Column width must be an integer.');
- }
-
- if (columnWidth < 1) {
- throw new Error('Column width must be greater than 0.');
- }
-
- return wrapCell(value, columnWidth, useWrapWord).length;
-};
diff --git a/assets/node_modules/table/dist/calculateCellHeight.js.map b/assets/node_modules/table/dist/calculateCellHeight.js.map
deleted file mode 100644
index 982d962..0000000
--- a/assets/node_modules/table/dist/calculateCellHeight.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/calculateCellHeight.js"],"names":["value","columnWidth","useWrapWord","TypeError","Number","isInteger","Error","length"],"mappings":";;;;;;;;;AACA;;;;AAEA;;;;;;6BAMgBA,K,EAAOC,W,EAAaC,WAAW,GAAG,K,KAAU;AAC1D,MAAI,CAAC,wBAAWF,KAAX,CAAL,EAAwB;AACtB,UAAM,IAAIG,SAAJ,CAAc,yBAAd,CAAN;AACD;;AAED,MAAI,CAACC,MAAM,CAACC,SAAP,CAAiBJ,WAAjB,CAAL,EAAoC;AAClC,UAAM,IAAIE,SAAJ,CAAc,kCAAd,CAAN;AACD;;AAED,MAAIF,WAAW,GAAG,CAAlB,EAAqB;AACnB,UAAM,IAAIK,KAAJ,CAAU,sCAAV,CAAN;AACD;;AAED,SAAO,uBAASN,KAAT,EAAgBC,WAAhB,EAA6BC,WAA7B,EAA0CK,MAAjD;AACD,C","sourcesContent":["import _ from 'lodash';\nimport wrapCell from './wrapCell';\n\n/**\n * @param {string} value\n * @param {number} columnWidth\n * @param {boolean} useWrapWord\n * @returns {number}\n */\nexport default (value, columnWidth, useWrapWord = false) => {\n if (!_.isString(value)) {\n throw new TypeError('Value must be a string.');\n }\n\n if (!Number.isInteger(columnWidth)) {\n throw new TypeError('Column width must be an integer.');\n }\n\n if (columnWidth < 1) {\n throw new Error('Column width must be greater than 0.');\n }\n\n return wrapCell(value, columnWidth, useWrapWord).length;\n};\n"],"file":"calculateCellHeight.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/calculateCellWidthIndex.js b/assets/node_modules/table/dist/calculateCellWidthIndex.js
deleted file mode 100644
index a4df501..0000000
--- a/assets/node_modules/table/dist/calculateCellWidthIndex.js
+++ /dev/null
@@ -1,28 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _stringWidth = _interopRequireDefault(require("string-width"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Calculates width of each cell contents.
- *
- * @param {string[]} cells
- * @returns {number[]}
- */
-const calculateCellWidthIndex = cells => {
- return cells.map(value => {
- return Math.max(...value.split('\n').map(line => {
- return (0, _stringWidth.default)(line);
- }));
- });
-};
-
-var _default = calculateCellWidthIndex;
-exports.default = _default;
-//# sourceMappingURL=calculateCellWidthIndex.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/calculateCellWidthIndex.js.flow b/assets/node_modules/table/dist/calculateCellWidthIndex.js.flow
deleted file mode 100644
index 6e4f7a5..0000000
--- a/assets/node_modules/table/dist/calculateCellWidthIndex.js.flow
+++ /dev/null
@@ -1,17 +0,0 @@
-import stringWidth from 'string-width';
-
-/**
- * Calculates width of each cell contents.
- *
- * @param {string[]} cells
- * @returns {number[]}
- */
-export default (cells) => {
- return cells.map((value) => {
- return Math.max(
- ...value.split('\n').map((line) => {
- return stringWidth(line);
- })
- );
- });
-};
diff --git a/assets/node_modules/table/dist/calculateCellWidthIndex.js.map b/assets/node_modules/table/dist/calculateCellWidthIndex.js.map
deleted file mode 100644
index c880cd2..0000000
--- a/assets/node_modules/table/dist/calculateCellWidthIndex.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/calculateCellWidthIndex.js"],"names":["cells","map","value","Math","max","split","line"],"mappings":";;;;;;;AAAA;;;;AAEA;;;;;;gCAMgBA,K,IAAU;AACxB,SAAOA,KAAK,CAACC,GAAN,CAAWC,KAAD,IAAW;AAC1B,WAAOC,IAAI,CAACC,GAAL,CACL,GAAGF,KAAK,CAACG,KAAN,CAAY,IAAZ,EAAkBJ,GAAlB,CAAuBK,IAAD,IAAU;AACjC,aAAO,0BAAYA,IAAZ,CAAP;AACD,KAFE,CADE,CAAP;AAKD,GANM,CAAP;AAOD,C","sourcesContent":["import stringWidth from 'string-width';\n\n/**\n * Calculates width of each cell contents.\n *\n * @param {string[]} cells\n * @returns {number[]}\n */\nexport default (cells) => {\n return cells.map((value) => {\n return Math.max(\n ...value.split('\\n').map((line) => {\n return stringWidth(line);\n })\n );\n });\n};\n"],"file":"calculateCellWidthIndex.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/calculateMaximumColumnWidthIndex.js b/assets/node_modules/table/dist/calculateMaximumColumnWidthIndex.js
deleted file mode 100644
index ea5d4b9..0000000
--- a/assets/node_modules/table/dist/calculateMaximumColumnWidthIndex.js
+++ /dev/null
@@ -1,37 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _calculateCellWidthIndex = _interopRequireDefault(require("./calculateCellWidthIndex"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Produces an array of values that describe the largest value length (width) in every column.
- *
- * @param {Array[]} rows
- * @returns {number[]}
- */
-const calculateMaximumColumnWidthIndex = rows => {
- if (!rows[0]) {
- throw new Error('Dataset must have at least one row.');
- }
-
- const columns = new Array(rows[0].length).fill(0);
- rows.forEach(row => {
- const columnWidthIndex = (0, _calculateCellWidthIndex.default)(row);
- columnWidthIndex.forEach((valueWidth, index0) => {
- if (columns[index0] < valueWidth) {
- columns[index0] = valueWidth;
- }
- });
- });
- return columns;
-};
-
-var _default = calculateMaximumColumnWidthIndex;
-exports.default = _default;
-//# sourceMappingURL=calculateMaximumColumnWidthIndex.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.flow b/assets/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.flow
deleted file mode 100644
index 5c8c109..0000000
--- a/assets/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.flow
+++ /dev/null
@@ -1,27 +0,0 @@
-import calculateCellWidthIndex from './calculateCellWidthIndex';
-
-/**
- * Produces an array of values that describe the largest value length (width) in every column.
- *
- * @param {Array[]} rows
- * @returns {number[]}
- */
-export default (rows) => {
- if (!rows[0]) {
- throw new Error('Dataset must have at least one row.');
- }
-
- const columns = new Array(rows[0].length).fill(0);
-
- rows.forEach((row) => {
- const columnWidthIndex = calculateCellWidthIndex(row);
-
- columnWidthIndex.forEach((valueWidth, index0) => {
- if (columns[index0] < valueWidth) {
- columns[index0] = valueWidth;
- }
- });
- });
-
- return columns;
-};
diff --git a/assets/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.map b/assets/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.map
deleted file mode 100644
index c30f4ce..0000000
--- a/assets/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/calculateMaximumColumnWidthIndex.js"],"names":["rows","Error","columns","Array","length","fill","forEach","row","columnWidthIndex","valueWidth","index0"],"mappings":";;;;;;;AAAA;;;;AAEA;;;;;;yCAMgBA,I,IAAS;AACvB,MAAI,CAACA,IAAI,CAAC,CAAD,CAAT,EAAc;AACZ,UAAM,IAAIC,KAAJ,CAAU,qCAAV,CAAN;AACD;;AAED,QAAMC,OAAO,GAAG,IAAIC,KAAJ,CAAUH,IAAI,CAAC,CAAD,CAAJ,CAAQI,MAAlB,EAA0BC,IAA1B,CAA+B,CAA/B,CAAhB;AAEAL,EAAAA,IAAI,CAACM,OAAL,CAAcC,GAAD,IAAS;AACpB,UAAMC,gBAAgB,GAAG,sCAAwBD,GAAxB,CAAzB;AAEAC,IAAAA,gBAAgB,CAACF,OAAjB,CAAyB,CAACG,UAAD,EAAaC,MAAb,KAAwB;AAC/C,UAAIR,OAAO,CAACQ,MAAD,CAAP,GAAkBD,UAAtB,EAAkC;AAChCP,QAAAA,OAAO,CAACQ,MAAD,CAAP,GAAkBD,UAAlB;AACD;AACF,KAJD;AAKD,GARD;AAUA,SAAOP,OAAP;AACD,C","sourcesContent":["import calculateCellWidthIndex from './calculateCellWidthIndex';\n\n/**\n * Produces an array of values that describe the largest value length (width) in every column.\n *\n * @param {Array[]} rows\n * @returns {number[]}\n */\nexport default (rows) => {\n if (!rows[0]) {\n throw new Error('Dataset must have at least one row.');\n }\n\n const columns = new Array(rows[0].length).fill(0);\n\n rows.forEach((row) => {\n const columnWidthIndex = calculateCellWidthIndex(row);\n\n columnWidthIndex.forEach((valueWidth, index0) => {\n if (columns[index0] < valueWidth) {\n columns[index0] = valueWidth;\n }\n });\n });\n\n return columns;\n};\n"],"file":"calculateMaximumColumnWidthIndex.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/calculateRowHeightIndex.js b/assets/node_modules/table/dist/calculateRowHeightIndex.js
deleted file mode 100644
index 774a755..0000000
--- a/assets/node_modules/table/dist/calculateRowHeightIndex.js
+++ /dev/null
@@ -1,48 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _max2 = _interopRequireDefault(require("lodash/max"));
-
-var _isBoolean2 = _interopRequireDefault(require("lodash/isBoolean"));
-
-var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
-
-var _calculateCellHeight = _interopRequireDefault(require("./calculateCellHeight"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Calculates the vertical row span index.
- *
- * @param {Array[]} rows
- * @param {Object} config
- * @returns {number[]}
- */
-const calculateRowHeightIndex = (rows, config) => {
- const tableWidth = rows[0].length;
- const rowSpanIndex = [];
- rows.forEach(cells => {
- const cellHeightIndex = new Array(tableWidth).fill(1);
- cells.forEach((value, index1) => {
- if (!(0, _isNumber2.default)(config.columns[index1].width)) {
- throw new TypeError('column[index].width must be a number.');
- }
-
- if (!(0, _isBoolean2.default)(config.columns[index1].wrapWord)) {
- throw new TypeError('column[index].wrapWord must be a boolean.');
- }
-
- cellHeightIndex[index1] = (0, _calculateCellHeight.default)(value, config.columns[index1].width, config.columns[index1].wrapWord);
- });
- rowSpanIndex.push((0, _max2.default)(cellHeightIndex));
- });
- return rowSpanIndex;
-};
-
-var _default = calculateRowHeightIndex;
-exports.default = _default;
-//# sourceMappingURL=calculateRowHeightIndex.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/calculateRowHeightIndex.js.flow b/assets/node_modules/table/dist/calculateRowHeightIndex.js.flow
deleted file mode 100644
index 2687902..0000000
--- a/assets/node_modules/table/dist/calculateRowHeightIndex.js.flow
+++ /dev/null
@@ -1,35 +0,0 @@
-import _ from 'lodash';
-import calculateCellHeight from './calculateCellHeight';
-
-/**
- * Calculates the vertical row span index.
- *
- * @param {Array[]} rows
- * @param {Object} config
- * @returns {number[]}
- */
-export default (rows, config) => {
- const tableWidth = rows[0].length;
-
- const rowSpanIndex = [];
-
- rows.forEach((cells) => {
- const cellHeightIndex = new Array(tableWidth).fill(1);
-
- cells.forEach((value, index1) => {
- if (!_.isNumber(config.columns[index1].width)) {
- throw new TypeError('column[index].width must be a number.');
- }
-
- if (!_.isBoolean(config.columns[index1].wrapWord)) {
- throw new TypeError('column[index].wrapWord must be a boolean.');
- }
-
- cellHeightIndex[index1] = calculateCellHeight(value, config.columns[index1].width, config.columns[index1].wrapWord);
- });
-
- rowSpanIndex.push(_.max(cellHeightIndex));
- });
-
- return rowSpanIndex;
-};
diff --git a/assets/node_modules/table/dist/calculateRowHeightIndex.js.map b/assets/node_modules/table/dist/calculateRowHeightIndex.js.map
deleted file mode 100644
index 009dc00..0000000
--- a/assets/node_modules/table/dist/calculateRowHeightIndex.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/calculateRowHeightIndex.js"],"names":["rows","config","tableWidth","length","rowSpanIndex","forEach","cells","cellHeightIndex","Array","fill","value","index1","columns","width","TypeError","wrapWord","push"],"mappings":";;;;;;;;;;;;;AACA;;;;AAEA;;;;;;;iCAOgBA,I,EAAMC,M,KAAW;AAC/B,QAAMC,UAAU,GAAGF,IAAI,CAAC,CAAD,CAAJ,CAAQG,MAA3B;AAEA,QAAMC,YAAY,GAAG,EAArB;AAEAJ,EAAAA,IAAI,CAACK,OAAL,CAAcC,KAAD,IAAW;AACtB,UAAMC,eAAe,GAAG,IAAIC,KAAJ,CAAUN,UAAV,EAAsBO,IAAtB,CAA2B,CAA3B,CAAxB;AAEAH,IAAAA,KAAK,CAACD,OAAN,CAAc,CAACK,KAAD,EAAQC,MAAR,KAAmB;AAC/B,UAAI,CAAC,wBAAWV,MAAM,CAACW,OAAP,CAAeD,MAAf,EAAuBE,KAAlC,CAAL,EAA+C;AAC7C,cAAM,IAAIC,SAAJ,CAAc,uCAAd,CAAN;AACD;;AAED,UAAI,CAAC,yBAAYb,MAAM,CAACW,OAAP,CAAeD,MAAf,EAAuBI,QAAnC,CAAL,EAAmD;AACjD,cAAM,IAAID,SAAJ,CAAc,2CAAd,CAAN;AACD;;AAEDP,MAAAA,eAAe,CAACI,MAAD,CAAf,GAA0B,kCAAoBD,KAApB,EAA2BT,MAAM,CAACW,OAAP,CAAeD,MAAf,EAAuBE,KAAlD,EAAyDZ,MAAM,CAACW,OAAP,CAAeD,MAAf,EAAuBI,QAAhF,CAA1B;AACD,KAVD;AAYAX,IAAAA,YAAY,CAACY,IAAb,CAAkB,mBAAMT,eAAN,CAAlB;AACD,GAhBD;AAkBA,SAAOH,YAAP;AACD,C","sourcesContent":["import _ from 'lodash';\nimport calculateCellHeight from './calculateCellHeight';\n\n/**\n * Calculates the vertical row span index.\n *\n * @param {Array[]} rows\n * @param {Object} config\n * @returns {number[]}\n */\nexport default (rows, config) => {\n const tableWidth = rows[0].length;\n\n const rowSpanIndex = [];\n\n rows.forEach((cells) => {\n const cellHeightIndex = new Array(tableWidth).fill(1);\n\n cells.forEach((value, index1) => {\n if (!_.isNumber(config.columns[index1].width)) {\n throw new TypeError('column[index].width must be a number.');\n }\n\n if (!_.isBoolean(config.columns[index1].wrapWord)) {\n throw new TypeError('column[index].wrapWord must be a boolean.');\n }\n\n cellHeightIndex[index1] = calculateCellHeight(value, config.columns[index1].width, config.columns[index1].wrapWord);\n });\n\n rowSpanIndex.push(_.max(cellHeightIndex));\n });\n\n return rowSpanIndex;\n};\n"],"file":"calculateRowHeightIndex.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/createStream.js b/assets/node_modules/table/dist/createStream.js
deleted file mode 100644
index 269aae9..0000000
--- a/assets/node_modules/table/dist/createStream.js
+++ /dev/null
@@ -1,132 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _mapValues2 = _interopRequireDefault(require("lodash/mapValues"));
-
-var _values2 = _interopRequireDefault(require("lodash/values"));
-
-var _trimEnd2 = _interopRequireDefault(require("lodash/trimEnd"));
-
-var _makeStreamConfig = _interopRequireDefault(require("./makeStreamConfig"));
-
-var _drawRow = _interopRequireDefault(require("./drawRow"));
-
-var _drawBorder = require("./drawBorder");
-
-var _stringifyTableData = _interopRequireDefault(require("./stringifyTableData"));
-
-var _truncateTableData = _interopRequireDefault(require("./truncateTableData"));
-
-var _mapDataUsingRowHeightIndex = _interopRequireDefault(require("./mapDataUsingRowHeightIndex"));
-
-var _alignTableData = _interopRequireDefault(require("./alignTableData"));
-
-var _padTableData = _interopRequireDefault(require("./padTableData"));
-
-var _calculateRowHeightIndex = _interopRequireDefault(require("./calculateRowHeightIndex"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * @param {Array} data
- * @param {Object} config
- * @returns {Array}
- */
-const prepareData = (data, config) => {
- let rows;
- rows = (0, _stringifyTableData.default)(data);
- rows = (0, _truncateTableData.default)(data, config);
- const rowHeightIndex = (0, _calculateRowHeightIndex.default)(rows, config);
- rows = (0, _mapDataUsingRowHeightIndex.default)(rows, rowHeightIndex, config);
- rows = (0, _alignTableData.default)(rows, config);
- rows = (0, _padTableData.default)(rows, config);
- return rows;
-};
-/**
- * @param {string[]} row
- * @param {number[]} columnWidthIndex
- * @param {Object} config
- * @returns {undefined}
- */
-
-
-const create = (row, columnWidthIndex, config) => {
- const rows = prepareData([row], config);
- const body = rows.map(literalRow => {
- return (0, _drawRow.default)(literalRow, config.border);
- }).join('');
- let output;
- output = '';
- output += (0, _drawBorder.drawBorderTop)(columnWidthIndex, config.border);
- output += body;
- output += (0, _drawBorder.drawBorderBottom)(columnWidthIndex, config.border);
- output = (0, _trimEnd2.default)(output);
- process.stdout.write(output);
-};
-/**
- * @param {string[]} row
- * @param {number[]} columnWidthIndex
- * @param {Object} config
- * @returns {undefined}
- */
-
-
-const append = (row, columnWidthIndex, config) => {
- const rows = prepareData([row], config);
- const body = rows.map(literalRow => {
- return (0, _drawRow.default)(literalRow, config.border);
- }).join('');
- let output = '';
- const bottom = (0, _drawBorder.drawBorderBottom)(columnWidthIndex, config.border);
-
- if (bottom !== '\n') {
- output = '\r\u001B[K';
- }
-
- output += (0, _drawBorder.drawBorderJoin)(columnWidthIndex, config.border);
- output += body;
- output += bottom;
- output = (0, _trimEnd2.default)(output);
- process.stdout.write(output);
-};
-/**
- * @param {Object} userConfig
- * @returns {Object}
- */
-
-
-const createStream = (userConfig = {}) => {
- const config = (0, _makeStreamConfig.default)(userConfig); // @todo Use 'Object.values' when Node.js v6 support is dropped.
-
- const columnWidthIndex = (0, _values2.default)((0, _mapValues2.default)(config.columns, column => {
- return column.width + column.paddingLeft + column.paddingRight;
- }));
- let empty;
- empty = true;
- return {
- /**
- * @param {string[]} row
- * @returns {undefined}
- */
- write: row => {
- if (row.length !== config.columnCount) {
- throw new Error('Row cell count does not match the config.columnCount.');
- }
-
- if (empty) {
- empty = false;
- return create(row, columnWidthIndex, config);
- } else {
- return append(row, columnWidthIndex, config);
- }
- }
- };
-};
-
-var _default = createStream;
-exports.default = _default;
-//# sourceMappingURL=createStream.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/createStream.js.flow b/assets/node_modules/table/dist/createStream.js.flow
deleted file mode 100644
index fd5eac4..0000000
--- a/assets/node_modules/table/dist/createStream.js.flow
+++ /dev/null
@@ -1,127 +0,0 @@
-import _ from 'lodash';
-import makeStreamConfig from './makeStreamConfig';
-import drawRow from './drawRow';
-import {
- drawBorderBottom,
- drawBorderJoin,
- drawBorderTop
-} from './drawBorder';
-import stringifyTableData from './stringifyTableData';
-import truncateTableData from './truncateTableData';
-import mapDataUsingRowHeightIndex from './mapDataUsingRowHeightIndex';
-import alignTableData from './alignTableData';
-import padTableData from './padTableData';
-import calculateRowHeightIndex from './calculateRowHeightIndex';
-
-/**
- * @param {Array} data
- * @param {Object} config
- * @returns {Array}
- */
-const prepareData = (data, config) => {
- let rows;
-
- rows = stringifyTableData(data);
-
- rows = truncateTableData(data, config);
-
- const rowHeightIndex = calculateRowHeightIndex(rows, config);
-
- rows = mapDataUsingRowHeightIndex(rows, rowHeightIndex, config);
- rows = alignTableData(rows, config);
- rows = padTableData(rows, config);
-
- return rows;
-};
-
-/**
- * @param {string[]} row
- * @param {number[]} columnWidthIndex
- * @param {Object} config
- * @returns {undefined}
- */
-const create = (row, columnWidthIndex, config) => {
- const rows = prepareData([row], config);
-
- const body = rows.map((literalRow) => {
- return drawRow(literalRow, config.border);
- }).join('');
-
- let output;
-
- output = '';
-
- output += drawBorderTop(columnWidthIndex, config.border);
- output += body;
- output += drawBorderBottom(columnWidthIndex, config.border);
-
- output = _.trimEnd(output);
-
- process.stdout.write(output);
-};
-
-/**
- * @param {string[]} row
- * @param {number[]} columnWidthIndex
- * @param {Object} config
- * @returns {undefined}
- */
-const append = (row, columnWidthIndex, config) => {
- const rows = prepareData([row], config);
-
- const body = rows.map((literalRow) => {
- return drawRow(literalRow, config.border);
- }).join('');
-
- let output = '';
- const bottom = drawBorderBottom(columnWidthIndex, config.border);
-
- if (bottom !== '\n') {
- output = '\r\u001B[K';
- }
-
- output += drawBorderJoin(columnWidthIndex, config.border);
- output += body;
- output += bottom;
-
- output = _.trimEnd(output);
-
- process.stdout.write(output);
-};
-
-/**
- * @param {Object} userConfig
- * @returns {Object}
- */
-export default (userConfig = {}) => {
- const config = makeStreamConfig(userConfig);
-
- // @todo Use 'Object.values' when Node.js v6 support is dropped.
- const columnWidthIndex = _.values(_.mapValues(config.columns, (column) => {
- return column.width + column.paddingLeft + column.paddingRight;
- }));
-
- let empty;
-
- empty = true;
-
- return {
- /**
- * @param {string[]} row
- * @returns {undefined}
- */
- write: (row) => {
- if (row.length !== config.columnCount) {
- throw new Error('Row cell count does not match the config.columnCount.');
- }
-
- if (empty) {
- empty = false;
-
- return create(row, columnWidthIndex, config);
- } else {
- return append(row, columnWidthIndex, config);
- }
- }
- };
-};
diff --git a/assets/node_modules/table/dist/createStream.js.map b/assets/node_modules/table/dist/createStream.js.map
deleted file mode 100644
index fbd3b78..0000000
--- a/assets/node_modules/table/dist/createStream.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/createStream.js"],"names":["prepareData","data","config","rows","rowHeightIndex","create","row","columnWidthIndex","body","map","literalRow","border","join","output","process","stdout","write","append","bottom","userConfig","columns","column","width","paddingLeft","paddingRight","empty","length","columnCount","Error"],"mappings":";;;;;;;;;;;;;AACA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA;;;;;AAKA,MAAMA,WAAW,GAAG,CAACC,IAAD,EAAOC,MAAP,KAAkB;AACpC,MAAIC,IAAJ;AAEAA,EAAAA,IAAI,GAAG,iCAAmBF,IAAnB,CAAP;AAEAE,EAAAA,IAAI,GAAG,gCAAkBF,IAAlB,EAAwBC,MAAxB,CAAP;AAEA,QAAME,cAAc,GAAG,sCAAwBD,IAAxB,EAA8BD,MAA9B,CAAvB;AAEAC,EAAAA,IAAI,GAAG,yCAA2BA,IAA3B,EAAiCC,cAAjC,EAAiDF,MAAjD,CAAP;AACAC,EAAAA,IAAI,GAAG,6BAAeA,IAAf,EAAqBD,MAArB,CAAP;AACAC,EAAAA,IAAI,GAAG,2BAAaA,IAAb,EAAmBD,MAAnB,CAAP;AAEA,SAAOC,IAAP;AACD,CAdD;AAgBA;;;;;;;;AAMA,MAAME,MAAM,GAAG,CAACC,GAAD,EAAMC,gBAAN,EAAwBL,MAAxB,KAAmC;AAChD,QAAMC,IAAI,GAAGH,WAAW,CAAC,CAACM,GAAD,CAAD,EAAQJ,MAAR,CAAxB;AAEA,QAAMM,IAAI,GAAGL,IAAI,CAACM,GAAL,CAAUC,UAAD,IAAgB;AACpC,WAAO,sBAAQA,UAAR,EAAoBR,MAAM,CAACS,MAA3B,CAAP;AACD,GAFY,EAEVC,IAFU,CAEL,EAFK,CAAb;AAIA,MAAIC,MAAJ;AAEAA,EAAAA,MAAM,GAAG,EAAT;AAEAA,EAAAA,MAAM,IAAI,+BAAcN,gBAAd,EAAgCL,MAAM,CAACS,MAAvC,CAAV;AACAE,EAAAA,MAAM,IAAIL,IAAV;AACAK,EAAAA,MAAM,IAAI,kCAAiBN,gBAAjB,EAAmCL,MAAM,CAACS,MAA1C,CAAV;AAEAE,EAAAA,MAAM,GAAG,uBAAUA,MAAV,CAAT;AAEAC,EAAAA,OAAO,CAACC,MAAR,CAAeC,KAAf,CAAqBH,MAArB;AACD,CAlBD;AAoBA;;;;;;;;AAMA,MAAMI,MAAM,GAAG,CAACX,GAAD,EAAMC,gBAAN,EAAwBL,MAAxB,KAAmC;AAChD,QAAMC,IAAI,GAAGH,WAAW,CAAC,CAACM,GAAD,CAAD,EAAQJ,MAAR,CAAxB;AAEA,QAAMM,IAAI,GAAGL,IAAI,CAACM,GAAL,CAAUC,UAAD,IAAgB;AACpC,WAAO,sBAAQA,UAAR,EAAoBR,MAAM,CAACS,MAA3B,CAAP;AACD,GAFY,EAEVC,IAFU,CAEL,EAFK,CAAb;AAIA,MAAIC,MAAM,GAAG,EAAb;AACA,QAAMK,MAAM,GAAG,kCAAiBX,gBAAjB,EAAmCL,MAAM,CAACS,MAA1C,CAAf;;AAEA,MAAIO,MAAM,KAAK,IAAf,EAAqB;AACnBL,IAAAA,MAAM,GAAG,YAAT;AACD;;AAEDA,EAAAA,MAAM,IAAI,gCAAeN,gBAAf,EAAiCL,MAAM,CAACS,MAAxC,CAAV;AACAE,EAAAA,MAAM,IAAIL,IAAV;AACAK,EAAAA,MAAM,IAAIK,MAAV;AAEAL,EAAAA,MAAM,GAAG,uBAAUA,MAAV,CAAT;AAEAC,EAAAA,OAAO,CAACC,MAAR,CAAeC,KAAf,CAAqBH,MAArB;AACD,CArBD;AAuBA;;;;;;sBAIgBM,UAAU,GAAG,E,KAAO;AAClC,QAAMjB,MAAM,GAAG,+BAAiBiB,UAAjB,CAAf,CADkC,CAGlC;;AACA,QAAMZ,gBAAgB,GAAG,sBAAS,yBAAYL,MAAM,CAACkB,OAAnB,EAA6BC,MAAD,IAAY;AACxE,WAAOA,MAAM,CAACC,KAAP,GAAeD,MAAM,CAACE,WAAtB,GAAoCF,MAAM,CAACG,YAAlD;AACD,GAFiC,CAAT,CAAzB;AAIA,MAAIC,KAAJ;AAEAA,EAAAA,KAAK,GAAG,IAAR;AAEA,SAAO;AACL;;;;AAIAT,IAAAA,KAAK,EAAGV,GAAD,IAAS;AACd,UAAIA,GAAG,CAACoB,MAAJ,KAAexB,MAAM,CAACyB,WAA1B,EAAuC;AACrC,cAAM,IAAIC,KAAJ,CAAU,uDAAV,CAAN;AACD;;AAED,UAAIH,KAAJ,EAAW;AACTA,QAAAA,KAAK,GAAG,KAAR;AAEA,eAAOpB,MAAM,CAACC,GAAD,EAAMC,gBAAN,EAAwBL,MAAxB,CAAb;AACD,OAJD,MAIO;AACL,eAAOe,MAAM,CAACX,GAAD,EAAMC,gBAAN,EAAwBL,MAAxB,CAAb;AACD;AACF;AAjBI,GAAP;AAmBD,C","sourcesContent":["import _ from 'lodash';\nimport makeStreamConfig from './makeStreamConfig';\nimport drawRow from './drawRow';\nimport {\n drawBorderBottom,\n drawBorderJoin,\n drawBorderTop\n} from './drawBorder';\nimport stringifyTableData from './stringifyTableData';\nimport truncateTableData from './truncateTableData';\nimport mapDataUsingRowHeightIndex from './mapDataUsingRowHeightIndex';\nimport alignTableData from './alignTableData';\nimport padTableData from './padTableData';\nimport calculateRowHeightIndex from './calculateRowHeightIndex';\n\n/**\n * @param {Array} data\n * @param {Object} config\n * @returns {Array}\n */\nconst prepareData = (data, config) => {\n let rows;\n\n rows = stringifyTableData(data);\n\n rows = truncateTableData(data, config);\n\n const rowHeightIndex = calculateRowHeightIndex(rows, config);\n\n rows = mapDataUsingRowHeightIndex(rows, rowHeightIndex, config);\n rows = alignTableData(rows, config);\n rows = padTableData(rows, config);\n\n return rows;\n};\n\n/**\n * @param {string[]} row\n * @param {number[]} columnWidthIndex\n * @param {Object} config\n * @returns {undefined}\n */\nconst create = (row, columnWidthIndex, config) => {\n const rows = prepareData([row], config);\n\n const body = rows.map((literalRow) => {\n return drawRow(literalRow, config.border);\n }).join('');\n\n let output;\n\n output = '';\n\n output += drawBorderTop(columnWidthIndex, config.border);\n output += body;\n output += drawBorderBottom(columnWidthIndex, config.border);\n\n output = _.trimEnd(output);\n\n process.stdout.write(output);\n};\n\n/**\n * @param {string[]} row\n * @param {number[]} columnWidthIndex\n * @param {Object} config\n * @returns {undefined}\n */\nconst append = (row, columnWidthIndex, config) => {\n const rows = prepareData([row], config);\n\n const body = rows.map((literalRow) => {\n return drawRow(literalRow, config.border);\n }).join('');\n\n let output = '';\n const bottom = drawBorderBottom(columnWidthIndex, config.border);\n\n if (bottom !== '\\n') {\n output = '\\r\\u001B[K';\n }\n\n output += drawBorderJoin(columnWidthIndex, config.border);\n output += body;\n output += bottom;\n\n output = _.trimEnd(output);\n\n process.stdout.write(output);\n};\n\n/**\n * @param {Object} userConfig\n * @returns {Object}\n */\nexport default (userConfig = {}) => {\n const config = makeStreamConfig(userConfig);\n\n // @todo Use 'Object.values' when Node.js v6 support is dropped.\n const columnWidthIndex = _.values(_.mapValues(config.columns, (column) => {\n return column.width + column.paddingLeft + column.paddingRight;\n }));\n\n let empty;\n\n empty = true;\n\n return {\n /**\n * @param {string[]} row\n * @returns {undefined}\n */\n write: (row) => {\n if (row.length !== config.columnCount) {\n throw new Error('Row cell count does not match the config.columnCount.');\n }\n\n if (empty) {\n empty = false;\n\n return create(row, columnWidthIndex, config);\n } else {\n return append(row, columnWidthIndex, config);\n }\n }\n };\n};\n"],"file":"createStream.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/drawBorder.js b/assets/node_modules/table/dist/drawBorder.js
deleted file mode 100644
index 67227e2..0000000
--- a/assets/node_modules/table/dist/drawBorder.js
+++ /dev/null
@@ -1,110 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.drawBorderTop = exports.drawBorderJoin = exports.drawBorderBottom = exports.drawBorder = void 0;
-
-/**
- * @typedef drawBorder~parts
- * @property {string} left
- * @property {string} right
- * @property {string} body
- * @property {string} join
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorder~parts} parts
- * @returns {string}
- */
-const drawBorder = (columnSizeIndex, parts) => {
- const columns = columnSizeIndex.map(size => {
- return parts.body.repeat(size);
- }).join(parts.join);
- return parts.left + columns + parts.right + '\n';
-};
-/**
- * @typedef drawBorderTop~parts
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} topBody
- * @property {string} topJoin
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorderTop~parts} parts
- * @returns {string}
- */
-
-
-exports.drawBorder = drawBorder;
-
-const drawBorderTop = (columnSizeIndex, parts) => {
- const border = drawBorder(columnSizeIndex, {
- body: parts.topBody,
- join: parts.topJoin,
- left: parts.topLeft,
- right: parts.topRight
- });
-
- if (border === '\n') {
- return '';
- }
-
- return border;
-};
-/**
- * @typedef drawBorderJoin~parts
- * @property {string} joinLeft
- * @property {string} joinRight
- * @property {string} joinBody
- * @property {string} joinJoin
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorderJoin~parts} parts
- * @returns {string}
- */
-
-
-exports.drawBorderTop = drawBorderTop;
-
-const drawBorderJoin = (columnSizeIndex, parts) => {
- return drawBorder(columnSizeIndex, {
- body: parts.joinBody,
- join: parts.joinJoin,
- left: parts.joinLeft,
- right: parts.joinRight
- });
-};
-/**
- * @typedef drawBorderBottom~parts
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} topBody
- * @property {string} topJoin
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorderBottom~parts} parts
- * @returns {string}
- */
-
-
-exports.drawBorderJoin = drawBorderJoin;
-
-const drawBorderBottom = (columnSizeIndex, parts) => {
- return drawBorder(columnSizeIndex, {
- body: parts.bottomBody,
- join: parts.bottomJoin,
- left: parts.bottomLeft,
- right: parts.bottomRight
- });
-};
-
-exports.drawBorderBottom = drawBorderBottom;
-//# sourceMappingURL=drawBorder.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/drawBorder.js.flow b/assets/node_modules/table/dist/drawBorder.js.flow
deleted file mode 100644
index 16b2aeb..0000000
--- a/assets/node_modules/table/dist/drawBorder.js.flow
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * @typedef drawBorder~parts
- * @property {string} left
- * @property {string} right
- * @property {string} body
- * @property {string} join
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorder~parts} parts
- * @returns {string}
- */
-const drawBorder = (columnSizeIndex, parts) => {
- const columns = columnSizeIndex
- .map((size) => {
- return parts.body.repeat(size);
- })
- .join(parts.join);
-
- return parts.left + columns + parts.right + '\n';
-};
-
-/**
- * @typedef drawBorderTop~parts
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} topBody
- * @property {string} topJoin
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorderTop~parts} parts
- * @returns {string}
- */
-const drawBorderTop = (columnSizeIndex, parts) => {
- const border = drawBorder(columnSizeIndex, {
- body: parts.topBody,
- join: parts.topJoin,
- left: parts.topLeft,
- right: parts.topRight
- });
-
- if (border === '\n') {
- return '';
- }
-
- return border;
-};
-
-/**
- * @typedef drawBorderJoin~parts
- * @property {string} joinLeft
- * @property {string} joinRight
- * @property {string} joinBody
- * @property {string} joinJoin
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorderJoin~parts} parts
- * @returns {string}
- */
-const drawBorderJoin = (columnSizeIndex, parts) => {
- return drawBorder(columnSizeIndex, {
- body: parts.joinBody,
- join: parts.joinJoin,
- left: parts.joinLeft,
- right: parts.joinRight
- });
-};
-
-/**
- * @typedef drawBorderBottom~parts
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} topBody
- * @property {string} topJoin
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorderBottom~parts} parts
- * @returns {string}
- */
-const drawBorderBottom = (columnSizeIndex, parts) => {
- return drawBorder(columnSizeIndex, {
- body: parts.bottomBody,
- join: parts.bottomJoin,
- left: parts.bottomLeft,
- right: parts.bottomRight
- });
-};
-
-export {
- drawBorder,
- drawBorderBottom,
- drawBorderJoin,
- drawBorderTop
-};
diff --git a/assets/node_modules/table/dist/drawBorder.js.map b/assets/node_modules/table/dist/drawBorder.js.map
deleted file mode 100644
index 4b1a220..0000000
--- a/assets/node_modules/table/dist/drawBorder.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/drawBorder.js"],"names":["drawBorder","columnSizeIndex","parts","columns","map","size","body","repeat","join","left","right","drawBorderTop","border","topBody","topJoin","topLeft","topRight","drawBorderJoin","joinBody","joinJoin","joinLeft","joinRight","drawBorderBottom","bottomBody","bottomJoin","bottomLeft","bottomRight"],"mappings":";;;;;;;AAAA;;;;;;;;AAQA;;;;;AAKA,MAAMA,UAAU,GAAG,CAACC,eAAD,EAAkBC,KAAlB,KAA4B;AAC7C,QAAMC,OAAO,GAAGF,eAAe,CAC5BG,GADa,CACRC,IAAD,IAAU;AACb,WAAOH,KAAK,CAACI,IAAN,CAAWC,MAAX,CAAkBF,IAAlB,CAAP;AACD,GAHa,EAIbG,IAJa,CAIRN,KAAK,CAACM,IAJE,CAAhB;AAMA,SAAON,KAAK,CAACO,IAAN,GAAaN,OAAb,GAAuBD,KAAK,CAACQ,KAA7B,GAAqC,IAA5C;AACD,CARD;AAUA;;;;;;;;AAQA;;;;;;;;;AAKA,MAAMC,aAAa,GAAG,CAACV,eAAD,EAAkBC,KAAlB,KAA4B;AAChD,QAAMU,MAAM,GAAGZ,UAAU,CAACC,eAAD,EAAkB;AACzCK,IAAAA,IAAI,EAAEJ,KAAK,CAACW,OAD6B;AAEzCL,IAAAA,IAAI,EAAEN,KAAK,CAACY,OAF6B;AAGzCL,IAAAA,IAAI,EAAEP,KAAK,CAACa,OAH6B;AAIzCL,IAAAA,KAAK,EAAER,KAAK,CAACc;AAJ4B,GAAlB,CAAzB;;AAOA,MAAIJ,MAAM,KAAK,IAAf,EAAqB;AACnB,WAAO,EAAP;AACD;;AAED,SAAOA,MAAP;AACD,CAbD;AAeA;;;;;;;;AAQA;;;;;;;;;AAKA,MAAMK,cAAc,GAAG,CAAChB,eAAD,EAAkBC,KAAlB,KAA4B;AACjD,SAAOF,UAAU,CAACC,eAAD,EAAkB;AACjCK,IAAAA,IAAI,EAAEJ,KAAK,CAACgB,QADqB;AAEjCV,IAAAA,IAAI,EAAEN,KAAK,CAACiB,QAFqB;AAGjCV,IAAAA,IAAI,EAAEP,KAAK,CAACkB,QAHqB;AAIjCV,IAAAA,KAAK,EAAER,KAAK,CAACmB;AAJoB,GAAlB,CAAjB;AAMD,CAPD;AASA;;;;;;;;AAQA;;;;;;;;;AAKA,MAAMC,gBAAgB,GAAG,CAACrB,eAAD,EAAkBC,KAAlB,KAA4B;AACnD,SAAOF,UAAU,CAACC,eAAD,EAAkB;AACjCK,IAAAA,IAAI,EAAEJ,KAAK,CAACqB,UADqB;AAEjCf,IAAAA,IAAI,EAAEN,KAAK,CAACsB,UAFqB;AAGjCf,IAAAA,IAAI,EAAEP,KAAK,CAACuB,UAHqB;AAIjCf,IAAAA,KAAK,EAAER,KAAK,CAACwB;AAJoB,GAAlB,CAAjB;AAMD,CAPD","sourcesContent":["/**\n * @typedef drawBorder~parts\n * @property {string} left\n * @property {string} right\n * @property {string} body\n * @property {string} join\n */\n\n/**\n * @param {number[]} columnSizeIndex\n * @param {drawBorder~parts} parts\n * @returns {string}\n */\nconst drawBorder = (columnSizeIndex, parts) => {\n const columns = columnSizeIndex\n .map((size) => {\n return parts.body.repeat(size);\n })\n .join(parts.join);\n\n return parts.left + columns + parts.right + '\\n';\n};\n\n/**\n * @typedef drawBorderTop~parts\n * @property {string} topLeft\n * @property {string} topRight\n * @property {string} topBody\n * @property {string} topJoin\n */\n\n/**\n * @param {number[]} columnSizeIndex\n * @param {drawBorderTop~parts} parts\n * @returns {string}\n */\nconst drawBorderTop = (columnSizeIndex, parts) => {\n const border = drawBorder(columnSizeIndex, {\n body: parts.topBody,\n join: parts.topJoin,\n left: parts.topLeft,\n right: parts.topRight\n });\n\n if (border === '\\n') {\n return '';\n }\n\n return border;\n};\n\n/**\n * @typedef drawBorderJoin~parts\n * @property {string} joinLeft\n * @property {string} joinRight\n * @property {string} joinBody\n * @property {string} joinJoin\n */\n\n/**\n * @param {number[]} columnSizeIndex\n * @param {drawBorderJoin~parts} parts\n * @returns {string}\n */\nconst drawBorderJoin = (columnSizeIndex, parts) => {\n return drawBorder(columnSizeIndex, {\n body: parts.joinBody,\n join: parts.joinJoin,\n left: parts.joinLeft,\n right: parts.joinRight\n });\n};\n\n/**\n * @typedef drawBorderBottom~parts\n * @property {string} topLeft\n * @property {string} topRight\n * @property {string} topBody\n * @property {string} topJoin\n */\n\n/**\n * @param {number[]} columnSizeIndex\n * @param {drawBorderBottom~parts} parts\n * @returns {string}\n */\nconst drawBorderBottom = (columnSizeIndex, parts) => {\n return drawBorder(columnSizeIndex, {\n body: parts.bottomBody,\n join: parts.bottomJoin,\n left: parts.bottomLeft,\n right: parts.bottomRight\n });\n};\n\nexport {\n drawBorder,\n drawBorderBottom,\n drawBorderJoin,\n drawBorderTop\n};\n"],"file":"drawBorder.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/drawRow.js b/assets/node_modules/table/dist/drawRow.js
deleted file mode 100644
index 800ca25..0000000
--- a/assets/node_modules/table/dist/drawRow.js
+++ /dev/null
@@ -1,26 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-/**
- * @typedef {Object} drawRow~border
- * @property {string} bodyLeft
- * @property {string} bodyRight
- * @property {string} bodyJoin
- */
-
-/**
- * @param {number[]} columns
- * @param {drawRow~border} border
- * @returns {string}
- */
-const drawRow = (columns, border) => {
- return border.bodyLeft + columns.join(border.bodyJoin) + border.bodyRight + '\n';
-};
-
-var _default = drawRow;
-exports.default = _default;
-//# sourceMappingURL=drawRow.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/drawRow.js.flow b/assets/node_modules/table/dist/drawRow.js.flow
deleted file mode 100644
index fdeceef..0000000
--- a/assets/node_modules/table/dist/drawRow.js.flow
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * @typedef {Object} drawRow~border
- * @property {string} bodyLeft
- * @property {string} bodyRight
- * @property {string} bodyJoin
- */
-
-/**
- * @param {number[]} columns
- * @param {drawRow~border} border
- * @returns {string}
- */
-export default (columns, border) => {
- return border.bodyLeft + columns.join(border.bodyJoin) + border.bodyRight + '\n';
-};
diff --git a/assets/node_modules/table/dist/drawRow.js.map b/assets/node_modules/table/dist/drawRow.js.map
deleted file mode 100644
index 4541d19..0000000
--- a/assets/node_modules/table/dist/drawRow.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/drawRow.js"],"names":["columns","border","bodyLeft","join","bodyJoin","bodyRight"],"mappings":";;;;;;;AAAA;;;;;;;AAOA;;;;;iBAKgBA,O,EAASC,M,KAAW;AAClC,SAAOA,MAAM,CAACC,QAAP,GAAkBF,OAAO,CAACG,IAAR,CAAaF,MAAM,CAACG,QAApB,CAAlB,GAAkDH,MAAM,CAACI,SAAzD,GAAqE,IAA5E;AACD,C","sourcesContent":["/**\n * @typedef {Object} drawRow~border\n * @property {string} bodyLeft\n * @property {string} bodyRight\n * @property {string} bodyJoin\n */\n\n/**\n * @param {number[]} columns\n * @param {drawRow~border} border\n * @returns {string}\n */\nexport default (columns, border) => {\n return border.bodyLeft + columns.join(border.bodyJoin) + border.bodyRight + '\\n';\n};\n"],"file":"drawRow.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/drawTable.js b/assets/node_modules/table/dist/drawTable.js
deleted file mode 100644
index fbfdc20..0000000
--- a/assets/node_modules/table/dist/drawTable.js
+++ /dev/null
@@ -1,59 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _drawBorder = require("./drawBorder");
-
-var _drawRow = _interopRequireDefault(require("./drawRow"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * @param {Array} rows
- * @param {Object} border
- * @param {Array} columnSizeIndex
- * @param {Array} rowSpanIndex
- * @param {Function} drawHorizontalLine
- * @param {boolean} singleLine
- * @returns {string}
- */
-const drawTable = (rows, border, columnSizeIndex, rowSpanIndex, drawHorizontalLine, singleLine) => {
- let output;
- let realRowIndex;
- let rowHeight;
- const rowCount = rows.length;
- realRowIndex = 0;
- output = '';
-
- if (drawHorizontalLine(realRowIndex, rowCount)) {
- output += (0, _drawBorder.drawBorderTop)(columnSizeIndex, border);
- }
-
- rows.forEach((row, index0) => {
- output += (0, _drawRow.default)(row, border);
-
- if (!rowHeight) {
- rowHeight = rowSpanIndex[realRowIndex];
- realRowIndex++;
- }
-
- rowHeight--;
-
- if (!singleLine && rowHeight === 0 && index0 !== rowCount - 1 && drawHorizontalLine(realRowIndex, rowCount)) {
- output += (0, _drawBorder.drawBorderJoin)(columnSizeIndex, border);
- }
- });
-
- if (drawHorizontalLine(realRowIndex, rowCount)) {
- output += (0, _drawBorder.drawBorderBottom)(columnSizeIndex, border);
- }
-
- return output;
-};
-
-var _default = drawTable;
-exports.default = _default;
-//# sourceMappingURL=drawTable.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/drawTable.js.flow b/assets/node_modules/table/dist/drawTable.js.flow
deleted file mode 100644
index cffe956..0000000
--- a/assets/node_modules/table/dist/drawTable.js.flow
+++ /dev/null
@@ -1,53 +0,0 @@
-import {
- drawBorderTop,
- drawBorderJoin,
- drawBorderBottom
-} from './drawBorder';
-import drawRow from './drawRow';
-
-/**
- * @param {Array} rows
- * @param {Object} border
- * @param {Array} columnSizeIndex
- * @param {Array} rowSpanIndex
- * @param {Function} drawHorizontalLine
- * @param {boolean} singleLine
- * @returns {string}
- */
-export default (rows, border, columnSizeIndex, rowSpanIndex, drawHorizontalLine, singleLine) => {
- let output;
- let realRowIndex;
- let rowHeight;
-
- const rowCount = rows.length;
-
- realRowIndex = 0;
-
- output = '';
-
- if (drawHorizontalLine(realRowIndex, rowCount)) {
- output += drawBorderTop(columnSizeIndex, border);
- }
-
- rows.forEach((row, index0) => {
- output += drawRow(row, border);
-
- if (!rowHeight) {
- rowHeight = rowSpanIndex[realRowIndex];
-
- realRowIndex++;
- }
-
- rowHeight--;
-
- if (!singleLine && rowHeight === 0 && index0 !== rowCount - 1 && drawHorizontalLine(realRowIndex, rowCount)) {
- output += drawBorderJoin(columnSizeIndex, border);
- }
- });
-
- if (drawHorizontalLine(realRowIndex, rowCount)) {
- output += drawBorderBottom(columnSizeIndex, border);
- }
-
- return output;
-};
diff --git a/assets/node_modules/table/dist/drawTable.js.map b/assets/node_modules/table/dist/drawTable.js.map
deleted file mode 100644
index 5f55265..0000000
--- a/assets/node_modules/table/dist/drawTable.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/drawTable.js"],"names":["rows","border","columnSizeIndex","rowSpanIndex","drawHorizontalLine","singleLine","output","realRowIndex","rowHeight","rowCount","length","forEach","row","index0"],"mappings":";;;;;;;AAAA;;AAKA;;;;AAEA;;;;;;;;;mBASgBA,I,EAAMC,M,EAAQC,e,EAAiBC,Y,EAAcC,kB,EAAoBC,U,KAAe;AAC9F,MAAIC,MAAJ;AACA,MAAIC,YAAJ;AACA,MAAIC,SAAJ;AAEA,QAAMC,QAAQ,GAAGT,IAAI,CAACU,MAAtB;AAEAH,EAAAA,YAAY,GAAG,CAAf;AAEAD,EAAAA,MAAM,GAAG,EAAT;;AAEA,MAAIF,kBAAkB,CAACG,YAAD,EAAeE,QAAf,CAAtB,EAAgD;AAC9CH,IAAAA,MAAM,IAAI,+BAAcJ,eAAd,EAA+BD,MAA/B,CAAV;AACD;;AAEDD,EAAAA,IAAI,CAACW,OAAL,CAAa,CAACC,GAAD,EAAMC,MAAN,KAAiB;AAC5BP,IAAAA,MAAM,IAAI,sBAAQM,GAAR,EAAaX,MAAb,CAAV;;AAEA,QAAI,CAACO,SAAL,EAAgB;AACdA,MAAAA,SAAS,GAAGL,YAAY,CAACI,YAAD,CAAxB;AAEAA,MAAAA,YAAY;AACb;;AAEDC,IAAAA,SAAS;;AAET,QAAI,CAACH,UAAD,IAAeG,SAAS,KAAK,CAA7B,IAAkCK,MAAM,KAAKJ,QAAQ,GAAG,CAAxD,IAA6DL,kBAAkB,CAACG,YAAD,EAAeE,QAAf,CAAnF,EAA6G;AAC3GH,MAAAA,MAAM,IAAI,gCAAeJ,eAAf,EAAgCD,MAAhC,CAAV;AACD;AACF,GAdD;;AAgBA,MAAIG,kBAAkB,CAACG,YAAD,EAAeE,QAAf,CAAtB,EAAgD;AAC9CH,IAAAA,MAAM,IAAI,kCAAiBJ,eAAjB,EAAkCD,MAAlC,CAAV;AACD;;AAED,SAAOK,MAAP;AACD,C","sourcesContent":["import {\n drawBorderTop,\n drawBorderJoin,\n drawBorderBottom\n} from './drawBorder';\nimport drawRow from './drawRow';\n\n/**\n * @param {Array} rows\n * @param {Object} border\n * @param {Array} columnSizeIndex\n * @param {Array} rowSpanIndex\n * @param {Function} drawHorizontalLine\n * @param {boolean} singleLine\n * @returns {string}\n */\nexport default (rows, border, columnSizeIndex, rowSpanIndex, drawHorizontalLine, singleLine) => {\n let output;\n let realRowIndex;\n let rowHeight;\n\n const rowCount = rows.length;\n\n realRowIndex = 0;\n\n output = '';\n\n if (drawHorizontalLine(realRowIndex, rowCount)) {\n output += drawBorderTop(columnSizeIndex, border);\n }\n\n rows.forEach((row, index0) => {\n output += drawRow(row, border);\n\n if (!rowHeight) {\n rowHeight = rowSpanIndex[realRowIndex];\n\n realRowIndex++;\n }\n\n rowHeight--;\n\n if (!singleLine && rowHeight === 0 && index0 !== rowCount - 1 && drawHorizontalLine(realRowIndex, rowCount)) {\n output += drawBorderJoin(columnSizeIndex, border);\n }\n });\n\n if (drawHorizontalLine(realRowIndex, rowCount)) {\n output += drawBorderBottom(columnSizeIndex, border);\n }\n\n return output;\n};\n"],"file":"drawTable.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/getBorderCharacters.js b/assets/node_modules/table/dist/getBorderCharacters.js
deleted file mode 100644
index 0b9b5b0..0000000
--- a/assets/node_modules/table/dist/getBorderCharacters.js
+++ /dev/null
@@ -1,119 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-/* eslint-disable sort-keys */
-
-/**
- * @typedef border
- * @property {string} topBody
- * @property {string} topJoin
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} bottomBody
- * @property {string} bottomJoin
- * @property {string} bottomLeft
- * @property {string} bottomRight
- * @property {string} bodyLeft
- * @property {string} bodyRight
- * @property {string} bodyJoin
- * @property {string} joinBody
- * @property {string} joinLeft
- * @property {string} joinRight
- * @property {string} joinJoin
- */
-
-/**
- * @param {string} name
- * @returns {border}
- */
-const getBorderCharacters = name => {
- if (name === 'honeywell') {
- return {
- topBody: '═',
- topJoin: '╤',
- topLeft: '╔',
- topRight: '╗',
- bottomBody: '═',
- bottomJoin: '╧',
- bottomLeft: '╚',
- bottomRight: '╝',
- bodyLeft: '║',
- bodyRight: '║',
- bodyJoin: '│',
- joinBody: '─',
- joinLeft: '╟',
- joinRight: '╢',
- joinJoin: '┼'
- };
- }
-
- if (name === 'norc') {
- return {
- topBody: '─',
- topJoin: '┬',
- topLeft: '┌',
- topRight: '┐',
- bottomBody: '─',
- bottomJoin: '┴',
- bottomLeft: '└',
- bottomRight: '┘',
- bodyLeft: '│',
- bodyRight: '│',
- bodyJoin: '│',
- joinBody: '─',
- joinLeft: '├',
- joinRight: '┤',
- joinJoin: '┼'
- };
- }
-
- if (name === 'ramac') {
- return {
- topBody: '-',
- topJoin: '+',
- topLeft: '+',
- topRight: '+',
- bottomBody: '-',
- bottomJoin: '+',
- bottomLeft: '+',
- bottomRight: '+',
- bodyLeft: '|',
- bodyRight: '|',
- bodyJoin: '|',
- joinBody: '-',
- joinLeft: '|',
- joinRight: '|',
- joinJoin: '|'
- };
- }
-
- if (name === 'void') {
- return {
- topBody: '',
- topJoin: '',
- topLeft: '',
- topRight: '',
- bottomBody: '',
- bottomJoin: '',
- bottomLeft: '',
- bottomRight: '',
- bodyLeft: '',
- bodyRight: '',
- bodyJoin: '',
- joinBody: '',
- joinLeft: '',
- joinRight: '',
- joinJoin: ''
- };
- }
-
- throw new Error('Unknown border template "' + name + '".');
-};
-
-var _default = getBorderCharacters;
-exports.default = _default;
-//# sourceMappingURL=getBorderCharacters.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/getBorderCharacters.js.flow b/assets/node_modules/table/dist/getBorderCharacters.js.flow
deleted file mode 100644
index 916b351..0000000
--- a/assets/node_modules/table/dist/getBorderCharacters.js.flow
+++ /dev/null
@@ -1,120 +0,0 @@
-/* eslint-disable sort-keys */
-
-/**
- * @typedef border
- * @property {string} topBody
- * @property {string} topJoin
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} bottomBody
- * @property {string} bottomJoin
- * @property {string} bottomLeft
- * @property {string} bottomRight
- * @property {string} bodyLeft
- * @property {string} bodyRight
- * @property {string} bodyJoin
- * @property {string} joinBody
- * @property {string} joinLeft
- * @property {string} joinRight
- * @property {string} joinJoin
- */
-
-/**
- * @param {string} name
- * @returns {border}
- */
-export default (name) => {
- if (name === 'honeywell') {
- return {
- topBody: '═',
- topJoin: '╤',
- topLeft: '╔',
- topRight: '╗',
-
- bottomBody: '═',
- bottomJoin: '╧',
- bottomLeft: '╚',
- bottomRight: '╝',
-
- bodyLeft: '║',
- bodyRight: '║',
- bodyJoin: '│',
-
- joinBody: '─',
- joinLeft: '╟',
- joinRight: '╢',
- joinJoin: '┼'
- };
- }
-
- if (name === 'norc') {
- return {
- topBody: '─',
- topJoin: '┬',
- topLeft: '┌',
- topRight: '┐',
-
- bottomBody: '─',
- bottomJoin: '┴',
- bottomLeft: '└',
- bottomRight: '┘',
-
- bodyLeft: '│',
- bodyRight: '│',
- bodyJoin: '│',
-
- joinBody: '─',
- joinLeft: '├',
- joinRight: '┤',
- joinJoin: '┼'
- };
- }
-
- if (name === 'ramac') {
- return {
- topBody: '-',
- topJoin: '+',
- topLeft: '+',
- topRight: '+',
-
- bottomBody: '-',
- bottomJoin: '+',
- bottomLeft: '+',
- bottomRight: '+',
-
- bodyLeft: '|',
- bodyRight: '|',
- bodyJoin: '|',
-
- joinBody: '-',
- joinLeft: '|',
- joinRight: '|',
- joinJoin: '|'
- };
- }
-
- if (name === 'void') {
- return {
- topBody: '',
- topJoin: '',
- topLeft: '',
- topRight: '',
-
- bottomBody: '',
- bottomJoin: '',
- bottomLeft: '',
- bottomRight: '',
-
- bodyLeft: '',
- bodyRight: '',
- bodyJoin: '',
-
- joinBody: '',
- joinLeft: '',
- joinRight: '',
- joinJoin: ''
- };
- }
-
- throw new Error('Unknown border template "' + name + '".');
-};
diff --git a/assets/node_modules/table/dist/getBorderCharacters.js.map b/assets/node_modules/table/dist/getBorderCharacters.js.map
deleted file mode 100644
index 543426c..0000000
--- a/assets/node_modules/table/dist/getBorderCharacters.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/getBorderCharacters.js"],"names":["name","topBody","topJoin","topLeft","topRight","bottomBody","bottomJoin","bottomLeft","bottomRight","bodyLeft","bodyRight","bodyJoin","joinBody","joinLeft","joinRight","joinJoin","Error"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;;;;;;;;;;;;;;AAmBA;;;;4BAIgBA,I,IAAS;AACvB,MAAIA,IAAI,KAAK,WAAb,EAA0B;AACxB,WAAO;AACLC,MAAAA,OAAO,EAAE,GADJ;AAELC,MAAAA,OAAO,EAAE,GAFJ;AAGLC,MAAAA,OAAO,EAAE,GAHJ;AAILC,MAAAA,QAAQ,EAAE,GAJL;AAMLC,MAAAA,UAAU,EAAE,GANP;AAOLC,MAAAA,UAAU,EAAE,GAPP;AAQLC,MAAAA,UAAU,EAAE,GARP;AASLC,MAAAA,WAAW,EAAE,GATR;AAWLC,MAAAA,QAAQ,EAAE,GAXL;AAYLC,MAAAA,SAAS,EAAE,GAZN;AAaLC,MAAAA,QAAQ,EAAE,GAbL;AAeLC,MAAAA,QAAQ,EAAE,GAfL;AAgBLC,MAAAA,QAAQ,EAAE,GAhBL;AAiBLC,MAAAA,SAAS,EAAE,GAjBN;AAkBLC,MAAAA,QAAQ,EAAE;AAlBL,KAAP;AAoBD;;AAED,MAAIf,IAAI,KAAK,MAAb,EAAqB;AACnB,WAAO;AACLC,MAAAA,OAAO,EAAE,GADJ;AAELC,MAAAA,OAAO,EAAE,GAFJ;AAGLC,MAAAA,OAAO,EAAE,GAHJ;AAILC,MAAAA,QAAQ,EAAE,GAJL;AAMLC,MAAAA,UAAU,EAAE,GANP;AAOLC,MAAAA,UAAU,EAAE,GAPP;AAQLC,MAAAA,UAAU,EAAE,GARP;AASLC,MAAAA,WAAW,EAAE,GATR;AAWLC,MAAAA,QAAQ,EAAE,GAXL;AAYLC,MAAAA,SAAS,EAAE,GAZN;AAaLC,MAAAA,QAAQ,EAAE,GAbL;AAeLC,MAAAA,QAAQ,EAAE,GAfL;AAgBLC,MAAAA,QAAQ,EAAE,GAhBL;AAiBLC,MAAAA,SAAS,EAAE,GAjBN;AAkBLC,MAAAA,QAAQ,EAAE;AAlBL,KAAP;AAoBD;;AAED,MAAIf,IAAI,KAAK,OAAb,EAAsB;AACpB,WAAO;AACLC,MAAAA,OAAO,EAAE,GADJ;AAELC,MAAAA,OAAO,EAAE,GAFJ;AAGLC,MAAAA,OAAO,EAAE,GAHJ;AAILC,MAAAA,QAAQ,EAAE,GAJL;AAMLC,MAAAA,UAAU,EAAE,GANP;AAOLC,MAAAA,UAAU,EAAE,GAPP;AAQLC,MAAAA,UAAU,EAAE,GARP;AASLC,MAAAA,WAAW,EAAE,GATR;AAWLC,MAAAA,QAAQ,EAAE,GAXL;AAYLC,MAAAA,SAAS,EAAE,GAZN;AAaLC,MAAAA,QAAQ,EAAE,GAbL;AAeLC,MAAAA,QAAQ,EAAE,GAfL;AAgBLC,MAAAA,QAAQ,EAAE,GAhBL;AAiBLC,MAAAA,SAAS,EAAE,GAjBN;AAkBLC,MAAAA,QAAQ,EAAE;AAlBL,KAAP;AAoBD;;AAED,MAAIf,IAAI,KAAK,MAAb,EAAqB;AACnB,WAAO;AACLC,MAAAA,OAAO,EAAE,EADJ;AAELC,MAAAA,OAAO,EAAE,EAFJ;AAGLC,MAAAA,OAAO,EAAE,EAHJ;AAILC,MAAAA,QAAQ,EAAE,EAJL;AAMLC,MAAAA,UAAU,EAAE,EANP;AAOLC,MAAAA,UAAU,EAAE,EAPP;AAQLC,MAAAA,UAAU,EAAE,EARP;AASLC,MAAAA,WAAW,EAAE,EATR;AAWLC,MAAAA,QAAQ,EAAE,EAXL;AAYLC,MAAAA,SAAS,EAAE,EAZN;AAaLC,MAAAA,QAAQ,EAAE,EAbL;AAeLC,MAAAA,QAAQ,EAAE,EAfL;AAgBLC,MAAAA,QAAQ,EAAE,EAhBL;AAiBLC,MAAAA,SAAS,EAAE,EAjBN;AAkBLC,MAAAA,QAAQ,EAAE;AAlBL,KAAP;AAoBD;;AAED,QAAM,IAAIC,KAAJ,CAAU,8BAA8BhB,IAA9B,GAAqC,IAA/C,CAAN;AACD,C","sourcesContent":["/* eslint-disable sort-keys */\n\n/**\n * @typedef border\n * @property {string} topBody\n * @property {string} topJoin\n * @property {string} topLeft\n * @property {string} topRight\n * @property {string} bottomBody\n * @property {string} bottomJoin\n * @property {string} bottomLeft\n * @property {string} bottomRight\n * @property {string} bodyLeft\n * @property {string} bodyRight\n * @property {string} bodyJoin\n * @property {string} joinBody\n * @property {string} joinLeft\n * @property {string} joinRight\n * @property {string} joinJoin\n */\n\n/**\n * @param {string} name\n * @returns {border}\n */\nexport default (name) => {\n if (name === 'honeywell') {\n return {\n topBody: '═',\n topJoin: '╤',\n topLeft: '╔',\n topRight: '╗',\n\n bottomBody: '═',\n bottomJoin: '╧',\n bottomLeft: '╚',\n bottomRight: '╝',\n\n bodyLeft: '║',\n bodyRight: '║',\n bodyJoin: '│',\n\n joinBody: '─',\n joinLeft: '╟',\n joinRight: '╢',\n joinJoin: '┼'\n };\n }\n\n if (name === 'norc') {\n return {\n topBody: '─',\n topJoin: '┬',\n topLeft: '┌',\n topRight: '┐',\n\n bottomBody: '─',\n bottomJoin: '┴',\n bottomLeft: '└',\n bottomRight: '┘',\n\n bodyLeft: '│',\n bodyRight: '│',\n bodyJoin: '│',\n\n joinBody: '─',\n joinLeft: '├',\n joinRight: '┤',\n joinJoin: '┼'\n };\n }\n\n if (name === 'ramac') {\n return {\n topBody: '-',\n topJoin: '+',\n topLeft: '+',\n topRight: '+',\n\n bottomBody: '-',\n bottomJoin: '+',\n bottomLeft: '+',\n bottomRight: '+',\n\n bodyLeft: '|',\n bodyRight: '|',\n bodyJoin: '|',\n\n joinBody: '-',\n joinLeft: '|',\n joinRight: '|',\n joinJoin: '|'\n };\n }\n\n if (name === 'void') {\n return {\n topBody: '',\n topJoin: '',\n topLeft: '',\n topRight: '',\n\n bottomBody: '',\n bottomJoin: '',\n bottomLeft: '',\n bottomRight: '',\n\n bodyLeft: '',\n bodyRight: '',\n bodyJoin: '',\n\n joinBody: '',\n joinLeft: '',\n joinRight: '',\n joinJoin: ''\n };\n }\n\n throw new Error('Unknown border template \"' + name + '\".');\n};\n"],"file":"getBorderCharacters.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/index.js b/assets/node_modules/table/dist/index.js
deleted file mode 100644
index 1f40e66..0000000
--- a/assets/node_modules/table/dist/index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-Object.defineProperty(exports, "table", {
- enumerable: true,
- get: function get() {
- return _table.default;
- }
-});
-Object.defineProperty(exports, "createStream", {
- enumerable: true,
- get: function get() {
- return _createStream.default;
- }
-});
-Object.defineProperty(exports, "getBorderCharacters", {
- enumerable: true,
- get: function get() {
- return _getBorderCharacters.default;
- }
-});
-
-var _table = _interopRequireDefault(require("./table"));
-
-var _createStream = _interopRequireDefault(require("./createStream"));
-
-var _getBorderCharacters = _interopRequireDefault(require("./getBorderCharacters"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/index.js.flow b/assets/node_modules/table/dist/index.js.flow
deleted file mode 100644
index 76cd830..0000000
--- a/assets/node_modules/table/dist/index.js.flow
+++ /dev/null
@@ -1,9 +0,0 @@
-import table from './table';
-import createStream from './createStream';
-import getBorderCharacters from './getBorderCharacters';
-
-export {
- table,
- createStream,
- getBorderCharacters
-};
diff --git a/assets/node_modules/table/dist/index.js.map b/assets/node_modules/table/dist/index.js.map
deleted file mode 100644
index 2f59e09..0000000
--- a/assets/node_modules/table/dist/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA","sourcesContent":["import table from './table';\nimport createStream from './createStream';\nimport getBorderCharacters from './getBorderCharacters';\n\nexport {\n table,\n createStream,\n getBorderCharacters\n};\n"],"file":"index.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/makeConfig.js b/assets/node_modules/table/dist/makeConfig.js
deleted file mode 100644
index 17fd35d..0000000
--- a/assets/node_modules/table/dist/makeConfig.js
+++ /dev/null
@@ -1,94 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
-
-var _isUndefined2 = _interopRequireDefault(require("lodash/isUndefined"));
-
-var _times2 = _interopRequireDefault(require("lodash/times"));
-
-var _getBorderCharacters = _interopRequireDefault(require("./getBorderCharacters"));
-
-var _validateConfig = _interopRequireDefault(require("./validateConfig"));
-
-var _calculateMaximumColumnWidthIndex = _interopRequireDefault(require("./calculateMaximumColumnWidthIndex"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Merges user provided border characters with the default border ("honeywell") characters.
- *
- * @param {Object} border
- * @returns {Object}
- */
-const makeBorder = (border = {}) => {
- return Object.assign({}, (0, _getBorderCharacters.default)('honeywell'), border);
-};
-/**
- * Creates a configuration for every column using default
- * values for the missing configuration properties.
- *
- * @param {Array[]} rows
- * @param {Object} columns
- * @param {Object} columnDefault
- * @returns {Object}
- */
-
-
-const makeColumns = (rows, columns = {}, columnDefault = {}) => {
- const maximumColumnWidthIndex = (0, _calculateMaximumColumnWidthIndex.default)(rows);
- (0, _times2.default)(rows[0].length, index => {
- if ((0, _isUndefined2.default)(columns[index])) {
- columns[index] = {};
- }
-
- columns[index] = Object.assign({
- alignment: 'left',
- paddingLeft: 1,
- paddingRight: 1,
- truncate: Infinity,
- width: maximumColumnWidthIndex[index],
- wrapWord: false
- }, columnDefault, columns[index]);
- });
- return columns;
-};
-/**
- * Makes a new configuration object out of the userConfig object
- * using default values for the missing configuration properties.
- *
- * @param {Array[]} rows
- * @param {Object} userConfig
- * @returns {Object}
- */
-
-
-const makeConfig = (rows, userConfig = {}) => {
- (0, _validateConfig.default)('config.json', userConfig);
- const config = (0, _cloneDeep2.default)(userConfig);
- config.border = makeBorder(config.border);
- config.columns = makeColumns(rows, config.columns, config.columnDefault);
-
- if (!config.drawHorizontalLine) {
- /**
- * @returns {boolean}
- */
- config.drawHorizontalLine = () => {
- return true;
- };
- }
-
- if (config.singleLine === undefined) {
- config.singleLine = false;
- }
-
- return config;
-};
-
-var _default = makeConfig;
-exports.default = _default;
-//# sourceMappingURL=makeConfig.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/makeConfig.js.flow b/assets/node_modules/table/dist/makeConfig.js.flow
deleted file mode 100644
index 1471afc..0000000
--- a/assets/node_modules/table/dist/makeConfig.js.flow
+++ /dev/null
@@ -1,76 +0,0 @@
-import _ from 'lodash';
-import getBorderCharacters from './getBorderCharacters';
-import validateConfig from './validateConfig';
-import calculateMaximumColumnWidthIndex from './calculateMaximumColumnWidthIndex';
-
-/**
- * Merges user provided border characters with the default border ("honeywell") characters.
- *
- * @param {Object} border
- * @returns {Object}
- */
-const makeBorder = (border = {}) => {
- return Object.assign({}, getBorderCharacters('honeywell'), border);
-};
-
-/**
- * Creates a configuration for every column using default
- * values for the missing configuration properties.
- *
- * @param {Array[]} rows
- * @param {Object} columns
- * @param {Object} columnDefault
- * @returns {Object}
- */
-const makeColumns = (rows, columns = {}, columnDefault = {}) => {
- const maximumColumnWidthIndex = calculateMaximumColumnWidthIndex(rows);
-
- _.times(rows[0].length, (index) => {
- if (_.isUndefined(columns[index])) {
- columns[index] = {};
- }
-
- columns[index] = Object.assign({
- alignment: 'left',
- paddingLeft: 1,
- paddingRight: 1,
- truncate: Infinity,
- width: maximumColumnWidthIndex[index],
- wrapWord: false
- }, columnDefault, columns[index]);
- });
-
- return columns;
-};
-
-/**
- * Makes a new configuration object out of the userConfig object
- * using default values for the missing configuration properties.
- *
- * @param {Array[]} rows
- * @param {Object} userConfig
- * @returns {Object}
- */
-export default (rows, userConfig = {}) => {
- validateConfig('config.json', userConfig);
-
- const config = _.cloneDeep(userConfig);
-
- config.border = makeBorder(config.border);
- config.columns = makeColumns(rows, config.columns, config.columnDefault);
-
- if (!config.drawHorizontalLine) {
- /**
- * @returns {boolean}
- */
- config.drawHorizontalLine = () => {
- return true;
- };
- }
-
- if (config.singleLine === undefined) {
- config.singleLine = false;
- }
-
- return config;
-};
diff --git a/assets/node_modules/table/dist/makeConfig.js.map b/assets/node_modules/table/dist/makeConfig.js.map
deleted file mode 100644
index 76d5360..0000000
--- a/assets/node_modules/table/dist/makeConfig.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/makeConfig.js"],"names":["makeBorder","border","Object","assign","makeColumns","rows","columns","columnDefault","maximumColumnWidthIndex","length","index","alignment","paddingLeft","paddingRight","truncate","Infinity","width","wrapWord","userConfig","config","drawHorizontalLine","singleLine","undefined"],"mappings":";;;;;;;;;;;;;AACA;;AACA;;AACA;;;;AAEA;;;;;;AAMA,MAAMA,UAAU,GAAG,CAACC,MAAM,GAAG,EAAV,KAAiB;AAClC,SAAOC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,kCAAoB,WAApB,CAAlB,EAAoDF,MAApD,CAAP;AACD,CAFD;AAIA;;;;;;;;;;;AASA,MAAMG,WAAW,GAAG,CAACC,IAAD,EAAOC,OAAO,GAAG,EAAjB,EAAqBC,aAAa,GAAG,EAArC,KAA4C;AAC9D,QAAMC,uBAAuB,GAAG,+CAAiCH,IAAjC,CAAhC;AAEA,uBAAQA,IAAI,CAAC,CAAD,CAAJ,CAAQI,MAAhB,EAAyBC,KAAD,IAAW;AACjC,QAAI,2BAAcJ,OAAO,CAACI,KAAD,CAArB,CAAJ,EAAmC;AACjCJ,MAAAA,OAAO,CAACI,KAAD,CAAP,GAAiB,EAAjB;AACD;;AAEDJ,IAAAA,OAAO,CAACI,KAAD,CAAP,GAAiBR,MAAM,CAACC,MAAP,CAAc;AAC7BQ,MAAAA,SAAS,EAAE,MADkB;AAE7BC,MAAAA,WAAW,EAAE,CAFgB;AAG7BC,MAAAA,YAAY,EAAE,CAHe;AAI7BC,MAAAA,QAAQ,EAAEC,QAJmB;AAK7BC,MAAAA,KAAK,EAAER,uBAAuB,CAACE,KAAD,CALD;AAM7BO,MAAAA,QAAQ,EAAE;AANmB,KAAd,EAOdV,aAPc,EAOCD,OAAO,CAACI,KAAD,CAPR,CAAjB;AAQD,GAbD;AAeA,SAAOJ,OAAP;AACD,CAnBD;AAqBA;;;;;;;;;;oBAQgBD,I,EAAMa,UAAU,GAAG,E,KAAO;AACxC,+BAAe,aAAf,EAA8BA,UAA9B;AAEA,QAAMC,MAAM,GAAG,yBAAYD,UAAZ,CAAf;AAEAC,EAAAA,MAAM,CAAClB,MAAP,GAAgBD,UAAU,CAACmB,MAAM,CAAClB,MAAR,CAA1B;AACAkB,EAAAA,MAAM,CAACb,OAAP,GAAiBF,WAAW,CAACC,IAAD,EAAOc,MAAM,CAACb,OAAd,EAAuBa,MAAM,CAACZ,aAA9B,CAA5B;;AAEA,MAAI,CAACY,MAAM,CAACC,kBAAZ,EAAgC;AAC9B;;;AAGAD,IAAAA,MAAM,CAACC,kBAAP,GAA4B,MAAM;AAChC,aAAO,IAAP;AACD,KAFD;AAGD;;AAED,MAAID,MAAM,CAACE,UAAP,KAAsBC,SAA1B,EAAqC;AACnCH,IAAAA,MAAM,CAACE,UAAP,GAAoB,KAApB;AACD;;AAED,SAAOF,MAAP;AACD,C","sourcesContent":["import _ from 'lodash';\nimport getBorderCharacters from './getBorderCharacters';\nimport validateConfig from './validateConfig';\nimport calculateMaximumColumnWidthIndex from './calculateMaximumColumnWidthIndex';\n\n/**\n * Merges user provided border characters with the default border (\"honeywell\") characters.\n *\n * @param {Object} border\n * @returns {Object}\n */\nconst makeBorder = (border = {}) => {\n return Object.assign({}, getBorderCharacters('honeywell'), border);\n};\n\n/**\n * Creates a configuration for every column using default\n * values for the missing configuration properties.\n *\n * @param {Array[]} rows\n * @param {Object} columns\n * @param {Object} columnDefault\n * @returns {Object}\n */\nconst makeColumns = (rows, columns = {}, columnDefault = {}) => {\n const maximumColumnWidthIndex = calculateMaximumColumnWidthIndex(rows);\n\n _.times(rows[0].length, (index) => {\n if (_.isUndefined(columns[index])) {\n columns[index] = {};\n }\n\n columns[index] = Object.assign({\n alignment: 'left',\n paddingLeft: 1,\n paddingRight: 1,\n truncate: Infinity,\n width: maximumColumnWidthIndex[index],\n wrapWord: false\n }, columnDefault, columns[index]);\n });\n\n return columns;\n};\n\n/**\n * Makes a new configuration object out of the userConfig object\n * using default values for the missing configuration properties.\n *\n * @param {Array[]} rows\n * @param {Object} userConfig\n * @returns {Object}\n */\nexport default (rows, userConfig = {}) => {\n validateConfig('config.json', userConfig);\n\n const config = _.cloneDeep(userConfig);\n\n config.border = makeBorder(config.border);\n config.columns = makeColumns(rows, config.columns, config.columnDefault);\n\n if (!config.drawHorizontalLine) {\n /**\n * @returns {boolean}\n */\n config.drawHorizontalLine = () => {\n return true;\n };\n }\n\n if (config.singleLine === undefined) {\n config.singleLine = false;\n }\n\n return config;\n};\n"],"file":"makeConfig.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/makeStreamConfig.js b/assets/node_modules/table/dist/makeStreamConfig.js
deleted file mode 100644
index bc949c5..0000000
--- a/assets/node_modules/table/dist/makeStreamConfig.js
+++ /dev/null
@@ -1,101 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
-
-var _isUndefined2 = _interopRequireDefault(require("lodash/isUndefined"));
-
-var _times2 = _interopRequireDefault(require("lodash/times"));
-
-var _getBorderCharacters = _interopRequireDefault(require("./getBorderCharacters"));
-
-var _validateConfig = _interopRequireDefault(require("./validateConfig"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Merges user provided border characters with the default border ("honeywell") characters.
- *
- * @param {Object} border
- * @returns {Object}
- */
-const makeBorder = (border = {}) => {
- return Object.assign({}, (0, _getBorderCharacters.default)('honeywell'), border);
-};
-/**
- * Creates a configuration for every column using default
- * values for the missing configuration properties.
- *
- * @param {number} columnCount
- * @param {Object} columns
- * @param {Object} columnDefault
- * @returns {Object}
- */
-
-
-const makeColumns = (columnCount, columns = {}, columnDefault = {}) => {
- (0, _times2.default)(columnCount, index => {
- if ((0, _isUndefined2.default)(columns[index])) {
- columns[index] = {};
- }
-
- columns[index] = Object.assign({
- alignment: 'left',
- paddingLeft: 1,
- paddingRight: 1,
- truncate: Infinity,
- wrapWord: false
- }, columnDefault, columns[index]);
- });
- return columns;
-};
-/**
- * @typedef {Object} columnConfig
- * @property {string} alignment
- * @property {number} width
- * @property {number} truncate
- * @property {number} paddingLeft
- * @property {number} paddingRight
- */
-
-/**
- * @typedef {Object} streamConfig
- * @property {columnConfig} columnDefault
- * @property {Object} border
- * @property {columnConfig[]}
- * @property {number} columnCount Number of columns in the table (required).
- */
-
-/**
- * Makes a new configuration object out of the userConfig object
- * using default values for the missing configuration properties.
- *
- * @param {streamConfig} userConfig
- * @returns {Object}
- */
-
-
-const makeStreamConfig = (userConfig = {}) => {
- (0, _validateConfig.default)('streamConfig.json', userConfig);
- const config = (0, _cloneDeep2.default)(userConfig);
-
- if (!config.columnDefault || !config.columnDefault.width) {
- throw new Error('Must provide config.columnDefault.width when creating a stream.');
- }
-
- if (!config.columnCount) {
- throw new Error('Must provide config.columnCount.');
- }
-
- config.border = makeBorder(config.border);
- config.columns = makeColumns(config.columnCount, config.columns, config.columnDefault);
- return config;
-};
-
-var _default = makeStreamConfig;
-exports.default = _default;
-//# sourceMappingURL=makeStreamConfig.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/makeStreamConfig.js.flow b/assets/node_modules/table/dist/makeStreamConfig.js.flow
deleted file mode 100644
index 884625a..0000000
--- a/assets/node_modules/table/dist/makeStreamConfig.js.flow
+++ /dev/null
@@ -1,83 +0,0 @@
-import _ from 'lodash';
-import getBorderCharacters from './getBorderCharacters';
-import validateConfig from './validateConfig';
-
-/**
- * Merges user provided border characters with the default border ("honeywell") characters.
- *
- * @param {Object} border
- * @returns {Object}
- */
-const makeBorder = (border = {}) => {
- return Object.assign({}, getBorderCharacters('honeywell'), border);
-};
-
-/**
- * Creates a configuration for every column using default
- * values for the missing configuration properties.
- *
- * @param {number} columnCount
- * @param {Object} columns
- * @param {Object} columnDefault
- * @returns {Object}
- */
-const makeColumns = (columnCount, columns = {}, columnDefault = {}) => {
- _.times(columnCount, (index) => {
- if (_.isUndefined(columns[index])) {
- columns[index] = {};
- }
-
- columns[index] = Object.assign({
- alignment: 'left',
- paddingLeft: 1,
- paddingRight: 1,
- truncate: Infinity,
- wrapWord: false
- }, columnDefault, columns[index]);
- });
-
- return columns;
-};
-
-/**
- * @typedef {Object} columnConfig
- * @property {string} alignment
- * @property {number} width
- * @property {number} truncate
- * @property {number} paddingLeft
- * @property {number} paddingRight
- */
-
-/**
- * @typedef {Object} streamConfig
- * @property {columnConfig} columnDefault
- * @property {Object} border
- * @property {columnConfig[]}
- * @property {number} columnCount Number of columns in the table (required).
- */
-
-/**
- * Makes a new configuration object out of the userConfig object
- * using default values for the missing configuration properties.
- *
- * @param {streamConfig} userConfig
- * @returns {Object}
- */
-export default (userConfig = {}) => {
- validateConfig('streamConfig.json', userConfig);
-
- const config = _.cloneDeep(userConfig);
-
- if (!config.columnDefault || !config.columnDefault.width) {
- throw new Error('Must provide config.columnDefault.width when creating a stream.');
- }
-
- if (!config.columnCount) {
- throw new Error('Must provide config.columnCount.');
- }
-
- config.border = makeBorder(config.border);
- config.columns = makeColumns(config.columnCount, config.columns, config.columnDefault);
-
- return config;
-};
diff --git a/assets/node_modules/table/dist/makeStreamConfig.js.map b/assets/node_modules/table/dist/makeStreamConfig.js.map
deleted file mode 100644
index 643e1d9..0000000
--- a/assets/node_modules/table/dist/makeStreamConfig.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/makeStreamConfig.js"],"names":["makeBorder","border","Object","assign","makeColumns","columnCount","columns","columnDefault","index","alignment","paddingLeft","paddingRight","truncate","Infinity","wrapWord","userConfig","config","width","Error"],"mappings":";;;;;;;;;;;;;AACA;;AACA;;;;AAEA;;;;;;AAMA,MAAMA,UAAU,GAAG,CAACC,MAAM,GAAG,EAAV,KAAiB;AAClC,SAAOC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,kCAAoB,WAApB,CAAlB,EAAoDF,MAApD,CAAP;AACD,CAFD;AAIA;;;;;;;;;;;AASA,MAAMG,WAAW,GAAG,CAACC,WAAD,EAAcC,OAAO,GAAG,EAAxB,EAA4BC,aAAa,GAAG,EAA5C,KAAmD;AACrE,uBAAQF,WAAR,EAAsBG,KAAD,IAAW;AAC9B,QAAI,2BAAcF,OAAO,CAACE,KAAD,CAArB,CAAJ,EAAmC;AACjCF,MAAAA,OAAO,CAACE,KAAD,CAAP,GAAiB,EAAjB;AACD;;AAEDF,IAAAA,OAAO,CAACE,KAAD,CAAP,GAAiBN,MAAM,CAACC,MAAP,CAAc;AAC7BM,MAAAA,SAAS,EAAE,MADkB;AAE7BC,MAAAA,WAAW,EAAE,CAFgB;AAG7BC,MAAAA,YAAY,EAAE,CAHe;AAI7BC,MAAAA,QAAQ,EAAEC,QAJmB;AAK7BC,MAAAA,QAAQ,EAAE;AALmB,KAAd,EAMdP,aANc,EAMCD,OAAO,CAACE,KAAD,CANR,CAAjB;AAOD,GAZD;AAcA,SAAOF,OAAP;AACD,CAhBD;AAkBA;;;;;;;;;AASA;;;;;;;;AAQA;;;;;;;;;0BAOgBS,UAAU,GAAG,E,KAAO;AAClC,+BAAe,mBAAf,EAAoCA,UAApC;AAEA,QAAMC,MAAM,GAAG,yBAAYD,UAAZ,CAAf;;AAEA,MAAI,CAACC,MAAM,CAACT,aAAR,IAAyB,CAACS,MAAM,CAACT,aAAP,CAAqBU,KAAnD,EAA0D;AACxD,UAAM,IAAIC,KAAJ,CAAU,iEAAV,CAAN;AACD;;AAED,MAAI,CAACF,MAAM,CAACX,WAAZ,EAAyB;AACvB,UAAM,IAAIa,KAAJ,CAAU,kCAAV,CAAN;AACD;;AAEDF,EAAAA,MAAM,CAACf,MAAP,GAAgBD,UAAU,CAACgB,MAAM,CAACf,MAAR,CAA1B;AACAe,EAAAA,MAAM,CAACV,OAAP,GAAiBF,WAAW,CAACY,MAAM,CAACX,WAAR,EAAqBW,MAAM,CAACV,OAA5B,EAAqCU,MAAM,CAACT,aAA5C,CAA5B;AAEA,SAAOS,MAAP;AACD,C","sourcesContent":["import _ from 'lodash';\nimport getBorderCharacters from './getBorderCharacters';\nimport validateConfig from './validateConfig';\n\n/**\n * Merges user provided border characters with the default border (\"honeywell\") characters.\n *\n * @param {Object} border\n * @returns {Object}\n */\nconst makeBorder = (border = {}) => {\n return Object.assign({}, getBorderCharacters('honeywell'), border);\n};\n\n/**\n * Creates a configuration for every column using default\n * values for the missing configuration properties.\n *\n * @param {number} columnCount\n * @param {Object} columns\n * @param {Object} columnDefault\n * @returns {Object}\n */\nconst makeColumns = (columnCount, columns = {}, columnDefault = {}) => {\n _.times(columnCount, (index) => {\n if (_.isUndefined(columns[index])) {\n columns[index] = {};\n }\n\n columns[index] = Object.assign({\n alignment: 'left',\n paddingLeft: 1,\n paddingRight: 1,\n truncate: Infinity,\n wrapWord: false\n }, columnDefault, columns[index]);\n });\n\n return columns;\n};\n\n/**\n * @typedef {Object} columnConfig\n * @property {string} alignment\n * @property {number} width\n * @property {number} truncate\n * @property {number} paddingLeft\n * @property {number} paddingRight\n */\n\n/**\n * @typedef {Object} streamConfig\n * @property {columnConfig} columnDefault\n * @property {Object} border\n * @property {columnConfig[]}\n * @property {number} columnCount Number of columns in the table (required).\n */\n\n/**\n * Makes a new configuration object out of the userConfig object\n * using default values for the missing configuration properties.\n *\n * @param {streamConfig} userConfig\n * @returns {Object}\n */\nexport default (userConfig = {}) => {\n validateConfig('streamConfig.json', userConfig);\n\n const config = _.cloneDeep(userConfig);\n\n if (!config.columnDefault || !config.columnDefault.width) {\n throw new Error('Must provide config.columnDefault.width when creating a stream.');\n }\n\n if (!config.columnCount) {\n throw new Error('Must provide config.columnCount.');\n }\n\n config.border = makeBorder(config.border);\n config.columns = makeColumns(config.columnCount, config.columns, config.columnDefault);\n\n return config;\n};\n"],"file":"makeStreamConfig.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/mapDataUsingRowHeightIndex.js b/assets/node_modules/table/dist/mapDataUsingRowHeightIndex.js
deleted file mode 100644
index 0a4d11d..0000000
--- a/assets/node_modules/table/dist/mapDataUsingRowHeightIndex.js
+++ /dev/null
@@ -1,44 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _flatten2 = _interopRequireDefault(require("lodash/flatten"));
-
-var _times2 = _interopRequireDefault(require("lodash/times"));
-
-var _wrapCell = _interopRequireDefault(require("./wrapCell"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * @param {Array} unmappedRows
- * @param {number[]} rowHeightIndex
- * @param {Object} config
- * @returns {Array}
- */
-const mapDataUsingRowHeightIndex = (unmappedRows, rowHeightIndex, config) => {
- const tableWidth = unmappedRows[0].length;
- const mappedRows = unmappedRows.map((cells, index0) => {
- const rowHeight = (0, _times2.default)(rowHeightIndex[index0], () => {
- return new Array(tableWidth).fill('');
- }); // rowHeight
- // [{row index within rowSaw; index2}]
- // [{cell index within a virtual row; index1}]
-
- cells.forEach((value, index1) => {
- const cellLines = (0, _wrapCell.default)(value, config.columns[index1].width, config.columns[index1].wrapWord);
- cellLines.forEach((cellLine, index2) => {
- rowHeight[index2][index1] = cellLine;
- });
- });
- return rowHeight;
- });
- return (0, _flatten2.default)(mappedRows);
-};
-
-var _default = mapDataUsingRowHeightIndex;
-exports.default = _default;
-//# sourceMappingURL=mapDataUsingRowHeightIndex.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/mapDataUsingRowHeightIndex.js.flow b/assets/node_modules/table/dist/mapDataUsingRowHeightIndex.js.flow
deleted file mode 100644
index 6562bdf..0000000
--- a/assets/node_modules/table/dist/mapDataUsingRowHeightIndex.js.flow
+++ /dev/null
@@ -1,34 +0,0 @@
-import _ from 'lodash';
-import wrapCell from './wrapCell';
-
-/**
- * @param {Array} unmappedRows
- * @param {number[]} rowHeightIndex
- * @param {Object} config
- * @returns {Array}
- */
-export default (unmappedRows, rowHeightIndex, config) => {
- const tableWidth = unmappedRows[0].length;
-
- const mappedRows = unmappedRows.map((cells, index0) => {
- const rowHeight = _.times(rowHeightIndex[index0], () => {
- return new Array(tableWidth).fill('');
- });
-
- // rowHeight
- // [{row index within rowSaw; index2}]
- // [{cell index within a virtual row; index1}]
-
- cells.forEach((value, index1) => {
- const cellLines = wrapCell(value, config.columns[index1].width, config.columns[index1].wrapWord);
-
- cellLines.forEach((cellLine, index2) => {
- rowHeight[index2][index1] = cellLine;
- });
- });
-
- return rowHeight;
- });
-
- return _.flatten(mappedRows);
-};
diff --git a/assets/node_modules/table/dist/mapDataUsingRowHeightIndex.js.map b/assets/node_modules/table/dist/mapDataUsingRowHeightIndex.js.map
deleted file mode 100644
index 5ac560c..0000000
--- a/assets/node_modules/table/dist/mapDataUsingRowHeightIndex.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/mapDataUsingRowHeightIndex.js"],"names":["unmappedRows","rowHeightIndex","config","tableWidth","length","mappedRows","map","cells","index0","rowHeight","Array","fill","forEach","value","index1","cellLines","columns","width","wrapWord","cellLine","index2"],"mappings":";;;;;;;;;;;AACA;;;;AAEA;;;;;;oCAMgBA,Y,EAAcC,c,EAAgBC,M,KAAW;AACvD,QAAMC,UAAU,GAAGH,YAAY,CAAC,CAAD,CAAZ,CAAgBI,MAAnC;AAEA,QAAMC,UAAU,GAAGL,YAAY,CAACM,GAAb,CAAiB,CAACC,KAAD,EAAQC,MAAR,KAAmB;AACrD,UAAMC,SAAS,GAAG,qBAAQR,cAAc,CAACO,MAAD,CAAtB,EAAgC,MAAM;AACtD,aAAO,IAAIE,KAAJ,CAAUP,UAAV,EAAsBQ,IAAtB,CAA2B,EAA3B,CAAP;AACD,KAFiB,CAAlB,CADqD,CAKrD;AACA;AACA;;AAEAJ,IAAAA,KAAK,CAACK,OAAN,CAAc,CAACC,KAAD,EAAQC,MAAR,KAAmB;AAC/B,YAAMC,SAAS,GAAG,uBAASF,KAAT,EAAgBX,MAAM,CAACc,OAAP,CAAeF,MAAf,EAAuBG,KAAvC,EAA8Cf,MAAM,CAACc,OAAP,CAAeF,MAAf,EAAuBI,QAArE,CAAlB;AAEAH,MAAAA,SAAS,CAACH,OAAV,CAAkB,CAACO,QAAD,EAAWC,MAAX,KAAsB;AACtCX,QAAAA,SAAS,CAACW,MAAD,CAAT,CAAkBN,MAAlB,IAA4BK,QAA5B;AACD,OAFD;AAGD,KAND;AAQA,WAAOV,SAAP;AACD,GAlBkB,CAAnB;AAoBA,SAAO,uBAAUJ,UAAV,CAAP;AACD,C","sourcesContent":["import _ from 'lodash';\nimport wrapCell from './wrapCell';\n\n/**\n * @param {Array} unmappedRows\n * @param {number[]} rowHeightIndex\n * @param {Object} config\n * @returns {Array}\n */\nexport default (unmappedRows, rowHeightIndex, config) => {\n const tableWidth = unmappedRows[0].length;\n\n const mappedRows = unmappedRows.map((cells, index0) => {\n const rowHeight = _.times(rowHeightIndex[index0], () => {\n return new Array(tableWidth).fill('');\n });\n\n // rowHeight\n // [{row index within rowSaw; index2}]\n // [{cell index within a virtual row; index1}]\n\n cells.forEach((value, index1) => {\n const cellLines = wrapCell(value, config.columns[index1].width, config.columns[index1].wrapWord);\n\n cellLines.forEach((cellLine, index2) => {\n rowHeight[index2][index1] = cellLine;\n });\n });\n\n return rowHeight;\n });\n\n return _.flatten(mappedRows);\n};\n"],"file":"mapDataUsingRowHeightIndex.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/padTableData.js b/assets/node_modules/table/dist/padTableData.js
deleted file mode 100644
index 81bd5f5..0000000
--- a/assets/node_modules/table/dist/padTableData.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-/**
- * @param {table~row[]} rows
- * @param {Object} config
- * @returns {table~row[]}
- */
-const padTableData = (rows, config) => {
- return rows.map(cells => {
- return cells.map((value, index1) => {
- const column = config.columns[index1];
- return ' '.repeat(column.paddingLeft) + value + ' '.repeat(column.paddingRight);
- });
- });
-};
-
-var _default = padTableData;
-exports.default = _default;
-//# sourceMappingURL=padTableData.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/padTableData.js.flow b/assets/node_modules/table/dist/padTableData.js.flow
deleted file mode 100644
index f23dc02..0000000
--- a/assets/node_modules/table/dist/padTableData.js.flow
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * @param {table~row[]} rows
- * @param {Object} config
- * @returns {table~row[]}
- */
-export default (rows, config) => {
- return rows.map((cells) => {
- return cells.map((value, index1) => {
- const column = config.columns[index1];
-
- return ' '.repeat(column.paddingLeft) + value + ' '.repeat(column.paddingRight);
- });
- });
-};
diff --git a/assets/node_modules/table/dist/padTableData.js.map b/assets/node_modules/table/dist/padTableData.js.map
deleted file mode 100644
index 783f9cc..0000000
--- a/assets/node_modules/table/dist/padTableData.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/padTableData.js"],"names":["rows","config","map","cells","value","index1","column","columns","repeat","paddingLeft","paddingRight"],"mappings":";;;;;;;AAAA;;;;;sBAKgBA,I,EAAMC,M,KAAW;AAC/B,SAAOD,IAAI,CAACE,GAAL,CAAUC,KAAD,IAAW;AACzB,WAAOA,KAAK,CAACD,GAAN,CAAU,CAACE,KAAD,EAAQC,MAAR,KAAmB;AAClC,YAAMC,MAAM,GAAGL,MAAM,CAACM,OAAP,CAAeF,MAAf,CAAf;AAEA,aAAO,IAAIG,MAAJ,CAAWF,MAAM,CAACG,WAAlB,IAAiCL,KAAjC,GAAyC,IAAII,MAAJ,CAAWF,MAAM,CAACI,YAAlB,CAAhD;AACD,KAJM,CAAP;AAKD,GANM,CAAP;AAOD,C","sourcesContent":["/**\n * @param {table~row[]} rows\n * @param {Object} config\n * @returns {table~row[]}\n */\nexport default (rows, config) => {\n return rows.map((cells) => {\n return cells.map((value, index1) => {\n const column = config.columns[index1];\n\n return ' '.repeat(column.paddingLeft) + value + ' '.repeat(column.paddingRight);\n });\n });\n};\n"],"file":"padTableData.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/schemas/config.json b/assets/node_modules/table/dist/schemas/config.json
deleted file mode 100644
index 1a4a998..0000000
--- a/assets/node_modules/table/dist/schemas/config.json
+++ /dev/null
@@ -1,114 +0,0 @@
-{
- "$id": "config.json",
- "$schema": "http://json-schema.org/draft-07/schema#",
- "type": "object",
- "properties": {
- "border": {
- "$ref": "#/definitions/borders"
- },
- "columns": {
- "$ref": "#/definitions/columns"
- },
- "columnDefault": {
- "$ref": "#/definitions/column"
- },
- "drawHorizontalLine": {
- "typeof": "function"
- }
- },
- "additionalProperties": false,
- "definitions": {
- "columns": {
- "type": "object",
- "patternProperties": {
- "^[0-9]+$": {
- "$ref": "#/definitions/column"
- }
- },
- "additionalProperties": false
- },
- "column": {
- "type": "object",
- "properties": {
- "alignment": {
- "type": "string",
- "enum": [
- "left",
- "right",
- "center"
- ]
- },
- "width": {
- "type": "number"
- },
- "wrapWord": {
- "type": "boolean"
- },
- "truncate": {
- "type": "number"
- },
- "paddingLeft": {
- "type": "number"
- },
- "paddingRight": {
- "type": "number"
- }
- },
- "additionalProperties": false
- },
- "borders": {
- "type": "object",
- "properties": {
- "topBody": {
- "$ref": "#/definitions/border"
- },
- "topJoin": {
- "$ref": "#/definitions/border"
- },
- "topLeft": {
- "$ref": "#/definitions/border"
- },
- "topRight": {
- "$ref": "#/definitions/border"
- },
- "bottomBody": {
- "$ref": "#/definitions/border"
- },
- "bottomJoin": {
- "$ref": "#/definitions/border"
- },
- "bottomLeft": {
- "$ref": "#/definitions/border"
- },
- "bottomRight": {
- "$ref": "#/definitions/border"
- },
- "bodyLeft": {
- "$ref": "#/definitions/border"
- },
- "bodyRight": {
- "$ref": "#/definitions/border"
- },
- "bodyJoin": {
- "$ref": "#/definitions/border"
- },
- "joinBody": {
- "$ref": "#/definitions/border"
- },
- "joinLeft": {
- "$ref": "#/definitions/border"
- },
- "joinRight": {
- "$ref": "#/definitions/border"
- },
- "joinJoin": {
- "$ref": "#/definitions/border"
- }
- },
- "additionalProperties": false
- },
- "border": {
- "type": "string"
- }
- }
-}
diff --git a/assets/node_modules/table/dist/schemas/streamConfig.json b/assets/node_modules/table/dist/schemas/streamConfig.json
deleted file mode 100644
index 3519984..0000000
--- a/assets/node_modules/table/dist/schemas/streamConfig.json
+++ /dev/null
@@ -1,114 +0,0 @@
-{
- "$id": "streamConfig.json",
- "$schema": "http://json-schema.org/draft-07/schema#",
- "type": "object",
- "properties": {
- "border": {
- "$ref": "#/definitions/borders"
- },
- "columns": {
- "$ref": "#/definitions/columns"
- },
- "columnDefault": {
- "$ref": "#/definitions/column"
- },
- "columnCount": {
- "type": "number"
- }
- },
- "additionalProperties": false,
- "definitions": {
- "columns": {
- "type": "object",
- "patternProperties": {
- "^[0-9]+$": {
- "$ref": "#/definitions/column"
- }
- },
- "additionalProperties": false
- },
- "column": {
- "type": "object",
- "properties": {
- "alignment": {
- "type": "string",
- "enum": [
- "left",
- "right",
- "center"
- ]
- },
- "width": {
- "type": "number"
- },
- "wrapWord": {
- "type": "boolean"
- },
- "truncate": {
- "type": "number"
- },
- "paddingLeft": {
- "type": "number"
- },
- "paddingRight": {
- "type": "number"
- }
- },
- "additionalProperties": false
- },
- "borders": {
- "type": "object",
- "properties": {
- "topBody": {
- "$ref": "#/definitions/border"
- },
- "topJoin": {
- "$ref": "#/definitions/border"
- },
- "topLeft": {
- "$ref": "#/definitions/border"
- },
- "topRight": {
- "$ref": "#/definitions/border"
- },
- "bottomBody": {
- "$ref": "#/definitions/border"
- },
- "bottomJoin": {
- "$ref": "#/definitions/border"
- },
- "bottomLeft": {
- "$ref": "#/definitions/border"
- },
- "bottomRight": {
- "$ref": "#/definitions/border"
- },
- "bodyLeft": {
- "$ref": "#/definitions/border"
- },
- "bodyRight": {
- "$ref": "#/definitions/border"
- },
- "bodyJoin": {
- "$ref": "#/definitions/border"
- },
- "joinBody": {
- "$ref": "#/definitions/border"
- },
- "joinLeft": {
- "$ref": "#/definitions/border"
- },
- "joinRight": {
- "$ref": "#/definitions/border"
- },
- "joinJoin": {
- "$ref": "#/definitions/border"
- }
- },
- "additionalProperties": false
- },
- "border": {
- "type": "string"
- }
- }
-}
diff --git a/assets/node_modules/table/dist/stringifyTableData.js b/assets/node_modules/table/dist/stringifyTableData.js
deleted file mode 100644
index 0217e3b..0000000
--- a/assets/node_modules/table/dist/stringifyTableData.js
+++ /dev/null
@@ -1,22 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-/**
- * Casts all cell values to a string.
- *
- * @param {table~row[]} rows
- * @returns {table~row[]}
- */
-const stringifyTableData = rows => {
- return rows.map(cells => {
- return cells.map(String);
- });
-};
-
-var _default = stringifyTableData;
-exports.default = _default;
-//# sourceMappingURL=stringifyTableData.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/stringifyTableData.js.flow b/assets/node_modules/table/dist/stringifyTableData.js.flow
deleted file mode 100644
index a4dffac..0000000
--- a/assets/node_modules/table/dist/stringifyTableData.js.flow
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * Casts all cell values to a string.
- *
- * @param {table~row[]} rows
- * @returns {table~row[]}
- */
-export default (rows) => {
- return rows.map((cells) => {
- return cells.map(String);
- });
-};
diff --git a/assets/node_modules/table/dist/stringifyTableData.js.map b/assets/node_modules/table/dist/stringifyTableData.js.map
deleted file mode 100644
index 6cbe5a7..0000000
--- a/assets/node_modules/table/dist/stringifyTableData.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/stringifyTableData.js"],"names":["rows","map","cells","String"],"mappings":";;;;;;;AAAA;;;;;;2BAMgBA,I,IAAS;AACvB,SAAOA,IAAI,CAACC,GAAL,CAAUC,KAAD,IAAW;AACzB,WAAOA,KAAK,CAACD,GAAN,CAAUE,MAAV,CAAP;AACD,GAFM,CAAP;AAGD,C","sourcesContent":["/**\n * Casts all cell values to a string.\n *\n * @param {table~row[]} rows\n * @returns {table~row[]}\n */\nexport default (rows) => {\n return rows.map((cells) => {\n return cells.map(String);\n });\n};\n"],"file":"stringifyTableData.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/table.js b/assets/node_modules/table/dist/table.js
deleted file mode 100644
index bd4e805..0000000
--- a/assets/node_modules/table/dist/table.js
+++ /dev/null
@@ -1,110 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _drawTable = _interopRequireDefault(require("./drawTable"));
-
-var _calculateCellWidthIndex = _interopRequireDefault(require("./calculateCellWidthIndex"));
-
-var _makeConfig = _interopRequireDefault(require("./makeConfig"));
-
-var _calculateRowHeightIndex = _interopRequireDefault(require("./calculateRowHeightIndex"));
-
-var _mapDataUsingRowHeightIndex = _interopRequireDefault(require("./mapDataUsingRowHeightIndex"));
-
-var _alignTableData = _interopRequireDefault(require("./alignTableData"));
-
-var _padTableData = _interopRequireDefault(require("./padTableData"));
-
-var _validateTableData = _interopRequireDefault(require("./validateTableData"));
-
-var _stringifyTableData = _interopRequireDefault(require("./stringifyTableData"));
-
-var _truncateTableData = _interopRequireDefault(require("./truncateTableData"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * @typedef {string} table~cell
- */
-
-/**
- * @typedef {table~cell[]} table~row
- */
-
-/**
- * @typedef {Object} table~columns
- * @property {string} alignment Cell content alignment (enum: left, center, right) (default: left).
- * @property {number} width Column width (default: auto).
- * @property {number} truncate Number of characters are which the content will be truncated (default: Infinity).
- * @property {boolean} wrapWord When true the text is broken at the nearest space or one of the special characters
- * @property {number} paddingLeft Cell content padding width left (default: 1).
- * @property {number} paddingRight Cell content padding width right (default: 1).
- */
-
-/**
- * @typedef {Object} table~border
- * @property {string} topBody
- * @property {string} topJoin
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} bottomBody
- * @property {string} bottomJoin
- * @property {string} bottomLeft
- * @property {string} bottomRight
- * @property {string} bodyLeft
- * @property {string} bodyRight
- * @property {string} bodyJoin
- * @property {string} joinBody
- * @property {string} joinLeft
- * @property {string} joinRight
- * @property {string} joinJoin
- */
-
-/**
- * Used to tell whether to draw a horizontal line.
- * This callback is called for each non-content line of the table.
- * The default behavior is to always return true.
- *
- * @typedef {Function} drawHorizontalLine
- * @param {number} index
- * @param {number} size
- * @returns {boolean}
- */
-
-/**
- * @typedef {Object} table~config
- * @property {table~border} border
- * @property {table~columns[]} columns Column specific configuration.
- * @property {table~columns} columnDefault Default values for all columns. Column specific settings overwrite the default values.
- * @property {table~drawHorizontalLine} drawHorizontalLine
- * @property {table~singleLine} singleLine Horizontal lines inside the table are not drawn.
- */
-
-/**
- * Generates a text table.
- *
- * @param {table~row[]} data
- * @param {table~config} userConfig
- * @returns {string}
- */
-const table = (data, userConfig = {}) => {
- let rows;
- (0, _validateTableData.default)(data);
- rows = (0, _stringifyTableData.default)(data);
- const config = (0, _makeConfig.default)(rows, userConfig);
- rows = (0, _truncateTableData.default)(data, config);
- const rowHeightIndex = (0, _calculateRowHeightIndex.default)(rows, config);
- rows = (0, _mapDataUsingRowHeightIndex.default)(rows, rowHeightIndex, config);
- rows = (0, _alignTableData.default)(rows, config);
- rows = (0, _padTableData.default)(rows, config);
- const cellWidthIndex = (0, _calculateCellWidthIndex.default)(rows[0]);
- return (0, _drawTable.default)(rows, config.border, cellWidthIndex, rowHeightIndex, config.drawHorizontalLine, config.singleLine);
-};
-
-var _default = table;
-exports.default = _default;
-//# sourceMappingURL=table.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/table.js.flow b/assets/node_modules/table/dist/table.js.flow
deleted file mode 100644
index 86af744..0000000
--- a/assets/node_modules/table/dist/table.js.flow
+++ /dev/null
@@ -1,96 +0,0 @@
-import drawTable from './drawTable';
-import calculateCellWidthIndex from './calculateCellWidthIndex';
-import makeConfig from './makeConfig';
-import calculateRowHeightIndex from './calculateRowHeightIndex';
-import mapDataUsingRowHeightIndex from './mapDataUsingRowHeightIndex';
-import alignTableData from './alignTableData';
-import padTableData from './padTableData';
-import validateTableData from './validateTableData';
-import stringifyTableData from './stringifyTableData';
-import truncateTableData from './truncateTableData';
-
-/**
- * @typedef {string} table~cell
- */
-
-/**
- * @typedef {table~cell[]} table~row
- */
-
-/**
- * @typedef {Object} table~columns
- * @property {string} alignment Cell content alignment (enum: left, center, right) (default: left).
- * @property {number} width Column width (default: auto).
- * @property {number} truncate Number of characters are which the content will be truncated (default: Infinity).
- * @property {boolean} wrapWord When true the text is broken at the nearest space or one of the special characters
- * @property {number} paddingLeft Cell content padding width left (default: 1).
- * @property {number} paddingRight Cell content padding width right (default: 1).
- */
-
-/**
- * @typedef {Object} table~border
- * @property {string} topBody
- * @property {string} topJoin
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} bottomBody
- * @property {string} bottomJoin
- * @property {string} bottomLeft
- * @property {string} bottomRight
- * @property {string} bodyLeft
- * @property {string} bodyRight
- * @property {string} bodyJoin
- * @property {string} joinBody
- * @property {string} joinLeft
- * @property {string} joinRight
- * @property {string} joinJoin
- */
-
-/**
- * Used to tell whether to draw a horizontal line.
- * This callback is called for each non-content line of the table.
- * The default behavior is to always return true.
- *
- * @typedef {Function} drawHorizontalLine
- * @param {number} index
- * @param {number} size
- * @returns {boolean}
- */
-
-/**
- * @typedef {Object} table~config
- * @property {table~border} border
- * @property {table~columns[]} columns Column specific configuration.
- * @property {table~columns} columnDefault Default values for all columns. Column specific settings overwrite the default values.
- * @property {table~drawHorizontalLine} drawHorizontalLine
- * @property {table~singleLine} singleLine Horizontal lines inside the table are not drawn.
- */
-
-/**
- * Generates a text table.
- *
- * @param {table~row[]} data
- * @param {table~config} userConfig
- * @returns {string}
- */
-export default (data, userConfig = {}) => {
- let rows;
-
- validateTableData(data);
-
- rows = stringifyTableData(data);
-
- const config = makeConfig(rows, userConfig);
-
- rows = truncateTableData(data, config);
-
- const rowHeightIndex = calculateRowHeightIndex(rows, config);
-
- rows = mapDataUsingRowHeightIndex(rows, rowHeightIndex, config);
- rows = alignTableData(rows, config);
- rows = padTableData(rows, config);
-
- const cellWidthIndex = calculateCellWidthIndex(rows[0]);
-
- return drawTable(rows, config.border, cellWidthIndex, rowHeightIndex, config.drawHorizontalLine, config.singleLine);
-};
diff --git a/assets/node_modules/table/dist/table.js.map b/assets/node_modules/table/dist/table.js.map
deleted file mode 100644
index 93f3aaa..0000000
--- a/assets/node_modules/table/dist/table.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/table.js"],"names":["data","userConfig","rows","config","rowHeightIndex","cellWidthIndex","border","drawHorizontalLine","singleLine"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA;;;;AAIA;;;;AAIA;;;;;;;;;;AAUA;;;;;;;;;;;;;;;;;;;AAmBA;;;;;;;;;;;AAWA;;;;;;;;;AASA;;;;;;;eAOgBA,I,EAAMC,UAAU,GAAG,E,KAAO;AACxC,MAAIC,IAAJ;AAEA,kCAAkBF,IAAlB;AAEAE,EAAAA,IAAI,GAAG,iCAAmBF,IAAnB,CAAP;AAEA,QAAMG,MAAM,GAAG,yBAAWD,IAAX,EAAiBD,UAAjB,CAAf;AAEAC,EAAAA,IAAI,GAAG,gCAAkBF,IAAlB,EAAwBG,MAAxB,CAAP;AAEA,QAAMC,cAAc,GAAG,sCAAwBF,IAAxB,EAA8BC,MAA9B,CAAvB;AAEAD,EAAAA,IAAI,GAAG,yCAA2BA,IAA3B,EAAiCE,cAAjC,EAAiDD,MAAjD,CAAP;AACAD,EAAAA,IAAI,GAAG,6BAAeA,IAAf,EAAqBC,MAArB,CAAP;AACAD,EAAAA,IAAI,GAAG,2BAAaA,IAAb,EAAmBC,MAAnB,CAAP;AAEA,QAAME,cAAc,GAAG,sCAAwBH,IAAI,CAAC,CAAD,CAA5B,CAAvB;AAEA,SAAO,wBAAUA,IAAV,EAAgBC,MAAM,CAACG,MAAvB,EAA+BD,cAA/B,EAA+CD,cAA/C,EAA+DD,MAAM,CAACI,kBAAtE,EAA0FJ,MAAM,CAACK,UAAjG,CAAP;AACD,C","sourcesContent":["import drawTable from './drawTable';\nimport calculateCellWidthIndex from './calculateCellWidthIndex';\nimport makeConfig from './makeConfig';\nimport calculateRowHeightIndex from './calculateRowHeightIndex';\nimport mapDataUsingRowHeightIndex from './mapDataUsingRowHeightIndex';\nimport alignTableData from './alignTableData';\nimport padTableData from './padTableData';\nimport validateTableData from './validateTableData';\nimport stringifyTableData from './stringifyTableData';\nimport truncateTableData from './truncateTableData';\n\n/**\n * @typedef {string} table~cell\n */\n\n/**\n * @typedef {table~cell[]} table~row\n */\n\n/**\n * @typedef {Object} table~columns\n * @property {string} alignment Cell content alignment (enum: left, center, right) (default: left).\n * @property {number} width Column width (default: auto).\n * @property {number} truncate Number of characters are which the content will be truncated (default: Infinity).\n * @property {boolean} wrapWord When true the text is broken at the nearest space or one of the special characters\n * @property {number} paddingLeft Cell content padding width left (default: 1).\n * @property {number} paddingRight Cell content padding width right (default: 1).\n */\n\n/**\n * @typedef {Object} table~border\n * @property {string} topBody\n * @property {string} topJoin\n * @property {string} topLeft\n * @property {string} topRight\n * @property {string} bottomBody\n * @property {string} bottomJoin\n * @property {string} bottomLeft\n * @property {string} bottomRight\n * @property {string} bodyLeft\n * @property {string} bodyRight\n * @property {string} bodyJoin\n * @property {string} joinBody\n * @property {string} joinLeft\n * @property {string} joinRight\n * @property {string} joinJoin\n */\n\n/**\n * Used to tell whether to draw a horizontal line.\n * This callback is called for each non-content line of the table.\n * The default behavior is to always return true.\n *\n * @typedef {Function} drawHorizontalLine\n * @param {number} index\n * @param {number} size\n * @returns {boolean}\n */\n\n/**\n * @typedef {Object} table~config\n * @property {table~border} border\n * @property {table~columns[]} columns Column specific configuration.\n * @property {table~columns} columnDefault Default values for all columns. Column specific settings overwrite the default values.\n * @property {table~drawHorizontalLine} drawHorizontalLine\n * @property {table~singleLine} singleLine Horizontal lines inside the table are not drawn.\n */\n\n/**\n * Generates a text table.\n *\n * @param {table~row[]} data\n * @param {table~config} userConfig\n * @returns {string}\n */\nexport default (data, userConfig = {}) => {\n let rows;\n\n validateTableData(data);\n\n rows = stringifyTableData(data);\n\n const config = makeConfig(rows, userConfig);\n\n rows = truncateTableData(data, config);\n\n const rowHeightIndex = calculateRowHeightIndex(rows, config);\n\n rows = mapDataUsingRowHeightIndex(rows, rowHeightIndex, config);\n rows = alignTableData(rows, config);\n rows = padTableData(rows, config);\n\n const cellWidthIndex = calculateCellWidthIndex(rows[0]);\n\n return drawTable(rows, config.border, cellWidthIndex, rowHeightIndex, config.drawHorizontalLine, config.singleLine);\n};\n"],"file":"table.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/truncateTableData.js b/assets/node_modules/table/dist/truncateTableData.js
deleted file mode 100644
index 89e1777..0000000
--- a/assets/node_modules/table/dist/truncateTableData.js
+++ /dev/null
@@ -1,30 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _truncate2 = _interopRequireDefault(require("lodash/truncate"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * @todo Make it work with ASCII content.
- * @param {table~row[]} rows
- * @param {Object} config
- * @returns {table~row[]}
- */
-const truncateTableData = (rows, config) => {
- return rows.map(cells => {
- return cells.map((content, index) => {
- return (0, _truncate2.default)(content, {
- length: config.columns[index].truncate
- });
- });
- });
-};
-
-var _default = truncateTableData;
-exports.default = _default;
-//# sourceMappingURL=truncateTableData.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/truncateTableData.js.flow b/assets/node_modules/table/dist/truncateTableData.js.flow
deleted file mode 100644
index 1052c92..0000000
--- a/assets/node_modules/table/dist/truncateTableData.js.flow
+++ /dev/null
@@ -1,17 +0,0 @@
-import _ from 'lodash';
-
-/**
- * @todo Make it work with ASCII content.
- * @param {table~row[]} rows
- * @param {Object} config
- * @returns {table~row[]}
- */
-export default (rows, config) => {
- return rows.map((cells) => {
- return cells.map((content, index) => {
- return _.truncate(content, {
- length: config.columns[index].truncate
- });
- });
- });
-};
diff --git a/assets/node_modules/table/dist/truncateTableData.js.map b/assets/node_modules/table/dist/truncateTableData.js.map
deleted file mode 100644
index e4ceaf8..0000000
--- a/assets/node_modules/table/dist/truncateTableData.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/truncateTableData.js"],"names":["rows","config","map","cells","content","index","length","columns","truncate"],"mappings":";;;;;;;;;;;AAEA;;;;;;2BAMgBA,I,EAAMC,M,KAAW;AAC/B,SAAOD,IAAI,CAACE,GAAL,CAAUC,KAAD,IAAW;AACzB,WAAOA,KAAK,CAACD,GAAN,CAAU,CAACE,OAAD,EAAUC,KAAV,KAAoB;AACnC,aAAO,wBAAWD,OAAX,EAAoB;AACzBE,QAAAA,MAAM,EAAEL,MAAM,CAACM,OAAP,CAAeF,KAAf,EAAsBG;AADL,OAApB,CAAP;AAGD,KAJM,CAAP;AAKD,GANM,CAAP;AAOD,C","sourcesContent":["import _ from 'lodash';\n\n/**\n * @todo Make it work with ASCII content.\n * @param {table~row[]} rows\n * @param {Object} config\n * @returns {table~row[]}\n */\nexport default (rows, config) => {\n return rows.map((cells) => {\n return cells.map((content, index) => {\n return _.truncate(content, {\n length: config.columns[index].truncate\n });\n });\n });\n};\n"],"file":"truncateTableData.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/validateConfig.js b/assets/node_modules/table/dist/validateConfig.js
deleted file mode 100644
index 40d8127..0000000
--- a/assets/node_modules/table/dist/validateConfig.js
+++ /dev/null
@@ -1,752 +0,0 @@
-'use strict';
-var equal = require('ajv/lib/compile/equal');
-var validate = (function() {
- var pattern0 = new RegExp('^[0-9]+$');
- var refVal = [];
- var refVal1 = (function() {
- var pattern0 = new RegExp('^[0-9]+$');
- return function validate(data, dataPath, parentData, parentDataProperty, rootData) {
- 'use strict';
- var vErrors = null;
- var errors = 0;
- if (rootData === undefined) rootData = data;
- if ((data && typeof data === "object" && !Array.isArray(data))) {
- var errs__0 = errors;
- var valid1 = true;
- for (var key0 in data) {
- var isAdditional0 = !(false || validate.schema.properties.hasOwnProperty(key0));
- if (isAdditional0) {
- valid1 = false;
- var err = {
- keyword: 'additionalProperties',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/additionalProperties',
- params: {
- additionalProperty: '' + key0 + ''
- },
- message: 'should NOT have additional properties'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- }
- if (data.topBody !== undefined) {
- var errs_1 = errors;
- if (!refVal2(data.topBody, (dataPath || '') + '.topBody', data, 'topBody', rootData)) {
- if (vErrors === null) vErrors = refVal2.errors;
- else vErrors = vErrors.concat(refVal2.errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.topJoin !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.topJoin, (dataPath || '') + '.topJoin', data, 'topJoin', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.topLeft !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.topLeft, (dataPath || '') + '.topLeft', data, 'topLeft', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.topRight !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.topRight, (dataPath || '') + '.topRight', data, 'topRight', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.bottomBody !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.bottomBody, (dataPath || '') + '.bottomBody', data, 'bottomBody', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.bottomJoin !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.bottomJoin, (dataPath || '') + '.bottomJoin', data, 'bottomJoin', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.bottomLeft !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.bottomLeft, (dataPath || '') + '.bottomLeft', data, 'bottomLeft', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.bottomRight !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.bottomRight, (dataPath || '') + '.bottomRight', data, 'bottomRight', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.bodyLeft !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.bodyLeft, (dataPath || '') + '.bodyLeft', data, 'bodyLeft', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.bodyRight !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.bodyRight, (dataPath || '') + '.bodyRight', data, 'bodyRight', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.bodyJoin !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.bodyJoin, (dataPath || '') + '.bodyJoin', data, 'bodyJoin', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.joinBody !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.joinBody, (dataPath || '') + '.joinBody', data, 'joinBody', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.joinLeft !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.joinLeft, (dataPath || '') + '.joinLeft', data, 'joinLeft', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.joinRight !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.joinRight, (dataPath || '') + '.joinRight', data, 'joinRight', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.joinJoin !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.joinJoin, (dataPath || '') + '.joinJoin', data, 'joinJoin', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- } else {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/type',
- params: {
- type: 'object'
- },
- message: 'should be object'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- validate.errors = vErrors;
- return errors === 0;
- };
- })();
- refVal1.schema = {
- "type": "object",
- "properties": {
- "topBody": {
- "$ref": "#/definitions/border"
- },
- "topJoin": {
- "$ref": "#/definitions/border"
- },
- "topLeft": {
- "$ref": "#/definitions/border"
- },
- "topRight": {
- "$ref": "#/definitions/border"
- },
- "bottomBody": {
- "$ref": "#/definitions/border"
- },
- "bottomJoin": {
- "$ref": "#/definitions/border"
- },
- "bottomLeft": {
- "$ref": "#/definitions/border"
- },
- "bottomRight": {
- "$ref": "#/definitions/border"
- },
- "bodyLeft": {
- "$ref": "#/definitions/border"
- },
- "bodyRight": {
- "$ref": "#/definitions/border"
- },
- "bodyJoin": {
- "$ref": "#/definitions/border"
- },
- "joinBody": {
- "$ref": "#/definitions/border"
- },
- "joinLeft": {
- "$ref": "#/definitions/border"
- },
- "joinRight": {
- "$ref": "#/definitions/border"
- },
- "joinJoin": {
- "$ref": "#/definitions/border"
- }
- },
- "additionalProperties": false
- };
- refVal1.errors = null;
- refVal[1] = refVal1;
- var refVal2 = (function() {
- var pattern0 = new RegExp('^[0-9]+$');
- return function validate(data, dataPath, parentData, parentDataProperty, rootData) {
- 'use strict';
- var vErrors = null;
- var errors = 0;
- if (typeof data !== "string") {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/type',
- params: {
- type: 'string'
- },
- message: 'should be string'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- validate.errors = vErrors;
- return errors === 0;
- };
- })();
- refVal2.schema = {
- "type": "string"
- };
- refVal2.errors = null;
- refVal[2] = refVal2;
- var refVal3 = (function() {
- var pattern0 = new RegExp('^[0-9]+$');
- return function validate(data, dataPath, parentData, parentDataProperty, rootData) {
- 'use strict';
- var vErrors = null;
- var errors = 0;
- if (rootData === undefined) rootData = data;
- if ((data && typeof data === "object" && !Array.isArray(data))) {
- var errs__0 = errors;
- var valid1 = true;
- for (var key0 in data) {
- var isAdditional0 = !(false || pattern0.test(key0));
- if (isAdditional0) {
- valid1 = false;
- var err = {
- keyword: 'additionalProperties',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/additionalProperties',
- params: {
- additionalProperty: '' + key0 + ''
- },
- message: 'should NOT have additional properties'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- }
- for (var key0 in data) {
- if (pattern0.test(key0)) {
- var errs_1 = errors;
- if (!refVal4(data[key0], (dataPath || '') + '[\'' + key0 + '\']', data, key0, rootData)) {
- if (vErrors === null) vErrors = refVal4.errors;
- else vErrors = vErrors.concat(refVal4.errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- }
- } else {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/type',
- params: {
- type: 'object'
- },
- message: 'should be object'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- validate.errors = vErrors;
- return errors === 0;
- };
- })();
- refVal3.schema = {
- "type": "object",
- "patternProperties": {
- "^[0-9]+$": {
- "$ref": "#/definitions/column"
- }
- },
- "additionalProperties": false
- };
- refVal3.errors = null;
- refVal[3] = refVal3;
- var refVal4 = (function() {
- var pattern0 = new RegExp('^[0-9]+$');
- return function validate(data, dataPath, parentData, parentDataProperty, rootData) {
- 'use strict';
- var vErrors = null;
- var errors = 0;
- if ((data && typeof data === "object" && !Array.isArray(data))) {
- var errs__0 = errors;
- var valid1 = true;
- for (var key0 in data) {
- var isAdditional0 = !(false || key0 == 'alignment' || key0 == 'width' || key0 == 'wrapWord' || key0 == 'truncate' || key0 == 'paddingLeft' || key0 == 'paddingRight');
- if (isAdditional0) {
- valid1 = false;
- var err = {
- keyword: 'additionalProperties',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/additionalProperties',
- params: {
- additionalProperty: '' + key0 + ''
- },
- message: 'should NOT have additional properties'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- }
- var data1 = data.alignment;
- if (data1 !== undefined) {
- var errs_1 = errors;
- if (typeof data1 !== "string") {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + '.alignment',
- schemaPath: '#/properties/alignment/type',
- params: {
- type: 'string'
- },
- message: 'should be string'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- var schema1 = validate.schema.properties.alignment.enum;
- var valid1;
- valid1 = false;
- for (var i1 = 0; i1 < schema1.length; i1++)
- if (equal(data1, schema1[i1])) {
- valid1 = true;
- break;
- } if (!valid1) {
- var err = {
- keyword: 'enum',
- dataPath: (dataPath || '') + '.alignment',
- schemaPath: '#/properties/alignment/enum',
- params: {
- allowedValues: schema1
- },
- message: 'should be equal to one of the allowed values'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- var valid1 = errors === errs_1;
- }
- if (data.width !== undefined) {
- var errs_1 = errors;
- if (typeof data.width !== "number") {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + '.width',
- schemaPath: '#/properties/width/type',
- params: {
- type: 'number'
- },
- message: 'should be number'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- var valid1 = errors === errs_1;
- }
- if (data.wrapWord !== undefined) {
- var errs_1 = errors;
- if (typeof data.wrapWord !== "boolean") {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + '.wrapWord',
- schemaPath: '#/properties/wrapWord/type',
- params: {
- type: 'boolean'
- },
- message: 'should be boolean'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- var valid1 = errors === errs_1;
- }
- if (data.truncate !== undefined) {
- var errs_1 = errors;
- if (typeof data.truncate !== "number") {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + '.truncate',
- schemaPath: '#/properties/truncate/type',
- params: {
- type: 'number'
- },
- message: 'should be number'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- var valid1 = errors === errs_1;
- }
- if (data.paddingLeft !== undefined) {
- var errs_1 = errors;
- if (typeof data.paddingLeft !== "number") {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + '.paddingLeft',
- schemaPath: '#/properties/paddingLeft/type',
- params: {
- type: 'number'
- },
- message: 'should be number'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- var valid1 = errors === errs_1;
- }
- if (data.paddingRight !== undefined) {
- var errs_1 = errors;
- if (typeof data.paddingRight !== "number") {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + '.paddingRight',
- schemaPath: '#/properties/paddingRight/type',
- params: {
- type: 'number'
- },
- message: 'should be number'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- var valid1 = errors === errs_1;
- }
- } else {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/type',
- params: {
- type: 'object'
- },
- message: 'should be object'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- validate.errors = vErrors;
- return errors === 0;
- };
- })();
- refVal4.schema = {
- "type": "object",
- "properties": {
- "alignment": {
- "type": "string",
- "enum": ["left", "right", "center"]
- },
- "width": {
- "type": "number"
- },
- "wrapWord": {
- "type": "boolean"
- },
- "truncate": {
- "type": "number"
- },
- "paddingLeft": {
- "type": "number"
- },
- "paddingRight": {
- "type": "number"
- }
- },
- "additionalProperties": false
- };
- refVal4.errors = null;
- refVal[4] = refVal4;
- return function validate(data, dataPath, parentData, parentDataProperty, rootData) {
- 'use strict'; /*# sourceURL=config.json */
- var vErrors = null;
- var errors = 0;
- if (rootData === undefined) rootData = data;
- if ((data && typeof data === "object" && !Array.isArray(data))) {
- var errs__0 = errors;
- var valid1 = true;
- for (var key0 in data) {
- var isAdditional0 = !(false || key0 == 'border' || key0 == 'columns' || key0 == 'columnDefault' || key0 == 'drawHorizontalLine');
- if (isAdditional0) {
- valid1 = false;
- var err = {
- keyword: 'additionalProperties',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/additionalProperties',
- params: {
- additionalProperty: '' + key0 + ''
- },
- message: 'should NOT have additional properties'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- }
- if (data.border !== undefined) {
- var errs_1 = errors;
- if (!refVal1(data.border, (dataPath || '') + '.border', data, 'border', rootData)) {
- if (vErrors === null) vErrors = refVal1.errors;
- else vErrors = vErrors.concat(refVal1.errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.columns !== undefined) {
- var errs_1 = errors;
- if (!refVal3(data.columns, (dataPath || '') + '.columns', data, 'columns', rootData)) {
- if (vErrors === null) vErrors = refVal3.errors;
- else vErrors = vErrors.concat(refVal3.errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.columnDefault !== undefined) {
- var errs_1 = errors;
- if (!refVal[4](data.columnDefault, (dataPath || '') + '.columnDefault', data, 'columnDefault', rootData)) {
- if (vErrors === null) vErrors = refVal[4].errors;
- else vErrors = vErrors.concat(refVal[4].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.drawHorizontalLine !== undefined) {
- var errs_1 = errors;
- var errs__1 = errors;
- var valid1;
- valid1 = typeof data.drawHorizontalLine == "function";
- if (!valid1) {
- if (errs__1 == errors) {
- var err = {
- keyword: 'typeof',
- dataPath: (dataPath || '') + '.drawHorizontalLine',
- schemaPath: '#/properties/drawHorizontalLine/typeof',
- params: {
- keyword: 'typeof'
- },
- message: 'should pass "typeof" keyword validation'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- } else {
- for (var i1 = errs__1; i1 < errors; i1++) {
- var ruleErr1 = vErrors[i1];
- if (ruleErr1.dataPath === undefined) ruleErr1.dataPath = (dataPath || '') + '.drawHorizontalLine';
- if (ruleErr1.schemaPath === undefined) {
- ruleErr1.schemaPath = "#/properties/drawHorizontalLine/typeof";
- }
- }
- }
- }
- var valid1 = errors === errs_1;
- }
- } else {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/type',
- params: {
- type: 'object'
- },
- message: 'should be object'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- validate.errors = vErrors;
- return errors === 0;
- };
-})();
-validate.schema = {
- "$id": "config.json",
- "$schema": "http://json-schema.org/draft-07/schema#",
- "type": "object",
- "properties": {
- "border": {
- "$ref": "#/definitions/borders"
- },
- "columns": {
- "$ref": "#/definitions/columns"
- },
- "columnDefault": {
- "$ref": "#/definitions/column"
- },
- "drawHorizontalLine": {
- "typeof": "function"
- }
- },
- "additionalProperties": false,
- "definitions": {
- "columns": {
- "type": "object",
- "patternProperties": {
- "^[0-9]+$": {
- "$ref": "#/definitions/column"
- }
- },
- "additionalProperties": false
- },
- "column": {
- "type": "object",
- "properties": {
- "alignment": {
- "type": "string",
- "enum": ["left", "right", "center"]
- },
- "width": {
- "type": "number"
- },
- "wrapWord": {
- "type": "boolean"
- },
- "truncate": {
- "type": "number"
- },
- "paddingLeft": {
- "type": "number"
- },
- "paddingRight": {
- "type": "number"
- }
- },
- "additionalProperties": false
- },
- "borders": {
- "type": "object",
- "properties": {
- "topBody": {
- "$ref": "#/definitions/border"
- },
- "topJoin": {
- "$ref": "#/definitions/border"
- },
- "topLeft": {
- "$ref": "#/definitions/border"
- },
- "topRight": {
- "$ref": "#/definitions/border"
- },
- "bottomBody": {
- "$ref": "#/definitions/border"
- },
- "bottomJoin": {
- "$ref": "#/definitions/border"
- },
- "bottomLeft": {
- "$ref": "#/definitions/border"
- },
- "bottomRight": {
- "$ref": "#/definitions/border"
- },
- "bodyLeft": {
- "$ref": "#/definitions/border"
- },
- "bodyRight": {
- "$ref": "#/definitions/border"
- },
- "bodyJoin": {
- "$ref": "#/definitions/border"
- },
- "joinBody": {
- "$ref": "#/definitions/border"
- },
- "joinLeft": {
- "$ref": "#/definitions/border"
- },
- "joinRight": {
- "$ref": "#/definitions/border"
- },
- "joinJoin": {
- "$ref": "#/definitions/border"
- }
- },
- "additionalProperties": false
- },
- "border": {
- "type": "string"
- }
- }
-};
-validate.errors = null;
-module.exports = validate; \ No newline at end of file
diff --git a/assets/node_modules/table/dist/validateConfig.js.flow b/assets/node_modules/table/dist/validateConfig.js.flow
deleted file mode 100644
index 14b9710..0000000
--- a/assets/node_modules/table/dist/validateConfig.js.flow
+++ /dev/null
@@ -1,34 +0,0 @@
-// eslint-disable-next-line import/default
-import validateConfig from '../dist/validateConfig';
-// eslint-disable-next-line import/default
-import validateStreamConfig from '../dist/validateStreamConfig';
-
-const validate = {
- 'config.json': validateConfig,
- 'streamConfig.json': validateStreamConfig
-};
-
-/**
- * @param {string} schemaId
- * @param {formatData~config} config
- * @returns {undefined}
- */
-export default (schemaId, config = {}) => {
- if (!validate[schemaId](config)) {
- const errors = validate[schemaId].errors.map((error) => {
- return {
- dataPath: error.dataPath,
- message: error.message,
- params: error.params,
- schemaPath: error.schemaPath
- };
- });
-
- /* eslint-disable no-console */
- console.log('config', config);
- console.log('errors', errors);
- /* eslint-enable no-console */
-
- throw new Error('Invalid config.');
- }
-};
diff --git a/assets/node_modules/table/dist/validateConfig.js.map b/assets/node_modules/table/dist/validateConfig.js.map
deleted file mode 100644
index 43bebf7..0000000
--- a/assets/node_modules/table/dist/validateConfig.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/validateConfig.js"],"names":["validate","validateConfig","validateStreamConfig","schemaId","config","errors","map","error","dataPath","message","params","schemaPath","console","log","Error"],"mappings":";;;;;;;AACA;;AAEA;;;;AAHA;AAEA;AAGA,MAAMA,QAAQ,GAAG;AACf,iBAAeC,uBADA;AAEf,uBAAqBC;AAFN,CAAjB;AAKA;;;;;;yBAKgBC,Q,EAAUC,MAAM,GAAG,E,KAAO;AACxC,MAAI,CAACJ,QAAQ,CAACG,QAAD,CAAR,CAAmBC,MAAnB,CAAL,EAAiC;AAC/B,UAAMC,MAAM,GAAGL,QAAQ,CAACG,QAAD,CAAR,CAAmBE,MAAnB,CAA0BC,GAA1B,CAA+BC,KAAD,IAAW;AACtD,aAAO;AACLC,QAAAA,QAAQ,EAAED,KAAK,CAACC,QADX;AAELC,QAAAA,OAAO,EAAEF,KAAK,CAACE,OAFV;AAGLC,QAAAA,MAAM,EAAEH,KAAK,CAACG,MAHT;AAILC,QAAAA,UAAU,EAAEJ,KAAK,CAACI;AAJb,OAAP;AAMD,KAPc,CAAf;AASA;;AACAC,IAAAA,OAAO,CAACC,GAAR,CAAY,QAAZ,EAAsBT,MAAtB;AACAQ,IAAAA,OAAO,CAACC,GAAR,CAAY,QAAZ,EAAsBR,MAAtB;AACA;;AAEA,UAAM,IAAIS,KAAJ,CAAU,iBAAV,CAAN;AACD;AACF,C","sourcesContent":["// eslint-disable-next-line import/default\nimport validateConfig from '../dist/validateConfig';\n// eslint-disable-next-line import/default\nimport validateStreamConfig from '../dist/validateStreamConfig';\n\nconst validate = {\n 'config.json': validateConfig,\n 'streamConfig.json': validateStreamConfig\n};\n\n/**\n * @param {string} schemaId\n * @param {formatData~config} config\n * @returns {undefined}\n */\nexport default (schemaId, config = {}) => {\n if (!validate[schemaId](config)) {\n const errors = validate[schemaId].errors.map((error) => {\n return {\n dataPath: error.dataPath,\n message: error.message,\n params: error.params,\n schemaPath: error.schemaPath\n };\n });\n\n /* eslint-disable no-console */\n console.log('config', config);\n console.log('errors', errors);\n /* eslint-enable no-console */\n\n throw new Error('Invalid config.');\n }\n};\n"],"file":"validateConfig.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/validateStreamConfig.js b/assets/node_modules/table/dist/validateStreamConfig.js
deleted file mode 100644
index ff10e59..0000000
--- a/assets/node_modules/table/dist/validateStreamConfig.js
+++ /dev/null
@@ -1,739 +0,0 @@
-'use strict';
-var equal = require('ajv/lib/compile/equal');
-var validate = (function() {
- var pattern0 = new RegExp('^[0-9]+$');
- var refVal = [];
- var refVal1 = (function() {
- var pattern0 = new RegExp('^[0-9]+$');
- return function validate(data, dataPath, parentData, parentDataProperty, rootData) {
- 'use strict';
- var vErrors = null;
- var errors = 0;
- if (rootData === undefined) rootData = data;
- if ((data && typeof data === "object" && !Array.isArray(data))) {
- var errs__0 = errors;
- var valid1 = true;
- for (var key0 in data) {
- var isAdditional0 = !(false || validate.schema.properties.hasOwnProperty(key0));
- if (isAdditional0) {
- valid1 = false;
- var err = {
- keyword: 'additionalProperties',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/additionalProperties',
- params: {
- additionalProperty: '' + key0 + ''
- },
- message: 'should NOT have additional properties'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- }
- if (data.topBody !== undefined) {
- var errs_1 = errors;
- if (!refVal2(data.topBody, (dataPath || '') + '.topBody', data, 'topBody', rootData)) {
- if (vErrors === null) vErrors = refVal2.errors;
- else vErrors = vErrors.concat(refVal2.errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.topJoin !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.topJoin, (dataPath || '') + '.topJoin', data, 'topJoin', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.topLeft !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.topLeft, (dataPath || '') + '.topLeft', data, 'topLeft', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.topRight !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.topRight, (dataPath || '') + '.topRight', data, 'topRight', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.bottomBody !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.bottomBody, (dataPath || '') + '.bottomBody', data, 'bottomBody', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.bottomJoin !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.bottomJoin, (dataPath || '') + '.bottomJoin', data, 'bottomJoin', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.bottomLeft !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.bottomLeft, (dataPath || '') + '.bottomLeft', data, 'bottomLeft', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.bottomRight !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.bottomRight, (dataPath || '') + '.bottomRight', data, 'bottomRight', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.bodyLeft !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.bodyLeft, (dataPath || '') + '.bodyLeft', data, 'bodyLeft', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.bodyRight !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.bodyRight, (dataPath || '') + '.bodyRight', data, 'bodyRight', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.bodyJoin !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.bodyJoin, (dataPath || '') + '.bodyJoin', data, 'bodyJoin', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.joinBody !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.joinBody, (dataPath || '') + '.joinBody', data, 'joinBody', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.joinLeft !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.joinLeft, (dataPath || '') + '.joinLeft', data, 'joinLeft', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.joinRight !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.joinRight, (dataPath || '') + '.joinRight', data, 'joinRight', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.joinJoin !== undefined) {
- var errs_1 = errors;
- if (!refVal[2](data.joinJoin, (dataPath || '') + '.joinJoin', data, 'joinJoin', rootData)) {
- if (vErrors === null) vErrors = refVal[2].errors;
- else vErrors = vErrors.concat(refVal[2].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- } else {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/type',
- params: {
- type: 'object'
- },
- message: 'should be object'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- validate.errors = vErrors;
- return errors === 0;
- };
- })();
- refVal1.schema = {
- "type": "object",
- "properties": {
- "topBody": {
- "$ref": "#/definitions/border"
- },
- "topJoin": {
- "$ref": "#/definitions/border"
- },
- "topLeft": {
- "$ref": "#/definitions/border"
- },
- "topRight": {
- "$ref": "#/definitions/border"
- },
- "bottomBody": {
- "$ref": "#/definitions/border"
- },
- "bottomJoin": {
- "$ref": "#/definitions/border"
- },
- "bottomLeft": {
- "$ref": "#/definitions/border"
- },
- "bottomRight": {
- "$ref": "#/definitions/border"
- },
- "bodyLeft": {
- "$ref": "#/definitions/border"
- },
- "bodyRight": {
- "$ref": "#/definitions/border"
- },
- "bodyJoin": {
- "$ref": "#/definitions/border"
- },
- "joinBody": {
- "$ref": "#/definitions/border"
- },
- "joinLeft": {
- "$ref": "#/definitions/border"
- },
- "joinRight": {
- "$ref": "#/definitions/border"
- },
- "joinJoin": {
- "$ref": "#/definitions/border"
- }
- },
- "additionalProperties": false
- };
- refVal1.errors = null;
- refVal[1] = refVal1;
- var refVal2 = (function() {
- var pattern0 = new RegExp('^[0-9]+$');
- return function validate(data, dataPath, parentData, parentDataProperty, rootData) {
- 'use strict';
- var vErrors = null;
- var errors = 0;
- if (typeof data !== "string") {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/type',
- params: {
- type: 'string'
- },
- message: 'should be string'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- validate.errors = vErrors;
- return errors === 0;
- };
- })();
- refVal2.schema = {
- "type": "string"
- };
- refVal2.errors = null;
- refVal[2] = refVal2;
- var refVal3 = (function() {
- var pattern0 = new RegExp('^[0-9]+$');
- return function validate(data, dataPath, parentData, parentDataProperty, rootData) {
- 'use strict';
- var vErrors = null;
- var errors = 0;
- if (rootData === undefined) rootData = data;
- if ((data && typeof data === "object" && !Array.isArray(data))) {
- var errs__0 = errors;
- var valid1 = true;
- for (var key0 in data) {
- var isAdditional0 = !(false || pattern0.test(key0));
- if (isAdditional0) {
- valid1 = false;
- var err = {
- keyword: 'additionalProperties',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/additionalProperties',
- params: {
- additionalProperty: '' + key0 + ''
- },
- message: 'should NOT have additional properties'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- }
- for (var key0 in data) {
- if (pattern0.test(key0)) {
- var errs_1 = errors;
- if (!refVal4(data[key0], (dataPath || '') + '[\'' + key0 + '\']', data, key0, rootData)) {
- if (vErrors === null) vErrors = refVal4.errors;
- else vErrors = vErrors.concat(refVal4.errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- }
- } else {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/type',
- params: {
- type: 'object'
- },
- message: 'should be object'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- validate.errors = vErrors;
- return errors === 0;
- };
- })();
- refVal3.schema = {
- "type": "object",
- "patternProperties": {
- "^[0-9]+$": {
- "$ref": "#/definitions/column"
- }
- },
- "additionalProperties": false
- };
- refVal3.errors = null;
- refVal[3] = refVal3;
- var refVal4 = (function() {
- var pattern0 = new RegExp('^[0-9]+$');
- return function validate(data, dataPath, parentData, parentDataProperty, rootData) {
- 'use strict';
- var vErrors = null;
- var errors = 0;
- if ((data && typeof data === "object" && !Array.isArray(data))) {
- var errs__0 = errors;
- var valid1 = true;
- for (var key0 in data) {
- var isAdditional0 = !(false || key0 == 'alignment' || key0 == 'width' || key0 == 'wrapWord' || key0 == 'truncate' || key0 == 'paddingLeft' || key0 == 'paddingRight');
- if (isAdditional0) {
- valid1 = false;
- var err = {
- keyword: 'additionalProperties',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/additionalProperties',
- params: {
- additionalProperty: '' + key0 + ''
- },
- message: 'should NOT have additional properties'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- }
- var data1 = data.alignment;
- if (data1 !== undefined) {
- var errs_1 = errors;
- if (typeof data1 !== "string") {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + '.alignment',
- schemaPath: '#/properties/alignment/type',
- params: {
- type: 'string'
- },
- message: 'should be string'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- var schema1 = validate.schema.properties.alignment.enum;
- var valid1;
- valid1 = false;
- for (var i1 = 0; i1 < schema1.length; i1++)
- if (equal(data1, schema1[i1])) {
- valid1 = true;
- break;
- } if (!valid1) {
- var err = {
- keyword: 'enum',
- dataPath: (dataPath || '') + '.alignment',
- schemaPath: '#/properties/alignment/enum',
- params: {
- allowedValues: schema1
- },
- message: 'should be equal to one of the allowed values'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- var valid1 = errors === errs_1;
- }
- if (data.width !== undefined) {
- var errs_1 = errors;
- if (typeof data.width !== "number") {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + '.width',
- schemaPath: '#/properties/width/type',
- params: {
- type: 'number'
- },
- message: 'should be number'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- var valid1 = errors === errs_1;
- }
- if (data.wrapWord !== undefined) {
- var errs_1 = errors;
- if (typeof data.wrapWord !== "boolean") {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + '.wrapWord',
- schemaPath: '#/properties/wrapWord/type',
- params: {
- type: 'boolean'
- },
- message: 'should be boolean'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- var valid1 = errors === errs_1;
- }
- if (data.truncate !== undefined) {
- var errs_1 = errors;
- if (typeof data.truncate !== "number") {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + '.truncate',
- schemaPath: '#/properties/truncate/type',
- params: {
- type: 'number'
- },
- message: 'should be number'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- var valid1 = errors === errs_1;
- }
- if (data.paddingLeft !== undefined) {
- var errs_1 = errors;
- if (typeof data.paddingLeft !== "number") {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + '.paddingLeft',
- schemaPath: '#/properties/paddingLeft/type',
- params: {
- type: 'number'
- },
- message: 'should be number'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- var valid1 = errors === errs_1;
- }
- if (data.paddingRight !== undefined) {
- var errs_1 = errors;
- if (typeof data.paddingRight !== "number") {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + '.paddingRight',
- schemaPath: '#/properties/paddingRight/type',
- params: {
- type: 'number'
- },
- message: 'should be number'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- var valid1 = errors === errs_1;
- }
- } else {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/type',
- params: {
- type: 'object'
- },
- message: 'should be object'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- validate.errors = vErrors;
- return errors === 0;
- };
- })();
- refVal4.schema = {
- "type": "object",
- "properties": {
- "alignment": {
- "type": "string",
- "enum": ["left", "right", "center"]
- },
- "width": {
- "type": "number"
- },
- "wrapWord": {
- "type": "boolean"
- },
- "truncate": {
- "type": "number"
- },
- "paddingLeft": {
- "type": "number"
- },
- "paddingRight": {
- "type": "number"
- }
- },
- "additionalProperties": false
- };
- refVal4.errors = null;
- refVal[4] = refVal4;
- return function validate(data, dataPath, parentData, parentDataProperty, rootData) {
- 'use strict'; /*# sourceURL=streamConfig.json */
- var vErrors = null;
- var errors = 0;
- if (rootData === undefined) rootData = data;
- if ((data && typeof data === "object" && !Array.isArray(data))) {
- var errs__0 = errors;
- var valid1 = true;
- for (var key0 in data) {
- var isAdditional0 = !(false || key0 == 'border' || key0 == 'columns' || key0 == 'columnDefault' || key0 == 'columnCount');
- if (isAdditional0) {
- valid1 = false;
- var err = {
- keyword: 'additionalProperties',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/additionalProperties',
- params: {
- additionalProperty: '' + key0 + ''
- },
- message: 'should NOT have additional properties'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- }
- if (data.border !== undefined) {
- var errs_1 = errors;
- if (!refVal1(data.border, (dataPath || '') + '.border', data, 'border', rootData)) {
- if (vErrors === null) vErrors = refVal1.errors;
- else vErrors = vErrors.concat(refVal1.errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.columns !== undefined) {
- var errs_1 = errors;
- if (!refVal3(data.columns, (dataPath || '') + '.columns', data, 'columns', rootData)) {
- if (vErrors === null) vErrors = refVal3.errors;
- else vErrors = vErrors.concat(refVal3.errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.columnDefault !== undefined) {
- var errs_1 = errors;
- if (!refVal[4](data.columnDefault, (dataPath || '') + '.columnDefault', data, 'columnDefault', rootData)) {
- if (vErrors === null) vErrors = refVal[4].errors;
- else vErrors = vErrors.concat(refVal[4].errors);
- errors = vErrors.length;
- }
- var valid1 = errors === errs_1;
- }
- if (data.columnCount !== undefined) {
- var errs_1 = errors;
- if (typeof data.columnCount !== "number") {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + '.columnCount',
- schemaPath: '#/properties/columnCount/type',
- params: {
- type: 'number'
- },
- message: 'should be number'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- var valid1 = errors === errs_1;
- }
- } else {
- var err = {
- keyword: 'type',
- dataPath: (dataPath || '') + "",
- schemaPath: '#/type',
- params: {
- type: 'object'
- },
- message: 'should be object'
- };
- if (vErrors === null) vErrors = [err];
- else vErrors.push(err);
- errors++;
- }
- validate.errors = vErrors;
- return errors === 0;
- };
-})();
-validate.schema = {
- "$id": "streamConfig.json",
- "$schema": "http://json-schema.org/draft-07/schema#",
- "type": "object",
- "properties": {
- "border": {
- "$ref": "#/definitions/borders"
- },
- "columns": {
- "$ref": "#/definitions/columns"
- },
- "columnDefault": {
- "$ref": "#/definitions/column"
- },
- "columnCount": {
- "type": "number"
- }
- },
- "additionalProperties": false,
- "definitions": {
- "columns": {
- "type": "object",
- "patternProperties": {
- "^[0-9]+$": {
- "$ref": "#/definitions/column"
- }
- },
- "additionalProperties": false
- },
- "column": {
- "type": "object",
- "properties": {
- "alignment": {
- "type": "string",
- "enum": ["left", "right", "center"]
- },
- "width": {
- "type": "number"
- },
- "wrapWord": {
- "type": "boolean"
- },
- "truncate": {
- "type": "number"
- },
- "paddingLeft": {
- "type": "number"
- },
- "paddingRight": {
- "type": "number"
- }
- },
- "additionalProperties": false
- },
- "borders": {
- "type": "object",
- "properties": {
- "topBody": {
- "$ref": "#/definitions/border"
- },
- "topJoin": {
- "$ref": "#/definitions/border"
- },
- "topLeft": {
- "$ref": "#/definitions/border"
- },
- "topRight": {
- "$ref": "#/definitions/border"
- },
- "bottomBody": {
- "$ref": "#/definitions/border"
- },
- "bottomJoin": {
- "$ref": "#/definitions/border"
- },
- "bottomLeft": {
- "$ref": "#/definitions/border"
- },
- "bottomRight": {
- "$ref": "#/definitions/border"
- },
- "bodyLeft": {
- "$ref": "#/definitions/border"
- },
- "bodyRight": {
- "$ref": "#/definitions/border"
- },
- "bodyJoin": {
- "$ref": "#/definitions/border"
- },
- "joinBody": {
- "$ref": "#/definitions/border"
- },
- "joinLeft": {
- "$ref": "#/definitions/border"
- },
- "joinRight": {
- "$ref": "#/definitions/border"
- },
- "joinJoin": {
- "$ref": "#/definitions/border"
- }
- },
- "additionalProperties": false
- },
- "border": {
- "type": "string"
- }
- }
-};
-validate.errors = null;
-module.exports = validate; \ No newline at end of file
diff --git a/assets/node_modules/table/dist/validateTableData.js b/assets/node_modules/table/dist/validateTableData.js
deleted file mode 100644
index bbd51ff..0000000
--- a/assets/node_modules/table/dist/validateTableData.js
+++ /dev/null
@@ -1,96 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-/**
- * @typedef {string} cell
- */
-
-/**
- * @typedef {cell[]} validateData~column
- */
-
-/**
- * @param {column[]} rows
- * @returns {undefined}
- */
-const validateTableData = rows => {
- if (!Array.isArray(rows)) {
- throw new TypeError('Table data must be an array.');
- }
-
- if (rows.length === 0) {
- throw new Error('Table must define at least one row.');
- }
-
- if (rows[0].length === 0) {
- throw new Error('Table must define at least one column.');
- }
-
- const columnNumber = rows[0].length;
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = rows[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- const cells = _step.value;
-
- if (!Array.isArray(cells)) {
- throw new TypeError('Table row data must be an array.');
- }
-
- if (cells.length !== columnNumber) {
- throw new Error('Table must have a consistent number of cells.');
- }
-
- var _iteratorNormalCompletion2 = true;
- var _didIteratorError2 = false;
- var _iteratorError2 = undefined;
-
- try {
- for (var _iterator2 = cells[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
- const cell = _step2.value;
-
- // eslint-disable-next-line no-control-regex
- if (/[\u0001-\u0006\u0008-\u0009\u000B-\u001A]/.test(cell)) {
- throw new Error('Table data must not contain control characters.');
- }
- }
- } catch (err) {
- _didIteratorError2 = true;
- _iteratorError2 = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
- _iterator2.return();
- }
- } finally {
- if (_didIteratorError2) {
- throw _iteratorError2;
- }
- }
- }
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-};
-
-var _default = validateTableData;
-exports.default = _default;
-//# sourceMappingURL=validateTableData.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/validateTableData.js.flow b/assets/node_modules/table/dist/validateTableData.js.flow
deleted file mode 100644
index 304ab0d..0000000
--- a/assets/node_modules/table/dist/validateTableData.js.flow
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * @typedef {string} cell
- */
-
-/**
- * @typedef {cell[]} validateData~column
- */
-
-/**
- * @param {column[]} rows
- * @returns {undefined}
- */
-export default (rows) => {
- if (!Array.isArray(rows)) {
- throw new TypeError('Table data must be an array.');
- }
-
- if (rows.length === 0) {
- throw new Error('Table must define at least one row.');
- }
-
- if (rows[0].length === 0) {
- throw new Error('Table must define at least one column.');
- }
-
- const columnNumber = rows[0].length;
-
- for (const cells of rows) {
- if (!Array.isArray(cells)) {
- throw new TypeError('Table row data must be an array.');
- }
-
- if (cells.length !== columnNumber) {
- throw new Error('Table must have a consistent number of cells.');
- }
-
- for (const cell of cells) {
- // eslint-disable-next-line no-control-regex
- if (/[\u0001-\u0006\u0008-\u0009\u000B-\u001A]/.test(cell)) {
- throw new Error('Table data must not contain control characters.');
- }
- }
- }
-};
diff --git a/assets/node_modules/table/dist/validateTableData.js.map b/assets/node_modules/table/dist/validateTableData.js.map
deleted file mode 100644
index 4114f4a..0000000
--- a/assets/node_modules/table/dist/validateTableData.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/validateTableData.js"],"names":["rows","Array","isArray","TypeError","length","Error","columnNumber","cells","cell","test"],"mappings":";;;;;;;AAAA;;;;AAIA;;;;AAIA;;;;0BAIgBA,I,IAAS;AACvB,MAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,IAAd,CAAL,EAA0B;AACxB,UAAM,IAAIG,SAAJ,CAAc,8BAAd,CAAN;AACD;;AAED,MAAIH,IAAI,CAACI,MAAL,KAAgB,CAApB,EAAuB;AACrB,UAAM,IAAIC,KAAJ,CAAU,qCAAV,CAAN;AACD;;AAED,MAAIL,IAAI,CAAC,CAAD,CAAJ,CAAQI,MAAR,KAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIC,KAAJ,CAAU,wCAAV,CAAN;AACD;;AAED,QAAMC,YAAY,GAAGN,IAAI,CAAC,CAAD,CAAJ,CAAQI,MAA7B;AAbuB;AAAA;AAAA;;AAAA;AAevB,yBAAoBJ,IAApB,8HAA0B;AAAA,YAAfO,KAAe;;AACxB,UAAI,CAACN,KAAK,CAACC,OAAN,CAAcK,KAAd,CAAL,EAA2B;AACzB,cAAM,IAAIJ,SAAJ,CAAc,kCAAd,CAAN;AACD;;AAED,UAAII,KAAK,CAACH,MAAN,KAAiBE,YAArB,EAAmC;AACjC,cAAM,IAAID,KAAJ,CAAU,+CAAV,CAAN;AACD;;AAPuB;AAAA;AAAA;;AAAA;AASxB,8BAAmBE,KAAnB,mIAA0B;AAAA,gBAAfC,IAAe;;AACxB;AACA,cAAI,4CAA4CC,IAA5C,CAAiDD,IAAjD,CAAJ,EAA4D;AAC1D,kBAAM,IAAIH,KAAJ,CAAU,iDAAV,CAAN;AACD;AACF;AAduB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAezB;AA9BsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BxB,C","sourcesContent":["/**\n * @typedef {string} cell\n */\n\n/**\n * @typedef {cell[]} validateData~column\n */\n\n/**\n * @param {column[]} rows\n * @returns {undefined}\n */\nexport default (rows) => {\n if (!Array.isArray(rows)) {\n throw new TypeError('Table data must be an array.');\n }\n\n if (rows.length === 0) {\n throw new Error('Table must define at least one row.');\n }\n\n if (rows[0].length === 0) {\n throw new Error('Table must define at least one column.');\n }\n\n const columnNumber = rows[0].length;\n\n for (const cells of rows) {\n if (!Array.isArray(cells)) {\n throw new TypeError('Table row data must be an array.');\n }\n\n if (cells.length !== columnNumber) {\n throw new Error('Table must have a consistent number of cells.');\n }\n\n for (const cell of cells) {\n // eslint-disable-next-line no-control-regex\n if (/[\\u0001-\\u0006\\u0008-\\u0009\\u000B-\\u001A]/.test(cell)) {\n throw new Error('Table data must not contain control characters.');\n }\n }\n }\n};\n"],"file":"validateTableData.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/wrapCell.js b/assets/node_modules/table/dist/wrapCell.js
deleted file mode 100644
index 3bddc4c..0000000
--- a/assets/node_modules/table/dist/wrapCell.js
+++ /dev/null
@@ -1,48 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _wrapString = _interopRequireDefault(require("./wrapString"));
-
-var _wrapWord = _interopRequireDefault(require("./wrapWord"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Wrap a single cell value into a list of lines
- *
- * Always wraps on newlines, for the remainder uses either word or string wrapping
- * depending on user configuration.
- *
- * @param {string} cellValue
- * @param {number} columnWidth
- * @param {boolean} useWrapWord
- * @returns {Array}
- */
-const wrapCell = (cellValue, columnWidth, useWrapWord) => {
- // First split on literal newlines
- const cellLines = cellValue.split('\n'); // Then iterate over the list and word-wrap every remaining line if necessary.
-
- for (let lineNr = 0; lineNr < cellLines.length;) {
- let lineChunks;
-
- if (useWrapWord) {
- lineChunks = (0, _wrapWord.default)(cellLines[lineNr], columnWidth);
- } else {
- lineChunks = (0, _wrapString.default)(cellLines[lineNr], columnWidth);
- } // Replace our original array element with whatever the wrapping returned
-
-
- cellLines.splice(lineNr, 1, ...lineChunks);
- lineNr += lineChunks.length;
- }
-
- return cellLines;
-};
-
-var _default = wrapCell;
-exports.default = _default;
-//# sourceMappingURL=wrapCell.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/wrapCell.js.flow b/assets/node_modules/table/dist/wrapCell.js.flow
deleted file mode 100644
index 0c66260..0000000
--- a/assets/node_modules/table/dist/wrapCell.js.flow
+++ /dev/null
@@ -1,35 +0,0 @@
-import wrapString from './wrapString';
-import wrapWord from './wrapWord';
-
-/**
- * Wrap a single cell value into a list of lines
- *
- * Always wraps on newlines, for the remainder uses either word or string wrapping
- * depending on user configuration.
- *
- * @param {string} cellValue
- * @param {number} columnWidth
- * @param {boolean} useWrapWord
- * @returns {Array}
- */
-export default (cellValue, columnWidth, useWrapWord) => {
- // First split on literal newlines
- const cellLines = cellValue.split('\n');
-
- // Then iterate over the list and word-wrap every remaining line if necessary.
- for (let lineNr = 0; lineNr < cellLines.length;) {
- let lineChunks;
-
- if (useWrapWord) {
- lineChunks = wrapWord(cellLines[lineNr], columnWidth);
- } else {
- lineChunks = wrapString(cellLines[lineNr], columnWidth);
- }
-
- // Replace our original array element with whatever the wrapping returned
- cellLines.splice(lineNr, 1, ...lineChunks);
- lineNr += lineChunks.length;
- }
-
- return cellLines;
-};
diff --git a/assets/node_modules/table/dist/wrapCell.js.map b/assets/node_modules/table/dist/wrapCell.js.map
deleted file mode 100644
index 79b36d1..0000000
--- a/assets/node_modules/table/dist/wrapCell.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/wrapCell.js"],"names":["cellValue","columnWidth","useWrapWord","cellLines","split","lineNr","length","lineChunks","splice"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA;;;;;;;;;;;kBAWgBA,S,EAAWC,W,EAAaC,W,KAAgB;AACtD;AACA,QAAMC,SAAS,GAAGH,SAAS,CAACI,KAAV,CAAgB,IAAhB,CAAlB,CAFsD,CAItD;;AACA,OAAK,IAAIC,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAGF,SAAS,CAACG,MAAxC,GAAiD;AAC/C,QAAIC,UAAJ;;AAEA,QAAIL,WAAJ,EAAiB;AACfK,MAAAA,UAAU,GAAG,uBAASJ,SAAS,CAACE,MAAD,CAAlB,EAA4BJ,WAA5B,CAAb;AACD,KAFD,MAEO;AACLM,MAAAA,UAAU,GAAG,yBAAWJ,SAAS,CAACE,MAAD,CAApB,EAA8BJ,WAA9B,CAAb;AACD,KAP8C,CAS/C;;;AACAE,IAAAA,SAAS,CAACK,MAAV,CAAiBH,MAAjB,EAAyB,CAAzB,EAA4B,GAAGE,UAA/B;AACAF,IAAAA,MAAM,IAAIE,UAAU,CAACD,MAArB;AACD;;AAED,SAAOH,SAAP;AACD,C","sourcesContent":["import wrapString from './wrapString';\nimport wrapWord from './wrapWord';\n\n/**\n * Wrap a single cell value into a list of lines\n *\n * Always wraps on newlines, for the remainder uses either word or string wrapping\n * depending on user configuration.\n *\n * @param {string} cellValue\n * @param {number} columnWidth\n * @param {boolean} useWrapWord\n * @returns {Array}\n */\nexport default (cellValue, columnWidth, useWrapWord) => {\n // First split on literal newlines\n const cellLines = cellValue.split('\\n');\n\n // Then iterate over the list and word-wrap every remaining line if necessary.\n for (let lineNr = 0; lineNr < cellLines.length;) {\n let lineChunks;\n\n if (useWrapWord) {\n lineChunks = wrapWord(cellLines[lineNr], columnWidth);\n } else {\n lineChunks = wrapString(cellLines[lineNr], columnWidth);\n }\n\n // Replace our original array element with whatever the wrapping returned\n cellLines.splice(lineNr, 1, ...lineChunks);\n lineNr += lineChunks.length;\n }\n\n return cellLines;\n};\n"],"file":"wrapCell.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/wrapString.js b/assets/node_modules/table/dist/wrapString.js
deleted file mode 100644
index c0dd8c8..0000000
--- a/assets/node_modules/table/dist/wrapString.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _sliceAnsi = _interopRequireDefault(require("slice-ansi"));
-
-var _stringWidth = _interopRequireDefault(require("string-width"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Creates an array of strings split into groups the length of size.
- * This function works with strings that contain ASCII characters.
- *
- * wrapText is different from would-be "chunk" implementation
- * in that whitespace characters that occur on a chunk size limit are trimmed.
- *
- * @param {string} subject
- * @param {number} size
- * @returns {Array}
- */
-const wrapString = (subject, size) => {
- let subjectSlice;
- subjectSlice = subject;
- const chunks = [];
-
- do {
- chunks.push((0, _sliceAnsi.default)(subjectSlice, 0, size));
- subjectSlice = (0, _sliceAnsi.default)(subjectSlice, size).trim();
- } while ((0, _stringWidth.default)(subjectSlice));
-
- return chunks;
-};
-
-var _default = wrapString;
-exports.default = _default;
-//# sourceMappingURL=wrapString.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/wrapString.js.flow b/assets/node_modules/table/dist/wrapString.js.flow
deleted file mode 100644
index bbb4072..0000000
--- a/assets/node_modules/table/dist/wrapString.js.flow
+++ /dev/null
@@ -1,29 +0,0 @@
-import slice from 'slice-ansi';
-import stringWidth from 'string-width';
-
-/**
- * Creates an array of strings split into groups the length of size.
- * This function works with strings that contain ASCII characters.
- *
- * wrapText is different from would-be "chunk" implementation
- * in that whitespace characters that occur on a chunk size limit are trimmed.
- *
- * @param {string} subject
- * @param {number} size
- * @returns {Array}
- */
-export default (subject, size) => {
- let subjectSlice;
-
- subjectSlice = subject;
-
- const chunks = [];
-
- do {
- chunks.push(slice(subjectSlice, 0, size));
-
- subjectSlice = slice(subjectSlice, size).trim();
- } while (stringWidth(subjectSlice));
-
- return chunks;
-};
diff --git a/assets/node_modules/table/dist/wrapString.js.map b/assets/node_modules/table/dist/wrapString.js.map
deleted file mode 100644
index 3d1d7b3..0000000
--- a/assets/node_modules/table/dist/wrapString.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/wrapString.js"],"names":["subject","size","subjectSlice","chunks","push","trim"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA;;;;;;;;;;;oBAWgBA,O,EAASC,I,KAAS;AAChC,MAAIC,YAAJ;AAEAA,EAAAA,YAAY,GAAGF,OAAf;AAEA,QAAMG,MAAM,GAAG,EAAf;;AAEA,KAAG;AACDA,IAAAA,MAAM,CAACC,IAAP,CAAY,wBAAMF,YAAN,EAAoB,CAApB,EAAuBD,IAAvB,CAAZ;AAEAC,IAAAA,YAAY,GAAG,wBAAMA,YAAN,EAAoBD,IAApB,EAA0BI,IAA1B,EAAf;AACD,GAJD,QAIS,0BAAYH,YAAZ,CAJT;;AAMA,SAAOC,MAAP;AACD,C","sourcesContent":["import slice from 'slice-ansi';\nimport stringWidth from 'string-width';\n\n/**\n * Creates an array of strings split into groups the length of size.\n * This function works with strings that contain ASCII characters.\n *\n * wrapText is different from would-be \"chunk\" implementation\n * in that whitespace characters that occur on a chunk size limit are trimmed.\n *\n * @param {string} subject\n * @param {number} size\n * @returns {Array}\n */\nexport default (subject, size) => {\n let subjectSlice;\n\n subjectSlice = subject;\n\n const chunks = [];\n\n do {\n chunks.push(slice(subjectSlice, 0, size));\n\n subjectSlice = slice(subjectSlice, size).trim();\n } while (stringWidth(subjectSlice));\n\n return chunks;\n};\n"],"file":"wrapString.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/dist/wrapWord.js b/assets/node_modules/table/dist/wrapWord.js
deleted file mode 100644
index 790b20b..0000000
--- a/assets/node_modules/table/dist/wrapWord.js
+++ /dev/null
@@ -1,47 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _sliceAnsi = _interopRequireDefault(require("slice-ansi"));
-
-var _stringWidth = _interopRequireDefault(require("string-width"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * @param {string} input
- * @param {number} size
- * @returns {Array}
- */
-const wrapWord = (input, size) => {
- let subject;
- subject = input;
- const chunks = []; // https://regex101.com/r/gY5kZ1/1
-
- const re = new RegExp('(^.{1,' + size + '}(\\s+|$))|(^.{1,' + (size - 1) + '}(\\\\|/|_|\\.|,|;|-))');
-
- do {
- let chunk;
- chunk = subject.match(re);
-
- if (chunk) {
- chunk = chunk[0];
- subject = (0, _sliceAnsi.default)(subject, (0, _stringWidth.default)(chunk));
- chunk = chunk.trim();
- } else {
- chunk = (0, _sliceAnsi.default)(subject, 0, size);
- subject = (0, _sliceAnsi.default)(subject, size);
- }
-
- chunks.push(chunk);
- } while ((0, _stringWidth.default)(subject));
-
- return chunks;
-};
-
-var _default = wrapWord;
-exports.default = _default;
-//# sourceMappingURL=wrapWord.js.map \ No newline at end of file
diff --git a/assets/node_modules/table/dist/wrapWord.js.flow b/assets/node_modules/table/dist/wrapWord.js.flow
deleted file mode 100644
index 02a8d45..0000000
--- a/assets/node_modules/table/dist/wrapWord.js.flow
+++ /dev/null
@@ -1,39 +0,0 @@
-import slice from 'slice-ansi';
-import stringWidth from 'string-width';
-
-/**
- * @param {string} input
- * @param {number} size
- * @returns {Array}
- */
-export default (input, size) => {
- let subject;
-
- subject = input;
-
- const chunks = [];
-
- // https://regex101.com/r/gY5kZ1/1
- const re = new RegExp('(^.{1,' + size + '}(\\s+|$))|(^.{1,' + (size - 1) + '}(\\\\|/|_|\\.|,|;|-))');
-
- do {
- let chunk;
-
- chunk = subject.match(re);
-
- if (chunk) {
- chunk = chunk[0];
-
- subject = slice(subject, stringWidth(chunk));
-
- chunk = chunk.trim();
- } else {
- chunk = slice(subject, 0, size);
- subject = slice(subject, size);
- }
-
- chunks.push(chunk);
- } while (stringWidth(subject));
-
- return chunks;
-};
diff --git a/assets/node_modules/table/dist/wrapWord.js.map b/assets/node_modules/table/dist/wrapWord.js.map
deleted file mode 100644
index 5e7aa9c..0000000
--- a/assets/node_modules/table/dist/wrapWord.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/wrapWord.js"],"names":["input","size","subject","chunks","re","RegExp","chunk","match","trim","push"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA;;;;;kBAKgBA,K,EAAOC,I,KAAS;AAC9B,MAAIC,OAAJ;AAEAA,EAAAA,OAAO,GAAGF,KAAV;AAEA,QAAMG,MAAM,GAAG,EAAf,CAL8B,CAO9B;;AACA,QAAMC,EAAE,GAAG,IAAIC,MAAJ,CAAW,WAAWJ,IAAX,GAAkB,mBAAlB,IAAyCA,IAAI,GAAG,CAAhD,IAAqD,wBAAhE,CAAX;;AAEA,KAAG;AACD,QAAIK,KAAJ;AAEAA,IAAAA,KAAK,GAAGJ,OAAO,CAACK,KAAR,CAAcH,EAAd,CAAR;;AAEA,QAAIE,KAAJ,EAAW;AACTA,MAAAA,KAAK,GAAGA,KAAK,CAAC,CAAD,CAAb;AAEAJ,MAAAA,OAAO,GAAG,wBAAMA,OAAN,EAAe,0BAAYI,KAAZ,CAAf,CAAV;AAEAA,MAAAA,KAAK,GAAGA,KAAK,CAACE,IAAN,EAAR;AACD,KAND,MAMO;AACLF,MAAAA,KAAK,GAAG,wBAAMJ,OAAN,EAAe,CAAf,EAAkBD,IAAlB,CAAR;AACAC,MAAAA,OAAO,GAAG,wBAAMA,OAAN,EAAeD,IAAf,CAAV;AACD;;AAEDE,IAAAA,MAAM,CAACM,IAAP,CAAYH,KAAZ;AACD,GAjBD,QAiBS,0BAAYJ,OAAZ,CAjBT;;AAmBA,SAAOC,MAAP;AACD,C","sourcesContent":["import slice from 'slice-ansi';\nimport stringWidth from 'string-width';\n\n/**\n * @param {string} input\n * @param {number} size\n * @returns {Array}\n */\nexport default (input, size) => {\n let subject;\n\n subject = input;\n\n const chunks = [];\n\n // https://regex101.com/r/gY5kZ1/1\n const re = new RegExp('(^.{1,' + size + '}(\\\\s+|$))|(^.{1,' + (size - 1) + '}(\\\\\\\\|/|_|\\\\.|,|;|-))');\n\n do {\n let chunk;\n\n chunk = subject.match(re);\n\n if (chunk) {\n chunk = chunk[0];\n\n subject = slice(subject, stringWidth(chunk));\n\n chunk = chunk.trim();\n } else {\n chunk = slice(subject, 0, size);\n subject = slice(subject, size);\n }\n\n chunks.push(chunk);\n } while (stringWidth(subject));\n\n return chunks;\n};\n"],"file":"wrapWord.js"} \ No newline at end of file
diff --git a/assets/node_modules/table/node_modules/ansi-regex/index.js b/assets/node_modules/table/node_modules/ansi-regex/index.js
deleted file mode 100644
index c254480..0000000
--- a/assets/node_modules/table/node_modules/ansi-regex/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict';
-
-module.exports = options => {
- options = Object.assign({
- onlyFirst: false
- }, options);
-
- const pattern = [
- '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)',
- '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'
- ].join('|');
-
- return new RegExp(pattern, options.onlyFirst ? undefined : 'g');
-};
diff --git a/assets/node_modules/table/node_modules/ansi-regex/license b/assets/node_modules/table/node_modules/ansi-regex/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/table/node_modules/ansi-regex/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/table/node_modules/ansi-regex/package.json b/assets/node_modules/table/node_modules/ansi-regex/package.json
deleted file mode 100644
index a849fdf..0000000
--- a/assets/node_modules/table/node_modules/ansi-regex/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "name": "ansi-regex",
- "version": "4.1.0",
- "description": "Regular expression for matching ANSI escape codes",
- "license": "MIT",
- "repository": "chalk/ansi-regex",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "xo && ava",
- "view-supported": "node fixtures/view-codes.js"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "ansi",
- "styles",
- "color",
- "colour",
- "colors",
- "terminal",
- "console",
- "cli",
- "string",
- "tty",
- "escape",
- "formatting",
- "rgb",
- "256",
- "shell",
- "xterm",
- "command-line",
- "text",
- "regex",
- "regexp",
- "re",
- "match",
- "test",
- "find",
- "pattern"
- ],
- "devDependencies": {
- "ava": "^0.25.0",
- "xo": "^0.23.0"
- }
-}
diff --git a/assets/node_modules/table/node_modules/ansi-regex/readme.md b/assets/node_modules/table/node_modules/ansi-regex/readme.md
deleted file mode 100644
index d19c446..0000000
--- a/assets/node_modules/table/node_modules/ansi-regex/readme.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# ansi-regex [![Build Status](https://travis-ci.org/chalk/ansi-regex.svg?branch=master)](https://travis-ci.org/chalk/ansi-regex)
-
-> Regular expression for matching [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code)
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-ansi-regex?utm_source=npm-ansi-regex&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
-
----
-
-
-## Install
-
-```
-$ npm install ansi-regex
-```
-
-
-## Usage
-
-```js
-const ansiRegex = require('ansi-regex');
-
-ansiRegex().test('\u001B[4mcake\u001B[0m');
-//=> true
-
-ansiRegex().test('cake');
-//=> false
-
-'\u001B[4mcake\u001B[0m'.match(ansiRegex());
-//=> ['\u001B[4m', '\u001B[0m']
-
-'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true}));
-//=> ['\u001B[4m']
-
-'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex());
-//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007']
-```
-
-
-## API
-
-### ansiRegex([options])
-
-Returns a regex for matching ANSI escape codes.
-
-#### options
-
-##### onlyFirst
-
-Type: `boolean`<br>
-Default: `false` *(Matches any ANSI escape codes in a string)*
-
-Match only the first ANSI escape.
-
-
-## FAQ
-
-### Why do you test for codes not in the ECMA 48 standard?
-
-Some of the codes we run as a test are codes that we acquired finding various lists of non-standard or manufacturer specific codes. We test for both standard and non-standard codes, as most of them follow the same or similar format and can be safely matched in strings without the risk of removing actual string content. There are a few non-standard control codes that do not follow the traditional format (i.e. they end in numbers) thus forcing us to exclude them from the test because we cannot reliably match them.
-
-On the historical side, those ECMA standards were established in the early 90's whereas the VT100, for example, was designed in the mid/late 70's. At that point in time, control codes were still pretty ungoverned and engineers used them for a multitude of things, namely to activate hardware ports that may have been proprietary. Somewhere else you see a similar 'anarchy' of codes is in the x86 architecture for processors; there are a ton of "interrupts" that can mean different things on certain brands of processors, most of which have been phased out.
-
-
-## Security
-
-To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
-
-
-## Maintainers
-
-- [Sindre Sorhus](https://github.com/sindresorhus)
-- [Josh Junon](https://github.com/qix-)
-
-
-## License
-
-MIT
diff --git a/assets/node_modules/table/node_modules/emoji-regex/LICENSE-MIT.txt b/assets/node_modules/table/node_modules/emoji-regex/LICENSE-MIT.txt
deleted file mode 100644
index a41e0a7..0000000
--- a/assets/node_modules/table/node_modules/emoji-regex/LICENSE-MIT.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-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/assets/node_modules/table/node_modules/emoji-regex/README.md b/assets/node_modules/table/node_modules/emoji-regex/README.md
deleted file mode 100644
index 37cf14e..0000000
--- a/assets/node_modules/table/node_modules/emoji-regex/README.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# emoji-regex [![Build status](https://travis-ci.org/mathiasbynens/emoji-regex.svg?branch=master)](https://travis-ci.org/mathiasbynens/emoji-regex)
-
-_emoji-regex_ offers a regular expression to match all emoji symbols (including textual representations of emoji) as per the Unicode Standard.
-
-This repository contains a script that generates this regular expression based on [the data from Unicode Technical Report #51](https://github.com/mathiasbynens/unicode-tr51). Because of this, the regular expression can easily be updated whenever new emoji are added to the Unicode standard.
-
-## Installation
-
-Via [npm](https://www.npmjs.com/):
-
-```bash
-npm install emoji-regex
-```
-
-In [Node.js](https://nodejs.org/):
-
-```js
-const emojiRegex = require('emoji-regex');
-// Note: because the regular expression has the global flag set, this module
-// exports a function that returns the regex rather than exporting the regular
-// expression itself, to make it impossible to (accidentally) mutate the
-// original regular expression.
-
-const text = `
-\u{231A}: ⌚ default emoji presentation character (Emoji_Presentation)
-\u{2194}\u{FE0F}: ↔️ default text presentation character rendered as emoji
-\u{1F469}: 👩 emoji modifier base (Emoji_Modifier_Base)
-\u{1F469}\u{1F3FF}: 👩🏿 emoji modifier base followed by a modifier
-`;
-
-const regex = emojiRegex();
-let match;
-while (match = regex.exec(text)) {
- const emoji = match[0];
- console.log(`Matched sequence ${ emoji } — code points: ${ [...emoji].length }`);
-}
-```
-
-Console output:
-
-```
-Matched sequence ⌚ — code points: 1
-Matched sequence ⌚ — code points: 1
-Matched sequence ↔️ — code points: 2
-Matched sequence ↔️ — code points: 2
-Matched sequence 👩 — code points: 1
-Matched sequence 👩 — code points: 1
-Matched sequence 👩🏿 — code points: 2
-Matched sequence 👩🏿 — code points: 2
-```
-
-To match emoji in their textual representation as well (i.e. emoji that are not `Emoji_Presentation` symbols and that aren’t forced to render as emoji by a variation selector), `require` the other regex:
-
-```js
-const emojiRegex = require('emoji-regex/text.js');
-```
-
-Additionally, in environments which support ES2015 Unicode escapes, you may `require` ES2015-style versions of the regexes:
-
-```js
-const emojiRegex = require('emoji-regex/es2015/index.js');
-const emojiRegexText = require('emoji-regex/es2015/text.js');
-```
-
-## Author
-
-| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") |
-|---|
-| [Mathias Bynens](https://mathiasbynens.be/) |
-
-## License
-
-_emoji-regex_ is available under the [MIT](https://mths.be/mit) license.
diff --git a/assets/node_modules/table/node_modules/emoji-regex/es2015/index.js b/assets/node_modules/table/node_modules/emoji-regex/es2015/index.js
deleted file mode 100644
index 0216db9..0000000
--- a/assets/node_modules/table/node_modules/emoji-regex/es2015/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-"use strict";
-
-module.exports = () => {
- // https://mths.be/emoji
- return /\u{1F3F4}(?:\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0077}\u{E006C}\u{E0073}|\u{E0073}\u{E0063}\u{E0074})\u{E007F}|\u200D\u2620\uFE0F)|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F468}(?:\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|[\u{1F3FB}-\u{1F3FF}]\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|\u{1F469}\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]\u200D[\u2695\u2696\u2708]|\u{1F468}(?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F469}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|\u{1F468}(?:\u200D(?:[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u{1F466}\u{1F467}])|[\u{1F3FB}-\u{1F3FF}])|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F469}\u200D\u{1F467}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}]|\u{1F469}\u200D\u{1F466}|\u{1F1F6}\u{1F1E6}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|[#\*0-9]\uFE0F\u20E3|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9D1}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6F9}\u{1F910}-\u{1F93A}\u{1F93C}-\u{1F93E}\u{1F940}-\u{1F945}\u{1F947}-\u{1F970}\u{1F973}-\u{1F976}\u{1F97A}\u{1F97C}-\u{1F9A2}\u{1F9B0}-\u{1F9B9}\u{1F9C0}-\u{1F9C2}\u{1F9D0}-\u{1F9FF}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6F9}\u{1F910}-\u{1F93A}\u{1F93C}-\u{1F93E}\u{1F940}-\u{1F945}\u{1F947}-\u{1F970}\u{1F973}-\u{1F976}\u{1F97A}\u{1F97C}-\u{1F9A2}\u{1F9B0}-\u{1F9B9}\u{1F9C0}-\u{1F9C2}\u{1F9D0}-\u{1F9FF}]\uFE0F|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F469}\u{1F46E}\u{1F470}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9D1}-\u{1F9DD}]/gu;
-};
diff --git a/assets/node_modules/table/node_modules/emoji-regex/es2015/text.js b/assets/node_modules/table/node_modules/emoji-regex/es2015/text.js
deleted file mode 100644
index d0a771d..0000000
--- a/assets/node_modules/table/node_modules/emoji-regex/es2015/text.js
+++ /dev/null
@@ -1,6 +0,0 @@
-"use strict";
-
-module.exports = () => {
- // https://mths.be/emoji
- return /\u{1F3F4}(?:\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0077}\u{E006C}\u{E0073}|\u{E0073}\u{E0063}\u{E0074})\u{E007F}|\u200D\u2620\uFE0F)|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F468}(?:\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|[\u{1F3FB}-\u{1F3FF}]\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|\u{1F469}\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]\u200D[\u2695\u2696\u2708]|\u{1F468}(?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F469}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|\u{1F468}(?:\u200D(?:[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u{1F466}\u{1F467}])|[\u{1F3FB}-\u{1F3FF}])|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F469}\u200D\u{1F467}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}]|\u{1F469}\u200D\u{1F466}|\u{1F1F6}\u{1F1E6}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|[#\*0-9]\uFE0F\u20E3|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9D1}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6F9}\u{1F910}-\u{1F93A}\u{1F93C}-\u{1F93E}\u{1F940}-\u{1F945}\u{1F947}-\u{1F970}\u{1F973}-\u{1F976}\u{1F97A}\u{1F97C}-\u{1F9A2}\u{1F9B0}-\u{1F9B9}\u{1F9C0}-\u{1F9C2}\u{1F9D0}-\u{1F9FF}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6F9}\u{1F910}-\u{1F93A}\u{1F93C}-\u{1F93E}\u{1F940}-\u{1F945}\u{1F947}-\u{1F970}\u{1F973}-\u{1F976}\u{1F97A}\u{1F97C}-\u{1F9A2}\u{1F9B0}-\u{1F9B9}\u{1F9C0}-\u{1F9C2}\u{1F9D0}-\u{1F9FF}]\uFE0F?|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F469}\u{1F46E}\u{1F470}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9D1}-\u{1F9DD}]/gu;
-};
diff --git a/assets/node_modules/table/node_modules/emoji-regex/index.d.ts b/assets/node_modules/table/node_modules/emoji-regex/index.d.ts
deleted file mode 100644
index 2c317cd..0000000
--- a/assets/node_modules/table/node_modules/emoji-regex/index.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-declare module 'emoji-regex' {
- function emojiRegex(): RegExp;
-
- export default emojiRegex;
-}
diff --git a/assets/node_modules/table/node_modules/emoji-regex/index.js b/assets/node_modules/table/node_modules/emoji-regex/index.js
deleted file mode 100644
index e2237a4..0000000
--- a/assets/node_modules/table/node_modules/emoji-regex/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-"use strict";
-
-module.exports = function () {
- // https://mths.be/emoji
- return /\uD83C\uDFF4(?:\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74)\uDB40\uDC7F|\u200D\u2620\uFE0F)|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC68(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3]))|\uD83D\uDC69\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\uD83D\uDC68(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83D\uDC69\u200D[\u2695\u2696\u2708])\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC68(?:\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDD1-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDEEB\uDEEC\uDEF4-\uDEF9]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD70\uDD73-\uDD76\uDD7A\uDD7C-\uDDA2\uDDB0-\uDDB9\uDDC0-\uDDC2\uDDD0-\uDDFF])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEF9]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD70\uDD73-\uDD76\uDD7A\uDD7C-\uDDA2\uDDB0-\uDDB9\uDDC0-\uDDC2\uDDD0-\uDDFF])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC69\uDC6E\uDC70-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD26\uDD30-\uDD39\uDD3D\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDD1-\uDDDD])/g;
-};
diff --git a/assets/node_modules/table/node_modules/emoji-regex/package.json b/assets/node_modules/table/node_modules/emoji-regex/package.json
deleted file mode 100644
index ed68e52..0000000
--- a/assets/node_modules/table/node_modules/emoji-regex/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "name": "emoji-regex",
- "version": "7.0.3",
- "description": "A regular expression to match all Emoji-only symbols as per the Unicode Standard.",
- "homepage": "https://mths.be/emoji-regex",
- "main": "index.js",
- "types": "index.d.ts",
- "keywords": [
- "unicode",
- "regex",
- "regexp",
- "regular expressions",
- "code points",
- "symbols",
- "characters",
- "emoji"
- ],
- "license": "MIT",
- "author": {
- "name": "Mathias Bynens",
- "url": "https://mathiasbynens.be/"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/mathiasbynens/emoji-regex.git"
- },
- "bugs": "https://github.com/mathiasbynens/emoji-regex/issues",
- "files": [
- "LICENSE-MIT.txt",
- "index.js",
- "index.d.ts",
- "text.js",
- "es2015/index.js",
- "es2015/text.js"
- ],
- "scripts": {
- "build": "rm -rf -- es2015; babel src -d .; NODE_ENV=es2015 babel src -d ./es2015; node script/inject-sequences.js",
- "test": "mocha",
- "test:watch": "npm run test -- --watch"
- },
- "devDependencies": {
- "@babel/cli": "^7.0.0",
- "@babel/core": "^7.0.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.0.0",
- "@babel/preset-env": "^7.0.0",
- "mocha": "^5.2.0",
- "regexgen": "^1.3.0",
- "unicode-11.0.0": "^0.7.7",
- "unicode-tr51": "^9.0.1"
- }
-}
diff --git a/assets/node_modules/table/node_modules/emoji-regex/text.js b/assets/node_modules/table/node_modules/emoji-regex/text.js
deleted file mode 100644
index 199ae3b..0000000
--- a/assets/node_modules/table/node_modules/emoji-regex/text.js
+++ /dev/null
@@ -1,6 +0,0 @@
-"use strict";
-
-module.exports = function () {
- // https://mths.be/emoji
- return /\uD83C\uDFF4(?:\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74)\uDB40\uDC7F|\u200D\u2620\uFE0F)|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC68(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3]))|\uD83D\uDC69\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\uD83D\uDC68(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83D\uDC69\u200D[\u2695\u2696\u2708])\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC68(?:\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDD1-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDEEB\uDEEC\uDEF4-\uDEF9]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD70\uDD73-\uDD76\uDD7A\uDD7C-\uDDA2\uDDB0-\uDDB9\uDDC0-\uDDC2\uDDD0-\uDDFF])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEF9]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD70\uDD73-\uDD76\uDD7A\uDD7C-\uDDA2\uDDB0-\uDDB9\uDDC0-\uDDC2\uDDD0-\uDDFF])\uFE0F?|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC69\uDC6E\uDC70-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD26\uDD30-\uDD39\uDD3D\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDD1-\uDDDD])/g;
-};
diff --git a/assets/node_modules/table/node_modules/string-width/index.js b/assets/node_modules/table/node_modules/string-width/index.js
deleted file mode 100644
index 33c9d6c..0000000
--- a/assets/node_modules/table/node_modules/string-width/index.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict';
-const stripAnsi = require('strip-ansi');
-const isFullwidthCodePoint = require('is-fullwidth-code-point');
-const emojiRegex = require('emoji-regex')();
-
-module.exports = input => {
- input = input.replace(emojiRegex, ' ');
-
- if (typeof input !== 'string' || input.length === 0) {
- return 0;
- }
-
- input = stripAnsi(input);
-
- let width = 0;
-
- for (let i = 0; i < input.length; i++) {
- const code = input.codePointAt(i);
-
- // Ignore control characters
- if (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {
- continue;
- }
-
- // Ignore combining characters
- if (code >= 0x300 && code <= 0x36F) {
- continue;
- }
-
- // Surrogates
- if (code > 0xFFFF) {
- i++;
- }
-
- width += isFullwidthCodePoint(code) ? 2 : 1;
- }
-
- return width;
-};
diff --git a/assets/node_modules/table/node_modules/string-width/license b/assets/node_modules/table/node_modules/string-width/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/table/node_modules/string-width/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/table/node_modules/string-width/package.json b/assets/node_modules/table/node_modules/string-width/package.json
deleted file mode 100644
index e040183..0000000
--- a/assets/node_modules/table/node_modules/string-width/package.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "name": "string-width",
- "version": "3.1.0",
- "description": "Get the visual width of a string - the number of columns required to display it",
- "license": "MIT",
- "repository": "sindresorhus/string-width",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "string",
- "str",
- "character",
- "char",
- "unicode",
- "width",
- "visual",
- "column",
- "columns",
- "fullwidth",
- "full-width",
- "full",
- "ansi",
- "escape",
- "codes",
- "cli",
- "command-line",
- "terminal",
- "console",
- "cjk",
- "chinese",
- "japanese",
- "korean",
- "fixed-width"
- ],
- "dependencies": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- },
- "devDependencies": {
- "ava": "^1.0.1",
- "xo": "^0.23.0"
- }
-}
diff --git a/assets/node_modules/table/node_modules/string-width/readme.md b/assets/node_modules/table/node_modules/string-width/readme.md
deleted file mode 100644
index d39d95f..0000000
--- a/assets/node_modules/table/node_modules/string-width/readme.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# string-width [![Build Status](https://travis-ci.org/sindresorhus/string-width.svg?branch=master)](https://travis-ci.org/sindresorhus/string-width)
-
-> Get the visual width of a string - the number of columns required to display it
-
-Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width.
-
-Useful to be able to measure the actual width of command-line output.
-
-
-## Install
-
-```
-$ npm install string-width
-```
-
-
-## Usage
-
-```js
-const stringWidth = require('string-width');
-
-stringWidth('古');
-//=> 2
-
-stringWidth('\u001b[1m古\u001b[22m');
-//=> 2
-
-stringWidth('a');
-//=> 1
-
-stringWidth('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
-// => 5
-```
-
-
-## Related
-
-- [string-width-cli](https://github.com/sindresorhus/string-width-cli) - CLI for this module
-- [string-length](https://github.com/sindresorhus/string-length) - Get the real length of a string
-- [widest-line](https://github.com/sindresorhus/widest-line) - Get the visual width of the widest line in a string
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/table/node_modules/strip-ansi/index.d.ts b/assets/node_modules/table/node_modules/strip-ansi/index.d.ts
deleted file mode 100644
index 44e954d..0000000
--- a/assets/node_modules/table/node_modules/strip-ansi/index.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
-Strip [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) from a string.
-
-@example
-```
-import stripAnsi from 'strip-ansi';
-
-stripAnsi('\u001B[4mUnicorn\u001B[0m');
-//=> 'Unicorn'
-
-stripAnsi('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
-//=> 'Click'
-```
-*/
-export default function stripAnsi(string: string): string;
diff --git a/assets/node_modules/table/node_modules/strip-ansi/index.js b/assets/node_modules/table/node_modules/strip-ansi/index.js
deleted file mode 100644
index 9788c96..0000000
--- a/assets/node_modules/table/node_modules/strip-ansi/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict';
-const ansiRegex = require('ansi-regex');
-
-const stripAnsi = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;
-
-module.exports = stripAnsi;
-module.exports.default = stripAnsi;
diff --git a/assets/node_modules/table/node_modules/strip-ansi/license b/assets/node_modules/table/node_modules/strip-ansi/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/table/node_modules/strip-ansi/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/table/node_modules/strip-ansi/package.json b/assets/node_modules/table/node_modules/strip-ansi/package.json
deleted file mode 100644
index 7494fd7..0000000
--- a/assets/node_modules/table/node_modules/strip-ansi/package.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "name": "strip-ansi",
- "version": "5.2.0",
- "description": "Strip ANSI escape codes from a string",
- "license": "MIT",
- "repository": "chalk/strip-ansi",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "xo && ava && tsd-check"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "strip",
- "trim",
- "remove",
- "ansi",
- "styles",
- "color",
- "colour",
- "colors",
- "terminal",
- "console",
- "string",
- "tty",
- "escape",
- "formatting",
- "rgb",
- "256",
- "shell",
- "xterm",
- "log",
- "logging",
- "command-line",
- "text"
- ],
- "dependencies": {
- "ansi-regex": "^4.1.0"
- },
- "devDependencies": {
- "ava": "^1.3.1",
- "tsd-check": "^0.5.0",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/table/node_modules/strip-ansi/readme.md b/assets/node_modules/table/node_modules/strip-ansi/readme.md
deleted file mode 100644
index 8681fe8..0000000
--- a/assets/node_modules/table/node_modules/strip-ansi/readme.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# strip-ansi [![Build Status](https://travis-ci.org/chalk/strip-ansi.svg?branch=master)](https://travis-ci.org/chalk/strip-ansi)
-
-> Strip [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) from a string
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-strip-ansi?utm_source=npm-strip-ansi&utm_medium=referral&utm_campaign=readme">Get professional support for 'strip-ansi' with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
-
----
-
-## Install
-
-```
-$ npm install strip-ansi
-```
-
-
-## Usage
-
-```js
-const stripAnsi = require('strip-ansi');
-
-stripAnsi('\u001B[4mUnicorn\u001B[0m');
-//=> 'Unicorn'
-
-stripAnsi('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
-//=> 'Click'
-```
-
-
-## Security
-
-To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
-
-
-## Related
-
-- [strip-ansi-cli](https://github.com/chalk/strip-ansi-cli) - CLI for this module
-- [strip-ansi-stream](https://github.com/chalk/strip-ansi-stream) - Streaming version of this module
-- [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
-- [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/assets/node_modules/table/package.json b/assets/node_modules/table/package.json
deleted file mode 100644
index 7453d03..0000000
--- a/assets/node_modules/table/package.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "author": {
- "email": "gajus@gajus.com",
- "name": "Gajus Kuizinas",
- "url": "http://gajus.com"
- },
- "dependencies": {
- "ajv": "^6.10.2",
- "lodash": "^4.17.14",
- "slice-ansi": "^2.1.0",
- "string-width": "^3.0.0"
- },
- "description": "Formats data into a string table.",
- "devDependencies": {
- "@babel/cli": "^7.5.0",
- "@babel/core": "^7.5.4",
- "@babel/node": "^7.5.0",
- "@babel/plugin-transform-flow-strip-types": "^7.4.4",
- "@babel/preset-env": "^7.5.4",
- "@babel/register": "^7.4.4",
- "ajv-cli": "^3.0.0",
- "ajv-keywords": "^3.4.1",
- "babel-plugin-istanbul": "^5.1.4",
- "babel-plugin-lodash": "^3.3.4",
- "babel-plugin-transform-export-default-name": "^2.0.4",
- "chai": "^4.2.0",
- "chalk": "^2.4.2",
- "coveralls": "^3.0.5",
- "eslint": "^5.13.0",
- "eslint-config-canonical": "^16.1.0",
- "flow-bin": "^0.102.0",
- "flow-copy-source": "^2.0.7",
- "gitdown": "^3.1.1",
- "husky": "^3.0.0",
- "mocha": "^6.1.4",
- "nyc": "^14.1.1",
- "semantic-release": "^15.13.18",
- "sinon": "^7.3.2"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "husky": {
- "hooks": {
- "post-commit": "npm run create-readme && git add README.md && git commit -m 'docs: generate docs' --no-verify",
- "pre-commit": "npm run lint && npm run test && npm run build"
- }
- },
- "keywords": [
- "ascii",
- "text",
- "table",
- "align",
- "ansi"
- ],
- "license": "BSD-3-Clause",
- "main": "./dist/index.js",
- "name": "table",
- "nyc": {
- "include": [
- "src/**/*.js"
- ],
- "instrument": false,
- "reporter": [
- "text-lcov"
- ],
- "require": [
- "@babel/register"
- ],
- "sourceMap": false
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/gajus/table"
- },
- "scripts": {
- "build": "rm -fr ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files --source-maps && npm run create-validators && flow-copy-source src dist",
- "create-readme": "gitdown ./.README/README.md --output-file ./README.md",
- "create-validators": "ajv compile --all-errors --inline-refs=false -s src/schemas/config -c ajv-keywords/keywords/typeof -o dist/validateConfig.js && ajv compile --all-errors --inline-refs=false -s src/schemas/streamConfig -c ajv-keywords/keywords/typeof -o dist/validateStreamConfig.js",
- "lint": "npm run build && eslint ./src ./test && flow",
- "test": "mocha --require @babel/register"
- },
- "version": "5.4.6"
-}
diff --git a/assets/node_modules/to-fast-properties/index.js b/assets/node_modules/to-fast-properties/index.js
deleted file mode 100644
index 028c88a..0000000
--- a/assets/node_modules/to-fast-properties/index.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'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/assets/node_modules/to-fast-properties/license b/assets/node_modules/to-fast-properties/license
deleted file mode 100644
index cef79ef..0000000
--- a/assets/node_modules/to-fast-properties/license
+++ /dev/null
@@ -1,10 +0,0 @@
-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/assets/node_modules/to-fast-properties/package.json b/assets/node_modules/to-fast-properties/package.json
deleted file mode 100644
index 7a64b2c..0000000
--- a/assets/node_modules/to-fast-properties/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "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/assets/node_modules/to-fast-properties/readme.md b/assets/node_modules/to-fast-properties/readme.md
deleted file mode 100644
index 692101d..0000000
--- a/assets/node_modules/to-fast-properties/readme.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# 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/assets/node_modules/to-regex-range/LICENSE b/assets/node_modules/to-regex-range/LICENSE
deleted file mode 100644
index 7cccaf9..0000000
--- a/assets/node_modules/to-regex-range/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015-present, Jon Schlinkert.
-
-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/assets/node_modules/to-regex-range/README.md b/assets/node_modules/to-regex-range/README.md
deleted file mode 100644
index 38887da..0000000
--- a/assets/node_modules/to-regex-range/README.md
+++ /dev/null
@@ -1,305 +0,0 @@
-# to-regex-range [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [![NPM version](https://img.shields.io/npm/v/to-regex-range.svg?style=flat)](https://www.npmjs.com/package/to-regex-range) [![NPM monthly downloads](https://img.shields.io/npm/dm/to-regex-range.svg?style=flat)](https://npmjs.org/package/to-regex-range) [![NPM total downloads](https://img.shields.io/npm/dt/to-regex-range.svg?style=flat)](https://npmjs.org/package/to-regex-range) [![Linux Build Status](https://img.shields.io/travis/micromatch/to-regex-range.svg?style=flat&label=Travis)](https://travis-ci.org/micromatch/to-regex-range)
-
-> Pass two numbers, get a regex-compatible source string for matching ranges. Validated against more than 2.78 million test assertions.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save to-regex-range
-```
-
-<details>
-<summary><strong>What does this do?</strong></summary>
-
-<br>
-
-This libary generates the `source` string to be passed to `new RegExp()` for matching a range of numbers.
-
-**Example**
-
-```js
-const toRegexRange = require('to-regex-range');
-const regex = new RegExp(toRegexRange('15', '95'));
-```
-
-A string is returned so that you can do whatever you need with it before passing it to `new RegExp()` (like adding `^` or `$` boundaries, defining flags, or combining it another string).
-
-<br>
-
-</details>
-
-<details>
-<summary><strong>Why use this library?</strong></summary>
-
-<br>
-
-### Convenience
-
-Creating regular expressions for matching numbers gets deceptively complicated pretty fast.
-
-For example, let's say you need a validation regex for matching part of a user-id, postal code, social security number, tax id, etc:
-
-* regex for matching `1` => `/1/` (easy enough)
-* regex for matching `1` through `5` => `/[1-5]/` (not bad...)
-* regex for matching `1` or `5` => `/(1|5)/` (still easy...)
-* regex for matching `1` through `50` => `/([1-9]|[1-4][0-9]|50)/` (uh-oh...)
-* regex for matching `1` through `55` => `/([1-9]|[1-4][0-9]|5[0-5])/` (no prob, I can do this...)
-* regex for matching `1` through `555` => `/([1-9]|[1-9][0-9]|[1-4][0-9]{2}|5[0-4][0-9]|55[0-5])/` (maybe not...)
-* regex for matching `0001` through `5555` => `/(0{3}[1-9]|0{2}[1-9][0-9]|0[1-9][0-9]{2}|[1-4][0-9]{3}|5[0-4][0-9]{2}|55[0-4][0-9]|555[0-5])/` (okay, I get the point!)
-
-The numbers are contrived, but they're also really basic. In the real world you might need to generate a regex on-the-fly for validation.
-
-**Learn more**
-
-If you're interested in learning more about [character classes](http://www.regular-expressions.info/charclass.html) and other regex features, I personally have always found [regular-expressions.info](http://www.regular-expressions.info/charclass.html) to be pretty useful.
-
-### Heavily tested
-
-As of April 07, 2019, this library runs [>1m test assertions](./test/test.js) against generated regex-ranges to provide brute-force verification that results are correct.
-
-Tests run in ~280ms on my MacBook Pro, 2.5 GHz Intel Core i7.
-
-### Optimized
-
-Generated regular expressions are optimized:
-
-* duplicate sequences and character classes are reduced using quantifiers
-* smart enough to use `?` conditionals when number(s) or range(s) can be positive or negative
-* uses fragment caching to avoid processing the same exact string more than once
-
-<br>
-
-</details>
-
-## Usage
-
-Add this library to your javascript application with the following line of code
-
-```js
-const toRegexRange = require('to-regex-range');
-```
-
-The main export is a function that takes two integers: the `min` value and `max` value (formatted as strings or numbers).
-
-```js
-const source = toRegexRange('15', '95');
-//=> 1[5-9]|[2-8][0-9]|9[0-5]
-
-const regex = new RegExp(`^${source}$`);
-console.log(regex.test('14')); //=> false
-console.log(regex.test('50')); //=> true
-console.log(regex.test('94')); //=> true
-console.log(regex.test('96')); //=> false
-```
-
-## Options
-
-### options.capture
-
-**Type**: `boolean`
-
-**Deafault**: `undefined`
-
-Wrap the returned value in parentheses when there is more than one regex condition. Useful when you're dynamically generating ranges.
-
-```js
-console.log(toRegexRange('-10', '10'));
-//=> -[1-9]|-?10|[0-9]
-
-console.log(toRegexRange('-10', '10', { capture: true }));
-//=> (-[1-9]|-?10|[0-9])
-```
-
-### options.shorthand
-
-**Type**: `boolean`
-
-**Deafault**: `undefined`
-
-Use the regex shorthand for `[0-9]`:
-
-```js
-console.log(toRegexRange('0', '999999'));
-//=> [0-9]|[1-9][0-9]{1,5}
-
-console.log(toRegexRange('0', '999999', { shorthand: true }));
-//=> \d|[1-9]\d{1,5}
-```
-
-### options.relaxZeros
-
-**Type**: `boolean`
-
-**Default**: `true`
-
-This option relaxes matching for leading zeros when when ranges are zero-padded.
-
-```js
-const source = toRegexRange('-0010', '0010');
-const regex = new RegExp(`^${source}$`);
-console.log(regex.test('-10')); //=> true
-console.log(regex.test('-010')); //=> true
-console.log(regex.test('-0010')); //=> true
-console.log(regex.test('10')); //=> true
-console.log(regex.test('010')); //=> true
-console.log(regex.test('0010')); //=> true
-```
-
-When `relaxZeros` is false, matching is strict:
-
-```js
-const source = toRegexRange('-0010', '0010', { relaxZeros: false });
-const regex = new RegExp(`^${source}$`);
-console.log(regex.test('-10')); //=> false
-console.log(regex.test('-010')); //=> false
-console.log(regex.test('-0010')); //=> true
-console.log(regex.test('10')); //=> false
-console.log(regex.test('010')); //=> false
-console.log(regex.test('0010')); //=> true
-```
-
-## Examples
-
-| **Range** | **Result** | **Compile time** |
-| --- | --- | --- |
-| `toRegexRange(-10, 10)` | `-[1-9]\|-?10\|[0-9]` | _132μs_ |
-| `toRegexRange(-100, -10)` | `-1[0-9]\|-[2-9][0-9]\|-100` | _50μs_ |
-| `toRegexRange(-100, 100)` | `-[1-9]\|-?[1-9][0-9]\|-?100\|[0-9]` | _42μs_ |
-| `toRegexRange(001, 100)` | `0{0,2}[1-9]\|0?[1-9][0-9]\|100` | _109μs_ |
-| `toRegexRange(001, 555)` | `0{0,2}[1-9]\|0?[1-9][0-9]\|[1-4][0-9]{2}\|5[0-4][0-9]\|55[0-5]` | _51μs_ |
-| `toRegexRange(0010, 1000)` | `0{0,2}1[0-9]\|0{0,2}[2-9][0-9]\|0?[1-9][0-9]{2}\|1000` | _31μs_ |
-| `toRegexRange(1, 50)` | `[1-9]\|[1-4][0-9]\|50` | _24μs_ |
-| `toRegexRange(1, 55)` | `[1-9]\|[1-4][0-9]\|5[0-5]` | _23μs_ |
-| `toRegexRange(1, 555)` | `[1-9]\|[1-9][0-9]\|[1-4][0-9]{2}\|5[0-4][0-9]\|55[0-5]` | _30μs_ |
-| `toRegexRange(1, 5555)` | `[1-9]\|[1-9][0-9]{1,2}\|[1-4][0-9]{3}\|5[0-4][0-9]{2}\|55[0-4][0-9]\|555[0-5]` | _43μs_ |
-| `toRegexRange(111, 555)` | `11[1-9]\|1[2-9][0-9]\|[2-4][0-9]{2}\|5[0-4][0-9]\|55[0-5]` | _38μs_ |
-| `toRegexRange(29, 51)` | `29\|[34][0-9]\|5[01]` | _24μs_ |
-| `toRegexRange(31, 877)` | `3[1-9]\|[4-9][0-9]\|[1-7][0-9]{2}\|8[0-6][0-9]\|87[0-7]` | _32μs_ |
-| `toRegexRange(5, 5)` | `5` | _8μs_ |
-| `toRegexRange(5, 6)` | `5\|6` | _11μs_ |
-| `toRegexRange(1, 2)` | `1\|2` | _6μs_ |
-| `toRegexRange(1, 5)` | `[1-5]` | _15μs_ |
-| `toRegexRange(1, 10)` | `[1-9]\|10` | _22μs_ |
-| `toRegexRange(1, 100)` | `[1-9]\|[1-9][0-9]\|100` | _25μs_ |
-| `toRegexRange(1, 1000)` | `[1-9]\|[1-9][0-9]{1,2}\|1000` | _31μs_ |
-| `toRegexRange(1, 10000)` | `[1-9]\|[1-9][0-9]{1,3}\|10000` | _34μs_ |
-| `toRegexRange(1, 100000)` | `[1-9]\|[1-9][0-9]{1,4}\|100000` | _36μs_ |
-| `toRegexRange(1, 1000000)` | `[1-9]\|[1-9][0-9]{1,5}\|1000000` | _42μs_ |
-| `toRegexRange(1, 10000000)` | `[1-9]\|[1-9][0-9]{1,6}\|10000000` | _42μs_ |
-
-## Heads up!
-
-**Order of arguments**
-
-When the `min` is larger than the `max`, values will be flipped to create a valid range:
-
-```js
-toRegexRange('51', '29');
-```
-
-Is effectively flipped to:
-
-```js
-toRegexRange('29', '51');
-//=> 29|[3-4][0-9]|5[0-1]
-```
-
-**Steps / increments**
-
-This library does not support steps (increments). A pr to add support would be welcome.
-
-## History
-
-### v2.0.0 - 2017-04-21
-
-**New features**
-
-Adds support for zero-padding!
-
-### v1.0.0
-
-**Optimizations**
-
-Repeating ranges are now grouped using quantifiers. rocessing time is roughly the same, but the generated regex is much smaller, which should result in faster matching.
-
-## Attribution
-
-Inspired by the python library [range-regex](https://github.com/dimka665/range-regex).
-
-## About
-
-<details>
-<summary><strong>Contributing</strong></summary>
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-</details>
-
-<details>
-<summary><strong>Running Tests</strong></summary>
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-</details>
-
-<details>
-<summary><strong>Building docs</strong></summary>
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-</details>
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [expand-range](https://www.npmjs.com/package/expand-range): Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. Used… [more](https://github.com/jonschlinkert/expand-range) | [homepage](https://github.com/jonschlinkert/expand-range "Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. Used by micromatch.")
-* [fill-range](https://www.npmjs.com/package/fill-range): Fill in a range of numbers or letters, optionally passing an increment or `step` to… [more](https://github.com/jonschlinkert/fill-range) | [homepage](https://github.com/jonschlinkert/fill-range "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`")
-* [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | [homepage](https://github.com/micromatch/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.")
-* [repeat-element](https://www.npmjs.com/package/repeat-element): Create an array by repeating the given value n times. | [homepage](https://github.com/jonschlinkert/repeat-element "Create an array by repeating the given value n times.")
-* [repeat-string](https://www.npmjs.com/package/repeat-string): Repeat the given string n times. Fastest implementation for repeating a string. | [homepage](https://github.com/jonschlinkert/repeat-string "Repeat the given string n times. Fastest implementation for repeating a string.")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 63 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 3 | [doowb](https://github.com/doowb) |
-| 2 | [realityking](https://github.com/realityking) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-
-Please consider supporting me on Patreon, or [start your own Patreon page](https://patreon.com/invite/bxpbvm)!
-
-<a href="https://www.patreon.com/jonschlinkert">
-<img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" height="50">
-</a>
-
-### License
-
-Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 07, 2019._ \ No newline at end of file
diff --git a/assets/node_modules/to-regex-range/index.js b/assets/node_modules/to-regex-range/index.js
deleted file mode 100644
index 77fbace..0000000
--- a/assets/node_modules/to-regex-range/index.js
+++ /dev/null
@@ -1,288 +0,0 @@
-/*!
- * to-regex-range <https://github.com/micromatch/to-regex-range>
- *
- * Copyright (c) 2015-present, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-'use strict';
-
-const isNumber = require('is-number');
-
-const toRegexRange = (min, max, options) => {
- if (isNumber(min) === false) {
- throw new TypeError('toRegexRange: expected the first argument to be a number');
- }
-
- if (max === void 0 || min === max) {
- return String(min);
- }
-
- if (isNumber(max) === false) {
- throw new TypeError('toRegexRange: expected the second argument to be a number.');
- }
-
- let opts = { relaxZeros: true, ...options };
- if (typeof opts.strictZeros === 'boolean') {
- opts.relaxZeros = opts.strictZeros === false;
- }
-
- let relax = String(opts.relaxZeros);
- let shorthand = String(opts.shorthand);
- let capture = String(opts.capture);
- let wrap = String(opts.wrap);
- let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;
-
- if (toRegexRange.cache.hasOwnProperty(cacheKey)) {
- return toRegexRange.cache[cacheKey].result;
- }
-
- let a = Math.min(min, max);
- let b = Math.max(min, max);
-
- if (Math.abs(a - b) === 1) {
- let result = min + '|' + max;
- if (opts.capture) {
- return `(${result})`;
- }
- if (opts.wrap === false) {
- return result;
- }
- return `(?:${result})`;
- }
-
- let isPadded = hasPadding(min) || hasPadding(max);
- let state = { min, max, a, b };
- let positives = [];
- let negatives = [];
-
- if (isPadded) {
- state.isPadded = isPadded;
- state.maxLen = String(state.max).length;
- }
-
- if (a < 0) {
- let newMin = b < 0 ? Math.abs(b) : 1;
- negatives = splitToPatterns(newMin, Math.abs(a), state, opts);
- a = state.a = 0;
- }
-
- if (b >= 0) {
- positives = splitToPatterns(a, b, state, opts);
- }
-
- state.negatives = negatives;
- state.positives = positives;
- state.result = collatePatterns(negatives, positives, opts);
-
- if (opts.capture === true) {
- state.result = `(${state.result})`;
- } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {
- state.result = `(?:${state.result})`;
- }
-
- toRegexRange.cache[cacheKey] = state;
- return state.result;
-};
-
-function collatePatterns(neg, pos, options) {
- let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];
- let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];
- let intersected = filterPatterns(neg, pos, '-?', true, options) || [];
- let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);
- return subpatterns.join('|');
-}
-
-function splitToRanges(min, max) {
- let nines = 1;
- let zeros = 1;
-
- let stop = countNines(min, nines);
- let stops = new Set([max]);
-
- while (min <= stop && stop <= max) {
- stops.add(stop);
- nines += 1;
- stop = countNines(min, nines);
- }
-
- stop = countZeros(max + 1, zeros) - 1;
-
- while (min < stop && stop <= max) {
- stops.add(stop);
- zeros += 1;
- stop = countZeros(max + 1, zeros) - 1;
- }
-
- stops = [...stops];
- stops.sort(compare);
- return stops;
-}
-
-/**
- * Convert a range to a regex pattern
- * @param {Number} `start`
- * @param {Number} `stop`
- * @return {String}
- */
-
-function rangeToPattern(start, stop, options) {
- if (start === stop) {
- return { pattern: start, count: [], digits: 0 };
- }
-
- let zipped = zip(start, stop);
- let digits = zipped.length;
- let pattern = '';
- let count = 0;
-
- for (let i = 0; i < digits; i++) {
- let [startDigit, stopDigit] = zipped[i];
-
- if (startDigit === stopDigit) {
- pattern += startDigit;
-
- } else if (startDigit !== '0' || stopDigit !== '9') {
- pattern += toCharacterClass(startDigit, stopDigit, options);
-
- } else {
- count++;
- }
- }
-
- if (count) {
- pattern += options.shorthand === true ? '\\d' : '[0-9]';
- }
-
- return { pattern, count: [count], digits };
-}
-
-function splitToPatterns(min, max, tok, options) {
- let ranges = splitToRanges(min, max);
- let tokens = [];
- let start = min;
- let prev;
-
- for (let i = 0; i < ranges.length; i++) {
- let max = ranges[i];
- let obj = rangeToPattern(String(start), String(max), options);
- let zeros = '';
-
- if (!tok.isPadded && prev && prev.pattern === obj.pattern) {
- if (prev.count.length > 1) {
- prev.count.pop();
- }
-
- prev.count.push(obj.count[0]);
- prev.string = prev.pattern + toQuantifier(prev.count);
- start = max + 1;
- continue;
- }
-
- if (tok.isPadded) {
- zeros = padZeros(max, tok, options);
- }
-
- obj.string = zeros + obj.pattern + toQuantifier(obj.count);
- tokens.push(obj);
- start = max + 1;
- prev = obj;
- }
-
- return tokens;
-}
-
-function filterPatterns(arr, comparison, prefix, intersection, options) {
- let result = [];
-
- for (let ele of arr) {
- let { string } = ele;
-
- // only push if _both_ are negative...
- if (!intersection && !contains(comparison, 'string', string)) {
- result.push(prefix + string);
- }
-
- // or _both_ are positive
- if (intersection && contains(comparison, 'string', string)) {
- result.push(prefix + string);
- }
- }
- return result;
-}
-
-/**
- * Zip strings
- */
-
-function zip(a, b) {
- let arr = [];
- for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);
- return arr;
-}
-
-function compare(a, b) {
- return a > b ? 1 : b > a ? -1 : 0;
-}
-
-function contains(arr, key, val) {
- return arr.some(ele => ele[key] === val);
-}
-
-function countNines(min, len) {
- return Number(String(min).slice(0, -len) + '9'.repeat(len));
-}
-
-function countZeros(integer, zeros) {
- return integer - (integer % Math.pow(10, zeros));
-}
-
-function toQuantifier(digits) {
- let [start = 0, stop = ''] = digits;
- if (stop || start > 1) {
- return `{${start + (stop ? ',' + stop : '')}}`;
- }
- return '';
-}
-
-function toCharacterClass(a, b, options) {
- return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;
-}
-
-function hasPadding(str) {
- return /^-?(0+)\d/.test(str);
-}
-
-function padZeros(value, tok, options) {
- if (!tok.isPadded) {
- return value;
- }
-
- let diff = Math.abs(tok.maxLen - String(value).length);
- let relax = options.relaxZeros !== false;
-
- switch (diff) {
- case 0:
- return '';
- case 1:
- return relax ? '0?' : '0';
- case 2:
- return relax ? '0{0,2}' : '00';
- default: {
- return relax ? `0{0,${diff}}` : `0{${diff}}`;
- }
- }
-}
-
-/**
- * Cache
- */
-
-toRegexRange.cache = {};
-toRegexRange.clearCache = () => (toRegexRange.cache = {});
-
-/**
- * Expose `toRegexRange`
- */
-
-module.exports = toRegexRange;
diff --git a/assets/node_modules/to-regex-range/package.json b/assets/node_modules/to-regex-range/package.json
deleted file mode 100644
index 4ef194f..0000000
--- a/assets/node_modules/to-regex-range/package.json
+++ /dev/null
@@ -1,88 +0,0 @@
-{
- "name": "to-regex-range",
- "description": "Pass two numbers, get a regex-compatible source string for matching ranges. Validated against more than 2.78 million test assertions.",
- "version": "5.0.1",
- "homepage": "https://github.com/micromatch/to-regex-range",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Rouven Weßling (www.rouvenwessling.de)"
- ],
- "repository": "micromatch/to-regex-range",
- "bugs": {
- "url": "https://github.com/micromatch/to-regex-range/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=8.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "devDependencies": {
- "fill-range": "^6.0.0",
- "gulp-format-md": "^2.0.0",
- "mocha": "^6.0.2",
- "text-table": "^0.2.0",
- "time-diff": "^0.3.1"
- },
- "keywords": [
- "bash",
- "date",
- "expand",
- "expansion",
- "expression",
- "glob",
- "match",
- "match date",
- "match number",
- "match numbers",
- "match year",
- "matches",
- "matching",
- "number",
- "numbers",
- "numerical",
- "range",
- "ranges",
- "regex",
- "regexp",
- "regular",
- "regular expression",
- "sequence"
- ],
- "verb": {
- "layout": "default",
- "toc": false,
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- },
- "helpers": {
- "examples": {
- "displayName": "examples"
- }
- },
- "related": {
- "list": [
- "expand-range",
- "fill-range",
- "micromatch",
- "repeat-element",
- "repeat-string"
- ]
- }
- }
-}
diff --git a/assets/node_modules/trim-newlines/index.d.ts b/assets/node_modules/trim-newlines/index.d.ts
deleted file mode 100644
index 4185720..0000000
--- a/assets/node_modules/trim-newlines/index.d.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-declare const trimNewlines: {
- /**
- Trim from the start and end of a string.
-
- @example
- ```js
- import trimNewlines = require('trim-newlines');
-
- trimNewlines('\n🦄\r\n');
- //=> '🦄'
- ```
- */
- (string: string): string;
-
- /**
- Trim from the start of a string.
-
- @example
- ```js
- import trimNewlines = require('trim-newlines');
-
- trimNewlines.start('\n🦄\r\n');
- //=> '🦄\r\n'
- ```
- */
- start(string: string): string;
-
- /**
- Trim from the end of a string.
-
- @example
- ```js
- import trimNewlines = require('trim-newlines');
-
- trimNewlines.end('\n🦄\r\n');
- //=> '\n🦄'
- ```
- */
- end(string: string): string;
-};
-
-export = trimNewlines;
diff --git a/assets/node_modules/trim-newlines/index.js b/assets/node_modules/trim-newlines/index.js
deleted file mode 100644
index a0abc6a..0000000
--- a/assets/node_modules/trim-newlines/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-'use strict';
-module.exports = string => string.replace(/^[\r\n]+/, '').replace(/[\r\n]+$/, '');
-module.exports.start = string => string.replace(/^[\r\n]+/, '');
-module.exports.end = string => string.replace(/[\r\n]+$/, '');
diff --git a/assets/node_modules/trim-newlines/license b/assets/node_modules/trim-newlines/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/trim-newlines/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/trim-newlines/package.json b/assets/node_modules/trim-newlines/package.json
deleted file mode 100644
index a1b9e59..0000000
--- a/assets/node_modules/trim-newlines/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "trim-newlines",
- "version": "3.0.0",
- "description": "Trim newlines from the start and/or end of a string",
- "license": "MIT",
- "repository": "sindresorhus/trim-newlines",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "trim",
- "newline",
- "newlines",
- "linebreak",
- "lf",
- "crlf",
- "left",
- "right",
- "start",
- "end",
- "string",
- "remove",
- "delete",
- "strip"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/assets/node_modules/trim-newlines/readme.md b/assets/node_modules/trim-newlines/readme.md
deleted file mode 100644
index 1591158..0000000
--- a/assets/node_modules/trim-newlines/readme.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# trim-newlines [![Build Status](https://travis-ci.org/sindresorhus/trim-newlines.svg?branch=master)](https://travis-ci.org/sindresorhus/trim-newlines)
-
-> Trim [newlines](https://en.wikipedia.org/wiki/Newline) from the start and/or end of a string
-
-
-## Install
-
-```
-$ npm install trim-newlines
-```
-
-
-## Usage
-
-```js
-const trimNewlines = require('trim-newlines');
-
-trimNewlines('\n🦄\r\n');
-//=> '🦄'
-
-trimNewlines.start('\n🦄\r\n');
-//=> '🦄\r\n'
-
-trimNewlines.end('\n🦄\r\n');
-//=> '\n🦄'
-```
-
-
-## API
-
-### trimNewlines(string)
-
-Trim from the start and end of a string.
-
-### trimNewlines.start(string)
-
-Trim from the start of a string.
-
-### trimNewlines.end(string)
-
-Trim from the end of a string.
-
-
-## Related
-
-- [trim-left](https://github.com/sindresorhus/trim-left) - Similar to `String#trim()` but removes only whitespace on the left
-- [trim-right](https://github.com/sindresorhus/trim-right) - Similar to `String#trim()` but removes only whitespace on the right.
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/assets/node_modules/trim-trailing-lines/index.js b/assets/node_modules/trim-trailing-lines/index.js
deleted file mode 100644
index 0f2d48b..0000000
--- a/assets/node_modules/trim-trailing-lines/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict'
-
-module.exports = trimTrailingLines
-
-var line = '\n'
-
-// Remove final newline characters from `value`.
-function trimTrailingLines(value) {
- var val = String(value)
- var index = val.length
-
- while (val.charAt(--index) === line) {
- // Empty
- }
-
- return val.slice(0, index + 1)
-}
diff --git a/assets/node_modules/trim-trailing-lines/license b/assets/node_modules/trim-trailing-lines/license
deleted file mode 100644
index 611b675..0000000
--- a/assets/node_modules/trim-trailing-lines/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/trim-trailing-lines/package.json b/assets/node_modules/trim-trailing-lines/package.json
deleted file mode 100644
index 395ea22..0000000
--- a/assets/node_modules/trim-trailing-lines/package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "name": "trim-trailing-lines",
- "version": "1.1.3",
- "description": "Remove final line feeds from a string",
- "license": "MIT",
- "keywords": [
- "trim",
- "final",
- "line",
- "newline",
- "characters"
- ],
- "repository": "wooorm/trim-trailing-lines",
- "bugs": "https://github.com/wooorm/trim-trailing-lines/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 trimTrailingLines -o trim-trailing-lines.js",
- "build-mangle": "browserify . -s trimTrailingLines -p tinyify -o trim-trailing-lines.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"
- },
- "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": [
- "trim-trailing-lines.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/trim-trailing-lines/readme.md b/assets/node_modules/trim-trailing-lines/readme.md
deleted file mode 100644
index a9c1f44..0000000
--- a/assets/node_modules/trim-trailing-lines/readme.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# trim-trailing-lines
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-Remove final line feeds from a string.
-
-## Install
-
-[npm][]:
-
-```sh
-npm install trim-trailing-lines
-```
-
-## Use
-
-```js
-var trimTrailingLines = require('trim-trailing-lines')
-
-trimTrailingLines('foo\nbar') // => 'foo\nbar'
-trimTrailingLines('foo\nbar\n') // => 'foo\nbar'
-trimTrailingLines('foo\nbar\n\n') // => 'foo\nbar'
-```
-
-## API
-
-### `trimTrailingLines(value)`
-
-Remove final line feed characters from `value`.
-
-###### Parameters
-
-* `value` (`string`) — Value with trailing line feeds, coerced to string.
-
-###### Returns
-
-`string` — Value without trailing newlines.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/wooorm/trim-trailing-lines.svg
-
-[build]: https://travis-ci.org/wooorm/trim-trailing-lines
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/trim-trailing-lines.svg
-
-[coverage]: https://codecov.io/github/wooorm/trim-trailing-lines
-
-[downloads-badge]: https://img.shields.io/npm/dm/trim-trailing-lines.svg
-
-[downloads]: https://www.npmjs.com/package/trim-trailing-lines
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/trim-trailing-lines.svg
-
-[size]: https://bundlephobia.com/result?p=trim-trailing-lines
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
diff --git a/assets/node_modules/trim/.npmignore b/assets/node_modules/trim/.npmignore
deleted file mode 100644
index f1250e5..0000000
--- a/assets/node_modules/trim/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-support
-test
-examples
-*.sock
diff --git a/assets/node_modules/trim/History.md b/assets/node_modules/trim/History.md
deleted file mode 100644
index c8aa68f..0000000
--- a/assets/node_modules/trim/History.md
+++ /dev/null
@@ -1,5 +0,0 @@
-
-0.0.1 / 2010-01-03
-==================
-
- * Initial release
diff --git a/assets/node_modules/trim/Makefile b/assets/node_modules/trim/Makefile
deleted file mode 100644
index 4e9c8d3..0000000
--- a/assets/node_modules/trim/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-
-test:
- @./node_modules/.bin/mocha \
- --require should \
- --reporter spec
-
-.PHONY: test \ No newline at end of file
diff --git a/assets/node_modules/trim/Readme.md b/assets/node_modules/trim/Readme.md
deleted file mode 100644
index 3460f52..0000000
--- a/assets/node_modules/trim/Readme.md
+++ /dev/null
@@ -1,69 +0,0 @@
-
-# trim
-
- Trims string whitespace.
-
-## Installation
-
-```
-$ npm install trim
-$ component install component/trim
-```
-
-## API
-
- - [trim(str)](#trimstr)
- - [.left(str)](#leftstr)
- - [.right(str)](#rightstr)
-<a name="" />
-
-<a name="trimstr" />
-### trim(str)
-should trim leading / trailing whitespace.
-
-```js
-trim(' foo bar ').should.equal('foo bar');
-trim('\n\n\nfoo bar\n\r\n\n').should.equal('foo bar');
-```
-
-<a name="leftstr" />
-### .left(str)
-should trim leading whitespace.
-
-```js
-trim.left(' foo bar ').should.equal('foo bar ');
-```
-
-<a name="rightstr" />
-### .right(str)
-should trim trailing whitespace.
-
-```js
-trim.right(' foo bar ').should.equal(' foo bar');
-```
-
-
-## License
-
-(The MIT License)
-
-Copyright (c) 2012 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
-
-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/assets/node_modules/trim/component.json b/assets/node_modules/trim/component.json
deleted file mode 100644
index 560b258..0000000
--- a/assets/node_modules/trim/component.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "name": "trim",
- "version": "0.0.1",
- "description": "Trim string whitespace",
- "keywords": ["string", "trim"],
- "scripts": ["index.js"]
-} \ No newline at end of file
diff --git a/assets/node_modules/trim/index.js b/assets/node_modules/trim/index.js
deleted file mode 100644
index 640c24c..0000000
--- a/assets/node_modules/trim/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-
-exports = module.exports = trim;
-
-function trim(str){
- return str.replace(/^\s*|\s*$/g, '');
-}
-
-exports.left = function(str){
- return str.replace(/^\s*/, '');
-};
-
-exports.right = function(str){
- return str.replace(/\s*$/, '');
-};
diff --git a/assets/node_modules/trim/package.json b/assets/node_modules/trim/package.json
deleted file mode 100644
index 64ee5c6..0000000
--- a/assets/node_modules/trim/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "trim",
- "version": "0.0.1",
- "description": "Trim string whitespace",
- "keywords": ["string", "trim"],
- "author": "TJ Holowaychuk <tj@vision-media.ca>",
- "dependencies": {},
- "devDependencies": {
- "mocha": "*",
- "should": "*"
- },
- "main": "index",
- "component": {
- "scripts": {
- "trim/index.js": "index.js"
- }
- }
-}
diff --git a/assets/node_modules/trough/index.js b/assets/node_modules/trough/index.js
deleted file mode 100644
index 2b73d86..0000000
--- a/assets/node_modules/trough/index.js
+++ /dev/null
@@ -1,74 +0,0 @@
-'use strict'
-
-var wrap = require('./wrap.js')
-
-module.exports = trough
-
-trough.wrap = wrap
-
-var slice = [].slice
-
-// Create new middleware.
-function trough() {
- var fns = []
- var middleware = {}
-
- middleware.run = run
- middleware.use = use
-
- return middleware
-
- // Run `fns`. Last argument must be a completion handler.
- function run() {
- var index = -1
- var input = slice.call(arguments, 0, -1)
- var done = arguments[arguments.length - 1]
-
- if (typeof done !== 'function') {
- throw new Error('Expected function as last argument, not ' + done)
- }
-
- next.apply(null, [null].concat(input))
-
- // Run the next `fn`, if any.
- function next(err) {
- var fn = fns[++index]
- var params = slice.call(arguments, 0)
- var values = params.slice(1)
- var length = input.length
- var pos = -1
-
- if (err) {
- done(err)
- return
- }
-
- // Copy non-nully input into values.
- while (++pos < length) {
- if (values[pos] === null || values[pos] === undefined) {
- values[pos] = input[pos]
- }
- }
-
- input = values
-
- // Next or done.
- if (fn) {
- wrap(fn, next).apply(null, input)
- } else {
- done.apply(null, [null].concat(input))
- }
- }
- }
-
- // Add `fn` to the list.
- function use(fn) {
- if (typeof fn !== 'function') {
- throw new Error('Expected `fn` to be a function, not ' + fn)
- }
-
- fns.push(fn)
-
- return middleware
- }
-}
diff --git a/assets/node_modules/trough/license b/assets/node_modules/trough/license
deleted file mode 100644
index 3f0166f..0000000
--- a/assets/node_modules/trough/license
+++ /dev/null
@@ -1,21 +0,0 @@
-(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/assets/node_modules/trough/package.json b/assets/node_modules/trough/package.json
deleted file mode 100644
index cbf7782..0000000
--- a/assets/node_modules/trough/package.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "name": "trough",
- "version": "1.0.5",
- "description": "Middleware: a channel used to convey a liquid",
- "license": "MIT",
- "keywords": [
- "middleware",
- "ware"
- ],
- "repository": "wooorm/trough",
- "bugs": "https://github.com/wooorm/trough/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",
- "wrap.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 index.js -s trough > trough.js",
- "build-mangle": "browserify index.js -s trough -p tinyify > trough.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": {
- "unicorn/prefer-reflect-apply": "off",
- "unicorn/prefer-type-error": "off",
- "guard-for-in": "off"
- },
- "ignores": [
- "trough.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
- }
-}
diff --git a/assets/node_modules/trough/readme.md b/assets/node_modules/trough/readme.md
deleted file mode 100644
index ce3d38b..0000000
--- a/assets/node_modules/trough/readme.md
+++ /dev/null
@@ -1,330 +0,0 @@
-# trough
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-> **trough** /trôf/ — a channel used to convey a liquid.
-
-`trough` is like [`ware`][ware] with less sugar, and middleware functions can
-change the input of the next.
-
-## Install
-
-[npm][]:
-
-```sh
-npm install trough
-```
-
-## Use
-
-```js
-var fs = require('fs')
-var path = require('path')
-var trough = require('trough')
-
-var pipeline = trough()
- .use(function(fileName) {
- console.log('Checking… ' + fileName)
- })
- .use(function(fileName) {
- return path.join(process.cwd(), fileName)
- })
- .use(function(filePath, next) {
- fs.stat(filePath, function(err, stats) {
- next(err, {filePath, stats})
- })
- })
- .use(function(ctx, next) {
- if (ctx.stats.isFile()) {
- fs.readFile(ctx.filePath, next)
- } else {
- next(new Error('Expected file'))
- }
- })
-
-pipeline.run('readme.md', console.log)
-pipeline.run('node_modules', console.log)
-```
-
-Yields:
-
-```txt
-Checking… readme.md
-Checking… node_modules
-Error: Expected file
- at ~/example.js:21:12
- at wrapped (~/node_modules/trough/index.js:93:19)
- at next (~/node_modules/trough/index.js:56:24)
- at done (~/node_modules/trough/index.js:124:12)
- at ~/node_modules/example.js:14:7
- at FSReqWrap.oncomplete (fs.js:153:5)
-null <Buffer 23 20 74 72 6f 75 67 68 20 5b 21 5b 42 75 69 6c 64 20 53 74 61 74 75 73 5d 5b 74 72 61 76 69 73 2d 62 61 64 67 65 5d 5d 5b 74 72 61 76 69 73 5d 20 5b ... >
-```
-
-## API
-
-### `trough()`
-
-Create a new [`Trough`][trough].
-
-#### `trough.wrap(middleware, callback[, …input])`
-
-Call `middleware` with all input.
-If `middleware` accepts more arguments than given in input, and extra `done`
-function is passed in after the input when calling it.
-It must be called.
-
-The first value in `input` is called the main input value.
-All other input values are called the rest input values.
-The values given to `callback` are the input values, merged with every non-nully
-output value.
-
-* If `middleware` throws an error, returns a promise that is rejected, or
- calls the given `done` function with an error, `callback` is invoked with
- that error
-* If `middleware` returns a value or returns a promise that is resolved, that
- value is the main output value
-* If `middleware` calls `done`, all non-nully values except for the first one
- (the error) overwrite the output values
-
-### `Trough`
-
-A pipeline.
-
-#### `Trough#run([input…, ]done)`
-
-Run the pipeline (all [`use()`][use]d middleware).
-Invokes [`done`][done] on completion with either an error or the output of the
-last middleware.
-
-> Note!
-> as the length of input defines whether [async][] functions get a `next`
-> function, it’s recommended to keep `input` at one value normally.
-
-##### `function done(err?, [output…])`
-
-The final handler passed to [`run()`][run], invoked with an error if a
-[middleware function][fn] rejected, passed, or threw one, or the output of the
-last middleware function.
-
-#### `Trough#use(fn)`
-
-Add `fn`, a [middleware function][fn], to the pipeline.
-
-##### `function fn([input…, ][next])`
-
-A middleware function invoked with the output of its predecessor.
-
-###### Synchronous
-
-If `fn` returns or throws an error, the pipeline fails and `done` is invoked
-with that error.
-
-If `fn` returns a value (neither `null` nor `undefined`), the first `input` of
-the next function is set to that value (all other `input` is passed through).
-
-The following example shows how returning an error stops the pipeline:
-
-```js
-var trough = require('trough')
-
-trough()
- .use(function(val) {
- return new Error('Got: ' + val)
- })
- .run('some value', console.log)
-```
-
-Yields:
-
-```txt
-Error: Got: some value
- at ~/example.js:5:12
- …
-```
-
-The following example shows how throwing an error stops the pipeline:
-
-```js
-var trough = require('trough')
-
-trough()
- .use(function(val) {
- throw new Error('Got: ' + val)
- })
- .run('more value', console.log)
-```
-
-Yields:
-
-```txt
-Error: Got: more value
- at ~/example.js:5:11
- …
-```
-
-The following example shows how the first output can be modified:
-
-```js
-var trough = require('trough')
-
-trough()
- .use(function(val) {
- return 'even ' + val
- })
- .run('more value', 'untouched', console.log)
-```
-
-Yields:
-
-```txt
-null 'even more value' 'untouched'
-```
-
-###### Promise
-
-If `fn` returns a promise, and that promise rejects, the pipeline fails and
-`done` is invoked with the rejected value.
-
-If `fn` returns a promise, and that promise resolves with a value (neither
-`null` nor `undefined`), the first `input` of the next function is set to that
-value (all other `input` is passed through).
-
-The following example shows how rejecting a promise stops the pipeline:
-
-```js
-var trough = require('trough')
-
-trough()
- .use(function(val) {
- return new Promise(function(resolve, reject) {
- reject('Got: ' + val)
- })
- })
- .run('val', console.log)
-```
-
-Yields:
-
-```txt
-Got: val
-```
-
-The following example shows how the input isn’t touched by resolving to `null`.
-
-```js
-var trough = require('trough')
-
-trough()
- .use(function() {
- return new Promise(function(resolve) {
- setTimeout(function() {
- resolve(null)
- }, 100)
- })
- })
- .run('Input', console.log)
-```
-
-Yields:
-
-```txt
-null 'Input'
-```
-
-###### Asynchronous
-
-If `fn` accepts one more argument than the given `input`, a `next` function is
-given (after the input). `next` must be called, but doesn’t have to be called
-async.
-
-If `next` is given a value (neither `null` nor `undefined`) as its first
-argument, the pipeline fails and `done` is invoked with that value.
-
-If `next` is given no value (either `null` or `undefined`) as the first
-argument, all following non-nully values change the input of the following
-function, and all nully values default to the `input`.
-
-The following example shows how passing a first argument stops the pipeline:
-
-```js
-var trough = require('trough')
-
-trough()
- .use(function(val, next) {
- next(new Error('Got: ' + val))
- })
- .run('val', console.log)
-```
-
-Yields:
-
-```txt
-Error: Got: val
- at ~/example.js:5:10
-```
-
-The following example shows how more values than the input are passed.
-
-```js
-var trough = require('trough')
-
-trough()
- .use(function(val, next) {
- setTimeout(function() {
- next(null, null, 'values')
- }, 100)
- })
- .run('some', console.log)
-```
-
-Yields:
-
-```txt
-null 'some' 'values'
-```
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/wooorm/trough.svg
-
-[build]: https://travis-ci.org/wooorm/trough
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/trough.svg
-
-[coverage]: https://codecov.io/github/wooorm/trough
-
-[downloads-badge]: https://img.shields.io/npm/dm/trough.svg
-
-[downloads]: https://www.npmjs.com/package/trough
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/trough.svg
-
-[size]: https://bundlephobia.com/result?p=trough
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
-
-[ware]: https://github.com/segmentio/ware
-
-[trough]: #trough-1
-
-[use]: #troughusefn
-
-[run]: #troughruninput-done
-
-[fn]: #function-fninput-next
-
-[done]: #function-doneerr-output
-
-[async]: #asynchronous
diff --git a/assets/node_modules/trough/wrap.js b/assets/node_modules/trough/wrap.js
deleted file mode 100644
index cf568c0..0000000
--- a/assets/node_modules/trough/wrap.js
+++ /dev/null
@@ -1,64 +0,0 @@
-'use strict'
-
-var slice = [].slice
-
-module.exports = wrap
-
-// Wrap `fn`.
-// Can be sync or async; return a promise, receive a completion handler, return
-// new values and errors.
-function wrap(fn, callback) {
- var invoked
-
- return wrapped
-
- function wrapped() {
- var params = slice.call(arguments, 0)
- var callback = fn.length > params.length
- var result
-
- if (callback) {
- params.push(done)
- }
-
- try {
- result = fn.apply(null, params)
- } catch (error) {
- // Well, this is quite the pickle.
- // `fn` received a callback and invoked it (thus continuing the pipeline),
- // but later also threw an error.
- // We’re not about to restart the pipeline again, so the only thing left
- // to do is to throw the thing instead.
- if (callback && invoked) {
- throw error
- }
-
- return done(error)
- }
-
- if (!callback) {
- if (result && typeof result.then === 'function') {
- result.then(then, done)
- } else if (result instanceof Error) {
- done(result)
- } else {
- then(result)
- }
- }
- }
-
- // Invoke `next`, only once.
- function done() {
- if (!invoked) {
- invoked = true
-
- callback.apply(null, arguments)
- }
- }
-
- // Invoke `done` with one value.
- // Tracks if an error is passed, too.
- function then(value) {
- done(null, value)
- }
-}
diff --git a/assets/node_modules/type-fest/index.d.ts b/assets/node_modules/type-fest/index.d.ts
deleted file mode 100644
index 520df22..0000000
--- a/assets/node_modules/type-fest/index.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-// Basic
-export * from './source/basic';
-
-// Utilities
-export {Except} from './source/except';
-export {Mutable} from './source/mutable';
-export {Merge} from './source/merge';
-export {MergeExclusive} from './source/merge-exclusive';
-export {RequireAtLeastOne} from './source/require-at-least-one';
-export {RequireExactlyOne} from './source/require-exactly-one';
-export {PartialDeep} from './source/partial-deep';
-export {ReadonlyDeep} from './source/readonly-deep';
-export {LiteralUnion} from './source/literal-union';
-export {Promisable} from './source/promisable';
-export {Opaque} from './source/opaque';
-export {SetOptional} from './source/set-optional';
-export {SetRequired} from './source/set-required';
-
-// Miscellaneous
-export {PackageJson} from './source/package-json';
diff --git a/assets/node_modules/type-fest/license b/assets/node_modules/type-fest/license
deleted file mode 100644
index e7af2f7..0000000
--- a/assets/node_modules/type-fest/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/assets/node_modules/type-fest/package.json b/assets/node_modules/type-fest/package.json
deleted file mode 100644
index ea66211..0000000
--- a/assets/node_modules/type-fest/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "name": "type-fest",
- "version": "0.8.1",
- "description": "A collection of essential TypeScript types",
- "license": "(MIT OR CC0-1.0)",
- "repository": "sindresorhus/type-fest",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && tsd"
- },
- "files": [
- "index.d.ts",
- "source"
- ],
- "keywords": [
- "typescript",
- "ts",
- "types",
- "utility",
- "util",
- "utilities",
- "omit",
- "merge",
- "json"
- ],
- "devDependencies": {
- "@sindresorhus/tsconfig": "^0.4.0",
- "@typescript-eslint/eslint-plugin": "^2.2.0",
- "@typescript-eslint/parser": "^2.2.0",
- "eslint-config-xo-typescript": "^0.18.0",
- "tsd": "^0.7.3",
- "xo": "^0.24.0"
- },
- "xo": {
- "extends": "xo-typescript",
- "extensions": [
- "ts"
- ],
- "rules": {
- "import/no-unresolved": "off",
- "@typescript-eslint/indent": "off"
- }
- }
-}
diff --git a/assets/node_modules/type-fest/readme.md b/assets/node_modules/type-fest/readme.md
deleted file mode 100644
index 1824bda..0000000
--- a/assets/node_modules/type-fest/readme.md
+++ /dev/null
@@ -1,635 +0,0 @@
-<div align="center">
- <br>
- <br>
- <img src="media/logo.svg" alt="type-fest" height="300">
- <br>
- <br>
- <b>A collection of essential TypeScript types</b>
- <br>
- <hr>
-</div>
-<br>
-<br>
-
-[![Build Status](https://travis-ci.com/sindresorhus/type-fest.svg?branch=master)](https://travis-ci.com/sindresorhus/type-fest)
-[![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4)
-<!-- Commented out until they actually show anything
-[![npm dependents](https://badgen.net/npm/dependents/type-fest)](https://www.npmjs.com/package/type-fest?activeTab=dependents) [![npm downloads](https://badgen.net/npm/dt/type-fest)](https://www.npmjs.com/package/type-fest)
--->
-
-Many of the types here should have been built-in. You can help by suggesting some of them to the [TypeScript project](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md).
-
-Either add this package as a dependency or copy-paste the needed types. No credit required. 👌
-
-PR welcome for additional commonly needed types and docs improvements. Read the [contributing guidelines](.github/contributing.md) first.
-
-
-## Install
-
-```
-$ npm install type-fest
-```
-
-*Requires TypeScript >=3.2*
-
-
-## Usage
-
-```ts
-import {Except} from 'type-fest';
-
-type Foo = {
- unicorn: string;
- rainbow: boolean;
-};
-
-type FooWithoutRainbow = Except<Foo, 'rainbow'>;
-//=> {unicorn: string}
-```
-
-
-## API
-
-Click the type names for complete docs.
-
-### Basic
-
-- [`Primitive`](source/basic.d.ts) - Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
-- [`Class`](source/basic.d.ts) - Matches a [`class` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes).
-- [`TypedArray`](source/basic.d.ts) - Matches any [typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray), like `Uint8Array` or `Float64Array`.
-- [`JsonObject`](source/basic.d.ts) - Matches a JSON object.
-- [`JsonArray`](source/basic.d.ts) - Matches a JSON array.
-- [`JsonValue`](source/basic.d.ts) - Matches any valid JSON value.
-- [`ObservableLike`](source/basic.d.ts) - Matches a value that is like an [Observable](https://github.com/tc39/proposal-observable).
-
-### Utilities
-
-- [`Except`](source/except.d.ts) - Create a type from an object type without certain keys. This is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type).
-- [`Mutable`](source/mutable.d.ts) - Convert an object with `readonly` keys into a mutable object. The inverse of `Readonly<T>`.
-- [`Merge`](source/merge.d.ts) - Merge two types into a new type. Keys of the second type overrides keys of the first type.
-- [`MergeExclusive`](source/merge-exclusive.d.ts) - Create a type that has mutually exclusive keys.
-- [`RequireAtLeastOne`](source/require-at-least-one.d.ts) - Create a type that requires at least one of the given keys.
-- [`RequireExactlyOne`](source/require-one.d.ts) - Create a type that requires exactly a single key of the given keys and disallows more.
-- [`PartialDeep`](source/partial-deep.d.ts) - Create a deeply optional version of another type. Use [`Partial<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1401-L1406) if you only need one level deep.
-- [`ReadonlyDeep`](source/readonly-deep.d.ts) - Create a deeply immutable version of an `object`/`Map`/`Set`/`Array` type. Use [`Readonly<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1415-L1420) if you only need one level deep.
-- [`LiteralUnion`](source/literal-union.d.ts) - Create a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union. Workaround for [Microsoft/TypeScript#29729](https://github.com/Microsoft/TypeScript/issues/29729).
-- [`Promisable`](source/promisable.d.ts) - Create a type that represents either the value or the value wrapped in `PromiseLike`.
-- [`Opaque`](source/opaque.d.ts) - Create an [opaque type](https://codemix.com/opaque-types-in-javascript/).
-- [`SetOptional`](source/set-optional.d.ts) - Create a type that makes the given keys optional.
-- [`SetRequired`](source/set-required.d.ts) - Create a type that makes the given keys required.
-
-### Miscellaneous
-
-- [`PackageJson`](source/package-json.d.ts) - Type for [npm's `package.json` file](https://docs.npmjs.com/creating-a-package-json-file).
-
-
-## Declined types
-
-*If we decline a type addition, we will make sure to document the better solution here.*
-
-- [`Diff` and `Spread`](https://github.com/sindresorhus/type-fest/pull/7) - The PR author didn't provide any real-world use-cases and the PR went stale. If you think this type is useful, provide some real-world use-cases and we might reconsider.
-- [`Dictionary`](https://github.com/sindresorhus/type-fest/issues/33) - You only save a few characters (`Dictionary<number>` vs `Record<string, number>`) from [`Record`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1429-L1434), which is more flexible and well-known. Also, you shouldn't use an object as a dictionary. We have `Map` in JavaScript now.
-
-
-## Tips
-
-### Built-in types
-
-There are many advanced types most users don't know about.
-
-- [`Partial<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1401-L1406) - Make all properties in `T` optional.
- <details>
- <summary>
- Example
- </summary>
-
- [Playground](https://typescript-play.js.org/?target=6#code/KYOwrgtgBAMg9gcxsAbsANlA3gKClAeQDMiAaPKAEWACMwFz8BRAJxbhcagDEBDAF17ocAXxw4AliH7AWRXgGNgUAHJwAJsADCcEEQkJsFXgAcTK3hGAAuKAGd+LKQgDcFEx363wEGrLf46IjIaOi28EioGG5iOArovHZ2qhrAAIJmAEJgEuiaLEb4Jk4oAsoKuvoIYCwCErq2apo6egZQALyF+FCm5pY2UABETelmg1xFnrYAzAAM8xNQQZGh4cFR6AB0xEQUIm4UFa0IABRHVbYACrws-BJCADwjLVUAfACUXfhEHFBnug4oABrYAATygcCIhBoACtgAp+JsQaC7P9ju9Prhut0joCwCZ1GUAGpCMDKTrnAwAbWRPWSyMhKWalQMAF0Dtj8BIoSd8YSZCT0GSOu1OmAQJp9CBgOpPkc7uBgBzOfwABYSOybSnVWp3XQ0sF04FgxnPFkIVkdKB84mkpUUfCxbEsYD8GogKBqjUBKBiWIAen9UGut3u6CeqReBlePXQQQA7skwMl+HAoMU4CgJJoISB0ODeOmbvwIVC1cAcIGmdpzVApDI5IpgJscNL49WMiZsrl8id3lrzScsD0zBYrLZBgAVOCUOCdwa+95uIA)
-
- ```ts
- interface NodeConfig {
- appName: string;
- port: number;
- }
-
- class NodeAppBuilder {
- private configuration: NodeConfig = {
- appName: 'NodeApp',
- port: 3000
- };
-
- config(config: Partial<NodeConfig>) {
- type NodeConfigKey = keyof NodeConfig;
-
- for (const key of Object.keys(config) as NodeConfigKey[]) {
- const updateValue = config[key];
-
- if (updateValue === undefined) {
- continue;
- }
-
- this.configuration[key] = updateValue;
- }
-
- return this;
- }
- }
-
- // `Partial<NodeConfig>`` allows us to provide only a part of the
- // NodeConfig interface.
- new NodeAppBuilder().config({appName: 'ToDoApp'});
- ```
- </details>
-
-- [`Required<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1408-L1413) - Make all properties in `T` required.
- <details>
- <summary>
- Example
- </summary>
-
- [Playground](https://typescript-play.js.org/?target=6#code/AQ4SwOwFwUwJwGYEMDGNgGED21VQGJZwC2wA3gFCjXAzFJgA2A-AFzADOUckA5gNxUaIYjA4ckvGG07c+g6gF8KQkAgCuEFFDA5O6gEbEwUbLm2ESwABQIixACJIoSdgCUYAR3Vg4MACYAPGYuFvYAfACU5Ko0APRxwADKMBD+wFAAFuh2Vv7OSBlYGdmc8ABu8LHKsRyGxqY4oQT21pTCIHQMjOwA5DAAHgACxAAOjDAAdChYxL0ANLHUouKSMH0AEmAAhJhY6ozpAJ77GTCMjMCiV0ToSAb7UJPPC9WRgrEJwAAqR6MwSRQPFGUFocDgRHYxnEfGAowh-zgUCOwF6KwkUl6tXqJhCeEsxDaS1AXSYfUGI3GUxmc0WSneQA)
-
- ```ts
- interface ContactForm {
- email?: string;
- message?: string;
- }
-
- function submitContactForm(formData: Required<ContactForm>) {
- // Send the form data to the server.
- }
-
- submitContactForm({
- email: 'ex@mple.com',
- message: 'Hi! Could you tell me more about…',
- });
-
- // TypeScript error: missing property 'message'
- submitContactForm({
- email: 'ex@mple.com',
- });
- ```
- </details>
-
-- [`Readonly<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1415-L1420) - Make all properties in `T` readonly.
- <details>
- <summary>
- Example
- </summary>
-
- [Playground](https://typescript-play.js.org/?target=6#code/AQ4UwOwVwW2AZA9gc3mAbmANsA3gKFCOAHkAzMgGkOJABEwAjKZa2kAUQCcvEu32AMQCGAF2FYBIAL4BufDRABLCKLBcywgMZgEKZOoDCiCGSXI8i4hGEwwALmABnUVxXJ57YFgzZHSVF8sT1BpBSItLGEnJz1kAy5LLy0TM2RHACUwYQATEywATwAeAITjU3MAPnkrCJMXLigtUT4AClxgGztKbyDgaX99I1TzAEokr1BRAAslJwA6FIqLAF48TtswHp9MHDla9hJGACswZvmyLjAwAC8wVpm5xZHkUZDaMKIwqyWXYCW0oN4sNlsA1h0ug5gAByACyBQAggAHJHQ7ZBIFoXbzBjMCz7OoQP5YIaJNYQMAAdziCVaALGNSIAHomcAACoFJFgADKWjcSNEwG4vC4ji0wggEEQguiTnMEGALWAV1yAFp8gVgEjeFyuKICvMrCTgVxnst5jtsGC4ljsPNhXxGaAWcAAOq6YRXYDCRg+RWIcA5JSC+kWdCepQ+v3RYCU3RInzRMCGwlpC19NYBW1Ye08R1AA)
-
- ```ts
- enum LogLevel {
- Off,
- Debug,
- Error,
- Fatal
- };
-
- interface LoggerConfig {
- name: string;
- level: LogLevel;
- }
-
- class Logger {
- config: Readonly<LoggerConfig>;
-
- constructor({name, level}: LoggerConfig) {
- this.config = {name, level};
- Object.freeze(this.config);
- }
- }
-
- const config: LoggerConfig = {
- name: 'MyApp',
- level: LogLevel.Debug
- };
-
- const logger = new Logger(config);
-
- // TypeScript Error: cannot assign to read-only property.
- logger.config.level = LogLevel.Error;
-
- // We are able to edit config variable as we please.
- config.level = LogLevel.Error;
- ```
- </details>
-
-- [`Pick<T, K>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1422-L1427) - From `T`, pick a set of properties whose keys are in the union `K`.
- <details>
- <summary>
- Example
- </summary>
-
- [Playground](https://typescript-play.js.org/?target=6#code/AQ4SwOwFwUwJwGYEMDGNgEE5TCgNugN4BQoZwOUBAXMAM5RyQDmA3KeSFABYCuAtgCMISMHloMmENh04oA9tBjQJjFuzIBfYrOAB6PcADCcGElh1gEGAHcKATwAO6ebyjB5CTNlwFwSxFR0BX5HeToYABNgBDh5fm8cfBg6AHIKG3ldA2BHOOcfFNpUygJ0pAhokr4hETFUgDpswywkggAFUwA3MFtgAF5gQgowKhhVKTYKGuFRcXo1aVZgbTIoJ3RW3xhOmB6+wfbcAGsAHi3kgBpgEtGy4AAfG54BWfqAPnZm4AAlZUj4MAkMA8GAGB4vEgfMlLLw6CwPBA8PYRmMgZVgAC6CgmI4cIommQELwICh8RBgKZKvALh1ur0bHQABR5PYMui0Wk7em2ADaAF0AJS0AASABUALIAGQAogR+Mp3CROCAFBBwVC2ikBpj5CgBIqGjizLA5TAFdAmalImAuqlBRoVQh5HBgEy1eDWfs7J5cjzGYKhroVfpDEhHM4MV6GRR5NN0JrtnRg6BVirTFBeHAKYmYY6QNpdB73LmCJZBlSAXAubtvczeSmQMNSuMbmKNgBlHFgPEUNwusBIPAAQlS1xetTmxT0SDoESgdD0C4aACtHMwxytLrohawgA)
-
- ```ts
- interface Article {
- title: string;
- thumbnail: string;
- content: string;
- }
-
- // Creates new type out of the `Article` interface composed
- // from the Articles' two properties: `title` and `thumbnail`.
- // `ArticlePreview = {title: string; thumbnail: string}`
- type ArticlePreview = Pick<Article, 'title' | 'thumbnail'>;
-
- // Render a list of articles using only title and description.
- function renderArticlePreviews(previews: ArticlePreview[]): HTMLElement {
- const articles = document.createElement('div');
-
- for (const preview of previews) {
- // Append preview to the articles.
- }
-
- return articles;
- }
-
- const articles = renderArticlePreviews([
- {
- title: 'TypeScript tutorial!',
- thumbnail: '/assets/ts.jpg'
- }
- ]);
- ```
- </details>
-
-- [`Record<K, T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1429-L1434) - Construct a type with a set of properties `K` of type `T`.
- <details>
- <summary>
- Example
- </summary>
-
- [Playground](https://typescript-play.js.org/?target=6#code/AQ4ejYAUHsGcCWAXBMB2dgwGbAKYC2ADgDYwCeeemCaWArgE7ADGMxAhmuQHQBQoYEnJE8wALKEARnkaxEKdMAC8wAOS0kstGuAAfdQBM8ANzxlRjXQbVaWACwC0JPB0NqA3HwGgIwAJJoWozYHCxixnAsjAhStADmwESMMJYo1Fi4HMCIaPEu+MRklHj8gpqyoeHAAKJFFFTAAN4+giDYCIxwSAByHAR4AFw5SDF5Xm2gJBzdfQPD3WPxE5PAlBxdAPLYNQAelgh4aOHDaPQEMowrIAC+3oJ+AMKMrlrAXFhSAFZ4LEhC9g4-0BmA4JBISXgiCkBQABpILrJ5MhUGhYcATGD6Bk4Hh-jNgABrPDkOBlXyQAAq9ngYmJpOAAHcEOCRjAXqwYODfoo6DhakUSph+Uh7GI4P0xER4Cj0OSQGwMP8tP1hgAlX7swwAHgRl2RvIANALSA08ABtAC6AD4VM1Wm0Kow0MMrYaHYJjGYLLJXZb3at1HYnC43Go-QHQDcvA6-JsmEJXARgCDgMYWAhjIYhDAU+YiMAAFIwex0ZmilMITCGF79TLAGRsAgJYAAZRwSEZGzEABFTOZUrJ5Yn+jwnWgeER6HB7AAKJrADpdXqS4ZqYultTG6azVfqHswPBbtauLY7fayQ7HIbAAAMwBuAEoYw9IBq2Ixs9h2eFMOQYPQObALQKJgggABeYhghCIpikkKRpOQRIknAsZUiIeCttECBEP8NSMCkjDDAARMGziuIYxHwYOjDCMBmDNnAuTxA6irdCOBB1Lh5Dqpqn66tISIykawBnOCtqqC0gbjqc9DgpGkxegOliyfJDrRkAA)
-
- ```ts
- // Positions of employees in our company.
- type MemberPosition = 'intern' | 'developer' | 'tech-lead';
-
- // Interface describing properties of a single employee.
- interface Employee {
- firstName: string;
- lastName: string;
- yearsOfExperience: number;
- }
-
- // Create an object that has all possible `MemberPosition` values set as keys.
- // Those keys will store a collection of Employees of the same position.
- const team: Record<MemberPosition, Employee[]> = {
- intern: [],
- developer: [],
- 'tech-lead': [],
- };
-
- // Our team has decided to help John with his dream of becoming Software Developer.
- team.intern.push({
- firstName: 'John',
- lastName: 'Doe',
- yearsOfExperience: 0
- });
-
- // `Record` forces you to initialize all of the property keys.
- // TypeScript Error: "tech-lead" property is missing
- const teamEmpty: Record<MemberPosition, null> = {
- intern: null,
- developer: null,
- };
- ```
- </details>
-
-- [`Exclude<T, U>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1436-L1439) - Exclude from `T` those types that are assignable to `U`.
- <details>
- <summary>
- Example
- </summary>
-
- [Playground](https://typescript-play.js.org/?target=6#code/JYOwLgpgTgZghgYwgAgMrQG7QMIHsQzADmyA3gFDLIAOuUYAXMiAK4A2byAPsgM5hRQJHqwC2AI2gBucgF9y5MAE9qKAEoQAjiwj8AEnBAATNtGQBeZAAooWphu26wAGmS3e93bRC8IASgsAPmRDJRlyAHoI5ABRAA8ENhYjFFYOZGVVZBgoXFFkAAM0zh5+QRBhZhYJaAKAOkjogEkQZAQ4X2QAdwALCFbaemRgXmQtFjhOMFwq9K6ULuB0lk6U+HYwZAxJnQaYFhAEMGB8ZCIIMAAFOjAANR2IK0HGWISklIAedCgsKDwCYgAbQA5M9gQBdVzFQJ+JhiSRQMiUYYwayZCC4VHPCzmSzAspCYEBWxgFhQAZwKC+FpgJ43VwARgADH4ZFQSWSBjcZPJyPtDsdTvxKWBvr8rD1DCZoJ5HPopaYoK4EPhCEQmGKcKriLCtrhgEYkVQVT5Nr4fmZLLZtMBbFZgT0wGBqES6ghbHBIJqoBKFdBWQpjfh+DQbhY2tqiHVsbjLMVkAB+ZAAZiZaeQTHOVxu9ySjxNaujNwDVHNvzqbBGkBAdPoAfkQA)
-
- ```ts
- interface ServerConfig {
- port: null | string | number;
- }
-
- type RequestHandler = (request: Request, response: Response) => void;
-
- // Exclude `null` type from `null | string | number`.
- // In case the port is equal to `null`, we will use default value.
- function getPortValue(port: Exclude<ServerConfig['port'], null>): number {
- if (typeof port === 'string') {
- return parseInt(port, 10);
- }
-
- return port;
- }
-
- function startServer(handler: RequestHandler, config: ServerConfig): void {
- const server = require('http').createServer(handler);
-
- const port = config.port === null ? 3000 : getPortValue(config.port);
- server.listen(port);
- }
- ```
- </details>
-
-- [`Extract<T, U>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1441-L1444) - Extract from `T` those types that are assignable to `U`.
- <details>
- <summary>
- Example
- </summary>
-
- [Playground](https://typescript-play.js.org/?target=6#code/CYUwxgNghgTiAEAzArgOzAFwJYHtXzSwEdkQBJYACgEoAueVZAWwCMQYBuAKDDwGcM8MgBF4AXngBlAJ6scESgHIRi6ty5ZUGdoihgEABXZ888AN5d48ANoiAuvUat23K6ihMQ9ATE0BzV3goPy8GZjZOLgBfLi4Aejj4AEEICBwAdz54MAALKFQQ+BxEeAAHY1NgKAwoIKy0grr4DByEUpgccpgMaXgAaxBerCzi+B9-ZulygDouFHRsU1z8kKMYE1RhaqgAHkt4AHkWACt4EAAPbVRgLLWNgBp9gGlBs8uQa6yAUUuYPQwdgNpKM7nh7mMML4CgA+R5WABqUAgpDeVxuhxO1he0jsXGh8EoOBO9COx3BQPo2PBADckaR6IjkSA6PBqTgsMBzPsicdrEC7OJWXSQNwYvFEgAVTS9JLXODpeDpKBZFg4GCoWa8VACIJykAKiQWKy2YQOAioYikCg0OEMDyhRSy4DyxS24KhAAMjyi6gS8AAwjh5OD0iBFHAkJoEOksC1mnkMJq8gUQKDNttKPlnfrwYp3J5XfBHXqoKpfYkAOI4ansTxaeDADmoRSCCBYAbxhC6TDx6rwYHIRX5bScjA4bLJwoDmDwDkfbA9JMrVMVdM1TN69LgkTgwgkchUahqIA)
-
- ```ts
- declare function uniqueId(): number;
-
- const ID = Symbol('ID');
-
- interface Person {
- [ID]: number;
- name: string;
- age: number;
- }
-
- // Allows changing the person data as long as the property key is of string type.
- function changePersonData<
- Obj extends Person,
- Key extends Extract<keyof Person, string>,
- Value extends Obj[Key]
- > (obj: Obj, key: Key, value: Value): void {
- obj[key] = value;
- }
-
- // Tiny Andrew was born.
- const andrew = {
- [ID]: uniqueId(),
- name: 'Andrew',
- age: 0,
- };
-
- // Cool, we're fine with that.
- changePersonData(andrew, 'name', 'Pony');
-
- // Goverment didn't like the fact that you wanted to change your identity.
- changePersonData(andrew, ID, uniqueId());
- ```
- </details>
-
-- [`NonNullable<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1446-L1449) - Exclude `null` and `undefined` from `T`.
- <details>
- <summary>
- Example
- </summary>
- Works with <code>strictNullChecks</code> set to <code>true</code>. (Read more <a href="https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html">here</a>)
-
- [Playground](https://typescript-play.js.org/?target=6#code/C4TwDgpgBACg9gJ2AOQK4FsBGEFQLxQDOwCAlgHYDmUAPlORtrnQwDasDcAUFwPQBU-WAEMkUOADMowqAGNWwwoSgATCBIqlgpOOSjAAFsOBRSy1IQgr9cKJlSlW1mZYQA3HFH68u8xcoBlHA8EACEHJ08Aby4oKDBUTFZSWXjEFEYcAEIALihkXTR2YSSIAB54JDQsHAA+blj4xOTUsHSACkMzPKD3HHDHNQQAGjSkPMqMmoQASh7g-oihqBi4uNIpdraxPAI2VhmVxrX9AzMAOm2ppnwoAA4ABifuE4BfKAhWSyOTuK7CS7pao3AhXF5rV48E4ICDAVAIPT-cGQyG+XTEIgLMJLTx7CAAdygvRCA0iCHaMwarhJOIQjUBSHaACJHk8mYdeLwxtdcVAAOSsh58+lXdr7Dlcq7A3n3J4PEUdADMcspUE53OluAIUGVTx46oAKuAIAFZGQwCYAKIIBCILjUxaDHAMnla+iodjcIA)
-
- ```ts
- type PortNumber = string | number | null;
-
- /** Part of a class definition that is used to build a server */
- class ServerBuilder {
- portNumber!: NonNullable<PortNumber>;
-
- port(this: ServerBuilder, port: PortNumber): ServerBuilder {
- if (port == null) {
- this.portNumber = 8000;
- } else {
- this.portNumber = port;
- }
-
- return this;
- }
- }
-
- const serverBuilder = new ServerBuilder();
-
- serverBuilder
- .port('8000') // portNumber = '8000'
- .port(null) // portNumber = 8000
- .port(3000); // portNumber = 3000
-
- // TypeScript error
- serverBuilder.portNumber = null;
- ```
- </details>
-
-- [`Parameters<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1451-L1454) - Obtain the parameters of a function type in a tuple.
- <details>
- <summary>
- Example
- </summary>
-
- [Playground](https://typescript-play.js.org/?target=6#code/GYVwdgxgLglg9mABAZwBYmMANgUwBQxgAOIUAXIgIZgCeA2gLoCUFAbnDACaIDeAUIkQB6IYgCypSlBxUATrMo1ECsJzgBbLEoipqAc0J7EMKMgDkiHLnU4wp46pwAPHMgB0fAL58+oSLARECEosLAA5ABUYG2QAHgAxJGdpVWREPDdMylk9ZApqemZEAF4APipacrw-CApEgBogkKwAYThwckQwEHUAIxxZJl4BYVEImiIZKF0oZRwiWVdbeygJmThgOYgcGFYcbhqApCJsyhtpWXcR1cnEePBoeDAABVPzgbTixFeFd8uEsClADcIxGiygIFkSEOT3SmTc2VydQeRx+ZxwF2QQ34gkEwDgsnSuFmMBKiAADEDjIhYk1Qm0OlSYABqZnYka4xA1DJZHJYkGc7yCbyeRA+CAIZCzNAYbA4CIAdxg2zJwVCkWirjwMswuEaACYmCCgA)
-
- ```ts
- function shuffle(input: any[]): void {
- // Mutate array randomly changing its' elements indexes.
- }
-
- function callNTimes<Fn extends (...args: any[]) => any> (func: Fn, callCount: number) {
- // Type that represents the type of the received function parameters.
- type FunctionParameters = Parameters<Fn>;
-
- return function (...args: FunctionParameters) {
- for (let i = 0; i < callCount; i++) {
- func(...args);
- }
- }
- }
-
- const shuffleTwice = callNTimes(shuffle, 2);
- ```
- </details>
-
-- [`ConstructorParameters<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1456-L1459) - Obtain the parameters of a constructor function type in a tuple.
- <details>
- <summary>
- Example
- </summary>
-
- [Playground](https://typescript-play.js.org/?target=6#code/MYGwhgzhAECCBOAXAlqApgWQPYBM0mgG8AoaaFRENALmgkXmQDsBzAblOmCycTV4D8teo1YdO3JiICuwRFngAKClWENmLAJRFOZRAAtkEAHQq00ALzlklNBzIBfYk+KhIMAJJTEYJsDQAwmDA+mgAPAAq0GgAHnxMODCKTGgA7tCKxllg8CwQtL4AngDaALraFgB80EWa1SRkAA6MAG5gfNAB4FABPDJyCrQR9tDNyG0dwMGhtBhgjWEiGgA00F70vv4RhY3hEZXVVinpc42KmuJkkv3y8Bly8EPaDWTkhiZd7r3e8LK3llwGCMXGQWGhEOsfH5zJlsrl8p0+gw-goAAo5MAAW3BaHgEEilU0tEhmzQ212BJ0ry4SOg+kg+gBBiMximIGA0nAfAQLGk2N4EAAEgzYcYcnkLsRdDTvNEYkYUKwSdCme9WdM0MYwYhFPSIPpJdTkAAzDKxBUaZX+aAAQgsVmkCTQxuYaBw2ng4Ok8CYcotSu8pMur09iG9vuObxZnx6SN+AyUWTF8MN0CcZE4Ywm5jZHK5aB5fP4iCFIqT4oRRTKRLo6lYVNeAHpG50wOzOe1zHr9NLQ+HoABybsD4HOKXXRA1JCoKhBELmI5pNaB6Fz0KKBAodDYPAgSUTmqYsAALx4m5nC6nW9nGq14KtaEUA9gR9PvuNCjQ9BgACNvcwNBtAcLiAA)
-
- ```ts
- class ArticleModel {
- title: string;
- content?: string;
-
- constructor(title: string) {
- this.title = title;
- }
- }
-
- class InstanceCache<T extends (new (...args: any[]) => any)> {
- private ClassConstructor: T;
- private cache: Map<string, InstanceType<T>> = new Map();
-
- constructor (ctr: T) {
- this.ClassConstructor = ctr;
- }
-
- getInstance (...args: ConstructorParameters<T>): InstanceType<T> {
- const hash = this.calculateArgumentsHash(...args);
-
- const existingInstance = this.cache.get(hash);
- if (existingInstance !== undefined) {
- return existingInstance;
- }
-
- return new this.ClassConstructor(...args);
- }
-
- private calculateArgumentsHash(...args: any[]): string {
- // Calculate hash.
- return 'hash';
- }
- }
-
- const articleCache = new InstanceCache(ArticleModel);
- const amazonArticle = articleCache.getInstance('Amazon forests burining!');
- ```
- </details>
-
-- [`ReturnType<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1461-L1464) – Obtain the return type of a function type.
- <details>
- <summary>
- Example
- </summary>
-
- [Playground](https://typescript-play.js.org/?target=6#code/MYGwhgzhAECSAmICmBlJAnAbgS2E6A3gFDTTwD2AcuQC4AW2AdgOYAUAlAFzSbnbyEAvkWFFQkGJSQB3GMVI1sNZNwg10TZgG4S0YOUY0kh1es07d+xmvQBXYDXLpWi5UlMaWAGj0GjJ6BtNdkJdBQYIADpXZGgAXmgYpB1ScOwoq38aeN9DYxoU6GFRKzVoJjUwRjwAYXJbPPRuAFkwAAcAHgAxBodsAx9GWwBbACMMAD4cxhloVraOCyYjdAAzMDxoOut1e0d0UNIZ6WhWSPOwdGYIbiqATwBtAF0uaHudUQB6ACpv6ABpJBINqJdAbADW0Do5BOw3u5R2VTwMHIq2gAANtjZ0bkbHsnFCwJh8ONjHp0EgwEZ4JFoN9PkRVr1FAZoMwkDRYIjqkgOrosepoEgAB7+eAwAV2BxOLy6ACCVxgIrFEoMeOl6AACpcwMMORgIB1JRMiBNWKVdhruJKfOdIpdrtwFddXlzKjyACp3Nq842HaDIbL6BrZBIVGhIpB1EMYSLsmjmtWW-YhAA+qegAAYLKQLQj3ZsEsdccmnGcLor2Dn8xGedHGpEIBzEzspfsfMHDNAANTQACMVaIljV5GQkRA5DYmIpVKQAgAJARO9le33BDXIyi0YuLW2nJFGLqkOvxFB0YPdBSaLZ0IwNzyPkO8-xkGgsLh8Al427a3hWAhXwwHA8EHT5PmgAB1bAQBAANJ24adKWpft72RaBUTgRBUCAj89HAM8xCTaBjggABRQx0DuHJv25P9dCkWRZVIAAiBjoFImpmjlFBgA0NpsjadByDacgIDAEAIAAQmYpjoGYgAZSBsmGPw6DtZiiFA8CoJguDmAQmoZ2QvtUKQLdoAYmBTwgdEiCAA)
-
- ```ts
- /** Provides every element of the iterable `iter` into the `callback` function and stores the results in an array. */
- function mapIter<
- Elem,
- Func extends (elem: Elem) => any,
- Ret extends ReturnType<Func>
- >(iter: Iterable<Elem>, callback: Func): Ret[] {
- const mapped: Ret[] = [];
-
- for (const elem of iter) {
- mapped.push(callback(elem));
- }
-
- return mapped;
- }
-
- const setObject: Set<string> = new Set();
- const mapObject: Map<number, string> = new Map();
-
- mapIter(setObject, (value: string) => value.indexOf('Foo')); // number[]
-
- mapIter(mapObject, ([key, value]: [number, string]) => {
- return key % 2 === 0 ? value : 'Odd';
- }); // string[]
- ```
- </details>
-
-- [`InstanceType<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1466-L1469) – Obtain the instance type of a constructor function type.
- <details>
- <summary>
- Example
- </summary>
-
- [Playground](https://typescript-play.js.org/?target=6#code/MYGwhgzhAECSAmICmBlJAnAbgS2E6A3gFDTTwD2AcuQC4AW2AdgOYAUAlAFzSbnbyEAvkWFFQkGJSQB3GMVI1sNZNwg10TZgG4S0YOUY0kh1es07d+xmvQBXYDXLpWi5UlMaWAGj0GjJ6BtNdkJdBQYIADpXZGgAXmgYpB1ScOwoq38aeN9DYxoU6GFRKzVoJjUwRjwAYXJbPPRuAFkwAAcAHgAxBodsAx9GWwBbACMMAD4cxhloVraOCyYjdAAzMDxoOut1e0d0UNIZ6WhWSPOwdGYIbiqATwBtAF0uaHudUQB6ACpv6ABpJBINqJdAbADW0Do5BOw3u5R2VTwMHIq2gAANtjZ0bkbHsnFCwJh8ONjHp0EgwEZ4JFoN9PkRVr1FAZoMwkDRYIjqkgOrosepoEgAB7+eAwAV2BxOLy6ACCVxgIrFEoMeOl6AACpcwMMORgIB1JRMiBNWKVdhruJKfOdIpdrtwFddXlzKjyACp3Nq842HaDIbL6BrZBIVGhIpB1EMYSLsmjmtWW-YhAA+qegAAYLKQLQj3ZsEsdccmnGcLor2Dn8xGedHGpEIBzEzspfsfMHDNAANTQACMVaIljV5GQkRA5DYmIpVKQAgAJARO9le33BDXIyi0YuLW2nJFGLqkOvxFB0YPdBSaLZ0IwNzyPkO8-xkGgsLh8Al427a3hWAhXwwHA8EHT5PmgAB1bAQBAANJ24adKWpft72RaBUTgRBUCAj89HAM8xCTaBjggABRQx0DuHJv25P9dCkWRZVIAAiBjoFImpmjlFBgA0NpsjadByDacgIDAEAIAAQmYpjoGYgAZSBsmGPw6DtZiiFA8CoJguDmAQmoZ2QvtUKQLdoAYmBTwgdEiCAA)
-
- ```ts
- class IdleService {
- doNothing (): void {}
- }
-
- class News {
- title: string;
- content: string;
-
- constructor(title: string, content: string) {
- this.title = title;
- this.content = content;
- }
- }
-
- const instanceCounter: Map<Function, number> = new Map();
-
- interface Constructor {
- new(...args: any[]): any;
- }
-
- // Keep track how many instances of `Constr` constructor have been created.
- function getInstance<
- Constr extends Constructor,
- Args extends ConstructorParameters<Constr>
- >(constructor: Constr, ...args: Args): InstanceType<Constr> {
- let count = instanceCounter.get(constructor) || 0;
-
- const instance = new constructor(...args);
-
- instanceCounter.set(constructor, count + 1);
-
- console.log(`Created ${count + 1} instances of ${Constr.name} class`);
-
- return instance;
- }
-
-
- const idleService = getInstance(IdleService);
- // Will log: `Created 1 instances of IdleService class`
- const newsEntry = getInstance(News, 'New ECMAScript proposals!', 'Last month...');
- // Will log: `Created 1 instances of News class`
- ```
- </details>
-
-- [`Omit<T, K>`](https://github.com/microsoft/TypeScript/blob/71af02f7459dc812e85ac31365bfe23daf14b4e4/src/lib/es5.d.ts#L1446) – Constructs a type by picking all properties from T and then removing K.
- <details>
- <summary>
- Example
- </summary>
-
- [Playground](https://typescript-play.js.org/?target=6#code/JYOwLgpgTgZghgYwgAgIImAWzgG2QbwChlks4BzCAVShwC5kBnMKUcgbmKYAcIFgIjBs1YgOXMpSFMWbANoBdTiW5woFddwAW0kfKWEAvoUIB6U8gDCUCHEiNkICAHdkYAJ69kz4GC3JcPG4oAHteKDABBxCYNAxsPFBIWEQUCAAPJG4wZABySUFcgJAAEzMLXNV1ck0dIuCw6EjBADpy5AB1FAQ4EGQAV0YUP2AHDy8wEOQbUugmBLwtEIA3OcmQnEjuZBgQqE7gAGtgZAhwKHdkHFGwNvGUdDIcAGUliIBJEF3kAF5kAHlML4ADyPBIAGjyBUYRQAPnkqho4NoYQA+TiEGD9EAISIhPozErQMG4AASK2gn2+AApek9pCSXm8wFSQooAJQMUkAFQAsgAZACiOAgmDOOSIJAQ+OYyGl4DgoDmf2QJRCCH6YvALQQNjsEGFovF1NyJWAy1y7OUyHMyE+yRAuFImG4Iq1YDswHxbRINjA-SgfXlHqVUE4xiAA)
-
- ```ts
- interface Animal {
- imageUrl: string;
- species: string;
- images: string[];
- paragraphs: string[];
- }
-
- // Creates new type with all properties of the `Animal` interface
- // except 'images' and 'paragraphs' properties. We can use this
- // type to render small hover tooltip for a wiki entry list.
- type AnimalShortInfo = Omit<Animal, 'images' | 'paragraphs'>;
-
- function renderAnimalHoverInfo (animals: AnimalShortInfo[]): HTMLElement {
- const container = document.createElement('div');
- // Internal implementation.
- return container;
- }
- ```
- </details>
-
-You can find some examples in the [TypeScript docs](https://www.typescriptlang.org/docs/handbook/advanced-types.html#predefined-conditional-types).
-
-
-## Maintainers
-
-- [Sindre Sorhus](https://github.com/sindresorhus)
-- [Jarek Radosz](https://github.com/CvX)
-- [Dimitri Benin](https://github.com/BendingBender)
-
-
-## License
-
-(MIT OR CC0-1.0)
-
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-type-fest?utm_source=npm-type-fest&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
diff --git a/assets/node_modules/type-fest/source/basic.d.ts b/assets/node_modules/type-fest/source/basic.d.ts
deleted file mode 100644
index 5969ce5..0000000
--- a/assets/node_modules/type-fest/source/basic.d.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-/// <reference lib="esnext"/>
-
-// TODO: This can just be `export type Primitive = not object` when the `not` keyword is out.
-/**
-Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
-*/
-export type Primitive =
- | null
- | undefined
- | string
- | number
- | boolean
- | symbol
- | bigint;
-
-// TODO: Remove the `= unknown` sometime in the future when most users are on TS 3.5 as it's now the default
-/**
-Matches a [`class` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes).
-*/
-export type Class<T = unknown, Arguments extends any[] = any[]> = new(...arguments_: Arguments) => T;
-
-/**
-Matches any [typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray), like `Uint8Array` or `Float64Array`.
-*/
-export type TypedArray =
- | Int8Array
- | Uint8Array
- | Uint8ClampedArray
- | Int16Array
- | Uint16Array
- | Int32Array
- | Uint32Array
- | Float32Array
- | Float64Array
- | BigInt64Array
- | BigUint64Array;
-
-/**
-Matches a JSON object.
-
-This type can be useful to enforce some input to be JSON-compatible or as a super-type to be extended from. Don't use this as a direct return type as the user would have to double-cast it: `jsonObject as unknown as CustomResponse`. Instead, you could extend your CustomResponse type from it to ensure your type only uses JSON-compatible types: `interface CustomResponse extends JsonObject { … }`.
-*/
-export type JsonObject = {[key: string]: JsonValue};
-
-/**
-Matches a JSON array.
-*/
-export interface JsonArray extends Array<JsonValue> {}
-
-/**
-Matches any valid JSON value.
-*/
-export type JsonValue = string | number | boolean | null | JsonObject | JsonArray;
-
-declare global {
- interface SymbolConstructor {
- readonly observable: symbol;
- }
-}
-
-/**
-Matches a value that is like an [Observable](https://github.com/tc39/proposal-observable).
-*/
-export interface ObservableLike {
- subscribe(observer: (value: unknown) => void): void;
- [Symbol.observable](): ObservableLike;
-}
diff --git a/assets/node_modules/type-fest/source/except.d.ts b/assets/node_modules/type-fest/source/except.d.ts
deleted file mode 100644
index 7dedbaa..0000000
--- a/assets/node_modules/type-fest/source/except.d.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
-Create a type from an object type without certain keys.
-
-This type is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). The `Omit` type does not restrict the omitted keys to be keys present on the given type, while `Except` does. The benefits of a stricter type are avoiding typos and allowing the compiler to pick up on rename refactors automatically.
-
-Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/30825) if you want to have the stricter version as a built-in in TypeScript.
-
-@example
-```
-import {Except} from 'type-fest';
-
-type Foo = {
- a: number;
- b: string;
- c: boolean;
-};
-
-type FooWithoutA = Except<Foo, 'a' | 'c'>;
-//=> {b: string};
-```
-*/
-export type Except<ObjectType, KeysType extends keyof ObjectType> = Pick<ObjectType, Exclude<keyof ObjectType, KeysType>>;
diff --git a/assets/node_modules/type-fest/source/literal-union.d.ts b/assets/node_modules/type-fest/source/literal-union.d.ts
deleted file mode 100644
index 52e8de6..0000000
--- a/assets/node_modules/type-fest/source/literal-union.d.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import {Primitive} from './basic';
-
-/**
-Allows creating a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union.
-
-Currently, when a union type of a primitive type is combined with literal types, TypeScript loses all information about the combined literals. Thus, when such type is used in an IDE with autocompletion, no suggestions are made for the declared literals.
-
-This type is a workaround for [Microsoft/TypeScript#29729](https://github.com/Microsoft/TypeScript/issues/29729). It will be removed as soon as it's not needed anymore.
-
-@example
-```
-import {LiteralUnion} from 'type-fest';
-
-// Before
-
-type Pet = 'dog' | 'cat' | string;
-
-const pet: Pet = '';
-// Start typing in your TypeScript-enabled IDE.
-// You **will not** get auto-completion for `dog` and `cat` literals.
-
-// After
-
-type Pet2 = LiteralUnion<'dog' | 'cat', string>;
-
-const pet: Pet2 = '';
-// You **will** get auto-completion for `dog` and `cat` literals.
-```
- */
-export type LiteralUnion<
- LiteralType extends BaseType,
- BaseType extends Primitive
-> = LiteralType | (BaseType & {_?: never});
diff --git a/assets/node_modules/type-fest/source/merge-exclusive.d.ts b/assets/node_modules/type-fest/source/merge-exclusive.d.ts
deleted file mode 100644
index 059bd2c..0000000
--- a/assets/node_modules/type-fest/source/merge-exclusive.d.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-// Helper type. Not useful on its own.
-type Without<FirstType, SecondType> = {[KeyType in Exclude<keyof FirstType, keyof SecondType>]?: never};
-
-/**
-Create a type that has mutually exclusive keys.
-
-This type was inspired by [this comment](https://github.com/Microsoft/TypeScript/issues/14094#issuecomment-373782604).
-
-This type works with a helper type, called `Without`. `Without<FirstType, SecondType>` produces a type that has only keys from `FirstType` which are not present on `SecondType` and sets the value type for these keys to `never`. This helper type is then used in `MergeExclusive` to remove keys from either `FirstType` or `SecondType`.
-
-@example
-```
-import {MergeExclusive} from 'type-fest';
-
-interface ExclusiveVariation1 {
- exclusive1: boolean;
-}
-
-interface ExclusiveVariation2 {
- exclusive2: string;
-}
-
-type ExclusiveOptions = MergeExclusive<ExclusiveVariation1, ExclusiveVariation2>;
-
-let exclusiveOptions: ExclusiveOptions;
-
-exclusiveOptions = {exclusive1: true};
-//=> Works
-exclusiveOptions = {exclusive2: 'hi'};
-//=> Works
-exclusiveOptions = {exclusive1: true, exclusive2: 'hi'};
-//=> Error
-```
-*/
-export type MergeExclusive<FirstType, SecondType> =
- (FirstType | SecondType) extends object ?
- (Without<FirstType, SecondType> & SecondType) | (Without<SecondType, FirstType> & FirstType) :
- FirstType | SecondType;
-
diff --git a/assets/node_modules/type-fest/source/merge.d.ts b/assets/node_modules/type-fest/source/merge.d.ts
deleted file mode 100644
index 4b3920b..0000000
--- a/assets/node_modules/type-fest/source/merge.d.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import {Except} from './except';
-
-/**
-Merge two types into a new type. Keys of the second type overrides keys of the first type.
-
-@example
-```
-import {Merge} from 'type-fest';
-
-type Foo = {
- a: number;
- b: string;
-};
-
-type Bar = {
- b: number;
-};
-
-const ab: Merge<Foo, Bar> = {a: 1, b: 2};
-```
-*/
-export type Merge<FirstType, SecondType> = Except<FirstType, Extract<keyof FirstType, keyof SecondType>> & SecondType;
diff --git a/assets/node_modules/type-fest/source/mutable.d.ts b/assets/node_modules/type-fest/source/mutable.d.ts
deleted file mode 100644
index 03d0dda..0000000
--- a/assets/node_modules/type-fest/source/mutable.d.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
-Convert an object with `readonly` keys into a mutable object. Inverse of `Readonly<T>`.
-
-This can be used to [store and mutate options within a class](https://github.com/sindresorhus/pageres/blob/4a5d05fca19a5fbd2f53842cbf3eb7b1b63bddd2/source/index.ts#L72), [edit `readonly` objects within tests](https://stackoverflow.com/questions/50703834), and [construct a `readonly` object within a function](https://github.com/Microsoft/TypeScript/issues/24509).
-
-@example
-```
-import {Mutable} from 'type-fest';
-
-type Foo = {
- readonly a: number;
- readonly b: string;
-};
-
-const mutableFoo: Mutable<Foo> = {a: 1, b: '2'};
-mutableFoo.a = 3;
-```
-*/
-export type Mutable<ObjectType> = {
- // For each `Key` in the keys of `ObjectType`, make a mapped type by removing the `readonly` modifier from the key.
- -readonly [KeyType in keyof ObjectType]: ObjectType[KeyType];
-};
diff --git a/assets/node_modules/type-fest/source/opaque.d.ts b/assets/node_modules/type-fest/source/opaque.d.ts
deleted file mode 100644
index 5311c1b..0000000
--- a/assets/node_modules/type-fest/source/opaque.d.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
-Create an opaque type, which hides its internal details from the public, and can only be created by being used explicitly.
-
-The generic type parameter can be anything. It doesn't have to be an object.
-
-[Read more about opaque types.](https://codemix.com/opaque-types-in-javascript/)
-
-There have been several discussions about adding this feature to TypeScript via the `opaque type` operator, similar to how Flow does it. Unfortunately, nothing has (yet) moved forward:
- - [Microsoft/TypeScript#15408](https://github.com/Microsoft/TypeScript/issues/15408)
- - [Microsoft/TypeScript#15807](https://github.com/Microsoft/TypeScript/issues/15807)
-
-@example
-```
-import {Opaque} from 'type-fest';
-
-type AccountNumber = Opaque<number>;
-type AccountBalance = Opaque<number>;
-
-function createAccountNumber(): AccountNumber {
- return 2 as AccountNumber;
-}
-
-function getMoneyForAccount(accountNumber: AccountNumber): AccountBalance {
- return 4 as AccountBalance;
-}
-
-// This will compile successfully.
-getMoneyForAccount(createAccountNumber());
-
-// But this won't, because it has to be explicitly passed as an `AccountNumber` type.
-getMoneyForAccount(2);
-
-// You can use opaque values like they aren't opaque too.
-const accountNumber = createAccountNumber();
-
-// This will compile successfully.
-accountNumber + 2;
-```
-*/
-export type Opaque<Type> = Type & {readonly __opaque__: unique symbol};
diff --git a/assets/node_modules/type-fest/source/package-json.d.ts b/assets/node_modules/type-fest/source/package-json.d.ts
deleted file mode 100644
index 3179e58..0000000
--- a/assets/node_modules/type-fest/source/package-json.d.ts
+++ /dev/null
@@ -1,501 +0,0 @@
-import {LiteralUnion} from '..';
-
-declare namespace PackageJson {
- /**
- A person who has been involved in creating or maintaining the package.
- */
- export type Person =
- | string
- | {
- name: string;
- url?: string;
- email?: string;
- };
-
- export type BugsLocation =
- | string
- | {
- /**
- The URL to the package's issue tracker.
- */
- url?: string;
-
- /**
- The email address to which issues should be reported.
- */
- email?: string;
- };
-
- export interface DirectoryLocations {
- /**
- Location for executable scripts. Sugar to generate entries in the `bin` property by walking the folder.
- */
- bin?: string;
-
- /**
- Location for Markdown files.
- */
- doc?: string;
-
- /**
- Location for example scripts.
- */
- example?: string;
-
- /**
- Location for the bulk of the library.
- */
- lib?: string;
-
- /**
- Location for man pages. Sugar to generate a `man` array by walking the folder.
- */
- man?: string;
-
- /**
- Location for test files.
- */
- test?: string;
-
- [directoryType: string]: unknown;
- }
-
- export type Scripts = {
- /**
- Run **before** the package is published (Also run on local `npm install` without any arguments).
- */
- prepublish?: string;
-
- /**
- Run both **before** the package is packed and published, and on local `npm install` without any arguments. This is run **after** `prepublish`, but **before** `prepublishOnly`.
- */
- prepare?: string;
-
- /**
- Run **before** the package is prepared and packed, **only** on `npm publish`.
- */
- prepublishOnly?: string;
-
- /**
- Run **before** a tarball is packed (on `npm pack`, `npm publish`, and when installing git dependencies).
- */
- prepack?: string;
-
- /**
- Run **after** the tarball has been generated and moved to its final destination.
- */
- postpack?: string;
-
- /**
- Run **after** the package is published.
- */
- publish?: string;
-
- /**
- Run **after** the package is published.
- */
- postpublish?: string;
-
- /**
- Run **before** the package is installed.
- */
- preinstall?: string;
-
- /**
- Run **after** the package is installed.
- */
- install?: string;
-
- /**
- Run **after** the package is installed and after `install`.
- */
- postinstall?: string;
-
- /**
- Run **before** the package is uninstalled and before `uninstall`.
- */
- preuninstall?: string;
-
- /**
- Run **before** the package is uninstalled.
- */
- uninstall?: string;
-
- /**
- Run **after** the package is uninstalled.
- */
- postuninstall?: string;
-
- /**
- Run **before** bump the package version and before `version`.
- */
- preversion?: string;
-
- /**
- Run **before** bump the package version.
- */
- version?: string;
-
- /**
- Run **after** bump the package version.
- */
- postversion?: string;
-
- /**
- Run with the `npm test` command, before `test`.
- */
- pretest?: string;
-
- /**
- Run with the `npm test` command.
- */
- test?: string;
-
- /**
- Run with the `npm test` command, after `test`.
- */
- posttest?: string;
-
- /**
- Run with the `npm stop` command, before `stop`.
- */
- prestop?: string;
-
- /**
- Run with the `npm stop` command.
- */
- stop?: string;
-
- /**
- Run with the `npm stop` command, after `stop`.
- */
- poststop?: string;
-
- /**
- Run with the `npm start` command, before `start`.
- */
- prestart?: string;
-
- /**
- Run with the `npm start` command.
- */
- start?: string;
-
- /**
- Run with the `npm start` command, after `start`.
- */
- poststart?: string;
-
- /**
- Run with the `npm restart` command, before `restart`. Note: `npm restart` will run the `stop` and `start` scripts if no `restart` script is provided.
- */
- prerestart?: string;
-
- /**
- Run with the `npm restart` command. Note: `npm restart` will run the `stop` and `start` scripts if no `restart` script is provided.
- */
- restart?: string;
-
- /**
- Run with the `npm restart` command, after `restart`. Note: `npm restart` will run the `stop` and `start` scripts if no `restart` script is provided.
- */
- postrestart?: string;
- } & {
- [scriptName: string]: string;
- };
-
- /**
- Dependencies of the package. The version range is a string which has one or more space-separated descriptors. Dependencies can also be identified with a tarball or Git URL.
- */
- export interface Dependency {
- [packageName: string]: string;
- }
-
- export interface NonStandardEntryPoints {
- /**
- An ECMAScript module ID that is the primary entry point to the program.
- */
- module?: string;
-
- /**
- A module ID with untranspiled code that is the primary entry point to the program.
- */
- esnext?:
- | string
- | {
- main?: string;
- browser?: string;
- [moduleName: string]: string | undefined;
- };
-
- /**
- A hint to JavaScript bundlers or component tools when packaging modules for client side use.
- */
- browser?:
- | string
- | {
- [moduleName: string]: string | false;
- };
- }
-
- export interface TypeScriptConfiguration {
- /**
- Location of the bundled TypeScript declaration file.
- */
- types?: string;
-
- /**
- Location of the bundled TypeScript declaration file. Alias of `types`.
- */
- typings?: string;
- }
-
- export interface YarnConfiguration {
- /**
- If your package only allows one version of a given dependency, and you’d like to enforce the same behavior as `yarn install --flat` on the command line, set this to `true`.
-
- Note that if your `package.json` contains `"flat": true` and other packages depend on yours (e.g. you are building a library rather than an application), those other packages will also need `"flat": true` in their `package.json` or be installed with `yarn install --flat` on the command-line.
- */
- flat?: boolean;
-
- /**
- Selective version resolutions. Allows the definition of custom package versions inside dependencies without manual edits in the `yarn.lock` file.
- */
- resolutions?: Dependency;
- }
-
- export interface JSPMConfiguration {
- /**
- JSPM configuration.
- */
- jspm?: PackageJson;
- }
-}
-
-/**
-Type for [npm's `package.json` file](https://docs.npmjs.com/creating-a-package-json-file). Also includes types for fields used by other popular projects, like TypeScript and Yarn.
-*/
-export type PackageJson = {
- /**
- The name of the package.
- */
- name?: string;
-
- /**
- Package version, parseable by [`node-semver`](https://github.com/npm/node-semver).
- */
- version?: string;
-
- /**
- Package description, listed in `npm search`.
- */
- description?: string;
-
- /**
- Keywords associated with package, listed in `npm search`.
- */
- keywords?: string[];
-
- /**
- The URL to the package's homepage.
- */
- homepage?: LiteralUnion<'.', string>;
-
- /**
- The URL to the package's issue tracker and/or the email address to which issues should be reported.
- */
- bugs?: PackageJson.BugsLocation;
-
- /**
- The license for the package.
- */
- license?: string;
-
- /**
- The licenses for the package.
- */
- licenses?: Array<{
- type?: string;
- url?: string;
- }>;
-
- author?: PackageJson.Person;
-
- /**
- A list of people who contributed to the package.
- */
- contributors?: PackageJson.Person[];
-
- /**
- A list of people who maintain the package.
- */
- maintainers?: PackageJson.Person[];
-
- /**
- The files included in the package.
- */
- files?: string[];
-
- /**
- The module ID that is the primary entry point to the program.
- */
- main?: string;
-
- /**
- The executable files that should be installed into the `PATH`.
- */
- bin?:
- | string
- | {
- [binary: string]: string;
- };
-
- /**
- Filenames to put in place for the `man` program to find.
- */
- man?: string | string[];
-
- /**
- Indicates the structure of the package.
- */
- directories?: PackageJson.DirectoryLocations;
-
- /**
- Location for the code repository.
- */
- repository?:
- | string
- | {
- type: string;
- url: string;
- };
-
- /**
- Script commands that are run at various times in the lifecycle of the package. The key is the lifecycle event, and the value is the command to run at that point.
- */
- scripts?: PackageJson.Scripts;
-
- /**
- Is used to set configuration parameters used in package scripts that persist across upgrades.
- */
- config?: {
- [configKey: string]: unknown;
- };
-
- /**
- The dependencies of the package.
- */
- dependencies?: PackageJson.Dependency;
-
- /**
- Additional tooling dependencies that are not required for the package to work. Usually test, build, or documentation tooling.
- */
- devDependencies?: PackageJson.Dependency;
-
- /**
- Dependencies that are skipped if they fail to install.
- */
- optionalDependencies?: PackageJson.Dependency;
-
- /**
- Dependencies that will usually be required by the package user directly or via another dependency.
- */
- peerDependencies?: PackageJson.Dependency;
-
- /**
- Package names that are bundled when the package is published.
- */
- bundledDependencies?: string[];
-
- /**
- Alias of `bundledDependencies`.
- */
- bundleDependencies?: string[];
-
- /**
- Engines that this package runs on.
- */
- engines?: {
- [EngineName in 'npm' | 'node' | string]: string;
- };
-
- /**
- @deprecated
- */
- engineStrict?: boolean;
-
- /**
- Operating systems the module runs on.
- */
- os?: Array<LiteralUnion<
- | 'aix'
- | 'darwin'
- | 'freebsd'
- | 'linux'
- | 'openbsd'
- | 'sunos'
- | 'win32'
- | '!aix'
- | '!darwin'
- | '!freebsd'
- | '!linux'
- | '!openbsd'
- | '!sunos'
- | '!win32',
- string
- >>;
-
- /**
- CPU architectures the module runs on.
- */
- cpu?: Array<LiteralUnion<
- | 'arm'
- | 'arm64'
- | 'ia32'
- | 'mips'
- | 'mipsel'
- | 'ppc'
- | 'ppc64'
- | 's390'
- | 's390x'
- | 'x32'
- | 'x64'
- | '!arm'
- | '!arm64'
- | '!ia32'
- | '!mips'
- | '!mipsel'
- | '!ppc'
- | '!ppc64'
- | '!s390'
- | '!s390x'
- | '!x32'
- | '!x64',
- string
- >>;
-
- /**
- If set to `true`, a warning will be shown if package is installed locally. Useful if the package is primarily a command-line application that should be installed globally.
-
- @deprecated
- */
- preferGlobal?: boolean;
-
- /**
- If set to `true`, then npm will refuse to publish it.
- */
- private?: boolean;
-
- /**
- * A set of config values that will be used at publish-time. It's especially handy to set the tag, registry or access, to ensure that a given package is not tagged with 'latest', published to the global public registry or that a scoped module is private by default.
- */
- publishConfig?: {
- [config: string]: unknown;
- };
-} &
-PackageJson.NonStandardEntryPoints &
-PackageJson.TypeScriptConfiguration &
-PackageJson.YarnConfiguration &
-PackageJson.JSPMConfiguration & {
- [key: string]: unknown;
-};
diff --git a/assets/node_modules/type-fest/source/partial-deep.d.ts b/assets/node_modules/type-fest/source/partial-deep.d.ts
deleted file mode 100644
index b962b84..0000000
--- a/assets/node_modules/type-fest/source/partial-deep.d.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import {Primitive} from './basic';
-
-/**
-Create a type from another type with all keys and nested keys set to optional.
-
-Use-cases:
-- Merging a default settings/config object with another object, the second object would be a deep partial of the default object.
-- Mocking and testing complex entities, where populating an entire object with its keys would be redundant in terms of the mock or test.
-
-@example
-```
-import {PartialDeep} from 'type-fest';
-
-const settings: Settings = {
- textEditor: {
- fontSize: 14;
- fontColor: '#000000';
- fontWeight: 400;
- }
- autocomplete: false;
- autosave: true;
-};
-
-const applySavedSettings = (savedSettings: PartialDeep<Settings>) => {
- return {...settings, ...savedSettings};
-}
-
-settings = applySavedSettings({textEditor: {fontWeight: 500}});
-```
-*/
-export type PartialDeep<T> = T extends Primitive
- ? Partial<T>
- : T extends Map<infer KeyType, infer ValueType>
- ? PartialMapDeep<KeyType, ValueType>
- : T extends Set<infer ItemType>
- ? PartialSetDeep<ItemType>
- : T extends ReadonlyMap<infer KeyType, infer ValueType>
- ? PartialReadonlyMapDeep<KeyType, ValueType>
- : T extends ReadonlySet<infer ItemType>
- ? PartialReadonlySetDeep<ItemType>
- : T extends ((...arguments: any[]) => unknown)
- ? T | undefined
- : T extends object
- ? PartialObjectDeep<T>
- : unknown;
-
-/**
-Same as `PartialDeep`, but accepts only `Map`s and as inputs. Internal helper for `PartialDeep`.
-*/
-interface PartialMapDeep<KeyType, ValueType> extends Map<PartialDeep<KeyType>, PartialDeep<ValueType>> {}
-
-/**
-Same as `PartialDeep`, but accepts only `Set`s as inputs. Internal helper for `PartialDeep`.
-*/
-interface PartialSetDeep<T> extends Set<PartialDeep<T>> {}
-
-/**
-Same as `PartialDeep`, but accepts only `ReadonlyMap`s as inputs. Internal helper for `PartialDeep`.
-*/
-interface PartialReadonlyMapDeep<KeyType, ValueType> extends ReadonlyMap<PartialDeep<KeyType>, PartialDeep<ValueType>> {}
-
-/**
-Same as `PartialDeep`, but accepts only `ReadonlySet`s as inputs. Internal helper for `PartialDeep`.
-*/
-interface PartialReadonlySetDeep<T> extends ReadonlySet<PartialDeep<T>> {}
-
-/**
-Same as `PartialDeep`, but accepts only `object`s as inputs. Internal helper for `PartialDeep`.
-*/
-type PartialObjectDeep<ObjectType extends object> = {
- [KeyType in keyof ObjectType]?: PartialDeep<ObjectType[KeyType]>
-};
diff --git a/assets/node_modules/type-fest/source/promisable.d.ts b/assets/node_modules/type-fest/source/promisable.d.ts
deleted file mode 100644
index 71242a5..0000000
--- a/assets/node_modules/type-fest/source/promisable.d.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
-Create a type that represents either the value or the value wrapped in `PromiseLike`.
-
-Use-cases:
-- A function accepts a callback that may either return a value synchronously or may return a promised value.
-- This type could be the return type of `Promise#then()`, `Promise#catch()`, and `Promise#finally()` callbacks.
-
-Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/31394) if you want to have this type as a built-in in TypeScript.
-
-@example
-```
-import {Promisable} from 'type-fest';
-
-async function logger(getLogEntry: () => Promisable<string>): Promise<void> {
- const entry = await getLogEntry();
- console.log(entry);
-}
-
-logger(() => 'foo');
-logger(() => Promise.resolve('bar'));
-```
-*/
-export type Promisable<T> = T | PromiseLike<T>;
diff --git a/assets/node_modules/type-fest/source/readonly-deep.d.ts b/assets/node_modules/type-fest/source/readonly-deep.d.ts
deleted file mode 100644
index b8c04de..0000000
--- a/assets/node_modules/type-fest/source/readonly-deep.d.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-import {Primitive} from './basic';
-
-/**
-Convert `object`s, `Map`s, `Set`s, and `Array`s and all of their keys/elements into immutable structures recursively.
-
-This is useful when a deeply nested structure needs to be exposed as completely immutable, for example, an imported JSON module or when receiving an API response that is passed around.
-
-Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/13923) if you want to have this type as a built-in in TypeScript.
-
-@example
-```
-// data.json
-{
- "foo": ["bar"]
-}
-
-// main.ts
-import {ReadonlyDeep} from 'type-fest';
-import dataJson = require('./data.json');
-
-const data: ReadonlyDeep<typeof dataJson> = dataJson;
-
-export default data;
-
-// test.ts
-import data from './main';
-
-data.foo.push('bar');
-//=> error TS2339: Property 'push' does not exist on type 'readonly string[]'
-```
-*/
-export type ReadonlyDeep<T> = T extends Primitive | ((...arguments: any[]) => unknown)
- ? T
- : T extends ReadonlyMap<infer KeyType, infer ValueType>
- ? ReadonlyMapDeep<KeyType, ValueType>
- : T extends ReadonlySet<infer ItemType>
- ? ReadonlySetDeep<ItemType>
- : T extends object
- ? ReadonlyObjectDeep<T>
- : unknown;
-
-/**
-Same as `ReadonlyDeep`, but accepts only `ReadonlyMap`s as inputs. Internal helper for `ReadonlyDeep`.
-*/
-interface ReadonlyMapDeep<KeyType, ValueType>
- extends ReadonlyMap<ReadonlyDeep<KeyType>, ReadonlyDeep<ValueType>> {}
-
-/**
-Same as `ReadonlyDeep`, but accepts only `ReadonlySet`s as inputs. Internal helper for `ReadonlyDeep`.
-*/
-interface ReadonlySetDeep<ItemType>
- extends ReadonlySet<ReadonlyDeep<ItemType>> {}
-
-/**
-Same as `ReadonlyDeep`, but accepts only `object`s as inputs. Internal helper for `ReadonlyDeep`.
-*/
-type ReadonlyObjectDeep<ObjectType extends object> = {
- readonly [KeyType in keyof ObjectType]: ReadonlyDeep<ObjectType[KeyType]>
-};
diff --git a/assets/node_modules/type-fest/source/require-at-least-one.d.ts b/assets/node_modules/type-fest/source/require-at-least-one.d.ts
deleted file mode 100644
index 337379f..0000000
--- a/assets/node_modules/type-fest/source/require-at-least-one.d.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import {Except} from './except';
-
-/**
-Create a type that requires at least one of the given keys. The remaining keys are kept as is.
-
-@example
-```
-import {RequireAtLeastOne} from 'type-fest';
-
-type Responder = {
- text?: () => string;
- json?: () => string;
-
- secure?: boolean;
-};
-
-const responder: RequireAtLeastOne<Responder, 'text' | 'json'> = {
- json: () => '{"message": "ok"}',
- secure: true
-};
-```
-*/
-export type RequireAtLeastOne<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> =
- {
- // For each Key in KeysType make a mapped type
- [Key in KeysType]: (
- // …by picking that Key's type and making it required
- Required<Pick<ObjectType, Key>>
- )
- }[KeysType]
- // …then, make intersection types by adding the remaining keys to each mapped type.
- & Except<ObjectType, KeysType>;
diff --git a/assets/node_modules/type-fest/source/require-exactly-one.d.ts b/assets/node_modules/type-fest/source/require-exactly-one.d.ts
deleted file mode 100644
index d8c71b7..0000000
--- a/assets/node_modules/type-fest/source/require-exactly-one.d.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-// TODO: Remove this when we target TypeScript >=3.5.
-// eslint-disable-next-line @typescript-eslint/generic-type-naming
-type _Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;
-
-/**
-Create a type that requires exactly one of the given keys and disallows more. The remaining keys are kept as is.
-
-Use-cases:
-- Creating interfaces for components that only need one of the keys to display properly.
-- Declaring generic keys in a single place for a single use-case that gets narrowed down via `RequireExactlyOne`.
-
-The caveat with `RequireExactlyOne` is that TypeScript doesn't always know at compile time every key that will exist at runtime. Therefore `RequireExactlyOne` can't do anything to prevent extra keys it doesn't know about.
-
-@example
-```
-import {RequireExactlyOne} from 'type-fest';
-
-type Responder = {
- text: () => string;
- json: () => string;
- secure: boolean;
-};
-
-const responder: RequireExactlyOne<Responder, 'text' | 'json'> = {
- // Adding a `text` key here would cause a compile error.
-
- json: () => '{"message": "ok"}',
- secure: true
-};
-```
-*/
-export type RequireExactlyOne<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> =
- {[Key in KeysType]: (
- Required<Pick<ObjectType, Key>> &
- Partial<Record<Exclude<KeysType, Key>, never>>
- )}[KeysType] & _Omit<ObjectType, KeysType>;
diff --git a/assets/node_modules/type-fest/source/set-optional.d.ts b/assets/node_modules/type-fest/source/set-optional.d.ts
deleted file mode 100644
index a9a256a..0000000
--- a/assets/node_modules/type-fest/source/set-optional.d.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
-Create a type that makes the given keys optional. The remaining keys are kept as is. The sister of the `SetRequired` type.
-
-Use-case: You want to define a single model where the only thing that changes is whether or not some of the keys are optional.
-
-@example
-```
-import {SetOptional} from 'type-fest';
-
-type Foo = {
- a: number;
- b?: string;
- c: boolean;
-}
-
-type SomeOptional = SetOptional<Foo, 'b' | 'c'>;
-// type SomeOptional = {
-// a: number;
-// b?: string; // Was already optional and still is.
-// c?: boolean; // Is now optional.
-// }
-```
-*/
-export type SetOptional<BaseType, Keys extends keyof BaseType = keyof BaseType> =
- // Pick just the keys that are not optional from the base type.
- Pick<BaseType, Exclude<keyof BaseType, Keys>> &
- // Pick the keys that should be optional from the base type and make them optional.
- Partial<Pick<BaseType, Keys>> extends
- // If `InferredType` extends the previous, then for each key, use the inferred type key.
- infer InferredType
- ? {[KeyType in keyof InferredType]: InferredType[KeyType]}
- : never;
diff --git a/assets/node_modules/type-fest/source/set-required.d.ts b/assets/node_modules/type-fest/source/set-required.d.ts
deleted file mode 100644
index 2572bc1..0000000
--- a/assets/node_modules/type-fest/source/set-required.d.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
-Create a type that makes the given keys required. The remaining keys are kept as is. The sister of the `SetOptional` type.
-
-Use-case: You want to define a single model where the only thing that changes is whether or not some of the keys are required.
-
-@example
-```
-import {SetRequired} from 'type-fest';
-
-type Foo = {
- a?: number;
- b: string;
- c?: boolean;
-}
-
-type SomeRequired = SetRequired<Foo, 'b' | 'c'>;
-// type SomeRequired = {
-// a?: number;
-// b: string; // Was already required and still is.
-// c: boolean; // Is now required.
-// }
-```
-*/
-export type SetRequired<BaseType, Keys extends keyof BaseType = keyof BaseType> =
- // Pick just the keys that are not required from the base type.
- Pick<BaseType, Exclude<keyof BaseType, Keys>> &
- // Pick the keys that should be required from the base type and make them required.
- Required<Pick<BaseType, Keys>> extends
- // If `InferredType` extends the previous, then for each key, use the inferred type key.
- infer InferredType
- ? {[KeyType in keyof InferredType]: InferredType[KeyType]}
- : never;
diff --git a/assets/node_modules/typedarray-to-buffer/.airtap.yml b/assets/node_modules/typedarray-to-buffer/.airtap.yml
deleted file mode 100644
index 3417780..0000000
--- a/assets/node_modules/typedarray-to-buffer/.airtap.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-sauce_connect: true
-loopback: airtap.local
-browsers:
- - name: chrome
- version: latest
- - name: firefox
- version: latest
- - name: safari
- version: latest
- - name: microsoftedge
- version: latest
- - name: ie
- version: latest
- - name: iphone
- version: latest
diff --git a/assets/node_modules/typedarray-to-buffer/.travis.yml b/assets/node_modules/typedarray-to-buffer/.travis.yml
deleted file mode 100644
index f25afbd..0000000
--- a/assets/node_modules/typedarray-to-buffer/.travis.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-language: node_js
-node_js:
- - lts/*
-addons:
- sauce_connect: true
- hosts:
- - airtap.local
-env:
- global:
- - secure: i51rE9rZGHbcZWlL58j3H1qtL23OIV2r0X4TcQKNI3pw2mubdHFJmfPNNO19ItfReu8wwQMxOehKamwaNvqMiKWyHfn/QcThFQysqzgGZ6AgnUbYx9od6XFNDeWd1sVBf7QBAL07y7KWlYGWCwFwWjabSVySzQhEBdisPcskfkI=
- - secure: BKq6/5z9LK3KDkTjs7BGeBZ1KsWgz+MsAXZ4P64NSeVGFaBdXU45+ww1mwxXFt5l22/mhyOQZfebQl+kGVqRSZ+DEgQeCymkNZ6CD8c6w6cLuOJXiXwuu/cDM2DD0tfGeu2YZC7yEikP7BqEFwH3D324rRzSGLF2RSAAwkOI7bE=
diff --git a/assets/node_modules/typedarray-to-buffer/LICENSE b/assets/node_modules/typedarray-to-buffer/LICENSE
deleted file mode 100644
index 0c068ce..0000000
--- a/assets/node_modules/typedarray-to-buffer/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-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/assets/node_modules/typedarray-to-buffer/README.md b/assets/node_modules/typedarray-to-buffer/README.md
deleted file mode 100644
index 35761fb..0000000
--- a/assets/node_modules/typedarray-to-buffer/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# typedarray-to-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/typedarray-to-buffer/master.svg
-[travis-url]: https://travis-ci.org/feross/typedarray-to-buffer
-[npm-image]: https://img.shields.io/npm/v/typedarray-to-buffer.svg
-[npm-url]: https://npmjs.org/package/typedarray-to-buffer
-[downloads-image]: https://img.shields.io/npm/dm/typedarray-to-buffer.svg
-[downloads-url]: https://npmjs.org/package/typedarray-to-buffer
-[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg
-[standard-url]: https://standardjs.com
-
-#### Convert a typed array to a [Buffer](https://github.com/feross/buffer) without a copy.
-
-[![saucelabs][saucelabs-image]][saucelabs-url]
-
-[saucelabs-image]: https://saucelabs.com/browser-matrix/typedarray-to-buffer.svg
-[saucelabs-url]: https://saucelabs.com/u/typedarray-to-buffer
-
-Say you're using the ['buffer'](https://github.com/feross/buffer) module on npm, or
-[browserify](http://browserify.org/) and you're working with lots of binary data.
-
-Unfortunately, sometimes the browser or someone else's API gives you a typed array like
-`Uint8Array` to work with and you need to convert it to a `Buffer`. What do you do?
-
-Of course: `Buffer.from(uint8array)`
-
-But, alas, every time you do `Buffer.from(uint8array)` **the entire array gets copied**.
-The `Buffer` constructor does a copy; this is
-defined by the [node docs](http://nodejs.org/api/buffer.html) and the 'buffer' module
-matches the node API exactly.
-
-So, how can we avoid this expensive copy in
-[performance critical applications](https://github.com/feross/buffer/issues/22)?
-
-***Simply use this module, of course!***
-
-If you have an `ArrayBuffer`, you don't need this module, because
-`Buffer.from(arrayBuffer)`
-[is already efficient](https://nodejs.org/api/buffer.html#buffer_class_method_buffer_from_arraybuffer_byteoffset_length).
-
-## install
-
-```bash
-npm install typedarray-to-buffer
-```
-
-## usage
-
-To convert a typed array to a `Buffer` **without a copy**, do this:
-
-```js
-var toBuffer = require('typedarray-to-buffer')
-
-var arr = new Uint8Array([1, 2, 3])
-arr = toBuffer(arr)
-
-// arr is a buffer now!
-
-arr.toString() // '\u0001\u0002\u0003'
-arr.readUInt16BE(0) // 258
-```
-
-## how it works
-
-If the browser supports typed arrays, then `toBuffer` will **augment the typed array** you
-pass in with the `Buffer` methods and return it. See [how does Buffer
-work?](https://github.com/feross/buffer#how-does-it-work) for more about how augmentation
-works.
-
-This module uses the typed array's underlying `ArrayBuffer` to back the new `Buffer`. This
-respects the "view" on the `ArrayBuffer`, i.e. `byteOffset` and `byteLength`. In other
-words, if you do `toBuffer(new Uint32Array([1, 2, 3]))`, then the new `Buffer` will
-contain `[1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0]`, **not** `[1, 2, 3]`. And it still doesn't
-require a copy.
-
-If the browser doesn't support typed arrays, then `toBuffer` will create a new `Buffer`
-object, copy the data into it, and return it. There's no simple performance optimization
-we can do for old browsers. Oh well.
-
-If this module is used in node, then it will just call `Buffer.from`. This is just for
-the convenience of modules that work in both node and the browser.
-
-## license
-
-MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org).
diff --git a/assets/node_modules/typedarray-to-buffer/index.js b/assets/node_modules/typedarray-to-buffer/index.js
deleted file mode 100644
index 5fa394d..0000000
--- a/assets/node_modules/typedarray-to-buffer/index.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Convert a typed array to a Buffer without a copy
- *
- * Author: Feross Aboukhadijeh <https://feross.org>
- * License: MIT
- *
- * `npm install typedarray-to-buffer`
- */
-
-var isTypedArray = require('is-typedarray').strict
-
-module.exports = function typedarrayToBuffer (arr) {
- if (isTypedArray(arr)) {
- // To avoid a copy, use the typed array's underlying ArrayBuffer to back new Buffer
- var buf = Buffer.from(arr.buffer)
- if (arr.byteLength !== arr.buffer.byteLength) {
- // Respect the "view", i.e. byteOffset and byteLength, without doing a copy
- buf = buf.slice(arr.byteOffset, arr.byteOffset + arr.byteLength)
- }
- return buf
- } else {
- // Pass through all other types to `Buffer.from`
- return Buffer.from(arr)
- }
-}
diff --git a/assets/node_modules/typedarray-to-buffer/package.json b/assets/node_modules/typedarray-to-buffer/package.json
deleted file mode 100644
index 5ec5656..0000000
--- a/assets/node_modules/typedarray-to-buffer/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "name": "typedarray-to-buffer",
- "description": "Convert a typed array to a Buffer without a copy",
- "version": "3.1.5",
- "author": {
- "name": "Feross Aboukhadijeh",
- "email": "feross@feross.org",
- "url": "http://feross.org/"
- },
- "bugs": {
- "url": "https://github.com/feross/typedarray-to-buffer/issues"
- },
- "dependencies": {
- "is-typedarray": "^1.0.0"
- },
- "devDependencies": {
- "airtap": "0.0.4",
- "standard": "*",
- "tape": "^4.0.0"
- },
- "homepage": "http://feross.org",
- "keywords": [
- "buffer",
- "typed array",
- "convert",
- "no copy",
- "uint8array",
- "uint16array",
- "uint32array",
- "int16array",
- "int32array",
- "float32array",
- "float64array",
- "browser",
- "arraybuffer",
- "dataview"
- ],
- "license": "MIT",
- "main": "index.js",
- "repository": {
- "type": "git",
- "url": "git://github.com/feross/typedarray-to-buffer.git"
- },
- "scripts": {
- "test": "standard && npm run test-node && npm run test-browser",
- "test-browser": "airtap -- test/*.js",
- "test-browser-local": "airtap --local -- test/*.js",
- "test-node": "tape test/*.js"
- }
-}
diff --git a/assets/node_modules/typedarray-to-buffer/test/basic.js b/assets/node_modules/typedarray-to-buffer/test/basic.js
deleted file mode 100644
index 3521096..0000000
--- a/assets/node_modules/typedarray-to-buffer/test/basic.js
+++ /dev/null
@@ -1,50 +0,0 @@
-var test = require('tape')
-var toBuffer = require('../')
-
-test('convert to buffer from Uint8Array', function (t) {
- if (typeof Uint8Array !== 'undefined') {
- var arr = new Uint8Array([1, 2, 3])
- arr = toBuffer(arr)
-
- t.deepEqual(arr, Buffer.from([1, 2, 3]), 'contents equal')
- t.ok(Buffer.isBuffer(arr), 'is buffer')
- t.equal(arr.readUInt8(0), 1)
- t.equal(arr.readUInt8(1), 2)
- t.equal(arr.readUInt8(2), 3)
- } else {
- t.pass('browser lacks Uint8Array support, skip test')
- }
- t.end()
-})
-
-test('convert to buffer from another arrayview type (Uint32Array)', function (t) {
- if (typeof Uint32Array !== 'undefined' && Buffer.TYPED_ARRAY_SUPPORT !== false) {
- var arr = new Uint32Array([1, 2, 3])
- arr = toBuffer(arr)
-
- t.deepEqual(arr, Buffer.from([1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0]), 'contents equal')
- t.ok(Buffer.isBuffer(arr), 'is buffer')
- t.equal(arr.readUInt32LE(0), 1)
- t.equal(arr.readUInt32LE(4), 2)
- t.equal(arr.readUInt32LE(8), 3)
- t.equal(arr instanceof Uint8Array, true)
- } else {
- t.pass('browser lacks Uint32Array support, skip test')
- }
- t.end()
-})
-
-test('convert to buffer from ArrayBuffer', function (t) {
- if (typeof Uint32Array !== 'undefined' && Buffer.TYPED_ARRAY_SUPPORT !== false) {
- var arr = new Uint32Array([1, 2, 3]).subarray(1, 2)
- arr = toBuffer(arr)
-
- t.deepEqual(arr, Buffer.from([2, 0, 0, 0]), 'contents equal')
- t.ok(Buffer.isBuffer(arr), 'is buffer')
- t.equal(arr.readUInt32LE(0), 2)
- t.equal(arr instanceof Uint8Array, true)
- } else {
- t.pass('browser lacks ArrayBuffer support, skip test')
- }
- t.end()
-})
diff --git a/assets/node_modules/unherit/index.js b/assets/node_modules/unherit/index.js
deleted file mode 100644
index 32ead77..0000000
--- a/assets/node_modules/unherit/index.js
+++ /dev/null
@@ -1,45 +0,0 @@
-'use strict'
-
-var xtend = require('xtend')
-var inherits = require('inherits')
-
-module.exports = unherit
-
-// Create a custom constructor which can be modified without affecting the
-// original class.
-function unherit(Super) {
- var result
- var key
- var value
-
- inherits(Of, Super)
- inherits(From, Of)
-
- // Clone values.
- result = Of.prototype
-
- for (key in result) {
- value = result[key]
-
- if (value && typeof value === 'object') {
- result[key] = 'concat' in value ? value.concat() : xtend(value)
- }
- }
-
- return Of
-
- // Constructor accepting a single argument, which itself is an `arguments`
- // object.
- function From(parameters) {
- return Super.apply(this, parameters)
- }
-
- // Constructor accepting variadic arguments.
- function Of() {
- if (!(this instanceof Of)) {
- return new From(arguments)
- }
-
- return Super.apply(this, arguments)
- }
-}
diff --git a/assets/node_modules/unherit/license b/assets/node_modules/unherit/license
deleted file mode 100644
index f3722d9..0000000
--- a/assets/node_modules/unherit/license
+++ /dev/null
@@ -1,21 +0,0 @@
-(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/assets/node_modules/unherit/package.json b/assets/node_modules/unherit/package.json
deleted file mode 100644
index 445a500..0000000
--- a/assets/node_modules/unherit/package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "name": "unherit",
- "version": "1.1.3",
- "description": "Clone a constructor without affecting the super-class",
- "license": "MIT",
- "keywords": [
- "clone",
- "super",
- "class",
- "constructor"
- ],
- "repository": "wooorm/unherit",
- "bugs": "https://github.com/wooorm/unherit/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": {
- "inherits": "^2.0.0",
- "xtend": "^4.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 unherit -o unherit.js",
- "build-mangle": "browserify . -s unherit -p tinyify -o unherit.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": {
- "unicorn/prefer-reflect-apply": "off",
- "guard-for-in": "off"
- },
- "ignores": [
- "unherit.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/unherit/readme.md b/assets/node_modules/unherit/readme.md
deleted file mode 100644
index bf67959..0000000
--- a/assets/node_modules/unherit/readme.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# unherit
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-Create a custom constructor which can be modified without affecting the original
-class.
-
-## Install
-
-[npm][]:
-
-```sh
-npm install unherit
-```
-
-## Use
-
-```js
-var EventEmitter = require('events').EventEmitter
-var unherit = require('unherit')
-
-// Create a private class which acts just like `EventEmitter`.
-var Emitter = unherit(EventEmitter)
-
-Emitter.prototype.defaultMaxListeners = 0
-// Now, all instances of `Emitter` have no maximum listeners, without affecting
-// other `EventEmitter`s.
-
-new Emitter().defaultMaxListeners === 0 // => true
-new EventEmitter().defaultMaxListeners === undefined // => true
-new Emitter() instanceof EventEmitter // => true
-```
-
-## API
-
-### `unherit(Super)`
-
-Create a custom constructor which can be modified without affecting the original
-class.
-
-###### Parameters
-
-* `Super` (`Function`) — Super-class
-
-###### Returns
-
-`Function` — Constructor acting like `Super`, which can be modified without
-affecting the original class.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/wooorm/unherit.svg
-
-[build]: https://travis-ci.org/wooorm/unherit
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/unherit.svg
-
-[coverage]: https://codecov.io/github/wooorm/unherit
-
-[downloads-badge]: https://img.shields.io/npm/dm/unherit.svg
-
-[downloads]: https://www.npmjs.com/package/unherit
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/unherit.svg
-
-[size]: https://bundlephobia.com/result?p=unherit
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
diff --git a/assets/node_modules/unified/changelog.md b/assets/node_modules/unified/changelog.md
deleted file mode 100644
index b50c832..0000000
--- a/assets/node_modules/unified/changelog.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Changelog
-
-See [GitHub Releases][releases] for the changelog.
-
-[releases]: https://github.com/unifiedjs/unified/releases
diff --git a/assets/node_modules/unified/index.js b/assets/node_modules/unified/index.js
deleted file mode 100644
index ec73f22..0000000
--- a/assets/node_modules/unified/index.js
+++ /dev/null
@@ -1,455 +0,0 @@
-'use strict'
-
-var extend = require('extend')
-var bail = require('bail')
-var vfile = require('vfile')
-var trough = require('trough')
-var string = require('x-is-string')
-var plain = require('is-plain-obj')
-
-// Expose a frozen processor.
-module.exports = unified().freeze()
-
-var slice = [].slice
-var own = {}.hasOwnProperty
-
-// Process pipeline.
-var pipeline = trough()
- .use(pipelineParse)
- .use(pipelineRun)
- .use(pipelineStringify)
-
-function pipelineParse(p, ctx) {
- ctx.tree = p.parse(ctx.file)
-}
-
-function pipelineRun(p, ctx, next) {
- p.run(ctx.tree, ctx.file, done)
-
- function done(err, tree, file) {
- if (err) {
- next(err)
- } else {
- ctx.tree = tree
- ctx.file = file
- next()
- }
- }
-}
-
-function pipelineStringify(p, ctx) {
- ctx.file.contents = p.stringify(ctx.tree, ctx.file)
-}
-
-// Function to create the first processor.
-function unified() {
- var attachers = []
- var transformers = trough()
- var namespace = {}
- var frozen = false
- var freezeIndex = -1
-
- // Data management.
- processor.data = data
-
- // Lock.
- processor.freeze = freeze
-
- // Plugins.
- processor.attachers = attachers
- processor.use = use
-
- // API.
- processor.parse = parse
- processor.stringify = stringify
- processor.run = run
- processor.runSync = runSync
- processor.process = process
- processor.processSync = processSync
-
- // Expose.
- return processor
-
- // Create a new processor based on the processor in the current scope.
- function processor() {
- var destination = unified()
- var length = attachers.length
- var index = -1
-
- while (++index < length) {
- destination.use.apply(null, attachers[index])
- }
-
- destination.data(extend(true, {}, namespace))
-
- return destination
- }
-
- // Freeze: used to signal a processor that has finished configuration.
- //
- // For example, take unified itself. It’s frozen. Plugins should not be
- // added to it. Rather, it should be extended, by invoking it, before
- // modifying it.
- //
- // In essence, always invoke this when exporting a processor.
- function freeze() {
- var values
- var plugin
- var options
- var transformer
-
- if (frozen) {
- return processor
- }
-
- while (++freezeIndex < attachers.length) {
- values = attachers[freezeIndex]
- plugin = values[0]
- options = values[1]
- transformer = null
-
- if (options === false) {
- continue
- }
-
- if (options === true) {
- values[1] = undefined
- }
-
- transformer = plugin.apply(processor, values.slice(1))
-
- if (typeof transformer === 'function') {
- transformers.use(transformer)
- }
- }
-
- frozen = true
- freezeIndex = Infinity
-
- return processor
- }
-
- // Data management. Getter / setter for processor-specific informtion.
- function data(key, value) {
- if (string(key)) {
- // Set `key`.
- if (arguments.length === 2) {
- assertUnfrozen('data', frozen)
-
- namespace[key] = value
-
- return processor
- }
-
- // Get `key`.
- return (own.call(namespace, key) && namespace[key]) || null
- }
-
- // Set space.
- if (key) {
- assertUnfrozen('data', frozen)
- namespace = key
- return processor
- }
-
- // Get space.
- return namespace
- }
-
- // Plugin management.
- //
- // Pass it:
- // * an attacher and options,
- // * a preset,
- // * a list of presets, attachers, and arguments (list of attachers and
- // options).
- function use(value) {
- var settings
-
- assertUnfrozen('use', frozen)
-
- if (value === null || value === undefined) {
- // Empty.
- } else if (typeof value === 'function') {
- addPlugin.apply(null, arguments)
- } else if (typeof value === 'object') {
- if ('length' in value) {
- addList(value)
- } else {
- addPreset(value)
- }
- } else {
- throw new Error('Expected usable value, not `' + value + '`')
- }
-
- if (settings) {
- namespace.settings = extend(namespace.settings || {}, settings)
- }
-
- return processor
-
- function addPreset(result) {
- addList(result.plugins)
-
- if (result.settings) {
- settings = extend(settings || {}, result.settings)
- }
- }
-
- function add(value) {
- if (typeof value === 'function') {
- addPlugin(value)
- } else if (typeof value === 'object') {
- if ('length' in value) {
- addPlugin.apply(null, value)
- } else {
- addPreset(value)
- }
- } else {
- throw new Error('Expected usable value, not `' + value + '`')
- }
- }
-
- function addList(plugins) {
- var length
- var index
-
- if (plugins === null || plugins === undefined) {
- // Empty.
- } else if (typeof plugins === 'object' && 'length' in plugins) {
- length = plugins.length
- index = -1
-
- while (++index < length) {
- add(plugins[index])
- }
- } else {
- throw new Error('Expected a list of plugins, not `' + plugins + '`')
- }
- }
-
- function addPlugin(plugin, value) {
- var entry = find(plugin)
-
- if (entry) {
- if (plain(entry[1]) && plain(value)) {
- value = extend(entry[1], value)
- }
-
- entry[1] = value
- } else {
- attachers.push(slice.call(arguments))
- }
- }
- }
-
- function find(plugin) {
- var length = attachers.length
- var index = -1
- var entry
-
- while (++index < length) {
- entry = attachers[index]
-
- if (entry[0] === plugin) {
- return entry
- }
- }
- }
-
- // Parse a file (in string or vfile representation) into a unist node using
- // the `Parser` on the processor.
- function parse(doc) {
- var file = vfile(doc)
- var Parser
-
- freeze()
- Parser = processor.Parser
- assertParser('parse', Parser)
-
- if (newable(Parser)) {
- return new Parser(String(file), file).parse()
- }
-
- return Parser(String(file), file) // eslint-disable-line new-cap
- }
-
- // Run transforms on a unist node representation of a file (in string or
- // vfile representation), async.
- function run(node, file, cb) {
- assertNode(node)
- freeze()
-
- if (!cb && typeof file === 'function') {
- cb = file
- file = null
- }
-
- if (!cb) {
- return new Promise(executor)
- }
-
- executor(null, cb)
-
- function executor(resolve, reject) {
- transformers.run(node, vfile(file), done)
-
- function done(err, tree, file) {
- tree = tree || node
- if (err) {
- reject(err)
- } else if (resolve) {
- resolve(tree)
- } else {
- cb(null, tree, file)
- }
- }
- }
- }
-
- // Run transforms on a unist node representation of a file (in string or
- // vfile representation), sync.
- function runSync(node, file) {
- var complete = false
- var result
-
- run(node, file, done)
-
- assertDone('runSync', 'run', complete)
-
- return result
-
- function done(err, tree) {
- complete = true
- bail(err)
- result = tree
- }
- }
-
- // Stringify a unist node representation of a file (in string or vfile
- // representation) into a string using the `Compiler` on the processor.
- function stringify(node, doc) {
- var file = vfile(doc)
- var Compiler
-
- freeze()
- Compiler = processor.Compiler
- assertCompiler('stringify', Compiler)
- assertNode(node)
-
- if (newable(Compiler)) {
- return new Compiler(node, file).compile()
- }
-
- return Compiler(node, file) // eslint-disable-line new-cap
- }
-
- // Parse a file (in string or vfile representation) into a unist node using
- // the `Parser` on the processor, then run transforms on that node, and
- // compile the resulting node using the `Compiler` on the processor, and
- // store that result on the vfile.
- function process(doc, cb) {
- freeze()
- assertParser('process', processor.Parser)
- assertCompiler('process', processor.Compiler)
-
- if (!cb) {
- return new Promise(executor)
- }
-
- executor(null, cb)
-
- function executor(resolve, reject) {
- var file = vfile(doc)
-
- pipeline.run(processor, {file: file}, done)
-
- function done(err) {
- if (err) {
- reject(err)
- } else if (resolve) {
- resolve(file)
- } else {
- cb(null, file)
- }
- }
- }
- }
-
- // Process the given document (in string or vfile representation), sync.
- function processSync(doc) {
- var complete = false
- var file
-
- freeze()
- assertParser('processSync', processor.Parser)
- assertCompiler('processSync', processor.Compiler)
- file = vfile(doc)
-
- process(file, done)
-
- assertDone('processSync', 'process', complete)
-
- return file
-
- function done(err) {
- complete = true
- bail(err)
- }
- }
-}
-
-// Check if `func` is a constructor.
-function newable(value) {
- return typeof value === 'function' && keys(value.prototype)
-}
-
-// Check if `value` is an object with keys.
-function keys(value) {
- var key
- for (key in value) {
- return true
- }
- return false
-}
-
-// Assert a parser is available.
-function assertParser(name, Parser) {
- if (typeof Parser !== 'function') {
- throw new Error('Cannot `' + name + '` without `Parser`')
- }
-}
-
-// Assert a compiler is available.
-function assertCompiler(name, Compiler) {
- if (typeof Compiler !== 'function') {
- throw new Error('Cannot `' + name + '` without `Compiler`')
- }
-}
-
-// Assert the processor is not frozen.
-function assertUnfrozen(name, frozen) {
- if (frozen) {
- throw new Error(
- 'Cannot invoke `' +
- name +
- '` on a frozen processor.\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.'
- )
- }
-}
-
-// Assert `node` is a unist node.
-function assertNode(node) {
- if (!node || !string(node.type)) {
- throw new Error('Expected node, got `' + node + '`')
- }
-}
-
-// Assert that `complete` is `true`.
-function assertDone(name, asyncName, complete) {
- if (!complete) {
- throw new Error(
- '`' + name + '` finished async. Use `' + asyncName + '` instead'
- )
- }
-}
diff --git a/assets/node_modules/unified/license b/assets/node_modules/unified/license
deleted file mode 100644
index f3722d9..0000000
--- a/assets/node_modules/unified/license
+++ /dev/null
@@ -1,21 +0,0 @@
-(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/assets/node_modules/unified/package.json b/assets/node_modules/unified/package.json
deleted file mode 100644
index dff0614..0000000
--- a/assets/node_modules/unified/package.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "name": "unified",
- "version": "7.1.0",
- "description": "Pluggable text processing interface",
- "license": "MIT",
- "keywords": [
- "process",
- "parse",
- "transform",
- "compile",
- "stringify",
- "rehype",
- "retext",
- "remark"
- ],
- "homepage": "https://unified.js.org",
- "repository": "unifiedjs/unified",
- "bugs": "https://github.com/unifiedjs/unified/issues",
- "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",
- "lib"
- ],
- "dependencies": {
- "@types/unist": "^2.0.0",
- "@types/vfile": "^3.0.0",
- "bail": "^1.0.0",
- "extend": "^3.0.0",
- "is-plain-obj": "^1.1.0",
- "trough": "^1.0.0",
- "vfile": "^3.0.0",
- "x-is-string": "^0.1.0"
- },
- "devDependencies": {
- "browserify": "^16.0.0",
- "dtslint": "^0.4.1",
- "esmangle": "^1.0.0",
- "nyc": "^13.0.0",
- "prettier": "^1.12.1",
- "remark-cli": "^6.0.0",
- "remark-preset-wooorm": "^4.0.0",
- "tape": "^4.4.0",
- "typescript": "^3.2.2",
- "xo": "^0.23.0"
- },
- "scripts": {
- "format": "remark . -qfo && prettier --write '**/{*.js,*.ts}' && xo --fix",
- "build-bundle": "browserify index.js -s unified > unified.js",
- "build-mangle": "esmangle unified.js > unified.min.js",
- "build": "npm run build-bundle && npm run build-mangle",
- "test-api": "node test",
- "test-coverage": "nyc --reporter lcov tape test",
- "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": {
- "guard-for-in": "off",
- "no-var": "off",
- "object-shorthand": "off",
- "prefer-arrow-callback": "off",
- "unicorn/prefer-type-error": "off"
- },
- "ignores": [
- "unified.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "collective": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
-}
diff --git a/assets/node_modules/unified/readme.md b/assets/node_modules/unified/readme.md
deleted file mode 100644
index 1568ff6..0000000
--- a/assets/node_modules/unified/readme.md
+++ /dev/null
@@ -1,1205 +0,0 @@
-# [![unified][logo]](https://unified.js.org/)
-
-[![Travis][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-[![Chat][chat-badge]][chat]
-
-**unified** is an interface for processing text using syntax trees. It’s what
-powers [**remark**][remark], [**retext**][retext], and [**rehype**][rehype],
-but it also allows for processing between multiple syntaxes.
-
-**unified** enabled new exciting projects like [Gatsby][] to pull in markdown,
-[MDX][] to embed [JSX][], and [Prettier][] to format it.
-It’s used to check code for [Storybook][], [debugger.html][] ([Mozilla][]),
-and [opensource.guide][] ([GitHub][]).
-
-* To read about what we’re up to, follow us on [Medium][] and [Twitter][]
-* For a less technical and more practical introduction to unified, visit
- [`unified.js.org`][site] and try its introductory [Guides][]
-* To help us out, see [`contributing.md`][contributing], or become a backer
- or sponsor on [Open Collective][collective]
-
-* * *
-
-<!--lint ignore no-html-->
-
-**Announcing the unified collective! 🎉
-[Read more about it on Medium »][medium]**
-
-## Sponsors
-
-<!--lint ignore no-html maximum-line-length-->
-
-<table>
- <tr valign="top">
- <td width="20%" align="center">
- <a href="https://zeit.co"><img src="https://avatars1.githubusercontent.com/u/14985020?s=400&v=4"></a>
- <br><br>🥇
- <a href="https://zeit.co">ZEIT</a>
- </td>
- <td width="20%" align="center">
- <a href="https://www.gatsbyjs.org"><img src="https://avatars1.githubusercontent.com/u/12551863?s=400&v=4"></a>
- <br><br>🥇
- <a href="https://www.gatsbyjs.org">Gatsby</a></td>
- <td width="20%" align="center">
- <a href="https://compositor.io"><img src="https://avatars1.githubusercontent.com/u/19245838?s=400&v=4"></a>
- <br><br>🥉
- <a href="https://compositor.io">Compositor</a>
- </td>
- <td width="20%" align="center">
- <a href="https://www.holloway.com"><img src="https://avatars1.githubusercontent.com/u/35904294?s=400&v=4"></a>
- <br><br>
- <a href="https://www.holloway.com">Holloway</a>
- </td>
- <td width="20%" align="center">
- <br><br><br><br>
- <a href="https://opencollective.com/unified"><strong>You?</strong>
- </td>
- </tr>
-</table>
-
-## Installation
-
-[npm][]:
-
-```bash
-npm install unified
-```
-
-## Usage
-
-```js
-var unified = require('unified')
-var markdown = require('remark-parse')
-var remark2rehype = require('remark-rehype')
-var doc = require('rehype-document')
-var format = require('rehype-format')
-var html = require('rehype-stringify')
-var report = require('vfile-reporter')
-
-unified()
- .use(markdown)
- .use(remark2rehype)
- .use(doc)
- .use(format)
- .use(html)
- .process('# Hello world!', function(err, file) {
- console.error(report(err || file))
- console.log(String(file))
- })
-```
-
-Yields:
-
-```html
-no issues found
-<!doctype html>
-<html lang="en">
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- </head>
- <body>
- <h1>Hello world!</h1>
- </body>
-</html>
-```
-
-## Table of Contents
-
-* [Description](#description)
-* [API](#api)
- * [processor()](#processor)
- * [processor.use(plugin\[, options\])](#processoruseplugin-options)
- * [processor.parse(file|value)](#processorparsefilevalue)
- * [processor.stringify(node\[, file\])](#processorstringifynode-file)
- * [processor.run(node\[, file\]\[, done\])](#processorrunnode-file-done)
- * [processor.runSync(node\[, file\])](#processorrunsyncnode-file)
- * [processor.process(file|value\[, done\])](#processorprocessfilevalue-done)
- * [processor.processSync(file|value)](#processorprocesssyncfilevalue)
- * [processor.data(\[key\[, value\]\])](#processordatakey-value)
- * [processor.freeze()](#processorfreeze)
-* [Plugin](#plugin)
- * [function attacher(\[options\])](#function-attacheroptions)
- * [function transformer(node, file\[, next\])](#function-transformernode-file-next)
-* [Preset](#preset)
-* [Contribute](#contribute)
-* [Acknowledgments](#acknowledgments)
-* [License](#license)
-
-## Description
-
-**unified** is an interface for processing text using syntax trees. Syntax
-trees are a representation understandable to programs. Those programs, called
-[**plugin**][plugin]s, take these trees and modify them, amongst other things.
-To get to the syntax tree from input text there’s a [**parser**][parser]. To
-get from that back to text there’s a [**compiler**][compiler]. This is the
-[**process**][process] of a **processor**.
-
-```ascii
-| ....................... process() ......................... |
-| ......... parse() ..... | run() | ..... stringify() ....... |
-
- +--------+ +----------+
-Input ->- | Parser | ->- Syntax Tree ->- | Compiler | ->- Output
- +--------+ | +----------+
- X
- |
- +--------------+
- | Transformers |
- +--------------+
-```
-
-###### Processors
-
-Every processor implements another processor. To create a new processor invoke
-another processor. This creates a processor that is configured to function the
-same as its ancestor. But when the descendant processor is configured in the
-future it does not affect the ancestral processor.
-
-When processors are exposed from a module (for example, unified itself) they
-should not be configured directly, as that would change their behaviour for all
-module users. Those processors are [**frozen**][freeze] and they should be
-invoked to create a new processor before they are used.
-
-###### Node
-
-The syntax trees used in **unified** are [**Unist**][unist] nodes: plain
-JavaScript objects with a `type` property. The semantics of those `type`s are
-defined by other projects.
-
-There are several [utilities][unist-utilities] for working with these nodes.
-
-###### List of Processors
-
-The following projects process different syntax trees. They parse text to
-their respective syntax tree and they compile their syntax trees back to text.
-These processors can be used as-is, or their parsers and compilers can be mixed
-and matched with **unified** and other plugins to process between different
-syntaxes.
-
-* [**rehype**][rehype] ([**hast**][hast]) — HTML
-* [**remark**][remark] ([**mdast**][mdast]) — Markdown
-* [**retext**][retext] ([**nlcst**][nlcst]) — Natural language
-
-###### List of Plugins
-
-The below plugins work with **unified**, unrelated to what flavour the syntax
-tree is in:
-
-* [`unified-diff`](https://github.com/unifiedjs/unified-diff)
- — Ignore messages for unchanged lines in Travis
-
-See [**remark**][remark-plugins], [**rehype**][rehype-plugins], and
-[**retext**][retext-plugins] for lists of their plugins.
-
-###### File
-
-When processing documents metadata is often gathered about that document.
-[**VFile**][vfile] is a virtual file format which stores data and handles
-metadata and messages for **unified** and its plugins.
-
-There are several [utilities][vfile-utilities] for working with these files.
-
-###### Configuration
-
-To configure a processor invoke its [`use`][use] method, supply it a
-[**plugin**][plugin], and optionally settings.
-
-###### Integrations
-
-**unified** can integrate with the file-system through
-[`unified-engine`][engine]. On top of that, CLI apps can be created with
-[`unified-args`][args], Gulp plugins with [`unified-engine-gulp`][gulp], and
-Atom Linters with [`unified-engine-atom`][atom].
-
-A streaming interface is provided through [`unified-stream`][stream].
-
-###### Programming interface
-
-The API gives access to processing metadata (such as lint messages) and
-supports multiple passed through files:
-
-```js
-var unified = require('unified')
-var markdown = require('remark-parse')
-var styleGuide = require('remark-preset-lint-markdown-style-guide')
-var remark2retext = require('remark-retext')
-var english = require('retext-english')
-var equality = require('retext-equality')
-var remark2rehype = require('remark-rehype')
-var html = require('rehype-stringify')
-var report = require('vfile-reporter')
-
-unified()
- .use(markdown)
- .use(styleGuide)
- .use(
- remark2retext,
- unified()
- .use(english)
- .use(equality)
- )
- .use(remark2rehype)
- .use(html)
- .process('*Emphasis* and _importance_, you guys!', function(err, file) {
- console.error(report(err || file))
- console.log(String(file))
- })
-```
-
-Yields:
-
-```txt
- 1:16-1:28 warning Emphasis should use `*` as a marker emphasis-marker remark-lint
- 1:34-1:38 warning `guys` may be insensitive, use `people`, `persons`, `folks` instead gals-men retext-equality
-
-⚠ 2 warnings
-<p><em>Emphasis</em> and <em>importance</em>, you guys!</p>
-```
-
-###### Processing between syntaxes
-
-The processors can be combined in two modes.
-
-**Bridge** mode transforms the syntax tree from one flavour (the origin) to
-another (the destination). Then, transformations are applied on that tree.
-Finally, the origin processor continues transforming the original syntax tree.
-
-**Mutate** mode also transforms the syntax tree from one flavour to another.
-But then the origin processor continues transforming the destination syntax
-tree.
-
-In the previous example (“Programming interface”), `remark-retext` is used in
-bridge mode: the origin syntax tree is kept after retext is done; whereas
-`remark-rehype` is used in mutate mode: it sets a new syntax tree and discards
-the original.
-
-* [`remark-retext`][remark-retext]
-* [`remark-rehype`][remark-rehype]
-* [`rehype-retext`][rehype-retext]
-* [`rehype-remark`][rehype-remark]
-
-## API
-
-### `processor()`
-
-Object describing how to process text.
-
-###### Returns
-
-`Function` — New [**unfrozen**][freeze] processor which is configured to
-function the same as its ancestor. But when the descendant processor is
-configured in the future it does not affect the ancestral processor.
-
-###### Example
-
-The following example shows how a new processor can be created (from the remark
-processor) and linked to **stdin**(4) and **stdout**(4).
-
-```js
-var remark = require('remark')
-var concat = require('concat-stream')
-
-process.stdin.pipe(concat(onconcat))
-
-function onconcat(buf) {
- var doc = remark()
- .processSync(buf)
- .toString()
-
- process.stdout.write(doc)
-}
-```
-
-### `processor.use(plugin[, options])`
-
-Configure the processor to use a [**plugin**][plugin] and optionally configure
-that plugin with options.
-
-###### Signatures
-
-* `processor.use(plugin[, options])`
-* `processor.use(preset)`
-* `processor.use(list)`
-
-###### Parameters
-
-* `plugin` ([`Plugin`][plugin])
-* `options` (`*`, optional) — Configuration for `plugin`
-* `preset` (`Object`) — Object with an optional `plugins` (set to `list`),
- and/or an optional `settings` object
-* `list` (`Array`) — List of plugins, presets, and pairs (`plugin` and
- `options` in an array)
-
-###### Returns
-
-`processor` — The processor on which `use` is invoked.
-
-###### Note
-
-`use` cannot be called on [frozen][freeze] processors. Invoke the processor
-first to create a new unfrozen processor.
-
-###### Example
-
-There are many ways to pass plugins to `.use()`. The below example gives an
-overview.
-
-```js
-var unified = require('unified')
-
-unified()
- // Plugin with options:
- .use(plugin, {})
- // Plugins:
- .use([plugin, pluginB])
- // Two plugins, the second with options:
- .use([plugin, [pluginB, {}]])
- // Preset with plugins and settings:
- .use({plugins: [plugin, [pluginB, {}]], settings: {position: false}})
- // Settings only:
- .use({settings: {position: false}})
-
-function plugin() {}
-function pluginB() {}
-```
-
-### `processor.parse(file|value)`
-
-Parse text to a syntax tree.
-
-###### Parameters
-
-* `file` ([`VFile`][file])
- — Or anything which can be given to `vfile()`
-
-###### Returns
-
-[`Node`][node] — Syntax tree representation of input.
-
-###### Note
-
-`parse` [freezes][freeze] the processor if not already frozen.
-
-`parse` does not apply [transformers from the run phase][description] to the
-[syntax tree][node].
-
-###### Example
-
-The below example shows how the `parse` function can be used to create a
-[syntax tree][node] from a [file][].
-
-```js
-var unified = require('unified')
-var markdown = require('remark-parse')
-
-var tree = unified()
- .use(markdown)
- .parse('# Hello world!')
-
-console.log(tree)
-```
-
-Yields:
-
-```js
-{ type: 'root',
- children:
- [ { type: 'heading',
- depth: 1,
- children: [Array],
- position: [Position] } ],
- position:
- { start: { line: 1, column: 1, offset: 0 },
- end: { line: 1, column: 15, offset: 14 } } }
-```
-
-#### `processor.Parser`
-
-Function handling the parsing of text to a syntax tree. Used in the
-[**parse**][parse] phase in the process and invoked with a `string` and
-[`VFile`][file] representation of the document to parse.
-
-`Parser` can be a normal function in which case it must return a
-[`Node`][node]: the syntax tree representation of the given file.
-
-`Parser` can also be a constructor function (a function with keys in its
-`prototype`) in which case it’s invoked with `new`. Instances must have a
-`parse` method which is invoked without arguments and must return a
-[`Node`][node].
-
-### `processor.stringify(node[, file])`
-
-Compile a syntax tree to text.
-
-###### Parameters
-
-* `node` ([`Node`][node])
-* `file` ([`VFile`][file], optional);
- — Or anything which can be given to `vfile()`
-
-###### Returns
-
-`string` — String representation of the syntax tree file.
-
-###### Note
-
-`stringify` [freezes][freeze] the processor if not already frozen.
-
-`stringify` does not apply [transformers from the run phase][description]
-to the [syntax tree][node].
-
-###### Example
-
-The below example shows how the `stringify` function can be used to generate a
-[file][] from a [syntax tree][node].
-
-```js
-var unified = require('unified')
-var html = require('rehype-stringify')
-var h = require('hastscript')
-
-var tree = h('h1', 'Hello world!')
-
-var doc = unified()
- .use(html)
- .stringify(tree)
-
-console.log(doc)
-```
-
-Yields:
-
-```html
-<h1>Hello world!</h1>
-```
-
-#### `processor.Compiler`
-
-Function handling the compilation of syntax tree to a text. Used in the
-[**stringify**][stringify] phase in the process and invoked with a
-[`Node`][node] and [`VFile`][file] representation of the document to stringify.
-
-`Compiler` can be a normal function in which case it must return a `string`:
-the text representation of the given syntax tree.
-
-`Compiler` can also be a constructor function (a function with keys in its
-`prototype`) in which case it’s invoked with `new`. Instances must have a
-`compile` method which is invoked without arguments and must return a `string`.
-
-### `processor.run(node[, file][, done])`
-
-Transform a syntax tree by applying [**plugin**][plugin]s to it.
-
-###### Parameters
-
-* `node` ([`Node`][node])
-* `file` ([`VFile`][file], optional)
- — Or anything which can be given to `vfile()`
-* `done` ([`Function`][run-done], optional)
-
-###### Returns
-
-[`Promise`][promise] if `done` is not given. Rejected with an error, or
-resolved with the resulting syntax tree.
-
-###### Note
-
-`run` [freezes][freeze] the processor if not already frozen.
-
-#### `function done(err[, node, file])`
-
-Invoked when transformation is complete. Either invoked with an error or a
-syntax tree and a file.
-
-###### Parameters
-
-* `err` (`Error`) — Fatal error
-* `node` ([`Node`][node])
-* `file` ([`VFile`][file])
-
-###### Example
-
-The below example shows how the `run` function can be used to transform a
-[syntax tree][node].
-
-```js
-var unified = require('unified')
-var references = require('remark-reference-links')
-var u = require('unist-builder')
-
-var tree = u('root', [
- u('paragraph', [
- u('link', {href: 'https://example.com'}, [u('text', 'Example Domain')])
- ])
-])
-
-unified()
- .use(references)
- .run(tree, function(err, tree) {
- if (err) throw err
- console.log(tree)
- })
-```
-
-Yields:
-
-```js
-{ type: 'root',
- children:
- [ { type: 'paragraph', children: [Array] },
- { type: 'definition',
- identifier: '1',
- title: undefined,
- url: undefined } ] }
-```
-
-### `processor.runSync(node[, file])`
-
-Transform a syntax tree by applying [**plugin**][plugin]s to it.
-
-If asynchronous [**plugin**][plugin]s are configured an error is thrown.
-
-###### Parameters
-
-* `node` ([`Node`][node])
-* `file` ([`VFile`][file], optional)
- — Or anything which can be given to `vfile()`
-
-###### Returns
-
-[`Node`][node] — The given syntax tree.
-
-###### Note
-
-`runSync` [freezes][freeze] the processor if not already frozen.
-
-### `processor.process(file|value[, done])`
-
-Process the given representation of a file as configured on the processor. The
-process invokes `parse`, `run`, and `stringify` internally.
-
-###### Parameters
-
-* `file` ([`VFile`][file])
-* `value` (`string`) — String representation of a file
-* `done` ([`Function`][process-done], optional)
-
-###### Returns
-
-[`Promise`][promise] if `done` is not given. Rejected with an error or
-resolved with the resulting file.
-
-###### Note
-
-`process` [freezes][freeze] the processor if not already frozen.
-
-###### Example
-
-The below example shows how the `process` function can be used to process a
-[file][] whether plugins are asynchronous or not with Promises.
-
-```js
-var unified = require('unified')
-var markdown = require('remark-parse')
-var remark2rehype = require('remark-rehype')
-var doc = require('rehype-document')
-var format = require('rehype-format')
-var html = require('rehype-stringify')
-
-unified()
- .use(markdown)
- .use(remark2rehype)
- .use(doc)
- .use(format)
- .use(html)
- .process('# Hello world!')
- .then(
- function(file) {
- console.log(String(file))
- },
- function(err) {
- console.error(String(err))
- }
- )
-```
-
-Yields:
-
-```html
-<!doctype html>
-<html lang="en">
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- </head>
- <body>
- <h1>Hello world!</h1>
- </body>
-</html>
-```
-
-#### `function done(err, file)`
-
-Invoked when the process is complete. Invoked with a fatal error, if any, and
-the [`VFile`][file].
-
-###### Parameters
-
-* `err` (`Error`, optional) — Fatal error
-* `file` ([`VFile`][file])
-
-###### Example
-
-The below example shows how the `process` function can be used to process a
-[file][] whether plugins are asynchronous or not with a callback.
-
-```js
-var unified = require('unified')
-var parse = require('remark-parse')
-var stringify = require('remark-stringify')
-var github = require('remark-github')
-var report = require('vfile-reporter')
-
-unified()
- .use(parse)
- .use(github)
- .use(stringify)
- .process('@mention', function(err, file) {
- console.error(report(err || file))
- console.log(String(file))
- })
-```
-
-Yields:
-
-```markdown
-no issues found
-[**@mention**](https://github.com/blog/821)
-```
-
-### `processor.processSync(file|value)`
-
-Process the given representation of a file as configured on the processor. The
-process invokes `parse`, `run`, and `stringify` internally.
-
-If asynchronous [**plugin**][plugin]s are configured an error is thrown.
-
-###### Parameters
-
-* `file` ([`VFile`][file])
-* `value` (`string`) — String representation of a file
-
-###### Returns
-
-[`VFile`][file] — Virtual file with modified [`contents`][vfile-contents].
-
-###### Note
-
-`processSync` [freezes][freeze] the processor if not already frozen.
-
-###### Example
-
-The below example shows how the `processSync` function can be used to process a
-[file][] if all plugins are known to be synchronous.
-
-```js
-var unified = require('unified')
-var markdown = require('remark-parse')
-var remark2rehype = require('remark-rehype')
-var doc = require('rehype-document')
-var format = require('rehype-format')
-var html = require('rehype-stringify')
-
-var processor = unified()
- .use(markdown)
- .use(remark2rehype)
- .use(doc)
- .use(format)
- .use(html)
-
-console.log(processor.processSync('# Hello world!').toString())
-```
-
-Yields:
-
-```html
-<!doctype html>
-<html lang="en">
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- </head>
- <body>
- <h1>Hello world!</h1>
- </body>
-</html>
-```
-
-### `processor.data([key[, value]])`
-
-Get or set information in an in-memory key-value store accessible to all phases
-of the process. An example is a list of HTML elements which are self-closing,
-which is needed when parsing, transforming, and compiling HTML.
-
-###### Parameters
-
-* `key` (`string`, optional) — Identifier
-* `value` (`*`, optional) — Value to set. Omit if getting `key`
-
-###### Returns
-
-* `processor` — If setting, the processor on which `data` is invoked
-* `*` — If getting, the value at `key`
-* `object` - Without arguments, the key-value store
-
-###### Note
-
-Setting information with `data` cannot occur on [frozen][freeze] processors.
-Invoke the processor first to create a new unfrozen processor.
-
-###### Example
-
-The following example show how to get and set information:
-
-```js
-var unified = require('unified')
-
-var processor = unified()
- .data('alpha', 'bravo')
- .data('alpha') // => 'bravo'
-
-processor.data() // {alpha: 'bravo'}
-```
-
-### `processor.freeze()`
-
-Freeze a processor. Frozen processors are meant to be extended and not to be
-configured or processed directly.
-
-Once a processor is frozen it cannot be unfrozen. New processors functioning
-just like it can be created by invoking the processor.
-
-It’s possible to freeze processors explicitly, by calling `.freeze()`, but
-[`.parse()`][parse], [`.run()`][run], [`.stringify()`][stringify], and
-[`.process()`][process] call `.freeze()` to freeze a processor too.
-
-###### Returns
-
-`Processor` — The processor on which `freeze` is invoked.
-
-###### Example
-
-The following example, `index.js`, shows how [**rehype**][rehype] prevents
-extensions to itself:
-
-```js
-var unified = require('unified')
-var parse = require('rehype-parse')
-var stringify = require('rehype-stringify')
-
-module.exports = unified()
- .use(parse)
- .use(stringify)
- .freeze()
-```
-
-The below example, `a.js`, shows how that processor can be used and configured.
-
-```js
-var rehype = require('rehype')
-var format = require('rehype-format')
-// ...
-
-rehype()
- .use(format)
- // ...
-```
-
-The below example, `b.js`, shows a similar looking example which operates on
-the frozen [**rehype**][rehype] interface. If this behaviour was allowed it
-would result in unexpected behaviour so an error is thrown. **This is
-invalid**:
-
-```js
-var rehype = require('rehype')
-var format = require('rehype-format')
-// ...
-
-rehype
- .use(format)
- // ...
-```
-
-Yields:
-
-```txt
-~/node_modules/unified/index.js:440
- throw new Error(
- ^
-
-Error: Cannot invoke `use` on a frozen processor.
-Create a new processor first, by invoking it: use `processor()` instead of `processor`.
- at assertUnfrozen (~/node_modules/unified/index.js:440:11)
- at Function.use (~/node_modules/unified/index.js:172:5)
- at Object.<anonymous> (~/b.js:6:4)
-```
-
-## `Plugin`
-
-**unified** plugins change the way the applied-on processor works in the
-following ways:
-
-* They modify the [**processor**][processor]: such as changing the parser,
- the compiler, or linking it to other processors
-* They transform [**syntax tree**][node] representation of files
-* They modify metadata of files
-
-Plugins are a concept. They materialise as [`attacher`][attacher]s.
-
-###### Example
-
-`move.js`:
-
-```js
-module.exports = move
-
-function move(options) {
- var expected = (options || {}).extname
-
- if (!expected) {
- throw new Error('Missing `extname` in options')
- }
-
- return transformer
-
- function transformer(tree, file) {
- if (file.extname && file.extname !== expected) {
- file.extname = expected
- }
- }
-}
-```
-
-`index.js`:
-
-```js
-var unified = require('unified')
-var parse = require('remark-parse')
-var remark2rehype = require('remark-rehype')
-var stringify = require('rehype-stringify')
-var vfile = require('to-vfile')
-var report = require('vfile-reporter')
-var move = require('./move')
-
-unified()
- .use(parse)
- .use(remark2rehype)
- .use(move, {extname: '.html'})
- .use(stringify)
- .process(vfile.readSync('index.md'), function(err, file) {
- console.error(report(err || file))
- if (file) {
- vfile.writeSync(file) // Written to `index.html`.
- }
- })
-```
-
-### `function attacher([options])`
-
-An attacher is the thing passed to [`use`][use]. It configures the processor
-and in turn can receive options.
-
-Attachers can configure processors, such as by interacting with parsers and
-compilers, linking them to other processors, or by specifying how the syntax
-tree is handled.
-
-###### Context
-
-The context object is set to the invoked on [`processor`][processor].
-
-###### Parameters
-
-* `options` (`*`, optional) — Configuration
-
-###### Returns
-
-[`transformer`][transformer] — Optional.
-
-###### Note
-
-Attachers are invoked when the processor is [frozen][freeze]: either when
-`.freeze()` is called explicitly, or when [`.parse()`][parse], [`.run()`][run],
-[`.stringify()`][stringify], or [`.process()`][process] is called for the first
-time.
-
-### `function transformer(node, file[, next])`
-
-Transformers modify the syntax tree or metadata of a file. A transformer is a
-function which is invoked each time a file is passed through the transform
-phase. If an error occurs (either because it’s thrown, returned, rejected, or
-passed to [`next`][next]), the process stops.
-
-The transformation process in **unified** is handled by [`trough`][trough], see
-it’s documentation for the exact semantics of transformers.
-
-###### Parameters
-
-* `node` ([`Node`][node])
-* `file` ([`VFile`][file])
-* `next` ([`Function`][next], optional)
-
-###### Returns
-
-* `Error` — Can be returned to stop the process
-* [`Node`][node] — Can be returned and results in further transformations
- and `stringify`s to be performed on the new tree
-* `Promise` — If a promise is returned, the function is asynchronous, and
- **must** be resolved (optionally with a [`Node`][node]) or rejected
- (optionally with an `Error`)
-
-#### `function next(err[, tree[, file]])`
-
-If the signature of a transformer includes `next` (third argument), the
-function **may** finish asynchronous, and **must** invoke `next()`.
-
-###### Parameters
-
-* `err` (`Error`, optional) — Stop the process
-* `node` ([`Node`][node], optional) — New syntax tree
-* `file` ([`VFile`][file], optional) — New virtual file
-
-## `Preset`
-
-Presets provide a potentially sharable way to configure processors. They can
-contain multiple plugins and optionally settings as well.
-
-###### Example
-
-`preset.js`:
-
-```js
-exports.settings = {bullet: '*', fences: true}
-
-exports.plugins = [
- require('remark-preset-lint-recommended'),
- require('remark-comment-config'),
- require('remark-preset-lint-markdown-style-guide'),
- [require('remark-toc'), {maxDepth: 3, tight: true}],
- require('remark-github')
-]
-```
-
-`index.js`:
-
-```js
-var remark = require('remark')
-var vfile = require('to-vfile')
-var report = require('vfile-reporter')
-var preset = require('./preset')
-
-remark()
- .use(preset)
- .process(vfile.readSync('index.md'), function(err, file) {
- console.error(report(err || file))
-
- if (file) {
- vfile.writeSync(file)
- }
- })
-```
-
-## Contribute
-
-**unified** is built by people just like you!
-Check out [`contributing.md`][contributing] for ways to get started.
-
-This project has a [Code of Conduct][coc].
-By interacting with this repository, organisation, or community you agree to
-abide by its terms.
-
-Want to chat with the community and contributors?
-Join us in [spectrum][chat]!
-
-Have an idea for a cool new utility or tool?
-That’s great!
-If you want feedback, help, or just to share it with the world you can do so by
-creating an issue in the [`unifiedjs/ideas`][ideas] repository!
-
-## Acknowledgments
-
-Preliminary work for unified was done [in 2014][preliminary] for
-[**retext**][retext] and inspired by [`ware`][ware]. Further incubation
-happened in [**remark**][remark]. The project was finally [externalised][]
-in 2015 and [published][] as `unified`. The project was authored by
-[**@wooorm**](https://github.com/wooorm).
-
-Although `unified` since moved it’s plugin architecture to [`trough`][trough],
-thanks to [**@calvinfo**](https://github.com/calvinfo),
-[**@ianstormtaylor**](https://github.com/ianstormtaylor), and others for their
-work on [`ware`][ware], which was a huge initial inspiration.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[logo]: https://raw.githubusercontent.com/unifiedjs/unified/39917ea/logo.svg?sanitize=true
-
-[build-badge]: https://img.shields.io/travis/unifiedjs/unified/master.svg
-
-[build]: https://travis-ci.org/unifiedjs/unified
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/unifiedjs/unified.svg
-
-[coverage]: https://codecov.io/github/unifiedjs/unified
-
-[downloads-badge]: https://img.shields.io/npm/dm/unified.svg
-
-[downloads]: https://www.npmjs.com/package/unified
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/unified.svg
-
-[size]: https://bundlephobia.com/result?p=unified
-
-[chat-badge]: https://img.shields.io/badge/join%20the%20community-on%20spectrum-7b16ff.svg
-
-[chat]: https://spectrum.chat/unified
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
-
-[site]: https://unified.js.org
-
-[medium]: https://medium.com/unifiedjs
-
-[twitter]: https://twitter.com/unifiedjs
-
-[collective]: https://opencollective.com/unified
-
-[guides]: https://unified.js.org/#guides
-
-[rehype]: https://github.com/rehypejs/rehype
-
-[remark]: https://github.com/remarkjs/remark
-
-[retext]: https://github.com/retextjs/retext
-
-[hast]: https://github.com/syntax-tree/hast
-
-[mdast]: https://github.com/syntax-tree/mdast
-
-[nlcst]: https://github.com/syntax-tree/nlcst
-
-[unist]: https://github.com/syntax-tree/unist
-
-[engine]: https://github.com/unifiedjs/unified-engine
-
-[args]: https://github.com/unifiedjs/unified-args
-
-[gulp]: https://github.com/unifiedjs/unified-engine-gulp
-
-[atom]: https://github.com/unifiedjs/unified-engine-atom
-
-[remark-rehype]: https://github.com/remarkjs/remark-rehype
-
-[remark-retext]: https://github.com/remarkjs/remark-retext
-
-[rehype-retext]: https://github.com/rehypejs/rehype-retext
-
-[rehype-remark]: https://github.com/rehypejs/rehype-remark
-
-[unist-utilities]: https://github.com/syntax-tree/unist#list-of-utilities
-
-[vfile]: https://github.com/vfile/vfile
-
-[vfile-contents]: https://github.com/vfile/vfile#vfilecontents
-
-[vfile-utilities]: https://github.com/vfile/vfile#related-tools
-
-[description]: #description
-
-[file]: #file
-
-[node]: #node
-
-[processor]: #processor
-
-[process]: #processorprocessfilevalue-done
-
-[parse]: #processorparsefilevalue
-
-[parser]: #processorparser
-
-[stringify]: #processorstringifynode-file
-
-[run]: #processorrunnode-file-done
-
-[compiler]: #processorcompiler
-
-[use]: #processoruseplugin-options
-
-[attacher]: #function-attacheroptions
-
-[transformer]: #function-transformernode-file-next
-
-[next]: #function-nexterr-tree-file
-
-[freeze]: #processorfreeze
-
-[plugin]: #plugin
-
-[run-done]: #function-doneerr-node-file
-
-[process-done]: #function-doneerr-file
-
-[trough]: https://github.com/wooorm/trough#function-fninput-next
-
-[promise]: https://developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/Promise
-
-[remark-plugins]: https://github.com/remarkjs/remark/blob/master/doc/plugins.md#list-of-plugins
-
-[rehype-plugins]: https://github.com/rehypejs/rehype/blob/master/doc/plugins.md#list-of-plugins
-
-[retext-plugins]: https://github.com/retextjs/retext/blob/master/doc/plugins.md#list-of-plugins
-
-[stream]: https://github.com/unifiedjs/unified-stream
-
-[contributing]: contributing.md
-
-[coc]: code-of-conduct.md
-
-[ideas]: https://github.com/unifiedjs/ideas
-
-[preliminary]: https://github.com/retextjs/retext/commit/8fcb1f#diff-168726dbe96b3ce427e7fedce31bb0bc
-
-[externalised]: https://github.com/remarkjs/remark/commit/9892ec#diff-168726dbe96b3ce427e7fedce31bb0bc
-
-[published]: https://github.com/unifiedjs/unified/commit/2ba1cf
-
-[ware]: https://github.com/segmentio/ware
-
-[gatsby]: https://www.gatsbyjs.org
-
-[mdx]: https://mdxjs.com
-
-[jsx]: https://reactjs.org/docs/jsx-in-depth.html
-
-[prettier]: https://prettier.io
-
-[storybook]: https://storybook.js.org
-
-[debugger.html]: https://github.com/devtools-html/debugger.html
-
-[mozilla]: https://www.mozilla.org
-
-[opensource.guide]: https://opensource.guide
-
-[github]: https://github.com
diff --git a/assets/node_modules/unified/types/index.d.ts b/assets/node_modules/unified/types/index.d.ts
deleted file mode 100644
index 150f326..0000000
--- a/assets/node_modules/unified/types/index.d.ts
+++ /dev/null
@@ -1,226 +0,0 @@
-// TypeScript Version: 3.0
-
-import * as Unist from 'unist'
-import vfile = require('vfile')
-
-declare namespace unified {
- interface Processor {
- /**
- * @returns New unfrozen processor which is configured to function the same as its ancestor. But when the descendant processor is configured in the future it does not affect the ancestral processor.
- */
- (): Processor
-
- /**
- * Configure the processor to use a plugin and optionally configure that plugin with options.
- *
- * @param plugin unified plugin
- * @param options Configuration for plugin]
- * @returns The processor on which use is invoked
- */
- use(plugin: Plugin, options?: unknown): Processor
- /**
- * @param preset `Object` with an optional plugins (set to list), and/or an optional settings object
- */
- use(preset: Preset): Processor
- /**
- * @param pluginTuple pairs, plugin and options in an array
- */
- use(pluginTuple: PluginTuple): Processor
- /**
- * @param list List of plugins, presets, and pairs
- */
- use(list: PluggableList): Processor
-
- /**
- * Parse text to a syntax tree.
- *
- * @param file VFile or anything which can be given to vfile()
- * @returns Syntax tree representation of input.
- */
- parse(file: VFileCompatible): Unist.Node
-
- /**
- * Function handling the parsing of text to a syntax tree.
- * Used in the parse phase in the process and invoked with a `string` and `VFile` representation of the document to parse.
- *
- * `Parser` can be a normal function in which case it must return a `Node`: the syntax tree representation of the given file.
- *
- * `Parser` can also be a constructor function (a function with keys in its `prototype`) in which case it’s invoked with `new`. Instances must have a parse method which is invoked without arguments and must return a `Node`.
- */
- Parser: ParserFunction | typeof Parser
-
- /**
- * Compile a syntax tree to text.
- *
- * @param node
- * @param file `VFile` or anything which can be given to `vfile()`
- * @returns String representation of the syntax tree file
- */
- stringify(node: Unist.Node, file?: VFileCompatible): string
-
- /**
- * Function handling the compilation of syntax tree to a text.
- * Used in the stringify phase in the process and invoked with a `Node` and `VFile` representation of the document to stringify.
- *
- * `Compiler` can be a normal function in which case it must return a `string`: the text representation of the given syntax tree.
- *
- * `Compiler` can also be a constructor function (a function with keys in its `prototype`) in which case it’s invoked with `new`.
- * Instances must have a `compile` method which is invoked without arguments and must return a `string`.
- */
- Compiler: CompilerFunction | typeof Compiler
-
- /**
- * Transform a syntax tree by applying plugins to it.
- *
- * @param node
- * @param file `VFile` or anything which can be given to `vfile()`
- * @param done Invoked when transformation is complete.
- * Either invoked with an error or a syntax tree and a file.
- * @returns `Promise` if `done` is not given. Rejected with an error, or resolved with the resulting syntax tree.
- */
- run(node: Unist.Node): Promise<Unist.Node>
- run(node: Unist.Node, file: VFileCompatible): Promise<Unist.Node>
- run(node: Unist.Node, done: RunCallback): void
- run(node: Unist.Node, file: VFileCompatible, done: RunCallback): void
-
- /**
- * Transform a syntax tree by applying plugins to it.
- *
- * If asynchronous plugins are configured an error is thrown.
- *
- * @param node
- * @param file `VFile` or anything which can be given to `vfile()`
- * @returns The given syntax tree.
- */
- runSync(node: Unist.Node, file?: VFileCompatible): Unist.Node
-
- /**
- * Process the given representation of a file as configured on the processor. The process invokes `parse`, `run`, and `stringify` internally.
- * @param file
- * @param done Invoked when the process is complete. Invoked with a fatal error, if any, and the VFile.
- * @returns `Promise` if `done` is not given.
- * Rejected with an error or resolved with the resulting file.
- */
- process(file: VFileCompatible): Promise<vfile.VFile>
- process(file: VFileCompatible, done: ProcessCallback): void
-
- /**
- * Process the given representation of a file as configured on the processor. The process invokes `parse`, `run`, and `stringify` internally.
- *
- * If asynchronous plugins are configured an error is thrown.
- *
- * @param file
- * @returns Virtual file with modified contents.
- */
- processSync(file: VFileCompatible): vfile.VFile
-
- /**
- * Get or set information in an in-memory key-value store accessible to all phases of the process.
- * An example is a list of HTML elements which are self-closing, which is needed when parsing, transforming, and compiling HTML.
- *
- * @returns key-value store object
- */
- data(): {[key: string]: unknown}
- /**
- * @param key Identifier
- * @returns If getting, the value at key
- */
- data(key: string): unknown
- /**
- * @param value Value to set. Omit if getting key
- * @returns If setting, the processor on which data is invoked
- */
- data(key: string, value: any): Processor
-
- /**
- * Freeze a processor. Frozen processors are meant to be extended and not to be configured or processed directly.
- *
- * Once a processor is frozen it cannot be unfrozen. New processors functioning just like it can be created by invoking the processor.
- *
- * It’s possible to freeze processors explicitly, by calling `.freeze()`, but `.parse()`, `.run()`, `.stringify()`, and `.process()` call `.freeze()` to freeze a processor too.
- *
- * @returns The processor on which freeze is invoked.
- */
- freeze(): Processor
- }
-
- type Plugin = Attacher
- type Settings = {
- [key: string]: unknown
- }
- /**
- * Presets provide a potentially sharable way to configure processors.
- * They can contain multiple plugins and optionally settings as well.
- */
- interface Preset {
- plugins?: PluggableList
- settings?: Settings
- }
- type PluginTuple = [Plugin, Settings]
- type Pluggable = Plugin | Preset | PluginTuple
- type PluggableList = Pluggable[]
-
- /**
- * An attacher is the thing passed to `use`.
- * It configures the processor and in turn can receive options.
- *
- * Attachers can configure processors, such as by interacting with parsers and compilers, linking them to other processors, or by specifying how the syntax tree is handled.
- *
- * @this Processor context object is set to the invoked on processor.
- * @param options Configuration
- * @returns Optional.
- */
- interface Attacher {
- (this: Processor, options?: unknown): Transformer | void
- }
-
- /**
- * Transformers modify the syntax tree or metadata of a file. A transformer is a function which is invoked each time a file is passed through the transform phase.
- * If an error occurs (either because it’s thrown, returned, rejected, or passed to `next`), the process stops.
- *
- * The transformation process in unified is handled by `trough`, see it’s documentation for the exact semantics of transformers.
- *
- * @param node
- * @param file
- * @param next If the signature of a transformer includes `next` (third argument), the function may finish asynchronous, and must invoke `next()`.
- * @returns
- * - `Error` — Can be returned to stop the process
- * - `Node` — Can be returned and results in further transformations and `stringify`s to be performed on the new tree
- * - `Promise` — If a promise is returned, the function is asynchronous, and must be resolved (optionally with a `Node`) or rejected (optionally with an `Error`)
- */
- interface Transformer {
- (
- node: Unist.Node,
- file: VFileCompatible,
- next?: (error: Error | null, tree: Unist.Node, file: vfile.VFile) => {}
- ): Error | Unist.Node | Promise<Unist.Node>
- }
-
- class Parser {
- parse(file: VFileCompatible): Unist.Node
- }
-
- type ParserFunction = (file: VFileCompatible) => Unist.Node
-
- class Compiler {
- compile(node: Unist.Node, file?: VFileCompatible): string
- }
- type CompilerFunction = (node: Unist.Node, file?: VFileCompatible) => string
-
- type RunCallback = (
- error: Error | null,
- node: Unist.Node,
- file: vfile.VFile
- ) => void
-
- type ProcessCallback = (error: Error | null, file: vfile.VFile) => void
-
- type VFileCompatible = vfile.VFile | vfile.VFileOptions | vfile.VFileContents
-}
-
-/**
- * Object describing how to process text.
- */
-declare function unified(): unified.Processor
-
-export = unified
diff --git a/assets/node_modules/uniq/.npmignore b/assets/node_modules/uniq/.npmignore
deleted file mode 100644
index 0d1b0b0..0000000
--- a/assets/node_modules/uniq/.npmignore
+++ /dev/null
@@ -1,15 +0,0 @@
-lib-cov
-*.seed
-*.log
-*.csv
-*.dat
-*.out
-*.pid
-*.gz
-
-pids
-logs
-results
-
-npm-debug.log
-node_modules/* \ No newline at end of file
diff --git a/assets/node_modules/uniq/LICENSE b/assets/node_modules/uniq/LICENSE
deleted file mode 100644
index 8ce206a..0000000
--- a/assets/node_modules/uniq/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-
-The MIT License (MIT)
-
-Copyright (c) 2013 Mikola Lysenko
-
-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/assets/node_modules/uniq/README.md b/assets/node_modules/uniq/README.md
deleted file mode 100644
index 9e0abaf..0000000
--- a/assets/node_modules/uniq/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-uniq
-====
-Removes all duplicates from an array in place.
-
-Usage
-=====
-First install using npm:
-
- npm install uniq
-
-Then use it as follows:
-
-```javascript
-
-var arr = [1, 1, 2, 2, 3, 5]
-
-require("uniq")(arr)
-console.log(arr)
-
-//Prints:
-//
-// 1,2,3,5
-//
-```
-
-## `require("uniq")(array[, compare, sorted])`
-Removes all duplicates from a sorted array in place.
-
-* `array` is the array to remove items from
-* `compare` is an optional comparison function that returns 0 when two items are equal, and something non-zero when they are different. If unspecified, then the default equals will be used.
-* `sorted` if true, then assume array is already sorted
-
-**Returns:** A reference to `array`
-
-**Time Complexity:** `O(array.length * log(arra.length))` or `O(array.length)` if `sorted`
-
-
-## Why use this instead of underscore.uniq[ue]?
-A few reasons:
-
-* This library updates the array in place without making an extra copy (and so it is faster for large arrays)
-* It also accepts a custom comparison function so you can remove duplicates from arrays containing object
-* It is more modular in the sense that it doesn't come with a bazillion other utility grab bag functions.
-
-# Credits
-(c) 2013 Mikola Lysenko. MIT License
diff --git a/assets/node_modules/uniq/package.json b/assets/node_modules/uniq/package.json
deleted file mode 100644
index 9c91dda..0000000
--- a/assets/node_modules/uniq/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "name": "uniq",
- "version": "1.0.1",
- "description": "Removes duplicates from a sorted array in place",
- "main": "uniq.js",
- "directories": {
- "test": "test"
- },
- "dependencies": {},
- "devDependencies": {
- "tape": "^2.12.3"
- },
- "scripts": {
- "test": "tape test/*.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/mikolalysenko/uniq.git"
- },
- "keywords": [
- "array",
- "duplicate",
- "unique",
- "uniq",
- "remove",
- "sort",
- "in",
- "place",
- "no",
- "copy"
- ],
- "author": "Mikola Lysenko",
- "license": "MIT",
- "readmeFilename": "README.md",
- "gitHead": "e9828cfcb97e25a351f95b39fdf3c31876ff3985"
-}
diff --git a/assets/node_modules/uniq/test/test.js b/assets/node_modules/uniq/test/test.js
deleted file mode 100644
index efc4fc8..0000000
--- a/assets/node_modules/uniq/test/test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var unique = require("../uniq.js")
-
-require("tape")("unique", function(t) {
-
- t.equals(unique([1,1,2,3,5,5,7]).join(), [1,2,3,5,7].join())
- t.equals(unique([]).join(), [].join())
- t.equals(unique([1,1,1]).join(), [1].join())
- t.equals(unique([1,1,1,2,2,2], function(a,b) { return (a^b)&1 }).join(), [2,1].join())
-
- t.end()
-}) \ No newline at end of file
diff --git a/assets/node_modules/uniq/uniq.js b/assets/node_modules/uniq/uniq.js
deleted file mode 100644
index e86c44b..0000000
--- a/assets/node_modules/uniq/uniq.js
+++ /dev/null
@@ -1,57 +0,0 @@
-"use strict"
-
-function unique_pred(list, compare) {
- var ptr = 1
- , len = list.length
- , a=list[0], b=list[0]
- for(var i=1; i<len; ++i) {
- b = a
- a = list[i]
- if(compare(a, b)) {
- if(i === ptr) {
- ptr++
- continue
- }
- list[ptr++] = a
- }
- }
- list.length = ptr
- return list
-}
-
-function unique_eq(list) {
- var ptr = 1
- , len = list.length
- , a=list[0], b = list[0]
- for(var i=1; i<len; ++i, b=a) {
- b = a
- a = list[i]
- if(a !== b) {
- if(i === ptr) {
- ptr++
- continue
- }
- list[ptr++] = a
- }
- }
- list.length = ptr
- return list
-}
-
-function unique(list, compare, sorted) {
- if(list.length === 0) {
- return list
- }
- if(compare) {
- if(!sorted) {
- list.sort(compare)
- }
- return unique_pred(list, compare)
- }
- if(!sorted) {
- list.sort()
- }
- return unique_eq(list)
-}
-
-module.exports = unique
diff --git a/assets/node_modules/unist-util-find-all-after/.editorconfig b/assets/node_modules/unist-util-find-all-after/.editorconfig
deleted file mode 100644
index c6c8b36..0000000
--- a/assets/node_modules/unist-util-find-all-after/.editorconfig
+++ /dev/null
@@ -1,9 +0,0 @@
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
diff --git a/assets/node_modules/unist-util-find-all-after/.prettierignore b/assets/node_modules/unist-util-find-all-after/.prettierignore
deleted file mode 100644
index 16b02d0..0000000
--- a/assets/node_modules/unist-util-find-all-after/.prettierignore
+++ /dev/null
@@ -1,8 +0,0 @@
-.DS_Store
-*.log
-.nyc_output/
-coverage/
-node_modules/
-unist-util-find-all-after.js
-unist-util-find-all-after.min.js
-yarn.lock
diff --git a/assets/node_modules/unist-util-find-all-after/.travis.yml b/assets/node_modules/unist-util-find-all-after/.travis.yml
deleted file mode 100644
index e36a9da..0000000
--- a/assets/node_modules/unist-util-find-all-after/.travis.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-language: node_js
-node_js:
- - lts/dubnium
- - node
-after_script: bash <(curl -s https://codecov.io/bash)
-deploy:
- provider: releases
- skip_cleanup: true
- api_key:
- secure: qK2TnRcyEzQY8d2JHT73D0b+Za/dcjwVjIq4Jh4qGpSLowGw7lKcPIJMBSSQFyOT2t5/T0TAxbqqNvJ/kvS/U0d2vMmlWtgq5dVnO67xG+RM6prUo52ZFGCoujkHis7Z0dAG1DyjebNUq61UNE92g4onsHC/43iVLI4CdVoYCU8wH2eFXjxiVzAEzlUrG3AsA3EXXCNeQZ/GJcQworpcTGVrVQs8Ik2PFecWHsgWgSAhU3gKlOWdQ7cO4EXe5MViAWPBPlXydGH4Li0H7hDb6e5Jb3cSwO4HB4zxEXIdEqeogIKSJAQPFKzYbvbWWL9Vk0GFXY8VDHCi/aoANx7IJwYxEsf0rT+28ksUvwjga54mwC+pix0pQZ4iuXEJ5g9SFNmMBR0ucsmwvLkkcKmKRGDj7KudXpV0pMkutfEfZLCqaVlQcDpz7wLBRR2HDVrxpzRlEdIuyD6w3pdwIS9bQuhMpJHUyfBB/zUlaUm63zWMH7KD0rARQ3Ou4OuifFI0x2mBrctgbIJOMjwkLPl+B6NfpCa4XH8Y2IkBRLBzJVgckqpOqKfZmoU//krQTP2RqrDmOBt9INzBqCu8xaLxIOwkfSkar2dI8y8CgejPZOcob6y8jjKb2lQDN/gJ9I0ZMk4sjt35fUJg0QXq2N0bsU5miVSJzUXF29N0gOGmrZQ=
- file:
- - 'unist-util-find-all-after.js'
- - 'unist-util-find-all-after.min.js'
- on:
- tags: true
diff --git a/assets/node_modules/unist-util-find-all-after/index.js b/assets/node_modules/unist-util-find-all-after/index.js
deleted file mode 100644
index ac8aaf2..0000000
--- a/assets/node_modules/unist-util-find-all-after/index.js
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict'
-
-var convert = require('unist-util-is/convert')
-
-module.exports = findAllAfter
-
-function findAllAfter(parent, index, test) {
- var is = convert(test)
- var results = []
- var children
- var child
- var length
-
- if (!parent || !parent.type || !parent.children) {
- throw new Error('Expected parent node')
- }
-
- children = parent.children
- length = children.length
-
- if (index && index.type) {
- index = children.indexOf(index)
- }
-
- if (isNaN(index) || index < 0 || index === Infinity) {
- throw new Error('Expected positive finite index or child node')
- }
-
- while (++index < length) {
- child = children[index]
-
- if (is(child, index, parent)) {
- results.push(child)
- }
- }
-
- return results
-}
diff --git a/assets/node_modules/unist-util-find-all-after/license b/assets/node_modules/unist-util-find-all-after/license
deleted file mode 100644
index 32e7a3d..0000000
--- a/assets/node_modules/unist-util-find-all-after/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/unist-util-find-all-after/package.json b/assets/node_modules/unist-util-find-all-after/package.json
deleted file mode 100644
index 62231a2..0000000
--- a/assets/node_modules/unist-util-find-all-after/package.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "name": "unist-util-find-all-after",
- "version": "1.0.5",
- "description": "Utility to find nodes after another node",
- "license": "MIT",
- "keywords": [
- "unist",
- "node",
- "find",
- "after",
- "util",
- "utility"
- ],
- "repository": "syntax-tree/unist-util-find-all-after",
- "bugs": "https://github.com/syntax-tree/unist-util-find-all-after/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)"
- ],
- "dependencies": {
- "unist-util-is": "^3.0.0"
- },
- "devDependencies": {
- "browserify": "^16.0.0",
- "nyc": "^14.0.0",
- "prettier": "^1.0.0",
- "remark": "^11.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 unistUtilFindAllAfter -o unist-util-find-all-after.js",
- "build-mangle": "browserify . -s unistUtilFindAllAfter -p tinyify -o unist-util-find-all-after.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"
- },
- "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": {
- "guard-for-in": "off"
- },
- "ignore": [
- "unist-util-find-all-after.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/unist-util-find-all-after/readme.md b/assets/node_modules/unist-util-find-all-after/readme.md
deleted file mode 100644
index 7aea7c1..0000000
--- a/assets/node_modules/unist-util-find-all-after/readme.md
+++ /dev/null
@@ -1,146 +0,0 @@
-# unist-util-find-all-after
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Sponsors][sponsors-badge]][collective]
-[![Backers][backers-badge]][collective]
-[![Chat][chat-badge]][chat]
-[![Size][size-badge]][size]
-
-[**unist**][unist] utility to find nodes after another node.
-
-## Installation
-
-[npm][]:
-
-```bash
-npm install unist-util-find-all-after
-```
-
-## Usage
-
-```js
-var u = require('unist-builder')
-var findAllAfter = require('unist-util-find-all-after')
-
-var tree = u('tree', [
- u('leaf', 'leaf 1'),
- u('node', [u('leaf', 'leaf 2'), u('leaf', 'leaf 3')]),
- u('leaf', 'leaf 4'),
- u('node', [u('leaf', 'leaf 5')]),
- u('leaf', 'leaf 6'),
- u('void'),
- u('leaf', 'leaf 7')
-])
-
-console.log(findAllAfter(tree, 1, 'leaf'))
-```
-
-Yields:
-
-```js
-[
- { type: 'leaf', value: 'leaf 4' },
- { type: 'leaf', value: 'leaf 6' },
- { type: 'leaf', value: 'leaf 7' }
-]
-```
-
-## API
-
-### `findAllAfter(parent, node|index[, test])`
-
-Find all children after `index` (or `node`) in `parent`, that passes `test`
-(when given).
-
-###### Parameters
-
-* `parent` ([`Node`][node]) — [Parent][] node
-* `node` ([`Node`][node]) — [Child][] of `parent`
-* `index` (`number`, optional) — [Index][] in `parent`
-* `test` (`Function`, `string`, `Object`, `Array`, optional)
- — See [`unist-util-is`][is]
-
-###### Returns
-
-[`Array.<Node>`][node] — [Child][]ren of `parent` passing `test`.
-
-## Related
-
-* [`unist-util-find-after`](https://github.com/syntax-tree/unist-util-find-after)
- — Find a node after another node
-* [`unist-util-find-before`](https://github.com/syntax-tree/unist-util-find-before)
- — Find a node before another node
-* [`unist-util-find-all-before`](https://github.com/syntax-tree/unist-util-find-all-before)
- — Find all nodes before another node
-* [`unist-util-find-all-between`](https://github.com/mrzmmr/unist-util-find-all-between)
- — Find all nodes between two nodes
-* [`unist-util-find`](https://github.com/blahah/unist-util-find)
- — Find nodes matching a predicate
-
-## 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, organisation, or community you agree to
-abide by its terms.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/syntax-tree/unist-util-find-all-after.svg
-
-[build]: https://travis-ci.org/syntax-tree/unist-util-find-all-after
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/syntax-tree/unist-util-find-all-after.svg
-
-[coverage]: https://codecov.io/github/syntax-tree/unist-util-find-all-after
-
-[downloads-badge]: https://img.shields.io/npm/dm/unist-util-find-all-after.svg
-
-[downloads]: https://www.npmjs.com/package/unist-util-find-all-after
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/unist-util-find-all-after.svg
-
-[size]: https://bundlephobia.com/result?p=unist-util-find-all-after
-
-[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/join%20the%20community-on%20spectrum-7b16ff.svg
-
-[chat]: https://spectrum.chat/unified/syntax-tree
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
-
-[unist]: https://github.com/syntax-tree/unist
-
-[node]: https://github.com/syntax-tree/unist#node
-
-[parent]: https://github.com/syntax-tree/unist#parent-1
-
-[child]: https://github.com/syntax-tree/unist#child
-
-[index]: https://github.com/syntax-tree/unist#index
-
-[is]: https://github.com/syntax-tree/unist-util-is
-
-[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
diff --git a/assets/node_modules/unist-util-find-all-after/test.js b/assets/node_modules/unist-util-find-all-after/test.js
deleted file mode 100644
index 5a31a35..0000000
--- a/assets/node_modules/unist-util-find-all-after/test.js
+++ /dev/null
@@ -1,116 +0,0 @@
-'use strict'
-
-var assert = require('assert')
-var test = require('tape')
-var remark = require('remark')
-var findAllAfter = require('.')
-
-var tree = remark().parse('Some *emphasis*, **importance**, and `code`.')
-var paragraph = tree.children[0]
-var children = paragraph.children
-
-test('unist-util-find-all-after', function(t) {
- t.throws(
- function() {
- findAllAfter()
- },
- /Expected parent node/,
- 'should fail without parent'
- )
-
- t.throws(
- function() {
- findAllAfter({type: 'foo'})
- },
- /Expected parent node/,
- 'should fail without parent node'
- )
-
- t.doesNotThrow(function() {
- assert.throws(function() {
- findAllAfter({type: 'foo', children: []})
- }, /Expected positive finite index or child node/)
-
- assert.throws(function() {
- findAllAfter({type: 'foo', children: []}, -1)
- }, /Expected positive finite index or child node/)
-
- assert.throws(function() {
- findAllAfter({type: 'foo', children: []}, {type: 'bar'})
- }, /Expected positive finite index or child node/)
- }, 'should fail without index')
-
- t.doesNotThrow(function() {
- assert.throws(function() {
- findAllAfter(
- {
- type: 'foo',
- children: [{type: 'bar'}, {type: 'baz'}]
- },
- 0,
- false
- )
- }, /Expected function, string, or object as test/)
-
- assert.throws(function() {
- findAllAfter(
- {
- type: 'foo',
- children: [{type: 'bar'}, {type: 'baz'}]
- },
- 0,
- true
- )
- }, /Expected function, string, or object as test/)
- }, 'should fail for invalid `test`')
-
- t.doesNotThrow(function() {
- var res = children.slice(2)
-
- assert.deepStrictEqual(findAllAfter(paragraph, children[1]), res)
- assert.deepStrictEqual(findAllAfter(paragraph, 1), res)
- assert.deepStrictEqual(findAllAfter(paragraph, 7), [])
- }, 'should return the following node when without `test`')
-
- t.doesNotThrow(function() {
- assert.deepStrictEqual(findAllAfter(paragraph, 0, children[6]), [
- children[6]
- ])
- assert.deepStrictEqual(findAllAfter(paragraph, children[0], children[1]), [
- children[1]
- ])
- assert.deepStrictEqual(findAllAfter(paragraph, 0, children[1]), [
- children[1]
- ])
- assert.deepStrictEqual(
- findAllAfter(paragraph, children[0], children[0]),
- []
- )
- assert.deepStrictEqual(findAllAfter(paragraph, 0, children[0]), [])
- assert.deepStrictEqual(findAllAfter(paragraph, 1, children[1]), [])
- }, 'should return `node` when given a `node` and existing')
-
- t.doesNotThrow(function() {
- assert.deepStrictEqual(findAllAfter(paragraph, 0, 'strong'), [children[3]])
- assert.deepStrictEqual(findAllAfter(paragraph, 3, 'strong'), [])
- assert.deepStrictEqual(findAllAfter(paragraph, children[0], 'strong'), [
- children[3]
- ])
- assert.deepStrictEqual(findAllAfter(paragraph, children[3], 'strong'), [])
- }, 'should return a child when given a `type` and existing')
-
- t.doesNotThrow(function() {
- var res = children.slice(5)
-
- assert.deepStrictEqual(findAllAfter(paragraph, 0, test), res)
- assert.deepStrictEqual(findAllAfter(paragraph, 6, test), [])
- assert.deepStrictEqual(findAllAfter(paragraph, children[4], test), res)
- assert.deepStrictEqual(findAllAfter(paragraph, children[6], test), [])
-
- function test(node, n) {
- return n >= 5
- }
- }, 'should return a child when given a `test` and existing')
-
- t.end()
-})
diff --git a/assets/node_modules/unist-util-is/convert.js b/assets/node_modules/unist-util-is/convert.js
deleted file mode 100644
index f92f34f..0000000
--- a/assets/node_modules/unist-util-is/convert.js
+++ /dev/null
@@ -1,87 +0,0 @@
-'use strict'
-
-module.exports = convert
-
-function convert(test) {
- if (typeof test === 'string') {
- return typeFactory(test)
- }
-
- if (test === null || test === undefined) {
- return ok
- }
-
- if (typeof test === 'object') {
- return ('length' in test ? anyFactory : matchesFactory)(test)
- }
-
- if (typeof test === 'function') {
- return test
- }
-
- throw new Error('Expected function, string, or object as test')
-}
-
-function convertAll(tests) {
- var results = []
- var length = tests.length
- var index = -1
-
- while (++index < length) {
- results[index] = convert(tests[index])
- }
-
- return results
-}
-
-// Utility assert each property in `test` is represented in `node`, and each
-// values are strictly equal.
-function matchesFactory(test) {
- return matches
-
- function matches(node) {
- var key
-
- for (key in test) {
- if (node[key] !== test[key]) {
- return false
- }
- }
-
- return true
- }
-}
-
-function anyFactory(tests) {
- var checks = convertAll(tests)
- var length = checks.length
-
- return matches
-
- function matches() {
- var index = -1
-
- while (++index < length) {
- if (checks[index].apply(this, arguments)) {
- return true
- }
- }
-
- return false
- }
-}
-
-// Utility to convert a string into a function which checks a given node’s type
-// for said string.
-function typeFactory(test) {
- return type
-
- function type(node) {
- return Boolean(node && node.type === test)
- }
-}
-
-// Utility to return true.
-function ok() {
- return true
-}
diff --git a/assets/node_modules/unist-util-is/index.js b/assets/node_modules/unist-util-is/index.js
deleted file mode 100644
index f18d416..0000000
--- a/assets/node_modules/unist-util-is/index.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict'
-
-var convert = require('./convert')
-
-module.exports = is
-
-is.convert = convert
-
-// Assert if `test` passes for `node`.
-// When a `parent` node is known the `index` of node should also be given.
-// eslint-disable-next-line max-params
-function is(node, test, index, parent, context) {
- var hasParent = parent !== null && parent !== undefined
- var hasIndex = index !== null && index !== undefined
- var check = convert(test)
-
- if (
- hasIndex &&
- (typeof index !== 'number' || index < 0 || index === Infinity)
- ) {
- throw new Error('Expected positive finite index or child node')
- }
-
- if (hasParent && (!is(parent) || !parent.children)) {
- throw new Error('Expected parent node')
- }
-
- if (!node || !node.type || typeof node.type !== 'string') {
- return false
- }
-
- if (hasParent !== hasIndex) {
- throw new Error('Expected both parent and index')
- }
-
- return Boolean(check.call(context, node, index, parent))
-}
diff --git a/assets/node_modules/unist-util-is/license b/assets/node_modules/unist-util-is/license
deleted file mode 100644
index cfa79e6..0000000
--- a/assets/node_modules/unist-util-is/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/unist-util-is/package.json b/assets/node_modules/unist-util-is/package.json
deleted file mode 100644
index 25193ac..0000000
--- a/assets/node_modules/unist-util-is/package.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "name": "unist-util-is",
- "version": "3.0.0",
- "description": "Utility to check if a node passes a test",
- "license": "MIT",
- "keywords": [
- "unist",
- "node",
- "is",
- "equal",
- "test",
- "type",
- "util",
- "utility"
- ],
- "repository": "syntax-tree/unist-util-is",
- "bugs": "https://github.com/syntax-tree/unist-util-is/issues",
- "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
- "contributors": [
- "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
- ],
- "files": [
- "index.js",
- "convert.js"
- ],
- "dependencies": {},
- "devDependencies": {
- "browserify": "^16.0.0",
- "nyc": "^14.0.0",
- "prettier": "^1.0.0",
- "remark-cli": "^6.0.0",
- "remark-preset-wooorm": "^5.0.0",
- "tape": "^4.0.0",
- "tinyify": "^2.0.0",
- "xo": "^0.24.0"
- },
- "scripts": {
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "build-bundle": "browserify . -s unistUtilIs > unist-util-is.js",
- "build-mangle": "browserify . -s unistUtilIs -p tinyify > unist-util-is.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": {
- "unicorn/prefer-type-error": "off"
- },
- "ignore": [
- "unist-util-is.js"
- ]
- },
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/unist-util-is/readme.md b/assets/node_modules/unist-util-is/readme.md
deleted file mode 100644
index 7d53629..0000000
--- a/assets/node_modules/unist-util-is/readme.md
+++ /dev/null
@@ -1,202 +0,0 @@
-# unist-util-is
-
-[![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 check if a node passes a test.
-
-## Install
-
-[npm][]:
-
-```sh
-npm install unist-util-is
-```
-
-## Usage
-
-```js
-var is = require('unist-util-is')
-
-var node = {type: 'strong'}
-var parent = {type: 'paragraph', children: [node]}
-
-function test(node, n) {
- return n === 5
-}
-
-is() // => false
-is({children: []}) // => false
-is(node) // => true
-is(node, 'strong') // => true
-is(node, 'emphasis') // => false
-
-is(node, node) // => true
-is(parent, {type: 'paragraph'}) // => true
-is(parent, {type: 'strong'}) // => false
-
-is(node, test) // => false
-is(node, test, 4, parent) // => false
-is(node, test, 5, parent) // => true
-```
-
-## API
-
-### `is(node[, test[, index, parent[, context]]])`
-
-###### Parameters
-
-* `node` ([`Node`][node]) — Node to check.
-* `test` ([`Function`][test], `string`, `Object`, or `Array.<Test>`, optional)
- — When not given, checks if `node` is a [`Node`][node].
- When `string`, works like passing `node => node.type === test`.
- When `array`, checks if any one of the subtests pass.
- When `object`, checks that all keys in `test` are in `node`,
- and that they have strictly equal values
-* `index` (`number`, optional) — [Index][] of `node` in `parent`
-* `parent` ([`Node`][node], optional) — [Parent][] of `node`
-* `context` (`*`, optional) — Context object to invoke `test` with
-
-###### Returns
-
-`boolean` — Whether `test` passed *and* `node` is a [`Node`][node] (object with
-`type` set to a non-empty `string`).
-
-#### `function test(node[, index, parent])`
-
-###### Parameters
-
-* `node` ([`Node`][node]) — Node to check
-* `index` (`number?`) — [Index][] of `node` in `parent`
-* `parent` ([`Node?`][node]) — [Parent][] of `node`
-
-###### Context
-
-`*` — The to `is` given `context`.
-
-###### Returns
-
-`boolean?` — Whether `node` matches.
-
-### `is.convert(test)`
-
-Create a test function from `test`, that can later be called with a `node`,
-`index`, and `parent`.
-Useful if you’re going to test many nodes, for example when creating a utility
-where something else passes an is-compatible test.
-
-Can also be accessed with `require('unist-util-is/convert')`.
-
-For example:
-
-```js
-var u = require('unist-builder')
-var convert = require('unist-util-is/convert')
-
-var test = convert('leaf')
-
-var tree = u('tree', [
- u('node', [u('leaf', '1')]),
- u('leaf', '2'),
- u('node', [u('leaf', '3'), u('leaf', '4')]),
- u('leaf', '5')
-])
-
-var leafs = tree.children.filter((child, index) => test(child, index, tree))
-
-console.log(leafs)
-```
-
-Yields:
-
-```js
-[({type: 'leaf', value: '2'}, {type: 'leaf', value: '5'})]
-```
-
-## Related
-
-* [`unist-util-find-after`](https://github.com/syntax-tree/unist-util-find-after)
- — Find a node after another node
-* [`unist-util-find-before`](https://github.com/syntax-tree/unist-util-find-before)
- — Find a node before another node
-* [`unist-util-find-all-after`](https://github.com/syntax-tree/unist-util-find-all-after)
- — Find all nodes after another node
-* [`unist-util-find-all-before`](https://github.com/syntax-tree/unist-util-find-all-before)
- — Find all nodes before another node
-* [`unist-util-find-all-between`](https://github.com/mrzmmr/unist-util-find-all-between)
- — Find all nodes between two nodes
-* [`unist-util-find`](https://github.com/blahah/unist-util-find)
- — Find nodes matching a predicate
-* [`unist-util-filter`](https://github.com/eush77/unist-util-filter)
- — Create a new tree with nodes that pass a check
-* [`unist-util-remove`](https://github.com/eush77/unist-util-remove)
- — Remove nodes from tree
-
-## 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, organisation, or community you agree to
-abide by its terms.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/syntax-tree/unist-util-is.svg
-
-[build]: https://travis-ci.org/syntax-tree/unist-util-is
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/syntax-tree/unist-util-is.svg
-
-[coverage]: https://codecov.io/github/syntax-tree/unist-util-is
-
-[downloads-badge]: https://img.shields.io/npm/dm/unist-util-is.svg
-
-[downloads]: https://www.npmjs.com/package/unist-util-is
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/unist-util-is.svg
-
-[size]: https://bundlephobia.com/result?p=unist-util-is
-
-[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/join%20the%20community-on%20spectrum-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
-
-[parent]: https://github.com/syntax-tree/unist#parent-1
-
-[index]: https://github.com/syntax-tree/unist#index
-
-[test]: #function-testnode-index-parent
diff --git a/assets/node_modules/unist-util-remove-position/index.js b/assets/node_modules/unist-util-remove-position/index.js
deleted file mode 100644
index 0963959..0000000
--- a/assets/node_modules/unist-util-remove-position/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict'
-
-var visit = require('unist-util-visit')
-
-module.exports = removePosition
-
-function removePosition(node, force) {
- visit(node, force ? hard : soft)
- return node
-}
-
-function hard(node) {
- delete node.position
-}
-
-function soft(node) {
- node.position = undefined
-}
diff --git a/assets/node_modules/unist-util-remove-position/license b/assets/node_modules/unist-util-remove-position/license
deleted file mode 100644
index 8d8660d..0000000
--- a/assets/node_modules/unist-util-remove-position/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/unist-util-remove-position/package.json b/assets/node_modules/unist-util-remove-position/package.json
deleted file mode 100644
index e116647..0000000
--- a/assets/node_modules/unist-util-remove-position/package.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "name": "unist-util-remove-position",
- "version": "1.1.4",
- "description": "Remove `position`s from a unist tree",
- "license": "MIT",
- "keywords": [
- "unist",
- "utility",
- "remove",
- "position",
- "location"
- ],
- "repository": "syntax-tree/unist-util-remove-position",
- "bugs": "https://github.com/syntax-tree/unist-util-remove-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)"
- ],
- "files": [
- "index.js"
- ],
- "dependencies": {
- "unist-util-visit": "^1.1.0"
- },
- "devDependencies": {
- "browserify": "^16.0.0",
- "nyc": "^14.0.0",
- "prettier": "^1.0.0",
- "remark": "^11.0.0",
- "remark-cli": "^7.0.0",
- "remark-preset-wooorm": "^6.0.0",
- "tape": "^4.0.0",
- "tinyify": "^2.0.0",
- "unist-builder": "^2.0.0",
- "xo": "^0.25.0"
- },
- "scripts": {
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "build-bundle": "browserify . -s unistUtilRemovePosition > unist-util-remove-position.js",
- "build-mangle": "browserify . -s unistUtilRemovePosition -p tinyify > unist-util-remove-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": "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": [
- "unist-util-remove-position.js"
- ]
- },
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/unist-util-remove-position/readme.md b/assets/node_modules/unist-util-remove-position/readme.md
deleted file mode 100644
index e79ed14..0000000
--- a/assets/node_modules/unist-util-remove-position/readme.md
+++ /dev/null
@@ -1,131 +0,0 @@
-# unist-util-remove-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 remove [`position`][position]s from tree.
-
-## Install
-
-[npm][]:
-
-```sh
-npm install unist-util-remove-position
-```
-
-## Usage
-
-```js
-var remark = require('remark')
-var removePosition = require('unist-util-remove-position')
-
-var tree = remark().parse('Some _emphasis_, **importance**, and `code`.')
-
-removePosition(tree, true)
-
-console.dir(tree, {depth: null})
-```
-
-Yields:
-
-```js
-{
- type: 'root',
- children: [
- {
- type: 'paragraph',
- children: [
- { type: 'text', value: 'Some ' },
- {
- type: 'emphasis',
- children: [ { type: 'text', value: 'emphasis' } ]
- },
- { type: 'text', value: ', ' },
- {
- type: 'strong',
- children: [ { type: 'text', value: 'importance' } ]
- },
- { type: 'text', value: ', and ' },
- { type: 'inlineCode', value: 'code' },
- { type: 'text', value: '.' }
- ]
- }
- ]
-}
-```
-
-## API
-
-### `removePosition(node[, force])`
-
-Remove [`position`][position]s from [`node`][node].
-If `force` is given, uses `delete`, otherwise, sets `position`s to `undefined`.
-
-###### Returns
-
-The given `node`.
-
-## 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, organisation, or community you agree to
-abide by its terms.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/syntax-tree/unist-util-remove-position.svg
-
-[build]: https://travis-ci.org/syntax-tree/unist-util-remove-position
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/syntax-tree/unist-util-remove-position.svg
-
-[coverage]: https://codecov.io/github/syntax-tree/unist-util-remove-position
-
-[downloads-badge]: https://img.shields.io/npm/dm/unist-util-remove-position.svg
-
-[downloads]: https://www.npmjs.com/package/unist-util-remove-position
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/unist-util-remove-position.svg
-
-[size]: https://bundlephobia.com/result?p=unist-util-remove-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/join%20the%20community-on%20spectrum-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
-
-[position]: https://github.com/syntax-tree/unist#position
-
-[node]: https://github.com/syntax-tree/unist#node
diff --git a/assets/node_modules/unist-util-stringify-position/LICENSE b/assets/node_modules/unist-util-stringify-position/LICENSE
deleted file mode 100644
index 8d8660d..0000000
--- a/assets/node_modules/unist-util-stringify-position/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/unist-util-stringify-position/index.js b/assets/node_modules/unist-util-stringify-position/index.js
deleted file mode 100644
index 3be1e14..0000000
--- a/assets/node_modules/unist-util-stringify-position/index.js
+++ /dev/null
@@ -1,50 +0,0 @@
-'use strict'
-
-var own = {}.hasOwnProperty
-
-module.exports = stringify
-
-function stringify(value) {
- /* Nothing. */
- if (!value || typeof value !== 'object') {
- return null
- }
-
- /* 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 null
-}
-
-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/assets/node_modules/unist-util-stringify-position/package.json b/assets/node_modules/unist-util-stringify-position/package.json
deleted file mode 100644
index 2e20b67..0000000
--- a/assets/node_modules/unist-util-stringify-position/package.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "name": "unist-util-stringify-position",
- "version": "1.1.2",
- "description": "Stringify a Unist node, position, or point",
- "license": "MIT",
- "keywords": [
- "unist",
- "position",
- "location",
- "point",
- "node",
- "stringify",
- "tostring",
- "util",
- "utility"
- ],
- "repository": "syntax-tree/unist-util-stringify-position",
- "bugs": "https://github.com/syntax-tree/unist-util-stringify-position/issues",
- "author": "Titus Wormer <tituswormer@gmail.com> (http://wooorm.com)",
- "contributors": [
- "Titus Wormer <tituswormer@gmail.com> (http://wooorm.com)"
- ],
- "files": [
- "index.js"
- ],
- "dependencies": {},
- "devDependencies": {
- "browserify": "^16.0.0",
- "esmangle": "^1.0.0",
- "nyc": "^11.0.0",
- "prettier": "^1.12.1",
- "remark-cli": "^5.0.0",
- "remark-preset-wooorm": "^4.0.0",
- "tape": "^4.5.1",
- "xo": "^0.20.0"
- },
- "scripts": {
- "format": "remark . -qfo && prettier --write '**/*.js' && xo --fix",
- "build-bundle": "browserify index.js --no-builtins -s unistUtilStringifyPosition > unist-util-stringify-position.js",
- "build-mangle": "esmangle unist-util-stringify-position.js > 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": "npm run format && npm run build && npm run test-coverage"
- },
- "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": {
- "guard-for-in": "off",
- "no-var": "off",
- "prefer-arrow-callback": "off"
- },
- "ignores": [
- "unist-util-stringify-position.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/unist-util-stringify-position/readme.md b/assets/node_modules/unist-util-stringify-position/readme.md
deleted file mode 100644
index 85c753b..0000000
--- a/assets/node_modules/unist-util-stringify-position/readme.md
+++ /dev/null
@@ -1,100 +0,0 @@
-# unist-util-stringify-position [![Build Status][build-badge]][build-page] [![Coverage Status][coverage-badge]][coverage-page]
-
-Stringify a [**Unist**][unist] [`Position`][position] or [`Point`][point].
-
-## Installation
-
-[npm][]:
-
-```bash
-npm install unist-util-stringify-position
-```
-
-## Usage
-
-```javascript
-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 points), or
-a node’s position.
-
-###### 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. `null` is returned if the given value is neither `node`,
-`position`, nor `point`.
-
-## Contribute
-
-See [`contributing.md` in `syntax-tree/unist`][contributing] for ways to get
-started.
-
-This organisation has a [Code of Conduct][coc]. By interacting with this
-repository, organisation, 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-page]: 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-page]: https://codecov.io/github/syntax-tree/unist-util-stringify-position?branch=master
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: LICENSE
-
-[author]: http://wooorm.com
-
-[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
-
-[contributing]: https://github.com/syntax-tree/unist/blob/master/contributing.md
-
-[coc]: https://github.com/syntax-tree/unist/blob/master/code-of-conduct.md
diff --git a/assets/node_modules/unist-util-visit-parents/index.js b/assets/node_modules/unist-util-visit-parents/index.js
deleted file mode 100644
index c726359..0000000
--- a/assets/node_modules/unist-util-visit-parents/index.js
+++ /dev/null
@@ -1,78 +0,0 @@
-'use strict'
-
-module.exports = visitParents
-
-var convert = require('unist-util-is/convert')
-
-var CONTINUE = true
-var SKIP = 'skip'
-var EXIT = false
-
-visitParents.CONTINUE = CONTINUE
-visitParents.SKIP = SKIP
-visitParents.EXIT = EXIT
-
-function visitParents(tree, test, visitor, reverse) {
- var is
-
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor
- visitor = test
- test = null
- }
-
- is = convert(test)
-
- one(tree, null, [])
-
- // Visit a single node.
- function one(node, index, parents) {
- var result = []
- var subresult
-
- if (!test || is(node, index, parents[parents.length - 1] || null)) {
- result = toResult(visitor(node, parents))
-
- if (result[0] === EXIT) {
- return result
- }
- }
-
- if (node.children && result[0] !== SKIP) {
- subresult = toResult(all(node.children, parents.concat(node)))
- return subresult[0] === EXIT ? subresult : result
- }
-
- return result
- }
-
- // Visit children in `parent`.
- function all(children, parents) {
- var min = -1
- var step = reverse ? -1 : 1
- var index = (reverse ? children.length : min) + step
- var result
-
- while (index > min && index < children.length) {
- result = one(children[index], index, parents)
-
- if (result[0] === EXIT) {
- return result
- }
-
- index = typeof result[1] === 'number' ? result[1] : index + step
- }
- }
-}
-
-function toResult(value) {
- if (value !== null && typeof value === 'object' && 'length' in value) {
- return value
- }
-
- if (typeof value === 'number') {
- return [CONTINUE, value]
- }
-
- return [value]
-}
diff --git a/assets/node_modules/unist-util-visit-parents/license b/assets/node_modules/unist-util-visit-parents/license
deleted file mode 100644
index 8d8660d..0000000
--- a/assets/node_modules/unist-util-visit-parents/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/unist-util-visit-parents/package.json b/assets/node_modules/unist-util-visit-parents/package.json
deleted file mode 100644
index 26e1872..0000000
--- a/assets/node_modules/unist-util-visit-parents/package.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "name": "unist-util-visit-parents",
- "version": "2.1.2",
- "description": "Recursively walk over unist nodes, with ancestral information",
- "license": "MIT",
- "keywords": [
- "unist",
- "walk",
- "util",
- "utility"
- ],
- "repository": "syntax-tree/unist-util-visit-parents",
- "bugs": "https://github.com/syntax-tree/unist-util-visit-parents/issues",
- "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
- "contributors": [
- "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
- ],
- "files": [
- "index.js"
- ],
- "dependencies": {
- "unist-util-is": "^3.0.0"
- },
- "devDependencies": {
- "browserify": "^16.0.0",
- "nyc": "^14.0.0",
- "prettier": "^1.0.0",
- "remark": "^10.0.0",
- "remark-cli": "^6.0.0",
- "remark-preset-wooorm": "^5.0.0",
- "tape": "^4.0.0",
- "tinyify": "^2.0.0",
- "xo": "^0.24.0"
- },
- "scripts": {
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "build-bundle": "browserify index.js -s unistUtilVisitParents > unist-util-visit-parents.js",
- "build-mangle": "browserify index.js -s unistUtilVisitParents -p tinyify > unist-util-visit-parents.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"
- },
- "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-visit-parents.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/unist-util-visit-parents/readme.md b/assets/node_modules/unist-util-visit-parents/readme.md
deleted file mode 100644
index ec7efc7..0000000
--- a/assets/node_modules/unist-util-visit-parents/readme.md
+++ /dev/null
@@ -1,218 +0,0 @@
-# unist-util-visit-parents
-
-[![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 visit nodes, with ancestral information.
-
-## Install
-
-[npm][]:
-
-```sh
-npm install unist-util-visit-parents
-```
-
-## Usage
-
-```js
-var remark = require('remark')
-var visit = require('unist-util-visit-parents')
-
-var tree = remark.parse('Some _emphasis_, **importance**, and `code`.')
-
-visit(tree, 'strong', visitor)
-
-function visitor(node, ancestors) {
- console.log(ancestors)
-}
-```
-
-Yields:
-
-```js
-[ { type: 'root', children: [ [Object] ] },
- { type: 'paragraph',
- children:
- [ [Object],
- [Object],
- [Object],
- [Object],
- [Object],
- [Object],
- [Object] ] } ]
-```
-
-## API
-
-### `visit(tree[, test], visitor[, reverse])`
-
-Visit nodes ([**inclusive descendants**][descendant] of [`tree`][tree]), with
-ancestral information. Optionally filtering nodes. Optionally in reverse.
-
-###### Parameters
-
-* `tree` ([`Node`][node]) — [Tree][] to traverse
-* `test` ([`Test`][is], optional) — [`is`][is]-compatible test (such as a
- [type][])
-* `visitor` ([Function][visitor]) — Function invoked when a node is found
- that passes `test`
-* `reverse` (`boolean`, default: `false`) — The tree is walked in [preorder][]
- (NLR), visiting the node itself, then its [head][], etc.
- When `reverse` is passed, the tree is stilled walked in preorder, but now
- in NRL (the node itself, then its [tail][], etc.)
-
-#### `next? = visitor(node, ancestors)`
-
-Invoked when a node (matching `test`, if given) is found.
-
-Visitors are free to transform `node`.
-They can also transform the [parent][] of node (the last of `ancestors`).
-Replacing `node` itself, if `visit.SKIP` is not returned, still causes its
-[descendant][]s to be visited.
-If adding or removing previous [sibling][]s (or next siblings, in case of
-`reverse`) of `node`, `visitor` should return a new [`index`][index] (`number`)
-to specify the sibling to traverse after `node` is traversed.
-Adding or removing next siblings of `node` (or previous siblings, in case of
-reverse) is handled as expected without needing to return a new `index`.
-Removing the `children` property of parent still results in them being
-traversed.
-
-###### Parameters
-
-* `node` ([`Node`][node]) — Found node
-* `ancestors` (`Array.<Node>`) — [Ancestor][]s of `node`
-
-##### Returns
-
-The return value can have the following forms:
-
-* [`index`][index] (`number`) — Treated as a tuple of `[CONTINUE, index]`
-* `action` (`*`) — Treated as a tuple of `[action]`
-* `tuple` (`Array.<*>`) — List with one or two values, the first an `action`,
- the second and `index`.
- Note that passing a tuple only makes sense if the `action` is `SKIP`.
- If the `action` is `EXIT`, that action can be returned.
- If the `action` is `CONTINUE`, `index` can be returned.
-
-###### `action`
-
-An action can have the following values:
-
-* `visit.EXIT` (`false`) — Stop traversing immediately
-* `visit.CONTINUE` (`true`) — Continue traversing as normal (same behaviour
- as not returning anything)
-* `visit.SKIP` (`'skip'`) — Do not traverse this node’s children; continue
- with the specified index
-
-###### `index`
-
-[`index`][index] (`number`) — Move to the sibling at `index` next (after `node`
-itself is completely traversed).
-Useful if mutating the tree, such as removing the node the visitor is currently
-on, or any of its previous siblings (or next siblings, in case of `reverse`)
-Results less than `0` or greater than or equal to `children.length` stop
-traversing the parent
-
-## Related
-
-* [`unist-util-visit`](https://github.com/syntax-tree/unist-util-visit)
- — Like `visit-parents`, but with one parent
-* [`unist-util-filter`](https://github.com/eush77/unist-util-filter)
- — Create a new tree with all nodes that pass a test
-* [`unist-util-map`](https://github.com/syntax-tree/unist-util-map)
- — Create a new tree with all nodes mapped by a given function
-* [`unist-util-flatmap`](https://gitlab.com/staltz/unist-util-flatmap)
- — Create a new tree by mapping (to an array) with the provided function and
- then flattening
-* [`unist-util-remove`](https://github.com/eush77/unist-util-remove)
- — Remove nodes from a tree that pass a test
-* [`unist-util-select`](https://github.com/eush77/unist-util-select)
- — Select nodes with CSS-like selectors
-
-## 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, organisation, 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-visit-parents.svg
-
-[build]: https://travis-ci.org/syntax-tree/unist-util-visit-parents
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/syntax-tree/unist-util-visit-parents.svg
-
-[coverage]: https://codecov.io/github/syntax-tree/unist-util-visit-parents
-
-[downloads-badge]: https://img.shields.io/npm/dm/unist-util-visit-parents.svg
-
-[downloads]: https://www.npmjs.com/package/unist-util-visit-parents
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/unist-util-visit-parents.svg
-
-[size]: https://bundlephobia.com/result?p=unist-util-visit-parents
-
-[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/join%20the%20community-on%20spectrum-7b16ff.svg
-
-[chat]: https://spectrum.chat/unified/syntax-tree
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
-
-[unist]: https://github.com/syntax-tree/unist
-
-[node]: https://github.com/syntax-tree/unist#node
-
-[visitor]: #next--visitornode-ancestors
-
-[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
-
-[is]: https://github.com/syntax-tree/unist-util-is
-
-[preorder]: https://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder/
-
-[descendant]: https://github.com/syntax-tree/unist#descendant
-
-[head]: https://github.com/syntax-tree/unist#head
-
-[tail]: https://github.com/syntax-tree/unist#tail
-
-[parent]: https://github.com/syntax-tree/unist#parent-1
-
-[sibling]: https://github.com/syntax-tree/unist#sibling
-
-[index]: https://github.com/syntax-tree/unist#index
-
-[ancestor]: https://github.com/syntax-tree/unist#ancestor
-
-[tree]: https://github.com/syntax-tree/unist#tree
-
-[type]: https://github.com/syntax-tree/unist#type
diff --git a/assets/node_modules/unist-util-visit/index.js b/assets/node_modules/unist-util-visit/index.js
deleted file mode 100644
index 39970e7..0000000
--- a/assets/node_modules/unist-util-visit/index.js
+++ /dev/null
@@ -1,29 +0,0 @@
-'use strict'
-
-module.exports = visit
-
-var visitParents = require('unist-util-visit-parents')
-
-var CONTINUE = visitParents.CONTINUE
-var SKIP = visitParents.SKIP
-var EXIT = visitParents.EXIT
-
-visit.CONTINUE = CONTINUE
-visit.SKIP = SKIP
-visit.EXIT = EXIT
-
-function visit(tree, test, visitor, reverse) {
- if (typeof test === 'function' && typeof visitor !== 'function') {
- reverse = visitor
- visitor = test
- test = null
- }
-
- visitParents(tree, test, overload, reverse)
-
- function overload(node, parents) {
- var parent = parents[parents.length - 1]
- var index = parent ? parent.children.indexOf(node) : null
- return visitor(node, index, parent)
- }
-}
diff --git a/assets/node_modules/unist-util-visit/license b/assets/node_modules/unist-util-visit/license
deleted file mode 100644
index 32e7a3d..0000000
--- a/assets/node_modules/unist-util-visit/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/unist-util-visit/package.json b/assets/node_modules/unist-util-visit/package.json
deleted file mode 100644
index 44b8bd4..0000000
--- a/assets/node_modules/unist-util-visit/package.json
+++ /dev/null
@@ -1,79 +0,0 @@
-{
- "name": "unist-util-visit",
- "version": "1.4.1",
- "description": "Recursively walk over unist nodes",
- "license": "MIT",
- "keywords": [
- "unist",
- "remark",
- "markdown",
- "retext",
- "natural",
- "language",
- "node",
- "visit",
- "walk",
- "util",
- "utility"
- ],
- "repository": "syntax-tree/unist-util-visit",
- "bugs": "https://github.com/syntax-tree/unist-util-visit/issues",
- "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
- "contributors": [
- "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
- "Eugene Sharygin <eush77@gmail.com>",
- "Richard Gibson <richard.gibson@gmail.com>"
- ],
- "files": [
- "index.js"
- ],
- "dependencies": {
- "unist-util-visit-parents": "^2.0.0"
- },
- "devDependencies": {
- "browserify": "^16.0.0",
- "nyc": "^14.0.0",
- "prettier": "^1.0.0",
- "remark": "^10.0.0",
- "remark-cli": "^6.0.0",
- "remark-preset-wooorm": "^5.0.0",
- "tape": "^4.0.0",
- "tinyify": "^2.0.0",
- "xo": "^0.24.0"
- },
- "scripts": {
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "build-bundle": "browserify . -s unistUtilVisit > unist-util-visit.js",
- "build-mangle": "browserify . -s unistUtilVisit -p tinyify > unist-util-visit.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"
- },
- "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-visit.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/unist-util-visit/readme.md b/assets/node_modules/unist-util-visit/readme.md
deleted file mode 100644
index 25808a2..0000000
--- a/assets/node_modules/unist-util-visit/readme.md
+++ /dev/null
@@ -1,121 +0,0 @@
-# unist-util-visit
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-[**unist**][unist] utility to visit nodes.
-
-## Install
-
-[npm][]:
-
-```bash
-npm install unist-util-visit
-```
-
-## Usage
-
-```javascript
-var u = require('unist-builder')
-var visit = require('unist-util-visit')
-
-var tree = u('tree', [
- u('leaf', '1'),
- u('node', [u('leaf', '2')]),
- u('void'),
- u('leaf', '3')
-])
-
-visit(tree, 'leaf', function(node) {
- console.log(node)
-})
-```
-
-Yields:
-
-```js
-{ type: 'leaf', value: '1' }
-{ type: 'leaf', value: '2' }
-{ type: 'leaf', value: '3' }
-```
-
-## API
-
-### `visit(tree[, test], visitor[, reverse])`
-
-This function works exactly the same as [`unist-util-visit-parents`][vp],
-but `visitor` has a different signature.
-
-#### `next? = visitor(node, index, parent)`
-
-Instead of being passed an array of ancestors, `visitor` is invoked with the
-node’s [`index`][index] and its [`parent`][parent].
-
-Otherwise the same as [`unist-util-visit-parents`][vp].
-
-## Related
-
-* [`unist-util-visit-parents`][vp]
- — Like `visit`, but with a stack of parents
-* [`unist-util-filter`](https://github.com/eush77/unist-util-filter)
- — Create a new tree with all nodes that pass a test
-* [`unist-util-map`](https://github.com/syntax-tree/unist-util-map)
- — Create a new tree with all nodes mapped by a given function
-* [`unist-util-remove`](https://github.com/eush77/unist-util-remove)
- — Remove nodes from a tree that pass a test
-* [`unist-util-select`](https://github.com/eush77/unist-util-select)
- — Select nodes with CSS-like selectors
-
-## 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, organisation, 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-visit.svg
-
-[build]: https://travis-ci.org/syntax-tree/unist-util-visit
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/syntax-tree/unist-util-visit.svg
-
-[coverage]: https://codecov.io/github/syntax-tree/unist-util-visit
-
-[downloads-badge]: https://img.shields.io/npm/dm/unist-util-visit.svg
-
-[downloads]: https://www.npmjs.com/package/unist-util-visit
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/unist-util-visit.svg
-
-[size]: https://bundlephobia.com/result?p=unist-util-visit
-
-[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
-
-[vp]: https://github.com/syntax-tree/unist-util-visit-parents
-
-[index]: https://github.com/syntax-tree/unist#index
-
-[parent]: https://github.com/syntax-tree/unist#parent-1
diff --git a/assets/node_modules/uri-js/README.md b/assets/node_modules/uri-js/README.md
deleted file mode 100644
index 3f225e7..0000000
--- a/assets/node_modules/uri-js/README.md
+++ /dev/null
@@ -1,199 +0,0 @@
-# URI.js
-
-URI.js is an [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt) compliant, scheme extendable URI parsing/validating/resolving library for all JavaScript environments (browsers, Node.js, etc).
-It is also compliant with the IRI ([RFC 3987](http://www.ietf.org/rfc/rfc3987.txt)), IDNA ([RFC 5890](http://www.ietf.org/rfc/rfc5890.txt)), IPv6 Address ([RFC 5952](http://www.ietf.org/rfc/rfc5952.txt)), IPv6 Zone Identifier ([RFC 6874](http://www.ietf.org/rfc/rfc6874.txt)) specifications.
-
-URI.js has an extensive test suite, and works in all (Node.js, web) environments. It weighs in at 6.2kb (gzipped, 16kb deflated).
-
-## API
-
-### Parsing
-
- URI.parse("uri://user:pass@example.com:123/one/two.three?q1=a1&q2=a2#body");
- //returns:
- //{
- // scheme : "uri",
- // userinfo : "user:pass",
- // host : "example.com",
- // port : 123,
- // path : "/one/two.three",
- // query : "q1=a1&q2=a2",
- // fragment : "body"
- //}
-
-### Serializing
-
- URI.serialize({scheme : "http", host : "example.com", fragment : "footer"}) === "http://example.com/#footer"
-
-### Resolving
-
- URI.resolve("uri://a/b/c/d?q", "../../g") === "uri://a/g"
-
-### Normalizing
-
- URI.normalize("HTTP://ABC.com:80/%7Esmith/home.html") === "http://abc.com/~smith/home.html"
-
-### Comparison
-
- URI.equal("example://a/b/c/%7Bfoo%7D", "eXAMPLE://a/./b/../b/%63/%7bfoo%7d") === true
-
-### IP Support
-
- //IPv4 normalization
- URI.normalize("//192.068.001.000") === "//192.68.1.0"
-
- //IPv6 normalization
- URI.normalize("//[2001:0:0DB8::0:0001]") === "//[2001:0:db8::1]"
-
- //IPv6 zone identifier support
- URI.parse("//[2001:db8::7%25en1]");
- //returns:
- //{
- // host : "2001:db8::7%en1"
- //}
-
-### IRI Support
-
- //convert IRI to URI
- URI.serialize(URI.parse("http://examplé.org/rosé")) === "http://xn--exampl-gva.org/ros%C3%A9"
- //convert URI to IRI
- URI.serialize(URI.parse("http://xn--exampl-gva.org/ros%C3%A9"), {iri:true}) === "http://examplé.org/rosé"
-
-### Options
-
-All of the above functions can accept an additional options argument that is an object that can contain one or more of the following properties:
-
-* `scheme` (string)
-
- Indicates the scheme that the URI should be treated as, overriding the URI's normal scheme parsing behavior.
-
-* `reference` (string)
-
- If set to `"suffix"`, it indicates that the URI is in the suffix format, and the validator will use the option's `scheme` property to determine the URI's scheme.
-
-* `tolerant` (boolean, false)
-
- If set to `true`, the parser will relax URI resolving rules.
-
-* `absolutePath` (boolean, false)
-
- If set to `true`, the serializer will not resolve a relative `path` component.
-
-* `iri` (boolean, false)
-
- If set to `true`, the serializer will unescape non-ASCII characters as per [RFC 3987](http://www.ietf.org/rfc/rfc3987.txt).
-
-* `unicodeSupport` (boolean, false)
-
- If set to `true`, the parser will unescape non-ASCII characters in the parsed output as per [RFC 3987](http://www.ietf.org/rfc/rfc3987.txt).
-
-* `domainHost` (boolean, false)
-
- If set to `true`, the library will treat the `host` component as a domain name, and convert IDNs (International Domain Names) as per [RFC 5891](http://www.ietf.org/rfc/rfc5891.txt).
-
-## Scheme Extendable
-
-URI.js supports inserting custom [scheme](http://en.wikipedia.org/wiki/URI_scheme) dependent processing rules. Currently, URI.js has built in support for the following schemes:
-
-* http \[[RFC 2616](http://www.ietf.org/rfc/rfc2616.txt)\]
-* https \[[RFC 2818](http://www.ietf.org/rfc/rfc2818.txt)\]
-* mailto \[[RFC 6068](http://www.ietf.org/rfc/rfc6068.txt)\]
-* urn \[[RFC 2141](http://www.ietf.org/rfc/rfc2141.txt)\]
-* urn:uuid \[[RFC 4122](http://www.ietf.org/rfc/rfc4122.txt)\]
-
-### HTTP Support
-
- URI.equal("HTTP://ABC.COM:80", "http://abc.com/") === true
-
-### Mailto Support
-
- URI.parse("mailto:alpha@example.com,bravo@example.com?subject=SUBSCRIBE&body=Sign%20me%20up!");
- //returns:
- //{
- // scheme : "mailto",
- // to : ["alpha@example.com", "bravo@example.com"],
- // subject : "SUBSCRIBE",
- // body : "Sign me up!"
- //}
-
- URI.serialize({
- scheme : "mailto",
- to : ["alpha@example.com"],
- subject : "REMOVE",
- body : "Please remove me",
- headers : {
- cc : "charlie@example.com"
- }
- }) === "mailto:alpha@example.com?cc=charlie@example.com&subject=REMOVE&body=Please%20remove%20me"
-
-### URN Support
-
- URI.parse("urn:example:foo");
- //returns:
- //{
- // scheme : "urn",
- // nid : "example",
- // nss : "foo",
- //}
-
-#### URN UUID Support
-
- URI.parse("urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6");
- //returns:
- //{
- // scheme : "urn",
- // nid : "example",
- // uuid : "f81d4fae-7dec-11d0-a765-00a0c91e6bf6",
- //}
-
-## Usage
-
-To load in a browser, use the following tag:
-
- <script type="text/javascript" src="uri-js/dist/es5/uri.all.min.js"></script>
-
-To load in a CommonJS (Node.js) environment, first install with npm by running on the command line:
-
- npm install uri-js
-
-Then, in your code, load it using:
-
- const URI = require("uri-js");
-
-If you are writing your code in ES6+ (ESNEXT) or TypeScript, you would load it using:
-
- import * as URI from "uri-js";
-
-Or you can load just what you need using named exports:
-
- import { parse, serialize, resolve, resolveComponents, normalize, equal, removeDotSegments, pctEncChar, pctDecChars, escapeComponent, unescapeComponent } from "uri-js";
-
-## Breaking changes
-
-### Breaking changes from 3.x
-
-URN parsing has been completely changed to better align with the specification. Scheme is now always `urn`, but has two new properties: `nid` which contains the Namspace Identifier, and `nss` which contains the Namespace Specific String. The `nss` property will be removed by higher order scheme handlers, such as the UUID URN scheme handler.
-
-The UUID of a URN can now be found in the `uuid` property.
-
-### Breaking changes from 2.x
-
-URI validation has been removed as it was slow, exposed a vulnerabilty, and was generally not useful.
-
-### Breaking changes from 1.x
-
-The `errors` array on parsed components is now an `error` string.
-
-## License ([Simplified BSD](http://en.wikipedia.org/wiki/BSD_licenses#2-clause))
-
-Copyright 2011 Gary Court. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
-2. 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 GARY COURT "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 GARY COURT 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.
-
-The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of Gary Court.
diff --git a/assets/node_modules/uri-js/bower.json b/assets/node_modules/uri-js/bower.json
deleted file mode 100644
index 7a40440..0000000
--- a/assets/node_modules/uri-js/bower.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "name": "uri-js",
- "description": "An RFC 3986/3987 compliant, scheme extendable URI/IRI parsing/validating/resolving library for JavaScript.",
- "main": "dist/es5/uri.all.js",
- "moduleType": [
- "globals",
- "amd",
- "node",
- "es6"
- ],
- "authors": [
- "Gary Court <gary.court@gmail.com>"
- ],
- "license": "BSD-2-Clause",
- "keywords": [
- "URI",
- "IRI",
- "IDN",
- "URN",
- "HTTP",
- "HTTPS",
- "MAILTO",
- "RFC3986",
- "RFC3987",
- "RFC5891",
- "RFC2616",
- "RFC2818",
- "RFC2141",
- "RFC4122",
- "RFC6068"
- ],
- "homepage": "https://github.com/garycourt/uri-js",
- "repository": {
- "type": "git",
- "url": "http://github.com/garycourt/uri-js"
- },
- "dependencies": {
- "punycode": "^2.1.0"
- },
- "ignore": [
- "**/.*",
- "node_modules",
- "bower_components",
- "test",
- "tests"
- ]
-}
diff --git a/assets/node_modules/uri-js/dist/es5/uri.all.d.ts b/assets/node_modules/uri-js/dist/es5/uri.all.d.ts
deleted file mode 100644
index 320f534..0000000
--- a/assets/node_modules/uri-js/dist/es5/uri.all.d.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-export interface URIComponents {
- scheme?: string;
- userinfo?: string;
- host?: string;
- port?: number | string;
- path?: string;
- query?: string;
- fragment?: string;
- reference?: string;
- error?: string;
-}
-export interface URIOptions {
- scheme?: string;
- reference?: string;
- tolerant?: boolean;
- absolutePath?: boolean;
- iri?: boolean;
- unicodeSupport?: boolean;
- domainHost?: boolean;
-}
-export interface URISchemeHandler<Components extends URIComponents = URIComponents, Options extends URIOptions = URIOptions, ParentComponents extends URIComponents = URIComponents> {
- scheme: string;
- parse(components: ParentComponents, options: Options): Components;
- serialize(components: Components, options: Options): ParentComponents;
- unicodeSupport?: boolean;
- domainHost?: boolean;
- absolutePath?: boolean;
-}
-export interface URIRegExps {
- NOT_SCHEME: RegExp;
- NOT_USERINFO: RegExp;
- NOT_HOST: RegExp;
- NOT_PATH: RegExp;
- NOT_PATH_NOSCHEME: RegExp;
- NOT_QUERY: RegExp;
- NOT_FRAGMENT: RegExp;
- ESCAPE: RegExp;
- UNRESERVED: RegExp;
- OTHER_CHARS: RegExp;
- PCT_ENCODED: RegExp;
- IPV4ADDRESS: RegExp;
- IPV6ADDRESS: RegExp;
-}
-export declare const SCHEMES: {
- [scheme: string]: URISchemeHandler;
-};
-export declare function pctEncChar(chr: string): string;
-export declare function pctDecChars(str: string): string;
-export declare function parse(uriString: string, options?: URIOptions): URIComponents;
-export declare function removeDotSegments(input: string): string;
-export declare function serialize(components: URIComponents, options?: URIOptions): string;
-export declare function resolveComponents(base: URIComponents, relative: URIComponents, options?: URIOptions, skipNormalization?: boolean): URIComponents;
-export declare function resolve(baseURI: string, relativeURI: string, options?: URIOptions): string;
-export declare function normalize(uri: string, options?: URIOptions): string;
-export declare function normalize(uri: URIComponents, options?: URIOptions): URIComponents;
-export declare function equal(uriA: string, uriB: string, options?: URIOptions): boolean;
-export declare function equal(uriA: URIComponents, uriB: URIComponents, options?: URIOptions): boolean;
-export declare function escapeComponent(str: string, options?: URIOptions): string;
-export declare function unescapeComponent(str: string, options?: URIOptions): string;
diff --git a/assets/node_modules/uri-js/dist/es5/uri.all.js b/assets/node_modules/uri-js/dist/es5/uri.all.js
deleted file mode 100644
index 2df0609..0000000
--- a/assets/node_modules/uri-js/dist/es5/uri.all.js
+++ /dev/null
@@ -1,1389 +0,0 @@
-/** @license URI.js v4.2.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */
-(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
- typeof define === 'function' && define.amd ? define(['exports'], factory) :
- (factory((global.URI = global.URI || {})));
-}(this, (function (exports) { 'use strict';
-
-function merge() {
- for (var _len = arguments.length, sets = Array(_len), _key = 0; _key < _len; _key++) {
- sets[_key] = arguments[_key];
- }
-
- if (sets.length > 1) {
- sets[0] = sets[0].slice(0, -1);
- var xl = sets.length - 1;
- for (var x = 1; x < xl; ++x) {
- sets[x] = sets[x].slice(1, -1);
- }
- sets[xl] = sets[xl].slice(1);
- return sets.join('');
- } else {
- return sets[0];
- }
-}
-function subexp(str) {
- return "(?:" + str + ")";
-}
-function typeOf(o) {
- return o === undefined ? "undefined" : o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase();
-}
-function toUpperCase(str) {
- return str.toUpperCase();
-}
-function toArray(obj) {
- return obj !== undefined && obj !== null ? obj instanceof Array ? obj : typeof obj.length !== "number" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj) : [];
-}
-function assign(target, source) {
- var obj = target;
- if (source) {
- for (var key in source) {
- obj[key] = source[key];
- }
- }
- return obj;
-}
-
-function buildExps(isIRI) {
- var ALPHA$$ = "[A-Za-z]",
- CR$ = "[\\x0D]",
- DIGIT$$ = "[0-9]",
- DQUOTE$$ = "[\\x22]",
- HEXDIG$$ = merge(DIGIT$$, "[A-Fa-f]"),
- //case-insensitive
- LF$$ = "[\\x0A]",
- SP$$ = "[\\x20]",
- PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)),
- //expanded
- GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]",
- SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]",
- RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),
- UCSCHAR$$ = isIRI ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]",
- //subset, excludes bidi control characters
- IPRIVATE$$ = isIRI ? "[\\uE000-\\uF8FF]" : "[]",
- //subset
- UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$),
- SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"),
- USERINFO$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]")) + "*"),
- DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$),
- DEC_OCTET_RELAXED$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("0?[1-9]" + DIGIT$$) + "|0?0?" + DIGIT$$),
- //relaxed parsing rules
- IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$),
- H16$ = subexp(HEXDIG$$ + "{1,4}"),
- LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$),
- IPV6ADDRESS1$ = subexp(subexp(H16$ + "\\:") + "{6}" + LS32$),
- // 6( h16 ":" ) ls32
- IPV6ADDRESS2$ = subexp("\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$),
- // "::" 5( h16 ":" ) ls32
- IPV6ADDRESS3$ = subexp(subexp(H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$),
- //[ h16 ] "::" 4( h16 ":" ) ls32
- IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$),
- //[ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32
- IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$),
- //[ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32
- IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$),
- //[ *3( h16 ":" ) h16 ] "::" h16 ":" ls32
- IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$),
- //[ *4( h16 ":" ) h16 ] "::" ls32
- IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$),
- //[ *5( h16 ":" ) h16 ] "::" h16
- IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:"),
- //[ *6( h16 ":" ) h16 ] "::"
- IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")),
- ZONEID$ = subexp(subexp(UNRESERVED$$ + "|" + PCT_ENCODED$) + "+"),
- //RFC 6874
- IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$),
- //RFC 6874
- IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + ZONEID$),
- //RFC 6874, with relaxed parsing rules
- IPVFUTURE$ = subexp("[vV]" + HEXDIG$$ + "+\\." + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]") + "+"),
- IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"),
- //RFC 6874
- REG_NAME$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$)) + "*"),
- HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")" + "|" + REG_NAME$),
- PORT$ = subexp(DIGIT$$ + "*"),
- AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"),
- PCHAR$ = subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@]")),
- SEGMENT$ = subexp(PCHAR$ + "*"),
- SEGMENT_NZ$ = subexp(PCHAR$ + "+"),
- SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\@]")) + "+"),
- PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"),
- PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"),
- //simplified
- PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$),
- //simplified
- PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$),
- //simplified
- PATH_EMPTY$ = "(?!" + PCHAR$ + ")",
- PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$),
- QUERY$ = subexp(subexp(PCHAR$ + "|" + merge("[\\/\\?]", IPRIVATE$$)) + "*"),
- FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"),
- HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$),
- URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"),
- RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$),
- RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"),
- URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$),
- ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"),
- GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$",
- RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$",
- ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$",
- SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$",
- AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$";
- return {
- NOT_SCHEME: new RegExp(merge("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"),
- NOT_USERINFO: new RegExp(merge("[^\\%\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_HOST: new RegExp(merge("[^\\%\\[\\]\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_PATH: new RegExp(merge("[^\\%\\/\\:\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_PATH_NOSCHEME: new RegExp(merge("[^\\%\\/\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_QUERY: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"),
- NOT_FRAGMENT: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"),
- ESCAPE: new RegExp(merge("[^]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- UNRESERVED: new RegExp(UNRESERVED$$, "g"),
- OTHER_CHARS: new RegExp(merge("[^\\%]", UNRESERVED$$, RESERVED$$), "g"),
- PCT_ENCODED: new RegExp(PCT_ENCODED$, "g"),
- IPV4ADDRESS: new RegExp("^(" + IPV4ADDRESS$ + ")$"),
- IPV6ADDRESS: new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules
- };
-}
-var URI_PROTOCOL = buildExps(false);
-
-var IRI_PROTOCOL = buildExps(true);
-
-var slicedToArray = function () {
- function sliceIterator(arr, i) {
- var _arr = [];
- var _n = true;
- var _d = false;
- var _e = undefined;
-
- try {
- for (var _i = arr[Symbol.iterator](), _s; !(_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"]) _i["return"]();
- } finally {
- if (_d) throw _e;
- }
- }
-
- return _arr;
- }
-
- return function (arr, i) {
- if (Array.isArray(arr)) {
- return arr;
- } else if (Symbol.iterator in Object(arr)) {
- return sliceIterator(arr, i);
- } else {
- throw new TypeError("Invalid attempt to destructure non-iterable instance");
- }
- };
-}();
-
-
-
-
-
-
-
-
-
-
-
-
-
-var toConsumableArray = function (arr) {
- if (Array.isArray(arr)) {
- for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
-
- return arr2;
- } else {
- return Array.from(arr);
- }
-};
-
-/** Highest positive signed 32-bit float value */
-
-var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1
-
-/** Bootstring parameters */
-var base = 36;
-var tMin = 1;
-var tMax = 26;
-var skew = 38;
-var damp = 700;
-var initialBias = 72;
-var initialN = 128; // 0x80
-var delimiter = '-'; // '\x2D'
-
-/** Regular expressions */
-var regexPunycode = /^xn--/;
-var regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars
-var regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators
-
-/** Error messages */
-var errors = {
- 'overflow': 'Overflow: input needs wider integers to process',
- 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
- 'invalid-input': 'Invalid input'
-};
-
-/** Convenience shortcuts */
-var baseMinusTMin = base - tMin;
-var floor = Math.floor;
-var stringFromCharCode = String.fromCharCode;
-
-/*--------------------------------------------------------------------------*/
-
-/**
- * A generic error utility function.
- * @private
- * @param {String} type The error type.
- * @returns {Error} Throws a `RangeError` with the applicable error message.
- */
-function error$1(type) {
- throw new RangeError(errors[type]);
-}
-
-/**
- * A generic `Array#map` utility function.
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} callback The function that gets called for every array
- * item.
- * @returns {Array} A new array of values returned by the callback function.
- */
-function map(array, fn) {
- var result = [];
- var length = array.length;
- while (length--) {
- result[length] = fn(array[length]);
- }
- return result;
-}
-
-/**
- * A simple `Array#map`-like wrapper to work with domain name strings or email
- * addresses.
- * @private
- * @param {String} domain The domain name or email address.
- * @param {Function} callback The function that gets called for every
- * character.
- * @returns {Array} A new string of characters returned by the callback
- * function.
- */
-function mapDomain(string, fn) {
- var parts = string.split('@');
- var result = '';
- if (parts.length > 1) {
- // In email addresses, only the domain name should be punycoded. Leave
- // the local part (i.e. everything up to `@`) intact.
- result = parts[0] + '@';
- string = parts[1];
- }
- // Avoid `split(regex)` for IE8 compatibility. See #17.
- string = string.replace(regexSeparators, '\x2E');
- var labels = string.split('.');
- var encoded = map(labels, fn).join('.');
- return result + encoded;
-}
-
-/**
- * Creates an array containing the numeric code points of each Unicode
- * character in the string. While JavaScript uses UCS-2 internally,
- * this function will convert a pair of surrogate halves (each of which
- * UCS-2 exposes as separate characters) into a single code point,
- * matching UTF-16.
- * @see `punycode.ucs2.encode`
- * @see <https://mathiasbynens.be/notes/javascript-encoding>
- * @memberOf punycode.ucs2
- * @name decode
- * @param {String} string The Unicode input string (UCS-2).
- * @returns {Array} The new array of code points.
- */
-function ucs2decode(string) {
- var output = [];
- var counter = 0;
- var length = string.length;
- while (counter < length) {
- var value = string.charCodeAt(counter++);
- if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
- // It's a high surrogate, and there is a next character.
- var extra = string.charCodeAt(counter++);
- if ((extra & 0xFC00) == 0xDC00) {
- // Low surrogate.
- output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
- } else {
- // It's an unmatched surrogate; only append this code unit, in case the
- // next code unit is the high surrogate of a surrogate pair.
- output.push(value);
- counter--;
- }
- } else {
- output.push(value);
- }
- }
- return output;
-}
-
-/**
- * Creates a string based on an array of numeric code points.
- * @see `punycode.ucs2.decode`
- * @memberOf punycode.ucs2
- * @name encode
- * @param {Array} codePoints The array of numeric code points.
- * @returns {String} The new Unicode string (UCS-2).
- */
-var ucs2encode = function ucs2encode(array) {
- return String.fromCodePoint.apply(String, toConsumableArray(array));
-};
-
-/**
- * Converts a basic code point into a digit/integer.
- * @see `digitToBasic()`
- * @private
- * @param {Number} codePoint The basic numeric code point value.
- * @returns {Number} The numeric value of a basic code point (for use in
- * representing integers) in the range `0` to `base - 1`, or `base` if
- * the code point does not represent a value.
- */
-var basicToDigit = function basicToDigit(codePoint) {
- if (codePoint - 0x30 < 0x0A) {
- return codePoint - 0x16;
- }
- if (codePoint - 0x41 < 0x1A) {
- return codePoint - 0x41;
- }
- if (codePoint - 0x61 < 0x1A) {
- return codePoint - 0x61;
- }
- return base;
-};
-
-/**
- * Converts a digit/integer into a basic code point.
- * @see `basicToDigit()`
- * @private
- * @param {Number} digit The numeric value of a basic code point.
- * @returns {Number} The basic code point whose value (when used for
- * representing integers) is `digit`, which needs to be in the range
- * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
- * used; else, the lowercase form is used. The behavior is undefined
- * if `flag` is non-zero and `digit` has no uppercase form.
- */
-var digitToBasic = function digitToBasic(digit, flag) {
- // 0..25 map to ASCII a..z or A..Z
- // 26..35 map to ASCII 0..9
- return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
-};
-
-/**
- * Bias adaptation function as per section 3.4 of RFC 3492.
- * https://tools.ietf.org/html/rfc3492#section-3.4
- * @private
- */
-var adapt = function adapt(delta, numPoints, firstTime) {
- var k = 0;
- delta = firstTime ? floor(delta / damp) : delta >> 1;
- delta += floor(delta / numPoints);
- for (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) {
- delta = floor(delta / baseMinusTMin);
- }
- return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
-};
-
-/**
- * Converts a Punycode string of ASCII-only symbols to a string of Unicode
- * symbols.
- * @memberOf punycode
- * @param {String} input The Punycode string of ASCII-only symbols.
- * @returns {String} The resulting string of Unicode symbols.
- */
-var decode = function decode(input) {
- // Don't use UCS-2.
- var output = [];
- var inputLength = input.length;
- var i = 0;
- var n = initialN;
- var bias = initialBias;
-
- // Handle the basic code points: let `basic` be the number of input code
- // points before the last delimiter, or `0` if there is none, then copy
- // the first basic code points to the output.
-
- var basic = input.lastIndexOf(delimiter);
- if (basic < 0) {
- basic = 0;
- }
-
- for (var j = 0; j < basic; ++j) {
- // if it's not a basic code point
- if (input.charCodeAt(j) >= 0x80) {
- error$1('not-basic');
- }
- output.push(input.charCodeAt(j));
- }
-
- // Main decoding loop: start just after the last delimiter if any basic code
- // points were copied; start at the beginning otherwise.
-
- for (var index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{
-
- // `index` is the index of the next character to be consumed.
- // Decode a generalized variable-length integer into `delta`,
- // which gets added to `i`. The overflow checking is easier
- // if we increase `i` as we go, then subtract off its starting
- // value at the end to obtain `delta`.
- var oldi = i;
- for (var w = 1, k = base;; /* no condition */k += base) {
-
- if (index >= inputLength) {
- error$1('invalid-input');
- }
-
- var digit = basicToDigit(input.charCodeAt(index++));
-
- if (digit >= base || digit > floor((maxInt - i) / w)) {
- error$1('overflow');
- }
-
- i += digit * w;
- var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
-
- if (digit < t) {
- break;
- }
-
- var baseMinusT = base - t;
- if (w > floor(maxInt / baseMinusT)) {
- error$1('overflow');
- }
-
- w *= baseMinusT;
- }
-
- var out = output.length + 1;
- bias = adapt(i - oldi, out, oldi == 0);
-
- // `i` was supposed to wrap around from `out` to `0`,
- // incrementing `n` each time, so we'll fix that now:
- if (floor(i / out) > maxInt - n) {
- error$1('overflow');
- }
-
- n += floor(i / out);
- i %= out;
-
- // Insert `n` at position `i` of the output.
- output.splice(i++, 0, n);
- }
-
- return String.fromCodePoint.apply(String, output);
-};
-
-/**
- * Converts a string of Unicode symbols (e.g. a domain name label) to a
- * Punycode string of ASCII-only symbols.
- * @memberOf punycode
- * @param {String} input The string of Unicode symbols.
- * @returns {String} The resulting Punycode string of ASCII-only symbols.
- */
-var encode = function encode(input) {
- var output = [];
-
- // Convert the input in UCS-2 to an array of Unicode code points.
- input = ucs2decode(input);
-
- // Cache the length.
- var inputLength = input.length;
-
- // Initialize the state.
- var n = initialN;
- var delta = 0;
- var bias = initialBias;
-
- // Handle the basic code points.
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var _currentValue2 = _step.value;
-
- if (_currentValue2 < 0x80) {
- output.push(stringFromCharCode(_currentValue2));
- }
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-
- var basicLength = output.length;
- var handledCPCount = basicLength;
-
- // `handledCPCount` is the number of code points that have been handled;
- // `basicLength` is the number of basic code points.
-
- // Finish the basic string with a delimiter unless it's empty.
- if (basicLength) {
- output.push(delimiter);
- }
-
- // Main encoding loop:
- while (handledCPCount < inputLength) {
-
- // All non-basic code points < n have been handled already. Find the next
- // larger one:
- var m = maxInt;
- var _iteratorNormalCompletion2 = true;
- var _didIteratorError2 = false;
- var _iteratorError2 = undefined;
-
- try {
- for (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
- var currentValue = _step2.value;
-
- if (currentValue >= n && currentValue < m) {
- m = currentValue;
- }
- }
-
- // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
- // but guard against overflow.
- } catch (err) {
- _didIteratorError2 = true;
- _iteratorError2 = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion2 && _iterator2.return) {
- _iterator2.return();
- }
- } finally {
- if (_didIteratorError2) {
- throw _iteratorError2;
- }
- }
- }
-
- var handledCPCountPlusOne = handledCPCount + 1;
- if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
- error$1('overflow');
- }
-
- delta += (m - n) * handledCPCountPlusOne;
- n = m;
-
- var _iteratorNormalCompletion3 = true;
- var _didIteratorError3 = false;
- var _iteratorError3 = undefined;
-
- try {
- for (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
- var _currentValue = _step3.value;
-
- if (_currentValue < n && ++delta > maxInt) {
- error$1('overflow');
- }
- if (_currentValue == n) {
- // Represent delta as a generalized variable-length integer.
- var q = delta;
- for (var k = base;; /* no condition */k += base) {
- var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
- if (q < t) {
- break;
- }
- var qMinusT = q - t;
- var baseMinusT = base - t;
- output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));
- q = floor(qMinusT / baseMinusT);
- }
-
- output.push(stringFromCharCode(digitToBasic(q, 0)));
- bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
- delta = 0;
- ++handledCPCount;
- }
- }
- } catch (err) {
- _didIteratorError3 = true;
- _iteratorError3 = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion3 && _iterator3.return) {
- _iterator3.return();
- }
- } finally {
- if (_didIteratorError3) {
- throw _iteratorError3;
- }
- }
- }
-
- ++delta;
- ++n;
- }
- return output.join('');
-};
-
-/**
- * Converts a Punycode string representing a domain name or an email address
- * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
- * it doesn't matter if you call it on a string that has already been
- * converted to Unicode.
- * @memberOf punycode
- * @param {String} input The Punycoded domain name or email address to
- * convert to Unicode.
- * @returns {String} The Unicode representation of the given Punycode
- * string.
- */
-var toUnicode = function toUnicode(input) {
- return mapDomain(input, function (string) {
- return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;
- });
-};
-
-/**
- * Converts a Unicode string representing a domain name or an email address to
- * Punycode. Only the non-ASCII parts of the domain name will be converted,
- * i.e. it doesn't matter if you call it with a domain that's already in
- * ASCII.
- * @memberOf punycode
- * @param {String} input The domain name or email address to convert, as a
- * Unicode string.
- * @returns {String} The Punycode representation of the given domain name or
- * email address.
- */
-var toASCII = function toASCII(input) {
- return mapDomain(input, function (string) {
- return regexNonASCII.test(string) ? 'xn--' + encode(string) : string;
- });
-};
-
-/*--------------------------------------------------------------------------*/
-
-/** Define the public API */
-var punycode = {
- /**
- * A string representing the current Punycode.js version number.
- * @memberOf punycode
- * @type String
- */
- 'version': '2.1.0',
- /**
- * An object of methods to convert from JavaScript's internal character
- * representation (UCS-2) to Unicode code points, and back.
- * @see <https://mathiasbynens.be/notes/javascript-encoding>
- * @memberOf punycode
- * @type Object
- */
- 'ucs2': {
- 'decode': ucs2decode,
- 'encode': ucs2encode
- },
- 'decode': decode,
- 'encode': encode,
- 'toASCII': toASCII,
- 'toUnicode': toUnicode
-};
-
-/**
- * URI.js
- *
- * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.
- * @author <a href="mailto:gary.court@gmail.com">Gary Court</a>
- * @see http://github.com/garycourt/uri-js
- */
-/**
- * Copyright 2011 Gary Court. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. 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 GARY COURT ``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 GARY COURT 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.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of Gary Court.
- */
-var SCHEMES = {};
-function pctEncChar(chr) {
- var c = chr.charCodeAt(0);
- var e = void 0;
- if (c < 16) e = "%0" + c.toString(16).toUpperCase();else if (c < 128) e = "%" + c.toString(16).toUpperCase();else if (c < 2048) e = "%" + (c >> 6 | 192).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase();else e = "%" + (c >> 12 | 224).toString(16).toUpperCase() + "%" + (c >> 6 & 63 | 128).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase();
- return e;
-}
-function pctDecChars(str) {
- var newStr = "";
- var i = 0;
- var il = str.length;
- while (i < il) {
- var c = parseInt(str.substr(i + 1, 2), 16);
- if (c < 128) {
- newStr += String.fromCharCode(c);
- i += 3;
- } else if (c >= 194 && c < 224) {
- if (il - i >= 6) {
- var c2 = parseInt(str.substr(i + 4, 2), 16);
- newStr += String.fromCharCode((c & 31) << 6 | c2 & 63);
- } else {
- newStr += str.substr(i, 6);
- }
- i += 6;
- } else if (c >= 224) {
- if (il - i >= 9) {
- var _c = parseInt(str.substr(i + 4, 2), 16);
- var c3 = parseInt(str.substr(i + 7, 2), 16);
- newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63);
- } else {
- newStr += str.substr(i, 9);
- }
- i += 9;
- } else {
- newStr += str.substr(i, 3);
- i += 3;
- }
- }
- return newStr;
-}
-function _normalizeComponentEncoding(components, protocol) {
- function decodeUnreserved(str) {
- var decStr = pctDecChars(str);
- return !decStr.match(protocol.UNRESERVED) ? str : decStr;
- }
- if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, "");
- if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- return components;
-}
-
-function _stripLeadingZeros(str) {
- return str.replace(/^0*(.*)/, "$1") || "0";
-}
-function _normalizeIPv4(host, protocol) {
- var matches = host.match(protocol.IPV4ADDRESS) || [];
-
- var _matches = slicedToArray(matches, 2),
- address = _matches[1];
-
- if (address) {
- return address.split(".").map(_stripLeadingZeros).join(".");
- } else {
- return host;
- }
-}
-function _normalizeIPv6(host, protocol) {
- var matches = host.match(protocol.IPV6ADDRESS) || [];
-
- var _matches2 = slicedToArray(matches, 3),
- address = _matches2[1],
- zone = _matches2[2];
-
- if (address) {
- var _address$toLowerCase$ = address.toLowerCase().split('::').reverse(),
- _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2),
- last = _address$toLowerCase$2[0],
- first = _address$toLowerCase$2[1];
-
- var firstFields = first ? first.split(":").map(_stripLeadingZeros) : [];
- var lastFields = last.split(":").map(_stripLeadingZeros);
- var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);
- var fieldCount = isLastFieldIPv4Address ? 7 : 8;
- var lastFieldsStart = lastFields.length - fieldCount;
- var fields = Array(fieldCount);
- for (var x = 0; x < fieldCount; ++x) {
- fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';
- }
- if (isLastFieldIPv4Address) {
- fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);
- }
- var allZeroFields = fields.reduce(function (acc, field, index) {
- if (!field || field === "0") {
- var lastLongest = acc[acc.length - 1];
- if (lastLongest && lastLongest.index + lastLongest.length === index) {
- lastLongest.length++;
- } else {
- acc.push({ index: index, length: 1 });
- }
- }
- return acc;
- }, []);
- var longestZeroFields = allZeroFields.sort(function (a, b) {
- return b.length - a.length;
- })[0];
- var newHost = void 0;
- if (longestZeroFields && longestZeroFields.length > 1) {
- var newFirst = fields.slice(0, longestZeroFields.index);
- var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);
- newHost = newFirst.join(":") + "::" + newLast.join(":");
- } else {
- newHost = fields.join(":");
- }
- if (zone) {
- newHost += "%" + zone;
- }
- return newHost;
- } else {
- return host;
- }
-}
-var URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i;
-var NO_MATCH_IS_UNDEFINED = "".match(/(){0}/)[1] === undefined;
-function parse(uriString) {
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- var components = {};
- var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;
- if (options.reference === "suffix") uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString;
- var matches = uriString.match(URI_PARSE);
- if (matches) {
- if (NO_MATCH_IS_UNDEFINED) {
- //store each component
- components.scheme = matches[1];
- components.userinfo = matches[3];
- components.host = matches[4];
- components.port = parseInt(matches[5], 10);
- components.path = matches[6] || "";
- components.query = matches[7];
- components.fragment = matches[8];
- //fix port number
- if (isNaN(components.port)) {
- components.port = matches[5];
- }
- } else {
- //IE FIX for improper RegExp matching
- //store each component
- components.scheme = matches[1] || undefined;
- components.userinfo = uriString.indexOf("@") !== -1 ? matches[3] : undefined;
- components.host = uriString.indexOf("//") !== -1 ? matches[4] : undefined;
- components.port = parseInt(matches[5], 10);
- components.path = matches[6] || "";
- components.query = uriString.indexOf("?") !== -1 ? matches[7] : undefined;
- components.fragment = uriString.indexOf("#") !== -1 ? matches[8] : undefined;
- //fix port number
- if (isNaN(components.port)) {
- components.port = uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : undefined;
- }
- }
- if (components.host) {
- //normalize IP hosts
- components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);
- }
- //determine reference type
- if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {
- components.reference = "same-document";
- } else if (components.scheme === undefined) {
- components.reference = "relative";
- } else if (components.fragment === undefined) {
- components.reference = "absolute";
- } else {
- components.reference = "uri";
- }
- //check for reference errors
- if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) {
- components.error = components.error || "URI is not a " + options.reference + " reference.";
- }
- //find scheme handler
- var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()];
- //check if scheme can't handle IRIs
- if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {
- //if host component is a domain name
- if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) {
- //convert Unicode IDN -> ASCII IDN
- try {
- components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());
- } catch (e) {
- components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e;
- }
- }
- //convert IRI -> URI
- _normalizeComponentEncoding(components, URI_PROTOCOL);
- } else {
- //normalize encodings
- _normalizeComponentEncoding(components, protocol);
- }
- //perform scheme specific parsing
- if (schemeHandler && schemeHandler.parse) {
- schemeHandler.parse(components, options);
- }
- } else {
- components.error = components.error || "URI can not be parsed.";
- }
- return components;
-}
-
-function _recomposeAuthority(components, options) {
- var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;
- var uriTokens = [];
- if (components.userinfo !== undefined) {
- uriTokens.push(components.userinfo);
- uriTokens.push("@");
- }
- if (components.host !== undefined) {
- //normalize IP hosts, add brackets and escape zone separator for IPv6
- uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function (_, $1, $2) {
- return "[" + $1 + ($2 ? "%25" + $2 : "") + "]";
- }));
- }
- if (typeof components.port === "number") {
- uriTokens.push(":");
- uriTokens.push(components.port.toString(10));
- }
- return uriTokens.length ? uriTokens.join("") : undefined;
-}
-
-var RDS1 = /^\.\.?\//;
-var RDS2 = /^\/\.(\/|$)/;
-var RDS3 = /^\/\.\.(\/|$)/;
-var RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/;
-function removeDotSegments(input) {
- var output = [];
- while (input.length) {
- if (input.match(RDS1)) {
- input = input.replace(RDS1, "");
- } else if (input.match(RDS2)) {
- input = input.replace(RDS2, "/");
- } else if (input.match(RDS3)) {
- input = input.replace(RDS3, "/");
- output.pop();
- } else if (input === "." || input === "..") {
- input = "";
- } else {
- var im = input.match(RDS5);
- if (im) {
- var s = im[0];
- input = input.slice(s.length);
- output.push(s);
- } else {
- throw new Error("Unexpected dot segment condition");
- }
- }
- }
- return output.join("");
-}
-
-function serialize(components) {
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL;
- var uriTokens = [];
- //find scheme handler
- var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()];
- //perform scheme specific serialization
- if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);
- if (components.host) {
- //if host component is an IPv6 address
- if (protocol.IPV6ADDRESS.test(components.host)) {}
- //TODO: normalize IPv6 address as per RFC 5952
-
- //if host component is a domain name
- else if (options.domainHost || schemeHandler && schemeHandler.domainHost) {
- //convert IDN via punycode
- try {
- components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host);
- } catch (e) {
- components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e;
- }
- }
- }
- //normalize encoding
- _normalizeComponentEncoding(components, protocol);
- if (options.reference !== "suffix" && components.scheme) {
- uriTokens.push(components.scheme);
- uriTokens.push(":");
- }
- var authority = _recomposeAuthority(components, options);
- if (authority !== undefined) {
- if (options.reference !== "suffix") {
- uriTokens.push("//");
- }
- uriTokens.push(authority);
- if (components.path && components.path.charAt(0) !== "/") {
- uriTokens.push("/");
- }
- }
- if (components.path !== undefined) {
- var s = components.path;
- if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {
- s = removeDotSegments(s);
- }
- if (authority === undefined) {
- s = s.replace(/^\/\//, "/%2F"); //don't allow the path to start with "//"
- }
- uriTokens.push(s);
- }
- if (components.query !== undefined) {
- uriTokens.push("?");
- uriTokens.push(components.query);
- }
- if (components.fragment !== undefined) {
- uriTokens.push("#");
- uriTokens.push(components.fragment);
- }
- return uriTokens.join(""); //merge tokens into a string
-}
-
-function resolveComponents(base, relative) {
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
- var skipNormalization = arguments[3];
-
- var target = {};
- if (!skipNormalization) {
- base = parse(serialize(base, options), options); //normalize base components
- relative = parse(serialize(relative, options), options); //normalize relative components
- }
- options = options || {};
- if (!options.tolerant && relative.scheme) {
- target.scheme = relative.scheme;
- //target.authority = relative.authority;
- target.userinfo = relative.userinfo;
- target.host = relative.host;
- target.port = relative.port;
- target.path = removeDotSegments(relative.path || "");
- target.query = relative.query;
- } else {
- if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {
- //target.authority = relative.authority;
- target.userinfo = relative.userinfo;
- target.host = relative.host;
- target.port = relative.port;
- target.path = removeDotSegments(relative.path || "");
- target.query = relative.query;
- } else {
- if (!relative.path) {
- target.path = base.path;
- if (relative.query !== undefined) {
- target.query = relative.query;
- } else {
- target.query = base.query;
- }
- } else {
- if (relative.path.charAt(0) === "/") {
- target.path = removeDotSegments(relative.path);
- } else {
- if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {
- target.path = "/" + relative.path;
- } else if (!base.path) {
- target.path = relative.path;
- } else {
- target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path;
- }
- target.path = removeDotSegments(target.path);
- }
- target.query = relative.query;
- }
- //target.authority = base.authority;
- target.userinfo = base.userinfo;
- target.host = base.host;
- target.port = base.port;
- }
- target.scheme = base.scheme;
- }
- target.fragment = relative.fragment;
- return target;
-}
-
-function resolve(baseURI, relativeURI, options) {
- var schemelessOptions = assign({ scheme: 'null' }, options);
- return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);
-}
-
-function normalize(uri, options) {
- if (typeof uri === "string") {
- uri = serialize(parse(uri, options), options);
- } else if (typeOf(uri) === "object") {
- uri = parse(serialize(uri, options), options);
- }
- return uri;
-}
-
-function equal(uriA, uriB, options) {
- if (typeof uriA === "string") {
- uriA = serialize(parse(uriA, options), options);
- } else if (typeOf(uriA) === "object") {
- uriA = serialize(uriA, options);
- }
- if (typeof uriB === "string") {
- uriB = serialize(parse(uriB, options), options);
- } else if (typeOf(uriB) === "object") {
- uriB = serialize(uriB, options);
- }
- return uriA === uriB;
-}
-
-function escapeComponent(str, options) {
- return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar);
-}
-
-function unescapeComponent(str, options) {
- return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars);
-}
-
-var handler = {
- scheme: "http",
- domainHost: true,
- parse: function parse(components, options) {
- //report missing host
- if (!components.host) {
- components.error = components.error || "HTTP URIs must have a host.";
- }
- return components;
- },
- serialize: function serialize(components, options) {
- //normalize the default port
- if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") {
- components.port = undefined;
- }
- //normalize the empty path
- if (!components.path) {
- components.path = "/";
- }
- //NOTE: We do not parse query strings for HTTP URIs
- //as WWW Form Url Encoded query strings are part of the HTML4+ spec,
- //and not the HTTP spec.
- return components;
- }
-};
-
-var handler$1 = {
- scheme: "https",
- domainHost: handler.domainHost,
- parse: handler.parse,
- serialize: handler.serialize
-};
-
-var O = {};
-var isIRI = true;
-//RFC 3986
-var UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]";
-var HEXDIG$$ = "[0-9A-Fa-f]"; //case-insensitive
-var PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); //expanded
-//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =
-//const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]";
-//const WSP$$ = "[\\x20\\x09]";
-//const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127)
-//const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext
-//const VCHAR$$ = "[\\x21-\\x7E]";
-//const WSP$$ = "[\\x20\\x09]";
-//const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext
-//const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+");
-//const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$);
-//const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"');
-var ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]";
-var QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]";
-var VCHAR$$ = merge(QTEXT$$, "[\\\"\\\\]");
-var SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]";
-var UNRESERVED = new RegExp(UNRESERVED$$, "g");
-var PCT_ENCODED = new RegExp(PCT_ENCODED$, "g");
-var NOT_LOCAL_PART = new RegExp(merge("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g");
-var NOT_HFNAME = new RegExp(merge("[^]", UNRESERVED$$, SOME_DELIMS$$), "g");
-var NOT_HFVALUE = NOT_HFNAME;
-function decodeUnreserved(str) {
- var decStr = pctDecChars(str);
- return !decStr.match(UNRESERVED) ? str : decStr;
-}
-var handler$2 = {
- scheme: "mailto",
- parse: function parse$$1(components, options) {
- var mailtoComponents = components;
- var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(",") : [];
- mailtoComponents.path = undefined;
- if (mailtoComponents.query) {
- var unknownHeaders = false;
- var headers = {};
- var hfields = mailtoComponents.query.split("&");
- for (var x = 0, xl = hfields.length; x < xl; ++x) {
- var hfield = hfields[x].split("=");
- switch (hfield[0]) {
- case "to":
- var toAddrs = hfield[1].split(",");
- for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) {
- to.push(toAddrs[_x]);
- }
- break;
- case "subject":
- mailtoComponents.subject = unescapeComponent(hfield[1], options);
- break;
- case "body":
- mailtoComponents.body = unescapeComponent(hfield[1], options);
- break;
- default:
- unknownHeaders = true;
- headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);
- break;
- }
- }
- if (unknownHeaders) mailtoComponents.headers = headers;
- }
- mailtoComponents.query = undefined;
- for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) {
- var addr = to[_x2].split("@");
- addr[0] = unescapeComponent(addr[0]);
- if (!options.unicodeSupport) {
- //convert Unicode IDN -> ASCII IDN
- try {
- addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());
- } catch (e) {
- mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e;
- }
- } else {
- addr[1] = unescapeComponent(addr[1], options).toLowerCase();
- }
- to[_x2] = addr.join("@");
- }
- return mailtoComponents;
- },
- serialize: function serialize$$1(mailtoComponents, options) {
- var components = mailtoComponents;
- var to = toArray(mailtoComponents.to);
- if (to) {
- for (var x = 0, xl = to.length; x < xl; ++x) {
- var toAddr = String(to[x]);
- var atIdx = toAddr.lastIndexOf("@");
- var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);
- var domain = toAddr.slice(atIdx + 1);
- //convert IDN via punycode
- try {
- domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain);
- } catch (e) {
- components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e;
- }
- to[x] = localPart + "@" + domain;
- }
- components.path = to.join(",");
- }
- var headers = mailtoComponents.headers = mailtoComponents.headers || {};
- if (mailtoComponents.subject) headers["subject"] = mailtoComponents.subject;
- if (mailtoComponents.body) headers["body"] = mailtoComponents.body;
- var fields = [];
- for (var name in headers) {
- if (headers[name] !== O[name]) {
- fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + "=" + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar));
- }
- }
- if (fields.length) {
- components.query = fields.join("&");
- }
- return components;
- }
-};
-
-var URN_PARSE = /^([^\:]+)\:(.*)/;
-//RFC 2141
-var handler$3 = {
- scheme: "urn",
- parse: function parse$$1(components, options) {
- var matches = components.path && components.path.match(URN_PARSE);
- var urnComponents = components;
- if (matches) {
- var scheme = options.scheme || urnComponents.scheme || "urn";
- var nid = matches[1].toLowerCase();
- var nss = matches[2];
- var urnScheme = scheme + ":" + (options.nid || nid);
- var schemeHandler = SCHEMES[urnScheme];
- urnComponents.nid = nid;
- urnComponents.nss = nss;
- urnComponents.path = undefined;
- if (schemeHandler) {
- urnComponents = schemeHandler.parse(urnComponents, options);
- }
- } else {
- urnComponents.error = urnComponents.error || "URN can not be parsed.";
- }
- return urnComponents;
- },
- serialize: function serialize$$1(urnComponents, options) {
- var scheme = options.scheme || urnComponents.scheme || "urn";
- var nid = urnComponents.nid;
- var urnScheme = scheme + ":" + (options.nid || nid);
- var schemeHandler = SCHEMES[urnScheme];
- if (schemeHandler) {
- urnComponents = schemeHandler.serialize(urnComponents, options);
- }
- var uriComponents = urnComponents;
- var nss = urnComponents.nss;
- uriComponents.path = (nid || options.nid) + ":" + nss;
- return uriComponents;
- }
-};
-
-var UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/;
-//RFC 4122
-var handler$4 = {
- scheme: "urn:uuid",
- parse: function parse(urnComponents, options) {
- var uuidComponents = urnComponents;
- uuidComponents.uuid = uuidComponents.nss;
- uuidComponents.nss = undefined;
- if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {
- uuidComponents.error = uuidComponents.error || "UUID is not valid.";
- }
- return uuidComponents;
- },
- serialize: function serialize(uuidComponents, options) {
- var urnComponents = uuidComponents;
- //normalize UUID
- urnComponents.nss = (uuidComponents.uuid || "").toLowerCase();
- return urnComponents;
- }
-};
-
-SCHEMES[handler.scheme] = handler;
-SCHEMES[handler$1.scheme] = handler$1;
-SCHEMES[handler$2.scheme] = handler$2;
-SCHEMES[handler$3.scheme] = handler$3;
-SCHEMES[handler$4.scheme] = handler$4;
-
-exports.SCHEMES = SCHEMES;
-exports.pctEncChar = pctEncChar;
-exports.pctDecChars = pctDecChars;
-exports.parse = parse;
-exports.removeDotSegments = removeDotSegments;
-exports.serialize = serialize;
-exports.resolveComponents = resolveComponents;
-exports.resolve = resolve;
-exports.normalize = normalize;
-exports.equal = equal;
-exports.escapeComponent = escapeComponent;
-exports.unescapeComponent = unescapeComponent;
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-})));
-//# sourceMappingURL=uri.all.js.map
diff --git a/assets/node_modules/uri-js/dist/es5/uri.all.js.map b/assets/node_modules/uri-js/dist/es5/uri.all.js.map
deleted file mode 100644
index 536ffa8..0000000
--- a/assets/node_modules/uri-js/dist/es5/uri.all.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"uri.all.js","sources":["../../src/index.ts","../../src/schemes/urn-uuid.ts","../../src/schemes/urn.ts","../../src/schemes/mailto.ts","../../src/schemes/https.ts","../../src/schemes/http.ts","../../src/uri.ts","../../node_modules/punycode/punycode.es6.js","../../src/regexps-iri.ts","../../src/regexps-uri.ts","../../src/util.ts"],"sourcesContent":["import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler<UUIDComponents, URIOptions, URNComponents> = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler<URNComponents,URNOptions> = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array<string>,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\"; //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler<MailtoComponents> = {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (components.port === (String(components.scheme).toLowerCase() !== \"https\" ? 80 : 443) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;","/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler<Components extends URIComponents = URIComponents, Options extends URIOptions = URIOptions, ParentComponents extends URIComponents = URIComponents> {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array<string>(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce<Array<{index:number,length:number}>>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = (<RegExpMatchArray>(\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else { //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(components.port.toString(10));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array<string> = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\"); //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options); //normalize base components\n\t\trelative = parse(serialize(relative, options), options); //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(<URIComponents>uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(<URIComponents>uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(<URIComponents>uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n","import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n","import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$), //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp( subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), // 6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp( \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), // \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp( H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\" h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\" ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"), //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$), //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$), //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"), //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n","export function merge(...sets:Array<string>):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array<any> {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}"],"names":["SCHEMES","uuid","scheme","urn","mailto","https","http","urnComponents","nss","uuidComponents","toLowerCase","options","error","tolerant","match","UUID","undefined","handler","uriComponents","path","nid","schemeHandler","serialize","urnScheme","parse","matches","components","URN_PARSE","query","fields","join","length","push","name","replace","PCT_ENCODED","decodeUnreserved","toUpperCase","NOT_HFNAME","pctEncChar","headers","NOT_HFVALUE","O","mailtoComponents","body","subject","to","x","localPart","domain","iri","e","punycode","toASCII","unescapeComponent","toUnicode","toAddr","slice","atIdx","NOT_LOCAL_PART","lastIndexOf","String","xl","toArray","addr","unicodeSupport","split","unknownHeaders","hfield","toAddrs","hfields","decStr","UNRESERVED","str","pctDecChars","RegExp","merge","UNRESERVED$$","SOME_DELIMS$$","ATEXT$$","VCHAR$$","PCT_ENCODED$","QTEXT$$","subexp","HEXDIG$$","isIRI","domainHost","port","host","toString","URI_PROTOCOL","IRI_PROTOCOL","ESCAPE","escapeComponent","uriA","uriB","typeOf","equal","uri","normalize","resolveComponents","baseURI","schemelessOptions","relativeURI","assign","resolve","target","fragment","relative","base","userinfo","removeDotSegments","charAt","skipNormalization","uriTokens","s","authority","absolutePath","reference","_recomposeAuthority","protocol","IPV6ADDRESS","test","output","Error","input","im","RDS5","pop","RDS3","RDS2","RDS1","$1","$2","_normalizeIPv6","_normalizeIPv4","_","uriString","isNaN","indexOf","parseInt","NO_MATCH_IS_UNDEFINED","URI_PARSE","newHost","zone","newFirst","newLast","longestZeroFields","index","b","a","allZeroFields","sort","acc","lastLongest","field","reduce","fieldCount","isLastFieldIPv4Address","firstFields","lastFields","lastFieldsStart","Array","IPV4ADDRESS","last","map","_stripLeadingZeros","first","address","reverse","NOT_FRAGMENT","NOT_QUERY","NOT_PATH","NOT_PATH_NOSCHEME","NOT_HOST","NOT_USERINFO","NOT_SCHEME","_normalizeComponentEncoding","newStr","substr","i","fromCharCode","c","c2","c3","il","chr","charCodeAt","encode","decode","ucs2encode","ucs2decode","regexNonASCII","string","mapDomain","regexPunycode","n","delta","handledCPCount","adapt","handledCPCountPlusOne","basicLength","stringFromCharCode","digitToBasic","q","floor","qMinusT","baseMinusT","t","k","bias","tMin","tMax","currentValue","maxInt","m","inputLength","delimiter","initialBias","initialN","fromCodePoint","splice","out","oldi","w","digit","basicToDigit","basic","j","baseMinusTMin","skew","numPoints","firstTime","damp","flag","codePoint","array","value","extra","counter","result","encoded","labels","fn","regexSeparators","parts","RangeError","errors","type","Math","buildExps","IPV6ADDRESS$","ZONEID$","IPV4ADDRESS$","RESERVED$$","SUB_DELIMS$$","IPRIVATE$$","ALPHA$$","DIGIT$$","AUTHORITY_REF$","USERINFO$","HOST$","PORT$","SAMEDOC_REF$","FRAGMENT$","ABSOLUTE_REF$","SCHEME$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","RELATIVE_REF$","PATH_NOSCHEME$","GENERIC_REF$","ABSOLUTE_URI$","HIER_PART$","URI_REFERENCE$","URI$","RELATIVE$","RELATIVE_PART$","AUTHORITY$","PCHAR$","PATH$","SEGMENT_NZ$","SEGMENT_NZ_NC$","SEGMENT$","IP_LITERAL$","REG_NAME$","IPV6ADDRZ_RELAXED$","IPVFUTURE$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","H16$","LS32$","DEC_OCTET_RELAXED$","DEC_OCTET$","UCSCHAR$$","GEN_DELIMS$$","SP$$","DQUOTE$$","CR$","obj","key","source","setInterval","call","prototype","o","Object","shift","sets"],"mappings":";;;;;;;AUAA,SAAA4E,KAAA,GAAA;sCAAyBkP,IAAzB;YAAA;;;QACKA,KAAK/R,MAAL,GAAc,CAAlB,EAAqB;aACf,CAAL,IAAU+R,KAAK,CAAL,EAAQrQ,KAAR,CAAc,CAAd,EAAiB,CAAC,CAAlB,CAAV;YACMK,KAAKgQ,KAAK/R,MAAL,GAAc,CAAzB;aACK,IAAIgB,IAAI,CAAb,EAAgBA,IAAIe,EAApB,EAAwB,EAAEf,CAA1B,EAA6B;iBACvBA,CAAL,IAAU+Q,KAAK/Q,CAAL,EAAQU,KAAR,CAAc,CAAd,EAAiB,CAAC,CAAlB,CAAV;;aAEIK,EAAL,IAAWgQ,KAAKhQ,EAAL,EAASL,KAAT,CAAe,CAAf,CAAX;eACOqQ,KAAKhS,IAAL,CAAU,EAAV,CAAP;KAPD,MAQO;eACCgS,KAAK,CAAL,CAAP;;;AAIF,AAAA,SAAA3O,MAAA,CAAuBV,GAAvB,EAAA;WACQ,QAAQA,GAAR,GAAc,GAArB;;AAGD,AAAA,SAAAuB,MAAA,CAAuB2N,CAAvB,EAAA;WACQA,MAAM3S,SAAN,GAAkB,WAAlB,GAAiC2S,MAAM,IAAN,GAAa,MAAb,GAAsBC,OAAOF,SAAP,CAAiBjO,QAAjB,CAA0BgO,IAA1B,CAA+BE,CAA/B,EAAkCzP,KAAlC,CAAwC,GAAxC,EAA6C8D,GAA7C,GAAmD9D,KAAnD,CAAyD,GAAzD,EAA8D2P,KAA9D,GAAsEnT,WAAtE,EAA9D;;AAGD,AAAA,SAAA2B,WAAA,CAA4BoC,GAA5B,EAAA;WACQA,IAAIpC,WAAJ,EAAP;;AAGD,AAAA,SAAA0B,OAAA,CAAwBsP,GAAxB,EAAA;WACQA,QAAQrS,SAAR,IAAqBqS,QAAQ,IAA7B,GAAqCA,eAAenJ,KAAf,GAAuBmJ,GAAvB,GAA8B,OAAOA,IAAItR,MAAX,KAAsB,QAAtB,IAAkCsR,IAAInP,KAAtC,IAA+CmP,IAAIG,WAAnD,IAAkEH,IAAII,IAAtE,GAA6E,CAACJ,GAAD,CAA7E,GAAqFnJ,MAAMwJ,SAAN,CAAgBjQ,KAAhB,CAAsBgQ,IAAtB,CAA2BJ,GAA3B,CAAxJ,GAA4L,EAAnM;;AAID,AAAA,SAAA7M,MAAA,CAAuBE,MAAvB,EAAuC6M,MAAvC,EAAA;QACOF,MAAM3M,MAAZ;QACI6M,MAAJ,EAAY;aACN,IAAMD,GAAX,IAAkBC,MAAlB,EAA0B;gBACrBD,GAAJ,IAAWC,OAAOD,GAAP,CAAX;;;WAGKD,GAAP;;;ADnCD,SAAA3D,SAAA,CAA0BrK,KAA1B,EAAA;QAEE4K,UAAU,UADX;QAECmD,MAAM,SAFP;QAGClD,UAAU,OAHX;QAICiD,WAAW,SAJZ;QAKC/N,WAAWR,MAAMsL,OAAN,EAAe,UAAf,CALZ;;WAMQ,SANR;QAOCgD,OAAO,SAPR;QAQCjO,eAAeE,OAAOA,OAAO,YAAYC,QAAZ,GAAuB,GAAvB,GAA6BA,QAA7B,GAAwCA,QAAxC,GAAmD,GAAnD,GAAyDA,QAAzD,GAAoEA,QAA3E,IAAuF,GAAvF,GAA6FD,OAAO,gBAAgBC,QAAhB,GAA2B,GAA3B,GAAiCA,QAAjC,GAA4CA,QAAnD,CAA7F,GAA4J,GAA5J,GAAkKD,OAAO,MAAMC,QAAN,GAAiBA,QAAxB,CAAzK,CARhB;;mBASgB,yBAThB;QAUC2K,eAAe,qCAVhB;QAWCD,aAAalL,MAAMqO,YAAN,EAAoBlD,YAApB,CAXd;QAYCiD,YAAY3N,QAAQ,6EAAR,GAAwF,IAZrG;;iBAacA,QAAQ,mBAAR,GAA8B,IAb5C;;mBAcgBT,MAAMqL,OAAN,EAAeC,OAAf,EAAwB,gBAAxB,EAA0C8C,SAA1C,CAdhB;QAeCtC,UAAUvL,OAAO8K,UAAUrL,MAAMqL,OAAN,EAAeC,OAAf,EAAwB,aAAxB,CAAV,GAAmD,GAA1D,CAfX;QAgBCE,YAAYjL,OAAOA,OAAOF,eAAe,GAAf,GAAqBL,MAAMC,YAAN,EAAoBkL,YAApB,EAAkC,OAAlC,CAA5B,IAA0E,GAAjF,CAhBb;QAiBCgD,aAAa5N,OAAOA,OAAO,SAAP,IAAoB,GAApB,GAA0BA,OAAO,WAAW+K,OAAlB,CAA1B,GAAuD,GAAvD,GAA6D/K,OAAO,MAAM+K,OAAN,GAAgBA,OAAvB,CAA7D,GAA+F,GAA/F,GAAqG/K,OAAO,UAAU+K,OAAjB,CAArG,GAAiI,GAAjI,GAAuIA,OAA9I,CAjBd;QAkBC4C,qBAAqB3N,OAAOA,OAAO,SAAP,IAAoB,GAApB,GAA0BA,OAAO,WAAW+K,OAAlB,CAA1B,GAAuD,GAAvD,GAA6D/K,OAAO,MAAM+K,OAAN,GAAgBA,OAAvB,CAA7D,GAA+F,GAA/F,GAAqG/K,OAAO,YAAY+K,OAAnB,CAArG,GAAmI,OAAnI,GAA6IA,OAApJ,CAlBtB;;mBAmBgB/K,OAAO2N,qBAAqB,KAArB,GAA6BA,kBAA7B,GAAkD,KAAlD,GAA0DA,kBAA1D,GAA+E,KAA/E,GAAuFA,kBAA9F,CAnBhB;QAoBCF,OAAOzN,OAAOC,WAAW,OAAlB,CApBR;QAqBCyN,QAAQ1N,OAAOA,OAAOyN,OAAO,KAAP,GAAeA,IAAtB,IAA8B,GAA9B,GAAoC/C,YAA3C,CArBT;QAsBCsC,gBAAgBhN,OAAmEA,OAAOyN,OAAO,KAAd,IAAuB,KAAvB,GAA+BC,KAAlG,CAtBjB;;oBAuBiB1N,OAAwD,WAAWA,OAAOyN,OAAO,KAAd,CAAX,GAAkC,KAAlC,GAA0CC,KAAlG,CAvBjB;;oBAwBiB1N,OAAOA,OAAwCyN,IAAxC,IAAgD,SAAhD,GAA4DzN,OAAOyN,OAAO,KAAd,CAA5D,GAAmF,KAAnF,GAA2FC,KAAlG,CAxBjB;;oBAyBiB1N,OAAOA,OAAOA,OAAOyN,OAAO,KAAd,IAAuB,OAAvB,GAAiCA,IAAxC,IAAgD,SAAhD,GAA4DzN,OAAOyN,OAAO,KAAd,CAA5D,GAAmF,KAAnF,GAA2FC,KAAlG,CAzBjB;;oBA0BiB1N,OAAOA,OAAOA,OAAOyN,OAAO,KAAd,IAAuB,OAAvB,GAAiCA,IAAxC,IAAgD,SAAhD,GAA4DzN,OAAOyN,OAAO,KAAd,CAA5D,GAAmF,KAAnF,GAA2FC,KAAlG,CA1BjB;;oBA2BiB1N,OAAOA,OAAOA,OAAOyN,OAAO,KAAd,IAAuB,OAAvB,GAAiCA,IAAxC,IAAgD,SAAhD,GAAmEA,IAAnE,GAA0E,KAA1E,GAA2FC,KAAlG,CA3BjB;;oBA4BiB1N,OAAOA,OAAOA,OAAOyN,OAAO,KAAd,IAAuB,OAAvB,GAAiCA,IAAxC,IAAgD,SAAhD,GAA2FC,KAAlG,CA5BjB;;oBA6BiB1N,OAAOA,OAAOA,OAAOyN,OAAO,KAAd,IAAuB,OAAvB,GAAiCA,IAAxC,IAAgD,SAAhD,GAA2FA,IAAlG,CA7BjB;;oBA8BiBzN,OAAOA,OAAOA,OAAOyN,OAAO,KAAd,IAAuB,OAAvB,GAAiCA,IAAxC,IAAgD,SAAvD,CA9BjB;;mBA+BgBzN,OAAO,CAACgN,aAAD,EAAgBC,aAAhB,EAA+BC,aAA/B,EAA8CC,aAA9C,EAA6DC,aAA7D,EAA4EC,aAA5E,EAA2FC,aAA3F,EAA0GC,aAA1G,EAAyHC,aAAzH,EAAwI7Q,IAAxI,CAA6I,GAA7I,CAAP,CA/BhB;QAgCC8N,UAAUzK,OAAOA,OAAON,eAAe,GAAf,GAAqBI,YAA5B,IAA4C,GAAnD,CAhCX;;iBAiCcE,OAAOwK,eAAe,OAAf,GAAyBC,OAAhC,CAjCd;;yBAkCsBzK,OAAOwK,eAAexK,OAAO,iBAAiBC,QAAjB,GAA4B,MAAnC,CAAf,GAA4DwK,OAAnE,CAlCtB;;iBAmCczK,OAAO,SAASC,QAAT,GAAoB,MAApB,GAA6BR,MAAMC,YAAN,EAAoBkL,YAApB,EAAkC,OAAlC,CAA7B,GAA0E,GAAjF,CAnCd;QAoCCgC,cAAc5M,OAAO,QAAQA,OAAO8M,qBAAqB,GAArB,GAA2BtC,YAA3B,GAA0C,GAA1C,GAAgDuC,UAAvD,CAAR,GAA6E,KAApF,CApCf;;gBAqCa/M,OAAOA,OAAOF,eAAe,GAAf,GAAqBL,MAAMC,YAAN,EAAoBkL,YAApB,CAA5B,IAAiE,GAAxE,CArCb;QAsCCM,QAAQlL,OAAO4M,cAAc,GAAd,GAAoBlC,YAApB,GAAmC,KAAnC,GAA2CmC,SAA3C,GAAuD,GAAvD,GAA6D,GAA7D,GAAmEA,SAA1E,CAtCT;QAuCC1B,QAAQnL,OAAO+K,UAAU,GAAjB,CAvCT;QAwCCuB,aAAatM,OAAOA,OAAOiL,YAAY,GAAnB,IAA0B,GAA1B,GAAgCC,KAAhC,GAAwClL,OAAO,QAAQmL,KAAf,CAAxC,GAAgE,GAAvE,CAxCd;QAyCCoB,SAASvM,OAAOF,eAAe,GAAf,GAAqBL,MAAMC,YAAN,EAAoBkL,YAApB,EAAkC,UAAlC,CAA5B,CAzCV;QA0CC+B,WAAW3M,OAAOuM,SAAS,GAAhB,CA1CZ;QA2CCE,cAAczM,OAAOuM,SAAS,GAAhB,CA3Cf;QA4CCG,iBAAiB1M,OAAOA,OAAOF,eAAe,GAAf,GAAqBL,MAAMC,YAAN,EAAoBkL,YAApB,EAAkC,OAAlC,CAA5B,IAA0E,GAAjF,CA5ClB;QA6CCY,gBAAgBxL,OAAOA,OAAO,QAAQ2M,QAAf,IAA2B,GAAlC,CA7CjB;QA8CClB,iBAAiBzL,OAAO,QAAQA,OAAOyM,cAAcjB,aAArB,CAAR,GAA8C,GAArD,CA9ClB;;qBA+CkBxL,OAAO0M,iBAAiBlB,aAAxB,CA/ClB;;qBAgDkBxL,OAAOyM,cAAcjB,aAArB,CAhDlB;;kBAiDe,QAAQe,MAAR,GAAiB,GAjDhC;QAkDCC,QAAQxM,OAAOwL,gBAAgB,GAAhB,GAAsBC,cAAtB,GAAuC,GAAvC,GAA6CK,cAA7C,GAA8D,GAA9D,GAAoEJ,cAApE,GAAqF,GAArF,GAA2FC,WAAlG,CAlDT;QAmDCC,SAAS5L,OAAOA,OAAOuM,SAAS,GAAT,GAAe9M,MAAM,UAAN,EAAkBoL,UAAlB,CAAtB,IAAuD,GAA9D,CAnDV;QAoDCQ,YAAYrL,OAAOA,OAAOuM,SAAS,WAAhB,IAA+B,GAAtC,CApDb;QAqDCN,aAAajM,OAAOA,OAAO,WAAWsM,UAAX,GAAwBd,aAA/B,IAAgD,GAAhD,GAAsDC,cAAtD,GAAuE,GAAvE,GAA6EC,cAA7E,GAA8F,GAA9F,GAAoGC,WAA3G,CArDd;QAsDCQ,OAAOnM,OAAOuL,UAAU,KAAV,GAAkBU,UAAlB,GAA+BjM,OAAO,QAAQ4L,MAAf,CAA/B,GAAwD,GAAxD,GAA8D5L,OAAO,QAAQqL,SAAf,CAA9D,GAA0F,GAAjG,CAtDR;QAuDCgB,iBAAiBrM,OAAOA,OAAO,WAAWsM,UAAX,GAAwBd,aAA/B,IAAgD,GAAhD,GAAsDC,cAAtD,GAAuE,GAAvE,GAA6EK,cAA7E,GAA8F,GAA9F,GAAoGH,WAA3G,CAvDlB;QAwDCS,YAAYpM,OAAOqM,iBAAiBrM,OAAO,QAAQ4L,MAAf,CAAjB,GAA0C,GAA1C,GAAgD5L,OAAO,QAAQqL,SAAf,CAAhD,GAA4E,GAAnF,CAxDb;QAyDCa,iBAAiBlM,OAAOmM,OAAO,GAAP,GAAaC,SAApB,CAzDlB;QA0DCJ,gBAAgBhM,OAAOuL,UAAU,KAAV,GAAkBU,UAAlB,GAA+BjM,OAAO,QAAQ4L,MAAf,CAA/B,GAAwD,GAA/D,CA1DjB;QA4DCG,eAAe,OAAOR,OAAP,GAAiB,MAAjB,GAA0BvL,OAAOA,OAAO,YAAYA,OAAO,MAAMiL,SAAN,GAAkB,IAAzB,CAAZ,GAA6C,IAA7C,GAAoDC,KAApD,GAA4D,GAA5D,GAAkElL,OAAO,SAASmL,KAAT,GAAiB,GAAxB,CAAlE,GAAiG,IAAxG,IAAgH,IAAhH,GAAuHK,aAAvH,GAAuI,GAAvI,GAA6IC,cAA7I,GAA8J,GAA9J,GAAoKC,cAApK,GAAqL,GAArL,GAA2LC,WAA3L,GAAyM,GAAhN,CAA1B,GAAiP3L,OAAO,SAAS4L,MAAT,GAAkB,GAAzB,CAAjP,GAAiR,GAAjR,GAAuR5L,OAAO,SAASqL,SAAT,GAAqB,GAA5B,CAAvR,GAA0T,IA5D1U;QA6DCQ,gBAAgB,WAAW7L,OAAOA,OAAO,YAAYA,OAAO,MAAMiL,SAAN,GAAkB,IAAzB,CAAZ,GAA6C,IAA7C,GAAoDC,KAApD,GAA4D,GAA5D,GAAkElL,OAAO,SAASmL,KAAT,GAAiB,GAAxB,CAAlE,GAAiG,IAAxG,IAAgH,IAAhH,GAAuHK,aAAvH,GAAuI,GAAvI,GAA6IC,cAA7I,GAA8J,GAA9J,GAAoKK,cAApK,GAAqL,GAArL,GAA2LH,WAA3L,GAAyM,GAAhN,CAAX,GAAkO3L,OAAO,SAAS4L,MAAT,GAAkB,GAAzB,CAAlO,GAAkQ,GAAlQ,GAAwQ5L,OAAO,SAASqL,SAAT,GAAqB,GAA5B,CAAxQ,GAA2S,IA7D5T;QA8DCC,gBAAgB,OAAOC,OAAP,GAAiB,MAAjB,GAA0BvL,OAAOA,OAAO,YAAYA,OAAO,MAAMiL,SAAN,GAAkB,IAAzB,CAAZ,GAA6C,IAA7C,GAAoDC,KAApD,GAA4D,GAA5D,GAAkElL,OAAO,SAASmL,KAAT,GAAiB,GAAxB,CAAlE,GAAiG,IAAxG,IAAgH,IAAhH,GAAuHK,aAAvH,GAAuI,GAAvI,GAA6IC,cAA7I,GAA8J,GAA9J,GAAoKC,cAApK,GAAqL,GAArL,GAA2LC,WAA3L,GAAyM,GAAhN,CAA1B,GAAiP3L,OAAO,SAAS4L,MAAT,GAAkB,GAAzB,CAAjP,GAAiR,IA9DlS;QA+DCR,eAAe,MAAMpL,OAAO,SAASqL,SAAT,GAAqB,GAA5B,CAAN,GAAyC,IA/DzD;QAgECL,iBAAiB,MAAMhL,OAAO,MAAMiL,SAAN,GAAkB,IAAzB,CAAN,GAAuC,IAAvC,GAA8CC,KAA9C,GAAsD,GAAtD,GAA4DlL,OAAO,SAASmL,KAAT,GAAiB,GAAxB,CAA5D,GAA2F,IAhE7G;WAmEO;oBACO,IAAI3L,MAAJ,CAAWC,MAAM,KAAN,EAAaqL,OAAb,EAAsBC,OAAtB,EAA+B,aAA/B,CAAX,EAA0D,GAA1D,CADP;sBAES,IAAIvL,MAAJ,CAAWC,MAAM,WAAN,EAAmBC,YAAnB,EAAiCkL,YAAjC,CAAX,EAA2D,GAA3D,CAFT;kBAGK,IAAIpL,MAAJ,CAAWC,MAAM,iBAAN,EAAyBC,YAAzB,EAAuCkL,YAAvC,CAAX,EAAiE,GAAjE,CAHL;kBAIK,IAAIpL,MAAJ,CAAWC,MAAM,iBAAN,EAAyBC,YAAzB,EAAuCkL,YAAvC,CAAX,EAAiE,GAAjE,CAJL;2BAKc,IAAIpL,MAAJ,CAAWC,MAAM,cAAN,EAAsBC,YAAtB,EAAoCkL,YAApC,CAAX,EAA8D,GAA9D,CALd;mBAMM,IAAIpL,MAAJ,CAAWC,MAAM,QAAN,EAAgBC,YAAhB,EAA8BkL,YAA9B,EAA4C,gBAA5C,EAA8DC,UAA9D,CAAX,EAAsF,GAAtF,CANN;sBAOS,IAAIrL,MAAJ,CAAWC,MAAM,QAAN,EAAgBC,YAAhB,EAA8BkL,YAA9B,EAA4C,gBAA5C,CAAX,EAA0E,GAA1E,CAPT;gBAQG,IAAIpL,MAAJ,CAAWC,MAAM,KAAN,EAAaC,YAAb,EAA2BkL,YAA3B,CAAX,EAAqD,GAArD,CARH;oBASO,IAAIpL,MAAJ,CAAWE,YAAX,EAAyB,GAAzB,CATP;qBAUQ,IAAIF,MAAJ,CAAWC,MAAM,QAAN,EAAgBC,YAAhB,EAA8BiL,UAA9B,CAAX,EAAsD,GAAtD,CAVR;qBAWQ,IAAInL,MAAJ,CAAWM,YAAX,EAAyB,GAAzB,CAXR;qBAYQ,IAAIN,MAAJ,CAAW,OAAOkL,YAAP,GAAsB,IAAjC,CAZR;qBAaQ,IAAIlL,MAAJ,CAAW,WAAWgL,YAAX,GAA0B,GAA1B,GAAgCxK,OAAOA,OAAO,iBAAiBC,QAAjB,GAA4B,MAAnC,IAA6C,GAA7C,GAAmDwK,OAAnD,GAA6D,GAApE,CAAhC,GAA2G,QAAtH,CAbR;KAAP;;AAiBD,mBAAeF,UAAU,KAAV,CAAf;;ADrFA,mBAAeA,UAAU,IAAV,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ADDA;;AACA,IAAMpC,SAAS,UAAf;;;AAGA,IAAMzG,OAAO,EAAb;AACA,IAAMsG,OAAO,CAAb;AACA,IAAMC,OAAO,EAAb;AACA,IAAMkB,OAAO,EAAb;AACA,IAAMG,OAAO,GAAb;AACA,IAAMf,cAAc,EAApB;AACA,IAAMC,WAAW,GAAjB;AACA,IAAMF,YAAY,GAAlB;;;AAGA,IAAMtB,gBAAgB,OAAtB;AACA,IAAMH,gBAAgB,YAAtB;AACA,IAAMoD,kBAAkB,2BAAxB;;;AAGA,IAAMG,SAAS;aACF,iDADE;cAED,gDAFC;kBAGG;CAHlB;;;AAOA,IAAMlB,gBAAgBxH,OAAOsG,IAA7B;AACA,IAAMN,QAAQ4C,KAAK5C,KAAnB;AACA,IAAMH,qBAAqB7I,OAAOwH,YAAlC;;;;;;;;;;AAUA,SAASzK,OAAT,CAAe4O,IAAf,EAAqB;OACd,IAAIF,UAAJ,CAAeC,OAAOC,IAAP,CAAf,CAAN;;;;;;;;;;;AAWD,SAASnF,GAAT,CAAauE,KAAb,EAAoBO,EAApB,EAAwB;KACjBH,SAAS,EAAf;KACIjN,SAAS6M,MAAM7M,MAAnB;QACOA,QAAP,EAAiB;SACTA,MAAP,IAAiBoN,GAAGP,MAAM7M,MAAN,CAAH,CAAjB;;QAEMiN,MAAP;;;;;;;;;;;;;AAaD,SAAS9C,SAAT,CAAmBD,MAAnB,EAA2BkD,EAA3B,EAA+B;KACxBE,QAAQpD,OAAO/H,KAAP,CAAa,GAAb,CAAd;KACI8K,SAAS,EAAb;KACIK,MAAMtN,MAAN,GAAe,CAAnB,EAAsB;;;WAGZsN,MAAM,CAAN,IAAW,GAApB;WACSA,MAAM,CAAN,CAAT;;;UAGQpD,OAAO/J,OAAP,CAAekN,eAAf,EAAgC,MAAhC,CAAT;KACMF,SAASjD,OAAO/H,KAAP,CAAa,GAAb,CAAf;KACM+K,UAAU5E,IAAI6E,MAAJ,EAAYC,EAAZ,EAAgBrN,IAAhB,CAAqB,GAArB,CAAhB;QACOkN,SAASC,OAAhB;;;;;;;;;;;;;;;;AAgBD,SAASlD,UAAT,CAAoBE,MAApB,EAA4B;KACrBtE,SAAS,EAAf;KACIoH,UAAU,CAAd;KACMhN,SAASkK,OAAOlK,MAAtB;QACOgN,UAAUhN,MAAjB,EAAyB;MAClB8M,QAAQ5C,OAAON,UAAP,CAAkBoD,SAAlB,CAAd;MACIF,SAAS,MAAT,IAAmBA,SAAS,MAA5B,IAAsCE,UAAUhN,MAApD,EAA4D;;OAErD+M,QAAQ7C,OAAON,UAAP,CAAkBoD,SAAlB,CAAd;OACI,CAACD,QAAQ,MAAT,KAAoB,MAAxB,EAAgC;;WACxB9M,IAAP,CAAY,CAAC,CAAC6M,QAAQ,KAAT,KAAmB,EAApB,KAA2BC,QAAQ,KAAnC,IAA4C,OAAxD;IADD,MAEO;;;WAGC9M,IAAP,CAAY6M,KAAZ;;;GARF,MAWO;UACC7M,IAAP,CAAY6M,KAAZ;;;QAGKlH,MAAP;;;;;;;;;;;AAWD,IAAMmE,aAAa,SAAbA,UAAa;QAASjI,OAAO+J,aAAP,iCAAwBgB,KAAxB,EAAT;CAAnB;;;;;;;;;;;AAWA,IAAMV,eAAe,SAAfA,YAAe,CAASS,SAAT,EAAoB;KACpCA,YAAY,IAAZ,GAAmB,IAAvB,EAA6B;SACrBA,YAAY,IAAnB;;KAEGA,YAAY,IAAZ,GAAmB,IAAvB,EAA6B;SACrBA,YAAY,IAAnB;;KAEGA,YAAY,IAAZ,GAAmB,IAAvB,EAA6B;SACrBA,YAAY,IAAnB;;QAEM9H,IAAP;CAVD;;;;;;;;;;;;;AAwBA,IAAM8F,eAAe,SAAfA,YAAe,CAASsB,KAAT,EAAgBS,IAAhB,EAAsB;;;QAGnCT,QAAQ,EAAR,GAAa,MAAMA,QAAQ,EAAd,CAAb,IAAkC,CAACS,QAAQ,CAAT,KAAe,CAAjD,CAAP;CAHD;;;;;;;AAWA,IAAMnC,QAAQ,SAARA,KAAQ,CAASF,KAAT,EAAgBkC,SAAhB,EAA2BC,SAA3B,EAAsC;KAC/CvB,IAAI,CAAR;SACQuB,YAAY3B,MAAMR,QAAQoC,IAAd,CAAZ,GAAkCpC,SAAS,CAAnD;UACSQ,MAAMR,QAAQkC,SAAd,CAAT;+BAC8BlC,QAAQgC,gBAAgBjB,IAAhB,IAAwB,CAA9D,EAAiEH,KAAKpG,IAAtE,EAA4E;UACnEgG,MAAMR,QAAQgC,aAAd,CAAR;;QAEMxB,MAAMI,IAAI,CAACoB,gBAAgB,CAAjB,IAAsBhC,KAAtB,IAA+BA,QAAQiC,IAAvC,CAAV,CAAP;CAPD;;;;;;;;;AAiBA,IAAMzC,SAAS,SAATA,MAAS,CAAShE,KAAT,EAAgB;;KAExBF,SAAS,EAAf;KACM6F,cAAc3F,MAAM9F,MAA1B;KACIqJ,IAAI,CAAR;KACIgB,IAAIuB,QAAR;KACIT,OAAOQ,WAAX;;;;;;KAMIS,QAAQtG,MAAMjE,WAAN,CAAkB6J,SAAlB,CAAZ;KACIU,QAAQ,CAAZ,EAAe;UACN,CAAR;;;MAGI,IAAIC,IAAI,CAAb,EAAgBA,IAAID,KAApB,EAA2B,EAAEC,CAA7B,EAAgC;;MAE3BvG,MAAM8D,UAAN,CAAiByC,CAAjB,KAAuB,IAA3B,EAAiC;WAC1B,WAAN;;SAEMpM,IAAP,CAAY6F,MAAM8D,UAAN,CAAiByC,CAAjB,CAAZ;;;;;;MAMI,IAAIhF,QAAQ+E,QAAQ,CAAR,GAAYA,QAAQ,CAApB,GAAwB,CAAzC,EAA4C/E,QAAQoE,WAApD,4BAA4F;;;;;;;MAOvFO,OAAO3C,CAAX;OACK,IAAI4C,IAAI,CAAR,EAAWf,IAAIpG,IAApB,qBAA8CoG,KAAKpG,IAAnD,EAAyD;;OAEpDuC,SAASoE,WAAb,EAA0B;YACnB,eAAN;;;OAGKS,QAAQC,aAAarG,MAAM8D,UAAN,CAAiBvC,OAAjB,CAAb,CAAd;;OAEI6E,SAASpH,IAAT,IAAiBoH,QAAQpB,MAAM,CAACS,SAASlC,CAAV,IAAe4C,CAArB,CAA7B,EAAsD;YAC/C,UAAN;;;QAGIC,QAAQD,CAAb;OACMhB,IAAIC,KAAKC,IAAL,GAAYC,IAAZ,GAAoBF,KAAKC,OAAOE,IAAZ,GAAmBA,IAAnB,GAA0BH,IAAIC,IAA5D;;OAEIe,QAAQjB,CAAZ,EAAe;;;;OAITD,aAAalG,OAAOmG,CAA1B;OACIgB,IAAInB,MAAMS,SAASP,UAAf,CAAR,EAAoC;YAC7B,UAAN;;;QAGIA,UAAL;;;MAIKe,MAAMnG,OAAO5F,MAAP,GAAgB,CAA5B;SACOwK,MAAMnB,IAAI2C,IAAV,EAAgBD,GAAhB,EAAqBC,QAAQ,CAA7B,CAAP;;;;MAIIlB,MAAMzB,IAAI0C,GAAV,IAAiBR,SAASlB,CAA9B,EAAiC;WAC1B,UAAN;;;OAGIS,MAAMzB,IAAI0C,GAAV,CAAL;OACKA,GAAL;;;SAGOD,MAAP,CAAczC,GAAd,EAAmB,CAAnB,EAAsBgB,CAAtB;;;QAIMvI,OAAO+J,aAAP,eAAwBjG,MAAxB,CAAP;CAjFD;;;;;;;;;AA2FA,IAAMiE,SAAS,SAATA,MAAS,CAAS/D,KAAT,EAAgB;KACxBF,SAAS,EAAf;;;SAGQoE,WAAWlE,KAAX,CAAR;;;KAGI2F,cAAc3F,MAAM9F,MAAxB;;;KAGIqK,IAAIuB,QAAR;KACItB,QAAQ,CAAZ;KACIa,OAAOQ,WAAX;;;;;;;;uBAG2B7F,KAA3B,8HAAkC;OAAvBwF,cAAuB;;OAC7BA,iBAAe,IAAnB,EAAyB;WACjBrL,IAAP,CAAY0K,mBAAmBW,cAAnB,CAAZ;;;;;;;;;;;;;;;;;;KAIEZ,cAAc9E,OAAO5F,MAAzB;KACIuK,iBAAiBG,WAArB;;;;;;KAMIA,WAAJ,EAAiB;SACTzK,IAAP,CAAYyL,SAAZ;;;;QAIMnB,iBAAiBkB,WAAxB,EAAqC;;;;MAIhCD,IAAID,MAAR;;;;;;yBAC2BzF,KAA3B,mIAAkC;QAAvBwF,YAAuB;;QAC7BA,gBAAgBjB,CAAhB,IAAqBiB,eAAeE,CAAxC,EAA2C;SACtCF,YAAJ;;;;;;;;;;;;;;;;;;;;;MAMIb,wBAAwBF,iBAAiB,CAA/C;MACIiB,IAAInB,CAAJ,GAAQS,MAAM,CAACS,SAASjB,KAAV,IAAmBG,qBAAzB,CAAZ,EAA6D;WACtD,UAAN;;;WAGQ,CAACe,IAAInB,CAAL,IAAUI,qBAAnB;MACIe,CAAJ;;;;;;;yBAE2B1F,KAA3B,mIAAkC;QAAvBwF,aAAuB;;QAC7BA,gBAAejB,CAAf,IAAoB,EAAEC,KAAF,GAAUiB,MAAlC,EAA0C;aACnC,UAAN;;QAEGD,iBAAgBjB,CAApB,EAAuB;;SAElBQ,IAAIP,KAAR;UACK,IAAIY,IAAIpG,IAAb,qBAAuCoG,KAAKpG,IAA5C,EAAkD;UAC3CmG,IAAIC,KAAKC,IAAL,GAAYC,IAAZ,GAAoBF,KAAKC,OAAOE,IAAZ,GAAmBA,IAAnB,GAA0BH,IAAIC,IAA5D;UACIN,IAAII,CAAR,EAAW;;;UAGLF,UAAUF,IAAII,CAApB;UACMD,aAAalG,OAAOmG,CAA1B;aACOhL,IAAP,CACC0K,mBAAmBC,aAAaK,IAAIF,UAAUC,UAA3B,EAAuC,CAAvC,CAAnB,CADD;UAGIF,MAAMC,UAAUC,UAAhB,CAAJ;;;YAGM/K,IAAP,CAAY0K,mBAAmBC,aAAaC,CAAb,EAAgB,CAAhB,CAAnB,CAAZ;YACOL,MAAMF,KAAN,EAAaG,qBAAb,EAAoCF,kBAAkBG,WAAtD,CAAP;aACQ,CAAR;OACEH,cAAF;;;;;;;;;;;;;;;;;;IAIAD,KAAF;IACED,CAAF;;QAGMzE,OAAO7F,IAAP,CAAY,EAAZ,CAAP;CArFD;;;;;;;;;;;;;AAmGA,IAAMyB,YAAY,SAAZA,SAAY,CAASsE,KAAT,EAAgB;QAC1BqE,UAAUrE,KAAV,EAAiB,UAASoE,MAAT,EAAiB;SACjCE,cAAczE,IAAd,CAAmBuE,MAAnB,IACJJ,OAAOI,OAAOxI,KAAP,CAAa,CAAb,EAAgB/C,WAAhB,EAAP,CADI,GAEJuL,MAFH;EADM,CAAP;CADD;;;;;;;;;;;;;AAmBA,IAAM5I,UAAU,SAAVA,OAAU,CAASwE,KAAT,EAAgB;QACxBqE,UAAUrE,KAAV,EAAiB,UAASoE,MAAT,EAAiB;SACjCD,cAActE,IAAd,CAAmBuE,MAAnB,IACJ,SAASL,OAAOK,MAAP,CADL,GAEJA,MAFH;EADM,CAAP;CADD;;;;;AAWA,IAAM7I,WAAW;;;;;;YAML,OANK;;;;;;;;SAcR;YACG2I,UADH;YAEGD;EAhBK;WAkBND,MAlBM;WAmBND,MAnBM;YAoBLvI,OApBK;cAqBHE;CArBd,CAwBA;;ADvbA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,AACA,AACA,AACA,AAiDA,AAAO,IAAMvD,UAA6C,EAAnD;AAEP,AAAA,SAAAuC,UAAA,CAA2BmJ,GAA3B,EAAA;QACOJ,IAAII,IAAIC,UAAJ,CAAe,CAAf,CAAV;QACIxI,UAAJ;QAEImI,IAAI,EAAR,EAAYnI,IAAI,OAAOmI,EAAE7F,QAAF,CAAW,EAAX,EAAepD,WAAf,EAAX,CAAZ,KACK,IAAIiJ,IAAI,GAAR,EAAanI,IAAI,MAAMmI,EAAE7F,QAAF,CAAW,EAAX,EAAepD,WAAf,EAAV,CAAb,KACA,IAAIiJ,IAAI,IAAR,EAAcnI,IAAI,MAAM,CAAEmI,KAAK,CAAN,GAAW,GAAZ,EAAiB7F,QAAjB,CAA0B,EAA1B,EAA8BpD,WAA9B,EAAN,GAAoD,GAApD,GAA0D,CAAEiJ,IAAI,EAAL,GAAW,GAAZ,EAAiB7F,QAAjB,CAA0B,EAA1B,EAA8BpD,WAA9B,EAA9D,CAAd,KACAc,IAAI,MAAM,CAAEmI,KAAK,EAAN,GAAY,GAAb,EAAkB7F,QAAlB,CAA2B,EAA3B,EAA+BpD,WAA/B,EAAN,GAAqD,GAArD,GAA2D,CAAGiJ,KAAK,CAAN,GAAW,EAAZ,GAAkB,GAAnB,EAAwB7F,QAAxB,CAAiC,EAAjC,EAAqCpD,WAArC,EAA3D,GAAgH,GAAhH,GAAsH,CAAEiJ,IAAI,EAAL,GAAW,GAAZ,EAAiB7F,QAAjB,CAA0B,EAA1B,EAA8BpD,WAA9B,EAA1H;WAEEc,CAAP;;AAGD,AAAA,SAAAuB,WAAA,CAA4BD,GAA5B,EAAA;QACKyG,SAAS,EAAb;QACIE,IAAI,CAAR;QACMK,KAAKhH,IAAI1C,MAAf;WAEOqJ,IAAIK,EAAX,EAAe;YACRH,IAAI1C,SAASnE,IAAI0G,MAAJ,CAAWC,IAAI,CAAf,EAAkB,CAAlB,CAAT,EAA+B,EAA/B,CAAV;YAEIE,IAAI,GAAR,EAAa;sBACFzH,OAAOwH,YAAP,CAAoBC,CAApB,CAAV;iBACK,CAAL;SAFD,MAIK,IAAIA,KAAK,GAAL,IAAYA,IAAI,GAApB,EAAyB;gBACxBG,KAAKL,CAAN,IAAY,CAAhB,EAAmB;oBACZG,KAAK3C,SAASnE,IAAI0G,MAAJ,CAAWC,IAAI,CAAf,EAAkB,CAAlB,CAAT,EAA+B,EAA/B,CAAX;0BACUvH,OAAOwH,YAAP,CAAqB,CAACC,IAAI,EAAL,KAAY,CAAb,GAAmBC,KAAK,EAA5C,CAAV;aAFD,MAGO;0BACI9G,IAAI0G,MAAJ,CAAWC,CAAX,EAAc,CAAd,CAAV;;iBAEI,CAAL;SAPI,MASA,IAAIE,KAAK,GAAT,EAAc;gBACbG,KAAKL,CAAN,IAAY,CAAhB,EAAmB;oBACZG,KAAK3C,SAASnE,IAAI0G,MAAJ,CAAWC,IAAI,CAAf,EAAkB,CAAlB,CAAT,EAA+B,EAA/B,CAAX;oBACMI,KAAK5C,SAASnE,IAAI0G,MAAJ,CAAWC,IAAI,CAAf,EAAkB,CAAlB,CAAT,EAA+B,EAA/B,CAAX;0BACUvH,OAAOwH,YAAP,CAAqB,CAACC,IAAI,EAAL,KAAY,EAAb,GAAoB,CAACC,KAAK,EAAN,KAAa,CAAjC,GAAuCC,KAAK,EAAhE,CAAV;aAHD,MAIO;0BACI/G,IAAI0G,MAAJ,CAAWC,CAAX,EAAc,CAAd,CAAV;;iBAEI,CAAL;SARI,MAUA;sBACM3G,IAAI0G,MAAJ,CAAWC,CAAX,EAAc,CAAd,CAAV;iBACK,CAAL;;;WAIKF,MAAP;;AAGD,SAAAD,2BAAA,CAAqCvJ,UAArC,EAA+D8F,QAA/D,EAAA;aACApF,gBAAC,CAA0BqC,GAA1B,EAAD;YACQF,SAASG,YAAYD,GAAZ,CAAf;eACQ,CAACF,OAAOzD,KAAP,CAAa0G,SAAShD,UAAtB,CAAD,GAAqCC,GAArC,GAA2CF,MAAnD;;QAGG7C,WAAWxB,MAAf,EAAuBwB,WAAWxB,MAAX,GAAoB2D,OAAOnC,WAAWxB,MAAlB,EAA0BgC,OAA1B,CAAkCsF,SAASrF,WAA3C,EAAwDC,gBAAxD,EAA0E1B,WAA1E,GAAwFwB,OAAxF,CAAgGsF,SAASwD,UAAzG,EAAqH,EAArH,CAApB;QACnBtJ,WAAWoF,QAAX,KAAwB9F,SAA5B,EAAuCU,WAAWoF,QAAX,GAAsBjD,OAAOnC,WAAWoF,QAAlB,EAA4B5E,OAA5B,CAAoCsF,SAASrF,WAA7C,EAA0DC,gBAA1D,EAA4EF,OAA5E,CAAoFsF,SAASuD,YAA7F,EAA2GxI,UAA3G,EAAuHL,OAAvH,CAA+HsF,SAASrF,WAAxI,EAAqJE,WAArJ,CAAtB;QACnCX,WAAW8D,IAAX,KAAoBxE,SAAxB,EAAmCU,WAAW8D,IAAX,GAAkB3B,OAAOnC,WAAW8D,IAAlB,EAAwBtD,OAAxB,CAAgCsF,SAASrF,WAAzC,EAAsDC,gBAAtD,EAAwE1B,WAAxE,GAAsFwB,OAAtF,CAA8FsF,SAASsD,QAAvG,EAAiHvI,UAAjH,EAA6HL,OAA7H,CAAqIsF,SAASrF,WAA9I,EAA2JE,WAA3J,CAAlB;QAC/BX,WAAWP,IAAX,KAAoBH,SAAxB,EAAmCU,WAAWP,IAAX,GAAkB0C,OAAOnC,WAAWP,IAAlB,EAAwBe,OAAxB,CAAgCsF,SAASrF,WAAzC,EAAsDC,gBAAtD,EAAwEF,OAAxE,CAAiFR,WAAWxB,MAAX,GAAoBsH,SAASoD,QAA7B,GAAwCpD,SAASqD,iBAAlI,EAAsJtI,UAAtJ,EAAkKL,OAAlK,CAA0KsF,SAASrF,WAAnL,EAAgME,WAAhM,CAAlB;QAC/BX,WAAWE,KAAX,KAAqBZ,SAAzB,EAAoCU,WAAWE,KAAX,GAAmBiC,OAAOnC,WAAWE,KAAlB,EAAyBM,OAAzB,CAAiCsF,SAASrF,WAA1C,EAAuDC,gBAAvD,EAAyEF,OAAzE,CAAiFsF,SAASmD,SAA1F,EAAqGpI,UAArG,EAAiHL,OAAjH,CAAyHsF,SAASrF,WAAlI,EAA+IE,WAA/I,CAAnB;QAChCX,WAAWiF,QAAX,KAAwB3F,SAA5B,EAAuCU,WAAWiF,QAAX,GAAsB9C,OAAOnC,WAAWiF,QAAlB,EAA4BzE,OAA5B,CAAoCsF,SAASrF,WAA7C,EAA0DC,gBAA1D,EAA4EF,OAA5E,CAAoFsF,SAASkD,YAA7F,EAA2GnI,UAA3G,EAAuHL,OAAvH,CAA+HsF,SAASrF,WAAxI,EAAqJE,WAArJ,CAAtB;WAEhCX,UAAP;;AACA;AAED,SAAA4I,kBAAA,CAA4B7F,GAA5B,EAAA;WACQA,IAAIvC,OAAJ,CAAY,SAAZ,EAAuB,IAAvB,KAAgC,GAAvC;;AAGD,SAAAqG,cAAA,CAAwB/C,IAAxB,EAAqCgC,QAArC,EAAA;QACO/F,UAAU+D,KAAK1E,KAAL,CAAW0G,SAAS2C,WAApB,KAAoC,EAApD;;iCACoB1I,OAFrB;QAEU+I,OAFV;;QAIKA,OAAJ,EAAa;eACLA,QAAQtG,KAAR,CAAc,GAAd,EAAmBmG,GAAnB,CAAuBC,kBAAvB,EAA2CxI,IAA3C,CAAgD,GAAhD,CAAP;KADD,MAEO;eACC0D,IAAP;;;AAIF,SAAA8C,cAAA,CAAwB9C,IAAxB,EAAqCgC,QAArC,EAAA;QACO/F,UAAU+D,KAAK1E,KAAL,CAAW0G,SAASC,WAApB,KAAoC,EAApD;;kCAC0BhG,OAF3B;QAEU+I,OAFV;QAEmBxB,IAFnB;;QAIKwB,OAAJ,EAAa;oCACUA,QAAQ9J,WAAR,GAAsBwD,KAAtB,CAA4B,IAA5B,EAAkCuG,OAAlC,EADV;;YACLL,IADK;YACCG,KADD;;YAENR,cAAcQ,QAAQA,MAAMrG,KAAN,CAAY,GAAZ,EAAiBmG,GAAjB,CAAqBC,kBAArB,CAAR,GAAmD,EAAvE;YACMN,aAAaI,KAAKlG,KAAL,CAAW,GAAX,EAAgBmG,GAAhB,CAAoBC,kBAApB,CAAnB;YACMR,yBAAyBtC,SAAS2C,WAAT,CAAqBzC,IAArB,CAA0BsC,WAAWA,WAAWjI,MAAX,GAAoB,CAA/B,CAA1B,CAA/B;YACM8H,aAAaC,yBAAyB,CAAzB,GAA6B,CAAhD;YACMG,kBAAkBD,WAAWjI,MAAX,GAAoB8H,UAA5C;YACMhI,SAASqI,MAAcL,UAAd,CAAf;aAEK,IAAI9G,IAAI,CAAb,EAAgBA,IAAI8G,UAApB,EAAgC,EAAE9G,CAAlC,EAAqC;mBAC7BA,CAAP,IAAYgH,YAAYhH,CAAZ,KAAkBiH,WAAWC,kBAAkBlH,CAA7B,CAAlB,IAAqD,EAAjE;;YAGG+G,sBAAJ,EAA4B;mBACpBD,aAAa,CAApB,IAAyBtB,eAAe1G,OAAOgI,aAAa,CAApB,CAAf,EAAuCrC,QAAvC,CAAzB;;YAGK+B,gBAAgB1H,OAAO+H,MAAP,CAAmD,UAACH,GAAD,EAAME,KAAN,EAAaP,KAAb,EAA3E;gBACO,CAACO,KAAD,IAAUA,UAAU,GAAxB,EAA6B;oBACtBD,cAAcD,IAAIA,IAAI1H,MAAJ,GAAa,CAAjB,CAApB;oBACI2H,eAAeA,YAAYN,KAAZ,GAAoBM,YAAY3H,MAAhC,KAA2CqH,KAA9D,EAAqE;gCACxDrH,MAAZ;iBADD,MAEO;wBACFC,IAAJ,CAAS,EAAEoH,YAAF,EAASrH,QAAS,CAAlB,EAAT;;;mBAGK0H,GAAP;SATqB,EAUnB,EAVmB,CAAtB;YAYMN,oBAAoBI,cAAcC,IAAd,CAAmB,UAACF,CAAD,EAAID,CAAJ;mBAAUA,EAAEtH,MAAF,GAAWuH,EAAEvH,MAAvB;SAAnB,EAAkD,CAAlD,CAA1B;YAEIgH,gBAAJ;YACII,qBAAqBA,kBAAkBpH,MAAlB,GAA2B,CAApD,EAAuD;gBAChDkH,WAAWpH,OAAO4B,KAAP,CAAa,CAAb,EAAgB0F,kBAAkBC,KAAlC,CAAjB;gBACMF,UAAUrH,OAAO4B,KAAP,CAAa0F,kBAAkBC,KAAlB,GAA0BD,kBAAkBpH,MAAzD,CAAhB;sBACUkH,SAASnH,IAAT,CAAc,GAAd,IAAqB,IAArB,GAA4BoH,QAAQpH,IAAR,CAAa,GAAb,CAAtC;SAHD,MAIO;sBACID,OAAOC,IAAP,CAAY,GAAZ,CAAV;;YAGGkH,IAAJ,EAAU;uBACE,MAAMA,IAAjB;;eAGMD,OAAP;KA5CD,MA6CO;eACCvD,IAAP;;;AAIF,IAAMsD,YAAY,iIAAlB;AACA,IAAMD,wBAA4C,EAAD,CAAK/H,KAAL,CAAW,OAAX,EAAqB,CAArB,MAA4BE,SAA7E;AAEA,AAAA,SAAAQ,KAAA,CAAsBiH,SAAtB,EAAA;QAAwC9H,OAAxC,uEAA6D,EAA7D;;QACOe,aAA2B,EAAjC;QACM8F,WAAY7G,QAAQuC,GAAR,KAAgB,KAAhB,GAAwByC,YAAxB,GAAuCD,YAAzD;QAEI/E,QAAQ2G,SAAR,KAAsB,QAA1B,EAAoCmB,YAAY,CAAC9H,QAAQT,MAAR,GAAiBS,QAAQT,MAAR,GAAiB,GAAlC,GAAwC,EAAzC,IAA+C,IAA/C,GAAsDuI,SAAlE;QAE9BhH,UAAUgH,UAAU3H,KAAV,CAAgBgI,SAAhB,CAAhB;QAEIrH,OAAJ,EAAa;YACRoH,qBAAJ,EAA2B;;uBAEf3I,MAAX,GAAoBuB,QAAQ,CAAR,CAApB;uBACWqF,QAAX,GAAsBrF,QAAQ,CAAR,CAAtB;uBACW+D,IAAX,GAAkB/D,QAAQ,CAAR,CAAlB;uBACW8D,IAAX,GAAkBqD,SAASnH,QAAQ,CAAR,CAAT,EAAqB,EAArB,CAAlB;uBACWN,IAAX,GAAkBM,QAAQ,CAAR,KAAc,EAAhC;uBACWG,KAAX,GAAmBH,QAAQ,CAAR,CAAnB;uBACWkF,QAAX,GAAsBlF,QAAQ,CAAR,CAAtB;;gBAGIiH,MAAMhH,WAAW6D,IAAjB,CAAJ,EAA4B;2BAChBA,IAAX,GAAkB9D,QAAQ,CAAR,CAAlB;;SAZF,MAcO;;;uBAEKvB,MAAX,GAAoBuB,QAAQ,CAAR,KAAcT,SAAlC;uBACW8F,QAAX,GAAuB2B,UAAUE,OAAV,CAAkB,GAAlB,MAA2B,CAAC,CAA5B,GAAgClH,QAAQ,CAAR,CAAhC,GAA6CT,SAApE;uBACWwE,IAAX,GAAmBiD,UAAUE,OAAV,CAAkB,IAAlB,MAA4B,CAAC,CAA7B,GAAiClH,QAAQ,CAAR,CAAjC,GAA8CT,SAAjE;uBACWuE,IAAX,GAAkBqD,SAASnH,QAAQ,CAAR,CAAT,EAAqB,EAArB,CAAlB;uBACWN,IAAX,GAAkBM,QAAQ,CAAR,KAAc,EAAhC;uBACWG,KAAX,GAAoB6G,UAAUE,OAAV,CAAkB,GAAlB,MAA2B,CAAC,CAA5B,GAAgClH,QAAQ,CAAR,CAAhC,GAA6CT,SAAjE;uBACW2F,QAAX,GAAuB8B,UAAUE,OAAV,CAAkB,GAAlB,MAA2B,CAAC,CAA5B,GAAgClH,QAAQ,CAAR,CAAhC,GAA6CT,SAApE;;gBAGI0H,MAAMhH,WAAW6D,IAAjB,CAAJ,EAA4B;2BAChBA,IAAX,GAAmBkD,UAAU3H,KAAV,CAAgB,+BAAhB,IAAmDW,QAAQ,CAAR,CAAnD,GAAgET,SAAnF;;;YAIEU,WAAW8D,IAAf,EAAqB;;uBAETA,IAAX,GAAkB8C,eAAeC,eAAe7G,WAAW8D,IAA1B,EAAgCgC,QAAhC,CAAf,EAA0DA,QAA1D,CAAlB;;;YAIG9F,WAAWxB,MAAX,KAAsBc,SAAtB,IAAmCU,WAAWoF,QAAX,KAAwB9F,SAA3D,IAAwEU,WAAW8D,IAAX,KAAoBxE,SAA5F,IAAyGU,WAAW6D,IAAX,KAAoBvE,SAA7H,IAA0I,CAACU,WAAWP,IAAtJ,IAA8JO,WAAWE,KAAX,KAAqBZ,SAAvL,EAAkM;uBACtLsG,SAAX,GAAuB,eAAvB;SADD,MAEO,IAAI5F,WAAWxB,MAAX,KAAsBc,SAA1B,EAAqC;uBAChCsG,SAAX,GAAuB,UAAvB;SADM,MAEA,IAAI5F,WAAWiF,QAAX,KAAwB3F,SAA5B,EAAuC;uBAClCsG,SAAX,GAAuB,UAAvB;SADM,MAEA;uBACKA,SAAX,GAAuB,KAAvB;;;YAIG3G,QAAQ2G,SAAR,IAAqB3G,QAAQ2G,SAAR,KAAsB,QAA3C,IAAuD3G,QAAQ2G,SAAR,KAAsB5F,WAAW4F,SAA5F,EAAuG;uBAC3F1G,KAAX,GAAmBc,WAAWd,KAAX,IAAoB,kBAAkBD,QAAQ2G,SAA1B,GAAsC,aAA7E;;;YAIKjG,gBAAgBrB,QAAQ,CAACW,QAAQT,MAAR,IAAkBwB,WAAWxB,MAA7B,IAAuC,EAAxC,EAA4CQ,WAA5C,EAAR,CAAtB;;YAGI,CAACC,QAAQsD,cAAT,KAA4B,CAAC5C,aAAD,IAAkB,CAACA,cAAc4C,cAA7D,CAAJ,EAAkF;;gBAE7EvC,WAAW8D,IAAX,KAAoB7E,QAAQ2E,UAAR,IAAuBjE,iBAAiBA,cAAciE,UAA1E,CAAJ,EAA4F;;oBAEvF;+BACQE,IAAX,GAAkBpC,SAASC,OAAT,CAAiB3B,WAAW8D,IAAX,CAAgBtD,OAAhB,CAAwBsF,SAASrF,WAAjC,EAA8CuC,WAA9C,EAA2DhE,WAA3D,EAAjB,CAAlB;iBADD,CAEE,OAAOyC,CAAP,EAAU;+BACAvC,KAAX,GAAmBc,WAAWd,KAAX,IAAoB,oEAAoEuC,CAA3G;;;;wCAI0BzB,UAA5B,EAAwCgE,YAAxC;SAXD,MAYO;;wCAEsBhE,UAA5B,EAAwC8F,QAAxC;;;YAIGnG,iBAAiBA,cAAcG,KAAnC,EAA0C;0BAC3BA,KAAd,CAAoBE,UAApB,EAAgCf,OAAhC;;KA3EF,MA6EO;mBACKC,KAAX,GAAmBc,WAAWd,KAAX,IAAoB,wBAAvC;;WAGMc,UAAP;;AACA;AAED,SAAA6F,mBAAA,CAA6B7F,UAA7B,EAAuDf,OAAvD,EAAA;QACO6G,WAAY7G,QAAQuC,GAAR,KAAgB,KAAhB,GAAwByC,YAAxB,GAAuCD,YAAzD;QACMwB,YAA0B,EAAhC;QAEIxF,WAAWoF,QAAX,KAAwB9F,SAA5B,EAAuC;kBAC5BgB,IAAV,CAAeN,WAAWoF,QAA1B;kBACU9E,IAAV,CAAe,GAAf;;QAGGN,WAAW8D,IAAX,KAAoBxE,SAAxB,EAAmC;;kBAExBgB,IAAV,CAAesG,eAAeC,eAAe1E,OAAOnC,WAAW8D,IAAlB,CAAf,EAAwCgC,QAAxC,CAAf,EAAkEA,QAAlE,EAA4EtF,OAA5E,CAAoFsF,SAASC,WAA7F,EAA0G,UAACe,CAAD,EAAIJ,EAAJ,EAAQC,EAAR;mBAAe,MAAMD,EAAN,IAAYC,KAAK,QAAQA,EAAb,GAAkB,EAA9B,IAAoC,GAAnD;SAA1G,CAAf;;QAGG,OAAO3G,WAAW6D,IAAlB,KAA2B,QAA/B,EAAyC;kBAC9BvD,IAAV,CAAe,GAAf;kBACUA,IAAV,CAAeN,WAAW6D,IAAX,CAAgBE,QAAhB,CAAyB,EAAzB,CAAf;;WAGMyB,UAAUnF,MAAV,GAAmBmF,UAAUpF,IAAV,CAAe,EAAf,CAAnB,GAAwCd,SAA/C;;AACA;AAED,IAAMmH,OAAO,UAAb;AACA,IAAMD,OAAO,aAAb;AACA,IAAMD,OAAO,eAAb;AACA,AACA,IAAMF,OAAO,wBAAb;AAEA,AAAA,SAAAhB,iBAAA,CAAkCc,KAAlC,EAAA;QACOF,SAAuB,EAA7B;WAEOE,MAAM9F,MAAb,EAAqB;YAChB8F,MAAM/G,KAAN,CAAYqH,IAAZ,CAAJ,EAAuB;oBACdN,MAAM3F,OAAN,CAAciG,IAAd,EAAoB,EAApB,CAAR;SADD,MAEO,IAAIN,MAAM/G,KAAN,CAAYoH,IAAZ,CAAJ,EAAuB;oBACrBL,MAAM3F,OAAN,CAAcgG,IAAd,EAAoB,GAApB,CAAR;SADM,MAEA,IAAIL,MAAM/G,KAAN,CAAYmH,IAAZ,CAAJ,EAAuB;oBACrBJ,MAAM3F,OAAN,CAAc+F,IAAd,EAAoB,GAApB,CAAR;mBACOD,GAAP;SAFM,MAGA,IAAIH,UAAU,GAAV,IAAiBA,UAAU,IAA/B,EAAqC;oBACnC,EAAR;SADM,MAEA;gBACAC,KAAKD,MAAM/G,KAAN,CAAYiH,IAAZ,CAAX;gBACID,EAAJ,EAAQ;oBACDX,IAAIW,GAAG,CAAH,CAAV;wBACQD,MAAMpE,KAAN,CAAY0D,EAAEpF,MAAd,CAAR;uBACOC,IAAP,CAAYmF,CAAZ;aAHD,MAIO;sBACA,IAAIS,KAAJ,CAAU,kCAAV,CAAN;;;;WAKID,OAAO7F,IAAP,CAAY,EAAZ,CAAP;;AACA;AAED,AAAA,SAAAR,SAAA,CAA0BI,UAA1B,EAAA;QAAoDf,OAApD,uEAAyE,EAAzE;;QACO6G,WAAY7G,QAAQuC,GAAR,GAAcyC,YAAd,GAA6BD,YAA/C;QACMwB,YAA0B,EAAhC;;QAGM7F,gBAAgBrB,QAAQ,CAACW,QAAQT,MAAR,IAAkBwB,WAAWxB,MAA7B,IAAuC,EAAxC,EAA4CQ,WAA5C,EAAR,CAAtB;;QAGIW,iBAAiBA,cAAcC,SAAnC,EAA8CD,cAAcC,SAAd,CAAwBI,UAAxB,EAAoCf,OAApC;QAE1Ce,WAAW8D,IAAf,EAAqB;;YAEhBgC,SAASC,WAAT,CAAqBC,IAArB,CAA0BhG,WAAW8D,IAArC,CAAJ,EAAgD;;;;aAK3C,IAAI7E,QAAQ2E,UAAR,IAAuBjE,iBAAiBA,cAAciE,UAA1D,EAAuE;;oBAEvE;+BACQE,IAAX,GAAmB,CAAC7E,QAAQuC,GAAT,GAAeE,SAASC,OAAT,CAAiB3B,WAAW8D,IAAX,CAAgBtD,OAAhB,CAAwBsF,SAASrF,WAAjC,EAA8CuC,WAA9C,EAA2DhE,WAA3D,EAAjB,CAAf,GAA4G0C,SAASG,SAAT,CAAmB7B,WAAW8D,IAA9B,CAA/H;iBADD,CAEE,OAAOrC,CAAP,EAAU;+BACAvC,KAAX,GAAmBc,WAAWd,KAAX,IAAoB,iDAAiD,CAACD,QAAQuC,GAAT,GAAe,OAAf,GAAyB,SAA1E,IAAuF,iBAAvF,GAA2GC,CAAlJ;;;;;gCAMyBzB,UAA5B,EAAwC8F,QAAxC;QAEI7G,QAAQ2G,SAAR,KAAsB,QAAtB,IAAkC5F,WAAWxB,MAAjD,EAAyD;kBAC9C8B,IAAV,CAAeN,WAAWxB,MAA1B;kBACU8B,IAAV,CAAe,GAAf;;QAGKoF,YAAYG,oBAAoB7F,UAApB,EAAgCf,OAAhC,CAAlB;QACIyG,cAAcpG,SAAlB,EAA6B;YACxBL,QAAQ2G,SAAR,KAAsB,QAA1B,EAAoC;sBACzBtF,IAAV,CAAe,IAAf;;kBAGSA,IAAV,CAAeoF,SAAf;YAEI1F,WAAWP,IAAX,IAAmBO,WAAWP,IAAX,CAAgB6F,MAAhB,CAAuB,CAAvB,MAA8B,GAArD,EAA0D;sBAC/ChF,IAAV,CAAe,GAAf;;;QAIEN,WAAWP,IAAX,KAAoBH,SAAxB,EAAmC;YAC9BmG,IAAIzF,WAAWP,IAAnB;YAEI,CAACR,QAAQ0G,YAAT,KAA0B,CAAChG,aAAD,IAAkB,CAACA,cAAcgG,YAA3D,CAAJ,EAA8E;gBACzEN,kBAAkBI,CAAlB,CAAJ;;YAGGC,cAAcpG,SAAlB,EAA6B;gBACxBmG,EAAEjF,OAAF,CAAU,OAAV,EAAmB,MAAnB,CAAJ,CAD4B;;kBAInBF,IAAV,CAAemF,CAAf;;QAGGzF,WAAWE,KAAX,KAAqBZ,SAAzB,EAAoC;kBACzBgB,IAAV,CAAe,GAAf;kBACUA,IAAV,CAAeN,WAAWE,KAA1B;;QAGGF,WAAWiF,QAAX,KAAwB3F,SAA5B,EAAuC;kBAC5BgB,IAAV,CAAe,GAAf;kBACUA,IAAV,CAAeN,WAAWiF,QAA1B;;WAGMO,UAAUpF,IAAV,CAAe,EAAf,CAAP,CAxED;;AAyEC;AAED,AAAA,SAAAsE,iBAAA,CAAkCS,IAAlC,EAAsDD,QAAtD,EAAA;QAA8EjG,OAA9E,uEAAmG,EAAnG;QAAuGsG,iBAAvG;;QACOP,SAAuB,EAA7B;QAEI,CAACO,iBAAL,EAAwB;eAChBzF,MAAMF,UAAUuF,IAAV,EAAgBlG,OAAhB,CAAN,EAAgCA,OAAhC,CAAP,CADuB;mBAEZa,MAAMF,UAAUsF,QAAV,EAAoBjG,OAApB,CAAN,EAAoCA,OAApC,CAAX,CAFuB;;cAIdA,WAAW,EAArB;QAEI,CAACA,QAAQE,QAAT,IAAqB+F,SAAS1G,MAAlC,EAA0C;eAClCA,MAAP,GAAgB0G,SAAS1G,MAAzB;;eAEO4G,QAAP,GAAkBF,SAASE,QAA3B;eACOtB,IAAP,GAAcoB,SAASpB,IAAvB;eACOD,IAAP,GAAcqB,SAASrB,IAAvB;eACOpE,IAAP,GAAc4F,kBAAkBH,SAASzF,IAAT,IAAiB,EAAnC,CAAd;eACOS,KAAP,GAAegF,SAAShF,KAAxB;KAPD,MAQO;YACFgF,SAASE,QAAT,KAAsB9F,SAAtB,IAAmC4F,SAASpB,IAAT,KAAkBxE,SAArD,IAAkE4F,SAASrB,IAAT,KAAkBvE,SAAxF,EAAmG;;mBAE3F8F,QAAP,GAAkBF,SAASE,QAA3B;mBACOtB,IAAP,GAAcoB,SAASpB,IAAvB;mBACOD,IAAP,GAAcqB,SAASrB,IAAvB;mBACOpE,IAAP,GAAc4F,kBAAkBH,SAASzF,IAAT,IAAiB,EAAnC,CAAd;mBACOS,KAAP,GAAegF,SAAShF,KAAxB;SAND,MAOO;gBACF,CAACgF,SAASzF,IAAd,EAAoB;uBACZA,IAAP,GAAc0F,KAAK1F,IAAnB;oBACIyF,SAAShF,KAAT,KAAmBZ,SAAvB,EAAkC;2BAC1BY,KAAP,GAAegF,SAAShF,KAAxB;iBADD,MAEO;2BACCA,KAAP,GAAeiF,KAAKjF,KAApB;;aALF,MAOO;oBACFgF,SAASzF,IAAT,CAAc6F,MAAd,CAAqB,CAArB,MAA4B,GAAhC,EAAqC;2BAC7B7F,IAAP,GAAc4F,kBAAkBH,SAASzF,IAA3B,CAAd;iBADD,MAEO;wBACF,CAAC0F,KAAKC,QAAL,KAAkB9F,SAAlB,IAA+B6F,KAAKrB,IAAL,KAAcxE,SAA7C,IAA0D6F,KAAKtB,IAAL,KAAcvE,SAAzE,KAAuF,CAAC6F,KAAK1F,IAAjG,EAAuG;+BAC/FA,IAAP,GAAc,MAAMyF,SAASzF,IAA7B;qBADD,MAEO,IAAI,CAAC0F,KAAK1F,IAAV,EAAgB;+BACfA,IAAP,GAAcyF,SAASzF,IAAvB;qBADM,MAEA;+BACCA,IAAP,GAAc0F,KAAK1F,IAAL,CAAUsC,KAAV,CAAgB,CAAhB,EAAmBoD,KAAK1F,IAAL,CAAUyC,WAAV,CAAsB,GAAtB,IAA6B,CAAhD,IAAqDgD,SAASzF,IAA5E;;2BAEMA,IAAP,GAAc4F,kBAAkBL,OAAOvF,IAAzB,CAAd;;uBAEMS,KAAP,GAAegF,SAAShF,KAAxB;;;mBAGMkF,QAAP,GAAkBD,KAAKC,QAAvB;mBACOtB,IAAP,GAAcqB,KAAKrB,IAAnB;mBACOD,IAAP,GAAcsB,KAAKtB,IAAnB;;eAEMrF,MAAP,GAAgB2G,KAAK3G,MAArB;;WAGMyG,QAAP,GAAkBC,SAASD,QAA3B;WAEOD,MAAP;;AACA;AAED,AAAA,SAAAD,OAAA,CAAwBJ,OAAxB,EAAwCE,WAAxC,EAA4D5F,OAA5D,EAAA;QACO2F,oBAAoBE,OAAO,EAAEtG,QAAS,MAAX,EAAP,EAA4BS,OAA5B,CAA1B;WACOW,UAAU8E,kBAAkB5E,MAAM6E,OAAN,EAAeC,iBAAf,CAAlB,EAAqD9E,MAAM+E,WAAN,EAAmBD,iBAAnB,CAArD,EAA4FA,iBAA5F,EAA+G,IAA/G,CAAV,EAAgIA,iBAAhI,CAAP;;AACA;AAID,AAAA,SAAAH,SAAA,CAA0BD,GAA1B,EAAmCvF,OAAnC,EAAA;QACK,OAAOuF,GAAP,KAAe,QAAnB,EAA6B;cACtB5E,UAAUE,MAAM0E,GAAN,EAAWvF,OAAX,CAAV,EAA+BA,OAA/B,CAAN;KADD,MAEO,IAAIqF,OAAOE,GAAP,MAAgB,QAApB,EAA8B;cAC9B1E,MAAMF,UAAyB4E,GAAzB,EAA8BvF,OAA9B,CAAN,EAA8CA,OAA9C,CAAN;;WAGMuF,GAAP;;AACA;AAID,AAAA,SAAAD,KAAA,CAAsBH,IAAtB,EAAgCC,IAAhC,EAA0CpF,OAA1C,EAAA;QACK,OAAOmF,IAAP,KAAgB,QAApB,EAA8B;eACtBxE,UAAUE,MAAMsE,IAAN,EAAYnF,OAAZ,CAAV,EAAgCA,OAAhC,CAAP;KADD,MAEO,IAAIqF,OAAOF,IAAP,MAAiB,QAArB,EAA+B;eAC9BxE,UAAyBwE,IAAzB,EAA+BnF,OAA/B,CAAP;;QAGG,OAAOoF,IAAP,KAAgB,QAApB,EAA8B;eACtBzE,UAAUE,MAAMuE,IAAN,EAAYpF,OAAZ,CAAV,EAAgCA,OAAhC,CAAP;KADD,MAEO,IAAIqF,OAAOD,IAAP,MAAiB,QAArB,EAA+B;eAC9BzE,UAAyByE,IAAzB,EAA+BpF,OAA/B,CAAP;;WAGMmF,SAASC,IAAhB;;AACA;AAED,AAAA,SAAAF,eAAA,CAAgCpB,GAAhC,EAA4C9D,OAA5C,EAAA;WACQ8D,OAAOA,IAAIgB,QAAJ,GAAevD,OAAf,CAAwB,CAACvB,OAAD,IAAY,CAACA,QAAQuC,GAArB,GAA2BwC,aAAaE,MAAxC,GAAiDD,aAAaC,MAAtF,EAA+FrD,UAA/F,CAAd;;AACA;AAED,AAAA,SAAAe,iBAAA,CAAkCmB,GAAlC,EAA8C9D,OAA9C,EAAA;WACQ8D,OAAOA,IAAIgB,QAAJ,GAAevD,OAAf,CAAwB,CAACvB,OAAD,IAAY,CAACA,QAAQuC,GAArB,GAA2BwC,aAAavD,WAAxC,GAAsDwD,aAAaxD,WAA3F,EAAyGuC,WAAzG,CAAd;CACA;;ADziBD,IAAMzD,UAA2B;YACvB,MADuB;gBAGnB,IAHmB;WAKxB,eAAUS,UAAV,EAAoCf,OAApC,EAAT;;YAEM,CAACe,WAAW8D,IAAhB,EAAsB;uBACV5E,KAAX,GAAmBc,WAAWd,KAAX,IAAoB,6BAAvC;;eAGMc,UAAP;KAX+B;eAcpB,mBAAUA,UAAV,EAAoCf,OAApC,EAAb;;YAEMe,WAAW6D,IAAX,MAAqB1B,OAAOnC,WAAWxB,MAAlB,EAA0BQ,WAA1B,OAA4C,OAA5C,GAAsD,EAAtD,GAA2D,GAAhF,KAAwFgB,WAAW6D,IAAX,KAAoB,EAAhH,EAAoH;uBACxGA,IAAX,GAAkBvE,SAAlB;;;YAIG,CAACU,WAAWP,IAAhB,EAAsB;uBACVA,IAAX,GAAkB,GAAlB;;;;;eAOMO,UAAP;;CA7BF,CAiCA;;ADhCA,IAAMT,YAA2B;YACvB,OADuB;gBAEnBX,QAAKgF,UAFc;WAGxBhF,QAAKkB,KAHmB;eAIpBlB,QAAKgB;CAJlB,CAOA;;ADMA,IAAMoB,IAAkB,EAAxB;AACA,IAAM2C,QAAQ,IAAd;;AAGA,IAAMR,eAAe,4BAA4BQ,QAAQ,2EAAR,GAAsF,EAAlH,IAAwH,GAA7I;AACA,IAAMD,WAAW,aAAjB;AACA,IAAMH,eAAeE,OAAOA,OAAO,YAAYC,QAAZ,GAAuB,GAAvB,GAA6BA,QAA7B,GAAwCA,QAAxC,GAAmD,GAAnD,GAAyDA,QAAzD,GAAoEA,QAA3E,IAAuF,GAAvF,GAA6FD,OAAO,gBAAgBC,QAAhB,GAA2B,GAA3B,GAAiCA,QAAjC,GAA4CA,QAAnD,CAA7F,GAA4J,GAA5J,GAAkKD,OAAO,MAAMC,QAAN,GAAiBA,QAAxB,CAAzK,CAArB;;;;;;;;;;;;AAaA,IAAML,UAAU,uDAAhB;AACA,IAAMG,UAAU,4DAAhB;AACA,IAAMF,UAAUJ,MAAMM,OAAN,EAAe,YAAf,CAAhB;AACA,AACA,AACA,AACA,AAEA,AAEA,IAAMJ,gBAAgB,qCAAtB;AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AAEA,IAAMN,aAAa,IAAIG,MAAJ,CAAWE,YAAX,EAAyB,GAAzB,CAAnB;AACA,IAAM1C,cAAc,IAAIwC,MAAJ,CAAWM,YAAX,EAAyB,GAAzB,CAApB;AACA,IAAMtB,iBAAiB,IAAIgB,MAAJ,CAAWC,MAAM,KAAN,EAAaG,OAAb,EAAsB,OAAtB,EAA+B,OAA/B,EAAwCC,OAAxC,CAAX,EAA6D,GAA7D,CAAvB;AACA,AACA,IAAM1C,aAAa,IAAIqC,MAAJ,CAAWC,MAAM,KAAN,EAAaC,YAAb,EAA2BC,aAA3B,CAAX,EAAsD,GAAtD,CAAnB;AACA,IAAMrC,cAAcH,UAApB;AACA,AACA,AAEA,SAAAF,gBAAA,CAA0BqC,GAA1B,EAAA;QACOF,SAASG,YAAYD,GAAZ,CAAf;WACQ,CAACF,OAAOzD,KAAP,CAAa0D,UAAb,CAAD,GAA4BC,GAA5B,GAAkCF,MAA1C;;AAGD,IAAMtD,YAA8C;YAC1C,QAD0C;WAG3C,kBAAUS,UAAV,EAAoCf,OAApC,EAAT;YACQgC,mBAAmBjB,UAAzB;YACMoB,KAAKH,iBAAiBG,EAAjB,GAAuBH,iBAAiBxB,IAAjB,GAAwBwB,iBAAiBxB,IAAjB,CAAsB+C,KAAtB,CAA4B,GAA5B,CAAxB,GAA2D,EAA7F;yBACiB/C,IAAjB,GAAwBH,SAAxB;YAEI2B,iBAAiBf,KAArB,EAA4B;gBACvBuC,iBAAiB,KAArB;gBACM3B,UAAwB,EAA9B;gBACM8B,UAAU3B,iBAAiBf,KAAjB,CAAuBsC,KAAvB,CAA6B,GAA7B,CAAhB;iBAEK,IAAInB,IAAI,CAAR,EAAWe,KAAKQ,QAAQvC,MAA7B,EAAqCgB,IAAIe,EAAzC,EAA6C,EAAEf,CAA/C,EAAkD;oBAC3CqB,SAASE,QAAQvB,CAAR,EAAWmB,KAAX,CAAiB,GAAjB,CAAf;wBAEQE,OAAO,CAAP,CAAR;yBACM,IAAL;4BACOC,UAAUD,OAAO,CAAP,EAAUF,KAAV,CAAgB,GAAhB,CAAhB;6BACK,IAAInB,KAAI,CAAR,EAAWe,MAAKO,QAAQtC,MAA7B,EAAqCgB,KAAIe,GAAzC,EAA6C,EAAEf,EAA/C,EAAkD;+BAC9Cf,IAAH,CAAQqC,QAAQtB,EAAR,CAAR;;;yBAGG,SAAL;yCACkBF,OAAjB,GAA2BS,kBAAkBc,OAAO,CAAP,CAAlB,EAA6BzD,OAA7B,CAA3B;;yBAEI,MAAL;yCACkBiC,IAAjB,GAAwBU,kBAAkBc,OAAO,CAAP,CAAlB,EAA6BzD,OAA7B,CAAxB;;;yCAGiB,IAAjB;gCACQ2C,kBAAkBc,OAAO,CAAP,CAAlB,EAA6BzD,OAA7B,CAAR,IAAiD2C,kBAAkBc,OAAO,CAAP,CAAlB,EAA6BzD,OAA7B,CAAjD;;;;gBAKCwD,cAAJ,EAAoBxB,iBAAiBH,OAAjB,GAA2BA,OAA3B;;yBAGJZ,KAAjB,GAAyBZ,SAAzB;aAEK,IAAI+B,MAAI,CAAR,EAAWe,OAAKhB,GAAGf,MAAxB,EAAgCgB,MAAIe,IAApC,EAAwC,EAAEf,GAA1C,EAA6C;gBACtCiB,OAAOlB,GAAGC,GAAH,EAAMmB,KAAN,CAAY,GAAZ,CAAb;iBAEK,CAAL,IAAUZ,kBAAkBU,KAAK,CAAL,CAAlB,CAAV;gBAEI,CAACrD,QAAQsD,cAAb,EAA6B;;oBAExB;yBACE,CAAL,IAAUb,SAASC,OAAT,CAAiBC,kBAAkBU,KAAK,CAAL,CAAlB,EAA2BrD,OAA3B,EAAoCD,WAApC,EAAjB,CAAV;iBADD,CAEE,OAAOyC,CAAP,EAAU;qCACMvC,KAAjB,GAAyB+B,iBAAiB/B,KAAjB,IAA0B,6EAA6EuC,CAAhI;;aALF,MAOO;qBACD,CAAL,IAAUG,kBAAkBU,KAAK,CAAL,CAAlB,EAA2BrD,OAA3B,EAAoCD,WAApC,EAAV;;eAGEqC,GAAH,IAAQiB,KAAKlC,IAAL,CAAU,GAAV,CAAR;;eAGMa,gBAAP;KA5DkD;eA+DvC,sBAAUA,gBAAV,EAA6ChC,OAA7C,EAAb;YACQe,aAAaiB,gBAAnB;YACMG,KAAKiB,QAAQpB,iBAAiBG,EAAzB,CAAX;YACIA,EAAJ,EAAQ;iBACF,IAAIC,IAAI,CAAR,EAAWe,KAAKhB,GAAGf,MAAxB,EAAgCgB,IAAIe,EAApC,EAAwC,EAAEf,CAA1C,EAA6C;oBACtCS,SAASK,OAAOf,GAAGC,CAAH,CAAP,CAAf;oBACMW,QAAQF,OAAOI,WAAP,CAAmB,GAAnB,CAAd;oBACMZ,YAAaQ,OAAOC,KAAP,CAAa,CAAb,EAAgBC,KAAhB,CAAD,CAAyBxB,OAAzB,CAAiCC,WAAjC,EAA8CC,gBAA9C,EAAgEF,OAAhE,CAAwEC,WAAxE,EAAqFE,WAArF,EAAkGH,OAAlG,CAA0GyB,cAA1G,EAA0HpB,UAA1H,CAAlB;oBACIU,SAASO,OAAOC,KAAP,CAAaC,QAAQ,CAArB,CAAb;;oBAGI;6BACO,CAAC/C,QAAQuC,GAAT,GAAeE,SAASC,OAAT,CAAiBC,kBAAkBL,MAAlB,EAA0BtC,OAA1B,EAAmCD,WAAnC,EAAjB,CAAf,GAAoF0C,SAASG,SAAT,CAAmBN,MAAnB,CAA9F;iBADD,CAEE,OAAOE,CAAP,EAAU;+BACAvC,KAAX,GAAmBc,WAAWd,KAAX,IAAoB,0DAA0D,CAACD,QAAQuC,GAAT,GAAe,OAAf,GAAyB,SAAnF,IAAgG,iBAAhG,GAAoHC,CAA3J;;mBAGEJ,CAAH,IAAQC,YAAY,GAAZ,GAAkBC,MAA1B;;uBAGU9B,IAAX,GAAkB2B,GAAGhB,IAAH,CAAQ,GAAR,CAAlB;;YAGKU,UAAUG,iBAAiBH,OAAjB,GAA2BG,iBAAiBH,OAAjB,IAA4B,EAAvE;YAEIG,iBAAiBE,OAArB,EAA8BL,QAAQ,SAAR,IAAqBG,iBAAiBE,OAAtC;YAC1BF,iBAAiBC,IAArB,EAA2BJ,QAAQ,MAAR,IAAkBG,iBAAiBC,IAAnC;YAErBf,SAAS,EAAf;aACK,IAAMI,IAAX,IAAmBO,OAAnB,EAA4B;gBACvBA,QAAQP,IAAR,MAAkBS,EAAET,IAAF,CAAtB,EAA+B;uBACvBD,IAAP,CACCC,KAAKC,OAAL,CAAaC,WAAb,EAA0BC,gBAA1B,EAA4CF,OAA5C,CAAoDC,WAApD,EAAiEE,WAAjE,EAA8EH,OAA9E,CAAsFI,UAAtF,EAAkGC,UAAlG,IACA,GADA,GAEAC,QAAQP,IAAR,EAAcC,OAAd,CAAsBC,WAAtB,EAAmCC,gBAAnC,EAAqDF,OAArD,CAA6DC,WAA7D,EAA0EE,WAA1E,EAAuFH,OAAvF,CAA+FO,WAA/F,EAA4GF,UAA5G,CAHD;;;YAOEV,OAAOE,MAAX,EAAmB;uBACPH,KAAX,GAAmBC,OAAOC,IAAP,CAAY,GAAZ,CAAnB;;eAGMJ,UAAP;;CAzGF,CA6GA;;ADnKA,IAAMC,YAAY,iBAAlB;AACA,AAEA;AACA,IAAMV,YAAqD;YACjD,KADiD;WAGlD,kBAAUS,UAAV,EAAoCf,OAApC,EAAT;YACQc,UAAUC,WAAWP,IAAX,IAAmBO,WAAWP,IAAX,CAAgBL,KAAhB,CAAsBa,SAAtB,CAAnC;YACIpB,gBAAgBmB,UAApB;YAEID,OAAJ,EAAa;gBACNvB,SAASS,QAAQT,MAAR,IAAkBK,cAAcL,MAAhC,IAA0C,KAAzD;gBACMkB,MAAMK,QAAQ,CAAR,EAAWf,WAAX,EAAZ;gBACMF,MAAMiB,QAAQ,CAAR,CAAZ;gBACMF,YAAerB,MAAf,UAAyBS,QAAQS,GAAR,IAAeA,GAAxC,CAAN;gBACMC,gBAAgBrB,QAAQuB,SAAR,CAAtB;0BAEcH,GAAd,GAAoBA,GAApB;0BACcZ,GAAd,GAAoBA,GAApB;0BACcW,IAAd,GAAqBH,SAArB;gBAEIK,aAAJ,EAAmB;gCACFA,cAAcG,KAAd,CAAoBjB,aAApB,EAAmCI,OAAnC,CAAhB;;SAZF,MAcO;0BACQC,KAAd,GAAsBL,cAAcK,KAAd,IAAuB,wBAA7C;;eAGML,aAAP;KAzByD;eA4B9C,sBAAUA,aAAV,EAAuCI,OAAvC,EAAb;YACQT,SAASS,QAAQT,MAAR,IAAkBK,cAAcL,MAAhC,IAA0C,KAAzD;YACMkB,MAAMb,cAAca,GAA1B;YACMG,YAAerB,MAAf,UAAyBS,QAAQS,GAAR,IAAeA,GAAxC,CAAN;YACMC,gBAAgBrB,QAAQuB,SAAR,CAAtB;YAEIF,aAAJ,EAAmB;4BACFA,cAAcC,SAAd,CAAwBf,aAAxB,EAAuCI,OAAvC,CAAhB;;YAGKO,gBAAgBX,aAAtB;YACMC,MAAMD,cAAcC,GAA1B;sBACcW,IAAd,IAAwBC,OAAOT,QAAQS,GAAvC,UAA8CZ,GAA9C;eAEOU,aAAP;;CA1CF,CA8CA;;AD5DA,IAAMH,OAAO,0DAAb;AACA,AAEA;AACA,IAAME,YAAsE;YAClE,UADkE;WAGnE,eAAUV,aAAV,EAAuCI,OAAvC,EAAT;YACQF,iBAAiBF,aAAvB;uBACeN,IAAf,GAAsBQ,eAAeD,GAArC;uBACeA,GAAf,GAAqBQ,SAArB;YAEI,CAACL,QAAQE,QAAT,KAAsB,CAACJ,eAAeR,IAAhB,IAAwB,CAACQ,eAAeR,IAAf,CAAoBa,KAApB,CAA0BC,IAA1B,CAA/C,CAAJ,EAAqF;2BACrEH,KAAf,GAAuBH,eAAeG,KAAf,IAAwB,oBAA/C;;eAGMH,cAAP;KAZ0E;eAe/D,mBAAUA,cAAV,EAAyCE,OAAzC,EAAb;YACQJ,gBAAgBE,cAAtB;;sBAEcD,GAAd,GAAoB,CAACC,eAAeR,IAAf,IAAuB,EAAxB,EAA4BS,WAA5B,EAApB;eACOH,aAAP;;CAnBF,CAuBA;;ADhCAP,QAAQM,QAAKJ,MAAb,IAAuBI,OAAvB;AAEA,AACAN,QAAQK,UAAMH,MAAd,IAAwBG,SAAxB;AAEA,AACAL,QAAQI,UAAOF,MAAf,IAAyBE,SAAzB;AAEA,AACAJ,QAAQG,UAAID,MAAZ,IAAsBC,SAAtB;AAEA,AACAH,QAAQC,UAAKC,MAAb,IAAuBD,SAAvB,CAEA;;;;;;;;;;;;;;;;;"} \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/es5/uri.all.min.d.ts b/assets/node_modules/uri-js/dist/es5/uri.all.min.d.ts
deleted file mode 100644
index 320f534..0000000
--- a/assets/node_modules/uri-js/dist/es5/uri.all.min.d.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-export interface URIComponents {
- scheme?: string;
- userinfo?: string;
- host?: string;
- port?: number | string;
- path?: string;
- query?: string;
- fragment?: string;
- reference?: string;
- error?: string;
-}
-export interface URIOptions {
- scheme?: string;
- reference?: string;
- tolerant?: boolean;
- absolutePath?: boolean;
- iri?: boolean;
- unicodeSupport?: boolean;
- domainHost?: boolean;
-}
-export interface URISchemeHandler<Components extends URIComponents = URIComponents, Options extends URIOptions = URIOptions, ParentComponents extends URIComponents = URIComponents> {
- scheme: string;
- parse(components: ParentComponents, options: Options): Components;
- serialize(components: Components, options: Options): ParentComponents;
- unicodeSupport?: boolean;
- domainHost?: boolean;
- absolutePath?: boolean;
-}
-export interface URIRegExps {
- NOT_SCHEME: RegExp;
- NOT_USERINFO: RegExp;
- NOT_HOST: RegExp;
- NOT_PATH: RegExp;
- NOT_PATH_NOSCHEME: RegExp;
- NOT_QUERY: RegExp;
- NOT_FRAGMENT: RegExp;
- ESCAPE: RegExp;
- UNRESERVED: RegExp;
- OTHER_CHARS: RegExp;
- PCT_ENCODED: RegExp;
- IPV4ADDRESS: RegExp;
- IPV6ADDRESS: RegExp;
-}
-export declare const SCHEMES: {
- [scheme: string]: URISchemeHandler;
-};
-export declare function pctEncChar(chr: string): string;
-export declare function pctDecChars(str: string): string;
-export declare function parse(uriString: string, options?: URIOptions): URIComponents;
-export declare function removeDotSegments(input: string): string;
-export declare function serialize(components: URIComponents, options?: URIOptions): string;
-export declare function resolveComponents(base: URIComponents, relative: URIComponents, options?: URIOptions, skipNormalization?: boolean): URIComponents;
-export declare function resolve(baseURI: string, relativeURI: string, options?: URIOptions): string;
-export declare function normalize(uri: string, options?: URIOptions): string;
-export declare function normalize(uri: URIComponents, options?: URIOptions): URIComponents;
-export declare function equal(uriA: string, uriB: string, options?: URIOptions): boolean;
-export declare function equal(uriA: URIComponents, uriB: URIComponents, options?: URIOptions): boolean;
-export declare function escapeComponent(str: string, options?: URIOptions): string;
-export declare function unescapeComponent(str: string, options?: URIOptions): string;
diff --git a/assets/node_modules/uri-js/dist/es5/uri.all.min.js b/assets/node_modules/uri-js/dist/es5/uri.all.min.js
deleted file mode 100644
index 1b791ef..0000000
--- a/assets/node_modules/uri-js/dist/es5/uri.all.min.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/** @license URI.js v4.2.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */
-!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r(e.URI=e.URI||{})}(this,function(e){"use strict";function r(){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];if(r.length>1){r[0]=r[0].slice(0,-1);for(var t=r.length-1,o=1;o<t;++o)r[o]=r[o].slice(1,-1);return r[t]=r[t].slice(1),r.join("")}return r[0]}function n(e){return"(?:"+e+")"}function t(e){return e===undefined?"undefined":null===e?"null":Object.prototype.toString.call(e).split(" ").pop().split("]").shift().toLowerCase()}function o(e){return e.toUpperCase()}function a(e){return e!==undefined&&null!==e?e instanceof Array?e:"number"!=typeof e.length||e.split||e.setInterval||e.call?[e]:Array.prototype.slice.call(e):[]}function i(e,r){var n=e;if(r)for(var t in r)n[t]=r[t];return n}function u(e){var t=r("[0-9]","[A-Fa-f]"),o=n(n("%[EFef]"+t+"%"+t+t+"%"+t+t)+"|"+n("%[89A-Fa-f]"+t+"%"+t+t)+"|"+n("%"+t+t)),a="[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]",i=r("[\\:\\/\\?\\#\\[\\]\\@]",a),u=e?"[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]":"[]",s=e?"[\\uE000-\\uF8FF]":"[]",f=r("[A-Za-z]","[0-9]","[\\-\\.\\_\\~]",u),c=n(n("25[0-5]")+"|"+n("2[0-4][0-9]")+"|"+n("1[0-9][0-9]")+"|"+n("0?[1-9][0-9]")+"|0?0?[0-9]"),p=n(c+"\\."+c+"\\."+c+"\\."+c),h=n(t+"{1,4}"),d=n(n(h+"\\:"+h)+"|"+p),l=n(n(h+"\\:")+"{6}"+d),g=n("\\:\\:"+n(h+"\\:")+"{5}"+d),v=n(n(h)+"?\\:\\:"+n(h+"\\:")+"{4}"+d),m=n(n(n(h+"\\:")+"{0,1}"+h)+"?\\:\\:"+n(h+"\\:")+"{3}"+d),E=n(n(n(h+"\\:")+"{0,2}"+h)+"?\\:\\:"+n(h+"\\:")+"{2}"+d),C=n(n(n(h+"\\:")+"{0,3}"+h)+"?\\:\\:"+h+"\\:"+d),y=n(n(n(h+"\\:")+"{0,4}"+h)+"?\\:\\:"+d),S=n(n(n(h+"\\:")+"{0,5}"+h)+"?\\:\\:"+h),A=n(n(n(h+"\\:")+"{0,6}"+h)+"?\\:\\:"),D=n([l,g,v,m,E,C,y,S,A].join("|")),w=n(n(f+"|"+o)+"+");return{NOT_SCHEME:new RegExp(r("[^]","[A-Za-z]","[0-9]","[\\+\\-\\.]"),"g"),NOT_USERINFO:new RegExp(r("[^\\%\\:]",f,a),"g"),NOT_HOST:new RegExp(r("[^\\%\\[\\]\\:]",f,a),"g"),NOT_PATH:new RegExp(r("[^\\%\\/\\:\\@]",f,a),"g"),NOT_PATH_NOSCHEME:new RegExp(r("[^\\%\\/\\@]",f,a),"g"),NOT_QUERY:new RegExp(r("[^\\%]",f,a,"[\\:\\@\\/\\?]",s),"g"),NOT_FRAGMENT:new RegExp(r("[^\\%]",f,a,"[\\:\\@\\/\\?]"),"g"),ESCAPE:new RegExp(r("[^]",f,a),"g"),UNRESERVED:new RegExp(f,"g"),OTHER_CHARS:new RegExp(r("[^\\%]",f,i),"g"),PCT_ENCODED:new RegExp(o,"g"),IPV4ADDRESS:new RegExp("^("+p+")$"),IPV6ADDRESS:new RegExp("^\\[?("+D+")"+n(n("\\%25|\\%(?!"+t+"{2})")+"("+w+")")+"?\\]?$")}}function s(e){throw new RangeError(q[e])}function f(e,r){for(var n=[],t=e.length;t--;)n[t]=r(e[t]);return n}function c(e,r){var n=e.split("@"),t="";return n.length>1&&(t=n[0]+"@",e=n[1]),e=e.replace(j,"."),t+f(e.split("."),r).join(".")}function p(e){for(var r=[],n=0,t=e.length;n<t;){var o=e.charCodeAt(n++);if(o>=55296&&o<=56319&&n<t){var a=e.charCodeAt(n++);56320==(64512&a)?r.push(((1023&o)<<10)+(1023&a)+65536):(r.push(o),n--)}else r.push(o)}return r}function h(e){var r=e.charCodeAt(0);return r<16?"%0"+r.toString(16).toUpperCase():r<128?"%"+r.toString(16).toUpperCase():r<2048?"%"+(r>>6|192).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase():"%"+(r>>12|224).toString(16).toUpperCase()+"%"+(r>>6&63|128).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase()}function d(e){for(var r="",n=0,t=e.length;n<t;){var o=parseInt(e.substr(n+1,2),16);if(o<128)r+=String.fromCharCode(o),n+=3;else if(o>=194&&o<224){if(t-n>=6){var a=parseInt(e.substr(n+4,2),16);r+=String.fromCharCode((31&o)<<6|63&a)}else r+=e.substr(n,6);n+=6}else if(o>=224){if(t-n>=9){var i=parseInt(e.substr(n+4,2),16),u=parseInt(e.substr(n+7,2),16);r+=String.fromCharCode((15&o)<<12|(63&i)<<6|63&u)}else r+=e.substr(n,9);n+=9}else r+=e.substr(n,3),n+=3}return r}function l(e,r){function n(e){var n=d(e);return n.match(r.UNRESERVED)?n:e}return e.scheme&&(e.scheme=String(e.scheme).replace(r.PCT_ENCODED,n).toLowerCase().replace(r.NOT_SCHEME,"")),e.userinfo!==undefined&&(e.userinfo=String(e.userinfo).replace(r.PCT_ENCODED,n).replace(r.NOT_USERINFO,h).replace(r.PCT_ENCODED,o)),e.host!==undefined&&(e.host=String(e.host).replace(r.PCT_ENCODED,n).toLowerCase().replace(r.NOT_HOST,h).replace(r.PCT_ENCODED,o)),e.path!==undefined&&(e.path=String(e.path).replace(r.PCT_ENCODED,n).replace(e.scheme?r.NOT_PATH:r.NOT_PATH_NOSCHEME,h).replace(r.PCT_ENCODED,o)),e.query!==undefined&&(e.query=String(e.query).replace(r.PCT_ENCODED,n).replace(r.NOT_QUERY,h).replace(r.PCT_ENCODED,o)),e.fragment!==undefined&&(e.fragment=String(e.fragment).replace(r.PCT_ENCODED,n).replace(r.NOT_FRAGMENT,h).replace(r.PCT_ENCODED,o)),e}function g(e){return e.replace(/^0*(.*)/,"$1")||"0"}function v(e,r){var n=e.match(r.IPV4ADDRESS)||[],t=R(n,2),o=t[1];return o?o.split(".").map(g).join("."):e}function m(e,r){var n=e.match(r.IPV6ADDRESS)||[],t=R(n,3),o=t[1],a=t[2];if(o){for(var i=o.toLowerCase().split("::").reverse(),u=R(i,2),s=u[0],f=u[1],c=f?f.split(":").map(g):[],p=s.split(":").map(g),h=r.IPV4ADDRESS.test(p[p.length-1]),d=h?7:8,l=p.length-d,m=Array(d),E=0;E<d;++E)m[E]=c[E]||p[l+E]||"";h&&(m[d-1]=v(m[d-1],r));var C=m.reduce(function(e,r,n){if(!r||"0"===r){var t=e[e.length-1];t&&t.index+t.length===n?t.length++:e.push({index:n,length:1})}return e},[]),y=C.sort(function(e,r){return r.length-e.length})[0],S=void 0;if(y&&y.length>1){var A=m.slice(0,y.index),D=m.slice(y.index+y.length);S=A.join(":")+"::"+D.join(":")}else S=m.join(":");return a&&(S+="%"+a),S}return e}function E(e){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},n={},t=!1!==r.iri?N:F;"suffix"===r.reference&&(e=(r.scheme?r.scheme+":":"")+"//"+e);var o=e.match(J);if(o){K?(n.scheme=o[1],n.userinfo=o[3],n.host=o[4],n.port=parseInt(o[5],10),n.path=o[6]||"",n.query=o[7],n.fragment=o[8],isNaN(n.port)&&(n.port=o[5])):(n.scheme=o[1]||undefined,n.userinfo=-1!==e.indexOf("@")?o[3]:undefined,n.host=-1!==e.indexOf("//")?o[4]:undefined,n.port=parseInt(o[5],10),n.path=o[6]||"",n.query=-1!==e.indexOf("?")?o[7]:undefined,n.fragment=-1!==e.indexOf("#")?o[8]:undefined,isNaN(n.port)&&(n.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?o[4]:undefined)),n.host&&(n.host=m(v(n.host,t),t)),n.scheme!==undefined||n.userinfo!==undefined||n.host!==undefined||n.port!==undefined||n.path||n.query!==undefined?n.scheme===undefined?n.reference="relative":n.fragment===undefined?n.reference="absolute":n.reference="uri":n.reference="same-document",r.reference&&"suffix"!==r.reference&&r.reference!==n.reference&&(n.error=n.error||"URI is not a "+r.reference+" reference.");var a=B[(r.scheme||n.scheme||"").toLowerCase()];if(r.unicodeSupport||a&&a.unicodeSupport)l(n,t);else{if(n.host&&(r.domainHost||a&&a.domainHost))try{n.host=Y.toASCII(n.host.replace(t.PCT_ENCODED,d).toLowerCase())}catch(i){n.error=n.error||"Host's domain name can not be converted to ASCII via punycode: "+i}l(n,F)}a&&a.parse&&a.parse(n,r)}else n.error=n.error||"URI can not be parsed.";return n}function C(e,r){var n=!1!==r.iri?N:F,t=[];return e.userinfo!==undefined&&(t.push(e.userinfo),t.push("@")),e.host!==undefined&&t.push(m(v(String(e.host),n),n).replace(n.IPV6ADDRESS,function(e,r,n){return"["+r+(n?"%25"+n:"")+"]"})),"number"==typeof e.port&&(t.push(":"),t.push(e.port.toString(10))),t.length?t.join(""):undefined}function y(e){for(var r=[];e.length;)if(e.match(W))e=e.replace(W,"");else if(e.match(X))e=e.replace(X,"/");else if(e.match(ee))e=e.replace(ee,"/"),r.pop();else if("."===e||".."===e)e="";else{var n=e.match(re);if(!n)throw new Error("Unexpected dot segment condition");var t=n[0];e=e.slice(t.length),r.push(t)}return r.join("")}function S(e){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},n=r.iri?N:F,t=[],o=B[(r.scheme||e.scheme||"").toLowerCase()];if(o&&o.serialize&&o.serialize(e,r),e.host)if(n.IPV6ADDRESS.test(e.host));else if(r.domainHost||o&&o.domainHost)try{e.host=r.iri?Y.toUnicode(e.host):Y.toASCII(e.host.replace(n.PCT_ENCODED,d).toLowerCase())}catch(u){e.error=e.error||"Host's domain name can not be converted to "+(r.iri?"Unicode":"ASCII")+" via punycode: "+u}l(e,n),"suffix"!==r.reference&&e.scheme&&(t.push(e.scheme),t.push(":"));var a=C(e,r);if(a!==undefined&&("suffix"!==r.reference&&t.push("//"),t.push(a),e.path&&"/"!==e.path.charAt(0)&&t.push("/")),e.path!==undefined){var i=e.path;r.absolutePath||o&&o.absolutePath||(i=y(i)),a===undefined&&(i=i.replace(/^\/\//,"/%2F")),t.push(i)}return e.query!==undefined&&(t.push("?"),t.push(e.query)),e.fragment!==undefined&&(t.push("#"),t.push(e.fragment)),t.join("")}function A(e,r){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{},t=arguments[3],o={};return t||(e=E(S(e,n),n),r=E(S(r,n),n)),n=n||{},!n.tolerant&&r.scheme?(o.scheme=r.scheme,o.userinfo=r.userinfo,o.host=r.host,o.port=r.port,o.path=y(r.path||""),o.query=r.query):(r.userinfo!==undefined||r.host!==undefined||r.port!==undefined?(o.userinfo=r.userinfo,o.host=r.host,o.port=r.port,o.path=y(r.path||""),o.query=r.query):(r.path?("/"===r.path.charAt(0)?o.path=y(r.path):(e.userinfo===undefined&&e.host===undefined&&e.port===undefined||e.path?e.path?o.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+r.path:o.path=r.path:o.path="/"+r.path,o.path=y(o.path)),o.query=r.query):(o.path=e.path,r.query!==undefined?o.query=r.query:o.query=e.query),o.userinfo=e.userinfo,o.host=e.host,o.port=e.port),o.scheme=e.scheme),o.fragment=r.fragment,o}function D(e,r,n){var t=i({scheme:"null"},n);return S(A(E(e,t),E(r,t),t,!0),t)}function w(e,r){return"string"==typeof e?e=S(E(e,r),r):"object"===t(e)&&(e=E(S(e,r),r)),e}function b(e,r,n){return"string"==typeof e?e=S(E(e,n),n):"object"===t(e)&&(e=S(e,n)),"string"==typeof r?r=S(E(r,n),n):"object"===t(r)&&(r=S(r,n)),e===r}function x(e,r){return e&&e.toString().replace(r&&r.iri?N.ESCAPE:F.ESCAPE,h)}function O(e,r){return e&&e.toString().replace(r&&r.iri?N.PCT_ENCODED:F.PCT_ENCODED,d)}function I(e){var r=d(e);return r.match(fe)?r:e}var F=u(!1),N=u(!0),R=function(){function e(e,r){var n=[],t=!0,o=!1,a=undefined;try{for(var i,u=e[Symbol.iterator]();!(t=(i=u.next()).done)&&(n.push(i.value),!r||n.length!==r);t=!0);}catch(s){o=!0,a=s}finally{try{!t&&u["return"]&&u["return"]()}finally{if(o)throw a}}return n}return function(r,n){if(Array.isArray(r))return r;if(Symbol.iterator in Object(r))return e(r,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),T=function(e){if(Array.isArray(e)){for(var r=0,n=Array(e.length);r<e.length;r++)n[r]=e[r];return n}return Array.from(e)},_=2147483647,P=/^xn--/,U=/[^\0-\x7E]/,j=/[\x2E\u3002\uFF0E\uFF61]/g,q={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},H=Math.floor,z=String.fromCharCode,L=function(e){return String.fromCodePoint.apply(String,T(e))},$=function(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:36},M=function(e,r){return e+22+75*(e<26)-((0!=r)<<5)},V=function(e,r,n){var t=0;for(e=n?H(e/700):e>>1,e+=H(e/r);e>455;t+=36)e=H(e/35);return H(t+36*e/(e+38))},k=function(e){var r=[],n=e.length,t=0,o=128,a=72,i=e.lastIndexOf("-");i<0&&(i=0);for(var u=0;u<i;++u)e.charCodeAt(u)>=128&&s("not-basic"),r.push(e.charCodeAt(u));for(var f=i>0?i+1:0;f<n;){for(var c=t,p=1,h=36;;h+=36){f>=n&&s("invalid-input");var d=$(e.charCodeAt(f++));(d>=36||d>H((_-t)/p))&&s("overflow"),t+=d*p;var l=h<=a?1:h>=a+26?26:h-a;if(d<l)break;var g=36-l;p>H(_/g)&&s("overflow"),p*=g}var v=r.length+1;a=V(t-c,v,0==c),H(t/v)>_-o&&s("overflow"),o+=H(t/v),t%=v,r.splice(t++,0,o)}return String.fromCodePoint.apply(String,r)},Z=function(e){var r=[];e=p(e);var n=e.length,t=128,o=0,a=72,i=!0,u=!1,f=undefined;try{for(var c,h=e[Symbol.iterator]();!(i=(c=h.next()).done);i=!0){var d=c.value;d<128&&r.push(z(d))}}catch(j){u=!0,f=j}finally{try{!i&&h["return"]&&h["return"]()}finally{if(u)throw f}}var l=r.length,g=l;for(l&&r.push("-");g<n;){var v=_,m=!0,E=!1,C=undefined;try{for(var y,S=e[Symbol.iterator]();!(m=(y=S.next()).done);m=!0){var A=y.value;A>=t&&A<v&&(v=A)}}catch(j){E=!0,C=j}finally{try{!m&&S["return"]&&S["return"]()}finally{if(E)throw C}}var D=g+1;v-t>H((_-o)/D)&&s("overflow"),o+=(v-t)*D,t=v;var w=!0,b=!1,x=undefined;try{for(var O,I=e[Symbol.iterator]();!(w=(O=I.next()).done);w=!0){var F=O.value;if(F<t&&++o>_&&s("overflow"),F==t){for(var N=o,R=36;;R+=36){var T=R<=a?1:R>=a+26?26:R-a;if(N<T)break;var P=N-T,U=36-T;r.push(z(M(T+P%U,0))),N=H(P/U)}r.push(z(M(N,0))),a=V(o,D,g==l),o=0,++g}}}catch(j){b=!0,x=j}finally{try{!w&&I["return"]&&I["return"]()}finally{if(b)throw x}}++o,++t}return r.join("")},G=function(e){return c(e,function(e){return P.test(e)?k(e.slice(4).toLowerCase()):e})},Q=function(e){return c(e,function(e){return U.test(e)?"xn--"+Z(e):e})},Y={version:"2.1.0",ucs2:{decode:p,encode:L},decode:k,encode:Z,toASCII:Q,toUnicode:G},B={},J=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,K="".match(/(){0}/)[1]===undefined,W=/^\.\.?\//,X=/^\/\.(\/|$)/,ee=/^\/\.\.(\/|$)/,re=/^\/?(?:.|\n)*?(?=\/|$)/,ne={scheme:"http",domainHost:!0,parse:function(e,r){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e},serialize:function(e,r){return e.port!==("https"!==String(e.scheme).toLowerCase()?80:443)&&""!==e.port||(e.port=undefined),e.path||(e.path="/"),e}},te={scheme:"https",domainHost:ne.domainHost,parse:ne.parse,serialize:ne.serialize},oe={},ae="[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",ie="[0-9A-Fa-f]",ue=n(n("%[EFef][0-9A-Fa-f]%"+ie+ie+"%"+ie+ie)+"|"+n("%[89A-Fa-f][0-9A-Fa-f]%"+ie+ie)+"|"+n("%"+ie+ie)),se=r("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",'[\\"\\\\]'),fe=new RegExp(ae,"g"),ce=new RegExp(ue,"g"),pe=new RegExp(r("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',se),"g"),he=new RegExp(r("[^]",ae,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),de=he,le={scheme:"mailto",parse:function(e,r){var n=e,t=n.to=n.path?n.path.split(","):[];if(n.path=undefined,n.query){for(var o=!1,a={},i=n.query.split("&"),u=0,s=i.length;u<s;++u){var f=i[u].split("=");switch(f[0]){case"to":for(var c=f[1].split(","),p=0,h=c.length;p<h;++p)t.push(c[p]);break;case"subject":n.subject=O(f[1],r);break;case"body":n.body=O(f[1],r);break;default:o=!0,a[O(f[0],r)]=O(f[1],r)}}o&&(n.headers=a)}n.query=undefined;for(var d=0,l=t.length;d<l;++d){var g=t[d].split("@");if(g[0]=O(g[0]),r.unicodeSupport)g[1]=O(g[1],r).toLowerCase();else try{g[1]=Y.toASCII(O(g[1],r).toLowerCase())}catch(v){n.error=n.error||"Email address's domain name can not be converted to ASCII via punycode: "+v}t[d]=g.join("@")}return n},serialize:function(e,r){var n=e,t=a(e.to);if(t){for(var i=0,u=t.length;i<u;++i){var s=String(t[i]),f=s.lastIndexOf("@"),c=s.slice(0,f).replace(ce,I).replace(ce,o).replace(pe,h),p=s.slice(f+1);try{p=r.iri?Y.toUnicode(p):Y.toASCII(O(p,r).toLowerCase())}catch(v){n.error=n.error||"Email address's domain name can not be converted to "+(r.iri?"Unicode":"ASCII")+" via punycode: "+v}t[i]=c+"@"+p}n.path=t.join(",")}var d=e.headers=e.headers||{};e.subject&&(d.subject=e.subject),e.body&&(d.body=e.body);var l=[];for(var g in d)d[g]!==oe[g]&&l.push(g.replace(ce,I).replace(ce,o).replace(he,h)+"="+d[g].replace(ce,I).replace(ce,o).replace(de,h));return l.length&&(n.query=l.join("&")),n}},ge=/^([^\:]+)\:(.*)/,ve={scheme:"urn",parse:function(e,r){var n=e.path&&e.path.match(ge),t=e;if(n){var o=r.scheme||t.scheme||"urn",a=n[1].toLowerCase(),i=n[2],u=o+":"+(r.nid||a),s=B[u];t.nid=a,t.nss=i,t.path=undefined,s&&(t=s.parse(t,r))}else t.error=t.error||"URN can not be parsed.";return t},serialize:function(e,r){var n=r.scheme||e.scheme||"urn",t=e.nid,o=n+":"+(r.nid||t),a=B[o];a&&(e=a.serialize(e,r));var i=e,u=e.nss;return i.path=(t||r.nid)+":"+u,i}},me=/^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/,Ee={scheme:"urn:uuid",parse:function(e,r){var n=e;return n.uuid=n.nss,n.nss=undefined,r.tolerant||n.uuid&&n.uuid.match(me)||(n.error=n.error||"UUID is not valid."),n},serialize:function(e,r){var n=e;return n.nss=(e.uuid||"").toLowerCase(),n}};B[ne.scheme]=ne,B[te.scheme]=te,B[le.scheme]=le,B[ve.scheme]=ve,B[Ee.scheme]=Ee,e.SCHEMES=B,e.pctEncChar=h,e.pctDecChars=d,e.parse=E,e.removeDotSegments=y,e.serialize=S,e.resolveComponents=A,e.resolve=D,e.normalize=w,e.equal=b,e.escapeComponent=x,e.unescapeComponent=O,Object.defineProperty(e,"__esModule",{value:!0})});
-//# sourceMappingURL=uri.all.min.js.map \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/es5/uri.all.min.js.map b/assets/node_modules/uri-js/dist/es5/uri.all.min.js.map
deleted file mode 100644
index 57c92d1..0000000
--- a/assets/node_modules/uri-js/dist/es5/uri.all.min.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../../src/util.ts","../../src/regexps-uri.ts","../../node_modules/punycode/punycode.es6.js","../../src/uri.ts","../../src/schemes/mailto.ts","../../src/regexps-iri.ts","../../src/schemes/http.ts","../../src/schemes/https.ts","../../src/schemes/urn.ts","../../src/schemes/urn-uuid.ts","../../src/index.ts"],"names":["merge","sets","Array","_len","_key","arguments","length","slice","xl","x","join","subexp","str","typeOf","o","undefined","Object","prototype","toString","call","split","pop","shift","toLowerCase","toUpperCase","toArray","obj","setInterval","assign","target","source","key","buildExps","isIRI","HEXDIG$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","UCSCHAR$$","DEC_OCTET_RELAXED$","H16$","LS32$","IPV4ADDRESS$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","ZONEID$","UNRESERVED$$","RegExp","IPRIVATE$$","IPV6ADDRESS$","error","type","RangeError","errors","map","array","fn","result","mapDomain","string","parts","replace","regexSeparators","ucs2decode","output","counter","value","charCodeAt","extra","push","pctEncChar","chr","c","pctDecChars","newStr","i","il","parseInt","substr","String","fromCharCode","c2","c3","_normalizeComponentEncoding","components","protocol","decodeUnreserved","decStr","match","UNRESERVED","scheme","PCT_ENCODED","NOT_SCHEME","userinfo","NOT_USERINFO","host","NOT_HOST","path","NOT_PATH","NOT_PATH_NOSCHEME","query","NOT_QUERY","fragment","NOT_FRAGMENT","_stripLeadingZeros","_normalizeIPv4","matches","IPV4ADDRESS","address","_matches","_normalizeIPv6","IPV6ADDRESS","_matches2","zone","reverse","last","_address$toLowerCase$2","first","firstFields","lastFields","isLastFieldIPv4Address","test","fieldCount","lastFieldsStart","fields","allZeroFields","reduce","acc","field","index","lastLongest","longestZeroFields","sort","a","b","newHost","newFirst","newLast","parse","uriString","options","iri","IRI_PROTOCOL","URI_PROTOCOL","reference","URI_PARSE","NO_MATCH_IS_UNDEFINED","port","isNaN","indexOf","schemeHandler","SCHEMES","unicodeSupport","domainHost","punycode","toASCII","e","_recomposeAuthority","uriTokens","_","$1","$2","removeDotSegments","input","RDS1","RDS2","RDS3","im","RDS5","Error","s","serialize","toUnicode","authority","charAt","absolutePath","resolveComponents","base","relative","skipNormalization","tolerant","lastIndexOf","resolve","baseURI","relativeURI","schemelessOptions","normalize","uri","equal","uriA","uriB","escapeComponent","ESCAPE","unescapeComponent","maxInt","regexPunycode","regexNonASCII","floor","Math","stringFromCharCode","ucs2encode","fromCodePoint","apply","toConsumableArray","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","k","baseMinusTMin","decode","inputLength","n","bias","basic","j","oldi","w","t","baseMinusT","out","splice","encode","_step","Symbol","iterator","_iteratorNormalCompletion","_iterator","next","done","currentValue","basicLength","handledCPCount","m","_step2","_iteratorNormalCompletion2","_iterator2","handledCPCountPlusOne","_step3","_iteratorNormalCompletion3","_iterator3","q","qMinusT","handler","http","O","VCHAR$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","mailtoComponents","to","unknownHeaders","headers","hfields","hfield","toAddrs","subject","body","addr","toAddr","atIdx","localPart","domain","name","URN_PARSE","urnComponents","nid","nss","urnScheme","uriComponents","UUID","uuidComponents","uuid","https","mailto","urn"],"mappings":";4LAAA,SAAAA,gCAAyBC,EAAzBC,MAAAC,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,MAAAA,GAAAC,UAAAD,MACKH,EAAKK,OAAS,EAAG,GACf,GAAKL,EAAK,GAAGM,MAAM,GAAI,OAEvB,GADCC,GAAKP,EAAKK,OAAS,EAChBG,EAAI,EAAGA,EAAID,IAAMC,IACpBA,GAAKR,EAAKQ,GAAGF,MAAM,GAAI,YAExBC,GAAMP,EAAKO,GAAID,MAAM,GACnBN,EAAKS,KAAK,UAEVT,GAAK,GAId,QAAAU,GAAuBC,SACf,MAAQA,EAAM,IAGtB,QAAAC,GAAuBC,SACfA,KAAMC,UAAY,YAAqB,OAAND,EAAa,OAASE,OAAOC,UAAUC,SAASC,KAAKL,GAAGM,MAAM,KAAKC,MAAMD,MAAM,KAAKE,QAAQC,cAGrI,QAAAC,GAA4BZ,SACpBA,GAAIY,cAGZ,QAAAC,GAAwBC,SAChBA,KAAQX,WAAqB,OAARW,EAAgBA,YAAexB,OAAQwB,EAA6B,gBAAfA,GAAIpB,QAAuBoB,EAAIN,OAASM,EAAIC,aAAeD,EAAIP,MAAQO,GAAOxB,MAAMe,UAAUV,MAAMY,KAAKO,MAI3L,QAAAE,GAAuBC,EAAgBC,MAChCJ,GAAMG,KACRC,MACE,GAAMC,KAAOD,KACbC,GAAOD,EAAOC,SAGbL,GCnCR,QAAAM,GAA0BC,MAMxBC,GAAWlC,EAFD,QAEgB,YAG1BmC,EAAexB,EAAOA,EAAO,UAAYuB,EAAW,IAAMA,EAAWA,EAAW,IAAMA,EAAWA,GAAY,IAAMvB,EAAO,cAAgBuB,EAAW,IAAMA,EAAWA,GAAY,IAAMvB,EAAO,IAAMuB,EAAWA,IAEhNE,EAAe,sCACfC,EAAarC,EAFE,0BAEkBoC,GACjCE,EAAYL,EAAQ,8EAAgF,OACvFA,EAAQ,oBAAsB,OAC5BjC,EAbL,WAEA,QAW6B,iBAAkBsC,GAIzDC,EAAqB5B,EAAOA,EAAO,WAAa,IAAMA,EAAO,eAAsB,IAAMA,EAAO,eAA2B,IAAMA,EAAO,gBAAuB,gBAChJA,EAAO4B,EAAqB,MAAQA,EAAqB,MAAQA,EAAqB,MAAQA,GAC7GC,EAAO7B,EAAOuB,EAAW,SACzBO,EAAQ9B,EAAOA,EAAO6B,EAAO,MAAQA,GAAQ,IAAME,GACnDC,EAAgBhC,EAAmEA,EAAO6B,EAAO,OAAS,MAAQC,KAClG9B,EAAwD,SAAWA,EAAO6B,EAAO,OAAS,MAAQC,KAClG9B,EAAOA,EAAwC6B,GAAQ,UAAY7B,EAAO6B,EAAO,OAAS,MAAQC,KAClG9B,EAAOA,EAAOA,EAAO6B,EAAO,OAAS,QAAUA,GAAQ,UAAY7B,EAAO6B,EAAO,OAAS,MAAQC,KAClG9B,EAAOA,EAAOA,EAAO6B,EAAO,OAAS,QAAUA,GAAQ,UAAY7B,EAAO6B,EAAO,OAAS,MAAQC,KAClG9B,EAAOA,EAAOA,EAAO6B,EAAO,OAAS,QAAUA,GAAQ,UAAmBA,EAAO,MAAiBC,KAClG9B,EAAOA,EAAOA,EAAO6B,EAAO,OAAS,QAAUA,GAAQ,UAA2CC,KAClG9B,EAAOA,EAAOA,EAAO6B,EAAO,OAAS,QAAUA,GAAQ,UAA2CA,KAClG7B,EAAOA,EAAOA,EAAO6B,EAAO,OAAS,QAAUA,GAAQ,aACxD7B,GAAQgC,EAAeC,EAAeC,EAAeC,EAAeC,EAAeC,EAAeC,EAAeC,EAAeC,GAAezC,KAAK,MACnK0C,EAAUzC,EAAOA,EAAO0C,EAAe,IAAMlB,GAAgB,uBAoChD,GAAImB,QAAOtD,EAAM,MAnEpB,WAEA,QAiE6C,eAAgB,kBACxD,GAAIsD,QAAOtD,EAAM,YAAaqD,EAAcjB,GAAe,cAC/D,GAAIkB,QAAOtD,EAAM,kBAAmBqD,EAAcjB,GAAe,cACjE,GAAIkB,QAAOtD,EAAM,kBAAmBqD,EAAcjB,GAAe,uBACxD,GAAIkB,QAAOtD,EAAM,eAAgBqD,EAAcjB,GAAe,eACtE,GAAIkB,QAAOtD,EAAM,SAAUqD,EAAcjB,EAAc,iBAAkBmB,GAAa,kBACnF,GAAID,QAAOtD,EAAM,SAAUqD,EAAcjB,EAAc,kBAAmB,YAChF,GAAIkB,QAAOtD,EAAM,MAAOqD,EAAcjB,GAAe,gBACjD,GAAIkB,QAAOD,EAAc,iBACxB,GAAIC,QAAOtD,EAAM,SAAUqD,EAAchB,GAAa,iBACtD,GAAIiB,QAAOnB,EAAc,iBACzB,GAAImB,QAAO,KAAOZ,EAAe,kBACjC,GAAIY,QAAO,SAAWE,EAAe,IAAM7C,EAAOA,EAAO,eAAiBuB,EAAW,QAAU,IAAMkB,EAAU,KAAO,WC5CtI,QAASK,GAAMC,QACR,IAAIC,YAAWC,EAAOF,IAW7B,QAASG,GAAIC,EAAOC,UACbC,MACF1D,EAASwD,EAAMxD,OACZA,OACCA,GAAUyD,EAAGD,EAAMxD,UAEpB0D,GAaR,QAASC,GAAUC,EAAQH,MACpBI,GAAQD,EAAO9C,MAAM,KACvB4C,EAAS,SACTG,GAAM7D,OAAS,MAGT6D,EAAM,GAAK,MACXA,EAAM,MAGPD,EAAOE,QAAQC,EAAiB,KAGlCL,EADSH,EADDK,EAAO9C,MAAM,KACA2C,GAAIrD,KAAK,KAiBtC,QAAS4D,GAAWJ,UACbK,MACFC,EAAU,EACRlE,EAAS4D,EAAO5D,OACfkE,EAAUlE,GAAQ,IAClBmE,GAAQP,EAAOQ,WAAWF,QAC5BC,GAAS,OAAUA,GAAS,OAAUD,EAAUlE,EAAQ,IAErDqE,GAAQT,EAAOQ,WAAWF,IACR,SAAX,MAARG,KACGC,OAAe,KAARH,IAAkB,KAAe,KAARE,GAAiB,UAIjDC,KAAKH,eAING,KAAKH,SAGPF,GC/BR,QAAAM,GAA2BC,MACpBC,GAAID,EAAIJ,WAAW,SAGrBK,GAAI,GAAQ,KAAOA,EAAE7D,SAAS,IAAIM,cAC7BuD,EAAI,IAAS,IAAMA,EAAE7D,SAAS,IAAIM,cAClCuD,EAAI,KAAU,KAAQA,GAAK,EAAK,KAAK7D,SAAS,IAAIM,cAAgB,KAAY,GAAJuD,EAAU,KAAK7D,SAAS,IAAIM,cACtG,KAAQuD,GAAK,GAAM,KAAK7D,SAAS,IAAIM,cAAgB,KAASuD,GAAK,EAAK,GAAM,KAAK7D,SAAS,IAAIM,cAAgB,KAAY,GAAJuD,EAAU,KAAK7D,SAAS,IAAIM,cAK9J,QAAAwD,GAA4BpE,UACvBqE,GAAS,GACTC,EAAI,EACFC,EAAKvE,EAAIN,OAER4E,EAAIC,GAAI,IACRJ,GAAIK,SAASxE,EAAIyE,OAAOH,EAAI,EAAG,GAAI,OAErCH,EAAI,OACGO,OAAOC,aAAaR,MACzB,MAED,IAAIA,GAAK,KAAOA,EAAI,IAAK,IACxBI,EAAKD,GAAM,EAAG,IACZM,GAAKJ,SAASxE,EAAIyE,OAAOH,EAAI,EAAG,GAAI,OAChCI,OAAOC,cAAmB,GAAJR,IAAW,EAAW,GAALS,WAEvC5E,EAAIyE,OAAOH,EAAG,MAEpB,MAED,IAAIH,GAAK,IAAK,IACbI,EAAKD,GAAM,EAAG,IACZM,GAAKJ,SAASxE,EAAIyE,OAAOH,EAAI,EAAG,GAAI,IACpCO,EAAKL,SAASxE,EAAIyE,OAAOH,EAAI,EAAG,GAAI,OAChCI,OAAOC,cAAmB,GAAJR,IAAW,IAAa,GAALS,IAAY,EAAW,GAALC,WAE3D7E,EAAIyE,OAAOH,EAAG,MAEpB,UAGKtE,EAAIyE,OAAOH,EAAG,MACnB,QAIAD,GAGR,QAAAS,GAAqCC,EAA0BC,WAC/DC,GAA2BjF,MACnBkF,GAASd,EAAYpE,SAClBkF,GAAOC,MAAMH,EAASI,YAAoBF,EAANlF,QAG1C+E,GAAWM,SAAQN,EAAWM,OAASX,OAAOK,EAAWM,QAAQ7B,QAAQwB,EAASM,YAAaL,GAAkBtE,cAAc6C,QAAQwB,EAASO,WAAY,KAC5JR,EAAWS,WAAarF,YAAW4E,EAAWS,SAAWd,OAAOK,EAAWS,UAAUhC,QAAQwB,EAASM,YAAaL,GAAkBzB,QAAQwB,EAASS,aAAcxB,GAAYT,QAAQwB,EAASM,YAAa1E,IAC9MmE,EAAWW,OAASvF,YAAW4E,EAAWW,KAAOhB,OAAOK,EAAWW,MAAMlC,QAAQwB,EAASM,YAAaL,GAAkBtE,cAAc6C,QAAQwB,EAASW,SAAU1B,GAAYT,QAAQwB,EAASM,YAAa1E,IAC5MmE,EAAWa,OAASzF,YAAW4E,EAAWa,KAAOlB,OAAOK,EAAWa,MAAMpC,QAAQwB,EAASM,YAAaL,GAAkBzB,QAASuB,EAAWM,OAASL,EAASa,SAAWb,EAASc,kBAAoB7B,GAAYT,QAAQwB,EAASM,YAAa1E,IACjPmE,EAAWgB,QAAU5F,YAAW4E,EAAWgB,MAAQrB,OAAOK,EAAWgB,OAAOvC,QAAQwB,EAASM,YAAaL,GAAkBzB,QAAQwB,EAASgB,UAAW/B,GAAYT,QAAQwB,EAASM,YAAa1E,IAClMmE,EAAWkB,WAAa9F,YAAW4E,EAAWkB,SAAWvB,OAAOK,EAAWkB,UAAUzC,QAAQwB,EAASM,YAAaL,GAAkBzB,QAAQwB,EAASkB,aAAcjC,GAAYT,QAAQwB,EAASM,YAAa1E,IAE3MmE,EAGR,QAAAoB,GAA4BnG,SACpBA,GAAIwD,QAAQ,UAAW,OAAS,IAGxC,QAAA4C,GAAwBV,EAAaV,MAC9BqB,GAAUX,EAAKP,MAAMH,EAASsB,qBAChBD,EAFrB,GAEUE,EAFVC,EAAA,SAIKD,GACIA,EAAQ/F,MAAM,KAAKyC,IAAIkD,GAAoBrG,KAAK,KAEhD4F,EAIT,QAAAe,GAAwBf,EAAaV,MAC9BqB,GAAUX,EAAKP,MAAMH,EAAS0B,qBACVL,EAF3B,GAEUE,EAFVI,EAAA,GAEmBC,EAFnBD,EAAA,MAIKJ,EAAS,KASP,MARiBA,EAAQ5F,cAAcH,MAAM,MAAMqG,mBAAjDC,EADKC,EAAA,GACCC,EADDD,EAAA,GAENE,EAAcD,EAAQA,EAAMxG,MAAM,KAAKyC,IAAIkD,MAC3Ce,EAAaJ,EAAKtG,MAAM,KAAKyC,IAAIkD,GACjCgB,EAAyBnC,EAASsB,YAAYc,KAAKF,EAAWA,EAAWxH,OAAS,IAClF2H,EAAaF,EAAyB,EAAI,EAC1CG,EAAkBJ,EAAWxH,OAAS2H,EACtCE,EAASjI,MAAc+H,GAEpBxH,EAAI,EAAGA,EAAIwH,IAAcxH,IAC1BA,GAAKoH,EAAYpH,IAAMqH,EAAWI,EAAkBzH,IAAM,EAG9DsH,OACIE,EAAa,GAAKjB,EAAemB,EAAOF,EAAa,GAAIrC,OAG3DwC,GAAgBD,EAAOE,OAA4C,SAACC,EAAKC,EAAOC,OAChFD,GAAmB,MAAVA,EAAe,IACtBE,GAAcH,EAAIA,EAAIhI,OAAS,EACjCmI,IAAeA,EAAYD,MAAQC,EAAYnI,SAAWkI,IACjDlI,WAERsE,MAAO4D,MAAAA,EAAOlI,OAAS,UAGtBgI,QAGFI,EAAoBN,EAAcO,KAAK,SAACC,EAAGC,SAAMA,GAAEvI,OAASsI,EAAEtI,SAAQ,GAExEwI,MAAAA,MACAJ,GAAqBA,EAAkBpI,OAAS,EAAG,IAChDyI,GAAWZ,EAAO5H,MAAM,EAAGmI,EAAkBF,OAC7CQ,EAAUb,EAAO5H,MAAMmI,EAAkBF,MAAQE,EAAkBpI,UAC/DyI,EAASrI,KAAK,KAAO,KAAOsI,EAAQtI,KAAK,YAEzCyH,EAAOzH,KAAK,WAGnB8G,QACQ,IAAMA,GAGXsB,QAEAxC,GAOT,QAAA2C,GAAsBC,MAAkBC,GAAxC9I,UAAAC,OAAA,GAAAD,UAAA,KAAAU,UAAAV,UAAA,MACOsF,KACAC,GAA4B,IAAhBuD,EAAQC,IAAgBC,EAAeC,CAE/B,YAAtBH,EAAQI,YAAwBL,GAAaC,EAAQlD,OAASkD,EAAQlD,OAAS,IAAM,IAAM,KAAOiD,MAEhGjC,GAAUiC,EAAUnD,MAAMyD,MAE5BvC,EAAS,CACRwC,KAEQxD,OAASgB,EAAQ,KACjBb,SAAWa,EAAQ,KACnBX,KAAOW,EAAQ,KACfyC,KAAOtE,SAAS6B,EAAQ,GAAI,MAC5BT,KAAOS,EAAQ,IAAM,KACrBN,MAAQM,EAAQ,KAChBJ,SAAWI,EAAQ,GAG1B0C,MAAMhE,EAAW+D,UACTA,KAAOzC,EAAQ,QAIhBhB,OAASgB,EAAQ,IAAMlG,YACvBqF,UAAwC,IAA5B8C,EAAUU,QAAQ,KAAc3C,EAAQ,GAAKlG,YACzDuF,MAAqC,IAA7B4C,EAAUU,QAAQ,MAAe3C,EAAQ,GAAKlG,YACtD2I,KAAOtE,SAAS6B,EAAQ,GAAI,MAC5BT,KAAOS,EAAQ,IAAM,KACrBN,OAAqC,IAA5BuC,EAAUU,QAAQ,KAAc3C,EAAQ,GAAKlG,YACtD8F,UAAwC,IAA5BqC,EAAUU,QAAQ,KAAc3C,EAAQ,GAAKlG,UAGhE4I,MAAMhE,EAAW+D,UACTA,KAAQR,EAAUnD,MAAM,iCAAmCkB,EAAQ,GAAKlG,YAIjF4E,EAAWW,SAEHA,KAAOe,EAAeL,EAAerB,EAAWW,KAAMV,GAAWA,IAIzED,EAAWM,SAAWlF,WAAa4E,EAAWS,WAAarF,WAAa4E,EAAWW,OAASvF,WAAa4E,EAAW+D,OAAS3I,WAAc4E,EAAWa,MAAQb,EAAWgB,QAAU5F,UAE5K4E,EAAWM,SAAWlF,YACrBwI,UAAY,WACb5D,EAAWkB,WAAa9F,YACvBwI,UAAY,aAEZA,UAAY,QANZA,UAAY,gBAUpBJ,EAAQI,WAAmC,WAAtBJ,EAAQI,WAA0BJ,EAAQI,YAAc5D,EAAW4D,cAChF9F,MAAQkC,EAAWlC,OAAS,gBAAkB0F,EAAQI,UAAY,kBAIxEM,GAAgBC,GAASX,EAAQlD,QAAUN,EAAWM,QAAU,IAAI1E,kBAGrE4H,EAAQY,gBAAoBF,GAAkBA,EAAcE,iBAcpCpE,EAAYC,OAdyC,IAE7ED,EAAWW,OAAS6C,EAAQa,YAAeH,GAAiBA,EAAcG,kBAGjE1D,KAAO2D,EAASC,QAAQvE,EAAWW,KAAKlC,QAAQwB,EAASM,YAAalB,GAAazD,eAC7F,MAAO4I,KACG1G,MAAQkC,EAAWlC,OAAS,kEAAoE0G,IAIjFxE,EAAY2D,GAOrCO,GAAiBA,EAAcZ,SACpBA,MAAMtD,EAAYwD,UAGtB1F,MAAQkC,EAAWlC,OAAS,+BAGjCkC,GAGR,QAAAyE,GAA6BzE,EAA0BwD,MAChDvD,IAA4B,IAAhBuD,EAAQC,IAAgBC,EAAeC,EACnDe,WAEF1E,GAAWS,WAAarF,cACjB6D,KAAKe,EAAWS,YAChBxB,KAAK,MAGZe,EAAWW,OAASvF,aAEb6D,KAAKyC,EAAeL,EAAe1B,OAAOK,EAAWW,MAAOV,GAAWA,GAAUxB,QAAQwB,EAAS0B,YAAa,SAACgD,EAAGC,EAAIC,SAAO,IAAMD,GAAMC,EAAK,MAAQA,EAAK,IAAM,OAG9I,gBAApB7E,GAAW+D,SACX9E,KAAK,OACLA,KAAKe,EAAW+D,KAAKxI,SAAS,MAGlCmJ,EAAU/J,OAAS+J,EAAU3J,KAAK,IAAMK,UAShD,QAAA0J,GAAkCC,UAC3BnG,MAECmG,EAAMpK,WACRoK,EAAM3E,MAAM4E,KACPD,EAAMtG,QAAQuG,EAAM,QACtB,IAAID,EAAM3E,MAAM6E,KACdF,EAAMtG,QAAQwG,EAAM,SACtB,IAAIF,EAAM3E,MAAM8E,MACdH,EAAMtG,QAAQyG,GAAM,OACrBxJ,UACD,IAAc,MAAVqJ,GAA2B,OAAVA,IACnB,OACF,IACAI,GAAKJ,EAAM3E,MAAMgF,QACnBD,OAKG,IAAIE,OAAM,uCAJVC,GAAIH,EAAG,KACLJ,EAAMnK,MAAM0K,EAAE3K,UACfsE,KAAKqG,SAOR1G,GAAO7D,KAAK,IAGpB,QAAAwK,GAA0BvF,MAA0BwD,GAApD9I,UAAAC,OAAA,GAAAD,UAAA,KAAAU,UAAAV,UAAA,MACOuF,EAAYuD,EAAQC,IAAMC,EAAeC,EACzCe,KAGAR,EAAgBC,GAASX,EAAQlD,QAAUN,EAAWM,QAAU,IAAI1E,kBAGtEsI,GAAiBA,EAAcqB,WAAWrB,EAAcqB,UAAUvF,EAAYwD,GAE9ExD,EAAWW,QAEVV,EAAS0B,YAAYU,KAAKrC,EAAWW,WAKpC,IAAI6C,EAAQa,YAAeH,GAAiBA,EAAcG,iBAGlD1D,KAAS6C,EAAQC,IAAmGa,EAASkB,UAAUxF,EAAWW,MAA3H2D,EAASC,QAAQvE,EAAWW,KAAKlC,QAAQwB,EAASM,YAAalB,GAAazD,eAC7G,MAAO4I,KACG1G,MAAQkC,EAAWlC,OAAS,+CAAkD0F,EAAQC,IAAgB,UAAV,SAAuB,kBAAoBe,IAMzHxE,EAAYC,GAEd,WAAtBuD,EAAQI,WAA0B5D,EAAWM,WACtCrB,KAAKe,EAAWM,UAChBrB,KAAK,SAGVwG,GAAYhB,EAAoBzE,EAAYwD,MAC9CiC,IAAcrK,YACS,WAAtBoI,EAAQI,aACD3E,KAAK,QAGNA,KAAKwG,GAEXzF,EAAWa,MAAsC,MAA9Bb,EAAWa,KAAK6E,OAAO,MACnCzG,KAAK,MAIbe,EAAWa,OAASzF,UAAW,IAC9BkK,GAAItF,EAAWa,IAEd2C,GAAQmC,cAAkBzB,GAAkBA,EAAcyB,iBAC1Db,EAAkBQ,IAGnBG,IAAcrK,cACbkK,EAAE7G,QAAQ,QAAS,WAGdQ,KAAKqG,SAGZtF,GAAWgB,QAAU5F,cACd6D,KAAK,OACLA,KAAKe,EAAWgB,QAGvBhB,EAAWkB,WAAa9F,cACjB6D,KAAK,OACLA,KAAKe,EAAWkB,WAGpBwD,EAAU3J,KAAK,IAGvB,QAAA6K,GAAkCC,EAAoBC,MAAwBtC,GAA9E9I,UAAAC,OAAA,GAAAD,UAAA,KAAAU,UAAAV,UAAA,MAAuGqL,EAAvGrL,UAAA,GACOwB,WAED6J,OACGzC,EAAMiC,EAAUM,EAAMrC,GAAUA,KAC5BF,EAAMiC,EAAUO,EAAUtC,GAAUA,MAEtCA,OAELA,EAAQwC,UAAYF,EAASxF,UAC1BA,OAASwF,EAASxF,SAElBG,SAAWqF,EAASrF,WACpBE,KAAOmF,EAASnF,OAChBoD,KAAO+B,EAAS/B,OAChBlD,KAAOiE,EAAkBgB,EAASjF,MAAQ,MAC1CG,MAAQ8E,EAAS9E,QAEpB8E,EAASrF,WAAarF,WAAa0K,EAASnF,OAASvF,WAAa0K,EAAS/B,OAAS3I,aAEhFqF,SAAWqF,EAASrF,WACpBE,KAAOmF,EAASnF,OAChBoD,KAAO+B,EAAS/B,OAChBlD,KAAOiE,EAAkBgB,EAASjF,MAAQ,MAC1CG,MAAQ8E,EAAS9E,QAEnB8E,EAASjF,MAQmB,MAA5BiF,EAASjF,KAAK6E,OAAO,KACjB7E,KAAOiE,EAAkBgB,EAASjF,OAEpCgF,EAAKpF,WAAarF,WAAayK,EAAKlF,OAASvF,WAAayK,EAAK9B,OAAS3I,WAAeyK,EAAKhF,KAErFgF,EAAKhF,OAGTA,KAAOgF,EAAKhF,KAAKjG,MAAM,EAAGiL,EAAKhF,KAAKoF,YAAY,KAAO,GAAKH,EAASjF,OAFrEA,KAAOiF,EAASjF,OAFhBA,KAAO,IAAMiF,EAASjF,OAMvBA,KAAOiE,EAAkB5I,EAAO2E,SAEjCG,MAAQ8E,EAAS9E,UAnBjBH,KAAOgF,EAAKhF,KACfiF,EAAS9E,QAAU5F,YACf4F,MAAQ8E,EAAS9E,QAEjBA,MAAQ6E,EAAK7E,SAkBfP,SAAWoF,EAAKpF,WAChBE,KAAOkF,EAAKlF,OACZoD,KAAO8B,EAAK9B,QAEbzD,OAASuF,EAAKvF,UAGfY,SAAW4E,EAAS5E,SAEpBhF,EAGR,QAAAgK,GAAwBC,EAAgBC,EAAoB5C,MACrD6C,GAAoBpK,GAASqE,OAAS,QAAUkD,SAC/C+B,GAAUK,EAAkBtC,EAAM6C,EAASE,GAAoB/C,EAAM8C,EAAaC,GAAoBA,GAAmB,GAAOA,GAKxI,QAAAC,GAA0BC,EAAS/C,SACf,gBAAR+C,KACJhB,EAAUjC,EAAMiD,EAAK/C,GAAUA,GACX,WAAhBtI,EAAOqL,OACXjD,EAAMiC,EAAyBgB,EAAK/C,GAAUA,IAG9C+C,EAKR,QAAAC,GAAsBC,EAAUC,EAAUlD,SACrB,gBAATiD,KACHlB,EAAUjC,EAAMmD,EAAMjD,GAAUA,GACZ,WAAjBtI,EAAOuL,OACVlB,EAAyBkB,EAAMjD,IAGnB,gBAATkD,KACHnB,EAAUjC,EAAMoD,EAAMlD,GAAUA,GACZ,WAAjBtI,EAAOwL,OACVnB,EAAyBmB,EAAMlD,IAGhCiD,IAASC,EAGjB,QAAAC,GAAgC1L,EAAYuI,SACpCvI,IAAOA,EAAIM,WAAWkD,QAAU+E,GAAYA,EAAQC,IAA4BC,EAAakD,OAAnCjD,EAAaiD,OAA+B1H,GAG9G,QAAA2H,GAAkC5L,EAAYuI,SACtCvI,IAAOA,EAAIM,WAAWkD,QAAU+E,GAAYA,EAAQC,IAAiCC,EAAanD,YAAxCoD,EAAapD,YAAyClB,GC1exH,QAGAa,GAA0BjF,MACnBkF,GAASd,EAAYpE,SAClBkF,GAAOC,MAAMC,IAAoBF,EAANlF,EHmBrC,GAAA0I,GAAetH,GAAU,GIrFzBqH,EAAerH,GAAU,2iBHAnByK,EAAS,WAaTC,EAAgB,QAChBC,EAAgB,aAChBtI,EAAkB,4BAGlBT,YACO,8DACC,iEACI,iBAKZgJ,EAAQC,KAAKD,MACbE,EAAqBxH,OAAOC,aAsG5BwH,EAAa,SAAAjJ,SAASwB,QAAO0H,cAAPC,MAAA3H,OAAA4H,EAAwBpJ,KAW9CqJ,EAAe,SAASC,SACzBA,GAAY,GAAO,GACfA,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GAjJR,IAiKPC,EAAe,SAASC,EAAOC,SAG7BD,GAAQ,GAAK,IAAMA,EAAQ,MAAgB,GAARC,IAAc,IAQnDC,EAAQ,SAASC,EAAOC,EAAWC,MACpCC,GAAI,QACAD,EAAYf,EAAMa,EA1Kd,KA0K8BA,GAAS,KAC1Cb,EAAMa,EAAQC,GACOD,EAAQI,IAA2BD,GAhLrD,KAiLHhB,EAAMa,EA3JMjC,UA6JdoB,GAAMgB,EAAI,GAAsBH,GAASA,EAhLpC,MA0LPK,EAAS,SAASpD,MAEjBnG,MACAwJ,EAAcrD,EAAMpK,OACtB4E,EAAI,EACJ8I,EA5LY,IA6LZC,EA9Le,GAoMfC,EAAQxD,EAAMkB,YAlMD,IAmMbsC,GAAQ,MACH,OAGJ,GAAIC,GAAI,EAAGA,EAAID,IAASC,EAExBzD,EAAMhG,WAAWyJ,IAAM,OACpB,eAEAvJ,KAAK8F,EAAMhG,WAAWyJ,QAMzB,GAAI3F,GAAQ0F,EAAQ,EAAIA,EAAQ,EAAI,EAAG1F,EAAQuF,GAAwC,KAQtF,GADDK,GAAOlJ,EACFmJ,EAAI,EAAGT,EAjOL,IAiOmCA,GAjOnC,GAiO8C,CAEpDpF,GAASuF,KACN,oBAGDT,GAAQH,EAAazC,EAAMhG,WAAW8D,OAExC8E,GAzOM,IAyOWA,EAAQV,GAAOH,EAASvH,GAAKmJ,OAC3C,eAGFf,EAAQe,KACPC,GAAIV,GAAKK,EA7OL,EA6OoBL,GAAKK,EA5OzB,GAAA,GA4O8CL,EAAIK,KAExDX,EAAQgB,WAINC,GApPI,GAoPgBD,CACtBD,GAAIzB,EAAMH,EAAS8B,MAChB,eAGFA,KAIAC,GAAMjK,EAAOjE,OAAS,IACrBkN,EAAMtI,EAAIkJ,EAAMI,EAAa,GAARJ,GAIxBxB,EAAM1H,EAAIsJ,GAAO/B,EAASuB,KACvB,eAGFpB,EAAM1H,EAAIsJ,MACVA,IAGEC,OAAOvJ,IAAK,EAAG8I,SAIhB1I,QAAO0H,cAAPC,MAAA3H,OAAwBf,IAU1BmK,EAAS,SAAShE,MACjBnG,QAGED,EAAWoG,MAGfqD,GAAcrD,EAAMpK,OAGpB0N,EA5RY,IA6RZP,EAAQ,EACRQ,EA/Re,oCAkSnBU,KAA2BjE,EAA3BkE,OAAAC,cAAAC,GAAAH,EAAAI,EAAAC,QAAAC,MAAAH,GAAA,EAAkC,IAAvBI,GAAuBP,EAAAlK,KAC7ByK,GAAe,OACXtK,KAAKkI,EAAmBoC,2FAI7BC,GAAc5K,EAAOjE,OACrB8O,EAAiBD,MAMjBA,KACIvK,KA9SS,KAkTVwK,EAAiBrB,GAAa,IAIhCsB,GAAI5C,mCACR6C,KAA2B5E,EAA3BkE,OAAAC,cAAAU,GAAAD,EAAAE,EAAAR,QAAAC,MAAAM,GAAA,EAAkC,IAAvBL,GAAuBI,EAAA7K,KAC7ByK,IAAgBlB,GAAKkB,EAAeG,MACnCH,0FAMAO,GAAwBL,EAAiB,CAC3CC,GAAIrB,EAAIpB,GAAOH,EAASgB,GAASgC,MAC9B,gBAGGJ,EAAIrB,GAAKyB,IACfJ,uCAEJK,KAA2BhF,EAA3BkE,OAAAC,cAAAc,GAAAD,EAAAE,EAAAZ,QAAAC,MAAAU,GAAA,EAAkC,IAAvBT,GAAuBQ,EAAAjL,SAC7ByK,EAAelB,KAAOP,EAAQhB,KAC3B,YAEHyC,GAAgBlB,EAAG,KAGjB,GADD6B,GAAIpC,EACCG,EArVA,IAqV8BA,GArV9B,GAqVyC,IAC3CU,GAAIV,GAAKK,EArVP,EAqVsBL,GAAKK,EApV3B,GAAA,GAoVgDL,EAAIK,KACxD4B,EAAIvB,WAGFwB,GAAUD,EAAIvB,EACdC,EA3VE,GA2VkBD,IACnB1J,KACNkI,EAAmBO,EAAaiB,EAAIwB,EAAUvB,EAAY,OAEvD3B,EAAMkD,EAAUvB,KAGd3J,KAAKkI,EAAmBO,EAAawC,EAAG,OACxCrC,EAAMC,EAAOgC,EAAuBL,GAAkBD,KACrD,IACNC,yFAIF3B,IACAO,QAGIzJ,GAAO7D,KAAK,KAcdyK,EAAY,SAAST,SACnBzG,GAAUyG,EAAO,SAASxG,SACzBwI,GAAc1E,KAAK9D,GACvB4J,EAAO5J,EAAO3D,MAAM,GAAGgB,eACvB2C,KAeCgG,EAAU,SAASQ,SACjBzG,GAAUyG,EAAO,SAASxG,SACzByI,GAAc3E,KAAK9D,GACvB,OAASwK,EAAOxK,GAChBA,KAOC+F,WAMM,qBASA3F,SACAyI,UAEDe,SACAY,UACCxE,YACEiB,GC5VDrB,KA2IPN,EAAY,kIACZC,EAA4C,GAAI1D,MAAM,SAAU,KAAOhF,UAoHvE4J,EAAO,WACPC,EAAO,cACPC,GAAO,gBAEPE,GAAO,yBG1VPgF,WACI,mBAEI,QAEL,SAAUpK,EAA0BwD,SAEtCxD,GAAWW,SACJ7C,MAAQkC,EAAWlC,OAAS,+BAGjCkC,aAGI,SAAUA,EAA0BwD,SAE3CxD,GAAW+D,QAAsD,UAA5CpE,OAAOK,EAAWM,QAAQ1E,cAA4B,GAAK,MAA4B,KAApBoE,EAAW+D,SAC3FA,KAAO3I,WAId4E,EAAWa,SACJA,KAAO,KAOZb,IC5BHoK,WACI,mBACIC,GAAKhG,iBACVgG,GAAK/G,gBACD+G,GAAK9E,WHSZ+E,MAIA5M,GAAe,mGACfnB,GAAW,cACXC,GAAexB,EAAOA,EAAO,sBAA6BuB,GAAWA,GAAW,IAAMA,GAAWA,IAAY,IAAMvB,EAAO,0BAAiCuB,GAAWA,IAAY,IAAMvB,EAAO,IAAMuB,GAAWA,KAehNgO,GAAUlQ,EADA,6DACe,aAqBzBgG,GAAa,GAAI1C,QAAOD,GAAc,KACtC6C,GAAc,GAAI5C,QAAOnB,GAAc,KACvCgO,GAAiB,GAAI7M,QAAOtD,EAAM,MAzBxB,wDAyBwC,QAAS,QAASkQ,IAAU,KAE9EE,GAAa,GAAI9M,QAAOtD,EAAM,MAAOqD,GAjBrB,uCAiBmD,KACnEgN,GAAcD,GASdL,WACI,eAED,SAAUpK,EAA0BwD,MACrCmH,GAAmB3K,EACnB4K,EAAKD,EAAiBC,GAAMD,EAAiB9J,KAAO8J,EAAiB9J,KAAKpF,MAAM,aACrEoF,KAAOzF,UAEpBuP,EAAiB3J,MAAO,KAKtB,GAJD6J,IAAiB,EACfC,KACAC,EAAUJ,EAAiB3J,MAAMvF,MAAM,KAEpCX,EAAI,EAAGD,EAAKkQ,EAAQpQ,OAAQG,EAAID,IAAMC,EAAG,IAC3CkQ,GAASD,EAAQjQ,GAAGW,MAAM,YAExBuP,EAAO,QACT,SAEC,GADCC,GAAUD,EAAO,GAAGvP,MAAM,KACvBX,EAAI,EAAGD,EAAKoQ,EAAQtQ,OAAQG,EAAID,IAAMC,IAC3CmE,KAAKgM,EAAQnQ,cAGb,YACaoQ,QAAUrE,EAAkBmE,EAAO,GAAIxH,aAEpD,SACa2H,KAAOtE,EAAkBmE,EAAO,GAAIxH,oBAGpC,IACTqD,EAAkBmE,EAAO,GAAIxH,IAAYqD,EAAkBmE,EAAO,GAAIxH,IAK7EqH,IAAgBF,EAAiBG,QAAUA,KAG/B9J,MAAQ5F,cAEpB,GAAIN,GAAI,EAAGD,EAAK+P,EAAGjQ,OAAQG,EAAID,IAAMC,EAAG,IACtCsQ,GAAOR,EAAG9P,GAAGW,MAAM,UAEpB,GAAKoL,EAAkBuE,EAAK,IAE5B5H,EAAQY,iBAQP,GAAKyC,EAAkBuE,EAAK,GAAI5H,GAAS5H,yBALxC,GAAK0I,EAASC,QAAQsC,EAAkBuE,EAAK,GAAI5H,GAAS5H,eAC9D,MAAO4I,KACS1G,MAAQ6M,EAAiB7M,OAAS,2EAA6E0G,IAM/H1J,GAAKsQ,EAAKrQ,KAAK,WAGZ4P,cAGI,SAAUA,EAAmCnH,MAClDxD,GAAa2K,EACbC,EAAK9O,EAAQ6O,EAAiBC,OAChCA,EAAI,KACF,GAAI9P,GAAI,EAAGD,EAAK+P,EAAGjQ,OAAQG,EAAID,IAAMC,EAAG,IACtCuQ,GAAS1L,OAAOiL,EAAG9P,IACnBwQ,EAAQD,EAAOpF,YAAY,KAC3BsF,EAAaF,EAAOzQ,MAAM,EAAG0Q,GAAQ7M,QAAQ8B,GAAaL,GAAkBzB,QAAQ8B,GAAa1E,GAAa4C,QAAQ+L,GAAgBtL,GACxIsM,EAASH,EAAOzQ,MAAM0Q,EAAQ,SAItB9H,EAAQC,IAA2Ea,EAASkB,UAAUgG,GAAxFlH,EAASC,QAAQsC,EAAkB2E,EAAQhI,GAAS5H,eAC5E,MAAO4I,KACG1G,MAAQkC,EAAWlC,OAAS,wDAA2D0F,EAAQC,IAAgB,UAAV,SAAuB,kBAAoBe,IAGzJ1J,GAAKyQ,EAAY,IAAMC,IAGhB3K,KAAO+J,EAAG7P,KAAK,QAGrB+P,GAAUH,EAAiBG,QAAUH,EAAiBG,WAExDH,GAAiBO,UAASJ,EAAA,QAAqBH,EAAiBO,SAChEP,EAAiBQ,OAAML,EAAA,KAAkBH,EAAiBQ,SAExD3I,UACD,GAAMiJ,KAAQX,GACdA,EAAQW,KAAUnB,GAAEmB,MAChBxM,KACNwM,EAAKhN,QAAQ8B,GAAaL,GAAkBzB,QAAQ8B,GAAa1E,GAAa4C,QAAQgM,GAAYvL,GAClG,IACA4L,EAAQW,GAAMhN,QAAQ8B,GAAaL,GAAkBzB,QAAQ8B,GAAa1E,GAAa4C,QAAQiM,GAAaxL,UAI3GsD,GAAO7H,WACCqG,MAAQwB,EAAOzH,KAAK,MAGzBiF,II/JH0L,GAAY,kBAIZtB,WACI,YAED,SAAUpK,EAA0BwD,MACrClC,GAAUtB,EAAWa,MAAQb,EAAWa,KAAKT,MAAMsL,IACrDC,EAAgB3L,KAEhBsB,EAAS,IACNhB,GAASkD,EAAQlD,QAAUqL,EAAcrL,QAAU,MACnDsL,EAAMtK,EAAQ,GAAG1F,cACjBiQ,EAAMvK,EAAQ,GACdwK,EAAexL,EAAf,KAAyBkD,EAAQoI,KAAOA,GACxC1H,EAAgBC,EAAQ2H,KAEhBF,IAAMA,IACNC,IAAMA,IACNhL,KAAOzF,UAEjB8I,MACaA,EAAcZ,MAAMqI,EAAenI,WAGtC1F,MAAQ6N,EAAc7N,OAAS,+BAGvC6N,cAGI,SAAUA,EAA6BnI,MAC5ClD,GAASkD,EAAQlD,QAAUqL,EAAcrL,QAAU,MACnDsL,EAAMD,EAAcC,IACpBE,EAAexL,EAAf,KAAyBkD,EAAQoI,KAAOA,GACxC1H,EAAgBC,EAAQ2H,EAE1B5H,OACaA,EAAcqB,UAAUoG,EAAenI,OAGlDuI,GAAgBJ,EAChBE,EAAMF,EAAcE,aACZhL,MAAU+K,GAAOpI,EAAQoI,KAAvC,IAA8CC,EAEvCE,ICxDHC,GAAO,2DAIP5B,WACI,iBAED,SAAUuB,EAA6BnI,MACxCyI,GAAiBN,WACRO,KAAOD,EAAeJ,MACtBA,IAAMzQ,UAEhBoI,EAAQwC,UAAciG,EAAeC,MAASD,EAAeC,KAAK9L,MAAM4L,QAC7DlO,MAAQmO,EAAenO,OAAS,sBAGzCmO,aAGI,SAAUA,EAA+BzI,MAC9CmI,GAAgBM,WAERJ,KAAOI,EAAeC,MAAQ,IAAItQ,cACzC+P,GC5BTxH,GAAQkG,GAAK/J,QAAU+J,GAEvBlG,EACQgI,GAAM7L,QAAU6L,GAExBhI,EACQiI,GAAO9L,QAAU8L,GAEzBjI,EACQkI,GAAI/L,QAAU+L,GAEtBlI,EACQ+H,GAAK5L,QAAU4L","file":"dist/es5/uri.all.min.js","sourcesContent":["export function merge(...sets:Array<string>):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array<any> {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}","import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$), //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp( subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), // 6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp( \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), // \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp( H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\" h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\" ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"), //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$), //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$), //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"), //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n","/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler<Components extends URIComponents = URIComponents, Options extends URIOptions = URIOptions, ParentComponents extends URIComponents = URIComponents> {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array<string>(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce<Array<{index:number,length:number}>>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = (<RegExpMatchArray>(\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else { //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(components.port.toString(10));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array<string> = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\"); //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options); //normalize base components\n\t\trelative = parse(serialize(relative, options), options); //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(<URIComponents>uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(<URIComponents>uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(<URIComponents>uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array<string>,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\"; //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler<MailtoComponents> = {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;","import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (components.port === (String(components.scheme).toLowerCase() !== \"https\" ? 80 : 443) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler<URNComponents,URNOptions> = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler<UUIDComponents, URIOptions, URNComponents> = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;","import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n"]} \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/index.d.ts b/assets/node_modules/uri-js/dist/esnext/index.d.ts
deleted file mode 100644
index be95efb..0000000
--- a/assets/node_modules/uri-js/dist/esnext/index.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from "./uri";
diff --git a/assets/node_modules/uri-js/dist/esnext/index.js b/assets/node_modules/uri-js/dist/esnext/index.js
deleted file mode 100644
index de8868f..0000000
--- a/assets/node_modules/uri-js/dist/esnext/index.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import { SCHEMES } from "./uri";
-import http from "./schemes/http";
-SCHEMES[http.scheme] = http;
-import https from "./schemes/https";
-SCHEMES[https.scheme] = https;
-import mailto from "./schemes/mailto";
-SCHEMES[mailto.scheme] = mailto;
-import urn from "./schemes/urn";
-SCHEMES[urn.scheme] = urn;
-import uuid from "./schemes/urn-uuid";
-SCHEMES[uuid.scheme] = uuid;
-export * from "./uri";
-//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/index.js.map b/assets/node_modules/uri-js/dist/esnext/index.js.map
deleted file mode 100644
index e9e4008..0000000
--- a/assets/node_modules/uri-js/dist/esnext/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAClC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAE5B,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AAE9B,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAEhC,OAAO,GAAG,MAAM,eAAe,CAAC;AAChC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;AAE1B,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAE5B,cAAc,OAAO,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/regexps-iri.d.ts b/assets/node_modules/uri-js/dist/esnext/regexps-iri.d.ts
deleted file mode 100644
index 6fc0f5d..0000000
--- a/assets/node_modules/uri-js/dist/esnext/regexps-iri.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { URIRegExps } from "./uri";
-declare const _default: URIRegExps;
-export default _default;
diff --git a/assets/node_modules/uri-js/dist/esnext/regexps-iri.js b/assets/node_modules/uri-js/dist/esnext/regexps-iri.js
deleted file mode 100644
index 86239cf..0000000
--- a/assets/node_modules/uri-js/dist/esnext/regexps-iri.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import { buildExps } from "./regexps-uri";
-export default buildExps(true);
-//# sourceMappingURL=regexps-iri.js.map \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/regexps-iri.js.map b/assets/node_modules/uri-js/dist/esnext/regexps-iri.js.map
deleted file mode 100644
index 2269c58..0000000
--- a/assets/node_modules/uri-js/dist/esnext/regexps-iri.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"regexps-iri.js","sourceRoot":"","sources":["../../src/regexps-iri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,eAAe,SAAS,CAAC,IAAI,CAAC,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/regexps-uri.d.ts b/assets/node_modules/uri-js/dist/esnext/regexps-uri.d.ts
deleted file mode 100644
index 10ec87b..0000000
--- a/assets/node_modules/uri-js/dist/esnext/regexps-uri.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import { URIRegExps } from "./uri";
-export declare function buildExps(isIRI: boolean): URIRegExps;
-declare const _default: URIRegExps;
-export default _default;
diff --git a/assets/node_modules/uri-js/dist/esnext/regexps-uri.js b/assets/node_modules/uri-js/dist/esnext/regexps-uri.js
deleted file mode 100644
index 6e7e9a0..0000000
--- a/assets/node_modules/uri-js/dist/esnext/regexps-uri.js
+++ /dev/null
@@ -1,42 +0,0 @@
-import { merge, subexp } from "./util";
-export function buildExps(isIRI) {
- const ALPHA$$ = "[A-Za-z]", CR$ = "[\\x0D]", DIGIT$$ = "[0-9]", DQUOTE$$ = "[\\x22]", HEXDIG$$ = merge(DIGIT$$, "[A-Fa-f]"), //case-insensitive
- LF$$ = "[\\x0A]", SP$$ = "[\\x20]", PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)), //expanded
- GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]", SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$), UCSCHAR$$ = isIRI ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", //subset, excludes bidi control characters
- IPRIVATE$$ = isIRI ? "[\\uE000-\\uF8FF]" : "[]", //subset
- UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$), SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"), USERINFO$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]")) + "*"), DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$), DEC_OCTET_RELAXED$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("0?[1-9]" + DIGIT$$) + "|0?0?" + DIGIT$$), //relaxed parsing rules
- IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$), H16$ = subexp(HEXDIG$$ + "{1,4}"), LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$), IPV6ADDRESS1$ = subexp(subexp(H16$ + "\\:") + "{6}" + LS32$), // 6( h16 ":" ) ls32
- IPV6ADDRESS2$ = subexp("\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$), // "::" 5( h16 ":" ) ls32
- IPV6ADDRESS3$ = subexp(subexp(H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$), //[ h16 ] "::" 4( h16 ":" ) ls32
- IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$), //[ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32
- IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$), //[ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32
- IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$), //[ *3( h16 ":" ) h16 ] "::" h16 ":" ls32
- IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$), //[ *4( h16 ":" ) h16 ] "::" ls32
- IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$), //[ *5( h16 ":" ) h16 ] "::" h16
- IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:"), //[ *6( h16 ":" ) h16 ] "::"
- IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")), ZONEID$ = subexp(subexp(UNRESERVED$$ + "|" + PCT_ENCODED$) + "+"), //RFC 6874
- IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$), //RFC 6874
- IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + ZONEID$), //RFC 6874, with relaxed parsing rules
- IPVFUTURE$ = subexp("[vV]" + HEXDIG$$ + "+\\." + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]") + "+"), IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"), //RFC 6874
- REG_NAME$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$)) + "*"), HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")" + "|" + REG_NAME$), PORT$ = subexp(DIGIT$$ + "*"), AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"), PCHAR$ = subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@]")), SEGMENT$ = subexp(PCHAR$ + "*"), SEGMENT_NZ$ = subexp(PCHAR$ + "+"), SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\@]")) + "+"), PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"), PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"), //simplified
- PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified
- PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified
- PATH_EMPTY$ = "(?!" + PCHAR$ + ")", PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), QUERY$ = subexp(subexp(PCHAR$ + "|" + merge("[\\/\\?]", IPRIVATE$$)) + "*"), FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"), HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$), RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$), ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"), GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$", SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$";
- return {
- NOT_SCHEME: new RegExp(merge("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"),
- NOT_USERINFO: new RegExp(merge("[^\\%\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_HOST: new RegExp(merge("[^\\%\\[\\]\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_PATH: new RegExp(merge("[^\\%\\/\\:\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_PATH_NOSCHEME: new RegExp(merge("[^\\%\\/\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_QUERY: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"),
- NOT_FRAGMENT: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"),
- ESCAPE: new RegExp(merge("[^]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- UNRESERVED: new RegExp(UNRESERVED$$, "g"),
- OTHER_CHARS: new RegExp(merge("[^\\%]", UNRESERVED$$, RESERVED$$), "g"),
- PCT_ENCODED: new RegExp(PCT_ENCODED$, "g"),
- IPV4ADDRESS: new RegExp("^(" + IPV4ADDRESS$ + ")$"),
- IPV6ADDRESS: new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules
- };
-}
-export default buildExps(false);
-//# sourceMappingURL=regexps-uri.js.map \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/regexps-uri.js.map b/assets/node_modules/uri-js/dist/esnext/regexps-uri.js.map
deleted file mode 100644
index cb028b8..0000000
--- a/assets/node_modules/uri-js/dist/esnext/regexps-uri.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"regexps-uri.js","sourceRoot":"","sources":["../../src/regexps-uri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,oBAAoB,KAAa;IACtC,MACC,OAAO,GAAG,UAAU,EACpB,GAAG,GAAG,SAAS,EACf,OAAO,GAAG,OAAO,EACjB,QAAQ,GAAG,SAAS,EACpB,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,EAAG,kBAAkB;IAC1D,IAAI,GAAG,SAAS,EAChB,IAAI,GAAG,SAAS,EAChB,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,aAAa,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAG,UAAU;IACvO,YAAY,GAAG,yBAAyB,EACxC,YAAY,GAAG,qCAAqC,EACpD,UAAU,GAAG,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,EAC9C,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,6EAA6E,CAAC,CAAC,CAAC,IAAI,EAAG,0CAA0C;IACrJ,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAG,QAAQ;IAC1D,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,EACnE,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,GAAG,GAAG,CAAC,EACxE,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,EACjG,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,EACnK,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,EAAG,uBAAuB;IAC3M,YAAY,GAAG,MAAM,CAAC,kBAAkB,GAAG,KAAK,GAAG,kBAAkB,GAAG,KAAK,GAAG,kBAAkB,GAAG,KAAK,GAAG,kBAAkB,CAAC,EAChI,IAAI,GAAG,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,EACjC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,YAAY,CAAC,EAChE,aAAa,GAAG,MAAM,CAA6D,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,8CAA8C;IACxK,aAAa,GAAG,MAAM,CAAkD,QAAQ,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,8CAA8C;IACxK,aAAa,GAAG,MAAM,CAAC,MAAM,CAAkC,IAAI,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,8CAA8C;IACxK,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,8CAA8C;IACxK,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,8CAA8C;IACxK,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,SAAS,GAAU,IAAI,GAAG,KAAK,GAAY,KAAK,CAAC,EAAE,8CAA8C;IACxK,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,SAAS,GAAkC,KAAK,CAAC,EAAE,8CAA8C;IACxK,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,SAAS,GAAkC,IAAI,CAAE,EAAE,6CAA6C;IACvK,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,SAAS,CAAwC,EAAE,4BAA4B;IACtJ,YAAY,GAAG,MAAM,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACxK,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,GAAG,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,EAAG,UAAU;IAC9E,UAAU,GAAG,MAAM,CAAC,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC,EAAG,UAAU;IAClE,kBAAkB,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,EAAG,sCAAsC;IACzI,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,EAClG,WAAW,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,kBAAkB,GAAG,GAAG,GAAG,YAAY,GAAG,GAAG,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC,EAAG,UAAU;IACrH,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC,EACxF,KAAK,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,GAAG,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC,EAC5F,KAAK,GAAG,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,EAC7B,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,EACxF,MAAM,GAAG,MAAM,CAAC,YAAY,GAAG,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,EACnF,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,EAC/B,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,EAClC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,EACtG,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,EACtD,cAAc,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC,GAAG,GAAG,CAAC,EAAG,YAAY;IACzF,cAAc,GAAG,MAAM,CAAC,cAAc,GAAG,aAAa,CAAC,EAAG,YAAY;IACtE,cAAc,GAAG,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC,EAAG,YAAY;IACnE,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,GAAG,EAClC,KAAK,GAAG,MAAM,CAAC,aAAa,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,WAAW,CAAC,EACtH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,EAC3E,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,EACtD,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,WAAW,CAAC,EACpI,IAAI,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,EAC5G,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,WAAW,CAAC,EACxI,SAAS,GAAG,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,EACnG,cAAc,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC,EAC/C,aAAa,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,EAEnF,YAAY,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,aAAa,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,EAC7U,aAAa,GAAG,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,aAAa,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,EAC/T,aAAa,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,aAAa,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,EACrS,YAAY,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,EAC5D,cAAc,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAChH;IAED,OAAO;QACN,UAAU,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC;QAC3E,YAAY,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC;QAC9E,QAAQ,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC;QAChF,QAAQ,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC;QAChF,iBAAiB,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC;QACtF,SAAS,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC;QACtG,YAAY,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAAE,GAAG,CAAC;QAC7F,MAAM,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC;QAClE,UAAU,EAAG,IAAI,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC;QAC1C,WAAW,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC;QACxE,WAAW,EAAG,IAAI,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC;QAC3C,WAAW,EAAG,IAAI,MAAM,CAAC,IAAI,GAAG,YAAY,GAAG,IAAI,CAAC;QACpD,WAAW,EAAG,IAAI,MAAM,CAAC,QAAQ,GAAG,YAAY,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAE,sCAAsC;KACrL,CAAC;AACH,CAAC;AAED,eAAe,SAAS,CAAC,KAAK,CAAC,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/schemes/http.d.ts b/assets/node_modules/uri-js/dist/esnext/schemes/http.d.ts
deleted file mode 100644
index 3899956..0000000
--- a/assets/node_modules/uri-js/dist/esnext/schemes/http.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { URISchemeHandler } from "../uri";
-declare const handler: URISchemeHandler;
-export default handler;
diff --git a/assets/node_modules/uri-js/dist/esnext/schemes/http.js b/assets/node_modules/uri-js/dist/esnext/schemes/http.js
deleted file mode 100644
index a280369..0000000
--- a/assets/node_modules/uri-js/dist/esnext/schemes/http.js
+++ /dev/null
@@ -1,27 +0,0 @@
-const handler = {
- scheme: "http",
- domainHost: true,
- parse: function (components, options) {
- //report missing host
- if (!components.host) {
- components.error = components.error || "HTTP URIs must have a host.";
- }
- return components;
- },
- serialize: function (components, options) {
- //normalize the default port
- if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") {
- components.port = undefined;
- }
- //normalize the empty path
- if (!components.path) {
- components.path = "/";
- }
- //NOTE: We do not parse query strings for HTTP URIs
- //as WWW Form Url Encoded query strings are part of the HTML4+ spec,
- //and not the HTTP spec.
- return components;
- }
-};
-export default handler;
-//# sourceMappingURL=http.js.map \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/schemes/http.js.map b/assets/node_modules/uri-js/dist/esnext/schemes/http.js.map
deleted file mode 100644
index 83e2ad5..0000000
--- a/assets/node_modules/uri-js/dist/esnext/schemes/http.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/schemes/http.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAoB;IAChC,MAAM,EAAG,MAAM;IAEf,UAAU,EAAG,IAAI;IAEjB,KAAK,EAAG,UAAU,UAAwB,EAAE,OAAkB;QAC7D,qBAAqB;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACrB,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,6BAA6B,CAAC;SACrE;QAED,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,SAAS,EAAG,UAAU,UAAwB,EAAE,OAAkB;QACjE,4BAA4B;QAC5B,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,EAAE,EAAE;YACnH,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC;SAC5B;QAED,0BAA0B;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACrB,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;SACtB;QAED,mDAAmD;QACnD,oEAAoE;QACpE,wBAAwB;QAExB,OAAO,UAAU,CAAC;IACnB,CAAC;CACD,CAAC;AAEF,eAAe,OAAO,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/schemes/https.d.ts b/assets/node_modules/uri-js/dist/esnext/schemes/https.d.ts
deleted file mode 100644
index 3899956..0000000
--- a/assets/node_modules/uri-js/dist/esnext/schemes/https.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { URISchemeHandler } from "../uri";
-declare const handler: URISchemeHandler;
-export default handler;
diff --git a/assets/node_modules/uri-js/dist/esnext/schemes/https.js b/assets/node_modules/uri-js/dist/esnext/schemes/https.js
deleted file mode 100644
index fc3c71a..0000000
--- a/assets/node_modules/uri-js/dist/esnext/schemes/https.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import http from "./http";
-const handler = {
- scheme: "https",
- domainHost: http.domainHost,
- parse: http.parse,
- serialize: http.serialize
-};
-export default handler;
-//# sourceMappingURL=https.js.map \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/schemes/https.js.map b/assets/node_modules/uri-js/dist/esnext/schemes/https.js.map
deleted file mode 100644
index 385b8ef..0000000
--- a/assets/node_modules/uri-js/dist/esnext/schemes/https.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"https.js","sourceRoot":"","sources":["../../../src/schemes/https.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,MAAM,OAAO,GAAoB;IAChC,MAAM,EAAG,OAAO;IAChB,UAAU,EAAG,IAAI,CAAC,UAAU;IAC5B,KAAK,EAAG,IAAI,CAAC,KAAK;IAClB,SAAS,EAAG,IAAI,CAAC,SAAS;CAC1B,CAAA;AAED,eAAe,OAAO,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts b/assets/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts
deleted file mode 100644
index b0db4bf..0000000
--- a/assets/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { URISchemeHandler, URIComponents } from "../uri";
-export interface MailtoHeaders {
- [hfname: string]: string;
-}
-export interface MailtoComponents extends URIComponents {
- to: Array<string>;
- headers?: MailtoHeaders;
- subject?: string;
- body?: string;
-}
-declare const handler: URISchemeHandler<MailtoComponents>;
-export default handler;
diff --git a/assets/node_modules/uri-js/dist/esnext/schemes/mailto.js b/assets/node_modules/uri-js/dist/esnext/schemes/mailto.js
deleted file mode 100644
index 2553713..0000000
--- a/assets/node_modules/uri-js/dist/esnext/schemes/mailto.js
+++ /dev/null
@@ -1,148 +0,0 @@
-import { pctEncChar, pctDecChars, unescapeComponent } from "../uri";
-import punycode from "punycode";
-import { merge, subexp, toUpperCase, toArray } from "../util";
-const O = {};
-const isIRI = true;
-//RFC 3986
-const UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]";
-const HEXDIG$$ = "[0-9A-Fa-f]"; //case-insensitive
-const PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); //expanded
-//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =
-//const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]";
-//const WSP$$ = "[\\x20\\x09]";
-//const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127)
-//const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext
-//const VCHAR$$ = "[\\x21-\\x7E]";
-//const WSP$$ = "[\\x20\\x09]";
-//const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext
-//const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+");
-//const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$);
-//const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"');
-const ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]";
-const QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]";
-const VCHAR$$ = merge(QTEXT$$, "[\\\"\\\\]");
-const DOT_ATOM_TEXT$ = subexp(ATEXT$$ + "+" + subexp("\\." + ATEXT$$ + "+") + "*");
-const QUOTED_PAIR$ = subexp("\\\\" + VCHAR$$);
-const QCONTENT$ = subexp(QTEXT$$ + "|" + QUOTED_PAIR$);
-const QUOTED_STRING$ = subexp('\\"' + QCONTENT$ + "*" + '\\"');
-//RFC 6068
-const DTEXT_NO_OBS$$ = "[\\x21-\\x5A\\x5E-\\x7E]"; //%d33-90 / %d94-126
-const SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]";
-const QCHAR$ = subexp(UNRESERVED$$ + "|" + PCT_ENCODED$ + "|" + SOME_DELIMS$$);
-const DOMAIN$ = subexp(DOT_ATOM_TEXT$ + "|" + "\\[" + DTEXT_NO_OBS$$ + "*" + "\\]");
-const LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + "|" + QUOTED_STRING$);
-const ADDR_SPEC$ = subexp(LOCAL_PART$ + "\\@" + DOMAIN$);
-const TO$ = subexp(ADDR_SPEC$ + subexp("\\," + ADDR_SPEC$) + "*");
-const HFNAME$ = subexp(QCHAR$ + "*");
-const HFVALUE$ = HFNAME$;
-const HFIELD$ = subexp(HFNAME$ + "\\=" + HFVALUE$);
-const HFIELDS2$ = subexp(HFIELD$ + subexp("\\&" + HFIELD$) + "*");
-const HFIELDS$ = subexp("\\?" + HFIELDS2$);
-const MAILTO_URI = new RegExp("^mailto\\:" + TO$ + "?" + HFIELDS$ + "?$");
-const UNRESERVED = new RegExp(UNRESERVED$$, "g");
-const PCT_ENCODED = new RegExp(PCT_ENCODED$, "g");
-const NOT_LOCAL_PART = new RegExp(merge("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g");
-const NOT_DOMAIN = new RegExp(merge("[^]", ATEXT$$, "[\\.]", "[\\[]", DTEXT_NO_OBS$$, "[\\]]"), "g");
-const NOT_HFNAME = new RegExp(merge("[^]", UNRESERVED$$, SOME_DELIMS$$), "g");
-const NOT_HFVALUE = NOT_HFNAME;
-const TO = new RegExp("^" + TO$ + "$");
-const HFIELDS = new RegExp("^" + HFIELDS2$ + "$");
-function decodeUnreserved(str) {
- const decStr = pctDecChars(str);
- return (!decStr.match(UNRESERVED) ? str : decStr);
-}
-const handler = {
- scheme: "mailto",
- parse: function (components, options) {
- const mailtoComponents = components;
- const to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(",") : []);
- mailtoComponents.path = undefined;
- if (mailtoComponents.query) {
- let unknownHeaders = false;
- const headers = {};
- const hfields = mailtoComponents.query.split("&");
- for (let x = 0, xl = hfields.length; x < xl; ++x) {
- const hfield = hfields[x].split("=");
- switch (hfield[0]) {
- case "to":
- const toAddrs = hfield[1].split(",");
- for (let x = 0, xl = toAddrs.length; x < xl; ++x) {
- to.push(toAddrs[x]);
- }
- break;
- case "subject":
- mailtoComponents.subject = unescapeComponent(hfield[1], options);
- break;
- case "body":
- mailtoComponents.body = unescapeComponent(hfield[1], options);
- break;
- default:
- unknownHeaders = true;
- headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);
- break;
- }
- }
- if (unknownHeaders)
- mailtoComponents.headers = headers;
- }
- mailtoComponents.query = undefined;
- for (let x = 0, xl = to.length; x < xl; ++x) {
- const addr = to[x].split("@");
- addr[0] = unescapeComponent(addr[0]);
- if (!options.unicodeSupport) {
- //convert Unicode IDN -> ASCII IDN
- try {
- addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());
- }
- catch (e) {
- mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e;
- }
- }
- else {
- addr[1] = unescapeComponent(addr[1], options).toLowerCase();
- }
- to[x] = addr.join("@");
- }
- return mailtoComponents;
- },
- serialize: function (mailtoComponents, options) {
- const components = mailtoComponents;
- const to = toArray(mailtoComponents.to);
- if (to) {
- for (let x = 0, xl = to.length; x < xl; ++x) {
- const toAddr = String(to[x]);
- const atIdx = toAddr.lastIndexOf("@");
- const localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);
- let domain = toAddr.slice(atIdx + 1);
- //convert IDN via punycode
- try {
- domain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));
- }
- catch (e) {
- components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e;
- }
- to[x] = localPart + "@" + domain;
- }
- components.path = to.join(",");
- }
- const headers = mailtoComponents.headers = mailtoComponents.headers || {};
- if (mailtoComponents.subject)
- headers["subject"] = mailtoComponents.subject;
- if (mailtoComponents.body)
- headers["body"] = mailtoComponents.body;
- const fields = [];
- for (const name in headers) {
- if (headers[name] !== O[name]) {
- fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +
- "=" +
- headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar));
- }
- }
- if (fields.length) {
- components.query = fields.join("&");
- }
- return components;
- }
-};
-export default handler;
-//# sourceMappingURL=mailto.js.map \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/schemes/mailto.js.map b/assets/node_modules/uri-js/dist/esnext/schemes/mailto.js.map
deleted file mode 100644
index 82dba9a..0000000
--- a/assets/node_modules/uri-js/dist/esnext/schemes/mailto.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"mailto.js","sourceRoot":"","sources":["../../../src/schemes/mailto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AACpE,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAa9D,MAAM,CAAC,GAAiB,EAAE,CAAC;AAC3B,MAAM,KAAK,GAAG,IAAI,CAAC;AAEnB,UAAU;AACV,MAAM,YAAY,GAAG,wBAAwB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,2EAA2E,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACjJ,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAE,kBAAkB;AACnD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,aAAa,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAE,UAAU;AAE7O,qEAAqE;AACrE,yFAAyF;AACzF,+BAA+B;AAC/B,uGAAuG;AACvG,+GAA+G;AAC/G,kCAAkC;AAClC,+BAA+B;AAC/B,wGAAwG;AACxG,8EAA8E;AAC9E,8FAA8F;AAC9F,mGAAmG;AACnG,MAAM,OAAO,GAAG,uDAAuD,CAAC;AACxE,MAAM,OAAO,GAAG,4DAA4D,CAAC;AAC7E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AACnF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;AAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,GAAG,GAAG,GAAG,YAAY,CAAC,CAAC;AACvD,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;AAE/D,UAAU;AACV,MAAM,cAAc,GAAG,0BAA0B,CAAC,CAAE,oBAAoB;AACxE,MAAM,aAAa,GAAG,qCAAqC,CAAC;AAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,GAAG,GAAG,GAAG,YAAY,GAAG,GAAG,GAAG,aAAa,CAAC,CAAC;AAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,GAAG,GAAG,GAAG,KAAK,GAAG,cAAc,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;AACpF,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,GAAG,GAAG,GAAG,cAAc,CAAC,CAAC;AAClE,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,KAAK,GAAG,OAAO,CAAC,CAAC;AACzD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;AAClE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AACrC,MAAM,QAAQ,GAAG,OAAO,CAAC;AACzB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC;AACnD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AAClE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;AAC3C,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC;AAE1E,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AACjD,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AAClD,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;AACzF,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;AACrG,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9E,MAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACvC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;AAElD,0BAA0B,GAAU;IACnC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,OAAO,GAAuC;IACnD,MAAM,EAAG,QAAQ;IAEjB,KAAK,EAAG,UAAU,UAAwB,EAAE,OAAkB;QAC7D,MAAM,gBAAgB,GAAG,UAA8B,CAAC;QACxD,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjG,gBAAgB,CAAC,IAAI,GAAG,SAAS,CAAC;QAElC,IAAI,gBAAgB,CAAC,KAAK,EAAE;YAC3B,IAAI,cAAc,GAAG,KAAK,CAAA;YAC1B,MAAM,OAAO,GAAiB,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAElD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;gBACjD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAErC,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE;oBAClB,KAAK,IAAI;wBACR,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;4BACjD,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;yBACpB;wBACD,MAAM;oBACP,KAAK,SAAS;wBACb,gBAAgB,CAAC,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;wBACjE,MAAM;oBACP,KAAK,MAAM;wBACV,gBAAgB,CAAC,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;wBAC9D,MAAM;oBACP;wBACC,cAAc,GAAG,IAAI,CAAC;wBACtB,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;wBACvF,MAAM;iBACP;aACD;YAED,IAAI,cAAc;gBAAE,gBAAgB,CAAC,OAAO,GAAG,OAAO,CAAC;SACvD;QAED,gBAAgB,CAAC,KAAK,GAAG,SAAS,CAAC;QAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;YAC5C,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE9B,IAAI,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAErC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;gBAC5B,kCAAkC;gBAClC,IAAI;oBACH,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;iBAC9E;gBAAC,OAAO,CAAC,EAAE;oBACX,gBAAgB,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,IAAI,0EAA0E,GAAG,CAAC,CAAC;iBAClI;aACD;iBAAM;gBACN,IAAI,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;aAC5D;YAED,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACvB;QAED,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAED,SAAS,EAAG,UAAU,gBAAiC,EAAE,OAAkB;QAC1E,MAAM,UAAU,GAAG,gBAAiC,CAAC;QACrD,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,EAAE,EAAE;YACP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;gBAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACtC,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gBACxJ,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAErC,0BAA0B;gBAC1B,IAAI;oBACH,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;iBAC1H;gBAAC,OAAO,CAAC,EAAE;oBACX,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,sDAAsD,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,iBAAiB,GAAG,CAAC,CAAC;iBAC7J;gBAED,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,GAAG,GAAG,MAAM,CAAC;aACjC;YAED,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC/B;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,IAAI,EAAE,CAAC;QAE1E,IAAI,gBAAgB,CAAC,OAAO;YAAE,OAAO,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC;QAC5E,IAAI,gBAAgB,CAAC,IAAI;YAAE,OAAO,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC;QAEnE,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;YAC3B,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;gBAC9B,MAAM,CAAC,IAAI,CACV,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC;oBAC7G,GAAG;oBACH,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CACvH,CAAC;aACF;SACD;QACD,IAAI,MAAM,CAAC,MAAM,EAAE;YAClB,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACpC;QAED,OAAO,UAAU,CAAC;IACnB,CAAC;CACD,CAAA;AAED,eAAe,OAAO,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts b/assets/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts
deleted file mode 100644
index 261ddce..0000000
--- a/assets/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { URISchemeHandler, URIOptions } from "../uri";
-import { URNComponents } from "./urn";
-export interface UUIDComponents extends URNComponents {
- uuid?: string;
-}
-declare const handler: URISchemeHandler<UUIDComponents, URIOptions, URNComponents>;
-export default handler;
diff --git a/assets/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js b/assets/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js
deleted file mode 100644
index 044c8a8..0000000
--- a/assets/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js
+++ /dev/null
@@ -1,23 +0,0 @@
-const UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/;
-const UUID_PARSE = /^[0-9A-Fa-f\-]{36}/;
-//RFC 4122
-const handler = {
- scheme: "urn:uuid",
- parse: function (urnComponents, options) {
- const uuidComponents = urnComponents;
- uuidComponents.uuid = uuidComponents.nss;
- uuidComponents.nss = undefined;
- if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {
- uuidComponents.error = uuidComponents.error || "UUID is not valid.";
- }
- return uuidComponents;
- },
- serialize: function (uuidComponents, options) {
- const urnComponents = uuidComponents;
- //normalize UUID
- urnComponents.nss = (uuidComponents.uuid || "").toLowerCase();
- return urnComponents;
- },
-};
-export default handler;
-//# sourceMappingURL=urn-uuid.js.map \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map b/assets/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map
deleted file mode 100644
index 3b7a8b3..0000000
--- a/assets/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"urn-uuid.js","sourceRoot":"","sources":["../../../src/schemes/urn-uuid.ts"],"names":[],"mappings":"AAQA,MAAM,IAAI,GAAG,0DAA0D,CAAC;AACxE,MAAM,UAAU,GAAG,oBAAoB,CAAC;AAExC,UAAU;AACV,MAAM,OAAO,GAA+D;IAC3E,MAAM,EAAG,UAAU;IAEnB,KAAK,EAAG,UAAU,aAA2B,EAAE,OAAkB;QAChE,MAAM,cAAc,GAAG,aAA+B,CAAC;QACvD,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC;QACzC,cAAc,CAAC,GAAG,GAAG,SAAS,CAAC;QAE/B,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;YACpF,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,IAAI,oBAAoB,CAAC;SACpE;QAED,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,SAAS,EAAG,UAAU,cAA6B,EAAE,OAAkB;QACtE,MAAM,aAAa,GAAG,cAA+B,CAAC;QACtD,gBAAgB;QAChB,aAAa,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9D,OAAO,aAAa,CAAC;IACtB,CAAC;CACD,CAAC;AAEF,eAAe,OAAO,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/schemes/urn.d.ts b/assets/node_modules/uri-js/dist/esnext/schemes/urn.d.ts
deleted file mode 100644
index 4948105..0000000
--- a/assets/node_modules/uri-js/dist/esnext/schemes/urn.d.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { URISchemeHandler, URIComponents, URIOptions } from "../uri";
-export interface URNComponents extends URIComponents {
- nid?: string;
- nss?: string;
-}
-export interface URNOptions extends URIOptions {
- nid?: string;
-}
-declare const handler: URISchemeHandler<URNComponents, URNOptions>;
-export default handler;
diff --git a/assets/node_modules/uri-js/dist/esnext/schemes/urn.js b/assets/node_modules/uri-js/dist/esnext/schemes/urn.js
deleted file mode 100644
index b53161c..0000000
--- a/assets/node_modules/uri-js/dist/esnext/schemes/urn.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import { SCHEMES } from "../uri";
-const NID$ = "(?:[0-9A-Za-z][0-9A-Za-z\\-]{1,31})";
-const PCT_ENCODED$ = "(?:\\%[0-9A-Fa-f]{2})";
-const TRANS$$ = "[0-9A-Za-z\\(\\)\\+\\,\\-\\.\\:\\=\\@\\;\\$\\_\\!\\*\\'\\/\\?\\#]";
-const NSS$ = "(?:(?:" + PCT_ENCODED$ + "|" + TRANS$$ + ")+)";
-const URN_SCHEME = new RegExp("^urn\\:(" + NID$ + ")$");
-const URN_PATH = new RegExp("^(" + NID$ + ")\\:(" + NSS$ + ")$");
-const URN_PARSE = /^([^\:]+)\:(.*)/;
-const URN_EXCLUDED = /[\x00-\x20\\\"\&\<\>\[\]\^\`\{\|\}\~\x7F-\xFF]/g;
-//RFC 2141
-const handler = {
- scheme: "urn",
- parse: function (components, options) {
- const matches = components.path && components.path.match(URN_PARSE);
- let urnComponents = components;
- if (matches) {
- const scheme = options.scheme || urnComponents.scheme || "urn";
- const nid = matches[1].toLowerCase();
- const nss = matches[2];
- const urnScheme = `${scheme}:${options.nid || nid}`;
- const schemeHandler = SCHEMES[urnScheme];
- urnComponents.nid = nid;
- urnComponents.nss = nss;
- urnComponents.path = undefined;
- if (schemeHandler) {
- urnComponents = schemeHandler.parse(urnComponents, options);
- }
- }
- else {
- urnComponents.error = urnComponents.error || "URN can not be parsed.";
- }
- return urnComponents;
- },
- serialize: function (urnComponents, options) {
- const scheme = options.scheme || urnComponents.scheme || "urn";
- const nid = urnComponents.nid;
- const urnScheme = `${scheme}:${options.nid || nid}`;
- const schemeHandler = SCHEMES[urnScheme];
- if (schemeHandler) {
- urnComponents = schemeHandler.serialize(urnComponents, options);
- }
- const uriComponents = urnComponents;
- const nss = urnComponents.nss;
- uriComponents.path = `${nid || options.nid}:${nss}`;
- return uriComponents;
- },
-};
-export default handler;
-//# sourceMappingURL=urn.js.map \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/schemes/urn.js.map b/assets/node_modules/uri-js/dist/esnext/schemes/urn.js.map
deleted file mode 100644
index ea43b0b..0000000
--- a/assets/node_modules/uri-js/dist/esnext/schemes/urn.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"urn.js","sourceRoot":"","sources":["../../../src/schemes/urn.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,OAAO,EAAE,MAAM,QAAQ,CAAC;AAW7C,MAAM,IAAI,GAAG,qCAAqC,CAAC;AACnD,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAC7C,MAAM,OAAO,GAAG,mEAAmE,CAAC;AACpF,MAAM,IAAI,GAAG,QAAQ,GAAG,YAAY,GAAG,GAAG,GAAG,OAAO,GAAG,KAAK,CAAC;AAC7D,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AACxD,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AACjE,MAAM,SAAS,GAAG,iBAAiB,CAAC;AACpC,MAAM,YAAY,GAAG,iDAAiD,CAAC;AAEvE,UAAU;AACV,MAAM,OAAO,GAA8C;IAC1D,MAAM,EAAG,KAAK;IAEd,KAAK,EAAG,UAAU,UAAwB,EAAE,OAAkB;QAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,aAAa,GAAG,UAA2B,CAAC;QAEhD,IAAI,OAAO,EAAE;YACZ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,IAAI,KAAK,CAAC;YAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;YACpD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAEzC,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;YACxB,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;YACxB,aAAa,CAAC,IAAI,GAAG,SAAS,CAAC;YAE/B,IAAI,aAAa,EAAE;gBAClB,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAkB,CAAC;aAC7E;SACD;aAAM;YACN,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,IAAI,wBAAwB,CAAC;SACtE;QAED,OAAO,aAAa,CAAC;IACtB,CAAC;IAED,SAAS,EAAG,UAAU,aAA2B,EAAE,OAAkB;QACpE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,IAAI,KAAK,CAAC;QAC/D,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;QAC9B,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,aAAa,EAAE;YAClB,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAkB,CAAC;SACjF;QAED,MAAM,aAAa,GAAG,aAA8B,CAAC;QACrD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;QAC9B,aAAa,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QAEpD,OAAO,aAAa,CAAC;IACtB,CAAC;CACD,CAAC;AAEF,eAAe,OAAO,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/uri.d.ts b/assets/node_modules/uri-js/dist/esnext/uri.d.ts
deleted file mode 100644
index 320f534..0000000
--- a/assets/node_modules/uri-js/dist/esnext/uri.d.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-export interface URIComponents {
- scheme?: string;
- userinfo?: string;
- host?: string;
- port?: number | string;
- path?: string;
- query?: string;
- fragment?: string;
- reference?: string;
- error?: string;
-}
-export interface URIOptions {
- scheme?: string;
- reference?: string;
- tolerant?: boolean;
- absolutePath?: boolean;
- iri?: boolean;
- unicodeSupport?: boolean;
- domainHost?: boolean;
-}
-export interface URISchemeHandler<Components extends URIComponents = URIComponents, Options extends URIOptions = URIOptions, ParentComponents extends URIComponents = URIComponents> {
- scheme: string;
- parse(components: ParentComponents, options: Options): Components;
- serialize(components: Components, options: Options): ParentComponents;
- unicodeSupport?: boolean;
- domainHost?: boolean;
- absolutePath?: boolean;
-}
-export interface URIRegExps {
- NOT_SCHEME: RegExp;
- NOT_USERINFO: RegExp;
- NOT_HOST: RegExp;
- NOT_PATH: RegExp;
- NOT_PATH_NOSCHEME: RegExp;
- NOT_QUERY: RegExp;
- NOT_FRAGMENT: RegExp;
- ESCAPE: RegExp;
- UNRESERVED: RegExp;
- OTHER_CHARS: RegExp;
- PCT_ENCODED: RegExp;
- IPV4ADDRESS: RegExp;
- IPV6ADDRESS: RegExp;
-}
-export declare const SCHEMES: {
- [scheme: string]: URISchemeHandler;
-};
-export declare function pctEncChar(chr: string): string;
-export declare function pctDecChars(str: string): string;
-export declare function parse(uriString: string, options?: URIOptions): URIComponents;
-export declare function removeDotSegments(input: string): string;
-export declare function serialize(components: URIComponents, options?: URIOptions): string;
-export declare function resolveComponents(base: URIComponents, relative: URIComponents, options?: URIOptions, skipNormalization?: boolean): URIComponents;
-export declare function resolve(baseURI: string, relativeURI: string, options?: URIOptions): string;
-export declare function normalize(uri: string, options?: URIOptions): string;
-export declare function normalize(uri: URIComponents, options?: URIOptions): URIComponents;
-export declare function equal(uriA: string, uriB: string, options?: URIOptions): boolean;
-export declare function equal(uriA: URIComponents, uriB: URIComponents, options?: URIOptions): boolean;
-export declare function escapeComponent(str: string, options?: URIOptions): string;
-export declare function unescapeComponent(str: string, options?: URIOptions): string;
diff --git a/assets/node_modules/uri-js/dist/esnext/uri.js b/assets/node_modules/uri-js/dist/esnext/uri.js
deleted file mode 100644
index 2fb6d71..0000000
--- a/assets/node_modules/uri-js/dist/esnext/uri.js
+++ /dev/null
@@ -1,480 +0,0 @@
-/**
- * URI.js
- *
- * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.
- * @author <a href="mailto:gary.court@gmail.com">Gary Court</a>
- * @see http://github.com/garycourt/uri-js
- */
-/**
- * Copyright 2011 Gary Court. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. 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 GARY COURT ``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 GARY COURT 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.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of Gary Court.
- */
-import URI_PROTOCOL from "./regexps-uri";
-import IRI_PROTOCOL from "./regexps-iri";
-import punycode from "punycode";
-import { toUpperCase, typeOf, assign } from "./util";
-export const SCHEMES = {};
-export function pctEncChar(chr) {
- const c = chr.charCodeAt(0);
- let e;
- if (c < 16)
- e = "%0" + c.toString(16).toUpperCase();
- else if (c < 128)
- e = "%" + c.toString(16).toUpperCase();
- else if (c < 2048)
- e = "%" + ((c >> 6) | 192).toString(16).toUpperCase() + "%" + ((c & 63) | 128).toString(16).toUpperCase();
- else
- e = "%" + ((c >> 12) | 224).toString(16).toUpperCase() + "%" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + "%" + ((c & 63) | 128).toString(16).toUpperCase();
- return e;
-}
-export function pctDecChars(str) {
- let newStr = "";
- let i = 0;
- const il = str.length;
- while (i < il) {
- const c = parseInt(str.substr(i + 1, 2), 16);
- if (c < 128) {
- newStr += String.fromCharCode(c);
- i += 3;
- }
- else if (c >= 194 && c < 224) {
- if ((il - i) >= 6) {
- const c2 = parseInt(str.substr(i + 4, 2), 16);
- newStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
- }
- else {
- newStr += str.substr(i, 6);
- }
- i += 6;
- }
- else if (c >= 224) {
- if ((il - i) >= 9) {
- const c2 = parseInt(str.substr(i + 4, 2), 16);
- const c3 = parseInt(str.substr(i + 7, 2), 16);
- newStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
- }
- else {
- newStr += str.substr(i, 9);
- }
- i += 9;
- }
- else {
- newStr += str.substr(i, 3);
- i += 3;
- }
- }
- return newStr;
-}
-function _normalizeComponentEncoding(components, protocol) {
- function decodeUnreserved(str) {
- const decStr = pctDecChars(str);
- return (!decStr.match(protocol.UNRESERVED) ? str : decStr);
- }
- if (components.scheme)
- components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, "");
- if (components.userinfo !== undefined)
- components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.host !== undefined)
- components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.path !== undefined)
- components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.query !== undefined)
- components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.fragment !== undefined)
- components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- return components;
-}
-;
-function _stripLeadingZeros(str) {
- return str.replace(/^0*(.*)/, "$1") || "0";
-}
-function _normalizeIPv4(host, protocol) {
- const matches = host.match(protocol.IPV4ADDRESS) || [];
- const [, address] = matches;
- if (address) {
- return address.split(".").map(_stripLeadingZeros).join(".");
- }
- else {
- return host;
- }
-}
-function _normalizeIPv6(host, protocol) {
- const matches = host.match(protocol.IPV6ADDRESS) || [];
- const [, address, zone] = matches;
- if (address) {
- const [last, first] = address.toLowerCase().split('::').reverse();
- const firstFields = first ? first.split(":").map(_stripLeadingZeros) : [];
- const lastFields = last.split(":").map(_stripLeadingZeros);
- const isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);
- const fieldCount = isLastFieldIPv4Address ? 7 : 8;
- const lastFieldsStart = lastFields.length - fieldCount;
- const fields = Array(fieldCount);
- for (let x = 0; x < fieldCount; ++x) {
- fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';
- }
- if (isLastFieldIPv4Address) {
- fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);
- }
- const allZeroFields = fields.reduce((acc, field, index) => {
- if (!field || field === "0") {
- const lastLongest = acc[acc.length - 1];
- if (lastLongest && lastLongest.index + lastLongest.length === index) {
- lastLongest.length++;
- }
- else {
- acc.push({ index, length: 1 });
- }
- }
- return acc;
- }, []);
- const longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];
- let newHost;
- if (longestZeroFields && longestZeroFields.length > 1) {
- const newFirst = fields.slice(0, longestZeroFields.index);
- const newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);
- newHost = newFirst.join(":") + "::" + newLast.join(":");
- }
- else {
- newHost = fields.join(":");
- }
- if (zone) {
- newHost += "%" + zone;
- }
- return newHost;
- }
- else {
- return host;
- }
-}
-const URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i;
-const NO_MATCH_IS_UNDEFINED = ("").match(/(){0}/)[1] === undefined;
-export function parse(uriString, options = {}) {
- const components = {};
- const protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);
- if (options.reference === "suffix")
- uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString;
- const matches = uriString.match(URI_PARSE);
- if (matches) {
- if (NO_MATCH_IS_UNDEFINED) {
- //store each component
- components.scheme = matches[1];
- components.userinfo = matches[3];
- components.host = matches[4];
- components.port = parseInt(matches[5], 10);
- components.path = matches[6] || "";
- components.query = matches[7];
- components.fragment = matches[8];
- //fix port number
- if (isNaN(components.port)) {
- components.port = matches[5];
- }
- }
- else { //IE FIX for improper RegExp matching
- //store each component
- components.scheme = matches[1] || undefined;
- components.userinfo = (uriString.indexOf("@") !== -1 ? matches[3] : undefined);
- components.host = (uriString.indexOf("//") !== -1 ? matches[4] : undefined);
- components.port = parseInt(matches[5], 10);
- components.path = matches[6] || "";
- components.query = (uriString.indexOf("?") !== -1 ? matches[7] : undefined);
- components.fragment = (uriString.indexOf("#") !== -1 ? matches[8] : undefined);
- //fix port number
- if (isNaN(components.port)) {
- components.port = (uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : undefined);
- }
- }
- if (components.host) {
- //normalize IP hosts
- components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);
- }
- //determine reference type
- if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {
- components.reference = "same-document";
- }
- else if (components.scheme === undefined) {
- components.reference = "relative";
- }
- else if (components.fragment === undefined) {
- components.reference = "absolute";
- }
- else {
- components.reference = "uri";
- }
- //check for reference errors
- if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) {
- components.error = components.error || "URI is not a " + options.reference + " reference.";
- }
- //find scheme handler
- const schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()];
- //check if scheme can't handle IRIs
- if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {
- //if host component is a domain name
- if (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {
- //convert Unicode IDN -> ASCII IDN
- try {
- components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());
- }
- catch (e) {
- components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e;
- }
- }
- //convert IRI -> URI
- _normalizeComponentEncoding(components, URI_PROTOCOL);
- }
- else {
- //normalize encodings
- _normalizeComponentEncoding(components, protocol);
- }
- //perform scheme specific parsing
- if (schemeHandler && schemeHandler.parse) {
- schemeHandler.parse(components, options);
- }
- }
- else {
- components.error = components.error || "URI can not be parsed.";
- }
- return components;
-}
-;
-function _recomposeAuthority(components, options) {
- const protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);
- const uriTokens = [];
- if (components.userinfo !== undefined) {
- uriTokens.push(components.userinfo);
- uriTokens.push("@");
- }
- if (components.host !== undefined) {
- //normalize IP hosts, add brackets and escape zone separator for IPv6
- uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => "[" + $1 + ($2 ? "%25" + $2 : "") + "]"));
- }
- if (typeof components.port === "number") {
- uriTokens.push(":");
- uriTokens.push(components.port.toString(10));
- }
- return uriTokens.length ? uriTokens.join("") : undefined;
-}
-;
-const RDS1 = /^\.\.?\//;
-const RDS2 = /^\/\.(\/|$)/;
-const RDS3 = /^\/\.\.(\/|$)/;
-const RDS4 = /^\.\.?$/;
-const RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/;
-export function removeDotSegments(input) {
- const output = [];
- while (input.length) {
- if (input.match(RDS1)) {
- input = input.replace(RDS1, "");
- }
- else if (input.match(RDS2)) {
- input = input.replace(RDS2, "/");
- }
- else if (input.match(RDS3)) {
- input = input.replace(RDS3, "/");
- output.pop();
- }
- else if (input === "." || input === "..") {
- input = "";
- }
- else {
- const im = input.match(RDS5);
- if (im) {
- const s = im[0];
- input = input.slice(s.length);
- output.push(s);
- }
- else {
- throw new Error("Unexpected dot segment condition");
- }
- }
- }
- return output.join("");
-}
-;
-export function serialize(components, options = {}) {
- const protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);
- const uriTokens = [];
- //find scheme handler
- const schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()];
- //perform scheme specific serialization
- if (schemeHandler && schemeHandler.serialize)
- schemeHandler.serialize(components, options);
- if (components.host) {
- //if host component is an IPv6 address
- if (protocol.IPV6ADDRESS.test(components.host)) {
- //TODO: normalize IPv6 address as per RFC 5952
- }
- //if host component is a domain name
- else if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {
- //convert IDN via punycode
- try {
- components.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));
- }
- catch (e) {
- components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e;
- }
- }
- }
- //normalize encoding
- _normalizeComponentEncoding(components, protocol);
- if (options.reference !== "suffix" && components.scheme) {
- uriTokens.push(components.scheme);
- uriTokens.push(":");
- }
- const authority = _recomposeAuthority(components, options);
- if (authority !== undefined) {
- if (options.reference !== "suffix") {
- uriTokens.push("//");
- }
- uriTokens.push(authority);
- if (components.path && components.path.charAt(0) !== "/") {
- uriTokens.push("/");
- }
- }
- if (components.path !== undefined) {
- let s = components.path;
- if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {
- s = removeDotSegments(s);
- }
- if (authority === undefined) {
- s = s.replace(/^\/\//, "/%2F"); //don't allow the path to start with "//"
- }
- uriTokens.push(s);
- }
- if (components.query !== undefined) {
- uriTokens.push("?");
- uriTokens.push(components.query);
- }
- if (components.fragment !== undefined) {
- uriTokens.push("#");
- uriTokens.push(components.fragment);
- }
- return uriTokens.join(""); //merge tokens into a string
-}
-;
-export function resolveComponents(base, relative, options = {}, skipNormalization) {
- const target = {};
- if (!skipNormalization) {
- base = parse(serialize(base, options), options); //normalize base components
- relative = parse(serialize(relative, options), options); //normalize relative components
- }
- options = options || {};
- if (!options.tolerant && relative.scheme) {
- target.scheme = relative.scheme;
- //target.authority = relative.authority;
- target.userinfo = relative.userinfo;
- target.host = relative.host;
- target.port = relative.port;
- target.path = removeDotSegments(relative.path || "");
- target.query = relative.query;
- }
- else {
- if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {
- //target.authority = relative.authority;
- target.userinfo = relative.userinfo;
- target.host = relative.host;
- target.port = relative.port;
- target.path = removeDotSegments(relative.path || "");
- target.query = relative.query;
- }
- else {
- if (!relative.path) {
- target.path = base.path;
- if (relative.query !== undefined) {
- target.query = relative.query;
- }
- else {
- target.query = base.query;
- }
- }
- else {
- if (relative.path.charAt(0) === "/") {
- target.path = removeDotSegments(relative.path);
- }
- else {
- if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {
- target.path = "/" + relative.path;
- }
- else if (!base.path) {
- target.path = relative.path;
- }
- else {
- target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path;
- }
- target.path = removeDotSegments(target.path);
- }
- target.query = relative.query;
- }
- //target.authority = base.authority;
- target.userinfo = base.userinfo;
- target.host = base.host;
- target.port = base.port;
- }
- target.scheme = base.scheme;
- }
- target.fragment = relative.fragment;
- return target;
-}
-;
-export function resolve(baseURI, relativeURI, options) {
- const schemelessOptions = assign({ scheme: 'null' }, options);
- return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);
-}
-;
-export function normalize(uri, options) {
- if (typeof uri === "string") {
- uri = serialize(parse(uri, options), options);
- }
- else if (typeOf(uri) === "object") {
- uri = parse(serialize(uri, options), options);
- }
- return uri;
-}
-;
-export function equal(uriA, uriB, options) {
- if (typeof uriA === "string") {
- uriA = serialize(parse(uriA, options), options);
- }
- else if (typeOf(uriA) === "object") {
- uriA = serialize(uriA, options);
- }
- if (typeof uriB === "string") {
- uriB = serialize(parse(uriB, options), options);
- }
- else if (typeOf(uriB) === "object") {
- uriB = serialize(uriB, options);
- }
- return uriA === uriB;
-}
-;
-export function escapeComponent(str, options) {
- return str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);
-}
-;
-export function unescapeComponent(str, options) {
- return str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);
-}
-;
-//# sourceMappingURL=uri.js.map \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/uri.js.map b/assets/node_modules/uri-js/dist/esnext/uri.js.map
deleted file mode 100644
index e1d831c..0000000
--- a/assets/node_modules/uri-js/dist/esnext/uri.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"uri.js","sourceRoot":"","sources":["../../src/uri.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAiDrD,MAAM,CAAC,MAAM,OAAO,GAAsC,EAAE,CAAC;AAE7D,MAAM,qBAAqB,GAAU;IACpC,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAQ,CAAC;IAEb,IAAI,CAAC,GAAG,EAAE;QAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;SAC/C,IAAI,CAAC,GAAG,GAAG;QAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;SACpD,IAAI,CAAC,GAAG,IAAI;QAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;;QACxH,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAE3K,OAAO,CAAC,CAAC;AACV,CAAC;AAED,MAAM,sBAAsB,GAAU;IACrC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IAEtB,OAAO,CAAC,GAAG,EAAE,EAAE;QACd,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC,GAAG,GAAG,EAAE;YACZ,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC,IAAI,CAAC,CAAC;SACP;aACI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE;YAC7B,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;gBAClB,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9C,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;aAC3D;iBAAM;gBACN,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAC3B;YACD,CAAC,IAAI,CAAC,CAAC;SACP;aACI,IAAI,CAAC,IAAI,GAAG,EAAE;YAClB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;gBAClB,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9C,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9C,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;aAC/E;iBAAM;gBACN,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAC3B;YACD,CAAC,IAAI,CAAC,CAAC;SACP;aACI;YACJ,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,CAAC,IAAI,CAAC,CAAC;SACP;KACD;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,qCAAqC,UAAwB,EAAE,QAAmB;IACjF,0BAA0B,GAAU;QACnC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,UAAU,CAAC,MAAM;QAAE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACpK,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS;QAAE,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC/N,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS;QAAE,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC7N,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS;QAAE,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAClQ,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS;QAAE,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACnN,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS;QAAE,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAE/N,OAAO,UAAU,CAAC;AACnB,CAAC;AAAA,CAAC;AAEF,4BAA4B,GAAU;IACrC,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;AAC5C,CAAC;AAED,wBAAwB,IAAW,EAAE,QAAmB;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IAE5B,IAAI,OAAO,EAAE;QACZ,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5D;SAAM;QACN,OAAO,IAAI,CAAC;KACZ;AACF,CAAC;AAED,wBAAwB,IAAW,EAAE,QAAmB;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC;IAElC,IAAI,OAAO,EAAE;QACZ,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAClE,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC3D,MAAM,sBAAsB,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5F,MAAM,UAAU,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC;QACvD,MAAM,MAAM,GAAG,KAAK,CAAS,UAAU,CAAC,CAAC;QAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,EAAE;YACpC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,eAAe,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;SACpE;QAED,IAAI,sBAAsB,EAAE;YAC3B,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;SAC1E;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAsC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9F,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG,EAAE;gBAC5B,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxC,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,KAAK,KAAK,EAAE;oBACpE,WAAW,CAAC,MAAM,EAAE,CAAC;iBACrB;qBAAM;oBACN,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAG,CAAC,EAAE,CAAC,CAAC;iBAChC;aACD;YACD,OAAO,GAAG,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/E,IAAI,OAAc,CAAC;QACnB,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAE;YAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACjF,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACxD;aAAM;YACN,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC3B;QAED,IAAI,IAAI,EAAE;YACT,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC;SACtB;QAED,OAAO,OAAO,CAAC;KACf;SAAM;QACN,OAAO,IAAI,CAAC;KACZ;AACF,CAAC;AAED,MAAM,SAAS,GAAG,iIAAiI,CAAC;AACpJ,MAAM,qBAAqB,GAAsB,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;AAEvF,MAAM,gBAAgB,SAAgB,EAAE,UAAqB,EAAE;IAC9D,MAAM,UAAU,GAAiB,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAEvE,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ;QAAE,SAAS,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAEhH,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE3C,IAAI,OAAO,EAAE;QACZ,IAAI,qBAAqB,EAAE;YAC1B,sBAAsB;YACtB,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,UAAU,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACjC,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3C,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACnC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,UAAU,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAEjC,iBAAiB;YACjB,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBAC3B,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;aAC7B;SACD;aAAM,EAAG,qCAAqC;YAC9C,sBAAsB;YACtB,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;YAC5C,UAAU,CAAC,QAAQ,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC/E,UAAU,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC5E,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3C,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACnC,UAAU,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC5E,UAAU,CAAC,QAAQ,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAE/E,iBAAiB;YACjB,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBAC3B,UAAU,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aAC9F;SACD;QAED,IAAI,UAAU,CAAC,IAAI,EAAE;YACpB,oBAAoB;YACpB,UAAU,CAAC,IAAI,GAAG,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;SACtF;QAED,0BAA0B;QAC1B,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE;YACjM,UAAU,CAAC,SAAS,GAAG,eAAe,CAAC;SACvC;aAAM,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE;YAC3C,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC;SAClC;aAAM,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE;YAC7C,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC;SAClC;aAAM;YACN,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;SAC7B;QAED,4BAA4B;QAC5B,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,KAAK,UAAU,CAAC,SAAS,EAAE;YACtG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,eAAe,GAAG,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC;SAC3F;QAED,qBAAqB;QACrB,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAEzF,mCAAmC;QACnC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE;YACjF,oCAAoC;YACpC,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE;gBAC3F,kCAAkC;gBAClC,IAAI;oBACH,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;iBAC7G;gBAAC,OAAO,CAAC,EAAE;oBACX,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,iEAAiE,GAAG,CAAC,CAAC;iBAC7G;aACD;YACD,oBAAoB;YACpB,2BAA2B,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;SACtD;aAAM;YACN,qBAAqB;YACrB,2BAA2B,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;SAClD;QAED,iCAAiC;QACjC,IAAI,aAAa,IAAI,aAAa,CAAC,KAAK,EAAE;YACzC,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;SACzC;KACD;SAAM;QACN,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,wBAAwB,CAAC;KAChE;IAED,OAAO,UAAU,CAAC;AACnB,CAAC;AAAA,CAAC;AAEF,6BAA6B,UAAwB,EAAE,OAAkB;IACxE,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACvE,MAAM,SAAS,GAAiB,EAAE,CAAC;IAEnC,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE;QACtC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACpB;IAED,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;QAClC,qEAAqE;QACrE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;KAClL;IAED,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE;QACxC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;KAC7C;IAED,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC;AAAA,CAAC;AAEF,MAAM,IAAI,GAAG,UAAU,CAAC;AACxB,MAAM,IAAI,GAAG,aAAa,CAAC;AAC3B,MAAM,IAAI,GAAG,eAAe,CAAC;AAC7B,MAAM,IAAI,GAAG,SAAS,CAAC;AACvB,MAAM,IAAI,GAAG,wBAAwB,CAAC;AAEtC,MAAM,4BAA4B,KAAY;IAC7C,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,OAAO,KAAK,CAAC,MAAM,EAAE;QACpB,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACtB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SAChC;aAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC7B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SACjC;aAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC7B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACjC,MAAM,CAAC,GAAG,EAAE,CAAC;SACb;aAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE;YAC3C,KAAK,GAAG,EAAE,CAAC;SACX;aAAM;YACN,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,EAAE,EAAE;gBACP,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAChB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACf;iBAAM;gBACN,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;aACpD;SACD;KACD;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAAA,CAAC;AAEF,MAAM,oBAAoB,UAAwB,EAAE,UAAqB,EAAE;IAC1E,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAiB,EAAE,CAAC;IAEnC,qBAAqB;IACrB,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAEzF,uCAAuC;IACvC,IAAI,aAAa,IAAI,aAAa,CAAC,SAAS;QAAE,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAE3F,IAAI,UAAU,CAAC,IAAI,EAAE;QACpB,sCAAsC;QACtC,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAC/C,8CAA8C;SAC9C;QAED,oCAAoC;aAC/B,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE;YAC3E,0BAA0B;YAC1B,IAAI;gBACH,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;aACpK;YAAC,OAAO,CAAC,EAAE;gBACX,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,6CAA6C,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,iBAAiB,GAAG,CAAC,CAAC;aACpJ;SACD;KACD;IAED,oBAAoB;IACpB,2BAA2B,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAElD,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE;QACxD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACpB;IAED,MAAM,SAAS,GAAG,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC3D,IAAI,SAAS,KAAK,SAAS,EAAE;QAC5B,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE;YACnC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACrB;QAED,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1B,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YACzD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACpB;KACD;IAED,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;QAClC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC;QAExB,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;YAC7E,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;SACzB;QAED,IAAI,SAAS,KAAK,SAAS,EAAE;YAC5B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAE,yCAAyC;SAC1E;QAED,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAClB;IAED,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE;QACnC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACjC;IAED,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE;QACtC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KACpC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAE,4BAA4B;AACzD,CAAC;AAAA,CAAC;AAEF,MAAM,4BAA4B,IAAkB,EAAE,QAAsB,EAAE,UAAqB,EAAE,EAAE,iBAA0B;IAChI,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,IAAI,CAAC,iBAAiB,EAAE;QACvB,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAE,2BAA2B;QAC7E,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAE,+BAA+B;KACzF;IACD,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAExB,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;QACzC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAChC,wCAAwC;QACxC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACpC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC5B,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC5B,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;KAC9B;SAAM;QACN,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;YAClG,wCAAwC;YACxC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;YACpC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC5B,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC5B,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;SAC9B;aAAM;YACN,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;gBACnB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE;oBACjC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;iBAC9B;qBAAM;oBACN,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;iBAC1B;aACD;iBAAM;gBACN,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;oBACpC,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBAC/C;qBAAM;oBACN,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;wBACtG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;qBAClC;yBAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;wBACtB,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;qBAC5B;yBAAM;wBACN,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;qBACjF;oBACD,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;iBAC7C;gBACD,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;aAC9B;YACD,oCAAoC;YACpC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAChC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SACxB;QACD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;KAC5B;IAED,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAEpC,OAAO,MAAM,CAAC;AACf,CAAC;AAAA,CAAC;AAEF,MAAM,kBAAkB,OAAc,EAAE,WAAkB,EAAE,OAAmB;IAC9E,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,MAAM,EAAG,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;IAC/D,OAAO,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAC3J,CAAC;AAAA,CAAC;AAIF,MAAM,oBAAoB,GAAO,EAAE,OAAmB;IACrD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC5B,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;KAC9C;SAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;QACpC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAgB,GAAG,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;KAC7D;IAED,OAAO,GAAG,CAAC;AACZ,CAAC;AAAA,CAAC;AAIF,MAAM,gBAAgB,IAAQ,EAAE,IAAQ,EAAE,OAAmB;IAC5D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC7B,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;KAChD;SAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;QACrC,IAAI,GAAG,SAAS,CAAgB,IAAI,EAAE,OAAO,CAAC,CAAC;KAC/C;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC7B,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;KAChD;SAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;QACrC,IAAI,GAAG,SAAS,CAAgB,IAAI,EAAE,OAAO,CAAC,CAAC;KAC/C;IAED,OAAO,IAAI,KAAK,IAAI,CAAC;AACtB,CAAC;AAAA,CAAC;AAEF,MAAM,0BAA0B,GAAU,EAAE,OAAmB;IAC9D,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;AAC1H,CAAC;AAAA,CAAC;AAEF,MAAM,4BAA4B,GAAU,EAAE,OAAmB;IAChE,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;AACrI,CAAC;AAAA,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/util.d.ts b/assets/node_modules/uri-js/dist/esnext/util.d.ts
deleted file mode 100644
index 8b484cd..0000000
--- a/assets/node_modules/uri-js/dist/esnext/util.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export declare function merge(...sets: Array<string>): string;
-export declare function subexp(str: string): string;
-export declare function typeOf(o: any): string;
-export declare function toUpperCase(str: string): string;
-export declare function toArray(obj: any): Array<any>;
-export declare function assign(target: object, source: any): any;
diff --git a/assets/node_modules/uri-js/dist/esnext/util.js b/assets/node_modules/uri-js/dist/esnext/util.js
deleted file mode 100644
index 45af46f..0000000
--- a/assets/node_modules/uri-js/dist/esnext/util.js
+++ /dev/null
@@ -1,36 +0,0 @@
-export function merge(...sets) {
- if (sets.length > 1) {
- sets[0] = sets[0].slice(0, -1);
- const xl = sets.length - 1;
- for (let x = 1; x < xl; ++x) {
- sets[x] = sets[x].slice(1, -1);
- }
- sets[xl] = sets[xl].slice(1);
- return sets.join('');
- }
- else {
- return sets[0];
- }
-}
-export function subexp(str) {
- return "(?:" + str + ")";
-}
-export function typeOf(o) {
- return o === undefined ? "undefined" : (o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase());
-}
-export function toUpperCase(str) {
- return str.toUpperCase();
-}
-export function toArray(obj) {
- return obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== "number" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];
-}
-export function assign(target, source) {
- const obj = target;
- if (source) {
- for (const key in source) {
- obj[key] = source[key];
- }
- }
- return obj;
-}
-//# sourceMappingURL=util.js.map \ No newline at end of file
diff --git a/assets/node_modules/uri-js/dist/esnext/util.js.map b/assets/node_modules/uri-js/dist/esnext/util.js.map
deleted file mode 100644
index 05d9df0..0000000
--- a/assets/node_modules/uri-js/dist/esnext/util.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,IAAkB;IAC1C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACrB;SAAM;QACN,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;KACf;AACF,CAAC;AAED,MAAM,iBAAiB,GAAU;IAChC,OAAO,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1B,CAAC;AAED,MAAM,iBAAiB,CAAK;IAC3B,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACpJ,CAAC;AAED,MAAM,sBAAsB,GAAU;IACrC,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,kBAAkB,GAAO;IAC9B,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvM,CAAC;AAGD,MAAM,iBAAiB,MAAc,EAAE,MAAW;IACjD,MAAM,GAAG,GAAG,MAAa,CAAC;IAC1B,IAAI,MAAM,EAAE;QACX,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;YACzB,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;SACvB;KACD;IACD,OAAO,GAAG,CAAC;AACZ,CAAC"} \ No newline at end of file
diff --git a/assets/node_modules/uri-js/package.json b/assets/node_modules/uri-js/package.json
deleted file mode 100644
index ad02071..0000000
--- a/assets/node_modules/uri-js/package.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "name": "uri-js",
- "version": "4.2.2",
- "description": "An RFC 3986/3987 compliant, scheme extendable URI/IRI parsing/validating/resolving library for JavaScript.",
- "main": "dist/es5/uri.all.js",
- "types": "dist/es5/uri.all.d.ts",
- "directories": {
- "test": "tests"
- },
- "scripts": {
- "build:esnext": "node_modules/.bin/tsc",
- "build:es5": "node_modules/.bin/rollup -c && cp dist/esnext/uri.d.ts dist/es5/uri.all.d.ts && npm run build:es5:fix-sourcemap",
- "build:es5:fix-sourcemap": "node_modules/.bin/sorcery -i dist/es5/uri.all.js",
- "build:es5:min": "node_modules/.bin/uglifyjs dist/es5/uri.all.js --support-ie8 --output dist/es5/uri.all.min.js --in-source-map dist/es5/uri.all.js.map --source-map uri.all.min.js.map --comments --compress --mangle --pure-funcs merge subexp && mv uri.all.min.js.map dist/es5/ && cp dist/es5/uri.all.d.ts dist/es5/uri.all.min.d.ts",
- "build": "npm run build:esnext && npm run build:es5 && npm run build:es5:min",
- "test": "node_modules/.bin/mocha -u mocha-qunit-ui dist/es5/uri.all.js tests/tests.js"
- },
- "repository": {
- "type": "git",
- "url": "http://github.com/garycourt/uri-js"
- },
- "keywords": [
- "URI",
- "IRI",
- "IDN",
- "URN",
- "UUID",
- "HTTP",
- "HTTPS",
- "MAILTO",
- "RFC3986",
- "RFC3987",
- "RFC5891",
- "RFC2616",
- "RFC2818",
- "RFC2141",
- "RFC4122",
- "RFC4291",
- "RFC5952",
- "RFC6068",
- "RFC6874"
- ],
- "author": "Gary Court <gary.court@gmail.com>",
- "license": "BSD-2-Clause",
- "bugs": {
- "url": "https://github.com/garycourt/uri-js/issues"
- },
- "homepage": "https://github.com/garycourt/uri-js",
- "devDependencies": {
- "babel-cli": "^6.26.0",
- "babel-plugin-external-helpers": "^6.22.0",
- "babel-preset-latest": "^6.24.1",
- "mocha": "^3.2.0",
- "mocha-qunit-ui": "^0.1.3",
- "rollup": "^0.41.6",
- "rollup-plugin-babel": "^2.7.1",
- "rollup-plugin-node-resolve": "^2.0.0",
- "sorcery": "^0.10.0",
- "typescript": "^2.8.1",
- "uglify-js": "^2.8.14"
- },
- "dependencies": {
- "punycode": "^2.1.0"
- }
-}
diff --git a/assets/node_modules/uri-js/rollup.config.js b/assets/node_modules/uri-js/rollup.config.js
deleted file mode 100644
index 5bb8b05..0000000
--- a/assets/node_modules/uri-js/rollup.config.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import resolve from 'rollup-plugin-node-resolve';
-import babel from 'rollup-plugin-babel';
-const packageJson = require('./package.json');
-
-export default {
- entry : "dist/esnext/index.js",
- format : "umd",
- moduleName : "URI",
- plugins: [
- resolve({
- module: true,
- jsnext: true,
- preferBuiltins: false
- }),
-
- babel({
- "presets": [
- ["latest", {
- "es2015": {
- "modules": false
- }
- }]
- ],
- "plugins": ["external-helpers"],
- "externalHelpers": false
- }
-)
- ],
- dest : "dist/es5/uri.all.js",
- sourceMap: true,
- banner: "/** @license URI.js v" + packageJson.version + " (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */"
-}
diff --git a/assets/node_modules/uri-js/src/index.ts b/assets/node_modules/uri-js/src/index.ts
deleted file mode 100644
index 6532a1b..0000000
--- a/assets/node_modules/uri-js/src/index.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { SCHEMES } from "./uri";
-
-import http from "./schemes/http";
-SCHEMES[http.scheme] = http;
-
-import https from "./schemes/https";
-SCHEMES[https.scheme] = https;
-
-import mailto from "./schemes/mailto";
-SCHEMES[mailto.scheme] = mailto;
-
-import urn from "./schemes/urn";
-SCHEMES[urn.scheme] = urn;
-
-import uuid from "./schemes/urn-uuid";
-SCHEMES[uuid.scheme] = uuid;
-
-export * from "./uri";
diff --git a/assets/node_modules/uri-js/src/punycode.d.ts b/assets/node_modules/uri-js/src/punycode.d.ts
deleted file mode 100644
index 4ecbd34..0000000
--- a/assets/node_modules/uri-js/src/punycode.d.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-declare module 'punycode' {
- function ucs2decode(string:string):Array<number>;
- function ucs2encode(array:Array<number>):string;
- function decode(string:string):string;
- function encode(string:string):string;
- function toASCII(string:string):string;
- function toUnicode(string:string):string;
-
- interface Punycode {
- 'version': '2.2.0';
- 'ucs2': {
- 'decode': typeof ucs2decode;
- 'encode': typeof ucs2encode;
- },
- 'decode': typeof decode;
- 'encode': typeof encode;
- 'toASCII': typeof toASCII;
- 'toUnicode': typeof toUnicode;
- }
-
- const punycode:Punycode;
-
- export default punycode;
-}
diff --git a/assets/node_modules/uri-js/src/regexps-iri.ts b/assets/node_modules/uri-js/src/regexps-iri.ts
deleted file mode 100644
index 8bd605b..0000000
--- a/assets/node_modules/uri-js/src/regexps-iri.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import { URIRegExps } from "./uri";
-import { buildExps } from "./regexps-uri";
-
-export default buildExps(true);
diff --git a/assets/node_modules/uri-js/src/regexps-uri.ts b/assets/node_modules/uri-js/src/regexps-uri.ts
deleted file mode 100644
index 8d6b547..0000000
--- a/assets/node_modules/uri-js/src/regexps-uri.ts
+++ /dev/null
@@ -1,89 +0,0 @@
-import { URIRegExps } from "./uri";
-import { merge, subexp } from "./util";
-
-export function buildExps(isIRI:boolean):URIRegExps {
- const
- ALPHA$$ = "[A-Za-z]",
- CR$ = "[\\x0D]",
- DIGIT$$ = "[0-9]",
- DQUOTE$$ = "[\\x22]",
- HEXDIG$$ = merge(DIGIT$$, "[A-Fa-f]"), //case-insensitive
- LF$$ = "[\\x0A]",
- SP$$ = "[\\x20]",
- PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)), //expanded
- GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]",
- SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]",
- RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),
- UCSCHAR$$ = isIRI ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", //subset, excludes bidi control characters
- IPRIVATE$$ = isIRI ? "[\\uE000-\\uF8FF]" : "[]", //subset
- UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$),
- SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"),
- USERINFO$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]")) + "*"),
- DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$),
- DEC_OCTET_RELAXED$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("0?[1-9]" + DIGIT$$) + "|0?0?" + DIGIT$$), //relaxed parsing rules
- IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$),
- H16$ = subexp(HEXDIG$$ + "{1,4}"),
- LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$),
- IPV6ADDRESS1$ = subexp( subexp(H16$ + "\\:") + "{6}" + LS32$), // 6( h16 ":" ) ls32
- IPV6ADDRESS2$ = subexp( "\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$), // "::" 5( h16 ":" ) ls32
- IPV6ADDRESS3$ = subexp(subexp( H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$), //[ h16 ] "::" 4( h16 ":" ) ls32
- IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$), //[ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32
- IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$), //[ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32
- IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$), //[ *3( h16 ":" ) h16 ] "::" h16 ":" ls32
- IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$), //[ *4( h16 ":" ) h16 ] "::" ls32
- IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$ ), //[ *5( h16 ":" ) h16 ] "::" h16
- IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:" ), //[ *6( h16 ":" ) h16 ] "::"
- IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")),
- ZONEID$ = subexp(subexp(UNRESERVED$$ + "|" + PCT_ENCODED$) + "+"), //RFC 6874
- IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$), //RFC 6874
- IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + ZONEID$), //RFC 6874, with relaxed parsing rules
- IPVFUTURE$ = subexp("[vV]" + HEXDIG$$ + "+\\." + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]") + "+"),
- IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"), //RFC 6874
- REG_NAME$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$)) + "*"),
- HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")" + "|" + REG_NAME$),
- PORT$ = subexp(DIGIT$$ + "*"),
- AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"),
- PCHAR$ = subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@]")),
- SEGMENT$ = subexp(PCHAR$ + "*"),
- SEGMENT_NZ$ = subexp(PCHAR$ + "+"),
- SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\@]")) + "+"),
- PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"),
- PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"), //simplified
- PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified
- PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified
- PATH_EMPTY$ = "(?!" + PCHAR$ + ")",
- PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$),
- QUERY$ = subexp(subexp(PCHAR$ + "|" + merge("[\\/\\?]", IPRIVATE$$)) + "*"),
- FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"),
- HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$),
- URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"),
- RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$),
- RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"),
- URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$),
- ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"),
-
- GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$",
- RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$",
- ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$",
- SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$",
- AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$"
- ;
-
- return {
- NOT_SCHEME : new RegExp(merge("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"),
- NOT_USERINFO : new RegExp(merge("[^\\%\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_HOST : new RegExp(merge("[^\\%\\[\\]\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_PATH : new RegExp(merge("[^\\%\\/\\:\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_PATH_NOSCHEME : new RegExp(merge("[^\\%\\/\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- NOT_QUERY : new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"),
- NOT_FRAGMENT : new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"),
- ESCAPE : new RegExp(merge("[^]", UNRESERVED$$, SUB_DELIMS$$), "g"),
- UNRESERVED : new RegExp(UNRESERVED$$, "g"),
- OTHER_CHARS : new RegExp(merge("[^\\%]", UNRESERVED$$, RESERVED$$), "g"),
- PCT_ENCODED : new RegExp(PCT_ENCODED$, "g"),
- IPV4ADDRESS : new RegExp("^(" + IPV4ADDRESS$ + ")$"),
- IPV6ADDRESS : new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules
- };
-}
-
-export default buildExps(false);
diff --git a/assets/node_modules/uri-js/src/schemes/http.ts b/assets/node_modules/uri-js/src/schemes/http.ts
deleted file mode 100644
index 3e53145..0000000
--- a/assets/node_modules/uri-js/src/schemes/http.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { URISchemeHandler, URIComponents, URIOptions } from "../uri";
-
-const handler:URISchemeHandler = {
- scheme : "http",
-
- domainHost : true,
-
- parse : function (components:URIComponents, options:URIOptions):URIComponents {
- //report missing host
- if (!components.host) {
- components.error = components.error || "HTTP URIs must have a host.";
- }
-
- return components;
- },
-
- serialize : function (components:URIComponents, options:URIOptions):URIComponents {
- //normalize the default port
- if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") {
- components.port = undefined;
- }
-
- //normalize the empty path
- if (!components.path) {
- components.path = "/";
- }
-
- //NOTE: We do not parse query strings for HTTP URIs
- //as WWW Form Url Encoded query strings are part of the HTML4+ spec,
- //and not the HTTP spec.
-
- return components;
- }
-};
-
-export default handler; \ No newline at end of file
diff --git a/assets/node_modules/uri-js/src/schemes/https.ts b/assets/node_modules/uri-js/src/schemes/https.ts
deleted file mode 100644
index a19a494..0000000
--- a/assets/node_modules/uri-js/src/schemes/https.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { URISchemeHandler, URIComponents, URIOptions } from "../uri";
-import http from "./http";
-
-const handler:URISchemeHandler = {
- scheme : "https",
- domainHost : http.domainHost,
- parse : http.parse,
- serialize : http.serialize
-}
-
-export default handler; \ No newline at end of file
diff --git a/assets/node_modules/uri-js/src/schemes/mailto.ts b/assets/node_modules/uri-js/src/schemes/mailto.ts
deleted file mode 100644
index 3faf320..0000000
--- a/assets/node_modules/uri-js/src/schemes/mailto.ts
+++ /dev/null
@@ -1,182 +0,0 @@
-import { URISchemeHandler, URIComponents, URIOptions } from "../uri";
-import { pctEncChar, pctDecChars, unescapeComponent } from "../uri";
-import punycode from "punycode";
-import { merge, subexp, toUpperCase, toArray } from "../util";
-
-export interface MailtoHeaders {
- [hfname:string]:string
-}
-
-export interface MailtoComponents extends URIComponents {
- to:Array<string>,
- headers?:MailtoHeaders,
- subject?:string,
- body?:string
-}
-
-const O:MailtoHeaders = {};
-const isIRI = true;
-
-//RFC 3986
-const UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]";
-const HEXDIG$$ = "[0-9A-Fa-f]"; //case-insensitive
-const PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); //expanded
-
-//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =
-//const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]";
-//const WSP$$ = "[\\x20\\x09]";
-//const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127)
-//const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext
-//const VCHAR$$ = "[\\x21-\\x7E]";
-//const WSP$$ = "[\\x20\\x09]";
-//const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext
-//const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+");
-//const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$);
-//const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"');
-const ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]";
-const QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]";
-const VCHAR$$ = merge(QTEXT$$, "[\\\"\\\\]");
-const DOT_ATOM_TEXT$ = subexp(ATEXT$$ + "+" + subexp("\\." + ATEXT$$ + "+") + "*");
-const QUOTED_PAIR$ = subexp("\\\\" + VCHAR$$);
-const QCONTENT$ = subexp(QTEXT$$ + "|" + QUOTED_PAIR$);
-const QUOTED_STRING$ = subexp('\\"' + QCONTENT$ + "*" + '\\"');
-
-//RFC 6068
-const DTEXT_NO_OBS$$ = "[\\x21-\\x5A\\x5E-\\x7E]"; //%d33-90 / %d94-126
-const SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]";
-const QCHAR$ = subexp(UNRESERVED$$ + "|" + PCT_ENCODED$ + "|" + SOME_DELIMS$$);
-const DOMAIN$ = subexp(DOT_ATOM_TEXT$ + "|" + "\\[" + DTEXT_NO_OBS$$ + "*" + "\\]");
-const LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + "|" + QUOTED_STRING$);
-const ADDR_SPEC$ = subexp(LOCAL_PART$ + "\\@" + DOMAIN$);
-const TO$ = subexp(ADDR_SPEC$ + subexp("\\," + ADDR_SPEC$) + "*");
-const HFNAME$ = subexp(QCHAR$ + "*");
-const HFVALUE$ = HFNAME$;
-const HFIELD$ = subexp(HFNAME$ + "\\=" + HFVALUE$);
-const HFIELDS2$ = subexp(HFIELD$ + subexp("\\&" + HFIELD$) + "*");
-const HFIELDS$ = subexp("\\?" + HFIELDS2$);
-const MAILTO_URI = new RegExp("^mailto\\:" + TO$ + "?" + HFIELDS$ + "?$");
-
-const UNRESERVED = new RegExp(UNRESERVED$$, "g");
-const PCT_ENCODED = new RegExp(PCT_ENCODED$, "g");
-const NOT_LOCAL_PART = new RegExp(merge("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g");
-const NOT_DOMAIN = new RegExp(merge("[^]", ATEXT$$, "[\\.]", "[\\[]", DTEXT_NO_OBS$$, "[\\]]"), "g");
-const NOT_HFNAME = new RegExp(merge("[^]", UNRESERVED$$, SOME_DELIMS$$), "g");
-const NOT_HFVALUE = NOT_HFNAME;
-const TO = new RegExp("^" + TO$ + "$");
-const HFIELDS = new RegExp("^" + HFIELDS2$ + "$");
-
-function decodeUnreserved(str:string):string {
- const decStr = pctDecChars(str);
- return (!decStr.match(UNRESERVED) ? str : decStr);
-}
-
-const handler:URISchemeHandler<MailtoComponents> = {
- scheme : "mailto",
-
- parse : function (components:URIComponents, options:URIOptions):MailtoComponents {
- const mailtoComponents = components as MailtoComponents;
- const to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(",") : []);
- mailtoComponents.path = undefined;
-
- if (mailtoComponents.query) {
- let unknownHeaders = false
- const headers:MailtoHeaders = {};
- const hfields = mailtoComponents.query.split("&");
-
- for (let x = 0, xl = hfields.length; x < xl; ++x) {
- const hfield = hfields[x].split("=");
-
- switch (hfield[0]) {
- case "to":
- const toAddrs = hfield[1].split(",");
- for (let x = 0, xl = toAddrs.length; x < xl; ++x) {
- to.push(toAddrs[x]);
- }
- break;
- case "subject":
- mailtoComponents.subject = unescapeComponent(hfield[1], options);
- break;
- case "body":
- mailtoComponents.body = unescapeComponent(hfield[1], options);
- break;
- default:
- unknownHeaders = true;
- headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);
- break;
- }
- }
-
- if (unknownHeaders) mailtoComponents.headers = headers;
- }
-
- mailtoComponents.query = undefined;
-
- for (let x = 0, xl = to.length; x < xl; ++x) {
- const addr = to[x].split("@");
-
- addr[0] = unescapeComponent(addr[0]);
-
- if (!options.unicodeSupport) {
- //convert Unicode IDN -> ASCII IDN
- try {
- addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());
- } catch (e) {
- mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e;
- }
- } else {
- addr[1] = unescapeComponent(addr[1], options).toLowerCase();
- }
-
- to[x] = addr.join("@");
- }
-
- return mailtoComponents;
- },
-
- serialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {
- const components = mailtoComponents as URIComponents;
- const to = toArray(mailtoComponents.to);
- if (to) {
- for (let x = 0, xl = to.length; x < xl; ++x) {
- const toAddr = String(to[x]);
- const atIdx = toAddr.lastIndexOf("@");
- const localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);
- let domain = toAddr.slice(atIdx + 1);
-
- //convert IDN via punycode
- try {
- domain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));
- } catch (e) {
- components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e;
- }
-
- to[x] = localPart + "@" + domain;
- }
-
- components.path = to.join(",");
- }
-
- const headers = mailtoComponents.headers = mailtoComponents.headers || {};
-
- if (mailtoComponents.subject) headers["subject"] = mailtoComponents.subject;
- if (mailtoComponents.body) headers["body"] = mailtoComponents.body;
-
- const fields = [];
- for (const name in headers) {
- if (headers[name] !== O[name]) {
- fields.push(
- name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +
- "=" +
- headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)
- );
- }
- }
- if (fields.length) {
- components.query = fields.join("&");
- }
-
- return components;
- }
-}
-
-export default handler; \ No newline at end of file
diff --git a/assets/node_modules/uri-js/src/schemes/urn-uuid.ts b/assets/node_modules/uri-js/src/schemes/urn-uuid.ts
deleted file mode 100644
index 5665329..0000000
--- a/assets/node_modules/uri-js/src/schemes/urn-uuid.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { URISchemeHandler, URIComponents, URIOptions } from "../uri";
-import { URNComponents } from "./urn";
-import { SCHEMES } from "../uri";
-
-export interface UUIDComponents extends URNComponents {
- uuid?: string;
-}
-
-const UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/;
-const UUID_PARSE = /^[0-9A-Fa-f\-]{36}/;
-
-//RFC 4122
-const handler:URISchemeHandler<UUIDComponents, URIOptions, URNComponents> = {
- scheme : "urn:uuid",
-
- parse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {
- const uuidComponents = urnComponents as UUIDComponents;
- uuidComponents.uuid = uuidComponents.nss;
- uuidComponents.nss = undefined;
-
- if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {
- uuidComponents.error = uuidComponents.error || "UUID is not valid.";
- }
-
- return uuidComponents;
- },
-
- serialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {
- const urnComponents = uuidComponents as URNComponents;
- //normalize UUID
- urnComponents.nss = (uuidComponents.uuid || "").toLowerCase();
- return urnComponents;
- },
-};
-
-export default handler; \ No newline at end of file
diff --git a/assets/node_modules/uri-js/src/schemes/urn.ts b/assets/node_modules/uri-js/src/schemes/urn.ts
deleted file mode 100644
index 590f9cc..0000000
--- a/assets/node_modules/uri-js/src/schemes/urn.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-import { URISchemeHandler, URIComponents, URIOptions } from "../uri";
-import { pctEncChar, SCHEMES } from "../uri";
-
-export interface URNComponents extends URIComponents {
- nid?:string;
- nss?:string;
-}
-
-export interface URNOptions extends URIOptions {
- nid?:string;
-}
-
-const NID$ = "(?:[0-9A-Za-z][0-9A-Za-z\\-]{1,31})";
-const PCT_ENCODED$ = "(?:\\%[0-9A-Fa-f]{2})";
-const TRANS$$ = "[0-9A-Za-z\\(\\)\\+\\,\\-\\.\\:\\=\\@\\;\\$\\_\\!\\*\\'\\/\\?\\#]";
-const NSS$ = "(?:(?:" + PCT_ENCODED$ + "|" + TRANS$$ + ")+)";
-const URN_SCHEME = new RegExp("^urn\\:(" + NID$ + ")$");
-const URN_PATH = new RegExp("^(" + NID$ + ")\\:(" + NSS$ + ")$");
-const URN_PARSE = /^([^\:]+)\:(.*)/;
-const URN_EXCLUDED = /[\x00-\x20\\\"\&\<\>\[\]\^\`\{\|\}\~\x7F-\xFF]/g;
-
-//RFC 2141
-const handler:URISchemeHandler<URNComponents,URNOptions> = {
- scheme : "urn",
-
- parse : function (components:URIComponents, options:URNOptions):URNComponents {
- const matches = components.path && components.path.match(URN_PARSE);
- let urnComponents = components as URNComponents;
-
- if (matches) {
- const scheme = options.scheme || urnComponents.scheme || "urn";
- const nid = matches[1].toLowerCase();
- const nss = matches[2];
- const urnScheme = `${scheme}:${options.nid || nid}`;
- const schemeHandler = SCHEMES[urnScheme];
-
- urnComponents.nid = nid;
- urnComponents.nss = nss;
- urnComponents.path = undefined;
-
- if (schemeHandler) {
- urnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;
- }
- } else {
- urnComponents.error = urnComponents.error || "URN can not be parsed.";
- }
-
- return urnComponents;
- },
-
- serialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {
- const scheme = options.scheme || urnComponents.scheme || "urn";
- const nid = urnComponents.nid;
- const urnScheme = `${scheme}:${options.nid || nid}`;
- const schemeHandler = SCHEMES[urnScheme];
-
- if (schemeHandler) {
- urnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;
- }
-
- const uriComponents = urnComponents as URIComponents;
- const nss = urnComponents.nss;
- uriComponents.path = `${nid || options.nid}:${nss}`;
-
- return uriComponents;
- },
-};
-
-export default handler; \ No newline at end of file
diff --git a/assets/node_modules/uri-js/src/uri.ts b/assets/node_modules/uri-js/src/uri.ts
deleted file mode 100644
index c282c37..0000000
--- a/assets/node_modules/uri-js/src/uri.ts
+++ /dev/null
@@ -1,556 +0,0 @@
-/**
- * URI.js
- *
- * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.
- * @author <a href="mailto:gary.court@gmail.com">Gary Court</a>
- * @see http://github.com/garycourt/uri-js
- */
-
-/**
- * Copyright 2011 Gary Court. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. 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 GARY COURT ``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 GARY COURT 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.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of Gary Court.
- */
-
-import URI_PROTOCOL from "./regexps-uri";
-import IRI_PROTOCOL from "./regexps-iri";
-import punycode from "punycode";
-import { toUpperCase, typeOf, assign } from "./util";
-
-export interface URIComponents {
- scheme?:string;
- userinfo?:string;
- host?:string;
- port?:number|string;
- path?:string;
- query?:string;
- fragment?:string;
- reference?:string;
- error?:string;
-}
-
-export interface URIOptions {
- scheme?:string;
- reference?:string;
- tolerant?:boolean;
- absolutePath?:boolean;
- iri?:boolean;
- unicodeSupport?:boolean;
- domainHost?:boolean;
-}
-
-export interface URISchemeHandler<Components extends URIComponents = URIComponents, Options extends URIOptions = URIOptions, ParentComponents extends URIComponents = URIComponents> {
- scheme:string;
- parse(components:ParentComponents, options:Options):Components;
- serialize(components:Components, options:Options):ParentComponents;
- unicodeSupport?:boolean;
- domainHost?:boolean;
- absolutePath?:boolean;
-}
-
-export interface URIRegExps {
- NOT_SCHEME : RegExp,
- NOT_USERINFO : RegExp,
- NOT_HOST : RegExp,
- NOT_PATH : RegExp,
- NOT_PATH_NOSCHEME : RegExp,
- NOT_QUERY : RegExp,
- NOT_FRAGMENT : RegExp,
- ESCAPE : RegExp,
- UNRESERVED : RegExp,
- OTHER_CHARS : RegExp,
- PCT_ENCODED : RegExp,
- IPV4ADDRESS : RegExp,
- IPV6ADDRESS : RegExp,
-}
-
-export const SCHEMES:{[scheme:string]:URISchemeHandler} = {};
-
-export function pctEncChar(chr:string):string {
- const c = chr.charCodeAt(0);
- let e:string;
-
- if (c < 16) e = "%0" + c.toString(16).toUpperCase();
- else if (c < 128) e = "%" + c.toString(16).toUpperCase();
- else if (c < 2048) e = "%" + ((c >> 6) | 192).toString(16).toUpperCase() + "%" + ((c & 63) | 128).toString(16).toUpperCase();
- else e = "%" + ((c >> 12) | 224).toString(16).toUpperCase() + "%" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + "%" + ((c & 63) | 128).toString(16).toUpperCase();
-
- return e;
-}
-
-export function pctDecChars(str:string):string {
- let newStr = "";
- let i = 0;
- const il = str.length;
-
- while (i < il) {
- const c = parseInt(str.substr(i + 1, 2), 16);
-
- if (c < 128) {
- newStr += String.fromCharCode(c);
- i += 3;
- }
- else if (c >= 194 && c < 224) {
- if ((il - i) >= 6) {
- const c2 = parseInt(str.substr(i + 4, 2), 16);
- newStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
- } else {
- newStr += str.substr(i, 6);
- }
- i += 6;
- }
- else if (c >= 224) {
- if ((il - i) >= 9) {
- const c2 = parseInt(str.substr(i + 4, 2), 16);
- const c3 = parseInt(str.substr(i + 7, 2), 16);
- newStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
- } else {
- newStr += str.substr(i, 9);
- }
- i += 9;
- }
- else {
- newStr += str.substr(i, 3);
- i += 3;
- }
- }
-
- return newStr;
-}
-
-function _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {
- function decodeUnreserved(str:string):string {
- const decStr = pctDecChars(str);
- return (!decStr.match(protocol.UNRESERVED) ? str : decStr);
- }
-
- if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, "");
- if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
- if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);
-
- return components;
-};
-
-function _stripLeadingZeros(str:string):string {
- return str.replace(/^0*(.*)/, "$1") || "0";
-}
-
-function _normalizeIPv4(host:string, protocol:URIRegExps):string {
- const matches = host.match(protocol.IPV4ADDRESS) || [];
- const [, address] = matches;
-
- if (address) {
- return address.split(".").map(_stripLeadingZeros).join(".");
- } else {
- return host;
- }
-}
-
-function _normalizeIPv6(host:string, protocol:URIRegExps):string {
- const matches = host.match(protocol.IPV6ADDRESS) || [];
- const [, address, zone] = matches;
-
- if (address) {
- const [last, first] = address.toLowerCase().split('::').reverse();
- const firstFields = first ? first.split(":").map(_stripLeadingZeros) : [];
- const lastFields = last.split(":").map(_stripLeadingZeros);
- const isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);
- const fieldCount = isLastFieldIPv4Address ? 7 : 8;
- const lastFieldsStart = lastFields.length - fieldCount;
- const fields = Array<string>(fieldCount);
-
- for (let x = 0; x < fieldCount; ++x) {
- fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';
- }
-
- if (isLastFieldIPv4Address) {
- fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);
- }
-
- const allZeroFields = fields.reduce<Array<{index:number,length:number}>>((acc, field, index) => {
- if (!field || field === "0") {
- const lastLongest = acc[acc.length - 1];
- if (lastLongest && lastLongest.index + lastLongest.length === index) {
- lastLongest.length++;
- } else {
- acc.push({ index, length : 1 });
- }
- }
- return acc;
- }, []);
-
- const longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];
-
- let newHost:string;
- if (longestZeroFields && longestZeroFields.length > 1) {
- const newFirst = fields.slice(0, longestZeroFields.index) ;
- const newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);
- newHost = newFirst.join(":") + "::" + newLast.join(":");
- } else {
- newHost = fields.join(":");
- }
-
- if (zone) {
- newHost += "%" + zone;
- }
-
- return newHost;
- } else {
- return host;
- }
-}
-
-const URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i;
-const NO_MATCH_IS_UNDEFINED = (<RegExpMatchArray>("").match(/(){0}/))[1] === undefined;
-
-export function parse(uriString:string, options:URIOptions = {}):URIComponents {
- const components:URIComponents = {};
- const protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);
-
- if (options.reference === "suffix") uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString;
-
- const matches = uriString.match(URI_PARSE);
-
- if (matches) {
- if (NO_MATCH_IS_UNDEFINED) {
- //store each component
- components.scheme = matches[1];
- components.userinfo = matches[3];
- components.host = matches[4];
- components.port = parseInt(matches[5], 10);
- components.path = matches[6] || "";
- components.query = matches[7];
- components.fragment = matches[8];
-
- //fix port number
- if (isNaN(components.port)) {
- components.port = matches[5];
- }
- } else { //IE FIX for improper RegExp matching
- //store each component
- components.scheme = matches[1] || undefined;
- components.userinfo = (uriString.indexOf("@") !== -1 ? matches[3] : undefined);
- components.host = (uriString.indexOf("//") !== -1 ? matches[4] : undefined);
- components.port = parseInt(matches[5], 10);
- components.path = matches[6] || "";
- components.query = (uriString.indexOf("?") !== -1 ? matches[7] : undefined);
- components.fragment = (uriString.indexOf("#") !== -1 ? matches[8] : undefined);
-
- //fix port number
- if (isNaN(components.port)) {
- components.port = (uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : undefined);
- }
- }
-
- if (components.host) {
- //normalize IP hosts
- components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);
- }
-
- //determine reference type
- if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {
- components.reference = "same-document";
- } else if (components.scheme === undefined) {
- components.reference = "relative";
- } else if (components.fragment === undefined) {
- components.reference = "absolute";
- } else {
- components.reference = "uri";
- }
-
- //check for reference errors
- if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) {
- components.error = components.error || "URI is not a " + options.reference + " reference.";
- }
-
- //find scheme handler
- const schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()];
-
- //check if scheme can't handle IRIs
- if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {
- //if host component is a domain name
- if (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {
- //convert Unicode IDN -> ASCII IDN
- try {
- components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());
- } catch (e) {
- components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e;
- }
- }
- //convert IRI -> URI
- _normalizeComponentEncoding(components, URI_PROTOCOL);
- } else {
- //normalize encodings
- _normalizeComponentEncoding(components, protocol);
- }
-
- //perform scheme specific parsing
- if (schemeHandler && schemeHandler.parse) {
- schemeHandler.parse(components, options);
- }
- } else {
- components.error = components.error || "URI can not be parsed.";
- }
-
- return components;
-};
-
-function _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {
- const protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);
- const uriTokens:Array<string> = [];
-
- if (components.userinfo !== undefined) {
- uriTokens.push(components.userinfo);
- uriTokens.push("@");
- }
-
- if (components.host !== undefined) {
- //normalize IP hosts, add brackets and escape zone separator for IPv6
- uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => "[" + $1 + ($2 ? "%25" + $2 : "") + "]"));
- }
-
- if (typeof components.port === "number") {
- uriTokens.push(":");
- uriTokens.push(components.port.toString(10));
- }
-
- return uriTokens.length ? uriTokens.join("") : undefined;
-};
-
-const RDS1 = /^\.\.?\//;
-const RDS2 = /^\/\.(\/|$)/;
-const RDS3 = /^\/\.\.(\/|$)/;
-const RDS4 = /^\.\.?$/;
-const RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/;
-
-export function removeDotSegments(input:string):string {
- const output:Array<string> = [];
-
- while (input.length) {
- if (input.match(RDS1)) {
- input = input.replace(RDS1, "");
- } else if (input.match(RDS2)) {
- input = input.replace(RDS2, "/");
- } else if (input.match(RDS3)) {
- input = input.replace(RDS3, "/");
- output.pop();
- } else if (input === "." || input === "..") {
- input = "";
- } else {
- const im = input.match(RDS5);
- if (im) {
- const s = im[0];
- input = input.slice(s.length);
- output.push(s);
- } else {
- throw new Error("Unexpected dot segment condition");
- }
- }
- }
-
- return output.join("");
-};
-
-export function serialize(components:URIComponents, options:URIOptions = {}):string {
- const protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);
- const uriTokens:Array<string> = [];
-
- //find scheme handler
- const schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()];
-
- //perform scheme specific serialization
- if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);
-
- if (components.host) {
- //if host component is an IPv6 address
- if (protocol.IPV6ADDRESS.test(components.host)) {
- //TODO: normalize IPv6 address as per RFC 5952
- }
-
- //if host component is a domain name
- else if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {
- //convert IDN via punycode
- try {
- components.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));
- } catch (e) {
- components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e;
- }
- }
- }
-
- //normalize encoding
- _normalizeComponentEncoding(components, protocol);
-
- if (options.reference !== "suffix" && components.scheme) {
- uriTokens.push(components.scheme);
- uriTokens.push(":");
- }
-
- const authority = _recomposeAuthority(components, options);
- if (authority !== undefined) {
- if (options.reference !== "suffix") {
- uriTokens.push("//");
- }
-
- uriTokens.push(authority);
-
- if (components.path && components.path.charAt(0) !== "/") {
- uriTokens.push("/");
- }
- }
-
- if (components.path !== undefined) {
- let s = components.path;
-
- if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {
- s = removeDotSegments(s);
- }
-
- if (authority === undefined) {
- s = s.replace(/^\/\//, "/%2F"); //don't allow the path to start with "//"
- }
-
- uriTokens.push(s);
- }
-
- if (components.query !== undefined) {
- uriTokens.push("?");
- uriTokens.push(components.query);
- }
-
- if (components.fragment !== undefined) {
- uriTokens.push("#");
- uriTokens.push(components.fragment);
- }
-
- return uriTokens.join(""); //merge tokens into a string
-};
-
-export function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {
- const target:URIComponents = {};
-
- if (!skipNormalization) {
- base = parse(serialize(base, options), options); //normalize base components
- relative = parse(serialize(relative, options), options); //normalize relative components
- }
- options = options || {};
-
- if (!options.tolerant && relative.scheme) {
- target.scheme = relative.scheme;
- //target.authority = relative.authority;
- target.userinfo = relative.userinfo;
- target.host = relative.host;
- target.port = relative.port;
- target.path = removeDotSegments(relative.path || "");
- target.query = relative.query;
- } else {
- if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {
- //target.authority = relative.authority;
- target.userinfo = relative.userinfo;
- target.host = relative.host;
- target.port = relative.port;
- target.path = removeDotSegments(relative.path || "");
- target.query = relative.query;
- } else {
- if (!relative.path) {
- target.path = base.path;
- if (relative.query !== undefined) {
- target.query = relative.query;
- } else {
- target.query = base.query;
- }
- } else {
- if (relative.path.charAt(0) === "/") {
- target.path = removeDotSegments(relative.path);
- } else {
- if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {
- target.path = "/" + relative.path;
- } else if (!base.path) {
- target.path = relative.path;
- } else {
- target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path;
- }
- target.path = removeDotSegments(target.path);
- }
- target.query = relative.query;
- }
- //target.authority = base.authority;
- target.userinfo = base.userinfo;
- target.host = base.host;
- target.port = base.port;
- }
- target.scheme = base.scheme;
- }
-
- target.fragment = relative.fragment;
-
- return target;
-};
-
-export function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {
- const schemelessOptions = assign({ scheme : 'null' }, options);
- return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);
-};
-
-export function normalize(uri:string, options?:URIOptions):string;
-export function normalize(uri:URIComponents, options?:URIOptions):URIComponents;
-export function normalize(uri:any, options?:URIOptions):any {
- if (typeof uri === "string") {
- uri = serialize(parse(uri, options), options);
- } else if (typeOf(uri) === "object") {
- uri = parse(serialize(<URIComponents>uri, options), options);
- }
-
- return uri;
-};
-
-export function equal(uriA:string, uriB:string, options?: URIOptions):boolean;
-export function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;
-export function equal(uriA:any, uriB:any, options?:URIOptions):boolean {
- if (typeof uriA === "string") {
- uriA = serialize(parse(uriA, options), options);
- } else if (typeOf(uriA) === "object") {
- uriA = serialize(<URIComponents>uriA, options);
- }
-
- if (typeof uriB === "string") {
- uriB = serialize(parse(uriB, options), options);
- } else if (typeOf(uriB) === "object") {
- uriB = serialize(<URIComponents>uriB, options);
- }
-
- return uriA === uriB;
-};
-
-export function escapeComponent(str:string, options?:URIOptions):string {
- return str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);
-};
-
-export function unescapeComponent(str:string, options?:URIOptions):string {
- return str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);
-};
diff --git a/assets/node_modules/uri-js/src/util.ts b/assets/node_modules/uri-js/src/util.ts
deleted file mode 100644
index 29c6d5d..0000000
--- a/assets/node_modules/uri-js/src/util.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-export function merge(...sets:Array<string>):string {
- if (sets.length > 1) {
- sets[0] = sets[0].slice(0, -1);
- const xl = sets.length - 1;
- for (let x = 1; x < xl; ++x) {
- sets[x] = sets[x].slice(1, -1);
- }
- sets[xl] = sets[xl].slice(1);
- return sets.join('');
- } else {
- return sets[0];
- }
-}
-
-export function subexp(str:string):string {
- return "(?:" + str + ")";
-}
-
-export function typeOf(o:any):string {
- return o === undefined ? "undefined" : (o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase());
-}
-
-export function toUpperCase(str:string):string {
- return str.toUpperCase();
-}
-
-export function toArray(obj:any):Array<any> {
- return obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== "number" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];
-}
-
-
-export function assign(target: object, source: any): any {
- const obj = target as any;
- if (source) {
- for (const key in source) {
- obj[key] = source[key];
- }
- }
- return obj;
-} \ No newline at end of file
diff --git a/assets/node_modules/uri-js/tests/qunit.css b/assets/node_modules/uri-js/tests/qunit.css
deleted file mode 100644
index a2e183d..0000000
--- a/assets/node_modules/uri-js/tests/qunit.css
+++ /dev/null
@@ -1,118 +0,0 @@
-ol#qunit-tests {
- font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
- margin:0;
- padding:0;
- list-style-position:inside;
-
- font-size: smaller;
-}
-ol#qunit-tests li{
- padding:0.4em 0.5em 0.4em 2.5em;
- border-bottom:1px solid #fff;
- font-size:small;
- list-style-position:inside;
-}
-ol#qunit-tests li ol{
- box-shadow: inset 0px 2px 13px #999;
- -moz-box-shadow: inset 0px 2px 13px #999;
- -webkit-box-shadow: inset 0px 2px 13px #999;
- margin-top:0.5em;
- margin-left:0;
- padding:0.5em;
- background-color:#fff;
- border-radius:15px;
- -moz-border-radius: 15px;
- -webkit-border-radius: 15px;
-}
-ol#qunit-tests li li{
- border-bottom:none;
- margin:0.5em;
- background-color:#fff;
- list-style-position: inside;
- padding:0.4em 0.5em 0.4em 0.5em;
-}
-
-ol#qunit-tests li li.pass{
- border-left:26px solid #C6E746;
- background-color:#fff;
- color:#5E740B;
- }
-ol#qunit-tests li li.fail{
- border-left:26px solid #EE5757;
- background-color:#fff;
- color:#710909;
-}
-ol#qunit-tests li.pass{
- background-color:#D2E0E6;
- color:#528CE0;
-}
-ol#qunit-tests li.fail{
- background-color:#EE5757;
- color:#000;
-}
-ol#qunit-tests li strong {
- cursor:pointer;
-}
-h1#qunit-header{
- background-color:#0d3349;
- margin:0;
- padding:0.5em 0 0.5em 1em;
- color:#fff;
- font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
- border-top-right-radius:15px;
- border-top-left-radius:15px;
- -moz-border-radius-topright:15px;
- -moz-border-radius-topleft:15px;
- -webkit-border-top-right-radius:15px;
- -webkit-border-top-left-radius:15px;
- text-shadow: rgba(0, 0, 0, 0.5) 4px 4px 1px;
-}
-h2#qunit-banner{
- font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
- height:5px;
- margin:0;
- padding:0;
-}
-h2#qunit-banner.qunit-pass{
- background-color:#C6E746;
-}
-h2#qunit-banner.qunit-fail, #qunit-testrunner-toolbar {
- background-color:#EE5757;
-}
-#qunit-testrunner-toolbar {
- font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
- padding:0;
- /*width:80%;*/
- padding:0em 0 0.5em 2em;
- font-size: small;
-}
-h2#qunit-userAgent {
- font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
- background-color:#2b81af;
- margin:0;
- padding:0;
- color:#fff;
- font-size: small;
- padding:0.5em 0 0.5em 2.5em;
- text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
-}
-p#qunit-testresult{
- font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
- margin:0;
- font-size: small;
- color:#2b81af;
- border-bottom-right-radius:15px;
- border-bottom-left-radius:15px;
- -moz-border-radius-bottomright:15px;
- -moz-border-radius-bottomleft:15px;
- -webkit-border-bottom-right-radius:15px;
- -webkit-border-bottom-left-radius:15px;
- background-color:#D2E0E6;
- padding:0.5em 0.5em 0.5em 2.5em;
-}
-strong b.fail{
- color:#710909;
- }
-strong b.pass{
- color:#5E740B;
- } \ No newline at end of file
diff --git a/assets/node_modules/uri-js/tests/qunit.js b/assets/node_modules/uri-js/tests/qunit.js
deleted file mode 100644
index e449fdf..0000000
--- a/assets/node_modules/uri-js/tests/qunit.js
+++ /dev/null
@@ -1,1042 +0,0 @@
-/*
- * QUnit - A JavaScript Unit Testing Framework
- *
- * http://docs.jquery.com/QUnit
- *
- * Copyright (c) 2009 John Resig, Jörn Zaefferer
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- */
-
-(function(window) {
-
-var QUnit = {
-
- // Initialize the configuration options
- init: function() {
- config = {
- stats: { all: 0, bad: 0 },
- moduleStats: { all: 0, bad: 0 },
- started: +new Date,
- blocking: false,
- autorun: false,
- assertions: [],
- filters: [],
- queue: []
- };
-
- var tests = id("qunit-tests"),
- banner = id("qunit-banner"),
- result = id("qunit-testresult");
-
- if ( tests ) {
- tests.innerHTML = "";
- }
-
- if ( banner ) {
- banner.className = "";
- }
-
- if ( result ) {
- result.parentNode.removeChild( result );
- }
- },
-
- // call on start of module test to prepend name to all tests
- module: function(name, testEnvironment) {
- config.currentModule = name;
-
- synchronize(function() {
- if ( config.currentModule ) {
- QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all );
- }
-
- config.currentModule = name;
- config.moduleTestEnvironment = testEnvironment;
- config.moduleStats = { all: 0, bad: 0 };
-
- QUnit.moduleStart( name, testEnvironment );
- });
- },
-
- asyncTest: function(testName, expected, callback) {
- if ( arguments.length === 2 ) {
- callback = expected;
- expected = 0;
- }
-
- QUnit.test(testName, expected, callback, true);
- },
-
- test: function(testName, expected, callback, async) {
- var name = testName, testEnvironment, testEnvironmentArg;
-
- if ( arguments.length === 2 ) {
- callback = expected;
- expected = null;
- }
- // is 2nd argument a testEnvironment?
- if ( expected && typeof expected === 'object') {
- testEnvironmentArg = expected;
- expected = null;
- }
-
- if ( config.currentModule ) {
- name = config.currentModule + " module: " + name;
- }
-
- if ( !validTest(name) ) {
- return;
- }
-
- synchronize(function() {
- QUnit.testStart( testName );
-
- testEnvironment = extend({
- setup: function() {},
- teardown: function() {}
- }, config.moduleTestEnvironment);
- if (testEnvironmentArg) {
- extend(testEnvironment,testEnvironmentArg);
- }
-
- // allow utility functions to access the current test environment
- QUnit.current_testEnvironment = testEnvironment;
-
- config.assertions = [];
- config.expected = expected;
-
- try {
- if ( !config.pollution ) {
- saveGlobal();
- }
-
- testEnvironment.setup.call(testEnvironment);
- } catch(e) {
- QUnit.ok( false, "Setup failed on " + name + ": " + e.message );
- }
-
- if ( async ) {
- QUnit.stop();
- }
-
- try {
- callback.call(testEnvironment);
- } catch(e) {
- fail("Test " + name + " died, exception and test follows", e, callback);
- QUnit.ok( false, "Died on test #" + (config.assertions.length + 1) + ": " + e.message );
- // else next test will carry the responsibility
- saveGlobal();
-
- // Restart the tests if they're blocking
- if ( config.blocking ) {
- start();
- }
- }
- });
-
- synchronize(function() {
- try {
- checkPollution();
- testEnvironment.teardown.call(testEnvironment);
- } catch(e) {
- QUnit.ok( false, "Teardown failed on " + name + ": " + e.message );
- }
-
- try {
- QUnit.reset();
- } catch(e) {
- fail("reset() failed, following Test " + name + ", exception and reset fn follows", e, reset);
- }
-
- if ( config.expected && config.expected != config.assertions.length ) {
- QUnit.ok( false, "Expected " + config.expected + " assertions, but " + config.assertions.length + " were run" );
- }
-
- var good = 0, bad = 0,
- tests = id("qunit-tests");
-
- config.stats.all += config.assertions.length;
- config.moduleStats.all += config.assertions.length;
-
- if ( tests ) {
- var ol = document.createElement("ol");
- ol.style.display = "none";
-
- for ( var i = 0; i < config.assertions.length; i++ ) {
- var assertion = config.assertions[i];
-
- var li = document.createElement("li");
- li.className = assertion.result ? "pass" : "fail";
- li.appendChild(document.createTextNode(assertion.message || "(no message)"));
- ol.appendChild( li );
-
- if ( assertion.result ) {
- good++;
- } else {
- bad++;
- config.stats.bad++;
- config.moduleStats.bad++;
- }
- }
-
- var b = document.createElement("strong");
- b.innerHTML = name + " <b style='color:black;'>(<b class='fail'>" + bad + "</b>, <b class='pass'>" + good + "</b>, " + config.assertions.length + ")</b>";
-
- addEvent(b, "click", function() {
- var next = b.nextSibling, display = next.style.display;
- next.style.display = display === "none" ? "block" : "none";
- });
-
- addEvent(b, "dblclick", function(e) {
- var target = e && e.target ? e.target : window.event.srcElement;
- if ( target.nodeName.toLowerCase() === "strong" ) {
- var text = "", node = target.firstChild;
-
- while ( node.nodeType === 3 ) {
- text += node.nodeValue;
- node = node.nextSibling;
- }
-
- text = text.replace(/(^\s*|\s*$)/g, "");
-
- if ( window.location ) {
- window.location.href = window.location.href.match(/^(.+?)(\?.*)?$/)[1] + "?" + encodeURIComponent(text);
- }
- }
- });
-
- var li = document.createElement("li");
- li.className = bad ? "fail" : "pass";
- li.appendChild( b );
- li.appendChild( ol );
- tests.appendChild( li );
-
- if ( bad ) {
- var toolbar = id("qunit-testrunner-toolbar");
- if ( toolbar ) {
- toolbar.style.display = "block";
- id("qunit-filter-pass").disabled = null;
- id("qunit-filter-missing").disabled = null;
- }
- }
-
- } else {
- for ( var i = 0; i < config.assertions.length; i++ ) {
- if ( !config.assertions[i].result ) {
- bad++;
- config.stats.bad++;
- config.moduleStats.bad++;
- }
- }
- }
-
- QUnit.testDone( testName, bad, config.assertions.length );
-
- if ( !window.setTimeout && !config.queue.length ) {
- done();
- }
- });
-
- if ( window.setTimeout && !config.doneTimer ) {
- config.doneTimer = window.setTimeout(function(){
- if ( !config.queue.length ) {
- done();
- } else {
- synchronize( done );
- }
- }, 13);
- }
- },
-
- /**
- * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
- */
- expect: function(asserts) {
- config.expected = asserts;
- },
-
- /**
- * Asserts true.
- * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
- */
- ok: function(a, msg) {
- QUnit.log(a, msg);
-
- config.assertions.push({
- result: !!a,
- message: msg
- });
- },
-
- /**
- * Checks that the first two arguments are equal, with an optional message.
- * Prints out both actual and expected values.
- *
- * Prefered to ok( actual == expected, message )
- *
- * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." );
- *
- * @param Object actual
- * @param Object expected
- * @param String message (optional)
- */
- equal: function(actual, expected, message) {
- push(expected == actual, actual, expected, message);
- },
-
- notEqual: function(actual, expected, message) {
- push(expected != actual, actual, expected, message);
- },
-
- deepEqual: function(a, b, message) {
- push(QUnit.equiv(a, b), a, b, message);
- },
-
- notDeepEqual: function(a, b, message) {
- push(!QUnit.equiv(a, b), a, b, message);
- },
-
- strictEqual: function(actual, expected, message) {
- push(expected === actual, actual, expected, message);
- },
-
- notStrictEqual: function(actual, expected, message) {
- push(expected !== actual, actual, expected, message);
- },
-
- start: function() {
- // A slight delay, to avoid any current callbacks
- if ( window.setTimeout ) {
- window.setTimeout(function() {
- if ( config.timeout ) {
- clearTimeout(config.timeout);
- }
-
- config.blocking = false;
- process();
- }, 13);
- } else {
- config.blocking = false;
- process();
- }
- },
-
- stop: function(timeout) {
- config.blocking = true;
-
- if ( timeout && window.setTimeout ) {
- config.timeout = window.setTimeout(function() {
- QUnit.ok( false, "Test timed out" );
- QUnit.start();
- }, timeout);
- }
- },
-
- /**
- * Resets the test setup. Useful for tests that modify the DOM.
- */
- reset: function() {
- if ( window.jQuery ) {
- jQuery("#main").html( config.fixture );
- jQuery.event.global = {};
- jQuery.ajaxSettings = extend({}, config.ajaxSettings);
- }
- },
-
- /**
- * Trigger an event on an element.
- *
- * @example triggerEvent( document.body, "click" );
- *
- * @param DOMElement elem
- * @param String type
- */
- triggerEvent: function( elem, type, event ) {
- if ( document.createEvent ) {
- event = document.createEvent("MouseEvents");
- event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
- 0, 0, 0, 0, 0, false, false, false, false, 0, null);
- elem.dispatchEvent( event );
-
- } else if ( elem.fireEvent ) {
- elem.fireEvent("on"+type);
- }
- },
-
- // Safe object type checking
- is: function( type, obj ) {
- return Object.prototype.toString.call( obj ) === "[object "+ type +"]";
- },
-
- // Logging callbacks
- done: function(failures, total) {},
- log: function(result, message) {},
- testStart: function(name) {},
- testDone: function(name, failures, total) {},
- moduleStart: function(name, testEnvironment) {},
- moduleDone: function(name, failures, total) {}
-};
-
-// Backwards compatibility, deprecated
-QUnit.equals = QUnit.equal;
-QUnit.same = QUnit.deepEqual;
-
-// Maintain internal state
-var config = {
- // The queue of tests to run
- queue: [],
-
- // block until document ready
- blocking: true
-};
-
-// Load paramaters
-(function() {
- var location = window.location || { search: "", protocol: "file:" },
- GETParams = location.search.slice(1).split('&');
-
- for ( var i = 0; i < GETParams.length; i++ ) {
- GETParams[i] = decodeURIComponent( GETParams[i] );
- if ( GETParams[i] === "noglobals" ) {
- GETParams.splice( i, 1 );
- i--;
- config.noglobals = true;
- } else if ( GETParams[i].search('=') > -1 ) {
- GETParams.splice( i, 1 );
- i--;
- }
- }
-
- // restrict modules/tests by get parameters
- config.filters = GETParams;
-
- // Figure out if we're running the tests from a server or not
- QUnit.isLocal = !!(location.protocol === 'file:');
-})();
-
-// Expose the API as global variables, unless an 'exports'
-// object exists, in that case we assume we're in CommonJS
-if ( typeof exports === "undefined" || typeof require === "undefined" ) {
- extend(window, QUnit);
- window.QUnit = QUnit;
-} else {
- extend(exports, QUnit);
- exports.QUnit = QUnit;
-}
-
-if ( typeof document === "undefined" || document.readyState === "complete" ) {
- config.autorun = true;
-}
-
-addEvent(window, "load", function() {
- // Initialize the config, saving the execution queue
- var oldconfig = extend({}, config);
- QUnit.init();
- extend(config, oldconfig);
-
- config.blocking = false;
-
- var userAgent = id("qunit-userAgent");
- if ( userAgent ) {
- userAgent.innerHTML = navigator.userAgent;
- }
-
- var toolbar = id("qunit-testrunner-toolbar");
- if ( toolbar ) {
- toolbar.style.display = "none";
-
- var filter = document.createElement("input");
- filter.type = "checkbox";
- filter.id = "qunit-filter-pass";
- filter.disabled = true;
- addEvent( filter, "click", function() {
- var li = document.getElementsByTagName("li");
- for ( var i = 0; i < li.length; i++ ) {
- if ( li[i].className.indexOf("pass") > -1 ) {
- li[i].style.display = filter.checked ? "none" : "";
- }
- }
- });
- toolbar.appendChild( filter );
-
- var label = document.createElement("label");
- label.setAttribute("for", "qunit-filter-pass");
- label.innerHTML = "Hide passed tests";
- toolbar.appendChild( label );
-
- var missing = document.createElement("input");
- missing.type = "checkbox";
- missing.id = "qunit-filter-missing";
- missing.disabled = true;
- addEvent( missing, "click", function() {
- var li = document.getElementsByTagName("li");
- for ( var i = 0; i < li.length; i++ ) {
- if ( li[i].className.indexOf("fail") > -1 && li[i].innerHTML.indexOf('missing test - untested code is broken code') > - 1 ) {
- li[i].parentNode.parentNode.style.display = missing.checked ? "none" : "block";
- }
- }
- });
- toolbar.appendChild( missing );
-
- label = document.createElement("label");
- label.setAttribute("for", "qunit-filter-missing");
- label.innerHTML = "Hide missing tests (untested code is broken code)";
- toolbar.appendChild( label );
- }
-
- var main = id('main');
- if ( main ) {
- config.fixture = main.innerHTML;
- }
-
- if ( window.jQuery ) {
- config.ajaxSettings = window.jQuery.ajaxSettings;
- }
-
- QUnit.start();
-});
-
-function done() {
- if ( config.doneTimer && window.clearTimeout ) {
- window.clearTimeout( config.doneTimer );
- config.doneTimer = null;
- }
-
- if ( config.queue.length ) {
- config.doneTimer = window.setTimeout(function(){
- if ( !config.queue.length ) {
- done();
- } else {
- synchronize( done );
- }
- }, 13);
-
- return;
- }
-
- config.autorun = true;
-
- // Log the last module results
- if ( config.currentModule ) {
- QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all );
- }
-
- var banner = id("qunit-banner"),
- tests = id("qunit-tests"),
- html = ['Tests completed in ',
- +new Date - config.started, ' milliseconds.<br/>',
- '<span class="passed">', config.stats.all - config.stats.bad, '</span> tests of <span class="total">', config.stats.all, '</span> passed, <span class="failed">', config.stats.bad,'</span> failed.'].join('');
-
- if ( banner ) {
- banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass");
- }
-
- if ( tests ) {
- var result = id("qunit-testresult");
-
- if ( !result ) {
- result = document.createElement("p");
- result.id = "qunit-testresult";
- result.className = "result";
- tests.parentNode.insertBefore( result, tests.nextSibling );
- }
-
- result.innerHTML = html;
- }
-
- QUnit.done( config.stats.bad, config.stats.all );
-}
-
-function validTest( name ) {
- var i = config.filters.length,
- run = false;
-
- if ( !i ) {
- return true;
- }
-
- while ( i-- ) {
- var filter = config.filters[i],
- not = filter.charAt(0) == '!';
-
- if ( not ) {
- filter = filter.slice(1);
- }
-
- if ( name.indexOf(filter) !== -1 ) {
- return !not;
- }
-
- if ( not ) {
- run = true;
- }
- }
-
- return run;
-}
-
-function push(result, actual, expected, message) {
- message = message || (result ? "okay" : "failed");
- QUnit.ok( result, result ? message + ": " + expected : message + ", expected: " + QUnit.jsDump.parse(expected) + " result: " + QUnit.jsDump.parse(actual) );
-}
-
-function synchronize( callback ) {
- config.queue.push( callback );
-
- if ( config.autorun && !config.blocking ) {
- process();
- }
-}
-
-function process() {
- while ( config.queue.length && !config.blocking ) {
- config.queue.shift()();
- }
-}
-
-function saveGlobal() {
- config.pollution = [];
-
- if ( config.noglobals ) {
- for ( var key in window ) {
- config.pollution.push( key );
- }
- }
-}
-
-function checkPollution( name ) {
- var old = config.pollution;
- saveGlobal();
-
- var newGlobals = diff( old, config.pollution );
- if ( newGlobals.length > 0 ) {
- ok( false, "Introduced global variable(s): " + newGlobals.join(", ") );
- config.expected++;
- }
-
- var deletedGlobals = diff( config.pollution, old );
- if ( deletedGlobals.length > 0 ) {
- ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") );
- config.expected++;
- }
-}
-
-// returns a new Array with the elements that are in a but not in b
-function diff( a, b ) {
- var result = a.slice();
- for ( var i = 0; i < result.length; i++ ) {
- for ( var j = 0; j < b.length; j++ ) {
- if ( result[i] === b[j] ) {
- result.splice(i, 1);
- i--;
- break;
- }
- }
- }
- return result;
-}
-
-function fail(message, exception, callback) {
- if ( typeof console !== "undefined" && console.error && console.warn ) {
- console.error(message);
- console.error(exception);
- console.warn(callback.toString());
-
- } else if ( window.opera && opera.postError ) {
- opera.postError(message, exception, callback.toString);
- }
-}
-
-function extend(a, b) {
- for ( var prop in b ) {
- a[prop] = b[prop];
- }
-
- return a;
-}
-
-function addEvent(elem, type, fn) {
- if ( elem.addEventListener ) {
- elem.addEventListener( type, fn, false );
- } else if ( elem.attachEvent ) {
- elem.attachEvent( "on" + type, fn );
- } else {
- fn();
- }
-}
-
-function id(name) {
- return !!(typeof document !== "undefined" && document && document.getElementById) &&
- document.getElementById( name );
-}
-
-// Test for equality any JavaScript type.
-// Discussions and reference: http://philrathe.com/articles/equiv
-// Test suites: http://philrathe.com/tests/equiv
-// Author: Philippe Rathé <prathe@gmail.com>
-QUnit.equiv = function () {
-
- var innerEquiv; // the real equiv function
- var callers = []; // stack to decide between skip/abort functions
-
-
- // Determine what is o.
- function hoozit(o) {
- if (QUnit.is("String", o)) {
- return "string";
-
- } else if (QUnit.is("Boolean", o)) {
- return "boolean";
-
- } else if (QUnit.is("Number", o)) {
-
- if (isNaN(o)) {
- return "nan";
- } else {
- return "number";
- }
-
- } else if (typeof o === "undefined") {
- return "undefined";
-
- // consider: typeof null === object
- } else if (o === null) {
- return "null";
-
- // consider: typeof [] === object
- } else if (QUnit.is( "Array", o)) {
- return "array";
-
- // consider: typeof new Date() === object
- } else if (QUnit.is( "Date", o)) {
- return "date";
-
- // consider: /./ instanceof Object;
- // /./ instanceof RegExp;
- // typeof /./ === "function"; // => false in IE and Opera,
- // true in FF and Safari
- } else if (QUnit.is( "RegExp", o)) {
- return "regexp";
-
- } else if (typeof o === "object") {
- return "object";
-
- } else if (QUnit.is( "Function", o)) {
- return "function";
- } else {
- return undefined;
- }
- }
-
- // Call the o related callback with the given arguments.
- function bindCallbacks(o, callbacks, args) {
- var prop = hoozit(o);
- if (prop) {
- if (hoozit(callbacks[prop]) === "function") {
- return callbacks[prop].apply(callbacks, args);
- } else {
- return callbacks[prop]; // or undefined
- }
- }
- }
-
- var callbacks = function () {
-
- // for string, boolean, number and null
- function useStrictEquality(b, a) {
- if (b instanceof a.constructor || a instanceof b.constructor) {
- // to catch short annotaion VS 'new' annotation of a declaration
- // e.g. var i = 1;
- // var j = new Number(1);
- return a == b;
- } else {
- return a === b;
- }
- }
-
- return {
- "string": useStrictEquality,
- "boolean": useStrictEquality,
- "number": useStrictEquality,
- "null": useStrictEquality,
- "undefined": useStrictEquality,
-
- "nan": function (b) {
- return isNaN(b);
- },
-
- "date": function (b, a) {
- return hoozit(b) === "date" && a.valueOf() === b.valueOf();
- },
-
- "regexp": function (b, a) {
- return hoozit(b) === "regexp" &&
- a.source === b.source && // the regex itself
- a.global === b.global && // and its modifers (gmi) ...
- a.ignoreCase === b.ignoreCase &&
- a.multiline === b.multiline;
- },
-
- // - skip when the property is a method of an instance (OOP)
- // - abort otherwise,
- // initial === would have catch identical references anyway
- "function": function () {
- var caller = callers[callers.length - 1];
- return caller !== Object &&
- typeof caller !== "undefined";
- },
-
- "array": function (b, a) {
- var i;
- var len;
-
- // b could be an object literal here
- if ( ! (hoozit(b) === "array")) {
- return false;
- }
-
- len = a.length;
- if (len !== b.length) { // safe and faster
- return false;
- }
- for (i = 0; i < len; i++) {
- if ( ! innerEquiv(a[i], b[i])) {
- return false;
- }
- }
- return true;
- },
-
- "object": function (b, a) {
- var i;
- var eq = true; // unless we can proove it
- var aProperties = [], bProperties = []; // collection of strings
-
- // comparing constructors is more strict than using instanceof
- if ( a.constructor !== b.constructor) {
- return false;
- }
-
- // stack constructor before traversing properties
- callers.push(a.constructor);
-
- for (i in a) { // be strict: don't ensures hasOwnProperty and go deep
-
- aProperties.push(i); // collect a's properties
-
- if ( ! innerEquiv(a[i], b[i])) {
- eq = false;
- }
- }
-
- callers.pop(); // unstack, we are done
-
- for (i in b) {
- bProperties.push(i); // collect b's properties
- }
-
- // Ensures identical properties name
- return eq && innerEquiv(aProperties.sort(), bProperties.sort());
- }
- };
- }();
-
- innerEquiv = function () { // can take multiple arguments
- var args = Array.prototype.slice.apply(arguments);
- if (args.length < 2) {
- return true; // end transition
- }
-
- return (function (a, b) {
- if (a === b) {
- return true; // catch the most you can
- } else if (a === null || b === null || typeof a === "undefined" || typeof b === "undefined" || hoozit(a) !== hoozit(b)) {
- return false; // don't lose time with error prone cases
- } else {
- return bindCallbacks(a, callbacks, [b, a]);
- }
-
- // apply transition with (1..n) arguments
- })(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length -1));
- };
-
- return innerEquiv;
-
-}();
-
-/**
- * jsDump
- * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
- * Licensed under BSD (http://www.opensource.org/licenses/bsd-license.php)
- * Date: 5/15/2008
- * @projectDescription Advanced and extensible data dumping for Javascript.
- * @version 1.0.0
- * @author Ariel Flesler
- * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
- */
-QUnit.jsDump = (function() {
- function quote( str ) {
- return '"' + str.toString().replace(/"/g, '\\"') + '"';
- };
- function literal( o ) {
- return o + '';
- };
- function join( pre, arr, post ) {
- var s = jsDump.separator(),
- base = jsDump.indent(),
- inner = jsDump.indent(1);
- if ( arr.join )
- arr = arr.join( ',' + s + inner );
- if ( !arr )
- return pre + post;
- return [ pre, inner + arr, base + post ].join(s);
- };
- function array( arr ) {
- var i = arr.length, ret = Array(i);
- this.up();
- while ( i-- )
- ret[i] = this.parse( arr[i] );
- this.down();
- return join( '[', ret, ']' );
- };
-
- var reName = /^function (\w+)/;
-
- var jsDump = {
- parse:function( obj, type ) { //type is used mostly internally, you can fix a (custom)type in advance
- var parser = this.parsers[ type || this.typeOf(obj) ];
- type = typeof parser;
-
- return type == 'function' ? parser.call( this, obj ) :
- type == 'string' ? parser :
- this.parsers.error;
- },
- typeOf:function( obj ) {
- var type;
- if ( obj === null ) {
- type = "null";
- } else if (typeof obj === "undefined") {
- type = "undefined";
- } else if (QUnit.is("RegExp", obj)) {
- type = "regexp";
- } else if (QUnit.is("Date", obj)) {
- type = "date";
- } else if (QUnit.is("Function", obj)) {
- type = "function";
- } else if (QUnit.is("Array", obj)) {
- type = "array";
- } else if (QUnit.is("Window", obj) || QUnit.is("global", obj)) {
- type = "window";
- } else if (QUnit.is("HTMLDocument", obj)) {
- type = "document";
- } else if (QUnit.is("HTMLCollection", obj) || QUnit.is("NodeList", obj)) {
- type = "nodelist";
- } else if (/^\[object HTML/.test(Object.prototype.toString.call( obj ))) {
- type = "node";
- } else {
- type = typeof obj;
- }
- return type;
- },
- separator:function() {
- return this.multiline ? this.HTML ? '<br />' : '\n' : this.HTML ? '&nbsp;' : ' ';
- },
- indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
- if ( !this.multiline )
- return '';
- var chr = this.indentChar;
- if ( this.HTML )
- chr = chr.replace(/\t/g,' ').replace(/ /g,'&nbsp;');
- return Array( this._depth_ + (extra||0) ).join(chr);
- },
- up:function( a ) {
- this._depth_ += a || 1;
- },
- down:function( a ) {
- this._depth_ -= a || 1;
- },
- setParser:function( name, parser ) {
- this.parsers[name] = parser;
- },
- // The next 3 are exposed so you can use them
- quote:quote,
- literal:literal,
- join:join,
- //
- _depth_: 1,
- // This is the list of parsers, to modify them, use jsDump.setParser
- parsers:{
- window: '[Window]',
- document: '[Document]',
- error:'[ERROR]', //when no parser is found, shouldn't happen
- unknown: '[Unknown]',
- 'null':'null',
- undefined:'undefined',
- 'function':function( fn ) {
- var ret = 'function',
- name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE
- if ( name )
- ret += ' ' + name;
- ret += '(';
-
- ret = [ ret, this.parse( fn, 'functionArgs' ), '){'].join('');
- return join( ret, this.parse(fn,'functionCode'), '}' );
- },
- array: array,
- nodelist: array,
- arguments: array,
- object:function( map ) {
- var ret = [ ];
- this.up();
- for ( var key in map )
- ret.push( this.parse(key,'key') + ': ' + this.parse(map[key]) );
- this.down();
- return join( '{', ret, '}' );
- },
- node:function( node ) {
- var open = this.HTML ? '&lt;' : '<',
- close = this.HTML ? '&gt;' : '>';
-
- var tag = node.nodeName.toLowerCase(),
- ret = open + tag;
-
- for ( var a in this.DOMAttrs ) {
- var val = node[this.DOMAttrs[a]];
- if ( val )
- ret += ' ' + a + '=' + this.parse( val, 'attribute' );
- }
- return ret + close + open + '/' + tag + close;
- },
- functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function
- var l = fn.length;
- if ( !l ) return '';
-
- var args = Array(l);
- while ( l-- )
- args[l] = String.fromCharCode(97+l);//97 is 'a'
- return ' ' + args.join(', ') + ' ';
- },
- key:quote, //object calls it internally, the key part of an item in a map
- functionCode:'[code]', //function calls it internally, it's the content of the function
- attribute:quote, //node calls it internally, it's an html attribute value
- string:quote,
- date:quote,
- regexp:literal, //regex
- number:literal,
- 'boolean':literal
- },
- DOMAttrs:{//attributes to dump from nodes, name=>realName
- id:'id',
- name:'name',
- 'class':'className'
- },
- HTML:true,//if true, entities are escaped ( <, >, \t, space and \n )
- indentChar:' ',//indentation unit
- multiline:true //if true, items in a collection, are separated by a \n, else just a space.
- };
-
- return jsDump;
-})();
-
-})(this);
diff --git a/assets/node_modules/uri-js/tests/test-es5-min.html b/assets/node_modules/uri-js/tests/test-es5-min.html
deleted file mode 100644
index b841c75..0000000
--- a/assets/node_modules/uri-js/tests/test-es5-min.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <link rel="stylesheet" href="qunit.css" type="text/css"/>
- <script type="text/javascript" src="qunit.js"></script>
- <script type="text/javascript" src="../dist/es5/uri.all.min.js"></script>
- <script type="text/javascript" src="tests.js"></script>
- </head>
- <body>
- <h1 id="qunit-header">URI.js Test Suite</h1>
- <h2 id="qunit-banner"></h2>
- <div id="qunit-testrunner-toolbar"></div>
- <h2 id="qunit-userAgent"></h2>
- <ol id="qunit-tests"></ol>
- </body>
-</html>
diff --git a/assets/node_modules/uri-js/tests/test-es5.html b/assets/node_modules/uri-js/tests/test-es5.html
deleted file mode 100644
index 2d89c66..0000000
--- a/assets/node_modules/uri-js/tests/test-es5.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <link rel="stylesheet" href="qunit.css" type="text/css"/>
- <script type="text/javascript" src="qunit.js"></script>
- <script type="text/javascript" src="../dist/es5/uri.all.js"></script>
- <script type="text/javascript" src="tests.js"></script>
- </head>
- <body>
- <h1 id="qunit-header">URI.js Test Suite</h1>
- <h2 id="qunit-banner"></h2>
- <div id="qunit-testrunner-toolbar"></div>
- <h2 id="qunit-userAgent"></h2>
- <ol id="qunit-tests"></ol>
- </body>
-</html>
diff --git a/assets/node_modules/uri-js/tests/tests.js b/assets/node_modules/uri-js/tests/tests.js
deleted file mode 100644
index 624191c..0000000
--- a/assets/node_modules/uri-js/tests/tests.js
+++ /dev/null
@@ -1,774 +0,0 @@
-//
-//
-// Tests
-//
-//
-
-if (typeof URI === "undefined") {
- var URI = require("../dist/es5/uri.all");
-}
-
-test("Acquire URI", function () {
- //URI = require("./uri").URI;
- ok(URI);
-});
-
-test("URI Parsing", function () {
- var components;
-
- //scheme
- components = URI.parse("uri:");
- strictEqual(components.error, undefined, "scheme errors");
- strictEqual(components.scheme, "uri", "scheme");
- //strictEqual(components.authority, undefined, "authority");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, undefined, "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
-
- //userinfo
- components = URI.parse("//@");
- strictEqual(components.error, undefined, "userinfo errors");
- strictEqual(components.scheme, undefined, "scheme");
- //strictEqual(components.authority, "@", "authority");
- strictEqual(components.userinfo, "", "userinfo");
- strictEqual(components.host, "", "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
-
- //host
- components = URI.parse("//");
- strictEqual(components.error, undefined, "host errors");
- strictEqual(components.scheme, undefined, "scheme");
- //strictEqual(components.authority, "", "authority");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, "", "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
-
- //port
- components = URI.parse("//:");
- strictEqual(components.error, undefined, "port errors");
- strictEqual(components.scheme, undefined, "scheme");
- //strictEqual(components.authority, ":", "authority");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, "", "host");
- strictEqual(components.port, "", "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
-
- //path
- components = URI.parse("");
- strictEqual(components.error, undefined, "path errors");
- strictEqual(components.scheme, undefined, "scheme");
- //strictEqual(components.authority, undefined, "authority");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, undefined, "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
-
- //query
- components = URI.parse("?");
- strictEqual(components.error, undefined, "query errors");
- strictEqual(components.scheme, undefined, "scheme");
- //strictEqual(components.authority, undefined, "authority");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, undefined, "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, "", "query");
- strictEqual(components.fragment, undefined, "fragment");
-
- //fragment
- components = URI.parse("#");
- strictEqual(components.error, undefined, "fragment errors");
- strictEqual(components.scheme, undefined, "scheme");
- //strictEqual(components.authority, undefined, "authority");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, undefined, "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, "", "fragment");
-
- //fragment with character tabulation
- components = URI.parse("#\t");
- strictEqual(components.error, undefined, "path errors");
- strictEqual(components.scheme, undefined, "scheme");
- //strictEqual(components.authority, undefined, "authority");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, undefined, "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, "%09", "fragment");
-
- //fragment with line feed
- components = URI.parse("#\n");
- strictEqual(components.error, undefined, "path errors");
- strictEqual(components.scheme, undefined, "scheme");
- //strictEqual(components.authority, undefined, "authority");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, undefined, "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, "%0A", "fragment");
-
- //fragment with line tabulation
- components = URI.parse("#\v");
- strictEqual(components.error, undefined, "path errors");
- strictEqual(components.scheme, undefined, "scheme");
- //strictEqual(components.authority, undefined, "authority");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, undefined, "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, "%0B", "fragment");
-
- //fragment with form feed
- components = URI.parse("#\f");
- strictEqual(components.error, undefined, "path errors");
- strictEqual(components.scheme, undefined, "scheme");
- //strictEqual(components.authority, undefined, "authority");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, undefined, "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, "%0C", "fragment");
-
- //fragment with carriage return
- components = URI.parse("#\r");
- strictEqual(components.error, undefined, "path errors");
- strictEqual(components.scheme, undefined, "scheme");
- //strictEqual(components.authority, undefined, "authority");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, undefined, "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, "%0D", "fragment");
-
- //all
- components = URI.parse("uri://user:pass@example.com:123/one/two.three?q1=a1&q2=a2#body");
- strictEqual(components.error, undefined, "all errors");
- strictEqual(components.scheme, "uri", "scheme");
- //strictEqual(components.authority, "user:pass@example.com:123", "authority");
- strictEqual(components.userinfo, "user:pass", "userinfo");
- strictEqual(components.host, "example.com", "host");
- strictEqual(components.port, 123, "port");
- strictEqual(components.path, "/one/two.three", "path");
- strictEqual(components.query, "q1=a1&q2=a2", "query");
- strictEqual(components.fragment, "body", "fragment");
-
- //IPv4address
- components = URI.parse("//10.10.10.10");
- strictEqual(components.error, undefined, "IPv4address errors");
- strictEqual(components.scheme, undefined, "scheme");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, "10.10.10.10", "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
-
- //IPv6address
- components = URI.parse("//[2001:db8::7]");
- strictEqual(components.error, undefined, "IPv4address errors");
- strictEqual(components.scheme, undefined, "scheme");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, "2001:db8::7", "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
-
- //mixed IPv4address & IPv6address
- components = URI.parse("//[::ffff:129.144.52.38]");
- strictEqual(components.error, undefined, "IPv4address errors");
- strictEqual(components.scheme, undefined, "scheme");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, "::ffff:129.144.52.38", "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
-
- //mixed IPv4address & reg-name, example from terion-name (https://github.com/garycourt/uri-js/issues/4)
- components = URI.parse("uri://10.10.10.10.example.com/en/process");
- strictEqual(components.error, undefined, "mixed errors");
- strictEqual(components.scheme, "uri", "scheme");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, "10.10.10.10.example.com", "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "/en/process", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
-
- //IPv6address, example from bkw (https://github.com/garycourt/uri-js/pull/16)
- components = URI.parse("//[2606:2800:220:1:248:1893:25c8:1946]/test");
- strictEqual(components.error, undefined, "IPv6address errors");
- strictEqual(components.scheme, undefined, "scheme");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, "2606:2800:220:1:248:1893:25c8:1946", "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "/test", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
-
- //IPv6address, example from RFC 5952
- components = URI.parse("//[2001:db8::1]:80");
- strictEqual(components.error, undefined, "IPv6address errors");
- strictEqual(components.scheme, undefined, "scheme");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, "2001:db8::1", "host");
- strictEqual(components.port, 80, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
-
- //IPv6address with zone identifier, RFC 6874
- components = URI.parse("//[fe80::a%25en1]");
- strictEqual(components.error, undefined, "IPv4address errors");
- strictEqual(components.scheme, undefined, "scheme");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, "fe80::a%en1", "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
-
- //IPv6address with an unescaped interface specifier, example from pekkanikander (https://github.com/garycourt/uri-js/pull/22)
- components = URI.parse("//[2001:db8::7%en0]");
- strictEqual(components.error, undefined, "IPv6address interface errors");
- strictEqual(components.scheme, undefined, "scheme");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, "2001:db8::7%en0", "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, "", "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
-});
-
-test("URI Serialization", function () {
- var components = {
- scheme : undefined,
- userinfo : undefined,
- host : undefined,
- port : undefined,
- path : undefined,
- query : undefined,
- fragment : undefined
- };
- strictEqual(URI.serialize(components), "", "Undefined Components");
-
- components = {
- scheme : "",
- userinfo : "",
- host : "",
- port : 0,
- path : "",
- query : "",
- fragment : ""
- };
- strictEqual(URI.serialize(components), "//@:0?#", "Empty Components");
-
- components = {
- scheme : "uri",
- userinfo : "foo:bar",
- host : "example.com",
- port : 1,
- path : "path",
- query : "query",
- fragment : "fragment"
- };
- strictEqual(URI.serialize(components), "uri://foo:bar@example.com:1/path?query#fragment", "All Components");
-
- strictEqual(URI.serialize({path:"//path"}), "/%2Fpath", "Double slash path");
- strictEqual(URI.serialize({path:"foo:bar"}), "foo%3Abar", "Colon path");
- strictEqual(URI.serialize({path:"?query"}), "%3Fquery", "Query path");
-
- //mixed IPv4address & reg-name, example from terion-name (https://github.com/garycourt/uri-js/issues/4)
- strictEqual(URI.serialize({host:"10.10.10.10.example.com"}), "//10.10.10.10.example.com", "Mixed IPv4address & reg-name");
-
- //IPv6address
- strictEqual(URI.serialize({host:"2001:db8::7"}), "//[2001:db8::7]", "IPv6 Host");
- strictEqual(URI.serialize({host:"::ffff:129.144.52.38"}), "//[::ffff:129.144.52.38]", "IPv6 Mixed Host");
- strictEqual(URI.serialize({host:"2606:2800:220:1:248:1893:25c8:1946"}), "//[2606:2800:220:1:248:1893:25c8:1946]", "IPv6 Full Host");
-
- //IPv6address with zone identifier, RFC 6874
- strictEqual(URI.serialize({host:"fe80::a%en1"}), "//[fe80::a%25en1]", "IPv6 Zone Unescaped Host");
- strictEqual(URI.serialize({host:"fe80::a%25en1"}), "//[fe80::a%25en1]", "IPv6 Zone Escaped Host");
-});
-
-test("URI Resolving", function () {
- //normal examples from RFC 3986
- var base = "uri://a/b/c/d;p?q";
- strictEqual(URI.resolve(base, "g:h"), "g:h", "g:h");
- strictEqual(URI.resolve(base, "g:h"), "g:h", "g:h");
- strictEqual(URI.resolve(base, "g"), "uri://a/b/c/g", "g");
- strictEqual(URI.resolve(base, "./g"), "uri://a/b/c/g", "./g");
- strictEqual(URI.resolve(base, "g/"), "uri://a/b/c/g/", "g/");
- strictEqual(URI.resolve(base, "/g"), "uri://a/g", "/g");
- strictEqual(URI.resolve(base, "//g"), "uri://g", "//g");
- strictEqual(URI.resolve(base, "?y"), "uri://a/b/c/d;p?y", "?y");
- strictEqual(URI.resolve(base, "g?y"), "uri://a/b/c/g?y", "g?y");
- strictEqual(URI.resolve(base, "#s"), "uri://a/b/c/d;p?q#s", "#s");
- strictEqual(URI.resolve(base, "g#s"), "uri://a/b/c/g#s", "g#s");
- strictEqual(URI.resolve(base, "g?y#s"), "uri://a/b/c/g?y#s", "g?y#s");
- strictEqual(URI.resolve(base, ";x"), "uri://a/b/c/;x", ";x");
- strictEqual(URI.resolve(base, "g;x"), "uri://a/b/c/g;x", "g;x");
- strictEqual(URI.resolve(base, "g;x?y#s"), "uri://a/b/c/g;x?y#s", "g;x?y#s");
- strictEqual(URI.resolve(base, ""), "uri://a/b/c/d;p?q", "");
- strictEqual(URI.resolve(base, "."), "uri://a/b/c/", ".");
- strictEqual(URI.resolve(base, "./"), "uri://a/b/c/", "./");
- strictEqual(URI.resolve(base, ".."), "uri://a/b/", "..");
- strictEqual(URI.resolve(base, "../"), "uri://a/b/", "../");
- strictEqual(URI.resolve(base, "../g"), "uri://a/b/g", "../g");
- strictEqual(URI.resolve(base, "../.."), "uri://a/", "../..");
- strictEqual(URI.resolve(base, "../../"), "uri://a/", "../../");
- strictEqual(URI.resolve(base, "../../g"), "uri://a/g", "../../g");
-
- //abnormal examples from RFC 3986
- strictEqual(URI.resolve(base, "../../../g"), "uri://a/g", "../../../g");
- strictEqual(URI.resolve(base, "../../../../g"), "uri://a/g", "../../../../g");
-
- strictEqual(URI.resolve(base, "/./g"), "uri://a/g", "/./g");
- strictEqual(URI.resolve(base, "/../g"), "uri://a/g", "/../g");
- strictEqual(URI.resolve(base, "g."), "uri://a/b/c/g.", "g.");
- strictEqual(URI.resolve(base, ".g"), "uri://a/b/c/.g", ".g");
- strictEqual(URI.resolve(base, "g.."), "uri://a/b/c/g..", "g..");
- strictEqual(URI.resolve(base, "..g"), "uri://a/b/c/..g", "..g");
-
- strictEqual(URI.resolve(base, "./../g"), "uri://a/b/g", "./../g");
- strictEqual(URI.resolve(base, "./g/."), "uri://a/b/c/g/", "./g/.");
- strictEqual(URI.resolve(base, "g/./h"), "uri://a/b/c/g/h", "g/./h");
- strictEqual(URI.resolve(base, "g/../h"), "uri://a/b/c/h", "g/../h");
- strictEqual(URI.resolve(base, "g;x=1/./y"), "uri://a/b/c/g;x=1/y", "g;x=1/./y");
- strictEqual(URI.resolve(base, "g;x=1/../y"), "uri://a/b/c/y", "g;x=1/../y");
-
- strictEqual(URI.resolve(base, "g?y/./x"), "uri://a/b/c/g?y/./x", "g?y/./x");
- strictEqual(URI.resolve(base, "g?y/../x"), "uri://a/b/c/g?y/../x", "g?y/../x");
- strictEqual(URI.resolve(base, "g#s/./x"), "uri://a/b/c/g#s/./x", "g#s/./x");
- strictEqual(URI.resolve(base, "g#s/../x"), "uri://a/b/c/g#s/../x", "g#s/../x");
-
- strictEqual(URI.resolve(base, "uri:g"), "uri:g", "uri:g");
- strictEqual(URI.resolve(base, "uri:g", {tolerant:true}), "uri://a/b/c/g", "uri:g");
-
- //examples by PAEz
- strictEqual(URI.resolve("//www.g.com/","/adf\ngf"), "//www.g.com/adf%0Agf", "/adf\\ngf");
- strictEqual(URI.resolve("//www.g.com/error\n/bleh/bleh",".."), "//www.g.com/error%0A/", "//www.g.com/error\\n/bleh/bleh");
-});
-
-test("URI Normalizing", function () {
- //test from RFC 3987
- strictEqual(URI.normalize("uri://www.example.org/red%09ros\xE9#red"), "uri://www.example.org/red%09ros%C3%A9#red");
-
- //IPv4address
- strictEqual(URI.normalize("//192.068.001.000"), "//192.68.1.0");
-
- //IPv6address, example from RFC 3513
- strictEqual(URI.normalize("http://[1080::8:800:200C:417A]/"), "http://[1080::8:800:200c:417a]/");
-
- //IPv6address, examples from RFC 5952
- strictEqual(URI.normalize("//[2001:0db8::0001]/"), "//[2001:db8::1]/");
- strictEqual(URI.normalize("//[2001:db8::1:0000:1]/"), "//[2001:db8::1:0:1]/");
- strictEqual(URI.normalize("//[2001:db8:0:0:0:0:2:1]/"), "//[2001:db8::2:1]/");
- strictEqual(URI.normalize("//[2001:db8:0:1:1:1:1:1]/"), "//[2001:db8:0:1:1:1:1:1]/");
- strictEqual(URI.normalize("//[2001:0:0:1:0:0:0:1]/"), "//[2001:0:0:1::1]/");
- strictEqual(URI.normalize("//[2001:db8:0:0:1:0:0:1]/"), "//[2001:db8::1:0:0:1]/");
- strictEqual(URI.normalize("//[2001:DB8::1]/"), "//[2001:db8::1]/");
- strictEqual(URI.normalize("//[0:0:0:0:0:ffff:192.0.2.1]/"), "//[::ffff:192.0.2.1]/");
-
- //Mixed IPv4 and IPv6 address
- strictEqual(URI.normalize("//[1:2:3:4:5:6:192.0.2.1]/"), "//[1:2:3:4:5:6:192.0.2.1]/");
- strictEqual(URI.normalize("//[1:2:3:4:5:6:192.068.001.000]/"), "//[1:2:3:4:5:6:192.68.1.0]/");
-});
-
-test("URI Equals", function () {
- //test from RFC 3986
- strictEqual(URI.equal("example://a/b/c/%7Bfoo%7D", "eXAMPLE://a/./b/../b/%63/%7bfoo%7d"), true);
-
- //test from RFC 3987
- strictEqual(URI.equal("http://example.org/~user", "http://example.org/%7euser"), true);
-});
-
-test("Escape Component", function () {
- var chr;
- for (var d = 0; d <= 129; ++d) {
- chr = String.fromCharCode(d);
- if (!chr.match(/[\$\&\+\,\;\=]/)) {
- strictEqual(URI.escapeComponent(chr), encodeURIComponent(chr));
- } else {
- strictEqual(URI.escapeComponent(chr), chr);
- }
- }
- strictEqual(URI.escapeComponent("\u00c0"), encodeURIComponent("\u00c0"));
- strictEqual(URI.escapeComponent("\u07ff"), encodeURIComponent("\u07ff"));
- strictEqual(URI.escapeComponent("\u0800"), encodeURIComponent("\u0800"));
- strictEqual(URI.escapeComponent("\u30a2"), encodeURIComponent("\u30a2"));
-});
-
-test("Unescape Component", function () {
- var chr;
- for (var d = 0; d <= 129; ++d) {
- chr = String.fromCharCode(d);
- strictEqual(URI.unescapeComponent(encodeURIComponent(chr)), chr);
- }
- strictEqual(URI.unescapeComponent(encodeURIComponent("\u00c0")), "\u00c0");
- strictEqual(URI.unescapeComponent(encodeURIComponent("\u07ff")), "\u07ff");
- strictEqual(URI.unescapeComponent(encodeURIComponent("\u0800")), "\u0800");
- strictEqual(URI.unescapeComponent(encodeURIComponent("\u30a2")), "\u30a2");
-});
-
-//
-// IRI
-//
-
-
-
-var IRI_OPTION = { iri : true, unicodeSupport : true };
-
-test("IRI Parsing", function () {
- var components = URI.parse("uri://us\xA0er:pa\uD7FFss@example.com:123/o\uF900ne/t\uFDCFwo.t\uFDF0hree?q1=a1\uF8FF\uE000&q2=a2#bo\uFFEFdy", IRI_OPTION);
- strictEqual(components.error, undefined, "all errors");
- strictEqual(components.scheme, "uri", "scheme");
- //strictEqual(components.authority, "us\xA0er:pa\uD7FFss@example.com:123", "authority");
- strictEqual(components.userinfo, "us\xA0er:pa\uD7FFss", "userinfo");
- strictEqual(components.host, "example.com", "host");
- strictEqual(components.port, 123, "port");
- strictEqual(components.path, "/o\uF900ne/t\uFDCFwo.t\uFDF0hree", "path");
- strictEqual(components.query, "q1=a1\uF8FF\uE000&q2=a2", "query");
- strictEqual(components.fragment, "bo\uFFEFdy", "fragment");
-});
-
-test("IRI Serialization", function () {
- var components = {
- scheme : "uri",
- userinfo : "us\xA0er:pa\uD7FFss",
- host : "example.com",
- port : 123,
- path : "/o\uF900ne/t\uFDCFwo.t\uFDF0hree",
- query : "q1=a1\uF8FF\uE000&q2=a2",
- fragment : "bo\uFFEFdy\uE001"
- };
- strictEqual(URI.serialize(components, IRI_OPTION), "uri://us\xA0er:pa\uD7FFss@example.com:123/o\uF900ne/t\uFDCFwo.t\uFDF0hree?q1=a1\uF8FF\uE000&q2=a2#bo\uFFEFdy%EE%80%81");
-});
-
-test("IRI Normalizing", function () {
- strictEqual(URI.normalize("uri://www.example.org/red%09ros\xE9#red", IRI_OPTION), "uri://www.example.org/red%09ros\xE9#red");
-});
-
-test("IRI Equals", function () {
- //example from RFC 3987
- strictEqual(URI.equal("example://a/b/c/%7Bfoo%7D/ros\xE9", "eXAMPLE://a/./b/../b/%63/%7bfoo%7d/ros%C3%A9", IRI_OPTION), true);
-});
-
-test("Convert IRI to URI", function () {
- //example from RFC 3987
- strictEqual(URI.serialize(URI.parse("uri://www.example.org/red%09ros\xE9#red", IRI_OPTION)), "uri://www.example.org/red%09ros%C3%A9#red");
-
- //Internationalized Domain Name conversion via punycode example from RFC 3987
- strictEqual(URI.serialize(URI.parse("uri://r\xE9sum\xE9.example.org", {iri:true, domainHost:true}), {domainHost:true}), "uri://xn--rsum-bpad.example.org");
-});
-
-test("Convert URI to IRI", function () {
- //examples from RFC 3987
- strictEqual(URI.serialize(URI.parse("uri://www.example.org/D%C3%BCrst"), IRI_OPTION), "uri://www.example.org/D\xFCrst");
- strictEqual(URI.serialize(URI.parse("uri://www.example.org/D%FCrst"), IRI_OPTION), "uri://www.example.org/D%FCrst");
- strictEqual(URI.serialize(URI.parse("uri://xn--99zt52a.example.org/%e2%80%ae"), IRI_OPTION), "uri://xn--99zt52a.example.org/%E2%80%AE"); //or uri://\u7D0D\u8C46.example.org/%E2%80%AE
-
- //Internationalized Domain Name conversion via punycode example from RFC 3987
- strictEqual(URI.serialize(URI.parse("uri://xn--rsum-bpad.example.org", {domainHost:true}), {iri:true, domainHost:true}), "uri://r\xE9sum\xE9.example.org");
-});
-
-//
-// HTTP
-//
-
-if (URI.SCHEMES["http"]) {
-
- //module("HTTP");
-
- test("HTTP Equals", function () {
- //test from RFC 2616
- strictEqual(URI.equal("http://abc.com:80/~smith/home.html", "http://abc.com/~smith/home.html"), true);
- strictEqual(URI.equal("http://ABC.com/%7Esmith/home.html", "http://abc.com/~smith/home.html"), true);
- strictEqual(URI.equal("http://ABC.com:/%7esmith/home.html", "http://abc.com/~smith/home.html"), true);
- strictEqual(URI.equal("HTTP://ABC.COM", "http://abc.com/"), true);
- //test from RFC 3986
- strictEqual(URI.equal("http://example.com:/", "http://example.com:80/"), true);
- });
-
-}
-
-if (URI.SCHEMES["https"]) {
-
- //module("HTTPS");
-
- test("HTTPS Equals", function () {
- strictEqual(URI.equal("https://example.com", "https://example.com:443/"), true);
- strictEqual(URI.equal("https://example.com:/", "https://example.com:443/"), true);
- });
-
-}
-
-//
-// URN
-//
-
-if (URI.SCHEMES["urn"]) {
-
- //module("URN");
-
- test("URN Parsing", function () {
- //example from RFC 2141
- var components = URI.parse("urn:foo:a123,456");
- strictEqual(components.error, undefined, "errors");
- strictEqual(components.scheme, "urn", "scheme");
- //strictEqual(components.authority, undefined, "authority");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, undefined, "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, undefined, "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
- strictEqual(components.nid, "foo", "nid");
- strictEqual(components.nss, "a123,456", "nss");
- });
-
- test("URN Serialization", function () {
- //example from RFC 2141
- var components = {
- scheme : "urn",
- nid : "foo",
- nss : "a123,456"
- };
- strictEqual(URI.serialize(components), "urn:foo:a123,456");
- });
-
- test("URN Equals", function () {
- //test from RFC 2141
- strictEqual(URI.equal("urn:foo:a123,456", "urn:foo:a123,456"), true);
- strictEqual(URI.equal("urn:foo:a123,456", "URN:foo:a123,456"), true);
- strictEqual(URI.equal("urn:foo:a123,456", "urn:FOO:a123,456"), true);
- strictEqual(URI.equal("urn:foo:a123,456", "urn:foo:A123,456"), false);
- strictEqual(URI.equal("urn:foo:a123%2C456", "URN:FOO:a123%2c456"), true);
- });
-
- test("URN Resolving", function () {
- //example from epoberezkin
- strictEqual(URI.resolve('', 'urn:some:ip:prop'), 'urn:some:ip:prop');
- strictEqual(URI.resolve('#', 'urn:some:ip:prop'), 'urn:some:ip:prop');
- strictEqual(URI.resolve('urn:some:ip:prop', 'urn:some:ip:prop'), 'urn:some:ip:prop');
- strictEqual(URI.resolve('urn:some:other:prop', 'urn:some:ip:prop'), 'urn:some:ip:prop');
- });
-
- //
- // URN UUID
- //
-
- test("UUID Parsing", function () {
- //example from RFC 4122
- var components = URI.parse("urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6");
- strictEqual(components.error, undefined, "errors");
- strictEqual(components.scheme, "urn", "scheme");
- //strictEqual(components.authority, undefined, "authority");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, undefined, "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, undefined, "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
- strictEqual(components.nid, "uuid", "nid");
- strictEqual(components.nss, undefined, "nss");
- strictEqual(components.uuid, "f81d4fae-7dec-11d0-a765-00a0c91e6bf6", "uuid");
-
- components = URI.parse("urn:uuid:notauuid-7dec-11d0-a765-00a0c91e6bf6");
- notStrictEqual(components.error, undefined, "errors");
- });
-
- test("UUID Serialization", function () {
- //example from RFC 4122
- var components = {
- scheme : "urn",
- nid : "uuid",
- uuid : "f81d4fae-7dec-11d0-a765-00a0c91e6bf6"
- };
- strictEqual(URI.serialize(components), "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6");
-
- components = {
- scheme : "urn",
- nid : "uuid",
- uuid : "notauuid-7dec-11d0-a765-00a0c91e6bf6"
- };
- strictEqual(URI.serialize(components), "urn:uuid:notauuid-7dec-11d0-a765-00a0c91e6bf6");
- });
-
- test("UUID Equals", function () {
- strictEqual(URI.equal("URN:UUID:F81D4FAE-7DEC-11D0-A765-00A0C91E6BF6", "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"), true);
- });
-
- test("URN NID Override", function () {
- var components = URI.parse("urn:foo:f81d4fae-7dec-11d0-a765-00a0c91e6bf6", {nid:"uuid"});
- strictEqual(components.error, undefined, "errors");
- strictEqual(components.scheme, "urn", "scheme");
- strictEqual(components.path, undefined, "path");
- strictEqual(components.nid, "foo", "nid");
- strictEqual(components.nss, undefined, "nss");
- strictEqual(components.uuid, "f81d4fae-7dec-11d0-a765-00a0c91e6bf6", "uuid");
-
- var components = {
- scheme : "urn",
- nid : "foo",
- uuid : "f81d4fae-7dec-11d0-a765-00a0c91e6bf6"
- };
- strictEqual(URI.serialize(components, {nid:"uuid"}), "urn:foo:f81d4fae-7dec-11d0-a765-00a0c91e6bf6");
- });
-}
-
-//
-// Mailto
-//
-
-if (URI.SCHEMES["mailto"]) {
-
- //module("Mailto");
-
- test("Mailto Parse", function () {
- var components;
-
- //tests from RFC 6068
-
- components = URI.parse("mailto:chris@example.com");
- strictEqual(components.error, undefined, "error");
- strictEqual(components.scheme, "mailto", "scheme");
- strictEqual(components.userinfo, undefined, "userinfo");
- strictEqual(components.host, undefined, "host");
- strictEqual(components.port, undefined, "port");
- strictEqual(components.path, undefined, "path");
- strictEqual(components.query, undefined, "query");
- strictEqual(components.fragment, undefined, "fragment");
- deepEqual(components.to, ["chris@example.com"], "to");
- strictEqual(components.subject, undefined, "subject");
- strictEqual(components.body, undefined, "body");
- strictEqual(components.headers, undefined, "headers");
-
- components = URI.parse("mailto:infobot@example.com?subject=current-issue");
- deepEqual(components.to, ["infobot@example.com"], "to");
- strictEqual(components.subject, "current-issue", "subject");
-
- components = URI.parse("mailto:infobot@example.com?body=send%20current-issue");
- deepEqual(components.to, ["infobot@example.com"], "to");
- strictEqual(components.body, "send current-issue", "body");
-
- components = URI.parse("mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index");
- deepEqual(components.to, ["infobot@example.com"], "to");
- strictEqual(components.body, "send current-issue\x0D\x0Asend index", "body");
-
- components = URI.parse("mailto:list@example.org?In-Reply-To=%3C3469A91.D10AF4C@example.com%3E");
- deepEqual(components.to, ["list@example.org"], "to");
- deepEqual(components.headers, {"In-Reply-To":"<3469A91.D10AF4C@example.com>"}, "headers");
-
- components = URI.parse("mailto:majordomo@example.com?body=subscribe%20bamboo-l");
- deepEqual(components.to, ["majordomo@example.com"], "to");
- strictEqual(components.body, "subscribe bamboo-l", "body");
-
- components = URI.parse("mailto:joe@example.com?cc=bob@example.com&body=hello");
- deepEqual(components.to, ["joe@example.com"], "to");
- strictEqual(components.body, "hello", "body");
- deepEqual(components.headers, {"cc":"bob@example.com"}, "headers");
-
- components = URI.parse("mailto:joe@example.com?cc=bob@example.com?body=hello");
- if (URI.VALIDATE_SUPPORT) ok(components.error, "invalid header fields");
-
- components = URI.parse("mailto:gorby%25kremvax@example.com");
- deepEqual(components.to, ["gorby%kremvax@example.com"], "to gorby%kremvax@example.com");
-
- components = URI.parse("mailto:unlikely%3Faddress@example.com?blat=foop");
- deepEqual(components.to, ["unlikely?address@example.com"], "to unlikely?address@example.com");
- deepEqual(components.headers, {"blat":"foop"}, "headers");
-
- components = URI.parse("mailto:Mike%26family@example.org");
- deepEqual(components.to, ["Mike&family@example.org"], "to Mike&family@example.org");
-
- components = URI.parse("mailto:%22not%40me%22@example.org");
- deepEqual(components.to, ['"not@me"@example.org'], "to " + '"not@me"@example.org');
-
- components = URI.parse("mailto:%22oh%5C%5Cno%22@example.org");
- deepEqual(components.to, ['"oh\\\\no"@example.org'], "to " + '"oh\\\\no"@example.org');
-
- components = URI.parse("mailto:%22%5C%5C%5C%22it's%5C%20ugly%5C%5C%5C%22%22@example.org");
- deepEqual(components.to, ['"\\\\\\"it\'s\\ ugly\\\\\\""@example.org'], "to " + '"\\\\\\"it\'s\\ ugly\\\\\\""@example.org');
-
- components = URI.parse("mailto:user@example.org?subject=caf%C3%A9");
- deepEqual(components.to, ["user@example.org"], "to");
- strictEqual(components.subject, "caf\xE9", "subject");
-
- components = URI.parse("mailto:user@example.org?subject=%3D%3Futf-8%3FQ%3Fcaf%3DC3%3DA9%3F%3D");
- deepEqual(components.to, ["user@example.org"], "to");
- strictEqual(components.subject, "=?utf-8?Q?caf=C3=A9?=", "subject"); //TODO: Verify this
-
- components = URI.parse("mailto:user@example.org?subject=%3D%3Fiso-8859-1%3FQ%3Fcaf%3DE9%3F%3D");
- deepEqual(components.to, ["user@example.org"], "to");
- strictEqual(components.subject, "=?iso-8859-1?Q?caf=E9?=", "subject"); //TODO: Verify this
-
- components = URI.parse("mailto:user@example.org?subject=caf%C3%A9&body=caf%C3%A9");
- deepEqual(components.to, ["user@example.org"], "to");
- strictEqual(components.subject, "caf\xE9", "subject");
- strictEqual(components.body, "caf\xE9", "body");
-
- if (URI.IRI_SUPPORT) {
- components = URI.parse("mailto:user@%E7%B4%8D%E8%B1%86.example.org?subject=Test&body=NATTO");
- deepEqual(components.to, ["user@xn--99zt52a.example.org"], "to");
- strictEqual(components.subject, "Test", "subject");
- strictEqual(components.body, "NATTO", "body");
- }
-
- });
-
- test("Mailto Serialize", function () {
- var components;
-
- //tests from RFC 6068
- strictEqual(URI.serialize({scheme : "mailto", to : ["chris@example.com"]}), "mailto:chris@example.com");
- strictEqual(URI.serialize({scheme : "mailto", to : ["infobot@example.com"], body : "current-issue"}), "mailto:infobot@example.com?body=current-issue");
- strictEqual(URI.serialize({scheme : "mailto", to : ["infobot@example.com"], body : "send current-issue"}), "mailto:infobot@example.com?body=send%20current-issue");
- strictEqual(URI.serialize({scheme : "mailto", to : ["infobot@example.com"], body : "send current-issue\x0D\x0Asend index"}), "mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index");
- strictEqual(URI.serialize({scheme : "mailto", to : ["list@example.org"], headers : {"In-Reply-To" : "<3469A91.D10AF4C@example.com>"}}), "mailto:list@example.org?In-Reply-To=%3C3469A91.D10AF4C@example.com%3E");
- strictEqual(URI.serialize({scheme : "mailto", to : ["majordomo@example.com"], body : "subscribe bamboo-l"}), "mailto:majordomo@example.com?body=subscribe%20bamboo-l");
- strictEqual(URI.serialize({scheme : "mailto", to : ["joe@example.com"], headers : {"cc" : "bob@example.com", "body" : "hello"}}), "mailto:joe@example.com?cc=bob@example.com&body=hello");
- strictEqual(URI.serialize({scheme : "mailto", to : ["gorby%25kremvax@example.com"]}), "mailto:gorby%25kremvax@example.com");
- strictEqual(URI.serialize({scheme : "mailto", to : ["unlikely%3Faddress@example.com"], headers : {"blat" : "foop"}}), "mailto:unlikely%3Faddress@example.com?blat=foop");
- strictEqual(URI.serialize({scheme : "mailto", to : ["Mike&family@example.org"]}), "mailto:Mike%26family@example.org");
- strictEqual(URI.serialize({scheme : "mailto", to : ['"not@me"@example.org']}), "mailto:%22not%40me%22@example.org");
- strictEqual(URI.serialize({scheme : "mailto", to : ['"oh\\\\no"@example.org']}), "mailto:%22oh%5C%5Cno%22@example.org");
- strictEqual(URI.serialize({scheme : "mailto", to : ['"\\\\\\"it\'s\\ ugly\\\\\\""@example.org']}), "mailto:%22%5C%5C%5C%22it's%5C%20ugly%5C%5C%5C%22%22@example.org");
- strictEqual(URI.serialize({scheme : "mailto", to : ["user@example.org"], subject : "caf\xE9"}), "mailto:user@example.org?subject=caf%C3%A9");
- strictEqual(URI.serialize({scheme : "mailto", to : ["user@example.org"], subject : "=?utf-8?Q?caf=C3=A9?="}), "mailto:user@example.org?subject=%3D%3Futf-8%3FQ%3Fcaf%3DC3%3DA9%3F%3D");
- strictEqual(URI.serialize({scheme : "mailto", to : ["user@example.org"], subject : "=?iso-8859-1?Q?caf=E9?="}), "mailto:user@example.org?subject=%3D%3Fiso-8859-1%3FQ%3Fcaf%3DE9%3F%3D");
- strictEqual(URI.serialize({scheme : "mailto", to : ["user@example.org"], subject : "caf\xE9", body : "caf\xE9"}), "mailto:user@example.org?subject=caf%C3%A9&body=caf%C3%A9");
- if (URI.IRI_SUPPORT) {
- strictEqual(URI.serialize({scheme : "mailto", to : ["us\xE9r@\u7d0d\u8c46.example.org"], subject : "Test", body : "NATTO"}), "mailto:us%C3%A9r@xn--99zt52a.example.org?subject=Test&body=NATTO");
- }
-
- });
-
- test("Mailto Equals", function () {
- //tests from RFC 6068
- strictEqual(URI.equal("mailto:addr1@an.example,addr2@an.example", "mailto:?to=addr1@an.example,addr2@an.example"), true);
- strictEqual(URI.equal("mailto:?to=addr1@an.example,addr2@an.example", "mailto:addr1@an.example?to=addr2@an.example"), true);
- });
-
-}
diff --git a/assets/node_modules/uri-js/tsconfig.json b/assets/node_modules/uri-js/tsconfig.json
deleted file mode 100644
index e289985..0000000
--- a/assets/node_modules/uri-js/tsconfig.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "compilerOptions": {
- "module": "es2015",
- "target": "esnext",
- "noImplicitAny": true,
- "sourceMap": true,
- "alwaysStrict": true,
- "declaration": true,
- "experimentalDecorators": true,
- "forceConsistentCasingInFileNames": true,
- "importHelpers": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "outDir": "dist/esnext",
- "strictNullChecks": true
- },
- "include": [
- "src/**/*"
- ]
-}
diff --git a/assets/node_modules/uri-js/yarn.lock b/assets/node_modules/uri-js/yarn.lock
deleted file mode 100644
index 569687d..0000000
--- a/assets/node_modules/uri-js/yarn.lock
+++ /dev/null
@@ -1,1902 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-abbrev@1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
-
-ajv@^4.9.1:
- version "4.11.8"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
- dependencies:
- co "^4.6.0"
- json-stable-stringify "^1.0.1"
-
-align-text@^0.1.1, align-text@^0.1.3:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
- dependencies:
- kind-of "^3.0.2"
- longest "^1.0.1"
- repeat-string "^1.5.2"
-
-ansi-regex@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-
-ansi-styles@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
-
-anymatch@^1.3.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
- dependencies:
- micromatch "^2.1.5"
- normalize-path "^2.0.0"
-
-aproba@^1.0.3:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
-
-are-we-there-yet@~1.1.2:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
- dependencies:
- delegates "^1.0.0"
- readable-stream "^2.0.6"
-
-arr-diff@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
- dependencies:
- arr-flatten "^1.0.1"
-
-arr-flatten@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
-
-array-unique@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
-
-asn1@~0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
-
-assert-plus@1.0.0, assert-plus@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
-
-assert-plus@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
-
-async-each@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
-
-asynckit@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
-
-aws-sign2@~0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
-
-aws4@^1.2.1:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
-
-babel-cli@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1"
- dependencies:
- babel-core "^6.26.0"
- babel-polyfill "^6.26.0"
- babel-register "^6.26.0"
- babel-runtime "^6.26.0"
- commander "^2.11.0"
- convert-source-map "^1.5.0"
- fs-readdir-recursive "^1.0.0"
- glob "^7.1.2"
- lodash "^4.17.4"
- output-file-sync "^1.1.2"
- path-is-absolute "^1.0.1"
- slash "^1.0.0"
- source-map "^0.5.6"
- v8flags "^2.1.1"
- optionalDependencies:
- chokidar "^1.6.1"
-
-babel-code-frame@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
- dependencies:
- chalk "^1.1.3"
- esutils "^2.0.2"
- js-tokens "^3.0.2"
-
-babel-core@6, babel-core@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
- dependencies:
- babel-code-frame "^6.26.0"
- babel-generator "^6.26.0"
- babel-helpers "^6.24.1"
- babel-messages "^6.23.0"
- babel-register "^6.26.0"
- babel-runtime "^6.26.0"
- babel-template "^6.26.0"
- babel-traverse "^6.26.0"
- babel-types "^6.26.0"
- babylon "^6.18.0"
- convert-source-map "^1.5.0"
- debug "^2.6.8"
- json5 "^0.5.1"
- lodash "^4.17.4"
- minimatch "^3.0.4"
- path-is-absolute "^1.0.1"
- private "^0.1.7"
- slash "^1.0.0"
- source-map "^0.5.6"
-
-babel-generator@^6.26.0:
- version "6.26.1"
- resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
- dependencies:
- babel-messages "^6.23.0"
- babel-runtime "^6.26.0"
- babel-types "^6.26.0"
- detect-indent "^4.0.0"
- jsesc "^1.3.0"
- lodash "^4.17.4"
- source-map "^0.5.7"
- trim-right "^1.0.1"
-
-babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
- dependencies:
- babel-helper-explode-assignable-expression "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-call-delegate@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
- dependencies:
- babel-helper-hoist-variables "^6.24.1"
- babel-runtime "^6.22.0"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-define-map@^6.24.1:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f"
- dependencies:
- babel-helper-function-name "^6.24.1"
- babel-runtime "^6.26.0"
- babel-types "^6.26.0"
- lodash "^4.17.4"
-
-babel-helper-explode-assignable-expression@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
- dependencies:
- babel-runtime "^6.22.0"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-function-name@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
- dependencies:
- babel-helper-get-function-arity "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-get-function-arity@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-hoist-variables@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-optimise-call-expression@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-regex@^6.24.1:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72"
- dependencies:
- babel-runtime "^6.26.0"
- babel-types "^6.26.0"
- lodash "^4.17.4"
-
-babel-helper-remap-async-to-generator@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
- dependencies:
- babel-helper-function-name "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-replace-supers@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
- dependencies:
- babel-helper-optimise-call-expression "^6.24.1"
- babel-messages "^6.23.0"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helpers@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
- dependencies:
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-messages@^6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-check-es2015-constants@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-external-helpers@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz#2285f48b02bd5dede85175caf8c62e86adccefa1"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-syntax-async-functions@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
-
-babel-plugin-syntax-exponentiation-operator@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
-
-babel-plugin-syntax-trailing-function-commas@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
-
-babel-plugin-transform-async-to-generator@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
- dependencies:
- babel-helper-remap-async-to-generator "^6.24.1"
- babel-plugin-syntax-async-functions "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-arrow-functions@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-block-scoping@^6.24.1:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"
- dependencies:
- babel-runtime "^6.26.0"
- babel-template "^6.26.0"
- babel-traverse "^6.26.0"
- babel-types "^6.26.0"
- lodash "^4.17.4"
-
-babel-plugin-transform-es2015-classes@^6.24.1, babel-plugin-transform-es2015-classes@^6.9.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
- dependencies:
- babel-helper-define-map "^6.24.1"
- babel-helper-function-name "^6.24.1"
- babel-helper-optimise-call-expression "^6.24.1"
- babel-helper-replace-supers "^6.24.1"
- babel-messages "^6.23.0"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-computed-properties@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
- dependencies:
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-destructuring@^6.22.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-duplicate-keys@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-for-of@^6.22.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-function-name@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
- dependencies:
- babel-helper-function-name "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-literals@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-modules-amd@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
- dependencies:
- babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a"
- dependencies:
- babel-plugin-transform-strict-mode "^6.24.1"
- babel-runtime "^6.26.0"
- babel-template "^6.26.0"
- babel-types "^6.26.0"
-
-babel-plugin-transform-es2015-modules-systemjs@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
- dependencies:
- babel-helper-hoist-variables "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-modules-umd@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
- dependencies:
- babel-plugin-transform-es2015-modules-amd "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-object-super@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
- dependencies:
- babel-helper-replace-supers "^6.24.1"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-parameters@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
- dependencies:
- babel-helper-call-delegate "^6.24.1"
- babel-helper-get-function-arity "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-shorthand-properties@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-spread@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-sticky-regex@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
- dependencies:
- babel-helper-regex "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-template-literals@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-typeof-symbol@^6.22.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-unicode-regex@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
- dependencies:
- babel-helper-regex "^6.24.1"
- babel-runtime "^6.22.0"
- regexpu-core "^2.0.0"
-
-babel-plugin-transform-exponentiation-operator@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
- dependencies:
- babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
- babel-plugin-syntax-exponentiation-operator "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-regenerator@^6.24.1:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"
- dependencies:
- regenerator-transform "^0.10.0"
-
-babel-plugin-transform-strict-mode@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-polyfill@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153"
- dependencies:
- babel-runtime "^6.26.0"
- core-js "^2.5.0"
- regenerator-runtime "^0.10.5"
-
-babel-preset-es2015@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939"
- dependencies:
- babel-plugin-check-es2015-constants "^6.22.0"
- babel-plugin-transform-es2015-arrow-functions "^6.22.0"
- babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
- babel-plugin-transform-es2015-block-scoping "^6.24.1"
- babel-plugin-transform-es2015-classes "^6.24.1"
- babel-plugin-transform-es2015-computed-properties "^6.24.1"
- babel-plugin-transform-es2015-destructuring "^6.22.0"
- babel-plugin-transform-es2015-duplicate-keys "^6.24.1"
- babel-plugin-transform-es2015-for-of "^6.22.0"
- babel-plugin-transform-es2015-function-name "^6.24.1"
- babel-plugin-transform-es2015-literals "^6.22.0"
- babel-plugin-transform-es2015-modules-amd "^6.24.1"
- babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
- babel-plugin-transform-es2015-modules-systemjs "^6.24.1"
- babel-plugin-transform-es2015-modules-umd "^6.24.1"
- babel-plugin-transform-es2015-object-super "^6.24.1"
- babel-plugin-transform-es2015-parameters "^6.24.1"
- babel-plugin-transform-es2015-shorthand-properties "^6.24.1"
- babel-plugin-transform-es2015-spread "^6.22.0"
- babel-plugin-transform-es2015-sticky-regex "^6.24.1"
- babel-plugin-transform-es2015-template-literals "^6.22.0"
- babel-plugin-transform-es2015-typeof-symbol "^6.22.0"
- babel-plugin-transform-es2015-unicode-regex "^6.24.1"
- babel-plugin-transform-regenerator "^6.24.1"
-
-babel-preset-es2016@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-preset-es2016/-/babel-preset-es2016-6.24.1.tgz#f900bf93e2ebc0d276df9b8ab59724ebfd959f8b"
- dependencies:
- babel-plugin-transform-exponentiation-operator "^6.24.1"
-
-babel-preset-es2017@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz#597beadfb9f7f208bcfd8a12e9b2b29b8b2f14d1"
- dependencies:
- babel-plugin-syntax-trailing-function-commas "^6.22.0"
- babel-plugin-transform-async-to-generator "^6.24.1"
-
-babel-preset-latest@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-preset-latest/-/babel-preset-latest-6.24.1.tgz#677de069154a7485c2d25c577c02f624b85b85e8"
- dependencies:
- babel-preset-es2015 "^6.24.1"
- babel-preset-es2016 "^6.24.1"
- babel-preset-es2017 "^6.24.1"
-
-babel-register@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
- dependencies:
- babel-core "^6.26.0"
- babel-runtime "^6.26.0"
- core-js "^2.5.0"
- home-or-tmp "^2.0.0"
- lodash "^4.17.4"
- mkdirp "^0.5.1"
- source-map-support "^0.4.15"
-
-babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
- dependencies:
- core-js "^2.4.0"
- regenerator-runtime "^0.11.0"
-
-babel-template@^6.24.1, babel-template@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
- dependencies:
- babel-runtime "^6.26.0"
- babel-traverse "^6.26.0"
- babel-types "^6.26.0"
- babylon "^6.18.0"
- lodash "^4.17.4"
-
-babel-traverse@^6.24.1, babel-traverse@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
- dependencies:
- babel-code-frame "^6.26.0"
- babel-messages "^6.23.0"
- babel-runtime "^6.26.0"
- babel-types "^6.26.0"
- babylon "^6.18.0"
- debug "^2.6.8"
- globals "^9.18.0"
- invariant "^2.2.2"
- lodash "^4.17.4"
-
-babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
- dependencies:
- babel-runtime "^6.26.0"
- esutils "^2.0.2"
- lodash "^4.17.4"
- to-fast-properties "^1.0.3"
-
-babylon@^6.18.0:
- version "6.18.0"
- resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
-
-balanced-match@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
-
-bcrypt-pbkdf@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
- dependencies:
- tweetnacl "^0.14.3"
-
-binary-extensions@^1.0.0:
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
-
-block-stream@*:
- version "0.0.9"
- resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
- dependencies:
- inherits "~2.0.0"
-
-boom@2.x.x:
- version "2.10.1"
- resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
- dependencies:
- hoek "2.x.x"
-
-brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
-braces@^1.8.2:
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
- dependencies:
- expand-range "^1.8.1"
- preserve "^0.2.0"
- repeat-element "^1.1.2"
-
-browser-resolve@^1.11.0:
- version "1.11.2"
- resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
- dependencies:
- resolve "1.1.7"
-
-browser-stdout@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
-
-buffer-crc32@^0.2.5:
- version "0.2.13"
- resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
-
-builtin-modules@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
-
-camelcase@^1.0.2:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
-
-caseless@~0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
-
-center-align@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
- dependencies:
- align-text "^0.1.3"
- lazy-cache "^1.0.3"
-
-chalk@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
- dependencies:
- ansi-styles "^2.2.1"
- escape-string-regexp "^1.0.2"
- has-ansi "^2.0.0"
- strip-ansi "^3.0.0"
- supports-color "^2.0.0"
-
-chokidar@^1.6.1:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
- dependencies:
- anymatch "^1.3.0"
- async-each "^1.0.0"
- glob-parent "^2.0.0"
- inherits "^2.0.1"
- is-binary-path "^1.0.0"
- is-glob "^2.0.0"
- path-is-absolute "^1.0.0"
- readdirp "^2.0.0"
- optionalDependencies:
- fsevents "^1.0.0"
-
-cliui@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
- dependencies:
- center-align "^0.1.1"
- right-align "^0.1.1"
- wordwrap "0.0.2"
-
-co@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
-
-code-point-at@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
-
-combined-stream@^1.0.5, combined-stream@~1.0.5:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
- dependencies:
- delayed-stream "~1.0.0"
-
-commander@2.9.0:
- version "2.9.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
- dependencies:
- graceful-readlink ">= 1.0.0"
-
-commander@^2.11.0:
- version "2.15.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
-
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-
-console-control-strings@^1.0.0, console-control-strings@~1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
-
-convert-source-map@^1.5.0:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
-
-core-js@^2.4.0, core-js@^2.5.0:
- version "2.5.4"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.4.tgz#f2c8bf181f2a80b92f360121429ce63a2f0aeae0"
-
-core-util-is@1.0.2, core-util-is@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-
-cryptiles@2.x.x:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
- dependencies:
- boom "2.x.x"
-
-dashdash@^1.12.0:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
- dependencies:
- assert-plus "^1.0.0"
-
-debug@2.6.8:
- version "2.6.8"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
- dependencies:
- ms "2.0.0"
-
-debug@^2.2.0, debug@^2.6.8:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- dependencies:
- ms "2.0.0"
-
-decamelize@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-
-deep-extend@~0.4.0:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
-
-delayed-stream@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
-
-delegates@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
-
-detect-indent@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
- dependencies:
- repeating "^2.0.0"
-
-detect-libc@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
-
-diff@3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
-
-ecc-jsbn@~0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
- dependencies:
- jsbn "~0.1.0"
-
-es6-promise@^3.1.2:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613"
-
-escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-
-estree-walker@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e"
-
-esutils@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
-
-expand-brackets@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
- dependencies:
- is-posix-bracket "^0.1.0"
-
-expand-range@^1.8.1:
- version "1.8.2"
- resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
- dependencies:
- fill-range "^2.1.0"
-
-extend@~3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
-
-extglob@^0.3.1:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
- dependencies:
- is-extglob "^1.0.0"
-
-extsprintf@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
-
-extsprintf@^1.2.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
-
-filename-regex@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
-
-fill-range@^2.1.0:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
- dependencies:
- is-number "^2.1.0"
- isobject "^2.0.0"
- randomatic "^1.1.3"
- repeat-element "^1.1.2"
- repeat-string "^1.5.2"
-
-for-in@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
-
-for-own@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
- dependencies:
- for-in "^1.0.1"
-
-forever-agent@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
-
-form-data@~2.1.1:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.5"
- mime-types "^2.1.12"
-
-fs-readdir-recursive@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27"
-
-fs.realpath@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-
-fsevents@^1.0.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
- dependencies:
- nan "^2.3.0"
- node-pre-gyp "^0.6.39"
-
-fstream-ignore@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
- dependencies:
- fstream "^1.0.0"
- inherits "2"
- minimatch "^3.0.0"
-
-fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
- dependencies:
- graceful-fs "^4.1.2"
- inherits "~2.0.0"
- mkdirp ">=0.5 0"
- rimraf "2"
-
-gauge@~2.7.3:
- version "2.7.4"
- resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
- dependencies:
- aproba "^1.0.3"
- console-control-strings "^1.0.0"
- has-unicode "^2.0.0"
- object-assign "^4.1.0"
- signal-exit "^3.0.0"
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
- wide-align "^1.1.0"
-
-getpass@^0.1.1:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
- dependencies:
- assert-plus "^1.0.0"
-
-glob-base@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
- dependencies:
- glob-parent "^2.0.0"
- is-glob "^2.0.0"
-
-glob-parent@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
- dependencies:
- is-glob "^2.0.0"
-
-glob@7.1.1:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.2"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-glob@^7.0.5, glob@^7.1.2:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.4"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-globals@^9.18.0:
- version "9.18.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
-
-graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.4:
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
-
-"graceful-readlink@>= 1.0.0":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
-
-growl@1.9.2:
- version "1.9.2"
- resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f"
-
-har-schema@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
-
-har-validator@~4.2.1:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
- dependencies:
- ajv "^4.9.1"
- har-schema "^1.0.5"
-
-has-ansi@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
- dependencies:
- ansi-regex "^2.0.0"
-
-has-flag@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
-
-has-unicode@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
-
-hawk@3.1.3, hawk@~3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
- dependencies:
- boom "2.x.x"
- cryptiles "2.x.x"
- hoek "2.x.x"
- sntp "1.x.x"
-
-he@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
-
-hoek@2.x.x:
- version "2.16.3"
- resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
-
-home-or-tmp@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
- dependencies:
- os-homedir "^1.0.0"
- os-tmpdir "^1.0.1"
-
-http-signature@~1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
- dependencies:
- assert-plus "^0.2.0"
- jsprim "^1.2.2"
- sshpk "^1.7.0"
-
-inflight@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- dependencies:
- once "^1.3.0"
- wrappy "1"
-
-inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-
-ini@~1.3.0:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
-
-invariant@^2.2.2:
- version "2.2.4"
- resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
- dependencies:
- loose-envify "^1.0.0"
-
-is-binary-path@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
- dependencies:
- binary-extensions "^1.0.0"
-
-is-buffer@^1.1.5:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
-
-is-dotfile@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
-
-is-equal-shallow@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
- dependencies:
- is-primitive "^2.0.0"
-
-is-extendable@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
-
-is-extglob@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
-
-is-finite@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
- dependencies:
- number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
- dependencies:
- number-is-nan "^1.0.0"
-
-is-glob@^2.0.0, is-glob@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
- dependencies:
- is-extglob "^1.0.0"
-
-is-number@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
- dependencies:
- kind-of "^3.0.2"
-
-is-number@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
- dependencies:
- kind-of "^3.0.2"
-
-is-posix-bracket@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
-
-is-primitive@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
-
-is-typedarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
-
-isarray@1.0.0, isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-
-isobject@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
- dependencies:
- isarray "1.0.0"
-
-isstream@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
-
-js-tokens@^3.0.0, js-tokens@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
-
-jsbn@~0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
-
-jsesc@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
-
-jsesc@~0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
-
-json-schema@0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
-
-json-stable-stringify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
- dependencies:
- jsonify "~0.0.0"
-
-json-stringify-safe@~5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
-
-json3@3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
-
-json5@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
-
-jsonify@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
-
-jsprim@^1.2.2:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
- dependencies:
- assert-plus "1.0.0"
- extsprintf "1.3.0"
- json-schema "0.2.3"
- verror "1.10.0"
-
-kind-of@^3.0.2:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
- dependencies:
- is-buffer "^1.1.5"
-
-lazy-cache@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
-
-lodash._baseassign@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
- dependencies:
- lodash._basecopy "^3.0.0"
- lodash.keys "^3.0.0"
-
-lodash._basecopy@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
-
-lodash._basecreate@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821"
-
-lodash._getnative@^3.0.0:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
-
-lodash._isiterateecall@^3.0.0:
- version "3.0.9"
- resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
-
-lodash.create@3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7"
- dependencies:
- lodash._baseassign "^3.0.0"
- lodash._basecreate "^3.0.0"
- lodash._isiterateecall "^3.0.0"
-
-lodash.isarguments@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
-
-lodash.isarray@^3.0.0:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
-
-lodash.keys@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
- dependencies:
- lodash._getnative "^3.0.0"
- lodash.isarguments "^3.0.0"
- lodash.isarray "^3.0.0"
-
-lodash@^4.17.4:
- version "4.17.5"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511"
-
-longest@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
-
-loose-envify@^1.0.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
- dependencies:
- js-tokens "^3.0.0"
-
-micromatch@^2.1.5:
- version "2.3.11"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
- dependencies:
- arr-diff "^2.0.0"
- array-unique "^0.2.1"
- braces "^1.8.2"
- expand-brackets "^0.1.4"
- extglob "^0.3.1"
- filename-regex "^2.0.0"
- is-extglob "^1.0.0"
- is-glob "^2.0.1"
- kind-of "^3.0.2"
- normalize-path "^2.0.1"
- object.omit "^2.0.0"
- parse-glob "^3.0.4"
- regex-cache "^0.4.2"
-
-mime-db@~1.33.0:
- version "1.33.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
-
-mime-types@^2.1.12, mime-types@~2.1.7:
- version "2.1.18"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
- dependencies:
- mime-db "~1.33.0"
-
-minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
- dependencies:
- brace-expansion "^1.1.7"
-
-minimist@0.0.8:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
-
-minimist@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
-
-mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
- dependencies:
- minimist "0.0.8"
-
-mocha-qunit-ui@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/mocha-qunit-ui/-/mocha-qunit-ui-0.1.3.tgz#e3e1ff1dac33222b10cef681efd7f82664141ea9"
-
-mocha@^3.2.0:
- version "3.5.3"
- resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d"
- dependencies:
- browser-stdout "1.3.0"
- commander "2.9.0"
- debug "2.6.8"
- diff "3.2.0"
- escape-string-regexp "1.0.5"
- glob "7.1.1"
- growl "1.9.2"
- he "1.1.1"
- json3 "3.3.2"
- lodash.create "3.1.1"
- mkdirp "0.5.1"
- supports-color "3.1.2"
-
-ms@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
-
-nan@^2.3.0:
- version "2.10.0"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
-
-node-pre-gyp@^0.6.39:
- version "0.6.39"
- resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
- dependencies:
- detect-libc "^1.0.2"
- hawk "3.1.3"
- mkdirp "^0.5.1"
- nopt "^4.0.1"
- npmlog "^4.0.2"
- rc "^1.1.7"
- request "2.81.0"
- rimraf "^2.6.1"
- semver "^5.3.0"
- tar "^2.2.1"
- tar-pack "^3.4.0"
-
-nopt@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
- dependencies:
- abbrev "1"
- osenv "^0.1.4"
-
-normalize-path@^2.0.0, normalize-path@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
- dependencies:
- remove-trailing-separator "^1.0.1"
-
-npmlog@^4.0.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
- dependencies:
- are-we-there-yet "~1.1.2"
- console-control-strings "~1.1.0"
- gauge "~2.7.3"
- set-blocking "~2.0.0"
-
-number-is-nan@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
-
-oauth-sign@~0.8.1:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
-
-object-assign@^4.1.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-
-object.omit@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
- dependencies:
- for-own "^0.1.4"
- is-extendable "^0.1.1"
-
-once@^1.3.0, once@^1.3.3:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- dependencies:
- wrappy "1"
-
-os-homedir@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
-
-os-tmpdir@^1.0.0, os-tmpdir@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
-
-osenv@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
- dependencies:
- os-homedir "^1.0.0"
- os-tmpdir "^1.0.0"
-
-output-file-sync@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
- dependencies:
- graceful-fs "^4.1.4"
- mkdirp "^0.5.1"
- object-assign "^4.1.0"
-
-parse-glob@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
- dependencies:
- glob-base "^0.3.0"
- is-dotfile "^1.0.0"
- is-extglob "^1.0.0"
- is-glob "^2.0.0"
-
-path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-
-path-parse@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
-
-performance-now@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
-
-preserve@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
-
-private@^0.1.6, private@^0.1.7:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
-
-process-nextick-args@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
-
-punycode@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
-
-punycode@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"
-
-qs@~6.4.0:
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
-
-randomatic@^1.1.3:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
- dependencies:
- is-number "^3.0.0"
- kind-of "^4.0.0"
-
-rc@^1.1.7:
- version "1.2.6"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.6.tgz#eb18989c6d4f4f162c399f79ddd29f3835568092"
- dependencies:
- deep-extend "~0.4.0"
- ini "~1.3.0"
- minimist "^1.2.0"
- strip-json-comments "~2.0.1"
-
-readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4:
- version "2.3.5"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d"
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.3"
- isarray "~1.0.0"
- process-nextick-args "~2.0.0"
- safe-buffer "~5.1.1"
- string_decoder "~1.0.3"
- util-deprecate "~1.0.1"
-
-readdirp@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
- dependencies:
- graceful-fs "^4.1.2"
- minimatch "^3.0.2"
- readable-stream "^2.0.2"
- set-immediate-shim "^1.0.1"
-
-regenerate@^1.2.1:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f"
-
-regenerator-runtime@^0.10.5:
- version "0.10.5"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
-
-regenerator-runtime@^0.11.0:
- version "0.11.1"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
-
-regenerator-transform@^0.10.0:
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"
- dependencies:
- babel-runtime "^6.18.0"
- babel-types "^6.19.0"
- private "^0.1.6"
-
-regex-cache@^0.4.2:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
- dependencies:
- is-equal-shallow "^0.1.3"
-
-regexpu-core@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
- dependencies:
- regenerate "^1.2.1"
- regjsgen "^0.2.0"
- regjsparser "^0.1.4"
-
-regjsgen@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
-
-regjsparser@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
- dependencies:
- jsesc "~0.5.0"
-
-remove-trailing-separator@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
-
-repeat-element@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
-
-repeat-string@^1.5.2:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
-
-repeating@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
- dependencies:
- is-finite "^1.0.0"
-
-request@2.81.0:
- version "2.81.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
- dependencies:
- aws-sign2 "~0.6.0"
- aws4 "^1.2.1"
- caseless "~0.12.0"
- combined-stream "~1.0.5"
- extend "~3.0.0"
- forever-agent "~0.6.1"
- form-data "~2.1.1"
- har-validator "~4.2.1"
- hawk "~3.1.3"
- http-signature "~1.1.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.7"
- oauth-sign "~0.8.1"
- performance-now "^0.2.0"
- qs "~6.4.0"
- safe-buffer "^5.0.1"
- stringstream "~0.0.4"
- tough-cookie "~2.3.0"
- tunnel-agent "^0.6.0"
- uuid "^3.0.0"
-
-resolve@1.1.7:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
-
-resolve@^1.1.6:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.6.0.tgz#0fbd21278b27b4004481c395349e7aba60a9ff5c"
- dependencies:
- path-parse "^1.0.5"
-
-right-align@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
- dependencies:
- align-text "^0.1.1"
-
-rimraf@2, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.6.1:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
- dependencies:
- glob "^7.0.5"
-
-rollup-plugin-babel@^2.7.1:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-2.7.1.tgz#16528197b0f938a1536f44683c7a93d573182f57"
- dependencies:
- babel-core "6"
- babel-plugin-transform-es2015-classes "^6.9.0"
- object-assign "^4.1.0"
- rollup-pluginutils "^1.5.0"
-
-rollup-plugin-node-resolve@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-2.1.1.tgz#cbb783b0d15b02794d58915350b2f0d902b8ddc8"
- dependencies:
- browser-resolve "^1.11.0"
- builtin-modules "^1.1.0"
- resolve "^1.1.6"
-
-rollup-pluginutils@^1.5.0:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408"
- dependencies:
- estree-walker "^0.2.1"
- minimatch "^3.0.2"
-
-rollup@^0.41.6:
- version "0.41.6"
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.41.6.tgz#e0d05497877a398c104d816d2733a718a7a94e2a"
- dependencies:
- source-map-support "^0.4.0"
-
-safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
-
-sander@^0.5.0:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad"
- dependencies:
- es6-promise "^3.1.2"
- graceful-fs "^4.1.3"
- mkdirp "^0.5.1"
- rimraf "^2.5.2"
-
-semver@^5.3.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
-
-set-blocking@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
-
-set-immediate-shim@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
-
-signal-exit@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
-
-slash@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
-
-sntp@1.x.x:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
- dependencies:
- hoek "2.x.x"
-
-sorcery@^0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7"
- dependencies:
- buffer-crc32 "^0.2.5"
- minimist "^1.2.0"
- sander "^0.5.0"
- sourcemap-codec "^1.3.0"
-
-source-map-support@^0.4.0, source-map-support@^0.4.15:
- version "0.4.18"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
- dependencies:
- source-map "^0.5.6"
-
-source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-
-sourcemap-codec@^1.3.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.1.tgz#c8fd92d91889e902a07aee392bdd2c5863958ba2"
-
-sshpk@^1.7.0:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb"
- dependencies:
- asn1 "~0.2.3"
- assert-plus "^1.0.0"
- dashdash "^1.12.0"
- getpass "^0.1.1"
- optionalDependencies:
- bcrypt-pbkdf "^1.0.0"
- ecc-jsbn "~0.1.1"
- jsbn "~0.1.0"
- tweetnacl "~0.14.0"
-
-string-width@^1.0.1, string-width@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- strip-ansi "^3.0.0"
-
-string_decoder@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
- dependencies:
- safe-buffer "~5.1.0"
-
-stringstream@~0.0.4:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
-
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
- dependencies:
- ansi-regex "^2.0.0"
-
-strip-json-comments@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
-
-supports-color@3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
- dependencies:
- has-flag "^1.0.0"
-
-supports-color@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
-
-tar-pack@^3.4.0:
- version "3.4.1"
- resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f"
- dependencies:
- debug "^2.2.0"
- fstream "^1.0.10"
- fstream-ignore "^1.0.5"
- once "^1.3.3"
- readable-stream "^2.1.4"
- rimraf "^2.5.1"
- tar "^2.2.1"
- uid-number "^0.0.6"
-
-tar@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
- dependencies:
- block-stream "*"
- fstream "^1.0.2"
- inherits "2"
-
-to-fast-properties@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
-
-tough-cookie@~2.3.0:
- version "2.3.4"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
- dependencies:
- punycode "^1.4.1"
-
-trim-right@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
-
-tunnel-agent@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
- dependencies:
- safe-buffer "^5.0.1"
-
-tweetnacl@^0.14.3, tweetnacl@~0.14.0:
- version "0.14.5"
- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
-
-typescript@^2.8.1:
- version "2.8.1"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.1.tgz#6160e4f8f195d5ba81d4876f9c0cc1fbc0820624"
-
-uglify-js@^2.8.14:
- version "2.8.29"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
- dependencies:
- source-map "~0.5.1"
- yargs "~3.10.0"
- optionalDependencies:
- uglify-to-browserify "~1.0.0"
-
-uglify-to-browserify@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
-
-uid-number@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
-
-user-home@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
-
-util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-
-uuid@^3.0.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14"
-
-v8flags@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4"
- dependencies:
- user-home "^1.1.1"
-
-verror@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
- dependencies:
- assert-plus "^1.0.0"
- core-util-is "1.0.2"
- extsprintf "^1.2.0"
-
-wide-align@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
- dependencies:
- string-width "^1.0.2"
-
-window-size@0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
-
-wordwrap@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-
-yargs@~3.10.0:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
- dependencies:
- camelcase "^1.0.2"
- cliui "^2.1.0"
- decamelize "^1.0.0"
- window-size "0.1.0"
diff --git a/assets/node_modules/util-deprecate/History.md b/assets/node_modules/util-deprecate/History.md
deleted file mode 100644
index acc8675..0000000
--- a/assets/node_modules/util-deprecate/History.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-1.0.2 / 2015-10-07
-==================
-
- * use try/catch when checking `localStorage` (#3, @kumavis)
-
-1.0.1 / 2014-11-25
-==================
-
- * browser: use `console.warn()` for deprecation calls
- * browser: more jsdocs
-
-1.0.0 / 2014-04-30
-==================
-
- * initial commit
diff --git a/assets/node_modules/util-deprecate/LICENSE b/assets/node_modules/util-deprecate/LICENSE
deleted file mode 100644
index 6a60e8c..0000000
--- a/assets/node_modules/util-deprecate/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2014 Nathan Rajlich <nathan@tootallnate.net>
-
-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/assets/node_modules/util-deprecate/README.md b/assets/node_modules/util-deprecate/README.md
deleted file mode 100644
index 75622fa..0000000
--- a/assets/node_modules/util-deprecate/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-util-deprecate
-==============
-### The Node.js `util.deprecate()` function with browser support
-
-In Node.js, this module simply re-exports the `util.deprecate()` function.
-
-In the web browser (i.e. via browserify), a browser-specific implementation
-of the `util.deprecate()` function is used.
-
-
-## API
-
-A `deprecate()` function is the only thing exposed by this module.
-
-``` javascript
-// setup:
-exports.foo = deprecate(foo, 'foo() is deprecated, use bar() instead');
-
-
-// users see:
-foo();
-// foo() is deprecated, use bar() instead
-foo();
-foo();
-```
-
-
-## License
-
-(The MIT License)
-
-Copyright (c) 2014 Nathan Rajlich <nathan@tootallnate.net>
-
-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/assets/node_modules/util-deprecate/browser.js b/assets/node_modules/util-deprecate/browser.js
deleted file mode 100644
index 549ae2f..0000000
--- a/assets/node_modules/util-deprecate/browser.js
+++ /dev/null
@@ -1,67 +0,0 @@
-
-/**
- * Module exports.
- */
-
-module.exports = deprecate;
-
-/**
- * Mark that a method should not be used.
- * Returns a modified function which warns once by default.
- *
- * If `localStorage.noDeprecation = true` is set, then it is a no-op.
- *
- * If `localStorage.throwDeprecation = true` is set, then deprecated functions
- * will throw an Error when invoked.
- *
- * If `localStorage.traceDeprecation = true` is set, then deprecated functions
- * will invoke `console.trace()` instead of `console.error()`.
- *
- * @param {Function} fn - the function to deprecate
- * @param {String} msg - the string to print to the console when `fn` is invoked
- * @returns {Function} a new "deprecated" version of `fn`
- * @api public
- */
-
-function deprecate (fn, msg) {
- if (config('noDeprecation')) {
- return fn;
- }
-
- var warned = false;
- function deprecated() {
- if (!warned) {
- if (config('throwDeprecation')) {
- throw new Error(msg);
- } else if (config('traceDeprecation')) {
- console.trace(msg);
- } else {
- console.warn(msg);
- }
- warned = true;
- }
- return fn.apply(this, arguments);
- }
-
- return deprecated;
-}
-
-/**
- * Checks `localStorage` for boolean values for the given `name`.
- *
- * @param {String} name
- * @returns {Boolean}
- * @api private
- */
-
-function config (name) {
- // accessing global.localStorage can trigger a DOMException in sandboxed iframes
- try {
- if (!global.localStorage) return false;
- } catch (_) {
- return false;
- }
- var val = global.localStorage[name];
- if (null == val) return false;
- return String(val).toLowerCase() === 'true';
-}
diff --git a/assets/node_modules/util-deprecate/node.js b/assets/node_modules/util-deprecate/node.js
deleted file mode 100644
index 5e6fcff..0000000
--- a/assets/node_modules/util-deprecate/node.js
+++ /dev/null
@@ -1,6 +0,0 @@
-
-/**
- * For Node.js, simply re-export the core `util.deprecate` function.
- */
-
-module.exports = require('util').deprecate;
diff --git a/assets/node_modules/util-deprecate/package.json b/assets/node_modules/util-deprecate/package.json
deleted file mode 100644
index 2e79f89..0000000
--- a/assets/node_modules/util-deprecate/package.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "util-deprecate",
- "version": "1.0.2",
- "description": "The Node.js `util.deprecate()` function with browser support",
- "main": "node.js",
- "browser": "browser.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/TooTallNate/util-deprecate.git"
- },
- "keywords": [
- "util",
- "deprecate",
- "browserify",
- "browser",
- "node"
- ],
- "author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/TooTallNate/util-deprecate/issues"
- },
- "homepage": "https://github.com/TooTallNate/util-deprecate"
-}
diff --git a/assets/node_modules/v8-compile-cache/CHANGELOG.md b/assets/node_modules/v8-compile-cache/CHANGELOG.md
deleted file mode 100644
index 96ad333..0000000
--- a/assets/node_modules/v8-compile-cache/CHANGELOG.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# `v8-module-cache` Changelog
-
-## 2019-08-04, Version 2.1.0
-
-* Fix Electron by calling the module wrapper with `Buffer` [#10](https://github.com/zertosh/v8-compile-cache/pull/10).
-
-## 2019-05-10, Version 2.0.3
-
-* Add `LICENSE` file [#19](https://github.com/zertosh/v8-compile-cache/pull/19).
-* Add "repository" to `package.json` (see [eea336e](https://github.com/zertosh/v8-compile-cache/commit/eea336eaa8360f9ded9342b8aa928e56ac6a7529)).
-* Support `require.resolve.paths` (added in Node v8.9.0) [#20](https://github.com/zertosh/v8-compile-cache/pull/20)/[#22](https://github.com/zertosh/v8-compile-cache/pull/22).
-
-## 2018-08-06, Version 2.0.2
-
-* Re-publish.
-
-## 2018-08-06, Version 2.0.1
-
-* Support `require.resolve` options (added in Node v8.9.0).
-
-## 2018-04-30, Version 2.0.0
-
-* Use `Buffer.alloc` instead of `new Buffer()`.
-* Drop support for Node 5.x.
-
-## 2018-01-23, Version 1.1.2
-
-* Instead of checking for `process.versions.v8`, check that `script.cachedDataProduced` is `true` (rather than `null`/`undefined`) for support to be considered existent.
-
-## 2018-01-23, Version 1.1.1
-
-* Check for the existence of `process.versions.v8` before attaching hook (see [f8b0388](https://github.com/zertosh/v8-compile-cache/commit/f8b038848be94bc2c905880dd50447c73393f364)).
-
-## 2017-03-27, Version 1.1.0
-
-* Safer cache directory creation (see [bcb3b12](https://github.com/zertosh/v8-compile-cache/commit/bcb3b12c819ab0927ec4408e70f612a6d50a9617)).
- - The cache is now suffixed with the user's uid on POSIX systems (i.e. `/path/to/tmp/v8-compile-cache-1234`).
-
-## 2017-02-21, Version 1.0.0
-
-* Initial release.
diff --git a/assets/node_modules/v8-compile-cache/LICENSE b/assets/node_modules/v8-compile-cache/LICENSE
deleted file mode 100644
index b72b670..0000000
--- a/assets/node_modules/v8-compile-cache/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2019 Andres Suarez
-
-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/assets/node_modules/v8-compile-cache/README.md b/assets/node_modules/v8-compile-cache/README.md
deleted file mode 100644
index 9580f69..0000000
--- a/assets/node_modules/v8-compile-cache/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# v8-compile-cache
-
-[![Build Status](https://travis-ci.org/zertosh/v8-compile-cache.svg?branch=master)](https://travis-ci.org/zertosh/v8-compile-cache)
-
-`v8-compile-cache` attaches a `require` hook to use [V8's code cache](https://v8project.blogspot.com/2015/07/code-caching.html) to speed up instantiation time. The "code cache" is the work of parsing and compiling done by V8.
-
-The ability to tap into V8 to produce/consume this cache was introduced in [Node v5.7.0](https://nodejs.org/en/blog/release/v5.7.0/).
-
-## Usage
-
-1. Add the dependency:
-
- ```sh
- $ npm install --save v8-compile-cache
- ```
-
-2. Then, in your entry module add:
-
- ```js
- require('v8-compile-cache');
- ```
-
-**Requiring `v8-compile-cache` in Node <5.7.0 is a noop – but you need at least Node 4.0.0 to support the ES2015 syntax used by `v8-compile-cache`.**
-
-## Options
-
-Set the environment variable `DISABLE_V8_COMPILE_CACHE=1` to disable the cache.
-
-## Internals
-
-The caches are stored in `$TMP/v8-compile-cache/V8_VERSION`, where there are `.BLOB` and `.MAP` files corresponding to the entry module that required `v8-compile-cache`. The cache is _entry module specific_ because it is faster to load the entire code cache into memory at once, than it is to read it from disk on a file-by-file basis.
-
-## Benchmarks
-
-See https://github.com/zertosh/v8-compile-cache/tree/master/bench.
-
-**Load Times:**
-
-| Module | Without Cache | With Cache |
-| ---------------- | -------------:| ----------:|
-| `babel-core` | `218ms` | `185ms` |
-| `yarn` | `153ms` | `113ms` |
-| `yarn` (bundled) | `228ms` | `105ms` |
-
-_^ Includes the overhead of loading the cache itself._
-
-## Acknowledgements
-
-* `FileSystemBlobStore` and `NativeCompileCache` are based on Atom's implementation of their v8 compile cache:
- - https://github.com/atom/atom/blob/b0d7a8a/src/file-system-blob-store.js
- - https://github.com/atom/atom/blob/b0d7a8a/src/native-compile-cache.js
-* `mkdirpSync` is based on:
- - https://github.com/substack/node-mkdirp/blob/f2003bb/index.js#L55-L98
diff --git a/assets/node_modules/v8-compile-cache/package.json b/assets/node_modules/v8-compile-cache/package.json
deleted file mode 100644
index de11522..0000000
--- a/assets/node_modules/v8-compile-cache/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "v8-compile-cache",
- "version": "2.1.0",
- "description": "Require hook for automatic V8 compile cache persistence",
- "main": "v8-compile-cache.js",
- "scripts": {
- "bench": "bench/run.sh",
- "lint": "eslint --max-warnings=0 .",
- "test": "tap test/*-test.js",
- "posttest": "npm run lint"
- },
- "author": "Andres Suarez <zertosh@gmail.com>",
- "repository": {
- "type": "git",
- "url": "https://github.com/zertosh/v8-compile-cache.git"
- },
- "files": [
- "v8-compile-cache.js"
- ],
- "license": "MIT",
- "dependencies": {},
- "devDependencies": {
- "babel-core": "6.23.1",
- "eslint": "^3.15.0",
- "flow-parser": "0.38.0",
- "rimraf": "^2.5.4",
- "rxjs": "5.2.0",
- "semver": "^5.3.0",
- "tap": "^10.1.1",
- "temp": "^0.8.3",
- "yarn": "0.20.3"
- }
-}
diff --git a/assets/node_modules/v8-compile-cache/v8-compile-cache.js b/assets/node_modules/v8-compile-cache/v8-compile-cache.js
deleted file mode 100644
index bd755d6..0000000
--- a/assets/node_modules/v8-compile-cache/v8-compile-cache.js
+++ /dev/null
@@ -1,367 +0,0 @@
-'use strict';
-
-const Module = require('module');
-const crypto = require('crypto');
-const fs = require('fs');
-const path = require('path');
-const vm = require('vm');
-const os = require('os');
-
-const hasOwnProperty = Object.prototype.hasOwnProperty;
-
-//------------------------------------------------------------------------------
-// FileSystemBlobStore
-//------------------------------------------------------------------------------
-
-class FileSystemBlobStore {
- constructor(directory, prefix) {
- const name = prefix ? slashEscape(prefix + '.') : '';
- this._blobFilename = path.join(directory, name + 'BLOB');
- this._mapFilename = path.join(directory, name + 'MAP');
- this._lockFilename = path.join(directory, name + 'LOCK');
- this._directory = directory;
- this._load();
- }
-
- has(key, invalidationKey) {
- if (hasOwnProperty.call(this._memoryBlobs, key)) {
- return this._invalidationKeys[key] === invalidationKey;
- } else if (hasOwnProperty.call(this._storedMap, key)) {
- return this._storedMap[key][0] === invalidationKey;
- }
- return false;
- }
-
- get(key, invalidationKey) {
- if (hasOwnProperty.call(this._memoryBlobs, key)) {
- if (this._invalidationKeys[key] === invalidationKey) {
- return this._memoryBlobs[key];
- }
- } else if (hasOwnProperty.call(this._storedMap, key)) {
- const mapping = this._storedMap[key];
- if (mapping[0] === invalidationKey) {
- return this._storedBlob.slice(mapping[1], mapping[2]);
- }
- }
- }
-
- set(key, invalidationKey, buffer) {
- this._invalidationKeys[key] = invalidationKey;
- this._memoryBlobs[key] = buffer;
- this._dirty = true;
- }
-
- delete(key) {
- if (hasOwnProperty.call(this._memoryBlobs, key)) {
- this._dirty = true;
- delete this._memoryBlobs[key];
- }
- if (hasOwnProperty.call(this._invalidationKeys, key)) {
- this._dirty = true;
- delete this._invalidationKeys[key];
- }
- if (hasOwnProperty.call(this._storedMap, key)) {
- this._dirty = true;
- delete this._storedMap[key];
- }
- }
-
- isDirty() {
- return this._dirty;
- }
-
- save() {
- const dump = this._getDump();
- const blobToStore = Buffer.concat(dump[0]);
- const mapToStore = JSON.stringify(dump[1]);
-
- try {
- mkdirpSync(this._directory);
- fs.writeFileSync(this._lockFilename, 'LOCK', {flag: 'wx'});
- } catch (error) {
- // Swallow the exception if we fail to acquire the lock.
- return false;
- }
-
- try {
- fs.writeFileSync(this._blobFilename, blobToStore);
- fs.writeFileSync(this._mapFilename, mapToStore);
- } catch (error) {
- throw error;
- } finally {
- fs.unlinkSync(this._lockFilename);
- }
-
- return true;
- }
-
- _load() {
- try {
- this._storedBlob = fs.readFileSync(this._blobFilename);
- this._storedMap = JSON.parse(fs.readFileSync(this._mapFilename));
- } catch (e) {
- this._storedBlob = Buffer.alloc(0);
- this._storedMap = {};
- }
- this._dirty = false;
- this._memoryBlobs = {};
- this._invalidationKeys = {};
- }
-
- _getDump() {
- const buffers = [];
- const newMap = {};
- let offset = 0;
-
- function push(key, invalidationKey, buffer) {
- buffers.push(buffer);
- newMap[key] = [invalidationKey, offset, offset + buffer.length];
- offset += buffer.length;
- }
-
- for (const key of Object.keys(this._memoryBlobs)) {
- const buffer = this._memoryBlobs[key];
- const invalidationKey = this._invalidationKeys[key];
- push(key, invalidationKey, buffer);
- }
-
- for (const key of Object.keys(this._storedMap)) {
- if (hasOwnProperty.call(newMap, key)) continue;
- const mapping = this._storedMap[key];
- const buffer = this._storedBlob.slice(mapping[1], mapping[2]);
- push(key, mapping[0], buffer);
- }
-
- return [buffers, newMap];
- }
-}
-
-//------------------------------------------------------------------------------
-// NativeCompileCache
-//------------------------------------------------------------------------------
-
-class NativeCompileCache {
- constructor() {
- this._cacheStore = null;
- this._previousModuleCompile = null;
- }
-
- setCacheStore(cacheStore) {
- this._cacheStore = cacheStore;
- }
-
- install() {
- const self = this;
- const hasRequireResolvePaths = typeof require.resolve.paths === 'function';
- this._previousModuleCompile = Module.prototype._compile;
- Module.prototype._compile = function(content, filename) {
- const mod = this;
-
- function require(id) {
- return mod.require(id);
- }
-
- // https://github.com/nodejs/node/blob/v10.15.3/lib/internal/modules/cjs/helpers.js#L28
- function resolve(request, options) {
- return Module._resolveFilename(request, mod, false, options);
- }
- require.resolve = resolve;
-
- // https://github.com/nodejs/node/blob/v10.15.3/lib/internal/modules/cjs/helpers.js#L37
- // resolve.resolve.paths was added in v8.9.0
- if (hasRequireResolvePaths) {
- resolve.paths = function paths(request) {
- return Module._resolveLookupPaths(request, mod, true);
- };
- }
-
- require.main = process.mainModule;
-
- // Enable support to add extra extension types
- require.extensions = Module._extensions;
- require.cache = Module._cache;
-
- const dirname = path.dirname(filename);
-
- const compiledWrapper = self._moduleCompile(filename, content);
-
- // We skip the debugger setup because by the time we run, node has already
- // done that itself.
-
- // `Buffer` is included for Electron.
- // See https://github.com/zertosh/v8-compile-cache/pull/10#issuecomment-518042543
- const args = [mod.exports, require, mod, filename, dirname, process, global, Buffer];
- return compiledWrapper.apply(mod.exports, args);
- };
- }
-
- uninstall() {
- Module.prototype._compile = this._previousModuleCompile;
- }
-
- _moduleCompile(filename, content) {
- // https://github.com/nodejs/node/blob/v7.5.0/lib/module.js#L511
-
- // Remove shebang
- var contLen = content.length;
- if (contLen >= 2) {
- if (content.charCodeAt(0) === 35/*#*/ &&
- content.charCodeAt(1) === 33/*!*/) {
- if (contLen === 2) {
- // Exact match
- content = '';
- } else {
- // Find end of shebang line and slice it off
- var i = 2;
- for (; i < contLen; ++i) {
- var code = content.charCodeAt(i);
- if (code === 10/*\n*/ || code === 13/*\r*/) break;
- }
- if (i === contLen) {
- content = '';
- } else {
- // Note that this actually includes the newline character(s) in the
- // new output. This duplicates the behavior of the regular
- // expression that was previously used to replace the shebang line
- content = content.slice(i);
- }
- }
- }
- }
-
- // create wrapper function
- var wrapper = Module.wrap(content);
-
- var invalidationKey = crypto
- .createHash('sha1')
- .update(content, 'utf8')
- .digest('hex');
-
- var buffer = this._cacheStore.get(filename, invalidationKey);
-
- var script = new vm.Script(wrapper, {
- filename: filename,
- lineOffset: 0,
- displayErrors: true,
- cachedData: buffer,
- produceCachedData: true,
- });
-
- if (script.cachedDataProduced) {
- this._cacheStore.set(filename, invalidationKey, script.cachedData);
- } else if (script.cachedDataRejected) {
- this._cacheStore.delete(filename);
- }
-
- var compiledWrapper = script.runInThisContext({
- filename: filename,
- lineOffset: 0,
- columnOffset: 0,
- displayErrors: true,
- });
-
- return compiledWrapper;
- }
-}
-
-//------------------------------------------------------------------------------
-// utilities
-//
-// https://github.com/substack/node-mkdirp/blob/f2003bb/index.js#L55-L98
-// https://github.com/zertosh/slash-escape/blob/e7ebb99/slash-escape.js
-//------------------------------------------------------------------------------
-
-function mkdirpSync(p_) {
- _mkdirpSync(path.resolve(p_), parseInt('0777', 8) & ~process.umask());
-}
-
-function _mkdirpSync(p, mode) {
- try {
- fs.mkdirSync(p, mode);
- } catch (err0) {
- if (err0.code === 'ENOENT') {
- _mkdirpSync(path.dirname(p));
- _mkdirpSync(p);
- } else {
- try {
- const stat = fs.statSync(p);
- if (!stat.isDirectory()) { throw err0; }
- } catch (err1) {
- throw err0;
- }
- }
- }
-}
-
-function slashEscape(str) {
- const ESCAPE_LOOKUP = {
- '\\': 'zB',
- ':': 'zC',
- '/': 'zS',
- '\x00': 'z0',
- 'z': 'zZ',
- };
- return str.replace(/[\\:\/\x00z]/g, match => (ESCAPE_LOOKUP[match]));
-}
-
-function supportsCachedData() {
- const script = new vm.Script('""', {produceCachedData: true});
- // chakracore, as of v1.7.1.0, returns `false`.
- return script.cachedDataProduced === true;
-}
-
-function getCacheDir() {
- // Avoid cache ownership issues on POSIX systems.
- const dirname = typeof process.getuid === 'function'
- ? 'v8-compile-cache-' + process.getuid()
- : 'v8-compile-cache';
- const version = typeof process.versions.v8 === 'string'
- ? process.versions.v8
- : typeof process.versions.chakracore === 'string'
- ? 'chakracore-' + process.versions.chakracore
- : 'node-' + process.version;
- const cacheDir = path.join(os.tmpdir(), dirname, version);
- return cacheDir;
-}
-
-function getParentName() {
- // `module.parent.filename` is undefined or null when:
- // * node -e 'require("v8-compile-cache")'
- // * node -r 'v8-compile-cache'
- // * Or, requiring from the REPL.
- const parentName = module.parent && typeof module.parent.filename === 'string'
- ? module.parent.filename
- : process.cwd();
- return parentName;
-}
-
-//------------------------------------------------------------------------------
-// main
-//------------------------------------------------------------------------------
-
-if (!process.env.DISABLE_V8_COMPILE_CACHE && supportsCachedData()) {
- const cacheDir = getCacheDir();
- const prefix = getParentName();
- const blobStore = new FileSystemBlobStore(cacheDir, prefix);
-
- const nativeCompileCache = new NativeCompileCache();
- nativeCompileCache.setCacheStore(blobStore);
- nativeCompileCache.install();
-
- process.once('exit', code => {
- if (blobStore.isDirty()) {
- blobStore.save();
- }
- nativeCompileCache.uninstall();
- });
-}
-
-module.exports.__TEST__ = {
- FileSystemBlobStore,
- NativeCompileCache,
- mkdirpSync,
- slashEscape,
- supportsCachedData,
- getCacheDir,
- getParentName,
-};
diff --git a/assets/node_modules/validate-npm-package-license/LICENSE b/assets/node_modules/validate-npm-package-license/LICENSE
deleted file mode 100644
index d645695..0000000
--- a/assets/node_modules/validate-npm-package-license/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
- 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 [yyyy] [name of copyright owner]
-
- 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/assets/node_modules/validate-npm-package-license/README.md b/assets/node_modules/validate-npm-package-license/README.md
deleted file mode 100644
index 702bc7b..0000000
--- a/assets/node_modules/validate-npm-package-license/README.md
+++ /dev/null
@@ -1,113 +0,0 @@
-validate-npm-package-license
-============================
-
-Give me a string and I'll tell you if it's a valid npm package license string.
-
-```javascript
-var valid = require('validate-npm-package-license');
-```
-
-SPDX license identifiers are valid license strings:
-
-```javascript
-
-var assert = require('assert');
-var validSPDXExpression = {
- validForNewPackages: true,
- validForOldPackages: true,
- spdx: true
-};
-
-assert.deepEqual(valid('MIT'), validSPDXExpression);
-assert.deepEqual(valid('BSD-2-Clause'), validSPDXExpression);
-assert.deepEqual(valid('Apache-2.0'), validSPDXExpression);
-assert.deepEqual(valid('ISC'), validSPDXExpression);
-```
-The function will return a warning and suggestion for nearly-correct license identifiers:
-
-```javascript
-assert.deepEqual(
- valid('Apache 2.0'),
- {
- validForOldPackages: false,
- validForNewPackages: false,
- warnings: [
- 'license should be ' +
- 'a valid SPDX license expression (without "LicenseRef"), ' +
- '"UNLICENSED", or ' +
- '"SEE LICENSE IN <filename>"',
- 'license is similar to the valid expression "Apache-2.0"'
- ]
- }
-);
-```
-
-SPDX expressions are valid, too ...
-
-```javascript
-// Simple SPDX license expression for dual licensing
-assert.deepEqual(
- valid('(GPL-3.0-only OR BSD-2-Clause)'),
- validSPDXExpression
-);
-```
-
-... except if they contain `LicenseRef`:
-
-```javascript
-var warningAboutLicenseRef = {
- validForOldPackages: false,
- validForNewPackages: false,
- spdx: true,
- warnings: [
- 'license should be ' +
- 'a valid SPDX license expression (without "LicenseRef"), ' +
- '"UNLICENSED", or ' +
- '"SEE LICENSE IN <filename>"',
- ]
-};
-
-assert.deepEqual(
- valid('LicenseRef-Made-Up'),
- warningAboutLicenseRef
-);
-
-assert.deepEqual(
- valid('(MIT OR LicenseRef-Made-Up)'),
- warningAboutLicenseRef
-);
-```
-
-If you can't describe your licensing terms with standardized SPDX identifiers, put the terms in a file in the package and point users there:
-
-```javascript
-assert.deepEqual(
- valid('SEE LICENSE IN LICENSE.txt'),
- {
- validForNewPackages: true,
- validForOldPackages: true,
- inFile: 'LICENSE.txt'
- }
-);
-
-assert.deepEqual(
- valid('SEE LICENSE IN license.md'),
- {
- validForNewPackages: true,
- validForOldPackages: true,
- inFile: 'license.md'
- }
-);
-```
-
-If there aren't any licensing terms, use `UNLICENSED`:
-
-```javascript
-var unlicensed = {
- validForNewPackages: true,
- validForOldPackages: true,
- unlicensed: true
-};
-assert.deepEqual(valid('UNLICENSED'), unlicensed);
-assert.deepEqual(valid('UNLICENCED'), unlicensed);
-```
diff --git a/assets/node_modules/validate-npm-package-license/index.js b/assets/node_modules/validate-npm-package-license/index.js
deleted file mode 100644
index 35eaa73..0000000
--- a/assets/node_modules/validate-npm-package-license/index.js
+++ /dev/null
@@ -1,86 +0,0 @@
-var parse = require('spdx-expression-parse');
-var correct = require('spdx-correct');
-
-var genericWarning = (
- 'license should be ' +
- 'a valid SPDX license expression (without "LicenseRef"), ' +
- '"UNLICENSED", or ' +
- '"SEE LICENSE IN <filename>"'
-);
-
-var fileReferenceRE = /^SEE LICEN[CS]E IN (.+)$/;
-
-function startsWith(prefix, string) {
- return string.slice(0, prefix.length) === prefix;
-}
-
-function usesLicenseRef(ast) {
- if (ast.hasOwnProperty('license')) {
- var license = ast.license;
- return (
- startsWith('LicenseRef', license) ||
- startsWith('DocumentRef', license)
- );
- } else {
- return (
- usesLicenseRef(ast.left) ||
- usesLicenseRef(ast.right)
- );
- }
-}
-
-module.exports = function(argument) {
- var ast;
-
- try {
- ast = parse(argument);
- } catch (e) {
- var match
- if (
- argument === 'UNLICENSED' ||
- argument === 'UNLICENCED'
- ) {
- return {
- validForOldPackages: true,
- validForNewPackages: true,
- unlicensed: true
- };
- } else if (match = fileReferenceRE.exec(argument)) {
- return {
- validForOldPackages: true,
- validForNewPackages: true,
- inFile: match[1]
- };
- } else {
- var result = {
- validForOldPackages: false,
- validForNewPackages: false,
- warnings: [genericWarning]
- };
- if (argument.trim().length !== 0) {
- var corrected = correct(argument);
- if (corrected) {
- result.warnings.push(
- 'license is similar to the valid expression "' + corrected + '"'
- );
- }
- }
- return result;
- }
- }
-
- if (usesLicenseRef(ast)) {
- return {
- validForNewPackages: false,
- validForOldPackages: false,
- spdx: true,
- warnings: [genericWarning]
- };
- } else {
- return {
- validForNewPackages: true,
- validForOldPackages: true,
- spdx: true
- };
- }
-};
diff --git a/assets/node_modules/validate-npm-package-license/package.json b/assets/node_modules/validate-npm-package-license/package.json
deleted file mode 100644
index 9e92af4..0000000
--- a/assets/node_modules/validate-npm-package-license/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "validate-npm-package-license",
- "description": "Give me a string and I'll tell you if it's a valid npm package license string",
- "version": "3.0.4",
- "author": "Kyle E. Mitchell <kyle@kemitchell.com> (https://kemitchell.com)",
- "contributors": [
- "Mark Stacey <markjstacey@gmail.com>"
- ],
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- },
- "devDependencies": {
- "defence-cli": "^2.0.1",
- "replace-require-self": "^1.0.0"
- },
- "keywords": [
- "license",
- "npm",
- "package",
- "validation"
- ],
- "license": "Apache-2.0",
- "repository": "kemitchell/validate-npm-package-license.js",
- "scripts": {
- "test": "defence README.md | replace-require-self | node"
- }
-}
diff --git a/assets/node_modules/vfile-location/index.js b/assets/node_modules/vfile-location/index.js
deleted file mode 100644
index 2d7c21c..0000000
--- a/assets/node_modules/vfile-location/index.js
+++ /dev/null
@@ -1,74 +0,0 @@
-'use strict'
-
-module.exports = factory
-
-function factory(file) {
- var contents = indices(String(file))
-
- return {
- toPosition: offsetToPositionFactory(contents),
- toOffset: positionToOffsetFactory(contents)
- }
-}
-
-// Factory to get the line and column-based `position` for `offset` in the bound
-// indices.
-function offsetToPositionFactory(indices) {
- return offsetToPosition
-
- // Get the line and column-based `position` for `offset` in the bound indices.
- function offsetToPosition(offset) {
- var index = -1
- var length = indices.length
-
- if (offset < 0) {
- return {}
- }
-
- while (++index < length) {
- if (indices[index] > offset) {
- return {
- line: index + 1,
- column: offset - (indices[index - 1] || 0) + 1,
- offset: offset
- }
- }
- }
-
- return {}
- }
-}
-
-// Factory to get the `offset` for a line and column-based `position` in the
-// bound indices.
-function positionToOffsetFactory(indices) {
- return positionToOffset
-
- // Get the `offset` for a line and column-based `position` in the bound
- // indices.
- function positionToOffset(position) {
- var line = position && position.line
- var column = position && position.column
-
- if (!isNaN(line) && !isNaN(column) && line - 1 in indices) {
- return (indices[line - 2] || 0) + column - 1 || 0
- }
-
- return -1
- }
-}
-
-// Get indices of line-breaks in `value`.
-function indices(value) {
- var result = []
- var index = value.indexOf('\n')
-
- while (index !== -1) {
- result.push(index + 1)
- index = value.indexOf('\n', index + 1)
- }
-
- result.push(value.length + 1)
-
- return result
-}
diff --git a/assets/node_modules/vfile-location/license b/assets/node_modules/vfile-location/license
deleted file mode 100644
index 8d8660d..0000000
--- a/assets/node_modules/vfile-location/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(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/assets/node_modules/vfile-location/package.json b/assets/node_modules/vfile-location/package.json
deleted file mode 100644
index f66857c..0000000
--- a/assets/node_modules/vfile-location/package.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "name": "vfile-location",
- "version": "2.0.6",
- "description": "Convert between positions (line and column-based) and offsets (range-based) locations in a virtual file",
- "license": "MIT",
- "keywords": [
- "remark",
- "comment",
- "message",
- "marker",
- "control"
- ],
- "repository": "vfile/vfile-location",
- "bugs": "https://github.com/vfile/vfile-location/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"
- ],
- "dependencies": {},
- "devDependencies": {
- "browserify": "^16.0.0",
- "nyc": "^14.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",
- "vfile": "^4.0.0",
- "xo": "^0.25.0"
- },
- "scripts": {
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "build-bundle": "browserify . -s vfileLocation > vfile-location.js",
- "build-mangle": "browserify . -s vfileLocation -p tinyify > vfile-location.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"
- },
- "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": [
- "vfile-location.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/vfile-location/readme.md b/assets/node_modules/vfile-location/readme.md
deleted file mode 100644
index aa126a3..0000000
--- a/assets/node_modules/vfile-location/readme.md
+++ /dev/null
@@ -1,115 +0,0 @@
-# vfile-location
-
-[![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]
-
-Convert between positions (line and column-based) and offsets (range-based)
-locations in a [virtual file][vfile].
-
-## Install
-
-[npm][]:
-
-```sh
-npm install vfile-location
-```
-
-## Usage
-
-```js
-var vfile = require('vfile')
-var vfileLocation = require('vfile-location')
-
-var location = vfileLocation(vfile('foo\nbar\nbaz'))
-
-var offset = location.toOffset({line: 3, column: 3}) // => 10
-location.toPosition(offset) // => {line: 3, column: 3, offset: 10}
-```
-
-## API
-
-### `location = vfileLocation(doc)`
-
-Get transform functions for the given `doc` (`string`) or [`file`][vfile].
-
-Returns an object with [`toOffset`][to-offset] and [`toPosition`][to-position].
-
-### `location.toOffset(position)`
-
-Get the `offset` (`number`) for a line and column-based [`position`][position]
-in the bound file.
-Returns `-1` when given invalid or out of bounds input.
-
-### `location.toPosition(offset)`
-
-Get the line and column-based [`position`][position] for `offset` in the bound
-file.
-
-## Contribute
-
-See [`contributing.md`][contributing] in [`vfile/.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.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/vfile/vfile-location.svg
-
-[build]: https://travis-ci.org/vfile/vfile-location
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/vfile/vfile-location.svg
-
-[coverage]: https://codecov.io/github/vfile/vfile-location
-
-[downloads-badge]: https://img.shields.io/npm/dm/vfile-location.svg
-
-[downloads]: https://www.npmjs.com/package/vfile-location
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/vfile-location.svg
-
-[size]: https://bundlephobia.com/result?p=vfile-location
-
-[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/join%20the%20community-on%20spectrum-7b16ff.svg
-
-[chat]: https://spectrum.chat/unified/vfile
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[contributing]: https://github.com/vfile/.github/blob/master/contributing.md
-
-[support]: https://github.com/vfile/.github/blob/master/support.md
-
-[health]: https://github.com/vfile/.github
-
-[coc]: https://github.com/vfile/.github/blob/master/code-of-conduct.md
-
-[license]: license
-
-[author]: https://wooorm.com
-
-[vfile]: https://github.com/vfile/vfile
-
-[to-offset]: #locationtooffsetposition
-
-[to-position]: #locationtopositionoffset
-
-[position]: https://github.com/syntax-tree/unist#position
diff --git a/assets/node_modules/vfile-message/index.js b/assets/node_modules/vfile-message/index.js
deleted file mode 100644
index c913753..0000000
--- a/assets/node_modules/vfile-message/index.js
+++ /dev/null
@@ -1,94 +0,0 @@
-'use strict'
-
-var stringify = require('unist-util-stringify-position')
-
-module.exports = VMessage
-
-// Inherit from `Error#`.
-function VMessagePrototype() {}
-VMessagePrototype.prototype = Error.prototype
-VMessage.prototype = new VMessagePrototype()
-
-// Message properties.
-var proto = VMessage.prototype
-
-proto.file = ''
-proto.name = ''
-proto.reason = ''
-proto.message = ''
-proto.stack = ''
-proto.fatal = null
-proto.column = null
-proto.line = null
-
-// Construct a new VMessage.
-//
-// Note: We cannot invoke `Error` on the created context, as that adds readonly
-// `line` and `column` attributes on Safari 9, thus throwing and failing the
-// data.
-function VMessage(reason, position, origin) {
- var parts
- var range
- var location
-
- if (typeof position === 'string') {
- origin = position
- position = null
- }
-
- parts = parseOrigin(origin)
- range = stringify(position) || '1:1'
-
- location = {
- start: {line: null, column: null},
- end: {line: null, column: null}
- }
-
- // Node.
- if (position && position.position) {
- position = position.position
- }
-
- if (position) {
- // Position.
- if (position.start) {
- location = position
- position = position.start
- } else {
- // Point.
- location.start = position
- }
- }
-
- if (reason.stack) {
- this.stack = reason.stack
- reason = reason.message
- }
-
- this.message = reason
- this.name = range
- this.reason = reason
- this.line = position ? position.line : null
- this.column = position ? position.column : null
- this.location = location
- this.source = parts[0]
- this.ruleId = parts[1]
-}
-
-function parseOrigin(origin) {
- var result = [null, null]
- var index
-
- if (typeof origin === 'string') {
- index = origin.indexOf(':')
-
- if (index === -1) {
- result[1] = origin
- } else {
- result[0] = origin.slice(0, index)
- result[1] = origin.slice(index + 1)
- }
- }
-
- return result
-}
diff --git a/assets/node_modules/vfile-message/license b/assets/node_modules/vfile-message/license
deleted file mode 100644
index 045ffe0..0000000
--- a/assets/node_modules/vfile-message/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2017 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/assets/node_modules/vfile-message/package.json b/assets/node_modules/vfile-message/package.json
deleted file mode 100644
index 7396bb6..0000000
--- a/assets/node_modules/vfile-message/package.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "name": "vfile-message",
- "version": "1.1.1",
- "description": "Create a virtual message",
- "license": "MIT",
- "keywords": [
- "vfile",
- "virtual",
- "message"
- ],
- "repository": "vfile/vfile-message",
- "bugs": "https://github.com/vfile/vfile-message/issues",
- "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
- "contributors": [
- "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
- ],
- "files": [
- "index.js"
- ],
- "dependencies": {
- "unist-util-stringify-position": "^1.1.1"
- },
- "devDependencies": {
- "browserify": "^16.0.0",
- "nyc": "^13.0.0",
- "prettier": "^1.12.1",
- "remark-cli": "^6.0.0",
- "remark-preset-wooorm": "^4.0.0",
- "tape": "^4.0.0",
- "tinyify": "^2.4.3",
- "xo": "^0.23.0"
- },
- "scripts": {
- "format": "remark . -qfo && prettier --write '**/*.js' && xo --fix",
- "build-bundle": "browserify . -s vfileMessage > vfile-message.js",
- "build-mangle": "browserify . -s vfileMessage -p tinyify > vfile-message.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"
- },
- "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-var": "off",
- "prefer-arrow-callback": "off",
- "object-shorthand": "off"
- },
- "ignores": [
- "vfile-message.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/vfile-message/readme.md b/assets/node_modules/vfile-message/readme.md
deleted file mode 100644
index 0c88353..0000000
--- a/assets/node_modules/vfile-message/readme.md
+++ /dev/null
@@ -1,194 +0,0 @@
-# vfile-message
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Chat][chat-badge]][chat]
-
-Create [vfile][] messages.
-
-## Installation
-
-[npm][]:
-
-```bash
-npm install vfile-message
-```
-
-## Usage
-
-```js
-var VMessage = require('vfile-message')
-
-var message = new VMessage(
- '`braavo` is misspelt; did you mean `bravo`?',
- {line: 1, column: 8},
- 'spell:typo'
-)
-
-console.log(message)
-```
-
-Yields:
-
-```js
-{ [1:8: `braavo` is misspelt; did you mean `bravo`?]
- reason: '`braavo` is misspelt; did you mean `bravo`?',
- fatal: null,
- line: 1,
- column: 8,
- location:
- { start: { line: 1, column: 8 },
- end: { line: null, column: null } },
- source: 'spell',
- ruleId: 'typo' }
-```
-
-## API
-
-### `VMessage(reason[, position][, origin])`
-
-Constructor of a message for `reason` at `position` from `origin`. When
-an error is passed in as `reason`, copies the stack.
-
-##### Parameters
-
-###### `reason`
-
-Reason for message (`string` or `Error`). Uses the stack and message of the
-error if given.
-
-###### `position`
-
-Place at which the message occurred in a file ([`Node`][node],
-[`Position`][position], or [`Point`][point], optional).
-
-###### `origin`
-
-Place in code the message originates from (`string`, optional).
-
-Can either be the [`ruleId`][ruleid] (`'rule'`), or a string with both a
-[`source`][source] and a [`ruleId`][ruleid] delimited with a colon
-(`'source:rule'`).
-
-##### Extends
-
-[`Error`][error].
-
-##### Returns
-
-An instance of itself.
-
-##### Properties
-
-###### `reason`
-
-Reason for message (`string`).
-
-###### `fatal`
-
-If `true`, marks associated file as no longer processable (`boolean?`). If
-`false`, necessitates a (potential) change. The value can also be `null` or
-`undefined`.
-
-###### `line`
-
-Starting line of error (`number?`).
-
-###### `column`
-
-Starting column of error (`number?`).
-
-###### `location`
-
-Full range information, when available ([`Position`][position]). Has `start`
-and `end` properties, both set to an object with `line` and `column`, set to
-`number?`.
-
-###### `source`
-
-Namespace of warning (`string?`).
-
-###### `ruleId`
-
-Category of message (`string?`).
-
-###### `stack`
-
-Stack of message (`string?`).
-
-##### Custom properties
-
-It’s OK to store custom data directly on the `VMessage`, some of those are
-handled by [utilities][util].
-
-###### `file`
-
-You may add a `file` property with a path of a file (used throughout the
-[**VFile**][vfile] ecosystem).
-
-###### `note`
-
-You may add a `note` property with a long form description of the message
-(supported by [`vfile-reporter`][reporter]).
-
-###### `url`
-
-You may add a `url` property with a link to documentation for the message.
-
-## Contribute
-
-See [`contributing.md` in `vfile/vfile`][contributing] for ways to get started.
-
-This organisation has a [Code of Conduct][coc]. By interacting with this
-repository, organisation, or community you agree to abide by its terms.
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/vfile/vfile-message.svg
-
-[build]: https://travis-ci.org/vfile/vfile-message
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/vfile/vfile-message.svg
-
-[coverage]: https://codecov.io/github/vfile/vfile-message
-
-[downloads-badge]: https://img.shields.io/npm/dm/vfile-message.svg
-
-[downloads]: https://www.npmjs.com/package/vfile-message
-
-[chat-badge]: https://img.shields.io/badge/join%20the%20community-on%20spectrum-7b16ff.svg
-
-[chat]: https://spectrum.chat/unified/vfile
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
-
-[error]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error
-
-[node]: https://github.com/syntax-tree/unist#node
-
-[position]: https://github.com/syntax-tree/unist#position
-
-[point]: https://github.com/syntax-tree/unist#point
-
-[vfile]: https://github.com/vfile/vfile
-
-[contributing]: https://github.com/vfile/vfile/blob/master/contributing.md
-
-[coc]: https://github.com/vfile/vfile/blob/master/code-of-conduct.md
-
-[util]: https://github.com/vfile/vfile#utilities
-
-[reporter]: https://github.com/vfile/vfile-reporter
-
-[ruleid]: #ruleid
-
-[source]: #source
diff --git a/assets/node_modules/vfile/changelog.md b/assets/node_modules/vfile/changelog.md
deleted file mode 100644
index 66bdd1a..0000000
--- a/assets/node_modules/vfile/changelog.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Changelog
-
-See [GitHub Releases][releases] for the changelog.
-
-[releases]: https://github.com/vfile/vfile/releases
diff --git a/assets/node_modules/vfile/core.js b/assets/node_modules/vfile/core.js
deleted file mode 100644
index 748fd01..0000000
--- a/assets/node_modules/vfile/core.js
+++ /dev/null
@@ -1,165 +0,0 @@
-'use strict'
-
-var path = require('path')
-var replace = require('replace-ext')
-var buffer = require('is-buffer')
-
-module.exports = VFile
-
-var own = {}.hasOwnProperty
-var proto = VFile.prototype
-
-proto.toString = toString
-
-// Order of setting (least specific to most), we need this because otherwise
-// `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a
-// stem can be set.
-var order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']
-
-// Construct a new file.
-function VFile(options) {
- var prop
- var index
- var length
-
- if (!options) {
- options = {}
- } else if (typeof options === 'string' || buffer(options)) {
- options = {contents: options}
- } else if ('message' in options && 'messages' in options) {
- return options
- }
-
- if (!(this instanceof VFile)) {
- return new VFile(options)
- }
-
- this.data = {}
- this.messages = []
- this.history = []
- this.cwd = process.cwd()
-
- // Set path related properties in the correct order.
- index = -1
- length = order.length
-
- while (++index < length) {
- prop = order[index]
-
- if (own.call(options, prop)) {
- this[prop] = options[prop]
- }
- }
-
- // Set non-path related properties.
- for (prop in options) {
- if (order.indexOf(prop) === -1) {
- this[prop] = options[prop]
- }
- }
-}
-
-// Access full path (`~/index.min.js`).
-Object.defineProperty(proto, 'path', {
- get: function() {
- return this.history[this.history.length - 1]
- },
- set: function(path) {
- assertNonEmpty(path, 'path')
-
- if (path !== this.path) {
- this.history.push(path)
- }
- }
-})
-
-// Access parent path (`~`).
-Object.defineProperty(proto, 'dirname', {
- get: function() {
- return typeof this.path === 'string' ? path.dirname(this.path) : undefined
- },
- set: function(dirname) {
- assertPath(this.path, 'dirname')
- this.path = path.join(dirname || '', this.basename)
- }
-})
-
-// Access basename (`index.min.js`).
-Object.defineProperty(proto, 'basename', {
- get: function() {
- return typeof this.path === 'string' ? path.basename(this.path) : undefined
- },
- set: function(basename) {
- assertNonEmpty(basename, 'basename')
- assertPart(basename, 'basename')
- this.path = path.join(this.dirname || '', basename)
- }
-})
-
-// Access extname (`.js`).
-Object.defineProperty(proto, 'extname', {
- get: function() {
- return typeof this.path === 'string' ? path.extname(this.path) : undefined
- },
- set: function(extname) {
- var ext = extname || ''
-
- assertPart(ext, 'extname')
- assertPath(this.path, 'extname')
-
- if (ext) {
- if (ext.charAt(0) !== '.') {
- throw new Error('`extname` must start with `.`')
- }
-
- if (ext.indexOf('.', 1) !== -1) {
- throw new Error('`extname` cannot contain multiple dots')
- }
- }
-
- this.path = replace(this.path, ext)
- }
-})
-
-// Access stem (`index.min`).
-Object.defineProperty(proto, 'stem', {
- get: function() {
- return typeof this.path === 'string'
- ? path.basename(this.path, this.extname)
- : undefined
- },
- set: function(stem) {
- assertNonEmpty(stem, 'stem')
- assertPart(stem, 'stem')
- this.path = path.join(this.dirname || '', stem + (this.extname || ''))
- }
-})
-
-// Get the value of the file.
-function toString(encoding) {
- var value = this.contents || ''
- return buffer(value) ? value.toString(encoding) : String(value)
-}
-
-// Assert that `part` is not a path (i.e., does not contain `path.sep`).
-function assertPart(part, name) {
- if (part.indexOf(path.sep) !== -1) {
- throw new Error(
- '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'
- )
- }
-}
-
-// Assert that `part` is not empty.
-function assertNonEmpty(part, name) {
- if (!part) {
- throw new Error('`' + name + '` cannot be empty')
- }
-}
-
-// Assert `path` exists.
-function assertPath(path, name) {
- if (!path) {
- throw new Error('Setting `' + name + '` requires `path` to be set too')
- }
-}
diff --git a/assets/node_modules/vfile/index.js b/assets/node_modules/vfile/index.js
deleted file mode 100644
index 3ebda5c..0000000
--- a/assets/node_modules/vfile/index.js
+++ /dev/null
@@ -1,52 +0,0 @@
-'use strict'
-
-var VMessage = require('vfile-message')
-var VFile = require('./core.js')
-
-module.exports = VFile
-
-var proto = VFile.prototype
-
-proto.message = message
-proto.info = info
-proto.fail = fail
-
-// Slight backwards compatibility. Remove in the future.
-proto.warn = message
-
-// Create a message with `reason` at `position`. When an error is passed in as
-// `reason`, copies the stack.
-function message(reason, position, origin) {
- var filePath = this.path
- var message = new VMessage(reason, position, origin)
-
- if (filePath) {
- message.name = filePath + ':' + message.name
- message.file = filePath
- }
-
- message.fatal = false
-
- this.messages.push(message)
-
- return message
-}
-
-// Fail. Creates a vmessage, associates it with the file, and throws it.
-function fail() {
- var message = this.message.apply(this, arguments)
-
- message.fatal = true
-
- throw message
-}
-
-// Info. Creates a vmessage, associates it with the file, and marks the
-// fatality as null.
-function info() {
- var message = this.message.apply(this, arguments)
-
- message.fatal = null
-
- return message
-}
diff --git a/assets/node_modules/vfile/license b/assets/node_modules/vfile/license
deleted file mode 100644
index f3722d9..0000000
--- a/assets/node_modules/vfile/license
+++ /dev/null
@@ -1,21 +0,0 @@
-(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/assets/node_modules/vfile/package.json b/assets/node_modules/vfile/package.json
deleted file mode 100644
index 503454d..0000000
--- a/assets/node_modules/vfile/package.json
+++ /dev/null
@@ -1,88 +0,0 @@
-{
- "name": "vfile",
- "version": "3.0.1",
- "description": "Virtual file format for text processing",
- "license": "MIT",
- "keywords": [
- "virtual",
- "file",
- "text",
- "processing",
- "message",
- "warning",
- "error",
- "remark",
- "retext"
- ],
- "repository": "vfile/vfile",
- "bugs": "https://github.com/vfile/vfile/issues",
- "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
- "contributors": [
- "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
- "Brendan Abbott <brendan.abbott@temando.com>",
- "Denys Dovhan <email@denysdovhan.com>",
- "Kyle Mathews <mathews.kyle@gmail.com>",
- "Shinnosuke Watanabe <snnskwtnb@gmail.com>",
- "Sindre Sorhus <sindresorhus@gmail.com>"
- ],
- "files": [
- "core.js",
- "index.js"
- ],
- "dependencies": {
- "is-buffer": "^2.0.0",
- "replace-ext": "1.0.0",
- "unist-util-stringify-position": "^1.0.0",
- "vfile-message": "^1.0.0"
- },
- "devDependencies": {
- "browserify": "^16.0.0",
- "nyc": "^13.0.0",
- "prettier": "^1.12.1",
- "remark-cli": "^6.0.0",
- "remark-preset-wooorm": "^4.0.0",
- "tape": "^4.4.0",
- "tinyify": "^2.4.3",
- "xo": "^0.23.0"
- },
- "scripts": {
- "format": "remark . -qfo && prettier --write '**/*.js' && xo --fix",
- "build-bundle": "browserify . -s VFile > vfile.js",
- "build-mangle": "browserify . -s VFile -p tinyify > vfile.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"
- },
- "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-var": "off",
- "prefer-arrow-callback": "off",
- "object-shorthand": "off"
- },
- "ignores": [
- "vfile.js"
- ]
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- }
-}
diff --git a/assets/node_modules/vfile/readme.md b/assets/node_modules/vfile/readme.md
deleted file mode 100644
index 2115766..0000000
--- a/assets/node_modules/vfile/readme.md
+++ /dev/null
@@ -1,347 +0,0 @@
-# ![vfile][]
-
-[![Travis][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-[![Chat][chat-badge]][chat]
-
-**VFile** is a virtual file format used by [**unified**][unified],
-a text processing umbrella (it powers [**retext**][retext] for
-natural language, [**remark**][remark] for markdown, and
-[**rehype**][rehype] for HTML). Each processors that parse, transform,
-and compile text, and need a virtual representation of files and a
-place to store [messages][] about them. Plus, they work in the browser.
-**VFile** provides these requirements at a small size, in IE 9 and up.
-
-> **VFile** is different from the excellent [**vinyl**][vinyl]
-> in that it has a smaller API, a smaller size, and focuses on
-> [messages][].
-
-VFile can be used anywhere where files need a lightweight representation.
-For example, it’s used in:
-
-* [`documentation`](https://github.com/documentationjs/documentation)
- — The documentation system for modern JavaScript
-* [`awoo`](https://github.com/awoojs/awoo)
- — Declarative small site generator
-* [`geojsonhint`](https://github.com/mapbox/geojsonhint)
- — Complete, fast, standards-based validation for geojson
-
-## Installation
-
-[npm][]:
-
-```bash
-npm install vfile
-```
-
-## Table of Contents
-
-* [Usage](#usage)
-* [Utilities](#utilities)
-* [Reporters](#reporters)
-* [API](#api)
- * [VFile(\[options\])](#vfileoptions)
- * [vfile.contents](#vfilecontents)
- * [vfile.cwd](#vfilecwd)
- * [vfile.path](#vfilepath)
- * [vfile.basename](#vfilebasename)
- * [vfile.stem](#vfilestem)
- * [vfile.extname](#vfileextname)
- * [vfile.dirname](#vfiledirname)
- * [vfile.history](#vfilehistory)
- * [vfile.messages](#vfilemessages)
- * [vfile.data](#vfiledata)
- * [VFile#toString(\[encoding\])](#vfiletostringencoding)
- * [VFile#message(reason\[, position\]\[, origin\])](#vfilemessagereason-position-origin)
- * [VFile#info(reason\[, position\]\[, origin\])](#vfileinforeason-position-origin)
- * [VFile#fail(reason\[, position\]\[, origin\])](#vfilefailreason-position-origin)
-* [Contribute](#contribute)
-* [Acknowledgments](#acknowledgments)
-* [License](#license)
-
-## Usage
-
-```js
-var vfile = require('vfile')
-
-var file = vfile({path: '~/example.txt', contents: 'Alpha *braavo* charlie.'})
-
-file.path // => '~/example.txt'
-file.dirname // => '~'
-
-file.extname = '.md'
-
-file.basename // => 'example.md'
-
-file.basename = 'index.text'
-
-file.history // => ['~/example.txt', '~/example.md', '~/index.text']
-
-file.message('`braavo` is misspelt; did you mean `bravo`?', {
- line: 1,
- column: 8
-})
-
-console.log(file.messages)
-```
-
-Yields:
-
-```js
-[ { [~/index.text:1:8: `braavo` is misspelt; did you mean `bravo`?]
- message: '`braavo` is misspelt; did you mean `bravo`?',
- name: '~/index.text:1:8',
- file: '~/index.text',
- reason: '`braavo` is misspelt; did you mean `bravo`?',
- line: 1,
- column: 8,
- location: { start: [Object], end: [Object] },
- ruleId: null,
- source: null,
- fatal: false } ]
-```
-
-## Utilities
-
-The following list of projects includes tools for working with virtual
-files. See [**Unist**][unist] for projects working with nodes.
-
-* [`convert-vinyl-to-vfile`](https://github.com/dustinspecker/convert-vinyl-to-vfile)
- — Convert from [Vinyl][]
-* [`is-vfile-message`](https://github.com/shinnn/is-vfile-message)
- — Check if a value is a `VMessage` object
-* [`to-vfile`](https://github.com/vfile/to-vfile)
- — Create a virtual file from a file-path (and optionally read it)
-* [`vfile-find-down`](https://github.com/vfile/vfile-find-down)
- — Find files by searching the file system downwards
-* [`vfile-find-up`](https://github.com/vfile/vfile-find-up)
- — Find files by searching the file system upwards
-* [`vfile-glob`](https://github.com/shinnn/vfile-glob)
- — Find files by glob patterns
-* [`vfile-location`](https://github.com/vfile/vfile-location)
- — Convert between line/column- and range-based locations
-* [`vfile-message`](https://github.com/vfile/vfile-message)
- — Create a `VMessage` object (used in `vfile` itself)
-* [`vfile-statistics`](https://github.com/vfile/vfile-statistics)
- — Count messages per category
-* [`vfile-messages-to-vscode-diagnostics`](https://github.com/shinnn/vfile-messages-to-vscode-diagnostics)
- — Convert to VS Code diagnostics
-* [`vfile-sort`](https://github.com/vfile/vfile-sort)
- — Sort messages by line/column
-* [`vfile-to-eslint`](https://github.com/vfile/vfile-to-eslint)
- — Convert VFiles to ESLint formatter compatible output
-
-## Reporters
-
-The following list of projects show linting results for given virtual files.
-Reporters _must_ accept `Array.<VFile>` as their first argument, and return
-`string`. Reporters _may_ accept other values too, in which case it’s suggested
-to stick to `vfile-reporter`s interface.
-
-* [`vfile-reporter`][reporter]
- — Stylish reporter
-* [`vfile-reporter-json`](https://github.com/vfile/vfile-reporter-json)
- — JSON reporter
-* [`vfile-reporter-folder-json`](https://github.com/vfile/vfile-reporter-folder-json)
- — JSON reporter with a folder structure
-* [`vfile-reporter-pretty`](https://github.com/vfile/vfile-reporter-pretty)
- — Pretty reporter
-
-## API
-
-### `VFile([options])`
-
-Create a new virtual file. If `options` is `string` or `Buffer`, treats
-it as `{contents: options}`. If `options` is a `VFile`, returns it.
-All other options are set on the newly created `vfile`.
-
-Path related properties are set in the following order (least specific
-to most specific): `history`, `path`, `basename`, `stem`, `extname`,
-`dirname`.
-
-It’s not possible to set either `dirname` or `extname` without setting
-either `history`, `path`, `basename`, or `stem` as well.
-
-###### Example
-
-```js
-vfile()
-vfile('console.log("alpha");')
-vfile(Buffer.from('exit 1'))
-vfile({path: path.join(__dirname, 'readme.md')})
-vfile({stem: 'readme', extname: '.md', dirname: __dirname})
-vfile({other: 'properties', are: 'copied', ov: {e: 'r'}})
-```
-
-### `vfile.contents`
-
-`Buffer`, `string`, `null` — Raw value.
-
-### `vfile.cwd`
-
-`string` — Base of `path`. Defaults to `process.cwd()`.
-
-### `vfile.path`
-
-`string?` — Path of `vfile`. Cannot be nullified.
-
-### `vfile.basename`
-
-`string?` — Current name (including extension) of `vfile`. Cannot
-contain path separators. Cannot be nullified either (use
-`file.path = file.dirname` instead).
-
-### `vfile.stem`
-
-`string?` — Name (without extension) of `vfile`. Cannot be nullified,
-and cannot contain path separators.
-
-### `vfile.extname`
-
-`string?` — Extension (with dot) of `vfile`. Cannot be set if
-there’s no `path` yet and cannot contain path separators.
-
-### `vfile.dirname`
-
-`string?` — Path to parent directory of `vfile`. Cannot be set if
-there’s no `path` yet.
-
-### `vfile.history`
-
-`Array.<string>` — List of file-paths the file moved between.
-
-### `vfile.messages`
-
-[`Array.<VMessage>`][message] — List of messages associated with the file.
-
-### `vfile.data`
-
-`Object` — Place to store custom information. It’s OK to store custom
-data directly on the `vfile`, moving it to `data` gives a _little_ more
-privacy.
-
-### `VFile#toString([encoding])`
-
-Convert contents of `vfile` to string. If `contents` is a buffer,
-`encoding` is used to stringify buffers (default: `'utf8'`).
-
-### `VFile#message(reason[, position][, origin])`
-
-Associates a message with the file, where `fatal` is set to `false`.
-Constructs a new [`VMessage`][vmessage] and adds it to
-[`vfile.messages`][messages].
-
-##### Returns
-
-[`VMessage`][vmessage].
-
-### `VFile#info(reason[, position][, origin])`
-
-Associates an informational message with the file, where `fatal` is set to
-`null`. Calls [`#message()`][message] internally.
-
-##### Returns
-
-[`VMessage`][vmessage].
-
-### `VFile#fail(reason[, position][, origin])`
-
-Associates a fatal message with the file, then immediately throws it.
-Note: fatal errors mean a file is no longer processable.
-Calls [`#message()`][message] internally.
-
-##### Throws
-
-[`VMessage`][vmessage].
-
-## Contribute
-
-**VFile** is built by people just like you! Check out
-[`contributing.md`][contribute] for ways to get started.
-
-This project has a [Code of Conduct][coc]. By interacting with this repository,
-organisation, or community you agree to abide by its terms.
-
-Want to chat with the community and contributors? Join us in [Gitter][chat]!
-
-Have an idea for a cool new utility or tool? That’s great! If you want
-feedback, help, or just to share it with the world you can do so by creating
-an issue in the [`vfile/ideas`][ideas] repository!
-
-## Acknowledgments
-
-The initial release of this project was authored by
-[**@wooorm**](https://github.com/wooorm).
-
-Thanks to [**@contra**](https://github.com/contra),
-[**@phated**](https://github.com/phated), and others for their work on
-[Vinyl][], which was a huge inspiration.
-
-Thanks to
-[**@brendo**](https://github.com/brendo),
-[**@shinnn**](https://github.com/shinnn),
-[**@KyleAMathews**](https://github.com/KyleAMathews), [**@sindresorhus**](https://github.com/sindresorhus),
-and [**@denysdovhan**](https://github.com/denysdovhan)
-for contributing commits since!
-
-## License
-
-[MIT][license] © [Titus Wormer][author]
-
-<!-- Definitions -->
-
-[build-badge]: https://img.shields.io/travis/vfile/vfile/master.svg
-
-[build]: https://travis-ci.org/vfile/vfile
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/vfile/vfile.svg
-
-[coverage]: https://codecov.io/github/vfile/vfile
-
-[downloads-badge]: https://img.shields.io/npm/dm/vfile.svg
-
-[downloads]: https://www.npmjs.com/package/vfile
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/vfile.svg
-
-[size]: https://bundlephobia.com/result?p=vfile
-
-[chat-badge]: https://img.shields.io/gitter/room/vfile/Lobby.svg
-
-[chat]: https://gitter.im/vfile/Lobby
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
-
-[vfile]: https://raw.githubusercontent.com/vfile/vfile/7e1e6a6/logo.svg?sanitize=true
-
-[unified]: https://github.com/unifiedjs/unified
-
-[retext]: https://github.com/retextjs/retext
-
-[remark]: https://github.com/remarkjs/remark
-
-[rehype]: https://github.com/rehypejs/rehype
-
-[vinyl]: https://github.com/gulpjs/vinyl
-
-[unist]: https://github.com/syntax-tree/unist#list-of-utilities
-
-[reporter]: https://github.com/vfile/vfile-reporter
-
-[vmessage]: https://github.com/vfile/vfile-message
-
-[messages]: #vfilemessages
-
-[message]: #vfilemessagereason-position-origin
-
-[contribute]: contributing.md
-
-[coc]: code-of-conduct.md
-
-[ideas]: https://github.com/vfile/ideas
diff --git a/assets/node_modules/which/CHANGELOG.md b/assets/node_modules/which/CHANGELOG.md
deleted file mode 100644
index 3d83d26..0000000
--- a/assets/node_modules/which/CHANGELOG.md
+++ /dev/null
@@ -1,152 +0,0 @@
-# Changes
-
-
-## 1.3.1
-
-* update deps
-* update travis
-
-## v1.3.0
-
-* Add nothrow option to which.sync
-* update tap
-
-## v1.2.14
-
-* appveyor: drop node 5 and 0.x
-* travis-ci: add node 6, drop 0.x
-
-## v1.2.13
-
-* test: Pass missing option to pass on windows
-* update tap
-* update isexe to 2.0.0
-* neveragain.tech pledge request
-
-## v1.2.12
-
-* Removed unused require
-
-## v1.2.11
-
-* Prevent changelog script from being included in package
-
-## v1.2.10
-
-* Use env.PATH only, not env.Path
-
-## v1.2.9
-
-* fix for paths starting with ../
-* Remove unused `is-absolute` module
-
-## v1.2.8
-
-* bullet items in changelog that contain (but don't start with) #
-
-## v1.2.7
-
-* strip 'update changelog' changelog entries out of changelog
-
-## v1.2.6
-
-* make the changelog bulleted
-
-## v1.2.5
-
-* make a changelog, and keep it up to date
-* don't include tests in package
-* Properly handle relative-path executables
-* appveyor
-* Attach error code to Not Found error
-* Make tests pass on Windows
-
-## v1.2.4
-
-* Fix typo
-
-## v1.2.3
-
-* update isexe, fix regression in pathExt handling
-
-## v1.2.2
-
-* update deps, use isexe module, test windows
-
-## v1.2.1
-
-* Sometimes windows PATH entries are quoted
-* Fixed a bug in the check for group and user mode bits. This bug was introduced during refactoring for supporting strict mode.
-* doc cli
-
-## v1.2.0
-
-* Add support for opt.all and -as cli flags
-* test the bin
-* update travis
-* Allow checking for multiple programs in bin/which
-* tap 2
-
-## v1.1.2
-
-* travis
-* Refactored and fixed undefined error on Windows
-* Support strict mode
-
-## v1.1.1
-
-* test +g exes against secondary groups, if available
-* Use windows exe semantics on cygwin & msys
-* cwd should be first in path on win32, not last
-* Handle lower-case 'env.Path' on Windows
-* Update docs
-* use single-quotes
-
-## v1.1.0
-
-* Add tests, depend on is-absolute
-
-## v1.0.9
-
-* which.js: root is allowed to execute files owned by anyone
-
-## v1.0.8
-
-* don't use graceful-fs
-
-## v1.0.7
-
-* add license to package.json
-
-## v1.0.6
-
-* isc license
-
-## 1.0.5
-
-* Awful typo
-
-## 1.0.4
-
-* Test for path absoluteness properly
-* win: Allow '' as a pathext if cmd has a . in it
-
-## 1.0.3
-
-* Remove references to execPath
-* Make `which.sync()` work on Windows by honoring the PATHEXT variable.
-* Make `isExe()` always return true on Windows.
-* MIT
-
-## 1.0.2
-
-* Only files can be exes
-
-## 1.0.1
-
-* Respect the PATHEXT env for win32 support
-* should 0755 the bin
-* binary
-* guts
-* package
-* 1st
diff --git a/assets/node_modules/which/LICENSE b/assets/node_modules/which/LICENSE
deleted file mode 100644
index 19129e3..0000000
--- a/assets/node_modules/which/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-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/assets/node_modules/which/README.md b/assets/node_modules/which/README.md
deleted file mode 100644
index 8c0b0cb..0000000
--- a/assets/node_modules/which/README.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# which
-
-Like the unix `which` utility.
-
-Finds the first instance of a specified executable in the PATH
-environment variable. Does not cache the results, so `hash -r` is not
-needed when the PATH changes.
-
-## USAGE
-
-```javascript
-var which = require('which')
-
-// async usage
-which('node', function (er, resolvedPath) {
- // er is returned if no "node" is found on the PATH
- // if it is found, then the absolute path to the exec is returned
-})
-
-// sync usage
-// throws if not found
-var resolved = which.sync('node')
-
-// if nothrow option is used, returns null if not found
-resolved = which.sync('node', {nothrow: true})
-
-// Pass options to override the PATH and PATHEXT environment vars.
-which('node', { path: someOtherPath }, function (er, resolved) {
- if (er)
- throw er
- console.log('found at %j', resolved)
-})
-```
-
-## CLI USAGE
-
-Same as the BSD `which(1)` binary.
-
-```
-usage: which [-as] program ...
-```
-
-## OPTIONS
-
-You may pass an options object as the second argument.
-
-- `path`: Use instead of the `PATH` environment variable.
-- `pathExt`: Use instead of the `PATHEXT` environment variable.
-- `all`: Return all matches, instead of just the first one. Note that
- this means the function returns an array of strings instead of a
- single string.
diff --git a/assets/node_modules/which/bin/which b/assets/node_modules/which/bin/which
deleted file mode 100755
index 7cee372..0000000
--- a/assets/node_modules/which/bin/which
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/env node
-var which = require("../")
-if (process.argv.length < 3)
- usage()
-
-function usage () {
- console.error('usage: which [-as] program ...')
- process.exit(1)
-}
-
-var all = false
-var silent = false
-var dashdash = false
-var args = process.argv.slice(2).filter(function (arg) {
- if (dashdash || !/^-/.test(arg))
- return true
-
- if (arg === '--') {
- dashdash = true
- return false
- }
-
- var flags = arg.substr(1).split('')
- for (var f = 0; f < flags.length; f++) {
- var flag = flags[f]
- switch (flag) {
- case 's':
- silent = true
- break
- case 'a':
- all = true
- break
- default:
- console.error('which: illegal option -- ' + flag)
- usage()
- }
- }
- return false
-})
-
-process.exit(args.reduce(function (pv, current) {
- try {
- var f = which.sync(current, { all: all })
- if (all)
- f = f.join('\n')
- if (!silent)
- console.log(f)
- return pv;
- } catch (e) {
- return 1;
- }
-}, 0))
diff --git a/assets/node_modules/which/package.json b/assets/node_modules/which/package.json
deleted file mode 100644
index 51be376..0000000
--- a/assets/node_modules/which/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)",
- "name": "which",
- "description": "Like which(1) unix command. Find the first instance of an executable in the PATH.",
- "version": "1.3.1",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/node-which.git"
- },
- "main": "which.js",
- "bin": "./bin/which",
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "devDependencies": {
- "mkdirp": "^0.5.0",
- "rimraf": "^2.6.2",
- "tap": "^12.0.1"
- },
- "scripts": {
- "test": "tap test/*.js --cov",
- "changelog": "bash gen-changelog.sh",
- "postversion": "npm run changelog && git add CHANGELOG.md && git commit -m 'update changelog - '${npm_package_version}"
- },
- "files": [
- "which.js",
- "bin/which"
- ]
-}
diff --git a/assets/node_modules/which/which.js b/assets/node_modules/which/which.js
deleted file mode 100644
index 4347f91..0000000
--- a/assets/node_modules/which/which.js
+++ /dev/null
@@ -1,135 +0,0 @@
-module.exports = which
-which.sync = whichSync
-
-var isWindows = process.platform === 'win32' ||
- process.env.OSTYPE === 'cygwin' ||
- process.env.OSTYPE === 'msys'
-
-var path = require('path')
-var COLON = isWindows ? ';' : ':'
-var isexe = require('isexe')
-
-function getNotFoundError (cmd) {
- var er = new Error('not found: ' + cmd)
- er.code = 'ENOENT'
-
- return er
-}
-
-function getPathInfo (cmd, opt) {
- var colon = opt.colon || COLON
- var pathEnv = opt.path || process.env.PATH || ''
- var pathExt = ['']
-
- pathEnv = pathEnv.split(colon)
-
- var pathExtExe = ''
- if (isWindows) {
- pathEnv.unshift(process.cwd())
- pathExtExe = (opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM')
- pathExt = pathExtExe.split(colon)
-
-
- // Always test the cmd itself first. isexe will check to make sure
- // it's found in the pathExt set.
- if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')
- pathExt.unshift('')
- }
-
- // If it has a slash, then we don't bother searching the pathenv.
- // just check the file itself, and that's it.
- if (cmd.match(/\//) || isWindows && cmd.match(/\\/))
- pathEnv = ['']
-
- return {
- env: pathEnv,
- ext: pathExt,
- extExe: pathExtExe
- }
-}
-
-function which (cmd, opt, cb) {
- if (typeof opt === 'function') {
- cb = opt
- opt = {}
- }
-
- var info = getPathInfo(cmd, opt)
- var pathEnv = info.env
- var pathExt = info.ext
- var pathExtExe = info.extExe
- var found = []
-
- ;(function F (i, l) {
- if (i === l) {
- if (opt.all && found.length)
- return cb(null, found)
- else
- return cb(getNotFoundError(cmd))
- }
-
- var pathPart = pathEnv[i]
- if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"')
- pathPart = pathPart.slice(1, -1)
-
- var p = path.join(pathPart, cmd)
- if (!pathPart && (/^\.[\\\/]/).test(cmd)) {
- p = cmd.slice(0, 2) + p
- }
- ;(function E (ii, ll) {
- if (ii === ll) return F(i + 1, l)
- var ext = pathExt[ii]
- isexe(p + ext, { pathExt: pathExtExe }, function (er, is) {
- if (!er && is) {
- if (opt.all)
- found.push(p + ext)
- else
- return cb(null, p + ext)
- }
- return E(ii + 1, ll)
- })
- })(0, pathExt.length)
- })(0, pathEnv.length)
-}
-
-function whichSync (cmd, opt) {
- opt = opt || {}
-
- var info = getPathInfo(cmd, opt)
- var pathEnv = info.env
- var pathExt = info.ext
- var pathExtExe = info.extExe
- var found = []
-
- for (var i = 0, l = pathEnv.length; i < l; i ++) {
- var pathPart = pathEnv[i]
- if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"')
- pathPart = pathPart.slice(1, -1)
-
- var p = path.join(pathPart, cmd)
- if (!pathPart && /^\.[\\\/]/.test(cmd)) {
- p = cmd.slice(0, 2) + p
- }
- for (var j = 0, ll = pathExt.length; j < ll; j ++) {
- var cur = p + pathExt[j]
- var is
- try {
- is = isexe.sync(cur, { pathExt: pathExtExe })
- if (is) {
- if (opt.all)
- found.push(cur)
- else
- return cur
- }
- } catch (ex) {}
- }
- }
-
- if (opt.all && found.length)
- return found
-
- if (opt.nothrow)
- return null
-
- throw getNotFoundError(cmd)
-}
diff --git a/assets/node_modules/wrappy/LICENSE b/assets/node_modules/wrappy/LICENSE
deleted file mode 100644
index 19129e3..0000000
--- a/assets/node_modules/wrappy/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-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/assets/node_modules/wrappy/README.md b/assets/node_modules/wrappy/README.md
deleted file mode 100644
index 98eab25..0000000
--- a/assets/node_modules/wrappy/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# wrappy
-
-Callback wrapping utility
-
-## USAGE
-
-```javascript
-var wrappy = require("wrappy")
-
-// var wrapper = wrappy(wrapperFunction)
-
-// make sure a cb is called only once
-// See also: http://npm.im/once for this specific use case
-var once = wrappy(function (cb) {
- var called = false
- return function () {
- if (called) return
- called = true
- return cb.apply(this, arguments)
- }
-})
-
-function printBoo () {
- console.log('boo')
-}
-// has some rando property
-printBoo.iAmBooPrinter = true
-
-var onlyPrintOnce = once(printBoo)
-
-onlyPrintOnce() // prints 'boo'
-onlyPrintOnce() // does nothing
-
-// random property is retained!
-assert.equal(onlyPrintOnce.iAmBooPrinter, true)
-```
diff --git a/assets/node_modules/wrappy/package.json b/assets/node_modules/wrappy/package.json
deleted file mode 100644
index 1307520..0000000
--- a/assets/node_modules/wrappy/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "name": "wrappy",
- "version": "1.0.2",
- "description": "Callback wrapping utility",
- "main": "wrappy.js",
- "files": [
- "wrappy.js"
- ],
- "directories": {
- "test": "test"
- },
- "dependencies": {},
- "devDependencies": {
- "tap": "^2.3.1"
- },
- "scripts": {
- "test": "tap --coverage test/*.js"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/npm/wrappy"
- },
- "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/npm/wrappy/issues"
- },
- "homepage": "https://github.com/npm/wrappy"
-}
diff --git a/assets/node_modules/wrappy/wrappy.js b/assets/node_modules/wrappy/wrappy.js
deleted file mode 100644
index bb7e7d6..0000000
--- a/assets/node_modules/wrappy/wrappy.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// Returns a wrapper function that returns a wrapped callback
-// The wrapper function should do some stuff, and return a
-// presumably different callback function.
-// This makes sure that own properties are retained, so that
-// decorations and such are not lost along the way.
-module.exports = wrappy
-function wrappy (fn, cb) {
- if (fn && cb) return wrappy(fn)(cb)
-
- if (typeof fn !== 'function')
- throw new TypeError('need wrapper function')
-
- Object.keys(fn).forEach(function (k) {
- wrapper[k] = fn[k]
- })
-
- return wrapper
-
- function wrapper() {
- var args = new Array(arguments.length)
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i]
- }
- var ret = fn.apply(this, args)
- var cb = args[args.length-1]
- if (typeof ret === 'function' && ret !== cb) {
- Object.keys(cb).forEach(function (k) {
- ret[k] = cb[k]
- })
- }
- return ret
- }
-}
diff --git a/assets/node_modules/write-file-atomic/CHANGELOG.md b/assets/node_modules/write-file-atomic/CHANGELOG.md
deleted file mode 100644
index d1a6c1b..0000000
--- a/assets/node_modules/write-file-atomic/CHANGELOG.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# 3.0.0
-
-* Implement options.tmpfileCreated callback.
-* Drop Node.js 6, modernize code, return Promise from async function.
-* Support write TypedArray's like in node fs.writeFile.
-* Remove graceful-fs dependency.
-
-# 2.4.3
-
-* Ignore errors raised by `fs.closeSync` when cleaning up after a write
- error.
-
-# 2.4.2
-
-* A pair of patches to fix some fd leaks. We would leak fds with sync use
- when errors occured and with async use any time fsync was not in use. (#34)
-
-# 2.4.1
-
-* Fix a bug where `signal-exit` instances would be leaked. This was fixed when addressing #35.
-
-# 2.4.0
-
-## Features
-
-* Allow chown and mode options to be set to false to disable the defaulting behavior. (#20)
-* Support passing encoding strings in options slot for compat with Node.js API. (#31)
-* Add support for running inside of worker threads (#37)
-
-## Fixes
-
-* Remove unneeded call when returning success (#36)
diff --git a/assets/node_modules/write-file-atomic/LICENSE b/assets/node_modules/write-file-atomic/LICENSE
deleted file mode 100644
index 95e65a7..0000000
--- a/assets/node_modules/write-file-atomic/LICENSE
+++ /dev/null
@@ -1,6 +0,0 @@
-Copyright (c) 2015, Rebecca Turner
-
-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/assets/node_modules/write-file-atomic/README.md b/assets/node_modules/write-file-atomic/README.md
deleted file mode 100644
index caea799..0000000
--- a/assets/node_modules/write-file-atomic/README.md
+++ /dev/null
@@ -1,72 +0,0 @@
-write-file-atomic
------------------
-
-This is an extension for node's `fs.writeFile` that makes its operation
-atomic and allows you set ownership (uid/gid of the file).
-
-### var writeFileAtomic = require('write-file-atomic')<br>writeFileAtomic(filename, data, [options], [callback])
-
-* filename **String**
-* data **String** | **Buffer**
-* options **Object** | **String**
- * chown **Object** default, uid & gid of existing file, if any
- * uid **Number**
- * gid **Number**
- * encoding **String** | **Null** default = 'utf8'
- * fsync **Boolean** default = true
- * mode **Number** default, from existing file, if any
- * tmpfileCreated **Function** called when the tmpfile is created
-* callback **Function**
-
-Atomically and asynchronously writes data to a file, replacing the file if it already
-exists. data can be a string or a buffer.
-
-The file is initially named `filename + "." + murmurhex(__filename, process.pid, ++invocations)`.
-Note that `require('worker_threads').threadId` is used in addition to `process.pid` if running inside of a worker thread.
-If writeFile completes successfully then, if passed the **chown** option it will change
-the ownership of the file. Finally it renames the file back to the filename you specified. If
-it encounters errors at any of these steps it will attempt to unlink the temporary file and then
-pass the error back to the caller.
-If multiple writes are concurrently issued to the same file, the write operations are put into a queue and serialized in the order they were called, using Promises. Writes to different files are still executed in parallel.
-
-If provided, the **chown** option requires both **uid** and **gid** properties or else
-you'll get an error. If **chown** is not specified it will default to using
-the owner of the previous file. To prevent chown from being ran you can
-also pass `false`, in which case the file will be created with the current user's credentials.
-
-If **mode** is not specified, it will default to using the permissions from
-an existing file, if any. Expicitly setting this to `false` remove this default, resulting
-in a file created with the system default permissions.
-
-If options is a String, it's assumed to be the **encoding** option. The **encoding** option is ignored if **data** is a buffer. It defaults to 'utf8'.
-
-If the **fsync** option is **false**, writeFile will skip the final fsync call.
-
-If the **tmpfileCreated** option is specified it will be called with the name of the tmpfile when created.
-
-Example:
-
-```javascript
-writeFileAtomic('message.txt', 'Hello Node', {chown:{uid:100,gid:50}}, function (err) {
- if (err) throw err;
- console.log('It\'s saved!');
-});
-```
-
-This function also supports async/await:
-
-```javascript
-(async () => {
- try {
- await writeFileAtomic('message.txt', 'Hello Node', {chown:{uid:100,gid:50}});
- console.log('It\'s saved!');
- } catch (err) {
- console.error(err);
- process.exit(1);
- }
-})();
-```
-
-### var writeFileAtomicSync = require('write-file-atomic').sync<br>writeFileAtomicSync(filename, data, [options])
-
-The synchronous version of **writeFileAtomic**.
diff --git a/assets/node_modules/write-file-atomic/index.js b/assets/node_modules/write-file-atomic/index.js
deleted file mode 100644
index e1ad701..0000000
--- a/assets/node_modules/write-file-atomic/index.js
+++ /dev/null
@@ -1,215 +0,0 @@
-'use strict'
-module.exports = writeFile
-module.exports.sync = writeFileSync
-module.exports._getTmpname = getTmpname // for testing
-module.exports._cleanupOnExit = cleanupOnExit
-
-const fs = require('fs')
-const MurmurHash3 = require('imurmurhash')
-const onExit = require('signal-exit')
-const path = require('path')
-const isTypedArray = require('is-typedarray')
-const typedArrayToBuffer = require('typedarray-to-buffer')
-const { promisify } = require('util')
-const activeFiles = {}
-
-// if we run inside of a worker_thread, `process.pid` is not unique
-/* istanbul ignore next */
-const threadId = (function getId () {
- try {
- const workerThreads = require('worker_threads')
-
- /// if we are in main thread, this is set to `0`
- return workerThreads.threadId
- } catch (e) {
- // worker_threads are not available, fallback to 0
- return 0
- }
-})()
-
-let invocations = 0
-function getTmpname (filename) {
- return filename + '.' +
- MurmurHash3(__filename)
- .hash(String(process.pid))
- .hash(String(threadId))
- .hash(String(++invocations))
- .result()
-}
-
-function cleanupOnExit (tmpfile) {
- return () => {
- try {
- fs.unlinkSync(typeof tmpfile === 'function' ? tmpfile() : tmpfile)
- } catch (_) {}
- }
-}
-
-function serializeActiveFile (absoluteName) {
- return new Promise(resolve => {
- // make a queue if it doesn't already exist
- if (!activeFiles[absoluteName]) activeFiles[absoluteName] = []
-
- activeFiles[absoluteName].push(resolve) // add this job to the queue
- if (activeFiles[absoluteName].length === 1) resolve() // kick off the first one
- })
-}
-
-async function writeFileAsync (filename, data, options = {}) {
- if (typeof options === 'string') {
- options = { encoding: options }
- }
-
- let fd
- let tmpfile
- /* istanbul ignore next -- The closure only gets called when onExit triggers */
- const removeOnExitHandler = onExit(cleanupOnExit(() => tmpfile))
- const absoluteName = path.resolve(filename)
-
- try {
- await serializeActiveFile(absoluteName)
- const truename = await promisify(fs.realpath)(filename).catch(() => filename)
- tmpfile = getTmpname(truename)
-
- if (!options.mode || !options.chown) {
- // Either mode or chown is not explicitly set
- // Default behavior is to copy it from original file
- const stats = await promisify(fs.stat)(truename).catch(() => {})
- if (stats) {
- if (options.mode == null) {
- options.mode = stats.mode
- }
-
- if (options.chown == null && process.getuid) {
- options.chown = { uid: stats.uid, gid: stats.gid }
- }
- }
- }
-
- fd = await promisify(fs.open)(tmpfile, 'w', options.mode)
- if (options.tmpfileCreated) {
- await options.tmpfileCreated(tmpfile)
- }
- if (isTypedArray(data)) {
- data = typedArrayToBuffer(data)
- }
- if (Buffer.isBuffer(data)) {
- await promisify(fs.write)(fd, data, 0, data.length, 0)
- } else if (data != null) {
- await promisify(fs.write)(fd, String(data), 0, String(options.encoding || 'utf8'))
- }
-
- if (options.fsync !== false) {
- await promisify(fs.fsync)(fd)
- }
-
- await promisify(fs.close)(fd)
- fd = null
-
- if (options.chown) {
- await promisify(fs.chown)(tmpfile, options.chown.uid, options.chown.gid)
- }
-
- if (options.mode) {
- await promisify(fs.chmod)(tmpfile, options.mode)
- }
-
- await promisify(fs.rename)(tmpfile, truename)
- } finally {
- if (fd) {
- await promisify(fs.close)(fd).catch(
- /* istanbul ignore next */
- () => {}
- )
- }
- removeOnExitHandler()
- await promisify(fs.unlink)(tmpfile).catch(() => {})
- activeFiles[absoluteName].shift() // remove the element added by serializeSameFile
- if (activeFiles[absoluteName].length > 0) {
- activeFiles[absoluteName][0]() // start next job if one is pending
- } else delete activeFiles[absoluteName]
- }
-}
-
-function writeFile (filename, data, options, callback) {
- if (options instanceof Function) {
- callback = options
- options = {}
- }
-
- const promise = writeFileAsync(filename, data, options)
- if (callback) {
- promise.then(callback, callback)
- }
-
- return promise
-}
-
-function writeFileSync (filename, data, options) {
- if (typeof options === 'string') options = { encoding: options }
- else if (!options) options = {}
- try {
- filename = fs.realpathSync(filename)
- } catch (ex) {
- // it's ok, it'll happen on a not yet existing file
- }
- const tmpfile = getTmpname(filename)
-
- if (!options.mode || !options.chown) {
- // Either mode or chown is not explicitly set
- // Default behavior is to copy it from original file
- try {
- const stats = fs.statSync(filename)
- options = Object.assign({}, options)
- if (!options.mode) {
- options.mode = stats.mode
- }
- if (!options.chown && process.getuid) {
- options.chown = { uid: stats.uid, gid: stats.gid }
- }
- } catch (ex) {
- // ignore stat errors
- }
- }
-
- let fd
- const cleanup = cleanupOnExit(tmpfile)
- const removeOnExitHandler = onExit(cleanup)
-
- let threw = true
- try {
- fd = fs.openSync(tmpfile, 'w', options.mode)
- if (options.tmpfileCreated) {
- options.tmpfileCreated(tmpfile)
- }
- if (isTypedArray(data)) {
- data = typedArrayToBuffer(data)
- }
- if (Buffer.isBuffer(data)) {
- fs.writeSync(fd, data, 0, data.length, 0)
- } else if (data != null) {
- fs.writeSync(fd, String(data), 0, String(options.encoding || 'utf8'))
- }
- if (options.fsync !== false) {
- fs.fsyncSync(fd)
- }
- fs.closeSync(fd)
- fd = null
- if (options.chown) fs.chownSync(tmpfile, options.chown.uid, options.chown.gid)
- if (options.mode) fs.chmodSync(tmpfile, options.mode)
- fs.renameSync(tmpfile, filename)
- threw = false
- } finally {
- if (fd) {
- try {
- fs.closeSync(fd)
- } catch (ex) {
- // ignore close errors at this stage, error may have closed fd already.
- }
- }
- removeOnExitHandler()
- if (threw) {
- cleanup()
- }
- }
-}
diff --git a/assets/node_modules/write-file-atomic/package.json b/assets/node_modules/write-file-atomic/package.json
deleted file mode 100644
index 871d423..0000000
--- a/assets/node_modules/write-file-atomic/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "name": "write-file-atomic",
- "version": "3.0.1",
- "description": "Write files in an atomic fashion w/configurable ownership",
- "main": "index.js",
- "scripts": {
- "pretest": "standard",
- "test": "tap",
- "posttest": "rimraf chowncopy good nochmod nochown nofsync nofsyncopt noopen norename \"norename nounlink\" nowrite",
- "preversion": "npm test",
- "postversion": "npm publish",
- "postpublish": "git push origin --follow-tags"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/npm/write-file-atomic.git"
- },
- "keywords": [
- "writeFile",
- "atomic"
- ],
- "author": "Rebecca Turner <me@re-becca.org> (http://re-becca.org)",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/npm/write-file-atomic/issues"
- },
- "homepage": "https://github.com/npm/write-file-atomic",
- "dependencies": {
- "imurmurhash": "^0.1.4",
- "is-typedarray": "^1.0.0",
- "signal-exit": "^3.0.2",
- "typedarray-to-buffer": "^3.1.5"
- },
- "devDependencies": {
- "mkdirp": "^0.5.1",
- "require-inject": "^1.4.4",
- "rimraf": "^2.6.3",
- "standard": "^12.0.1",
- "tap": "^14.1.1"
- },
- "files": [
- "index.js"
- ],
- "tap": {
- "100": true
- }
-}
diff --git a/assets/node_modules/write/LICENSE b/assets/node_modules/write/LICENSE
deleted file mode 100644
index 943e71d..0000000
--- a/assets/node_modules/write/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2017, Jon Schlinkert.
-
-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/assets/node_modules/write/README.md b/assets/node_modules/write/README.md
deleted file mode 100644
index 31c9597..0000000
--- a/assets/node_modules/write/README.md
+++ /dev/null
@@ -1,178 +0,0 @@
-# write [![NPM version](https://img.shields.io/npm/v/write.svg?style=flat)](https://www.npmjs.com/package/write) [![NPM monthly downloads](https://img.shields.io/npm/dm/write.svg?style=flat)](https://npmjs.org/package/write) [![NPM total downloads](https://img.shields.io/npm/dt/write.svg?style=flat)](https://npmjs.org/package/write) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/write.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/write)
-
-> Write data to a file, replacing the file if it already exists and creating any intermediate directories if they don't already exist. Thin wrapper around node's native fs methods.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save write
-```
-
-## Usage
-
-```js
-var writeFile = require('write');
-```
-
-## API
-
-### [writeFile](index.js#L40)
-
-Asynchronously writes data to a file, replacing the file if it already exists and creating any intermediate directories if they don't already exist. Data can be a string or a buffer. Returns a promise if a callback function is not passed.
-
-**Params**
-
-* `filepath` **{string|Buffer|integer}**: filepath or file descriptor.
-* `data` **{string|Buffer|Uint8Array}**: String to write to disk.
-* `options` **{object}**: Options to pass to [fs.writeFile](https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback) and/or [mkdirp](https://github.com/substack/node-mkdirp)
-* `callback` **{Function}**: (optional) If no callback is provided, a promise is returned.
-
-**Example**
-
-```js
-var writeFile = require('write');
-writeFile('foo.txt', 'This is content...', function(err) {
- if (err) console.log(err);
-});
-
-// promise
-writeFile('foo.txt', 'This is content...')
- .then(function() {
- // do stuff
- });
-```
-
-### [.promise](index.js#L82)
-
-The promise version of [writeFile](#writefile). Returns a promise.
-
-**Params**
-
-* `filepath` **{string|Buffer|integer}**: filepath or file descriptor.
-* `val` **{string|Buffer|Uint8Array}**: String or buffer to write to disk.
-* `options` **{object}**: Options to pass to [fs.writeFile](https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback) and/or [mkdirp](https://github.com/substack/node-mkdirp)
-* `returns` **{Promise}**
-
-**Example**
-
-```js
-var writeFile = require('write');
-writeFile.promise('foo.txt', 'This is content...')
- .then(function() {
- // do stuff
- });
-```
-
-### [.sync](index.js#L120)
-
-The synchronous version of [writeFile](#writefile). Returns undefined.
-
-**Params**
-
-* `filepath` **{string|Buffer|integer}**: filepath or file descriptor.
-* `data` **{string|Buffer|Uint8Array}**: String or buffer to write to disk.
-* `options` **{object}**: Options to pass to [fs.writeFileSync](https://nodejs.org/api/fs.html#fs_fs_writefilesync_file_data_options) and/or [mkdirp](https://github.com/substack/node-mkdirp)
-* `returns` **{undefined}**
-
-**Example**
-
-```js
-var writeFile = require('write');
-writeFile.sync('foo.txt', 'This is content...');
-```
-
-### [.stream](index.js#L151)
-
-Uses `fs.createWriteStream` to write data to a file, replacing the file if it already exists and creating any intermediate directories if they don't already exist. Data can be a string or a buffer. Returns a new [WriteStream](https://nodejs.org/api/fs.html#fs_class_fs_writestream) object.
-
-**Params**
-
-* `filepath` **{string|Buffer|integer}**: filepath or file descriptor.
-* `options` **{object}**: Options to pass to [mkdirp](https://github.com/substack/node-mkdirp) and [fs.createWriteStream](https://nodejs.org/api/fs.html#fs_fs_createwritestream_path_options)
-* `returns` **{Stream}**: Returns a new [WriteStream](https://nodejs.org/api/fs.html#fs_class_fs_writestream) object. (See [Writable Stream](https://nodejs.org/api/stream.html#stream_class_stream_writable)).
-
-**Example**
-
-```js
-var fs = require('fs');
-var writeFile = require('write');
-fs.createReadStream('README.md')
- .pipe(writeFile.stream('a/b/c/other-file.md'))
- .on('close', function() {
- // do stuff
- });
-```
-
-## Release history
-
-### v1.0.2 - 2017-07-11
-
-* improved documentation
-
-### v1.0.0 - 2017-07-09
-
-**Added**
-
-* [promise support](#promise)
-
-**Changed**
-
-* The main export will now return a promise if no callback is passed
-
-## About
-
-### Related projects
-
-* [delete](https://www.npmjs.com/package/delete): Delete files and folders and any intermediate directories if they exist (sync and async). | [homepage](https://github.com/jonschlinkert/delete "Delete files and folders and any intermediate directories if they exist (sync and async).")
-* [read-data](https://www.npmjs.com/package/read-data): Read JSON or YAML files. | [homepage](https://github.com/jonschlinkert/read-data "Read JSON or YAML files.")
-* [read-yaml](https://www.npmjs.com/package/read-yaml): Very thin wrapper around js-yaml for directly reading in YAML files. | [homepage](https://github.com/jonschlinkert/read-yaml "Very thin wrapper around js-yaml for directly reading in YAML files.")
-* [write-data](https://www.npmjs.com/package/write-data): Write a YAML or JSON file to disk. Automatically detects the format to write based… [more](https://github.com/jonschlinkert/write-data) | [homepage](https://github.com/jonschlinkert/write-data "Write a YAML or JSON file to disk. Automatically detects the format to write based on extension. Or pass `ext` on the options.")
-* [write-json](https://www.npmjs.com/package/write-json): Write a JSON file to disk, also creates intermediate directories in the destination path if… [more](https://github.com/jonschlinkert/write-json) | [homepage](https://github.com/jonschlinkert/write-json "Write a JSON file to disk, also creates intermediate directories in the destination path if they don't already exist.")
-* [write-yaml](https://www.npmjs.com/package/write-yaml): Write YAML. Converts JSON to YAML writes it to the specified file. | [homepage](https://github.com/jonschlinkert/write-yaml "Write YAML. Converts JSON to YAML writes it to the specified file.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 33 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 1 | [tunnckoCore](https://github.com/tunnckoCore) |
-
-### Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-### Running tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 11, 2017._ \ No newline at end of file
diff --git a/assets/node_modules/write/index.js b/assets/node_modules/write/index.js
deleted file mode 100644
index b2b4b43..0000000
--- a/assets/node_modules/write/index.js
+++ /dev/null
@@ -1,160 +0,0 @@
-/*!
- * write <https://github.com/jonschlinkert/write>
- *
- * Copyright (c) 2014-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-'use strict';
-
-var fs = require('fs');
-var path = require('path');
-var mkdirp = require('mkdirp');
-
-/**
- * Asynchronously writes data to a file, replacing the file if it already
- * exists and creating any intermediate directories if they don't already
- * exist. Data can be a string or a buffer. Returns a promise if a callback
- * function is not passed.
- *
- * ```js
- * var writeFile = require('write');
- * writeFile('foo.txt', 'This is content...', function(err) {
- * if (err) console.log(err);
- * });
- *
- * // promise
- * writeFile('foo.txt', 'This is content...')
- * .then(function() {
- * // do stuff
- * });
- * ```
- * @name writeFile
- * @param {string|Buffer|integer} `filepath` filepath or file descriptor.
- * @param {string|Buffer|Uint8Array} `data` String to write to disk.
- * @param {object} `options` Options to pass to [fs.writeFile][fs]{#fs_fs_writefile_file_data_options_callback} and/or [mkdirp][]
- * @param {Function} `callback` (optional) If no callback is provided, a promise is returned.
- * @api public
- */
-
-function writeFile(filepath, data, options, cb) {
- if (typeof options === 'function') {
- cb = options;
- options = {};
- }
-
- if (typeof cb !== 'function') {
- return writeFile.promise.apply(null, arguments);
- }
-
- if (typeof filepath !== 'string') {
- cb(new TypeError('expected filepath to be a string'));
- return;
- }
-
- mkdirp(path.dirname(filepath), options, function(err) {
- if (err) {
- cb(err);
- return;
- }
- fs.writeFile(filepath, data, options, cb);
- });
-};
-
-/**
- * The promise version of [writeFile](#writefile). Returns a promise.
- *
- * ```js
- * var writeFile = require('write');
- * writeFile.promise('foo.txt', 'This is content...')
- * .then(function() {
- * // do stuff
- * });
- * ```
- * @name .promise
- * @param {string|Buffer|integer} `filepath` filepath or file descriptor.
- * @param {string|Buffer|Uint8Array} `val` String or buffer to write to disk.
- * @param {object} `options` Options to pass to [fs.writeFile][fs]{#fs_fs_writefile_file_data_options_callback} and/or [mkdirp][]
- * @return {Promise}
- * @api public
- */
-
-writeFile.promise = function(filepath, val, options) {
- if (typeof filepath !== 'string') {
- return Promise.reject(new TypeError('expected filepath to be a string'));
- }
-
- return new Promise(function(resolve, reject) {
- mkdirp(path.dirname(filepath), options, function(err) {
- if (err) {
- reject(err);
- return;
- }
-
- fs.writeFile(filepath, val, options, function(err) {
- if (err) {
- reject(err);
- return;
- }
- resolve(val);
- });
- });
- });
-};
-
-/**
- * The synchronous version of [writeFile](#writefile). Returns undefined.
- *
- * ```js
- * var writeFile = require('write');
- * writeFile.sync('foo.txt', 'This is content...');
- * ```
- * @name .sync
- * @param {string|Buffer|integer} `filepath` filepath or file descriptor.
- * @param {string|Buffer|Uint8Array} `data` String or buffer to write to disk.
- * @param {object} `options` Options to pass to [fs.writeFileSync][fs]{#fs_fs_writefilesync_file_data_options} and/or [mkdirp][]
- * @return {undefined}
- * @api public
- */
-
-writeFile.sync = function(filepath, data, options) {
- if (typeof filepath !== 'string') {
- throw new TypeError('expected filepath to be a string');
- }
- mkdirp.sync(path.dirname(filepath), options);
- fs.writeFileSync(filepath, data, options);
-};
-
-/**
- * Uses `fs.createWriteStream` to write data to a file, replacing the
- * file if it already exists and creating any intermediate directories
- * if they don't already exist. Data can be a string or a buffer. Returns
- * a new [WriteStream](https://nodejs.org/api/fs.html#fs_class_fs_writestream)
- * object.
- *
- * ```js
- * var fs = require('fs');
- * var writeFile = require('write');
- * fs.createReadStream('README.md')
- * .pipe(writeFile.stream('a/b/c/other-file.md'))
- * .on('close', function() {
- * // do stuff
- * });
- * ```
- * @name .stream
- * @param {string|Buffer|integer} `filepath` filepath or file descriptor.
- * @param {object} `options` Options to pass to [mkdirp][] and [fs.createWriteStream][fs]{#fs_fs_createwritestream_path_options}
- * @return {Stream} Returns a new [WriteStream](https://nodejs.org/api/fs.html#fs_class_fs_writestream) object. (See [Writable Stream](https://nodejs.org/api/stream.html#stream_class_stream_writable)).
- * @api public
- */
-
-writeFile.stream = function(filepath, options) {
- mkdirp.sync(path.dirname(filepath), options);
- return fs.createWriteStream(filepath, options);
-};
-
-/**
- * Expose `writeFile`
- */
-
-module.exports = writeFile;
diff --git a/assets/node_modules/write/node_modules/.bin/mkdirp b/assets/node_modules/write/node_modules/.bin/mkdirp
deleted file mode 120000
index 91a5f62..0000000
--- a/assets/node_modules/write/node_modules/.bin/mkdirp
+++ /dev/null
@@ -1 +0,0 @@
-../../../mkdirp/bin/cmd.js \ No newline at end of file
diff --git a/assets/node_modules/write/package.json b/assets/node_modules/write/package.json
deleted file mode 100644
index 632c788..0000000
--- a/assets/node_modules/write/package.json
+++ /dev/null
@@ -1,74 +0,0 @@
-{
- "name": "write",
- "description": "Write data to a file, replacing the file if it already exists and creating any intermediate directories if they don't already exist. Thin wrapper around node's native fs methods.",
- "version": "1.0.3",
- "homepage": "https://github.com/jonschlinkert/write",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Charlike Mike Reagent (https://i.am.charlike.online)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)"
- ],
- "repository": "jonschlinkert/write",
- "bugs": {
- "url": "https://github.com/jonschlinkert/write/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "mkdirp": "^0.5.1"
- },
- "devDependencies": {
- "async-each": "^1.0.1",
- "delete": "^1.1.0",
- "gulp-format-md": "^1.0.0",
- "mocha": "^3.4.2"
- },
- "keywords": [
- "file",
- "filepath",
- "files",
- "filesystem",
- "folder",
- "fs",
- "fs.writeFile",
- "fs.writeFileSync",
- "path",
- "write"
- ],
- "verb": {
- "run": true,
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": [
- "delete",
- "read-data",
- "read-yaml",
- "write-data",
- "write-json",
- "write-yaml"
- ]
- },
- "reflinks": [
- "verb"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/assets/node_modules/x-is-string/.npmignore b/assets/node_modules/x-is-string/.npmignore
deleted file mode 100644
index 8363b8e..0000000
--- a/assets/node_modules/x-is-string/.npmignore
+++ /dev/null
@@ -1,16 +0,0 @@
-.DS_Store
-.monitor
-.*.swp
-.nodemonignore
-releases
-*.log
-*.err
-fleet.json
-public/browserify
-bin/*.json
-.bin
-build
-compile
-.lock-wscript
-coverage
-node_modules
diff --git a/assets/node_modules/x-is-string/.travis.yml b/assets/node_modules/x-is-string/.travis.yml
deleted file mode 100644
index 45734f2..0000000
--- a/assets/node_modules/x-is-string/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: node_js
-node_js:
- - 0.8
- - "0.10"
-before_script:
- - npm install
- - npm install istanbul coveralls
-script: npm run travis-test
diff --git a/assets/node_modules/x-is-string/LICENCE b/assets/node_modules/x-is-string/LICENCE
deleted file mode 100644
index 0d08340..0000000
--- a/assets/node_modules/x-is-string/LICENCE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014 Matt-Esch.
-
-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/assets/node_modules/x-is-string/README.md b/assets/node_modules/x-is-string/README.md
deleted file mode 100644
index 99977d4..0000000
--- a/assets/node_modules/x-is-string/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# x-is-string
-
-Simple string test
-
-## Example
-
-```js
-var isString = require("x-is-string")
-
-isString("hello")
-// -> true
-
-isString("")
-// -> true
-
-isString(new String("things"))
-// -> true
-
-isString(1)
-// -> false
-
-isString(true)
-// -> false
-
-isString(new Date())
-// -> false
-
-isString({})
-// -> false
-
-isString(null)
-// -> false
-
-isString(undefined)
-// -> false
-```
-
-## Installation
-
-`npm install x-is-string`
-
-## Contributors
-
- - Matt-Esch
-
-## MIT Licenced \ No newline at end of file
diff --git a/assets/node_modules/x-is-string/index.js b/assets/node_modules/x-is-string/index.js
deleted file mode 100644
index 090130d..0000000
--- a/assets/node_modules/x-is-string/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var toString = Object.prototype.toString
-
-module.exports = isString
-
-function isString(obj) {
- return toString.call(obj) === "[object String]"
-}
diff --git a/assets/node_modules/x-is-string/package.json b/assets/node_modules/x-is-string/package.json
deleted file mode 100644
index ea267ce..0000000
--- a/assets/node_modules/x-is-string/package.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "name": "x-is-string",
- "version": "0.1.0",
- "description": "Simple string test",
- "keywords": [],
- "author": "Matt-Esch <matt@mattesch.info>",
- "repository": "git://github.com/Matt-Esch/x-is-string.git",
- "main": "index",
- "homepage": "https://github.com/Matt-Esch/x-is-string",
- "contributors": [
- {
- "name": "Matt-Esch"
- }
- ],
- "bugs": {
- "url": "https://github.com/Matt-Esch/x-is-string/issues",
- "email": "matt@mattesch.info"
- },
- "dependencies": {},
- "devDependencies": {
- "tape": "^2.12.2"
- },
- "licenses": [
- {
- "type": "MIT",
- "url": "http://github.com/Matt-Esch/x-is-string/raw/master/LICENSE"
- }
- ],
- "scripts": {
- "test": "node ./test/index.js",
- "start": "node ./index.js",
- "watch": "nodemon -w ./index.js index.js",
- "travis-test": "istanbul cover ./test/index.js && ((cat coverage/lcov.info | coveralls) || exit 0)",
- "cover": "istanbul cover --report none --print detail ./test/index.js",
- "view-cover": "istanbul report html && google-chrome ./coverage/index.html",
- "test-browser": "testem-browser ./test/browser/index.js",
- "testem": "testem-both -b=./test/browser/index.js"
- },
- "testling": {
- "files": "test/index.js",
- "browsers": [
- "ie/8..latest",
- "firefox/16..latest",
- "firefox/nightly",
- "chrome/22..latest",
- "chrome/canary",
- "opera/12..latest",
- "opera/next",
- "safari/5.1..latest",
- "ipad/6.0..latest",
- "iphone/6.0..latest",
- "android-browser/4.2..latest"
- ]
- }
-}
diff --git a/assets/node_modules/x-is-string/test/index.js b/assets/node_modules/x-is-string/test/index.js
deleted file mode 100644
index 7caa5ab..0000000
--- a/assets/node_modules/x-is-string/test/index.js
+++ /dev/null
@@ -1,51 +0,0 @@
-var test = require("tape")
-
-var isString = require("../index")
-
-test("isString is a function", function (assert) {
- assert.equal(typeof isString, "function")
- assert.end()
-})
-
-test("string literal is truthy", function (assert) {
- assert.equal(isString("hello"), true)
- assert.end()
-})
-
-test("empty string is truthy", function (assert) {
- assert.equal(isString(""), true)
- assert.end()
-})
-
-test("string object is truthy", function (assert) {
- assert.equal(isString(new String("hello")), true)
- assert.end()
-})
-
-test("number is falsey", function (assert) {
- assert.equal(isString(9), false)
- assert.end()
-})
-
-test("boolean is falsey", function (assert) {
- assert.equal(isString(true), false)
- assert.end()
-})
-
-test("date is falsey", function (assert) {
- assert.equal(isString(new Date()), false)
- assert.end()
-})
-
-test("object is falsey", function (assert) {
- assert.equal(isString({}), false)
- assert.end()
-})
-test("null is falsey", function (assert) {
- assert.equal(isString(null), false)
- assert.end()
-})
-test("undefined is falsey", function (assert) {
- assert.equal(isString(undefined), false)
- assert.end()
-})
diff --git a/assets/node_modules/xtend/.jshintrc b/assets/node_modules/xtend/.jshintrc
deleted file mode 100644
index 77887b5..0000000
--- a/assets/node_modules/xtend/.jshintrc
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "maxdepth": 4,
- "maxstatements": 200,
- "maxcomplexity": 12,
- "maxlen": 80,
- "maxparams": 5,
-
- "curly": true,
- "eqeqeq": true,
- "immed": true,
- "latedef": false,
- "noarg": true,
- "noempty": true,
- "nonew": true,
- "undef": true,
- "unused": "vars",
- "trailing": true,
-
- "quotmark": true,
- "expr": true,
- "asi": true,
-
- "browser": false,
- "esnext": true,
- "devel": false,
- "node": false,
- "nonstandard": false,
-
- "predef": ["require", "module", "__dirname", "__filename"]
-}
diff --git a/assets/node_modules/xtend/LICENSE b/assets/node_modules/xtend/LICENSE
deleted file mode 100644
index 0099f4f..0000000
--- a/assets/node_modules/xtend/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-Copyright (c) 2012-2014 Raynos.
-
-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/assets/node_modules/xtend/README.md b/assets/node_modules/xtend/README.md
deleted file mode 100644
index 4a2703c..0000000
--- a/assets/node_modules/xtend/README.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# xtend
-
-[![browser support][3]][4]
-
-[![locked](http://badges.github.io/stability-badges/dist/locked.svg)](http://github.com/badges/stability-badges)
-
-Extend like a boss
-
-xtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes precedence.
-
-## Examples
-
-```js
-var extend = require("xtend")
-
-// extend returns a new object. Does not mutate arguments
-var combination = extend({
- a: "a",
- b: "c"
-}, {
- b: "b"
-})
-// { a: "a", b: "b" }
-```
-
-## Stability status: Locked
-
-## MIT Licensed
-
-
- [3]: http://ci.testling.com/Raynos/xtend.png
- [4]: http://ci.testling.com/Raynos/xtend
diff --git a/assets/node_modules/xtend/immutable.js b/assets/node_modules/xtend/immutable.js
deleted file mode 100644
index 94889c9..0000000
--- a/assets/node_modules/xtend/immutable.js
+++ /dev/null
@@ -1,19 +0,0 @@
-module.exports = extend
-
-var hasOwnProperty = Object.prototype.hasOwnProperty;
-
-function extend() {
- var target = {}
-
- for (var i = 0; i < arguments.length; i++) {
- var source = arguments[i]
-
- for (var key in source) {
- if (hasOwnProperty.call(source, key)) {
- target[key] = source[key]
- }
- }
- }
-
- return target
-}
diff --git a/assets/node_modules/xtend/mutable.js b/assets/node_modules/xtend/mutable.js
deleted file mode 100644
index 72debed..0000000
--- a/assets/node_modules/xtend/mutable.js
+++ /dev/null
@@ -1,17 +0,0 @@
-module.exports = extend
-
-var hasOwnProperty = Object.prototype.hasOwnProperty;
-
-function extend(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i]
-
- for (var key in source) {
- if (hasOwnProperty.call(source, key)) {
- target[key] = source[key]
- }
- }
- }
-
- return target
-}
diff --git a/assets/node_modules/xtend/package.json b/assets/node_modules/xtend/package.json
deleted file mode 100644
index f7a39d1..0000000
--- a/assets/node_modules/xtend/package.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "name": "xtend",
- "version": "4.0.2",
- "description": "extend like a boss",
- "keywords": [
- "extend",
- "merge",
- "options",
- "opts",
- "object",
- "array"
- ],
- "author": "Raynos <raynos2@gmail.com>",
- "repository": "git://github.com/Raynos/xtend.git",
- "main": "immutable",
- "scripts": {
- "test": "node test"
- },
- "dependencies": {},
- "devDependencies": {
- "tape": "~1.1.0"
- },
- "homepage": "https://github.com/Raynos/xtend",
- "contributors": [
- {
- "name": "Jake Verbaten"
- },
- {
- "name": "Matt Esch"
- }
- ],
- "bugs": {
- "url": "https://github.com/Raynos/xtend/issues",
- "email": "raynos2@gmail.com"
- },
- "license": "MIT",
- "testling": {
- "files": "test.js",
- "browsers": [
- "ie/7..latest",
- "firefox/16..latest",
- "firefox/nightly",
- "chrome/22..latest",
- "chrome/canary",
- "opera/12..latest",
- "opera/next",
- "safari/5.1..latest",
- "ipad/6.0..latest",
- "iphone/6.0..latest"
- ]
- },
- "engines": {
- "node": ">=0.4"
- }
-}
diff --git a/assets/node_modules/xtend/test.js b/assets/node_modules/xtend/test.js
deleted file mode 100644
index b895b42..0000000
--- a/assets/node_modules/xtend/test.js
+++ /dev/null
@@ -1,103 +0,0 @@
-var test = require("tape")
-var extend = require("./")
-var mutableExtend = require("./mutable")
-
-test("merge", function(assert) {
- var a = { a: "foo" }
- var b = { b: "bar" }
-
- assert.deepEqual(extend(a, b), { a: "foo", b: "bar" })
- assert.end()
-})
-
-test("replace", function(assert) {
- var a = { a: "foo" }
- var b = { a: "bar" }
-
- assert.deepEqual(extend(a, b), { a: "bar" })
- assert.end()
-})
-
-test("undefined", function(assert) {
- var a = { a: undefined }
- var b = { b: "foo" }
-
- assert.deepEqual(extend(a, b), { a: undefined, b: "foo" })
- assert.deepEqual(extend(b, a), { a: undefined, b: "foo" })
- assert.end()
-})
-
-test("handle 0", function(assert) {
- var a = { a: "default" }
- var b = { a: 0 }
-
- assert.deepEqual(extend(a, b), { a: 0 })
- assert.deepEqual(extend(b, a), { a: "default" })
- assert.end()
-})
-
-test("is immutable", function (assert) {
- var record = {}
-
- extend(record, { foo: "bar" })
- assert.equal(record.foo, undefined)
- assert.end()
-})
-
-test("null as argument", function (assert) {
- var a = { foo: "bar" }
- var b = null
- var c = void 0
-
- assert.deepEqual(extend(b, a, c), { foo: "bar" })
- assert.end()
-})
-
-test("mutable", function (assert) {
- var a = { foo: "bar" }
-
- mutableExtend(a, { bar: "baz" })
-
- assert.equal(a.bar, "baz")
- assert.end()
-})
-
-test("null prototype", function(assert) {
- var a = { a: "foo" }
- var b = Object.create(null)
- b.b = "bar";
-
- assert.deepEqual(extend(a, b), { a: "foo", b: "bar" })
- assert.end()
-})
-
-test("null prototype mutable", function (assert) {
- var a = { foo: "bar" }
- var b = Object.create(null)
- b.bar = "baz";
-
- mutableExtend(a, b)
-
- assert.equal(a.bar, "baz")
- assert.end()
-})
-
-test("prototype pollution", function (assert) {
- var a = {}
- var maliciousPayload = '{"__proto__":{"oops":"It works!"}}'
-
- assert.strictEqual(a.oops, undefined)
- extend({}, maliciousPayload)
- assert.strictEqual(a.oops, undefined)
- assert.end()
-})
-
-test("prototype pollution mutable", function (assert) {
- var a = {}
- var maliciousPayload = '{"__proto__":{"oops":"It works!"}}'
-
- assert.strictEqual(a.oops, undefined)
- mutableExtend({}, maliciousPayload)
- assert.strictEqual(a.oops, undefined)
- assert.end()
-})
diff --git a/assets/node_modules/yaml/LICENSE b/assets/node_modules/yaml/LICENSE
deleted file mode 100644
index 7ca44e3..0000000
--- a/assets/node_modules/yaml/LICENSE
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright 2018 Eemeli Aro <eemeli@gmail.com>
-
-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/assets/node_modules/yaml/README.md b/assets/node_modules/yaml/README.md
deleted file mode 100644
index 65d998b..0000000
--- a/assets/node_modules/yaml/README.md
+++ /dev/null
@@ -1,127 +0,0 @@
-# YAML <a href="https://www.npmjs.com/package/yaml"><img align="right" src="https://badge.fury.io/js/yaml.svg" title="npm package" /></a><a href="https://travis-ci.org/eemeli/yaml"><img align="right" src="https://travis-ci.org/eemeli/yaml.svg?branch=master" title="Build status" /></a>
-
-`yaml` is a JavaScript parser and stringifier for [YAML](http://yaml.org/), a human friendly data serialization standard. It supports both parsing and stringifying data using all versions of YAML, along with all common data schemas. As a particularly distinguishing feature, `yaml` fully supports reading and writing comments and blank lines in YAML documents.
-
-The library is released under the ISC open source license, and the code is [available on GitHub](https://github.com/eemeli/yaml/). It runs on Node.js 6 and later with no external dependencies, and in browsers from IE 11 upwards (Note: `@babel/runtime` is used only by the `"browser"` entry point).
-
-For more information, see the project's documentation site: [**eemeli.org/yaml**](https://eemeli.org/yaml/)
-
-> To install:
-
-```sh
-npm install yaml
-# or
-yarn add yaml
-```
-
-Note: `yaml` 0.x and 1.x are rather different implementations. For the earlier `yaml`, see [tj/js-yaml](https://github.com/tj/js-yaml).
-
-## API Overview
-
-The API provided by `yaml` has three layers, depending on how deep you need to go: [Parse & Stringify](https://eemeli.org/yaml/#parse-amp-stringify), [Documents](https://eemeli.org/yaml/#documents), and the [CST Parser](https://eemeli.org/yaml/#cst-parser). The first has the simplest API and "just works", the second gets you all the bells and whistles supported by the library along with a decent [AST](https://eemeli.org/yaml/#content-nodes), and the third is the closest to YAML source, making it fast, raw, and crude.
-
-```js
-import YAML from 'yaml'
-// or
-const YAML = require('yaml')
-```
-
-### Parse & Stringify
-
-- [`YAML.parse(str, options): value`](https://eemeli.org/yaml/#yaml-parse)
-- [`YAML.stringify(value, options): string`](https://eemeli.org/yaml/#yaml-stringify)
-
-### YAML Documents
-
-- [`YAML.createNode(value, wrapScalars, tag): Node`](https://eemeli.org/yaml/#creating-nodes)
-- [`YAML.defaultOptions`](https://eemeli.org/yaml/#options)
-- [`YAML.Document`](https://eemeli.org/yaml/#yaml-documents)
- - [`constructor(options)`](https://eemeli.org/yaml/#creating-documents)
- - [`defaults`](https://eemeli.org/yaml/#options)
- - [`#anchors`](https://eemeli.org/yaml/#working-with-anchors)
- - [`#contents`](https://eemeli.org/yaml/#content-nodes)
- - [`#errors`](https://eemeli.org/yaml/#errors)
-- [`YAML.parseAllDocuments(str, options): YAML.Document[]`](https://eemeli.org/yaml/#parsing-documents)
-- [`YAML.parseDocument(str, options): YAML.Document`](https://eemeli.org/yaml/#parsing-documents)
-
-```js
-import { Pair, YAMLMap, YAMLSeq } from 'yaml/types'
-```
-
-- [`new Pair(key, value)`](https://eemeli.org/yaml/#creating-nodes)
-- [`new YAMLMap()`](https://eemeli.org/yaml/#creating-nodes)
-- [`new YAMLSeq()`](https://eemeli.org/yaml/#creating-nodes)
-
-### CST Parser
-
-```js
-import parseCST from 'yaml/parse-cst'
-```
-
-- [`parseCST(str): CSTDocument[]`](https://eemeli.org/yaml/#parsecst)
-- [`YAML.parseCST(str): CSTDocument[]`](https://eemeli.org/yaml/#parsecst)
-
-## YAML.parse
-
-```yaml
-# file.yml
-YAML:
- - A human-readable data serialization language
- - https://en.wikipedia.org/wiki/YAML
-yaml:
- - A complete JavaScript implementation
- - https://www.npmjs.com/package/yaml
-```
-
-```js
-import fs from 'fs'
-import YAML from 'yaml'
-
-YAML.parse('3.14159')
-// 3.14159
-
-YAML.parse('[ true, false, maybe, null ]\n')
-// [ true, false, 'maybe', null ]
-
-const file = fs.readFileSync('./file.yml', 'utf8')
-YAML.parse(file)
-// { YAML:
-// [ 'A human-readable data serialization language',
-// 'https://en.wikipedia.org/wiki/YAML' ],
-// yaml:
-// [ 'A complete JavaScript implementation',
-// 'https://www.npmjs.com/package/yaml' ] }
-```
-
-## YAML.stringify
-
-```js
-import YAML from 'yaml'
-
-YAML.stringify(3.14159)
-// '3.14159\n'
-
-YAML.stringify([true, false, 'maybe', null])
-// `- true
-// - false
-// - maybe
-// - null
-// `
-
-YAML.stringify({ number: 3, plain: 'string', block: 'two\nlines\n' })
-// `number: 3
-// plain: string
-// block: >
-// two
-//
-// lines
-// `
-```
-
----
-
-Browser testing provided by:
-
-<a href="https://www.browserstack.com/open-source">
-<img width=200 src="https://eemeli.org/yaml/images/browserstack.svg" />
-</a>
diff --git a/assets/node_modules/yaml/browser/dist/Anchors.js b/assets/node_modules/yaml/browser/dist/Anchors.js
deleted file mode 100644
index a099f09..0000000
--- a/assets/node_modules/yaml/browser/dist/Anchors.js
+++ /dev/null
@@ -1,148 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
-
-var _Alias = _interopRequireDefault(require("./schema/Alias"));
-
-var _Map = _interopRequireDefault(require("./schema/Map"));
-
-var _Merge = _interopRequireDefault(require("./schema/Merge"));
-
-var _Scalar = _interopRequireDefault(require("./schema/Scalar"));
-
-var _Seq = _interopRequireDefault(require("./schema/Seq"));
-
-var Anchors =
-/*#__PURE__*/
-function () {
- (0, _createClass2.default)(Anchors, null, [{
- key: "validAnchorNode",
- value: function validAnchorNode(node) {
- return node instanceof _Scalar.default || node instanceof _Seq.default || node instanceof _Map.default;
- }
- }]);
-
- function Anchors(prefix) {
- (0, _classCallCheck2.default)(this, Anchors);
- (0, _defineProperty2.default)(this, "map", {});
- this.prefix = prefix;
- }
-
- (0, _createClass2.default)(Anchors, [{
- key: "createAlias",
- value: function createAlias(node, name) {
- this.setAnchor(node, name);
- return new _Alias.default(node);
- }
- }, {
- key: "createMergePair",
- value: function createMergePair() {
- var _this = this;
-
- var merge = new _Merge.default();
-
- for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {
- sources[_key] = arguments[_key];
- }
-
- merge.value.items = sources.map(function (s) {
- if (s instanceof _Alias.default) {
- if (s.source instanceof _Map.default) return s;
- } else if (s instanceof _Map.default) {
- return _this.createAlias(s);
- }
-
- throw new Error('Merge sources must be Map nodes or their Aliases');
- });
- return merge;
- }
- }, {
- key: "getName",
- value: function getName(node) {
- var map = this.map;
- return Object.keys(map).find(function (a) {
- return map[a] === node;
- });
- }
- }, {
- key: "getNode",
- value: function getNode(name) {
- return this.map[name];
- }
- }, {
- key: "newName",
- value: function newName(prefix) {
- if (!prefix) prefix = this.prefix;
- var names = Object.keys(this.map);
-
- for (var i = 1; true; ++i) {
- var name = "".concat(prefix).concat(i);
- if (!names.includes(name)) return name;
- }
- } // During parsing, map & aliases contain CST nodes
-
- }, {
- key: "resolveNodes",
- value: function resolveNodes() {
- var map = this.map,
- _cstAliases = this._cstAliases;
- Object.keys(map).forEach(function (a) {
- map[a] = map[a].resolved;
- });
-
- _cstAliases.forEach(function (a) {
- a.source = a.source.resolved;
- });
-
- delete this._cstAliases;
- }
- }, {
- key: "setAnchor",
- value: function setAnchor(node, name) {
- if (node != null && !Anchors.validAnchorNode(node)) {
- throw new Error('Anchors may only be set for Scalar, Seq and Map nodes');
- }
-
- if (name && /[\x00-\x19\s,[\]{}]/.test(name)) {
- throw new Error('Anchor names must not contain whitespace or control characters');
- }
-
- var map = this.map;
- var prev = node && Object.keys(map).find(function (a) {
- return map[a] === node;
- });
-
- if (prev) {
- if (!name) {
- return prev;
- } else if (prev !== name) {
- delete map[prev];
- map[name] = node;
- }
- } else {
- if (!name) {
- if (!node) return null;
- name = this.newName();
- }
-
- map[name] = node;
- }
-
- return name;
- }
- }]);
- return Anchors;
-}();
-
-exports.default = Anchors; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/Document.js b/assets/node_modules/yaml/browser/dist/Document.js
deleted file mode 100644
index 8d871d5..0000000
--- a/assets/node_modules/yaml/browser/dist/Document.js
+++ /dev/null
@@ -1,843 +0,0 @@
-"use strict";
-
-var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
-
-var _addComment = _interopRequireDefault(require("./addComment"));
-
-var _Anchors = _interopRequireDefault(require("./Anchors"));
-
-var _constants = require("./constants");
-
-var _errors = require("./errors");
-
-var _listTagNames = _interopRequireDefault(require("./listTagNames"));
-
-var _schema = _interopRequireDefault(require("./schema"));
-
-var _Alias = _interopRequireDefault(require("./schema/Alias"));
-
-var _Collection = _interopRequireWildcard(require("./schema/Collection"));
-
-var _Node = _interopRequireDefault(require("./schema/Node"));
-
-var _Scalar = _interopRequireDefault(require("./schema/Scalar"));
-
-var _toJSON2 = _interopRequireDefault(require("./toJSON"));
-
-var isCollectionItem = function isCollectionItem(node) {
- return node && [_constants.Type.MAP_KEY, _constants.Type.MAP_VALUE, _constants.Type.SEQ_ITEM].includes(node.type);
-};
-
-var Document =
-/*#__PURE__*/
-function () {
- function Document(options) {
- (0, _classCallCheck2.default)(this, Document);
- this.anchors = new _Anchors.default(options.anchorPrefix);
- this.commentBefore = null;
- this.comment = null;
- this.contents = null;
- this.directivesEndMarker = null;
- this.errors = [];
- this.options = options;
- this.schema = null;
- this.tagPrefixes = [];
- this.version = null;
- this.warnings = [];
- }
-
- (0, _createClass2.default)(Document, [{
- key: "assertCollectionContents",
- value: function assertCollectionContents() {
- if (this.contents instanceof _Collection.default) return true;
- throw new Error('Expected a YAML collection as document contents');
- }
- }, {
- key: "add",
- value: function add(value) {
- this.assertCollectionContents();
- return this.contents.add(value);
- }
- }, {
- key: "addIn",
- value: function addIn(path, value) {
- this.assertCollectionContents();
- this.contents.addIn(path, value);
- }
- }, {
- key: "delete",
- value: function _delete(key) {
- this.assertCollectionContents();
- return this.contents.delete(key);
- }
- }, {
- key: "deleteIn",
- value: function deleteIn(path) {
- if ((0, _Collection.isEmptyPath)(path)) {
- if (this.contents == null) return false;
- this.contents = null;
- return true;
- }
-
- this.assertCollectionContents();
- return this.contents.deleteIn(path);
- }
- }, {
- key: "getDefaults",
- value: function getDefaults() {
- return Document.defaults[this.version] || Document.defaults[this.options.version] || {};
- }
- }, {
- key: "get",
- value: function get(key, keepScalar) {
- return this.contents instanceof _Collection.default ? this.contents.get(key, keepScalar) : undefined;
- }
- }, {
- key: "getIn",
- value: function getIn(path, keepScalar) {
- if ((0, _Collection.isEmptyPath)(path)) return !keepScalar && this.contents instanceof _Scalar.default ? this.contents.value : this.contents;
- return this.contents instanceof _Collection.default ? this.contents.getIn(path, keepScalar) : undefined;
- }
- }, {
- key: "has",
- value: function has(key) {
- return this.contents instanceof _Collection.default ? this.contents.has(key) : false;
- }
- }, {
- key: "hasIn",
- value: function hasIn(path) {
- if ((0, _Collection.isEmptyPath)(path)) return this.contents !== undefined;
- return this.contents instanceof _Collection.default ? this.contents.hasIn(path) : false;
- }
- }, {
- key: "set",
- value: function set(key, value) {
- this.assertCollectionContents();
- this.contents.set(key, value);
- }
- }, {
- key: "setIn",
- value: function setIn(path, value) {
- if ((0, _Collection.isEmptyPath)(path)) this.contents = value;else {
- this.assertCollectionContents();
- this.contents.setIn(path, value);
- }
- }
- }, {
- key: "setSchema",
- value: function setSchema(id, customTags) {
- if (!id && !customTags && this.schema) return;
- if (typeof id === 'number') id = id.toFixed(1);
-
- if (id === '1.0' || id === '1.1' || id === '1.2') {
- if (this.version) this.version = id;else this.options.version = id;
- delete this.options.schema;
- } else if (id && typeof id === 'string') {
- this.options.schema = id;
- }
-
- if (Array.isArray(customTags)) this.options.customTags = customTags;
- var opt = Object.assign({}, this.getDefaults(), this.options);
- this.schema = new _schema.default(opt);
- }
- }, {
- key: "parse",
- value: function parse(node, prevDoc) {
- if (this.options.keepCstNodes) this.cstNode = node;
- if (this.options.keepNodeTypes) this.type = 'DOCUMENT';
- var _node$directives = node.directives,
- directives = _node$directives === void 0 ? [] : _node$directives,
- _node$contents = node.contents,
- contents = _node$contents === void 0 ? [] : _node$contents,
- directivesEndMarker = node.directivesEndMarker,
- error = node.error,
- valueRange = node.valueRange;
-
- if (error) {
- if (!error.source) error.source = this;
- this.errors.push(error);
- }
-
- this.parseDirectives(directives, prevDoc);
- if (directivesEndMarker) this.directivesEndMarker = true;
- this.range = valueRange ? [valueRange.start, valueRange.end] : null;
- this.setSchema();
- this.anchors._cstAliases = [];
- this.parseContents(contents);
- this.anchors.resolveNodes();
-
- if (this.options.prettyErrors) {
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = this.errors[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var _error = _step.value;
- if (_error instanceof _errors.YAMLError) _error.makePretty();
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-
- var _iteratorNormalCompletion2 = true;
- var _didIteratorError2 = false;
- var _iteratorError2 = undefined;
-
- try {
- for (var _iterator2 = this.warnings[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
- var warn = _step2.value;
- if (warn instanceof _errors.YAMLError) warn.makePretty();
- }
- } catch (err) {
- _didIteratorError2 = true;
- _iteratorError2 = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
- _iterator2.return();
- }
- } finally {
- if (_didIteratorError2) {
- throw _iteratorError2;
- }
- }
- }
- }
-
- return this;
- }
- }, {
- key: "parseDirectives",
- value: function parseDirectives(directives, prevDoc) {
- var _this = this;
-
- var directiveComments = [];
- var hasDirectives = false;
- directives.forEach(function (directive) {
- var comment = directive.comment,
- name = directive.name;
-
- switch (name) {
- case 'TAG':
- _this.resolveTagDirective(directive);
-
- hasDirectives = true;
- break;
-
- case 'YAML':
- case 'YAML:1.0':
- _this.resolveYamlDirective(directive);
-
- hasDirectives = true;
- break;
-
- default:
- if (name) {
- var msg = "YAML only supports %TAG and %YAML directives, and not %".concat(name);
-
- _this.warnings.push(new _errors.YAMLWarning(directive, msg));
- }
-
- }
-
- if (comment) directiveComments.push(comment);
- });
-
- if (prevDoc && !hasDirectives && '1.1' === (this.version || prevDoc.version || this.options.version)) {
- var copyTagPrefix = function copyTagPrefix(_ref) {
- var handle = _ref.handle,
- prefix = _ref.prefix;
- return {
- handle: handle,
- prefix: prefix
- };
- };
-
- this.tagPrefixes = prevDoc.tagPrefixes.map(copyTagPrefix);
- this.version = prevDoc.version;
- }
-
- this.commentBefore = directiveComments.join('\n') || null;
- }
- }, {
- key: "parseContents",
- value: function parseContents(contents) {
- var _this2 = this;
-
- var comments = {
- before: [],
- after: []
- };
- var contentNodes = [];
- var spaceBefore = false;
- contents.forEach(function (node) {
- if (node.valueRange) {
- if (contentNodes.length === 1) {
- var msg = 'Document is not valid YAML (bad indentation?)';
-
- _this2.errors.push(new _errors.YAMLSyntaxError(node, msg));
- }
-
- var res = _this2.resolveNode(node);
-
- if (spaceBefore) {
- res.spaceBefore = true;
- spaceBefore = false;
- }
-
- contentNodes.push(res);
- } else if (node.comment !== null) {
- var cc = contentNodes.length === 0 ? comments.before : comments.after;
- cc.push(node.comment);
- } else if (node.type === _constants.Type.BLANK_LINE) {
- spaceBefore = true;
-
- if (contentNodes.length === 0 && comments.before.length > 0 && !_this2.commentBefore) {
- // space-separated comments at start are parsed as document comments
- _this2.commentBefore = comments.before.join('\n');
- comments.before = [];
- }
- }
- });
-
- switch (contentNodes.length) {
- case 0:
- this.contents = null;
- comments.after = comments.before;
- break;
-
- case 1:
- this.contents = contentNodes[0];
-
- if (this.contents) {
- var cb = comments.before.join('\n') || null;
-
- if (cb) {
- var cbNode = this.contents instanceof _Collection.default && this.contents.items[0] ? this.contents.items[0] : this.contents;
- cbNode.commentBefore = cbNode.commentBefore ? "".concat(cb, "\n").concat(cbNode.commentBefore) : cb;
- }
- } else {
- comments.after = comments.before.concat(comments.after);
- }
-
- break;
-
- default:
- this.contents = contentNodes;
-
- if (this.contents[0]) {
- this.contents[0].commentBefore = comments.before.join('\n') || null;
- } else {
- comments.after = comments.before.concat(comments.after);
- }
-
- }
-
- this.comment = comments.after.join('\n') || null;
- }
- }, {
- key: "resolveTagDirective",
- value: function resolveTagDirective(directive) {
- var _directive$parameters = (0, _slicedToArray2.default)(directive.parameters, 2),
- handle = _directive$parameters[0],
- prefix = _directive$parameters[1];
-
- if (handle && prefix) {
- if (this.tagPrefixes.every(function (p) {
- return p.handle !== handle;
- })) {
- this.tagPrefixes.push({
- handle: handle,
- prefix: prefix
- });
- } else {
- var msg = 'The %TAG directive must only be given at most once per handle in the same document.';
- this.errors.push(new _errors.YAMLSemanticError(directive, msg));
- }
- } else {
- var _msg = 'Insufficient parameters given for %TAG directive';
- this.errors.push(new _errors.YAMLSemanticError(directive, _msg));
- }
- }
- }, {
- key: "resolveYamlDirective",
- value: function resolveYamlDirective(directive) {
- var _directive$parameters2 = (0, _slicedToArray2.default)(directive.parameters, 1),
- version = _directive$parameters2[0];
-
- if (directive.name === 'YAML:1.0') version = '1.0';
-
- if (this.version) {
- var msg = 'The %YAML directive must only be given at most once per document.';
- this.errors.push(new _errors.YAMLSemanticError(directive, msg));
- }
-
- if (!version) {
- var _msg2 = 'Insufficient parameters given for %YAML directive';
- this.errors.push(new _errors.YAMLSemanticError(directive, _msg2));
- } else {
- if (!Document.defaults[version]) {
- var v0 = this.version || this.options.version;
-
- var _msg3 = "Document will be parsed as YAML ".concat(v0, " rather than YAML ").concat(version);
-
- this.warnings.push(new _errors.YAMLWarning(directive, _msg3));
- }
-
- this.version = version;
- }
- }
- }, {
- key: "resolveTagName",
- value: function resolveTagName(node) {
- var tag = node.tag,
- type = node.type;
- var nonSpecific = false;
-
- if (tag) {
- var handle = tag.handle,
- suffix = tag.suffix,
- verbatim = tag.verbatim;
-
- if (verbatim) {
- if (verbatim !== '!' && verbatim !== '!!') return verbatim;
- var msg = "Verbatim tags aren't resolved, so ".concat(verbatim, " is invalid.");
- this.errors.push(new _errors.YAMLSemanticError(node, msg));
- } else if (handle === '!' && !suffix) {
- nonSpecific = true;
- } else {
- var prefix = this.tagPrefixes.find(function (p) {
- return p.handle === handle;
- });
-
- if (!prefix) {
- var dtp = this.getDefaults().tagPrefixes;
- if (dtp) prefix = dtp.find(function (p) {
- return p.handle === handle;
- });
- }
-
- if (prefix) {
- if (suffix) {
- if (handle === '!' && (this.version || this.options.version) === '1.0') {
- if (suffix[0] === '^') return suffix;
-
- if (/[:/]/.test(suffix)) {
- // word/foo -> tag:word.yaml.org,2002:foo
- var vocab = suffix.match(/^([a-z0-9-]+)\/(.*)/i);
- return vocab ? "tag:".concat(vocab[1], ".yaml.org,2002:").concat(vocab[2]) : "tag:".concat(suffix);
- }
- }
-
- return prefix.prefix + decodeURIComponent(suffix);
- }
-
- this.errors.push(new _errors.YAMLSemanticError(node, "The ".concat(handle, " tag has no suffix.")));
- } else {
- var _msg4 = "The ".concat(handle, " tag handle is non-default and was not declared.");
-
- this.errors.push(new _errors.YAMLSemanticError(node, _msg4));
- }
- }
- }
-
- switch (type) {
- case _constants.Type.BLOCK_FOLDED:
- case _constants.Type.BLOCK_LITERAL:
- case _constants.Type.QUOTE_DOUBLE:
- case _constants.Type.QUOTE_SINGLE:
- return _schema.default.defaultTags.STR;
-
- case _constants.Type.FLOW_MAP:
- case _constants.Type.MAP:
- return _schema.default.defaultTags.MAP;
-
- case _constants.Type.FLOW_SEQ:
- case _constants.Type.SEQ:
- return _schema.default.defaultTags.SEQ;
-
- case _constants.Type.PLAIN:
- return nonSpecific ? _schema.default.defaultTags.STR : null;
-
- default:
- return null;
- }
- }
- }, {
- key: "resolveNode",
- value: function resolveNode(node) {
- if (!node) return null;
- var anchors = this.anchors,
- errors = this.errors,
- schema = this.schema;
- var hasAnchor = false;
- var hasTag = false;
- var comments = {
- before: [],
- after: []
- };
- var props = isCollectionItem(node.context.parent) ? node.context.parent.props.concat(node.props) : node.props;
- var _iteratorNormalCompletion3 = true;
- var _didIteratorError3 = false;
- var _iteratorError3 = undefined;
-
- try {
- for (var _iterator3 = props[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
- var _step3$value = _step3.value,
- start = _step3$value.start,
- end = _step3$value.end;
-
- switch (node.context.src[start]) {
- case _constants.Char.COMMENT:
- {
- if (!node.commentHasRequiredWhitespace(start)) {
- var _msg7 = 'Comments must be separated from other tokens by white space characters';
- errors.push(new _errors.YAMLSemanticError(node, _msg7));
- }
-
- var c = node.context.src.slice(start + 1, end);
- var header = node.header,
- valueRange = node.valueRange;
-
- if (valueRange && (start > valueRange.start || header && start > header.start)) {
- comments.after.push(c);
- } else {
- comments.before.push(c);
- }
- }
- break;
-
- case _constants.Char.ANCHOR:
- if (hasAnchor) {
- var _msg8 = 'A node can have at most one anchor';
- errors.push(new _errors.YAMLSemanticError(node, _msg8));
- }
-
- hasAnchor = true;
- break;
-
- case _constants.Char.TAG:
- if (hasTag) {
- var _msg9 = 'A node can have at most one tag';
- errors.push(new _errors.YAMLSemanticError(node, _msg9));
- }
-
- hasTag = true;
- break;
- }
- }
- } catch (err) {
- _didIteratorError3 = true;
- _iteratorError3 = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
- _iterator3.return();
- }
- } finally {
- if (_didIteratorError3) {
- throw _iteratorError3;
- }
- }
- }
-
- if (hasAnchor) {
- var name = node.anchor;
- var prev = anchors.getNode(name); // At this point, aliases for any preceding node with the same anchor
- // name have already been resolved, so it may safely be renamed.
-
- if (prev) anchors.map[anchors.newName(name)] = prev; // During parsing, we need to store the CST node in anchors.map as
- // anchors need to be available during resolution to allow for
- // circular references.
-
- anchors.map[name] = node;
- }
-
- var res;
-
- if (node.type === _constants.Type.ALIAS) {
- if (hasAnchor || hasTag) {
- var msg = 'An alias node must not specify any properties';
- errors.push(new _errors.YAMLSemanticError(node, msg));
- }
-
- var _name = node.rawValue;
- var src = anchors.getNode(_name);
-
- if (!src) {
- var _msg5 = "Aliased anchor not found: ".concat(_name);
-
- errors.push(new _errors.YAMLReferenceError(node, _msg5));
- return null;
- } // Lazy resolution for circular references
-
-
- res = new _Alias.default(src);
-
- anchors._cstAliases.push(res);
- } else {
- var tagName = this.resolveTagName(node);
-
- if (tagName) {
- res = schema.resolveNodeWithFallback(this, node, tagName);
- } else {
- if (node.type !== _constants.Type.PLAIN) {
- var _msg6 = "Failed to resolve ".concat(node.type, " node here");
-
- errors.push(new _errors.YAMLSyntaxError(node, _msg6));
- return null;
- }
-
- try {
- res = schema.resolveScalar(node.strValue || '');
- } catch (error) {
- if (!error.source) error.source = node;
- errors.push(error);
- return null;
- }
- }
- }
-
- if (res) {
- res.range = [node.range.start, node.range.end];
- if (this.options.keepCstNodes) res.cstNode = node;
- if (this.options.keepNodeTypes) res.type = node.type;
- var cb = comments.before.join('\n');
-
- if (cb) {
- res.commentBefore = res.commentBefore ? "".concat(res.commentBefore, "\n").concat(cb) : cb;
- }
-
- var ca = comments.after.join('\n');
- if (ca) res.comment = res.comment ? "".concat(res.comment, "\n").concat(ca) : ca;
- }
-
- return node.resolved = res;
- }
- }, {
- key: "listNonDefaultTags",
- value: function listNonDefaultTags() {
- return (0, _listTagNames.default)(this.contents).filter(function (t) {
- return t.indexOf(_schema.default.defaultPrefix) !== 0;
- });
- }
- }, {
- key: "setTagPrefix",
- value: function setTagPrefix(handle, prefix) {
- if (handle[0] !== '!' || handle[handle.length - 1] !== '!') throw new Error('Handle must start and end with !');
-
- if (prefix) {
- var prev = this.tagPrefixes.find(function (p) {
- return p.handle === handle;
- });
- if (prev) prev.prefix = prefix;else this.tagPrefixes.push({
- handle: handle,
- prefix: prefix
- });
- } else {
- this.tagPrefixes = this.tagPrefixes.filter(function (p) {
- return p.handle !== handle;
- });
- }
- }
- }, {
- key: "stringifyTag",
- value: function stringifyTag(tag) {
- if ((this.version || this.options.version) === '1.0') {
- var priv = tag.match(/^tag:private\.yaml\.org,2002:([^:/]+)$/);
- if (priv) return '!' + priv[1];
- var vocab = tag.match(/^tag:([a-zA-Z0-9-]+)\.yaml\.org,2002:(.*)/);
- return vocab ? "!".concat(vocab[1], "/").concat(vocab[2]) : "!".concat(tag.replace(/^tag:/, ''));
- } else {
- var p = this.tagPrefixes.find(function (p) {
- return tag.indexOf(p.prefix) === 0;
- });
-
- if (!p) {
- var dtp = this.getDefaults().tagPrefixes;
- p = dtp && dtp.find(function (p) {
- return tag.indexOf(p.prefix) === 0;
- });
- }
-
- if (!p) return tag[0] === '!' ? tag : "!<".concat(tag, ">");
- var suffix = tag.substr(p.prefix.length).replace(/[!,[\]{}]/g, function (ch) {
- return {
- '!': '%21',
- ',': '%2C',
- '[': '%5B',
- ']': '%5D',
- '{': '%7B',
- '}': '%7D'
- }[ch];
- });
- return p.handle + suffix;
- }
- }
- }, {
- key: "toJSON",
- value: function toJSON(arg) {
- var _this3 = this;
-
- var _this$options = this.options,
- keepBlobsInJSON = _this$options.keepBlobsInJSON,
- mapAsMap = _this$options.mapAsMap,
- maxAliasCount = _this$options.maxAliasCount;
- var keep = keepBlobsInJSON && (typeof arg !== 'string' || !(this.contents instanceof _Scalar.default));
- var ctx = {
- doc: this,
- keep: keep,
- mapAsMap: keep && !!mapAsMap,
- maxAliasCount: maxAliasCount
- };
- var anchorNames = Object.keys(this.anchors.map);
- if (anchorNames.length > 0) ctx.anchors = anchorNames.map(function (name) {
- return {
- alias: [],
- aliasCount: 0,
- count: 1,
- node: _this3.anchors.map[name]
- };
- });
- return (0, _toJSON2.default)(this.contents, arg, ctx);
- }
- }, {
- key: "toString",
- value: function toString() {
- if (this.errors.length > 0) throw new Error('Document with errors cannot be stringified');
- this.setSchema();
- var lines = [];
- var hasDirectives = false;
-
- if (this.version) {
- var vd = '%YAML 1.2';
-
- if (this.schema.name === 'yaml-1.1') {
- if (this.version === '1.0') vd = '%YAML:1.0';else if (this.version === '1.1') vd = '%YAML 1.1';
- }
-
- lines.push(vd);
- hasDirectives = true;
- }
-
- var tagNames = this.listNonDefaultTags();
- this.tagPrefixes.forEach(function (_ref2) {
- var handle = _ref2.handle,
- prefix = _ref2.prefix;
-
- if (tagNames.some(function (t) {
- return t.indexOf(prefix) === 0;
- })) {
- lines.push("%TAG ".concat(handle, " ").concat(prefix));
- hasDirectives = true;
- }
- });
- if (hasDirectives || this.directivesEndMarker) lines.push('---');
-
- if (this.commentBefore) {
- if (hasDirectives || !this.directivesEndMarker) lines.unshift('');
- lines.unshift(this.commentBefore.replace(/^/gm, '#'));
- }
-
- var ctx = {
- anchors: {},
- doc: this,
- indent: ''
- };
- var chompKeep = false;
- var contentComment = null;
-
- if (this.contents) {
- if (this.contents instanceof _Node.default) {
- if (this.contents.spaceBefore && (hasDirectives || this.directivesEndMarker)) lines.push('');
- if (this.contents.commentBefore) lines.push(this.contents.commentBefore.replace(/^/gm, '#')); // top-level block scalars need to be indented if followed by a comment
-
- ctx.forceBlockIndent = !!this.comment;
- contentComment = this.contents.comment;
- }
-
- var onChompKeep = contentComment ? null : function () {
- return chompKeep = true;
- };
- var body = this.schema.stringify(this.contents, ctx, function () {
- return contentComment = null;
- }, onChompKeep);
- lines.push((0, _addComment.default)(body, '', contentComment));
- } else if (this.contents !== undefined) {
- lines.push(this.schema.stringify(this.contents, ctx));
- }
-
- if (this.comment) {
- if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '') lines.push('');
- lines.push(this.comment.replace(/^/gm, '#'));
- }
-
- return lines.join('\n') + '\n';
- }
- }]);
- return Document;
-}();
-
-exports.default = Document;
-(0, _defineProperty2.default)(Document, "defaults", {
- '1.0': {
- schema: 'yaml-1.1',
- merge: true,
- tagPrefixes: [{
- handle: '!',
- prefix: _schema.default.defaultPrefix
- }, {
- handle: '!!',
- prefix: 'tag:private.yaml.org,2002:'
- }]
- },
- '1.1': {
- schema: 'yaml-1.1',
- merge: true,
- tagPrefixes: [{
- handle: '!',
- prefix: '!'
- }, {
- handle: '!!',
- prefix: _schema.default.defaultPrefix
- }]
- },
- '1.2': {
- schema: 'core',
- merge: false,
- tagPrefixes: [{
- handle: '!',
- prefix: '!'
- }, {
- handle: '!!',
- prefix: _schema.default.defaultPrefix
- }]
- }
-}); \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/addComment.js b/assets/node_modules/yaml/browser/dist/addComment.js
deleted file mode 100644
index 3cac047..0000000
--- a/assets/node_modules/yaml/browser/dist/addComment.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.addCommentBefore = addCommentBefore;
-exports.default = addComment;
-
-function addCommentBefore(str, indent, comment) {
- if (!comment) return str;
- var cc = comment.replace(/[\s\S]^/gm, "$&".concat(indent, "#"));
- return "#".concat(cc, "\n").concat(indent).concat(str);
-}
-
-function addComment(str, indent, comment) {
- return !comment ? str : comment.indexOf('\n') === -1 ? "".concat(str, " #").concat(comment) : "".concat(str, "\n") + comment.replace(/^/gm, "".concat(indent || '', "#"));
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/constants.js b/assets/node_modules/yaml/browser/dist/constants.js
deleted file mode 100644
index 2bdf025..0000000
--- a/assets/node_modules/yaml/browser/dist/constants.js
+++ /dev/null
@@ -1,34 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.Type = exports.Char = void 0;
-var Char = {
- ANCHOR: '&',
- COMMENT: '#',
- TAG: '!',
- DIRECTIVES_END: '-',
- DOCUMENT_END: '.'
-};
-exports.Char = Char;
-var Type = {
- ALIAS: 'ALIAS',
- BLANK_LINE: 'BLANK_LINE',
- BLOCK_FOLDED: 'BLOCK_FOLDED',
- BLOCK_LITERAL: 'BLOCK_LITERAL',
- COMMENT: 'COMMENT',
- DIRECTIVE: 'DIRECTIVE',
- DOCUMENT: 'DOCUMENT',
- FLOW_MAP: 'FLOW_MAP',
- FLOW_SEQ: 'FLOW_SEQ',
- MAP: 'MAP',
- MAP_KEY: 'MAP_KEY',
- MAP_VALUE: 'MAP_VALUE',
- PLAIN: 'PLAIN',
- QUOTE_DOUBLE: 'QUOTE_DOUBLE',
- QUOTE_SINGLE: 'QUOTE_SINGLE',
- SEQ: 'SEQ',
- SEQ_ITEM: 'SEQ_ITEM'
-};
-exports.Type = Type; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/Alias.js b/assets/node_modules/yaml/browser/dist/cst/Alias.js
deleted file mode 100644
index fd71b14..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/Alias.js
+++ /dev/null
@@ -1,59 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-var Alias =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(Alias, _Node);
-
- function Alias() {
- (0, _classCallCheck2.default)(this, Alias);
- return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Alias).apply(this, arguments));
- }
-
- (0, _createClass2.default)(Alias, [{
- key: "parse",
-
- /**
- * Parses an *alias from the source
- *
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this scalar
- */
- value: function parse(context, start) {
- this.context = context;
- var src = context.src;
-
- var offset = _Node2.default.endOfIdentifier(src, start + 1);
-
- this.valueRange = new _Range.default(start + 1, offset);
- offset = _Node2.default.endOfWhiteSpace(src, offset);
- offset = this.parseComment(offset);
- return offset;
- }
- }]);
- return Alias;
-}(_Node2.default);
-
-exports.default = Alias; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/BlankLine.js b/assets/node_modules/yaml/browser/dist/cst/BlankLine.js
deleted file mode 100644
index 94b9f68..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/BlankLine.js
+++ /dev/null
@@ -1,69 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _constants = require("../constants");
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-var BlankLine =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(BlankLine, _Node);
-
- function BlankLine() {
- (0, _classCallCheck2.default)(this, BlankLine);
- return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BlankLine).call(this, _constants.Type.BLANK_LINE));
- }
-
- (0, _createClass2.default)(BlankLine, [{
- key: "parse",
-
- /**
- * Parses blank lines from the source
- *
- * @param {ParseContext} context
- * @param {number} start - Index of first \n character
- * @returns {number} - Index of the character after this
- */
- value: function parse(context, start) {
- this.context = context;
- var src = context.src;
- var offset = start + 1;
-
- while (_Node2.default.atBlank(src, offset)) {
- var lineEnd = _Node2.default.endOfWhiteSpace(src, offset);
-
- if (lineEnd === '\n') offset = lineEnd + 1;else break;
- }
-
- this.range = new _Range.default(start, offset);
- return offset;
- }
- }, {
- key: "includesTrailingLines",
- get: function get() {
- return true;
- }
- }]);
- return BlankLine;
-}(_Node2.default);
-
-exports.default = BlankLine; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/BlockValue.js b/assets/node_modules/yaml/browser/dist/cst/BlockValue.js
deleted file mode 100644
index 3f02f85..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/BlockValue.js
+++ /dev/null
@@ -1,269 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.Chomp = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _constants = require("../constants");
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-var Chomp = {
- CLIP: 'CLIP',
- KEEP: 'KEEP',
- STRIP: 'STRIP'
-};
-exports.Chomp = Chomp;
-
-var BlockValue =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(BlockValue, _Node);
-
- function BlockValue(type, props) {
- var _this;
-
- (0, _classCallCheck2.default)(this, BlockValue);
- _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BlockValue).call(this, type, props));
- _this.blockIndent = null;
- _this.chomping = Chomp.CLIP;
- _this.header = null;
- return _this;
- }
-
- (0, _createClass2.default)(BlockValue, [{
- key: "parseBlockHeader",
- value: function parseBlockHeader(start) {
- var src = this.context.src;
- var offset = start + 1;
- var bi = '';
-
- while (true) {
- var ch = src[offset];
-
- switch (ch) {
- case '-':
- this.chomping = Chomp.STRIP;
- break;
-
- case '+':
- this.chomping = Chomp.KEEP;
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- bi += ch;
- break;
-
- default:
- this.blockIndent = Number(bi) || null;
- this.header = new _Range.default(start, offset);
- return offset;
- }
-
- offset += 1;
- }
- }
- }, {
- key: "parseBlockValue",
- value: function parseBlockValue(start) {
- var _this$context = this.context,
- indent = _this$context.indent,
- src = _this$context.src;
- var offset = start;
- var valueEnd = start;
- var bi = this.blockIndent ? indent + this.blockIndent - 1 : indent;
- var minBlockIndent = 1;
-
- for (var ch = src[offset]; ch === '\n'; ch = src[offset]) {
- offset += 1;
- if (_Node2.default.atDocumentBoundary(src, offset)) break;
-
- var end = _Node2.default.endOfBlockIndent(src, bi, offset); // should not include tab?
-
-
- if (end === null) break;
-
- if (!this.blockIndent) {
- // no explicit block indent, none yet detected
- var lineIndent = end - (offset + indent);
-
- if (src[end] !== '\n') {
- // first line with non-whitespace content
- if (lineIndent < minBlockIndent) {
- offset -= 1;
- break;
- }
-
- this.blockIndent = lineIndent;
- bi = indent + this.blockIndent - 1;
- } else if (lineIndent > minBlockIndent) {
- // empty line with more whitespace
- minBlockIndent = lineIndent;
- }
- }
-
- if (src[end] === '\n') {
- offset = end;
- } else {
- offset = valueEnd = _Node2.default.endOfLine(src, end);
- }
- }
-
- if (this.chomping !== Chomp.KEEP) {
- offset = src[valueEnd] ? valueEnd + 1 : valueEnd;
- }
-
- this.valueRange = new _Range.default(start + 1, offset);
- return offset;
- }
- /**
- * Parses a block value from the source
- *
- * Accepted forms are:
- * ```
- * BS
- * block
- * lines
- *
- * BS #comment
- * block
- * lines
- * ```
- * where the block style BS matches the regexp `[|>][-+1-9]*` and block lines
- * are empty or have an indent level greater than `indent`.
- *
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this block
- */
-
- }, {
- key: "parse",
- value: function parse(context, start) {
- this.context = context;
- var src = context.src;
- var offset = this.parseBlockHeader(start);
- offset = _Node2.default.endOfWhiteSpace(src, offset);
- offset = this.parseComment(offset);
- offset = this.parseBlockValue(offset);
- return offset;
- }
- }, {
- key: "setOrigRanges",
- value: function setOrigRanges(cr, offset) {
- offset = (0, _get2.default)((0, _getPrototypeOf2.default)(BlockValue.prototype), "setOrigRanges", this).call(this, cr, offset);
- return this.header ? this.header.setOrigRange(cr, offset) : offset;
- }
- }, {
- key: "includesTrailingLines",
- get: function get() {
- return this.chomping === Chomp.KEEP;
- }
- }, {
- key: "strValue",
- get: function get() {
- if (!this.valueRange || !this.context) return null;
- var _this$valueRange = this.valueRange,
- start = _this$valueRange.start,
- end = _this$valueRange.end;
- var _this$context2 = this.context,
- indent = _this$context2.indent,
- src = _this$context2.src;
- if (this.valueRange.isEmpty()) return '';
- var lastNewLine = null;
- var ch = src[end - 1];
-
- while (ch === '\n' || ch === '\t' || ch === ' ') {
- end -= 1;
-
- if (end <= start) {
- if (this.chomping === Chomp.KEEP) break;else return '';
- }
-
- if (ch === '\n') lastNewLine = end;
- ch = src[end - 1];
- }
-
- var keepStart = end + 1;
-
- if (lastNewLine) {
- if (this.chomping === Chomp.KEEP) {
- keepStart = lastNewLine;
- end = this.valueRange.end;
- } else {
- end = lastNewLine;
- }
- }
-
- var bi = indent + this.blockIndent;
- var folded = this.type === _constants.Type.BLOCK_FOLDED;
- var atStart = true;
- var str = '';
- var sep = '';
- var prevMoreIndented = false;
-
- for (var i = start; i < end; ++i) {
- for (var j = 0; j < bi; ++j) {
- if (src[i] !== ' ') break;
- i += 1;
- }
-
- var _ch = src[i];
-
- if (_ch === '\n') {
- if (sep === '\n') str += '\n';else sep = '\n';
- } else {
- var lineEnd = _Node2.default.endOfLine(src, i);
-
- var line = src.slice(i, lineEnd);
- i = lineEnd;
-
- if (folded && (_ch === ' ' || _ch === '\t') && i < keepStart) {
- if (sep === ' ') sep = '\n';else if (!prevMoreIndented && !atStart && sep === '\n') sep = '\n\n';
- str += sep + line; //+ ((lineEnd < end && src[lineEnd]) || '')
-
- sep = lineEnd < end && src[lineEnd] || '';
- prevMoreIndented = true;
- } else {
- str += sep + line;
- sep = folded && i < keepStart ? ' ' : '\n';
- prevMoreIndented = false;
- }
-
- if (atStart && line !== '') atStart = false;
- }
- }
-
- return this.chomping === Chomp.STRIP ? str : str + '\n';
- }
- }]);
- return BlockValue;
-}(_Node2.default);
-
-exports.default = BlockValue; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/Collection.js b/assets/node_modules/yaml/browser/dist/cst/Collection.js
deleted file mode 100644
index 9277576..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/Collection.js
+++ /dev/null
@@ -1,297 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.grabCollectionEndComments = grabCollectionEndComments;
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _constants = require("../constants");
-
-var _BlankLine = _interopRequireDefault(require("./BlankLine"));
-
-var _CollectionItem = _interopRequireDefault(require("./CollectionItem"));
-
-var _Comment = _interopRequireDefault(require("./Comment"));
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-function grabCollectionEndComments(node) {
- var cnode = node;
-
- while (cnode instanceof _CollectionItem.default) {
- cnode = cnode.node;
- }
-
- if (!(cnode instanceof Collection)) return null;
- var len = cnode.items.length;
- var ci = -1;
-
- for (var i = len - 1; i >= 0; --i) {
- var n = cnode.items[i];
-
- if (n.type === _constants.Type.COMMENT) {
- // Keep sufficiently indented comments with preceding node
- var _n$context = n.context,
- indent = _n$context.indent,
- lineStart = _n$context.lineStart;
- if (indent > 0 && n.range.start >= lineStart + indent) break;
- ci = i;
- } else if (n.type === _constants.Type.BLANK_LINE) ci = i;else break;
- }
-
- if (ci === -1) return null;
- var ca = cnode.items.splice(ci, len - ci);
- var prevEnd = ca[0].range.start;
-
- while (true) {
- cnode.range.end = prevEnd;
- if (cnode.valueRange && cnode.valueRange.end > prevEnd) cnode.valueRange.end = prevEnd;
- if (cnode === node) break;
- cnode = cnode.context.parent;
- }
-
- return ca;
-}
-
-var Collection =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(Collection, _Node);
- (0, _createClass2.default)(Collection, null, [{
- key: "nextContentHasIndent",
- value: function nextContentHasIndent(src, offset, indent) {
- var lineStart = _Node2.default.endOfLine(src, offset) + 1;
- offset = _Node2.default.endOfWhiteSpace(src, lineStart);
- var ch = src[offset];
- if (!ch) return false;
- if (offset >= lineStart + indent) return true;
- if (ch !== '#' && ch !== '\n') return false;
- return Collection.nextContentHasIndent(src, offset, indent);
- }
- }]);
-
- function Collection(firstItem) {
- var _this;
-
- (0, _classCallCheck2.default)(this, Collection);
- _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Collection).call(this, firstItem.type === _constants.Type.SEQ_ITEM ? _constants.Type.SEQ : _constants.Type.MAP));
-
- for (var i = firstItem.props.length - 1; i >= 0; --i) {
- if (firstItem.props[i].start < firstItem.context.lineStart) {
- // props on previous line are assumed by the collection
- _this.props = firstItem.props.slice(0, i + 1);
- firstItem.props = firstItem.props.slice(i + 1);
- var itemRange = firstItem.props[0] || firstItem.valueRange;
- firstItem.range.start = itemRange.start;
- break;
- }
- }
-
- _this.items = [firstItem];
- var ec = grabCollectionEndComments(firstItem);
- if (ec) Array.prototype.push.apply(_this.items, ec);
- return _this;
- }
-
- (0, _createClass2.default)(Collection, [{
- key: "parse",
-
- /**
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this
- */
- value: function parse(context, start) {
- this.context = context;
- var parseNode = context.parseNode,
- src = context.src; // It's easier to recalculate lineStart here rather than tracking down the
- // last context from which to read it -- eemeli/yaml#2
-
- var lineStart = _Node2.default.startOfLine(src, start);
-
- var firstItem = this.items[0]; // First-item context needs to be correct for later comment handling
- // -- eemeli/yaml#17
-
- firstItem.context.parent = this;
- this.valueRange = _Range.default.copy(firstItem.valueRange);
- var indent = firstItem.range.start - firstItem.context.lineStart;
- var offset = start;
- offset = _Node2.default.normalizeOffset(src, offset);
- var ch = src[offset];
- var atLineStart = _Node2.default.endOfWhiteSpace(src, lineStart) === offset;
- var prevIncludesTrailingLines = false;
-
- while (ch) {
- while (ch === '\n' || ch === '#') {
- if (atLineStart && ch === '\n' && !prevIncludesTrailingLines) {
- var blankLine = new _BlankLine.default();
- offset = blankLine.parse({
- src: src
- }, offset);
- this.valueRange.end = offset;
-
- if (offset >= src.length) {
- ch = null;
- break;
- }
-
- this.items.push(blankLine);
- offset -= 1; // blankLine.parse() consumes terminal newline
- } else if (ch === '#') {
- if (offset < lineStart + indent && !Collection.nextContentHasIndent(src, offset, indent)) {
- return offset;
- }
-
- var comment = new _Comment.default();
- offset = comment.parse({
- indent: indent,
- lineStart: lineStart,
- src: src
- }, offset);
- this.items.push(comment);
- this.valueRange.end = offset;
-
- if (offset >= src.length) {
- ch = null;
- break;
- }
- }
-
- lineStart = offset + 1;
- offset = _Node2.default.endOfIndent(src, lineStart);
-
- if (_Node2.default.atBlank(src, offset)) {
- var wsEnd = _Node2.default.endOfWhiteSpace(src, offset);
-
- var next = src[wsEnd];
-
- if (!next || next === '\n' || next === '#') {
- offset = wsEnd;
- }
- }
-
- ch = src[offset];
- atLineStart = true;
- }
-
- if (!ch) {
- break;
- }
-
- if (offset !== lineStart + indent && (atLineStart || ch !== ':')) {
- if (lineStart > start) offset = lineStart;
- break;
- }
-
- if (firstItem.type === _constants.Type.SEQ_ITEM !== (ch === '-')) {
- var typeswitch = true;
-
- if (ch === '-') {
- // map key may start with -, as long as it's followed by a non-whitespace char
- var _next = src[offset + 1];
- typeswitch = !_next || _next === '\n' || _next === '\t' || _next === ' ';
- }
-
- if (typeswitch) {
- if (lineStart > start) offset = lineStart;
- break;
- }
- }
-
- var node = parseNode({
- atLineStart: atLineStart,
- inCollection: true,
- indent: indent,
- lineStart: lineStart,
- parent: this
- }, offset);
- if (!node) return offset; // at next document start
-
- this.items.push(node);
- this.valueRange.end = node.valueRange.end;
- offset = _Node2.default.normalizeOffset(src, node.range.end);
- ch = src[offset];
- atLineStart = false;
- prevIncludesTrailingLines = node.includesTrailingLines; // Need to reset lineStart and atLineStart here if preceding node's range
- // has advanced to check the current line's indentation level
- // -- eemeli/yaml#10 & eemeli/yaml#38
-
- if (ch) {
- var ls = offset - 1;
- var prev = src[ls];
-
- while (prev === ' ' || prev === '\t') {
- prev = src[--ls];
- }
-
- if (prev === '\n') {
- lineStart = ls + 1;
- atLineStart = true;
- }
- }
-
- var ec = grabCollectionEndComments(node);
- if (ec) Array.prototype.push.apply(this.items, ec);
- }
-
- return offset;
- }
- }, {
- key: "setOrigRanges",
- value: function setOrigRanges(cr, offset) {
- offset = (0, _get2.default)((0, _getPrototypeOf2.default)(Collection.prototype), "setOrigRanges", this).call(this, cr, offset);
- this.items.forEach(function (node) {
- offset = node.setOrigRanges(cr, offset);
- });
- return offset;
- }
- }, {
- key: "toString",
- value: function toString() {
- var src = this.context.src,
- items = this.items,
- range = this.range,
- value = this.value;
- if (value != null) return value;
- var str = src.slice(range.start, items[0].range.start) + String(items[0]);
-
- for (var i = 1; i < items.length; ++i) {
- var item = items[i];
- var _item$context = item.context,
- atLineStart = _item$context.atLineStart,
- indent = _item$context.indent;
- if (atLineStart) for (var _i = 0; _i < indent; ++_i) {
- str += ' ';
- }
- str += String(item);
- }
-
- return _Node2.default.addStringTerminator(src, range.end, str);
- }
- }, {
- key: "includesTrailingLines",
- get: function get() {
- return this.items.length > 0;
- }
- }]);
- return Collection;
-}(_Node2.default);
-
-exports.default = Collection; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/CollectionItem.js b/assets/node_modules/yaml/browser/dist/cst/CollectionItem.js
deleted file mode 100644
index 232d0f3..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/CollectionItem.js
+++ /dev/null
@@ -1,158 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _constants = require("../constants");
-
-var _errors = require("../errors");
-
-var _BlankLine = _interopRequireDefault(require("./BlankLine"));
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-var CollectionItem =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(CollectionItem, _Node);
-
- function CollectionItem(type, props) {
- var _this;
-
- (0, _classCallCheck2.default)(this, CollectionItem);
- _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(CollectionItem).call(this, type, props));
- _this.node = null;
- return _this;
- }
-
- (0, _createClass2.default)(CollectionItem, [{
- key: "parse",
-
- /**
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this
- */
- value: function parse(context, start) {
- this.context = context;
- var parseNode = context.parseNode,
- src = context.src;
- var atLineStart = context.atLineStart,
- lineStart = context.lineStart;
- if (!atLineStart && this.type === _constants.Type.SEQ_ITEM) this.error = new _errors.YAMLSemanticError(this, 'Sequence items must not have preceding content on the same line');
- var indent = atLineStart ? start - lineStart : context.indent;
-
- var offset = _Node2.default.endOfWhiteSpace(src, start + 1);
-
- var ch = src[offset];
- var inlineComment = ch === '#';
- var comments = [];
- var blankLine = null;
-
- while (ch === '\n' || ch === '#') {
- if (ch === '#') {
- var _end = _Node2.default.endOfLine(src, offset + 1);
-
- comments.push(new _Range.default(offset, _end));
- offset = _end;
- } else {
- atLineStart = true;
- lineStart = offset + 1;
-
- var wsEnd = _Node2.default.endOfWhiteSpace(src, lineStart);
-
- if (src[wsEnd] === '\n' && comments.length === 0) {
- blankLine = new _BlankLine.default();
- lineStart = blankLine.parse({
- src: src
- }, lineStart);
- }
-
- offset = _Node2.default.endOfIndent(src, lineStart);
- }
-
- ch = src[offset];
- }
-
- if (_Node2.default.nextNodeIsIndented(ch, offset - (lineStart + indent), this.type !== _constants.Type.SEQ_ITEM)) {
- this.node = parseNode({
- atLineStart: atLineStart,
- inCollection: false,
- indent: indent,
- lineStart: lineStart,
- parent: this
- }, offset);
- } else if (ch && lineStart > start + 1) {
- offset = lineStart - 1;
- }
-
- if (this.node) {
- if (blankLine) {
- // Only blank lines preceding non-empty nodes are captured. Note that
- // this means that collection item range start indices do not always
- // increase monotonically. -- eemeli/yaml#126
- var items = context.parent.items || context.parent.contents;
- if (items) items.push(blankLine);
- }
-
- if (comments.length) Array.prototype.push.apply(this.props, comments);
- offset = this.node.range.end;
- } else {
- if (inlineComment) {
- var c = comments[0];
- this.props.push(c);
- offset = c.end;
- } else {
- offset = _Node2.default.endOfLine(src, start + 1);
- }
- }
-
- var end = this.node ? this.node.valueRange.end : offset;
- this.valueRange = new _Range.default(start, end);
- return offset;
- }
- }, {
- key: "setOrigRanges",
- value: function setOrigRanges(cr, offset) {
- offset = (0, _get2.default)((0, _getPrototypeOf2.default)(CollectionItem.prototype), "setOrigRanges", this).call(this, cr, offset);
- return this.node ? this.node.setOrigRanges(cr, offset) : offset;
- }
- }, {
- key: "toString",
- value: function toString() {
- var src = this.context.src,
- node = this.node,
- range = this.range,
- value = this.value;
- if (value != null) return value;
- var str = node ? src.slice(range.start, node.range.start) + String(node) : src.slice(range.start, range.end);
- return _Node2.default.addStringTerminator(src, range.end, str);
- }
- }, {
- key: "includesTrailingLines",
- get: function get() {
- return !!this.node && this.node.includesTrailingLines;
- }
- }]);
- return CollectionItem;
-}(_Node2.default);
-
-exports.default = CollectionItem; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/Comment.js b/assets/node_modules/yaml/browser/dist/cst/Comment.js
deleted file mode 100644
index 1c405d2..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/Comment.js
+++ /dev/null
@@ -1,56 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _constants = require("../constants");
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-var Comment =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(Comment, _Node);
-
- function Comment() {
- (0, _classCallCheck2.default)(this, Comment);
- return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Comment).call(this, _constants.Type.COMMENT));
- }
- /**
- * Parses a comment line from the source
- *
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this scalar
- */
-
-
- (0, _createClass2.default)(Comment, [{
- key: "parse",
- value: function parse(context, start) {
- this.context = context;
- var offset = this.parseComment(start);
- this.range = new _Range.default(start, offset);
- return offset;
- }
- }]);
- return Comment;
-}(_Node2.default);
-
-exports.default = Comment; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/Directive.js b/assets/node_modules/yaml/browser/dist/cst/Directive.js
deleted file mode 100644
index 313121f..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/Directive.js
+++ /dev/null
@@ -1,108 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _constants = require("../constants");
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-var Directive =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(Directive, _Node);
- (0, _createClass2.default)(Directive, null, [{
- key: "endOfDirective",
- value: function endOfDirective(src, offset) {
- var ch = src[offset];
-
- while (ch && ch !== '\n' && ch !== '#') {
- ch = src[offset += 1];
- } // last char can't be whitespace
-
-
- ch = src[offset - 1];
-
- while (ch === ' ' || ch === '\t') {
- offset -= 1;
- ch = src[offset - 1];
- }
-
- return offset;
- }
- }]);
-
- function Directive() {
- var _this;
-
- (0, _classCallCheck2.default)(this, Directive);
- _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Directive).call(this, _constants.Type.DIRECTIVE));
- _this.name = null;
- return _this;
- }
-
- (0, _createClass2.default)(Directive, [{
- key: "parseName",
- value: function parseName(start) {
- var src = this.context.src;
- var offset = start;
- var ch = src[offset];
-
- while (ch && ch !== '\n' && ch !== '\t' && ch !== ' ') {
- ch = src[offset += 1];
- }
-
- this.name = src.slice(start, offset);
- return offset;
- }
- }, {
- key: "parseParameters",
- value: function parseParameters(start) {
- var src = this.context.src;
- var offset = start;
- var ch = src[offset];
-
- while (ch && ch !== '\n' && ch !== '#') {
- ch = src[offset += 1];
- }
-
- this.valueRange = new _Range.default(start, offset);
- return offset;
- }
- }, {
- key: "parse",
- value: function parse(context, start) {
- this.context = context;
- var offset = this.parseName(start + 1);
- offset = this.parseParameters(offset);
- offset = this.parseComment(offset);
- this.range = new _Range.default(start, offset);
- return offset;
- }
- }, {
- key: "parameters",
- get: function get() {
- var raw = this.rawValue;
- return raw ? raw.trim().split(/[ \t]+/) : [];
- }
- }]);
- return Directive;
-}(_Node2.default);
-
-exports.default = Directive; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/Document.js b/assets/node_modules/yaml/browser/dist/cst/Document.js
deleted file mode 100644
index 85fdd23..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/Document.js
+++ /dev/null
@@ -1,306 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _constants = require("../constants");
-
-var _errors = require("../errors");
-
-var _BlankLine = _interopRequireDefault(require("./BlankLine"));
-
-var _Collection = require("./Collection");
-
-var _Comment = _interopRequireDefault(require("./Comment"));
-
-var _Directive = _interopRequireDefault(require("./Directive"));
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-var Document =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(Document, _Node);
- (0, _createClass2.default)(Document, null, [{
- key: "startCommentOrEndBlankLine",
- value: function startCommentOrEndBlankLine(src, start) {
- var offset = _Node2.default.endOfWhiteSpace(src, start);
-
- var ch = src[offset];
- return ch === '#' || ch === '\n' ? offset : start;
- }
- }]);
-
- function Document() {
- var _this;
-
- (0, _classCallCheck2.default)(this, Document);
- _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Document).call(this, _constants.Type.DOCUMENT));
- _this.directives = null;
- _this.contents = null;
- _this.directivesEndMarker = null;
- _this.documentEndMarker = null;
- return _this;
- }
-
- (0, _createClass2.default)(Document, [{
- key: "parseDirectives",
- value: function parseDirectives(start) {
- var src = this.context.src;
- this.directives = [];
- var atLineStart = true;
- var hasDirectives = false;
- var offset = start;
-
- while (!_Node2.default.atDocumentBoundary(src, offset, _constants.Char.DIRECTIVES_END)) {
- offset = Document.startCommentOrEndBlankLine(src, offset);
-
- switch (src[offset]) {
- case '\n':
- if (atLineStart) {
- var blankLine = new _BlankLine.default();
- offset = blankLine.parse({
- src: src
- }, offset);
-
- if (offset < src.length) {
- this.directives.push(blankLine);
- }
- } else {
- offset += 1;
- atLineStart = true;
- }
-
- break;
-
- case '#':
- {
- var comment = new _Comment.default();
- offset = comment.parse({
- src: src
- }, offset);
- this.directives.push(comment);
- atLineStart = false;
- }
- break;
-
- case '%':
- {
- var directive = new _Directive.default();
- offset = directive.parse({
- parent: this,
- src: src
- }, offset);
- this.directives.push(directive);
- hasDirectives = true;
- atLineStart = false;
- }
- break;
-
- default:
- if (hasDirectives) {
- this.error = new _errors.YAMLSemanticError(this, 'Missing directives-end indicator line');
- } else if (this.directives.length > 0) {
- this.contents = this.directives;
- this.directives = [];
- }
-
- return offset;
- }
- }
-
- if (src[offset]) {
- this.directivesEndMarker = new _Range.default(offset, offset + 3);
- return offset + 3;
- }
-
- if (hasDirectives) {
- this.error = new _errors.YAMLSemanticError(this, 'Missing directives-end indicator line');
- } else if (this.directives.length > 0) {
- this.contents = this.directives;
- this.directives = [];
- }
-
- return offset;
- }
- }, {
- key: "parseContents",
- value: function parseContents(start) {
- var _this$context = this.context,
- parseNode = _this$context.parseNode,
- src = _this$context.src;
- if (!this.contents) this.contents = [];
- var lineStart = start;
-
- while (src[lineStart - 1] === '-') {
- lineStart -= 1;
- }
-
- var offset = _Node2.default.endOfWhiteSpace(src, start);
-
- var atLineStart = lineStart === start;
- this.valueRange = new _Range.default(offset);
-
- while (!_Node2.default.atDocumentBoundary(src, offset, _constants.Char.DOCUMENT_END)) {
- switch (src[offset]) {
- case '\n':
- if (atLineStart) {
- var blankLine = new _BlankLine.default();
- offset = blankLine.parse({
- src: src
- }, offset);
-
- if (offset < src.length) {
- this.contents.push(blankLine);
- }
- } else {
- offset += 1;
- atLineStart = true;
- }
-
- lineStart = offset;
- break;
-
- case '#':
- {
- var comment = new _Comment.default();
- offset = comment.parse({
- src: src
- }, offset);
- this.contents.push(comment);
- atLineStart = false;
- }
- break;
-
- default:
- {
- var iEnd = _Node2.default.endOfIndent(src, offset);
-
- var context = {
- atLineStart: atLineStart,
- indent: -1,
- inFlow: false,
- inCollection: false,
- lineStart: lineStart,
- parent: this
- };
- var node = parseNode(context, iEnd);
- if (!node) return this.valueRange.end = iEnd; // at next document start
-
- this.contents.push(node);
- offset = node.range.end;
- atLineStart = false;
- var ec = (0, _Collection.grabCollectionEndComments)(node);
- if (ec) Array.prototype.push.apply(this.contents, ec);
- }
- }
-
- offset = Document.startCommentOrEndBlankLine(src, offset);
- }
-
- this.valueRange.end = offset;
-
- if (src[offset]) {
- this.documentEndMarker = new _Range.default(offset, offset + 3);
- offset += 3;
-
- if (src[offset]) {
- offset = _Node2.default.endOfWhiteSpace(src, offset);
-
- if (src[offset] === '#') {
- var _comment = new _Comment.default();
-
- offset = _comment.parse({
- src: src
- }, offset);
- this.contents.push(_comment);
- }
-
- switch (src[offset]) {
- case '\n':
- offset += 1;
- break;
-
- case undefined:
- break;
-
- default:
- this.error = new _errors.YAMLSyntaxError(this, 'Document end marker line cannot have a non-comment suffix');
- }
- }
- }
-
- return offset;
- }
- /**
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this
- */
-
- }, {
- key: "parse",
- value: function parse(context, start) {
- context.root = this;
- this.context = context;
- var src = context.src;
- var offset = src.charCodeAt(start) === 0xfeff ? start + 1 : start; // skip BOM
-
- offset = this.parseDirectives(offset);
- offset = this.parseContents(offset);
- return offset;
- }
- }, {
- key: "setOrigRanges",
- value: function setOrigRanges(cr, offset) {
- offset = (0, _get2.default)((0, _getPrototypeOf2.default)(Document.prototype), "setOrigRanges", this).call(this, cr, offset);
- this.directives.forEach(function (node) {
- offset = node.setOrigRanges(cr, offset);
- });
- if (this.directivesEndMarker) offset = this.directivesEndMarker.setOrigRange(cr, offset);
- this.contents.forEach(function (node) {
- offset = node.setOrigRanges(cr, offset);
- });
- if (this.documentEndMarker) offset = this.documentEndMarker.setOrigRange(cr, offset);
- return offset;
- }
- }, {
- key: "toString",
- value: function toString() {
- var contents = this.contents,
- directives = this.directives,
- value = this.value;
- if (value != null) return value;
- var str = directives.join('');
-
- if (contents.length > 0) {
- if (directives.length > 0 || contents[0].type === _constants.Type.COMMENT) str += '---\n';
- str += contents.join('');
- }
-
- if (str[str.length - 1] !== '\n') str += '\n';
- return str;
- }
- }]);
- return Document;
-}(_Node2.default);
-
-exports.default = Document; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/FlowCollection.js b/assets/node_modules/yaml/browser/dist/cst/FlowCollection.js
deleted file mode 100644
index 5fe7a24..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/FlowCollection.js
+++ /dev/null
@@ -1,239 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _constants = require("../constants");
-
-var _errors = require("../errors");
-
-var _BlankLine = _interopRequireDefault(require("./BlankLine"));
-
-var _Comment = _interopRequireDefault(require("./Comment"));
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-var FlowCollection =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(FlowCollection, _Node);
-
- function FlowCollection(type, props) {
- var _this;
-
- (0, _classCallCheck2.default)(this, FlowCollection);
- _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(FlowCollection).call(this, type, props));
- _this.items = null;
- return _this;
- }
-
- (0, _createClass2.default)(FlowCollection, [{
- key: "prevNodeIsJsonLike",
- value: function prevNodeIsJsonLike() {
- var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.items.length;
- var node = this.items[idx - 1];
- return !!node && (node.jsonLike || node.type === _constants.Type.COMMENT && this.nodeIsJsonLike(idx - 1));
- }
- /**
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this
- */
-
- }, {
- key: "parse",
- value: function parse(context, start) {
- this.context = context;
- var parseNode = context.parseNode,
- src = context.src;
- var indent = context.indent,
- lineStart = context.lineStart;
- var char = src[start]; // { or [
-
- this.items = [{
- char: char,
- offset: start
- }];
-
- var offset = _Node2.default.endOfWhiteSpace(src, start + 1);
-
- char = src[offset];
-
- while (char && char !== ']' && char !== '}') {
- switch (char) {
- case '\n':
- {
- lineStart = offset + 1;
-
- var wsEnd = _Node2.default.endOfWhiteSpace(src, lineStart);
-
- if (src[wsEnd] === '\n') {
- var blankLine = new _BlankLine.default();
- lineStart = blankLine.parse({
- src: src
- }, lineStart);
- this.items.push(blankLine);
- }
-
- offset = _Node2.default.endOfIndent(src, lineStart);
-
- if (offset <= lineStart + indent) {
- char = src[offset];
-
- if (offset < lineStart + indent || char !== ']' && char !== '}') {
- var msg = 'Insufficient indentation in flow collection';
- this.error = new _errors.YAMLSemanticError(this, msg);
- }
- }
- }
- break;
-
- case ',':
- {
- this.items.push({
- char: char,
- offset: offset
- });
- offset += 1;
- }
- break;
-
- case '#':
- {
- var comment = new _Comment.default();
- offset = comment.parse({
- src: src
- }, offset);
- this.items.push(comment);
- }
- break;
-
- case '?':
- case ':':
- {
- var next = src[offset + 1];
-
- if (next === '\n' || next === '\t' || next === ' ' || next === ',' || // in-flow : after JSON-like key does not need to be followed by whitespace
- char === ':' && this.prevNodeIsJsonLike()) {
- this.items.push({
- char: char,
- offset: offset
- });
- offset += 1;
- break;
- }
- }
- // fallthrough
-
- default:
- {
- var node = parseNode({
- atLineStart: false,
- inCollection: false,
- inFlow: true,
- indent: -1,
- lineStart: lineStart,
- parent: this
- }, offset);
-
- if (!node) {
- // at next document start
- this.valueRange = new _Range.default(start, offset);
- return offset;
- }
-
- this.items.push(node);
- offset = _Node2.default.normalizeOffset(src, node.range.end);
- }
- }
-
- offset = _Node2.default.endOfWhiteSpace(src, offset);
- char = src[offset];
- }
-
- this.valueRange = new _Range.default(start, offset + 1);
-
- if (char) {
- this.items.push({
- char: char,
- offset: offset
- });
- offset = _Node2.default.endOfWhiteSpace(src, offset + 1);
- offset = this.parseComment(offset);
- }
-
- return offset;
- }
- }, {
- key: "setOrigRanges",
- value: function setOrigRanges(cr, offset) {
- offset = (0, _get2.default)((0, _getPrototypeOf2.default)(FlowCollection.prototype), "setOrigRanges", this).call(this, cr, offset);
- this.items.forEach(function (node) {
- if (node instanceof _Node2.default) {
- offset = node.setOrigRanges(cr, offset);
- } else if (cr.length === 0) {
- node.origOffset = node.offset;
- } else {
- var i = offset;
-
- while (i < cr.length) {
- if (cr[i] > node.offset) break;else ++i;
- }
-
- node.origOffset = node.offset + i;
- offset = i;
- }
- });
- return offset;
- }
- }, {
- key: "toString",
- value: function toString() {
- var src = this.context.src,
- items = this.items,
- range = this.range,
- value = this.value;
- if (value != null) return value;
- var nodes = items.filter(function (item) {
- return item instanceof _Node2.default;
- });
- var str = '';
- var prevEnd = range.start;
- nodes.forEach(function (node) {
- var prefix = src.slice(prevEnd, node.range.start);
- prevEnd = node.range.end;
- str += prefix + String(node);
-
- if (str[str.length - 1] === '\n' && src[prevEnd - 1] !== '\n' && src[prevEnd] === '\n') {
- // Comment range does not include the terminal newline, but its
- // stringified value does. Without this fix, newlines at comment ends
- // get duplicated.
- prevEnd += 1;
- }
- });
- str += src.slice(prevEnd, range.end);
- return _Node2.default.addStringTerminator(src, range.end, str);
- }
- }]);
- return FlowCollection;
-}(_Node2.default);
-
-exports.default = FlowCollection; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/Node.js b/assets/node_modules/yaml/browser/dist/cst/Node.js
deleted file mode 100644
index 67287a2..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/Node.js
+++ /dev/null
@@ -1,408 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _constants = require("../constants");
-
-var _sourceUtils = require("./source-utils");
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-/** Root class of all nodes */
-var Node =
-/*#__PURE__*/
-function () {
- (0, _createClass2.default)(Node, null, [{
- key: "addStringTerminator",
- value: function addStringTerminator(src, offset, str) {
- if (str[str.length - 1] === '\n') return str;
- var next = Node.endOfWhiteSpace(src, offset);
- return next >= src.length || src[next] === '\n' ? str + '\n' : str;
- } // ^(---|...)
-
- }, {
- key: "atDocumentBoundary",
- value: function atDocumentBoundary(src, offset, sep) {
- var ch0 = src[offset];
- if (!ch0) return true;
- var prev = src[offset - 1];
- if (prev && prev !== '\n') return false;
-
- if (sep) {
- if (ch0 !== sep) return false;
- } else {
- if (ch0 !== _constants.Char.DIRECTIVES_END && ch0 !== _constants.Char.DOCUMENT_END) return false;
- }
-
- var ch1 = src[offset + 1];
- var ch2 = src[offset + 2];
- if (ch1 !== ch0 || ch2 !== ch0) return false;
- var ch3 = src[offset + 3];
- return !ch3 || ch3 === '\n' || ch3 === '\t' || ch3 === ' ';
- }
- }, {
- key: "endOfIdentifier",
- value: function endOfIdentifier(src, offset) {
- var ch = src[offset];
- var isVerbatim = ch === '<';
- var notOk = isVerbatim ? ['\n', '\t', ' ', '>'] : ['\n', '\t', ' ', '[', ']', '{', '}', ','];
-
- while (ch && notOk.indexOf(ch) === -1) {
- ch = src[offset += 1];
- }
-
- if (isVerbatim && ch === '>') offset += 1;
- return offset;
- }
- }, {
- key: "endOfIndent",
- value: function endOfIndent(src, offset) {
- var ch = src[offset];
-
- while (ch === ' ') {
- ch = src[offset += 1];
- }
-
- return offset;
- }
- }, {
- key: "endOfLine",
- value: function endOfLine(src, offset) {
- var ch = src[offset];
-
- while (ch && ch !== '\n') {
- ch = src[offset += 1];
- }
-
- return offset;
- }
- }, {
- key: "endOfWhiteSpace",
- value: function endOfWhiteSpace(src, offset) {
- var ch = src[offset];
-
- while (ch === '\t' || ch === ' ') {
- ch = src[offset += 1];
- }
-
- return offset;
- }
- }, {
- key: "startOfLine",
- value: function startOfLine(src, offset) {
- var ch = src[offset - 1];
- if (ch === '\n') return offset;
-
- while (ch && ch !== '\n') {
- ch = src[offset -= 1];
- }
-
- return offset + 1;
- }
- /**
- * End of indentation, or null if the line's indent level is not more
- * than `indent`
- *
- * @param {string} src
- * @param {number} indent
- * @param {number} lineStart
- * @returns {?number}
- */
-
- }, {
- key: "endOfBlockIndent",
- value: function endOfBlockIndent(src, indent, lineStart) {
- var inEnd = Node.endOfIndent(src, lineStart);
-
- if (inEnd > lineStart + indent) {
- return inEnd;
- } else {
- var wsEnd = Node.endOfWhiteSpace(src, inEnd);
- var ch = src[wsEnd];
- if (!ch || ch === '\n') return wsEnd;
- }
-
- return null;
- }
- }, {
- key: "atBlank",
- value: function atBlank(src, offset, endAsBlank) {
- var ch = src[offset];
- return ch === '\n' || ch === '\t' || ch === ' ' || endAsBlank && !ch;
- }
- }, {
- key: "atCollectionItem",
- value: function atCollectionItem(src, offset) {
- var ch = src[offset];
- return (ch === '?' || ch === ':' || ch === '-') && Node.atBlank(src, offset + 1, true);
- }
- }, {
- key: "nextNodeIsIndented",
- value: function nextNodeIsIndented(ch, indentDiff, indicatorAsIndent) {
- if (!ch || indentDiff < 0) return false;
- if (indentDiff > 0) return true;
- return indicatorAsIndent && ch === '-';
- } // should be at line or string end, or at next non-whitespace char
-
- }, {
- key: "normalizeOffset",
- value: function normalizeOffset(src, offset) {
- var ch = src[offset];
- return !ch ? offset : ch !== '\n' && src[offset - 1] === '\n' ? offset - 1 : Node.endOfWhiteSpace(src, offset);
- } // fold single newline into space, multiple newlines to N - 1 newlines
- // presumes src[offset] === '\n'
-
- }, {
- key: "foldNewline",
- value: function foldNewline(src, offset, indent) {
- var inCount = 0;
- var error = false;
- var fold = '';
- var ch = src[offset + 1];
-
- while (ch === ' ' || ch === '\t' || ch === '\n') {
- switch (ch) {
- case '\n':
- inCount = 0;
- offset += 1;
- fold += '\n';
- break;
-
- case '\t':
- if (inCount <= indent) error = true;
- offset = Node.endOfWhiteSpace(src, offset + 2) - 1;
- break;
-
- case ' ':
- inCount += 1;
- offset += 1;
- break;
- }
-
- ch = src[offset + 1];
- }
-
- if (!fold) fold = ' ';
- if (ch && inCount <= indent) error = true;
- return {
- fold: fold,
- offset: offset,
- error: error
- };
- }
- }]);
-
- function Node(type, props, context) {
- (0, _classCallCheck2.default)(this, Node);
- Object.defineProperty(this, 'context', {
- value: context || null,
- writable: true
- });
- this.error = null;
- this.range = null;
- this.valueRange = null;
- this.props = props || [];
- this.type = type;
- this.value = null;
- }
-
- (0, _createClass2.default)(Node, [{
- key: "getPropValue",
- value: function getPropValue(idx, key, skipKey) {
- if (!this.context) return null;
- var src = this.context.src;
- var prop = this.props[idx];
- return prop && src[prop.start] === key ? src.slice(prop.start + (skipKey ? 1 : 0), prop.end) : null;
- }
- }, {
- key: "commentHasRequiredWhitespace",
- value: function commentHasRequiredWhitespace(start) {
- var src = this.context.src;
- if (this.header && start === this.header.end) return false;
- if (!this.valueRange) return false;
- var end = this.valueRange.end;
- return start !== end || Node.atBlank(src, end - 1);
- }
- }, {
- key: "parseComment",
- value: function parseComment(start) {
- var src = this.context.src;
-
- if (src[start] === _constants.Char.COMMENT) {
- var end = Node.endOfLine(src, start + 1);
- var commentRange = new _Range.default(start, end);
- this.props.push(commentRange);
- return end;
- }
-
- return start;
- }
- /**
- * Populates the `origStart` and `origEnd` values of all ranges for this
- * node. Extended by child classes to handle descendant nodes.
- *
- * @param {number[]} cr - Positions of dropped CR characters
- * @param {number} offset - Starting index of `cr` from the last call
- * @returns {number} - The next offset, matching the one found for `origStart`
- */
-
- }, {
- key: "setOrigRanges",
- value: function setOrigRanges(cr, offset) {
- if (this.range) offset = this.range.setOrigRange(cr, offset);
- if (this.valueRange) this.valueRange.setOrigRange(cr, offset);
- this.props.forEach(function (prop) {
- return prop.setOrigRange(cr, offset);
- });
- return offset;
- }
- }, {
- key: "toString",
- value: function toString() {
- var src = this.context.src,
- range = this.range,
- value = this.value;
- if (value != null) return value;
- var str = src.slice(range.start, range.end);
- return Node.addStringTerminator(src, range.end, str);
- }
- }, {
- key: "anchor",
- get: function get() {
- for (var i = 0; i < this.props.length; ++i) {
- var anchor = this.getPropValue(i, _constants.Char.ANCHOR, true);
- if (anchor != null) return anchor;
- }
-
- return null;
- }
- }, {
- key: "comment",
- get: function get() {
- var comments = [];
-
- for (var i = 0; i < this.props.length; ++i) {
- var comment = this.getPropValue(i, _constants.Char.COMMENT, true);
- if (comment != null) comments.push(comment);
- }
-
- return comments.length > 0 ? comments.join('\n') : null;
- }
- }, {
- key: "hasComment",
- get: function get() {
- if (this.context) {
- var src = this.context.src;
-
- for (var i = 0; i < this.props.length; ++i) {
- if (src[this.props[i].start] === _constants.Char.COMMENT) return true;
- }
- }
-
- return false;
- }
- }, {
- key: "hasProps",
- get: function get() {
- if (this.context) {
- var src = this.context.src;
-
- for (var i = 0; i < this.props.length; ++i) {
- if (src[this.props[i].start] !== _constants.Char.COMMENT) return true;
- }
- }
-
- return false;
- }
- }, {
- key: "includesTrailingLines",
- get: function get() {
- return false;
- }
- }, {
- key: "jsonLike",
- get: function get() {
- var jsonLikeTypes = [_constants.Type.FLOW_MAP, _constants.Type.FLOW_SEQ, _constants.Type.QUOTE_DOUBLE, _constants.Type.QUOTE_SINGLE];
- return jsonLikeTypes.indexOf(this.type) !== -1;
- }
- }, {
- key: "rangeAsLinePos",
- get: function get() {
- if (!this.range || !this.context) return undefined;
- var start = (0, _sourceUtils.getLinePos)(this.range.start, this.context.root);
- if (!start) return undefined;
- var end = (0, _sourceUtils.getLinePos)(this.range.end, this.context.root);
- return {
- start: start,
- end: end
- };
- }
- }, {
- key: "rawValue",
- get: function get() {
- if (!this.valueRange || !this.context) return null;
- var _this$valueRange = this.valueRange,
- start = _this$valueRange.start,
- end = _this$valueRange.end;
- return this.context.src.slice(start, end);
- }
- }, {
- key: "tag",
- get: function get() {
- for (var i = 0; i < this.props.length; ++i) {
- var tag = this.getPropValue(i, _constants.Char.TAG, false);
-
- if (tag != null) {
- if (tag[1] === '<') {
- return {
- verbatim: tag.slice(2, -1)
- };
- } else {
- // eslint-disable-next-line no-unused-vars
- var _tag$match = tag.match(/^(.*!)([^!]*)$/),
- _tag$match2 = (0, _slicedToArray2.default)(_tag$match, 3),
- _ = _tag$match2[0],
- handle = _tag$match2[1],
- suffix = _tag$match2[2];
-
- return {
- handle: handle,
- suffix: suffix
- };
- }
- }
- }
-
- return null;
- }
- }, {
- key: "valueRangeContainsNewline",
- get: function get() {
- if (!this.valueRange || !this.context) return false;
- var _this$valueRange2 = this.valueRange,
- start = _this$valueRange2.start,
- end = _this$valueRange2.end;
- var src = this.context.src;
-
- for (var i = start; i < end; ++i) {
- if (src[i] === '\n') return true;
- }
-
- return false;
- }
- }]);
- return Node;
-}();
-
-exports.default = Node; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/ParseContext.js b/assets/node_modules/yaml/browser/dist/cst/ParseContext.js
deleted file mode 100644
index daec95a..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/ParseContext.js
+++ /dev/null
@@ -1,288 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
-
-var _constants = require("../constants");
-
-var _errors = require("../errors");
-
-var _Alias = _interopRequireDefault(require("./Alias"));
-
-var _BlockValue = _interopRequireDefault(require("./BlockValue"));
-
-var _Collection = _interopRequireDefault(require("./Collection"));
-
-var _CollectionItem = _interopRequireDefault(require("./CollectionItem"));
-
-var _FlowCollection = _interopRequireDefault(require("./FlowCollection"));
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _PlainValue = _interopRequireDefault(require("./PlainValue"));
-
-var _QuoteDouble = _interopRequireDefault(require("./QuoteDouble"));
-
-var _QuoteSingle = _interopRequireDefault(require("./QuoteSingle"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-/**
- * @param {boolean} atLineStart - Node starts at beginning of line
- * @param {boolean} inFlow - true if currently in a flow context
- * @param {boolean} inCollection - true if currently in a collection context
- * @param {number} indent - Current level of indentation
- * @param {number} lineStart - Start of the current line
- * @param {Node} parent - The parent of the node
- * @param {string} src - Source of the YAML document
- */
-var ParseContext =
-/*#__PURE__*/
-function () {
- (0, _createClass2.default)(ParseContext, null, [{
- key: "parseType",
- value: function parseType(src, offset, inFlow) {
- switch (src[offset]) {
- case '*':
- return _constants.Type.ALIAS;
-
- case '>':
- return _constants.Type.BLOCK_FOLDED;
-
- case '|':
- return _constants.Type.BLOCK_LITERAL;
-
- case '{':
- return _constants.Type.FLOW_MAP;
-
- case '[':
- return _constants.Type.FLOW_SEQ;
-
- case '?':
- return !inFlow && _Node.default.atBlank(src, offset + 1, true) ? _constants.Type.MAP_KEY : _constants.Type.PLAIN;
-
- case ':':
- return !inFlow && _Node.default.atBlank(src, offset + 1, true) ? _constants.Type.MAP_VALUE : _constants.Type.PLAIN;
-
- case '-':
- return !inFlow && _Node.default.atBlank(src, offset + 1, true) ? _constants.Type.SEQ_ITEM : _constants.Type.PLAIN;
-
- case '"':
- return _constants.Type.QUOTE_DOUBLE;
-
- case "'":
- return _constants.Type.QUOTE_SINGLE;
-
- default:
- return _constants.Type.PLAIN;
- }
- }
- }]);
-
- function ParseContext() {
- var _this = this;
-
- var orig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-
- var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
- atLineStart = _ref.atLineStart,
- inCollection = _ref.inCollection,
- inFlow = _ref.inFlow,
- indent = _ref.indent,
- lineStart = _ref.lineStart,
- parent = _ref.parent;
-
- (0, _classCallCheck2.default)(this, ParseContext);
- (0, _defineProperty2.default)(this, "parseNode", function (overlay, start) {
- if (_Node.default.atDocumentBoundary(_this.src, start)) return null;
- var context = new ParseContext(_this, overlay);
-
- var _context$parseProps = context.parseProps(start),
- props = _context$parseProps.props,
- type = _context$parseProps.type,
- valueStart = _context$parseProps.valueStart;
-
- var node;
-
- switch (type) {
- case _constants.Type.ALIAS:
- node = new _Alias.default(type, props);
- break;
-
- case _constants.Type.BLOCK_FOLDED:
- case _constants.Type.BLOCK_LITERAL:
- node = new _BlockValue.default(type, props);
- break;
-
- case _constants.Type.FLOW_MAP:
- case _constants.Type.FLOW_SEQ:
- node = new _FlowCollection.default(type, props);
- break;
-
- case _constants.Type.MAP_KEY:
- case _constants.Type.MAP_VALUE:
- case _constants.Type.SEQ_ITEM:
- node = new _CollectionItem.default(type, props);
- break;
-
- case _constants.Type.COMMENT:
- case _constants.Type.PLAIN:
- node = new _PlainValue.default(type, props);
- break;
-
- case _constants.Type.QUOTE_DOUBLE:
- node = new _QuoteDouble.default(type, props);
- break;
-
- case _constants.Type.QUOTE_SINGLE:
- node = new _QuoteSingle.default(type, props);
- break;
-
- default:
- node.error = new _errors.YAMLSyntaxError(node, "Unknown node type: ".concat(JSON.stringify(type)));
- node.range = new _Range.default(start, start + 1);
- return node;
- }
-
- var offset = node.parse(context, valueStart);
- node.range = new _Range.default(start, offset);
-
- if (offset <= start) {
- node.error = new Error("Node#parse consumed no characters");
- node.error.parseEnd = offset;
- node.error.source = node;
- node.range.end = start + 1;
- }
-
- if (context.nodeStartsCollection(node)) {
- if (!node.error && !context.atLineStart && context.parent.type === _constants.Type.DOCUMENT) {
- node.error = new _errors.YAMLSyntaxError(node, 'Block collection must not have preceding content here (e.g. directives-end indicator)');
- }
-
- var collection = new _Collection.default(node);
- offset = collection.parse(new ParseContext(context), offset);
- collection.range = new _Range.default(start, offset);
- return collection;
- }
-
- return node;
- });
- this.atLineStart = atLineStart != null ? atLineStart : orig.atLineStart || false;
- this.inCollection = inCollection != null ? inCollection : orig.inCollection || false;
- this.inFlow = inFlow != null ? inFlow : orig.inFlow || false;
- this.indent = indent != null ? indent : orig.indent;
- this.lineStart = lineStart != null ? lineStart : orig.lineStart;
- this.parent = parent != null ? parent : orig.parent || {};
- this.root = orig.root;
- this.src = orig.src;
- } // for logging
-
-
- (0, _createClass2.default)(ParseContext, [{
- key: "nodeStartsCollection",
- value: function nodeStartsCollection(node) {
- var inCollection = this.inCollection,
- inFlow = this.inFlow,
- src = this.src;
- if (inCollection || inFlow) return false;
- if (node instanceof _CollectionItem.default) return true; // check for implicit key
-
- var offset = node.range.end;
- if (src[offset] === '\n' || src[offset - 1] === '\n') return false;
- offset = _Node.default.endOfWhiteSpace(src, offset);
- return src[offset] === ':';
- } // Anchor and tag are before type, which determines the node implementation
- // class; hence this intermediate step.
-
- }, {
- key: "parseProps",
- value: function parseProps(offset) {
- var inFlow = this.inFlow,
- parent = this.parent,
- src = this.src;
- var props = [];
- var lineHasProps = false;
- offset = _Node.default.endOfWhiteSpace(src, offset);
- var ch = src[offset];
-
- while (ch === _constants.Char.ANCHOR || ch === _constants.Char.COMMENT || ch === _constants.Char.TAG || ch === '\n') {
- if (ch === '\n') {
- var lineStart = offset + 1;
-
- var inEnd = _Node.default.endOfIndent(src, lineStart);
-
- var indentDiff = inEnd - (lineStart + this.indent);
- var noIndicatorAsIndent = parent.type === _constants.Type.SEQ_ITEM && parent.context.atLineStart;
- if (!_Node.default.nextNodeIsIndented(src[inEnd], indentDiff, !noIndicatorAsIndent)) break;
- this.atLineStart = true;
- this.lineStart = lineStart;
- lineHasProps = false;
- offset = inEnd;
- } else if (ch === _constants.Char.COMMENT) {
- var end = _Node.default.endOfLine(src, offset + 1);
-
- props.push(new _Range.default(offset, end));
- offset = end;
- } else {
- var _end = _Node.default.endOfIdentifier(src, offset + 1);
-
- if (ch === _constants.Char.TAG && src[_end] === ',' && /^[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+,\d\d\d\d(-\d\d){0,2}\/\S/.test(src.slice(offset + 1, _end + 13))) {
- // Let's presume we're dealing with a YAML 1.0 domain tag here, rather
- // than an empty but 'foo.bar' private-tagged node in a flow collection
- // followed without whitespace by a plain string starting with a year
- // or date divided by something.
- _end = _Node.default.endOfIdentifier(src, _end + 5);
- }
-
- props.push(new _Range.default(offset, _end));
- lineHasProps = true;
- offset = _Node.default.endOfWhiteSpace(src, _end);
- }
-
- ch = src[offset];
- } // '- &a : b' has an anchor on an empty node
-
-
- if (lineHasProps && ch === ':' && _Node.default.atBlank(src, offset + 1, true)) offset -= 1;
- var type = ParseContext.parseType(src, offset, inFlow);
- return {
- props: props,
- type: type,
- valueStart: offset
- };
- }
- /**
- * Parses a node from the source
- * @param {ParseContext} overlay
- * @param {number} start - Index of first non-whitespace character for the node
- * @returns {?Node} - null if at a document boundary
- */
-
- }, {
- key: "pretty",
- get: function get() {
- var obj = {
- start: "".concat(this.lineStart, " + ").concat(this.indent),
- in: [],
- parent: this.parent.type
- };
- if (!this.atLineStart) obj.start += ' + N';
- if (this.inCollection) obj.in.push('collection');
- if (this.inFlow) obj.in.push('flow');
- return obj;
- }
- }]);
- return ParseContext;
-}();
-
-exports.default = ParseContext; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/PlainValue.js b/assets/node_modules/yaml/browser/dist/cst/PlainValue.js
deleted file mode 100644
index 32e9fe7..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/PlainValue.js
+++ /dev/null
@@ -1,183 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-var PlainValue =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(PlainValue, _Node);
-
- function PlainValue() {
- (0, _classCallCheck2.default)(this, PlainValue);
- return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(PlainValue).apply(this, arguments));
- }
-
- (0, _createClass2.default)(PlainValue, [{
- key: "parseBlockValue",
- value: function parseBlockValue(start) {
- var _this$context = this.context,
- indent = _this$context.indent,
- inFlow = _this$context.inFlow,
- src = _this$context.src;
- var offset = start;
- var valueEnd = start;
-
- for (var ch = src[offset]; ch === '\n'; ch = src[offset]) {
- if (_Node2.default.atDocumentBoundary(src, offset + 1)) break;
-
- var end = _Node2.default.endOfBlockIndent(src, indent, offset + 1);
-
- if (end === null || src[end] === '#') break;
-
- if (src[end] === '\n') {
- offset = end;
- } else {
- valueEnd = PlainValue.endOfLine(src, end, inFlow);
- offset = valueEnd;
- }
- }
-
- if (this.valueRange.isEmpty()) this.valueRange.start = start;
- this.valueRange.end = valueEnd;
- return valueEnd;
- }
- /**
- * Parses a plain value from the source
- *
- * Accepted forms are:
- * ```
- * #comment
- *
- * first line
- *
- * first line #comment
- *
- * first line
- * block
- * lines
- *
- * #comment
- * block
- * lines
- * ```
- * where block lines are empty or have an indent level greater than `indent`.
- *
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this scalar, may be `\n`
- */
-
- }, {
- key: "parse",
- value: function parse(context, start) {
- this.context = context;
- var inFlow = context.inFlow,
- src = context.src;
- var offset = start;
- var ch = src[offset];
-
- if (ch && ch !== '#' && ch !== '\n') {
- offset = PlainValue.endOfLine(src, start, inFlow);
- }
-
- this.valueRange = new _Range.default(start, offset);
- offset = _Node2.default.endOfWhiteSpace(src, offset);
- offset = this.parseComment(offset);
-
- if (!this.hasComment || this.valueRange.isEmpty()) {
- offset = this.parseBlockValue(offset);
- }
-
- return offset;
- }
- }, {
- key: "strValue",
- get: function get() {
- if (!this.valueRange || !this.context) return null;
- var _this$valueRange = this.valueRange,
- start = _this$valueRange.start,
- end = _this$valueRange.end;
- var src = this.context.src;
- var ch = src[end - 1];
-
- while (start < end && (ch === '\n' || ch === '\t' || ch === ' ')) {
- ch = src[--end - 1];
- }
-
- ch = src[start];
-
- while (start < end && (ch === '\n' || ch === '\t' || ch === ' ')) {
- ch = src[++start];
- }
-
- var str = '';
-
- for (var i = start; i < end; ++i) {
- var _ch = src[i];
-
- if (_ch === '\n') {
- var _Node$foldNewline = _Node2.default.foldNewline(src, i, -1),
- fold = _Node$foldNewline.fold,
- offset = _Node$foldNewline.offset;
-
- str += fold;
- i = offset;
- } else if (_ch === ' ' || _ch === '\t') {
- // trim trailing whitespace
- var wsStart = i;
- var next = src[i + 1];
-
- while (i < end && (next === ' ' || next === '\t')) {
- i += 1;
- next = src[i + 1];
- }
-
- if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : _ch;
- } else {
- str += _ch;
- }
- }
-
- return str;
- }
- }], [{
- key: "endOfLine",
- value: function endOfLine(src, start, inFlow) {
- var ch = src[start];
- var offset = start;
-
- while (ch && ch !== '\n') {
- if (inFlow && (ch === '[' || ch === ']' || ch === '{' || ch === '}' || ch === ',')) break;
- var next = src[offset + 1];
- if (ch === ':' && (!next || next === '\n' || next === '\t' || next === ' ' || inFlow && next === ',')) break;
- if ((ch === ' ' || ch === '\t') && next === '#') break;
- offset += 1;
- ch = next;
- }
-
- return offset;
- }
- }]);
- return PlainValue;
-}(_Node2.default);
-
-exports.default = PlainValue; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/QuoteDouble.js b/assets/node_modules/yaml/browser/dist/cst/QuoteDouble.js
deleted file mode 100644
index e132990..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/QuoteDouble.js
+++ /dev/null
@@ -1,257 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _errors = require("../errors");
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-var QuoteDouble =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(QuoteDouble, _Node);
-
- function QuoteDouble() {
- (0, _classCallCheck2.default)(this, QuoteDouble);
- return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(QuoteDouble).apply(this, arguments));
- }
-
- (0, _createClass2.default)(QuoteDouble, [{
- key: "parseCharCode",
- value: function parseCharCode(offset, length, errors) {
- var src = this.context.src;
- var cc = src.substr(offset, length);
- var ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);
- var code = ok ? parseInt(cc, 16) : NaN;
-
- if (isNaN(code)) {
- errors.push(new _errors.YAMLSyntaxError(this, "Invalid escape sequence ".concat(src.substr(offset - 2, length + 2))));
- return src.substr(offset - 2, length + 2);
- }
-
- return String.fromCodePoint(code);
- }
- /**
- * Parses a "double quoted" value from the source
- *
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this scalar
- */
-
- }, {
- key: "parse",
- value: function parse(context, start) {
- this.context = context;
- var src = context.src;
- var offset = QuoteDouble.endOfQuote(src, start + 1);
- this.valueRange = new _Range.default(start, offset);
- offset = _Node2.default.endOfWhiteSpace(src, offset);
- offset = this.parseComment(offset);
- return offset;
- }
- }, {
- key: "strValue",
-
- /**
- * @returns {string | { str: string, errors: YAMLSyntaxError[] }}
- */
- get: function get() {
- if (!this.valueRange || !this.context) return null;
- var errors = [];
- var _this$valueRange = this.valueRange,
- start = _this$valueRange.start,
- end = _this$valueRange.end;
- var _this$context = this.context,
- indent = _this$context.indent,
- src = _this$context.src;
- if (src[end - 1] !== '"') errors.push(new _errors.YAMLSyntaxError(this, 'Missing closing "quote')); // Using String#replace is too painful with escaped newlines preceded by
- // escaped backslashes; also, this should be faster.
-
- var str = '';
-
- for (var i = start + 1; i < end - 1; ++i) {
- var ch = src[i];
-
- if (ch === '\n') {
- if (_Node2.default.atDocumentBoundary(src, i + 1)) errors.push(new _errors.YAMLSemanticError(this, 'Document boundary indicators are not allowed within string values'));
-
- var _Node$foldNewline = _Node2.default.foldNewline(src, i, indent),
- fold = _Node$foldNewline.fold,
- offset = _Node$foldNewline.offset,
- error = _Node$foldNewline.error;
-
- str += fold;
- i = offset;
- if (error) errors.push(new _errors.YAMLSemanticError(this, 'Multi-line double-quoted string needs to be sufficiently indented'));
- } else if (ch === '\\') {
- i += 1;
-
- switch (src[i]) {
- case '0':
- str += '\0';
- break;
- // null character
-
- case 'a':
- str += '\x07';
- break;
- // bell character
-
- case 'b':
- str += '\b';
- break;
- // backspace
-
- case 'e':
- str += '\x1b';
- break;
- // escape character
-
- case 'f':
- str += '\f';
- break;
- // form feed
-
- case 'n':
- str += '\n';
- break;
- // line feed
-
- case 'r':
- str += '\r';
- break;
- // carriage return
-
- case 't':
- str += '\t';
- break;
- // horizontal tab
-
- case 'v':
- str += '\v';
- break;
- // vertical tab
-
- case 'N':
- str += "\x85";
- break;
- // Unicode next line
-
- case '_':
- str += "\xA0";
- break;
- // Unicode non-breaking space
-
- case 'L':
- str += "\u2028";
- break;
- // Unicode line separator
-
- case 'P':
- str += "\u2029";
- break;
- // Unicode paragraph separator
-
- case ' ':
- str += ' ';
- break;
-
- case '"':
- str += '"';
- break;
-
- case '/':
- str += '/';
- break;
-
- case '\\':
- str += '\\';
- break;
-
- case '\t':
- str += '\t';
- break;
-
- case 'x':
- str += this.parseCharCode(i + 1, 2, errors);
- i += 2;
- break;
-
- case 'u':
- str += this.parseCharCode(i + 1, 4, errors);
- i += 4;
- break;
-
- case 'U':
- str += this.parseCharCode(i + 1, 8, errors);
- i += 8;
- break;
-
- case '\n':
- // skip escaped newlines, but still trim the following line
- while (src[i + 1] === ' ' || src[i + 1] === '\t') {
- i += 1;
- }
-
- break;
-
- default:
- errors.push(new _errors.YAMLSyntaxError(this, "Invalid escape sequence ".concat(src.substr(i - 1, 2))));
- str += '\\' + src[i];
- }
- } else if (ch === ' ' || ch === '\t') {
- // trim trailing whitespace
- var wsStart = i;
- var next = src[i + 1];
-
- while (next === ' ' || next === '\t') {
- i += 1;
- next = src[i + 1];
- }
-
- if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch;
- } else {
- str += ch;
- }
- }
-
- return errors.length > 0 ? {
- errors: errors,
- str: str
- } : str;
- }
- }], [{
- key: "endOfQuote",
- value: function endOfQuote(src, offset) {
- var ch = src[offset];
-
- while (ch && ch !== '"') {
- offset += ch === '\\' ? 2 : 1;
- ch = src[offset];
- }
-
- return offset + 1;
- }
- }]);
- return QuoteDouble;
-}(_Node2.default);
-
-exports.default = QuoteDouble; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/QuoteSingle.js b/assets/node_modules/yaml/browser/dist/cst/QuoteSingle.js
deleted file mode 100644
index 9732eda..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/QuoteSingle.js
+++ /dev/null
@@ -1,132 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _errors = require("../errors");
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-var QuoteSingle =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(QuoteSingle, _Node);
-
- function QuoteSingle() {
- (0, _classCallCheck2.default)(this, QuoteSingle);
- return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(QuoteSingle).apply(this, arguments));
- }
-
- (0, _createClass2.default)(QuoteSingle, [{
- key: "parse",
-
- /**
- * Parses a 'single quoted' value from the source
- *
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this scalar
- */
- value: function parse(context, start) {
- this.context = context;
- var src = context.src;
- var offset = QuoteSingle.endOfQuote(src, start + 1);
- this.valueRange = new _Range.default(start, offset);
- offset = _Node2.default.endOfWhiteSpace(src, offset);
- offset = this.parseComment(offset);
- return offset;
- }
- }, {
- key: "strValue",
-
- /**
- * @returns {string | { str: string, errors: YAMLSyntaxError[] }}
- */
- get: function get() {
- if (!this.valueRange || !this.context) return null;
- var errors = [];
- var _this$valueRange = this.valueRange,
- start = _this$valueRange.start,
- end = _this$valueRange.end;
- var _this$context = this.context,
- indent = _this$context.indent,
- src = _this$context.src;
- if (src[end - 1] !== "'") errors.push(new _errors.YAMLSyntaxError(this, "Missing closing 'quote"));
- var str = '';
-
- for (var i = start + 1; i < end - 1; ++i) {
- var ch = src[i];
-
- if (ch === '\n') {
- if (_Node2.default.atDocumentBoundary(src, i + 1)) errors.push(new _errors.YAMLSemanticError(this, 'Document boundary indicators are not allowed within string values'));
-
- var _Node$foldNewline = _Node2.default.foldNewline(src, i, indent),
- fold = _Node$foldNewline.fold,
- offset = _Node$foldNewline.offset,
- error = _Node$foldNewline.error;
-
- str += fold;
- i = offset;
- if (error) errors.push(new _errors.YAMLSemanticError(this, 'Multi-line single-quoted string needs to be sufficiently indented'));
- } else if (ch === "'") {
- str += ch;
- i += 1;
- if (src[i] !== "'") errors.push(new _errors.YAMLSyntaxError(this, 'Unescaped single quote? This should not happen.'));
- } else if (ch === ' ' || ch === '\t') {
- // trim trailing whitespace
- var wsStart = i;
- var next = src[i + 1];
-
- while (next === ' ' || next === '\t') {
- i += 1;
- next = src[i + 1];
- }
-
- if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch;
- } else {
- str += ch;
- }
- }
-
- return errors.length > 0 ? {
- errors: errors,
- str: str
- } : str;
- }
- }], [{
- key: "endOfQuote",
- value: function endOfQuote(src, offset) {
- var ch = src[offset];
-
- while (ch) {
- if (ch === "'") {
- if (src[offset + 1] !== "'") break;
- ch = src[offset += 2];
- } else {
- ch = src[offset += 1];
- }
- }
-
- return offset + 1;
- }
- }]);
- return QuoteSingle;
-}(_Node2.default);
-
-exports.default = QuoteSingle; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/Range.js b/assets/node_modules/yaml/browser/dist/cst/Range.js
deleted file mode 100644
index 9130274..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/Range.js
+++ /dev/null
@@ -1,77 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var Range =
-/*#__PURE__*/
-function () {
- (0, _createClass2.default)(Range, null, [{
- key: "copy",
- value: function copy(orig) {
- return new Range(orig.start, orig.end);
- }
- }]);
-
- function Range(start, end) {
- (0, _classCallCheck2.default)(this, Range);
- this.start = start;
- this.end = end || start;
- }
-
- (0, _createClass2.default)(Range, [{
- key: "isEmpty",
- value: function isEmpty() {
- return typeof this.start !== 'number' || !this.end || this.end <= this.start;
- }
- /**
- * Set `origStart` and `origEnd` to point to the original source range for
- * this node, which may differ due to dropped CR characters.
- *
- * @param {number[]} cr - Positions of dropped CR characters
- * @param {number} offset - Starting index of `cr` from the last call
- * @returns {number} - The next offset, matching the one found for `origStart`
- */
-
- }, {
- key: "setOrigRange",
- value: function setOrigRange(cr, offset) {
- var start = this.start,
- end = this.end;
-
- if (cr.length === 0 || end <= cr[0]) {
- this.origStart = start;
- this.origEnd = end;
- return offset;
- }
-
- var i = offset;
-
- while (i < cr.length) {
- if (cr[i] > start) break;else ++i;
- }
-
- this.origStart = start + i;
- var nextOffset = i;
-
- while (i < cr.length) {
- // if end was at \n, it should now be at \r
- if (cr[i] >= end) break;else ++i;
- }
-
- this.origEnd = end + i;
- return nextOffset;
- }
- }]);
- return Range;
-}();
-
-exports.default = Range; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/parse.js b/assets/node_modules/yaml/browser/dist/cst/parse.js
deleted file mode 100644
index ab5081d..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/parse.js
+++ /dev/null
@@ -1,59 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = parse;
-
-var _Document = _interopRequireDefault(require("./Document"));
-
-var _ParseContext = _interopRequireDefault(require("./ParseContext"));
-
-// Published as 'yaml/parse-cst'
-function parse(src) {
- var cr = [];
-
- if (src.indexOf('\r') !== -1) {
- src = src.replace(/\r\n?/g, function (match, offset) {
- if (match.length > 1) cr.push(offset);
- return '\n';
- });
- }
-
- var documents = [];
- var offset = 0;
-
- do {
- var doc = new _Document.default();
- var context = new _ParseContext.default({
- src: src
- });
- offset = doc.parse(context, offset);
- documents.push(doc);
- } while (offset < src.length);
-
- documents.setOrigRanges = function () {
- if (cr.length === 0) return false;
-
- for (var i = 1; i < cr.length; ++i) {
- cr[i] -= i;
- }
-
- var crOffset = 0;
-
- for (var _i = 0; _i < documents.length; ++_i) {
- crOffset = documents[_i].setOrigRanges(cr, crOffset);
- }
-
- cr.splice(0, cr.length);
- return true;
- };
-
- documents.toString = function () {
- return documents.join('...\n');
- };
-
- return documents;
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/cst/source-utils.js b/assets/node_modules/yaml/browser/dist/cst/source-utils.js
deleted file mode 100644
index 5209f46..0000000
--- a/assets/node_modules/yaml/browser/dist/cst/source-utils.js
+++ /dev/null
@@ -1,179 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.getLinePos = getLinePos;
-exports.getLine = getLine;
-exports.getPrettyContext = getPrettyContext;
-
-function findLineStarts(src) {
- var ls = [0];
- var offset = src.indexOf('\n');
-
- while (offset !== -1) {
- offset += 1;
- ls.push(offset);
- offset = src.indexOf('\n', offset);
- }
-
- return ls;
-}
-
-function getSrcInfo(cst) {
- var lineStarts, src;
-
- if (typeof cst === 'string') {
- lineStarts = findLineStarts(cst);
- src = cst;
- } else {
- if (Array.isArray(cst)) cst = cst[0];
-
- if (cst && cst.context) {
- if (!cst.lineStarts) cst.lineStarts = findLineStarts(cst.context.src);
- lineStarts = cst.lineStarts;
- src = cst.context.src;
- }
- }
-
- return {
- lineStarts: lineStarts,
- src: src
- };
-}
-/**
- * @typedef {Object} LinePos - One-indexed position in the source
- * @property {number} line
- * @property {number} col
- */
-
-/**
- * Determine the line/col position matching a character offset.
- *
- * Accepts a source string or a CST document as the second parameter. With
- * the latter, starting indices for lines are cached in the document as
- * `lineStarts: number[]`.
- *
- * Returns a one-indexed `{ line, col }` location if found, or
- * `undefined` otherwise.
- *
- * @param {number} offset
- * @param {string|Document|Document[]} cst
- * @returns {?LinePos}
- */
-
-
-function getLinePos(offset, cst) {
- if (typeof offset !== 'number' || offset < 0) return null;
-
- var _getSrcInfo = getSrcInfo(cst),
- lineStarts = _getSrcInfo.lineStarts,
- src = _getSrcInfo.src;
-
- if (!lineStarts || !src || offset > src.length) return null;
-
- for (var i = 0; i < lineStarts.length; ++i) {
- var start = lineStarts[i];
-
- if (offset < start) {
- return {
- line: i,
- col: offset - lineStarts[i - 1] + 1
- };
- }
-
- if (offset === start) return {
- line: i + 1,
- col: 1
- };
- }
-
- var line = lineStarts.length;
- return {
- line: line,
- col: offset - lineStarts[line - 1] + 1
- };
-}
-/**
- * Get a specified line from the source.
- *
- * Accepts a source string or a CST document as the second parameter. With
- * the latter, starting indices for lines are cached in the document as
- * `lineStarts: number[]`.
- *
- * Returns the line as a string if found, or `null` otherwise.
- *
- * @param {number} line One-indexed line number
- * @param {string|Document|Document[]} cst
- * @returns {?string}
- */
-
-
-function getLine(line, cst) {
- var _getSrcInfo2 = getSrcInfo(cst),
- lineStarts = _getSrcInfo2.lineStarts,
- src = _getSrcInfo2.src;
-
- if (!lineStarts || !(line >= 1) || line > lineStarts.length) return null;
- var start = lineStarts[line - 1];
- var end = lineStarts[line]; // undefined for last line; that's ok for slice()
-
- while (end && end > start && src[end - 1] === '\n') {
- --end;
- }
-
- return src.slice(start, end);
-}
-/**
- * Pretty-print the starting line from the source indicated by the range `pos`
- *
- * Trims output to `maxWidth` chars while keeping the starting column visible,
- * using `…` at either end to indicate dropped characters.
- *
- * Returns a two-line string (or `null`) with `\n` as separator; the second line
- * will hold appropriately indented `^` marks indicating the column range.
- *
- * @param {Object} pos
- * @param {LinePos} pos.start
- * @param {LinePos} [pos.end]
- * @param {string|Document|Document[]*} cst
- * @param {number} [maxWidth=80]
- * @returns {?string}
- */
-
-
-function getPrettyContext(_ref, cst) {
- var start = _ref.start,
- end = _ref.end;
- var maxWidth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 80;
- var src = getLine(start.line, cst);
- if (!src) return null;
- var col = start.col;
-
- if (src.length > maxWidth) {
- if (col <= maxWidth - 10) {
- src = src.substr(0, maxWidth - 1) + '…';
- } else {
- var halfWidth = Math.round(maxWidth / 2);
- if (src.length > col + halfWidth) src = src.substr(0, col + halfWidth - 1) + '…';
- col -= src.length - maxWidth;
- src = '…' + src.substr(1 - maxWidth);
- }
- }
-
- var errLen = 1;
- var errEnd = '';
-
- if (end) {
- if (end.line === start.line && col + (end.col - start.col) <= maxWidth + 1) {
- errLen = end.col - start.col;
- } else {
- errLen = Math.min(src.length + 1, maxWidth) - col;
- errEnd = '…';
- }
- }
-
- var offset = col > 1 ? ' '.repeat(col - 1) : '';
- var err = '^'.repeat(errLen);
- return "".concat(src, "\n").concat(offset).concat(err).concat(errEnd);
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/errors.js b/assets/node_modules/yaml/browser/dist/errors.js
deleted file mode 100644
index 39c4a7c..0000000
--- a/assets/node_modules/yaml/browser/dist/errors.js
+++ /dev/null
@@ -1,148 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.YAMLWarning = exports.YAMLSyntaxError = exports.YAMLSemanticError = exports.YAMLReferenceError = exports.YAMLError = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
-
-var _Node = _interopRequireDefault(require("./cst/Node"));
-
-var _sourceUtils = require("./cst/source-utils");
-
-var _Range = _interopRequireDefault(require("./cst/Range"));
-
-var YAMLError =
-/*#__PURE__*/
-function (_Error) {
- (0, _inherits2.default)(YAMLError, _Error);
-
- function YAMLError(name, source, message) {
- var _this;
-
- (0, _classCallCheck2.default)(this, YAMLError);
- if (!message || !(source instanceof _Node.default)) throw new Error("Invalid arguments for new ".concat(name));
- _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(YAMLError).call(this));
- _this.name = name;
- _this.message = message;
- _this.source = source;
- return _this;
- }
-
- (0, _createClass2.default)(YAMLError, [{
- key: "makePretty",
- value: function makePretty() {
- if (!this.source) return;
- this.nodeType = this.source.type;
- var cst = this.source.context && this.source.context.root;
-
- if (typeof this.offset === 'number') {
- this.range = new _Range.default(this.offset, this.offset + 1);
- var start = cst && (0, _sourceUtils.getLinePos)(this.offset, cst);
-
- if (start) {
- var end = {
- line: start.line,
- col: start.col + 1
- };
- this.linePos = {
- start: start,
- end: end
- };
- }
-
- delete this.offset;
- } else {
- this.range = this.source.range;
- this.linePos = this.source.rangeAsLinePos;
- }
-
- if (this.linePos) {
- var _this$linePos$start = this.linePos.start,
- line = _this$linePos$start.line,
- col = _this$linePos$start.col;
- this.message += " at line ".concat(line, ", column ").concat(col);
- var ctx = cst && (0, _sourceUtils.getPrettyContext)(this.linePos, cst);
- if (ctx) this.message += ":\n\n".concat(ctx, "\n");
- }
-
- delete this.source;
- }
- }]);
- return YAMLError;
-}((0, _wrapNativeSuper2.default)(Error));
-
-exports.YAMLError = YAMLError;
-
-var YAMLReferenceError =
-/*#__PURE__*/
-function (_YAMLError) {
- (0, _inherits2.default)(YAMLReferenceError, _YAMLError);
-
- function YAMLReferenceError(source, message) {
- (0, _classCallCheck2.default)(this, YAMLReferenceError);
- return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(YAMLReferenceError).call(this, 'YAMLReferenceError', source, message));
- }
-
- return YAMLReferenceError;
-}(YAMLError);
-
-exports.YAMLReferenceError = YAMLReferenceError;
-
-var YAMLSemanticError =
-/*#__PURE__*/
-function (_YAMLError2) {
- (0, _inherits2.default)(YAMLSemanticError, _YAMLError2);
-
- function YAMLSemanticError(source, message) {
- (0, _classCallCheck2.default)(this, YAMLSemanticError);
- return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(YAMLSemanticError).call(this, 'YAMLSemanticError', source, message));
- }
-
- return YAMLSemanticError;
-}(YAMLError);
-
-exports.YAMLSemanticError = YAMLSemanticError;
-
-var YAMLSyntaxError =
-/*#__PURE__*/
-function (_YAMLError3) {
- (0, _inherits2.default)(YAMLSyntaxError, _YAMLError3);
-
- function YAMLSyntaxError(source, message) {
- (0, _classCallCheck2.default)(this, YAMLSyntaxError);
- return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(YAMLSyntaxError).call(this, 'YAMLSyntaxError', source, message));
- }
-
- return YAMLSyntaxError;
-}(YAMLError);
-
-exports.YAMLSyntaxError = YAMLSyntaxError;
-
-var YAMLWarning =
-/*#__PURE__*/
-function (_YAMLError4) {
- (0, _inherits2.default)(YAMLWarning, _YAMLError4);
-
- function YAMLWarning(source, message) {
- (0, _classCallCheck2.default)(this, YAMLWarning);
- return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(YAMLWarning).call(this, 'YAMLWarning', source, message));
- }
-
- return YAMLWarning;
-}(YAMLError);
-
-exports.YAMLWarning = YAMLWarning; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/foldFlowLines.js b/assets/node_modules/yaml/browser/dist/foldFlowLines.js
deleted file mode 100644
index 4287d52..0000000
--- a/assets/node_modules/yaml/browser/dist/foldFlowLines.js
+++ /dev/null
@@ -1,149 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = foldFlowLines;
-exports.FOLD_QUOTED = exports.FOLD_BLOCK = exports.FOLD_FLOW = void 0;
-var FOLD_FLOW = 'flow';
-exports.FOLD_FLOW = FOLD_FLOW;
-var FOLD_BLOCK = 'block';
-exports.FOLD_BLOCK = FOLD_BLOCK;
-var FOLD_QUOTED = 'quoted'; // presumes i+1 is at the start of a line
-// returns index of last newline in more-indented block
-
-exports.FOLD_QUOTED = FOLD_QUOTED;
-
-var consumeMoreIndentedLines = function consumeMoreIndentedLines(text, i) {
- var ch = text[i + 1];
-
- while (ch === ' ' || ch === '\t') {
- do {
- ch = text[i += 1];
- } while (ch && ch !== '\n');
-
- ch = text[i + 1];
- }
-
- return i;
-};
-/**
- * Tries to keep input at up to `lineWidth` characters, splitting only on spaces
- * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are
- * terminated with `\n` and started with `indent`.
- *
- * @param {string} text
- * @param {string} indent
- * @param {string} [mode='flow'] `'block'` prevents more-indented lines
- * from being folded; `'quoted'` allows for `\` escapes, including escaped
- * newlines
- * @param {Object} options
- * @param {number} [options.indentAtStart] Accounts for leading contents on
- * the first line, defaulting to `indent.length`
- * @param {number} [options.lineWidth=80]
- * @param {number} [options.minContentWidth=20] Allow highly indented lines to
- * stretch the line width
- * @param {function} options.onFold Called once if the text is folded
- * @param {function} options.onFold Called once if any line of text exceeds
- * lineWidth characters
- */
-
-
-function foldFlowLines(text, indent, mode, _ref) {
- var indentAtStart = _ref.indentAtStart,
- _ref$lineWidth = _ref.lineWidth,
- lineWidth = _ref$lineWidth === void 0 ? 80 : _ref$lineWidth,
- _ref$minContentWidth = _ref.minContentWidth,
- minContentWidth = _ref$minContentWidth === void 0 ? 20 : _ref$minContentWidth,
- onFold = _ref.onFold,
- onOverflow = _ref.onOverflow;
- if (!lineWidth || lineWidth < 0) return text;
- var endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);
- if (text.length <= endStep) return text;
- var folds = [];
- var escapedFolds = {};
- var end = lineWidth - (typeof indentAtStart === 'number' ? indentAtStart : indent.length);
- var split = undefined;
- var prev = undefined;
- var overflow = false;
- var i = -1;
-
- if (mode === FOLD_BLOCK) {
- i = consumeMoreIndentedLines(text, i);
- if (i !== -1) end = i + endStep;
- }
-
- for (var ch; ch = text[i += 1];) {
- if (mode === FOLD_QUOTED && ch === '\\') {
- switch (text[i + 1]) {
- case 'x':
- i += 3;
- break;
-
- case 'u':
- i += 5;
- break;
-
- case 'U':
- i += 9;
- break;
-
- default:
- i += 1;
- }
- }
-
- if (ch === '\n') {
- if (mode === FOLD_BLOCK) i = consumeMoreIndentedLines(text, i);
- end = i + endStep;
- split = undefined;
- } else {
- if (ch === ' ' && prev && prev !== ' ' && prev !== '\n' && prev !== '\t') {
- // space surrounded by non-space can be replaced with newline + indent
- var next = text[i + 1];
- if (next && next !== ' ' && next !== '\n' && next !== '\t') split = i;
- }
-
- if (i >= end) {
- if (split) {
- folds.push(split);
- end = split + endStep;
- split = undefined;
- } else if (mode === FOLD_QUOTED) {
- // white-space collected at end may stretch past lineWidth
- while (prev === ' ' || prev === '\t') {
- prev = ch;
- ch = text[i += 1];
- overflow = true;
- } // i - 2 accounts for not-dropped last char + newline-escaping \
-
-
- folds.push(i - 2);
- escapedFolds[i - 2] = true;
- end = i - 2 + endStep;
- split = undefined;
- } else {
- overflow = true;
- }
- }
- }
-
- prev = ch;
- }
-
- if (overflow && onOverflow) onOverflow();
- if (folds.length === 0) return text;
- if (onFold) onFold();
- var res = text.slice(0, folds[0]);
-
- for (var _i = 0; _i < folds.length; ++_i) {
- var fold = folds[_i];
-
- var _end = folds[_i + 1] || text.length;
-
- if (mode === FOLD_QUOTED && escapedFolds[fold]) res += "".concat(text[fold], "\\");
- res += "\n".concat(indent).concat(text.slice(fold + 1, _end));
- }
-
- return res;
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/index.js b/assets/node_modules/yaml/browser/dist/index.js
deleted file mode 100644
index 66573c1..0000000
--- a/assets/node_modules/yaml/browser/dist/index.js
+++ /dev/null
@@ -1,139 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _parse = _interopRequireDefault(require("./cst/parse"));
-
-var _Document = _interopRequireDefault(require("./Document"));
-
-var _errors = require("./errors");
-
-var _schema = _interopRequireDefault(require("./schema"));
-
-var _warnings = require("./warnings");
-
-var defaultOptions = {
- anchorPrefix: 'a',
- customTags: null,
- keepCstNodes: false,
- keepNodeTypes: true,
- keepBlobsInJSON: true,
- mapAsMap: false,
- maxAliasCount: 100,
- prettyErrors: false,
- // TODO Set true in v2
- simpleKeys: false,
- version: '1.2'
-};
-
-function createNode(value) {
- var wrapScalars = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
- var tag = arguments.length > 2 ? arguments[2] : undefined;
-
- if (tag === undefined && typeof wrapScalars === 'string') {
- tag = wrapScalars;
- wrapScalars = true;
- }
-
- var options = Object.assign({}, _Document.default.defaults[defaultOptions.version], defaultOptions);
- var schema = new _schema.default(options);
- return schema.createNode(value, wrapScalars, tag);
-}
-
-var Document =
-/*#__PURE__*/
-function (_YAMLDocument) {
- (0, _inherits2.default)(Document, _YAMLDocument);
-
- function Document(options) {
- (0, _classCallCheck2.default)(this, Document);
- return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Document).call(this, Object.assign({}, defaultOptions, options)));
- }
-
- return Document;
-}(_Document.default);
-
-function parseAllDocuments(src, options) {
- var stream = [];
- var prev;
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = (0, _parse.default)(src)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var cstDoc = _step.value;
- var doc = new Document(options);
- doc.parse(cstDoc, prev);
- stream.push(doc);
- prev = doc;
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-
- return stream;
-}
-
-function parseDocument(src, options) {
- var cst = (0, _parse.default)(src);
- var doc = new Document(options).parse(cst[0]);
-
- if (cst.length > 1) {
- var errMsg = 'Source contains multiple documents; please use YAML.parseAllDocuments()';
- doc.errors.unshift(new _errors.YAMLSemanticError(cst[1], errMsg));
- }
-
- return doc;
-}
-
-function parse(src, options) {
- var doc = parseDocument(src, options);
- doc.warnings.forEach(function (warning) {
- return (0, _warnings.warn)(warning);
- });
- if (doc.errors.length > 0) throw doc.errors[0];
- return doc.toJSON();
-}
-
-function stringify(value, options) {
- var doc = new Document(options);
- doc.contents = value;
- return String(doc);
-}
-
-var _default = {
- createNode: createNode,
- defaultOptions: defaultOptions,
- Document: Document,
- parse: parse,
- parseAllDocuments: parseAllDocuments,
- parseCST: _parse.default,
- parseDocument: parseDocument,
- stringify: stringify
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/listTagNames.js b/assets/node_modules/yaml/browser/dist/listTagNames.js
deleted file mode 100644
index 3147d3c..0000000
--- a/assets/node_modules/yaml/browser/dist/listTagNames.js
+++ /dev/null
@@ -1,42 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
-
-var _Collection = _interopRequireDefault(require("./schema/Collection"));
-
-var _Pair = _interopRequireDefault(require("./schema/Pair"));
-
-var _Scalar = _interopRequireDefault(require("./schema/Scalar"));
-
-var visit = function visit(node, tags) {
- if (node && (0, _typeof2.default)(node) === 'object') {
- var tag = node.tag;
-
- if (node instanceof _Collection.default) {
- if (tag) tags[tag] = true;
- node.items.forEach(function (n) {
- return visit(n, tags);
- });
- } else if (node instanceof _Pair.default) {
- visit(node.key, tags);
- visit(node.value, tags);
- } else if (node instanceof _Scalar.default) {
- if (tag) tags[tag] = true;
- }
- }
-
- return tags;
-};
-
-var _default = function _default(node) {
- return Object.keys(visit(node, {}));
-};
-
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/schema/Alias.js b/assets/node_modules/yaml/browser/dist/schema/Alias.js
deleted file mode 100644
index b2d0f0a..0000000
--- a/assets/node_modules/yaml/browser/dist/schema/Alias.js
+++ /dev/null
@@ -1,156 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
-
-var _constants = require("../constants");
-
-var _errors = require("../errors");
-
-var _toJSON2 = _interopRequireDefault(require("../toJSON"));
-
-var _Collection = _interopRequireDefault(require("./Collection"));
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-var _Pair = _interopRequireDefault(require("./Pair"));
-
-var getAliasCount = function getAliasCount(node, anchors) {
- if (node instanceof Alias) {
- var anchor = anchors.find(function (a) {
- return a.node === node.source;
- });
- return anchor.count * anchor.aliasCount;
- } else if (node instanceof _Collection.default) {
- var count = 0;
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = node.items[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var item = _step.value;
- var c = getAliasCount(item, anchors);
- if (c > count) count = c;
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-
- return count;
- } else if (node instanceof _Pair.default) {
- var kc = getAliasCount(node.key, anchors);
- var vc = getAliasCount(node.value, anchors);
- return Math.max(kc, vc);
- }
-
- return 1;
-};
-
-var Alias =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(Alias, _Node);
- (0, _createClass2.default)(Alias, null, [{
- key: "stringify",
- value: function stringify(_ref, _ref2) {
- var range = _ref.range,
- source = _ref.source;
- var anchors = _ref2.anchors,
- doc = _ref2.doc,
- implicitKey = _ref2.implicitKey,
- inStringifyKey = _ref2.inStringifyKey;
- var anchor = Object.keys(anchors).find(function (a) {
- return anchors[a] === source;
- });
- if (!anchor && inStringifyKey) anchor = doc.anchors.getName(source) || doc.anchors.newName();
- if (anchor) return "*".concat(anchor).concat(implicitKey ? ' ' : '');
- var msg = doc.anchors.getName(source) ? 'Alias node must be after source node' : 'Source node not found for alias node';
- throw new Error("".concat(msg, " [").concat(range, "]"));
- }
- }]);
-
- function Alias(source) {
- var _this;
-
- (0, _classCallCheck2.default)(this, Alias);
- _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Alias).call(this));
- _this.source = source;
- _this.type = _constants.Type.ALIAS;
- return _this;
- }
-
- (0, _createClass2.default)(Alias, [{
- key: "toJSON",
- value: function toJSON(arg, ctx) {
- var _this2 = this;
-
- if (!ctx) return (0, _toJSON2.default)(this.source, arg, ctx);
- var anchors = ctx.anchors,
- maxAliasCount = ctx.maxAliasCount;
- var anchor = anchors.find(function (a) {
- return a.node === _this2.source;
- });
-
- if (!anchor || anchor.res === undefined) {
- var msg = 'This should not happen: Alias anchor was not resolved?';
- if (this.cstNode) throw new _errors.YAMLReferenceError(this.cstNode, msg);else throw new ReferenceError(msg);
- }
-
- if (maxAliasCount >= 0) {
- anchor.count += 1;
- if (anchor.aliasCount === 0) anchor.aliasCount = getAliasCount(this.source, anchors);
-
- if (anchor.count * anchor.aliasCount > maxAliasCount) {
- var _msg = 'Excessive alias count indicates a resource exhaustion attack';
- if (this.cstNode) throw new _errors.YAMLReferenceError(this.cstNode, _msg);else throw new ReferenceError(_msg);
- }
- }
-
- return anchor.res;
- } // Only called when stringifying an alias mapping key while constructing
- // Object output.
-
- }, {
- key: "toString",
- value: function toString(ctx) {
- return Alias.stringify(this, ctx);
- }
- }, {
- key: "tag",
- set: function set(t) {
- throw new Error('Alias nodes cannot have tags');
- }
- }]);
- return Alias;
-}(_Node2.default);
-
-exports.default = Alias;
-(0, _defineProperty2.default)(Alias, "default", true); \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/schema/Collection.js b/assets/node_modules/yaml/browser/dist/schema/Collection.js
deleted file mode 100644
index b26cefa..0000000
--- a/assets/node_modules/yaml/browser/dist/schema/Collection.js
+++ /dev/null
@@ -1,278 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.isEmptyPath = void 0;
-
-var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
-
-var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
-
-var _addComment = _interopRequireDefault(require("../addComment"));
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-var _Pair = _interopRequireDefault(require("./Pair"));
-
-var _Scalar = _interopRequireDefault(require("./Scalar"));
-
-// null, undefined, or an empty non-string iterable (e.g. [])
-var isEmptyPath = function isEmptyPath(path) {
- return path == null || (0, _typeof2.default)(path) === 'object' && path[Symbol.iterator]().next().done;
-};
-
-exports.isEmptyPath = isEmptyPath;
-
-var Collection =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(Collection, _Node);
-
- function Collection() {
- var _getPrototypeOf2;
-
- var _this;
-
- (0, _classCallCheck2.default)(this, Collection);
-
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
-
- _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(Collection)).call.apply(_getPrototypeOf2, [this].concat(args)));
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "items", []);
- return _this;
- }
-
- (0, _createClass2.default)(Collection, [{
- key: "addIn",
- value: function addIn(path, value) {
- if (isEmptyPath(path)) this.add(value);else {
- var _path = (0, _toArray2.default)(path),
- key = _path[0],
- rest = _path.slice(1);
-
- var node = this.get(key, true);
- if (node instanceof Collection) node.addIn(rest, value);else throw new Error("Expected YAML collection at ".concat(key, ". Remaining path: ").concat(rest));
- }
- }
- }, {
- key: "deleteIn",
- value: function deleteIn(_ref) {
- var _ref2 = (0, _toArray2.default)(_ref),
- key = _ref2[0],
- rest = _ref2.slice(1);
-
- if (rest.length === 0) return this.delete(key);
- var node = this.get(key, true);
- if (node instanceof Collection) return node.deleteIn(rest);else throw new Error("Expected YAML collection at ".concat(key, ". Remaining path: ").concat(rest));
- }
- }, {
- key: "getIn",
- value: function getIn(_ref3, keepScalar) {
- var _ref4 = (0, _toArray2.default)(_ref3),
- key = _ref4[0],
- rest = _ref4.slice(1);
-
- var node = this.get(key, true);
- if (rest.length === 0) return !keepScalar && node instanceof _Scalar.default ? node.value : node;else return node instanceof Collection ? node.getIn(rest, keepScalar) : undefined;
- }
- }, {
- key: "hasAllNullValues",
- value: function hasAllNullValues() {
- return this.items.every(function (node) {
- if (!(node instanceof _Pair.default)) return false;
- var n = node.value;
- return n == null || n instanceof _Scalar.default && n.value == null && !n.commentBefore && !n.comment && !n.tag;
- });
- }
- }, {
- key: "hasIn",
- value: function hasIn(_ref5) {
- var _ref6 = (0, _toArray2.default)(_ref5),
- key = _ref6[0],
- rest = _ref6.slice(1);
-
- if (rest.length === 0) return this.has(key);
- var node = this.get(key, true);
- return node instanceof Collection ? node.hasIn(rest) : false;
- }
- }, {
- key: "setIn",
- value: function setIn(_ref7, value) {
- var _ref8 = (0, _toArray2.default)(_ref7),
- key = _ref8[0],
- rest = _ref8.slice(1);
-
- if (rest.length === 0) {
- this.set(key, value);
- } else {
- var node = this.get(key, true);
- if (node instanceof Collection) node.setIn(rest, value);else throw new Error("Expected YAML collection at ".concat(key, ". Remaining path: ").concat(rest));
- }
- } // overridden in implementations
-
- }, {
- key: "toJSON",
- value: function toJSON() {
- return null;
- }
- }, {
- key: "toString",
- value: function toString(ctx, _ref9, onComment, onChompKeep) {
- var _this2 = this;
-
- var blockItem = _ref9.blockItem,
- flowChars = _ref9.flowChars,
- isMap = _ref9.isMap,
- itemIndent = _ref9.itemIndent;
- var _ctx = ctx,
- doc = _ctx.doc,
- indent = _ctx.indent;
- var inFlow = this.type && this.type.substr(0, 4) === 'FLOW' || ctx.inFlow;
- if (inFlow) itemIndent += ' ';
- var allNullValues = isMap && this.hasAllNullValues();
- ctx = Object.assign({}, ctx, {
- allNullValues: allNullValues,
- indent: itemIndent,
- inFlow: inFlow,
- type: null
- });
- var chompKeep = false;
- var hasItemWithNewLine = false;
- var nodes = this.items.reduce(function (nodes, item, i) {
- var comment;
-
- if (item) {
- if (!chompKeep && item.spaceBefore) nodes.push({
- type: 'comment',
- str: ''
- });
- if (item.commentBefore) item.commentBefore.match(/^.*$/gm).forEach(function (line) {
- nodes.push({
- type: 'comment',
- str: "#".concat(line)
- });
- });
- if (item.comment) comment = item.comment;
- if (inFlow && (!chompKeep && item.spaceBefore || item.commentBefore || item.comment || item.key && (item.key.commentBefore || item.key.comment) || item.value && (item.value.commentBefore || item.value.comment))) hasItemWithNewLine = true;
- }
-
- chompKeep = false;
- var str = doc.schema.stringify(item, ctx, function () {
- return comment = null;
- }, function () {
- return chompKeep = true;
- });
- if (inFlow && !hasItemWithNewLine && str.includes('\n')) hasItemWithNewLine = true;
- if (inFlow && i < _this2.items.length - 1) str += ',';
- str = (0, _addComment.default)(str, itemIndent, comment);
- if (chompKeep && (comment || inFlow)) chompKeep = false;
- nodes.push({
- type: 'item',
- str: str
- });
- return nodes;
- }, []);
- var str;
-
- if (nodes.length === 0) {
- str = flowChars.start + flowChars.end;
- } else if (inFlow) {
- var start = flowChars.start,
- end = flowChars.end;
- var strings = nodes.map(function (n) {
- return n.str;
- });
-
- if (hasItemWithNewLine || strings.reduce(function (sum, str) {
- return sum + str.length + 2;
- }, 2) > Collection.maxFlowStringSingleLineLength) {
- str = start;
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = strings[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var s = _step.value;
- str += s ? "\n ".concat(indent).concat(s) : '\n';
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-
- str += "\n".concat(indent).concat(end);
- } else {
- str = "".concat(start, " ").concat(strings.join(' '), " ").concat(end);
- }
- } else {
- var _strings = nodes.map(blockItem);
-
- str = _strings.shift();
- var _iteratorNormalCompletion2 = true;
- var _didIteratorError2 = false;
- var _iteratorError2 = undefined;
-
- try {
- for (var _iterator2 = _strings[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
- var _s = _step2.value;
- str += _s ? "\n".concat(indent).concat(_s) : '\n';
- }
- } catch (err) {
- _didIteratorError2 = true;
- _iteratorError2 = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
- _iterator2.return();
- }
- } finally {
- if (_didIteratorError2) {
- throw _iteratorError2;
- }
- }
- }
- }
-
- if (this.comment) {
- str += '\n' + this.comment.replace(/^/gm, "".concat(indent, "#"));
- if (onComment) onComment();
- } else if (chompKeep && onChompKeep) onChompKeep();
-
- return str;
- }
- }]);
- return Collection;
-}(_Node2.default);
-
-exports.default = Collection;
-(0, _defineProperty2.default)(Collection, "maxFlowStringSingleLineLength", 60); \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/schema/Map.js b/assets/node_modules/yaml/browser/dist/schema/Map.js
deleted file mode 100644
index a6e91c2..0000000
--- a/assets/node_modules/yaml/browser/dist/schema/Map.js
+++ /dev/null
@@ -1,188 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.findPair = findPair;
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _Collection2 = _interopRequireDefault(require("./Collection"));
-
-var _Pair = _interopRequireDefault(require("./Pair"));
-
-var _Scalar = _interopRequireDefault(require("./Scalar"));
-
-function findPair(items, key) {
- var k = key instanceof _Scalar.default ? key.value : key;
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = items[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var it = _step.value;
-
- if (it instanceof _Pair.default) {
- if (it.key === key || it.key === k) return it;
- if (it.key && it.key.value === k) return it;
- }
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-
- return undefined;
-}
-
-var YAMLMap =
-/*#__PURE__*/
-function (_Collection) {
- (0, _inherits2.default)(YAMLMap, _Collection);
-
- function YAMLMap() {
- (0, _classCallCheck2.default)(this, YAMLMap);
- return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(YAMLMap).apply(this, arguments));
- }
-
- (0, _createClass2.default)(YAMLMap, [{
- key: "add",
- value: function add(pair) {
- if (!pair) pair = new _Pair.default(pair);else if (!(pair instanceof _Pair.default)) pair = new _Pair.default(pair.key || pair, pair.value);
- var prev = findPair(this.items, pair.key);
- if (prev) throw new Error("Key ".concat(pair.key, " already set"));
- this.items.push(pair);
- }
- }, {
- key: "delete",
- value: function _delete(key) {
- var it = findPair(this.items, key);
- if (!it) return false;
- var del = this.items.splice(this.items.indexOf(it), 1);
- return del.length > 0;
- }
- }, {
- key: "get",
- value: function get(key, keepScalar) {
- var it = findPair(this.items, key);
- var node = it && it.value;
- return !keepScalar && node instanceof _Scalar.default ? node.value : node;
- }
- }, {
- key: "has",
- value: function has(key) {
- return !!findPair(this.items, key);
- }
- }, {
- key: "set",
- value: function set(key, value) {
- var prev = findPair(this.items, key);
- if (prev) prev.value = value;else this.items.push(new _Pair.default(key, value));
- }
- /**
- * @param {*} arg ignored
- * @param {*} ctx Conversion context, originally set in Document#toJSON()
- * @param {Class} Type If set, forces the returned collection type
- * @returns {*} Instance of Type, Map, or Object
- */
-
- }, {
- key: "toJSON",
- value: function toJSON(_, ctx, Type) {
- var map = Type ? new Type() : ctx && ctx.mapAsMap ? new Map() : {};
- if (ctx && ctx.onCreate) ctx.onCreate(map);
- var _iteratorNormalCompletion2 = true;
- var _didIteratorError2 = false;
- var _iteratorError2 = undefined;
-
- try {
- for (var _iterator2 = this.items[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
- var item = _step2.value;
- item.addToJSMap(ctx, map);
- }
- } catch (err) {
- _didIteratorError2 = true;
- _iteratorError2 = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
- _iterator2.return();
- }
- } finally {
- if (_didIteratorError2) {
- throw _iteratorError2;
- }
- }
- }
-
- return map;
- }
- }, {
- key: "toString",
- value: function toString(ctx, onComment, onChompKeep) {
- if (!ctx) return JSON.stringify(this);
- var _iteratorNormalCompletion3 = true;
- var _didIteratorError3 = false;
- var _iteratorError3 = undefined;
-
- try {
- for (var _iterator3 = this.items[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
- var item = _step3.value;
- if (!(item instanceof _Pair.default)) throw new Error("Map items must all be pairs; found ".concat(JSON.stringify(item), " instead"));
- }
- } catch (err) {
- _didIteratorError3 = true;
- _iteratorError3 = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
- _iterator3.return();
- }
- } finally {
- if (_didIteratorError3) {
- throw _iteratorError3;
- }
- }
- }
-
- return (0, _get2.default)((0, _getPrototypeOf2.default)(YAMLMap.prototype), "toString", this).call(this, ctx, {
- blockItem: function blockItem(n) {
- return n.str;
- },
- flowChars: {
- start: '{',
- end: '}'
- },
- isMap: true,
- itemIndent: ctx.indent || ''
- }, onComment, onChompKeep);
- }
- }]);
- return YAMLMap;
-}(_Collection2.default);
-
-exports.default = YAMLMap; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/schema/Merge.js b/assets/node_modules/yaml/browser/dist/schema/Merge.js
deleted file mode 100644
index cea06ee..0000000
--- a/assets/node_modules/yaml/browser/dist/schema/Merge.js
+++ /dev/null
@@ -1,147 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.MERGE_KEY = void 0;
-
-var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _Map = _interopRequireDefault(require("./Map"));
-
-var _Pair2 = _interopRequireDefault(require("./Pair"));
-
-var _Scalar = _interopRequireDefault(require("./Scalar"));
-
-var _Seq = _interopRequireDefault(require("./Seq"));
-
-var MERGE_KEY = '<<';
-exports.MERGE_KEY = MERGE_KEY;
-
-var Merge =
-/*#__PURE__*/
-function (_Pair) {
- (0, _inherits2.default)(Merge, _Pair);
-
- function Merge(pair) {
- var _this;
-
- (0, _classCallCheck2.default)(this, Merge);
-
- if (pair instanceof _Pair2.default) {
- var seq = pair.value;
-
- if (!(seq instanceof _Seq.default)) {
- seq = new _Seq.default();
- seq.items.push(pair.value);
- seq.range = pair.value.range;
- }
-
- _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Merge).call(this, pair.key, seq));
- _this.range = pair.range;
- } else {
- _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Merge).call(this, new _Scalar.default(MERGE_KEY), new _Seq.default()));
- }
-
- _this.type = 'MERGE_PAIR';
- return (0, _possibleConstructorReturn2.default)(_this);
- } // If the value associated with a merge key is a single mapping node, each of
- // its key/value pairs is inserted into the current mapping, unless the key
- // already exists in it. If the value associated with the merge key is a
- // sequence, then this sequence is expected to contain mapping nodes and each
- // of these nodes is merged in turn according to its order in the sequence.
- // Keys in mapping nodes earlier in the sequence override keys specified in
- // later mapping nodes. -- http://yaml.org/type/merge.html
-
-
- (0, _createClass2.default)(Merge, [{
- key: "addToJSMap",
- value: function addToJSMap(ctx, map) {
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = this.value.items[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var source = _step.value.source;
- if (!(source instanceof _Map.default)) throw new Error('Merge sources must be maps');
- var srcMap = source.toJSON(null, ctx, Map);
- var _iteratorNormalCompletion2 = true;
- var _didIteratorError2 = false;
- var _iteratorError2 = undefined;
-
- try {
- for (var _iterator2 = srcMap[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
- var _step2$value = (0, _slicedToArray2.default)(_step2.value, 2),
- key = _step2$value[0],
- value = _step2$value[1];
-
- if (map instanceof Map) {
- if (!map.has(key)) map.set(key, value);
- } else if (map instanceof Set) {
- map.add(key);
- } else {
- if (!Object.prototype.hasOwnProperty.call(map, key)) map[key] = value;
- }
- }
- } catch (err) {
- _didIteratorError2 = true;
- _iteratorError2 = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
- _iterator2.return();
- }
- } finally {
- if (_didIteratorError2) {
- throw _iteratorError2;
- }
- }
- }
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-
- return map;
- }
- }, {
- key: "toString",
- value: function toString(ctx, onComment) {
- var seq = this.value;
- if (seq.items.length > 1) return (0, _get2.default)((0, _getPrototypeOf2.default)(Merge.prototype), "toString", this).call(this, ctx, onComment);
- this.value = seq.items[0];
- var str = (0, _get2.default)((0, _getPrototypeOf2.default)(Merge.prototype), "toString", this).call(this, ctx, onComment);
- this.value = seq;
- return str;
- }
- }]);
- return Merge;
-}(_Pair2.default);
-
-exports.default = Merge; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/schema/Node.js b/assets/node_modules/yaml/browser/dist/schema/Node.js
deleted file mode 100644
index 4900f3e..0000000
--- a/assets/node_modules/yaml/browser/dist/schema/Node.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var Node = function Node() {
- (0, _classCallCheck2.default)(this, Node);
-};
-
-exports.default = Node; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/schema/Pair.js b/assets/node_modules/yaml/browser/dist/schema/Pair.js
deleted file mode 100644
index 33916a1..0000000
--- a/assets/node_modules/yaml/browser/dist/schema/Pair.js
+++ /dev/null
@@ -1,189 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
-
-var _addComment = _interopRequireDefault(require("../addComment"));
-
-var _constants = require("../constants");
-
-var _toJSON = _interopRequireDefault(require("../toJSON"));
-
-var _Collection = _interopRequireDefault(require("./Collection"));
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-var _Scalar = _interopRequireDefault(require("./Scalar"));
-
-// Published as 'yaml/pair'
-var stringifyKey = function stringifyKey(key, jsKey, ctx) {
- if (jsKey === null) return '';
- if ((0, _typeof2.default)(jsKey) !== 'object') return String(jsKey);
- if (key instanceof _Node2.default && ctx && ctx.doc) return key.toString({
- anchors: {},
- doc: ctx.doc,
- indent: '',
- inFlow: true,
- inStringifyKey: true
- });
- return JSON.stringify(jsKey);
-};
-
-var Pair =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(Pair, _Node);
-
- function Pair(key) {
- var _this;
-
- var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
- (0, _classCallCheck2.default)(this, Pair);
- _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Pair).call(this));
- _this.key = key;
- _this.value = value;
- _this.type = 'PAIR';
- return _this;
- }
-
- (0, _createClass2.default)(Pair, [{
- key: "addToJSMap",
- value: function addToJSMap(ctx, map) {
- var key = (0, _toJSON.default)(this.key, '', ctx);
-
- if (map instanceof Map) {
- var value = (0, _toJSON.default)(this.value, key, ctx);
- map.set(key, value);
- } else if (map instanceof Set) {
- map.add(key);
- } else {
- var stringKey = stringifyKey(this.key, key, ctx);
- map[stringKey] = (0, _toJSON.default)(this.value, stringKey, ctx);
- }
-
- return map;
- }
- }, {
- key: "toJSON",
- value: function toJSON(_, ctx) {
- var pair = ctx && ctx.mapAsMap ? new Map() : {};
- return this.addToJSMap(ctx, pair);
- }
- }, {
- key: "toString",
- value: function toString(ctx, onComment, onChompKeep) {
- if (!ctx || !ctx.doc) return JSON.stringify(this);
- var simpleKeys = ctx.doc.options.simpleKeys;
- var key = this.key,
- value = this.value;
- var keyComment = key instanceof _Node2.default && key.comment;
-
- if (simpleKeys) {
- if (keyComment) {
- throw new Error('With simple keys, key nodes cannot have comments');
- }
-
- if (key instanceof _Collection.default) {
- var msg = 'With simple keys, collection cannot be used as a key value';
- throw new Error(msg);
- }
- }
-
- var explicitKey = !simpleKeys && (!key || keyComment || key instanceof _Collection.default || key.type === _constants.Type.BLOCK_FOLDED || key.type === _constants.Type.BLOCK_LITERAL);
- var _ctx = ctx,
- doc = _ctx.doc,
- indent = _ctx.indent;
- ctx = Object.assign({}, ctx, {
- implicitKey: !explicitKey,
- indent: indent + ' '
- });
- var chompKeep = false;
- var str = doc.schema.stringify(key, ctx, function () {
- return keyComment = null;
- }, function () {
- return chompKeep = true;
- });
- str = (0, _addComment.default)(str, ctx.indent, keyComment);
-
- if (ctx.allNullValues && !simpleKeys) {
- if (this.comment) {
- str = (0, _addComment.default)(str, ctx.indent, this.comment);
- if (onComment) onComment();
- } else if (chompKeep && !keyComment && onChompKeep) onChompKeep();
-
- return ctx.inFlow ? str : "? ".concat(str);
- }
-
- str = explicitKey ? "? ".concat(str, "\n").concat(indent, ":") : "".concat(str, ":");
-
- if (this.comment) {
- // expected (but not strictly required) to be a single-line comment
- str = (0, _addComment.default)(str, ctx.indent, this.comment);
- if (onComment) onComment();
- }
-
- var vcb = '';
- var valueComment = null;
-
- if (value instanceof _Node2.default) {
- if (value.spaceBefore) vcb = '\n';
-
- if (value.commentBefore) {
- var cs = value.commentBefore.replace(/^/gm, "".concat(ctx.indent, "#"));
- vcb += "\n".concat(cs);
- }
-
- valueComment = value.comment;
- } else if (value && (0, _typeof2.default)(value) === 'object') {
- value = doc.schema.createNode(value, true);
- }
-
- ctx.implicitKey = false;
- chompKeep = false;
- var valueStr = doc.schema.stringify(value, ctx, function () {
- return valueComment = null;
- }, function () {
- return chompKeep = true;
- });
- var ws = ' ';
-
- if (vcb || this.comment) {
- ws = "".concat(vcb, "\n").concat(ctx.indent);
- } else if (!explicitKey && value instanceof _Collection.default) {
- var flow = valueStr[0] === '[' || valueStr[0] === '{';
- if (!flow || valueStr.includes('\n')) ws = "\n".concat(ctx.indent);
- }
-
- if (chompKeep && !valueComment && onChompKeep) onChompKeep();
- return (0, _addComment.default)(str + ws + valueStr, ctx.indent, valueComment);
- }
- }, {
- key: "commentBefore",
- get: function get() {
- return this.key && this.key.commentBefore;
- },
- set: function set(cb) {
- if (this.key == null) this.key = new _Scalar.default(null);
- this.key.commentBefore = cb;
- }
- }]);
- return Pair;
-}(_Node2.default);
-
-exports.default = Pair; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/schema/Scalar.js b/assets/node_modules/yaml/browser/dist/schema/Scalar.js
deleted file mode 100644
index 5c3468e..0000000
--- a/assets/node_modules/yaml/browser/dist/schema/Scalar.js
+++ /dev/null
@@ -1,53 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _toJSON2 = _interopRequireDefault(require("../toJSON"));
-
-var _Node2 = _interopRequireDefault(require("./Node"));
-
-// Published as 'yaml/scalar'
-var Scalar =
-/*#__PURE__*/
-function (_Node) {
- (0, _inherits2.default)(Scalar, _Node);
-
- function Scalar(value) {
- var _this;
-
- (0, _classCallCheck2.default)(this, Scalar);
- _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Scalar).call(this));
- _this.value = value;
- return _this;
- }
-
- (0, _createClass2.default)(Scalar, [{
- key: "toJSON",
- value: function toJSON(arg, ctx) {
- return ctx && ctx.keep ? this.value : (0, _toJSON2.default)(this.value, arg, ctx);
- }
- }, {
- key: "toString",
- value: function toString() {
- return String(this.value);
- }
- }]);
- return Scalar;
-}(_Node2.default);
-
-exports.default = Scalar; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/schema/Seq.js b/assets/node_modules/yaml/browser/dist/schema/Seq.js
deleted file mode 100644
index 6fdffeb..0000000
--- a/assets/node_modules/yaml/browser/dist/schema/Seq.js
+++ /dev/null
@@ -1,131 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _toJSON2 = _interopRequireDefault(require("../toJSON"));
-
-var _Collection2 = _interopRequireDefault(require("./Collection"));
-
-var _Scalar = _interopRequireDefault(require("./Scalar"));
-
-// Published as 'yaml/seq'
-function asItemIndex(key) {
- var idx = key instanceof _Scalar.default ? key.value : key;
- if (idx && typeof idx === 'string') idx = Number(idx);
- return Number.isInteger(idx) && idx >= 0 ? idx : null;
-}
-
-var YAMLSeq =
-/*#__PURE__*/
-function (_Collection) {
- (0, _inherits2.default)(YAMLSeq, _Collection);
-
- function YAMLSeq() {
- (0, _classCallCheck2.default)(this, YAMLSeq);
- return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(YAMLSeq).apply(this, arguments));
- }
-
- (0, _createClass2.default)(YAMLSeq, [{
- key: "add",
- value: function add(value) {
- this.items.push(value);
- }
- }, {
- key: "delete",
- value: function _delete(key) {
- var idx = asItemIndex(key);
- if (typeof idx !== 'number') return false;
- var del = this.items.splice(idx, 1);
- return del.length > 0;
- }
- }, {
- key: "get",
- value: function get(key, keepScalar) {
- var idx = asItemIndex(key);
- if (typeof idx !== 'number') return undefined;
- var it = this.items[idx];
- return !keepScalar && it instanceof _Scalar.default ? it.value : it;
- }
- }, {
- key: "has",
- value: function has(key) {
- var idx = asItemIndex(key);
- return typeof idx === 'number' && idx < this.items.length;
- }
- }, {
- key: "set",
- value: function set(key, value) {
- var idx = asItemIndex(key);
- if (typeof idx !== 'number') throw new Error("Expected a valid index, not ".concat(key, "."));
- this.items[idx] = value;
- }
- }, {
- key: "toJSON",
- value: function toJSON(_, ctx) {
- var seq = [];
- if (ctx && ctx.onCreate) ctx.onCreate(seq);
- var i = 0;
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = this.items[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var item = _step.value;
- seq.push((0, _toJSON2.default)(item, String(i++), ctx));
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-
- return seq;
- }
- }, {
- key: "toString",
- value: function toString(ctx, onComment, onChompKeep) {
- if (!ctx) return JSON.stringify(this);
- return (0, _get2.default)((0, _getPrototypeOf2.default)(YAMLSeq.prototype), "toString", this).call(this, ctx, {
- blockItem: function blockItem(n) {
- return n.type === 'comment' ? n.str : "- ".concat(n.str);
- },
- flowChars: {
- start: '[',
- end: ']'
- },
- isMap: false,
- itemIndent: (ctx.indent || '') + ' '
- }, onComment, onChompKeep);
- }
- }]);
- return YAMLSeq;
-}(_Collection2.default);
-
-exports.default = YAMLSeq; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/schema/index.js b/assets/node_modules/yaml/browser/dist/schema/index.js
deleted file mode 100644
index dc75e29..0000000
--- a/assets/node_modules/yaml/browser/dist/schema/index.js
+++ /dev/null
@@ -1,397 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
-
-var _warnings = require("../warnings");
-
-var _constants = require("../constants");
-
-var _errors = require("../errors");
-
-var _stringify = require("../stringify");
-
-var _tags = require("../tags");
-
-var _string = require("../tags/failsafe/string");
-
-var _Alias = _interopRequireDefault(require("./Alias"));
-
-var _Collection = _interopRequireDefault(require("./Collection"));
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Pair = _interopRequireDefault(require("./Pair"));
-
-var _Scalar = _interopRequireDefault(require("./Scalar"));
-
-var isMap = function isMap(_ref) {
- var type = _ref.type;
- return type === _constants.Type.FLOW_MAP || type === _constants.Type.MAP;
-};
-
-var isSeq = function isSeq(_ref2) {
- var type = _ref2.type;
- return type === _constants.Type.FLOW_SEQ || type === _constants.Type.SEQ;
-};
-
-var Schema =
-/*#__PURE__*/
-function () {
- function Schema(_ref3) {
- var customTags = _ref3.customTags,
- merge = _ref3.merge,
- schema = _ref3.schema,
- deprecatedCustomTags = _ref3.tags;
- (0, _classCallCheck2.default)(this, Schema);
- this.merge = !!merge;
- this.name = schema;
- this.tags = _tags.schemas[schema.replace(/\W/g, '')]; // 'yaml-1.1' -> 'yaml11'
-
- if (!this.tags) {
- var keys = Object.keys(_tags.schemas).map(function (key) {
- return JSON.stringify(key);
- }).join(', ');
- throw new Error("Unknown schema \"".concat(schema, "\"; use one of ").concat(keys));
- }
-
- if (!customTags && deprecatedCustomTags) {
- customTags = deprecatedCustomTags;
- (0, _warnings.warnOptionDeprecation)('tags', 'customTags');
- }
-
- if (Array.isArray(customTags)) {
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = customTags[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var tag = _step.value;
- this.tags = this.tags.concat(tag);
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
- } else if (typeof customTags === 'function') {
- this.tags = customTags(this.tags.slice());
- }
-
- for (var i = 0; i < this.tags.length; ++i) {
- var _tag = this.tags[i];
-
- if (typeof _tag === 'string') {
- var tagObj = _tags.tags[_tag];
-
- if (!tagObj) {
- var _keys = Object.keys(_tags.tags).map(function (key) {
- return JSON.stringify(key);
- }).join(', ');
-
- throw new Error("Unknown custom tag \"".concat(_tag, "\"; use one of ").concat(_keys));
- }
-
- this.tags[i] = tagObj;
- }
- }
- }
-
- (0, _createClass2.default)(Schema, [{
- key: "createNode",
- value: function createNode(value, wrapScalars, tag, ctx) {
- if (value instanceof _Node.default) return value;
- var tagObj;
-
- if (tag) {
- if (tag.startsWith('!!')) tag = Schema.defaultPrefix + tag.slice(2);
- var match = this.tags.filter(function (t) {
- return t.tag === tag;
- });
- tagObj = match.find(function (t) {
- return !t.format;
- }) || match[0];
- if (!tagObj) throw new Error("Tag ".concat(tag, " not found"));
- } else {
- // TODO: deprecate/remove class check
- tagObj = this.tags.find(function (t) {
- return (t.identify && t.identify(value) || t.class && value instanceof t.class) && !t.format;
- });
-
- if (!tagObj) {
- if (typeof value.toJSON === 'function') value = value.toJSON();
- if ((0, _typeof2.default)(value) !== 'object') return wrapScalars ? new _Scalar.default(value) : value;
- tagObj = value instanceof Map ? _tags.tags.map : value[Symbol.iterator] ? _tags.tags.seq : _tags.tags.map;
- }
- }
-
- if (!ctx) ctx = {
- wrapScalars: wrapScalars
- };else ctx.wrapScalars = wrapScalars;
-
- if (ctx.onTagObj) {
- ctx.onTagObj(tagObj);
- delete ctx.onTagObj;
- }
-
- var obj = {};
-
- if (value && (0, _typeof2.default)(value) === 'object' && ctx.prevObjects) {
- var prev = ctx.prevObjects.find(function (o) {
- return o.value === value;
- });
-
- if (prev) {
- var alias = new _Alias.default(prev); // leaves source dirty; must be cleaned by caller
-
- ctx.aliasNodes.push(alias);
- return alias;
- }
-
- obj.value = value;
- ctx.prevObjects.push(obj);
- }
-
- obj.node = tagObj.createNode ? tagObj.createNode(this, value, ctx) : wrapScalars ? new _Scalar.default(value) : value;
- return obj.node;
- }
- }, {
- key: "createPair",
- value: function createPair(key, value, ctx) {
- var k = this.createNode(key, ctx.wrapScalars, null, ctx);
- var v = this.createNode(value, ctx.wrapScalars, null, ctx);
- return new _Pair.default(k, v);
- } // falls back to string on no match
-
- }, {
- key: "resolveScalar",
- value: function resolveScalar(str, tags) {
- if (!tags) tags = this.tags;
-
- for (var i = 0; i < tags.length; ++i) {
- var _tags$i = tags[i],
- format = _tags$i.format,
- test = _tags$i.test,
- resolve = _tags$i.resolve;
-
- if (test) {
- var match = str.match(test);
-
- if (match) {
- var res = resolve.apply(null, match);
- if (!(res instanceof _Scalar.default)) res = new _Scalar.default(res);
- if (format) res.format = format;
- return res;
- }
- }
- }
-
- if (this.tags.scalarFallback) str = this.tags.scalarFallback(str);
- return new _Scalar.default(str);
- } // sets node.resolved on success
-
- }, {
- key: "resolveNode",
- value: function resolveNode(doc, node, tagName) {
- var tags = this.tags.filter(function (_ref4) {
- var tag = _ref4.tag;
- return tag === tagName;
- });
- var generic = tags.find(function (_ref5) {
- var test = _ref5.test;
- return !test;
- });
- if (node.error) doc.errors.push(node.error);
-
- try {
- if (generic) {
- var res = generic.resolve(doc, node);
- if (!(res instanceof _Collection.default)) res = new _Scalar.default(res);
- node.resolved = res;
- } else {
- var str = (0, _string.resolveString)(doc, node);
-
- if (typeof str === 'string' && tags.length > 0) {
- node.resolved = this.resolveScalar(str, tags);
- }
- }
- } catch (error) {
- if (!error.source) error.source = node;
- doc.errors.push(error);
- node.resolved = null;
- }
-
- if (!node.resolved) return null;
- if (tagName && node.tag) node.resolved.tag = tagName;
- return node.resolved;
- }
- }, {
- key: "resolveNodeWithFallback",
- value: function resolveNodeWithFallback(doc, node, tagName) {
- var res = this.resolveNode(doc, node, tagName);
- if (Object.prototype.hasOwnProperty.call(node, 'resolved')) return res;
- var fallback = isMap(node) ? Schema.defaultTags.MAP : isSeq(node) ? Schema.defaultTags.SEQ : Schema.defaultTags.STR;
-
- if (fallback) {
- doc.warnings.push(new _errors.YAMLWarning(node, "The tag ".concat(tagName, " is unavailable, falling back to ").concat(fallback)));
-
- var _res = this.resolveNode(doc, node, fallback);
-
- _res.tag = tagName;
- return _res;
- } else {
- doc.errors.push(new _errors.YAMLReferenceError(node, "The tag ".concat(tagName, " is unavailable")));
- }
-
- return null;
- }
- }, {
- key: "getTagObject",
- value: function getTagObject(item) {
- if (item instanceof _Alias.default) return _Alias.default;
-
- if (item.tag) {
- var match = this.tags.filter(function (t) {
- return t.tag === item.tag;
- });
- if (match.length > 0) return match.find(function (t) {
- return t.format === item.format;
- }) || match[0];
- }
-
- var tagObj, obj;
-
- if (item instanceof _Scalar.default) {
- obj = item.value; // TODO: deprecate/remove class check
-
- var _match = this.tags.filter(function (t) {
- return t.identify && t.identify(obj) || t.class && obj instanceof t.class;
- });
-
- tagObj = _match.find(function (t) {
- return t.format === item.format;
- }) || _match.find(function (t) {
- return !t.format;
- });
- } else {
- obj = item;
- tagObj = this.tags.find(function (t) {
- return t.nodeClass && obj instanceof t.nodeClass;
- });
- }
-
- if (!tagObj) {
- var name = obj && obj.constructor ? obj.constructor.name : (0, _typeof2.default)(obj);
- throw new Error("Tag not resolved for ".concat(name, " value"));
- }
-
- return tagObj;
- } // needs to be called before stringifier to allow for circular anchor refs
-
- }, {
- key: "stringifyProps",
- value: function stringifyProps(node, tagObj, _ref6) {
- var anchors = _ref6.anchors,
- doc = _ref6.doc;
- var props = [];
- var anchor = doc.anchors.getName(node);
-
- if (anchor) {
- anchors[anchor] = node;
- props.push("&".concat(anchor));
- }
-
- if (node.tag) {
- props.push(doc.stringifyTag(node.tag));
- } else if (!tagObj.default) {
- props.push(doc.stringifyTag(tagObj.tag));
- }
-
- return props.join(' ');
- }
- }, {
- key: "stringify",
- value: function stringify(item, ctx, onComment, onChompKeep) {
- var tagObj;
-
- if (!(item instanceof _Node.default)) {
- var createCtx = {
- aliasNodes: [],
- onTagObj: function onTagObj(o) {
- return tagObj = o;
- },
- prevObjects: []
- };
- item = this.createNode(item, true, null, createCtx);
- var anchors = ctx.doc.anchors;
- var _iteratorNormalCompletion2 = true;
- var _didIteratorError2 = false;
- var _iteratorError2 = undefined;
-
- try {
- for (var _iterator2 = createCtx.aliasNodes[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
- var alias = _step2.value;
- alias.source = alias.source.node;
- var name = anchors.getName(alias.source);
-
- if (!name) {
- name = anchors.newName();
- anchors.map[name] = alias.source;
- }
- }
- } catch (err) {
- _didIteratorError2 = true;
- _iteratorError2 = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
- _iterator2.return();
- }
- } finally {
- if (_didIteratorError2) {
- throw _iteratorError2;
- }
- }
- }
- }
-
- ctx.tags = this;
- if (item instanceof _Pair.default) return item.toString(ctx, onComment, onChompKeep);
- if (!tagObj) tagObj = this.getTagObject(item);
- var props = this.stringifyProps(item, tagObj, ctx);
- var str = typeof tagObj.stringify === 'function' ? tagObj.stringify(item, ctx, onComment, onChompKeep) : item instanceof _Collection.default ? item.toString(ctx, onComment, onChompKeep) : (0, _stringify.stringifyString)(item, ctx, onComment, onChompKeep);
- return props ? item instanceof _Collection.default && str[0] !== '{' && str[0] !== '[' ? "".concat(props, "\n").concat(ctx.indent).concat(str) : "".concat(props, " ").concat(str) : str;
- }
- }]);
- return Schema;
-}();
-
-exports.default = Schema;
-(0, _defineProperty2.default)(Schema, "defaultPrefix", 'tag:yaml.org,2002:');
-(0, _defineProperty2.default)(Schema, "defaultTags", {
- MAP: 'tag:yaml.org,2002:map',
- SEQ: 'tag:yaml.org,2002:seq',
- STR: 'tag:yaml.org,2002:str'
-}); \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/schema/parseMap.js b/assets/node_modules/yaml/browser/dist/schema/parseMap.js
deleted file mode 100644
index b6752c1..0000000
--- a/assets/node_modules/yaml/browser/dist/schema/parseMap.js
+++ /dev/null
@@ -1,332 +0,0 @@
-"use strict";
-
-var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = parseMap;
-
-var _constants = require("../constants");
-
-var _PlainValue = _interopRequireDefault(require("../cst/PlainValue"));
-
-var _errors = require("../errors");
-
-var _Map = _interopRequireDefault(require("./Map"));
-
-var _Merge = _interopRequireWildcard(require("./Merge"));
-
-var _Pair = _interopRequireDefault(require("./Pair"));
-
-var _parseUtils = require("./parseUtils");
-
-var _Alias = _interopRequireDefault(require("./Alias"));
-
-var _Collection = _interopRequireDefault(require("./Collection"));
-
-function parseMap(doc, cst) {
- if (cst.type !== _constants.Type.MAP && cst.type !== _constants.Type.FLOW_MAP) {
- var msg = "A ".concat(cst.type, " node cannot be resolved as a mapping");
- doc.errors.push(new _errors.YAMLSyntaxError(cst, msg));
- return null;
- }
-
- var _ref = cst.type === _constants.Type.FLOW_MAP ? resolveFlowMapItems(doc, cst) : resolveBlockMapItems(doc, cst),
- comments = _ref.comments,
- items = _ref.items;
-
- var map = new _Map.default();
- map.items = items;
- (0, _parseUtils.resolveComments)(map, comments);
- var hasCollectionKey = false;
-
- for (var i = 0; i < items.length; ++i) {
- var iKey = items[i].key;
- if (iKey instanceof _Collection.default) hasCollectionKey = true;
-
- if (doc.schema.merge && iKey && iKey.value === _Merge.MERGE_KEY) {
- items[i] = new _Merge.default(items[i]);
- var sources = items[i].value.items;
- var error = null;
- sources.some(function (node) {
- if (node instanceof _Alias.default) {
- // During parsing, alias sources are CST nodes; to account for
- // circular references their resolved values can't be used here.
- var type = node.source.type;
- if (type === _constants.Type.MAP || type === _constants.Type.FLOW_MAP) return false;
- return error = 'Merge nodes aliases can only point to maps';
- }
-
- return error = 'Merge nodes can only have Alias nodes as values';
- });
- if (error) doc.errors.push(new _errors.YAMLSemanticError(cst, error));
- } else {
- for (var j = i + 1; j < items.length; ++j) {
- var jKey = items[j].key;
-
- if (iKey === jKey || iKey && jKey && Object.prototype.hasOwnProperty.call(iKey, 'value') && iKey.value === jKey.value) {
- var _msg = "Map keys must be unique; \"".concat(iKey, "\" is repeated");
-
- doc.errors.push(new _errors.YAMLSemanticError(cst, _msg));
- break;
- }
- }
- }
- }
-
- if (hasCollectionKey && !doc.options.mapAsMap) {
- var warn = 'Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this.';
- doc.warnings.push(new _errors.YAMLWarning(cst, warn));
- }
-
- cst.resolved = map;
- return map;
-}
-
-var valueHasPairComment = function valueHasPairComment(_ref2) {
- var _ref2$context = _ref2.context,
- lineStart = _ref2$context.lineStart,
- node = _ref2$context.node,
- src = _ref2$context.src,
- props = _ref2.props;
- if (props.length === 0) return false;
- var start = props[0].start;
- if (node && start > node.valueRange.start) return false;
- if (src[start] !== _constants.Char.COMMENT) return false;
-
- for (var i = lineStart; i < start; ++i) {
- if (src[i] === '\n') return false;
- }
-
- return true;
-};
-
-function resolvePairComment(item, pair) {
- if (!valueHasPairComment(item)) return;
- var comment = item.getPropValue(0, _constants.Char.COMMENT, true);
- var found = false;
- var cb = pair.value.commentBefore;
-
- if (cb && cb.startsWith(comment)) {
- pair.value.commentBefore = cb.substr(comment.length + 1);
- found = true;
- } else {
- var cc = pair.value.comment;
-
- if (!item.node && cc && cc.startsWith(comment)) {
- pair.value.comment = cc.substr(comment.length + 1);
- found = true;
- }
- }
-
- if (found) pair.comment = comment;
-}
-
-function resolveBlockMapItems(doc, cst) {
- var comments = [];
- var items = [];
- var key = undefined;
- var keyStart = null;
-
- for (var i = 0; i < cst.items.length; ++i) {
- var item = cst.items[i];
-
- switch (item.type) {
- case _constants.Type.BLANK_LINE:
- comments.push({
- afterKey: !!key,
- before: items.length
- });
- break;
-
- case _constants.Type.COMMENT:
- comments.push({
- afterKey: !!key,
- before: items.length,
- comment: item.comment
- });
- break;
-
- case _constants.Type.MAP_KEY:
- if (key !== undefined) items.push(new _Pair.default(key));
- if (item.error) doc.errors.push(item.error);
- key = doc.resolveNode(item.node);
- keyStart = null;
- break;
-
- case _constants.Type.MAP_VALUE:
- {
- if (key === undefined) key = null;
- if (item.error) doc.errors.push(item.error);
-
- if (!item.context.atLineStart && item.node && item.node.type === _constants.Type.MAP && !item.node.context.atLineStart) {
- var msg = 'Nested mappings are not allowed in compact mappings';
- doc.errors.push(new _errors.YAMLSemanticError(item.node, msg));
- }
-
- var valueNode = item.node;
-
- if (!valueNode && item.props.length > 0) {
- // Comments on an empty mapping value need to be preserved, so we
- // need to construct a minimal empty node here to use instead of the
- // missing `item.node`. -- eemeli/yaml#19
- valueNode = new _PlainValue.default(_constants.Type.PLAIN, []);
- valueNode.context = {
- parent: item,
- src: item.context.src
- };
- var pos = item.range.start + 1;
- valueNode.range = {
- start: pos,
- end: pos
- };
- valueNode.valueRange = {
- start: pos,
- end: pos
- };
-
- if (typeof item.range.origStart === 'number') {
- var origPos = item.range.origStart + 1;
- valueNode.range.origStart = valueNode.range.origEnd = origPos;
- valueNode.valueRange.origStart = valueNode.valueRange.origEnd = origPos;
- }
- }
-
- var pair = new _Pair.default(key, doc.resolveNode(valueNode));
- resolvePairComment(item, pair);
- items.push(pair);
- (0, _parseUtils.checkKeyLength)(doc.errors, cst, i, key, keyStart);
- key = undefined;
- keyStart = null;
- }
- break;
-
- default:
- if (key !== undefined) items.push(new _Pair.default(key));
- key = doc.resolveNode(item);
- keyStart = item.range.start;
- if (item.error) doc.errors.push(item.error);
-
- next: for (var j = i + 1;; ++j) {
- var nextItem = cst.items[j];
-
- switch (nextItem && nextItem.type) {
- case _constants.Type.BLANK_LINE:
- case _constants.Type.COMMENT:
- continue next;
-
- case _constants.Type.MAP_VALUE:
- break next;
-
- default:
- doc.errors.push(new _errors.YAMLSemanticError(item, 'Implicit map keys need to be followed by map values'));
- break next;
- }
- }
-
- if (item.valueRangeContainsNewline) {
- var _msg2 = 'Implicit map keys need to be on a single line';
- doc.errors.push(new _errors.YAMLSemanticError(item, _msg2));
- }
-
- }
- }
-
- if (key !== undefined) items.push(new _Pair.default(key));
- return {
- comments: comments,
- items: items
- };
-}
-
-function resolveFlowMapItems(doc, cst) {
- var comments = [];
- var items = [];
- var key = undefined;
- var keyStart = null;
- var explicitKey = false;
- var next = '{';
-
- for (var i = 0; i < cst.items.length; ++i) {
- (0, _parseUtils.checkKeyLength)(doc.errors, cst, i, key, keyStart);
- var item = cst.items[i];
-
- if (typeof item.char === 'string') {
- var char = item.char,
- offset = item.offset;
-
- if (char === '?' && key === undefined && !explicitKey) {
- explicitKey = true;
- next = ':';
- continue;
- }
-
- if (char === ':') {
- if (key === undefined) key = null;
-
- if (next === ':') {
- next = ',';
- continue;
- }
- } else {
- if (explicitKey) {
- if (key === undefined && char !== ',') key = null;
- explicitKey = false;
- }
-
- if (key !== undefined) {
- items.push(new _Pair.default(key));
- key = undefined;
- keyStart = null;
-
- if (char === ',') {
- next = ':';
- continue;
- }
- }
- }
-
- if (char === '}') {
- if (i === cst.items.length - 1) continue;
- } else if (char === next) {
- next = ':';
- continue;
- }
-
- var msg = "Flow map contains an unexpected ".concat(char);
- var err = new _errors.YAMLSyntaxError(cst, msg);
- err.offset = offset;
- doc.errors.push(err);
- } else if (item.type === _constants.Type.BLANK_LINE) {
- comments.push({
- afterKey: !!key,
- before: items.length
- });
- } else if (item.type === _constants.Type.COMMENT) {
- comments.push({
- afterKey: !!key,
- before: items.length,
- comment: item.comment
- });
- } else if (key === undefined) {
- if (next === ',') doc.errors.push(new _errors.YAMLSemanticError(item, 'Separator , missing in flow map'));
- key = doc.resolveNode(item);
- keyStart = explicitKey ? null : item.range.start; // TODO: add error for non-explicit multiline plain key
- } else {
- if (next !== ',') doc.errors.push(new _errors.YAMLSemanticError(item, 'Indicator : missing in flow map entry'));
- items.push(new _Pair.default(key, doc.resolveNode(item)));
- key = undefined;
- explicitKey = false;
- }
- }
-
- (0, _parseUtils.checkFlowCollectionEnd)(doc.errors, cst);
- if (key !== undefined) items.push(new _Pair.default(key));
- return {
- comments: comments,
- items: items
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/schema/parseSeq.js b/assets/node_modules/yaml/browser/dist/schema/parseSeq.js
deleted file mode 100644
index 968de74..0000000
--- a/assets/node_modules/yaml/browser/dist/schema/parseSeq.js
+++ /dev/null
@@ -1,183 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = parseSeq;
-
-var _constants = require("../constants");
-
-var _errors = require("../errors");
-
-var _Pair = _interopRequireDefault(require("./Pair"));
-
-var _parseUtils = require("./parseUtils");
-
-var _Seq = _interopRequireDefault(require("./Seq"));
-
-var _Collection = _interopRequireDefault(require("./Collection"));
-
-function parseSeq(doc, cst) {
- if (cst.type !== _constants.Type.SEQ && cst.type !== _constants.Type.FLOW_SEQ) {
- var msg = "A ".concat(cst.type, " node cannot be resolved as a sequence");
- doc.errors.push(new _errors.YAMLSyntaxError(cst, msg));
- return null;
- }
-
- var _ref = cst.type === _constants.Type.FLOW_SEQ ? resolveFlowSeqItems(doc, cst) : resolveBlockSeqItems(doc, cst),
- comments = _ref.comments,
- items = _ref.items;
-
- var seq = new _Seq.default();
- seq.items = items;
- (0, _parseUtils.resolveComments)(seq, comments);
-
- if (!doc.options.mapAsMap && items.some(function (it) {
- return it instanceof _Pair.default && it.key instanceof _Collection.default;
- })) {
- var warn = 'Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this.';
- doc.warnings.push(new _errors.YAMLWarning(cst, warn));
- }
-
- cst.resolved = seq;
- return seq;
-}
-
-function resolveBlockSeqItems(doc, cst) {
- var comments = [];
- var items = [];
-
- for (var i = 0; i < cst.items.length; ++i) {
- var item = cst.items[i];
-
- switch (item.type) {
- case _constants.Type.BLANK_LINE:
- comments.push({
- before: items.length
- });
- break;
-
- case _constants.Type.COMMENT:
- comments.push({
- comment: item.comment,
- before: items.length
- });
- break;
-
- case _constants.Type.SEQ_ITEM:
- if (item.error) doc.errors.push(item.error);
- items.push(doc.resolveNode(item.node));
-
- if (item.hasProps) {
- var msg = 'Sequence items cannot have tags or anchors before the - indicator';
- doc.errors.push(new _errors.YAMLSemanticError(item, msg));
- }
-
- break;
-
- default:
- if (item.error) doc.errors.push(item.error);
- doc.errors.push(new _errors.YAMLSyntaxError(item, "Unexpected ".concat(item.type, " node in sequence")));
- }
- }
-
- return {
- comments: comments,
- items: items
- };
-}
-
-function resolveFlowSeqItems(doc, cst) {
- var comments = [];
- var items = [];
- var explicitKey = false;
- var key = undefined;
- var keyStart = null;
- var next = '[';
-
- for (var i = 0; i < cst.items.length; ++i) {
- var item = cst.items[i];
-
- if (typeof item.char === 'string') {
- var char = item.char,
- offset = item.offset;
-
- if (char !== ':' && (explicitKey || key !== undefined)) {
- if (explicitKey && key === undefined) key = next ? items.pop() : null;
- items.push(new _Pair.default(key));
- explicitKey = false;
- key = undefined;
- keyStart = null;
- }
-
- if (char === next) {
- next = null;
- } else if (!next && char === '?') {
- explicitKey = true;
- } else if (next !== '[' && char === ':' && key === undefined) {
- if (next === ',') {
- key = items.pop();
-
- if (key instanceof _Pair.default) {
- var msg = 'Chaining flow sequence pairs is invalid';
- var err = new _errors.YAMLSemanticError(cst, msg);
- err.offset = offset;
- doc.errors.push(err);
- }
-
- if (!explicitKey) (0, _parseUtils.checkKeyLength)(doc.errors, cst, i, key, keyStart);
- } else {
- key = null;
- }
-
- keyStart = null;
- explicitKey = false; // TODO: add error for non-explicit multiline plain key
-
- next = null;
- } else if (next === '[' || char !== ']' || i < cst.items.length - 1) {
- var _msg = "Flow sequence contains an unexpected ".concat(char);
-
- var _err = new _errors.YAMLSyntaxError(cst, _msg);
-
- _err.offset = offset;
- doc.errors.push(_err);
- }
- } else if (item.type === _constants.Type.BLANK_LINE) {
- comments.push({
- before: items.length
- });
- } else if (item.type === _constants.Type.COMMENT) {
- comments.push({
- comment: item.comment,
- before: items.length
- });
- } else {
- if (next) {
- var _msg2 = "Expected a ".concat(next, " in flow sequence");
-
- doc.errors.push(new _errors.YAMLSemanticError(item, _msg2));
- }
-
- var value = doc.resolveNode(item);
-
- if (key === undefined) {
- items.push(value);
- } else {
- items.push(new _Pair.default(key, value));
- key = undefined;
- }
-
- keyStart = item.range.start;
- next = ',';
- }
- }
-
- (0, _parseUtils.checkFlowCollectionEnd)(doc.errors, cst);
- if (key !== undefined) items.push(new _Pair.default(key));
- return {
- comments: comments,
- items: items
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/schema/parseUtils.js b/assets/node_modules/yaml/browser/dist/schema/parseUtils.js
deleted file mode 100644
index 7550452..0000000
--- a/assets/node_modules/yaml/browser/dist/schema/parseUtils.js
+++ /dev/null
@@ -1,123 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.checkFlowCollectionEnd = checkFlowCollectionEnd;
-exports.checkKeyLength = checkKeyLength;
-exports.resolveComments = resolveComments;
-
-var _errors = require("../errors");
-
-var _constants = require("../constants");
-
-function checkFlowCollectionEnd(errors, cst) {
- var char, name;
-
- switch (cst.type) {
- case _constants.Type.FLOW_MAP:
- char = '}';
- name = 'flow map';
- break;
-
- case _constants.Type.FLOW_SEQ:
- char = ']';
- name = 'flow sequence';
- break;
-
- default:
- errors.push(new _errors.YAMLSemanticError(cst, 'Not a flow collection!?'));
- return;
- }
-
- var lastItem;
-
- for (var i = cst.items.length - 1; i >= 0; --i) {
- var item = cst.items[i];
-
- if (!item || item.type !== _constants.Type.COMMENT) {
- lastItem = item;
- break;
- }
- }
-
- if (lastItem && lastItem.char !== char) {
- var msg = "Expected ".concat(name, " to end with ").concat(char);
- var err;
-
- if (typeof lastItem.offset === 'number') {
- err = new _errors.YAMLSemanticError(cst, msg);
- err.offset = lastItem.offset + 1;
- } else {
- err = new _errors.YAMLSemanticError(lastItem, msg);
- if (lastItem.range && lastItem.range.end) err.offset = lastItem.range.end - lastItem.range.start;
- }
-
- errors.push(err);
- }
-}
-
-function checkKeyLength(errors, node, itemIdx, key, keyStart) {
- if (!key || typeof keyStart !== 'number') return;
- var item = node.items[itemIdx];
- var keyEnd = item && item.range && item.range.start;
-
- if (!keyEnd) {
- for (var i = itemIdx - 1; i >= 0; --i) {
- var it = node.items[i];
-
- if (it && it.range) {
- keyEnd = it.range.end + 2 * (itemIdx - i);
- break;
- }
- }
- }
-
- if (keyEnd > keyStart + 1024) {
- var k = String(key).substr(0, 8) + '...' + String(key).substr(-8);
- errors.push(new _errors.YAMLSemanticError(node, "The \"".concat(k, "\" key is too long")));
- }
-}
-
-function resolveComments(collection, comments) {
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = comments[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var _step$value = _step.value,
- afterKey = _step$value.afterKey,
- before = _step$value.before,
- comment = _step$value.comment;
- var item = collection.items[before];
-
- if (!item) {
- if (comment !== undefined) {
- if (collection.comment) collection.comment += '\n' + comment;else collection.comment = comment;
- }
- } else {
- if (afterKey && item.value) item = item.value;
-
- if (comment === undefined) {
- if (afterKey || !item.commentBefore) item.spaceBefore = true;
- } else {
- if (item.commentBefore) item.commentBefore += '\n' + comment;else item.commentBefore = comment;
- }
- }
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/stringify.js b/assets/node_modules/yaml/browser/dist/stringify.js
deleted file mode 100644
index d733caf..0000000
--- a/assets/node_modules/yaml/browser/dist/stringify.js
+++ /dev/null
@@ -1,337 +0,0 @@
-"use strict";
-
-var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.stringifyNumber = stringifyNumber;
-exports.stringifyString = stringifyString;
-
-var _addComment = require("./addComment");
-
-var _constants = require("./constants");
-
-var _foldFlowLines = _interopRequireWildcard(require("./foldFlowLines"));
-
-var _options = require("./tags/options");
-
-function stringifyNumber(_ref) {
- var format = _ref.format,
- minFractionDigits = _ref.minFractionDigits,
- tag = _ref.tag,
- value = _ref.value;
- if (!isFinite(value)) return isNaN(value) ? '.nan' : value < 0 ? '-.inf' : '.inf';
- var n = JSON.stringify(value);
-
- if (!format && minFractionDigits && (!tag || tag === 'tag:yaml.org,2002:float') && /^\d/.test(n)) {
- var i = n.indexOf('.');
-
- if (i < 0) {
- i = n.length;
- n += '.';
- }
-
- var d = minFractionDigits - (n.length - i - 1);
-
- while (d-- > 0) {
- n += '0';
- }
- }
-
- return n;
-}
-
-function lineLengthOverLimit(str, limit) {
- var strLen = str.length;
- if (strLen <= limit) return false;
-
- for (var i = 0, start = 0; i < strLen; ++i) {
- if (str[i] === '\n') {
- if (i - start > limit) return true;
- start = i + 1;
- if (strLen - start <= limit) return false;
- }
- }
-
- return true;
-}
-
-function doubleQuotedString(value, _ref2) {
- var implicitKey = _ref2.implicitKey,
- indent = _ref2.indent;
- var _strOptions$doubleQuo = _options.strOptions.doubleQuoted,
- jsonEncoding = _strOptions$doubleQuo.jsonEncoding,
- minMultiLineLength = _strOptions$doubleQuo.minMultiLineLength;
- var json = JSON.stringify(value);
- if (jsonEncoding) return json;
- var str = '';
- var start = 0;
-
- for (var i = 0, ch = json[i]; ch; ch = json[++i]) {
- if (ch === ' ' && json[i + 1] === '\\' && json[i + 2] === 'n') {
- // space before newline needs to be escaped to not be folded
- str += json.slice(start, i) + '\\ ';
- i += 1;
- start = i;
- ch = '\\';
- }
-
- if (ch === '\\') switch (json[i + 1]) {
- case 'u':
- {
- str += json.slice(start, i);
- var code = json.substr(i + 2, 4);
-
- switch (code) {
- case '0000':
- str += '\\0';
- break;
-
- case '0007':
- str += '\\a';
- break;
-
- case '000b':
- str += '\\v';
- break;
-
- case '001b':
- str += '\\e';
- break;
-
- case '0085':
- str += '\\N';
- break;
-
- case '00a0':
- str += '\\_';
- break;
-
- case '2028':
- str += '\\L';
- break;
-
- case '2029':
- str += '\\P';
- break;
-
- default:
- if (code.substr(0, 2) === '00') str += '\\x' + code.substr(2);else str += json.substr(i, 6);
- }
-
- i += 5;
- start = i + 1;
- }
- break;
-
- case 'n':
- if (implicitKey || json[i + 2] === '"' || json.length < minMultiLineLength) {
- i += 1;
- } else {
- // folding will eat first newline
- str += json.slice(start, i) + '\n\n';
-
- while (json[i + 2] === '\\' && json[i + 3] === 'n' && json[i + 4] !== '"') {
- str += '\n';
- i += 2;
- }
-
- str += indent; // space after newline needs to be escaped to not be folded
-
- if (json[i + 2] === ' ') str += '\\';
- i += 1;
- start = i + 1;
- }
-
- break;
-
- default:
- i += 1;
- }
- }
-
- str = start ? str + json.slice(start) : json;
- return implicitKey ? str : (0, _foldFlowLines.default)(str, indent, _foldFlowLines.FOLD_QUOTED, _options.strOptions.fold);
-}
-
-function singleQuotedString(value, ctx) {
- var indent = ctx.indent,
- implicitKey = ctx.implicitKey;
-
- if (implicitKey) {
- if (/\n/.test(value)) return doubleQuotedString(value, ctx);
- } else {
- // single quoted string can't have leading or trailing whitespace around newline
- if (/[ \t]\n|\n[ \t]/.test(value)) return doubleQuotedString(value, ctx);
- }
-
- var res = "'" + value.replace(/'/g, "''").replace(/\n+/g, "$&\n".concat(indent)) + "'";
- return implicitKey ? res : (0, _foldFlowLines.default)(res, indent, _foldFlowLines.FOLD_FLOW, _options.strOptions.fold);
-}
-
-function blockString(_ref3, ctx, onComment, onChompKeep) {
- var comment = _ref3.comment,
- type = _ref3.type,
- value = _ref3.value;
-
- // 1. Block can't end in whitespace unless the last line is non-empty.
- // 2. Strings consisting of only whitespace are best rendered explicitly.
- if (/\n[\t ]+$/.test(value) || /^\s*$/.test(value)) {
- return doubleQuotedString(value, ctx);
- }
-
- var indent = ctx.indent || (ctx.forceBlockIndent ? ' ' : '');
- var indentSize = indent ? '2' : '1'; // root is at -1
-
- var literal = type === _constants.Type.BLOCK_FOLDED ? false : type === _constants.Type.BLOCK_LITERAL ? true : !lineLengthOverLimit(value, _options.strOptions.fold.lineWidth - indent.length);
- var header = literal ? '|' : '>';
- if (!value) return header + '\n';
- var wsStart = '';
- var wsEnd = '';
- value = value.replace(/[\n\t ]*$/, function (ws) {
- var n = ws.indexOf('\n');
-
- if (n === -1) {
- header += '-'; // strip
- } else if (value === ws || n !== ws.length - 1) {
- header += '+'; // keep
-
- if (onChompKeep) onChompKeep();
- }
-
- wsEnd = ws.replace(/\n$/, '');
- return '';
- }).replace(/^[\n ]*/, function (ws) {
- if (ws.indexOf(' ') !== -1) header += indentSize;
- var m = ws.match(/ +$/);
-
- if (m) {
- wsStart = ws.slice(0, -m[0].length);
- return m[0];
- } else {
- wsStart = ws;
- return '';
- }
- });
- if (wsEnd) wsEnd = wsEnd.replace(/\n+(?!\n|$)/g, "$&".concat(indent));
- if (wsStart) wsStart = wsStart.replace(/\n+/g, "$&".concat(indent));
-
- if (comment) {
- header += ' #' + comment.replace(/ ?[\r\n]+/g, ' ');
- if (onComment) onComment();
- }
-
- if (!value) return "".concat(header).concat(indentSize, "\n").concat(indent).concat(wsEnd);
-
- if (literal) {
- value = value.replace(/\n+/g, "$&".concat(indent));
- return "".concat(header, "\n").concat(indent).concat(wsStart).concat(value).concat(wsEnd);
- }
-
- value = value.replace(/\n+/g, '\n$&').replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g, '$1$2') // more-indented lines aren't folded
- // ^ ind.line ^ empty ^ capture next empty lines only at end of indent
- .replace(/\n+/g, "$&".concat(indent));
- var body = (0, _foldFlowLines.default)("".concat(wsStart).concat(value).concat(wsEnd), indent, _foldFlowLines.FOLD_BLOCK, _options.strOptions.fold);
- return "".concat(header, "\n").concat(indent).concat(body);
-}
-
-function plainString(item, ctx, onComment, onChompKeep) {
- var comment = item.comment,
- type = item.type,
- value = item.value;
- var actualString = ctx.actualString,
- implicitKey = ctx.implicitKey,
- indent = ctx.indent,
- inFlow = ctx.inFlow,
- tags = ctx.tags;
-
- if (implicitKey && /[\n[\]{},]/.test(value) || inFlow && /[[\]{},]/.test(value)) {
- return doubleQuotedString(value, ctx);
- }
-
- if (!value || /^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(value)) {
- // not allowed:
- // - empty string, '-' or '?'
- // - start with an indicator character (except [?:-]) or /[?-] /
- // - '\n ', ': ' or ' \n' anywhere
- // - '#' not preceded by a non-space char
- // - end with ' ' or ':'
- return implicitKey || inFlow || value.indexOf('\n') === -1 ? value.indexOf('"') !== -1 && value.indexOf("'") === -1 ? singleQuotedString(value, ctx) : doubleQuotedString(value, ctx) : blockString(item, ctx, onComment, onChompKeep);
- }
-
- if (!implicitKey && !inFlow && type !== _constants.Type.PLAIN && value.indexOf('\n') !== -1) {
- // Where allowed & type not set explicitly, prefer block style for multiline strings
- return blockString(item, ctx, onComment, onChompKeep);
- }
-
- var str = value.replace(/\n+/g, "$&\n".concat(indent)); // Verify that output will be parsed as a string, as e.g. plain numbers and
- // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),
- // and others in v1.1.
-
- if (actualString && typeof tags.resolveScalar(str).value !== 'string') {
- return doubleQuotedString(value, ctx);
- }
-
- var body = implicitKey ? str : (0, _foldFlowLines.default)(str, indent, _foldFlowLines.FOLD_FLOW, _options.strOptions.fold);
-
- if (comment && !inFlow && (body.indexOf('\n') !== -1 || comment.indexOf('\n') !== -1)) {
- if (onComment) onComment();
- return (0, _addComment.addCommentBefore)(body, indent, comment);
- }
-
- return body;
-}
-
-function stringifyString(item, ctx, onComment, onChompKeep) {
- var defaultType = _options.strOptions.defaultType;
- var implicitKey = ctx.implicitKey,
- inFlow = ctx.inFlow;
- var _item = item,
- type = _item.type,
- value = _item.value;
-
- if (typeof value !== 'string') {
- value = String(value);
- item = Object.assign({}, item, {
- value: value
- });
- }
-
- var _stringify = function _stringify(_type) {
- switch (_type) {
- case _constants.Type.BLOCK_FOLDED:
- case _constants.Type.BLOCK_LITERAL:
- return blockString(item, ctx, onComment, onChompKeep);
-
- case _constants.Type.QUOTE_DOUBLE:
- return doubleQuotedString(value, ctx);
-
- case _constants.Type.QUOTE_SINGLE:
- return singleQuotedString(value, ctx);
-
- case _constants.Type.PLAIN:
- return plainString(item, ctx, onComment, onChompKeep);
-
- default:
- return null;
- }
- };
-
- if (type !== _constants.Type.QUOTE_DOUBLE && /[\x00-\x08\x0b-\x1f\x7f-\x9f]/.test(value)) {
- // force double quotes on control characters
- type = _constants.Type.QUOTE_DOUBLE;
- } else if ((implicitKey || inFlow) && (type === _constants.Type.BLOCK_FOLDED || type === _constants.Type.BLOCK_LITERAL)) {
- // should not happen; blocks are not valid inside flow containers
- type = _constants.Type.QUOTE_DOUBLE;
- }
-
- var res = _stringify(type);
-
- if (res === null) {
- res = _stringify(defaultType);
- if (res === null) throw new Error("Unsupported default string type ".concat(defaultType));
- }
-
- return res;
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/tags/core.js b/assets/node_modules/yaml/browser/dist/tags/core.js
deleted file mode 100644
index f249df1..0000000
--- a/assets/node_modules/yaml/browser/dist/tags/core.js
+++ /dev/null
@@ -1,132 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _Scalar = _interopRequireDefault(require("../schema/Scalar"));
-
-var _stringify = require("../stringify");
-
-var _failsafe = _interopRequireDefault(require("./failsafe"));
-
-var _options = require("./options");
-
-var _default = _failsafe.default.concat([{
- identify: function identify(value) {
- return value == null;
- },
- createNode: function createNode(schema, value, ctx) {
- return ctx.wrapScalars ? new _Scalar.default(null) : null;
- },
- default: true,
- tag: 'tag:yaml.org,2002:null',
- test: /^(?:~|[Nn]ull|NULL)?$/,
- resolve: function resolve() {
- return null;
- },
- options: _options.nullOptions,
- stringify: function stringify() {
- return _options.nullOptions.nullStr;
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'boolean';
- },
- default: true,
- tag: 'tag:yaml.org,2002:bool',
- test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,
- resolve: function resolve(str) {
- return str[0] === 't' || str[0] === 'T';
- },
- options: _options.boolOptions,
- stringify: function stringify(_ref) {
- var value = _ref.value;
- return value ? _options.boolOptions.trueStr : _options.boolOptions.falseStr;
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:int',
- format: 'OCT',
- test: /^0o([0-7]+)$/,
- resolve: function resolve(str, oct) {
- return parseInt(oct, 8);
- },
- stringify: function stringify(_ref2) {
- var value = _ref2.value;
- return '0o' + value.toString(8);
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:int',
- test: /^[-+]?[0-9]+$/,
- resolve: function resolve(str) {
- return parseInt(str, 10);
- },
- stringify: _stringify.stringifyNumber
-}, {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:int',
- format: 'HEX',
- test: /^0x([0-9a-fA-F]+)$/,
- resolve: function resolve(str, hex) {
- return parseInt(hex, 16);
- },
- stringify: function stringify(_ref3) {
- var value = _ref3.value;
- return '0x' + value.toString(16);
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:float',
- test: /^(?:[-+]?\.inf|(\.nan))$/i,
- resolve: function resolve(str, nan) {
- return nan ? NaN : str[0] === '-' ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY;
- },
- stringify: _stringify.stringifyNumber
-}, {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:float',
- format: 'EXP',
- test: /^[-+]?(?:0|[1-9][0-9]*)(\.[0-9]*)?[eE][-+]?[0-9]+$/,
- resolve: function resolve(str) {
- return parseFloat(str);
- },
- stringify: function stringify(_ref4) {
- var value = _ref4.value;
- return Number(value).toExponential();
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:float',
- test: /^[-+]?(?:0|[1-9][0-9]*)\.([0-9]*)$/,
- resolve: function resolve(str, frac) {
- var node = new _Scalar.default(parseFloat(str));
- if (frac && frac[frac.length - 1] === '0') node.minFractionDigits = frac.length;
- return node;
- },
- stringify: _stringify.stringifyNumber
-}]);
-
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/tags/failsafe/index.js b/assets/node_modules/yaml/browser/dist/tags/failsafe/index.js
deleted file mode 100644
index b544279..0000000
--- a/assets/node_modules/yaml/browser/dist/tags/failsafe/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _map = _interopRequireDefault(require("./map"));
-
-var _seq = _interopRequireDefault(require("./seq"));
-
-var _string = _interopRequireDefault(require("./string"));
-
-var _default = [_map.default, _seq.default, _string.default];
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/tags/failsafe/map.js b/assets/node_modules/yaml/browser/dist/tags/failsafe/map.js
deleted file mode 100644
index 4df3397..0000000
--- a/assets/node_modules/yaml/browser/dist/tags/failsafe/map.js
+++ /dev/null
@@ -1,65 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
-
-var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
-
-var _Map = _interopRequireDefault(require("../../schema/Map"));
-
-var _parseMap = _interopRequireDefault(require("../../schema/parseMap"));
-
-function createMap(schema, obj, ctx) {
- var map = new _Map.default();
-
- if (obj instanceof Map) {
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = obj[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var _step$value = (0, _slicedToArray2.default)(_step.value, 2),
- key = _step$value[0],
- value = _step$value[1];
-
- map.items.push(schema.createPair(key, value, ctx));
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
- } else if (obj && (0, _typeof2.default)(obj) === 'object') {
- for (var _i = 0, _Object$keys = Object.keys(obj); _i < _Object$keys.length; _i++) {
- var _key = _Object$keys[_i];
- map.items.push(schema.createPair(_key, obj[_key], ctx));
- }
- }
-
- return map;
-}
-
-var _default = {
- createNode: createMap,
- default: true,
- nodeClass: _Map.default,
- tag: 'tag:yaml.org,2002:map',
- resolve: _parseMap.default
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/tags/failsafe/seq.js b/assets/node_modules/yaml/browser/dist/tags/failsafe/seq.js
deleted file mode 100644
index 872cd6f..0000000
--- a/assets/node_modules/yaml/browser/dist/tags/failsafe/seq.js
+++ /dev/null
@@ -1,54 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _parseSeq = _interopRequireDefault(require("../../schema/parseSeq"));
-
-var _Seq = _interopRequireDefault(require("../../schema/Seq"));
-
-function createSeq(schema, obj, ctx) {
- var seq = new _Seq.default();
-
- if (obj && obj[Symbol.iterator]) {
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = obj[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var it = _step.value;
- var v = schema.createNode(it, ctx.wrapScalars, null, ctx);
- seq.items.push(v);
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
- }
-
- return seq;
-}
-
-var _default = {
- createNode: createSeq,
- default: true,
- nodeClass: _Seq.default,
- tag: 'tag:yaml.org,2002:seq',
- resolve: _parseSeq.default
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/tags/failsafe/string.js b/assets/node_modules/yaml/browser/dist/tags/failsafe/string.js
deleted file mode 100644
index 882181c..0000000
--- a/assets/node_modules/yaml/browser/dist/tags/failsafe/string.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.resolveString = void 0;
-
-var _stringify = require("../../stringify");
-
-var _options = require("../options");
-
-var resolveString = function resolveString(doc, node) {
- // on error, will return { str: string, errors: Error[] }
- var res = node.strValue;
- if (!res) return '';
- if (typeof res === 'string') return res;
- res.errors.forEach(function (error) {
- if (!error.source) error.source = node;
- doc.errors.push(error);
- });
- return res.str;
-};
-
-exports.resolveString = resolveString;
-var _default = {
- identify: function identify(value) {
- return typeof value === 'string';
- },
- default: true,
- tag: 'tag:yaml.org,2002:str',
- resolve: resolveString,
- stringify: function stringify(item, ctx, onComment, onChompKeep) {
- ctx = Object.assign({
- actualString: true
- }, ctx);
- return (0, _stringify.stringifyString)(item, ctx, onComment, onChompKeep);
- },
- options: _options.strOptions
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/tags/index.js b/assets/node_modules/yaml/browser/dist/tags/index.js
deleted file mode 100644
index 80f9732..0000000
--- a/assets/node_modules/yaml/browser/dist/tags/index.js
+++ /dev/null
@@ -1,50 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.tags = exports.schemas = void 0;
-
-var _core = _interopRequireDefault(require("./core"));
-
-var _failsafe = _interopRequireDefault(require("./failsafe"));
-
-var _json = _interopRequireDefault(require("./json"));
-
-var _yaml = _interopRequireDefault(require("./yaml-1.1"));
-
-var _map = _interopRequireDefault(require("./failsafe/map"));
-
-var _seq = _interopRequireDefault(require("./failsafe/seq"));
-
-var _binary = _interopRequireDefault(require("./yaml-1.1/binary"));
-
-var _omap = _interopRequireDefault(require("./yaml-1.1/omap"));
-
-var _pairs = _interopRequireDefault(require("./yaml-1.1/pairs"));
-
-var _set = _interopRequireDefault(require("./yaml-1.1/set"));
-
-var _timestamp = require("./yaml-1.1/timestamp");
-
-var schemas = {
- core: _core.default,
- failsafe: _failsafe.default,
- json: _json.default,
- yaml11: _yaml.default
-};
-exports.schemas = schemas;
-var tags = {
- binary: _binary.default,
- floatTime: _timestamp.floatTime,
- intTime: _timestamp.intTime,
- map: _map.default,
- omap: _omap.default,
- pairs: _pairs.default,
- seq: _seq.default,
- set: _set.default,
- timestamp: _timestamp.timestamp
-};
-exports.tags = tags; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/tags/json.js b/assets/node_modules/yaml/browser/dist/tags/json.js
deleted file mode 100644
index 75b7347..0000000
--- a/assets/node_modules/yaml/browser/dist/tags/json.js
+++ /dev/null
@@ -1,103 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _map = _interopRequireDefault(require("./failsafe/map"));
-
-var _seq = _interopRequireDefault(require("./failsafe/seq"));
-
-var _Scalar = _interopRequireDefault(require("../schema/Scalar"));
-
-var _string = require("./failsafe/string");
-
-var schema = [_map.default, _seq.default, {
- identify: function identify(value) {
- return typeof value === 'string';
- },
- default: true,
- tag: 'tag:yaml.org,2002:str',
- resolve: _string.resolveString,
- stringify: function stringify(value) {
- return JSON.stringify(value);
- }
-}, {
- identify: function identify(value) {
- return value == null;
- },
- createNode: function createNode(schema, value, ctx) {
- return ctx.wrapScalars ? new _Scalar.default(null) : null;
- },
- default: true,
- tag: 'tag:yaml.org,2002:null',
- test: /^null$/,
- resolve: function resolve() {
- return null;
- },
- stringify: function stringify(value) {
- return JSON.stringify(value);
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'boolean';
- },
- default: true,
- tag: 'tag:yaml.org,2002:bool',
- test: /^true$/,
- resolve: function resolve() {
- return true;
- },
- stringify: function stringify(value) {
- return JSON.stringify(value);
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'boolean';
- },
- default: true,
- tag: 'tag:yaml.org,2002:bool',
- test: /^false$/,
- resolve: function resolve() {
- return false;
- },
- stringify: function stringify(value) {
- return JSON.stringify(value);
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:int',
- test: /^-?(?:0|[1-9][0-9]*)$/,
- resolve: function resolve(str) {
- return parseInt(str, 10);
- },
- stringify: function stringify(value) {
- return JSON.stringify(value);
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:float',
- test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,
- resolve: function resolve(str) {
- return parseFloat(str);
- },
- stringify: function stringify(value) {
- return JSON.stringify(value);
- }
-}];
-
-schema.scalarFallback = function (str) {
- throw new SyntaxError("Unresolved plain scalar ".concat(JSON.stringify(str)));
-};
-
-var _default = schema;
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/tags/options.js b/assets/node_modules/yaml/browser/dist/tags/options.js
deleted file mode 100644
index 4803aec..0000000
--- a/assets/node_modules/yaml/browser/dist/tags/options.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.strOptions = exports.nullOptions = exports.boolOptions = exports.binaryOptions = void 0;
-
-var _constants = require("../constants");
-
-var binaryOptions = {
- defaultType: _constants.Type.BLOCK_LITERAL,
- lineWidth: 76
-};
-exports.binaryOptions = binaryOptions;
-var boolOptions = {
- trueStr: 'true',
- falseStr: 'false'
-};
-exports.boolOptions = boolOptions;
-var nullOptions = {
- nullStr: 'null'
-};
-exports.nullOptions = nullOptions;
-var strOptions = {
- defaultType: _constants.Type.PLAIN,
- doubleQuoted: {
- jsonEncoding: false,
- minMultiLineLength: 40
- },
- fold: {
- lineWidth: 80,
- minContentWidth: 20
- }
-};
-exports.strOptions = strOptions; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/binary.js b/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/binary.js
deleted file mode 100644
index 6feb005..0000000
--- a/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/binary.js
+++ /dev/null
@@ -1,98 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _constants = require("../../constants");
-
-var _errors = require("../../errors");
-
-var _stringify = require("../../stringify");
-
-var _string = require("../failsafe/string");
-
-var _options = require("../options");
-
-/* global atob, btoa, Buffer */
-var _default = {
- identify: function identify(value) {
- return value instanceof Uint8Array;
- },
- // Buffer inherits from Uint8Array
- default: false,
- tag: 'tag:yaml.org,2002:binary',
-
- /**
- * Returns a Buffer in node and an Uint8Array in browsers
- *
- * To use the resulting buffer as an image, you'll want to do something like:
- *
- * const blob = new Blob([buffer], { type: 'image/jpeg' })
- * document.querySelector('#photo').src = URL.createObjectURL(blob)
- */
- resolve: function resolve(doc, node) {
- if (typeof Buffer === 'function') {
- var src = (0, _string.resolveString)(doc, node);
- return Buffer.from(src, 'base64');
- } else if (typeof atob === 'function') {
- var _src = atob((0, _string.resolveString)(doc, node));
-
- var buffer = new Uint8Array(_src.length);
-
- for (var i = 0; i < _src.length; ++i) {
- buffer[i] = _src.charCodeAt(i);
- }
-
- return buffer;
- } else {
- doc.errors.push(new _errors.YAMLReferenceError(node, 'This environment does not support reading binary tags; either Buffer or atob is required'));
- return null;
- }
- },
- options: _options.binaryOptions,
- stringify: function stringify(_ref, ctx, onComment, onChompKeep) {
- var comment = _ref.comment,
- type = _ref.type,
- value = _ref.value;
- var src;
-
- if (typeof Buffer === 'function') {
- src = value instanceof Buffer ? value.toString('base64') : Buffer.from(value.buffer).toString('base64');
- } else if (typeof btoa === 'function') {
- var s = '';
-
- for (var i = 0; i < value.length; ++i) {
- s += String.fromCharCode(value[i]);
- }
-
- src = btoa(s);
- } else {
- throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');
- }
-
- if (!type) type = _options.binaryOptions.defaultType;
-
- if (type === _constants.Type.QUOTE_DOUBLE) {
- value = src;
- } else {
- var lineWidth = _options.binaryOptions.lineWidth;
- var n = Math.ceil(src.length / lineWidth);
- var lines = new Array(n);
-
- for (var _i = 0, o = 0; _i < n; ++_i, o += lineWidth) {
- lines[_i] = src.substr(o, lineWidth);
- }
-
- value = lines.join(type === _constants.Type.BLOCK_LITERAL ? '\n' : ' ');
- }
-
- return (0, _stringify.stringifyString)({
- comment: comment,
- type: type,
- value: value
- }, ctx, onComment, onChompKeep);
- }
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/index.js b/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/index.js
deleted file mode 100644
index 27c4c3d..0000000
--- a/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/index.js
+++ /dev/null
@@ -1,177 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _Scalar = _interopRequireDefault(require("../../schema/Scalar"));
-
-var _stringify = require("../../stringify");
-
-var _failsafe = _interopRequireDefault(require("../failsafe"));
-
-var _options = require("../options");
-
-var _binary = _interopRequireDefault(require("./binary"));
-
-var _omap = _interopRequireDefault(require("./omap"));
-
-var _pairs = _interopRequireDefault(require("./pairs"));
-
-var _set = _interopRequireDefault(require("./set"));
-
-var _timestamp = require("./timestamp");
-
-var _default = _failsafe.default.concat([{
- identify: function identify(value) {
- return value == null;
- },
- createNode: function createNode(schema, value, ctx) {
- return ctx.wrapScalars ? new _Scalar.default(null) : null;
- },
- default: true,
- tag: 'tag:yaml.org,2002:null',
- test: /^(?:~|[Nn]ull|NULL)?$/,
- resolve: function resolve() {
- return null;
- },
- options: _options.nullOptions,
- stringify: function stringify() {
- return _options.nullOptions.nullStr;
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'boolean';
- },
- default: true,
- tag: 'tag:yaml.org,2002:bool',
- test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,
- resolve: function resolve() {
- return true;
- },
- options: _options.boolOptions,
- stringify: function stringify(_ref) {
- var value = _ref.value;
- return value ? _options.boolOptions.trueStr : _options.boolOptions.falseStr;
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'boolean';
- },
- default: true,
- tag: 'tag:yaml.org,2002:bool',
- test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/i,
- resolve: function resolve() {
- return false;
- },
- options: _options.boolOptions,
- stringify: function stringify(_ref2) {
- var value = _ref2.value;
- return value ? _options.boolOptions.trueStr : _options.boolOptions.falseStr;
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:int',
- format: 'BIN',
- test: /^0b([0-1_]+)$/,
- resolve: function resolve(str, bin) {
- return parseInt(bin.replace(/_/g, ''), 2);
- },
- stringify: function stringify(_ref3) {
- var value = _ref3.value;
- return '0b' + value.toString(2);
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:int',
- format: 'OCT',
- test: /^[-+]?0([0-7_]+)$/,
- resolve: function resolve(str, oct) {
- return parseInt(oct.replace(/_/g, ''), 8);
- },
- stringify: function stringify(_ref4) {
- var value = _ref4.value;
- return (value < 0 ? '-0' : '0') + value.toString(8);
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:int',
- test: /^[-+]?[0-9][0-9_]*$/,
- resolve: function resolve(str) {
- return parseInt(str.replace(/_/g, ''), 10);
- },
- stringify: _stringify.stringifyNumber
-}, {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:int',
- format: 'HEX',
- test: /^0x([0-9a-fA-F_]+)$/,
- resolve: function resolve(str, hex) {
- return parseInt(hex.replace(/_/g, ''), 16);
- },
- stringify: function stringify(_ref5) {
- var value = _ref5.value;
- return (value < 0 ? '-0x' : '0x') + value.toString(16);
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:float',
- test: /^(?:[-+]?\.inf|(\.nan))$/i,
- resolve: function resolve(str, nan) {
- return nan ? NaN : str[0] === '-' ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY;
- },
- stringify: _stringify.stringifyNumber
-}, {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:float',
- format: 'EXP',
- test: /^[-+]?([0-9][0-9_]*)?(\.[0-9_]*)?[eE][-+]?[0-9]+$/,
- resolve: function resolve(str) {
- return parseFloat(str.replace(/_/g, ''));
- },
- stringify: function stringify(_ref6) {
- var value = _ref6.value;
- return Number(value).toExponential();
- }
-}, {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:float',
- test: /^[-+]?(?:[0-9][0-9_]*)?\.([0-9_]*)$/,
- resolve: function resolve(str, frac) {
- var node = new _Scalar.default(parseFloat(str.replace(/_/g, '')));
-
- if (frac) {
- var f = frac.replace(/_/g, '');
- if (f[f.length - 1] === '0') node.minFractionDigits = f.length;
- }
-
- return node;
- },
- stringify: _stringify.stringifyNumber
-}], _binary.default, _omap.default, _pairs.default, _set.default, _timestamp.intTime, _timestamp.floatTime, _timestamp.timestamp);
-
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/omap.js b/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/omap.js
deleted file mode 100644
index 678a49a..0000000
--- a/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/omap.js
+++ /dev/null
@@ -1,161 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.YAMLOMap = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
-
-var _errors = require("../../errors");
-
-var _toJSON2 = _interopRequireDefault(require("../../toJSON"));
-
-var _Map = _interopRequireDefault(require("../../schema/Map"));
-
-var _Pair = _interopRequireDefault(require("../../schema/Pair"));
-
-var _Scalar = _interopRequireDefault(require("../../schema/Scalar"));
-
-var _Seq = _interopRequireDefault(require("../../schema/Seq"));
-
-var _pairs = require("./pairs");
-
-var YAMLOMap =
-/*#__PURE__*/
-function (_YAMLSeq) {
- (0, _inherits2.default)(YAMLOMap, _YAMLSeq);
-
- function YAMLOMap() {
- var _this;
-
- (0, _classCallCheck2.default)(this, YAMLOMap);
- _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(YAMLOMap).call(this));
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "add", _Map.default.prototype.add.bind((0, _assertThisInitialized2.default)(_this)));
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "delete", _Map.default.prototype.delete.bind((0, _assertThisInitialized2.default)(_this)));
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "get", _Map.default.prototype.get.bind((0, _assertThisInitialized2.default)(_this)));
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "has", _Map.default.prototype.has.bind((0, _assertThisInitialized2.default)(_this)));
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "set", _Map.default.prototype.set.bind((0, _assertThisInitialized2.default)(_this)));
- _this.tag = YAMLOMap.tag;
- return _this;
- }
-
- (0, _createClass2.default)(YAMLOMap, [{
- key: "toJSON",
- value: function toJSON(_, ctx) {
- var map = new Map();
- if (ctx && ctx.onCreate) ctx.onCreate(map);
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = this.items[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var pair = _step.value;
- var key = void 0,
- value = void 0;
-
- if (pair instanceof _Pair.default) {
- key = (0, _toJSON2.default)(pair.key, '', ctx);
- value = (0, _toJSON2.default)(pair.value, key, ctx);
- } else {
- key = (0, _toJSON2.default)(pair, '', ctx);
- }
-
- if (map.has(key)) throw new Error('Ordered maps must not include duplicate keys');
- map.set(key, value);
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-
- return map;
- }
- }]);
- return YAMLOMap;
-}(_Seq.default);
-
-exports.YAMLOMap = YAMLOMap;
-(0, _defineProperty2.default)(YAMLOMap, "tag", 'tag:yaml.org,2002:omap');
-
-function parseOMap(doc, cst) {
- var pairs = (0, _pairs.parsePairs)(doc, cst);
- var seenKeys = [];
- var _iteratorNormalCompletion2 = true;
- var _didIteratorError2 = false;
- var _iteratorError2 = undefined;
-
- try {
- for (var _iterator2 = pairs.items[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
- var key = _step2.value.key;
-
- if (key instanceof _Scalar.default) {
- if (seenKeys.includes(key.value)) {
- var msg = 'Ordered maps must not include duplicate keys';
- throw new _errors.YAMLSemanticError(cst, msg);
- } else {
- seenKeys.push(key.value);
- }
- }
- }
- } catch (err) {
- _didIteratorError2 = true;
- _iteratorError2 = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
- _iterator2.return();
- }
- } finally {
- if (_didIteratorError2) {
- throw _iteratorError2;
- }
- }
- }
-
- return Object.assign(new YAMLOMap(), pairs);
-}
-
-function createOMap(schema, iterable, ctx) {
- var pairs = (0, _pairs.createPairs)(schema, iterable, ctx);
- var omap = new YAMLOMap();
- omap.items = pairs.items;
- return omap;
-}
-
-var _default = {
- identify: function identify(value) {
- return value instanceof Map;
- },
- nodeClass: YAMLOMap,
- default: false,
- tag: 'tag:yaml.org,2002:omap',
- resolve: parseOMap,
- createNode: createOMap
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/pairs.js b/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/pairs.js
deleted file mode 100644
index 5fa7ea8..0000000
--- a/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/pairs.js
+++ /dev/null
@@ -1,100 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.parsePairs = parsePairs;
-exports.createPairs = createPairs;
-exports.default = void 0;
-
-var _errors = require("../../errors");
-
-var _Map = _interopRequireDefault(require("../../schema/Map"));
-
-var _Pair = _interopRequireDefault(require("../../schema/Pair"));
-
-var _parseSeq = _interopRequireDefault(require("../../schema/parseSeq"));
-
-var _Seq = _interopRequireDefault(require("../../schema/Seq"));
-
-function parsePairs(doc, cst) {
- var seq = (0, _parseSeq.default)(doc, cst);
-
- for (var i = 0; i < seq.items.length; ++i) {
- var item = seq.items[i];
- if (item instanceof _Pair.default) continue;else if (item instanceof _Map.default) {
- if (item.items.length > 1) {
- var msg = 'Each pair must have its own sequence indicator';
- throw new _errors.YAMLSemanticError(cst, msg);
- }
-
- var pair = item.items[0] || new _Pair.default();
- if (item.commentBefore) pair.commentBefore = pair.commentBefore ? "".concat(item.commentBefore, "\n").concat(pair.commentBefore) : item.commentBefore;
- if (item.comment) pair.comment = pair.comment ? "".concat(item.comment, "\n").concat(pair.comment) : item.comment;
- item = pair;
- }
- seq.items[i] = item instanceof _Pair.default ? item : new _Pair.default(item);
- }
-
- return seq;
-}
-
-function createPairs(schema, iterable, ctx) {
- var pairs = new _Seq.default();
- pairs.tag = 'tag:yaml.org,2002:pairs';
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = iterable[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var it = _step.value;
- var key = void 0,
- value = void 0;
-
- if (Array.isArray(it)) {
- if (it.length === 2) {
- key = it[0];
- value = it[1];
- } else throw new TypeError("Expected [key, value] tuple: ".concat(it));
- } else if (it && it instanceof Object) {
- var keys = Object.keys(it);
-
- if (keys.length === 1) {
- key = keys[0];
- value = it[key];
- } else throw new TypeError("Expected { key: value } tuple: ".concat(it));
- } else {
- key = it;
- }
-
- var pair = schema.createPair(key, value, ctx);
- pairs.items.push(pair);
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-
- return pairs;
-}
-
-var _default = {
- default: false,
- tag: 'tag:yaml.org,2002:pairs',
- resolve: parsePairs,
- createNode: createPairs
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/set.js b/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/set.js
deleted file mode 100644
index c8bafa6..0000000
--- a/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/set.js
+++ /dev/null
@@ -1,140 +0,0 @@
-"use strict";
-
-var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.YAMLSet = void 0;
-
-var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
-
-var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
-
-var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
-
-var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
-
-var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
-
-var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
-
-var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
-
-var _errors = require("../../errors");
-
-var _Map = _interopRequireWildcard(require("../../schema/Map"));
-
-var _Pair = _interopRequireDefault(require("../../schema/Pair"));
-
-var _parseMap = _interopRequireDefault(require("../../schema/parseMap"));
-
-var _Scalar = _interopRequireDefault(require("../../schema/Scalar"));
-
-var YAMLSet =
-/*#__PURE__*/
-function (_YAMLMap) {
- (0, _inherits2.default)(YAMLSet, _YAMLMap);
-
- function YAMLSet() {
- var _this;
-
- (0, _classCallCheck2.default)(this, YAMLSet);
- _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(YAMLSet).call(this));
- _this.tag = YAMLSet.tag;
- return _this;
- }
-
- (0, _createClass2.default)(YAMLSet, [{
- key: "add",
- value: function add(key) {
- var pair = key instanceof _Pair.default ? key : new _Pair.default(key);
- var prev = (0, _Map.findPair)(this.items, pair.key);
- if (!prev) this.items.push(pair);
- }
- }, {
- key: "get",
- value: function get(key, keepPair) {
- var pair = (0, _Map.findPair)(this.items, key);
- return !keepPair && pair instanceof _Pair.default ? pair.key instanceof _Scalar.default ? pair.key.value : pair.key : pair;
- }
- }, {
- key: "set",
- value: function set(key, value) {
- if (typeof value !== 'boolean') throw new Error("Expected boolean value for set(key, value) in a YAML set, not ".concat((0, _typeof2.default)(value)));
- var prev = (0, _Map.findPair)(this.items, key);
-
- if (prev && !value) {
- this.items.splice(this.items.indexOf(prev), 1);
- } else if (!prev && value) {
- this.items.push(new _Pair.default(key));
- }
- }
- }, {
- key: "toJSON",
- value: function toJSON(_, ctx) {
- return (0, _get2.default)((0, _getPrototypeOf2.default)(YAMLSet.prototype), "toJSON", this).call(this, _, ctx, Set);
- }
- }, {
- key: "toString",
- value: function toString(ctx, onComment, onChompKeep) {
- if (!ctx) return JSON.stringify(this);
- if (this.hasAllNullValues()) return (0, _get2.default)((0, _getPrototypeOf2.default)(YAMLSet.prototype), "toString", this).call(this, ctx, onComment, onChompKeep);else throw new Error('Set items must all have null values');
- }
- }]);
- return YAMLSet;
-}(_Map.default);
-
-exports.YAMLSet = YAMLSet;
-(0, _defineProperty2.default)(YAMLSet, "tag", 'tag:yaml.org,2002:set');
-
-function parseSet(doc, cst) {
- var map = (0, _parseMap.default)(doc, cst);
- if (!map.hasAllNullValues()) throw new _errors.YAMLSemanticError(cst, 'Set items must all have null values');
- return Object.assign(new YAMLSet(), map);
-}
-
-function createSet(schema, iterable, ctx) {
- var set = new YAMLSet();
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = iterable[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var value = _step.value;
- set.items.push(schema.createPair(value, null, ctx));
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-
- return set;
-}
-
-var _default = {
- identify: function identify(value) {
- return value instanceof Set;
- },
- nodeClass: YAMLSet,
- default: false,
- tag: 'tag:yaml.org,2002:set',
- resolve: parseSet,
- createNode: createSet
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/timestamp.js b/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/timestamp.js
deleted file mode 100644
index 4587d0b..0000000
--- a/assets/node_modules/yaml/browser/dist/tags/yaml-1.1/timestamp.js
+++ /dev/null
@@ -1,107 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.timestamp = exports.floatTime = exports.intTime = void 0;
-
-var _stringify = require("../../stringify");
-
-var parseSexagesimal = function parseSexagesimal(sign, parts) {
- var n = parts.split(':').reduce(function (n, p) {
- return n * 60 + Number(p);
- }, 0);
- return sign === '-' ? -n : n;
-}; // hhhh:mm:ss.sss
-
-
-var stringifySexagesimal = function stringifySexagesimal(_ref) {
- var value = _ref.value;
- if (isNaN(value) || !isFinite(value)) return (0, _stringify.stringifyNumber)(value);
- var sign = '';
-
- if (value < 0) {
- sign = '-';
- value = Math.abs(value);
- }
-
- var parts = [value % 60]; // seconds, including ms
-
- if (value < 60) {
- parts.unshift(0); // at least one : is required
- } else {
- value = Math.round((value - parts[0]) / 60);
- parts.unshift(value % 60); // minutes
-
- if (value >= 60) {
- value = Math.round((value - parts[0]) / 60);
- parts.unshift(value); // hours
- }
- }
-
- return sign + parts.map(function (n) {
- return n < 10 ? '0' + String(n) : String(n);
- }).join(':').replace(/000000\d*$/, '') // % 60 may introduce error
- ;
-};
-
-var intTime = {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:int',
- format: 'TIME',
- test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+)$/,
- resolve: function resolve(str, sign, parts) {
- return parseSexagesimal(sign, parts.replace(/_/g, ''));
- },
- stringify: stringifySexagesimal
-};
-exports.intTime = intTime;
-var floatTime = {
- identify: function identify(value) {
- return typeof value === 'number';
- },
- default: true,
- tag: 'tag:yaml.org,2002:float',
- format: 'TIME',
- test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*)$/,
- resolve: function resolve(str, sign, parts) {
- return parseSexagesimal(sign, parts.replace(/_/g, ''));
- },
- stringify: stringifySexagesimal
-};
-exports.floatTime = floatTime;
-var timestamp = {
- identify: function identify(value) {
- return value instanceof Date;
- },
- default: true,
- tag: 'tag:yaml.org,2002:timestamp',
- // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part
- // may be omitted altogether, resulting in a date format. In such a case, the time part is
- // assumed to be 00:00:00Z (start of day, UTC).
- test: RegExp('^(?:' + '([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd
- '(?:(?:t|T|[ \\t]+)' + // t | T | whitespace
- '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?
- '(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30
- ')?' + ')$'),
- resolve: function resolve(str, year, month, day, hour, minute, second, millisec, tz) {
- if (millisec) millisec = (millisec + '00').substr(1, 3);
- var date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec || 0);
-
- if (tz && tz !== 'Z') {
- var d = parseSexagesimal(tz[0], tz.slice(1));
- if (Math.abs(d) < 30) d *= 60;
- date -= 60000 * d;
- }
-
- return new Date(date);
- },
- stringify: function stringify(_ref2) {
- var value = _ref2.value;
- return value.toISOString().replace(/((T00:00)?:00)?\.000Z$/, '');
- }
-};
-exports.timestamp = timestamp; \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/test-events.js b/assets/node_modules/yaml/browser/dist/test-events.js
deleted file mode 100644
index 73c0c1b..0000000
--- a/assets/node_modules/yaml/browser/dist/test-events.js
+++ /dev/null
@@ -1,175 +0,0 @@
-"use strict";
-
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = testEvents;
-
-var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
-
-var _parse = _interopRequireDefault(require("./cst/parse"));
-
-var _Document = _interopRequireDefault(require("./Document"));
-
-// test harness for yaml-test-suite event tests
-function testEvents(src, options) {
- var opt = Object.assign({
- keepCstNodes: true,
- keepNodeTypes: true,
- version: '1.2'
- }, options);
- var docs = (0, _parse.default)(src).map(function (cstDoc) {
- return new _Document.default(opt).parse(cstDoc);
- });
- var errDoc = docs.find(function (doc) {
- return doc.errors.length > 0;
- });
- var error = errDoc ? errDoc.errors[0].message : null;
- var events = ['+STR'];
-
- try {
- for (var i = 0; i < docs.length; ++i) {
- var doc = docs[i];
- var root = doc.contents;
- if (Array.isArray(root)) root = root[0];
-
- var _ref = doc.range || [0, 0],
- _ref2 = (0, _slicedToArray2.default)(_ref, 2),
- rootStart = _ref2[0],
- rootEnd = _ref2[1];
-
- var e = doc.errors[0] && doc.errors[0].source;
- if (e && e.type === 'SEQ_ITEM') e = e.node;
- if (e && (e.type === 'DOCUMENT' || e.range.start < rootStart)) throw new Error();
- var docStart = '+DOC';
- var pre = src.slice(0, rootStart);
- var explicitDoc = /---\s*$/.test(pre);
- if (explicitDoc) docStart += ' ---';else if (!doc.contents) continue;
- events.push(docStart);
- addEvents(events, doc, e, root);
- if (doc.contents && doc.contents.length > 1) throw new Error();
- var docEnd = '-DOC';
-
- if (rootEnd) {
- var post = src.slice(rootEnd);
- if (/^\.\.\./.test(post)) docEnd += ' ...';
- }
-
- events.push(docEnd);
- }
- } catch (e) {
- return {
- events: events,
- error: error || e
- };
- }
-
- events.push('-STR');
- return {
- events: events,
- error: error
- };
-}
-
-function addEvents(events, doc, e, node) {
- if (!node) {
- events.push('=VAL :');
- return;
- }
-
- if (e && node.cstNode === e) throw new Error();
- var props = '';
- var anchor = doc.anchors.getName(node);
-
- if (anchor) {
- if (/\d$/.test(anchor)) {
- var alt = anchor.replace(/\d$/, '');
- if (doc.anchors.getNode(alt)) anchor = alt;
- }
-
- props = " &".concat(anchor);
- }
-
- if (node.cstNode && node.cstNode.tag) {
- var _node$cstNode$tag = node.cstNode.tag,
- handle = _node$cstNode$tag.handle,
- suffix = _node$cstNode$tag.suffix;
- props += handle === '!' && !suffix ? ' <!>' : " <".concat(node.tag, ">");
- }
-
- var scalar = null;
-
- switch (node.type) {
- case 'ALIAS':
- {
- var alias = doc.anchors.getName(node.source);
-
- if (/\d$/.test(alias)) {
- var _alt = alias.replace(/\d$/, '');
-
- if (doc.anchors.getNode(_alt)) alias = _alt;
- }
-
- events.push("=ALI".concat(props, " *").concat(alias));
- }
- break;
-
- case 'BLOCK_FOLDED':
- scalar = '>';
- break;
-
- case 'BLOCK_LITERAL':
- scalar = '|';
- break;
-
- case 'PLAIN':
- scalar = ':';
- break;
-
- case 'QUOTE_DOUBLE':
- scalar = '"';
- break;
-
- case 'QUOTE_SINGLE':
- scalar = "'";
- break;
-
- case 'PAIR':
- events.push("+MAP".concat(props));
- addEvents(events, doc, e, node.key);
- addEvents(events, doc, e, node.value);
- events.push('-MAP');
- break;
-
- case 'FLOW_SEQ':
- case 'SEQ':
- events.push("+SEQ".concat(props));
- node.items.forEach(function (item) {
- addEvents(events, doc, e, item);
- });
- events.push('-SEQ');
- break;
-
- case 'FLOW_MAP':
- case 'MAP':
- events.push("+MAP".concat(props));
- node.items.forEach(function (_ref3) {
- var key = _ref3.key,
- value = _ref3.value;
- addEvents(events, doc, e, key);
- addEvents(events, doc, e, value);
- });
- events.push('-MAP');
- break;
-
- default:
- throw new Error("Unexpected node type ".concat(node.type));
- }
-
- if (scalar) {
- var value = node.cstNode.strValue.replace(/\\/g, '\\\\').replace(/\0/g, '\\0').replace(/\x07/g, '\\a').replace(/\x08/g, '\\b').replace(/\t/g, '\\t').replace(/\n/g, '\\n').replace(/\v/g, '\\v').replace(/\f/g, '\\f').replace(/\r/g, '\\r').replace(/\x1b/g, '\\e');
- events.push("=VAL".concat(props, " ").concat(scalar).concat(value));
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/toJSON.js b/assets/node_modules/yaml/browser/dist/toJSON.js
deleted file mode 100644
index 793562f..0000000
--- a/assets/node_modules/yaml/browser/dist/toJSON.js
+++ /dev/null
@@ -1,27 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = toJSON;
-
-function toJSON(value, arg, ctx) {
- if (Array.isArray(value)) return value.map(function (v, i) {
- return toJSON(v, String(i), ctx);
- });
-
- if (value && typeof value.toJSON === 'function') {
- var anchor = ctx && ctx.anchors && ctx.anchors.find(function (a) {
- return a.node === value;
- });
- if (anchor) ctx.onCreate = function (res) {
- anchor.res = res;
- delete ctx.onCreate;
- };
- var res = value.toJSON(arg, ctx);
- if (anchor && ctx.onCreate) ctx.onCreate(res);
- return res;
- }
-
- return value;
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/dist/warnings.js b/assets/node_modules/yaml/browser/dist/warnings.js
deleted file mode 100644
index fac7f91..0000000
--- a/assets/node_modules/yaml/browser/dist/warnings.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.warn = warn;
-exports.warnFileDeprecation = warnFileDeprecation;
-exports.warnOptionDeprecation = warnOptionDeprecation;
-
-/* global global, console */
-function warn(warning, type) {
- if (global && global._YAML_SILENCE_WARNINGS) return;
-
- var _ref = global && global.process,
- emitWarning = _ref.emitWarning; // This will throw in Jest if `warning` is an Error instance due to
- // https://github.com/facebook/jest/issues/2549
-
-
- if (emitWarning) emitWarning(warning, type);else {
- // eslint-disable-next-line no-console
- console.warn(type ? "".concat(type, ": ").concat(warning) : warning);
- }
-}
-
-function warnFileDeprecation(filename) {
- if (global && global._YAML_SILENCE_DEPRECATION_WARNINGS) return;
- var path = filename.replace(/.*yaml[/\\]/i, '').replace(/\.js$/, '').replace(/\\/g, '/');
- warn("The endpoint 'yaml/".concat(path, "' will be removed in a future release."), 'DeprecationWarning');
-}
-
-var warned = {};
-
-function warnOptionDeprecation(name, alternative) {
- if (global && global._YAML_SILENCE_DEPRECATION_WARNINGS) return;
- if (warned[name]) return;
- warned[name] = true;
- var msg = "The option '".concat(name, "' will be removed in a future release");
- msg += alternative ? ", use '".concat(alternative, "' instead.") : '.';
- warn(msg, 'DeprecationWarning');
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/browser/index.js b/assets/node_modules/yaml/browser/index.js
deleted file mode 100644
index c62e68e..0000000
--- a/assets/node_modules/yaml/browser/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./dist').default
diff --git a/assets/node_modules/yaml/browser/map.js b/assets/node_modules/yaml/browser/map.js
deleted file mode 100644
index a09f227..0000000
--- a/assets/node_modules/yaml/browser/map.js
+++ /dev/null
@@ -1,2 +0,0 @@
-module.exports = require('./dist/schema/Map').default
-require('./dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/browser/pair.js b/assets/node_modules/yaml/browser/pair.js
deleted file mode 100644
index 7ab19b5..0000000
--- a/assets/node_modules/yaml/browser/pair.js
+++ /dev/null
@@ -1,2 +0,0 @@
-module.exports = require('./dist/schema/Pair').default
-require('./dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/browser/parse-cst.js b/assets/node_modules/yaml/browser/parse-cst.js
deleted file mode 100644
index 64108c6..0000000
--- a/assets/node_modules/yaml/browser/parse-cst.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./dist/cst/parse').default
diff --git a/assets/node_modules/yaml/browser/scalar.js b/assets/node_modules/yaml/browser/scalar.js
deleted file mode 100644
index eb3e7e8..0000000
--- a/assets/node_modules/yaml/browser/scalar.js
+++ /dev/null
@@ -1,2 +0,0 @@
-module.exports = require('./dist/schema/Scalar').default
-require('./dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/browser/schema.js b/assets/node_modules/yaml/browser/schema.js
deleted file mode 100644
index ddfbd10..0000000
--- a/assets/node_modules/yaml/browser/schema.js
+++ /dev/null
@@ -1,7 +0,0 @@
-module.exports = require('./dist/schema').default
-var opt = require('./dist/tags/options')
-module.exports.nullOptions = opt.nullOptions
-module.exports.strOptions = opt.strOptions
-module.exports.stringify = require('./dist/stringify').stringifyString
-
-require('./dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/browser/seq.js b/assets/node_modules/yaml/browser/seq.js
deleted file mode 100644
index 4915329..0000000
--- a/assets/node_modules/yaml/browser/seq.js
+++ /dev/null
@@ -1,2 +0,0 @@
-module.exports = require('./dist/schema/Seq').default
-require('./dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/browser/types.js b/assets/node_modules/yaml/browser/types.js
deleted file mode 100644
index 4ef98e2..0000000
--- a/assets/node_modules/yaml/browser/types.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var opt = require('./dist/tags/options')
-exports.binaryOptions = opt.binaryOptions
-exports.boolOptions = opt.boolOptions
-exports.nullOptions = opt.nullOptions
-exports.strOptions = opt.strOptions
-
-exports.Schema = require('./dist/schema').default
-exports.YAMLMap = require('./dist/schema/Map').default
-exports.YAMLSeq = require('./dist/schema/Seq').default
-exports.Pair = require('./dist/schema/Pair').default
-exports.Scalar = require('./dist/schema/Scalar').default
diff --git a/assets/node_modules/yaml/browser/types/binary.js b/assets/node_modules/yaml/browser/types/binary.js
deleted file mode 100644
index 6c4b886..0000000
--- a/assets/node_modules/yaml/browser/types/binary.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-Object.defineProperty(exports, '__esModule', { value: true })
-
-exports.binary = require('../dist/tags/yaml-1.1/binary').default
-exports.default = [exports.binary]
-
-require('../dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/browser/types/omap.js b/assets/node_modules/yaml/browser/types/omap.js
deleted file mode 100644
index b224451..0000000
--- a/assets/node_modules/yaml/browser/types/omap.js
+++ /dev/null
@@ -1,2 +0,0 @@
-module.exports = require('../dist/tags/yaml-1.1/omap').default
-require('../dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/browser/types/pairs.js b/assets/node_modules/yaml/browser/types/pairs.js
deleted file mode 100644
index 16d7b50..0000000
--- a/assets/node_modules/yaml/browser/types/pairs.js
+++ /dev/null
@@ -1,2 +0,0 @@
-module.exports = require('../dist/tags/yaml-1.1/pairs').default
-require('../dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/browser/types/set.js b/assets/node_modules/yaml/browser/types/set.js
deleted file mode 100644
index 584078c..0000000
--- a/assets/node_modules/yaml/browser/types/set.js
+++ /dev/null
@@ -1,2 +0,0 @@
-module.exports = require('../dist/tags/yaml-1.1/set').default
-require('../dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/browser/types/timestamp.js b/assets/node_modules/yaml/browser/types/timestamp.js
deleted file mode 100644
index 924911a..0000000
--- a/assets/node_modules/yaml/browser/types/timestamp.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict'
-Object.defineProperty(exports, '__esModule', { value: true })
-
-var ts = require('../dist/tags/yaml-1.1/timestamp')
-exports.default = [ts.intTime, ts.floatTime, ts.timestamp]
-exports.floatTime = ts.floatTime
-exports.intTime = ts.intTime
-exports.timestamp = ts.timestamp
-
-require('../dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/browser/util.js b/assets/node_modules/yaml/browser/util.js
deleted file mode 100644
index f4d4a65..0000000
--- a/assets/node_modules/yaml/browser/util.js
+++ /dev/null
@@ -1,15 +0,0 @@
-exports.findPair = require('./dist/schema/Map').findPair
-exports.parseMap = require('./dist/schema/parseMap').default
-exports.parseSeq = require('./dist/schema/parseSeq').default
-
-var str = require('./dist/stringify')
-exports.stringifyNumber = str.stringifyNumber
-exports.stringifyString = str.stringifyString
-exports.toJSON = require('./dist/toJSON').default
-exports.Type = require('./dist/constants').Type
-
-var err = require('./dist/errors')
-exports.YAMLReferenceError = err.YAMLReferenceError
-exports.YAMLSemanticError = err.YAMLSemanticError
-exports.YAMLSyntaxError = err.YAMLSyntaxError
-exports.YAMLWarning = err.YAMLWarning
diff --git a/assets/node_modules/yaml/dist/Anchors.js b/assets/node_modules/yaml/dist/Anchors.js
deleted file mode 100644
index 696158d..0000000
--- a/assets/node_modules/yaml/dist/Anchors.js
+++ /dev/null
@@ -1,125 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _Alias = _interopRequireDefault(require("./schema/Alias"));
-
-var _Map = _interopRequireDefault(require("./schema/Map"));
-
-var _Merge = _interopRequireDefault(require("./schema/Merge"));
-
-var _Scalar = _interopRequireDefault(require("./schema/Scalar"));
-
-var _Seq = _interopRequireDefault(require("./schema/Seq"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-class Anchors {
- static validAnchorNode(node) {
- return node instanceof _Scalar.default || node instanceof _Seq.default || node instanceof _Map.default;
- }
-
- constructor(prefix) {
- _defineProperty(this, "map", {});
-
- this.prefix = prefix;
- }
-
- createAlias(node, name) {
- this.setAnchor(node, name);
- return new _Alias.default(node);
- }
-
- createMergePair(...sources) {
- const merge = new _Merge.default();
- merge.value.items = sources.map(s => {
- if (s instanceof _Alias.default) {
- if (s.source instanceof _Map.default) return s;
- } else if (s instanceof _Map.default) {
- return this.createAlias(s);
- }
-
- throw new Error('Merge sources must be Map nodes or their Aliases');
- });
- return merge;
- }
-
- getName(node) {
- const {
- map
- } = this;
- return Object.keys(map).find(a => map[a] === node);
- }
-
- getNode(name) {
- return this.map[name];
- }
-
- newName(prefix) {
- if (!prefix) prefix = this.prefix;
- const names = Object.keys(this.map);
-
- for (let i = 1; true; ++i) {
- const name = `${prefix}${i}`;
- if (!names.includes(name)) return name;
- }
- } // During parsing, map & aliases contain CST nodes
-
-
- resolveNodes() {
- const {
- map,
- _cstAliases
- } = this;
- Object.keys(map).forEach(a => {
- map[a] = map[a].resolved;
- });
-
- _cstAliases.forEach(a => {
- a.source = a.source.resolved;
- });
-
- delete this._cstAliases;
- }
-
- setAnchor(node, name) {
- if (node != null && !Anchors.validAnchorNode(node)) {
- throw new Error('Anchors may only be set for Scalar, Seq and Map nodes');
- }
-
- if (name && /[\x00-\x19\s,[\]{}]/.test(name)) {
- throw new Error('Anchor names must not contain whitespace or control characters');
- }
-
- const {
- map
- } = this;
- const prev = node && Object.keys(map).find(a => map[a] === node);
-
- if (prev) {
- if (!name) {
- return prev;
- } else if (prev !== name) {
- delete map[prev];
- map[name] = node;
- }
- } else {
- if (!name) {
- if (!node) return null;
- name = this.newName();
- }
-
- map[name] = node;
- }
-
- return name;
- }
-
-}
-
-exports.default = Anchors; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/Document.js b/assets/node_modules/yaml/dist/Document.js
deleted file mode 100644
index 806b407..0000000
--- a/assets/node_modules/yaml/dist/Document.js
+++ /dev/null
@@ -1,710 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _addComment = _interopRequireDefault(require("./addComment"));
-
-var _Anchors = _interopRequireDefault(require("./Anchors"));
-
-var _constants = require("./constants");
-
-var _errors = require("./errors");
-
-var _listTagNames = _interopRequireDefault(require("./listTagNames"));
-
-var _schema = _interopRequireDefault(require("./schema"));
-
-var _Alias = _interopRequireDefault(require("./schema/Alias"));
-
-var _Collection = _interopRequireWildcard(require("./schema/Collection"));
-
-var _Node = _interopRequireDefault(require("./schema/Node"));
-
-var _Scalar = _interopRequireDefault(require("./schema/Scalar"));
-
-var _toJSON = _interopRequireDefault(require("./toJSON"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-const isCollectionItem = node => node && [_constants.Type.MAP_KEY, _constants.Type.MAP_VALUE, _constants.Type.SEQ_ITEM].includes(node.type);
-
-class Document {
- constructor(options) {
- this.anchors = new _Anchors.default(options.anchorPrefix);
- this.commentBefore = null;
- this.comment = null;
- this.contents = null;
- this.directivesEndMarker = null;
- this.errors = [];
- this.options = options;
- this.schema = null;
- this.tagPrefixes = [];
- this.version = null;
- this.warnings = [];
- }
-
- assertCollectionContents() {
- if (this.contents instanceof _Collection.default) return true;
- throw new Error('Expected a YAML collection as document contents');
- }
-
- add(value) {
- this.assertCollectionContents();
- return this.contents.add(value);
- }
-
- addIn(path, value) {
- this.assertCollectionContents();
- this.contents.addIn(path, value);
- }
-
- delete(key) {
- this.assertCollectionContents();
- return this.contents.delete(key);
- }
-
- deleteIn(path) {
- if ((0, _Collection.isEmptyPath)(path)) {
- if (this.contents == null) return false;
- this.contents = null;
- return true;
- }
-
- this.assertCollectionContents();
- return this.contents.deleteIn(path);
- }
-
- getDefaults() {
- return Document.defaults[this.version] || Document.defaults[this.options.version] || {};
- }
-
- get(key, keepScalar) {
- return this.contents instanceof _Collection.default ? this.contents.get(key, keepScalar) : undefined;
- }
-
- getIn(path, keepScalar) {
- if ((0, _Collection.isEmptyPath)(path)) return !keepScalar && this.contents instanceof _Scalar.default ? this.contents.value : this.contents;
- return this.contents instanceof _Collection.default ? this.contents.getIn(path, keepScalar) : undefined;
- }
-
- has(key) {
- return this.contents instanceof _Collection.default ? this.contents.has(key) : false;
- }
-
- hasIn(path) {
- if ((0, _Collection.isEmptyPath)(path)) return this.contents !== undefined;
- return this.contents instanceof _Collection.default ? this.contents.hasIn(path) : false;
- }
-
- set(key, value) {
- this.assertCollectionContents();
- this.contents.set(key, value);
- }
-
- setIn(path, value) {
- if ((0, _Collection.isEmptyPath)(path)) this.contents = value;else {
- this.assertCollectionContents();
- this.contents.setIn(path, value);
- }
- }
-
- setSchema(id, customTags) {
- if (!id && !customTags && this.schema) return;
- if (typeof id === 'number') id = id.toFixed(1);
-
- if (id === '1.0' || id === '1.1' || id === '1.2') {
- if (this.version) this.version = id;else this.options.version = id;
- delete this.options.schema;
- } else if (id && typeof id === 'string') {
- this.options.schema = id;
- }
-
- if (Array.isArray(customTags)) this.options.customTags = customTags;
- const opt = Object.assign({}, this.getDefaults(), this.options);
- this.schema = new _schema.default(opt);
- }
-
- parse(node, prevDoc) {
- if (this.options.keepCstNodes) this.cstNode = node;
- if (this.options.keepNodeTypes) this.type = 'DOCUMENT';
- const {
- directives = [],
- contents = [],
- directivesEndMarker,
- error,
- valueRange
- } = node;
-
- if (error) {
- if (!error.source) error.source = this;
- this.errors.push(error);
- }
-
- this.parseDirectives(directives, prevDoc);
- if (directivesEndMarker) this.directivesEndMarker = true;
- this.range = valueRange ? [valueRange.start, valueRange.end] : null;
- this.setSchema();
- this.anchors._cstAliases = [];
- this.parseContents(contents);
- this.anchors.resolveNodes();
-
- if (this.options.prettyErrors) {
- for (const error of this.errors) if (error instanceof _errors.YAMLError) error.makePretty();
-
- for (const warn of this.warnings) if (warn instanceof _errors.YAMLError) warn.makePretty();
- }
-
- return this;
- }
-
- parseDirectives(directives, prevDoc) {
- const directiveComments = [];
- let hasDirectives = false;
- directives.forEach(directive => {
- const {
- comment,
- name
- } = directive;
-
- switch (name) {
- case 'TAG':
- this.resolveTagDirective(directive);
- hasDirectives = true;
- break;
-
- case 'YAML':
- case 'YAML:1.0':
- this.resolveYamlDirective(directive);
- hasDirectives = true;
- break;
-
- default:
- if (name) {
- const msg = `YAML only supports %TAG and %YAML directives, and not %${name}`;
- this.warnings.push(new _errors.YAMLWarning(directive, msg));
- }
-
- }
-
- if (comment) directiveComments.push(comment);
- });
-
- if (prevDoc && !hasDirectives && '1.1' === (this.version || prevDoc.version || this.options.version)) {
- const copyTagPrefix = ({
- handle,
- prefix
- }) => ({
- handle,
- prefix
- });
-
- this.tagPrefixes = prevDoc.tagPrefixes.map(copyTagPrefix);
- this.version = prevDoc.version;
- }
-
- this.commentBefore = directiveComments.join('\n') || null;
- }
-
- parseContents(contents) {
- const comments = {
- before: [],
- after: []
- };
- const contentNodes = [];
- let spaceBefore = false;
- contents.forEach(node => {
- if (node.valueRange) {
- if (contentNodes.length === 1) {
- const msg = 'Document is not valid YAML (bad indentation?)';
- this.errors.push(new _errors.YAMLSyntaxError(node, msg));
- }
-
- const res = this.resolveNode(node);
-
- if (spaceBefore) {
- res.spaceBefore = true;
- spaceBefore = false;
- }
-
- contentNodes.push(res);
- } else if (node.comment !== null) {
- const cc = contentNodes.length === 0 ? comments.before : comments.after;
- cc.push(node.comment);
- } else if (node.type === _constants.Type.BLANK_LINE) {
- spaceBefore = true;
-
- if (contentNodes.length === 0 && comments.before.length > 0 && !this.commentBefore) {
- // space-separated comments at start are parsed as document comments
- this.commentBefore = comments.before.join('\n');
- comments.before = [];
- }
- }
- });
-
- switch (contentNodes.length) {
- case 0:
- this.contents = null;
- comments.after = comments.before;
- break;
-
- case 1:
- this.contents = contentNodes[0];
-
- if (this.contents) {
- const cb = comments.before.join('\n') || null;
-
- if (cb) {
- const cbNode = this.contents instanceof _Collection.default && this.contents.items[0] ? this.contents.items[0] : this.contents;
- cbNode.commentBefore = cbNode.commentBefore ? `${cb}\n${cbNode.commentBefore}` : cb;
- }
- } else {
- comments.after = comments.before.concat(comments.after);
- }
-
- break;
-
- default:
- this.contents = contentNodes;
-
- if (this.contents[0]) {
- this.contents[0].commentBefore = comments.before.join('\n') || null;
- } else {
- comments.after = comments.before.concat(comments.after);
- }
-
- }
-
- this.comment = comments.after.join('\n') || null;
- }
-
- resolveTagDirective(directive) {
- const [handle, prefix] = directive.parameters;
-
- if (handle && prefix) {
- if (this.tagPrefixes.every(p => p.handle !== handle)) {
- this.tagPrefixes.push({
- handle,
- prefix
- });
- } else {
- const msg = 'The %TAG directive must only be given at most once per handle in the same document.';
- this.errors.push(new _errors.YAMLSemanticError(directive, msg));
- }
- } else {
- const msg = 'Insufficient parameters given for %TAG directive';
- this.errors.push(new _errors.YAMLSemanticError(directive, msg));
- }
- }
-
- resolveYamlDirective(directive) {
- let [version] = directive.parameters;
- if (directive.name === 'YAML:1.0') version = '1.0';
-
- if (this.version) {
- const msg = 'The %YAML directive must only be given at most once per document.';
- this.errors.push(new _errors.YAMLSemanticError(directive, msg));
- }
-
- if (!version) {
- const msg = 'Insufficient parameters given for %YAML directive';
- this.errors.push(new _errors.YAMLSemanticError(directive, msg));
- } else {
- if (!Document.defaults[version]) {
- const v0 = this.version || this.options.version;
- const msg = `Document will be parsed as YAML ${v0} rather than YAML ${version}`;
- this.warnings.push(new _errors.YAMLWarning(directive, msg));
- }
-
- this.version = version;
- }
- }
-
- resolveTagName(node) {
- const {
- tag,
- type
- } = node;
- let nonSpecific = false;
-
- if (tag) {
- const {
- handle,
- suffix,
- verbatim
- } = tag;
-
- if (verbatim) {
- if (verbatim !== '!' && verbatim !== '!!') return verbatim;
- const msg = `Verbatim tags aren't resolved, so ${verbatim} is invalid.`;
- this.errors.push(new _errors.YAMLSemanticError(node, msg));
- } else if (handle === '!' && !suffix) {
- nonSpecific = true;
- } else {
- let prefix = this.tagPrefixes.find(p => p.handle === handle);
-
- if (!prefix) {
- const dtp = this.getDefaults().tagPrefixes;
- if (dtp) prefix = dtp.find(p => p.handle === handle);
- }
-
- if (prefix) {
- if (suffix) {
- if (handle === '!' && (this.version || this.options.version) === '1.0') {
- if (suffix[0] === '^') return suffix;
-
- if (/[:/]/.test(suffix)) {
- // word/foo -> tag:word.yaml.org,2002:foo
- const vocab = suffix.match(/^([a-z0-9-]+)\/(.*)/i);
- return vocab ? `tag:${vocab[1]}.yaml.org,2002:${vocab[2]}` : `tag:${suffix}`;
- }
- }
-
- return prefix.prefix + decodeURIComponent(suffix);
- }
-
- this.errors.push(new _errors.YAMLSemanticError(node, `The ${handle} tag has no suffix.`));
- } else {
- const msg = `The ${handle} tag handle is non-default and was not declared.`;
- this.errors.push(new _errors.YAMLSemanticError(node, msg));
- }
- }
- }
-
- switch (type) {
- case _constants.Type.BLOCK_FOLDED:
- case _constants.Type.BLOCK_LITERAL:
- case _constants.Type.QUOTE_DOUBLE:
- case _constants.Type.QUOTE_SINGLE:
- return _schema.default.defaultTags.STR;
-
- case _constants.Type.FLOW_MAP:
- case _constants.Type.MAP:
- return _schema.default.defaultTags.MAP;
-
- case _constants.Type.FLOW_SEQ:
- case _constants.Type.SEQ:
- return _schema.default.defaultTags.SEQ;
-
- case _constants.Type.PLAIN:
- return nonSpecific ? _schema.default.defaultTags.STR : null;
-
- default:
- return null;
- }
- }
-
- resolveNode(node) {
- if (!node) return null;
- const {
- anchors,
- errors,
- schema
- } = this;
- let hasAnchor = false;
- let hasTag = false;
- const comments = {
- before: [],
- after: []
- };
- const props = isCollectionItem(node.context.parent) ? node.context.parent.props.concat(node.props) : node.props;
-
- for (const {
- start,
- end
- } of props) {
- switch (node.context.src[start]) {
- case _constants.Char.COMMENT:
- {
- if (!node.commentHasRequiredWhitespace(start)) {
- const msg = 'Comments must be separated from other tokens by white space characters';
- errors.push(new _errors.YAMLSemanticError(node, msg));
- }
-
- const c = node.context.src.slice(start + 1, end);
- const {
- header,
- valueRange
- } = node;
-
- if (valueRange && (start > valueRange.start || header && start > header.start)) {
- comments.after.push(c);
- } else {
- comments.before.push(c);
- }
- }
- break;
-
- case _constants.Char.ANCHOR:
- if (hasAnchor) {
- const msg = 'A node can have at most one anchor';
- errors.push(new _errors.YAMLSemanticError(node, msg));
- }
-
- hasAnchor = true;
- break;
-
- case _constants.Char.TAG:
- if (hasTag) {
- const msg = 'A node can have at most one tag';
- errors.push(new _errors.YAMLSemanticError(node, msg));
- }
-
- hasTag = true;
- break;
- }
- }
-
- if (hasAnchor) {
- const name = node.anchor;
- const prev = anchors.getNode(name); // At this point, aliases for any preceding node with the same anchor
- // name have already been resolved, so it may safely be renamed.
-
- if (prev) anchors.map[anchors.newName(name)] = prev; // During parsing, we need to store the CST node in anchors.map as
- // anchors need to be available during resolution to allow for
- // circular references.
-
- anchors.map[name] = node;
- }
-
- let res;
-
- if (node.type === _constants.Type.ALIAS) {
- if (hasAnchor || hasTag) {
- const msg = 'An alias node must not specify any properties';
- errors.push(new _errors.YAMLSemanticError(node, msg));
- }
-
- const name = node.rawValue;
- const src = anchors.getNode(name);
-
- if (!src) {
- const msg = `Aliased anchor not found: ${name}`;
- errors.push(new _errors.YAMLReferenceError(node, msg));
- return null;
- } // Lazy resolution for circular references
-
-
- res = new _Alias.default(src);
-
- anchors._cstAliases.push(res);
- } else {
- const tagName = this.resolveTagName(node);
-
- if (tagName) {
- res = schema.resolveNodeWithFallback(this, node, tagName);
- } else {
- if (node.type !== _constants.Type.PLAIN) {
- const msg = `Failed to resolve ${node.type} node here`;
- errors.push(new _errors.YAMLSyntaxError(node, msg));
- return null;
- }
-
- try {
- res = schema.resolveScalar(node.strValue || '');
- } catch (error) {
- if (!error.source) error.source = node;
- errors.push(error);
- return null;
- }
- }
- }
-
- if (res) {
- res.range = [node.range.start, node.range.end];
- if (this.options.keepCstNodes) res.cstNode = node;
- if (this.options.keepNodeTypes) res.type = node.type;
- const cb = comments.before.join('\n');
-
- if (cb) {
- res.commentBefore = res.commentBefore ? `${res.commentBefore}\n${cb}` : cb;
- }
-
- const ca = comments.after.join('\n');
- if (ca) res.comment = res.comment ? `${res.comment}\n${ca}` : ca;
- }
-
- return node.resolved = res;
- }
-
- listNonDefaultTags() {
- return (0, _listTagNames.default)(this.contents).filter(t => t.indexOf(_schema.default.defaultPrefix) !== 0);
- }
-
- setTagPrefix(handle, prefix) {
- if (handle[0] !== '!' || handle[handle.length - 1] !== '!') throw new Error('Handle must start and end with !');
-
- if (prefix) {
- const prev = this.tagPrefixes.find(p => p.handle === handle);
- if (prev) prev.prefix = prefix;else this.tagPrefixes.push({
- handle,
- prefix
- });
- } else {
- this.tagPrefixes = this.tagPrefixes.filter(p => p.handle !== handle);
- }
- }
-
- stringifyTag(tag) {
- if ((this.version || this.options.version) === '1.0') {
- const priv = tag.match(/^tag:private\.yaml\.org,2002:([^:/]+)$/);
- if (priv) return '!' + priv[1];
- const vocab = tag.match(/^tag:([a-zA-Z0-9-]+)\.yaml\.org,2002:(.*)/);
- return vocab ? `!${vocab[1]}/${vocab[2]}` : `!${tag.replace(/^tag:/, '')}`;
- } else {
- let p = this.tagPrefixes.find(p => tag.indexOf(p.prefix) === 0);
-
- if (!p) {
- const dtp = this.getDefaults().tagPrefixes;
- p = dtp && dtp.find(p => tag.indexOf(p.prefix) === 0);
- }
-
- if (!p) return tag[0] === '!' ? tag : `!<${tag}>`;
- const suffix = tag.substr(p.prefix.length).replace(/[!,[\]{}]/g, ch => ({
- '!': '%21',
- ',': '%2C',
- '[': '%5B',
- ']': '%5D',
- '{': '%7B',
- '}': '%7D'
- })[ch]);
- return p.handle + suffix;
- }
- }
-
- toJSON(arg) {
- const {
- keepBlobsInJSON,
- mapAsMap,
- maxAliasCount
- } = this.options;
- const keep = keepBlobsInJSON && (typeof arg !== 'string' || !(this.contents instanceof _Scalar.default));
- const ctx = {
- doc: this,
- keep,
- mapAsMap: keep && !!mapAsMap,
- maxAliasCount
- };
- const anchorNames = Object.keys(this.anchors.map);
- if (anchorNames.length > 0) ctx.anchors = anchorNames.map(name => ({
- alias: [],
- aliasCount: 0,
- count: 1,
- node: this.anchors.map[name]
- }));
- return (0, _toJSON.default)(this.contents, arg, ctx);
- }
-
- toString() {
- if (this.errors.length > 0) throw new Error('Document with errors cannot be stringified');
- this.setSchema();
- const lines = [];
- let hasDirectives = false;
-
- if (this.version) {
- let vd = '%YAML 1.2';
-
- if (this.schema.name === 'yaml-1.1') {
- if (this.version === '1.0') vd = '%YAML:1.0';else if (this.version === '1.1') vd = '%YAML 1.1';
- }
-
- lines.push(vd);
- hasDirectives = true;
- }
-
- const tagNames = this.listNonDefaultTags();
- this.tagPrefixes.forEach(({
- handle,
- prefix
- }) => {
- if (tagNames.some(t => t.indexOf(prefix) === 0)) {
- lines.push(`%TAG ${handle} ${prefix}`);
- hasDirectives = true;
- }
- });
- if (hasDirectives || this.directivesEndMarker) lines.push('---');
-
- if (this.commentBefore) {
- if (hasDirectives || !this.directivesEndMarker) lines.unshift('');
- lines.unshift(this.commentBefore.replace(/^/gm, '#'));
- }
-
- const ctx = {
- anchors: {},
- doc: this,
- indent: ''
- };
- let chompKeep = false;
- let contentComment = null;
-
- if (this.contents) {
- if (this.contents instanceof _Node.default) {
- if (this.contents.spaceBefore && (hasDirectives || this.directivesEndMarker)) lines.push('');
- if (this.contents.commentBefore) lines.push(this.contents.commentBefore.replace(/^/gm, '#')); // top-level block scalars need to be indented if followed by a comment
-
- ctx.forceBlockIndent = !!this.comment;
- contentComment = this.contents.comment;
- }
-
- const onChompKeep = contentComment ? null : () => chompKeep = true;
- const body = this.schema.stringify(this.contents, ctx, () => contentComment = null, onChompKeep);
- lines.push((0, _addComment.default)(body, '', contentComment));
- } else if (this.contents !== undefined) {
- lines.push(this.schema.stringify(this.contents, ctx));
- }
-
- if (this.comment) {
- if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '') lines.push('');
- lines.push(this.comment.replace(/^/gm, '#'));
- }
-
- return lines.join('\n') + '\n';
- }
-
-}
-
-exports.default = Document;
-
-_defineProperty(Document, "defaults", {
- '1.0': {
- schema: 'yaml-1.1',
- merge: true,
- tagPrefixes: [{
- handle: '!',
- prefix: _schema.default.defaultPrefix
- }, {
- handle: '!!',
- prefix: 'tag:private.yaml.org,2002:'
- }]
- },
- '1.1': {
- schema: 'yaml-1.1',
- merge: true,
- tagPrefixes: [{
- handle: '!',
- prefix: '!'
- }, {
- handle: '!!',
- prefix: _schema.default.defaultPrefix
- }]
- },
- '1.2': {
- schema: 'core',
- merge: false,
- tagPrefixes: [{
- handle: '!',
- prefix: '!'
- }, {
- handle: '!!',
- prefix: _schema.default.defaultPrefix
- }]
- }
-}); \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/addComment.js b/assets/node_modules/yaml/dist/addComment.js
deleted file mode 100644
index 5e406ad..0000000
--- a/assets/node_modules/yaml/dist/addComment.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.addCommentBefore = addCommentBefore;
-exports.default = addComment;
-
-function addCommentBefore(str, indent, comment) {
- if (!comment) return str;
- const cc = comment.replace(/[\s\S]^/gm, `$&${indent}#`);
- return `#${cc}\n${indent}${str}`;
-}
-
-function addComment(str, indent, comment) {
- return !comment ? str : comment.indexOf('\n') === -1 ? `${str} #${comment}` : `${str}\n` + comment.replace(/^/gm, `${indent || ''}#`);
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/constants.js b/assets/node_modules/yaml/dist/constants.js
deleted file mode 100644
index 57444df..0000000
--- a/assets/node_modules/yaml/dist/constants.js
+++ /dev/null
@@ -1,34 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.Type = exports.Char = void 0;
-const Char = {
- ANCHOR: '&',
- COMMENT: '#',
- TAG: '!',
- DIRECTIVES_END: '-',
- DOCUMENT_END: '.'
-};
-exports.Char = Char;
-const Type = {
- ALIAS: 'ALIAS',
- BLANK_LINE: 'BLANK_LINE',
- BLOCK_FOLDED: 'BLOCK_FOLDED',
- BLOCK_LITERAL: 'BLOCK_LITERAL',
- COMMENT: 'COMMENT',
- DIRECTIVE: 'DIRECTIVE',
- DOCUMENT: 'DOCUMENT',
- FLOW_MAP: 'FLOW_MAP',
- FLOW_SEQ: 'FLOW_SEQ',
- MAP: 'MAP',
- MAP_KEY: 'MAP_KEY',
- MAP_VALUE: 'MAP_VALUE',
- PLAIN: 'PLAIN',
- QUOTE_DOUBLE: 'QUOTE_DOUBLE',
- QUOTE_SINGLE: 'QUOTE_SINGLE',
- SEQ: 'SEQ',
- SEQ_ITEM: 'SEQ_ITEM'
-};
-exports.Type = Type; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/Alias.js b/assets/node_modules/yaml/dist/cst/Alias.js
deleted file mode 100644
index 39012ad..0000000
--- a/assets/node_modules/yaml/dist/cst/Alias.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class Alias extends _Node.default {
- /**
- * Parses an *alias from the source
- *
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this scalar
- */
- parse(context, start) {
- this.context = context;
- const {
- src
- } = context;
-
- let offset = _Node.default.endOfIdentifier(src, start + 1);
-
- this.valueRange = new _Range.default(start + 1, offset);
- offset = _Node.default.endOfWhiteSpace(src, offset);
- offset = this.parseComment(offset);
- return offset;
- }
-
-}
-
-exports.default = Alias; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/BlankLine.js b/assets/node_modules/yaml/dist/cst/BlankLine.js
deleted file mode 100644
index 654c0c4..0000000
--- a/assets/node_modules/yaml/dist/cst/BlankLine.js
+++ /dev/null
@@ -1,52 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _constants = require("../constants");
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class BlankLine extends _Node.default {
- constructor() {
- super(_constants.Type.BLANK_LINE);
- }
-
- get includesTrailingLines() {
- return true;
- }
- /**
- * Parses blank lines from the source
- *
- * @param {ParseContext} context
- * @param {number} start - Index of first \n character
- * @returns {number} - Index of the character after this
- */
-
-
- parse(context, start) {
- this.context = context;
- const {
- src
- } = context;
- let offset = start + 1;
-
- while (_Node.default.atBlank(src, offset)) {
- const lineEnd = _Node.default.endOfWhiteSpace(src, offset);
-
- if (lineEnd === '\n') offset = lineEnd + 1;else break;
- }
-
- this.range = new _Range.default(start, offset);
- return offset;
- }
-
-}
-
-exports.default = BlankLine; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/BlockValue.js b/assets/node_modules/yaml/dist/cst/BlockValue.js
deleted file mode 100644
index 8aa520b..0000000
--- a/assets/node_modules/yaml/dist/cst/BlockValue.js
+++ /dev/null
@@ -1,248 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.Chomp = void 0;
-
-var _constants = require("../constants");
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const Chomp = {
- CLIP: 'CLIP',
- KEEP: 'KEEP',
- STRIP: 'STRIP'
-};
-exports.Chomp = Chomp;
-
-class BlockValue extends _Node.default {
- constructor(type, props) {
- super(type, props);
- this.blockIndent = null;
- this.chomping = Chomp.CLIP;
- this.header = null;
- }
-
- get includesTrailingLines() {
- return this.chomping === Chomp.KEEP;
- }
-
- get strValue() {
- if (!this.valueRange || !this.context) return null;
- let {
- start,
- end
- } = this.valueRange;
- const {
- indent,
- src
- } = this.context;
- if (this.valueRange.isEmpty()) return '';
- let lastNewLine = null;
- let ch = src[end - 1];
-
- while (ch === '\n' || ch === '\t' || ch === ' ') {
- end -= 1;
-
- if (end <= start) {
- if (this.chomping === Chomp.KEEP) break;else return '';
- }
-
- if (ch === '\n') lastNewLine = end;
- ch = src[end - 1];
- }
-
- let keepStart = end + 1;
-
- if (lastNewLine) {
- if (this.chomping === Chomp.KEEP) {
- keepStart = lastNewLine;
- end = this.valueRange.end;
- } else {
- end = lastNewLine;
- }
- }
-
- const bi = indent + this.blockIndent;
- const folded = this.type === _constants.Type.BLOCK_FOLDED;
- let atStart = true;
- let str = '';
- let sep = '';
- let prevMoreIndented = false;
-
- for (let i = start; i < end; ++i) {
- for (let j = 0; j < bi; ++j) {
- if (src[i] !== ' ') break;
- i += 1;
- }
-
- const ch = src[i];
-
- if (ch === '\n') {
- if (sep === '\n') str += '\n';else sep = '\n';
- } else {
- const lineEnd = _Node.default.endOfLine(src, i);
-
- const line = src.slice(i, lineEnd);
- i = lineEnd;
-
- if (folded && (ch === ' ' || ch === '\t') && i < keepStart) {
- if (sep === ' ') sep = '\n';else if (!prevMoreIndented && !atStart && sep === '\n') sep = '\n\n';
- str += sep + line; //+ ((lineEnd < end && src[lineEnd]) || '')
-
- sep = lineEnd < end && src[lineEnd] || '';
- prevMoreIndented = true;
- } else {
- str += sep + line;
- sep = folded && i < keepStart ? ' ' : '\n';
- prevMoreIndented = false;
- }
-
- if (atStart && line !== '') atStart = false;
- }
- }
-
- return this.chomping === Chomp.STRIP ? str : str + '\n';
- }
-
- parseBlockHeader(start) {
- const {
- src
- } = this.context;
- let offset = start + 1;
- let bi = '';
-
- while (true) {
- const ch = src[offset];
-
- switch (ch) {
- case '-':
- this.chomping = Chomp.STRIP;
- break;
-
- case '+':
- this.chomping = Chomp.KEEP;
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- bi += ch;
- break;
-
- default:
- this.blockIndent = Number(bi) || null;
- this.header = new _Range.default(start, offset);
- return offset;
- }
-
- offset += 1;
- }
- }
-
- parseBlockValue(start) {
- const {
- indent,
- src
- } = this.context;
- let offset = start;
- let valueEnd = start;
- let bi = this.blockIndent ? indent + this.blockIndent - 1 : indent;
- let minBlockIndent = 1;
-
- for (let ch = src[offset]; ch === '\n'; ch = src[offset]) {
- offset += 1;
- if (_Node.default.atDocumentBoundary(src, offset)) break;
-
- const end = _Node.default.endOfBlockIndent(src, bi, offset); // should not include tab?
-
-
- if (end === null) break;
-
- if (!this.blockIndent) {
- // no explicit block indent, none yet detected
- const lineIndent = end - (offset + indent);
-
- if (src[end] !== '\n') {
- // first line with non-whitespace content
- if (lineIndent < minBlockIndent) {
- offset -= 1;
- break;
- }
-
- this.blockIndent = lineIndent;
- bi = indent + this.blockIndent - 1;
- } else if (lineIndent > minBlockIndent) {
- // empty line with more whitespace
- minBlockIndent = lineIndent;
- }
- }
-
- if (src[end] === '\n') {
- offset = end;
- } else {
- offset = valueEnd = _Node.default.endOfLine(src, end);
- }
- }
-
- if (this.chomping !== Chomp.KEEP) {
- offset = src[valueEnd] ? valueEnd + 1 : valueEnd;
- }
-
- this.valueRange = new _Range.default(start + 1, offset);
- return offset;
- }
- /**
- * Parses a block value from the source
- *
- * Accepted forms are:
- * ```
- * BS
- * block
- * lines
- *
- * BS #comment
- * block
- * lines
- * ```
- * where the block style BS matches the regexp `[|>][-+1-9]*` and block lines
- * are empty or have an indent level greater than `indent`.
- *
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this block
- */
-
-
- parse(context, start) {
- this.context = context;
- const {
- src
- } = context;
- let offset = this.parseBlockHeader(start);
- offset = _Node.default.endOfWhiteSpace(src, offset);
- offset = this.parseComment(offset);
- offset = this.parseBlockValue(offset);
- return offset;
- }
-
- setOrigRanges(cr, offset) {
- offset = super.setOrigRanges(cr, offset);
- return this.header ? this.header.setOrigRange(cr, offset) : offset;
- }
-
-}
-
-exports.default = BlockValue; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/Collection.js b/assets/node_modules/yaml/dist/cst/Collection.js
deleted file mode 100644
index ccd5912..0000000
--- a/assets/node_modules/yaml/dist/cst/Collection.js
+++ /dev/null
@@ -1,271 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.grabCollectionEndComments = grabCollectionEndComments;
-exports.default = void 0;
-
-var _constants = require("../constants");
-
-var _BlankLine = _interopRequireDefault(require("./BlankLine"));
-
-var _CollectionItem = _interopRequireDefault(require("./CollectionItem"));
-
-var _Comment = _interopRequireDefault(require("./Comment"));
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function grabCollectionEndComments(node) {
- let cnode = node;
-
- while (cnode instanceof _CollectionItem.default) cnode = cnode.node;
-
- if (!(cnode instanceof Collection)) return null;
- const len = cnode.items.length;
- let ci = -1;
-
- for (let i = len - 1; i >= 0; --i) {
- const n = cnode.items[i];
-
- if (n.type === _constants.Type.COMMENT) {
- // Keep sufficiently indented comments with preceding node
- const {
- indent,
- lineStart
- } = n.context;
- if (indent > 0 && n.range.start >= lineStart + indent) break;
- ci = i;
- } else if (n.type === _constants.Type.BLANK_LINE) ci = i;else break;
- }
-
- if (ci === -1) return null;
- const ca = cnode.items.splice(ci, len - ci);
- const prevEnd = ca[0].range.start;
-
- while (true) {
- cnode.range.end = prevEnd;
- if (cnode.valueRange && cnode.valueRange.end > prevEnd) cnode.valueRange.end = prevEnd;
- if (cnode === node) break;
- cnode = cnode.context.parent;
- }
-
- return ca;
-}
-
-class Collection extends _Node.default {
- static nextContentHasIndent(src, offset, indent) {
- const lineStart = _Node.default.endOfLine(src, offset) + 1;
- offset = _Node.default.endOfWhiteSpace(src, lineStart);
- const ch = src[offset];
- if (!ch) return false;
- if (offset >= lineStart + indent) return true;
- if (ch !== '#' && ch !== '\n') return false;
- return Collection.nextContentHasIndent(src, offset, indent);
- }
-
- constructor(firstItem) {
- super(firstItem.type === _constants.Type.SEQ_ITEM ? _constants.Type.SEQ : _constants.Type.MAP);
-
- for (let i = firstItem.props.length - 1; i >= 0; --i) {
- if (firstItem.props[i].start < firstItem.context.lineStart) {
- // props on previous line are assumed by the collection
- this.props = firstItem.props.slice(0, i + 1);
- firstItem.props = firstItem.props.slice(i + 1);
- const itemRange = firstItem.props[0] || firstItem.valueRange;
- firstItem.range.start = itemRange.start;
- break;
- }
- }
-
- this.items = [firstItem];
- const ec = grabCollectionEndComments(firstItem);
- if (ec) Array.prototype.push.apply(this.items, ec);
- }
-
- get includesTrailingLines() {
- return this.items.length > 0;
- }
- /**
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this
- */
-
-
- parse(context, start) {
- this.context = context;
- const {
- parseNode,
- src
- } = context; // It's easier to recalculate lineStart here rather than tracking down the
- // last context from which to read it -- eemeli/yaml#2
-
- let lineStart = _Node.default.startOfLine(src, start);
-
- const firstItem = this.items[0]; // First-item context needs to be correct for later comment handling
- // -- eemeli/yaml#17
-
- firstItem.context.parent = this;
- this.valueRange = _Range.default.copy(firstItem.valueRange);
- const indent = firstItem.range.start - firstItem.context.lineStart;
- let offset = start;
- offset = _Node.default.normalizeOffset(src, offset);
- let ch = src[offset];
- let atLineStart = _Node.default.endOfWhiteSpace(src, lineStart) === offset;
- let prevIncludesTrailingLines = false;
-
- while (ch) {
- while (ch === '\n' || ch === '#') {
- if (atLineStart && ch === '\n' && !prevIncludesTrailingLines) {
- const blankLine = new _BlankLine.default();
- offset = blankLine.parse({
- src
- }, offset);
- this.valueRange.end = offset;
-
- if (offset >= src.length) {
- ch = null;
- break;
- }
-
- this.items.push(blankLine);
- offset -= 1; // blankLine.parse() consumes terminal newline
- } else if (ch === '#') {
- if (offset < lineStart + indent && !Collection.nextContentHasIndent(src, offset, indent)) {
- return offset;
- }
-
- const comment = new _Comment.default();
- offset = comment.parse({
- indent,
- lineStart,
- src
- }, offset);
- this.items.push(comment);
- this.valueRange.end = offset;
-
- if (offset >= src.length) {
- ch = null;
- break;
- }
- }
-
- lineStart = offset + 1;
- offset = _Node.default.endOfIndent(src, lineStart);
-
- if (_Node.default.atBlank(src, offset)) {
- const wsEnd = _Node.default.endOfWhiteSpace(src, offset);
-
- const next = src[wsEnd];
-
- if (!next || next === '\n' || next === '#') {
- offset = wsEnd;
- }
- }
-
- ch = src[offset];
- atLineStart = true;
- }
-
- if (!ch) {
- break;
- }
-
- if (offset !== lineStart + indent && (atLineStart || ch !== ':')) {
- if (lineStart > start) offset = lineStart;
- break;
- }
-
- if (firstItem.type === _constants.Type.SEQ_ITEM !== (ch === '-')) {
- let typeswitch = true;
-
- if (ch === '-') {
- // map key may start with -, as long as it's followed by a non-whitespace char
- const next = src[offset + 1];
- typeswitch = !next || next === '\n' || next === '\t' || next === ' ';
- }
-
- if (typeswitch) {
- if (lineStart > start) offset = lineStart;
- break;
- }
- }
-
- const node = parseNode({
- atLineStart,
- inCollection: true,
- indent,
- lineStart,
- parent: this
- }, offset);
- if (!node) return offset; // at next document start
-
- this.items.push(node);
- this.valueRange.end = node.valueRange.end;
- offset = _Node.default.normalizeOffset(src, node.range.end);
- ch = src[offset];
- atLineStart = false;
- prevIncludesTrailingLines = node.includesTrailingLines; // Need to reset lineStart and atLineStart here if preceding node's range
- // has advanced to check the current line's indentation level
- // -- eemeli/yaml#10 & eemeli/yaml#38
-
- if (ch) {
- let ls = offset - 1;
- let prev = src[ls];
-
- while (prev === ' ' || prev === '\t') prev = src[--ls];
-
- if (prev === '\n') {
- lineStart = ls + 1;
- atLineStart = true;
- }
- }
-
- const ec = grabCollectionEndComments(node);
- if (ec) Array.prototype.push.apply(this.items, ec);
- }
-
- return offset;
- }
-
- setOrigRanges(cr, offset) {
- offset = super.setOrigRanges(cr, offset);
- this.items.forEach(node => {
- offset = node.setOrigRanges(cr, offset);
- });
- return offset;
- }
-
- toString() {
- const {
- context: {
- src
- },
- items,
- range,
- value
- } = this;
- if (value != null) return value;
- let str = src.slice(range.start, items[0].range.start) + String(items[0]);
-
- for (let i = 1; i < items.length; ++i) {
- const item = items[i];
- const {
- atLineStart,
- indent
- } = item.context;
- if (atLineStart) for (let i = 0; i < indent; ++i) str += ' ';
- str += String(item);
- }
-
- return _Node.default.addStringTerminator(src, range.end, str);
- }
-
-}
-
-exports.default = Collection; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/CollectionItem.js b/assets/node_modules/yaml/dist/cst/CollectionItem.js
deleted file mode 100644
index e3cd484..0000000
--- a/assets/node_modules/yaml/dist/cst/CollectionItem.js
+++ /dev/null
@@ -1,140 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _constants = require("../constants");
-
-var _errors = require("../errors");
-
-var _BlankLine = _interopRequireDefault(require("./BlankLine"));
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class CollectionItem extends _Node.default {
- constructor(type, props) {
- super(type, props);
- this.node = null;
- }
-
- get includesTrailingLines() {
- return !!this.node && this.node.includesTrailingLines;
- }
- /**
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this
- */
-
-
- parse(context, start) {
- this.context = context;
- const {
- parseNode,
- src
- } = context;
- let {
- atLineStart,
- lineStart
- } = context;
- if (!atLineStart && this.type === _constants.Type.SEQ_ITEM) this.error = new _errors.YAMLSemanticError(this, 'Sequence items must not have preceding content on the same line');
- const indent = atLineStart ? start - lineStart : context.indent;
-
- let offset = _Node.default.endOfWhiteSpace(src, start + 1);
-
- let ch = src[offset];
- const inlineComment = ch === '#';
- const comments = [];
- let blankLine = null;
-
- while (ch === '\n' || ch === '#') {
- if (ch === '#') {
- const end = _Node.default.endOfLine(src, offset + 1);
-
- comments.push(new _Range.default(offset, end));
- offset = end;
- } else {
- atLineStart = true;
- lineStart = offset + 1;
-
- const wsEnd = _Node.default.endOfWhiteSpace(src, lineStart);
-
- if (src[wsEnd] === '\n' && comments.length === 0) {
- blankLine = new _BlankLine.default();
- lineStart = blankLine.parse({
- src
- }, lineStart);
- }
-
- offset = _Node.default.endOfIndent(src, lineStart);
- }
-
- ch = src[offset];
- }
-
- if (_Node.default.nextNodeIsIndented(ch, offset - (lineStart + indent), this.type !== _constants.Type.SEQ_ITEM)) {
- this.node = parseNode({
- atLineStart,
- inCollection: false,
- indent,
- lineStart,
- parent: this
- }, offset);
- } else if (ch && lineStart > start + 1) {
- offset = lineStart - 1;
- }
-
- if (this.node) {
- if (blankLine) {
- // Only blank lines preceding non-empty nodes are captured. Note that
- // this means that collection item range start indices do not always
- // increase monotonically. -- eemeli/yaml#126
- const items = context.parent.items || context.parent.contents;
- if (items) items.push(blankLine);
- }
-
- if (comments.length) Array.prototype.push.apply(this.props, comments);
- offset = this.node.range.end;
- } else {
- if (inlineComment) {
- const c = comments[0];
- this.props.push(c);
- offset = c.end;
- } else {
- offset = _Node.default.endOfLine(src, start + 1);
- }
- }
-
- const end = this.node ? this.node.valueRange.end : offset;
- this.valueRange = new _Range.default(start, end);
- return offset;
- }
-
- setOrigRanges(cr, offset) {
- offset = super.setOrigRanges(cr, offset);
- return this.node ? this.node.setOrigRanges(cr, offset) : offset;
- }
-
- toString() {
- const {
- context: {
- src
- },
- node,
- range,
- value
- } = this;
- if (value != null) return value;
- const str = node ? src.slice(range.start, node.range.start) + String(node) : src.slice(range.start, range.end);
- return _Node.default.addStringTerminator(src, range.end, str);
- }
-
-}
-
-exports.default = CollectionItem; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/Comment.js b/assets/node_modules/yaml/dist/cst/Comment.js
deleted file mode 100644
index d8c1c9e..0000000
--- a/assets/node_modules/yaml/dist/cst/Comment.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _constants = require("../constants");
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class Comment extends _Node.default {
- constructor() {
- super(_constants.Type.COMMENT);
- }
- /**
- * Parses a comment line from the source
- *
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this scalar
- */
-
-
- parse(context, start) {
- this.context = context;
- const offset = this.parseComment(start);
- this.range = new _Range.default(start, offset);
- return offset;
- }
-
-}
-
-exports.default = Comment; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/Directive.js b/assets/node_modules/yaml/dist/cst/Directive.js
deleted file mode 100644
index fad3b87..0000000
--- a/assets/node_modules/yaml/dist/cst/Directive.js
+++ /dev/null
@@ -1,80 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _constants = require("../constants");
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class Directive extends _Node.default {
- static endOfDirective(src, offset) {
- let ch = src[offset];
-
- while (ch && ch !== '\n' && ch !== '#') ch = src[offset += 1]; // last char can't be whitespace
-
-
- ch = src[offset - 1];
-
- while (ch === ' ' || ch === '\t') {
- offset -= 1;
- ch = src[offset - 1];
- }
-
- return offset;
- }
-
- constructor() {
- super(_constants.Type.DIRECTIVE);
- this.name = null;
- }
-
- get parameters() {
- const raw = this.rawValue;
- return raw ? raw.trim().split(/[ \t]+/) : [];
- }
-
- parseName(start) {
- const {
- src
- } = this.context;
- let offset = start;
- let ch = src[offset];
-
- while (ch && ch !== '\n' && ch !== '\t' && ch !== ' ') ch = src[offset += 1];
-
- this.name = src.slice(start, offset);
- return offset;
- }
-
- parseParameters(start) {
- const {
- src
- } = this.context;
- let offset = start;
- let ch = src[offset];
-
- while (ch && ch !== '\n' && ch !== '#') ch = src[offset += 1];
-
- this.valueRange = new _Range.default(start, offset);
- return offset;
- }
-
- parse(context, start) {
- this.context = context;
- let offset = this.parseName(start + 1);
- offset = this.parseParameters(offset);
- offset = this.parseComment(offset);
- this.range = new _Range.default(start, offset);
- return offset;
- }
-
-}
-
-exports.default = Directive; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/Document.js b/assets/node_modules/yaml/dist/cst/Document.js
deleted file mode 100644
index 5482d9d..0000000
--- a/assets/node_modules/yaml/dist/cst/Document.js
+++ /dev/null
@@ -1,281 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _constants = require("../constants");
-
-var _errors = require("../errors");
-
-var _BlankLine = _interopRequireDefault(require("./BlankLine"));
-
-var _Collection = require("./Collection");
-
-var _Comment = _interopRequireDefault(require("./Comment"));
-
-var _Directive = _interopRequireDefault(require("./Directive"));
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class Document extends _Node.default {
- static startCommentOrEndBlankLine(src, start) {
- const offset = _Node.default.endOfWhiteSpace(src, start);
-
- const ch = src[offset];
- return ch === '#' || ch === '\n' ? offset : start;
- }
-
- constructor() {
- super(_constants.Type.DOCUMENT);
- this.directives = null;
- this.contents = null;
- this.directivesEndMarker = null;
- this.documentEndMarker = null;
- }
-
- parseDirectives(start) {
- const {
- src
- } = this.context;
- this.directives = [];
- let atLineStart = true;
- let hasDirectives = false;
- let offset = start;
-
- while (!_Node.default.atDocumentBoundary(src, offset, _constants.Char.DIRECTIVES_END)) {
- offset = Document.startCommentOrEndBlankLine(src, offset);
-
- switch (src[offset]) {
- case '\n':
- if (atLineStart) {
- const blankLine = new _BlankLine.default();
- offset = blankLine.parse({
- src
- }, offset);
-
- if (offset < src.length) {
- this.directives.push(blankLine);
- }
- } else {
- offset += 1;
- atLineStart = true;
- }
-
- break;
-
- case '#':
- {
- const comment = new _Comment.default();
- offset = comment.parse({
- src
- }, offset);
- this.directives.push(comment);
- atLineStart = false;
- }
- break;
-
- case '%':
- {
- const directive = new _Directive.default();
- offset = directive.parse({
- parent: this,
- src
- }, offset);
- this.directives.push(directive);
- hasDirectives = true;
- atLineStart = false;
- }
- break;
-
- default:
- if (hasDirectives) {
- this.error = new _errors.YAMLSemanticError(this, 'Missing directives-end indicator line');
- } else if (this.directives.length > 0) {
- this.contents = this.directives;
- this.directives = [];
- }
-
- return offset;
- }
- }
-
- if (src[offset]) {
- this.directivesEndMarker = new _Range.default(offset, offset + 3);
- return offset + 3;
- }
-
- if (hasDirectives) {
- this.error = new _errors.YAMLSemanticError(this, 'Missing directives-end indicator line');
- } else if (this.directives.length > 0) {
- this.contents = this.directives;
- this.directives = [];
- }
-
- return offset;
- }
-
- parseContents(start) {
- const {
- parseNode,
- src
- } = this.context;
- if (!this.contents) this.contents = [];
- let lineStart = start;
-
- while (src[lineStart - 1] === '-') lineStart -= 1;
-
- let offset = _Node.default.endOfWhiteSpace(src, start);
-
- let atLineStart = lineStart === start;
- this.valueRange = new _Range.default(offset);
-
- while (!_Node.default.atDocumentBoundary(src, offset, _constants.Char.DOCUMENT_END)) {
- switch (src[offset]) {
- case '\n':
- if (atLineStart) {
- const blankLine = new _BlankLine.default();
- offset = blankLine.parse({
- src
- }, offset);
-
- if (offset < src.length) {
- this.contents.push(blankLine);
- }
- } else {
- offset += 1;
- atLineStart = true;
- }
-
- lineStart = offset;
- break;
-
- case '#':
- {
- const comment = new _Comment.default();
- offset = comment.parse({
- src
- }, offset);
- this.contents.push(comment);
- atLineStart = false;
- }
- break;
-
- default:
- {
- const iEnd = _Node.default.endOfIndent(src, offset);
-
- const context = {
- atLineStart,
- indent: -1,
- inFlow: false,
- inCollection: false,
- lineStart,
- parent: this
- };
- const node = parseNode(context, iEnd);
- if (!node) return this.valueRange.end = iEnd; // at next document start
-
- this.contents.push(node);
- offset = node.range.end;
- atLineStart = false;
- const ec = (0, _Collection.grabCollectionEndComments)(node);
- if (ec) Array.prototype.push.apply(this.contents, ec);
- }
- }
-
- offset = Document.startCommentOrEndBlankLine(src, offset);
- }
-
- this.valueRange.end = offset;
-
- if (src[offset]) {
- this.documentEndMarker = new _Range.default(offset, offset + 3);
- offset += 3;
-
- if (src[offset]) {
- offset = _Node.default.endOfWhiteSpace(src, offset);
-
- if (src[offset] === '#') {
- const comment = new _Comment.default();
- offset = comment.parse({
- src
- }, offset);
- this.contents.push(comment);
- }
-
- switch (src[offset]) {
- case '\n':
- offset += 1;
- break;
-
- case undefined:
- break;
-
- default:
- this.error = new _errors.YAMLSyntaxError(this, 'Document end marker line cannot have a non-comment suffix');
- }
- }
- }
-
- return offset;
- }
- /**
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this
- */
-
-
- parse(context, start) {
- context.root = this;
- this.context = context;
- const {
- src
- } = context;
- let offset = src.charCodeAt(start) === 0xfeff ? start + 1 : start; // skip BOM
-
- offset = this.parseDirectives(offset);
- offset = this.parseContents(offset);
- return offset;
- }
-
- setOrigRanges(cr, offset) {
- offset = super.setOrigRanges(cr, offset);
- this.directives.forEach(node => {
- offset = node.setOrigRanges(cr, offset);
- });
- if (this.directivesEndMarker) offset = this.directivesEndMarker.setOrigRange(cr, offset);
- this.contents.forEach(node => {
- offset = node.setOrigRanges(cr, offset);
- });
- if (this.documentEndMarker) offset = this.documentEndMarker.setOrigRange(cr, offset);
- return offset;
- }
-
- toString() {
- const {
- contents,
- directives,
- value
- } = this;
- if (value != null) return value;
- let str = directives.join('');
-
- if (contents.length > 0) {
- if (directives.length > 0 || contents[0].type === _constants.Type.COMMENT) str += '---\n';
- str += contents.join('');
- }
-
- if (str[str.length - 1] !== '\n') str += '\n';
- return str;
- }
-
-}
-
-exports.default = Document; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/FlowCollection.js b/assets/node_modules/yaml/dist/cst/FlowCollection.js
deleted file mode 100644
index 89c7217..0000000
--- a/assets/node_modules/yaml/dist/cst/FlowCollection.js
+++ /dev/null
@@ -1,218 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _constants = require("../constants");
-
-var _errors = require("../errors");
-
-var _BlankLine = _interopRequireDefault(require("./BlankLine"));
-
-var _Comment = _interopRequireDefault(require("./Comment"));
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class FlowCollection extends _Node.default {
- constructor(type, props) {
- super(type, props);
- this.items = null;
- }
-
- prevNodeIsJsonLike(idx = this.items.length) {
- const node = this.items[idx - 1];
- return !!node && (node.jsonLike || node.type === _constants.Type.COMMENT && this.nodeIsJsonLike(idx - 1));
- }
- /**
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this
- */
-
-
- parse(context, start) {
- this.context = context;
- const {
- parseNode,
- src
- } = context;
- let {
- indent,
- lineStart
- } = context;
- let char = src[start]; // { or [
-
- this.items = [{
- char,
- offset: start
- }];
-
- let offset = _Node.default.endOfWhiteSpace(src, start + 1);
-
- char = src[offset];
-
- while (char && char !== ']' && char !== '}') {
- switch (char) {
- case '\n':
- {
- lineStart = offset + 1;
-
- const wsEnd = _Node.default.endOfWhiteSpace(src, lineStart);
-
- if (src[wsEnd] === '\n') {
- const blankLine = new _BlankLine.default();
- lineStart = blankLine.parse({
- src
- }, lineStart);
- this.items.push(blankLine);
- }
-
- offset = _Node.default.endOfIndent(src, lineStart);
-
- if (offset <= lineStart + indent) {
- char = src[offset];
-
- if (offset < lineStart + indent || char !== ']' && char !== '}') {
- const msg = 'Insufficient indentation in flow collection';
- this.error = new _errors.YAMLSemanticError(this, msg);
- }
- }
- }
- break;
-
- case ',':
- {
- this.items.push({
- char,
- offset
- });
- offset += 1;
- }
- break;
-
- case '#':
- {
- const comment = new _Comment.default();
- offset = comment.parse({
- src
- }, offset);
- this.items.push(comment);
- }
- break;
-
- case '?':
- case ':':
- {
- const next = src[offset + 1];
-
- if (next === '\n' || next === '\t' || next === ' ' || next === ',' || // in-flow : after JSON-like key does not need to be followed by whitespace
- char === ':' && this.prevNodeIsJsonLike()) {
- this.items.push({
- char,
- offset
- });
- offset += 1;
- break;
- }
- }
- // fallthrough
-
- default:
- {
- const node = parseNode({
- atLineStart: false,
- inCollection: false,
- inFlow: true,
- indent: -1,
- lineStart,
- parent: this
- }, offset);
-
- if (!node) {
- // at next document start
- this.valueRange = new _Range.default(start, offset);
- return offset;
- }
-
- this.items.push(node);
- offset = _Node.default.normalizeOffset(src, node.range.end);
- }
- }
-
- offset = _Node.default.endOfWhiteSpace(src, offset);
- char = src[offset];
- }
-
- this.valueRange = new _Range.default(start, offset + 1);
-
- if (char) {
- this.items.push({
- char,
- offset
- });
- offset = _Node.default.endOfWhiteSpace(src, offset + 1);
- offset = this.parseComment(offset);
- }
-
- return offset;
- }
-
- setOrigRanges(cr, offset) {
- offset = super.setOrigRanges(cr, offset);
- this.items.forEach(node => {
- if (node instanceof _Node.default) {
- offset = node.setOrigRanges(cr, offset);
- } else if (cr.length === 0) {
- node.origOffset = node.offset;
- } else {
- let i = offset;
-
- while (i < cr.length) {
- if (cr[i] > node.offset) break;else ++i;
- }
-
- node.origOffset = node.offset + i;
- offset = i;
- }
- });
- return offset;
- }
-
- toString() {
- const {
- context: {
- src
- },
- items,
- range,
- value
- } = this;
- if (value != null) return value;
- const nodes = items.filter(item => item instanceof _Node.default);
- let str = '';
- let prevEnd = range.start;
- nodes.forEach(node => {
- const prefix = src.slice(prevEnd, node.range.start);
- prevEnd = node.range.end;
- str += prefix + String(node);
-
- if (str[str.length - 1] === '\n' && src[prevEnd - 1] !== '\n' && src[prevEnd] === '\n') {
- // Comment range does not include the terminal newline, but its
- // stringified value does. Without this fix, newlines at comment ends
- // get duplicated.
- prevEnd += 1;
- }
- });
- str += src.slice(prevEnd, range.end);
- return _Node.default.addStringTerminator(src, range.end, str);
- }
-
-}
-
-exports.default = FlowCollection; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/Node.js b/assets/node_modules/yaml/dist/cst/Node.js
deleted file mode 100644
index 118032d..0000000
--- a/assets/node_modules/yaml/dist/cst/Node.js
+++ /dev/null
@@ -1,370 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _constants = require("../constants");
-
-var _sourceUtils = require("./source-utils");
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/** Root class of all nodes */
-class Node {
- static addStringTerminator(src, offset, str) {
- if (str[str.length - 1] === '\n') return str;
- const next = Node.endOfWhiteSpace(src, offset);
- return next >= src.length || src[next] === '\n' ? str + '\n' : str;
- } // ^(---|...)
-
-
- static atDocumentBoundary(src, offset, sep) {
- const ch0 = src[offset];
- if (!ch0) return true;
- const prev = src[offset - 1];
- if (prev && prev !== '\n') return false;
-
- if (sep) {
- if (ch0 !== sep) return false;
- } else {
- if (ch0 !== _constants.Char.DIRECTIVES_END && ch0 !== _constants.Char.DOCUMENT_END) return false;
- }
-
- const ch1 = src[offset + 1];
- const ch2 = src[offset + 2];
- if (ch1 !== ch0 || ch2 !== ch0) return false;
- const ch3 = src[offset + 3];
- return !ch3 || ch3 === '\n' || ch3 === '\t' || ch3 === ' ';
- }
-
- static endOfIdentifier(src, offset) {
- let ch = src[offset];
- const isVerbatim = ch === '<';
- const notOk = isVerbatim ? ['\n', '\t', ' ', '>'] : ['\n', '\t', ' ', '[', ']', '{', '}', ','];
-
- while (ch && notOk.indexOf(ch) === -1) ch = src[offset += 1];
-
- if (isVerbatim && ch === '>') offset += 1;
- return offset;
- }
-
- static endOfIndent(src, offset) {
- let ch = src[offset];
-
- while (ch === ' ') ch = src[offset += 1];
-
- return offset;
- }
-
- static endOfLine(src, offset) {
- let ch = src[offset];
-
- while (ch && ch !== '\n') ch = src[offset += 1];
-
- return offset;
- }
-
- static endOfWhiteSpace(src, offset) {
- let ch = src[offset];
-
- while (ch === '\t' || ch === ' ') ch = src[offset += 1];
-
- return offset;
- }
-
- static startOfLine(src, offset) {
- let ch = src[offset - 1];
- if (ch === '\n') return offset;
-
- while (ch && ch !== '\n') ch = src[offset -= 1];
-
- return offset + 1;
- }
- /**
- * End of indentation, or null if the line's indent level is not more
- * than `indent`
- *
- * @param {string} src
- * @param {number} indent
- * @param {number} lineStart
- * @returns {?number}
- */
-
-
- static endOfBlockIndent(src, indent, lineStart) {
- const inEnd = Node.endOfIndent(src, lineStart);
-
- if (inEnd > lineStart + indent) {
- return inEnd;
- } else {
- const wsEnd = Node.endOfWhiteSpace(src, inEnd);
- const ch = src[wsEnd];
- if (!ch || ch === '\n') return wsEnd;
- }
-
- return null;
- }
-
- static atBlank(src, offset, endAsBlank) {
- const ch = src[offset];
- return ch === '\n' || ch === '\t' || ch === ' ' || endAsBlank && !ch;
- }
-
- static atCollectionItem(src, offset) {
- const ch = src[offset];
- return (ch === '?' || ch === ':' || ch === '-') && Node.atBlank(src, offset + 1, true);
- }
-
- static nextNodeIsIndented(ch, indentDiff, indicatorAsIndent) {
- if (!ch || indentDiff < 0) return false;
- if (indentDiff > 0) return true;
- return indicatorAsIndent && ch === '-';
- } // should be at line or string end, or at next non-whitespace char
-
-
- static normalizeOffset(src, offset) {
- const ch = src[offset];
- return !ch ? offset : ch !== '\n' && src[offset - 1] === '\n' ? offset - 1 : Node.endOfWhiteSpace(src, offset);
- } // fold single newline into space, multiple newlines to N - 1 newlines
- // presumes src[offset] === '\n'
-
-
- static foldNewline(src, offset, indent) {
- let inCount = 0;
- let error = false;
- let fold = '';
- let ch = src[offset + 1];
-
- while (ch === ' ' || ch === '\t' || ch === '\n') {
- switch (ch) {
- case '\n':
- inCount = 0;
- offset += 1;
- fold += '\n';
- break;
-
- case '\t':
- if (inCount <= indent) error = true;
- offset = Node.endOfWhiteSpace(src, offset + 2) - 1;
- break;
-
- case ' ':
- inCount += 1;
- offset += 1;
- break;
- }
-
- ch = src[offset + 1];
- }
-
- if (!fold) fold = ' ';
- if (ch && inCount <= indent) error = true;
- return {
- fold,
- offset,
- error
- };
- }
-
- constructor(type, props, context) {
- Object.defineProperty(this, 'context', {
- value: context || null,
- writable: true
- });
- this.error = null;
- this.range = null;
- this.valueRange = null;
- this.props = props || [];
- this.type = type;
- this.value = null;
- }
-
- getPropValue(idx, key, skipKey) {
- if (!this.context) return null;
- const {
- src
- } = this.context;
- const prop = this.props[idx];
- return prop && src[prop.start] === key ? src.slice(prop.start + (skipKey ? 1 : 0), prop.end) : null;
- }
-
- get anchor() {
- for (let i = 0; i < this.props.length; ++i) {
- const anchor = this.getPropValue(i, _constants.Char.ANCHOR, true);
- if (anchor != null) return anchor;
- }
-
- return null;
- }
-
- get comment() {
- const comments = [];
-
- for (let i = 0; i < this.props.length; ++i) {
- const comment = this.getPropValue(i, _constants.Char.COMMENT, true);
- if (comment != null) comments.push(comment);
- }
-
- return comments.length > 0 ? comments.join('\n') : null;
- }
-
- commentHasRequiredWhitespace(start) {
- const {
- src
- } = this.context;
- if (this.header && start === this.header.end) return false;
- if (!this.valueRange) return false;
- const {
- end
- } = this.valueRange;
- return start !== end || Node.atBlank(src, end - 1);
- }
-
- get hasComment() {
- if (this.context) {
- const {
- src
- } = this.context;
-
- for (let i = 0; i < this.props.length; ++i) {
- if (src[this.props[i].start] === _constants.Char.COMMENT) return true;
- }
- }
-
- return false;
- }
-
- get hasProps() {
- if (this.context) {
- const {
- src
- } = this.context;
-
- for (let i = 0; i < this.props.length; ++i) {
- if (src[this.props[i].start] !== _constants.Char.COMMENT) return true;
- }
- }
-
- return false;
- }
-
- get includesTrailingLines() {
- return false;
- }
-
- get jsonLike() {
- const jsonLikeTypes = [_constants.Type.FLOW_MAP, _constants.Type.FLOW_SEQ, _constants.Type.QUOTE_DOUBLE, _constants.Type.QUOTE_SINGLE];
- return jsonLikeTypes.indexOf(this.type) !== -1;
- }
-
- get rangeAsLinePos() {
- if (!this.range || !this.context) return undefined;
- const start = (0, _sourceUtils.getLinePos)(this.range.start, this.context.root);
- if (!start) return undefined;
- const end = (0, _sourceUtils.getLinePos)(this.range.end, this.context.root);
- return {
- start,
- end
- };
- }
-
- get rawValue() {
- if (!this.valueRange || !this.context) return null;
- const {
- start,
- end
- } = this.valueRange;
- return this.context.src.slice(start, end);
- }
-
- get tag() {
- for (let i = 0; i < this.props.length; ++i) {
- const tag = this.getPropValue(i, _constants.Char.TAG, false);
-
- if (tag != null) {
- if (tag[1] === '<') {
- return {
- verbatim: tag.slice(2, -1)
- };
- } else {
- // eslint-disable-next-line no-unused-vars
- const [_, handle, suffix] = tag.match(/^(.*!)([^!]*)$/);
- return {
- handle,
- suffix
- };
- }
- }
- }
-
- return null;
- }
-
- get valueRangeContainsNewline() {
- if (!this.valueRange || !this.context) return false;
- const {
- start,
- end
- } = this.valueRange;
- const {
- src
- } = this.context;
-
- for (let i = start; i < end; ++i) {
- if (src[i] === '\n') return true;
- }
-
- return false;
- }
-
- parseComment(start) {
- const {
- src
- } = this.context;
-
- if (src[start] === _constants.Char.COMMENT) {
- const end = Node.endOfLine(src, start + 1);
- const commentRange = new _Range.default(start, end);
- this.props.push(commentRange);
- return end;
- }
-
- return start;
- }
- /**
- * Populates the `origStart` and `origEnd` values of all ranges for this
- * node. Extended by child classes to handle descendant nodes.
- *
- * @param {number[]} cr - Positions of dropped CR characters
- * @param {number} offset - Starting index of `cr` from the last call
- * @returns {number} - The next offset, matching the one found for `origStart`
- */
-
-
- setOrigRanges(cr, offset) {
- if (this.range) offset = this.range.setOrigRange(cr, offset);
- if (this.valueRange) this.valueRange.setOrigRange(cr, offset);
- this.props.forEach(prop => prop.setOrigRange(cr, offset));
- return offset;
- }
-
- toString() {
- const {
- context: {
- src
- },
- range,
- value
- } = this;
- if (value != null) return value;
- const str = src.slice(range.start, range.end);
- return Node.addStringTerminator(src, range.end, str);
- }
-
-}
-
-exports.default = Node; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/ParseContext.js b/assets/node_modules/yaml/dist/cst/ParseContext.js
deleted file mode 100644
index bc2d399..0000000
--- a/assets/node_modules/yaml/dist/cst/ParseContext.js
+++ /dev/null
@@ -1,272 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _constants = require("../constants");
-
-var _errors = require("../errors");
-
-var _Alias = _interopRequireDefault(require("./Alias"));
-
-var _BlockValue = _interopRequireDefault(require("./BlockValue"));
-
-var _Collection = _interopRequireDefault(require("./Collection"));
-
-var _CollectionItem = _interopRequireDefault(require("./CollectionItem"));
-
-var _FlowCollection = _interopRequireDefault(require("./FlowCollection"));
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _PlainValue = _interopRequireDefault(require("./PlainValue"));
-
-var _QuoteDouble = _interopRequireDefault(require("./QuoteDouble"));
-
-var _QuoteSingle = _interopRequireDefault(require("./QuoteSingle"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-/**
- * @param {boolean} atLineStart - Node starts at beginning of line
- * @param {boolean} inFlow - true if currently in a flow context
- * @param {boolean} inCollection - true if currently in a collection context
- * @param {number} indent - Current level of indentation
- * @param {number} lineStart - Start of the current line
- * @param {Node} parent - The parent of the node
- * @param {string} src - Source of the YAML document
- */
-class ParseContext {
- static parseType(src, offset, inFlow) {
- switch (src[offset]) {
- case '*':
- return _constants.Type.ALIAS;
-
- case '>':
- return _constants.Type.BLOCK_FOLDED;
-
- case '|':
- return _constants.Type.BLOCK_LITERAL;
-
- case '{':
- return _constants.Type.FLOW_MAP;
-
- case '[':
- return _constants.Type.FLOW_SEQ;
-
- case '?':
- return !inFlow && _Node.default.atBlank(src, offset + 1, true) ? _constants.Type.MAP_KEY : _constants.Type.PLAIN;
-
- case ':':
- return !inFlow && _Node.default.atBlank(src, offset + 1, true) ? _constants.Type.MAP_VALUE : _constants.Type.PLAIN;
-
- case '-':
- return !inFlow && _Node.default.atBlank(src, offset + 1, true) ? _constants.Type.SEQ_ITEM : _constants.Type.PLAIN;
-
- case '"':
- return _constants.Type.QUOTE_DOUBLE;
-
- case "'":
- return _constants.Type.QUOTE_SINGLE;
-
- default:
- return _constants.Type.PLAIN;
- }
- }
-
- constructor(orig = {}, {
- atLineStart,
- inCollection,
- inFlow,
- indent,
- lineStart,
- parent
- } = {}) {
- _defineProperty(this, "parseNode", (overlay, start) => {
- if (_Node.default.atDocumentBoundary(this.src, start)) return null;
- const context = new ParseContext(this, overlay);
- const {
- props,
- type,
- valueStart
- } = context.parseProps(start);
- let node;
-
- switch (type) {
- case _constants.Type.ALIAS:
- node = new _Alias.default(type, props);
- break;
-
- case _constants.Type.BLOCK_FOLDED:
- case _constants.Type.BLOCK_LITERAL:
- node = new _BlockValue.default(type, props);
- break;
-
- case _constants.Type.FLOW_MAP:
- case _constants.Type.FLOW_SEQ:
- node = new _FlowCollection.default(type, props);
- break;
-
- case _constants.Type.MAP_KEY:
- case _constants.Type.MAP_VALUE:
- case _constants.Type.SEQ_ITEM:
- node = new _CollectionItem.default(type, props);
- break;
-
- case _constants.Type.COMMENT:
- case _constants.Type.PLAIN:
- node = new _PlainValue.default(type, props);
- break;
-
- case _constants.Type.QUOTE_DOUBLE:
- node = new _QuoteDouble.default(type, props);
- break;
-
- case _constants.Type.QUOTE_SINGLE:
- node = new _QuoteSingle.default(type, props);
- break;
-
- default:
- node.error = new _errors.YAMLSyntaxError(node, `Unknown node type: ${JSON.stringify(type)}`);
- node.range = new _Range.default(start, start + 1);
- return node;
- }
-
- let offset = node.parse(context, valueStart);
- node.range = new _Range.default(start, offset);
-
- if (offset <= start) {
- node.error = new Error(`Node#parse consumed no characters`);
- node.error.parseEnd = offset;
- node.error.source = node;
- node.range.end = start + 1;
- }
-
- if (context.nodeStartsCollection(node)) {
- if (!node.error && !context.atLineStart && context.parent.type === _constants.Type.DOCUMENT) {
- node.error = new _errors.YAMLSyntaxError(node, 'Block collection must not have preceding content here (e.g. directives-end indicator)');
- }
-
- const collection = new _Collection.default(node);
- offset = collection.parse(new ParseContext(context), offset);
- collection.range = new _Range.default(start, offset);
- return collection;
- }
-
- return node;
- });
-
- this.atLineStart = atLineStart != null ? atLineStart : orig.atLineStart || false;
- this.inCollection = inCollection != null ? inCollection : orig.inCollection || false;
- this.inFlow = inFlow != null ? inFlow : orig.inFlow || false;
- this.indent = indent != null ? indent : orig.indent;
- this.lineStart = lineStart != null ? lineStart : orig.lineStart;
- this.parent = parent != null ? parent : orig.parent || {};
- this.root = orig.root;
- this.src = orig.src;
- } // for logging
-
-
- get pretty() {
- const obj = {
- start: `${this.lineStart} + ${this.indent}`,
- in: [],
- parent: this.parent.type
- };
- if (!this.atLineStart) obj.start += ' + N';
- if (this.inCollection) obj.in.push('collection');
- if (this.inFlow) obj.in.push('flow');
- return obj;
- }
-
- nodeStartsCollection(node) {
- const {
- inCollection,
- inFlow,
- src
- } = this;
- if (inCollection || inFlow) return false;
- if (node instanceof _CollectionItem.default) return true; // check for implicit key
-
- let offset = node.range.end;
- if (src[offset] === '\n' || src[offset - 1] === '\n') return false;
- offset = _Node.default.endOfWhiteSpace(src, offset);
- return src[offset] === ':';
- } // Anchor and tag are before type, which determines the node implementation
- // class; hence this intermediate step.
-
-
- parseProps(offset) {
- const {
- inFlow,
- parent,
- src
- } = this;
- const props = [];
- let lineHasProps = false;
- offset = _Node.default.endOfWhiteSpace(src, offset);
- let ch = src[offset];
-
- while (ch === _constants.Char.ANCHOR || ch === _constants.Char.COMMENT || ch === _constants.Char.TAG || ch === '\n') {
- if (ch === '\n') {
- const lineStart = offset + 1;
-
- const inEnd = _Node.default.endOfIndent(src, lineStart);
-
- const indentDiff = inEnd - (lineStart + this.indent);
- const noIndicatorAsIndent = parent.type === _constants.Type.SEQ_ITEM && parent.context.atLineStart;
- if (!_Node.default.nextNodeIsIndented(src[inEnd], indentDiff, !noIndicatorAsIndent)) break;
- this.atLineStart = true;
- this.lineStart = lineStart;
- lineHasProps = false;
- offset = inEnd;
- } else if (ch === _constants.Char.COMMENT) {
- const end = _Node.default.endOfLine(src, offset + 1);
-
- props.push(new _Range.default(offset, end));
- offset = end;
- } else {
- let end = _Node.default.endOfIdentifier(src, offset + 1);
-
- if (ch === _constants.Char.TAG && src[end] === ',' && /^[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+,\d\d\d\d(-\d\d){0,2}\/\S/.test(src.slice(offset + 1, end + 13))) {
- // Let's presume we're dealing with a YAML 1.0 domain tag here, rather
- // than an empty but 'foo.bar' private-tagged node in a flow collection
- // followed without whitespace by a plain string starting with a year
- // or date divided by something.
- end = _Node.default.endOfIdentifier(src, end + 5);
- }
-
- props.push(new _Range.default(offset, end));
- lineHasProps = true;
- offset = _Node.default.endOfWhiteSpace(src, end);
- }
-
- ch = src[offset];
- } // '- &a : b' has an anchor on an empty node
-
-
- if (lineHasProps && ch === ':' && _Node.default.atBlank(src, offset + 1, true)) offset -= 1;
- const type = ParseContext.parseType(src, offset, inFlow);
- return {
- props,
- type,
- valueStart: offset
- };
- }
- /**
- * Parses a node from the source
- * @param {ParseContext} overlay
- * @param {number} start - Index of first non-whitespace character for the node
- * @returns {?Node} - null if at a document boundary
- */
-
-
-}
-
-exports.default = ParseContext; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/PlainValue.js b/assets/node_modules/yaml/dist/cst/PlainValue.js
deleted file mode 100644
index 8d368a5..0000000
--- a/assets/node_modules/yaml/dist/cst/PlainValue.js
+++ /dev/null
@@ -1,161 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class PlainValue extends _Node.default {
- static endOfLine(src, start, inFlow) {
- let ch = src[start];
- let offset = start;
-
- while (ch && ch !== '\n') {
- if (inFlow && (ch === '[' || ch === ']' || ch === '{' || ch === '}' || ch === ',')) break;
- const next = src[offset + 1];
- if (ch === ':' && (!next || next === '\n' || next === '\t' || next === ' ' || inFlow && next === ',')) break;
- if ((ch === ' ' || ch === '\t') && next === '#') break;
- offset += 1;
- ch = next;
- }
-
- return offset;
- }
-
- get strValue() {
- if (!this.valueRange || !this.context) return null;
- let {
- start,
- end
- } = this.valueRange;
- const {
- src
- } = this.context;
- let ch = src[end - 1];
-
- while (start < end && (ch === '\n' || ch === '\t' || ch === ' ')) ch = src[--end - 1];
-
- ch = src[start];
-
- while (start < end && (ch === '\n' || ch === '\t' || ch === ' ')) ch = src[++start];
-
- let str = '';
-
- for (let i = start; i < end; ++i) {
- const ch = src[i];
-
- if (ch === '\n') {
- const {
- fold,
- offset
- } = _Node.default.foldNewline(src, i, -1);
-
- str += fold;
- i = offset;
- } else if (ch === ' ' || ch === '\t') {
- // trim trailing whitespace
- const wsStart = i;
- let next = src[i + 1];
-
- while (i < end && (next === ' ' || next === '\t')) {
- i += 1;
- next = src[i + 1];
- }
-
- if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch;
- } else {
- str += ch;
- }
- }
-
- return str;
- }
-
- parseBlockValue(start) {
- const {
- indent,
- inFlow,
- src
- } = this.context;
- let offset = start;
- let valueEnd = start;
-
- for (let ch = src[offset]; ch === '\n'; ch = src[offset]) {
- if (_Node.default.atDocumentBoundary(src, offset + 1)) break;
-
- const end = _Node.default.endOfBlockIndent(src, indent, offset + 1);
-
- if (end === null || src[end] === '#') break;
-
- if (src[end] === '\n') {
- offset = end;
- } else {
- valueEnd = PlainValue.endOfLine(src, end, inFlow);
- offset = valueEnd;
- }
- }
-
- if (this.valueRange.isEmpty()) this.valueRange.start = start;
- this.valueRange.end = valueEnd;
- return valueEnd;
- }
- /**
- * Parses a plain value from the source
- *
- * Accepted forms are:
- * ```
- * #comment
- *
- * first line
- *
- * first line #comment
- *
- * first line
- * block
- * lines
- *
- * #comment
- * block
- * lines
- * ```
- * where block lines are empty or have an indent level greater than `indent`.
- *
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this scalar, may be `\n`
- */
-
-
- parse(context, start) {
- this.context = context;
- const {
- inFlow,
- src
- } = context;
- let offset = start;
- const ch = src[offset];
-
- if (ch && ch !== '#' && ch !== '\n') {
- offset = PlainValue.endOfLine(src, start, inFlow);
- }
-
- this.valueRange = new _Range.default(start, offset);
- offset = _Node.default.endOfWhiteSpace(src, offset);
- offset = this.parseComment(offset);
-
- if (!this.hasComment || this.valueRange.isEmpty()) {
- offset = this.parseBlockValue(offset);
- }
-
- return offset;
- }
-
-}
-
-exports.default = PlainValue; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/QuoteDouble.js b/assets/node_modules/yaml/dist/cst/QuoteDouble.js
deleted file mode 100644
index 9a5bfd3..0000000
--- a/assets/node_modules/yaml/dist/cst/QuoteDouble.js
+++ /dev/null
@@ -1,237 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _errors = require("../errors");
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class QuoteDouble extends _Node.default {
- static endOfQuote(src, offset) {
- let ch = src[offset];
-
- while (ch && ch !== '"') {
- offset += ch === '\\' ? 2 : 1;
- ch = src[offset];
- }
-
- return offset + 1;
- }
- /**
- * @returns {string | { str: string, errors: YAMLSyntaxError[] }}
- */
-
-
- get strValue() {
- if (!this.valueRange || !this.context) return null;
- const errors = [];
- const {
- start,
- end
- } = this.valueRange;
- const {
- indent,
- src
- } = this.context;
- if (src[end - 1] !== '"') errors.push(new _errors.YAMLSyntaxError(this, 'Missing closing "quote')); // Using String#replace is too painful with escaped newlines preceded by
- // escaped backslashes; also, this should be faster.
-
- let str = '';
-
- for (let i = start + 1; i < end - 1; ++i) {
- const ch = src[i];
-
- if (ch === '\n') {
- if (_Node.default.atDocumentBoundary(src, i + 1)) errors.push(new _errors.YAMLSemanticError(this, 'Document boundary indicators are not allowed within string values'));
-
- const {
- fold,
- offset,
- error
- } = _Node.default.foldNewline(src, i, indent);
-
- str += fold;
- i = offset;
- if (error) errors.push(new _errors.YAMLSemanticError(this, 'Multi-line double-quoted string needs to be sufficiently indented'));
- } else if (ch === '\\') {
- i += 1;
-
- switch (src[i]) {
- case '0':
- str += '\0';
- break;
- // null character
-
- case 'a':
- str += '\x07';
- break;
- // bell character
-
- case 'b':
- str += '\b';
- break;
- // backspace
-
- case 'e':
- str += '\x1b';
- break;
- // escape character
-
- case 'f':
- str += '\f';
- break;
- // form feed
-
- case 'n':
- str += '\n';
- break;
- // line feed
-
- case 'r':
- str += '\r';
- break;
- // carriage return
-
- case 't':
- str += '\t';
- break;
- // horizontal tab
-
- case 'v':
- str += '\v';
- break;
- // vertical tab
-
- case 'N':
- str += '\u0085';
- break;
- // Unicode next line
-
- case '_':
- str += '\u00a0';
- break;
- // Unicode non-breaking space
-
- case 'L':
- str += '\u2028';
- break;
- // Unicode line separator
-
- case 'P':
- str += '\u2029';
- break;
- // Unicode paragraph separator
-
- case ' ':
- str += ' ';
- break;
-
- case '"':
- str += '"';
- break;
-
- case '/':
- str += '/';
- break;
-
- case '\\':
- str += '\\';
- break;
-
- case '\t':
- str += '\t';
- break;
-
- case 'x':
- str += this.parseCharCode(i + 1, 2, errors);
- i += 2;
- break;
-
- case 'u':
- str += this.parseCharCode(i + 1, 4, errors);
- i += 4;
- break;
-
- case 'U':
- str += this.parseCharCode(i + 1, 8, errors);
- i += 8;
- break;
-
- case '\n':
- // skip escaped newlines, but still trim the following line
- while (src[i + 1] === ' ' || src[i + 1] === '\t') i += 1;
-
- break;
-
- default:
- errors.push(new _errors.YAMLSyntaxError(this, `Invalid escape sequence ${src.substr(i - 1, 2)}`));
- str += '\\' + src[i];
- }
- } else if (ch === ' ' || ch === '\t') {
- // trim trailing whitespace
- const wsStart = i;
- let next = src[i + 1];
-
- while (next === ' ' || next === '\t') {
- i += 1;
- next = src[i + 1];
- }
-
- if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch;
- } else {
- str += ch;
- }
- }
-
- return errors.length > 0 ? {
- errors,
- str
- } : str;
- }
-
- parseCharCode(offset, length, errors) {
- const {
- src
- } = this.context;
- const cc = src.substr(offset, length);
- const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);
- const code = ok ? parseInt(cc, 16) : NaN;
-
- if (isNaN(code)) {
- errors.push(new _errors.YAMLSyntaxError(this, `Invalid escape sequence ${src.substr(offset - 2, length + 2)}`));
- return src.substr(offset - 2, length + 2);
- }
-
- return String.fromCodePoint(code);
- }
- /**
- * Parses a "double quoted" value from the source
- *
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this scalar
- */
-
-
- parse(context, start) {
- this.context = context;
- const {
- src
- } = context;
- let offset = QuoteDouble.endOfQuote(src, start + 1);
- this.valueRange = new _Range.default(start, offset);
- offset = _Node.default.endOfWhiteSpace(src, offset);
- offset = this.parseComment(offset);
- return offset;
- }
-
-}
-
-exports.default = QuoteDouble; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/QuoteSingle.js b/assets/node_modules/yaml/dist/cst/QuoteSingle.js
deleted file mode 100644
index d70c738..0000000
--- a/assets/node_modules/yaml/dist/cst/QuoteSingle.js
+++ /dev/null
@@ -1,113 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _errors = require("../errors");
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Range = _interopRequireDefault(require("./Range"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class QuoteSingle extends _Node.default {
- static endOfQuote(src, offset) {
- let ch = src[offset];
-
- while (ch) {
- if (ch === "'") {
- if (src[offset + 1] !== "'") break;
- ch = src[offset += 2];
- } else {
- ch = src[offset += 1];
- }
- }
-
- return offset + 1;
- }
- /**
- * @returns {string | { str: string, errors: YAMLSyntaxError[] }}
- */
-
-
- get strValue() {
- if (!this.valueRange || !this.context) return null;
- const errors = [];
- const {
- start,
- end
- } = this.valueRange;
- const {
- indent,
- src
- } = this.context;
- if (src[end - 1] !== "'") errors.push(new _errors.YAMLSyntaxError(this, "Missing closing 'quote"));
- let str = '';
-
- for (let i = start + 1; i < end - 1; ++i) {
- const ch = src[i];
-
- if (ch === '\n') {
- if (_Node.default.atDocumentBoundary(src, i + 1)) errors.push(new _errors.YAMLSemanticError(this, 'Document boundary indicators are not allowed within string values'));
-
- const {
- fold,
- offset,
- error
- } = _Node.default.foldNewline(src, i, indent);
-
- str += fold;
- i = offset;
- if (error) errors.push(new _errors.YAMLSemanticError(this, 'Multi-line single-quoted string needs to be sufficiently indented'));
- } else if (ch === "'") {
- str += ch;
- i += 1;
- if (src[i] !== "'") errors.push(new _errors.YAMLSyntaxError(this, 'Unescaped single quote? This should not happen.'));
- } else if (ch === ' ' || ch === '\t') {
- // trim trailing whitespace
- const wsStart = i;
- let next = src[i + 1];
-
- while (next === ' ' || next === '\t') {
- i += 1;
- next = src[i + 1];
- }
-
- if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch;
- } else {
- str += ch;
- }
- }
-
- return errors.length > 0 ? {
- errors,
- str
- } : str;
- }
- /**
- * Parses a 'single quoted' value from the source
- *
- * @param {ParseContext} context
- * @param {number} start - Index of first character
- * @returns {number} - Index of the character after this scalar
- */
-
-
- parse(context, start) {
- this.context = context;
- const {
- src
- } = context;
- let offset = QuoteSingle.endOfQuote(src, start + 1);
- this.valueRange = new _Range.default(start, offset);
- offset = _Node.default.endOfWhiteSpace(src, offset);
- offset = this.parseComment(offset);
- return offset;
- }
-
-}
-
-exports.default = QuoteSingle; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/Range.js b/assets/node_modules/yaml/dist/cst/Range.js
deleted file mode 100644
index fd5fa7c..0000000
--- a/assets/node_modules/yaml/dist/cst/Range.js
+++ /dev/null
@@ -1,63 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-class Range {
- static copy(orig) {
- return new Range(orig.start, orig.end);
- }
-
- constructor(start, end) {
- this.start = start;
- this.end = end || start;
- }
-
- isEmpty() {
- return typeof this.start !== 'number' || !this.end || this.end <= this.start;
- }
- /**
- * Set `origStart` and `origEnd` to point to the original source range for
- * this node, which may differ due to dropped CR characters.
- *
- * @param {number[]} cr - Positions of dropped CR characters
- * @param {number} offset - Starting index of `cr` from the last call
- * @returns {number} - The next offset, matching the one found for `origStart`
- */
-
-
- setOrigRange(cr, offset) {
- const {
- start,
- end
- } = this;
-
- if (cr.length === 0 || end <= cr[0]) {
- this.origStart = start;
- this.origEnd = end;
- return offset;
- }
-
- let i = offset;
-
- while (i < cr.length) {
- if (cr[i] > start) break;else ++i;
- }
-
- this.origStart = start + i;
- const nextOffset = i;
-
- while (i < cr.length) {
- // if end was at \n, it should now be at \r
- if (cr[i] >= end) break;else ++i;
- }
-
- this.origEnd = end + i;
- return nextOffset;
- }
-
-}
-
-exports.default = Range; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/parse.js b/assets/node_modules/yaml/dist/cst/parse.js
deleted file mode 100644
index 1c20d05..0000000
--- a/assets/node_modules/yaml/dist/cst/parse.js
+++ /dev/null
@@ -1,55 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = parse;
-
-var _Document = _interopRequireDefault(require("./Document"));
-
-var _ParseContext = _interopRequireDefault(require("./ParseContext"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-// Published as 'yaml/parse-cst'
-function parse(src) {
- const cr = [];
-
- if (src.indexOf('\r') !== -1) {
- src = src.replace(/\r\n?/g, (match, offset) => {
- if (match.length > 1) cr.push(offset);
- return '\n';
- });
- }
-
- const documents = [];
- let offset = 0;
-
- do {
- const doc = new _Document.default();
- const context = new _ParseContext.default({
- src
- });
- offset = doc.parse(context, offset);
- documents.push(doc);
- } while (offset < src.length);
-
- documents.setOrigRanges = () => {
- if (cr.length === 0) return false;
-
- for (let i = 1; i < cr.length; ++i) cr[i] -= i;
-
- let crOffset = 0;
-
- for (let i = 0; i < documents.length; ++i) {
- crOffset = documents[i].setOrigRanges(cr, crOffset);
- }
-
- cr.splice(0, cr.length);
- return true;
- };
-
- documents.toString = () => documents.join('...\n');
-
- return documents;
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/cst/source-utils.js b/assets/node_modules/yaml/dist/cst/source-utils.js
deleted file mode 100644
index 25c21c5..0000000
--- a/assets/node_modules/yaml/dist/cst/source-utils.js
+++ /dev/null
@@ -1,178 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.getLinePos = getLinePos;
-exports.getLine = getLine;
-exports.getPrettyContext = getPrettyContext;
-
-function findLineStarts(src) {
- const ls = [0];
- let offset = src.indexOf('\n');
-
- while (offset !== -1) {
- offset += 1;
- ls.push(offset);
- offset = src.indexOf('\n', offset);
- }
-
- return ls;
-}
-
-function getSrcInfo(cst) {
- let lineStarts, src;
-
- if (typeof cst === 'string') {
- lineStarts = findLineStarts(cst);
- src = cst;
- } else {
- if (Array.isArray(cst)) cst = cst[0];
-
- if (cst && cst.context) {
- if (!cst.lineStarts) cst.lineStarts = findLineStarts(cst.context.src);
- lineStarts = cst.lineStarts;
- src = cst.context.src;
- }
- }
-
- return {
- lineStarts,
- src
- };
-}
-/**
- * @typedef {Object} LinePos - One-indexed position in the source
- * @property {number} line
- * @property {number} col
- */
-
-/**
- * Determine the line/col position matching a character offset.
- *
- * Accepts a source string or a CST document as the second parameter. With
- * the latter, starting indices for lines are cached in the document as
- * `lineStarts: number[]`.
- *
- * Returns a one-indexed `{ line, col }` location if found, or
- * `undefined` otherwise.
- *
- * @param {number} offset
- * @param {string|Document|Document[]} cst
- * @returns {?LinePos}
- */
-
-
-function getLinePos(offset, cst) {
- if (typeof offset !== 'number' || offset < 0) return null;
- const {
- lineStarts,
- src
- } = getSrcInfo(cst);
- if (!lineStarts || !src || offset > src.length) return null;
-
- for (let i = 0; i < lineStarts.length; ++i) {
- const start = lineStarts[i];
-
- if (offset < start) {
- return {
- line: i,
- col: offset - lineStarts[i - 1] + 1
- };
- }
-
- if (offset === start) return {
- line: i + 1,
- col: 1
- };
- }
-
- const line = lineStarts.length;
- return {
- line,
- col: offset - lineStarts[line - 1] + 1
- };
-}
-/**
- * Get a specified line from the source.
- *
- * Accepts a source string or a CST document as the second parameter. With
- * the latter, starting indices for lines are cached in the document as
- * `lineStarts: number[]`.
- *
- * Returns the line as a string if found, or `null` otherwise.
- *
- * @param {number} line One-indexed line number
- * @param {string|Document|Document[]} cst
- * @returns {?string}
- */
-
-
-function getLine(line, cst) {
- const {
- lineStarts,
- src
- } = getSrcInfo(cst);
- if (!lineStarts || !(line >= 1) || line > lineStarts.length) return null;
- const start = lineStarts[line - 1];
- let end = lineStarts[line]; // undefined for last line; that's ok for slice()
-
- while (end && end > start && src[end - 1] === '\n') --end;
-
- return src.slice(start, end);
-}
-/**
- * Pretty-print the starting line from the source indicated by the range `pos`
- *
- * Trims output to `maxWidth` chars while keeping the starting column visible,
- * using `…` at either end to indicate dropped characters.
- *
- * Returns a two-line string (or `null`) with `\n` as separator; the second line
- * will hold appropriately indented `^` marks indicating the column range.
- *
- * @param {Object} pos
- * @param {LinePos} pos.start
- * @param {LinePos} [pos.end]
- * @param {string|Document|Document[]*} cst
- * @param {number} [maxWidth=80]
- * @returns {?string}
- */
-
-
-function getPrettyContext({
- start,
- end
-}, cst, maxWidth = 80) {
- let src = getLine(start.line, cst);
- if (!src) return null;
- let {
- col
- } = start;
-
- if (src.length > maxWidth) {
- if (col <= maxWidth - 10) {
- src = src.substr(0, maxWidth - 1) + '…';
- } else {
- const halfWidth = Math.round(maxWidth / 2);
- if (src.length > col + halfWidth) src = src.substr(0, col + halfWidth - 1) + '…';
- col -= src.length - maxWidth;
- src = '…' + src.substr(1 - maxWidth);
- }
- }
-
- let errLen = 1;
- let errEnd = '';
-
- if (end) {
- if (end.line === start.line && col + (end.col - start.col) <= maxWidth + 1) {
- errLen = end.col - start.col;
- } else {
- errLen = Math.min(src.length + 1, maxWidth) - col;
- errEnd = '…';
- }
- }
-
- const offset = col > 1 ? ' '.repeat(col - 1) : '';
- const err = '^'.repeat(errLen);
- return `${src}\n${offset}${err}${errEnd}`;
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/errors.js b/assets/node_modules/yaml/dist/errors.js
deleted file mode 100644
index 7cecc00..0000000
--- a/assets/node_modules/yaml/dist/errors.js
+++ /dev/null
@@ -1,102 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.YAMLWarning = exports.YAMLSyntaxError = exports.YAMLSemanticError = exports.YAMLReferenceError = exports.YAMLError = void 0;
-
-var _Node = _interopRequireDefault(require("./cst/Node"));
-
-var _sourceUtils = require("./cst/source-utils");
-
-var _Range = _interopRequireDefault(require("./cst/Range"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-class YAMLError extends Error {
- constructor(name, source, message) {
- if (!message || !(source instanceof _Node.default)) throw new Error(`Invalid arguments for new ${name}`);
- super();
- this.name = name;
- this.message = message;
- this.source = source;
- }
-
- makePretty() {
- if (!this.source) return;
- this.nodeType = this.source.type;
- const cst = this.source.context && this.source.context.root;
-
- if (typeof this.offset === 'number') {
- this.range = new _Range.default(this.offset, this.offset + 1);
- const start = cst && (0, _sourceUtils.getLinePos)(this.offset, cst);
-
- if (start) {
- const end = {
- line: start.line,
- col: start.col + 1
- };
- this.linePos = {
- start,
- end
- };
- }
-
- delete this.offset;
- } else {
- this.range = this.source.range;
- this.linePos = this.source.rangeAsLinePos;
- }
-
- if (this.linePos) {
- const {
- line,
- col
- } = this.linePos.start;
- this.message += ` at line ${line}, column ${col}`;
- const ctx = cst && (0, _sourceUtils.getPrettyContext)(this.linePos, cst);
- if (ctx) this.message += `:\n\n${ctx}\n`;
- }
-
- delete this.source;
- }
-
-}
-
-exports.YAMLError = YAMLError;
-
-class YAMLReferenceError extends YAMLError {
- constructor(source, message) {
- super('YAMLReferenceError', source, message);
- }
-
-}
-
-exports.YAMLReferenceError = YAMLReferenceError;
-
-class YAMLSemanticError extends YAMLError {
- constructor(source, message) {
- super('YAMLSemanticError', source, message);
- }
-
-}
-
-exports.YAMLSemanticError = YAMLSemanticError;
-
-class YAMLSyntaxError extends YAMLError {
- constructor(source, message) {
- super('YAMLSyntaxError', source, message);
- }
-
-}
-
-exports.YAMLSyntaxError = YAMLSyntaxError;
-
-class YAMLWarning extends YAMLError {
- constructor(source, message) {
- super('YAMLWarning', source, message);
- }
-
-}
-
-exports.YAMLWarning = YAMLWarning; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/foldFlowLines.js b/assets/node_modules/yaml/dist/foldFlowLines.js
deleted file mode 100644
index b1e7003..0000000
--- a/assets/node_modules/yaml/dist/foldFlowLines.js
+++ /dev/null
@@ -1,146 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = foldFlowLines;
-exports.FOLD_QUOTED = exports.FOLD_BLOCK = exports.FOLD_FLOW = void 0;
-const FOLD_FLOW = 'flow';
-exports.FOLD_FLOW = FOLD_FLOW;
-const FOLD_BLOCK = 'block';
-exports.FOLD_BLOCK = FOLD_BLOCK;
-const FOLD_QUOTED = 'quoted'; // presumes i+1 is at the start of a line
-// returns index of last newline in more-indented block
-
-exports.FOLD_QUOTED = FOLD_QUOTED;
-
-const consumeMoreIndentedLines = (text, i) => {
- let ch = text[i + 1];
-
- while (ch === ' ' || ch === '\t') {
- do {
- ch = text[i += 1];
- } while (ch && ch !== '\n');
-
- ch = text[i + 1];
- }
-
- return i;
-};
-/**
- * Tries to keep input at up to `lineWidth` characters, splitting only on spaces
- * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are
- * terminated with `\n` and started with `indent`.
- *
- * @param {string} text
- * @param {string} indent
- * @param {string} [mode='flow'] `'block'` prevents more-indented lines
- * from being folded; `'quoted'` allows for `\` escapes, including escaped
- * newlines
- * @param {Object} options
- * @param {number} [options.indentAtStart] Accounts for leading contents on
- * the first line, defaulting to `indent.length`
- * @param {number} [options.lineWidth=80]
- * @param {number} [options.minContentWidth=20] Allow highly indented lines to
- * stretch the line width
- * @param {function} options.onFold Called once if the text is folded
- * @param {function} options.onFold Called once if any line of text exceeds
- * lineWidth characters
- */
-
-
-function foldFlowLines(text, indent, mode, {
- indentAtStart,
- lineWidth = 80,
- minContentWidth = 20,
- onFold,
- onOverflow
-}) {
- if (!lineWidth || lineWidth < 0) return text;
- const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);
- if (text.length <= endStep) return text;
- const folds = [];
- const escapedFolds = {};
- let end = lineWidth - (typeof indentAtStart === 'number' ? indentAtStart : indent.length);
- let split = undefined;
- let prev = undefined;
- let overflow = false;
- let i = -1;
-
- if (mode === FOLD_BLOCK) {
- i = consumeMoreIndentedLines(text, i);
- if (i !== -1) end = i + endStep;
- }
-
- for (let ch; ch = text[i += 1];) {
- if (mode === FOLD_QUOTED && ch === '\\') {
- switch (text[i + 1]) {
- case 'x':
- i += 3;
- break;
-
- case 'u':
- i += 5;
- break;
-
- case 'U':
- i += 9;
- break;
-
- default:
- i += 1;
- }
- }
-
- if (ch === '\n') {
- if (mode === FOLD_BLOCK) i = consumeMoreIndentedLines(text, i);
- end = i + endStep;
- split = undefined;
- } else {
- if (ch === ' ' && prev && prev !== ' ' && prev !== '\n' && prev !== '\t') {
- // space surrounded by non-space can be replaced with newline + indent
- const next = text[i + 1];
- if (next && next !== ' ' && next !== '\n' && next !== '\t') split = i;
- }
-
- if (i >= end) {
- if (split) {
- folds.push(split);
- end = split + endStep;
- split = undefined;
- } else if (mode === FOLD_QUOTED) {
- // white-space collected at end may stretch past lineWidth
- while (prev === ' ' || prev === '\t') {
- prev = ch;
- ch = text[i += 1];
- overflow = true;
- } // i - 2 accounts for not-dropped last char + newline-escaping \
-
-
- folds.push(i - 2);
- escapedFolds[i - 2] = true;
- end = i - 2 + endStep;
- split = undefined;
- } else {
- overflow = true;
- }
- }
- }
-
- prev = ch;
- }
-
- if (overflow && onOverflow) onOverflow();
- if (folds.length === 0) return text;
- if (onFold) onFold();
- let res = text.slice(0, folds[0]);
-
- for (let i = 0; i < folds.length; ++i) {
- const fold = folds[i];
- const end = folds[i + 1] || text.length;
- if (mode === FOLD_QUOTED && escapedFolds[fold]) res += `${text[fold]}\\`;
- res += `\n${indent}${text.slice(fold + 1, end)}`;
- }
-
- return res;
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/index.js b/assets/node_modules/yaml/dist/index.js
deleted file mode 100644
index 674b323..0000000
--- a/assets/node_modules/yaml/dist/index.js
+++ /dev/null
@@ -1,101 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _parse = _interopRequireDefault(require("./cst/parse"));
-
-var _Document = _interopRequireDefault(require("./Document"));
-
-var _errors = require("./errors");
-
-var _schema = _interopRequireDefault(require("./schema"));
-
-var _warnings = require("./warnings");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const defaultOptions = {
- anchorPrefix: 'a',
- customTags: null,
- keepCstNodes: false,
- keepNodeTypes: true,
- keepBlobsInJSON: true,
- mapAsMap: false,
- maxAliasCount: 100,
- prettyErrors: false,
- // TODO Set true in v2
- simpleKeys: false,
- version: '1.2'
-};
-
-function createNode(value, wrapScalars = true, tag) {
- if (tag === undefined && typeof wrapScalars === 'string') {
- tag = wrapScalars;
- wrapScalars = true;
- }
-
- const options = Object.assign({}, _Document.default.defaults[defaultOptions.version], defaultOptions);
- const schema = new _schema.default(options);
- return schema.createNode(value, wrapScalars, tag);
-}
-
-class Document extends _Document.default {
- constructor(options) {
- super(Object.assign({}, defaultOptions, options));
- }
-
-}
-
-function parseAllDocuments(src, options) {
- const stream = [];
- let prev;
-
- for (const cstDoc of (0, _parse.default)(src)) {
- const doc = new Document(options);
- doc.parse(cstDoc, prev);
- stream.push(doc);
- prev = doc;
- }
-
- return stream;
-}
-
-function parseDocument(src, options) {
- const cst = (0, _parse.default)(src);
- const doc = new Document(options).parse(cst[0]);
-
- if (cst.length > 1) {
- const errMsg = 'Source contains multiple documents; please use YAML.parseAllDocuments()';
- doc.errors.unshift(new _errors.YAMLSemanticError(cst[1], errMsg));
- }
-
- return doc;
-}
-
-function parse(src, options) {
- const doc = parseDocument(src, options);
- doc.warnings.forEach(warning => (0, _warnings.warn)(warning));
- if (doc.errors.length > 0) throw doc.errors[0];
- return doc.toJSON();
-}
-
-function stringify(value, options) {
- const doc = new Document(options);
- doc.contents = value;
- return String(doc);
-}
-
-var _default = {
- createNode,
- defaultOptions,
- Document,
- parse,
- parseAllDocuments,
- parseCST: _parse.default,
- parseDocument,
- stringify
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/listTagNames.js b/assets/node_modules/yaml/dist/listTagNames.js
deleted file mode 100644
index 69c8b96..0000000
--- a/assets/node_modules/yaml/dist/listTagNames.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _Collection = _interopRequireDefault(require("./schema/Collection"));
-
-var _Pair = _interopRequireDefault(require("./schema/Pair"));
-
-var _Scalar = _interopRequireDefault(require("./schema/Scalar"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const visit = (node, tags) => {
- if (node && typeof node === 'object') {
- const {
- tag
- } = node;
-
- if (node instanceof _Collection.default) {
- if (tag) tags[tag] = true;
- node.items.forEach(n => visit(n, tags));
- } else if (node instanceof _Pair.default) {
- visit(node.key, tags);
- visit(node.value, tags);
- } else if (node instanceof _Scalar.default) {
- if (tag) tags[tag] = true;
- }
- }
-
- return tags;
-};
-
-var _default = node => Object.keys(visit(node, {}));
-
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/schema/Alias.js b/assets/node_modules/yaml/dist/schema/Alias.js
deleted file mode 100644
index ab91a8e..0000000
--- a/assets/node_modules/yaml/dist/schema/Alias.js
+++ /dev/null
@@ -1,109 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _constants = require("../constants");
-
-var _errors = require("../errors");
-
-var _toJSON = _interopRequireDefault(require("../toJSON"));
-
-var _Collection = _interopRequireDefault(require("./Collection"));
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Pair = _interopRequireDefault(require("./Pair"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-const getAliasCount = (node, anchors) => {
- if (node instanceof Alias) {
- const anchor = anchors.find(a => a.node === node.source);
- return anchor.count * anchor.aliasCount;
- } else if (node instanceof _Collection.default) {
- let count = 0;
-
- for (const item of node.items) {
- const c = getAliasCount(item, anchors);
- if (c > count) count = c;
- }
-
- return count;
- } else if (node instanceof _Pair.default) {
- const kc = getAliasCount(node.key, anchors);
- const vc = getAliasCount(node.value, anchors);
- return Math.max(kc, vc);
- }
-
- return 1;
-};
-
-class Alias extends _Node.default {
- static stringify({
- range,
- source
- }, {
- anchors,
- doc,
- implicitKey,
- inStringifyKey
- }) {
- let anchor = Object.keys(anchors).find(a => anchors[a] === source);
- if (!anchor && inStringifyKey) anchor = doc.anchors.getName(source) || doc.anchors.newName();
- if (anchor) return `*${anchor}${implicitKey ? ' ' : ''}`;
- const msg = doc.anchors.getName(source) ? 'Alias node must be after source node' : 'Source node not found for alias node';
- throw new Error(`${msg} [${range}]`);
- }
-
- constructor(source) {
- super();
- this.source = source;
- this.type = _constants.Type.ALIAS;
- }
-
- set tag(t) {
- throw new Error('Alias nodes cannot have tags');
- }
-
- toJSON(arg, ctx) {
- if (!ctx) return (0, _toJSON.default)(this.source, arg, ctx);
- const {
- anchors,
- maxAliasCount
- } = ctx;
- const anchor = anchors.find(a => a.node === this.source);
-
- if (!anchor || anchor.res === undefined) {
- const msg = 'This should not happen: Alias anchor was not resolved?';
- if (this.cstNode) throw new _errors.YAMLReferenceError(this.cstNode, msg);else throw new ReferenceError(msg);
- }
-
- if (maxAliasCount >= 0) {
- anchor.count += 1;
- if (anchor.aliasCount === 0) anchor.aliasCount = getAliasCount(this.source, anchors);
-
- if (anchor.count * anchor.aliasCount > maxAliasCount) {
- const msg = 'Excessive alias count indicates a resource exhaustion attack';
- if (this.cstNode) throw new _errors.YAMLReferenceError(this.cstNode, msg);else throw new ReferenceError(msg);
- }
- }
-
- return anchor.res;
- } // Only called when stringifying an alias mapping key while constructing
- // Object output.
-
-
- toString(ctx) {
- return Alias.stringify(this, ctx);
- }
-
-}
-
-exports.default = Alias;
-
-_defineProperty(Alias, "default", true); \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/schema/Collection.js b/assets/node_modules/yaml/dist/schema/Collection.js
deleted file mode 100644
index ad6cc86..0000000
--- a/assets/node_modules/yaml/dist/schema/Collection.js
+++ /dev/null
@@ -1,171 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.isEmptyPath = void 0;
-
-var _addComment = _interopRequireDefault(require("../addComment"));
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Pair = _interopRequireDefault(require("./Pair"));
-
-var _Scalar = _interopRequireDefault(require("./Scalar"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-// null, undefined, or an empty non-string iterable (e.g. [])
-const isEmptyPath = path => path == null || typeof path === 'object' && path[Symbol.iterator]().next().done;
-
-exports.isEmptyPath = isEmptyPath;
-
-class Collection extends _Node.default {
- constructor(...args) {
- super(...args);
-
- _defineProperty(this, "items", []);
- }
-
- addIn(path, value) {
- if (isEmptyPath(path)) this.add(value);else {
- const [key, ...rest] = path;
- const node = this.get(key, true);
- if (node instanceof Collection) node.addIn(rest, value);else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);
- }
- }
-
- deleteIn([key, ...rest]) {
- if (rest.length === 0) return this.delete(key);
- const node = this.get(key, true);
- if (node instanceof Collection) return node.deleteIn(rest);else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);
- }
-
- getIn([key, ...rest], keepScalar) {
- const node = this.get(key, true);
- if (rest.length === 0) return !keepScalar && node instanceof _Scalar.default ? node.value : node;else return node instanceof Collection ? node.getIn(rest, keepScalar) : undefined;
- }
-
- hasAllNullValues() {
- return this.items.every(node => {
- if (!(node instanceof _Pair.default)) return false;
- const n = node.value;
- return n == null || n instanceof _Scalar.default && n.value == null && !n.commentBefore && !n.comment && !n.tag;
- });
- }
-
- hasIn([key, ...rest]) {
- if (rest.length === 0) return this.has(key);
- const node = this.get(key, true);
- return node instanceof Collection ? node.hasIn(rest) : false;
- }
-
- setIn([key, ...rest], value) {
- if (rest.length === 0) {
- this.set(key, value);
- } else {
- const node = this.get(key, true);
- if (node instanceof Collection) node.setIn(rest, value);else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);
- }
- } // overridden in implementations
-
-
- toJSON() {
- return null;
- }
-
- toString(ctx, {
- blockItem,
- flowChars,
- isMap,
- itemIndent
- }, onComment, onChompKeep) {
- const {
- doc,
- indent
- } = ctx;
- const inFlow = this.type && this.type.substr(0, 4) === 'FLOW' || ctx.inFlow;
- if (inFlow) itemIndent += ' ';
- const allNullValues = isMap && this.hasAllNullValues();
- ctx = Object.assign({}, ctx, {
- allNullValues,
- indent: itemIndent,
- inFlow,
- type: null
- });
- let chompKeep = false;
- let hasItemWithNewLine = false;
- const nodes = this.items.reduce((nodes, item, i) => {
- let comment;
-
- if (item) {
- if (!chompKeep && item.spaceBefore) nodes.push({
- type: 'comment',
- str: ''
- });
- if (item.commentBefore) item.commentBefore.match(/^.*$/gm).forEach(line => {
- nodes.push({
- type: 'comment',
- str: `#${line}`
- });
- });
- if (item.comment) comment = item.comment;
- if (inFlow && (!chompKeep && item.spaceBefore || item.commentBefore || item.comment || item.key && (item.key.commentBefore || item.key.comment) || item.value && (item.value.commentBefore || item.value.comment))) hasItemWithNewLine = true;
- }
-
- chompKeep = false;
- let str = doc.schema.stringify(item, ctx, () => comment = null, () => chompKeep = true);
- if (inFlow && !hasItemWithNewLine && str.includes('\n')) hasItemWithNewLine = true;
- if (inFlow && i < this.items.length - 1) str += ',';
- str = (0, _addComment.default)(str, itemIndent, comment);
- if (chompKeep && (comment || inFlow)) chompKeep = false;
- nodes.push({
- type: 'item',
- str
- });
- return nodes;
- }, []);
- let str;
-
- if (nodes.length === 0) {
- str = flowChars.start + flowChars.end;
- } else if (inFlow) {
- const {
- start,
- end
- } = flowChars;
- const strings = nodes.map(n => n.str);
-
- if (hasItemWithNewLine || strings.reduce((sum, str) => sum + str.length + 2, 2) > Collection.maxFlowStringSingleLineLength) {
- str = start;
-
- for (const s of strings) {
- str += s ? `\n ${indent}${s}` : '\n';
- }
-
- str += `\n${indent}${end}`;
- } else {
- str = `${start} ${strings.join(' ')} ${end}`;
- }
- } else {
- const strings = nodes.map(blockItem);
- str = strings.shift();
-
- for (const s of strings) str += s ? `\n${indent}${s}` : '\n';
- }
-
- if (this.comment) {
- str += '\n' + this.comment.replace(/^/gm, `${indent}#`);
- if (onComment) onComment();
- } else if (chompKeep && onChompKeep) onChompKeep();
-
- return str;
- }
-
-}
-
-exports.default = Collection;
-
-_defineProperty(Collection, "maxFlowStringSingleLineLength", 60); \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/schema/Map.js b/assets/node_modules/yaml/dist/schema/Map.js
deleted file mode 100644
index 96968ed..0000000
--- a/assets/node_modules/yaml/dist/schema/Map.js
+++ /dev/null
@@ -1,96 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.findPair = findPair;
-exports.default = void 0;
-
-var _Collection = _interopRequireDefault(require("./Collection"));
-
-var _Pair = _interopRequireDefault(require("./Pair"));
-
-var _Scalar = _interopRequireDefault(require("./Scalar"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function findPair(items, key) {
- const k = key instanceof _Scalar.default ? key.value : key;
-
- for (const it of items) {
- if (it instanceof _Pair.default) {
- if (it.key === key || it.key === k) return it;
- if (it.key && it.key.value === k) return it;
- }
- }
-
- return undefined;
-}
-
-class YAMLMap extends _Collection.default {
- add(pair) {
- if (!pair) pair = new _Pair.default(pair);else if (!(pair instanceof _Pair.default)) pair = new _Pair.default(pair.key || pair, pair.value);
- const prev = findPair(this.items, pair.key);
- if (prev) throw new Error(`Key ${pair.key} already set`);
- this.items.push(pair);
- }
-
- delete(key) {
- const it = findPair(this.items, key);
- if (!it) return false;
- const del = this.items.splice(this.items.indexOf(it), 1);
- return del.length > 0;
- }
-
- get(key, keepScalar) {
- const it = findPair(this.items, key);
- const node = it && it.value;
- return !keepScalar && node instanceof _Scalar.default ? node.value : node;
- }
-
- has(key) {
- return !!findPair(this.items, key);
- }
-
- set(key, value) {
- const prev = findPair(this.items, key);
- if (prev) prev.value = value;else this.items.push(new _Pair.default(key, value));
- }
- /**
- * @param {*} arg ignored
- * @param {*} ctx Conversion context, originally set in Document#toJSON()
- * @param {Class} Type If set, forces the returned collection type
- * @returns {*} Instance of Type, Map, or Object
- */
-
-
- toJSON(_, ctx, Type) {
- const map = Type ? new Type() : ctx && ctx.mapAsMap ? new Map() : {};
- if (ctx && ctx.onCreate) ctx.onCreate(map);
-
- for (const item of this.items) item.addToJSMap(ctx, map);
-
- return map;
- }
-
- toString(ctx, onComment, onChompKeep) {
- if (!ctx) return JSON.stringify(this);
-
- for (const item of this.items) {
- if (!(item instanceof _Pair.default)) throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);
- }
-
- return super.toString(ctx, {
- blockItem: n => n.str,
- flowChars: {
- start: '{',
- end: '}'
- },
- isMap: true,
- itemIndent: ctx.indent || ''
- }, onComment, onChompKeep);
- }
-
-}
-
-exports.default = YAMLMap; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/schema/Merge.js b/assets/node_modules/yaml/dist/schema/Merge.js
deleted file mode 100644
index 287d70c..0000000
--- a/assets/node_modules/yaml/dist/schema/Merge.js
+++ /dev/null
@@ -1,80 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.MERGE_KEY = void 0;
-
-var _Map = _interopRequireDefault(require("./Map"));
-
-var _Pair = _interopRequireDefault(require("./Pair"));
-
-var _Scalar = _interopRequireDefault(require("./Scalar"));
-
-var _Seq = _interopRequireDefault(require("./Seq"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const MERGE_KEY = '<<';
-exports.MERGE_KEY = MERGE_KEY;
-
-class Merge extends _Pair.default {
- constructor(pair) {
- if (pair instanceof _Pair.default) {
- let seq = pair.value;
-
- if (!(seq instanceof _Seq.default)) {
- seq = new _Seq.default();
- seq.items.push(pair.value);
- seq.range = pair.value.range;
- }
-
- super(pair.key, seq);
- this.range = pair.range;
- } else {
- super(new _Scalar.default(MERGE_KEY), new _Seq.default());
- }
-
- this.type = 'MERGE_PAIR';
- } // If the value associated with a merge key is a single mapping node, each of
- // its key/value pairs is inserted into the current mapping, unless the key
- // already exists in it. If the value associated with the merge key is a
- // sequence, then this sequence is expected to contain mapping nodes and each
- // of these nodes is merged in turn according to its order in the sequence.
- // Keys in mapping nodes earlier in the sequence override keys specified in
- // later mapping nodes. -- http://yaml.org/type/merge.html
-
-
- addToJSMap(ctx, map) {
- for (const {
- source
- } of this.value.items) {
- if (!(source instanceof _Map.default)) throw new Error('Merge sources must be maps');
- const srcMap = source.toJSON(null, ctx, Map);
-
- for (const [key, value] of srcMap) {
- if (map instanceof Map) {
- if (!map.has(key)) map.set(key, value);
- } else if (map instanceof Set) {
- map.add(key);
- } else {
- if (!Object.prototype.hasOwnProperty.call(map, key)) map[key] = value;
- }
- }
- }
-
- return map;
- }
-
- toString(ctx, onComment) {
- const seq = this.value;
- if (seq.items.length > 1) return super.toString(ctx, onComment);
- this.value = seq.items[0];
- const str = super.toString(ctx, onComment);
- this.value = seq;
- return str;
- }
-
-}
-
-exports.default = Merge; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/schema/Node.js b/assets/node_modules/yaml/dist/schema/Node.js
deleted file mode 100644
index 4826158..0000000
--- a/assets/node_modules/yaml/dist/schema/Node.js
+++ /dev/null
@@ -1,10 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-class Node {}
-
-exports.default = Node; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/schema/Pair.js b/assets/node_modules/yaml/dist/schema/Pair.js
deleted file mode 100644
index f59698a..0000000
--- a/assets/node_modules/yaml/dist/schema/Pair.js
+++ /dev/null
@@ -1,160 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _addComment = _interopRequireDefault(require("../addComment"));
-
-var _constants = require("../constants");
-
-var _toJSON = _interopRequireDefault(require("../toJSON"));
-
-var _Collection = _interopRequireDefault(require("./Collection"));
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Scalar = _interopRequireDefault(require("./Scalar"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-// Published as 'yaml/pair'
-const stringifyKey = (key, jsKey, ctx) => {
- if (jsKey === null) return '';
- if (typeof jsKey !== 'object') return String(jsKey);
- if (key instanceof _Node.default && ctx && ctx.doc) return key.toString({
- anchors: {},
- doc: ctx.doc,
- indent: '',
- inFlow: true,
- inStringifyKey: true
- });
- return JSON.stringify(jsKey);
-};
-
-class Pair extends _Node.default {
- constructor(key, value = null) {
- super();
- this.key = key;
- this.value = value;
- this.type = 'PAIR';
- }
-
- get commentBefore() {
- return this.key && this.key.commentBefore;
- }
-
- set commentBefore(cb) {
- if (this.key == null) this.key = new _Scalar.default(null);
- this.key.commentBefore = cb;
- }
-
- addToJSMap(ctx, map) {
- const key = (0, _toJSON.default)(this.key, '', ctx);
-
- if (map instanceof Map) {
- const value = (0, _toJSON.default)(this.value, key, ctx);
- map.set(key, value);
- } else if (map instanceof Set) {
- map.add(key);
- } else {
- const stringKey = stringifyKey(this.key, key, ctx);
- map[stringKey] = (0, _toJSON.default)(this.value, stringKey, ctx);
- }
-
- return map;
- }
-
- toJSON(_, ctx) {
- const pair = ctx && ctx.mapAsMap ? new Map() : {};
- return this.addToJSMap(ctx, pair);
- }
-
- toString(ctx, onComment, onChompKeep) {
- if (!ctx || !ctx.doc) return JSON.stringify(this);
- const {
- simpleKeys
- } = ctx.doc.options;
- let {
- key,
- value
- } = this;
- let keyComment = key instanceof _Node.default && key.comment;
-
- if (simpleKeys) {
- if (keyComment) {
- throw new Error('With simple keys, key nodes cannot have comments');
- }
-
- if (key instanceof _Collection.default) {
- const msg = 'With simple keys, collection cannot be used as a key value';
- throw new Error(msg);
- }
- }
-
- const explicitKey = !simpleKeys && (!key || keyComment || key instanceof _Collection.default || key.type === _constants.Type.BLOCK_FOLDED || key.type === _constants.Type.BLOCK_LITERAL);
- const {
- doc,
- indent
- } = ctx;
- ctx = Object.assign({}, ctx, {
- implicitKey: !explicitKey,
- indent: indent + ' '
- });
- let chompKeep = false;
- let str = doc.schema.stringify(key, ctx, () => keyComment = null, () => chompKeep = true);
- str = (0, _addComment.default)(str, ctx.indent, keyComment);
-
- if (ctx.allNullValues && !simpleKeys) {
- if (this.comment) {
- str = (0, _addComment.default)(str, ctx.indent, this.comment);
- if (onComment) onComment();
- } else if (chompKeep && !keyComment && onChompKeep) onChompKeep();
-
- return ctx.inFlow ? str : `? ${str}`;
- }
-
- str = explicitKey ? `? ${str}\n${indent}:` : `${str}:`;
-
- if (this.comment) {
- // expected (but not strictly required) to be a single-line comment
- str = (0, _addComment.default)(str, ctx.indent, this.comment);
- if (onComment) onComment();
- }
-
- let vcb = '';
- let valueComment = null;
-
- if (value instanceof _Node.default) {
- if (value.spaceBefore) vcb = '\n';
-
- if (value.commentBefore) {
- const cs = value.commentBefore.replace(/^/gm, `${ctx.indent}#`);
- vcb += `\n${cs}`;
- }
-
- valueComment = value.comment;
- } else if (value && typeof value === 'object') {
- value = doc.schema.createNode(value, true);
- }
-
- ctx.implicitKey = false;
- chompKeep = false;
- const valueStr = doc.schema.stringify(value, ctx, () => valueComment = null, () => chompKeep = true);
- let ws = ' ';
-
- if (vcb || this.comment) {
- ws = `${vcb}\n${ctx.indent}`;
- } else if (!explicitKey && value instanceof _Collection.default) {
- const flow = valueStr[0] === '[' || valueStr[0] === '{';
- if (!flow || valueStr.includes('\n')) ws = `\n${ctx.indent}`;
- }
-
- if (chompKeep && !valueComment && onChompKeep) onChompKeep();
- return (0, _addComment.default)(str + ws + valueStr, ctx.indent, valueComment);
- }
-
-}
-
-exports.default = Pair; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/schema/Scalar.js b/assets/node_modules/yaml/dist/schema/Scalar.js
deleted file mode 100644
index 7310cb7..0000000
--- a/assets/node_modules/yaml/dist/schema/Scalar.js
+++ /dev/null
@@ -1,31 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _toJSON = _interopRequireDefault(require("../toJSON"));
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-// Published as 'yaml/scalar'
-class Scalar extends _Node.default {
- constructor(value) {
- super();
- this.value = value;
- }
-
- toJSON(arg, ctx) {
- return ctx && ctx.keep ? this.value : (0, _toJSON.default)(this.value, arg, ctx);
- }
-
- toString() {
- return String(this.value);
- }
-
-}
-
-exports.default = Scalar; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/schema/Seq.js b/assets/node_modules/yaml/dist/schema/Seq.js
deleted file mode 100644
index 5af0248..0000000
--- a/assets/node_modules/yaml/dist/schema/Seq.js
+++ /dev/null
@@ -1,78 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _toJSON = _interopRequireDefault(require("../toJSON"));
-
-var _Collection = _interopRequireDefault(require("./Collection"));
-
-var _Scalar = _interopRequireDefault(require("./Scalar"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-// Published as 'yaml/seq'
-function asItemIndex(key) {
- let idx = key instanceof _Scalar.default ? key.value : key;
- if (idx && typeof idx === 'string') idx = Number(idx);
- return Number.isInteger(idx) && idx >= 0 ? idx : null;
-}
-
-class YAMLSeq extends _Collection.default {
- add(value) {
- this.items.push(value);
- }
-
- delete(key) {
- const idx = asItemIndex(key);
- if (typeof idx !== 'number') return false;
- const del = this.items.splice(idx, 1);
- return del.length > 0;
- }
-
- get(key, keepScalar) {
- const idx = asItemIndex(key);
- if (typeof idx !== 'number') return undefined;
- const it = this.items[idx];
- return !keepScalar && it instanceof _Scalar.default ? it.value : it;
- }
-
- has(key) {
- const idx = asItemIndex(key);
- return typeof idx === 'number' && idx < this.items.length;
- }
-
- set(key, value) {
- const idx = asItemIndex(key);
- if (typeof idx !== 'number') throw new Error(`Expected a valid index, not ${key}.`);
- this.items[idx] = value;
- }
-
- toJSON(_, ctx) {
- const seq = [];
- if (ctx && ctx.onCreate) ctx.onCreate(seq);
- let i = 0;
-
- for (const item of this.items) seq.push((0, _toJSON.default)(item, String(i++), ctx));
-
- return seq;
- }
-
- toString(ctx, onComment, onChompKeep) {
- if (!ctx) return JSON.stringify(this);
- return super.toString(ctx, {
- blockItem: n => n.type === 'comment' ? n.str : `- ${n.str}`,
- flowChars: {
- start: '[',
- end: ']'
- },
- isMap: false,
- itemIndent: (ctx.indent || '') + ' '
- }, onComment, onChompKeep);
- }
-
-}
-
-exports.default = YAMLSeq; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/schema/index.js b/assets/node_modules/yaml/dist/schema/index.js
deleted file mode 100644
index 1b024d5..0000000
--- a/assets/node_modules/yaml/dist/schema/index.js
+++ /dev/null
@@ -1,310 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _warnings = require("../warnings");
-
-var _constants = require("../constants");
-
-var _errors = require("../errors");
-
-var _stringify = require("../stringify");
-
-var _tags = require("../tags");
-
-var _string = require("../tags/failsafe/string");
-
-var _Alias = _interopRequireDefault(require("./Alias"));
-
-var _Collection = _interopRequireDefault(require("./Collection"));
-
-var _Node = _interopRequireDefault(require("./Node"));
-
-var _Pair = _interopRequireDefault(require("./Pair"));
-
-var _Scalar = _interopRequireDefault(require("./Scalar"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-const isMap = ({
- type
-}) => type === _constants.Type.FLOW_MAP || type === _constants.Type.MAP;
-
-const isSeq = ({
- type
-}) => type === _constants.Type.FLOW_SEQ || type === _constants.Type.SEQ;
-
-class Schema {
- constructor({
- customTags,
- merge,
- schema,
- tags: deprecatedCustomTags
- }) {
- this.merge = !!merge;
- this.name = schema;
- this.tags = _tags.schemas[schema.replace(/\W/g, '')]; // 'yaml-1.1' -> 'yaml11'
-
- if (!this.tags) {
- const keys = Object.keys(_tags.schemas).map(key => JSON.stringify(key)).join(', ');
- throw new Error(`Unknown schema "${schema}"; use one of ${keys}`);
- }
-
- if (!customTags && deprecatedCustomTags) {
- customTags = deprecatedCustomTags;
- (0, _warnings.warnOptionDeprecation)('tags', 'customTags');
- }
-
- if (Array.isArray(customTags)) {
- for (const tag of customTags) this.tags = this.tags.concat(tag);
- } else if (typeof customTags === 'function') {
- this.tags = customTags(this.tags.slice());
- }
-
- for (let i = 0; i < this.tags.length; ++i) {
- const tag = this.tags[i];
-
- if (typeof tag === 'string') {
- const tagObj = _tags.tags[tag];
-
- if (!tagObj) {
- const keys = Object.keys(_tags.tags).map(key => JSON.stringify(key)).join(', ');
- throw new Error(`Unknown custom tag "${tag}"; use one of ${keys}`);
- }
-
- this.tags[i] = tagObj;
- }
- }
- }
-
- createNode(value, wrapScalars, tag, ctx) {
- if (value instanceof _Node.default) return value;
- let tagObj;
-
- if (tag) {
- if (tag.startsWith('!!')) tag = Schema.defaultPrefix + tag.slice(2);
- const match = this.tags.filter(t => t.tag === tag);
- tagObj = match.find(t => !t.format) || match[0];
- if (!tagObj) throw new Error(`Tag ${tag} not found`);
- } else {
- // TODO: deprecate/remove class check
- tagObj = this.tags.find(t => (t.identify && t.identify(value) || t.class && value instanceof t.class) && !t.format);
-
- if (!tagObj) {
- if (typeof value.toJSON === 'function') value = value.toJSON();
- if (typeof value !== 'object') return wrapScalars ? new _Scalar.default(value) : value;
- tagObj = value instanceof Map ? _tags.tags.map : value[Symbol.iterator] ? _tags.tags.seq : _tags.tags.map;
- }
- }
-
- if (!ctx) ctx = {
- wrapScalars
- };else ctx.wrapScalars = wrapScalars;
-
- if (ctx.onTagObj) {
- ctx.onTagObj(tagObj);
- delete ctx.onTagObj;
- }
-
- const obj = {};
-
- if (value && typeof value === 'object' && ctx.prevObjects) {
- const prev = ctx.prevObjects.find(o => o.value === value);
-
- if (prev) {
- const alias = new _Alias.default(prev); // leaves source dirty; must be cleaned by caller
-
- ctx.aliasNodes.push(alias);
- return alias;
- }
-
- obj.value = value;
- ctx.prevObjects.push(obj);
- }
-
- obj.node = tagObj.createNode ? tagObj.createNode(this, value, ctx) : wrapScalars ? new _Scalar.default(value) : value;
- return obj.node;
- }
-
- createPair(key, value, ctx) {
- const k = this.createNode(key, ctx.wrapScalars, null, ctx);
- const v = this.createNode(value, ctx.wrapScalars, null, ctx);
- return new _Pair.default(k, v);
- } // falls back to string on no match
-
-
- resolveScalar(str, tags) {
- if (!tags) tags = this.tags;
-
- for (let i = 0; i < tags.length; ++i) {
- const {
- format,
- test,
- resolve
- } = tags[i];
-
- if (test) {
- const match = str.match(test);
-
- if (match) {
- let res = resolve.apply(null, match);
- if (!(res instanceof _Scalar.default)) res = new _Scalar.default(res);
- if (format) res.format = format;
- return res;
- }
- }
- }
-
- if (this.tags.scalarFallback) str = this.tags.scalarFallback(str);
- return new _Scalar.default(str);
- } // sets node.resolved on success
-
-
- resolveNode(doc, node, tagName) {
- const tags = this.tags.filter(({
- tag
- }) => tag === tagName);
- const generic = tags.find(({
- test
- }) => !test);
- if (node.error) doc.errors.push(node.error);
-
- try {
- if (generic) {
- let res = generic.resolve(doc, node);
- if (!(res instanceof _Collection.default)) res = new _Scalar.default(res);
- node.resolved = res;
- } else {
- const str = (0, _string.resolveString)(doc, node);
-
- if (typeof str === 'string' && tags.length > 0) {
- node.resolved = this.resolveScalar(str, tags);
- }
- }
- } catch (error) {
- if (!error.source) error.source = node;
- doc.errors.push(error);
- node.resolved = null;
- }
-
- if (!node.resolved) return null;
- if (tagName && node.tag) node.resolved.tag = tagName;
- return node.resolved;
- }
-
- resolveNodeWithFallback(doc, node, tagName) {
- const res = this.resolveNode(doc, node, tagName);
- if (Object.prototype.hasOwnProperty.call(node, 'resolved')) return res;
- const fallback = isMap(node) ? Schema.defaultTags.MAP : isSeq(node) ? Schema.defaultTags.SEQ : Schema.defaultTags.STR;
-
- if (fallback) {
- doc.warnings.push(new _errors.YAMLWarning(node, `The tag ${tagName} is unavailable, falling back to ${fallback}`));
- const res = this.resolveNode(doc, node, fallback);
- res.tag = tagName;
- return res;
- } else {
- doc.errors.push(new _errors.YAMLReferenceError(node, `The tag ${tagName} is unavailable`));
- }
-
- return null;
- }
-
- getTagObject(item) {
- if (item instanceof _Alias.default) return _Alias.default;
-
- if (item.tag) {
- const match = this.tags.filter(t => t.tag === item.tag);
- if (match.length > 0) return match.find(t => t.format === item.format) || match[0];
- }
-
- let tagObj, obj;
-
- if (item instanceof _Scalar.default) {
- obj = item.value; // TODO: deprecate/remove class check
-
- const match = this.tags.filter(t => t.identify && t.identify(obj) || t.class && obj instanceof t.class);
- tagObj = match.find(t => t.format === item.format) || match.find(t => !t.format);
- } else {
- obj = item;
- tagObj = this.tags.find(t => t.nodeClass && obj instanceof t.nodeClass);
- }
-
- if (!tagObj) {
- const name = obj && obj.constructor ? obj.constructor.name : typeof obj;
- throw new Error(`Tag not resolved for ${name} value`);
- }
-
- return tagObj;
- } // needs to be called before stringifier to allow for circular anchor refs
-
-
- stringifyProps(node, tagObj, {
- anchors,
- doc
- }) {
- const props = [];
- const anchor = doc.anchors.getName(node);
-
- if (anchor) {
- anchors[anchor] = node;
- props.push(`&${anchor}`);
- }
-
- if (node.tag) {
- props.push(doc.stringifyTag(node.tag));
- } else if (!tagObj.default) {
- props.push(doc.stringifyTag(tagObj.tag));
- }
-
- return props.join(' ');
- }
-
- stringify(item, ctx, onComment, onChompKeep) {
- let tagObj;
-
- if (!(item instanceof _Node.default)) {
- const createCtx = {
- aliasNodes: [],
- onTagObj: o => tagObj = o,
- prevObjects: []
- };
- item = this.createNode(item, true, null, createCtx);
- const {
- anchors
- } = ctx.doc;
-
- for (const alias of createCtx.aliasNodes) {
- alias.source = alias.source.node;
- let name = anchors.getName(alias.source);
-
- if (!name) {
- name = anchors.newName();
- anchors.map[name] = alias.source;
- }
- }
- }
-
- ctx.tags = this;
- if (item instanceof _Pair.default) return item.toString(ctx, onComment, onChompKeep);
- if (!tagObj) tagObj = this.getTagObject(item);
- const props = this.stringifyProps(item, tagObj, ctx);
- const str = typeof tagObj.stringify === 'function' ? tagObj.stringify(item, ctx, onComment, onChompKeep) : item instanceof _Collection.default ? item.toString(ctx, onComment, onChompKeep) : (0, _stringify.stringifyString)(item, ctx, onComment, onChompKeep);
- return props ? item instanceof _Collection.default && str[0] !== '{' && str[0] !== '[' ? `${props}\n${ctx.indent}${str}` : `${props} ${str}` : str;
- }
-
-}
-
-exports.default = Schema;
-
-_defineProperty(Schema, "defaultPrefix", 'tag:yaml.org,2002:');
-
-_defineProperty(Schema, "defaultTags", {
- MAP: 'tag:yaml.org,2002:map',
- SEQ: 'tag:yaml.org,2002:seq',
- STR: 'tag:yaml.org,2002:str'
-}); \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/schema/parseMap.js b/assets/node_modules/yaml/dist/schema/parseMap.js
deleted file mode 100644
index a847aea..0000000
--- a/assets/node_modules/yaml/dist/schema/parseMap.js
+++ /dev/null
@@ -1,343 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = parseMap;
-
-var _constants = require("../constants");
-
-var _PlainValue = _interopRequireDefault(require("../cst/PlainValue"));
-
-var _errors = require("../errors");
-
-var _Map = _interopRequireDefault(require("./Map"));
-
-var _Merge = _interopRequireWildcard(require("./Merge"));
-
-var _Pair = _interopRequireDefault(require("./Pair"));
-
-var _parseUtils = require("./parseUtils");
-
-var _Alias = _interopRequireDefault(require("./Alias"));
-
-var _Collection = _interopRequireDefault(require("./Collection"));
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function parseMap(doc, cst) {
- if (cst.type !== _constants.Type.MAP && cst.type !== _constants.Type.FLOW_MAP) {
- const msg = `A ${cst.type} node cannot be resolved as a mapping`;
- doc.errors.push(new _errors.YAMLSyntaxError(cst, msg));
- return null;
- }
-
- const {
- comments,
- items
- } = cst.type === _constants.Type.FLOW_MAP ? resolveFlowMapItems(doc, cst) : resolveBlockMapItems(doc, cst);
- const map = new _Map.default();
- map.items = items;
- (0, _parseUtils.resolveComments)(map, comments);
- let hasCollectionKey = false;
-
- for (let i = 0; i < items.length; ++i) {
- const {
- key: iKey
- } = items[i];
- if (iKey instanceof _Collection.default) hasCollectionKey = true;
-
- if (doc.schema.merge && iKey && iKey.value === _Merge.MERGE_KEY) {
- items[i] = new _Merge.default(items[i]);
- const sources = items[i].value.items;
- let error = null;
- sources.some(node => {
- if (node instanceof _Alias.default) {
- // During parsing, alias sources are CST nodes; to account for
- // circular references their resolved values can't be used here.
- const {
- type
- } = node.source;
- if (type === _constants.Type.MAP || type === _constants.Type.FLOW_MAP) return false;
- return error = 'Merge nodes aliases can only point to maps';
- }
-
- return error = 'Merge nodes can only have Alias nodes as values';
- });
- if (error) doc.errors.push(new _errors.YAMLSemanticError(cst, error));
- } else {
- for (let j = i + 1; j < items.length; ++j) {
- const {
- key: jKey
- } = items[j];
-
- if (iKey === jKey || iKey && jKey && Object.prototype.hasOwnProperty.call(iKey, 'value') && iKey.value === jKey.value) {
- const msg = `Map keys must be unique; "${iKey}" is repeated`;
- doc.errors.push(new _errors.YAMLSemanticError(cst, msg));
- break;
- }
- }
- }
- }
-
- if (hasCollectionKey && !doc.options.mapAsMap) {
- const warn = 'Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this.';
- doc.warnings.push(new _errors.YAMLWarning(cst, warn));
- }
-
- cst.resolved = map;
- return map;
-}
-
-const valueHasPairComment = ({
- context: {
- lineStart,
- node,
- src
- },
- props
-}) => {
- if (props.length === 0) return false;
- const {
- start
- } = props[0];
- if (node && start > node.valueRange.start) return false;
- if (src[start] !== _constants.Char.COMMENT) return false;
-
- for (let i = lineStart; i < start; ++i) if (src[i] === '\n') return false;
-
- return true;
-};
-
-function resolvePairComment(item, pair) {
- if (!valueHasPairComment(item)) return;
- const comment = item.getPropValue(0, _constants.Char.COMMENT, true);
- let found = false;
- const cb = pair.value.commentBefore;
-
- if (cb && cb.startsWith(comment)) {
- pair.value.commentBefore = cb.substr(comment.length + 1);
- found = true;
- } else {
- const cc = pair.value.comment;
-
- if (!item.node && cc && cc.startsWith(comment)) {
- pair.value.comment = cc.substr(comment.length + 1);
- found = true;
- }
- }
-
- if (found) pair.comment = comment;
-}
-
-function resolveBlockMapItems(doc, cst) {
- const comments = [];
- const items = [];
- let key = undefined;
- let keyStart = null;
-
- for (let i = 0; i < cst.items.length; ++i) {
- const item = cst.items[i];
-
- switch (item.type) {
- case _constants.Type.BLANK_LINE:
- comments.push({
- afterKey: !!key,
- before: items.length
- });
- break;
-
- case _constants.Type.COMMENT:
- comments.push({
- afterKey: !!key,
- before: items.length,
- comment: item.comment
- });
- break;
-
- case _constants.Type.MAP_KEY:
- if (key !== undefined) items.push(new _Pair.default(key));
- if (item.error) doc.errors.push(item.error);
- key = doc.resolveNode(item.node);
- keyStart = null;
- break;
-
- case _constants.Type.MAP_VALUE:
- {
- if (key === undefined) key = null;
- if (item.error) doc.errors.push(item.error);
-
- if (!item.context.atLineStart && item.node && item.node.type === _constants.Type.MAP && !item.node.context.atLineStart) {
- const msg = 'Nested mappings are not allowed in compact mappings';
- doc.errors.push(new _errors.YAMLSemanticError(item.node, msg));
- }
-
- let valueNode = item.node;
-
- if (!valueNode && item.props.length > 0) {
- // Comments on an empty mapping value need to be preserved, so we
- // need to construct a minimal empty node here to use instead of the
- // missing `item.node`. -- eemeli/yaml#19
- valueNode = new _PlainValue.default(_constants.Type.PLAIN, []);
- valueNode.context = {
- parent: item,
- src: item.context.src
- };
- const pos = item.range.start + 1;
- valueNode.range = {
- start: pos,
- end: pos
- };
- valueNode.valueRange = {
- start: pos,
- end: pos
- };
-
- if (typeof item.range.origStart === 'number') {
- const origPos = item.range.origStart + 1;
- valueNode.range.origStart = valueNode.range.origEnd = origPos;
- valueNode.valueRange.origStart = valueNode.valueRange.origEnd = origPos;
- }
- }
-
- const pair = new _Pair.default(key, doc.resolveNode(valueNode));
- resolvePairComment(item, pair);
- items.push(pair);
- (0, _parseUtils.checkKeyLength)(doc.errors, cst, i, key, keyStart);
- key = undefined;
- keyStart = null;
- }
- break;
-
- default:
- if (key !== undefined) items.push(new _Pair.default(key));
- key = doc.resolveNode(item);
- keyStart = item.range.start;
- if (item.error) doc.errors.push(item.error);
-
- next: for (let j = i + 1;; ++j) {
- const nextItem = cst.items[j];
-
- switch (nextItem && nextItem.type) {
- case _constants.Type.BLANK_LINE:
- case _constants.Type.COMMENT:
- continue next;
-
- case _constants.Type.MAP_VALUE:
- break next;
-
- default:
- doc.errors.push(new _errors.YAMLSemanticError(item, 'Implicit map keys need to be followed by map values'));
- break next;
- }
- }
-
- if (item.valueRangeContainsNewline) {
- const msg = 'Implicit map keys need to be on a single line';
- doc.errors.push(new _errors.YAMLSemanticError(item, msg));
- }
-
- }
- }
-
- if (key !== undefined) items.push(new _Pair.default(key));
- return {
- comments,
- items
- };
-}
-
-function resolveFlowMapItems(doc, cst) {
- const comments = [];
- const items = [];
- let key = undefined;
- let keyStart = null;
- let explicitKey = false;
- let next = '{';
-
- for (let i = 0; i < cst.items.length; ++i) {
- (0, _parseUtils.checkKeyLength)(doc.errors, cst, i, key, keyStart);
- const item = cst.items[i];
-
- if (typeof item.char === 'string') {
- const {
- char,
- offset
- } = item;
-
- if (char === '?' && key === undefined && !explicitKey) {
- explicitKey = true;
- next = ':';
- continue;
- }
-
- if (char === ':') {
- if (key === undefined) key = null;
-
- if (next === ':') {
- next = ',';
- continue;
- }
- } else {
- if (explicitKey) {
- if (key === undefined && char !== ',') key = null;
- explicitKey = false;
- }
-
- if (key !== undefined) {
- items.push(new _Pair.default(key));
- key = undefined;
- keyStart = null;
-
- if (char === ',') {
- next = ':';
- continue;
- }
- }
- }
-
- if (char === '}') {
- if (i === cst.items.length - 1) continue;
- } else if (char === next) {
- next = ':';
- continue;
- }
-
- const msg = `Flow map contains an unexpected ${char}`;
- const err = new _errors.YAMLSyntaxError(cst, msg);
- err.offset = offset;
- doc.errors.push(err);
- } else if (item.type === _constants.Type.BLANK_LINE) {
- comments.push({
- afterKey: !!key,
- before: items.length
- });
- } else if (item.type === _constants.Type.COMMENT) {
- comments.push({
- afterKey: !!key,
- before: items.length,
- comment: item.comment
- });
- } else if (key === undefined) {
- if (next === ',') doc.errors.push(new _errors.YAMLSemanticError(item, 'Separator , missing in flow map'));
- key = doc.resolveNode(item);
- keyStart = explicitKey ? null : item.range.start; // TODO: add error for non-explicit multiline plain key
- } else {
- if (next !== ',') doc.errors.push(new _errors.YAMLSemanticError(item, 'Indicator : missing in flow map entry'));
- items.push(new _Pair.default(key, doc.resolveNode(item)));
- key = undefined;
- explicitKey = false;
- }
- }
-
- (0, _parseUtils.checkFlowCollectionEnd)(doc.errors, cst);
- if (key !== undefined) items.push(new _Pair.default(key));
- return {
- comments,
- items
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/schema/parseSeq.js b/assets/node_modules/yaml/dist/schema/parseSeq.js
deleted file mode 100644
index ee8b1d3..0000000
--- a/assets/node_modules/yaml/dist/schema/parseSeq.js
+++ /dev/null
@@ -1,180 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = parseSeq;
-
-var _constants = require("../constants");
-
-var _errors = require("../errors");
-
-var _Pair = _interopRequireDefault(require("./Pair"));
-
-var _parseUtils = require("./parseUtils");
-
-var _Seq = _interopRequireDefault(require("./Seq"));
-
-var _Collection = _interopRequireDefault(require("./Collection"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function parseSeq(doc, cst) {
- if (cst.type !== _constants.Type.SEQ && cst.type !== _constants.Type.FLOW_SEQ) {
- const msg = `A ${cst.type} node cannot be resolved as a sequence`;
- doc.errors.push(new _errors.YAMLSyntaxError(cst, msg));
- return null;
- }
-
- const {
- comments,
- items
- } = cst.type === _constants.Type.FLOW_SEQ ? resolveFlowSeqItems(doc, cst) : resolveBlockSeqItems(doc, cst);
- const seq = new _Seq.default();
- seq.items = items;
- (0, _parseUtils.resolveComments)(seq, comments);
-
- if (!doc.options.mapAsMap && items.some(it => it instanceof _Pair.default && it.key instanceof _Collection.default)) {
- const warn = 'Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this.';
- doc.warnings.push(new _errors.YAMLWarning(cst, warn));
- }
-
- cst.resolved = seq;
- return seq;
-}
-
-function resolveBlockSeqItems(doc, cst) {
- const comments = [];
- const items = [];
-
- for (let i = 0; i < cst.items.length; ++i) {
- const item = cst.items[i];
-
- switch (item.type) {
- case _constants.Type.BLANK_LINE:
- comments.push({
- before: items.length
- });
- break;
-
- case _constants.Type.COMMENT:
- comments.push({
- comment: item.comment,
- before: items.length
- });
- break;
-
- case _constants.Type.SEQ_ITEM:
- if (item.error) doc.errors.push(item.error);
- items.push(doc.resolveNode(item.node));
-
- if (item.hasProps) {
- const msg = 'Sequence items cannot have tags or anchors before the - indicator';
- doc.errors.push(new _errors.YAMLSemanticError(item, msg));
- }
-
- break;
-
- default:
- if (item.error) doc.errors.push(item.error);
- doc.errors.push(new _errors.YAMLSyntaxError(item, `Unexpected ${item.type} node in sequence`));
- }
- }
-
- return {
- comments,
- items
- };
-}
-
-function resolveFlowSeqItems(doc, cst) {
- const comments = [];
- const items = [];
- let explicitKey = false;
- let key = undefined;
- let keyStart = null;
- let next = '[';
-
- for (let i = 0; i < cst.items.length; ++i) {
- const item = cst.items[i];
-
- if (typeof item.char === 'string') {
- const {
- char,
- offset
- } = item;
-
- if (char !== ':' && (explicitKey || key !== undefined)) {
- if (explicitKey && key === undefined) key = next ? items.pop() : null;
- items.push(new _Pair.default(key));
- explicitKey = false;
- key = undefined;
- keyStart = null;
- }
-
- if (char === next) {
- next = null;
- } else if (!next && char === '?') {
- explicitKey = true;
- } else if (next !== '[' && char === ':' && key === undefined) {
- if (next === ',') {
- key = items.pop();
-
- if (key instanceof _Pair.default) {
- const msg = 'Chaining flow sequence pairs is invalid';
- const err = new _errors.YAMLSemanticError(cst, msg);
- err.offset = offset;
- doc.errors.push(err);
- }
-
- if (!explicitKey) (0, _parseUtils.checkKeyLength)(doc.errors, cst, i, key, keyStart);
- } else {
- key = null;
- }
-
- keyStart = null;
- explicitKey = false; // TODO: add error for non-explicit multiline plain key
-
- next = null;
- } else if (next === '[' || char !== ']' || i < cst.items.length - 1) {
- const msg = `Flow sequence contains an unexpected ${char}`;
- const err = new _errors.YAMLSyntaxError(cst, msg);
- err.offset = offset;
- doc.errors.push(err);
- }
- } else if (item.type === _constants.Type.BLANK_LINE) {
- comments.push({
- before: items.length
- });
- } else if (item.type === _constants.Type.COMMENT) {
- comments.push({
- comment: item.comment,
- before: items.length
- });
- } else {
- if (next) {
- const msg = `Expected a ${next} in flow sequence`;
- doc.errors.push(new _errors.YAMLSemanticError(item, msg));
- }
-
- const value = doc.resolveNode(item);
-
- if (key === undefined) {
- items.push(value);
- } else {
- items.push(new _Pair.default(key, value));
- key = undefined;
- }
-
- keyStart = item.range.start;
- next = ',';
- }
- }
-
- (0, _parseUtils.checkFlowCollectionEnd)(doc.errors, cst);
- if (key !== undefined) items.push(new _Pair.default(key));
- return {
- comments,
- items
- };
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/schema/parseUtils.js b/assets/node_modules/yaml/dist/schema/parseUtils.js
deleted file mode 100644
index c54abe0..0000000
--- a/assets/node_modules/yaml/dist/schema/parseUtils.js
+++ /dev/null
@@ -1,104 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.checkFlowCollectionEnd = checkFlowCollectionEnd;
-exports.checkKeyLength = checkKeyLength;
-exports.resolveComments = resolveComments;
-
-var _errors = require("../errors");
-
-var _constants = require("../constants");
-
-function checkFlowCollectionEnd(errors, cst) {
- let char, name;
-
- switch (cst.type) {
- case _constants.Type.FLOW_MAP:
- char = '}';
- name = 'flow map';
- break;
-
- case _constants.Type.FLOW_SEQ:
- char = ']';
- name = 'flow sequence';
- break;
-
- default:
- errors.push(new _errors.YAMLSemanticError(cst, 'Not a flow collection!?'));
- return;
- }
-
- let lastItem;
-
- for (let i = cst.items.length - 1; i >= 0; --i) {
- const item = cst.items[i];
-
- if (!item || item.type !== _constants.Type.COMMENT) {
- lastItem = item;
- break;
- }
- }
-
- if (lastItem && lastItem.char !== char) {
- const msg = `Expected ${name} to end with ${char}`;
- let err;
-
- if (typeof lastItem.offset === 'number') {
- err = new _errors.YAMLSemanticError(cst, msg);
- err.offset = lastItem.offset + 1;
- } else {
- err = new _errors.YAMLSemanticError(lastItem, msg);
- if (lastItem.range && lastItem.range.end) err.offset = lastItem.range.end - lastItem.range.start;
- }
-
- errors.push(err);
- }
-}
-
-function checkKeyLength(errors, node, itemIdx, key, keyStart) {
- if (!key || typeof keyStart !== 'number') return;
- const item = node.items[itemIdx];
- let keyEnd = item && item.range && item.range.start;
-
- if (!keyEnd) {
- for (let i = itemIdx - 1; i >= 0; --i) {
- const it = node.items[i];
-
- if (it && it.range) {
- keyEnd = it.range.end + 2 * (itemIdx - i);
- break;
- }
- }
- }
-
- if (keyEnd > keyStart + 1024) {
- const k = String(key).substr(0, 8) + '...' + String(key).substr(-8);
- errors.push(new _errors.YAMLSemanticError(node, `The "${k}" key is too long`));
- }
-}
-
-function resolveComments(collection, comments) {
- for (const {
- afterKey,
- before,
- comment
- } of comments) {
- let item = collection.items[before];
-
- if (!item) {
- if (comment !== undefined) {
- if (collection.comment) collection.comment += '\n' + comment;else collection.comment = comment;
- }
- } else {
- if (afterKey && item.value) item = item.value;
-
- if (comment === undefined) {
- if (afterKey || !item.commentBefore) item.spaceBefore = true;
- } else {
- if (item.commentBefore) item.commentBefore += '\n' + comment;else item.commentBefore = comment;
- }
- }
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/stringify.js b/assets/node_modules/yaml/dist/stringify.js
deleted file mode 100644
index 2b6d1ec..0000000
--- a/assets/node_modules/yaml/dist/stringify.js
+++ /dev/null
@@ -1,351 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.stringifyNumber = stringifyNumber;
-exports.stringifyString = stringifyString;
-
-var _addComment = require("./addComment");
-
-var _constants = require("./constants");
-
-var _foldFlowLines = _interopRequireWildcard(require("./foldFlowLines"));
-
-var _options = require("./tags/options");
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function stringifyNumber({
- format,
- minFractionDigits,
- tag,
- value
-}) {
- if (!isFinite(value)) return isNaN(value) ? '.nan' : value < 0 ? '-.inf' : '.inf';
- let n = JSON.stringify(value);
-
- if (!format && minFractionDigits && (!tag || tag === 'tag:yaml.org,2002:float') && /^\d/.test(n)) {
- let i = n.indexOf('.');
-
- if (i < 0) {
- i = n.length;
- n += '.';
- }
-
- let d = minFractionDigits - (n.length - i - 1);
-
- while (d-- > 0) n += '0';
- }
-
- return n;
-}
-
-function lineLengthOverLimit(str, limit) {
- const strLen = str.length;
- if (strLen <= limit) return false;
-
- for (let i = 0, start = 0; i < strLen; ++i) {
- if (str[i] === '\n') {
- if (i - start > limit) return true;
- start = i + 1;
- if (strLen - start <= limit) return false;
- }
- }
-
- return true;
-}
-
-function doubleQuotedString(value, {
- implicitKey,
- indent
-}) {
- const {
- jsonEncoding,
- minMultiLineLength
- } = _options.strOptions.doubleQuoted;
- const json = JSON.stringify(value);
- if (jsonEncoding) return json;
- let str = '';
- let start = 0;
-
- for (let i = 0, ch = json[i]; ch; ch = json[++i]) {
- if (ch === ' ' && json[i + 1] === '\\' && json[i + 2] === 'n') {
- // space before newline needs to be escaped to not be folded
- str += json.slice(start, i) + '\\ ';
- i += 1;
- start = i;
- ch = '\\';
- }
-
- if (ch === '\\') switch (json[i + 1]) {
- case 'u':
- {
- str += json.slice(start, i);
- const code = json.substr(i + 2, 4);
-
- switch (code) {
- case '0000':
- str += '\\0';
- break;
-
- case '0007':
- str += '\\a';
- break;
-
- case '000b':
- str += '\\v';
- break;
-
- case '001b':
- str += '\\e';
- break;
-
- case '0085':
- str += '\\N';
- break;
-
- case '00a0':
- str += '\\_';
- break;
-
- case '2028':
- str += '\\L';
- break;
-
- case '2029':
- str += '\\P';
- break;
-
- default:
- if (code.substr(0, 2) === '00') str += '\\x' + code.substr(2);else str += json.substr(i, 6);
- }
-
- i += 5;
- start = i + 1;
- }
- break;
-
- case 'n':
- if (implicitKey || json[i + 2] === '"' || json.length < minMultiLineLength) {
- i += 1;
- } else {
- // folding will eat first newline
- str += json.slice(start, i) + '\n\n';
-
- while (json[i + 2] === '\\' && json[i + 3] === 'n' && json[i + 4] !== '"') {
- str += '\n';
- i += 2;
- }
-
- str += indent; // space after newline needs to be escaped to not be folded
-
- if (json[i + 2] === ' ') str += '\\';
- i += 1;
- start = i + 1;
- }
-
- break;
-
- default:
- i += 1;
- }
- }
-
- str = start ? str + json.slice(start) : json;
- return implicitKey ? str : (0, _foldFlowLines.default)(str, indent, _foldFlowLines.FOLD_QUOTED, _options.strOptions.fold);
-}
-
-function singleQuotedString(value, ctx) {
- const {
- indent,
- implicitKey
- } = ctx;
-
- if (implicitKey) {
- if (/\n/.test(value)) return doubleQuotedString(value, ctx);
- } else {
- // single quoted string can't have leading or trailing whitespace around newline
- if (/[ \t]\n|\n[ \t]/.test(value)) return doubleQuotedString(value, ctx);
- }
-
- const res = "'" + value.replace(/'/g, "''").replace(/\n+/g, `$&\n${indent}`) + "'";
- return implicitKey ? res : (0, _foldFlowLines.default)(res, indent, _foldFlowLines.FOLD_FLOW, _options.strOptions.fold);
-}
-
-function blockString({
- comment,
- type,
- value
-}, ctx, onComment, onChompKeep) {
- // 1. Block can't end in whitespace unless the last line is non-empty.
- // 2. Strings consisting of only whitespace are best rendered explicitly.
- if (/\n[\t ]+$/.test(value) || /^\s*$/.test(value)) {
- return doubleQuotedString(value, ctx);
- }
-
- const indent = ctx.indent || (ctx.forceBlockIndent ? ' ' : '');
- const indentSize = indent ? '2' : '1'; // root is at -1
-
- const literal = type === _constants.Type.BLOCK_FOLDED ? false : type === _constants.Type.BLOCK_LITERAL ? true : !lineLengthOverLimit(value, _options.strOptions.fold.lineWidth - indent.length);
- let header = literal ? '|' : '>';
- if (!value) return header + '\n';
- let wsStart = '';
- let wsEnd = '';
- value = value.replace(/[\n\t ]*$/, ws => {
- const n = ws.indexOf('\n');
-
- if (n === -1) {
- header += '-'; // strip
- } else if (value === ws || n !== ws.length - 1) {
- header += '+'; // keep
-
- if (onChompKeep) onChompKeep();
- }
-
- wsEnd = ws.replace(/\n$/, '');
- return '';
- }).replace(/^[\n ]*/, ws => {
- if (ws.indexOf(' ') !== -1) header += indentSize;
- const m = ws.match(/ +$/);
-
- if (m) {
- wsStart = ws.slice(0, -m[0].length);
- return m[0];
- } else {
- wsStart = ws;
- return '';
- }
- });
- if (wsEnd) wsEnd = wsEnd.replace(/\n+(?!\n|$)/g, `$&${indent}`);
- if (wsStart) wsStart = wsStart.replace(/\n+/g, `$&${indent}`);
-
- if (comment) {
- header += ' #' + comment.replace(/ ?[\r\n]+/g, ' ');
- if (onComment) onComment();
- }
-
- if (!value) return `${header}${indentSize}\n${indent}${wsEnd}`;
-
- if (literal) {
- value = value.replace(/\n+/g, `$&${indent}`);
- return `${header}\n${indent}${wsStart}${value}${wsEnd}`;
- }
-
- value = value.replace(/\n+/g, '\n$&').replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g, '$1$2') // more-indented lines aren't folded
- // ^ ind.line ^ empty ^ capture next empty lines only at end of indent
- .replace(/\n+/g, `$&${indent}`);
- const body = (0, _foldFlowLines.default)(`${wsStart}${value}${wsEnd}`, indent, _foldFlowLines.FOLD_BLOCK, _options.strOptions.fold);
- return `${header}\n${indent}${body}`;
-}
-
-function plainString(item, ctx, onComment, onChompKeep) {
- const {
- comment,
- type,
- value
- } = item;
- const {
- actualString,
- implicitKey,
- indent,
- inFlow,
- tags
- } = ctx;
-
- if (implicitKey && /[\n[\]{},]/.test(value) || inFlow && /[[\]{},]/.test(value)) {
- return doubleQuotedString(value, ctx);
- }
-
- if (!value || /^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(value)) {
- // not allowed:
- // - empty string, '-' or '?'
- // - start with an indicator character (except [?:-]) or /[?-] /
- // - '\n ', ': ' or ' \n' anywhere
- // - '#' not preceded by a non-space char
- // - end with ' ' or ':'
- return implicitKey || inFlow || value.indexOf('\n') === -1 ? value.indexOf('"') !== -1 && value.indexOf("'") === -1 ? singleQuotedString(value, ctx) : doubleQuotedString(value, ctx) : blockString(item, ctx, onComment, onChompKeep);
- }
-
- if (!implicitKey && !inFlow && type !== _constants.Type.PLAIN && value.indexOf('\n') !== -1) {
- // Where allowed & type not set explicitly, prefer block style for multiline strings
- return blockString(item, ctx, onComment, onChompKeep);
- }
-
- const str = value.replace(/\n+/g, `$&\n${indent}`); // Verify that output will be parsed as a string, as e.g. plain numbers and
- // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),
- // and others in v1.1.
-
- if (actualString && typeof tags.resolveScalar(str).value !== 'string') {
- return doubleQuotedString(value, ctx);
- }
-
- const body = implicitKey ? str : (0, _foldFlowLines.default)(str, indent, _foldFlowLines.FOLD_FLOW, _options.strOptions.fold);
-
- if (comment && !inFlow && (body.indexOf('\n') !== -1 || comment.indexOf('\n') !== -1)) {
- if (onComment) onComment();
- return (0, _addComment.addCommentBefore)(body, indent, comment);
- }
-
- return body;
-}
-
-function stringifyString(item, ctx, onComment, onChompKeep) {
- const {
- defaultType
- } = _options.strOptions;
- const {
- implicitKey,
- inFlow
- } = ctx;
- let {
- type,
- value
- } = item;
-
- if (typeof value !== 'string') {
- value = String(value);
- item = Object.assign({}, item, {
- value
- });
- }
-
- const _stringify = _type => {
- switch (_type) {
- case _constants.Type.BLOCK_FOLDED:
- case _constants.Type.BLOCK_LITERAL:
- return blockString(item, ctx, onComment, onChompKeep);
-
- case _constants.Type.QUOTE_DOUBLE:
- return doubleQuotedString(value, ctx);
-
- case _constants.Type.QUOTE_SINGLE:
- return singleQuotedString(value, ctx);
-
- case _constants.Type.PLAIN:
- return plainString(item, ctx, onComment, onChompKeep);
-
- default:
- return null;
- }
- };
-
- if (type !== _constants.Type.QUOTE_DOUBLE && /[\x00-\x08\x0b-\x1f\x7f-\x9f]/.test(value)) {
- // force double quotes on control characters
- type = _constants.Type.QUOTE_DOUBLE;
- } else if ((implicitKey || inFlow) && (type === _constants.Type.BLOCK_FOLDED || type === _constants.Type.BLOCK_LITERAL)) {
- // should not happen; blocks are not valid inside flow containers
- type = _constants.Type.QUOTE_DOUBLE;
- }
-
- let res = _stringify(type);
-
- if (res === null) {
- res = _stringify(defaultType);
- if (res === null) throw new Error(`Unsupported default string type ${defaultType}`);
- }
-
- return res;
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/tags/core.js b/assets/node_modules/yaml/dist/tags/core.js
deleted file mode 100644
index b69d0cf..0000000
--- a/assets/node_modules/yaml/dist/tags/core.js
+++ /dev/null
@@ -1,96 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _Scalar = _interopRequireDefault(require("../schema/Scalar"));
-
-var _stringify = require("../stringify");
-
-var _failsafe = _interopRequireDefault(require("./failsafe"));
-
-var _options = require("./options");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var _default = _failsafe.default.concat([{
- identify: value => value == null,
- createNode: (schema, value, ctx) => ctx.wrapScalars ? new _Scalar.default(null) : null,
- default: true,
- tag: 'tag:yaml.org,2002:null',
- test: /^(?:~|[Nn]ull|NULL)?$/,
- resolve: () => null,
- options: _options.nullOptions,
- stringify: () => _options.nullOptions.nullStr
-}, {
- identify: value => typeof value === 'boolean',
- default: true,
- tag: 'tag:yaml.org,2002:bool',
- test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,
- resolve: str => str[0] === 't' || str[0] === 'T',
- options: _options.boolOptions,
- stringify: ({
- value
- }) => value ? _options.boolOptions.trueStr : _options.boolOptions.falseStr
-}, {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:int',
- format: 'OCT',
- test: /^0o([0-7]+)$/,
- resolve: (str, oct) => parseInt(oct, 8),
- stringify: ({
- value
- }) => '0o' + value.toString(8)
-}, {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:int',
- test: /^[-+]?[0-9]+$/,
- resolve: str => parseInt(str, 10),
- stringify: _stringify.stringifyNumber
-}, {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:int',
- format: 'HEX',
- test: /^0x([0-9a-fA-F]+)$/,
- resolve: (str, hex) => parseInt(hex, 16),
- stringify: ({
- value
- }) => '0x' + value.toString(16)
-}, {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:float',
- test: /^(?:[-+]?\.inf|(\.nan))$/i,
- resolve: (str, nan) => nan ? NaN : str[0] === '-' ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,
- stringify: _stringify.stringifyNumber
-}, {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:float',
- format: 'EXP',
- test: /^[-+]?(?:0|[1-9][0-9]*)(\.[0-9]*)?[eE][-+]?[0-9]+$/,
- resolve: str => parseFloat(str),
- stringify: ({
- value
- }) => Number(value).toExponential()
-}, {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:float',
- test: /^[-+]?(?:0|[1-9][0-9]*)\.([0-9]*)$/,
-
- resolve(str, frac) {
- const node = new _Scalar.default(parseFloat(str));
- if (frac && frac[frac.length - 1] === '0') node.minFractionDigits = frac.length;
- return node;
- },
-
- stringify: _stringify.stringifyNumber
-}]);
-
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/tags/failsafe/index.js b/assets/node_modules/yaml/dist/tags/failsafe/index.js
deleted file mode 100644
index d85c831..0000000
--- a/assets/node_modules/yaml/dist/tags/failsafe/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _map = _interopRequireDefault(require("./map"));
-
-var _seq = _interopRequireDefault(require("./seq"));
-
-var _string = _interopRequireDefault(require("./string"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var _default = [_map.default, _seq.default, _string.default];
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/tags/failsafe/map.js b/assets/node_modules/yaml/dist/tags/failsafe/map.js
deleted file mode 100644
index dca794a..0000000
--- a/assets/node_modules/yaml/dist/tags/failsafe/map.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _Map = _interopRequireDefault(require("../../schema/Map"));
-
-var _parseMap = _interopRequireDefault(require("../../schema/parseMap"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function createMap(schema, obj, ctx) {
- const map = new _Map.default();
-
- if (obj instanceof Map) {
- for (const [key, value] of obj) map.items.push(schema.createPair(key, value, ctx));
- } else if (obj && typeof obj === 'object') {
- for (const key of Object.keys(obj)) map.items.push(schema.createPair(key, obj[key], ctx));
- }
-
- return map;
-}
-
-var _default = {
- createNode: createMap,
- default: true,
- nodeClass: _Map.default,
- tag: 'tag:yaml.org,2002:map',
- resolve: _parseMap.default
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/tags/failsafe/seq.js b/assets/node_modules/yaml/dist/tags/failsafe/seq.js
deleted file mode 100644
index fe92bcb..0000000
--- a/assets/node_modules/yaml/dist/tags/failsafe/seq.js
+++ /dev/null
@@ -1,34 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _parseSeq = _interopRequireDefault(require("../../schema/parseSeq"));
-
-var _Seq = _interopRequireDefault(require("../../schema/Seq"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function createSeq(schema, obj, ctx) {
- const seq = new _Seq.default();
-
- if (obj && obj[Symbol.iterator]) {
- for (const it of obj) {
- const v = schema.createNode(it, ctx.wrapScalars, null, ctx);
- seq.items.push(v);
- }
- }
-
- return seq;
-}
-
-var _default = {
- createNode: createSeq,
- default: true,
- nodeClass: _Seq.default,
- tag: 'tag:yaml.org,2002:seq',
- resolve: _parseSeq.default
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/tags/failsafe/string.js b/assets/node_modules/yaml/dist/tags/failsafe/string.js
deleted file mode 100644
index 18f029a..0000000
--- a/assets/node_modules/yaml/dist/tags/failsafe/string.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.resolveString = void 0;
-
-var _stringify = require("../../stringify");
-
-var _options = require("../options");
-
-const resolveString = (doc, node) => {
- // on error, will return { str: string, errors: Error[] }
- const res = node.strValue;
- if (!res) return '';
- if (typeof res === 'string') return res;
- res.errors.forEach(error => {
- if (!error.source) error.source = node;
- doc.errors.push(error);
- });
- return res.str;
-};
-
-exports.resolveString = resolveString;
-var _default = {
- identify: value => typeof value === 'string',
- default: true,
- tag: 'tag:yaml.org,2002:str',
- resolve: resolveString,
-
- stringify(item, ctx, onComment, onChompKeep) {
- ctx = Object.assign({
- actualString: true
- }, ctx);
- return (0, _stringify.stringifyString)(item, ctx, onComment, onChompKeep);
- },
-
- options: _options.strOptions
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/tags/index.js b/assets/node_modules/yaml/dist/tags/index.js
deleted file mode 100644
index 2b4cceb..0000000
--- a/assets/node_modules/yaml/dist/tags/index.js
+++ /dev/null
@@ -1,50 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.tags = exports.schemas = void 0;
-
-var _core = _interopRequireDefault(require("./core"));
-
-var _failsafe = _interopRequireDefault(require("./failsafe"));
-
-var _json = _interopRequireDefault(require("./json"));
-
-var _yaml = _interopRequireDefault(require("./yaml-1.1"));
-
-var _map = _interopRequireDefault(require("./failsafe/map"));
-
-var _seq = _interopRequireDefault(require("./failsafe/seq"));
-
-var _binary = _interopRequireDefault(require("./yaml-1.1/binary"));
-
-var _omap = _interopRequireDefault(require("./yaml-1.1/omap"));
-
-var _pairs = _interopRequireDefault(require("./yaml-1.1/pairs"));
-
-var _set = _interopRequireDefault(require("./yaml-1.1/set"));
-
-var _timestamp = require("./yaml-1.1/timestamp");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const schemas = {
- core: _core.default,
- failsafe: _failsafe.default,
- json: _json.default,
- yaml11: _yaml.default
-};
-exports.schemas = schemas;
-const tags = {
- binary: _binary.default,
- floatTime: _timestamp.floatTime,
- intTime: _timestamp.intTime,
- map: _map.default,
- omap: _omap.default,
- pairs: _pairs.default,
- seq: _seq.default,
- set: _set.default,
- timestamp: _timestamp.timestamp
-};
-exports.tags = tags; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/tags/json.js b/assets/node_modules/yaml/dist/tags/json.js
deleted file mode 100644
index 3f44db3..0000000
--- a/assets/node_modules/yaml/dist/tags/json.js
+++ /dev/null
@@ -1,67 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _map = _interopRequireDefault(require("./failsafe/map"));
-
-var _seq = _interopRequireDefault(require("./failsafe/seq"));
-
-var _Scalar = _interopRequireDefault(require("../schema/Scalar"));
-
-var _string = require("./failsafe/string");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const schema = [_map.default, _seq.default, {
- identify: value => typeof value === 'string',
- default: true,
- tag: 'tag:yaml.org,2002:str',
- resolve: _string.resolveString,
- stringify: value => JSON.stringify(value)
-}, {
- identify: value => value == null,
- createNode: (schema, value, ctx) => ctx.wrapScalars ? new _Scalar.default(null) : null,
- default: true,
- tag: 'tag:yaml.org,2002:null',
- test: /^null$/,
- resolve: () => null,
- stringify: value => JSON.stringify(value)
-}, {
- identify: value => typeof value === 'boolean',
- default: true,
- tag: 'tag:yaml.org,2002:bool',
- test: /^true$/,
- resolve: () => true,
- stringify: value => JSON.stringify(value)
-}, {
- identify: value => typeof value === 'boolean',
- default: true,
- tag: 'tag:yaml.org,2002:bool',
- test: /^false$/,
- resolve: () => false,
- stringify: value => JSON.stringify(value)
-}, {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:int',
- test: /^-?(?:0|[1-9][0-9]*)$/,
- resolve: str => parseInt(str, 10),
- stringify: value => JSON.stringify(value)
-}, {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:float',
- test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,
- resolve: str => parseFloat(str),
- stringify: value => JSON.stringify(value)
-}];
-
-schema.scalarFallback = str => {
- throw new SyntaxError(`Unresolved plain scalar ${JSON.stringify(str)}`);
-};
-
-var _default = schema;
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/tags/options.js b/assets/node_modules/yaml/dist/tags/options.js
deleted file mode 100644
index 844df96..0000000
--- a/assets/node_modules/yaml/dist/tags/options.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.strOptions = exports.nullOptions = exports.boolOptions = exports.binaryOptions = void 0;
-
-var _constants = require("../constants");
-
-const binaryOptions = {
- defaultType: _constants.Type.BLOCK_LITERAL,
- lineWidth: 76
-};
-exports.binaryOptions = binaryOptions;
-const boolOptions = {
- trueStr: 'true',
- falseStr: 'false'
-};
-exports.boolOptions = boolOptions;
-const nullOptions = {
- nullStr: 'null'
-};
-exports.nullOptions = nullOptions;
-const strOptions = {
- defaultType: _constants.Type.PLAIN,
- doubleQuoted: {
- jsonEncoding: false,
- minMultiLineLength: 40
- },
- fold: {
- lineWidth: 80,
- minContentWidth: 20
- }
-};
-exports.strOptions = strOptions; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/tags/yaml-1.1/binary.js b/assets/node_modules/yaml/dist/tags/yaml-1.1/binary.js
deleted file mode 100644
index 99bd82a..0000000
--- a/assets/node_modules/yaml/dist/tags/yaml-1.1/binary.js
+++ /dev/null
@@ -1,94 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _constants = require("../../constants");
-
-var _errors = require("../../errors");
-
-var _stringify = require("../../stringify");
-
-var _string = require("../failsafe/string");
-
-var _options = require("../options");
-
-/* global atob, btoa, Buffer */
-var _default = {
- identify: value => value instanceof Uint8Array,
- // Buffer inherits from Uint8Array
- default: false,
- tag: 'tag:yaml.org,2002:binary',
-
- /**
- * Returns a Buffer in node and an Uint8Array in browsers
- *
- * To use the resulting buffer as an image, you'll want to do something like:
- *
- * const blob = new Blob([buffer], { type: 'image/jpeg' })
- * document.querySelector('#photo').src = URL.createObjectURL(blob)
- */
- resolve: (doc, node) => {
- if (typeof Buffer === 'function') {
- const src = (0, _string.resolveString)(doc, node);
- return Buffer.from(src, 'base64');
- } else if (typeof atob === 'function') {
- const src = atob((0, _string.resolveString)(doc, node));
- const buffer = new Uint8Array(src.length);
-
- for (let i = 0; i < src.length; ++i) buffer[i] = src.charCodeAt(i);
-
- return buffer;
- } else {
- doc.errors.push(new _errors.YAMLReferenceError(node, 'This environment does not support reading binary tags; either Buffer or atob is required'));
- return null;
- }
- },
- options: _options.binaryOptions,
- stringify: ({
- comment,
- type,
- value
- }, ctx, onComment, onChompKeep) => {
- let src;
-
- if (typeof Buffer === 'function') {
- src = value instanceof Buffer ? value.toString('base64') : Buffer.from(value.buffer).toString('base64');
- } else if (typeof btoa === 'function') {
- let s = '';
-
- for (let i = 0; i < value.length; ++i) s += String.fromCharCode(value[i]);
-
- src = btoa(s);
- } else {
- throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');
- }
-
- if (!type) type = _options.binaryOptions.defaultType;
-
- if (type === _constants.Type.QUOTE_DOUBLE) {
- value = src;
- } else {
- const {
- lineWidth
- } = _options.binaryOptions;
- const n = Math.ceil(src.length / lineWidth);
- const lines = new Array(n);
-
- for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {
- lines[i] = src.substr(o, lineWidth);
- }
-
- value = lines.join(type === _constants.Type.BLOCK_LITERAL ? '\n' : ' ');
- }
-
- return (0, _stringify.stringifyString)({
- comment,
- type,
- value
- }, ctx, onComment, onChompKeep);
- }
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/tags/yaml-1.1/index.js b/assets/node_modules/yaml/dist/tags/yaml-1.1/index.js
deleted file mode 100644
index ed16938..0000000
--- a/assets/node_modules/yaml/dist/tags/yaml-1.1/index.js
+++ /dev/null
@@ -1,131 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = void 0;
-
-var _Scalar = _interopRequireDefault(require("../../schema/Scalar"));
-
-var _stringify = require("../../stringify");
-
-var _failsafe = _interopRequireDefault(require("../failsafe"));
-
-var _options = require("../options");
-
-var _binary = _interopRequireDefault(require("./binary"));
-
-var _omap = _interopRequireDefault(require("./omap"));
-
-var _pairs = _interopRequireDefault(require("./pairs"));
-
-var _set = _interopRequireDefault(require("./set"));
-
-var _timestamp = require("./timestamp");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var _default = _failsafe.default.concat([{
- identify: value => value == null,
- createNode: (schema, value, ctx) => ctx.wrapScalars ? new _Scalar.default(null) : null,
- default: true,
- tag: 'tag:yaml.org,2002:null',
- test: /^(?:~|[Nn]ull|NULL)?$/,
- resolve: () => null,
- options: _options.nullOptions,
- stringify: () => _options.nullOptions.nullStr
-}, {
- identify: value => typeof value === 'boolean',
- default: true,
- tag: 'tag:yaml.org,2002:bool',
- test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,
- resolve: () => true,
- options: _options.boolOptions,
- stringify: ({
- value
- }) => value ? _options.boolOptions.trueStr : _options.boolOptions.falseStr
-}, {
- identify: value => typeof value === 'boolean',
- default: true,
- tag: 'tag:yaml.org,2002:bool',
- test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/i,
- resolve: () => false,
- options: _options.boolOptions,
- stringify: ({
- value
- }) => value ? _options.boolOptions.trueStr : _options.boolOptions.falseStr
-}, {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:int',
- format: 'BIN',
- test: /^0b([0-1_]+)$/,
- resolve: (str, bin) => parseInt(bin.replace(/_/g, ''), 2),
- stringify: ({
- value
- }) => '0b' + value.toString(2)
-}, {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:int',
- format: 'OCT',
- test: /^[-+]?0([0-7_]+)$/,
- resolve: (str, oct) => parseInt(oct.replace(/_/g, ''), 8),
- stringify: ({
- value
- }) => (value < 0 ? '-0' : '0') + value.toString(8)
-}, {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:int',
- test: /^[-+]?[0-9][0-9_]*$/,
- resolve: str => parseInt(str.replace(/_/g, ''), 10),
- stringify: _stringify.stringifyNumber
-}, {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:int',
- format: 'HEX',
- test: /^0x([0-9a-fA-F_]+)$/,
- resolve: (str, hex) => parseInt(hex.replace(/_/g, ''), 16),
- stringify: ({
- value
- }) => (value < 0 ? '-0x' : '0x') + value.toString(16)
-}, {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:float',
- test: /^(?:[-+]?\.inf|(\.nan))$/i,
- resolve: (str, nan) => nan ? NaN : str[0] === '-' ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,
- stringify: _stringify.stringifyNumber
-}, {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:float',
- format: 'EXP',
- test: /^[-+]?([0-9][0-9_]*)?(\.[0-9_]*)?[eE][-+]?[0-9]+$/,
- resolve: str => parseFloat(str.replace(/_/g, '')),
- stringify: ({
- value
- }) => Number(value).toExponential()
-}, {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:float',
- test: /^[-+]?(?:[0-9][0-9_]*)?\.([0-9_]*)$/,
-
- resolve(str, frac) {
- const node = new _Scalar.default(parseFloat(str.replace(/_/g, '')));
-
- if (frac) {
- const f = frac.replace(/_/g, '');
- if (f[f.length - 1] === '0') node.minFractionDigits = f.length;
- }
-
- return node;
- },
-
- stringify: _stringify.stringifyNumber
-}], _binary.default, _omap.default, _pairs.default, _set.default, _timestamp.intTime, _timestamp.floatTime, _timestamp.timestamp);
-
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/tags/yaml-1.1/omap.js b/assets/node_modules/yaml/dist/tags/yaml-1.1/omap.js
deleted file mode 100644
index cea13db..0000000
--- a/assets/node_modules/yaml/dist/tags/yaml-1.1/omap.js
+++ /dev/null
@@ -1,105 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.YAMLOMap = void 0;
-
-var _errors = require("../../errors");
-
-var _toJSON = _interopRequireDefault(require("../../toJSON"));
-
-var _Map = _interopRequireDefault(require("../../schema/Map"));
-
-var _Pair = _interopRequireDefault(require("../../schema/Pair"));
-
-var _Scalar = _interopRequireDefault(require("../../schema/Scalar"));
-
-var _Seq = _interopRequireDefault(require("../../schema/Seq"));
-
-var _pairs = require("./pairs");
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-class YAMLOMap extends _Seq.default {
- constructor() {
- super();
-
- _defineProperty(this, "add", _Map.default.prototype.add.bind(this));
-
- _defineProperty(this, "delete", _Map.default.prototype.delete.bind(this));
-
- _defineProperty(this, "get", _Map.default.prototype.get.bind(this));
-
- _defineProperty(this, "has", _Map.default.prototype.has.bind(this));
-
- _defineProperty(this, "set", _Map.default.prototype.set.bind(this));
-
- this.tag = YAMLOMap.tag;
- }
-
- toJSON(_, ctx) {
- const map = new Map();
- if (ctx && ctx.onCreate) ctx.onCreate(map);
-
- for (const pair of this.items) {
- let key, value;
-
- if (pair instanceof _Pair.default) {
- key = (0, _toJSON.default)(pair.key, '', ctx);
- value = (0, _toJSON.default)(pair.value, key, ctx);
- } else {
- key = (0, _toJSON.default)(pair, '', ctx);
- }
-
- if (map.has(key)) throw new Error('Ordered maps must not include duplicate keys');
- map.set(key, value);
- }
-
- return map;
- }
-
-}
-
-exports.YAMLOMap = YAMLOMap;
-
-_defineProperty(YAMLOMap, "tag", 'tag:yaml.org,2002:omap');
-
-function parseOMap(doc, cst) {
- const pairs = (0, _pairs.parsePairs)(doc, cst);
- const seenKeys = [];
-
- for (const {
- key
- } of pairs.items) {
- if (key instanceof _Scalar.default) {
- if (seenKeys.includes(key.value)) {
- const msg = 'Ordered maps must not include duplicate keys';
- throw new _errors.YAMLSemanticError(cst, msg);
- } else {
- seenKeys.push(key.value);
- }
- }
- }
-
- return Object.assign(new YAMLOMap(), pairs);
-}
-
-function createOMap(schema, iterable, ctx) {
- const pairs = (0, _pairs.createPairs)(schema, iterable, ctx);
- const omap = new YAMLOMap();
- omap.items = pairs.items;
- return omap;
-}
-
-var _default = {
- identify: value => value instanceof Map,
- nodeClass: YAMLOMap,
- default: false,
- tag: 'tag:yaml.org,2002:omap',
- resolve: parseOMap,
- createNode: createOMap
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/tags/yaml-1.1/pairs.js b/assets/node_modules/yaml/dist/tags/yaml-1.1/pairs.js
deleted file mode 100644
index d8af4a3..0000000
--- a/assets/node_modules/yaml/dist/tags/yaml-1.1/pairs.js
+++ /dev/null
@@ -1,80 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.parsePairs = parsePairs;
-exports.createPairs = createPairs;
-exports.default = void 0;
-
-var _errors = require("../../errors");
-
-var _Map = _interopRequireDefault(require("../../schema/Map"));
-
-var _Pair = _interopRequireDefault(require("../../schema/Pair"));
-
-var _parseSeq = _interopRequireDefault(require("../../schema/parseSeq"));
-
-var _Seq = _interopRequireDefault(require("../../schema/Seq"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function parsePairs(doc, cst) {
- const seq = (0, _parseSeq.default)(doc, cst);
-
- for (let i = 0; i < seq.items.length; ++i) {
- let item = seq.items[i];
- if (item instanceof _Pair.default) continue;else if (item instanceof _Map.default) {
- if (item.items.length > 1) {
- const msg = 'Each pair must have its own sequence indicator';
- throw new _errors.YAMLSemanticError(cst, msg);
- }
-
- const pair = item.items[0] || new _Pair.default();
- if (item.commentBefore) pair.commentBefore = pair.commentBefore ? `${item.commentBefore}\n${pair.commentBefore}` : item.commentBefore;
- if (item.comment) pair.comment = pair.comment ? `${item.comment}\n${pair.comment}` : item.comment;
- item = pair;
- }
- seq.items[i] = item instanceof _Pair.default ? item : new _Pair.default(item);
- }
-
- return seq;
-}
-
-function createPairs(schema, iterable, ctx) {
- const pairs = new _Seq.default();
- pairs.tag = 'tag:yaml.org,2002:pairs';
-
- for (const it of iterable) {
- let key, value;
-
- if (Array.isArray(it)) {
- if (it.length === 2) {
- key = it[0];
- value = it[1];
- } else throw new TypeError(`Expected [key, value] tuple: ${it}`);
- } else if (it && it instanceof Object) {
- const keys = Object.keys(it);
-
- if (keys.length === 1) {
- key = keys[0];
- value = it[key];
- } else throw new TypeError(`Expected { key: value } tuple: ${it}`);
- } else {
- key = it;
- }
-
- const pair = schema.createPair(key, value, ctx);
- pairs.items.push(pair);
- }
-
- return pairs;
-}
-
-var _default = {
- default: false,
- tag: 'tag:yaml.org,2002:pairs',
- resolve: parsePairs,
- createNode: createPairs
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/tags/yaml-1.1/set.js b/assets/node_modules/yaml/dist/tags/yaml-1.1/set.js
deleted file mode 100644
index 123ae0e..0000000
--- a/assets/node_modules/yaml/dist/tags/yaml-1.1/set.js
+++ /dev/null
@@ -1,91 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = exports.YAMLSet = void 0;
-
-var _errors = require("../../errors");
-
-var _Map = _interopRequireWildcard(require("../../schema/Map"));
-
-var _Pair = _interopRequireDefault(require("../../schema/Pair"));
-
-var _parseMap = _interopRequireDefault(require("../../schema/parseMap"));
-
-var _Scalar = _interopRequireDefault(require("../../schema/Scalar"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
-
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-class YAMLSet extends _Map.default {
- constructor() {
- super();
- this.tag = YAMLSet.tag;
- }
-
- add(key) {
- const pair = key instanceof _Pair.default ? key : new _Pair.default(key);
- const prev = (0, _Map.findPair)(this.items, pair.key);
- if (!prev) this.items.push(pair);
- }
-
- get(key, keepPair) {
- const pair = (0, _Map.findPair)(this.items, key);
- return !keepPair && pair instanceof _Pair.default ? pair.key instanceof _Scalar.default ? pair.key.value : pair.key : pair;
- }
-
- set(key, value) {
- if (typeof value !== 'boolean') throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);
- const prev = (0, _Map.findPair)(this.items, key);
-
- if (prev && !value) {
- this.items.splice(this.items.indexOf(prev), 1);
- } else if (!prev && value) {
- this.items.push(new _Pair.default(key));
- }
- }
-
- toJSON(_, ctx) {
- return super.toJSON(_, ctx, Set);
- }
-
- toString(ctx, onComment, onChompKeep) {
- if (!ctx) return JSON.stringify(this);
- if (this.hasAllNullValues()) return super.toString(ctx, onComment, onChompKeep);else throw new Error('Set items must all have null values');
- }
-
-}
-
-exports.YAMLSet = YAMLSet;
-
-_defineProperty(YAMLSet, "tag", 'tag:yaml.org,2002:set');
-
-function parseSet(doc, cst) {
- const map = (0, _parseMap.default)(doc, cst);
- if (!map.hasAllNullValues()) throw new _errors.YAMLSemanticError(cst, 'Set items must all have null values');
- return Object.assign(new YAMLSet(), map);
-}
-
-function createSet(schema, iterable, ctx) {
- const set = new YAMLSet();
-
- for (const value of iterable) set.items.push(schema.createPair(value, null, ctx));
-
- return set;
-}
-
-var _default = {
- identify: value => value instanceof Set,
- nodeClass: YAMLSet,
- default: false,
- tag: 'tag:yaml.org,2002:set',
- resolve: parseSet,
- createNode: createSet
-};
-exports.default = _default; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/tags/yaml-1.1/timestamp.js b/assets/node_modules/yaml/dist/tags/yaml-1.1/timestamp.js
deleted file mode 100644
index 8d0b3d9..0000000
--- a/assets/node_modules/yaml/dist/tags/yaml-1.1/timestamp.js
+++ /dev/null
@@ -1,93 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.timestamp = exports.floatTime = exports.intTime = void 0;
-
-var _stringify = require("../../stringify");
-
-const parseSexagesimal = (sign, parts) => {
- const n = parts.split(':').reduce((n, p) => n * 60 + Number(p), 0);
- return sign === '-' ? -n : n;
-}; // hhhh:mm:ss.sss
-
-
-const stringifySexagesimal = ({
- value
-}) => {
- if (isNaN(value) || !isFinite(value)) return (0, _stringify.stringifyNumber)(value);
- let sign = '';
-
- if (value < 0) {
- sign = '-';
- value = Math.abs(value);
- }
-
- const parts = [value % 60]; // seconds, including ms
-
- if (value < 60) {
- parts.unshift(0); // at least one : is required
- } else {
- value = Math.round((value - parts[0]) / 60);
- parts.unshift(value % 60); // minutes
-
- if (value >= 60) {
- value = Math.round((value - parts[0]) / 60);
- parts.unshift(value); // hours
- }
- }
-
- return sign + parts.map(n => n < 10 ? '0' + String(n) : String(n)).join(':').replace(/000000\d*$/, '') // % 60 may introduce error
- ;
-};
-
-const intTime = {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:int',
- format: 'TIME',
- test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+)$/,
- resolve: (str, sign, parts) => parseSexagesimal(sign, parts.replace(/_/g, '')),
- stringify: stringifySexagesimal
-};
-exports.intTime = intTime;
-const floatTime = {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:float',
- format: 'TIME',
- test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*)$/,
- resolve: (str, sign, parts) => parseSexagesimal(sign, parts.replace(/_/g, '')),
- stringify: stringifySexagesimal
-};
-exports.floatTime = floatTime;
-const timestamp = {
- identify: value => value instanceof Date,
- default: true,
- tag: 'tag:yaml.org,2002:timestamp',
- // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part
- // may be omitted altogether, resulting in a date format. In such a case, the time part is
- // assumed to be 00:00:00Z (start of day, UTC).
- test: RegExp('^(?:' + '([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd
- '(?:(?:t|T|[ \\t]+)' + // t | T | whitespace
- '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?
- '(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30
- ')?' + ')$'),
- resolve: (str, year, month, day, hour, minute, second, millisec, tz) => {
- if (millisec) millisec = (millisec + '00').substr(1, 3);
- let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec || 0);
-
- if (tz && tz !== 'Z') {
- let d = parseSexagesimal(tz[0], tz.slice(1));
- if (Math.abs(d) < 30) d *= 60;
- date -= 60000 * d;
- }
-
- return new Date(date);
- },
- stringify: ({
- value
- }) => value.toISOString().replace(/((T00:00)?:00)?\.000Z$/, '')
-};
-exports.timestamp = timestamp; \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/test-events.js b/assets/node_modules/yaml/dist/test-events.js
deleted file mode 100644
index 073c82f..0000000
--- a/assets/node_modules/yaml/dist/test-events.js
+++ /dev/null
@@ -1,165 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = testEvents;
-
-var _parse = _interopRequireDefault(require("./cst/parse"));
-
-var _Document = _interopRequireDefault(require("./Document"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-// test harness for yaml-test-suite event tests
-function testEvents(src, options) {
- const opt = Object.assign({
- keepCstNodes: true,
- keepNodeTypes: true,
- version: '1.2'
- }, options);
- const docs = (0, _parse.default)(src).map(cstDoc => new _Document.default(opt).parse(cstDoc));
- const errDoc = docs.find(doc => doc.errors.length > 0);
- const error = errDoc ? errDoc.errors[0].message : null;
- const events = ['+STR'];
-
- try {
- for (let i = 0; i < docs.length; ++i) {
- const doc = docs[i];
- let root = doc.contents;
- if (Array.isArray(root)) root = root[0];
- const [rootStart, rootEnd] = doc.range || [0, 0];
- let e = doc.errors[0] && doc.errors[0].source;
- if (e && e.type === 'SEQ_ITEM') e = e.node;
- if (e && (e.type === 'DOCUMENT' || e.range.start < rootStart)) throw new Error();
- let docStart = '+DOC';
- const pre = src.slice(0, rootStart);
- const explicitDoc = /---\s*$/.test(pre);
- if (explicitDoc) docStart += ' ---';else if (!doc.contents) continue;
- events.push(docStart);
- addEvents(events, doc, e, root);
- if (doc.contents && doc.contents.length > 1) throw new Error();
- let docEnd = '-DOC';
-
- if (rootEnd) {
- const post = src.slice(rootEnd);
- if (/^\.\.\./.test(post)) docEnd += ' ...';
- }
-
- events.push(docEnd);
- }
- } catch (e) {
- return {
- events,
- error: error || e
- };
- }
-
- events.push('-STR');
- return {
- events,
- error
- };
-}
-
-function addEvents(events, doc, e, node) {
- if (!node) {
- events.push('=VAL :');
- return;
- }
-
- if (e && node.cstNode === e) throw new Error();
- let props = '';
- let anchor = doc.anchors.getName(node);
-
- if (anchor) {
- if (/\d$/.test(anchor)) {
- const alt = anchor.replace(/\d$/, '');
- if (doc.anchors.getNode(alt)) anchor = alt;
- }
-
- props = ` &${anchor}`;
- }
-
- if (node.cstNode && node.cstNode.tag) {
- const {
- handle,
- suffix
- } = node.cstNode.tag;
- props += handle === '!' && !suffix ? ' <!>' : ` <${node.tag}>`;
- }
-
- let scalar = null;
-
- switch (node.type) {
- case 'ALIAS':
- {
- let alias = doc.anchors.getName(node.source);
-
- if (/\d$/.test(alias)) {
- const alt = alias.replace(/\d$/, '');
- if (doc.anchors.getNode(alt)) alias = alt;
- }
-
- events.push(`=ALI${props} *${alias}`);
- }
- break;
-
- case 'BLOCK_FOLDED':
- scalar = '>';
- break;
-
- case 'BLOCK_LITERAL':
- scalar = '|';
- break;
-
- case 'PLAIN':
- scalar = ':';
- break;
-
- case 'QUOTE_DOUBLE':
- scalar = '"';
- break;
-
- case 'QUOTE_SINGLE':
- scalar = "'";
- break;
-
- case 'PAIR':
- events.push(`+MAP${props}`);
- addEvents(events, doc, e, node.key);
- addEvents(events, doc, e, node.value);
- events.push('-MAP');
- break;
-
- case 'FLOW_SEQ':
- case 'SEQ':
- events.push(`+SEQ${props}`);
- node.items.forEach(item => {
- addEvents(events, doc, e, item);
- });
- events.push('-SEQ');
- break;
-
- case 'FLOW_MAP':
- case 'MAP':
- events.push(`+MAP${props}`);
- node.items.forEach(({
- key,
- value
- }) => {
- addEvents(events, doc, e, key);
- addEvents(events, doc, e, value);
- });
- events.push('-MAP');
- break;
-
- default:
- throw new Error(`Unexpected node type ${node.type}`);
- }
-
- if (scalar) {
- const value = node.cstNode.strValue.replace(/\\/g, '\\\\').replace(/\0/g, '\\0').replace(/\x07/g, '\\a').replace(/\x08/g, '\\b').replace(/\t/g, '\\t').replace(/\n/g, '\\n').replace(/\v/g, '\\v').replace(/\f/g, '\\f').replace(/\r/g, '\\r').replace(/\x1b/g, '\\e');
- events.push(`=VAL${props} ${scalar}${value}`);
- }
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/toJSON.js b/assets/node_modules/yaml/dist/toJSON.js
deleted file mode 100644
index 4ce240d..0000000
--- a/assets/node_modules/yaml/dist/toJSON.js
+++ /dev/null
@@ -1,23 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.default = toJSON;
-
-function toJSON(value, arg, ctx) {
- if (Array.isArray(value)) return value.map((v, i) => toJSON(v, String(i), ctx));
-
- if (value && typeof value.toJSON === 'function') {
- const anchor = ctx && ctx.anchors && ctx.anchors.find(a => a.node === value);
- if (anchor) ctx.onCreate = res => {
- anchor.res = res;
- delete ctx.onCreate;
- };
- const res = value.toJSON(arg, ctx);
- if (anchor && ctx.onCreate) ctx.onCreate(res);
- return res;
- }
-
- return value;
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/dist/warnings.js b/assets/node_modules/yaml/dist/warnings.js
deleted file mode 100644
index b00d85f..0000000
--- a/assets/node_modules/yaml/dist/warnings.js
+++ /dev/null
@@ -1,39 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.warn = warn;
-exports.warnFileDeprecation = warnFileDeprecation;
-exports.warnOptionDeprecation = warnOptionDeprecation;
-
-/* global global, console */
-function warn(warning, type) {
- if (global && global._YAML_SILENCE_WARNINGS) return;
- const {
- emitWarning
- } = global && global.process; // This will throw in Jest if `warning` is an Error instance due to
- // https://github.com/facebook/jest/issues/2549
-
- if (emitWarning) emitWarning(warning, type);else {
- // eslint-disable-next-line no-console
- console.warn(type ? `${type}: ${warning}` : warning);
- }
-}
-
-function warnFileDeprecation(filename) {
- if (global && global._YAML_SILENCE_DEPRECATION_WARNINGS) return;
- const path = filename.replace(/.*yaml[/\\]/i, '').replace(/\.js$/, '').replace(/\\/g, '/');
- warn(`The endpoint 'yaml/${path}' will be removed in a future release.`, 'DeprecationWarning');
-}
-
-const warned = {};
-
-function warnOptionDeprecation(name, alternative) {
- if (global && global._YAML_SILENCE_DEPRECATION_WARNINGS) return;
- if (warned[name]) return;
- warned[name] = true;
- let msg = `The option '${name}' will be removed in a future release`;
- msg += alternative ? `, use '${alternative}' instead.` : '.';
- warn(msg, 'DeprecationWarning');
-} \ No newline at end of file
diff --git a/assets/node_modules/yaml/index.js b/assets/node_modules/yaml/index.js
deleted file mode 100644
index c62e68e..0000000
--- a/assets/node_modules/yaml/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./dist').default
diff --git a/assets/node_modules/yaml/map.js b/assets/node_modules/yaml/map.js
deleted file mode 100644
index a09f227..0000000
--- a/assets/node_modules/yaml/map.js
+++ /dev/null
@@ -1,2 +0,0 @@
-module.exports = require('./dist/schema/Map').default
-require('./dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/package.json b/assets/node_modules/yaml/package.json
deleted file mode 100644
index cf3e203..0000000
--- a/assets/node_modules/yaml/package.json
+++ /dev/null
@@ -1,93 +0,0 @@
-{
- "name": "yaml",
- "version": "1.7.2",
- "license": "ISC",
- "author": "Eemeli Aro <eemeli@gmail.com>",
- "repository": "github:eemeli/yaml",
- "description": "JavaScript parser and stringifier for YAML",
- "keywords": [
- "YAML",
- "parser",
- "stringifier"
- ],
- "homepage": "https://eemeli.org/yaml/",
- "files": [
- "browser/",
- "dist/",
- "types/",
- "*.js",
- "!.*.js"
- ],
- "main": "./index.js",
- "browser": {
- "./index.js": "./browser/index.js",
- "./map.js": "./browser/map.js",
- "./pair.js": "./browser/pair.js",
- "./parse-cst.js": "./browser/parse-cst.js",
- "./scalar.js": "./browser/scalar.js",
- "./schema.js": "./browser/schema.js",
- "./seq.js": "./browser/seq.js",
- "./types.js": "./browser/types.js",
- "./types/binary.js": "./browser/types/binary.js",
- "./types/omap.js": "./browser/types/omap.js",
- "./types/pairs.js": "./browser/types/pairs.js",
- "./types/set.js": "./browser/types/set.js",
- "./types/timestamp.js": "./browser/types/timestamp.js",
- "./util.js": "./browser/util.js"
- },
- "scripts": {
- "browser:build": "BABEL_ENV=browser babel src/ --out-dir browser/dist/",
- "browser:copy": "cpy '*.js' '!*.config.js' types/ browser/ --parents",
- "clean": "git clean -fdxe node_modules",
- "dist:build": "babel src/ --out-dir dist/",
- "build": "npm run dist:build && npm run browser:build && npm run browser:copy",
- "prettier": "prettier --write \"{src,tests}/**/*.js\"",
- "lint": "eslint src/",
- "start": "npm run dist:build && node -i -e 'YAML=require(\".\")'",
- "test": "TRACE_LEVEL=log jest",
- "test:trace": "TRACE_LEVEL=trace,log jest --no-cache",
- "docs:install": "cd docs/ && bundle install",
- "docs:deploy": "cd docs/ && ./deploy.sh",
- "docs": "cd docs/ && bundle exec middleman server",
- "preversion": "npm test && npm run build",
- "prepublishOnly": "npm run clean && npm test && npm run build"
- },
- "browserslist": "> 0.5%, not dead",
- "jest": {
- "testMatch": [
- "**/tests/**/*.js"
- ],
- "testPathIgnorePatterns": [
- "tests/common",
- "tests/cst/common"
- ]
- },
- "prettier": {
- "semi": false,
- "singleQuote": true
- },
- "devDependencies": {
- "@babel/cli": "^7.6.4",
- "@babel/core": "^7.6.4",
- "@babel/plugin-proposal-class-properties": "^7.5.5",
- "@babel/plugin-transform-runtime": "^7.6.2",
- "@babel/preset-env": "^7.6.3",
- "babel-eslint": "^10.0.3",
- "babel-jest": "^24.9.0",
- "babel-plugin-trace": "^1.1.0",
- "common-tags": "^1.8.0",
- "cpy-cli": "^2.0.0",
- "eslint": "^6.5.1",
- "eslint-config-prettier": "^6.4.0",
- "eslint-plugin-prettier": "^3.1.1",
- "fast-check": "^1.17.0",
- "jest": "^24.9.0",
- "prettier": "^1.18.2"
- },
- "dependencies": {
- "@babel/runtime": "^7.6.3"
- },
- "engines": {
- "node": ">= 6"
- }
-}
diff --git a/assets/node_modules/yaml/pair.js b/assets/node_modules/yaml/pair.js
deleted file mode 100644
index 7ab19b5..0000000
--- a/assets/node_modules/yaml/pair.js
+++ /dev/null
@@ -1,2 +0,0 @@
-module.exports = require('./dist/schema/Pair').default
-require('./dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/parse-cst.js b/assets/node_modules/yaml/parse-cst.js
deleted file mode 100644
index 64108c6..0000000
--- a/assets/node_modules/yaml/parse-cst.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./dist/cst/parse').default
diff --git a/assets/node_modules/yaml/scalar.js b/assets/node_modules/yaml/scalar.js
deleted file mode 100644
index eb3e7e8..0000000
--- a/assets/node_modules/yaml/scalar.js
+++ /dev/null
@@ -1,2 +0,0 @@
-module.exports = require('./dist/schema/Scalar').default
-require('./dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/schema.js b/assets/node_modules/yaml/schema.js
deleted file mode 100644
index ddfbd10..0000000
--- a/assets/node_modules/yaml/schema.js
+++ /dev/null
@@ -1,7 +0,0 @@
-module.exports = require('./dist/schema').default
-var opt = require('./dist/tags/options')
-module.exports.nullOptions = opt.nullOptions
-module.exports.strOptions = opt.strOptions
-module.exports.stringify = require('./dist/stringify').stringifyString
-
-require('./dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/seq.js b/assets/node_modules/yaml/seq.js
deleted file mode 100644
index 4915329..0000000
--- a/assets/node_modules/yaml/seq.js
+++ /dev/null
@@ -1,2 +0,0 @@
-module.exports = require('./dist/schema/Seq').default
-require('./dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/types.js b/assets/node_modules/yaml/types.js
deleted file mode 100644
index 4ef98e2..0000000
--- a/assets/node_modules/yaml/types.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var opt = require('./dist/tags/options')
-exports.binaryOptions = opt.binaryOptions
-exports.boolOptions = opt.boolOptions
-exports.nullOptions = opt.nullOptions
-exports.strOptions = opt.strOptions
-
-exports.Schema = require('./dist/schema').default
-exports.YAMLMap = require('./dist/schema/Map').default
-exports.YAMLSeq = require('./dist/schema/Seq').default
-exports.Pair = require('./dist/schema/Pair').default
-exports.Scalar = require('./dist/schema/Scalar').default
diff --git a/assets/node_modules/yaml/types/binary.js b/assets/node_modules/yaml/types/binary.js
deleted file mode 100644
index 6c4b886..0000000
--- a/assets/node_modules/yaml/types/binary.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-Object.defineProperty(exports, '__esModule', { value: true })
-
-exports.binary = require('../dist/tags/yaml-1.1/binary').default
-exports.default = [exports.binary]
-
-require('../dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/types/omap.js b/assets/node_modules/yaml/types/omap.js
deleted file mode 100644
index b224451..0000000
--- a/assets/node_modules/yaml/types/omap.js
+++ /dev/null
@@ -1,2 +0,0 @@
-module.exports = require('../dist/tags/yaml-1.1/omap').default
-require('../dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/types/pairs.js b/assets/node_modules/yaml/types/pairs.js
deleted file mode 100644
index 16d7b50..0000000
--- a/assets/node_modules/yaml/types/pairs.js
+++ /dev/null
@@ -1,2 +0,0 @@
-module.exports = require('../dist/tags/yaml-1.1/pairs').default
-require('../dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/types/set.js b/assets/node_modules/yaml/types/set.js
deleted file mode 100644
index 584078c..0000000
--- a/assets/node_modules/yaml/types/set.js
+++ /dev/null
@@ -1,2 +0,0 @@
-module.exports = require('../dist/tags/yaml-1.1/set').default
-require('../dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/types/timestamp.js b/assets/node_modules/yaml/types/timestamp.js
deleted file mode 100644
index 924911a..0000000
--- a/assets/node_modules/yaml/types/timestamp.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict'
-Object.defineProperty(exports, '__esModule', { value: true })
-
-var ts = require('../dist/tags/yaml-1.1/timestamp')
-exports.default = [ts.intTime, ts.floatTime, ts.timestamp]
-exports.floatTime = ts.floatTime
-exports.intTime = ts.intTime
-exports.timestamp = ts.timestamp
-
-require('../dist/warnings').warnFileDeprecation(__filename)
diff --git a/assets/node_modules/yaml/util.js b/assets/node_modules/yaml/util.js
deleted file mode 100644
index f4d4a65..0000000
--- a/assets/node_modules/yaml/util.js
+++ /dev/null
@@ -1,15 +0,0 @@
-exports.findPair = require('./dist/schema/Map').findPair
-exports.parseMap = require('./dist/schema/parseMap').default
-exports.parseSeq = require('./dist/schema/parseSeq').default
-
-var str = require('./dist/stringify')
-exports.stringifyNumber = str.stringifyNumber
-exports.stringifyString = str.stringifyString
-exports.toJSON = require('./dist/toJSON').default
-exports.Type = require('./dist/constants').Type
-
-var err = require('./dist/errors')
-exports.YAMLReferenceError = err.YAMLReferenceError
-exports.YAMLSemanticError = err.YAMLSemanticError
-exports.YAMLSyntaxError = err.YAMLSyntaxError
-exports.YAMLWarning = err.YAMLWarning
diff --git a/assets/node_modules/yargs-parser/CHANGELOG.md b/assets/node_modules/yargs-parser/CHANGELOG.md
deleted file mode 100644
index 75cc3c1..0000000
--- a/assets/node_modules/yargs-parser/CHANGELOG.md
+++ /dev/null
@@ -1,524 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-
-## [16.1.0](https://www.github.com/yargs/yargs-parser/compare/v16.0.0...v16.1.0) (2019-11-01)
-
-
-### ⚠ BREAKING CHANGES
-
-* populate error if incompatible narg/count or array/count options are used (#191)
-
-### Features
-
-* options that have had their default value used are now tracked ([#211](https://www.github.com/yargs/yargs-parser/issues/211)) ([a525234](https://www.github.com/yargs/yargs-parser/commit/a525234558c847deedd73f8792e0a3b77b26e2c0))
-* populate error if incompatible narg/count or array/count options are used ([#191](https://www.github.com/yargs/yargs-parser/issues/191)) ([84a401f](https://www.github.com/yargs/yargs-parser/commit/84a401f0fa3095e0a19661670d1570d0c3b9d3c9))
-
-
-### Reverts
-
-* revert 16.0.0 CHANGELOG entry ([920320a](https://www.github.com/yargs/yargs-parser/commit/920320ad9861bbfd58eda39221ae211540fc1daf))
-
-## [15.0.0](https://github.com/yargs/yargs-parser/compare/v14.0.0...v15.0.0) (2019-10-07)
-
-
-### Features
-
-* rework `collect-unknown-options` into `unknown-options-as-args`, providing more comprehensive functionality ([ef771ca](https://github.com/yargs/yargs-parser/commit/ef771ca))
-
-
-### BREAKING CHANGES
-
-* rework `collect-unknown-options` into `unknown-options-as-args`, providing more comprehensive functionality
-
-
-
-## [14.0.0](https://github.com/yargs/yargs-parser/compare/v13.1.1...v14.0.0) (2019-09-06)
-
-
-### Bug Fixes
-
-* boolean arrays with default values ([#185](https://github.com/yargs/yargs-parser/issues/185)) ([7d42572](https://github.com/yargs/yargs-parser/commit/7d42572))
-* boolean now behaves the same as other array types ([#184](https://github.com/yargs/yargs-parser/issues/184)) ([17ca3bd](https://github.com/yargs/yargs-parser/commit/17ca3bd))
-* eatNargs() for 'opt.narg === 0' and boolean typed options ([#188](https://github.com/yargs/yargs-parser/issues/188)) ([c5a1db0](https://github.com/yargs/yargs-parser/commit/c5a1db0))
-* maybeCoerceNumber now takes precedence over coerce return value ([#182](https://github.com/yargs/yargs-parser/issues/182)) ([2f26436](https://github.com/yargs/yargs-parser/commit/2f26436))
-* take into account aliases when appending arrays from config object ([#199](https://github.com/yargs/yargs-parser/issues/199)) ([f8a2d3f](https://github.com/yargs/yargs-parser/commit/f8a2d3f))
-
-
-### Features
-
-* add configuration option to "collect-unknown-options" ([#181](https://github.com/yargs/yargs-parser/issues/181)) ([7909cc4](https://github.com/yargs/yargs-parser/commit/7909cc4))
-* maybeCoerceNumber() now takes into account arrays ([#187](https://github.com/yargs/yargs-parser/issues/187)) ([31c204b](https://github.com/yargs/yargs-parser/commit/31c204b))
-
-
-### BREAKING CHANGES
-
-* unless "parse-numbers" is set to "false", arrays of numeric strings are now parsed as numbers, rather than strings.
-* we have dropped the broken "defaulted" functionality; we would like to revisit adding this in the future.
-* maybeCoerceNumber now takes precedence over coerce return value (#182)
-
-
-
-### [13.1.1](https://www.github.com/yargs/yargs-parser/compare/v13.1.0...v13.1.1) (2019-06-10)
-
-
-### Bug Fixes
-
-* convert values to strings when tokenizing ([#167](https://www.github.com/yargs/yargs-parser/issues/167)) ([57b7883](https://www.github.com/yargs/yargs-parser/commit/57b7883))
-* nargs should allow duplicates when duplicate-arguments-array=false ([#164](https://www.github.com/yargs/yargs-parser/issues/164)) ([47ccb0b](https://www.github.com/yargs/yargs-parser/commit/47ccb0b))
-* should populate "_" when given config with "short-option-groups" false ([#179](https://www.github.com/yargs/yargs-parser/issues/179)) ([6055974](https://www.github.com/yargs/yargs-parser/commit/6055974))
-
-## [13.1.0](https://github.com/yargs/yargs-parser/compare/v13.0.0...v13.1.0) (2019-05-05)
-
-
-### Features
-
-* add `strip-aliased` and `strip-dashed` configuration options. ([#172](https://github.com/yargs/yargs-parser/issues/172)) ([a3936aa](https://github.com/yargs/yargs-parser/commit/a3936aa))
-* support boolean which do not consume next argument. ([#171](https://github.com/yargs/yargs-parser/issues/171)) ([0ae7fcb](https://github.com/yargs/yargs-parser/commit/0ae7fcb))
-
-
-
-<a name="13.0.0"></a>
-# [13.0.0](https://github.com/yargs/yargs-parser/compare/v12.0.0...v13.0.0) (2019-02-02)
-
-
-### Features
-
-* don't coerce number from string with leading '0' or '+' ([#158](https://github.com/yargs/yargs-parser/issues/158)) ([18d0fd5](https://github.com/yargs/yargs-parser/commit/18d0fd5))
-
-
-### BREAKING CHANGES
-
-* options with leading '+' or '0' now parse as strings
-
-
-
-<a name="12.0.0"></a>
-# [12.0.0](https://github.com/yargs/yargs-parser/compare/v11.1.1...v12.0.0) (2019-01-29)
-
-
-### Bug Fixes
-
-* better handling of quoted strings ([#153](https://github.com/yargs/yargs-parser/issues/153)) ([2fb71b2](https://github.com/yargs/yargs-parser/commit/2fb71b2))
-
-
-### Features
-
-* default value is now used if no right-hand value provided for numbers/strings ([#156](https://github.com/yargs/yargs-parser/issues/156)) ([5a7c46a](https://github.com/yargs/yargs-parser/commit/5a7c46a))
-
-
-### BREAKING CHANGES
-
-* a flag with no right-hand value no longer populates defaulted options with `undefined`.
-* quotes at beginning and endings of strings are not removed during parsing.
-
-
-
-<a name="11.1.1"></a>
-## [11.1.1](https://github.com/yargs/yargs-parser/compare/v11.1.0...v11.1.1) (2018-11-19)
-
-
-### Bug Fixes
-
-* ensure empty string is added into argv._ ([#140](https://github.com/yargs/yargs-parser/issues/140)) ([79cda98](https://github.com/yargs/yargs-parser/commit/79cda98))
-
-
-### Reverts
-
-* make requiresArg work in conjunction with arrays ([#136](https://github.com/yargs/yargs-parser/issues/136)) ([f4a3063](https://github.com/yargs/yargs-parser/commit/f4a3063))
-
-
-
-<a name="11.1.0"></a>
-# [11.1.0](https://github.com/yargs/yargs-parser/compare/v11.0.0...v11.1.0) (2018-11-10)
-
-
-### Bug Fixes
-
-* handling of one char alias ([#139](https://github.com/yargs/yargs-parser/issues/139)) ([ee56e31](https://github.com/yargs/yargs-parser/commit/ee56e31))
-
-
-### Features
-
-* add halt-at-non-option configuration option ([#130](https://github.com/yargs/yargs-parser/issues/130)) ([a849fce](https://github.com/yargs/yargs-parser/commit/a849fce))
-
-
-
-<a name="11.0.0"></a>
-# [11.0.0](https://github.com/yargs/yargs-parser/compare/v10.1.0...v11.0.0) (2018-10-06)
-
-
-### Bug Fixes
-
-* flatten-duplicate-arrays:false for more than 2 arrays ([#128](https://github.com/yargs/yargs-parser/issues/128)) ([2bc395f](https://github.com/yargs/yargs-parser/commit/2bc395f))
-* hyphenated flags combined with dot notation broke parsing ([#131](https://github.com/yargs/yargs-parser/issues/131)) ([dc788da](https://github.com/yargs/yargs-parser/commit/dc788da))
-* make requiresArg work in conjunction with arrays ([#136](https://github.com/yargs/yargs-parser/issues/136)) ([77ae1d4](https://github.com/yargs/yargs-parser/commit/77ae1d4))
-
-
-### Chores
-
-* update dependencies ([6dc42a1](https://github.com/yargs/yargs-parser/commit/6dc42a1))
-
-
-### Features
-
-* also add camelCase array options ([#125](https://github.com/yargs/yargs-parser/issues/125)) ([08c0117](https://github.com/yargs/yargs-parser/commit/08c0117))
-* array.type can now be provided, supporting coercion ([#132](https://github.com/yargs/yargs-parser/issues/132)) ([4b8cfce](https://github.com/yargs/yargs-parser/commit/4b8cfce))
-
-
-### BREAKING CHANGES
-
-* drops Node 4 support
-* the argv object is now populated differently (correctly) when hyphens and dot notation are used in conjunction.
-
-
-
-<a name="10.1.0"></a>
-# [10.1.0](https://github.com/yargs/yargs-parser/compare/v10.0.0...v10.1.0) (2018-06-29)
-
-
-### Features
-
-* add `set-placeholder-key` configuration ([#123](https://github.com/yargs/yargs-parser/issues/123)) ([19386ee](https://github.com/yargs/yargs-parser/commit/19386ee))
-
-
-
-<a name="10.0.0"></a>
-# [10.0.0](https://github.com/yargs/yargs-parser/compare/v9.0.2...v10.0.0) (2018-04-04)
-
-
-### Bug Fixes
-
-* do not set boolean flags if not defined in `argv` ([#119](https://github.com/yargs/yargs-parser/issues/119)) ([f6e6599](https://github.com/yargs/yargs-parser/commit/f6e6599))
-
-
-### BREAKING CHANGES
-
-* `boolean` flags defined without a `default` value will now behave like other option type and won't be set in the parsed results when the user doesn't set the corresponding CLI arg.
-
-Previous behavior:
-```js
-var parse = require('yargs-parser');
-
-parse('--flag', {boolean: ['flag']});
-// => { _: [], flag: true }
-
-parse('--no-flag', {boolean: ['flag']});
-// => { _: [], flag: false }
-
-parse('', {boolean: ['flag']});
-// => { _: [], flag: false }
-```
-
-New behavior:
-```js
-var parse = require('yargs-parser');
-
-parse('--flag', {boolean: ['flag']});
-// => { _: [], flag: true }
-
-parse('--no-flag', {boolean: ['flag']});
-// => { _: [], flag: false }
-
-parse('', {boolean: ['flag']});
-// => { _: [] } => flag not set similarly to other option type
-```
-
-
-
-<a name="9.0.2"></a>
-## [9.0.2](https://github.com/yargs/yargs-parser/compare/v9.0.1...v9.0.2) (2018-01-20)
-
-
-### Bug Fixes
-
-* nargs was still aggressively consuming too many arguments ([9b28aad](https://github.com/yargs/yargs-parser/commit/9b28aad))
-
-
-
-<a name="9.0.1"></a>
-## [9.0.1](https://github.com/yargs/yargs-parser/compare/v9.0.0...v9.0.1) (2018-01-20)
-
-
-### Bug Fixes
-
-* nargs was consuming too many arguments ([4fef206](https://github.com/yargs/yargs-parser/commit/4fef206))
-
-
-
-<a name="9.0.0"></a>
-# [9.0.0](https://github.com/yargs/yargs-parser/compare/v8.1.0...v9.0.0) (2018-01-20)
-
-
-### Features
-
-* narg arguments no longer consume flag arguments ([#114](https://github.com/yargs/yargs-parser/issues/114)) ([60bb9b3](https://github.com/yargs/yargs-parser/commit/60bb9b3))
-
-
-### BREAKING CHANGES
-
-* arguments of form --foo, -abc, will no longer be consumed by nargs
-
-
-
-<a name="8.1.0"></a>
-# [8.1.0](https://github.com/yargs/yargs-parser/compare/v8.0.0...v8.1.0) (2017-12-20)
-
-
-### Bug Fixes
-
-* allow null config values ([#108](https://github.com/yargs/yargs-parser/issues/108)) ([d8b14f9](https://github.com/yargs/yargs-parser/commit/d8b14f9))
-* ensure consistent parsing of dot-notation arguments ([#102](https://github.com/yargs/yargs-parser/issues/102)) ([c9bd79c](https://github.com/yargs/yargs-parser/commit/c9bd79c))
-* implement [@antoniom](https://github.com/antoniom)'s fix for camel-case expansion ([3087e1d](https://github.com/yargs/yargs-parser/commit/3087e1d))
-* only run coercion functions once, despite aliases. ([#76](https://github.com/yargs/yargs-parser/issues/76)) ([#103](https://github.com/yargs/yargs-parser/issues/103)) ([507aaef](https://github.com/yargs/yargs-parser/commit/507aaef))
-* scientific notation circumvented bounds check ([#110](https://github.com/yargs/yargs-parser/issues/110)) ([3571f57](https://github.com/yargs/yargs-parser/commit/3571f57))
-* tokenizer should ignore spaces at the beginning of the argString ([#106](https://github.com/yargs/yargs-parser/issues/106)) ([f34ead9](https://github.com/yargs/yargs-parser/commit/f34ead9))
-
-
-### Features
-
-* make combining arrays a configurable option ([#111](https://github.com/yargs/yargs-parser/issues/111)) ([c8bf536](https://github.com/yargs/yargs-parser/commit/c8bf536))
-* merge array from arguments with array from config ([#83](https://github.com/yargs/yargs-parser/issues/83)) ([806ddd6](https://github.com/yargs/yargs-parser/commit/806ddd6))
-
-
-
-<a name="8.0.0"></a>
-# [8.0.0](https://github.com/yargs/yargs-parser/compare/v7.0.0...v8.0.0) (2017-10-05)
-
-
-### Bug Fixes
-
-* Ignore multiple spaces between arguments. ([#100](https://github.com/yargs/yargs-parser/issues/100)) ([d137227](https://github.com/yargs/yargs-parser/commit/d137227))
-
-
-### Features
-
-* allow configuration of prefix for boolean negation ([#94](https://github.com/yargs/yargs-parser/issues/94)) ([00bde7d](https://github.com/yargs/yargs-parser/commit/00bde7d))
-* reworking how numbers are parsed ([#104](https://github.com/yargs/yargs-parser/issues/104)) ([fba00eb](https://github.com/yargs/yargs-parser/commit/fba00eb))
-
-
-### BREAKING CHANGES
-
-* strings that fail `Number.isSafeInteger()` are no longer coerced into numbers.
-
-
-
-<a name="7.0.0"></a>
-# [7.0.0](https://github.com/yargs/yargs-parser/compare/v6.0.1...v7.0.0) (2017-05-02)
-
-
-### Chores
-
-* revert populate-- logic ([#91](https://github.com/yargs/yargs-parser/issues/91)) ([6003e6d](https://github.com/yargs/yargs-parser/commit/6003e6d))
-
-
-### BREAKING CHANGES
-
-* populate-- now defaults to false.
-
-
-
-<a name="6.0.1"></a>
-## [6.0.1](https://github.com/yargs/yargs-parser/compare/v6.0.0...v6.0.1) (2017-05-01)
-
-
-### Bug Fixes
-
-* default '--' to undefined when not provided; this is closer to the array API ([#90](https://github.com/yargs/yargs-parser/issues/90)) ([4e739cc](https://github.com/yargs/yargs-parser/commit/4e739cc))
-
-
-
-<a name="6.0.0"></a>
-# [6.0.0](https://github.com/yargs/yargs-parser/compare/v4.2.1...v6.0.0) (2017-05-01)
-
-
-### Bug Fixes
-
-* environment variables should take precedence over config file ([#81](https://github.com/yargs/yargs-parser/issues/81)) ([76cee1f](https://github.com/yargs/yargs-parser/commit/76cee1f))
-* parsing hints should apply for dot notation keys ([#86](https://github.com/yargs/yargs-parser/issues/86)) ([3e47d62](https://github.com/yargs/yargs-parser/commit/3e47d62))
-
-
-### Chores
-
-* upgrade to newest version of camelcase ([#87](https://github.com/yargs/yargs-parser/issues/87)) ([f1903aa](https://github.com/yargs/yargs-parser/commit/f1903aa))
-
-
-### Features
-
-* add -- option which allows arguments after the -- flag to be returned separated from positional arguments ([#84](https://github.com/yargs/yargs-parser/issues/84)) ([2572ca8](https://github.com/yargs/yargs-parser/commit/2572ca8))
-* when parsing stops, we now populate "--" by default ([#88](https://github.com/yargs/yargs-parser/issues/88)) ([cd666db](https://github.com/yargs/yargs-parser/commit/cd666db))
-
-
-### BREAKING CHANGES
-
-* rather than placing arguments in "_", when parsing is stopped via "--"; we now populate an array called "--" by default.
-* camelcase now requires Node 4+.
-* environment variables will now override config files (args, env, config-file, config-object)
-
-
-
-<a name="5.0.0"></a>
-# [5.0.0](https://github.com/yargs/yargs-parser/compare/v4.2.1...v5.0.0) (2017-02-18)
-
-
-### Bug Fixes
-
-* environment variables should take precedence over config file ([#81](https://github.com/yargs/yargs-parser/issues/81)) ([76cee1f](https://github.com/yargs/yargs-parser/commit/76cee1f))
-
-
-### BREAKING CHANGES
-
-* environment variables will now override config files (args, env, config-file, config-object)
-
-
-
-<a name="4.2.1"></a>
-## [4.2.1](https://github.com/yargs/yargs-parser/compare/v4.2.0...v4.2.1) (2017-01-02)
-
-
-### Bug Fixes
-
-* flatten/duplicate regression ([#75](https://github.com/yargs/yargs-parser/issues/75)) ([68d68a0](https://github.com/yargs/yargs-parser/commit/68d68a0))
-
-
-
-<a name="4.2.0"></a>
-# [4.2.0](https://github.com/yargs/yargs-parser/compare/v4.1.0...v4.2.0) (2016-12-01)
-
-
-### Bug Fixes
-
-* inner objects in configs had their keys appended to top-level key when dot-notation was disabled ([#72](https://github.com/yargs/yargs-parser/issues/72)) ([0b1b5f9](https://github.com/yargs/yargs-parser/commit/0b1b5f9))
-
-
-### Features
-
-* allow multiple arrays to be provided, rather than always combining ([#71](https://github.com/yargs/yargs-parser/issues/71)) ([0f0fb2d](https://github.com/yargs/yargs-parser/commit/0f0fb2d))
-
-
-
-<a name="4.1.0"></a>
-# [4.1.0](https://github.com/yargs/yargs-parser/compare/v4.0.2...v4.1.0) (2016-11-07)
-
-
-### Features
-
-* apply coercions to default options ([#65](https://github.com/yargs/yargs-parser/issues/65)) ([c79052b](https://github.com/yargs/yargs-parser/commit/c79052b))
-* handle dot notation boolean options ([#63](https://github.com/yargs/yargs-parser/issues/63)) ([02c3545](https://github.com/yargs/yargs-parser/commit/02c3545))
-
-
-
-<a name="4.0.2"></a>
-## [4.0.2](https://github.com/yargs/yargs-parser/compare/v4.0.1...v4.0.2) (2016-09-30)
-
-
-### Bug Fixes
-
-* whoops, let's make the assign not change the Object key order ([29d069a](https://github.com/yargs/yargs-parser/commit/29d069a))
-
-
-
-<a name="4.0.1"></a>
-## [4.0.1](https://github.com/yargs/yargs-parser/compare/v4.0.0...v4.0.1) (2016-09-30)
-
-
-### Bug Fixes
-
-* lodash.assign was deprecated ([#59](https://github.com/yargs/yargs-parser/issues/59)) ([5e7eb11](https://github.com/yargs/yargs-parser/commit/5e7eb11))
-
-
-
-<a name="4.0.0"></a>
-# [4.0.0](https://github.com/yargs/yargs-parser/compare/v3.2.0...v4.0.0) (2016-09-26)
-
-
-### Bug Fixes
-
-* coerce should be applied to the final objects and arrays created ([#57](https://github.com/yargs/yargs-parser/issues/57)) ([4ca69da](https://github.com/yargs/yargs-parser/commit/4ca69da))
-
-
-### BREAKING CHANGES
-
-* coerce is no longer applied to individual arguments in an implicit array.
-
-
-
-<a name="3.2.0"></a>
-# [3.2.0](https://github.com/yargs/yargs-parser/compare/v3.1.0...v3.2.0) (2016-08-13)
-
-
-### Features
-
-* coerce full array instead of each element ([#51](https://github.com/yargs/yargs-parser/issues/51)) ([cc4dc56](https://github.com/yargs/yargs-parser/commit/cc4dc56))
-
-
-
-<a name="3.1.0"></a>
-# [3.1.0](https://github.com/yargs/yargs-parser/compare/v3.0.0...v3.1.0) (2016-08-09)
-
-
-### Bug Fixes
-
-* address pkgConf parsing bug outlined in [#37](https://github.com/yargs/yargs-parser/issues/37) ([#45](https://github.com/yargs/yargs-parser/issues/45)) ([be76ee6](https://github.com/yargs/yargs-parser/commit/be76ee6))
-* better parsing of negative values ([#44](https://github.com/yargs/yargs-parser/issues/44)) ([2e43692](https://github.com/yargs/yargs-parser/commit/2e43692))
-* check aliases when guessing defaults for arguments fixes [#41](https://github.com/yargs/yargs-parser/issues/41) ([#43](https://github.com/yargs/yargs-parser/issues/43)) ([f3e4616](https://github.com/yargs/yargs-parser/commit/f3e4616))
-
-
-### Features
-
-* added coerce option, for providing specialized argument parsing ([#42](https://github.com/yargs/yargs-parser/issues/42)) ([7b49cd2](https://github.com/yargs/yargs-parser/commit/7b49cd2))
-
-
-
-<a name="3.0.0"></a>
-# [3.0.0](https://github.com/yargs/yargs-parser/compare/v2.4.1...v3.0.0) (2016-08-07)
-
-
-### Bug Fixes
-
-* parsing issue with numeric character in group of options ([#19](https://github.com/yargs/yargs-parser/issues/19)) ([f743236](https://github.com/yargs/yargs-parser/commit/f743236))
-* upgraded lodash.assign ([5d7fdf4](https://github.com/yargs/yargs-parser/commit/5d7fdf4))
-
-### BREAKING CHANGES
-
-* subtle change to how values are parsed in a group of single-character arguments.
-* _first released in 3.1.0, better handling of negative values should be considered a breaking change._
-
-
-
-<a name="2.4.1"></a>
-## [2.4.1](https://github.com/yargs/yargs-parser/compare/v2.4.0...v2.4.1) (2016-07-16)
-
-
-### Bug Fixes
-
-* **count:** do not increment a default value ([#39](https://github.com/yargs/yargs-parser/issues/39)) ([b04a189](https://github.com/yargs/yargs-parser/commit/b04a189))
-
-
-
-<a name="2.4.0"></a>
-# [2.4.0](https://github.com/yargs/yargs-parser/compare/v2.3.0...v2.4.0) (2016-04-11)
-
-
-### Features
-
-* **environment:** Support nested options in environment variables ([#26](https://github.com/yargs/yargs-parser/issues/26)) thanks [@elas7](https://github.com/elas7) \o/ ([020778b](https://github.com/yargs/yargs-parser/commit/020778b))
-
-
-
-<a name="2.3.0"></a>
-# [2.3.0](https://github.com/yargs/yargs-parser/compare/v2.2.0...v2.3.0) (2016-04-09)
-
-
-### Bug Fixes
-
-* **boolean:** fix for boolean options with non boolean defaults (#20) ([2dbe86b](https://github.com/yargs/yargs-parser/commit/2dbe86b)), closes [(#20](https://github.com/(/issues/20)
-* **package:** remove tests from tarball ([0353c0d](https://github.com/yargs/yargs-parser/commit/0353c0d))
-* **parsing:** handle calling short option with an empty string as the next value. ([a867165](https://github.com/yargs/yargs-parser/commit/a867165))
-* boolean flag when next value contains the strings 'true' or 'false'. ([69941a6](https://github.com/yargs/yargs-parser/commit/69941a6))
-* update dependencies; add standard-version bin for next release (#24) ([822d9d5](https://github.com/yargs/yargs-parser/commit/822d9d5))
-
-### Features
-
-* **configuration:** Allow to pass configuration objects to yargs-parser ([0780900](https://github.com/yargs/yargs-parser/commit/0780900))
-* **normalize:** allow normalize to work with arrays ([e0eaa1a](https://github.com/yargs/yargs-parser/commit/e0eaa1a))
diff --git a/assets/node_modules/yargs-parser/LICENSE.txt b/assets/node_modules/yargs-parser/LICENSE.txt
deleted file mode 100644
index 836440b..0000000
--- a/assets/node_modules/yargs-parser/LICENSE.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright (c) 2016, 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/assets/node_modules/yargs-parser/README.md b/assets/node_modules/yargs-parser/README.md
deleted file mode 100644
index b859672..0000000
--- a/assets/node_modules/yargs-parser/README.md
+++ /dev/null
@@ -1,422 +0,0 @@
-# yargs-parser
-
-[![Build Status](https://travis-ci.org/yargs/yargs-parser.svg)](https://travis-ci.org/yargs/yargs-parser)
-[![Coverage Status](https://coveralls.io/repos/yargs/yargs-parser/badge.svg?branch=)](https://coveralls.io/r/yargs/yargs-parser?branch=master)
-[![NPM version](https://img.shields.io/npm/v/yargs-parser.svg)](https://www.npmjs.com/package/yargs-parser)
-[![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version)
-
-
-The mighty option parser used by [yargs](https://github.com/yargs/yargs).
-
-visit the [yargs website](http://yargs.js.org/) for more examples, and thorough usage instructions.
-
-<img width="250" src="https://raw.githubusercontent.com/yargs/yargs-parser/master/yargs-logo.png">
-
-## Example
-
-```sh
-npm i yargs-parser --save
-```
-
-```js
-var argv = require('yargs-parser')(process.argv.slice(2))
-console.log(argv)
-```
-
-```sh
-node example.js --foo=33 --bar hello
-{ _: [], foo: 33, bar: 'hello' }
-```
-
-_or parse a string!_
-
-```js
-var argv = require('yargs-parser')('--foo=99 --bar=33')
-console.log(argv)
-```
-
-```sh
-{ _: [], foo: 99, bar: 33 }
-```
-
-Convert an array of mixed types before passing to `yargs-parser`:
-
-```js
-var parse = require('yargs-parser')
-parse(['-f', 11, '--zoom', 55].join(' ')) // <-- array to string
-parse(['-f', 11, '--zoom', 55].map(String)) // <-- array of strings
-```
-
-## API
-
-### require('yargs-parser')(args, opts={})
-
-Parses command line arguments returning a simple mapping of keys and values.
-
-**expects:**
-
-* `args`: a string or array of strings representing the options to parse.
-* `opts`: provide a set of hints indicating how `args` should be parsed:
- * `opts.alias`: an object representing the set of aliases for a key: `{alias: {foo: ['f']}}`.
- * `opts.array`: indicate that keys should be parsed as an array: `{array: ['foo', 'bar']}`.<br>
- Indicate that keys should be parsed as an array and coerced to booleans / numbers:<br>
- `{array: [{ key: 'foo', boolean: true }, {key: 'bar', number: true}]}`.
- * `opts.boolean`: arguments should be parsed as booleans: `{boolean: ['x', 'y']}`.
- * `opts.coerce`: provide a custom synchronous function that returns a coerced value from the argument provided
- (or throws an error). For arrays the function is called only once for the entire array:<br>
- `{coerce: {foo: function (arg) {return modifiedArg}}}`.
- * `opts.config`: indicate a key that represents a path to a configuration file (this file will be loaded and parsed).
- * `opts.configObjects`: configuration objects to parse, their properties will be set as arguments:<br>
- `{configObjects: [{'x': 5, 'y': 33}, {'z': 44}]}`.
- * `opts.configuration`: provide configuration options to the yargs-parser (see: [configuration](#configuration)).
- * `opts.count`: indicate a key that should be used as a counter, e.g., `-vvv` = `{v: 3}`.
- * `opts.default`: provide default values for keys: `{default: {x: 33, y: 'hello world!'}}`.
- * `opts.envPrefix`: environment variables (`process.env`) with the prefix provided should be parsed.
- * `opts.narg`: specify that a key requires `n` arguments: `{narg: {x: 2}}`.
- * `opts.normalize`: `path.normalize()` will be applied to values set to this key.
- * `opts.number`: keys should be treated as numbers.
- * `opts.string`: keys should be treated as strings (even if they resemble a number `-x 33`).
-
-**returns:**
-
-* `obj`: an object representing the parsed value of `args`
- * `key/value`: key value pairs for each argument and their aliases.
- * `_`: an array representing the positional arguments.
- * [optional] `--`: an array with arguments after the end-of-options flag `--`.
-
-### require('yargs-parser').detailed(args, opts={})
-
-Parses a command line string, returning detailed information required by the
-yargs engine.
-
-**expects:**
-
-* `args`: a string or array of strings representing options to parse.
-* `opts`: provide a set of hints indicating how `args`, inputs are identical to `require('yargs-parser')(args, opts={})`.
-
-**returns:**
-
-* `argv`: an object representing the parsed value of `args`
- * `key/value`: key value pairs for each argument and their aliases.
- * `_`: an array representing the positional arguments.
- * [optional] `--`: an array with arguments after the end-of-options flag `--`.
-* `error`: populated with an error object if an exception occurred during parsing.
-* `aliases`: the inferred list of aliases built by combining lists in `opts.alias`.
-* `newAliases`: any new aliases added via camel-case expansion:
- * `boolean`: `{ fooBar: true }`
-* `defaulted`: any new argument created by `opts.default`, no aliases included.
- * `boolean`: `{ foo: true }`
-* `configuration`: given by default settings and `opts.configuration`.
-
-<a name="configuration"></a>
-
-### Configuration
-
-The yargs-parser applies several automated transformations on the keys provided
-in `args`. These features can be turned on and off using the `configuration` field
-of `opts`.
-
-```js
-var parsed = parser(['--no-dice'], {
- configuration: {
- 'boolean-negation': false
- }
-})
-```
-
-### short option groups
-
-* default: `true`.
-* key: `short-option-groups`.
-
-Should a group of short-options be treated as boolean flags?
-
-```sh
-node example.js -abc
-{ _: [], a: true, b: true, c: true }
-```
-
-_if disabled:_
-
-```sh
-node example.js -abc
-{ _: [], abc: true }
-```
-
-### camel-case expansion
-
-* default: `true`.
-* key: `camel-case-expansion`.
-
-Should hyphenated arguments be expanded into camel-case aliases?
-
-```sh
-node example.js --foo-bar
-{ _: [], 'foo-bar': true, fooBar: true }
-```
-
-_if disabled:_
-
-```sh
-node example.js --foo-bar
-{ _: [], 'foo-bar': true }
-```
-
-### dot-notation
-
-* default: `true`
-* key: `dot-notation`
-
-Should keys that contain `.` be treated as objects?
-
-```sh
-node example.js --foo.bar
-{ _: [], foo: { bar: true } }
-```
-
-_if disabled:_
-
-```sh
-node example.js --foo.bar
-{ _: [], "foo.bar": true }
-```
-
-### parse numbers
-
-* default: `true`
-* key: `parse-numbers`
-
-Should keys that look like numbers be treated as such?
-
-```sh
-node example.js --foo=99.3
-{ _: [], foo: 99.3 }
-```
-
-_if disabled:_
-
-```sh
-node example.js --foo=99.3
-{ _: [], foo: "99.3" }
-```
-
-### boolean negation
-
-* default: `true`
-* key: `boolean-negation`
-
-Should variables prefixed with `--no` be treated as negations?
-
-```sh
-node example.js --no-foo
-{ _: [], foo: false }
-```
-
-_if disabled:_
-
-```sh
-node example.js --no-foo
-{ _: [], "no-foo": true }
-```
-
-### combine arrays
-
-* default: `false`
-* key: `combine-arrays`
-
-Should arrays be combined when provided by both command line arguments and
-a configuration file.
-
-### duplicate arguments array
-
-* default: `true`
-* key: `duplicate-arguments-array`
-
-Should arguments be coerced into an array when duplicated:
-
-```sh
-node example.js -x 1 -x 2
-{ _: [], x: [1, 2] }
-```
-
-_if disabled:_
-
-```sh
-node example.js -x 1 -x 2
-{ _: [], x: 2 }
-```
-
-### flatten duplicate arrays
-
-* default: `true`
-* key: `flatten-duplicate-arrays`
-
-Should array arguments be coerced into a single array when duplicated:
-
-```sh
-node example.js -x 1 2 -x 3 4
-{ _: [], x: [1, 2, 3, 4] }
-```
-
-_if disabled:_
-
-```sh
-node example.js -x 1 2 -x 3 4
-{ _: [], x: [[1, 2], [3, 4]] }
-```
-
-### negation prefix
-
-* default: `no-`
-* key: `negation-prefix`
-
-The prefix to use for negated boolean variables.
-
-```sh
-node example.js --no-foo
-{ _: [], foo: false }
-```
-
-_if set to `quux`:_
-
-```sh
-node example.js --quuxfoo
-{ _: [], foo: false }
-```
-
-### populate --
-
-* default: `false`.
-* key: `populate--`
-
-Should unparsed flags be stored in `--` or `_`.
-
-_If disabled:_
-
-```sh
-node example.js a -b -- x y
-{ _: [ 'a', 'x', 'y' ], b: true }
-```
-
-_If enabled:_
-
-```sh
-node example.js a -b -- x y
-{ _: [ 'a' ], '--': [ 'x', 'y' ], b: true }
-```
-
-### set placeholder key
-
-* default: `false`.
-* key: `set-placeholder-key`.
-
-Should a placeholder be added for keys not set via the corresponding CLI argument?
-
-_If disabled:_
-
-```sh
-node example.js -a 1 -c 2
-{ _: [], a: 1, c: 2 }
-```
-
-_If enabled:_
-
-```sh
-node example.js -a 1 -c 2
-{ _: [], a: 1, b: undefined, c: 2 }
-```
-
-### halt at non-option
-
-* default: `false`.
-* key: `halt-at-non-option`.
-
-Should parsing stop at the first positional argument? This is similar to how e.g. `ssh` parses its command line.
-
-_If disabled:_
-
-```sh
-node example.js -a run b -x y
-{ _: [ 'b' ], a: 'run', x: 'y' }
-```
-
-_If enabled:_
-
-```sh
-node example.js -a run b -x y
-{ _: [ 'b', '-x', 'y' ], a: 'run' }
-```
-
-### strip aliased
-
-* default: `false`
-* key: `strip-aliased`
-
-Should aliases be removed before returning results?
-
-_If disabled:_
-
-```sh
-node example.js --test-field 1
-{ _: [], 'test-field': 1, testField: 1, 'test-alias': 1, testAlias: 1 }
-```
-
-_If enabled:_
-
-```sh
-node example.js --test-field 1
-{ _: [], 'test-field': 1, testField: 1 }
-```
-
-### strip dashed
-
-* default: `false`
-* key: `strip-dashed`
-
-Should dashed keys be removed before returning results? This option has no effect if
-`camel-case-expansion` is disabled.
-
-_If disabled:_
-
-```sh
-node example.js --test-field 1
-{ _: [], 'test-field': 1, testField: 1 }
-```
-
-_If enabled:_
-
-```sh
-node example.js --test-field 1
-{ _: [], testField: 1 }
-```
-
-### unknown options as args
-
-* default: `false`
-* key: `unknown-options-as-args`
-
-Should unknown options be treated like regular arguments? An unknown option is one that is not
-configured in `opts`.
-
-_If disabled_
-
-```sh
-node example.js --unknown-option --known-option 2 --string-option --unknown-option2
-{ _: [], unknownOption: true, knownOption: 2, stringOption: '', unknownOption2: true }
-```
-
-_If enabled_
-
-```sh
-node example.js --unknown-option --known-option 2 --string-option --unknown-option2
-{ _: ['--unknown-option'], knownOption: 2, stringOption: '--unknown-option2' }
-```
-
-## Special Thanks
-
-The yargs project evolves from optimist and minimist. It owes its
-existence to a lot of James Halliday's hard work. Thanks [substack](https://github.com/substack) **beep** **boop** \o/
-
-## License
-
-ISC
diff --git a/assets/node_modules/yargs-parser/index.js b/assets/node_modules/yargs-parser/index.js
deleted file mode 100644
index 2a55b37..0000000
--- a/assets/node_modules/yargs-parser/index.js
+++ /dev/null
@@ -1,971 +0,0 @@
-var camelCase = require('camelcase')
-var decamelize = require('decamelize')
-var path = require('path')
-var tokenizeArgString = require('./lib/tokenize-arg-string')
-var util = require('util')
-
-function parse (args, opts) {
- if (!opts) opts = {}
- // allow a string argument to be passed in rather
- // than an argv array.
- args = tokenizeArgString(args)
-
- // aliases might have transitive relationships, normalize this.
- var aliases = combineAliases(opts.alias || {})
- var configuration = Object.assign({
- 'short-option-groups': true,
- 'camel-case-expansion': true,
- 'dot-notation': true,
- 'parse-numbers': true,
- 'boolean-negation': true,
- 'negation-prefix': 'no-',
- 'duplicate-arguments-array': true,
- 'flatten-duplicate-arrays': true,
- 'populate--': false,
- 'combine-arrays': false,
- 'set-placeholder-key': false,
- 'halt-at-non-option': false,
- 'strip-aliased': false,
- 'strip-dashed': false,
- 'unknown-options-as-args': false
- }, opts.configuration)
- var defaults = opts.default || {}
- var configObjects = opts.configObjects || []
- var envPrefix = opts.envPrefix
- var notFlagsOption = configuration['populate--']
- var notFlagsArgv = notFlagsOption ? '--' : '_'
- var newAliases = {}
- var defaulted = {}
- // allow a i18n handler to be passed in, default to a fake one (util.format).
- var __ = opts.__ || util.format
- var error = null
- var flags = {
- aliases: {},
- arrays: {},
- bools: {},
- strings: {},
- numbers: {},
- counts: {},
- normalize: {},
- configs: {},
- nargs: {},
- coercions: {},
- keys: []
- }
- var negative = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/
- var negatedBoolean = new RegExp('^--' + configuration['negation-prefix'] + '(.+)')
-
- ;[].concat(opts.array).filter(Boolean).forEach(function (opt) {
- var key = opt.key || opt
-
- // assign to flags[bools|strings|numbers]
- const assignment = Object.keys(opt).map(function (key) {
- return ({
- boolean: 'bools',
- string: 'strings',
- number: 'numbers'
- })[key]
- }).filter(Boolean).pop()
-
- // assign key to be coerced
- if (assignment) {
- flags[assignment][key] = true
- }
-
- flags.arrays[key] = true
- flags.keys.push(key)
- })
-
- ;[].concat(opts.boolean).filter(Boolean).forEach(function (key) {
- flags.bools[key] = true
- flags.keys.push(key)
- })
-
- ;[].concat(opts.string).filter(Boolean).forEach(function (key) {
- flags.strings[key] = true
- flags.keys.push(key)
- })
-
- ;[].concat(opts.number).filter(Boolean).forEach(function (key) {
- flags.numbers[key] = true
- flags.keys.push(key)
- })
-
- ;[].concat(opts.count).filter(Boolean).forEach(function (key) {
- flags.counts[key] = true
- flags.keys.push(key)
- })
-
- ;[].concat(opts.normalize).filter(Boolean).forEach(function (key) {
- flags.normalize[key] = true
- flags.keys.push(key)
- })
-
- Object.keys(opts.narg || {}).forEach(function (k) {
- flags.nargs[k] = opts.narg[k]
- flags.keys.push(k)
- })
-
- Object.keys(opts.coerce || {}).forEach(function (k) {
- flags.coercions[k] = opts.coerce[k]
- flags.keys.push(k)
- })
-
- if (Array.isArray(opts.config) || typeof opts.config === 'string') {
- ;[].concat(opts.config).filter(Boolean).forEach(function (key) {
- flags.configs[key] = true
- })
- } else {
- Object.keys(opts.config || {}).forEach(function (k) {
- flags.configs[k] = opts.config[k]
- })
- }
-
- // create a lookup table that takes into account all
- // combinations of aliases: {f: ['foo'], foo: ['f']}
- extendAliases(opts.key, aliases, opts.default, flags.arrays)
-
- // apply default values to all aliases.
- Object.keys(defaults).forEach(function (key) {
- (flags.aliases[key] || []).forEach(function (alias) {
- defaults[alias] = defaults[key]
- })
- })
-
- checkConfiguration()
-
- var argv = { _: [] }
- var notFlags = []
-
- for (var i = 0; i < args.length; i++) {
- var arg = args[i]
- var broken
- var key
- var letters
- var m
- var next
- var value
-
- // any unknown option (except for end-of-options, "--")
- if (arg !== '--' && isUnknownOptionAsArg(arg)) {
- argv._.push(arg)
- // -- separated by =
- } else if (arg.match(/^--.+=/) || (
- !configuration['short-option-groups'] && arg.match(/^-.+=/)
- )) {
- // Using [\s\S] instead of . because js doesn't support the
- // 'dotall' regex modifier. See:
- // http://stackoverflow.com/a/1068308/13216
- m = arg.match(/^--?([^=]+)=([\s\S]*)$/)
-
- // nargs format = '--f=monkey washing cat'
- if (checkAllAliases(m[1], flags.nargs)) {
- args.splice(i + 1, 0, m[2])
- i = eatNargs(i, m[1], args)
- // arrays format = '--f=a b c'
- } else if (checkAllAliases(m[1], flags.arrays)) {
- args.splice(i + 1, 0, m[2])
- i = eatArray(i, m[1], args)
- } else {
- setArg(m[1], m[2])
- }
- } else if (arg.match(negatedBoolean) && configuration['boolean-negation']) {
- key = arg.match(negatedBoolean)[1]
- setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false)
-
- // -- separated by space.
- } else if (arg.match(/^--.+/) || (
- !configuration['short-option-groups'] && arg.match(/^-[^-]+/)
- )) {
- key = arg.match(/^--?(.+)/)[1]
-
- // nargs format = '--foo a b c'
- // should be truthy even if: flags.nargs[key] === 0
- if (checkAllAliases(key, flags.nargs) !== false) {
- i = eatNargs(i, key, args)
- // array format = '--foo a b c'
- } else if (checkAllAliases(key, flags.arrays)) {
- i = eatArray(i, key, args)
- } else {
- next = args[i + 1]
-
- if (next !== undefined && (!next.match(/^-/) ||
- next.match(negative)) &&
- !checkAllAliases(key, flags.bools) &&
- !checkAllAliases(key, flags.counts)) {
- setArg(key, next)
- i++
- } else if (/^(true|false)$/.test(next)) {
- setArg(key, next)
- i++
- } else {
- setArg(key, defaultValue(key))
- }
- }
-
- // dot-notation flag separated by '='.
- } else if (arg.match(/^-.\..+=/)) {
- m = arg.match(/^-([^=]+)=([\s\S]*)$/)
- setArg(m[1], m[2])
-
- // dot-notation flag separated by space.
- } else if (arg.match(/^-.\..+/) && !arg.match(negative)) {
- next = args[i + 1]
- key = arg.match(/^-(.\..+)/)[1]
-
- if (next !== undefined && !next.match(/^-/) &&
- !checkAllAliases(key, flags.bools) &&
- !checkAllAliases(key, flags.counts)) {
- setArg(key, next)
- i++
- } else {
- setArg(key, defaultValue(key))
- }
- } else if (arg.match(/^-[^-]+/) && !arg.match(negative)) {
- letters = arg.slice(1, -1).split('')
- broken = false
-
- for (var j = 0; j < letters.length; j++) {
- next = arg.slice(j + 2)
-
- if (letters[j + 1] && letters[j + 1] === '=') {
- value = arg.slice(j + 3)
- key = letters[j]
-
- // nargs format = '-f=monkey washing cat'
- if (checkAllAliases(key, flags.nargs)) {
- args.splice(i + 1, 0, value)
- i = eatNargs(i, key, args)
- // array format = '-f=a b c'
- } else if (checkAllAliases(key, flags.arrays)) {
- args.splice(i + 1, 0, value)
- i = eatArray(i, key, args)
- } else {
- setArg(key, value)
- }
-
- broken = true
- break
- }
-
- if (next === '-') {
- setArg(letters[j], next)
- continue
- }
-
- // current letter is an alphabetic character and next value is a number
- if (/[A-Za-z]/.test(letters[j]) &&
- /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
- setArg(letters[j], next)
- broken = true
- break
- }
-
- if (letters[j + 1] && letters[j + 1].match(/\W/)) {
- setArg(letters[j], next)
- broken = true
- break
- } else {
- setArg(letters[j], defaultValue(letters[j]))
- }
- }
-
- key = arg.slice(-1)[0]
-
- if (!broken && key !== '-') {
- // nargs format = '-f a b c'
- // should be truthy even if: flags.nargs[key] === 0
- if (checkAllAliases(key, flags.nargs) !== false) {
- i = eatNargs(i, key, args)
- // array format = '-f a b c'
- } else if (checkAllAliases(key, flags.arrays)) {
- i = eatArray(i, key, args)
- } else {
- next = args[i + 1]
-
- if (next !== undefined && (!/^(-|--)[^-]/.test(next) ||
- next.match(negative)) &&
- !checkAllAliases(key, flags.bools) &&
- !checkAllAliases(key, flags.counts)) {
- setArg(key, next)
- i++
- } else if (/^(true|false)$/.test(next)) {
- setArg(key, next)
- i++
- } else {
- setArg(key, defaultValue(key))
- }
- }
- }
- } else if (arg === '--') {
- notFlags = args.slice(i + 1)
- break
- } else if (configuration['halt-at-non-option']) {
- notFlags = args.slice(i)
- break
- } else {
- argv._.push(maybeCoerceNumber('_', arg))
- }
- }
-
- // order of precedence:
- // 1. command line arg
- // 2. value from env var
- // 3. value from config file
- // 4. value from config objects
- // 5. configured default value
- applyEnvVars(argv, true) // special case: check env vars that point to config file
- applyEnvVars(argv, false)
- setConfig(argv)
- setConfigObjects()
- applyDefaultsAndAliases(argv, flags.aliases, defaults, true)
- applyCoercions(argv)
- if (configuration['set-placeholder-key']) setPlaceholderKeys(argv)
-
- // for any counts either not in args or without an explicit default, set to 0
- Object.keys(flags.counts).forEach(function (key) {
- if (!hasKey(argv, key.split('.'))) setArg(key, 0)
- })
-
- // '--' defaults to undefined.
- if (notFlagsOption && notFlags.length) argv[notFlagsArgv] = []
- notFlags.forEach(function (key) {
- argv[notFlagsArgv].push(key)
- })
-
- if (configuration['camel-case-expansion'] && configuration['strip-dashed']) {
- Object.keys(argv).filter(key => key !== '--' && key.includes('-')).forEach(key => {
- delete argv[key]
- })
- }
-
- if (configuration['strip-aliased']) {
- // XXX Switch to [].concat(...Object.values(aliases)) once node.js 6 is dropped
- ;[].concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => {
- if (configuration['camel-case-expansion']) {
- delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')]
- }
-
- delete argv[alias]
- })
- }
-
- // how many arguments should we consume, based
- // on the nargs option?
- function eatNargs (i, key, args) {
- var ii
- const toEat = checkAllAliases(key, flags.nargs)
-
- if (toEat === 0) {
- setArg(key, defaultValue(key))
- return i
- }
-
- // nargs will not consume flag arguments, e.g., -abc, --foo,
- // and terminates when one is observed.
- var available = 0
- for (ii = i + 1; ii < args.length; ii++) {
- if (!args[ii].match(/^-[^0-9]/) || args[ii].match(negative) || isUnknownOptionAsArg(args[ii])) available++
- else break
- }
-
- if (available < toEat) error = Error(__('Not enough arguments following: %s', key))
-
- const consumed = Math.min(available, toEat)
- for (ii = i + 1; ii < (consumed + i + 1); ii++) {
- setArg(key, args[ii])
- }
-
- return (i + consumed)
- }
-
- // if an option is an array, eat all non-hyphenated arguments
- // following it... YUM!
- // e.g., --foo apple banana cat becomes ["apple", "banana", "cat"]
- function eatArray (i, key, args) {
- let argsToSet = []
- let next = args[i + 1]
-
- if (checkAllAliases(key, flags.bools) && !(/^(true|false)$/.test(next))) {
- argsToSet.push(true)
- } else if (isUndefined(next) || (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))) {
- // for keys without value ==> argsToSet remains an empty []
- // set user default value, if available
- if (defaults.hasOwnProperty(key)) {
- const defVal = defaults[key]
- argsToSet = Array.isArray(defVal) ? defVal : [defVal]
- }
- } else {
- for (var ii = i + 1; ii < args.length; ii++) {
- next = args[ii]
- if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) break
- i = ii
- argsToSet.push(processValue(key, next))
- }
- }
-
- setArg(key, argsToSet)
- return i
- }
-
- function setArg (key, val) {
- if (/-/.test(key) && configuration['camel-case-expansion']) {
- var alias = key.split('.').map(function (prop) {
- return camelCase(prop)
- }).join('.')
- addNewAlias(key, alias)
- }
-
- var value = processValue(key, val)
-
- var splitKey = key.split('.')
- setKey(argv, splitKey, value)
-
- // handle populating aliases of the full key
- if (flags.aliases[key]) {
- flags.aliases[key].forEach(function (x) {
- x = x.split('.')
- setKey(argv, x, value)
- })
- }
-
- // handle populating aliases of the first element of the dot-notation key
- if (splitKey.length > 1 && configuration['dot-notation']) {
- ;(flags.aliases[splitKey[0]] || []).forEach(function (x) {
- x = x.split('.')
-
- // expand alias with nested objects in key
- var a = [].concat(splitKey)
- a.shift() // nuke the old key.
- x = x.concat(a)
-
- setKey(argv, x, value)
- })
- }
-
- // Set normalize getter and setter when key is in 'normalize' but isn't an array
- if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) {
- var keys = [key].concat(flags.aliases[key] || [])
- keys.forEach(function (key) {
- argv.__defineSetter__(key, function (v) {
- val = path.normalize(v)
- })
-
- argv.__defineGetter__(key, function () {
- return typeof val === 'string' ? path.normalize(val) : val
- })
- })
- }
- }
-
- function addNewAlias (key, alias) {
- if (!(flags.aliases[key] && flags.aliases[key].length)) {
- flags.aliases[key] = [alias]
- newAliases[alias] = true
- }
- if (!(flags.aliases[alias] && flags.aliases[alias].length)) {
- addNewAlias(alias, key)
- }
- }
-
- function processValue (key, val) {
- // strings may be quoted, clean this up as we assign values.
- if (typeof val === 'string' &&
- (val[0] === "'" || val[0] === '"') &&
- val[val.length - 1] === val[0]
- ) {
- val = val.substring(1, val.length - 1)
- }
-
- // handle parsing boolean arguments --foo=true --bar false.
- if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) {
- if (typeof val === 'string') val = val === 'true'
- }
-
- var value = Array.isArray(val)
- ? val.map(function (v) { return maybeCoerceNumber(key, v) })
- : maybeCoerceNumber(key, val)
-
- // increment a count given as arg (either no value or value parsed as boolean)
- if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) {
- value = increment
- }
-
- // Set normalized value when key is in 'normalize' and in 'arrays'
- if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) {
- if (Array.isArray(val)) value = val.map(path.normalize)
- else value = path.normalize(val)
- }
- return value
- }
-
- function maybeCoerceNumber (key, value) {
- if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) {
- const shouldCoerceNumber = isNumber(value) && configuration['parse-numbers'] && (
- Number.isSafeInteger(Math.floor(value))
- )
- if (shouldCoerceNumber || (!isUndefined(value) && checkAllAliases(key, flags.numbers))) value = Number(value)
- }
- return value
- }
-
- // set args from config.json file, this should be
- // applied last so that defaults can be applied.
- function setConfig (argv) {
- var configLookup = {}
-
- // expand defaults/aliases, in-case any happen to reference
- // the config.json file.
- applyDefaultsAndAliases(configLookup, flags.aliases, defaults)
-
- Object.keys(flags.configs).forEach(function (configKey) {
- var configPath = argv[configKey] || configLookup[configKey]
- if (configPath) {
- try {
- var config = null
- var resolvedConfigPath = path.resolve(process.cwd(), configPath)
-
- if (typeof flags.configs[configKey] === 'function') {
- try {
- config = flags.configs[configKey](resolvedConfigPath)
- } catch (e) {
- config = e
- }
- if (config instanceof Error) {
- error = config
- return
- }
- } else {
- config = require(resolvedConfigPath)
- }
-
- setConfigObject(config)
- } catch (ex) {
- if (argv[configKey]) error = Error(__('Invalid JSON config file: %s', configPath))
- }
- }
- })
- }
-
- // set args from config object.
- // it recursively checks nested objects.
- function setConfigObject (config, prev) {
- Object.keys(config).forEach(function (key) {
- var value = config[key]
- var fullKey = prev ? prev + '.' + key : key
-
- // if the value is an inner object and we have dot-notation
- // enabled, treat inner objects in config the same as
- // heavily nested dot notations (foo.bar.apple).
- if (typeof value === 'object' && value !== null && !Array.isArray(value) && configuration['dot-notation']) {
- // if the value is an object but not an array, check nested object
- setConfigObject(value, fullKey)
- } else {
- // setting arguments via CLI takes precedence over
- // values within the config file.
- if (!hasKey(argv, fullKey.split('.')) || (checkAllAliases(fullKey, flags.arrays) && configuration['combine-arrays'])) {
- setArg(fullKey, value)
- }
- }
- })
- }
-
- // set all config objects passed in opts
- function setConfigObjects () {
- if (typeof configObjects === 'undefined') return
- configObjects.forEach(function (configObject) {
- setConfigObject(configObject)
- })
- }
-
- function applyEnvVars (argv, configOnly) {
- if (typeof envPrefix === 'undefined') return
-
- var prefix = typeof envPrefix === 'string' ? envPrefix : ''
- Object.keys(process.env).forEach(function (envVar) {
- if (prefix === '' || envVar.lastIndexOf(prefix, 0) === 0) {
- // get array of nested keys and convert them to camel case
- var keys = envVar.split('__').map(function (key, i) {
- if (i === 0) {
- key = key.substring(prefix.length)
- }
- return camelCase(key)
- })
-
- if (((configOnly && flags.configs[keys.join('.')]) || !configOnly) && !hasKey(argv, keys)) {
- setArg(keys.join('.'), process.env[envVar])
- }
- }
- })
- }
-
- function applyCoercions (argv) {
- var coerce
- var applied = {}
- Object.keys(argv).forEach(function (key) {
- if (!applied.hasOwnProperty(key)) { // If we haven't already coerced this option via one of its aliases
- coerce = checkAllAliases(key, flags.coercions)
- if (typeof coerce === 'function') {
- try {
- var value = maybeCoerceNumber(key, coerce(argv[key]))
- ;([].concat(flags.aliases[key] || [], key)).forEach(ali => {
- applied[ali] = argv[ali] = value
- })
- } catch (err) {
- error = err
- }
- }
- }
- })
- }
-
- function setPlaceholderKeys (argv) {
- flags.keys.forEach((key) => {
- // don't set placeholder keys for dot notation options 'foo.bar'.
- if (~key.indexOf('.')) return
- if (typeof argv[key] === 'undefined') argv[key] = undefined
- })
- return argv
- }
-
- function applyDefaultsAndAliases (obj, aliases, defaults, canLog = false) {
- Object.keys(defaults).forEach(function (key) {
- if (!hasKey(obj, key.split('.'))) {
- setKey(obj, key.split('.'), defaults[key])
- if (canLog) defaulted[key] = true
-
- ;(aliases[key] || []).forEach(function (x) {
- if (hasKey(obj, x.split('.'))) return
- setKey(obj, x.split('.'), defaults[key])
- })
- }
- })
- }
-
- function hasKey (obj, keys) {
- var o = obj
-
- if (!configuration['dot-notation']) keys = [keys.join('.')]
-
- keys.slice(0, -1).forEach(function (key) {
- o = (o[key] || {})
- })
-
- var key = keys[keys.length - 1]
-
- if (typeof o !== 'object') return false
- else return key in o
- }
-
- function setKey (obj, keys, value) {
- var o = obj
-
- if (!configuration['dot-notation']) keys = [keys.join('.')]
-
- keys.slice(0, -1).forEach(function (key, index) {
- if (typeof o === 'object' && o[key] === undefined) {
- o[key] = {}
- }
-
- if (typeof o[key] !== 'object' || Array.isArray(o[key])) {
- // ensure that o[key] is an array, and that the last item is an empty object.
- if (Array.isArray(o[key])) {
- o[key].push({})
- } else {
- o[key] = [o[key], {}]
- }
-
- // we want to update the empty object at the end of the o[key] array, so set o to that object
- o = o[key][o[key].length - 1]
- } else {
- o = o[key]
- }
- })
-
- var key = keys[keys.length - 1]
-
- var isTypeArray = checkAllAliases(keys.join('.'), flags.arrays)
- var isValueArray = Array.isArray(value)
- var duplicate = configuration['duplicate-arguments-array']
-
- // nargs has higher priority than duplicate
- if (!duplicate && checkAllAliases(key, flags.nargs)) {
- duplicate = true
- if ((!isUndefined(o[key]) && flags.nargs[key] === 1) || (Array.isArray(o[key]) && o[key].length === flags.nargs[key])) {
- o[key] = undefined
- }
- }
-
- if (value === increment) {
- o[key] = increment(o[key])
- } else if (Array.isArray(o[key])) {
- if (duplicate && isTypeArray && isValueArray) {
- o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value])
- } else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) {
- o[key] = value
- } else {
- o[key] = o[key].concat([value])
- }
- } else if (o[key] === undefined && isTypeArray) {
- o[key] = isValueArray ? value : [value]
- } else if (duplicate && !(o[key] === undefined || checkAllAliases(key, flags.counts))) {
- o[key] = [ o[key], value ]
- } else {
- o[key] = value
- }
- }
-
- // extend the aliases list with inferred aliases.
- function extendAliases (...args) {
- args.forEach(function (obj) {
- Object.keys(obj || {}).forEach(function (key) {
- // short-circuit if we've already added a key
- // to the aliases array, for example it might
- // exist in both 'opts.default' and 'opts.key'.
- if (flags.aliases[key]) return
-
- flags.aliases[key] = [].concat(aliases[key] || [])
- // For "--option-name", also set argv.optionName
- flags.aliases[key].concat(key).forEach(function (x) {
- if (/-/.test(x) && configuration['camel-case-expansion']) {
- var c = camelCase(x)
- if (c !== key && flags.aliases[key].indexOf(c) === -1) {
- flags.aliases[key].push(c)
- newAliases[c] = true
- }
- }
- })
- // For "--optionName", also set argv['option-name']
- flags.aliases[key].concat(key).forEach(function (x) {
- if (x.length > 1 && /[A-Z]/.test(x) && configuration['camel-case-expansion']) {
- var c = decamelize(x, '-')
- if (c !== key && flags.aliases[key].indexOf(c) === -1) {
- flags.aliases[key].push(c)
- newAliases[c] = true
- }
- }
- })
- flags.aliases[key].forEach(function (x) {
- flags.aliases[x] = [key].concat(flags.aliases[key].filter(function (y) {
- return x !== y
- }))
- })
- })
- })
- }
-
- // return the 1st set flag for any of a key's aliases (or false if no flag set)
- function checkAllAliases (key, flag) {
- var toCheck = [].concat(flags.aliases[key] || [], key)
- let setAlias = toCheck.find(key => flag.hasOwnProperty(key))
- return setAlias ? flag[setAlias] : false
- }
-
- function hasAnyFlag (key) {
- // XXX Switch to [].concat(...Object.values(flags)) once node.js 6 is dropped
- var toCheck = [].concat(...Object.keys(flags).map(k => flags[k]))
-
- return toCheck.some(function (flag) {
- return flag[key]
- })
- }
-
- function hasFlagsMatching (arg, ...patterns) {
- var toCheck = [].concat(...patterns)
- return toCheck.some(function (pattern) {
- var match = arg.match(pattern)
- return match && hasAnyFlag(match[1])
- })
- }
-
- // based on a simplified version of the short flag group parsing logic
- function hasAllShortFlags (arg) {
- // if this is a negative number, or doesn't start with a single hyphen, it's not a short flag group
- if (arg.match(negative) || !arg.match(/^-[^-]+/)) { return false }
- var hasAllFlags = true
- var letters = arg.slice(1).split('')
- var next
- for (var j = 0; j < letters.length; j++) {
- next = arg.slice(j + 2)
-
- if (!hasAnyFlag(letters[j])) {
- hasAllFlags = false
- break
- }
-
- if ((letters[j + 1] && letters[j + 1] === '=') ||
- next === '-' ||
- (/[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) ||
- (letters[j + 1] && letters[j + 1].match(/\W/))) {
- break
- }
- }
- return hasAllFlags
- }
-
- function isUnknownOptionAsArg (arg) {
- return configuration['unknown-options-as-args'] && isUnknownOption(arg)
- }
-
- function isUnknownOption (arg) {
- // ignore negative numbers
- if (arg.match(negative)) { return false }
- // if this is a short option group and all of them are configured, it isn't unknown
- if (hasAllShortFlags(arg)) { return false }
- // e.g. '--count=2'
- const flagWithEquals = /^-+([^=]+?)=[\s\S]*$/
- // e.g. '-a' or '--arg'
- const normalFlag = /^-+([^=]+?)$/
- // e.g. '-a-'
- const flagEndingInHyphen = /^-+([^=]+?)-$/
- // e.g. '-abc123'
- const flagEndingInDigits = /^-+([^=]+?)\d+$/
- // e.g. '-a/usr/local'
- const flagEndingInNonWordCharacters = /^-+([^=]+?)\W+.*$/
- // check the different types of flag styles, including negatedBoolean, a pattern defined near the start of the parse method
- return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters)
- }
-
- // make a best effor to pick a default value
- // for an option based on name and type.
- function defaultValue (key) {
- if (!checkAllAliases(key, flags.bools) &&
- !checkAllAliases(key, flags.counts) &&
- `${key}` in defaults) {
- return defaults[key]
- } else {
- return defaultForType(guessType(key))
- }
- }
-
- // return a default value, given the type of a flag.,
- // e.g., key of type 'string' will default to '', rather than 'true'.
- function defaultForType (type) {
- var def = {
- boolean: true,
- string: '',
- number: undefined,
- array: []
- }
-
- return def[type]
- }
-
- // given a flag, enforce a default type.
- function guessType (key) {
- var type = 'boolean'
-
- if (checkAllAliases(key, flags.strings)) type = 'string'
- else if (checkAllAliases(key, flags.numbers)) type = 'number'
- else if (checkAllAliases(key, flags.bools)) type = 'boolean'
- else if (checkAllAliases(key, flags.arrays)) type = 'array'
-
- return type
- }
-
- function isNumber (x) {
- if (x === null || x === undefined) return false
- // if loaded from config, may already be a number.
- if (typeof x === 'number') return true
- // hexadecimal.
- if (/^0x[0-9a-f]+$/i.test(x)) return true
- // don't treat 0123 as a number; as it drops the leading '0'.
- if (x.length > 1 && x[0] === '0') return false
- return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x)
- }
-
- function isUndefined (num) {
- return num === undefined
- }
-
- // check user configuration settings for inconsistencies
- function checkConfiguration () {
- // count keys should not be set as array/narg
- Object.keys(flags.counts).find(key => {
- if (checkAllAliases(key, flags.arrays)) {
- error = Error(__('Invalid configuration: %s, opts.count excludes opts.array.', key))
- return true
- } else if (checkAllAliases(key, flags.nargs)) {
- error = Error(__('Invalid configuration: %s, opts.count excludes opts.narg.', key))
- return true
- }
- })
- }
-
- return {
- argv: argv,
- error: error,
- aliases: flags.aliases,
- newAliases: newAliases,
- defaulted: defaulted,
- configuration: configuration
- }
-}
-
-// if any aliases reference each other, we should
-// merge them together.
-function combineAliases (aliases) {
- var aliasArrays = []
- var change = true
- var combined = {}
-
- // turn alias lookup hash {key: ['alias1', 'alias2']} into
- // a simple array ['key', 'alias1', 'alias2']
- Object.keys(aliases).forEach(function (key) {
- aliasArrays.push(
- [].concat(aliases[key], key)
- )
- })
-
- // combine arrays until zero changes are
- // made in an iteration.
- while (change) {
- change = false
- for (var i = 0; i < aliasArrays.length; i++) {
- for (var ii = i + 1; ii < aliasArrays.length; ii++) {
- var intersect = aliasArrays[i].filter(function (v) {
- return aliasArrays[ii].indexOf(v) !== -1
- })
-
- if (intersect.length) {
- aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii])
- aliasArrays.splice(ii, 1)
- change = true
- break
- }
- }
- }
- }
-
- // map arrays back to the hash-lookup (de-dupe while
- // we're at it).
- aliasArrays.forEach(function (aliasArray) {
- aliasArray = aliasArray.filter(function (v, i, self) {
- return self.indexOf(v) === i
- })
- combined[aliasArray.pop()] = aliasArray
- })
-
- return combined
-}
-
-// this function should only be called when a count is given as an arg
-// it is NOT called to set a default value
-// thus we can start the count at 1 instead of 0
-function increment (orig) {
- return orig !== undefined ? orig + 1 : 1
-}
-
-function Parser (args, opts) {
- var result = parse(args.slice(), opts)
-
- return result.argv
-}
-
-// parse arguments and return detailed
-// meta information, aliases, etc.
-Parser.detailed = function (args, opts) {
- return parse(args.slice(), opts)
-}
-
-module.exports = Parser
diff --git a/assets/node_modules/yargs-parser/lib/tokenize-arg-string.js b/assets/node_modules/yargs-parser/lib/tokenize-arg-string.js
deleted file mode 100644
index fe05e27..0000000
--- a/assets/node_modules/yargs-parser/lib/tokenize-arg-string.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// take an un-split argv string and tokenize it.
-module.exports = function (argString) {
- if (Array.isArray(argString)) {
- return argString.map(e => typeof e !== 'string' ? e + '' : e)
- }
-
- argString = argString.trim()
-
- var i = 0
- var prevC = null
- var c = null
- var opening = null
- var args = []
-
- for (var ii = 0; ii < argString.length; ii++) {
- prevC = c
- c = argString.charAt(ii)
-
- // split on spaces unless we're in quotes.
- if (c === ' ' && !opening) {
- if (!(prevC === ' ')) {
- i++
- }
- continue
- }
-
- // don't split the string if we're in matching
- // opening or closing single and double quotes.
- if (c === opening) {
- opening = null
- } else if ((c === "'" || c === '"') && !opening) {
- opening = c
- }
-
- if (!args[i]) args[i] = ''
- args[i] += c
- }
-
- return args
-}
diff --git a/assets/node_modules/yargs-parser/package.json b/assets/node_modules/yargs-parser/package.json
deleted file mode 100644
index 93d834d..0000000
--- a/assets/node_modules/yargs-parser/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "name": "yargs-parser",
- "version": "16.1.0",
- "description": "the mighty option parser used by yargs",
- "main": "index.js",
- "scripts": {
- "test": "c8 --reporter=text --reporter=html mocha test/*.js",
- "posttest": "standard",
- "coverage": "c8 report --reporter=text-lcov | coveralls",
- "release": "standard-version"
- },
- "repository": {
- "url": "git@github.com:yargs/yargs-parser.git"
- },
- "keywords": [
- "argument",
- "parser",
- "yargs",
- "command",
- "cli",
- "parsing",
- "option",
- "args",
- "argument"
- ],
- "author": "Ben Coe <ben@npmjs.com>",
- "license": "ISC",
- "devDependencies": {
- "c8": "^6.0.0",
- "chai": "^4.2.0",
- "coveralls": "^3.0.2",
- "mocha": "^5.2.0",
- "standard": "^12.0.1",
- "standard-version": "^6.0.0"
- },
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- },
- "files": [
- "lib",
- "index.js"
- ],
- "engine": {
- "node": ">=6"
- }
-}